diff --git a/projectors/hazel.js b/projectors/hazel.js index 6ca6b44f..3b5620a1 100644 --- a/projectors/hazel.js +++ b/projectors/hazel.js @@ -436448,163 +436448,134 @@ c=K(0,0,a)[4];/*<>*/return/*<>*/function -d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}/*<>*/function -c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):v.caml_call_gen(a,[b,c])}/*<>*/function -f(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):v.caml_call_gen(a,[b,c,d])}/*<>*/function -a6(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):v.caml_call_gen(a,[b,c,d,e,f,g])}var -c9=undefined,q=v.caml_get_global_data(),Q=bn,R=bn,Y=bt,p=bs,t=bs,y=br,M=br,U=bo,V=bo,_=bq,e=q.Stdlib__Format,X=q.Haz3lcore__Info,l=q.Ppx_yojson_conv_lib__Yojson_conv,i=q.Ppx_yojson_conv_lib,b=q.Ppx_yojson_conv_lib__Yojson_conv_error,o=q.Sexplib__Std,aK=q.Sexplib0__Sexp_conv_record,T=q.Util__Direction,h=q.Sexplib0__Sexp_conv_error,S=q.Haz3lcore__Measured,u=q.Haz3lcore__Id,W=q.Haz3lcore__Piece,cQ=be,cR=bf,cS=a$,cJ=be,cK=bf,cL=a$,cC=[0,[18,[1,[0,[11,j,0],j]],[11,bc,0]],bl],cD=G,cE=[0,[18,[1,[0,0,ab]],[2,0,[11,ac,[17,[0,n,1,0],0]]]],ad],cF=[0,[17,0,0],aa],cG=[0,[12,59,[17,[0,n,1,0],0]],ba],cH=H,cI=[0,[18,[1,[0,0,ab]],[2,0,[11,ac,[17,[0,n,1,0],0]]]],ad],cM=[0,[17,0,0],aa],cN=[0,[12,59,[17,[0,n,1,0],0]],ba],cO=I,cP=[0,[18,[1,[0,0,ab]],[2,0,[11,ac,[17,[0,n,1,0],0]]]],ad],cT=[0,[17,0,0],aa],cU=[0,[17,[0,n,1,0],[12,bd,[17,0,0]]],bj],cV=[0,[15,0],s],c6=I,c7=H,c8=G,c3=I,c4=H,c5=G,c0=[0,I],c1=[0,H],c2=[0,G],cX=I,cY=H,cZ=G,cA=[0,[15,0],s],cv=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,L,[17,[0,n,1,0],0]]]],"(@[<2>Indicated@ "],cw=[0,[17,0,[12,41,0]],w],cx=[0,[15,0],s],cz=[0,m,L],cy=[0,L],cl=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,J,[17,[0,n,1,0],0]]]],"(@[<2>Inline@ "],cm=[0,[4,0,0,0,0],"%d"],cn=[0,[17,0,[12,41,0]],w],co=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,z,[17,[0,n,1,0],0]]]],"(@[<2>Block@ "],cp=[0,[17,0,[12,41,0]],w],cq=[0,[15,0],s],ct=[0,m,J],cu=[0,m,z],cr=[0,J],cs=[0,z],cj=[0,[15,0],s],bW=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,B,[17,[0,n,1,0],0]]]],"(@[<2>Fold@ "],bX=[0,[17,0,[12,41,0]],w],bY=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,C,[17,[0,n,1,0],0]]]],"(@[<2>Info@ "],bZ=[0,[17,0,[12,41,0]],w],b0=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,K,[17,[0,n,1,0],0]]]],"(@[<2>Checkbox@ "],b1=[0,[17,0,[12,41,0]],w],b2=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,A,[17,[0,n,1,0],0]]]],"(@[<2>Slider@ "],b3=[0,[17,0,[12,41,0]],w],b4=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,D,[17,[0,n,1,0],0]]]],"(@[<2>SliderF@ "],b5=[0,[17,0,[12,41,0]],w],b6=[0,[12,40,[18,[1,[0,[11,j,0],j]],[11,E,[17,[0,n,1,0],0]]]],"(@[<2>TextArea@ "],b7=[0,[17,0,[12,41,0]],w],b8=[0,[15,0],s],cd=[0,m,B],ce=[0,m,C],cf=[0,m,K],cg=[0,m,A],ch=[0,m,D],ci=[0,m,E],b9=[0,B],b_=[0,C],b$=[0,K],ca=[0,A],cb=[0,D],cc=[0,E],bK=[0,[18,[1,[0,[11,j,0],j]],[11,bc,0]],bl],bL=F,bM=[0,[18,[1,[0,0,ab]],[2,0,[11,ac,[17,[0,n,1,0],0]]]],ad],bN=[0,[9,0,0],"%B"],bO=[0,[17,0,0],aa],bP=[0,[17,[0,n,1,0],[12,bd,[17,0,0]]],bj],bQ=[0,[15,0],s],bV=F,bU=F,bT=[0,F],bS=F,bI=$,bJ=[0,[15,0],s],bG=$,bH=[0,[15,0],s],bE=$,bF=[0,[15,0],s],bx=P,by=O,bz=[0,[15,0],s],bC=[0,k,[0,[0,m,P],0]],bD=[0,k,[0,[0,m,O],0]],bA=[0,P],bB=[0,O],bv=$,bw=[0,[15,0],s],bR=bt,cB="Haz3lcore.ProjectorBase.SetInside",cW=bq;/*<>*/function -af(a,b){/*<>*/return/*<>*/c(e[13],a,bv)/*<>*/}var -ap=o[4],aq=o[3],ar=l[45][17],as=l[45][1];/*<>*/function -ag(a,b){/*<>*/return b?/*<>*/c(e[13],a,bx):/*<>*/c(e[13],a,by)/*<>*/}/*<>*/function -at(a){/*<>*/a:{if(0===a[0]){var -b=a[1];b:if(b!==O){if(b!==P){if(b===bi)break b;if(b!==bb)break a}/*<>*/return 1}/*<>*/return 0}var -e=a[1];if(!e)/*<>*/return/*<>*/c(h[7],Q,a);var -f=e[1];if(0!==f[0])/*<>*/return/*<>*/c(h[6],Q,a);var -d=f[1];b:if(d!==O){if(d!==P){if(d===bi)break b;if(d!==bb)break a}/*<>*/return/*<>*/c(h[3],Q,a)}/*<>*/return/*<>*/c(h[3],Q,a)}/*<>*/return/*<>*/c(h[8],Q,a)/*<>*/}function -au(a){/*<>*/return a?bA:bB/*<>*/}/*<>*/function -av(a){/*<>*/if(typeof -a!=="number"&&k===a[1]){var -d=a[2];if(!d)/*<>*/return/*<>*/c(b[7],R,a);var -e=d[1];if(typeof +a0="textArea",E="Indicated",a_="checkbox",M="Checkbox",aZ=")",D="Inline",p="<2>",m="@ ",K="SliderF",aX=125,aY="(Some ",a8="src/haz3lcore/zipper/ProjectorBase.re.info",a9="src/haz3lcore/zipper/ProjectorBase.re.shape",V=" =",J="Info",an="@])",t="%a",C="ci",aW="{ ",I="Fold",aV="src/haz3lcore/zipper/ProjectorBase.re.kind",a7="sliderF",H="Slider",B="status",A="syntax",y="kind",x="Block",a6="src/haz3lcore/zipper/ProjectorBase.re.status",U="",_=963043957,a5="slider",am=";@ ",a3="fold",a4="@[<2>{ ",aU="None",L="TextArea",T="@]",aT="src/haz3lcore/zipper/ProjectorBase.re.entry",z="model",a2="@ }@]",W="@[%s =@ ",aS="inline",a1="indicated",aR=174,s=143,h=139,j=848054398,l=-976970511,aP="block",aQ="info",o=a.jsoo_runtime,aN=o.caml_string_compare,v=o.caml_update_dummy;/*<>*/function +d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function +c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):o.caml_call_gen(a,[b,c])}/*<>*/function +g(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):o.caml_call_gen(a,[b,c,d])}/*<>*/function +cE(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):o.caml_call_gen(a,[b,c,d,e])}/*<>*/function +aO(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):o.caml_call_gen(a,[b,c,d,e,f,g])}var +cF=undefined,k=o.caml_get_global_data(),q=aV,r=aV,X=aT,w=a9,G=a9,P=a6,Q=a6,Z=a8,e=k.Stdlib__Format,S=k.Haz3lcore__Info,u=k.Ppx_yojson_conv_lib__Yojson_conv,b=k.Ppx_yojson_conv_lib,f=k.Ppx_yojson_conv_lib__Yojson_conv_error,F=k.Sexplib__Std,av=k.Sexplib0__Sexp_conv_record,O=k.Util__Direction,i=k.Sexplib0__Sexp_conv_error,N=k.Haz3lcore__Measured,n=k.Haz3lcore__Id,ab=k.Sexplib__Sexp,R=k.Haz3lcore__Piece,cl=aY,cm=aZ,cn=aU,ce=aY,cf=aZ,cg=aU,b9=[0,[18,[1,[0,[11,p,0],p]],[11,aW,0]],a4],b_=A,b$=[0,[18,[1,[0,0,U]],[2,0,[11,V,[17,[0,m,1,0],0]]]],W],ca=[0,[17,0,0],T],cb=[0,[12,59,[17,[0,m,1,0],0]],am],cc=B,cd=[0,[18,[1,[0,0,U]],[2,0,[11,V,[17,[0,m,1,0],0]]]],W],ch=[0,[17,0,0],T],ci=[0,[12,59,[17,[0,m,1,0],0]],am],cj=C,ck=[0,[18,[1,[0,0,U]],[2,0,[11,V,[17,[0,m,1,0],0]]]],W],co=[0,[17,0,0],T],cp=[0,[17,[0,m,1,0],[12,aX,[17,0,0]]],a2],cq=[0,[15,0],t],cB=C,cC=B,cD=A,cy=C,cz=B,cA=A,cv=[0,C],cw=[0,B],cx=[0,A],cs=C,ct=B,cu=A,b7=[0,[15,0],t],b2=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,E,[17,[0,m,1,0],0]]]],"(@[<2>Indicated@ "],b3=[0,[17,0,[12,41,0]],an],b4=[0,[15,0],t],b6=[0,l,E],b5=[0,E],bS=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,D,[17,[0,m,1,0],0]]]],"(@[<2>Inline@ "],bT=[0,[4,0,0,0,0],"%d"],bU=[0,[17,0,[12,41,0]],an],bV=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,x,[17,[0,m,1,0],0]]]],"(@[<2>Block@ "],bW=[0,[17,0,[12,41,0]],an],bX=[0,[15,0],t],b0=[0,l,D],b1=[0,l,x],bY=[0,D],bZ=[0,x],bQ=[0,[15,0],t],bx=[0,[18,[1,[0,[11,p,0],p]],[11,aW,0]],a4],by=y,bz=[0,[18,[1,[0,0,U]],[2,0,[11,V,[17,[0,m,1,0],0]]]],W],bA=[0,[17,0,0],T],bB=[0,[12,59,[17,[0,m,1,0],0]],am],bC=z,bD=[0,[18,[1,[0,0,U]],[2,0,[11,V,[17,[0,m,1,0],0]]]],W],bE=[0,[17,0,0],T],bF=[0,[17,[0,m,1,0],[12,aX,[17,0,0]]],a2],bG=[0,[15,0],t],bO=z,bP=y,bM=z,bN=y,bK=[0,z],bL=[0,y],bI=z,bJ=y,bw=[0,[15,0],t],bu="TODOTODOTODO",bt=[0,"TODO(andrew): proper serialization"],bs=[0,[15,0],t],a$=I,ba=J,bb=M,bc=H,bd=K,be=L,bf=[0,[15,0],t],bm=[0,j,[0,[0,l,I],0]],bn=[0,j,[0,[0,l,J],0]],bo=[0,j,[0,[0,l,M],0]],bp=[0,j,[0,[0,l,H],0]],bq=[0,j,[0,[0,l,K],0]],br=[0,j,[0,[0,l,L],0]],bg=[0,I],bh=[0,J],bi=[0,M],bj=[0,H],bk=[0,K],bl=[0,L],bH=aT,b8="Haz3lcore.ProjectorBase.SetInside",cr=a8,bv=k.Yojson__Safe;/*<>*/function +$(a,b){/*<>*/switch(b){case +0:/*<>*/return/*<>*/c(e[13],a,a$);case +1:/*<>*/return/*<>*/c(e[13],a,ba);case +2:/*<>*/return/*<>*/c(e[13],a,bb);case +3:/*<>*/return/*<>*/c(e[13],a,bc);case +4:/*<>*/return/*<>*/c(e[13],a,bd);default:/*<>*/return/*<>*/c(e[13],a,be)}/*<>*/}/*<>*/function +ao(a){/*<>*/a:{if(0===a[0]){var +b=a[1],e=aN(b,a_);b:{c:{d:{e:{f:{if(0<=e){if(0>*/return 2}/*<>*/return 0}/*<>*/return 1}/*<>*/return 3}/*<>*/return 4}/*<>*/return 5}var +f=a[1];if(!f)/*<>*/return/*<>*/c(i[7],q,a);var +g=f[1];if(0!==g[0])/*<>*/return/*<>*/c(i[6],q,a);var +d=g[1],h=aN(d,a_);b:{c:{d:{e:{f:{if(0<=h){if(0>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[8],q,a)/*<>*/}function +ap(a){/*<>*/switch(a){case +0:/*<>*/return bg;case +1:/*<>*/return bh;case +2:/*<>*/return bi;case +3:/*<>*/return bj;case +4:/*<>*/return bk;default:/*<>*/return bl}/*<>*/}/*<>*/function +aq(a){/*<>*/if(typeof +a!=="number"&&j===a[1]){var +b=a[2];if(!b)/*<>*/return/*<>*/c(f[7],r,a);var +e=b[1];if(typeof e!=="number"){var -f=e[1];if(m===f){var -g=e[2];if(g===O)return d[2]?/*<>*/c(b[3],R,a):0;if(g===P)return d[2]?/*<>*/c(b[3],R,a):1}else if(k===f)/*<>*/return/*<>*/c(b[6],R,a)}}/*<>*/return/*<>*/c(b[8],R,a)/*<>*/}function -aw(a){/*<>*/return a?bC:bD/*<>*/}/*<>*/function -ah(a,b){/*<>*/return/*<>*/c(e[13],a,bE)/*<>*/}var -ax=o[4],ay=o[3],az=l[45][17],aA=l[45][1];/*<>*/function -ai(a,b){/*<>*/return/*<>*/c(e[13],a,bG)/*<>*/}var -aB=o[4],aC=o[3],aD=l[45][17],aE=l[45][1];/*<>*/function -aj(a,b){/*<>*/return/*<>*/c(e[13],a,bI)/*<>*/}var -aF=o[4],aG=o[3],aH=l[45][17],aI=l[45][1];/*<>*/function -ak(a,b){/*<>*/ /*<>*/c(e[g],a,bK);/*<>*/ /*<>*/f(e[g],a,bM,bL);var -h=b[1];/*<>*/ /*<>*/d(/*<>*/c(e[g],a,bN),h);/*<>*/ /*<>*/c(e[g],a,bO);/*<>*/return/*<>*/c(e[g],a,bP)/*<>*/}/*<>*/function -aJ(a){/*<>*/return/*<>*/a6(aK[3],bR,[0,bS,1,o[7],0],function(a){/*<>*/return a!==F?-1:0/*<>*/},0,function(a){/*<>*/return[0,a[1]]/*<>*/},a)/*<>*/}function -aL(a){/*<>*/return[1,[0,[1,[0,bT,[0,/*<>*/d(o[6],a[1]),0]]],0]]/*<>*/}/*<>*/function -aM(a){/*<>*/if(typeof -a!=="number"&&ae===a[1]){/*<>*/var/*<>*/e=[0,0],/*<>*/g=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var -b=a;/*<>*/for(;;){if(!b)/*<>*/return;var -f=b[1],c=f[1],j=b[2],k=f[2];if(c!==F){/*<>*/if(/*<>*/d(i[2],l[22]))h[1]=[0,c,/*<>*/d(i[2],h)]}else if(/*<>*/d(i[2],e))g[1]=[0,c,/*<>*/d(i[2],g)];else -e[1]=[0,/*<>*/d(l[45][18],k)];b=j}/*<>*/}(a[2]));if(/*<>*/d(i[2],g)){/*<>*/ /*<>*/var -k=/*<>*/d(i[2],g);/*<>*/return/*<>*/f(b[10],Y,k,a)}if(/*<>*/d(i[2],h)){/*<>*/ /*<>*/var -m=/*<>*/d(i[2],h);/*<>*/return/*<>*/f(b[11],Y,m,a)}/*<>*/ /*<>*/var -j=/*<>*/d(i[2],e);if(j)/*<>*/return[0,j[1]];/*<>*/ /*<>*/var -n=[0,[0,0===/*<>*/d(i[2],e)?1:0,bU],0];/*<>*/return/*<>*/f(b[13],Y,a,n)}/*<>*/return/*<>*/c(b[14],Y,a)/*<>*/}function -aN(a){/*<>*/return[0,ae,[0,[0,bV,d(l[45][2],a[1])],0]]/*<>*/}var -x=[];function -al(a,b){/*<>*/switch(b[0]){case -0:var -f=b[1];/*<>*/ /*<>*/c(e[g],a,bW);d(d(x[6],a),f);return c(e[g],a,bX);case -1:var -h=b[1];/*<>*/ /*<>*/c(e[g],a,bY);d(d(x[5],a),h);return c(e[g],a,bZ);case -2:var -i=b[1];/*<>*/ /*<>*/c(e[g],a,b0);d(d(x[4],a),i);return c(e[g],a,b1);case -3:var -j=b[1];/*<>*/ /*<>*/c(e[g],a,b2);d(d(x[3],a),j);return c(e[g],a,b3);case -4:var -k=b[1];/*<>*/ /*<>*/c(e[g],a,b4);d(d(x[2],a),k);return c(e[g],a,b5);default:var -l=b[1];/*<>*/ /*<>*/c(e[g],a,b6);d(d(x[1],a),l);return c(e[g],a,b7)}/*<>*/}N(x,[0,ak,aj,ai,ah,ag,af]);function -aO(a){/*<>*/a:{if(0===a[0]){var -e=a[1],o=a7(e,bu);b:{c:{d:{e:{f:{if(0<=o){if(0>*/return/*<>*/c(h[5],p,a)}/*<>*/return/*<>*/c(h[5],p,a)}/*<>*/return/*<>*/c(h[5],p,a)}/*<>*/return/*<>*/c(h[5],p,a)}/*<>*/return/*<>*/c(h[5],p,a)}/*<>*/return/*<>*/c(h[5],p,a)}var -g=a[1];if(!g)/*<>*/return/*<>*/c(h[7],p,a);var -q=g[1];if(0!==q[0])/*<>*/return/*<>*/c(h[6],p,a);var -b=q[1],r=a7(b,bu);b:{c:{d:{e:{f:{if(0<=r){if(0>*/return[2,/*<>*/d(ax,n[1])];/*<>*/return/*<>*/f(h[4],p,b,a)}var -m=g[2];if(m&&!m[2])/*<>*/return[0,/*<>*/d(ap,m[1])];/*<>*/return/*<>*/f(h[4],p,b,a)}var -l=g[2];if(l&&!l[2])/*<>*/return[1,at(l[1])];/*<>*/return/*<>*/f(h[4],p,b,a)}var -k=g[2];if(k&&!k[2])/*<>*/return[3,/*<>*/d(aB,k[1])];/*<>*/return/*<>*/f(h[4],p,b,a)}var -j=g[2];if(j&&!j[2])/*<>*/return[4,/*<>*/d(aF,j[1])];/*<>*/return/*<>*/f(h[4],p,b,a)}var -i=g[2];if(i&&!i[2])/*<>*/return[5,aJ(i[1])];/*<>*/return/*<>*/f(h[4],p,b,a)}/*<>*/return/*<>*/c(h[8],p,a)/*<>*/}function -aP(a){/*<>*/switch(a[0]){case -0:/*<>*/return[1,[0,b9,[0,/*<>*/d(aq,a[1]),0]]];case -1:/*<>*/return[1,[0,b_,[0,au(a[1]),0]]];case -2:/*<>*/return[1,[0,b$,[0,/*<>*/d(ay,a[1]),0]]];case -3:/*<>*/return[1,[0,ca,[0,/*<>*/d(aC,a[1]),0]]];case -4:/*<>*/return[1,[0,cb,[0,/*<>*/d(aG,a[1]),0]]];default:/*<>*/return[1,[0,cc,[0,aL(a[1]),0]]]}/*<>*/}function -aQ(a){/*<>*/if(typeof -a!=="number"){var -r=a[1];if(m===r){var -h=a[2];if(h===K||h===B||h===C||h===A||h===D||h===E)/*<>*/return/*<>*/c(b[5],t,a)}else if(k===r){var -g=a[2];if(!g)/*<>*/return/*<>*/c(b[7],t,a);var -i=g[1];if(typeof -i!=="number"){var -s=i[1];if(m===s){var -e=i[2];if(e===K){var -q=g[2];if(q&&!q[2])/*<>*/return[2,/*<>*/d(az,q[1])];/*<>*/return/*<>*/f(b[4],t,e,a)}if(e===B){var -p=g[2];if(p&&!p[2])/*<>*/return[0,/*<>*/d(ar,p[1])];/*<>*/return/*<>*/f(b[4],t,e,a)}if(e===C){var -o=g[2];if(o&&!o[2])/*<>*/return[1,av(o[1])];/*<>*/return/*<>*/f(b[4],t,e,a)}if(e===A){var -n=g[2];if(n&&!n[2])/*<>*/return[3,/*<>*/d(aD,n[1])];/*<>*/return/*<>*/f(b[4],t,e,a)}if(e===D){var -l=g[2];if(l&&!l[2])/*<>*/return[4,/*<>*/d(aH,l[1])];/*<>*/return/*<>*/f(b[4],t,e,a)}if(e===E){var -j=g[2];if(j&&!j[2])/*<>*/return[5,aM(j[1])];/*<>*/return/*<>*/f(b[4],t,e,a)}}else if(k===s)/*<>*/return/*<>*/c(b[6],t,a)}}}/*<>*/return/*<>*/c(b[8],t,a)/*<>*/}function -aR(a){/*<>*/switch(a[0]){case -0:/*<>*/return[0,k,[0,cd,[0,/*<>*/d(as,a[1]),0]]];case -1:/*<>*/return[0,k,[0,ce,[0,aw(a[1]),0]]];case -2:/*<>*/return[0,k,[0,cf,[0,/*<>*/d(aA,a[1]),0]]];case -3:/*<>*/return[0,k,[0,cg,[0,/*<>*/d(aE,a[1]),0]]];case -4:/*<>*/return[0,k,[0,ch,[0,/*<>*/d(aI,a[1]),0]]];default:/*<>*/return[0,k,[0,ci,[0,aN(a[1]),0]]]}/*<>*/}var -am=[];function -aS(a){/*<>*/return c(am[1],function(a){/*<>*/return d(am[2],a)},a)}N(am,[0,u[15][48],al]);var -aT=[];function -aU(a,b){/*<>*/if(0===b[0]){var -f=b[1];/*<>*/ /*<>*/c(e[g],a,cl);d(/*<>*/c(e[g],a,cm),f);return c(e[g],a,cn)}var -h=b[1];/*<>*/ /*<>*/c(e[g],a,co);d(d(aT[1],a),h);return c(e[g],a,cp)/*<>*/}/*<>*/ /*<>*/var -ck=[0,aS,function(a){/*<>*/return/*<>*/f(e[r],cj,aS,a)/*<>*/},function(a){/*<>*/return/*<>*/c(u[15][45],aO,a)/*<>*/},function(a){/*<>*/return/*<>*/c(u[15][44],aP,a)/*<>*/},function(a){/*<>*/return c(u[15][47],aQ,a)},function(a){/*<>*/return c(u[15][46],aR,a)},u[15][1],u[15][18],u[15][32],u[15][26],u[15][4]];N(aT,[0,S[13][1]]);var -aV=[];function -an(a,b){/*<>*/var -f=b[1];/*<>*/ /*<>*/c(e[g],a,cv);d(d(aV[1],a),f);return c(e[g],a,cw)/*<>*/}N(aV,[0,T[1]]);/*<>*/function -aW(a){/*<>*/a:{if(0===a[0]){var -i=a[1];if(i!==L&&i!==bh)break a;/*<>*/return/*<>*/c(h[5],U,a)}var -b=a[1];if(!b)/*<>*/return/*<>*/c(h[7],U,a);var -j=b[1];if(0!==j[0])/*<>*/return/*<>*/c(h[6],U,a);var -e=j[1];if(e!==L&&e!==bh)break a;var -g=b[2];if(g&&!g[2])/*<>*/return[0,/*<>*/d(T[3],g[1])];/*<>*/return/*<>*/f(h[4],U,e,a)}/*<>*/return/*<>*/c(h[8],U,a)/*<>*/}function -aX(a){/*<>*/return[1,[0,cy,[0,/*<>*/d(T[4],a[1]),0]]]/*<>*/}/*<>*/function -aY(a){/*<>*/if(typeof +g=e[1];if(l===g){var +d=e[2];if(d===M)return b[2]?/*<>*/c(f[3],r,a):2;if(d===I)return b[2]?/*<>*/c(f[3],r,a):0;if(d===J)return b[2]?/*<>*/c(f[3],r,a):1;if(d===H)return b[2]?/*<>*/c(f[3],r,a):3;if(d===K)return b[2]?/*<>*/c(f[3],r,a):4;if(d===L)return b[2]?/*<>*/c(f[3],r,a):5}else if(j===g)/*<>*/return/*<>*/c(f[6],r,a)}}/*<>*/return/*<>*/c(f[8],r,a)/*<>*/}function +ar(a){/*<>*/switch(a){case +0:/*<>*/return bm;case +1:/*<>*/return bn;case +2:/*<>*/return bo;case +3:/*<>*/return bp;case +4:/*<>*/return bq;default:/*<>*/return br}/*<>*/}var +as=[];function +aa(a){/*<>*/return d(as[1],a)}v(as,[0,ab[41]]);var +ac=ab[61],ad=ab[60];function +ae(a){/*<>*/return bt/*<>*/}function +af(a){/*<>*/return/*<>*/cE(bv[39],0,0,0,bu)/*<>*/}var +at=[];function +ag(a){/*<>*/return d(at[1],a)}v(at,[0,aa]);var +ah=[];function +ai(a,b){/*<>*/ /*<>*/c(e[h],a,bx);/*<>*/ /*<>*/g(e[h],a,bz,by);var +f=b[1];/*<>*/ /*<>*/d(d(ah[2],a),f);/*<>*/ /*<>*/c(e[h],a,bA);/*<>*/ /*<>*/c(e[h],a,bB);/*<>*/ /*<>*/g(e[h],a,bD,bC);var +i=b[2];/*<>*/ /*<>*/d(d(ah[1],a),i);/*<>*/ /*<>*/c(e[h],a,bE);/*<>*/return/*<>*/c(e[h],a,bF)/*<>*/}v(ah,[0,ag,$]);function +au(a){/*<>*/return/*<>*/aO(av[3],bH,[0,bJ,1,ao,[0,bI,1,ac,0]],function(a){/*<>*/return a!==y?a!==z?-1:1:0/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/}function +aw(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bK,[0,/*<>*/d(ad,a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bL,[0,ap(b),0]]],c]]/*<>*/}function +ax(a){/*<>*/if(typeof +a!=="number"&&_===a[1]){/*<>*/var/*<>*/h=[0,0],/*<>*/i=[0,0],/*<>*/e=[0,0],/*<>*/j=[0,0];/*<>*/(function(a){/*<>*/var +f=a;/*<>*/for(;;){if(!f)/*<>*/return;var +g=f[1],k=g[2],c=g[1],l=f[2];if(c!==y)if(c!==z){/*<>*/if(/*<>*/d(b[2],u[22]))j[1]=[0,c,/*<>*/d(b[2],j)]}else if(/*<>*/d(b[2],i))e[1]=[0,c,/*<>*/d(b[2],e)];else +i[1]=[0,ae(k)];else if(/*<>*/d(b[2],h))e[1]=[0,c,/*<>*/d(b[2],e)];else +h[1]=[0,aq(k)];f=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var +m=/*<>*/d(b[2],e);/*<>*/return/*<>*/g(f[10],X,m,a)}if(/*<>*/d(b[2],j)){/*<>*/ /*<>*/var +n=/*<>*/d(b[2],j);/*<>*/return/*<>*/g(f[11],X,n,a)}/*<>*/var/*<>*/k=/*<>*/d(b[2],h),/*<>*/l=/*<>*/d(b[2],i);if(k&&l)/*<>*/return[0,k[1],l[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],i)?1:0,bM],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],h)?1:0,bN],o];/*<>*/return/*<>*/g(f[13],X,a,p)}/*<>*/return/*<>*/c(f[14],X,a)/*<>*/}function +ay(a){/*<>*/var +b=a[1],c=[0,[0,bO,af(a[2])],0];/*<>*/return[0,_,[0,[0,bP,ar(b)],c]]/*<>*/}var +aj=[];function +az(a){/*<>*/return c(aj[1],function(a){/*<>*/return d(aj[2],a)},a)}v(aj,[0,n[15][48],ai]);var +aA=[];function +aB(a,b){/*<>*/if(0===b[0]){var +f=b[1];/*<>*/ /*<>*/c(e[h],a,bS);d(/*<>*/c(e[h],a,bT),f);return c(e[h],a,bU)}var +g=b[1];/*<>*/ /*<>*/c(e[h],a,bV);d(d(aA[1],a),g);return c(e[h],a,bW)/*<>*/}/*<>*/ /*<>*/var +bR=[0,az,function(a){/*<>*/return/*<>*/g(e[s],bQ,az,a)/*<>*/},function(a){/*<>*/return/*<>*/c(n[15][45],au,a)/*<>*/},function(a){/*<>*/return/*<>*/c(n[15][44],aw,a)/*<>*/},function(a){/*<>*/return c(n[15][47],ax,a)},function(a){/*<>*/return c(n[15][46],ay,a)},n[15][1],n[15][18],n[15][32],n[15][26],n[15][4]];v(aA,[0,N[13][1]]);var +aC=[];function +ak(a,b){/*<>*/var +f=b[1];/*<>*/ /*<>*/c(e[h],a,b2);d(d(aC[1],a),f);return c(e[h],a,b3)/*<>*/}v(aC,[0,O[1]]);/*<>*/function +aD(a){/*<>*/a:{if(0===a[0]){var +h=a[1];if(h!==E&&h!==a1)break a;/*<>*/return/*<>*/c(i[5],P,a)}var +b=a[1];if(!b)/*<>*/return/*<>*/c(i[7],P,a);var +j=b[1];if(0!==j[0])/*<>*/return/*<>*/c(i[6],P,a);var +e=j[1];if(e!==E&&e!==a1)break a;var +f=b[2];if(f&&!f[2])/*<>*/return[0,/*<>*/d(O[3],f[1])];/*<>*/return/*<>*/g(i[4],P,e,a)}/*<>*/return/*<>*/c(i[8],P,a)/*<>*/}function +aE(a){/*<>*/return[1,[0,b5,[0,/*<>*/d(O[4],a[1]),0]]]/*<>*/}/*<>*/function +aF(a){/*<>*/if(typeof a!=="number"){var -i=a[1];if(m===i){if(a[2]===L)/*<>*/return/*<>*/c(b[5],V,a)}else if(k===i){var -e=a[2];if(!e)/*<>*/return/*<>*/c(b[7],V,a);var -g=e[1];if(typeof -g!=="number"){var -j=g[1];if(m===j){var -l=g[2];if(l===L){var -h=e[2];if(h&&!h[2])/*<>*/return[0,/*<>*/d(T[5],h[1])];/*<>*/return/*<>*/f(b[4],V,l,a)}}else if(k===j)/*<>*/return/*<>*/c(b[6],V,a)}}}/*<>*/return/*<>*/c(b[8],V,a)/*<>*/}function -aZ(a){/*<>*/return[0,k,[0,cz,[0,/*<>*/d(T[6],a[1]),0]]]/*<>*/}var -a0=[];function -ao(a){/*<>*/return d(a0[1],a)}N(a0,[0,W[20]]);var -a1=W[22],a2=W[23],a3=W[24],a4=W[25],Z=[];function -a5(h,b){/*<>*/ /*<>*/c(e[g],h,cC);/*<>*/ /*<>*/f(e[g],h,cE,cD);var -a=b[1];/*<>*/ /*<>*/d(d(Z[3],h),a);/*<>*/ /*<>*/c(e[g],h,cF);/*<>*/ /*<>*/c(e[g],h,cG);/*<>*/ /*<>*/f(e[g],h,cI,cH);/*<>*/(function(a){/*<>*/if(!a)/*<>*/return/*<>*/c(e[13],h,cL);var -b=a[1];/*<>*/ /*<>*/c(e[13],h,cJ);/*<>*/ /*<>*/d(d(Z[2],h),b);/*<>*/return/*<>*/c(e[13],h,cK)/*<>*/}(b[2]));/*<>*/ /*<>*/c(e[g],h,cM);/*<>*/ /*<>*/c(e[g],h,cN);/*<>*/ /*<>*/f(e[g],h,cP,cO);/*<>*/(function(a){/*<>*/if(!a)/*<>*/return/*<>*/c(e[13],h,cS);var -b=a[1];/*<>*/ /*<>*/c(e[13],h,cQ);/*<>*/ /*<>*/d(d(Z[1],h),b);/*<>*/return/*<>*/c(e[13],h,cR)/*<>*/}(b[3]));/*<>*/ /*<>*/c(e[g],h,cT);/*<>*/return/*<>*/c(e[g],h,cU)/*<>*/}N(Z,[0,X[169],an,ao]);v.caml_register_global(198,[0,af,function(a){/*<>*/return/*<>*/f(e[r],bw,af,a)/*<>*/},ap,aq,ar,as,ag,function(a){/*<>*/return/*<>*/f(e[r],bz,ag,a)/*<>*/},at,au,av,aw,ah,function(a){/*<>*/return/*<>*/f(e[r],bF,ah,a)/*<>*/},ax,ay,az,aA,ai,function(a){/*<>*/return/*<>*/f(e[r],bH,ai,a)/*<>*/},aB,aC,aD,aE,aj,function(a){/*<>*/return/*<>*/f(e[r],bJ,aj,a)/*<>*/},aF,aG,aH,aI,ak,function(a){/*<>*/return/*<>*/f(e[r],bQ,ak,a)/*<>*/},aJ,aL,aM,aN,al,function(a){/*<>*/return/*<>*/f(e[r],b8,al,a)/*<>*/},aO,aP,aQ,aR,ck,aU,function(a){/*<>*/return/*<>*/f(e[r],cq,aU,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var -e=a[1];b:if(e!==z){if(e!==J){if(e===a8)break b;if(e!==a_)break a}/*<>*/return/*<>*/c(h[5],y,a)}/*<>*/return/*<>*/c(h[5],y,a)}var -g=a[1];if(!g)/*<>*/return/*<>*/c(h[7],y,a);var -k=g[1];if(0!==k[0])/*<>*/return/*<>*/c(h[6],y,a);var -b=k[1];b:if(b!==z){if(b!==J){if(b===a8)break b;if(b!==a_)break a}var -i=g[2];if(i&&!i[2])/*<>*/return[0,/*<>*/d(o[16],i[1])];/*<>*/return/*<>*/f(h[4],y,b,a)}var -j=g[2];if(j&&!j[2])/*<>*/return[1,/*<>*/d(S[13][3],j[1])];/*<>*/return/*<>*/f(h[4],y,b,a)}/*<>*/return/*<>*/c(h[8],y,a)/*<>*/},function(a){/*<>*/return 0===a[0]?[1,[0,cr,[0,/*<>*/d(o[15],a[1]),0]]]:[1,[0,cs,[0,/*<>*/d(S[13][4],a[1]),0]]]/*<>*/},function(a){/*<>*/if(typeof +i=a[1];if(l===i){if(a[2]===E)/*<>*/return/*<>*/c(f[5],Q,a)}else if(j===i){var +b=a[2];if(!b)/*<>*/return/*<>*/c(f[7],Q,a);var +e=b[1];if(typeof +e!=="number"){var +k=e[1];if(l===k){var +m=e[2];if(m===E){var +h=b[2];if(h&&!h[2])/*<>*/return[0,/*<>*/d(O[5],h[1])];/*<>*/return/*<>*/g(f[4],Q,m,a)}}else if(j===k)/*<>*/return/*<>*/c(f[6],Q,a)}}}/*<>*/return/*<>*/c(f[8],Q,a)/*<>*/}function +aG(a){/*<>*/return[0,j,[0,b6,[0,/*<>*/d(O[6],a[1]),0]]]/*<>*/}var +aH=[];function +al(a){/*<>*/return d(aH[1],a)}v(aH,[0,R[20]]);var +aI=R[22],aJ=R[23],aK=R[24],aL=R[25],Y=[];function +aM(f,b){/*<>*/ /*<>*/c(e[h],f,b9);/*<>*/ /*<>*/g(e[h],f,b$,b_);var +a=b[1];/*<>*/ /*<>*/d(d(Y[3],f),a);/*<>*/ /*<>*/c(e[h],f,ca);/*<>*/ /*<>*/c(e[h],f,cb);/*<>*/ /*<>*/g(e[h],f,cd,cc);/*<>*/(function(a){/*<>*/if(!a)/*<>*/return/*<>*/c(e[13],f,cg);var +b=a[1];/*<>*/ /*<>*/c(e[13],f,ce);/*<>*/ /*<>*/d(d(Y[2],f),b);/*<>*/return/*<>*/c(e[13],f,cf)/*<>*/}(b[2]));/*<>*/ /*<>*/c(e[h],f,ch);/*<>*/ /*<>*/c(e[h],f,ci);/*<>*/ /*<>*/g(e[h],f,ck,cj);/*<>*/(function(a){/*<>*/if(!a)/*<>*/return/*<>*/c(e[13],f,cn);var +b=a[1];/*<>*/ /*<>*/c(e[13],f,cl);/*<>*/ /*<>*/d(d(Y[1],f),b);/*<>*/return/*<>*/c(e[13],f,cm)/*<>*/}(b[3]));/*<>*/ /*<>*/c(e[h],f,co);/*<>*/return/*<>*/c(e[h],f,cp)/*<>*/}v(Y,[0,S[169],ak,al]);o.caml_register_global(aR,[0,$,function(a){/*<>*/return/*<>*/g(e[s],bf,$,a)/*<>*/},ao,ap,aq,ar,aa,function(a){/*<>*/return/*<>*/g(e[s],bs,aa,a)/*<>*/},ac,ad,ae,af,ag,function(a){/*<>*/return/*<>*/g(e[s],bw,ag,a)/*<>*/},ac,ad,ae,af,ai,function(a){/*<>*/return/*<>*/g(e[s],bG,ai,a)/*<>*/},au,aw,ax,ay,bR,aB,function(a){/*<>*/return/*<>*/g(e[s],bX,aB,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var +e=a[1];b:if(e!==x){if(e!==D){if(e===aP)break b;if(e!==aS)break a}/*<>*/return/*<>*/c(i[5],w,a)}/*<>*/return/*<>*/c(i[5],w,a)}var +f=a[1];if(!f)/*<>*/return/*<>*/c(i[7],w,a);var +k=f[1];if(0!==k[0])/*<>*/return/*<>*/c(i[6],w,a);var +b=k[1];b:if(b!==x){if(b!==D){if(b===aP)break b;if(b!==aS)break a}var +h=f[2];if(h&&!h[2])/*<>*/return[0,/*<>*/d(F[16],h[1])];/*<>*/return/*<>*/g(i[4],w,b,a)}var +j=f[2];if(j&&!j[2])/*<>*/return[1,/*<>*/d(N[13][3],j[1])];/*<>*/return/*<>*/g(i[4],w,b,a)}/*<>*/return/*<>*/c(i[8],w,a)/*<>*/},function(a){/*<>*/return 0===a[0]?[1,[0,bY,[0,/*<>*/d(F[15],a[1]),0]]]:[1,[0,bZ,[0,/*<>*/d(N[13][4],a[1]),0]]]/*<>*/},function(a){/*<>*/if(typeof a!=="number"){var -n=a[1];if(m===n){var -o=a[2];if(o===z||o===J)/*<>*/return/*<>*/c(b[5],M,a)}else if(k===n){var -e=a[2];if(!e)/*<>*/return/*<>*/c(b[7],M,a);var -h=e[1];if(typeof +m=a[1];if(l===m){var +n=a[2];if(n===x||n===D)/*<>*/return/*<>*/c(f[5],G,a)}else if(j===m){var +b=a[2];if(!b)/*<>*/return/*<>*/c(f[7],G,a);var +h=b[1];if(typeof h!=="number"){var -p=h[1];if(m===p){var -g=h[2];if(g===z){var -j=e[2];if(j&&!j[2])/*<>*/return[1,/*<>*/d(S[13][5],j[1])];/*<>*/return/*<>*/f(b[4],M,g,a)}if(g===J){var -i=e[2];if(i&&!i[2])/*<>*/return[0,/*<>*/d(l[45][22],i[1])];/*<>*/return/*<>*/f(b[4],M,g,a)}}else if(k===p)/*<>*/return/*<>*/c(b[6],M,a)}}}/*<>*/return/*<>*/c(b[8],M,a)/*<>*/},function(a){/*<>*/return 0===a[0]?[0,k,[0,ct,[0,/*<>*/d(l[45][6],a[1]),0]]]:[0,k,[0,cu,[0,/*<>*/d(S[13][6],a[1]),0]]]/*<>*/},an,function(a){/*<>*/return/*<>*/f(e[r],cx,an,a)/*<>*/},aW,aX,aY,aZ,ao,function(a){/*<>*/return/*<>*/f(e[r],cA,ao,a)/*<>*/},a1,a2,a3,a4,[248,cB,v.caml_fresh_oo_id(0)],a5,function(a){/*<>*/return/*<>*/f(e[r],cV,a5,a)/*<>*/},function(a){/*<>*/var/*<>*/b=[0,cX,1,/*<>*/d(o[37],X[171]),0],/*<>*/c=[0,cZ,1,a1,[0,cY,1,/*<>*/d(o[37],aW),b]];/*<>*/return/*<>*/a6(aK[3],cW,c,function(a){/*<>*/return a!==I?a!==H?a!==G?-1:0:1:2/*<>*/},0,function(a){/*<>*/var -b=a[2];/*<>*/return[0,a[1],b[1],b[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[2],e=a[1],/*<>*/f=[0,[1,[0,c0,[0,/*<>*/c(o[36],X[172],a[3]),0]]],0],/*<>*/g=[0,[1,[0,c1,[0,/*<>*/c(o[36],aX,b),0]]],f];/*<>*/return[1,[0,[1,[0,c2,[0,/*<>*/d(a2,e),0]]],g]]/*<>*/},function(a){/*<>*/if(typeof -a!=="number"&&ae===a[1]){/*<>*/var/*<>*/g=[0,0],/*<>*/h=[0,0],/*<>*/j=[0,0],/*<>*/e=[0,0],/*<>*/k=[0,0];/*<>*/(function(a){/*<>*/var -f=a;/*<>*/for(;;){if(!f)/*<>*/return;var -n=f[1],m=n[2],b=n[1],o=f[2];if(b!==I)if(b!==H)if(b!==G){/*<>*/if(/*<>*/d(i[2],l[22]))k[1]=[0,b,/*<>*/d(i[2],k)]}else if(/*<>*/d(i[2],g))e[1]=[0,b,/*<>*/d(i[2],e)];else -g[1]=[0,/*<>*/d(a3,m)];else if(/*<>*/d(i[2],h))e[1]=[0,b,/*<>*/d(i[2],e)];else -h[1]=[0,c(l[45][29],aY,m)];else if(/*<>*/d(i[2],j))e[1]=[0,b,/*<>*/d(i[2],e)];else -j[1]=[0,c(l[45][29],X[173],m)];f=o}/*<>*/}(a[2]));if(/*<>*/d(i[2],e)){/*<>*/ /*<>*/var -p=/*<>*/d(i[2],e);/*<>*/return/*<>*/f(b[10],_,p,a)}if(/*<>*/d(i[2],k)){/*<>*/ /*<>*/var -q=/*<>*/d(i[2],k);/*<>*/return/*<>*/f(b[11],_,q,a)}/*<>*/var/*<>*/m=/*<>*/d(i[2],g),/*<>*/n=/*<>*/d(i[2],h),/*<>*/o=/*<>*/d(i[2],j);if(m&&n&&o)/*<>*/return[0,m[1],n[1],o[1]];/*<>*/var/*<>*/r=[0,[0,0===/*<>*/d(i[2],j)?1:0,c3],0],/*<>*/s=[0,[0,0===/*<>*/d(i[2],h)?1:0,c4],r],/*<>*/t=[0,[0,0===/*<>*/d(i[2],g)?1:0,c5],s];/*<>*/return/*<>*/f(b[13],_,a,t)}/*<>*/return/*<>*/c(b[14],_,a)/*<>*/},function(a){/*<>*/var -b=a[2],e=a[1],f=[0,[0,c6,c(l[45][13],X[174],a[3])],0],g=[0,[0,c7,c(l[45][13],aZ,b)],f];/*<>*/return[0,ae,[0,[0,c8,d(a4,e)],g]]/*<>*/}],"Haz3lcore__ProjectorBase");return/*<>*/}(globalThis)); - -//# 5785 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +o=h[1];if(l===o){var +e=h[2];if(e===x){var +k=b[2];if(k&&!k[2])/*<>*/return[1,/*<>*/d(N[13][5],k[1])];/*<>*/return/*<>*/g(f[4],G,e,a)}if(e===D){var +i=b[2];if(i&&!i[2])/*<>*/return[0,/*<>*/d(u[45][22],i[1])];/*<>*/return/*<>*/g(f[4],G,e,a)}}else if(j===o)/*<>*/return/*<>*/c(f[6],G,a)}}}/*<>*/return/*<>*/c(f[8],G,a)/*<>*/},function(a){/*<>*/return 0===a[0]?[0,j,[0,b0,[0,/*<>*/d(u[45][6],a[1]),0]]]:[0,j,[0,b1,[0,/*<>*/d(N[13][6],a[1]),0]]]/*<>*/},ak,function(a){/*<>*/return/*<>*/g(e[s],b4,ak,a)/*<>*/},aD,aE,aF,aG,al,function(a){/*<>*/return/*<>*/g(e[s],b7,al,a)/*<>*/},aI,aJ,aK,aL,[248,b8,o.caml_fresh_oo_id(0)],aM,function(a){/*<>*/return/*<>*/g(e[s],cq,aM,a)/*<>*/},function(a){/*<>*/var/*<>*/b=[0,cs,1,/*<>*/d(F[37],S[171]),0],/*<>*/c=[0,cu,1,aI,[0,ct,1,/*<>*/d(F[37],aD),b]];/*<>*/return/*<>*/aO(av[3],cr,c,function(a){/*<>*/return a!==C?a!==B?a!==A?-1:0:1:2/*<>*/},0,function(a){/*<>*/var +b=a[2];/*<>*/return[0,a[1],b[1],b[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[2],e=a[1],/*<>*/f=[0,[1,[0,cv,[0,/*<>*/c(F[36],S[172],a[3]),0]]],0],/*<>*/g=[0,[1,[0,cw,[0,/*<>*/c(F[36],aE,b),0]]],f];/*<>*/return[1,[0,[1,[0,cx,[0,/*<>*/d(aJ,e),0]]],g]]/*<>*/},function(a){/*<>*/if(typeof +a!=="number"&&_===a[1]){/*<>*/var/*<>*/h=[0,0],/*<>*/i=[0,0],/*<>*/j=[0,0],/*<>*/e=[0,0],/*<>*/k=[0,0];/*<>*/(function(a){/*<>*/var +g=a;/*<>*/for(;;){if(!g)/*<>*/return;var +m=g[1],l=m[2],f=m[1],n=g[2];if(f!==C)if(f!==B)if(f!==A){/*<>*/if(/*<>*/d(b[2],u[22]))k[1]=[0,f,/*<>*/d(b[2],k)]}else if(/*<>*/d(b[2],h))e[1]=[0,f,/*<>*/d(b[2],e)];else +h[1]=[0,/*<>*/d(aK,l)];else if(/*<>*/d(b[2],i))e[1]=[0,f,/*<>*/d(b[2],e)];else +i[1]=[0,c(u[45][29],aF,l)];else if(/*<>*/d(b[2],j))e[1]=[0,f,/*<>*/d(b[2],e)];else +j[1]=[0,c(u[45][29],S[173],l)];g=n}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var +o=/*<>*/d(b[2],e);/*<>*/return/*<>*/g(f[10],Z,o,a)}if(/*<>*/d(b[2],k)){/*<>*/ /*<>*/var +p=/*<>*/d(b[2],k);/*<>*/return/*<>*/g(f[11],Z,p,a)}/*<>*/var/*<>*/l=/*<>*/d(b[2],h),/*<>*/m=/*<>*/d(b[2],i),/*<>*/n=/*<>*/d(b[2],j);if(l&&m&&n)/*<>*/return[0,l[1],m[1],n[1]];/*<>*/var/*<>*/q=[0,[0,0===/*<>*/d(b[2],j)?1:0,cy],0],/*<>*/r=[0,[0,0===/*<>*/d(b[2],i)?1:0,cz],q],/*<>*/s=[0,[0,0===/*<>*/d(b[2],h)?1:0,cA],r];/*<>*/return/*<>*/g(f[13],Z,a,s)}/*<>*/return/*<>*/c(f[14],Z,a)/*<>*/},function(a){/*<>*/var +b=a[2],e=a[1],f=[0,[0,cB,c(u[45][13],S[aR],a[3])],0],g=[0,[0,cC,c(u[45][13],aG,b)],f];/*<>*/return[0,_,[0,[0,cD,d(aL,e)],g]]/*<>*/},function(e){/*<>*/ /*<>*/var +a=/*<>*/d(e[3],e[7]);/*<>*/return[0,a,e[8],function(a){/*<>*/ /*<>*/var +b=/*<>*/d(e[4],a);/*<>*/return/*<>*/d(e[9],b)/*<>*/},function(a){/*<>*/ /*<>*/var +b=/*<>*/d(e[4],a);/*<>*/return/*<>*/d(e[10],b)/*<>*/},function(a,b){/*<>*/var/*<>*/f=/*<>*/d(e[4],a),/*<>*/g=/*<>*/c(e[11],f,b);/*<>*/return/*<>*/d(e[3],g)/*<>*/},function(a){/*<>*/ /*<>*/var +b=/*<>*/d(e[4],a);/*<>*/return/*<>*/d(e[12],b)/*<>*/}]}],"Haz3lcore__ProjectorBase");return/*<>*/}(globalThis)); + +//# 5756 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var u="@ ",M="<2>",L=" =",K="src/haz3lcore/zipper/Relatives.re.t",I=963043957,J="",H="@]",G="@[%s =@ ",o="ancestors",n=139,m="siblings",l=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -436673,7 +436644,7 @@ l=/*<>*/c(f[15],a[1][2]);if(!l)/*<>*/n=g([0,[0,j[1],i[3]],a[2]]),/*<>*/y=n[2],z=n[1];/*<>*/return[0,[0,w,v],[0,[0,/*<>*/d(s[24],x,u),z],y]]}/*<>*/var k=b[2][1],A=k[2],B=k[1],/*<>*/o=g([0,[0,a[1][1],k[3]],a[2]]),q=o[1],C=o[2],E=q[2],G=q[1],/*<>*/H=/*<>*/c(F[43],A),/*<>*/I=[0,B,[0,[0,/*<>*/c(F[37],H),E],0]];/*<>*/return[0,[0,G,/*<>*/c(f[10],I)],C]/*<>*/}/*<>*/return g(C(E(a)))/*<>*/}],"Haz3lcore__Relatives");return/*<>*/}(globalThis)); -//# 5855 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5826 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var Z="%d",Y="src/haz3lcore/zipper/ZipperBase.re.t",p="selection",i="@ ",L="<2>",w="Outer",E=" =",X="%a",W="outer",V="inner",o="relatives",U="@,",n="projectors",m="backpack",T="src/haz3lcore/zipper/ZipperBase.re.Caret.t",S=963043957,l="caret",D="",v="Inner",K=";@ ",C="@]",B="@[%s =@ ",R=143,g=139,I=848054398,J=-976970511,k=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -436712,44 +436683,44 @@ O(a,b){/*<>*/var d=b[5],e=b[4],/*<>*/f=/*<>*/c(a,b[3]);/*<>*/return[0,b[1],b[2],f,e,d]/*<>*/}function P(b){function d(a){/*<>*/var -d=a[2];/*<>*/return[0,/*<>*/c(b,a[1]),d]/*<>*/}/*<>*/return function(a){/*<>*/return O(d,a)}/*<>*/}k.caml_register_global(91,[0,t,N,function(a){/*<>*/return/*<>*/h(e[R],aF,N,a)/*<>*/},function(a){/*<>*/return/*<>*/a2(aM[3],aG,[0,aL,1,A[15],[0,aK,1,z[4],[0,aJ,1,u[3],[0,aI,1,t[3],[0,aH,1,G[43][3],0]]]]],function(a){/*<>*/return a!==m?a!==l?a!==n?a!==o?a!==p?-1:0:2:4:3:1/*<>*/},0,function(a){/*<>*/var +d=a[2];/*<>*/return[0,/*<>*/c(b,a[1]),d]/*<>*/}/*<>*/return function(a){/*<>*/return O(d,a)}/*<>*/}k.caml_register_global(91,[0,t,N,function(a){/*<>*/return/*<>*/h(e[R],aF,N,a)/*<>*/},function(a){/*<>*/return/*<>*/a2(aM[3],aG,[0,aL,1,A[15],[0,aK,1,z[4],[0,aJ,1,u[3],[0,aI,1,t[3],[0,aH,1,G[25][3],0]]]]],function(a){/*<>*/return a!==m?a!==l?a!==n?a!==o?a!==p?-1:0:2:4:3:1/*<>*/},0,function(a){/*<>*/var b=a[2],c=b[2],d=c[2];/*<>*/return[0,a[1],b[1],c[1],d[1],d[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[4],d=a[3],e=a[2],f=a[1],/*<>*/g=[0,[1,[0,aN,[0,/*<>*/c(G[43][4],a[5]),0]]],0],/*<>*/h=[0,[1,[0,aO,[0,/*<>*/c(t[4],b),0]]],g],/*<>*/i=[0,[1,[0,aP,[0,/*<>*/c(u[4],d),0]]],h],/*<>*/j=[0,[1,[0,aQ,[0,/*<>*/c(z[5],e),0]]],i];/*<>*/return[1,[0,[1,[0,aR,[0,/*<>*/c(A[16],f),0]]],j]]/*<>*/},function(a){/*<>*/if(typeof +b=a[4],d=a[3],e=a[2],f=a[1],/*<>*/g=[0,[1,[0,aN,[0,/*<>*/c(G[25][4],a[5]),0]]],0],/*<>*/h=[0,[1,[0,aO,[0,/*<>*/c(t[4],b),0]]],g],/*<>*/i=[0,[1,[0,aP,[0,/*<>*/c(u[4],d),0]]],h],/*<>*/j=[0,[1,[0,aQ,[0,/*<>*/c(z[5],e),0]]],i];/*<>*/return[1,[0,[1,[0,aR,[0,/*<>*/c(A[16],f),0]]],j]]/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&S===a[1]){/*<>*/var/*<>*/g=[0,0],/*<>*/i=[0,0],/*<>*/k=[0,0],/*<>*/q=[0,0],/*<>*/r=[0,0],/*<>*/e=[0,0],/*<>*/s=[0,0];/*<>*/(function(a){/*<>*/var h=a;/*<>*/for(;;){if(!h)/*<>*/return;var j=h[1],f=j[2],d=j[1],v=h[2];if(d!==m)if(d!==l)if(d!==n)if(d!==o)if(d!==p){/*<>*/if(/*<>*/c(b[2],x[22]))s[1]=[0,d,/*<>*/c(b[2],s)]}else if(/*<>*/c(b[2],g))e[1]=[0,d,/*<>*/c(b[2],e)];else g[1]=[0,/*<>*/c(A[17],f)];else if(/*<>*/c(b[2],k))e[1]=[0,d,/*<>*/c(b[2],e)];else k[1]=[0,/*<>*/c(u[5],f)];else if(/*<>*/c(b[2],r))e[1]=[0,d,/*<>*/c(b[2],e)];else -r[1]=[0,/*<>*/c(G[43][5],f)];else if(/*<>*/c(b[2],q))e[1]=[0,d,/*<>*/c(b[2],e)];else +r[1]=[0,/*<>*/c(G[25][5],f)];else if(/*<>*/c(b[2],q))e[1]=[0,d,/*<>*/c(b[2],e)];else q[1]=[0,/*<>*/c(t[5],f)];else if(/*<>*/c(b[2],i))e[1]=[0,d,/*<>*/c(b[2],e)];else i[1]=[0,/*<>*/c(z[6],f)];h=v}/*<>*/}(a[2]));if(/*<>*/c(b[2],e)){/*<>*/ /*<>*/var C=/*<>*/c(b[2],e);/*<>*/return/*<>*/h(j[10],H,C,a)}if(/*<>*/c(b[2],s)){/*<>*/ /*<>*/var D=/*<>*/c(b[2],s);/*<>*/return/*<>*/h(j[11],H,D,a)}/*<>*/var/*<>*/f=/*<>*/c(b[2],g),/*<>*/v=/*<>*/c(b[2],i),/*<>*/w=/*<>*/c(b[2],k),/*<>*/y=/*<>*/c(b[2],q),/*<>*/B=/*<>*/c(b[2],r);if(f&&v&&w&&y&&B)/*<>*/return[0,f[1],v[1],w[1],y[1],B[1]];/*<>*/var/*<>*/E=[0,[0,0===/*<>*/c(b[2],r)?1:0,aS],0],/*<>*/F=[0,[0,0===/*<>*/c(b[2],q)?1:0,aT],E],/*<>*/I=[0,[0,0===/*<>*/c(b[2],k)?1:0,aU],F],/*<>*/J=[0,[0,0===/*<>*/c(b[2],i)?1:0,aV],I],/*<>*/K=[0,[0,0===/*<>*/c(b[2],g)?1:0,aW],J];/*<>*/return/*<>*/h(j[13],H,a,K)}/*<>*/return/*<>*/d(j[14],H,a)},function(a){/*<>*/var -b=a[4],d=a[3],e=a[2],f=a[1],g=[0,[0,aX,c(G[43][6],a[5])],0],h=[0,[0,aY,c(t[6],b)],g],i=[0,[0,aZ,c(u[6],d)],h],j=[0,[0,a0,c(z[7],e)],i];/*<>*/return[0,S,[0,[0,a1,c(A[18],f)],j]]/*<>*/},O,P,function(c,b){/*<>*/return P(function(a){/*<>*/return c/*<>*/})(b)/*<>*/},function(a,b){/*<>*/var +b=a[4],d=a[3],e=a[2],f=a[1],g=[0,[0,aX,c(G[25][6],a[5])],0],h=[0,[0,aY,c(t[6],b)],g],i=[0,[0,aZ,c(u[6],d)],h],j=[0,[0,a0,c(z[7],e)],i];/*<>*/return[0,S,[0,[0,a1,c(A[18],f)],j]]/*<>*/},O,P,function(c,b){/*<>*/return P(function(a){/*<>*/return c/*<>*/})(b)/*<>*/},function(a,b){/*<>*/var c=b[1];/*<>*/return[0,[0,c[1],a,c[3]],b[2],b[3],b[4],b[5]]/*<>*/},function(a){/*<>*/return/*<>*/d(u[13],[0,a[1][2]],a[3])/*<>*/},function(a){/*<>*/var b=a[3][1],c=b[2],e=b[1],f=a[1],g=f[2];/*<>*/return f[1]?[0,/*<>*/d(Q[37],e,g),c]:[0,e,/*<>*/d(Q[37],g,c)]/*<>*/}],"Haz3lcore__ZipperBase");return/*<>*/}(globalThis)); -//# 5912 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5883 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -e=a.jsoo_runtime;/*<>*/function -c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function -g(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function -r(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var -b=e.caml_get_global_data(),o=b.Stdlib__Format,p=b.Sexplib__Std,q=b.Ppx_yojson_conv_lib__Yojson_conv,j=b.Virtual_dom__Vdom,d=b.Stdlib,E=[2,0],D=[0,2],B="()",C=[0,[15,0],"%a"],A=[0,0],x="checkbox",y="type",w="Checkbox: not boolean literal",z=b.Virtual_dom__Node,v=b.Util__OptUtil,u=b.Stdlib__Option,t=b.Haz3lcore__Piece,s=b.Haz3lcore__Form;function -h(a){/*<>*/if(0===a[0]){var +f=a.jsoo_runtime;/*<>*/function +d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function +h(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):f.caml_call_gen(a,[b,c])}/*<>*/function +s(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):f.caml_call_gen(a,[b,c,d])}var +b=f.caml_get_global_data(),p=b.Stdlib__Format,j=b.Virtual_dom__Vdom,e=b.Stdlib,q=b.Sexplib__Std,r=b.Ppx_yojson_conv_lib__Yojson_conv,E=[0,2],C="()",D=[0,[15,0],"%a"],B=[0,0],y="checkbox",z="type",x="Checkbox: not boolean literal",A=b.Virtual_dom__Node,w=b.Util__OptUtil,v=b.Stdlib__Option,u=b.Haz3lcore__Piece,t=b.Haz3lcore__Form;function +c(a){/*<>*/if(0===a[0]){var b=a[1][2];if(b&&!b[2])/*<>*/return[0,b[1]]}/*<>*/return 0/*<>*/}function -k(a,b){/*<>*/return function(a){/*<>*/return/*<>*/g(t[51],a,0)/*<>*/}(/*<>*/c(/*<>*/c(s[98],a),b))/*<>*/}function +k(a,b){/*<>*/return function(a){/*<>*/return/*<>*/h(u[51],a,0)/*<>*/}(/*<>*/d(/*<>*/d(t[98],a),b))/*<>*/}function l(a){/*<>*/ /*<>*/var -b=h(a);/*<>*/return/*<>*/c(/*<>*/c(u[7],d[32]),b)/*<>*/}function -f(a){/*<>*/var/*<>*/e=h(a),/*<>*/b=/*<>*/c(/*<>*/c(v[9],d[31]),e);return b?b[1]:/*<>*/c(d[2],w)/*<>*/}function +b=c(a);/*<>*/return/*<>*/d(/*<>*/d(v[7],e[32]),b)/*<>*/}function +g(a){/*<>*/var/*<>*/f=c(a),/*<>*/b=/*<>*/d(/*<>*/d(w[9],e[31]),f);return b?b[1]:/*<>*/d(e[2],x)/*<>*/}function i(a){/*<>*/ /*<>*/var -b=6;/*<>*/return function(a){/*<>*/return k(b,a)}(/*<>*/c(d[30],a))/*<>*/}function -m(e,h){/*<>*/var/*<>*/a=0,b=f(e[1])?[0,j[1][14],0]:0,k=[0,/*<>*/c(j[1][52],function(a,b){/*<>*/return/*<>*/c(h,[2,i(1-f(e[1]))])/*<>*/}),0],/*<>*/l=[0,/*<>*/g(j[1][1],y,x),k],/*<>*/m=[0,/*<>*/g(d[37],l,b)];/*<>*/return/*<>*/r(z[27],0,m,a)/*<>*/}function -n(a,b){/*<>*/var -c=b[1];if(0===c[0]&&c[1]==="Escape")/*<>*/return A;/*<>*/return 0/*<>*/}e.caml_register_global(19,[0,h,k,l,f,i,function(a){/*<>*/return i(1-f(a))/*<>*/},m,n,function(a){/*<>*/function -b(a,b){/*<>*/return/*<>*/g(o[13],a,B)/*<>*/}/*<>*/return[0,b,function(a){/*<>*/return/*<>*/r(o[143],C,b,a)/*<>*/},p[3],p[4],q[45][1],q[45][17],function(a){/*<>*/return 0!==l(a)?1:0/*<>*/},a,m,function(a){/*<>*/return D/*<>*/},function(a){/*<>*/return E/*<>*/},n]/*<>*/}],"Haz3lcore__CheckboxCore");return/*<>*/}(globalThis)); +b=6;/*<>*/return function(a){/*<>*/return k(b,a)}(/*<>*/d(e[30],a))/*<>*/}function +m(a,f,c){/*<>*/var/*<>*/b=0,k=g(f[1])?[0,j[1][14],0]:0,l=[0,/*<>*/d(j[1][52],function(a,b){/*<>*/return/*<>*/d(c,[2,i(1-g(f[1]))])/*<>*/}),0],/*<>*/m=[0,/*<>*/h(j[1][1],z,y),l],/*<>*/n=[0,/*<>*/h(e[37],m,k)];/*<>*/return/*<>*/s(A[27],0,n,b)/*<>*/}function +n(a,b,c){/*<>*/var +d=c[1];if(0===d[0]&&d[1]==="Escape")/*<>*/return B;/*<>*/return 0/*<>*/}/*<>*/function +o(a,b){/*<>*/return/*<>*/h(p[13],a,C)/*<>*/}f.caml_register_global(18,[0,c,k,l,g,i,function(a){/*<>*/return i(1-g(a))/*<>*/},m,n,[0,o,function(a){/*<>*/return/*<>*/s(p[143],D,o,a)/*<>*/},q[3],q[4],r[45][1],r[45][17],0,function(a){/*<>*/return 0!==l(a)?1:0/*<>*/},m,function(a,b){/*<>*/return E/*<>*/},function(a,b){/*<>*/return a/*<>*/},n]],"Haz3lcore__CheckboxCore");return/*<>*/}(globalThis)); -//# 5933 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5904 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var Y="src/haz3lcore/prog/CoreSettings.re.t",h="@ ",L="<2>",F="show_hidden_steps",G="show_casts",X=125,n=" =",W="%a",V="{ ",E="elaborate",C="show_fn_bodies",D="statics",B="assist",A="show_fixpoints",K=963043957,o="%B",m="",z="show_lookup_steps",y="dynamics",p=";@ ",U="@[<2>{ ",x="evaluation",T="src/haz3lcore/prog/CoreSettings.re.Evaluation.t",l="@]",v="show_settings",w="show_stepper_filters",S="@ }@]",k="@[%s =@ ",u="show_case_clauses",R=143,t="stepper_history",e=139,s=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -436804,22 +436775,22 @@ u=/*<>*/c(b[2],d);/*<>*/c(b[2],n);/*<>*/return/*<>*/j(q[11],J,v,a)}/*<>*/var/*<>*/e=/*<>*/c(b[2],h),/*<>*/o=/*<>*/c(b[2],i),/*<>*/p=/*<>*/c(b[2],k),/*<>*/s=/*<>*/c(b[2],l),/*<>*/t=/*<>*/c(b[2],m);if(e&&o&&p&&s&&t)/*<>*/return[0,e[1],o[1],p[1],s[1],t[1]];/*<>*/var/*<>*/w=[0,[0,0===/*<>*/c(b[2],m)?1:0,b3],0],/*<>*/z=[0,[0,0===/*<>*/c(b[2],l)?1:0,b4],w],/*<>*/A=[0,[0,0===/*<>*/c(b[2],k)?1:0,b5],z],/*<>*/C=[0,[0,0===/*<>*/c(b[2],i)?1:0,b6],A],/*<>*/F=[0,[0,0===/*<>*/c(b[2],h)?1:0,b7],C];/*<>*/return/*<>*/j(q[13],J,a,F)}/*<>*/return/*<>*/f(q[14],J,a)},function(a){/*<>*/var b=a[4],d=a[3],e=a[2],f=a[1],h=[0,[0,b8,c(r[6],a[5])],0],i=[0,[0,b9,c(g[45][2],b)],h],j=[0,[0,b_,c(g[45][2],d)],i],k=[0,[0,b$,c(g[45][2],e)],j];/*<>*/return[0,K,[0,[0,ca,c(g[45][2],f)],k]]/*<>*/},[0,0,0,0,0,r[7]],[0,1,1,1,1,r[7]]],"Haz3lcore__CoreSettings");return/*<>*/}(globalThis)); -//# 5989 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5960 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function -h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var -c=e.caml_get_global_data(),g=c.Virtual_dom__Node,b=c.Haz3lcore__ProjectorBase,m="\xe2\x8b\xb1",l=[0,0],k=[0,2],i=[0,[15,0],"%a"],n=c.Virtual_dom__Vdom,j=c.Stdlib__Format;e.caml_register_global(8,[0,function(a){/*<>*/var -c=[];function -f(a){/*<>*/return d(c[1],a)}e.caml_update_dummy(c,[0,b[1]]);/*<>*/return[0,f,function(a){/*<>*/return/*<>*/h(j[143],i,f,a)/*<>*/},b[4],b[3],b[6],b[5],function(a){/*<>*/return 1/*<>*/},0,function(a,b){/*<>*/var/*<>*/c=[0,/*<>*/d(g[5],m),0],/*<>*/e=[0,[0,/*<>*/d(n[1][57],function(a){/*<>*/return/*<>*/d(b,0)/*<>*/}),0]];/*<>*/return/*<>*/h(g[14],0,e,c)/*<>*/},function(a){/*<>*/return k/*<>*/},function(a){/*<>*/return l/*<>*/},function(a,b){/*<>*/return 0/*<>*/}]/*<>*/}],"Haz3lcore__FoldCore");return/*<>*/}(globalThis)); +p(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function +j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var +b=e.caml_get_global_data(),i=b.Virtual_dom__Node,f=b.Stdlib__Format,g=b.Sexplib__Std,h=b.Ppx_yojson_conv_lib__Yojson_conv,n="\xe2\x8b\xb1",m=[0,2],k="()",l=[0,[15,0],"%a"],o=b.Virtual_dom__Vdom;/*<>*/function +c(a,b){/*<>*/return/*<>*/p(f[13],a,k)/*<>*/}e.caml_register_global(9,[0,[0,c,function(a){/*<>*/return/*<>*/j(f[143],l,c,a)/*<>*/},g[3],g[4],h[45][1],h[45][17],0,function(a){/*<>*/return 1/*<>*/},function(a,b,c){/*<>*/var/*<>*/e=[0,/*<>*/d(i[5],n),0],/*<>*/f=[0,[0,/*<>*/d(o[1][57],function(a){/*<>*/return/*<>*/d(c,0)/*<>*/}),0]];/*<>*/return/*<>*/j(i[14],0,f,e)/*<>*/},function(a,b){/*<>*/return m/*<>*/},function(a,b){/*<>*/return 0/*<>*/},function(a,b,c){/*<>*/return 0/*<>*/}]],"Haz3lcore__FoldCore");return/*<>*/}(globalThis)); -//# 5999 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5970 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,d=c.caml_compare;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var b=c.caml_get_global_data().Stdlib__Set,f=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]),g=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]),h=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]);c.caml_register_global(1,[0,f,g,h,e(b[1],[0,function(a,b){/*<>*/return d(a,b)}])],"Haz3lcore__Sets");return/*<>*/}(globalThis)); -//# 6006 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5977 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime,H=i.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -436867,44 +436838,53 @@ a!=="number")switch(a[0]){case 5:/*<>*/return 1}/*<>*/return 0/*<>*/},b),v=m[1];if(!m[2])/*<>*/return s(v);b=/*<>*/c(h[37],m[2],v)}}/*<>*/}i.caml_register_global(9,[0,q,r,s,j,function(a,b){/*<>*/var/*<>*/c=/*<>*/e(g[9],b),/*<>*/d=/*<>*/e(g[7],c);/*<>*/return j([0,[6,/*<>*/e(g[8],a),d],0])/*<>*/},function(a){/*<>*/ /*<>*/var b=/*<>*/e(g[8],a);/*<>*/return j([0,/*<>*/e(g[7],b),0])/*<>*/}],"Haz3lcore__Incon");return/*<>*/}(globalThis)); -//# 6055 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6026 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -e=a.jsoo_runtime;/*<>*/function -c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function -d(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function -s(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}/*<>*/var -b=e.caml_get_global_data(),r=b.Virtual_dom__Node,f=b.Haz3lcore__ProjectorBase,o=b.Haz3lcore__Typ,p=b.Stdlib,n=b.Haz3lcore__Self,C=[1,0],D=[1,1],z=[0,[15,0],"%a"],y=[0,2],x="\xe2\x8b\xb1 \xe2\x87\x90 ",w="\xe2\x8b\xb1 \xe2\x87\x92 ",v=[0,2],t="Haz3lcore.InfoCore.ToggleDisplay",E=b.Virtual_dom__Vdom,B=b.Haz3lcore__Piece,A=b.Stdlib__Format,u=b.Haz3lcore__Mode,/*<>*/g=[248,t,e.caml_fresh_oo_id(0)];function -h(a){/*<>*/a:if(a){var +g="Self",E="src/haz3lcore/zipper/projectors/InfoCore.re.M.model",D="self",f="Expected",C="expected",r=-976970511,l=848054398,e=a.jsoo_runtime;/*<>*/function +d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function +c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function +B(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}/*<>*/var +b=e.caml_get_global_data(),h=E,j=E,A=b.Virtual_dom__Node,q=b.Stdlib__Format,k=b.Ppx_yojson_conv_lib__Yojson_conv_error,i=b.Sexplib0__Sexp_conv_error,v=b.Haz3lcore__Typ,w=b.Stdlib,u=b.Haz3lcore__Self,S=[0,2],K=g,L=f,M=[0,[15,0],"%a"],P=[0,l,[0,[0,r,g],0]],Q=[0,l,[0,[0,r,f],0]],N=[0,g],O=[0,f],J="\xe2\x8b\xb1 \xe2\x87\x90 ",I="\xe2\x8b\xb1 \xe2\x87\x92 ",H=[0,2],F="Haz3lcore.InfoCore.ToggleDisplay",T=b.Virtual_dom__Vdom,R=b.Haz3lcore__Piece,G=b.Haz3lcore__Mode,/*<>*/m=[248,F,e.caml_fresh_oo_id(0)];function +n(a){/*<>*/a:if(a){var b=a[1];switch(b[0]){case 0:var c=b[1][4];break;case 1:var c=b[1][5];break;default:break a}/*<>*/return[0,c]}/*<>*/return 0/*<>*/}function -l(a){/*<>*/ /*<>*/var -b=h(a);return b?[0,/*<>*/c(u[8],b[1])]:0/*<>*/}function -m(a){/*<>*/if(a){var +s(a){/*<>*/ /*<>*/var +b=n(a);return b?[0,/*<>*/d(G[8],b[1])]:0/*<>*/}function +t(a){/*<>*/if(a){var b=a[1];switch(b[0]){case 0:var -c=b[1];/*<>*/return/*<>*/d(n[33],c[3],c[5]);case +d=b[1];/*<>*/return/*<>*/c(u[33],d[3],d[5]);case 1:var -e=b[1];/*<>*/return/*<>*/d(n[34],e[3],e[6])}}/*<>*/return 0/*<>*/}function -i(a){/*<>*/return a?a[1]:v/*<>*/}function -j(a){/*<>*/var/*<>*/b=i(m(a)),/*<>*/e=/*<>*/c(o[53],b);/*<>*/return/*<>*/d(p[28],w,e)/*<>*/}function -q(a){/*<>*/var/*<>*/b=i(l(a)),/*<>*/e=/*<>*/c(o[53],b);/*<>*/return/*<>*/d(p[28],x,e)/*<>*/}function -k(a,b){/*<>*/return/*<>*/e.caml_equal(h(b),y)?j(b):a?j(b):q(b)/*<>*/}e.caml_register_global(17,[0,g,h,l,m,i,j,q,k,function(d){/*<>*/var -b=[];function -h(a){/*<>*/return c(b[1],a)}e.caml_update_dummy(b,[0,f[7]]);/*<>*/return[0,h,function(a){/*<>*/return/*<>*/s(A[143],z,h,a)/*<>*/},f[10],f[9],f[12],f[11],function(a){/*<>*/var -b=/*<>*/c(B[31],a)[1];if(2!==b&&6>b)/*<>*/return 0;/*<>*/return 1/*<>*/},d,function(a,b){/*<>*/var/*<>*/e=k(d,a[3]),/*<>*/f=[0,/*<>*/c(r[5],e),0],/*<>*/h=[0,[0,/*<>*/c(E[1][67],function(a){/*<>*/return/*<>*/c(b,[3,g])/*<>*/}),0]];/*<>*/return/*<>*/s(r[14],0,h,f)/*<>*/},function(a){/*<>*/return[0,/*<>*/e.caml_ml_string_length(k(d,a[3]))-2|0]/*<>*/},function(a){/*<>*/return a===g?d?C:D:[1,d]/*<>*/},function(a,b){/*<>*/return 0/*<>*/}]/*<>*/}],"Haz3lcore__InfoCore");return/*<>*/}(globalThis)); - -//# 6085 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +e=b[1];/*<>*/return/*<>*/c(u[34],e[3],e[6])}}/*<>*/return 0/*<>*/}function +o(a){/*<>*/return a?a[1]:H/*<>*/}function +p(a){/*<>*/var/*<>*/b=o(t(a)),/*<>*/e=/*<>*/d(v[53],b);/*<>*/return/*<>*/c(w[28],I,e)/*<>*/}function +x(a){/*<>*/var/*<>*/b=o(s(a)),/*<>*/e=/*<>*/d(v[53],b);/*<>*/return/*<>*/c(w[28],J,e)/*<>*/}/*<>*/function +y(a,b){/*<>*/return b?/*<>*/c(q[13],a,K):/*<>*/c(q[13],a,L)/*<>*/}function +z(a,b){/*<>*/return/*<>*/e.caml_equal(n(b),S)?p(b):a?p(b):x(b)/*<>*/}e.caml_register_global(34,[0,m,n,s,t,o,p,x,[0,y,function(a){/*<>*/return/*<>*/B(q[143],M,y,a)/*<>*/},function(a){/*<>*/return a?N:O/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var +b=a[1];b:if(b!==f){if(b!==g){if(b===C)break b;if(b!==D)break a}/*<>*/return 1}/*<>*/return 0}var +e=a[1];if(!e)/*<>*/return/*<>*/c(i[7],h,a);var +j=e[1];if(0!==j[0])/*<>*/return/*<>*/c(i[6],h,a);var +d=j[1];b:if(d!==f){if(d!==g){if(d===C)break b;if(d!==D)break a}/*<>*/return/*<>*/c(i[3],h,a)}/*<>*/return/*<>*/c(i[3],h,a)}/*<>*/return/*<>*/c(i[8],h,a)/*<>*/},function(a){/*<>*/return a?P:Q/*<>*/},function(a){/*<>*/if(typeof +a!=="number"&&l===a[1]){var +b=a[2];if(!b)/*<>*/return/*<>*/c(k[7],j,a);var +d=b[1];if(typeof +d!=="number"){var +e=d[1];if(r===e){var +h=d[2];if(h===f)return b[2]?/*<>*/c(k[3],j,a):0;if(h===g)return b[2]?/*<>*/c(k[3],j,a):1}else if(l===e)/*<>*/return/*<>*/c(k[6],j,a)}}/*<>*/return/*<>*/c(k[8],j,a)/*<>*/},0,function(a){/*<>*/var +b=/*<>*/d(R[31],a)[1];if(2!==b&&6>b)/*<>*/return 0;/*<>*/return 1/*<>*/},function(a,b,c){/*<>*/var/*<>*/e=z(a,b[3]),/*<>*/f=[0,/*<>*/d(A[5],e),0],/*<>*/g=[0,[0,/*<>*/d(T[1][67],function(a){/*<>*/return/*<>*/d(c,[3,m])/*<>*/}),0]];/*<>*/return/*<>*/B(A[14],0,g,f)/*<>*/},function(a,b){/*<>*/return[0,/*<>*/e.caml_ml_string_length(z(a,b[3]))-2|0]/*<>*/},function(a,b){/*<>*/return b===m?a?0:1:a/*<>*/},function(a,b,c){/*<>*/return 0/*<>*/}]],"Haz3lcore__InfoCore");return/*<>*/}(globalThis)); + +//# 6065 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -D="Last",ax="%d",az=-445061397,p="@ ",u="rows",Q="<2>",B="Middle",aF=125,aG="src/haz3lcore/JsUtil.re.TextArea.rel",M=" =",aE="middle",ae=76111832,af="%a",aw="{ ",t="col",aL="last",v="row",ac=448401680,aK=834174833,av="src/haz3lcore/JsUtil.re.TextArea.rel_pos",au="src/haz3lcore/JsUtil.re.TextArea.pos",E="src/haz3lcore/JsUtil.re",at=259676278,q="",R=963043957,aJ="selectAll",ay="@[<2>{ ",aD=";@ ",aI="first",P="@]",O="@[%s =@ ",aB=-471638958,aC=718768073,aH="@ }@]",ab=143,N=-976970511,H=848054398,ad=556247482,j=139,C="First",aA=5793429,s="cols",m=a.jsoo_runtime,e=m.caml_get_public_method,o=m.caml_jsstring_of_string,r=m.caml_maybe_attach_backtrace,aa=m.caml_ml_string_length,G=m.caml_string_of_jsstring,b0=m.caml_wrap_exception;/*<>*/function +D="Last",ax="%d",az=-445061397,p="@ ",u="rows",Q="<2>",B="Middle",aF=125,aG="src/haz3lcore/JsUtil.re.TextArea.rel",M=" =",aE="middle",ae=76111832,af="%a",aw="{ ",t="col",aL="last",v="row",ac=448401680,aK=834174833,av="src/haz3lcore/JsUtil.re.TextArea.rel_pos",au="src/haz3lcore/JsUtil.re.TextArea.pos",E="src/haz3lcore/JsUtil.re",at=259676278,q="",R=963043957,aJ="selectAll",ay="@[<2>{ ",aD=";@ ",aI="first",P="@]",O="@[%s =@ ",aB=-471638958,aC=718768073,aH="@ }@]",ab=143,N=-976970511,H=848054398,ad=556247482,j=139,C="First",aA=5793429,s="cols",m=a.jsoo_runtime,e=m.caml_get_public_method,o=m.caml_jsstring_of_string,r=m.caml_maybe_attach_backtrace,aa=m.caml_ml_string_length,G=m.caml_string_of_jsstring,b1=m.caml_wrap_exception;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):m.caml_call_gen(a,[b])}/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):m.caml_call_gen(a,[b,c,d])}/*<>*/function -bZ(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):m.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function +b0(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):m.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function as(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):m.caml_call_gen(a,[b,c,d,e,f,g])}var -b1=undefined,g=m.caml_get_global_data(),U="clipboard-shim",J=au,y=aG,A=aG,L=av,ar=g.Stdlib__List,ap=g.Re__Str,n=g.Stdlib,h=g.Js_of_ocaml__Js,i=g.Js_of_ocaml__Dom_html,f=g.Stdlib__Format,b=g.Ppx_yojson_conv_lib,x=g.Ppx_yojson_conv_lib__Yojson_conv,l=g.Ppx_yojson_conv_lib__Yojson_conv_error,an=g.Sexplib0__Sexp_conv_record,z=g.Sexplib0__Sexp_conv_error,I=g.Sexplib__Std,T=g.Stdlib__Option,w=g.Assert_failure,S=g.Js_of_ocaml__File,al=g.Virtual_dom__Vdom,bY="\n",bX="TextArea.get",bE=[0,[18,[1,[0,[11,Q,0],Q]],[11,aw,0]],ay],bF=u,bG=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bH=[0,[17,0,0],P],bI=[0,[12,59,[17,[0,p,1,0],0]],aD],bJ=s,bK=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bL=[0,[17,0,0],P],bM=[0,[17,[0,p,1,0],[12,aF,[17,0,0]]],aH],bN=[0,[15,0],af],bV=s,bW=u,bT=s,bU=u,bR=[0,s],bS=[0,u],bP=s,bQ=u,bu=C,bv=B,bw=D,bx=[0,[15,0],af],bB=[0,H,[0,[0,N,C],0]],bC=[0,H,[0,[0,N,B],0]],bD=[0,H,[0,[0,N,D],0]],by=[0,C],bz=[0,B],bA=[0,D],a$=[0,[18,[1,[0,[11,Q,0],Q]],[11,aw,0]],ay],ba=v,bb=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bc=[0,[4,0,0,0,0],ax],bd=[0,[17,0,0],P],be=[0,[12,59,[17,[0,p,1,0],0]],aD],bf=t,bg=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bh=[0,[4,0,0,0,0],ax],bi=[0,[17,0,0],P],bj=[0,[17,[0,p,1,0],[12,aF,[17,0,0]]],aH],bk=[0,[15,0],af],bs=t,bt=v,bq=t,br=v,bo=[0,t],bp=[0,v],bm=t,bn=v,a7=q,a6="#",a4="caret",a5="main",a0=q,aY=" site: ",aZ="WARNING: Failed to focus in update: ",aW=[0,E,101,56],aV=[0,E,93,31],aU=[0,E,90,58],aT=[0,E,83,56],aQ="application/json",aR=".json",aO="JsUtil.get_key",aN=[0,E,24,6],aM=[0,E,13,6],bl=au,bO=av,a9=g.Virtual_dom__Effect,a8=g.Js_of_ocaml__Url,aX=g.Js_of_ocaml__Firebug,aS=g.Js_of_ocaml__Dom,aP=g.Yojson__Safe,a2=g.Virtual_dom__Node;function +b2=undefined,g=m.caml_get_global_data(),U="clipboard-shim",J=au,y=aG,A=aG,L=av,ar=g.Stdlib__List,ap=g.Re__Str,n=g.Stdlib,h=g.Js_of_ocaml__Js,i=g.Js_of_ocaml__Dom_html,f=g.Stdlib__Format,b=g.Ppx_yojson_conv_lib,x=g.Ppx_yojson_conv_lib__Yojson_conv,l=g.Ppx_yojson_conv_lib__Yojson_conv_error,an=g.Sexplib0__Sexp_conv_record,z=g.Sexplib0__Sexp_conv_error,I=g.Sexplib__Std,T=g.Stdlib__Option,w=g.Assert_failure,S=g.Js_of_ocaml__File,al=g.Virtual_dom__Vdom,bZ="\n",bY="TextArea.get",bF=[0,[18,[1,[0,[11,Q,0],Q]],[11,aw,0]],ay],bG=u,bH=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bI=[0,[17,0,0],P],bJ=[0,[12,59,[17,[0,p,1,0],0]],aD],bK=s,bL=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bM=[0,[17,0,0],P],bN=[0,[17,[0,p,1,0],[12,aF,[17,0,0]]],aH],bO=[0,[15,0],af],bW=s,bX=u,bU=s,bV=u,bS=[0,s],bT=[0,u],bQ=s,bR=u,bv=C,bw=B,bx=D,by=[0,[15,0],af],bC=[0,H,[0,[0,N,C],0]],bD=[0,H,[0,[0,N,B],0]],bE=[0,H,[0,[0,N,D],0]],bz=[0,C],bA=[0,B],bB=[0,D],ba=[0,[18,[1,[0,[11,Q,0],Q]],[11,aw,0]],ay],bb=v,bc=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bd=[0,[4,0,0,0,0],ax],be=[0,[17,0,0],P],bf=[0,[12,59,[17,[0,p,1,0],0]],aD],bg=t,bh=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bi=[0,[4,0,0,0,0],ax],bj=[0,[17,0,0],P],bk=[0,[17,[0,p,1,0],[12,aF,[17,0,0]]],aH],bl=[0,[15,0],af],bt=t,bu=v,br=t,bs=v,bp=[0,t],bq=[0,v],bn=t,bo=v,a8=q,a7="#",a5="caret",a6="main",a4="WARNING: caret not found",a0=q,aY=" site: ",aZ="WARNING: Failed to focus in update: ",aW=[0,E,101,56],aV=[0,E,93,31],aU=[0,E,90,58],aT=[0,E,83,56],aQ="application/json",aR=".json",aO="JsUtil.get_key",aN=[0,E,24,6],aM=[0,E,13,6],bm=au,bP=av,a_=g.Virtual_dom__Effect,a9=g.Js_of_ocaml__Url,aX=g.Js_of_ocaml__Firebug,aS=g.Js_of_ocaml__Dom,aP=g.Yojson__Safe,a2=g.Virtual_dom__Node;function F(b){/*<>*/ /*<>*/var a=function(a,b,c){/*<>*/return a.getElementById(b)}(i[2],/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,-332188296,6),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/r([0,w,aM],1)/*<>*/})/*<>*/}function ag(b){/*<>*/ /*<>*/var @@ -436913,43 +436893,43 @@ ah(a){/*<>*/return function(a,b){/*<>*/return a}(h[26],0)/*<>*/}function ai(a){/*<>*/return function(a,b){/*<>*/return a.detail}(a,function(a){/*<>*/return/*<>*/d(e(a,-266378607,14),a)/*<>*/})/*<>*/}function aj(a,b,c){/*<>*/var/*<>*/g=/*<>*/k(S[1],[0,b],0,c),/*<>*/j=function(a,b,c){/*<>*/return a.createObjectURL(b)}(function(a,b){/*<>*/return a.URL}(i[8],function(a){/*<>*/return/*<>*/d(e(a,1057754192,16),a)/*<>*/}),g,function(a){/*<>*/return/*<>*/d(e(a,-461864108,15),a)/*<>*/}),/*<>*/f=/*<>*/d(i[67],i[2]);/*<>*/(function(a,b,c){/*<>*/a.href=b;return}(f,j,function(a){/*<>*/return/*<>*/d(e(a,-988476949,17),a)/*<>*/}));/*<>*/(function(a,b,c,d){/*<>*/a.setAttribute(b,c);return}(f,"download",/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,524300314,18),a)/*<>*/}));/*<>*/(function(a,b,c){/*<>*/a.onclick=b;return}(f,/*<>*/d(i[10],function(a){/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-881939767,19),a)/*<>*/}));return function(a,b){/*<>*/return a.click()}(f,function(a){/*<>*/return/*<>*/d(e(a,-933331896,20),a)/*<>*/})/*<>*/}function -ak(a){/*<>*/return function(a,b){/*<>*/return a.focus()}(F(U),function(a){/*<>*/return/*<>*/d(e(a,ae,33),a)/*<>*/})/*<>*/}/*<>*/var/*<>*/a1=[0,[0,/*<>*/d(al[1][23],U),0]],/*<>*/a3=/*<>*/k(a2[29],0,a1,0);/*<>*/function -am(a,b){/*<>*/ /*<>*/c(f[j],a,a$);/*<>*/ /*<>*/k(f[j],a,bb,ba);var -e=b[1];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bc),e);/*<>*/ /*<>*/c(f[j],a,bd);/*<>*/ /*<>*/c(f[j],a,be);/*<>*/ /*<>*/k(f[j],a,bg,bf);var -g=b[2];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bh),g);/*<>*/ /*<>*/c(f[j],a,bi);/*<>*/return/*<>*/c(f[j],a,bj)/*<>*/}/*<>*/function -K(a,b){/*<>*/switch(b){case -0:/*<>*/return/*<>*/c(f[13],a,bu);case -1:/*<>*/return/*<>*/c(f[13],a,bv);default:/*<>*/return/*<>*/c(f[13],a,bw)}/*<>*/}/*<>*/function -V(a){/*<>*/a:{if(0===a[0]){var -b=a[1];b:if(b!==C){c:if(b!==D){if(b!==B){if(b===aI)break b;if(b===aL)break c;if(b!==aE)break a}/*<>*/return 1}/*<>*/return 2}/*<>*/return 0}var -e=a[1];if(!e)/*<>*/return/*<>*/c(z[7],y,a);var -f=e[1];if(0!==f[0])/*<>*/return/*<>*/c(z[6],y,a);var -d=f[1];b:if(d!==C){c:if(d!==D){if(d!==B){if(d===aI)break b;if(d===aL)break c;if(d!==aE)break a}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[8],y,a)/*<>*/}function -W(a){/*<>*/switch(a){case -0:/*<>*/return by;case -1:/*<>*/return bz;default:/*<>*/return bA}/*<>*/}/*<>*/function -X(a){/*<>*/if(typeof +ak(a){/*<>*/return function(a,b){/*<>*/return a.focus()}(F(U),function(a){/*<>*/return/*<>*/d(e(a,ae,33),a)/*<>*/})/*<>*/}/*<>*/var/*<>*/a1=[0,[0,/*<>*/d(al[1][23],U),0]],/*<>*/a3=/*<>*/k(a2[29],0,a1,0);/*<>*/function +am(a,b){/*<>*/ /*<>*/c(f[j],a,ba);/*<>*/ /*<>*/k(f[j],a,bc,bb);var +e=b[1];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bd),e);/*<>*/ /*<>*/c(f[j],a,be);/*<>*/ /*<>*/c(f[j],a,bf);/*<>*/ /*<>*/k(f[j],a,bh,bg);var +g=b[2];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bi),g);/*<>*/ /*<>*/c(f[j],a,bj);/*<>*/return/*<>*/c(f[j],a,bk)/*<>*/}/*<>*/function +K(a,b){/*<>*/switch(b){case +0:/*<>*/return/*<>*/c(f[13],a,bv);case +1:/*<>*/return/*<>*/c(f[13],a,bw);default:/*<>*/return/*<>*/c(f[13],a,bx)}/*<>*/}/*<>*/function +V(a){/*<>*/a:{if(0===a[0]){var +b=a[1];b:if(b!==C){c:if(b!==D){if(b!==B){if(b===aI)break b;if(b===aL)break c;if(b!==aE)break a}/*<>*/return 1}/*<>*/return 2}/*<>*/return 0}var +e=a[1];if(!e)/*<>*/return/*<>*/c(z[7],y,a);var +f=e[1];if(0!==f[0])/*<>*/return/*<>*/c(z[6],y,a);var +d=f[1];b:if(d!==C){c:if(d!==D){if(d!==B){if(d===aI)break b;if(d===aL)break c;if(d!==aE)break a}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[8],y,a)/*<>*/}function +W(a){/*<>*/switch(a){case +0:/*<>*/return bz;case +1:/*<>*/return bA;default:/*<>*/return bB}/*<>*/}/*<>*/function +X(a){/*<>*/if(typeof a!=="number"&&H===a[1]){var -b=a[2];if(!b)/*<>*/return/*<>*/c(l[7],A,a);var +b=a[2];if(!b)/*<>*/return/*<>*/c(l[7],A,a);var d=b[1];if(typeof d!=="number"){var f=d[1];if(N===f){var -e=d[2];if(e===C)return b[2]?/*<>*/c(l[3],A,a):0;if(e===D)return b[2]?/*<>*/c(l[3],A,a):2;if(e===B)return b[2]?/*<>*/c(l[3],A,a):1}else if(H===f)/*<>*/return/*<>*/c(l[6],A,a)}}/*<>*/return/*<>*/c(l[8],A,a)/*<>*/}function -Y(a){/*<>*/switch(a){case -0:/*<>*/return bB;case -1:/*<>*/return bC;default:/*<>*/return bD}/*<>*/}var +e=d[2];if(e===C)return b[2]?/*<>*/c(l[3],A,a):0;if(e===D)return b[2]?/*<>*/c(l[3],A,a):2;if(e===B)return b[2]?/*<>*/c(l[3],A,a):1}else if(H===f)/*<>*/return/*<>*/c(l[6],A,a)}}/*<>*/return/*<>*/c(l[8],A,a)/*<>*/}function +Y(a){/*<>*/switch(a){case +0:/*<>*/return bC;case +1:/*<>*/return bD;default:/*<>*/return bE}/*<>*/}var Z=[];function -ao(a,b){/*<>*/ /*<>*/c(f[j],a,bE);/*<>*/ /*<>*/k(f[j],a,bG,bF);var -e=b[1];/*<>*/ /*<>*/d(d(Z[2],a),e);/*<>*/ /*<>*/c(f[j],a,bH);/*<>*/ /*<>*/c(f[j],a,bI);/*<>*/ /*<>*/k(f[j],a,bK,bJ);var -g=b[2];/*<>*/ /*<>*/d(d(Z[1],a),g);/*<>*/ /*<>*/c(f[j],a,bL);/*<>*/return/*<>*/c(f[j],a,bM)/*<>*/}/*<>*/ /*<>*/var -a_=/*<>*/d(al[1][67],function(a){/*<>*/ /*<>*/d(i[117],a);/*<>*/return a9[1]/*<>*/});m.caml_update_dummy(Z,[0,K,K]);function -_(a){/*<>*/var/*<>*/b=/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aK,47),a)/*<>*/})),/*<>*/f=/*<>*/d(ap[1],bY);/*<>*/return/*<>*/c(ap[21],f,b)/*<>*/}function -aq(a){/*<>*/ /*<>*/var -b=_(a);/*<>*/return function(a,b,c,d){/*<>*/var -g=a,f=b,e=c,h=d;/*<>*/for(;;){if(!g)/*<>*/return[0,e,h];/*<>*/var/*<>*/i=/*<>*/aa(g[1]),j=g[2];if(f<=i)/*<>*/return[0,e,f];g=j;f=(f-i|0)-1|0;e=e+1|0;h=0}/*<>*/}(b,function(a,b){/*<>*/return a.selectionStart}(a,function(a){/*<>*/return/*<>*/d(e(a,at,48),a)/*<>*/}),0,0)/*<>*/}function -$(a,b){/*<>*/return 0===a?0:a===b?2:1/*<>*/}m.caml_register_global(171,[0,F,ag,ah,function(a){/*<>*/return function(a,b){/*<>*/return a.valueOf()}(ah(0),function(a){/*<>*/return/*<>*/d(e(a,-261340440,8),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var +ao(a,b){/*<>*/ /*<>*/c(f[j],a,bF);/*<>*/ /*<>*/k(f[j],a,bH,bG);var +e=b[1];/*<>*/ /*<>*/d(d(Z[2],a),e);/*<>*/ /*<>*/c(f[j],a,bI);/*<>*/ /*<>*/c(f[j],a,bJ);/*<>*/ /*<>*/k(f[j],a,bL,bK);var +g=b[2];/*<>*/ /*<>*/d(d(Z[1],a),g);/*<>*/ /*<>*/c(f[j],a,bM);/*<>*/return/*<>*/c(f[j],a,bN)/*<>*/}/*<>*/ /*<>*/var +a$=/*<>*/d(al[1][67],function(a){/*<>*/ /*<>*/d(i[117],a);/*<>*/return a_[1]/*<>*/});m.caml_update_dummy(Z,[0,K,K]);function +_(a){/*<>*/var/*<>*/b=/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aK,47),a)/*<>*/})),/*<>*/f=/*<>*/d(ap[1],bZ);/*<>*/return/*<>*/c(ap[21],f,b)/*<>*/}function +aq(a){/*<>*/ /*<>*/var +b=_(a);/*<>*/return function(a,b,c,d){/*<>*/var +g=a,f=b,e=c,h=d;/*<>*/for(;;){if(!g)/*<>*/return[0,e,h];/*<>*/var/*<>*/i=/*<>*/aa(g[1]),j=g[2];if(f<=i)/*<>*/return[0,e,f];g=j;f=(f-i|0)-1|0;e=e+1|0;h=0}/*<>*/}(b,function(a,b){/*<>*/return a.selectionStart}(a,function(a){/*<>*/return/*<>*/d(e(a,at,48),a)/*<>*/}),0,0)/*<>*/}function +$(a,b){/*<>*/return 0===a?0:a===b?2:1/*<>*/}m.caml_register_global(172,[0,F,ag,ah,function(a){/*<>*/return function(a,b){/*<>*/return a.valueOf()}(ah(0),function(a){/*<>*/return/*<>*/d(e(a,-261340440,8),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var b=function(a,b){/*<>*/return a.key}(a,function(a){/*<>*/return/*<>*/d(e(a,5343647,9),a)/*<>*/});/*<>*/return/*<>*/G(/*<>*/c(h[6][8],b,function(a){/*<>*/return/*<>*/d(n[2],aO)/*<>*/}))/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.ctrlKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-511887948,10),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.shiftKey}(a,function(a){/*<>*/return/*<>*/d(e(a,429888061,11),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.altKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-993351690,12),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.metaKey}(a,function(a){/*<>*/return/*<>*/d(e(a,562118618,13),a)/*<>*/})|0/*<>*/},ai,function(a){/*<>*/return 2===ai(a)?1:0/*<>*/},aj,function(a,b){/*<>*/ /*<>*/var -d=/*<>*/bZ(aP[5],0,0,0,0,b);/*<>*/return aj(/*<>*/c(n[28],a,aR),aQ,d)/*<>*/},function(a,b){/*<>*/ /*<>*/var +d=/*<>*/b0(aP[5],0,0,0,0,b);/*<>*/return aj(/*<>*/c(n[28],a,aR),aQ,d)/*<>*/},function(a,b){/*<>*/ /*<>*/var f=function(a,b){/*<>*/return new a}(S[6],0);/*<>*/(function(a,b,c){/*<>*/a.readAsText(b);return}(f,a,function(a){/*<>*/return/*<>*/d(e(a,822186677,21),a)/*<>*/}));return function(a,b,c){/*<>*/return a.onload=b}(f,/*<>*/d(aS[10],function(a){/*<>*/var/*<>*/g=function(a,b){/*<>*/return a.result}(f,function(a){/*<>*/return/*<>*/d(e(a,142895325,23),a)/*<>*/}),/*<>*/i=/*<>*/d(S[3][4],g),/*<>*/j=/*<>*/d(h[5][10],i);/*<>*/ /*<>*/d(b,/*<>*/c(T[7],function(a){/*<>*/return G(a)},j));/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-9931067,22),a)/*<>*/})/*<>*/},function(a,b){/*<>*/ /*<>*/var f=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,24),a)/*<>*/});return function(a,b,c,d){/*<>*/return a.setItem(b,c)}(/*<>*/c(h[6][8],f,function(a){/*<>*/throw/*<>*/r([0,w,aT],1)/*<>*/}),/*<>*/o(a),/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,189007317,25),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,26),a)/*<>*/}),/*<>*/f=function(a){/*<>*/ /*<>*/var @@ -436957,68 +436937,66 @@ b=/*<>*/G(/*<>*/c( b=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,28),a)/*<>*/});return function(a,b){/*<>*/return a.clear()}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/r([0,w,aW],1)/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-933531251,29),a)/*<>*/})/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.confirm(b)}(i[8],/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,272211200,30),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.log(b)}(aX[1],a,function(a){/*<>*/return/*<>*/d(e(a,5395588,31),a)/*<>*/})/*<>*/},function(a,b){/*<>*/var g=a?a[1]:a0;/*<>*/try{/*<>*/ /*<>*/var f=function(a,b){/*<>*/return a.focus()}(F(b),function(a){/*<>*/return/*<>*/d(e(a,ae,32),a)/*<>*/});/*<>*/return f}catch(f){/*<>*/var/*<>*/h=/*<>*/c(n[28],aY,g),/*<>*/i=/*<>*/c(n[28],b,h),/*<>*/j=/*<>*/c(n[28],aZ,i);/*<>*/return/*<>*/d(n[46],j)}/*<>*/},U,ak,a3,function(a){/*<>*/ak(0);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],aJ,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ad,34),a)/*<>*/}));/*<>*/ /*<>*/var -b=/*<>*/d(h[5][9],[0,/*<>*/o(a)]);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],"insertText",!!0,b,function(a){/*<>*/return/*<>*/d(e(a,ad,35),a)/*<>*/}));return function(a,b,c,d,e){/*<>*/return a.execCommand(b,c,d)}(i[2],aJ,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ad,36),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=F(a4),/*<>*/f=function(a,b){/*<>*/return a.getBoundingClientRect()}(F(a5),function(a){/*<>*/return/*<>*/d(e(a,aC,37),a)/*<>*/}),/*<>*/g=function(a,b){/*<>*/return a.getBoundingClientRect()}(b,function(a){/*<>*/return/*<>*/d(e(a,aC,38),a)/*<>*/}),/*<>*/k=function(a,b){/*<>*/return a.top}(f,function(a){/*<>*/return/*<>*/d(e(a,aA,39),a)/*<>*/});if(function(a,b){/*<>*/return a.top}(g,function(a){/*<>*/return/*<>*/d(e(a,aA,40),a)/*<>*/})>*/d(h[5][9],[0,/*<>*/o(a)]);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],"insertText",!!0,b,function(a){/*<>*/return/*<>*/d(e(a,ad,35),a)/*<>*/}));return function(a,b,c,d,e){/*<>*/return a.execCommand(b,c,d)}(i[2],aJ,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ad,36),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=F(a5),/*<>*/f=function(a,b){/*<>*/return a.getBoundingClientRect()}(F(a6),function(a){/*<>*/return/*<>*/d(e(a,aC,37),a)/*<>*/}),/*<>*/g=function(a,b){/*<>*/return a.getBoundingClientRect()}(b,function(a){/*<>*/return/*<>*/d(e(a,aC,38),a)/*<>*/}),/*<>*/k=function(a,b){/*<>*/return a.top}(f,function(a){/*<>*/return/*<>*/d(e(a,aA,39),a)/*<>*/});if(function(a,b){/*<>*/return a.top}(g,function(a){/*<>*/return/*<>*/d(e(a,aA,40),a)/*<>*/})>*/return a.scrollIntoView(b)}(b,h[7],function(a){/*<>*/return/*<>*/d(e(a,aB,41),a)/*<>*/});else/*<>*/var/*<>*/l=function(a,b){/*<>*/return a.bottom}(f,function(a){/*<>*/return/*<>*/d(e(a,az,42),a)/*<>*/}),/*<>*/j=l>*/return a.bottom}(g,function(a){/*<>*/return/*<>*/d(e(a,az,43),a)/*<>*/})?1:0,i=j?function(a,b,c){/*<>*/return a.scrollIntoView(b)}(b,h[8],function(a){/*<>*/return/*<>*/d(e(a,aB,44),a)/*<>*/}):j;/*<>*/return i}catch(f){var -c=b0(f);if(c[1]===n[5])/*<>*/return 0;throw r(c,0)}/*<>*/},[0,function(a){/*<>*/var -b=a!==q?/*<>*/c(n[28],a6,a):a7,/*<>*/f=function(a,b){/*<>*/return a.history}(i[8],function(a){/*<>*/return/*<>*/d(e(a,-465095340,45),a)/*<>*/}),/*<>*/g=/*<>*/d(h[2],/*<>*/o(b));return function(a,b,c,d,e){/*<>*/return a.pushState(b,c,d)}(f,h[1],q,g,function(a){/*<>*/return/*<>*/d(e(a,-936976937,46),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var -b=/*<>*/d(a8[10][9],0);/*<>*/return/*<>*/d(/*<>*/d(T[7],function(a){/*<>*/var -b=2===a[0]?a[1][4]:a[1][6];/*<>*/return b/*<>*/}),b)/*<>*/}],a_,[0,am,function(a){/*<>*/return/*<>*/k(f[ab],bk,am,a)/*<>*/},function(a){/*<>*/return/*<>*/as(an[3],bl,[0,bn,1,I[16],[0,bm,1,I[16],0]],function(a){/*<>*/return a!==t?a!==v?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,bo,[0,/*<>*/d(I[15],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bp,[0,/*<>*/d(I[15],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof -a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var -i=a;/*<>*/for(;;){if(!i)/*<>*/return;var -j=i[1],k=j[2],c=j[1],l=i[2];if(c!==t)if(c!==v){/*<>*/if(/*<>*/d(b[2],x[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else -f[1]=[0,/*<>*/d(x[45][22],k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else -g[1]=[0,/*<>*/d(x[45][22],k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var -m=/*<>*/d(b[2],e);/*<>*/return/*<>*/k(l[10],J,m,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var -n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],J,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bq],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,br],o];/*<>*/return/*<>*/k(l[13],J,a,p)}/*<>*/return/*<>*/c(l[14],J,a)/*<>*/},function(a){/*<>*/var -b=a[1],c=[0,[0,bs,d(x[45][6],a[2])],0];/*<>*/return[0,R,[0,[0,bt,d(x[45][6],b)],c]]/*<>*/},K,function(a){/*<>*/return/*<>*/k(f[ab],bx,K,a)/*<>*/},V,W,X,Y,ao,function(a){/*<>*/return/*<>*/k(f[ab],bN,ao,a)/*<>*/},function(a){/*<>*/return/*<>*/as(an[3],bO,[0,bQ,1,V,[0,bP,1,V,0]],function(a){/*<>*/return a!==s?a!==u?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,bR,[0,W(a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bS,[0,W(b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof -a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var -i=a;/*<>*/for(;;){if(!i)/*<>*/return;var -j=i[1],k=j[2],c=j[1],l=i[2];if(c!==s)if(c!==u){/*<>*/if(/*<>*/d(b[2],x[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else -f[1]=[0,X(k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else -g[1]=[0,X(k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var -m=/*<>*/d(b[2],e);/*<>*/return/*<>*/k(l[10],L,m,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var -n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],L,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bT],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bU],o];/*<>*/return/*<>*/k(l[13],L,a,p)}/*<>*/return/*<>*/c(l[14],L,a)/*<>*/},function(a){/*<>*/var -b=a[1],c=[0,[0,bV,Y(a[2])],0];/*<>*/return[0,R,[0,[0,bW,Y(b)],c]]/*<>*/},function(a){/*<>*/ /*<>*/var -b=ag(a);/*<>*/return function(a){/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/return/*<>*/d(n[2],bX)/*<>*/})/*<>*/}(/*<>*/d(i[118][55],b))/*<>*/},_,aq,$,function(a){/*<>*/var/*<>*/b=_(a),/*<>*/e=aq(a),f=e[1],g=e[2],/*<>*/h=$(g,/*<>*/aa(/*<>*/c(ar[8],b,f)));/*<>*/return[0,$(f,/*<>*/d(ar[1],b)-1|0),h]/*<>*/},function(a){/*<>*/(function(a,b){/*<>*/a.focus();return}(a,function(a){/*<>*/return/*<>*/d(e(a,ae,49),a)/*<>*/}));/*<>*/ /*<>*/var -b=/*<>*/aa(/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aK,50),a)/*<>*/})));/*<>*/(function(a,b,c){/*<>*/a.selectionStart=b;return}(a,b,function(a){/*<>*/return/*<>*/d(e(a,at,51),a)/*<>*/}));return function(a,b,c){/*<>*/return a.selectionEnd=b}(a,b,function(a){/*<>*/return/*<>*/d(e(a,-578749713,52),a)/*<>*/})/*<>*/}]],"Haz3lcore__JsUtil");return/*<>*/}(globalThis)); - -//# 6174 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +c=b1(f);if(c[1]!==n[5])throw r(c,0);/*<>*/ /*<>*/d(n[46],a4);/*<>*/return 0}/*<>*/},[0,function(a){/*<>*/var +b=a!==q?/*<>*/c(n[28],a7,a):a8,/*<>*/f=function(a,b){/*<>*/return a.history}(i[8],function(a){/*<>*/return/*<>*/d(e(a,-465095340,45),a)/*<>*/}),/*<>*/g=/*<>*/d(h[2],/*<>*/o(b));return function(a,b,c,d,e){/*<>*/return a.pushState(b,c,d)}(f,h[1],q,g,function(a){/*<>*/return/*<>*/d(e(a,-936976937,46),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var +b=/*<>*/d(a9[10][9],0);/*<>*/return/*<>*/d(/*<>*/d(T[7],function(a){/*<>*/var +b=2===a[0]?a[1][4]:a[1][6];/*<>*/return b/*<>*/}),b)/*<>*/}],a$,[0,am,function(a){/*<>*/return/*<>*/k(f[ab],bl,am,a)/*<>*/},function(a){/*<>*/return/*<>*/as(an[3],bm,[0,bo,1,I[16],[0,bn,1,I[16],0]],function(a){/*<>*/return a!==t?a!==v?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bp,[0,/*<>*/d(I[15],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bq,[0,/*<>*/d(I[15],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof +a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var +i=a;/*<>*/for(;;){if(!i)/*<>*/return;var +j=i[1],k=j[2],c=j[1],l=i[2];if(c!==t)if(c!==v){/*<>*/if(/*<>*/d(b[2],x[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else +f[1]=[0,/*<>*/d(x[45][22],k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else +g[1]=[0,/*<>*/d(x[45][22],k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var +m=/*<>*/d(b[2],e);/*<>*/return/*<>*/k(l[10],J,m,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var +n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],J,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,br],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bs],o];/*<>*/return/*<>*/k(l[13],J,a,p)}/*<>*/return/*<>*/c(l[14],J,a)/*<>*/},function(a){/*<>*/var +b=a[1],c=[0,[0,bt,d(x[45][6],a[2])],0];/*<>*/return[0,R,[0,[0,bu,d(x[45][6],b)],c]]/*<>*/},K,function(a){/*<>*/return/*<>*/k(f[ab],by,K,a)/*<>*/},V,W,X,Y,ao,function(a){/*<>*/return/*<>*/k(f[ab],bO,ao,a)/*<>*/},function(a){/*<>*/return/*<>*/as(an[3],bP,[0,bR,1,V,[0,bQ,1,V,0]],function(a){/*<>*/return a!==s?a!==u?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bS,[0,W(a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bT,[0,W(b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof +a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var +i=a;/*<>*/for(;;){if(!i)/*<>*/return;var +j=i[1],k=j[2],c=j[1],l=i[2];if(c!==s)if(c!==u){/*<>*/if(/*<>*/d(b[2],x[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else +f[1]=[0,X(k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else +g[1]=[0,X(k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var +m=/*<>*/d(b[2],e);/*<>*/return/*<>*/k(l[10],L,m,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var +n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],L,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bU],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bV],o];/*<>*/return/*<>*/k(l[13],L,a,p)}/*<>*/return/*<>*/c(l[14],L,a)/*<>*/},function(a){/*<>*/var +b=a[1],c=[0,[0,bW,Y(a[2])],0];/*<>*/return[0,R,[0,[0,bX,Y(b)],c]]/*<>*/},function(a){/*<>*/ /*<>*/var +b=ag(a);/*<>*/return function(a){/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/return/*<>*/d(n[2],bY)/*<>*/})/*<>*/}(/*<>*/d(i[118][55],b))/*<>*/},_,aq,$,function(a){/*<>*/var/*<>*/b=_(a),/*<>*/e=aq(a),f=e[1],g=e[2],/*<>*/h=$(g,/*<>*/aa(/*<>*/c(ar[8],b,f)));/*<>*/return[0,$(f,/*<>*/d(ar[1],b)-1|0),h]/*<>*/},function(a){/*<>*/(function(a,b){/*<>*/a.focus();return}(a,function(a){/*<>*/return/*<>*/d(e(a,ae,49),a)/*<>*/}));/*<>*/ /*<>*/var +b=/*<>*/aa(/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aK,50),a)/*<>*/})));/*<>*/(function(a,b,c){/*<>*/a.selectionStart=b;return}(a,b,function(a){/*<>*/return/*<>*/d(e(a,at,51),a)/*<>*/}));return function(a,b,c){/*<>*/return a.selectionEnd=b}(a,b,function(a){/*<>*/return/*<>*/d(e(a,-578749713,52),a)/*<>*/})/*<>*/}]],"Haz3lcore__JsUtil");return/*<>*/}(globalThis)); + +//# 6154 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;/*<>*/function -c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function -t(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):f.caml_call_gen(a,[b,c,d])}/*<>*/function -s(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):f.caml_call_gen(a,[b,c,d,e])}/*<>*/var -b=f.caml_get_global_data(),d=b.Haz3lcore__ProjectorBase,g=b.Stdlib,h=b.Haz3lcore__Piece,r=[0,10],p=[0,[15,0],"%a"],m="ERROR: Slider: not integer literal",q=b.Stdlib__Format,n=b.Virtual_dom__Vdom,o=b.Util__Web,l=b.Util__OptUtil,/*<>*/i=/*<>*/c(h[52],6);function -e(a){/*<>*/ /*<>*/var -b=/*<>*/c(h[53],a);/*<>*/return/*<>*/c(/*<>*/c(l[9],g[34]),b)/*<>*/}function -j(a){/*<>*/ /*<>*/var -b=e(a);return b?/*<>*/c(g[33],b[1]):/*<>*/c(g[2],m)/*<>*/}function -k(a,d){/*<>*/var/*<>*/b=j(a[1]),/*<>*/e=[0,[0,/*<>*/c(n[1][52],function(a,b){/*<>*/return/*<>*/c(d,[2,/*<>*/c(i,b)])/*<>*/}),0]];/*<>*/return/*<>*/s(o[8],e,0,0,b)/*<>*/}f.caml_register_global(10,[0,i,e,j,k,function(b){/*<>*/var -g=[];function -h(a){/*<>*/return c(g[1],a)}f.caml_update_dummy(g,[0,d[19]]);/*<>*/return[0,h,function(a){/*<>*/return/*<>*/t(q[143],p,h,a)/*<>*/},d[22],d[21],d[24],d[23],function(a){/*<>*/return 0!==e(a)?1:0/*<>*/},b,k,function(a){/*<>*/return r/*<>*/},function(a){/*<>*/return[3,b]/*<>*/},function(a,b){/*<>*/return 0/*<>*/}]/*<>*/}],"Haz3lcore__SliderCore");return/*<>*/}(globalThis)); - -//# 6190 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function +u(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):f.caml_call_gen(a,[b,c])}/*<>*/function +v(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):f.caml_call_gen(a,[b,c,d])}/*<>*/function +w(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):f.caml_call_gen(a,[b,c,d,e])}/*<>*/var +b=f.caml_get_global_data(),k=b.Stdlib__Format,e=b.Stdlib,g=b.Haz3lcore__Piece,l=b.Sexplib__Std,m=b.Ppx_yojson_conv_lib__Yojson_conv,r=[0,10],p="()",q=[0,[15,0],"%a"],o="ERROR: Slider: not integer literal",s=b.Virtual_dom__Vdom,t=b.Util__Web,n=b.Util__OptUtil,/*<>*/h=/*<>*/d(g[52],6);function +c(a){/*<>*/ /*<>*/var +b=/*<>*/d(g[53],a);/*<>*/return/*<>*/d(/*<>*/d(n[9],e[34]),b)/*<>*/}function +i(a){/*<>*/ /*<>*/var +b=c(a);return b?/*<>*/d(e[33],b[1]):/*<>*/d(e[2],o)/*<>*/}/*<>*/function +j(a,b){/*<>*/return/*<>*/u(k[13],a,p)/*<>*/}f.caml_register_global(12,[0,h,c,i,[0,j,function(a){/*<>*/return/*<>*/v(k[143],q,j,a)/*<>*/},l[3],l[4],m[45][1],m[45][17],0,function(a){/*<>*/return 0!==c(a)?1:0/*<>*/},function(a,b,c){/*<>*/var/*<>*/e=i(b[1]),/*<>*/f=[0,[0,/*<>*/d(s[1][52],function(a,b){/*<>*/return/*<>*/d(c,[2,/*<>*/d(h,b)])/*<>*/}),0]];/*<>*/return/*<>*/w(t[8],f,0,0,e)/*<>*/},function(a,b){/*<>*/return r/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a,b,c){/*<>*/return 0/*<>*/}]],"Haz3lcore__SliderCore");return/*<>*/}(globalThis)); + +//# 6169 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -n="%.2f",f=a.jsoo_runtime;/*<>*/function -c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function -y(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):f.caml_call_gen(a,[b,c,d])}/*<>*/function -x(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):f.caml_call_gen(a,[b,c,d,e])}var -b=f.caml_get_global_data(),d=b.Haz3lcore__ProjectorBase,h=b.Stdlib__Printf,k=b.Stdlib,j=b.Haz3lcore__Piece,w=[0,10],u=[0,[15,0],"%a"],r=[0,[8,[0,0,0],0,[0,2],0],n],q="ERROR: Slider: not float literal",o=[0,[8,[0,0,0],0,[0,2],0],n],v=b.Stdlib__Format,s=b.Virtual_dom__Vdom,t=b.Util__Web,p=b.Util__OptUtil;function -g(a){/*<>*/ /*<>*/var -b=/*<>*/f.caml_float_of_string(a);/*<>*/return/*<>*/c(/*<>*/c(h[4],o),b)/*<>*/}function -i(a){/*<>*/ /*<>*/var -b=g(a);/*<>*/return/*<>*/c(/*<>*/c(j[52],6),b)/*<>*/}function -e(a){/*<>*/ /*<>*/var -b=/*<>*/c(j[53],a);/*<>*/return/*<>*/c(/*<>*/c(p[9],k[36]),b)/*<>*/}function -l(a){/*<>*/ /*<>*/var -b=e(a);return b?b[1]:/*<>*/c(k[2],q)/*<>*/}function -m(a,d){/*<>*/var/*<>*/b=l(a[1]),/*<>*/e=/*<>*/c(/*<>*/c(h[4],r),b),/*<>*/f=[0,[0,/*<>*/c(s[1][52],function(a,b){/*<>*/return/*<>*/c(d,[2,i(b)])/*<>*/}),0]];/*<>*/return/*<>*/x(t[8],f,0,0,e)/*<>*/}f.caml_register_global(13,[0,g,i,e,l,m,function(b){/*<>*/var -g=[];function -h(a){/*<>*/return c(g[1],a)}f.caml_update_dummy(g,[0,d[19]]);/*<>*/return[0,h,function(a){/*<>*/return/*<>*/y(v[143],u,h,a)/*<>*/},d[22],d[21],d[24],d[23],function(a){/*<>*/return 0!==e(a)?1:0/*<>*/},b,m,function(a){/*<>*/return w/*<>*/},function(a){/*<>*/return[3,b]/*<>*/},function(a,b){/*<>*/return 0/*<>*/}]/*<>*/}],"Haz3lcore__SliderFCore");return/*<>*/}(globalThis)); - -//# 6210 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +p="%.2f",f=a.jsoo_runtime;/*<>*/function +d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function +z(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):f.caml_call_gen(a,[b,c])}/*<>*/function +A(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):f.caml_call_gen(a,[b,c,d])}/*<>*/function +B(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):f.caml_call_gen(a,[b,c,d,e])}var +b=f.caml_get_global_data(),g=b.Stdlib__Printf,m=b.Stdlib__Format,j=b.Stdlib,i=b.Haz3lcore__Piece,n=b.Sexplib__Std,o=b.Ppx_yojson_conv_lib__Yojson_conv,w=[0,[8,[0,0,0],0,[0,2],0],p],v=[0,10],t="()",u=[0,[15,0],"%a"],s="ERROR: Slider: not float literal",q=[0,[8,[0,0,0],0,[0,2],0],p],x=b.Virtual_dom__Vdom,y=b.Util__Web,r=b.Util__OptUtil;function +e(a){/*<>*/ /*<>*/var +b=/*<>*/f.caml_float_of_string(a);/*<>*/return/*<>*/d(/*<>*/d(g[4],q),b)/*<>*/}function +h(a){/*<>*/ /*<>*/var +b=e(a);/*<>*/return/*<>*/d(/*<>*/d(i[52],6),b)/*<>*/}function +c(a){/*<>*/ /*<>*/var +b=/*<>*/d(i[53],a);/*<>*/return/*<>*/d(/*<>*/d(r[9],j[36]),b)/*<>*/}function +k(a){/*<>*/ /*<>*/var +b=c(a);return b?b[1]:/*<>*/d(j[2],s)/*<>*/}/*<>*/function +l(a,b){/*<>*/return/*<>*/z(m[13],a,t)/*<>*/}f.caml_register_global(15,[0,e,h,c,k,[0,l,function(a){/*<>*/return/*<>*/A(m[143],u,l,a)/*<>*/},n[3],n[4],o[45][1],o[45][17],0,function(a){/*<>*/return 0!==c(a)?1:0/*<>*/},function(a,b,c){/*<>*/var/*<>*/e=k(b[1]),/*<>*/f=/*<>*/d(/*<>*/d(g[4],w),e),/*<>*/i=[0,[0,/*<>*/d(x[1][52],function(a,b){/*<>*/return/*<>*/d(c,[2,h(b)])/*<>*/}),0]];/*<>*/return/*<>*/B(y[8],i,0,0,f)/*<>*/},function(a,b){/*<>*/return v/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a,b,c){/*<>*/return 0/*<>*/}]],"Haz3lcore__SliderFCore");return/*<>*/}(globalThis)); + +//# 6188 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cp=203,ax=191,aw=188,Y=187,d="$Meta",o=a.jsoo_runtime,cn=o.caml_equal;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -437267,172 +437245,135 @@ var l=j;/*<>*/return[0,l,[0,f,a]]/*<>*/}/*<>*/var Z=/*<>*/j(V[1],0,U,function(a,b){/*<>*/return O(a,0,0,0,b,v[15][1])[2]/*<>*/});o.caml_register_global(64,[0,[0,e,function(a){/*<>*/return/*<>*/j(D[143],C,e,a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][45],n[171],a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][44],n[172],a)/*<>*/},function(a){/*<>*/return h(v[15][47],n[173],a)},function(a){/*<>*/return h(v[15][46],n[174],a)},function(a){/*<>*/return/*<>*/j(v[15][24],function(a,b,c){/*<>*/var/*<>*/d=/*<>*/i(n[197],b),/*<>*/e=d?/*<>*/cn(a,/*<>*/i(n[185],b)):d;return e?[0,a,c]:c/*<>*/},a,0)/*<>*/}],J,G,g,ay,f,p,q,az,aA,w,K,O,P,u,A,x,function(a,b,c){/*<>*/ /*<>*/i(s[46],_);return a[1]?/*<>*/h(Z,b,c):v[15][1]/*<>*/},function(a){/*<>*/return/*<>*/j(v[15][24],function(d,b,c){/*<>*/var/*<>*/a=/*<>*/i(n[186],b),/*<>*/e=/*<>*/i(/*<>*/i(y[7],function(a){/*<>*/return[0,d,a]/*<>*/}),a),/*<>*/f=/*<>*/i(y[15],e);/*<>*/return/*<>*/h(s[37],f,c)/*<>*/},a,0)/*<>*/}],"Haz3lcore__Statics");return/*<>*/}(globalThis)); -//# 6460 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6438 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -E="\xc2\xb7",r="\n",h=a.jsoo_runtime;/*<>*/function -e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function -f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):h.caml_call_gen(a,[b,c])}/*<>*/function -k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):h.caml_call_gen(a,[b,c,d])}/*<>*/var -b=h.caml_get_global_data(),n=".projector.text textarea",d=b.Haz3lcore__ProjectorBase,g=b.Stdlib,z=b.Util__StringUtil,m=b.Stdlib__List,c=b.Re__Str,q=b.Haz3lcore__JsUtil,p=b.Haz3lcore__Form,j=b.Virtual_dom__Vdom,i=b.Virtual_dom__Node,Y="setting inside:",W=[0,[15,0],"%a"],V=r,T=[0,1],U="Warning: Not focussed",R=[0,"inside",0],S=[0,"cols",0],P=E,Q=E,O="sdfsdf",M="TextArea: not string literal",F="\\n",G=r,I=r,J="\\\\n",X=b.Stdlib__Format,L=b.Haz3lcore__Piece,/*<>*/H=/*<>*/e(c[1],G),/*<>*/s=/*<>*/f(c[16],H,F),/*<>*/K=/*<>*/e(c[1],J),/*<>*/t=/*<>*/f(c[16],K,I);function -o(a){/*<>*/if(0===a[0]){var -b=a[1][2];if(b&&!b[2])/*<>*/return[0,/*<>*/e(t,b[1])]}/*<>*/return 0/*<>*/}function -u(a,b){/*<>*/ /*<>*/var -c=/*<>*/e(s,b);/*<>*/return function(a){/*<>*/return/*<>*/f(L[51],a,0)/*<>*/}(/*<>*/e(/*<>*/e(p[98],a),c))/*<>*/}function -l(a){/*<>*/ /*<>*/var -b=o(a);return b?b[1]:/*<>*/e(g[2],M)/*<>*/}function -N(a){/*<>*/var -b=6;/*<>*/return function(a){/*<>*/return u(b,a)}(a)/*<>*/}function -v(a){/*<>*/return[2,N(/*<>*/e(p[50],a))]/*<>*/}function -w(b,f,c){/*<>*/var/*<>*/a=[0,/*<>*/e(i[5],c),0],g=[0,/*<>*/e(j[1][52],function(a,b){/*<>*/return/*<>*/e(f,v(b))/*<>*/}),0],h=[0,/*<>*/e(j[1][67],function(a){/*<>*/return/*<>*/e(f,[0,b])/*<>*/}),g],l=[0,/*<>*/e(j[1][48],function(a){/*<>*/return/*<>*/e(f,[3,[0,d[62],1]])/*<>*/}),h],m=[0,/*<>*/e(j[1][49],function(a){/*<>*/return/*<>*/e(f,[3,[0,d[62],0]])/*<>*/}),l],/*<>*/n=[0,[0,/*<>*/e(j[1][23],O),m]];/*<>*/return/*<>*/k(i[29],0,n,a)/*<>*/}function -x(a){/*<>*/var/*<>*/b=/*<>*/f(m[11],a,function(a){/*<>*/var -b=[0,/*<>*/e(i[5],P),0];/*<>*/return[0,/*<>*/k(i[52],0,0,0),b]/*<>*/}),/*<>*/c=/*<>*/e(m[15],b),/*<>*/d=[0,/*<>*/e(i[5],Q),0];/*<>*/return/*<>*/f(g[37],d,c)/*<>*/}function -y(a,b,c,d){/*<>*/var/*<>*/m=l(c[1]),/*<>*/h=/*<>*/e(p[49],m),/*<>*/n=[0,w(b,d,h),0],/*<>*/o=x(/*<>*/e(z[10],h)),/*<>*/q=/*<>*/f(g[37],o,n),/*<>*/r=0,s=a[1]?R:0,/*<>*/t=/*<>*/f(g[37],S,s),/*<>*/u=[0,[0,/*<>*/e(j[1][16],t),r]];/*<>*/return/*<>*/k(i[14],0,u,q)/*<>*/}function -A(a,b,c,d){/*<>*/var/*<>*/j=/*<>*/e(q[28][19],a),/*<>*/f=b[1],/*<>*/h=/*<>*/e(q[28][23],j),k=2===h[1]?1:0,n=k?2===h[2]?1:0:k,l=0===h[1]?1:0,o=l?0===h[2]?1:0:l,/*<>*/m=d[1];a:if(0===m[0]){var -i=m[1];b:if(i!=="ArrowDown"){if(i!=="ArrowLeft"){if(i==="ArrowRight"){if(!c)break b;/*<>*/if(f)break b;if(0===d[3])break b;/*<>*/return[0,[0,a]]}if(i!=="ArrowUp")break a}else if(!c&&!f&&0!==d[3]){/*<>*/ /*<>*/e(q[28][24],j);/*<>*/return[0,[0,a]]}if(f&&o)/*<>*/return[0,[1,a,1]];break a}if(f&&n)/*<>*/return[0,[1,a,0]]}return f?T:(/*<>*/e(g[46],U),0)/*<>*/}function -B(a){/*<>*/var/*<>*/b=l(a),/*<>*/d=/*<>*/e(c[1],V),/*<>*/g=/*<>*/f(c[21],d,b);/*<>*/return/*<>*/f(m[20],function(a){/*<>*/return h.caml_ml_string_length(a)},g)/*<>*/}function -C(a){/*<>*/ /*<>*/var -b=B(a);/*<>*/return/*<>*/k(m[26],g[17],0,b)/*<>*/}function -D(a){/*<>*/var -b=2+C(a[1])|0,/*<>*/c=l(a[1]);/*<>*/return[1,[0,/*<>*/e(z[10],c),b]]/*<>*/}h.caml_register_global(31,[0,n,s,t,o,u,function(a){/*<>*/return o(a)/*<>*/},l,v,w,x,y,A,B,C,D,function(c){/*<>*/var -b=[];function -i(a){/*<>*/return e(b[1],a)}h.caml_update_dummy(b,[0,d[31]]);/*<>*/return[0,i,function(a){/*<>*/return/*<>*/k(X[143],W,i,a)/*<>*/},d[34],d[33],d[36],d[35],function(a){/*<>*/return 1/*<>*/},c,function(a,b){/*<>*/return y(c,n,a,b)},D,function(a){/*<>*/if(a[1]!==d[62])/*<>*/return[5,c];/*<>*/var -b=a[2],/*<>*/h=/*<>*/e(g[30],b),/*<>*/i=/*<>*/f(g[28],Y,h);/*<>*/ /*<>*/e(g[46],i);/*<>*/return[5,[0,b]]/*<>*/},function(a,b){/*<>*/return A(n,c,a,b)}]/*<>*/}],"Haz3lcore__TextAreaCore");return/*<>*/}(globalThis)); - -//# 6492 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +_="\xc2\xb7",U="<2>",V="src/haz3lcore/zipper/projectors/TextAreaCore.re.textarea",Z="@ ",y="\n",X=76111832,Y="%a",d="inside",W=963043957,T=143,n=139,i=a.jsoo_runtime,S=i.caml_get_public_method;/*<>*/function +e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function +f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):i.caml_call_gen(a,[b,c])}/*<>*/function +g(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):i.caml_call_gen(a,[b,c,d])}/*<>*/function +aI(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):i.caml_call_gen(a,[b,c,d,e,f,g])}var +aJ=undefined,b=i.caml_get_global_data(),o=V,q=".projector.text textarea",m=b.Haz3lcore__JsUtil,h=b.Stdlib,j=b.Stdlib__Format,L=b.Util__StringUtil,t=b.Stdlib__List,k=b.Re__Str,x=b.Haz3lcore__Form,s=b.Virtual_dom__Vdom,l=b.Virtual_dom__Node,v=b.Ppx_yojson_conv_lib__Yojson_conv,c=b.Ppx_yojson_conv_lib,p=b.Ppx_yojson_conv_lib__Yojson_conv_error,A=b.Sexplib__Std,aH="setting inside:",aE=[0,[15,0],Y],aD=y,aB=[0,1],aC="Warning: Not focussed",az=[0,d,0],aA=[0,"cols",0],ax=_,ay=_,aw="sdfsdf",at="TextArea: not string literal",$=[0,[18,[1,[0,[11,U,0],U]],[11,"{ ",0]],"@[<2>{ "],aa=d,ab=[0,[18,[1,[0,0,""]],[2,0,[11," =",[17,[0,Z,1,0],0]]]],"@[%s =@ "],ac=[0,[9,0,0],"%B"],ad=[0,[17,0,0],"@]"],ae=[0,[17,[0,Z,1,0],[12,125,[17,0,0]]],"@ }@]"],af=[0,[15,0],Y],al=d,ak=d,aj=[0,d],ah=d,ag=V,am="\\n",an=y,ap=y,aq="\\\\n",aF=[0,0],aG=b.Haz3lcore__ProjectorBase,av=b.Virtual_dom__Effect,as=b.Haz3lcore__Piece,ai=b.Sexplib0__Sexp_conv_record;/*<>*/function +u(a,b){/*<>*/ /*<>*/f(j[n],a,$);/*<>*/ /*<>*/g(j[n],a,ab,aa);var +c=b[1];/*<>*/ /*<>*/e(/*<>*/f(j[n],a,ac),c);/*<>*/ /*<>*/f(j[n],a,ad);/*<>*/return/*<>*/f(j[n],a,ae)/*<>*/}/*<>*/function +z(a){/*<>*/return/*<>*/aI(ai[3],ag,[0,ah,1,A[7],0],function(a){/*<>*/return a!==d?-1:0/*<>*/},0,function(a){/*<>*/return[0,a[1]]/*<>*/},a)/*<>*/}function +B(a){/*<>*/return[1,[0,[1,[0,aj,[0,/*<>*/e(A[6],a[1]),0]]],0]]/*<>*/}/*<>*/function +C(a){/*<>*/if(typeof +a!=="number"&&W===a[1]){/*<>*/var/*<>*/b=[0,0],/*<>*/h=[0,0],/*<>*/i=[0,0];/*<>*/(function(a){/*<>*/var +f=a;/*<>*/for(;;){if(!f)/*<>*/return;var +j=f[1],g=j[1],k=f[2],l=j[2];if(g!==d){/*<>*/if(/*<>*/e(c[2],v[22]))i[1]=[0,g,/*<>*/e(c[2],i)]}else if(/*<>*/e(c[2],b))h[1]=[0,g,/*<>*/e(c[2],h)];else +b[1]=[0,/*<>*/e(v[45][18],l)];f=k}/*<>*/}(a[2]));if(/*<>*/e(c[2],h)){/*<>*/ /*<>*/var +k=/*<>*/e(c[2],h);/*<>*/return/*<>*/g(p[10],o,k,a)}if(/*<>*/e(c[2],i)){/*<>*/ /*<>*/var +l=/*<>*/e(c[2],i);/*<>*/return/*<>*/g(p[11],o,l,a)}/*<>*/ /*<>*/var +j=/*<>*/e(c[2],b);if(j)/*<>*/return[0,j[1]];/*<>*/ /*<>*/var +m=[0,[0,0===/*<>*/e(c[2],b)?1:0,ak],0];/*<>*/return/*<>*/g(p[13],o,a,m)}/*<>*/return/*<>*/f(p[14],o,a)/*<>*/}function +D(a){/*<>*/return[0,W,[0,[0,al,e(v[45][2],a[1])],0]]/*<>*/}/*<>*/var/*<>*/ao=/*<>*/e(k[1],an),/*<>*/E=/*<>*/f(k[16],ao,am),/*<>*/ar=/*<>*/e(k[1],aq),/*<>*/F=/*<>*/f(k[16],ar,ap);function +w(a){/*<>*/if(0===a[0]){var +b=a[1][2];if(b&&!b[2])/*<>*/return[0,/*<>*/e(F,b[1])]}/*<>*/return 0/*<>*/}function +G(a,b){/*<>*/ /*<>*/var +c=/*<>*/e(E,b);/*<>*/return function(a){/*<>*/return/*<>*/f(as[51],a,0)/*<>*/}(/*<>*/e(/*<>*/e(x[98],a),c))/*<>*/}function +r(a){/*<>*/ /*<>*/var +b=w(a);return b?b[1]:/*<>*/e(h[2],at)/*<>*/}function +au(a){/*<>*/var +b=6;/*<>*/return function(a){/*<>*/return G(b,a)}(a)/*<>*/}function +H(a){/*<>*/return[2,au(/*<>*/e(x[50],a))]/*<>*/}function +I(b,d,c){/*<>*/var/*<>*/a=[0,/*<>*/e(l[5],c),0],f=[0,/*<>*/e(s[1][52],function(a,b){/*<>*/return/*<>*/e(d,H(b))/*<>*/}),0],h=[0,/*<>*/e(s[1][67],function(a){/*<>*/(function(a,b){/*<>*/a.focus();return}(/*<>*/e(m[2],b),function(a){/*<>*/return/*<>*/e(S(a,X,53),a)/*<>*/}));/*<>*/return av[1]/*<>*/}),f],/*<>*/i=[0,[0,/*<>*/e(s[1][23],aw),h]];/*<>*/return/*<>*/g(l[29],0,i,a)/*<>*/}function +J(a){/*<>*/var/*<>*/b=/*<>*/f(t[11],a,function(a){/*<>*/var +b=[0,/*<>*/e(l[5],ax),0];/*<>*/return[0,/*<>*/g(l[52],0,0,0),b]/*<>*/}),/*<>*/c=/*<>*/e(t[15],b),/*<>*/d=[0,/*<>*/e(l[5],ay),0];/*<>*/return/*<>*/f(h[37],d,c)/*<>*/}function +K(a,b,c,d){/*<>*/var/*<>*/j=r(c[1]),/*<>*/i=/*<>*/e(x[49],j),/*<>*/k=[0,I(b,d,i),0],/*<>*/m=J(/*<>*/e(L[10],i)),/*<>*/n=/*<>*/f(h[37],m,k),/*<>*/o=0,p=a[1]?az:0,/*<>*/q=/*<>*/f(h[37],aA,p),/*<>*/t=[0,[0,/*<>*/e(s[1][16],q),o]];/*<>*/return/*<>*/g(l[14],0,t,n)/*<>*/}function +M(a,b,c,d){/*<>*/var/*<>*/j=/*<>*/e(m[28][19],a),/*<>*/f=b[1],/*<>*/g=/*<>*/e(m[28][23],j),k=2===g[1]?1:0,o=k?2===g[2]?1:0:k,l=0===g[1]?1:0,p=l?0===g[2]?1:0:l,/*<>*/n=d[1];a:if(0===n[0]){var +i=n[1];b:if(i!=="ArrowDown"){if(i!=="ArrowLeft"){if(i==="ArrowRight"){if(!c)break b;/*<>*/if(f)break b;if(0===d[3])break b;/*<>*/return[0,[0,a]]}if(i!=="ArrowUp")break a}else if(!c&&!f&&0!==d[3]){/*<>*/ /*<>*/e(m[28][24],j);/*<>*/return[0,[0,a]]}if(f&&p)/*<>*/return[0,[1,a,1]];break a}if(f&&o)/*<>*/return[0,[1,a,0]]}return f?aB:(/*<>*/e(h[46],aC),0)/*<>*/}function +N(a){/*<>*/var/*<>*/b=r(a),/*<>*/c=/*<>*/e(k[1],aD),/*<>*/d=/*<>*/f(k[21],c,b);/*<>*/return/*<>*/f(t[20],function(a){/*<>*/return i.caml_ml_string_length(a)},d)/*<>*/}function +O(a){/*<>*/ /*<>*/var +b=N(a);/*<>*/return/*<>*/g(t[26],h[17],0,b)/*<>*/}function +P(a,b){/*<>*/var +c=2+O(b[1])|0,/*<>*/d=r(b[1]);/*<>*/return[1,[0,/*<>*/e(L[10],d),c]]/*<>*/}var +Q=[];function +R(a){/*<>*/return e(Q[1],a)}i.caml_update_dummy(Q,[0,u]);i.caml_register_global(55,[0,u,function(a){/*<>*/return/*<>*/g(j[T],af,u,a)/*<>*/},z,B,C,D,q,E,F,w,G,function(a){/*<>*/return w(a)/*<>*/},r,H,I,J,K,M,N,O,P,[0,R,function(a){/*<>*/return/*<>*/g(j[T],aE,R,a)/*<>*/},B,z,D,C,aF,function(a){/*<>*/return 1/*<>*/},function(c){/*<>*/return function(a,b){/*<>*/return K(c,q,a,b)}},P,function(a,b){/*<>*/if(b[1]!==aG[44])/*<>*/return a;var +c=b[2];/*<>*/(function(a,b){/*<>*/a.focus();return}(/*<>*/e(m[2],q),function(a){/*<>*/return/*<>*/e(S(a,X,54),a)/*<>*/}));/*<>*/var/*<>*/d=/*<>*/e(h[30],c),/*<>*/g=/*<>*/f(h[28],aH,d);/*<>*/ /*<>*/e(h[46],g);/*<>*/return[0,c]/*<>*/},function(a,b,c){/*<>*/return M(q,a,b,c)}]],"Haz3lcore__TextAreaCore");return/*<>*/}(globalThis)); + +//# 6485 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -aR="textArea",aS="src/haz3lcore/zipper/Projector.re.proj_ret",a1="slidef",w="z",a0="checkbox",E="Checkbox",aQ="<2>",N="@ ",C="SliderF",aZ="type",aP=" =",B="Info",U="%a",A="Fold",aX="sliderF",aY="check",z="Slider",aN="slide",aO="",aW=963043957,aV="slider",M="fold",D="TextArea",aL="@]",aM="src/haz3lcore/zipper/Projector.re.kind",aU="@[%s =@ ",aT="text",T=143,u=139,v=-976970511,r=848054398,t="syntax_map",aK="info",l=a.jsoo_runtime,aJ=l.caml_equal,aI=l.caml_string_compare,aH=l.caml_update_dummy;/*<>*/function -d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function -e(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):l.caml_call_gen(a,[b,c])}/*<>*/function -p(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):l.caml_call_gen(a,[b,c,d])}/*<>*/function -cV(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):l.caml_call_gen(a,[b,c,d,e,f,g])}var -c=l.caml_get_global_data(),m=aM,o=aM,L=aS,j=c.Haz3lcore__Piece,f=c.Haz3lcore__ZipperBase,q=c.Stdlib__List,k=c.Haz3lcore__Id,g=c.Stdlib__Format,h=c.Ppx_yojson_conv_lib,i=c.Ppx_yojson_conv_lib__Yojson_conv_error,x=c.Haz3lcore__Segment,at=c.Util__ListUtil,J=c.Stdlib__Option,I=c.Haz3lcore__Siblings,H=c.Stdlib__String,aj=c.Stdlib,n=c.Sexplib0__Sexp_conv_error,b=c.Haz3lcore__ProjectorBase,cW=undefined,cy=[0,[18,[1,[0,[11,aQ,0],aQ]],[11,"{ ",0]],"@[<2>{ "],cz=w,cA=[0,[18,[1,[0,0,aO]],[2,0,[11,aP,[17,[0,N,1,0],0]]]],aU],cB=[0,[17,0,0],aL],cC=[0,[12,59,[17,[0,N,1,0],0]],";@ "],cD=t,cE=[0,[18,[1,[0,0,aO]],[2,0,[11,aP,[17,[0,N,1,0],0]]]],aU],cF=[0,[17,0,0],aL],cG=[0,[17,[0,N,1,0],[12,125,[17,0,0]]],"@ }@]"],cH=[0,[15,0],U],cR=t,cS=w,cP=t,cQ=w,cM=[0,t],cN=[0,w],cJ=t,cK=w,cw=[0,0,0],cv="Unknown projector kind",cp=M,cq=aZ,cr=aY,cs=aN,ct=a1,cu=aT,cj=[0,0],ck=[1,0],cl=[2,0],cm=[3,0],cn=[4,0],co=[5,[0,0]],bW=A,bX=B,bY=E,bZ=z,b0=C,b1=D,b2=[0,[15,0],U],b9=[0,r,[0,[0,v,A],0]],b_=[0,r,[0,[0,v,B],0]],b$=[0,r,[0,[0,v,E],0]],ca=[0,r,[0,[0,v,z],0]],cb=[0,r,[0,[0,v,C],0]],cc=[0,r,[0,[0,v,D],0]],b3=[0,A],b4=[0,B],b5=[0,E],b6=[0,z],b7=[0,C],b8=[0,D],bV=[0,[15,0],U],cI=aS,cO=c.Ppx_yojson_conv_lib__Yojson_conv,cL=c.Sexplib0__Sexp_conv_record,cx=c.Haz3lcore__Mold,cd=c.Haz3lcore__FoldCore,ce=c.Haz3lcore__InfoCore,cf=c.Haz3lcore__CheckboxCore,cg=c.Haz3lcore__SliderCore,ch=c.Haz3lcore__SliderFCore,ci=c.Haz3lcore__TextAreaCore,V=b[37],W=b[39],X=b[40],Y=b[41],Z=b[42],G=b[43],_=b[56],$=b[58],aa=b[59],ab=b[60],ac=b[61],ad=[];function -ae(a){/*<>*/return d(ad[1],a)}var -a2=b[1],a3=b[2],a4=b[3],a5=b[4],a6=b[5],a7=b[6],a8=b[7],a9=b[8],a_=b[9],a$=b[10],ba=b[11],bb=b[12],bc=b[13],bd=b[14],be=b[15],bf=b[16],bg=b[17],bh=b[18],bi=b[19],bj=b[20],bk=b[21],bl=b[22],bm=b[23],bn=b[24],bo=b[25],bp=b[26],bq=b[27],br=b[28],bs=b[29],bt=b[30],bu=b[31],bv=b[32],bw=b[33],bx=b[34],by=b[35],bz=b[36],bA=b[38],bB=b[44],bC=b[45],bD=b[46],bE=b[47],bF=b[48],bG=b[49],bH=b[50],bI=b[51],bJ=b[52],bK=b[53],bL=b[54],bM=b[55],bN=b[57],bO=b[62],bP=b[63],bQ=b[64],bR=b[65],bS=b[66],bT=b[67],bU=b[68];aH(ad,[0,V]);/*<>*/function -af(a,b){/*<>*/switch(b){case -0:/*<>*/return/*<>*/e(g[13],a,bW);case -1:/*<>*/return/*<>*/e(g[13],a,bX);case -2:/*<>*/return/*<>*/e(g[13],a,bY);case -3:/*<>*/return/*<>*/e(g[13],a,bZ);case -4:/*<>*/return/*<>*/e(g[13],a,b0);default:/*<>*/return/*<>*/e(g[13],a,b1)}/*<>*/}function -O(a){/*<>*/switch(a[0]){case -0:/*<>*/return/*<>*/d(cd[1],a[1]);case -1:/*<>*/return/*<>*/d(ce[9],a[1]);case -2:/*<>*/return/*<>*/d(cf[9],a[1]);case -3:/*<>*/return/*<>*/d(cg[5],a[1]);case -4:/*<>*/return/*<>*/d(ch[6],a[1]);default:/*<>*/return/*<>*/d(ci[16],a[1])}/*<>*/}function -ag(a){/*<>*/switch(a[0]){case -0:/*<>*/return 0;case -1:/*<>*/return 1;case -2:/*<>*/return 2;case -3:/*<>*/return 3;case -4:/*<>*/return 4;default:/*<>*/return 5}/*<>*/}function -ah(a){/*<>*/switch(a){case -0:/*<>*/return cj;case -1:/*<>*/return ck;case -2:/*<>*/return cl;case -3:/*<>*/return cm;case -4:/*<>*/return cn;default:/*<>*/return co}/*<>*/}function -ai(a){/*<>*/switch(a){case -0:/*<>*/return cp;case -1:/*<>*/return cq;case -2:/*<>*/return cr;case -3:/*<>*/return cs;case -4:/*<>*/return ct;default:/*<>*/return cu}/*<>*/}function -ak(a,b){/*<>*/return/*<>*/d(O(a)[10],b)/*<>*/}function -al(a,b){/*<>*/ /*<>*/var -c=ak(a,b);if(0===c[0])/*<>*/return[0,/*<>*/e(H[1],c[1],32),0];/*<>*/var -d=c[1],f=d[1],/*<>*/g=/*<>*/e(H[1],d[2],32),/*<>*/h=/*<>*/e(H[1],f,10);/*<>*/return[0,/*<>*/e(aj[28],h,g),0]/*<>*/}function -am(a,b){/*<>*/var/*<>*/c=/*<>*/e(cx[8],0,0),/*<>*/f=al(a,b);/*<>*/return[0,[0,/*<>*/d(j[30],b[1]),f,c,cw,0]]/*<>*/}function -an(a){/*<>*/return/*<>*/d(j[40],a)/*<>*/}function -F(a,b){/*<>*/if(b){/*<>*/var -c=b[1],/*<>*/f=/*<>*/d(j[30],c);/*<>*/if(/*<>*/e(G[9],f,a)){/*<>*/ /*<>*/var -g=/*<>*/d(j[30],c);return/*<>*/e(G[9],g,a)?[0,/*<>*/d(j[30],c)]:0}}/*<>*/return 0/*<>*/}function -P(a,b){/*<>*/ /*<>*/var -c=F(a,/*<>*/d(I[24],b));/*<>*/return[0,F(a,/*<>*/d(I[23],b)),c]/*<>*/}function -ao(a){/*<>*/var -b=a[3][1],e=b[2],/*<>*/c=/*<>*/d(x[58],[0,b[1],a[1][2]]),g=c[1],/*<>*/h=/*<>*/d(/*<>*/d(f[11],c[2]),a),/*<>*/i=/*<>*/d(/*<>*/d(f[10],[0,g,e]),h);/*<>*/return/*<>*/d(J[2],i)/*<>*/}function -ap(a){/*<>*/var -b=a[3][1],e=b[1],/*<>*/c=/*<>*/d(x[59],[0,a[1][2],b[2]]),g=c[2],/*<>*/h=/*<>*/d(/*<>*/d(f[11],c[1]),a),/*<>*/i=/*<>*/d(/*<>*/d(f[10],[0,e,g]),h);/*<>*/return/*<>*/d(J[2],i)/*<>*/}function -aq(a){/*<>*/var -b=a[3][1],e=b[2],/*<>*/c=/*<>*/d(x[59],[0,b[1],a[1][2]]),g=c[1],/*<>*/h=/*<>*/d(/*<>*/d(f[11],c[2]),a),/*<>*/i=/*<>*/d(/*<>*/d(f[10],[0,g,e]),h);/*<>*/return/*<>*/d(J[2],i)/*<>*/}function -ar(a){/*<>*/var -b=a[3][1],e=b[1],/*<>*/c=/*<>*/d(x[58],[0,a[1][2],b[2]]),g=c[2],/*<>*/h=/*<>*/d(/*<>*/d(f[11],c[1]),a),/*<>*/i=/*<>*/d(/*<>*/d(f[10],[0,e,g]),h);/*<>*/return/*<>*/d(J[2],i)/*<>*/}function -as(a,b){/*<>*/ /*<>*/var -c=F(a,/*<>*/d(at[29],b[2]));/*<>*/return[0,F(a,/*<>*/d(at[14],b[2])),c]/*<>*/}function -s(c,b){/*<>*/ /*<>*/var -a=/*<>*/d(/*<>*/d(q[20],function(a){/*<>*/return/*<>*/d(c,a)/*<>*/}),b);/*<>*/return/*<>*/d(/*<>*/d(q[20],function(a){/*<>*/return au(c,a)}),a)/*<>*/}function -au(a,b){/*<>*/return 0===b[0]?[0,av(a,b[1])]:b/*<>*/}function -av(c,b){/*<>*/ /*<>*/var -a=/*<>*/e(q[20],function(a){/*<>*/return s(c,a)},b[5]);/*<>*/return[0,b[1],b[2],b[3],b[4],a]/*<>*/}function -Q(a,b){/*<>*/ /*<>*/var -c=s(a,b[2]);/*<>*/return[0,s(a,b[1]),c]/*<>*/}function -aw(c,b){/*<>*/var/*<>*/a=/*<>*/e(q[20],function(a){/*<>*/return s(c,a)},b[5][2]),/*<>*/d=[0,/*<>*/e(q[20],function(a){/*<>*/return s(c,a)},b[5][1]),a];/*<>*/return[0,b[1],b[2],b[3],b[4],d]/*<>*/}function -ax(a,b){/*<>*/ /*<>*/var -c=Q(a,b[2]);/*<>*/return[0,aw(a,b[1]),c]/*<>*/}function -ay(c,b){/*<>*/return/*<>*/e(q[20],function(a){/*<>*/return ax(c,a)},b)/*<>*/}function -az(a,b){/*<>*/var -c=b[3],/*<>*/d=s(a,b[2]);/*<>*/return[0,b[1],d,c]/*<>*/}/*<>*/var/*<>*/R=[0,s,au,av,Q,aw,ax,ay,az,function(a,b){/*<>*/var -c=b[5],d=b[4],/*<>*/e=ay(a,b[3][2]),/*<>*/f=[0,Q(a,b[3][1]),e],g=b[2];/*<>*/return[0,az(a,b[1]),g,f,d,c]/*<>*/}],K=[];function -aA(a,b){/*<>*/ /*<>*/e(g[u],a,cy);/*<>*/ /*<>*/p(g[u],a,cA,cz);var -c=b[1];/*<>*/ /*<>*/d(d(K[3],a),c);/*<>*/ /*<>*/e(g[u],a,cB);/*<>*/ /*<>*/e(g[u],a,cC);/*<>*/ /*<>*/p(g[u],a,cE,cD);var -f=b[2];/*<>*/ /*<>*/d(e(K[1],function(a){/*<>*/return d(K[2],a)},a),f);/*<>*/ /*<>*/e(g[u],a,cF);/*<>*/return/*<>*/e(g[u],a,cG)/*<>*/}aH(K,[0,k[15][48],_,f[2]]);/*<>*/ /*<>*/var -y=[0,k[15][1]];function -aB(a,b,c){/*<>*/var/*<>*/f=/*<>*/d(j[30],c),/*<>*/g=/*<>*/e(G[8],f,a);if(!g)/*<>*/return c;/*<>*/var -h=g[1],/*<>*/i=[0,c,0,/*<>*/e(k[15][18],f,b)];y[1]=/*<>*/p(k[15][2],f,c,y[1]);/*<>*/return am(h,i)/*<>*/}function -aC(a,b,c){/*<>*/return/*<>*/aJ(b,/*<>*/d(j[30],c))?/*<>*/d(a,c):c/*<>*/}function -S(a,b,c){/*<>*/ /*<>*/var -e=/*<>*/d(a,b[3][1]);return e?/*<>*/aJ(/*<>*/d(j[30],e[1]),c):0/*<>*/}/*<>*/var -cT=I[23];/*<>*/function -aD(a,b){/*<>*/return S(cT,a,b)}/*<>*/var -cU=I[24];/*<>*/function -aE(a,b){/*<>*/return S(cU,a,b)}function -aF(a,b){/*<>*/var -c=b[3][1],g=c[1],/*<>*/h=/*<>*/e(q[20],a,c[2]),/*<>*/i=[0,/*<>*/e(q[20],a,g),h];/*<>*/return/*<>*/d(/*<>*/d(f[10],i),b)/*<>*/}function -aG(a,b){/*<>*/var +z="z",ah="<2>",y="@ ",ag=" =",af="",ae="@]",ai="@[%s =@ ",n=139,x="syntax_map",h=a.jsoo_runtime,ad=h.caml_equal;/*<>*/function +d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function +e(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):h.caml_call_gen(a,[b,c])}/*<>*/function +w(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):h.caml_call_gen(a,[b,c,d])}/*<>*/function +bs(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):h.caml_call_gen(a,[b,c,d,e,f,g])}var +c=h.caml_get_global_data(),g=c.Haz3lcore__Piece,f=c.Haz3lcore__ZipperBase,i=c.Stdlib__List,k=c.Haz3lcore__Id,j=c.Stdlib__Format,o=c.Haz3lcore__Segment,R=c.Util__ListUtil,u=c.Stdlib__Option,t=c.Haz3lcore__Siblings,s=c.Stdlib__String,b=c.Haz3lcore__ProjectorBase,ba=[0,[18,[1,[0,[11,ah,0],ah]],[11,"{ ",0]],"@[<2>{ "],bb=z,bc=[0,[18,[1,[0,0,af]],[2,0,[11,ag,[17,[0,y,1,0],0]]]],ai],bd=[0,[17,0,0],ae],be=[0,[12,59,[17,[0,y,1,0],0]],";@ "],bf=x,bg=[0,[18,[1,[0,0,af]],[2,0,[11,ag,[17,[0,y,1,0],0]]]],ai],bh=[0,[17,0,0],ae],bi=[0,[17,[0,y,1,0],[12,125,[17,0,0]]],"@ }@]"],bj=[0,[15,0],"%a"],bo=[0,x],bp=[0,z],bl=x,bm=z,a_=[0,0,0],bk="src/haz3lcore/zipper/Projector.re.proj_ret",bn=c.Sexplib0__Sexp_conv_record,a$=c.Haz3lcore__Mold,a9=c.Stdlib,a3=c.Haz3lcore__FoldCore,a4=c.Haz3lcore__InfoCore,a5=c.Haz3lcore__CheckboxCore,a6=c.Haz3lcore__SliderCore,a7=c.Haz3lcore__SliderFCore,a8=c.Haz3lcore__TextAreaCore,r=b[25],F=b[38],G=b[40],H=b[41],l=b[51];function +A(a){/*<>*/switch(a){case +0:return d(l,a3[1]);case +1:return d(l,a4[8]);case +2:return d(l,a5[9]);case +3:return d(l,a6[4]);case +4:return d(l,a7[5]);default:return d(l,a8[22])}/*<>*/}function +I(a,b){/*<>*/ /*<>*/var +c=A(a[1]);/*<>*/return/*<>*/e(c[4],a[2],b)/*<>*/}function +J(a,b){/*<>*/ /*<>*/var +c=I(a,b);if(0===c[0])/*<>*/return[0,/*<>*/e(s[1],c[1],32),0];/*<>*/var +d=c[1],f=d[1],/*<>*/g=/*<>*/e(s[1],d[2],32),/*<>*/h=/*<>*/e(s[1],f,10);/*<>*/return[0,/*<>*/e(a9[28],h,g),0]/*<>*/}function +K(a,b){/*<>*/var/*<>*/c=/*<>*/e(a$[8],0,0),/*<>*/f=J(a,b);/*<>*/return[0,[0,/*<>*/d(g[30],b[1]),f,c,a_,0]]/*<>*/}function +L(a){/*<>*/return/*<>*/d(g[40],a)/*<>*/}function +q(a,b){/*<>*/if(b){/*<>*/var +c=b[1],/*<>*/f=/*<>*/d(g[30],c);/*<>*/if(/*<>*/e(r[9],f,a)){/*<>*/ /*<>*/var +h=/*<>*/d(g[30],c);return/*<>*/e(r[9],h,a)?[0,/*<>*/d(g[30],c)]:0}}/*<>*/return 0/*<>*/}function +B(a,b){/*<>*/ /*<>*/var +c=q(a,/*<>*/d(t[24],b));/*<>*/return[0,q(a,/*<>*/d(t[23],b)),c]/*<>*/}function +M(a){/*<>*/var +b=a[3][1],e=b[2],/*<>*/c=/*<>*/d(o[58],[0,b[1],a[1][2]]),g=c[1],/*<>*/h=/*<>*/d(/*<>*/d(f[11],c[2]),a),/*<>*/i=/*<>*/d(/*<>*/d(f[10],[0,g,e]),h);/*<>*/return/*<>*/d(u[2],i)/*<>*/}function +N(a){/*<>*/var +b=a[3][1],e=b[1],/*<>*/c=/*<>*/d(o[59],[0,a[1][2],b[2]]),g=c[2],/*<>*/h=/*<>*/d(/*<>*/d(f[11],c[1]),a),/*<>*/i=/*<>*/d(/*<>*/d(f[10],[0,e,g]),h);/*<>*/return/*<>*/d(u[2],i)/*<>*/}function +O(a){/*<>*/var +b=a[3][1],e=b[2],/*<>*/c=/*<>*/d(o[59],[0,b[1],a[1][2]]),g=c[1],/*<>*/h=/*<>*/d(/*<>*/d(f[11],c[2]),a),/*<>*/i=/*<>*/d(/*<>*/d(f[10],[0,g,e]),h);/*<>*/return/*<>*/d(u[2],i)/*<>*/}function +P(a){/*<>*/var +b=a[3][1],e=b[1],/*<>*/c=/*<>*/d(o[58],[0,a[1][2],b[2]]),g=c[2],/*<>*/h=/*<>*/d(/*<>*/d(f[11],c[1]),a),/*<>*/i=/*<>*/d(/*<>*/d(f[10],[0,e,g]),h);/*<>*/return/*<>*/d(u[2],i)/*<>*/}function +Q(a,b){/*<>*/ /*<>*/var +c=q(a,/*<>*/d(R[29],b[2]));/*<>*/return[0,q(a,/*<>*/d(R[14],b[2])),c]/*<>*/}function +m(c,b){/*<>*/ /*<>*/var +a=/*<>*/d(/*<>*/d(i[20],function(a){/*<>*/return/*<>*/d(c,a)/*<>*/}),b);/*<>*/return/*<>*/d(/*<>*/d(i[20],function(a){/*<>*/return S(c,a)}),a)/*<>*/}function +S(a,b){/*<>*/return 0===b[0]?[0,T(a,b[1])]:b/*<>*/}function +T(c,b){/*<>*/ /*<>*/var +a=/*<>*/e(i[20],function(a){/*<>*/return m(c,a)},b[5]);/*<>*/return[0,b[1],b[2],b[3],b[4],a]/*<>*/}function +C(a,b){/*<>*/ /*<>*/var +c=m(a,b[2]);/*<>*/return[0,m(a,b[1]),c]/*<>*/}function +U(c,b){/*<>*/var/*<>*/a=/*<>*/e(i[20],function(a){/*<>*/return m(c,a)},b[5][2]),/*<>*/d=[0,/*<>*/e(i[20],function(a){/*<>*/return m(c,a)},b[5][1]),a];/*<>*/return[0,b[1],b[2],b[3],b[4],d]/*<>*/}function +V(a,b){/*<>*/ /*<>*/var +c=C(a,b[2]);/*<>*/return[0,U(a,b[1]),c]/*<>*/}function +W(c,b){/*<>*/return/*<>*/e(i[20],function(a){/*<>*/return V(c,a)},b)/*<>*/}function +X(a,b){/*<>*/var +c=b[3],/*<>*/d=m(a,b[2]);/*<>*/return[0,b[1],d,c]/*<>*/}/*<>*/var/*<>*/D=[0,m,S,T,C,U,V,W,X,function(a,b){/*<>*/var +c=b[5],d=b[4],/*<>*/e=W(a,b[3][2]),/*<>*/f=[0,C(a,b[3][1]),e],g=b[2];/*<>*/return[0,X(a,b[1]),g,f,d,c]/*<>*/}],v=[];function +Y(a,b){/*<>*/ /*<>*/e(j[n],a,ba);/*<>*/ /*<>*/w(j[n],a,bc,bb);var +c=b[1];/*<>*/ /*<>*/d(d(v[3],a),c);/*<>*/ /*<>*/e(j[n],a,bd);/*<>*/ /*<>*/e(j[n],a,be);/*<>*/ /*<>*/w(j[n],a,bg,bf);var +f=b[2];/*<>*/ /*<>*/d(e(v[1],function(a){/*<>*/return d(v[2],a)},a),f);/*<>*/ /*<>*/e(j[n],a,bh);/*<>*/return/*<>*/e(j[n],a,bi)/*<>*/}var +aj=b[1],ak=b[2],al=b[3],am=b[4],an=b[5],ao=b[6],ap=b[7],aq=b[8],ar=b[9],as=b[10],at=b[11],au=b[12],av=b[13],aw=b[14],ax=b[15],ay=b[16],az=b[17],aA=b[18],aB=b[19],aC=b[20],aD=b[21],aE=b[22],aF=b[23],aG=b[24],aH=b[26],aI=b[27],aJ=b[28],aK=b[29],aL=b[30],aM=b[31],aN=b[32],aO=b[33],aP=b[34],aQ=b[35],aR=b[36],aS=b[37],aT=b[39],aU=b[42],aV=b[43],aW=b[44],aX=b[45],aY=b[46],aZ=b[47],a0=b[48],a1=b[49],a2=b[50];h.caml_update_dummy(v,[0,k[15][48],F,f[2]]);/*<>*/ /*<>*/var +p=[0,k[15][1]];function +Z(a,b,c){/*<>*/var/*<>*/f=/*<>*/d(g[30],c),/*<>*/h=/*<>*/e(r[8],f,a);if(!h)/*<>*/return c;/*<>*/var +i=h[1],/*<>*/j=[0,c,0,/*<>*/e(k[15][18],f,b)];p[1]=/*<>*/w(k[15][2],f,c,p[1]);/*<>*/return K(i,j)/*<>*/}function +_(a,b,c){/*<>*/return/*<>*/ad(b,/*<>*/d(g[30],c))?/*<>*/d(a,c):c/*<>*/}function +E(a,b,c){/*<>*/ /*<>*/var +e=/*<>*/d(a,b[3][1]);return e?/*<>*/ad(/*<>*/d(g[30],e[1]),c):0/*<>*/}/*<>*/var +bq=t[23];/*<>*/function +$(a,b){/*<>*/return E(bq,a,b)}/*<>*/var +br=t[24];/*<>*/function +aa(a,b){/*<>*/return E(br,a,b)}function +ab(a,b){/*<>*/var +c=b[3][1],g=c[1],/*<>*/h=/*<>*/e(i[20],a,c[2]),/*<>*/j=[0,/*<>*/e(i[20],a,g),h];/*<>*/return/*<>*/d(/*<>*/d(f[10],j),b)/*<>*/}function +ac(a,b){/*<>*/var c=b[3][1],e=c[2];if(e)var -h=e[2],i=c[1],g=[0,i,[0,/*<>*/d(a,e[1]),h]];else +h=e[2],i=c[1],g=[0,i,[0,/*<>*/d(a,e[1]),h]];else var -g=c;/*<>*/return/*<>*/d(/*<>*/d(f[10],g),b)/*<>*/}l.caml_register_global(120,[0,a2,a3,a4,a5,a6,a7,a8,a9,a_,a$,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,V,bA,W,X,Y,Z,G,bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL,bM,_,bN,$,aa,ab,ac,bO,bP,bQ,bR,bS,bT,bU,ae,function(a){/*<>*/return/*<>*/p(g[T],bV,ae,a)/*<>*/},W,X,Y,Z,af,function(a){/*<>*/return/*<>*/p(g[T],b2,af,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var -b=a[1],d=aI(b,a0);b:{c:{d:{e:{f:{if(0<=d){if(0>*/return 2}/*<>*/return 0}/*<>*/return 1}/*<>*/return 3}/*<>*/return 4}/*<>*/return 5}var -f=a[1];if(!f)/*<>*/return/*<>*/e(n[7],m,a);var -g=f[1];if(0!==g[0])/*<>*/return/*<>*/e(n[6],m,a);var -c=g[1],h=aI(c,a0);b:{c:{d:{e:{f:{if(0<=h){if(0>*/return/*<>*/e(n[3],m,a)}/*<>*/return/*<>*/e(n[3],m,a)}/*<>*/return/*<>*/e(n[3],m,a)}/*<>*/return/*<>*/e(n[3],m,a)}/*<>*/return/*<>*/e(n[3],m,a)}/*<>*/return/*<>*/e(n[3],m,a)}/*<>*/return/*<>*/e(n[8],m,a)/*<>*/},function(a){/*<>*/switch(a){case -0:/*<>*/return b3;case -1:/*<>*/return b4;case -2:/*<>*/return b5;case -3:/*<>*/return b6;case -4:/*<>*/return b7;default:/*<>*/return b8}/*<>*/},function(a){/*<>*/if(typeof -a!=="number"&&r===a[1]){var -b=a[2];if(!b)/*<>*/return/*<>*/e(i[7],o,a);var -d=b[1];if(typeof -d!=="number"){var -f=d[1];if(v===f){var -c=d[2];if(c===E)return b[2]?/*<>*/e(i[3],o,a):2;if(c===A)return b[2]?/*<>*/e(i[3],o,a):0;if(c===B)return b[2]?/*<>*/e(i[3],o,a):1;if(c===z)return b[2]?/*<>*/e(i[3],o,a):3;if(c===C)return b[2]?/*<>*/e(i[3],o,a):4;if(c===D)return b[2]?/*<>*/e(i[3],o,a):5}else if(r===f)/*<>*/return/*<>*/e(i[6],o,a)}}/*<>*/return/*<>*/e(i[8],o,a)/*<>*/},function(a){/*<>*/switch(a){case -0:/*<>*/return b9;case -1:/*<>*/return b_;case -2:/*<>*/return b$;case -3:/*<>*/return ca;case -4:/*<>*/return cb;default:/*<>*/return cc}/*<>*/},O,ag,ah,ai,function(a){/*<>*/return a!==aY?a!==M?a!==aN?a!==a1?a!==aT?a!==aZ?/*<>*/d(aj[2],cv):1:5:4:3:0:2/*<>*/},function(a){/*<>*/return ai(ag(a))/*<>*/},ak,function(a){/*<>*/if(0===a[0]){var -b=a[1][2];if(b&&!b[2])return 0===/*<>*/l.caml_ml_string_length(/*<>*/d(H[24],b[1]))?1:0}/*<>*/return 0/*<>*/},al,am,an,function(a,b){/*<>*/var/*<>*/c=ah(a),/*<>*/e=/*<>*/d(O(c)[7],b),/*<>*/f=e?an(b):e;return f?[0,c]:0/*<>*/},F,P,[0,ao,ap,function(a){/*<>*/var -c=a[1][1],/*<>*/b=P(a[5],a[3][1]);if(c){if(b[2])/*<>*/return ap(a)}else if(b[1])/*<>*/return ao(a);/*<>*/return 0/*<>*/},aq,ar,as,function(a){/*<>*/var -b=a[1],/*<>*/d=b[1],/*<>*/c=as(a[5],b);if(d){if(c[2])/*<>*/return ar(a)}else if(c[1])/*<>*/return aq(a);/*<>*/return 0/*<>*/}],[0,function(a,b){/*<>*/ /*<>*/var -c=P(b[5],b[3][1]);if(a){if(c[2]){/*<>*/ /*<>*/var -g=/*<>*/d(x[59],b[3][1]);/*<>*/return[0,/*<>*/e(f[10],g,b)]}}else if(c[1]){/*<>*/ /*<>*/var -h=/*<>*/d(x[58],b[3][1]);/*<>*/return[0,/*<>*/e(f[10],h,b)]}/*<>*/return 0/*<>*/}],R,aA,function(a){/*<>*/return/*<>*/p(g[T],cH,aA,a)/*<>*/},function(a){/*<>*/ /*<>*/var -b=[0,cJ,1,/*<>*/d(k[15][45],$),0];/*<>*/return/*<>*/cV(cL[3],cI,[0,cK,1,f[4],b],function(a){/*<>*/return a!==t?a!==w?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,cM,[0,/*<>*/e(k[15][44],aa,a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,cN,[0,/*<>*/d(f[5],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof -a!=="number"&&aW===a[1]){/*<>*/var/*<>*/g=[0,0],/*<>*/j=[0,0],/*<>*/b=[0,0],/*<>*/l=[0,0];/*<>*/(function(a){/*<>*/var -i=a;/*<>*/for(;;){if(!i)/*<>*/return;var -m=i[1],n=m[2],c=m[1],o=i[2];if(c!==t)if(c!==w){/*<>*/if(/*<>*/d(h[2],cO[22]))l[1]=[0,c,/*<>*/d(h[2],l)]}else if(/*<>*/d(h[2],g))b[1]=[0,c,/*<>*/d(h[2],b)];else -g[1]=[0,/*<>*/d(f[6],n)];else if(/*<>*/d(h[2],j))b[1]=[0,c,/*<>*/d(h[2],b)];else -j[1]=[0,e(k[15][47],ab,n)];i=o}/*<>*/}(a[2]));if(/*<>*/d(h[2],b)){/*<>*/ /*<>*/var -n=/*<>*/d(h[2],b);/*<>*/return/*<>*/p(i[10],L,n,a)}if(/*<>*/d(h[2],l)){/*<>*/ /*<>*/var -o=/*<>*/d(h[2],l);/*<>*/return/*<>*/p(i[11],L,o,a)}/*<>*/var/*<>*/c=/*<>*/d(h[2],g),/*<>*/m=/*<>*/d(h[2],j);if(c&&m)/*<>*/return[0,c[1],m[1]];/*<>*/var/*<>*/q=[0,[0,0===/*<>*/d(h[2],j)?1:0,cP],0],/*<>*/r=[0,[0,0===/*<>*/d(h[2],g)?1:0,cQ],q];/*<>*/return/*<>*/p(i[13],L,a,r)}/*<>*/return/*<>*/e(i[14],L,a)/*<>*/},function(a){/*<>*/var -b=a[1],c=[0,[0,cR,e(k[15][46],ac,a[2])],0];/*<>*/return[0,aW,[0,[0,cS,d(f[7],b)],c]]/*<>*/},[0,y,aB,function(a,b){/*<>*/y[1]=k[15][1];/*<>*/if(/*<>*/d(k[15][31],a[5]))/*<>*/return[0,a,y[1]];/*<>*/var -c=a[5],/*<>*/f=/*<>*/e(R[9],function(a){/*<>*/return aB(c,b,a)},a);/*<>*/return[0,f,y[1]]/*<>*/}],[0,aC,S,aD,aE,aF,aG,function(f,b,c){function -a(a){/*<>*/return aC(function(a){/*<>*/var/*<>*/b=/*<>*/d(f,a),/*<>*/c=/*<>*/d(j[30],a);/*<>*/return/*<>*/d(/*<>*/d(j[50],c),b)/*<>*/},b,a)/*<>*/}/*<>*/return aD(c,b)?aF(a,c):aE(c,b)?aG(a,c):/*<>*/e(R[9],a,c)/*<>*/}]],"Haz3lcore__Projector");return/*<>*/}(globalThis)); - -//# 6627 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +g=c;/*<>*/return/*<>*/d(/*<>*/d(f[10],g),b)/*<>*/}h.caml_register_global(38,[0,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,r,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,F,aT,G,H,aU,aV,aW,aX,aY,aZ,a0,a1,a2,l,A,I,function(a){/*<>*/if(0===a[0]){var +b=a[1][2];if(b&&!b[2])return 0===/*<>*/h.caml_ml_string_length(/*<>*/d(s[24],b[1]))?1:0}/*<>*/return 0/*<>*/},J,K,L,function(a,b){/*<>*/var/*<>*/c=A(a),/*<>*/e=/*<>*/d(c[2],b),/*<>*/f=e?L(b):e;return f?[0,[0,a,c[1]]]:0/*<>*/},q,B,[0,M,N,function(a){/*<>*/var +c=a[1][1],/*<>*/b=B(a[5],a[3][1]);if(c){if(b[2])/*<>*/return N(a)}else if(b[1])/*<>*/return M(a);/*<>*/return 0/*<>*/},O,P,Q,function(a){/*<>*/var +b=a[1],/*<>*/d=b[1],/*<>*/c=Q(a[5],b);if(d){if(c[2])/*<>*/return P(a)}else if(c[1])/*<>*/return O(a);/*<>*/return 0/*<>*/}],[0,function(a,b){/*<>*/ /*<>*/var +c=B(b[5],b[3][1]);if(a){if(c[2]){/*<>*/ /*<>*/var +g=/*<>*/d(o[59],b[3][1]);/*<>*/return[0,/*<>*/e(f[10],g,b)]}}else if(c[1]){/*<>*/ /*<>*/var +h=/*<>*/d(o[58],b[3][1]);/*<>*/return[0,/*<>*/e(f[10],h,b)]}/*<>*/return 0/*<>*/}],D,Y,function(a){/*<>*/return/*<>*/w(j[143],bj,Y,a)/*<>*/},function(a){/*<>*/ /*<>*/var +b=[0,bl,1,/*<>*/d(k[15][45],G),0];/*<>*/return/*<>*/bs(bn[3],bk,[0,bm,1,f[4],b],function(a){/*<>*/return a!==x?a!==z?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bo,[0,/*<>*/e(k[15][44],H,a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bp,[0,/*<>*/d(f[5],b),0]]],c]]/*<>*/},[0,p,Z,function(a,b){/*<>*/p[1]=k[15][1];/*<>*/if(/*<>*/d(k[15][31],a[5]))/*<>*/return[0,a,p[1]];/*<>*/var +c=a[5],/*<>*/f=/*<>*/e(D[9],function(a){/*<>*/return Z(c,b,a)},a);/*<>*/return[0,f,p[1]]/*<>*/}],[0,_,E,$,aa,ab,ac,function(f,b,c){function +a(a){/*<>*/return _(function(a){/*<>*/var/*<>*/b=/*<>*/d(f,a),/*<>*/c=/*<>*/d(g[30],a);/*<>*/return/*<>*/d(/*<>*/d(g[50],c),b)/*<>*/},b,a)/*<>*/}/*<>*/return $(c,b)?ab(a,c):aa(c,b)?ac(a,c):/*<>*/e(D[9],a,c)/*<>*/}]],"Haz3lcore__Projector");return/*<>*/}(globalThis)); + +//# 6568 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var E="ByChar",aR="up",aQ="src/haz3lcore/zipper/Zipper.re.chunkiness",D="Down",V="<2>",aW="@ ",aV="left",aP="byChar",aO="@])",aU="%a",B="ByToken",A="MonoByChar",aT="src/haz3lcore/zipper/Zipper.re.planar",aN="monoByChar",ai="src/haz3lcore/zipper/Zipper.re",C="Up",aM=143,U=139,aL="byToken",aS="down",n=-976970511,m=848054398,u="Left",aJ="right",t="Right",aK="base_point",q=a.jsoo_runtime,ah=q.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}/*<>*/function @@ -437489,18 +437430,18 @@ P(a,b){/*<>*/var c=b[1];/*<>*/return[0,c,H(0,[0,a,b[2],b[3],b[4],b[5]])]/*<>*/}function at(a,b){/*<>*/return P(a,b)[2]/*<>*/}function ae(b){/*<>*/ /*<>*/var -a=/*<>*/e(I[95][3],b);if(a)/*<>*/return[0,a[1]];/*<>*/ /*<>*/var +a=/*<>*/e(I[61][3],b);if(a)/*<>*/return[0,a[1]];/*<>*/ /*<>*/var c=/*<>*/f(j[10],b[1][1],b[3]);/*<>*/return/*<>*/f(G[10][2],c,function(a){/*<>*/var c=a[2],/*<>*/d=/*<>*/f(g[27],a[1],b[1]);/*<>*/return[0,d,b[2],c,b[4],b[5]]/*<>*/})/*<>*/}function au(a){/*<>*/ /*<>*/var b=/*<>*/e(g[28],a[1]);if(!b){/*<>*/ /*<>*/var n=/*<>*/e(g[25],a[1]);/*<>*/return ae([0,n,a[2],a[3],a[4],a[5]])}/*<>*/var -c=b[1],d=c[2],i=c[1],/*<>*/h=/*<>*/e(I[95][7],a);if(h)/*<>*/return[0,h[1]];/*<>*/var +c=b[1],d=c[2],i=c[1],/*<>*/h=/*<>*/e(I[61][7],a);if(h)/*<>*/return[0,h[1]];/*<>*/var k=a[3],/*<>*/l=/*<>*/e(/*<>*/f(j[8],d[1],i),k),/*<>*/m=/*<>*/e(j[23],l);/*<>*/return[0,[0,d,a[2],m,a[4],a[5]]]/*<>*/}function av(a,b){/*<>*/var c=b[1],d=c[3],f=c[2],/*<>*/g=[0,/*<>*/e(aw[7],a),f,d];/*<>*/return H(0,[0,g,b[2],b[3],b[4],b[5]])/*<>*/}function Q(c,b){/*<>*/if(!/*<>*/e(g[26],b[1]))/*<>*/return[0,av(c,b)];/*<>*/ /*<>*/var -a=/*<>*/f(I[96][1],c,b);if(a)/*<>*/return[0,a[1]];/*<>*/ /*<>*/var +a=/*<>*/f(I[62][1],c,b);if(a)/*<>*/return[0,a[1]];/*<>*/ /*<>*/var d=/*<>*/f(j[10],c,b[3]);/*<>*/return/*<>*/f(G[10][2],d,function(a){/*<>*/var d=a[2],g=a[1],/*<>*/h=/*<>*/e(aw[7],c),/*<>*/i=/*<>*/e(/*<>*/f(j[8],h,g),d),/*<>*/k=/*<>*/e(j[23],i);/*<>*/return[0,b[1],b[2],k,b[4],b[5]]/*<>*/})/*<>*/}function ax(a,b){/*<>*/return a===b[1][1]?ae(b):au(b)/*<>*/}function @@ -437527,7 +437468,7 @@ aE(a){/*<>*/var/*<>*/}function aF(a,b){/*<>*/ /*<>*/var d=aE(b);if(!d)/*<>*/return bA;/*<>*/var -g=d[1],c=g[1],l=g[2],/*<>*/m=b[5],/*<>*/n=/*<>*/e(y[30],c),/*<>*/i=/*<>*/f(W[43][8],n,m),/*<>*/o=/*<>*/e(I[88],c)?c:i?/*<>*/f(I[90],i[1],[0,c,0,0]):c,/*<>*/j=/*<>*/e(y[38],o);/*<>*/if(l){/*<>*/ /*<>*/var +g=d[1],c=g[1],l=g[2],/*<>*/m=b[5],/*<>*/n=/*<>*/e(y[30],c),/*<>*/i=/*<>*/f(W[25][8],n,m),/*<>*/o=/*<>*/e(I[54],c)?c:i?/*<>*/f(I[56],i[1],[0,c,0,0]):c,/*<>*/j=/*<>*/e(y[38],o);/*<>*/if(l){/*<>*/ /*<>*/var p=/*<>*/e(k[6],j);/*<>*/return/*<>*/h(ag[40],by,p,a)[1]}/*<>*/ /*<>*/var q=/*<>*/e(aA[28],j);/*<>*/return/*<>*/h(ag[40],bz,q,a)[2]/*<>*/}function S(a){/*<>*/return aa(a)?0===a[4]?1:0:0/*<>*/}function @@ -437544,7 +437485,7 @@ c=Q(1,b);if(!c)/*<>*/return b;b=c[1]}/*<< b=a;/*<>*/for(;;)/*<>*/if(S(b)){/*<>*/var/*<>*/d=c(b,b),/*<>*/e=K(1,d);if(!e)/*<>*/return d;b=O(1,e[1])}else{/*<>*/var/*<>*/f=i(b),/*<>*/g=c(f,f),/*<>*/h=K(1,g);if(!h)/*<>*/return g;b=O(1,h[1])}/*<>*/}([0,a[1],a[2],a[3],0,a[5]])/*<>*/}function T(a,b,c){/*<>*/var d=b?ac(c):c,/*<>*/e=a?aI(d):d;/*<>*/return ad([0,b],e)/*<>*/}var/*<>*/bB=0,bC=0,/*<>*/bD=1,bE=1,/*<>*/bF=1,bG=0;q.caml_register_global(101,[0,aj,aX,aY,ak,al,aZ,a0,a1,am,a2,a3,a4,M,function(a){/*<>*/var -b=W[43][7],/*<>*/c=[0,[0,0,[0,[1,[0,/*<>*/e(F[5],0),0]],0]],0];/*<>*/return[0,/*<>*/h(g[19],0,0,0),0,c,0,b]/*<>*/},function(a){/*<>*/return/*<>*/e(F[5],0)/*<>*/},N,function(a){/*<>*/return/*<>*/h(l[aM],a8,N,a)/*<>*/},X,Y,Z,_,an,function(a){/*<>*/return/*<>*/h(l[aM],bj,an,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var +b=W[25][7],/*<>*/c=[0,[0,0,[0,[1,[0,/*<>*/e(F[5],0),0]],0]],0];/*<>*/return[0,/*<>*/h(g[19],0,0,0),0,c,0,b]/*<>*/},function(a){/*<>*/return/*<>*/e(F[5],0)/*<>*/},N,function(a){/*<>*/return/*<>*/h(l[aM],a8,N,a)/*<>*/},X,Y,Z,_,an,function(a){/*<>*/return/*<>*/h(l[aM],bj,an,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var d=a[1];b:if(d!==D){c:if(d!==u){d:if(d!==t){if(d!==C){if(d===aS)break b;if(d===aV)break c;if(d===aJ)break d;if(d!==aR)break a}/*<>*/return 0}/*<>*/return/*<>*/f(c[5],o,a)}/*<>*/return/*<>*/f(c[5],o,a)}/*<>*/return 1}var e=a[1];if(!e)/*<>*/return/*<>*/f(c[7],o,a);var j=e[1];if(0!==j[0])/*<>*/return/*<>*/f(c[6],o,a);var @@ -437566,7 +437507,7 @@ a==="number"?0===a?bo:bp:0===a[0]?[0,m,[0,bq,[0,_(a[1]),0]]]:[0,m,[0,br,[0,_(a[1 a==="number"?0===a?0:1:0===a[0]?0:1/*<>*/},ao,function(b){function c(a){/*<>*/return b/*<>*/}/*<>*/return function(a){/*<>*/return ao(c,a)}/*<>*/},function(a){/*<>*/var b=a[5],c=a[4],/*<>*/d=/*<>*/e(j[14],a[3]);/*<>*/return[0,a[1],a[2],d,c,b]/*<>*/},ap,function(a){/*<>*/var -b=W[43][7];/*<>*/return[0,/*<>*/h(g[19],0,0,0),0,[0,[0,a,0],0],0,b]/*<>*/},aa,aq,ar,function(a){/*<>*/ /*<>*/var +b=W[25][7];/*<>*/return[0,/*<>*/h(g[19],0,0,0),0,[0,[0,a,0],0],0,b]/*<>*/},aa,aq,ar,function(a){/*<>*/ /*<>*/var b=ar(a);/*<>*/return[0,aq(a),b]/*<>*/},O,as,function(c,b){/*<>*/return function(a){/*<>*/return O(c,a)}(as(b))/*<>*/},ac,H,ad,P,at,ae,au,function(a){/*<>*/var b=a[5],c=a[4],d=a[3],f=a[2];/*<>*/return[0,/*<>*/e(g[25],a[1]),f,d,c,b]/*<>*/},av,Q,ax,function(a){/*<>*/var/*<>*/c=P(g[23],a),b=c[2],/*<>*/i=c[1][2],/*<>*/j=/*<>*/e(/*<>*/e(s[48],0),i),/*<>*/l=/*<>*/e(/*<>*/e(s[48],1),j),/*<>*/d=/*<>*/h(g[19],0,0,l),/*<>*/m=/*<>*/e(s[16],d[2]),/*<>*/n=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return a[1]/*<>*/}),m);/*<>*/ /*<>*/e(z[9],n);/*<>*/ /*<>*/var o=/*<>*/f(r[10],d,b[2]);/*<>*/return[0,b[1],o,b[3],b[4],b[5]]/*<>*/},J,az,K,af,function(a,b,c){/*<>*/return af(a,0,[0,b,0],c)/*<>*/},aD,function(a,b,c){/*<>*/return aD(a,0,[0,b,0],c)/*<>*/},aE,function(a){/*<>*/if(a[4])/*<>*/return 0;/*<>*/var/*<>*/f=/*<>*/e(M,a),/*<>*/b=/*<>*/e(x[25],f),c=b[1];if(c){var @@ -437577,7 +437518,7 @@ b=ad(0,a);/*<>*/return/*<>*/e(al,a);/*<>*/return/*<>*/e(aG[53],b)/*<>*/},function(a){/*<>*/return/*<>*/e(ak,/*<>*/e(aG[43],a))/*<>*/},S,function(a,b,c){/*<>*/var d=a[5],e=a[4],h=a[3],i=a[2];/*<>*/return[0,/*<>*/f(g[20],b,c),i,h,e,d]/*<>*/},aH,aI,T,function(a){/*<>*/return T(bC,bB,a)},function(a){/*<>*/return T(bE,bD,a)},function(a){/*<>*/return T(bG,bF,a)}],"Haz3lcore__Zipper");return/*<>*/}(globalThis)); -//# 6773 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6714 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -437585,7 +437526,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__MetaVar");return/*<>*/}(globalThis)); -//# 6782 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6723 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="InVarHole",G="<2>",F="notInVarHole",E="%a",D="@,",B="free",C="src/haz3lcore/dynamics/VarErrStatus.re.HoleReason.t",n="NotInVarHole",A="src/haz3lcore/dynamics/VarErrStatus.re.t",m="Free",y="inVarHole",z=143,v=139,g=848054398,l=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -437624,13 +437565,13 @@ m=k[2];if(m&&!m[2]){/*<>*/var s=m[1],/*<>*/u=/*<>*/d(h[5],k[1]);/*<>*/return[0,u,/*<>*/d(p[5],s)]}}/*<>*/return/*<>*/t(e[4],j,i,a)}if(i===n)return b[2]?/*<>*/c(e[3],j,a):0}else if(g===r)/*<>*/return/*<>*/c(e[6],j,a)}}}/*<>*/return/*<>*/c(e[8],j,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return T;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(h[6],a[1]);/*<>*/return[0,g,[0,S,[0,c,[0,/*<>*/d(p[6],b),0]]]]/*<>*/}],"Haz3lcore__VarErrStatus");return/*<>*/}(globalThis)); -//# 6822 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6763 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;/*<>*/function f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var e=d.caml_get_global_data(),c=e.Haz3lcore__Typ,b=e.Haz3lcore__VarMap;d.caml_register_global(2,[0,function(a){/*<>*/return/*<>*/f(b[3],c[13],a)/*<>*/},function(a){/*<>*/return/*<>*/f(b[4],c[11],a)/*<>*/},b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18]],"Haz3lcore__VarCtx");return/*<>*/}(globalThis)); -//# 6829 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6770 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ad="src/haz3lcore/dynamics/VarBstMap.re.Inner.binding",v="<2>",r="@ ",o="rev_order",_=" =",ac="%a",ab="src/haz3lcore/dynamics/VarBstMap.re.Ordered.t_",D="",aa=963043957,n="map",Z=";@ ",Y="@]",$="@[%s =@ ",X=143,j=139,w=848054398,l=a.jsoo_runtime,W=l.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -437718,7 +437659,7 @@ e=a[1],/*<>*/b=/*<>*/c=s(e,b);return c?[0,b,c[1]]:u(0)/*<>*/}),b)/*<>*/},function(a){/*<>*/var/*<>*/b=S(a),/*<>*/c=/*<>*/d(/*<>*/d(f[20],function(a){/*<>*/return[0,a[1],0]/*<>*/}),a);/*<>*/return[0,b,/*<>*/d(f[10],c)]/*<>*/},function(c,b){/*<>*/return V(function(a){/*<>*/var b=a[1];/*<>*/return 1-/*<>*/e(f[34],function(a){/*<>*/return a==b?1:0/*<>*/},c)/*<>*/},b)/*<>*/}]],"Haz3lcore__VarBstMap");return/*<>*/}(globalThis)); -//# 6918 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6859 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="NotInHole",I="<2>",H="%a",n="TypeInconsistent",o="InHole",G="inHole",F="@,",m="WrongLength",E="src/haz3lcore/dynamics/ErrStatus.re.HoleReason.t",C="notInHole",D=143,w=139,g=848054398,i=-976970511,B="src/haz3lcore/dynamics/ErrStatus.re.t",A="typeInconsistent",z="wrongLength",h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -437758,7 +437699,7 @@ m=k[2];if(m&&!m[2]){/*<>*/var r=m[1],/*<>*/t=/*<>*/d(j[5],k[1]);/*<>*/return[0,t,/*<>*/d(s[5],r)]}}/*<>*/return/*<>*/u(e[4],l,h,a)}if(h===p)return b[2]?/*<>*/c(e[3],l,a):0}else if(g===q)/*<>*/return/*<>*/c(e[6],l,a)}}}/*<>*/return/*<>*/c(e[8],l,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return Y;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(j[6],a[1]);/*<>*/return[0,g,[0,X,[0,c,[0,/*<>*/d(s[6],b),0]]]]/*<>*/}],"Haz3lcore__ErrStatus");return/*<>*/}(globalThis)); -//# 6959 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6900 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -437766,7 +437707,7 @@ k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] b=e.caml_get_global_data(),d=b.Stdlib__Format,f=b.Sexplib__Std,g=b.Ppx_yojson_conv_lib__Yojson_conv,h=[0,[4,0,0,0,0],"%d"],i=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/j(d[139],a,h)/*<>*/}e.caml_register_global(5,[0,c,function(a){/*<>*/return/*<>*/k(d[143],i,c,a)/*<>*/},f[16],f[15],g[45][22],g[45][6]],"Haz3lcore__MetaVarInst");return/*<>*/}(globalThis)); -//# 6968 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6909 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aq="listLit",$="%S",N="BoolLit",ay="boolLit",ap="ap",M="Var",ao="badConstructor",L="StringLit",ae="@[<2>[",b="<2>",n="@ ",ax="stringLit",G="@])",K="Constructor",W="Cons",S="NonEmptyHole",v=",@ ",aw="intLit",t="@,",av="tuple",ad="@,]@]",V="Ap",F="))",au="var",as="constructor",at="nonEmptyHole",U="InvalidText",an="emptyHole",ac=";@ ",T="EmptyHole",R="BadConstructor",am="wild",J="FloatLit",al="cons",af="src/haz3lcore/dynamics/DHPat.re.t",I="@,))@]",g=139,Q="ListLit",r=-976970511,s=848054398,H="Tuple",P="Wild",ak="floatLit",E="IntLit",ar="invalidText",D=a.jsoo_runtime,C=D.caml_string_compare,aa=D.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):D.caml_call_gen(a,[b])}/*<>*/function @@ -437954,11 +437895,11 @@ f=b[1],/*<>*/g=Z(b[2]),/*<>*/d(x[20],Z,b[1]);/*<>*/return/*<>*/c(x[15],i);case 13:b=b[2];continue}/*<>*/return 0}/*<>*/}D.caml_register_global(188,[0,w,function(a){/*<>*/return/*<>*/i(f[143],bk,w,a)/*<>*/},y,z,A,B,function(a){/*<>*/if(a&&a[2])/*<>*/return[11,a];/*<>*/return/*<>*/c(ab[2],bR)/*<>*/},_,Z],"Haz3lcore__DHPat");return/*<>*/}(globalThis)); -//# 7157 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7098 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id;c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20]],"Haz3lcore__EnvironmentId");return/*<>*/}(globalThis)); -//# 7162 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7103 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -437966,7 +437907,7 @@ k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] b=e.caml_get_global_data(),d=b.Stdlib__Format,f=b.Sexplib__Std,g=b.Ppx_yojson_conv_lib__Yojson_conv,h=[0,[4,0,0,0,0],"%d"],i=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/j(d[139],a,h)/*<>*/}e.caml_register_global(5,[0,c,function(a){/*<>*/return/*<>*/k(d[143],i,c,a)/*<>*/},f[16],f[15],g[45][22],g[45][6]],"Haz3lcore__HoleInstanceId");return/*<>*/}(globalThis)); -//# 7171 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7112 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="invalidOfString",w="negativeExponent",v="indexOutOfBounds",n="NegativeExponent",m="OutOfFuel",l="DivideByZero",u="src/haz3lcore/dynamics/InvalidOperationError.re.t",t="outOfFuel",k="InvalidOfString",s="divideByZero",j=-976970511,g=848054398,i="IndexOutOfBounds",o=a.jsoo_runtime,r=o.caml_string_compare;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):o.caml_call_gen(a,[b,c])}/*<>*/function @@ -438000,7 +437941,7 @@ f=h[2];if(f===l)return e[2]?/*<>*/return Q;case 3:/*<>*/return R;default:/*<>*/return S}/*<>*/}],"Haz3lcore__InvalidOperationError");return/*<>*/}(globalThis)); -//# 7206 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7147 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -438008,7 +437949,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__KeywordID");return/*<>*/}(globalThis)); -//# 7215 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7156 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -438027,7 +437968,7 @@ b=e[1];if(!b)/*<>*/return/*<>*/j=/*<>*/d(f[2],a),/*<>*/g=/*<>*/h(f[15][18],j,i),k=g?g[1]:/*<>*/d(o[2],n);/*<>*/return/*<>*/d(c,k)/*<>*/}]/*<>*/},function(c,b){/*<>*/return[0,function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(c,a);e[1]=[0,f[15][1]];/*<>*/var/*<>*/b=/*<>*/d(c,a),/*<>*/g=[0,b,/*<>*/d(p[4],e[1])];e[1]=0;/*<>*/return m(g)/*<>*/},function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(b,a);/*<>*/var/*<>*/c=k(a),f=c[1];e[1]=[0,c[2]];/*<>*/ /*<>*/var g=/*<>*/d(b,f);e[1]=0;/*<>*/return g/*<>*/}]/*<>*/}],"Haz3lcore__StructureShareSexp");return/*<>*/}(globalThis)); -//# 7235 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7176 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cf="sequence",ae="BoolLit",cK="src/haz3lcore/dynamics/DH.re.if_consistency",b3="boolLit",b4="src/haz3lcore/dynamics/DH.re.DHFilter.t",ay="Prj",cr="rule",ce="binBoolOp",ag="StringLit",cJ="listConcat",l="@ ",aZ="Rule",cI="invalidOperation",b2="case",b1="stringLit",b0="boundVar",cd="typAp",cH="builtinFun",ad="BuiltinFun",aM="InvalidOperation",ah="Constructor",Z="%a",bZ="test",aL="Cons",cG="apBuiltin",cq="fixF",cc="intLit",aC="FreeVar",m="@,",cF="inconsistentBranches",aJ="IfThenElse",aK="FixF",ac="ConsistentCase",bY="tuple",cp="typFun",bX="fun",am="Sequence",S="Filter",ax="Ap",aB="BinFloatOp",cE=963043957,bW="nonEmptyHole",aA="TypFun",cD="constructor",aI="InvalidText",aw="EmptyHole",av="Closure",aX="Residue",aa="FloatLit",al="Fun",co="ifThenElse",bU="@[%s =@ ",cC="failedCast",aH="BinBoolOp",A="@,))@]",n=848054398,af="Tuple",p=-976970511,bg="filter",cA="closure",cB="consistentIf",bf="src/haz3lcore/dynamics/DH.re",au="FailedCast",cn="invalidText",b$="cast",ca="listLit",cb="src/haz3lcore/dynamics/DH.re.ClosureEnvironment.Inner.t",a8="%S",ak="pat",cm="consistentCase",bd="%d",bV="ap",at="BinStringOp",cl=")",bc="@[<2>[",cz="binStringOp",b="<2>",cj="freeVar",ck="src/haz3lcore/dynamics/DH.re.DHExp.case",cy="(Some ",b_="binIntOp",ar="BinIntOp",as="ApBuiltin",ci=" =",U="@])",cx="prj",aG="InconsistentBranches",b9="let",aq="Cast",ab="BoundVar",aF="NonEmptyHole",aY="ConsistentIf",o=",@ ",aV="Case",ap="ListConcat",aE="Test",be="@,]@]",cw="src/haz3lcore/dynamics/DH.re.Filter.t",b8="src/haz3lcore/dynamics/DH.re.DHExp.t",B="))",az="act",bu="",ch="inconsistentIf",b7="emptyHole",ao="Let",a9=";@ ",cv="None",cu="@]",b6="binFloatOp",cg="cons",ct="src/haz3lcore/dynamics/DH.re.DHExp.rule",an="TypAp",Y=143,g=139,aD="ListLit",$="IntLit",b5="residue",aW="InconsistentIf",cs="floatLit",X=a.jsoo_runtime,I=X.caml_equal,M=X.caml_string_compare,R=X.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):X.caml_call_gen(a,[b])}/*<>*/function @@ -438950,15 +438891,15 @@ c=g===b[1]?1:0,h=b[2],i=c?/*<>*/I(f,h):c;/* bS=[];function bT(c,b){/*<>*/ /*<>*/e(f[g],c,it);/*<>*/ /*<>*/h(J[26],function(a,b){/*<>*/if(a)/*<>*/ /*<>*/e(f[g],c,iu);/*<>*/ /*<>*/d(d(bS[1],c),b);/*<>*/return 1/*<>*/},0,b);/*<>*/return/*<>*/e(f[g],c,iv)/*<>*/}R(bS,[0,N[1]]);h(_[2],ix,bx,[0,bT,function(a){/*<>*/return/*<>*/h(f[Y],iw,bT,a)/*<>*/},function(a){/*<>*/return/*<>*/e(z[40],N[3],a)/*<>*/},function(a){/*<>*/return/*<>*/e(z[39],N[4],a)/*<>*/},function(a){/*<>*/return e(y[45][30],N[5],a)},function(a){/*<>*/return e(y[45][14],N[6],a)},function(a,b){/*<>*/return[0,a,b]/*<>*/}]);X.caml_register_global(634,[0,bh,function(a){/*<>*/return/*<>*/h(f[Y],cN,bh,a)/*<>*/},bF,bv,bH,bw,P,H,ai,N,V,bx],"Haz3lcore__DH");return/*<>*/}(globalThis)); -//# 8159 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8100 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[7];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26]],"Haz3lcore__DHExp");return/*<>*/}(globalThis)); -//# 8164 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8105 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[8];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__Environment");return/*<>*/}(globalThis)); -//# 8169 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8110 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ae="invalidBoxedBoolLit",ad="invalidBuiltin",P="%S",al="invalidBoxedFloatLit",ak="freeInvalidVar",Q="src/haz3lcore/dynamics/EvaluatorError.re.t",aj="invalidBoxedTuple",D="InvalidBoxedFun",e="<2>",o="@ ",H="CastBVHoleGround",ac="stepDoesNotMatch",C="InvalidBoxedStringLit",G="InvalidBoxedBoolLit",q="@])",ai="invalidBoxedListLit",I="BadPatternMatch",ah="invalidBoxedTypFun",N="@,",F="InvalidBoxedListLit",L="OutOfFuel",aa="invalidProjection",ab="badPatternMatch",B="InvalidBoxedTuple",E="InvalidBoxedIntLit",_="outOfFuel",$="badBuiltinAp",A="InvalidProjection",ag="invalidBoxedStringLit",z="FreeInvalidVar",K="BadBuiltinAp",Z="invalidBoxedIntLit",y="InvalidBuiltin",af="invalidBoxedFun",Y="castBVHoleGround",g=139,m=-976970511,n=848054398,w="InvalidBoxedFloatLit",x="InvalidBoxedTypFun",J="StepDoesNotMatch",u=a.jsoo_runtime,v=u.caml_string_compare;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):u.caml_call_gen(a,[b])}/*<>*/function @@ -439073,7 +439014,7 @@ a==="number")switch(a){case 11:/*<>*/var e=a[2],/*<>*/f=/*<>*/c(s[45][3],a[1]);/*<>*/return[0,n,[0,bj,[0,f,[0,d(s[45][14],b[13],e),0]]]];default:/*<>*/return[0,n,[0,bk,[0,/*<>*/c(s[45][6],a[1]),0]]]}/*<>*/},[248,bl,u.caml_fresh_oo_id(0)]],"Haz3lcore__EvaluatorError");return/*<>*/}(globalThis)); -//# 8290 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8231 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="<2>",ag="int_of_string",M="@ ",J="Const",$="string_sub",L="%a",I=",@ ",af="mod",B="@,",K="Fn",_="))",ae="",ad="$Meta",Z="bool_of_string",H=143,ac="@,))@]",s=139,Y="float_of_string",ab="fn",aa="const",j=a.jsoo_runtime,X=j.caml_maybe_attach_backtrace,G=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -439160,11 +439101,11 @@ b=a[2],c=a[1];return 0===b[0]?[0,[0,c,z[16],b[1]]]:[0,[0,c,z[16],[3,b[1],b[2]]]] b=a[2],c=a[1];return 0===b[0]?0:[0,[0,c,b[3]]]/*<>*/},y[2]);j.caml_register_global(90,[0,C,function(a){/*<>*/return/*<>*/r(i[H],ap,C,a)/*<>*/},N,O,P,function(a){/*<>*/return/*<>*/r(i[H],as,P,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],N,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],O,a)/*<>*/},R,function(a){/*<>*/return/*<>*/r(i[H],au,R,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],v[48],a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],function(a){/*<>*/return d(v[24],function(a){/*<>*/return 0})},a)/*<>*/},m,c,y,d_,d$,/*<>*/r(u[26],function(a,b){/*<>*/var d=b[2],c=b[1];return 0===d[0]?/*<>*/f(F[10],a,[0,c,d[2]]):/*<>*/f(F[10],a,[0,c,[16,c]])/*<>*/},F[7],y[2])],"Haz3lcore__Builtins");return/*<>*/}(globalThis)); -//# 8378 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8319 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[9];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__ClosureEnvironment");return/*<>*/}(globalThis)); -//# 8383 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8324 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a6="sequence2",a7="consistentCaseRule",a5="let1",ae="Prj",an="BinFloatOp1",aY="mark",al="Ap1",am="Let1",m="@ ",be="let2",bu="invalidOperation",bv="ap2",bL="case",V="IfThenElse3",bd="binIntOp1",bK="boundVar",a4="typAp",bc="ifThenElse2",bO="src/haz3lcore/dynamics/EvalCtx.re.cls",av="InvalidOperation",bt="%a",aX="test",aJ="FailedCastCast",bs="apBuiltin",U="BinStringOp1",bb="fixF",ad="BinStringOp2",p="@,",br="inconsistentBranches",au="FixF",M="ConsistentCase",aV="tuple",aW="sequence1",aU="fun",T="Filter",ac="Ap2",ab="Cons1",bp="ifThenElse3",bq="binFloatOp2",aT="nonEmptyHole",bo="binStringOp2",S="IfThenElse1",at="Let2",aa="Closure",bn="(@[",R="Fun",a3="binBoolOp1",ak="ListConcat2",bm="failedCast",Q="ListConcat1",C="@,))@]",bP="failedCastCast",bl="listConcat2",as="IfThenElse2",n=-976970511,l=848054398,N="Tuple",bk="filter",bj="closure",$="FailedCast",bN="src/haz3lcore/dynamics/EvalCtx.re.case",a1="listLit",a2="cast",ba="consistentCase",aE="%d",P="BinIntOp1",a$="binIntOp2",az="@[<2>[",aj="BinBoolOp1",j="<2>",aS="cons1",bJ="src/haz3lcore/dynamics/EvalCtx.re.t",L="InconsistentBranchesRule",_="ApBuiltin",ar="BinIntOp2",ay="@])",bi="prj",aK="FilterPattern",aq="InconsistentBranches",aI="BoundVar",Z="Cast",ap="NonEmptyHole",q=",@ ",aH="Case",bh="listConcat1",ao="Test",Y="BinFloatOp2",aA="@,]@]",a_="binBoolOp2",a0="ap1",ai="BinBoolOp2",X="Mark",a9="binFloatOp1",ah="Sequence1",bg="ifThenElse1",D="))",bf="",bM="filterPattern",aB=";@ ",a8="binStringOp1",ag="Sequence2",aZ="cons2",W="TypAp",aR=143,K="ConsistentCaseRule",g=139,O="ListLit",aQ="inconsistentBranchesRule",af="Cons2",aC=a.jsoo_runtime,iF=aC.caml_maybe_attach_backtrace,r=aC.caml_string_compare,aD=aC.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):aC.caml_call_gen(a,[b])}/*<>*/function @@ -440180,7 +440121,7 @@ e!=="number"&&0===e[0]){e=e[2];continue}if(typeof b==="number"&&32===b)/*<>*/return[0,e];if(typeof e==="number")/*<>*/return 0;if(32===e[0]){e=e[1];continue}}/*<>*/return 0}/*<>*/}],"Haz3lcore__EvalCtx");return/*<>*/}(globalThis)); -//# 9400 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9341 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="called matches_cast_Cons with non-list pattern",d="src/haz3lcore/dynamics/PatternMatch.re",j=a.jsoo_runtime,U=j.caml_maybe_attach_backtrace,r=j.caml_trampoline,T=j.caml_trampoline_return;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -440550,7 +440491,7 @@ w!=="number")switch(w[0]){case 4:case 32:/*<>*/return 1;default:/*<>*/return 0}/*<>*/}j.caml_register_global(19,[0,e],"Haz3lcore__PatternMatch");return/*<>*/}(globalThis)); -//# 9771 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9712 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e="Pass",t="pass",s="src/haz3lcore/dynamics/TestStatus.re.t",d="Indet",b="Fail",r="fail",q="indet",n=-976970511,j=848054398,m=a.jsoo_runtime;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function @@ -440579,7 +440520,7 @@ k=h[2];if(k===b)return f[2]?/*<>*/c(i[ 0:/*<>*/return E;case 1:/*<>*/return F;default:/*<>*/return G}/*<>*/},p,/*<>*/c(H[26],p,0)],"Haz3lcore__TestStatus");return/*<>*/}(globalThis)); -//# 9801 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9742 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var W="@[<2>[",p="<2>",q="@ ",U="src/haz3lcore/dynamics/TestMap.re.instance_report",V="@])",z="%a",T=",@ ",S="@,",R="@,]@]",P="src/haz3lcore/dynamics/TestMap.re.report",Q="",O=";@ ",N="(@[",y=143,o=848054398,f=139,j=a.jsoo_runtime,x=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -440626,7 +440567,7 @@ d=/*<>*/c(M,a,b);return d?t(d[1]):2/*<>*/f=/*<>*/c(g[50],d,b);if(!f)/*<>*/return/*<>*/c(w[37],b,[0,[0,d,[0,e,0]],0]);/*<>*/var/*<>*/h=[0,[0,d,/*<>*/c(w[37],f[1],[0,e,0])],0],/*<>*/i=/*<>*/c(g[55],d,b);/*<>*/return/*<>*/c(w[37],i,h)/*<>*/},g[1],function(e,b){/*<>*/ /*<>*/var a=/*<>*/c(g[44],function(a){/*<>*/return e===t(a[2])?1:0/*<>*/},b);/*<>*/return/*<>*/d(g[1],a)/*<>*/}],"Haz3lcore__TestMap");return/*<>*/}(globalThis)); -//# 9849 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9790 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aM="fixUnwrap",a1="sequence",a2="completeFilter",Q="FunClosure",a0="binBoolOp",aZ="listConcat",P="@ ",ai="NotGroundOrHole",aL="completeClosure",aK="builtinWrap",$="FixClosure",aY="caseNext",aJ="letBind",aX="ground",aI="notGroundOrHole",_="Skip",z="BuiltinAp",Z="UpdateTest",aH="listCons",N="ListCons",O="Sequence",M="VarLookup",y="BinFloatOp",aG="updateTest",L="CastTypAp",aF="castAp",aE="castTypAp",K="TypFunAp",D="BinBoolOp",aD="invalidStep",aW="builtinAp",k=-976970511,l=848054398,Y="CompleteFilter",ak="Ground",aV="hole",aU="cast",aT="varLookup",J="CaseNext",aS="src/haz3lcore/dynamics/Transition.re.step_kind",aC="skip",C="BinStringOp",aR="binStringOp",r="<2>",aB="conditional",aA="fixClosure",I="FunAp",aQ="binIntOp",B="BinIntOp",H="@])",az="typFunAp",X="CompleteClosure",W="Cast",V="ListConcat",ay="funClosure",aP="caseApply",U="CaseApply",ax=">",S="BuiltinWrap",T="InvalidStep",R="LetBind",aw="projection",F="Projection",G="FixUnwrap",aO="binFloatOp",aj="Hole",av="funAp",A="Conditional",q=139,E="CastAp",aN="@<",s=a.jsoo_runtime,p=s.caml_maybe_attach_backtrace,n=s.caml_string_compare;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -440977,7 +440918,7 @@ b==="number")switch(b){case 18:case 19:/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Transition");return/*<>*/}(globalThis)); -//# 10201 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10142 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,G=f.caml_maybe_attach_backtrace;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -441026,7 +440967,7 @@ h=/*<>*/g(B[16],b,f);e=/*<>*/g(n[28],C,c);/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/G([0,D[7],[0,c]],1)/*<>*/}),h)}/*<>*/}var F=0;f.caml_register_global(16,[0,c,i,function(a,b){/*<>*/return l(A,a,b)},function(a,b){/*<>*/return m(F,a,b)}],"Haz3lcore__ValueChecker");return/*<>*/}(globalThis)); -//# 10251 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10192 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var k="$",e=a.jsoo_runtime,h=e.caml_ml_string_length;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -441037,7 +440978,7 @@ c(a){/*<>*/return i(f[16],a, g(a){/*<>*/if(a&&!a[2])/*<>*/return b(a[1]);/*<>*/return 0/*<>*/}e.caml_register_global(5,[0,l,b,c,g,function(a){/*<>*/return g(a)?/*<>*/j(o[20],function(a){/*<>*/ /*<>*/var b=c(a);/*<>*/return/*<>*/j(n[28],b,m)/*<>*/},a):a/*<>*/},function(a){/*<>*/return b(a)?c(a):a/*<>*/}],"Haz3lcore__AssistantExpander");return/*<>*/}(globalThis)); -//# 10263 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10204 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aP="pat",q="NewForm",F="Pat",k="<2>",o="@ ",aO="typ",X="fromCtx",aZ="src/haz3lcore/assistant/Suggestion.re.t",aN=" =",s="@])",E="Any",I="%a",aY="src/haz3lcore/assistant/Suggestion.re.strategy",H="FromCtxAp",D="content",aM="fromCtxAp",aW="src/haz3lcore/assistant/Suggestion.re.strategy_pat",aX="src/haz3lcore/assistant/Suggestion.re.strategy_exp",n="Common",C="FromCoCtx",p="FromCtx",aV="fromBackpack",G="Typ",aL="fromCoCtx",aJ="",aK="src/haz3lcore/assistant/Suggestion.re.strategy_all",aU=963043957,aI="exp",K="FromBackpack",W="newForm",B="Exp",aH="@]",A="strategy",aT="src/haz3lcore/assistant/Suggestion.re.strategy_common",aS="@[%s =@ ",aG="src/haz3lcore/assistant/Suggestion.re.strategy_typ",z=143,h=139,i=848054398,j=-976970511,aQ="any",Y="common",aR="(@[<2>Common@ ",y=a.jsoo_runtime,Q=y.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -441204,7 +441145,7 @@ l=/*<>*/d(m[2],b);/*<>*/d(m[2],i);/*<>*/return/*<>*/g(e[11],V,n,a)}/*<>*/var/*<>*/j=/*<>*/d(m[2],f),/*<>*/k=/*<>*/d(m[2],h);if(j&&k)/*<>*/return[0,j[1],k[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(m[2],h)?1:0,b8],0],/*<>*/p=[0,[0,0===/*<>*/d(m[2],f)?1:0,b9],o];/*<>*/return/*<>*/g(e[13],V,a,p)}/*<>*/return/*<>*/c(e[14],V,a)/*<>*/},function(a){/*<>*/var b=a[1],c=[0,[0,b_,aC(a[2])],0];/*<>*/return[0,aU,[0,[0,b$,d(ah[45][3],b)],c]]/*<>*/},function(a,b){/*<>*/return c(ca[10],a[1],b[1])/*<>*/}],"Haz3lcore__Suggestion");return/*<>*/}(globalThis)); -//# 10431 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10372 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y=" ",v="(",x="::",E=183,u=" )",s=" )::",r=",",l=a.jsoo_runtime;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -441257,7 +441198,7 @@ s=n[1];if(s){/*<>*/var C=s[1],/*<>*/al=/*<>*/f(g[1],s[2]),/*<>*/am=/*<>*/d(g[11],al,function(a){/*<>*/return ak/*<>*/}),/*<>*/D=/*<>*/f(/*<>*/f(w[7],an),am),/*<>*/ao=z(C),/*<>*/ap=/*<>*/d(g[20],function(a){/*<>*/return c(D,a)},ao),/*<>*/aq=A(C),/*<>*/as=/*<>*/d(e[28],ar,D),/*<>*/at=/*<>*/d(g[20],function(a){/*<>*/return c(as,a)},aq);/*<>*/return/*<>*/d(e[37],at,ap)}break}/*<>*/return 0;case 2:/*<>*/return 0;default:/*<>*/return 0}/*<>*/}],"Haz3lcore__AssistantCtx");return/*<>*/}(globalThis)); -//# 10485 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10426 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime,an=i.caml_list_of_js_array,r=i.caml_string_compare;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -441293,7 +441234,7 @@ c=a[1]===g?1:0,d=c?/*<>*/f(e[3 n(a,b,c){/*<>*/var/*<>*/g=/*<>*/d(B[181],c),/*<>*/h=/*<>*/d(b,g),/*<>*/k=/*<>*/d(j[5],c),/*<>*/l=/*<>*/d(B[183],c),/*<>*/i=/*<>*/ap(j[6],l,k,a,h);/*<>*/return 2===g?/*<>*/f(e[20],function(a){/*<>*/return[0,a[1],[2,[0,[0,a[2]]]]]/*<>*/},i):6<=g?/*<>*/f(e[20],function(a){/*<>*/return[0,a[1],[1,[0,[0,a[2]]]]]/*<>*/},i):/*<>*/d(/*<>*/d(e[20],function(a){/*<>*/return[0,a,ag]/*<>*/}),h)/*<>*/}var ah=m[8],ai=j[4],aj=m[12],ak=j[2],al=m[4],am=j[3];i.caml_register_global(33,[0,h,j,m,n,function(a){/*<>*/return n(ai,ah,a)},function(a){/*<>*/return n(ak,aj,a)},function(a){/*<>*/return n(am,al,a)}],"Haz3lcore__AssistantForms");return/*<>*/}(globalThis)); -//# 10522 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10463 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -441343,7 +441284,7 @@ v=u[1];break b}}var m=0;break a}var m=[0,/*<>*/d(e[19],v)]}/*<>*/return/*<>*/f(k[10][1],m,C)/*<>*/}],"Haz3lcore__Indicated");return/*<>*/}(globalThis)); -//# 10573 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10514 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime,k=e.caml_ml_string_length;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -441374,7 +441315,7 @@ i=/*<>*/c(s[15][18],a,g);/*<>*/return/*<>*/c(h[10][1],f,function(a){/*<>*/var c=b[3][1],/*<>*/e=r(/*<>*/d(z[181],g),c,a);/*<>*/return[0,/*<>*/j(m[68],b,0,e)]/*<>*/})/*<>*/})/*<>*/})/*<>*/})/*<>*/})/*<>*/}],"Haz3lcore__TyDi");return/*<>*/}(globalThis)); -//# 10605 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10546 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -441385,7 +441326,7 @@ h(a,b){/*<>*/var c=a?a[1]:f,/*<>*/e=/*<>*/d(l[16],b);/*<>*/return/*<>*/d(/*<>*/j(i[26],function(a,b){/*<>*/var c=b[5],/*<>*/e=/*<>*/m(g,b[1],b,a);/*<>*/return/*<>*/d(/*<>*/j(i[26],function(a,b){/*<>*/return h([0,a],b)/*<>*/},e),c)/*<>*/},c),e)/*<>*/}e.caml_register_global(3,[0,f,g,b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48],h],"Haz3lcore__TileMap");return/*<>*/}(globalThis)); -//# 10617 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10558 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="passing",A="total",l=" ",F="%d",V=" are ",w="test_map",Q="@[<2>[",B="<2>",d="@ ",v=" =",U="src/haz3lcore/dynamics/TestResults.re.t",u="unfinished",P="%d are %s ",T="@,",G="and ",O="@,]@]",z="statuses",S="one is ",t="",R=963043957,o=";@ ",s="@]",L="All ",y="@[%s =@ ",x="descriptions",f=139,K="One ",q="failing",r=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):r.caml_call_gen(a,[b])}/*<>*/function @@ -441418,7 +441359,7 @@ I=/*<>*/c(b[2],t);/*<>*/return[0,R,[0,[0,ba,c(n[19],j)],q]]/*<>*/},function(a,b){/*<>*/var d=a?a[1]:0,/*<>*/e=/*<>*/i(n[25],2,b),/*<>*/f=/*<>*/i(n[25],1,b),/*<>*/g=/*<>*/i(n[25],0,b),/*<>*/h=/*<>*/c(n[24],b);/*<>*/return[0,b,/*<>*/c(/*<>*/c(I[20],function(a){/*<>*/return c(n[7],a[2])/*<>*/}),b),d,h,g,f,e]/*<>*/},N,function(a){/*<>*/return N(a[4],a[6],a[7],bL,bK,bJ,bI,bH)/*<>*/}],"Haz3lcore__TestResults");return/*<>*/}(globalThis)); -//# 10651 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10592 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -441436,7 +441377,7 @@ o(a){/*<>*/try{/*<>*/d(k[6],l,a);/*<>*/return c}catch(e){/*<>*/ /*<>*/var b=n(a);/*<>*/ /*<>*/t(k[5],l,a,b);/*<>*/return b}/*<>*/}i.caml_register_global(7,[0,j,q,r,s,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,g,l,n,o],"Haz3lcore__TermRanges");return/*<>*/}(globalThis)); -//# 10670 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10611 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -441444,7 +441385,7 @@ i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<< h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var c=e.caml_get_global_data(),g=c.Stdlib__List,f=c.Haz3lcore__Id,b=f[15],d=b[2];e.caml_register_global(2,[0,b[1],d,b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48],function(a,e,c){/*<>*/return/*<>*/j(/*<>*/i(g[26],function(a,b){/*<>*/return/*<>*/h(d,b,e,a)/*<>*/},c),a)/*<>*/}],"Haz3lcore__TermMap");return/*<>*/}(globalThis)); -//# 10679 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10620 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -441515,7 +441456,7 @@ t(i,h,c){/*<>*/var/*<>*/k=10===c[0]?/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},c),b):c,/*<>*/l=[0,j,d(i,h,k)];/*<>*/return/*<>*/f(g[10],b,l)/*<>*/},g[7]),b);/*<>*/return/*<>*/f(k[7],a,j)/*<>*/}function u(f,b,c){/*<>*/return/*<>*/e(/*<>*/e(n[11][9],function(a){/*<>*/return d(f,b,a)}),c)/*<>*/}h.caml_register_global(6,[0,d,function(a,b){/*<>*/return/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},b),a)/*<>*/}],"Haz3lcore__Substitution");return/*<>*/}(globalThis)); -//# 10751 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10692 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var r="@ ",s="<2>",d="step",q=963043957,j=139,p="src/haz3lcore/dynamics/EvaluatorStats.re.t",h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -441534,7 +441475,7 @@ o=/*<>*/c(b[2],h);/*<>*/c(b[2],e);if(j)/*<>*/return[0,j[1]];/*<>*/ /*<>*/var p=[0,[0,0===/*<>*/c(b[2],e)?1:0,E],0];/*<>*/return/*<>*/i(l[13],k,a,p)}/*<>*/return/*<>*/g(l[14],k,a)/*<>*/},function(a){/*<>*/return[0,q,[0,[0,F,c(m[45][6],a[1])],0]]/*<>*/},G,function(a){/*<>*/return[0,a[1]+1|0]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return[0,a]/*<>*/}],"Haz3lcore__EvaluatorStats");return/*<>*/}(globalThis)); -//# 10771 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10712 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="@ ",y="<2>",k="tests",x=" =",j="stats",v=963043957,w="",u="@]",s="@[%s =@ ",t="src/haz3lcore/dynamics/EvaluatorState.re.t",i=139,h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -441558,15 +441499,15 @@ b=a[2];/*<>*/return[0,/*<>*/return[0,/*<>*/d(c[10],a),e]/*<>*/},function(a,b,c){/*<>*/var e=a[2],/*<>*/g=/*<>*/d(/*<>*/d(f[23],[0,b,c]),e);/*<>*/return[0,a[1],g]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},function(a,b){/*<>*/return[0,b[1],a]/*<>*/}],"Haz3lcore__EvaluatorState");return/*<>*/}(globalThis)); -//# 10796 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10737 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[10];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10]],"Haz3lcore__Filter");return/*<>*/}(globalThis)); -//# 10801 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10742 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[12];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7]],"Haz3lcore__FilterEnvironment");return/*<>*/}(globalThis)); -//# 10806 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10747 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a$="$e",d="__mutual__",a_="$v",f=a.jsoo_runtime,b=f.caml_equal,M=f.caml_maybe_attach_backtrace,g=f.caml_trampoline,v=f.caml_trampoline_return,N=f.caml_wrap_exception;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -441813,7 +441754,7 @@ p(a,b,c){/*<>*/return w(a,b,a,c[1 g=d,f=e;/*<>*/for(;;){if(!g)/*<>*/return[0,c,f];/*<>*/var i=g[2],/*<>*/h=p(a,b,g[1]);if(h)/*<>*/return[0,h[1],f];g=i;f=f+1|0}/*<>*/}(a,b,c,d,0);/*<>*/return[0,e[1],f-e[2]|0]/*<>*/}],"Haz3lcore__FilterMatcher");return/*<>*/}(globalThis)); -//# 11054 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10995 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="<2>",i="@ ",al=125,o="knd",p="d_loc",C="d",u=" =",ao="%a",ak="{ ",t="",B="env",aj="src/haz3lcore/dynamics/EvaluatorStep.re.EvalObj.t",L=963043957,A=";@ ",an="@[<2>{ ",s="@]",am="@ }@]",v="@[%s =@ ",ai=143,z="state",d=139,m="ctx",ah="src/haz3lcore/dynamics/EvaluatorStep.re.step",y=a.jsoo_runtime,af=y.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -442079,7 +442020,7 @@ d=ae(h,a);if(!d)/*<>*/return 0;/ b=d[1][2],/*<>*/e=/*<>*/f(ac,i,b[1],b[2]);if(!e)/*<>*/return 0;/*<>*/ /*<>*/var g=n(b[3],e[1]);/*<>*/return[0,g,c(g)]/*<>*/}/*<>*/return c(b)/*<>*/}],"Haz3lcore__EvaluatorStep");return/*<>*/}(globalThis)); -//# 11321 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11262 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aD="src/haz3lcore/dynamics/Stepper.re.persistent",ax="stepPending",L="StepTimeout",aw="stepTimeout",ac="@[<2>[",n="<2>",e="@ ",av=125,D=" =",au="src/haz3lcore/dynamics/Stepper.re.t",ad="%a",at="{ ",T=",@ ",G="@,",q="elab",ab="@,]@]",J="StepperOK",m="current",C="next",ar="))",as="list manipulation",z="",U=963043957,o="previous",y=";@ ",aC="@[<2>{ ",B="@]",aB="@ }@]",F="@[%s =@ ",aa=143,aA="@,))@]",d=139,O=-976970511,E=848054398,az="src/haz3lcore/dynamics/Stepper.re.current",ay="stepperOK",K="StepPending",t=a.jsoo_runtime,cE=t.caml_maybe_attach_backtrace,$=t.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):t.caml_call_gen(a,[b])}/*<>*/function @@ -442327,7 +442268,7 @@ d=a[2];if(typeof b!=="number"&&0!==b[0]){if(b[3])/*<>*/return[0,c,d,[1,b[1],b[2],0]];break a}}/*<>*/return[0,c,a[2],a[3]]/*<>*/},function(a,b){/*<>*/var c=b[3],d=b[2],e=b[1],/*<>*/f=ak([0,e,d,c,0]);/*<>*/return[0,e,d,c,/*<>*/h(p[18],a,f)]/*<>*/}],"Haz3lcore__Stepper");return/*<>*/}(globalThis)); -//# 11574 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11515 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ah="TileId",cN="point",aC="Cut",cL="insert",cM="src/haz3lcore/zipper/action/Action.re.select",ck="cant_put_down",cl="src/haz3lcore/zipper/action/Action.re.goal",cj="src/haz3lcore/zipper/action/Action.re.piece_goal",o="@ ",aO="Grout",aP="CantPaste",aQ="Cant_destruct",cK="accept",ci="src/haz3lcore/zipper/action/Action.re.buffer",ch="src/haz3lcore/zipper/action/Action.re.Failure.t",B="%a",ag="Unselect",aN="Current",E="@,",aA="Pick_up",aB="Cant_move",af="Point",ae="ToggleIndicated",aL="Piece",aM="SetSyntax",cf="move",cg="grout",aJ="All",aK="Reparse",U="Move",cG="cant_select",cH="cantReparse",cI="focusInternal",cJ="smart",cE="set",cF="tyDi",ad="Extreme",az="Accept",cD="cant_project",cB="copy",cC="src/haz3lcore/zipper/action/Action.re.jump_target",aT="@,))@]",ce="id",h=-976970511,g=848054398,cy="cant_move",cz="unselect",cA="toggleIndicated",cd="cantAccept",cb="local",cc="goal",ay="Smart",T="FocusInternal",b$="resize",ca="%S",b_="moveToBackpackTarget",b9="term",b8="setIndicated",cx="extreme",k="<2>",b4="pick_up",b5="buffer",b6="remove",b7="src/haz3lcore/zipper/action/Action.re.rel",b3="cut",S="Term",ac="MoveToBackpackTarget",ax="Copy",R="SetIndicated",q="@])",cv="cantPaste",cw="paste",cu="escape",ab="Insert",b2="cant_destruct",aw="CantAccept",aV=",@ ",aI="Cant_insert",b0="setSyntax",b1="all",cs="tileId",aH="BindingSiteOfIndicatedVar",ct="src/haz3lcore/zipper/action/Action.re.move",bZ="cant_insert",cr="project",bY="piece",av="Cant_select",$="Jump",aa="Paste",aG="Cant_put_down",bX="put_down",cq="tile",_="Select",bV="current",au="Escape",bW="src/haz3lcore/zipper/action/Action.re.agent",bT="destruct",bU="bindingSiteOfIndicatedVar",at="Cant_project",aU="))",Z="Goal",bS="reparse",Q="Project",aE="Id",aF="CantReparse",P="Destruct",cp="rotateBackpack",X="Local",Y="Remove",co="updateModel",bR="jump",as="RotateBackpack",A=143,O="Tile",ar="UpdateModel",cn="select",W="Set",N="Buffer",bQ="src/haz3lcore/zipper/action/Action.re.project",j=139,V="Resize",aD="Put_down",aq="TyDi",cm="src/haz3lcore/zipper/action/Action.re.t",M=a.jsoo_runtime,u=M.caml_string_compare,J=M.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):M.caml_call_gen(a,[b])}/*<>*/function @@ -442498,7 +442439,7 @@ bg(f,b){/*<>*/switch(b[0]){case 0:var a=b[2],g=b[1];/*<>*/ /*<>*/c(e[j],f,dO);d(d(C[9],f),g);/*<>*/ /*<>*/c(e[j],f,dP);d(d(C[8],f),a);return c(e[j],f,dQ);case 1:var -h=b[2],i=b[1];/*<>*/ /*<>*/c(e[j],f,dR);d(d(C[7],f),i);/*<>*/ /*<>*/c(e[j],f,dS);(function(a){/*<>*/return/*<>*/c(e[13],f,dT)/*<>*/}(h));return c(e[j],f,dU);case +h=b[2],i=b[1];/*<>*/ /*<>*/c(e[j],f,dR);d(d(C[7],f),i);/*<>*/ /*<>*/c(e[j],f,dS);(function(a){/*<>*/return/*<>*/c(e[13],f,dT)/*<>*/}(h));return c(e[j],f,dU);case 2:var k=b[1];/*<>*/ /*<>*/c(e[j],f,dV);d(d(C[6],f),k);return c(e[j],f,dW);case 3:var @@ -442507,7 +442448,7 @@ l=b[1];/*<>*/ /*<>*/ /*<>*/c(e[j],f,dZ);d(d(C[4],f),m);return c(e[j],f,d0);case 5:var n=b[2],o=b[1];/*<>*/ /*<>*/c(e[j],f,d1);d(d(C[3],f),o);/*<>*/ /*<>*/c(e[j],f,d2);d(d(C[2],f),n);return c(e[j],f,d3);default:var -p=b[1];/*<>*/ /*<>*/c(e[j],f,d4);d(d(C[1],f),p);return c(e[j],f,d5)}/*<>*/}J(C,[0,m[9],p[1],m[9],m[9],D[75],D[75],m[9],aS[20],m[9]]);/*<>*/function +p=b[1];/*<>*/ /*<>*/c(e[j],f,d4);d(d(C[1],f),p);return c(e[j],f,d5)}/*<>*/}J(C,[0,m[9],p[1],m[9],m[9],D[1],D[1],m[9],aS[20],m[9]]);/*<>*/function bA(a){/*<>*/a:{if(0===a[0]){var f=a[1],w=u(f,cu);b:{c:{d:{e:{f:{g:{if(0<=w){if(0>*/return/*<>*/c(b[5],s,a)}/*<>*/return/*<>*/c(b[5],s,a)}/*<>*/return/*<>*/c(b[5],s,a)}/*<>*/return/*<>*/c(b[5],s,a)}/*<>*/return/*<>*/c(b[5],s,a)}/*<>*/return/*<>*/c(b[5],s,a)}/*<>*/return/*<>*/c(b[5],s,a)}var g=a[1];if(!g)/*<>*/return/*<>*/c(b[7],s,a);var @@ -442518,11 +442459,11 @@ v=t[2];if(v&&!v[2]){/*<>*/var E=v[1],/*<>*/F=/*<>*/d(m[2],t[1]);/*<>*/return[5,F,/*<>*/d(p[3],E)]}}/*<>*/return/*<>*/i(b[4],s,e,a)}var r=g[2];if(r&&!r[2])/*<>*/return[4,/*<>*/d(m[2],r[1])];/*<>*/return/*<>*/i(b[4],s,e,a)}var q=g[2];if(q&&!q[2])/*<>*/return[6,/*<>*/d(m[2],q[1])];/*<>*/return/*<>*/i(b[4],s,e,a)}var -o=g[2];if(o&&!o[2])/*<>*/return[2,/*<>*/d(D[77],o[1])];/*<>*/return/*<>*/i(b[4],s,e,a)}var +o=g[2];if(o&&!o[2])/*<>*/return[2,/*<>*/d(D[3],o[1])];/*<>*/return/*<>*/i(b[4],s,e,a)}var l=g[2];/*<>*/if(l){var n=l[2];if(n&&!n[2]){/*<>*/var B=n[1],/*<>*/C=/*<>*/d(m[2],l[1]);/*<>*/return[0,C,/*<>*/d(aS[22],B)]}}/*<>*/return/*<>*/i(b[4],s,e,a)}var -k=g[2];if(k&&!k[2])/*<>*/return[3,/*<>*/d(D[77],k[1])];/*<>*/return/*<>*/i(b[4],s,e,a)}var +k=g[2];if(k&&!k[2])/*<>*/return[3,/*<>*/d(D[3],k[1])];/*<>*/return/*<>*/i(b[4],s,e,a)}var h=g[2];/*<>*/if(h){var j=h[2];if(j&&!j[2]){/*<>*/var z=j[1],/*<>*/A=/*<>*/d(m[2],h[1]);/*<>*/return[1,A,/*<>*/d(bB[48],z)]}}/*<>*/return/*<>*/i(b[4],s,e,a)}/*<>*/return/*<>*/c(b[8],s,a)/*<>*/}function @@ -442531,8 +442472,8 @@ bC(a){/*<>*/switch(a[0]){case b=a[2],/*<>*/c=/*<>*/d(m[1],a[1]);/*<>*/return[1,[0,d7,[0,c,[0,/*<>*/d(aS[23],b),0]]]];case 1:/*<>*/ /*<>*/var e=/*<>*/d(m[1],a[1]);/*<>*/return[1,[0,d8,[0,e,[0,d(bB[24],function(a){/*<>*/return 0}),0]]]];case -2:/*<>*/return[1,[0,d9,[0,/*<>*/d(D[78],a[1]),0]]];case -3:/*<>*/return[1,[0,d_,[0,/*<>*/d(D[78],a[1]),0]]];case +2:/*<>*/return[1,[0,d9,[0,/*<>*/d(D[4],a[1]),0]]];case +3:/*<>*/return[1,[0,d_,[0,/*<>*/d(D[4],a[1]),0]]];case 4:/*<>*/return[1,[0,d$,[0,/*<>*/d(m[1],a[1]),0]]];case 5:/*<>*/var f=a[2],/*<>*/g=/*<>*/d(m[1],a[1]);/*<>*/return[1,[0,ea,[0,g,[0,/*<>*/d(p[4],f),0]]]];default:/*<>*/return[1,[0,eb,[0,/*<>*/d(m[1],a[1]),0]]]}/*<>*/}/*<>*/function @@ -442550,11 +442491,11 @@ w=v[2];if(w&&!w[2]){/*<>*/var F=w[1],/*<>*/G=/*<>*/d(m[4],v[1]);/*<>*/return[5,G,/*<>*/d(p[5],F)]}}/*<>*/return/*<>*/i(f[4],z,b,a)}if(b===T){var u=e[2];if(u&&!u[2])/*<>*/return[4,/*<>*/d(m[4],u[1])];/*<>*/return/*<>*/i(f[4],z,b,a)}if(b===Y){var t=e[2];if(t&&!t[2])/*<>*/return[6,/*<>*/d(m[4],t[1])];/*<>*/return/*<>*/i(f[4],z,b,a)}if(b===R){var -s=e[2];if(s&&!s[2])/*<>*/return[2,/*<>*/d(D[79],s[1])];/*<>*/return/*<>*/i(f[4],z,b,a)}if(b===aM){var +s=e[2];if(s&&!s[2])/*<>*/return[2,/*<>*/d(D[5],s[1])];/*<>*/return/*<>*/i(f[4],z,b,a)}if(b===aM){var q=e[2];/*<>*/if(q){var r=q[2];if(r&&!r[2]){/*<>*/var C=r[1],/*<>*/E=/*<>*/d(m[4],q[1]);/*<>*/return[0,E,/*<>*/d(aS[24],C)]}}/*<>*/return/*<>*/i(f[4],z,b,a)}if(b===ae){var -o=e[2];if(o&&!o[2])/*<>*/return[3,/*<>*/d(D[79],o[1])];/*<>*/return/*<>*/i(f[4],z,b,a)}if(b===ar){var +o=e[2];if(o&&!o[2])/*<>*/return[3,/*<>*/d(D[5],o[1])];/*<>*/return/*<>*/i(f[4],z,b,a)}if(b===ar){var l=e[2];/*<>*/if(l){var n=l[2];if(n&&!n[2]){/*<>*/var A=n[1],/*<>*/B=/*<>*/d(m[4],l[1]);/*<>*/return[1,B,/*<>*/d(I[44],A)]}}/*<>*/return/*<>*/i(f[4],z,b,a)}}else if(g===y)/*<>*/return/*<>*/c(f[6],z,a)}}}/*<>*/return/*<>*/c(f[8],z,a)/*<>*/}function @@ -442563,8 +442504,8 @@ bE(a){/*<>*/switch(a[0]){case b=a[2],/*<>*/c=/*<>*/d(m[3],a[1]);/*<>*/return[0,g,[0,ec,[0,c,[0,/*<>*/d(aS[25],b),0]]]];case 1:/*<>*/var e=a[2],/*<>*/f=/*<>*/d(m[3],a[1]);/*<>*/return[0,g,[0,ed,[0,f,[0,function(a){/*<>*/return d(I[20],function(a){/*<>*/return 0})}(e),0]]]];case -2:/*<>*/return[0,g,[0,ee,[0,/*<>*/d(D[80],a[1]),0]]];case -3:/*<>*/return[0,g,[0,ef,[0,/*<>*/d(D[80],a[1]),0]]];case +2:/*<>*/return[0,g,[0,ee,[0,/*<>*/d(D[6],a[1]),0]]];case +3:/*<>*/return[0,g,[0,ef,[0,/*<>*/d(D[6],a[1]),0]]];case 4:/*<>*/return[0,g,[0,eg,[0,/*<>*/d(m[3],a[1]),0]]];case 5:/*<>*/var h=a[2],/*<>*/i=/*<>*/d(m[3],a[1]);/*<>*/return[0,g,[0,eh,[0,i,[0,/*<>*/d(p[6],h),0]]]];default:/*<>*/return[0,g,[0,ei,[0,/*<>*/d(m[3],a[1]),0]]]}/*<>*/}/*<>*/function @@ -442736,10 +442677,12 @@ a==="number")switch(a){case 3:break;default:break a}else switch(a[0]){case 0:if(!a[1])break a;break;case -2:/*<>*/return 1;case +2:switch(a[1][0]){case +4:case +5:/*<>*/return 0;default:/*<>*/return 1}case 1:case 7:case -8:break a}/*<>*/return 0}/*<>*/return 1/*<>*/},function(a){/*<>*/a:{if(typeof +8:break a}/*<>*/return 0}/*<>*/return 1/*<>*/},function(a){/*<>*/a:{if(typeof a==="number")switch(a){case 1:case 3:break a}else @@ -442748,9 +442691,9 @@ switch(a[0]){case 1:case 2:case 7:case -8:break;default:break a}/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Action");return/*<>*/}(globalThis)); +8:break;default:break a}/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Action");return/*<>*/}(globalThis)); -//# 11998 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11941 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ag="+",R=" ",ar=1000,bf="-",O="Post",J=")",a1="op",M="@ ",z="<2>",aX="bin",bg="::",N="(",a0="post",Q="Pre",aW="@])",ac="->",aq="%a",ab=",@ ",aV="src/haz3lcore/statics/MakeTerm.re.tile",L="@,",bi="=",be=">",ap="))",P="in",E="Op",ay="]",az="[",am=143,an=",",ao="@,))@]",y=848054398,K=-976970511,bh="end",o=139,aY="src/haz3lcore/statics/MakeTerm.re.unsorted",I="Bin",aZ="pre",s=a.jsoo_runtime,aU=s.caml_equal,bd=s.caml_float_of_string,bc=s.caml_int_of_string,af=s.caml_string_compare,D=s.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -443181,20 +443124,20 @@ b=/*<>*/d(h[14],a);function e(a,b){/*<>*/return aU(a,b)}/*<>*/ /*<>*/var c=/*<>*/d(/*<>*/d(n[20],function(a){/*<>*/return a[2]}),b);/*<>*/return/*<>*/d(/*<>*/d(n[33],function(a){/*<>*/return e(bI,a)}),c)/*<>*/},aD,aE,v,aF,_,H,$,aa,aj,B,C,aH,aI,aJ,aK,aL,aM,aN,aO,r,aT,al,cr,/*<>*/f(ak[1],0,cu,function(a){/*<>*/return al(ct,cs,a)})],"Haz3lcore__MakeTerm");return/*<>*/}(globalThis)); -//# 12430 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12373 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -ax="src/haz3lcore/zipper/Editor.re.t",v="read_only",y="<2>",j="@ ",aw=125,u="meta",B=" =",av="@])",N="%a",au="{ ",at=",@ ",aD="src/haz3lcore/zipper/Editor.re.History.t",t="history",s="",M=963043957,aC="src/haz3lcore/zipper/Editor.re.History.affix",K=";@ ",aB="@[<2>{ ",aA="(@[",r="zipper",A="@]",ay="@ }@]",C="@[%s =@ ",az="src/haz3lcore/zipper/Editor.re.State.t",J=143,q="state",d=139,L=848054398,as=104,n=a.jsoo_runtime,I=n.caml_update_dummy;/*<>*/function +aw="src/haz3lcore/zipper/Editor.re.t",v="read_only",y="<2>",j="@ ",av=125,u="meta",B=" =",au="@])",N="%a",at="{ ",as=",@ ",aC="src/haz3lcore/zipper/Editor.re.History.t",t="history",s="",M=963043957,aB="src/haz3lcore/zipper/Editor.re.History.affix",K=";@ ",aA="@[<2>{ ",az="(@[",r="zipper",A="@]",ax="@ }@]",C="@[%s =@ ",ay="src/haz3lcore/zipper/Editor.re.State.t",J=143,q="state",d=139,L=848054398,n=a.jsoo_runtime,I=n.caml_update_dummy;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):n.caml_call_gen(a,[b])}/*<>*/function g(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):n.caml_call_gen(a,[b,c])}/*<>*/function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):n.caml_call_gen(a,[b,c,d])}/*<>*/function ar(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):n.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function aq(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):n.caml_call_gen(a,[b,c,d,e,f,g])}/*<>*/var -bN=undefined,e=n.caml_get_global_data(),E=az,H=ax,D=e.Haz3lcore__Id,aj=e.Stdlib__List,Y=e.Stdlib__Option,Q=e.Haz3lcore__Projector,l=e.Haz3lcore__Zipper,P=e.Haz3lcore__Segment,m=e.Haz3lcore__Action,c=e.Stdlib__Format,x=e.Ppx_yojson_conv_lib__Yojson_conv,b=e.Ppx_yojson_conv_lib,k=e.Ppx_yojson_conv_lib__Yojson_conv_error,G=e.Sexplib__Std,ai=e.Sexplib0__Sexp_conv_record,ak=e.Sexplib0__Sexp_conv_error,w=e.Stdlib,ad=e.Haz3lcore__Selection,O=e.Haz3lcore__MakeTerm,ab=e.Haz3lcore__Measured,$=e.Haz3lcore__TileMap,aa=e.Haz3lcore__TermRanges,Z=e.Haz3lcore__Statics,bj=[0,[18,[1,[0,[11,y,0],y]],[11,au,0]],aB],bk=q,bl=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],bm=[0,[17,0,0],A],bn=[0,[12,59,[17,[0,j,1,0],0]],K],bo=t,bp=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],bq=[0,[17,0,0],A],br=[0,[12,59,[17,[0,j,1,0],0]],K],bs=v,bt=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],bu=[0,[9,0,0],"%B"],bv=[0,[17,0,0],A],bw=[0,[17,[0,j,1,0],[12,aw,[17,0,0]]],ay],bx=[0,[15,0],N],bI=v,bJ=t,bK=q,bF=v,bG=t,bH=q,bC=[0,v],bD=[0,t],bE=[0,q],bz=v,bA=t,bB=q,bc=[0,[12,40,[18,[1,[0,0,s]],0]],aA],bd=[0,[12,44,[17,[0,j,1,0],0]],at],be=[0,[17,0,[12,41,0]],av],bf=[0,[15,0],N],a7=[0,[12,40,[18,[1,[0,0,s]],0]],aA],a8=[0,[12,44,[17,[0,j,1,0],0]],at],a9=[0,[17,0,[12,41,0]],av],a6=[0,[12,59,[17,[0,j,1,0],0]],K],a5=[0,[18,[1,[0,[11,y,0],y]],[12,91,0]],"@[<2>["],a_=[0,[17,[0,"@,",0,0],[12,93,[17,0,0]]],"@,]@]"],a$=[0,[15,0],N],aS="",aL=[0,[18,[1,[0,[11,y,0],y]],[11,au,0]],aB],aM=r,aN=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],aO=[0,[17,0,0],A],aP=[0,[12,59,[17,[0,j,1,0],0]],K],aQ=u,aR=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],aT=[0,[17,0,0],A],aU=[0,[17,[0,j,1,0],[12,aw,[17,0,0]]],ay],aV=[0,[15,0],N],a3=u,a4=r,a1=u,a2=r,aZ=[0,u],a0=[0,r],aX=u,aY=r,aK="Editor.next. Action:",aJ="Editor.Meta.t_of_yojson",aI="Editor.Meta.yojson_of_t",aH="Editor.Meta.t_of_sexp",aG="Editor.Meta.sexp_of_t",aW=az,ba=aC,bb=aC,bg=aD,bh=aD,bi=[0,0,0],by=ax,bL=e.Util__ListUtil,bM=e.Haz3lcore__Info,aF=e.Haz3lcore__Touched,aE=e.Haz3lcore__Builtins,/*<>*/z=[0,[0,[0,[0,D[16],0],1],D[15][1],0],function(a,b){/*<>*/var/*<>*/e=aE[16],/*<>*/c=/*<>*/f(O[50],b)[1],/*<>*/d=/*<>*/h(Z[18],a,e,c);/*<>*/return[0,c,d,/*<>*/f(Z[1][7],d)]/*<>*/}];function +bM=undefined,e=n.caml_get_global_data(),E=ay,H=aw,D=e.Haz3lcore__Id,aj=e.Stdlib__List,Y=e.Stdlib__Option,Q=e.Haz3lcore__Projector,l=e.Haz3lcore__Zipper,P=e.Haz3lcore__Segment,m=e.Haz3lcore__Action,c=e.Stdlib__Format,x=e.Ppx_yojson_conv_lib__Yojson_conv,b=e.Ppx_yojson_conv_lib,k=e.Ppx_yojson_conv_lib__Yojson_conv_error,G=e.Sexplib__Std,ai=e.Sexplib0__Sexp_conv_record,ak=e.Sexplib0__Sexp_conv_error,w=e.Stdlib,ad=e.Haz3lcore__Selection,O=e.Haz3lcore__MakeTerm,ab=e.Haz3lcore__Measured,$=e.Haz3lcore__TileMap,aa=e.Haz3lcore__TermRanges,Z=e.Haz3lcore__Statics,bi=[0,[18,[1,[0,[11,y,0],y]],[11,at,0]],aA],bj=q,bk=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],bl=[0,[17,0,0],A],bm=[0,[12,59,[17,[0,j,1,0],0]],K],bn=t,bo=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],bp=[0,[17,0,0],A],bq=[0,[12,59,[17,[0,j,1,0],0]],K],br=v,bs=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],bt=[0,[9,0,0],"%B"],bu=[0,[17,0,0],A],bv=[0,[17,[0,j,1,0],[12,av,[17,0,0]]],ax],bw=[0,[15,0],N],bH=v,bI=t,bJ=q,bE=v,bF=t,bG=q,bB=[0,v],bC=[0,t],bD=[0,q],by=v,bz=t,bA=q,bb=[0,[12,40,[18,[1,[0,0,s]],0]],az],bc=[0,[12,44,[17,[0,j,1,0],0]],as],bd=[0,[17,0,[12,41,0]],au],be=[0,[15,0],N],a6=[0,[12,40,[18,[1,[0,0,s]],0]],az],a7=[0,[12,44,[17,[0,j,1,0],0]],as],a8=[0,[17,0,[12,41,0]],au],a5=[0,[12,59,[17,[0,j,1,0],0]],K],a4=[0,[18,[1,[0,[11,y,0],y]],[12,91,0]],"@[<2>["],a9=[0,[17,[0,"@,",0,0],[12,93,[17,0,0]]],"@,]@]"],a_=[0,[15,0],N],aR="",aK=[0,[18,[1,[0,[11,y,0],y]],[11,at,0]],aA],aL=r,aM=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],aN=[0,[17,0,0],A],aO=[0,[12,59,[17,[0,j,1,0],0]],K],aP=u,aQ=[0,[18,[1,[0,0,s]],[2,0,[11,B,[17,[0,j,1,0],0]]]],C],aS=[0,[17,0,0],A],aT=[0,[17,[0,j,1,0],[12,av,[17,0,0]]],ax],aU=[0,[15,0],N],a2=u,a3=r,a0=u,a1=r,aY=[0,u],aZ=[0,r],aW=u,aX=r,aJ="Editor.next. Action:",aI="Editor.Meta.t_of_yojson",aH="Editor.Meta.yojson_of_t",aG="Editor.Meta.t_of_sexp",aF="Editor.Meta.sexp_of_t",aV=ay,a$=aB,ba=aB,bf=aC,bg=aC,bh=[0,0,0],bx=aw,bK=e.Util__ListUtil,bL=e.Haz3lcore__Info,aE=e.Haz3lcore__Touched,aD=e.Haz3lcore__Builtins,/*<>*/z=[0,[0,[0,[0,D[16],0],1],D[15][1],0],function(a,b){/*<>*/var/*<>*/e=aD[16],/*<>*/c=/*<>*/f(O[50],b)[1],/*<>*/d=/*<>*/h(Z[18],a,e,c);/*<>*/return[0,c,d,/*<>*/f(Z[1][7],d)]/*<>*/}];function _(a){/*<>*/var/*<>*/b=/*<>*/g(l[43],0,a[1]),/*<>*/c=/*<>*/f(O[47],b),d=c[2],e=c[1],/*<>*/i=a[2],/*<>*/j=/*<>*/f(P[54],b),/*<>*/k=/*<>*/g($[49],0,b),/*<>*/m=/*<>*/f(aa[51],b),/*<>*/n=/*<>*/h(ab[45],0,0,b);/*<>*/return[0,a[1],b,n,e,m,d,k,j,i]/*<>*/}function ac(a,b){/*<>*/return a[1]?/*<>*/g(z[2],a,b):z[1]/*<>*/}function ae(a,b,c){/*<>*/var/*<>*/d=/*<>*/g(l[43],0,a[1]),/*<>*/e=/*<>*/f(O[47],d),i=e[2],j=e[1],/*<>*/k=/*<>*/h(ab[45],[0,c],[0,b],d),/*<>*/m=a[2],/*<>*/n=/*<>*/f(P[54],d),/*<>*/o=/*<>*/g($[49],0,d),/*<>*/p=/*<>*/f(aa[51],d);/*<>*/return[0,a[1],d,k,j,p,i,o,n,m]/*<>*/}function -af(a,b,c,d){/*<>*/return a[1]?/*<>*/f(m[64],b)?/*<>*/g(z[2],a,c):d:z[1]/*<>*/}/*<>*/var/*<>*/o=[0,_,ac,function(a,b){/*<>*/var/*<>*/c=ac(a,b),/*<>*/d=_(/*<>*/g(Q[as][3],b,c[2])),/*<>*/e=/*<>*/f(ad[22],d[1][1]);/*<>*/return[0,0,aF[1],e,c,d]/*<>*/},function(a){/*<>*/return[0,a[2],a[5][3],a[5][5],a[1]]/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aG)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aH)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aI)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aJ)/*<>*/},ae,af,function(a,b,c,d,e){/*<>*/var/*<>*/s=/*<>*/f(m[57],c),/*<>*/t=/*<>*/g(w[28],aK,s);/*<>*/ /*<>*/f(w[46],t);/*<>*/var -k=e[2],/*<>*/n=af(b,c,d,e[4]),/*<>*/o=/*<>*/g(Q[as][3],d,n[2]);if(/*<>*/f(m[64],c))var +af(a,b,c,d){/*<>*/return a[1]?/*<>*/f(m[64],b)?/*<>*/g(z[2],a,c):d:z[1]/*<>*/}/*<>*/var/*<>*/o=[0,_,ac,function(a,b){/*<>*/var/*<>*/c=ac(a,b),/*<>*/d=_(/*<>*/g(Q[68][3],b,c[2])),/*<>*/e=/*<>*/f(ad[22],d[1][1]);/*<>*/return[0,0,aE[1],e,c,d]/*<>*/},function(a){/*<>*/return[0,a[2],a[5][3],a[5][5],a[1]]/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aF)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aG)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aH)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aI)/*<>*/},ae,af,function(a,b,c,d,e){/*<>*/var/*<>*/s=/*<>*/f(m[57],c),/*<>*/t=/*<>*/g(w[28],aJ,s);/*<>*/ /*<>*/f(w[46],t);/*<>*/var +k=e[2],/*<>*/n=af(b,c,d,e[4]),/*<>*/o=/*<>*/g(Q[68][3],d,n[2]);if(/*<>*/f(m[64],c))var i=ae(o,k,e[5][3]);else var h=e[5],i=[0,o[1],h[2],h[3],h[4],h[5],h[6],h[7],h[8],h[9]];a:{b:if(typeof @@ -443209,49 +443152,49 @@ r=j[1];if(1!==r[0])break b;if(typeof r[1]==="number")break;break b}break b;default:break b}var p=e[1];break a}var p=/*<>*/g(l[64],i[3],i[1])[2]}/*<>*/return[0,p,k,/*<>*/f(ad[22],i[1][1]),n,i]/*<>*/}],ag=[];function -ah(e,b){/*<>*/ /*<>*/g(c[d],e,aL);/*<>*/ /*<>*/h(c[d],e,aN,aM);var -a=b[1];/*<>*/ /*<>*/f(f(ag[1],e),a);/*<>*/ /*<>*/g(c[d],e,aO);/*<>*/ /*<>*/g(c[d],e,aP);/*<>*/ /*<>*/h(c[d],e,aR,aQ);/*<>*/(function(a){/*<>*/return/*<>*/g(c[13],e,aS)/*<>*/}(b[2]));/*<>*/ /*<>*/g(c[d],e,aT);/*<>*/return/*<>*/g(c[d],e,aU)/*<>*/}I(ag,[0,l[2]]);/*<>*/var/*<>*/i=[0,ah,function(a){/*<>*/return/*<>*/h(c[J],aV,ah,a)/*<>*/},function(a){/*<>*/return/*<>*/aq(ai[3],aW,[0,aY,1,l[4],[0,aX,1,o[6],0]],function(a){/*<>*/return a!==u?a!==r?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,aZ,[0,/*<>*/f(o[5],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,a0,[0,/*<>*/f(l[5],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof +ah(e,b){/*<>*/ /*<>*/g(c[d],e,aK);/*<>*/ /*<>*/h(c[d],e,aM,aL);var +a=b[1];/*<>*/ /*<>*/f(f(ag[1],e),a);/*<>*/ /*<>*/g(c[d],e,aN);/*<>*/ /*<>*/g(c[d],e,aO);/*<>*/ /*<>*/h(c[d],e,aQ,aP);/*<>*/(function(a){/*<>*/return/*<>*/g(c[13],e,aR)/*<>*/}(b[2]));/*<>*/ /*<>*/g(c[d],e,aS);/*<>*/return/*<>*/g(c[d],e,aT)/*<>*/}I(ag,[0,l[2]]);/*<>*/var/*<>*/i=[0,ah,function(a){/*<>*/return/*<>*/h(c[J],aU,ah,a)/*<>*/},function(a){/*<>*/return/*<>*/aq(ai[3],aV,[0,aX,1,l[4],[0,aW,1,o[6],0]],function(a){/*<>*/return a!==u?a!==r?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,aY,[0,/*<>*/f(o[5],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,aZ,[0,/*<>*/f(l[5],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&M===a[1]){/*<>*/var/*<>*/e=[0,0],/*<>*/i=[0,0],/*<>*/c=[0,0],/*<>*/j=[0,0];/*<>*/(function(a){/*<>*/var g=a;/*<>*/for(;;){if(!g)/*<>*/return;var h=g[1],k=h[2],d=h[1],m=g[2];if(d!==u)if(d!==r){/*<>*/if(/*<>*/f(b[2],x[22]))j[1]=[0,d,/*<>*/f(b[2],j)]}else if(/*<>*/f(b[2],e))c[1]=[0,d,/*<>*/f(b[2],c)];else e[1]=[0,/*<>*/f(l[6],k)];else if(/*<>*/f(b[2],i))c[1]=[0,d,/*<>*/f(b[2],c)];else i[1]=[0,/*<>*/f(o[8],k)];g=m}/*<>*/}(a[2]));if(/*<>*/f(b[2],c)){/*<>*/ /*<>*/var n=/*<>*/f(b[2],c);/*<>*/return/*<>*/h(k[10],E,n,a)}if(/*<>*/f(b[2],j)){/*<>*/ /*<>*/var -p=/*<>*/f(b[2],j);/*<>*/return/*<>*/h(k[11],E,p,a)}/*<>*/var/*<>*/d=/*<>*/f(b[2],e),/*<>*/m=/*<>*/f(b[2],i);if(d&&m)/*<>*/return[0,d[1],m[1]];/*<>*/var/*<>*/q=[0,[0,0===/*<>*/f(b[2],i)?1:0,a1],0],/*<>*/s=[0,[0,0===/*<>*/f(b[2],e)?1:0,a2],q];/*<>*/return/*<>*/h(k[13],E,a,s)}/*<>*/return/*<>*/g(k[14],E,a)/*<>*/},function(a){/*<>*/var -b=a[1],c=[0,[0,a3,f(o[7],a[2])],0];/*<>*/return[0,M,[0,[0,a4,f(l[7],b)],c]]/*<>*/},function(a,b){/*<>*/return[0,a,/*<>*/g(o[3],b,a)]/*<>*/},function(a,b,c,d,e){/*<>*/var +p=/*<>*/f(b[2],j);/*<>*/return/*<>*/h(k[11],E,p,a)}/*<>*/var/*<>*/d=/*<>*/f(b[2],e),/*<>*/m=/*<>*/f(b[2],i);if(d&&m)/*<>*/return[0,d[1],m[1]];/*<>*/var/*<>*/q=[0,[0,0===/*<>*/f(b[2],i)?1:0,a0],0],/*<>*/s=[0,[0,0===/*<>*/f(b[2],e)?1:0,a1],q];/*<>*/return/*<>*/h(k[13],E,a,s)}/*<>*/return/*<>*/g(k[14],E,a)/*<>*/},function(a){/*<>*/var +b=a[1],c=[0,[0,a2,f(o[7],a[2])],0];/*<>*/return[0,M,[0,[0,a3,f(l[7],b)],c]]/*<>*/},function(a,b){/*<>*/return[0,a,/*<>*/g(o[3],b,a)]/*<>*/},function(a,b,c,d,e){/*<>*/var f=a?a[1]:0;/*<>*/return[0,d,/*<>*/ar(o[11],[0,f],b,c,d,e[2])]/*<>*/}],R=[];function -F(e,b){/*<>*/ /*<>*/g(c[d],e,a5);/*<>*/ /*<>*/h(aj[26],function(a,b){/*<>*/if(a)/*<>*/ /*<>*/g(c[d],e,a6);/*<>*/(function(a){/*<>*/var -b=a[2],h=a[1];/*<>*/ /*<>*/g(c[d],e,a7);f(f(R[2],e),h);/*<>*/ /*<>*/g(c[d],e,a8);f(f(R[1],e),b);return g(c[d],e,a9)/*<>*/}(b));/*<>*/return 1/*<>*/},0,b);/*<>*/return/*<>*/g(c[d],e,a_)/*<>*/}I(R,[0,i[1],m[56]]);function +F(e,b){/*<>*/ /*<>*/g(c[d],e,a4);/*<>*/ /*<>*/h(aj[26],function(a,b){/*<>*/if(a)/*<>*/ /*<>*/g(c[d],e,a5);/*<>*/(function(a){/*<>*/var +b=a[2],h=a[1];/*<>*/ /*<>*/g(c[d],e,a6);f(f(R[2],e),h);/*<>*/ /*<>*/g(c[d],e,a7);f(f(R[1],e),b);return g(c[d],e,a8)/*<>*/}(b));/*<>*/return 1/*<>*/},0,b);/*<>*/return/*<>*/g(c[d],e,a9)/*<>*/}I(R,[0,i[1],m[56]]);function S(a){/*<>*/return/*<>*/g(G[40],function(a){/*<>*/if(1===a[0]){var b=a[1];if(b){var c=b[2];if(c&&!c[2]){/*<>*/var -d=c[1],/*<>*/e=/*<>*/f(m[58],b[1]);/*<>*/return[0,e,/*<>*/f(i[3],d)]}}}/*<>*/return/*<>*/h(ak[2],ba,2,a)/*<>*/},a)/*<>*/}function +d=c[1],/*<>*/e=/*<>*/f(m[58],b[1]);/*<>*/return[0,e,/*<>*/f(i[3],d)]}}}/*<>*/return/*<>*/h(ak[2],a$,2,a)/*<>*/},a)/*<>*/}function T(a){/*<>*/return/*<>*/g(G[39],function(a){var b=a[2],c=f(m[59],a[1]);return[1,[0,c,[0,f(i[4],b),0]]]},a)/*<>*/}function U(a){/*<>*/return g(x[45][30],function(a){/*<>*/if(typeof a!=="number"&&L===a[1]){var b=a[2];if(b){var c=b[2];if(c&&!c[2]){var -d=c[1],e=f(m[60],b[1]);return[0,e,f(i[5],d)]}}}return h(k[2],bb,2,a)},a)}function +d=c[1],e=f(m[60],b[1]);return[0,e,f(i[5],d)]}}}return h(k[2],ba,2,a)},a)}function V(a){/*<>*/return g(x[45][14],function(a){var b=a[2],c=f(m[61],a[1]);return[0,L,[0,c,[0,f(i[6],b),0]]]},a)}var W=[];function al(a,b){/*<>*/var -e=b[2],h=b[1];/*<>*/ /*<>*/g(c[d],a,bc);f(f(W[2],a),h);/*<>*/ /*<>*/g(c[d],a,bd);f(f(W[1],a),e);return g(c[d],a,be)/*<>*/}I(W,[0,F,F]);/*<>*/var/*<>*/p=[0,F,function(a){/*<>*/return/*<>*/h(c[J],a$,F,a)/*<>*/},S,T,U,V,al,function(a){/*<>*/return/*<>*/h(c[J],bf,al,a)/*<>*/},function(a){/*<>*/if(1===a[0]){var +e=b[2],h=b[1];/*<>*/ /*<>*/g(c[d],a,bb);f(f(W[2],a),h);/*<>*/ /*<>*/g(c[d],a,bc);f(f(W[1],a),e);return g(c[d],a,bd)/*<>*/}I(W,[0,F,F]);/*<>*/var/*<>*/p=[0,F,function(a){/*<>*/return/*<>*/h(c[J],a_,F,a)/*<>*/},S,T,U,V,al,function(a){/*<>*/return/*<>*/h(c[J],be,al,a)/*<>*/},function(a){/*<>*/if(1===a[0]){var b=a[1];if(b){var c=b[2];if(c&&!c[2]){/*<>*/var -d=c[1],/*<>*/e=S(b[1]);/*<>*/return[0,e,S(d)]}}}/*<>*/return/*<>*/h(ak[2],bg,2,a)/*<>*/},function(a){/*<>*/var +d=c[1],/*<>*/e=S(b[1]);/*<>*/return[0,e,S(d)]}}}/*<>*/return/*<>*/h(ak[2],bf,2,a)/*<>*/},function(a){/*<>*/var b=a[2],c=T(a[1]);return[1,[0,c,[0,T(b),0]]]/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&L===a[1]){var b=a[2];if(b){var c=b[2];if(c&&!c[2]){var -d=c[1],e=U(b[1]);return[0,e,U(d)]}}}return h(k[2],bh,2,a)/*<>*/},function(a){/*<>*/var -b=a[2],c=V(a[1]);return[0,L,[0,c,[0,V(b),0]]]/*<>*/},bi,function(a,b,c){/*<>*/return[0,[0,[0,a,b],c[1]],0]/*<>*/}],X=[];function -am(a,b){/*<>*/ /*<>*/g(c[d],a,bj);/*<>*/ /*<>*/h(c[d],a,bl,bk);var -e=b[1];/*<>*/ /*<>*/f(f(X[2],a),e);/*<>*/ /*<>*/g(c[d],a,bm);/*<>*/ /*<>*/g(c[d],a,bn);/*<>*/ /*<>*/h(c[d],a,bp,bo);var -i=b[2];/*<>*/ /*<>*/f(f(X[1],a),i);/*<>*/ /*<>*/g(c[d],a,bq);/*<>*/ /*<>*/g(c[d],a,br);/*<>*/ /*<>*/h(c[d],a,bt,bs);var -j=b[3];/*<>*/ /*<>*/f(/*<>*/g(c[d],a,bu),j);/*<>*/ /*<>*/g(c[d],a,bv);/*<>*/return/*<>*/g(c[d],a,bw)/*<>*/}I(X,[0,p[7],i[1]]);function +d=c[1],e=U(b[1]);return[0,e,U(d)]}}}return h(k[2],bg,2,a)/*<>*/},function(a){/*<>*/var +b=a[2],c=V(a[1]);return[0,L,[0,c,[0,V(b),0]]]/*<>*/},bh,function(a,b,c){/*<>*/return[0,[0,[0,a,b],c[1]],0]/*<>*/}],X=[];function +am(a,b){/*<>*/ /*<>*/g(c[d],a,bi);/*<>*/ /*<>*/h(c[d],a,bk,bj);var +e=b[1];/*<>*/ /*<>*/f(f(X[2],a),e);/*<>*/ /*<>*/g(c[d],a,bl);/*<>*/ /*<>*/g(c[d],a,bm);/*<>*/ /*<>*/h(c[d],a,bo,bn);var +i=b[2];/*<>*/ /*<>*/f(f(X[1],a),i);/*<>*/ /*<>*/g(c[d],a,bp);/*<>*/ /*<>*/g(c[d],a,bq);/*<>*/ /*<>*/h(c[d],a,bs,br);var +j=b[3];/*<>*/ /*<>*/f(/*<>*/g(c[d],a,bt),j);/*<>*/ /*<>*/g(c[d],a,bu);/*<>*/return/*<>*/g(c[d],a,bv)/*<>*/}I(X,[0,p[7],i[1]]);function an(a,b){/*<>*/var c=b[3],d=b[2],e=b[1][2];/*<>*/return[0,[0,/*<>*/f(a,b[1][1]),e],d,c]/*<>*/}function ao(a){/*<>*/var @@ -443259,9 +443202,9 @@ c=a[2],b=c[1];if(!b)/*<>*/return 0;var d=b[1];/*<>*/return[0,[0,d[2],[0,b[2],[0,[0,d[1],a[1]],c[2]]],a[3]]]/*<>*/}function ap(a){/*<>*/var c=a[2],b=c[2],e=c[1];if(!b)/*<>*/return 0;var -d=b[1];/*<>*/return[0,[0,d[2],[0,[0,[0,d[1],a[1]],e],b[2]],a[3]]]/*<>*/}n.caml_register_global(106,[0,z,o,i,p,am,function(a){/*<>*/return/*<>*/h(c[J],bx,am,a)/*<>*/},function(a){/*<>*/return/*<>*/aq(ai[3],by,[0,bB,1,i[3],[0,bA,1,p[9],[0,bz,1,G[7],0]]],function(a){/*<>*/return a!==t?a!==v?a!==q?-1:0:2:1/*<>*/},0,function(a){/*<>*/var +d=b[1];/*<>*/return[0,[0,d[2],[0,[0,[0,d[1],a[1]],e],b[2]],a[3]]]/*<>*/}n.caml_register_global(106,[0,z,o,i,p,am,function(a){/*<>*/return/*<>*/h(c[J],bw,am,a)/*<>*/},function(a){/*<>*/return/*<>*/aq(ai[3],bx,[0,bA,1,i[3],[0,bz,1,p[9],[0,by,1,G[7],0]]],function(a){/*<>*/return a!==t?a!==v?a!==q?-1:0:2:1/*<>*/},0,function(a){/*<>*/var b=a[2];/*<>*/return[0,a[1],b[1],b[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[2],c=a[1],/*<>*/d=[0,[1,[0,bC,[0,/*<>*/f(G[6],a[3]),0]]],0],/*<>*/e=[0,[1,[0,bD,[0,/*<>*/f(p[10],b),0]]],d];/*<>*/return[1,[0,[1,[0,bE,[0,/*<>*/f(i[4],c),0]]],e]]/*<>*/},function(a){/*<>*/if(typeof +b=a[2],c=a[1],/*<>*/d=[0,[1,[0,bB,[0,/*<>*/f(G[6],a[3]),0]]],0],/*<>*/e=[0,[1,[0,bC,[0,/*<>*/f(p[10],b),0]]],d];/*<>*/return[1,[0,[1,[0,bD,[0,/*<>*/f(i[4],c),0]]],e]]/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&M===a[1]){/*<>*/var/*<>*/e=[0,0],/*<>*/j=[0,0],/*<>*/l=[0,0],/*<>*/c=[0,0],/*<>*/m=[0,0];/*<>*/(function(a){/*<>*/var g=a;/*<>*/for(;;){if(!g)/*<>*/return;var k=g[1],h=k[2],d=k[1],n=g[2];if(d!==t)if(d!==v)if(d!==q){/*<>*/if(/*<>*/f(b[2],x[22]))m[1]=[0,d,/*<>*/f(b[2],m)]}else if(/*<>*/f(b[2],e))c[1]=[0,d,/*<>*/f(b[2],c)];else @@ -443269,28 +443212,28 @@ e[1]=[0,/*<>*/f(i[5],h)];else if(/*<>*/f(x[45][18],h)];else if(/*<>*/f(b[2],j))c[1]=[0,d,/*<>*/f(b[2],c)];else j[1]=[0,/*<>*/f(p[11],h)];g=n}/*<>*/}(a[2]));if(/*<>*/f(b[2],c)){/*<>*/ /*<>*/var r=/*<>*/f(b[2],c);/*<>*/return/*<>*/h(k[10],H,r,a)}if(/*<>*/f(b[2],m)){/*<>*/ /*<>*/var -s=/*<>*/f(b[2],m);/*<>*/return/*<>*/h(k[11],H,s,a)}/*<>*/var/*<>*/d=/*<>*/f(b[2],e),/*<>*/n=/*<>*/f(b[2],j),/*<>*/o=/*<>*/f(b[2],l);if(d&&n&&o)/*<>*/return[0,d[1],n[1],o[1]];/*<>*/var/*<>*/u=[0,[0,0===/*<>*/f(b[2],l)?1:0,bF],0],/*<>*/w=[0,[0,0===/*<>*/f(b[2],j)?1:0,bG],u],/*<>*/y=[0,[0,0===/*<>*/f(b[2],e)?1:0,bH],w];/*<>*/return/*<>*/h(k[13],H,a,y)}/*<>*/return/*<>*/g(k[14],H,a)/*<>*/},function(a){/*<>*/var -b=a[2],c=a[1],d=[0,[0,bI,f(x[45][2],a[3])],0],e=[0,[0,bJ,f(p[12],b)],d];/*<>*/return[0,M,[0,[0,bK,f(i[6],c)],e]]/*<>*/},function(a,b,c){/*<>*/var +s=/*<>*/f(b[2],m);/*<>*/return/*<>*/h(k[11],H,s,a)}/*<>*/var/*<>*/d=/*<>*/f(b[2],e),/*<>*/n=/*<>*/f(b[2],j),/*<>*/o=/*<>*/f(b[2],l);if(d&&n&&o)/*<>*/return[0,d[1],n[1],o[1]];/*<>*/var/*<>*/u=[0,[0,0===/*<>*/f(b[2],l)?1:0,bE],0],/*<>*/w=[0,[0,0===/*<>*/f(b[2],j)?1:0,bF],u],/*<>*/y=[0,[0,0===/*<>*/f(b[2],e)?1:0,bG],w];/*<>*/return/*<>*/h(k[13],H,a,y)}/*<>*/return/*<>*/g(k[14],H,a)/*<>*/},function(a){/*<>*/var +b=a[2],c=a[1],d=[0,[0,bH,f(x[45][2],a[3])],0],e=[0,[0,bI,f(p[12],b)],d];/*<>*/return[0,M,[0,[0,bJ,f(i[6],c)],e]]/*<>*/},function(a,b,c){/*<>*/var d=a?a[1]:0,e=p[13];/*<>*/return[0,/*<>*/g(i[7],b,c),e,d]/*<>*/},an,function(a,b,c,d,e){/*<>*/var g=a?a[1]:0,/*<>*/j=/*<>*/ar(i[8],[0,g],b,c,d,e[1]),k=/*<>*/f(m[65],c)?/*<>*/h(p[14],c,e[1],e[2]):e[2];/*<>*/return[0,j,k,e[3]]/*<>*/},function(a,b){/*<>*/var/*<>*/d=/*<>*/g(o[2],a,b[1][1]),c=b[1][2];/*<>*/return[0,[0,b[1][1],[0,c[1],c[2],c[3],d,c[5]]],b[2],b[3]]/*<>*/},ao,ap,function(a){/*<>*/ /*<>*/var b=ao(a);/*<>*/return/*<>*/f(Y[11],b)/*<>*/},function(a){/*<>*/ /*<>*/var -b=ap(a);/*<>*/return/*<>*/f(Y[11],b)/*<>*/},function(a,b){/*<>*/return[0,a[1],a[2],b]/*<>*/},function(a,b){/*<>*/var/*<>*/e=/*<>*/g(l[43],0,a[1][1]),/*<>*/h=/*<>*/f(P[17],e),/*<>*/c=/*<>*/f(bL[29],h);/*<>*/if(!c)/*<>*/return 0;/*<>*/ /*<>*/var -d=/*<>*/g(D[15][18],c[1][1],b);/*<>*/return d?[0,/*<>*/f(bM[183],d[1])]:0/*<>*/},function(a){/*<>*/return a[1][1][5]/*<>*/},function(c,b){/*<>*/return an(function(a){/*<>*/ /*<>*/var -b=/*<>*/g(Q[43][10],c,a[5]);/*<>*/return[0,a[1],a[2],a[3],a[4],b]/*<>*/},b)/*<>*/},function(a,b){/*<>*/ /*<>*/var +b=ap(a);/*<>*/return/*<>*/f(Y[11],b)/*<>*/},function(a,b){/*<>*/return[0,a[1],a[2],b]/*<>*/},function(a,b){/*<>*/var/*<>*/e=/*<>*/g(l[43],0,a[1][1]),/*<>*/h=/*<>*/f(P[17],e),/*<>*/c=/*<>*/f(bK[29],h);/*<>*/if(!c)/*<>*/return 0;/*<>*/ /*<>*/var +d=/*<>*/g(D[15][18],c[1][1],b);/*<>*/return d?[0,/*<>*/f(bL[183],d[1])]:0/*<>*/},function(a){/*<>*/return a[1][1][5]/*<>*/},function(c,b){/*<>*/return an(function(a){/*<>*/ /*<>*/var +b=/*<>*/g(Q[25][10],c,a[5]);/*<>*/return[0,a[1],a[2],a[3],a[4],b]/*<>*/},b)/*<>*/},function(a,b){/*<>*/ /*<>*/var c=/*<>*/g(D[15][18],b,a[1][2][5][7]);if(c)/*<>*/return[0,[0,c[1]]];/*<>*/ /*<>*/var d=/*<>*/g(aj[40],function(a){/*<>*/return/*<>*/n.caml_equal(a[1],b)/*<>*/},a[1][2][5][8]);/*<>*/return/*<>*/f(/*<>*/f(Y[7],function(a){/*<>*/return[1,a]/*<>*/}),d)/*<>*/}],"Haz3lcore__Editor");return/*<>*/}(globalThis)); -//# 12530 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12473 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -L="%d",K="<2>",J="canPass",I="cantEven",s="CantEven",r="CanEnter",H="@,",G="src/haz3lcore/zipper/action/Move.re.movability",F="canEnter",q="CanPass",t=139,u=-976970511,v=848054398,o=a.jsoo_runtime,ag=o.caml_maybe_attach_backtrace;/*<>*/function +L="%d",K="<2>",J="canPass",I="cantEven",s="CantEven",r="CanEnter",H="@,",G="src/haz3lcore/zipper/action/Move.re.movability",E="canEnter",q="CanPass",t=139,u=-976970511,v=848054398,o=a.jsoo_runtime,ah=o.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):o.caml_call_gen(a,[b,c])}/*<>*/function p(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):o.caml_call_gen(a,[b,c,d])}var -b=o.caml_get_global_data(),d=G,l=G,i=b.Util__OptUtil,k=b.Stdlib,n=b.Stdlib__Int,j=b.Stdlib__List,g=b.Haz3lcore__Zipper,z=b.Haz3lcore__Measured,E=b.Util__Direction,y=b.Haz3lcore__Secondary,A=b.Haz3lcore__Unicode,c=b.Stdlib__Format,x=b.Ppx_yojson_conv_lib__Yojson_conv,m=b.Ppx_yojson_conv_lib__Yojson_conv_error,w=b.Sexplib__Std,h=b.Sexplib0__Sexp_conv_error,ad=[0,0,0],$=[0,"src/haz3lcore/zipper/action/Move.re",14,2],M=s,N=q,O=[0,[12,40,[18,[1,[0,[11,K,0],K]],[11,"CanEnter (",[17,[0,H,0,0],0]]]],"(@[<2>CanEnter (@,"],P=[0,[4,0,0,0,0],L],Q=[0,[12,44,[17,[0,"@ ",1,0],0]],",@ "],R=[0,[4,0,0,0,0],L],S=[0,[17,[0,H,0,0],[11,"))",[17,0,0]]],"@,))@]"],T=[0,[15,0],"%a"],X=[0,v,[0,[0,u,s],0]],Y=[0,v,[0,[0,u,q],0]],Z=[0,u,r],U=[0,s],V=[0,q],W=[0,r],ae=b.Haz3lcore__Indicated,af=b.Haz3lcore__Action,ac=b.Haz3lcore__Projector,ab=b.Haz3lcore__Siblings,aa=b.Assert_failure,_=b.Haz3lcore__Token;/*<>*/function +b=o.caml_get_global_data(),d=G,l=G,i=b.Util__OptUtil,k=b.Stdlib,n=b.Stdlib__Int,j=b.Stdlib__List,g=b.Haz3lcore__Zipper,z=b.Haz3lcore__Measured,F=b.Util__Direction,y=b.Haz3lcore__Secondary,A=b.Haz3lcore__Unicode,c=b.Stdlib__Format,x=b.Ppx_yojson_conv_lib__Yojson_conv,m=b.Ppx_yojson_conv_lib__Yojson_conv_error,w=b.Sexplib__Std,h=b.Sexplib0__Sexp_conv_error,ae=[0,0,0],$=[0,"src/haz3lcore/zipper/action/Move.re",14,2],M=s,N=q,O=[0,[12,40,[18,[1,[0,[11,K,0],K]],[11,"CanEnter (",[17,[0,H,0,0],0]]]],"(@[<2>CanEnter (@,"],P=[0,[4,0,0,0,0],L],Q=[0,[12,44,[17,[0,"@ ",1,0],0]],",@ "],R=[0,[4,0,0,0,0],L],S=[0,[17,[0,H,0,0],[11,"))",[17,0,0]]],"@,))@]"],T=[0,[15,0],"%a"],X=[0,v,[0,[0,u,s],0]],Y=[0,v,[0,[0,u,q],0]],Z=[0,u,r],U=[0,s],V=[0,q],W=[0,r],af=b.Haz3lcore__Indicated,ag=b.Haz3lcore__Action,ad=b.Stdlib__Option,ac=b.Haz3lcore__Projector,ab=b.Haz3lcore__Siblings,aa=b.Assert_failure,_=b.Haz3lcore__Token;/*<>*/function B(a,b){/*<>*/if(typeof b==="number")return b?/*<>*/f(c[13],a,M):/*<>*/f(c[13],a,N);var d=b[2],g=b[1];/*<>*/ /*<>*/f(c[t],a,O);e(/*<>*/f(c[t],a,P),g);/*<>*/ /*<>*/f(c[t],a,Q);e(/*<>*/f(c[t],a,R),d);return f(c[t],a,S)/*<>*/}function -C(a,b,c){/*<>*/if(c>=/*<>*/e(j[1],b))/*<>*/throw/*<>*/ag([0,aa,$],1);a:{switch(a){case +C(a,b,c){/*<>*/if(c>=/*<>*/e(j[1],b))/*<>*/throw/*<>*/ah([0,aa,$],1);a:{switch(a){case 1:if(!b||b[2]||0!==c)break a;break;case 0:break;default:break a}/*<>*/var/*<>*/g=/*<>*/f(j[8],b,c),/*<>*/d=/*<>*/e(_[8],g)-2|0;return d<0?0:[0,c,d]}/*<>*/return 0/*<>*/}function D(z,b){/*<>*/var @@ -443317,11 +443260,11 @@ v=f[1];/*<>*/if(/*<>*/return[0,t,u]/*<>*/}o.caml_register_global(54,[0,B,function(a){/*<>*/return/*<>*/p(c[143],T,B,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var -c=a[1];b:if(c!==r){c:if(c!==q){if(c!==s){if(c===F)break b;if(c===J)break c;if(c!==I)break a}/*<>*/return 1}/*<>*/return 0}/*<>*/return/*<>*/f(h[5],d,a)}var +u=o;/*<>*/return[0,t,u]/*<>*/}o.caml_register_global(55,[0,B,function(a){/*<>*/return/*<>*/p(c[143],T,B,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var +c=a[1];b:if(c!==r){c:if(c!==q){if(c!==s){if(c===E)break b;if(c===J)break c;if(c!==I)break a}/*<>*/return 1}/*<>*/return 0}/*<>*/return/*<>*/f(h[5],d,a)}var g=a[1];if(!g)/*<>*/return/*<>*/f(h[7],d,a);var k=g[1];if(0!==k[0])/*<>*/return/*<>*/f(h[6],d,a);var -b=k[1];b:if(b!==r){c:if(b!==q){if(b!==s){if(b===F)break b;if(b===J)break c;if(b!==I)break a}/*<>*/return/*<>*/f(h[3],d,a)}/*<>*/return/*<>*/f(h[3],d,a)}var +b=k[1];b:if(b!==r){c:if(b!==q){if(b!==s){if(b===E)break b;if(b===J)break c;if(b!==I)break a}/*<>*/return/*<>*/f(h[3],d,a)}/*<>*/return/*<>*/f(h[3],d,a)}var i=g[2];/*<>*/if(i){var j=i[2];if(j&&!j[2]){/*<>*/var l=j[1],/*<>*/m=/*<>*/e(w[16],i[1]);/*<>*/return[0,m,/*<>*/e(w[16],l)]}}/*<>*/return/*<>*/p(h[4],d,b,a)}/*<>*/return/*<>*/f(h[8],d,a)/*<>*/},function(a){/*<>*/if(typeof @@ -443348,7 +443291,7 @@ A(a,b){/*<>*/return[0,/*<>*/ /*<>*/var f=/*<>*/e(/*<>*/e(g[30],[0,b,c]),d);/*<>*/return/*<>*/e(/*<>*/e(g[50],a),f)/*<>*/}function d(a,b,c){/*<>*/var -d=c[4],/*<>*/e=D(a,c);if(0!==c[1][2])/*<>*/return r(b,c);/*<>*/if(!d&&0!==/*<>*/f(ac[96][1],b,c))/*<>*/return/*<>*/f(g[50],b,c);if(!b){if(d)return 2===a?x(c):[0,/*<>*/f(g[29],g[1][7],c)];var +d=c[4],/*<>*/e=D(a,c);if(0!==c[1][2])/*<>*/return r(b,c);/*<>*/if(!d&&0!==/*<>*/f(ac[62][1],b,c))/*<>*/return/*<>*/f(g[50],b,c);if(!b){if(d)return 2===a?x(c):[0,/*<>*/f(g[29],g[1][7],c)];var h=e[1];return typeof h==="number"?/*<>*/f(g[50],b,c):B(b,h[1],h[2],c)}if(!d){var j=e[2];return typeof @@ -443356,74 +443299,70 @@ j==="number"?/*<>*/f(g[50],b,c):A(j[1 i=e[2],k=d[1],l=d[2];if(typeof i!=="number"&&l===i[2])/*<>*/return r(b,c);return 2===a?r(b,c):y(k,d[2],c)/*<>*/}function C(a,b){/*<>*/var/*<>*/c=/*<>*/e(h,b),j=c[2],k=c[1],/*<>*/d=/*<>*/f(g[50],a,b);if(!d)/*<>*/return 1;/*<>*/var/*<>*/i=/*<>*/e(h,d[1]),m=k!==i[1]?1:0,l=i[2],n=m||(j===l?1:0);return n/*<>*/}function -v(a,b,c,d,e){/*<>*/var -f=e[1]>*/}function -m(l,r,c,d){/*<>*/var/*<>*/j=/*<>*/e(h,d),a=c[1]>*/var -i=b?0:1,/*<>*/g=function(a,b){/*<>*/var -g=a,d=b;/*<>*/for(;;){/*<>*/var/*<>*/n=/*<>*/e(h,d),/*<>*/s=/*<>*/p(z[13][11],i,n[2],c[2]),/*<>*/m=/*<>*/p(z[13][11],i,n[1],c[1]);a:{switch(s){case -0:/*<>*/if(!m)/*<>*/return d;break;case -1:/*<>*/if(!m)break a;break;default:/*<>*/if(!m){if(l)/*<>*/return v(l[1],i,g,d,c);if(C(/*<>*/e(E[7],i),d))/*<>*/return d;/*<>*/var/*<>*/t=/*<>*/e(k[18],n[2]-c[2]|0),/*<>*/u=c[2],w=/*<>*/e(h,g)[2]-u|0;return/*<>*/e(k[18],w)>*/o.caml_equal(/*<>*/e(h,g),j)?d:g}/*<>*/ /*<>*/var -q=/*<>*/f(r,i,d);if(!q)/*<>*/return d;g=d;d=q[1]}/*<>*/}(d,d),/*<>*/n=/*<>*/e(h,g);return/*<>*/f(z[13][8],n,j)?0:[0,g]/*<>*/}function -F(a,b,c){/*<>*/var/*<>*/d=/*<>*/e(h,c),/*<>*/f=l[4],g=1===b?1:-1;/*<>*/return m(0,a,[0,d[1]+g|0,f],c)/*<>*/}function -s(a,b,c){/*<>*/var/*<>*/d=/*<>*/e(h,c),/*<>*/f=typeof -b==="number"?0===b?ad:[0,n[5],n[5]]:0===b[0]?[0,d[1],0]:[0,d[1],n[5]];/*<>*/return m(0,a,f,c)/*<>*/}var/*<>*/H=0,I=2;/*<>*/function -J(a,b){/*<>*/return d(I,a,b)}/*<>*/function -c(a){/*<>*/return s(J,H,a)}var/*<>*/K=1,L=2;/*<>*/function -M(a,b){/*<>*/return d(L,a,b)}/*<>*/function -b(a){/*<>*/return s(M,K,a)}function -a(a){/*<>*/return a?b:c/*<>*/}function -t(a,b,c,d){/*<>*/var +v(a,b){/*<>*/var +d=a[1]>*/f=d||(c?e:c);return f?0:1/*<>*/}function +E(a,b,c){/*<>*/var +d=c[2],f=/*<>*/e(h,a)[2]-d|0,/*<>*/g=/*<>*/e(k[18],f),i=c[2],j=/*<>*/e(h,b)[2]-i|0;/*<>*/return/*<>*/e(k[18],j)>*/}function +m(k,q,c,d){/*<>*/var/*<>*/j=/*<>*/e(h,d),/*<>*/i=v(c,j),/*<>*/a=function(a,b){/*<>*/var +g=a,d=b;/*<>*/for(;;){/*<>*/var/*<>*/l=/*<>*/e(h,d),/*<>*/r=/*<>*/p(z[13][11],i,l[2],c[2]),/*<>*/m=/*<>*/p(z[13][11],i,l[1],c[1]);a:{/*<>*/switch(m){case +0:switch(r){case +0:/*<>*/return d;case +1:break a}break;case +1:break a}return 0===k?2<=m?/*<>*/o.caml_equal(/*<>*/e(h,g),j)?d:g:C(/*<>*/e(F[7],i),d)?d:E(d,g,c)?g:d:v(c,/*<>*/e(ad[4],k))===i?d:g}/*<>*/ /*<>*/var +n=/*<>*/f(q,i,d);if(!n)/*<>*/return d;g=d;d=n[1]}/*<>*/}(d,d),/*<>*/b=/*<>*/e(h,a);return/*<>*/f(z[13][8],b,j)?0:[0,a]/*<>*/}function +G(a,b,c){/*<>*/var/*<>*/d=/*<>*/e(h,c),/*<>*/f=l[4],g=1===b?1:-1;/*<>*/return m(0,a,[0,d[1]+g|0,f],c)/*<>*/}function +s(a,b,c){/*<>*/var/*<>*/d=/*<>*/e(h,c),/*<>*/f=typeof +b==="number"?0===b?ae:[0,n[5],n[5]]:0===b[0]?[0,d[1],0]:[0,d[1],n[5]];/*<>*/return m(0,a,f,c)/*<>*/}var/*<>*/I=0,J=2;/*<>*/function +K(a,b){/*<>*/return d(J,a,b)}/*<>*/function +c(a){/*<>*/return s(K,I,a)}var/*<>*/L=1,M=2;/*<>*/function +N(a,b){/*<>*/return d(M,a,b)}/*<>*/function +b(a){/*<>*/return s(N,L,a)}function +a(a){/*<>*/return a?b:c/*<>*/}function +t(a,b,c,d){/*<>*/var g=a?a[1]:1;function -h(d){/*<>*/ /*<>*/var -a=/*<>*/p(ae[1],0,function(a){/*<>*/return 0/*<>*/},d);/*<>*/return/*<>*/f(i[10][1],a,function(a){/*<>*/if(/*<>*/e(c,a[1]))/*<>*/return[0,d];function -h(a){/*<>*/return t([0,g],b,c,a)/*<>*/}var -j=g?[0,d]:/*<>*/e(b,d);/*<>*/return/*<>*/f(i[10][1],j,h)/*<>*/})/*<>*/}var -j=g?/*<>*/e(b,d):[0,d];/*<>*/return/*<>*/f(i[10][1],j,h)/*<>*/}function -G(g,b,c){/*<>*/var -j=2,/*<>*/h=t(0,function(a){/*<>*/return d(j,b,a)},g,c);if(h)/*<>*/return[0,h[1]];/*<>*/ /*<>*/var -k=a(/*<>*/e(E[7],b))(c);/*<>*/return/*<>*/f(i[10][1],k,function(a){/*<>*/var -c=2;/*<>*/return t(0,function(a){/*<>*/return d(c,b,a)},g,a)/*<>*/})/*<>*/}function -q(a,b){/*<>*/if(0!==b[1][2])/*<>*/return[0,/*<>*/f(g[49],a,b)];var -c=0;/*<>*/return F(function(a,b){/*<>*/return d(c,a,b)},a,b)/*<>*/}function -w(a){/*<>*/ /*<>*/var -l=/*<>*/e(h,a);function -i(a,b){/*<>*/var -f=b;/*<>*/for(;;){/*<>*/ /*<>*/var -j=d(0,a,f);if(!j)/*<>*/return 0;/*<>*/var -c=j[1],/*<>*/k=l[1];if(/*<>*/e(h,c)[1]!==k)/*<>*/return 0;if(/*<>*/e(g[34],c))/*<>*/return[0,c,i(a,c)];f=c}/*<>*/}/*<>*/var -b=/*<>*/e(g[34],a)?[0,a,0]:0,/*<>*/c=i(1,a),/*<>*/m=/*<>*/f(k[37],b,c),/*<>*/n=i(0,a),/*<>*/o=/*<>*/e(j[10],n);/*<>*/return/*<>*/f(k[37],o,m)/*<>*/}function +h(d){/*<>*/ /*<>*/var +a=/*<>*/p(af[1],0,function(a){/*<>*/return 0/*<>*/},d);/*<>*/return/*<>*/f(i[10][1],a,function(a){/*<>*/if(/*<>*/e(c,a[1]))/*<>*/return[0,d];function +h(a){/*<>*/return t([0,g],b,c,a)/*<>*/}var +j=g?[0,d]:/*<>*/e(b,d);/*<>*/return/*<>*/f(i[10][1],j,h)/*<>*/})/*<>*/}var +j=g?/*<>*/e(b,d):[0,d];/*<>*/return/*<>*/f(i[10][1],j,h)/*<>*/}function +H(g,b,c){/*<>*/var +j=2,/*<>*/h=t(0,function(a){/*<>*/return d(j,b,a)},g,c);if(h)/*<>*/return[0,h[1]];/*<>*/ /*<>*/var +k=a(/*<>*/e(F[7],b))(c);/*<>*/return/*<>*/f(i[10][1],k,function(a){/*<>*/var +c=2;/*<>*/return t(0,function(a){/*<>*/return d(c,b,a)},g,a)/*<>*/})/*<>*/}function +q(a,b){/*<>*/if(0!==b[1][2])/*<>*/return[0,/*<>*/f(g[49],a,b)];var +c=0;/*<>*/return G(function(a,b){/*<>*/return d(c,a,b)},a,b)/*<>*/}function +w(a){/*<>*/ /*<>*/var +l=/*<>*/e(h,a);function +i(a,b){/*<>*/var +f=b;/*<>*/for(;;){/*<>*/ /*<>*/var +j=d(0,a,f);if(!j)/*<>*/return 0;/*<>*/var +c=j[1],/*<>*/k=l[1];if(/*<>*/e(h,c)[1]!==k)/*<>*/return 0;if(/*<>*/e(g[34],c))/*<>*/return[0,c,i(a,c)];f=c}/*<>*/}/*<>*/var +b=/*<>*/e(g[34],a)?[0,a,0]:0,/*<>*/c=i(1,a),/*<>*/m=/*<>*/f(k[37],b,c),/*<>*/n=i(0,a),/*<>*/o=/*<>*/e(j[10],n);/*<>*/return/*<>*/f(k[37],o,m)/*<>*/}function u(c,b){function -m(a,b){/*<>*/return/*<>*/e(g[34],b)?[0,b]:u(a,b)/*<>*/}/*<>*/if(typeof -c==="number"){/*<>*/if(0===c){/*<>*/ /*<>*/var -a=q(0,b);/*<>*/return/*<>*/f(i[10][1],a,function(a){/*<>*/var/*<>*/d=w(a),/*<>*/b=/*<>*/e(/*<>*/e(j[59],function(a,b){/*<>*/var -i=l[4],c=/*<>*/e(h,a)[2]-i|0,/*<>*/j=l[4],d=/*<>*/e(h,b)[2]-j|0,/*<>*/m=/*<>*/e(k[18],d),/*<>*/o=/*<>*/e(k[18],c),/*<>*/g=/*<>*/f(n[9],o,m);return 0!==g?g:/*<>*/f(n[9],c,d)/*<>*/}),d);/*<>*/return b?[0,b[1]]:u(c,a)/*<>*/})}/*<>*/ /*<>*/var -o=q(1,b);/*<>*/return/*<>*/f(i[10][1],o,function(a){/*<>*/var/*<>*/d=w(a),/*<>*/b=/*<>*/e(/*<>*/e(j[59],function(a,b){/*<>*/var -i=l[4],c=/*<>*/e(h,a)[2]-i|0,/*<>*/j=l[4],d=/*<>*/e(h,b)[2]-j|0,/*<>*/m=/*<>*/e(k[18],d),/*<>*/o=/*<>*/e(k[18],c),/*<>*/g=/*<>*/f(n[9],o,m);return 0!==g?g:-/*<>*/f(n[9],c,d)|0/*<>*/}),d);/*<>*/return b?[0,b[1]]:u(c,a)/*<>*/})}/*<>*/if(0===c[0]){/*<>*/ /*<>*/var -p=d(c[1],0,b);/*<>*/return/*<>*/f(i[10][1],p,function(a){/*<>*/return m(c,a)/*<>*/})}/*<>*/ /*<>*/var -r=d(c[1],1,b);/*<>*/return/*<>*/f(i[10][1],r,function(a){/*<>*/return m(c,a)/*<>*/})/*<>*/}/*<>*/return[0,h,x,r,y,function(a){/*<>*/return[0,/*<>*/f(g[29],g[1][7],a)]/*<>*/},A,B,d,C,v,m,F,s,c,b,a,t,G,function(e,b){/*<>*/ /*<>*/var -a=/*<>*/f(z[41],b,l[2]);/*<>*/return/*<>*/f(i[10][1],a,function(a){/*<>*/var -h=a[1],/*<>*/b=c(e),f=b?b[1]:e,i=0,/*<>*/g=m(0,function(a,b){/*<>*/return d(i,a,b)},h,f);return g?[0,g[1]]:[0,f]/*<>*/})/*<>*/},q,w,u,function(a,b){/*<>*/switch(a[0]){case +m(a,b){/*<>*/return/*<>*/e(g[34],b)?[0,b]:u(a,b)/*<>*/}/*<>*/if(typeof +c==="number"){/*<>*/if(0===c){/*<>*/ /*<>*/var +a=q(0,b);/*<>*/return/*<>*/f(i[10][1],a,function(a){/*<>*/var/*<>*/d=w(a),/*<>*/b=/*<>*/e(/*<>*/e(j[59],function(a,b){/*<>*/var +i=l[4],c=/*<>*/e(h,a)[2]-i|0,/*<>*/j=l[4],d=/*<>*/e(h,b)[2]-j|0,/*<>*/m=/*<>*/e(k[18],d),/*<>*/o=/*<>*/e(k[18],c),/*<>*/g=/*<>*/f(n[9],o,m);return 0!==g?g:/*<>*/f(n[9],c,d)/*<>*/}),d);/*<>*/return b?[0,b[1]]:u(c,a)/*<>*/})}/*<>*/ /*<>*/var +o=q(1,b);/*<>*/return/*<>*/f(i[10][1],o,function(a){/*<>*/var/*<>*/d=w(a),/*<>*/b=/*<>*/e(/*<>*/e(j[59],function(a,b){/*<>*/var +i=l[4],c=/*<>*/e(h,a)[2]-i|0,/*<>*/j=l[4],d=/*<>*/e(h,b)[2]-j|0,/*<>*/m=/*<>*/e(k[18],d),/*<>*/o=/*<>*/e(k[18],c),/*<>*/g=/*<>*/f(n[9],o,m);return 0!==g?g:-/*<>*/f(n[9],c,d)|0/*<>*/}),d);/*<>*/return b?[0,b[1]]:u(c,a)/*<>*/})}/*<>*/if(0===c[0]){/*<>*/ /*<>*/var +p=d(c[1],0,b);/*<>*/return/*<>*/f(i[10][1],p,function(a){/*<>*/return m(c,a)/*<>*/})}/*<>*/ /*<>*/var +r=d(c[1],1,b);/*<>*/return/*<>*/f(i[10][1],r,function(a){/*<>*/return m(c,a)/*<>*/})/*<>*/}/*<>*/return[0,h,x,r,y,function(a){/*<>*/return[0,/*<>*/f(g[29],g[1][7],a)]/*<>*/},A,B,d,C,v,E,m,G,s,c,b,a,t,H,function(e,b){/*<>*/ /*<>*/var +a=/*<>*/f(z[41],b,l[2]);/*<>*/return/*<>*/f(i[10][1],a,function(a){/*<>*/var +h=a[1],/*<>*/b=c(e),f=b?b[1]:e,i=0,/*<>*/g=m(0,function(a,b){/*<>*/return d(i,a,b)},h,f);return g?[0,g[1]]:[0,f]/*<>*/})/*<>*/},q,w,u,function(a,b){/*<>*/switch(a[0]){case 0:var -j=2;/*<>*/return s(function(a,b){/*<>*/return d(j,a,b)},a[1],b);case +j=2;/*<>*/return s(function(a,b){/*<>*/return d(j,a,b)},a[1],b);case 1:var c=a[1];if(typeof -c==="number")if(0===c)var/*<>*/k=0,h=function(a){/*<>*/return q(k,a)};else -var/*<>*/l=1,h=function(a){/*<>*/return q(l,a)};else if(0===c[0])var +c==="number")if(0===c)var/*<>*/k=0,h=function(a){/*<>*/return q(k,a)};else +var/*<>*/l=1,h=function(a){/*<>*/return q(l,a)};else if(0===c[0])var n=c[1],o=0,h=function(a){/*<>*/return d(n,o,a)};else var -p=c[1],r=1,h=function(a){/*<>*/return d(p,r,a)};/*<>*/return h(b);default:var +p=c[1],r=1,h=function(a){/*<>*/return d(p,r,a)};/*<>*/return h(b);default:var i=a[1];if(0===i[0]){var -t=i[1],u=0;/*<>*/return m(0,function(a,b){/*<>*/return d(u,a,b)},t,/*<>*/f(g[42],0,b))}var -v=i[2];/*<>*/return G(/*<>*/e(af[7],i[1]),v,b)}/*<>*/}]}],"Haz3lcore__Move");return/*<>*/}(globalThis)); +t=i[1],u=0;/*<>*/return m(0,function(a,b){/*<>*/return d(u,a,b)},t,/*<>*/f(g[42],0,b))}var +v=i[2];/*<>*/return H(/*<>*/e(ag[7],i[1]),v,b)}/*<>*/}]}],"Haz3lcore__Move");return/*<>*/}(globalThis)); -//# 12674 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12613 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -443434,57 +443373,57 @@ b=f.caml_get_global_data(),e=b.Haz3lcore__Zipper,m=b.Haz3lcore__Measured,h=b.Uti f=c(p[9],i);function g(a,b){/*<>*/if(0===b[4])/*<>*/return/*<>*/d(e[51],a,b);if(0===a){/*<>*/var/*<>*/f=/*<>*/c(/*<>*/c(e[30],0),b),/*<>*/g=/*<>*/c(/*<>*/c(e[50],1),f),/*<>*/i=/*<>*/c(e[51],a);/*<>*/return/*<>*/c(/*<>*/c(h[9],i),g)}/*<>*/ /*<>*/var j=/*<>*/c(/*<>*/c(e[30],0),b);/*<>*/return/*<>*/c(/*<>*/c(e[51],a),j)/*<>*/}function -j(a,b){/*<>*/return/*<>*/o(f[12],g,a,b)/*<>*/}function +j(a,b){/*<>*/return/*<>*/o(f[13],g,a,b)/*<>*/}function l(a,b,c){/*<>*/ /*<>*/var -g=/*<>*/d(f[19],c,a);/*<>*/return/*<>*/d(h[10][1],g,function(c){/*<>*/ /*<>*/var -a=/*<>*/d(m[41],b,i[2]);/*<>*/return/*<>*/d(h[10][1],a,function(a){/*<>*/return/*<>*/k(f[11],0,e[51],a[2],c)/*<>*/})/*<>*/})/*<>*/}/*<>*/return[0,f,g,j,l,function(a,b){/*<>*/ /*<>*/var +g=/*<>*/d(f[20],c,a);/*<>*/return/*<>*/d(h[10][1],g,function(c){/*<>*/ /*<>*/var +a=/*<>*/d(m[41],b,i[2]);/*<>*/return/*<>*/d(h[10][1],a,function(a){/*<>*/return/*<>*/k(f[12],0,e[51],a[2],c)/*<>*/})/*<>*/})/*<>*/}/*<>*/return[0,f,g,j,l,function(a,b){/*<>*/ /*<>*/var e=/*<>*/d(q[17],a,i[3]);/*<>*/return/*<>*/d(h[10][1],e,function(a){/*<>*/var d=a[1],/*<>*/e=/*<>*/c(n[30],a[2]);/*<>*/return l(/*<>*/c(n[30],d),e,b)/*<>*/})/*<>*/},function(a,b){/*<>*/ /*<>*/var -c=/*<>*/d(f[19],b,a);/*<>*/return/*<>*/d(h[10][1],c,function(b){/*<>*/ /*<>*/var -c=/*<>*/d(m[41],a,i[2]);/*<>*/return/*<>*/d(h[10][1],c,function(a){/*<>*/return/*<>*/k(f[11],0,g,a[2],b)/*<>*/})/*<>*/})/*<>*/},function(a,b){/*<>*/switch(a[0]){case -0:/*<>*/return/*<>*/o(f[13],g,a[1],b);case +c=/*<>*/d(f[20],b,a);/*<>*/return/*<>*/d(h[10][1],c,function(b){/*<>*/ /*<>*/var +c=/*<>*/d(m[41],a,i[2]);/*<>*/return/*<>*/d(h[10][1],c,function(a){/*<>*/return/*<>*/k(f[12],0,g,a[2],b)/*<>*/})/*<>*/})/*<>*/},function(a,b){/*<>*/switch(a[0]){case +0:/*<>*/return/*<>*/o(f[14],g,a[1],b);case 1:var d=a[1];/*<>*/return typeof d==="number"?0===d?j(0,b):j(1,b):0===d[0]?g(0,b):g(1,b);default:var h=a[1];if(0!==h[0])/*<>*/return/*<>*/c(s[2],r);/*<>*/var -l=h[1],/*<>*/m=/*<>*/c(e[48],b),/*<>*/n=[0,/*<>*/c(/*<>*/c(e[64],i[2]),m)];/*<>*/return/*<>*/k(f[11],n,g,l,b)}/*<>*/}]}],"Haz3lcore__Select");return/*<>*/}(globalThis)); +l=h[1],/*<>*/m=/*<>*/c(e[48],b),/*<>*/n=[0,/*<>*/c(/*<>*/c(e[64],i[2]),m)];/*<>*/return/*<>*/k(f[12],n,g,l,b)}/*<>*/}]}],"Haz3lcore__Select");return/*<>*/}(globalThis)); -//# 12701 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12640 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function h(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function i(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var -b=e.caml_get_global_data(),p=b.Stdlib__Option,g=b.Haz3lcore__Projector,q=b.Haz3lcore__Indicated,t=b.Haz3lcore__Piece,D=[1,5],M=[1,5],Q=[1,5],T=[1,5],n=[1,5],C=b.Haz3lcore__Id,m=b.Haz3lcore__Zipper;function +b=e.caml_get_global_data(),p=b.Stdlib__Option,g=b.Haz3lcore__Projector,q=b.Haz3lcore__Indicated,t=b.Haz3lcore__Piece,D=[1,5],K=[1,5],O=[1,5],R=[1,5],n=[1,5],C=b.Haz3lcore__Id,m=b.Haz3lcore__Zipper;function l(a,b,c){/*<>*/if(b)/*<>*/return[0,c[1],c[2],c[3],0,c[5]];/*<>*/ /*<>*/var d=/*<>*/h(m[50],a,[0,c[1],c[2],c[3],0,c[5]]);return d?d[1]:c/*<>*/}function -j(a,b,c){/*<>*/ /*<>*/var -d=/*<>*/i(g[43][11],a,function(a){/*<>*/return b/*<>*/},c[5]);/*<>*/return[0,c[1],c[2],c[3],c[4],d]/*<>*/}function +j(a,b,c){/*<>*/ /*<>*/var +d=/*<>*/i(g[25][11],a,function(a){/*<>*/return b/*<>*/},c[5]);/*<>*/return[0,c[1],c[2],c[3],c[4],d]/*<>*/}function k(a,b,c,d,e,f){/*<>*/ /*<>*/var -i=/*<>*/h(g[92],c,d);return i?[0,function(a){/*<>*/return l(e,f,a)}(j(a,i,b))]:n/*<>*/}function -o(a,b,c,d,e,f){/*<>*/return/*<>*/h(g[43][9],a,b[5])?[0,j(a,0,b)]:k(a,b,c,d,e,f)/*<>*/}e.caml_register_global(11,[0,l,j,k,o,function(a,b,c,d,e){/*<>*/function -B(a,b,c){/*<>*/ /*<>*/var -d=/*<>*/f(g[81],c);/*<>*/return/*<>*/f(d[11],[0,g[62],b])/*<>*/}function +i=/*<>*/h(g[58],c,d);return i?[0,function(a){/*<>*/return l(e,f,a)}(j(a,i,b))]:n/*<>*/}function +o(a,b,c,d,e,f){/*<>*/return/*<>*/h(g[25][9],a,b[5])?[0,j(a,0,b)]:k(a,b,c,d,e,f)/*<>*/}e.caml_register_global(11,[0,l,j,k,o,function(a,b,c,d,e){/*<>*/function +B(a,b,c){/*<>*/var +d=c[1],e=c[2],/*<>*/i=/*<>*/f(g[52],d);/*<>*/return[0,d,/*<>*/h(i[5],e,[0,g[44],b])]/*<>*/}function l(a,b,c){/*<>*/ /*<>*/var e=/*<>*/h(C[15][18],b,d);if(!e)/*<>*/return D;/*<>*/var -j=e[1],k=a[5],/*<>*/l=/*<>*/f(p[7],function(a){/*<>*/return B(j,c,a)}),/*<>*/m=/*<>*/i(g[43][11],b,l,k);/*<>*/return[0,[0,a[1],a[2],a[3],a[4],m]]/*<>*/}/*<>*/switch(c[0]){case +j=e[1],k=a[5],/*<>*/l=/*<>*/f(p[7],function(a){/*<>*/return B(j,c,a)}),/*<>*/m=/*<>*/i(g[25][11],b,l,k);/*<>*/return[0,[0,a[1],a[2],a[3],a[4],m]]/*<>*/}/*<>*/switch(c[0]){case 0:var -E=c[2];/*<>*/return[0,/*<>*/i(g[105][7],function(a){/*<>*/return E/*<>*/},c[1],e)];case -1:/*<>*/var -F=c[1],G=e[5],/*<>*/H=/*<>*/f(p[7],c[2]),/*<>*/I=/*<>*/i(g[43][11],F,H,G);/*<>*/return[0,[0,e[1],e[2],e[3],e[4],I]];case +E=c[2];/*<>*/return[0,/*<>*/i(g[69][7],function(a){/*<>*/return E/*<>*/},c[1],e)];case +1:/*<>*/var +F=c[2],/*<>*/G=/*<>*/i(g[25][11],c[1],function(a){/*<>*/return/*<>*/h(p[7],F,a)/*<>*/},e[5]);/*<>*/return[0,[0,e[1],e[2],e[3],e[4],G]];case 2:/*<>*/var -J=c[1],/*<>*/r=/*<>*/f(q[4],e);if(!r)/*<>*/return M;var -m=r[1],s=m[1],K=m[3],L=m[2];/*<>*/return k(/*<>*/f(t[30],s),e,J,s,L,K);case +H=c[1],/*<>*/r=/*<>*/f(q[4],e);if(!r)/*<>*/return K;var +m=r[1],s=m[1],I=m[3],J=m[2];/*<>*/return k(/*<>*/f(t[30],s),e,H,s,J,I);case 3:/*<>*/var -N=c[1],/*<>*/u=/*<>*/f(q[4],e);if(!u)/*<>*/return Q;var -n=u[1],v=n[1],O=n[3],P=n[2];/*<>*/return o(/*<>*/f(t[30],v),e,N,v,P,O);case +L=c[1],/*<>*/u=/*<>*/f(q[4],e);if(!u)/*<>*/return O;var +n=u[1],v=n[1],M=n[3],N=n[2];/*<>*/return o(/*<>*/f(t[30],v),e,L,v,N,M);case 4:/*<>*/var -w=c[1],/*<>*/x=/*<>*/h(a,e,w),R=x?x[1]:e;/*<>*/return l(R,w,1);case +w=c[1],/*<>*/x=/*<>*/h(a,e,w),P=x?x[1]:e;/*<>*/return l(P,w,1);case 5:var -y=c[1];if(c[2])/*<>*/return l(e,y,0);/*<>*/var/*<>*/z=/*<>*/i(b,2,1,e),S=z?z[1]:e;/*<>*/return l(S,y,0);default:var -A=c[1];return/*<>*/h(g[43][9],A,e[5])?[0,j(A,0,e)]:T}/*<>*/}],"Haz3lcore__ProjectorPerform");return/*<>*/}(globalThis)); +y=c[1];if(c[2])/*<>*/return l(e,y,0);/*<>*/var/*<>*/z=/*<>*/i(b,2,1,e),Q=z?z[1]:e;/*<>*/return l(Q,y,0);default:var +A=c[1];return/*<>*/h(g[25][9],A,e[5])?[0,j(A,0,e)]:R}/*<>*/}],"Haz3lcore__ProjectorPerform");return/*<>*/}(globalThis)); -//# 12737 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12676 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y="@ ",r="<2>",x="src/haz3lcore/dynamics/EvaluatorResult.re.t",w="@])",v="boxedValue",h="Indet",g="BoxedValue",u="indet",o=848054398,p=139,q=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -443515,7 +443454,7 @@ f=b[1],d=g;break a}}else{var h=a[1];if(0!==b[0]){var f=b[1],d=h;break a}}/*<>*/return 0}/*<>*/return/*<>*/c(e[24],d,f)/*<>*/}],"Haz3lcore__EvaluatorResult");return/*<>*/}(globalThis)); -//# 12769 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12708 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="EvaulatorError",aj="off",w="Off",an="resultPending",ag="resultOk",ah="unknownException",v="result",j="<2>",ai="src/haz3lcore/prog/ProgramResult.re.inner",o="@ ",af=" =",G="@])",P="%a",am="evaulatorError",u="ResultOk",ae="resultFail",z="ResultFail",B="ResultPending",ac="",ad="src/haz3lcore/prog/ProgramResult.re.error",al=963043957,ab="src/haz3lcore/prog/ProgramResult.re.t",C="Timeout",aa="@]",$="timeout",y="UnknownException",ak="@[%s =@ ",O=143,t="state",h=139,l=-976970511,m=848054398,s=a.jsoo_runtime,N=s.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -443599,7 +443538,7 @@ a==="number")/*<>*/return a7;switch(a[ 0:/*<>*/return[0,m,[0,a8,[0,/*<>*/c(F[13],a[1]),0]]];case 1:/*<>*/return[0,m,[0,a9,[0,T(a[1]),0]]];default:/*<>*/return[0,m,[0,a_,[0,Z(a[1]),0]]]}/*<>*/},function(a){/*<>*/return c(A[7],a[1])/*<>*/},function(a){/*<>*/return a[2]/*<>*/}],"Haz3lcore__ProgramResult");return/*<>*/}(globalThis)); -//# 12854 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12793 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var _="appendLeft",Z="@ ",A="<2>",r="AppendLeft",Y="@])",X="makeNew",W="src/haz3lcore/zipper/action/Insert.re.appendability",V="appendRight",z=139,v=-976970511,w=848054398,t="MakeNew",q="AppendRight",o=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -443695,7 +443634,7 @@ t!=="number"&&1===t[0]){var v=an;break a}var v=0}/*<>*/var/*<>*/C=function(a){/*<>*/return K(c,a)}(a),/*<>*/D=/*<>*/e(g[30],v),/*<>*/E=/*<>*/e(/*<>*/e(d[7],D),C),/*<>*/F=/*<>*/e(u(0),E);/*<>*/return/*<>*/e(/*<>*/e(d[7],function(a){/*<>*/return L(c,a)}),F)/*<>*/}],"Haz3lcore__Insert");return/*<>*/}(globalThis)); -//# 12951 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12890 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="%S",E=" ",A="code",D="selection",z="@[<2>[",j="<2>",k="@ ",s="\n",J=" =",C="@,",y="@,]@]",B="backpack",l="",U=963043957,q=";@ ",I="@]",L="@[%s =@ ",e=139,o=a.jsoo_runtime,aY=o.caml_wrap_exception;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -443741,7 +443680,7 @@ c=a?a[1]:aQ;/*<>*/return H([0,c],b[1][1]) b=a[1][1][1][2],/*<>*/c=x(0,/*<>*/g(r[62],a[1][1]),0,aR,b);/*<>*/return/*<>*/g(/*<>*/g(p[7],aS),c)/*<>*/},T,function(a){/*<>*/ /*<>*/var b=H(0,a);/*<>*/return T([0,/*<>*/g(r[14],0)],b)/*<>*/}],"Haz3lcore__Printer");return/*<>*/}(globalThis)); -//# 12998 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12937 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var G="%S",p="@ ",F="<2>",E="src/haz3lcore/zipper/PersistentZipper.re.t",D=" =",B=963043957,C="",i="backup_text",A="@]",j="zipper",z="@[%s =@ ",f=139,h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -443770,7 +443709,7 @@ b=/*<>*/g(v[18],0,a[2]);return b b=a[1],/*<>*/d=[0,[1,[0,X,[0,/*<>*/c(m[9],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,Y,[0,/*<>*/c(m[9],b),0]]],d]]/*<>*/},s,t,u,x,function(a){/*<>*/ /*<>*/var b=t(u(a));/*<>*/return/*<>*/ae(y[5],0,0,0,0,b)/*<>*/},function(a){/*<>*/return x(s(/*<>*/af(y[39],0,0,0,a)))/*<>*/}],"Haz3lcore__PersistentZipper");return/*<>*/}(globalThis)); -//# 13028 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12967 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -443816,7 +443755,7 @@ h=b[1];if(h){var j=b[2];if(j){var n=j[1],o=h[1];/*<>*/if(/*<>*/f(r[14],o,n))/*<>*/return k([0,o,n],a)}}}}/*<>*/return[0,a]/*<>*/})/*<>*/}],"Haz3lcore__Destruct");return/*<>*/}(globalThis)); -//# 13075 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13014 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime,ab=g.caml_equal;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -443859,17 +443798,17 @@ aq=d[4]?0:/*<>*/e(h[55],0,d),/*<< 0:if(c[1])/*<>*/return[0,q(l[4][2],d)];if(!d[1][3])/*<>*/return[0,d];/*<>*/ /*<>*/var F=/*<>*/f(z[6],d);if(!F)/*<>*/return aC;var v=F[1];/*<>*/if(/*<>*/e(au[15],v,32)){/*<>*/var/*<>*/av=/*<>*/e(h[64],r[2],l[5][1]),/*<>*/ay=s(d,v),/*<>*/G=/*<>*/e(k[10][1],ay,function(a){/*<>*/ /*<>*/var -b=/*<>*/e(g[23],[2,[0,av]],a);/*<>*/return/*<>*/e(k[10][1],b,function(a){/*<>*/ /*<>*/var -b=/*<>*/e(g[23],ax,a);/*<>*/return/*<>*/e(k[10][1],b,function(a){/*<>*/return/*<>*/e(g[23],aw,a)/*<>*/})/*<>*/})/*<>*/});/*<>*/return G?[0,G[1]]:az}/*<>*/ /*<>*/var +b=/*<>*/e(g[24],[2,[0,av]],a);/*<>*/return/*<>*/e(k[10][1],b,function(a){/*<>*/ /*<>*/var +b=/*<>*/e(g[24],ax,a);/*<>*/return/*<>*/e(k[10][1],b,function(a){/*<>*/return/*<>*/e(g[24],aw,a)/*<>*/})/*<>*/})/*<>*/});/*<>*/return G?[0,G[1]]:az}/*<>*/ /*<>*/var H=s(d,/*<>*/f(aA[6],v));return H?[0,H[1]]:aB;case 1:/*<>*/ /*<>*/var I=s(d,c[1]);return I?[0,I[1]]:aD;case -2:/*<>*/return/*<>*/ac(aE[5],g[19],g[8],c[1],l[5][9],d);case -3:/*<>*/var/*<>*/aF=/*<>*/e(g[23],c[1],d),/*<>*/aG=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(aG,a,0)}(aF);case +2:/*<>*/return/*<>*/ac(aE[5],g[20],g[8],c[1],l[5][9],d);case +3:/*<>*/var/*<>*/aF=/*<>*/e(g[24],c[1],d),/*<>*/aG=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(aG,a,0)}(aF);case 4:/*<>*/var -J=c[1],/*<>*/aH=/*<>*/f(o[5],d),aI=l[4][2],/*<>*/aJ=J?/*<>*/e(g[19],d,J[1]):/*<>*/e(k[10][1],aH,function(a){/*<>*/ /*<>*/var +J=c[1],/*<>*/aH=/*<>*/f(o[5],d),aI=l[4][2],/*<>*/aJ=J?/*<>*/e(g[20],d,J[1]):/*<>*/e(k[10][1],aH,function(a){/*<>*/ /*<>*/var b=/*<>*/e(L[15][18],a,aI);/*<>*/return/*<>*/e(k[10][1],b,function(a){/*<>*/ /*<>*/var -b=/*<>*/f(K[206],a);/*<>*/return/*<>*/e(k[10][1],b,function(a){/*<>*/return/*<>*/e(g[19],d,a)/*<>*/})/*<>*/})/*<>*/}),/*<>*/aK=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(aK,a,0)}(aJ);case +b=/*<>*/f(K[206],a);/*<>*/return/*<>*/e(k[10][1],b,function(a){/*<>*/return/*<>*/e(g[20],d,a)/*<>*/})/*<>*/})/*<>*/}),/*<>*/aK=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(aK,a,0)}(aJ);case 5:var m=c[1];if(typeof m!=="number")switch(m[0]){case @@ -443882,7 +443821,7 @@ W=/*<>*/f(o[5],d);if(!W)/*<>*/e(j[6],W[1],d);return X?[0,X[1]]:a0;default:var y=m[1];if(!y)/*<>*/return A(d);/*<>*/var a2=y[2],/*<>*/Y=/*<>*/e(j[5],y[1],d);if(!Y)/*<>*/return a4;var -Z=Y[1],a3=1===a2?Z:/*<>*/f(h[48],Z);/*<>*/return[0,a3]}if(0===m){/*<>*/var/*<>*/aL=/*<>*/f(g[8],2),/*<>*/M=/*<>*/aa(g[13],aL,0,d);if(!M)/*<>*/return aO;/*<>*/ /*<>*/var +Z=Y[1],a3=1===a2?Z:/*<>*/f(h[48],Z);/*<>*/return[0,a3]}if(0===m){/*<>*/var/*<>*/aL=/*<>*/f(g[8],2),/*<>*/M=/*<>*/aa(g[14],aL,0,d);if(!M)/*<>*/return aO;/*<>*/ /*<>*/var N=/*<>*/e(j[7],aM,M[1]);return N?[0,N[1]]:aN}/*<>*/ /*<>*/var O=/*<>*/f(o[5],d);if(O)/*<>*/var P=O[1],/*<>*/aP=/*<>*/e(j[5],P,d),Q=/*<>*/ab(/*<>*/e(j[6],P,d),aP);else @@ -443898,18 +443837,18 @@ _=c[1];return _?[0,/*<>*/e(h[49], $=c[1],/*<>*/a5=/*<>*/f(/*<>*/f(t[4],$),d),/*<>*/a6=/*<>*/f(h[40],$),/*<>*/a7=/*<>*/f(/*<>*/f(u[7],a6),a5),/*<>*/a8=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(a8,a,2)}(a7);case 8:/*<>*/var/*<>*/a9=/*<>*/f(/*<>*/f(B[24],c[1]),d),/*<>*/a_=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(a_,a,1)}(a9);default:var p=c[1];if(typeof -p==="number"){/*<>*/var/*<>*/a$=/*<>*/e(g[22],p,d),/*<>*/ba=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(ba,a,0)}(a$)}/*<>*/if(/*<>*/f(bb[13],d[2])){/*<>*/var/*<>*/bc=/*<>*/e(g[22],p,d),/*<>*/bd=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(bd,a,0)}(bc)}/*<>*/var/*<>*/be=/*<>*/e(g[23],[1,p],d),/*<>*/bf=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(bf,a,0)}(be)}/*<>*/}function +p==="number"){/*<>*/var/*<>*/a$=/*<>*/e(g[23],p,d),/*<>*/ba=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(ba,a,0)}(a$)}/*<>*/if(/*<>*/f(bb[13],d[2])){/*<>*/var/*<>*/bc=/*<>*/e(g[23],p,d),/*<>*/bd=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(bd,a,0)}(bc)}/*<>*/var/*<>*/be=/*<>*/e(g[24],[1,p],d),/*<>*/bf=i[28];/*<>*/return function(a){/*<>*/return/*<>*/e(bf,a,0)}(be)}/*<>*/}function d(d,b,c){/*<>*/var a=c[1],g=a[2],h=a[1];/*<>*/ /*<>*/f(p[8],0);/*<>*/ /*<>*/var j=m([0,g],d,b,h);/*<>*/return/*<>*/e(i[42][2],j,function(a){/*<>*/return/*<>*/ac(n[13],[0,p[7][1]],d,b,a,c)/*<>*/})/*<>*/}g.caml_register_global(43,[0,j,l,q,m,d,function(a,b,c){/*<>*/if(c[3]&&j(b))/*<>*/return[0,c];if(a[3]&&a[1]){/*<>*/var g=/*<>*/ab(b,s)?c:/*<>*/e(n[12],l,c),/*<>*/h=d(a,b,g);/*<>*/return/*<>*/e(i[42][1],h,function(a){/*<>*/if(!/*<>*/f(v[64],b))/*<>*/return[0,a];var c=a[1][2][4][2];/*<>*/return[0,/*<>*/e(n[12],function(a){/*<>*/return q(c,a)},a)]/*<>*/})}/*<>*/return d(a,b,c)/*<>*/}],"Haz3lcore__Perform");return/*<>*/}(globalThis)); -//# 13169 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13108 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id[15];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48]],"Haz3lcore__MetaVarMap");return/*<>*/}(globalThis)); -//# 13174 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13113 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="expressionHole",o="patternHole",i="ExpressionHole",j="PatternHole",e=a.jsoo_runtime;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -443928,7 +443867,7 @@ e=d[2];if(e&&!e[2]){/*<>*/var f=e[1],h=d[1],/*<>*/i=k(b[1]),/*<>*/j=/*<>*/g(m[13],h);/*<>*/return[0,i,j,/*<>*/g(n[1],f)]}}}}/*<>*/return/*<>*/t(c[2],s,3,a)/*<>*/},a)/*<>*/},function(a){/*<>*/return/*<>*/b(h[44],function(a){var b=a[3],c=a[2],d=l(a[1]),e=g(m[11],c);return[1,[0,d,[0,e,[0,g(n[2],b),0]]]]},a)/*<>*/},h[1]],"Haz3lcore__Delta");return/*<>*/}(globalThis)); -//# 13194 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13133 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var B="+",t="DoesNotElaborate",A="elaborates",r="Elaborates",x="doesNotElaborate",ad=194,u="_",h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -444179,7 +444118,7 @@ b=a[3],c=a[2],/*<>*/d=/*<>*/return 0;/*<>*/var e=c[1],/*<>*/d=v(a,b),f=d?d[1]:O;/*<>*/return[0,e,f,q[5]]/*<>*/}],"Haz3lcore__Elaborator");return/*<>*/}(globalThis)); -//# 13446 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13385 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="Unexpected Uneval",f=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -444224,7 +444163,7 @@ e=[0,c[1]];break;case e=[1,c[1]];break;default:var e=[1,c[1]]}/*<>*/return[0,f[1],e]/*<>*/},b,[0,m[2]]],"Haz3lcore__Evaluator");return/*<>*/}(globalThis)); -//# 13492 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13431 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,w=f.caml_wrap_exception;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -444239,7 +444178,7 @@ e=/*<>*/h(t[1],l,c)}catch(e){var f=w(e);if(f[1]===i[7]){/*<>*/var j=f[2],/*<>*/m=/*<>*/d(i[2],j),/*<>*/n=/*<>*/h(g[28],r,m);/*<>*/ /*<>*/d(g[46],n);/*<>*/return[2,[0,j]]}/*<>*/var/*<>*/o=/*<>*/d(k[1],f),/*<>*/p=/*<>*/h(g[28],s,o);/*<>*/ /*<>*/d(g[46],p);/*<>*/return[2,[1,/*<>*/d(k[1],f)]]}/*<>*/return[1,[0,e[2],e[1]]]/*<>*/}],"Haz3lcore__Interface");return/*<>*/}(globalThis)); -//# 13508 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13447 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ab="src/haz3lcore/prog/ModelResult.re.t",t="<2>",r="@ ",N=" =",aa="src/haz3lcore/prog/ModelResult.re.eval_result",M="@])",$="noElab",P="%a",Y="src/haz3lcore/prog/ModelResult.re.persistent",x="elab",E="stepper",m="Evaluation",B="NoElab",L="",_=963043957,k="Stepper",w="previous",X=";@ ",o="evaluation",K="@]",O="@[%s =@ ",Z="(@[<2>Stepper@ ",J=143,i=139,p=848054398,q=-976970511,v=a.jsoo_runtime,I=v.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}/*<>*/function @@ -444326,7 +444265,7 @@ i=e[2];if(i===m)return b[2]?/*<>*/d(g[3] j=b[2];if(j&&!j[2])/*<>*/return[0,/*<>*/c(f[31],j[1])];/*<>*/return/*<>*/h(g[4],A,i,a)}}else if(p===n)/*<>*/return/*<>*/d(g[6],A,a)}}}/*<>*/return/*<>*/d(g[8],A,a)/*<>*/},function(a){/*<>*/return a?[0,p,[0,a2,[0,/*<>*/c(f[32],a[1]),0]]]:a3/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&1===a[0])/*<>*/return[0,/*<>*/c(f[35],a[1])];/*<>*/return 0/*<>*/},function(a,b){/*<>*/return b?[1,/*<>*/d(f[36],a,b[1])]:0/*<>*/}],"Haz3lcore__ModelResult");return/*<>*/}(globalThis)); -//# 13596 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13535 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="%a",z=143,j=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -444350,7 +444289,7 @@ b=ap[3],/*<>*/h=function(a){/*<>*/r b=/*<>*/d(e[18],a);/*<>*/return/*<>*/d(c[28],b)/*<>*/},/*<>*/d(m,e[19]),x,y,function(c,b){/*<>*/ /*<>*/var a=/*<>*/d(/*<>*/d(i[23],function(a){/*<>*/return x(c,a)}),b);/*<>*/return/*<>*/d(k,/*<>*/d(i[64],a))/*<>*/},function(a){/*<>*/var/*<>*/b=/*<>*/d(t,a),/*<>*/c=/*<>*/d(/*<>*/d(i[23],y),b);/*<>*/return/*<>*/d(k,/*<>*/d(i[64],c))/*<>*/}],"Haz3lcore__ModelResults");return/*<>*/}(globalThis)); -//# 13621 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13560 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var n="src/haz3lcore/dynamics/HoleInstance.re.t",m=848054398,k=139,e=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -444369,7 +444308,7 @@ e=b[2];if(e&&!e[2]){var g=e[1],h=c(f[5],b[1]);return[0,h,c(d[5],g)]}}}return j(v[2],u,2,a)/*<>*/},function(a){/*<>*/var b=a[2],e=c(f[6],a[1]);return[0,m,[0,e,[0,c(d[6],b),0]]]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},[0,w[16],0]],"Haz3lcore__HoleInstance");return/*<>*/}(globalThis)); -//# 14050 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13989 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;/*<>*/function q(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var @@ -444386,7 +444325,7 @@ l=c[1],/*<>*/m=[20,l,d(c[2],b)];/*<>*/var n=c[2],o=c[1],/*<>*/p=[22,o,n,d(c[3],b)];/*<>*/return[0,a[1],p]}/*<>*/return[0,[0,/*<>*/q(e[5],0),0],[20,a,b]]/*<>*/}c.caml_register_global(1,[0,d],"Haz3lcore__EditorUtil");return/*<>*/}(globalThis)); -//# 14068 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 14007 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -471067,7 +471006,7 @@ d(a){return g(e,a,0)}function l(a){return d(g(b[98],6,a))}function v(a){return d(g(b[98],6,a))}function o(a){return d(g(b[98],2,a))}var -a6=f.Haz3lcore__Printer,a7=f.Haz3lcore__Zipper,T=f.Haz3lcore__Projector,a8=f.Util__StringUtil,J=c(e,c(b[92],s)),w=c(e,c(b[92],t)),K=c(b[92],t),p=c(b[92],s),x=c(b[92],H),y=d(c(b[92],F)),z=[0,y,[0,[1,[0,c(k[5],0),0]],0]],L=[0,y,[0,l(G),0]],A=[0,c(J,[0,[0,l("1"),L],0]),0],M=[0,[1,[0,c(k[5],0),1]],0],B=[0,v(r),M],N=[0,0,[0,l(G),0]],O=[0,[0,h(x,[0,[0,[0,o(r),0],0],0]),N],0],P=[0,[0,c(w,[0,[0,o("taz"),0],0]),0],0],Q=[0,[0,h(p,[0,0,0]),P],O],R=[0,[0,c(w,[0,[0,o("bar"),0],0]),0],0],C=[0,[0,h(p,[0,0,0]),R],Q],S=[0,v(r),0],E=[0,i(D[19],0,0,S),0],U=T[43][7],W="cons_exp",X="list_concat",Y="cons_pat",Z="cell-join";function +a6=f.Haz3lcore__Printer,a7=f.Haz3lcore__Zipper,T=f.Haz3lcore__Projector,a8=f.Util__StringUtil,J=c(e,c(b[92],s)),w=c(e,c(b[92],t)),K=c(b[92],t),p=c(b[92],s),x=c(b[92],H),y=d(c(b[92],F)),z=[0,y,[0,[1,[0,c(k[5],0),0]],0]],L=[0,y,[0,l(G),0]],A=[0,c(J,[0,[0,l("1"),L],0]),0],M=[0,[1,[0,c(k[5],0),1]],0],B=[0,v(r),M],N=[0,0,[0,l(G),0]],O=[0,[0,h(x,[0,[0,[0,o(r),0],0],0]),N],0],P=[0,[0,c(w,[0,[0,o("taz"),0],0]),0],0],Q=[0,[0,h(p,[0,0,0]),P],O],R=[0,[0,c(w,[0,[0,o("bar"),0],0]),0],0],C=[0,[0,h(p,[0,0,0]),R],Q],S=[0,v(r),0],E=[0,i(D[19],0,0,S),0],U=T[25][7],W="cons_exp",X="list_concat",Y="cons_pat",Z="cell-join";function q(a){var c=g(m[8],6,0);return d(i(b[32],b[33],[0,a,0],c))}var V=[0,i(D[19],0,0,B),E,[0,[0,z,A],C],0,U],_=c(e,c(b[92],s)),$=c(e,c(b[92],"parens_pat")),aa=c(e,c(b[92],"parens_typ")),ab=c(e,c(b[92],"list_lit_exp")),ac=c(e,c(b[92],"list_lit_pat")),ad=c(e,c(b[92],"list_typ")),ae=c(e,c(b[92],"forall")),ag="type-arrow",ah="unary_minus",ai="not",aj=F,ak="minus",al="times",am="power",an="divide",ao="equals",ap="not_equals",aq="lt",ar="lte",as="gt",at="gte",au="fplus",av="fminus",aw="ftimes",ax="fpower",ay="fdivide",az="fequals",aA="fnot_equals",aB="flt",aC="flte",aD="fgt",aE="fgte",aF="string_equals",aG="string_concat",aH="logical_and",aI="logical_or",aJ="comma_exp",aK="comma_pat",aL="comma_typ",aM="pipeline",aN="[]",aO="_",aP="typeann",af=c(e,c(b[92],"rec")),aQ=c(e,c(b[92],"typfun")),aR=c(e,c(b[92],t)),aS=c(e,c(b[92],"ap_exp_typ")),aT=c(e,c(b[92],"ap_exp")),aU=c(e,c(b[92],"ap_pat")),aV=c(e,c(b[92],H)),aW=c(e,c(b[92],"type_alias")),aX=c(e,c(b[92],"if_")),aY=c(e,c(b[92],"test")),aZ=c(e,c(b[92],"case")),a0=c(e,c(b[92],"rule")),a1=c(e,c(b[92],"filter_hide")),a2=c(e,c(b[92],"filter_eval")),a3=c(e,c(b[92],"filter_pause")),a4=c(e,c(b[92],"filter_debug")),a5=c(e,c(b[92],"unquote"));j.caml_register_global(91,[0,n,e,h,d,l,function(a){return h(K,a)},function(a){return h(p,a)},function(a){return h(x,a)},z,A,B,C,E,V,function(a){return d(c(b[92],W))},function(a){return d(c(b[92],X))},function(a){return d(c(b[92],Y))},function(a){return d(c(b[92],Z))},q,function(a){var @@ -472305,7 +472244,7 @@ b=h(e[28],a,i);return h(e[28],j,b)}],b=g(k[2],f);d.caml_register_global(6,[0,f,b (function(a){"use strict";var n="not",D="false",A="0",d=" ",x=":",C="-",z="true",g=")",B="1",f="(",p="Bool",j="->",m="test",w="let",y="Int",v="=",u="fun",h="odd",t="else",i="x",s="in",o=";",G="==",I="<",r="then",q="if",l="end",e="\xe2\x8f\x8e",F=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):F.caml_call_gen(a,[b])}var -E=F.caml_get_global_data(),k=E.Haz3lcore__Projector,b=E.Haz3lcore__Id,H=E.Haz3lweb__Ex_OddlyRecursive_prompt[1],J=k[43][7],K=[0,[2,[0,c(b[5],0),[0,d]]],0],L=[0,[0,[0,[0,c(b[5],0),[0,"27",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],M=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],L]],K],N=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],M],O=[0,[0,[2,[0,c(b[5],0),[0,d]]],N],0],P=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],O]],0],Q=[0,[2,[0,c(b[5],0),[0,e]]],P],R=[0,[2,[0,c(b[5],0),[0,d]]],Q],S=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],R],T=[0,[2,[0,c(b[5],0),[0,d]]],0],U=[0,[0,[0,[0,c(b[5],0),[0,"42",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],V=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],U]],0],W=[0,[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],V],0],X=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],W]],T],Y=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],X],Z=[0,[0,[2,[0,c(b[5],0),[0,d]]],Y],0],_=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],Z]],S],$=[0,[2,[0,c(b[5],0),[0,e]]],_],aa=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],$],ab=[0,[2,[0,c(b[5],0),[0,d]]],0],ac=[0,[0,[0,[0,c(b[5],0),[0,"3",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],ad=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],ac]],ab],ae=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ad],af=[0,[0,[2,[0,c(b[5],0),[0,d]]],ae],0],ag=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],af]],aa],ah=[0,[2,[0,c(b[5],0),[0,e]]],ag],ai=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],ah],aj=[0,[2,[0,c(b[5],0),[0,d]]],0],ak=[0,[0,[0,[0,c(b[5],0),[0,"2",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],al=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],ak]],0],am=[0,[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],al],0],an=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],am]],aj],ao=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],an],ap=[0,[0,[2,[0,c(b[5],0),[0,d]]],ao],0],aq=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],ap]],ai],ar=[0,[2,[0,c(b[5],0),[0,e]]],aq],as=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],ar],at=[0,[2,[0,c(b[5],0),[0,d]]],0],au=[0,[0,[0,[0,c(b[5],0),[0,B,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],av=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],au]],at],aw=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],av],ax=[0,[0,[2,[0,c(b[5],0),[0,d]]],aw],0],ay=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],ax]],as],az=[0,[2,[0,c(b[5],0),[0,e]]],ay],aA=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],az],aB=[0,[2,[0,c(b[5],0),[0,d]]],0],aC=[0,[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],aD=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aC]],0],aE=[0,[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aD],0],aF=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aE]],aB],aG=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aF],aH=[0,[0,[2,[0,c(b[5],0),[0,d]]],aG],0],aI=[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],aH]],aA],0],0],0,J],[0,"zero",0]],aJ=k[43][7],aK=[0,[1,[0,c(b[5],0),0]],0],aL=[0,[2,[0,c(b[5],0),[0,e]]],0],aM=[0,[2,[0,c(b[5],0),[0,d]]],0],aN=[0,[0,[0,c(b[5],0),[0,B,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],aO=[0,[2,[0,c(b[5],0),[0,d]]],aN],aP=[0,[0,[0,c(b[5],0),[0,C,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],aO],aQ=[0,[2,[0,c(b[5],0),[0,d]]],aP],aR=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aQ],0],aS=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aR]],aM],aT=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aS],aU=[0,[2,[0,c(b[5],0),[0,d]]],aT],aV=[0,[2,[0,c(b[5],0),[0,e]]],0],aW=[0,[2,[0,c(b[5],0),[0,d]]],aV],aX=[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aW],aY=[0,[0,[2,[0,c(b[5],0),[0,d]]],aX],0],aZ=[0,[2,[0,c(b[5],0),[0,d]]],0],a0=[0,[0,[0,c(b[5],0),[0,B,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aZ],a1=[0,[2,[0,c(b[5],0),[0,d]]],a0],a2=[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],a1],a3=[0,[2,[0,c(b[5],0),[0,d]]],a2],a4=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],a3],a5=[0,[0,[2,[0,c(b[5],0),[0,d]]],a4],aY],a6=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],a5]],aU],a7=[0,[2,[0,c(b[5],0),[0,d]]],a6],a8=[0,[2,[0,c(b[5],0),[0,e]]],0],a9=[0,[2,[0,c(b[5],0),[0,d]]],a8],a_=[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],a9],a$=[0,[0,[2,[0,c(b[5],0),[0,d]]],a_],0],ba=[0,[2,[0,c(b[5],0),[0,d]]],0],bb=[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ba],bc=[0,[2,[0,c(b[5],0),[0,d]]],bb],bd=[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],bc],be=[0,[2,[0,c(b[5],0),[0,d]]],bd],bf=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],be],bg=[0,[0,[2,[0,c(b[5],0),[0,d]]],bf],a$],bh=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],bg]],a7],bi=[0,[2,[0,c(b[5],0),[0,d]]],bh],bj=[0,[2,[0,c(b[5],0),[0,e]]],0],bk=[0,[2,[0,c(b[5],0),[0,d]]],bj],bl=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],bm=[0,[0,[0,[0,c(b[5],0),[0,C,0],[0,6,0,[0,[0,0,6],[0,[0,2],6]]],[0,0,0],0]],bl],0],bn=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bm]],bk],bo=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bn],bp=[0,[0,[2,[0,c(b[5],0),[0,d]]],bo],0],bq=[0,[2,[0,c(b[5],0),[0,d]]],0],br=[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bq],bs=[0,[2,[0,c(b[5],0),[0,d]]],br],bt=[0,[0,[0,c(b[5],0),[0,I,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],bs],bu=[0,[2,[0,c(b[5],0),[0,d]]],bt],bv=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bu],bw=[0,[0,[2,[0,c(b[5],0),[0,d]]],bv],bp],bx=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],bw]],bi],by=[0,[2,[0,c(b[5],0),[0,d]]],bx],bz=[0,[2,[0,c(b[5],0),[0,d]]],0],bA=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],bz],bB=[0,[0,[2,[0,c(b[5],0),[0,d]]],bA],0],bC=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],bB]],by],bD=[0,[0,[2,[0,c(b[5],0),[0,e]]],bC],0],bE=[0,[2,[0,c(b[5],0),[0,d]]],0],bF=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],bE],bG=[0,[2,[0,c(b[5],0),[0,d]]],bF],bH=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],bG],bI=[0,[2,[0,c(b[5],0),[0,d]]],bH],bJ=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],bI],bK=[0,[2,[0,c(b[5],0),[0,d]]],bJ],bL=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],bK],bM=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],bL],bN=[0,[0,[2,[0,c(b[5],0),[0,d]]],bM],bD],bO=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],bN]],aL],aK],0],0,aJ],"incorrect base case"],0],bP=k[43][7],bQ=[0,[1,[0,c(b[5],0),0]],0],bR=[0,[2,[0,c(b[5],0),[0,d]]],0],bS=[0,[2,[0,c(b[5],0),[0,e]]],0],bT=[0,[2,[0,c(b[5],0),[0,d]]],bS],bU=[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bT],bV=[0,[2,[0,c(b[5],0),[0,d]]],bU],bW=[0,[2,[0,c(b[5],0),[0,d]]],0],bX=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],bW],bY=[0,[0,[2,[0,c(b[5],0),[0,d]]],bX],0],bZ=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],bY]],bV],b0=[0,[0,[2,[0,c(b[5],0),[0,e]]],bZ],0],b1=[0,[2,[0,c(b[5],0),[0,d]]],0],b2=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],b1],b3=[0,[2,[0,c(b[5],0),[0,d]]],b2],b4=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],b3],b5=[0,[2,[0,c(b[5],0),[0,d]]],b4],b6=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],b5],b7=[0,[2,[0,c(b[5],0),[0,d]]],b6],b8=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],b7],b9=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],b8],b_=[0,[0,[2,[0,c(b[5],0),[0,d]]],b9],b0],b$=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],b_]],bR],bQ],0],0,bP],"always returns true"],bO],ca=k[43][7],cb=[0,[1,[0,c(b[5],0),0]],0],cc=[0,[2,[0,c(b[5],0),[0,d]]],0],cd=[0,[2,[0,c(b[5],0),[0,e]]],0],ce=[0,[2,[0,c(b[5],0),[0,d]]],cd],cf=[0,[0,[0,c(b[5],0),[0,D,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ce],cg=[0,[2,[0,c(b[5],0),[0,d]]],cf],ch=[0,[2,[0,c(b[5],0),[0,d]]],0],ci=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],ch],cj=[0,[0,[2,[0,c(b[5],0),[0,d]]],ci],0],ck=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],cj]],cg],cl=[0,[0,[2,[0,c(b[5],0),[0,e]]],ck],0],cm=[0,[2,[0,c(b[5],0),[0,d]]],0],cn=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cm],co=[0,[2,[0,c(b[5],0),[0,d]]],cn],cp=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],co],cq=[0,[2,[0,c(b[5],0),[0,d]]],cp],cr=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cq],cs=[0,[2,[0,c(b[5],0),[0,d]]],cr],ct=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],cs],cu=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],ct],cv=[0,[0,[2,[0,c(b[5],0),[0,d]]],cu],cl],cw=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],cv]],cc],cb],0],0,ca],"always returns false"],b$],cx=k[43][7],cy=[0,[1,[0,c(b[5],0),0]],0],cz=[0,[2,[0,c(b[5],0),[0,d]]],0],cA=[0,[2,[0,c(b[5],0),[0,e]]],0],cB=[0,[2,[0,c(b[5],0),[0,d]]],cA],cC=[0,[1,[0,c(b[5],0),0]],cB],cD=[0,[2,[0,c(b[5],0),[0,d]]],cC],cE=[0,[2,[0,c(b[5],0),[0,d]]],0],cF=[0,[0,[0,c(b[5],0),[0,"n",0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],cE],cG=[0,[0,[2,[0,c(b[5],0),[0,d]]],cF],0],cH=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],cG]],cD],cI=[0,[0,[2,[0,c(b[5],0),[0,e]]],cH],0],cJ=[0,[2,[0,c(b[5],0),[0,d]]],0],cK=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cJ],cL=[0,[2,[0,c(b[5],0),[0,d]]],cK],cM=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],cL],cN=[0,[2,[0,c(b[5],0),[0,d]]],cM],cO=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cN],cP=[0,[2,[0,c(b[5],0),[0,d]]],cO],cQ=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],cP],cR=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],cQ],cS=[0,[0,[2,[0,c(b[5],0),[0,d]]],cR],cI],cT=[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],cS]],cz],cy],0],0,cx],cU=k[43][7],cV=[0,[1,[0,c(b[5],0),0]],0],cW=[0,[2,[0,c(b[5],0),[0,e]]],0],cX=[0,[2,[0,c(b[5],0),[0,d]]],cW],cY=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],cX],cZ=[0,[2,[0,c(b[5],0),[0,d]]],0],c0=[0,[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],c1=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],c0]],0],c2=[0,[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c1],0],c3=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],c2]],cZ],c4=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c3],c5=[0,[0,[2,[0,c(b[5],0),[0,d]]],c4],0],c6=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],c5]],cY],c7=[0,[2,[0,c(b[5],0),[0,e]]],c6],c8=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],c7],c9=[0,[2,[0,c(b[5],0),[0,d]]],0],c_=[0,[0,[0,[0,c(b[5],0),[0,D,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],c$=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],c_]],c9],da=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c$],db=[0,[0,[2,[0,c(b[5],0),[0,d]]],da],0],dc=[0,[0,[0,1,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],db]],c8],cV],0],0,cU],6,2],dd=k[43][7],de=[0,[1,[0,c(b[5],0),0]],0],df=[0,0,[0,[2,[0,c(b[5],0),[0,d]]],de]],dg=[0,[2,[0,c(b[5],0),[0,d]]],0],dh=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dg],di=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],dh],dj=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],di],dk=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],dj],dl=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],dk],dm=[0,[0,[0,[2,[0,c(b[5],0),[0,d]]],dl],0],0],dn=[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,[0,0,[0,1,0]],[0,2,0]],dm],df],0],dp=[0,[2,[0,c(b[5],0),[0,e]]],0],dq=[0,[2,[0,c(b[5],0),[0,d]]],dp],dr=[0,[0,[0,c(b[5],0),[0,B,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],ds=[0,[0,[0,c(b[5],0),[0,C,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],dr],dt=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ds],0],du=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],dt]],0],dv=[0,[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],du],0],dw=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],dv]],dq],dx=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dw],dy=[0,[2,[0,c(b[5],0),[0,d]]],dx],dz=[0,[2,[0,c(b[5],0),[0,e]]],0],dA=[0,[2,[0,c(b[5],0),[0,d]]],dz],dB=[0,[0,[0,c(b[5],0),[0,D,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dA],dC=[0,[0,[2,[0,c(b[5],0),[0,d]]],dB],0],dD=[0,[2,[0,c(b[5],0),[0,d]]],0],dE=[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dD],dF=[0,[2,[0,c(b[5],0),[0,d]]],dE],dG=[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],dF],dH=[0,[2,[0,c(b[5],0),[0,d]]],dG],dI=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dH],dJ=[0,[0,[2,[0,c(b[5],0),[0,d]]],dI],dC],dK=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],dJ]],dy],dL=[0,[2,[0,c(b[5],0),[0,d]]],dK],dM=[0,[2,[0,c(b[5],0),[0,e]]],0],dN=[0,[2,[0,c(b[5],0),[0,d]]],dM],dO=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],dP=[0,[0,[0,[0,c(b[5],0),[0,C,0],[0,6,0,[0,[0,0,6],[0,[0,2],6]]],[0,0,0],0]],dO],0],dQ=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],dP]],dN],dR=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dQ],dS=[0,[0,[2,[0,c(b[5],0),[0,d]]],dR],0],dT=[0,[2,[0,c(b[5],0),[0,e]]],0],dU=[0,[2,[0,c(b[5],0),[0,d]]],dT],dV=[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dU],dW=[0,[2,[0,c(b[5],0),[0,d]]],dV],dX=[0,[0,[0,c(b[5],0),[0,I,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],dW],dY=[0,[2,[0,c(b[5],0),[0,d]]],dX],dZ=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dY],d0=[0,[0,[2,[0,c(b[5],0),[0,d]]],dZ],dS],d1=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],d0]],dL],d2=[0,[2,[0,c(b[5],0),[0,e]]],d1],d3=[0,[2,[0,c(b[5],0),[0,d]]],0],d4=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],d3],d5=[0,[0,[2,[0,c(b[5],0),[0,d]]],d4],0],d6=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],d5]],d2],d7=[0,[0,0,0,0],0,[0,[0,[0,[2,[0,c(b[5],0),[0,e]]],d6],0],dn],0,dd],d8=k[43][7],d9=[0,[1,[0,c(b[5],0),0]],0],d_=[0,0,[0,[2,[0,c(b[5],0),[0,d]]],d9]],d$=[0,[2,[0,c(b[5],0),[0,d]]],0],ea=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],d$],eb=[0,[2,[0,c(b[5],0),[0,d]]],ea],ec=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],eb],ed=[0,[2,[0,c(b[5],0),[0,d]]],ec],ee=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],ed],ef=[0,[2,[0,c(b[5],0),[0,d]]],ee],eg=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],ef],eh=[0,[2,[0,c(b[5],0),[0,d]]],eg],ei=[0,[0,[0,c(b[5],0),[0,n,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],eh],ej=[0,[0,[0,[2,[0,c(b[5],0),[0,d]]],ei],0],0],ek=[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,[0,0,[0,1,0]],[0,2,0]],ej],d_],0],el=[0,[2,[0,c(b[5],0),[0,e]]],0],em=[0,[2,[0,c(b[5],0),[0,d]]],el],en=[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],em],eo=[0,[2,[0,c(b[5],0),[0,d]]],en],ep=[0,[2,[0,c(b[5],0),[0,d]]],0],eq=[0,[0,[0,c(b[5],0),[0,D,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ep],er=[0,[0,[2,[0,c(b[5],0),[0,d]]],eq],0],es=[0,[2,[0,c(b[5],0),[0,d]]],0],et=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],es],eu=[0,[0,[2,[0,c(b[5],0),[0,d]]],et],er],ev=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],eu]],eo],ew=[0,[2,[0,c(b[5],0),[0,e]]],ev],ex=[0,[2,[0,c(b[5],0),[0,d]]],0],ey=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],ex],ez=[0,[0,[2,[0,c(b[5],0),[0,d]]],ey],0],eA=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],ez]],ew];F.caml_register_global(593,[0,H,[0,"Oddly Recursive",1,"Ex_OddlyRecursive",H,[0,1,1,2],[0,[0,0,0,0],0,[0,[0,[0,[2,[0,c(b[5],0),[0,e]]],eA],0],ek],0,d8],d7,dc,cT,cw,aI,[0,[0,"odd is recursive",[1,h]],0]]],"Haz3lweb__Ex_OddlyRecursive");return}(globalThis)); +E=F.caml_get_global_data(),k=E.Haz3lcore__Projector,b=E.Haz3lcore__Id,H=E.Haz3lweb__Ex_OddlyRecursive_prompt[1],J=k[25][7],K=[0,[2,[0,c(b[5],0),[0,d]]],0],L=[0,[0,[0,[0,c(b[5],0),[0,"27",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],M=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],L]],K],N=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],M],O=[0,[0,[2,[0,c(b[5],0),[0,d]]],N],0],P=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],O]],0],Q=[0,[2,[0,c(b[5],0),[0,e]]],P],R=[0,[2,[0,c(b[5],0),[0,d]]],Q],S=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],R],T=[0,[2,[0,c(b[5],0),[0,d]]],0],U=[0,[0,[0,[0,c(b[5],0),[0,"42",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],V=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],U]],0],W=[0,[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],V],0],X=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],W]],T],Y=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],X],Z=[0,[0,[2,[0,c(b[5],0),[0,d]]],Y],0],_=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],Z]],S],$=[0,[2,[0,c(b[5],0),[0,e]]],_],aa=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],$],ab=[0,[2,[0,c(b[5],0),[0,d]]],0],ac=[0,[0,[0,[0,c(b[5],0),[0,"3",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],ad=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],ac]],ab],ae=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ad],af=[0,[0,[2,[0,c(b[5],0),[0,d]]],ae],0],ag=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],af]],aa],ah=[0,[2,[0,c(b[5],0),[0,e]]],ag],ai=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],ah],aj=[0,[2,[0,c(b[5],0),[0,d]]],0],ak=[0,[0,[0,[0,c(b[5],0),[0,"2",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],al=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],ak]],0],am=[0,[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],al],0],an=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],am]],aj],ao=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],an],ap=[0,[0,[2,[0,c(b[5],0),[0,d]]],ao],0],aq=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],ap]],ai],ar=[0,[2,[0,c(b[5],0),[0,e]]],aq],as=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],ar],at=[0,[2,[0,c(b[5],0),[0,d]]],0],au=[0,[0,[0,[0,c(b[5],0),[0,B,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],av=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],au]],at],aw=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],av],ax=[0,[0,[2,[0,c(b[5],0),[0,d]]],aw],0],ay=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],ax]],as],az=[0,[2,[0,c(b[5],0),[0,e]]],ay],aA=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],az],aB=[0,[2,[0,c(b[5],0),[0,d]]],0],aC=[0,[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],aD=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aC]],0],aE=[0,[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aD],0],aF=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aE]],aB],aG=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aF],aH=[0,[0,[2,[0,c(b[5],0),[0,d]]],aG],0],aI=[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],aH]],aA],0],0],0,J],[0,"zero",0]],aJ=k[25][7],aK=[0,[1,[0,c(b[5],0),0]],0],aL=[0,[2,[0,c(b[5],0),[0,e]]],0],aM=[0,[2,[0,c(b[5],0),[0,d]]],0],aN=[0,[0,[0,c(b[5],0),[0,B,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],aO=[0,[2,[0,c(b[5],0),[0,d]]],aN],aP=[0,[0,[0,c(b[5],0),[0,C,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],aO],aQ=[0,[2,[0,c(b[5],0),[0,d]]],aP],aR=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aQ],0],aS=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aR]],aM],aT=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aS],aU=[0,[2,[0,c(b[5],0),[0,d]]],aT],aV=[0,[2,[0,c(b[5],0),[0,e]]],0],aW=[0,[2,[0,c(b[5],0),[0,d]]],aV],aX=[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aW],aY=[0,[0,[2,[0,c(b[5],0),[0,d]]],aX],0],aZ=[0,[2,[0,c(b[5],0),[0,d]]],0],a0=[0,[0,[0,c(b[5],0),[0,B,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aZ],a1=[0,[2,[0,c(b[5],0),[0,d]]],a0],a2=[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],a1],a3=[0,[2,[0,c(b[5],0),[0,d]]],a2],a4=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],a3],a5=[0,[0,[2,[0,c(b[5],0),[0,d]]],a4],aY],a6=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],a5]],aU],a7=[0,[2,[0,c(b[5],0),[0,d]]],a6],a8=[0,[2,[0,c(b[5],0),[0,e]]],0],a9=[0,[2,[0,c(b[5],0),[0,d]]],a8],a_=[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],a9],a$=[0,[0,[2,[0,c(b[5],0),[0,d]]],a_],0],ba=[0,[2,[0,c(b[5],0),[0,d]]],0],bb=[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ba],bc=[0,[2,[0,c(b[5],0),[0,d]]],bb],bd=[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],bc],be=[0,[2,[0,c(b[5],0),[0,d]]],bd],bf=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],be],bg=[0,[0,[2,[0,c(b[5],0),[0,d]]],bf],a$],bh=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],bg]],a7],bi=[0,[2,[0,c(b[5],0),[0,d]]],bh],bj=[0,[2,[0,c(b[5],0),[0,e]]],0],bk=[0,[2,[0,c(b[5],0),[0,d]]],bj],bl=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],bm=[0,[0,[0,[0,c(b[5],0),[0,C,0],[0,6,0,[0,[0,0,6],[0,[0,2],6]]],[0,0,0],0]],bl],0],bn=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bm]],bk],bo=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bn],bp=[0,[0,[2,[0,c(b[5],0),[0,d]]],bo],0],bq=[0,[2,[0,c(b[5],0),[0,d]]],0],br=[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bq],bs=[0,[2,[0,c(b[5],0),[0,d]]],br],bt=[0,[0,[0,c(b[5],0),[0,I,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],bs],bu=[0,[2,[0,c(b[5],0),[0,d]]],bt],bv=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bu],bw=[0,[0,[2,[0,c(b[5],0),[0,d]]],bv],bp],bx=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],bw]],bi],by=[0,[2,[0,c(b[5],0),[0,d]]],bx],bz=[0,[2,[0,c(b[5],0),[0,d]]],0],bA=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],bz],bB=[0,[0,[2,[0,c(b[5],0),[0,d]]],bA],0],bC=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],bB]],by],bD=[0,[0,[2,[0,c(b[5],0),[0,e]]],bC],0],bE=[0,[2,[0,c(b[5],0),[0,d]]],0],bF=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],bE],bG=[0,[2,[0,c(b[5],0),[0,d]]],bF],bH=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],bG],bI=[0,[2,[0,c(b[5],0),[0,d]]],bH],bJ=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],bI],bK=[0,[2,[0,c(b[5],0),[0,d]]],bJ],bL=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],bK],bM=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],bL],bN=[0,[0,[2,[0,c(b[5],0),[0,d]]],bM],bD],bO=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],bN]],aL],aK],0],0,aJ],"incorrect base case"],0],bP=k[25][7],bQ=[0,[1,[0,c(b[5],0),0]],0],bR=[0,[2,[0,c(b[5],0),[0,d]]],0],bS=[0,[2,[0,c(b[5],0),[0,e]]],0],bT=[0,[2,[0,c(b[5],0),[0,d]]],bS],bU=[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bT],bV=[0,[2,[0,c(b[5],0),[0,d]]],bU],bW=[0,[2,[0,c(b[5],0),[0,d]]],0],bX=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],bW],bY=[0,[0,[2,[0,c(b[5],0),[0,d]]],bX],0],bZ=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],bY]],bV],b0=[0,[0,[2,[0,c(b[5],0),[0,e]]],bZ],0],b1=[0,[2,[0,c(b[5],0),[0,d]]],0],b2=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],b1],b3=[0,[2,[0,c(b[5],0),[0,d]]],b2],b4=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],b3],b5=[0,[2,[0,c(b[5],0),[0,d]]],b4],b6=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],b5],b7=[0,[2,[0,c(b[5],0),[0,d]]],b6],b8=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],b7],b9=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],b8],b_=[0,[0,[2,[0,c(b[5],0),[0,d]]],b9],b0],b$=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],b_]],bR],bQ],0],0,bP],"always returns true"],bO],ca=k[25][7],cb=[0,[1,[0,c(b[5],0),0]],0],cc=[0,[2,[0,c(b[5],0),[0,d]]],0],cd=[0,[2,[0,c(b[5],0),[0,e]]],0],ce=[0,[2,[0,c(b[5],0),[0,d]]],cd],cf=[0,[0,[0,c(b[5],0),[0,D,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ce],cg=[0,[2,[0,c(b[5],0),[0,d]]],cf],ch=[0,[2,[0,c(b[5],0),[0,d]]],0],ci=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],ch],cj=[0,[0,[2,[0,c(b[5],0),[0,d]]],ci],0],ck=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],cj]],cg],cl=[0,[0,[2,[0,c(b[5],0),[0,e]]],ck],0],cm=[0,[2,[0,c(b[5],0),[0,d]]],0],cn=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cm],co=[0,[2,[0,c(b[5],0),[0,d]]],cn],cp=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],co],cq=[0,[2,[0,c(b[5],0),[0,d]]],cp],cr=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cq],cs=[0,[2,[0,c(b[5],0),[0,d]]],cr],ct=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],cs],cu=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],ct],cv=[0,[0,[2,[0,c(b[5],0),[0,d]]],cu],cl],cw=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],cv]],cc],cb],0],0,ca],"always returns false"],b$],cx=k[25][7],cy=[0,[1,[0,c(b[5],0),0]],0],cz=[0,[2,[0,c(b[5],0),[0,d]]],0],cA=[0,[2,[0,c(b[5],0),[0,e]]],0],cB=[0,[2,[0,c(b[5],0),[0,d]]],cA],cC=[0,[1,[0,c(b[5],0),0]],cB],cD=[0,[2,[0,c(b[5],0),[0,d]]],cC],cE=[0,[2,[0,c(b[5],0),[0,d]]],0],cF=[0,[0,[0,c(b[5],0),[0,"n",0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],cE],cG=[0,[0,[2,[0,c(b[5],0),[0,d]]],cF],0],cH=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],cG]],cD],cI=[0,[0,[2,[0,c(b[5],0),[0,e]]],cH],0],cJ=[0,[2,[0,c(b[5],0),[0,d]]],0],cK=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cJ],cL=[0,[2,[0,c(b[5],0),[0,d]]],cK],cM=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],cL],cN=[0,[2,[0,c(b[5],0),[0,d]]],cM],cO=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cN],cP=[0,[2,[0,c(b[5],0),[0,d]]],cO],cQ=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],cP],cR=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],cQ],cS=[0,[0,[2,[0,c(b[5],0),[0,d]]],cR],cI],cT=[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],cS]],cz],cy],0],0,cx],cU=k[25][7],cV=[0,[1,[0,c(b[5],0),0]],0],cW=[0,[2,[0,c(b[5],0),[0,e]]],0],cX=[0,[2,[0,c(b[5],0),[0,d]]],cW],cY=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],cX],cZ=[0,[2,[0,c(b[5],0),[0,d]]],0],c0=[0,[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],c1=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],c0]],0],c2=[0,[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c1],0],c3=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],c2]],cZ],c4=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c3],c5=[0,[0,[2,[0,c(b[5],0),[0,d]]],c4],0],c6=[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],c5]],cY],c7=[0,[2,[0,c(b[5],0),[0,e]]],c6],c8=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],c7],c9=[0,[2,[0,c(b[5],0),[0,d]]],0],c_=[0,[0,[0,[0,c(b[5],0),[0,D,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],c$=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],c_]],c9],da=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c$],db=[0,[0,[2,[0,c(b[5],0),[0,d]]],da],0],dc=[0,[0,[0,1,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,m,[0,l,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],db]],c8],cV],0],0,cU],6,2],dd=k[25][7],de=[0,[1,[0,c(b[5],0),0]],0],df=[0,0,[0,[2,[0,c(b[5],0),[0,d]]],de]],dg=[0,[2,[0,c(b[5],0),[0,d]]],0],dh=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dg],di=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],dh],dj=[0,[0,[0,c(b[5],0),[0,y,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],di],dk=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],dj],dl=[0,[0,[0,c(b[5],0),[0,h,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],dk],dm=[0,[0,[0,[2,[0,c(b[5],0),[0,d]]],dl],0],0],dn=[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,[0,0,[0,1,0]],[0,2,0]],dm],df],0],dp=[0,[2,[0,c(b[5],0),[0,e]]],0],dq=[0,[2,[0,c(b[5],0),[0,d]]],dp],dr=[0,[0,[0,c(b[5],0),[0,B,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],ds=[0,[0,[0,c(b[5],0),[0,C,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],dr],dt=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ds],0],du=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],dt]],0],dv=[0,[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],du],0],dw=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],dv]],dq],dx=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dw],dy=[0,[2,[0,c(b[5],0),[0,d]]],dx],dz=[0,[2,[0,c(b[5],0),[0,e]]],0],dA=[0,[2,[0,c(b[5],0),[0,d]]],dz],dB=[0,[0,[0,c(b[5],0),[0,D,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dA],dC=[0,[0,[2,[0,c(b[5],0),[0,d]]],dB],0],dD=[0,[2,[0,c(b[5],0),[0,d]]],0],dE=[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dD],dF=[0,[2,[0,c(b[5],0),[0,d]]],dE],dG=[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],dF],dH=[0,[2,[0,c(b[5],0),[0,d]]],dG],dI=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dH],dJ=[0,[0,[2,[0,c(b[5],0),[0,d]]],dI],dC],dK=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],dJ]],dy],dL=[0,[2,[0,c(b[5],0),[0,d]]],dK],dM=[0,[2,[0,c(b[5],0),[0,e]]],0],dN=[0,[2,[0,c(b[5],0),[0,d]]],dM],dO=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],dP=[0,[0,[0,[0,c(b[5],0),[0,C,0],[0,6,0,[0,[0,0,6],[0,[0,2],6]]],[0,0,0],0]],dO],0],dQ=[0,[0,[0,c(b[5],0),[0,f,[0,g,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],dP]],dN],dR=[0,[0,[0,c(b[5],0),[0,h,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dQ],dS=[0,[0,[2,[0,c(b[5],0),[0,d]]],dR],0],dT=[0,[2,[0,c(b[5],0),[0,e]]],0],dU=[0,[2,[0,c(b[5],0),[0,d]]],dT],dV=[0,[0,[0,c(b[5],0),[0,A,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dU],dW=[0,[2,[0,c(b[5],0),[0,d]]],dV],dX=[0,[0,[0,c(b[5],0),[0,I,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],dW],dY=[0,[2,[0,c(b[5],0),[0,d]]],dX],dZ=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],dY],d0=[0,[0,[2,[0,c(b[5],0),[0,d]]],dZ],dS],d1=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],d0]],dL],d2=[0,[2,[0,c(b[5],0),[0,e]]],d1],d3=[0,[2,[0,c(b[5],0),[0,d]]],0],d4=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],d3],d5=[0,[0,[2,[0,c(b[5],0),[0,d]]],d4],0],d6=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],d5]],d2],d7=[0,[0,0,0,0],0,[0,[0,[0,[2,[0,c(b[5],0),[0,e]]],d6],0],dn],0,dd],d8=k[25][7],d9=[0,[1,[0,c(b[5],0),0]],0],d_=[0,0,[0,[2,[0,c(b[5],0),[0,d]]],d9]],d$=[0,[2,[0,c(b[5],0),[0,d]]],0],ea=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],d$],eb=[0,[2,[0,c(b[5],0),[0,d]]],ea],ec=[0,[0,[0,c(b[5],0),[0,j,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],eb],ed=[0,[2,[0,c(b[5],0),[0,d]]],ec],ee=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],ed],ef=[0,[2,[0,c(b[5],0),[0,d]]],ee],eg=[0,[0,[0,c(b[5],0),[0,x,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],ef],eh=[0,[2,[0,c(b[5],0),[0,d]]],eg],ei=[0,[0,[0,c(b[5],0),[0,n,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],eh],ej=[0,[0,[0,[2,[0,c(b[5],0),[0,d]]],ei],0],0],ek=[0,[0,[0,c(b[5],0),[0,w,[0,v,[0,s,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,[0,0,[0,1,0]],[0,2,0]],ej],d_],0],el=[0,[2,[0,c(b[5],0),[0,e]]],0],em=[0,[2,[0,c(b[5],0),[0,d]]],el],en=[0,[0,[0,c(b[5],0),[0,z,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],em],eo=[0,[2,[0,c(b[5],0),[0,d]]],en],ep=[0,[2,[0,c(b[5],0),[0,d]]],0],eq=[0,[0,[0,c(b[5],0),[0,D,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ep],er=[0,[0,[2,[0,c(b[5],0),[0,d]]],eq],0],es=[0,[2,[0,c(b[5],0),[0,d]]],0],et=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],es],eu=[0,[0,[2,[0,c(b[5],0),[0,d]]],et],er],ev=[0,[0,[0,c(b[5],0),[0,q,[0,r,[0,t,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],eu]],eo],ew=[0,[2,[0,c(b[5],0),[0,e]]],ev],ex=[0,[2,[0,c(b[5],0),[0,d]]],0],ey=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],ex],ez=[0,[0,[2,[0,c(b[5],0),[0,d]]],ey],0],eA=[0,[0,[0,c(b[5],0),[0,u,[0,j,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],ez]],ew];F.caml_register_global(593,[0,H,[0,"Oddly Recursive",1,"Ex_OddlyRecursive",H,[0,1,1,2],[0,[0,0,0,0],0,[0,[0,[0,[2,[0,c(b[5],0),[0,e]]],eA],0],ek],0,d8],d7,dc,cT,cw,aI,[0,[0,"odd is recursive",[1,h]],0]]],"Haz3lweb__Ex_OddlyRecursive");return}(globalThis)); //# 1323 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var @@ -472318,7 +472257,7 @@ g=e.caml_get_global_data(),d=g.Haz3lweb__ExerciseUtil,b=g.Virtual_dom__Node,h=[0 (function(a){"use strict";var J="5",E="+",I="0",o="2",d=" ",B=":",s="-",h=")",n="1",g="(",q="->",m="test",f="fib",A="let",p="Int",z="=",y="fun",H="3",x="else",i="x",w="in",l=";",k="==",v="<",u="then",t="if",j="end",G="8",e="\xe2\x8f\x8e",D=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):D.caml_call_gen(a,[b])}var -C=D.caml_get_global_data(),r=C.Haz3lcore__Projector,b=C.Haz3lcore__Id,F=C.Haz3lweb__Ex_RecursiveFibonacci_prompt[1],K=r[43][7],L=[0,[1,[0,c(b[5],0),0]],0],M=[0,[2,[0,c(b[5],0),[0,e]]],0],N=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],M],O=[0,[2,[0,c(b[5],0),[0,d]]],0],P=[0,[0,[0,c(b[5],0),[0,"34",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],O],Q=[0,[2,[0,c(b[5],0),[0,d]]],P],R=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],Q],S=[0,[2,[0,c(b[5],0),[0,d]]],R],T=[0,[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],U=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],T]],S],V=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],U],W=[0,[0,[2,[0,c(b[5],0),[0,d]]],V],0],X=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],W]],N],Y=[0,[2,[0,c(b[5],0),[0,e]]],X],Z=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],Y],_=[0,[2,[0,c(b[5],0),[0,d]]],0],$=[0,[0,[0,c(b[5],0),[0,"21",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],_],aa=[0,[2,[0,c(b[5],0),[0,d]]],$],ab=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],aa],ac=[0,[2,[0,c(b[5],0),[0,d]]],ab],ad=[0,[0,[0,[0,c(b[5],0),[0,"7",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],ae=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],ad]],ac],af=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ae],ag=[0,[0,[2,[0,c(b[5],0),[0,d]]],af],0],ah=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],ag]],Z],ai=[0,[2,[0,c(b[5],0),[0,e]]],ah],aj=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],ai],ak=[0,[2,[0,c(b[5],0),[0,d]]],0],al=[0,[0,[0,c(b[5],0),[0,"13",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ak],am=[0,[2,[0,c(b[5],0),[0,d]]],al],an=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],am],ao=[0,[2,[0,c(b[5],0),[0,d]]],an],ap=[0,[0,[0,[0,c(b[5],0),[0,"6",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],aq=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],ap]],ao],ar=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aq],as=[0,[0,[2,[0,c(b[5],0),[0,d]]],ar],0],at=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],as]],aj],au=[0,[2,[0,c(b[5],0),[0,e]]],at],av=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],au],aw=[0,[2,[0,c(b[5],0),[0,d]]],0],ax=[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aw],ay=[0,[2,[0,c(b[5],0),[0,d]]],ax],az=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],ay],aA=[0,[2,[0,c(b[5],0),[0,d]]],az],aB=[0,[0,[0,[0,c(b[5],0),[0,J,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],aC=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aB]],aA],aD=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aC],aE=[0,[0,[2,[0,c(b[5],0),[0,d]]],aD],0],aF=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],aE]],av],aG=[0,[2,[0,c(b[5],0),[0,e]]],aF],aH=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],aG],aI=[0,[2,[0,c(b[5],0),[0,d]]],0],aJ=[0,[0,[0,c(b[5],0),[0,J,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aI],aK=[0,[2,[0,c(b[5],0),[0,d]]],aJ],aL=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],aK],aM=[0,[2,[0,c(b[5],0),[0,d]]],aL],aN=[0,[0,[0,[0,c(b[5],0),[0,"4",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],aO=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aN]],aM],aP=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aO],aQ=[0,[0,[2,[0,c(b[5],0),[0,d]]],aP],0],aR=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],aQ]],aH],aS=[0,[2,[0,c(b[5],0),[0,e]]],aR],aT=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],aS],aU=[0,[2,[0,c(b[5],0),[0,d]]],0],aV=[0,[0,[0,c(b[5],0),[0,H,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aU],aW=[0,[2,[0,c(b[5],0),[0,d]]],aV],aX=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],aW],aY=[0,[2,[0,c(b[5],0),[0,d]]],aX],aZ=[0,[0,[0,[0,c(b[5],0),[0,H,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],a0=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aZ]],aY],a1=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],a0],a2=[0,[0,[2,[0,c(b[5],0),[0,d]]],a1],0],a3=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],a2]],aT],a4=[0,[2,[0,c(b[5],0),[0,e]]],a3],a5=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],a4],a6=[0,[2,[0,c(b[5],0),[0,d]]],0],a7=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],a6],a8=[0,[2,[0,c(b[5],0),[0,d]]],a7],a9=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],a8],a_=[0,[2,[0,c(b[5],0),[0,d]]],a9],a$=[0,[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],ba=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],a$]],a_],bb=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ba],bc=[0,[0,[2,[0,c(b[5],0),[0,d]]],bb],0],bd=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],bc]],a5],be=[0,[2,[0,c(b[5],0),[0,e]]],bd],bf=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],be],bg=[0,[2,[0,c(b[5],0),[0,d]]],0],bh=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bg],bi=[0,[2,[0,c(b[5],0),[0,d]]],bh],bj=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],bi],bk=[0,[2,[0,c(b[5],0),[0,d]]],bj],bl=[0,[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],bm=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bl]],bk],bn=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bm],bo=[0,[0,[2,[0,c(b[5],0),[0,d]]],bn],0],bp=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],bo]],bf],bq=[0,[2,[0,c(b[5],0),[0,e]]],bp],br=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],bq],bs=[0,[2,[0,c(b[5],0),[0,d]]],0],bt=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bs],bu=[0,[2,[0,c(b[5],0),[0,d]]],bt],bv=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],bu],bw=[0,[2,[0,c(b[5],0),[0,d]]],bv],bx=[0,[0,[0,[0,c(b[5],0),[0,I,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],by=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bx]],bw],bz=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],by],bA=[0,[0,[2,[0,c(b[5],0),[0,d]]],bz],0],bB=[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],bA]],br],L],0],0,K],0],bC=r[43][7],bD=[0,[1,[0,c(b[5],0),0]],0],bE=[0,[2,[0,c(b[5],0),[0,d]]],0],bF=[0,[2,[0,c(b[5],0),[0,e]]],0],bG=[0,[2,[0,c(b[5],0),[0,d]]],bF],bH=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],bI=[0,[2,[0,c(b[5],0),[0,d]]],bH],bJ=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],bI],bK=[0,[2,[0,c(b[5],0),[0,d]]],bJ],bL=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bK],0],bM=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bL]],bG],bN=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bM],bO=[0,[2,[0,c(b[5],0),[0,d]]],bN],bP=[0,[0,[0,c(b[5],0),[0,E,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],bO],bQ=[0,[2,[0,c(b[5],0),[0,d]]],bP],bR=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],bS=[0,[2,[0,c(b[5],0),[0,d]]],bR],bT=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],bS],bU=[0,[2,[0,c(b[5],0),[0,d]]],bT],bV=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bU],0],bW=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bV]],bQ],bX=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bW],bY=[0,[2,[0,c(b[5],0),[0,d]]],bX],bZ=[0,[2,[0,c(b[5],0),[0,e]]],0],b0=[0,[2,[0,c(b[5],0),[0,d]]],bZ],b1=[0,[2,[0,c(b[5],0),[0,d]]],b0],b2=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],b1],b3=[0,[0,[2,[0,c(b[5],0),[0,d]]],b2],0],b4=[0,[2,[0,c(b[5],0),[0,d]]],0],b5=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],b4],b6=[0,[2,[0,c(b[5],0),[0,d]]],b5],b7=[0,[0,[0,c(b[5],0),[0,v,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],b6],b8=[0,[2,[0,c(b[5],0),[0,d]]],b7],b9=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],b8],b_=[0,[0,[2,[0,c(b[5],0),[0,d]]],b9],b3],b$=[0,[0,[0,c(b[5],0),[0,t,[0,u,[0,x,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],b_]],bY],ca=[0,[2,[0,c(b[5],0),[0,e]]],b$],cb=[0,[2,[0,c(b[5],0),[0,d]]],ca],cc=[0,[2,[0,c(b[5],0),[0,d]]],0],cd=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],cc],ce=[0,[0,[2,[0,c(b[5],0),[0,d]]],cd],0],cf=[0,[0,[0,c(b[5],0),[0,y,[0,q,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],ce]],cb],cg=[0,[2,[0,c(b[5],0),[0,e]]],cf],ch=[0,[0,[2,[0,c(b[5],0),[0,d]]],cg],0],ci=[0,[2,[0,c(b[5],0),[0,d]]],0],cj=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],ci],ck=[0,[2,[0,c(b[5],0),[0,d]]],cj],cl=[0,[0,[0,c(b[5],0),[0,q,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],ck],cm=[0,[2,[0,c(b[5],0),[0,d]]],cl],cn=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cm],co=[0,[2,[0,c(b[5],0),[0,d]]],cn],cp=[0,[0,[0,c(b[5],0),[0,B,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],co],cq=[0,[0,[0,c(b[5],0),[0,f,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],cp],cr=[0,[0,[2,[0,c(b[5],0),[0,d]]],cq],ch],cs=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,A,[0,z,[0,w,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],cr]],bE],bD],0],0,bC],"incorrect recursion"],0],ct=r[43][7],cu=[0,[1,[0,c(b[5],0),0]],0],cv=[0,[2,[0,c(b[5],0),[0,d]]],0],cw=[0,[2,[0,c(b[5],0),[0,e]]],0],cx=[0,[2,[0,c(b[5],0),[0,d]]],cw],cy=[0,[2,[0,c(b[5],0),[0,d]]],cx],cz=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],cA=[0,[2,[0,c(b[5],0),[0,d]]],cz],cB=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],cA],cC=[0,[2,[0,c(b[5],0),[0,d]]],cB],cD=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cC],0],cE=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],cD]],cy],cF=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cE],cG=[0,[2,[0,c(b[5],0),[0,d]]],cF],cH=[0,[0,[0,c(b[5],0),[0,E,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],cG],cI=[0,[2,[0,c(b[5],0),[0,d]]],cH],cJ=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],cK=[0,[2,[0,c(b[5],0),[0,d]]],cJ],cL=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],cK],cM=[0,[2,[0,c(b[5],0),[0,d]]],cL],cN=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cM],0],cO=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],cN]],cI],cP=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cO],cQ=[0,[2,[0,c(b[5],0),[0,d]]],cP],cR=[0,[2,[0,c(b[5],0),[0,e]]],0],cS=[0,[2,[0,c(b[5],0),[0,d]]],cR],cT=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cS],cU=[0,[0,[2,[0,c(b[5],0),[0,d]]],cT],0],cV=[0,[2,[0,c(b[5],0),[0,d]]],0],cW=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cV],cX=[0,[2,[0,c(b[5],0),[0,d]]],cW],cY=[0,[0,[0,c(b[5],0),[0,v,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],cX],cZ=[0,[2,[0,c(b[5],0),[0,d]]],cY],c0=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cZ],c1=[0,[0,[2,[0,c(b[5],0),[0,d]]],c0],cU],c2=[0,[0,[0,c(b[5],0),[0,t,[0,u,[0,x,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],c1]],cQ],c3=[0,[2,[0,c(b[5],0),[0,d]]],c2],c4=[0,[2,[0,c(b[5],0),[0,e]]],0],c5=[0,[2,[0,c(b[5],0),[0,d]]],c4],c6=[0,[0,[0,c(b[5],0),[0,I,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c5],c7=[0,[0,[2,[0,c(b[5],0),[0,d]]],c6],0],c8=[0,[2,[0,c(b[5],0),[0,d]]],0],c9=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c8],c_=[0,[2,[0,c(b[5],0),[0,d]]],c9],c$=[0,[0,[0,c(b[5],0),[0,v,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],c_],da=[0,[2,[0,c(b[5],0),[0,d]]],c$],db=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],da],dc=[0,[0,[2,[0,c(b[5],0),[0,d]]],db],c7],dd=[0,[0,[0,c(b[5],0),[0,t,[0,u,[0,x,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],dc]],c3],de=[0,[2,[0,c(b[5],0),[0,e]]],dd],df=[0,[2,[0,c(b[5],0),[0,d]]],de],dg=[0,[2,[0,c(b[5],0),[0,d]]],0],dh=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],dg],di=[0,[0,[2,[0,c(b[5],0),[0,d]]],dh],0],dj=[0,[0,[0,c(b[5],0),[0,y,[0,q,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],di]],df],dk=[0,[2,[0,c(b[5],0),[0,e]]],dj],dl=[0,[0,[2,[0,c(b[5],0),[0,d]]],dk],0],dm=[0,[2,[0,c(b[5],0),[0,d]]],0],dn=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dm],dp=[0,[2,[0,c(b[5],0),[0,d]]],dn],dq=[0,[0,[0,c(b[5],0),[0,q,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],dp],dr=[0,[2,[0,c(b[5],0),[0,d]]],dq],ds=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dr],dt=[0,[2,[0,c(b[5],0),[0,d]]],ds],du=[0,[0,[0,c(b[5],0),[0,B,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],dt],dv=[0,[0,[0,c(b[5],0),[0,f,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],du],dw=[0,[0,[2,[0,c(b[5],0),[0,d]]],dv],dl],dx=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,A,[0,z,[0,w,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],dw]],cv],cu],0],0,ct],"incorrect base cases"],cs],dy=r[43][7],dz=[0,[1,[0,c(b[5],0),0]],0],dA=[0,[2,[0,c(b[5],0),[0,d]]],dz],dB=[0,[2,[0,c(b[5],0),[0,e]]],0],dC=[0,[1,[0,c(b[5],0),0]],dB],dD=[0,[2,[0,c(b[5],0),[0,d]]],dC],dE=[0,[2,[0,c(b[5],0),[0,d]]],0],dF=[0,[0,[0,c(b[5],0),[0,"n",0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],dE],dG=[0,[0,[2,[0,c(b[5],0),[0,d]]],dF],0],dH=[0,[0,[0,c(b[5],0),[0,y,[0,q,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],dG]],dD],dI=[0,[2,[0,c(b[5],0),[0,e]]],dH],dJ=[0,[0,[2,[0,c(b[5],0),[0,d]]],dI],0],dK=[0,[2,[0,c(b[5],0),[0,d]]],0],dL=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dK],dM=[0,[2,[0,c(b[5],0),[0,d]]],dL],dN=[0,[0,[0,c(b[5],0),[0,q,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],dM],dO=[0,[2,[0,c(b[5],0),[0,d]]],dN],dP=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dO],dQ=[0,[2,[0,c(b[5],0),[0,d]]],dP],dR=[0,[0,[0,c(b[5],0),[0,B,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],dQ],dS=[0,[2,[0,c(b[5],0),[0,d]]],dR],dT=[0,[0,[0,c(b[5],0),[0,f,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],dS],dU=[0,[0,[2,[0,c(b[5],0),[0,d]]],dT],dJ],dV=[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,A,[0,z,[0,w,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],dU]],dA],0],0],0,dy],dW=r[43][7],dX=[0,[0,[0,0,0,0],0,[0,[0,0,[0,[1,[0,c(b[5],0),0]],0]],0],0,dW],5,0],dY=r[43][7],dZ=[0,[1,[0,c(b[5],0),0]],0],d0=[0,0,[0,[2,[0,c(b[5],0),[0,d]]],dZ]],d1=[0,[2,[0,c(b[5],0),[0,d]]],0],d2=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],d1],d3=[0,[2,[0,c(b[5],0),[0,d]]],d2],d4=[0,[0,[0,c(b[5],0),[0,q,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],d3],d5=[0,[2,[0,c(b[5],0),[0,d]]],d4],d6=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],d5],d7=[0,[2,[0,c(b[5],0),[0,d]]],d6],d8=[0,[0,[0,c(b[5],0),[0,B,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],d7],d9=[0,[0,[0,c(b[5],0),[0,f,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],d8],d_=[0,[0,[0,[2,[0,c(b[5],0),[0,d]]],d9],0],0],d$=[0,[0,[0,c(b[5],0),[0,A,[0,z,[0,w,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,[0,0,[0,1,0]],[0,2,0]],d_],d0],0],ea=[0,[2,[0,c(b[5],0),[0,e]]],0],eb=[0,[2,[0,c(b[5],0),[0,d]]],0],ec=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],ed=[0,[2,[0,c(b[5],0),[0,d]]],ec],ee=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],ed],ef=[0,[2,[0,c(b[5],0),[0,d]]],ee],eg=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ef],0],eh=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],eg]],eb],ei=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],eh],ej=[0,[2,[0,c(b[5],0),[0,d]]],ei],ek=[0,[0,[0,c(b[5],0),[0,E,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],ej],el=[0,[2,[0,c(b[5],0),[0,d]]],ek],em=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],en=[0,[2,[0,c(b[5],0),[0,d]]],em],eo=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],en],ep=[0,[2,[0,c(b[5],0),[0,d]]],eo],eq=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ep],0],er=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],eq]],el],es=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],er],et=[0,[2,[0,c(b[5],0),[0,d]]],es],eu=[0,[2,[0,c(b[5],0),[0,e]]],0],ev=[0,[2,[0,c(b[5],0),[0,d]]],eu],ew=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ev],ex=[0,[0,[2,[0,c(b[5],0),[0,d]]],ew],0],ey=[0,[2,[0,c(b[5],0),[0,d]]],0],ez=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ey],eA=[0,[2,[0,c(b[5],0),[0,d]]],ez],eB=[0,[0,[0,c(b[5],0),[0,v,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],eA],eC=[0,[2,[0,c(b[5],0),[0,d]]],eB],eD=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],eC],eE=[0,[0,[2,[0,c(b[5],0),[0,d]]],eD],ex],eF=[0,[0,[0,c(b[5],0),[0,t,[0,u,[0,x,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],eE]],et],eG=[0,[2,[0,c(b[5],0),[0,e]]],eF],eH=[0,[2,[0,c(b[5],0),[0,d]]],eG],eI=[0,[2,[0,c(b[5],0),[0,d]]],0],eJ=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],eI],eK=[0,[0,[2,[0,c(b[5],0),[0,d]]],eJ],0],eL=[0,[0,[0,c(b[5],0),[0,y,[0,q,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],eK]],eH],eM=[0,[2,[0,c(b[5],0),[0,e]]],eL],eN=[0,[0,0,0,0],0,[0,[0,[0,[2,[0,c(b[5],0),[0,d]]],eM],ea],d$],0,dY],eO=r[43][7];D.caml_register_global(612,[0,F,[0,"Recursive Fibonacci",1,"Ex_RecursiveFibonacci",F,[0,1,1,2],[0,[0,0,0,0],0,[0,[0,[0,[1,[0,c(b[5],0),0]],0],0],0],0,eO],eN,dX,dV,dx,bB,[0,[0,"fib is recursive",[1,f]],0]]],"Haz3lweb__Ex_RecursiveFibonacci");return}(globalThis)); +C=D.caml_get_global_data(),r=C.Haz3lcore__Projector,b=C.Haz3lcore__Id,F=C.Haz3lweb__Ex_RecursiveFibonacci_prompt[1],K=r[25][7],L=[0,[1,[0,c(b[5],0),0]],0],M=[0,[2,[0,c(b[5],0),[0,e]]],0],N=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],M],O=[0,[2,[0,c(b[5],0),[0,d]]],0],P=[0,[0,[0,c(b[5],0),[0,"34",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],O],Q=[0,[2,[0,c(b[5],0),[0,d]]],P],R=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],Q],S=[0,[2,[0,c(b[5],0),[0,d]]],R],T=[0,[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],U=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],T]],S],V=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],U],W=[0,[0,[2,[0,c(b[5],0),[0,d]]],V],0],X=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],W]],N],Y=[0,[2,[0,c(b[5],0),[0,e]]],X],Z=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],Y],_=[0,[2,[0,c(b[5],0),[0,d]]],0],$=[0,[0,[0,c(b[5],0),[0,"21",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],_],aa=[0,[2,[0,c(b[5],0),[0,d]]],$],ab=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],aa],ac=[0,[2,[0,c(b[5],0),[0,d]]],ab],ad=[0,[0,[0,[0,c(b[5],0),[0,"7",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],ae=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],ad]],ac],af=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ae],ag=[0,[0,[2,[0,c(b[5],0),[0,d]]],af],0],ah=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],ag]],Z],ai=[0,[2,[0,c(b[5],0),[0,e]]],ah],aj=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],ai],ak=[0,[2,[0,c(b[5],0),[0,d]]],0],al=[0,[0,[0,c(b[5],0),[0,"13",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ak],am=[0,[2,[0,c(b[5],0),[0,d]]],al],an=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],am],ao=[0,[2,[0,c(b[5],0),[0,d]]],an],ap=[0,[0,[0,[0,c(b[5],0),[0,"6",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],aq=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],ap]],ao],ar=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aq],as=[0,[0,[2,[0,c(b[5],0),[0,d]]],ar],0],at=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],as]],aj],au=[0,[2,[0,c(b[5],0),[0,e]]],at],av=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],au],aw=[0,[2,[0,c(b[5],0),[0,d]]],0],ax=[0,[0,[0,c(b[5],0),[0,G,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aw],ay=[0,[2,[0,c(b[5],0),[0,d]]],ax],az=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],ay],aA=[0,[2,[0,c(b[5],0),[0,d]]],az],aB=[0,[0,[0,[0,c(b[5],0),[0,J,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],aC=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aB]],aA],aD=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aC],aE=[0,[0,[2,[0,c(b[5],0),[0,d]]],aD],0],aF=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],aE]],av],aG=[0,[2,[0,c(b[5],0),[0,e]]],aF],aH=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],aG],aI=[0,[2,[0,c(b[5],0),[0,d]]],0],aJ=[0,[0,[0,c(b[5],0),[0,J,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aI],aK=[0,[2,[0,c(b[5],0),[0,d]]],aJ],aL=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],aK],aM=[0,[2,[0,c(b[5],0),[0,d]]],aL],aN=[0,[0,[0,[0,c(b[5],0),[0,"4",0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],aO=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aN]],aM],aP=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aO],aQ=[0,[0,[2,[0,c(b[5],0),[0,d]]],aP],0],aR=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],aQ]],aH],aS=[0,[2,[0,c(b[5],0),[0,e]]],aR],aT=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],aS],aU=[0,[2,[0,c(b[5],0),[0,d]]],0],aV=[0,[0,[0,c(b[5],0),[0,H,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],aU],aW=[0,[2,[0,c(b[5],0),[0,d]]],aV],aX=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],aW],aY=[0,[2,[0,c(b[5],0),[0,d]]],aX],aZ=[0,[0,[0,[0,c(b[5],0),[0,H,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],a0=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],aZ]],aY],a1=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],a0],a2=[0,[0,[2,[0,c(b[5],0),[0,d]]],a1],0],a3=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],a2]],aT],a4=[0,[2,[0,c(b[5],0),[0,e]]],a3],a5=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],a4],a6=[0,[2,[0,c(b[5],0),[0,d]]],0],a7=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],a6],a8=[0,[2,[0,c(b[5],0),[0,d]]],a7],a9=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],a8],a_=[0,[2,[0,c(b[5],0),[0,d]]],a9],a$=[0,[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],ba=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],a$]],a_],bb=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ba],bc=[0,[0,[2,[0,c(b[5],0),[0,d]]],bb],0],bd=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],bc]],a5],be=[0,[2,[0,c(b[5],0),[0,e]]],bd],bf=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],be],bg=[0,[2,[0,c(b[5],0),[0,d]]],0],bh=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bg],bi=[0,[2,[0,c(b[5],0),[0,d]]],bh],bj=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],bi],bk=[0,[2,[0,c(b[5],0),[0,d]]],bj],bl=[0,[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],bm=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bl]],bk],bn=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bm],bo=[0,[0,[2,[0,c(b[5],0),[0,d]]],bn],0],bp=[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],bo]],bf],bq=[0,[2,[0,c(b[5],0),[0,e]]],bp],br=[0,[0,[0,c(b[5],0),[0,l,0],[0,6,0,[0,[0,[0,10],6],[0,[0,10],6]]],[0,0,0],0]],bq],bs=[0,[2,[0,c(b[5],0),[0,d]]],0],bt=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bs],bu=[0,[2,[0,c(b[5],0),[0,d]]],bt],bv=[0,[0,[0,c(b[5],0),[0,k,0],[0,6,0,[0,[0,[0,7],6],[0,[0,7],6]]],[0,0,0],0]],bu],bw=[0,[2,[0,c(b[5],0),[0,d]]],bv],bx=[0,[0,[0,[0,c(b[5],0),[0,I,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],0],by=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bx]],bw],bz=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],by],bA=[0,[0,[2,[0,c(b[5],0),[0,d]]],bz],0],bB=[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,m,[0,j,0]],[0,6,[0,6,0],[0,[0,0,6],[0,0,6]]],[0,0,[0,1,0]],bA]],br],L],0],0,K],0],bC=r[25][7],bD=[0,[1,[0,c(b[5],0),0]],0],bE=[0,[2,[0,c(b[5],0),[0,d]]],0],bF=[0,[2,[0,c(b[5],0),[0,e]]],0],bG=[0,[2,[0,c(b[5],0),[0,d]]],bF],bH=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],bI=[0,[2,[0,c(b[5],0),[0,d]]],bH],bJ=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],bI],bK=[0,[2,[0,c(b[5],0),[0,d]]],bJ],bL=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bK],0],bM=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bL]],bG],bN=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bM],bO=[0,[2,[0,c(b[5],0),[0,d]]],bN],bP=[0,[0,[0,c(b[5],0),[0,E,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],bO],bQ=[0,[2,[0,c(b[5],0),[0,d]]],bP],bR=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],bS=[0,[2,[0,c(b[5],0),[0,d]]],bR],bT=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],bS],bU=[0,[2,[0,c(b[5],0),[0,d]]],bT],bV=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bU],0],bW=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],bV]],bQ],bX=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],bW],bY=[0,[2,[0,c(b[5],0),[0,d]]],bX],bZ=[0,[2,[0,c(b[5],0),[0,e]]],0],b0=[0,[2,[0,c(b[5],0),[0,d]]],bZ],b1=[0,[2,[0,c(b[5],0),[0,d]]],b0],b2=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],b1],b3=[0,[0,[2,[0,c(b[5],0),[0,d]]],b2],0],b4=[0,[2,[0,c(b[5],0),[0,d]]],0],b5=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],b4],b6=[0,[2,[0,c(b[5],0),[0,d]]],b5],b7=[0,[0,[0,c(b[5],0),[0,v,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],b6],b8=[0,[2,[0,c(b[5],0),[0,d]]],b7],b9=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],b8],b_=[0,[0,[2,[0,c(b[5],0),[0,d]]],b9],b3],b$=[0,[0,[0,c(b[5],0),[0,t,[0,u,[0,x,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],b_]],bY],ca=[0,[2,[0,c(b[5],0),[0,e]]],b$],cb=[0,[2,[0,c(b[5],0),[0,d]]],ca],cc=[0,[2,[0,c(b[5],0),[0,d]]],0],cd=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],cc],ce=[0,[0,[2,[0,c(b[5],0),[0,d]]],cd],0],cf=[0,[0,[0,c(b[5],0),[0,y,[0,q,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],ce]],cb],cg=[0,[2,[0,c(b[5],0),[0,e]]],cf],ch=[0,[0,[2,[0,c(b[5],0),[0,d]]],cg],0],ci=[0,[2,[0,c(b[5],0),[0,d]]],0],cj=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],ci],ck=[0,[2,[0,c(b[5],0),[0,d]]],cj],cl=[0,[0,[0,c(b[5],0),[0,q,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],ck],cm=[0,[2,[0,c(b[5],0),[0,d]]],cl],cn=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],cm],co=[0,[2,[0,c(b[5],0),[0,d]]],cn],cp=[0,[0,[0,c(b[5],0),[0,B,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],co],cq=[0,[0,[0,c(b[5],0),[0,f,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],cp],cr=[0,[0,[2,[0,c(b[5],0),[0,d]]],cq],ch],cs=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,A,[0,z,[0,w,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],cr]],bE],bD],0],0,bC],"incorrect recursion"],0],ct=r[25][7],cu=[0,[1,[0,c(b[5],0),0]],0],cv=[0,[2,[0,c(b[5],0),[0,d]]],0],cw=[0,[2,[0,c(b[5],0),[0,e]]],0],cx=[0,[2,[0,c(b[5],0),[0,d]]],cw],cy=[0,[2,[0,c(b[5],0),[0,d]]],cx],cz=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],cA=[0,[2,[0,c(b[5],0),[0,d]]],cz],cB=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],cA],cC=[0,[2,[0,c(b[5],0),[0,d]]],cB],cD=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cC],0],cE=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],cD]],cy],cF=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cE],cG=[0,[2,[0,c(b[5],0),[0,d]]],cF],cH=[0,[0,[0,c(b[5],0),[0,E,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],cG],cI=[0,[2,[0,c(b[5],0),[0,d]]],cH],cJ=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],cK=[0,[2,[0,c(b[5],0),[0,d]]],cJ],cL=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],cK],cM=[0,[2,[0,c(b[5],0),[0,d]]],cL],cN=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cM],0],cO=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],cN]],cI],cP=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cO],cQ=[0,[2,[0,c(b[5],0),[0,d]]],cP],cR=[0,[2,[0,c(b[5],0),[0,e]]],0],cS=[0,[2,[0,c(b[5],0),[0,d]]],cR],cT=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cS],cU=[0,[0,[2,[0,c(b[5],0),[0,d]]],cT],0],cV=[0,[2,[0,c(b[5],0),[0,d]]],0],cW=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cV],cX=[0,[2,[0,c(b[5],0),[0,d]]],cW],cY=[0,[0,[0,c(b[5],0),[0,v,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],cX],cZ=[0,[2,[0,c(b[5],0),[0,d]]],cY],c0=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],cZ],c1=[0,[0,[2,[0,c(b[5],0),[0,d]]],c0],cU],c2=[0,[0,[0,c(b[5],0),[0,t,[0,u,[0,x,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],c1]],cQ],c3=[0,[2,[0,c(b[5],0),[0,d]]],c2],c4=[0,[2,[0,c(b[5],0),[0,e]]],0],c5=[0,[2,[0,c(b[5],0),[0,d]]],c4],c6=[0,[0,[0,c(b[5],0),[0,I,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c5],c7=[0,[0,[2,[0,c(b[5],0),[0,d]]],c6],0],c8=[0,[2,[0,c(b[5],0),[0,d]]],0],c9=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],c8],c_=[0,[2,[0,c(b[5],0),[0,d]]],c9],c$=[0,[0,[0,c(b[5],0),[0,v,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],c_],da=[0,[2,[0,c(b[5],0),[0,d]]],c$],db=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],da],dc=[0,[0,[2,[0,c(b[5],0),[0,d]]],db],c7],dd=[0,[0,[0,c(b[5],0),[0,t,[0,u,[0,x,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],dc]],c3],de=[0,[2,[0,c(b[5],0),[0,e]]],dd],df=[0,[2,[0,c(b[5],0),[0,d]]],de],dg=[0,[2,[0,c(b[5],0),[0,d]]],0],dh=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],dg],di=[0,[0,[2,[0,c(b[5],0),[0,d]]],dh],0],dj=[0,[0,[0,c(b[5],0),[0,y,[0,q,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],di]],df],dk=[0,[2,[0,c(b[5],0),[0,e]]],dj],dl=[0,[0,[2,[0,c(b[5],0),[0,d]]],dk],0],dm=[0,[2,[0,c(b[5],0),[0,d]]],0],dn=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dm],dp=[0,[2,[0,c(b[5],0),[0,d]]],dn],dq=[0,[0,[0,c(b[5],0),[0,q,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],dp],dr=[0,[2,[0,c(b[5],0),[0,d]]],dq],ds=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dr],dt=[0,[2,[0,c(b[5],0),[0,d]]],ds],du=[0,[0,[0,c(b[5],0),[0,B,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],dt],dv=[0,[0,[0,c(b[5],0),[0,f,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],du],dw=[0,[0,[2,[0,c(b[5],0),[0,d]]],dv],dl],dx=[0,[0,[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,A,[0,z,[0,w,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],dw]],cv],cu],0],0,ct],"incorrect base cases"],cs],dy=r[25][7],dz=[0,[1,[0,c(b[5],0),0]],0],dA=[0,[2,[0,c(b[5],0),[0,d]]],dz],dB=[0,[2,[0,c(b[5],0),[0,e]]],0],dC=[0,[1,[0,c(b[5],0),0]],dB],dD=[0,[2,[0,c(b[5],0),[0,d]]],dC],dE=[0,[2,[0,c(b[5],0),[0,d]]],0],dF=[0,[0,[0,c(b[5],0),[0,"n",0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],dE],dG=[0,[0,[2,[0,c(b[5],0),[0,d]]],dF],0],dH=[0,[0,[0,c(b[5],0),[0,y,[0,q,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],dG]],dD],dI=[0,[2,[0,c(b[5],0),[0,e]]],dH],dJ=[0,[0,[2,[0,c(b[5],0),[0,d]]],dI],0],dK=[0,[2,[0,c(b[5],0),[0,d]]],0],dL=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dK],dM=[0,[2,[0,c(b[5],0),[0,d]]],dL],dN=[0,[0,[0,c(b[5],0),[0,q,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],dM],dO=[0,[2,[0,c(b[5],0),[0,d]]],dN],dP=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],dO],dQ=[0,[2,[0,c(b[5],0),[0,d]]],dP],dR=[0,[0,[0,c(b[5],0),[0,B,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],dQ],dS=[0,[2,[0,c(b[5],0),[0,d]]],dR],dT=[0,[0,[0,c(b[5],0),[0,f,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],dS],dU=[0,[0,[2,[0,c(b[5],0),[0,d]]],dT],dJ],dV=[0,[0,0,0,0],0,[0,[0,[0,[0,[0,c(b[5],0),[0,A,[0,z,[0,w,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,[0,2,0]]],dU]],dA],0],0],0,dy],dW=r[25][7],dX=[0,[0,[0,0,0,0],0,[0,[0,0,[0,[1,[0,c(b[5],0),0]],0]],0],0,dW],5,0],dY=r[25][7],dZ=[0,[1,[0,c(b[5],0),0]],0],d0=[0,0,[0,[2,[0,c(b[5],0),[0,d]]],dZ]],d1=[0,[2,[0,c(b[5],0),[0,d]]],0],d2=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],d1],d3=[0,[2,[0,c(b[5],0),[0,d]]],d2],d4=[0,[0,[0,c(b[5],0),[0,q,0],[0,3,0,[0,[0,[0,6],3],[0,[0,6],3]]],[0,0,0],0]],d3],d5=[0,[2,[0,c(b[5],0),[0,d]]],d4],d6=[0,[0,[0,c(b[5],0),[0,p,0],[0,3,0,[0,[0,0,3],[0,0,3]]],[0,0,0],0]],d5],d7=[0,[2,[0,c(b[5],0),[0,d]]],d6],d8=[0,[0,[0,c(b[5],0),[0,B,0],[0,2,0,[0,[0,[0,10],2],[0,[0,10],3]]],[0,0,0],0]],d7],d9=[0,[0,[0,c(b[5],0),[0,f,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],d8],d_=[0,[0,[0,[2,[0,c(b[5],0),[0,d]]],d9],0],0],d$=[0,[0,[0,c(b[5],0),[0,A,[0,z,[0,w,0]]],[0,6,[0,2,[0,6,0]],[0,[0,0,6],[0,[0,14],6]]],[0,[0,0,[0,1,0]],[0,2,0]],d_],d0],0],ea=[0,[2,[0,c(b[5],0),[0,e]]],0],eb=[0,[2,[0,c(b[5],0),[0,d]]],0],ec=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],ed=[0,[2,[0,c(b[5],0),[0,d]]],ec],ee=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],ed],ef=[0,[2,[0,c(b[5],0),[0,d]]],ee],eg=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ef],0],eh=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],eg]],eb],ei=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],eh],ej=[0,[2,[0,c(b[5],0),[0,d]]],ei],ek=[0,[0,[0,c(b[5],0),[0,E,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],ej],el=[0,[2,[0,c(b[5],0),[0,d]]],ek],em=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],0],en=[0,[2,[0,c(b[5],0),[0,d]]],em],eo=[0,[0,[0,c(b[5],0),[0,s,0],[0,6,0,[0,[0,[0,4],6],[0,[0,4],6]]],[0,0,0],0]],en],ep=[0,[2,[0,c(b[5],0),[0,d]]],eo],eq=[0,[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ep],0],er=[0,[0,[0,c(b[5],0),[0,g,[0,h,0]],[0,6,[0,6,0],[0,[0,[0,1],6],[0,0,6]]],[0,0,[0,1,0]],eq]],el],es=[0,[0,[0,c(b[5],0),[0,f,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],er],et=[0,[2,[0,c(b[5],0),[0,d]]],es],eu=[0,[2,[0,c(b[5],0),[0,e]]],0],ev=[0,[2,[0,c(b[5],0),[0,d]]],eu],ew=[0,[0,[0,c(b[5],0),[0,n,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ev],ex=[0,[0,[2,[0,c(b[5],0),[0,d]]],ew],0],ey=[0,[2,[0,c(b[5],0),[0,d]]],0],ez=[0,[0,[0,c(b[5],0),[0,o,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],ey],eA=[0,[2,[0,c(b[5],0),[0,d]]],ez],eB=[0,[0,[0,c(b[5],0),[0,v,0],[0,6,0,[0,[0,[0,5],6],[0,[0,5],6]]],[0,0,0],0]],eA],eC=[0,[2,[0,c(b[5],0),[0,d]]],eB],eD=[0,[0,[0,c(b[5],0),[0,i,0],[0,6,0,[0,[0,0,6],[0,0,6]]],[0,0,0],0]],eC],eE=[0,[0,[2,[0,c(b[5],0),[0,d]]],eD],ex],eF=[0,[0,[0,c(b[5],0),[0,t,[0,u,[0,x,0]]],[0,6,[0,6,[0,6,0]],[0,[0,0,6],[0,[0,12],6]]],[0,0,[0,1,[0,2,0]]],eE]],et],eG=[0,[2,[0,c(b[5],0),[0,e]]],eF],eH=[0,[2,[0,c(b[5],0),[0,d]]],eG],eI=[0,[2,[0,c(b[5],0),[0,d]]],0],eJ=[0,[0,[0,c(b[5],0),[0,i,0],[0,2,0,[0,[0,0,2],[0,0,2]]],[0,0,0],0]],eI],eK=[0,[0,[2,[0,c(b[5],0),[0,d]]],eJ],0],eL=[0,[0,[0,c(b[5],0),[0,y,[0,q,0]],[0,6,[0,2,0],[0,[0,0,6],[0,[0,14],6]]],[0,0,[0,1,0]],eK]],eH],eM=[0,[2,[0,c(b[5],0),[0,e]]],eL],eN=[0,[0,0,0,0],0,[0,[0,[0,[2,[0,c(b[5],0),[0,d]]],eM],ea],d$],0,dY],eO=r[25][7];D.caml_register_global(612,[0,F,[0,"Recursive Fibonacci",1,"Ex_RecursiveFibonacci",F,[0,1,1,2],[0,[0,0,0,0],0,[0,[0,[0,[1,[0,c(b[5],0),0]],0],0],0],0,eO],eN,dX,dV,dx,bB,[0,[0,"fib is recursive",[1,f]],0]]],"Haz3lweb__Ex_RecursiveFibonacci");return}(globalThis)); //# 1338 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var @@ -475189,56 +475128,64 @@ a=D(f,b,d),i=E(f,b,e,d),j=g(m[37],i,a),k=g(h[24],function(a){return C(f,c,a)},d) //# 4303 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var -v="selected",M="indicated",n=a.jsoo_runtime;function +U="slidef",T="type",w="selected",S="check",R="slide",Q="fold",O="indicated",P="text",n=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):n.caml_call_gen(a,[b])}function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):n.caml_call_gen(a,[b,c])}function -l(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):n.caml_call_gen(a,[b,c,d])}function -aj(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):n.caml_call_gen(a,[b,c,d,e])}var -b=n.caml_get_global_data(),j=b.Haz3lcore__Projector,p=b.Stdlib__List,m=b.Virtual_dom__Vdom,k=b.Virtual_dom__Node,K=b.Util__Web,o=b.Stdlib,f=b.Util__OptUtil,c=b.Haz3lcore__Indicated,g=b.Haz3lcore__Id,y=b.Haz3lweb__PieceDec,B=b.Haz3lweb__DecUtil,q=b.Haz3lcore__JsUtil,N=[0,M,[0,"right",0]],O=[0,v,0],P=[0,M,[0,"left",0]],Q=[0,"projector-wrapper",0],R="projector",S=b.Haz3lcore__Measured,T=b.Haz3lcore__Piece,U=[0,0],V=v,W=v,X=[0,1,0],Y=[0,0,0],Z=b.Haz3lcore__Info,_=[0,2,0],$=[0,3,0],aa=[0,4,0],ab=[0,5,0],ac="img/noun-fold-1593402.svg",ad="img",ae=[0,"toggle-knob",0],af=[0,"active",0],ag=[0,"toggle-switch",0],ah="Fold",ai="projectors";function -w(a,b){return h(h(j[81],b)[11],a)}function -r(a,b){if(typeof -b==="number")return 0===b?[6,a]:[6,g[16]];switch(b[0]){case -0:h(q[2],b[1]).focus();return[4,a];case +j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):n.caml_call_gen(a,[b,c,d])}function +ay(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):n.caml_call_gen(a,[b,c,d,e])}var +b=n.caml_get_global_data(),p=b.Stdlib__List,m=b.Virtual_dom__Vdom,k=b.Virtual_dom__Node,M=b.Util__Web,o=b.Stdlib,g=b.Haz3lcore__Projector,f=b.Util__OptUtil,c=b.Haz3lcore__Indicated,l=b.Haz3lcore__Id,A=b.Haz3lweb__PieceDec,D=b.Haz3lweb__DecUtil,r=b.Haz3lcore__JsUtil,V=Q,W=T,X=S,Y=R,Z=U,_=P,$="Unknown projector kind",aa=[0,O,[0,"right",0]],ab=[0,w,0],ac=[0,O,[0,"left",0]],ad=[0,"projector-wrapper",0],ae="projector",af=b.Haz3lcore__Measured,ag=b.Haz3lcore__Piece,ah=[0,0],ai=w,aj=w,ak=[0,1,0],al=[0,0,0],am=b.Haz3lcore__Info,an=[0,2,0],ao=[0,3,0],ap=[0,4,0],aq=[0,5,0],ar="img/noun-fold-1593402.svg",as="img",at=[0,"toggle-knob",0],au=[0,"active",0],av=[0,"toggle-switch",0],aw="Fold",ax="projectors";function +q(a){switch(a){case +0:return V;case +1:return W;case +2:return X;case +3:return Y;case +4:return Z;default:return _}}function +x(a){return a!==S?a!==Q?a!==R?a!==U?a!==P?a!==T?h(o[2],$):1:5:4:3:0:2}function +y(a,b){var +c=b[1],d=b[2];return[0,c,i(h(g[52],c)[5],d,a)]}function +s(a,b){if(typeof +b==="number")return 0===b?[6,a]:[6,l[16]];switch(b[0]){case +0:h(r[2],b[1]).focus();return[4,a];case 1:var -c=b[1];return b[2]?(h(q[2],c).blur(),[5,a,1]):(h(q[2],c).blur(),[5,a,0]);case +c=b[1];return b[2]?(h(r[2],c).blur(),[5,a,1]):(h(r[2],c).blur(),[5,a,0]);case 2:return[0,a,b[1]];default:var -d=b[1];return[1,a,function(a){return w(d,a)}]}}function -x(a,b,c,d){return 0===i(j[87],d,c)[0]?i(y[8],a,b):l(k[14],0,0,0)}function -z(a,b){if(a)var -d=a[1][1]?N:P,c=d;else +d=b[1];return[1,a,function(a){return y(d,a)}]}}function +z(a,b,c,d){return 0===i(g[53],d,c)[0]?i(A[8],a,b):j(k[14],0,0,0)}function +B(a,b){if(a)var +d=a[1][1]?aa:ac,c=d;else var c=0;var -e=b?O:0;return i(o[37],e,c)}function -A(a,b,c,d,e,f,g){var -n=e?y[9]:B[18],p=[0,x(a,b,d,f),0],r=[0,h(m[1][16],Q),0],s=[0,l(k[14],0,[0,[0,q[27],r]],[0,g,0]),p],t=[0,l(B[21],a,[0,n],b),0],u=z(c,e),v=[0,R,[0,h(j[86],f),0]],w=i(o[37],v,u),A=[0,[0,h(m[1][16],w),t]];return l(k[14],0,A,s)}function -C(k,b,c,d,e){var -a=i(j[43][8],k,b[5][1][5]);return i(f[10][1],a,function(l){var -a=i(g[15][18],k,b[5][9]);return i(f[10][1],a,function(a){var -m=[0,a,e,i(g[15][18],k,b[4][2])],n=i(S[41],k,b[5][3]);return i(f[10][2],n,function(a){var -f=i(h(j[81],l)[9],m,function(a){return h(c,r(k,a))});return A(d,a,e,m,i(p[37],k,b[3]),l,f)})})})}function -s(a){var -b=h(c[2],a);if(!b)return 0;var -d=b[1],e=[0,d[2]];return[0,[0,h(T[30],d[1]),e]]}function -D(a){var -b=s(a);return b?[0,b[1][2]]:0}function +e=b?ab:0;return i(o[37],e,c)}function +C(a,b,c,d,e,f,g){var +l=e?A[9]:D[18],n=[0,z(a,b,d,f),0],p=[0,h(m[1][16],ad),0],s=[0,j(k[14],0,[0,[0,r[27],p]],[0,g,0]),n],t=[0,j(D[21],a,[0,l],b),0],u=B(c,e),v=[0,ae,[0,q(f[1]),0]],w=i(o[37],v,u),x=[0,[0,h(m[1][16],w),t]];return j(k[14],0,x,s)}function +E(k,b,c,d,e){var +a=i(g[25][8],k,b[5][1][5]);return i(f[10][1],a,function(m){var +a=i(l[15][18],k,b[5][9]);return i(f[10][1],a,function(a){var +n=[0,a,e,i(l[15][18],k,b[4][2])],o=i(af[41],k,b[5][3]);return i(f[10][2],o,function(a){var +f=h(g[52],m[1]),l=j(f[3],m[2],n,function(a){return h(c,s(k,a))});return C(d,a,e,n,i(p[37],k,b[3]),m,l)})})})}function t(a){var -b=h(c[5],a);return i(f[10][1],b,function(b){var -c=i(j[43][8],b,a[5]);return i(f[10][2],c,function(a){return[0,b,a]})})}function -d(a){return t(a[1][1])}function -u(a){var -b=d(a);return i(f[10][2],b,function(a){return h(j[82],a[2])})}function -E(a,b){var -c=t(a);return i(f[10][2],c,function(a){return i(j[87],a[2],b)})}function +b=h(c[2],a);if(!b)return 0;var +d=b[1],e=[0,d[2]];return[0,[0,h(ag[30],d[1]),e]]}function F(a){var -b=d(a);return b?b[1][1]:g[16]}function -G(d,b){var +b=t(a);return b?[0,b[1][2]]:0}function +u(a){var +b=h(c[5],a);return i(f[10][1],b,function(b){var +c=i(g[25][8],b,a[5]);return i(f[10][2],c,function(a){return[0,b,a]})})}function +d(a){return u(a[1][1])}function +v(a){var +b=d(a);return i(f[10][2],b,function(a){return a[2][1]})}function +G(a,b){var +c=u(a);return i(f[10][2],c,function(a){return i(g[53],a[2],b)})}function +H(a){var +b=d(a);return b?b[1][1]:l[16]}function +I(d,b){var a=h(c[5],d);return i(f[10][1],a,function(c){var -a=i(g[15][18],c,b[5][9]);return i(f[10][1],a,function(a){var -e=i(g[15][18],c,b[4][2]);return E(d,[0,a,D(d),e])})})}function -H(a,b){var -c=[0,h(k[5],b),0],d=b==a?[0,i(m[1][1],W,V),0]:0;return l(k[32],0,[0,d],c)}function +a=i(l[15][18],c,b[5][9]);return i(f[10][1],a,function(a){var +e=i(l[15][18],c,b[4][2]);return G(d,[0,a,F(d),e])})})}function +J(a,b){var +c=[0,h(k[5],b),0],d=b==a?[0,i(m[1][1],aj,ai),0]:0;return j(k[32],0,[0,d],c)}function e(a){var -e=1=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}function @@ -475289,7 +475236,7 @@ u(a){return e(p[15][17],a,f[2][5][7])}function v(a){var g=e(c[64],f[2][5][3],a),h=d(c[61],a),b=d(q[2],a),i=b?b[1][2]:1;return[0,e(O[6],j,[0,i,g,h]),0]}function w(a){var -b=e(r[16],a,f[2]);return b?b[1]:v(a)}function +b=e(r[18],a,f[2]);return b?b[1]:v(a)}function o(a,b,c,d){var f=e(n[49],[0,b],d);return[0,c,e(x[16],a,f)]}function y(a,b){switch(b[0]){case @@ -475347,17 +475294,17 @@ b=e(i[20][27],a,f[2][5][3][4]),g=[0,d(m[4][7],-1),0],h=a===c[1]?c[2]:b[1];return b(c,b){try{var e=a(b,function(a){return ap(ak[22],j,0,[0,a[1],a[2]],[0,c],0,0,a[3])});return e}catch(f){d(k[46],ai);return h(aj[14],0,0,0)}}function K(a){return e(g[20],function(a){return b(am,a)},f[2][4][3])}function -L(a){return d(r[10],a)?0:D(a)}function +L(a){return d(r[12],a)?0:D(a)}function M(a,b){var c=[0,J(a[2],b),0],e=[0,I(a),c],f=[0,A(a),e],h=[0,L(a),f],i=[0,w(a),h];return d(g[14],i)}function N(a){var -b=[0,h(r[9],f[2],a,j),0],c=[0,K(0),b];return d(g[14],c)}return[0,j,u,v,w,o,y,z,s,A,D,t,I,J,a,b,function(a){return e(g[23],function(a){var +b=[0,h(r[11],f[2],a,j),0],c=[0,K(0),b];return d(g[14],c)}return[0,j,u,v,w,o,y,z,s,A,D,t,I,J,a,b,function(a){return e(g[23],function(a){var d=a[2],f=a[1];try{var g=[0,b([0,e(k[28],al,d),0],f)];return g}catch(f){var c=ar(f);if(c===k[8])return 0;throw aq(c,0)}},a)},K,L,M,N,function(a){var b=[0,N(a),0],c=[0,M(f[2][5][1],f[2][5][2]),b];return d(g[14],c)}]}],"Haz3lweb__Deco");return}(globalThis)); -//# 4475 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4483 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="cell-item",e="cell",o=a.jsoo_runtime;function p(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}function @@ -475429,7 +475376,7 @@ b=[0,p(q[5],a),0],c=[0,[0,p(s[1][15],aB),0]],e=[0,r(q[14],0,c,b),0],f=[0,[0,p(s[ j=p(A[33],c);return[0,i(a,b,e,h,0,aH,aG,0,0,aF,d,[0,[0,g]],[0,f],0,r(B[11],aE,j,aD[8])),0]},function(a,b,c,d,e){var k=p(A[33],e),f=r(B[11],aI,k,b[3]),g=f[1][2][4],l=b[3][2],m=l||b[3][4],h=m?r(F[3],b[3],g[2],g[1]):aM,j=b[3][4]?[0,[0,h,r(F[4],b[3],0,h),0]]:0,n=b[3][2],o=n||b[3][4],q=o?x(1,c,a,b,j,d):0;return i(c,a,b,d,0,aL,aK,0,p(aJ[21],j),[0,q],0,0,0,0,f)}],"Haz3lweb__Cell");return}(globalThis)); -//# 4548 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4556 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var q=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}function @@ -475442,14 +475389,14 @@ b=q.caml_get_global_data(),f=b.Haz3lcore__JsUtil,c=b.Virtual_dom__Effect,d=b.Haz a=i(l[54],e,f),o=i(n[9],m[21],a),q=c[3][2],r=q||c[3][4],t=r?h(h(s[7],function(a){return x(k[14],0,j,b,c,a,f)}),a):0;return[0,y(k[15],j,b,c,p,0,0,0,0,o,t,d,0,0,0,g),0]},function(b){return g(e[2],r,d[5],function(a){var d=h(j[19],b);i(f[13],o,d);return c[1]})},function(b){return z(e[8],u,t,d[5],function(a){return a?h(b,[8,a[1]]):c[1]})},function(b){return g(e[2],w,d[16],function(a){return h(f[18],v)?h(b,2):c[1]})}],"Haz3lweb__ScratchMode");return}(globalThis)); -//# 4562 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4570 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}var j=g.caml_get_global_data(),f=j.Haz3lcore__Piece,b=j.Haz3lweb__Example,d=c(b[22],"t_var"),e=c(b[21],"ty_arg"),h=[0,0,c(b[86],"type Peano = \n rec P -> Z + S(P) \n in S(S(S(Z)))"),"The type of the Peano numbers and the representation of the number 3."],k=[0,[0,c(f[30],d),[0,e,0]]],l=[0,d,[0,c(b[85],0),0]],m=[0,[0,c(b[85],0),l],0],i=[0,54,[0,c(b[31],m),[0,e,0]],k,"This recursive type classifies the least fixed point of the polymorphic type over the [*type variable*](%s) of body [*instantiated type*](%s).",[0,h,0]];g.caml_register_global(7,[0,d,e,function(a,b){var g=[0,[0,c(f[30],e),b],0];return[0,[0,c(f[30],d),a],g]},h,i,[0,55,[0,i,0]]],"Haz3lweb__RecTyp");return}(globalThis)); -//# 4570 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4578 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -475459,7 +475406,7 @@ b=e.caml_get_global_data(),c=b.Haz3lweb__Example,f=b.Haz3lcore__Id,i="\n e=[0,[0,25,d(c[86],j),i],0],k=g(f[7],0,b),l=g(f[7],0,a),o=h(n[4],m,l,k);return[0,26,67,h(r[73][9],[0,q,a],[0,p,b],function(a,b){var e=[0,d(c[85],0),[0,b,0]],f=[0,d(c[64],0),e];return[0,a,[0,d(c[85],0),f]]}),o,e]}],"Haz3lweb__PipelineExp");return}(globalThis)); -//# 4581 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4589 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var v="e_arg",u="...",t="e_fun",i=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}var @@ -475468,14 +475415,14 @@ e=[0,[0,c(d[30],n),b],0];return[0,[0,c(d[30],m),a],e]},o,e,f,function(a,b){var g=[0,[0,c(d[30],f),b],0];return[0,[0,c(d[30],e),a],g]},p,g,h,function(a,b){var e=[0,[0,c(d[30],h),b],0];return[0,[0,c(d[30],g),a],e]},r,[0,18,[0,o,0]],[0,19,[0,p,0]],[0,20,[0,r,0]]],"Haz3lweb__AppExp");return}(globalThis)); -//# 4591 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4599 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var i=f.caml_get_global_data(),g=i.Haz3lcore__Piece,b=i.Haz3lweb__Example,d=c(b[20],"p_con"),e=c(b[20],"p_arg"),h=[0,43,[0,d,[0,c(b[72],[0,[0,e,0],0]),0]],0,"Only expressions that match the [*constructor*](%s) with an *argument* matching the [*argument pattern*](%s) match this *constructor application pattern*.",0];f.caml_register_global(5,[0,d,e,function(a,b){var f=[0,[0,c(g[30],e),b],0];return[0,[0,c(g[30],d),a],f]},h,[0,44,[0,h,0]]],"Haz3lweb__AppPat");return}(globalThis)); -//# 4599 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4607 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var p="ty_arg2",c="ty_out",l=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}var @@ -475483,13 +475430,13 @@ o=l.caml_get_global_data(),e=o.Haz3lcore__Piece,b=o.Haz3lweb__Example,f=d(b[21], c=[0,[0,d(e[30],g),b],0];return[0,[0,d(e[30],f),a],c]},h,i,j,k,function(a,b,c){var f=[0,[0,d(e[30],k),c],0],g=[0,[0,d(e[30],j),b],f];return[0,[0,d(e[30],i),a],g]},n,[0,56,[0,h,0]],[0,57,[0,n,[0,h,0]]]],"Haz3lweb__ArrowTyp");return}(globalThis)); -//# 4608 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4616 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var l="...",e=a.jsoo_runtime;function b(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}var k=e.caml_get_global_data(),c=k.Haz3lweb__Example,m=k.Haz3lcore__Piece,f=[0,21,b(c[86],"case 1 \n| 2 => 3 \n| _ => 4 \nend"),"The scrutinee of the case expression is 1. Since the scrutinee does not match the the first pattern 2. Since the scrutinee does match the second pattern which is a wildcard, the second branch is taken. The whole expression evaluates to the second clause 4."],g=[0,22,b(c[86],"case (1, 2) \n| (_, 2) => 3 \n| _ => 4 \nend"),"The scrutinee of the case expression is (1, 2). Since the scrutinee matches the first pattern (_, 2), the first branch is taken. This pattern is matched because the first element 1 matches the first element pattern, which is a wildcard, and the second element 2 matches the second element pattern 2. The whole expression evaluates to the first clause 3."],h=[0,23,b(c[86],"case 1 \n| 1 => 1.1 \n| 2 => 2.2 \n| _ => 3.3 \nend"),"The scrutinee of the case expression is 1. Since the scrutinee matches the first pattern, the first branch is taken, and the case evaluates to the first clause."],i=[0,24,b(c[86],"case false \n| true => 1 \n| false => 2 \nend"),"The scrutinee of the case expression is false. The scrutinee does not match the first pattern but does match the second pattern, so the second branch is taken."],d=b(c[19],"e_scrut"),n=[0,b(c[84],0),0],o=[0,b(c[19],l),n],p=[0,b(c[85],0),o],q=[0,b(c[85],0),0],r=[0,b(c[20],l),q],s=[0,[0,b(c[85],0),r],0],t=[0,b(c[78],s),p],u=[0,b(c[84],0),t],v=[0,b(c[19],"e1"),u],w=[0,b(c[85],0),v],x=[0,b(c[85],0),0],y=[0,b(c[20],"p1"),x],z=[0,[0,b(c[85],0),y],0],A=[0,b(c[78],z),w],B=[0,d,[0,b(c[84],0),A]],C=[0,[0,b(c[85],0),B],0],j=[0,24,[0,b(c[77],C),0],0,"Consider each branch in order. For the first branch with a *pattern* that matches the [*scrutinee*](%s), evaluates to the corresponding *clause*.",[0,h,[0,i,[0,f,[0,g,0]]]]];e.caml_register_global(16,[0,f,g,h,i,d,function(a){return[0,[0,b(m[30],d),a],0]},j,[0,24,[0,j,0]]],"Haz3lweb__CaseExp");return}(globalThis)); -//# 4615 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4623 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g="kind-view",e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -475498,7 +475445,7 @@ b=e.caml_get_global_data(),c=b.Util__Web,h=b.Haz3lweb__Type,i=g,j="Type",k=b.Vir b=[0,d(h[7],a[1]),0];return f(c[2],i,0,b)}var e=[0,d(k[5],j),0];return f(c[2],l,0,e)}],"Haz3lweb__Kind");return}(globalThis)); -//# 4625 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4633 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var p="seperator",o="context-entry",h=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function @@ -475515,7 +475462,7 @@ a=d(v[183],b),f=d(j[39],a),g=d(c[10],f);return d(d(c[20],function(a){return k(e, a=d(j[39],b),l=d(c[10],a),m=i(c[20],function(a){return k(h,a)},l),n=[0,[0,d(f[1],t),0]];return g(e[14],0,n,m)},n,function(a,b,c){var h=b[5]?w:0,j=i(y[37],x,h),k=d(f[1],j),l=n(a,c);return g(e[14],0,[0,[0,k,0]],l)}],"Haz3lweb__CtxInspector");return}(globalThis)); -//# 4643 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4651 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var U=197,o=":",T="cursor-inspector",z="not found",S=" is inexhaustive",R="Expected a constructor",Q=",",P=" have inconsistent types:",n=a.jsoo_runtime,O=n.caml_equal;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):n.caml_call_gen(a,[b])}function @@ -475655,10 +475602,10 @@ N(a,b,c){var d=[0,M(a,b,c),0],h=0,l=0,m=e(r[U],c)?p:s,n=g(i[37],bl,[0,m,l]),o=[0,[0,e(j[1],n),h]];return k(f[14],0,o,d)}n.caml_register_global(101,[0,p,s,function(a){return g(h,a,d)},function(a){return g(m,a,l)},q,A,C,D,F,u,v,w,I,J,x,y,K,L,function(a){var b=e(t[15][6],a),c=[0,e(f[5],b),0];return e(g(m,0,l),c)},M,N,function(h,b,c,d){var a=[0,[0,e(E[1][23],bm),0]],i=f[14];if(!b[3][1])return j[4];if(d){var -l=d[1],s=[0,k(bq[23],function(a){return e(h,[11,[2,a]])},c,l),0],t=[0,N(h,b,l),s];return e(g(i,0,a),t)}var +l=d[1],s=[0,k(bq[25],function(a){return e(h,[11,[2,a]])},c,l),0],t=[0,N(h,b,l),s];return e(g(i,0,a),t)}var m=[0,e(f[5],br),0],n=[0,bn[18],0],o=[0,[0,e(j[1],bo),0]],p=[0,k(f[14],0,o,n),m],q=[0,[0,e(j[1],bp),0]],r=[0,k(f[14],0,q,p),0];return e(g(i,0,a),r)}],"Haz3lweb__CursorInspector");return}(globalThis)); -//# 4787 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4795 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var x="selected",w="none",i=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}function @@ -475698,7 +475645,7 @@ f=s(a,b[1],b[2]);break;default:var f=v(a,b[1],b[2],h)}var i=[0,[0,e(j[1][23],O),0]];return d(g[14],0,i,f)}],"Haz3lweb__EditorModeView");return}(globalThis)); -//# 4828 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4836 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var aa="cell-item",$="Pass",_="some-fail",ac="test-percent",y="test-hint",B="test-report",u="test-summary",A="test-instance",x="Test",Z="No test results",z="test-panel",w="test-id",t="test-text",ab="all-pass",p=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):p.caml_call_gen(a,[b])}function @@ -475751,7 +475698,7 @@ d=[0,O(a,b,c)],f=[0,Q(a,b[1]),0],j=[0,i(e[6],aG,aF),f];return h(e[18],aH,j,d)}], b=[0,f(g[5],aP),0],c=[0,F(a[2]),b],d=[0,[0,f(j[1][15],aQ),0]],k=[0,h(g[14],0,d,c),0],l=[0,[0,f(j[1][16],aR),0]],m=[0,h(g[14],0,l,k),0],n=[0,f(e[16],m)],o=[0,S(a[1]),0],p=[0,i(e[6],aT,aS),o];return h(e[18],aU,p,n)}],[0,l[1],l[2],l[3],T,U,V,W,X,function(l,b,c,d){var a=b[2],o=f(f(s[7],function(a){return h(n[6],l,a,5)}),a),p=f(s[15],o),r=V(b),t=[0,m(i(q,i(T,b,c),d)),0],u=i(k[37],t,r),v=[0,[0,f(j[1][15],a1),0]],w=[0,h(g[14],0,v,u),0],x=i(k[37],w,p),y=[0,[0,f(j[1][16],a2),0]],z=[0,h(g[14],0,y,x),0],A=[0,f(e[16],z)],B=[0,X(l,b),0],C=[0,i(e[6],a4,a3),B];return h(e[18],a5,C,A)}],[0,C[1],Y,function(a){return m(f(Y,a))}]],"Haz3lweb__Grading");return}(globalThis)); -//# 4882 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4890 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var u=".ml",s="Correct Implementation",o="text/plain",q=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}function @@ -475785,7 +475732,7 @@ e=b[2][3],h=g(f[28],b[2][3],x),i=g(n[131],e,b);c(k[12],h,A,i);return d[1]})},fun e=b[2][3],h=g(f[28],b[2][3],C),i=g(n[133],e,b);c(k[12],h,D,i);return d[1]})},function(b){return c(j[2],I,e[5],function(a){var e=b[2][3],h=g(f[28],b[2][3],G),i=g(n[134],e,b);c(k[12],h,H,i);return d[1]})},r,function(b){return c(j[2],O,e[5],function(a){r(b[6]);return d[1]})},function(b){return E(j[8],Q,P,e[5],function(a){return a?h(b,[4,a[1]]):d[1]})}],"Haz3lweb__ExerciseMode");return}(globalThis)); -//# 4917 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4925 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var o="pause $e in\nhide let = in in\nlet x = 1 in\nlet y = 2 in\nx + y",n="pause $e in instruct the evaluator to act like a single-stepper, e.g. stop at every step. The hide filter expression instructs the evaluator to skip over all evaluator steps that destructs perform substitution on a let-expression. Here, the substitution of variable x and y is skipped over and we directly got 1 + 2 in the result area.",m="e_body",l="p",k=") that match the [*pattern*](",j=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}function @@ -475802,14 +475749,14 @@ j=[0,[0,29,d(c[86],F),E],0],k=e(f[7],0,a),l=e(f[7],0,b),m=g(h[4],G,l,k);return[0 e=[0,d(c[84],0),[0,b,0]],f=[0,a,[0,d(c[85],0),0]],g=[0,[0,d(c[85],0),f],0];return[0,d(c[82],g),e]}),m,j]},function(a){var b=e(f[7],0,a),j=e(f[7],0,a),k=g(h[4],J,j,b);return[0,72,72,e(i[73][8],[0,K,a],function(a){return[0,d(c[83],0),[0,a,0]]}),k,0]}],"Haz3lweb__FilterExp");return}(globalThis)); -//# 4935 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4943 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}var i=g.caml_get_global_data(),f=i.Haz3lcore__Piece,b=i.Haz3lweb__Example,d=c(b[22],"t_var"),e=c(b[21],"ty_arg"),j=[0,[0,c(f[30],d),[0,e,0]]],k=[0,d,[0,c(b[85],0),0]],l=[0,[0,c(b[85],0),k],0],h=[0,53,[0,c(b[30],l),[0,e,0]],j,"This forall type classifies polymorphic values varying over [*type variable*](%s) with [*instantiated type*](%s).",0];g.caml_register_global(5,[0,d,e,function(a,b){var g=[0,[0,c(f[30],e),b],0];return[0,[0,c(f[30],d),a],g]},h,[0,54,[0,h,0]]],"Haz3lweb__ForallTyp");return}(globalThis)); -//# 4943 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4951 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var h="p1",a2="BoolLit",n="p2",a1="p3",a0="StringLit",aZ="p_tl",d="e",m="...",aY="p_arg",aX="The only value that matches the [*argument pattern*](%s) is `%s`. When applied to an argument which matches the [*argument pattern*](%s), evaluates to the function [*body*](%s).",aQ="p_hd",aU="C",aV="x",aW="p",aP="INVALID",aT="FloatLit",aS="p_con",aO="_",aR="[]",aM="()",aN="IntLit",L=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):L.caml_call_gen(a,[b])}var @@ -475821,7 +475768,7 @@ d=[0,[0,e(f[30],aC),c],0],g=[0,[0,e(f[30],aB),b],d];return[0,[0,e(f[30],aA),a],g g=[0,[0,e(f[30],aF),d],0],h=[0,[0,e(f[30],G),c],g],i=[0,[0,e(f[30],F),b],h];return[0,[0,e(f[30],E),a],i]},aH,l,function(a,b){return g(c4,c3,a,b)},aJ,H,I,J,function(a,b,c){var d=[0,[0,e(f[30],J),c],0],g=[0,[0,e(f[30],I),b],d];return[0,[0,e(f[30],H),a],g]},aL,[0,[0,0],[0,c,0]],[0,[0,1],[0,aa,[0,c,0]]],[0,[0,2],[0,ac,[0,c,0]]],[0,[0,3],[0,af,[0,c,0]]],[0,[0,4],[0,ah,[0,c,0]]],[0,[0,5],[0,aj,[0,c,0]]],[0,[0,6],[0,al,[0,c,0]]],[0,[0,7],[0,an,[0,c,0]]],[0,[0,8],[0,ap,[0,c,0]]],[0,[0,9],[0,ar,[0,c,0]]],[0,[0,10],[0,at,[0,c,0]]],[0,[0,11],[0,aw,[0,c,0]]],[0,[0,12],[0,ay,[0,c,0]]],[0,[0,13],[0,k,[0,c,0]]],[0,[0,14],[0,aE,[0,k,[0,c,0]]]],[0,[0,15],[0,aH,[0,k,[0,c,0]]]],[0,[0,16],[0,aJ,[0,c,0]]],[0,[0,17],[0,aL,[0,c,0]]]],"Haz3lweb__FunctionExp");return}(globalThis)); -//# 4956 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4964 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):d.caml_call_gen(a,[b])}function @@ -475829,40 +475776,40 @@ j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var b=d.caml_get_global_data(),f=[0,[11,"This should be filled with ",[2,0,[11," to complete the program.",0]]],"This should be filled with %s to complete the program."],g=b.Stdlib__Printf,h=b.Haz3lcore__Id,c="This is an invalid term.",i="INVALID";d.caml_register_global(5,[0,function(a,b,c){var d=j(g[4],f,b);return[0,c,[0,[1,[0,e(h[5],0),0]],0],0,d,0]},function(a,b){return[0,b,[0,e(a,i),0],0,c,0]}],"Haz3lweb__HoleTemplate");return}(globalThis)); -//# 4965 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4973 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var g=e.caml_get_global_data(),b=g.Haz3lweb__Example,c=g.Haz3lweb__HoleTemplate,d=h(c[1],b[19],"an expression",0),f=i(c[2],b[19],1);e.caml_register_global(3,[0,d,[0,0,[0,d,0]],f,[0,1,[0,f,0]]],"Haz3lweb__HoleExp");return}(globalThis)); -//# 4973 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4981 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var e=c.caml_get_global_data(),g=e.Haz3lweb__Example,b=[0,26,[0,[1,[0,f(e.Haz3lcore__Id[5],0),0]],0],0,"Expressions are not matched against the *empty hole pattern* until it is filled.",0],d=[0,27,[0,f(g[20],"Invalid"),0],0,"Expressions are not matched against the invalid pattern until it is corrected.",0];c.caml_register_global(5,[0,b,d,[0,27,[0,b,0]],[0,28,[0,d,0]]],"Haz3lweb__HolePat");return}(globalThis)); -//# 4980 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4988 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var g=e.caml_get_global_data(),b=g.Haz3lweb__Example,c=g.Haz3lweb__HoleTemplate,d=h(c[1],b[22],"a type pattern",64),f=i(c[2],b[22],65);e.caml_register_global(3,[0,d,[0,65,[0,d,0]],f,[0,66,[0,f,0]]],"Haz3lweb__HoleTPat");return}(globalThis)); -//# 4988 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4996 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var e=c.caml_get_global_data(),g=e.Haz3lweb__Example,b=[0,45,[0,[1,[0,f(e.Haz3lcore__Id[5],0),0]],0],0,"This marks a type that needs to be filled in.",0],d=[0,46,[0,f(g[21],"Invalid"),0],0,"This is an invalid type.",0];c.caml_register_global(5,[0,b,d,[0,46,[0,b,0]],[0,47,[0,d,0]]],"Haz3lweb__HoleTyp");return}(globalThis)); -//# 4995 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5003 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var l=c.caml_get_global_data(),h=l.Haz3lcore__Piece,b=l.Haz3lweb__Example,i=[0,8,d(b[86],"if (true) then 1 else 2"),"Since the condition is true, the if expression evaluates to the then branch, 1."],j=[0,9,d(b[86],"if (2 < 1) then 3 else 4"),"Since the condition is 2 < 1 is false, the if expression evaluates to the else branch, 4."],e=d(b[19],"e_cond"),f=d(b[19],"e_then"),g=d(b[19],"e_else"),m=[0,d(b[85],0),[0,g,0]],n=[0,f,[0,d(b[84],0),0]],o=[0,[0,d(b[85],0),n],0],p=[0,e,[0,d(b[84],0),0]],q=[0,[0,d(b[85],0),p],o],k=[0,21,[0,d(b[75],q),m],0,"If the [*condition*](%s) evaluates to `true`, evaluate the [*then branch*](%s). Otherwise, evaluate the [*else branch*](%s).",[0,i,[0,j,0]]];c.caml_register_global(10,[0,i,j,e,f,g,function(a,b,c){var i=[0,[0,d(h[30],g),c],0],j=[0,[0,d(h[30],f),b],i];return[0,[0,d(h[30],e),a],j]},k,[0,21,[0,k,0]]],"Haz3lweb__IfExp");return}(globalThis)); -//# 5003 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5011 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i="p1",bc="BoolLit",p="p2",bb="p3",ba="StringLit",g="e_def",a1="The 1 is thrown away, so the expression evaluates to 2.",a_="p_tl",a$="The true is thrown away, so the expression evaluates to 2.",a9="The only value for the [*definition*](%s) that matches the [*pattern*](%s) is `%s`. The [*definition*](%s) can't be referenced in the [*body*](%s).",o="...",d="e_body",a8="p_arg",a0="p_hd",a5="C",a6="x",a7="p",aZ="INVALID",a4="FloatLit",a3="p_con",aY="_",a2="[]",aW="()",aX="IntLit",N=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):N.caml_call_gen(a,[b])}var @@ -475876,7 +475823,7 @@ d=[0,[0,e(f[30],aM),c],0],g=[0,[0,e(f[30],aL),b],d];return[0,[0,e(f[30],aK),a],g g=[0,[0,e(f[30],aP),d],0],h=[0,[0,e(f[30],H),c],g],i=[0,[0,e(f[30],G),b],h];return[0,[0,e(f[30],F),a],i]},aR,n,I,function(a,b,c){return h(d0,dZ,dY,a,b,c)},aT,J,K,L,function(a,b,c){var d=[0,[0,e(f[30],L),c],0],g=[0,[0,e(f[30],K),b],d];return[0,[0,e(f[30],J),a],g]},aV,[0,[1,1],[0,ac,[0,c,0]]],[0,[1,2],[0,ae,[0,c,0]]],[0,[1,3],[0,ai,[0,c,0]]],[0,[1,4],[0,al,[0,c,0]]],[0,[1,5],[0,ao,[0,c,0]]],[0,[1,6],[0,ar,[0,c,0]]],[0,[1,7],[0,au,[0,c,0]]],[0,[1,8],[0,ax,[0,c,0]]],[0,[1,10],[0,az,[0,c,0]]],[0,[1,9],[0,aC,[0,c,0]]],[0,[1,11],[0,aF,[0,c,0]]],[0,[1,12],[0,aI,[0,c,0]]],[0,[1,13],[0,m,[0,c,0]]],[0,[1,14],[0,aO,[0,m,[0,c,0]]]],[0,[1,15],[0,aR,[0,m,[0,c,0]]]],[0,[1,16],[0,aT,[0,c,0]]],[0,[1,17],[0,aV,[0,c,0]]]],"Haz3lweb__LetExp");return}(globalThis)); -//# 5018 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5026 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}var @@ -475884,7 +475831,7 @@ o=i.caml_get_global_data(),d=o.Haz3lcore__Piece,b=o.Haz3lweb__Example,p=[0,[0,0] g=[0,[0,c(d[30],f),b],0];return[0,[0,c(d[30],e),a],g]},m,g,h,function(a,b){var e=[0,[0,c(d[30],h),b],0];return[0,[0,c(d[30],g),a],e]},n,[0,10,[0,j,0]],[0,11,[0,m,0]],[0,12,[0,n,0]]],"Haz3lweb__ListExp");return}(globalThis)); -//# 5027 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5035 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="p_tl",r="p_snd",l=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}var @@ -475892,13 +475839,13 @@ q=l.caml_get_global_data(),e=q.Haz3lcore__Piece,b=q.Haz3lweb__Example,s=[0,d(b[2 c=[0,[0,d(e[30],g),b],0];return[0,[0,d(e[30],f),a],c]},h,i,j,k,function(a,b,c){var f=[0,[0,d(e[30],k),c],0],g=[0,[0,d(e[30],j),b],f];return[0,[0,d(e[30],i),a],g]},p,[0,37,[0,m,0]],[0,38,[0,n,0]],[0,39,[0,h,0]],[0,40,[0,p,[0,h,0]]]],"Haz3lweb__ListPat");return}(globalThis)); -//# 5036 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5044 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var g=c.caml_get_global_data(),e=g.Haz3lweb__Example,h=g.Haz3lcore__Piece,b=d(e[21],"ty_elem"),f=[0,52,[0,d(e[29],[0,[0,b,0],0]),0],0,"The list type classifies lists with elements with the corresponding [*element type*](%s).",0];c.caml_register_global(4,[0,b,function(a){return[0,[0,d(h[30],b),a],0]},f,[0,53,[0,f,0]]],"Haz3lweb__ListTyp");return}(globalThis)); -//# 5043 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5051 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var bt="If the [*left operand*](%s) is not equal to the [*right operand*](%s), evaluates to `true`. Otherwise, evaluates to `false`.",by="5 is equal to 5, so the expression evaluates to true.",bB="Gives the quotient of the [*left*](%s) and [*right*](%s) operands.",bs="e",bx="4. is greater than 3.1, so the expression evaluates to true.",f="e2",bn="1 is less than 2, so the expression evalutes to true.",br="Gives the sum of the [*left*](%s) and [*right*](%s) operands.",bw="Gives the product of the [*left*](%s) and [*right*](%s) operands.",bv="If the [*left operand*](%s) is greater than or equal to the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",bA="4 is greater than 3, so the expression evaluates to true.",bq="5.5 is equal to 5.5, so the expression evaluates to true.",q="If the [*left operand*](%s) is equal to the [*right operand*](%s), evaluates to `true`. Otherwise, evaluates to `false`.",bu="If the [*left operand*](%s) is less than or equal to the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",bz="1. is less than 2.1, so the expression evalutes to true.",bp="Gives the difference of the [*left*](%s) and [*right*](%s) operands.",bo="If the [*left operand*](%s) is greater than the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",g="e1",bm="If the [*left operand*](%s) is less than the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",p=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):p.caml_call_gen(a,[b])}var @@ -475934,7 +475881,7 @@ f=c(d[30],bf);return e(c(d[30],be),f,a,b)},bg,function(a,b){var f=c(d[30],bi);return e(c(d[30],bh),f,a,b)},bj,n,o,function(a,b){var f=c(d[30],o);return e(c(d[30],n),f,a,b)},bk,[0,[2,[2,0]],[0,af,0]],[0,[2,[1,0]],[0,ag,0]],[0,[3,[0,0]],[0,aj,0]],[0,[3,[0,1]],[0,am,0]],[0,[3,[0,2]],[0,an,0]],[0,[3,[0,3]],[0,ao,0]],[0,[3,[0,4]],[0,ar,0]],[0,[3,[0,5]],[0,au,0]],[0,[3,[0,6]],[0,ax,0]],[0,[3,[0,7]],[0,aA,0]],[0,[3,[0,8]],[0,aD,0]],[0,[3,[0,9]],[0,aG,0]],[0,[3,[0,10]],[0,aJ,0]],[0,[3,[1,0]],[0,aM,0]],[0,[3,[1,1]],[0,aP,0]],[0,[3,[1,2]],[0,aQ,0]],[0,[3,[1,3]],[0,aR,0]],[0,[3,[1,4]],[0,aU,0]],[0,[3,[1,5]],[0,aX,0]],[0,[3,[1,6]],[0,a0,0]],[0,[3,[1,7]],[0,a3,0]],[0,[3,[1,8]],[0,a6,0]],[0,[3,[1,9]],[0,a9,0]],[0,[3,[1,10]],[0,ba,0]],[0,[3,[2,0]],[0,bd,0]],[0,[3,[2,1]],[0,bg,0]],[0,[3,[3,1]],[0,bj,0]],[0,[3,[3,0]],[0,bk,0]]],"Haz3lweb__OpExp");return}(globalThis)); -//# 5080 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5088 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var aA="messageContent",az="@ ",y="%s%s%s%s",aG="<2>",aF="option",ae="%s%s%s%s%s",aD=",@ ",aw="colorings",ax="@,",ay="example",aC="expandable",s="%s",aM="examples",N="Colorings",aK="src/haz3lweb/view/ExplainThis.re.message_mode",o="%s%s%s",aI="style",aB="active",M="MessageContent",p="%s%s",Y=848054398,Z=-976970511,_=139,w=a.jsoo_runtime,n=w.caml_equal;function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):w.caml_call_gen(a,[b])}function @@ -476455,7 +476402,7 @@ var i=c6;var x=[0,ad(cR,i,u),s],y=h(t[37],x,p),z=[0,j(m[5],cT),0],A=[0,j(v[1][55],function(a){return j(f,cU)}),0],B=[0,[0,j(q[1],cV),A]],D=[0,l(m[14],0,B,z),0],E=[0,r(c1[5],cZ,cY,1===c[8][3]?1:0,function(a){return j(f,cX)}),D],F=[0,[0,j(q[1],c2),0]],G=[0,l(m[14],0,F,E),0],H=h(t[37],G,y),I=[0,[0,j(q[1],c3),0]],J=[0,l(m[14],0,I,H),o],K=[0,[0,j(v[1][23],c5),0]];return l(m[14],0,K,J)}],"Haz3lweb__ExplainThis");return}(globalThis)); -//# 5602 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5610 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -476463,7 +476410,7 @@ h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] c=e.caml_get_global_data(),b=c.Virtual_dom__Node,f="X",g=c.Virtual_dom__Vdom;e.caml_register_global(3,[0,function(a){var c=[0,d(b[5],f),0],e=[0,[0,d(g[1][23],a),0]];return h(b[38],0,e,c)}],"Haz3lweb__FontSpecimen");return}(globalThis)); -//# 5611 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5619 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var h="ArrowDown",C="Tab",k="z",B="e",A="d",z="Alt",g="ArrowUp",y="k",o="a",j="Home",x="p",w="Z",f="ArrowLeft",i="End",v="/",d="ArrowRight",e=a.jsoo_runtime,u=e.caml_int_of_string,t=e.caml_string_compare;function n(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -476481,7 +476428,7 @@ s=t(b,"\xc3\x9f");if(0<=s){if(0>=s)return $;if(b==="\xc3\xa7")return _;if(b==="\ if(a[3]){if(a[4]){if(a[6])return b!==o?b!==B?0:c(aw):c(ax)}else if(a[5]&&a[6])return b!==v?b!==o?b!==A?b!==B?b!==y?b!==x?b!==k?l(b)?[0,[10,u(b)]]:b!==h?b!==f?b!==d?b!==g?0:c(ay):c(az):c(aA):c(aB):aC:aD:aE:(n(aG[46],aF),aH):c(aI):c(aJ):aK}else if(!a[4]&&a[5]&&a[6]){if(b===h)return c(aP);if(b===f)return c(aO);if(b===d)return c(aN);if(b===g)return c(aM);if(b!==w&&b!==k)return 0;return aL}}return 0}if(q){var r=t(b,"Delete");if(0<=r){if(0>=r)return c(K);if(b===i)return c(J);if(b==="Escape")return c(I);if(b==="F12")return c(H);if(b===j)return c(G);if(b===C)return F}else{if(b===h)return c(P);if(b===f)return c(O);if(b===d)return c(N);if(b===g)return c(M);if(b==="Backspace")return c(L)}}else{if(b===h)return c(W);if(b===f)return c(V);if(b===d)return c(U);if(b===g)return c(T);if(b===i)return c(S);if(b===j)return c(R);if(b===C)return c(Q)}return b!=="Enter"?1===e.caml_ml_string_length(b)?c([8,b]):0:c([8,E[40]])}],"Haz3lweb__Keyboard");return}(globalThis)); -//# 5630 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5638 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var k=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}function @@ -476510,7 +476457,7 @@ m(a,b,c){var f=[0,[0,e(i[1],am),0]],g=[0,d(j[14],0,f,c),0],h=[0,[0,e(i[1],an),0]],k=[0,d(j[14],0,h,[0,b,0]),0],l=[0,e(ao[1][43],a),0],m=[0,[0,e(i[1],ap),l]],n=[0,d(j[14],0,m,k),g],o=[0,[0,e(i[1],aq),0]];return d(j[14],0,o,n)}k.caml_register_global(70,[0,n,o,p,q,r,t,m,function(a,b,c){var g=[0,d(h[4],as,f[4],ar),0],k=[0,o,[0,d(h[4],au,f[12],at),g]],l=[0,p(a),k],n=t(a,c),s=[0,m(av,f[8],n),l],u=r(a,b,c),v=[0,m(aw,f[7],u),s],w=q(a,b),x=[0,m(ax,f[3],w),v],y=[0,[0,e(i[1],ay),0]],z=[0,d(j[14],0,y,x),0],A=[0,f[17],0],B=[0,[0,e(i[1],az),0]];return[0,d(j[7],0,B,A),z]}],"Haz3lweb__NutMenu");return}(globalThis)); -//# 5660 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5668 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i=a.jsoo_runtime,x=i.caml_equal;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}function @@ -476525,7 +476472,7 @@ m(b,g){function j(a){var b=d(k[25],a[1]);return d(n[17],b)}function l(a,b,c){var -i=f(p[28],b,c),m=d(k[25],g[1]),j=f(q[17],m,i);if(j){var +i=f(p[28],b,c),m=d(k[25],g[1]),j=f(q[19],m,i);if(j){var h=j[1];if(6===h[0]&&x(h[1],s[16]))return e[1];var n=[0,d(a,[11,[2,h]]),0];return[0,e[2],[0,e[19],n]]}var l=d(y[3],i);if(!l)return e[1];var @@ -476534,7 +476481,7 @@ a=[0,d(c[1][84],function(a){var c=i.caml_string_of_jsstring(a.clipboardData.getData("text")),e=d(t[1],C),g=d(f(t[16],e,B),c);d(E[18],a);return d(b,[11,[1,g]])}),0],m=[0,d(c[1][83],function(a){var c=j(g);d(h[24],c);return d(b,F)}),a],o=[0,d(c[1][82],function(a){var b=j(g);d(h[24],b);return e[1]}),m],r=[0,d(c[1][48],function(a){d(h[22],0);return e[1]}),o],u=[0,d(c[1][49],function(a){d(h[22],0);return e[1]}),r],w=1,v=[0,d(c[1][66],function(a){return d(b,G)}),u],A=0,z=[0,d(c[1][74],function(a){return l(b,w,a)}),v],H=1,D=[0,d(c[1][72],function(a){return l(b,A,a)}),z];return[0,d(c[1][73],function(a){var -h=f(p[28],H,a),i=d(k[25],g[1]),b=f(q[17],i,h);if(b){var +h=f(p[28],H,a),i=d(k[25],g[1]),b=f(q[19],i,h);if(b){var c=b[1];if(6===c[0]&&x(c[1],s[16]))return e[1]}return e[19]}),D]}function u(a,b){var m=b[5],n=b[4],q=b[3],e=b[2],h=b[1],i=d(k[25],h);switch(h[0]){case @@ -476548,7 +476495,7 @@ I=[0,g(H[8],a,h,e),0],K=[0,d(j[5],J),0],M=[0,[0,d(c[1][23],L),0]],N=[0,g(j[14],0 b=d(k[25],a[1]);return d(n[17],b)},function(a,b){var e=u(a,b),i=[0,I[28],[0,h[23],0]],k=[0,d(M[1],K),i],n=f(l[37],k,e),o=m(a,b),p=[0,[0,d(c[1][23],N),o]];return g(j[14],0,p,n)}],"Haz3lweb__Page");return}(globalThis)); -//# 5796 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5804 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var A="clearStore",f="TurnOffDynamics",c="ClearStore",z="src/haz3lweb/view/DebugMode.re.action",y="turnOffDynamics",q=-976970511,l=848054398,h=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function @@ -476636,4 +476583,4 @@ I=[0,[0,c[14]],[0,f[34]],[0],n,D],J=d(c[19],c[16]);Q(M[1],L,0,0,K,J,I)}h.caml_re (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiVmRvbVRodW5rIiwiYXJncyIsIkdlbmVyaWNIb29rIiwiaW5pdCIsInVwZGF0ZSIsImRlc3Ryb3kiLCJleHRyYSIsImhvb2tfc3RhdGVfa2V5IiwiU3ltYm9sIiwic3RhdGUiLCJmcm9tIiwidG8iLCJCYXNlX2FtX3Rlc3RpbmciLCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9pbnQ2NF9sbzMyIiwidiIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJqc29vX2lzX2FzY2lpIiwiY2FtbF91dGYxNl9vZl91dGY4IiwiYzEiLCJjMiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImNvbnRlbnQiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfYmFfc2VyaWFsaXplIiwid3JpdGVyIiwiYmEiLCJzeiIsImNvbXBsZXgiLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmFpc2Vfd2l0aF9hcmciLCJhcmciLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQiLCJraW5kIiwiY2FtbF9iYV9jcmVhdGVfYnVmZmVyIiwic2l6ZSIsInZpZXciLCJGbG9hdDY0QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsInJlcyIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9iYV9jdXN0b21fbmFtZSIsIk1sX0JpZ2FycmF5IiwibGF5b3V0IiwiYnVmZmVyIiwib2ZzIiwiaW0iLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX2JhX2Rlc2VyaWFsaXplIiwicmVhZGVyIiwibnVtX2RpbXMiLCJzaXplX2RpbSIsInNpemVfZGltX2hpIiwic2l6ZV9kaW1fbG8iLCJzaXh0eSIsImludDY0IiwiY2FtbF9iYV9jb21wYXJlIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9tYXJzaGFsIiwic2l6ZXMiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9pc19tbF9zdHJpbmciLCJjYW1sX2lzX21sX2J5dGVzIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsIm51bSIsImhoIiwiQmFzZV9oYXNoX2RvdWJsZSIsIkJhc2VfaGFzaF9zdHJpbmciLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsIkJhc2VfaW50X21hdGhfaW50MzJfY3R6IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfaW50NjRfdG9faW50MzIiLCJCYXNlX2ludF9tYXRoX2ludDY0X2NseiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfaW50NjRfbXVsIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImJhc2UiLCJleHBvbmVudCIsIm9uZSIsIm11bCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmciLCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZSIsImNhbWxfY3JlYXRlX2J5dGVzIiwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzIiwidl9sZW4iLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfYmFfZ2V0XzEiLCJpMCIsIkJpZ1N0cmluZ1JlYWRlciIsImJzIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJwYXRoIiwiZXJybm8iLCJ2YXJpYW50IiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiTWxGYWtlRmQiLCJmaWxlIiwiTWxGYWtlRGV2aWNlIiwiY29tcCIsIm5hbWVfc2xhc2giLCJtb2RlIiwicmFpc2VfdW5peCIsInBhcmVudCIsInNlZW4iLCJtIiwiZW50cnkiLCJvayIsImJ5dGVzIiwiTWxGYWtlRmRfb3V0IiwiZmQiLCJzcmMiLCJNbE11dGV4IiwiTWxOYXQiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmciLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9ieXRlc19zZXQiLCJNbE5vZGVGZCIsImJ1Zl9vZmZzZXQiLCJyZWFkIiwiTWxOb2RlRGV2aWNlIiwiY29uc3RzIiwiaXNDaGFyYWN0ZXJEZXZpY2UiLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiTWxTdHJpbmdSZWFkZXIiLCJVSW50OEFycmF5UmVhZGVyIiwiaW5jcl9uYXQiLCJuYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibGVuMiIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImJpZ3N0cmluZ19hbGxvYyIsIl8iLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwicG9zMSIsImJ5dGVzMiIsInBvczIiLCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsInN0cjEiLCJiYTIiLCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImJpZ3N0cmluZ19ibGl0X3N0dWIiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX2ZpbmQiLCJjaHIiLCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJ2X3MxIiwidl9zMV9wb3MiLCJ2X3MyIiwidl9zMl9wb3MiLCJiaWdzdHJpbmdfbWVtY21wX3N0dWIiLCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlIiwiaGF5c3RhY2siLCJoYXlzdGFja19wb3MiLCJoYXlzdGFja19sZW4iLCJuZWVkbGVfcG9zIiwibmVlZGxlX2xlbiIsImxpbSIsIm1hdGNoZXMiLCJjYW1sX2JhX3NldF8xIiwiYmlnc3RyaW5nX21lbXNldF9zdHViIiwiYmlnc3RyaW5nIiwidl9wb3MiLCJ2X2NoYXIiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJ0YSIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImJpZ3N0cmluZ19yZWFsbG9jIiwibmV3X2RhdGEiLCJuZXdfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJpZ3N0cmluZ190b190eXBlZF9hcnJheSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzIiwiYmlnc3RyaW5nYWZfbWVtY2hyIiwiYmFfb2ZmIiwiY2FtbF9pbnRfY29tcGFyZSIsImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmciLCJiYTFfb2ZmIiwiYmEyX29mZiIsImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmciLCJzdHJfb2ZmIiwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJhcnJheSIsImNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nIiwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YiIsImJpbl9wcm90X2JsaXRfYnVmX3N0dWIiLCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJibGFrZTJiIiwiQURENjRBQSIsIm8wIiwibzEiLCJBREQ2NEFDIiwiYjAiLCJiMSIsIkIyQl9HRVQzMiIsIkIyQl9HIiwiaXgiLCJpeSIsIngwIiwieDEiLCJ5MCIsInkxIiwieG9yMCIsInhvcjEiLCJCTEFLRTJCX0lWMzIiLCJVaW50MzJBcnJheSIsIlNJR01BOCIsIlNJR01BODIiLCJibGFrZTJiQ29tcHJlc3MiLCJjdHgiLCJsYXN0IiwicGFyYW1ldGVyQmxvY2siLCJibGFrZTJiSW5pdCIsIm91dGxlbiIsImJsYWtlMmJVcGRhdGUiLCJpbnB1dCIsImJsYWtlMmJGaW5hbCIsIm91dCIsImJsaXRfbmF0IiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJjYW1sX01ENUZpbmFsIiwiaW5fYnVmIiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJiOCIsImNhbWxfTUQ1VXBkYXRlIiwiaW5wdXRfbGVuIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImNhbWxfYWxsb2NfZHVtbXlfaW5maXgiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJwIiwiYXJnczIiLCJjYW1sX2FycmF5X2FwcGVuZCIsImExIiwiYTIiLCJsMSIsImwyIiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX2FycmF5X2dldCIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2FycmF5X29mX3N0cmluZyIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2FzaW5oX2Zsb2F0IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfYXRvbWljX2NhcyIsInJlZiIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9iYV9ibGl0IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwibmV3X2RpbXMiLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfYmFfaW5pdCIsImNhbWxfYmFfa2luZCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJiMiIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJiMyIsImI0IiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImI1IiwiYjYiLCJiNyIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsIl91bml0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9ibGFrZTJfY3JlYXRlIiwiaGFzaGxlbiIsImNhbWxfYmxha2UyX2ZpbmFsIiwiY2FtbF9ibGFrZTJfdXBkYXRlIiwiY2FtbF9ibGFrZTJfc3RyaW5nIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnN3YXAxNiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9idWlsZF9zeW1ib2xzIiwic3ltYiIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0MTYiLCJpMTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiaTMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9jaGFubmVsX2dldCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2hhbmlkIiwiY2hhbiIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfY29tcGFyZSIsImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4YyIsImNvbnQiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfY29zaF9mbG9hdCIsImZzX25vZGVfc3VwcG9ydGVkIiwibWFrZV9wYXRoX2lzX2Fic29sdXRlIiwicG9zaXgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwibmNvbXAiLCJjYW1sX2dldF9yb290IiwiY2FtbF9yb290IiwianNvb19tb3VudF9wb2ludCIsInJlc29sdmVfZnNfZGV2aWNlIiwiY2FtbF9jcmVhdGVfZmlsZSIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfY3NlbF92YWx1ZSIsInZfY29uZCIsInZfdHJ1ZSIsInZfZmFsc2UiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsInpzdGRfZGVjb21wcmVzcyIsInU4IiwidTE2IiwidTMyIiwic2xjIiwiZmlsbCIsImNwdyIsImVjIiwiaW5kIiwibnQiLCJyYiIsInJ6ZmgiLCJkYXQiLCJuMyIsImZsZyIsInNzIiwiY2MiLCJkZiIsImZjZiIsImJ0IiwiZGIiLCJkaSIsImZzYiIsImZzcyIsIndzIiwid2IiLCJtc2IiLCJ2YWwiLCJiaXRzIiwicmZzZSIsIm1hbCIsInRwb3MiLCJhbCIsInByb2JzIiwic3ltIiwiaHQiLCJmcmVxIiwiZHN0YXRlIiwibnN0YXRlIiwiYmIxIiwic3ltcyIsIm5iaXRzIiwiY2J0IiwibXNrIiwibXNrMWZiIiwibXN2Iiwic3ZhbCIsInJidCIsInN5bXBvcyIsInNzdGVwIiwic21hc2siLCJzZiIsIm5iIiwicmh1Iiwid2MiLCJoYiIsImh3IiwicmMiLCJyaSIsIl9hIiwiZWJ0IiwiZmR0IiwiZXBvcyIsImxiIiwic3QxIiwic3QyIiwiYnRyMSIsImJ0cjIiLCJmcG9zIiwiYnl0ZSIsIndlcyIsInd0IiwibWIiLCJ0cyIsInJlbSIsImhidWYiLCJwdiIsImRsbHQiLCJkbWx0IiwiZG9jdCIsImIyYmwiLCJibCIsImxsYiIsImxsYmwiLCJtbGIiLCJtbGJsIiwiZGh1IiwiaHUiLCJlYiIsInN0IiwiYnRyIiwiZGh1NCIsInN6MSIsInN6MiIsInN6MyIsInJ6YiIsImJ0eXBlIiwibGJ0IiwibHNzIiwibGNzIiwiczQiLCJzcGwiLCJodWQiLCJzY20iLCJkdHMiLCJtZCIsInJidWYiLCJfYiIsIm1sdCIsIm9jdCIsImxsdCIsInNwb3MiLCJvdWJ0IiwibHN0Iiwib3N0IiwibXN0IiwibGxjIiwibGJ0ciIsIm1sYyIsIm1idHIiLCJvZmMiLCJvYnRyIiwib2ZwIiwibWwiLCJsbCIsImlkeCIsInN0aW4iLCJjY3QiLCJidWZzIiwib2wiLCJjaGsiLCJibGsiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2RpdiIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwidW5pdCIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwidGVybV9zeW5jIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2tleV9vZmZzZXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsInoiLCJjYW1sX2VwaGVfc2V0X2tleSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjYW1sX2VxdWFsIiwiY2FtbF9lcmZfZmxvYXQiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZXhwbTFfZmxvYXQiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0Iiwic3RhcnQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsImZzIiwiY2FtbF9wYXJzZV9mb3JtYXQiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJ0bXAiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9nY19nZXQiLCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQiLCJjYW1sX2djX21ham9yIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJjYW1sX2djX21pbm9yIiwiY2FtbF9nY19taW5vcl93b3JkcyIsImNhbWxfZ2NfcXVpY2tfc3RhdCIsImNhbWxfZ2Nfc2V0IiwiX2NvbnRyb2wiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJjYW52YXMiLCJpbWFnZSIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbG9yIiwiY29udmVydCIsImNfc3RyIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNvbnRleHQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwiZ2V0Iiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiY2FtbF9ncl9wbG90IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX2dyX3RleHRfc2l6ZSIsInR4dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwibnVtX2RpZ2l0c19uYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUiLCJjYW1sX3JlZmlsbCIsInN0cl9hIiwibnJlYWQiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsImludGVybl9vYmpfdGFibGUiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJvcHMiLCJleHBlY3RlZF9zaXplIiwib2xkX3BvcyIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSIsImNhbWxfaW50NjRfbmVnIiwiY2FtbF9pbnQ2NF9mb3JtYXQiLCJ3YmFzZSIsImN2dGJsIiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9pc19qcyIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9qc19jYWxsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImNhbWxfanNfZXhwciIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2dldF9jb25zb2xlIiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfbmV3IiwiRiIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3RvX3N0cmluZyIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc192YXIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3RhZyIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsImJhY2t0cmsiLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsImNhbWxfbWFrZV9mbG9hdF92ZWN0IiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21ha2VfbG9jYWxfdmVjdCIsInZfZWx0IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWQ1X2NoYW4iLCJ0b3JlYWQiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfbWVtcHJvZl9zZXQiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCIsImNhcHR1cmVkIiwiaW50byIsInRvX3Jlc3RvcmUiLCJuZXdfIiwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2JpZ2FycmF5IiwiY2FtbF9tbF9pbnB1dF9jaGFyIiwiY2FtbF9tbF9pbnB1dF9pbnQiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsInByZXZfbWF4IiwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZSIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX21sX211dGV4X2xvY2siLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2siLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZmQyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzIiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IiwiYnVmZmVyZWQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXRfNjQiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0IiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfbW9kIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsImNhbWxfbGV4X3J1bl9tZW0iLCJtZW0iLCJjdXJyX3BvcyIsImNhbWxfbGV4X3J1bl90YWciLCJjYW1sX25ld19sZXhfZW5naW5lIiwibGV4X21lbSIsImxleF9iYXNlX2NvZGUiLCJsZXhfYmFja3Rya19jb2RlIiwibGV4X2RlZmF1bHRfY29kZSIsImxleF90cmFuc19jb2RlIiwibGV4X2NoZWNrX2NvZGUiLCJsZXhfY29kZSIsInBjX29mZiIsInBzdGF0ZSIsImJhc2VfY29kZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfb2pzX25ld19hcnIiLCJjYW1sX291dF9jaGFubmVsX3Bvc19mZCIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJjbWQiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjdXJzb3IiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImNhbGxiYWNrcyIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfcnVudGltZV92YXJpYW50IiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2NvbmNhdCIsImNhbWxfc3RyaW5nX2VxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9zdHJpbmdfbGVzc2VxdWFsIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIm9zX3R5cGUiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX3N5c19leGl0IiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19nZXRlbnYiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImNhbWxfc3lzX21rZGlyIiwicGVybSIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9zeXNfdW5zYWZlX2dldGVudiIsImNhbWxfdGFuaF9mbG9hdCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF91bml4X2ZpbmRuZXh0IiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF9nZXR1aWQiLCJjYW1sX3VuaXhfZ210aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfdW5peF9ta2RpciIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfdW5peF90aW1lIiwiY2FtbF91bml4X3VubGluayIsImNhbWxfdW5tb3VudCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX3hkZ19kZWZhdWx0cyIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF96c3RkX2luaXRpYWxpemUiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjb21wYXJlX25hdCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjb21wbGVtZW50X25hdCIsImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvcmVfZ2NfY29tcGFjdGlvbnMiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY29yZV9nY19oZWFwX3dvcmRzIiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNvcmVfZ2NfbWFqb3Jfd29yZHMiLCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zIiwiY29yZV9nY19taW5vcl93b3JkcyIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyIsImNvcmVfZ2NfdG9wX2hlYXBfd29yZHMiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY29yZV9tZDVfZmQiLCJpYyIsImNvcmVfdGltZV9uc19mb3JtYXQiLCJ0aW1lIiwiZm9ybWF0anMiLCJqc3RyaW5nIiwiY3JlYXRlX25hdCIsImRlY3JfbmF0IiwiYm9ycm93IiwiZGVzZXJpYWxpemVfbmF0IiwiZGl2X2hlbHBlciIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJ3cmFwIiwic2hpZnRfcmlnaHRfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngyIiwieDMiLCJzdWJfbmF0IiwiZGl2X25hdCIsInF1byIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QiLCJ2c3Rkb3V0IiwidnN0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCIsInZvdXRwdXQiLCJzZXJpYWxpemVfbmF0IiwiaW5pdGlhbGl6ZV9uYXQiLCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmciLCJpc19kaWdpdF9pbnQiLCJpc19kaWdpdF9vZGQiLCJpc19kaWdpdF96ZXJvIiwianNfcGVyZm9ybWFuY2UiLCJwZXJmX2hvb2tzIiwiX2UiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImpzX3Byb2ZfbWFyayIsImpzX3Byb2ZfbWVhc3VyZSIsImVuZCIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImxhbmRfZGlnaXRfbmF0IiwibGVuZ3RoX25hdCIsImxvcl9kaWdpdF9uYXQiLCJseG9yX2RpZ2l0X25hdCIsIm11bHRfbmF0IiwibGVuMyIsIm50aF9kaWdpdF9uYXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfcGFydGlhbF9tYXRjaCIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwicmVfc3RyaW5nX21hdGNoIiwic2V0X2RpZ2l0X25hdCIsImRpZ2l0Iiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJzcXVhcmVfbmF0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0Iiwic3ltYm9sX2NvbmNhdCIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwiaSQwIiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN5bWJvbCIsImwxIiwibDIiLCJoMSIsImgyIiwidGwiLCJoMyIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiYSIsIm91dHB1dF9ieXRlcyIsIm9jIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dCIsIm9mcyIsImxlbiIsIm91dHB1dF9zdWJzdHJpbmciLCJvdXRwdXRfdmFsdWUiLCJjaGFuIiwidiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwiciIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiaGQiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQwIiwic3RyMiIsInN0cjEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4kMCIsIm9sZF9leGl0JDAiLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjEiLCJ2MiIsInYxJDAiLCJ2MiQwIiwiY29tcGFyZSIsIm9jYW1sX3ZlcnNpb24iLCJvY2FtbF9yZWxlYXNlIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsImJhY2tlbmRfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImdldGVudl9vcHQiLCJpbnRlcmFjdGl2ZSIsInNldF9zaWduYWwiLCJzaWdfbnVtIiwic2lnX2JlaCIsImNhdGNoX2JyZWFrIiwib24iLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsIm1ha2UiLCJ1aWQiLCJBIiwicHJvdmFibHlfZXF1YWwiLCJCIiwic2V0IiwiaW5jciIsImRlY3IiLCJmb3JjZV9nZW5fbGF6eV9ibG9jayIsIm9ubHlfdmFsIiwiYmxrIiwiY2xvc3VyZSQwIiwicmVzdWx0JDAiLCJjbG9zdXJlIiwicmVzdWx0IiwiZSQwIiwiZm9yY2VfbGF6eV9ibG9jayIsImZvcmNlX2dlbiIsImx6diIsInQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwieHMkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQiLCJiaW5kIiwiam9pbiIsIm5vbmUiLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJoYXNoIiwiZXNjYXBlZCIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImMxIiwiYzIiLCJlcnJfbm9fcHJlZCIsImVycl9ub19zdWNjIiwibG9fYm91bmQiLCJoaV9ib3VuZCIsInN1Y2MiLCJwcmVkIiwiaXNfdmFsaWQiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsInRvX2NoYXIiLCJ1bnNhZmVfdG9fY2hhciIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwibGFzdCIsImkkMSIsInIyIiwiZmxhdHRlbiIsImExIiwicjEkMCIsImEyIiwicmV2X21hcCIsImZvbGRfcmlnaHQiLCJiMiIsImIxIiwiYjEkMCIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwidDEiLCJzdGFibGVfc29ydCIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwic29ydF91bmlxIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiY29tcGFyZV9sZW5ndGhzIiwiY29tcGFyZV9sZW5ndGhfd2l0aCIsImF1eCIsInRhaWwiLCJvZl9zZXEiLCJzZXEkMSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwidXRmXzhfdWNoYXJfNCIsImIzIiwiZ2V0X3V0Zl84X3VjaGFyIiwiYjEkNCIsImIyJDMiLCJpJDQiLCJiMSQyIiwiaSQ1IiwiYjIkMSIsImkkNiIsImIzJDEiLCJpJDEwIiwiaSQxMSIsImkkMTIiLCJpJDciLCJiMSQxIiwiaSQ4IiwiYjIkMCIsImkkOSIsImIzJDAiLCJpJDEzIiwiYjEkNSIsImkkMTQiLCJiMiQ0IiwiaSQyIiwiYjEkMyIsImkkMyIsImIyJDIiLCJpJDE1Iiwic2V0X3V0Zl84X3VjaGFyIiwibGFzdCQxIiwibGFzdCQwIiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiZGF0YV9zaXplIiwidG90YWxfc2l6ZSIsImZyb21fYnl0ZXMiLCJmcm9tX3N0cmluZyIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImluaXRfbWF0cml4Iiwicm93IiwibWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJsYSIsImxiIiwicmVzJDAiLCJsaXN0X2xlbmd0aCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJhMCIsImJpIiwiYWkiLCJuYSIsIm5iIiwibWF4c29uIiwiaTMxIiwiZSQxIiwiaiQwIiwiZmF0aGVyIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIkMSIsInMxJDEiLCJpMSIsImkyIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsInNpZ25hbGluZ19uYW4iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1pbl9pbnQiLCJtYXhfaW50IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwicmVhZF9mdW4iLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwicmVtb3ZlIiwidW5pb24iLCJyMiQwIiwiaW50ZXIiLCJzcGxpdF9iaXMiLCJkaXNqb2ludCIsImNvbnNfZW51bSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInN1YnNldCIsInB2IiwibGYiLCJsdCIsInJmIiwicnQiLCJjYXJkaW5hbCIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiZmluZF9maXJzdCIsInYwJDEiLCJ2MCQwIiwiZmluZF9maXJzdF9vcHQiLCJmaW5kX2xhc3QiLCJmaW5kX2xhc3Rfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJ4MCIsImwkMyIsImwkNCIsIngwJDAiLCJsJDUiLCJ4MCQxIiwibmwiLCJtaWQiLCJsJDIiLCJ4NCIsImFkZF9zZXEiLCJzZXFfb2ZfZW51bSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsImxkIiwibHJkIiwicmQiLCJybGQiLCJkYXRhIiwiZDAkMSIsImQwIiwiZDAkMCIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJhZGRfdG9fbGlzdCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYnMiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJwcm90ZWN0IiwicmVsZWFzZSIsImFjcXVpcmUiLCJ0cnlfYWNxdWlyZSIsInJldCIsImdldF92YWx1ZSIsIm1ha2UkMCIsInJlbGVhc2UkMCIsImFjcXVpcmUkMCIsInRyeV9hY3F1aXJlJDAiLCJjcHVfcmVsYXgiLCJjcmVhdGVfZGxzIiwia2V5X2NvdW50ZXIiLCJwYXJlbnRfa2V5cyIsIm5ld19rZXkiLCJzcGxpdF9mcm9tX3BhcmVudCIsImluaXRfb3JwaGFuIiwiaWR4Iiwia2kiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJvbGR2YWwiLCJuZXdfb2JqIiwic3QkMCIsImN1cnZhbCIsInVwZGF0ZWRfb2JqIiwiZ2V0X2lkIiwiZG9tYWluIiwic2VsZiIsImlzX21haW5fZG9tYWluIiwiZmlyc3RfZG9tYWluX3NwYXduZWQiLCJmaXJzdF9zcGF3bl9mdW5jdGlvbiIsImJlZm9yZV9maXJzdF9zcGF3biIsIm9sZF9mIiwibmV3X2YiLCJhdF9leGl0X2tleSIsInNwYXduIiwicGsiLCJ0ZXJtX3N5bmMiLCJib2R5IiwibG9vcCIsImV4IiwicmVjb21tZW5kZWRfZG9tYWluX2NvdW50Iiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJ4JDkiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJ4JDE3IiwicmVzdCQyNiIsIngkMTgiLCJyZXN0JDI3IiwieCQxOSIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiZW5kX2luZCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImYkMCIsImludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24iLCJuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIiwibmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIiwibWlzc2luZ19lbGVtZW50IiwidW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IiwiY2hlY2tfc2FtZV9sZW5ndGgiLCJsZW5ndGhfYSIsImNoZWNrX3ZhbGlkX2xlbmd0aCIsImFyciIsImNhcGFjaXR5IiwidW5zYWZlX2dldCIsImdldF9sYXN0IiwicG9wX2xhc3QiLCJwb3BfbGFzdF9vcHQiLCJyZW1vdmVfbGFzdCIsImVuc3VyZV9jYXBhY2l0eSIsImNhcGFjaXR5X3JlcXVlc3QiLCJjdXJfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfYXJyIiwiZW5zdXJlX2V4dHJhX2NhcGFjaXR5IiwiZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCIsImZpdF9jYXBhY2l0eSIsInNldF9jYXBhY2l0eSIsImFkZF9sYXN0X2lmX3Jvb20iLCJlbGVtIiwiYWRkX2xhc3QiLCJhcHBlbmRfbGlzdCIsImxpIiwibGkkMCIsImFwcGVuZF9pdGVyIiwiYXBwZW5kX3NlcSIsImFwcGVuZF9hcnJheV9pZl9yb29tIiwibGVuZ3RoX2IiLCJhcHBlbmRfYXJyYXkiLCJhcHBlbmRfaWZfcm9vbSIsImFycl9hIiwiYXJyX2IiLCJpdGVyJDAiLCJvZl9hcnJheSIsInRvX2FycmF5IiwidG9fc2VxX3JlZW50cmFudCIsInRvX3NlcV9yZXYiLCJ0b19zZXFfcmV2X3JlZW50cmFudCIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwib3B0IiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJub19hcmckMCIsImdldF9hcmckMCIsImNvbnN1bWVfYXJnJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJyJDMiLCJhcmckNCIsInNwZWNzIiwidHJlYXRfYWN0aW9uJDAiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsIm1heF9hcmdfbGVuIiwiY3VyIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsInNlZW4iLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwic3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvIiwiY29uc3RydWN0b3IiLCJmaWVsZHNfb3B0IiwiY29uc3RydWN0b3IkMCIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImNvbXBvc2UiLCJmbGlwIiwibmVnYXRlIiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsImV2ZW50bG9nX3BhdXNlIiwiZXZlbnRsb2dfcmVzdW1lIiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJkZWxldGVfYWxhcm0iLCJjcmVhdGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpZ2FycmF5IiwicmVhbGx5X2lucHV0X2JpZ2FycmF5IiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQyIiwiYnVmJDAiLCJidWYkMSIsInJlbSIsImlucHV0X2xpbmVzIiwiZm9sZF9saW5lcyIsInNldF9iaW5hcnlfbW9kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaWdhcnJheSIsImhleF9vZl9zdHJpbmciLCJjaGFyX2hleCIsInN0cmluZ19vZl9oZXgiLCJkaWdpdCIsImhhc2hfbGVuZ3RoIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImNoYW5uZWwiLCJ0b3JlYWQiLCJidWZfc2l6ZSIsImN0eCIsInRvcmVhZCQwIiwidG9yZWFkJDEiLCJmaWxlbmFtZSIsImRpZ2VzdCIsInRvX2hleCIsIm9mX2hleCIsImtpbmRfc2l6ZV9pbl9ieXRlcyIsImNsb29wIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJiYSIsImNyZWF0ZSQxIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwic2VyaWFsaXphdGlvbl9wcmVmaXgiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiIsInRvX2JpbmFyeV9zdHJpbmciLCJvZl9iaW5hcnlfc3RyaW5nIiwicmVpbml0IiwibWFrZV9zZWxmX2luaXQiLCJtYXhfaW50MzEiLCJtYXhfaW50MzIiLCJiaXRzIiwiaW50X2F1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImludF9pbl9yYW5nZV9hdXgiLCJuYml0cyIsInNwYW4iLCJpbnRfaW5fcmFuZ2UiLCJiaXRzMzIiLCJpbnQzMmF1eCIsImludDMyIiwiaW50MzJfaW5fcmFuZ2UiLCJiaXRzNjQiLCJpbnQ2NGF1eCIsImludDY0IiwiaW50NjRfaW5fcmFuZ2UiLCJuYXRpdmViaXRzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X2luX3JhbmdlIiwiZmxvYXQkMCIsImJvb2wiLCJta19kZWZhdWx0IiwicmFuZG9tX2tleSIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludF9pbl9yYW5nZSQwIiwiaW50MzIkMCIsImludDMyX2luX3JhbmdlJDAiLCJuYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9pbl9yYW5nZSQwIiwiaW50NjQkMCIsImludDY0X2luX3JhbmdlJDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic3BsaXQkMCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZ19rZXkiLCJwb3dlcl8yX2Fib3ZlIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImhhc2hfcGFyYW0iLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4Iiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJjb3VudCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfYXV4IiwiZm91bmQiLCJub3Rmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwiZW5kX3dpdGhfbmV3bGluZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfcHJpbnRfbm90aGluZyIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJzdGRidWZfa2V5Iiwic3RyX2Zvcm1hdHRlcl9rZXkiLCJidWZmZXJlZF9vdXRfc3RyaW5nIiwiYnVmZmVyZWRfb3V0X2ZsdXNoIiwic3RkX2J1Zl9rZXkiLCJlcnJfYnVmX2tleSIsInN0ZF9mb3JtYXR0ZXJfa2V5IiwiZXJyX2Zvcm1hdHRlcl9rZXkiLCJnZXRfc3RkX2Zvcm1hdHRlciIsImdldF9lcnJfZm9ybWF0dGVyIiwiZ2V0X3N0cl9mb3JtYXR0ZXIiLCJnZXRfc3RkYnVmIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIiLCJvdXRwdXQkMCIsImZsdXNoJDAiLCJzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF8iLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2l0ZXIiLCJwcF92IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJwcF92JDAiLCJwcF9wcmludF9saXN0IiwicHBfcHJpbnRfYXJyYXkiLCJwcF9wcmludF9zZXEiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwiZnMiLCJmcyQwIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJjbG9zZV9pbiIsImljJDAiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsImlzX29jdGFsX2RpZ2l0IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwibG93ZXJjYXNlIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mX2dlbiIsImVmIiwiYXJncyQxIiwiZXhjJDAiLCJleGMiLCJhcmdzJDAiLCJrc2NhbmYiLCJrc2NhbmZfb3B0IiwiYnNjYW5mIiwiYnNjYW5mX29wdCIsImtzc2NhbmYiLCJzc2NhbmYiLCJzc2NhbmZfb3B0Iiwic2NhbmYiLCJzY2FuZl9vcHQiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsImFycmF5IiwibmV3X3NpemUiLCJvbGRfc2l6ZSIsIm5ld19idWNrIiwibWV0aG9kX2NvdW50IiwiaW5zdF92YXJfY291bnQiLCJuZXdfbWV0aG9kIiwidGFibGUiLCJnZXRfbWV0aG9kX2xhYmVsIiwibGFiZWwiLCJnZXRfbWV0aG9kX2xhYmVscyIsIm5hbWVzIiwic2V0X21ldGhvZCIsImVsZW1lbnQiLCJnZXRfbWV0aG9kIiwibmFycm93IiwidmFycyIsInZpcnRfbWV0aHMiLCJjb25jcl9tZXRocyIsInZhcnMkMCIsInZpcnRfbWV0aHMkMCIsImNvbmNyX21ldGhzJDAiLCJ2aXJ0X21ldGhfbGFicyIsImNvbmNyX21ldGhfbGFicyIsImxhYiIsInR2YXJzIiwiYnlfbmFtZSIsImJ5X2xhYmVsIiwibWV0IiwiaG0iLCJ3aWRlbiIsInNhdmVkX3ZhcnMiLCJzYXZlZF9oaWRkZW5fbWV0aHMiLCJuZXdfdmFyaWFibGUiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJvYmoiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSIsImJ1aWxkX3BhdGgiLCJrZXlzIiwibG9va3VwX3RhYmxlcyIsInJvb3QiLCJyb290X2RhdGEiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwidGFibGVzX2RhdGEiLCJuZXdfY2FjaGUiLCJzZXRfbWV0aG9kcyIsImNsbyIsIngkMjAiLCJjbG8kMCIsIm4kMzgiLCJlJDEwIiwibiQzNyIsIm4kMzYiLCJuJDIiLCJuJDM1IiwiZiQyMCIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ5JDAiLCJuJDYiLCJmJDE1IiwibiQzMSIsIm4kNyIsImYkMTQiLCJlJDgiLCJuJDMwIiwibiQ4IiwiZiQxMyIsIm4kMjkiLCJuJDkiLCJmJDEyIiwibiQyOCIsImYkOCIsImUkMiIsIm4kMTAiLCJmJDExIiwiZSQ3IiwibiQyNyIsImYkOSIsIm4kMTEiLCJmJDEwIiwibiQyNiIsIm4kMTIiLCJuJDI1IiwibiQxMyIsIm4kMjQiLCJtJDEyIiwibiQxNCIsImUkMyIsIm4kMjMiLCJlJDYiLCJtJDExIiwibiQxNSIsIm0kMSIsIm4kMjIiLCJtJDEwIiwibSQyIiwibSQ5IiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwicHJuZyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJmaW5kX2luX2J1Y2tldCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsInNldF9kYXRhIiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJ0ZXN0X2tleSIsInQkMCIsImdldF9rZXkxIiwic2V0X2tleTEiLCJnZXRfa2V5MiIsInNldF9rZXkyIiwiZ2V0X2RhdGEkMCIsInNldF9kYXRhJDAiLCJtYWtlJDEiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJzZWVkZWRfaGFzaCQwIiwibWFrZSQyIiwiYWRkJDAiLCJ0ZXN0X2tleXMiLCJyZW1vdmUkMCIsImZpbmQkMCIsImxlbmd0aCQwIiwiY2xlYXIkMCIsImxlbmd0aCQxIiwiZ2V0X2tleSQwIiwic2V0X2tleSQwIiwiZ2V0X2RhdGEkMSIsInNldF9kYXRhJDEiLCJtYWtlJDMiLCJxdWVyeSQxIiwibWFrZSQ0IiwiYWRkJDEiLCJ0ZXN0X2tleXMkMCIsInJlbW92ZSQxIiwiZmluZCQxIiwibGVuZ3RoJDIiLCJjbGVhciQxIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicmFuZG9tX3N0YXRlIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwicGVybXMiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93IiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwiY29lcmNlIiwidGFnIiwicGFyYW0iLCJrZXkiLCJ2YWx1ZSIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF90X3NleHBfZ3JhbW1hciIsImVtcHR5X3NleHBfZ3JhbW1hciIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ3MiLCJncmFtbWFyIiwidGFncyIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IiwicmVmX3NleHBfZ3JhbW1hciIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJoYW5kbGVyIiwiYXJnIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJhYnNlbnQiLCJjb21iaW5lIiwicGFyc2VfdmFsdWVfbWFsZm9ybWVkIiwibWFsZm9ybWVkIiwic3RhdGUiLCJwb3MiLCJwYXJzZV92YWx1ZXMiLCJtYWxmb3JtZWQkMCIsIm90aGVyIiwiY29udiIsImtpbmQiLCJzZXhwJDUiLCJkZWZhdWx0JDAiLCJzZXhwJDQiLCJzZXhwJDAiLCJzZXhwJDEiLCJzZXhwJDIiLCJzZXhwJDMiLCJwYXJzZV9zcGluZV9tYWxmb3JtZWQiLCJleHRyYSIsInNlZW4iLCJzZXhwcyIsInBhcnNlX3NwaW5lX3Nsb3ciLCJzZXhwcyQwIiwic2V4cHMkMiIsInNleHBzJDEiLCJwYXJzZV9yZWNvcmRfc2xvdyIsInVuc2VlbiIsInBhcnNlX3NwaW5lX2Zhc3QiLCJvdGhlcnMiLCJhcmdzIiwiYXRvbSIsInJlY29yZF9vZl9zZXhwcyIsImNhbGxlciIsImNvbnRleHQkMCIsImluZGV4X29mX2ZpZWxkIiwiYWxsb3dfZXh0cmFfZmllbGRzIiwiY3JlYXRlIiwiYWxsb3dfZXh0cmFfZmllbGRzJDAiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwibWF5YmVfY29udGV4dCIsImNvbnRleHQiLCJyZWNvcmRfb2Zfc2V4cCIsImdsb2JhbGl6ZV9ib29sIiwiYiIsImdsb2JhbGl6ZV9jaGFyIiwiYyIsImdsb2JhbGl6ZV91bml0IiwidSIsImdsb2JhbGl6ZV9hcnJheSIsImEiLCJnbG9iYWxpemVfbGlzdCIsImYiLCJ4cyIsIngiLCJnbG9iYWxpemVfb3B0aW9uIiwiZ2xvYmFsaXplX3Jlc3VsdCIsImdsb2JhbGl6ZV9hIiwiZ2xvYmFsaXplX2IiLCJ0IiwiZ2xvYmFsaXplX3JlZiIsInIiLCJkZXNjZW5kaW5nIiwieSIsIm1heCIsIm1pbiIsIm1heF9pbnQiLCJtaW5faW50IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImJvb2xfb2Zfc3RyaW5nX29wdCIsImJvb2xfb2Zfc3RyaW5nIiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2ludCIsInJlYWRfZmxvYXRfb3B0IiwicmVhZF9mbG9hdCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwib3Blbl9vdXRfZ2VuIiwiZmx1c2giLCJmbHVzaF9hbGwiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXQiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF92YWx1ZSIsInNlZWtfb3V0IiwicG9zX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvcGVuX2luIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luX2dlbiIsImlucHV0X2NoYXIiLCJpbnB1dF9saW5lIiwiaW5wdXQiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF92YWx1ZSIsInNlZWtfaW4iLCJwb3NfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsImNsb3NlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sIiwiZXhpdCIsImF0X2V4aXQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJkb19hdF9leGl0IiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJib29sX3RvX2ludCIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MCIsInN5bWJvbF9jb25jYXQkMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJmbG9hdF9vZl9zdHJpbmciLCJhbV90ZXN0aW5nIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwib2Zfc3RyaW5nX29wdCIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJzdWNjIiwicHJlZCIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsInJlcyIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJoZF9leG4iLCJsZW5ndGgiLCJyZXZfYXBwZW5kIiwidGxfZXhuIiwidW56aXAiLCJleGlzdHMiLCJ0JDAiLCJleGlzdHMyX29rIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwibDIkMSIsImEyIiwibDEkMSIsImExIiwiaW5pdCQwIiwibCIsImluaXQkMSIsImZvbGQyX29rIiwiZm9yX2FsbCIsImZvcl9hbGwyX29rIiwiaXRlcjJfb2siLCJub250YWlsX21hcCIsIm5vbnRhaWxfbWFwaSIsInBhcnRpdGlvbiIsInJldl9tYXAiLCJsJDAiLCJhY2N1IiwicmV2X21hcDJfb2siLCJhY2N1JDAiLCJzb3J0IiwicmV2IiwicmVzdCIsImZvbGRfcmlnaHQyX29rIiwiaGFzaF9mb2xkX3VuaXQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mb2xkX3N0cmluZyIsImFzX2ludCIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9mb2xkX2Jvb2wiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiaGFzaF9mb2xkX29wdGlvbiIsImhhc2hfZm9sZF9lbGVtIiwiaGFzaF9mb2xkX2xpc3QiLCJzJDEiLCJsaXN0JDEiLCJzJDIiLCJsaXN0IiwibGlzdCQwIiwicyQwIiwiaGFzaF9mb2xkX2xhenlfdCIsImhhc2hfZm9sZF9yZWZfZnJvemVuIiwiaGFzaF9mb2xkX2FycmF5X2Zyb3plbiIsImFycmF5IiwiZSIsImkkMCIsImhhc2hfbmF0aXZlaW50IiwiaGFzaF9pbnQ2NCIsImhhc2hfaW50MzIiLCJoYXNoX2NoYXIiLCJoYXNoX2ludCIsImhhc2hfYm9vbCIsImhhc2hfc3RyaW5nIiwiaGFzaF9mbG9hdCIsImhhc2hfdW5pdCIsInNlZWQiLCJvZl9mb2xkIiwiaGFzaF9mb2xkX3QiLCJydW4iLCJmb2xkZXIiLCJjb21wYXJlX3N0YXRlIiwic3RhdGVfdG9fc3RyaW5nIiwic3RhdGUiLCJ0JDEiLCJ0JDIiLCJ0JDMiLCJ0JDQiLCJ0JDUiLCJjb21wYXJlX2Fic3RyYWN0IiwidHlwZV9uYW1lIiwiZXF1YWxfYWJzdHJhY3QiLCJjb21wYXJlX2Jvb2wiLCJjb21wYXJlX2NoYXIiLCJjb21wYXJlX2Zsb2F0IiwiY29tcGFyZV9pbnQiLCJjb21wYXJlX2ludDMyIiwiY29tcGFyZV9pbnQ2NCIsImNvbXBhcmVfbmF0aXZlaW50IiwiY29tcGFyZV9zdHJpbmciLCJjb21wYXJlX3VuaXQiLCJjb21wYXJlX2FycmF5IiwiY29tcGFyZV9lbHQiLCJsZW5fYSIsImxlbl9iIiwicmV0IiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJjb21wYXJlX29wdGlvbiIsImNvbXBhcmVfcmVmIiwiZXF1YWxfYm9vbCIsImVxdWFsX2NoYXIiLCJlcXVhbF9pbnQiLCJlcXVhbF9pbnQzMiIsImVxdWFsX2ludDY0IiwiZXF1YWxfbmF0aXZlaW50IiwiZXF1YWxfc3RyaW5nIiwiZXF1YWxfdW5pdCIsImVxdWFsX2Zsb2F0IiwiZXF1YWxfYXJyYXkiLCJlcXVhbF9lbHQiLCJlcXVhbF9saXN0IiwiZXF1YWxfb3B0aW9uIiwiZXF1YWxfcmVmIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2IiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsImhhc2giLCJmdW5jIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJyYWlzZV93aXRob3V0X2JhY2t0cmFjZSIsImluaXRpYWxpemVfbW9kdWxlIiwiY2xlYXJfYmFja3RyYWNlIiwid2l0aF9yZXR1cm4iLCJpc19hbGl2ZSIsInJldHVybiQwIiwid2l0aF9yZXR1cm5fb3B0aW9uIiwicHJlcGVuZCIsInBhcmFtIiwiY29uc3QkMCIsIm5vbiIsImZvcmV2ZXIiLCJlJDAiLCJjb21wb3NlIiwiZyIsImZsaXAiLCJhcHBseV9uX3RpbWVzIiwibiIsIm4kMCIsIngkMCIsIngkMSIsIm4kMSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwidG9fbW9uYWQiLCJvZl9tb25hZCIsImRlcml2ZWRfbWFwIiwibWFwMiIsInRhIiwidGIiLCJtYXAzIiwidGMiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJtYXAkMCIsImFwcGx5IiwibWYiLCJteCIsInR4IiwiY3VzdG9tX21hcCIsInJldHVybiQxIiwiYXBwbHkkMCIsIm1ha2UiLCJjb21wYXJhdG9yIiwiZXJyb3Jfc291cmNlXzAxMSIsImNtcF9mIiwiY21wX3MiLCJoYXNoX2ZvbGRfZiIsImhhc2hfZm9sZF9zIiwidF9vZl9zZXhwIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsInNleHBfMDEzIiwidGFnXzAxNCIsInNleHBfYXJnc18wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJvZl9mXzAyNSIsIm9mX3NfMDI2IiwiYXJnMF8wMjciLCJyZXMwXzAyOCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJmX3NleHBfZ3JhbW1hciIsInNfc2V4cF9ncmFtbWFyIiwib3BhcXVlX2lkZW50aXR5IiwibmFtZSIsImdldCIsImZzZXQiLCJzZXR0ZXIiLCJ1cGRhdGVyIiwiZmllbGQiLCJzeW1ib2xfY29uY2F0IiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInVuc2FmZV9ibGl0Iiwic3BsaXRfb25fY2hhciIsInNlcCIsImhzdiQyIiwicG9zX2NudW1fMDEwIiwicG9zX2JvbF8wMDgiLCJwb3NfbG51bV8wMDYiLCJwb3NfZm5hbWVfMDA0IiwiYXJnXzAxMSIsImJuZHNfMDAzIiwiYXJnXzAwOSIsImJuZHNfMDAzJDAiLCJhcmdfMDA3IiwiYm5kc18wMDMkMSIsImFyZ18wMDUiLCJibmRzXzAwMyQyIiwiaGFzaF9mb2xkX3QkMCIsImhhc2gkMCIsIm1ha2VfbG9jYXRpb25fc3RyaW5nIiwicG9zX2ZuYW1lIiwicG9zX2xudW0iLCJwb3NfY251bSIsInBvc19ib2wiLCJpc19lbXB0eSIsInBhcnRpdGlvbl9tYXAiLCJmc3QkMCIsInkkMCIsInNuZCQwIiwiZXJyb3Jfc291cmNlXzAwNSIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwNyIsInRhZ18wMDgiLCJzZXhwX2FyZ3NfMDA5IiwiYXJnMF8wMTAiLCJyZXMwXzAxMSIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJhX3NleHBfZ3JhbW1hciIsImJfc2V4cF9ncmFtbWFyIiwiY21wX2EiLCJjbXBfYiIsImFfMDI3IiwiYl8wMjgiLCJhXzAyOSIsImJfMDMwIiwiYV8wMzEiLCJiXzAzMiIsImFfMDMzIiwiYl8wMzQiLCJhXzAzNSIsImJfMDM2IiwiYV8wMzciLCJiXzAzOCIsImhhc2hfZm9sZF9hIiwiaGFzaF9mb2xkX2IiLCJnbG9iYWxpemUiLCJjaGVja19vayIsImNoZWNrX2Vycm9yIiwib2siLCJlcnJvciIsImZhaWwiLCJmYWlsZiIsIm1hcF9lcnJvciIsImJpbmQkMSIsIm1hcCQxIiwicmV0dXJuJDIiLCJpc19vayIsImlzX2Vycm9yIiwib2Zfb3B0aW9uIiwib3B0IiwiaXRlcl9lcnJvciIsInRvX2VpdGhlciIsIm9mX2VpdGhlciIsIm9rX2lmX3RydWUiLCJib29sIiwidHJ5X3dpdGgiLCJva19leG4iLCJva19vcl9mYWlsd2l0aCIsImNvbWJpbmUiLCJlcnIiLCJvazEiLCJvazIiLCJlcnIxIiwiZXJyMiIsImNvbWJpbmVfZXJyb3JzIiwiZXJycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJjb3VudCIsInN1bSIsIk0iLCJmb2xkX3Jlc3VsdCIsImFjYyIsIml0ZW0iLCJmb2xkX3VudGlsIiwiZmluaXNoIiwibWluX2VsdCIsImVsdCIsIm1heF9lbHQiLCJtZW0iLCJmaW5kX21hcCIsImZpbmQiLCJ0b19hcnJheSIsIml0ZXIkMCIsIml0ZXIkMSIsImxlbmd0aCQwIiwibGVuZ3RoJDEiLCJpc19lbXB0eSQwIiwibWVtJDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJvZl9hcnJheSIsImNvbmNhdF9vZl9hcnJheSIsImNvbmNhdF9tYXAiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiZWl0aGVyIiwicGFydGl0aW9uX3RmIiwiZm9sZCQwIiwib2ZfbGlzdCQwIiwib2ZfYXJyYXkkMCIsImNvbmNhdCQwIiwiZm9sZGkiLCJhY2MkMCIsImNvdW50aSIsImV4aXN0c2kiLCJmb3JfYWxsaSIsImZpbmRfbWFwaSIsImZpbmRpIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImRlcml2ZWRfaW5pdCIsImRlcml2ZWRfaW5pdCQwIiwiZGVyaXZlZF9jb25jYXRfbWFwaSIsImNvbmNhdF9tYXBpIiwiY29uY2F0X21hcGkkMCIsImZpbHRlcl9tYXBpIiwiZmlsdGVyaSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJwZWVrIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJkc3QiLCJzcmMiLCJkc3QkMCIsInNyYyQwIiwibWFrZV9kZWZhdWx0IiwiZGVmYXVsdCQwIiwic3BsaXRfZnJvbV9wYXJlbnQiLCJnZXRfc3RhdGUiLCJyYW5kb21fa2V5IiwiZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIiwiYWxsb3dfaW5fdGVzdHMiLCJiaXRzIiwiaW50JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiY2hhciQwIiwiYXNjaWkiLCJtYWtlX3NlbGZfaW5pdCIsImludF9vbl82NGJpdHMiLCJib3VuZCIsImludF9vbl8zMmJpdHMiLCJpbnQkMSIsImJpdHMkMCIsImZ1bGxfcmFuZ2VfaW50NjQiLCJmdWxsX3JhbmdlX2ludDMyIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzJDAiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludCIsInJhaXNlX2Nyb3NzZWRfYm91bmRzIiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsInN0cmluZ19vZl9ib3VuZCIsImludF9pbmNsIiwibG8iLCJoaSIsImRpZmYiLCJpbnQzMl9pbmNsIiwibmF0aXZlaW50X2luY2wiLCJpbnQ2NF9pbmNsIiwiZmxvYXQkMCIsInNjYWxlIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQxIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMzIiLCJmb2xkX2xlZnQiLCJhXzAxMCIsImJfMDExIiwiYV8wMTIiLCJiXzAxMyIsIm9mX2FfMDE0IiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9sZF9yaWdodDIiLCJmb2xkX3JpZ2h0Ml9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsIm5vdF9mb3VuZCIsImZpbmRfbWFwX2V4biIsIm5vdF9mb3VuZCQwIiwiZmluZF9leG4iLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDMkMCIsImFjIiwibDMkMSIsImFjJDAiLCJyZXZfbWFwMyIsInJldl9tYXAzX2V4biIsIm1hcDNfb2siLCJtYXAzX2V4biIsInJldl9tYXBfYXBwZW5kIiwiaCIsImxpc3QkMiIsInVuemlwMyIsInoiLCJ6aXBfZXhuIiwiemlwIiwicmV2X21hcGkiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcGkiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicmVkdWNlX2JhbGFuY2VkIiwic3RlcF9hY2N1bSIsIm51bSIsIm51bSQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExJDAiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwicmV2X2ZpbHRlcl9tYXBpIiwiaSQxIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzMiLCJzZXhwXzAzMSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMzQiLCJvZl9iXzAzNSIsInhfMDQwIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwiZXF1YWxfbG9jYWwiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsInN0cmluZyQwIiwiaGVyZSIsImhlcmUkMCIsInRvX3NleHBfaHVtIiwic2V4cHMiLCJ0b19tZXNzYWdlIiwiaW5mbyIsIm9mX21lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtIiwibWVzc2FnZSIsInRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCIsIm9mX2xhenkiLCJvZl9sYXp5X3NleHAiLCJvZl9sYXp5X3QiLCJsYXp5X3QiLCJjcmVhdGVmIiwib2ZfdGh1bmsiLCJzdHJpY3QiLCJzZXhwX29mX3giLCJ0YWdfc19sYXp5IiwidGFnX3MiLCJ0YWdfYXJnIiwidG9fZXhuIiwib2ZfZXhuIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImJhY2t0cmFjZSQyIiwicmFpc2UiLCJyYWlzZV9zIiwidG9faW5mbyIsIm9mX2luZm8iLCJjaGVja19maWVsZCIsImFfMDA3IiwiYl8wMDgiLCJvZl9hXzAxMyIsInhfMDE1Iiwib2ZfYV8wMTYiLCJ4XzAxNyIsImludmFyaWFudF9hIiwiZTEiLCJlMiIsInRyeV93aXRoX2pvaW4iLCJvZl9leG5fcmVzdWx0IiwiZXJyb3JfcyIsImVycm9yX3N0cmluZyIsImVycm9yZiIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2ludGVybmFsIiwib25fb2siLCJvbl9lcnJvciIsImlnbm9yZV91bml0X2xpc3QiLCJlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImNvbXBhcmVfcmV2ZXJzZWQiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImhhc2hfcGFyYW0iLCJwb2x5Iiwib2Zfa2V5IiwiS2V5IiwidG9fa2V5IiwiaGFzaF9wYXJhbSQwIiwicG9seSQwIiwib2Zfa2V5JDAiLCJ0b19rZXkkMCIsImhhc2hhYmxlIiwiZ2V0X3Bvc19sZW4iLCJmaW5kX2ZpcnN0X3NhdGlzZnlpbmciLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsImJsaXRfc3RyaW5nIiwic3JjX3BvcyIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJ2YWx1ZV9tYXAiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZm9jdXMiLCJjb21iaW5lX2FsbCIsIm1hdGNoJDAiLCJtYXRjaCIsImNvbWJpbmVfYWxsX3VuaXQiLCJ0b19vcHRpb24iLCJmb2N1cyQwIiwiY29tYmluZSQwIiwiYmluZCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJlcnJvcl9zb3VyY2VfMDI3Iiwib2Zfc18wMDIiLCJzdGF0ZV8wMDQiLCJzdGF0ZV8wMDkiLCJ2YWx1ZV8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE3IiwiYl8wMTgiLCJhXzAyMSIsImFfMDE5IiwiYl8wMjIiLCJiXzAyMCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIzIiwib2ZfYl8wMjQiLCJzZXhwXzAyOSIsInRhZ18wMzAiLCJzZXhwX2FyZ3NfMDM2IiwiYXJnMF8wMzciLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wNDEiLCJhcmcxXzA0MyIsImFyZzBfMDQyIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsIm9mX2FfMDQ4Iiwib2ZfYl8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsImFfb2Zfc2V4cCIsImJfb2Zfc2V4cCIsInNleHBfb2ZfYiIsImNfb2Zfc2V4cCIsInNleHBfb2ZfYyIsInNldCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25fbWFwaSIsImZpcnN0cyIsInNlY29uZHMiLCJwYXJ0aXRpb25pX3RmIiwidG9fc2VxdWVuY2VfbXV0YWJsZSIsInRvX3NlcXVlbmNlIiwiaTEiLCJpMiIsInR0Iiwid2lkdGgiLCJkZXB0aCIsImQiLCJ3IiwidHQkMCIsImdldCQwIiwiemVyb19vYmoiLCJjcmVhdGVfemVybyIsInVuc2FmZV9nZXQiLCJ1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJvYmoiLCJzZXRfd2l0aF9jYW1sX21vZGlmeSIsInVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbiIsIm9sZF9vYmoiLCJ1bnNhZmVfc2V0IiwidW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlIiwidW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfIiwidW5zYWZlX3NldF9pbnQiLCJ1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciIsImkkMiIsInVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCIsImNyZWF0ZV9vYmpfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJ1bnNhZmVfc3ViIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwia21wX2FycmF5XzAxMiIsImNhc2Vfc2Vuc2l0aXZlXzAxMCIsInBhdHRlcm5fMDA4IiwiYXJnXzAxMyIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsImJuZHNfMDA3JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwibGZpbmRpIiwicmZpbmRpIiwibGFzdF9ub25fZHJvcCIsInJzdHJpcCIsImZpcnN0X25vbl9kcm9wIiwibHN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY29uY2F0X2FycmF5IiwiYXIiLCJjb25jYXRfbGluZXMiLCJsaW5lcyQzIiwiY3JsZiIsIm5ld2xpbmVfbGVuIiwibGluZXMiLCJsaW5lcyQwIiwiYnVmIiwibGluZXMkMSIsIndyaXR0ZW4iLCJsaW5lcyQyIiwibGluZSQwIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwicGFkX3JpZ2h0IiwicGFkX2xlZnQiLCJsb2NhbF9jb3B5X3ByZWZpeCIsImJ1ZmZlcl9sZW4iLCJsb2NhbF9jb3B5X3RvX3N0cmluZyIsInNyY19wb3MkMCIsImRzdF9wb3MkMCIsInBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSIsImZzdF9wb3MkMCIsInNuZF9wb3MkMCIsImZzdHMiLCJzbmRzIiwiYyQxIiwic25kX3BvcyQxIiwiZnN0X3BvcyQxIiwiYyQyIiwic25kX3BvcyQyIiwic3JjX3BvcyQxIiwiZnN0X3BvcyIsInNuZF9wb3MiLCJjMSQxIiwiZWl0aGVyJDEiLCJjMiQxIiwiYzIkMiIsImMxJDAiLCJlaXRoZXIkMCIsImMyJDAiLCJwb3MkMiIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJhYnMiLCJyZW0iLCJpbmNyIiwiZGVjciIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJzeW0iLCJ0cmFucyIsImNvbnYiLCJkZXR1cGxlMiIsInR1cGxlMiIsIndpdG5lc3MiLCJ2XzAwNSIsInRvX3NleHAiLCJ1aWQiLCJzYW1lX3dpdG5lc3MiLCJzYW1lIiwic2FtZV93aXRuZXNzX2V4biIsIm5vbmVfc3Vic3RpdHV0ZSIsIm5vbmUiLCJ2YWx1ZV91bnNhZmUiLCJvZl9zZXhwYWJsZSIsInRvX3NleHBhYmxlIiwieF8wMDMiLCJvZl9hXzAwNCIsInhfMDA1IiwiaW5pdF9zb21lIiwiZ2V0X3NvbWVfZXhuIiwiaXNfbm9uZSQwIiwiaXNfc29tZSQwIiwic2V0X3NvbWUiLCJzZXRfbm9uZSIsInVuc2FmZV9nZXRfc29tZV9leG4iLCJ1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSIsInVuc2FmZV9pc19zb21lIiwidW5zYWZlX3NldF9zb21lIiwidW5zYWZlX3NldF9ub25lIiwiY2xlYXIiLCJlbGVtIiwibWFwX3NvbWUiLCJvZl9hcnJheV9zb21lIiwiY2FwYWNpdHkiLCJlbHRzIiwibGVuZ3RoXzAwMyIsImVsdHNfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJyZXNpemUiLCJzaXplIiwic2V0X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5JDAiLCJwdXNoIiwicG9wX25vbmVtcHR5IiwicG9wX2Vycm9yIiwicG9wIiwicG9wX2V4biIsInRvcF9ub25lbXB0eSIsInRvcF9lcnJvciIsInRvcCIsInRvcF9leG4iLCJ1bnRpbF9lbXB0eSIsInRfcmVzdWx0IiwiZmlsdGVyX2lucGxhY2UiLCJ3cml0ZV9pbmRleCIsInJlYWRfaW5kZXgiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW0iLCJhbGxfb2ZfYSIsImVudW1lcmF0ZV8wMDIiLCJlbnVtZXJhdGVfMDAxIiwiYWNjJDIiLCJvZl9hXzAwMyIsInNleHBfMDA4IiwidGFnXzAwOSIsInNleHBfYXJnc18wMTAiLCJhcmcwXzAxMSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwiYV8wMTEiLCJiXzAxMiIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDE4IiwibGVmdF8wMTciLCJyaWdodF8wMjIiLCJsZWZ0XzAyMSIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwicmlnaHRfMDIwIiwibGVmdF8wMTkiLCJ0XzAzMCIsInRfMDI5IiwidF8wMzIiLCJ0XzAzMSIsInJpZ2h0XzAzNCIsImxlZnRfMDMzIiwicmlnaHRfMDM4IiwibGVmdF8wMzciLCJ0XzA0MCIsInRfMDM5IiwidF8wNDIiLCJ0XzA0MSIsInJpZ2h0XzAzNiIsImxlZnRfMDM1Iiwib2Zfa18wNDMiLCJvZl92XzA0NCIsInNleHBfMDcxIiwiYXJnMV8wNjgiLCJhcmcwXzA2NyIsInJlczBfMDY5IiwiYXRvbV8wNDciLCJzZXhwX2FyZ3NfMDUwIiwiYXRvbV8wNDckMCIsImFyZzBfMDU4IiwiYXJnMV8wNTMiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwicmVzMF8wNTkiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsInJlczFfMDcwIiwib2Zfa18wNzIiLCJvZl92XzA3MyIsImFyZzFfMDgyIiwiYXJnMF8wODEiLCJyZXMwXzA4MyIsInZfMDc0IiwicmVzMV8wODQiLCJ2XzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwidl8wNzUiLCJrX3NleHBfZ3JhbW1hciIsInZfc2V4cF9ncmFtbWFyIiwiY21wX2xlZnQiLCJjbXBfcmlnaHQiLCJhXzA4NSIsImJfMDg2IiwicmlnaHRfMDkyIiwibGVmdF8wOTEiLCJ0XzA5NCIsInRfMDkzIiwidF8wOTYiLCJ0XzA5NSIsInJpZ2h0XzA4OCIsImxlZnRfMDg3IiwicmlnaHRfMDkwIiwibGVmdF8wODkiLCJhXzA5NyIsImJfMDk4IiwicmlnaHRfMTA0IiwibGVmdF8xMDMiLCJ0XzEwNiIsInRfMTA1IiwidF8xMDgiLCJ0XzEwNyIsInJpZ2h0XzEwMCIsImxlZnRfMDk5IiwicmlnaHRfMTAyIiwibGVmdF8xMDEiLCJvZl9sZWZ0XzEwOSIsIm9mX3JpZ2h0XzExMCIsInZfMTEzIiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczBfMTE2IiwicmVzMV8xMTciLCJ2XzExMSIsInZfMTEyIiwic2V4cF9vZl90JDMiLCJoZWlnaHQiLCJpbl9yYW5nZSIsImhsIiwiaHIiLCJsb3dlciQxIiwiaW52YXJpYW50cyIsImgkMSIsImgkMCIsInNsIiwic3IiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2siLCJrbCIsImskMSIsImtsJDAiLCJrJDIiLCJrciIsImxlZnRfbGVuZ3RoIiwicmlnaHRfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCIsImFycmF5X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheSIsImluY3JlYXNpbmciLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYkMCIsImxybCIsImxydiIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiQwIiwicmxsIiwicmx2IiwiYXV4IiwiYWRkX21pbiIsImFkZF9tYXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsInNwbGl0X2xlX2d0Iiwic3BsaXRfbHRfZ2UiLCJlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW8iLCJyZW1vdmVfaW5kZXgiLCJsX3NpemUiLCJ1bmlvbiIsInYxJDAiLCJ2MiQwIiwicjIkMCIsInIxJDAiLCJ1bmlvbl9saXN0IiwidG9fdHJlZSIsImludGVyIiwib3RoZXJfc2V0IiwiZSQxIiwiY29uc19yaWdodCIsIm9mX3NldCIsImVudW0kMCIsInRyZWUiLCJzeW1tZXRyaWNfZGlmZiIsImVsdCQwIiwiZW51bTEiLCJ0cmVlMSIsImVudW0yIiwidHJlZTIiLCJjb21wYXJlX3Jlc3VsdCIsIm5leHRfc3RhdGUiLCJncmVhdGVyX29yX2VxdWFsX3RvIiwibGVzc19vcl9lcXVhbF90byIsImluY2x1c2l2ZV9ib3VuZCIsInNpZGUiLCJtYXliZSIsInYkMSIsInYkMiIsInYkMyIsInYkNCIsImUkMiIsIm1lcmdlX3RvX3NlcXVlbmNlIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwidDIkMiIsInQxJDIiLCJpc19zdWJzZXQiLCJhcmVfZGlzam9pbnQiLCJhY2N1JDEiLCJmaWx0Iiwia2VlcF92IiwibF9mIiwibF90Iiwia2VlcF92X3QiLCJyX2YiLCJyX3QiLCJtayIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiY2hvb3NlIiwiY2hvb3NlX2V4biIsInBvc19yZWYiLCJncm91cF9ieSIsImVxdWl2Iiwic2V0JDAiLCJlcXVpdl9jbGFzc2VzIiwibm90X2VxdWl2X3giLCJlcXVpdl94IiwiZXF1aXZfY2xhc3NlcyQwIiwic3RhYmxlX2RlZHVwX2xpc3QiLCJsZWZ0b3ZlcnMiLCJhbHJlYWR5X3NlZW4iLCJhbHJlYWR5X3NlZW4kMCIsImxlZnRvdmVycyQwIiwidF9vZl9zZXhwX2RpcmVjdCIsImVsdF9sc3QiLCJlbF9zZXhwIiwiaXNfc3Vic2V0JDAiLCJzdWJzZXQiLCJzdXBlcnNldCIsInNleHBfb2ZfZWx0IiwiaW52YWxpZF9lbGVtZW50cyIsImludmFsaWRfZWxlbWVudHNfc2V4cCIsImxpa2UiLCJsaWtlX21heWJlX25vX29wIiwib2xkX3QiLCJvbGRfdHJlZSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsIm5hbWVkIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsInNwbGl0X2xlX2d0JDAiLCJzcGxpdF9sdF9nZSQwIiwiZ3JvdXBfYnkkMCIsIm50aCQwIiwicmVtb3ZlX2luZGV4JDAiLCJ0b19zZXF1ZW5jZSQwIiwiYmluYXJ5X3NlYXJjaCQwIiwiYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQkMCIsIm1lcmdlX3RvX3NlcXVlbmNlJDAiLCJoYXNoX2ZvbGRfZGlyZWN0IiwidF9vZl9zZXhwX2RpcmVjdCQwIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImVsZW1lbnRzJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImNob29zZSQxIiwiY2hvb3NlX2V4biQxIiwidG9fYXJyYXkkMSIsIml0ZXIkMiIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiY291bnQkMSIsInN1bSQxIiwiZmluZCQxIiwiZmluZF9leG4kMSIsImZpbmRfbWFwJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmaWx0ZXIkMSIsImZpbHRlcl9tYXAkMCIsInBhcnRpdGlvbl90ZiQxIiwiaXRlcjIkMSIsIm1lbSQxIiwiYWRkJDEiLCJyZW1vdmUkMSIsInVuaW9uJDEiLCJpbnRlciQxIiwiZGlmZiQxIiwic3ltbWV0cmljX2RpZmYkMSIsImNvbXBhcmVfZGlyZWN0JDAiLCJpc19zdWJzZXQkMyIsImFyZV9kaXNqb2ludCQxIiwib2Zfc2VxdWVuY2UkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJzcGxpdF9sZV9ndCQxIiwic3BsaXRfbHRfZ2UkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsIm9mX3RyZWUkMSIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDIiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJhcmdfMDEyIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwic2V0X2NhcGFjaXR5X2ludGVybmFsIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9hbmRfaWdub3JlX2V4biIsImZyb250X25vbmVtcHR5IiwibGFzdF9ub25lbXB0eSIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsIm1pbnVzX29uZSIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsInRyZWUkMCIsInRyZWUkMSIsImxlbmd0aCQyIiwidHJlZSQyIiwiZCQwIiwidHJlZSQzIiwibGVuZ3RoJDMiLCJ0cmVlJDQiLCJsZW5ndGgkNCIsInRyZWUkNSIsInNldF9taW4iLCJzZXRfbWF4IiwiYWRkX2V4biIsImFkZF9leG5faW50ZXJuYWwiLCJzaW5nbGV0b25fdG9fdHJlZV9leG4iLCJjb2xsYXBzZSIsImdvIiwiYWRkX3VuY2hlY2tlZCIsImdvJDAiLCJ0b190cmVlX3VuY2hlY2tlZCIsIm1heF9rZXkiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIiwiYnVpbGRlciIsInByZXZfa2V5Iiwiam9pbiQwIiwibGQkMCIsImxrJDAiLCJyayIsInJkJDAiLCJyayQwIiwibGsiLCJjbXAkMCIsIm1heWJlJDAiLCJzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkiLCJpbnRvIiwiYm91bmRhcnlfb3B0Iiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwiY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkNSIsImxlbmd0aCQ2IiwidHJlZSQ2IiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwibmV3X2RhdGEiLCJuZXdfZGF0YSQwIiwibmV3X2RhdGEkMSIsImtlZXBfZGF0YSIsImZpbHRlcl9rZXlzIiwia2VlcF9kYXRhX3QiLCJzdGVwX2RlZXBlcl9leG4iLCJkcm9wX3BoeXNfZXF1YWxfcHJlZml4IiwiYWNjMSIsImFjYzIiLCJ0cmVlMSQwIiwiYWNjMSQwIiwidHJlZTIkMCIsImFjYzIkMCIsImFjYzEkMSIsInRyZWUxJDEiLCJhY2MyJDEiLCJ0cmVlMiQxIiwiYWNjMiQyIiwidHJlZTIkMiIsImFjYzEkMiIsInRyZWUxJDIiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMSIsImVudW0yJDAiLCJlbnVtMSQwIiwia2V5cyIsIm9mX2ZvbGRhYmxlIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9mb2xkIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwib2ZfZm9sZGFibGUkMCIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfZm9sZGFibGVfbXVsdGkiLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9saXN0X3dpdGhfa2V5IiwiZ2V0X2tleSIsIm5ld19sZW5ndGgiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwidG9fYWxpc3QiLCJrZXlfb3JkZXIiLCJtZXJnZV9sYXJnZV9maXJzdCIsImxlbmd0aF9sYXJnZSIsInRfbGFyZ2UiLCJ0X3NtYWxsIiwibWVyZ2Vfc2tld2VkIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJyZXBhY2thZ2UiLCJtYXJrZXIiLCJjbG9zZXN0X2tleSIsImZvdW5kX21hcmtlciIsImZvdW5kX2tleSIsImZvdW5kX3ZhbHVlIiwiZm91bmRfdmFsdWUkMCIsImZvdW5kX2tleSQwIiwicmFuayIsIm51bV90b19zZWFyY2giLCJwYWlyIiwicGFpciQwIiwiYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQiLCJtYXliZV9ib3VuZCIsImlmX2V4Y2x1c2l2ZSIsImlmX2luY2x1c2l2ZSIsImZpbmRfYm91bmQiLCJib3VuZCQwIiwiYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIiwibG93ZXJfYm91bmQkMCIsInVwcGVyX2JvdW5kJDAiLCJvZl9pdGVyaSIsIm9mX2l0ZXJpX2V4biIsImtleV9vZl9zZXhwIiwidmFsdWVfb2Zfc2V4cCIsImFsaXN0X3NleHBzIiwiZm91bmRfZmlyc3RfayIsImsyX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwiZXJyb3JzIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJ0cmFuc3Bvc2Vfa2V5cyIsIm91dGVyX2NvbXBhcmF0b3IiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfdCIsIm91dGVyX2tleSIsImlubmVyX3QiLCJpbm5lcl9rZXkiLCJhY2NfbGVuIiwiZWx0X2xlbiIsInRyZWVfZmlsdGVyX21hcGkiLCJyX2xlbiIsImxfbGVuIiwid2l0aF9zYW1lX2xlbmd0aCIsIm9mX2xpa2VfdHJlZSIsIm9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCIsImFkZF9leG4kMCIsImFkZF9tdWx0aSQwIiwicmVtb3ZlX211bHRpJDAiLCJmaW5kX211bHRpJDAiLCJjaGFuZ2UkMCIsInVwZGF0ZSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaV91bnRpbCQwIiwiZm9sZCQzIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDAiLCJmaWx0ZXJpJDAiLCJmaWx0ZXJfbWFwaSQwIiwib2ZfbGlrZV90cmVlMiIsIm9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSQwIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm5ld190cmVlIiwibmV3X3RyZWVfd2l0aF9sZW5ndGgiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsIm9mX2xpc3Rfd2l0aF9rZXkkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDAiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDAiLCJzZXQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiaXRlcl9rZXlzJDEiLCJpdGVyaV91bnRpbCQxIiwibWFwaSQxIiwiZm9sZCQ0IiwiZm9sZDIkMiIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXJpJDEiLCJmaWx0ZXJfbWFwaSQxIiwicGFydGl0aW9uX21hcGkkMSIsInBhcnRpdGlvbl9tYXAkMSIsInBhcnRpdGlvbmlfdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJrZXlzJDEiLCJkYXRhJDEiLCJ0b19hbGlzdCQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwiZm9yX2FsbGkkMSIsImV4aXN0c2kkMSIsImNvdW50aSQxIiwiYXBwZW5kJDEiLCJzdWJyYW5nZSQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMSIsInJhbmdlX3RvX2FsaXN0JDEiLCJjbG9zZXN0X2tleSQxIiwibnRoJDIiLCJudGhfZXhuJDAiLCJyYW5rJDEiLCJrX29mX3NleHAiLCJ2X29mX3NleHAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJtYXBfa2V5cyQwIiwiZHVwIiwibWFwX2tleXNfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwidHJhbnNwb3NlX2tleXMkMSIsIm9mX3RyZWUkMyIsIm9mX2FsaXN0JDIiLCJvZl9hbGlzdF9vcl9lcnJvciQyIiwib2ZfYWxpc3RfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQyIiwib2Zfc2VxdWVuY2VfZXhuJDIiLCJvZl9zZXF1ZW5jZV9tdWx0aSQyIiwib2Zfc2VxdWVuY2VfZm9sZCQyIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm9mX2xpc3Rfd2l0aF9rZXkkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDMiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDMiLCJtYXBfa2V5cyQzIiwibWFwX2tleXNfZXhuJDMiLCJ0cmFuc3Bvc2Vfa2V5cyQzIiwidHJhbnNmZXIiLCJjYW1sX2l0ZXIiLCJjYW1sX2ZvbGQiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsIm9mX3N0cmluZ19yYXciLCJzaWduZWRuZXNzIiwicG9zX3N0ciIsImludDYzIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsIm9mX2ludF90cnVuYyIsInJlcHIiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwib2Zfc3RyaW5nX29wdCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkiLCJzdGFydF9pZHgiLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfcmFuZG9tbHlfZXhuIiwiaW52YXJpYW50X2tleSIsImludmFyaWFudF9kYXRhIiwicmVhbF9sZW4iLCJuZXdfdCIsInQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhJDAiLCJhY3Rpb24iLCJkc3RfZGF0YSIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwiZXJyb3Jfc291cmNlXzAwNyIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsInBpIiwic3FydF9waSIsInNxcnRfMnBpIiwiZXVsZXIiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzcXVhcmUiLCJmcmFjdGlvbmFsIiwiaW50ZWdyYWwiLCJyb3VuZF9uZWFyZXN0X2lubGluZSIsInJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIiwiY2VpbF9vcl9zdWNjIiwiZGlmZl9mbG9vciIsImRpZmZfY2VpbCIsImludDYzX3JvdW5kX2xib3VuZCIsImludDYzX3JvdW5kX3Vib3VuZCIsImludDYzX3JvdW5kX3VwX2V4biIsImludDYzX3JvdW5kX2Rvd25fZXhuIiwiaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9leG4iLCJjbGFzc2lmeSIsInN0cmlwX3plcm8iLCJkZWNpbWFscyIsImV4cGxpY2l0X3BsdXMiLCJ0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG8iLCJraWxvIiwibWVnYSIsImdpZ2EiLCJ0ZXJhIiwicGV0YSIsIm1hZyIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaGlnaGVyIiwiZGlmZl9yaWdodCIsImRpZmZfbGVmdCIsInBldGEkMCIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyIsInJvdW5kX2dlbiIsInNkIiwiZGQiLCJkZCQwIiwic2QkMCIsImRkJDEiLCJzZCQxIiwiYWJzX2RkIiwicm91bmRfc2lnbmlmaWNhbnQiLCJzaWduaWZpY2FudF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsIiwiZGVjaW1hbF9kaWdpdHMiLCJzaWduX2V4biIsInNpZ25fb3JfbmFuIiwiaWVlZV9uZWdhdGl2ZSIsIm1hbnRpc3NhX2JpdHMiLCJleHBvbmVudF9tYXNrNjQiLCJleHBvbmVudF9tYXNrIiwibWFudGlzc2FfbWFzayIsIm1hbnRpc3NhX21hc2s2NCIsImllZWVfZXhwb25lbnQiLCJpZWVlX21hbnRpc3NhIiwiY3JlYXRlX2llZWVfZXhuIiwibmVnYXRpdmUiLCJtYW50aXNzYSIsInNpZ25fYml0cyIsImV4cHRfYml0cyIsIm1hbnRfYml0cyIsImNyZWF0ZV9pZWVlIiwic3BlY2lhbGl6ZWRfaGFzaCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJjYW1sX2J1ZmZlcl9sZW5ndGgiLCJjYW1sX2J1ZmZlcl9ibGl0IiwiZWxpZGVkX21lc3NhZ2UiLCJlbGlkZSIsImF0X21vc3RfbnVtX2ZyYW1lcyIsInRvX3N0cmluZ19saXN0Iiwic2V0X3JlY29yZGluZyIsImFtX3JlY29yZGluZyIsIm1vc3RfcmVjZW50IiwibW9zdF9yZWNlbnRfZm9yX2V4biIsIndpdGhfcmVjb3JkaW5nIiwic2F2ZWQiLCJvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmEiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImdsb2JhbGl6ZV9mbG9hdCIsImZ1bmMkMSIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludCIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludDMyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJnbG9iYWxpemVfaW50NjQiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX25hdGl2ZWludCIsImZ1bmMkNSIsIm5hdGl2ZWludF9vZl9zZXhwIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwib3B0aW9uX29mX3NleHAiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsImdsb2JhbGl6ZV9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwiZnVuYyQ2IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJmYWlsd2l0aCIsImludmFsaWRfYXJnIiwiY29tcGFyZV9hcnJheSQwIiwiZXF1YWxfYXJyYXkkMCIsImdsb2JhbGl6ZV9hcnJheSQwIiwiYXJyYXlfb2Zfc2V4cCQwIiwic2V4cF9vZl9hcnJheSQwIiwiYXJyYXlfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2Jvb2wkMCIsImVxdWFsX2Jvb2wkMCIsImdsb2JhbGl6ZV9ib29sJDAiLCJoYXNoX2ZvbGRfYm9vbCQwIiwiaGFzaF9ib29sJDAiLCJib29sX29mX3NleHAkMCIsInNleHBfb2ZfYm9vbCQwIiwiYm9vbF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfY2hhciQwIiwiZXF1YWxfY2hhciQwIiwiZ2xvYmFsaXplX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJnbG9iYWxpemVfZmxvYXQkMCIsImhhc2hfZm9sZF9mbG9hdCQwIiwiaGFzaF9mbG9hdCQwIiwiZmxvYXRfb2Zfc2V4cCQwIiwic2V4cF9vZl9mbG9hdCQwIiwiZmxvYXRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludCQwIiwiZXF1YWxfaW50JDAiLCJnbG9iYWxpemVfaW50JDAiLCJoYXNoX2ZvbGRfaW50JDAiLCJoYXNoX2ludCQwIiwiaW50X29mX3NleHAkMCIsInNleHBfb2ZfaW50JDAiLCJpbnRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDMyJDAiLCJlcXVhbF9pbnQzMiQwIiwiZ2xvYmFsaXplX2ludDMyJDAiLCJoYXNoX2ZvbGRfaW50MzIkMCIsImhhc2hfaW50MzIkMCIsImludDMyX29mX3NleHAkMCIsInNleHBfb2ZfaW50MzIkMCIsImludDMyX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQ2NCQwIiwiZXF1YWxfaW50NjQkMCIsImdsb2JhbGl6ZV9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiZ2xvYmFsaXplX2xpc3QkMCIsImhhc2hfZm9sZF9saXN0JDAiLCJsaXN0X29mX3NleHAkMCIsInNleHBfb2ZfbGlzdCQwIiwibGlzdF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbmF0aXZlaW50JDAiLCJlcXVhbF9uYXRpdmVpbnQkMCIsImdsb2JhbGl6ZV9uYXRpdmVpbnQkMCIsImhhc2hfZm9sZF9uYXRpdmVpbnQkMCIsImhhc2hfbmF0aXZlaW50JDAiLCJuYXRpdmVpbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfb3B0aW9uJDAiLCJlcXVhbF9vcHRpb24kMCIsImdsb2JhbGl6ZV9vcHRpb24kMCIsImhhc2hfZm9sZF9vcHRpb24kMCIsIm9wdGlvbl9vZl9zZXhwJDAiLCJzZXhwX29mX29wdGlvbiQwIiwib3B0aW9uX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9yZWYkMCIsImVxdWFsX3JlZiQwIiwiZ2xvYmFsaXplX3JlZiQwIiwicmVmX29mX3NleHAkMCIsInNleHBfb2ZfcmVmJDAiLCJyZWZfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3N0cmluZyQwIiwiZXF1YWxfc3RyaW5nJDAiLCJnbG9iYWxpemVfc3RyaW5nJDAiLCJoYXNoX2ZvbGRfc3RyaW5nJDAiLCJoYXNoX3N0cmluZyQwIiwic3RyaW5nX29mX3NleHAkMCIsInNleHBfb2Zfc3RyaW5nJDAiLCJzdHJpbmdfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2J5dGVzJDAiLCJlcXVhbF9ieXRlcyQwIiwiZ2xvYmFsaXplX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiZ2xvYmFsaXplX3VuaXQkMCIsImhhc2hfZm9sZF91bml0JDAiLCJoYXNoX3VuaXQkMCIsInVuaXRfb2Zfc2V4cCQwIiwic2V4cF9vZl91bml0JDAiLCJ1bml0X3NleHBfZ3JhbW1hciQwIiwicmFpc2VfcyQwIiwidG9fc3RyaW5nIiwibWFwIiwiZiIsIm8iLCJ2Iiwic2V0X2lucHV0X25hbWUiLCJuYW1lIiwic2V0X2lucHV0X2xleGJ1ZiIsImxleGJ1Zl9vcHQiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInByaW50X2xvbmdpZGVudCIsImxvbmdwcmVmaXgiLCJzJDAiLCJ5IiwibG9uZ2lkZW50X2xvYyIsImNvbnN0YW50IiwiaSIsIm0iLCJpJDAiLCJpJDEiLCJkZWxpbSIsImkkMiIsIm0kMCIsIm11dGFibGVfZmxhZyIsInZpcnR1YWxfZmxhZyIsInJlY19mbGFnIiwicmYiLCJub25yZWNfZmxhZyIsImRpcmVjdGlvbl9mbGFnIiwicHJpdmF0ZV9mbGFnIiwiY29uc3RhbnRfc3RyaW5nIiwidHl2YXIiLCJ0eXZhcl9sb2MiLCJzdHJpbmdfcXVvdCIsImNsYXNzX3BhcmFtc19kZWYiLCJsIiwidHlwZV9wYXJhbSIsInR5cGVfd2l0aF9sYWJlbCIsImxhYmVsIiwiY29yZV90eXBlMSIsImNvcmVfdHlwZSIsImF0dHJpYnV0ZXMiLCJjdDIiLCJjdDEiLCJjdCIsInNsIiwiY3QkMCIsImN0JDEiLCJsJDAiLCJsaSIsImwkMSIsImNvcmVfZmllbGRfdHlwZSIsImZpZWxkX3ZhciIsImwkMiIsImxpJDAiLCJsb3ciLCJjbG9zZWQiLCJsJDMiLCJmaXJzdF9pc19pbmhlcml0IiwidHlwZV92YXJpYW50X2hlbHBlciIsImN0bCIsImNzdHJzIiwibGlkIiwiYXV4IiwiZXh0ZW5zaW9uIiwicGF0dGVybiQxIiwicGF0dGVybiIsInAiLCJwMiIsInAxIiwib3JwYXRzIiwicGF0dGVybjEiLCJwYXR0ZXJuMSQwIiwicGF0dGVybl9saXN0X2hlbHBlciIsInBhdDIiLCJwYXQxIiwic2ltcGxlX3BhdHRlcm4iLCJzaW1wbGVfcGF0dGVybiQwIiwicG8iLCJ2bCIsImMyIiwiYzEiLCJsb25naWRlbnRfeF9wYXR0ZXJuIiwicCQwIiwicCQxIiwicCQyIiwid2l0aF9wYXJlbiIsImxhYmVsX2V4cCIsIm9wdCIsInJlc3QiLCJ0eHQkMCIsIm8kMCIsInN1Z2FyX2V4cHIiLCJhcmdzIiwiaWQiLCJsYWIiLCJwcmludF9pbmRleG9wIiwicGF0aF9wcmVmaXgiLCJhc3NpZ24iLCJsZWZ0IiwicHJpbnRfaW5kZXgiLCJpbmRpY2VzIiwicmVtX2FyZ3MiLCJwcmludF9wYXRoIiwic2ltcGxlX2V4cHIiLCJlJDAiLCJwYXRoIiwiZnVuYyIsIm90aGVyX2FyZ3MiLCJhJDAiLCJhc3NpZ24kMCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsIm1pZ3JhdGlvbl9lcnJvciIsIm1pc3NpbmdfZmVhdHVyZSIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwidGNvbnN0cmFpbnQiLCJwYXJhbXMiLCJhdHRyIiwiZXhwciQzIiwiY2FzZXMiLCJjb3B5X2Nhc2UiLCJjb3B5X2NvcmVfdHlwZSIsImMxJDAiLCJleHByJDEiLCJleHByJDIiLCJwYXJhbSIsInBwYXJhbV9sb2MiLCJleHAwIiwiY29weV9wYXR0ZXJuIiwiY29weV9hcmdfbGFiZWwiLCJwZXhwX2Rlc2MkMCIsIngxJDAiLCJ4MSQxIiwieDAkMyIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwieDEkMTIiLCJ4MCQxNiIsIngyJDMiLCJ4MSQxMyIsIngwJDE3IiwieDEkMTQiLCJ4MCQxOCIsImNvcHlfbGFiZWwiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJ4MCQyMSIsIngyJDQiLCJ4MSQxNiIsIngwJDIyIiwiY29weV9tb2R1bGVfZXhwciIsIngxJDE3IiwieDAkMjMiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsIngwJDI0IiwieDAkMjUiLCJ4MSQxOCIsIngwJDI2IiwieDAkMjciLCJjb3B5X2NsYXNzX3N0cnVjdHVyZSIsIngxJDE5IiwieDAkMjgiLCJ4MCQyOSIsIngxJDIwIiwieDAkMzAiLCJjb3B5X29wZW5faW5mb3MiLCJ4MCQzMSIsImNvcHlfbGV0b3AiLCJ4MCQzMiIsImNvcHlfZXh0ZW5zaW9uIiwiY29weV9iaW5kaW5nX29wIiwicGJvcF9sb2MiLCJwYm9wX2V4cCIsInBib3BfcGF0IiwicGJvcF9vcCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9jb25zdHJhaW50IiwicHZiX2V4cHIiLCJwdmJfcGF0IiwiY29weV92YWx1ZV9jb25zdHJhaW50IiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsImNvcHlfcGF0dGVybl9kZXNjIiwiY29weV9jbG9zZWRfZmxhZyIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsImNvZXJjaW9uIiwiZ3JvdW5kIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X2xvY2F0aW9uIiwiY29weV9vYmplY3RfZmllbGQiLCJjb3B5X3Jvd19maWVsZCIsImNvcHlfcGFja2FnZV90eXBlIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwiY29weV9yb3dfZmllbGRfZGVzYyIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsImNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZSIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiY29weV9wYXlsb2FkIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9leGNlcHRpb24iLCJjb3B5X21vZHVsZV9iaW5kaW5nIiwiY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2luY2x1ZGVfaW5mb3MiLCJjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX2luZm9zIiwiY29weV9jbGFzc19leHByIiwicGNsX2F0dHJpYnV0ZXMiLCJwY2xfbG9jIiwicGNsX2Rlc2MiLCJjb3B5X2NsYXNzX2V4cHJfZGVzYyIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfb3Blbl9kZXNjcmlwdGlvbiIsInBjc3RyX2ZpZWxkcyIsInBjc3RyX3NlbGYiLCJjb3B5X2NsYXNzX2ZpZWxkIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MiLCJjb3B5X292ZXJyaWRlX2ZsYWciLCJjb3B5X2NsYXNzX2ZpZWxkX2tpbmQiLCJjb3B5X211dGFibGVfZmxhZyIsImNvcHlfcHJpdmF0ZV9mbGFnIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwiY29weV9tb2R1bGVfZXhwcl9kZXNjIiwiY29weV9mdW5jdG9yX3BhcmFtZXRlciIsImNvcHlfbW9kdWxlX3R5cGUiLCJwbXR5X2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfZGVzYyIsImNvcHlfbW9kdWxlX3R5cGVfZGVzYyIsImNvcHlfd2l0aF9jb25zdHJhaW50IiwiY29weV9zaWduYXR1cmVfaXRlbSIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwiY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIiwiY29weV9tb2R1bGVfZGVjbGFyYXRpb24iLCJjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24iLCJjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZGVzYyIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwiY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MiLCJjb3B5X3ZpcnR1YWxfZmxhZyIsIngzJDAiLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsInBwYXJhbV9kZXNjIiwiYWNjJDEiLCJhcmdfbGlzdCIsImMyJDAiLCJ0eXBlX2NvbnN0cmFpbnQiLCJvcHRfZGVmYXVsdCQwIiwiYXJnX2xhYmVsJDAiLCJ4MCQzMyIsIngyJDUiLCJ4MSQyMSIsIngwJDM0IiwibWVyZ2VfbG9jIiwiZ2hvc3RfbG9jIiwiZ2hvc3RfY29uc3RyYWludCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiQwIiwicHR5cF9sb2MkMCIsInR5cCQzIiwicHZiX3BhdCQzIiwiZ3JvdW5kJDAiLCJwZXhwX2xvYyQwIiwicHZiX2V4cHIkMyIsInB2Yl9leHByJDEiLCJwdmJfcGF0JDEiLCJ0eXAkMiIsInR5cCQxIiwidHlwX3BvbHkiLCJwdmJfcGF0JDIiLCJwdmJfZXhwciQyIiwidmFyJDAiLCJsb2MkMCIsImVtcHR5X3N0cnVjdCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJjb3B5X3Bvc2l0aW9uIiwicG9zX2NudW0iLCJwb3NfYm9sIiwicG9zX2xudW0iLCJwb3NfZm5hbWUiLCJyZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIiwidHlfZXh0IiwicnQkMCIsInZhbHVlX3BhdHRlcm4iLCJ2YWx1ZV9leHAiLCJpbm5lcl9lIiwiZXh0ZXJuX2N0IiwiZXh0ZXJuX2N0JDAiLCJwdF90eXZhcnMkMCIsIndpdGhfY29uc3RyYWludCIsInR5X3ZhcnMiLCJwdmJfY29uc3RyYWludCQwIiwiY29lcmNlIiwiZ3IiLCJwdmJfY29uc3RyYWludCQxIiwiaXNfdW5pdCIsImNvcHlfZXhwciIsImNvcHlfY2FzZXMiLCJjb3B5X3BhdCIsImNvcHlfdHlwIiwibWFwX29wdGlvbiIsImNvcHlfb3B0aW9uIiwiY29weV9ib29sIiwiY29weV9sb25naWRlbnQiLCJ4MF9sb2MiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwid3JhcCIsImN0eSIsImxvYyQxIiwibm9sb2MiLCJmcm9tX2xvYyIsInBvcyIsImluamVjdF9wcmVkZWZfb3B0aW9uIiwiZCIsImlkZW50IiwidHlwZV9kZWNsYXJhdGlvbnMiLCJyZWNmbGFnIiwidHlwZXMiLCJleHRyYWN0X3ByZWRlZl9vcHRpb24iLCJpc19ub25yZWMiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImkkMCIsImludDMyIiwic3VmZml4JDAiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJjaGFyJDAiLCJjIiwic3RyaW5nIiwicXVvdGF0aW9uX2RlbGltaXRlciIsInMiLCJsb2MiLCJtayIsIm5hbWUiLCJwYXlsb2FkIiwibWskMCIsImQiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwidHJ5JDAiLCJ0dXBsZSQxIiwiY29uc3RydWN0JDAiLCJ2YXJpYW50JDEiLCJyZWNvcmQkMCIsInNldGZpZWxkIiwiYXJyYXkkMCIsImlmdGhlbmVsc2UiLCJzZXF1ZW5jZSIsIndoaWxlJDAiLCJmb3IkMCIsImNvbnN0cmFpbnQkMCIsImNvZXJjZSIsInNlbmQiLCJuZXckMCIsInNldGluc3R2YXIiLCJvdmVycmlkZSIsImxldG1vZHVsZSIsImxldGV4Y2VwdGlvbiIsImFzc2VydCIsImxhenkkMCIsInBvbHkkMCIsIm9iamVjdCQwIiwibmV3dHlwZSIsInBhY2siLCJvcGVuJDAiLCJsZXRvcCIsImFuZHMiLCJib2R5IiwiZXh0ZW5zaW9uJDEiLCJ1bnJlYWNoYWJsZSIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwibWskMyIsImF0dHIkMiIsImlkZW50JDAiLCJhbGlhcyQxIiwic2lnbmF0dXJlIiwiZnVuY3RvciIsIndpdGgkMCIsInR5cGVvZiQwIiwiZXh0ZW5zaW9uJDIiLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInByaW0iLCJtayQxMiIsIm1rJDEzIiwic3luIiwibWskMTQiLCJtayQxNSIsImV4cHIiLCJtayQxNiIsIm1rJDE3IiwibWV4cHIiLCJtayQxOCIsIm1rJDE5IiwidmlydCIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsImtpbmQiLCJwcml2IiwiY29uc3RydWN0b3IiLCJyZXMiLCJ2YXJzIiwiYXJncyIsImZpZWxkJDAiLCJtdXQiLCJtayQyMSIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJta19leGNlcHRpb24iLCJjb25zdHJ1Y3RvciQwIiwiZGVjbCIsInJlYmluZCIsImxpZCIsIm1rJDIyIiwic2VsZiIsImZpZWxkcyIsIm1rJDIzIiwibWskMjQiLCJ0YWciLCJjb25zdCQwIiwidHlzIiwiaW5oZXJpdCQxIiwidHkiLCJtayQyNSIsInRhZyQwIiwiaW5oZXJpdCQyIiwic3RyaW5nX3ZlcnNpb24iLCJzdHJpbmdfdmVyc2lvbiQwIiwic3RyaW5nX3ZlcnNpb24kMSIsInN0cmluZ192ZXJzaW9uJDIiLCJzdHJpbmdfdmVyc2lvbiQzIiwic3RyaW5nX3ZlcnNpb24kNCIsInN0cmluZ192ZXJzaW9uJDUiLCJzdHJpbmdfdmVyc2lvbiQ2Iiwic3RyaW5nX3ZlcnNpb24kNyIsInN0cmluZ192ZXJzaW9uJDgiLCJzdHJpbmdfdmVyc2lvbiQ5Iiwic3RyaW5nX3ZlcnNpb24kMTAiLCJzdHJpbmdfdmVyc2lvbiQxMSIsInN0cmluZ192ZXJzaW9uJDEyIiwic3RyaW5nX3ZlcnNpb24kMTMiLCJzdHJpbmdfdmVyc2lvbiQxNCIsIm1pZ3JhdGlvbl9pbmZvIiwiaWQiLCJtaWdyYXRpb25faWRlbnRpdHkiLCJjb21wb3NlIiwiZyIsIm1pZ3JhdGlvbl9mdW5jdGlvbnMiLCJpc191bmRlZmluZWQiLCJpbW1lZGlhdGVfbWlncmF0aW9uIiwiQSIsImRpcmVjdGlvbiIsInZlcnNpb24iLCJ0byIsImZ1bnMiLCJCIiwibSQxIiwiVG8iLCJhYiIsInRvMiIsImJjIiwibSQwIiwiY29weV9zdHJ1Y3R1cmVfaXRlbSIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJjb3B5X21vZHVsZV90eXBlIiwiY29weV9tb2R1bGVfZXhwciIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwiY29weV9jbGFzc190eXBlIiwiY29weV9jbGFzc19maWVsZCIsImNvcHlfY2xhc3NfZXhwciIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2FzZSIsImNvcHlfcGF0dGVybiIsImNvcHlfZXhwcmVzc2lvbiIsImNvcHlfY29yZV90eXBlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlIiwibWlncmF0aW9uX2luZm8kMCIsInZlcnNpb24kMCIsIm1pZ3JhdGlvbl9pbmZvJDEiLCJ2ZXJzaW9uJDEiLCJtaWdyYXRpb25faW5mbyQyIiwidmVyc2lvbiQyIiwibWlncmF0aW9uX2luZm8kMyIsInZlcnNpb24kMyIsIm1pZ3JhdGlvbl9pbmZvJDQiLCJ2ZXJzaW9uJDQiLCJtaWdyYXRpb25faW5mbyQ1IiwidmVyc2lvbiQ1IiwibWlncmF0aW9uX2luZm8kNiIsInZlcnNpb24kNiIsIm1pZ3JhdGlvbl9pbmZvJDciLCJ2ZXJzaW9uJDciLCJtaWdyYXRpb25faW5mbyQ4IiwidmVyc2lvbiQ4IiwibWlncmF0aW9uX2luZm8kOSIsInZlcnNpb24kOSIsIm1pZ3JhdGlvbl9pbmZvJDEwIiwidmVyc2lvbiQxMCIsIm1pZ3JhdGlvbl9pbmZvJDExIiwidmVyc2lvbiQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwidmVyc2lvbiQxMiIsIm1pZ3JhdGlvbl9pbmZvJDEzIiwidmVyc2lvbiQxMyIsIm1pZ3JhdGlvbl9pbmZvJDE0IiwidmVyc2lvbiQxNCIsImFsbF92ZXJzaW9ucyIsImZyb21fbWFnaWMiLCJtYWdpYyIsImFsbF92ZXJzaW9uc190b3BfZG93biIsInRhaWwiLCJWZXJzaW9uIiwib2Zfb2NhbWwiLCJub2RlIiwieSIsInRvX29jYW1sIiwib2Zfb2NhbWxfbWFwcGVyIiwiaXRlbSIsImN0eHQiLCJ0b19vY2FtbF9tYXBwZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxleGJ1ZiIsImludGVyZmFjZSQwIiwidG9wbGV2ZWxfcGhyYXNlIiwidXNlX2ZpbGUiLCJleHByZXNzaW9uIiwicGF0dGVybiIsImRlZmF1bHRfcHJpbnRfd2FybmluZyIsImFib3V0X2l0ZV9icmFuY2hfcmVmIiwiY2FyZV9hYm91dF9pdGVfYnJhbmNoIiwiYWJvdXRfaXRlX2JyYW5jaCIsInNlbGZfMSIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2ZuYW1lJDAiLCJwb3NfbG51bSQwIiwicG9zX2JvbCQwIiwicG9zX2NudW0kMCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJsb2Nfc3RhcnQkMCIsImxvY19lbmQkMCIsImxvY19naG9zdCQwIiwidHh0IiwidHh0JDAiLCJsb2MkMCIsImEkMCIsImEkMSIsImEkMiIsImIkMCIsImIkMSIsImEkMyIsImEkNCIsImIkMiIsImMkMCIsImIkMyIsImEkNSIsImEkNiIsImIkNCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwicHR5cF9kZXNjJDAiLCJwdHlwX2xvYyQwIiwicHR5cF9sb2Nfc3RhY2skMCIsInB0eXBfYXR0cmlidXRlcyQwIiwiYSQ3IiwiYSQ4IiwiYiQ1IiwiYSQ5IiwiYSQxMCIsImIkNiIsImIkNyIsImEkMTEiLCJhJDEyIiwiYiQ4IiwiYyQxIiwiYiQ5IiwiYSQxMyIsImEkMTQiLCJiJDEwIiwiYyQyIiwiYiQxMSIsImEkMTUiLCJhJDE2IiwiYiQxMiIsImEkMTciLCJhJDE4IiwiYSQxOSIsImEkMjAiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJwcmZfZGVzYyQwIiwicHJmX2xvYyQwIiwicHJmX2F0dHJpYnV0ZXMkMCIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsInBvZl9kZXNjJDAiLCJwb2ZfbG9jJDAiLCJwb2ZfYXR0cmlidXRlcyQwIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsInBwYXRfZGVzYyQwIiwicHBhdF9sb2MkMCIsInBwYXRfbG9jX3N0YWNrJDAiLCJwcGF0X2F0dHJpYnV0ZXMkMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImEkMjciLCJhJDI4IiwiYSQyOSIsImEkMzAiLCJiJDEzIiwiYSQzMSIsImEkMzIiLCJiJDE0IiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsImQkMCIsImIkMTUiLCJiJDE2IiwiYyQzIiwiYiQxNyIsImIkMTgiLCJjJDQiLCJjJDUiLCJiJDE5IiwiYiQyMCIsImMkNiIsImIkMjEiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImQkMSIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJkJDIiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImFuZHMkMCIsImJvZHkkMCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwYm9wX29wJDAiLCJwYm9wX3BhdCQwIiwicGJvcF9leHAkMCIsInBib3BfbG9jJDAiLCJwdmFsX2xvYyIsInB2YWxfYXR0cmlidXRlcyIsInB2YWxfcHJpbSIsInB2YWxfdHlwZSIsInB2YWxfbmFtZSIsInB2YWxfbmFtZSQwIiwicHZhbF90eXBlJDAiLCJwdmFsX3ByaW0kMCIsInB2YWxfYXR0cmlidXRlcyQwIiwicHZhbF9sb2MkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMiLCJwdHlleHRfbG9jIiwicHR5ZXh0X3ByaXZhdGUiLCJwdHlleHRfY29uc3RydWN0b3JzIiwicHR5ZXh0X3BhcmFtcyIsInB0eWV4dF9wYXRoIiwicHR5ZXh0X3BhdGgkMCIsInB0eWV4dF9wYXJhbXMkMCIsInB0eWV4dF9jb25zdHJ1Y3RvcnMkMCIsInB0eWV4dF9wcml2YXRlJDAiLCJwdHlleHRfbG9jJDAiLCJwdHlleHRfYXR0cmlidXRlcyQwIiwicGV4dF9hdHRyaWJ1dGVzIiwicGV4dF9sb2MiLCJwZXh0X2tpbmQiLCJwZXh0X25hbWUiLCJwZXh0X25hbWUkMCIsInBleHRfa2luZCQwIiwicGV4dF9sb2MkMCIsInBleHRfYXR0cmlidXRlcyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMiLCJwdHlleG5fbG9jIiwicHR5ZXhuX2NvbnN0cnVjdG9yIiwicHR5ZXhuX2NvbnN0cnVjdG9yJDAiLCJwdHlleG5fbG9jJDAiLCJwdHlleG5fYXR0cmlidXRlcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJwY3NpZ19zZWxmJDAiLCJwY3NpZ19maWVsZHMkMCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwicGN0Zl9kZXNjJDAiLCJwY3RmX2xvYyQwIiwicGN0Zl9hdHRyaWJ1dGVzJDAiLCJwY2lfYXR0cmlidXRlcyIsInBjaV9sb2MiLCJwY2lfZXhwciIsInBjaV9uYW1lIiwicGNpX3BhcmFtcyIsInBjaV92aXJ0IiwicGNpX3ZpcnQkMCIsInBjaV9wYXJhbXMkMCIsInBjaV9uYW1lJDAiLCJwY2lfZXhwciQwIiwicGNpX2xvYyQwIiwicGNpX2F0dHJpYnV0ZXMkMCIsInBjbF9hdHRyaWJ1dGVzIiwicGNsX2xvYyIsInBjbF9kZXNjIiwicGNsX2Rlc2MkMCIsInBjbF9sb2MkMCIsInBjbF9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsInBjZl9kZXNjJDAiLCJwY2ZfbG9jJDAiLCJwY2ZfYXR0cmlidXRlcyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInBtZF9uYW1lJDAiLCJwbWRfdHlwZSQwIiwicG1kX2F0dHJpYnV0ZXMkMCIsInBtZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwb3Blbl9leHByJDAiLCJwb3Blbl9vdmVycmlkZSQwIiwicG9wZW5fbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzJDAiLCJwaW5jbF9hdHRyaWJ1dGVzIiwicGluY2xfbG9jIiwicGluY2xfbW9kIiwicGluY2xfbW9kJDAiLCJwaW5jbF9sb2MkMCIsInBpbmNsX2F0dHJpYnV0ZXMkMCIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwicG1vZF9kZXNjJDAiLCJwbW9kX2xvYyQwIiwicG1vZF9hdHRyaWJ1dGVzJDAiLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsInBzdHJfZGVzYyQwIiwicHN0cl9sb2MkMCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtYl9uYW1lJDAiLCJwbWJfZXhwciQwIiwicG1iX2F0dHJpYnV0ZXMkMCIsInBtYl9sb2MkMCIsInBkaXJfbG9jIiwicGRpcl9hcmciLCJwZGlyX25hbWUiLCJwZGlyX25hbWUkMCIsInBkaXJfYXJnJDAiLCJwZGlyX2xvYyQwIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwic2VsZl8yIiwic2VsZl8zIiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImFjYyQ1IiwiYWNjJDYiLCJhY2MkNyIsImFjYyQ4IiwiYWNjJDkiLCJhY2MkMTAiLCJhY2MkMTEiLCJhY2MkMTIiLCJhY2MkMTMiLCJhY2MkMTQiLCJhY2MkMTUiLCJhY2MkMTYiLCJhY2MkMTciLCJhY2MkMTgiLCJhY2MkMTkiLCJhY2MkMjAiLCJhY2MkMjEiLCJhY2MkMjIiLCJhY2MkMjMiLCJhY2MkMjQiLCJhY2MkMjUiLCJhY2MkMjYiLCJhY2MkMjciLCJhY2MkMjgiLCJhY2MkMjkiLCJhY2MkMzAiLCJhY2MkMzEiLCJhY2MkMzIiLCJhY2MkMzMiLCJhY2MkMzQiLCJhY2MkMzUiLCJhY2MkMzYiLCJhY2MkMzciLCJhY2MkMzgiLCJhY2MkMzkiLCJhY2MkNDAiLCJhY2MkNDEiLCJhY2MkNDIiLCJhY2MkNDMiLCJhY2MkNDQiLCJhY2MkNDUiLCJhY2MkNDYiLCJhY2MkNDciLCJhY2MkNDgiLCJhY2MkNDkiLCJhY2MkNTAiLCJhY2MkNTEiLCJhY2MkNTIiLCJhY2MkNTMiLCJhY2MkNTQiLCJhY2MkNTUiLCJzZWxmXzQiLCJhY2MkNTYiLCJhY2MkNTciLCJhY2MkNTgiLCJhY2MkNTkiLCJhY2MkNjAiLCJhY2MkNjEiLCJhY2MkNjIiLCJhY2MkNjMiLCJhY2MkNjQiLCJhY2MkNjUiLCJhY2MkNjYiLCJhY2MkNjciLCJhY2MkNjgiLCJzZWxmXzUiLCJjdHgiLCJzZWxmXzYiLCJzZWxmXzciLCJ0b19leHRlbnNpb24iLCJlcnJvciIsInN1Yl9tc2dzIiwibWFpbl9tc2ciLCJta19zdHJpbmdfY29uc3RhbnQiLCJleHRlbnNpb25fb2Zfc3ViX21zZyIsInN1Yl9tc2ciLCJyZWdpc3Rlcl9lcnJvcl9vZl9leG4iLCJtZXNzYWdlIiwic2V0X21lc3NhZ2UiLCJtYWtlIiwic3ViIiwic3ViJDAiLCJ1cGRhdGVfbG9jIiwiZ2V0X2xvY2F0aW9uIiwib2ZfZXhuIiwicmFpc2UiLCJwcmludCIsImRpZmZfY29tbWFuZCIsImZpbGUxIiwiZmlsZTIiLCJleHRyYV9wYXRkaWZmX2FyZ3MiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwiZmlsZSIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsInJldl9tYXBpIiwibGlzdCIsImxpc3QkMCIsImkiLCJhY2MiLCJ0YWlsIiwiaGVhZCIsImFjYyQwIiwiaSQwIiwiZm9sZF9yaWdodDIiLCJsaXN0MSIsImxpc3QyIiwiaW5pdCIsIm1hcCQwIiwibWFwaSQwIiwiZm9sZF9yaWdodCQwIiwiYXBwZW5kIiwiY29uY2F0JDAiLCJyZXZfY29tYmluZSIsImNvbWJpbmUiLCJzcGxpdCIsInlzIiwieHMiLCJtYXAyIiwicGFydGl0aW9uX21hcCIsInAiLCJsIiwibGVmdCIsInJpZ2h0IiwibCQwIiwidiIsInYkMCIsImluaXQkMCIsInBvcyQwIiwiaXNfZW1wdHkiLCJyZXZfZmlsdGVyX29wdCIsIm9wdGlvbiIsImZpbHRlcl9vcHQiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwic29tZSIsImZpbmRfbWFwX2V4biIsImxhc3QiLCJyZXN0Iiwic3BsaXRfd2hpbGUiLCJmaW5kX2FfZHVwIiwic2V0JDEiLCJzZXQkMCIsImFzc29jX29wdCIsIml0ZXIkMiIsImlzX3NvbWUiLCJpdGVyJDMiLCJtYXAkMSIsInZhbHVlIiwidG9fbGlzdCIsImJpbmQiLCJhIiwiZSIsIm1hcCQyIiwibWFwX2Vycm9yIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiaGFuZGxlX2Vycm9yIiwic3ltYm9sJDM1IiwicTIiLCJ0MiIsInExIiwidDEiLCJoZCQwIiwidG9fbGlzdCQwIiwicSIsIm1hcCQzIiwiY3JlYXRlJDEiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsIndpdGhfZmlsZSQwIiwid3JpdGVfYWxsIiwiaXNfZW1wdHkkMCIsInByZWZpeCIsInN1ZmZpeCIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJpc19wcmVmaXgiLCJpc19zdWZmaXgiLCJzdWZmaXhfb2Zmc2V0IiwicG9zJDEiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImluZGV4X29wdCQwIiwicmluZGV4X29wdCQwIiwiaW5kZXhfZnJvbV9vcHQkMCIsInJpbmRleF9mcm9tX29wdCQwIiwibHNwbGl0MiIsIm9uIiwiY2FwaXRhbGl6ZV9hc2NpaSQwIiwibG93ZXJjYXNlX2FzY2lpJDEiLCJ1bmNhcGl0YWxpemVfYXNjaWkkMCIsInNwbGl0X29uX2NoYXIkMCIsInNlcCIsImNvbXBhcmUkNyIsImVxdWFsJDciLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJtaW4kNSIsIm1heCQ1IiwiZmluZF9vcHQkMSIsInN5bWJvbCQ0MiIsIm91dHB1dCIsIm9jIiwiYnl0ZXMiLCJvdXRwdXRfc3Vic3RyaW5nIiwic3RyaW5nIiwiaW5fZmlsZSIsIm5hbWUiLCJsb2MiLCJzZXRfZmlsZW5hbWUiLCJmbiIsImxvY19zdGFydCIsImxvY19lbmQiLCJub25lIiwiaW5pdCIsImxleGJ1ZiIsImZuYW1lIiwicmFpc2VfZXJyb3JmIiwiZm10IiwicmVwb3J0X2V4Y2VwdGlvbiIsIm9mX2xleGJ1ZiIsInByaW50IiwicHBmIiwidCIsImNvbXBhcmVfcG9zIiwicDEiLCJwMiIsImNvbHVtbiIsInAiLCJuIiwibWluX3BvcyIsIm1heF9wb3MiLCJjb21wYXJlIiwibG9jMSIsImxvYzIiLCJjcmVhdGVmIiwic3RyIiwiZXJyb3JfZXh0ZW5zaW9uZiIsImUiLCJmYWlsIiwiZXhwZWN0ZWQiLCJhdHRyaWJ1dGUiLCJwYXlsb2FkIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJwY2xfY29uc3RyIiwieDAiLCJ4MSIsInBjbF9zdHJ1Y3R1cmUiLCJwY2xfZnVuIiwieDIiLCJ4MyIsInBjbF9hcHBseSIsInBjbF9sZXQiLCJwY2xfY29uc3RyYWludCIsInBjbF9leHRlbnNpb24iLCJwY2xfb3BlbiIsInBjZl9pbmhlcml0IiwicGNmX3ZhbCIsInBjZl9tZXRob2QiLCJwY2ZfY29uc3RyYWludCIsInBjZl9pbml0aWFsaXplciIsInBjZl9hdHRyaWJ1dGUiLCJwY2ZfZXh0ZW5zaW9uIiwiY2xhc3NfaW5mb3MiLCJ2aXJ0IiwicGFyYW1zIiwiZXhwciIsImNsYXNzX3NpZ25hdHVyZSIsInNlbGYiLCJmaWVsZHMiLCJjbGFzc19zdHJ1Y3R1cmUiLCJwY3R5X2NvbnN0ciIsInBjdHlfc2lnbmF0dXJlIiwicGN0eV9hcnJvdyIsInBjdHlfZXh0ZW5zaW9uIiwicGN0eV9vcGVuIiwicGN0Zl9pbmhlcml0IiwicGN0Zl92YWwiLCJwY3RmX21ldGhvZCIsInBjdGZfY29uc3RyYWludCIsInBjdGZfYXR0cmlidXRlIiwicGN0Zl9leHRlbnNpb24iLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInZhcnMiLCJhcmdzIiwicmVzIiwicHR5cF9hbnkiLCJwdHlwX3ZhciIsInB0eXBfYXJyb3ciLCJwdHlwX3R1cGxlIiwicHR5cF9jb25zdHIiLCJwdHlwX29iamVjdCIsInB0eXBfY2xhc3MiLCJwdHlwX2FsaWFzIiwicHR5cF92YXJpYW50IiwicHR5cF9wb2x5IiwicHR5cF9wYWNrYWdlIiwicHR5cF9leHRlbnNpb24iLCJwZGlyX3N0cmluZyIsInBkaXJfaW50IiwicGRpcl9pZGVudCIsInBkaXJfYm9vbCIsInBleHBfaWRlbnQiLCJwZXhwX2NvbnN0YW50IiwicGV4cF9sZXQiLCJwZXhwX2Z1bmN0aW9uIiwicGV4cF9mdW4iLCJwZXhwX2FwcGx5IiwicGV4cF9tYXRjaCIsInBleHBfdHJ5IiwicGV4cF90dXBsZSIsInBleHBfY29uc3RydWN0IiwicGV4cF92YXJpYW50IiwicGV4cF9yZWNvcmQiLCJwZXhwX2ZpZWxkIiwicGV4cF9zZXRmaWVsZCIsInBleHBfYXJyYXkiLCJwZXhwX2lmdGhlbmVsc2UiLCJwZXhwX3NlcXVlbmNlIiwicGV4cF93aGlsZSIsInBleHBfZm9yIiwieDQiLCJwZXhwX2NvbnN0cmFpbnQiLCJwZXhwX2NvZXJjZSIsInBleHBfc2VuZCIsInBleHBfbmV3IiwicGV4cF9zZXRpbnN0dmFyIiwicGV4cF9vdmVycmlkZSIsInBleHBfbGV0bW9kdWxlIiwicGV4cF9sZXRleGNlcHRpb24iLCJwZXhwX2Fzc2VydCIsInBleHBfbGF6eSIsInBleHBfcG9seSIsInBleHBfb2JqZWN0IiwicGV4cF9uZXd0eXBlIiwicGV4cF9wYWNrIiwicGV4cF9vcGVuIiwicGV4cF9sZXRvcCIsInBleHBfZXh0ZW5zaW9uIiwicGV4cF91bnJlYWNoYWJsZSIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImtpbmQiLCJpbmNsdWRlX2luZm9zIiwibW9kIiwibGFiZWxfZGVjbGFyYXRpb24iLCJtdXRhYmxlIiwidHlwZSIsImxldG9wIiwibGV0JDAiLCJhbmRzIiwiYm9keSIsImxvY2F0aW9uIiwic3RhcnQiLCJlbmQiLCJnaG9zdCIsIm1vZHVsZV9iaW5kaW5nIiwibW9kdWxlX2RlY2xhcmF0aW9uIiwicG1vZF9pZGVudCIsInBtb2Rfc3RydWN0dXJlIiwicG1vZF9mdW5jdG9yIiwicG1vZF9hcHBseSIsInBtb2RfY29uc3RyYWludCIsInBtb2RfdW5wYWNrIiwicG1vZF9leHRlbnNpb24iLCJtb2R1bGVfc3Vic3RpdHV0aW9uIiwibWFuaWZlc3QiLCJwbXR5X2lkZW50IiwicG10eV9zaWduYXR1cmUiLCJwbXR5X2Z1bmN0b3IiLCJwbXR5X3dpdGgiLCJwbXR5X3R5cGVvZiIsInBtdHlfZXh0ZW5zaW9uIiwicG10eV9hbGlhcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwib3RhZyIsIm9pbmhlcml0Iiwib3Blbl9pbmZvcyIsIm92ZXJyaWRlIiwicHBhdF9hbnkiLCJwcGF0X3ZhciIsInBwYXRfYWxpYXMiLCJwcGF0X2NvbnN0YW50IiwicHBhdF9pbnRlcnZhbCIsInBwYXRfdHVwbGUiLCJwcGF0X2NvbnN0cnVjdCIsInBwYXRfdmFyaWFudCIsInBwYXRfcmVjb3JkIiwicHBhdF9hcnJheSIsInBwYXRfb3IiLCJwcGF0X2NvbnN0cmFpbnQiLCJwcGF0X3R5cGUiLCJwcGF0X2xhenkiLCJwcGF0X3VucGFjayIsInBwYXRfZXhjZXB0aW9uIiwicHBhdF9leHRlbnNpb24iLCJwcGF0X29wZW4iLCJwb3NpdGlvbiIsImxudW0iLCJib2wiLCJjbnVtIiwicnRhZyIsInJpbmhlcml0IiwicHNpZ192YWx1ZSIsInBzaWdfdHlwZSIsInBzaWdfdHlwZXN1YnN0IiwicHNpZ190eXBleHQiLCJwc2lnX2V4Y2VwdGlvbiIsInBzaWdfbW9kdWxlIiwicHNpZ19tb2RzdWJzdCIsInBzaWdfcmVjbW9kdWxlIiwicHNpZ19tb2R0eXBlIiwicHNpZ19tb2R0eXBlc3Vic3QiLCJwc2lnX29wZW4iLCJwc2lnX2luY2x1ZGUiLCJwc2lnX2NsYXNzIiwicHNpZ19jbGFzc190eXBlIiwicHNpZ19hdHRyaWJ1dGUiLCJwc2lnX2V4dGVuc2lvbiIsInBzdHJfZXZhbCIsInBzdHJfdmFsdWUiLCJwc3RyX3ByaW1pdGl2ZSIsInBzdHJfdHlwZSIsInBzdHJfdHlwZXh0IiwicHN0cl9leGNlcHRpb24iLCJwc3RyX21vZHVsZSIsInBzdHJfcmVjbW9kdWxlIiwicHN0cl9tb2R0eXBlIiwicHN0cl9vcGVuIiwicHN0cl9jbGFzcyIsInBzdHJfY2xhc3NfdHlwZSIsInBzdHJfaW5jbHVkZSIsInBzdHJfYXR0cmlidXRlIiwicHN0cl9leHRlbnNpb24iLCJ0b3BsZXZlbF9kaXJlY3RpdmUiLCJhcmciLCJ0eXBlX2RlY2xhcmF0aW9uIiwiY3N0cnMiLCJwcml2YXRlJDAiLCJ0eXBlX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yIiwidHlwZV9leHRlbnNpb24iLCJwYXRoIiwiY29uc3RydWN0b3JzIiwidmFsdWVfYmluZGluZyIsInZhbHVlX2Rlc2NyaXB0aW9uIiwicHJpbSIsInR4dCIsIm1ha2UiLCJtYXAiLCJmIiwiaXNfbm9ybWFsX2lkZW50X2NoYXIiLCJzaG9ydF9uYW1lIiwic3RyaW5nIiwicyIsImIiLCJhIiwiYiQwIiwiYSQwIiwic2V4cF9vZl90IiwiZmxhdHRlbl9leG4iLCJsaWQkMCIsImFjY3UiLCJzJDAiLCJsaWQiLCJsYXN0X2V4biIsInVuZmxhdHRlbiIsImwiLCJhY2MiLCJwYXJzZSIsImludmFsaWQiLCJvcGVuX3BhciIsImNsb3NlX3BhciIsInIiLCJsJDAiLCJncm91cCIsImJlZm9yZSIsImwkMSIsInMkMSIsIngiLCJtayIsIm1hcF9saWRlbnQiLCJsaWRlbnQiLCJ4JDAiLCJwcGF0X2NvbnN0cnVjdCQwIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBzdHJfdmFsdWVfbGlzdCIsInJlY19mbGFnIiwidmJzIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24iLCJlaW50IiwiZWNoYXIiLCJlc3RyaW5nIiwiZWZsb2F0IiwiZWludDMyIiwiZWludDY0IiwiZW5hdGl2ZWludCIsInBpbnQiLCJwY2hhciIsInBzdHJpbmciLCJwZmxvYXQiLCJwaW50MzIiLCJwaW50NjQiLCJwbmF0aXZlaW50IiwiZWJvb2wiLCJwYm9vbCIsImV2YXIiLCJ2IiwicHZhciIsImV1bml0IiwicHVuaXQiLCJwZXhwX3R1cGxlJDAiLCJwcGF0X3R1cGxlJDAiLCJwdHlwX3R1cGxlJDAiLCJwZXhwX3R1cGxlX29wdCIsInBwYXRfdHVwbGVfb3B0IiwicHR5cF9wb2x5JDAiLCJ0eSIsInBleHBfYXBwbHkkMCIsImVsIiwiZSQwIiwiZWFwcGx5IiwiZWFic3RyYWN0IiwicHMiLCJlc2VxdWVuY2UiLCJ0bCIsImhkIiwicGNvbnN0cnVjdCIsImNkIiwiZWNvbnN0cnVjdCIsImVsaXN0IiwicGxpc3QiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXQiLCJpZGVudCIsIm4kMCIsInR5cGVfY29uc3RyX2NvbnYiLCJhcHBseV9sb2MiLCJsb25naWRlbnQiLCJsb2MkMCIsIm1vZHVsZV9wYXRoIiwic3VmZml4X24iLCJmdW5jdG9yIiwiZnVuY3Rvcl9hcmdzIiwicmVzdCIsImZ1bmN0b3IkMCIsImZ1bmN0b3JfcGF0aCIsImlkZW50JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiIsImdhdGhlcl9hcmdzIiwiYXJncyQwIiwiYm9keSQwIiwiZXRhX3JlZHVjZSIsImV4cHIkMCIsInN1YnBhdCIsImxhYmVsIiwiYWNjJDAiLCJuYW1lJDAiLCJhY2MkMSIsImZfaWRlbnQiLCJwYXJhbV9sYWJlbCIsImFyZ19sYWJlbCIsInBhcmFtJDAiLCJ0eSQwIiwidHlfb3B0IiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSIsImV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbiIsIm5vbnJlY190eXBlX2RlY2xhcmF0aW9uJDAiLCJwZXhwX3R1cGxlX29wdCQwIiwicHBhdF90dXBsZV9vcHQkMCIsImVpbnQkMCIsImVjaGFyJDAiLCJlc3RyaW5nJDAiLCJlZmxvYXQkMCIsImVpbnQzMiQwIiwiZWludDY0JDAiLCJlbmF0aXZlaW50JDAiLCJlYm9vbCQwIiwiZXZhciQwIiwicGludCQwIiwicGNoYXIkMCIsInBzdHJpbmckMCIsInBmbG9hdCQwIiwicGludDMyJDAiLCJwaW50NjQkMCIsInBuYXRpdmVpbnQkMCIsInBib29sJDAiLCJwdmFyJDAiLCJldW5pdCQwIiwicHVuaXQkMCIsImVhcHBseSQwIiwiZWFic3RyYWN0JDAiLCJlc2VxdWVuY2UkMCIsImVsaXN0JDAiLCJwbGlzdCQwIiwidHlwZV9jb25zdHJfY29udiQwIiwidW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYkMCIsImdldCIsInNraXAiLCJza2lwJDAiLCJzdGFjayIsImxlbiIsInBvcyIsInBvcyQwIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwic3VnZ2VzdGlvbnMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJhbGxvd2xpc3QiLCJrZXkiLCJvdGhlcl9jb250ZXh0cyIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHIiLCJhdHRyaWJ1dGVzX2Vycm9ycyIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJnZXRfcHN0cl9ldmFsIiwic3QiLCJnZXRfcHN0cl9leHRlbnNpb24iLCJnZXRfcHNpZ19leHRlbnNpb24iLCJnZXRfYXR0cmlidXRlcyIsInNldF9hdHRyaWJ1dGVzIiwiYXR0cnMiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJwYXR0ZXJuIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRycyQwIiwiYXR0ciQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJtYWluX21vZHVsZV9uYW1lIiwiZW5jbG9zaW5nX21vZHVsZSIsImVuY2xvc2luZ192YWx1ZSIsInN1Ym1vZHVsZV9wYXRoIiwibG9jYXRlZCIsImZ1bGx5X3F1YWxpZmllZF9wYXRoIiwidmFsdWUkMCIsImVudGVyX2V4cHIiLCJlbnRlcl9tb2R1bGUiLCJtb2R1bGVfbmFtZSIsImVudGVyX3ZhbHVlIiwidmFsdWVfbmFtZSIsInRvX3N0cmluZ19wYXRoIiwid2l0aF9zdHJpbmdfcGF0aCIsInRvb2xfbmFtZSIsImlucHV0X25hbWUiLCJjb2RlX3BhdGgiLCJleHRlbnNpb25fcG9pbnRfbG9jIiwiYmFzZSIsImNvZGVfcGF0aCQwIiwiaW5wdXRfbmFtZSQwIiwidG9vbF9uYW1lJDAiLCJ3aXRoX2xvY19hbmRfcGF0aCIsImN0eHQiLCJtYWtlJDAiLCJkZXJpdmVkX2l0ZW1fbG9jIiwiaW5saW5lIiwiY29kZV9wYXRoJDEiLCJpbnB1dF9uYW1lJDEiLCJ0b29sX25hbWUkMSIsIndpdGhfbG9jX2FuZF9wYXRoJDAiLCJlbnRlciIsImVudGVyX29wdCIsIm5hbWVfb3B0IiwibWIiLCJtZCIsIm10ZCIsInZhcl9uYW1lc19vZiIsImVjX2VudGVyX21vZHVsZV9vcHQiLCJkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyIsImRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiIsImRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyIsImRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpbyIsImRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYSIsImRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIiwidGFnIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2Rlc2MiLCJ3aXRoX3ZhbHVlIiwiY3R4dCQwIiwibW9kdWxlX2V4cHIiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJhcmckMCIsInNoaWZ0IiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyIsInZhbHMkMCIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwid2l0aF9jb250ZXh0Iiwib3B0aW9uIiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwibW9kdWxlX3R5cGUiLCJzaWduYXR1cmVfaXRlbSIsInN0cnVjdHVyZV9pdGVtIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJwb3MkMSIsImxhc3RfaXNfdGV4dCQxIiwicG9zJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzIiwidG1wX2ZuIiwic2FuaXRpemUiLCJiaW5kaW5ncyIsIkFzdCIsInF1b3RlIiwicXVvdGVkX2V4cHIkMCIsImJpbmRpbmdfZXhwciQwIiwiYmluZGluZ19leHByIiwicXVvdGVkX2V4cHIiLCJiaW5kaW5nIiwibWtfYXR0cl9ub2xvYyIsImhpZGVfYXR0cmlidXRlIiwiZm9jdXNfYXR0cmlidXRlIiwiaGlkZV9wYXR0ZXJuIiwiZm9jdXNfcGF0dGVybiIsImhpZGVfZXhwcmVzc2lvbiIsImZvY3VzX2V4cHJlc3Npb24iLCJlbXB0eSIsInJhbmdlcyIsIm5vZGVfbG9jIiwibm9kZV9uYW1lIiwieF9sb2MiLCJ4X25hbWUiLCJwMiQwIiwicDEkMCIsImluc2VydCIsImFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IiwiZmlsZSIsInNhbWVfZmlsZV9zb19mYXIiLCJzaG91bGRfaWdub3JlIiwib3JpZ19mbmFtZSIsImV4dHJhY3RfY29uc3RyYWludCIsImRvX2NoZWNrIiwiY2hpbGRyZW5zX2xvY3MiLCJzaWJsaW5nc19sb2NzIiwibWF4X3BvcyQwIiwibWluX3BvcyQwIiwiY2hpbGRfbG9jIiwiY2hpbGRfbmFtZSIsImwyIiwibDEiLCJ5cyIsInlzJDAiLCJ4cyQwIiwiZW5mb3JjZV9pbnZhcmlhbnRzIiwic2libGluZ3MiLCJjdGUiLCJjdHAiLCJvdXRtb3N0X2xvYyIsImluaXRpYWxfcmVzJDAiLCJyZXMkMSIsImluaXRpYWxfcmVzIiwicmVzJDAiLCJjaGlsZHNfbG9jcyIsImF0dHJzX2xvY3MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImV4cHJfbyIsImxhYmVscyIsImFjYyQyIiwib3BuIiwiZV9sb2MiLCJjZSIsIm9kIiwiYWNjJDMiLCJhY2MkNCIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50IiwiYWxpYXNlcyIsInJ1bGVzJDAiLCJpbXBsJDAiLCJpbnRmJDAiLCJwcmVwcm9jZXNzX2ltcGwkMCIsInByZXByb2Nlc3NfaW50ZiQwIiwiY3QkMCIsImxvY19vZl9saXN0IiwibCQyIiwiZmlyc3QiLCJtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIiwiZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIiwid2hvbGVfbG9jIiwiZm9vdGVyIiwiaGVhZGVyIiwibG9jX2hlYWRlciIsImxvY19mb290ZXIiLCJtYXBfaW1wbCIsInN0X3dpdGhfYXR0cnMiLCJtYXBfaW50ZiIsInNnX3dpdGhfYXR0cnMiLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18iLCJhZGRfY3R4dF9hcmciLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiQwIiwibGludF9pbXBsJDAiLCJsaW50X2ludGYkMCIsImVuY2xvc2VfaW1wbCQwIiwiZW5jbG9zZV9pbnRmJDAiLCJyZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfJDAiLCJnZXRfd2hvbGVfYXN0X3Bhc3NlcyIsImN0cyIsImFmdF9pIiwiYmVmX2kiLCJyZWR1Y2VkX3QiLCJpbnN0ciIsInRyYW5zZiIsInRyYW5zZiQwIiwidHJhbnNmb3JtcyIsImFmdGVyX2luc3RycyIsImJlZm9yZV9pbnN0cnMiLCJwcmVwcm9jZXNzIiwibGludGVycyIsImdldF9lbmNsb3NlcnMiLCJpbXBsX2VuY2xvc2VycyIsImludGZfZW5jbG9zZXJzIiwibWVyZ2VfZW5jbG9zZXIiLCJlbmNsb3NlcnMiLCJmb290ZXJzIiwiaGVhZGVycyIsImhlYWRlcnMkMCIsImZvb3RlcnMkMCIsImFwcGx5X3RyYW5zZm9ybXMiLCJsaW50X2ZpZWxkIiwiZHJvcHBlZF9zb19mYXIiLCJsaW50X2Vycm9ycyIsIm9sZF9kcm9wcGVkIiwibGludF9lcnJvcnMkMCIsImVycm9ycyQxIiwibW9yZV9lcnJvcnMiLCJuZXdfZHJvcHBlZCIsInByaW50X2RpZmYiLCJ3aGF0IiwiZGlmZiIsImRyb3BwZWQiLCJlcnJvcl90b19leHRlbnNpb24iLCJleHQkMCIsInNvcnRfZXJyb3JzX2J5X2xvYyIsImVycm9yJDAiLCJtYXBfc3RydWN0dXJlX2dlbiIsIndpdGhfZXJyb3JzIiwic29ydGVkIiwic3QkMSIsInVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyIsInVudXNlZF9leHRlbnNpb25fZXJyb3JzIiwibm90X3NlZW5fZXJyb3JzIiwibWFwX3NpZ25hdHVyZV9nZW4iLCJzZyQxIiwibWFwX3NpZ25hdHVyZSIsInZlcnNpb25lZF9lcnJvcmYiLCJpbnB1dF9maWxlX25hbWUiLCJyZW1vdmVfbm9fZXJyb3IiLCJuZXdfZm4iLCJvbGRfZm4iLCJyZWxvY2F0ZV9tYXBwZXIiLCJzZXRfaW5wdXRfbmFtZSIsImV4dHJhY3RfY29va2llcyIsInByZWZpeCQxIiwicHJlZml4JDIiLCJjb3JyZWN0aW9ucyIsImFkZF90b19saXN0IiwicmVnaXN0ZXJfY29ycmVjdGlvbiIsInByb2Nlc3NfZmlsZV9ob29rcyIsInJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIiwiYWxsJDAiLCJwcm9jZXNzX2FzdCIsIm91dHB1dF9tb2RlIiwic2V0X2lucHV0Iiwic2V0X2tpbmQiLCJzZXRfb3V0cHV0X21vZGUiLCJtb2RlIiwibWF0Y2giLCJhcmdfb2Zfb3V0cHV0X21vZGUiLCJwYXJzZV9hcHBseV9saXN0IiwibWFzayIsImhhbmRsZV9hcHBseSIsImhhbmRsZV9kb250X2FwcGx5IiwiaW50ZXJwcmV0X21hc2siLCJzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSIsImlzX2NhbmRpZGF0ZSIsIm5hbWVzJDAiLCJpc19zZWxlY3RlZCIsInNldF9jb29raWUiLCJzaGFyZWRfYXJncyIsImFzX3BwIiwic3RhbmRhbG9uZV9hcmdzIiwiZ2V0X2FyZ3MiLCJzdGFuZGFsb25lX2FyZ3MkMCIsInN0YW5kYWxvbmVfbWFpbiIsInVzYWdlIiwicmVsb2NhdGUiLCJvdXRwdXQkMCIsImVtYmVkX2Vycm9ycyQwIiwib3V0cHV0X21vZGUkMCIsInJlcGxhY2VtZW50cyIsImhvb2skMCIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyJDAiLCJhc3RfaW5wdXRfbmFtZSIsImFzdF9raW5kIiwiZmFsbF9iYWNrX3ZlcnNpb24iLCJ1bmtub3duX21hZ2ljIiwiZmFsbF9iYWNrX3ZlcnNpb24kMCIsInRtcGZpbGUiLCJmYWlsZWRfY29tbWFuZCIsInByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIiwiaW5wdXRfZm5hbWUiLCJpbnB1dF92ZXJzaW9uJDAiLCJpbnB1dF92ZXJzaW9uJDEiLCJpbnB1dF92ZXJzaW9uJDIiLCJtZXRhZGF0YSIsImlucHV0X2NvbnRlbnRzIiwidGVzdCIsIm1hZ2ljX251bWJlciIsImNvcnJlY3RlZCIsImNvcnJlY3Rpb25zJDAiLCJtaXNtYXRjaGVzX2ZvdW5kIiwibnVsbF9hc3QiLCJwYXJzZV9pbnB1dCIsInBhc3NlZF9pbl9hcmdzIiwidmFsaWRfYXJncyIsImluY29ycmVjdF9pbnB1dF9tc2ciLCJtc2ckMCIsInJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiIsImZsYWdzX2FuZF9wcm9nX25hbWUiLCJpbnB1dF9mbiIsIm91dHB1dF9mbiIsInByb2dfbmFtZV9hbmRfZmxhZ3MiLCJhc3QkNCIsImFzdCQzIiwic3RhbmRhbG9uZSIsImFyZ3YiLCJydW5fYXNfcHB4X3Jld3JpdGVyIiwicHJldHR5JDAiLCJlbmFibGVfY2hlY2tzIiwiZW5hYmxlX2xvY2F0aW9uX2NoZWNrIiwiZGlzYWJsZV9sb2NhdGlvbl9jaGVjayIsIm1hcF9zdHJ1Y3R1cmUiLCJ2YXIkMCIsInZhcnNfb2YiLCJpZ24iLCJhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzIiwibXMiLCJmcCIsImJpbmRzX21vZHVsZV9uYW1lcyIsIndhcm5pbmdzIiwiZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpIiwia2VlcF93MzJfaW1wbCIsImtlZXBfdzMyX2ludGYiLCJrZWVwX3czMl9zcGVjIiwiY29udl93MzJfc3BlYyIsImtlZXBfdzMyX2ltcGwkMCIsImtlZXBfdzYwX2ltcGwiLCJrZWVwX3c2MF9pbnRmIiwia2VlcF93NjBfc3BlYyIsImFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJwYXJhbSIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJzcGVsbGNoZWNrX21zZyIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImxfZXJyIiwiYWN0dWFsX2Rlcml2ZXJfbmFtZSIsImR1cF9lcnJvciIsImRlcCIsImRlcF9uYW1lIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJkZWZhdWx0JDAiLCJ4IiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJ2YXJzIiwiaSIsImJpbmRpbmdzIiwidmFyJDAiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ2YXJzJDAiLCJ0eHQiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsImJvZHkkMCIsInRwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJpbnRlcm5hbCIsIm4iLCJhcmdzJDAiLCJhcmciLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJmaWVsZF9yZWZzIiwiaW5pdCIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9rZXlzIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwiZSIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJ0MSIsImFjYyQwIiwiaSQwIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJ0MTMiLCJjYXN0IiwidDE0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwibm9faGFuZGxlciIsImhhbmRsZXIiLCJyZXMiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJtYWtlIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwidDQ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwieCQxIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJhIiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwidWludDgiLCJvZl9hcnJheUJ1ZmZlciQwIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJiIiwiZmlsZW5hbWUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwibmFtZSQ1NiIsIm5hbWUkNTUiLCJuYW1lJDU0IiwibmFtZSQ1MyIsIm5hbWUkNTIiLCJuYW1lJDUxIiwibmFtZSQ1MCIsIm5hbWUkNDkiLCJuYW1lJDQ4IiwibmFtZSQ0NyIsIm5hbWUkNDYiLCJuYW1lJDQ1IiwibmFtZSQ0NCIsIm5hbWUkNDMiLCJuYW1lJDQyIiwibmFtZSQ0MSIsIm5hbWUkNDAiLCJuYW1lJDM5IiwibmFtZSQzOCIsIm5hbWUkMzciLCJuYW1lJDM2IiwibmFtZSQzNSIsIm5hbWUkMzQiLCJuYW1lJDMzIiwibmFtZSQzMiIsIm5hbWUkMzEiLCJuYW1lJDMwIiwibmFtZSQyOSIsIm5hbWUkMjgiLCJuYW1lJDI3IiwibmFtZSQyNiIsIm5hbWUkMjUiLCJuYW1lJDI0IiwibmFtZSQyMyIsIm5hbWUkMjIiLCJuYW1lJDIxIiwibmFtZSQyMCIsIm5hbWUkMTkiLCJuYW1lJDE4IiwibmFtZSQxNyIsIm5hbWUkMTYiLCJuYW1lJDE1IiwibmFtZSQxNCIsIm5hbWUkMTMiLCJuYW1lJDEyIiwibmFtZSQxMSIsIm5hbWUkMTAiLCJuYW1lJDkiLCJuYW1lJDgiLCJuYW1lJDciLCJuYW1lJDYiLCJuYW1lJDUiLCJuYW1lJDQiLCJuYW1lJDMiLCJuYW1lJDIiLCJuYW1lJDEiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm8iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZG9jIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJvZl9ldmVudCIsInZhbHVlIiwidmFsdWUkMyIsInZhbHVlJDIiLCJ2YWx1ZSQxIiwidmFsdWUkMCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVxIiwiYyIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZ2V0X2VsZW1lbnRfY29udGVudCIsImZpbGUiLCJmb3JtX2VsZW1lbnRzIiwiaSQxIiwidDMxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwibGlzdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsInRpbWVvdXQiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidDE2IiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwid2l0aF9wbHVzIiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsIm4iLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsInQzIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwYXRoX3N0ciIsInNzbCIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJvYnNlcnZlIiwiYm94IiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwidDEyIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDAiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsInRvX2FycmF5ZiIsImYiLCJhIiwib2ZfYXJyYXlmIiwidG9fbGlzdCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdGYiLCJvZl9saXN0ZiIsIm9wdGRlZiIsIngiLCJ0b19vcHRkZWYiLCJ4JDAiLCJ1bm9wdGRlZl9mIiwiZGVmIiwidW5vcHRkZWYiLCJjb252ZGVmIiwidG9fb3B0Iiwib3B0IiwiY29udm9wdCIsImpzX2xvZyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwiYXNzaWduIiwiYXNzaWduX2xpc3QiLCJyZW1vdmVfdW5kZWZpbmVkIiwibyIsImsiLCJjcmVhdGUiLCJhZGQiLCJ2IiwiYWRkX2xpc3QiLCJhZGRfbGlzdGYiLCJtYWtlIiwibWFrZWYiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwianRoZW4wIiwiZXJyb3IiLCJleG4kMCIsImVmIiwiZXJyb3IkMCIsImp0aGVuIiwianRoZW4wX29wdCIsInByb20iLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibG9nX3N0cjIiLCJzMSIsInMyIiwibG9nX3N0cjMiLCJzMyIsImRlYnVnIiwiZGVidWcyIiwiZGVidWczIiwiZGVidWdfc3RyIiwiZGVidWdfc3RyMiIsImRlYnVnX3N0cjMiLCJ3YXJuIiwid2FybjIiLCJ3YXJuMyIsIndhcm5fc3RyIiwid2Fybl9zdHIyIiwid2Fybl9zdHIzIiwiZXJyb3IyIiwiZXJyb3IzIiwiZXJyb3Jfc3RyIiwiZXJyb3Jfc3RyMiIsImVycm9yX3N0cjMiLCJiaWdJbnQiLCJvZl9zdHJpbmciLCJvZl9pbnQiLCJpIiwib2ZfaW50NjQiLCJvZl9uYXRpdmUiLCJvZl9mbG9hdCIsInRvX2xvY2FsZV9zdHJpbmciLCJvcHRpb25zIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsImxpc3RlbiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwiY3JlYXRlIiwic3RvcmUiLCJhZGQiLCJrZXkiLCJ4IiwicHV0IiwicmFuZ2UiLCJvbG93ZXIiLCJvdXBwZXIiLCJsb3dlciIsInVwcGVyIiwidXBwZXIkMSIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY291bnQiLCJrIiwiZ2V0Iiwib2ZfanMiLCJqcyIsImpzJDAiLCJnZXRfYWxsIiwiZ2V0X2tleSIsImdldF9hbGxfa2V5cyIsImRlbGV0ZSQwIiwiaXRlciIsImRpcmVjdGlvbiIsImMiLCJmb2xkIiwic3RhcnQiLCJhY2MiLCJjYWxsYmFjayQwIiwiaXRlcl9rZXlzIiwiZm9sZF9rZXlzIiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4IiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJmaWxlIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImJ1ZmZlciIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJhcHBlbmQiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMTk0IiwiZXJyb3Jfc291cmNlXzI2MyIsImVycm9yX3NvdXJjZV8yNzUiLCJlcnJvcl9zb3VyY2VfMzE3IiwiZXJyb3Jfc291cmNlXzQxNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVxdWFsIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXF1YWwkMCIsImV2YWxfZmFpbCIsImxvYyIsImZtdCIsInMiLCJjdXN0b21fcHJpbnRmXzAwMSIsImVxdWFsX29wdGlvbiIsImEiLCJiIiwieSIsIngiLCJjb21wYXJlJDAiLCJjbXBfYSIsImFfMDAyIiwiYl8wMDMiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJuIiwic2V4cF9vZl90JDEiLCJvZl9hXzAxOSIsInNvcnRlZF8wMjEiLCJhcmdfMDIyIiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJibmRzXzAyMCIsImNyZWF0ZSIsImVxIiwieHMkMSIsInNvcnRlZCIsInMyIiwiczEiLCJ4cyQwIiwibGFzdF92YWx1ZSQxIiwibGFzdF9rZXkkMSIsImFjYyIsImxhc3Rfa2V5IiwibGFzdF92YWx1ZSIsInhzIiwibGFzdF92YWx1ZSQwIiwibGFzdF9rZXkkMCIsInNvcnRlZCQwIiwiZXhwb3NlIiwidCIsIm1hcCIsImYiLCJ2IiwiayIsInRvX21kNSIsIm9mX21kNSIsInNleHBfb2ZfdCQyIiwidF9vZl9zZXhwJDEiLCJ1dWlkIiwidSIsImludCQwIiwicGFpciIsImxpc3QiLCJsIiwiY29uc3RydWN0b3IiLCJzZXhwX29mX3QkMyIsIm9mX2FfMDk2IiwiYXJnMV8wOTgiLCJhcmcwXzA5NyIsInJlczBfMDk5IiwicmVzMV8xMDAiLCJhcmcxXzEwMiIsImFyZzBfMTAxIiwicmVzMF8xMDMiLCJyZXMxXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJhcmcwXzExMSIsInJlczBfMTEyIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5IiwicmVzMV8xMTAiLCJhcmcwXzExNyIsInJlczBfMTE4IiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiYXJnMV8xMjIiLCJhcmcwXzEyMSIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJhcmcxXzEyNiIsImFyZzBfMTI1IiwicmVzMF8xMjciLCJyZXMxXzEyOCIsImFyZzBfMTI5IiwicmVzMF8xMzAiLCJjb21wYXJlJDIiLCJhXzEzMiIsImJfMTMzIiwiYV8xMzQiLCJiXzEzNyIsImJfMTM1IiwiYV8xMzYiLCJhXzE0MCIsImFfMTM4IiwiYl8xNDEiLCJiXzEzOSIsIm4kMCIsImFfMTQyIiwiYl8xNDMiLCJhXzE0NCIsImJfMTQ1IiwiYV8xNDYiLCJiXzE0NyIsImFfMTQ4IiwiYl8xNDkiLCJhXzE1MCIsImJfMTUxIiwidF8xNTMiLCJ0XzE1MiIsInRfMTU1IiwidF8xNTQiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsInRfMTYxIiwidF8xNjAiLCJ0XzE2MyIsInRfMTYyIiwiYV8xNjQiLCJiXzE2NSIsImFfMTY2IiwiYl8xNjciLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsImFfMTc0IiwiYV8xNzIiLCJiXzE3NSIsImJfMTczIiwibiQxIiwiYV8xNzYiLCJiXzE3NyIsImFfMTgwIiwiYV8xNzgiLCJiXzE4MSIsImJfMTc5IiwibiQyIiwiYV8xODIiLCJiXzE4MyIsImFfMTg0IiwiYl8xODUiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJ0b19kaWdlc3QiLCJ0b19kaWdlc3QkMCIsIngkMiIsImVxdWFsJDEiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTg2IiwiYl8xODciLCJiXzE4OSIsImFfMTg4IiwiYV8xOTAiLCJiXzE5MSIsInNleHBfb2ZfdDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkNCIsIm9mX3N0cmluZyQxIiwidG9fc3RyaW5nJDIiLCJzeW1ib2wiLCJjb21wYXJlJDMiLCJlcXVhbCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkNSIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDMiLCJjb21wYXJhdG9yIiwiZXF1YWwkMyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ2IiwiY3JlYXRlJDMiLCJ0cmlwcyIsImdpZCIsIm1lbWJlcnMiLCJ2cyIsImxvb2t1cCIsImciLCJjdXN0b21fcHJpbnRmXzM0NSIsInNjaGVtZSIsImVxdWFsJDUiLCJhXzM0NiIsImJfMzQ3IiwiYV8zNDYkMCIsImJfMzQ3JDAiLCJhXzM0OCIsImJfMzUxIiwiYl8zNDkiLCJhXzM1MCIsImFfMzU0IiwiYV8zNTIiLCJiXzM1NSIsImJfMzUzIiwiYV8zNTYiLCJiXzM1NyIsImFfMzU4IiwiYl8zNTkiLCJhXzM2MCIsImJfMzYxIiwidF8zNjMiLCJ0XzM2MiIsInRfMzY1IiwidF8zNjQiLCJhXzM2NiIsImJfMzY3IiwiYV8zNjgiLCJiXzM2OSIsInRfMzcxIiwidF8zNzAiLCJ0XzM3MyIsInRfMzcyIiwiYV8zNzQiLCJiXzM3NSIsImFfMzc2IiwiYl8zNzciLCJhXzM3OCIsImJfMzc5IiwiYV8zODAiLCJiXzM4MSIsInRfMzgzIiwidF8zODIiLCJ0XzM4NSIsInRfMzg0IiwiYV8zODYiLCJiXzM4NyIsInJpZ2h0XzIzOCIsImxlZnRfMjM3IiwidF8yNDAiLCJ0XzIzOSIsInRfMjQyIiwidF8yNDEiLCJhXzI0MyIsImJfMjQ0IiwicmlnaHRfMjQ2IiwibGVmdF8yNDUiLCJ0XzI0OCIsInRfMjQ3IiwidF8yNTAiLCJ0XzI0OSIsImFfMzkwIiwiYl8zOTEiLCJ0XzM5MyIsInRfMzkyIiwidF8zOTUiLCJ0XzM5NCIsImFfMzk4IiwiYV8zOTYiLCJiXzM5OSIsImJfMzk3IiwiYV80MDAiLCJiXzQwMSIsImFfNDA2IiwiYV80MDQiLCJhXzMwMSIsImJfNDA3IiwiYl80MDUiLCJiXzQwMyIsImFfMzAzIiwiYl8zMDQiLCJ0XzMwNiIsInRfMzA1IiwidF8zMDgiLCJ0XzMwNyIsInRfMzEwIiwidF8zMDkiLCJ0XzMxMiIsInRfMzExIiwiYV8zMTMiLCJiXzMxNCIsImFfNDEwIiwiYl80MTEiLCJ0X29mX3NleHAkNSIsInNleHBfNDE2IiwidGFnXzQxNyIsInNleHBfYXJnc180MTgiLCJhcmcxXzQyMCIsImFyZzBfNDE5IiwicmVzMF80MjEiLCJyZXMxXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcxXzQyNyIsImFyZzBfNDI2IiwicmVzMF80MjgiLCJyZXMxXzQyOSIsInNleHBfYXJnc180NTciLCJhcmcwXzQ2MyIsImFyZzFfNDU5IiwiYXJnMF80NTgiLCJyZXMwXzQ2MCIsInJlczFfNDYxIiwic2V4cF8yNTUiLCJhdG9tXzI1MyIsInNleHBfYXJnc18yNTYiLCJhdG9tXzI1MyQwIiwiYXJnMF8yNjQiLCJhcmcxXzI1OSIsImFyZzBfMjU4IiwicmVzMF8yNjAiLCJyZXMxXzI2MSIsInJlczBfMjY1IiwiYXJnMF8yNzIiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNjkiLCJyZXMxXzI3MCIsInJlczBfMjczIiwicmVzMF80NjQiLCJzZXhwX2FyZ3NfNDc3IiwiYXJnMV80NzkiLCJhcmcwXzQ3OCIsInJlczBfNDgwIiwicmVzMV80ODEiLCJzZXhwX2FyZ3NfNDMyIiwiYXJnMF80MzgiLCJyZXMwXzQzOSIsInNleHBfNDM3IiwiYXJnMV80MzQiLCJhcmcwXzQzMyIsInJlczBfNDM1IiwicmVzMV80MzYiLCJzZXhwX2FyZ3NfNDg0IiwiYXJnMl80ODciLCJhcmcxXzQ4NiIsImFyZzBfNDg1Iiwic2V4cF8zMjciLCJhcmcxXzMyNCIsImFyZzBfMzIzIiwicmVzMF8zMjUiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2IiwicmVzMF80ODgiLCJyZXMxXzQ4OSIsInJlczJfNDkwIiwic2V4cF9hcmdzXzQ1MiIsImFyZzBfNDUzIiwicmVzMF80NTQiLCJzZXhwX2FyZ3NfNDY3IiwiYXJnMF80NzMiLCJhcmcxXzQ2OSIsImFyZzBfNDY4IiwicmVzMF80NzAiLCJyZXMxXzQ3MSIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0MiIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwXzQ0NyIsImFyZzFfNDQ0IiwiYXJnMF80NDMiLCJyZXMwXzQ0NSIsInJlczFfNDQ2Iiwic2V4cF9vZl90JDciLCJhcmcxXzQ5MiIsImFyZzBfNDkxIiwicmVzMF80OTMiLCJyZXMxXzQ5NCIsImFyZzFfNDk2IiwiYXJnMF80OTUiLCJyZXMwXzQ5NyIsInJlczFfNDk4IiwiYXJnMF81MDMiLCJyZXMwXzUwNCIsImFyZzFfNTAwIiwiYXJnMF80OTkiLCJyZXMwXzUwMSIsInJlczFfNTAyIiwiYXJnMF81MDkiLCJyZXMwXzUxMCIsImFyZzFfNTA2IiwiYXJnMF81MDUiLCJyZXMwXzUwNyIsInJlczFfNTA4IiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsImFyZzBfNTE3IiwiYXJnMV81MTQiLCJhcmcwXzUxMyIsInJlczBfNTE1IiwicmVzMV81MTYiLCJ2XzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwidl8yODIiLCJhcmcxXzI4NCIsImFyZzBfMjgzIiwicmVzMF8yODUiLCJyZXMxXzI4NiIsInJlczBfNTE4IiwiYXJnMF81MjMiLCJhcmcxXzUyMCIsImFyZzBfNTE5IiwicmVzMF81MjEiLCJyZXMxXzUyMiIsInJlczBfNTI0IiwiYXJnMV81MjYiLCJhcmcwXzUyNSIsInJlczBfNTI3IiwicmVzMV81MjgiLCJhcmcyXzUzMSIsImFyZzFfNTMwIiwiYXJnMF81MjkiLCJtZW1iZXJzXzMzNSIsImxvY18zMzMiLCJnaWRfMzMxIiwiYXJnXzMzNiIsImFyZzFfMzQyIiwiYXJnMF8zNDEiLCJyZXMwXzM0MyIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzMzOSIsInJlczFfMzQwIiwicmVzMV8zNDQiLCJibmRzXzMzMCIsImFyZ18zMzQiLCJibmRzXzMzMCQwIiwiYXJnXzMzMiIsImJuZHNfMzMwJDEiLCJyZXMwXzUzMiIsInJlczFfNTMzIiwicmVzMl81MzQiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImlzX2N5Y2xpYyIsImlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nXyIsImxvb2t1cCQwIiwiYV81MzUiLCJiXzUzNiIsInRfNTM4IiwidF81MzciLCJ0XzU0MCIsInRfNTM5IiwiYXJnMV81NDIiLCJhcmcwXzU0MSIsInJlczBfNTQzIiwicmVzMV81NDQiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl81NDUiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJzdGFibGVfd2l0bmVzc19hcnJheSIsInN0YWJsZV93aXRuZXNzX2xhenlfdCIsInN0YWJsZV93aXRuZXNzX2xpc3QiLCJzdGFibGVfd2l0bmVzc19vcHRpb24iLCJzdGFibGVfd2l0bmVzc19yZWYiLCJvZl9zZXJpYWxpemFibGUiLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfYXJyYXkiLCJhciIsImVsc19wb3NfcmVmIiwiaSIsImJpbl93cml0ZV9oYXNodGJsIiwiYmluX3dyaXRlX2tleSIsImJpbl93cml0ZV92YWwiLCJwbGVuIiwiY250X3JlZiIsImNvbGxfaHRibCIsInJlc19wb3MiLCJiaW5fd3JpdGVfZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVfZmxvYXQ2NF92ZWMiLCJiaW5fd3JpdGVfZmxvYXQzMl9tYXQiLCJtIiwibGVuMSIsImxlbjIiLCJwb3MkMSIsImJpbl93cml0ZV9mbG9hdDY0X21hdCIsImJpbl93cml0ZV9iaWdzdHJpbmciLCJzIiwiYmluX3dyaXRlX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlX2ludF84Yml0IiwiYmluX3dyaXRlX2ludF8xNmJpdCIsImJpbl93cml0ZV9pbnRfMzJiaXQiLCJiaW5fd3JpdGVfaW50XzY0Yml0IiwiYmluX3dyaXRlX2ludDY0X2JpdHMiLCJiaW5fd3JpdGVfbmV0d29yazE2X2ludCIsImJpbl93cml0ZV9uZXR3b3JrMzJfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZV9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfYXJyYXkiLCJlbCQxIiwibWF5YmVfZmxvYXQiLCJlbCQwIiwiZmlyc3QiLCJyZXMiLCJiaW5fcmVhZF9oYXNodGJsIiwiYmluX3JlYWRfa2V5IiwiYmluX3JlYWRfdmFsIiwicmVhZF9rdl9wYWlyIiwiZWxzIiwiYmluX3JlYWRfZmxvYXQzMl92ZWMiLCJ2ZWMiLCJiaW5fcmVhZF9mbG9hdDY0X3ZlYyIsImJpbl9yZWFkX2Zsb2F0MzJfbWF0IiwibWF0IiwiYmluX3JlYWRfZmxvYXQ2NF9tYXQiLCJiaW5fcmVhZF9iaWdzdHJpbmciLCJiaW5fcmVhZF92YXJpYW50X2ludCIsImJpbl9yZWFkX2ludF84Yml0IiwiYmluX3JlYWRfaW50XzE2Yml0IiwiYmluX3JlYWRfaW50XzMyYml0IiwiYmluX3JlYWRfaW50XzY0Yml0IiwiYmluX3JlYWRfaW50NjRfYml0cyIsImJpbl9yZWFkX25ldHdvcmsxNl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRfbmV0d29yazY0X2ludCIsImJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkX21kNSIsImJpbl9zaGFwZV91bml0IiwiYmluX3NoYXBlX2Jvb2wiLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2hhcGVfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NoYXBlX2ludDYzIiwiYmluX3NoYXBlX2ludDY0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaGFwZV9uYXQwIiwiYmluX3NoYXBlX2RpZ2VzdCIsImJpbl9zaGFwZV9mbG9hdDMyX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDY0X3ZlYyIsImJpbl9zaGFwZV92ZWMiLCJiaW5fc2hhcGVfZmxvYXQzMl9tYXQiLCJiaW5fc2hhcGVfZmxvYXQ2NF9tYXQiLCJiaW5fc2hhcGVfbWF0IiwiYmluX3NoYXBlX2JpZ3N0cmluZyIsImJpbl9zaGFwZV9mbG9hdGFycmF5IiwiYmluX3NoYXBlX3ZhcmlhbnRfaW50IiwiYmluX3NoYXBlX2ludF84Yml0IiwiYmluX3NoYXBlX2ludF8xNmJpdCIsImJpbl9zaGFwZV9pbnRfMzJiaXQiLCJiaW5fc2hhcGVfaW50XzY0Yml0IiwiYmluX3NoYXBlX2ludDY0X2JpdHMiLCJiaW5fc2hhcGVfbmV0d29yazE2X2ludCIsImJpbl9zaGFwZV9uZXR3b3JrMzJfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaGFwZV9uZXR3b3JrNjRfaW50IiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2hhcGVfb3B0aW9uIiwiYmluX3NoYXBlX2xpc3QiLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2hhcGVfaGFzaHRibCIsInkiLCJiaW5fc2hhcGVfbGF6eSIsImJpbl9zaGFwZV9wYWlyIiwiYmluX3NoYXBlX3RyaXBsZSIsInoiLCJiaW5fc2l6ZV91bml0IiwiYmluX3NpemVfYm9vbCIsImJpbl9zaXplX2NoYXIiLCJiaW5fc2l6ZV9tZDUiLCJiaW5fc2l6ZV9pbnRfbmF0MCIsImJpbl9zaXplX2ludF9uZWdhdGl2ZSIsImJpbl9zaXplX2ludCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9pbnQkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfdW5pdCQwIiwiYmluX3NpemVfYm9vbCQwIiwiYmluX3NpemVfY2hhciQwIiwiYmluX3NpemVfaW50JDEiLCJiaW5fc2l6ZV9uYXQwJDAiLCJiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMiLCJzaXplX2xlbiIsImJpbl9zaXplX3N0cmluZyIsImJpbl9zaXplX2J5dGVzIiwiYmluX3NpemVfbWQ1JDEiLCJiaW5fc2l6ZV9mbG9hdCQwIiwiZiIsImJpbl9zaXplX2ludDMyIiwiYmluX3NpemVfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX3JlZiIsImJpbl9zaXplX2xhenlfdCIsImJpbl9zaXplX29wdGlvbiIsImJpbl9zaXplX2ludDMyJDAiLCJiaW5fc2l6ZV9pbnQ2NCQwIiwiYmluX3NpemVfbmF0aXZlaW50IiwiYmluX3NpemVfcmVmJDAiLCJiaW5fc2l6ZV9lbCIsImJpbl9zaXplX2xhenlfdCQwIiwiYmluX3NpemVfb3B0aW9uJDAiLCJiaW5fc2l6ZV9wYWlyJDAiLCJiaW5fc2l6ZV9hIiwiYmluX3NpemVfYiIsImJpbl9zaXplX3RyaXBsZSQwIiwiYmluX3NpemVfYyIsImJpbl9zaXplX2xpc3QiLCJzaXplX2FjYyIsImxlbl9hY2MiLCJsZW5fYWNjJDAiLCJzaXplX2FjYyQwIiwiYmluX3NpemVfZmxvYXRhcnJheSIsImJpbl9zaXplX2FycmF5IiwibGVuJDAiLCJ0b3RhbF9sZW4iLCJ0b3RhbF9sZW5fcmVmIiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfdmFyaWFudF9pbnQiLCJiaW5fcmVhZGVyX3ZhcmlhbnRfaW50IiwiYmluX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlcl9pbnRfOGJpdCIsImJpbl9yZWFkZXJfaW50XzhiaXQiLCJiaW5faW50XzhiaXQiLCJiaW5fd3JpdGVyX2ludF8xNmJpdCIsImJpbl9yZWFkZXJfaW50XzE2Yml0IiwiYmluX2ludF8xNmJpdCIsImJpbl93cml0ZXJfaW50XzMyYml0IiwiYmluX3JlYWRlcl9pbnRfMzJiaXQiLCJiaW5faW50XzMyYml0IiwiYmluX3dyaXRlcl9pbnRfNjRiaXQiLCJiaW5fcmVhZGVyX2ludF82NGJpdCIsImJpbl9pbnRfNjRiaXQiLCJiaW5fd3JpdGVyX2ludDY0X2JpdHMiLCJiaW5fcmVhZGVyX2ludDY0X2JpdHMiLCJiaW5faW50NjRfYml0cyIsImJpbl93cml0ZXJfbmV0d29yazE2X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazE2X2ludCIsImJpbl9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50IiwiYmluX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiIsImJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyIiwiYmluX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZXJfbmV0d29yazY0X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludCIsImJpbl9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQiLCJiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9uZXR3b3JrNjRfaW50NjQiLCJjbnZfd3JpdGVyIiwiY252IiwidHBfY2xhc3MiLCJjbnZfcmVhZGVyIiwidnRhZyIsImZvcl9zaGFwZSIsImZvcl93cml0ZXIiLCJmb3JfcmVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX3dyaXRlX3NpemVfaGVhZGVyIiwiYmluX3JlYWRfc2l6ZV9oZWFkZXIiLCJiaW5fZHVtcCIsIndyaXRlciIsImhlYWRlciIsInBvc19sZW4iLCJ0b3RfbGVuIiwicG9zX2xlbiQwIiwiYnVmJDAiLCJidWYkMSIsImJpbl9yZWFkX3N0cmVhbSIsIm1heF9zaXplIiwicmVhZCIsInJlYWRlciIsIm1heF9zaXplJDAiLCJtc2ciLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsIm1heWJlX2Fubm90YXRlX3NoYXBlIiwibWF5YmVfdXVpZCIsInNoYXBlIiwidXVpZCIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInQiLCJiaW5fd3JpdGVfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fc2l6ZV90JDAiLCJiaW5fd3JpdGVfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaGFwZV9lbCIsImJpbl93cml0ZXIiLCJiaW5fcmVhZGVyIiwidHlwZV9jbGFzcyIsImJpbl9zaGFwZV9lbDEiLCJiaW5fc2hhcGVfZWwyIiwiYmluX3NpemVfZWwxIiwiYmluX3NpemVfZWwyIiwiYmluX3dyaXRlX2VsMSIsImJpbl93cml0ZV9lbDIiLCJiaW5fcmVhZF9lbDEiLCJiaW5fcmVhZF9lbDIiLCJiaW5fd3JpdGVyMSIsImJpbl93cml0ZXIyIiwiYmluX3JlYWRlcjEiLCJiaW5fcmVhZGVyMiIsInR5cGVfY2xhc3MxIiwidHlwZV9jbGFzczIiLCJiaW5fc2hhcGVfZWwzIiwiYmluX3NpemVfZWwzIiwiYmluX3dyaXRlX2VsMyIsImJpbl9yZWFkX2VsMyIsImJpbl93cml0ZXIzIiwiYmluX3JlYWRlcjMiLCJ0eXBlX2NsYXNzMyIsIm1heWJlX2NhbGxlcl9pZGVudGl0eSIsIndpdGhfbW9kdWxlX25hbWUiLCJtb2R1bGVfbmFtZSIsImZ1bmN0aW9uX25hbWUiLCJtb2R1bGVfbmFtZSQwIiwic2l6ZV9yZWYiLCJpZHgiLCJyZXN1bHQiLCJ0MSIsInQyIiwidDMiLCJiaW5fcmVhZF91bml0JDAiLCJ2aW50IiwiYmluX3JlYWRfYm9vbCQwIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRfaW50JDAiLCJiaW5fcmVhZF9mbG9hdCQwIiwiYmluX3JlYWRfZmxvYXRhcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJzdGFibGVfd2l0bmVzcyIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJzZXhwX29mX3QiLCJvZl9hXzAwMyIsInN0YXJ0X2EiLCJlbmRfYSIsIndyaXR0ZW4iLCJleHBlY3RlZF9zaXplIiwib2ZfYmluYWJsZSIsInRvX2JpbmFibGUiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsInRvX29wYXF1ZSIsImJsb2IiLCJvZl9vcGFxdWVfZXhuIiwiY29tcGFyZSQwIiwic2V4cF9vZl90JDAiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwic3RyaW5nX29mX2JpZ3N0cmluZyIsImJpbl9yZWFkX3QkNyIsImJpbl9yZWFkX3QkOCIsInRvX29wYXF1ZSQwIiwiYmluX3dyaXRlcl92Iiwib2Zfb3BhcXVlX2V4biQwIiwiYmluX3JlYWRlcl92IiwiZXJyb3IiLCJjb21wYXJlJDEiLCJzZXhwX29mX3QkMSIsImJpbl9zaXplX3QkNSIsImJpbl9yZWFkX3QkMTEiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRlcl90JDIiLCJwcmVfdGVzdF9ob29rIiwibmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCIsInQiLCJpbml0aWFsIiwiYW1fcnVubmluZ19lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImRpZmZfcGF0aF9wcmVmaXgiLCJkaXNwbGF5ZWRfZGVzY3IiLCJkZXNjciIsImZpbGVuYW1lIiwibGluZSIsInN0YXJ0X3BvcyIsImVuZF9wb3MiLCJkZXNjciQwIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJsIiwiaSIsInRhZyIsInMiLCJzdHIiLCJmaWxlIiwiaW5kZXgiLCJpbmRleCQwIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nIiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiY29tcGxldGVfdGFncyIsInVzZWQiLCJsaW5lX251bWJlcl9vcHQiLCJwb3NpdGlvbl9zdGFydCIsImVuZF9vZl9kZWZfZmlsZW5hbWUiLCJsaW5lX251bWJlciIsImZvdW5kIiwicmVxIiwiZHJvcHBlZCIsImRlc2NyJDEiLCJzdWJzdHJpbmciLCJzaG91bGRfcnVuIiwiZGVzY3IkMiIsImNoIiwicmVzdWx0JDAiLCJjYW1sX3JhbmRvbV9zdGF0ZSIsImJhc2VfcmFuZG9tX3N0YXRlIiwicmVzdWx0IiwiYmFja3RyYWNlJDAiLCJleG5fc3RyIiwic2VwIiwic2V0X2xpYl9hbmRfcGFydGl0aW9uIiwic3RhdGljX2xpYiIsIndoaWNoX3Rlc3RzIiwicmVxdWlyZXNfcGFydGl0aW9uIiwidW5zZXRfbGliIiwidGVzdCIsImIiLCJ0ZXN0X3VuaXQiLCJ0ZXN0X21vZHVsZSIsInBhcnRpYWxfdGFncyIsInByZXYiLCJ4IiwiZSQwIiwiZSIsInN1bW1hcml6ZSIsImsiLCJhY2MiLCJjb3VudCIsImNvdW50X3Rlc3RfbW9kdWxlcyIsInVudXNlZF90ZXN0cyIsImVycm9ycyIsInVzZV9jb2xvciQwIiwiaW5fcGxhY2UkMCIsImRpZmZfY29tbWFuZCQwIiwiZGlmZl9wYXRoX3ByZWZpeCQwIiwic291cmNlX3RyZWVfcm9vdCQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJsaXN0JDAiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxlZnRfY29sdW1uX3dpZHRoIiwid2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwiY29udiIsIngiLCJsaWZ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJ1aWQiLCJuZXh0IiwibmFtZSIsImNvZGUiLCJoYXNoIiwic3RhdGljJDAiLCJjb21wYXJlJDAiLCJrMSIsImsyIiwiY21wIiwiYiQwIiwiYSQwIiwieXMiLCJ5IiwieHMiLCJuIiwiZXF1YWwkMCIsImhhc2gkMCIsInN0YXRpYyQxIiwia2V5IiwidCIsInVpZCQwIiwibmFtZSQwIiwiY3JlYXRlIiwic2FtZSIsIm5tMSIsIm5tMiIsInNhbWVfd2l0bmVzcyIsInNhbWVfd2l0bmVzc19leG4iLCJpbnQkMCIsIm1lbSIsInRhYmxlIiwic2V0IiwiZGF0YSIsImZpbmQiLCJkYXRhJDAiLCJmYWlsIiwidWlkX2EiLCJ1aWRfYiIsIm1zZyIsInQkMCIsIndpdG5lc3MiLCJ0eXBlbmFtZV9vZl90IiwiYyIsImQiLCJlIiwibGFiZWwiLCJhcml0eSIsImFyZ3NfbGFiZWxzIiwiaW5kZXgiLCJvY2FtbF9yZXByIiwidHlpZCIsInRyYXZlcnNlIiwiaW50ZXJuYWxfdXNlX29ubHkiLCJsZW5ndGgiLCJ0YWciLCJpc19wb2x5bW9ycGhpYyIsInZhbHVlIiwiZm9sZCIsImluaXQiLCJmIiwiaW50ZXJuYWxfdXNlX29ubHkkMCIsImxhYmVsJDAiLCJpbmRleCQwIiwiZ2V0IiwiaXNfbXV0YWJsZSIsInR5aWQkMCIsInRyYXZlcnNlJDAiLCJpbnRlcm5hbF91c2Vfb25seSQxIiwidHlwZW5hbWVfb2ZfdCQwIiwibGVuZ3RoJDAiLCJmaWVsZCIsImhhc19kb3VibGVfYXJyYXlfdGFnIiwiY3JlYXRlJDAiLCJmb2xkJDAiLCJpbnRlcm5hbF91c2Vfb25seSQyIiwibmFtZSQxIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwibmFtZSQ1IiwibmFtZSQ2IiwibmFtZSQ3IiwibmFtZSQ4IiwibmFtZSQ5IiwibmFtZSQxMCIsIm5hbWUkMTEiLCJuYW1lJDEyIiwibmFtZSQxMyIsIm5hbWUkMTQiLCJuYW1lJDE1IiwibmFtZSQxNiIsIm5hbWUkMTciLCJuYW1lJDE4IiwibmFtZSQxOSIsInR5cGVuYW1lX29mX2ludCIsInR5cGVuYW1lX29mX2ludDMyIiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9uYXRpdmVpbnQiLCJ0eXBlbmFtZV9vZl9jaGFyIiwidHlwZW5hbWVfb2ZfZmxvYXQiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl91bml0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfZnVuY3Rpb24iLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJyZXAiLCJyZXAkMCIsInJlcCQxIiwicmVwJDIiLCJyZXAkMyIsInJlcCQ0IiwibmFtZSQyMCIsImFyaXR5JDAiLCJjJDAiLCJiJDEiLCJhJDEiLCJkJDAiLCJjJDEiLCJiJDIiLCJhJDIiLCJ0eXBlbmFtZV9vZl90JDEiLCJybmciLCJkb20iLCJyZXAkNSIsInJlcCQ2IiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwicjEiLCJyMiQwIiwicjEkMCIsInIyJDEiLCJ4JDAiLCJyMSQxIiwicjIkMiIsIngkMSIsInIxJDIiLCJyMiQzIiwieCQyIiwicjEkMyIsInIyJDQiLCJ4JDMiLCJybmcxIiwiZG9tMSIsInJuZzIiLCJkb20yIiwidDEkMSIsInQyJDIiLCJiMiIsImEyIiwiYjEiLCJhMSIsImMyIiwiYjIkMCIsImEyJDAiLCJjMSIsImIxJDAiLCJhMSQwIiwiZDIiLCJjMiQwIiwiYjIkMSIsImEyJDEiLCJkMSIsImMxJDAiLCJiMSQxIiwiYTEkMSIsImUyIiwiZDIkMCIsImMyJDEiLCJiMiQyIiwiYTIkMiIsImUxIiwiZDEkMCIsImMxJDEiLCJiMSQyIiwiYTEkMiIsInIxJDQiLCJyMiQ1IiwicjEkNSIsInIyJDYiLCJuYW1lMSIsInIyJDciLCJuYW1lMiIsInIxJDciLCJ4JDQiLCJ0MSQzIiwidDIkMyIsInQyJDQiLCJyMSQ2IiwidDEkMiIsInIyIiwidDIkMSIsInByb29mIiwiaGVhZCIsInQkMSIsInR5cGVyZXBfb2ZfaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2Zfb3B0aW9uIiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9hcnJheSIsInR5cGVyZXBfb2ZfbGF6eV90IiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl90dXBsZTIiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTUiLCJ0eXBlcmVwX29mX2ludDMyIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl90dXBsZTAiLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfaW50NjMiLCJyZXByX29mX3BvbHlfdmFyaWFudCIsInZhcmlhbnQiLCJzaXplIiwicmVwciIsImhhc2hfdmFyaWFudCIsInMiLCJhY2N1IiwiaSIsImRvdWJsZV9hcnJheV92YWx1ZSIsImRvdWJsZSQwIiwic2ltcGxlIiwibWFwX3ZhcmlhbnQiLCJtYXAiLCJ0eXBlbmFtZSIsInBvbHltb3JwaGljIiwidGFncyIsInRhZyQwIiwiZmN0IiwiayIsImF0YWciLCJidGFnIiwibWFwX3JlY29yZCIsInJlY29yZCIsImZpZWxkcyIsImZpZWxkJDAiLCJnZXQkMCIsImFmaWVsZCIsImJmaWVsZCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwic2hhcmVkIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXB1dGF0aW9uIiwiY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UiLCJzaGFyZSIsInJlcXVpcmVkIiwidGFibGUkMCIsImNoZWNrX2RlcGVuZGVuY2llcyIsImltcGxlbWVudHMkMCIsIm1lc3NhZ2UiLCJyZXBsYWNlJDAiLCJtZW0kMCIsInRhYmxlMCIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInRhYmxlNSIsImlzX3JlZ2lzdGVyZWQiLCJpZGVudCIsInVuaXQiLCJyZWdpc3RlcjAiLCJjb21wdXRlIiwicmVnaXN0ZXIxIiwicmVnaXN0ZXIyIiwicmVnaXN0ZXIzIiwicmVnaXN0ZXI0IiwicmVnaXN0ZXI1IiwicmVnaXN0ZXIiLCJ0eXBlcmVwX29mX2EiLCJvZl90eXBlcmVwIiwiY29udGV4dCIsIm1lbW9fdGFibGUiLCJyZXAkMTEiLCJyZXAkMTIiLCJyZXAkMTMiLCJyZXAkMTQiLCJyZXAkMTUiLCJ0dXBsZSIsInJhIiwicmIiLCJyYSQwIiwicmIkMCIsInJjIiwicmEkMSIsInJiJDEiLCJyYyQwIiwicmQiLCJyYSQyIiwicmIkMiIsInJjJDEiLCJyZCQwIiwicmUiLCJjb250ZW50IiwibmFtZWQiLCJjdXN0b20iLCJjdXN0b20kMCIsImN1c3RvbSQxIiwicmVwJDciLCJjdXN0b20kMiIsImN1c3RvbSQzIiwicmVwJDgiLCJjdXN0b20kNCIsImN1c3RvbSQ1IiwicmVwJDkiLCJ0eXBlbmFtZV9vZl90JDIiLCJjdXN0b20kNiIsImN1c3RvbSQ3IiwicmVwJDEwIiwidHlwZW5hbWVfb2ZfdCQzIiwiY3VzdG9tJDgiLCJjdXN0b20kOSIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInR5cGVuYW1lX29mX25hbWVkIiwib2ZfcDEiLCJvZl9wMiIsIm9mX3AzIiwib2ZfcDQiLCJvZl9wNSIsInR5cGVyZXBfb2ZfdCIsImVycm9yX3NvdXJjZV8wMDIiLCJoYXNoX2ZvbGRfdCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiZXF1YWwiLCJyZWxhdGl2ZV90byIsImRpciIsInQiLCJ2IiwiZXhuJDAiLCJleG4iLCJkaXJfb3JfZXJyb3IiLCJpbml0aWFsX2RpciIsInRfb2Zfc2V4cCQwIiwieF8wMDMiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwibGluZV9zdGFydCIsImxpbmVfbnVtYmVyIiwiZmlsZW5hbWUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDEzIiwic3RhcnRfcG9zXzAxMSIsImxpbmVfc3RhcnRfMDA5IiwibGluZV9udW1iZXJfMDA3IiwiZmlsZW5hbWVfMDA1IiwiYXJnXzAxNCIsImJuZHNfMDA0IiwiYXJnXzAxMiIsImJuZHNfMDA0JDAiLCJhcmdfMDEwIiwiYm5kc18wMDQkMSIsImFyZ18wMDgiLCJibmRzXzAwNCQyIiwiYXJnXzAwNiIsImJuZHNfMDA0JDMiLCJjb21wYXJlJDAiLCJhXzAxNSIsImJfMDE2IiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwib2Zfc291cmNlX2NvZGVfcG9zaXRpb24iLCJwb3MiLCJzZXhwX29mX3QkMSIsImNvbXBhcmUkMiIsInRvX3N0cmluZyQwIiwib2Zfc3RyaW5nJDAiLCJzIiwiaSIsIm9mX2FfMDAxIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJjbXBfYSIsImFfMDA3IiwiYl8wMDgiLCJhXzAwOSIsImJfMDEwIiwiYV8wMTEiLCJiXzAxMiIsImFfMDEzIiwiYl8wMTQiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiYW1fcnVubmluZ19leHBlY3RfdGVzdCIsImdldF9jdXJyZW50Iiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0IiwibG9jYXRpb24iLCJwb3MiLCJwcmV2X3BvcyIsInByZXZfcG9zJDAiLCJsZW4iLCJmbHVzaCIsInNhdmVfYW5kX3JldHVybl9vdXRwdXQiLCJpbnN0YW5jZSIsInRlc3RzX3J1biQwIiwiZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIiwicyIsImdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIiwibGFzdF9vZnMiLCJuZXh0X29mcyIsImxvYyIsImFjYyIsIm9mcyIsIm91dHB1dHMiLCJ0cmFpbGluZ19vdXRwdXQiLCJzYXZlX291dHB1dCIsInRyYWlsaW5nIiwiYmxvY2tzIiwicnVuIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4Iiwic2FuaXRpemUiLCJzIiwicnVuIiwiZiIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzIiwidG9jcyQwIiwidG9jIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJnZXRfbWFueSIsInN0YWNrJDAiLCJzdGFjayIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImMkMSIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJjJDIiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsInl5dGFibGVzIiwic2V4cCIsImxleGZ1biIsImxleGJ1ZiIsInNleHBfb3B0Iiwic2V4cHMiLCJyZXZfc2V4cHMiLCJzZXhwc19hYnMiLCJvY2FtbF9sZXhfdGFibGVzIiwiYnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJzY2FuX3N0cmluZyIsImxvY3MiLCJsb2NzJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwibG9jcyQxIiwibG9jcyQyIiwic3RhcnQiLCJnZW5fbG9hZF9zZXhwX2xvYyIsInVuaXQiLCJvZl9pbnRfc3R5bGUiLCJvZl9mbG9hdF9zdHlsZSIsInRvX3N0cmluZyIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsInBwIiwicHBfbWFjaCIsInBwX2h1bV9pbmRlbnQiLCJwcF9odW0iLCJkZWZhdWx0X2luZGVudCIsIm1lc3NhZ2UiLCJjb21wYXJlIiwiZXF1YWwiLCJ0X3NleHBfZ3JhbW1hciIsIndpdGhfbmV3X2J1ZmZlciIsIm9jIiwib3V0cHV0X2h1bSIsIm91dHB1dF9odW1faW5kZW50IiwiaW5kZW50Iiwib3V0cHV0X21hY2giLCJwcm5nIiwidGVtcF9maWxlX25hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2IiwicmFuZF9zdGF0ZSIsInJldCIsInJuZCIsIm9wZW5fdGVtcF9maWxlIiwicGVybSIsImNvdW50ZXIiLCJuYW1lIiwiZSQwIiwiZSIsImNvdW50ZXIkMCIsInNhdmVfb2Zfb3V0cHV0Iiwib3V0cHV0X2Z1bmN0aW9uIiwiZmlsZSIsInRtcF9uYW1lIiwib3V0cHV0X3NleHBfbmwiLCJkb19vdXRwdXQiLCJzYXZlX2h1bSIsInNhdmVfbWFjaCIsIm91dHB1dF9zZXhwc19ubCIsInNhdmVfc2V4cHNfaHVtIiwic2F2ZV9zZXhwc19tYWNoIiwic2Nhbl9zZXhwIiwic2Nhbl9zZXhwX29wdCIsInNjYW5fc2V4cHMiLCJzY2FuX3Jldl9zZXhwcyIsImdldF9tYWluX2J1ZiIsImJ1ZiQwIiwiYnVmJDEiLCJzY2FuX2ZvbGRfc2V4cHMiLCJpbml0IiwibWFpbiIsImFjYyIsImFjYyQwIiwic2Nhbl9pdGVyX3NleHBzIiwic2Nhbl9zZXhwc19jb252IiwiY29sbCIsInNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlIiwiY29udGFpbmluZ19zZXhwIiwibG9jYXRpb24iLCJpbnZhbGlkX3NleHAiLCJleG4iLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJnZXRfc2V4cCIsImdldF9yYW5nZSIsInJhbmdlIiwic2V4cF9vZl9jb252Iiwic2V4cF9vZl9hIiwiYSIsImZpbmRfc2V4cCIsImFubm90X3NleHAiLCJsb29wIiwic3ViX3NleHAiLCJhbm5vdHMiLCJyZXMiLCJleG4kMCIsImludmFsaWRfc2V4cCQwIiwiY3JlYXRlIiwidGV4dF9saW5lIiwidGV4dF9jaGFyIiwiYnVmX3BvcyIsImdsb2JhbF9vZmZzZXQiLCJmYWlsIiwibXNnIiwid2l0aF9idWZfcG9zIiwicGUiLCJwcG9zIiwiYW5ub3RhdGVfc2V4cCIsIml0ZXIiLCJzdGFydF9wb3MkMCIsImFubm90IiwiZW5kX3BvcyQwIiwicmFpc2VfZm91bmQiLCJzdGF0ZSIsInJhaXNlX2ZvdW5kJDAiLCJwb3NpdGlvbnMiLCJwYXJzZV9wb3Nfb2Zfc3RhdGUiLCJydW5fZmVlZF9sb29wIiwic3RhY2siLCJsZW4iLCJzdHIiLCJzdHJfbGVuIiwicG9zX2xlbiIsIm1heF9wb3MiLCJwcmV2aW91c19vZmZzZXQiLCJzdGFjayQwIiwicmVzdWx0Iiwib2Zmc2V0IiwibmV4dF9wb3MiLCJlcnIiLCJwYXJzZV9zdGF0ZSIsInBhcnNlX2Vycm9yIiwidXNlZF9yZWYiLCJwYXJzZV9mdW4iLCJjb250X3N0YXRlIiwicGFyc2UiLCJwYXJzZV9wb3MiLCJsZW4kMCIsInJhaXNlX2ZvdW5kJDEiLCJsZW5ndGgiLCJ1bnNhZmVfZmVlZF9sb29wIiwic3RhY2skMSIsInBvcyQxIiwicGFyc2Vfc3RyIiwicmFpc2VfZm91bmQkMiIsImxlbmd0aCQwIiwidW5zYWZlX2ZlZWRfbG9vcCQwIiwicGFyc2Vfc3RyX2Fubm90IiwicmFpc2VfZm91bmQkMyIsImxlbmd0aCQxIiwidW5zYWZlX2ZlZWRfbG9vcCQxIiwicGFyc2VfYmlnc3RyaW5nIiwicmFpc2VfZm91bmQkNCIsImxlbmd0aCQyIiwidW5zYWZlX2ZlZWRfbG9vcCQyIiwicGFyc2VfYmlnc3RyaW5nX2Fubm90IiwibWtfdGhpc19wYXJzZSIsIm15X3BhcnNlIiwicGFyc2VfcG9zJDAiLCJwYXJzZV9wb3MkMSIsImZlZWRfZW5kX29mX2lucHV0IiwidGhpc19wYXJzZSIsIndzX2J1ZiIsImdlbl9pbnB1dF9zZXhwIiwiaWMiLCJ0aGlzX3BhcnNlJDEiLCJzZXhwJDAiLCJ0aGlzX3BhcnNlJDAiLCJpbnB1dF9zZXhwIiwiZ2VuX2lucHV0X3Jldl9zZXhwcyIsInJldl9zZXhwc19yZWYiLCJidWZfbGVuIiwibGVuJDIiLCJ0aGlzX3BhcnNlJDIiLCJuX3BhcnNlZCIsIm5ld19sZW4iLCJsZW4kMSIsImlucHV0X3Jldl9zZXhwcyIsImlucHV0X3NleHBzIiwib2Zfc3RyaW5nX2JpZ3N0cmluZyIsImxvYyIsImdldF9sZW4iLCJnZXRfc3ViIiwiY29udF9zdGF0ZV9zdHIiLCJvZl9zdHJpbmciLCJvZl9zdHJpbmdfbWFueSIsImdldF9ic3RyX3N1Yl9zdHIiLCJic3RyIiwiaSIsImJzdHJfd3NfYnVmIiwib2ZfYmlnc3RyaW5nIiwiZ2VuX2xvYWRfcmV2X3NleHBzIiwiZXhjJDAiLCJleGMiLCJsb2FkX3Jldl9zZXhwcyIsImxvYWRfc2V4cHMiLCJnZW5fbG9hZF9zZXhwIiwic3RyaWN0IiwidGhpc19wYXJzZSQ0Iiwic2V4cCQxIiwidGhpc19wYXJzZSQzIiwiY29udF9zdGF0ZSQwIiwibG9hZF9zZXhwIiwiZ2V0X3NleHAkMCIsImdldF9yYW5nZSQwIiwic2V4cF9vZl9jb252JDAiLCJmaW5kX3NleHAkMCIsImlucHV0X3Jldl9zZXhwcyQwIiwiaW5wdXRfc2V4cCQwIiwiaW5wdXRfc2V4cHMkMCIsIm9mX3N0cmluZyQwIiwib2ZfYmlnc3RyaW5nJDAiLCJsb2FkX3Jldl9zZXhwcyQwIiwibG9hZF9zZXhwcyQwIiwibG9hZF9zZXhwJDAiLCJjb252IiwiYmFkX3NleHAiLCJiYWRfYW5ub3Rfc2V4cCIsImdldF9jb252X2V4biIsImxpbmUiLCJsb2FkX3NleHBfY29udiIsInN0cmljdCQwIiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzJDAiLCJmb3JnZXRfdG9jcyIsImZvcmdldF90b2MkMCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfb2Zfc2V4cCIsImZsb2F0X3ZlY19vZl9zZXhwIiwiZW1wdHlfZmxvYXRfdmVjIiwiY3JlYXRlX2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdDMyX3ZlYyIsImNyZWF0ZV9mbG9hdDY0X3ZlYyIsImVtcHR5X2Zsb2F0MzJfdmVjIiwiZW1wdHlfZmxvYXQ2NF92ZWMiLCJmbG9hdDMyX3ZlY19vZl9zZXhwIiwiZmxvYXQ2NF92ZWNfb2Zfc2V4cCIsInZlY19vZl9zZXhwIiwiY2hlY2tfdG9vX211Y2hfZGF0YSIsImRhdGEiLCJmbG9hdF9tYXRfb2Zfc2V4cCIsImNyZWF0ZV9mbG9hdF9tYXQiLCJzbiIsInNtIiwiZGF0YSQwIiwiZGF0YSQxIiwiY29sJDAiLCJjcmVhdGVfZmxvYXQzMl9tYXQiLCJjcmVhdGVfZmxvYXQ2NF9tYXQiLCJmbG9hdDMyX21hdF9vZl9zZXhwIiwiZmxvYXQ2NF9tYXRfb2Zfc2V4cCIsIm1hdF9vZl9zZXhwIiwic3RyaW5nX29mX29mX3NleHBfb2YiLCJ0b19zZXhwIiwib2Zfc3RyaW5nX29mX29mX3NleHAiLCJvZl9zZXhwIiwidF9vZl9zZXhwIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdW5pdCIsInVuaXRfb2Zfc2V4cCIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9ib29sIiwiYm9vbF9vZl9zZXhwIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfY2hhciIsImNoYXJfb2Zfc2V4cCIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQiLCJpbnRfb2Zfc2V4cCIsImludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsImZsb2F0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X29mX3NleHAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9vZl9zZXhwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfcmVmIiwicmVmX29mX3NleHAiLCJyZWZfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfb2Zfc2V4cCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9hcnJheSIsImFycmF5X29mX3NleHAiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImV4bl9zZXhwX2dyYW1tYXIiLCJjb2VyY2UiLCJ0YWciLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwicmVwciIsInNleHAxIiwicmVnaXN0ZXIyIiwic2V4cF9vZl9hcmcyIiwic2V4cDIiLCJyZWdpc3RlcjMiLCJzZXhwX29mX2FyZzMiLCJzZXhwMyIsInJlZ2lzdGVyNCIsInNleHBfb2ZfYXJnNCIsInNleHA0IiwicmVnaXN0ZXI1Iiwic2V4cF9vZl9hcmc1Iiwic2V4cDUiLCJyZWdpc3RlcjYiLCJzZXhwX29mX2FyZzYiLCJzZXhwNiIsInJlZ2lzdGVyNyIsInNleHBfb2ZfYXJnNyIsInNleHA3IiwicmVnaXN0ZXI4Iiwic2V4cF9vZl9hcmc4Iiwic2V4cDgiLCJyZWdpc3RlcjkiLCJzZXhwX29mX2FyZzkiLCJzZXhwOSIsInJlZ2lzdGVyMTAiLCJzZXhwX29mX2FyZzEwIiwic2V4cDEwIiwiaW50NjQkMCIsImdvbGRlbl9nYW1tYSIsInBvcGNvdW50Iiwib2ZfaW50Iiwic2VlZCIsImNvcHkiLCJvZGRfZ2FtbWEiLCJtaXhfYml0cyIsInoiLCJuIiwibWl4NjQiLCJ6JDAiLCJ6JDEiLCJuZXh0X3NlZWQiLCJ0IiwibmV4dCIsIm9mX3NlZWRfYW5kX2dhbW1hIiwiZ2FtbWEiLCJzZWVkJDAiLCJyYW5kb21faW50NjQiLCJyYW5kb21fc3RhdGUiLCJjcmVhdGUiLCJzcGxpdCIsIm5leHRfaW50NjQiLCJwZXJ0dXJiIiwic2FsdCIsImJvb2wiLCJzdGF0ZSIsIngiLCJpbnQ2NCIsImxvIiwiaGkiLCJyZW1haW5kZXJfbWF4aW11bSIsImRyYXckMCIsInJlbWFpbmRlciIsImRyYXdfbWF4aW11bSIsImRyYXciLCJpbnQkMCIsImxvJDAiLCJoaSQwIiwiaW50MzIiLCJuYXRpdmVpbnQiLCJpbnQ2MyIsImRvdWJsZV91bHAiLCJ1bml0X2Zsb2F0X2Zyb21faW50NjQiLCJ1bml0X2Zsb2F0IiwiZmxvYXQkMCIsInJhbmdlIiwibWlkIiwiZiIsImJpdHNfdG9fcmVwcmVzZW50IiwidCQwIiwibG9nX3VuaWZvcm0iLCJtaW5fYml0cyIsIm1heF9iaXRzIiwiYml0cyIsInRfc2V4cF9ncmFtbWFyIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsIm9mX2ludF9leG4iLCJ0b19pbnRfZXhuIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwidF9vZl9zZXhwIiwic2V4cF9vZl90Iiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJpbnZhcmlhbnQiLCJvZl9zdHJpbmdfb3B0IiwidG9fc3RyaW5nX2h1bSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsImRlY3IiLCJpbmNyIiwib2ZfaW50MzJfZXhuIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50X2V4biIsIm9mX2Zsb2F0X3VuY2hlY2tlZCIsIm51bV9iaXRzIiwibWF4X3ZhbHVlIiwibWluX3ZhbHVlIiwic2hpZnRfcmlnaHRfbG9naWNhbCIsImNlaWxfcG93MiIsImZsb29yX3BvdzIiLCJjZWlsX2xvZzIiLCJmbG9vcl9sb2cyIiwiaXNfcG93MiIsImNseiIsImN0eiIsInN5bWJvbCIsImxub3QiLCJhYnMiLCJ6ZXJvIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDMiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzMyIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM0Iiwic3ltYm9sJDM1Iiwic3ltYm9sJDM2IiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5Iiwic3VtIiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwicmVjX2xpc3QiLCJ3IiwibiIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm1pbl9sZW5ndGgiLCJtYXhfbGVuZ3RoIiwidXBwZXJfYm91bmQiLCJtYXhfbGVuZ3RoJDAiLCJsZW4iLCJyZW1haW5pbmciLCJtYXhfaW5kZXgiLCJ1bml0IiwiYm9vbCIsIm9wdGlvbiIsInZhbHVlX3QiLCJlaXRoZXIiLCJmc3RfdCIsInNuZF90IiwicmVzdWx0Iiwib2tfdCIsImVycl90Iiwib2siLCJlcnIiLCJsaXN0X2dlbmVyaWMiLCJlbHRfZ2VuIiwibGlzdF9ub25fZW1wdHkiLCJsaXN0X3dpdGhfbGVuZ3RoIiwibGVuZ3RoIiwibGlzdF9maWx0ZXJlZCIsImVsdHMiLCJlbHRzJDAiLCJsZW5ndGhfb2ZfaW5wdXQiLCJsZW5ndGhfb2Zfb3V0cHV0IiwiaW5kaWNlcyIsImxpc3RfcGVybXV0YXRpb25zIiwicmVmIiwiY2hhcl91bmlmb3JtX2luY2x1c2l2ZSIsImNoYXJfdXBwZXJjYXNlIiwiY2hhcl9sb3dlcmNhc2UiLCJjaGFyX2RpZ2l0IiwiY2hhcl9wcmludF91bmlmb3JtIiwiY2hhcl91bmlmb3JtIiwiY2hhcl9hbHBoYSIsImNoYXJfYWxwaGFudW0iLCJjaGFyX3doaXRlc3BhY2UiLCJjaGFyX3ByaW50IiwiY2hhciQwIiwic21hbGxfaW50IiwiYWxsb3dfemVybyIsImxvd2VyX2JvdW5kIiwid2VpZ2h0ZWRfbG93Iiwid2VpZ2h0ZWRfaGlnaCIsInNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50Iiwic21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IiwiZ2VvbWV0cmljIiwicCIsImRlbm9taW5hdG9yIiwidW5pZm9ybSIsImV4cG9uZW50aWFsIiwiZmxvYXQkMCIsImludCQwIiwiaW50JDEiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsImxvZ191bmlmb3JtIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2dlb21ldHJpYyIsInVuaWZvcm0kMCIsImxvZ191bmlmb3JtJDAiLCJpbnQzMiIsImludDMyX3VuaWZvcm0iLCJpbnQzMl9pbmNsdXNpdmUiLCJpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSIsImludDMyX2xvZ19pbmNsdXNpdmUiLCJpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQzMl9nZW9tZXRyaWMiLCJ1bmlmb3JtJDEiLCJsb2dfdW5pZm9ybSQxIiwiaW50NjMiLCJpbnQ2M191bmlmb3JtIiwiaW50NjNfaW5jbHVzaXZlIiwiaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQ2M19sb2dfaW5jbHVzaXZlIiwiaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjNfZ2VvbWV0cmljIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDIiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzNiIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5IiwidW5pZm9ybSQyIiwibG9nX3VuaWZvcm0kMiIsImludDY0IiwiaW50NjRfdW5pZm9ybSIsImludDY0X2luY2x1c2l2ZSIsImludDY0X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjRfbG9nX2luY2x1c2l2ZSIsImludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2dlb21ldHJpYyIsInVuaWZvcm0kMyIsImxvZ191bmlmb3JtJDMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfdW5pZm9ybSIsIm5hdGl2ZWludF9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSIsIm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdiIsIm5hdGl2ZWludF9nZW9tZXRyaWMiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X25vcm1hbF9tYW50aXNzYSIsIm51bV9iaXRzIiwiYml0cyIsImZsb2F0X2V4cG9uZW50IiwiZmxvYXRfemVybyIsImxldF9zeW50YXhfMDEyIiwibGV0X3N5bnRheF8wMTMiLCJmbG9hdF9zdWJub3JtYWwiLCJtYW50aXNzYSIsImV4cG9uZW50IiwiZmxvYXRfbm9ybWFsIiwiZmxvYXRfaW5maW5pdGUiLCJsZXRfc3ludGF4XzAyMSIsImxldF9zeW50YXhfMDIyIiwiZmxvYXRfbmFuIiwiZmxvYXRfb2ZfY2xhc3MiLCJjIiwiZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyIsImZsb2F0X2Zpbml0ZSIsImZsb2F0X3dpdGhvdXRfbmFuIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiZWRpdF9pbnNlcnQiLCJwb3MiLCJzdHIiLCJlZGl0Iiwibl90aW1lcyIsInN0cmluZ19saWtlIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJiaWdhcnJheTJfZGltIiwibWF4X3RvdGFsX3NpemUiLCJhIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImIiLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsImRpbTIkMCIsInYiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImRyb3Bfa2V5cyIsImsiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsImhhbmRsZXJzIiwia2V5IiwiaW5wIiwiY2FsbGJhY2siLCJ2YWx1ZSIsImluamVjdCIsInYiLCJjYWxsZWQiLCJjYWxsYmFjayQwIiwiYSIsImhhbmRsZSIsInMiLCJwcmludF9zIiwiTmV2ZXIiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm9mX2Z1biIsImxhenkiLCJtYXAiLCJldmFsJDAiLCJ0JDAiLCJ0JDEiLCJsIiwiZiQwIiwidCQyIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDIiLCJoYW5kbGUkMCIsImhhbmRsZSQxIiwib25fcmVzcG9uc2UiLCJvZl9zeW5jX2Z1biIsIm1ha2UiLCJyZXF1ZXN0IiwicmVzcG9uZF90byIsInJlc3BvbnNlIiwibWFrZSQwIiwiZXZhbHVhdG9yIiwiY3JlYXRlIiwidXBvbiIsImhhbmRsZXIiLCJtYXRjaCIsIngiLCJmaWxsX2lmX2VtcHR5IiwicGVlayIsImhhbmRsZSQyIiwib2Zfc3Zhcl9mdW4iLCJjcmVhdGUkMCIsInF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSIsInF1ZXJ5IiwibWF5YmVfcmVzcG9uZCIsInJlc3AiLCJvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIiwicXJ0IiwibW9kX25hbWUiLCJtb2RfbmFtZSQwIiwibW9kX25hbWUkMSIsIm1vZF9uYW1lJDIiLCJtb2RfbmFtZSQzIiwibW9kX25hbWUkNCIsIm1vZF9uYW1lJDUiLCJtb2RfbmFtZSQ2IiwibW9kX25hbWUkNyIsIm1vZF9uYW1lJDgiLCJtb2RfbmFtZSQ5IiwibWF4X3ZhbHVlJDEyIiwibW9kX25hbWUkMTAiLCJyYWlzZV9jYW5ub3RfcmVwciIsInRvX3N0cmluZyIsIngiLCJ0cnVuY191bnNpZ25lZCIsImNvbnYiLCJsb2dhbmQiLCJtYXNrIiwiZXhuX3Vuc2lnbmVkIiwiZXF1YWwiLCJ5IiwidHJ1bmNfc2lnbmVkIiwic2hpZnRfbGVmdCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnQiLCJleG5fc2lnbmVkIiwiaWRlbnRpdHlfaWZfcG9zaXRpdmUiLCJncmVhdGVyX2VxdWFsIiwiemVybyIsIm9mX3NleHBfZXJyb3IiLCJ3aGF0Iiwic2V4cCIsInRvX2ludDMyIiwidG9faW50NjQiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJmdW5jIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsInR5cGVuYW1lX29mX3QiLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJ0cnVuYyIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwieCQwIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwibG9nYW5kNjQiLCJtYXNrNjQiLCJlcXVhbCQwIiwiZXF1YWw2NCIsInRvX3N0cmluZyQwIiwidG9fc3RyaW5nNjQiLCJ0cnVuYyQwIiwiZXhuIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50X2V4biQwIiwidG9fYmFzZV9pbnQkMCIsIm9mX3VpbnQxNl90cnVuYyIsIm9mX3VpbnQxNl9leG4iLCJvZl91aW50MzJfdHJ1bmMiLCJvZl91aW50MzJfZXhuIiwib2ZfdWludDYzX3RydW5jIiwib2ZfdWludDYzX2V4biIsIm9mX3VpbnQ2NF90cnVuYyIsIm9mX3VpbnQ2NF9leG4iLCJvZl9pbnQ4X3dyYXAiLCJvZl9pbnQ4X2V4biIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJxdWlja2NoZWNrX29ic2VydmVyJDAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJjb21wYXJlJDMiLCJoYXNoX2ZvbGRfdCQxIiwiZnVuYyQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwidHlwZW5hbWVfb2ZfdCQxIiwiemVybyQxIiwibWluX3ZhbHVlJDEiLCJtYXhfdmFsdWUkMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJ0cnVuYyQxIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50X2V4biQxIiwidG9fYmFzZV9pbnQkMSIsIm9mX2ludDgiLCJvZl9pbnQzMl90cnVuYyQwIiwib2ZfaW50MzJfZXhuJDAiLCJvZl9pbnQ2M190cnVuYyQwIiwib2ZfaW50NjNfZXhuJDAiLCJvZl9pbnQ2NF90cnVuYyQwIiwib2ZfaW50NjRfZXhuJDAiLCJvZl91aW50MTZfd3JhcCIsIm9mX3VpbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJjb21wYXJlJDUiLCJoYXNoX2ZvbGRfdCQyIiwiZnVuYyQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwidHlwZW5hbWVfb2ZfdCQyIiwiemVybyQyIiwibWluX3ZhbHVlJDIiLCJtYXhfdmFsdWUkMiIsImNvbnYkMCIsImxvZ2FuZCQwIiwibG9nYW5kNjQkMCIsIm1hc2skMCIsIm1hc2s2NCQwIiwiZXF1YWwkMiIsImVxdWFsNjQkMCIsInRvX3N0cmluZyQyIiwidG9fc3RyaW5nNjQkMCIsInRydW5jJDIiLCJleG4kMCIsIm9mX2Jhc2VfaW50X3RydW5jJDIiLCJvZl9iYXNlX2ludF9leG4kMiIsInRvX2Jhc2VfaW50JDIiLCJvZl91aW50OCIsIm9mX3VpbnQzMl90cnVuYyQwIiwib2ZfdWludDMyX2V4biQwIiwib2ZfdWludDYzX3RydW5jJDAiLCJvZl91aW50NjNfZXhuJDAiLCJvZl91aW50NjRfdHJ1bmMkMCIsIm9mX3VpbnQ2NF9leG4kMCIsIm9mX2ludDE2X3dyYXAiLCJvZl9pbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDIiLCJxdWlja2NoZWNrX3Nocmlua2VyJDIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJzeW1ib2wkNTUiLCJzeW1ib2wkNTYiLCJzeW1ib2wkNTciLCJzeW1ib2wkNTgiLCJzeW1ib2wkNTkiLCJzeW1ib2wkNjAiLCJzeW1ib2wkNjEiLCJzeW1ib2wkNjIiLCJjb21wYXJlJDciLCJoYXNoX2ZvbGRfdCQzIiwiZnVuYyQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsInR5cGVyZXBfb2ZfdCQzIiwidHlwZW5hbWVfb2ZfdCQzIiwiemVybyQzIiwibWluX3ZhbHVlJDMiLCJtYXhfdmFsdWUkMyIsInNoaWZ0X2xlZnQkMSIsInNoaWZ0X3JpZ2h0JDEiLCJzaGlmdCQxIiwidG9fc3RyaW5nJDMiLCJ0cnVuYyQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwibG9nYW5kJDEiLCJsb2dhbmQ2NCQxIiwibWFzayQxIiwibWFzazY0JDEiLCJlcXVhbCQ0IiwiZXF1YWw2NCQxIiwidG9fc3RyaW5nJDQiLCJ0b19zdHJpbmc2NCQxIiwidHJ1bmMkNCIsImV4biQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsIm9mX2Jhc2VfaW50X2V4biQzIiwidG9fYmFzZV9pbnRfZXhuIiwib2ZfdWludDgkMCIsIm9mX3VpbnQxNiIsIm9mX3VpbnQ2M190cnVuYyQxIiwib2ZfdWludDYzX2V4biQxIiwib2ZfdWludDY0X3RydW5jJDEiLCJvZl91aW50NjRfZXhuJDEiLCJvZl9pbnQzMl93cmFwIiwib2ZfaW50MzJfZXhuJDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ0IiwicXVpY2tjaGVja19vYnNlcnZlciQ0IiwicXVpY2tjaGVja19zaHJpbmtlciQ0Iiwic3ltYm9sJDg1Iiwic3ltYm9sJDg2Iiwic3ltYm9sJDg3Iiwic3ltYm9sJDg4Iiwic3ltYm9sJDg5Iiwic3ltYm9sJDkwIiwic3ltYm9sJDkxIiwic3ltYm9sJDkyIiwic3ltYm9sJDkzIiwic3ltYm9sJDk0IiwiY29tcGFyZSQxMSIsImhhc2hfZm9sZF90JDUiLCJmdW5jJDUiLCJoYXNoJDUiLCJ0X29mX3NleHAkNSIsInNleHBfb2ZfdCQ1IiwicXVpY2tjaGVja19nZW5lcmF0b3IkNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNSIsInR5cGVyZXBfb2ZfdCQ1IiwidHlwZW5hbWVfb2ZfdCQ1IiwiemVybyQ1IiwibWluX3ZhbHVlJDUiLCJtYXhfdmFsdWUkNSIsInRvX3N0cmluZyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2Iiwib2ZfYmFzZV9pbnQzMl90cnVuYyQwIiwib2ZfYmFzZV9pbnQzMl9leG4kMCIsInRvX2Jhc2VfaW50MzJfdHJ1bmMkMCIsInRvX2Jhc2VfaW50MzJfZXhuJDAiLCJvZl9iYXNlX2ludDY0X3RydW5jJDAiLCJvZl9iYXNlX2ludDY0X2V4biQwIiwidG9fYmFzZV9pbnQ2NCQwIiwib2ZfYmFzZV9pbnRfZXhuJDQiLCJ0b19iYXNlX2ludF9leG4kMCIsIm9mX3VpbnQ4JDEiLCJvZl91aW50MTYkMCIsIm9mX3VpbnQ2M190cnVuYyQyIiwib2ZfdWludDYzX2V4biQyIiwib2ZfdWludDY0X3RydW5jJDIiLCJvZl91aW50NjRfZXhuJDIiLCJvZl9pbnQzMl93cmFwJDAiLCJvZl9pbnQzMl9leG4kMiIsInNleHBfb2ZfdCQ2IiwidF9vZl9zZXhwJDYiLCJzIiwic3ltYm9sJDExMSIsInN5bWJvbCQxMTIiLCJzeW1ib2wkMTEzIiwic3ltYm9sJDExNCIsInN5bWJvbCQxMTUiLCJzeW1ib2wkMTE2Iiwic3ltYm9sJDExNyIsInN5bWJvbCQxMTgiLCJzeW1ib2wkMTE5Iiwic3ltYm9sJDEyMCIsInNpZ25lZCIsIm51bV9iaXRzIiwibnVtX2J5dGVzIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJzaWduZWQkMSIsIm51bV9iaXRzJDEiLCJudW1fYnl0ZXMkMSIsInNpZ25lZCQyIiwibnVtX2JpdHMkMiIsIm51bV9ieXRlcyQyIiwic2lnbmVkJDMiLCJudW1fYml0cyQzIiwibnVtX2J5dGVzJDMiLCJzaWduZWQkNCIsIm51bV9iaXRzJDQiLCJudW1fYnl0ZXMkNCIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsImltcGwiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ3IiwicXVpY2tjaGVja19vYnNlcnZlciQ3IiwicXVpY2tjaGVja19zaHJpbmtlciQ3IiwidF9vZl9zZXhwJDciLCJzZXhwX29mX3QkNyIsInR5cGVyZXBfb2ZfdCQ3IiwidHlwZW5hbWVfb2ZfdCQ3Iiwic2lnbmVkJDciLCJudW1fYml0cyQ3IiwibnVtX2J5dGVzJDciLCJ6ZXJvJDciLCJtaW5fdmFsdWUkNyIsIm1heF92YWx1ZSQ3IiwiaGFzaF9mb2xkX3QkNyIsImhhc2gkNyIsInN5bWJvbCQxMjciLCJzeW1ib2wkMTI4Iiwic3ltYm9sJDEyOSIsInN5bWJvbCQxMzAiLCJzeW1ib2wkMTMxIiwic3ltYm9sJDEzMiIsImVxdWFsJDciLCJjb21wYXJlJDE1IiwibWluJDciLCJtYXgkNyIsIm9mX2Jhc2VfaW50MzIkMSIsInRvX2Jhc2VfaW50MzIkMSIsIm9mX2ludDgkMiIsIm9mX2ludDE2JDEiLCJvZl9pbnQ2M190cnVuYyQzIiwib2ZfaW50NjNfZXhuJDMiLCJvZl9pbnQ2NF90cnVuYyQzIiwib2ZfaW50NjRfZXhuJDMiLCJvZl91aW50MzJfd3JhcCQxIiwib2ZfdWludDMyX2V4biQzIiwicXVpY2tjaGVja19nZW5lcmF0b3IkOCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF9vZl90JDgiLCJ0eXBlcmVwX29mX3QkOCIsInR5cGVuYW1lX29mX3QkOCIsInNpZ25lZCQ4IiwibnVtX2JpdHMkOCIsIm51bV9ieXRlcyQ4IiwiemVybyQ4IiwibWluX3ZhbHVlJDgiLCJtYXhfdmFsdWUkOCIsImhhc2hfZm9sZF90JDgiLCJoYXNoJDgiLCJzeW1ib2wkMTMzIiwic3ltYm9sJDEzNCIsInN5bWJvbCQxMzUiLCJzeW1ib2wkMTM2Iiwic3ltYm9sJDEzNyIsInN5bWJvbCQxMzgiLCJlcXVhbCQ4IiwiY29tcGFyZSQxNiIsIm1pbiQ4IiwibWF4JDgiLCJvZl9iYXNlX2ludDMyX3RydW5jJDEiLCJvZl9iYXNlX2ludDMyX2V4biQxIiwidG9fYmFzZV9pbnQzMl90cnVuYyQxIiwidG9fYmFzZV9pbnQzMl9leG4kMSIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50NjRfZXhuJDEiLCJ0b19iYXNlX2ludDY0JDEiLCJvZl9iYXNlX2ludF9leG4kNSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwib2ZfaW50OCQzIiwib2ZfaW50MTYkMiIsIm9mX2ludDMyIiwib2ZfaW50NjRfdHJ1bmMkNCIsIm9mX2ludDY0X2V4biQ0Iiwib2ZfdWludDYzX3dyYXAiLCJvZl91aW50NjNfZXhuJDQiLCJzeW1ib2wkMTQ1Iiwic3ltYm9sJDE0NiIsInN5bWJvbCQxNDciLCJzeW1ib2wkMTQ4Iiwic3ltYm9sJDE0OSIsInN5bWJvbCQxNTAiLCJzeW1ib2wkMTUxIiwic3ltYm9sJDE1MiIsInN5bWJvbCQxNTMiLCJzeW1ib2wkMTU0IiwiaGFzaF9mb2xkX3QkMTAiLCJmdW5jJDgiLCJoYXNoJDEwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTAiLCJxdWlja2NoZWNrX29ic2VydmVyJDEwIiwicXVpY2tjaGVja19zaHJpbmtlciQxMCIsImNvbXBhcmUkMTkiLCJ0eXBlcmVwX29mX3QkMTAiLCJ0eXBlbmFtZV9vZl90JDEwIiwiemVybyQxMCIsIm1pbl92YWx1ZSQxMCIsIm1heF92YWx1ZSQxMCIsImdyZWF0ZXJfZXF1YWwkMiIsInRvX3N0cmluZyQ4Iiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQyIiwib2ZfYmFzZV9pbnQ2NF9leG4kMiIsInRvX2Jhc2VfaW50NjQkMiIsIm9mX3VpbnQ4JDMiLCJvZl91aW50MTYkMiIsIm9mX3VpbnQzMiIsIm9mX3VpbnQ2NF90cnVuYyQ0Iiwib2ZfdWludDY0X2V4biQ0Iiwib2ZfaW50NjNfd3JhcCIsIm9mX2ludDYzX2V4biQ0Iiwic2V4cF9vZl90JDEwIiwidF9vZl9zZXhwJDEwIiwic3ltYm9sJDE1NSIsInN5bWJvbCQxNTYiLCJzeW1ib2wkMTU3Iiwic3ltYm9sJDE1OCIsInN5bWJvbCQxNTkiLCJzeW1ib2wkMTYwIiwic3ltYm9sJDE2MSIsInN5bWJvbCQxNjIiLCJzeW1ib2wkMTYzIiwic3ltYm9sJDE2NCIsImNvbXBhcmUkMjEiLCJoYXNoX2ZvbGRfdCQxMSIsImZ1bmMkOSIsImhhc2gkMTEiLCJ0X29mX3NleHAkMTEiLCJzZXhwX29mX3QkMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDExIiwidHlwZXJlcF9vZl90JDExIiwidHlwZW5hbWVfb2ZfdCQxMSIsInplcm8kMTEiLCJtaW5fdmFsdWUkMTEiLCJtYXhfdmFsdWUkMTEiLCJncmVhdGVyX2VxdWFsJDMiLCJ0b19zdHJpbmckOSIsIm9mX2ludDgkNCIsIm9mX2ludDE2JDMiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMyIsIm9mX2Jhc2VfaW50NjRfZXhuJDMiLCJ0b19iYXNlX2ludDY0X3RydW5jIiwidG9fYmFzZV9pbnQ2NF9leG4iLCJvZl91aW50OCQ0Iiwib2ZfdWludDE2JDMiLCJvZl91aW50MzIkMCIsIm9mX3VpbnQ2MyIsIm9mX2ludDY0X3dyYXAiLCJvZl9pbnQ2NF9leG4kNSIsInNleHBfb2ZfdCQxMiIsInRfb2Zfc2V4cCQxMiIsInN5bWJvbCQxODciLCJzeW1ib2wkMTg4Iiwic3ltYm9sJDE4OSIsInN5bWJvbCQxOTAiLCJzeW1ib2wkMTkxIiwic3ltYm9sJDE5MiIsInN5bWJvbCQxOTMiLCJzeW1ib2wkMTk0Iiwic3ltYm9sJDE5NSIsInN5bWJvbCQxOTYiLCJnZXRfaW50OCIsInQiLCJwb3MiLCJnZXRfdWludDgiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwiZ2V0X3VpbnQ2NF9sZSIsImdldF91aW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfaW50OCIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwieCQxIiwic2V0X2ludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF91aW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDY0X2xlIiwic2V0X3VpbnQ2NF9iZSIsImdldF9pbnQ4JDAiLCJnZXRfdWludDgkMCIsImdldF9pbnQxNl9sZSQwIiwiZ2V0X2ludDE2X2JlJDAiLCJnZXRfdWludDE2X2xlJDAiLCJnZXRfdWludDE2X2JlJDAiLCJnZXRfaW50MzJfbGUkMCIsImdldF9pbnQzMl9iZSQwIiwiZ2V0X3VpbnQzMl9sZSQwIiwiZ2V0X3VpbnQzMl9iZSQwIiwiZ2V0X2ludDY0X2xlJDAiLCJnZXRfaW50NjRfYmUkMCIsImdldF91aW50NjRfbGUkMCIsImdldF91aW50NjRfYmUkMCIsInNldF9pbnQ4JDAiLCJzZXRfdWludDgkMCIsInNldF9pbnQxNl9sZSQwIiwic2V0X2ludDE2X2JlJDAiLCJzZXRfdWludDE2X2xlJDAiLCJzZXRfdWludDE2X2JlJDAiLCJzZXRfaW50MzJfbGUkMCIsInNldF9pbnQzMl9iZSQwIiwic2V0X3VpbnQzMl9sZSQwIiwic2V0X3VpbnQzMl9iZSQwIiwic2V0X2ludDY0X2xlJDAiLCJzZXRfaW50NjRfYmUkMCIsInNldF91aW50NjRfbGUkMCIsInNldF91aW50NjRfYmUkMCIsImdldF9pbnQ4JDEiLCJnZXRfdWludDgkMSIsImdldF9pbnQxNl9sZSQxIiwiZ2V0X2ludDE2X2JlJDEiLCJnZXRfdWludDE2X2xlJDEiLCJnZXRfdWludDE2X2JlJDEiLCJnZXRfaW50MzJfbGUkMSIsImdldF9pbnQzMl9iZSQxIiwiZ2V0X3VpbnQzMl9sZSQxIiwiZ2V0X3VpbnQzMl9iZSQxIiwiZ2V0X2ludDY0X2xlJDEiLCJnZXRfaW50NjRfYmUkMSIsImdldF91aW50NjRfbGUkMSIsImdldF91aW50NjRfYmUkMSIsImdldF9pbnQ4JDIiLCJnZXRfdWludDgkMiIsImdldF9pbnQxNl9sZSQyIiwiZ2V0X2ludDE2X2JlJDIiLCJnZXRfdWludDE2X2xlJDIiLCJnZXRfdWludDE2X2JlJDIiLCJnZXRfaW50MzJfbGUkMiIsImdldF9pbnQzMl9iZSQyIiwiZ2V0X3VpbnQzMl9sZSQyIiwiZ2V0X3VpbnQzMl9iZSQyIiwiZ2V0X2ludDY0X2xlJDIiLCJnZXRfaW50NjRfYmUkMiIsImdldF91aW50NjRfbGUkMiIsImdldF91aW50NjRfYmUkMiIsImxvYyQwIiwibG9jIiwic3ByaW50ZiIsImFyY2hfc2l4dHlmb3VyIiwiYXJjaF9iaWdfZW5kaWFuIiwibm90X29uXzMyYml0IiwiY3JlYXRlIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic2l6ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyQwIiwibGVuZ3RoIiwiaW5pdCIsIm4iLCJmIiwidCIsImkiLCJjaGVja19hcmdzIiwicG9zIiwibGVuIiwiYnN0ciIsImJzdHJfbGVuJDAiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwiY2hyIiwibGVuJDAiLCJyZXMiLCJtZW1tZW0iLCJoYXlzdGFjayIsIm5lZWRsZSIsImhheXN0YWNrX2xlbiIsIm5lZWRsZV9sZW4iLCJoYXlzdGFja19wb3MiLCJuZWVkbGVfcG9zIiwiaGF5c3RhY2tfbGVuJDAiLCJuZWVkbGVfbGVuJDAiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsInVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCIsInJlYWRfaW50NjRfbG9jYWwiLCJyZWFkX2ludDY0X3N3YXBfbG9jYWwiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCQwIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCQwIiwicmVhZF9pbnQ2NF9sb2NhbCQwIiwiZ2V0X2ludDY0X3RfbGUiLCJnZXRfaW50NjRfdF9iZSIsInJlYWRfaW50NjRfc3dhcCQwIiwic2V0X2ludDY0X3RfYmUiLCJzZXRfaW50NjRfdF9sZSIsImludDY0X2NvbnZfZXJyb3IiLCJ1aW50NjRfY29udl9lcnJvciIsImludDY0X3RvX2ludF9leG4iLCJ1aW50NjRfdG9faW50X2V4biIsInVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9sZV9leG4iLCJnZXRfaW50NjRfYmVfZXhuIiwiZ2V0X2ludDY0X2xlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2JlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2xlX2V4biIsImdldF91aW50NjRfYmVfZXhuIiwiZ2V0X3VpbnQ2NF9sZV9leG4iLCJzZXRfdWludDY0X2JlX2V4biIsInNldF91aW50NjRfbGVfZXhuIiwidW5zYWZlX3NldF91aW50OCIsInVuc2FmZV9zZXRfaW50OCIsIm4kMCIsInVuc2FmZV9nZXRfdWludDgiLCJ1bnNhZmVfZ2V0X2ludDgiLCJzZXRfdWludDhfZXhuIiwic2V0X2ludDhfZXhuIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDgiLCJ1aW50MzJfb2ZfaW50MzJfdCIsInVuc2FmZV9zZXRfdWludDMyX2xlIiwidW5zYWZlX3NldF91aW50MzJfYmUiLCJ1bnNhZmVfZ2V0X3VpbnQzMl9sZSIsInVuc2FmZV9nZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZV9leG4iLCJzZXRfdWludDMyX2JlX2V4biIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQ4JDAiLCJzZXRfdWludDgiLCJnZXRfdWludDE2X25lIiwic2V0X3VpbnQxNl9uZSIsImdldF9pbnQzMl9uZSIsInNldF9pbnQzMl9uZSIsImdldF9pbnQ2NF9uZSIsInNldF9pbnQ2NF9uZSIsImdldF91aW50OCQyIiwic2V0X3VpbnQ4JDEiLCJnZXRfdWludDE2X25lJDAiLCJzZXRfdWludDE2X25lJDAiLCJnZXRfaW50MzJfbmUkMCIsInNldF9pbnQzMl9uZSQwIiwiZ2V0X2ludDY0X25lJDAiLCJzZXRfaW50NjRfbmUkMCIsImVsdDEiLCJlbHQyIiwiZXF1YWwiLCJvZl9ib29sIiwibGVuZ3RoIiwiY3JlYXRlX2Jvb2wiLCJnZXQiLCJzZXQiLCJvdmVybGFwcGluZ19zcmNfZHN0IiwibGVuZ3RoJDAiLCJnZXQkMCIsInNldCQwIiwiY3JlYXRlX2Jvb2wkMCIsInJvb3QiLCJjb21wYXJhdG9yIiwiY2xhbXAiLCJjbGFtcF9leG4iLCJiZXR3ZWVuIiwiZGVzY2VuZGluZyIsImFzY2VuZGluZyIsIm1heCIsIm1pbiIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJ0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfdCIsInRfb2Zfc2V4cCIsImhhc2giLCJoYXNoX2ZvbGRfdCIsImNoZWNrX3N1ZmZpeCIsImNob3BfZXh0ZW5zaW9uIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAiLCJjb25jYXQiLCJwMSIsInAyIiwicyQxIiwicyQyIiwicyIsInMkMCIsInRvX2Fic29sdXRlX2V4biIsInJlbGF0aXZlX3RvIiwic3BsaXQiLCJpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQiLCJzcGxpdF9leHRlbnNpb24iLCJmbiIsImZuJDAiLCJwYXRoIiwiZm4kMSIsImRpciIsImV4dCIsImJhc2VfZm4iLCJleHQkMCIsImZuJDIiLCJkaXIkMCIsImZuJDMiLCJwYXJ0cyIsImZpbGVuYW1lIiwiYWNjIiwiZmlsZW5hbWUkMCIsImZpbGVuYW1lJDEiLCJhY2MkMCIsIm9mX3BhcnRzIiwicmVzdCIsIm9mX2Fic29sdXRlX2V4biIsImEiLCJiIiwiYV9wYXJ0cyIsImJfcGFydHMiLCJhX3N1ZmZpeCIsImJfc3VmZml4IiwidDIiLCJoMiIsInQxIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJzZXhwX29mX3QiLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwieF8wMDMiLCJ0eXBlX2lkMSIsInR5cGVfaWQyIiwibmFtZV9vZl9rZXkiLCJrZXkiLCJ1aWRfb2Zfa2V5Iiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJkYXRhIiwidHlwZV9pZF9uYW1lIiwidHlwZV9pZF91aWQiLCJjb21wYXJlIiwidDEiLCJ0MiIsImMiLCJ0b19hbGlzdCIsInQiLCJzZXhwX29mX3QkMSIsInhfMDA4IiwicGFja2VkIiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsInNldCIsIm1lbV9ieV9pZCIsImlkIiwibWVtIiwicmVtb3ZlX2J5X2lkIiwicmVtb3ZlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJpc19lbXB0eSIsImZpbmQiLCJ2YWx1ZSIsImtleSQwIiwiZmluZF9leG4iLCJhZGQiLCJhZGRfZXhuIiwidCQwIiwiY2hhbmdlX2V4biIsInVwZGF0ZSIsImNoYW5nZSIsIm9yaWciLCJuZXh0IiwiZiIsIm9mX2FsaXN0X2V4biIsInAiLCJvZl9hXzAxMSIsIm9mX2FfMDEyIiwieF8wMTMiLCJ4XzAxNCIsIm9mX2FfMDE3IiwidHlwZV9lcXVhbCIsImNyZWF0ZSIsImRlZmF1bHQkMCIsIm5hbWUiLCJzZXhwX29mIiwiZmluZCQwIiwic2V0JDAiLCJjaGFuZ2UkMCIsImNyZWF0ZSQwIiwiaW5pdCIsImlkJDAiLCJmaW5kJDEiLCJzZXQkMSIsImNoYW5nZSQxIiwiYWRkJDAiLCJhY2MiLCJjcmVhdGUkMSIsInhzIiwieCIsImlkJDEiLCJtZXJnZSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsImRhdGEkMCIsImVwcmludGYiLCJwcmludGYiLCJwcmludF9zIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfZW5kbGluZSIsInByZXJyX2VuZGxpbmUiLCJzcHJpbnRmIiwiZmFpbHdpdGhmIiwia3NwcmludGYiLCJhbGwiLCJjb21wYXJlIiwic2V4cF9vZl90IiwidG9fc3RyaW5nIiwidCIsImZsYWdfbmFtZSIsImVycm9yX3NvdXJjZV8wMjIiLCJlcnJvcl9zb3VyY2VfMDY3IiwiZXJyb3Jfc291cmNlXzA4OCIsImVycm9yX3NvdXJjZV8xMDQiLCJlcnJvcl9zb3VyY2VfMTE4IiwiZXJyb3Jfc291cmNlXzE0NSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMjA2IiwiZXJyb3Jfc291cmNlXzIyMiIsImVycm9yX3NvdXJjZV8yMzYiLCJlcnJvcl9zb3VyY2VfMjYxIiwiZXJyb3Jfc291cmNlXzI5MCIsImVycm9yX3NvdXJjZV8zMjIiLCJlcnJvcl9zb3VyY2VfMzQ3IiwiZXJyb3Jfc291cmNlXzM3MiIsImVycm9yX3NvdXJjZV80MTEiLCJlcnJvcl9zb3VyY2VfNDU2IiwiZW51bWVyYXRlXzQ3NCIsImVudW1lcmF0ZV80NzUiLCJuYW1lcyIsIm1heWJlX21pc3NpbmdfcHJlZml4IiwibWF5YmVfbWlzc2luZ19zdWZmaXgiLCJtYXliZV9tb3JlX3N1ZmZpeCIsIm5hbWVzJDAiLCJlcnJvcl9zb3VyY2VfNDk5IiwiaW5kZW50YXRpb24iLCJzcGFjaW5nX2RvdCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfNTE3IiwibmFtZXMkMiIsImVycm9yX3NvdXJjZV81NDYiLCJuYW1lcyQzIiwiZXJyb3Jfc291cmNlXzU3NCIsImVycm9yX3NvdXJjZV82MDMiLCJ0X29mX3NleHAiLCJjb21wYXJlJDAiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDYkMCIsImJfMDA3JDAiLCJhXzAwOCIsImJfMDA5IiwiYV8wMTAiLCJiXzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsImFfMDE4IiwiYl8wMTkiLCJ0X29mX3NleHAkMCIsInNleHBfMDI0IiwidGFnXzAyNSIsInNleHBfYXJnc18wNDYiLCJhcmcwXzA0NyIsInJlczBfMDQ4Iiwic2V4cF9hcmdzXzA0MSIsImFyZzBfMDQyIiwicmVzMF8wNDMiLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQ5IiwicmVzMF8wNTAiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4Iiwic3RhYmxlX3dpdG5lc3MiLCJpbnZhcmlhbnQiLCJ0JDAiLCJ0JDEiLCJ0cyIsInRfb2Zfc2V4cCQxIiwic2V4cCIsInVzYWdlIiwidXNhZ2UkMCIsInVzYWdlJDEiLCJjb21wYXJlJDEiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImFfMDYzIiwiYl8wNjQiLCJ0X29mX3NleHAkMiIsInNleHBfMDY5IiwidGFnXzA3MCIsInNleHBfYXJnc18wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJzZXhwX29mX3QkMSIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJhcmcwXzA4MSIsInJlczBfMDgyIiwic3RhYmxlX3dpdG5lc3MkMCIsImNvbXBhcmUkMiIsImFfMDgzIiwiYl8wODQiLCJuIiwibiQwIiwiYV8wODUiLCJiXzA4NiIsInRfb2Zfc2V4cCQzIiwieF8wODkiLCJhbGlhc2VzIiwiZG9jIiwibmFtZSIsInNleHBfb2ZfdCQyIiwiYWxpYXNlc18wOTUiLCJkb2NfMDkzIiwibmFtZV8wOTEiLCJhcmdfMDk2IiwiYm5kc18wOTAiLCJhcmdfMDk0IiwiYm5kc18wOTAkMCIsImFyZ18wOTIiLCJibmRzXzA5MCQxIiwic3RhYmxlX3dpdG5lc3MkMSIsImNvbXBhcmUkMyIsImFfMDk3IiwiYl8wOTgiLCJhXzA5OSIsImJfMTAwIiwibiQxIiwiYV8xMDEiLCJiXzEwMiIsInRfb2Zfc2V4cCQ0IiwieF8xMDUiLCJmbGFncyIsImFub25zIiwicmVhZG1lIiwic3VtbWFyeSIsInNleHBfb2ZfdCQzIiwiZmxhZ3NfMTE1IiwiYW5vbnNfMTEzIiwicmVhZG1lXzEwOSIsInN1bW1hcnlfMTA3IiwiYXJnXzExNiIsImJuZHNfMTA2IiwiYXJnXzExNCIsImJuZHNfMTA2JDAiLCJ2XzExMCIsImFyZ18xMTIiLCJibmRfMTExIiwiYm5kc18xMDYkMSIsImFyZ18xMDgiLCJibmRzXzEwNiQyIiwic3RhYmxlX3dpdG5lc3MkMiIsInRfb2Zfc2V4cCQ1IiwieF8xMTkiLCJzZXhwX29mX3QkNCIsImZsYWdzXzEyOSIsInVzYWdlXzEyNyIsInJlYWRtZV8xMjMiLCJzdW1tYXJ5XzEyMSIsImFyZ18xMzAiLCJibmRzXzEyMCIsImFyZ18xMjgiLCJibmRzXzEyMCQwIiwidl8xMjQiLCJhcmdfMTI2IiwiYm5kXzEyNSIsImJuZHNfMTIwJDEiLCJhcmdfMTIyIiwiYm5kc18xMjAkMiIsInN0YWJsZV93aXRuZXNzJDMiLCJ0b19sYXRlc3QiLCJvZl9sYXRlc3QiLCJncmFtbWFyIiwiZ3JvdXAiLCJjb21wYXJlJDQiLCJjbXBfYSIsImFfMTMxIiwiYl8xMzIiLCJhXzEzMyIsImJfMTM0IiwiYV8xMzUiLCJiXzEzNiIsImFfMTM3IiwiYl8xMzgiLCJ0XzE0MCIsInRfMTM5IiwidF8xNDIiLCJ0XzE0MSIsInRfb2Zfc2V4cCQ2Iiwib2ZfYV8xNDMiLCJ4XzE1MSIsInNleHBfMTUwIiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJzdWJjb21tYW5kcyIsInNleHBfb2ZfdCQ1Iiwib2ZfYV8xNTIiLCJzdWJjb21tYW5kc18xNjAiLCJyZWFkbWVfMTU2Iiwic3VtbWFyeV8xNTQiLCJhcmdfMTYxIiwiYXJnMV8xNjMiLCJhcmcwXzE2MiIsInJlczBfMTY0IiwicmVzMV8xNjUiLCJibmRzXzE1MyIsInZfMTU3IiwiYXJnXzE1OSIsImJuZF8xNTgiLCJibmRzXzE1MyQwIiwiYXJnXzE1NSIsImJuZHNfMTUzJDEiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYV9zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYiLCJ0X29mX3NleHAkNyIsIm9mX2FfMTc2IiwieF8xODQiLCJzZXhwXzE4MyIsImFyZzFfMTgwIiwiYXJnMF8xNzkiLCJyZXMwXzE4MSIsInJlczFfMTgyIiwic2V4cF9vZl90JDYiLCJvZl9hXzE4NSIsInN1YmNvbW1hbmRzXzE5MyIsInJlYWRtZV8xODkiLCJzdW1tYXJ5XzE4NyIsImFyZ18xOTQiLCJhcmcxXzE5NiIsImFyZzBfMTk1IiwicmVzMF8xOTciLCJyZXMxXzE5OCIsImJuZHNfMTg2Iiwidl8xOTAiLCJhcmdfMTkyIiwiYm5kXzE5MSIsImJuZHNfMTg2JDAiLCJhcmdfMTg4IiwiYm5kc18xODYkMSIsIm1hcCQwIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImFic19wYXRoIiwiZGlyIiwicGF0aCIsImNvbXBhcmUkNSIsImFfMTk5IiwiYl8yMDAiLCJhXzIwMSIsImJfMjAyIiwibiQyIiwiYV8yMDMiLCJiXzIwNCIsInRfb2Zfc2V4cCQ4IiwieF8yMDciLCJjaGlsZF9zdWJjb21tYW5kIiwicGF0aF90b19leGUiLCJ3b3JraW5nX2RpciIsInNleHBfb2ZfdCQ3IiwiY2hpbGRfc3ViY29tbWFuZF8yMTkiLCJwYXRoX3RvX2V4ZV8yMTciLCJ3b3JraW5nX2Rpcl8yMTUiLCJyZWFkbWVfMjExIiwic3VtbWFyeV8yMDkiLCJhcmdfMjIwIiwiYm5kc18yMDgiLCJhcmdfMjE4IiwiYm5kc18yMDgkMCIsImFyZ18yMTYiLCJibmRzXzIwOCQxIiwidl8yMTIiLCJhcmdfMjE0IiwiYm5kXzIxMyIsImJuZHNfMjA4JDIiLCJhcmdfMjEwIiwiYm5kc18yMDgkMyIsInN0YWJsZV93aXRuZXNzJDUiLCJ0b19sYXRlc3QkMSIsIm9mX2xhdGVzdCQxIiwidF9vZl9zZXhwJDkiLCJ4XzIyMyIsInNleHBfb2ZfdCQ4IiwicGF0aF90b19leGVfMjMzIiwid29ya2luZ19kaXJfMjMxIiwicmVhZG1lXzIyNyIsInN1bW1hcnlfMjI1IiwiYXJnXzIzNCIsImJuZHNfMjI0IiwiYXJnXzIzMiIsImJuZHNfMjI0JDAiLCJ2XzIyOCIsImFyZ18yMzAiLCJibmRfMjI5IiwiYm5kc18yMjQkMSIsImFyZ18yMjYiLCJibmRzXzIyNCQyIiwic3RhYmxlX3dpdG5lc3MkNiIsInRvX3YzIiwib2ZfdjMiLCJ0b19sYXRlc3QkMiIsIm9mX2xhdGVzdCQyIiwidF9vZl9zZXhwJDEwIiwieF8yMzciLCJzZXhwX29mX3QkOSIsInBhdGhfdG9fZXhlXzI0NSIsInJlYWRtZV8yNDEiLCJzdW1tYXJ5XzIzOSIsImFyZ18yNDYiLCJibmRzXzIzOCIsInZfMjQyIiwiYXJnXzI0NCIsImJuZF8yNDMiLCJibmRzXzIzOCQwIiwiYXJnXzI0MCIsImJuZHNfMjM4JDEiLCJzdGFibGVfd2l0bmVzcyQ3IiwidG9fdjIiLCJvZl92MiIsInRvX2xhdGVzdCQzIiwib2ZfbGF0ZXN0JDMiLCJjb21wYXJlJDYiLCJhXzI0NyIsImJfMjQ4IiwiYV8yNDckMCIsImJfMjQ4JDAiLCJhXzI0OSIsImJfMjUwIiwiYV8yNTEiLCJiXzI1MiIsImFfMjUzIiwiYl8yNTQiLCJhXzI1NyIsImFfMjU1IiwiYl8yNTgiLCJiXzI1NiIsInRfb2Zfc2V4cCQxMSIsInNleHBfMjYzIiwidGFnXzI2NCIsInNleHBfYXJnc18yNzAiLCJhcmcwXzI3MSIsInJlczBfMjcyIiwic2V4cF9hcmdzXzI3NSIsImFyZzFfMjc3IiwiYXJnMF8yNzYiLCJyZXMwXzI3OCIsInJlczFfMjc5Iiwic2V4cF9hcmdzXzI2NSIsImFyZzBfMjY2IiwicmVzMF8yNjciLCJzZXhwX29mX3QkMTAiLCJhcmcwXzI4MCIsInJlczBfMjgxIiwiYXJnMF8yODIiLCJyZXMwXzI4MyIsImFyZzFfMjg1IiwiYXJnMF8yODQiLCJyZXMwXzI4NiIsInJlczFfMjg3Iiwic3RhYmxlX3dpdG5lc3MkOCIsInRfb2Zfc2V4cCQxMiIsInNleHBfMjkyIiwidGFnXzI5MyIsInNleHBfYXJnc18zMDkiLCJhcmcwXzMxMCIsInJlczBfMzExIiwic2V4cF9hcmdzXzI5OSIsImFyZzBfMzAwIiwicmVzMF8zMDEiLCJzZXhwX2FyZ3NfMzA0IiwiYXJnMF8zMDUiLCJyZXMwXzMwNiIsInNleHBfYXJnc18yOTQiLCJhcmcwXzI5NSIsInJlczBfMjk2Iiwic2V4cF9vZl90JDExIiwiYXJnMF8zMTIiLCJyZXMwXzMxMyIsImFyZzBfMzE0IiwicmVzMF8zMTUiLCJhcmcwXzMxNiIsInJlczBfMzE3IiwiYXJnMF8zMTgiLCJyZXMwXzMxOSIsInRfb2Zfc2V4cCQxMyIsInNleHBfMzI0IiwidGFnXzMyNSIsInNleHBfYXJnc18zMzEiLCJhcmcwXzMzMiIsInJlczBfMzMzIiwic2V4cF9hcmdzXzMzNiIsImFyZzBfMzM3IiwicmVzMF8zMzgiLCJzZXhwX2FyZ3NfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsInNleHBfb2ZfdCQxMiIsImFyZzBfMzM5IiwicmVzMF8zNDAiLCJhcmcwXzM0MSIsInJlczBfMzQyIiwiYXJnMF8zNDMiLCJyZXMwXzM0NCIsInRvX2xhdGVzdCQ0IiwiYiIsImciLCJlIiwib2ZfbGF0ZXN0JDQiLCJ0aHVuayIsInRfb2Zfc2V4cCQxNCIsInNleHBfMzQ5IiwidGFnXzM1MCIsInNleHBfYXJnc18zNTYiLCJhcmcwXzM1NyIsInJlczBfMzU4Iiwic2V4cF9hcmdzXzM2MSIsImFyZzBfMzYyIiwicmVzMF8zNjMiLCJzZXhwX2FyZ3NfMzUxIiwiYXJnMF8zNTIiLCJyZXMwXzM1MyIsInNleHBfb2ZfdCQxMyIsImFyZzBfMzY0IiwicmVzMF8zNjUiLCJhcmcwXzM2NiIsInJlczBfMzY3IiwiYXJnMF8zNjgiLCJyZXMwXzM2OSIsInRvX2xhdGVzdCQ1Iiwib2ZfbGF0ZXN0JDUiLCJ0X29mX3NleHAkMTUiLCJzZXhwXzM3NCIsInRhZ18zNzUiLCJzZXhwX2FyZ3NfMzg2IiwiYXJnMF8zODciLCJyZXMwXzM4OCIsInNleHBfYXJnc18zODEiLCJhcmcwXzM4MiIsInJlczBfMzgzIiwic2V4cF9hcmdzXzM3NiIsImFyZzBfMzc3IiwicmVzMF8zNzgiLCJzZXhwX29mX3QkMTQiLCJhcmcwXzM4OSIsInJlczBfMzkwIiwiYXJnMF8zOTEiLCJyZXMwXzM5MiIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJ2MSIsInYwIiwidjIiLCJ2MyIsInYxJDAiLCJ2MiQwIiwidjMkMCIsIm9mX3ZlcnNpb25lZCIsImNvbXBhcmUkNyIsImFfMzk1IiwiYl8zOTYiLCJhXzM5NSQwIiwiYl8zOTYkMCIsImFfMzk3IiwiYl8zOTgiLCJhXzM5OSIsImJfNDAwIiwiYV80MDEiLCJiXzQwMiIsImFfNDAzIiwiYl80MDQiLCJhXzQwNSIsImJfNDA2IiwiYV80MDciLCJiXzQwOCIsInRfb2Zfc2V4cCQxNiIsInNleHBfNDEzIiwidGFnXzQxNCIsInNleHBfYXJnc180MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3Iiwic2V4cF9hcmdzXzQzMCIsImFyZzBfNDMxIiwicmVzMF80MzIiLCJzZXhwX2FyZ3NfNDIwIiwiYXJnMF80MjEiLCJyZXMwXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcwXzQyNiIsInJlczBfNDI3Iiwic2V4cF9hcmdzXzQxNSIsImFyZzBfNDE2IiwicmVzMF80MTciLCJzZXhwX29mX3QkMTUiLCJhcmcwXzQzOCIsInJlczBfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsImFyZzBfNDQyIiwicmVzMF80NDMiLCJhcmcwXzQ0NCIsInJlczBfNDQ1IiwiYXJnMF80NDYiLCJyZXMwXzQ0NyIsImNvbXBhcmUkOCIsImFfNDQ4IiwiYl80NDkiLCJhXzQ1MCIsImJfNDUxIiwiYV80NTIiLCJiXzQ1MyIsInRfb2Zfc2V4cCQxNyIsInNleHBfNDU4IiwidGFnXzQ1OSIsInNleHBfYXJnc180NjAiLCJhcmcwXzQ2MSIsInJlczBfNDYyIiwic2V4cF9hcmdzXzQ2NSIsImFyZzBfNDY2IiwicmVzMF80NjciLCJzZXhwX29mX3QkMTYiLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImNvbXBhcmUkOSIsImFfNDcyIiwiYl80NzMiLCJhY2MiLCJlbnVtZXJhdGVfNDc4IiwiZW51bWVyYXRlXzQ3OSIsImVudW1lcmF0ZV80NzciLCJlbnVtZXJhdGVfNDgwIiwiZW51bWVyYXRlXzQ3NiIsImFjYyQwIiwiZW51bWVyYXRlXzQ4MCQwIiwiYXRfbW9zdF9vbmNlIiwiciIsImF0X2xlYXN0X29uY2UiLCJhdF9tb3N0X29uY2UkMCIsInYiLCJhdF9sZWFzdF9vbmNlJDAiLCJtYWtlX2NyZWF0b3IiLCJhdF9sZWFzdF9vbmNlX2Z1biIsImF0X21vc3Rfb25jZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJhdF9sZWFzdF9vbmNlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJhdF9tb3N0X29uY2VfZ2VuIiwiY3JlYXRlIiwibWFwJDEiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJzZXhwX29mX3QkMTciLCJhdF9tb3N0X29uY2VfNDg0IiwiYXRfbGVhc3Rfb25jZV80ODIiLCJhcmdfNDg1IiwiYm5kc180ODEiLCJhcmdfNDgzIiwiYm5kc180ODEkMCIsInRvX2hlbHBfc3RyaW5nIiwiZGVzY3JpcHRpb24iLCJvZl9oZWxwX3N0cmluZyIsIm5hbWUkMCIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsInhfNDg2IiwicyIsImZsYWdfbmFtZSQwIiwieF80ODciLCJjb21wYXJlJDEwIiwiYV80OTQiLCJiXzQ5NSIsImFfNDk2IiwiYl80OTciLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJjb21waWxlX2FjYyQyIiwiYWxpYXNlc19nZW4iLCJjcmVhdGUkMCIsIm1hcCQzIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxOCIsInhfNTAwIiwic2V4cF9vZl90JDE4IiwiYWxpYXNlc181MDYiLCJkb2NfNTA0IiwibmFtZV81MDIiLCJhcmdfNTA3IiwiYm5kc181MDEiLCJhcmdfNTA1IiwiYm5kc181MDEkMCIsImFyZ181MDMiLCJibmRzXzUwMSQxIiwicGFyc2VfbmFtZSIsIm51bV9vY2N1cnJlbmNlcyIsInJlcXVpcmVzX2FyZyIsImhlbHBfc2NyZWVuX2NvbXBhcmUiLCJhIiwic29ydCIsIndvcmRfd3JhcF9hbmRfc3RyaXAiLCJ0ZXh0Iiwid2lkdGgiLCJjaHVua3MiLCJ3b3JkcyIsIndvcmQiLCJsaW5lIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4IiwieCIsInNsYWNrIiwiaW5kZW50X2FuZF9uZXdsaW5lIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImxoc19wYWQiLCJmbGFnIiwiZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyIsImRvY3VtZW50YXRpb24iLCJmbGFnX3dpZHRoIiwiZmxhZ19vbl9pdHNfb3duX2xpbmUiLCJ3cmFwcGVkX2RvY3VtZW50YXRpb24iLCJkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIiwiZG9jX3dyYXBwZWRfZmlyc3RfbGluZSIsIndyYXBwZWRfZG9jX2xpbmVzIiwicHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfIiwidG9fc3RyaW5nJDAiLCJsb29rdXBfZXhwYW5kIiwiYWxpc3QiLCJwcmVmaXgiLCJrZXlfdHlwZSIsImlzX2Rhc2giLCJhbGlzdCQwIiwiZGF0YSIsImtleSIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzUwOCIsImRhdGEkMCIsImtleSQwIiwibWF0Y2hpbmdfa2V5cyIsImN1c3RvbV9wcmludGZfNTA5IiwiY29tcGFyZSQxMSIsImFfNTEwIiwiYl81MTEiLCJhXzUxMiIsImJfNTEzIiwiYV81MTQiLCJiXzUxNSIsImZsYWdzJDAiLCJhbm9ucyQwIiwicmVhZG1lJDAiLCJzdW1tYXJ5JDAiLCJtYWtlX2NyZWF0b3IkMSIsInN1bW1hcnlfZnVuIiwicmVhZG1lX2Z1biIsImFub25zX2Z1biIsImZsYWdzX2Z1biIsInN1bW1hcnlfZ2VuIiwicmVhZG1lX2dlbiIsImFub25zX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJmbGFnc19nZW4iLCJjcmVhdGUkMSIsIm1hcCQ1IiwiaXRlciQzIiwiZm9sZCQzIiwibWFwX3BvbHkkMSIsImZvcl9hbGwkMyIsImV4aXN0cyQzIiwidG9fbGlzdCQzIiwiaXRlciQ0IiwiZm9sZCQ0IiwiZm9yX2FsbCQ0IiwiZXhpc3RzJDQiLCJ0b19saXN0JDQiLCJtYXAkNiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMSIsInRfb2Zfc2V4cCQxOSIsInhfNTE4Iiwic2V4cF9vZl90JDE5IiwiZmxhZ3NfNTI4IiwiYW5vbnNfNTI2IiwicmVhZG1lXzUyMiIsInN1bW1hcnlfNTIwIiwiYXJnXzUyOSIsImJuZHNfNTE5IiwiYXJnXzUyNyIsImJuZHNfNTE5JDAiLCJ2XzUyMyIsImFyZ181MjUiLCJibmRfNTI0IiwiYm5kc181MTkkMSIsImFyZ181MjEiLCJibmRzXzUxOSQyIiwiZmluZF9mbGFnIiwiZmxhZ19pbmZvIiwiY2hvaWNlcyIsImdldF91c2FnZSIsImNvbXBhcmUkMTIiLCJhXzUzMiIsImJfNTMzIiwiYV81MzQiLCJiXzUzNSIsImFfNTM2IiwiYl81MzciLCJhXzUzOCIsImJfNTM5IiwidF81NDEiLCJ0XzU0MCIsInRfNTQzIiwidF81NDIiLCJyZWFkbWUkMSIsInN1bW1hcnkkMSIsInN1YmNvbW1hbmRzJDAiLCJyZWFkbWUkMiIsInN1bW1hcnkkMiIsIm1ha2VfY3JlYXRvciQyIiwic3ViY29tbWFuZHNfZnVuIiwic3ViY29tbWFuZHNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkNyIsIml0ZXIkNSIsImZvbGQkNSIsIm1hcF9wb2x5JDIiLCJmb3JfYWxsJDUiLCJleGlzdHMkNSIsInRvX2xpc3QkNSIsIml0ZXIkNiIsImZvbGQkNiIsImZvcl9hbGwkNiIsImV4aXN0cyQ2IiwidG9fbGlzdCQ2IiwibWFwJDgiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDIiLCJ0X29mX3NleHAkMjAiLCJvZl9hXzU0NCIsInhfNTUyIiwic2V4cF81NTEiLCJhcmcxXzU0OCIsImFyZzBfNTQ3IiwicmVzMF81NDkiLCJyZXMxXzU1MCIsInNleHBfb2ZfdCQyMCIsIm9mX2FfNTUzIiwic3ViY29tbWFuZHNfNTYxIiwicmVhZG1lXzU1NyIsInN1bW1hcnlfNTU1IiwiYXJnMV81NjQiLCJhcmcwXzU2MyIsInJlczBfNTY1IiwicmVzMV81NjYiLCJhcmdfNTYyIiwiYm5kc181NTQiLCJ2XzU1OCIsImFyZ181NjAiLCJibmRfNTU5IiwiYm5kc181NTQkMCIsImFyZ181NTYiLCJibmRzXzU1NCQxIiwiZmluZF9zdWJjb21tYW5kIiwiY29tcGFyZSQxMyIsImFfNTY3IiwiYl81NjgiLCJhXzU2OSIsImJfNTcwIiwiYV81NzEiLCJiXzU3MiIsInJlYWRtZSQzIiwic3VtbWFyeSQzIiwiY2hpbGRfc3ViY29tbWFuZCQwIiwicGF0aF90b19leGUkMCIsIndvcmtpbmdfZGlyJDAiLCJyZWFkbWUkNCIsInN1bW1hcnkkNCIsIm1ha2VfY3JlYXRvciQzIiwid29ya2luZ19kaXJfZnVuIiwicGF0aF90b19leGVfZnVuIiwiY2hpbGRfc3ViY29tbWFuZF9mdW4iLCJ3b3JraW5nX2Rpcl9nZW4iLCJwYXRoX3RvX2V4ZV9nZW4iLCJjb21waWxlX2FjYyQ0IiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMjEiLCJ4XzU3NSIsInNleHBfb2ZfdCQyMSIsImNoaWxkX3N1YmNvbW1hbmRfNTg3IiwicGF0aF90b19leGVfNTg1Iiwid29ya2luZ19kaXJfNTgzIiwicmVhZG1lXzU3OSIsInN1bW1hcnlfNTc3IiwiYXJnXzU4OCIsImJuZHNfNTc2IiwiYXJnXzU4NiIsImJuZHNfNTc2JDAiLCJhcmdfNTg0IiwiYm5kc181NzYkMSIsInZfNTgwIiwiYXJnXzU4MiIsImJuZF81ODEiLCJibmRzXzU3NiQyIiwiYXJnXzU3OCIsImJuZHNfNTc2JDMiLCJjb21wYXJlJDE0IiwiYV81ODkiLCJiXzU5MCIsImFfNTg5JDAiLCJiXzU5MCQwIiwiYV81OTEiLCJiXzU5MiIsImFfNTkzIiwiYl81OTQiLCJhXzU5NSIsImJfNTk2IiwiYV81OTkiLCJhXzU5NyIsImJfNjAwIiwiYl81OTgiLCJ0X29mX3NleHAkMjIiLCJzZXhwXzYwNSIsInRhZ182MDYiLCJzZXhwX2FyZ3NfNjEyIiwiYXJnMF82MTMiLCJyZXMwXzYxNCIsInNleHBfYXJnc182MTciLCJhcmcxXzYxOSIsImFyZzBfNjE4IiwicmVzMF82MjAiLCJyZXMxXzYyMSIsInNleHBfYXJnc182MDciLCJhcmcwXzYwOCIsInJlczBfNjA5Iiwic2V4cF9vZl90JDIyIiwiYXJnMF82MjIiLCJyZXMwXzYyMyIsImFyZzBfNjI0IiwicmVzMF82MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsImV4cGFuZGVkX3N1YmNvbW1hbmRzIiwiZXhwYW5kIiwic2V4cF9vZl90JDIzIiwiYXJnMF82MzAiLCJyZXMwXzYzMSIsImFyZzBfNjMyIiwicmVzMF82MzMiLCJhcmcwXzYzNCIsInJlczBfNjM1IiwiYXJnMF82MzYiLCJyZXMwXzYzNyIsImV4dHJhY3Rpb25fdmFyIiwiaSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsInhzIiwiZGllIiwiZm10IiwibXNnIiwia2V5X2NyZWF0ZSIsIm11bHRpX2FkZCIsInNldF93aXRoX2RlZmF1bHQiLCJhcHBseSIsImVycl8xIiwiaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhIiwicmV0dXJuX25vX2FyZyIsInJldHVybl93aXRoX2FyZyIsImVycm9yIiwiaGFzX2FyZyIsImVyciIsInJlc3VsdCIsInJ1bl9hbmRfZXhpdCIsImVudiIsInBhcnQiLCJjb21wbGV0aW9ucyIsImV4dHJhX2RvYyIsInBhcnNlIiwiY29tcGxldGUiLCJvZl9zdHJpbmciLCJvZl9sYXp5Iiwic3RyIiwiZXh0cmFfZG9jJDAiLCJzdHJpbmciLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJzZXhwX2NvbnYiLCJvZl9zZXhwIiwib2ZfYWxpc3RfZXhuIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJtYWtlIiwiY21wIiwiayIsImR1cGxpY2F0ZV9rZXlzIiwiUyIsInVuaXZfbWFwIiwic3VmZml4IiwidmFsdWVzIiwiYXJnIiwidiQwIiwidmFsaWRfYXJndW1lbnRzX2V4dHJhIiwiY29tcGxldGUkMCIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImJvb2wiLCJjb21tYV9zZXBhcmF0ZWQiLCJhbGxvd19lbXB0eSIsInN0cmlwX3doaXRlc3BhY2UiLCJ1bmlxdWVfdmFsdWVzIiwic3RyaXAiLCJjb21wbGV0ZV9lbHQiLCJ0bCIsImhkIiwicHJlZml4ZXMiLCJzZWVuX2FscmVhZHkiLCJpc19hbGxvd2VkIiwiY2hvaWNlIiwiY2hvaWNlcyQwIiwic3RyaW5nJDAiLCJlbnVtZXJhdGVfMDEyIiwiZW51bWVyYXRlXzAxMyIsImVudW1lcmF0ZV8wMTEiLCJlbnVtZXJhdGVfMDE0IiwiZW51bWVyYXRlXzAxMCIsImVudW1lcmF0ZV8wMTQkMCIsInBhcnNlJDAiLCJhY3Rpb24iLCJhcmdfZG9jIiwiZG9jJDEiLCJhcmdfZG9jJDAiLCJjb25jYXQiLCJ3cmFwX2lmX29wdGlvbmFsIiwiaGVscCIsImFsaWduIiwiYV8wMjAiLCJiXzAyMSIsImFyZ19mbGFnIiwiYXJnX3R5cGUiLCJyZWFkIiwid3JpdGUiLCJ1cGRhdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJpbnB1dCIsIndyaXRlX29wdGlvbiIsInJlcXVpcmVkX3ZhbHVlIiwiZGVmYXVsdCQwIiwicmVxdWlyZWQiLCJvcHRpb25hbF93aXRoX2RlZmF1bHQiLCJvcHRpb25hbCIsInZhbHVlIiwibm9fYXJnX2dlbmVyYWwiLCJpc19yZXF1aXJlZCIsImtleV92YWx1ZSIsImRlcHJlY2F0ZWRfaG9vayIsImFjdGlvbiQwIiwibm9fYXJnIiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3JlZ2lzdGVyIiwibm9fYXJnX3NvbWUiLCJsaXN0ZWQiLCJ4XzAyMiIsInZhbHVlX2xpc3QiLCJsaXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsInhfMDIzIiwicmVzdCIsImZpcnN0IiwicSIsIm9uZV9vcl9tb3JlX2FzX2xpc3QiLCJlc2NhcGVfZ2VuZXJhbCIsInhfMDI0IiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsImVtcHR5JDAiLCJhcHBlbmQiLCJzdWJjb21tYW5kIiwicGFydHMiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJsZW5ndGgiLCJyZXBsYWNlX2ZpcnN0IiwiZnJvbSIsInRvIiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJsYXN0IiwiaXNfZW1wdHkiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsInMkMCIsInplcm8iLCJjb25jYXQkMCIsImNkciIsImNhciIsInQyIiwidDEiLCJjZHIkMCIsImNhciQwIiwicGFyc2VfbW9yZSIsImZvcl9jb21wbGV0aW9uIiwidXBkYXRlX2VudiIsInBhcnNlciIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInN5bWJvbCQwIiwidF9sZWZ0IiwidF9yaWdodCIsImZfb3V0Y29tZSIsInhfb3V0Y29tZSIsIm1vcmUiLCJ0ciIsInRlc3QiLCJtb3JlJDAiLCJ0ZXN0JDAiLCJyZXR1cm4kMSIsInN5bWJvbF9tYXAiLCJmcm9tX2VudiIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQxIiwicmV0dXJuJDIiLCJyZXR1cm5fd2l0aF9hcmckMCIsIm9uZSIsImFub24iLCJzZXF1ZW5jZSIsImxvb3AiLCJjb25zdW1lIiwicGFja2VkIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsImExIiwiYTIiLCJ0MyIsImEzIiwidDQiLCJhNCIsIm5vcm1hbGl6ZSIsInN0cmxlbiIsInNwZWNpYWxfY2hhcnMiLCJoYXNfc3BlY2lhbF9jaGFycyIsInN5bWJvbCQyIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI5IiwiYV8wMjciLCJiXzAzMCIsImJfMDI4IiwiYV8wMzEiLCJiXzAzMiIsIm9mX2xpc3QiLCJhcmdzIiwieCQwIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiYyIsImN1c3RvbV9wcmludGZfMDMzIiwiY3VzdG9tX3ByaW50Zl8wMzQiLCJzdWJjb21tYW5kX2NtcF9mc3QiLCJzaGFwZSIsInBhdGhfa2V5IiwiYXJnc19rZXkiLCJoZWxwX2tleSIsInJ1bl9leG4iLCJleG4iLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwiZXhuX3N0ciIsInZlcmJvc2UiLCJlcnJvcl9tc2ciLCJydW4iLCJ3aGVuX3BhcnNpbmdfc3VjY2VlZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0Iiwib25fZmFpbHVyZSIsInBhcnNlciQxIiwiZW52JDEiLCJjbWRsaW5lJDAiLCJhcmdzJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwibmFtZV9tYXRjaGluZyIsImFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIiwiYWxpYXMiLCJzMiIsInMxIiwiZmxhZyQwIiwiZmxhZyQxIiwiZiQxIiwiaW5mbyIsImNvbXBsZXRpbmciLCJjb21wIiwiZiQyIiwiZSQwIiwiY29tcCQwIiwiZiQzIiwiYXJnX2xpc3QiLCJjbWRsaW5lJDIiLCJlbnYkMiIsInBhcnNlX2ZsYWdzMiIsImVudiQzIiwicGFyc2VfZmxhZ3MkMCIsInBhcnQkMCIsIm1haW4iLCJmJDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJ0JDciLCJ3cmFwX3ZhbHVlIiwiYXBwbHkkMSIsImVtcHR5X3NwZWMiLCJtYXBfb3V0Y29tZSIsImxvb2t1cCIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiZmxvYXQkMSIsImJvb2wkMCIsInNleHAkMCIsInNleHBfY29udiQwIiwic3BlYyIsIm91dGNvbWUiLCJlc2NhcGVfYW5vbiIsImZpbmFsX2Fub24iLCJmdWxsX2ZsYWdfcmVxdWlyZWQiLCJtb2RlIiwiY2hlY2tfYXZhaWxhYmxlIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJyZXR1cm4kMyIsIm9wdGlvbmFsX3RvX3JlcXVpcmVkIiwiYm90aCIsImFyZ19uYW1lcyIsImZsYWdfbmFtZXMiLCJhbm9uX25hbWVzIiwiYV8wMzYiLCJiXzAzNyIsImFfMDM4IiwiYl8wMzkiLCJhXzA0MCIsImJfMDQxIiwieF8wNDIiLCJjcmVhdGVfZXhuIiwicmVxdWlyZWRfYXJncyIsIm5hbWVzX3dpdGhfY29tbWFzIiwieF8wNDMiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsIiwiaWZfbm90aGluZ19jaG9zZW4iLCJuZXdfYmVoYXZpb3IiLCJuYW1lX29mX3RoZV9ncm91cCIsImZsYWdfaW50ZXJuYWwiLCJleGNlcHQiLCJsIiwidHMkMCIsImFyZ19jb3VudGVyIiwibW9yZV90aGFuX29uZV9lcnJvciIsInBhc3NlZCIsImN1c3RvbV9wcmludGZfMDQ0IiwiZXJyb3JfbGlzdCIsInN1Y2Nlc3NfbGlzdCIsInZhbHVlJDAiLCJjdXN0b21fcHJpbnRmXzA0NSIsImNob29zZV9vbmUiLCJjaG9vc2Vfb25lX25vbl9vcHRpb25hbCQwIiwibHN0IiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInBhcnNlJDEiLCJwYXJhbXMiLCJzeW1ib2wkNiIsImYxIiwiZjIiLCJzeW1ib2wkNyIsInAyIiwic3ltYm9sJDgiLCJzdGVwIiwiY29uc3QkMCIsIndyYXAiLCJvZl9wYXJhbSIsInAiLCJ0b19wYXJhbSIsIm0iLCJzdHJpbmckMSIsImludCQyIiwiY2hhciQyIiwiZmxvYXQkMiIsImJvb2wkMSIsInNleHAkMSIsInNleHBfY29udiQxIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJnZW4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0Iiwic2V0X2Jvb2wiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1Iiwic2hhcGUkMCIsInN1YmNvbW1hbmRfdG9fc2hhcGUiLCJjb21wX2N3b3JkIiwic2hhcGUkMSIsInNleHBhYmxlX3NoYXBlIiwiYmFzZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwibWVtIiwiYWRkIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljIiwiZmxhZ3MkMSIsImJhc2UkMCIsImJhc2ljX3NwZWMiLCJzdWJzX2tleSIsImxhenlfZ3JvdXAiLCJwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIiwiYm9keSIsInAkMCIsInAkMSIsInAkMiIsIm9mX2xhenkkMCIsInByb3h5X29mX3NleHBhYmxlIiwic2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQiLCJraW5kIiwia2luZF9vZl9zZXhwYWJsZSIsInBhdGhfdG9fc3ViY29tbWFuZCQwIiwicHJveHkiLCJwcmludF92ZXJzaW9uIiwidmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsImFkZCQwIiwidW52ZXJzaW9uZWQiLCJiYXNlJDEiLCJub3JtYWxpemVfdmVyc2lvbl9saW5lcyIsImRlZmF1bHRfdmVyc2lvbiIsImRlZmF1bHRfYnVpbGRfaW5mbyIsInJlcHJpbnRfYnVpbGRfaW5mbyIsInRvX3NleHAiLCJ4JDEiLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsImgiLCJwYXRoJDEiLCJiYXNpYyQwIiwicGFyYW0iLCJiYXNpY19vcl9lcnJvciIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsImdldHBpZCIsImNsb3NlIiwiaW5fY2hhbm5lbF9vZl9kZXNjciIsIndhaXQiLCJnZXRlbnZfYW5kX2NsZWFyIiwidmFyJDAiLCJvZl9leHRlcm5hbCIsImhlbHBfc2V4cCIsInByb2ciLCJjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHIiLCJlbnZfdmFyIiwiYXJndjAiLCJwcm9nX3NlYXJjaF9wYXRoIiwibGlzdCQwIiwibGlzdCQxIiwicHJvY2Vzc19pbmZvIiwic3RhcnRfcmVhZGluZyIsImRlc2NyIiwib3V0cHV0IiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsImV4biQwIiwic2hhcGVfb2ZfcHJveHkiLCJzaGFwZV9vZl9wcm94eV9raW5kIiwic2hhcGVfb2ZfZXhlIiwic2hhcGUkMiIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImxvb3AkMCIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsIm1heWJlX25ld19jb21wX2N3b3JkIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJhcmdzJDEiLCJkaWVfc2hvd2luZ19oZWxwIiwiYXJncyQyIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQkMCIsIm1heWJlX25ld19jb21wX2N3b3JkJDEiLCJyZXNvbHZlIiwic3ViIiwic3VicyQwIiwiYm9keSQwIiwidG9fb3V0cHV0IiwicmVzdF9vZl9yZXN0IiwiZmlyc3Rfb2ZfcmVzdCIsImFyZ3MkMyIsIm5ld192YWx1ZSQwIiwibmV3X3ZhbHVlIiwicnVuJDAiLCJhcmd2IiwiYnVpbGRfaW5mbyQwIiwidmVyc2lvbiQwIiwic3VwcG9ydGVkX3ZlcnNpb25zJDAiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMSIsInBhdGhfdG9fc3ViY29tbWFuZCQyIiwiZm5hbWUiLCJhcmd2XzAiLCJjb21wX2N3b3JkJDAiLCJkZXByZWNhdGVkX3J1biIsImlzX2hlbHAiLCJpc19oZWxwX3JlYyIsImlzX2hlbHBfcmVjX2ZsYWdzIiwiaXNfZXhwYW5kX2RvdHMiLCJwYXRoX3N0cmluZ3MiLCJhcmdzJDQiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsImNyZWF0ZSIsInYiLCJjcmVhdGVfZXhuIiwidmFsdWUiLCJ0IiwiYnl0ZXNfcGVyX3dvcmQiLCJieXRlcyIsInBhc3MiLCJmYWlscyIsIm1lc3NhZ2UiLCJhIiwic2V4cF9vZl9hIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwiZmFpbF9zIiwic2V4cCIsImNvbWJpbmUiLCJ0MSIsInQyIiwib2ZfbGlzdCIsIm5hbWUiLCJ0IiwiZXJyb3IiLCJwYXRoIiwibmFtZV9saXN0IiwibiIsImwiLCJmYWlsX2ZuIiwicGFzc19ib29sIiwicGFzc191bml0IiwicHJvdGVjdCIsImYiLCJ2IiwiZXhuJDAiLCJleG4iLCJ0cnlfd2l0aCIsInBhdGhfc3RyaW5nIiwiZXJyb3JzIiwicmVzdWx0IiwieF8wMDUiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsIm1heWJlX3JhaXNlIiwidmFsaWRfb3JfZXJyb3IiLCJjaGVjayIsIngiLCJmaWVsZF9kaXJlY3QiLCJmbGQiLCJyZWNvcmQiLCJmaWVsZCIsImZpZWxkX2ZvbGRlciIsImFjYyIsImZpZWxkX2RpcmVjdF9mb2xkZXIiLCJhbGwiLCJjaGVja3MiLCJjaGVja3MkMCIsImVycnMiLCJjaGVja3MkMSIsImVyciIsImVycnMkMCIsIm9mX3Jlc3VsdCIsIm9mX2Vycm9yIiwiYm9vbHRlc3QiLCJpZl9mYWxzZSIsInBhaXIiLCJmc3QiLCJzbmQiLCJzbmRfdmFsdWUiLCJmc3RfdmFsdWUiLCJsaXN0X2luZGV4ZWQiLCJsaXN0IiwiaSIsImVsIiwiZXh0cmFjdF9uYW1lIiwiYWxpc3QiLCJsaXN0JDAiLCJrZXkiLCJmaXJzdF9mYWlsdXJlIiwib2ZfZXJyb3Jfb3B0IiwiYm91bmRlZCIsImxvd2VyIiwidXBwZXIiLCJjb21wYXJlIiwiaW5jbCIsImV4Y2wiLCJpbmNsJDAiLCJleGNsJDAiLCJzeW1ib2wiLCJuYW1lIiwic2V4cF9vZl9iaWdzdHJpbmciLCJiaWdzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2ZfbWF0IiwibWF0X29mX3NleHAiLCJzZXhwX29mX3ZlYyIsInZlY19vZl9zZXhwIiwic2V4cF9vZl9vcGFxdWUiLCJvcGFxdWVfb2Zfc2V4cCIsInNleHBfb2ZfcGFpciIsInBhaXJfb2Zfc2V4cCIsIm9mX3NleHBfZXJyb3IiLCJvZl9zZXhwX2Vycm9yX2V4biIsImdyb3VwIiwiYmluX3NoYXBlX3NleHBfb3BhcXVlIiwiYSIsImJpbl9zaXplX3NleHBfb3BhcXVlIiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3NleHBfb3BhcXVlIiwid3JpdGVfYSIsImJpbl93cml0ZXJfc2V4cF9vcGFxdWUiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfc2V4cF9vcGFxdWUiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSQwIiwiYmluX3JlYWRlcl9zZXhwX29wYXF1ZSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fc2V4cF9vcGFxdWUiLCJiaW5fYSIsImNvbXBhcmVfc2V4cF9vcGFxdWUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJoYXNoX2ZvbGRfc2V4cF9vcGFxdWUiLCJoYXNoX2ZvbGRfYSIsImhzdiIsImFyZyIsInR5cGVuYW1lX29mX3NleHBfb3BhcXVlIiwidHlwZXJlcF9vZl9zZXhwX29wYXF1ZSIsIm5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl9mdW5jdGlvbiIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX3VuaXQiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9mbG9hdCIsInR5cGVuYW1lX29mX2NoYXIiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVuYW1lX29mX25hdGl2ZWludCIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfaW50MzIiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlcmVwX29mX3R1cGxlNSIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlMiIsInR5cGVyZXBfb2ZfdHVwbGUwIiwidHlwZXJlcF9vZl9mdW5jdGlvbiIsInR5cGVyZXBfb2ZfcmVmIiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlcmVwX29mX3VuaXQiLCJ0eXBlcmVwX29mX2Jvb2wiLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9jaGFyIiwidHlwZXJlcF9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfbmF0aXZlaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludCIsIndpdGhfcmV0dXJuIiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJ0X3NleHBfZ3JhbW1hciIsIm9mX3N0cmluZyIsIngiLCJ0b19zdHJpbmciLCJ0b19iaW5hYmxlIiwib2ZfYmluYWJsZSIsImNhbGxlcl9pZGVudGl0eSIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInYxIiwidjEkMCIsImJpbl93cml0ZV90IiwicG9zIiwicG9zJDAiLCJwb3MkMSIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJhcmdfMSIsImFyZ18xJDAiLCJ4JDAiLCJvZl9iaWdzdHJpbmciLCJtIiwiYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2xlbmd0aCIsInRvX2JpZ3N0cmluZyIsInByZWZpeF93aXRoX2xlbmd0aCIsInRfbGVuZ3RoIiwiZXByaW50ZiIsImZwcmludGYiLCJrZnByaW50ZiIsInByaW50ZiIsImV4aXRmIiwiZm10IiwiY29sbGVjdF90b19zdHJpbmciLCJmIiwiZG9uZSIsIm91dHB1dCIsImVyciQzIiwiZXJyJDIiLCJlcnIkMSIsImVyciQwIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNCIsImVycm9yX3NvdXJjZV8wMDkiLCJuYW1lJDAiLCJlcnJvcl9zb3VyY2VfMDE4IiwiZXJyb3Jfc291cmNlXzAyMCIsIm5hbWUkMSIsImVycm9yX3NvdXJjZV8wMzMiLCJlcnJvcl9zb3VyY2VfMDM1IiwibmFtZSQyIiwiZXJyb3Jfc291cmNlXzA1MSIsImVycm9yX3NvdXJjZV8wNTMiLCJuYW1lJDMiLCJlcnJvcl9zb3VyY2VfMDY0IiwibmFtZSQ0IiwiZXJyb3Jfc291cmNlXzA4MiIsImVycm9yX3NvdXJjZV8wODQiLCJuYW1lJDUiLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsImNvbXBhcmUiLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ4XzAwNSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInhfMDEwIiwic2V4cF9vZl90JDAiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsImJpbl9yZWFkZXJfdCQxIiwiYmluX3QkMSIsImNvbXBhcmUkMSIsImFfMDExIiwiYl8wMTIiLCJoYXNoX2ZvbGRfdCQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAxNiIsImF0b21fMDE0IiwiYXRvbV8wMTQkMCIsInRfb2Zfc2V4cCQyIiwic2V4cF8wMTkiLCJzZXhwX29mX3QkMSIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImJpbl93cml0ZV90JDIiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDIxIiwiYl8wMjIiLCJyaWdodF8wMjQiLCJsZWZ0XzAyMyIsImhhc2hfZm9sZF90JDIiLCJoc3YkMCIsImhhc2gkMiIsInRfb2Zfc2V4cCQzIiwic2V4cF8wMjgiLCJhdG9tXzAyNiIsInNleHBfYXJnc18wMjkiLCJhdG9tXzAyNiQwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInRfb2Zfc2V4cCQ0Iiwic2V4cF8wMzQiLCJzZXhwX29mX3QkMiIsInZfMDM2IiwiZ3JvdXAkMyIsImJpbl9zaGFwZV90JDMiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwiYmluX3dyaXRlcl90JDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImJpbl90JDMiLCJjb21wYXJlJDMiLCJhXzAzNyIsImJfMDM4IiwicmlnaHRfMDQyIiwibGVmdF8wNDEiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDUiLCJzZXhwXzA1MiIsImF0b21fMDQ0Iiwic2V4cF9hcmdzXzA0NyIsImF0b21fMDQ0JDAiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwic2V4cF9vZl90JDMiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsInN0YWJsZV93aXRuZXNzIiwiZ2xvYmFsaXplIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9ub2JvZHkiLCJiaW5fc2l6ZV9ub2JvZHkiLCJiaW5fd3JpdGVfbm9ib2R5IiwiYmluX3dyaXRlcl9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkkMCIsImJpbl9yZWFkZXJfbm9ib2R5IiwiYmluX25vYm9keSIsImNvbXBhcmVfbm9ib2R5IiwiaGFzaF9mb2xkX25vYm9keSIsImZ1bmMiLCJoYXNoX25vYm9keSIsIm5vYm9keV9vZl9zZXhwIiwic2V4cF9vZl9ub2JvZHkiLCJzdGFibGVfd2l0bmVzc19ub2JvZHkiLCJncm91cCQ3IiwiYmluX3NoYXBlX21lIiwiYmluX3NpemVfbWUiLCJiaW5fd3JpdGVfbWUiLCJiaW5fd3JpdGVyX21lIiwiYmluX3JlYWRfbWUiLCJiaW5fcmVhZF9tZSQwIiwiYmluX3JlYWRlcl9tZSIsImJpbl9tZSIsImNvbXBhcmVfbWUiLCJoYXNoX2ZvbGRfbWUiLCJmdW5jJDAiLCJoYXNoX21lIiwibWVfb2Zfc2V4cCIsInNleHBfb2ZfbWUiLCJzdGFibGVfd2l0bmVzc19tZSIsImdyb3VwJDgiLCJiaW5fc2hhcGVfdCQ1IiwiYmluX3NpemVfdCQ1IiwiYmluX3dyaXRlX3QkNSIsImJpbl93cml0ZXJfdCQ1IiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkX3QkMTMiLCJiaW5fcmVhZGVyX3QkNSIsImJpbl90JDUiLCJjb21wYXJlJDUiLCJhXzEwMSIsImJfMTAyIiwiYV8xMDMiLCJiXzEwNCIsInJpZ2h0XzA3MiIsImxlZnRfMDcxIiwiaGFzaF9mb2xkX3Blcm1zIiwicGVybXNfb2Zfc2V4cCIsIm9mX2FfMTA3IiwieF8xMDkiLCJzZXhwXzA3NCIsImF0b21fMDc1Iiwic2V4cF9hcmdzXzA3OCIsImF0b21fMDc1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9vZl9wZXJtcyIsIm9mX2FfMTEwIiwieF8xMTEiLCJ2XzA4NyIsImdsb2JhbGl6ZV9wZXJtcyIsImdyb3VwJDkiLCJiaW5fc2hhcGVfcmVhZCIsImJpbl9zaXplX3JlYWQiLCJiaW5fd3JpdGVfcmVhZCIsImJpbl93cml0ZXJfcmVhZCIsImJpbl9yZWFkX3JlYWQiLCJiaW5fcmVhZF9yZWFkJDAiLCJiaW5fcmVhZGVyX3JlYWQiLCJiaW5fcmVhZCIsImNvbXBhcmVfcmVhZCIsImdsb2JhbGl6ZV9yZWFkIiwiaGFzaF9mb2xkX3JlYWQiLCJmdW5jJDEiLCJoYXNoX3JlYWQiLCJyZWFkX29mX3NleHAiLCJzZXhwX29mX3JlYWQiLCJzdGFibGVfd2l0bmVzc19yZWFkIiwiY29tcGFyZV93cml0ZSIsImhhc2hfZm9sZF93cml0ZSIsImZ1bmMkMiIsImhhc2hfd3JpdGUiLCJnbG9iYWxpemVfd3JpdGUiLCJ3cml0ZV9vZl9zZXhwIiwic2V4cF9vZl93cml0ZSIsInN0YWJsZV93aXRuZXNzX3dyaXRlIiwiZ3JvdXAkMTAiLCJiaW5fc2hhcGVfaW1tdXRhYmxlIiwiYmluX3NpemVfaW1tdXRhYmxlIiwiYmluX3dyaXRlX2ltbXV0YWJsZSIsImJpbl93cml0ZXJfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlJDAiLCJiaW5fcmVhZGVyX2ltbXV0YWJsZSIsImJpbl9pbW11dGFibGUiLCJjb21wYXJlX2ltbXV0YWJsZSIsImdsb2JhbGl6ZV9pbW11dGFibGUiLCJoYXNoX2ZvbGRfaW1tdXRhYmxlIiwiZnVuYyQzIiwiaGFzaF9pbW11dGFibGUiLCJpbW11dGFibGVfb2Zfc2V4cCIsInNleHBfb2ZfaW1tdXRhYmxlIiwic3RhYmxlX3dpdG5lc3NfaW1tdXRhYmxlIiwiZ3JvdXAkMTEiLCJiaW5fc2hhcGVfcmVhZF93cml0ZSIsImJpbl9zaXplX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVfcmVhZF93cml0ZSIsImJpbl93cml0ZXJfcmVhZF93cml0ZSIsImJpbl9yZWFkX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlJDAiLCJiaW5fcmVhZGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF93cml0ZSIsImNvbXBhcmVfcmVhZF93cml0ZSIsImdsb2JhbGl6ZV9yZWFkX3dyaXRlIiwiaGFzaF9mb2xkX3JlYWRfd3JpdGUiLCJmdW5jJDQiLCJoYXNoX3JlYWRfd3JpdGUiLCJyZWFkX3dyaXRlX29mX3NleHAiLCJzZXhwX29mX3JlYWRfd3JpdGUiLCJzdGFibGVfd2l0bmVzc19yZWFkX3dyaXRlIiwiZ3JvdXAkMTIiLCJiaW5fc2hhcGVfcGVybXMiLCJiaW5fc2l6ZV9wZXJtcyIsImJpbl93cml0ZV9wZXJtcyIsImJpbl93cml0ZXJfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyIsImJpbl9yZWFkX3Blcm1zJDAiLCJiaW5fcmVhZGVyX3Blcm1zIiwiYmluX3Blcm1zIiwiY29tcGFyZV9wZXJtcyIsImFfMTI4IiwiYl8xMjkiLCJhXzEzMCIsImJfMTMxIiwic3RhYmxlX3dpdG5lc3NfcGVybXMiLCJhX3N0YWJsZV93aXRuZXNzIiwibWFrZSIsImVycm9yX3NvdXJjZV8wMTEiLCJzaXplX29mX2YiLCJzaXplX29mX3MiLCJ3cml0ZV9mIiwid3JpdGVfcyIsImJpbl93cml0ZXJfZiIsImJpbl93cml0ZXJfcyIsIm9mX2YiLCJvZl9zIiwiYmluX3JlYWRlcl9mIiwiYmluX3JlYWRlcl9zIiwiYmluX2YiLCJiaW5fcyIsImNtcF9mIiwiY21wX3MiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsInYwIiwidGFnMCIsInRhZzEiLCJ0eXBlbmFtZSIsInRhZ3MiLCJ2YWx1ZSIsInYwJDAiLCJmX3N0YWJsZV93aXRuZXNzIiwic19zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYxIiwiZjIiLCJ4MSIsIngyIiwiY21wX2IiLCJhXzAzNiIsImJfMDM3IiwiYV8wMzgiLCJiXzAzOSIsImFfMDQwIiwiYl8wNDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwibmFtZXMiLCJ2NCIsInYzIiwidjIiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwicG9zJDIiLCJ2X3Bvc19mbmFtZSIsInZfcG9zX2xudW0iLCJ2X3Bvc19ib2wiLCJ2X3Bvc19jbnVtIiwibiIsIm4kMCIsIm4kMSIsInBvc19jbnVtIiwiciIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19jbnVtJDAiLCJwb3NfYm9sJDAiLCJwb3NfbG51bSQwIiwicG9zX2ZuYW1lJDAiLCJtYWtlX2NyZWF0b3IiLCJwb3NfZm5hbWVfZnVuIiwicG9zX2xudW1fZnVuIiwicG9zX2JvbF9mdW4iLCJwb3NfY251bV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJwb3NfZm5hbWVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsInBvc19sbnVtX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJwb3NfYm9sX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJwb3NfY251bV9nZW4iLCJhY2MiLCJjcmVhdGUiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwicG9zX2NudW1fMDEzIiwicG9zX2JvbF8wMTEiLCJwb3NfbG51bV8wMDkiLCJwb3NfZm5hbWVfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiYTAiLCJhMCQwIiwic3RhYmxlX3dpdG5lc3MkMCIsInN0YWJsZV93aXRuZXNzX2NoZWNrc19mb3JfdCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYyJDAiLCJ2MSQ0IiwidjMkMCIsInYyJDEiLCJ2MSQ1Iiwic2l6ZSQyIiwic2l6ZSQzIiwidjIkMiIsInYxJDYiLCJzaXplJDQiLCJ2MiQzIiwidjEkNyIsInNpemUkNSIsInBvcyQzIiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMSIsImFyZ18xJDIiLCJhcmdfMSQzIiwiYXJnXzIiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInN0YWJsZV93aXRuZXNzJDEiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMCIsInN0YWJsZV93aXRuZXNzJDIiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMSIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJ0X3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl90JDYiLCJ0X3NleHBfZ3JhbW1hciQxIiwic3RhYmxlX3dpdG5lc3MkMyIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYmluX3NoYXBlX3QkNiIsImJpbl9zaXplX3QkNiIsImJpbl93cml0ZV90JDYiLCJmYWlsd2l0aHMiLCJzdHJpY3QiLCJoZXJlIiwibWVzc2FnZSIsImZhaWx3aXRocCIsInRlc3RzIiwiYiIsInNpemVfb2ZfYiIsIndyaXRlX2IiLCJiaW5fd3JpdGVyX2IiLCJvZl9iIiwiYmluX3JlYWRlcl9iIiwiYmluX2IiLCJvZl9hXzAxNCIsIm9mX2JfMDE1Iiwic2V4cF8wMjAiLCJ0YWdfMDIxIiwic2V4cF9hcmdzXzAyMiIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvZl9hXzAzMiIsIm9mX2JfMDMzIiwiYXJnMF8wMzQiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYl9zdGFibGVfd2l0bmVzcyIsInhfMDQ3IiwieF8wNDgiLCJlcXVhbCIsInhfMDQ5IiwieF8wNTAiLCJhXzA0MiIsImJfMDQzIiwiYV8wNDQiLCJiXzA0NSIsInJ1biIsInNhbml0aXplIiwidXBvbl91bnJlbGVhc2FibGVfaXNzdWUiLCJvZl9hXzAwNyIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsIm9mX2FfMDE4IiwieF8wMjAiLCJvZl9hXzAyMSIsInhfMDIyIiwibWFwJDEiLCJ2X3N0YXRlIiwidl92YWx1ZSIsInZfc3RhdGUkMCIsIm1lcmdlX2FsbCIsIkhlYXAiLCJub3RfeWV0X2luX2hlYXAiLCJoZWFwIiwiaGVhcCQwIiwic2VxJDIiLCJlbHQkMCIsIm5vdF95ZXRfaW5faGVhcCQwIiwic2VxIiwic2VxJDAiLCJzZXEkMSIsImVsdCIsImRlZmF1bHRfc2VlZCIsImRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDIiLCJnZW5lcmF0b3JfMDEyIiwiZ2VuZXJhdG9yXzAxMyIsInNpemVfMDE2IiwicmFuZG9tXzAxNyIsInNpemVfMDE0IiwicmFuZG9tXzAxNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDIiLCJvYnNlcnZlcl8wMDUiLCJvYnNlcnZlcl8wMDYiLCJ4XzAwNyIsInNpemVfMDA4IiwiaGFzaF8wMDkiLCJoYXNoXzAwOSQwIiwiaGFzaF8wMDkkMSIsImhhc2hfMDA5JDIiLCJoYXNoXzAwOSQzIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MiIsInNocmlua2VyXzAwMSIsInNocmlua2VyXzAwMiIsInhfMDA0IiwieF8wMDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MyIsImdlbmVyYXRvcl8wMzMiLCJnZW5lcmF0b3JfMDM0IiwiZ2VuZXJhdG9yXzAzNSIsInNpemVfMDQwIiwicmFuZG9tXzA0MSIsInNpemVfMDM4IiwicmFuZG9tXzAzOSIsInNpemVfMDM2IiwicmFuZG9tXzAzNyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDMiLCJvYnNlcnZlcl8wMjQiLCJvYnNlcnZlcl8wMjUiLCJvYnNlcnZlcl8wMjYiLCJ4XzAyNyIsInNpemVfMDI4IiwiaGFzaF8wMjkiLCJ4XzAzMCIsImhhc2hfMDI5JDAiLCJoYXNoXzAyOSQxIiwieF8wMzEiLCJoYXNoXzAyOSQyIiwiaGFzaF8wMjkkMyIsInhfMDMyIiwiaGFzaF8wMjkkNCIsImhhc2hfMDI5JDUiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzIiwic2hyaW5rZXJfMDE4Iiwic2hyaW5rZXJfMDE5Iiwic2hyaW5rZXJfMDIwIiwieF8wMjEiLCJ4XzAyMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0IiwiZ2VuZXJhdG9yXzA2MSIsImdlbmVyYXRvcl8wNjIiLCJnZW5lcmF0b3JfMDYzIiwiZ2VuZXJhdG9yXzA2NCIsInNpemVfMDcxIiwicmFuZG9tXzA3MiIsInNpemVfMDY5IiwicmFuZG9tXzA3MCIsInNpemVfMDY3IiwicmFuZG9tXzA2OCIsInNpemVfMDY1IiwicmFuZG9tXzA2NiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDQiLCJvYnNlcnZlcl8wNTAiLCJvYnNlcnZlcl8wNTEiLCJvYnNlcnZlcl8wNTIiLCJvYnNlcnZlcl8wNTMiLCJ4XzA1NCIsInNpemVfMDU1IiwiaGFzaF8wNTYiLCJ4XzA1NyIsImhhc2hfMDU2JDAiLCJoYXNoXzA1NiQxIiwieF8wNTgiLCJoYXNoXzA1NiQyIiwiaGFzaF8wNTYkMyIsInhfMDU5IiwiaGFzaF8wNTYkNCIsImhhc2hfMDU2JDUiLCJ4XzA2MCIsImhhc2hfMDU2JDYiLCJoYXNoXzA1NiQ3IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NCIsInNocmlua2VyXzA0MiIsInNocmlua2VyXzA0MyIsInNocmlua2VyXzA0NCIsInNocmlua2VyXzA0NSIsInhfMDQ2IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDUiLCJnZW5lcmF0b3JfMDk2IiwiZ2VuZXJhdG9yXzA5NyIsImdlbmVyYXRvcl8wOTgiLCJnZW5lcmF0b3JfMDk5IiwiZ2VuZXJhdG9yXzEwMCIsInNpemVfMTA5IiwicmFuZG9tXzExMCIsInNpemVfMTA3IiwicmFuZG9tXzEwOCIsInNpemVfMTA1IiwicmFuZG9tXzEwNiIsInNpemVfMTAzIiwicmFuZG9tXzEwNCIsInNpemVfMTAxIiwicmFuZG9tXzEwMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDUiLCJvYnNlcnZlcl8wODMiLCJvYnNlcnZlcl8wODQiLCJvYnNlcnZlcl8wODUiLCJvYnNlcnZlcl8wODYiLCJvYnNlcnZlcl8wODciLCJ4XzA4OCIsInNpemVfMDg5IiwiaGFzaF8wOTAiLCJ4XzA5MSIsImhhc2hfMDkwJDAiLCJoYXNoXzA5MCQxIiwieF8wOTIiLCJoYXNoXzA5MCQyIiwiaGFzaF8wOTAkMyIsImhhc2hfMDkwJDQiLCJoYXNoXzA5MCQ1IiwiaGFzaF8wOTAkNiIsImhhc2hfMDkwJDciLCJ4XzA5NSIsImhhc2hfMDkwJDgiLCJoYXNoXzA5MCQ5IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NSIsInNocmlua2VyXzA3MyIsInNocmlua2VyXzA3NCIsInNocmlua2VyXzA3NSIsInNocmlua2VyXzA3NiIsInNocmlua2VyXzA3NyIsInhfMDc4IiwieF8wNzkiLCJ4XzA4MCIsInhfMDgxIiwieF8wODIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NiIsImdlbmVyYXRvcl8xMzgiLCJnZW5lcmF0b3JfMTM5IiwiZ2VuZXJhdG9yXzE0MCIsImdlbmVyYXRvcl8xNDEiLCJnZW5lcmF0b3JfMTQyIiwiZ2VuZXJhdG9yXzE0MyIsInNpemVfMTU0IiwicmFuZG9tXzE1NSIsInNpemVfMTUyIiwicmFuZG9tXzE1MyIsInNpemVfMTUwIiwicmFuZG9tXzE1MSIsInNpemVfMTQ4IiwicmFuZG9tXzE0OSIsInNpemVfMTQ2IiwicmFuZG9tXzE0NyIsInNpemVfMTQ0IiwicmFuZG9tXzE0NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDYiLCJvYnNlcnZlcl8xMjMiLCJvYnNlcnZlcl8xMjQiLCJvYnNlcnZlcl8xMjUiLCJvYnNlcnZlcl8xMjYiLCJvYnNlcnZlcl8xMjciLCJvYnNlcnZlcl8xMjgiLCJ4XzEyOSIsInNpemVfMTMwIiwiaGFzaF8xMzEiLCJ4XzEzMiIsImhhc2hfMTMxJDAiLCJoYXNoXzEzMSQxIiwieF8xMzMiLCJoYXNoXzEzMSQyIiwiaGFzaF8xMzEkMyIsInhfMTM0IiwiaGFzaF8xMzEkNCIsImhhc2hfMTMxJDUiLCJ4XzEzNSIsImhhc2hfMTMxJDYiLCJoYXNoXzEzMSQ3IiwieF8xMzYiLCJoYXNoXzEzMSQ4IiwiaGFzaF8xMzEkOSIsInhfMTM3IiwiaGFzaF8xMzEkMTAiLCJoYXNoXzEzMSQxMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDYiLCJzaHJpbmtlcl8xMTEiLCJzaHJpbmtlcl8xMTIiLCJzaHJpbmtlcl8xMTMiLCJzaHJpbmtlcl8xMTQiLCJzaHJpbmtlcl8xMTUiLCJzaHJpbmtlcl8xMTYiLCJ4XzExNyIsInhfMTE4IiwieF8xMTkiLCJ4XzEyMCIsInhfMTIxIiwieF8xMjIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTIiLCJnZW5lcmF0b3JfMTY2IiwiZ2VuZXJhdG9yXzE2NyIsInNpemVfMTY4IiwicmFuZG9tXzE2OSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyIiwib2JzZXJ2ZXJfMTYwIiwib2JzZXJ2ZXJfMTYxIiwic2l6ZV8xNjQiLCJoYXNoXzE2NSIsInhfMTYzIiwieF8xNjIiLCJoYXNoXzE2NSQwIiwiaGFzaF8xNjUkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyIiwic2hyaW5rZXJfMTU2Iiwic2hyaW5rZXJfMTU3IiwieF8xNTkiLCJ4XzE1OCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMyIsImdlbmVyYXRvcl8xODQiLCJnZW5lcmF0b3JfMTg1IiwiZ2VuZXJhdG9yXzE4NiIsInNpemVfMTg3IiwicmFuZG9tXzE4OCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzIiwib2JzZXJ2ZXJfMTc2Iiwib2JzZXJ2ZXJfMTc3Iiwib2JzZXJ2ZXJfMTc4Iiwic2l6ZV8xODIiLCJoYXNoXzE4MyIsInhfMTgxIiwieF8xODAiLCJ4XzE3OSIsImhhc2hfMTgzJDAiLCJoYXNoXzE4MyQxIiwiaGFzaF8xODMkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzIiwic2hyaW5rZXJfMTcwIiwic2hyaW5rZXJfMTcxIiwic2hyaW5rZXJfMTcyIiwieF8xNzUiLCJ4XzE3NCIsInhfMTczIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0IiwiZ2VuZXJhdG9yXzIwNyIsImdlbmVyYXRvcl8yMDgiLCJnZW5lcmF0b3JfMjA5IiwiZ2VuZXJhdG9yXzIxMCIsInNpemVfMjExIiwicmFuZG9tXzIxMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0Iiwib2JzZXJ2ZXJfMTk3Iiwib2JzZXJ2ZXJfMTk4Iiwib2JzZXJ2ZXJfMTk5Iiwib2JzZXJ2ZXJfMjAwIiwic2l6ZV8yMDUiLCJoYXNoXzIwNiIsInhfMjA0IiwieF8yMDMiLCJ4XzIwMiIsInhfMjAxIiwiaGFzaF8yMDYkMCIsImhhc2hfMjA2JDEiLCJoYXNoXzIwNiQyIiwiaGFzaF8yMDYkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0Iiwic2hyaW5rZXJfMTg5Iiwic2hyaW5rZXJfMTkwIiwic2hyaW5rZXJfMTkxIiwic2hyaW5rZXJfMTkyIiwieF8xOTYiLCJ4XzE5NSIsInhfMTk0IiwieF8xOTMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTUiLCJnZW5lcmF0b3JfMjM1IiwiZ2VuZXJhdG9yXzIzNiIsImdlbmVyYXRvcl8yMzciLCJnZW5lcmF0b3JfMjM4IiwiZ2VuZXJhdG9yXzIzOSIsInNpemVfMjQwIiwicmFuZG9tXzI0MSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1Iiwib2JzZXJ2ZXJfMjIzIiwib2JzZXJ2ZXJfMjI0Iiwib2JzZXJ2ZXJfMjI1Iiwib2JzZXJ2ZXJfMjI2Iiwib2JzZXJ2ZXJfMjI3Iiwic2l6ZV8yMzMiLCJoYXNoXzIzNCIsInhfMjMyIiwieF8yMzEiLCJ4XzIzMCIsInhfMjI5IiwieF8yMjgiLCJoYXNoXzIzNCQwIiwiaGFzaF8yMzQkMSIsImhhc2hfMjM0JDIiLCJoYXNoXzIzNCQzIiwiaGFzaF8yMzQkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1Iiwic2hyaW5rZXJfMjEzIiwic2hyaW5rZXJfMjE0Iiwic2hyaW5rZXJfMjE1Iiwic2hyaW5rZXJfMjE2Iiwic2hyaW5rZXJfMjE3IiwieF8yMjIiLCJ4XzIyMSIsInhfMjIwIiwieF8yMTkiLCJ4XzIxOCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNiIsImdlbmVyYXRvcl8yNjgiLCJnZW5lcmF0b3JfMjY5IiwiZ2VuZXJhdG9yXzI3MCIsImdlbmVyYXRvcl8yNzEiLCJnZW5lcmF0b3JfMjcyIiwiZ2VuZXJhdG9yXzI3MyIsInNpemVfMjc0IiwicmFuZG9tXzI3NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2Iiwib2JzZXJ2ZXJfMjU0Iiwib2JzZXJ2ZXJfMjU1Iiwib2JzZXJ2ZXJfMjU2Iiwib2JzZXJ2ZXJfMjU3Iiwib2JzZXJ2ZXJfMjU4Iiwib2JzZXJ2ZXJfMjU5Iiwic2l6ZV8yNjYiLCJoYXNoXzI2NyIsInhfMjY1IiwieF8yNjQiLCJ4XzI2MyIsInhfMjYyIiwieF8yNjEiLCJ4XzI2MCIsImhhc2hfMjY3JDAiLCJoYXNoXzI2NyQxIiwiaGFzaF8yNjckMiIsImhhc2hfMjY3JDMiLCJoYXNoXzI2NyQ0IiwiaGFzaF8yNjckNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2Iiwic2hyaW5rZXJfMjQyIiwic2hyaW5rZXJfMjQzIiwic2hyaW5rZXJfMjQ0Iiwic2hyaW5rZXJfMjQ1Iiwic2hyaW5rZXJfMjQ2Iiwic2hyaW5rZXJfMjQ3IiwieF8yNTMiLCJ4XzI1MiIsInhfMjUxIiwieF8yNTAiLCJ4XzI0OSIsInhfMjQ4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4yIiwib2JzZXJ2ZXJfMjgyIiwib2JzZXJ2ZXJfMjgzIiwiZ2VuZXJhdG9yXzI4NCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMyIsIm9ic2VydmVyXzI5MyIsIm9ic2VydmVyXzI5NCIsIm9ic2VydmVyXzI5NSIsImdlbmVyYXRvcl8yOTYiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjQiLCJvYnNlcnZlcl8zMDciLCJvYnNlcnZlcl8zMDgiLCJvYnNlcnZlcl8zMDkiLCJvYnNlcnZlcl8zMTAiLCJnZW5lcmF0b3JfMzExIiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm41Iiwib2JzZXJ2ZXJfMzI0Iiwib2JzZXJ2ZXJfMzI1Iiwib2JzZXJ2ZXJfMzI2Iiwib2JzZXJ2ZXJfMzI3Iiwib2JzZXJ2ZXJfMzI4IiwiZ2VuZXJhdG9yXzMyOSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNiIsIm9ic2VydmVyXzM0NCIsIm9ic2VydmVyXzM0NSIsIm9ic2VydmVyXzM0NiIsIm9ic2VydmVyXzM0NyIsIm9ic2VydmVyXzM0OCIsIm9ic2VydmVyXzM0OSIsImdlbmVyYXRvcl8zNTAiLCJvZl9oYXNoIiwiTSIsIm9mX3ByZWRpY2F0ZSIsInNpbmdsZXRvbiIsImRvdWJsZXRvbiIsImVudW0kMCIsIm9mX2xpc3QiLCJsaXN0IiwieSIsImkiLCJvZl9mdW4iLCJjb21wYXJpc29uIiwiZXEiLCJsdCIsImd0IiwiYyIsInJldHVybiQwIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJzaW5nbGV0b24kMCIsImRvdWJsZXRvbiQwIiwicmFuZG9tIiwib2ZfZnVuJDAiLCJvZl9zZXF1ZW5jZSIsInAiLCJrIiwiZ2VvbWV0cmljIiwibGlzdF93aXRoX2xlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVfZm4iLCJkb20iLCJnZXRfaW5kZXgiLCJiXzM1MiIsImFfMzUxIiwiZXF1YWxfZm4iLCJjbXAiLCJlbXB0eSIsIm5vbmRldGVybWluaXN0aWNfc3RhdGUiLCJyYW5kb21fc3RhdGVfb2Zfc2VlZCIsInNlZWQiLCJzdHIiLCJtYWtlX3NlZWQiLCJzdHJpbmciLCJtYWtlX3Nocmlua19jb3VudCIsIm1ha2VfY29uZmlnIiwic2l6ZXMiLCJ0cmlhbHMiLCJzaHJpbmtfYXR0ZW1wdHMiLCJtYWtlX3Rlc3RfbSIsImdlbiIsInNocmlua2VyIiwic2V4cF9vZiIsInJhbmRvbV92YWx1ZSIsInJhbmRvbV9zZXF1ZW5jZSIsImNvbmZpZyIsInNlcXVlbmNlIiwidGVzdCIsImV4YW1wbGVzIiwidGVzdF9tIiwidGVzdF9vcl9lcnJvciIsInRlc3RfZGlzdGluY3RfdmFsdWVzIiwiZGlzdGluY3RfdmFsdWVzIiwic2V4cF9vZiQwIiwic2V0Iiwic2V0JDAiLCJhY3R1YWxfY291bnQiLCJzZXhwX29mX2VsdCIsInhfMzUzIiwidmFsdWVzIiwibWF0Y2giLCJyZXMiLCJoIiwidGVzdF9jYW5fZ2VuZXJhdGUiLCJzZXhwX29mX3ZhbHVlIiwieF8zNTQiLCJkZWZhdWx0X3RyaWFsX2NvdW50IiwiZGVmYXVsdF9zaXplcyIsImdlbmVyYXRlX2EiLCJvYnNlcnZlX2EiLCJzaHJpbmtfYSIsIm5vcm1hbGl6ZSIsImxlbmd0aF9mdW4iLCJzbGljZSIsInN1Yl9mdW4iLCJzdGFydCIsInN0b3AiLCJzdG9wJDAiLCJsZW4iLCJnZW5lcmF0b3JfMDAzIiwib2JzZXJ2ZXJfMDAyIiwiYmluYXJ5X3NlYXJjaCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwib2ZfYXJyYXkiLCJhcHBlbmQiLCJmaWx0ZXIiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsInBhcnRpdGlvbl90ZiIsInBhcnRpdGlvbl9tYXAiLCJtZW0iLCJpc19lbXB0eSIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRpIiwiaXRlcmkiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJjb3VudGkiLCJmaW5kaSIsImZpbmRfbWFwaSIsIm1hcGkiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwibWFrZV9tYXRyaXgiLCJjb3B5X21hdHJpeCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiYmxpdCIsImJsaXRvIiwidW5zYWZlX2JsaXQiLCJzdWIiLCJzdWJvIiwiZm9sZGluZ19tYXAiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcCIsImZvbGRfbWFwaSIsImZvbGRfcmlnaHQiLCJzb3J0Iiwic3RhYmxlX3NvcnQiLCJpc19zb3J0ZWQiLCJpc19zb3J0ZWRfc3RyaWN0bHkiLCJtZXJnZSIsInBhcnRpdGlvbmlfdGYiLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsInRyYW5zcG9zZSIsInRyYW5zcG9zZV9leG4iLCJmaWx0ZXJfb3B0IiwiaXRlcjJfZXhuIiwibWFwMl9leG4iLCJmb2xkMl9leG4iLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyX2V4biIsInN3YXAiLCJyZXZfaW5wbGFjZSIsInJldiIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kX2V4biIsImZpbmRfbWFwX2V4biIsImZpbmRpX2V4biIsImZpbmRfbWFwaV9leG4iLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJwZXJtdXRlIiwicmFuZG9tX2VsZW1lbnQiLCJyYW5kb21fZWxlbWVudF9leG4iLCJ6aXAiLCJ6aXBfZXhuIiwidW56aXAiLCJzb3J0ZWRfY29weSIsImxhc3QiLCJ0b19zZXF1ZW5jZSIsInRvX3NlcXVlbmNlX211dGFibGUiLCJuZ2V0IiwibnNldCIsImdldCIsImNvbXBhcmVfdCIsImFfMDA0IiwiYl8wMDUiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiY29tcGFyZV9hIiwiY29tcGFyZV9iIiwidF8wMDYiLCJ0XzAwNSIsInRfMDA4IiwidF8wMDciLCJnZW5fbm9uX2VtcHR5IiwiZ2VuX3dpdGhfbGVuZ3RoIiwiZ2VuX2ZpbHRlcmVkIiwiZ2VuX3Blcm11dGF0aW9ucyIsIm1vZHVsZV9uYW1lJDAiLCJtb2R1bGVfbmFtZSIsImhhc2hhYmxlX3MiLCJmaW5kX211bHRpIiwicmVtb3ZlX211bHRpIiwiYWRkX211bHRpIiwiZGVjciIsImluY3IiLCJ0b19hbGlzdCIsInNpbWlsYXIiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwibWFwaV9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwiZmlsdGVyX2lucGxhY2UiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZGF0YSIsImtleXMiLCJtZXJnZV9pbnRvIiwiZmluZF9hbmRfcmVtb3ZlIiwiZmluZGlfYW5kX2NhbGwyIiwiZmluZGlfYW5kX2NhbGwxIiwiZmluZGlfYW5kX2NhbGwiLCJmaW5kX2FuZF9jYWxsMiIsImZpbmRfYW5kX2NhbGwxIiwiZmluZF9hbmRfY2FsbCIsImZpbmRpX29yX2FkZCIsImZpbmRfb3JfYWRkIiwicGFydGl0aW9uX21hcGkiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9yYW5kb21seV9leG4iLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfZXhuIiwiY2hvb3NlIiwicmVtb3ZlIiwiaXRlcl9rZXlzIiwiY2xlYXIiLCJzZXhwX29mX2tleSIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfbWFwcGVkIiwib2ZfYWxpc3RfbXVsdGkiLCJvZl9hbGlzdF9leG4iLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsIm9mX2FsaXN0IiwiaGFzaF9wYXJhbSIsInZhbGlkYXRlIiwiZ3Jvd3RoX2FsbG93ZWQiLCJoYXNoYWJsZSIsIm9mX2FsaXN0JDAiLCJsIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwiY3JlYXRlX21hcHBlZCQwIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsImNvbWJpbmUiLCJiaW5fc2hhcGVfZWwiLCJiaW5fc2l6ZV9lbCIsImJpbl93cml0ZV9lbCIsImJpbl9yZWFkX2VsIiwiaXRlciQxIiwia2V5IiwibmV4dCIsImludmFyaWFudF9rZXkiLCJzZXhwX29mX3YiLCJ2X29mX3NleHAiLCJkYXRhX3N0YWJsZV93aXRuZXNzIiwiZXF1YWxfbV90IiwibV90X3NleHBfZ3JhbW1hciIsIm1fdF9vZl9zZXhwIiwic2V4cF9vZl9tX3QiLCJvZl9hbGlzdF9vcHRpb24iLCJhbGlzdCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fdCIsIktleSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGEiLCJzaXplXzAwNCIsInJhbmRvbV8wMDUiLCJxdWlja2NoZWNrX29ic2VydmVyX21fdCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YSIsInhfMDA2IiwicXVpY2tjaGVja19zaHJpbmtlcl9tX3QiLCJxdWlja2NoZWNrX3Nocmlua2VyX2RhdGEiLCJoYXNoYWJsZSQwIiwib2ZfbGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzMSIsInNpemVfb2ZfayIsInNpemVfb2ZfdiIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJ3cml0ZV9rIiwid3JpdGVfdiIsImJpbl93cml0ZXJfayIsImJpbl93cml0ZXJfdiIsIm9mX2siLCJvZl92IiwiYmluX3JlYWRlcl9rIiwiYmluX3JlYWRlcl92IiwiYmluX2siLCJiaW5fdiIsImNtcF9rIiwiY21wX3YiLCJ0XzAwNCIsInRfMDAzIiwicmlnaHRfMDA4IiwibGVmdF8wMDciLCJyaWdodF8wMTIiLCJsZWZ0XzAxMSIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDEwIiwibGVmdF8wMDkiLCJvZl9rXzAxNyIsIm9mX3ZfMDE4Iiwic2V4cF8wNDUiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDMiLCJhdG9tXzAyMSIsInNleHBfYXJnc18wMjQiLCJhdG9tXzAyMSQwIiwiYXJnMF8wMzIiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJyZXMwXzAzMyIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzOCIsInJlczFfMDQ0Iiwib2Zfa18wNDYiLCJvZl92XzA0NyIsImFyZzFfMDU2IiwiYXJnMF8wNTUiLCJyZXMwXzA1NyIsInZfMDQ4IiwicmVzMV8wNTgiLCJ2XzA1MCIsImFyZzFfMDUyIiwiYXJnMF8wNTEiLCJyZXMwXzA1MyIsInJlczFfMDU0Iiwidl8wNDkiLCJrX3N0YWJsZV93aXRuZXNzIiwidl9zdGFibGVfd2l0bmVzcyIsImRpZmYiLCJrJDAiLCJkaWZmJDAiLCJ2JDAiLCJtYXBfZGF0YSIsImxlZnQiLCJyaWdodCIsImdlbl90cmVlIiwiY29tcGFyYXRvciIsImtfZ2VuIiwidl9nZW4iLCJvYnNfdHJlZSIsImtfb2JzIiwidl9vYnMiLCJzaHJfdHJlZSIsImtfc2hyIiwidl9zaHIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsIm9mX2hhc2h0YmxfZXhuIiwiaGFzaHRibCIsInRyZWVfb2ZfaGFzaHRibF9leG4iLCJrZXlfc2V0Iiwia2V5X3NldF9vZl90cmVlIiwib2Zfa2V5X3NldCIsInRyZWVfb2Zfa2V5X3NldCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJ0b190cmVlJDAiLCJyYW5rIiwibnRoX2V4biIsIm50aCIsImNsb3Nlc3Rfa2V5IiwicmFuZ2VfdG9fYWxpc3QiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInN1YnJhbmdlIiwic3BsaXRfbHRfZ2UiLCJzcGxpdF9sZV9ndCIsInNwbGl0IiwibWF4X2VsdF9leG4iLCJtaW5fZWx0X2V4biIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJzeW1tZXRyaWNfZGlmZiIsIm1lcmdlX3NrZXdlZCIsImtleXMkMCIsImNvbXBhcmVfZGlyZWN0IiwiY29tYmluZV9lcnJvcnMiLCJmb2xkMiIsIml0ZXIyIiwiaXRlcmlfdW50aWwiLCJpbnZhcmlhbnRzIiwidmFsaWRhdGVpIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwia2V5X3NldCQwIiwia2V5X3NldCQxIiwiY29tcGFyYXRvcl9zIiwiaW52YXJpYW50cyQwIiwiZW1wdHkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDAiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMCIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQwIiwib2Zfc2VxdWVuY2VfZXhuJDAiLCJvZl9zZXF1ZW5jZV9tdWx0aSQwIiwib2Zfc2VxdWVuY2VfZm9sZCQwIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDAiLCJvZl9saXN0X3dpdGhfa2V5JDAiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDAiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQwIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiZm9yX2FsbGkkMCIsImV4aXN0c2kkMCIsImNvdW50JDAiLCJjb3VudGkkMCIsInNwbGl0JDAiLCJzcGxpdF9sZV9ndCQwIiwic3BsaXRfbHRfZ2UkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2xpc3Rfd2l0aF9rZXkiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJ0b190cmVlIiwiZGF0YV9lcXVhbCIsImxvd2VyX3BhcnQiLCJ1cHBlcl9wYXJ0IiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsIm1pbiIsIm1heCIsIm9yZGVyIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiaG93Iiwic2VnbWVudF9vZiIsIm1hcF9rZXlzIiwibWFwX2tleXNfZXhuIiwidHJhbnNwb3NlX2tleXMiLCJpbml0X2Zvcl9iaW5fcHJvdCIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsIm1hcF9rZXlzJDEiLCJtYXBfa2V5c19leG4kMSIsInRyYW5zcG9zZV9rZXlzJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMSIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQxIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2Zfa2V5X3NldCQxIiwidG9fdHJlZSQyIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImxlbmd0aCQxIiwic2V0JDEiLCJhZGQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiZmluZF9leG4kMSIsImZpbmQkMSIsInJlbW92ZSQxIiwibWVtJDEiLCJpdGVyX2tleXMkMSIsIml0ZXIkMiIsIml0ZXJpJDEiLCJpdGVyaV91bnRpbCQxIiwiaXRlcjIkMSIsIm1hcCQyIiwibWFwaSQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXIkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXAkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwicGFydGl0aW9uX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwiY29tcGFyZV9kaXJlY3QkMSIsImtleXMkMiIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGVpJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJmb3JfYWxsJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzJDEiLCJleGlzdHNpJDEiLCJjb3VudCQxIiwiY291bnRpJDEiLCJzcGxpdCQxIiwic3BsaXRfbGVfZ3QkMSIsInNwbGl0X2x0X2dlJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJzdGFibGVfd2l0bmVzc19tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxNiIsImVycm9yX3NvdXJjZV8wNjYiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsIm9mX2FfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5Iiwic2V4cF9hcmdzXzAyNSIsInJlczBfMDI3Iiwib2ZfYV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwieCQxIiwiYV8wNDEiLCJiXzA0MiIsImFfMDQzIiwiYl8wNDQiLCJhXzA0NSIsImJfMDQ2IiwiZ2VuZXJhdG9yXzA1NiIsInNpemVfMDYxIiwicmFuZG9tXzA2MiIsInNpemVfMDU5IiwicmFuZG9tXzA2MCIsInNpemVfMDU3IiwicmFuZG9tXzA1OCIsInhfMDUxIiwic2l6ZV8wNTIiLCJoYXNoXzA1MyIsImhhc2hfMDUzJDAiLCJoYXNoXzA1MyQxIiwiaGFzaF8wNTMkMiIsInhfMDU1IiwiaGFzaF8wNTMkMyIsImhhc2hfMDUzJDQiLCJzaHJpbmtlcl8wNDciLCJvZl9hXzA2MyIsInNleHBfMDY4IiwidGFnXzA2OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJvZl9hXzA3OSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImFfMDg1IiwiYl8wODYiLCJhXzA4NyIsImJfMDg4IiwiZXF1YWwkMiIsImFfMDg5IiwiYl8wOTAiLCJhXzA5MSIsImJfMDkyIiwiZWx0X2dlbiIsImVsdF9vYnMiLCJlbHRfc2hyIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwidG9fbWFwIiwib2ZfbWFwX2tleXMiLCJvZl9oYXNoX3NldCIsImhzZXQiLCJvZl9oYXNodGJsX2tleXMiLCJ1bmlvbiQwIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMCIsInN1bSQwIiwiZmluZF9tYXAkMCIsInJlbW92ZV9pbmRleCQwIiwiaXNfc3Vic2V0JDAiLCJhcmVfZGlzam9pbnQkMCIsIm9mX2FycmF5JDAiLCJ0b19hcnJheSQwIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDAiLCJlbGVtZW50cyQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJncm91cF9ieSQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQwIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwic3RhYmxlX2RlZHVwX2xpc3QiLCJ4cyIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl9saXN0JDMiLCJvZl9zZXF1ZW5jZSQzIiwib2ZfaGFzaF9zZXQkMyIsIm9mX2hhc2h0Ymxfa2V5cyQzIiwib2ZfYXJyYXkkMyIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMyIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQzIiwib2Zfc29ydGVkX2FycmF5JDMiLCJ1bmlvbl9saXN0JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwib2ZfdHJlZSQzIiwib2ZfbWFwX2tleXMkMyIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwidCQwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhX3NleHBfZ3JhbW1hciIsImFfMDEwIiwiYl8wMTEiLCJub25lIiwic29tZSIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInVuaW9uIiwicjEiLCJ0MSQwIiwicjIiLCJ0MiQwIiwibjEiLCJuMiIsImlzX2NvbXByZXNzZWQiLCJwaHlzX2VxdWFsIiwidW5pb25fZmluZF9nZXRfY2hlY2tfbm9fcGVuZGluIiwiY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIiwiaW5jcl9sZW5ndGgiLCJpbmNyX3BlbmRpbmdfaXRlcnMiLCJkZWNyX3BlbmRpbmdfaXRlcnMiLCJ3aXRoX2l0ZXJhdGlvbl8ybCIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiZmlyc3RfZXhuIiwibGFzdF9leG4iLCJpc19maXJzdCIsImlzX2xhc3QiLCJtZW1fZWx0IiwicHJldiQwIiwiaW5zZXJ0X2FmdGVyJDAiLCJpbnNlcnRfYmVmb3JlJDAiLCJuZXdfZWx0IiwiaW5zZXJ0X2VtcHR5IiwiaW5zZXJ0X2xhc3QiLCJpbnNlcnRfZmlyc3QiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9maXJzdCIsInNlY29uZCIsIm5ld190IiwidmFsdWUkMCIsIm1vdmVfYmVmb3JlIiwiYW5jaG9yIiwiYWZ0ZXJfZWx0IiwibW92ZV90b19mcm9udCIsIm1vdmVfYWZ0ZXIiLCJtb3ZlX3RvX2JhY2siLCJhXzAxNSIsImJfMDE2Iiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJhXzAxNyIsImJfMDE4IiwiYV8wMTkiLCJiXzAyMCIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdGV4dCIsIm9mX3RleHQiLCJ2YWx1ZV9vZl9zZXhwIiwidGV4dCIsImZpbGVuYW1lIiwiYW5ub3RhdGVkIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX3ZhbHVlIiwiYmluX3NoYXBlX25vX3JhaXNlIiwiYmluX3NpemVfbm9fcmFpc2UiLCJiaW5fd3JpdGVfbm9fcmFpc2UiLCJiaW5fd3JpdGVyX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UiLCJiaW5fcmVhZF9ub19yYWlzZSQwIiwiYmluX3JlYWRlcl9ub19yYWlzZSIsImJpbl9ub19yYWlzZSIsIm5vX3JhaXNlX29mX3NleHAiLCJvZl9hXzAyNyIsInNleHBfb2Zfbm9fcmFpc2UiLCJvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWMiLCJvZl9zZXhwIiwic2V4cF9vZl9kYXRhIiwiYXJnMV8wMDIiLCJyZXMwXzAwMyIsInJlczFfMDA0Iiwia3YiLCJyZWFkIiwiZW5zdXJlX2Nhbl9tb2RpZnkiLCJsb29rdXAiLCJsb29rdXBfZXhuIiwiZW5xdWV1ZV91bmNoZWNrZWQiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlIiwiZW5xdWV1ZV9iYWNrIiwiZW5xdWV1ZV9mcm9udCIsImVucXVldWVfZXhuIiwiZW5xdWV1ZV9iYWNrX2V4biIsImVucXVldWVfZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2siLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IiwiZGVxdWV1ZV93aXRoX2tleSIsIm1heWJlX2t2IiwiZGVxdWV1ZV93aXRoX2tleV9leG4iLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXkiLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleSIsImRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZSIsImRlcXVldWVfYmFjayIsImRlcXVldWVfZnJvbnQiLCJsYXN0X3dpdGhfa2V5IiwiZmlyc3Rfd2l0aF9rZXkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWVfYmFja19leG4iLCJkZXF1ZXVlX2Zyb250X2V4biIsImFjIiwiZmluaXNoIiwiZGVxdWV1ZV9hbGwiLCJyZW1vdmVfZXhuIiwibG9va3VwX2FuZF9yZW1vdmUiLCJyZXBsYWNlIiwicmVwbGFjZV9vcl9lbnF1ZXVlIiwicmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IiwicmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2siLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwidW5zYWZlX3N1YiIsInN5bWJvbF9jb25jYXQiLCJlc2NhcGVkIiwiY29udGFpbnMiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwiaW5kZXgiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXgiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbV9leG4iLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0IiwidG9fbGlzdF9yZXYiLCJpc19zdWZmaXgiLCJpc19wcmVmaXgiLCJsc3BsaXQyX2V4biIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsInJzcGxpdDIiLCJzcGxpdF9vbl9jaGFycyIsInNwbGl0X2xpbmVzIiwibGZpbmRpIiwicmZpbmRpIiwibHN0cmlwIiwicnN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY2hvcF9zdWZmaXhfZXhuIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3ByZWZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3BfcHJlZml4X2lmX2V4aXN0cyIsInN1ZmZpeCIsInByZWZpeCIsImRyb3Bfc3VmZml4IiwiZHJvcF9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeF9sZW5ndGgiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29uY2F0X2FycmF5IiwiY29uY2F0X2xpbmVzIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsInBhZF9sZWZ0IiwicGFkX3JpZ2h0IiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0JDAiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInNleHBfMDA0IiwidGFnMiIsInZhbGlkYXRlX29yZGluYXJ5Iiwicm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIiwicm9idXN0bHlfY29tcGFyZSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsInN5bWJvbCQxNyIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsInJvYnVzdGx5X2NvbXBhcmUkMCIsInJvYnVzdF9zaWduIiwidG9fc3RyaW5nXzEyIiwiZ2VuX3VuaWZvcm1fZXhjbCIsImdlbl9pbmNsIiwiZ2VuX3dpdGhvdXRfbmFuIiwiZ2VuX2Zpbml0ZSIsImdlbl9wb3NpdGl2ZSIsImdlbl9uZWdhdGl2ZSIsImdlbl96ZXJvIiwiZ2VuX25hbiIsImdlbl9zdWJub3JtYWwiLCJnZW5fbm9ybWFsIiwiZ2VuX2luZmluaXRlIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsInRvX2ludF9leG4iLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwib2Zfc3RyaW5nX29wdCIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwiYmluX25hbWUiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwicGVlayIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsImJwcmludGYiLCJjb25zdCQwIiwiZXJyb3IiLCJlcnJvcl9zIiwiZm9yY2UiLCJpbnZhbGlkX2FyZ2YiLCJpZnByaW50ZiIsImlzX25vbmUiLCJpc19zb21lIiwia3NwcmludGYiLCJva19leG4iLCJwcmludF9zIiwiZXByaW50X3MiLCJwcm90ZWN0IiwicHJvdGVjdHgiLCJyYWlzZV9zIiwic3ltYm9sJDExIiwic3ByaW50ZiIsInN0YWdlIiwidW5zdGFnZSIsIndpdGhfcmV0dXJuX29wdGlvbiIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaXplX2FycmF5IiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlcl9hcnJheSIsImJpbl9yZWFkX2FycmF5IiwiYmluX3JlYWRfYXJyYXkkMCIsImJpbl9yZWFkZXJfYXJyYXkiLCJiaW5fYXJyYXkiLCJjb21wYXJlX2FycmF5IiwiZXF1YWxfYXJyYXkiLCJnbG9iYWxpemVfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImdsb2JhbGl6ZV9ib29sIiwiYm9vbF9vZl9zZXhwIiwic2V4cF9vZl9ib29sIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Jvb2wiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaXplX2NoYXIiLCJiaW5fd3JpdGVfY2hhciIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkX2NoYXIiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZGVyX2NoYXIiLCJiaW5fY2hhciIsImNvbXBhcmVfY2hhciIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9jaGFyIiwiZXF1YWxfY2hhciIsImdsb2JhbGl6ZV9jaGFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2l6ZV9mbG9hdCIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZXJfZmxvYXQiLCJiaW5fcmVhZF9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZGVyX2Zsb2F0IiwiYmluX2Zsb2F0IiwiY29tcGFyZV9mbG9hdCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZmxvYXQiLCJlcXVhbF9mbG9hdCIsImdsb2JhbGl6ZV9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2l6ZV9pbnQiLCJiaW5fd3JpdGVfaW50IiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZF9pbnQiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkZXJfaW50IiwiYmluX2ludCIsImNvbXBhcmVfaW50IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfaW50IiwiZXF1YWxfaW50IiwiZ2xvYmFsaXplX2ludCIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDMyJDAiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiY29tcGFyZV9pbnQzMiIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfaW50MzIiLCJlcXVhbF9pbnQzMiIsImdsb2JhbGl6ZV9pbnQzMiIsImludDMyX29mX3NleHAiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQzMiIsImJpbl9zaGFwZV9pbnQ2NCIsImJpbl9zaXplX2ludDY0IiwiYmluX3dyaXRlX2ludDY0IiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfaW50NjQkMCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJjb21wYXJlX2ludDY0IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9pbnQ2NCIsImVxdWFsX2ludDY0IiwiZ2xvYmFsaXplX2ludDY0IiwiaW50NjRfb2Zfc2V4cCIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2ludDY0IiwiYmluX3NoYXBlX2xhenlfdCIsImJpbl9zaXplX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRlcl9sYXp5X3QiLCJiaW5fbGF6eV90IiwiY29tcGFyZV9sYXp5X3QiLCJhXzA1NCIsImJfMDU1IiwiaGFzaF9mb2xkX2xhenlfdCIsImxhenlfdF9vZl9zZXhwIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9sYXp5X3QiLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaXplX2xpc3QiLCJiaW5fd3JpdGVfbGlzdCIsImJpbl93cml0ZXJfbGlzdCIsImJpbl9yZWFkX2xpc3QiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZGVyX2xpc3QiLCJiaW5fbGlzdCIsImNvbXBhcmVfbGlzdCIsImFfMDYzIiwiYl8wNjQiLCJhXzA2NSIsImJfMDY2IiwiaGFzaF9mb2xkX2xpc3QiLCJlcXVhbF9saXN0IiwiYV8wNjciLCJiXzA2OCIsImFfMDY5IiwiYl8wNzAiLCJnbG9iYWxpemVfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJnbG9iYWxpemVfbmF0aXZlaW50IiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImZ1bmMkNSIsImhhc2hfbmF0aXZlaW50IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX25hdGl2ZWludCIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlcl9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24kMCIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImNvbXBhcmVfb3B0aW9uIiwiYV8wODYiLCJiXzA4NyIsImVxdWFsX29wdGlvbiIsImFfMDkyIiwiYl8wOTMiLCJnbG9iYWxpemVfb3B0aW9uIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImdsb2JhbGl6ZV9zdHJpbmciLCJoYXNoX2ZvbGRfc3RyaW5nIiwiZnVuYyQ2IiwiaGFzaF9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsIm5hbWVfb2Zfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fd3JpdGVfYnl0ZXMiLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ieXRlcyIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fcmVhZF9yZWYiLCJiaW5fcmVhZF9yZWYkMCIsImJpbl9yZWFkZXJfcmVmIiwiYmluX3JlZiIsImNvbXBhcmVfcmVmIiwiYV8xMTUiLCJiXzExNiIsImFfMTE3IiwiYl8xMTgiLCJlcXVhbF9yZWYiLCJhXzExOSIsImJfMTIwIiwiYV8xMjEiLCJiXzEyMiIsImdsb2JhbGl6ZV9yZWYiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfcmVmIiwiZ3JvdXAkMTMiLCJiaW5fc2hhcGVfdW5pdCIsImJpbl9zaXplX3VuaXQiLCJiaW5fd3JpdGVfdW5pdCIsImJpbl93cml0ZXJfdW5pdCIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF91bml0JDAiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImNvbXBhcmVfdW5pdCIsImVxdWFsX3VuaXQiLCJnbG9iYWxpemVfdW5pdCIsImhhc2hfZm9sZF91bml0IiwiZnVuYyQ3IiwiaGFzaF91bml0IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3VuaXQiLCJncm91cCQxNCIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwic3RhYmxlX3dpdG5lc3NfdF9mcm96ZW4iLCJtYXhfbWVtX3dhaXRpbmdfZ2MiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMiLCJzdWJfc2hhcmVkIiwiYnN0ciIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIiwid3JpdGUiLCJkYXRhX2xlbiIsInRvdGFsX2xlbiIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInZfMDA1IiwicmVzMF8wMTEiLCJ2XzAwNiIsInJlczFfMDEyIiwidl8wMDciLCJyZXMyXzAxMyIsInBvc19hZnRlcl9zaXplX2hlYWRlciIsInBvc19hZnRlcl9kYXRhIiwiYXJnNF8wMjMiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInZfMDE0Iiwidl8wMTUiLCJyZXMxXzAyNSIsInZfMDE2IiwicmVzMl8wMjYiLCJ2XzAxNyIsInJlczNfMDI3Iiwidl8wMTgiLCJyZXM0XzAyOCIsIndyaXRlX2Jpbl9wcm90Iiwid3JpdGVyIiwibGFzdF9ub25tYXRjaF9wbHVzX29uZSIsIm1pbl9wb3MiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsImRhdGFfZW5kIiwiZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sIiwic2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIiwiaGVhZF9vcl90YWlsIiwic2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyIsInNsZW4iLCJmaXJzdF9ub25tYXRjaCIsIm1heF9wb3MiLCJzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwiZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImRhdGFfYmVnaW4iLCJnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2wiLCJ0b19ieXRlcyIsIm9mX2J5dGVzIiwiYnl0ZXMiLCJ0b19oZXgiLCJvZl9oZXhfZXhuIiwib2ZfYmluYXJ5X2V4biIsImFjY3VtIiwidG9fYmluYWJsZSQwIiwiZGlnZXN0X3N0cmluZyIsImRpZ2VzdF9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAyMiIsImVycm9yX3NvdXJjZV8wMzAiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsImFiYnJ2IiwiaXNfZHN0IiwidXRjX29mZnNldF9pbl9zZWNvbmRzIiwiYWJicnZfMDExIiwiaXNfZHN0XzAwOSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDciLCJ2X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInZfc2Vjb25kcyIsInhfMDE1Iiwic2Vjb25kcyIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHNfMDE5IiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzAxIiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJuZXdfcmVnaW1lIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwIiwibmV3X3JlZ2ltZV8wMjciLCJhcmdfMDI4IiwiYm5kc18wMjQiLCJhcmdfMDI2IiwiYm5kc18wMjQkMCIsInY1IiwidjciLCJ2NiIsInZfbmFtZSIsInZfb3JpZ2luYWxfZmlsZW5hbWUiLCJ2X2RpZ2VzdCIsInZfdHJhbnNpdGlvbnMiLCJ2X2xhc3RfcmVnaW1lX2luZGV4Iiwidl9kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSIsInZfbGVhcF9zZWNvbmRzIiwibGVhcF9zZWNvbmRzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJsYXN0X3JlZ2ltZV9pbmRleCIsInRyYW5zaXRpb25zIiwiZGlnZXN0Iiwib3JpZ2luYWxfZmlsZW5hbWUiLCJ0cmFuc2l0aW9uc18wMzkiLCJkaWdlc3RfMDM3Iiwib3JpZ2luYWxfZmlsZW5hbWVfMDM1IiwibmFtZV8wMzMiLCJsYXN0X3JlZ2ltZV9pbmRleF8wNDEiLCJsZWFwX3NlY29uZHNfMDQ1IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDQzIiwiYXJnXzA0NiIsImJuZHNfMDMyIiwiYXJnXzA0NCIsImJuZHNfMDMyJDAiLCJhcmdfMDQyIiwiYm5kc18wMzIkMSIsImFyZ18wNDAiLCJibmRzXzAzMiQyIiwiYXJnXzAzOCIsImJuZHNfMDMyJDMiLCJhcmdfMDM2IiwiYm5kc18wMzIkNCIsImFyZ18wMzQiLCJibmRzXzAzMiQ1Iiwiem9uZSIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsImFiYnJ2X2luZGV4IiwiaW5wdXRfdHpfZmlsZV9nZW4iLCJpbnB1dF90cmFuc2l0aW9uIiwiaW5wdXRfbGVhcF9zZWNvbmQiLCJ1dGNfbG9jYWxfY291bnQiLCJzdGRfd2FsbF9jb3VudCIsImxlYXBfY291bnQiLCJ0cmFuc2l0aW9uX2NvdW50IiwidHlwZV9jb3VudCIsImFiYnJ2X2NoYXJfY291bnQiLCJ0cmFuc2l0aW9uX3RpbWVzIiwidHJhbnNpdGlvbl9pbmRpY2VzIiwicmVnaW1lcyIsInJhd19hYmJydnMiLCJpbmRleGVkX2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsInJlZ2ltZXMkMCIsInJhd190cmFuc2l0aW9ucyIsInRpbWUiLCJyZWdpbWUiLCJyZXN0IiwibHR0IiwiaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIiwicmVhZF9oZWFkZXIiLCJtYWdpYyIsImJhZF92ZXJzaW9uIiwidmVyc2lvbiIsImlucHV0X3R6X2ZpbGVfdjEiLCJpbnB1dF90el9maWxlIiwiem9uZW5hbWUiLCJtYWtlX3pvbmUiLCJyZWFzb24iLCJvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUiLCJvZl91dGNfb2Zmc2V0IiwibGlrZWx5X21hY2hpbmVfem9uZXMiLCJ1dGMiLCJyZXNldF90cmFuc2l0aW9uX2NhY2hlIiwiZ2V0X3JlZ2ltZV9leG4iLCJlZmZlY3RpdmVfc3RhcnRfdGltZSIsIm1vZGUiLCJpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWMiLCJpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWMiLCJiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHMiLCJ0cmFuc2l0aW9uIiwiaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCIsImluZGV4JDAiLCJpbmRleCQxIiwiaW5kZXgkMiIsImluZGV4JDMiLCJpbmRleCQ0Iiwib2ZfaW50NjNfc2Vjb25kcyIsInRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leCIsIm9mX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zcGFuX3NpbmNlX2Vwb2NoIiwib2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCIsImluZGV4X29mX2RhdGVfYW5kX29mZGF5IiwiaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQiLCJpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50XyIsImFmdGVyIiwiYmVmb3JlIiwiaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfIiwiaW5kZXhfYWJicmV2aWF0aW9uX2V4biIsImluZGV4X29mZnNldF9mcm9tX3V0Y19leG4iLCJyYXciLCJ2YWxpZGF0aW9uX2ZhaWxlZCIsImFyZzJfMDAzIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDA2IiwiY3JlYXRlX2V4biIsImNyZWF0ZV9zdGFibGVfd2l0bmVzcyIsInJhd19zdGFibGVfd2l0bmVzcyIsInR5cGVfZXF1YWwiLCJyYWNlX2ZyZWVfY3JlYXRlX2xvb3AiLCJjZWxsIiwibmV3X3giLCJjdXJyZW50IiwidHlwZW5hbWUkMSIsImFsbG93ZWRfaW50cyIsImFsbG93ZWRfaW50cyQwIiwidHlwZW5hbWUkMCIsImltbWVkaWFjeSIsIm5ldmVyX3dpdGhfbmFtZSIsIm5ldmVyIiwidW5rbm93biIsIm9wdGlvbiIsImxpc3QkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwicmVmIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGU0IiwidHVwbGU1IiwiZnVuY3Rpb24kMCIsImludCQwIiwicmVmJDAiLCJhcnJheSQwIiwidHVwbGUyJDAiLCJ0dXBsZTMkMCIsInR1cGxlNCQwIiwidHVwbGU1JDAiLCJmdW5jdGlvbiQxIiwib3B0aW9uJDAiLCJsYXp5X3QiLCJwb3NzaWJseV91bmJveGVkIiwiY2hpbGRfdHlwZSIsInRoZV9vbmx5X2ZpZWxkIiwidmFyaWFudCIsInRhZyIsIm1vcmUiLCJubyIsIm1vcmVfYXJnX2xpc3QiLCJvbmVfYXJnX2xpc3QiLCJub19hcmdfbGlzdCIsIm5vX2FyZ19jb3VudCIsImhhc2hfc2V0IiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9iXzAxMSIsImFyZzFfMDEzIiwiYXJnMF8wMTIiLCJyZXMxXzAxNSIsImN1cnJ5IiwidW5jdXJyeSIsIm1hcF9mc3QiLCJtYXBfc25kIiwibWFwX2JvdGgiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsIm9mX2NfMDIxIiwic2V4cF8wMjkiLCJhcmcyXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsIm9mX2FfMDMxIiwib2ZfYl8wMzIiLCJvZl9jXzAzMyIsImFyZzJfMDM2IiwiYXJnMV8wMzUiLCJyZXMxXzAzOCIsInJlczJfMDM5Iiwib2ZfYyIsImN1cnJ5JDAiLCJ1bmN1cnJ5JDAiLCJtYXBfZnN0JDAiLCJtYXBfc25kJDAiLCJtYXBfdHJkIiwibWFwX2FsbCIsImYzIiwibWFwMiQwIiwiejIiLCJ6MSIsImdldDMiLCJjbXAzIiwieiQwIiwiYzEiLCJjMiIsImVxMyIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMwXzA0OSIsInJlczFfMDUwIiwiYV8wNTEiLCJiXzA1MiIsInRfMDU0IiwidF8wNTMiLCJ0XzA1NiIsInRfMDU1Iiwic2V4cF8wNjIiLCJhcmcxXzA1OSIsImFyZzBfMDU4IiwicmVzMF8wNjAiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwiYXJnMF8wNjQiLCJyZXMwXzA2NiIsInJlczFfMDY3IiwiczIiLCJzMSIsInMyJDAiLCJzMSQwIiwid2Vla2RheXMiLCJ3ZWVrZW5kcyIsInNpemVfMDE4IiwicmFuZG9tXzAxOSIsInNpemVfMDEyIiwicmFuZG9tXzAxMyIsInNpemVfMDEwIiwicmFuZG9tXzAxMSIsInJhbmRvbV8wMDkiLCJzaXplXzAwNiIsInJhbmRvbV8wMDciLCJoYXNoXzAwNSIsImhhc2hfMDA1JDAiLCJoYXNoXzAwNSQxIiwiaGFzaF8wMDUkMiIsImhhc2hfMDA1JDMiLCJoYXNoXzAwNSQ0IiwiaGFzaF8wMDUkNSIsImhhc2hfMDA1JDYiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidG9fc3RyaW5nX2xvbmciLCJhdG9tIiwidW5zdWdnZXN0ZWQiLCJpbnRfY2xhdXNlIiwic2hvcnRfY2xhdXNlIiwibG9uZ19jbGF1c2UiLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwNCIsImN1c3RvbV9wcmludGZfMDAzIiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDA3IiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsIm9mX2ludF91bmNoZWNrZWQiLCJkYXlzX2luX21vbnRoIiwiaW52YWxpZCIsIm1zZyIsImN1c3RvbV9wcmludGZfMDA1IiwiZGF5c19pbl9tb250aCQwIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJ4XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsIm9wdCIsInZhbHVlX2V4biIsImRlZmF1bHQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludCQwIiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsInJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkiLCJyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwic2hpZnRfZGVjaW1hbF9wb2ludCIsImJ5IiwicyQwIiwicyQxIiwibm90X3plcm8iLCJ1bmRlcnNjb3JlIiwidW5kZXJzY29yZSQwIiwiZSQxIiwiZXhwIiwiZXhwJDAiLCJuZWciLCJzaWduZWQiLCJzJDMiLCJkJDIiLCJzdWYiLCJwcmVmIiwicyQ0IiwiYnkkMCIsImJ5JDEiLCJzJDUiLCJzJDYiLCJieSQyIiwicyQ3IiwicyQyIiwiZmxvYXRfdG9fc3RyaW5nIiwieF9hYnMiLCJ0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlIiwicmVhbGx5X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsInN0ciQwIiwic3RyJDEiLCJzdHIkMiIsIm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiIsIm9mX211bHQiLCJ0b19tdWx0Iiwib2ZfcGVyY2VudGFnZSIsInRvX3BlcmNlbnRhZ2UiLCJvZl9icCIsInRvX2JwIiwib2ZfYnBfaW50IiwidG9fYnBfaW50Iiwic2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCIsIm9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsInRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsIm9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInJvdW5kX3NpZ25pZmljYW50Iiwic2lnbmlmaWNhbnRfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9tdWx0IiwiZGVjaW1hbF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UiLCJyb3VuZF9kZWNpbWFsX2JwIiwiYXJnMF8wMTAiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxOCIsInJlczBfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJleHBvbmVudCIsInByZWNpc2lvbiIsImV4cG9uZW50X0UiLCJkZWNpbWFsIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwidG9fc3RyaW5nJDEiLCJiaW5fc2hhcGVfdCQ3IiwidW5jaGVja2VkX3ZhbHVlIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImJpbl9zaGFwZV90JDgiLCJiaW5fc2hhcGVfdCQ5IiwiYmluX3NoYXBlX3QkMTAiLCJiaW5fd3JpdGVyX3QkNiIsImJpbl9yZWFkZXJfdCQ2IiwiYmluX3QkNiIsInR5cGVuYW1lX29mX3QkMSIsIm5hbWVfb2ZfdCQxIiwidHlwZXJlcF9vZl90JDEiLCJiaW5fc2hhcGVfdCQxMSIsImJpbl9zaGFwZV90JDEyIiwiaXNfemVybyIsImFwcGx5IiwiaXNfbmFuIiwiaXNfaW5mIiwic2lnbl9leG4iLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYkMCIsInRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiIsImZvcm1hdCQwIiwidG9fc3RyaW5nJDIiLCJiaW5fc2hhcGVfdCQxMyIsInRvX3N0cmluZyQzIiwiYmluX3NoYXBlX3QkMTQiLCJiaW5fd3JpdGVyX3QkNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsInRvX3N0cmluZyQ0Iiwic2V4cF9vZl90JDciLCJyYW5kb21pemUiLCJzcGFuIiwicmFuZG9tX3N0YXRlIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJuJDIiLCJuJDMiLCJuJDQiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwiYXJnXzAxNiIsImJuZHNfMDA2JDMiLCJibmRzXzAwNiQ0IiwiYm5kc18wMDYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50MzJfc2Vjb25kcyIsIm9mX21pbiIsIm9mX2hyIiwib2ZfZGF5Iiwib2ZfaW50X25zIiwib2ZfaW50X3VzIiwib2ZfaW50X21zIiwib2ZfaW50X3NlYyIsIm9mX2ludF9taW4iLCJvZl9pbnRfaHIiLCJvZl9pbnRfZGF5IiwiZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSIsInVuaXRfb2ZfdGltZSIsInNjYWxlX2J5X3VuaXRfb2ZfdGltZSIsImRheSQwIiwieCQyIiwidG9fc2hvcnRfc3RyaW5nIiwidF9vZl9zZXhwX3YxX3YyIiwiaXNfdjIiLCJzZXhwX29mX3RfdjFfdjIiLCJhYnNfdCIsInRvX3VuaXRfb2ZfdGltZSIsIm9mX3VuaXRfb2ZfdGltZSIsInN1ZmZpeF9vZl91bml0X29mX3RpbWUiLCJwYXJzZV9zdWZmaXgiLCJ1bml0X29mX3RpbWVfbGlzdCQxIiwidW5pdF9vZl90aW1lX2xpc3QiLCJ1bml0X29mX3RpbWVfbGlzdCQwIiwic3RhdGVfaXNfZmluYWwiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfZGF5Iiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm9mX2ludDYzX2V4biQwIiwidG9faW50NjMkMCIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNleHBfb2Zfc3BhbiIsInNwYW5fb2Zfc2V4cCIsImZsb2F0JDIiLCJzaW5jZV91bml4X2Vwb2NoIiwiaGFsZl9taWNyb3NlY29uZCIsInRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIiwibWF4X3ZhbHVlX3JlcHJlc2VudGFibGUiLCJvZl9pbnQ2M19leG4kMSIsInRvX2ludDYzJDEiLCJmYWlsIiwib2ZfaW50NjNfZXhuJDIiLCJ0b19pbnQ2MyQyIiwiY29tcGFyZSQ2IiwiYXJnX3R5cGUiLCJpc19pbnZhbGlkIiwib2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0Iiwic3ViX2V4biIsInRvX3N0cmluZ193aXRoX3VuaXQiLCJzaXh0eSIsInRob3VzYW5kIiwidW5pdCQwIiwibnVtX2RpZ2l0cyIsInRvX21pY3Jvc2Vjb25kX3N0cmluZyIsImV2ZXJ5Iiwic3RhcnQkMSIsInRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50NjNfbnNfc2luY2VfZXBvY2giLCJvdmVyZmxvdyIsImFkZF9vdmVyZmxvd2VkIiwic3ViX292ZXJmbG93ZWQiLCJhZGRfc2F0dXJhdGluZyIsInN1Yl9zYXR1cmF0aW5nIiwidG9faW50X25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50X25zX3NpbmNlX2Vwb2NoIiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwibWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0Iiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwidG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwibnNfc2luY2VfZXBvY2giLCJuc19wZXJfZGF5IiwiYXBwcm94X2RheXNfZnJvbV9lcG9jaCIsIm5zX3NpbmNlX3N0YXJ0X29mX2RheSIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5Iiwib2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwic3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIiwic3Bhbl9zaW5jZV9lcG9jaCIsInR3b19kaWdpdF9vZl9zdHJpbmciLCJuc19vZl8xMDBfbXMiLCJuc19vZl8xMF9tcyIsIm5zX29mXzFfbXMiLCJuc19vZl8xMDBfdXMiLCJuc19vZl8xMF91cyIsIm5zX29mXzFfdXMiLCJuc19vZl8xMDBfbnMiLCJuc19vZl8xMF9ucyIsIm5zX29mXzFfbnMiLCJzZWNvbmRzX3NwYW4iLCJzdWJfc2Vjb25kX3NwYW4iLCJvZmRheV9zdHJpbmdfd2l0aF96b25lIiwiZGF0ZV9zdHJpbmciLCJvZmRheV9zdHJpbmciLCJwcmVmaXhfbGVuIiwic3VmZml4X2xlbiIsInNlY29uZHNfc3RyaW5nIiwic3ViX3NlY29uZF9zdHJpbmciLCJzX3N0cmluZyIsIm1fc3RyaW5nIiwiaF9zdHJpbmciLCJtdWx0aXBsaWVyIiwiZGF5c19mcm9tX2Vwb2NoJDAiLCJkYXlzX2Zyb21fZXBvY2hfaW5fbnMiLCJhdHRlbXB0Iiwic3Bhbl9vZl9kdXJhdGlvbiIsInRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCIsImR1cmF0aW9ucyIsInNwYW5zIiwic3RyaW5nX2J5dGVzIiwic3JjX3BvcyIsInNyY19sZW4iLCJkc3RfcG9zIiwic3JjX3BvcyQwIiwiYnl0ZXNfYnl0ZXMiLCJzdHJpbmdfYmlnc3RyaW5nIiwiYnl0ZXNfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19zdHJpbmciLCJiaWdzdHJpbmdfYnl0ZXMiLCJzaXplXzAwOSIsInJhbmRvbV8wMTAiLCJzaXplXzAwNyIsImhhc2hfMDA4IiwiaGFzaF8wMDgkMCIsImhhc2hfMDA4JDEiLCJoYXNoXzAwOCQyIiwiYmFzZV9sZW4iLCJnZXRfbm9fYm91bmRzX2NoZWNrIiwiZm9sZGkkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImJsaXRfdG8iLCJibGl0X3RvX3N0cmluZyIsImJsaXRfdG9fYnl0ZXMiLCJibGl0X3RvX2JpZ3N0cmluZyIsImJsaXRfYmFzZSIsImJsaXRfZnJvbSIsImJsaXRfZnJvbV9zdHJpbmciLCJibGl0X2Zyb21fYmlnc3RyaW5nIiwib2ZfYmFzZSIsImNvbmNhdF9nZW4iLCJjcmVhdGVfZHN0IiwiYmxpdF9kc3QiLCJ0cyIsImNvbmNhdF9zdHJpbmciLCJjb25jYXRfYmlnc3RyaW5nIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsInV1aWQiLCJnbG9iYWxpemUkMCIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsImdsb2JhbGl6ZSQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJnbG9iYWxpemUkMiIsInR5cGVuYW1lX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwiY2hlY2skMiIsInBwJDIiLCJvZl9zdHJpbmckMiIsImluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIiwiYXJnX3R5cGUkMCIsInNleHBfYXNfc3RyaW5nIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInZfMDAxIiwicmVzMV8wMTEiLCJzZXJpYWxpemVkX3NleHAiLCJhcmcxXzAxNSIsInZfMDEyIiwidl8wMTMiLCJyZXMxXzAxNyIsImV4cGVjdGVkX2Jpbl9pbyIsImJpbmFibGVfbSIsInNlcmlhbGl6ZWRfYmluX2lvIiwiYXJnMl8wMjIiLCJhcmcxXzAyMSIsInJlczFfMDI0Iiwidl8wMTkiLCJyZXMyXzAyNSIsImFyZzFfMDI5Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJsb29wIiwicmV2X3NraXBwZWQiLCJzdHJpbmdzJDAiLCJjb250aW51ZSQwIiwic3RyaW5nJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJ2XzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInBlcm11dGF0YXRpb25zIiwiZWxlbWVudHMiLCJhcmcxXzA1NyIsImFyZzBfMDU2Iiwidl8wNTQiLCJyZXMwXzA1OCIsInJlczFfMDU5IiwiYmxhbmciLCJjbXBfYSQwIiwiYV8wMDEkMCIsImJfMDAyJDAiLCJjbXBfYSQ1IiwiY21wX2EkMSIsImNtcF9hJDIiLCJjbXBfYSQzIiwiYV8wMjciLCJhXzAyNSIsImFfMDIzIiwiYl8wMjgiLCJiXzAyNiIsImJfMDI0IiwiYV8wMzEiLCJiXzAzMiIsImNtcF9hJDQiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3JDAiLCJiXzAzOCQwIiwiYV8wMzkiLCJiXzA0MCIsImFfMDQ5IiwiYV8wNDciLCJiXzA1MCIsImJfMDQ4IiwiYV8wNTMiLCJiXzA1NCIsImFfMDU1IiwiYl8wNTYiLCJhXzA1NyIsImJfMDU4IiwiYV8wNjEiLCJhXzA1OSIsImJfMDYyIiwiYl8wNjAiLCJhXzA3MSIsImJfMDcyIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ2MCQxIiwidjAkMiIsInYwJDMiLCJzdWJ0ZXJtcyIsInQzIiwidDEkMSIsImNvbnRhaW5zX25vX2NvbnN0YW50cyIsInRydWUkMCIsImZhbHNlJDAiLCJub3QiLCJhbmRhbHNvIiwib3RoZXIiLCJ0MWIiLCJ0MWEiLCJvcmVsc2UiLCJpZiQwIiwib2ZfYV8wNzMiLCJhcmcxXzA3NSIsImFyZzBfMDc0IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMl8wODYiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODciLCJyZXMxXzA4OCIsInJlczJfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsImdhdGhlcl9jb25qdW5jdHMiLCJ0cyQxIiwidHMkMCIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJ3b3JkIiwia2lsb2J5dGVzIiwibWVnYWJ5dGVzIiwiZ2lnYWJ5dGVzIiwidGVyYWJ5dGVzIiwicGV0YWJ5dGVzIiwiZXhhYnl0ZXMiLCJ3b3Jkc19pbnRfZXhuIiwid29yZHNfZmxvYXQiLCJvZl9raWxvYnl0ZXMiLCJvZl9tZWdhYnl0ZXMiLCJvZl9naWdhYnl0ZXMiLCJvZl90ZXJhYnl0ZXMiLCJvZl9wZXRhYnl0ZXMiLCJvZl9leGFieXRlcyIsIm9mX3dvcmRzX2ludCIsIm9mX3dvcmRzX2Zsb2F0X2V4biIsImJhc2Vfc3RyIiwiZXh0X2NoYXIiLCJsYXJnZXN0X21lYXN1cmUiLCJ0X2FicyIsIm5vX21hdGNoIiwidmFsX3NleHAiLCJ1bml0X25hbWUiLCJ0JDUiLCJ0JDQiLCJ0JDMiLCJ0JDIiLCJjdXN0b21fcHJpbnRmXzAwNiIsImN1c3RvbV9wcmludGZfMDA3IiwiY3VzdG9tX3ByaW50Zl8wMDgiLCJjdXN0b21fcHJpbnRmXzAwOSIsImN1c3RvbV9wcmludGZfMDEwIiwiY3VzdG9tX3ByaW50Zl8wMTEiLCJ0b19zdHJpbmdfc2hvcnQiLCJ0b191bml0c19zdHIiLCJ0b191bml0IiwiZXh0IiwiZl9hYnMiLCJjdXN0b21fcHJpbnRmXzAxNCIsImN1c3RvbV9wcmludGZfMDE1IiwiY3VzdG9tX3ByaW50Zl8wMTYiLCJjdXN0b21fcHJpbnRmXzAxNyIsImN1c3RvbV9wcmludGZfMDE4IiwiY3VzdG9tX3ByaW50Zl8wMTkiLCJjdXN0b21fcHJpbnRmXzAyMCIsImN1c3RvbV9wcmludGZfMDIxIiwiY3VzdG9tX3ByaW50Zl8wMjIiLCJjdXN0b21fcHJpbnRmXzAyMyIsImN1c3RvbV9wcmludGZfMDI0IiwiY3VzdG9tX3ByaW50Zl8wMjUiLCJjdXN0b21fcHJpbnRmXzAyNiIsIm5fZnJvbnQiLCJuX2JhY2siLCJmcm9udCIsImJhY2siLCJyZXZfYmFjayIsImZyb250JDAiLCJyZXZfZnJvbnQiLCJiYWNrJDAiLCJyYWlzZV9mcm9udF9pbnZhcmlhbnQiLCJyYWlzZV9iYWNrX2ludmFyaWFudCIsInBlZWtfZnJvbnRfZXhuIiwicGVla19iYWNrX2V4biIsImRyb3BfZnJvbnRfZXhuIiwiZHJvcF9iYWNrX2V4biIsIm9wdGlvbmFsIiwicGVla19mcm9udCIsInBlZWtfYmFjayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJ0b19saXN0JDEiLCJ0b19saXN0JDIiLCJ0b19saXN0JDMiLCJzdW0kMSIsImZpbmRfbWFwJDEiLCJ0b19hcnJheSQxIiwiZm9sZF9yZXN1bHQkMSIsImJ1aWxkIiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8wOTYiLCJuYW1lcyQwIiwidjE2IiwidjE1IiwidjE0IiwidjEzIiwidjEyIiwidjExIiwidjEwIiwidjkiLCJ2OCIsInNpemUkNiIsInNpemUkNyIsInNpemUkOCIsInNpemUkOSIsInNpemUkMTAiLCJzaXplJDExIiwic2l6ZSQxMiIsInNpemUkMTMiLCJ2X21pbm9yX3dvcmRzIiwidl9wcm9tb3RlZF93b3JkcyIsInZfbWFqb3Jfd29yZHMiLCJ2X21pbm9yX2NvbGxlY3Rpb25zIiwidl9tYWpvcl9jb2xsZWN0aW9ucyIsInZfaGVhcF93b3JkcyIsInZfaGVhcF9jaHVua3MiLCJ2X2xpdmVfd29yZHMiLCJ2X2xpdmVfYmxvY2tzIiwidl9mcmVlX3dvcmRzIiwidl9mcmVlX2Jsb2NrcyIsInZfbGFyZ2VzdF9mcmVlIiwidl9mcmFnbWVudHMiLCJ2X2NvbXBhY3Rpb25zIiwidl90b3BfaGVhcF93b3JkcyIsInZfc3RhY2tfc2l6ZSIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJoc3YkMTAiLCJoc3YkMTEiLCJoc3YkMTIiLCJoc3YkMTMiLCJoc3YkMTQiLCJzdGFja19zaXplIiwidG9wX2hlYXBfd29yZHMiLCJjb21wYWN0aW9ucyIsImZyYWdtZW50cyIsImxhcmdlc3RfZnJlZSIsImZyZWVfYmxvY2tzIiwiZnJlZV93b3JkcyIsImxpdmVfYmxvY2tzIiwibGl2ZV93b3JkcyIsImhlYXBfY2h1bmtzIiwiaGVhcF93b3JkcyIsIm1ham9yX2NvbGxlY3Rpb25zIiwibWlub3JfY29sbGVjdGlvbnMiLCJtYWpvcl93b3JkcyIsInByb21vdGVkX3dvcmRzIiwibWlub3Jfd29yZHMiLCJzdGFja19zaXplXzA0NyIsInRvcF9oZWFwX3dvcmRzXzA0NSIsImNvbXBhY3Rpb25zXzA0MyIsImZyYWdtZW50c18wNDEiLCJsYXJnZXN0X2ZyZWVfMDM5IiwiZnJlZV9ibG9ja3NfMDM3IiwiZnJlZV93b3Jkc18wMzUiLCJsaXZlX2Jsb2Nrc18wMzMiLCJsaXZlX3dvcmRzXzAzMSIsImhlYXBfY2h1bmtzXzAyOSIsImhlYXBfd29yZHNfMDI3IiwibWFqb3JfY29sbGVjdGlvbnNfMDI1IiwibWlub3JfY29sbGVjdGlvbnNfMDIzIiwibWFqb3Jfd29yZHNfMDIxIiwicHJvbW90ZWRfd29yZHNfMDE5IiwibWlub3Jfd29yZHNfMDE3IiwiYXJnXzA0OCIsImJuZHNfMDE2JDEiLCJibmRzXzAxNiQyIiwiYm5kc18wMTYkMyIsImJuZHNfMDE2JDQiLCJibmRzXzAxNiQ1IiwiYm5kc18wMTYkNiIsImFyZ18wMzIiLCJibmRzXzAxNiQ3IiwiYXJnXzAzMCIsImJuZHNfMDE2JDgiLCJibmRzXzAxNiQ5IiwiYm5kc18wMTYkMTAiLCJhcmdfMDI0IiwiYm5kc18wMTYkMTEiLCJhcmdfMDIyIiwiYm5kc18wMTYkMTIiLCJibmRzXzAxNiQxMyIsImJuZHNfMDE2JDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwibiQxNCIsImhzdiQxNSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18wODkiLCJzdGFja19zaXplXzA4NyIsInRvcF9oZWFwX3dvcmRzXzA4NSIsImNvbXBhY3Rpb25zXzA4MyIsImZyYWdtZW50c18wODEiLCJsYXJnZXN0X2ZyZWVfMDc5IiwiZnJlZV9ibG9ja3NfMDc3IiwiZnJlZV93b3Jkc18wNzUiLCJsaXZlX2Jsb2Nrc18wNzMiLCJsaXZlX3dvcmRzXzA3MSIsImhlYXBfY2h1bmtzXzA2OSIsImhlYXBfd29yZHNfMDY3IiwibWFqb3JfY29sbGVjdGlvbnNfMDY1IiwibWlub3JfY29sbGVjdGlvbnNfMDYzIiwibWFqb3Jfd29yZHNfMDYxIiwicHJvbW90ZWRfd29yZHNfMDU5IiwibWlub3Jfd29yZHNfMDU3IiwiYXJnXzA5MCIsImJuZHNfMDU2IiwiYXJnXzA4OCIsImJuZHNfMDU2JDAiLCJhcmdfMDg2IiwiYm5kc18wNTYkMSIsImFyZ18wODQiLCJibmRzXzA1NiQyIiwiYXJnXzA4MiIsImJuZHNfMDU2JDMiLCJhcmdfMDgwIiwiYm5kc18wNTYkNCIsImFyZ18wNzgiLCJibmRzXzA1NiQ1IiwiYXJnXzA3NiIsImJuZHNfMDU2JDYiLCJhcmdfMDc0IiwiYm5kc18wNTYkNyIsImFyZ18wNzIiLCJibmRzXzA1NiQ4IiwiYXJnXzA3MCIsImJuZHNfMDU2JDkiLCJhcmdfMDY4IiwiYm5kc18wNTYkMTAiLCJhcmdfMDY2IiwiYm5kc18wNTYkMTEiLCJhcmdfMDY0IiwiYm5kc18wNTYkMTIiLCJhcmdfMDYyIiwiYm5kc18wNTYkMTMiLCJhcmdfMDYwIiwiYm5kc18wNTYkMTQiLCJhcmdfMDU4IiwiYm5kc18wNTYkMTUiLCJ2X21pbm9yX2hlYXBfc2l6ZSIsInZfbWFqb3JfaGVhcF9pbmNyZW1lbnQiLCJ2X3NwYWNlX292ZXJoZWFkIiwidl92ZXJib3NlIiwidl9tYXhfb3ZlcmhlYWQiLCJ2X3N0YWNrX2xpbWl0Iiwidl9hbGxvY2F0aW9uX3BvbGljeSIsInZfd2luZG93X3NpemUiLCJ2X2N1c3RvbV9tYWpvcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX3JhdGlvIiwidl9jdXN0b21fbWlub3JfbWF4X3NpemUiLCJhXzA5MyIsImJfMDk0IiwieF8wOTciLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJ2ZXJib3NlIiwic3BhY2Vfb3ZlcmhlYWQiLCJtYWpvcl9oZWFwX2luY3JlbWVudCIsIm1pbm9yX2hlYXBfc2l6ZSIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8xMTkiLCJjdXN0b21fbWlub3JfcmF0aW9fMTE3IiwiY3VzdG9tX21ham9yX3JhdGlvXzExNSIsIndpbmRvd19zaXplXzExMyIsImFsbG9jYXRpb25fcG9saWN5XzExMSIsInN0YWNrX2xpbWl0XzEwOSIsIm1heF9vdmVyaGVhZF8xMDciLCJ2ZXJib3NlXzEwNSIsInNwYWNlX292ZXJoZWFkXzEwMyIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzEwMSIsIm1pbm9yX2hlYXBfc2l6ZV8wOTkiLCJhcmdfMTIwIiwiYm5kc18wOTgiLCJhcmdfMTE4IiwiYm5kc18wOTgkMCIsImFyZ18xMTYiLCJibmRzXzA5OCQxIiwiYXJnXzExNCIsImJuZHNfMDk4JDIiLCJhcmdfMTEyIiwiYm5kc18wOTgkMyIsImFyZ18xMTAiLCJibmRzXzA5OCQ0IiwiYXJnXzEwOCIsImJuZHNfMDk4JDUiLCJhcmdfMTA2IiwiYm5kc18wOTgkNiIsImFyZ18xMDQiLCJibmRzXzA5OCQ3IiwiYXJnXzEwMiIsImJuZHNfMDk4JDgiLCJhcmdfMTAwIiwiYm5kc18wOTgkOSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNTYiLCJzdGFja19zaXplXzE1NCIsInRvcF9oZWFwX3dvcmRzXzE1MiIsImNvbXBhY3Rpb25zXzE1MCIsImZyYWdtZW50c18xNDgiLCJsYXJnZXN0X2ZyZWVfMTQ2IiwiZnJlZV9ibG9ja3NfMTQ0IiwiZnJlZV93b3Jkc18xNDIiLCJsaXZlX2Jsb2Nrc18xNDAiLCJsaXZlX3dvcmRzXzEzOCIsImhlYXBfY2h1bmtzXzEzNiIsImhlYXBfd29yZHNfMTM0IiwibWFqb3JfY29sbGVjdGlvbnNfMTMyIiwibWlub3JfY29sbGVjdGlvbnNfMTMwIiwibWFqb3Jfd29yZHNfMTI4IiwicHJvbW90ZWRfd29yZHNfMTI2IiwibWlub3Jfd29yZHNfMTI0IiwiYXJnXzE1NyIsImJuZHNfMTIzIiwiYXJnXzE1NSIsImJuZHNfMTIzJDAiLCJhcmdfMTUzIiwiYm5kc18xMjMkMSIsImFyZ18xNTEiLCJibmRzXzEyMyQyIiwiYXJnXzE0OSIsImJuZHNfMTIzJDMiLCJhcmdfMTQ3IiwiYm5kc18xMjMkNCIsImFyZ18xNDUiLCJibmRzXzEyMyQ1IiwiYXJnXzE0MyIsImJuZHNfMTIzJDYiLCJhcmdfMTQxIiwiYm5kc18xMjMkNyIsImFyZ18xMzkiLCJibmRzXzEyMyQ4IiwiYXJnXzEzNyIsImJuZHNfMTIzJDkiLCJhcmdfMTM1IiwiYm5kc18xMjMkMTAiLCJhcmdfMTMzIiwiYm5kc18xMjMkMTEiLCJhcmdfMTMxIiwiYm5kc18xMjMkMTIiLCJhcmdfMTI5IiwiYm5kc18xMjMkMTMiLCJhcmdfMTI3IiwiYm5kc18xMjMkMTQiLCJhcmdfMTI1IiwiYm5kc18xMjMkMTUiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMkMCIsInN0YWNrX3NpemUkMCIsInRvcF9oZWFwX3dvcmRzJDAiLCJjb21wYWN0aW9ucyQwIiwiZnJhZ21lbnRzJDAiLCJsYXJnZXN0X2ZyZWUkMCIsImZyZWVfYmxvY2tzJDAiLCJmcmVlX3dvcmRzJDAiLCJsaXZlX2Jsb2NrcyQwIiwibGl2ZV93b3JkcyQwIiwiaGVhcF9jaHVua3MkMCIsImhlYXBfd29yZHMkMCIsIm1ham9yX2NvbGxlY3Rpb25zJDAiLCJtaW5vcl9jb2xsZWN0aW9ucyQwIiwibWFqb3Jfd29yZHMkMCIsInByb21vdGVkX3dvcmRzJDAiLCJtaW5vcl93b3JkcyQwIiwibWlub3Jfd29yZHNfZnVuIiwicHJvbW90ZWRfd29yZHNfZnVuIiwibWFqb3Jfd29yZHNfZnVuIiwibWlub3JfY29sbGVjdGlvbnNfZnVuIiwibWFqb3JfY29sbGVjdGlvbnNfZnVuIiwiaGVhcF93b3Jkc19mdW4iLCJoZWFwX2NodW5rc19mdW4iLCJsaXZlX3dvcmRzX2Z1biIsImxpdmVfYmxvY2tzX2Z1biIsImZyZWVfd29yZHNfZnVuIiwiZnJlZV9ibG9ja3NfZnVuIiwibGFyZ2VzdF9mcmVlX2Z1biIsImZyYWdtZW50c19mdW4iLCJjb21wYWN0aW9uc19mdW4iLCJ0b3BfaGVhcF93b3Jkc19mdW4iLCJzdGFja19zaXplX2Z1biIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19mdW4iLCJtaW5vcl93b3Jkc19nZW4iLCJwcm9tb3RlZF93b3Jkc19nZW4iLCJtYWpvcl93b3Jkc19nZW4iLCJtaW5vcl9jb2xsZWN0aW9uc19nZW4iLCJtYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJoZWFwX3dvcmRzX2dlbiIsImhlYXBfY2h1bmtzX2dlbiIsImxpdmVfd29yZHNfZ2VuIiwibGl2ZV9ibG9ja3NfZ2VuIiwiZnJlZV93b3Jkc19nZW4iLCJmcmVlX2Jsb2Nrc19nZW4iLCJsYXJnZXN0X2ZyZWVfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJmcmFnbWVudHNfZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJjb21wYWN0aW9uc19nZW4iLCJjb21waWxlX2FjYyQxNCIsInRvcF9oZWFwX3dvcmRzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwic3RhY2tfc2l6ZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJmbG9hdF9mIiwiaW50X2YiLCJhXzE1OCIsImJfMTU5IiwiY3VzdG9tX21pbm9yX21heF9zaXplXzE4MSIsImN1c3RvbV9taW5vcl9yYXRpb18xNzkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMTc3Iiwid2luZG93X3NpemVfMTc1IiwiYWxsb2NhdGlvbl9wb2xpY3lfMTczIiwic3RhY2tfbGltaXRfMTcxIiwibWF4X292ZXJoZWFkXzE2OSIsInZlcmJvc2VfMTY3Iiwic3BhY2Vfb3ZlcmhlYWRfMTY1IiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfMTYzIiwibWlub3JfaGVhcF9zaXplXzE2MSIsImFyZ18xODIiLCJibmRzXzE2MCIsImFyZ18xODAiLCJibmRzXzE2MCQwIiwiYXJnXzE3OCIsImJuZHNfMTYwJDEiLCJhcmdfMTc2IiwiYm5kc18xNjAkMiIsImFyZ18xNzQiLCJibmRzXzE2MCQzIiwiYXJnXzE3MiIsImJuZHNfMTYwJDQiLCJhcmdfMTcwIiwiYm5kc18xNjAkNSIsImFyZ18xNjgiLCJibmRzXzE2MCQ2IiwiYXJnXzE2NiIsImJuZHNfMTYwJDciLCJhcmdfMTY0IiwiYm5kc18xNjAkOCIsImFyZ18xNjIiLCJibmRzXzE2MCQ5IiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWFrZV9jcmVhdG9yJDAiLCJtaW5vcl9oZWFwX3NpemVfZnVuIiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfZnVuIiwic3BhY2Vfb3ZlcmhlYWRfZnVuIiwidmVyYm9zZV9mdW4iLCJtYXhfb3ZlcmhlYWRfZnVuIiwic3RhY2tfbGltaXRfZnVuIiwiYWxsb2NhdGlvbl9wb2xpY3lfZnVuIiwid2luZG93X3NpemVfZnVuIiwiY3VzdG9tX21ham9yX3JhdGlvX2Z1biIsImN1c3RvbV9taW5vcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfbWF4X3NpemVfZnVuIiwibWlub3JfaGVhcF9zaXplX2dlbiIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2dlbiIsInNwYWNlX292ZXJoZWFkX2dlbiIsInZlcmJvc2VfZ2VuIiwibWF4X292ZXJoZWFkX2dlbiIsInN0YWNrX2xpbWl0X2dlbiIsImFsbG9jYXRpb25fcG9saWN5X2dlbiIsIndpbmRvd19zaXplX2dlbiIsImN1c3RvbV9tYWpvcl9yYXRpb19nZW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2dlbiIsIm1hcF9wb2x5JDAiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsImNvbXBhcmUkNyIsImVxdWFsJDUiLCJ0dW5lIiwibG9nZ2VyIiwib2xkX2NvbnRyb2xfcGFyYW1zIiwiZmllbGQiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJuZXdfY29udHJvbF9wYXJhbXMiLCJkaXNhYmxlX2NvbXBhY3Rpb24iLCJwb2xpY3kiLCJzdGF0X3NpemVfbGF6eSIsInN0YXRfc2l6ZSIsImtlZXBfYWxpdmUiLCJvIiwiaXNfemVyb19hbGxvYyIsIm1pbm9yX3dvcmRzX2JlZm9yZSIsIm1ham9yX3dvcmRzX2JlZm9yZSIsIm1pbm9yX3dvcmRzX2FmdGVyIiwibWFqb3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMTkwIiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzE4OCIsImFyZ18xOTEiLCJibmRzXzE4NyIsImFyZ18xODkiLCJibmRzXzE4NyQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzE5NyIsImlzX21ham9yXzE5NSIsInNpemVfaW5fd29yZHNfMTkzIiwiYXJnXzE5OCIsImJuZHNfMTkyIiwiYXJnXzE5NiIsImJuZHNfMTkyJDAiLCJhcmdfMTk0IiwiYm5kc18xOTIkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImluZm8iLCJiYWNrdHJhY2UiLCJiYWNrdHJhY2UkMCIsImluZm8kMCIsInRyYWNrZXIiLCJhZGRfZmluYWxpemVyIiwiYWRkX2ZpbmFsaXplcl9leG4iLCJhZGRfZmluYWxpemVyX2xhc3QiLCJhZGRfZmluYWxpemVyX2xhc3RfZXhuIiwiZmluYWxpemVfcmVsZWFzZSIsInNleHBfb2ZfdCQ4IiwiZXhwZWN0IiwiZXhwZWN0JDAiLCJzZXhwXzAwNiIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwidHlwZV9pZCIsInRvX3N0YWJsZV9mb3JtYXQiLCJvZl9zdGFibGVfZm9ybWF0Iiwib2ZfcXVpY2tjaGVja2FibGUiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwic2lnbmFsIiwiZiQwIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJvZl9hXzAwOSIsIm9mX2FfMDEyIiwieF8wMTMiLCJvZl9mb3JtYXQiLCJ0b19mb3JtYXQiLCJzZXRfYXQiLCJzZXRfaW50ZXJuYWwiLCJzZXRfaWZfbm9uZSIsInNldF9leG4iLCJnZXRfZXhuIiwicHJpbnQiLCJjYXRjaCQwIiwicHJpbnRfYmFja3RyYWNlIiwiZ2V0X2JhY2t0cmFjZSIsInJlY29yZF9iYWNrdHJhY2UiLCJiYWNrdHJhY2Vfc3RhdHVzIiwiY2FwdHVyZSIsImdlbmVyYWwiLCJoYXNoYWJsZSQxIiwiY2FjaGVfc2l6ZV9ib3VuZCIsImNhY2hlIiwicmVhbGx5X2NhbGxfZiIsIm1heF9jYWNoZV9zaXplIiwiY2FjaGUkMCIsInJlY3Vyc2l2ZSIsImZfb25lc3RlcCIsIm1lbW9pemVkIiwib2ZfY29tcGFyYWJsZSIsInYkMSIsImluaXRpYWxfbGVuZ3RoIiwibmV2ZXJfc2hyaW5rIiwibmV2ZXJfc2hyaW5rJDAiLCJpbml0aWFsX2xlbmd0aCQwIiwiYXJyX2xlbmd0aCIsImFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90XyIsImFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZSIsImFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbSIsImFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcCIsImNoZWNrZWQiLCJhcHBhcmVudF9mcm9udF9pbmRleCIsImFwcGFyZW50X2JhY2tfaW5kZXgiLCJkaXIiLCJhcHBhcmVudF9mcm9udCIsImFwcGFyZW50X2JhY2siLCJhY3R1YWxfZnJvbnQiLCJhY3R1YWxfYmFjayIsImFwcGFyZW50X2kiLCJyZWFsX2kiLCJzdG9wX3BvcyIsImFwcGFyZW50X2kkMCIsInJlYWxfaSQwIiwicmVhbF9pJDEiLCJhcHBhcmVudF9pJDEiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsIml0ZXJpX2ludGVybmFsIiwibmV3X2FyciIsIm9sZF9hcnIiLCJicmVha19wb3MiLCJtYXliZV9zaHJpbmtfdW5kZXJseWluZyIsImdyb3dfdW5kZXJseWluZyIsInBlZWtfZnJvbnRfbm9uZW1wdHkiLCJwZWVrX2JhY2tfbm9uZW1wdHkiLCJkZXF1ZXVlX2Zyb250X25vbmVtcHR5IiwiZGVxdWV1ZV9iYWNrX25vbmVtcHR5IiwiZHJvcF9nZW4iLCJhc3NlcnRfbm90X2VtcHR5IiwidHJ1ZV9pbmRleF9leG4iLCJpX2Zyb21femVybyIsInRydWVfaSIsImdldF9vcHQiLCJiYWNrX2luZGV4X2V4biIsImZyb250X2luZGV4X2V4biIsImdldCQwIiwidW50cmFuc2xhdGVkX2kiLCJlcHJpbnQiLCJlcHJpbnRzIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwic2V4cF9vZl9hcmciLCJzZXhwX29mX3Jlc3VsdCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwibWVzc2FnZSQwIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsInF1b3RlIiwiY29uY2F0X3F1b3RlZCIsInNwbGl0X2NvbW1hbmQiLCJzb3J0X2FuZF9hbGlnbiIsImFkZF91bml0IiwidW50aWxfZW1wdHkiLCJic3RyXzAwMiIsInBvc18wMDQiLCJsZW5fMDA2IiwiaW5pdF8wMDgiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJyZXNpemUiLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19idWYiLCJpbnRlcm5hbCIsImNvbnRlbnRzX2J5dGVzIiwiYmlnX2NvbnRlbnRzIiwidm9sYXRpbGVfY29udGVudHMiLCJhZGRfY2hhciIsInJlc2V0IiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3MiLCJhZGRfc3ViYnl0ZXMiLCJhZGRfYmlnc3RyaW5nIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJidWZfZHN0IiwiYnVmX3NyYyIsImFkZF9iaW5fcHJvdCIsImFkZF9zdWJzdGl0dXRlIiwibGltIiwic3Vic3QiLCJwcmV2aW91cyIsImkkNCIsInByZXZpb3VzJDAiLCJpJDUiLCJwcmV2aW91cyQxIiwiaSQ2Iiwib3BlbmluZyIsImxpbSQxIiwiaSQyIiwiaSQzIiwibmV3X3N0YXJ0IiwiayQyIiwiY2xvc2luZyIsImxpbSQwIiwiaSQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJpJDkiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwiZXJyb3Jfc291cmNlXzAxNyIsInZfaW5kZXgiLCJ2X21pbl9pbmRleCIsInZfbWF4X2luZGV4IiwiYXJnNV8wMDkiLCJhcmc0XzAwOCIsImFyZzNfMDA3IiwiYXJnMl8wMDYiLCJyZXMyXzAxMiIsInJlczNfMDEzIiwicmVzNF8wMTQiLCJyZXM1XzAxNSIsImFyZzVfMDIzIiwiYXJnNF8wMjIiLCJhcmczXzAyMSIsImFyZzJfMDIwIiwiYXJnMV8wMTkiLCJyZXM1XzAyOSIsIm9mIiwibGFiZWwiLCJjcmVhdGVfYWxsIiwibWF4X2luZGV4IiwibWluX2luZGV4IiwiemVyb19iYXNlZF9pbmRleCIsIm51bV9pbmRleGVzIiwiaG9zdF9hbmRfcG9ydCIsInBhcnNlJDAiLCJtYXBfYW5vbnMiLCJ0NCIsIm1heWJlX3dpdGhfZGVmYXVsdCIsIm1heWJlIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciIsIm1hcF9mbGFnIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIiwiZXNjYXBlIiwibm9fYXJnX2Fib3J0Iiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3NvbWUiLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmciLCJvbmVfb3JfbW9yZV9hc19saXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsImxpc3RlZCIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsInJlcXVpcmVkIiwib3B0aW9uYWxfdG9fcmVxdWlyZWQiLCJhcmdfbmFtZXMiLCJhbmRfYXJnX25hbWUiLCJhbmRfYXJnX25hbWVzIiwiY2hvb3NlX29uZV9ub25fb3B0aW9uYWwiLCJjaG9vc2Vfb25lIiwiZXNjYXBlX2Fub24iLCJhbm9uIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwiZmxhZyIsImhlbHAiLCJtYXAzIiwiYm90aCIsInBlcmNlbnQkMCIsImhvc3RfYW5kX3BvcnQkMCIsIm9mX3BhcmFtIiwidG9fcGFyYW0iLCJtYXBfYW5vbnMkMCIsInQ0JDAiLCJ0MyQwIiwibWF5YmVfd2l0aF9kZWZhdWx0JDAiLCJtYXliZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QkMCIsIm5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyJDAiLCJzZXF1ZW5jZSQwIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJtYXBfZmxhZyQwIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlJDAiLCJlc2NhcGUkMCIsIm5vX2FyZ19hYm9ydCQwIiwibm9fYXJnX3JlcXVpcmVkJDAiLCJub19hcmdfc29tZSQwIiwibm9fYXJnX3JlZ2lzdGVyJDAiLCJub19hcmckMCIsIm9uZV9vcl9tb3JlX2FzX2xpc3QkMCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIkMCIsImxpc3RlZCQwIiwib3B0aW9uYWxfd2l0aF9kZWZhdWx0JDAiLCJvcHRpb25hbCQwIiwicmVxdWlyZWQkMCIsIndyYXAiLCJwYWlyIiwiYXJnX25hbWVzJDAiLCJhbmRfYXJnX25hbWUkMCIsImFuZF9hcmdfbmFtZXMkMCIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsJDAiLCJjaG9vc2Vfb25lJDAiLCJlc2NhcGVfYW5vbiQwIiwiYW5vbiQwIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jJDAiLCJmbGFnJDAiLCJwYXRoJDAiLCJoZWxwJDAiLCJhbGxfdW5pdCQwIiwiYWxsJDAiLCJtYXAzJDAiLCJhcHBseSQwIiwic3ltYm9sX21hcCQwIiwiYm90aCQwIiwicmV0dXJuJDEiLCJwZXJjZW50JDEiLCJob3N0X2FuZF9wb3J0JDEiLCJkb2VzX3JhaXNlIiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJ2X3N1bW1hcnkiLCJ2X3JlYWRtZSIsInZfYW5vbnMiLCJ2X2ZsYWdzIiwiYmluX3NoYXBlX2EiLCJ2X3N1YmNvbW1hbmRzIiwidl93b3JraW5nX2RpciIsInZfcGF0aF90b19leGUiLCJ2X2NoaWxkX3N1YmNvbW1hbmQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwidiQzIiwidiQ0IiwidiQ1IiwidiQwIiwidiQxIiwidiQyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzAzMyIsImVycm9yX3NvdXJjZV8wNDkiLCJlcnJvcl9zb3VyY2VfMDcyIiwiZXJyb3Jfc291cmNlXzA4NiIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTUxIiwiZXJyb3Jfc291cmNlXzE5OSIsImVycm9yX3NvdXJjZV8yMDEiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwieF8wMzQiLCJhIiwiZyIsInNleHBfb2ZfdCQwIiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJhcmdfMDQzIiwiYm5kc18wMzUiLCJhcmdfMDQxIiwiYm5kc18wMzUkMCIsImFyZ18wMzkiLCJibmRzXzAzNSQxIiwiYXJnXzAzNyIsImJuZHNfMDM1JDIiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsInY0IiwidjMiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwidl9yIiwidl9nIiwidl9iIiwidl9hIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wNDQiLCJiXzA0NSIsIm4kMCIsIm4kMSIsImFfMDQ2IiwiYl8wNDciLCJ0X29mX3NleHAkMSIsInhfMDUwIiwibCIsImgiLCJzZXhwX29mX3QkMSIsImFfMDU4IiwibF8wNTYiLCJzXzA1NCIsImhfMDUyIiwiYXJnXzA1OSIsImJuZHNfMDUxIiwiYXJnXzA1NyIsImJuZHNfMDUxJDAiLCJhcmdfMDU1IiwiYm5kc18wNTEkMSIsImFyZ18wNTMiLCJibmRzXzA1MSQyIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ2X2giLCJ2X3MiLCJ2X2wiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzA2MCIsImJfMDYxIiwiYV8wNjIiLCJiXzA2MyIsImNyZWF0ZSQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzA2NyIsImF0b21fMDY1Iiwic2V4cF9hcmdzXzA2OCIsImF0b21fMDY1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwiYXJnMF8wNzQiLCJyZXMwXzA3NSIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwiYXJnMF8wODMiLCJyZXMwXzA4NCIsInRfb2Zfc2V4cCQzIiwic2V4cF8wODUiLCJzZXhwX29mX3QkMiIsInZfMDkyIiwidl8wOTEiLCJ2XzA4NyIsInZfMDg5Iiwidl8wODgiLCJ2XzA5MCIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDkzIiwiYl8wOTQiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInJpZ2h0XzA5NiIsImxlZnRfMDk1IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8wOTgiLCJsZWZ0XzA5NyIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTE0IiwiYXRvbV8xMTIiLCJzZXhwX2FyZ3NfMTE1IiwiYXRvbV8xMTIkMCIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJhcmcwXzEyNCIsInJlczBfMTI1IiwiYXJnMF8xNDgiLCJyZXMwXzE0OSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiYXJnMF8xMTciLCJyZXMwXzExOCIsImFyZzBfMTQ1IiwicmVzMF8xNDYiLCJhcmcwXzEzOSIsInJlczBfMTQwIiwiYXJnMF8xMzYiLCJyZXMwXzEzNyIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE1MCIsInNleHBfb2ZfdCQzIiwidl8xNjMiLCJ2XzE2MSIsInZfMTU5Iiwidl8xNTYiLCJ2XzE1NCIsInZfMTUyIiwidl8xNjIiLCJ2XzE2MCIsInZfMTU4Iiwidl8xNTUiLCJ2XzE1MyIsInZfMTU3IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzE2NCIsImJfMTY1IiwicmlnaHRfMTc1IiwibGVmdF8xNzQiLCJyaWdodF8xNzEiLCJsZWZ0XzE3MCIsInJpZ2h0XzE2NyIsImxlZnRfMTY2IiwicmlnaHRfMTg3IiwibGVmdF8xODYiLCJyaWdodF8xODUiLCJsZWZ0XzE4NCIsInJpZ2h0XzE4MSIsImxlZnRfMTgwIiwicmlnaHRfMTgzIiwibGVmdF8xODIiLCJyaWdodF8xNzkiLCJsZWZ0XzE3OCIsInJpZ2h0XzE3MyIsImxlZnRfMTcyIiwicmlnaHRfMTY5IiwibGVmdF8xNjgiLCJyaWdodF8xNzciLCJsZWZ0XzE3NiIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMTkwIiwiYl8xOTEiLCJ0X29mX3NleHAkNiIsInNleHBfMTk3IiwiYXRvbV8xOTUiLCJhdG9tXzE5NSQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzIwMCIsInNleHBfb2ZfdCQ0Iiwidl8yMDIiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiZW1wdHkiLCJpc19lbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsImxpbmVfaGVpZ2h0Iiwid2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfd2lkdGgiLCJoZWlnaHQiLCJtaW5faGVpZ2h0IiwibWF4X2hlaWdodCIsInBhZGRpbmdfdG9wIiwicGFkZGluZ19ib3R0b20iLCJwYWRkaW5nX2xlZnQiLCJwYWRkaW5nX3JpZ2h0IiwicGFkZGluZyIsInVuaWZvcm1fcGFkZGluZyIsIm1hcmdpbl90b3AiLCJtYXJnaW5fYm90dG9tIiwibWFyZ2luX2xlZnQiLCJtYXJnaW5fcmlnaHQiLCJtYXJnaW4iLCJ1bmlmb3JtX21hcmdpbiIsInJvd19nYXAiLCJjb2x1bW5fZ2FwIiwiY29uY2F0MnYiLCJjb25jYXQzdiIsImJvcmRlcl92YWx1ZSIsInN0eWxlJDAiLCJ3aWR0aCQwIiwiY29sb3IkMCIsImNyZWF0ZV9ib3JkZXIiLCJzaWRlIiwiYm9yZGVyX3RvcCIsImJvcmRlcl9ib3R0b20iLCJib3JkZXJfbGVmdCIsImJvcmRlcl9yaWdodCIsImJvcmRlciIsIm91dGxpbmUiLCJib3JkZXJfY29sbGFwc2UiLCJib3JkZXJfc3BhY2luZyIsImJvcmRlcl9yYWRpdXMiLCJ0ZXh0X2RlY29yYXRpb24iLCJsaW5lIiwibGluZSQwIiwiaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyIsImZsZXhfY29udGFpbmVyIiwiYWxpZ25faXRlbXMiLCJhbGlnbl9jb250ZW50IiwianVzdGlmeV9jb250ZW50IiwicmciLCJjZyIsImlubGluZSIsIndyYXAiLCJkaXJlY3Rpb24kMCIsIndyYXAkMCIsImFsaWduX2l0ZW1zJDAiLCJhbGlnbl9jb250ZW50JDAiLCJhJDEiLCJqdXN0aWZ5X2NvbnRlbnQkMCIsInJvd19nYXAkMCIsImNvbHVtbl9nYXAkMCIsImZsZXhfaXRlbSIsIm9yZGVyIiwiZ3JvdyIsImJhc2lzIiwic2hyaW5rIiwib3JkZXIkMCIsImJhc2lzJDAiLCJmbGV4IiwiYWxpZ25fc2VsZiIsInJlc2l6ZSIsInZhbHVlJDAiLCJhbmltYXRpb24iLCJkdXJhdGlvbiIsImRlbGF5IiwiZmlsbF9tb2RlIiwiaXRlcl9jb3VudCIsInRpbWluZ19mdW5jdGlvbiIsInNwYW5fdG9fc3RyaW5nIiwiZCIsImZpbGxfbW9kZSQwIiwidXNlcl9zZWxlY3QiLCJjc3MiLCJzMiIsIngiLCJ0b19qc19zdHJpbmciLCJ0b19qc19zdHJpbmdfZml4ZWQiLCJ0b19qc19zdHJpbmdfcHJlY2lzaW9uIiwidG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX2ZpeGVkIiwidG9fc3RyaW5nX3ByZWNpc2lvbiIsInRvX3N0cmluZ19leHBvbmVudGlhbCIsInByaW50IiwiZiIsInZpc2liaWxpdHlfaGFuZGxlcnMiLCJzZXF1ZW5jZV9hc19zaWJsaW5nIiwibGVmdCIsInVubGVzc19zdG9wcGVkIiwiY29udGFpbnNfc3RvcCIsImVzIiwiY3VycmVudF9kb21fZXZlbnQiLCJoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4iLCJoYW5kbGUiLCJkb21fZXZlbnQiLCJldmVudCIsIm9sZCIsInNleHBfb2ZfdCIsInZhbHVlIiwidHlwZV9pZCIsImdlbmVyaWNfaG9vayIsInBhY2siLCJpZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJpbml0IiwiaW5wdXRfaWQiLCJpbnB1dCIsImEiLCJpbml0JDAiLCJhJDAiLCJ1cGRhdGUkMCIsImRlc3Ryb3kkMCIsImdlbmVyaWNfaG9vayQwIiwiZXh0cmEiLCJjb21iaW5lIiwicmlnaHQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImVsZW1lbnQiLCJzdGF0ZSIsImFuaW1hdGlvbl9pZCIsIm9sZF9pbnB1dCIsImNyZWF0ZSIsImNvbWJpbmVfaW5wdXRzIiwic2V0IiwiZ2V0IiwiZGVsZXRlJDAiLCJzZXRfcHJvcF9hc2NpaSIsInQiLCJuYW1lIiwiZ2V0X3Byb3BfYXNjaWkiLCJoYXNfcHJvcGVydHkiLCJzZXRfcHJvcGVydHkiLCJoYXNfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZSIsInRvX2RvbSIsIm5vZGUiLCJ0YWciLCJhdHRycyIsImNoaWxkcmVuIiwia2V5Iiwia2V5JDAiLCJzdmciLCJ0ZXh0IiwicyIsInBhdGNoIiwiY3JlYXRlJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpc19lbXB0eSIsImZfaWQiLCJpZF9zZXhwIiwiY3JlYXRlJDEiLCJ2ZG9tX2Zvcl90ZXN0aW5nIiwiZWx0IiwiZG9tX25vZGUiLCJzMCIsInByZXZfc3RhdGUiLCJkb21fbm9kZSQwIiwibmFtZSQyIiwibmFtZSQxIiwibmFtZSQwIiwiZW1wdHkiLCJyaGFuZGxlciIsInhfMDAyIiwibGhhbmRsZXIiLCJ4XzAwMSIsImNyZWF0ZV9mbG9hdCIsInByb3BlcnR5Iiwic3RyaW5nX3Byb3BlcnR5IiwiYm9vbF9wcm9wZXJ0eSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzIiwiY3JlYXRlX2hvb2siLCJob29rIiwibWFueSIsIm1hbnlfd2l0aG91dF9tZXJnZSIsImNvbWJpbmUkMCIsIndhcm5pbmdfY291bnQiLCJ3YXJuX3MiLCJxdW90YSIsIndhcm5pbmdfY291bnQkMCIsInJlc2V0X3dhcm5pbmdfY291bnQiLCJjb21iaW5pbmdfbWFwX2FkZCIsIm1hcCIsImV4aXN0aW5nX3ZhbHVlIiwiZW1wdHlfbWVyZ2UiLCJzdHlsZSIsImNzcyIsImNsYXNzJDAiLCJjbGFzc25hbWUiLCJjbGFzc2VzIiwiY2xhc3NlcyQwIiwiY2xhc3NuYW1lcyIsImhyZWYiLCJyIiwibGFiZWwiLCJ0YXJnZXQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJoaWRkZW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJ4IiwiYXV0b2ZvY3VzIiwiZm9yJDAiLCJ0eXBlIiwidmFsdWVfcHJvcCIsInRhYmluZGV4IiwidGl0bGUiLCJhbHQiLCJzcmMiLCJvcGVuIiwic3RhcnQiLCJtaW4iLCJtYXgiLCJtaW5fZGF0ZSIsIm1heF9kYXRlIiwibWluX2RhdGVfdGltZSIsIm1heF9kYXRlX3RpbWUiLCJjb2xzcGFuIiwicm93c3BhbiIsImRyYWdnYWJsZSIsImIiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJjbGlwYm9hcmQiLCJkcmFnIiwicG9pbnRlciIsImFuaW1hdGlvbiIsIm9uIiwiaGFuZGxlciIsIm9uX2ZvY3VzIiwib25fYmx1ciIsIm9uX2NsaWNrIiwib25fY29udGV4dG1lbnUiLCJvbl9kb3VibGVfY2xpY2siLCJvbl9kcmFnIiwib25fZHJhZ3N0YXJ0Iiwib25fZHJhZ2VuZCIsIm9uX2RyYWdlbnRlciIsIm9uX2RyYWdsZWF2ZSIsIm9uX2RyYWdvdmVyIiwib25fZHJvcCIsIm9uX21vdXNlbW92ZSIsIm9uX21vdXNldXAiLCJvbl9tb3VzZWRvd24iLCJvbl9tb3VzZWVudGVyIiwib25fbW91c2VsZWF2ZSIsIm9uX21vdXNlb3ZlciIsIm9uX21vdXNlb3V0Iiwib25fa2V5dXAiLCJvbl9rZXlwcmVzcyIsIm9uX2tleWRvd24iLCJvbl9zY3JvbGwiLCJvbl9sb2FkIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fd2hlZWwiLCJvbl9jb3B5Iiwib25fY3V0Iiwib25fcGFzdGUiLCJvbl9yZXNldCIsIm9uX2FuaW1hdGlvbmVuZCIsImNvbnN0X2lnbm9yZSIsInJ1bl9jb2VyY2lvbiIsImNvZXJjaW9uIiwicHJldiIsIm9uX2lucHV0X2V2ZW50Iiwib25fY2hhbmdlIiwib25faW5wdXQiLCJ0b19yYXciLCJhdHRyIiwiYXR0cnNfb2JqIiwidGFrZV9zZWNvbmRfc3R5bGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJ0YWtlX3NlY29uZF9jbGFzc2VzIiwiZmlyc3QkMCIsImFfMDAzIiwiYl8wMDQiLCJzZWNvbmQkMCIsImFfMDA1IiwiYl8wMDYiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwic2V4cF9vZl90JDAiLCJ4XzAxMyIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiY29tYmluZSQyIiwib25fbW91bnQkMCIsIm5ld19pbnB1dCIsImFfMDE2IiwiYl8wMTciLCJ0XzAxOSIsInRfMDE4IiwidF8wMjEiLCJ0XzAyMCIsImNzc192YXJzX25vX2tlYmFicyIsImFsaXN0IiwiY3NzX3ZhciIsImZpbHRlcl9ieV9raW5kIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsImV2ZW50X2tpbmQkMSIsImV2ZW50X2tpbmQkMiIsImV2ZW50X2tpbmQkMyIsImV2ZW50X2tpbmQkNCIsImV2ZW50X2tpbmQkNSIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJjbGljayIsImNvbnRleHRtZW51Iiwia2V5ZG93biIsImJlZm9yZXVubG9hZCIsImYkMCIsInZpc2liaWxpdHljaGFuZ2UiLCJtb3VzZXVwX3R5cGVfaWQiLCJtb3VzZW1vdmVfdHlwZV9pZCIsImtleWRvd25fdHlwZV9pZCIsImNsaWNrX3R5cGVfaWQiLCJjb250ZXh0bWVudV90eXBlX2lkIiwidmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkIiwiYmVmb3JldW5sb2FkX3R5cGVfaWQiLCJ2ZG9tX3RodW5rIiwiYXJnIiwia2V5JDEiLCJyZXMxXzAwOSIsIndpdGhfa2V5IiwibWFwX2F0dHJzIiwicmF3X2F0dHJzIiwiYWRkX2NsYXNzZXMiLCJ0X3RvX2pzIiwidyIsInRfdG9fanNfbGF6eSIsImtpbmQiLCJvdGhlciIsImxhenkiLCJlbGVtZW50X2V4cGVydCIsIndpZGdldCIsInZkb21fZm9yX3Rlc3RpbmckMCIsImNyZWF0ZV9jaGlsZGxlc3MiLCJjcmVhdGVfc3ZnIiwidGV4dGYiLCJmb3JtYXQiLCJ3aWRnZXRfb2ZfbW9kdWxlIiwibSIsImFyZzBfMDA2Iiwic3RhdGVfMDA0IiwiaW5wdXRfMDAyIiwiYXJnXzAwNSIsImJuZHNfMDAxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDAiLCJyZXMwXzAwOCIsInByZXZfaW5wdXQiLCJlbGVtZW50JDAiLCJzdGF0ZSQwIiwiaSIsIndpZGdldCQwIiwiY29udGVudCIsIm92ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmciLCJwcmV2X2F0dHIiLCJwcmV2X3RhZyIsInByZXZfY29udGVudCIsImlubmVyX2h0bWxfc3ZnIiwiaW5uZXJfaHRtbCIsImFiYnIiLCJib2R5IiwiYnV0dG9uIiwiY29kZSIsImRhdGFsaXN0IiwiZGV0YWlscyIsImRpdiIsIm1haW4iLCJmaWVsZHNldCIsImxlZ2VuZCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImh0bWwiLCJpbWciLCJpbnB1dF9kZXByZWNhdGVkIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJvcHRncm91cCIsIm9wdGlvbiIsImxpIiwicCIsInByZSIsInNlY3Rpb24iLCJzcGFuIiwic3Ryb25nIiwiZW0iLCJibG9ja3F1b3RlIiwic3VtbWFyeSIsImlmcmFtZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwiZGwiLCJkdCIsImRkIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsImFwcGx5IiwiY3JlYXRlJDIiLCJjcmVhdGVfc3ZnJDAiLCJoZXJlIiwiZXJyb3Jfc291cmNlXzAwNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInZhbGlkYXRlIiwidCIsImVxdWFsIiwidDEiLCJ0MiIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJzZXhwX29mX3QkMSIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJzZXhwX29mX3QiLCJ2XzAwNiIsInNsb3RzX3Blcl90dXBsZV8wMDIiLCJhcmdfMDAzIiwiYm5kc18wMDEiLCJzZXhwX29mX3QkMCIsIm9mX3R1cGxlXzAwNyIsIm9mX3ZhcmlhbnRfMDA4Iiwic2xvdHNfcGVyX3R1cGxlIiwibiIsInNleHBfb2ZfdDEiLCJvZl9hMF8wMDkiLCJzZXhwX29mX3QyIiwib2ZfYTBfMDEwIiwib2ZfYTFfMDExIiwic2V4cF9vZl90MyIsIm9mX2EwXzAxMiIsIm9mX2ExXzAxMyIsIm9mX2EyXzAxNCIsInNleHBfb2ZfdDQiLCJvZl9hMF8wMTUiLCJvZl9hMV8wMTYiLCJvZl9hMl8wMTciLCJvZl9hM18wMTgiLCJzZXhwX29mX3Q1Iiwib2ZfYTBfMDE5Iiwib2ZfYTFfMDIwIiwib2ZfYTJfMDIxIiwib2ZfYTNfMDIyIiwib2ZfYTRfMDIzIiwic2V4cF9vZl90NiIsIm9mX2EwXzAyNCIsIm9mX2ExXzAyNSIsIm9mX2EyXzAyNiIsIm9mX2EzXzAyNyIsIm9mX2E0XzAyOCIsIm9mX2E1XzAyOSIsInNleHBfb2ZfdDciLCJvZl9hMF8wMzAiLCJvZl9hMV8wMzEiLCJvZl9hMl8wMzIiLCJvZl9hM18wMzMiLCJvZl9hNF8wMzQiLCJvZl9hNV8wMzUiLCJvZl9hNl8wMzYiLCJzZXhwX29mX3Q4Iiwib2ZfYTBfMDM3Iiwib2ZfYTFfMDM4Iiwib2ZfYTJfMDM5Iiwib2ZfYTNfMDQwIiwib2ZfYTRfMDQxIiwib2ZfYTVfMDQyIiwib2ZfYTZfMDQzIiwib2ZfYTdfMDQ0Iiwic2V4cF9vZl90OSIsIm9mX2EwXzA0NSIsIm9mX2ExXzA0NiIsIm9mX2EyXzA0NyIsIm9mX2EzXzA0OCIsIm9mX2E0XzA0OSIsIm9mX2E1XzA1MCIsIm9mX2E2XzA1MSIsIm9mX2E3XzA1MiIsIm9mX2E4XzA1MyIsInNleHBfb2ZfdDEwIiwib2ZfYTBfMDU0Iiwib2ZfYTFfMDU1Iiwib2ZfYTJfMDU2Iiwib2ZfYTNfMDU3Iiwib2ZfYTRfMDU4Iiwib2ZfYTVfMDU5Iiwib2ZfYTZfMDYwIiwib2ZfYTdfMDYxIiwib2ZfYThfMDYyIiwib2ZfYTlfMDYzIiwic2V4cF9vZl90MTEiLCJvZl9hMF8wNjQiLCJvZl9hMV8wNjUiLCJvZl9hMl8wNjYiLCJvZl9hM18wNjciLCJvZl9hNF8wNjgiLCJvZl9hNV8wNjkiLCJvZl9hNl8wNzAiLCJvZl9hN18wNzEiLCJvZl9hOF8wNzIiLCJvZl9hOV8wNzMiLCJvZl9hMTBfMDc0Iiwic2V4cF9vZl90MTIiLCJvZl9hMF8wNzUiLCJvZl9hMV8wNzYiLCJvZl9hMl8wNzciLCJvZl9hM18wNzgiLCJvZl9hNF8wNzkiLCJvZl9hNV8wODAiLCJvZl9hNl8wODEiLCJvZl9hN18wODIiLCJvZl9hOF8wODMiLCJvZl9hOV8wODQiLCJvZl9hMTBfMDg1Iiwib2ZfYTExXzA4NiIsInNleHBfb2ZfdDEzIiwib2ZfYTBfMDg3Iiwib2ZfYTFfMDg4Iiwib2ZfYTJfMDg5Iiwib2ZfYTNfMDkwIiwib2ZfYTRfMDkxIiwib2ZfYTVfMDkyIiwib2ZfYTZfMDkzIiwib2ZfYTdfMDk0Iiwib2ZfYThfMDk1Iiwib2ZfYTlfMDk2Iiwib2ZfYTEwXzA5NyIsIm9mX2ExMV8wOTgiLCJvZl9hMTJfMDk5Iiwic2V4cF9vZl90MTQiLCJvZl9hMF8xMDAiLCJvZl9hMV8xMDEiLCJvZl9hMl8xMDIiLCJvZl9hM18xMDMiLCJvZl9hNF8xMDQiLCJvZl9hNV8xMDUiLCJvZl9hNl8xMDYiLCJvZl9hN18xMDciLCJvZl9hOF8xMDgiLCJvZl9hOV8xMDkiLCJvZl9hMTBfMTEwIiwib2ZfYTExXzExMSIsIm9mX2ExMl8xMTIiLCJvZl9hMTNfMTEzIiwibmFtZSQxIiwicHJlZml4IiwibmFtZSQwIiwibmFtZSIsImZhaWx3aXRocyIsImFyY2hfc2l4dHlmb3VyIiwibnVtX2JpdHMiLCJtYXhfdmFsdWUiLCJ0b19zdHJpbmciLCJzcHJpbnRmIiwiY29uY2F0IiwibCIsIm9mX3Nsb3RzXzAwNyIsIm9mX2FfMDA4IiwiZXF1YWwiLCJtYXhfc2xvdCIsImFycmF5X2luZGV4X251bV9iaXRzIiwibWFza2VkX3R1cGxlX2lkX251bV9iaXRzIiwibWF4X2FycmF5X2xlbmd0aCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInQiLCJwaHlzX2VxdWFsIiwicGh5c19jb21wYXJlIiwibnVsbCQwIiwiaXNfbnVsbCIsImNyZWF0ZSIsImhlYWRlcl9pbmRleCIsInR1cGxlX2lkIiwiaGVhZGVyX2luZGV4X21hc2siLCJpbnZhcmlhbnQiLCJzbG90X2luZGV4Iiwic2xvdCIsImZpcnN0X3Nsb3RfaW5kZXgiLCJ0b19pbnQ2MyIsIm9mX2ludDYzIiwibnVsbCQxIiwiaXNfbnVsbCQwIiwiaXNfZnJlZSIsImlzX3VzZWQiLCJ0dXBsZV9pZCQwIiwibWV0YWRhdGFfaW5kZXgiLCJzdGFydF9vZl90dXBsZXNfaW5kZXgiLCJtYXhfY2FwYWNpdHkiLCJkdW1teSIsInIiLCJmaXJzdF9mcmVlIiwic2V0X2ZpcnN0X2ZyZWUiLCJ2IiwibmV4dF9pZCIsInNldF9uZXh0X2lkIiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImNhcGFjaXR5IiwiZHVtbXkkMCIsImZpcnN0X2ZyZWUkMCIsIm5leHRfaWQkMCIsImxlbmd0aCQwIiwiY2FwYWNpdHkkMCIsInNsb3RzX3Blcl90dXBsZSQwIiwiaW5pdCIsImFycmF5X2luZGljZXNfcGVyX3R1cGxlIiwiYXJyYXlfbGVuZ3RoIiwidHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCIsInR1cGxlX251bSIsInR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IiwibWV0YWRhdGEiLCJsZW5ndGgkMSIsInNleHBfb2ZfdCQzIiwic2V4cF9vZl90eSIsImNhcGFjaXR5XzAxOCIsInNsb3RzX3Blcl90dXBsZV8wMTYiLCJsZW5ndGhfMDIwIiwibmV4dF9pZF8wMjIiLCJmaXJzdF9mcmVlXzAyNCIsImR1bW15XzAyNiIsImFyZ18wMjciLCJibmRzXzAxNSIsImFyZ18wMjUiLCJibmRzXzAxNSQwIiwiYXJnXzAyMyIsImJuZHNfMDE1JDEiLCJhcmdfMDIxIiwiYm5kc18wMTUkMiIsImFyZ18wMTkiLCJibmRzXzAxNSQzIiwiYXJnXzAxNyIsImJuZHNfMDE1JDQiLCJ1bnNhZmVfaGVhZGVyIiwidW5zYWZlX3NldF9oZWFkZXIiLCJoZWFkZXIiLCJoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIiwidW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSIsInBvaW50ZXIiLCJ0JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMSIsImlkIiwic2hvdWxkX2VxdWFsIiwieF8wMDkiLCJleG4kMCIsImV4biIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsImFyZzBfMDI4IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInJlczJfMDMzIiwiaW52YXJpYW50JDAiLCJpbnZhcmlhbnRfYSIsImZyZWUiLCJoZWFkZXJfaW5kZXgkMCIsInR1cGxlX251bSQwIiwiZmlyc3Rfc2xvdCIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiY2FwYWNpdHkkMSIsImlzX2Z1bGwiLCJ1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCIsIm5leHRfZnJlZV9oZWFkZXJfaW5kZXgiLCJzZXRfbWV0YWRhdGEiLCJjcmVhdGVfYXJyYXkiLCJ1bnNhZmVfaW5pdF9yYW5nZSIsImxvIiwiaGkiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJ0cyIsImFyZyIsInNleHBfb2ZfYXJnIiwic2V4cF9vZl9yZXN1bHQiLCJmIiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ2XzA2OCIsInhfMDY5IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2Iiwib2Zfc2xvdHNfMDc3IiwiaXNfdmFsaWRfMDc5IiwicG9pbnRlcl8wODEiLCJhcmdfMDgyIiwiYm5kc18wNzgiLCJhcmdfMDgwIiwiYm5kc18wNzgkMCIsImZpZWxkMCIsImZpZWxkMSIsInR5cGVuYW1lIiwiaGFzX2RvdWJsZV9hcnJheV90YWciLCJmaWVsZHMiLCJpc192YWxpZCIsImZvbGxvdyIsInhfMDgzIiwiaW52YWxpZGF0ZSIsInBvcyQ5IiwicG9zJDgiLCJwb3MkNyIsInBvcyQ2IiwiYXJnXzA4NyIsInBvcyQ1IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsImVycm9yX3NvdXJjZV8wMTkiLCJtYXhfdGltZSIsIm1pbl90aW1lIiwibWF4X251bV9iaXRzIiwibWluX3ZhbHVlIiwiaW52YXJpYW50IiwidCIsIm9mX2ludCIsImkiLCJzeW1ib2wkMiIsInQxIiwidDIiLCJzeW1ib2wkMyIsInBvdzIiLCJzZXhwX29mX3QkMCIsInhfMDA3IiwibnVtX2JpdHNfaW50ZXJuYWwiLCJudW1fYml0cyIsImludmFyaWFudCQwIiwibnVtX2tleV9iaXRzIiwidF9vZl9zZXhwJDAiLCJ4XzAwNiIsImNyZWF0ZV9leG4iLCJ4XzAwOCIsImV4dGVuZF90b19tYXhfbnVtX2JpdHMiLCJiaXRzIiwiaW50cyIsImxldmVsX2JpdHNfZGVmYXVsdCIsImNvbXBhcmUiLCJlcXVhbCQwIiwieF8wMTIiLCJ4XzAxMyIsInRvX3NleHBhYmxlIiwic2V4cF9vZl90JDEiLCJhYm91dF9vbmVfbWljcm9zZWNvbmQiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJsZXZlbF9iaXRzJDAiLCJ2IiwidF9vZl9zZXhwJDIiLCJ4XzAyMSIsImNhcGFjaXR5IiwiYWxhcm1fcHJlY2lzaW9uIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wMjciLCJsZXZlbF9iaXRzXzAyNSIsImFsYXJtX3ByZWNpc2lvbl8wMjMiLCJibmRzXzAyMiIsInZfMDI4IiwiYXJnXzAzMCIsImJuZF8wMjkiLCJibmRzXzAyMiQwIiwiYXJnXzAyNiIsImJuZHNfMDIyJDEiLCJhcmdfMDI0IiwiYm5kc18wMjIkMiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJsb29wIiwicmVtYWluaW5nIiwidCQwIiwiYiIsIm1pY3Jvc2Vjb25kX3ByZWNpc2lvbiIsImR1cmF0aW9ucyIsIm51bV9iaXRzX2FjY3VtIiwibGV2ZWxfbnVtX2JpdHMiLCJudW1fYml0c19hY2N1bSQwIiwiZHVyYXRpb24iLCJjb21wYXJlJDAiLCJzZXhwX29mX3QkNCIsImNyZWF0ZSQwIiwiY3JlYXRlJDEiLCJiaXRzX3Blcl9zbG90IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsInNjYWxlX2ludCIsInNleHBfb2ZfdCQ3Iiwib2ZfaW50NjMkMCIsInRvX2ludDYzJDAiLCJhZGQiLCJhZGRfY2xhbXBfdG9fbWF4Iiwic3ViIiwiZGlmZiIsInNleHBfb2ZfcG9vbF9zbG90cyIsIm9mX2FfMDMzIiwieF8wMzQiLCJzZXhwX29mX3QkOCIsIm9mX2FfMDM1IiwieF8wMzYiLCJudWxsJDAiLCJudWxsJDEiLCJpc19udWxsIiwiZnJlZSIsImtleSIsInAiLCJhdCIsInZhbHVlIiwibGV2ZWxfaW5kZXgiLCJwcmV2Iiwic2V0X3ByZXYiLCJ4IiwibmV4dCIsInNldF9uZXh0IiwiaXNfdmFsaWQiLCJncm93IiwiaXNfZnVsbCIsIm9mX2V4dGVybmFsX2V4biIsInBvb2wiLCJsaW5rIiwiaXRlciIsImZpcnN0IiwiZiIsImN1cnJlbnQiLCJjb250aW51ZSQwIiwibmV4dCQwIiwic2xvdHMiLCJtYXhfYWxsb3dlZF9rZXkiLCJzZXRfbWF4X2FsbG93ZWRfa2V5IiwibWluX2FsbG93ZWRfa2V5Iiwic2V0X21pbl9hbGxvd2VkX2tleSIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDQ0IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA1OCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDU2Iiwia2V5c19wZXJfc2xvdF8wNTQiLCJiaXRzX3Blcl9zbG90XzA1MiIsInNsb3RzX21hc2tfMDUwIiwiYml0c18wNDgiLCJpbmRleF8wNDYiLCJsZW5ndGhfMDYwIiwibWluX2FsbG93ZWRfa2V5XzA2MiIsIm1heF9hbGxvd2VkX2tleV8wNjQiLCJzbG90c18wNjYiLCJhcmdfMDY3IiwiYm5kc18wNDUiLCJhcmdfMDY1IiwiYm5kc18wNDUkMCIsImFyZ18wNjMiLCJibmRzXzA0NSQxIiwiYXJnXzA2MSIsImJuZHNfMDQ1JDIiLCJhcmdfMDU5IiwiYm5kc18wNDUkMyIsImFyZ18wNTciLCJibmRzXzA0NSQ0IiwiYXJnXzA1NSIsImJuZHNfMDQ1JDUiLCJhcmdfMDUzIiwiYm5kc18wNDUkNiIsImFyZ18wNTEiLCJibmRzXzA0NSQ3IiwiYXJnXzA0OSIsImJuZHNfMDQ1JDgiLCJhcmdfMDQ3IiwiYm5kc18wNDUkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsImNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkiLCJsZXZlbHMiLCJlbHRfa2V5X2xvd2VyX2JvdW5kIiwic2V0X2VsdF9rZXlfbG93ZXJfYm91bmQiLCJtaW5fZWx0Iiwic2V0X21pbl9lbHQiLCJzZXRfcG9vbCIsImxlbmd0aCQxIiwic2V0X2xlbmd0aCQwIiwibGV2ZWxzJDAiLCJlbHRfa2V5X2xvd2VyX2JvdW5kJDAiLCJtaW5fZWx0JDAiLCJwb29sJDAiLCJsZW5ndGgkMiIsImlzX2VtcHR5IiwibnVtX2xldmVscyIsIm1pbl9hbGxvd2VkX2tleSQxIiwibWF4X2FsbG93ZWRfa2V5JDEiLCJpbnRlcm5hbF9pdGVyIiwibGV2ZWwiLCJzbG90X2luZGV4IiwiZWx0IiwiY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rIiwibWluX2VsdCQxIiwibWluX2VsdF9hbHJlYWR5X2ZvdW5kIiwibWluX2tleV9hbHJlYWR5X2ZvdW5kIiwibnVtX2xldmVscyQwIiwic2xvdF9taW5fa2V5Iiwic2xvdCQwIiwiY3VycmVudF9rZXkiLCJhZGRfZWx0IiwieF8xMTQiLCJ0b19hZGQiLCJrZXkkMCIsImVsdHNfMDk0IiwibWF4X2FsbG93ZWRfa2V5XzA5MiIsIm1pbl9hbGxvd2VkX2tleV8wOTAiLCJhcmdfMDk1Iiwia2V5XzA4NCIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJyJDAiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTQ2Iiwic3RhcnRfMTQ0IiwiY29uZmlnXzE0MiIsIm5vd18xNDgiLCJhbGFybSIsImFsYXJtc18xNTAiLCJhcmdfMTUxIiwidmFsdWVfMTM4IiwiYXRfMTM2IiwiYXJnXzEzOSIsImJuZHNfMTM1IiwiYXJnXzEzNyIsImJuZHNfMTM1JDAiLCJibmRzXzE0MSIsImFyZ18xNDkiLCJibmRzXzE0MSQwIiwiYXJnXzE0NyIsImJuZHNfMTQxJDEiLCJhcmdfMTQ1IiwiYm5kc18xNDEkMiIsImFyZ18xNDMiLCJibmRzXzE0MSQzIiwibGVuZ3RoJDMiLCJpc19lbXB0eSQwIiwicG9vbCQxIiwiaW50ZXJ2YWxfbnVtX2ludGVybmFsIiwidGltZSIsImludGVydmFsX251bV91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW0kMCIsImludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW1fc3RhcnQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIiwibmV4dF9hbGFybV9maXJlc19hdCIsIm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIiwieF8xNTMiLCJjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtIiwibWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIiwiaW50ZXJ2YWxfc3RhcnQiLCJpbnZhcmlhbnQkMiIsImludmFyaWFudF9hIiwieF8xNTUiLCJjaGVjayIsInByaW9yaXR5X3F1ZXVlX2Z1biIsInhfMTA5Iiwib2ZfYV8wNjgiLCJsZW5ndGhfMDcwIiwicG9vbF8wNzIiLCJtaW5fZWx0XzA3NCIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDc2IiwibGV2ZWxzXzA3OCIsImFyZ18wNzkiLCJibmRzXzA2OSIsImFyZ18wNzciLCJibmRzXzA2OSQwIiwiYXJnXzA3NSIsImJuZHNfMDY5JDEiLCJhcmdfMDczIiwiYm5kc18wNjkkMiIsImFyZ18wNzEiLCJibmRzXzA2OSQzIiwibGV2ZWxzX2Z1biIsInhfMDk4Iiwic2xvdHNfZnVuIiwieF8wNDEiLCJuIiwibWF4X2FsbG93ZWRfa2V5X2Z1biIsImV4cGVjdCIsImNvbXBhcmF0b3IiLCJhXzEwNyIsImJfMTA4IiwibWluX2FsbG93ZWRfa2V5X2Z1biIsImdvdCIsInNleHBpZmllciIsImFfMTA1IiwiYl8xMDYiLCJsZW5ndGhfZnVuIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5X2Z1biIsImV0YSIsImFfMTAzIiwiYl8xMDQiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrX2Z1biIsImtleXNfcGVyX3Nsb3RfZnVuIiwiYV8xMDEiLCJiXzEwMiIsImJpdHNfcGVyX3Nsb3RfZnVuIiwiZXhwZWN0JDAiLCJzbG90c19tYXNrX2Z1biIsImFfMDk5IiwiYl8xMDAiLCJiaXRzX2Z1biIsImluZGV4X2Z1biIsInByZXZfbGV2ZWwiLCJnb3QkMCIsImFfMTEwIiwiYl8xMTEiLCJjb21wYXJhdG9yJDAiLCJhXzExMiIsImJfMTEzIiwiZWx0X2tleV9sb3dlcl9ib3VuZF9mdW4iLCJtaW5fZWx0X2Z1biIsInBvb2xfZnVuIiwibWF4X2FsbG93ZWRfYWxhcm1fdGltZV9mdW4iLCJhXzE2MiIsImJfMTYzIiwibm93X2ludGVydmFsX251bV9zdGFydF9mdW4iLCJhXzE2MCIsImJfMTYxIiwibm93X2Z1biIsIm1heF9pbnRlcnZhbF9udW1fZnVuIiwiYV8xNTYiLCJiXzE1NyIsInNleHBpZmllciQwIiwiYV8xNTgiLCJiXzE1OSIsInN0YXJ0X2Z1biIsImNvbmZpZ19mdW4iLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJ0JDEiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTY0IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTY1IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE2NiIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDE1IiwiZXJyb3Jfc291cmNlXzAyOCIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDM2IiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInhfMDA3IiwiaG93X3RvX2R1bXAiLCJkdW1wX2lmX2RlbGF5ZWRfYnkiLCJzZXhwX29mX3dhdGNoIiwiaG93X3RvX2R1bXBfMDExIiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOSIsImFyZ18wMTIiLCJibmRzXzAwOCIsImFyZ18wMTAiLCJibmRzXzAwOCQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzAxNyIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfb2ZfdCQ3IiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsInRfb2Zfc2V4cCQ4Iiwic2V4cF8wMjkiLCJzZXhwX29mX3QkOCIsImVxdWFsJDAiLCJ4XzAzMCIsInhfMDMxIiwidF9vZl9zZXhwJDkiLCJzZXhwXzAzNyIsInNleHBfb2ZfdCQ5IiwidF9vZl9zZXhwJDEwIiwic2V4cF9vZl90JDEwIiwidGltaW5nX3doZWVsX2NvbmZpZyIsInIiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyIsIm1heF9udW1fdGhyZWFkcyIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0IiwiZmlsZV9kZXNjcl93YXRjaGVyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIiLCJjaGVja19pbnZhcmlhbnRzIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfIiwidGltaW5nX3doZWVsX2NvbmZpZyQwIiwidiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eSQwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQwIiwicmVjb3JkX2JhY2t0cmFjZXMkMCIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQwIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQkMCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQwIiwibWF4X251bV90aHJlYWRzJDAiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMCIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMCIsImVwb2xsX21heF9yZWFkeV9ldmVudHMkMCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMCIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQwIiwiY2hlY2tfaW52YXJpYW50cyQwIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfJDAiLCJzZXhwX29mX3QkMTEiLCJ0aW1pbmdfd2hlZWxfY29uZmlnXzEwMiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eV8wOTgiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXzAiLCJyZWNvcmRfYmFja3RyYWNlc18wOTAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDg2IiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXRfMDgyIiwibWF4X251bV90aHJlYWRzXzA3NCIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc18wNzAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dF8wNjYiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNTgiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5XzA1NCIsImNoZWNrX2ludmFyaWFudHNfMDQ2IiwiYm5kc18wNDEiLCJ2XzEwMyIsImFyZ18xMDUiLCJibmRfMTA0IiwiYm5kc18wNDEkMCIsInZfMDk5IiwiYXJnXzEwMSIsImJuZF8xMDAiLCJibmRzXzA0MSQxIiwidl8wOTUiLCJhcmdfMDk3IiwiYm5kXzA5NiIsImJuZHNfMDQxJDIiLCJ2XzA5MSIsImFyZ18wOTMiLCJibmRfMDkyIiwiYm5kc18wNDEkMyIsInZfMDg3IiwiYXJnXzA4OSIsImJuZF8wODgiLCJibmRzXzA0MSQ0Iiwidl8wODMiLCJhcmdfMDg1IiwiYm5kXzA4NCIsImJuZHNfMDQxJDUiLCJ2XzA3OSIsImFyZ18wODEiLCJibmRfMDgwIiwiYm5kc18wNDEkNiIsInZfMDc1IiwiYXJnXzA3NyIsImJuZF8wNzYiLCJibmRzXzA0MSQ3Iiwidl8wNzEiLCJhcmdfMDczIiwiYm5kXzA3MiIsImJuZHNfMDQxJDgiLCJ2XzA2NyIsImFyZ18wNjkiLCJibmRfMDY4IiwiYm5kc18wNDEkOSIsInZfMDYzIiwiYXJnXzA2NSIsImJuZF8wNjQiLCJibmRzXzA0MSQxMCIsInZfMDU5IiwiYXJnXzA2MSIsImJuZF8wNjAiLCJibmRzXzA0MSQxMSIsInZfMDU1IiwiYXJnXzA1NyIsImJuZF8wNTYiLCJibmRzXzA0MSQxMiIsInZfMDUxIiwiYXJnXzA1MyIsImJuZF8wNTIiLCJibmRzXzA0MSQxMyIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MSQxNCIsInZfMDQzIiwiYXJnXzA0NSIsImJuZF8wNDQiLCJibmRzXzA0MSQxNSIsImNyZWF0ZSQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2ZvIiwid29yZF9zaXplIiwibGV2ZWxfYml0cyQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJkZWZhdWx0JDEiLCJleGFtcGxlIiwidXNhZ2UiLCJmaWVsZCIsInRvX3NleHAiLCJkZXNjcmlwdGlvbiIsImFjIiwiZCIsImZpZWxkcyIsInhfMTA2IiwibmFtZTIiLCJuYW1lMSIsIm5hbWUiLCJzdHJpbmciLCJ4XzA0MCIsInQiLCJ0JDAiLCJleG4iLCJ0JDEiLCJ0JDIiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMSIsInRhZyIsImwiLCJhbGwiLCJkZWJ1ZyIsImNsb2NrIiwiZmQiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMSIsImZpbmFsaXplcnMiLCJpbnRlcnJ1cHRvciIsIm1vbml0b3IiLCJtb25pdG9yX3NlbmRfZXhuIiwicGFyYWxsZWwiLCJyZWFkZXIiLCJzY2hlZHVsZXIiLCJzaHV0ZG93biIsInRocmVhZF9wb29sIiwidGhyZWFkX3NhZmUiLCJ3cml0ZXIiLCJzeW1ib2wiLCJhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja18kMSIsImNoZWNrX2ludmFyaWFudHMkMSIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQxIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyQxIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5JDEiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMiIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMSIsIm1heF9udW1fdGhyZWFkcyQxIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCQxIiwicmVjb3JkX2JhY2t0cmFjZXMkMSIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMSIsInRpbWluZ193aGVlbF9jb25maWckMSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMSIsInQkMyIsInRhc2tfaWQiLCJub25lIiwiY3JlYXRlIiwiaXNfbm9uZSIsIngiLCJpc19zb21lIiwiZ2V0X3NvbWVfZXhuIiwiZ2V0IiwidCIsInVuc2FmZV9nZXQiLCJzZXRfc29tZSIsInYiLCJzZXRfbm9uZSIsInNldCIsInYkMCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ4XzAwMiIsImVtcHR5IiwiaXNfZW1wdHkiLCJlcXVhbCIsImR1bW15X2lkIiwiY2hpbGQiLCJ0IiwicG9vbCIsInNpYmxpbmciLCJwcmV2IiwiaWQiLCJzZXRfY2hpbGQiLCJ2Iiwic2V0X3NpYmxpbmciLCJzZXRfcHJldiIsInZhbHVlX2V4biIsImFsbG9jYXRlIiwidmFsdWUiLCJmcmVlIiwiZGlzY29ubmVjdF9zaWJsaW5nIiwic2libGluZyQwIiwiZGlzY29ubmVjdF9jaGlsZCIsImNoaWxkJDAiLCJkZXRhY2giLCJwcmV2JDAiLCJyZWxhdGlvbl90b19wcmV2IiwiY3JlYXRlIiwiY2FwYWNpdHkiLCJpbnZhcmlhbnQiLCJ0b192aXNpdCQyIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwibWF5YmVfcGFyZW50X3ZhbHVlIiwiZXhwZWN0ZWRfcHJldiIsIm5vZGUiLCJ0aGlzX3ZhbHVlIiwidGhpc192YWx1ZSQwIiwicGFyZW50X3ZhbHVlIiwidG9fdmlzaXQkMSIsImNyZWF0ZSQwIiwiY21wIiwibWluX3NpemUiLCJjb3B5IiwicG9vbCQwIiwic3RhcnQiLCJudW1fb2ZfYWxsb2NhdGVkX25vZGVzIiwiY29weV9ub2RlIiwibmV3X25vZGUiLCJuZXdfc3RhcnQiLCJyZXN0Iiwibm9kZV90b19jb3B5Iiwic2xvdCIsIm5vZGVfdG9fdXBkYXRlIiwibWVyZ2UiLCJyb290MSIsInJvb3QyIiwiYWRkX2NoaWxkIiwibmV3X2NoaWxkIiwiY3VycmVudF9jaGlsZCIsInYxIiwidjIiLCJ0b3BfZXhuIiwidG9wIiwiYWRkX25vZGUiLCJ0JDEiLCJ0JDAiLCJhZGQiLCJtYXhfc3RhY2tfZGVwdGgiLCJsb29wIiwiZGVwdGgiLCJoZWFkJDAiLCJuZXh0MSQwIiwibmV4dDIkMCIsImFjYyIsImhlYWQiLCJuZXh0MSIsIm5leHQyIiwiYWNjJDAiLCJoIiwieHMiLCJoZWFwIiwicmVtb3ZlX25vbl9lbXB0eSIsIm1lcmdlZF9jaGlsZHJlbiIsIm5ld19yb290IiwicmVtb3ZlX3RvcCIsImNsZWFyIiwibm9kZSQwIiwicG9wX2V4biIsInIiLCJwb3AiLCJwb3BfaWYiLCJmIiwiZm9sZCIsImluaXQiLCJpdGVyIiwibGVuZ3RoIiwiaXRlciQwIiwibGVuZ3RoJDAiLCJpc19lbXB0eSQwIiwibWVtIiwiZXhpc3RzIiwiZm9yX2FsbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fbGlzdCIsInRvX2FycmF5IiwibWluX2VsdCIsIm1heF9lbHQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwic2V4cF9vZl90IiwiaXNfbm9kZV92YWxpZCIsInZhbHVlX2V4biQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJ4XzAwMSIsInJlbW92ZSIsInRva2VuIiwiYWRkX3JlbW92YWJsZSIsInVwZGF0ZSIsImZpbmRfZWx0Iiwibm9kZXMkMiIsIm5vZGVzIiwibm9kZXMkMCIsIm5vZGVzJDEiLCJ1cGRhdGUkMCIsImVsdCIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsImJ1ZiIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl90IiwiYmluX2EiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiZXF1YWwiLCJhXzAwMyIsImJfMDA0IiwidF9vZl9zZXhwIiwib2ZfYV8wMDUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJwb3MiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA4IiwiYl8wMDkiLCJlcXVhbCQwIiwiYV8wMTIiLCJiXzAxMyIsImFtX3J1bm5pbmdfdGVzdCIsIm5vbmUiLCJzb21lIiwieCIsInVuc2FmZV92YWx1ZSIsImlzX25vbmUiLCJ0IiwiaXNfc29tZSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwidmFsdWVfZXhuIiwidG9fb3B0aW9uIiwib2Zfb3B0aW9uIiwiYSIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwibmV4dF8wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImNyZWF0ZSIsInVudXNlZF9lbHRzIiwiciIsInNldF91bnVzZWRfZWx0cyIsInYiLCJiYWNrIiwic2V0X2JhY2siLCJmcm9udCIsInNldF9mcm9udCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJ1bnVzZWRfZWx0cyQwIiwiYmFjayQwIiwiZnJvbnQkMCIsImxlbmd0aCQwIiwic2V4cF9vZl90JDAiLCJvZl9hXzAwNyIsImxlbmd0aF8wMDkiLCJmcm9udF8wMTEiLCJiYWNrXzAxMyIsInVudXNlZF9lbHRzXzAxNSIsImFyZ18wMTYiLCJibmRzXzAwOCIsImFyZ18wMTQiLCJibmRzXzAwOCQwIiwiYXJnXzAxMiIsImJuZHNfMDA4JDEiLCJhcmdfMDEwIiwiYm5kc18wMDgkMiIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidCIsInhfMDE3IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsImNyZWF0ZSQwIiwiZW5xdWV1ZSIsImEiLCJuZXdfYmFjayIsImRlcXVldWVfZXhuIiwieF8wMTgiLCJjbGVhcl9pbnRlcm5hbF9wb29sIiwiYWZ0ZXIiLCJ0Iiwic3BhbiIsInJlc3VsdCIsImxvZyIsImFyZzJfMDAzIiwiYXJnM18wMDQiLCJzZXhwX29mX2EiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInJlczJfMDA3IiwicmVzM18wMDgiLCJsb2dfc3RyaW5nIiwibWVzc2FnZSIsImNvbmNhdCIsImVwcmludCIsImVwcmludF9zIiwiZXByaW50cyIsInByaW50X3MiLCJzZXhwIiwic2VjIiwiYWxsIiwic2V4cF9vZl90IiwidG9fcmVwciIsIm9mX3JlcHIiLCJuYW1lcyIsImRlYnVnIiwiZm9yd2FyZGluZyIsInIiLCJzZXRfZm9yd2FyZGluZyIsInYiLCJoYXNfc2Vlbl9lcnJvciIsInNldF9oYXNfc2Vlbl9lcnJvciIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzIiwic2V0X3RhaWxzX2Zvcl9hbGxfZXJyb3JzIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJuZXh0X2Vycm9yIiwic2V0X25leHRfZXJyb3IiLCJpZCIsImhlcmUiLCJuYW1lIiwiZm9yd2FyZGluZyQwIiwiaGFzX3NlZW5fZXJyb3IkMCIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzJDAiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyQwIiwibmV4dF9lcnJvciQwIiwiaWQkMCIsImhlcmUkMCIsIm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsIm5hbWVfZnVuIiwiaGVyZV9mdW4iLCJpZF9mdW4iLCJuZXh0X2Vycm9yX2Z1biIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsImhhc19zZWVuX2Vycm9yX2Z1biIsImZvcndhcmRpbmdfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwibmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwiaGVyZV9nZW4iLCJjb21waWxlX2FjYyQyIiwiaWRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsIm5leHRfZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJ0YWlsc19mb3JfYWxsX2Vycm9yc19nZW4iLCJjb21waWxlX2FjYyQ2IiwiaGFzX3NlZW5fZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNyIsImZvcndhcmRpbmdfZ2VuIiwiYWNjIiwiY3JlYXRlIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9ucyIsInQkMSIsImFjIiwiYWMkMCIsInQkMCIsInhfMDAxIiwibmV4dF9pZCIsImNyZWF0ZV93aXRoX3BhcmVudCIsImluZm8iLCJwYXJlbnQiLCJpIiwicyIsInMkMCIsInhfMDAyIiwicGFyZW50JDAiLCJtYWluIiwiYmFja3RyYWNlX2hpc3RvcnkiLCJsb2NhbF9zdG9yYWdlIiwicHJpb3JpdHkiLCJtb25pdG9yIiwiYmFja3RyYWNlX2hpc3RvcnkkMCIsImxvY2FsX3N0b3JhZ2UkMCIsInByaW9yaXR5JDAiLCJtb25pdG9yJDAiLCJtb25pdG9yX2Z1biIsInByaW9yaXR5X2Z1biIsImxvY2FsX3N0b3JhZ2VfZnVuIiwiYmFja3RyYWNlX2hpc3RvcnlfZnVuIiwibW9uaXRvcl9nZW4iLCJwcmlvcml0eV9nZW4iLCJsb2NhbF9zdG9yYWdlX2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5X2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5XzAwOCIsImxvY2FsX3N0b3JhZ2VfMDA2IiwicHJpb3JpdHlfMDA0IiwibW9uaXRvcl8wMDIiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJpbnZhcmlhbnQiLCJjcmVhdGVfbGlrZSIsImZpbmRfbG9jYWwiLCJrZXkiLCJ3aXRoX2xvY2FsIiwiZGF0YSIsInJlY29yZF9iYWNrdHJhY2UiLCJkdW1teV9lIiwiZHVtbXlfZiIsImR1bW15X2EiLCJzZXhwX29mX3Nsb3RzIiwib2ZfZXZlbnQiLCJldmVudCIsIm9mX2pvYiIsImpvYiIsImlzX2V2ZW50IiwiaXNfam9iIiwia2luZCIsInByb2plY3QiLCJqb2Jfb3JfZXZlbnQiLCJldmVudHMiLCJzZXRfZXhlY3V0aW9uX2NvbnRleHQiLCJleGVjdXRpb25fY29udGV4dCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJmcm9udCIsInNldF9mcm9udCIsIm1hc2siLCJzZXRfbWFzayIsImpvYnMiLCJzZXRfam9icyIsImpvYnNfbGVmdF90aGlzX2N5Y2xlIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIiwibnVtX2pvYnNfcnVuIiwic2V0X251bV9qb2JzX3J1biIsImxlbmd0aCQwIiwiZnJvbnQkMCIsIm1hc2skMCIsImpvYnMkMCIsImpvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJudW1fam9ic19ydW4kMCIsIm51bV9qb2JzX3J1bl8wMDIiLCJqb2JzX2xlZnRfdGhpc19jeWNsZV8wMDQiLCJqb2JzXzAwNiIsIm1hc2tfMDA4IiwiZnJvbnRfMDEwIiwibGVuZ3RoXzAxMiIsImJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXzAxNCIsImFyZ18wMTUiLCJhcmdfMDEzIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJibmRzXzAwMSQ0IiwiYm5kc18wMDEkNSIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUiLCJjbGVhciIsInNldCIsImEiLCJvZmZzZXQkMCIsImVucXVldWUiLCJvbGRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJvbGRfam9icyIsIm9sZF9mcm9udCIsImxlbjEiLCJsZW4yIiwibmV3X2pvYnMiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm4iLCJjYW5fcnVuX2Ffam9iIiwicnVuX2pvYiIsInNjaGVkdWxlciIsInJ1bl9leHRlcm5hbF9qb2JzIiwiZXh0ZXJuYWxfam9icyIsInJ1bl9qb2JzIiwidGhpc19qb2IiLCJleG4kMCIsImV4biIsImJhY2t0cmFjZSIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwibmFtZXMkMCIsImlzX251bGwiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic2V4cF9vZl90JDEiLCJ0cmFuc2l0aW9uX2lzX2FsbG93ZWQiLCJmcm9tIiwidG8iLCJzZXhwX29mX2V2ZW50IiwiYXQiLCJpbnRlcnZhbCIsInN0YXR1cyIsIm1hdGNoIiwibm9uZSIsInNvbWUiLCJpc19ub25lIiwiaXNfc29tZSIsImZpcnN0X3NvbWUiLCJ0MSIsInQyIiwidW5zYWZlX3ZhbHVlIiwic2V4cF9vZl90JDIiLCJwcHhfb3B0aW9uYWxfZV8wIiwidmFsdWUkMCIsImRlZmF1bHQkMCIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInNldF9zdGF0dXMiLCJwcmV2X2ZpcmVkIiwic2V0X3ByZXZfZmlyZWQiLCJuZXh0X2ZpcmVkIiwic2V0X25leHRfZmlyZWQiLCJzZXRfaW50ZXJ2YWwiLCJjYWxsYmFjayIsImF0JDAiLCJzZXRfYXQiLCJhbGFybSIsInNldF9hbGFybSIsInN0YXR1cyQwIiwicHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQwIiwiaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsYmFjayQwIiwiYXQkMSIsImFsYXJtJDAiLCJhbGFybV9mdW4iLCJhdF9mdW4iLCJjYWxsYmFja19mdW4iLCJleGVjdXRpb25fY29udGV4dF9mdW4iLCJpbnRlcnZhbF9mdW4iLCJuZXh0X2ZpcmVkX2Z1biIsInByZXZfZmlyZWRfZnVuIiwic3RhdHVzX2Z1biIsImFsYXJtX2dlbiIsImF0X2dlbiIsImNhbGxiYWNrX2dlbiIsImV4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImludGVydmFsX2dlbiIsIm5leHRfZmlyZWRfZ2VuIiwicHJldl9maXJlZF9nZW4iLCJzdGF0dXNfZ2VuIiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiZXhwZWN0IiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJ4XzAxNiIsInBweF9vcHRpb25hbF9lXzAkMCIsImFfMDE3IiwiYl8wMTgiLCJnb3QkMCIsInNleHBpZmllciQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsImludmFyaWFudCQwIiwic2V4cF9vZl90JDUiLCJ4XzAyMSIsImludmFyaWFudCQxIiwiaW52YXJpYW50X3dpdGhfam9icyQwIiwic2V4cF9vZl90JDYiLCJ4XzAyMiIsImlkJDEiLCJpc193YWxsX2Nsb2NrJDEiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwicmVhZF9vbmx5IiwiZmlyZSIsImNvbnRpbnVlJDAiLCJuZXh0JDAiLCJjb250aW51ZSQxIiwicHB4X29wdGlvbmFsX2VfMCQxIiwibmV4dCIsInBweF9vcHRpb25hbF9lXzAkMiIsInByZXYiLCJhbGFybV9wcmVjaXNpb24iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0IiwibmV4dF9hbGFybV9ydW5zX2F0Iiwibm93JDAiLCJ0aW1pbmdfd2hlZWxfbm93JDAiLCJzY2hlZHVsZSIsInJlbW92ZV9mcm9tX2ZpcmVkIiwibmV3X3N0YXR1cyIsInNleHBfb2ZfZXZlbnQkMCIsInN0YXR1cyQxIiwicHJldl9maXJlZCQxIiwic2V0X3ByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMSIsInNldF9uZXh0X2ZpcmVkJDAiLCJpbnRlcnZhbCQxIiwic2V0X2ludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQxIiwiY2FsbGJhY2skMSIsInNldF9hdCQwIiwiYWxhcm0kMSIsInNldF9hbGFybSQwIiwic2V4cF9vZl90JDciLCJpbnZhcmlhbnQkMiIsInNldF9zdGF0dXMkMSIsInNldF9zdGF0dXNfaWYkMCIsInNjaGVkdWxlZF9hdCIsImNyZWF0ZV9pbnRlcm5hbCIsImFkZCQwIiwiY3JlYXRlX2FuZF9hZGQiLCJhdCQyIiwiYWZ0ZXIkMCIsInJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wciIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXRfaW50ZXJ2YWxzIiwic2V4cF9vZl90JDgiLCJhYm9ydCIsImFib3J0X2lmX3Bvc3NpYmxlIiwiYWJvcnRfZXhuIiwicmVhc29uIiwiY3JlYXRlJDEiLCJpc19zY2hlZHVsZWQiLCJzY2hlZHVsZV9hdF9pbnRlcm5hbCIsInNjaGVkdWxlX2F0Iiwic2NoZWR1bGVfYWZ0ZXIiLCJzY2hlZHVsZV9hdF9pbnRlcnZhbHMiLCJyZXNjaGVkdWxlX2F0IiwicmVzY2hlZHVsZV9hZnRlciIsInJ1bl9hZnRlciIsInJ1bl9hdCIsInJ1bl9hdF9pbnRlcnZhbHMiLCJydW5fZmlyZWRfZXZlbnRzIiwic2VuZF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0Iiwic2VuZF9leG4kMCIsImFueV9maXJlZF9ldmVudHNfdG9fcnVuIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X2FsYXJtc19ieSIsImJ5IiwiYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfIiwiYWR2YW5jZV9kaXJlY3RseSIsImFkdmFuY2VfZGlyZWN0bHlfYnkiLCJkdXJhdGlvbl9vZiIsInN0YXJ0IiwiZHVyYXRpb24iLCJtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3ciLCJoYXNfZXZlbnRzX3RvX3J1biIsImNyZWF0ZV93aXRoX2NlbGwiLCJjZWxsIiwiY3JlYXRlX2Z1bGwiLCJleGVjIiwiZXhlYyQwIiwiZXhlY19mdW4iLCJleGVjX2dlbiIsInNleHBfb2ZfdCQwIiwiZXhlY3V0aW9uX2NvbnRleHRfMDAyIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJzZXRfcmVjb3JkX2JhY2t0cmFjZXMiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV8iLCJjaGVja19pbnZhcmlhbnRzIiwic2V0X2NoZWNrX2ludmFyaWFudHMiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInNldF95aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInlpZWxkJDAiLCJzZXRfeWllbGQiLCJldmVudF9hZGRlZF9ob29rIiwic2V0X2V2ZW50X2FkZGVkX2hvb2siLCJqb2JfcXVldWVkX2hvb2siLCJzZXRfam9iX3F1ZXVlZF9ob29rIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2siLCJzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2giLCJ0aW1lX3NvdXJjZSIsInNldF90aW1lX3NvdXJjZSIsInRvdGFsX2N5Y2xlX3RpbWUiLCJzZXRfdG90YWxfY3ljbGVfdGltZSIsImxhc3RfY3ljbGVfbnVtX2pvYnMiLCJzZXRfbGFzdF9jeWNsZV9udW1fam9icyIsImxhc3RfY3ljbGVfdGltZSIsInNldF9sYXN0X2N5Y2xlX3RpbWUiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInNldF9ydW5fZXZlcnlfY3ljbGVfZW5kIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Iiwic2V0X3J1bl9ldmVyeV9jeWNsZV9zdGFydCIsImluX2N5Y2xlIiwic2V0X2luX2N5Y2xlIiwiY3ljbGVfc3RhcnQiLCJzZXRfY3ljbGVfc3RhcnQiLCJjeWNsZV9jb3VudCIsInNldF9jeWNsZV9jb3VudCIsInVuY2F1Z2h0X2V4bl91bndyYXBwZWQiLCJzZXRfdW5jYXVnaHRfZXhuIiwic2V0X2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0Iiwic2V0X21haW5fZXhlY3V0aW9uX2NvbnRleHQiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIiwibG93X3ByaW9yaXR5X2pvYnMiLCJub3JtYWxfcHJpb3JpdHlfam9icyIsImpvYl9wb29sIiwic2V0X2pvYl9wb29sIiwiY2hlY2tfYWNjZXNzIiwic2V0X2NoZWNrX2FjY2VzcyIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsImNoZWNrX2ludmFyaWFudHMkMCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluJDAiLCJ5aWVsZCQxIiwiZXZlbnRfYWRkZWRfaG9vayQwIiwiam9iX3F1ZXVlZF9ob29rJDAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayQwIiwiZXh0ZXJuYWxfam9icyQwIiwidGltZV9zb3VyY2UkMCIsInRvdGFsX2N5Y2xlX3RpbWUkMCIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMCIsImxhc3RfY3ljbGVfdGltZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlJDAiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnQkMCIsImluX2N5Y2xlJDAiLCJjeWNsZV9zdGFydCQwIiwiY3ljbGVfY291bnQkMCIsInVuY2F1Z2h0X2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMCIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHQkMCIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMkMCIsImxvd19wcmlvcml0eV9qb2JzJDAiLCJub3JtYWxfcHJpb3JpdHlfam9icyQwIiwiam9iX3Bvb2wkMCIsImNoZWNrX2FjY2VzcyQwIiwiY2hlY2tfYWNjZXNzX2Z1biIsImpvYl9wb29sX2Z1biIsIm5vcm1hbF9wcmlvcml0eV9qb2JzX2Z1biIsImxvd19wcmlvcml0eV9qb2JzX2Z1biIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfZnVuIiwibWFpbl9leGVjdXRpb25fY29udGV4dF9mdW4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0X2Z1biIsInVuY2F1Z2h0X2V4bl9mdW4iLCJjeWNsZV9jb3VudF9mdW4iLCJjeWNsZV9zdGFydF9mdW4iLCJpbl9jeWNsZV9mdW4iLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2Z1IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9mdW4iLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2Z1biIsImxhc3RfY3ljbGVfdGltZV9mdW4iLCJsYXN0X2N5Y2xlX251bV9qb2JzX2Z1biIsInRvdGFsX2N5Y2xlX3RpbWVfZnVuIiwidGltZV9zb3VyY2VfZnVuIiwiZXh0ZXJuYWxfam9ic19mdW4iLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18iLCJqb2JfcXVldWVkX2hvb2tfZnVuIiwiZXZlbnRfYWRkZWRfaG9va19mdW4iLCJ5aWVsZF9mdW4iLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl9mdW4iLCJjaGVja19pbnZhcmlhbnRzX2Z1biIsInJlY29yZF9iYWNrdHJhY2VzX2Z1biIsImNoZWNrX2FjY2Vzc19nZW4iLCJqb2JfcG9vbF9nZW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19nZW4iLCJsb3dfcHJpb3JpdHlfam9ic19nZW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2dlbiIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9nZW4iLCJ1bmNhdWdodF9leG5fZ2VuIiwiY3ljbGVfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImN5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEwIiwiaW5fY3ljbGVfZ2VuIiwiY29tcGlsZV9hY2MkMTEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVfZ2UiLCJjb21waWxlX2FjYyQxMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2dlbiIsImNvbXBpbGVfYWNjJDE1IiwibGFzdF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE2IiwibGFzdF9jeWNsZV9udW1fam9ic19nZW4iLCJjb21waWxlX2FjYyQxNyIsInRvdGFsX2N5Y2xlX3RpbWVfZ2VuIiwiY29tcGlsZV9hY2MkMTgiLCJ0aW1lX3NvdXJjZV9nZW4iLCJjb21waWxlX2FjYyQxOSIsImV4dGVybmFsX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMjAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18kMCIsImNvbXBpbGVfYWNjJDIxIiwiam9iX3F1ZXVlZF9ob29rX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwiZXZlbnRfYWRkZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMyIsInlpZWxkX2dlbiIsImNvbXBpbGVfYWNjJDI0IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZ2VuIiwiY29tcGlsZV9hY2MkMjUiLCJjaGVja19pbnZhcmlhbnRzX2dlbiIsImNvbXBpbGVfYWNjJDI2IiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJjb21waWxlX2FjYyQyNyIsInJlY29yZF9iYWNrdHJhY2VzX2dlbiIsImNyZWF0ZSQyIiwiY2hlY2tfYWNjZXNzXzAwNyIsImpvYl9wb29sXzAwOSIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfMDE1IiwibG93X3ByaW9yaXR5X2pvYnNfMDEzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfMDExIiwibWFpbl9leGVjdXRpb25fY29udGV4dF8wMTciLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XzAxOSIsInVuY2F1Z2h0X2V4bl8wMjEiLCJjeWNsZV9jb3VudF8wMjciLCJjeWNsZV9zdGFydF8wMjkiLCJpbl9jeWNsZV8wMzEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfMDMzIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXzAzIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF8wMzciLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlXzAzOSIsImxhc3RfY3ljbGVfdGltZV8wNDEiLCJsYXN0X2N5Y2xlX251bV9qb2JzXzA0MyIsInRvdGFsX2N5Y2xlX3RpbWVfMDQ1IiwidGltZV9zb3VyY2VfMDQ3IiwiZXh0ZXJuYWxfam9ic18wNDkiLCJqb2JfcXVldWVkX2hvb2tfMDUzIiwiZXZlbnRfYWRkZWRfaG9va18wNTUiLCJ5aWVsZF8wNTciLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl8wNTkiLCJjaGVja19pbnZhcmlhbnRzXzA2MSIsInJlY29yZF9iYWNrdHJhY2VzXzA2NSIsImFyZ18wNjYiLCJibmRzXzAwNiIsImFyZ18wNjQiLCJibmRzXzAwNiQwIiwiYXJnXzA2MiIsImJuZHNfMDA2JDEiLCJhcmdfMDYwIiwiYm5kc18wMDYkMiIsImFyZ18wNTgiLCJibmRzXzAwNiQzIiwiYXJnXzA1NiIsImJuZHNfMDA2JDQiLCJhcmdfMDU0IiwiYm5kc18wMDYkNSIsImFyZ18wNTIiLCJibmRzXzAwNiQ2IiwiYXJnXzA1MCIsImJuZHNfMDA2JDciLCJhcmdfMDQ4IiwiYm5kc18wMDYkOCIsImFyZ18wNDYiLCJibmRzXzAwNiQ5IiwiYXJnXzA0NCIsImJuZHNfMDA2JDEwIiwiYXJnXzA0MiIsImJuZHNfMDA2JDExIiwiYXJnXzA0MCIsImJuZHNfMDA2JDEyIiwiYXJnXzAzOCIsImJuZHNfMDA2JDEzIiwiYXJnXzAzNiIsImJuZHNfMDA2JDE0IiwiYXJnXzAzNCIsImJuZHNfMDA2JDE1IiwiYXJnXzAzMiIsImJuZHNfMDA2JDE2IiwiYXJnXzAzMCIsImJuZHNfMDA2JDE3IiwiYXJnXzAyOCIsImJuZHNfMDA2JDE4IiwiYXJnXzAyMiIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYm5kc18wMDYkMTkiLCJhcmdfMDIwIiwiYm5kc18wMDYkMjAiLCJhcmdfMDE4IiwiYm5kc18wMDYkMjEiLCJhcmdfMDE2IiwiYm5kc18wMDYkMjIiLCJhcmdfMDE0IiwiYm5kc18wMDYkMjMiLCJhcmdfMDEyIiwiYm5kc18wMDYkMjQiLCJhcmdfMDEwIiwiYm5kc18wMDYkMjUiLCJhcmdfMDA4IiwiYm5kc18wMDYkMjYiLCJ1bmNhdWdodF9leG4kMCIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsInJlczFfMDcwIiwibnVtX3BlbmRpbmdfam9icyIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMSIsInVub3JkZXJlZF9pc19zdWJsaXN0IiwiZXF1YWwiLCJzbWFsbCIsImxhcmdlIiwibGFyZ2UkMCIsIngiLCJsJDAiLCJ5IiwibCIsImNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IiwidGFibGUiLCJhcnJheSIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIiwidF9yZWYiLCJjaGVja19hY2Nlc3MkMSIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMSIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQxIiwidG1wX2NvbnRleHQiLCJvbGRfY29udGV4dCIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQiLCJjcmVhdGVfam9iIiwiZ290X3VuY2F1Z2h0X2V4biIsImFyZzFfMDcyIiwiYXJnMF8wNzEiLCJyZXMwXzA3MyIsInJlczFfMDc0Iiwic3RhcnRfY3ljbGUiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IiwiZSIsImUkMCIsInN0YWJpbGl6ZSIsImNyZWF0ZV90aW1lX3NvdXJjZSIsInRpbWluZ193aGVlbF9jb25maWciLCJ3YWxsX2Nsb2NrIiwic2V0X3ByZXYiLCJwYXJhbSIsInNldF9uZXh0IiwicnVuIiwiY3JlYXRlMiIsInJ1bjEiLCJleGVjdXRpb25fY29udGV4dDEiLCJydW4yIiwiZXhlY3V0aW9uX2NvbnRleHQyIiwic2NoZWR1bGVfam9icyIsImFkZCIsIm9mX2xpc3QiLCJmaXJzdCIsImwkMSIsImwkMiIsInJ1biQwIiwicHJldiQwIiwiYWNjJDAiLCJjZWxsX29mX2hhbmRsZXIiLCJpbmRpciIsInNxdWFzaCIsInQkMyIsInQkNCIsImluZGlyJDEiLCJ0JDUiLCJpbmRpciQwIiwidCQyIiwiYV9pbnZhcmlhbnQiLCJoYW5kbGVyIiwicGVlayIsInZhbHVlIiwiaWZfZW1wdHlfdGhlbl9mYWlsd2l0aCIsImlzX2VtcHR5IiwiaXNfZnVsbCIsImZpbGwiLCJyZW1vdmVfaGFuZGxlciIsIngkMCIsImFkZF9oYW5kbGVyIiwiaGFuZGxlciQxIiwiaGFuZGxlciQyIiwicnVuJDEiLCJoYW5kbGVyJDAiLCJoYXNfaGFuZGxlcnMiLCJ1cG9uIiwidXBvbiQwIiwiY29ubmVjdCIsImJpbmRfcmVzdWx0IiwiYmluZF9yaHMiLCJiaW5kX3Jlc3VsdCQwIiwiaXZhciIsImJpbmRfcmhzX2NvbnRlbnRzIiwiaXZhciQwIiwibGFzdDEiLCJsYXN0MiIsImhhbmRsZXIxIiwiZXhlY3V0aW9uX2NvbnRleHQyJDAiLCJydW4yJDAiLCJoYW5kbGVyMSQwIiwidiQwIiwib2ZfaXZhciIsImludmFyaWFudF9hIiwicmV0dXJuJDAiLCJpc19kZXRlcm1pbmVkIiwiYmluZCIsImgiLCJyZWFkIiwiZmlsbF9pZl9lbXB0eSIsInRvX2JpbmFibGUiLCJvZl9iaW5hYmxlIiwic2V4cF9vZl9ob3ciLCJ2XzAwMSIsIm5ldmVyIiwicmV0dXJuJDEiLCJyZXR1cm4kMiIsInJldHVybiQzIiwidW5pdCIsImJvdGgkMCIsImExIiwiYTIiLCJkb25fdF93YWl0X2ZvciIsImYyIiwiZjEiLCJwcm9jZXNzIiwicmVzdCIsImNob2ljZSIsImVuYWJsZWQiLCJjaG9pY2VzIiwidW5yZWdpc3RlcnMiLCJyZWFkeSIsImNob29zZV9yZXN1bHQiLCJjaG9pY2VzJDAiLCJjaG9pY2VzJDEiLCJnZW5lcmljX2Nob29zZSIsInVucmVnaXN0ZXJzJDAiLCJjaG9vc2UyIiwiZmEiLCJiIiwiZmIiLCJhX2hhbmRsZXIiLCJiX2hhbmRsZXIiLCJhdiIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsInhzIiwic2VxbWFwIiwiYnMiLCJkcyIsImFsbF91bml0IiwiZCIsIm9rIiwib2ZfYV8wMDUiLCJ4XzAwNiIsImFyZzBfMDAyIiwicmVzMF8wMDMiLCJ4XzAwNyIsImNvbGxlY3QiLCJpc19jbG9zZWQiLCJmaWxsX2V4biIsImNsb3NlX2V4biIsImNsb3NlX2lmX29wZW4iLCJleHRlbmQiLCJkZWZlcnJlZDAiLCJkZWZlcnJlZDEiLCJpbXBvcnQwIiwiZXJyb3IiLCJkZXRhY2giLCJkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIiwiaGFuZGxlcl9zdGF0ZV9yZWYiLCJydW5fZiIsImJhZ19lbHQiLCJpbm5lcl9leG4kMCIsImlubmVyX2V4biIsImRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSIsInRhaWwiLCJnZXRfbmV4dF9lcnJvciIsImRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IiLCJleHRyYWN0X2V4biIsImNvbHVtbiIsIm1vbml0b3IkMSIsIm5hbWUkMSIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJ0MyIsInJlc3QkMiIsInJlc3QkMyIsInRyYWNlcyIsInJlc3QkNCIsInQxJDAiLCJyZXN0JDUiLCJ0MiQwIiwicmVzdCQ2IiwidDIkMSIsImJhY2t0cmFjZSQyIiwibGlzdF9pZl9ub3RfZW1wdHkiLCJtYXRjaCQyIiwibWF0Y2gkMyIsImV4dHJhY3RfZXhuJDAiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJ3aXRoaW5fY29udGV4dCIsImNvbnRleHQiLCJ3aXRoaW5fZ2VuIiwid2l0aGluIiwid2l0aGluX3YiLCJ3aXRoaW4kMCIsInNjaGVkdWxlX3dpdGhfZGF0YSIsIndvcmsiLCJ1cG9uX3dvcmtfZmlsbF9pIiwic2NoZWR1bGUkMCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IiwicHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQkMCIsImNhbGxfYW5kX2ZpbGwiLCJzdHJlYW1faXRlciIsInN0cmVhbSIsImV4bnMiLCJmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm8iLCJyZXN1bHRfZmlsbGVyIiwiaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IiwidHJ5X3dpdGhfbG9nX2V4biIsInRyeV93aXRoIiwiZG9fZXh0cmFjdF9leG4iLCJoYW5kbGVfZXhuIiwicmVzIiwidHJ5X3dpdGhfb3JfZXJyb3IiLCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsImZyIiwiciQwIiwiZmluYWxseV9leG4iLCJoYW5kbGVfZXJyb3JzIiwiY2F0Y2hfc3RyZWFtIiwiY2F0Y2gkMCIsImNhdGNoX2Vycm9yIiwiZGVwdGgiLCJuJDAiLCJmaXJzdF9leG4iLCJsb29wJDAiLCJsb29wX25leHQiLCJsb29wX25leHQkMCIsImNsb3NlZCIsInVuZm9sZCIsImNvcHlfdG9fdGFpbCIsImFwcGVuZCIsImZpbHRlcl9kZXByZWNhdGVkIiwiZmlsdGVyX21hcF9kZXByZWNhdGVkIiwiZmlyc3RfbiIsImF2YWlsYWJsZV9ub3ciLCJzcGxpdCIsInN0b3AiLCJyZWFzb25fZm9yX3N0b3BwaW5nIiwicHJlZml4IiwiZmluaXNoIiwibyIsImZpbmQiLCJmb3VuZCIsInVuZ3JvdXAiLCJpbnRlcmxlYXZlIiwibnVtX29wZW4iLCJjbG9zZSIsIm91dGVyX2Nsb3NlZCIsInRha2VfdW50aWwiLCJ6IiwiaXRlcl9kdXJhYmx5IiwiaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQiLCJpdGVyX2R1cmFibHkkMCIsIm9mX2Z1biIsInNldF9pdmFyIiwiaGFzX2FueV93YWl0ZXJzIiwic2V0X2hhc19hbnlfd2FpdGVycyIsImhhc19hbnlfd2FpdGVycyQwIiwicmVwciIsIm9mX2FfMDAxIiwiaGFzX2FueV93YWl0ZXJzXzAwMyIsIml2YXJfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJicm9hZGNhc3QiLCJ3YWl0IiwiaGFzX2FueV93YWl0ZXJzJDEiLCJ4XzAwMyIsImJpbmRfdW5pdCIsIndhaXRfZm9yIiwicnVuX3F1ZXVlZF9hbGFybXMiLCJ3YWxrX2FsYXJtcyIsIm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCIsImFkdmFuY2VfdG8iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0JDAiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsInNwYW5fdG9fdGltZSIsInJ1bl9hdF9pbnRlcm5hbCIsInRpbWUiLCJyZW1vdmVfYWxhcm0iLCJvZl9hXzAwNyIsIm9mX2hfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXRfc2NoZWR1bGVkX2F0IiwibnVtX2ZpcmVzX3RvX3NraXAiLCJzZXRfbnVtX2ZpcmVzX3RvX3NraXAiLCJmaXJlZCIsInNjaGVkdWxlZF9hdCQwIiwibnVtX2ZpcmVzX3RvX3NraXAkMCIsImZpcmVkJDAiLCJvZl9hXzAxNSIsIm9mX2hfMDE2IiwiYWxhcm1fMDE4IiwiZmlyZWRfMDIyIiwibnVtX2ZpcmVzX3RvX3NraXBfMDI0Iiwic2NoZWR1bGVkX2F0XzAyNiIsInRpbWVfc291cmNlXzAyOCIsImFyZ18wMjkiLCJibmRzXzAxNyIsImFyZ18wMjciLCJibmRzXzAxNyQwIiwiYXJnXzAyNSIsImJuZHNfMDE3JDEiLCJhcmdfMDIzIiwiYm5kc18wMTckMiIsImFyZ18wMjEiLCJibmRzXzAxNyQzIiwiYXJnXzAxOSIsImJuZHNfMDE3JDQiLCJzZXhwX29mX3RfdW5pdCIsInhfMDMwIiwiZmlyZWQkMSIsImludmFyaWFudF9oIiwieF8wMzEiLCJzY2hlZHVsZWRfYXRfZnVuIiwiYV8wMzIiLCJiXzAzMyIsIm51bV9maXJlc190b19za2lwX2Z1biIsImZpcmVkX2Z1biIsIm9mX2FfMDM0Iiwib2ZfaF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJvZl9hXzA0NCIsIm9mX2hfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJ4XzA1MiIsImEkMCIsIm9mX2FfMDUzIiwib2ZfaF8wNTQiLCJhcmcwXzA1NSIsInJlczBfMDU2IiwiYXJnMF8wNTciLCJyZXMwXzA1OCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0IiwiaXNfaW5fdGltaW5nX3doZWVsIiwiYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlIiwicnVuX2F0JDAiLCJydW5fYWZ0ZXIkMCIsImF0X3RpbWVzIiwibmV4dF90aW1lIiwiYXRfdmFyeWluZ19pbnRlcnZhbHMiLCJjb21wdXRlX3NwYW4iLCJzdGFydCQwIiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsImFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IiwiaXNfcXVlc2NlbnQiLCJ3aGVlbCIsIm5leHRfYWxhcm0iLCJoYXNfdXBjb21pbmdfZXZlbnQiLCJuZXh0X3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudF9leG4iLCJldmVudF9wcmVjaXNpb24iLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayIsImhhbmRsZSIsImFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayIsInJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayIsImFyciIsImciLCJpZHgiLCJhcnIkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJlbnF1ZXVlJDAiLCJxdWV1ZSIsInJ1bm5pbmciLCJleGVjX2N0eCIsInNlbWFwaG9yZSIsImFwcGx5IiwidF9mIiwiZGYiLCJkdiIsIm1heF9jb25jdXJyZW50X2pvYnMiLCJ3YWl0ZXIiLCJhYm9ydGVkIiwicGFyZW50X21vbml0b3IiLCJlcnIiLCJvZl90aHVuayIsInRodW5rIiwic3ltYm9sJDEiLCJkMSIsImQyIiwib2ZfYV8wMDIiLCJyZXMwXzAwNCIsImxlbmd0aF8wMDYiLCJibmRzXzAwNSIsImxpc3QiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwiY2xlYW5lZCQwIiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCQwIiwiY2FwYWNpdHlfYXZhaWxhYmxlJDAiLCJudW1fam9ic19ydW5uaW5nJDAiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnQkMCIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSQwIiwibWF4X2NvbmN1cnJlbnRfam9icyQwIiwib2ZfYV8wMTEiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnRfMDE5Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXzAxNyIsIm1heF9jb25jdXJyZW50X2pvYnNfMDE1IiwiY29udGludWVfb25fZXJyb3JfMDEzIiwibnVtX2pvYnNfcnVubmluZ18wMjEiLCJjYXBhY2l0eV9hdmFpbGFibGVfMDIzIiwiaXNfZGVhZF8wMjUiLCJjbGVhbnNfMDI3IiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF8wMjkiLCJjbGVhbmVkXzAzMSIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJhcmdfMDI2IiwiYm5kc18wMTIkMiIsImFyZ18wMjQiLCJibmRzXzAxMiQzIiwiYm5kc18wMTIkNCIsIm91dGNvbWVfMDA5Iiwic3RhcnRfMDA2Iiwidl8wMDgiLCJibmRzXzAwNSQwIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2Zfa2luZF8wMzUiLCJ4XzAzNiIsIm51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQiLCJjbGVhbl9yZXNvdXJjZSIsImtpbGwiLCJhdF9raWxsIiwiY2xlYW5lZCQxIiwic3RhcnRfam9iIiwiam9iX3Jlc291cmNlIiwiam9iX3Jlc291cmNlcyIsImNyZWF0ZV93aXRoIiwib3V0Y29tZSIsImludGVybmFsX2pvYiIsImhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCIsImVucXVldWVfZXhjbHVzaXZlIiwiZG9uZSIsImZfcGxhY2Vob2xkZXIiLCJzbG90IiwibW9uYWRfc2VxdWVuY2VfaG93IiwiaG93IiwibW9uYWRfc2VxdWVuY2VfaG93MiIsInByaW9yX2pvYnNfZG9uZSIsImFsbF9kdW1teV9qb2JzX3J1bm5pbmciLCJkdW1teV9qb2JzX3J1bm5pbmciLCJjYXBhY2l0eV9hdmFpbGFibGUkMSIsInRocmVhZF9zYWZlX2VucXVldWVfam9iIiwiY3ljbGVfc3RhcnRfbnMiLCJjeWNsZV90aW1lc19ucyIsImN5Y2xlX3RpbWVzIiwiZXZlbnRfcHJlY2lzaW9uX25zIiwiYm9vbCIsImFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rJDAiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2skMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyQwIiwicmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSQwIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsInJpZ2h0XzAwNCIsImxlZnRfMDAzIiwidl8wMDYiLCJmb2xkaSIsInNlcW1hcGkiLCJpdGVyaSIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJmaWx0ZXJfbWFwaSIsImNvbmNhdF9tYXBpIiwiZmluZF9tYXBpIiwiYXV4IiwiZmluZGkiLCJlbHQiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwiam9iX2NvdW50IiwiZ2VuX2NvbXB1dGF0aW9uIiwieXMiLCJ0bCIsImhkIiwiY2hhbmdlIiwib3B0IiwidXBkYXRlIiwiaXRlcl9rZXlzIiwiYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIiLCJhbGlzdCIsImZvbGRfcmlnaHQiLCJhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciIsImNvbXB1dGF0aW9uIiwiam9iX21hcCIsInNlcXVlbmNlIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInJlcmFpc2UiLCJnZW5lcmFsIiwiaGFzaGFibGUiLCJnZW5lcmFsJDAiLCJyZWN1cnNpdmUiLCJmX29uZXN0ZXAiLCJtZW1vaXplZCIsImNvbWJpbmUiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImUxIiwiZTIiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwib2tfZXhuIiwib2ZfZXhuIiwib2ZfZXhuX3Jlc3VsdCIsIm1zZyIsInNleHBfb2YiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2Vycm9ycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIiwiZmluZF9tYXBfb2siLCJjdXJyZW50X2Vycm9yIiwiZXJyb3JzJDAiLCJva191bml0IiwidHJ5X3dpdGgkMCIsInRyeV93aXRoX2pvaW4iLCJzdGF0ZSQwIiwiZm9sZF9tYXBpIiwibWFwaV9mIiwiZm9sZF9mIiwidGhyb3R0bGUiLCJjIiwiYyQxIiwiYyQwIiwiaSQwIiwiYWNjdW0iLCJtYXliZV92Iiwic2hvd19kZWJ1Z19tZXNzYWdlcyIsImNoZWNrX2ludmFyaWFudCIsInhfMDA0IiwidmFsdWVzX3JlYWQiLCJzZXRfdmFsdWVzX3JlYWQiLCJ2YWx1ZXNfcmVhZCQwIiwicGlwZV9pZF8wMDkiLCJ2YWx1ZXNfcmVhZF8wMTEiLCJibmRzXzAwOCIsInZfMDEzIiwiYm5kc18wMDgkMCIsImJuZHNfMDA4JDEiLCJ2YWx1ZXNfc2VudF9kb3duc3RyZWFtIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1Iiwid2hlbl9zZW50X2Rvd25zdHJlYW0iLCJjb25zdW1lciIsIndhbnRzIiwiY29uc3VtZXIkMCIsIndhbnRzJDAiLCJvZl9hXzAyOSIsImNvbnN1bWVyXzAzMyIsIndhbnRzXzAzMSIsImJuZHNfMDMwIiwiYXJnMF8wMTgiLCJyZXMwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJ2XzAyMCIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwidl8wMjMiLCJibmRzXzAzMCQwIiwiZmlsbF93aXRoX2VvZiIsImkkMSIsImZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQiLCJyZWFkeV8wMzkiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXzAzNyIsImJuZHNfMDM2IiwiYm5kc18wMzYkMCIsImNvbnN1bWVycyIsInNldF9jb25zdW1lcnMiLCJibG9ja2VkX3JlYWRzIiwiYmxvY2tlZF9mbHVzaGVzIiwicHVzaGJhY2siLCJzZXRfcHVzaGJhY2siLCJyZXNlcnZlZF9zcGFjZSIsInNldF9yZXNlcnZlZF9zcGFjZSIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJyZXNlcnZlZF9zcGFjZSQwIiwic2l6ZV9idWRnZXQkMCIsInNleHBfb2ZfcGlwZSIsIm9mX2FfMDQxIiwib2ZfcGhhbnRvbV8wNDIiLCJpZF8wNDQiLCJpbmZvXzA0NiIsImJ1ZmZlcl8wNTAiLCJzaXplX2J1ZGdldF8wNTIiLCJyZXNlcnZlZF9zcGFjZV8wNTQiLCJwdXNoYmFja18wNTYiLCJudW1fdmFsdWVzX3JlYWRfMDU4IiwicmVhZF9jbG9zZWRfMDY2IiwiY2xvc2VkXzA2NCIsImJsb2NrZWRfcmVhZHNfMDYyIiwiYmxvY2tlZF9mbHVzaGVzXzA2MCIsImNvbnN1bWVyc18wNjgiLCJ1cHN0cmVhbV9mbHVzaGVkc18wNzAiLCJhcmdfMDcxIiwiYm5kc18wNDMiLCJhcmdfMDY5IiwiYm5kc18wNDMkMCIsImFyZ18wNjciLCJibmRzXzA0MyQxIiwiYXJnXzA2NSIsImJuZHNfMDQzJDIiLCJhcmdfMDYzIiwiYm5kc18wNDMkMyIsImFyZ18wNjEiLCJibmRzXzA0MyQ0IiwiYXJnXzA1OSIsImJuZHNfMDQzJDUiLCJhcmdfMDU3IiwiYm5kc18wNDMkNiIsImFyZ18wNTUiLCJibmRzXzA0MyQ3IiwiYXJnXzA1MyIsImJuZHNfMDQzJDgiLCJhcmdfMDUxIiwiYm5kc18wNDMkOSIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MyQxMCIsImFyZ18wNDUiLCJibmRzXzA0MyQxMSIsImVmZmVjdGl2ZV9zaXplX2J1ZGdldCIsImhhc2giLCJpc19yZWFkX2Nsb3NlZCIsInB1c2hiYWNrJDEiLCJ1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIiwiZGVsdGEiLCJ4XzA3NSIsInhfMDM1IiwiaSQyIiwic2V4cF9vZl9waGFudG9tIiwib2ZfYV8wNzYiLCJ4XzA3NyIsInNleHBfb2ZfcGhhbnRvbSQwIiwib2ZfYV8wNzgiLCJ4XzA3OSIsImlkX3JlZiIsImluaXRpYWxfYnVmZmVyIiwidmFsaWRhdGVfc2l6ZV9idWRnZXQiLCJ1cGRhdGVfcHVzaGJhY2siLCJ4XzA4MCIsImNsb3NlX3JlYWQiLCJ4XzA4MSIsImZsdXNoIiwiY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjIiwidyIsImNyZWF0ZV9yZWFkZXIiLCJjbG9zZV9vbl9leGNlcHRpb24iLCJjcmVhdGVfd3JpdGVyIiwidmFsdWVzX3dlcmVfcmVhZCIsImZsdXNoJDAiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInJlc2VydmVfc3BhY2UiLCJkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSIsInN0YXJ0X3dyaXRlIiwieF8wODMiLCJzaXplIiwieF8wODIiLCJmaW5pc2hfd3JpdGUiLCJibG9ja2VkX3JlYWQiLCJpdmFyJDEiLCJ0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIiwidHJhbnNmZXJfaW4iLCJ3cml0ZSIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2siLCJ3cml0ZSQwIiwid3JpdGVfd2hlbl9yZWFkeSIsIndyaXRlX2lmX29wZW4iLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4iLCJlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyIsInhfMDg1Iiwic3RhcnRfcmVhZCIsImxhYmVsIiwieF8wODYiLCJnZW5fcmVhZF9ub3ciLCJnZXRfbWF4X3F1ZXVlX2xlbmd0aCIsIm1heF9xdWV1ZV9sZW5ndGgkMCIsInJlYWRfbm93IiwicmVhZF9ub3ckMCIsInJlYWQkMCIsInJlYWRfZXhuIiwidmFsdWVzX2F2YWlsYWJsZSIsInJlYWRfY2hvaWNlIiwicmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4IiwicmVhZF9leGFjdGx5IiwibnVtX3ZhbHVlcyIsImFscmVhZHlfcmVhZCIsImRvd25zdHJlYW1fZmx1c2hlZCIsInVwc3RyZWFtX2ZsdXNoZWQiLCJhZGRfY29uc3VtZXIiLCJwaXBlX2lkIiwiY29uc3VtZXIkMSIsInVwc3RyZWFtIiwiZG93bnN0cmVhbSIsInVwc3RyZWFtX2ZsdXNoZWQkMCIsImFyZzBfMDg3IiwicmVzMF8wODgiLCJmb2xkX2dlbiIsImZsdXNoZWQiLCJmb2xkX3dpdGhvdXRfcHVzaGJhY2siLCJ3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciIsIml0ZXJfd2l0aG91dF9wdXNoYmFjayIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDAiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDEiLCJyZW1haW5pbmciLCJyZW1haW5pbmckMCIsImRyYWluIiwiZHJhaW5fYW5kX2NvdW50Iiwic3VtIiwicmVhZF9hbGwiLCJpbnB1dCIsInRvX3N0cmVhbV9kZXByZWNhdGVkIiwib2Zfc3RyZWFtX2RlcHJlY2F0ZWQiLCJ0cmFuc2ZlciIsIm5leHRfZGVmZXJyZWQiLCJjaGVja19jbG9zZWRfbG9vcF9uZXh0IiwidHJhbnNmZXJfZ2VuIiwib3V0cHV0IiwibGluayIsInVubGluayIsImlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvcyIsIm91dHB1dF9jbG9zZWQiLCJ0cmFuc2ZlciQwIiwidHJhbnNmZXJfaWQiLCJtYXBfZ2VuIiwiY29uY2F0X21hcF9saXN0IiwiZmlsdGVyX21hcCQwIiwiZm9sZGluZ19maWx0ZXJfbWFwIiwiZm9sZGluZ19maWx0ZXJfbWFwJDAiLCJmb2xkaW5nX21hcCIsImFjY3VtJDAiLCJvZl9xdWV1ZV9pbnRlcm5hbCIsIm9mX3F1ZXVlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJ3cml0ZXIiLCJyZWFkZXIiLCJvZl9zZXF1ZW5jZSIsInNlcXVlbmNlJDEiLCJzZXF1ZW5jZSQwIiwidG9fc2VxdWVuY2UiLCJpbnRlcmxlYXZlX3BpcGUiLCJpbnB1dHMiLCJvdXRwdXRfd3JpdGVyIiwibnVtX3BpcGVzX3JlbWFpbmluZyIsImRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyIsImhlYXAiLCJoYW5kbGVfcmVhZCIsImVvZl9vcl9vayIsInBvcF9oZWFwX2FuZF9sb29wIiwiaW5pdGlhbF9wdXNoIiwiY29uY2F0X3BpcGUiLCJmb3JrIiwicHVzaGJhY2tfdXNlcyIsIndyaXRlcjAiLCJyZWFkZXIwIiwid3JpdGVyMSIsInJlYWRlcjEiLCJzb21lX3JlYWRlcl93YXNfY2xvc2VkIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCQwIiwic3RpbGxfb3BlbiIsImZpbHRlcl9vcGVuIiwic3RpbGxfb3BlbiQwIiwic2V0X2luZm8iLCJ2YWx1ZV9hdmFpbGFibGUiLCJzZXRfdmFsdWVfYXZhaWxhYmxlIiwidGFrZW4iLCJjdXJyZW50X3ZhbHVlIiwidmFsdWVfYXZhaWxhYmxlJDAiLCJ0YWtlbiQwIiwiY3VycmVudF92YWx1ZSQwIiwidmFsdWVfYXZhaWxhYmxlJDEiLCJ4XzAxMCIsInRha2VuXzAwNiIsImN1cnJlbnRfdmFsdWVfMDA0IiwidmFsdWVfYXZhaWxhYmxlXzAwOCIsImJuZHNfMDAzIiwiYm5kc18wMDMkMCIsImJuZHNfMDAzJDEiLCJ2YWx1ZV9hdmFpbGFibGVfZnVuIiwiYV8wMTEiLCJiXzAxMiIsInRha2VuX2Z1biIsImN1cnJlbnRfdmFsdWVfZnVuIiwicGVla19leG4iLCJ4XzAxMyIsIm9mX2FfMDE0IiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3Iiwid3JpdGVfb25seSIsInRha2Vfbm9uZW1wdHkiLCJ0YWtlX25vd19leG4iLCJ0YWtlX25vdyIsInRha2UiLCJ1cGRhdGVfZXhuIiwidGFrZW4kMSIsInB1dCIsInBpcGVfd2hlbl9yZWFkeSIsInJlc3RfZXhuIiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sIiwic3ltYm9sJDAiLCJzZXhwX29mX3QiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm1hcCIsInNleHBfb2ZfdCQwIiwiY3JlYXRlIiwiZG9uX3Rfd2FpdF9mb3IiLCJpbnZhcmlhbnQiLCJpc19kZXRlcm1pbmVkIiwibmV2ZXIiLCJwZWVrIiwidW5pdCIsInZhbHVlX2V4biIsInVwb24iLCJib3RoIiwidDEiLCJ0MiIsInJlc3VsdCIsImExIiwiYTIiLCJvayIsImlnbm9yZV9tIiwiYW55IiwidHMiLCJ4IiwiYW55X3VuaXQiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwibG9vcCIsImZvbGRpIiwiaW5pdCIsImkiLCJiIiwieHMiLCJmb2xkIiwiYSIsInNlcW1hcGkiLCJicyIsImFsbCQwIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJpdGVyaSIsImhvdyIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJhYyIsImZpbHRlcl9tYXBpIiwiY29uY2F0X21hcGkiLCJmaW5kX21hcGkiLCJ0bCIsImhkIiwic29tZSIsImZpbmRpIiwiZWx0IiwiZmluZCIsImV4aXN0c2kiLCJmb3JfYWxsaSIsIml0ZXIiLCJtYXAkMSIsImZpbHRlciIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJleGlzdHMiLCJmb3JfYWxsIiwibiIsImFsbF91bml0JDAiLCJjb21iaW5lIiwiZXJyIiwiZXJyb3IiLCJyIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwibWFwX2Vycm9yIiwiam9pbiIsInN5bWJvbF9iaW5kIiwiYXBwbHkiLCJlMSIsImUyIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsIm9rX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSIsImV4biIsIm9mX2V4bl9yZXN1bHQiLCJtc2ciLCJ2Iiwic2V4cF9vZiIsImVycm9yX3MiLCJzZXhwIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsIm1lc3NhZ2UiLCJzZXhwX29mX2EiLCJ1bmltcGxlbWVudGVkIiwiY29tYmluZV9lcnJvcnMiLCJsIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImVycm9ycyIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCIsImV4dHJhY3RfZXhuIiwicnVuJDAiLCJyZXN0IiwiaGVyZSIsIm5hbWUiLCJydW4iLCJ0cnlfd2l0aF9qb2luIiwibGlzdCIsImFjYyIsInN0YXRlJDAiLCJ1cG9uJDEiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwicG9zJDAiLCJwb3MiLCJhbGwiLCJzZXhwX29mX3QiLCJzZXhwX29mX3QkMCIsImNhbGxiYWNrIiwiciIsImNhbGxiYWNrJDAiLCJ2Iiwic2V4cF9vZl90JDEiLCJleHRyYWN0X2V4biIsInN1YnNjcmliZXJzX2luZGV4Iiwic3Vic2NyaWJlZF9mcm9tIiwib25fY2FsbGJhY2tfcmFpc2UiLCJtYXRjaCQxIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJyZXMiLCJoIiwiY2FsbGJhY2tzIiwic2V0X2NhbGxiYWNrcyIsInN1YnNjcmliZXJzIiwic2V0X3N1YnNjcmliZXJzIiwibnVtX3N1YnNjcmliZXJzIiwic2V0X251bV9zdWJzY3JpYmVycyIsImNhbGxiYWNrX2FyaXR5IiwiY2FsbGJhY2tzJDAiLCJzdWJzY3JpYmVycyQwIiwibnVtX3N1YnNjcmliZXJzJDAiLCJzZXhwX29mX2J1cyIsIm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93ciIsImNyZWF0ZWRfZnJvbSIsIm5hbWUiLCJzdGF0ZSIsIndyaXRlX2V2ZXJfY2FsbGVkIiwiaSIsIm1hdGNoIiwicmVhZF9vbmx5IiwidCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwieF8wMTEiLCJjaGVjayIsImYiLCJjYWxsYmFja3NfZnVuIiwic3Vic2NyaWJlcnNfZnVuIiwic3Vic2NyaWJlciIsInN1YnNjcmliZXIkMCIsInhfMDA1IiwiY2FsbGJhY2tfZnVuIiwibnVtX3N1YnNjcmliZXJzX2Z1biIsImlzX2Nsb3NlZCIsInNleHBfb2ZfdCQyIiwib2ZfY2FsbGJhY2tfMDEyIiwieF8wMTMiLCJpbnZhcmlhbnQkMCIsInNleHBfb2ZfdCQzIiwib2ZfY2FsbGJhY2tfMDE0IiwieF8wMTUiLCJpbnZhcmlhbnQkMSIsInN0YXJ0X3dyaXRlX2ZhaWxpbmciLCJ4XzAxNiIsInhfMDE3IiwiY2FwYWNpdHkiLCJtYXliZV9zaHJpbmtfY2FwYWNpdHkiLCJkZXNpcmVkX2NhcGFjaXR5IiwiY29weV9hbmRfc2hyaW5rIiwiYXJyYXkiLCJuZXdfYXJyYXkiLCJhZGRfc3Vic2NyaWJlciIsImF0X3N1YnNjcmliZXJzX2luZGV4IiwicmVtb3ZlX3N1YnNjcmliZXIiLCJ1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWIiLCJzdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyIiwidW5zdWJzY3JpYmUiLCJ0byIsInVuc3Vic2NyaWJlX2FsbCIsIm9uX2Nsb3NlIiwiZmluaXNoX3dyaXRlIiwiY2xvc2UiLCJjYWxsX29uX2NhbGxiYWNrX3JhaXNlIiwiZXJyb3IiLCJleG4kMCIsImV4biIsImNhbGxiYWNrX3JhaXNlZCIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlIiwidW5zYWZlX2dldF9jYWxsYmFjayIsImEiLCJ3cml0ZSIsImExIiwibGVuIiwibGFzdF92YWx1ZSIsIndyaXRlX2xvY2FsIiwid3JpdGUyIiwiYTIiLCJ3cml0ZTMiLCJhMyIsIndyaXRlNCIsImE0Iiwid3JpdGU1IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCJjcmVhdGVfZXhuIiwiY2FuX3N1YnNjcmliZSIsInN1YnNjcmliZV9leG4iLCJ4XzAxOSIsImJ1c19pZCQwIiwiYnVzX2lkIiwiY2FwYWNpdHkkMCIsIm5ld19jYXBhY2l0eSIsImNvcHlfYW5kX2RvdWJsZSIsImFyZzEkMCIsImFyZzEkMSIsImFyZzIkMCIsImFyZzEkMiIsImFyZzIkMSIsImFyZzMkMCIsImFyZzEkMyIsImFyZzIkMiIsImFyZzMkMSIsImFyZzQkMCIsIml0ZXJfZXhuIiwieF8wMjAiLCJzZXhwX29mX3QkNCIsImZvbGRfZXhuIiwiZm9sZF9hcml0eSIsImluaXQiLCJ4XzAzMCIsImE1IiwiYXNzZXJ0X25vX2FsbG9jYXRpb24iLCJidXNfciIsInN0YXJ0aW5nX21pbm9yX3dvcmRzIiwic3RhcnRpbmdfbWFqb3Jfd29yZHMiLCJlbmRpbmdfbWlub3Jfd29yZHMiLCJlbmRpbmdfbWFqb3Jfd29yZHMiLCJnb3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMzEiLCJiXzAzMiIsImdvdCQwIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJhXzAzMyIsImJfMDM0IiwiY3JlYXRlIiwiYXJpdHkiLCJidXMxIiwiYnVzMiIsImJ1czMiLCJidXM0IiwiYnVzNSIsImR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbiIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJlIiwiY29ubiIsIm9uX2V2ZW50IiwiYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0IiwiY3VycmVudF9jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsImlzX2Nsb3NlZCQwIiwiY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0Iiwic2V4cF9vZl90JDEiLCJwYXJhbSIsImNvbm5fMDIzIiwibmV4dF9jb25uZWN0X3Jlc3VsdF8wMjYiLCJkb25fdF9yZWNvbm5lY3RfMDM2IiwiY2xvc2VfZmluaXNoZWRfMDM0IiwiY2xvc2Vfc3RhcnRlZF8wMzIiLCJldmVudF9idXNfMDMwIiwiZXZlbnRfaGFuZGxlcl8wMjgiLCJhcmdfMDQxIiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYXJnXzAxNCIsImJuZHNfMDEwIiwiYXJnXzAxMiIsImJuZHNfMDEwJDAiLCJhcmdfMDI5IiwiYm5kc18wMTYkNSIsImFyZ18wMjciLCJibmRzXzAxNiQ2IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiZXZlbnRfYnVzIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwicmFuZG9tX3N0YXRlIiwidGltZV9zb3VyY2UiLCJldmVudF9oYW5kbGVyIiwiZGVmYXVsdF9yZXRyeV9kZWxheSIsIm5vbl9yYW5kb21pemVkX2RlbGF5IiwicmV0cnlfZGVsYXlfc3BhbiIsInJhbmRvbV9zdGF0ZSQwIiwic3BhbiIsInNwYW4kMCIsImRpc3RhbmNlIiwid2FpdCIsInJldHJ5X2RlbGF5IiwicHJldmlvdXNfYWRkcmVzcyIsInByZXZpb3VzX2Vycm9yIiwiYWRkciIsInByZXZpb3VzX2FkZHJlc3MkMCIsInNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJzYW1lX2FzX3ByZXZpb3VzX2Vycm9yIiwiYWxsIiwiZXJyb3Jfc291cmNlXzAwNSIsInJldGlyZWRfa3JiX3dvcmQiLCJjb21wYXJlIiwidF9vZl9zZXhwIiwic2V4cF8wMDYiLCJzZXhwX29mX3QiLCJncm91cCIsIm1hZ2ljX3dvcmQiLCJnZW5fbWFnaWNfbnVtYmVyIiwid29yZCIsImFjYyIsImMiLCJtYWdpY19udW1iZXIiLCJ0IiwicCIsImJ5X21hZ2ljX251bWJlciIsImFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZSIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJtYXhfc3VwcG9ydGVkX3ZlcnNpb24iLCJvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl8iLCJudW0iLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIiwiY3JlYXRlX2V4biIsInByb3RvY29sIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwiYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIiwicHJvdG9jb2xfbWFnaWNfbnVtYmVyIiwicmF3X3ZlcnNpb25fbGlzdCIsImdldF9wcm90b2NvbCIsInZlcnNpb25zIiwicHJvdG9jb2xzIiwibmVnb3RpYXRlIiwiYWxsb3dfbGVnYWN5X3BlZXIiLCJ1cyIsInBlZXIiLCJ1c192ZXJzaW9ucyIsInVzX3Byb3RvY29sIiwicGVlcl92ZXJzaW9ucyIsInBlZXJfcHJvdG9jb2wiLCJ2ZXJzaW9uIiwieCIsIm1hdGNoZXNfbWFnaWNfcHJlZml4IiwiY29udGFpbnNfbWFnaWNfcHJlZml4IiwiZiIsImFueV9tYWdpY19wcmVmaXgiLCJncm91cCQwIiwiYmluX3NpemVfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRlcl90JDAiLCJhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGUkMCIsImJvdW5kZWRfbGlzdF9iaW5fc2l6ZSIsImJpbl9zaGFwZV90IiwiYmluX3QiLCJiaW5fc2l6ZV90IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYnVmIiwicG9zX3JlZiIsInZuYXQwIiwib2ZfaW50X2V4biIsIm9mX3dyaXRlciIsIndyaXRlIiwic2l6ZSIsIndyaXRlJDAiLCJwb3MiLCJhIiwibGVuIiwicG9zJDAiLCJzaXplJDAiLCJvZl90eXBlX2NsYXNzIiwiYmluX2EiLCJ0ZXN0IiwicyIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ192ZXJzaW9uIiwid3JpdGVyX3dpdGhfbGVuZ3RoIiwid2l0aF9sZW5ndGhfdmVyc2lvbiIsInBvdyIsIngiLCJkZXNjcmlwdGlvbnMiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZ3JvdXAiLCJ2MiIsInYxIiwidmludCIsInZfbmFtZSIsInZfdmVyc2lvbiIsImVxdWFsIiwiYV8wMDEiLCJiXzAwMiIsImNvbXBhcmUiLCJhXzAwMyIsImJfMDA0IiwibiIsImhhc2hfZm9sZF90IiwiaHN2IiwiYXJnIiwiaHN2JDAiLCJoYXNoIiwidF9vZl9zZXhwIiwieF8wMDciLCJ2ZXJzaW9uIiwibmFtZSIsInNleHBfb2ZfdCIsInZlcnNpb25fMDExIiwibmFtZV8wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsInN1bW1hcml6ZSIsInRzIiwic3VtbWFyeSIsImJpbmQiLCJ0IiwiZiIsImJpbmRfZGVmZXJyZWQiLCJtYXBfZGVmZXJyZWQiLCJsaWZ0X2RlZmVycmVkIiwiZXJyJDAiLCJlcnIiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsInY1Iiwic2l6ZSQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQwIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQxIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDIiLCJ2X21ldGFkYXRhIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDkyIiwibWV0YWRhdGFfMDkwIiwiaWRfMDg4IiwidmVyc2lvbl8wODYiLCJ0YWdfMDg0IiwiYXJnXzA5MyIsImJuZHNfMDgzIiwiYXJnXzA5MSIsImJuZHNfMDgzJDAiLCJhcmdfMDg5IiwiYm5kc18wODMkMSIsImFyZ18wODciLCJibmRzXzA4MyQyIiwiYXJnXzA4NSIsImJuZHNfMDgzJDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsInRvX3YxIiwiZGF0YSIsImlkIiwidGFnIiwib2ZfdjEiLCJtZXRhZGF0YSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDEiLCJvZl9hXzA5NCIsImRhdGFfMDk4IiwiaWRfMDk2IiwiYXJnXzA5OSIsImJuZHNfMDk1IiwiYXJnXzA5NyIsImJuZHNfMDk1JDAiLCJiaW5fcmVhZF90JDkiLCJiaW5fcmVhZF90JDEwIiwiYmluX3JlYWRlcl90JDQiLCJncm91cCQ1IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQyIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDUiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkNiIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fbmVlZHNfbGVuZ3RoJDIiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3JlYWRfbmF0MF90IiwiYmluX3JlYWRfbmF0MF90JDAiLCJiaW5fcmVhZGVyX25hdDBfdCIsImJpbl9zaXplX25hdDBfdCIsImJpbl93cml0ZV9uYXQwX3QiLCJiaW5fd3JpdGVyX25hdDBfdCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfdCQyIiwicmVzcG9uc2UiLCJlcnJvciIsImJpbl9zaXplX3QkMiIsInNpemVfb2ZfcmVzcG9uc2UiLCJzaXplX29mX2Vycm9yIiwiYmluX3dyaXRlX3QkMiIsIndyaXRlX3Jlc3BvbnNlIiwid3JpdGVfZXJyb3IiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl93cml0ZXJfcmVzcG9uc2UiLCJiaW5fd3JpdGVyX2Vycm9yIiwiYmluX3JlYWRfdCQxMyIsIm9mX3Jlc3BvbnNlIiwib2ZfZXJyb3IiLCJiaW5fcmVhZF90JDE0Iiwidl91bnVzZWRfcXVlcnlfaWQiLCJ2X2luaXRpYWwiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkZXJfcmVzcG9uc2UiLCJiaW5fcmVhZGVyX2Vycm9yIiwiYmluX3QkMiIsImJpbl9yZXNwb25zZSIsImJpbl9lcnJvciIsInNleHBfb2ZfdCQyIiwib2ZfcmVzcG9uc2VfMTAwIiwib2ZfZXJyb3JfMTAxIiwiaW5pdGlhbF8xMDUiLCJ1bnVzZWRfcXVlcnlfaWRfMTAzIiwiYXJnXzEwNiIsImJuZHNfMTAyIiwiYXJnXzEwNCIsImJuZHNfMTAyJDAiLCJncm91cCQ3IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQzIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDciLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkOCIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fbmVlZHNfbGVuZ3RoJDMiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDEiLCJiaW5fcmVhZF9uYXQwX3QkMiIsImJpbl9yZWFkZXJfbmF0MF90JDAiLCJiaW5fc2l6ZV9uYXQwX3QkMCIsImJpbl93cml0ZV9uYXQwX3QkMCIsImJpbl93cml0ZXJfbmF0MF90JDAiLCJncm91cCQ4IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQ0IiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDkiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMTAiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX25lZWRzX2xlbmd0aCQ0Iiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMiIsIm9mX2FfMTA3IiwiYXJnMF8xMDgiLCJyZXMwXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZGVyX3QkOCIsImJpbl9yZWFkX25hdDBfdCQzIiwiYmluX3JlYWRfbmF0MF90JDQiLCJiaW5fcmVhZGVyX25hdDBfdCQxIiwiYmluX3NpemVfbmF0MF90JDEiLCJiaW5fd3JpdGVfbmF0MF90JDEiLCJiaW5fd3JpdGVyX25hdDBfdCQxIiwicXVlcnlfaWQiLCJ2MV9xdWVyeSIsInYxX3N0ciIsInYyX3N0ciIsImNhbGxlcl9pZGVudGl0eSIsInYyJDAiLCJ2X3F1ZXJ5Iiwidl9yZXNwb25zZSIsInZfbXNnIiwidl9xdWVyeSQwIiwidl9pbml0aWFsX3Jlc3BvbnNlIiwidl91cGRhdGVfcmVzcG9uc2UiLCJ2X2Vycm9yIiwidF9vZl9zZXhwJDAiLCJzZXhwc18wMTAiLCJ1cGRhdGVfcmVzcG9uc2UiLCJpbml0aWFsX3Jlc3BvbnNlIiwicXVlcnkiLCJzZXhwc18wMDYiLCJzZXhwc18wMDgiLCJtc2ciLCJyZXNwb25zZV8wMTQiLCJxdWVyeV8wMTIiLCJhcmdfMDE1IiwiYm5kc18wMTEiLCJhcmdfMDEzIiwiYm5kc18wMTEkMCIsIm1zZ18wMTciLCJhcmdfMDE4IiwiYm5kc18wMTYiLCJlcnJvcl8wMjYiLCJ1cGRhdGVfcmVzcG9uc2VfMDI0IiwiaW5pdGlhbF9yZXNwb25zZV8wMjIiLCJxdWVyeV8wMjAiLCJhcmdfMDI3IiwiYm5kc18wMTkiLCJhcmdfMDI1IiwiYm5kc18wMTkkMCIsImFyZ18wMjMiLCJibmRzXzAxOSQxIiwiYXJnXzAyMSIsImJuZHNfMDE5JDIiLCJyZXNwb25zZV8wMzEiLCJxdWVyeV8wMjkiLCJhcmdfMDMyIiwiYm5kc18wMjgiLCJhcmdfMDMwIiwiYm5kc18wMjgkMCIsIm1zZ18wMzQiLCJhcmdfMDM1IiwiYm5kc18wMzMiLCJlcnJvcl8wNDMiLCJ1cGRhdGVfcmVzcG9uc2VfMDQxIiwiaW5pdGlhbF9yZXNwb25zZV8wMzkiLCJxdWVyeV8wMzciLCJhcmdfMDQ0IiwiYm5kc18wMzYiLCJhcmdfMDQyIiwiYm5kc18wMzYkMCIsImFyZ18wNDAiLCJibmRzXzAzNiQxIiwiYXJnXzAzOCIsImJuZHNfMDM2JDIiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJieXRlc19yZWFkIiwicmVhZF9mb3JldmVyIiwib25fbWVzc2FnZSIsIm9uX2VuZF9vZl9iYXRjaCIsInJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QiLCJiaW5fcmVhZGVyIiwicGFjayQwIiwiY2xvc2UkMCIsImlzX2Nsb3NlZCQwIiwibW9uaXRvciIsImJ5dGVzX3RvX3dyaXRlIiwiYnl0ZXNfd3JpdHRlbiIsImZsdXNoZWQiLCJyZWFkeV90b193cml0ZSIsInNlbmRfYmluX3Byb3QiLCJiaW5fd3JpdGVyIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vIiwic3RvcHBlZCIsImNhbl9zZW5kIiwidHJhbnNmZXIiLCJwaXBlIiwibWF4X251bV92YWx1ZXNfcGVyX3JlYWQiLCJjb25zdW1lciIsImVuZF9vZl9waXBlIiwiaXZhciIsIml0ZXIiLCJxIiwid3JpdGVyXzAwNiIsInJlYWRlcl8wMDQiLCJhcmdfMDA3IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiY2xvc2UkMSIsImNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuXyIsImNhbGxiYWNrXzAwMiIsImNsb3NlX2Nvbm5lY3Rpb24iLCJjb250aW51ZSQwIiwiaGFuZGxlX2V4biIsImNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciIsImV4biIsImNhbGxiYWNrIiwid3JpdGVyXzAwNCIsInF1ZXJ5X2lkXzAwMiIsInJlc3BvbmRlZF8wMDYiLCJibmRzXzAwMSQxIiwiY3JlYXRlIiwid3JpdGVyIiwibGlmdCIsImltcGwiLCJiaW5fbXNnIiwiaW1wbCQwIiwic3RhdGUiLCJzdHIiLCJhdXRob3JpemVkX3N0YXRlIiwiaW1wbCQxIiwiaW1wbCQyIiwiYmluX3F1ZXJ5IiwiaW1wbCQzIiwiaW1wbCQ0IiwiaW1wbCQ1IiwiaW1wbCQ2IiwicmVzcCIsImltcGwkNyIsImltcGwkOCIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciIsImltcGwkOSIsImltcGwkMTAiLCJpbXBsJDExIiwidyIsIm9mX2Nvbm5lY3Rpb25fc3RhdGVfMDE0Iiwib25fZXhjZXB0aW9uXzAyNCIsInNoYXBlc18wMjIiLCJmXzAyMCIsInZlcnNpb25fMDE4IiwidGFnXzAxNiIsImJuZHNfMDE1IiwiYm5kc18wMTUkMCIsImJuZHNfMDE1JDEiLCJhcmdfMDE5IiwiYm5kc18wMTUkMiIsImFyZ18wMTciLCJibmRzXzAxNSQzIiwiZGVzY3JpcHRpb24iLCJzaGFwZXMiLCJsaWZ0JDAiLCJiIiwid2l0aF9hdXRob3JpemF0aW9uIiwibGlmdF9kZWZlcnJlZCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsImxvY2FsX3N0b3JhZ2Vfa2V5IiwiZ2V0Iiwid2l0aF9tZXRhZGF0YSIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiYWRkX2xlbiQwIiwiYWRkX2xlbiQxIiwiZSQwIiwiZSIsInN5bWJvbCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAyNCIsImFyZzFfMDI2IiwiYXJnMF8wMjUiLCJyZXMwXzAyNyIsInJlczFfMDI4IiwiYXJnXzAyMiIsImJuZHNfMDA4JDEiLCJhcmdfMDIwIiwiYm5kc18wMDgkMiIsImJuZHNfMDA4JDMiLCJhcmdfMDE2IiwiYm5kc18wMDgkNCIsImFyZ18wMTQiLCJibmRzXzAwOCQ1IiwiYm5kc18wMDgkNiIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJyZXN1bHQiLCJzZXhwIiwieF8wMzQiLCJ3cml0ZV9tZXNzYWdlIiwiYmluX3dyaXRlcl9kYXRhIiwiYmluX3dyaXRlX3ZvaWQiLCJidWZmZXIiLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXMiLCJiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCIsInN0cl9sZW4iLCJuZXh0IiwiYmluX3NpemVfbmF0MF9oZWFkZXIiLCJoZWFkZXJfcHJlZml4IiwiZGF0YV9sZW4iLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiIsImJpbl93cml0ZV9uYXQwX2hlYWRlciIsImJpbl93cml0ZXJfbmF0MF9oZWFkZXIiLCJiaW5fc2l6ZV9tZXNzYWdlIiwiYmluX3dyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX21lc3NhZ2UiLCJiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmciLCJwcmVwX3dyaXRlIiwiY2xvc2VkIiwiaW5zdGFuY2UiLCJ3cml0ZV9lb2YiLCJ3cml0ZV9tZXNzYWdlJDAiLCJjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW4iLCJncm91cHMiLCJlbGVtZW50X2luX2dyb3VwIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2skMCIsInQkMCIsIm1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiIsIm9uX2V4Y2VwdGlvbiIsImF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQiLCJycGNfa2luZCIsImFwcGx5X2ltcGxlbWVudGF0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJmJDMiLCJiaW5fcXVlcnlfcmVhZGVyJDAiLCJxdWVyeV9jb250ZW50cyIsImV4biQwIiwiZiQ0IiwibGVuJDAiLCJyZXN1bHRfbW9kZSIsImYkNSIsImJpbl9yZXNwb25zZV93cml0ZXIiLCJiaW5fcXVlcnlfcmVhZGVyJDEiLCJxdWVyeV9jb250ZW50cyQwIiwib3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsIiwiZGF0YSQwIiwiZGF0YSQxIiwiZXhuJDEiLCJiYWNrdHJhY2UiLCJyZXN1bHRfbW9kZSQwIiwiZiQ2IiwicmVzcG9uZGVyIiwiZCIsImNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IiwicmVzdWx0JDAiLCJjaGVja19yZXNwb25kZWQiLCJkJDAiLCJyIiwic3RyZWFtaW5nX3JwYyIsInN0cmVhbV9xdWVyeSIsImxlbiQxIiwic3RyZWFtX3dyaXRlciIsImltcGxfd2l0aF9zdGF0ZSIsImYkMiIsIndyaXRlciQwIiwicnVuX2ltcGwiLCJzcGxpdF9vayIsImhhbmRsZV9vayIsImVycm9yJDAiLCJvayIsImluaXRpYWwiLCJmJDAiLCJwaXBlX3IiLCJmJDEiLCJmbHVzaCIsInByb2R1Y2Vyc19mbHVzaGVkIiwiYWNjIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsImltcGxlbWVudGF0aW9uJDEiLCJvbl9leGNlcHRpb24kMCIsImltcGxlbWVudGF0aW9uJDIiLCJpX3MiLCJkdXBzIiwiaSIsImluc3RhbnRpYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsInVucGFja2VkIiwiY3JlYXRlX2V4biIsIm51bGwkMCIsImFkZF9leG4iLCJkZXNjIiwiYWRkIiwiaW1wbGVtZW50YXRpb25zJDAiLCJvbl91bmtub3duX3JwYyQwIiwiY2FsbCIsImV4cGVydCIsImNhbm5vdF9zZW5kIiwieF8wMzkiLCJtYXJrX3Jlc3BvbmRlZCIsInNjaGVkdWxlIiwiaGVhZGVyIiwiaGFuZGxlX3NlbmRfcmVzdWx0JDAiLCJ3cml0ZV9iaWdzdHJpbmciLCJ3cml0ZV9iaW5fcHJvdCIsImVycm9yX3NvdXJjZV8wMzgiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInN1cHBvcnRlZF92ZXJzaW9ucyIsImRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciIsInF1ZXJ5X21lc3NhZ2UiLCJzZW5kX2V2ZXJ5IiwidGltZW91dCIsInNlbmRfZXZlcnlfMDQzIiwidGltZW91dF8wNDEiLCJibmRzXzA0MCIsImJuZHNfMDQwJDAiLCJ2X3RpbWVvdXQiLCJ2X3NlbmRfZXZlcnkiLCJjcmVhdGUkMCIsInNleHBfb2ZfdCQzIiwiaGVhcnRiZWF0X2NvbmZpZ18wNTMiLCJkZXNjcmlwdGlvbl8wNTEiLCJoZWFydGJlYXRfY2FsbGJhY2tzXzA1NSIsImxhc3Rfc2Vlbl9hbGl2ZV8wNTciLCJuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25fMDciLCJoZWFydGJlYXRfZXZlbnRfMDc1IiwidGltZV9zb3VyY2VfMDczIiwiaW1wbGVtZW50YXRpb25zX2luc3RhbmNlXzA3MSIsImNsb3NlX2ZpbmlzaGVkXzA2OSIsImNsb3NlX3N0YXJ0ZWRfMDY3Iiwib3Blbl9xdWVyaWVzXzA2NSIsIndyaXRlcl8wNjMiLCJyZWFkZXJfMDYxIiwibWF4X21ldGFkYXRhX3NpemVfMDU5IiwiYXJnXzA3OCIsImJuZHNfMDUwIiwiYXJnXzA3NiIsImJuZHNfMDUwJDAiLCJhcmdfMDc0IiwiYm5kc18wNTAkMSIsImFyZ18wNzIiLCJibmRzXzA1MCQyIiwiYXJnXzA3MCIsImJuZHNfMDUwJDMiLCJhcmdfMDY4IiwiYm5kc18wNTAkNCIsImFyZ18wNjYiLCJibmRzXzA1MCQ1Iiwid3JpdGVyXzAzNSIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbl8wMyIsImFyZ18wMzYiLCJibmRzXzAzMiIsImFyZ18wMzQiLCJibmRzXzAzMiQwIiwiYXJnXzA2NCIsImJuZHNfMDUwJDYiLCJhcmdfMDYyIiwiYm5kc18wNTAkNyIsImFyZ18wNjAiLCJibmRzXzA1MCQ4IiwiYXJnXzA1OCIsImJuZHNfMDUwJDkiLCJhcmdfMDU2IiwiYm5kc18wNTAkMTAiLCJ0aW1lb3V0XzA0NiIsInNlbmRfZXZlcnlfMDQ4IiwiYXJnXzA0OSIsImJuZHNfMDQ1IiwiYXJnXzA0NyIsImJuZHNfMDQ1JDAiLCJhcmdfMDU0IiwiYm5kc18wNTAkMTEiLCJhcmdfMDUyIiwiYm5kc18wNTAkMTIiLCJzZXhwX29mX3RfaHVtX3dyaXRlciIsInhfMDc5IiwiZGlzcGF0Y2giLCJyZXNwb25zZV9oYW5kbGVyIiwiYmluX3dyaXRlcl9xdWVyeSIsInF1ZXJ5JDAiLCJtZXNzYWdlIiwibWFrZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImR1bW15X2J1ZmZlciIsImR1bW15X3JlZiIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IiwiY3JlYXRlJDEiLCJoYW5kc2hha2VfdGltZW91dCIsImhlYXJ0YmVhdF9jb25maWciLCJtYXhfbWV0YWRhdGFfc2l6ZSIsInRpbWVfc291cmNlIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiIsImhlYXJ0YmVhdF9mcm9tX25vd19vbiIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODIiLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJxdWVyeSQxIiwiaW5zdGFuY2UkMCIsInBlZXIiLCJ3aXRoX2Nsb3NlIiwidHJhbnNwb3J0IiwiZGlzcGF0Y2hfcXVlcmllcyIsIm9uX2hhbmRzaGFrZV9lcnJvciIsImhhbmRsZV9oYW5kc2hha2VfZXJyb3IiLCJzZXJ2ZXJfd2l0aF9jbG9zZSIsIm9uX2hhbmRzaGFrZV9lcnJvciQwIiwid2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCIsImNvbnRleHQiLCJlcnJvcl9zb3VyY2VfMDA5IiwiZXJyb3Jfc291cmNlXzAyNCIsInN5bWJvbCQwIiwiZGlzcGF0Y2hfcmF3IiwiY29ubiIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInF1ZXJ5X3R5cGVfaWQiLCJyZXNwb25zZV90eXBlX2lkIiwiaW1wbGVtZW50IiwiaW1wbGVtZW50JDAiLCJyZXNwb25zZSQwIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciIsImRpc3BhdGNoJDAiLCJkaXNwYXRjaF9leG4iLCJtYWtlX2Rpc3BhdGNoIiwiZG9fZGlzcGF0Y2giLCJycGNfdGFnIiwiaGFuZGxlX3Jlc3BvbnNlIiwiaGFuZGxlX2Vycm9yIiwieF8wMDIiLCJkaXNwYXRjaCQxIiwic2NoZWR1bGVfZGlzcGF0Y2giLCJkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIiwiYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiIsImltcGxlbWVudCQxIiwiaW1wbGVtZW50JDIiLCJpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJDAiLCJ2ZXJzaW9uJDAiLCJuYW1lJDAiLCJtc2dfdHlwZV9pZCIsInNoYXBlcyQwIiwiZGVzY3JpcHRpb24kMCIsImltcGxlbWVudCQzIiwiZGlzcGF0Y2gkMiIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IkMCIsImRpc3BhdGNoJDMiLCJkaXNwYXRjaF9leG4kMCIsImltcGxlbWVudCQ0IiwiZGlzcGF0Y2gkNCIsInNjaGVkdWxlX2Rpc3BhdGNoJDAiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNsaWVudF9wdXNoZXNfYmFjayIsImJpbl9pbml0aWFsX3Jlc3BvbnNlIiwiYmluX3VwZGF0ZV9yZXNwb25zZSIsImFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZSIsImNsaWVudF9wdXNoZXNfYmFjayQwIiwiaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIiwidXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQiLCJlcnJvcl9yZXNwb25zZV90eXBlX2lkIiwibWFrZV9pbml0aWFsX21lc3NhZ2UiLCJpbXBsZW1lbnRfZ2VuIiwiaW1wbGVtZW50JDUiLCJjIiwiaW1wbGVtZW50X2RpcmVjdCIsImFib3J0IiwicmVhZF9lcnJvciIsImhhbmRsZXIiLCJjb3JlX2VyciIsImRpc3BhdGNoX2dlbiIsIm1ha2VfdXBkYXRlX2hhbmRsZXIiLCJpbml0aWFsX3N0YXRlIiwiaW5pdGlhbF9oYW5kbGVyIiwiZXJyJDEiLCJpbml0aWFsX21zZyIsImluaXRpYWwkMCIsImV4dHJhIiwiaGFuZGxlciQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJlcnIkNCIsImVyciQzIiwiZXJyJDIiLCJkaXNwYXRjaCQ1IiwicGlwZV93IiwiaW5pdCIsInBpcGVfbWV0YWRhdGEiLCJjcmVhdGUkMiIsImJpbl9xdWVyeSQwIiwiYmluX3Jlc3BvbnNlJDAiLCJpbXBsZW1lbnQkNiIsImNyZWF0ZSQzIiwiaW5pdGlhbF9zaXplIiwiY3JlYXRlJDQiLCJidWZmZXIkMCIsImxlbmd0aCIsIm9uZSIsIm9uZSQwIiwid3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAiLCJncm91cF9lbGVtZW50X2luX3dyaXRlciIsInJlbW92ZSIsInRvX2xpc3QiLCJmbHVzaGVkX29yX2Nsb3NlZCIsImRpcmVjdF9zdHJlYW1fd3JpdGVyIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQxIiwid3JpdGUkMSIsImltcGxlbWVudF9kaXJlY3QkMCIsImRpc3BhdGNoJDYiLCJkaXNwYXRjaF9leG4kMSIsInBpcGVfYW5kX2lkIiwiZGlzcGF0Y2hfaXRlciIsIm5hbWUkMSIsInZlcnNpb24kMSIsImRlc2NyaXB0aW9uJDEiLCJxdWVyeV90eXBlX2lkJDAiLCJlcnJvcl90eXBlX2lkIiwicmVzcG9uc2VfdHlwZV9pZCQwIiwiY3JlYXRlJDUiLCJiaW5fc3RhdGUiLCJiaW5fdXBkYXRlIiwiYmluX3F1ZXJ5JDEiLCJiaW5fZXJyb3IkMCIsImRpc3BhdGNoJDciLCJ1cGRhdGVfciIsIm5hbWUkMiIsInZlcnNpb24kMiIsImRlc2NyaXB0aW9uJDIiLCJxdWVyeV90eXBlX2lkJDEiLCJzdGF0ZV90eXBlX2lkIiwidXBkYXRlX3R5cGVfaWQiLCJlcnJvcl90eXBlX2lkJDAiLCJkZXNjcmlwdGlvbiQzIiwicnBjIiwicnBjJDAiLCJycGMkMSIsInJwYyQyIiwidGhlX3JwYyIsIm5vdF90aGVfcnBjIiwicnBjX25hbWUkMCIsImlucHV0IiwiY29udmVydCIsImZhaWxlZF9jb252ZXJzaW9uIiwiYXJnM18wMDYiLCJhcmcyXzAwNSIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNyIsInZfMDAxIiwicmVzMV8wMDgiLCJ2XzAwMiIsInJlczJfMDA5IiwicmVzM18wMTAiLCJtdWx0aXBsZV9yZWdpc3RyYXRpb25zIiwiYXJnMV8wMTQiLCJ2XzAxMSIsInZfMDEyIiwicmVzMV8wMTYiLCJhZGFwdGVyIiwiYWRhcHRlcnMiLCJhcmcxXzAyMiIsImFyZzBfMDIxIiwicmVzMV8wMjQiLCJhZGFwdGVycyQwIiwiYWRkX3JwY192ZXJzaW9uIiwib2xkX3JwYyIsInVwZ3JhZGUiLCJkb3duZ3JhZGUiLCJhZGFwdCIsImZuIiwiYWRhcHRlZCIsIm9sZF9xdWVyeSIsImFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJ1cGdyYWRlX29yX2Vycm9yIiwiZG93bmdyYWRlX29yX2Vycm9yIiwidmFsdWUiLCJhZGRfdmVyc2lvbiIsImFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSIsInJlZ2lzdHJ5IiwiaW1wbGVtZW50X211bHRpIiwibG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvIiwibG9nX3ZlcnNpb24iLCJycGNzIiwidmVyc2lvbnMiLCJxJDAiLCJyJDAiLCJpbXBsZW1lbnRfbXVsdGlfZ2VuIiwiaW1wbGVtZW50X2RpcmVjdF9tdWx0aSIsIndyYXBwZWRfbW9kZWxfb2ZfcXVlcnkiLCJ3cmFwcGVkX2Vycm9yX29mX21vZGVsIiwiY29udmVydF9lbHQiLCJjb252ZXJ0X3BpcGUiLCJtb2RlbF9zdGF0ZSIsInN0YXRlJDAiLCJiaW5fc2hhcGVfcXVlcnkiLCJiaW5fc2l6ZV9xdWVyeSIsImJpbl93cml0ZV9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5IiwiYmluX3JlYWRfcXVlcnkkMCIsImJpbl9yZWFkZXJfcXVlcnkiLCJiaW5fc2hhcGVfc3RhdGUiLCJiaW5fc2l6ZV9zdGF0ZSIsImJpbl93cml0ZV9zdGF0ZSIsImJpbl93cml0ZXJfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSIsImJpbl9yZWFkX3N0YXRlJDAiLCJiaW5fcmVhZGVyX3N0YXRlIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3NoYXBlX2Vycm9yIiwiYmluX3NpemVfZXJyb3IiLCJiaW5fd3JpdGVfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciIsImJpbl9yZWFkX2Vycm9yJDAiLCJtb2RlbF9vZl9xdWVyeSIsInN0YXRlX29mX21vZGVsIiwiZXJyb3Jfb2ZfbW9kZWwiLCJ1cGRhdGVfb2ZfbW9kZWwiLCJiaW5fc2hhcGVfcmVzcG9uc2UiLCJiaW5fc2l6ZV9yZXNwb25zZSIsImJpbl93cml0ZV9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlIiwiYmluX3JlYWRfcmVzcG9uc2UkMCIsInJlc3BvbnNlX29mX21vZGVsIiwiYWRkJDAiLCJpbXBscyIsIm1lbnUiLCJtZW51X2ltcGxzIiwic3VwcG9ydGVkX3JwY3MiLCJvZl9lbnRyaWVzIiwiZW50cmllcyIsImF1eF9yZXF1ZXN0IiwicmVxdWVzdCIsInJlcXVlc3QkMCIsImltcGxlbWVudF9tdWx0aSQwIiwiYmluX3NoYXBlX3F1ZXJ5JDAiLCJiaW5fc2l6ZV9xdWVyeSQwIiwiYmluX3dyaXRlX3F1ZXJ5JDAiLCJiaW5fd3JpdGVyX3F1ZXJ5JDAiLCJiaW5fcmVhZF9xdWVyeSQxIiwiYmluX3JlYWRfcXVlcnkkMiIsImJpbl9yZWFkZXJfcXVlcnkkMCIsImJpbl9zaGFwZV9yZXNwb25zZSQwIiwiYmluX3NpemVfcmVzcG9uc2UkMCIsImJpbl93cml0ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlcl9yZXNwb25zZSQwIiwiYmluX3JlYWRfcmVzcG9uc2UkMSIsImJpbl9yZWFkX3Jlc3BvbnNlJDIiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlJDAiLCJtb2RlbF9vZl9xdWVyeSQwIiwicmVzcG9uc2Vfb2ZfbW9kZWwkMCIsImFkZCQxIiwic2hhcGVfbWVudSIsInNoYXBlX21lbnVfaW1wbHMiLCJyZXF1ZXN0JDEiLCJjb25uZWN0aW9uIiwiY3JlYXRlX2RpcmVjdGx5IiwibW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24iLCJjYWxsZXJfdmVyc2lvbnMiLCJjYWxsZWVfdmVyc2lvbnMiLCJjYWxsZWVfbWVudSIsIndpdGhfc3BlY2lmaWNfdmVyc2lvbiIsImRpc3BhdGNoZXIiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMV8wMjAiLCJ3aXRoX3ZlcnNpb25fbWVudSIsImRpc3BhdGNoX211bHRpIiwiY29ubl93aXRoX21lbnUiLCJtcSIsInF1ZXJ5X29mX21vZGVsIiwibW9kZWxfb2ZfcmVzcG9uc2UiLCJkaXNwYXRjaF9pdGVyX211bHRpIiwiYWJvcnRfbXVsdGkiLCJ3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIiwiY29udmVydF9yZXN1bHQiLCJjb252ZXJ0X29rIiwidSIsInJzIiwibW9kZWxfb2Zfc3RhdGUiLCJtb2RlbF9vZl9lcnJvciIsIm1vZGVsX29mX3VwZGF0ZSIsImNhbGxlZV9tb2RlbF9vZl9xdWVyeSIsInJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCIsInF1ZXJ5X29mX2NhbGxlcl9tb2RlbCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsImVycm9yX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJzdGF0ZV9vZl9jYWxsZWVfbW9kZWwiLCJ1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3N0YXRlJDAiLCJiaW5fc2l6ZV9zdGF0ZSQwIiwiYmluX3dyaXRlX3N0YXRlJDAiLCJiaW5fd3JpdGVyX3N0YXRlJDAiLCJiaW5fcmVhZF9zdGF0ZSQxIiwiYmluX3JlYWRfc3RhdGUkMiIsImJpbl9yZWFkZXJfc3RhdGUkMCIsImJpbl9zdGF0ZSQwIiwiYmluX3NoYXBlX3VwZGF0ZSQwIiwiYmluX3NpemVfdXBkYXRlJDAiLCJiaW5fd3JpdGVfdXBkYXRlJDAiLCJiaW5fd3JpdGVyX3VwZGF0ZSQwIiwiYmluX3JlYWRfdXBkYXRlJDEiLCJiaW5fcmVhZF91cGRhdGUkMiIsImJpbl9yZWFkZXJfdXBkYXRlJDAiLCJiaW5fdXBkYXRlJDAiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwicGlwZV9yZWFkIiwieF8wMDkiLCJvZl9hXzAwMSIsImJ1ZmZlcl8wMDUiLCJwaXBlXzAwMyIsImJ5dGVzX3JlYWRfMDA3IiwiYXJnXzAwOCIsImJuZHNfMDAyIiwiYXJnXzAwNiIsImJuZHNfMDAyJDAiLCJhcmdfMDA0IiwiYm5kc18wMDIkMSIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJwcm9jZXNzX3F1ZXVlIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSQwIiwidG90YWxfbGVuIiwiY29udGludWVfb3Jfd2FpdCIsImxlbmd0aCQwIiwic2V0X2J1ZmZlciIsInByb2Nlc3NfZGF0YSIsInNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE5Iiwib2ZfYV8wMTEiLCJtb25pdG9yXzAxNSIsInBpcGVfMDEzIiwiYnl0ZXNfd3JpdHRlbl8wMTciLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiaW5jcl9ieXRlc193cml0dGVuIiwibnVtX2J5dGVzIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJvbl9tZXNzYWdlX2NvdW50IiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJhXzAyMiIsImJfMDIzIiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImNvbXBhcmF0b3IkMCIsImFfMDI0IiwiYl8wMjUiLCJ3cml0ZV8xX21zZ18xX2NodW5rIiwid3JpdGVfMV9tc2dfM19jaHVuayIsIm1zZ19sZW4iLCJzcGxpdF9hdCIsInBhcnQxIiwicGFydDIiLCJ3cml0ZV8yX21zZ18xX2NodW5rIiwib25lX21zZyIsInR3b19tc2ciLCJ3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWUiLCJudW0iLCJzdG9wX2FmdGVyX29uX21lc3NhZ2UiLCJhXzAyNiIsImJfMDI3IiwiYV8wMzAiLCJiXzAzMSIsIm9uZV9tZXNzYWdlIiwidHdvX21lc3NhZ2VzIiwib25lX21lc3NhZ2VfcDEiLCJvbmVfbWVzc2FnZV9wMiIsInJwY19jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsInN0cmluZ19hZnRlciIsInMiLCJuIiwicXVvdGUiLCJsZW4iLCJidWYiLCJpIiwiYyIsIm9mX2NoYXIiLCJmdWxsX3NwbGl0Iiwic3RyIiwib24iLCJzZXAiLCJsb29wIiwiYWNjIiwib2Zmc2V0IiwiaW5kZXgiLCJ0b2tlbiIsInNwbGl0IiwibWF4IiwibWF4JDAiLCJ0b2tlbnMiLCJsb29wJDAiLCJ0cmltX2xlZnRfc3ViIiwibGFzdF9jaGFyIiwiY2hhcnMiLCJmaW5hbCQwIiwibGFzdF9jaGFyJDAiLCJpJDAiLCJsYXN0X2NoYXIkMSIsIm5ld19sZW4iLCJzcGxpdF90cmltX2xlZnQiLCJ0cmltIiwidHJpbV9sZWZ0Iiwibm9uX3NwYWNlIiwiZmluZF9mcm9tIiwicGF0dGVybiIsInN0YXJ0Iiwic3RhcnQkMCIsInJlcGxhY2VfYWxsIiwid2l0aCQwIiwicGxlbiIsInNsZW4iLCJqIiwicmVwbGFjZV9hbGxfYXNzb2MiLCJ0YmwiLCJmb3VuZCIsImZvdW5kJDAiLCJmIiwieHMkMCIsIngkMSIsIngiLCJmeCIsInhzIiwieCQwIiwiZngkMCIsImUiLCJqJDEiLCJ3aXRoJDIiLCJwYXR0ZXJuJDEiLCJyIiwid2l0aCQxIiwicGF0dGVybiQwIiwiaiQwIiwib2ZfbGlzdCIsImwiLCJ0b19saXN0IiwiaSQxIiwiYWNjJDAiLCJvZl9hcnJheSIsImEiLCJieXRlcyIsInRvX2FycmF5IiwiY3V0Iiwic2VwX21heCIsInNfbWF4IiwiayIsImxlZnRfZW5kIiwicmlnaHRfc3RhcnQiLCJyY3V0Iiwic2VwX3N0YXJ0IiwiY2hvcF9wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXhfbCIsInN0cmluZ19sIiwiZHJvcCIsInRha2UiLCJjcmVhdGUiLCJzaXplIiwiZW1wdHkiLCJsZW5ndGgiLCJzdWIiLCJpbnZhbGlkX2JvdW5kcyIsIm9wIiwiYnVmZmVyX2xlbiIsIm9mZiIsImxlbiIsIm1lc3NhZ2UiLCJpbnZhbGlkX2JvdW5kc19ibGl0Iiwic3JjX2xlbiIsInNyY19vZmYiLCJkc3RfbGVuIiwiZHN0X29mZiIsImludmFsaWRfYm91bmRzX21lbWNtcCIsImJ1ZjFfbGVuIiwiYnVmMV9vZmYiLCJidWYyX2xlbiIsImJ1ZjJfb2ZmIiwiY29weSIsInQiLCJkc3QiLCJzdWJzdHJpbmciLCJiIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicyIsImJsaXQiLCJzcmMiLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2J5dGVzIiwiYmxpdF90b19ieXRlcyIsIm1lbWNtcCIsImJ1ZjEiLCJidWYyIiwibWVtY21wX3N0cmluZyIsIm1lbWNociIsImJ1ZiIsImJ1Zl9vZmYiLCJjaHIiLCJidWZfbGVuIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzE2IiwiYnMiLCJpIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzY0IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQiLCJ4Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDY0X2JlIiwic2V0X2ludDY0X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwJDAiLCJnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQ2NF9iZSIsImdldF9pbnQ2NF9sZSIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCIsInVuc2FmZV9zZXRfaW50MTZfYmUiLCJ1bnNhZmVfc2V0X2ludDE2X2xlIiwidW5zYWZlX3NldF9pbnQzMl9iZSIsInVuc2FmZV9zZXRfaW50MzJfbGUiLCJ1bnNhZmVfc2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDE2X2xlIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQzMl9sZSIsInVuc2FmZV9nZXRfaW50NjRfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwic3RhdGVfdG9fb3B0aW9uIiwieCIsInYiLCJmYWlsX3RvX3N0cmluZyIsIm1hcmtzIiwiZXJyIiwic3RhdGVfdG9fcmVzdWx0IiwiY3JlYXRlIiwiYnVmZmVyIiwib2ZmIiwibGVuIiwiY29tbWl0dGVkX2J5dGVzIiwibGVuZ3RoIiwidCIsImNsaWVudF9jb21taXR0ZWRfYnl0ZXMiLCJwYXJzZXJfY29tbWl0dGVkX2J5dGVzIiwiYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQiLCJwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMiLCJpbnZhcmlhbnQiLCJvZmZzZXRfaW5fYnVmZmVyIiwicG9zIiwiYXBwbHkiLCJmIiwidW5zYWZlX2dldF9jaGFyIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwidW5zYWZlX2dldF9pbnQxNl9iZSIsInVuc2FmZV9nZXRfaW50MzJfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwiY291bnRfd2hpbGUiLCJpIiwibGltaXQiLCJjb21taXQiLCJmYWlsX2siLCJpbnB1dCIsIm1zZyIsInN1Y2NlZWRfayIsInRvX2V4cG9ydGVkX3N0YXRlIiwiY29udGludWUkMCIsImNvbW1pdHRlZCIsImJzIiwibW9yZSIsIngkMCIsInMiLCJzbCIsImkkMCIsInBhcnNlIiwicCIsInBhcnNlX2JpZ3N0cmluZyIsImlucHV0JDAiLCJyZXR1cm4kMCIsImZhaWwiLCJzdWNjIiwic3ltYm9sX2JpbmQiLCJzdWNjJDAiLCJzeW1ib2xfbWFwIiwic3ltYm9sIiwibSIsInN5bWJvbCQwIiwic3VjYzAiLCJpbnB1dDAiLCJwb3MwIiwibW9yZTAiLCJzdWNjMSIsImlucHV0MSIsInBvczEiLCJtb3JlMSIsImxpZnQiLCJsaWZ0MiIsIm0xIiwibTIiLCJzdWNjMiIsImlucHV0MiIsInBvczIiLCJtb3JlMiIsImxpZnQzIiwibTMiLCJzdWNjMyIsImlucHV0MyIsInBvczMiLCJtb3JlMyIsImxpZnQ0IiwibTQiLCJzdWNjNCIsImlucHV0NCIsInBvczQiLCJtb3JlNCIsInN5bWJvbCQxIiwiYSIsImIiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibWFyayIsImZhaWwkMCIsInN5bWJvbCQ0IiwicSIsInBvcyQwIiwibW9yZSQwIiwicmV0dXJuJDEiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsImxpZnQyJDAiLCJsaWZ0MyQwIiwibGlmdDQkMCIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJvZl9iaWdzdHJpbmciLCJidWYiLCJ3cml0YWJsZV9zcGFjZSIsImVuc3VyZSIsInRvX2NvcHkiLCJvbGRfbGVuIiwibmV3X2xlbiIsInNwYWNlIiwibmV3X2J1ZiIsIndyaXRlX3BvcyIsImZlZWRfc3RyaW5nIiwic3RyIiwiZmVlZF9iaWdzdHJpbmciLCJmZWVkX2lucHV0Iiwic2hpZnQiLCJuIiwiZm9yX3JlYWRpbmciLCJ1bmNvbnN1bWVkIiwib2ZfdW5jb25zdW1lZCIsImZyb21fdW5idWZmZXJlZF9zdGF0ZSIsImJ1ZmZlcmluZyIsImNvbnN1bWVkIiwiY29uc3VtZWQkMCIsInVuY29uc3VtZWQkMCIsInBhcnNlJDAiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwiZmVlZCIsInN0YXRlIiwiayIsImJ1ZmZlcmluZyQwIiwic3RhdGVfdG9fb3B0aW9uJDAiLCJzdGF0ZV90b19yZXN1bHQkMCIsInN0YXRlX3RvX3VuY29uc3VtZWQiLCJwcm9tcHQiLCJkZW1hbmRfaW5wdXQiLCJlbnN1cmVfc3VzcGVuZGVkIiwiZ28iLCJ1bnNhZmVfYXBwbHkiLCJhdF9lbmRfb2ZfaW5wdXQiLCJlbmRfb2ZfaW5wdXQiLCJhZHZhbmNlIiwiYXZhaWxhYmxlIiwidW5zYWZlX2xvb2thaGVhZCIsInBlZWtfY2hhciIsInBlZWtfY2hhcl9mYWlsIiwic2F0aXNmeSIsImMiLCJjaGFyJDAiLCJub3RfY2hhciIsImMkMCIsImFueV9jaGFyIiwiaW50OCIsInAkMCIsImFueV91aW50OCIsInAkMSIsImFueV9pbnQ4Iiwic2tpcCIsImluaXQiLCJ3aXRoX2J1ZmZlciIsImlucHV0X2xlbiIsImluaXQkMCIsImNvdW50X3doaWxlMSIsInN1Y2MkMSIsImZhaWwkMSIsInN0cmluZyIsImYkMCIsImUiLCJzdHJpbmckMCIsInN0cmluZ19jaSIsInNraXBfd2hpbGUiLCJ0YWtlIiwibiQwIiwidGFrZV9iaWdzdHJpbmciLCJ0YWtlX2JpZ3N0cmluZ193aGlsZSIsInRha2VfYmlnc3RyaW5nX3doaWxlMSIsInRha2VfYmlnc3RyaW5nX3RpbGwiLCJwZWVrX3N0cmluZyIsInRha2Vfd2hpbGUiLCJ0YWtlX3doaWxlMSIsInRha2VfdGlsbCIsImNob2ljZSIsInBzIiwiZmFpbHVyZV9tc2ciLCJmaXhfZGlyZWN0IiwiciIsImZpeF9sYXp5IiwibWF4X3N0ZXBzIiwic3RlcHMiLCJmaXgiLCJvcHRpb24iLCJjb25zIiwieHMiLCJsaXN0IiwicHMkMCIsImNvdW50IiwibG9vcCIsIm1hbnkiLCJtYW55MSIsIm1hbnlfdGlsbCIsInNlcF9ieTEiLCJzZXBfYnkiLCJza2lwX21hbnkiLCJza2lwX21hbnkxIiwiZW5kX29mX2xpbmUiLCJzY2FuIiwic3RhdGUkMCIsInBhcnNlciIsInNjYW4kMCIsInNjYW5fc3RhdGUiLCJzY2FuX3N0cmluZyIsImNvbnN1bWVfd2l0aCIsImNvbnN1bWVkX2JpZ3N0cmluZyIsImJvdGgiLCJtYXAiLCJiaW5kIiwibWFwMiIsIm1hcDMiLCJtYXA0IiwiZCIsImludDE2IiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJ4IiwieCQwIiwiY3N0JDE1IiwiY3N0JDEzIiwiY3N0JDEyIiwiY3N0JDAiLCJpdGVyX2NvbmNhdCIsImZuIiwic2VwIiwiYnVmIiwibGFzdCIsInJlc3QiLCJjb21wYXJlX29wdCIsImMiLCJ0JDAiLCJ0IiwiYSIsImIiLCJjb21wYXJlX2xpc3QiLCJmIiwidCQyIiwidCQxIiwieHMiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwidXNlcmluZm8iLCJob3N0IiwicXVlcnlfa2V5IiwicXVlcnlfdmFsdWUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJ4JDEiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfaG9zdCIsImgxIiwiaDIiLCJpcDIiLCJpcDEiLCJpcDIkMCIsImlwMSQwIiwiaDIkMCIsImgxJDAiLCJjb21wYXJlJDAiLCJjJDIiLCJjJDMiLCJjJDQiLCJrdmwkMCIsImt2bCIsInJhdyIsInJhdyQwIiwiYyQxIiwidmwiLCJ2bCQwIiwiayQwIiwiZXF1YWwiLCJ1bmNhc3Rfb3B0Iiwibm9ybWFsaXplIiwic2NoZW0iLCJpbml0IiwiaG9zdCQwIiwiaG9zdCQxIiwidG9fc3RyaW5nIiwidXJpIiwiYWRkX3BjdF9zdHJpbmciLCJmaXJzdF9zZWdtZW50IiwieCQyIiwicSIsImdldF9kZWNvZGVkX29wdCIsIndpdGhfc2NoZW1lIiwiaCQwIiwiaG9zdF93aXRoX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJ3aXRoX3VzZXJpbmZvIiwidXNlcmluZm8kMCIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ3aXRoX3Bhc3N3b3JkIiwicmVzdWx0Iiwid2l0aF9wb3J0Iiwid2l0aF9wYXRoIiwicGF0aCQwIiwid2l0aF9mcmFnbWVudCIsImZyYWciLCJxdWVyeSIsInZlcmJhdGltX3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtIiwiZ2V0X3F1ZXJ5X3BhcmFtJDAiLCJ3aXRoX3F1ZXJ5IiwicV9zIiwid2l0aF9xdWVyeSQwIiwiYWRkX3F1ZXJ5X3BhcmFtIiwiYWRkX3F1ZXJ5X3BhcmFtJDAiLCJhZGRfcXVlcnlfcGFyYW1zIiwiYWRkX3F1ZXJ5X3BhcmFtcyQwIiwicmVtb3ZlX3F1ZXJ5X3BhcmFtIiwicGF0aF9hbmRfcXVlcnkiLCJtYXRjaCIsInNjaGVtZSQwIiwicmVzb2x2ZSIsImJhc2UiLCJzY2hlbWUkMSIsInNjaGVtJDAiLCJwYXRoX3N0ciIsInJlbHBhdGgiLCJicGF0aCIsImJob3N0IiwicmJwYXRoIiwiY2Fub25pY2FsaXplIiwidXJpJDAiLCJwcCIsInBwZiIsInBwX2h1bSIsInN0cmluZ19vZl9jaGFyIiwic3RyaW5nX29mX2NoYXJfbGlzdCIsImNoYXJzIiwiaXNfZGlnaXQiLCJoZXhfZGlnaXQiLCJoZXhhZGVjaW1hbCIsImNfZG90IiwiY19hdCIsImNfY29sb24iLCJkZWNfb2N0ZXQiLCJudW0iLCJpcHY0X2FkZHJlc3MiLCJ0aHJlZSIsIm9uZSIsImFmdGVyX2RvdWJsZV9jb2xvbiIsImRvdWJsZV9jb2xvbiIsImNvdW50IiwiZmlsbGVyX2xlbmd0aCIsInBhcnQiLCJoZXhfcGFydCIsInNwbGl0X3dpdGgiLCJ0cyIsInpzIiwiZm9ybWF0X2FkZHIiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJiZWZvcmVfZG91YmxlX2NvbG9uIiwiYmVmb3JlIiwicmVzIiwiaXB2NiIsImlwdjZfYWRkcmVzcyIsInBjdF9lbmNvZGVkIiwicGN0IiwiZGlnaXRzIiwic3ViX2RlbGltcyQwIiwidW5yZXNlcnZlZCIsInJlZ19uYW1lIiwicG9ydCQwIiwiZGVjb2RlZCIsImF1dGhvcml0eSIsInF1ZXJ5JDAiLCJmcmFnbWVudCQwIiwidXJpX3JlZmVyZW5jZSIsInVyaV9yZWZlcmVuY2UkMCIsImRlY29kZV9ob3N0IiwicGFyc2VkIiwicGFyc2VkJDAiLCJtYWtlIiwicGF0aCQxIiwid2l0aF9ob3N0Iiwid2l0aF91cmkiLCJ3aXRoJDAiLCJvIiwib2Zfc3RyaW5nIiwibGV0JDAiLCJ0b191cmkiLCJvZl91cmkiLCJ1bnN1cHBvcnRlZF9zY2hlbWUiLCJvZl9zdHJpbmckMCIsImVycm9yIiwidG9fc3RyaW5nJDAiLCJtYWtlJDAiLCJob3N0JDIiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxOCIsImRlZmF1bHRfMDM0IiwiZXJyb3Jfc291cmNlXzAyNyIsImRlZmF1bHRfMDYyIiwiY29tcG9uZW50X29mX3NleHAiLCJzZXhwXzAxNyIsImF0b21fMDAyIiwic2V4cF9hcmdzXzAwNSIsImF0b21fMDAyJDAiLCJhcmcwXzAxNSIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJyZXMyXzAxMyIsInJlczBfMDE2Iiwic2V4cF9vZl9jb21wb25lbnQiLCJ2XzAxOSIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJyZXMyXzAyNSIsImRlZmF1bHRfMDI4IiwiZGVmYXVsdF8wMzUiLCJkZWZhdWx0XzAzNiIsImRlZmF1bHRfMDM3IiwiZGVmYXVsdF8wMzgiLCJkZWZhdWx0XzA0MiIsImRlZmF1bHRfMDQ3IiwiZGVmYXVsdF8wNTIiLCJkZWZhdWx0XzA1NyIsImRlZmF1bHRfMDc1IiwidF9vZl9zZXhwIiwieF8wMzkiLCJzZXhwXzAzMyIsImFyZzFfMDMwIiwiYXJnMF8wMjkiLCJyZXMwXzAzMSIsInJlczFfMDMyIiwidCIsImZyYWdtZW50IiwicXVlcnkiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJ1c2VyaW5mbyIsInNjaGVtZSIsInNleHBfb2ZfdCIsImZyYWdtZW50XzA3NiIsInF1ZXJ5XzA2NyIsInBhdGhfMDYzIiwicG9ydF8wNTgiLCJob3N0XzA1MyIsInVzZXJpbmZvXzA0OCIsInNjaGVtZV8wNDMiLCJibmRzXzA0MCIsImFyZ18wNzgiLCJibmRzXzA0MCQwIiwiYm5kXzA3NyIsImJuZHNfMDQwJDEiLCJhcmdfMDczIiwiYXJnMV8wNjkiLCJhcmcwXzA2OCIsInJlczBfMDcwIiwicmVzMV8wNzEiLCJibmRfMDcyIiwiYXJnXzA2NSIsImJuZHNfMDQwJDIiLCJibmRfMDY0IiwiYXJnXzA2MCIsImJuZHNfMDQwJDMiLCJibmRfMDU5IiwiYXJnXzA1NSIsImJuZHNfMDQwJDQiLCJibmRfMDU0IiwiYXJnXzA1MCIsImJuZHNfMDQwJDUiLCJibmRfMDQ5IiwiYXJnXzA0NSIsImJuZHNfMDQwJDYiLCJibmRfMDQ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJpc192YWxpZF9maWVsZF9uYW1lIiwic2VlbiIsIm5hbWUiLCJhbnlfb2Zfc2V4cCIsInMiLCJsaXN0JDAiLCJ2JDAiLCJuYW1lJDEiLCJzZWVuJDIiLCJyZXZfYWNjIiwibGlzdCIsInJlc3QiLCJyZXZfYWNjJDAiLCJzZWVuJDAiLCJyZXN0JDAiLCJ2IiwibmFtZSQwIiwicmV2X2FjYyQxIiwic2VlbiQxIiwibCIsImxvZ19zIiwic2V4cCIsImxvZ19zX2FzX3N0cmluZyIsInNleHBfb2ZfdCIsImZpZWxkMl8wMTYiLCJmaWVsZDFfMDE0IiwiYXJnXzAxNyIsImJuZHNfMDEzIiwic29tZV9uYW1lXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwNCIsImFyZ18wMTUiLCJibmRzXzAxMyQwIiwidG9fc3RyaW5nIiwic2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzIiwieF8wMjIiLCJpIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsInJlczBfMDIwIiwicmVzMV8wMjEiLCJjb21wYXJlX2Nsb3NlX2V2ZW50X2NvZGUiLCJzZXhwX29mX2Nsb3NlX2V2ZW50X2NvZGUiLCJhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImNvbXBhcmUiLCJhXzAwNCIsImJfMDA1IiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhY2MiLCJsJDAiLCJlbnVtZXJhdGVfMDExIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsImwkMiIsImVudW1lcmF0ZV8wMTAiLCJhY2MkMiIsImFsbCIsIm9mX2ludCIsImNvZGUiLCJ0b19pbnQiLCJjb2RlJDAiLCJ4XzAzMSIsInhfMDMwIiwibm9ybWFsX2Nsb3N1cmUiLCJjbGllbnQiLCJoZWFydGJlYXRfY29uZmlnIiwiZGVzY3JpcHRpb24iLCJpbXBsZW1lbnRhdGlvbnMiLCJ1cmkiLCJzY2hlbWUiLCJwb3J0IiwicG9ydCQwIiwiaG9zdCIsIm1hdGNoJDEiLCJyZXMiLCJoIiwiZGVzY3JpcHRpb24kMCIsImZyb21fc2VydmVyX3ciLCJmcm9tX3NlcnZlcl9yIiwidG9fc2VydmVyX3ciLCJ0b19zZXJ2ZXJfciIsImVycm9yIiwidHJhbnNwb3J0IiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImNvbm5lY3Rpb24iLCJleG4iLCJpbXBsZW1lbnRhdGlvbnMkMCIsImV4biQxIiwiZXhuJDAiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQiLCJjbGllbnRfZXhuIiwiY3JlYXRlX2Zyb21fdXJpIiwiZXF1YWwkMCIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0Iiwic2V4cF9vZl90JDEiLCJ4XzAwNyIsImNyZWF0ZV9mcm9tX3VyaV9vcHRpb24iLCJtZXRob2Rfc3RyaW5nJDAiLCJyZXF1ZXN0Iiwib25fcHJvZ3Jlc3MiLCJvbl91cGxvYWRfcHJvZ3Jlc3MiLCJ1cmwiLCJyZXNwb25zZV90eXBlIiwibWV0aG9kX3dpdGhfYXJncyIsImhlYWRlcnMiLCJhcmdzIiwibWV0aG9kX3N0cmluZyQxIiwidXJsJDAiLCJ2YWx1ZSIsInJlc3BvbnNlIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJjb250ZW50IiwiZ2V0X2hlYWRlciIsImJvZHkiLCJib2R5JDAiLCJnZXQiLCJhcmd1bWVudHMkMCIsInJlc3AiLCJwb3N0IiwicmVhZHlfc3RhdGVfY2hhbmdlIiwiY29tcGxldGUiLCJzbGVlcCIsImQiLCJ5aWVsZCQwIiwiZXh0cmFjdF9qc19lcnJvciIsIm1zZyIsImpzX2Vycm9yIiwibWVzc2FnZXMiLCJqc19lcnJvciQwIiwicHJldHR5X3ByaW50X2V4Y2VwdGlvbiIsImVyciIsImNsYXNzaWZpY2F0aW9uIiwiZXJyJDIiLCJlcnIkMCIsImV4biQyIiwiaGQiLCJtZXNzYWdlIiwic3RhdGUiLCJ0aW1lb3V0cyIsInJ1bl9hZnRlciIsImYiLCJtcyIsImxvb3AiLCJ0IiwibmV4dF93YWtldXAiLCJuZXh0Iiwibm93IiwiZF9tcyQwIiwiZF9tcyIsImF0IiwicnVuX3RpbWVvdXQiLCJydW4iLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0X2NoaWxkX2luZGV4JDAiLCJyaWdodCIsImxlZnRfaXNfbm9uZSIsInJpZ2h0X2lzX25vbmUiLCJjcmVhdGVfZXhuIiwibnVtX2xlYXZlcyIsInJlZHVjZSIsIm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCIsInZhbGlkYXRlX2luZGV4IiwibGVuZ3RoIiwic2V0X2V4biIsImNoaWxkX2luZGV4IiwicGFyZW50IiwiZ2V0X2V4biIsInhfMDAyIiwiY29tcHV0ZV9leG4iLCJzZXhwX29mX3QiLCJzdGVwcyIsInIiLCJpbml0Iiwic2V4cF9vZl90JDAiLCJvZl9hXzAwMSIsInN0ZXBzXzAwNSIsImluaXRfMDAzIiwiYXJnXzAwNiIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidmFsdWUiLCJ0JDAiLCJhdCIsInN0ZXBzJDEiLCJpbml0JDEiLCJzdGVwcyQwIiwiaW5pdCQwIiwidCIsImNvbnN0YW50IiwiY3JlYXRlX2V4biIsInRpbWUyIiwidGltZTEiLCJ4XzAxMSIsImNyZWF0ZV9mcm9tX3NlcXVlbmNlIiwiY3JlYXRlIiwibGVuIiwibGVuZ3RoIiwidCIsInNldCIsInNldF9leG4iLCJpIiwieCIsImdldCIsImlzX3NvbWUiLCJpc19ub25lIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpdGVyIiwiZiIsInYiLCJpdGVyaSIsImJsaXQiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNyZWF0ZSIsImluZGV4IiwiZ2V0IiwidCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJzZXQiLCJibG9jayIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJrZXlzX3dpdGhfdW51c2VkX2RhdGFfMDA2IiwiZW50cnlfYnlfa2V5XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYXJnXzAwNSIsImJuZHNfMDAzJDEiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJjbGVhbnVwIiwicmVwbGFjZSIsImFkZF9leG4iLCJ4XzAxMCIsImZpbmQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsInYiLCJzZXhwX29mX3QiLCJjb25jYXQiLCJ0YWciLCJhcmcwXzAwMSIsImFyZzFfMDAyIiwic2V4cF9vZl9hIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsInJlYWxsb2MiLCJ0IiwibGVuIiwiYSIsIm5ld190IiwicmVhbGxvYyQwIiwicmVzMF8wMDUiLCJyZXMwXzAwNyIsImludmFyaWFudCIsInhfMDA5IiwiY3JlYXRlIiwiZiIsIm9mX2NvbXBhcmUiLCJvZl9lcXVhbCIsInBvbHlfZXF1YWwiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwicmVyYWlzZV93aXRoX21lc3NhZ2UiLCJtc2ciLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsInhfMDExIiwiY2hlY2siLCJ3YXRjaF9mdW4iLCJ0JDAiLCJzZXRfYXRfZnVuIiwidmFsdWVfZnVuIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsInhfMDI4IiwiZm9sZF92YWx1ZV9mdW4iLCJnb3QiLCJleHBlY3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInVwZGF0ZSQwIiwiZl9pbnZlcnNlIiwidXBkYXRlIiwiY29tcHV0ZSIsInJlc3VsdCIsImZvcmNlX2Z1bGxfY29tcHV0ZSIsImNoaWxkX2NoYW5nZWQiLCJ4XzAzMSIsImNoaWxkX2luZGV4Iiwib2xkX3ZhbHVlX29wdCIsImNoaWxkX2F0X2luZGV4IiwieF8wMDEiLCJudWxsJDAiLCJhbGFybV92YWx1ZSIsInNldF9hbGFybV92YWx1ZSIsImFsYXJtIiwic2V0X2FsYXJtIiwiYWxhcm1fdmFsdWUkMCIsImFsYXJtJDAiLCJtYWluXzAwMyIsImNoaWxkXzAwNSIsImV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fYyIsInZhbHVlXzAwOSIsInVwY29taW5nX3N0ZXBzXzAxMSIsImFsYXJtXzAxNyIsImFsYXJtX3ZhbHVlXzAxOSIsImNsb2NrXzAyMSIsImFyZ18wMTgiLCJhcmdfMDEyIiwiYXJnMV8wMTQiLCJyZXMxXzAxNiIsImJuZHNfMDAyJDMiLCJibmRzXzAwMiQ0IiwiYm5kc18wMDIkNSIsImJuZHNfMDAyJDYiLCJ4XzAyMyIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsImFkdmFuY2UiLCJ0byIsInN0ZXBzJDAiLCJhMSQwIiwiYTEiLCJzdGVwcyIsInN0ZXBzMiIsImEyIiwic3RlcF9hdCIsIm9mX2FjY18wMDIiLCJjaGlsZHJlbl8wMDgiLCJpbml0XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInhfMDEwIiwiYXRfMDA0IiwibWFpbl8wMDIiLCJhbGFybV8wMDYiLCJjbG9ja18wMDgiLCJibmRzXzAwMSQxIiwiYm5kc18wMDEkMiIsImludGVydmFsIiwiaW50ZXJ2YWwkMCIsImludGVydmFsXzAwNiIsImJhc2VfMDA0IiwiYWxhcm1fMDA4IiwiY2xvY2tfMDEwIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJpbnRlcnZhbF9mdW4iLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJzZXRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwicmhzX3Njb3BlIiwic2V0X3Joc19zY29wZSIsImxoc19jaGFuZ2UiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMkMCIsInJoc19zY29wZSQwIiwibGhzX2NoYW5nZSQwIiwib2ZfYl8wMDIiLCJtYWluXzAwNCIsImxoc19jaGFuZ2VfMDEwIiwibGhzXzAwOCIsInJoc18wMTIiLCJyaHNfc2NvcGVfMDE0IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXzAxNiIsImJuZHNfMDAzJDIiLCJibmRzXzAwMyQzIiwiYm5kc18wMDMkNCIsImJuZHNfMDAzJDUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsInhfMDE4IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzX2Z1biIsIm5vZGUiLCJyaHNfc2NvcGVfZnVuIiwibGhzX2NoYW5nZV9mdW4iLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsInhfMDE1IiwiY3VycmVudF9icmFuY2hfZnVuIiwidGVzdF9jaGFuZ2VfZnVuIiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsInhfMDEzIiwiYmVmb3JlX2Z1biIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiaXRlcmlfY2hpbGRyZW4iLCJyaHMiLCJpJDAiLCJ0ZXN0IiwibGhzIiwicmhzJDAiLCJub2RlMCIsImNoaWxkJDAiLCJjaGlsZHJlbiQxIiwiaSQxIiwibm9kZTEiLCJub2RlMCQwIiwibm9kZTIiLCJub2RlMSQwIiwibm9kZTAkMSIsIm5vZGUzIiwibm9kZTIkMCIsIm5vZGUxJDEiLCJub2RlMCQyIiwibm9kZTQiLCJub2RlMyQwIiwibm9kZTIkMSIsIm5vZGUxJDIiLCJub2RlMCQzIiwibm9kZTUiLCJub2RlNCQwIiwibm9kZTMkMSIsIm5vZGUyJDIiLCJub2RlMSQzIiwibm9kZTAkNCIsIm5vZGU2Iiwibm9kZTUkMCIsIm5vZGU0JDEiLCJub2RlMyQyIiwibm9kZTIkMyIsIm5vZGUxJDQiLCJub2RlMCQ1Iiwibm9kZTciLCJub2RlNiQwIiwibm9kZTUkMSIsIm5vZGU0JDIiLCJub2RlMyQzIiwibm9kZTIkNCIsIm5vZGUxJDUiLCJub2RlMCQ2Iiwibm9kZTgiLCJub2RlNyQwIiwibm9kZTYkMSIsIm5vZGU1JDIiLCJub2RlNCQzIiwibm9kZTMkNCIsIm5vZGUyJDUiLCJub2RlMSQ2Iiwibm9kZTAkNyIsIm5vZGU5Iiwibm9kZTgkMCIsIm5vZGU3JDEiLCJub2RlNiQyIiwibm9kZTUkMyIsIm5vZGU0JDQiLCJub2RlMyQ1Iiwibm9kZTIkNiIsIm5vZGUxJDciLCJub2RlMCQ4Iiwibm9kZTEwIiwibm9kZTkkMCIsIm5vZGU4JDEiLCJub2RlNyQyIiwibm9kZTYkMyIsIm5vZGU1JDQiLCJub2RlNCQ1Iiwibm9kZTMkNiIsIm5vZGUyJDciLCJub2RlMSQ4Iiwibm9kZTAkOSIsIm5vZGUxMSIsIm5vZGUxMCQwIiwibm9kZTkkMSIsIm5vZGU4JDIiLCJub2RlNyQzIiwibm9kZTYkNCIsIm5vZGU1JDUiLCJub2RlNCQ2Iiwibm9kZTMkNyIsIm5vZGUyJDgiLCJub2RlMSQ5Iiwibm9kZTAkMTAiLCJub2RlMTIiLCJub2RlMTEkMCIsIm5vZGUxMCQxIiwibm9kZTkkMiIsIm5vZGU4JDMiLCJub2RlNyQ0Iiwibm9kZTYkNSIsIm5vZGU1JDYiLCJub2RlNCQ3Iiwibm9kZTMkOCIsIm5vZGUyJDkiLCJub2RlMSQxMCIsIm5vZGUwJDExIiwibm9kZTEzIiwibm9kZTEyJDAiLCJub2RlMTEkMSIsIm5vZGUxMCQyIiwibm9kZTkkMyIsIm5vZGU4JDQiLCJub2RlNyQ1Iiwibm9kZTYkNiIsIm5vZGU1JDciLCJub2RlNCQ4Iiwibm9kZTMkOSIsIm5vZGUyJDEwIiwibm9kZTEkMTEiLCJub2RlMCQxMiIsIm5vZGUxNCIsIm5vZGUxMyQwIiwibm9kZTEyJDEiLCJub2RlMTEkMiIsIm5vZGUxMCQzIiwibm9kZTkkNCIsIm5vZGU4JDUiLCJub2RlNyQ2Iiwibm9kZTYkNyIsIm5vZGU1JDgiLCJub2RlNCQ5Iiwibm9kZTMkMTAiLCJub2RlMiQxMSIsIm5vZGUxJDEyIiwibm9kZTAkMTMiLCJzbG93X2dldF9jaGlsZCIsImluZGV4IiwiYXJnMV8zMDYiLCJhcmcwXzMwNSIsInJlczBfMzA3IiwicmVzMV8zMDgiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW4iLCJzZXRfbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2EiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4iLCJzZXRfbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2EiLCJvYnNlcnZlcnMiLCJzZXRfb2JzZXJ2ZXJzIiwic2V0X29sZF92YWx1ZV9vcHQiLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWEiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsInNldF9oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfcHJldl9pbl9yZWNvbXB1dGVfaGVhcCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCIsInNldF9oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0IiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJzZXRfbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJjcmVhdGVkX2luIiwic2V0X2NyZWF0ZWRfaW4iLCJwYXJlbnQwIiwic2V0X3BhcmVudDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQiLCJzZXRfcGFyZW50MV9hbmRfYmV5b25kIiwibnVtX3BhcmVudHMiLCJzZXRfbnVtX3BhcmVudHMiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzIiwic2V0X251bV9vbl91cGRhdGVfaGFuZGxlcnMiLCJjaGFuZ2VkX2F0Iiwic2V0X2NoYW5nZWRfYXQiLCJjdXRvZmYiLCJzZXRfY3V0b2ZmIiwia2luZCIsInNldF9raW5kIiwidmFsdWVfb3B0Iiwic2V0X3ZhbHVlX29wdCIsInJlY29tcHV0ZWRfYXQiLCJzZXRfcmVjb21wdXRlZF9hdCIsImlkIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luJDAiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4kMCIsIm9ic2VydmVycyQwIiwib2xkX3ZhbHVlX29wdCQwIiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwJDAiLCJoZWlnaHQkMCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlJDAiLCJjcmVhdGVkX2luJDAiLCJwYXJlbnQwJDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQkMCIsIm51bV9wYXJlbnRzJDAiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJjaGFuZ2VkX2F0JDAiLCJjdXRvZmYkMCIsImtpbmQkMCIsInZhbHVlX29wdCQwIiwicmVjb21wdXRlZF9hdCQwIiwiaWQkMCIsInN0YXRlXzAwNSIsImlkXzAwMyIsInJlY29tcHV0ZWRfYXRfMDA3IiwidmFsdWVfb3B0XzAwOSIsImtpbmRfMDExIiwiY3V0b2ZmXzAxMyIsImNoYW5nZWRfYXRfMDE1IiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc18wMTciLCJudW1fcGFyZW50c18wMTkiLCJwYXJlbnQxX2FuZF9iZXlvbmRfMDIxIiwicGFyZW50MF8wMjMiLCJjcmVhdGVkX2luXzAyNSIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXzAyNyIsImhlaWdodF8wMjkiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBfMDMxIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF8wMzMiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwXzAzNSIsImhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXyIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8wMyIsIm9sZF92YWx1ZV9vcHRfMDQxIiwib2JzZXJ2ZXJzXzA0MyIsImlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aSIsIm9uX3VwZGF0ZV9oYW5kbGVyc18wNDciLCJmb3JjZV9uZWNlc3NhcnlfMDUzIiwidXNlcl9pbmZvXzA1NSIsImNyZWF0aW9uX2JhY2t0cmFjZV8wNTciLCJhcmdfMDU4IiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImFyZ18wNDgiLCJhcmdfMDQ2IiwiYXJnXzA0NCIsImFyZ18wNDIiLCJibmRzXzAwMiQ3IiwiYXJnXzA0MCIsImJuZHNfMDAyJDgiLCJhcmdfMDM4IiwiYm5kc18wMDIkOSIsImFyZ18wMzYiLCJibmRzXzAwMiQxMCIsImFyZ18wMzQiLCJibmRzXzAwMiQxMSIsImFyZ18wMzIiLCJibmRzXzAwMiQxMiIsImFyZ18wMzAiLCJibmRzXzAwMiQxMyIsImFyZ18wMjgiLCJibmRzXzAwMiQxNCIsImJuZHNfMDAyJDE1IiwiYm5kc18wMDIkMTYiLCJibmRzXzAwMiQxNyIsImJuZHNfMDAyJDE4IiwiYm5kc18wMDIkMTkiLCJibmRzXzAwMiQyMCIsImJuZHNfMDAyJDIxIiwiYm5kc18wMDIkMjIiLCJibmRzXzAwMiQyMyIsImJuZHNfMDAyJDI0IiwiYm5kc18wMDIkMjUiLCJibmRzXzAwMiQyNiIsInNhbWUiLCJ1c2VyX2luZm8iLCJvdGhlciIsInNldF91c2VyX2luZm8iLCJhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IiwiYXR0cnMiLCJlZGdlX2lzX3N0YWxlIiwicGFyZW50IiwiaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpIiwiaXNfc3RhbGUiLCJmb3JjZV9zdGFsZSIsImZvcmNlX3N0YWxlJDAiLCJuZWVkc190b19iZV9jb21wdXRlZCIsImlzX2luX3JlY29tcHV0ZV9oZWFwIiwiaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsImdldF9wYXJlbnQiLCJpdGVyaV9wYXJlbnRzIiwiaGFzX2NoaWxkIiwiaGFzIiwiaGFzX3BhcmVudCIsInBhcmVudCQwIiwic2hvdWxkX2JlX2ludmFsaWRhdGVkIiwibGhzJDAiLCJmb2xkX29ic2VydmVycyIsImFjIiwib2JzZXJ2ZXIiLCJ4XzA1OSIsInQxJDAiLCJhXzA2MCIsImJfMDYxIiwiYV8wNzAiLCJiXzA3MSIsInBhcmVudF9pbmRleCIsIngiLCJhXzA2OCIsImJfMDY5Iiwib2JzZXJ2ZXJzX2Z1biIsInN0YXRlIiwib2JzZXJ2aW5nIiwib2xkX3ZhbHVlX29wdF9mdW4iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfZnUiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldiIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJoZWlnaHRfZnVuIiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGVfZnVuIiwiY3JlYXRlZF9pbl9mdW4iLCJwYXJlbnQwX2Z1biIsImFfMDY2IiwiYl8wNjciLCJwYXJlbnQxX2FuZF9iZXlvbmRfZnVuIiwiYV8wNjQiLCJiXzA2NSIsIm51bV9wYXJlbnRzX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVycyIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwiZXRhIiwiYV8wNjIiLCJiXzA2MyIsImNoYW5nZWRfYXRfZnVuIiwiY3V0b2ZmX2Z1biIsImtpbmRfZnVuIiwidmFsdWVfb3B0X2Z1biIsInJlY29tcHV0ZWRfYXRfZnVuIiwiaWRfZnVuIiwidW5zYWZlX3ZhbHVlIiwidmFsdWVfZXhuIiwieF8wNzIiLCJnZXRfY3V0b2ZmIiwic2V0X2N1dG9mZiQwIiwiaXNfY29uc3QiLCJvbl91cGRhdGUiLCJvbl91cGRhdGVfaGFuZGxlciIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMiLCJyZXN0JDAiLCJvbl91cGRhdGVfaGFuZGxlciQwIiwiciQwIiwiciQxIiwicmVzdCIsInNldF9raW5kJDAiLCJtYXhfbnVtX3BhcmVudHMiLCJzZXRfcGFyZW50IiwibGluayIsImFkZF9wYXJlbnQiLCJuZXdfbWF4X251bV9wYXJlbnRzIiwibWF4X251bV9jaGlsZHJlbiIsIm5ld19tYXhfbnVtX2NoaWxkcmVuIiwicmVtb3ZlX3BhcmVudCIsImxhc3RfcGFyZW50X2luZGV4Iiwic3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCIsImNoaWxkMSIsImNoaWxkMiIsInQyJDAiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJ4XzAyMCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjIiLCJ4XzAyMSIsIm9uX3VwZGF0ZV9leG4iLCJ4XzAyNCIsInByZXYkMCIsIm5leHQkMCIsInhfMDI1IiwieF8wMDIiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwiZXJyb3Jfc291cmNlXzA3OSIsInNleHBfb2Zfc3RhdHVzIiwiYXJnMV8wMDQiLCJyZXMxXzAwNiIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiIsInNldF9leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdSIsImN1cnJlbnRseV9ydW5uaW5nX25vZGUiLCJzZXRfY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSQwIiwibWFrZV9jcmVhdG9yIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW4kMSIsImFjYyIsIm1hcCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsInJlY29yZCQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV8wMDgiLCJibmRzXzAwNyIsImJuZHNfMDA3JDAiLCJzZXhwX29mX3QkMSIsIm51bV92YXJfc2V0cyIsInNldF9udW1fdmFyX3NldHMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8iLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWQiLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWQiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJzZXRfbnVtX25vZGVzX2ludmFsaWRhdGVkIiwibnVtX25vZGVzX2NyZWF0ZWQiLCJzZXRfbnVtX25vZGVzX2NyZWF0ZWQiLCJudW1fbm9kZXNfY2hhbmdlZCIsInNldF9udW1fbm9kZXNfY2hhbmdlZCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkiLCJzZXRfbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2EiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UiLCJzZXRfa2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmEiLCJ3ZWFrX2hhc2h0YmxzIiwib25seV9pbl9kZWJ1ZyIsInNldF9vbmx5X2luX2RlYnVnIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24iLCJkaXNhbGxvd2VkX29ic2VydmVycyIsIm5ld19vYnNlcnZlcnMiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzIiwiYWxsX29ic2VydmVycyIsInNldF9hbGxfb2JzZXJ2ZXJzIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJzZXRfbnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSIsImFkanVzdF9oZWlnaHRzX2hlYXAiLCJjdXJyZW50X3Njb3BlIiwic2V0X2N1cnJlbnRfc2NvcGUiLCJzdGFiaWxpemF0aW9uX251bSIsInNldF9zdGFiaWxpemF0aW9uX251bSIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCIsInN0YXR1cyIsInNldF9zdGF0dXMiLCJudW1fdmFyX3NldHMkMCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQxIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDIiLCJudW1fbm9kZXNfcmVjb21wdXRlZCQwIiwibnVtX25vZGVzX2ludmFsaWRhdGVkJDAiLCJudW1fbm9kZXNfY3JlYXRlZCQwIiwibnVtX25vZGVzX2NoYW5nZWQkMCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkkMCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5JDAiLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlJDAiLCJ3ZWFrX2hhc2h0YmxzJDAiLCJvbmx5X2luX2RlYnVnJDAiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQwIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uJDAiLCJkaXNhbGxvd2VkX29ic2VydmVycyQwIiwibmV3X29ic2VydmVycyQwIiwiZmluYWxpemVkX29ic2VydmVycyQwIiwiYWxsX29ic2VydmVycyQwIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMkMCIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDAiLCJhZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJyZWNvbXB1dGVfaGVhcCQwIiwiY3VycmVudF9zY29wZSQwIiwic3RhYmlsaXphdGlvbl9udW0kMCIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQwIiwic3RhdHVzJDAiLCJtYWtlX2NyZWF0b3IkMCIsInN0YXR1c19mdW4iLCJzdGFiaWxpemF0aW9uX251bV9mdW4iLCJjdXJyZW50X3Njb3BlX2Z1biIsInJlY29tcHV0ZV9oZWFwX2Z1biIsImFkanVzdF9oZWlnaHRzX2hlYXBfZnVuIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZnVuIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZnVuIiwiYWxsX29ic2VydmVyc19mdW4iLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2Z1biIsIm5ld19vYnNlcnZlcnNfZnVuIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZnVuIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2Z1biIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uX2Z1biIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwib25seV9pbl9kZWJ1Z19mdW4iLCJ3ZWFrX2hhc2h0YmxzX2Z1biIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZiIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2Z1biIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnlfZiIsIm51bV9ub2Rlc19jaGFuZ2VkX2Z1biIsIm51bV9ub2Rlc19jcmVhdGVkX2Z1biIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZF9mdW4iLCJudW1fbm9kZXNfcmVjb21wdXRlZF9mdW4iLCJudW1fdmFyX3NldHNfZnVuIiwic3RhdHVzX2dlbiIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQxIiwiY29tcGlsZV9hY2MkMiIsInN0YWJpbGl6YXRpb25fbnVtX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJjdXJyZW50X3Njb3BlX2dlbiIsImNvbXBpbGVfYWNjJDQiLCJyZWNvbXB1dGVfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ1IiwiYWRqdXN0X2hlaWdodHNfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ2IiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZ2VuIiwiY29tcGlsZV9hY2MkNyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJhbGxfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDkiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEwIiwibmV3X29ic2VydmVyc19nZW4iLCJjb21waWxlX2FjYyQxMSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwib25seV9pbl9kZWJ1Z19nZW4iLCJjb21waWxlX2FjYyQxNiIsIndlYWtfaGFzaHRibHNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlX2ciLCJjb21waWxlX2FjYyQxOCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2dlbiIsImNvbXBpbGVfYWNjJDE5IiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9nIiwiY29tcGlsZV9hY2MkMjAiLCJudW1fbm9kZXNfY2hhbmdlZF9nZW4iLCJjb21waWxlX2FjYyQyMSIsIm51bV9ub2Rlc19jcmVhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIzIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjQiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMyIsImNvbXBpbGVfYWNjJDI1IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDQiLCJjb21waWxlX2FjYyQyNiIsIm51bV92YXJfc2V0c19nZW4iLCJjcmVhdGUkMSIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQyIiwic3RhdHVzXzAxNSIsInN0YWJpbGl6YXRpb25fbnVtXzAxOSIsImN1cnJlbnRfc2NvcGVfMDIxIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfMDI3IiwiYWRqdXN0X2hlaWdodHNfaGVhcF8wMjUiLCJyZWNvbXB1dGVfaGVhcF8wMjMiLCJudW1fYWN0aXZlX29ic2VydmVyc18wMjkiLCJhbGxfb2JzZXJ2ZXJzXzAzMSIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfMDQzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fMDQxIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXzAzOSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzXzAzNyIsIm5ld19vYnNlcnZlcnNfMDM1IiwiZmluYWxpemVkX29ic2VydmVyc18wMzMiLCJvbmx5X2luX2RlYnVnXzA0NSIsIndlYWtfaGFzaHRibHNfMDQ3Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV8wIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfMDUxIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV8wIiwibnVtX25vZGVzX2NoYW5nZWRfMDU1IiwibnVtX25vZGVzX2NyZWF0ZWRfMDU3IiwibnVtX25vZGVzX2ludmFsaWRhdGVkXzA1OSIsIm51bV9ub2Rlc19yZWNvbXB1dGVkXzA2MSIsIm51bV92YXJfc2V0c18wNjciLCJhcmdfMDY4IiwiYm5kc18wMTQiLCJhcmdfMDY2IiwiYm5kc18wMTQkMCIsImFyZ18wNjQiLCJibmRzXzAxNCQxIiwiYXJnXzA2MiIsImJuZHNfMDE0JDIiLCJhcmdfMDYwIiwiYm5kc18wMTQkMyIsImJuZHNfMDE0JDQiLCJibmRzXzAxNCQ1IiwiYm5kc18wMTQkNiIsImJuZHNfMDE0JDciLCJibmRzXzAxNCQ4IiwiYm5kc18wMTQkOSIsImJuZHNfMDE0JDEwIiwiYm5kc18wMTQkMTEiLCJibmRzXzAxNCQxMiIsImJuZHNfMDE0JDEzIiwiYm5kc18wMTQkMTQiLCJibmRzXzAxNCQxNSIsImJuZHNfMDE0JDE2IiwiYm5kc18wMTQkMTciLCJibmRzXzAxNCQxOCIsImJuZHNfMDE0JDE5IiwiYm5kc18wMTQkMjAiLCJibmRzXzAxNCQyMSIsImJuZHNfMDE0JDIyIiwiYm5kc18wMTQkMjMiLCJibmRzXzAxNCQyNCIsImJuZHNfMDE0JDI1IiwiZmlyZWRfYWxhcm1fdmFsdWVzIiwic2V0X2ZpcmVkX2FsYXJtX3ZhbHVlcyIsImhhbmRsZV9maXJlZCIsInRpbWluZ193aGVlbCIsImZpcmVkX2FsYXJtX3ZhbHVlcyQwIiwiaGFuZGxlX2ZpcmVkJDAiLCJub3ckMCIsInRpbWluZ193aGVlbCQwIiwibWFrZV9jcmVhdG9yJDEiLCJ0aW1pbmdfd2hlZWxfZnVuIiwibm93X2Z1biIsImhhbmRsZV9maXJlZF9mdW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZnVuIiwidGltaW5nX3doZWVsX2dlbiIsIm5vd19nZW4iLCJoYW5kbGVfZmlyZWRfZ2VuIiwiZmlyZWRfYWxhcm1fdmFsdWVzX2dlbiIsImNyZWF0ZSQyIiwibWFwJDMiLCJpdGVyJDMiLCJmb2xkJDMiLCJtYXBfcG9seSQxIiwiZm9yX2FsbCQzIiwiZXhpc3RzJDMiLCJ0b19saXN0JDMiLCJpdGVyJDQiLCJmb2xkJDQiLCJmb3JfYWxsJDQiLCJleGlzdHMkNCIsInRvX2xpc3QkNCIsIm1hcCQ0Iiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQxIiwic2V4cF9vZl90JDMiLCJub3dfMDcyIiwidGltaW5nX3doZWVsXzA3MCIsImZpcmVkX2FsYXJtX3ZhbHVlc18wNzYiLCJhcmdfMDc3IiwiYm5kc18wNjkiLCJhcmdfMDc1IiwiYm5kc18wNjkkMCIsImFyZ18wNzMiLCJibmRzXzA2OSQxIiwiYXJnXzA3MSIsImJuZHNfMDY5JDIiLCJpbnZhcmlhbnQkMSIsIm5vdyQxIiwiY2xvY2siLCJ0aW1pbmdfd2hlZWxfbGVuZ3RoIiwibnVtX3N0YWJpbGl6ZXMiLCJpdGVyX29ic2VydmVycyIsImRpcmVjdGx5X29ic2VydmVkIiwiaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyIsInRfb2Zfc2V4cCIsInhfMDg1Iiwic2V4cF8wODQiLCJhcmcxXzA4MSIsImFyZzBfMDgwIiwicmVzMF8wODIiLCJyZXMxXzA4MyIsInBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhciIsInNleHBfb2ZfdCQ0IiwibWF4X251bV9wYXJlbnRzXzA4NyIsImFyZ18wOTAiLCJhcmcxXzA5MiIsImFyZzBfMDkxIiwicmVzMF8wOTMiLCJyZXMxXzA5NCIsImJuZHNfMDg2IiwiYXJnXzA4OCIsImJuZHNfMDg2JDAiLCJzdGF0cyIsIm51bV9uZWNlc3Nhcnlfbm9kZXMiLCJtYXhfbnVtX3BhcmVudHMkMCIsIm51bV9ub2Rlc19ieV9udW1fcGFyZW50cyIsIm51bV9ub2RlcyIsImFtX3N0YWJpbGl6aW5nIiwicmFpc2VkX2V4biIsImludmFyaWFudCQyIiwiaW50ZXJuYWxfb2JzZXJ2ZXIiLCJ4XzA5NSIsInBhY2tlZCIsImVuc3VyZV9ub3Rfc3RhYmlsaXppbmciLCJhbGxvd19pbl91cGRhdGVfaGFuZGxlciIsImJhY2t0cmFjZSQwIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24kMSIsInJlbW92ZV9jaGlsZHJlbiIsInJlbW92ZV9jaGlsZCIsImNoZWNrX2lmX3VubmVjZXNzYXJ5IiwiYmVjYW1lX3VubmVjZXNzYXJ5IiwicCIsInUiLCJyZW1vdmVfYWxhcm0iLCJpbnZhbGlkYXRlX25vZGUiLCJpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmgiLCJyZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiZmlyc3Rfbm9kZV9vbl9yaHMiLCJuZXdfc2NvcGUiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSQxIiwiZXhwZXJ0IiwiYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oIiwid2FzX25lY2Vzc2FyeSIsInhfMDk2IiwiYmVjYW1lX25lY2Vzc2FyeSIsInJ1bl93aXRoX3Njb3BlIiwic2NvcGUiLCJzYXZlZCIsImV4biQwIiwid2l0aGluX3Njb3BlIiwiY2hhbmdlX2NoaWxkIiwib2xkX2NoaWxkIiwibmV3X2NoaWxkIiwib2xkX2NoaWxkJDAiLCJhZGRfYWxhcm0iLCJyZWNvbXB1dGUiLCJtYXliZV9jaGFuZ2VfdmFsdWUiLCJvbGRfcmhzIiwib2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsImNvcHlfY2hpbGQiLCJvbmx5X2ZyZWV6ZV93aGVuIiwiZWxzZSQwIiwidGhlbiIsImRlc2lyZWRfYnJhbmNoIiwibWFpbiQxIiwib2xkX3JocyQwIiwicmhzJDEiLCJyaHMkMiIsIm4xIiwiY2xvY2skMCIsImF0JDAiLCJjbG9jayQxIiwiY2hpbGQkMSIsInN0ZXBfZnVuY3Rpb24iLCJzdGVwX2Z1bmN0aW9uX3ZhbHVlIiwiYXQkMSIsIm4yIiwibjEkMCIsIm4zIiwibjIkMCIsIm4xJDEiLCJmJDIiLCJuNCIsIm4zJDAiLCJuMiQxIiwibjEkMiIsImYkMyIsIm41IiwibjQkMCIsIm4zJDEiLCJuMiQyIiwibjEkMyIsImYkNCIsIm42IiwibjUkMCIsIm40JDEiLCJuMyQyIiwibjIkMyIsIm4xJDQiLCJmJDUiLCJuNyIsIm42JDAiLCJuNSQxIiwibjQkMiIsIm4zJDMiLCJuMiQ0IiwibjEkNSIsImYkNiIsIm44IiwibjckMCIsIm42JDEiLCJuNSQyIiwibjQkMyIsIm4zJDQiLCJuMiQ1IiwibjEkNiIsImYkNyIsIm45IiwibjgkMCIsIm43JDEiLCJuNiQyIiwibjUkMyIsIm40JDQiLCJuMyQ1IiwibjIkNiIsIm4xJDciLCJmJDgiLCJuMTAiLCJuOSQwIiwibjgkMSIsIm43JDIiLCJuNiQzIiwibjUkNCIsIm40JDUiLCJuMyQ2IiwibjIkNyIsIm4xJDgiLCJmJDkiLCJuMTEiLCJuMTAkMCIsIm45JDEiLCJuOCQyIiwibjckMyIsIm42JDQiLCJuNSQ1IiwibjQkNiIsIm4zJDciLCJuMiQ4IiwibjEkOSIsImYkMTAiLCJuMTIiLCJuMTEkMCIsIm4xMCQxIiwibjkkMiIsIm44JDMiLCJuNyQ0IiwibjYkNSIsIm41JDYiLCJuNCQ3IiwibjMkOCIsIm4yJDkiLCJuMSQxMCIsImYkMTEiLCJuMTMiLCJuMTIkMCIsIm4xMSQxIiwibjEwJDIiLCJuOSQzIiwibjgkNCIsIm43JDUiLCJuNiQ2IiwibjUkNyIsIm40JDgiLCJuMyQ5IiwibjIkMTAiLCJuMSQxMSIsImYkMTIiLCJuMTQiLCJuMTMkMCIsIm4xMiQxIiwibjExJDIiLCJuMTAkMyIsIm45JDQiLCJuOCQ1IiwibjckNiIsIm42JDciLCJuNSQ4IiwibjQkOSIsIm4zJDEwIiwibjIkMTEiLCJuMSQxMiIsImYkMTMiLCJuMTUiLCJuMTQkMCIsIm4xMyQxIiwibjEyJDIiLCJuMTEkMyIsIm4xMCQ0IiwibjkkNSIsIm44JDYiLCJuNyQ3IiwibjYkOCIsIm41JDkiLCJuNCQxMCIsIm4zJDExIiwibjIkMTIiLCJuMSQxMyIsImYkMTQiLCJjaGlsZF9pbmRleCQwIiwidSQwIiwiY2FuX3JlY29tcHV0ZV9ub3ciLCJiIiwiaiIsInJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbiIsInhfMDk3IiwidW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSIsImRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMiLCJvYnNlcnZlcl9maW5hbGl6ZXIiLCJjcmVhdGVfb2JzZXJ2ZXIiLCJzaG91bGRfZmluYWxpemUiLCJhZGRfbmV3X29ic2VydmVycyIsIm9sZF9hbGxfb2JzZXJ2ZXJzIiwib2xkX29ic2VydmVycyIsIm9ic2VydmVyX3ZhbHVlX2V4biIsInhfMDk4Iiwib2JzZXJ2ZXJfdmFsdWUiLCJub2RlX29uX3VwZGF0ZSIsIm9ic2VydmVyX29uX3VwZGF0ZV9leG4iLCJzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyIsInNldF92YXIiLCJyZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMiLCJ3ZWFrX2hhc2h0YmwiLCJzdGFiaWxpemVfc3RhcnQiLCJzdGFiaWxpemVfZW5kIiwibWF0Y2gkMCIsIm5vZGVfdXBkYXRlJDAiLCJyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiIsInJhaXNlZCIsInN0YWJpbGl6ZSIsInNleHBfb2ZfdCQ1IiwiZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIiwiY3JlYXRlX25vZGVfaW4iLCJjcmVhdGVfbm9kZSIsImNyZWF0ZV9ub2RlX3RvcCIsImNyZWF0ZV92YXIiLCJ1c2VfY3VycmVudF9zY29wZSIsImNvbnN0JDAiLCJtYXAkNSIsIm1hcDIiLCJib3RoIiwibWFwMyIsIm1hcDQiLCJtYXA1IiwibWFwNiIsIm1hcDciLCJtYXA4IiwibWFwOSIsIm1hcDEwIiwibWFwMTEiLCJtYXAxMiIsIm1hcDEzIiwibWFwMTQiLCJtYXAxNSIsInByZXNlcnZlX2N1dG9mZiIsImlucHV0Iiwib3V0cHV0IiwiZGVwZW5kX29uIiwibmVjZXNzYXJ5X2lmX2FsaXZlIiwiYmluZDIiLCJ2MSIsInYyIiwiYmluZDMiLCJ2MyIsImJpbmQ0IiwidjQiLCJpZiQwIiwibGF6eV9mcm9tX2Z1biIsImRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpeiIsIm1lbW9pemVfZnVuX2J5X2tleSIsImhhc2hhYmxlIiwicHJvamVjdF9rZXkiLCJpbml0aWFsX3NpemUiLCJ0YWJsZSIsImtleSIsImIkMCIsImFsbCIsIm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCIsIm51bV9pbnZhbGlkIiwiYWNjdW0iLCJ4JDAiLCJmX2ludmVyc2UkMCIsImF0X2xlYXN0X2tfb2YiLCJib29sX3RvX2ludCIsIm51bV90cnVlIiwiZXhpc3RzJDUiLCJmb3JfYWxsJDUiLCJzdW0iLCJ6ZXJvIiwic3ViIiwib3B0X3N1bSIsInN1bV9pbnQiLCJzdW1fZmxvYXQiLCJzZXRfZnJlZXplIiwidGltZSIsImFmdGVyIiwic3BhbiIsIm5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IiwiYmFzZSIsInZhbHVlX2F0IiwiaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiIsImFkdmFuY2VfY2xvY2siLCJtYWluJDIiLCJjcmVhdGVfY2xvY2siLCJ0aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQiLCJjcmVhdGUkMyIsIkNvbmZpZyIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5IiwiZXhwZXJ0X2tpbmRfb2Zfbm9kZSIsInhfMDk5IiwiY3JlYXRlJDQiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biIsImN1cnJlbnQiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8iLCJ4XzEwMSIsInhfMTAwIiwiYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfJDAiLCJ4XzEwMyIsInhfMTAyIiwibWFrZV9zdGFsZSQwIiwiZV9vcHQiLCJpbnZhbGlkYXRlIiwiYWRkX2RlcGVuZGVuY3kiLCJkZXAiLCJyZW1vdmVfZGVwZW5kZW5jeSIsImVkZ2UiLCJlZGdlX2luZGV4IiwibGFzdF9lZGdlIiwibGFzdF9lZGdlX2luZGV4Iiwib25fY2hhbmdlIiwicmVkdWNlIiwicmVkdWNlciIsImxldmVsX2JpdHMiLCJjcmVhdGVfaW50ZXJuYWwiLCJkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCIsInNleHBfb2Zfc3RhdGVfd2l0bmVzcyIsIndpdGhpbiIsInBhY2siLCJyZXR1cm4kMCIsIm1hcDIkMCIsIm1hcDMkMCIsIm1hcDQkMCIsIm1hcDUkMCIsIm1hcDYkMCIsIm1hcDckMCIsIm1hcDgkMCIsIm1hcDkkMCIsIm1hcDEwJDAiLCJtYXAxMSQwIiwibWFwMTIkMCIsIm1hcDEzJDAiLCJtYXAxNCQwIiwibWFwMTUkMCIsImJpbmQyJDAiLCJiaW5kMyQwIiwiYmluZDQkMCIsInN5bWJvbF9tYXAiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDAiLCJsYXp5X2Zyb21fZnVuJDAiLCJtZW1vaXplX2Z1biIsImFycmF5X2ZvbGQkMCIsInJlZHVjZV9iYWxhbmNlZCIsInJlcGxhY2UiLCJ4XzAxNyIsImRpc2FsbG93X2Z1dHVyZV91c2UkMCIsImluY3Jfc3RhdGUkMSIsImFsYXJtX3ByZWNpc2lvbiIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyIsInN0YXJ0JDAiLCJhbGFybV9wcmVjaXNpb24kMCIsIndhdGNoX25vdyIsImFkdmFuY2VfY2xvY2tfYnkiLCJmcmVlemUkMCIsIndoZW4iLCJkZXBlbmRfb24kMCIsInN0YWJpbGl6ZSQwIiwiYW1fc3RhYmlsaXppbmckMCIsIm9mX2FfMDE4IiwiYXJnMF8wMTkiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwibm9kZV92YWx1ZSIsInNleHBfb2ZfdCQ2IiwiYm90aCQwIiwieDEiLCJ4MiIsIm1hcDIkMSIsIm1hcDMkMSIsIm1hcDQkMSIsIm1hcDUkMSIsIm1hcDYkMSIsIm1hcDckMSIsIm1hcDgkMSIsIm1hcDkkMSIsIm1hcDEwJDEiLCJtYXAxMSQxIiwibWFwMTIkMSIsIm1hcDEzJDEiLCJtYXAxNCQxIiwibWFwMTUkMSIsImJpbmQyJDEiLCJiaW5kMyQxIiwiYmluZDQkMSIsIndlYWtfbWVtb2l6ZV9mdW4iLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUkMCIsImNvbnN0JDEiLCJyZXR1cm4kMSIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1IiwiZGVidWciLCJub19pbnN0cnVtZW50YXRpb24iLCJmIiwid2l0aF9vbGQiLCJpbnN0cnVtZW50YXRpb24iLCJpIiwib2xkIiwiYSIsImIiLCJjdXRvZmYiLCJtYXAiLCJkYXRhX2VxdWFsIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiY3VyIiwib2xkJDAiLCJhY2MiLCJjaGFuZ2UiLCJrZXkiLCJuZXckMCIsInVub3JkZXJlZF9mb2xkIiwidXBkYXRlIiwic3BlY2lhbGl6ZWRfaW5pdGlhbCIsImluaXQiLCJhZGQiLCJyZW1vdmUiLCJmaW5hbGl6ZSIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJvbGRfb3V0Iiwib2xkX2luIiwiaW5pdCQwIiwibmV3JDEiLCJpbml0aWFsIiwidW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHMiLCJpbmNyX21hcCIsInVwZGF0ZSQxIiwib3V0ZXJfa2V5IiwiaW5uZXJfa2V5Iiwib2xkX2lubmVyX21hcCIsIm5ld19pbm5lcl9tYXAiLCJkaWZmIiwiZGF0YV9yZW1vdmVkIiwiZGF0YV9hZGRlZCIsImlubmVyX21hcCIsImRhdGEiLCJ3aXRoX2NvbXBhcmF0b3IiLCJnZXRfY29tcGFyYXRvciIsIngiLCJ3aXRoX2NvbXBhcmF0b3IkMCIsIm9mX3NldCIsInNldCIsImNvbXBhcmF0b3IiLCJvbGRfaW5wdXQiLCJvbGRfb3V0cHV0IiwibmV3X2lucHV0IiwibmV3X291dHB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJnZW5lcmljX21hcGkiLCJ3aXRuZXNzIiwiaW5wdXQiLCJyZXMiLCJvdXRwdXRfZGF0YSIsIm1hcGkiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9tYXAiLCJ3aXRoX29sZDIiLCJpMSIsImkyIiwiYTEiLCJhMiIsInVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmEiLCJleHRyYSIsImV4dHJhX2NoYW5nZWQiLCJleHRyYV9lcXVhbCIsIm5ld19leHRyYSIsIm9sZF9leHRyYSIsImFjYyQwIiwibWFwaV9jb3VudCIsIm5ld19rZXkiLCJuIiwicHJldl9rZXkiLCJtYXBfY291bnQiLCJtaW5faGVscGVyIiwibWluIiwibWF4X2hlbHBlciIsIm1heCIsImJvdW5kc19oZWxwZXIiLCJtYXBpX21pbiIsIm1hcGlfbWF4IiwibWFwaV9ib3VuZHMiLCJtYXBfbWluIiwibWFwX21heCIsIm1pbl92YWx1ZSIsIm1heF92YWx1ZSIsIm1hcF9ib3VuZHMiLCJ2YWx1ZV9ib3VuZHMiLCJtZXJnZV9zaGFyZWRfaW1wbCIsIm5ld19sZWZ0X21hcCIsIm5ld19yaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0Iiwib2xkX3JpZ2h0X21hcCIsIm9sZF9sZWZ0X21hcCIsIm9sZF9sZWZ0X21hcCQwIiwibGVmdF9kaWZmIiwicmlnaHRfZGlmZiIsInJpZ2h0X2tleSIsImxlZnRfa2V5IiwiZGlmZl9lbGVtZW50Iiwia2V5JDAiLCJuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJyaWdodF9kYXRhX29wdCQwIiwibGVmdF9kYXRhX29wdCIsInJpZ2h0X2RpZmYkMCIsImxlZnRfZGlmZiQwIiwicmlnaHRfZGF0YV9vcHQkMiIsImxlZnRfZGF0YV9vcHQkMCIsInkiLCJvdXRwdXRfZGF0YV9vcHQiLCJ5JDAiLCJtZXJnZV9ib3RoX3NvbWUiLCJvdXRfZXF1YWwiLCJlbXB0eSIsImxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IiwibGVmdF9kYXRhIiwicmlnaHRfZGF0YSIsInByZXZfb3V0IiwicHJldl9vdXQkMCIsImdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3IiLCJsaHMiLCJpbmNyZW1lbnRhbF9zdGF0ZSIsImVtcHR5X21hcCIsInByZXZfbWFwIiwicHJldl9ub2RlcyIsInJlc3VsdCIsIm9uX2lubmVyX2NoYW5nZSIsIm9wdCIsImxoc19jaGFuZ2UiLCJuZXdfbm9kZXMiLCJub2RlcyIsImNoYW5nZWQiLCJkZXAiLCJub2RlIiwibm9kZXMkMCIsIm5vZGUkMCIsIm5vZGUkMSIsImMiLCJ1c2VyX2Z1bmN0aW9uX2RlcCIsImZpbHRlcl9tYXBpJDAiLCJtYXBpJDAiLCJtYXAkMCIsImZpbHRlcl9tYXAkMCIsIm1lcmdlJDAiLCJtYXAxIiwibWFwMiIsInVuemlwX21hcGkiLCJsZWZ0X3Jlc3VsdF9lcXVhbCIsInJpZ2h0X3Jlc3VsdF9lcXVhbCIsInBhaXIiLCJkYXRhX2VxdWFsJDAiLCJsZWZ0X3Jlc3VsdF9lcXVhbCQwIiwicmlnaHRfcmVzdWx0X2VxdWFsJDAiLCJsZWZ0X2FjYyIsImxlZnRfcmVzdWx0IiwicmlnaHRfYWNjIiwicmlnaHRfcmVzdWx0IiwiaW5wdXRfY2hhbmdlIiwibGVmdCQwIiwibCIsInJpZ2h0JDAiLCJyIiwicmlnaHQiLCJsZWZ0IiwicHJldiIsInByZXZfYiIsInByZXZfYSIsIm5ld19iIiwibmV3X2EiLCJlbGVtZW50IiwidW56aXAiLCJ1bnppcF9tYXBpJDAiLCJyaWdodF9kZXAiLCJsZWZ0X2RlcCIsInJpZ2h0X2luY3IiLCJsZWZ0X2luY3IiLCJsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwIiwicmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAiLCJrZXlzIiwicGFydGl0aW9uX21hcGkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsInBhcnRpdGlvbl9tYXBpJDAiLCJmbGF0dGVuIiwic3RhdGUiLCJpbmNyIiwiam9pbiIsIm1hcF9pbmNyIiwicmVzdWx0X21hcCIsIm9sZF9tYXBfb2ZfaW5jcnMiLCJjdXJyZW50X2RlcGVuZGVuY2llcyIsImFkZF9zdWJub2RlIiwiZGF0YV9ub2RlIiwibmV3X2RlcCIsInJlbW92ZV9zdWJub2RlIiwibWFwX29mX2luY3JzIiwibmV3X2RlcGVuZGVuY3lfbWFwIiwiZGF0YV9ub2RlJDAiLCJzZXBhcmF0ZSIsImlucHV0X21hcCIsIm91dHB1dF9tYXBfbm9kZSIsIm1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwXyIsImlucHV0X21hcF9jaGFuZ2VkIiwiZGVwZW5kZW5jeSIsInByZXZfaW5wdXRfbWFwIiwib3V0cHV0X21hcCIsImV4cGVydF9ub2RlcyIsIm9sZF9ub2RlIiwic3VicmFuZ2UiLCJyYW5nZSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heWJlX2JvdW5kX2VxdWFsIiwiYV8wMDgiLCJiXzAwOSIsImFfMDEwIiwiYl8wMTEiLCJhXzAxMiIsImJfMDEzIiwicmFuZ2VfaXNfZW1wdHkiLCJtaW4kMCIsIm1heCQwIiwibWF4JDEiLCJtaW4kMSIsInJhbmdlX2luY2x1ZGVzIiwicmFuZ2UkMCIsImZyb21fc2NyYXRjaCIsIm9sZF9yYW5nZSIsIm9sZF9taW4iLCJvbGRfbWFwIiwib2xkX21heCIsIm9sZF9yZXMiLCJvbGRfbWF4JDAiLCJwYXJhbSIsImFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIiwib3V0c2lkZSIsIm91dHNpZGUkMCIsIm91dHNpZGVfY3V0b2ZmIiwid2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlIiwid2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSIsIm1hcF9hcHBlbmRfZXhuIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJvbGRfbWluJDAiLCJvbGRfbWluJDEiLCJvbGRfbWF4JDEiLCJ3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSIsInJla2V5Iiwib3V0ZXJfY29tcGFyYXRvciIsImFkZHMiLCJvdXRwdXQkMCIsIm5ld19lbnRyeSIsImluZGV4X2J5aSIsImluZGV4IiwiaW5uZXJfY29tcGFyYXRvciIsIm91dGVyX21hcCIsImlubmVyX21hcCQwIiwiaW5kZXhfYnkiLCJpc19rbm93biIsInRvX29wdGlvbiIsImZpbmRfa2V5X3JhbmdlX2xpbmVhciIsImZyb20iLCJ0byIsImxlbiIsImJlZ2luX2tleSIsImVuZF9rZXkiLCJmaW5kX2tleXMiLCJmb2xkIiwic3RhcnRfcG9zIiwiYWR2YW5jZV9wb3MiLCJwb3MiLCJiZWdpbl9rZXkkMCIsImVuZF9rZXkkMCIsImZpbmRfb2Zmc2V0IiwiY2hhbmdlZF9rZXkiLCJyYW5rIiwiY29tcGFyZV9rZXkiLCJzYW1lX2tleSIsInByb2Nlc3MiLCJuZXdfbWFwIiwib2xkX3JhbmsiLCJvbGRfa2V5Iiwib2xkX3JhbmskMCIsImRpZmZfa2V5Iiwib2xkX3JhbmskMSIsIm9sZCQxIiwidXBwZXJfYm91bmQiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kJDAiLCJsb3dlcl9ib3VuZCQwIiwic3VicmFuZ2UkMCIsInN1YnJhbmdlX2J5X3JhbmsiLCJmaW5kX2tleV9yYW5nZSIsImVuZF9rZXlfb3B0JDAiLCJvbGRfdG8iLCJvbGRfZnJvbSIsInJhbmdlX29mZnNldF9iZWdpbiIsInJhbmdlX29mZnNldF9lbmQiLCJhZGp1c3RfYW5kX29mZnNldCIsImJ5JDEiLCJrZXkkMSIsImJ5JDIiLCJieSIsImNsb3Nlc3RfZGlyIiwiYnkkMCIsIm9mZnNldF9lbmQiLCJvZmZzZXRfYmVnaW4iLCJtYXBfb2Zmc2V0X2VuZCIsIm1hcF9vZmZzZXRfYmVnaW4iLCJlbmRfa2V5X29wdCQyIiwiYmVnaW5fa2V5X29wdCIsIm1hcF9vZmZzZXRfYmVnaW4kMCIsImVuZF9rZXlfb3B0IiwiYmVnaW5fa2V5X29wdCQwIiwic3ltYm9sIiwiYm91bmQiLCJyZXR1cm4kMCIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxNCIsImxiIiwicGF0dGVybl9zeW50YXhfMDE1IiwidSIsInBhdHRlcm5fc3ludGF4XzAxNiIsInViIiwicGF0dGVybl9zeW50YXhfMDE3IiwibGV0X3N5bnRheF8wMjIiLCJsJDAiLCJwYXR0ZXJuX3N5bnRheF8wMTgiLCJsYiQwIiwicGF0dGVybl9zeW50YXhfMDE5IiwibGV0X3N5bnRheF8wMjYiLCJ1JDAiLCJwYXR0ZXJuX3N5bnRheF8wMjAiLCJ1YiQwIiwicGF0dGVybl9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjkiLCJ0cmFuc3Bvc2UiLCJrMl9jb21wYXJhdG9yIiwibSIsImsxX2NvbXBhcmF0b3IiLCJrMSIsImsyIiwidmFsdWUiLCJhY2NfaW5uZXIiLCJhY2NfaW5uZXIkMCIsImNvbGxhcHNlX2J5IiwibWVyZ2Vfa2V5cyIsImNvbGxhcHNlIiwiaW5uZXJfY29tcGFyYXRvciQwIiwiZXhwYW5kIiwiY291bnRpIiwiY291bnQiLCJleGlzdHNpIiwiZXhpc3RzIiwic3VtIiwiR3JvdXAiLCJ2IiwiZm9yX2FsbGkiLCJmb3JfYWxsIiwidW5vcmRlcmVkX2ZvbGQkMCIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzJDAiLCJjcmVhdGUiLCJzZWxmIiwidXBkYXRlcl9ub2RlIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJpbmZvX3Blcl9rZXkiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsIm1hdGNoJDAiLCJzYXZlZF92YWx1ZSIsIm1hdGNoJDIiLCJtYXRjaCQzIiwidiQwIiwibWF0Y2gkNCIsInYkMSIsIm1hdGNoJDUiLCJ2JDIiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJjb250ZW50c19iaWdzdHIiLCJjcmVhdGUkMCIsImdldF9kb3dubG9hZCIsImJ1dHRvbl90ZXh0IiwiZW5hYmxlZCIsIm9uX2NsaWNrIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMDMiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wMTkiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInhfMDA0IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwic2V4cF9vZl90Iiwib2ZfYV8wMDUiLCJyaWdodF8wMTMiLCJib3R0b21fMDExIiwibGVmdF8wMDkiLCJ0b3BfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwidjQiLCJ2MyIsInYyIiwidjEiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwicG9zJDAiLCJwb3MkMSIsInBvcyQyIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X3RvcCIsInZfbGVmdCIsInZfYm90dG9tIiwidl9yaWdodCIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMTUiLCJiXzAxNiIsIm4iLCJuJDAiLCJuJDEiLCJyaWdodCQwIiwiYm90dG9tJDAiLCJsZWZ0JDAiLCJ0b3AkMCIsIm1ha2VfY3JlYXRvciIsInRvcF9mdW4iLCJsZWZ0X2Z1biIsImJvdHRvbV9mdW4iLCJyaWdodF9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJ0b3BfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImxlZnRfZ2VuIiwiY29tcGlsZV9hY2MkMiIsImJvdHRvbV9nZW4iLCJjb21waWxlX2FjYyQzIiwicmlnaHRfZ2VuIiwiYWNjIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwibWFwJDEiLCJ0IiwiZiIsImludF9oZWlnaHQiLCJpbnRfd2lkdGgiLCJmbG9hdF9oZWlnaHQiLCJmbG9hdF93aWR0aCIsInJvdW5kX2Zsb2F0X3JlY3QiLCJyb3VuZCIsInJvd3Nfb3JfY29sdW1uc19vZl9zZXhwIiwic2V4cF8wMjAiLCJzZXhwX29mX3Jvd3Nfb3JfY29sdW1ucyIsImdyb3VwJDAiLCJiaW5fc2hhcGVfcm93c19vcl9jb2x1bW5zIiwiYmluX3NpemVfcm93c19vcl9jb2x1bW5zIiwiYmluX3dyaXRlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZXJfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zJDAiLCJiaW5fcmVhZGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yb3dzX29yX2NvbHVtbnMiLCJyb3dzIiwiY29sdW1ucyIsImlzX3Jvd3MiLCJpc19jb2x1bW5zIiwicm93c192YWwiLCJjb2x1bW5zX3ZhbCIsInJvd3MkMCIsImNvbHVtbnMkMCIsImZvbGQkMSIsInJvd3NfZnVuIiwiY29sdW1uc19mdW4iLCJpdGVyJDEiLCJtYXAkMiIsIm1ha2VfbWF0Y2hlciIsInJvd3NfZ2VuIiwiY29sdW1uc19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsImNvbXBhcmVfcm93c19vcl9jb2x1bW5zIiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZWxlbWVudF9pc19pbl92aWV3cG9ydCIsInNjcm9sbCIsImlkIiwidmlld3BvcnRfcmVjdF9vZl9lbGVtZW50Iiwidmlld3BvcnRfcmVjdCIsImNsaWVudF9yZWN0X29mX2VsZW1lbnQiLCJib3VuZGluZ19yZWN0IiwiY2xpZW50X3JlY3QiLCJmaW5kX3Zpc2libGVfcmFuZ2UiLCJsZW5ndGgiLCJudGhfZWxlbWVudF9pZCIsImxheW91dCIsImVsZW1lbnRfc2VhcmNoIiwic2VhcmNoX2J5IiwibW9kZSIsIngiLCJudGhfZWxlbWVudCIsImVsdCIsImZpcnN0IiwibGFzdCIsImdldCIsImlzX2FzY2VuZGluZyIsImxlbmd0aCQwIiwidmlld3BvcnRfcmVjdCQwIiwidGFyZ2V0IiwidGFyZ2V0JDAiLCJzZWFyY2hfYnkkMCIsImdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lciIsImVsIiwiZmlsZW5hbWUiLCJwcmludF9lcnJvcmYiLCJmbXQiLCJzIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYWxsYmFjayIsImN1cnJlbnRfY29udGV4dCIsInJlcXVlc3RfaWRzIiwiY2FsbGJhY2skMCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsInNldF90aW1lb3V0X2lkIiwiYXNfZm9jdXNhYmxlIiwibWFya19kaXJ0eSIsImlzX2RpcnR5IiwieF8wMDIiLCJ4XzAwMyIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3Iiwic2V0X2xvZ2dpbmdfZmlsdGVyIiwibG9nZ2luZ19maWx0ZXIiLCJnbG9iYWxfaXNfaW5pdGlhbGl6ZWQiLCJhcHBfc3RhdGVzIiwic2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QiLCJzdHJpbmdzIiwic3RyIiwibXVsdGlfbGluZV9zdHJpbmdfbGlzdCIsImdldF90YWdfbmFtZSIsIm5vZGUiLCJub2RlJDAiLCJlIiwibm9kZSQxIiwic3RhcnRfYm9uc2FpIiwiYmluZF90b19lbGVtZW50X3dpdGhfaWQiLCJpbml0aWFsX21vZGVsIiwiQXBwIiwiZGVidWciLCJzdG9wIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsImN1dG9mZiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJuYW1lZF9sb2dnaW5nX2ZpbHRlcnMkMCIsImZpbHRlcl9uYW1lcyIsImFwcF9pbml0X21lc3NhZ2UiLCJ3aXRoX2FwcF9pZF9vcHQiLCJ1cGRhdGVfc3RhdGUiLCJhcHBfaWRfb3B0IiwiYXBwX2lkX29wdCQwIiwiYXBwX2lkIiwic3RhdGUiLCJ1cGRhdGVfbG9nZ2luZ19maWx0ZXIiLCJ1cGRhdGVfc2hvdWxkX3Byb2ZpbGUiLCJzaG91bGRfcHJvZmlsZSIsInVwZGF0ZV9zaG91bGRfZGVidWciLCJzaG91bGRfZGVidWciLCJibGFuZ19zdHIiLCJibGFuZ19zdHIkMCIsImFwcF9zdGF0ZSIsImJsYW5nIiwiaW52YWxpZF9uYW1lcyIsIm5hbWUiLCJmaWx0ZXIiLCJmaWx0ZXIkMCIsImFjdGlvbl9zZXhwIiwiY29udGVudHMiLCJsb2ciLCJodG1sIiwiaHRtbF9kb20iLCJwYXJlbnQiLCJjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQiLCJldmVudF9uYW1lIiwid2hlcmUiLCJwcmV2X2h0bWwiLCJwcmV2X2VsdCIsInJlZm9jdXNfcm9vdF9lbGVtZW50IiwiZWxlbWVudCIsInRpbWVyX3N0YXJ0IiwicHJvZmlsZSIsInRpbWVyX3N0b3AiLCJiZWZvcmUiLCJhZnRlciIsInJlbGF0ZWRfdGFyZ2V0Iiwic2FmZV9maWx0ZXIiLCJzaG91bGRfbG9nIiwiZXJyIiwiY3VzdG9tX3ByaW50Zl8wMTAiLCJuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUiLCJjdXN0b21fcHJpbnRmXzAxMiIsInBlcmZvcm1fdXBkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsInJvb3QiLCJhZGRfbmV3X2F0dHJzIiwiYXR0cnMiLCJwYXRjaCIsIm9sZF90YWdfbmFtZSIsIm5ld190YWdfbmFtZSIsInRhZ3NfdGhlX3NhbWUiLCJzdGFydCIsImFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIiwib2xkX21vZGVsIiwiaW5qZWN0IiwiY29tcG9uZW50Iiwic2NoZWR1bGVfZXZlbnQiLCJzY2hlZHVsZV9hY3Rpb24iLCJlcnJvcl9zb3VyY2VfMDE0IiwiaW52YXJpYW50IiwidCIsIm9mX3N0cmluZyIsInMiLCJ0b19zdHJpbmciLCJlcXVhbCIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImFfMDA1IiwiYl8wMDYiLCJhXzAwOSIsImJfMDEwIiwidXBkYXRlX29mX3NleHAiLCJvZl9hXzAxMSIsInNleHBfMDE2Iiwic2V4cHNfMDE3IiwidmFsdWUiLCJpbnB1dCIsInNleHBzXzAxOSIsImVycm9yIiwibGFzdF92YWxpZCIsInNleHBfb2ZfdXBkYXRlIiwib2ZfYV8wMjEiLCJ2YWx1ZV8wMjUiLCJpbnB1dF8wMjMiLCJhcmdfMDI2IiwiYm5kc18wMjIiLCJhcmdfMDI0IiwiYm5kc18wMjIkMCIsImVycm9yXzAzMiIsImxhc3RfdmFsaWRfMDMwIiwiaW5wdXRfMDI4IiwiYXJnXzAzMyIsImJuZHNfMDI3IiwiYXJnXzAzMSIsImJuZHNfMDI3JDAiLCJhcmdfMDI5IiwiYm5kc18wMjckMSIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInYyIiwidjEiLCJzaXplIiwidjMiLCJ2MiQwIiwidjEkMCIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfdCIsIm9mX2EiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3QkMCIsInZfaW5wdXQiLCJ2X3ZhbHVlIiwidl9pbnB1dCQwIiwidl9sYXN0X3ZhbGlkIiwidl9lcnJvciIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImFfMDM1IiwiYl8wMzYiLCJuIiwiYV8wMzkiLCJiXzA0MCIsIm4kMCIsIm4kMSIsImFfMDQzIiwiYl8wNDQiLCJlcXVhbF91cGRhdGUiLCJhXzA0NSIsImJfMDQ2IiwiYV8wNDciLCJiXzA0OCIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdXBkYXRlIiwiYmluX3NpemVfdXBkYXRlIiwiYmluX3dyaXRlX3VwZGF0ZSIsImJpbl93cml0ZXJfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlJDAiLCJiaW5fcmVhZGVyX3VwZGF0ZSIsImJpbl91cGRhdGUiLCJjb21wYXJlX3VwZGF0ZSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1NiIsImJfMDU3IiwibGlmdCIsIk0iLCJpbnB1dCQxIiwiaW5wdXQkMCIsImV4biQwIiwiZXhuIiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwiZ2V0X2Vycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJtZXJnZSIsInN0cnVjdHVyYWxfbGlzdCIsImNoaWxkcmVuIiwib3JpZW50YXRpb24iLCJtZXJnZV9iZWhhdmlvciIsImxheW91dF9zdHlsZSIsImNoaWxkIiwic2V4cF9vZl90IiwiY29tYmluZSIsImxlZnQiLCJyaWdodCIsImluaXQiLCJlbGVtZW50IiwiZiIsImRvY3VtZW50X2FjdGl2ZV9lbGVtZW50IiwidmFsdWUkMCIsImNoYW5nZV9oYW5kbGVyIiwibm9ybWFsaXplZCIsImNoYW5nZV9oYW5kbGVyJDAiLCJldmVudF9pZCIsIm9uX21vdW50Iiwic3RhdGUiLCJkZXN0cm95IiwidXBkYXRlJDAiLCJvbGRfaW5wdXQiLCJuZXdfaW5wdXQiLCJjcmVhdGUiLCJpbXBsIiwidmFsdWVzIiwic2VsZWN0ZWQiLCJvbl9jaGFuZ2UiLCJleHRyYV9hdHRycyIsImV4dHJhX29wdGlvbl9hdHRycyIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInBsYWNlaG9sZGVyIiwidmFsdWVzJDAiLCJleHRyYV9vcHRpb25fYXR0cnMkMCIsImFfMDU4IiwiYl8wNTkiLCJhXzA2MCIsImJfMDYxIiwib2ZfZW51bSIsIm9mX2VudW1fb3B0IiwiYV8wNjIiLCJiXzA2MyIsImFfMDY0IiwiYl8wNjUiLCJiYXJlYm9uZXNfYnV0dG9uX2xpa2UiLCJjaGVja2VkIiwiaGlkZV9uYXRpdmVfaW5wdXRzIiwic2ltcGxlIiwiZXh0cmFfYXR0cnMkMCIsImRpc2FibGVkJDAiLCJpc19jaGVja2VkIiwibGFiZWwiLCJvbl90b2dnbGUiLCJldiIsImltcGwkMCIsImxheW91dCIsInN0eWxlIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJpdGVtIiwib2ZfdmFsdWVzJDAiLCJvZl9lbnVtJDAiLCJpbXBsJDEiLCJyZXBlYXRlZF9jbGlja19iZWhhdmlvciIsInRhcmdldCIsIm9wdGlvbnMiLCJzZWxlY3RlZF92YWx1ZXMiLCJpc19zZWxlY3RlZCIsIndhc19yZXBlYXRlZF9jbGljayIsIm9mX3ZhbHVlcyQxIiwib2ZfZW51bSQxIiwibGlzdGVuZXIiLCJub3JtYWxpemUiLCJtYXliZV9vbl9yZXR1cm4iLCJvbl9yZXR1cm4iLCJvbl9yZXR1cm4kMCIsImlucHV0X25vZGUiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwidHlwZV9hdHRycyIsImNhbGxfb25faW5wdXRfd2hlbiIsInNob3VsZF9ub3JtYWxpemUiLCJ2YWx1ZSQxIiwib2Zfc3RyaW5nYWJsZSIsInZhbGlkYXRlZCIsIlYiLCJ2YWx1ZV9hdHRyIiwidGV4dCIsInBhc3N3b3JkIiwibnVtYmVyIiwic3RlcCIsInJhbmdlIiwidGltZSIsImRhdGUiLCJkYXRldGltZV9sb2NhbCIsInV0Y19vZmZzZXQiLCJob3VycyIsInpvbmUiLCJwYXJ0cyIsImhyIiwibWluIiwib2ZkYXkiLCJab25lZF90aW1lIiwidGV4dF9hcmVhIiwiY29sb3JfcGlja2VyIiwiZXh0cmFfYXR0ciIsIndpdGhfdmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJvbl9jbGljayIsInJlc3VsdCIsInJlYXNvbiIsInNpbXBsZSQwIiwiaW1wbCQyIiwibmFtZSIsIm9mX3ZhbHVlcyQyIiwiRSIsIm9mX3ZhbHVlc19ob3Jpem9udGFsIiwiYWNjZXB0X2F0dHJzIiwiYWNjZXB0cyIsInMkMCIsImxpc3QiLCJhY2NlcHQiLCJmaWxlcyIsInNpbmdsZSIsImZpbGUiLCJlbXB0eSIsImlzX2VtcHR5IiwidCIsInplcm9fYml0IiwiayIsIm0iLCJtZW0iLCJqIiwiciIsImwiLCJsJDAiLCJmaW5kIiwieCIsImZpbmRfb3B0IiwiZmluZF9maXJzdF9vcHQiLCJmIiwicnYiLCJyayIsImx2IiwibGsiLCJ2JDAiLCJmaW5kX2ZpcnN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfbGFzdCIsIm1hc2siLCJwIiwiam9pbiIsInQxIiwicDEiLCJ0MCIsInAwIiwibWF0Y2hfcHJlZml4IiwiYWRkIiwiaW5zIiwic2luZ2xldG9uIiwidiIsImJyYW5jaCIsInQkMCIsInJlbW92ZSIsInJtdiIsImNhcmRpbmFsIiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwicyIsImFjY3UiLCJzJDAiLCJhY2N1JDAiLCJhY2N1JDEiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwicHIiLCJmaWx0ZXJfbWFwIiwicGFydGl0aW9uIiwicGFydCIsImFjYyQwIiwiY2hvb3NlIiwiY2hvb3NlX29wdCIsInNwbGl0IiwiY29sbCIsImIiLCJtaW5fYmluZGluZyIsImJzIiwia3MiLCJidCIsImt0IiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJiaW5kaW5ncyIsImFjYyIsImNvbXBhcmUiLCJjbXAiLCJ0MiIsImNvbXBhcmVfYXV4IiwidDEkMCIsInQyJDAiLCJ4MSIsImsxIiwieDIiLCJrMiIsImMiLCJyMSIsImwxIiwibTEiLCJyMiIsImwyIiwibTIiLCJwMiIsImMkMCIsImMkMSIsImMkMiIsImVxdWFsIiwiZXEiLCJlcXVhbF9hdXgiLCJtZXJnZSIsImFkZCQwIiwidjEiLCJ2MiIsInVwZGF0ZSIsInoiLCJ1bnNpZ25lZF9sdCIsIm4iLCJ0JDIiLCJzMSIsInMwIiwiayQwIiwicSIsInQkMSIsInVuaW9uIiwidG9fc2VxIiwicHJlcGVuZF9zZXEiLCJtJDAiLCJzJDEiLCJ0b19zZXFfZnJvbSIsImtleSIsImFkZF9zZXEiLCJvZl9zZXEiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsInZlcnNpb24iLCJqc29uX2Vycm9yIiwicyIsImluaXRfbGV4ZXIiLCJmbmFtZSIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwib2NhbWxfbGV4X3RhYmxlcyIsInJlYWRfanVuayQwIiwibGV4YnVmIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMkMCIsInJlYWRfanVuayIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJzcHJpbnRmIiwid3JpdGVfZmxvYXRfcHJlYyIsIndyaXRlX3N0ZF9mbG9hdCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjIiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwid3JpdGVfYXNzb2MiLCJ3cml0ZV9saXN0IiwiYiIsImYiLCJ3cml0ZV9zdGRfanNvbiIsInRvX2J1ZmZlciIsInN1ZiIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJsJDEiLCJhIiwicHBfbGlzdCIsInNlcCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwieCQyIiwicyQwIiwieCQwIiwieCQxIiwibmFtZSIsInBwIiwidG9fc3RyaW5nJDAiLCJwcCQwIiwiZm10IiwieHMiLCJ2YWx1ZSIsImtleSIsInhzJDAiLCJzaG93IiwiZXF1YWwiLCJiJDAiLCJhJDAiLCJ5cyIsInJlc3VsdCIsInlzJDAiLCJjb21wYXJlX2tleXMiLCJrZXkkMCIsInhzJDEiLCJ5cyQxIiwicmVzdWx0JDAiLCJ2YWx1ZSQwIiwiYiQxIiwiYSQxIiwiYiQyIiwiYSQyIiwiYiQzIiwiYSQzIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwid3JpdGVfaW50bGl0Iiwid3JpdGVfZmxvYXRsaXQiLCJ3cml0ZV9zdHJpbmdsaXQiLCJ3cml0ZV90dXBsZSIsIm8iLCJ3cml0ZV92YXJpYW50IiwicyQxIiwicyQyIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ2JDAiLCJsJDIiLCJ4JDMiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwieCQ0IiwicmVwcmVzZW50YXRpb24kMCIsInR1cCIsImIkNCIsImEkNCIsIm5hbWUkMCIsInRvX2Jhc2ljIiwieCQ2IiwieCQ1IiwiYiQ1IiwiYSQ1IiwicyQzIiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicyQ0IiwieW9qc29uX29mX3VuaXQiLCJ5b2pzb25fb2ZfYm9vbCIsImIiLCJ5b2pzb25fb2Zfc3RyaW5nIiwic3RyIiwieW9qc29uX29mX2J5dGVzIiwiYnl0ZXMiLCJ5b2pzb25fb2ZfY2hhciIsImMiLCJ5b2pzb25fb2ZfaW50IiwibiIsInlvanNvbl9vZl9mbG9hdCIsInlvanNvbl9vZl9pbnQzMiIsInlvanNvbl9vZl9pbnQ2NCIsInlvanNvbl9vZl9uYXRpdmVpbnQiLCJ5b2pzb25fb2ZfcmVmIiwieW9qc29uX29mX2EiLCJyZiIsInlvanNvbl9vZl9sYXp5X3QiLCJsdiIsInlvanNvbl9vZl9vcHRpb24iLCJ4IiwieW9qc29uX29mX3BhaXIiLCJ5b2pzb25fb2ZfYiIsImEiLCJ5b2pzb25fb2ZfdHJpcGxlIiwieW9qc29uX29mX2MiLCJ5b2pzb25fb2ZfbGlzdCIsImxzdCIsInlvanNvbl9vZl9hcnJheSIsImFyIiwibHN0X3JlZiIsImkiLCJ5b2pzb25fb2ZfaGFzaHRibCIsInlvanNvbl9vZl9rZXkiLCJ5b2pzb25fb2ZfdmFsIiwiaHRibCIsImNvbGwiLCJrIiwidiIsImFjYyIsInlvanNvbl9vZl9vcGFxdWUiLCJ5b2pzb25fb2ZfZnVuIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3lvanNvbl9lcnJvcl9leG4iLCJleGMiLCJ5b2pzb24iLCJvZl95b2pzb25fZXJyb3IiLCJ3aGF0IiwidW5pdF9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInN0cmluZ19vZl95b2pzb24iLCJieXRlc19vZl95b2pzb24iLCJjaGFyX29mX3lvanNvbiIsImludF9vZl95b2pzb24iLCJmbG9hdF9vZl95b2pzb24iLCJpbnQzMl9vZl95b2pzb24iLCJpbnQ2NF9vZl95b2pzb24iLCJuYXRpdmVpbnRfb2ZfeW9qc29uIiwicmVmX29mX3lvanNvbiIsImFfb2ZfeW9qc29uIiwibGF6eV90X29mX3lvanNvbiIsIm9wdGlvbl9vZl95b2pzb24iLCJwYWlyX29mX3lvanNvbiIsImJfb2ZfeW9qc29uIiwiYl95b2pzb24iLCJhX3lvanNvbiIsInRyaXBsZV9vZl95b2pzb24iLCJjX29mX3lvanNvbiIsImNfeW9qc29uIiwibGlzdF9vZl95b2pzb24iLCJyZXZfbHN0IiwiYXJyYXlfb2ZfeW9qc29uIiwidCIsImgiLCJsZW4iLCJyZXMiLCJ0JDAiLCJoJDAiLCJoYXNodGJsX29mX3lvanNvbiIsImtleV9vZl95b2pzb24iLCJ2YWxfb2ZfeW9qc29uIiwiYWN0Iiwidl95b2pzb24iLCJrX3lvanNvbiIsIm9wYXF1ZV9vZl95b2pzb24iLCJmdW5fb2ZfeW9qc29uIiwic3ByaW50ZiIsInR1cGxlX29mX3NpemVfbl9leHBlY3RlZCIsImxvYyIsInN0YWdfbm9fYXJncyIsInN0YWdfaW5jb3JyZWN0X25fYXJncyIsInRhZyIsIm1zZyIsInN0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSIsInVuZXhwZWN0ZWRfc3RhZyIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsInJlc3QiLCJmaWVsZCIsInJlc3QkMCIsInJlY29yZF91bmRlZmluZWRfZWxlbWVudHMiLCJ1bmRlZmluZWQkMCIsInJlY29yZF9saXN0X2luc3RlYWRfYXRvbSIsInJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIiwibm9fdmFyaWFudF9tYXRjaCIsIm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQiLCJwdGFnX25vX2FyZ3MiLCJwdGFnX2luY29ycmVjdF9uX2FyZ3MiLCJjbnN0ciIsInB0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV90eXBlIiwic3ltYm9sIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwiZW1wdHkiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJkdW1teSIsIm1rIiwiY2F0IiwiZGVzYyIsImNyZWF0ZSIsImVxdWFsJDAiLCJoYXNoJDEiLCJjcmVhdGVfd29ya2luZ19hcmVhIiwiaW5kZXhfY291bnQiLCJ3IiwibWFya191c2VkX2luZGljZXMiLCJ0YmwiLCJmcmVlX2luZGV4IiwidGJsX3JlZiIsImxlbiIsImlkeCQwIiwicmVtb3ZlX21hdGNoZXMiLCJzcGxpdF9hdF9tYXRjaCIsInJlbW92ZV9kdXBsaWNhdGVzIiwicHJldiIsInByZXYkMCIsInByZXYkMSIsInByZXYkMiIsInIkMiIsInIkMyIsIngkMSIsInByZXYkMyIsInIkNCIsInNldF9pZHgiLCJmaWx0ZXJfbWFya3MiLCJkZWx0YV8xJDAiLCJuZXh0X2NhdCIsInByZXZfY2F0IiwiZGVsdGFfMiQwIiwiZGVsdGFfMSIsImRlbHRhX3NlcSQwIiwieSQxIiwia2luZCQwIiwicmVwX2tpbmQiLCJ5JDIiLCJtYXJrcyQxIiwieSQzIiwibWFya3MkMiIsImNhdCQwIiwibWFya3MkMyIsImRlbHRhXzIiLCJkZWx0YV9zZXEiLCJkZWx0YV80IiwicmVtJDAiLCJkZWx0YSIsImNoYXIkMCIsInN0IiwiZXhwciQwIiwicmVkX3RyIiwidHIyIiwic3QyIiwiczIiLCJ0cjEiLCJzdDEiLCJzMSIsInByZXBlbmRfZGVyaXYiLCJyZXN0cmljdCIsInMkMSIsInByZXBlbmRfbWFya3NfZXhwcl9sc3QiLCJtJDEiLCJkZXJpdl8xJDAiLCJhbGxfY2hhcnMiLCJjYXRlZ29yaWVzIiwicmVtJDEiLCJkZXJpdl8yJDAiLCJkZXJpdl8xIiwiZGVyaXZfc2VxIiwieiQwIiwicmVtJDIiLCJjYXQkMSIsImRlcml2XzIiLCJ4bCIsInokMSIsImRlcml2XzQiLCJkZXJpdiIsImRlciIsImV4cHIkMSIsInN0YXR1cyIsIm1hIiwic3QkMCIsIm1ha2UiLCJmbGF0dGVuIiwiY20iLCJjb2xvcl9yZXByIiwic3BsaXQiLCJkdW1teV9vZmZzZXQiLCJtMSIsInAxIiwicDIiLCJnZXQiLCJzdGFydCIsInN1YnMiLCJzdG9wIiwidGVzdCIsImdldF9vcHQiLCJhbGxfb2Zmc2V0IiwiYWxsIiwib2Zmc2V0cyIsInN0cnMiLCJtYXRjaGVzIiwicHBfbWF0Y2giLCJzdHIiLCJuYl9ncm91cHMiLCJuIiwibiQwIiwidiQwIiwidiQxIiwibiQxIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJicmVhayQwIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvdyIsImVvdyIsIndvcmQiLCJib3MiLCJlb3MiLCJ3aG9sZV9zdHJpbmciLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwibWF0Y2hfYmFja3NsYXNoZXMiLCJwZXJpb2QiLCJleHBhbmRfYnJhY2VzIiwiZG91YmxlX2FzdGVyaXNrIiwidG9fcmUiLCJyZWFkIiwicGllY2VzIiwiZm91bmQiLCJwaWVjZXMkMCIsInN0YXRlJDgiLCJzdGF0ZSQ5IiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsImV4cGxpY2l0X3NsYXNoJDAiLCJub3RfZW1wdHkiLCJtYXliZV9lbXB0eSIsIm5vdF9lbXB0eSQxIiwiZW5jbG9zZWRfc2V0JDAiLCJzdGF0ZSQyIiwic3RhdGUkNCIsIm5vdF9lbXB0eSQwIiwic3RhdGUkNSIsInN0YXRlJDYiLCJlbmNsb3NlZCQwIiwic3RhdGUkNyIsImVuY2xvc2VkJDEiLCJzdGF0ZSQzIiwic3RhdGUkMSIsImVuY2xvc2VkJDIiLCJlbmNsb3NlZCQzIiwiZXhwbCIsImlubmVyIiwiYWNjIiwiYmVnJDAiLCJhY2MkMCIsImJlZyQxIiwiYWNjJDEiLCJpJDMiLCJiZWckMiIsImkkNCIsImkkMiIsImdsb2IkMCIsImdsb2J4IiwiZ2xvYngkMCIsInBvc2l4X2NsYXNzX3N0cmluZ3MiLCJvcHRzIiwidW5ncmVlZHkiLCJkb3RhbGwiLCJkb2xsYXJfZW5kb25seSIsIm11bHRpbGluZSIsImFjY2VwdF9zIiwidW5nZXQiLCJncmVlZHlfbW9kIiwiZ3IiLCJnciQwIiwiYXRvbSIsImludGVnZXIiLCJoZXhkaWdpdCIsImNvZGUiLCJzJDMiLCJzJDQiLCJjbGFzcyQwIiwicG9zaXhfY2xhc3MiLCJwYXQiLCJmbGFncyIsImV4dHJhY3QiLCJyZXgiLCJnZXRfc3Vic3RyaW5nIiwiZ2V0X25hbWVkX3N1YnN0cmluZyIsImdldF9zdWJzdHJpbmdfb2ZzIiwicG1hdGNoIiwic3Vic3RpdHV0ZSIsInN1YnN0Iiwic3MiLCJmaW4iLCJtYXgiLCJyZXN1bHRzIiwiZGVsaW0iLCJuZXdsaW5lIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInNpbmdsZXRvbiIsInBvcyIsIngiLCJ1bmlvbiIsImYiLCJ0MSIsInQyIiwieHMyIiwieDIiLCJwMiIsInhzMSIsIngxIiwicDEiLCJtYXAiLCJyZXN0IiwibWFwaSIsIm1hcGsiLCJmb2xkX2xlZnQiLCJ6JDAiLCJlcnJvcl9zb3VyY2VfMDAyIiwiemVybyIsInRfb2Zfc2V4cCIsInhfMDAzIiwiY29sIiwicm93Iiwic2V4cF9vZl90IiwiY29sXzAwNyIsInJvd18wMDUiLCJhcmdfMDA4IiwiYm5kc18wMDQiLCJhcmdfMDA2IiwiYm5kc18wMDQkMCIsImNvbXBhcmUiLCJwb3MxIiwicG9zMiIsImVycm9yX3NvdXJjZV8wMDQiLCJvZl9hbm5vdF8wMDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInNleHBfYXJnc18wMTMiLCJhcmcxXzAxNSIsImFyZzBfMDE0IiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInNleHBfYXJnc18wMDgiLCJhcmcwXzAwOSIsInJlczBfMDEwIiwib2ZfYW5ub3RfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwiYWxpZ24iLCJsIiwiYW5ub3QiLCJyZW1vdmVfYW5ub3RzIiwibGF5b3V0IiwibGF5b3V0JDAiLCJzdHJpbmciLCJsMiIsImwxIiwibGF5b3V0JDEiLCJta19vZl9sYXlvdXQiLCJ0ZXh0IiwiY29sdW1uIiwiZ28iLCJpbmRlbnQiLCJpbmRlbnQkMCIsImltcDEiLCJpbXAyIiwiaW5kZW50JDEiLCJzdHJpbmdfb2ZfbGF5b3V0IiwicmVjb3JkIiwiczEiLCJzMiIsImltcCIsInN0cmluZ3Nfb2ZfbGF5b3V0IiwicmVzdDIiLCJmaXJzdF9zdHJpbmdfMiIsImZpcnN0X2luZGVudF8yIiwicmVzdDEiLCJsYXN0X3N0cmluZ18xIiwibGFzdF9pbmRlbnRfMSIsInNwbGl0X2ZpcnN0IiwieHMiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfbGFzdF9vcHQiLCJ5cyIsInkiLCJzcGxpdF9sYXN0IiwiciIsImJveCIsImVycm9yX3NvdXJjZV8wMTEiLCJlcnJvcl9zb3VyY2VfMDE2IiwiYm94X29mX3NleHAiLCJ3aWR0aCIsImhlaWdodCIsInNleHBfb2ZfYm94Iiwid2lkdGhfMDA3IiwiaGVpZ2h0XzAwNSIsIm9mX2Fubm90XzAwOSIsInhfMDEyIiwidF9vZl9zZXhwJDAiLCJtZXRyaWNzIiwib2ZfYW5ub3RfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5IiwicmVzMF8wMjciLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMV8wMzkiLCJyZXMwXzA0MCIsInJlczFfMDQxIiwic2V4cF9hcmdzXzAzMCIsImFyZzFfMDMyIiwiYXJnMF8wMzEiLCJyZXMxXzAzNCIsIm9mX2Fubm90XzA0MyIsIm1ldHJpY3NfMDQ3IiwibGF5b3V0XzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImFyZ18wNDYiLCJzZXhwX29mX3QkMCIsImJuZHNfMDQ0JDAiLCJvZl9hbm5vdF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwiYXJnMV8wNTkiLCJhcmcwXzA1OCIsInJlczBfMDYwIiwicmVzMV8wNjEiLCJtIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsIm1pZCIsInRhYmxlIiwibWsiLCJtaWRfYm94IiwibCQwIiwiYm91bmRpbmdfYm94IiwiYnciLCJiaCIsImwkMSIsIm0kMiIsIm92ZXJmbG93X2Nvc3QiLCJoZWlnaHRfY29zdCIsIm1rX2hlaWdodCIsIm1rX292ZXJmbG93IiwiaW5mIiwiYWRkIiwiYzEiLCJjMiIsImVxIiwibHQiLCJsZXEiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAwOCIsImVycm9yX3NvdXJjZV8wNjgiLCJlcnJvcl9zb3VyY2VfMDczIiwiaGFzaCIsImVxdWFsIiwidzIiLCJ3MSIsIm9mX2Fubm90XzA2NiIsInhfMDY5IiwiZG9jIiwibWVtIiwib2ZfYW5ub3RfMDcwIiwic2V4cF8wNzUiLCJ0YWdfMDc2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJzZXhwX2FyZ3NfMDgyIiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDMiLCJhcmcwXzEwMiIsInJlczBfMTA0IiwicmVzMV8xMDUiLCJzZXhwX2FyZ3NfMDc3IiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsIm9mX2Fubm90XzEwNyIsImRvY18xMTEiLCJtZW1fMTA5IiwiYXJnXzExMiIsImJuZHNfMTA4IiwiYXJnXzExMCIsImJuZHNfMTA4JDAiLCJvZl9hbm5vdF8xMTMiLCJhcmcwXzExNCIsInJlczBfMTE1IiwiYXJnMV8xMTciLCJhcmcwXzExNiIsInJlczBfMTE4IiwicmVzMV8xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwiYXJnMV8xMjMiLCJhcmcwXzEyMiIsInJlczBfMTI0IiwicmVzMV8xMjUiLCJhcmcxXzEyNyIsImFyZzBfMTI2IiwicmVzMF8xMjgiLCJyZXMxXzEyOSIsInRfb2ZfdCIsInQiLCJmYWlsIiwiZW1wdHkiLCJzcGFjZSIsImluZGVudF9hbmRfYWxpZ24iLCJoY2F0IiwiaGNhdHMiLCJkb2NzIiwiaHNlcCIsImhzZXBzIiwidnNlcCIsInZzZXBzIiwiY2hvaWNlIiwiY2hvaWNlcyIsIm1hcF90IiwiZCIsIm1hcF9hbm5vdCIsImQyIiwiZDEiLCJkJDAiLCJkJDEiLCJkMiQwIiwiZDEkMCIsImFsbCIsImxzMSIsImxzMiIsIm1fdW5pb24iLCJjb3N0X3VuaW9uIiwiY29zdDIiLCJjb3N0MSIsImxheW91dF9vZl9kb2MiLCJoIiwicG9zJDAiLCJrZXkiLCJ2YWx1ZSIsInZhbHVlJDAiLCJjb3N0Iiwib3ZlcmZsb3ciLCJ6IiwibGF5b3V0MSIsImxheW91dHMiLCJsYXlvdXQyIiwicCIsImMiLCJsMSQwIiwibGF5b3V0X29mX2RvYyQwIiwieF9jb3N0IiwieF9wb3MiLCJzZXhwX2FyZ3NfMDE4IiwiYXJnMF8wMTkiLCJyZXMwXzAyMCIsInJlczBfMDE1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwib2ZfYW5ub3RfMDI5IiwiYXJnMF8wMzAiLCJyZXMwXzAzMSIsInJlczBfMDM1IiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJib3gxJDAiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhcHBlbmRfbGFzdCQwIiwiYm94MSQxIiwiYW5ub3QkMCIsImJveGVzIiwiYm94ZXMxIiwibGVhZGluZyQwIiwiYm94ZXMyIiwiZXJyb3Jfc291cmNlXzAwMiIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJ4XzAwMyIsInBlcmNlbnRhZ2UiLCJyZXN1bHRzIiwic2V4cF9vZl9zeW50YXhfcmVzdWx0IiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsImFyZ18wMDgiLCJibmRzXzAwNCIsImFyZ18wMDYiLCJibmRzXzAwNCQwIiwic3ludGF4X3Jlc3VsdF9vZl95b2pzb24iLCJ5b2pzb24iLCJmaWVsZF95b2pzb25zIiwicmVzdWx0c19maWVsZCIsInBlcmNlbnRhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwicGVyY2VudGFnZV92YWx1ZSIsInJlc3VsdHNfdmFsdWUiLCJ5b2pzb25fb2Zfc3ludGF4X3Jlc3VsdCIsInZfcGVyY2VudGFnZSIsInZfcmVzdWx0cyIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImZpbmRfdmFyX3VwYXQiLCJuYW1lIiwidXBhdCIsInVwYXQkMCIsInVwYXQkMSIsInVwMSIsInVwYXQkMiIsInVwYXQkMyIsInVwMSQwIiwidXBhdCQ0IiwibCIsImFjYyIsInVwIiwiZmluZF9pbl9sZXQiLCJkZWYiLCJkZWYkMCIsInBsIiwidWwiLCJ1ZSIsImRlZiQyIiwiZGVmJDEiLCJmaW5kX2ZuIiwidWV4cCIsInVleHAkMCIsImwkMCIsImJvZHkkMCIsImwkMSIsImFyZ3MiLCJmbiIsInUiLCJ1ZXhwJDMiLCJ1MiIsInUxJDAiLCJsJDIiLCJ1ZXhwJDEiLCJ1ZXhwJDIiLCJ1MSIsInVsJDAiLCJ1MSQxIiwiYm9keSIsImwkMyIsInZhcl9tZW50aW9uX3VwYXQiLCJ2YXJfbWVudGlvbiIsInAiLCJ1cyIsImciLCJwZSIsImUiLCJ2YXJfYXBwbGllZCIsIngkMSIsInVleHAkNCIsInVleHAkNSIsIngkMiIsInVleHAkNiIsInVleHAkNyIsInUxJDIiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwiYXJncyQwIiwidTIkMCIsInUyJDEiLCJpc190YWlsX3JlY3Vyc2l2ZSIsImNoZWNrIiwicHJlZGljYXRlcyIsInByZWQiLCJsZW5ndGgiLCJwYXNzaW5nIiwicmVzIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsInNleHBfYXJnc18wMzAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wMzMiLCJyZXMwXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAxMyIsImVycm9yX3NvdXJjZV8wMjgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMzgiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNjAiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wOTQiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8xMDEiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xMjAiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xMzMiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8xNDgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwid3JvbmdfaW1wbF9vZl9zZXhwIiwib2ZfY29kZV8wMDEiLCJ4XzAwNCIsImhpbnQiLCJpbXBsIiwic2V4cF9vZl93cm9uZ19pbXBsIiwib2ZfY29kZV8wMDUiLCJoaW50XzAwOSIsImltcGxfMDA3IiwiYXJnXzAxMCIsImJuZHNfMDA2IiwiYm5kc18wMDYkMCIsIndyb25nX2ltcGxfb2ZfeW9qc29uIiwib2ZfY29kZSIsImltcGxfZmllbGQiLCJoaW50X2ZpZWxkIiwiaGludF92YWx1ZSIsImltcGxfdmFsdWUiLCJ5b2pzb25fb2Zfd3JvbmdfaW1wbCIsInZfaGludCIsInZfaW1wbCIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMTEiLCJ4XzAxNCIsImhpbnRzIiwidGVzdHMiLCJzZXhwX29mX2hpZGRlbl90ZXN0cyIsIm9mX2NvZGVfMDE1IiwiaGludHNfMDE5IiwidGVzdHNfMDE3IiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJoaWRkZW5fdGVzdHNfb2ZfeW9qc29uIiwidGVzdHNfZmllbGQiLCJoaW50c19maWVsZCIsImhpbnRzX3ZhbHVlIiwidGVzdHNfdmFsdWUiLCJ5b2pzb25fb2ZfaGlkZGVuX3Rlc3RzIiwidl9oaW50cyIsInZfdGVzdHMiLCJoaW50X29mX3NleHAiLCJzZXhwX29mX2hpbnQiLCJoaW50X29mX3lvanNvbiIsInlvanNvbl9vZl9oaW50Iiwic3ludGF4X3Rlc3Rfb2Zfc2V4cCIsInNleHBfMDI3IiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJzZXhwX29mX3N5bnRheF90ZXN0IiwiYXJnMV8wMzAiLCJhcmcwXzAyOSIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzeW50YXhfdGVzdF9vZl95b2pzb24iLCJ2MSIsInYxJDAiLCJ5b2pzb25fb2Zfc3ludGF4X3Rlc3QiLCJzeW50YXhfdGVzdHNfb2Zfc2V4cCIsInhfMDM0Iiwic2V4cF9vZl9zeW50YXhfdGVzdHMiLCJ4XzAzNSIsInN5bnRheF90ZXN0c19vZl95b2pzb24iLCJ0IiwieW9qc29uX29mX3N5bnRheF90ZXN0cyIsInYiLCJ5b3VyX3Rlc3RzX29mX3NleHAiLCJvZl9jb2RlXzAzNiIsInhfMDM5IiwicHJvdmlkZWQiLCJyZXF1aXJlZCIsInNleHBfb2ZfeW91cl90ZXN0cyIsIm9mX2NvZGVfMDQwIiwicHJvdmlkZWRfMDQ2IiwicmVxdWlyZWRfMDQ0IiwidGVzdHNfMDQyIiwiYXJnXzA0NyIsImJuZHNfMDQxIiwiYXJnXzA0NSIsImJuZHNfMDQxJDAiLCJhcmdfMDQzIiwiYm5kc18wNDEkMSIsInlvdXJfdGVzdHNfb2ZfeW9qc29uIiwicmVxdWlyZWRfZmllbGQiLCJwcm92aWRlZF9maWVsZCIsImZ2YWx1ZSQxIiwicHJvdmlkZWRfdmFsdWUiLCJyZXF1aXJlZF92YWx1ZSIsInlvanNvbl9vZl95b3VyX3Rlc3RzIiwidl9wcm92aWRlZCIsInZfcmVxdWlyZWQiLCJhcmckMSIsImJuZHMkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwieF8wNTAiLCJpbXBsX2dyYWRpbmciLCJtdXRhdGlvbl90ZXN0aW5nIiwidGVzdF92YWxpZGF0aW9uIiwic2V4cF9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJpbXBsX2dyYWRpbmdfMDU2IiwibXV0YXRpb25fdGVzdGluZ18wNTQiLCJ0ZXN0X3ZhbGlkYXRpb25fMDUyIiwiYXJnXzA1NyIsImJuZHNfMDUxIiwiYXJnXzA1NSIsImJuZHNfMDUxJDAiLCJhcmdfMDUzIiwiYm5kc18wNTEkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl95b2pzb24iLCJ0ZXN0X3ZhbGlkYXRpb25fZmllbGQiLCJtdXRhdGlvbl90ZXN0aW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX3ZhbHVlIiwibXV0YXRpb25fdGVzdGluZ192YWx1ZSIsInRlc3RfdmFsaWRhdGlvbl92YWx1ZSIsInlvanNvbl9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X2ltcGxfZ3JhZGluZyIsInZfbXV0YXRpb25fdGVzdGluZyIsInZfdGVzdF92YWxpZGF0aW9uIiwidmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uIiwicF9vZl9zZXhwIiwib2ZfY29kZV8wNTgiLCJ4XzA2MSIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJzZXhwX29mX3AiLCJvZl9jb2RlXzA2MiIsInN5bnRheF90ZXN0c18wODYiLCJoaWRkZW5fdGVzdHNfMDg0IiwiaGlkZGVuX2J1Z3NfMDgyIiwieW91cl9pbXBsXzA4MCIsInlvdXJfdGVzdHNfMDc4IiwiY29ycmVjdF9pbXBsXzA3NiIsInByZWx1ZGVfMDc0IiwicG9pbnRfZGlzdHJpYnV0aW9uXzA3MiIsInByb21wdF8wNzAiLCJtb2R1bGVfbmFtZV8wNjgiLCJ2ZXJzaW9uXzA2NiIsInRpdGxlXzA2NCIsImFyZ18wODciLCJibmRzXzA2MyIsImFyZ18wODUiLCJibmRzXzA2MyQwIiwiYXJnXzA4MyIsImJuZHNfMDYzJDEiLCJhcmdfMDgxIiwiYm5kc18wNjMkMiIsImFyZ18wNzkiLCJibmRzXzA2MyQzIiwiYXJnXzA3NyIsImJuZHNfMDYzJDQiLCJhcmdfMDc1IiwiYm5kc18wNjMkNSIsImFyZ18wNzMiLCJibmRzXzA2MyQ2IiwiYXJnXzA3MSIsImJuZHNfMDYzJDciLCJhcmdfMDY5IiwiYm5kc18wNjMkOCIsImFyZ18wNjciLCJibmRzXzA2MyQ5IiwiYXJnXzA2NSIsImJuZHNfMDYzJDEwIiwicF9vZl95b2pzb24iLCJ0aXRsZV9maWVsZCIsInZlcnNpb25fZmllbGQiLCJtb2R1bGVfbmFtZV9maWVsZCIsInByb21wdF9maWVsZCIsInBvaW50X2Rpc3RyaWJ1dGlvbl9maWVsZCIsInByZWx1ZGVfZmllbGQiLCJjb3JyZWN0X2ltcGxfZmllbGQiLCJ5b3VyX3Rlc3RzX2ZpZWxkIiwieW91cl9pbXBsX2ZpZWxkIiwiaGlkZGVuX2J1Z3NfZmllbGQiLCJoaWRkZW5fdGVzdHNfZmllbGQiLCJzeW50YXhfdGVzdHNfZmllbGQiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJmdmFsdWUkOCIsImZ2YWx1ZSQ5IiwiZnZhbHVlJDEwIiwic3ludGF4X3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX2J1Z3NfdmFsdWUiLCJ5b3VyX2ltcGxfdmFsdWUiLCJ5b3VyX3Rlc3RzX3ZhbHVlIiwiY29ycmVjdF9pbXBsX3ZhbHVlIiwicHJlbHVkZV92YWx1ZSIsInBvaW50X2Rpc3RyaWJ1dGlvbl92YWx1ZSIsInByb21wdF92YWx1ZSIsIm1vZHVsZV9uYW1lX3ZhbHVlIiwidmVyc2lvbl92YWx1ZSIsInRpdGxlX3ZhbHVlIiwieW9qc29uX29mX3AiLCJ2X3N5bnRheF90ZXN0cyIsInZfaGlkZGVuX3Rlc3RzIiwidl9oaWRkZW5fYnVncyIsInZfeW91cl9pbXBsIiwidl95b3VyX3Rlc3RzIiwidl9jb3JyZWN0X2ltcGwiLCJ2X3ByZWx1ZGUiLCJ2X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInZfcHJvbXB0Iiwidl9tb2R1bGVfbmFtZSIsInZfdmVyc2lvbiIsInZfdGl0bGUiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImFyZyQ5IiwiYm5kcyQ5IiwiYXJnJDEwIiwiYm5kcyQxMCIsImtleV9vZl9zZXhwIiwic2V4cF8wOTMiLCJhcmcxXzA5MCIsImFyZzBfMDg5IiwicmVzMF8wOTEiLCJyZXMxXzA5MiIsInNleHBfb2Zfa2V5IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBvc19vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX29mX3BvcyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJwb3Nfb2ZfeW9qc29uIiwieW9qc29uX29mX3BvcyIsInNwZWNfb2Zfc2V4cCIsInhfMTExIiwic2V4cF9vZl9zcGVjIiwieF8xMTIiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwidHJhbnNpdGlvbmFyeV9zcGVjX29mX3NleHAiLCJ4XzExNCIsInNleHBfb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwieF8xMTUiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2ZfeW9qc29uIiwieW9qc29uX29mX3RyYW5zaXRpb25hcnlfc3BlYyIsIm1hcCIsImYiLCJ3cm9uZ19pbXBsIiwiZWRzX29mX3NleHAiLCJ4XzExNyIsInNleHBfb2ZfZWRzIiwieF8xMTgiLCJlZHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2VkcyIsInN0YXRlX29mX3NleHAiLCJ4XzEyMSIsImVkcyIsInBvcyIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMTI1IiwicG9zXzEyMyIsImFyZ18xMjYiLCJibmRzXzEyMiIsImFyZ18xMjQiLCJibmRzXzEyMiQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImExIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwic2V4cF8xMzgiLCJhcmcxXzEzNSIsImFyZzBfMTM0IiwicmVzMF8xMzYiLCJyZXMxXzEzNyIsInNleHBfMTMyIiwiYXJnMV8xMjkiLCJhcmcwXzEyOCIsInJlczBfMTMwIiwicmVzMV8xMzEiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJhcmcxXzE0NCIsImFyZzBfMTQzIiwicmVzMF8xNDUiLCJyZXMxXzE0NiIsImFyZzFfMTQwIiwiYXJnMF8xMzkiLCJyZXMwXzE0MSIsInJlczFfMTQyIiwicGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImVkaXRvcl9vZl9zdGF0ZSIsImkiLCJwdXRfZWRpdG9yIiwic3RhdGUiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJpZHhfb2ZfcG9zIiwicG9zX29mX2lkeCIsImlkeCIsInN3aXRjaF9lZGl0b3IiLCJpbnN0cnVjdG9yX21vZGUiLCJleGVyY2lzZSIsInppcHBlcl9vZl9jb2RlIiwiY29kZSIsInppcHBlciIsInRyYW5zaXRpb24iLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInlvdXJfdGVzdHMkMCIsInlvdXJfaW1wbCQwIiwiaGlkZGVuX2J1Z3MkMCIsImltcGwkMCIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZHNfb2Zfc3BlYyIsInNldHRpbmdzIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwidGVybV9vZiIsInN0aXRjaDMiLCJlZDEiLCJlZDIiLCJlZDMiLCJzdGl0Y2hfdGVybSIsImluc3RydWN0b3IiLCJ5b3VyX2ltcGxfdGVybSIsInByZWx1ZGVfdGVybSIsInVzZXJfaW1wbF90ZXJtIiwidGVzdF92YWxpZGF0aW9uX3Rlcm0iLCJ1c2VyX3Rlc3RzX3Rlcm0iLCJoaWRkZW5fdGVzdHNfdGVybSIsInN0aXRjaF90ZXJtJDAiLCJzdGl0Y2hfc3RhdGljIiwibWsiLCJpbmZvX21hcCIsInN0aXRjaF9zdGF0aWMkMCIsImhpZGRlbl9idWdzX2tleSIsImtleV9mb3Jfc3RhdGljcyIsInNwbGljZWRfZWxhYnMiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwiZWxhYiIsInMiLCJoaWRkZW5fYnVnIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGF0aWNzIiwic3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzIiwic3RpdGNoX2R5bmFtaWMiLCJyZXN1bHRfb2YiLCJyZXN1bHRzJDAiLCJ0ZXN0X3ZhbGlkYXRpb24kMCIsInVzZXJfaW1wbCQwIiwidXNlcl90ZXN0cyQwIiwiaW5zdHJ1Y3RvciQwIiwic3RpdGNoX2R5bmFtaWMkMCIsImVkaXRvcl9wcCIsInNlcmlhbGl6YXRpb24iLCJleHBvcnRfbW9kdWxlIiwicmVjb3JkIiwiZGF0YSIsInRyYW5zaXRpb25hcnlfZWRpdG9yX3BwIiwiZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlIiwiZXhwb3J0X2dyYWRpbmdfbW9kdWxlIiwiaGVhZGVyIiwiYmxhbmtfc3BlYyIsInJlcXVpcmVkX3Rlc3RzIiwicHJvdmlkZWRfdGVzdHMiLCJudW1fd3JvbmdfaW1wbHMiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInhfMTU0Iiwic2V4cF8xNTMiLCJhcmcxXzE1MCIsImFyZzBfMTQ5IiwicmVzMF8xNTEiLCJyZXMxXzE1MiIsImV4ZXJjaXNlX2RhdGEiLCJjdXJfZXhlcmNpc2UiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMTU4IiwiY3VyX2V4ZXJjaXNlXzE1NiIsImFyZ18xNTkiLCJhcmcxXzE2MSIsImFyZzBfMTYwIiwicmVzMF8xNjIiLCJyZXMxXzE2MyIsImJuZHNfMTU1IiwiYXJnXzE1NyIsImJuZHNfMTU1JDAiLCJleGVyY2lzZV9leHBvcnRfb2ZfeW9qc29uIiwiY3VyX2V4ZXJjaXNlX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfdmFsdWUiLCJjdXJfZXhlcmNpc2VfdmFsdWUiLCJ5b2pzb25fb2ZfZXhlcmNpc2VfZXhwb3J0Iiwidl9leGVyY2lzZV9kYXRhIiwidl9jdXJfZXhlcmNpc2UiLCJzZXJpYWxpemVfZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJudW1fcGFzc2luZyIsInRlc3Rfc3VtbWFyeV9zdHIiLCJoaWRkZW5fYnVnX3N0YXR1cyIsInRlc3RfdmFsaWRhdGlvbl9kYXRhIiwiaGlkZGVuX2J1Z19kYXRhIiwiaGlkZGVuX2J1Z19kYXRhJDAiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSQwIiwidmFsaWRhdGlvbl90ZXN0X21hcCIsImhpZGRlbl9idWdfdGVzdF9tYXAiLCJmb3VuZCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwibWskMCIsImhpZGRlbl9idWdzX3N0YXRlIiwicGVyY2VudGFnZSQwIiwibnVtX3Bhc3NlZCIsInN1bW1hcnlfc3RyIiwidG90YWwiLCJtayQxIiwiaCIsInN5bnRheF9yZXN1bHRzIiwiciIsIm1rJDIiLCJ0ZXN0X3Jlc3VsdHMkMCIsInN0YXR1c2VzIiwiaGludGVkX3Jlc3VsdHMiLCJwZXJjZW50YWdlJDEiLCJzeW50YXhfcmVwb3J0IiwidGVzdF9zdW1tYXJ5X3N0ciQwIiwibWskMyIsInN0aXRjaGVkX2R5bmFtaWNzIiwib3ZlcmFsbF9zY29yZSIsImltcGxfZ3JhZGluZ19yZXBvcnQiLCJtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCIsInRlc3RfdmFsaWRhdGlvbl9yZXBvcnQiLCJ0dl9tYXgiLCJ0dl9wb2ludHMiLCJtdF9tYXgiLCJtdF9wb2ludHMiLCJpZ19tYXgiLCJpZ19wb2ludHMiLCJ0b3RhbF9wb2ludHMiLCJvdXRwdXRfaGVhZGVyIiwiREVCVUciLCJPTURfREVCVUciLCJkZWJ1ZyIsIndhcm4iLCJtc2ciLCJ3ZSIsInRyYWNrZml4IiwicmFpc2UiLCJlIiwib2ZfbGlzdCIsImwiLCJyIiwiZnNwbGl0X3JldiIsImYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwicmV2IiwiaWRfb2Zfc3RyaW5nIiwiaWRzIiwicyIsIm4iLCJvdXQiLCJzdGFydGVkIiwiaSIsImMiLCJpJDIiLCJpJDAiLCJpJDEiLCJzJDAiLCJpJDQiLCJsYXN0X3RyYWlsaW5nIiwiaSQzIiwiaHRtbGVudGl0aWVzIiwibWQiLCJiIiwiaiQxIiwiaiIsImokMCIsImokNCIsImokMiIsImokMyIsIm1pbmltYWxpemVfYmxhbmtzIiwiZiQwIiwiZWF0IiwiZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMiLCJodG1sIiwiaHRtbCQwIiwiY3V0X29uX2NoYXJfZnJvbSIsInJlbW92ZV9wcmVmaXhfc3BhY2VzIiwiaHRtbCQyIiwicmVzIiwiYWZ0ZXJfZXEiLCJuYW1lIiwibmFtZSQwIiwiYWZ0ZXJfZXEkMCIsInJlc3QiLCJ2YWx1ZSIsIm5ld19zIiwiYSIsInJlcyQwIiwiaHRtbCQxIiwiZXh0cmFjdF9pbm5lcl9odG1sIiwicCIsImh0bWxfdm9pZF9lbGVtZW50cyIsInN5bWJvbCIsImwxIiwibDIiLCJzZWxmXzEiLCJ0aXRsZSIsInVybCIsImxuIiwibG9vc2VfY29tcGFyZSIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsImUxIiwidGwyJDAiLCJlMiQwIiwidGwxJDAiLCJlMSQwIiwidGwyIiwiZTIiLCJ0bDEiLCJ0bDIkMSIsImUyJDEiLCJ0bDEkMSIsImUxJDEiLCJ0bDEkMiIsImMxIiwidGwyJDIiLCJjMiIsImkkNSIsInRsMSQzIiwidGl0bGUxIiwidDEkMSIsImhyZWYxIiwidGwyJDMiLCJ0aXRsZTIiLCJ0MiQxIiwiaHJlZjIiLCJpJDYiLCJpJDciLCJpJDgiLCJ0bDIkNCIsImZhbGxiYWNrMiIsIngyIiwibmFtZTIiLCJyZWZfY29udGFpbmVyMiIsInRsMSQ0IiwiZmFsbGJhY2sxIiwieDEiLCJuYW1lMSIsInJlZl9jb250YWluZXIxIiwiZTEkMiIsInRsMiQ1IiwiZTIkMiIsInRsMSQ1IiwiaSQxMSIsImkkMTIiLCJpJDkiLCJjZmYiLCJpJDEwIiwibDEkMCIsImwyJDAiLCJ0bDIkNiIsImUyJDMiLCJ0bDEkNiIsImUxJDMiLCJpJDEzIiwic2VsZl8yIiwiZW1wdHlfZXh0ZW5zaW9uIiwibm9ybWFsaXNlX21kIiwibG9vcCIsInYiLCJ0bCQyIiwidiQwIiwibG9vcCQwIiwidGwkMyIsInYkMSIsInRsJDQiLCJ2JDIiLCJ0bCQ1IiwidiQzIiwidGwkNiIsInYkNCIsInRsJDciLCJ2JDUiLCJ0bCQxMCIsInRsJDkiLCJ0bCQ4IiwidGwkMTEiLCJ0bCQxMiIsInYkNiIsInRsJDEzIiwidiQ3IiwidGwkMTQiLCJ2JDgiLCJ0bCQxNSIsInYkOSIsInRsJDE2IiwidiQxMCIsInRsJDE3IiwidiQxMSIsInRsJDE4IiwidiQxMiIsImhyZWYiLCJ0bCQxOSIsInYkMTMiLCJzZWxmXzMiLCJ2aXNpdCIsImwkMSIsImwkMiIsImwkMyIsImwkNCIsImwkNSIsImwkNiIsImwkNyIsImwkOCIsImwkOSIsImwkMTAiLCJsJDExIiwibCQxMiIsImwkMTMiLCJsJDE0IiwibCQxNSIsImwkMTYiLCJsJDE3IiwibCQxOCIsImwkMTkiLCJ0bCQyMCIsImwkMjAiLCJ0bCQyMSIsImwkMjEiLCJ0bCQyMiIsImwkMjIiLCJ0bCQyMyIsImwkMjMiLCJ0bCQyNCIsImwkMjQiLCJ0bCQyNSIsImwkMjUiLCJ0bCQyNiIsImwkMjYiLCJ0bCQyNyIsImwkMjciLCJ0bCQyOCIsImwkMjgiLCJkZWZhdWx0X2xhbmd1YWdlIiwidGV4dF9vZl9tZCIsIm1kJDAiLCJ0IiwibWQkMSIsIm1kJDIiLCJjJDAiLCJib2R5IiwiYm9keSQwIiwidCQwIiwidCQxIiwicSIsImFsdCIsIml0ZW0iLCJkZWZhdWx0X2NvZGVfc3R5bGlzdCIsImxhbmciLCJjb2RlIiwiZmlsdGVyX3RleHRfb21kX3JldiIsInJlbW92ZV9saW5rcyIsImh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwib3ZlcnJpZGUiLCJwaW5kZW50IiwibmwyYnIiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJodG1sX29mX21kIiwibWQkMyIsIm1kJDQiLCJlJDIiLCJtZCQ1IiwiZSQzIiwicyQzIiwiaWgkMCIsImlkJDAiLCJtZCQ2IiwibWQkNyIsImUkNCIsIm1kJDgiLCJlJDUiLCJzJDQiLCJpaCQxIiwiaWQkMSIsIm1kJDkiLCJtZCQxMCIsImUkNiIsIm1kJDExIiwiZSQ3IiwicyQ1IiwiaWgkMiIsImlkJDIiLCJtZCQxMiIsIm1kJDEzIiwiZSQ4IiwibWQkMTQiLCJlJDkiLCJzJDYiLCJpaCQzIiwiaWQkMyIsIm1kJDE1IiwibWQkMTYiLCJlJDEwIiwibWQkMTciLCJlJDExIiwicyQ3IiwiaWgkNCIsImlkJDQiLCJtZCQxOCIsInMkOCIsInMkOSIsInMkMTAiLCJtZCQxOSIsInMkMTEiLCJtZCQyMCIsInMkMTIiLCJzJDE0IiwibmV3X2MiLCJsYW5nJDAiLCJzJDE1IiwibmV3X2MkMCIsInMkMTYiLCJzJDE3IiwicyQxOCIsImZhbGxiYWNrIiwidGV4dCIsInJjIiwicyQxOSIsInRpdGxlJDAiLCJocmVmJDAiLCJmYWxsYmFjayQwIiwicmMkMCIsInMkMjAiLCJ0aXRsZSQxIiwic3JjIiwidGFnbmFtZSIsImF0dHJzJDEiLCJhdHRycyQyIiwicyQyMiIsInN0cmluZ19vZl9hdHRycyIsImF0dHJzIiwiYXR0cnMkMCIsInMkMjEiLCJhdHRycyQzIiwidGFnbmFtZSQwIiwiYXR0cnMkNCIsInMkMjMiLCJzJDI0IiwicyQyNSIsInMkMjYiLCJzJDI3IiwicyQyOCIsInMkMjkiLCJzJDMwIiwidGl0bGUkMiIsInNyYyQwIiwiYWx0JDAiLCJzJDMxIiwieCIsInMkMzIiLCJzJDMzIiwicyQxMyIsImxpIiwiY3MiLCJoZWFkZXJzX29mX21kIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInN0cmluZ19vZl90YWdzdGF0dXMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsImFkZF90b2tlbl90b19ib2R5IiwidCQ2IiwiYWRkX3Rva2VuX3RvX2JvZHkkMCIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImZpbmRfc3RhcnQiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdGh1bmsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytibGFrZTIuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGVhcF9ibG9jay9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2R5bmFycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9yZWNvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9nbG9iYWxpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDJfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9wcHhfaW5saW5lX3Rlc3RfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbF9wYXRjaGVzL2pzX29mX29jYW1sX3BhdGNoZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZmlsZW5hbWVfYmFzZS9maWxlbmFtZV9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdl9tYXAvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZWFwX2Jsb2NrL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGVfbW9kdWxlX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2ludDYzYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS90aHVuay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9lYWdlcl9kZWZlcnJlZC9lYWdlcl9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZWFnZXJfZGVmZXJyZWQvZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2J1cy9idXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29yX25vdF9hdXRob3JpemVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfc2hhcGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX21ldGFkYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfbWFwL2luY3JfbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3B0bWFwL3B0bWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9jb2RlYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9sZXhlcl91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vYmFzaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vc2FmZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmluZy9ydW50aW1lL3BweF9kZXJpdmluZ19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtP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O09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BNkpFMnRHO09BQ0FDO09BRUFDO09BU0FDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BT0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSUFDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BVUFDO09BQ0FDO09BRUFDO09BT0FDO09BSUFDO09BSUFDO09BU0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSURDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRDFzRztPQVlBd1k7T0FDQUU7T0FPQTlYO09BQ0FFO09BQ0E2ckc7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7SSxVO0ksVTtJLFU7SSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSxNOzs7OztJO0ssSSxNOzs7Ozs7Ozs7Rzs7STs7OztJOzs7Szs7Ozs7Ozs7Ozs7O0ksaUIsc0I7SSxxQixzQjtJLHNCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7eUIsTzs7eUIsTzs7eUIsTzs7Ozs7O0ssTzs7STtJO0ksTztHOztJO0s7SyxRO2dCOztJOzs7OzJCO21DOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyw0QyxnQjtHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNOzs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssbUI7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7O0ksWTs7Ozs7O3dDOztLO007UTtrQjs7O0ksZ0I7STs7Tzs7Ozs7SSxXOzs7SSxVO0ksTzs7MkI7O0c7O0ksVTtJLE87OzJCOztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssTztJLE87OztjLE07YTs7O0c7NkIsTyxtQzs7OytDLE87b0QsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07Ozs7SSxTO0k7O0ksTTtHOztJLE87OztjOzs7YTs7RztHO0k7O087O3lCLGtCLG9COztJO0ksTzs0Qyx3QjtHOztJLFM7SSw0QjtJLFc7Rzs7STs7aUI7Szs7O00sYTs7OztHOztJLFk7SSxrQyxNO0k7OztJO0k7OztPOzs7OztRLE87TyxXOzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7OztxQjtLOztHOztJO0k7Z0IsVzs7O00sTTtLOzs7TSxJO007Ozs7O0c7O0k7STs7OztPOzs7Ozs7OzttQjtLLE07O0c7O0k7STtlLFc7O2lCO0ssOEI7Ozs7Rzs7STtJO21CLFc7O00sTTtLLDRCLHFCOzs7OztHOztJO0ssTTtJO0ssYzs7OztJO3lCLE87d0IsTztLO007Ozs7TTs7Ozs7Rzs7STtJOzs7Z0I7SyxrQyxPO0ssVzs7OztHOztJO0k7OztNLEc7Tzs7Ozs7OztLO2E7Ozs7Rzs7SSxRLE87O0ksTztHO0c7STs7O0k7O0s7O0k7aUI7SyxHLHFDO0s7OztHOztJO0k7aUI7SyxLLDRCO0s7OztHOztJO0s7OztTOzs7WSxZOztZO1c7O0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxlO007TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7OztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7O0ksVTtJOzs7TztPLE87TTs7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7Ozs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7O0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOzs7O0ksYztJO2lDLE8sZ0M7aUMsNkI7NkIsTyx1QjtHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLE87SyxTOztJLGM7SSxXO0ksTztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STsrQjtHOztJOytCO0c7O0k7O0c7O0k7K0I7Rzs7SSxHLGtCO0ksSTtJO2dDOzs7Ozs7Yzs7Ozs7O087USxZOzs7Ozs7OztHOztJLGM7Ozs7O0s7O007Ozs7Szs7Ozs7TyxxQjs7Ozs7Ozs7TTs7O0k7Rzs7SSxRO0ksVztJLE87Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1EsMEM7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7UTs7Ozs7TTtPO08sWTs7Ozs7Szs7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7Ryx5Qjs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7Ozs7Ozs7STs4QixxQjswQiw0Qjs7STs7Ozs7Ozs7dUIsTTs7STtHOztJOztJO0ksTztHOztJO0c7O0k7SyxZOzs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7O1M7VTtXOztVOzs7O2lDLE87Ozs7OztJO0k7STtHO0c7STtJOzs7O0c7STs7TyxJLEksTzs7Ozs7O087TztRO1M7UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHOztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7STs7Tzs7MEIsTyxzQzs7SSxPOzs7ZTsyQjtlLHFCOzs7Ozs7Ozs7OztHOztJO0ksYztrQjtJLEk7STtLLE87STtJOztLLE87SSxPOzs7Ozs7Ozs7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TyxJOzs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7TztPLEk7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7OztLLE87O0c7O0k7O0s7Tzs7O1U7VSxPLGdDO1M7OztLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STtJOzs7TztnQztxRDtPLE87Ozs7Ozs7O007O0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7O0ksTzs7O2MsZTtjOzs7O2UsTztlLE87YyxXO2E7OztHOztJLFk7STtHOztJOztPOztnQyxPLHFDOztJLE87RztHO0k7STtNOzt1QixpQjs7SSxNO0k7TTs7dUIsaUI7O0ksTTtJLFk7O0k7Ozs7Ozt5QjtxQztxQztxQztxQzs7OztxQzs7c0M7c0M7c0M7c0M7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTzs7O1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOzs7SyxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O2U7ZSxPO2M7OztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVO0s7Yzs7O2lCO2lCLFc7Z0I7O0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SyxPOztzQyxPLDZCOzs7STs7SyxVO0ssTywwQztJOztLLE87OztlLE8sbUI7Yzs7O0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNO1MsTzs7bUMsTyx3Qjs7O1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7O21CO2tCOzs7UTs7UyxRO1M7OztZO1ksTztXOztTO1E7MkIsaUQ7O1MsUSxtQjtTO3FDLE8sMkI7UztROztTO1UsSSxVLDRCOzs7O1csUTtXO1c7VztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7RztJOzs7Ozs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7Ozs7Ozs7STtXO2M7O0ksTztHO3dCLFM7Ozs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTO1UsTTtVO1k7YzsrQzs7VTtZOzs7ZTtnQjswQjs7Ozs7O2dCLEksWTs7O2lCLE07O2dCOztlLGE7OztpQixNOzs7OztnQjs7bUI7Z0IsSSxZOzs7aUIsTTs7O2dCOzttQjs7Ozs7Z0IsSSxjOzs7aUIsTTs7O2dCOztlLE07Yzs7Ozs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7OzRCLDBCOztJO0ssTzs7O2U7O3lCOzs7Ozs7Yzs7SSxNO0c7O3lCLE8seUI7SSxjO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Tzs7O1U7O1csZ0I7OztVO1M7OztJO0c7O0k7SyxNOztJOzs7Tzs7O007O0ksTzs7O2M7O2dDLGlDOzs7O2E7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7SSxzQjtJLGU7SSxxQjtvQixZO3FCLFk7c0IsWTs7SSxPO2tCOztHOztJLFc7O0ssTzttQjs7STtJLE87Rzs7STtLO007TSxNOzs7Ozs7OztJLGlCO0c7RztJLGU7SSxjOztJLE07RztHO0k7Ozs7OztJLG1CO0ssTTtJO0k7STtJOzs7OztHOztJO0c7O0ksVTtJLE87Rzs7SSxVO0ksVztHOztJLE87OztjO2UsSztlLFc7O3lCOzt3Qjs7eUI7O3dCOzthOztHOztJOzs7SztzQzs7O0s7c0M7STtJOzs7Rzs7SSxtQjtLLE07STtLO087O3FCLDRCOztLO087O3FCLDRCOztpQjs7O2lCOzs7Ozs7YztjOztHOztJLG1CO0ssTTs7SyxlO00sTztLLGM7O2U7O0k7STs7O08sUztPO08sWTtPO007Ozs7O0c7aUMsZ0M7O0ksbUI7SyxNO0k7Ozs7Z0I7Ozs7Z0I7O0c7O0ksTztHO0c7SSxTO0k7TTs7O1M7Ozs7bUI7K0IsbUI7O1E7Ozs7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJO0ssYztLOzs7OztNLFc7OztHOztJLG1CO0ssTTtJOzs7Ozs7O00sSSw4Qjs7Szs7Ozs7TSxPOzs7Rzs7SSxtQjtLLE07STs7Ozs7OztZOzs7TTtPOztRLFU7Ozs7Ozs7O2tCOzs7Szs7Ozs7SyxlO0s7YTs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7SSxzQjtJLFU7SSxPO0c7O0k7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJOzs7Ozs7Ozs7O0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtJO0k7STtJO0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7TTtROzt3Qjs7TTs7Ozs7OztHO0c7STtJO0k7STs7O1E7OztPOztROztXOztXO21COztPOzs7STtJOzs7UTs7O087dUIsMEM7OztJO3lCLE8sc0M7O0k7O087O087O087O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7O0c7O0k7O087O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7TztTOzs7WTs7YTthO1k7OztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztvQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0s7Tzs7dUI7O0s7OztHO0csSSxtQjs7STs7O0c7O0ksTzs7O2M7YztlO3VCO2U7ZTtlLFU7ZTs7Ozs7OzZCOztnQjs7O2E7O0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHO0k7STs7Ozs7O0k7OztHOztJOztLO0s7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7SSxPOzs7O2U7ZTtnQjtnQjs7ZSxPOzs7OztjOzs7OztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7STs7OztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO087Ozs7OztLO0k7STtHOztJO0s7Tzs7MkIseUI7OztLO087OztVOztTOzs7OztLLEksZ0I7Szs7O1EsbUI7OztPOzs7O1E7O0k7SSxPOzs7Yzs7Ozs7O2U7Ozs7O2UsUTs7O2U7O2M7YTs7Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjtLO2E7OztnQjs7OztnRDs7OzhDO2dCO2dCOzt1QztlOzs7STtJOzs7OzswQzs7O0ksVztJOztLOzs7UTtRLE87OztpQiw2QjtPOztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7O0s7OztROztTO1E7UyxnQztRO087O0ssTzs7STs7Szs7OztNO1E7VTs7O2E7WTs7TSxROzs7SyxHLHdDLFM7TSxVO007O0ssVTtLLE87NkM7O0ksTzs0QztHO0c7STtNO3VDO0ksTTtJO007Ozs7Ozs7O0k7TTt1Qzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxJLEksTTs7Ozs7O0ksd0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SztLOztJLFU7O0ssTTtJO0c7aUMsa0IsUzs7STtLO087c0MsNEI7SyxTO0ssSTs7O0s7Ozs7SztNLFE7OztLOzttQixPLHlDOztLO0s7O3VCLE8sbUM7SyxPOztJO0c7O0k7SztPO3NDLDRCO0s7Tzs7cUIsTyw4Qjs7STtHOztJLFk7O0ksTztHOzs7Ozs7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssTTtLLGlDO0ssTTtLLE07OztLOzs7OzhCOzs7Ozs7Ozs7UTs7OztJOzs7Uzs7Ozs7Ozs7Ozs7OztJO0ssUTtLO00sWTtNLGE7TztNO08sVTtPOzs7Z0IsMkI7O0k7OztJO0kscUI7SSxvQjs7SztLLGU7OztLLE07STtJO2E7O0c7O0ksTzs7Ozs7Yzs7Ozs7O21CO3FCOzs7d0IsSzt5Qjt3Qjt5Qjt5QjsyQjs7Ozs7eUIsTTt5QixVO3dCO3lCLFU7eUI7Ozs7K0M7Ozt1Qjs7O2U7Z0I7OztvQjtzQjs7O3lCOzt3QzswQjs7NkI7Ozs7OzBCLE87OytDLHlCOzs7eUI7d0I7O2dCLGtDO2dCLE07O2tCOzs7O2U7Z0I7Z0IsTTtnQixNO2dCLGlDO2dCLE07Ozs7Ozs7Ozs7Ozs7bUIsTTs7Ozs7a0I7Ozs7Ozs7Ozs7O2M7YTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztnQyxvQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTtHOzs7TTtNLE87OztnQixPO2U7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLE8sb0M7O0k7O0ssTTs7O08sdUIsNkM7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7STs7O1E7UTs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7cUI7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFM7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0ksSSx5QjtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TSxPOzs4Qjs7O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs4Qjs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007SztLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7Uzs7O1ksVztZLE87Vzs7O00sMEI7SztLO007UTs7OEIsc0IsVzs7TTtROzs7Ozs7VyxPOzs7cUI7OztnQzs7Z0M7Ozs7OztzQixPOzs7cUI7c0IsWTs7cUIsTzs7O1U7O0s7STtJOzs7O0s7Ozs7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0c7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7USxPOztROztROztROztROztROztROztROztRO2dCOzs7Ozt3QjtPLFc7TyxPOzs7O1EsTTs7UTtTLE87UyxPO1EsTzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87Ozs7aUI7OztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OzJCOztPOztRLE87TyxPOzs7TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VTs7YTtVLE87OztPOzs7O1E7USxPO1EsTztPOztVLE87O1UsTzs7O1UsTzs7Ozs7O1E7O1MsTztTLE87USxPOzs7USxNO087USxPO1EsTztRLE87USxPO08sTzs7OztROzs7O1M7Vzs7UyxPO1MsTztTLE87USxPOzs7O1EsTTtPOztRO1U7USxPO1EsTztPLE87O087O1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87OztPLE87O087O1EsTztRLGE7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztPLGtCO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxTO087USxNOzs7UTtTLFM7UyxPO1MsTzs0Qjs7UTtTLE87UyxPOzRCO08sTzs7Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7RztJOzs7OztJLG1CO0k7STtLO0s7SztLO087O3lCLG1EOzs7O0s7Ozs7a0M7Ozs7Z0I7O0k7Rzs7STs7Ozs7O2dCOzs7a0I7Ozs7Ozs7O1E7OztJO0ksYzs7Ozs7Ozs7Ozs7OztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCLHlCOztJOzs7SSxNO0c7O0k7OztPOzs7OztPO1E7O1MsTztnQjs7O08sTzs7Ozs7OztpQixPOzs7Ozs7Ozs7Z0I7O007O0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxVO1MsTzs7O21CO29COzJCO3FCO29COzs7OzBDOzs7a0I7OztROztTLE87OzttQjtvQjsyQjtxQixNO29COzs7OztxQixPOzs7a0I7OztROztTO1M7OztZO2EsVTs7O1c7O1MsTzs7O21CO29CLEs7b0I7O2tCOztROzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7VTtZLDJDO1U7VTtVOzs7O1csbUI7cUI7Vzs7Ozs7Uzs7VTtZOzs7O2U7ZSxPOzs7eUIsSSxJLE07Ozs7O2tDOzt5Qjt3Qjs7O2M7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7O2tCLFE7O1M7OztVLGE7Uzs7O1ksTzs7O3NCOztzQjtxQjs7Vzs7UztVLFc7VSxhO1U7O1U7b0I7VTs7VTtVO1UsTztTO1M7Ozs7Vzs7WTs7O1c7Ozs7O1M7O1UsOEI7VSxrQjtTOzs7WTs7Ozs7WTthO2E7WTthOzs7Z0I7Z0IsTztlOzs7WTtXOztTOztZO1MsTzs7O21CO29CLE07Ozs7b0I7OztvQjs7NkI7OztnQzsrQjs7OzttQjtvQjs7b0I7b0I7c0I7OzttQjtrQjs7UTs7UztTLE87a0Q7UTs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7OztLLE07Ozs7USxrRDtRLE87Tzs7d0IsUzt3QixTOztvQixjOzBCLE8sNEM7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixTOzBCLFM7c0IsYzs7SSxPO0c7Ozs7Ozs7O3NCOzJCOzJCOzs7Ozs7Ozs7OzsyQjsyQjsyQjs7MkI7MkI7MkI7c0I7O3NCO3NCO3NCOzs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksOEI7OztPOztRO1U7Ozs7YSxRO2EsTztZO1EsTTtPLE87OztPLE87OzJCLE87O0c7RztJOzs7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQjtLLE87O0c7O0k7STsyQjtLLFE7VztLOzs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7O0s7O0k7Rzs7O0s7O0k7STtHOzs7OzswQiw0Qjt5QixPLHVDOzs7Ozs7OztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O2M7YzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO087USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0I7aUI7O3dCOztZO29COztzQjtpQztXOzs4QjtPOzs7VyxPOzs7cUI7cUI7b0I7OztPOzs7OztNO007TztPLEk7Ozs7Ozs7Ozs7TyxVOzs7Ozs7Ozs7O1E7UztTO1M7UztTO1M7UztRLEc7OztTO1U7Z0M7VTtTOzs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7OzthOztjO2M7OztjO2M7O2M7Ozs7O2M7Ozs7O2E7Ozs7Ozs7O1k7VSxXO1M7OztVO1c7Ozs7O2M7Yzs7Ozs7Ozs7YTt3Qjs7UTs7OztVLE07Uzs7VTs7VztXO1c7OztjOztlOztlOztlO2M7YTs7cUI7Ozs7OztRO1M7O1k7d0I7WTs7OzthO2U7OztZLFc7O1M7O1k7WSxPOztROztPLE07MkM7O00sTTsyQzs7O0ksTTtHOztJO0s7TSxLO007UTs7MEIsTywyQjswQixhOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOztTLE87OzsrQix5QjtROztTLE87OzsrQix5QjtROztTO1E7O1M7UTs7UztROzBCLHVCOztTO1M7UztTO1E7O1M7Ozs7bUI7bUI7a0I7UTs7UztVO1U7O1U7Ozs7VyxzQjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVOzs7O1E7OztVOzs7b0I7Ozs4QjsrQjsrQixNOytCOzhCOzs7Ozt1Qzs7NkI7bUI7Uzs7VTs7O29COzs7OEI7K0I7K0IsTTsrQjs4Qjs7Ozs7dUM7OzZCO21CO1M7OztXLE87Ozs7cUI7OzsrQjsrQjt1Qzs7OEI7b0I7VTtVO1csa0QsYztXO1c7MEQsYztXO1c7YTs7OztnQixPOzs7OzBCLE87Ozs7b0MsWTs7O3FDOzs7b0M7bUM7eUI7ZTtXO1c7VTtXOzthOzs7Ozs7O2M7Z0I7OzthOzs7Ozs7VztVO1U7bUI7O29COzs7OztxQixRO29CO21CO1M7O1Usd0I7Ozs7O3NCO1U7Uzs7VTs7O1c7YTs7VzthOzs7OztXOztjOzs7Ozs7VTs7VTtXO1k7WTtZOztZOzs7O2Esa0I7Ozs7O2U7OztrQjs7Ozs7O2lCO2U7Ozs7O2E7Ozs7OztnRTs7Vzs7O2UsTzs7Ozt5QixPOzs7O21DO29DOzs7a0M7d0I7YztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7O2tCLFU7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7Ozs7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7OzttQjtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87OytCLDRCOztHOztJOzs7Ozs7O0k7SyxVO0s7SyxPOzs0QixPLHNDOzs7STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07Ozs7MEI7OzswQzs7OztzQjs7dUIsTTt1Qjs7OzswQjs7OzBDOzs7Ozs7c0I7Ozt1QixLO3VCLEs7dUI7eUI7Ozt1Qjs7OzBCOzs7MEM7Ozs7bUIsVzs7OztxQjs7Ozs7Ozs7O21COzs7OztzQixvQjs7O3NCOztzQjs7Ozt1QixLO3VCLEs7dUI7dUIsUTs7Ozs7O3lCOzs7Ozs7OzswQixVOzBCLFU7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7O2tCO2tCLE87aUI7Ozs7OztFOzs7Ozs7O0c7Ozs7SSx3Qjs7Z0MsTyxzQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLCtCOztJOzs7Rzs7STtLOzs7Vzs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxZO2dCLE87STs7SyxVOztrQjtjO0c7O0k7SztNLE87TSxjO0s7STtJLFk7Z0I7STs7SyxVO2tCO0ksYztnQjtJLE07Rzs7SSxHO0s7TSxPO1k7OztJO0k7SztLO007TyxPO08sTTtNLGU7TTtPO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7Szs7Ozs7SztJO0ssaUM7STs7SyxhO0ssTztJO0k7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0ksTzs7OztlLE87Yzs7OztHOztJLE87OztjOzs7ZSxPO2UsYztjO2E7O0c7O0k7Szs7a0IsTTtLLEk7Ozs7aUI7Tzs7Ozs7SyxXOzBCLE07SztLO0s7SztLLHVDOzs7O2tCOztPO1M7O3lCLG1DOztROztPO1M7O3lCLG1DOztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7OztJLE87K0MscUI7OztJOzs7Szs7SztNO007OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLO007TTtROzs7Vzs7WTtXO1U7O007UTs7O1c7Ozs7Ozs7VyxPOzs7VTs7TSxPO007UTtVOzs7YTthLG1CLDJCO2E7YSxPO1k7O007UTs7O1c7Ozs7O1c7O2E7O1k7OztZLE07OzZCOztXO1U7Ozs7O007SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7Ozs7Ozs7Ozs7OztRO1M7UyxxQix1Qjs7O1ksVztpQztZLFE7WTtZO1c7Ozs7OzsyQyxxQjtPO1E7Uzs0Qiw0Qjs7O1ksc0I7WSxRO1k7WTtXOzs7Ozs7OztLO007UTtVOzs7YTs7O3FDO2M7Z0I7OzttQjs7Ozs7OzttQjtxQixnQztvQjttQjtxQixnQztvQjttQjtrQjs7Ozs7O2E7WTs7TTtROzs7Vzs7Ozs7VyxXOzt3QjtXOztZO1c7VTs7Ozs7Ozs7Ozs7VTs7O2E7YTtZOzs7Ozs7Szs7UTtVOzs7YTs7Ozs7YTs7cUI7O1k7O0s7Ozs7Ozs7O1E7UTs7USx5RDs7Ozs7Ozs7O2E7OztnQjtnQixPO2U7O1c7VTtXOztXLFM7WTs7WTs7Ozs7YTs7O2dCO2dCLE87ZTs7VztVOzs7OztROzs7OztNOztTOzs7WTs7OzthO2U7OztrQjtpQjs7WTtXOztNLFc7OztLLE87STtJLE87O0c7RztJLE87Rzs7STtJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7Ozs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7RztJLE87OztjLFc7YyxPO2E7O0c7RztJOzs7SyxPO0ssTztJLE87O0c7STs7RztHLDhDLHdCO0c7STs7Ozs7Ozs7Ozs7OztLO0s7TTtROzswQixvQixXOztNO007UTtLO0ssTztJO0ksOEMsUztJO0s7O2U7O0k7STs7Ozs7Ozs7O0c7O0ksZ0M7Ozs7Szs7STtHOztJOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7OztJLE87OzRCOzs7O0k7Ozs7YyxPO2E7Ozs7SSx1QyxPLHVCOzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLHFCLE8sd0M7STtJO0ssTztLO0s7Tzs7O1U7VTtTOztJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO2dCOztJO0c7O0k7Rzs7O0k7OztJO0c7O0k7SyxNOzs7SyxNOzs7SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7O0s7OztROzs7STtHOztJO0ssTTs7SyxNOztLLE07SztPOzs7Ozs7Ozs7OztLOzs7UTs7O0k7RztHO3FDLGtDOzs7Ozs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7Ozs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7OztJLE87OztjLE07O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzJCLFk7dUIsWTtzQixZO3dCLE8saUM7Ozs7Ozs7Ozs7Ozs7O0ksZTs7O0ssSSxjOzs7Ozs7O2U7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOztvQjtLLFEsTzs7Ozs7STtHOztJO2M7SSxJLHFCLE07SSxPO0c7O0k7O0s7SztJLGtCO0k7OzZCLFk7d0IsWTt5QixZO3dCLE8sc0M7O0k7STtHOztJLGdCLE07STtHOztJLGdCLG1CLE07STtHO21CLCtCO21CLCtCO21CLCtCO21CLGtDO21CLCtCO29CLGdDO3FCLGlDOzZCLHlDOzZCLHdDOztJO0ssUzs7SyxNO0k7Rzs7SSx5QjtJLE87Rzs7SSxhO0ksTztHO3NCLE8sZ0Q7O0k7SyxXO0ssYTtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7USxvQzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxROztJO1k7OEMsaUI7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7O0ksVTtJLFU7SSxVO0ksTzs7O2M7O2lCLE87O2lCOztxQzs7YTs7RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOztJOzs7TTtNLE87OztJO0c7Rzs7STs7SztLO0s7STtHOztJO0s7Tzs7eUIsZ0M7O0ssTTtJLE87Rzs7STtJO2lCOzswRDs7OztHOztJOztpQixPOzs7Ozs7Ozs7TTs7Ozs7Rzs7SSxPOzswQiwrQzs7RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOztJLE87RzsrQixzQjs7SSxVO0k7Rzs7STs7SyxNO0s7STs7O0k7O0ssTTtLO0k7OztJOztLLE07SztJOzsrQixzQjtzQixjOzs7STs7OztJOztHOzs7STs7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO0c7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7STs7Tyx3QyxZOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7OztTOzt1QiwrQzs7Ozs7Ozs7Ozs7OztjOzs7aUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7OztJOzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQztxQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOzRDO0c7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0MsbUM7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOzs7STs7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzt1QyxpQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7OztJOzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7O0k7OzhCLDBCOztJOztPOztzQixPLDhDOztJLE87OztjLFc7YyxxQjthOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7OztJOztnQywwQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7Ozs7OztJLG1COzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7Rzs7SSxXO0k7Rzs7Ozs7O0ksbUI7OztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7O0k7O087O3NCLE8sOEM7O0ksTzs7O2MsVztjLHVCO2E7O0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7Ozs7OztJLDRCOztHOztJOzs7OztLLE87SSxzQjs7Rzs7STs7Ozs7SyxPO0ksc0I7O0c7O0k7Ozs7O0ssTztJLHNCOztHOztJOzs7OztLLE87SSx1Qjs7Rzs7Ozs7OztJLGdDOztHOzs7Ozs7SSx1Qjs7Rzs7STs7Ozs7SyxNO0k7Ozs7WTs7O0c7O0k7Ozs7Ozs7SyxNO0k7Ozs7OztZOztHLEk7O0k7Ozs7Ozs7OztLLE07STs7Ozs7OztZOzs7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7OztJLGdDOztHLEk7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7O0ksNkI7OztJOzs7OztLLE07SSw0Qjs7O0k7Ozs7Ozs7SyxNO0k7Ozs7WTs7O0k7Ozs7O0ssTTtJLGdDOztHO2dDLHlCO0c7Z0MseUI7Rzs7O0k7OztJO0c7K0IsOEI7Rzs7O0k7OztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DLG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7aUQsTztpRCxPOzs7STtJLE87OztJLFk7O0ksTzs7OztJLE87Ozs7STtJOztLLHNCLE87SyxPOzs7SSxPOzs7O0k7STs7O0ssTzs7O0ksTzs7OztJO0k7Ozs7O1E7USxPOztRLG1CLE87USxPOzs7UTtRLFc7USxPOzs7USxPOztnQzs7OztRO1EsVztRLE87O3lCLE87OztRLE87O2dDOzs7MkIsTzs7O1E7UTtTLE87UyxzQjtRLE87O2dDOzs7O1E7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJOztxQjs7STtLLEs7SyxLO0ssSztJOzs7O087TztPLE87OztJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJOztxQjs7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7O0s7dUM7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFU7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OzJCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGtDLE07TztPLE87OztPOzs7O1U7OztXLFM7VyxPOzs7VTs7Ozs7OztTOzs7O1MsUztTOzs7MEMsTzs7TztPO08sTzs7O087TyxVO08sTzsrQzs7O087TyxPOzs7TztPLE87O08sa0IsTTtPLE87OztPO08sZ0I7O3lCLGdCOztPOzs7USxNO1Esb0I7Tzs7dUI7O08sZ0I7OztPO087OztPO087TyxPOztPLG9CLE07TyxPOzs7TztPO08sZ0I7OztPO08sTzs7O087TyxPOzs7TztPO087TyxPOzs7TztPLE87OztPO08sUztPLE87OzBCLE87OzRCOzs7TztPLE87O087O1EsTTtRLG9CO08sTzs7OEI7Ozs7TztPO08sTzs7O087TyxPOzsyQixPOzsyQixPOzs7TztPLGdCOzswQixPOzsyQixPOzsyQixPOzs7TztPLE87Ozs7Ozs7TztPLFU7TztPLE87a0MsTzs7Ozs7Ozs7O0k7STtJO0ksTzs7OztJO0k7aUM7Ozt3Qjs7O087Tzs7Tzs7Tzs7TyxrQixNO08sTzs7O087aUI7O087d0M7TyxPOzswQixnQjs7Tzs7USxNO1Esb0I7TyxPOzs4Qjs7O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TyxVO08sTzsrQzs7TyxtQyxNO087TyxPOzs7TztPLE87O3dCLE87OztPO08sTzs7OztJLHFDLE87O0ksTzs7OztJO0k7Ozt5QixPOzs7TztPOzs7TztPOzs7TztPLE87O3dCLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7Ozs7Ozs7SyxNO0ksMEM7STtJO0k7SSxPOztHO0k7OztRO1E7O087O1EsVTtRLE87Tzs7O1E7UTtRLFM7USxPO087O1EsVTtRLE87Tzs7USxVO1EscUI7Tzs7USxVO1EscUI7Tzs7Ozs7OztRLFU7USxxQjtPOzs7UTs7Ozs7OztRO1E7O3dCOztRO1EsUztRO1EsTztPOzJCLDRDOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7O1E7O1EsUzs7Tzs7UTs7UyxPOzs7USxPO087Ozs7Ozs7OztROzs7Ozs7UTtRO1E7OztXOztZOzs0Qjs7WSxPOztXOzs7WSxNO1c7VyxPO1U7O1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7O0ksTztHOztJLFE7O0c7O0k7SyxPO0ssTztLLFM7SSxPOzs7YyxPO2E7O0c7RyxzQjtHOzs7TSxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEM7Ozs7UTtpQjs7Ozs7SSxXO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozt1Qjs7UTs7Ozs7STtHOztJO2dCOztJO0c7O0ksSTs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7VTs7Ozs7Yzs7dUIsTztzQjs7Ozs7Yzs7dUIsTztzQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MEIsTzt5Qjs7Ozs7O2E7O3NCLE87cUI7Ozs7TyxPOzs7Ozs7Ozs7SSxPO0c7O0ksdUI7STs7Ozs7Ozs7O00sVztNOzs7Ozs7STs7O0k7SztLO0k7Rzs7SSxPO0c7O0ksTzs7O2M7YzthOztHOztJLE87OztjO2M7YTs7Rzs7STtLO0s7OztTO1MsTztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7O0k7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7OztJO0c7O0ksZ0I7SSxVO0ksTztHOztJO0s7SSwwQztJO2dCOztJO0c7O0ksVTtJLE87OztjOztlOztnQzs7ZTtjO2MsTzthOzs7Rzs7STtJLE87OztjO2MsTzthOztHOztJLEksOEI7SSxPOzs7YyxjO3dCO2M7YyxPOzthOztHOztJO0k7bUI7O0s7TTs7OztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7SSxPO0c7Ozs7SztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLO0s7TTtLO007Szs7Ozs7Ozs7Ozs7OztVO1UsSSxVLDRCOzs7Ozs7Vzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztLLFU7Ozs7Ozs7Ozs7Ozs7UztTLE87Ozs7O0s7Szt3RTs7O0ksVztJO0s7TSxNO007SztLLFU7SztLOzs7O0s7SyxNOztHOztJLE87OztjO2E7O0c7O0ksTzs7O2MsTzs7O3dCOzs7eUI7eUI7O3VCOzthOztHOztJO0c7O0k7Rzs2QiwyQzsrQiw2QzsrQix5Qzs2Qix1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COzs7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7O0k7SyxhOztNLFk7bUI7bUI7TSxPO0s7SyxPLG9DO0c7O0k7O00sWTtNLE87SztLLE8sNEI7Rzs7STs2QixzQixhOzZCLHVCLGM7NkIscUIsWTs7Rzs7STsyQyxnQzs7RztHO0k7STtJO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7O0ssTTs7Syx3QixPO0ssTzs7STs7O0ssTztLLE87SSxPO0c7O0k7O0ssTTs7STtHOztJO0k7OzthLFk7YTthO1k7Rzs7STtJOzs7YTtjLFM7OzthO2E7WTtHOztJOzs7Szs7O0k7SyxXO0s7Ozs7K0I7Ozs7O0ksTzs0Qyx3QjtHOztJO0ssSTtLLEk7Ozs7STtnQixPO0ssSSxpQixJLDhCOzs7Ozs7O007TTs7Ozs7O0ssMEI7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ssSTs7STtnQixPO0ssSSxpQixJO0s7bUIsTTtNOzs7TztRLE07OztPOzs7dUIsTTtNO087UztXO08sTztNOzs7Ozs7TTs7Ozs7Rzs7STtJO0c7O0k7SyxJO0ssTztLLE87STtJLGE7STtHOztJOzs7Rzs7Ozs7Ozs7O0ksUyxPO0k7O0s7OztJLE87O29CLGMsNkI7O0ksVSxNO0ksa0I7OztLOztPLGM7Tzs7Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJOztLO087OztVOztXOzs7Ozs7Ozs7Ozs7O1UsTztTOzs7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7OztrQjs7STtHOztJLGdDOzs7O1E7Ozs7OzJCOztROzs7Ozs2Qjs7UTs7OztRLHFCOzs7Ozs7SyxNO0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7O087UTs7Ozs7Ozs7STtJLFc7STs7O087O007O0ksSSxlLHNCO0k7OztPOzs7UTs7Ozs7Ozs7O1k7Ozs7YyxNOzthO2EsSyxrQzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7OztROzs7TTs7STtHOzs7O0s7OztNOztLLE07O0ksTTs7O0k7OztLLFc7Ozs7STs7SztLO087Ozs7VTs7O1U7UztLOztLLE07STtLO0s7SztPOzs7O1U7Vzs7WTs7WTs7O2E7Ozs7WTs7Ozs7UztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTtVO1c7OztjOzs7Yzs7OztlLE87Ozs7Ozt5QixHLDhCO2tDOzs7OzBCOzt5QixNOzs7O3lCLFE7Ozs7Ozt5QiwyQjt5QixxQjsyQzt5Qjt5Qjs7O2MsTTs7VSxPO1M7O1U7VztZLFE7WTs7VyxnQztTOztVO1U7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsNEI7O1UsbUI7Ozs7Uzs7VTs7VztZLE87bUI7OztVO1M7O1U7Uzs7O1U7OztVLE87Ozt1QyxTO2lDLFM7O1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7Ozs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTs7WTtZOzs7OzRCOztZO1k7Ozs7O1M7O1Usb0IsVztVLE87Uzs7Ozs7OztVO1csUTtXLFU7OztXO1c7VyxPOztVO1M7O1U7O1M7O1UsbUMsTztVO1U7VSxpQjs7OzJDLGtDO3lDLGlDOztVO1UsWTs7Vzs7WSxPO1ksTztXO1c7VyxXO1csTzs7VTs7Uzs7VTtVOztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtrQztrQzs7OztVO1csTTs7VTtvQjtvQjtTOztVO1UsRyxXO1c7VSxNO1M7O1UsRyxXO1c7VSxNO1M7O1U7VTtTOztVO1U7Uzs7VTs7OzhCOztXOzs7K0I7O1U7UztvRCx5Qjs7Ozs7Ozs7VTs7O1U7VztXO1c7VTtTOztVO1UsTztTOztVO1UsTztTOzhCLHVDOztVO1c7VztVLE87Uzs7VTtXLE07O1M7O1U7VTtTOztVLEksYztVO1M7O1U7Ozs7OztVO1M7O1U7VTt5QjtXLEksUzs7OztTOztVO1U7Ozs7b0IsTyxjO21COztTOztVO1U7Ozs7b0I7OzhCLGM7bUI7O1M7O1UsTztTO29DLHVCO2dDLHVCOztVO1c7O1k7O1csTzs7Ozs7O3FCO3FCO29COzs7OztVOztXOztXLFE7c0I7VTs7VztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLFM7OztVO1U7dUI7VyxJLFM7Ozs7Uzs7VTtVLE07UztzQyx5QixTO3FDLHlCLFM7O1U7VTtvQjtvQjtTO2lDLDJCOztVOztXOztZOzs7VyxlLE87O1csTzs7O3NCLE87VSxNO1M7O1Usa0I7VTtTOztVO1M7O1Usa0I7VTtVLE07Uzs7O1U7VTtTOztVO1U7Vzs7cUI7Ozs7OztvRSxTO3dELCtCO2dELFM7O29COztVOztTOzs7VTtvQjs7Uzs7VTtvQjtVOztXO1UsTztTOztVO29CO1U7O1c7VSxPO1M7O1U7b0I7VTs7Vzs7VztVLE87Uzs7VSxlO1M7O1UsZTtTOztVO29COztTO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJOzs7Ozs7Ozs7O087Ozs7Ozs7Tzs7OztJOzRCOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7NEI7O0c7O0k7SSxPO0c7O0k7Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7SSwrQjs7STtHOztJO0c7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7RztJOzs7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7STs7Ozs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztJOztLO087O2dDLHNDOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO0ksTzs0Qyx3QjtHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7YyxPOztxQyx3Qjs7YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7Ozs7SztxQztJOzs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7OztJOztHOztJLHlCOztJOzs7SSxrQjtJOztLO087Yzs7Z0I7OztLOztNO007TTtxQjs7O0k7O087OztVOzs7VztVO1M7OztJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTOzs7OztTO1MsSTtRO087O1E7Ozs7Ozs7OztTLE87UyxPO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7O1MsTztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7OztTLE07UTtTLE87UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7O1M7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7UztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7OztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1MsSztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztROzs7UTs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTLE07UztRO087O1E7Ozs7Ozs7OztTO1MsTTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7O1M7Uzs7Uyw0QjtROzs7O1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1MsUztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1MsTztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLE87UztTO1c7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTtRO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7Ozs7O1MsSztTO1M7Uzs7UTtTO1U7Ozs7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7OztTO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztXLHlDLGM7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztROzs7UTs7Ozs7OztTO1M7Uzs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UyxPO1M7UztTO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7O1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7OztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO1MsTTtROztTO1c7O3lCLHdCOztROzs7UTs7Uzs7Ozs7UztTOzs7UztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UyxLO1M7UTs7O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7OztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLE87UztTO1c7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxtQjs7O2M7UyxXO1M7UztXOztROzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7UTs7O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7O1E7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztROzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROztTOzs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1M7O1M7UztTO1E7Ozs7Ozs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UyxPO1M7UyxPO1M7Vzs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UyxLO1E7UTtTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTOztTO1E7OztROzs7Ozs7Ozs7UyxJO1E7Tzs7UTs7Ozs7Ozs7Ozs7UyxJO1E7OztROzs7Ozs7Ozs7UztTO1MsTztTLEk7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsbUI7OztjO1MsTztTLFE7UztTO1c7Uzs7UztROzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztROzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTOztTO1M7O1E7USxNO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7Vzs7O2M7YzthOzs7UyxPO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7OztTO1E7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1c7OztjO2M7YTs7O1MsTztTO1E7OztROztTOzs7Ozs7OztTO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTLGU7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7OztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO1E7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UyxPO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7OztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7UztROzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTLE87UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7OztTO1U7OztRLEksdUI7UTtPOztROztTOzs7Ozs7Ozs7UztTOzs7O1M7VTs7O1EsSSx1QjtRO087O1E7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztVOzs7USxJLHVCO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7OztTO1U7Ozs7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTLE87UyxXO1M7Vzs7Ozs7Ozs7OztTO2U7UTs7O1E7O1M7Ozs7O1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLHlCO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7OztRO1MsTTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsTztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1MsUTtRO087O1E7O1M7Ozs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTLFc7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7Uzs7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1MsSztTLEs7UztTOzs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UyxPO1MsVztTO1c7O1M7ZTtROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1MsSztRO1E7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OzthOztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxPO1M7UyxRO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87UztXOztTO1M7UztROzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7O1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UyxLO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTLEs7UztTO1M7UyxLO1MsTztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7dUQsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7Rzs7STtJLGM7STtJLE87RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7SztLOzs7Ozs7STs7O0k7STs7OzBCO0ksYzs7O0k7STtHOztJLGdCOztJO0ksSSxVLDZCO0k7STtHOztJLE07MEI7Rzs7SSxNO0c7O0k7Ozs7TSxVOzs7Ozs7Ozs7O08sTTs7O08sTTs7TTs7Ozs7O0c7O0k7Ozs7Uzs7Uzs7Uzs7O3NCO0k7Rzs7SSxnQjtJLE07OEI7Rzs7STsyQixPO0k7O3FDO0c7O0k7MkIsTztJOztxQztHOztJO0ksTztHOztJLE87Rzs7STtJO0c7O0k7STs7Ozs7OztHO0c7STtJOzs7SSxXO0ksTzs7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztHOztJO0c7Rzs7O00sdUI7Ozs7bUI7O1E7UyxVO2dCOzs7O1U7O1csTztrQjs7Ozs7OzthOzs7Ozs7O2dCLGtCOztnQixPO2U7Ozs7Ozs7YTs7Ozs7OztnQixvQjs7Z0IsTztlOzs7cUI7O1U7O1csZTtrQjs7Ozs7a0I7Ozs7O2tCOzs7Ozs7O2E7Ozs7Ozs7Z0Isb0I7O2dCLE87ZTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxhO0k7STtLLE87O0k7RzswQjs7STtJO0s7O1E7Ozs7Ozs7VTs7VTs7VTs7VTs7YTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVLG1CO1U7Ozs7UyxTO3FDO1M7UztVLE87O1M7O1MsZ0M7O1M7VSxPOztTOztTOztTOztTOztTOztZOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1k7O1M7O1M7bUI7UztVLFc7VTs7OztpQzs7OztTO21CO1M7Uzs7UzttQjtTOztTO21CO1M7Uzs7UztnQjtTOztTO1U7WTs7VSxRO1M7O1M7a0I7Uzs7UztVO1k7O1UsVTtTOztTOztZO1M7O1M7VTs7O1M7O1M7VTtZOztVOzs2Qjs7O1M7O1M7VTtZOztVLFc7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1k7O1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTLGdDOztTLFE7Uzs7UyxVO1M7O1M7O1M7O1M7O1M7O1k7O1M7O1M7O1M7VTs7O1M7O1M7VTs7Ozt3Qjs0Qjs7UztVO1k7O1U7OztlLGE7ZTtjOzs7O1M7OztVLFc7VTs7UztVOzs7Uzs7Uzs7WTs7UztVLFc7VSxZOztTLHlCOztTLFk7Uzs7OztTOztTO1Msc0I7Uzt1Qjs7VTs7VTtXOztjOzs7Ozs7Vzs7O1U7VztXO1csTTtXO1c7VyxVO1c7VyxZOzs7VyxJLGU7Ozs7Ozs7a0I7Ozs7Vzs7O1U7Ozs7b0M7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7UztpQjs7O0s7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7bUM7UTs7Ozs7UyxNOzs7UyxPOzs7O1E7Ozs4QjtROzs7WTs7Ozs7O1csd0I7O1ksTTtXOztZLE87WSxROztXOzs7Ozs7O1E7OztROztTO1MsUTs4QjtROzs7WTs7Ozs7O1csNEI7O1ksTTtXOztZLE87WSxVOztXOzs7Ozs7O1E7UTtROzs7UTs7UTs7Vzs7UTtRO1E7UTs7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1E7Z0I7UTtROzs7UTtnQjs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7Ozs7UTtTO1MsSzs7UztTLFE7UTtRO1M7UztTOzs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7O1E7Z0I7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxTO1E7UTs7OzZCOztROztXOztRO1E7OztRLFE7UTs7O0c7O0k7STtLOztROzs7OztTOztTO2lCOztLOzs7Rzs7STtjOztJLE87Rzs7SSxlOztLO0s7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTtXLE07VyxNO1csVTtVO1UsRzs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjtJLEc7SztJLFc7SSxHO0s7SSxXO0ksRztLO0ksVSx1Qjs7Ozs7eUI7OzBCOzsyQjs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7OztJLFM7Ozs7O3dCOzswQjs7MkI7O1M7VSxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLO0ssYztJO0c7O0k7SztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPO08sVztPLFc7TyxPOzs7OztJO0c7O0k7STtHOztJOztPOzs7SSxPO0c7c0MsZ0M7NEIsMkI7O0k7Ozs7OzBCOzsyQjs4Qjs2Qjs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1ksbUM7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix5Qzs7STs7O2E7aUMsTztJOzs7O00sTTs7b0Isd0IsTzs7SztLOzs7Rzs7STs7SSxROztJO0k7SSxPO0c7O0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7OztPOzs7bUI7Ozs7Ozs7bUI7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7TyxPOzs7OztJLE87Rzs7STs7OztROzs7OzZCLE8sdUI7Ozs7Tzs7Ozs7aUI7aUIsTztnQjs7OzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7Ozs7NkIsTyx1Qjs7OztPOzs7OztpQjtpQixPO2dCOzs7OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO2M7Yzs7O2dCO0c7O0k7SSxPO0c7OEIsd0I7O0ksTztHOztJLFE7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7Ozs7bUM7Ozs7SSxPOzs7Ozs7a0M7Ozs7STtJOztNLE87Ozs7b0M7O29DOzs7Ozs7O1MsTzs7Ozs7bUI7Ozt1Qzs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsUTs7b0IsTzs7Ozs7OEI7OzttQjs7d0M7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7OztZLE87Ozs7OzswQzs7MEM7Ozs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOzs7WSxPOzs7Ozs7c0IsTzs7OztzQixRO3NCO3VCOzswQjtzQixPOzs7OztnQzs7O3FCOzswQzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7OztpQjs7OzttQixPOzs7Ozs2Qjs7Ozs7aUI7Z0I7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7OztPLE87Ozs7OztxQzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7SyxPOzs7O21DOzttQzs7Ozs7SyxPOzs7O21DOzs7Ozs7Ozs7O0s7Ozs7O00sZ0M7Ozs7OztJOzs7TSw0QjtNOztLLE87Ozs7O2U7Ozs7O0k7SyxPOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7OztxQzs7Ozs7OztLOzs7SztNLE87O0s7Ozs7Ozs7Ozs7Ozs7O1M7VSxPOztTOzs7USxHO1MsTztpQixPOzs7O1MsTzs7Ozs7OzttQjs7OzttQjs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7OztJO0s7TSxPOztLOzs7a0MsTzs7OzhCOzt5QixPOzs7TyxPOzs7O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxhLE87Ozs7VyxPOzs7Ozs7eUM7OztPOztRLE87Ozs7O2tCOzs7Ozs7TyxPOzs7OztpQjs7Ozs7OztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sZSxPOzs7SyxPOzs7Ozs7bUM7OztJLGlCOzs7OztLO2UsTzs7SyxPOzs7Ozs7bUM7Ozs7SyxPOzs7Ozs7bUM7OztJLE87Ozs7OztrQzs7a0M7Ozs7SSxlOzs7Ozs7OztNOztROzswQiw2Qzs7O007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O3FEO1k7Ozs7bUM7Ozs7OztlOzs7O21DOztZOzs7O21DO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7O087UywyQzs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7OztZOzs7YTthO1k7Ozs7Ozs7Ozs7Ozs7K0M7Ozs7Ozs7Ozs7Ozs7OzhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztLOzs7SSxPOzs7O2tDOztrQzs7Rzs7STs7SyxPOzs7O21DOzs7O0ksMEI7STtJLE87Ozs7O2M7OztrQzs7Rzs7O0k7SSwwQjtRO0k7Ozs7TTs7O0ssTzs7UTtJLE87Ozs7O2M7Ozs7Yzs7OztrQzs7Rzs7STs7TSxPOzs7O29DOztvQzs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlLE87Ozs7O3lCOzs7Ozt5Qjs7Ozs7OztZOztlOztZOzs7VyxPOzs7O3lDOzs7cUI7Ozs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7OztXOzs7O2EsTzs7Ozs7MkM7Ozs7O1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UyxPOzs7OzttQjttQjtvQjs7dUI7bUIsTzs7OztpRDs7OzZCOzs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87OztTLE87Ozs7Ozt1Qzs7Ozs7Ozs7YSxPOzs7Ozs7MkM7Ozs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7OztTLE87Ozs7dUM7O3VDOzs7OEI7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7O1U7VyxPOzs7OztxQjs7b0I7Ozs7VyxPOzs7OztxQjs7OztxQjs7OztVOztXO1c7a0M7OztVLE87Ozs7O29COzs7OztVLE87Ozs7d0M7O3dDOzs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O21COztvQjs7O3dDOzs7O1UsTzs7Ozs7b0I7Ozt3Qzs7OztVLE87Ozs7Ozt3Qzs7OztVLE87Ozs7O3dDOzt3Qzs7Ozs7Ozs7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7O3dDOzs7OztXOzs7O3lDOzs7Ozs7YTs7OztjO2M7cUM7YSxPOzs7Ozs7Ozs7dUIsUztzQzt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlLG9DOzs7Ozs7YTtjLE07YztjLDRCO2M7O2EsTzs7Ozs7dUI7Ozs7Ozs7TSxPOzs7O29DOztvQzs7Ozs7OztPLE87Ozs7O2lCOzs7O007TyxPOztNOzs7Rzs0Qjs7STs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7SztNLE87O0s7O0ksa0IsTzs7STtHOztJOzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7Ozs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7O3FDLE87cUMsTzs7O21DLE87b0MsTzs7Ozs7OztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7Ozs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7a0I7Ozs7Ozs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJLE87OztjLE87Ozs7OzRDOzs7O0c7O0ksTzs7O2MsTzs7Ozs7NEM7Ozs7Rzs7SSxPOzs7OztrQzs7Rzs7SSxPOzs7O2tDOzs7Yzs7O2MsTzs7Ozs7d0I7OzthOztHOzs7SSxPOzs7OztrQzs7Ozs7SSxPOzs7OztrQzs7OztJLE87Ozs7O2M7OztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7O3lCOzs7Tzs7O0c7O0k7Ozs7TyxPOzs7OztpQixRO2lCO2tCOztxQjtpQixPOzs7OzsyQjs7O2dCOzs7O3FDOzs7Ozs7O1E7K0I7UTs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7OztVOzs7Ozs7TyxPOzs7OztpQjs7O3FDOzs7O087Ozs7TyxPOzs7Ozs7O3FDOzs7Rzs7O0s7SyxPOzs7Ozs7O21DOzs7O21DOzttQzs7STtJLFE7O2U7O0k7Szs7UTtJLE87Ozs7O2M7Ozs7Yzs7O0c7O0k7OztPLGtEO08sTzs7Ozs7cUM7OztpQixTOztpQixPO2dCOzs7aUI7Ozs7Ozs7USxPOzs7Ozs7OztzQzs7O2tCOzs7O08sd0M7TyxPOzs7Ozs7Ozs7cUM7OztpQjs7Ozs7OztRLE87Ozs7Ozs7O3NDOzs7a0I7Ozs7Tzs7Ozs7Vzs7OztVO1E7TyxPOzs7Ozs7OztpQjs7Ozs7OzttQixPOzs7Ozs7aUQ7O2lEOzs7O2tCOzs7Z0I7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozt5Qjs7O087OztHOzs7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Yzs7Ozs7STtLLE87Ozs7bUM7O21DOzs7Ozs7TyxPOzs7OztpQjs7aUI7a0I7O3FCO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7OzBCOzs7TyxPOzs7O3FDOztxQzs7Ozs7O1E7O1c7O1E7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7OztPLE87Ozs7cUM7O3FDOzs7MkI7OztPLE87Ozs7Ozs7cUM7OztHOztJO0k7O00sTzs7OztvQzs7b0M7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7OztVOzthOzs7Z0IsTzs7Ozs4Qzs7Ozs7MEI7Ozs7O2dCLE87Ozs7Z0IsTzs7Ozs7OzhDOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7OzhDOzs7OzswQjs7Ozs7Z0IsTzs7OztVOztTLE87Ozs7dUM7OzttQjs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7OztJOzs7OzJCLE87Ozs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7O2tDOzs7Rzs7STs7OztPLE87Ozs7Ozs7O2lCOzs7O2lCOzs7OztPOzsyQjs7MEI7OzBCOzs7O1EscUI7USxPOzs7O2lCOzs7O2tCOzs7O08sSTtPLE87Ozs7Z0I7cUM7OztpQjs7Ozs7TyxPOzs7Ozs7OztpQjs7Ozs7OztRLFU7O1E7O1M7Ozs7VztnQzs7Z0M7Ozs7O1M7Ozs7VztnQzs7Z0M7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7aUIsUzs7aUI7aUIsTzs7OzsrQzs7Z0I7OztpQjs7Ozs7Ozs7O087USxNOztPLE87Ozs7O3FDOzs7aUI7Ozs7TyxtQjtPLE87Ozs7Ozs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7O1csTzs7Ozs7Ozs7cUI7Ozs7O3lDOzs7cUI7Ozs7TyxVOztvQjs7O1E7O1c7O1E7O08sTzs7Ozs7aUI7Ozs7aUI7Ozs7MkI7O3lCOzs7TztPOztHOztJO0ssTzs7OzttQzs7bUM7Ozs7OzBCLE87Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7O1EsTzs7OztpQjtzQzs7c0M7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7OztTLE87Ozs7Ozs7OztLLE87Ozs7bUM7O0k7Ozs7OztPOztRLE8sd0MsWTs7OztPLE87Ozs7cUM7OztpQjs7O3FDOztxQzs7OztNLE87Ozs7b0M7O29DOztvQzs7Ozs7O00sTzs7OztvQzs7b0M7O29DOztvQzs7OztLLE87Ozs7bUM7O21DOzttQzs7Ozs7OztLLE87Ozs7bUM7Ozs7O0ksTzs7OztrQzs7a0M7Ozs7OztLLE87Ozs7Ozs7bUM7O21DOztJO0ksUTs7ZTs7SSwwQjtRO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxpQixPOzs7OztJLE87Ozs7O2tDOztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7Ozs7OztpQjs7OztpQjs7Ozs7O1EsTTs7Tzs7MEI7OzBCOzs7TyxPOzs7O2dCOztpQjs7OztrQjs7Ozs7bUI7O29COzs7O3NCOzJDOzs7O29COzs7OztpQjs7OzttQixPOzs7O2lEOztpRDs7O2lCLE87Ozs7K0M7O2dCOzs7aUI7Ozs7Ozs7Ozs7WSxxQztZLE87Ozs7cUI7MEM7OzBDOzs7c0I7Ozs7VyxJO1csTzs7OztvQjt5Qzs7O3FCOzs7O087USxNOzs7Ozs7OztRLE87Ozs7aUI7c0M7O3NDOzs7a0I7Ozs7a0IsTzsyRDtpQjs7OztPLE87Ozs7Z0I7cUM7OztpQjs7OztpQixPOzBEO2dCOzs7Ozs7OztPLE87Ozs7OztpQixTOztpQjtpQixPOzs7OytDOztnQjs7O2lCOzs7O08sbUI7TyxPOzs7OztxQzs7O2lCOzs7Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7O1csMEI7ZTtXLE87Ozs7Ozs7O3FCOzs7Ozs7cUI7Ozs7cUI7Ozt5Qzs7O3FCOzs7O08sVTs7b0I7OztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOzs7TyxPOzs7O3FDOzs7aUI7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7SSxRO0ksMEI7SSxPOzs7OztjOzs7Ozs7O0s7Ozs7O0ssTzs7Ozs7OzttQzs7Ozs7bUM7O21DOztJO0ksUSxNOztlOztJLDBCO1E7SSxPOzs7O2tDOzs7Yzs7Ozs7O0ssTzs7Ozs7Ozs7bUM7O21DOztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0ssTzs7O2U7ZSxPOzs7OzZDOzs2Qzs7Yzs7STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7Ozs7YyxRO2MsMEI7YyxPOzs7Ozt3Qjs7O2E7Ozs7Ozs7Yzs7OztrQzs7Rzs7Ozs7Ozs7OztLLFM7O0ssTzs7Ozs7ZTs7O0k7STtLLE87Ozs7OztlOztnQixPOzs7OzswQjs7Ozs7dUI7ZSwwQjttQjtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs2Qzs7Ozs7YywwQjtrQjtjLE87Ozs7O3dCOzs7NEM7O2E7O2tDOzs7O0k7OztLOzs7SSxPOzs7Ozs7O2tDOztHOzs7Ozs7O007SywwQjtLO0ssTzs7OzttQzs7O2U7OzttQzs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7OztxQzs7OztJLE87YztjOzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7OztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TztPO08sTTs7Ozs7O08sVTtPLG9DO08sTTs7TTtPO08sTTs7Ozs7Rzs7Ryw2QjtHO0csMEI7RztHLDhCO0c7Ryx1QjtHO0csd0I7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDBCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHlCO0c7OztNLDhCOzs7O1M7Ozs7OztVOzs7Yzs7OztZOzs7Ozs7O1k7Ozs7Ozs7WTs7Ozs7OztZOzs7Ozs7Ozs7OztTOzs7O1UsTTs7WTs7Ozs7O2dCOzs7Ozs7Z0I7OztTOzs7VTs7YTs7Z0IsTzs7Z0IsTzs7Z0IsTzs7Z0IsTzs7O2dCLE87OztZO2dCOzs7Ozs7WTs7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7SSxJO0k7Ozs7MkI7OzJCOzs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7SSxPOzs7Yzs7YTs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7Ozs7UTtROzs7UTtROzs7UTtRO1EsTzs7O2tCOzs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7Ozs7OztRO1E7OztROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7aUI7O1E7O1E7UTtTLE87O1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7OzRCOzs7USxPOzs0Qjs7Ozs7OztRO1E7UyxPOztROzs7UTs7Ozs7Rzs7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztRLE87OztRO1E7Ozs7OztRO1E7OztTOzs7O1U7VTs7OztVO1U7VTs7OztTOzs7UztTO1M7OztROzs7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7OztRLE87OztROzs7Ozs7UTtROzs7UTtROzs7Ozs7UTtROzs7Ozs7UTs7Ozs7O1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7O0s7SztLO0s7OztJLE87OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJO0ksTzs7O2M7YztjO2E7O0c7O0k7O3lCOzsyQjs7O087USxPOztPOzs7OztRO1E7O1E7UyxPOztROztPO1EsTzs7Tzs7OztJOzs7STtJO0ksSTtJO0k7STtJO0k7OztHOztJO0k7STtJO0k7STtHOztJO0k7STtJLEk7STtJO0ksZ0I7OztLO0ssTzs7O0k7Z0I7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7UTs7OztRO1E7UTs7Ozs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7Ozs7UTtRO1E7OztRO1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztRO1E7Ozs7O1M7Uzs7Ozs7O1M7Ozs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7UTs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7STs7O087USxPO087Tzs7VTtPOztRO1E7UTs7Ozs7UTtROzs7Tzs7OztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7VTs7O2E7Ozs7YyxNO2MsUTthO2M7OztlLE87Ozs7OzBCO2EsTzs7O08sTzs7Tzs7O1EsTztRLE87UTtPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRO1U7OzthOzs7O2MsTTtjLFE7YTtjOzs7O2UsTztlLE87Ozs4QzthLE87OztPLE87OztPOzs7USxPO1E7VTs0QztPLE87OztPOzs7O1EsTztRLHNCO1E7VTs7MkI7O1E7TyxPOzs7Tzs7O1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7O1E7OztXOzs7O1ksTztZLE87VyxXOzs7SyxPO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0ssTztLOztROzt5Qjs7SSxPOzs7Ozs7Ozs7OztJOzs7O0ssTTtLLFE7SyxPO0ksTzs7O0k7Ozs7O0ssTTtLLFE7O0s7Ozs7TSxlO007OztTOzJDOzs7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87Ozs7O29DOztROzs7O1MsVTtTLFE7UyxlOztPO1E7OzthOztjLFc7O2EsNEIsTzthLG1COzs7UTtVOzs7YTs7O2MsUTthO2M7Ozs7ZSxPO3lDOzs7YTs7O08sTzs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRO1U7OzJCOztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRO1U7OzJCOztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YTtxQjs7c0M7OztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1E7VTs7MkI7O08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0s7O1E7MEM7SSxPOzs7Ozs7Ozs7OztHO0k7OztRO1MsTztTLE87UTtPOztRLFc7USxPO087OztROzs7O1MsTztTLGU7USxXO087O1EsVztRLE87Tzs7USxXO1Esc0I7Tzs7USxXO1Esc0I7Tzs7Ozs7OztRLFc7USxzQjtPOzs7O1E7Ozs7Ozs7UztTLGU7UztTOztZOzs2Qjs7UyxXO1MsVztRLE87O087O1EsVztRO087OztROzs7UyxPO1E7Tzs7O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Ozs7Ozs7TzsyQixTOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTO1M7UyxXO1MsVztRLE87Tzs7OztROzs7OztTO1MsZTtTLFc7UyxXO1EsTztPOztROzs7OztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7O1M7UyxXO1MsVztRLE87O087OztROzs2QixXOzs7VyxXOzs7VyxXOztXOzs7WSxlO1csVzs7Tzs7USxXO1EsTztPOzs7USxXO1EsTztPOzs7UTtTLE87O1MsZTtRO087O1E7O1MsVzs7O1EsVztPOzs7Ozs7O1E7Ozs7Ozs7UztVOzs7VyxPO1U7a0I7O21DOzs7O1M7OztVLE87VSxPO1MsVztRO1E7UyxPO1MsTztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Tzs7Ozs7Ozs7Ozs7SyxNOztJO0ssTztJO0k7SztPOzs7VTs7VztXLE87VyxlO1UsTzs7Ozs7Uzs7O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STs7O2dCO0ssVztJLE87OztxQixTO0k7Ozt3QjtTO0k7Rzs7STtLO0ssTztLLGU7STtHOztJO0ssUTs7OztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLOzt3Qjt3Qjs7O0s7O0s7O0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztROzs7OztJLE87Rzs7SSxPOzs7YzttQzs7O2U7Ozs7Ozs7Z0I7O2UsTztjOztlOzs7Ozs7Ozs7aUI7OztnQjs7ZSxPO2M7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7OztpQjs7O2tCO2lCLFc7Ozs7ZSxPOzs7Ozs7Ozs7OztnQixnQyxPO2dCLFc7O2UsTzs7Ozs7O2dCOzs7OztnQjs7Ozs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7Ozs7O2dCO2dCLGE7Ozs7O2dCO21DLFM7aUI7O29DOzs7aUI7OztvQjtvQixPO21COzs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7aUI7O29CO3FCLE07b0I7b0IsTzttQjtpQjs7bUM7bUM7Ozs7Z0IsTzs7O2dCOzs7OztjO2E7O0c7O0k7SztPOzs7VTt1RDtVO1M7O0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJOzs7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7STs7Ozs7Ozs7OztJO0s7SyxRO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7Ozs7Ozs7Ozs7STtJLGlCOztLLE87STtHOztJO0ksaUI7Ozs7OztRLE87OztRLE87OztrQjtrQjtpQjs7O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7USxPOzsyQjs7OztrQjs7O29CO29CO21COztrQjs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OztRLE87Ozs7UTs7Vzs7NkIsaUM7O1E7a0I7Ozs7USxPOzs7O1EsTzs7OztrQjs7O29CO29CO21COztrQjs7Ozs7Ozs7OztLOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7OzBCOzs7USxPOzs7STtHOztJOzt1Qjs7STtHO0c7SSxPO0c7O0k7a0I7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7b0IsTzs7OztRLE87OztJO0c7O0k7SSxpQjs7OztRLE87Ozs7USxPOzs7STtHOztJOzs7Ozs7O2dCO0c7O0k7Ozs7Ozs7Z0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7STtJOztJO0ksVztHO3lCLGtDOztJOzs7SztPOzZDO0ksVzs7OztJLE87OztjO2MsTzthOzs7OztJLFEsTTtJOzs7SyxROzs7SSxJLGlDOzs7MkI7OztHOztJOzt1QixPOzs7TyxPO2UsTTs7RztHOztJO0s7O0c7Ozs7Ozs7O1EsSSxJOzs7O29COztROztRLHNDOzs7Ozs7UTs7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJO2lEO0ksVTtJLE07Rzs7STtJOzttQzs7O1E7OztROzs7OztRLE87OytCOzs7O1E7USxPOzsrQjs7OztRLE87OztrQjtrQjs7bUI7OztrQjtpQjs7OztRO1EsTzs7K0I7Ozs7OztRLE87OztrQjtrQjs7bUIsTzs7MEM7Ozs7a0I7aUI7Ozs7OztRO1E7O1c7OEMsa0IsUztRLE87OytCOzs7UTs7O1M7Ozs7a0M7OztHOztJLFk7O0ksTzs7O0k7O0ssTzs2Qzs7O0ksTzswQywwQjs7O0k7OztPO087TztNOztJO0k7Ozs7SyxPOzs7ZTtlLE87O3NDOzs7Ozs7SSxPOzsyQiw0Qjs7Rzs7STs7O0s7SyxPOzhDOzs7STtHOztJO0ksTzs7MkI7O0c7O0k7RztHOztJO0k7O21DOzs7UTs7Ozs7USxPO2dEOzs7UTtrQjs7USxrQixPOztROzsyQjs7O1EsTzs7O2tCO2tCO2tCO2lCOzs7O1EsTztnRDs7O1E7Ozs7O1E7UTs7MkI7Ozs7O1EsTzs7O2tCO21COztpQjs7Ozs7MEI7O1Esb0M7Ozs7Z0I7OztHO3lCOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7OztROzs7O1MsTzs7Ozs7VTs7OztVO1U7OzsrQzs7Ozs7OztRO1EsTzs7aUMsa0IseUI7Ozs7UTtROzs7UTtROzs7USxPOzsrQjs7OztRO1E7OytCOzs7UTs7O1c7VztXO1U7O1E7OztRO1E7OztRO1E7Ozs7O1EsTzs7K0I7Ozs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7OztRLE87O2lDLGtCLHlCOzs7UTs7OztTO1M7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1EsTzs7K0I7Ozs7OztRO1MsTzs7UTs7USxxQzs7Ozs7UTs7Ozs7Uzs7UTs7Vzs7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOzhCOztJO3VCOztJO0k7Rzs7SSxPOzs7Yzs7OztlO2M7Yzs7O0c7O0k7SztPOzt5Qiw2Qjs7O0s7O0ssdUM7O0s7dUM7SztJOzs7SztLLE87O0k7STtHOztJOztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7OztRO1EsTzs7O2tCOzt3Qzs7eUM7O3lDOzsyQzs7O3FCOzsyQzs7aUI7Ozs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087O1E7VTs7O2E7eUI7O2EsTztZOztRLE87USxNO087O3VCLGlDOztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7O087O3VCOztPOzs7Tzs7eUI7O087O087O3lCLHFCOztPLGtCO3lDO087O0k7O29COztJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs7STs7O0k7STs7Ozs7UTtRLE87OytCOzs7O1E7USxPOzs7Ozs7eUM7OzJDOzs2Qzs7O3FCO3FCOztxQjsrQzs7Ozs7O1E7Ozs7MEI7O1Esb0M7Ozs7O0c7NkM7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOzs7Tzs7dUI7O087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtVOzs7YTt5Qjs7YSxPO1k7O1EsTztRLE07Tzs7cUIsbUM7O087O08sb0I7eUM7Tzs7MEI7OztPOzt3Qjs7Tzs7O087O3lCOztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USxPOzsrQjs7O1E7Ozs7UztRLE87OytCOzs7O1E7UTs7Ozs7O1E7USxPOztpQyxrQix5Qjs7O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1EsbUM7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0k7O0ssTzs7O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7Ozs7Ozs7O1M7Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7RztJOzs7Ozs7Ozs7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7Ozs7Ozs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7bUIsTTtLOzs7OztNLEk7SyxZOzs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7O00sSTtLLFkseUI7Ozs7OztJO0k7aUI7Szs7Ozs7TSxJO0s7O007OztlOztrQjs7Z0Msa0M7ZSxPOzs7Ozs7Rzs7Ozs7TTs7OztPLFM7Tzs7Ozs7O29COzs7Ozs7O0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7Szs7TSxPOzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7OztVLE87Ozs7O1U7Ozs7O1c7VSxVOzs7Ozs7OztVOzs7OztXO1UsVTs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztVLGlCOzs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7O1MsTzs7Ozs7O1ksa0M7WSxpQjs7Ozs7Ozs7WSxvQztZLGM7Ozs7Ozs7Ozs7Ozs7O1ksa0M7WSxjOzs7Ozs7TTs7Szs7Rzs7STs7YTs7SSxPO0c7Ozs7OztRLHFCLE07USxPOztRLHNDO2dCOzs7Ozs7Z0MscUM7O0k7STs7OzZCLE87O1E7OztTO1M7USxPOzs7RzswQixTOztJLE8sMEI7Rzs7Ozs7Ozs2QixvQjs7OztROzs7UztTLE07UyxNO1M7USxPOzs7O1M7Ozs7Ozs7SztLLEc7TTtPLE07YTs7Z0I7SztLLE87Ozs7Ozs7OzZCLE87Ozs7O1EsTzs7Ozs7O0ssTzs7OztJO0k7Ozs2Qjs7USxNOzs7Rzs7STs7OzsyQjs7OztROzs7Ozs7Szs7OztHOztJO0s7Szs7OzBCOztTLDhCOzs7Ozs7STtJO0c7O0k7STs7Ozs7OEIsTzs7Ozs7Ozs7Ozs7OztLOztHO3FDLDBCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3lCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0k7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O0k7TSx3Qyx1QjtLO0ksTTtHOztJO0s7SyxNO0s7SyxNO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOzJCLG9DO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SztLLG1COztHOztJOztPLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O0c7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7Ozs7Ozs7Ozs7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7Ozs2Qzs2QzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4QjtzQixXLDhCO3VCLFcsOEI7NEIsVyw4Qjs7SSxXO0c7d0IsVyw4QjsyQixXLDhCOztJOzs7SyxNO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7OztVO1M7OztLO00sVTtNLE87O0s7O1Esa0IsTTtRLE87OztROzs7Uzs7WTs7O2M7OztlOzs7Yzs7O1k7VztTOzs7Uzs7WSxtQjtZO2EsTztZO1ksTzs7Ozs7O1c7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7WSxPOzs7c0IsTzs7cUI7VztRLE87a0I7a0I7Ozs7Ozs7Ozs7USxPOzs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzt5QixPOzs7O2M7YztHOztJO0k7OztLOztHOztJOztLLFE7STs7RyxnQzsyQixpQztrQyxxQzswQiw2QjswQiwyQjtzQiwyQjtzQiwwQjs7STtrQzt1Qjs7SSxJLFUsa0M7OzsyQjs7O0c7NkIsZ0M7O0k7OztLOztJO0c7Rzs7O0s7Szs7OzhCLE87O1M7OztVO1M7O1Msc0M7Uzs7O1M7O1U7Ozs7O0k7STtHOztJO3VDOzs7Rzs7STtHOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7STtJLE87Rzs7SSxJLGlCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLHdCO0ksTztHOztJO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7dUIsbUM7NEIseUI7O0k7SSxzQjtHO0c7OztJO0k7Ozs7Ozs7Ozs7STtJO0c7O0ksSSxnQjtJO0c7O0k7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCOzs7OztJO0s7SztLO0s7STs7O0ssSSxrQjtJLEksa0I7STs7O0ssSSxrQjtJLE87OztjO2M7YTs7Ozs7Ozs7O0c7MEIsa0Q7eUIscUIsMkI7O0ksSSxpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7OztHO3FDLG1CLFU7RyxZLHlDOztJOzs7O0c7O0k7STs7Ozs7Ozs7Szs7Rzs7STs7RztpQyxjOzs7Ozs7Ozs7Ozs7OzZCLGM7Ozs7Ozs7Ozs7Uzs7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00saUI7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sVzs7Ozs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7SSxPOzBDLDBCO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0k7RztnQyxzQzs7STs7MkM7OytDOzs4Qzs7OEM7Ozs7Ozs7Ozs7O0c7RztJLGdCOzs7Ozs7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7Szs7Ozs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7TSxxQjs7Ozs7O0ksTzs7O2M7Ozs7Ozs7OztnQzs7O2M7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHFCO0cscUI7RywyQjs7SSxPOzs0QjtHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLDBCO3VCLDBCOzRCLDBCOztJLE87OzRCO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxPOzs0QjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXO0ksTzthOzs7Z0I7OztpQixPO2dCLE8sa0I7ZTs7RztHO0k7OztRLE07TztJOzs7Ozs7Ozs7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STtrRDtJO0c7O0k7MkU7STtHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxRO1U7SSxJLEssNEIsUTs7OzswQjs7UTs7O1EsTTs7STtHOzBCLE8sbUM7O0k7Rzs7SSxXO0ksVztJLFc7SSxPOzs7YyxrQixROzhEO2M7YTs7Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTs7STtHOztJLFk7Ozs7OztRLGdCLG1COzs7NEI7OztJO0c7O0k7Z0I7SSxtQixVOzs7SztNLFk7TSxPOzs7STtHOztJO0ssTztLO087OztVLG1CLFE7Ozs7WSxPOzs7NEMsTzs7VTtTOzs7SyxPO0ssUTs7Ozs7Ozs7USxNOztJO0ssTztLO087OztVO1UsTztTOztrQjs7STtHOztJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7O08sTzs7O2lCO2lCLE87Z0I7OztlLE07O0c7O0kseUMsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7O0k7O0ssTzs7O0ksTzswQyxPLG9COzs7STs7SyxXOzs7STtZOzs7ZTs7OztnQixPO2U7Yzs7OztJLDhCOzs7Tzs7O08sTzs7NEIsTyxvQjs7OztPLE87OztpQjtpQixPO2dCOzs7OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksaUIsTTtJO0k7SSxrQixPO0k7O0c7O0ksa0IsTTtJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxVO087TyxPOzs7TztPO087OztVO1UsTztTOztPLE87OztpQjtpQixPO2dCOzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztRLG9CLE07USxPOzs7a0I7a0IsTztpQjs7Ozs7OztLLE87O0k7Rzt1QixTOztJO0ssUTs7Ozs7SztPOzs7VSxpQyxROzs7O1c7O1ksTTtrQjs7Vzs7OztZO1k7WSxPO2tCO1U7Uzs7STs7Ozs7MkI7OztJO0ksTztHOzs7OztrQzs7Ozs7UTs7Ozs7UyxNLHFDO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1EsZ0I7O1Esb0IsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7UTs7Z0I7OzttQjttQixjO2tCOzs7Ozs7SSxXOztJLE87Rzs7SSxJLGdCLE07STs7O087TyxPO007O0k7RztHOzs7O3FDOzs7OztNLFUsNkI7Ozs7Ozs7RyxXOztJO3NDLHNCOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7OzsyQjs7O0c7Rzs7SSxZOzs7O0ksZ0Q7STtHOztJLDhCOztJO0c7O0ksOEI7OztLLE87OztJLE87Rzs7STs7aUI7O0s7TTswQztLOzs7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7STs7eUIsa0Isc0I7O0ksTzs7Z0Msa0Isc0I7O0c7O0ksTztHOztJLFk7c0U7SSxNO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7O2dCO2dCO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUzs7Ozs7Ozs7O0k7Rzs7STtjO2M7O2dCO2dCO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7Szs7O0c7O0ksVTtJO21CO0c7O0k7Ozs7SyxPOztJO0c7OztLOzs7Ozs7O29COzs7Ozs7O3NCOzs7b0I7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7UyxPOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07Ozs7USxPOzs7OztrQjs7Ozs7USxPOzswQzs7O1EsbUI7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7OztrQjs7OzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7Ozs7O2dCOzs7Ozs7O1EsTzs7OztzQzs7OztRO1M7O1UsVzs7O2U7O1M7VTs7VSxjOztXLG9CLFU7Ozs7OztVO1c7WTs7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7OztZLFE7O1ksK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2UsVzs7O2U7O2tCOzs7ZSxXOzs7O2M7Ozs7O3VCOztXOzs7Vzs7Ozt3QjtTOzs7OztVLE87Ozs7MkIsTzs7O1EsTzs7Ozs7a0I7Ozs7OztTLE87Ozs7SyxPOzs7O21DOzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7bUI7O3NCLE87O0s7Szs7OztxQixPLHlDO3dCLE8sNEM7RyxnQztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kscUI7SSxPO0c7cUIsTyx5QztHLDZCOztJLDRCOzs7SyxPOzs7SSxPO0c7O0k7Ozs7USxPOzs7Ozs7c0M7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SztLO0s7SztLO0ssTzs7STs7O0k7O0ssTzs7Ozs7ZTs7OztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7UTtRO1E7USxPOzs7USxPOzs7OztrQjs7OzswQjs7dUIsTzs7MEM7O1E7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtROzs7Vzs7OztXLE87O1U7O1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJLE87Ozs7Ozs7MkI7O2U7ZTs7Ozs7Rzs7Ozs7d0I7Ozs7TSxPOzs7Ozs7OztnQjs7Ozs7Szs7a0I7Ozs7Ozs7SztlOzs7aUI7aUI7STtJLE87Ozs7Ozs7O2M7Ozs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Yzs7Ozs7Ozs7OztLO0ksMEI7Ozs7Ozs7OztJLE87OztJLFU7dUIsTywwQztJLE87Ozs7O2M7Ozs7O0k7Ozs7Ozs7VyxVOztXLE87Ozs7O3FCOzs7O08sTzs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7TyxPOzs7Ozs7O2lCOzs7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7O0c7STs7STs7O1EsTztPOztJOzt1QixPLCtDOztJOzs7USxPO087O0k7OztRLE87Tzs7STs7O1EsTztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEO0c7O0k7OztNLG9DOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7Ozs7O2dCLE87ZTs7Ozs7aUI7Ozs7Ozs7c0I7Ozs7Ozs7VyxPOzs7OztxQjs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1csTzs7O3FCO3FCLE87Ozs7Ozs7O29COztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXOzs7Ozs7cUI7Ozs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQixPOzs7Ozs0Qjs7O2lCO2MsTzs7Ozs7Ozs7O2MsTzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1c7VyxPOzs7cUIsTztvQjs7O08sTzs7Ozs7Ozs7Ozs7O2lCLE87OzsyQixPOzBCO2dCOzs7OztJOzs7OztJOztlOzs7Ozs7aUI7Ozs7ZTs7STtjOzs7Ozs7Z0I7Ozs7OztjOzs7Ozs7O0c7OztLOzs7O00sTzs7Ozs7Z0I7Ozs7O3dCLE8sMEM7Ozs0Qjs7Ozs7O21DOzs7O0k7dUIsTywwQztJO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOzs7Szs7O007OztLOzs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNOzs7Z0I7Ozs7OztJOztLOzs7O0s7OztjOzs7O0k7OztPLE87Ozs7Ozs7Ozs7O2lCOzs7OztRLE87NkIsTzs7USxPO08sWTs7USxPOztPLE87OztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7STtZOzs7OztHOytCLG9DOztJO0k7WTs7Ozs7Rzs7STs7OztLLE87STtHO2lDLHNDOztJLDhCLE87STtHO21DLHdDOzBCLHNDO2dDLDZDOztJO2dDO2tDO0k7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7UztpQixPOzs7O0c7O0ksSSxVOzs7Ozs7Uzs7dUM7aUIsTzs7OztxQixPOztJO0c7O0ksSSxVOzs7Ozs7UTs7O1E7O1EsTzs7O1EsVTs7Ozs7Ozs4Qjs7UTs7OztLLE07O0k7Rzs7SSxJLFU7Ozs0Qjs7OztHO0c7SSxTOzs7Ozs7OztvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7O0ksVztJO0s7OztRLHVDOztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVO1k7OzZCOzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7Ozs7ZTs7O2tCOzs7cUIsTzs7b0I7Ozs7bUI7c0I7b0IsTTs7bUIsVzs7OzsyQzs7dUI7O3dCLE87d0IsTTt1Qjt1QixJLE8sNEI7MEI7d0IsTTs7dUIsWTs7O3dCOzs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7OzswQzs7MEIsTTs7Ozs7d0IsWTs7Ozs7MEIsSzsyQjs0QixVOzs7Ozs7OEI7Ozs7Ozs7d0I7Ozs7K0I7O3VCO3VCOzttQjtvQixPO29CLEk7bUI7bUIsYTttQjttQjtrQjtrQjtpQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZO2M7OytCOzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTtXO2E7OzhCOzs7OztXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7O1U7WTs7O2U7ZTtjOzs7Ozs7O1E7Ozt5Qjs7O0k7STtHOztJLE87O2tDLGlDO0c7O0k7O0s7SztLO0k7Rzs7STs7SzthOzs4Qjs7OztJO1k7OzZCOzs7O0k7Ozs7SztLOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7NkI7Ozs7Ozs7Ozs7WTs7O2U7O2dCO2dCO2dCO2tCOzttQzs7Z0I7ZTs7Ozs7O0k7WTs7NkI7Ozs7Ozs7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7STs7Tzs7OztRO1E7VTs7MkI7O1E7Tzs7Tzs7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtZOztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJLEksOEI7STtZOzs2Qjs7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOztJOztLO0s7O0s7SztLO0k7WTs7NkI7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7SSxPOztrQywrQjtHOztJOztLO0s7O0k7Rzs7SSxPOzs7YzthO0c7O0k7O0s7OztLO087O3dCOztLO0s7Tzs7d0I7O0k7Rzs7SSxPOzs7YzthO0c7O0ksTzs7O2MsVTtjLE87YTs7O0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7SSxrQixzQjtJO1k7OzRCOzs7OztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxNO1ksTTtXLE87VTs7Ozs7O1MsVTtTLE87UTs7Ozs7OztROzs7OztTLE87Uzs7Ozs7UTs7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxPO1M7Ozs7O1E7Ozs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7SSxPOzs7YztzQjs7O3lCOzs7O2E7OztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Ozs7OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7Rzs7SSxvQjt3QjtJOzs7Ozs7O0s7O3VCO0s7O3VCO0k7OztlOztnQjs7O2UsTzs7O3lCOzBCOzRCOzs0Qzs7MEI7eUI7d0I7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOzZCLE8sdUM7O0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOzs7Ozs7Ozs7OztJO0s7OztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzRDLFc7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTzs7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7SSwwQix1QjtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O2E7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2U7Yzs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7RztJO007O3FCLFcsK0I7O0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsVzs7OztNLE87O0k7STtJOzs7O0ksTztHOztJOzs7OztZLHdDLFk7STtLOztNLDRCO007TSxNO3FCOzs7STtHOztJO0s7OztJLHlDO0k7O0ssOEI7SyxjO0ssUTtLLE07OztLLE07Szs7Ozs7OztROzs7Ozs7Ozs7STs7OztHOztJOzs7OztJO0s7Ozs7Ozs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7Ozs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7O1U7Ozs7OztLOztHOztJOztLOzs7TTtNO007Szs7O1E7USxPOzs7Tzs7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0s7TTtNO007O0s7Szs7TSxNO0ssRztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7Tyx5QixNO08sTzs7Tzs7O1EsTTtPLE87OztPLDJCLE07TyxPOzs7Rzs7O00sdUI7O00sVztLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzt1QixNLGdEO0c7STs7O1E7O1M7VTtXLE07VyxNOzs7Ozs7OztTO1U7OzttQjs7O1UseUI7O1E7TztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SztLO0ksVztHOztJOzs7Ozs7STs7O0k7O0k7Rzs7STs7SztPOztnQyxzQzs7O0ssTTtJLE87Ozs7d0I7Ozs7OztLOzs7OztJLEksVTs7OzJCOzs7Yzs7STs7O0k7OztLLFc7O0s7SyxPOztJLE87RztnQyxrQjs2QywrQjs7STtLLE07SztPOzs7eUIsTyxpQjtJO0k7Rzs7O0ksTzs7O2MsVTs7YyxPO2E7Ozs7O0k7Ozs7SztLO0s7SztJLHNCO0k7OztPLDhCOzs7O007OztLLEk7Ozs7O007OztJO0k7Rzs7STtJLHVCLE07SSxJLFU7Ozs7NkIsTTtLLFk7OztNO007TyxLO087TTs7O007SyxNOztjLE07OztLLE07STtHOztJO0ssVTtLLFc7STtJO0ssTTtLO0ssSztJO0k7Rzs7STtHOztJOztLLFU7O0s7SyxVO0s7TSxPOzs7Z0I7aUI7aUI7aUI7Ozs7O2tCO2tCLE87OztrQjs7bUI7cUI7bUI7a0IsTzs7Ozs7aUI7O29COzs7Ozs7cUIsTTs7dUI7Ozs7Ozs7Ozs7O29CLE07Ozs7Ozt1Qjs7aUI7aUIsTzs7ZTs7Ozs7STtHOztJO0ksSSxXOzs7O00sTTs7O0ksVyxNOztJO0c7O0k7OztLLE07SSxPOzs7O0ksTzs7OztJLE87Ozs7SSxPOzs7STs7Ozs7SyxRO0s7STtHOztJO0ksTzs7O2lDLE8sK0I7O2M7Ozs7ZTtpQjs7Ozs7b0IsTzttQjtlOzs7Ozs7Ozs7ZTtjOzs7OztjOzs7aUI7OztnQjs7YztjO2E7Rzs7STtLOztROzs7Ozs7UyxNO1EsTzs7Ozs7Ozs7Ozs7UTs7Ozs7UyxNO1MsTTtRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7O007RztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7Ozs7OztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07Ozs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNO087Uzs7O1k7Ozs7O2lCLFcsTzs7aUIsTztnQjs7O1k7Vzs7Z0I7Ozs7OztJO0ssTztLO087O3lCLHFCLDBCOztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7UTs7O1c7VyxjO1U7O0k7SyxPO0s7Tzs7O1U7VTtTOztJLE87Rzs7STtLLE87SztPO1M7OzJCLG1CLGU7OztLO21DOzs7TSxPOzs7K0I7Ozs7SztJO0ksTztHOztJO0k7O0s7TTtROzs7VyxPLGM7VTs7O007bUM7Ozs7TTs7UztXOzs7YyxPO3VEO2E7Ozs7Ozs7Ozs7OztVO1UsTyw4QjtTOzs7Ozs7Rzs7STtJOztLOzswQixPLHNDOzs7bUM7Ozs7TTs7O1M7VSxhO1UsMkI7UyxPLGM7UTs7Ozs7Ozs7OztVO1UsTyw0QjtTOzs7OztHOztJO0k7SztNO1E7O21DLG9COzs7TTs7Ozs7O0ksTzs7O2MsSSx1QixjOzs7c0M7OzthOztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQzs7STs7Ozs7Ozs7RztHO0k7OztRLE07Tzs7STs7O1EsTTtPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLO007UTs7bUMsb0I7OztNOzs7Ozs7STtLO087OztVLEk7Ozs7O1k7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTOztLLE87SztJLE87Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7d0IsaUQ7O0k7SyxtQixPO0ssTzs7O0ksTzs7RztJOztpQyx1QjtnQyxpQztxQix1Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7SztPOzs7VSw4Qjs7VTtTOzs7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjs7Ozs7SSxPO0c7O0k7Rzs7SSxPO0c7O0k7STtLO0c7O0ksTzs7Rzs7SSxPO0c7O0ksTztHOztJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOztlLE07O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPO2UsTTs7Rzs7STtLO0ssTTtJLE87Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7Ozs7SyxNO0k7O0ssTztLO08sMkM7Szs7O0s7Szs7SSxNOzs7SSxJLFc7Ozs7Ozs0Qjs7UTs7O1M7USxPOztRLE07OztRO1M7O1U7VTs7VTs7VzthOzs4QiwrQjs7VTs7UyxNOzs7Ozs7Vzs7O1k7WSxRO1ksTzs7VyxNO21CLE07O1E7OztJO0kscUI7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTzs7OztPOzs7UTtRLFU7O2UsTTs7Rzs7SSxPOzs7Yzs7aUI7O2tCLE07O2lCOztpQjs7Ozs7aUI7aUIsTzs7aUIsSTs7O2tCOzt1QjttQixXO21CLE87Ozs7O2tCLFc7a0IsTzs7O2tCLE07OztpQjs7aUI7O2lCOztpQjt5Qjs7OztHOztJLFksTzs7STs7RztJLG1COzs7OzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7TztlLE07Ozs7STs7O00sc0I7OztPO1EsTztRLE87TztRO1MsTztvQjs7O2dCOzs7Ozs7O0s7Ozs7OztNOztxQzs7Ozs7TTs7OztHOztJLEksK0M7Ozs7O00sTTs7Szs7Rzs7STs7Tzs7Tyw4Qjs7O08sTTs7Tzs7O1E7OztHOztJO0k7Szs7O00sSTs7Ozs7Ozs7Ozs7Szs7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7TztlLE07O0c7O0k7Rzs7SSxJLDZCOzs7O0s7O1UsaUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7UTs7O0c7O0ksVztJO0ssbUI7Szs7TTs7Ozs7O0s7TTtPLE87TyxPOzs7Ozs7TTtPLEs7TyxPO007OztLO0s7STtJLEksZ0I7STtLOzs7Ozs7Ozs7Ozs7c0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO0ksd0MsTyxpQjtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLLG9DLHVCOzs7TyxZOzs7OztPLFk7Tzs0Qjs7Tzs7d0IsaUQ7O08sTzs7O2lCO2dCOztNOzs7SztLOzs7ZTtlO2dCO2lCLFU7aUI7bUI7NEI7O2dCOztlLG1COztlO2M7O0c7O0k7Ozs7Rzs7SSxPOzs7K0IsTyxxQzs7Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7TyxPOzs7aUI7aUIsK0Q7aUI7Z0I7OztPOzs7UTsrQixnQjtRO1U7OzthOzs7TyxPO2U7O0c7OzBCLGdCOzs7Ozs7eUM7OztPOzs7UTtRO1U7OzthOzs7ZTs7OztJLE8sMkM7Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO087OztVO1U7O2E7OztjLFM7Yzs7OzswQjs7Ozs7YTtjLE87YyxZO2M7YztjLE87b0I7OzthOzs7YyxhO2MsTzthOzs7Ozs7Ozs7aUI7O2tCLE87a0I7b0I7c0Q7aUI7OztvQjs7bUI7Ozs7O2lCOztrQjtvQjtrQjtvQjtzRDtpQjs7O29CO3FCLFk7cUI7OzttQjs7OzthO2MsTztjLFk7YztjO2MsTztvQjthOztjO2dDOzs7Yzs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7OztjLFE7YyxRO2M7YyxPO2MsWTtjO2M7K0I7OzthOzs7O2MsVztjLE87YTs7O2UsTTs7O3dCOzs7O2E7YyxTO2MsTztjLFE7Yzs7Ozs7Ozs7OztjO2M7YyxPO29COzs7OzthOzs7YyxXO2M7Z0I7YyxPO2MsVTtjO2M7YyxPO29COzs7O2E7OztjLFM7YztjLE87YyxVO2M7YztjLE87b0I7OzthOzs7YyxTO2MsTztjLFU7YztjO2MsTztvQjs7O1M7O087O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0s7SztrRCxzQjtLO0s7Ozs7cUI7OEI7OztNLE87OztnQjs7Z0IsVztnQixPO2U7Ozs7OztHOztJOztLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLGdEOzs7O2lCLDBCO087Ozs7Ozs7Ozs7Rzs7STtJLGlCO0k7STs7O087TTs7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0s7Ozs7bUIsZTs7SSxJLHFCOzs7Ozs7OztROztTLFM7UztXOzs7YztjOzs7OztpQjs7O2lDOzs7aUI7a0I7bUIsVTttQjttQjttQjttQjttQjttQixXOzttQjttQjs7Ozs7c0I7Ozs7Ozs7Ozs7OzttQjttQjs7OzttQzs0Qzs7O29CLE87Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7OzhCLE87Ozt3Qzs7a0Q7O3VDOzs2Qjs7Ozs7Ozs7OztnQjtjOytCO2M7Ozs7Ozs7Ozs7ZTtjOzs7Ozs7Ozs7Ozs7O2E7Ozs7OztZOzhDOzs7O1E7O1M7VztTO1c7OztjO2M7Ozs7O2lCOzs7aUM7OztpQjtrQjttQixVO21CO21CO21CO21CO21CO3lCOzttQjttQjs7OztvQzttQjtvQjtvQix1Qjs7O29CLE87Ozs4Qjs4QixPOzs7d0M7O2tEOzt1Qzs7NkI7Ozs7Ozs7Ozs7Z0I7YztjO2M7ZSxZOzs7Ozs7Ozs7OztlO2M7Ozs7Ozs7Ozs7Ozs7YTs7O1M7O1k7OEM7Ozs7O0k7STtJOzs7Szs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SztJO0k7STs7Ozs7Tzs7O3VCOzs7TztROztTLGU7UztTO1MsVzs7UztTOzs7OzBCO1MsTzs7O21CO21CLE87Ozs2Qjs7dUM7Ozs0Qjs7a0I7Ozs7OztPO007STs7O0s7Ozs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLHVDO0k7OztPO007O0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7Ozs7STtJO0s7OztLOzs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7Ozs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJOzs7STtLO0ssUTtLOzs7STtHOztJO0ksNEI7Rzs7SSxZO0k7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtHOztJO0k7Rzs7SSxvQixPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0I7SSxPO0c7O0k7SyxLO0s7SzswQztJO0c7O0k7SyxLO0ssZ0M7STtHOztJO0ssSztLO0ssUTtLO0k7Rzs7SSxTO0k7OztHOztJO0ssSztLLFE7Syw2QjtJO0c7O0k7SyxLO0s7SyxvQztJO0c7O0k7SyxLO0ssK0I7STtHOztJO0c7Ozs7O0ssVzs7Ozs7O1Msa0I7Uzs7VSxRO1MsVztRO0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7O0k7SyxPO0s7OztJO0c7O0k7Szs7O0k7RzsrRTtHOzs7O0s7O0c7RztJOztHO0c7STs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7O0c7STs7O0k7STtHOztJO0ssSzs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SyxLOzs7Szs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSTs7OzRCOzs7cUI7O3VCOzs7Szs7Ozs0QixPLGlCLHFCOzs7SztJOztLOzs7OzRCLE8saUIscUI7OztLO0k7STtLO3lCLHlCO0ssMkIsd0I7Syx5QiwwQjtLLHdCLHlCO0ssMkIseUI7SywwQiwwQjtLLDBCLHlCO0ssMEIsMEI7STs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7TSxNOzBCOztLLEcsOEI7SyxNO0k7SSxJOzs7NEI7Ozs7Szs7O00sRzs7TyxXOzs7SyxNO0k7O0s7OztNLEc7O08sVzs7O0ssTTtJO0k7Ozs7SztLO0s7SztLO0s7SztJOzs7Ozs7Ozs7Ozs7OztHOztJLHFCOztLLE07STtHOztJOzs7O0s7O2U7ZTtLLGM7SyxpQjtLLGlCOzs7O0s7TTs7O1M7O3NDOztRO0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztpQjs7Ozs7OztXOzs7Ozs7UTtLOztJOzs7STtLO087SyxLO0s7O0ssTTs7STtHOztJLEcsZ0Q7SSxjO0ksTztHOztJO0ssTztLLE87SztPLFc7SSxPO0c7O0k7STtJO0ssTztLLE87SyxPO0s7Tzs7UztLLFc7Szs7STtJO0c7O0k7MkIsVztHOzsrQiw0QztJO0c7Rzs7O0k7TTs7Ozs7VTs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOztJLE87Ozs7NkIsTywwQjtHOztJLGtCO0ksTTtHOztJLFU7O0k7SSxPOzs7YztlOzs7b0I7ZSxPO2UsTztjLE87YTs7Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVO0ksVztJLE87Rzs7SSxVO0ksb0I7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7SSxVOzs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJOzs7TSxZOzs7Tzs7O1EsSSxXOzs7Ozs7UTs7Tzs7Tzs7Ozs7TSxNOzs7O0k7Rzs7SSxVO0ksYztJOzs7SztNLFc7Ozs7Ozs7Szs7O0c7O0k7Rzs7STs7O1MsSTs7O007TyxJLFc7Ozs7Ozs7Ozs7Ozs7STtLLGtCOztLOzs7Ozs7Szs7SSxJOzs7O007OztJO0k7Rzs7STs7Yzs7O2dCOztpQjtpQixPO2dCO2dCO2U7OztHOztJOztPOztROzs7Tzs7Tzs7O1E7OztPOztPO1E7Ozs7UTtVOztPOztHOztJO0s7OztLOzs7O007O0s7OztrQjs7STtHOztJOzs7Szs7O007OztNOzs7O0k7SztPOzs7VTtVO1M7O0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCOztpQjs7O21COztvQjtvQixPO21CO21CO2tCOzs7Ozs7Ozs7O1EsSSxhOzs7Ozs7O1MsTzs7OztvQjttQjttQjtrQjs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7UyxPOzs7O29CO21CO21CO2tCOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFc7SSxtQjtJOztLLFE7O0ssTzs7STtZLDBDLGlCO0ksTyxXO0c7c0Msa0M7cUMsa0M7dUMsa0M7d0Msa0M7c0Msa0M7dUMsa0M7Ozs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Ozs7STs7OztJLGlCO0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7OztJOzs7O0ksSTs7Ozs7OztPOzs7OztJOzs7O0ksc0I7Ozs7SSxJOzs7NEI7Ozs7O0ssTzs7OztnQjtlO2U7Yzs7O0k7Ozs7SSxJOzs7Ozs7O087Ozs7O0k7Ozs7SSxzQjs7OztJLEk7Ozs0Qjs7Ozs7SyxPOzs7O2dCO2U7ZTtjOzs7STs7OztJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STs7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7Szs7O2U7ZSxPO2M7Yzs7STs7Szs7O0s7eUI7SSxvQixPO0ksTzs7O2MsTyw0QjthOzs7Rzs7STtLOzs7TTswQjtLLG9CLE87SyxPOzs7ZSxZOztlLE87Yzs7OztJLFk7NEIsTyx5Qjs7STtLO007UTs7O1cscUIsTztVOzs7TTtnQjtLOzs7O007UTtVOzsyQix3Qzs7Ozs7O0c7O0k7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7OztJOztLOzs7Szt5Qjs7SSxPOzs7YyxTO2MsTzthOzs7Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsd0M7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7OztLO087OztVLEksSztVLFc7Uzs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPOztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssVztLLE87STtJOzs7TyxPOytDLHFCOzs7TyxPOytDLDRCO2U7O0c7O0ksTzs7OztjLFc7YyxPO2E7Rzs7STsrQyxzQjs7Rzs7STsrQyxzQjs7Rzs7STs4QyxzQjs7OztHOztJLDZDLHlCOztHOztJLHVDLHlCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7Tzs7O1EsTztPO087a0I7cUM7TyxPOzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087TyxJOzs7O1M7OztPLFc7TyxPOzs7Ozs7OztPOztRLE87TztPLEk7Ozs7Uzs7O08sVztPLE87Ozs7Ozs7O087O1EsTztPO08sSTs7OztTOzs7TyxXO08sTzs7Ozs7Ozs7Tzs7USxPO087Tzs7O087Tzs7O087Tzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O087O1EsTztPLE87O087O1EsTztPLE87Ozs7TztRO1EsTztRLE87TyxPOzs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTzs7UyxPO1E7OztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O08sTzs7O087OztHOzs7TSx1QjtNOztPO087Uzs7WTtNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJLE87OztjOztpQzs7Ozs7a0IsbUI7Ozs7Yzs7O0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJOzswQixPLHlDOztJO0ssTTtJO0c7O0k7SyxNO0k7Rzs7STtLLE07STtHOzBDOztJO0ssTTtJO0c7O0ksTzs7K0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STtHOztJLDhCOzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TyxrQztPOzs7O2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7O1EsTzs7O2tCO2tCLE87aUI7Ozs7USxPOzs0QixPOzs0QixPOzs0QixPOzs7UTtRLE87O0k7OztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7O1E7Z0I7OzttQjttQixtQjtrQjs7Ozs7USxXOzt5QixXOztzQixXOzt3QixZOztRLHlDLE07USxZOztJO0c7O0k7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7O1MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O0ksTzs7NkIsbUIsVTs7Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtJOzttQixxQzs7O0c7O0k7SSxPO0c7O0k7RzsrQixPLHFDOztJOzs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1E7Ozs7O1M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7O0k7STs7d0I7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7O08sTTs7ZSxNOzs7OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TTs7Ozs7TSxJO007TztxQjtPOzs7O1E7O1E7Ozs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztVLFU7VSxPO1M7TTtNOzs7TyxVOztNOztTOzs7O0s7Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZLE87O0ksTzs7O0k7STs7OztRLE87Ozs7O1EsTzs7Ozs7Ozs7Ozs7OztLLE87O0c7O0ksTztHOztJOztxQixPOztxQixPOzs7O1EsTzs7TyxPOzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxlO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0ksTzs7O2M7O2E7O0c7O0k7STs7Rzs7STtJLE87OztjO2M7YyxPO2E7O0c7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTs7O1E7UTtRLE87OztrQjtrQjs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7OztXLE87OztxQixPO29CO1U7Ozs7Ozs7UTtROzs7UTs7Ozs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNOztNOzs7O1M7VTs7O2E7YTthOzs7YTthOzs7YTthOztTO1M7Ozs7O21DOzs7O1EsTzs7O1E7Ozs7OztRLE87OztRO1E7OztRO1E7a0I7O1E7UTs7OztTO1c7OztjOztlLE87ZSxPO2MsTzthOztTLE87UTtROzs7UTtROzs7UTtROzs7UTtROzs0Qjs7NEI7OzRCOzs7UTtROzs7OztHOztJOzs7TztPO087OztPO087TztPOzs7TztPO087OztPO087O0c7O0k7STs7SztLO0ssSSxtQjs7TTs7TTs7O1M7UztROzs7O21DOzs7O1EsTzs7O1EsTzs7O1E7O1E7OztXOzs7Ozs7Ozs7UTtROzs7Ozs7OztTOztTO1M7O3VCLGdEOztTOzs7UTs7Ozs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtROztTOztTOztTOzs7OytCOztZO1k7OztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7Vzs7Ozs7O1c7Ozs7OztXOzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7OztRO1E7OztRO1E7Ozs7OztRO1E7Ozs7OzRCOzs7UTs7Ozs7O1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7Ozs7Rzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7STtJOzs7O0s7Szs7O0k7STtJO0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7OztROzs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7Ozs7UTtRO1E7OztROztROzs7Vzs7OztROzs7Ozs7OztTO1M7Uzs7Ozs7OztROzs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7Ozs7Uzs7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOztPOzs7TztPO087OztPO087OztPO087O3lCOztHOztJO0k7STs7Rzs7STtJO0k7O0c7O0ksWTs7STs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7OztTO1M7UztVLE87O1M7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7aUI7Ozs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7O2dCOztrQyxtQixVOzs7O087Tzs7OztnQjs7a0MsbUIsVTs7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7O0k7SyxPOztJOzs7STs7O0k7O2MseUI7O0s7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7O0k7O08sTTs7TyxNO2UsTTs7RzswQyxrQztpQywwQztHOzs7eUIsb0I7NkIsaUM7O0ksTTtHOztJLE07RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLHNCOztNO08sTztNO007TyxhO08sVztNO2M7O0s7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7SyxROzs7cUI7Ozs7Rzs7STs7Rzs0QixPLHdDOztJO0k7STtvQyxPLHNCO0k7Rzs7SSwrQztHOztJO0ksSTtJO0k7Rzs7SSwrQztHOztJO0c7O0k7Rzs7STtJO0k7STtHOztJLHFDO0c7O0k7OztJO0k7b0MsTyxzQjtJO0c7O0k7OztJO0c7O0k7O0c7O0k7O0k7RztxQywrQjtHOztJOztLO00sTztNOzt5Qzs7OztJO0c7O0k7O0c7O0ksSSxxQyxJO0k7STtHO0csSTs7STtLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztrRTtHOztJOzs7O0k7RzsrQix3QjtHO0k7Ozs7Ozs7OztJLHVDOztJO0c7O0ksa0IsTzs7SSxPO0c7bUMsOEI7O0k7Yzs7Rzs7SSxXO1c7Rzs7SSxXO0ksUztzQjtJO0ksTztHOztJLG1COztJO0c7O0ksK0I7STtHOztJOzs7O00sTzs7O0ksTztHOztJLGtCOztJO0c7O0k7O0c7O0k7STs7O1E7OztnQjs7Rzs7STtrRDtJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxZOzs7TTs7Ozs7Tzs7Ozs7STtZOzs7ZTtlLE87Yzs7O0c7O0ksTzs7O2M7YyxPO2E7Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Ozs7YTtNOzs7OztNOzs7O087Ozs7O0c7O0k7STtLLFk7Ozs7Ozs7O0s7O0c7O0ksSSx1QixROzs0QztJO0c7O0ksSSx1QixRO29EO0k7Rzs7SSxjOzs7O1E7OztRO1MsWTs7OzthLE87Ozs7O1MsTTs7O0ksTztHOztJLFk7Ozs7UTs7MkIsTzs7SSxPO0c7Rzs7TTs7O1M7UyxPO1E7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPOzs7OztjO087Ozs7Vzs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7Rzs7O0s7SztNLEssNkI7TSxZOzs7O1U7Ozs7OztZLEksVTs7Ozs7Ozs7Ozs7O2U7Ozs7OztXLE87O3lDOzs7Ozs7OztVLG9DOzs7Ozs7OztVOzthOztvQzs7O1UsRyw0QjtVLFc7Ozs7OztNLE87O29DOzs7O0k7STtHOztJO0s7SyxLLDJDO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7Ozs7O1M7d0MseUI7Ozs7Uzs7O1k7WSxXOzs7YSxPOzs7WSxPOztpQyx5Qjs7Vzs7Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7STs7O0k7STtJO0s7OztROztRLEksNEI7Ozs7O1MsTTs7O087O0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztNO00sTzs7Ozs7OztHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTs7VSxPOzs7VTs7Ozs7VTtVLE87OztvQjtvQjttQjs7O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7Szs7O0c7O0k7STtLO00sYTtNLE87SyxXO2dCLDZCO0ssWTs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1UsVzs7Ozs7O0ssTzt3Qzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sTzs7OEI7Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7Ozs7YztpRCxvQjs7VTs7OztjOzs7aUI7a0IsTztrQjttQztpQjtnQjs7O1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csTzs7bUM7Ozs7Ozs7OztxQjtXOzs7Ozs7O3dDO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLE87O2lDOzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SyxPOzs2Qjs7O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJO0k7Syx1Qjs7OztPO1EsTztRLGM7Ozs7Ozs7O00sSTs7OztLLGlCO0ssVztLO0ssWTs7Ozt5Qjs7Ozs7Ozs7d0I7OztVO1csTTtXLE87Ozs7Ozs7Ozs7O2E7Z0Qsb0I7OztTO1c7OzRCOztVOzs7OzthLE87Ozt1QixPOztpQzs7OztzQjs7O1k7UyxtQjtTLEksVzs7O3FDOzs7Ozs7O1MsTzs7O21COztrQjs7O0ssTzs7O2U7Ozs7Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7UTs7O1c7VyxPO1U7O1EsTzs7O2tCO2tCLE87aUI7Ozs7UTs7Ozs7STtHOztJO0c7K0IsMEI7O0ksSSxRLDZCOztLLFk7OzttQjs7O0s7TSxROzs7Szs7O3FCO0s7SztLLE87d0M7STs7Szs7Ozs7bUI7O007TSxjLE87TTs7dUI7O00sWTs7Tzs7USxPO1EsSztRLE87UTs7cUI7Ozs7OztLO0k7STs7STs7cUI7O0ksTzs7O2M7ZTtlLE87O2E7O0c7O0k7NEI7Rzs7STtLLFk7Z0I7Ozs7Ozs7SztLO0s7SyxPOzs2Qjs7O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7Ozs7YztZOzs2Qjs7O007Ozs7O00sZTtNO00sTzs7OEI7OztJO0k7OztPLFc7TztNOztJO0s7TSxXO007Ozs7OztNO0c7O0k7SyxXO0ssVztLO1E7TSxNO0s7SyxPO0k7SSxJLFMsSTs7Ozs7O0k7STtHO0c7STs7Ozs7Ozs7OztJLG9CO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Ozs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjOztpQixrQixRO2lFO2lCOztjLFM7YTtlLGtDO2MsVztjO2dCO3FCO2U7Z0I7Z0IsTzt3Qjs7Ozs7Ozs7Ozs7VTt5Qjs7Ozs7a0I7O0k7STs7O0k7Ozs7SSxPOzs7YzthO0c7O0k7O0k7O0k7Rzs7SSxPOzs7YyxPOzttQyxtQzs7YTtHOzs7Szs7OztrQjtNO0ssTztJOztLLEksNkI7Ozs2Qjs7O0s7STtJLFk7STtHOzs7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTs7O0ksTzs7O2M7Yzs7Ozs7bUI7O29CO29CO29CLFE7Ozs7Ozs7Ozs7b0IsVztvQjs7O21CO29CLFM7b0I7b0I7c0I7OzttQjttQjtvQjtvQjttQixLO29CLE07O21CO21CO2tCOzs7Ozs7aUM7YztlLFE7ZTs7O2U7aUI7O2tDOztjO2E7Rzs7SSxPOzs7YztlO2lCOzsrQiw0Qzs7ZTtjO2E7Rzs7SSw4Qjs7O3lCOzs7TztlOzs7a0I7Ozs7bUIsTztrQjtpQjs7Ozs7TztlOzs7a0I7Ozs7bUIsTzttQixPO2tCO2lCOzs7Ozs7SSxPOzs7Yzs7Ozs7Ozs7Ozs7O2U7aUI7O2tDOzs7OztlOzs7b0I7Ozs7OztjO3NCOzt1Qzs7Ozs7Ozs7Ozs7Ozs7O2E7Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1M7Vzs7NEI7O1M7UTs7UTs7UztXOzs7YztjO2E7O1M7Vzs7O2M7YzthOztTO1E7O1E7Ozs7UztROzs7SSxPOzs7Yzs7O2U7aUI7O2tDOztlO2M7YTtHOzs7SyxZOzs7TTs7SyxNO0k7STtLLE87SyxVO0ssTztJO0ksSSw2Qjs7Szs7O1E7USxPO087OztJOztLOztVO00sZ0I7TSxJLFcsdUM7Ozs7TyxrQjtPO08sVzs7Ozs7O1k7Ozs7O2E7YTs2Qjs7O1k7O2EsTzthLE87WTs7O3FCOzs7WTthOzs7O2E7YTtjO2UsTztlLGtCOzs7YTs7YztnQjs7aUM7Ozs7Ozs7Ozs7Ozs7VzswQzs7TztPOzs7SztRLG9DO0ssZ0I7SztLO0k7STtJOztzQixPLHFCOztJO0c7OztJLE87OztjOzthOzs7SSxPOzs7YyxZOzs7Ozs7Ozs7Ozs7ZTtnQjs7OztjO2M7YTtHO0c7STs7O1EsTTtPOzs7SSxXO087SyxNOzs7STs7O0s7TSxpQixROztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOzs7OztJO0s7Szs7Ozs7TSxNOzs7O0c7STs7OztJLFk7OztZO007OztLO00sUTtNLFE7TTtNLFU7OztNOzhCO087TyxJOzs7OztPOzs7Ozs7O0ssdUM7SyxJLFU7Ozs7TSxhO00sRztPLE07TSxPOzs7SztNO087Ozs7Ozs7O0s7TSxPO00sVTtLO0s7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7Ozs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7O1MsSyw2QjtTLEk7OztxQzs7O1M7OztTOzs7OztTOzs7UyxNOztLOztHOztJO0c7O0ksWTs7SztJLE07Rzs7SSxXO0ksSSx5Qzs7OztLO0ssTTs7Rzs7SSxJLDBEOzs7O2dDOzs7Rzs7STtLLEksSTs7Ozs7OztXOztZO2E7O2E7Ozs7d0M7OztXOzs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7WTs7O2U7OztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SyxnQjtLLE87OztlOzs7O0k7RztHLEk7d0IsdUI7O0k7SztLO0s7STs7O2E7Tzs0QiwwQjs7Ozs7SztLLE07O0c7O0ksSSxxQjs7O3dCOzs7Rzs7SSxJLDRCLGM7Ozt3Qjs7O0c7O0k7SyxPO0ssVzs7SyxZOzs7OztTLEc7VSxNO1Msc0Q7UyxvQjtTO1U7Ozs7Ozs7OztVOzs7Ozs7VSxJLEksTzs7Ozs7O1UsTzs7O29CLDZCO29CO21COzs7Ozs7UyxhOztLOztNLEksZ0I7TSxPOzs7Z0I7Ozs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1MsTzs7O21CO21CLE87a0I7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0ksaUM7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLOzs7SyxZOzs7Ozt3Qjs7UztVO1csSztXO2E7OztnQjs7O3NCOzBCOztlOzs7VTs7Ozs7OztvQjs7b0M7Ozs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssTzt3QztJOztLOztJLE87O2lDLGlDOzs2QixrQzs7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHO0c7O007OztTO1MsTztROztJOzs7Szs7OzttQjs7UyxPOzs7b0I7b0IsTzttQjs7bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTtjOzs7aUIsZTs7Z0I7OztXOzs7OztZLE87Ozs7VSxXO1U7OztVO1k7OzBCLE8sb0M7O1c7Ozs7TSxPOztJO0k7Rzs7STs7SztPOzs7VTtVLE87Uzs7O0k7TTs7b0IsTywyQzs7SztJO007O29CLE8sMkM7O0s7STtLO08sd0Msc0I7SztPLHdDLHNCOztJLE87O2lDLHdDOzs2QixPLHNCO0c7O0k7SztLOzs7Ozs7Szs7RztHO0k7Ozs7Ozs7STtLO087O3dCOztLO087O3dCOztJLE87OztjO2U7aUI7OztvQixZOzs7d0I7c0I7c0I7c0I7OztvQjs7O2U7ZSxPO2UsTztlLE87ZSxXO2M7YTtHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7VSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtZOzs2Qjs7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7O0k7O0s7Z0M7OztLO007TTtNOztNLFE7OztNO00sSTtLO0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STs7SyxJLFc7Ozs7Ozs7O0k7Rzs7SSxJLDZCOztHOztJO0s7TSxPO00sTztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7Ozt3QjsyRCxTOztvQjtxQixPOzt1Qjs7OzBCOzBCO3lCOzs7OztvQjtxQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7Ozs7OzhCLEs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7OEI7OzhCOzs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7O2tDLE07Ozs7Ozs7OztvQzs7Ozs7Ozs7b0M7Ozs7a0MsTTs7aUMsVztpQyxHO2tDLE07Ozs7Ozs7K0IsTTs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07a0IsTzs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7OzttQzs7OztrQyxPOzswRDs7Ozs7Ozs7Ozs7Ozs7O2tDLE87OzBEOzs7Ozs7Ozs7Ozs7Ozs7OzZCLE07OzRCOzJCOzs7Ozs7OztpQjtrQjtrQjs7Ozs7bUIsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksTzs7a0M7OztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0s7Tzs7O1U7dUI7UztJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07SSxPOzs7Yzs7Ozs7ZSxPO2UsTzs7O2U7Ozs7Ozs7ZSxNOztjO2E7O0c7OztLO0s7Ozs7UTtRLFc7VztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJO0k7SztJLEkscUI7STs7Szs7c0I7O0ssSTs7Ozs7OztJLFc7STtLO0s7SyxPO0ssa0I7SSxJLFc7Ozs7TSxNOzs7STtLLGM7Szs7O0ksZ0I7SSxPO0c7O0ksVztJLFM7STtLO0s7SSxPO0c7RztJOzs7USxNO087O0k7OztRLE07TztJOzs7OztJO0s7OzBCOzs7UTs7O1E7TTtHOztJOztLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7Ozs7O1E7UyxTOzs7Ozs7VTs7Ozs7Ozs7OzRCLE07Ozs7UTs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7OztJO0s7SztLLE8sMkM7STs7TSwyQzs7OztLO087VTs7SyxNOztJO0c7RztJOzs7Ozs7Ozs7OztJLEs7SyxNO0k7STtJLEk7OztLLG9EOzs7STtLLGtCO0ssYTs7Ozs7O0s7O0k7STtHOztJO0ksSTs7O0s7TTtNO007TTs7Ozs7Ozs7SSxPO0c7O0ksMkI7STtJOztLLEksUSwwQixVOzs7Ozs7Ozs7Vzs7O1k7OztXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7O2lCO21COzs7OztrQixXO2tCO2tCLG9CO2tCOzs7O2dCO2dCLEs7Z0I7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7SSwyQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7TztTOzs7Ozs7Ozs7USxXO1E7USxvQjtROzs7TyxJLHFCOztROztROztNOztLLE07Ozs7Z0M7OztHOztJO0k7STtJO0s7SztLLE87SyxPO0ssSztLLE87SyxPO0ssUTtJO0k7STtJO0ksK0I7Ozs7Ozs7TSxZOzs7Ozs7TSxjOzs7Ozs7Ozs7OztJO0ssSSxzQzs7Ozs7TSwwQjs7STtHOztJO0ssTTtLO0ssSztLLFc7Ozs7SztNOztTOzs7OztZOzs7Ozs7Ozs7WTtZLE87Ozs7Ozs7TTs7STs7TTs7TTtNOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7O2tCO2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O2dCOztrQjs7a0I7a0I7OztpQjtrQjtrQjs7b0I7O3FDOzttQjtvQjtxQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7O3VCOzBELFM7O21CLFc7bUI7OztzQjtzQixNOzt1QixXO3VCLEksOEI7Ozs7O3dCO3dCO3dCOztzQjs7OztxQjs7Ozs7O2lCOzs7O2dCOzs7Ozs7Yzs7ZTtlO2M7ZTtnQjtnQjs7OztlLFc7eUI7Ozs7ZTtlOzs7O2E7OztjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7aUIsVztpQixJOzs7OztrQjtrQjtrQjtrQjttQjttQjs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7d0M7Ozs7Ozs7Ozs7OztpRDtpQixXO2lCOzs7b0I7b0I7bUI7Ozs7Ozs7Ozs7O1U7Ozs7OztXO1c7Vzs7Ozs7Ozs7UTtRO1E7UTtRO1E7Ozs7O1EsSztTO3NCO1MsWTs7O1E7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSxPOztrQzs7O0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxVO0ssaUI7Szs7O1E7Ozs7OztRO1E7Ozs7O1UsVztVO1Usb0I7O1M7Uzs7Ozs7O1M7eUI7O087O0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksNkI7STtLOzs7Ozs7O0s7TSxPO00sSztLOzs7USxrQixPO1EsTztPOztLOzs7UTtRO1MsVztTLE07OEI7Ozs7Z0M7OztPOzs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJO0ssTzs7O2U7OztnQixROzs7NkI7c0M7O2M7O0k7STtLLE87OztlOzRCO2M7O0k7STtLLEksa0I7O007TztPOzs7WTs7O2M7Ozs0QjtxQzs7YTs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTs7O1k7OEM7UTs7Ozs7OztxQjtNLFM7O0s7TSxLO007OztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7SztLOzs7UTtRO1M7O1M7Ozs7OztTOztPOztLLEc7TSxTO00sRztPO1EsTztRLE87Tzs7O0s7Ozs7SztLO0ssTTs7OztJO0s7Ozs7UyxZLE87UyxvQjtTOztNO007Ozs7OzttQjtLO00sUTtNLFU7O3NDOztPOztnQyxPLDhCO007Ozs7Ozs7Ozs7OzJDOzs7O1U7OztvQixRO29CO29CLFc7b0I7b0Isb0I7b0I7cUI7O3dCOzt5Qzs7cUI7Ozs7cUI7cUIsTTs7bUI7Ozs7OzsyQjs7O1U7O21DLE8sOEI7Ozs7OztTOztrQyxPLDhCOzs7OztTLEcsK0I7UyxJO1M7VSxXO2E7VyxRO1c7VztXLE87O3lDOzs7OztTOzs7Ozs7Ozs7O3lCO2tDOzs7OztVLGM7OztXLFc7Ozs7Yzs7OztpQixPOzt5Qzs7Z0I7Ozs7Ozs7O1M7UztVOzthLE87Ozt1QixXO3VCLFc7c0I7WTtVLFE7VSxRO1U7VTtZOzs2Qjs7OztVO1k7OzZCOzs7Ozs7VTs7O1ksc0IsTztZOzs2Qjs7Ozs7OztVOzs7OzthO2EsTzs7O3VCLHlCO3VCLDJCO3NCO1k7UztTO1M7VSxPO1UsTztTO1MsTzs7OztVOzttQyxPLDhCOzs7Ozs7VTs7O29CLFE7b0I7b0IsVztvQjtvQixvQjtvQjtxQjs7d0I7O3VDLDJCOztxQjs7OztxQjtxQixNOzttQjs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OztNOztLOzs7O0ksVztJLEksZ0M7Ozs7O0s7SyxNOzs7Rzs7STtJO0ssZ0I7SztLLDBDO0k7STtHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0ssSSxxQjtLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzt1QyxrQzs7STtJO0c7aUMscUM7O0k7Rzs7STtLO0s7STtJO0c7Rzs7Ozs7SztNO007TSxJO0s7STtJLEk7Ozs7NkM7SyxNOzs7Ozs7O0ksWTs7OztRO1Msd0I7Ozs7UTtROzs7O2E7UyxrQzs7UyxNOzs7UTs7SSxNO0c7Rzs7OztJO0k7Ozs7UztVO1U7VSxLO1M7UTtLLEk7Ozs7TTs7TyxROztNLE07Ozs7Ozs7O0ssWTs7OztTO1UsVTtVOzs7UztTOzs7UyxjLDRCOzs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7RztJOzs7O0ksSSw2QixROztLO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7RztJOzs7Ozs7UyxZOzs7O00sSTs7OztRLE07Ozs7TSxJOzs7OztPLE07Ozs7Ozs7O0s7O007Yzs7VTs7O1UsTTs7Ozs7Ozs7OztLO0ssSTs7Ozs7TSxNOzs7O0k7ZTs7OztHOzs7O0k7OztLLEksVTs7Ozs7OztLOzs7O007Szs7OztPLE07OztNLEk7Ozs7O08sTTs7Ozs7O0ksYTs7O0c7RztJOzs7Ozs7Ozs7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7STs7O087Tzs7USxTO1MsTTs7Ozs7TyxJOzs7OztRLHNCO1EsTTs7O087TTs7SSxPOzs7YztjO2U7Ozs7OztlLHNCO2UsTTs7O2M7YTs7Rzs7STtLO0s7OztLO087OztVOzs7Ozs7O1U7VztVLEksVTs7OztrQjs7YztlO2lCO2U7Ozs7O2M7ZSxVO2U7Ozs7Ozs7OztXOztVOzs7O1csUTs7VztZLFU7WTs7Ozs7VTtTOzs7Ozs7OztJO0c7O0k7Szs7SSxPOzs7YztxQjs7d0I7YTs7Rzs7STtLO0s7O0k7SyxJLDZCLFE7bUM7OztRO1MsUTtTLE87UTtROzs7USxxQjs7Ozs7USxNOzs7Rzs7STtJOzs0QixtQiw0Qjs7STs7Tzs7O1U7VTtTOztJOzs7TztPO007Ozs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCO2lCO21COzs7c0I7b0M7c0I7dUIsUTt1QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkI7NEI7NEI7Ozs7Ozs7NEI7Ozs7Ozt1RTs7eUI7O3dCOzs7Ozs7OzJCLE87Ozs7OzsyQjs0Qjs2Qjs2Qjs7Z0M7OzttQztrQzs7NkI7Ozs7Ozs7NkI7Ozs7eUI7Ozt3Qjt5QixlOzs7bUM7MEIsVzswQjswQixXOzZCOzs7OEI7OztpQzs7Ozs7Ozs7OEI7OztpQztnQzs7Ozs7Ozs7Ozt5Qjs7Ozs7Ozt5Qjs7O29DLE87O3NCO3FCOzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0I7Ozs7cUI7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJLE87OztjOzs7O0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3QjtJLE87OztjOzs7Ozs7ZSxRO2UsVTs7Ozs7a0M7Ozs7O3FCLE07Ozs7Ozs7ZSxNOztjO2U7ZTs7Ozs7OztlOytCOzthOztHOztJO0k7Rzs7STs7SSxJLG1DOztJO0ksTzs7aUMsdUM7OztjO2U7OztpQztlOzs7Ozs7OztlO2UsTTs7O2E7Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTO3FDO1MsZTtvQjtTLFc7Ozs7SyxPOzs2Qjs7O0c7O0k7STtJOztHOztJO0ksTzs7O2M7YyxPOzs7OzBCO3dCO2E7O0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0ksTzs7O2U7OztnQixTO2dCLFM7b0M7d0M7ZTtjOzs7Ozs7YztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7Ozs7Ozs7O1csSzs7Ozs7O007TztPO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2dCO2lCLDhCO2lCLFU7Ozs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7OztpQjs7OztrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7Ozs7Ozs7Ozs7OzsyQjs0Qjs0Qjs2QixPOzsrQjtrQzs7O29DOzs7O21DOzs7cUM7OztrQzs7O3FDO29DOzs0Qjs7Ozs7Ozs0Qjs7Ozs7Ozs7O3lDOzs7O3VCOzs7O3FCOztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQjs7OztxQjs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7Ozs7SSxXO08sMEM7SSxPOzs7Yzs7OztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7O00sTzs7O2dCOzs7Ozs7aUIsTztpQixPOzs7O2lCOztvQjs7OztpQjs7O2dCO2lCO2lCOzs7Ozs7O2lCO2lDOztlOzs7Szs7OztJO0ksVztJLE87O2lDLE8sNEI7OztjO2E7Rzs7STtHOztJO0k7Szs7O2tCO0s7Ozs7OztLLE07OztHOztJLEk7Ozs4Qjs7O0k7Rzs7STtJO0s7TSxXO00sYzs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7RztJOzs7Ozs7Ozs7O0k7SztPOzs7VTtVLEksVTs7O2tDOzs7O1U7Z0M7O3dCOzJCO1U7Uzs7O0s7Tzs7O1U7VSxHLDBDOztVO1M7OztLO087OztVO1UsSSxVOzs7a0M7Ozs7NkI7MkI7VTtTOzs7SSxPOzs7YztjLGlCO2U7YzthOzs7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7Ozs7Ozs7Ozs7Ozs7YSxHO2M7YyxJOzs7Ozs7ZSxNOzs7Ozs7Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STs7SyxRO0ssUTtLO0ksVzs7O0k7O0ssTzs7STs7SyxhO0ssVTtLLFU7SztLO0s7SztJO0k7OztLLEk7Ozs7OztNOzs7Ozs7O0k7Ozs7STtLLFE7SyxRO0s7SSxXO0k7SztNO00sYTtNO007TTtNO0s7SztLO00sSztNLEs7O00sTTtLOzs7USxJLG9EOzs7Ozs7UyxNOzs7Ozs7Ozs7OztPOzs7SztNOzs7UztTLEksVTs7OztXLE07Ozs7UyxJOzs7Ozs7VSxNOzs7Ozs7Ozs7OztTO1E7O007OztTO1MsSSxVOzs7O1csTTs7OztTLEk7Ozs7OztVLE07Ozs7Ozs7Ozs7O1M7UTs7Ozs7Ozs7SztNO1E7NkMsMEI7TSxPO007O3FCO0s7Ozs7OztLOzs7RztJOzs7Ozs7Ozs0Qix5Qzs7STs7aUM7O0s7O0k7Rzs7SSxPOzs7YztjO2E7OztHOztJO0k7ZTs7aUU7Ozs7Rzs7SSxPO0c7O0ksSSxVLDZCOztLLE07SSxtQixVOzs7OztNLEcsNkI7OztJLE07Rzs7STtJLE87Rzs7SSxZOztjLHNCOztLOzs7O2tCO087UTtTLE87UyxNOztRO1E7Ozs7K0I7Ozs7Tzs7OztRLEs7TywyQjtPO1E7UTs7O1E7OztRO087O08sc0IsTztPLDZCO087UTtRO1U7OzthOzs7UTtPOzs7O29CO3NEOzs7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YTtlOztnQzs7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztRO1M7Vzs7O2M7ZSxROzs7Yzs7Ozs7OzthOzs7UztTOzs7OztnQjtrRDs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCO1M7Vzs7O2MsOEIsUTs7Ozs7cUM7O2U7O2dCOzs7Ozs7OzJCOzs7MEI7O2U7O2MsTTthOztTOzhCO1M7UztXOzZDO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RztJLFc7Ozs7OztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCO2lCLE87OzsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7aUIsc0I7aUIsRztrQjtrQixHO21COzs7O2lCO2tCOzs7a0I7OztrQjs7OztpQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUI7c0M7Ozs7aUI7OztrQjs7bUI7Ozs7Ozt1QjtzQzs7O2lCLE87OzsyQjsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7OzsyQjs7OzhCOzs7K0IsUTsrQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7OzsrQjs7OEIsTTs2Qjs7Ozs7Ozs7Ozs7O3dCOzs7MkI7Ozs0QixROzRCLFU7eUQ7Ozs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7NkI7OzJCLE07MEI7Ozs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7O21CO3FCOzs7d0Isa0M7d0I7O2dDOzs7dUI7Ozs7bUI7b0IsYTs7O3FCO3NCOzs7eUI7eUI7d0I7Ozs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7Uzs7Ozs7Ozs7TztROzs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPO1c7YTs7O2dCOzs7aUIsUTs7O2dCOzs7Ozs7aUI7O2dCOztpQixPO2lCLE87aUIsTztnQjs7O3lCOzs7O2U7Ozs7VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTOzs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXO0ssTzs7O2U7Ozs7O2UsSSw0Qzs7OztpQjt1Qzs7O2M7b0I7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHOzs7OztLLEcseUM7SztNLFk7TSxROzs7O1M7WTtVLHNCOzs7UztVO1k7O21DOzs7OztVO1M7VTs7Ozs7O1U7Ozs7cUM7Ozs7O2tCOzs7Ozs7Ozs7Uzs7Ozs7Uzs7VTtZOzttQzs7Ozs7UyxHLDRCO1M7VSxPO1U7Ozs7O0ssTzs7bUM7Ozs7OztJO0k7Rzs7STtJLE87Rzs7STtHO0c7OztLOztJLE87Rzs7STs7SztPOzs7VTs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7O1M7OztVOzs7Ozs7OztROzs7Vzs7Ozs7SSxPO0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7OztVO1k7OztlOzs7Z0IsUTs7Ozs7Ozs7bUI7Ozs7b0I7c0I7Ozt5QixPOzs7b0M7bUM7Ozs7d0I7OztvQixPO3NCO29CO3FCLE87NEI7Ozs7Ozs7Ozs7ZTtjOztVO1k7OztlOzRCO2M7O1U7WTs7O2U7ZSxPO2M7O1U7Z0I7Uzs7OztJLE87OzRCOztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7SSx1QyxRO2tFO0ksSSxXLDJDOzs7O0ssSSxPLDJCLE87SztLO00sVzs7Ozs7OztXO1ksYzs7O2EsTTs7O1k7O2E7OztnQjs7O21COzs7Ozs7Ozs7O1k7YTtjLE87YyxJOzs7OztjOzs7Ozs7YyxNOzs7Ozs7O1csa0M7OztZLEc7Ozs7Ozs7OztrQjs7O3FCOzs7Ozs7Ozs7O1csbUIsTztXO1ksVTtZO1ksSTs7Ozs7WTtZO2EsVzthOztrQjs7O2E7ZTs7Z0M7Ozs7O2EsVTs7Ozs7YyxHOzhCOzs7Ozs7Ozs7Ozs7VyxHO1k7YTthLFU7OzthLE07Ozs7Ozs7Z0I7Ozt5Qjs7Ozs7Ozs7VTs7OzJCOzs7Ozs7TTtNLE07O0s7Szs7OztJO0s7SztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7O0k7Szs7TTtROzt5Qjs7OztNOztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOztPO1M7OzBCOzs7OztLOztNO1E7O3lCOzs7TTtROzt5Qjs7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7Ozs7VTtTOztpQjs7O29COzs7Ozs7OztROztTO1c7OztjO2M7YTs7UztXOzs7YztjO2E7O1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7O0s7O1E7O3lCOzs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7Szs7Szs7Szs7UTs7eUI7Ozs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7SyxvQixPO0s7OztRLG1CLFE7Ozs7Ozs7VyxPOzttQzs7Ozs7UTtPOztLLE87OzZCOzs7SSxPOzs0Qjs7Rzs7STtJLE87OzRCOztHOztJO0s7SztLLFE7SyxVOzs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7OztRLEc7UyxXO1M7O1c7OztjLGtCLFE7Ozs7Ozs7ZTs7YzthOztVOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGM7cUIsWTtHLEksK0I7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7SSxXO0ksTztHOztJLHVCO0c7RztJOzs7UTtRLHNCOztRO1Esc0I7O1E7USxzQjs7UTtRLHNCOztRO1Esc0I7O0ksdUIsTSwwQztHOztJO0k7Ozs7Ozs7cUM7O3FDOztxQzs7cUM7O3FDOzs7Ozs7OztLO0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtnQjtJOztLLG1DOztLOztHOztJLHFDLE87Ozs7Ozs7Ozs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7STtLLE87SztPO1MsMkM7SSxPLFc7Rzs7SSwwQiw0QztJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtJO0s7Tyx3Qyx1QjtLLG9CO0ssVTtJOzs7Tzs7UTtRO1E7TztPO007O0ksTzs7O2MsWTs7O2UsTzs7Ozs7Ozs7OztjO2U7aUI7bUQ7ZSxPO2MsTzs7Ozs7Ozs7Ozs7O0c7O0ksVztHO0c7c0IseUI7RztJO0k7OztJO0ssa0IsTztLLE87STtJO2U7SSxPO0c7O0k7Ozs7TTs7TyxPO2M7OztLO00sVztNLE87O0s7TTs7Uzs7WSxPOztZLE87O1ksTzs7WSxPOztZLE87b0I7O1E7TTtNLE87TSxROzs7TSxHOzs7TztRO3lDOztVOzZDOzs7Ozs7d0M7SyxjOztpQjs7TTtPO2tCO08sVztjO0s7TSxZO007TTs7ZTs7OztNO2E7OztRLEk7Ozs7Ozs7O1M7Ozs7O0ssTzs7SSxXO0ksTztHOztJLEksMEIsTztJLE87Rzs7STtJLE87RztHO0ksZTs7Ozs7Ozs7STtJOzRCO0ssVSxnQztNO0s7OztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7O087O0c7bUQ7Rzs7OztLO0k7STtJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2M7Ozs7Ozs7cUI7Ozs7OztPLFMsVzs7Tzs7Tzs7O1E7UTtPOzs7TyxZOztPOzs7O0k7Ozs7Rzs7STtJLE87Rzs7SSxPO0c7O0k7O0s7Tzs7d0I7O0ssTztJLE87Rzs7Ozs7Ozs7Ozs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOztJLE87Ozs7Ozs7YyxPOzs7d0IsTzt1Qjs7YTs7RztJOzs7O0k7STtxQzs7O007Ozs7O0c7O0ksWSxPOztJLE87OztJLDhCO3lDOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxJLEs7Ozs7TSxHO007Ozs7O0ssTzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7Rzs7O0s7SyxPOztJO0ksc0I7Rzs7STtLLE87Ozs7TyxPOztPOzs7OztRLE87UTtPLE87Ozs7Ozs7Ozs7OztPLE87O087Ozs7UTtPLE87Ozs7Ozs7O3FDOzs7O08sTzs7Ozs7OztpQjs0QixPOztpQixPOztnQjs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXO1csTztVO08sTzs7Ozs7cUM7Ozs7Ozs7Ozs7OztpQixhLE87O2lCLE87O2dCOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7SSxPOzs7YyxZLE87O2MsTzthOztjLE87YTs7YyxPOzs7Ozs7Ozs7d0IsUSxPOzt3QixPOzt1QjthOztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7Ozs7Ozs7SSxRLE07O0ksTztHOzs7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1k7Yzs7K0I7O1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7Ozs7STtJOzs7UTs7UyxTO1MsSTs7O1MseUI7OztROzs7O1E7OztTOzs7UTs7Ozs7O0ssSTtLOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7UTs7O1c7O1k7Ozs7O1c7WTthLEk7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O1U7Ozs7O0k7Rzs7STtJLE87O2lDLGdDOzs7Rzs7STtjLG1DOztHOztJO0k7Ozs2QixXOzs7O1Esd0M7UTs7Ozs7O0s7O0c7O0ksK0I7dUI7STtLOzs7O0ssUTtLOzsyQzs7YyxNOztNOzs7Uzs7VSxvQjtVLEcsa0Q7O1M7O1UsSTtVLE87VSxPOzs7VTs7OztZOzs7OzJCLDRDO2E7YTtlOzs7a0I7a0IsTztpQjs7WTs7O2E7YztjO2dCOzs4QixPLCtCOzthO2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7Uzs7UTs7O0k7Ozs7Ozs7Ozs7Ozs7O007TyxXOztRLDJDOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksTzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7SSxPOzs7YyxrQixROztlOzs7Z0IsTztlOztpQzs7Ozs7O2M7YTs7Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87O3FCO1EsTzs7O2tCOzs7Z0M7Z0M7aUI7Ozs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7Rzs7SSxlO0k7O0ssTztnQjswQjt3Qjs7RztHO0k7STtJO0k7STtJO0k7STs7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7O1E7OztXO1c7VTs7Szs7OztJO0c7O0k7SyxXO0s7SyxpQzs7Rzs7SSxjO0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw4Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZOzthOztnQixPOzs7MEI7MEI7eUI7O2U7WTs7O2E7OztpQixXO2lCLE87Z0I7YztnQjt3Qyw4Qjs7Ozs7OztrQjs7TTtNOzs7Rzs7SSxZOztLOzs7UTtRLFc7Tzs7O0c7O0ksNEI7OztJLE87Ozs7ZTs7O2M7OztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJLFc7SSx3QjtJOzs7Rzs7STtJLHNCO0c7O0ksWTs7OzswQjs7OztROztJO0c7O0k7STtLO0ssRztNO0s7TSxNO007TTs7Ozs7Uzs7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STs7O0c7MkIsVSwrQjs7STtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtNO1c7SztNLDZCO007O3lCO0s7OztLLEksTSw4Qjs7OztTO1U7VSwwQjtTOzs7OztVLDBCOzs7UyxHO1UsYzs7Ozs7OzthLEc7Ozs7Ozs7Ozs7OztTOzs2Qjs7Uzs7O1U7OztVOztVLDRCO1M7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7VTs7ZTs7O2lCOzhCO2dCOzs7VTtZOzs7ZSxrQixROytEO2U7Yzs7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDOzs7Ozs7aUI7bUQ7Vzs7O1M7VTtZOzs7ZTs7O2dCLFE7NkM7Ozs7Ozs7aUI7Ozs7Ozs7aUI7OztlOzs7VTs7OztlO2lEO1M7O1M7Ozt3Qjs7UyxnQjtTO1UsUTtVO1M7UztVO1k7OzZCOztVO1M7O1M7O1M7OztVO1k7OztlOzs7Z0I7Z0IsTztlLFc7Yzs7Uzs7SztJO0ksRzs7TTs7dUI7O0ksWTs7Ozs7O1Esc0I7UTs7O0k7SywrQjtLO0s7Ozt5QjtLOztJO0c7O0ksTzs7NEI7O0c7O0k7SztNLFU7OztNO1E7OztXO3dCO1U7OztNO1E7OztXO1csTztVOztNOzs7Szs7O2dCLE87STs7O0s7Szs7O0ksWTtJLE07Rzs7STtLOzs7OztNO007OztLOztJLGM7Ozs7Ozs7OzsrQjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7RzswQywwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0ksTzs7O2MsSSxPLDRCO3FDO2M7YzthOzs7Rzs7STs7Tzs7O1UsVztVLE87d0I7O1M7OztJLE87Rzs7STs7SyxPOzs7SSxPOzBDLDBCO0c7O0ksSTtJLFc7Rzs7SSxxQzs7SSxlO0c7O0k7SyxPOztLO087O3dCOztLO0k7Rzs7STs7K0Isc0M7O0c7O0ksSSxpQzs7SyxtQixPO0s7OztRLFcsVztRO1M7VSxPO2lCOzs7USxjO087OztJO0k7STs7cUI7Ozs7Syx1QixVOzs7O08sc0IsVTs7Ozs7OztVLEc7VztZLFc7bUI7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7Ozs7UTt1QywwQjs7OztROzs7Vzs7VTs7O0k7Rzs7STtLOzs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs0QywyQjs7O0k7SztPOzs7VSxhO1Usc0I7VSxXO1U7VyxXO1c7Ozs7O2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7OztVO1csVTs7O1c7O1U7Uzs7O0s7Tzs7O1U7OztXOztVO1M7OztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7OztpQjs7O1E7Ozs7O1M7OztjOzs7OztJOzs7OztZOzs7Rzs7STs7Rzs7STtJLE87Rzs7STtJO0k7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0c7O0k7SSxPO0c7cUQsd0I7Rzs7SSxJLHVCO0ksTztHOztJO0ksTztHOztJOztLO087O3dCOztLO0k7Rzs7STtJO0k7STs7Rzs7STtLLFU7Szs7Szs7c0I7O0ssTzs7O2U7bUY7ZTtjOztJO0k7O0ssTztLOzs7SztJOzs7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0k7STtLLE87Szs7O0ksTzs7Ozs7O0c7O0k7SyxPO0s7SztLOzs7OytCOzs7OztJO0c7O0k7SSxPO0c7O0ksWTs7O0s7O0k7Rzs7O0k7Ozs7Ozs7UTs7O1MsTTtTO1M7UTs7VTthO1MsVztTLEs7VSxPOzs7OztRLHVCO1EsRztTOzs7UTs7Z0MsbUIsd0I7Ozs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztZLE07OztTO1M7Ozs7O1E7O1M7Uzs7UztTO1c7OztjO2M7YTs7O1M7Vzs7O2M7YzthOzs7UyxhO1M7Vzs7O2M7Yzs7Ozs7OzthOzs7UztXOzs7YztjO2E7OztTLGM7UztXOzs7Yzs7Ozs7ZTs7O2U7YyxhOztjO2E7OztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssYztLOzs7Szs7STtHO0c7O007OztTO1U7VTtZO2U7O1M7UTs7STtJO0k7STtJLGU7STtJOztxQjs7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STs7cUI7O0k7STtLLE87SztPOzs7VTs7Uzs7O0s7Tzs7O1U7O1M7OztLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztpQixjO2tCLFc7a0IsTzs7aUI7Z0I7Z0IsTzs7OEI7O0c7O0ksVztJLE87Rzs7Ozs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7UTs7UTs7Z0M7TzttQzs7OztJOzJCLFc7O2M7YyxPOzs7d0I7d0IsTztpRTt1Qjs7YTs7Rzs7STtLLE87SyxhOztLOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7WTs7O2U7OytDOztlO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO0s7SztNLFE7TTs7TTs7Tzs7O007O087Uzs7O1k7OzthOzs7WTtXOztPOzs7O1ksTztXOzthOztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7O0ssTzs7OztlLG9COzs7O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7STs7O0ssTztLLE87SSxPOzs7STs7Tzs7d0I7SSxPO0c7OztJLEcsK0I7STtJOzs7STs7SyxPOztJOzs7SyxPO0ssTztJLE87OztJLFk7O2dCOztJLE87Ozs7Ozs7OztrQzs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7O0c7STtNOzs7O1UsTztTOzs7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OztJLFc7SSxPO0c7O0ksTztHO0c7SSxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87OztJO0k7STs7SyxPOztLLE87Ozs7Ozs7Ozs7Rzs7STs7Tzs7OztROztRLFE7USxVOzs7UTtTOztrQixPOztpQjs7OztRO1M7O2tCLE87O2lCOztPOzs7O1EsVzs7OztVLFc7O1U7OztXO2E7K0M7VTtrQjs7Ozs7Ozs7OytDOzs7OztpQjtnQzs7O1c7VztZLE87O2M7Ozs7Vzs7WTtjOzs7aUI7aUI7aUIsTzswQjs7Z0I7O2M7O1U7a0I7OztVOzs7O1csTztVO2tCOzs7Ozs7Ozs7O1Usa0IsTztVO2tCOzs7Ozs7Ozs7OztRLFc7OztRO2dCOzs7Ozs7Ozs7TyxXOzs7Ozs7UTtRO1MsTztlOzs7Ozs7Ozs7Ozs7O2lDOzs7Z0M7OztVLG1CLE87VSxXOzs7VTtVLFc7VSxXOztVLG1CLE87VSxXOzs7VTtVLFc7VTtrQjs7Ozs7Ozs7OztPOzs7TztPO08sYzs7Ozs7Vzs7b0I7b0I7b0I7b0I7cUIsTztxQixPO29CLE87O21COztPLDBCOzs7O0ksTzs7OytCLHdDO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSxXOzs7O00sVztNLE87O2lCO0ssYzs7TSxXO00sTzs7Szs7STtHOzs7OztnRSxTO0k7Ozs7YztjO2U7aUI7OztvQjtvQjttQjs7O2U7aUI7OztvQjs7O3FCLE87b0IsVzttQjs7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7Ozs7Ozs7b0I7Ozt1Qjs7O3dCLFE7Ozs7O3dDLG1COzt1Qjs7Ozs7ZTtnQixPO2dCLE87O2dCOztpQjttQjs7b0M7OzttQjs7Ozs7Ozs7OztnRDtlO2dCLE87Z0Isc0I7Ozs7Ozs7O2U7ZTs7Ozs7O3NDOzs7a0I7O2dCO2dCOztlOztrQjs7O3FCO3FCLEksVzs7OzZDOzs7cUIsWTttRDtxQjs7c0IsTztzQixTO3NCO3FCLE87b0I7OztlOzs7a0IsaUI7OzttQjs7O29CLE87b0IsTztvQixPO29CO3NCOzs7OzBCLE87eUI7O21CLE87Ozs7Ozs7Ozs7O2tCOzttQixPO2tCLE87Ozs7Ozs7O2lCOztlOzs7Ozs7OztlLE07O2E7Ozs7STtLOzs7Ozs7O0s7O0k7Szs7O2tCO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7SSxZOztJOzs7STs7O0ksbUI7eUI7STtZOzs2Qjs7Rzs7SSxxQjtJO1k7OzZCOztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2lCOzs7Ozs7Ozs7OztlLE87YztlOzttQjs7O2MsTzs7Ozs7d0I7Ozs7Ozs7Ozs7c0M7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7OztpQixPOzs7Ozs7Ozs7Z0I7OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7OztJLFk7OztLLE87OztlLE87Ozs7MkM7O2M7O0k7SSxPOzs7O2dDOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7SSxJLDRCLDhCOzs7OzRCOzs7Rzs7SSxpQjtJLGdCO0ksTztHOztJLE87Rzs7STs7O087O1EsTztRO08sVzs7Ozs7Ozs7VSxZO1U7Ozs7Ozs7O1U7VyxPO1csVTtVOzs7Ozs7OztJO0c7Ozs7Z0I7Ozs7O1E7Ozs7O1MscUIsTztTLEs7Ozs7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZO1U7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UyxRO1E7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7NEI7Ozs7O1EsWTtROzs7OztROzs7UTs7Ozs7STtxQjtrQjs7STtHOzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTOztZOzs2Qjs7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztROzs7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7Uzs7OzthOzs4Qjs7Ozs7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzJCOzs7aUM7STtLLE07SyxVO0ssTTtLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtZOzs7ZTs7Ozs7OztrQjs7O3dDOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7eUM7Ozs7OzswQjs7OztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRLFk7Ozs7OztROzs7O0c7cUMsdUM7Ozs7Ozs7UTtTLFk7cUIsTTtTLG9CO1M7Ozs7O1UsTTs7Ozs7USxPO2lCOzs7b0I7Ozs7Ozs7Ozs7Ozs7OytDOzs7O3FCLE07O29COzs7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7UTs7O1M7UztTLE07UztTLE07USxPOzs7Rzs7STtJO0ssSSxjLHVDOzs7Ozs7Uyw2QjtTLEcsK0I7Uzs7OztTLG1DO1MsRyxpQztTOzs7aUI7OztHOztJOzs7STtLO00sbUM7Ozs7Ozs7O0ksTztHOztJO0s7SyxROzs7Ozs7OztPO1EsUTtRO1U7Ozs7Ozs7O0c7O0ksUzs7Ozs7Ozs7Ozs7Ozs7OztTLEc7Ozs7Ozs7Ozs7OztPOzs7WTtPOzs7OztPOzs7aUI7O3dCOztHOzs7SyxJLDZCLGE7Ozs0Qjs7O0k7O0k7Rzs7STtLO007TTtNOzs7UyxvQjtvQjs7UTs7O1M7Ozs7OzthLE87Ozt1QixtQjt1Qjs7d0I7d0IsbUI7a0M7O3NCOzs7OzJCOzs7O1M7UTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO007UTs7O1c7VyxPO1U7OztNLDBCLE8sbUM7TSw4QixXOztLOzs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7WTs7O2U7Z0IsTTtnQixNO2UsTztjOzs7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7O0ksa0IsTTtJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXOzs7Ozs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7SSxZOztLO00sTztNLFU7O3dDO0s7O0k7Rzt1Qyw0Qjs7STtHOztJLDhCOzZCLGlCLGtCOztHOzt1QixPLHlDO0k7Z0M7OztLLE87Ozs7Ozs0QixPLHlDOzRCLE8seUM7OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNOztNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxPOzs7Ozs7MkIsTyx5QzsyQixPLHlDO0c7O0k7Ozs7USxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7O2lCOztrQjs7aUI7O2tCO2tCO2tCLE87aUIsTzs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O08sTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7Rzs7cUIsTyx5QztJLFU7STs7Ozs7SyxPO0ssYztJLE87Ozs7Ozs7Yzs7OztHOzt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztROztXOztjOztjOztjO3NCOztVO1E7UTtRLE87TyxPO2dCOzs7Ozs7O087Tzs7NkI7O087OzJCLE8seUM7UTs7VyxPO1U7TztROztXOzs7WTs7VyxPOztXLHFCLE87VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTztpQjs7O087OztPOztROzs7TyxvQjtPLE87Z0I7Ozs7OztPOzs7TyxzQjtPLE87OztPOztRLFU7TztpQjtpQjs7Rzs7STs7Szs7STtLLE07SyxNO0ksSTs7Ozs7Szs7STtHOztJOzs7OztJOzs7Tzs7Ozs7USxPO08sRyx3QztPLFc7Tzs7K0Q7TztRO1E7Ozs7Ozs7OzBCO0s7O0c7RztJOzs7Ozs7Ozs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7O0ksTztpRCxvQjtHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7VztZO2M7OztpQjtpQjtnQjs7WSxVOzs7VztZO2EsTzthLE87WTs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7OztTLGtCO1UsZTtVLEs7VyxNO1U7VyxPO1csTztXLFE7Ozs7VyxjO1csYzs7O1c7VyxjOzs7Ozs7Ozs7Ozs7O1c7O2M7OztpQixrQixRO2lFO2lCO2dCOztXOzs7O1c7O1k7O2E7Ozs7OztjLFU7YyxVOzs7Ozs7Ozs7OztnQixXO21CO2lCO2tCLFE7a0IsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7aUI7OztrQjtrQjs7Ozs7Ozs7Ozs7O2M7O2dCOzs7aUI7aUI7Ozs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7OztNLGM7Ozs7Ozs7O3NDOzs7OztzQzs7Ozs7Ozs7OztJOztNOztNO08sTztPLE87TTs7Ozs7OztLOztJO0c7OztJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7O1U7O2dDOzs7Vzs7WSxRO1ksVTs7OztlLHFCLE87ZSxHOzs7ZSxzQixPO2UsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7O2UsVztlLE87Yzs7Vzt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztVO1c7WTs7ZSxXO2UsTztjOztXO3dCOztVOzs7VyxPO1csTzs7O2dCOzs7a0I7bUIsTzttQixPO2tCO21CLFc7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7a0I7aUI7Ozs7VTs7O1c7WSxrQixtQztZOztlOzs7Ozs7Z0IsUTtnQixRO2U7Ozs7Ozs7Z0I7O2U7Ozs7MkI7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOzs7SSxnQjtJO0ssTztLO0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87SSxPOzs7ZTtlO2dCOztlO2U7Z0IsUTs7O2dCLFU7Ozs7O2dCLEksc0I7O2dCLG1COzs7OzswQjtlO2dCLFU7Ozs7Z0IsVTs7OztnQjtlO2dCLEksb0I7OztlO2M7Ozs7Ozs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksTzs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixPLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksTzs2QztHOztJOzs7SyxNO0k7SSxPOzs7STtJO0k7STs7c0IsbUIsTyw2Qjs7O0c7O0k7STtJO0k7SSxnQixNO0ksTztHOztJOzs7OztJO0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJO0k7Rzs7O0k7STtJLE87OztJO0ksd0I7Rzs7STtJLHdCO0c7OztJO0k7Ozs7TztPLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTTtPLE87OzRCLE87OzZCLE87OztPLE87OztpQjtpQixPO2dCOzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TywwQjt1QyxPOzs7O0k7STtJO0k7O0c7Ozs7Ozs7STtJO0k7STtJLE87OztJO0ssa0IsTTtLLE87OztJLE87OzJCOzs7O0k7OztLLE87OztlO2U7ZTtlO2U7OytCOztlO2UsZ0IsTTtlLE87Ozs7O0ksTzs7MkI7Ozs7STtJO0k7STtJOzs7TztPO087TyxPO007O0k7SSxnQixNO0k7SSxPOzs7YztjLE87YTs7Rzs7SSxxQixNO0ksTzs7O0k7STtJO0k7O3NCLGtCLE8sNEI7O0ksZ0IsTTtJLE87Rzs7Ozs7O0k7STtJLE87OztJOzs7OztJO0k7STtJOzs7SztzQztLO0ssVTtLLE87OztJO0c7Ozs7Ozs7O0k7STtJO0k7Ozs7TztPO2lDOzs7eUIsTzs7MEI7OztVO1UsTzs7OztxQzs7OzRCOzs7TztPOztPOztPLHFCLE07TyxPOzs7TztPLFU7TztPLE87OztpQjtpQjs7aUM7O2lCLE87Z0I7OztPLHNCLE07TyxPOzs7TyxPOzs7aUI7aUI7aUIsTztnQjs7O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7OztJOzsyQixPOztPLHNDLE07TztPLE87O08sb0IsTTtPLE87ZTs7Ozs7Ozs7OztJO0k7STs7O087TztPLE87TTs7STtxQzs7OzhCOztPOzs7TztPLE87OztPOzs7VTs7OztXLE87OztVO1UsTzs7Ozs7USxPOztPOzs7OztRLE07TztPO087eUM7TyxPOzs7TztPLE87OztpQixrQixNO2lCLE87Z0I7Ozs7TztPLFU7TyxPOzs7TztPLFU7TyxPOztPLDBCLE07TyxPOzs7TztPLFU7TyxPOztPLHdCLE07TyxPOzs7Tzs7O1U7NkI7O1U7VSxPO1M7O08sVTtPLE87OztPO08sTzs7O087TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztnQzs7NEI7OztPO08sTzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O2dDOzs7TztPLE87Ozs7O0k7OztPO087TyxPO007O0k7Ozs7STtJO0ksTzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08sMEI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJO0ksd0I7Rzs7SSxZOztJO0ksTzs7Ozs7Ozs7STtJO0k7Ozs4Qjs7NkIsTzs7O087TyxPOzs7TztPLE87OztpQjtpQjtpQixPO2dCOzs7Z0MsTzt3Qzs7OztJOzs0QixPOzsyQjs7MkIsTzs7OEIsTzs7NkI7cUMsTzs7Ozs7Ozs7O0k7STs7O0ksTzs7Ozs7Ozs7STtJO0k7SSxPOzs7SSw4Qjs7OztPOzs7VTtVLE87Uzs7TyxPOzs7aUI7aUIsTztnQjs7OztPO08sTzs7O087TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OzhCOzs2QixPOzs7TztPLE87OztPO087TyxPOztrQyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7Ozs7O0k7STtJO0k7SSxPOzs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87OytCLE87OztPO087OztVO1UsTztTOztPLE87OztPO08sTzs7O2lCLGtCLE07aUIsTztnQjs7Ozs7Ozs7TztPOzs7VTtVLE87Uzs7TyxPOzs7TztPLFU7TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO3VDLE87Ozs7Ozs7OztJO0k7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7O087TyxVO08sTzs7TywyQixNO08sTzs7O087TyxVO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzs7Z0MsTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7SztLLFU7SyxPOzs7SSxPOzs7O0k7STs7O0s7SyxPOzs7SSxPOzs7STs7SyxPOzs7SSxPOzs7O0k7STs7OzRCLE87OztPO087OztPO087OztPO08sTzs7NkIsTztzQyxPOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7Ozs7O0k7STtJO0k7SSxPOzs0QixTO3lDLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7a0IsUzs7SSxnQyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7Ozs7SSxnQjs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsTyw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SyxPO0k7OztJLE87NkM7Rzs7STs7OztLLE87SyxPO0ksVzs7O0k7SyxPO0ssTzs7O0ssTzs7OztLOztLLE87SztPOzt3Qjs7STs7Ozs7Ozs7Ozs7O0c7O0k7SyxVO0s7SztLLE87SyxXO0ssaUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SztLO0ssZ0I7STtHOztJO0ssVztLLGtCOztJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0ssWTtJOztPOzs7USxPO3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7Ozs7O1EsTzs7O1c7OzRCOzs7O087O1EsTztRLHNCOzs7Vzs7NEI7Ozs7Ozs2Qzs7Ozs7MEI7O0k7OztJO0ssVTtLO0ssVztLLGlCO0k7Rzs7STtLLFM7SztLLFU7SyxnQjtJO0c7O0k7SyxrQixPO0ssVzs7O0k7WTs7NkI7Ozs7STs7O0s7YTs7O2dCO2lCLFM7aUI7aUI7bUI7O29DOztpQjtpQjtpQixPO2lCLFM7aUIsZ0I7Z0I7Ozs7Ozs7Ozs7Ozs7STtZOzs2Qjs7OztJO0ssVTtLO0s7SyxPO0ssTztLLE87SztPOzt3Qjs7SyxXO0s7SyxPO0ssZTtLO0ssTztLO087O3dCOztLLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7STtLLFk7SztLO0ssTztLO087O3dCOztLO0ssTztLLHFCO0ssbUI7STs7Ozs7Ozs7Rzs7STtLLFk7SyxvQjtLLG1CO0k7Rzs7STtLLFU7SztLOztLOzs7O00sTztNLE87TTs7O1M7MkM7Ozs7Ozs7O0kscUI7STtHOztJO0ssVTtLLFU7SztLLE87STtLLDBCOzs7dUIsVzs7cUM7O1E7Ozs7UyxPO1E7OztJO0s7Tzs7d0I7O0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7VTt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7O1U7WTs7O2U7OztnQixPO2U7dUI7O3dDOzs7Yzs7VSxPO1UsTzs7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjs7O2E7OzhCOzs7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0kscUI7STtHOztJOzt1QixXOztPOzs7USxPO1EsTztPLFc7O08sZ0IsTztPLFc7ZTs7Ozt3QixxQjtJO0ssVTtLO0ssTztLO087O3dCOztLLFU7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7UztXOzs7Ozs7OzhCOztlOzs7Z0IsUTtnQixTOztjLGE7Yzs7Ozs0Qzs7Uzs7Ozs7OztVLFE7VSxPO1UsVTtVO1k7OzZCOztVLGU7Ozs7OztROzs7UyxPO1MsTztTO1c7OzRCOzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87UyxPOzs7O1E7OztTLE87MkI7OztROzs7O1M7Vzs7O2M7OztlOztjOzs7ZSxPO2M7YTs7UyxPOzs7OztZOzs7UTs7OztTO3lCOzs7UTs7Ozs7UyxPO1M7eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1MsTzs7OztROzs7UyxPO1Msc0I7Ozs7WTs7NkI7Ozs7UTs7Ozs7O1MsTztTLE87Ozs7UTs7O1MsTzt5Qjs7Ozs7O3lCOzs7MEM7Ozs7Ozt5Qjs7Ozs7eUI7OztROzs7Ozs7UyxPO1MsTztTLE87OztZOzs7Ozs7Ozs7Ozs7O1E7OztTLE87eUI7O0kscUI7STtHOztJO0s7SztLLE87SSxvQjtJOztPOzt3Qjs7STtHOztJO0ssVTtLO0ssTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJO0ssVTtLLFU7Szs7O3dDOztPOzs7USxVOzs7Ozs7OztpQjs7Ozt5Qzs7MEM7OzswQzs7OzBDOzs7Tzs7USxPO3VCOzs7MEM7OzswQzs7OzBDOzs7OzsyQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OzRDOztJO0c7O0ksd0I7Rzs7SSxZO0k7Ozs7SyxPO0k7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRO1U7OzJCOzt1Qjs7OzRDOzs7Ozs7OztJLHFCO0k7Rzs7STs7NEIsVzs7O087OzJCLFc7OzhCLFc7OztPOzs2QixXOzs7O0k7SyxPO0ssTztLLE87OztJO3NDOzs7Ozs7Rzs7STtLLE87SyxPO0ssTzs7O0ksVztHOztJLDhCOzs7Tzs7O1E7VTs7O2E7YSxjO1k7O1E7VTs7O2E7YSxrQjtZOztPOztPLGtDLE07TyxXOztPOztRLE07USxNO087O087Ozs7USxPO08sVzs7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxNOzs7O087Ozs7USxNO1EsTTt1Qjs7Ozs7dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0kscUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SyxTO0s7OztPOzs7O1EsTTtRLE07Ozs7MkM7OztPOzs7Ozs7USxNO1EsTTtRO1U7OzBCOzs2Qjs7O087OztRLE07USxNO1E7VTs7MEI7O3NCOzs7Tzs7Ozs7USxVOzs7USxNO1EsTTs7Ozs7Vzs7MkI7Ozs7O087Ozs7OztRLE07USxNO3NCOzs7Tzs7O1EsTTtzQjs7SSxvQjtJO0c7O0k7SyxZO0ssWTtLOzs7Tzs7OztRLE07USxNOzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJLHVCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFUsZ0M7Ozt5Qzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7MkM7O0kscUI7STtHOztJO0ssVztLLFc7Szs7Ozs7O1M7Ozs7VSxNO2lDOzs7Uzs7VSxNOzBCOzs7Uzs7OztVLE07VSxNOzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTtVLE07Ozs7Ozs7MEI7OztTOzs7O1UsTTs7Z0I7Ozs7Ozs4Qjs7OzBDOzs7Uzs7OztVLE07Ozs7OztJLHNCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFMsZ0M7O0s7Ozs7TSxNO00sTTs7O3NDO0ksb0I7STtHOztJLEksUyxnQzs7Szs7O00sTTs7O3dDO0ksb0I7STtHOztJOztLLFc7OztJLGdCOzs7SSxJLFMsZ0M7Ozs7Ozs7OzsyQjs7O087Ozs7OztROzs7O087Ozs7UTs7OztPOzs7USxNO3NCOzs7eUM7OzswQzs7SSxvQjtJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7OztJO0ssUztLLFM7SyxVO0ssZ0I7SztJO0c7d0IsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RztJO0k7Ozs7Ozs7Ozs7OztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLO007TTtROzt5QixpQzs7Ozs7O0s7Ozs7TTs7Ozs7O0s7OztROzs7Ozs7O1csRztZO1k7O1c7Ozs7Ozs7O1c7VztXOzs7VyxHO1k7WTs7Vzs7WTtZO1k7Ozs7WTtZO1k7WTtZOzs7O1k7WTtZO1k7WTs7VztXO21COztRLEc7UztTOztROzs7Ozs7O1M7OztRO1E7Ozs7O1csTztVO1E7USxRO1E7UTtROzs7O0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OzttQixPOztPLE87O0c7OzJCLDRCOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxNO0s7STs7Syx3QjtLOzhDO0k7OztLOzs7O0ssOEIsc0I7Syx3Qiw2Qjs7TTtNOzs7USwyQjs7OztPOztLOztNOztLO3FCOzttQzs7OztRLEksVTs7OztTLEksVTs7O2dDOzs7UyxPOzs7O2tCO1Esa0I7OztROzs7UztROztROzs7UztTOztTOzs7O1U7VTs7Ozs7Uzs7UTtROztROztTO1c7OzJCOztROzs0Qjs7UTs7O1M7aUMsa0M7Uzs7O1MsSSxXOzs7Z0M7OztTOztROztRLDBCLFU7c0I7O1E7a0M7Ozs7Szt3QztJOztLLGlCO0s7STs7O007TTtLO0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OzRCOzs7UTs7eUI7bUM7O0k7STs7SztPO3VDOztLO087dUM7O0s7TTtNO007Ozs7Ozs7O0k7O0s7Szs7b0M7OztTOztTOztTOztTOzs7O2lCOzs7STs7Szs7Ozs7O087O1E7Tzs7a0I7O3NCO0s7STs7SztNO007TTs7Ozs7OztNO0s7OztJO0k7O21DLFM7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOzt5QixPOzsyQixPOzt5QixPOzt5QixPOzswQixPOzsyQixPOzsyQixPO21DLE87Ozs7STs7Tzs7eUIsTzs7MkIsTzs7O08sTzs7OEI7Ozs7TyxPOzs4Qjs7Ozs7O0k7SSxJOzs7Ozs7O0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7MEIsTyxtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsVzs7MkIsVzs7eUIsVzs7O08scUI7OzBCLFc7OzJCLFc7OzJCLFc7OzJCLFc7O0c7RzswQixPLCtCOztJLFM7SSxPOztpQyxPLDJCOzs7YztjOzs7ZTtnQixNOztlLFk7ZTtnQjtnQjtpQixJOzs7Ozs7OztjO2E7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7STs7SyxVO0s7Ozs7O1E7Ozt5Qjs7O1EsaUI7O1M7VTtVOzthLDJCO2E7YyxJLGlCOzs7cUM7Ozs7OzsyRDs7YyxhOzs7Ozs7O1k7VTs7YSxZOzs7Yzs7YTtZOzs7Ozs7Yzs7OztjOztlLEs7Yzs7YTs7YzthLE87O3FDLDhCOzs7OzthOzs7YzthLE87O3FDLDhCOzs7O1M7Ozs7O2E7Ozs7YzthO2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthOzs7Yzs7O2lCOzs7O2lCOzs7O2lCOzs7b0I7OztvQixxQzs7Ozs7O29COzs7O3VCOzBCO3FCO3FCOztvQjttQjs7Ozs7aUI7OztpQjs7O2tCO2lCOzs7aUI7OztrQjtpQjs7OztpQjs7O29COzs7cUI7b0I7bUI7Ozs7O2lCOzs7OztpQjs7O2EsTztZOzs7Ozs7OzthO2E7O2M7O2EsTztZOzthO2E7OztnQjs7OztnQjs7OzttQjs7OztzQjs4Qjs7Ozs7OztnQjs7O2EsTztZOzs7O2E7OztjOzs7aUI7Ozs7aUI7OztvQjs7O3FCOzs7O3dCOzJCOzs7Ozs7OztvQjttQjs7OzthOzs7Z0I7Z0I7aUI7OztvQjs7O29COztnQjtlOzthLE87WTs7Ozs7YTs7Ozs7YTthLE87WTs7O2E7Ozs7Ozs7O2dCOzs7Ozs7aUI7Ozs7Ozs7OztnQjs7O2EsTztZOzs7YTs7Ozs7Ozs7Z0I7Ozs7OztpQjs7Ozs7YSxPO1k7O2E7OztjOzs7aUI7Ozs7aUI7Ozs7Ozs7aUI7Ozs7aUI7OzthLE87WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7Ozs7O21DOzs7Ozs7bUI7Ozs7OzttQjs7OztRLHNCO1E7UyxPO1E7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOztpQzs7ZTs7Z0IsZTtlLE87O3dDLG9CLG9COzs7ZTs7Z0IsTTtnQixVOzs7aUM7O2lDOztpQzs7aUM7O2lDOztpQzs7a0M7O21DO3lDOztXOztRO1M7VztTLE07UyxNOzs7Yzs7UyxNO1MsTTtTLE07O1MsTTs7Uzs7WTs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTztPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CLE8sOEI7Rzs7STtJLE8sd0MsZTtHOztJLE87OztjO2M7ZTs7Z0I7Ozs7YzthOztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7O1M7O1UsWTtVLG9CO1M7VTtXLE87Vzs7Ozs7Ozs7O1M7Ozs7O1U7Ozs7VTs7Ozs7Uzs7Ozs7O2E7OztZOzs7Ozs0Qjs7MkI7O1M7OztVO1UsTTtTOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7OzRCO1E7O3dCOzs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0M7OztJO0k7OztPO08sTzs7O087OztVOzs2QixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPO3VDLE87Ozs7TyxPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVOztJO0c7O0k7STs7OzZCLFc7Ozs7USxzQztROzs7Ozs7Szs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7Vzs7O2M7YyxPO2E7Ozs7Ozs7O1c7OztjO2MsTzthOzs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7Szs7UTs7O1c7Ozs7WSxPO1ksTztXLFc7VTs7Szs7UTs7eUI7O0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLO0s7O1E7O3lCOztJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7VzthOzs7Z0I7Z0IsVztlOzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2dCOzs7aUIsTztnQjtlOzs7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7OztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7dUI7O1M7Ozs7O1UsTztVLFU7Ozs7Ozs7Ozs7OEI7OztjOzs7ZSxPO2UsTzs4Qjs7Ozs7Ozs7Ozs7OztRO1M7Vzs7O2M7Ozs7ZTs7O2dCOzs7YztlLFE7ZSxPO2UsZ0I7ZTtpQjs7K0IseUI7O2U7YzthOzs7OztROzs7UztXOzs7YztjLFc7O2Msc0I7YTs7O29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzJCOzs7UTs7O1M7Vzs7O2M7aUM7O2Msb0I7YTs7O1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87MkI7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2U7OztnQixPO2U7Yzs7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJLFc7SSxPOzs7Yzs7OztlLFE7ZSxVO2M7Ozs7b0M7OztpQjs7O2tCLE87a0IsTzs7K0I7OztpQjs7a0IsTztvQzs7Ozs7OEI7O2MsTzs7Ozs7Rzs7STs7SyxXO0ssVztLO0k7Rzs7STs7Tzs7O1U7VSxjO1M7O0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE07Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixNO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7OzBDOzs7OztRLE07Tzs7USxNO21COzs4Qzs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7TyxNOzt3Qzs7O087Ozs7USxNOzZCOzs7Tzs7O1E7VTs7O2E7YSxXOzthLHNCO1k7OzttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7UztXOzt5QixPLGtDOzs0Qjs7O3dDOzs7Ozs7Z0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7Ozs7Ozs7Ozs7Ozs7O3lDOzs7OztLO3lEO0s7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7O1E7VTs7d0IsTyxrQzs7d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7UTs7O1M7O3lDOzs7O087OztRLE07dUI7OztPOztRO21COzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLE87Ozs7Ozs7MkI7OzhCLE87O2U7ZTs7Ozs7Rzs7cUIsTyx5QztJLDBCO0k7OztPLE87OztpQjs7OztpQjs7Ozs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7OztRLFc7O1Esa0M7Ozs7O1Esa0I7O1MsVzs7OztHOztJLE87K0MscUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7Uzs7Ozs7WTs7YTs7OzRCOztZOztZOzs7Ozs7OztZOzs7YTs7Ozs7O2EsVTs7Ozs7Ozs7O2E7YyxXOzs7YyxjOzs7WTs7Ozs7Ozs7Ozs7Ozs7OztxQjtlOzs7Ozs7Ozs7OztvQjtjOzs7Ozs7OztlOztnQjs7O2dCOzs7Z0I7Ozs7ZTs7Ozs7O2E7O1k7YTs7O2E7OzthOzs7O1k7Ozs7Ozs7O1UsRyxnQztVLFc7VTs7O1c7WSxPO1ksTztZLE87bUI7VTs7UyxJLFc7Ozs7Ozs7WTs7Ozs7UztzRDtTOztVOzs7Ozs7Ozs7Ozs7d0I7O1M7OztPOztRLE87USxPO1E7OzJCO087UTtRO087OztLO007TTtNO0s7Ozs7STs7TTs7Ozs7TyxTO087Ozs7OztNO087OztNOzs7c0I7STtHOztJOzs7TSxXO0ssb0IsTztLLFc7O2dCO0k7O0ssUTtLLE87SSxXO0c7OztJOztLLDRDOztJLGE7STtHOztJO0ssTztLLFU7O087OztXOzs7WTs7VztXO1U7Ozs7Ozs7Ozs7OztLOzs7O1E7Ozs7O007Tzs7O08sTTs7Ozs7Ozs7STtLO087OztVOzs7a0I7VztVO1M7Ozs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7Szs7d0I7O3dCOzt3Qjs7OztLOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztVO1k7OzhCLHFCOztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7O2E7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07Ozs7ZTs7NkIsdUI7Ozs7Ozs7Ozs7OztTO1U7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OztTOzs7O1M7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFE7VSxTOztVO1U7WTs7Ozs7Ozs7SyxNOzs7STtLOztNOzs7O0k7Ozs7STtLOzs7Ozs7Ozs7Ozs7O0ssTztLLE87OztJO1k7Ozs7Ozs7STtJOzs7SztNOztJOzs7Ozs7Tzs7O0s7Ozs7Ozs7OztLOzs7OzBDOztJO0c7O0k7STs7Ozs7Ozs7SyxzQjtLOztHO0c7STtJOztJO0s7Szs7O0ksTzthLDRDOztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STtJOzs7Ozs7O1U7Ozs7VyxRO1c7Ozs7VTs7Ozs7UTs7OztTOzs7Ozs7Ozs7VTs7O1csTTtXLE07VTs7OztLOztHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0c7STs7Ozs7OztJOztPOztPOztPOzs7UTtRO3FDLFk7Ozs7Uzs7O1UsTTtVLE07UyxHLHdDOztrQjs7TztlOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Yzs7O2lCO2tCLFE7a0IsUTtpQixPO2dCOztZLFE7Vzs7Ozs7O1M7OztVLFE7VSxRO1U7VSxNO1UsTTtTOzs7Ozs7Ozs7OztLOztJO0ssTTtLLE07STtHOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O0s7O0k7O0ssUztLLFc7SztLO0ksTztHOztJOzs7Szs7O0ksTTtHOztJOzZDOztJLE07Rzs7STs7OzZDOztJLE07Rzs7STs7dUI7OztLLE07O0ksTTs7Rzs7O0k7Ozs7O007OztLO00sTTs7O2dEOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TTs7O087Ozs7cUI7OztRLE07Tzs7O1EsbUI7Ozs7OztJLE07Rzs7SSxZLE87Ozs7O08sTzs7OztPLE87Ozs7Ozs7OztPLG9DO08sTzs7O08sc0M7TyxPOzs7OztJO0ssTztJOzs7STs7OztRLGdDO1EsTzs7O1Esb0M7USxPOzs7SSxPOzs7SSxZOztnQjs7SSxPO0c7O0ksYztJO007eUMsOEI7SztNO00sTztLLE87O0ksVztJLE87Rzs7SSxjO0k7TTt5Qyw4QjtLO007TSxPO0ssTzs7SSxXO0ksTztHOztJLDhCOzs7TyxzQzs7Ozs7Ozs7OzsyQjs7Ozs7OztPOzs7UTs7YTs7Ozs7ZSxNOztHOztJOzs7OzttQjs7O007OztPOztZOzs7Ozs7SyxvQjs7Ozs7O0k7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7OztJO0ksTztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7VyxxQzs7Ozs7Ozs7OztXLG9DOzs7Ozs7Ozs7UyxlLFU7dUIsTTs7Ozs7TSxNOzs7Ozs0QixPOzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7OztPO087O1E7O087Ozs7UTtPLE87O08sTztlLE87O0c7O0k7Ozs7UTtROztRLE87Z0IsTzs7O0kscUIsTyxnQztHOztJO3dDO0k7Rzs7O0s7OztNLE87TSxNO007TSxPO0ssTzs7Ozs7Ozs7O0k7SztPLDJDO0ssUyxXO0ksTztHOzs7Szs7UTs7Ozs7SztJO0k7Rzs7STtLLGE7Ozs7TTs7Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7OztRLE87O1EsTTs7SSxPO0c7O0k7OztLO0s7Tzs7Ozt5QixtRDs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7O007UTs7OzswQixPLDRDO0s7YTs7Ozs7aUI7OztLOztNOzs7O0k7O0s7SSxPOzs4Qix5Qzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7STtLLE87SztPOzs7MEIsTyxzQjtJLE87Rzs7STs7Tzs7UTtROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsSztRLEs7UTtRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztLLE87SyxPO0ksTzs7Ozs7Ozs7Yzs7O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7Ozs7OztHOztJO0ssTztJLGlCLE87SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLE87USxVO087OztPO1EsTzs7OztPOzs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87OztJLE87Ozs7O2M7O2U7ZTtnQixVOzs7Z0I7O2dCLE87Z0IsTztnQixPO2UsTzs7O2UsTTs7Yzs7O2lCOztpQjs7a0I7Ozs7O3VCOzs7d0IsTzs7d0IsTzt1QixPOzs7O2tCO2tCOzs7OztxQixNOzs7b0I7Ozs7bUQ7Ozs7b0I7O3FCLGU7b0I7Ozs7Ozs7O29COztxQixlO29COzs7Ozs7OztvQjs7Ozs7Ozs7OztpQjs7Ozs7Ozs7YTtHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO08sTzs7Ozs7K0I7O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7TyxPOzs7OzsrQjs7Rzs7O0k7SSxPOzs7OztjOztpQjs7a0I7b0I7Ozs7Ozs7Ozs7Ozs7OztvQjs7cUI7cUI7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0I7NkI7OztpQixtQjs7a0IsTTs7Ozs2Qjs7YyxhOzJCLHNCOztlLE87Ozt5QyxPLHNCOzs7YztjO2E7OztJLE87OztjO2U7O2dCO2dCLFc7ZSxXOzs4Qzs7Ozs7OztjO3NCOzs7Ozt5Qjs7O29DO3lCOzs7Ozs7NkIsaUI7NkIsTzs7Ozs0Qix1Qzs7OztxQzs0Qjs2Qjs2Qjs2QjsrQjs7Ozs7Z0Q7NEIsTzs7Ozt5Qjs7NEI7OzhDLGlDOzt5QjswQjs7OzhCOytCLE87OytCOztnQyxPOytCLE87OzhCOzsrQixPOzhCLE87OzZCOzJCOzs4QixlOzs4Qjs2QjsyQjsyQjsyQjsyQixNOzBCLE87Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7O3lCLE87d0I7YTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0k7SSxPO0c7RztJO0k7STs7O0k7TTs7d0Isa0IseUI7OztJLE07RztHO0k7Ozs7Ozs7STs7O0c7O0k7Rzs7STtLLE07O0s7O0c7O0ksNEIsSztJLE87OztjOzs7YTs7Rzs7SSxPOzs7YyxxQjthOztHOztJLE87OztjLFk7OztrQjtnQjtnQjs7O2M7YTs7O0c7O0k7TTs7d0Isa0IsTyw0Qjs7STs7TztTOzs7WTs7O2EsSTthLFE7OztnQjtjO2M7OztZLE07O1c7O0k7Szs7TTtRLDJDO0s7O0ksTztHOztJO0k7TTs7O1MsWTs7O1UsTzs7UyxNO1E7O0k7Rzs7O0k7Ozs7OztJO0s7TSxJO007O1MsTztRO1k7Ozs7Ozs7SyxXO0ssTzs7Rzs7STtLLE07O0s7O0c7O0ksZTtJO0ssTTs7Ozs7SSxTO0k7STtHOztJLGlEO0k7OztPOzs7OztPO1EsSSxJLDZCLE87USxJLG1DLEk7b0I7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO1U7VztZOztlOzs2QjtjO1k7YztXLE07Ozs7O3dCOzs7VSxTOztVOzs7Ozs7TztNOzs7STtLLE87OztlO2UsSSxXLG9DOzs7Ozs7O2dCLE07OztjO29COztHO0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087Ozs7aUMscUM7O0ksUTs7STtLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLO0sscUI7O0c7O0ksTzs7Ozs7YyxtQjs7ZTtlOzs7ZSxNOzs7ZSxnQjtlLE07OztjO2UsTTtjO2M7YzthO0c7RztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7OztjO2E7Ozs7O0s7STtJOzs7O00sTTtLO0s7Ozs7OztRLGdCO1EsTTs7TyxJLEk7Ozs7UTtROzs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087UTtVOzswQjs7UTs7VywyQyxlO1EsTztPOztPOzs7USxVOzs7OztROzs7OzthLDRDLFM7Ozs7OztPO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxTO1E7Ozs7O2dCOzs7O08sVztPOzs7VTtVO1csVztXOzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7OzthO2U7Ozs7O2tCOzs7OzsyQjtpQjthO1k7OztXOztRLGdCO1E7VTs7K0IsMEI7OztRLG1DO1E7VTs7O2E7YSxPO1k7OztPLG1DOztPOzs7USxVOzs7UTtRO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxPO1EsVTs7O1EsTztPOzs7VTtVLEksVyx3Qzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxPO1EsVTs7a0M7UTtROztPLE07OztPO1E7UztTO1EsSTs7OztTLGtCLFE7UyxNOzs7Ozs7OztRO1M7Vzs7O2M7YztjO2MsSTs7Ozs7ZSxrQixRO2UsTTs7O2M7YTs7YztjLE87YTs7O1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WTthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTtRO1E7UTtVOzs7YTs7YztjOzs7O2U7O2dCO2dCO2dCLFU7Ozs7Ozs7Ozs7OztlOzZCOztlO2dCLE87Z0IsVTs7Ozs7O29CLE07Ozs7OzttQixHO29CLFM7b0I7Ozt1Qjs7O3dCOzt5QixLOzBCLFk7O3FEOzs7MEIsTTs7Ozs7O3VCO3NCOzs7Ozs7O2UsTTs7Ozs7Yzs7aUI7Ozs7O29CLE87Ozs4Qjs7O21COzs7ZTs7Z0IsSztpQjtrQjtvQjtxRCxjO3NCOzs7OzsyQjs7O2dCLE07OztvQzs7d0I7O2M7OzthOzs7UTtVOztrQyxpQjs7O1EsVztPOztROzs7VyxlOztZLE07O1c7VTs7O087Ozs7VyxPOztVO1E7UTtVO2E7OztPLEksNEIsTztPOztPOzs7USxTLHdDLFk7UTtVOzs7NkIsb0IsNEI7O2E7K0IsOEM7YTs7MEI7YTs7Z0I7O2tDLG1DOzthO1k7OztRO1E7UTtVOzt3QixPLCtCOztRLE87UTtPO087O087Ozs7UTtRO1U7OzthO2EsRztjLE07O2EsTztZOztRLE07UTs7NEIsTyx3QztRO1U7OzthO2E7WTs7UTs7O2E7O1EsUztROzs7Vzs7O2M7YzthOztRLFE7Tzs7Tzs7O1EsVTs7O1E7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7TTtROzs7Vyx3QixROzs7WSxjOztXO1U7O007O1M7SztLLE87O0ksTztHOzJDO0c7O0k7SSxPO0c7O0k7STs7SztJO0k7STtHOztJOztJO0s7Tzs7OztVO1U7VTtTO0s7STtJOzs7O0ssTztLLE87STtHOztJO0k7SztPOzs7MEIsb0IsNEI7O1U7VTtVO1U7Uzs7O0ksZ0I7Rzs7STs7Szs7O00sUyx3QyxZO007UTs7OzJCLG9CLDRCOztXO1c7WTtZO1c7VTs7O0s7Szs7SSxPOzs7O2M7YzthO0c7O0ksTztHOztJOztlO2U7Ozs7TyxPOzs7Ozs7OztpQixPO2dCOztPLGtCLE07TyxPOztPOzs7O1EsTTtPLE87OztPLHVCLE07TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Tzs7USxNOzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOzs7UTs7VyxPO1U7TyxPOzs7OztpQjtpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7TyxxQixPO087TyxZOzs7OztTLE87Ozs7bUIsVztrQjs7O087O087OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7USxPO087TyxHO1E7ZTtROztRLFc7UTs7TyxPOztPLG9CLE87TyxPOzs7TyxPOzs7OztpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7O08sTzs7Ozs7aUIsWSxPO2lCOztrQixPO2lCLE87Z0I7OztPLHFCLE87TyxPOzs7Rzs7O007O087ZTs7OztvQzs7O3FDOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsa0M7O0k7O3FCLE87O3VCLE87O3FCLE87O3FCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STs7Szs7O007O0s7TSxPO0s7O1EsTzs7USxPOztRLE87Ozs7O0ssTzs7O08sb0IsTztPLE87OztPLE87OztPLG9CO08sTzs7O08sTzs7OztxQzs7Ozs7OztRLE87OztPOzs7O1E7Ozs7O1MsTzs7Ozs7Ozs7Ozs7USxPOzs7OztzQzs7OztRLE87Ozs7O3NDOztPO1E7VTs7d0IsbUM7O1EsTztPLE87Ozs7OztxQzs7OztxQixPOztPLE87O087O1E7VTs7NEIsK0M7O08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksTzs7Ozs7OztnQzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7STs7O08sTztNOztJLE87Rzs7STtXO0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7c0IsaUQ7O0ksTyw0QyxhO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7UTtVOzs0QixvQixXOztRO1U7OzRCLG9CLFc7Ozs7OzswQjs7Ozs7Ozs7Ozs7Ozs7OztVO1csTTtXLFE7bUY7VSxNO1M7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozt5Qjs7Tzs7eUIsTzs7K0I7aUM7O0c7O3NCLHlDO0k7Ozs7OztROztTOzs7Ozs7OztROztTO1c7OztjO2M7YTs7Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7Ozs7Ozs7SSxtQjs7O0k7RztHOzs7Ozs7O0ksTTtJO21COztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7UTs7O1c7a0Q7VztVOzs7Ozs0Qjs7O0ksTzs7NEI7O0c7O0ksTzs7NkIsd0IsWTs7Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7USxJLHVCOzs7Ozs7USxJLG9COzs7Ozs7USxJLG9COzs7Ozs7OztPLEksdUI7Ozs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCLG1DO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7MEI7O0s7OztPLGtCLE87O087OzttQjtLO0k7O0s7Szs7O1E7Ozs7O1M7USxXOzs7Ozs7c0I7TTs7STtJOzswQiwyQztHOzs7O0k7Ozs7Ozs7OztJO0s7O087O1U7SyxPO0ssUTt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7OztxRDs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07UztRLE87OztrQjtrQjttQjs7c0I7Ozt5Qjs7d0I7Ozs7Ozs7OztrQjtpQjs7O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7VztXO2E7OztnQixPOztzQywrQjs7OztlOzs7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7UTs7O21COzs7c0I7c0I7O2dDOztzQjtxQjs7Ozs7Ozs7UTs7Uzs7O1M7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7OztLLE87OztlO2U7Yzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7OztNO0s7TTs7Ozs7Szs7OztJO0ssWTtLO087SztPO1M7OztZO1ksa0I7Vzs7STtHO0c7STs7STtNOzs7UyxtQjtTLHVDOztVO1csTTs7eUIsVzs7VTtTOztxQixXOztTO1E7Ozs7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7O1U7WTs7O2Usa0I7bUY7ZSxNO2M7O1UsTTtTLGdCO1UsVztVLE87OztvQjs7O3FCLFE7Ozs7cUIsTzs7b0I7bUI7OztTLFc7UyxXO1MsVztTLE87OzttQjs7O2lDOzs7NkI7a0I7Ozs7O007OztNLE07O0k7Rzs7STs7Ozs7O0ssTztJO2dCOzs7Ozs7Rzs7STtLLE07O21CO0ksbUI7STtHOztJLFk7O0s7TTtPLE87TyxVOzs7Tzs7cUIsbUI7Ozs7O007Ozs7OztNLGM7Ozs7VTs7VzthOzs7Z0IsVztlOztVOzs7VTtnQjs7O2EseUMsYTs7VTtVLE87O2tDOzs7TTs7O0k7Rzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7O0ssUTs7Ozs7O08scUIsVTs7cUI7Ozs7bUI7O0k7SyxpQjtLO087OztVLFc7Uzs7SztPOzt5Qiw4Qjs7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7TTtROzs7Vzs2RTtXLE87VTs7TTtNLFM7SyxnQixNO0s7Yzs7K0I7OztJO0c7O0k7SztPOzt5QixrQixPLHVCOzs7STtLLEs7O00sZ0I7O0ssVTs7O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7VTttQjs7cUMsa0IsUzs7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTtPLE87OztpQjs7O2tCOzRCO2lCO2lCLHdCO2dCOzs7Ozs7OztPOzs7O1E7TyxTO087Ozs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTO1MsTztnRCxrQjtRO007Ozs7Ozs7O1M7O1k7OztlO2UscUI7ZTtnQjtnQjs7eUI7Z0IsTTtlLE87O3VDOztjOztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksTzs7NEI7O0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNOzs7VTs7OztZOzs7VTtTOztNOzs7OztNOzs7O087TSxTO007Ozs7TTtPO08sVTs7O087TyxPO087Ozs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPO0ksTzthOzs7Z0I7aUI7O2tCO2lCLE87O3dDLHFCOzs7Z0I7OztnQixPOzs7MEIsVzswQixPO3lCOztlOztHOztJO0ksd0M7STtLO0s7OztLOzs7O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOzs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COztzQzs7Ozs7a0I7bUI7cUI7Ozt3QixrQjs7OzhEOzt3QixNOzt1Qjs7bUIsTzs7Ozs7Ozs7eUM7a0I7Ozs7Ozs7bUI7O29COztzQixNO3FCLFM7cUIsSzs7OztvQixJOzs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7O3dCO3dCO29DO3VCOztzQzs7Ozs7Ozs7O3dCOzs7OzBCLE87Ozt3QixNOzt1QjttQyxlLDRCOzttQyxjOzs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsa0I7eUY7cUIsTTs7b0I7Ozs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCO2tCOzs7cUI7cUIsRyx3QztxQixZO21EOzs7c0I7OztxQjtvQjs7Ozs7Ozs7bUI7OztzQjtxQjs7Ozs7ZSxHOzs7O2dCO2lCLEs7aUIsWTs7Ozs7Ozs7ZTtnQjtrQjs7O3FCLGtCO3lGO3FCLE07O29COzs7ZTtnQixLO2dCOzs7Ozs7bUM7Ozs7Ozs7Ozs7NkIsTzs7O1MsTzs7aUMsc0I7O1E7TTtROzsrQix1Qjs7TSxPO00sTztLLE87Yzs7O2lCLFk7Ozs7O2lCLHFCO2lCO2tCO2tCOzs7O3VCO2tCLE07aUIsTzs7eUM7O2dCOzs7STtLO0ssTztJLE87OzJCLHNCOztHOztJO0ksTzthOzs7Z0IsMEM7Z0IsTTtlOztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VSxZO1U7OztXO1c7VztVO1M7O007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7UywyQixNOztjO1U7VyxROzs7Ozs7VzthOzs7Z0I7Ozs7aUIsUTs7Ozs0QjtnQjtlOzs7OztXO1c7O1c7O3lCLDBCO1ksVztZLE87Vzs7Ozs7Ozs7Tzs7Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix5Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OztRLEksd0MsaUI7USxPLDJDLGlCO2U7Ozs7O1UsNEMsUztNLE87OztnQixpQzs7Ozs7aUI7Ozs7Ozs7OztrQixNOzs7aUI7OztrQjtrQjtrQjtrQjtrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Z0M7Ozs7Ozs7OztvQixXOzsrQjs7O2tCOztpQjs7Z0IsTTtlOzs7OztLOzs7TSxPO00sTzs7TTtROzs7Vzs7WSxNO1c7O1ksTztZLE87NEQ7VztVOztPO1E7USxNOzs7OztPLEkseUI7Ozs7Ozs7OztRLEkseUI7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCLG9DO2dCLFc7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7VTs7Ozs7Ozs7Yzs7ZTs7O2M7Ozs7Ozs7Ozs7Yzs7ZSxPO2UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztHOztJO0k7O007Ozs7O087TSxXOzs7OztLOztHOzs7OztvQjs7O007UTt3QyxPLHdCOztXOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQixlOzs7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7b0IsUzs2Qjs7Ozs7Ozs7Ozs7OztxQjs7cUI7b0I7b0I7bUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLHFCLE87bUI7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLG9CO2dCOzs7Ozs7Ozs7UTs7Ozs7O1E7UyxPOztROztPOzs7O087USxPOztPOzs7SyxNOztHO3NCOztJO0s7SztNOzs7Ozs7Tzs7Ozs7Ozs7Szs7Ozs7SyxrQixPOztLOztHOztJO0s7Ozs7O007Szs7STtHOztJOztNO3FDLDZCO0k7Rzs7STtLLFk7O0s7STtJO0s7Tzs7O1U7OztXLFE7OztXO1U7Uzs7Ozs7STtJO0c7O0k7STttQjs7OztNOzs7OztHOztJO0k7bUI7Ozs7TTs7Ozs7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7VSxPOzs7b0I7b0I7bUI7Ozs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7STtLLE87SztlLHlDLGE7SSxXOzs7aUI7Szs7Ozs7O007Szs7TTtPLE87Ozs7VzthOzs7O087Tzs0Qjs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTO1U7WTs7O2UsMEM7ZSxNO2M7O1U7VTs7O1UsSztXOzs7Ozs7Ozs7OztnQjs7OztROztzQixPLGtDOzs7Ozs7Ozs7TSxNOzs7O1U7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7VyxPOzs7cUI7Ozs7O29COzs7VyxvQztXLFc7Ozs7O1c7OztRLE8sd0MsZTs7Ozs7TTs7STtJO0c7O0ksSSw2Qjs7Szs7TSx5QjtNLG1CLFc7TSxROzs7TSxHO087UTtTLE07UyxNO1E7UTtTO1E7VTs7O2E7Ozs7Yzs7YTtZOztTO1EsSSxPOzs7Tzs7Ozs7Ozs7SyxZO007Ozs7O21CO0k7Szs7UTs7eUIsdUM7Ozs7O007OztTOztxQztZLDBCO1MsZTtTLE87UTs7OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O0s7TywyQztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjtTO1U7O1cscUIsTztXLE87OztxQixTOztvQjs7O1UsTztTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxNO1UsTztVLE07Z0I7VTs7O2U7O2dDLHNCOzs7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SztPOzs7VTtVLE87Uzs7O0k7SztNO1E7OztXO1csZTtVOzs7TTtROzs7VztXLE87Ozs7O3FCLE87b0I7VTs7OztLO00sTTtNO1E7OztXOzs7O1ksVztXLE87VTs7O0ssRzs7O0k7OztPO08sTztNOzs7STtHOztJLFUsNEMsUztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SSxJLFcsMEM7Ozs7OztHOzs7SztLO007TSxHLDBDO00sYTttQjs7TTtPLDhCO08sUTs7Ozs7VSxxQjs7Ozs7O1UsTzs7O1UsZTtVO1c7WSxPO1k7Yzs7O2lCOzBCO2dCOzs7Vzs7Ozs7O1csTzs7bUM7Ozs7Ozs7Ozs7OztVLE07Ozs7VSxXO1U7OzthLGtCLFE7OztlOztnQixJO2UsTzs7dUM7Ozs7Ozs7OzthO1k7O1UsVzs7Ozs7OztVOztXLEk7VSxPOzs7b0I7b0I7bUI7OztNOztJO0k7Rzs7STtLLE07SyxNO0ksTztHO0csZ0I7O0k7OztLLG9CO0s7Tzs7O1U7Ozs7Vzt5QjtVO1M7O0s7SztJOzs7Tzs7OztPO007OztLOzs7USxLO1M7UyxLO1U7Vzs7O2M7YztlLEcsNEM7NEI7ZTtlLEcsbUM7ZSxZOzs7O21CLE07OzttQjtvQixVO29COzs7Ozs7O29CLFc7b0IsRztxQixNOzs7OztlLE87O2E7VTtXO1c7Vzs7OztpQzs7Ozs7UTtPOzs7Syx3QjtLOzs7UTtRO1E7UztTLFE7OztTLEs7UyxNO1E7Ozs7OztTLE07Ozs7Ozs7Tzs7O0s7TSxPO00sTTtNO1E7OztXLFU7VyxXO1U7O0s7TTtNOzs7UztTLEcsMkI7Ozs7O2U7UztROzs7TTtPOzs7VSxHLDBDO1UsZ0I7O1U7VztXLE87VzthOzs7Z0IsTzswQjs7ZTs7O1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1U7VyxNO1csVTt3QixPOzs7Ozs7Ozs7VTtVLE07Ozs7OztTO007O3dCLG1CLG1COzs7O0ksTzs7O2M7OztlO2U7ZSxZOzs7ZSxlOzs7YztlO2UsTTtjLGM7Ozs7O3FCO2UsTzs7YzthOzs7O0c7SSxZLHlDLGtCOzs7OztJLHFDLE87O0ksTzs7O2M7YzthOztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQyxROztLOztNLE07TSxNO0s7OztRO1E7UyxNO1EsaUM7O1M7VSxPO1UsUTs7OztXO1ksTTtZLE07a0I7Ozs7Ozs7OztRLFEsTTtRO087Ozs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7SztPO3dDLHFCO0ssYTs7Ozs7TSxPOzs7Z0I7Ozs7aUI7aUI7Z0I7ZTs7Ozs7STs7Ozs7O1M7O1U7WTs7O2U7ZTtjOzs7O3dDOzs7O1M7VzswQywwQjtVO1c7YTs0Qyx3QjtXLE07Ozt5Qzs7VTtXLE07VzthOzs7Z0IsVTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7VzthOzs7O2dCOzs7O1csVTs7VyxNO1U7OztXLE07aUI7Ozs7Ozs7SSwyQjtJLE87OztJLEksc0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7SSxPOzhDLG9CO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7STs7O0k7O087d0M7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7STtLO087OztVOzs7Ozs7VTs7O1M7Ozs7O0s7TztJLE87OztjOzs7O2U7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs4QixPLGlDOzs7OztLLGM7bUI7O0ssTzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7NEIsOEM7Rzs7STtNOztnQyxXLDhCOzs7O0k7STtLLFk7bUM7d0I7SyxzQzs7OztHOztJLFU7SSxPO2E7OztnQixZOzs7aUIsaUI7O2dCLE07ZTs7RztHOztJOzs7Ozs7STs7STtHOztJLE87OztjLEksbUI7YyxXO2E7OztHOzs7Ozs7O0k7OztJLEksVSxtQzs7Ozs7O0c7OztLO0s7TSxJLDZCLFU7O087O1EsTTtxQjs7O007Ozs7OztVO1UsTztTO00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7Ozs7YTtjOzs7a0IsbUIsUTs7OztvQixPOzs7b0Q7O2tCOztlLE07ZSxRO2UsUTtlLFU7Ozs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJLE8sNEMsUztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssTzs7K0I7Ozs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozs7Ozs7aUI7bUQsUzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTTtNLE87TSxVOzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Ozs7VTs7OztnQzs7O1E7OztROzs7OztRLE07O0k7Rzs7SSxJLDJCLEk7Ozs7K0I7Ozs7Ozs7Ozs7TyxHOzs7Vzs7Ozs7bUI7Ozs7YSxvQzs7STtHOzRCLHVDO29DLHVDOztJOzs7Ozs7O08sRztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxPOzs7OztjLE87YTtHOzs7STs7Ozs7OztNOzs7UztrQixNOztROzs7O0s7TSxPO2U7O0ksWTtJLGE7Ozs7Ozs7OzsyQjs7OztJOzs7O0ssTztLLE87O0s7O1E7OzBCLE8sMkI7Ozs7Ozs7Ozs7Ozs7OztJOzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHVDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STtJOzs7TztPLEc7USxNO3VCOztNOzs7Ozs7Ozs7SyxPOzs7OztlO2dCLFE7Z0IsTTtnQixPO2dCLE87ZTt1Qjs7Ozs7OztjOztJO0ssUztLO087OztVLG1CLFE7Ozs7OztVO1M7O0k7Rzs7STtLOztNLE87TSxNO0s7aUIsd0MsWTs7O0k7O0s7OztJOzs7O0k7O0ssTzs7O2U7O2dCO2tCOzs7O3FCO3FCO3NCO3dCO3VELFk7c0IsYztzQjtzQjs7OztzQjt3QjtzQjtzQixVOzs7c0IsRzt1Qjs7cUI7c0IsTztzQixZO3NCLGdCO3FCLE07O29COztxQjs7OztxQjtxQjtxQjtxQixzQixPLDhCO3FCO3FCO29COzs7OztlO2M7O0k7Szs7O0k7RztHO0k7TTs7O1M7UyxPO1E7O0k7TTs7O1M7Uzs7OztTO1UsaUI7VSxPO1MsTyxXO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7UyxPOzs7bUI7Ozs7Ozs7aUI7Ozs7SyxPOzs7ZTs7OztHOztJLE87OztjOzs7ZSxTOzs7O2dCLE07O2U7Z0I7OzthOztHOzs7Ozs7OztNLG1CLFU7OztPO1E7UyxTO1MsTzs7Vzs7O1MsSTs7Ozs7OztTO1UsTztVLE87VSxPOztZOzs7OztTLE07Ozs7Ozs7UyxNOzs7O00sTTs7O0k7Ozs7O0s7SztNLEs7O1EsVztRLEc7OztTLGdCO3NCOzs7Ozs7O3FCOzs7Z0I7TyxjOzs7Ozs7WTs7YTsyQjs7Ozs7Ozs7O08sVztPO1EsWTtRLFU7O1E7OztTLGE7UTs7Uzs7MEI7OztRLEksVzs7Ozs7O21COzs7cUI7Ozs7O1E7Ozs7OztPLE87OztpQjs7Ozs7TyxNOzs7OztROzs7UyxVOzs7O3FDOzs7Ozs7OzswQjs7Ozs7O3dCOzs7OztnQjtnQjtNLE07O0k7O0s7STtJLFc7STtLOzs7TTtROzs7eUI7O0s7Ozs7OEIsTzs7O0c7O0k7SztLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7O2dDO21CO1E7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VSxPOzs7b0I7Ozs7Ozs7O2tCOzs7O00sTzs7O2dCOzs7O0k7O0s7SztJO0ksTzs7O2M7ZSxROzs7OztjOzs7aUI7OztjO2E7O0c7O0k7Ozs7Ozs7SztLO00sTztNLE87TSxPO0ssSyxpQztLO007TSxPO00sTztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLHFCLE87OztJO0c7O0ksTzs7O2M7YzthOzs7O0c7O0k7STtLLGM7SztPOzs7VTs7VztXLE87VyxhO1c7VztVOzs7Ozs7Ozs7Uzs7SyxlO0ssUTtLO087OztVO1csTztXLE87VSxXO1M7O0s7Tzs7O1U7O1c7YTs7O2dCOzs7OztXO1csYzs7OztZLEksZSxLO1k7Ozs7ZTs7Ozs7O2UsVztlO2UsTztjO1k7O1c7Ozs7O1csTzs7Ozs7cUI7cUIsTzs7OzsrQjsrQjtnQztnQztrQzs7b0Qsb0IsYzs7Z0M7a0M7OztxQzs7OztzQyxPO3FDOzZDOzs7b0M7O2dDLFU7Z0MsUTsrQjs7aUMsTTs7Ozs7Ozs7Z0M7OztvQyxNOzttQztpQzs7O2tDOztrQzs7O2lDOzs7bUM7Ozs7OztpRDs7O3FDOzs7Ozs7O3NDO3NEOzs7cUM7Ozs7O2tDOzs7O2lDOzs7bUM7bUQ7OztrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7a0M7b0M7a0M7b0M7Ozs7Ozs7Ozs7Ozs7Ozs7a0M7O21ELDZCOzs7O2lDOztnQztnQzs7O21DO21DLEc7b0MsTTs7O29DOztrQzs7Z0M7aUM7aUM7bUM7O2tELE8sa0M7OzBDO2lDLE07O2dDO2lDOztvQyxPOzs7Ozs4QzsrQyxPOytDOzs7Ozs7Ozs7Ozs7OytDOzs7K0MsTzsrQyxPOytDOzs7Ozs7Ozs7OytDOzs4Qzs2QzttQztpQztpQyxPO2lDLFU7Ozs7Ozs7Z0M7O2lDOzs7aUM7OztzQzs7O3lDOzswQyxRO3FEO3lDLG1CLFU7OzswQyxPOzt5Qzt3Qzs7OztpQztpQzs7Ozs7Z0M7O2lDO2lDLE07Ozs7OytCO2dDLFE7Ozs7Z0MsTztnQyxPO2dDOzs7Ozs7Ozs7Ozs7Ozs7OytCOzs7a0M7Ozs7bUM7bUM7a0M7bUMsVzttQzs7Ozs7OzttQyxNOzs7aUM7OytCO2dDO2lDO2tDLE87a0MsVztrQyxVOzs7OztrQyxNOzs7OztnQzs7K0I7Z0M7Ozs7Ozs7Ozs7Ozs7Z0M7O2dEOztnQzs7aUMsTzs2Qzs7Z0M7O2lDLE87NkM7K0I7OEI7b0I7O1U7VyxPO1c7YTs7VzthOzs7Z0I7Z0I7ZTs7VyxROzs7O1U7VyxTO1csVTtVOzs7YTs7OztjLE87Ozt3Qjt5QjswQixPOzBCOzRCOzs7O3lCOzs7OzswQixPOzs7O3VCOzs7O2EsTzs7O3VCO3VCO3dCO3lCLE87eUI7MkI7Ozs7d0I7Ozs7O3lCLE87Ozs7c0I7O1k7O1U7VTs7a0I7b0Q7Uzs7Ozs7O0s7Tzs7Z0MsbUIseUI7OztLO087OztVOzs7OztJOzs7Tzs7O1E7USxNO3lCO087UTtVOzs0QixPLDRCOztRO1EsTztPOzs7OztnQjs7O007OztLLG1COztLLE87STtJOzs7TztPOzs7Z0I7Ozs7TTs7STs7O08sdUM7Tzs7O2dCOzs7O007O0k7OztPOztRO1EsUTttQjs7TyxNOztNOzs7STs7O08sdUI7Tzs7O1U7VTtTOzs7Ozs7OztXLGtCOzs7WTs7O1csTTs7VyxvQjs7WTs7YTs7Z0IsTztlO2E7ZTtZOzs7ZTtlO2dCO2lCLE87aUIsUTs7Ozs7aUIsTTs7Ozs7OztnQjs7OztrQjs7O3FCO29COzs7Ozs7Ozs7O2tCOzs7O2dCLE07Ozs7Z0I7O2U7Yzs7OztXLE07OztxQjtPLHFCOztRLE07O087Ozs7STtLO007UTs7O1c7VztVOzs7TTtRLFc7TSxPLFc7TSxVLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7OztPOzs7O0k7O087OztVO1U7Ozs7Ozs7Ozs7O1M7OztJO0c7O0ksSSxLOzs7O007O087TyxTO08sVTs7OztPO1EsUztRLE07USxpQjs7OztPO1EsUTs7O00sSTs7Ozs7TyxNOzs7O087USxPO1EsTztPOzs7VSxXLG1CO1U7VztZLE87bUI7OztVLGM7Uzs7O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztLO0s7Ozs7OztvQzs7Ozs7O0ksWTtJOzs7O0ksTzs7Ozs7Yzs7Ozs7Ozs7YTtHOzJCLCtCOztJLE87Ozs7O2M7O2UsUTs7OztlLE07Ozs7ZTtnQjs7bUI7O3FDLGlDOzs7Ozs7Ozs7ZSxNOzs7YztlO2lCOzs7b0I7cUIsUTs7O29CO21COztlLE87Ozs7ZTtnQixPO2dCO2tCOzs7c0I7Ozs7O3VCO3VCOzs7Ozs7cUI7Ozs7O2M7O2UsTTs7O2M7ZSxRO2U7aUI7Ozs7cUI7cUI7cUIsTzs7OytCOytCOzs4Qjs7b0I7O29CO29CO3FCO3FCO3VCOzt5QyxvQixjOztxQixPO3FCLE87b0I7b0I7OztxQjt1Qjs7OzBCOzs7O29CO21COzs7Yzs7O2lCLG9CLFE7NkI7O2lCLE07O2dCOztjOzs7aUI7aUI7a0I7O3FCOzs7Ozs7a0I7Ozs7Ozs7a0IsTTs7O2dCOztjO2U7aUI7OztvQjs7O3FCO29CLE87O21COzs7ZSxVOzs7ZTs7Ozs7Ozs7O2M7YTtHOztJO0ssUTtLO087Ozs7VztXOztVOztVO1U7O1M7OztLLFU7OztLLE07OztJO0s7SyxTO0k7Rzs7STtLO087Ozs7eUIsbUM7Ozs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7VSxPOztTLE07O1E7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7TTs7bUM7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7O0ksTzs7Ozs7YyxJLE0sMEM7O2U7Ozs7O2U7Z0I7Ozs7O2dCO2tCOzs7O2dCO2lCO2lCO21DOzs7O2dCLE07Ozs7Ozs7OztlO2dCLE07O2U7OzttQixXO21CO29CLFk7Ozs7c0I7O3VCLFM7MkM7Ozs7OztvQjs7OzsyQzs7O2tCO2dCO2tCO2U7OztrQixnQjtrQixPO2lCOzs7ZTtnQixPO2dCLE87Ozs7ZSxLO2dCLE07O2U7Z0IsTztnQixPOzs7YztlO2lCOzttQyxlOzs7Ozs7ZTs7Ozs7Ozs7O2M7YTtHOzs7STtJLE87O2dDLGdDOztjO2M7ZTtlO2U7aUI7O21DLG9CLGM7O2UsUTtlO2lCOzs7b0I7Ozs7cUIsTTtxQixRO29CO21COztlOzs7ZTs7Z0IsTTs7Ozs7Ozs7OztjO2UsYTs7YztlOzs7a0I7a0I7bUIsVzttQjs7Ozs7OzttQixNOzs7aUI7OztjOzs7aUI7aUI7a0IsVztrQjs7Ozs7OztrQixNOzs7Z0I7O2Msd0I7Ozs7O2U7Ozs7Yzs7Ozs7OztlOzs7Ozs7OztjO2UsTztlLE87OztlOzs7Ozs7OztrQjs7Ozs7Ozs7Yzs7O2lCO2dCOztjLGM7OztlLE07OztjO2U7ZSxXO2M7ZTs7a0I7Ozs7Ozs7Ozs7OztlLE07OztjOztpQjtjO2U7O2tCOzs7Ozs7O2UsTTs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7OztHOztJO0ssTztLLE87Szs7SyxxQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLFc7SztLLFc7STtJLE87Ozs7Yzs7OztlLE87ZSxPO2M7Ozs7Ozs7Ozs7Ozs7OzthO0c7O0ksWTtJLE87OztjOztlOzs4QjtjLFc7YTs7Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7TTtROzs7VyxXO1csTztVOztNLE07TSxXO0s7SztNLE87TSxPO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O0ksTyx3QyxZO0c7O0k7SztLO29COzs7Ozs7Ozs7Ozs7OztNOztJO0k7Rzs7SSxPOzs7YztjLE87O2E7O0c7O0k7SztNOzs7TyxPO08sTztNLE87O0s7OztNLE87TSxPO0ssTzs7STtLLE87STtJLE87YTs7O0c7O0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7USxPOztRLE87Ozs7OztPLE87OztPLE87O087Ozs7UTtPLE87Z0I7O2lCO2lCO2lCLE87Ozs7Ozs7O2dCOztPOzs7O1E7TyxPO2dCOztpQjtpQjtpQixPOzs7Ozs7OztnQjs7OztROztTO1c7Ozs7OztTLE87USxPOzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7O087Tzs7Ozs7O3VCLE8sMEM7dUIsTywwQztPLE87OztPO087Ozs7Ozt1QixPLDBDO3VCLE8sMEM7TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087Ozs7O1E7UTs7VyxPO1U7TztPO087USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7OztpQiw2Qiw4QjtpQixPOzsyQjs7MkI7Z0I7OztPOzs7Ozs7O1k7Ozs7Z0I7Ozs7cUMsUzs7eUMsVztlO2EsUTs7Ozs7O2lCOztrQixVOzs7aUIsRyxpQztpQjs7OzttQyxrQixTOzs7b0I7b0IsTzttQjs7O2lCLG9CLE87aUIsRyxtQztpQjs7O21COztvQixrQixROzs7OytEOztzQixPOzs7cUQ7O29CLE87bUI7OztvQjs7cUIsTztvQixPO21COzs7YTs7Ozs7OztXOzs7O3lCLFk7OztjLFc7YyxPO2E7Ozs7Vzs7Ozs7YztjLE87YTs7O2M7Ozs7Ozs7O2E7OztPLE87OztPLE87Ozs7Ozs7O08sdUIsTztPLE87Ozs7Ozs7OztPOzs7O1E7VTs7Ozs7O1EsTztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7aUIsVztpQixPO2dCOztpQixPO2dCOztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7O087Ozs7UTs7Vzs7OztZO1c7O3VCO3VCOzt1Qjs7O087USxnQixPO1E7Ozs7Ozs7Ozs7O1E7Ozs7VztXO1ksTztZLE87Vzs7Ozs7Ozs7OztXO1csVztXOzs7Ozs7Ozs7O1c7VyxXO1c7Ozs7Ozs7Ozs7VyxXO1c7Ozs7Ozs7Ozs7O1csVztXOzs7Ozs7Ozs7OztXLFc7Vzs7Ozs7Ozs7Ozs7Z0M7TyxJLHFCO08sTzs7TyxvQixPO08sTzs7O087TztPOzs7O3FCLFM7O3lCLGE7TyxPOzs7aUI7O2lCOzs7Ozs7Ozs7Ozs7O08scUI7TyxPOzs7TztpQjs7Ozs7Ozs7aUI7Ozs7Ozs7OztPOztROztXLFksTztXLG9CLE87VyxPOztPLE87Ozs7Ozs7Ozs7TyxPOztPOztROztXLE87VTtRLE87USxPO08sTzs7OztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozt1Qjs7O0k7RztxQyx3Qjs7STtJOzttQzs7OzZCOzs7O1E7OztZOzthLG1CO2EsTzs7WTtXO1M7Vzs7Ozs7UTs7O2lGLGU7O1EsTzs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UTs7OztTOzs7O1U7VSxROzs7Ozs7OztRLG9CLFU7OztpQzs7O1E7OztRO1MsTzs7O1E7Ozs7Ozs7OztROzs7OztRO2dCOzs7O0c7O0k7OztJLG1COztJLEksVywrQjs7OzRCOzs7OztJO0k7Ozs7NkI7O1E7O1E7O1E7O1E7OztRO1M7O1k7O1k7O1ksTzs7WSxPOzs7Ozs7UTtTLE87O1E7OztHOztJOzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHO0k7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7OztJLE87OztjLEkscUI7YyxPO2E7OztHOztJLE87Rzs7SSxPLGlDO0c7O0ksTzs7O2M7YzthOztHOzs7SSxPOzsrQixPLDBCOzs7Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7O0ksTzs7aUMsbUIsd0I7OztHOztJO2E7NEMsd0I7RzsyQixhOztJO0ssTywrQztHOztJO2tDOzs7MkI7O087O087Ozs7UTtPO1E7O087OztROztXO2tEOztXO1U7OztXOzhCOztXO1U7USxXO1EsVzs7Ozs7O1M7Vzs7K0IsMEI7O2lDO087UTtRLDBCO087UTtRLHFDOzs7Ozs7Ozs7OztRLGU7OztPOztROzs7OzBCOzs7YTs7O2M7OzthOzs7Ozs7Ozs7UTs7O1E7OztpQzs7OztpQzs7UTtPLHNCOzs7TztRO1M7VzswQyx1QjtTLFE7OztTLE87UztRLHVDOztPOzs7USwwQix1QjtROzs7OEI7TyxzQjs7O08sNkI7O08seUM7Ozs7Ozs7Ozs7O1E7Ozs7a0M7O08sc0I7OztPLDZCOzs7OztRO1M7Ozs7Ozs7O2lDOztROzs7O2MsTzs7O3dCO3dCOzs7O3dCO3VCOzs7Ozs7TyxzQjs7MkI7Ozs7OztRO08sc0I7O087O1EsVTs7TzsrQjs7Ozs7Ozs7Ozs4QjtRO08sc0I7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7Ozs7Ozs7O1E7TyxzQjs7NEI7TyxzQjs7NkI7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7O087OztRLDRDOztvQztRO08sc0I7O087Ozs7UTtRO087UTs7TywwQztPLG1CLE87OzJCOztPLG9CLFU7Ozs7OztPOztnQzs7O08sa0IsTzs7Tzs7Ozs7O1E7c0M7UTs7aUM7O08sc0I7OzZCOztPLG1DO087UTs7Rzs0Qjs7SSxzQztJLHFCO0c7O0k7SSxxQjtHOztJOzs7MEI7OzJCOzs2Qjs7Tzs7eUI7ZTs7Rzs7SSxpQjs7STtHOztJOzs7MkI7OztPO1EsTzs7O2tCOzs7cUIsa0I7cUI7OztxQjs7cUI7O3FCOztxQjs7c0I7d0I7OzBDLG1CLFU7O3NCO3FCOztxQjs7c0IsTTtxQjs7Ozs7O3FCOztxQjs7c0I7d0I7OzsyQjsyQjswQjs7c0I7d0I7eUQ7Ozs7eUI7MEI7OzJCOzJCOzs7O3lCOztzQjtxQjs7d0M7O3FCOztzQixpRDtzQixZOzs7O3lCOztzQjtxQjs7cUI7Ozs7c0IsZTtzQjtxQjs2Qjs7aUI7Ozs7eUI7Ozs7OztRO08scUI7OzJCOzs7OzswQixpQzs7O087c0M7OztXOzs7O2lDLDRCOzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7STs7OztRLHNCOzswQjs7Ozs7O1M7USxxQjs7O0c7O0k7O0s7O00sTTtNO007TTs7OztLO007OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7OzRCOzsyQjs7UTs7O1M7VywwQztTO1EsbUI7Ozs7Ozs7O1kscUI7OztvQztTO1EscUI7O1E7Ozs7UztRO1M7Ozs7OztHOztJO3VCOztJO0c7O0k7SztPLHlDLGE7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7Szs7TTs7O1U7OztxQjtTO08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7O0s7OzZCOztJO0ssMEI7Syx3QztHOztJO0s7SyxNO0s7TztTLHlDLHFCOztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7STtLO007Ozs7OztZOzs7ZTtlO2M7Ozs7Ozs7SztNOztJO0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7OztJOztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7O0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7Ozs7cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJO0ssTztLLFE7Ozs7O00sRyx1Qzs7O0ksTTtHOztJLE8sMkI7Rzs7STtJLE87Rzs7STs0Qzs7Ozs7TTs7O0k7Rzs7STs0Qzs7O3FDO2tEOztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7O0ksSSxXLHNDOzs7OztNLE07Ozs7SyxNOzs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7VztZO0s7Ozs7OztNLE07Ozs7O0ssTTs7O0c7O0k7STtHOztJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJLE87Ozs7ZTs2RDtlO2M7O0c7O0ksTzs7OztlOztnQjs7OztpQixPO2lCLFE7Ozs7aUI7a0IsSTtrQixVO2lEOzs7O21CLHFCO29CLFc7b0IsTzs7Ozs7OztvQixLO3FCLFc7cUI7O3NCLE07OztxQixPOzs2Qzs7Ozs7a0IsbUI7bUIsVzttQixPOzs7aUI7O2dCLE07O2U7Yzs7Rzs7STs7OztJO0c7Ozs7OztJOzs7O0k7TTs7O1Msc0I7UyxPO1E7O0ssTTs7Ozs7O08sTTtpQjs7O007OztPLE87TyxPO087OytCOzs7Ozs7OztjO0k7SyxPO0ssUzs7STs7O0ksTzs7O2MsK0IsTztjLE87dUI7YTs7Rzs7STs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7VTtXLE87O1U7O1U7O1c7YTs7OEI7O1UsTzs7Ozs7Ozs7Ozs7OztVO1U7VzthOzs4Qjs7VyxVOzs7VyxPO1U7OzthOzs7Yzs7YSxzQjtZOzs7VTs7VTs7O1c7YTs7OEI7O1csb0I7VyxPO1csVztVLE87O1U7O1csTztXLE07O1U7VyxPO1c7YTs7O2dCO2dCO2U7Ozs7YztlLFE7OztjOzs7O2UsVztlO2dCLGM7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE07OztnQjtlOzs7Ozs7YztlLFU7OztjO2M7YTtVO1U7OztVO1c7O1ksVTs7OztZLE87WSxXO1csTzs7VSxJLGdDO1U7VTs7Ozs7OztNLFM7TyxPO007TztPO1M7OzsyQixPLDZCO08sTztPLE87TTtNOzs7Ozs7O0k7OztJO0s7Tzs7eUIsTywyQjs7SyxLO0ssZ0I7STtJO0c7Ozs7Ozs7Ozs7STtLO00sTztNLE87TSxPO00sTztNLEs7Szs7O0s7Ozs7OztLOztJO0k7SztPOzs7VSxvQjs7Vzs7OztZO1ksVTs7OztZOztZO2M7OztpQjtrQixPO2tCO29COzs7O2lCO2lCO2dCOztZO2M7Ozs7a0I7a0IsTztpQjtnQyxPLHNDOzs7OztXO1ksTTtZLE07VztZLE07Ozs7YSxXO2E7YTtjLE87YyxVOzthLE07OztZOzs7O1k7YTtlLHdDLFk7YTtlOzs7a0IsWTs7Ozs7b0IsRztxQixPOzs7a0IsTTs7aUI7Ozs7YSxNOzs7VztZOzs7Ozs7O1c7WSxVOzs7WTs7Ozs7O1c7VTs7O1M7Ozs7O0s7OztLOztNOzs7UztTO1M7UztVLE87VSxjO1U7b0I7Uzs7WTs7UztTLE07UTs7Ozs7Ozs7STtHOzs7SSxPOzs7YztlLFE7OztjO2U7Ozs7O2lCOzs7Ozs7OztpQixNOzs7Ozs7O2M7YTs7Rzs7STtLLFM7SyxnQjtJO3dCO0k7Rzs7STtLLEs7SyxPO0kseUM7STtHOztJO2lDO0ssc0I7STtLLE87STtJO0ssZTtLLGdCO0k7Szt5QjtJLFc7SSw4QjtHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7SSxZO3NFO0ksTTtHOzs7Syw0QjtJOztLO00sUztNO3dCLE07O0s7TTs7Uzs7O1k7WSxPO1c7Ozs7OztNOztTOzsyQixtQixPLHdCOztNLE07Ozs7Ozs7O0s7SztJOzs7O29CLE87TSxzQyxPO00sRzs7Vzs7OztLO007TTtROzswQixvQiwwQjs7TTs7K0I7OzsrQjtLLE87Ozs7O2U7ZSxPO2M7STs7SyxrQixNOzs7TSxvQjtNOztLLE87STs7SyxHO007TTtPO08sWTs7Tzs7bUI7TyxPOzs7O0k7O0s7TSxPO00sTztNLFc7SyxPO0k7O0ssVztLLFc7SztNO1E7Ozs7MEIsTywrQjtNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7Ozs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTtVO1k7OztlOztnQjtnQjtlO2M7O1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7Ozs7SSxPOzs7YyxPO3lDLE8sMEI7YTs7O2MsTyxjO2E7O0c7OztJO0s7Tzs7O1U7VSxPO1M7O0s7SztLO0s7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0k7O0ssWTtLOztPLG9CLE87Tzs7dUIsTywrQzs7TyxXO08sTzs7O08sb0I7Tzs7Ozs7Z0I7Tzs7TSxhO21CO00sZTs7O0s7Ozs7Ozs7OztJO0k7SztPOzs7VTs7Uzs7SztPOzs7VTs2Qjs7VTtTOztLO087OztVOztXOztVLHNDOzs7Ozs7Ozs7Ozs7VTtTOzs7O0s7O0ssVTs7TTs7OztPO1M7OztZO1k7Vzs7TyxPO08seUM7TyxPO007UTs7eUI7O08sZ0I7Tzs7O087OztVO1UsTztTOzs7OztLLFc7Szs7STs7Tzs7O1U7O1M7O0ksTztHOzZCLGU7NkIsZTs7SSxRO1U7YyxnRDtJO0s7NEM7O0k7SSxPO0c7NEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7O1MsTzs7O21CO21CO2tCOzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7Rzs7SSxrQjtHOztJLHdCO0c7O0ksTzs7Ozs7Yzs7YTtHOzs7OztLO007O0k7O0ssVztLO0s7STs7SztnQjs7STtvQiw4QjtJOzs7Szs7Ozs7ZTs7Ozs7O087O1EsTztROzs7Tzs7Tzs7O1E7O1E7VTs7OzRCLG1DO1E7Ozs7Tzs7Ozs7Ozs7O087O1E7UTs7Tzs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7OztPLE07OztPLE87USxNO087UTs7UTtVOzs7Ozs7OztROztRLFcsd0MsWTtPO3FDOztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087USxhOzs7Ozs7UTs7Ozs7Ozs7O1E7O1EsOEI7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7O087UTs7Ozs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTtROzs7VztXO1U7OztPOztRO1U7Ozs7Ozs7O1E7O087Ozs7O2lCOzs7OztPO1EsTTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7OztPOzs7Vzs7OztZOzs7Vzs7O1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztROztTO1MsVTs7O1ksc0I7WTthLE07OztZO1k7O1E7Ozt1QjtRO1MsSSxpRDs7Ozs7Ozs7Vzs7Ozs7O1U7VyxPO1csSTtVOzs7Ozs7Tzs7Ozs7O21COzs7O087O1E7UTtVOzt3QixzQzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7UTtRO1E7VTs7Ozs7YzthO2E7YyxXO2MsUTtjLFE7YztjO2E7WTs7Ozs7UTtRO1EsWTtPOzs7VTtVO1M7O087OztVO1U7Uzs7Tzs7UTtROzs7VztXO1k7OztnQixPOzt5QyxzQixhOztlO1k7Ozs7Ozs7Ozs7YyxLO2U7Z0IsTztnQjtrQjtxQjs7O2UsTTs7OztjO2UsVztlO2U7Ozs7Ozs7ZSxNOzs7Yzs7OzsrQjtZLE07OztVO1E7O1EsTzs7OztPO1EsTztROztPOzs7OztpQjs7Ozs7Ozs7O1M7Ozs7O1UsUTs7OztTOzRCOztTLGM7O1U7Ozs7YTs7OztpQixPO2dCOztXOzs7VTs7Ozs7Ozs7O1MsTTs7OztPOzs7UTtVOzs7O2M7YyxPO2E7NEIsTyxzQzs7Ozs7TyxXO087MkI7TztRO1E7Tzs7OztTOzs7Ozs7Ozs7Ozs7O087O087OztRLFU7OztRO1U7OzRCLE8sNEI7O1EsTztRLE87USxVOzs7USxHO1M7VSxPO1U7WTs7O2U7Ozs7O2dCLFE7Ozs7aUI7O2tCLE07aUI7Ozs7Z0IsVTtnQjs7ZTtjOzs7OztVLFc7VTs7O2EsTztZO1Usb0I7VSxPO1U7VSxtQjtVO1k7OztlO2U7Yzs7UztVLE07O1M7OztVO1k7OztlO2M7OztVOzs7Ozs7Ozs7Ozs7O08sTTs7O087O1E7UTtROztPOzs7OztpQjs7OztPOztRLEk7UTs7UTs7Ozs7Ozs7Tzs7UTtROzs7Tzs7Ozs7Ozs7O087OztRO1E7b0I7TyxNOzs7TyxNO2tDOztPOzs7USxXOzs7TztPO1E7O1EsVzs7USxNOztPO087Ozs7Ozs7Ozs7SSxPOzs7YztjLE87YTtHOztJLE87OztjOzs7Ozs7O2U7YyxPOzs7Ozs7YTs7O0c7O0k7OztJLE87OztjOzs7OztjLE87Ozt3Qjt5QjsyQjt5QjsyQjt5QixPO3lCLFE7Ozs7eUI7d0IsTzs7dUI7YTs7O0c7O0k7SztHOztJO0s7SyxLO0ssa0I7SyxXO0s7STtLO0s7O0ksd0MsTyxpQjtJLEc7Syx1QztJO0s7Tzs7O1U7Ozs7Ozs7OztVLGtCLHFDO1U7VyxLO1csTztXLFU7VzthOzs7Ozs7VzthOzs7Ozs7VTtTOzs7Ozs7STtHOztJO0ssaUI7SyxTO0s7SyxLO0ssa0I7SyxXO0s7SSx3QyxPLGlCO0k7RztHO0k7STs7Ozs7OztJO0ksVztHOztJOztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOzs7O0s7TTs7SSxJOzs7Syx5Qjs7SSxnQyxPLGtDO0k7Ozs7Ozs7STs7Ozs0Qjs7UTs7UyxPO1M7UztTLE87UTtRLE87OztRLE87UyxNO1E7Uzs7UyxVO1E7O2tCLGdDO2tCOzs7aUI7OztrQjs7O3NCLHdDLFk7a0Isa0I7aUI7O1E7Ozs7Uzs7O1MsTTtRO1M7Ozs7O1E7O2tCLGdDO2tCOzs7aUI7aUI7O2tCOztpQjs7UTs7OztTOzs7Ozs7O1k7Vzs7O1MsNEMsbUI7O1E7O1E7OztTLFk7OztZOzs7O2E7OztZOzs7O3NCLE87cUI7O1E7OztrQyxzQzs7UTs7UztROztrQjtrQjs7O2lCOzs4QiwwQjs7UTs7UztRO3VDLDBCOztROzs7O1M7Ozs7YTthO1k7WTtXO1EsZTtROzs7WTthLE07WTtZO2E7OzsrQyxTOzs7O3lDO3VDOzs7WTtXO1Msc0I7UyxzQjs7O1M7Ozs7O2EsTTs7Ozs7Ozs7Ozs7O1U7VyxNO1U7Ozs7O1U7Ozs7USxPOzt3Qix3QjtxQjt5QixxQztJLGM7a0IsTTs7O3NCOzs7Szs7STtLLE07STs7Tzs7O1U7Ozs7Ozs7Uzs7O0k7OztJOztLLE87SztLO0k7SztNO007Ozs7Ozs7c0IsUztLO0s7Szs7Ozs7O0s7Szs7Ozs2Qjs7O0k7SSxPOzs7Yzs7Ozs7Ozs2QjtJLE87OztjOzs7ZTtnQixNOzs7YzthOzs7RztJOzs7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87STs7O087TztPLE87TTs7STtJO0ksTztHOztJO0k7Ozs7Ozs7O1U7OztXO2E7OzRCLDhCOztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7O2U7aUQ7WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLHNDO1U7b0I7OztzQjs7Ozt1QjtzQjt1Qjt3Qjt3Qjs7Ozs2Qjs7OztpQztnRjtpQztnQzs7Ozs7c0I7cUI7Ozs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7VzthOzs7Z0I7Z0Isd0I7OztlOztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7VztXO2E7OztnQjs7O21COzs7b0Q7O21CO21COzttQjs7bUI7O3VDOzJCOztlOztVO1c7WTtjOzs7aUI7aUI7OztnQjs7O1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7OztJO0k7Ozs7O1EsTzs7O2tCOzs7O3FCLE87OzJDLDhCOzs7O3FCLE87OzhDLGlDOzs7Ozs7OztxQixPOzs7K0I7K0I7OEI7OztxQjs7cUI7Ozs7NkI7O2tCO2lCOzs7Ozs7UTtTLE87O1E7OztRO2dCOzs7Rzs7STs7O0ksWTs7STtLLE87O0k7Rzs7STs7K0IsOEI7O0ksVTtJLE87OztjOzs7OztlLFE7O2UsTTs7O2M7YTs7Rzs7SSxPOzs7YyxlOztlLE07O2M7YTs7Rzs7STs7Ozs7TTs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VTs7YTs7OEI7O1MsTzs7Uzs7O1UsVTs7O1U7WTtVLE87Uzs7WTs7NkI7O1MsTzs7OztLLE87O0c7O0k7Szs7TTtLLEksOEM7Ozs7O00sTTs7Ozs7Ozs7MEI7STtJLEksZ0Q7Ozs7O0ssTTs7O0c7O0k7STtLLHFCOzs7Ozs7O1M7Ozs7Ozs7O1M7O1U7O2E7OzhCOztTLE87Ozs7OztTLGtDO1M7O1M7Ozs7VTtTOztLLE87O0c7O0k7Ozs7OztPOzs7UTtRLGM7ZTs7a0I7Ozt3Qjs7Szs7O3lCLE87STs7Ozs7Szs7Ozs7Ozs7Yzs7OztLOztNLHVCO007Ozs7OztJLE87Rzs7STtJLE87Ozs7O2M7ZSxTO2UsRztnQixXO2UsWTs7Z0I7OztpQjtpQixZOzs7Ozs7ZSxXO2UsVzs7OztHOzs7STtJO0k7STtLLE07SztPOzs7VSxZOztXOzs7aUI7WSxVOzs7VztXOztVLE07Uzs7OztLLFU7OztLO2U7STtLLGM7SyxXO0ssa0I7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Tzs7Ozs7Ozs7Ozs7OztLOztROzswQixpQzs7O0ssTztJOztLO00sTztNLEs7Szs7Ozs7Ozs7OztXO2E7OytCLGlDOztZOzs7Ozs7OztlLE87O3dDLHNCLG9COzs7O2U7ZSxPOzt3QyxzQixvQjs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7O0k7SztLO007Ozs7VTs7O2E7MkQ7YTtZOztpQjs7b0M7Ozs7O1M7O1Msa0M7UyxXOzs7aUI7OztJO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87OztTLE87O2tDLGtCLGU7Ozs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7O0k7O2M7NkQ7YzthOztHOztJO0k7Ozs0Qzs7OztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztJOzthLHdDLFk7Rzs7STtJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFk7Ozs7SyxnQyxVOzs7Ozs7TSxjOzs7O08sc0MsTztPO1EsVztRO1MsVztTO1UsVztVO1csVztXLFMsTzs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLGtCLE87O0ksSSxXLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7RzswQztHOztJLHlCOztHOzs7SSxTOzs7Szs7O007TTtLLE87Ozs7O0s7OztNO00sUztNLE07SyxPOzs0Qjs7OztJLHNCO2tEO0ksb0I7SSxPOzs7SSw4Qjs7Ozs7Ozs7O1E7O1MsVztTLEk7O1M7Z0I7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztJOzs7SSxTO0k7Rzs7STtLLHVCO0s7Tzs7Ozs7VTtTO0k7STtHOztJOztLOztLO0s7O0s7OztRLFc7UTtPO0s7STtJOztLOzZCOztJOztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7OztVO1c7WTs7OztXOzs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7VTs7MEIsbUM7O1EsYztRO1U7Ozs7YTtjO2UsUTs7OzthO2M7Ozs7Ozs7Ozs7O2M7Yzs7Ozs7OztjOzs7aUI7aUI7aUI7a0IsaUI7a0I7a0IsWTtpQjs7Z0I7O2E7WTs7YTthLG1DO1k7OztPOzs7Ozs7Ozs7Tzs7OztRO1E7Ozs7Ozs7O087O29COztTO1U7VSxPO1UsYztpQjtROztXOzs7YyxJLGlCLE87YyxPO2E7OztRLEk7Ozs7Uzs7VTtVLGtCO1U7UyxNOzs7O087Ozs7aUI7OztvQjtvQjttQjs7Ozs7OztPO1EsTTtPOzs7Vzs7WTtjOzs7OztpQjtrQixTO2tCLEcsc0M7a0IsWTs7O21CLEk7Ozs7cUIsTTs7OzttQixhOzs7OztrQjs7O1csTzs7O3FCO3NCO3dCOzswQyxnQzs7c0IsSztxQjtvQjs7VTtRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO1c7WTs7Ozs7Ozs7Ozs7Ozs7O1U7VztZOzs7Ozs7Ozs7O087UTs7VyxPOzs7cUI7cUIsTzs7b0I7OztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQjs0QztnQjtlO1k7Ozs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXO1k7YztnQjs7O21COzhCOzttQjtrQjs7O1k7WSxPO1k7OztlOzs7O1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7VTtZOzswQixXLHlCOztVLE87VSxPOztVOzthOzsrQix5Qzs7VTtXOztjOzZDLHVCO1c7WTthO2U7O2dDOzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRO1E7VTs7OzthOzs7ZSxzQjtlOztpQixXO2lCO2lCLEk7Ozs7Ozs7Ozs7ZTtnQjtpQixPO2lCLFU7OztpQjtnQjtnQjs7OzthOztjLFk7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzttQjtxQjs7O3dCO21DOzt3QixrQjt1Qjs7bUI7bUIsWTtrQjtpQjtjLGdCO2M7ZSxXO2UsUTtlLE87ZSxVOzs7Ozs7Ozs7Ozs7O2UsRztnQixTOztnQjs7O29COzs7Ozs7Ozs4Qzs7bUI7aUIsTztpQixXOzs7Ozs7Ozs7O29CLG1CO3FCO3FCO3NCO3NCOzs7eUY7O29CO3FCLG1EO21COzs7b0I7OztvQjtxQjtxQjttQyxzQzttQjs7OztrQixNOzs7Ozs7Ozs0Qjs7OzttQjs7cUI7Ozt3Qjt3QixpQjt1Qjs7O3NCOzs7eUI7d0I7O29CO3FCOzs7Ozs7a0IsTTs7O2lCO2tCOzs7OztpQixjOzs7Ozs7OztrQixhOzs7aUM7a0I7bUIsZ0I7bUI7O2tCO21COzs7Ozs7O21CLGU7Ozs7bUI7Ozs7Ozs7O2dCOzs7Ozs7OztjOztZOzs7Tzs7Tzs7O1E7VTs7OzRCOzRCLGdDO1E7Ozs7TztTOzt1Qiw0Qzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087UTtVOzs0QixPLDJCOztRLFc7Ozs7VTt1QztTO087UTtVOzsrQiw2Qzs7O1E7UTtjLHdDLFk7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxVO1UsTztVLFU7Ozs7Ozs7OztZOzthO2E7O1k7Ozs7UyxNOztRLE07Ozs7O1E7O1M7Vzs7NEI7O1M7VywyQyxjO1MsTztTLGtCO1MsTTtTO1E7Ozs7O2tCOzs7Ozs7TztRLE07O1E7O1M7Vzs7NkIsMEM7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7UTs7UyxPO1M7Vzs7OztjLFc7YyxPO2E7Ozs7Tzs7O1E7O1c7O1E7UTs7Ozs7YTs7Ozs7OztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7Ozs7TztjO1E7O1csTzs7O3FCOztvQjs7VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTs7OztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7UztXOzs7YyxJOzs7OztlO2dCO2tCOztvQyxvQixjOztnQjs7Z0IsTTtlOztnQjtrQjtpRCxZO2dCOzs7O2tDOztvQixLO3FCO29COzs7OztnQjtlLE07Ozs7YzthOzs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O1E7VTs7aUMsdUI7OztRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Ozs7VTt5QztTO087UTtVOzsyQiwrQzs7UTtPOzs7OztpQjs7OztPOzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087O1E7Tzs7Tzs7O1E7UTtPOztPOzs7O1E7UTs7OztpRzt5Qjs7TztPOztPOzs7Ozs7O1E7O1E7OztnQzs7O1MsTTtROztTLE87UyxPO1MsVzs7O3VDLGU7Ozs7OztPLEksaUQ7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztROztxQztRO1EsTztPOzs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7O087Ozs7Ozs7OztPOzs7UTtVOzs7YSxJOzs7Ozs7Ozs7Ozs7b0IsSSxTOzs7OztxQjs7d0I7O29ELHFCOzs7cUIsTTs7O29CO3FCLFE7Ozs7OztvQixJLFc7Ozs7OztxQjtzQixPO3NCLE87O3NCO3FCO3FCOzs7O29CO3FCLFE7Ozs7Ozs7Ozs7O21CLEksVzs7Ozs7b0I7O3VCOzttRCxxQjs7O29CLE07OzttQjtvQixRO29CLFc7Z0M7Ozs7OztjLEksVTs7Ozs7O2U7Z0I7aUIsTztpQixROzs7O2tCOzs4QjttQjs7O3NCLGE7Ozs7OztzQjs7Ozs7Ozs7Ozs7ZSxNOzs7YyxJOzthO1k7O2E7YSxPO1k7Ozs7USxXOzs7OztXO1ksTztZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087USxRO1E7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7O087OztVO1U7WTsyQyw4QjtXLE07O1U7Uzs7O087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2MsTztjO2E7Ozs7OzthOztnQjs7NkMsc0I7OzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxLO1E7VTs7OztjO2MsTzthOzthO2M7Z0I7OzttQjtvQixROzs7bUI7bUI7O29CLFE7b0IsTztvQixTO29CLGE7b0I7OztvQjs7cUI7dUI7Ozs7Ozs7O21CO2tCOzs7OztjO2E7WTs7Ozs7Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087OztRO1E7Ozs7OzswQjs7O3lCOzs7Ozs7O087Ozs7Ozs7Ozs7OztROzs7Tzs7USxRO1EsYTs7OztVO3lDO1M7TyxJLGlEO087Ozs7O2lCOzs7O087OztRO1U7OzthLFk7YTs7YyxRO2MsTTthO1k7O2E7YSxPO1k7Ozs7Ozs7VyxXO1c7OEI7VTtPO1EsTztRLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7OztZOzs7ZTs7OztvQjtvQjs7bUI7O21CO29CO3NCOzs7eUIsTzt3Qjs7eUI7eUIsTzt3Qjs7O29CO21CO2tCOzs7O2EsTzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7O087OztPOzs7UTs7Ozs7O2E7YTtZOzs7Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsSztRLFc7OztRO087Tzs7Tzs7Ozs7UTtVOzs7YTs7Yzs7O2MsVTtjLFc7Ozs7O2E7O2M7OztlLEs7O2U7ZTtpQjs7Ozs7ZSxTOzs7OzthO2MsaUI7YztnQjs7YyxZO2MsWTtjO2M7Ozs7aUI7O2MsUTthLEk7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7VztZO1c7Ozs7OztZO2M7OztpQjtrQjs7O2tCLFU7a0IsUztrQixVO2tCLFk7a0I7b0I7a0I7b0I7O2lCLEk7Ozs7OztrQixNOzs7aUI7OztnQjs7Ozs7Ozs7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7O1ksTTs7O1c7Vzs7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7OztJOzthO2E7WTs7YTsyQztZOzthOzs7NEQ7O2E7WTtHOzs7Ozs7STtLOztNO1E7OztXO1ksUTs7OztZLFU7Ozs7Vzs7O1U7Ozs7Ozs7O0s7TTtPLE87TyxPO08sVTtNO007TTs7Ozs7O00sTTs7SyxXO0s7YTs7OztJO0ssVTs7OztLLEs7SztPOzs7O1c7VyxPO1U7O1U7VyxROzs7VTtTOzs7O0s7SyxVOzs7Ozs7Ozs7TSxHLDRCLDBEOztLO2E7Z0I7TTtPO1EsTztlO087UTtRO1EsSTs7Ozs7UTs7Ozs7TTtPLGM7TztPOztnQjs7Ozs7OztPLE07OztLO00sVTs7O0s7SyxJOzs7O00sc0IsVztNLE07Ozs7O0k7OztJOztPOzsyQixxQzt5QixPLHdDO0k7Rzs7O0k7Szs7TTs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7SSxnQztJO0c7O0k7O087VTtVO0ksTzs7OztjO2UsTztlLFE7ZSxROzs7ZSxVOzs7ZSxPOztlLFc7ZSxHLDJDO2UsVztlO2UsWTs7Ozs7aUMsTzs7O2UsTztjO2MsVTtjO2M7YTtHOztJOztLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJOzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7O0k7Ozs7O0s7SyxtQjtJLE87Ozs7YztlO2dCLE87Z0IsUTs7Ozs7OztlOzs7Ozs7Ozs7Ozs7OztlLE07Ozs7YyxHO2UsUztlO2dCO2dCOzs7OztpQixNOzs7Ozs7OztjO2E7O0c7Ozs7Ozs7Ozs7STs7Ozs7O0k7OztNO087O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7O1k7YSxjOzs7Ozs7O1k7Vzs7WTs7Ozs7O1k7VzsyQixTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Tzs7Ozs7Ozs7Ozs7Szs7OztLOzs7TTs7Ozs7O1c7WTs7Ozs7O2dCOzs7Ozs7OztXO1U7Ozs7Ozs7Szs7O1E7dUM7TztLOzs7Ozs7O0k7Ozs7O0s7Ozs7OztLLEs7TSxNO0ssaUI7SztNO007Ozs7O08sTTs7Ozs7OztPOztRO1E7O1U7Ozs7O0s7TTs7Ozs7O0k7Szs7Ozs7Ozs7OztVO1c7Ozs7Ozs7Ozs7Ozs7VztVO1M7Ozs7Szs7Ozs7Ozs7TSxPO00sVztLOzs7UTtxQztPO0ssVztLO007Tzs7O087Uzs7MEI7O087Ozs7SyxTOzs7O2tCOzs7TTtPO087OztLOzs7Ozs7Ozs7SSxNOzs7STtLO087O3lCLG9DOztLO0s7OztNO00sTTs7Ozs7Ozs7O0k7SyxTOzs7O0s7Ozs7Ozs7OztJO0c7O0k7Ozs7SztLLG1CO0s7Tzs7OztVO1c7YTs7OztnQjtpQjttQjs7OztzQjt1QixJOzs7c0I7cUI7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7Ozs7OztpQixNOzs7Z0IsZTtnQjtlOzs7OztXO3dDO1k7O3lDO1c7OztXLE07O1UsTTs7Uzs7Ozs7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7Szs7SztNO007TztTOzs2QixPLG1DOzJCLDhCO087Uzs7OzthOztZOztZOzs7YSxPO2E7WSx1QjtZO1c7OztPLE87Tzs7Ozs7Ozs7USxNOztNLE07OztJOzs7OztLO007OztNO2dCOztLLE87OzZCOztJO0k7Ozs7UztVLEs7VSxROzs7O1Usd0IsTztVOztTO1E7SyxHO007TyxPOztTOzsrQixPLDRCOzs7Ozs7Ozs7STtLOztLO0s7O0k7Ozs7SztPOzt5Qiw4Qjs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7O1M7OzBCOzs7Ozs7O1E7TTs7O007O1M7OztZO1ksTztXOztLO2M7SztNOzs7Ozs7Ozs7OztNOzs7O1U7Ozs7OztNO007TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7STs7d0I7SztPOzs7O1U7VzthOzs7O2dCO2lCLFE7OztpQjs7Z0I7ZTs7Z0I7Z0I7Z0I7OzswQjsyQixPOzs7MkIsTzswQjs7Ozs7eUI7ZTs7OztVO1M7Ozs7O0ssVTs7SyxNO0k7OztLOztLLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0k7SyxPO0s7Tzs7O1U7VTtTOzs7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7O087dUMsOEI7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLLE87STtLO00sTztNLGM7Ozs7Ozs7Ozs7Ozs7OzthOztLLGtCO0s7O3VCLDZDO0s7O0k7STtJO0c7Ozs7Ozs7Ozs7O0k7SztPOzt5QixrQixZOztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXLFc7Vzs7O2Msa0IsUTs7ZSxNO2M7YTs7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7SztPO0s7TztLOzs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztJLGtCO0ksTzs7OztjO2UsTTtlO2U7ZTtpQjs7OztxQjtxQjtxQixPOzs7K0I7K0IsTzs7OEI7O29COztvQjtxQjtxQjt1Qjs7OzBCOzs7OzJCOzZCOzs7Z0M7aUM7bUM7Ozs7c0MsTzs7cUM7aUM7aUMsVztpQzs7aUM7Ozs7O2lDO2dDO2dDOzs7Ozs7Ozt3Qzs7Ozs0Qzt5SDs0QzsyQzs7K0I7O2dDO2dDLE87OytCOzBCOzBCOzs7Ozs7Ozs7OzsyQixPOzBCOzs7Ozs7Ozs7eUI7O3FCO3VCOzt5QywwQixpQjs7cUI7dUI7OzswQjswQjt5Qjs7Ozs7c0I7dUIsa0I7O2tDOzs7cUI7c0IsOEIsVzs7OztvQixhOztxQixPOzs7K0I7K0I7OEI7O29CO29CO29CLEc7cUI7O3dCOzt5Qzs7cUI7cUI7O29COztrQyxPLGlCOzs7cUIsVztvQjs7O3VCO3VCLE87NEQ7O3NCOztvQjs7Ozs7bUI7Ozs7O2UsVztlO2lCOzs7b0IsTzs7OzhCOzs7Ozs7OytCO2lEOytCOzttRCxlO21ELGU7OzsrQjs7OztrRDs7Ozs7OEIsTzs7Ozs7Ozs7NkI7O21CO2tDO2U7YztlO2dCLE87K0I7Ozs7ZTtnQjtrQjtnQjs7bUIsWTs7bUI7O2dCO2tCOzs7cUI7Ozs7O3NCO3NCLFE7OztzQixNOztxQixtQjtxQjtvQjs7Ozs7O2U7Z0I7a0I7OztxQjtxQjtvQjs7Ozs7YztlO2lCOztrQzs7ZTtpQjs7a0M7Ozs7O2UsTTs7Ozs7OztlOzs7a0I7OzttQjtrQixPOzJCOzs7OytCOztnQzs7OztpQztpQyxPOzs7O2tDOzs7cUM7OztzQztzQyxvQjs7b0M7O2lDOzttQzt3Qzs7Ozs7Z0Q7OztpQztrQzs7OztzQzs7a0MsTztrQyxRO2tDLE87OztrQyxPO2lDOzs7Ozs7Z0M7OytCOzhCOztpQjs7ZSxPOzs7Ozt5Qjt5Qjt3QjtjO2M7ZSxrQyx1Qjs7ZTs7O2U7ZTs7Yzs7O2M7eUM7YTs7OztJOzs7SztPOzs7VSxXO1M7O0k7OztlOztrQjs7O3FCO3FCO29COztlLE87Yzs7Ozs7Ozs7YztjOzs7Ozs7OztjOzs7O2M7Ozs7YTs7Rzs7O0ksTzs7Ozs7YztlOzs7O2U7Ozs7ZSxPO2UsUztjO2tDO2M7YTtHOzs7Ozs7Ozs7STtLLFE7SztPLDJDOztLO087Ozs7VztXOzs7YyxvQjtjLGM7YTs7O1c7VyxPOzs7cUI7cUI7O3FCLHlCO3FCOztvQjs7O1U7O1UsOEI7VTtXO2E7OztnQjtpQjttQjs7cUMsTyw0Qjs7aUI7aUIsa0I7aUIsVzs7OztpQixPOzs7OzsyQjs7OzBCOztnQjtpQjttQjtpQjs7O2lCOztnQjtpQjs7O29CLFk7Ozs7c0I7Ozs7O3VCLE87Ozs7OztvQjtvQjs7bUI7OztnQjs7O21CO21COzhCOzs7O2tCOztnQjtlOztnQjtnQjtnQixPOzt1QyxxQzs7ZTs7Ozs7O1c7VzthOzs7Z0I7OztpQixPO2dCO2U7O1U7eUMsTyxpQjs7O29ELGU7OzBELGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1c7VzthOzs7Z0IsTzs7Ozs7MEI7MkIsTzsyQixPOzBCOzs7MkI7NEIsTzs0QixPOzJCOzs7Ozs7OzBCO3lCO2U7O1U7VyxxQjt5RDtXOzs7O1c7OztnQjs7YSxNOzs7O2U7OztrQixzQixPO2tCLE87OzRCO2lCOzs7Ozs7O1U7VztXO1c7YTs7O2dCLE87Ozs7OzBCLGlDOzBCOzJCOzJCOzJCLE87MEI7Ozs2Qjs4QixLOzhCLE87OEI7OEI7NkI7Ozs7NkM7c0Q7OzhCOztpQzs7aUM7O2tDLE87aUMsTztnQzs2QixPOzs7O3VDOzs7Ozs7O3VDLFc7dUM7Ozs7c0M7NEI7OzBCO3lCO2U7OztXO2E7OztnQjtnQjtnQjs7aUI7aUIsUTs7aUI7OztrQjtvQjs7O3VCO3NCOzt1Qjt1QixPO3NCOzs7a0I7b0I7Ozs7O3VCO3NCO2lCOztnQjs7bUI7Ozs7O3NCO3NCO3FCO2dCO2U7Ozs7OztXO1ksVTs7O1c7Ozs7NkIsTyx5Qzs7VTs7YTs7O2dCO2dCO2U7OztVOzs7YTthLE87Ozs7O3VCO3dCO3dCLFM7dUI7dUI7c0I7WTs7O1U7Ozs7O2tCOzs7cUI7Ozs7O3NCLE87cUI7b0I7O1M7Ozs7O0ssSTtLO087OztVO1U7Uzs7O0k7Szs7O1Esb0I7Ozs7WTs7K0M7O1EsTTtPOztJOzs7TztPO007O0k7STs7O0k7Szs7eUIsZTt5QixlOzs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtLO087Ozt5Qjs7VTtVO1M7Szs7Szs7TTthO0s7O0k7Rzs7SSxPOzs7O2MsTzthO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7YyxtQjs7YzthO0c7O0ksWTtJLG1CLFE7Ozs7Ozs7SztNO1E7O1c7OzthOzs7ZTtNOzs7UyxPOzs7TTs7O08sTztNLFc7O0s7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJLE87Ozs7O2M7Ozs7Ozs7O2E7O0c7O0ksSztLLE87STtLLE87SyxPO0ksTztHOztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Ozs7Ozs7O1EsTzs7USxPOzs7USxPOzs7USxPOztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsVztpQixPOztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7Ozs7aUI7O2tCLE87aUI7Ozs7Ozs7O2lCO3lCO2lCLHVCO2dCOzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OzthLG9CLFE7OzhCOzs7Ozs7Ozs7Tzs7Ozs7OztrQjs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztRLE87UTtVOzs7YSxtQjs7YTtZOztPOzs7Ozs7Tzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7aUI7a0IsTztrQixPO2lCLE87O2dCOztPOzs7Ozs7USxVOztRLGM7Ozs7OzswQjs7Ozs7UTtTOztZO1c7Uzs7UztTO1M7O2tCOztTLFc7UyxNO1EsTzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROztXLFc7VyxPO1U7UTs7VzttQjtXLE87VTtPLE87OztPLHNCLE87TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7aUIsTzs7Ozs7MkI7MkIsRzs0QixXOzRCOzs7Ozs7Ozs7OzRCOzZCLE87Ozs2QixPOzZCLE87NEI7Ozs7Ozs7OytCOzs7Ozs7OzsyQjswQjtnQjs7O087Ozs7O1EsWTtRLFM7TyxPOzs7OztpQixPOzs7Ozs7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLE87OzBCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsVztpQjtpQjtnQjs7OztPLE87Ozs7O2lCLE87Ozs7OzJCOzs0QixPOzJCOzsrQzs7MkI7MEI7Z0I7Ozs7TyxPOzs7OztpQjtpQjtnQjs7O08sbUIsTztPLE87O08scUIsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87TyxPOzs7Ozs7Ozs7OztPLE87Ozs7O2lCO2lCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsTzs7Z0I7Ozs7TyxPOzs7TyxPOzs7OztpQjs7Ozs7OztvQjtxQixXO3FCLE87cUIsTztvQixPOzttQjs7b0IsTzttQjs7MkI7Ozs7Ozs7Z0I7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7OztROztXO1ksTzs7WSxXO1ksTzs7O1csVztXLE87Ozs7Ozs7TztRLDRCOzs7USxPO08sTzs7Ozs7Ozs7aUI7O3FDOzs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7TyxxQixPO08sTzs7O087OzJCOzs7O2E7OzsyQjs7MkI7OzJCOzsyQjttQzs7TyxPOzs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7UTs7O1csTzs7USxPO1EsTztPLE87Ozs7Tzs7Ozs7OztpQixPOztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztROztXLFc7VyxPO1U7UTs7Vzs7O1k7WTtjO1csTzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7OztpQjs7O08sc0IsTztPLE87Ozs7SSxPOzs7OzZCLDJCO0c7Rzs7O007O087O3FDOztNO0s7Ozs7STsyQjtHO3NDLGtDOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOzs7USxNO087SSxvQjs7Ozs7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxNO0ksTzs7Ozs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7O2U7YztjOzs7aUI7OztrQixVOzs7aUIsRztrQixNOztpQjtrQixVOzs7a0IsTztpQjtpQixXO29CO2tCO21CLE87bUIsTztrQixNOzs7aUI7a0I7b0I7Ozt1Qjt3QixNO3dCO3VCLEksc0M7Ozs7Ozt3QixNOzs7c0I7OztrQjtpQjtpQjs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsVztrQjtpQixJOzs7O21CLE07Ozs7aUI7O29COzs7Ozt1QixPOzs7O3NELDhCOztrQyxPOzs7OzJELGEsa0I7aUM7aUM7Ozs7b0M7OzhDOzhDOzhDOzhDOzZDOzs7Ozs7OztvQzs7OEM7K0MsTTsrQzs4Qzs4Qzs2Qzs7Ozs7Ozs7b0M7OzhDOytDLE07K0M7Ozs7K0M7O2dELGM7K0M7K0M7Z0QsTTtnRDtnRDs7O2lEOzs7b0QsSSxNLHFDO29ELEk7Ozs7OztxRCxNOzs7Ozs7bUQ7OytDOzs4QzsrQyxNOytDOzhDOzhDOzZDOzs7Ozs7b0M7OzhDOytDOzs7OEM7NkM7OztvQztvQzs7O29DLE07K0Q7Ozs7O3NCO2lCO2lCO2tCO2tCO2lCOztpQjs7OztrQixNO2tCO2tCO29CO3VCOztrQjtrQjtpQjs7O2lCLE07NEM7OztpQjs7O2tCLFU7OztrQjtpQjs7YTtHOztJO0k7SztLLE87STs7Ozs7Ozs7OztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7SztPOzs7VTs7OztXLE87VztXO1U7Uzs7Ozs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7O0s7Tzs7Ozs7VSxPOzs7b0I7Ozs7Ozs7OztxQjtxQjtvQjtxQixPO29CO29COzs7Ozs7O3VCOztpQzs7O2lDO2lDO2lDO2tDLGM7a0MscUI7a0Msb0I7a0M7b0M7a0M7b0M7aUM7Ozs2RDs7O3lDO21DOztxRDttQzs7eUM7bUM7MEQ7bUM7Ozs7a0M7bUMsTzttQyxjO2tDO21DLE07OztpQztrQztvQztrQztvQztrQztvQzs7O3VDOzs7Ozt3Qzt3Qzt3QyxLO3dDO3dDLFM7dUM7c0M7Ozs7Ozs7a0M7b0M7Ozt1QyxzQjtzQzs7OztrQzs7bUM7bUM7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7O2tDO2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7O2tDOztxQzs7O3dDLE87dUM7cUQscUM7a0M7Ozs7dUMsVzs7Ozs7b0M7O3FDO3FDO3FDLEs7cUMsUzs7Ozs7Ozs7Ozs7Ozs7O2tDO21DOzs7Ozs7Ozs7bUM7a0M7Ozs7Ozs7OztpQzs7O3VCOztpQyxHO2tDLE07Ozs7Ozs7aUMsRzs7bUM7OztrQyxNOzs7Ozs7O2lDOztvQzs7O3VDLE87c0M7O2lDOzs7O3NDLFc7Ozs7O21DOztvQztvQztvQyxLO29DLFM7Ozs7Ozs7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7OztrQztrQztvQztrQztvQztpQzs7Ozs7Ozs7O2dDOzs7Ozs7Ozs7d0I7O2tDO21DLFE7bUMsTTttQztrQztrQzttQzttQztrQzs7Ozs7Ozs7O2lDOzs7dUI7O2lDLEc7a0MsTTs7O2lDLEc7O21DOzs7a0MsTTs7Ozs7Ozs7O3FDOztpQzs7O2tDO21DOztvQyxRO29DLE07Ozs0QztrQzs7O21DLGM7Ozs7O3VDO3dDLE87d0MsTzt1Qzt1QyxXO3VDOzs7dUM7OztnRDt3QyxNO3VDOzs7Ozs7bUMsTTs7Ozs7Ozs7bUMsTTs7Ozs7Ozs7a0M7bUM7bUMsZ0I7bUM7Ozs7Ozs7OzttQzttQztxQzttQztxQztrQzs7Ozs7Ozs7OztpQyxNOztnQzs7Ozs7O3VCOztpQztrQzs7O2tDO2tDO2lDOzs7Ozs7Ozs7Z0M7Ozt1Qjs7aUM7a0M7a0MsZ0I7a0M7a0M7aUM7Ozs7Ozs7OztnQzs7O3VCO3VCO3dCO3dCO3VCOzs7Ozs7Ozs7Ozt1QixNO2tEOzs7Ozs7UztLO0ssUzs7STtJO0k7O087OztVLFc7VSxPO1M7Ozt3QjtLLE07O0k7STs7SztPOzs7VTs7Ozs7Ozs7NEIsZTs0QixlO1c7VyxPO1c7Ozs7OztjO1UsTztTOzs7O087OztXO1c7O2M7Ozs7Ozs7O2U7aUI7OztvQjtvQjs7bUI7OztjO2U7O2dCO2tCOzs7cUI7cUIsTztvQjs7O2dCLEs7Z0Isb0IsZTtnQjtnQixPO2dCLDZCOztrQjs7OztjO2U7Ozs7O2M7Ozs7Ozs7O2U7Ozs7O2U7ZTs7OztjOzs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7ZTtlOzs7O2M7Ozs7OztlO2U7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsSztxQjtxQixPO3FCLFk7cUI7dUI7OzswQixPOzt5QjtxQjtxQjtvQjttQjs7O2M7Ozs7O2U7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsWTtxQjtxQjt1Qjs7cUIsWTtxQjt1Qjs7OzBCLE87eUI7cUI7b0I7bUI7OztjOzs7O2U7Ozs7VztVOzs7O0ssVztJOzs7OztJOzs7SSxPOzs7OztjOzthO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPO1E7VTs7MEIsTyw0Qzs7USxVOzs7USxTO1EsTztPO08sVztVO1E7UyxPO1MsTztRLE07OztPOzs7VTtVO1csVztXOzs7Ozs7VyxNOzs7Uzs7O087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7O087OztRO1U7OzthLE87O1k7O2E7YTs7YyxPOzthLE87WTs7Ozs7UTtVOzs7YTs7O2M7YyxLO2MsTzs7YyxXO2E7OztnQzs7Ozs7O1k7O1EsTztRLFE7UTtVOzs7Ozs7O1E7VTs7O2E7O1k7USxPO087Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7TyxTO087OztRLGM7Tzs7Ozs7Ozs7O087USxNO087UTtVOzs7YTs7WTt5QixvQzs7Ozs7O1E7OztTLEc7O2M7O1E7UyxPO1MsTzs7Uzs7WTs7OEIseUM7O1M7VTs7YTs0Qyx1QjtVO1c7WTtjOzsrQjs7WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7Ozs7YTs7YyxtQjtlO2dCLEs7Z0IsTTtnQixNO3VCOzs7eUI7O2E7WTs7O2EsVztZOzs7O1csTTs7Ozs7OztxQjs7OztZOztjOzs7aUI7aUIsaUI7Z0I7Ozs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7UztXOzs7YztjO2E7OztTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1EsTztRO1U7OzthOzs7O2M7YyxLO2M7Z0I7OztrQyx1Qzs7YyxXO2M7OzJCOzs7Ozs7YztjLE87YyxPO2E7O3FCO1k7Ozs7O1E7O1Esb0I7Tzs7Ozs7Ozs7Tzs7O1E7VTs7OztjOzs7ZSxPO2M7YyxXO2MsTzthOzthO2M7Z0I7OzttQjs7OzttQjttQjtrQjtjO2dCOzs7bUI7bUI7bUI7a0I7YTtZOzs7USxROztRLE07O087UTs7OztRLE87USxPO087Tzs7Ozs7Ozs7O08sTTtrQzs7Tzs7O1E7UTtVOzs7O1U7UTs7Tzs7O0c7SSxNO0ksYTs7Ozs7STtJOzs7O1E7OztTO1c7YztjO1M7UztRLE87Ozs7O2dCLE87OztHOztJO3VCLE87STs7O0s7TztVO1U7SztLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1c7Ozs7WSxPO1c7VyxPO1U7O1U7OztXO1ksZTtZOzs7OzthLE07Ozs7VTtXLFk7VzthOzsrQixvQixjOztXO1U7OztXO1ksTTtZLE87Ozs7OztXLE07O1UsaUMsTztVO1M7Ozs7Ozs7SyxVOzs7SyxTO0ssTTtLLE87STtJO0ssVztLOzs7OztNLE07Ozs7O0ksUztJLEk7Ozs7SywyQjtLLE07O0ksVztJO0k7SyxVOzs7SyxPO0k7SyxXO0s7Ozs7O00sTTs7OztJLEk7Ozs7SyxrQjtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7O0s7OztROzs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7O0k7Ozs7STs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztPOzs7VTtXLE87VyxPO1csTztXLE87VTs7a0I7Ozs7Uzs7SztPOzs7O1U7VzthOzs7Z0I7Ozs7Ozs7O2lCLFE7aUI7Ozs7aUIsUTtpQjs7OztpQjttQjs7cUMsaUM7O2lCLGdCO2lCOzs7O2lCOzs7Ozs7Ozs7O2lCOztzQjs7aUI7bUI7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7Ozs7VTtTOzs7SztPOzs7VTs7Ozs7Ozs7Ozs7OztXO1UsSTs7Ozs7VyxNOzs7VTtVO1U7VTtVO1U7VTtVLFc7VTtZOzs7ZSxrQjtlLE07O2M7O1U7VyxPO1csUTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OEIsTyx3Qzs7O2dCLE87ZTtVLE07Ozs7SyxRO0ksSSxjOzs7Ozs7SyxNOztJO0ssUTtLO087Ozs7Ozs7Ozs7VTtXO1ksTzttQjs7O1U7VyxPO1csTztXLE87VSxPOzs7O0s7Tzs7O1U7Ozs7Ozs7Ozs7OztXOzs7VyxrQjs7WTs7O2EsVTs7O2EsVTs7O2EsTztZO1ksSTs7Ozs7O2EsTTs7O21CO2EsTTs7OztXLE07O1U7Ozs7Ozs7Ozs7Ozs7O0k7RztHOztJO0k7SyxhO0s7O1M7Ozs7OztJO0k7Rzs7STtLLGE7SztJO0k7Rzs7STtLOzs7SztPO3VDLDZCO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7O0k7WTs7O2U7Ozs7Ozs7O2M7OztHOztJO0k7O0s7O1M7Ozs7Ozs7O0k7SSxZO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7UTtROzs7USxPOzs7a0I7cUM7O2tCO2lCOzs7OztROzs7OztpQjs7Ozs7Rzs7STtLLE87SyxPO0ssTztJO0c7O0k7Szs7Yzs7O0k7O3NCOztJO0c7O0k7O087O087ZTs7Rzs7SSxPOzs7OztjO2U7Z0IsTztnQixTO2UsTztjO2M7dUI7d0IsTzs7OzswQjswQjs7Ozs7Ozs2QixPOzRCOzs2QixPOzRCOzBCLE87OzswQixPOzs7Ozs7O29DLE87O21DOztvQyxPO21DOzswQjs7OzsyQixPOzBCLE87OzswQjs7MkIsTzswQixPOzswQixPOzswQjs7MkI7OzhCOytCLE87OEIsVzs4QixPOzs7MEIsTzs7OzBCOzsyQixPOzBCLE87Ozs7Ozs7OzBCOzsyQixPOzBCLE87OzBCOzsyQixPOzBCLE87Ozs7OzswQjs7MEI7MkIsTzsyQixPOzJCLE87MkIsTzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsVztvQyxPOzttQzs7b0MsTzttQzs7MEI7Ozs7MkI7MkI7Ozs7MkIsTzsyQjs2Qjs7MEIsTzs7Ozs7Ozs7OzswQjs7OzJCOzJCOzZCOzswQixPOzs7MEI7Ozs7MkIsTzswQixPOzs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsTzttQzs7b0MsTzttQzs7MEI7Ozs7MkIsTzswQjswQixXOzBCLE87Ozs7Ozs7Ozs7OzBCOzs7OzJCOzs4QixPOzs2QjsyQixPOzBCOzBCLFc7MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87OzswQixPOzs7MEI7OzsyQjs7OEI7Ozs7K0I7OytCLG1COzhCOzhCOzhCOytCLE87OEI7OEI7K0IsTzsrQixPOzhCLE87Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7Ozs7OzswQjswQjs7MkIsTzsyQjs2Qjs7OztpQyxPO2dDOzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7MEI7Ozs7MkIsTzsyQixPOzBCLE87Ozs7Ozs7b0MsTzs7Ozs7Ozs4QyxPOzZDOzs4QyxPOzZDO21DOzs7MEIsTzs7Ozs7OztvQyxPO21DOztvQyxPO21DOzs7Ozs7OzBCLE87Ozs7OzJCLE87OzswQixPOzs7OzBCLE87OzswQjs7MkI7MkIsTzswQixPOztzQjs7YTtHO0c7OztNOztPO2U7Ozs7c0M7OztxQzs7TTtLOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7STs7d0Isc0I7O2lDOztPLE07OztPOztHOztJLFk7OzswQjs7O08sTTtlLE07O0c7O0ksWTs7OzBCOzs7TyxNOztPLE07O0c7O0k7SyxPO0s7Tzs2QztJLFM7STtJLE07Rzs7STs7SztNLFM7TSxPO0s7SyxVO0s7STtJO0ssTzs7O2UsVztlLE87Yzs7O0k7STtLLE87SyxROzs7Szs7O08sSztROzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7O0k7SztPOzs7OztVO1M7OztLO0k7RztHO0k7OztRLE07Tzs7OztJOztPLDJDO0ksTzs7O2M7OztlLE87YyxPOzs7d0IsVzt3QixPOzt1Qjs7YTs7Rzs7STtLLFc7SztLLE07O0s7O00sbUI7TSxROzs7OztJO0ssWTtLLFM7SyxPO0ssTztLLFE7STs7O2M7OztJLFk7STtJLE87OztJO0k7OztROzs7OztRO1E7USxPOztRLE07O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7Ozs7STtHOztJLEkseUI7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7OztjLGlCLE87Yyx1QztjOztlOzs7Ozs7Ozs7Ozs7Ozs7bUIsTzs7OztjOzs7YTs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OzJCLFM7O0ksTztHOzs7Ozs7Ozs7Ozs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEc7UTs7TSxxQjs7OztJOzs7OztNOztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjO2dCOzs7bUI7Ozs7Ozs7O21COzs7O29CLE87b0IsTzttQixPO2tCOztjOztpQjs7bUMsTywyQjs7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjLFk7YztnQjs7Ozs7Ozs7YztjOzs7O2E7Ozs7Ozs7O2E7Yzs7Ozs7Ozs7Ozs7Ozs7OztjO2M7Z0I7Ozs7YTs7Ozs7Ozs7Ozs7WSxHOzs7O2EsTTs7O1ksYztZOztZOzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7UyxHO1U7VyxVO1c7YTs7Vzs7Vzs7OztXLFc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7OztTLEc7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7Ozs7O1ksRzthO2MsWTtjOzs7Yzs7O2E7YztlLE87ZSxPO2U7Yzs7Ozs7YTs7OzthOzs7Ozs7O0s7OztLOztROzs7Vzs7OztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7OztjOzs7O2dCO2tCOzs7cUI7b0I7O2lCO2tCOzs7Ozs7Ozs7O2lCLE07Ozs7O2MsTzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7O3dCOzsyQjs7NEMsd0M7Ozs7eUI7Ozs7Ozs7OzswQjsyQixjOzJCLFU7MkIsUTs7Ozs0Qjs7NkI7K0I7Ozs7NkIsTTs7Ozs7Ozs7Ozs7OzBCLE07Ozs7O3dCO3VCO2E7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7Ozs7OztVO1csTTs7Ozs7Ozs7YTs7O2MsTztnQjthO2M7OztpQixrQjs7Ozs7O21CLGE7Ozs7O2lCLE07Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxJLGM7Ozs7YSxNOzs7Ozs7O2UsTztjOzs7VztZLE87O1c7WSxNOzs7OztlLE87Yzs7VTtXLE07VzthOztrQjs7O1U7O1csUTtXO2E7OztnQixPO2U7OztrQjs7O1U7O1cscUIsTyxvQztXLFE7VyxRO2tCOzs7Ozs7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJO0s7SztPOzs7VTs7OztVO1M7OztLLFE7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O08sOEM7Tzs7O1U7OzthO2E7OzthO2E7cUI7O1M7O087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7UztXOzs7YyxPOzs7d0I7d0IsVzt1Qjs7YTs7UztXOzs7YztjLE87YTs7O1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTs7O1M7Uzs7O2M7OzthOzs7USxPOzs7O0c7O0k7STtZOzs2Qjs7Ozs7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0k7SSxPOzs7YztlOzs7Ozs7YTs7Rzs7STs7OztJO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJLE87OztjO2UsTztlLE07ZTtpQjttRDtjLE87Ozt3Qjs7Ozs7d0I7dUI7Ozs7Rzs7STs7SztPOzs7VTtVLE87Uzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGlEOzs7O2E7TztRLG9CLGU7USxPO1E7VSx5QyxlO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOztJLE87Ozs7O2MsbUI7OztpQjs7a0I7aUI7OztpQixvQjtpQjs7OztrQjs7O21COzs7bUI7O29CLFE7b0IsTztvQixPO29CO29CO3NCOzs7Ozs7Ozs7Ozs7OztpQjtpQjs7O2lCOzs7a0I7a0I7a0I7O2tCO29COzs7Ozs7Ozs7Ozs7OzBCOzs7MkIsVTs7Ozs7OzswQjs7OzJCOzs7OzswQjs7OzJCOzs7Ozs7Ozs7Ozs7MEI7OzsyQixVOzs7MkI7Ozs7dUI7d0I7Ozs7Ozt3QixVO3VCOzs7Ozs7a0IsVTtrQjtrQixPO2lCO29DOzs7Ozs7aUI7O2tCLFE7a0I7b0I7OztpQjs7O2lCLE07NEM7OztpQjs7a0I7a0IsTztpQjs7YTtHOztJO0s7Ozs7SyxPO0k7Rzs7SSxpQzs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7O1E7O3VCLDBDOztRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7UTs7O1c7Ozs7Ozs7O1ksTTs7VztZLE07Vzs7WSxPO1ksUTtZO1c7VTs7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTs7d0IsOEM7O1E7Uzs7OztTOzsrQixrQzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTtRO1M7Ozs7UztROztROztTLFE7UztXOzs7OzZCLG1DOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7Uzs7OztROzs7Ozs7Ozs7OztROztTOzs7UztXOzs7YyxtQzswQjs7YzthOztROzs7VztXO1U7O1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O1E7Ozs7b0I7O3NDLG1CLFU7Ozs7Ozs7O1E7O1M7Ozs7UTtRO1M7Ozs7UztROztROztTOzs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztTO1c7Ozs7NkIsaUM7UztTLFU7UztTLFc7Ozs7O1E7O3lCOztRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7UTs7O1c7VztXOztVOztRO1M7Ozs7Uzs7O2M7Ozs7O2E7OztTLE87Uzs7OztlO2lELGdCOzs7O1E7O1E7O1MsVzs7O1E7OztXO1c7O1U7O1E7Uzs7OztTOzs7Yzs7O2E7OztTLE87Uzs7OztlO2lELGU7Ozs7UTs7O1E7USxpQzt1QjtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCO0ksTzs7Ozs7YztlLG1COzs7O2U7ZTtjO2M7YTs7O0ksTzs7Ozs7Yzs7Ozs7ZSxPO2U7aUI7O2tDOztlLE87ZSxPO2U7O2tCO2tELFk7Ozs7ZSxRO2UsUTs7O2U7O2M7YTtHOzs7SyxPOzs7ZTtlLE87Ozs7eUI7eUIsTzs7d0I7O2M7OztJOztLLE87OztlOzs7O2dCO2tCOzs7O29DLHFDO2dCO2U7Yzs7O0k7STtLLE87OztlO2UsTzs7d0MsbUIsbUI7O2M7O0k7STtLLFE7SztPOzs7VSxvQixPO1UsTztTOztLO087OztVLE87Ozs7b0IsVztvQixPO21CO1M7OztLO087OztVO1csTztXLFM7Ozs7Vzs7Yzs2Qyw2Qjs7OztXO2E7OzRCLGUsa0M7O1U7Uzs7O0s7SztPO3NDLDhCO0s7STtJLEksK0I7STtJOztPOzs7VTs7Ozs7Vzs7O1c7O2M7aUQ7Ozs7Ozs7VzthO2dEO1U7Uzs7O0k7RztHO0k7OztJO0k7Ozs7MEI7Ozs7UztTOzs7Ozs7SyxNOztHOztJLEksc0M7Ozs2Qjs7O0c7Ozs7OztROztRLHFCLFE7USxPOzs7a0I7O3FCOztzQixPO3FCLE87OEI7aUUsdUI7Ozt3Qzs2Qjs7Ozs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7OztnQjs7OztJO0ksTzthOzs7Z0I7OztpQixTO2lCO2dCLE07O2U7O0c7O0ksTzs7O2M7O2lCOztrQixPO2lCLE87MEI7Ozs2Qjs4QixTOzhCOzZCLE07OzRCOzs7O2lCO3lCOzs7O0c7RztJO00sMEMsZTs7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07OztPO2U7OztrQjs7OztzQjs7Ozt1QixXO3NCLEc7dUI7d0IsVzt3QixLO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3dCOzBCO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7O3NCOzt5Qjt5Qjt3Qzs7Ozs7OzRCLFE7NkI7Ozs7Ozt3Qjs7OztzQjtzQjs7Ozs7O3FCOztrQjtpQjs7ZSxNOztHOztJOzs7Ozs7Uzs7O1ksZ0MsTztZLFc7Vzs7SSxPO0c7OztLOztROzs7Vzt3QjtVOztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtnQjs7ZTtrQjs7STtHOzs7SSxPOzs7OztjOzthOzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7dUI7Ozs7Ozs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7O087OztROzs7UTtROzs7OztPOzs7O087O1E7VTs7NEIsTyxvQzs7USxPO1EsVTs7OztXLE07Ozs7VzthOzs7Z0I7NkI7ZTs7WSxNOzs7Ozs7cUI7O29CO1c7WTtZLG9CO1c7WSxNO1c7Ozs7TyxNOzs7O08sTTtrQzs7OztPOzs7O1c7OztZOzs7WTtZOzs7Ozs7b0I7WTs7Ozs7Vzs7WTtZOzs7Ozs7O087UTs7O2dDO1c7O1E7O2E7O1E7OztPLE87OztpQjs7O2tCLGM7Ozs7O3FCLGdDOzs7O3VCLE07O3NCO3dCOzt5QixPO3dCOzs7OzsyQjs7cUI7c0IsTTs7cUIsVztxQjs7OztvQjs7Ozs7O3dCO3lCOzJCO3lCO3lCOzs7Ozt3QixNOzs7dUI7cUI7OzsrQjs7Ozs7O29CO3FCO3NCO3dCOzs7Ozs7Ozs7b0I7cUIsd0IsUTtxQjs7OytCOzs7O2lDOzs7O3NCOzt1QixRO3NCOztzQjt1Qjt3QixPOzs7Ozs7Ozt1Qjt1QixNOzs7Ozs7OztzQjt1Qjs7MEI7Ozs7Ozs7dUI7Ozs7dUI7Ozs7b0I7O29COzs7Ozs7OzRCOzs7b0IsTTs7O29CO3FCO3VCO3FCO3FCOzs7OztvQixNOzs7Ozs7Ozs7O0ksTzs7Ozs7Yzs7ZTs7Z0I7Ozs7Z0I7Z0I7ZTs7YztlOzs7ZSxRO2U7ZTtpQjs7Ozs7Ozs7Ozs7Yzs7O2lCOzs7YztlO2lCOzs7b0I7Ozt1Qjs7O3VCOzs7dUI7Ozs7Ozs7dUI7Ozt1Qjs7O3VCOzs7dUI7O21COztlO2M7YTtHOztJLGlDOzs7Szs7UTs7O1M7Vzs7Ozs2QixPLHVDO1E7O1E7OztTLFE7OztTLG9CO1MsTztTO1c7OztjOzs7OztjO2MsUztjOztzQjthOzs7OztROztnQjs7OztROztTLFU7OztRO1E7Z0I7UTs7Ozs7O1E7OztTLFU7Ozs7UTs7dUIsMEM7O1E7Uzs7O2dDLG9DOzs7UztXOzs7YztjLE87YTs7Ozs7Ozs7WTs7O2U7OztnQixjO2dCLFM7ZSxPO2M7Ozs7O1E7O1E7O1MsVTs7OztTO1M7Vzs7O2M7YyxPO2E7Ozs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7O1M7UTtRO2dCO1E7Ozs7OztROzs7Ozs7UyxjO1MsVTtTO1c7Ozs7O2M7Ozs7Ozs7Ozs7OztjO2E7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7UztXOzs7Yzs7ZSxNOzs7Ozs7OztjO2E7O1M7OzthOzs7Z0I7Ozs7O2dCO2U7Ozs7UTs7O1c7VyxPOzs7cUI7OztVOztRO1M7Vzs7O2M7Ozs7Ozs7OztlO2lCOzs7OztvQjs7Ozs2Qjs7O21COzs7ZTtjO2E7OztTO1c7OztjOzs7Ozs7O2MsYTtjLG9CO2MsTzthOzs7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7O1k7OztlOzs7O2dCO2tCOzs7cUIsVztxQixlO29COztlO2M7OztTO1U7WTs7O2U7ZSxVO2U7Ozs7Z0I7Ozs7O2UsTzs7Yzs7O1U7WTs7O2U7ZSxVOztlLE87Yzs7Ozs7Ozs7O1E7OztZOzs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7Ozs7Ozs7OzthLE07OztZOzs7YTs7Ozs7OzthO1k7O1MsWTtTO1c7OztjO2MsTzs7b0MsK0I7O2E7O1M7Vzs7O2M7YyxPO2E7OztTOzs7YztjO2E7OztROztpQjs7bUMsbUIsVTs7Ozs7O1E7O1M7Ozs7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7UztXOzs7YztjO2M7YztjOzs7O2UsUTs7O2UsUTtlLEk7OztjLE87YTs7O1M7OztjOzs7OzthOzs7UyxPO1E7O2lCOztpQyw2Qjs7Ozs7O1E7O1MsVzs7O1M7Vzs7O2M7YztjO2M7Ozs7ZSxRO2UsSTs7O2MsTzthOzs7Uzs7O2M7OzthOzs7UyxPO1E7O2lCOztnQyxnQzs7Ozs7O1E7O1M7UztXOzs7OztjO2E7OztTLFU7UztTO1c7Ozs7O1E7O3lCOztRO1E7OztRO3lDO3VCO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7OztJO0k7Rzs7RztJOzs7RztJOztHO0k7Ozs7OztHO0k7OztJLE87Rzs7STs7OEIsTzs7O087Ozs4Qjs7O21COzs7ZTs7Rzs7STtLO0s7O0s7O00sVTs7Ozs7O0ksVTtJO0k7Rzs7STtLOzsyQjs7O1E7O1EsTTtNO0c7O0k7SztPOzs7VSxPOzs7O29COztxQixRO29CO21CO1M7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztRO1U7OzthOztnQjs7aUI7O2lCLE87aUIsVTtnQjs7Z0I7O2lCOztpQixPO2lCO21CO2dCO3dCOztZOzs7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNLEk7O0s7TTtROzs7VztXLEk7OzttQzs7O1csSSxXOzs7bUM7OzsyQjtXLFE7VztVOzs7Ozs7Ozs7O0k7OztPO087UTtTLE87UyxPO1E7Ozs7O1MsTTs7OztNOztJO0ssTztLLE87O0s7STtLO2lCOzs7Ozs7SyxNOzs7STs7O0k7Rzs7STtHOztJO0c7Ozs7Ozs7SztNOzs7OztLO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxRO0ssTztLLFc7SSxPO0c7O0ksaUI7STtLLFc7SztLO0k7STtJLE87Ozs7O2U7Z0IsTztnQixhO2U7Yzs7YztjOztlO2M7Ozs7Ozs7ZSxPO2UsSztlLE87ZSxVO2U7O2U7ZSxjO2U7Ozs7O2tCO21CLE87bUIsTztrQixPOzs7Ozs7aUI7ZTtlOztjLGtCO2MsNkI7ZTtnQixPO2dCLE87ZTtlO2dCO2tCOzs7Ozs7Ozs7OztlO2U7ZTtlLGM7O2dCO2lCLFM7aUIsTztpQixNO2lCO2dCOzs7ZTs7Ozs7O3FDOztlO2dCO2lCLE87Ozs7Ozs7Z0I7Z0IsTTs7O3lCOzs7OztjO2UsUztlO2lCOzs7Ozs7Ozs7OztjO2M7ZSxVO2U7YztjO2E7Rzs7SSxXO0ksTztHO3FDLHVDOztJO0c7O0k7O087OztVO1csVztXLE87VyxLO1csTztXLGtCOztXLE07O1UsVztTOztJO0k7SztPOzs7VTs7O1csUTtXLFE7VTtTOztLO087OztVO1UsTztTOzs7SztPOzs7VTs7O1csTztXLE87VyxPO1c7VTtTOztLLFM7SyxPO0ssVztLO087OztVOztXLEs7VyxPO1UsTztTOzs7SyxRLFc7SyxNO0ksRztZLHFCO007TSxNO3lCOztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Szs7STtLO08sMkM7SyxPO0s7Tzs7O1U7VSxXO1M7OztLO00sTTtNO00sTztLOztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87Ozs7TyxvQixPO08sTzs7Tzs7USxPO08sTzs7TyxzQixPO08sTzs7TyxzQixPO08sTzs7TyxvQixPO08sTzs7Ozs7Ozs7OztPOzs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7USxTO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7TztPO087O1EsTztRO1U7Ozs7YyxPO2E7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7TztPO087USxPO1E7VTtZOzs7O2dCLE87ZTs7O1EsTztROztXOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7TyxPOzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxvQixPO08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7UztXO1MsVztTLHVCOztTLE87UztXOzs7UyxPOztTLE87UztXOzs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztPOzs7Ozs7USxxQjtRLFk7O1EsTzs7USxPO1E7VTs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087O1E7USxPO08sTzs7Ozs7Ozs7OztPOzs7OztXLHlCLE87VyxPO1U7UTtRLE87TyxPOzs7Ozs7Ozs7Ozs7OztJLE87Ozs7NkIsMEI7RztHOzs7TTs7Tzs7cUM7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7Ozs7O0ssWTs7Ozs7Ozs7Ozs7TTtPLE07YTs7Ozs7OztJLGE7SSxxQixNO0ksTzs7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzs7Ozs7Ozs7Ozs7OzsyQixxQjs7SSxVO0k7SztPOzs7VTtTOztLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7O0c7O0ksTzs7O2MsTzthOzs7Rzs7STtJOzs7O1M7O1MsVTtTOzs7UTtLLFU7O2tCOztLO0s7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7RztJO0k7OzZCLDBDOztJO087SztJLE07Rzs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVO1U7WTs7O2U7ZTtjOzs7VTtZOzs7ZTtlO2M7O1U7Uzs7Uzs7OztVO1U7WTs7O2U7ZTtjOztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxPOzhDO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O00sc0I7Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7TztPLE87OztpQjtpQixPO2dCOzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPO087OztVO1UsTztTOztPOzs7VTtVLE87Uzs7Ozs7TztPOzt5QixvQixPLHNCOztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7UztXOzZDO1MsTztTO1EsTzs7Ozs7O1E7OztTO1c7OzZCLG9CLGdCOztTO1M7Vzs7NkIsbUIsVTs7UyxPO1EsTzs7O1E7O1E7OztTO1csMkM7UztXLDJDO1M7OztTO3NCO1EsNkI7USxPOztROzs7O1M7VywyQztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7UztXOzZDO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7O0ksTzs7O2M7YyxPO2E7OztHO0c7STs7Ozs7O29DLHdDOztJO0k7Ozs7Ozt5RDs7Ozs7Szs7Rzs7STs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7Tzs7SSxPOzs7STs7SyxPOzs7STs7O0ksSSxXOzs7O0s7TSxPO00sTztLLE87O0k7Rzs7STtHOztJO0c7a0Q7Rzs7STtHOztJO0ssTztLLE07SztJLEksVTs7OztLO00sTztNLE87SyxPOzs7STtHOztJOzttQixPO0ksb0IsTTtJOzs7O0k7SyxxQztLLGlCO0k7STtLLE87OztlOzs7OztnQjs7O2U7Yzs7O0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O3lCOztROzs7Ozs7Uzs7O1M7UTs7UTs7Ozs7Uzs7O1M7UTs7UTs7O1M7Vzs7O2M7OztlOzs7YzthOzs7OztTO1E7Z0I7OzttQjttQjs7Ozs7O1E7O1E7Ozs7UztTO1c7OzRCOzs7UztXOzs0Qjs7UztROztROzs7OztTO1M7Vzs7OztjOzs7UTs7O1E7O1E7Ozs7OztTOzs7UztROztROzs7O1M7OztTO1E7O1E7Ozs7UztTO1E7O1Esa0M7UTs7USxrQztROztROzs7Ozs7Uzs7O1M7UztROzs7USxHO1MsTTtRLEksSSxPOzs7Ozs7UTs7UTs7Ozs7O1M7UztROztROzs7UztTO3dCLE8sc0M7UztXOzs7Yzs7OzswQixJOzs7a0Q7OzswQixPOzs7O2MsTzs7Ozt5QixJOzs7aUQ7Ozt5QixPOzthOzs7UztXOzt1QyxPLHdCOzs7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssTzs2QztJOztLO007Ozs7O007SztJOzs7Szs7O0ssWTs7Szs7STswQixrQzsyQix3Qzs7O0k7Rzs7O0ssWTtLLE87STtJOztPLDBDLG1CO0k7RztHO0k7O21DLFc7Ozs7OztJOzs7Ozs7O0ssUztJOzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7OzBCOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPLGtDLE07TztlOzs7a0I7a0I7aUI7Ozs7O08sYzs7Tzs7OztRLE07UTtVOzs7YTthLGM7WTs7O1E7VTs7O2E7YSxjO1k7O1E7TyxXOztPOzs7OztRLE07UTtVOzs7YTthLGM7WTs7TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OzswQjs7O21COzttQyxnQjs7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7O1csTzs7O3FCLE87O29COztVO08sTzs7Ozs7Ozs7Ozs7cUIsTztPOzs7UTs7VyxPOzs7cUIsTztvQjs7VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtJLE87Rzs7STs7ZTtlOzs7O2lCO2lCOztxQixPOzs7TyxPOztHOztJOzs7O007UTs7eUI7O087OztPLGM7TztPOzs7VTtVLE87Uzs7TyxPOztNO00sTzs7O0k7Rzs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs2Qjs7NkI7OzZCOzs2Qjs7OEI7OzhCOzs7OztXOztXOztXOztXOztXO21COzs7O1E7OztROzs7USxPOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7O1E7a0I7a0I7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O087Ozs7UTtPLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7O1E7Ozs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0ksUzthOzs7OztROztROztROzsyQjs7O087O087Ozs7Tzs7Tzs7YTtzQjtHOztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7WSxPOzs7c0IsTztxQjs7VztRLE87Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O1E7OztTOztZO1ksTzs7O3NCOzt1Qjs7O3NCLE87Ozs7Ozs7O3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLE87OztzQixPO3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZO1k7OztlOztnQjs7O2UsTztjOztZOzs7ZTs7Z0I7OztlLE87Yzs7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZO1k7OztlOztnQjs7O2UsVztlLE87Yzs7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7O1ksTzs7O3NCLE87cUI7O1c7USxPOzs7Ozs7OztRLE87Ozs7Ozs7O2tCLE87Ozs0Qjs0QixPOzsyQjs7aUI7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7O1ksTzs7O3NCLE87cUI7O1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7OztROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7Ozs7Ozs7Ozs7SztNLE87OztnQjtnQixPOzs7Ozs7OztlOztLO0s7Szs7O1E7Ozs7UztRO1E7Tzs7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007O1M7OzJCLG9CLFc7O00sTztLOztNO087Uzs7O1k7WTtXOztPLE87TTs7O1M7UztTOzRCOztTO1M7UTs7TTtLO21CO0s7OztrQztrQztJO0k7Ozs7O3NCOzs7aUMsWTs7Ozs7O1M7UztRO1E7O1M7OztROzs7Ozs7Ozs7Uzs7O1M7OztROztTOztVO1k7UyxjO1E7O1M7Ozs7VTtZOztVLEs7OztTOzs7OztVOztXOzs7O1c7Ozs7VSxHO1c7WTtjOztZO1k7Ozs7YTthO2E7Ozs7OztZO2E7O2lCOzs7Ozs7bUI7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1cseUI7Ozs7YTs7YzthO2E7Ozs7Ozs7O3NCOztTOzs7aUI7OztRO1EsSSxJLHNDOztTLEksZTs7Ozs7OztZO1k7Ozs7Ozs7VyxHLHVCOzs7OztVLE87OztTOztVLFU7VTtXOzs7OztXO1c7O1U7VTtTO1M7O1U7Ozs7VTtVO1MsSSxXLHVDOzs7OztVO1csTTtVOztXO1c7Ozs7OztZOzthLEksdUIsTzthOzs7Ozs7Ozs7VTs7O1c7O1k7WTtZO1k7Ozs7YTtjOzs7YztjOzs7Ozs7O2E7YTthO2M7O2M7YTs7OzthOzs7Ozs7O1k7YTthO2E7YTthOzs7Ozs7OztnQjtpQjs7Ozs7Ozs7Ozs7O2lCOztpQjtnQjtnQjtnQjtpQjs7aUI7Z0I7Ozs7O2dCOzs7OztjOzs7Ozs7Ozs7Ozs7OztZO2E7YTthO2E7YTs7OztjO2U7Ozs7OztlOzs7Ozs7O2dCO2dCO2U7ZTtlO2dCOztnQjtlOzs7Ozs7Yzs7Ozs7Ozs7OztXLEksaUM7Vzs7Ozs7OztXOztZOzs7Ozs7OztZLEc7YTtjOzs7Ozs7Ozs7Ozs7Yzs7YzthO2E7YTtjOztjOzs7Ozs7O1k7YTs7O1c7WTs7Ozs7O1U7VTs7UTs7Uzs7O1U7OztVO1U7Ozs7Ozs7UztTO1MseUIsd0I7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEksb0I7WSxxQjs7VyxVO1csTzs7OztxQjtzQjtzQjtzQjtxQixxQjtvQjs7O3FDLHNDO3FDLHVDOzs7O1csSSxzQjtXLHNCOztVLFU7VSxPOzs7O29CO3FCO3FCO3FCO29COzZCO21COztTOztVOzs7Ozs7VTtVOzs7Ozs7O2E7YztjOztjLE07YSxPOzs7VztZO1k7O1ksTTtXLE87OztTO1U7VztXOzs7Ozs7O1M7VTtVOzs7Ozs7OztTOzs7VTtVLE07c0I7O29DO1M7O1UsZTtVLEk7UztVO1M7UyxJOzs7O1c7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7Ozs7O2dCO2U7OztXOzs7Vzs7Ozs7WSxNO1ksTTtZOzs7O2E7Yzs7OzthO2M7ZSxNOzs7Ozs7O2M7Yzs7Ozs7OztlO2U7Ozs7O2E7Ozs7O1c7WTtZLE87O1c7OztjO2M7YzthOzs7Ozs7ZTtnQixPO2U7c0I7ZSxPOzs7O3lCLE87d0I7Yzs7Vzs7VztXOzs7VSxJLG1COzs7O1M7O1k7OztlLE07YztTOzs7WTtZO1k7Vzs7UztTOzs7UztVLDJCLFM7VTtZOzs7ZTtnQjs7aUIsUTs7O2lCOzsrQixPLGMscUI7Z0IsTzs7O2U7Yzs7UztROztTO1UsTTtTO1UsWTtVOzs7UyxPO1E7O1M7VSxNO1M7VSxZO1U7OztVOztvQztTOzs7O2E7OzZCLHVCLFcsRTs7UyxPO1E7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtjO2M7Ozs7Ozs7Ozs7O0ksVyxPO0k7O0s7Tzs7O1U7VSxXO1M7O0k7OztPO087TztNOztJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksTzs2QztHOzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7UTs7O1M7UTs7UTs7OztTO1M7USxPOzs7O2dCOztJO0c7RztJOztvQixPLGlDOztJLE87MkMsNEI7Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFM7SyxROzs7d0IsTyxrQztJLG1CLE0sd0M7c0IsMEI7SSxJOztvQjtxQztpQjs7Ozs7Ozs7O1MsYTs7UTs7Ozs7OzRCOztROzs7Ozs7OztROzs7OztTLHNCLE87UyxhOztROzs7OztTOzs7VTtVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7OztJLE87Ozs7Ozs7Ozs7SSxXO0k7Rzs7O0k7SyxNOztJOzs7O0k7SyxNOztJOzs7O0ksVyxNOztJOzs7O0ksVyxNOztJLGU7Ozs7Ozs7O3FCLGtCLGdDOzRCLHFCOztJLE87O0c7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0ksTzs7O2M7OztlOzs7YyxtQjs7O0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sSTs7Ozs7OztNLGlCO007O0k7STtHOztJLE87OztjO2M7ZSxPOztjO2U7eUM7ZTs7Ozt3Qzs7O2E7O0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJLE87OztjOztlOztjLE87YTs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7SztLO29COzs0QjtNOzs7Tzs7VTtXLE07O1U7UztPLFE7OztVO1U7eUI7Vzs7Ozs7WSxNO1k7Ozs7OztjOztlO2UsTzs7Ozs7Ozs7O2E7YztjOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7O1c7VyxJLGtCOzs7Ozs7O1csVztjO1k7VyxNOztTO29DLHdDOztNOzs7OztJO0k7Rzs7STthO2tDOztHOztJLFk7O0k7Rzs7SSxPOzs7OztjO3dCO3dCOzs7OzBCOzBCLE87O3lCOzs7YTs7Rzs7STtjO2M7Ozs7Z0I7Z0IsTztlOzs7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOztJLE87OztjO2MsYzthOztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7SSxPOzs7Yzs7Ozs7ZSxRO2UsVTs7Ozs7Ozt3Qjs7Ozs7Yzs7O2U7Z0IsVzs7OzttQiw0QjtjO2E7Ozs7SSxvQjs7Ozs7Ozs7OztNOzs7VTs7OztTOzs7VTs7O1M7TztxQzs7OztROzs7O1M7MEI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7Ozs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHOzs7Ozs7Ozs7Ozs7Ozs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7STs7Tzs7O1U7VSxXO1M7O0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7O2E7Ozs7aUI7OztvQjtvQjttQjs7Ozs7YTtlOzs7a0Isb0IsTztrQixPO2lCOzs7YSxPO2E7ZTtpQjs7O29CO29CLE87bUI7O2E7ZTtpQjs7O29CO29CLGU7bUI7O2EsUzthLFc7YTtlOztnQzs7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCO3dCOzJDLE8sa0M7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Z0Q7Ozs7Ozs7Ozs7Ozs7OzsrQjs7OztrQzs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7dUI7d0I7d0IsTzt3Qjs7OzJCOzBELGM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7OztpQjs7OztlO2E7YTtlO2lCOzs7b0I7b0I7bUI7O2E7O2E7OztZO29COzs7VztZOzs7Vzs7Ozs7Ozs7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WTs7Ozs7Vzs7Ozs7Ozs7Ozs7OztROztXOzs7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YzthOztROzs7O1k7OztlO2UscUI7Yzs7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7O087Ozs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7UTs7Ozs7OztNO087Ozs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TTs7OztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087TztTOzs7WTtZO2EsTTtZLEk7OztXOztPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7UztPO1M7OztZOzs7YTtZLHNCO1c7OztPO087Uzs7O1k7WTtXOzs7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJOztPOzt5QixrQixPLDJCOzs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YyxPOzs7OztHOztJO3lFO0ksTTtHOztJOzs7SyxPOztJLE07Rzs7STs7Rzs7STtrQzs7SyxNOztJO0c7RztJLGU7Ozs7Ozs7Ozs7STs7YTtjLFk7YyxNO2MsUTs7O2EsSSxVOzs7O2UsTzs7OzthLE87O0c7RztJOztJOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOztHOztJOztNO08sVTtPO087O087TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNLFE7TTtNLE07OztTO1E7TTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJLDhCOzs7Ozs7OztJO0c7O0ksVztJOzs7TztPO087TTs7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7Ozs7Ozs7Ozs7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7O2MsTzs7O3dCO3dCOzs7Ozs7O3VCOzs7YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7STtLO087OztVO1UsZ0I7Uzs7SyxPO0s7OztLLFM7STs7OztJOztPOzs7VTtVO1M7O0k7Rzs7STtJOzs7OztPLFM7UTtPOzs7OztLOztHOztJOztPOzs7VTtVLE87Uzs7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsOEM7O0k7Rzs2QixXO3VDLCtCOztJO0ssVzs7Szs7OztNO087TztPO007TTs7Ozs7STtLLDRCLFc7O0s7Ozs7O087UTs7O087Ozs7c0IsYyxpQzs7TTs7Ozs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7SSxPOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7YztjLE87O3dCO2E7O0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7OztNLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0k7Z0I7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJOzs7Rzs7OztJOztLOztJOztLO007OztNO1E7TTs7UyxZO1M7Ozs7O1U7OztTOzs7Ozs7UyxNO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7Ozs7O007TyxNO087Uzs7O1k7OzthLE07WTtXOzs7Ozs7Szs7UTs7O1c7OztZLE07VztVOzs7Szs7STtLLFM7Ozs7OztLOztROzs7VztXO1U7Ozs7TSxNO0s7O00sbUMsbUI7TTs7UyxPOzs7Ozs7Ozs7UTtNLE87TSxPO00sWTtNO1E7TTtPO1M7O3lCLCtCOzs7OztNO087Ozs7Ozs7Ozs7TztRO1U7OzthO2EsTzs7O3VCO3VCLE87OzZDLE8sZ0M7O3NCOztZOzs7O087UTs7Ozs7YSwyQzs7Ozs7Ozs7O007TztTOzs7WTs7Ozs7YTthO2U7OztrQjtpQjs7O2E7O2EsVTs7YSxPOzt1Qjs7OztZO1k7WTtXOzs7OztPO1M7TTs7Ozs7Ozs7Ozs7OztNO087OztNOzs7OztTLGEsTzs7UyxPO1E7Ozs7Ozs7Ozs7O0k7SyxzQjtLOztTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7O1c7Ozs7Ozs7OztNOzs7Ozs7Ozs7TyxvQyxROzs2Qzs7O087UTtVOzs7YTthLGM7WTs7UTtVOzs7YTthLGM7WTs7USxPO1E7OztRLFM7Tzs7Ozs7O087UTtVOzs7YTthO1k7O1E7OztXOzs7YztjO2E7Ozs7Ozs7OztRO1MsSTs7O1ksa0I7d0I7O1ksSSxJLE87Ozs7Ozs7WSxPOztRO1E7USxJLGlCO1E7OztXOzs7O1U7OztTOztVO1k7OztlLG9COzJCOzs7YztVO1UsTzs7VSxPOzs7OztrQjs7Ozs7O0k7OztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTtnQixPOztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztpQjtLOzs7Ozs7O007O0s7OztTLE87OzttQjs7O29COzs7bUIsSSxZOzs7NkM7OzttQjsrQjs7O1E7TSxPO00sTTtLLEksVTs7OztvQjtNOzs7Ozs7bUI7SyxZOzs7Ozs7OztNO007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUI7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7c0I7Ozs7O3FCO087UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7O1EsTzs7K0IsOEI7Ozs7USxPOzsrQiw4Qjs7O0s7Ozs7STs7OztRO2tCOzs7Ozs7Ozs7UztVOzs7O1c7VTs7Ozs7Ozs7Ozs7O1M7VTs7VztVOzs7Ozs7Tzs7OztRO1E7UTtPOzs7USxXOztPLE87O0ksTztHOztJO2dCLE87O0k7Rzs7O0k7STs7TSxPOzs7O0ssSSxZOzs7O007Ozs7Ozs7Ozs7OztrQjs7TTtNO087OztNOzs7O08sSSxVOzs7O1E7Ozs7OztPOzs7UTtROzs7Ozs7O0c7O0k7Ozs7O00sRztPO1E7Ozs7OzhCOzs7O007OztTLFc7UyxjO1E7TTs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO087O3dCOztLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjs0Qzs7OEIsb0I7OEI7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7OztvQjs7OEIsb0I7Ozs7Ozt1Qzs7OEI7Ozs7Z0M7Ozs7OytCOytCOzhCO2lEOzs7Ozs7Ozs7OzhCOzZCOzs7Ozs7O29COzs7Ozs7O1U7O29COzs7OztvQjs7O3FCOzs7b0I7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozs7Ozs7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozt1Qjt3Qjt3QjswQjs7OzZCOzZCOzhCLE07Ozs2Qjs0Qjs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQyxNO3FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzttQztnQzs7OzhCLE07Ozs7OzsrQjsrQixPOzs7K0IsTTs7OEI7OytCOzhCLE87Ozs7Ozs7Ozs7Ozs7VTs7b0I7Ozs7OztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1Qjt1QixPO3NCLFMsNkI7c0IsVTtzQjt1Qjs7aUM7Ozs7OztzQjs7dUI7OzBCLG9COzBCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7O29COzs7b0I7OztxQjtvQixHO3FCLFc7cUI7Ozt3QixrQixROzs7Ozs7O3dCO3VCOzs7Ozs7cUI7b0I7b0I7cUI7cUI7dUI7cUI7OztxQjs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7Ozs7Ozs7O3VCOzs7Ozt1Qjs7Ozs7O3dCLE07dUI7Ozs7Ozs7Ozs7dUI7Ozs7dUI7Ozs7Ozs7Ozs7cUI7c0I7Ozs7Ozs7O3NCOzs7Ozs7b0I7Ozs7O1UsVztVOztvQjs7OztvQjs7OEIsb0I7OytCOztnQzs7O21DOzs7Ozs7O2tDOytCOzs4QixNOzs7a0Q7Ozs7Ozs7b0I7OztxQjs7O3FCLFM7cUI7OztxQjt1Qjs7Ozs7O29COzs7Ozs7Rzs7O0k7SyxROzs7Szs7O0k7Rzs7STtrRDtJO0c7d0IsTyx5Qzs7STs7O0ssTzs7OEIsMEM7OztJO0c7O0ksTztHOztJLFk7STs7OztPOzs7VTs7O1csTztVO1csVztXOzs7OztVO1M7O0s7STs7O0k7SztHOzs7O0s7SyxhO0s7SztJOztLO007TTs7O0ssd0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJOzs7O00sTTs7OztJLHNCOzs7O0s7TSxPO00sTztNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7O0k7SztLO0s7TzttQyxtQjtJOzs7Ozs7OztjOzthO0c7O0k7O0c7O0k7O0c7O0k7O0c7O0k7Ozs7O1E7OztROztzQzs7Ozs7O1E7Ozs7OztZLE87OztzQjtzQjtxQjs7VztTO1c7OzRCOztTOztTO1E7O1E7Ozs7O1M7Vzs7NEI7O1E7O2dCOzs7bUI7bUI7a0I7Ozs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7aUM7Ozs7Ozs7OztLO007TSxTO00sWTtNO1E7OztXO1csZTtVOztNO1E7OzBCLG1CLFU7O007Ozs7WTs7Ozs7Ozs7Ozs7MkMsa0M7aUIsTzs7Ozs7Ozs7O2lCLE87Ozs7O1k7YSxVO2E7ZTs7OEIsZSwyQjs7WTs7O3FCOzs7VztXO1k7WSxjO1c7O1ksTzs7Vzs7WSxPOztXO2tCO1csdUIsVyxnQztXOzs7O2U7OztZOztXLE87Ozs7Ozs7SSxRO0k7Rzs7STtLLE87OztTOzs7O0s7Tzt1Qyx1Qjs7Ozs7Ozs7O2M7Ozs7NkI7O2E7Rzs7STtrQyxPO3VCLE07O0k7Rzs7STs7SztPOzs7VTtVO1M7OztJO1k7OztlOztnQixPOzs7OEI7Ozs7Z0I7aUIsTzsyQjs7Z0IsTTs7O2U7Yzs7OztHOztJOztPOzs7O1E7VTs7OzthOzs7Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJO0ssVztLO087O3lCLGtCLGM7O0s7SyxPO0s7SztLO08sbUMsaUI7Ozs7Ozs7Ozs7VTs7O1c7O2M7OytCOzs7O1c7OztXLE87VzthOzs7Z0IsbUIsTzs7Z0I7ZTs7VzthOzZDLHVCO1c7VzthOzs7Z0I7Z0I7ZTs7Vzs7O2dCO2lCOzs7O2tCOzs7O2lCOzsyQjs7Ozs7Ozs7Z0I7Ozs7Ozs7O1csTztVO2tCOztTO0ksTztHOzs7STs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7OztLOztJO0c7O0ksVTs7SSxpQjtHOzs7Ozs7Ozs7Ozs7O0k7O087O1EsUTtROztRO1E7VTs7UTtPOzs7O087O1EsWTtRLGtCO1E7VTs7O2E7Ozs7Yzs7Ozs7YTs7cUI7O1k7Ozs7OztRO1U7O3NDLFc7Ozs7Ozs7OztRO1U7UTtROzs7Vzs7Tzs7Ozs7Ozs7Tzs7O2tCOzsrQiwyQzs7O087OztrQjs7K0Isd0M7O087OztRO1U7OzthO2EsTztZOzs7Tzs7K0IsMkI7OztvRDs7O087Ozs7UTtRO1E7VTs7O2E7Ozs7O1E7Ozs7VTs7Ozs7OztXOzs7WTs7Ozs7Vzs7O1M7Ozs7O1M7Ozs7O08sTzs7Tzs7Ozs7UTtRO1U7OzthOzs7Tzs7O1MsTztROzs7Ozs7Uzs7O087O087O087Ozs7OztRO1E7VTs7O2E7YSxPO1k7OztROztPOzs7a0I7Ozt5Qjs7Tzs7Tzs7OztRO1E7OztZOztPOzs7a0I7OzsyQjs7Tzs7Tzs7OztRO1E7Tzs7O2tCOzs7dUI7O087OztPOzs2QixvQjs7O087OzhCLHNCOztJLE87Rzs7SSxXO0k7Ozs7O0s7SztJOzs7ZTs7O2M7O0k7RztHO0ksYTtJO007SSxjOzs7Ozs7STtLO087OztVO1UsTztTOzs7SztPOzs7VTtVO1c7Ozs7O1c7Vzs7OztlLGtCLFE7MkI7O2UsTzs7O3lCO3lCO3dCOzs7ZTs7ZTs7ZTs7ZTs7ZTs7OztnQixNO2dCLFE7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsbUIsTTtxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7b0IsZTs7O29CO3FCLGlCOzs7cUIsTztvQjs7b0I7O29CLGlCLFM7b0I7Ozs7Ozs7b0IsTzs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOztlOztlLG1COzs7OztlOzs7O2U7Ozs7OztlOzs7ZTs7O2U7Ozs7ZTs7OztlOzs7O2U7O3VCOztVOztXLE87OztxQjs7b0I7OztVOztXLE87OztxQixPOzs7K0I7K0I7OzhCOzs7b0I7OztVO1U7OztXOzs7Ozs7Vzs7Yzs7MEMsVzs7OztXOzs7Ozs7O1c7Ozs7O1U7VyxTO1c7O1csTztVOzs7OztXO1c7O1U7Uzs7O0s7Tzs7O1U7OztXO1U7Uzs7O0s7O0s7TTtROzs7VztXO1U7Ozs7O0k7SztPOzs7VTtVO1M7OztLO087OztVOzs7Ozs7OztVOzs7O3NCOztVO1M7OztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFM7OztJOztLO00sSSxjLDJDOzs7OztPLFM7TztPOzs7STtHO0c7STtJO0k7STs7STtJO0k7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHO0ksaUI7Ozs7OztJO0ssUTs7O0s7Tzs7K0IsbUM7OztJO0k7Rzs7STtLLE07O0ssTTs7SSxXOzs7O0s7O007Ozs7Ozs7Ozs7O007OztJO0s7aUQsMkI7OztJO0c7O0ksc0I7O0ssTTtJLHNCOztJLEksUTs7Ozs7Ozs7Ozs7OztJOzZCLHlCO0c7RztJO0k7STtJOzs7STtJO0c7O0k7OztnQjtnQjs7O2lDLE8saUI7Yzs7OztnQjs7O2dCO2lCLFE7OztpQjttQjs7O3NCOzs7Ozs7Ozs7cUI7OztnQjtlO0c7O0k7O3lDLFcscUI7O0k7Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STtJOztJLHVCO0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8sb0Q7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7OytCOzs7Szs7STtHOztJOzs7OztNOzs7VTtTOzs7Ozs7Ozs7OztJLE87Rzs7O0s7TSxJO007UTtVO3lDLE87O00sTSxXO00sTSxXO0s7O0k7STt1Qjs7a0I7SSxxQixVO2tCOztJO0c7O0ksVzs7Ozs7OztJLEs7SztJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7OztNO29EOzs7OztPOztNOzs7Ozs7Ozs7OztNO007TTs7O0k7Rzs7STs7O007MEI7c0I7TTs7Ozs7Ozs7Ozs7TTs7O0k7Rzs7STs7O007cUI7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007OztJO0c7O0k7STtHOzs7SztNO007TTs7TSxtQjs7Ozs7Ozs7OztLO0k7STtHOztJO0k7Rzs7STtJLFc7STs7Ozs7O0s7O0s7Szs7O3dCO0k7Rzs7STtLO0s7Szs7Szs7TTtLO3NCO007O087Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O2U7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007Ozs7Ozs7Ozs7O007OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0ksTzs7d0Msc0I7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2E7ZTs7K0IseUI7O1k7OztZOzs7O2EsVTs7Ozt1Qjs7O1k7Ozs7Ozs7Ozs7OzttQjs7Ozs7O1k7Ozs7YSwrQjs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7Ozs7O1k7Ozs7O2EsVTs7OzJCO1k7Ozs7O1k7Ozs7O2EsVTs7OytCO1k7OztZLHVCLFU7Ozs7eUI7OztZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STtLO0s7Tzs7eUIsbUIsZTs7SztJO2M7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7OztJOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztLLE87OztJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7O1EsTTtPOztJOzs7USxNO087SSx1Qjs7O0k7SztPOzs7OztVLFc7VSxPO1M7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7RztJOzs7OztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7STs7Ozs7OztJO0ssTzs7Ozs2Qjs7STtLLE87OztJO0c7O0k7Ozs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7USxtQztROzs7OzthOzs7Ozs7Ozs7O2dCOztrQjs7b0MsaUM7Ozs7OztvQjs7Ozs7Ozs7YTs7WTs7Ozs7O1EsUztRO1U7Ozs7Ozs7O1E7VTs7O2E7YTt1Qjs7WTs7O08sTzs7Ozs7OztTOzs7OztVO1M7bUI7O1k7OzhCLDZDOztVO1c7OztXO2E7OztnQjs7aUIsTTs7O2dCO2U7O1c7Vzs7VyxPO1c7YTs7Ozs7Ozs7OztVLHFCO1U7VyxhO1csWTtXLGdCO1c7VTs7Ozs7Ozs7OztxQjs7Ozs7O087O1EsVztRLFU7USxjO1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7WTs7b0I7b0QsZTtXO1c7WSxXO1k7Yzs7Z0MsbUIsVTs7WTtjOzs7aUI7aUIsZTtnQjs7WSxPO1ksTztZLE87VztXO1k7Yzs7O2lDLHlDOzs7aUI7Z0I7WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7VztZO2M7Z0Q7WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7VzthOzs7Z0IsVztnQixXO2U7O1c7YTs7K0IsbUIsZTs7VzthOzs7O1csTTtVO1c7O2E7Ozs7OztTO1U7WTs4QztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7O08sTzs7O2lCOzs7O2lCO2dCOzs7O087OztRLEs7UTtVOzt3Qiw2Qjs7UTtVOzsyQjs7USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztnQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVO1E7VTs7O2E7YTtjOztlLGU7Yzs7YTs7O2MsYTs7O2M7ZTs7O2U7O2tCLE07Ozs7O29DOzs7a0M7O2E7Ozs7c0I7O1k7O1EsTztRLFU7OztRO1U7OzZCLGdEOzs7O087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVTs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtRO1U7OzthO2E7OztZOzs7Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7O1UsYTtVLGdCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7Ozs7UTs7OzBCO08sSSx3QztPOztPLG9CLFU7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1EsZTtRO1U7Ozs7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7OztXLFk7Vzs7O1ksVTtZLFc7Ozs7WTs7Z0I7Ozs7O1k7WTs7Ozs7Z0I7Ozs7WSxNO1k7VyxPOzs7Ozs7UTs7WTs7Ozs7UTtROzs7OzthLHdCO2E7Ozs7OztZOzs7Ozs7USxTO1E7VTs7Ozs7Ozs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7VTs7O2M7Yzs7Ozs7Ozs7d0I7OzthOzs7O087Ozs7ZTs7Ozs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLE87OzRCOztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJO0ksTzs7OzhCLDRDOzs7YzthOzs7Ozs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O087O2dCO2tEOzs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTtPO1M7OzJCLG9CLFc7Ozs7O087Ozs7OztjO2dEO1E7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtxQjs7c0M7OztZOztRLFM7UTs7Ozs7OztVOzs7Ozs7VyxPO2E7OztjOzs7Ozs7Ozs7Ozs7OztXOzs7TyxPOzs7aUI7aUI7Z0I7Ozs7TTs7OztPOzs7OztJOzs7YTs7O2dCOzs7aUIsTTtnQjt3Qjs7d0M7OztlOzs7O0k7OztpQjs7OzttQzs7Ozs7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsVTtXO1M7VTtXLE87VzthOzs7Z0I7Z0I7d0I7OztlOztVO1csTTtVOzs7VzthOzs2Qiw4Qzs7VzthOzs7Z0I7Z0IsTzs7OzBCLFU7MEIsTzt5Qjs7O2U7OztXO2E7OztnQixXO2U7O1c7YTs4QztXO2E7OytCLDRDOztXO2E7OztnQjtnQjtlOztXOzs7YztVOzs7OztXOzs7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7OztLO007OztPLE07O1M7OztZLG9CLE07WSxPO1c7Ozs7O0s7TTtROztzQiw2Qjs7TTtROzt3Qjs7TTtROztNOzs7O0k7SyxrQjtLO087OztVOzs7VztXO1c7O1c7O1ksTztZO2M7Ozs7Ozs7O1c7O1U7OztXOzs7VzthOzs7Ozs7OztVO1M7Ozs7O0ssTTtLLFU7O0s7OztNO1E7OztXOzs7WSxRO1k7Yzs7Ozs7Ozs7VztVOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOzs7STtLO007UTs7O1csb0I7Ozs7a0M7O3dFOzs7VyxNO1U7Ozs7Uzs7Ozs7O1U7VSxRO1M7O007UTtLO00sTyxpRDs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STs7O0k7SSxlO0c7O0k7YztjOztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7Ozs7O087USxPO1EsTztXO1EsVztRLE87Ozs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO0k7Ozs7USwwQyxnQjtJLE87Rzs7STs7Ozt5QjtJLGU7Rzs7SSxPOzs7Yzs7O2U7O2M7Ozs7aUM7O2E7OztHOzs7STs7Ozs7YTs7O2dCO2dCO2U7Ozs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjtTO1c7OztjOzs7O2U7OztpQjs7a0I7Ozs7Ozs7c0Msa0I7Ozs7aUI7Ozs7O2tCOzs7Ozs7O2lCOztjO2E7Ozs7OztTO1c7OztjO2M7O2E7OztRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7UztXOzs7Yzs7Ozs7ZTs7O2lCOzs7O2tCOztrQjs7Ozs7Ozt1Qjs7OzBCOzBCOzJCOzRCOzs7dUM7NEI7Ozs7OzJDOzsyQjs7OztrRDs7O3lCOzs7Ozs7Ozs7O2lCOztpQjs7OztrQjtpQjs7OztrQjs7bUIsVzttQjtxQjtrQzs7O21COzs4QjtvQjtxQixPO3FCLE07Ozs7Ozs7eUI7Ozs7Ozs7a0I7OzswQjs7a0I7OzswQjs7Ozs7aUI7O2tCOzs7cUI7a0M7aUI7Ozs7Z0M7Ozs7O2lCOztjO2E7Ozs7Ozs7Uzs7UztXOzttQyw2Qjs7O1MsTTtTLFE7Ozs7OzthOzs7Z0I7Z0I7Ozs7OzhCOzs7Ozs7Ozs7OztTLEksTSxnQzs7OztVO1c7OztnQjtrRDs7OztTO1UsTztVO1k7OztlO2U7ZTtjOzs7VTs7Ozs7Z0I7a0Q7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7UztXOzs7YyxXO2E7O1MsZ0I7OztTOzs7UTs7Ozs7Ozs7OztROzs7Ozs7Ozs7UyxLO1UsTTtTO1UsTTtVLE07OztVO1k7OztlO2U7Ozs7OztjOzs7VTtZOzs7ZTtlOzs7Ozs7Yzs7O1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLLHlDLG9CO0k7Ozs7Szs7O0k7OzthLEk7YTtxQjs7WTtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007O1M7OztZLFc7O1k7Ozs7YSxvQixLO2EsTzs7a0MsVyxnQzs7Ozs7Uzs7OztTLG9COzs7Ozs7Ozs7Ozs7OztnQixHO2lCOztnRDs7Ozs7Ozs7Ozs7OztnQixHO2lCOzs7Ozs7Ozs7YyxHO2U7Ozs7O1MsTTtROztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzsyQixtQjs7Ozs7Ozs7SztNLE87TSxPO007SztNOzs7O1MsTzs7O21CLFE7O2tCOzs7Ozs7OztTLE87OzttQjsyQjs7a0I7Ozs7UyxPOzs7bUI7MkI7O2tCOzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLOztLO0s7TSxPO00sTzs7SztNO1E7TSxPO00sTztvQjtLO0ssTzs7O2U7ZTtlLE87Yzs7O0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTtLO087OztVLFc7VSxPLHlCO1M7O0ssTztLLFU7STs7O087USxTO1E7TztRLE07O087TTs7OztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7O3NCOzs7Ozs7O0s7Ozs7WTs7Ozs7Ozs7OztNLEs7SztPOztzQixXLGlDOztNO087O3dCOztNOztPOzs7OztPOzs7O2E7Ozs7Ozs7Ozs7Ozs7OztLOzs7SztNOzs7O1M7OztLOztJO0ssUztLLFM7Ozs7OztJOzs7Ozs7VTswQyxlOzs7Ozs7Ozs7VzsyQyxlOztLLE07SztPOzs7VTtVO1M7OztLO0s7Ozs7d0I7O0k7STtLO087OztVLHFCLE87VSxPO1M7O0s7Tzs7O1U7VTtTOzs7SztJO0k7SztNO007Ozs7WTs7Ozs7OztLO007Ozs7TTttQjs7TTs7Ozs7O1M7OztLOztNOzs7OztVOzs7Ozs7Ozs7Ozs7STs7O0ssSTs7Ozs7Ozs7Ozs7OztJOzs7O0s7SztLOzs7Ozs7Ozs7YTs7O0k7OztJLE87Ozs7MkI7O0c7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNLFc7Szs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7SSxPOzs7YztlO2UsTTtjO2E7OztHOztJLDhCOzs7O08sTzs7Ozs7O2tCOzs7aUI7aUI7Ozs7cUI7Ozs7d0I7Ozs7aUI7Z0I7O087OztRLFE7UTtRO1E7Ozs7UTs7O1M7OztVLFU7VTtVO1U7Ozs7OztPLE87Ozs7O2lCOztrQjs7a0I7Ozs7Ozs7O3dCOzs7OztrQixPOztnQjs7Ozs7OztPLE87O087Ozs7USxNO08sTzs7OztnQyx1Qzs7Rzs7STtLLEs7SztPOzs7VTs7Ozs7OztVLEssa0M7VTtXLE87VyxPO1csZ0M7VyxTO1csTztVOztrQjs7Uzs7Ozs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLO2E7ZTs7O2tCO2tCLGE7a0I7bUI7OztrQjtpQjs7YSxPO1k7b0I7Ozt1QjttRTt1Qjs7d0I7Ozt1QjtzQjs7Ozs7Ozs7Ozs7O1k7OzthO1k7Ozs7O2dDOzs7TTs7O0ksTztHO0c7O0k7OztLOzs7O0k7RztHO0ksVztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO087OztVOzs7Ozs7ZSxZOzs7O2tCOztrQixNOzs7a0IsTTs7O2M7OztlO2U7MkI7Ozs7Ozs7Ozs7b0I7OztxQixPO3FCLFU7Ozs7O3FDOzs7d0IsSztxQzs7OztxQjs7b0I7b0IsTTs7OztvQixNOzs7Ozs7bUI7Ozs7b0IsUTs7Ozs7O21CLE07Ozs7O29COzs7cUI7O3lCO29COzs7O21COzs7b0IsUTs7Ozs7bUI7Ozs7b0IsUTs7Ozs7bUIscUI7bUIsVzs7OztjO1c7WTthOzthLFE7Ozs7d0I7YTs7Ozs7Ozs7d0I7Ozs7Ozs7Ozs7Ozs7VztZLFE7WTs7O1UsVztVO1M7O0s7Tzs7eUIsbUIsVTs7SyxLO0s7Tzs7eUIsb0IsVzs7SyxNO0s7Tzs7eUIscUIsWTs7SyxPO0s7Tzs7eUIsb0IsVzs7SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1M7Ozs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7O087O3lCLG1CLGE7O0k7O1k7OztlOzs7Ozs7Z0I7a0I7OztlO2M7O0c7O0k7STtLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRLE87Ozs7O2tCOzs7Ozs7a0I7bUI7O21COzs7b0IscUI7Ozs7Ozs7Ozs7Ozs7O21CLFk7Ozs7Ozs7OztxQjtzQixPOzs7OztrQzttQjs7c0I7OztvQixNO3VDO21COztvQjs7Ozs7Ozs7a0IsTzttQixNOztrQjttQjs7bUI7cUI7Ozt3Qjs7Ozs7O3lCLFU7eUI7eUI7eUI7d0I7dUI7Ozs7O2tCLE87Ozs7Ozs7O2lCOzs7UTs7OztTO1E7Ozs7UTs7O1E7OztTOzs7Ozs7UTttQzs7O0c7O0k7SyxvQjs7Szs7Ozs7Ozs7O0ksTzs7Ozs0Qjs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87Ozs7O1cseUMsZTs7O087OztRLE87USxJO1E7O1c7OztVO1EsUTtROzs7Vzs7O2M7YztlOzs7OztnQixPO2UsTzs7YzthOzs7UTtVOzs7YTthLFc7WTs7USxVO1E7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Syx5Qzs7O1E7O1M7Ozs7USxnQjs7UTs7O1M7VztTLE87UyxhO1M7Ozs7O1EsVzs7O1E7Ozs7OztROztTO1c7NEMsYztTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VTs7OztjOzs7K0I7O1U7WTs7Ozs7UztVOzs7O1M7VTs7Ozs7b0I7Ozs7Uzs7a0I7Ozs7Ozs7Ozs7UTs7UztXLHlDLGE7UyxlO1M7Ozs7O1M7Ozs7YyxTO2Msa0I7Yzt1QjthOzs7UTs7USxtQixPOztRO1MsUTtTLE07OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UTs7OztROztTOzs7Uzs7OzthOzs7Ozs7O1E7Z0I7OztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJOztLOzs7Ozs7TyxVO29COzs7O0s7STtJOzs7SyxnQix5QztLLE87STtJO0ssTzs7SztPOzs7VSxrQjtTOzs7SyxPO0ssYTtJO0k7STtHOzs7STs7STtJO0ssWTtLLFM7SztPOzs7VTtTOzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7UztXOzs2QixtQixhOztRLE87Ozs7UTs7UztTLE87USxPOzs7O0c7O0k7STttQjtLLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7Ozs7USxtQjs2QjtRLHdCO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO1M7Vzs7NkIsbUIsYTs7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VSxPO1UsTztTLE87O1EsSSx3QixPO1EsTzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRLFc7USxPOzs0QyxXOzs7Ozs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VzthOzhDLGM7VztXOztXOzs7VTtrQjs7O1U7OztXO1csTTtXLFE7Vzs7O1c7VTs7Ozs7bUI7Ozs7Ozs7Ozs7ZTs7O2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7Z0I7OzttQjttRCxlOztlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7Ozs7VTs7VzthOzZDLGE7Vzs7O1U7OztvQjtxQjs7c0I7OzswQjs7O29CLE87bUI7Ozs7OztXOztZOztZLFE7WTtZLFE7WSxPO1k7OztlOzs7ZTs7O2dCO2dCO2U7Ozs7Ozs7WTtXOzttQjs7VSxXOztVO1csUTtXLE07VyxROzs7Yzs7O2M7OztlO2M7Ozs7Ozs7VztXO1U7Ozs7a0I7OztVOztXOzs7VztXLFE7Vzs7O1U7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7WTtZO1k7MkI7WSxTOzs7ZTs7aUI7Ozs7O2tCO2tCOztpQzs7a0I7aUI7Ozs7eUI7Ozs7Ozs7Ozs7O2UsTTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxNOztZO2EsTzs7ZTtvRCxpQjs7Vzs7VTtXLFE7VztXLFE7Vzs7O2M7OztjOzs7ZTtlOzs4Qjs7Yzs7Ozs7Ozt1Qjs7O1c7VztVOzs7O2tCOzs7Ozs7O007TztRLFE7OztRO1E7Ozs7O087Ozs7O087USxPO1EsTztPLE87O0s7O00sTzs7OEI7O0s7O007TztRLFE7Ozs7OztXOzs7Ozs7O1MsTTs7O087Ozs7O1EsTTs7O0s7O00sTzs7b0M7OztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4QixPO3dCOztHOztJLEksVyw4Qzs7OzRCLE87OztHOztJO0k7Ozs7Ozs7Ozs7O0c7b0MscUM7O0k7STs7SSxPOzs7Yzs7aUI7OztxQjs7O3NCOzs7Ozs7Ozs7Ozs7O3lCOzswQixTOzBCLE07OzRCOzs7Ozt5Qjs7Ozt5Qjs7MEI7NEI7NkQsYzt5Qjs7eUI7MEIsTTs7Ozs7eUI7eUI7MEIsTTs7Ozs7Ozs7MkI7MkI7NEI7O2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7MEI7NEI7NEQsYTs7Ozs7K0IsUzs7K0I7d0M7Ozs7OEI7OzhCOzs7eUIsbUIsTzs7eUI7MEIsTTswQixNOzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7eUI7OzBCOzs7eUI7eUI7MEIsTzs7NEI7Ozt5Qjs7MEIsUTswQjswQixROzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7O2lDOztxQjtvQjs7ZSxNO2MsTzs7O3dCO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3VCOzs7OztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7Ozs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTs7TSxNO007UTtLLE87STtJOztPOztPOztPO2U7Ozs7STtLLE87STs7SztLLFU7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNO0s7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJO0s7SyxhLFc7STtHOzs7Ozs7Ozs7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7O0k7SztPO1M7OztZOzs7Ozs7WSxTO1k7YTtlO2EsSTtZO1c7O0ssUTs7O0ssTztJLE87OztjLGM7O2M7YTs7O0c7O0k7SztPOzs2Qix3Qjs7Ozs7OztJO0c7RywyQyxTOztJLDJCLE8sK0I7Rzs7STs7YSxjLE87Ozs7O3VCLFc7dUI7c0I7WTs7Rzs7STs7O2M7YTs7NEIsUzs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87OztJOzs7YyxXO2MsVzthOzs7YSxXO2EsVztZOzs7OztHO0ksbUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7YyxPLGM7YTs7NEIsTyxjLHFCOzs7O0c7d0IseUI7O0ksUSxxQyxTOztJOzs7YztjO2E7Rzs7SSxPOzs7YztjO2E7OztHOztJLHVEO0k7Rzs7SSxzQztnQjtJOztLLFE7SyxPO0ssTztLLFM7SztLO0ksVzs7O0k7O087Ozs7OztROzs7UTtPOztPOzs7UTs7O087O08sTzsyQzs7OztJO0s7Szs7Szs7TTs7UTs7O1c7VztVOzs7O0k7Rzs7STtLO087OztVO1U7Uzs7O0s7Tzs7Ozs7Vzs7O29COztxQzs7O1U7VSxPOzs7b0I7b0I7bUI7Ozs7STtHOztJLEksVTs7Szs7USxvQjs7Ozt1QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxVO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCOzs7YTs7O2M7Ozs7YTs7Ozs7Ozs7WTtVO1U7Ozs7Yyx3QztjOzthOzs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTtTOztpQyw2Qjs7Ozs7O1E7Ozs7OztTOzs7UTs7Z0MscUM7O1E7Ozs7O1M7UTs7Z0MscUM7O1E7OztTOzs7UTs7Z0MsNkI7Ozs7Ozs7Ozs7O3NCOztVOztnQyxnQzs7OztTOzs7O1U7VTtZOzs0Qjs7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjOzs7O1k7VTtZOzJDLHdCO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNOzs7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7WTs7O3NCLGU7Ozs7OztnQzs4Qzs7Ozs7OzBDOzs7Ozs7Ozs7MEMsTzt5QzsrQjtxQjs7Ozs7OztZOzs7YTs7O2dDLDZDOzs7Z0IsaUIsaUI7Z0I7Ozs7b0I7Z0IsTTs7O3lCOzs7ZTs7Ozs7WTs7O1E7UTs7UTs7OztTLFU7OztTLFU7OztTO1M7O1E7OztrQjs7Ozs7bUI7cUI7bUI7cUI7bUI7O2tCO2lCOztROzs7OztTLFU7OztTO1M7UTs7O2tCOzs7bUIsUTtrQjtpQjs7USwwQjtROztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UztROzs7a0I7a0I7aUI7O1EsOEI7UTs7OEIsc0I7OztROzsrQixzQjs7O1E7OytCLG9CO2dCLDRCOztJOztLO2M7OzhCOztJOztLOztROzBDO2UscUMsUzs7Syw0QixjO0k7OztLLFU7Szs7STs7Ozs7O0s7SztPO0s7SyxTO0ssUTtLOzs7Szs7SztPOzs7Ozs7OztLLFE7SztJO0c7O0ksTzs7MkI7O0c7dUIsNEIsd0I7Rzs7O00sdUI7OztPOztROztXLE87Ozs7OztVO1E7O1csVTtXLE87VTtRO1U7WSx3QyxZOztRLE07UTtVO1ksMkMsZTtRLFMsVztPO2U7OztNO08sTzs7Ozs7Ozs7OztNO007TyxVO08sTztNO007TztTO1csd0MsWTs7TyxNO08sVyxXO007Yzs7Szs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Z0MsTztJLEc7SyxNO0k7SyxPO0ssTztJLFMsTTtJO0c7O0k7OztPLEc7USxNO087O087Ozs7OztRO1U7OzJCOztPOzswQixpQzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOzs7Tzs7c0Isd0M7O087Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7Ozs7Tzs7ZTs7Z0M7Ozs7Tzs7OztRO1U7OzJCOztRO1U7OzthO2E7WTs7O1E7VTs7O2E7YTtZOztRO087O087Ozs7O1E7VTs7MkI7O1E7VTs7O2E7YTtZOztPOzs7Tzs7ZTs7Z0M7OztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7UTtVOzsyQjs7UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7O0ksTzs7O2M7YzthOzs7O0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7OztRO1MsTzs7O1E7Ozs7Ozs7O1E7OztXO1c7VTs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7USxPOztnQzs7OztRO1E7OztXO1c7VTs7USxPOztnQzs7OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztJOzs7SSxPOzt5QixnQyxrQjtHOztJLE87OzRCO0c7O0k7Ozs7O0c7O0k7Ozs7O0s7Ozs7Ozs7Ozs7OztXO2E7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7Szs7O1EsbUIsTztRLFMsTTtRO087O0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SztLO007UTs7MEIsa0IseUI7O007TTtRLDJDO00sZTtNLFU7TTtROzs7VyxPO1U7Ozs7TSxTO007USx5QyxrQjtNLFk7Szs7STtLO007Ozs7TTs7OztVOztLOzs7OztNOzs7ZTs7OztHOzhCO0c7STs7Ozs7Ozs7OztJO0ssUTtLLFk7SyxXO0s7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7Ozs7Ozs7OztXOzs7OzthOzs7OztZOzs7OztTLE87Ozs7eUIsa0I7Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7VTs7Ozs7SyxPO0k7MkIsNEI7O0s7OztLOzs7STs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7SyxPOzs7ZSxrQztlO2M7OztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1MsTzs7aUM7Ozs7Ozs7Ozs7Uzs7O1k7WTtXOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQiwyQjs7UyxPOzs7bUI7bUI7a0I7Ozs7UztTOzsyQixrQiwyQjs7aUI7OzZCOzs7OztTO1MsTzs7aUM7Ozs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7Ozs7UyxPOztpQzs7Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7O1U7WTs7NkI7O1M7Ozs7UztpQjs7a0M7OztTOzs7Ozs7VTtTOztTOzs7OztVO1M7O1M7OztVO1k7OztlOzs7Ozs7OztnQjtnQjtrQjs7ZTtjOztTOztTOzs7O1U7WTs7NkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1U7WTs7NkI7O1M7Ozs7O1M7Ozs7O1U7WTs7NkI7O1U7WTs7O2U7ZTtjOztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VTtZOzs2Qjs7UztVO1csUTs7O1c7YTs7O2dCO2dCLFc7ZTs7VzthOzs7Z0I7Z0IsTztlOzs7O1csTztXO2E7OztnQjtnQjtlOzs7O1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1U7WTs7NkI7O1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7OzthO2EsTzs7cUM7O1k7Uzs7VTtXO3lCOzs7Ozs7Uzs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1M7OzJCLG9CLDZCOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQix3Qjs7UyxPOztrQyxrQix3Qjs7OztTOztTOzsyQixrQixzQjs7aUI7OzZCOzs7OztTLE87O2lDOzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7OztTO1M7Ozs7Ozs7OztTLE87O2lDOzs7Ozs7Ozs7Ozs7O0k7SSxjO0k7Szs7TSxlLDZCOztLO0k7STtLOztNLGUsNkI7O0s7STs7Ozs7OztTLEksVSwyQzs7O2dDOzs7Ozs7Ozs7YTs7Ozs7YyxNO2E7WTtTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7WTs7O2UsVTtlO2M7O1M7OztTLGM7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1UsVztTOzs7OztTOzs7OztVLE07VTtZOzs7ZTtlO2M7O1M7OztTLGU7O1M7Ozs7OztVO1M7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOzs7O1UsbUI7VTs7O1M7VTtVOzs7OztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7eUM7O1M7Ozs7OztVLE07VTtTOzt3Qzs7O1MseUI7OztpQjs7O0k7SztLLFE7SztLLGE7SSxRO0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCO2E7SztJO0c7O0k7OztROztROztROztROztROztROztROztRO2dCOzs7STtHO0c7STs7Ozs7SSxVO0k7Rzs7SSxVO21CO0k7Ozs7Rzs7SSxvQjtJOzs7Tzs7O1EsUztnQjtRLE07TztPLE87TTs7SSxVO0k7SSxPO0c7Rzs7OztJLGtCO0k7STtLLGU7SyxTLDJCO0k7SyxNOztJO0ksSSw0Qjs7OztNO08sTTtPLE87TyxNOztNOzs7OztJO0s7Tzs7O1U7Ozs7O1c7VTtTOzs7OztJO0c7bUIsWTtpQyxZOztJO0k7aUIsTTs7Ozs7OztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksaUI7O0c7O0k7Szs7bUIsVyxxQzs7O0c7O0ksRztLLE87STs7UztLOztROztLLE87O0k7Rzs7SSxPOzs7YyxXO2M7ZTtnQixhO2dCO2tCO3FCOzs7Ozs7Ozs7OztjO3lCOzt1QzswQjs7O2UsWTs7Ozs7O2U7O2dCLE07Z0IsTTtnQixNO2UsTzs7YyxJLFU7Ozs7O2U7O2dCLE07Z0IsTTtlLE87O2M7Ozs7b0I7Ozs7O0c7O0k7OztPOzBCOztPLE87TTs7OztHOztJOztpQjs7OztNLEcsdUM7TTs7Ozs7TTs7O08sTztNOzttQztPOztNOzs7OztHO0c7STs7OztJOztJLGlCOztJLE07Rzs7STs7O0s7SztNO08sTTtPLEs7TTs7O3NCOzs7Ozs7Tzs7Ozs7Ozs7Ozs7SyxJLFE7Ozs7Ozs7ZTs7cUI7O0c7O0k7STtLLE07SyxNOztLO3NDLDRCOzs7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCOzZCLE87NEIsTztHOzs7OztJOzs7Ozs7STs7OzswQiw0Qzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTzs7O0ksVztJLE87O2M7RztHOzs7OztJOztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7OztJO0k7O0k7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7SSxJLHdEOzs7OztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7a0I7O0k7Rzs7SSxXO0k7OztPO087TTs7STtHOztJO0ksTztHOztJLEksK0IsTTtJLE87Rzs7SSxJLHFEOzs7O007TTtNOzs7OztJO0k7STtJO0k7SSwrQjs7OztNO007TTs7Ozs7STtJO0k7STtJO0ksK0I7Ozs7TTtNO007Ozs7O0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCOzs2QixvQyxTO087Tzs7Tzs7UTtVLCtCO087OztVLE8sK0I7Uzs7TzttQzs7Rzs7STs7O08sTztRO087UTtRO1E7Ozs7OztROzs7TTs7O0ssUztLLE87O2tDLE8sMkI7OztlLEksUSxlOzs7dUM7OztjO0k7Ozs7SyxPO0ksZTtJLE87O2lDLE8sK0I7OztjOztpQjs7Ozs7OztpQzt1QjtlLE07O2M7YTtHOztJO0k7STtJLE87Rzs7SSxPOzs7Yzs7O2lCOzs7a0I7O2lCOztpQixxQztpQjs7aUIscUM7aUI7O2lCLHVDO2lCOzs7aUI7O2E7O0c7O0ksVztJOzs7TztPO087TTs7O0k7Rzs7STtHO21DLHVCOztJO087SztJLFc7STs7O087TztPO007Ozs7Rzs7SSxXOzs7STtJOztHOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7STs7O0ssaUI7Szs7TTtNLFU7O2EsTTtLOztJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7STtJOzs7TztRLE07UTs7MEI7OztNOztJO0c7O0k7RzttRDtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Rzs7O00sdUI7O00sVztLOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksTzs7Ozs7Yzs7O0c7O0ksd0I7RztpQzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUztJLE87Ozs7ZTs7Yzs7O2M7ZTtlO2lCLDJCO2M7ZSxNO2MsVTs7YyxPO2E7Rzs7SSxTO0k7STtLLE07SztPOzs7VTtXO1csUztXLE07VyxNO1csTztzQjtVOztXO1csTTs7aUI7VyxNO1UsUztVO1c7WSxNOzs7Ozs7OztVO1UscUI7VTtVLE07Ozs7STtHOztJLGdDO2U7STs7O2tCLFc7SyxRLFc7STtJOzs7SSxnQztlO0k7OztrQixXO0ssUSxXO0k7STs7O0k7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFM7STtLO2U7Szs7O00sVTtNLEc7TyxNOzs7Ozs7Ozs7O1c7Ozs7STtHOztJLGMsK0I7Rzs7STtLLFM7SyxTOztJO0c7OztJO0s7Szs7O0kseUIsTywyQjtJO0s7O1E7VTs7VyxVOztXO1k7Ozs7Ozs7OztZLFU7WTs7VyxPO1U7OEI7Ozs7Szs7UTtVOztXO1c7VTtLOzs7UTs7OzswQixPLDhCOztJLE87Ozs7O2M7YTtHOztJOzs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOztHOzs7TSx1Qjs7TSxXO0s7OztJO0k7SSxPOztpQyxzQzs7O2MsTzt1Qjs7d0I7Ozs7Ozs7dUI7YTtHOztJO0k7OzsyQjs7O0c7O0k7STs7OzJCOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STs7Ozs7Ozs7SSxPO0c7O0k7STtJO0k7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJLE07Rzs7SSxZOztJO0c7O0ksWTs7STtHO0c7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87O0c7O0k7O3NCLE07Ozs7O0s7O1E7O3NCLE8sOEI7O0s7Ozs7O00sTzs7OEI7Ozs7OztHOztJLGdCOztLLE87OzZCOzs7OztHOztJOzs7aUI7O2lDOzs7Ozs7O0c7O0k7SyxTO0ssTztLLFE7a0MsTztJLFc7STs7cUI7Ozs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsTzs7aUM7Ozs7Ozs7OzBCOzs7O1U7O1U7O1U7O1U7O1M7OzBCOzs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2E7O3dCOzt3Qzs7OztZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O21COzttQzs7Ozs7Ozs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztROzs7TTtPO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOytCOztTLGM7dUI7UyxzQixPO1MsTzs7aUM7Ozs7OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOztVLE87O2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7OztTOzs7Ozs7Ozs7OztTOzs7O1UsYzs7VyxPOzttQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs4QixPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7OEI7Ozs7SSxlOzs7OztjOzsrQjs7OztHOztJOzs7O0k7O087O0ksRztLLEksUzs7TTs7TyxNO08sVztPLE87TSxXO00sTTs7SztNLE07Ozs7SztNO087O1U7Ozs7O2E7YTtZOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7UTs7O1c7O1U7Ozs7OztROzs7O1csYztXOztZLGE7WSxZO1c7OztJOzs7TztPO007O0k7SyxRO0s7OztPOzs7USxROzs7Ozs7Ozs7b0I7OztTO1UsTTtnQjs7Ozs7Tzs7Ozs7O1UsSSxjOzs7O1ksTTs7O3FCOzs7O1U7Vzs7Ozs7Vzs7Ozs7OztVO1csTTs7Ozs7OztPO1EsTTs7TztRLE07USxNOzs7Ozs7OztPOzs7Ozs7OztNOzs7UztTO1E7Ozs7Ozs7O0ksVzs7SSxXOzs7Rzs7STtJO0ssTTtLLE07SSxPO0c7RyxJOztJO0s7SyxNO0ssTTtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7UTs7MEIsNEI7O1k7TTs7O0s7Tzs7O1UsbUI7O1UsTztTOztNOzt1QztJLFU7STs7Ozs7Ozs7OztRO1E7UTtROztTLFU7OztPO087O2dDOzs7VTtVO1U7OztXOztZLFU7Ozs7Ozs7OztVOzs7Ozs7O21CO1csTTs7Ozs7VTs7WTtpQjs7YTs7Ozs7Vzs7YTtrQjtZOzs7aUI7Ozs7WSxjOzs7O2E7O1k7O2U7WSxNOzs7Ozs7Ozs7VTs7VyxNOzs7O1U7O1csTTs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7OztJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O08sNEMsUztJOzs7O0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7RztHOztJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7STs7OzJCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0ksTTs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJO0ksTzs7O2M7O2U7OzswQyxpQzs7NEM7ZTtnQjsyQjs7ZTsyQyxXLGM7ZTs7O2tCLHVCLGtCLGlCOzs7a0I7OzJCOzJCLHVCOzBCOzs7a0IsMkIsWSxpQjs7O2tCLDJCLFksaUI7OztrQjtzQyxvQiwwQjs7O2tCO3NDLFksMEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7Ozs4QjtrQjs7O21CO21CO3FCOztzQzs7a0I7OztrQjs7c0Msb0IsMEI7OztrQjs7MkI7b0U7MkI7MEI7OztrQjs7MkI7MkI7MkIsTzswQjs2Qzs7YztjO2E7O0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDZCO0c7Ryw0QjtHO0csNEI7RztHLDJCO0c7RyxpQztHO0csa0M7RztHLGdDO0c7Ryx3QjtHO0csd0I7RztHLHdCO0c7RyxxQjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDhCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO087Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLG9DO0c7RyxpQjtrQixrQzs7SSxlO0ksTztHO3FCLGdEO3dCLGtDOzs0Qix1Qzs0QixpQzs7Ryw4Qjt3QixtQzt3QixrQzs7RyxpQjtHO0csb0I7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7O0k7OztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csc0I7RztHLHdCOzs7Ozs7O0k7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7Ozs7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOzs7Ozs7RywwQjs7SSxPO0c7MEIsbUQ7cUIsTyxpRDt1QixTO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOzs7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7OztLO087Ozs7O0ssTTtLLFk7SyxNO0ssTTs7SyxZO0s7SyxNO0ssUztJO0ksTzs7O0k7STtJOztLLE07SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJLFU7STtLLFk7Ozs7Ozs7STtJO0k7Rzs7SSxHLG1DO0ksZTtJO0k7Rzs7STtLLFU7Szs7O2M7YyxPO2E7STs7O0s7O00sTSxXO0ssZTtLO00sTTtXOzs7Ozs7SztNLE07b0I7Ozs7SztNLDBCO007OztJLE87Ozs7NkIsTyx3QjtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7dUIsZ0M7a0MsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87TTtROzt3QixPLHFDOztNLFE7TSxPO007UTs7d0IsTyxtQzs7O0s7a0IsTTtNOzs7Ozs7O1UsVztVLHFCO1M7TyxVOzs7O0s7O007OztXOzs7OzRCOzs7STtLLFc7SyxXO0ssVztLO087OztVLE8scUI7Uzs7SztPOzs7VSxPLHFCO1M7O0k7Ozs7TTtPOzt1QjtLOzs7OztNLE87SyxXOzs7Ozs7Ozs7OztJOztZOzs7STtLO007OztXO3lDLHlCOzs7O0ksSztLLE87O0k7O0ssVTtNLEk7Ozs7VTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7Ozs7O00sMEI7TSxJOzs7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0s7TSxhO007UTtVOzs0QixPLGtDOztXO1k7Yzs7WSxPO1k7Yzs7O2lCO2tCLFM7a0IsTztpQjtpQixVO2lCLE87Z0I7OztZLEk7VztVO0s7Ozs7Szs7TTtNOzs7SztNO1E7O1M7O1MsYTtTO1M7VTs7VztZLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCO2lCLGM7O2lCOzs7Ozs7Ozs7OztjOzs7O2dCOztpQixPOzs7Ozs7Ozs7Ozs7Ozs7O1E7O3dEO0s7O0c7Ozs7Ozs7O0s7SztLOzs7UTs7UyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLDRCOztPOztLLE87OztLO00sYTs7O1E7O2dDOzs7O00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXO0k7TTs7O1MsTyxxQjtROzs7Ozs7Szs7TTs7O0k7O0s7Tzs7OEI7Ozs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0ssVztLLE87STs7Ozs7O0k7O0c7O0k7OztJOztHOztJOztJOztLLE87SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOztJLE87OztjOzs7ZSxJO2MsRztlLFc7ZSxPOzs7Ozs2Qzs7O2MsVztjLE87YTs7Rzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0ssYztLLEc7TTtjO007O0ssUzs7TTtjO007Ozs7O1MsVztTLE87UTs2Qjs7O0s7TSxPO00sTzs7TTs7Ozs7Szs7Ozs7TTs7O1M7Ozs7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STs7SyxxQztJOztJO0s7Szs7Ozt3QixjO3dCLG1CO3dCLG1COzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDOzs7OzttQzs7Ozs7OztxQzs7Ozs7c0M7Ozs7O3VDOzs7Ozs7O3VCOzs7Ozs7Ozt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEM7Ozs7OzRDLDZCOzs7Ozs2QyxrQzs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt3QixpQjtLOzs7O3NCOztLLGU7SztLOztNOztPLEk7TztPO1M7OztZOzs7OzthLFU7YTthO1k7WTtZO1c7O007OztTOzs7Ozs7VTtTO1M7OztZO2EsRztjO2EsVzthOztZLEc7YTtZLFc7WTtXOzs7O1UsVTtVLFE7Ozs7O1M7UTs7TTs7Ozs7OztPOzs7VTtXLFE7OztXOztVOzs7YSxVO2E7WTs7Ozs7O29CO29COztTOzs7O087YztPLFc7TztPOztvQyxzQzs7Tzs7VTs7O2E7YSxPO1k7O087OztVO1U7VTs7O2E7OztjO2EsTztZOztVO1UsTztTOztPOztNOzs7TSxVO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxTO0ssTTtJO0k7SyxNO0s7TztJLE87YTs7YyxPOzthO0c7O0k7SyxNO0ssTTtLO08sVztJLE87YTtHOztJLE87YTs7YztlLE0sVztlO2lCO21COztlOztlOzs7OztrQjttQixNO21CLE07a0IsTzsyQjs7OztpQjtjO2M7YztjO2M7YTtHOztJO0ssUztLLE07SyxLO0ksTztHOztJLFU7SSxPO2E7O2M7YyxHLDZCO2MsSTs7YTtHOztJO0ssYTtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVztJLE87YTs7Ozs7Z0I7Z0IsTztlOztHOztJLFU7SSxPO2E7OztlOzs7OztlLE87Ozt5QjswQixNOzBCLE07eUIsTzt3Qjs7YztjLE87Ozs7O3dCO3dCLEs7eUI7eUIsSzswQjs7d0I7d0IsTzt1QjthO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dtR3JvQk07Ozs7SUFBQTtJQThITTtJQU1abzZIO0lBRUFDO0lBcENPLGtCQWtDUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFaE5EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFiOztHQUF3QjtZQUM1RHlDO0lBQVUsT0FBQTtHQUEyQjtHQUp3QjtJQUFBLGFBRzdERCxTQUNBQzs7O09BalFGNUU7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCOztROzs7USxPOztRLHNDO1EsUTs7OztROzs7O1E7OztnQjs7O0c7O0k7STs7Ozs7Ozs7Ozs7NEI7OztRLHFDOzs7UTs7O1Esa0IsTzs7UTs7USxzQztROzs7Ozs7Ozs7Ozs7Rzt5Qjs7STtJOzs7Ozs7UyxtQztTOztTLG1DO1M7O1Msa0IsTzs7Uzs7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzs7O1Esa0IsUTt3Qjs7OztrRDt1QztRO1MsUTtTO1M7UztTOzs7Ozs7Ozs7dUI7Ozs7O1E7OztTO1M7UTsyQzs7O1E7dUI7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Uzs7Ozs7USxrQztRO1EsSSw2QjtROztRO1E7O1E7O1M7Uzt1QjtRO3VCO1E7O1E7O1E7O1M7UztRO3lCO1E7eUI7UTs7UTs7USxvQjtROztROzs7UTtRO1E7dUI7Ozs7UTt1Qjs7O0k7O0ssa0I7SztLO0k7STtJO0ksSSxtQjtJLEc7OztLLFE7SyxpQixPLHdCO2lDOztJLG1CO0k7OztPO087TTs7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7Ozs7VSxJLG1COzs7O2MsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O087Ozs7TTtNOzs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O00sb0QsVzs7SSxVO0k7O0c7O0ksVTtJOztHOztJLFU7STs2QixNO0k7Rzs7SSxVO0k7NkIsTTtJO0c7O0k7SztPOzs7SztLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0k7O087SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksa0I7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3JFRWdEOzs7Ozs7OztZQVBGQyxNQUFPQyxJQUFRQyxJQUFLLE9BQWJELE9BQVFDLFdBQXFCOztJQUNwQ0M7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUMsWUFBd0JDO0lBRTFCLElBRldDLDJCQUVQQyxVQUZPRCxnQkFDUFYsU0FBQUE7SUFFSixPQUFBLHVCQURJVyxZQUZzQkY7O09BTXhCRztZQUNBQyxVQUFXSCxRQUFPRCxNQUFNSztJQUFpQixVQVB6Q04sT0FPV0UsUUFBT0Q7b0NBQU1LLFFBRHhCRjtHQUNnRjtZQUVoRkcsUUFBUUQ7SUFDVixJQUFJLGNBQUssV0FEQ0EsUUFDTjs7OzRCQUNhOzs7R0FBSTtZQUduQkUsTUFBTUMsR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBZ0M7WUFDbkRDLGFBQWFILEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FOaENKOzZCQU1tRCxPQUFuQix1QkFBbkJFLEdBQUdDLEtBQUtiLEtBQUtjLEtBQTBEO0dBQUM7WUFDckZFLGlCQUFpQkosR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBdUM7WUFDckVH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O09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkVBUztPQTdFQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BRUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdEVBVDtPQXNFQVM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FHQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThGQVU7T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQTBEQU07T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0dBVztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVVBQztPQXBCQUY7T0FVQUM7T0FvQkFFO09BOUJBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQXdDQUk7T0FXQUM7T0FuREFMO09BQUFBO09BQUFBO09BQUFBO09BNkRBTTtPQVdBQztPQXhFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FtRkFRO09BbkZBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTRGQVM7T0E1RkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUdBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0JBRTtPQXBCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQTJCQUc7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXJOQXhCO09BcU5Bd0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FsQkFGO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FBQUE7T0ErREFPO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdFQVE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F4RUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUZBUztPQWpGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EwRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXpNQXZCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb09BMEI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwT0ExQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZPQTJCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BN09BM0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUxBb0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BU0FDO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUE0Mk5BaUI7O09BcnlOQVQ7T0FFQUM7T0FFQUM7T0FHQUM7T0FBQUE7T0FBQUE7T0FPQUM7T0FPQUM7T0FPQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUFzeU5BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQW55TkFGLGFBb3dOQUMsaUJBK0JBQzs7OztFOzs7Ozs7Ozs7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RW9CVSxPQUZWaEI7S0FDdkI7VUFDOENPO01BQy9DO09BQU07UUFEeUNDO1VBQ3pDOytCQXBYSkgsa0JBbVg2Q0UsaUJBRnZCUDtlQUV1QlE7T0ErSXhCLFdBakpDUixXQUFBQTtPQUV1Qk8sa0JBQUFDOzthQUFBQTs7UyxvQkFGakNGLEtBQVVOLFM7O1MscUJBQUFBO1MsY0FBQUE7UyxvQkFBVk0sS0FBVU47OztTLHVCQUFBQTtTLGNBQUFBO1Msb0JBQVZNLEtBQVVOOzs7U0FrQ3hCLFFBQUEsOEJBbEN3QkEsUUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FnRHhCO1VBQUEsS0FBQSw4QkFoRHdCQSxRQUFBQTtVQXFEeEIsS0FBQSw4QkFyRHdCQSxRQUFBQTtVQTBEeEIsS0FBQSw4QkExRHdCQSxRQUFBQTs7Ozs7O1U7VyxRLDhCQUFBQTs7OztXO2E7Ozs7Ozs7O1U7O1MsVTtTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBa0Z4QjtVQUFBLE9BQUEsOEJBbEZ3QkEsUUFBQUE7VUF1RnhCLE9BQUEsOEJBdkZ3QkEsUUFBQUE7VTs7OztVOzs7OztVLE07UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQXNHeEIsVUFBQSw4QkF0R3dCQSxRQUFBQTtTLG9CQUFWTTtTLG9CQUFBQTtTLG9CQUFBQSxLQUFVTjs7O1MsY0FBQUE7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OzttQkFBQUEsbUJBQUFBO1Msb0JBQVZNLEtBQVVOO1Msb0JBQVZNLEtBQVVOOzs7Uzs7WTtxQ0FFVWdCLFVBQUFBLFdBQUFBO1MsTzs7O0lBRGM7O0s7O007a0I7OztrQjtLLHFCO0k7STs7Ozs7OzttQyxTO3lCLFM7NkIsYzs7SSxXO0c7a0QsTztHOzZDLE87Rzs7Ozs7Ozs7SSxVO0ksVztHOztJLHFCO0c7OEIsTyx3Qzs7SSxPO0c7O0ksVTtJLE87Rzs7STs7RzsrQixzQjs7STs7O0ssbUI7SSxlOzs7O0ksZTs7Z0QseUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7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QUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7NkI7NkI7Ozt3Qjs7NkI7NkI7NkI7NkI7NkI7NkI7O3dCOzs7Ozs2Qjs2Qjs2Qjs7NkI7NkI7NkI7U0F4SU52Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQU1BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVlBRTtJQzlMSTBGO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFB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OzhCOzhCOzs7d0I7d0I7Ozs7Ozs4Qjs4Qjs4Qjs7OEI7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7OytCOytCOzs7eUI7OytCOytCOytCOytCOytCOytCOzt5Qjs7Ozs7K0I7K0I7K0I7OytCOytCOytCO1NBREFkO1NBQ0FjO0lBR0pYO0lBQ0FZO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lDcGFJQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBV05DO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lEOFlNQztJQUNBQzs7OztTQzFhQTdFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOzs7Ozs7O1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQXdCTjBDO1NBeEJNekM7U0FBQUM7Ozs7U0FXTnFDOzs7U0FlQUs7U0FEQUQ7O1NBekJNeEM7U0EyQk4wQzs7OztTQU5BTDs7O1NBckJNcEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FzQk5pQztTQXRCTWhDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NEeWFBUTtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUtFO1FBRUFFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0FFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0dFO1FBQVJDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFyRTtRQUFBZDtRQUFBVTtRQUFBVDtRQUFRdUY7OztTQTdCSHZJO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBQ0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUtLRTtVQUFSQztVQUFBQztVQUFBRztVQUFBRDtVQUFBRDtVQUFBRztVQUFBQztVQUFBQztVQXVCRk87VUFBQUM7VUFBQVM7VUFyQk01RDs7U0FVRGtFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0xDO1NBQUFDO1NBQUFFO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUtFO1NBRUFFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRCVnArRDtJQUNBbXFLO0lBQ0FsckQ7SUFDQWhzQztHQU9LO0dBR2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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R0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFBQUc7Z0JBQUFBO2dCQUFBQTs7SUFEQWlxQzs7dUJBQUEsU0FBcUI7O1dBQXJCcEM7T0FBQUQ7Z0JBQUE1bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFIO2dCQUFBRztnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQWtxQzs7dUJBQUEsU0FBaUI7O1dBQWpCbkM7T0FBQUQ7Z0JBQUE5bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUg7Z0JBQUFHO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQW1xQzs7dUJBQUEsU0FBaUI7O1dBQWpCbEM7T0FBQUQ7Z0JBQUFob0MsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFB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O1NBT2dCLE9BQUEsV0FBaEJzQyxLQUFXRDs7Ozs7bUJBUFR0QyxtQ0FBQUE7WUFLUzRDLE1BTFQ1QyxRQUtGNkMsTUFMQTVDO1FBS2dCLE9BQUEsV0FBaEI0QyxLQUFXRDs7O0tBOEJkOztHQUFLO1lBRVozQixhQUFjL0QsS0FBSU8sS0FBSTFFLEdBQUksT0E3SDFCdUcsR0E2SGNwQyxLQUFJTyxLQUFJMUUsR0FBd0I7WUFDOUNtSSxpQkFBa0JoRSxLQUFJbkUsR0FBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkUsR0FBMkI7WUFDakRvSSxrQkFBbUJqRSxLQUFJSyxJQUFHeEU7SUF4SGxCLElBQU4wRyxNQUFNLCtCQXdIZWxDO0lBdkh6QixPQUFBOzthQURJa0M7O2tDLE9BUEZILEdBK0htQnBDO2FBQU9uRTtHQUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sUTs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxROztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVLHVCOzs7O1E7UztTOzs7OztVLHVCOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sSSxjO087UTtRO2lCOzs7UztTO1M7a0I7Ozs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7aUI7UyxNOztpQixNO1M7aUI7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztpQjtTLE07O2lCLE07Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO1EsaUI7UTtRO1E7aUI7O1M7UztTO1MsbUI7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztROztROztROztRO1M7UztTO1M7UztTO1M7UztVO1U7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7O1E7Uzs7WTs7Uzs7Ozs7VztXO1c7O1c7WTs7ZTs7OztnQixPOztnQjs7Z0I7O1k7Ozs7O1csTzs7Vzs7Vzs7OztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7Ozs7STtJO0ssTTtJOztLOztNOztJOzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7OzZDLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7OztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs0QyxPOztLLG1COztLO007TztRLE87UTtROzs7O087Ozs7O2tCOztPO0k7STs7O0ksUztJLG9CLE8sMkI7STtJO0c7cUJBRHZDbUU7SSxJQUFJbkU7SUFBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkU7Rzs7SSxPQXRXdEJvRTtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7Ozs7OztHOztJO0k7YSxPOzs7TSxlLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7T0FtUElxQztPQTBFSk07T0FHSUM7T0F4b0JB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LEk7STtJO0k7O0s7SztLO0s7O0k7STtJO0k7STtLLEk7SztLO0s7SztLO0s7SztLO0s7Szs7Szs7Ozs7O087O1EsTTtjO2M7YztPO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7UTs7Uzs7Uzs7UztROzs7TztROzs7Ozs7OztPOzs7Ozs7Ozs7TTs7Ozs7SSxROztLO0s7SztLO0s7STtJO0k7STtJO0k7SSxPOzs7STtLLE0sbUI7SyxNO0ssSTtrQzsrQjtJLE87RztzQiwrQjtzQixpQzs7STtLLEk7ZTtnQjtJO0k7SSxPO0c7O0ksdUIsTyxvQztHO0csd0I7O0k7SyxLO0ssSztLLEs7SyxLO0ssSztLLEk7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO0ksdUIsb0M7Rzs7SSw4Qjs7O0s7OztJO0c7MEIsYSxvQzs7Ozt3QixTOztJLDRCLE07NkI7Z0M7SSxXOzs7STtLLFE7SyxxQjtLO0s7STtJLFE7STtJO0k7STtJLE87RztxQyxzQjs7STtnQjs7STtHOytCLFM7K0IsUzs7SSw0QixNO0k7OztjOztlOztnQjttQjtLO007TyxJO087TztPOztVLFcsTTtzQjtxQixNO3NCO3FCLE07c0IsTTtVO1M7Tzs7VSxlO3NCO1M7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztPO087Ozs7Ozs7USxjO1E7O087Tzs7Ozs7Ozs0Qjs7O0k7OztJLDhCO0ksdUIsNEM7STtLLEk7SztLOztLOzs7STs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7b0IsTztLLFU7Szs7Ozs7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDbFZVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBK3VGdUJLO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQzs7Ozs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7OztJQUFBQzs7O0lBQUFDOzs7Ozs7O0lBdlZYQztJQUFBQztJQUFBQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7OztJQW41RXBCQzs7Ozs7Ozs7Ozs7Ozs7SUFMUTs7UUFHUjFMO0lBRG9DLFdBQ3BDQSxPQUVBMEw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0N0SUk7R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gc3RyZnRpbWVcbi8vIGdpdGh1Yi5jb20vc2Ftc29uanMvc3RyZnRpbWVcbi8vIEBfc2pzXG4vL1xuLy8gQ29weXJpZ2h0IDIwMTAgLSAyMDE1IFNhbWkgU2FtaHVyaSA8c2FtaUBzYW1odXJpLm5ldD5cbi8vXG4vLyBNSVQgTGljZW5zZVxuLy8gaHR0cDovL3Nqcy5taXQtbGljZW5zZS5vcmdcbi8vXG5cbjsoZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgRGVmYXVsdExvY2FsZSA9IHtcbiAgICAgICAgICAgIGRheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICAgICAgICAgIHNob3J0RGF5czogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgICAgICAgICAgIG1vbnRoczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICAgICAgICAgICAgQU06ICdBTScsXG4gICAgICAgICAgICBQTTogJ1BNJyxcbiAgICAgICAgICAgIGFtOiAnYW0nLFxuICAgICAgICAgICAgcG06ICdwbScsXG4gICAgICAgICAgICBmb3JtYXRzOiB7XG4gICAgICAgICAgICAgICAgRDogJyVtLyVkLyV5JyxcbiAgICAgICAgICAgICAgICBGOiAnJVktJW0tJWQnLFxuICAgICAgICAgICAgICAgIFI6ICclSDolTScsXG4gICAgICAgICAgICAgICAgVDogJyVIOiVNOiVTJyxcbiAgICAgICAgICAgICAgICBYOiAnJVQnLFxuICAgICAgICAgICAgICAgIGM6ICclYSAlYiAlZCAlWCAlWScsXG4gICAgICAgICAgICAgICAgcjogJyVJOiVNOiVTICVwJyxcbiAgICAgICAgICAgICAgICB2OiAnJWUtJWItJVknLFxuICAgICAgICAgICAgICAgIHg6ICclRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFN0cmZ0aW1lID0gbmV3IFN0cmZ0aW1lKERlZmF1bHRMb2NhbGUsIDAsIGZhbHNlKSxcbiAgICAgICAgaXNDb21tb25KUyA9IHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICBuYW1lc3BhY2U7XG5cbiAgICAvLyBDb21tb25KUyAvIE5vZGUgbW9kdWxlXG4gICAgaWYgKGlzQ29tbW9uSlMpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gbW9kdWxlLmV4cG9ydHMgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZTtcbiAgICAgICAgaWYoam9vX2dsb2JhbF9vYmplY3QpIGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cbiAgICAvLyBCcm93c2VycyBhbmQgb3RoZXIgZW52aXJvbm1lbnRzXG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEdldCB0aGUgZ2xvYmFsIG9iamVjdC4gV29ya3MgaW4gRVMzLCBFUzUsIGFuZCBFUzUgc3RyaWN0IG1vZGUuXG4gICAgICAgIG5hbWVzcGFjZSA9IGpvb19nbG9iYWxfb2JqZWN0IHx8IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKTsgfSgpKTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cblxuICAgIC8vIERlcHJlY2F0ZWQgQVBJLCB0byBiZSByZW1vdmVkIGluIHYxLjBcbiAgICB2YXIgX3JlcXVpcmUgPSBpc0NvbW1vbkpTID8gXCJyZXF1aXJlKCdzdHJmdGltZScpXCIgOiBcInN0cmZ0aW1lXCI7XG4gICAgdmFyIF9kZXByZWNhdGlvbldhcm5pbmdzID0ge307XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRpb25XYXJuaW5nKG5hbWUsIGluc3RlYWQpIHtcbiAgICAgICAgaWYgKCFfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gXCIgKyBuYW1lICsgXCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMS4wLiBJbnN0ZWFkLCB1c2UgYFwiICsgaW5zdGVhZCArIFwiYC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVUWiA9IGRlcHJlY2F0ZWRTdHJmdGltZVRaO1xuICAgIG5hbWVzcGFjZS5zdHJmdGltZVVUQyA9IGRlcHJlY2F0ZWRTdHJmdGltZVVUQztcbiAgICBuYW1lc3BhY2UubG9jYWxpemVkU3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQ7XG5cbiAgICAvLyBBZGFwdCB0aGUgb2xkIEFQSSB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBuZXcgQVBJLlxuICAgIGZ1bmN0aW9uIGFkYXB0Rm9yd2FyZHMoZm4pIHtcbiAgICAgICAgZm4ubG9jYWxpemUgPSBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi50aW1lem9uZSA9IGRlZmF1bHRTdHJmdGltZS50aW1lem9uZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnV0YyA9IGRlZmF1bHRTdHJmdGltZS51dGMuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoYWRhcHRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBhZGFwdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgLy8gZCBhbmQgbG9jYWxlIGFyZSBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBsb2NhbGUpXG4gICAgICAgIGlmIChkICYmIGQuZGF5cykge1xuICAgICAgICAgICAgbG9jYWxlID0gZDtcbiAgICAgICAgICAgIGQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGRlcHJlY2F0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0pYFwiLCBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVFooZm10LCBkLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgICAgIC8vIGxvY2FsZSBpcyBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBkYXRlLCB0aW1lem9uZSlcbiAgICAgICAgaWYgKCh0eXBlb2YgbG9jYWxlID09ICdudW1iZXInIHx8IHR5cGVvZiBsb2NhbGUgPT0gJ3N0cmluZycpICYmIHRpbWV6b25lID09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWV6b25lID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgdmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcy50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IChsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZSkudGltZXpvbmUodGltZXpvbmUpO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICB2YXIgdXRjU3RyZnRpbWUgPSBkZWZhdWx0U3RyZnRpbWUudXRjKCk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBkYXRlLCBsb2NhbGUpYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIFtkYXRlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IHV0Y1N0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiB1dGNTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkKGxvY2FsZSkge1xuICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplZFN0cmZ0aW1lKGxvY2FsZSlgXCIsIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKVwiKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpO1xuICAgIH1cbiAgICAvLyBFbmQgb2YgZGVwcmVjYXRlZCBBUElcblxuICAgIC8vIFBvbHlmaWxsIERhdGUubm93IGZvciBvbGQgYnJvd3NlcnMuXG4gICAgaWYgKHR5cGVvZiBEYXRlLm5vdyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBEYXRlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiArbmV3IERhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTdHJmdGltZShsb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNUaW1lem9uZSkge1xuICAgICAgICB2YXIgX2xvY2FsZSA9IGxvY2FsZSB8fCBEZWZhdWx0TG9jYWxlLFxuICAgICAgICAgICAgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID0gY3VzdG9tVGltZXpvbmVPZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIF91c2VVdGNCYXNlZERhdGUgPSB1c2VVdGNUaW1lem9uZSB8fCBmYWxzZSxcblxuICAgICAgICAgICAgLy8gd2Ugc3RvcmUgdW5peCB0aW1lc3RhbXAgdmFsdWUgaGVyZSB0byBub3QgY3JlYXRlIG5ldyBEYXRlKCkgZWFjaCBpdGVyYXRpb24gKGVhY2ggbWlsbGlzZWNvbmQpXG4gICAgICAgICAgICAvLyBEYXRlLm5vdygpIGlzIDIgdGltZXMgZmFzdGVyIHRoYW4gbmV3IERhdGUoKVxuICAgICAgICAgICAgLy8gd2hpbGUgbWlsbGlzZWNvbmQgcHJlY2lzZSBpcyBlbm91Z2ggaGVyZVxuICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSB2ZXJ5IGhlbHBmdWwgd2hlbiBzdHJmdGltZSB0cmlnZ2VyZWQgYSBsb3Qgb2YgdGltZXMgb25lIGJ5IG9uZVxuICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSAwLFxuICAgICAgICAgICAgX2NhY2hlZERhdGU7XG5cbiAgICAgICAgZnVuY3Rpb24gX3N0cmZ0aW1lKGZvcm1hdCwgZGF0ZSkge1xuICAgICAgICAgICAgdmFyIHRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZXN0YW1wID4gX2NhY2hlZERhdGVUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSBjdXJyZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wKTtcblxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBfY2FjaGVkRGF0ZVRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG93IHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mIGRhdGUgaW5zdGFudGlhdGlvbiBmb3IgdXRjIGhlcmU/XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSB0aWVkIHRvIGdldFRpbWV6b25lT2Zmc2V0IG9mIHRoZSBjdXJyZW50IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXAgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihfY2FjaGVkRGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGUgPSBfY2FjaGVkRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgX2xvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBmb3JtYXQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGFyQ29kZSA9IGZvcm1hdC5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5TY29wZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAnLSdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICdfJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDk1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnOidcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA1OCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRlbmRlZFRaKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gZGV0ZWN0ZWQgdXNlIG9mIHVuc3VwcG9ydGVkICU6OiBvciAlOjo6IG1vZGlmaWVycyB0byBzdHJmdGltZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyQ29kZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlcyBmb3IgbmV3IERhdGUoMCkgaW4gR01UXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHVyc2RheSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLmRheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW51YXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUubW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyAxMDApLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxLzAxLzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ELCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwLTAxLTAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5GLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhNYXRoLmZsb29yKHRpbWVzdGFtcCAlIDEwMDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1pbnV0ZXMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdhbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuYW0gOiBsb2NhbGUucG07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuUiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0U2Vjb25kcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ULCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnc3VuZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ21vbmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE2OjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5YLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdHTVQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBcIkdNVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4bWUgb3B0aW1pemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR6U3RyaW5nID0gZGF0ZS50b1N0cmluZygpLm1hdGNoKC9cXCgoW1xcd1xcc10rKVxcKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gdHpTdHJpbmcgJiYgdHpTdHJpbmdbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnREYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuYywgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IE1hdGguY2VpbCgoZGF0ZS5nZXRUaW1lKCkgLSB5LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhkYXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1vbnRoKCkgKyAxLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMXN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKSArIG9yZGluYWwoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5BTSA6IGxvY2FsZS5QTTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyOjAwOjAwIEFNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuciwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFx0JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXkgPT09IDAgPyA3IDogZGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxIC0gNywgTW9uZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEtSmFuLTE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy52LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMCAtIDYsIFN1bmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyLzMxLzY5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMueCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAoJycgKyBkYXRlLmdldEZ1bGxZZWFyKCkpLnNsaWNlKDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnKzAwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZXh0ZW5kZWRUWiA/IFwiKzAwOjAwXCIgOiBcIiswMDAwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2N1c3RvbVRpbWV6b25lT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQgLyAoNjAgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSBvZmYgPCAwID8gJy0nIDogJysnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VwID0gZXh0ZW5kZWRUWiA/ICc6JyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKE1hdGguYWJzKG9mZiAvIDYwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW5zID0gTWF0aC5hYnMob2ZmICUgNjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gc2lnbiArIHBhZFRpbGwyKGhvdXJzKSArIHNlcCArIHBhZFRpbGwyKG1pbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAnJSdcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSAzNykge1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gX3N0cmZ0aW1lO1xuXG4gICAgICAgIHN0cmZ0aW1lLmxvY2FsaXplID0gZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKGxvY2FsZSB8fCBfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIF91c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnRpbWV6b25lID0gZnVuY3Rpb24odGltZXpvbmUpIHtcbiAgICAgICAgICAgIHZhciBjdXN0b21UaW1lem9uZU9mZnNldCA9IF9jdXN0b21UaW1lem9uZU9mZnNldDtcbiAgICAgICAgICAgIHZhciB1c2VVdGNCYXNlZERhdGUgPSBfdXNlVXRjQmFzZWREYXRlO1xuXG4gICAgICAgICAgICB2YXIgdGltZXpvbmVUeXBlID0gdHlwZW9mIHRpbWV6b25lO1xuICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicgfHwgdGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHVzZVV0Y0Jhc2VkRGF0ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBJU08gODYwMSBmb3JtYXQgdGltZXpvbmUgc3RyaW5nLCBbLStdSEhNTVxuICAgICAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gdGltZXpvbmVbMF0gPT09ICctJyA/IC0xIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMSwgMyksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgzLCA1KSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gc2lnbiAqICgoNjAgKiBob3VycykgKyBtaW51dGVzKSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gbWludXRlczogNDIwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSB0aW1lem9uZSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudXRjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgdHJ1ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwyKG51bWJlclRvUGFkLCBwYWRkaW5nQ2hhcikge1xuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT09ICcnIHx8IG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PSBudWxsKSB7XG4gICAgICAgICAgICBwYWRkaW5nQ2hhciA9ICcwJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFkZGluZ0NoYXIgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMyhudW1iZXJUb1BhZCkge1xuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5OSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAwJyArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvdXJzMTIoaG91cikge1xuICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgLSAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdFdlZWtkYXk6ICdzdW5kYXknIG9yICdtb25kYXknLCBkZWZhdWx0IGlzICdzdW5kYXknXG4gICAgLy9cbiAgICAvLyBQaWxmZXJlZCAmIHBvcnRlZCBmcm9tIFJ1YnkncyBzdHJmdGltZSBpbXBsZW1lbnRhdGlvbi5cbiAgICBmdW5jdGlvbiB3ZWVrTnVtYmVyKGRhdGUsIGZpcnN0V2Vla2RheSkge1xuICAgICAgICBmaXJzdFdlZWtkYXkgPSBmaXJzdFdlZWtkYXkgfHwgJ3N1bmRheSc7XG5cbiAgICAgICAgLy8gVGhpcyB3b3JrcyBieSBzaGlmdGluZyB0aGUgd2Vla2RheSBiYWNrIGJ5IG9uZSBkYXkgaWYgd2VcbiAgICAgICAgLy8gYXJlIHRyZWF0aW5nIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICB2YXIgd2Vla2RheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChmaXJzdFdlZWtkYXkgPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA9PT0gMCkgLy8gU3VuZGF5XG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IDY7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgd2Vla2RheS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZpcnN0RGF5T2ZZZWFyVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKSxcbiAgICAgICAgICAgIGRhdGVVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgICAgICAgeWRheSA9IE1hdGguZmxvb3IoKGRhdGVVdGMgLSBmaXJzdERheU9mWWVhclV0YykgLyA4NjQwMDAwMCksXG4gICAgICAgICAgICB3ZWVrTnVtID0gKHlkYXkgKyA3IC0gd2Vla2RheSkgLyA3O1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHdlZWtOdW0pO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgb3JkaW5hbCBzdWZmaXggZm9yIGEgbnVtYmVyOiBzdCwgbmQsIHJkLCBvciB0aFxuICAgIGZ1bmN0aW9uIG9yZGluYWwobnVtYmVyKSB7XG4gICAgICAgIHZhciBpID0gbnVtYmVyICUgMTA7XG4gICAgICAgIHZhciBpaSA9IG51bWJlciAlIDEwMDtcblxuICAgICAgICBpZiAoKGlpID49IDExICYmIGlpIDw9IDEzKSB8fCBpID09PSAwIHx8IGkgPj0gNCkge1xuICAgICAgICAgICAgcmV0dXJuICd0aCc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiAnc3QnO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gJ25kJztcbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICdyZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSB7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIHx8IDApICogNjAwMDA7XG4gICAgfVxuXG59KCkpO1xuIiwiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuVmlydHVhbERvbSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZShcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxufSx7XCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIjoyNH1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRpZmYgPSByZXF1aXJlKFwiLi92dHJlZS9kaWZmLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG59LHtcIi4vdnRyZWUvZGlmZi5qc1wiOjQ3fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vKiFcbiAqIENyb3NzLUJyb3dzZXIgU3BsaXQgMS4xLjFcbiAqIENvcHlyaWdodCAyMDA3LTIwMTIgU3RldmVuIExldml0aGFuIDxzdGV2ZW5sZXZpdGhhbi5jb20+XG4gKiBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBFQ01BU2NyaXB0IGNvbXBsaWFudCwgdW5pZm9ybSBjcm9zcy1icm93c2VyIHNwbGl0IG1ldGhvZFxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyBhIHJlZ2V4IG9yIHN0cmluZyBzZXBhcmF0b3IuIE1hdGNoZXMgb2YgdGhlXG4gKiBzZXBhcmF0b3IgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IGFycmF5LiBIb3dldmVyLCBpZiBgc2VwYXJhdG9yYCBpcyBhIHJlZ2V4IHRoYXQgY29udGFpbnNcbiAqIGNhcHR1cmluZyBncm91cHMsIGJhY2tyZWZlcmVuY2VzIGFyZSBzcGxpY2VkIGludG8gdGhlIHJlc3VsdCBlYWNoIHRpbWUgYHNlcGFyYXRvcmAgaXMgbWF0Y2hlZC5cbiAqIEZpeGVzIGJyb3dzZXIgYnVncyBjb21wYXJlZCB0byB0aGUgbmF0aXZlIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBhbmQgY2FuIGJlIHVzZWQgcmVsaWFibHlcbiAqIGNyb3NzLWJyb3dzZXIuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gc2VwYXJhdG9yIFJlZ2V4IG9yIHN0cmluZyB0byB1c2UgZm9yIHNlcGFyYXRpbmcgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbGltaXRdIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUgaW4gdGhlIHJlc3VsdCBhcnJheS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2Ygc3Vic3RyaW5ncy5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQmFzaWMgdXNlXG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJyk7XG4gKiAvLyAtPiBbJ2EnLCAnYicsICdjJywgJ2QnXVxuICpcbiAqIC8vIFdpdGggbGltaXRcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnLCAyKTtcbiAqIC8vIC0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBCYWNrcmVmZXJlbmNlcyBpbiByZXN1bHQgYXJyYXlcbiAqIHNwbGl0KCcuLndvcmQxIHdvcmQyLi4nLCAvKFthLXpdKykoXFxkKykvaSk7XG4gKiAvLyAtPiBbJy4uJywgJ3dvcmQnLCAnMScsICcgJywgJ3dvcmQnLCAnMicsICcuLiddXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uIHNwbGl0KHVuZGVmKSB7XG5cbiAgdmFyIG5hdGl2ZVNwbGl0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdCxcbiAgICBjb21wbGlhbnRFeGVjTnBjZyA9IC8oKT8/Ly5leGVjKFwiXCIpWzFdID09PSB1bmRlZixcbiAgICAvLyBOUENHOiBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cFxuICAgIHNlbGY7XG5cbiAgc2VsZiA9IGZ1bmN0aW9uKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgYG5hdGl2ZVNwbGl0YFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2VwYXJhdG9yKSAhPT0gXCJbb2JqZWN0IFJlZ0V4cF1cIikge1xuICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG4gICAgdmFyIG91dHB1dCA9IFtdLFxuICAgICAgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyBcImlcIiA6IFwiXCIpICsgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIpICsgKHNlcGFyYXRvci5leHRlbmRlZCA/IFwieFwiIDogXCJcIikgKyAvLyBQcm9wb3NlZCBmb3IgRVM2XG4gICAgICAoc2VwYXJhdG9yLnN0aWNreSA/IFwieVwiIDogXCJcIiksXG4gICAgICAvLyBGaXJlZm94IDMrXG4gICAgICBsYXN0TGFzdEluZGV4ID0gMCxcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICBzZXBhcmF0b3IgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgXCJnXCIpLFxuICAgICAgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICBzdHIgKz0gXCJcIjsgLy8gVHlwZS1jb252ZXJ0XG4gICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZykge1xuICAgICAgLy8gRG9lc24ndCBuZWVkIGZsYWdzIGd5LCBidXQgdGhleSBkb24ndCBodXJ0XG4gICAgICBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cChcIl5cIiArIHNlcGFyYXRvci5zb3VyY2UgKyBcIiQoPyFcXFxccylcIiwgZmxhZ3MpO1xuICAgIH1cbiAgICAvKiBWYWx1ZXMgZm9yIGBsaW1pdGAsIHBlciB0aGUgc3BlYzpcbiAgICAgKiBJZiB1bmRlZmluZWQ6IDQyOTQ5NjcyOTUgLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgICAqIElmIDAsIEluZmluaXR5LCBvciBOYU46IDBcbiAgICAgKiBJZiBwb3NpdGl2ZSBudW1iZXI6IGxpbWl0ID0gTWF0aC5mbG9vcihsaW1pdCk7IGlmIChsaW1pdCA+IDQyOTQ5NjcyOTUpIGxpbWl0IC09IDQyOTQ5NjcyOTY7XG4gICAgICogSWYgbmVnYXRpdmUgbnVtYmVyOiA0Mjk0OTY3Mjk2IC0gTWF0aC5mbG9vcihNYXRoLmFicyhsaW1pdCkpXG4gICAgICogSWYgb3RoZXI6IFR5cGUtY29udmVydCwgdGhlbiB1c2UgdGhlIGFib3ZlIHJ1bGVzXG4gICAgICovXG4gICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWYgPyAtMSA+Pj4gMCA6IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICBsaW1pdCA+Pj4gMDsgLy8gVG9VaW50MzIobGltaXQpXG4gICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3RyKSkge1xuICAgICAgLy8gYHNlcGFyYXRvci5sYXN0SW5kZXhgIGlzIG5vdCByZWxpYWJsZSBjcm9zcy1icm93c2VyXG4gICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3JcbiAgICAgICAgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBzXG4gICAgICAgIGlmICghY29tcGxpYW50RXhlY05wY2cgJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgIG1hdGNoWzBdLnJlcGxhY2Uoc2VwYXJhdG9yMiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWYpIHtcbiAgICAgICAgICAgICAgICBtYXRjaFtpXSA9IHVuZGVmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPj0gbGltaXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcGFyYXRvci5sYXN0SW5kZXggPT09IG1hdGNoLmluZGV4KSB7XG4gICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXgrKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvci50ZXN0KFwiXCIpKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKFwiXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IGxpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIGxpbWl0KSA6IG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn0pKCk7XG5cbn0se31dLDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgT25lVmVyc2lvbkNvbnN0cmFpbnQgPSByZXF1aXJlKCdpbmRpdmlkdWFsL29uZS12ZXJzaW9uJyk7XG5cbnZhciBNWV9WRVJTSU9OID0gJzcnO1xuT25lVmVyc2lvbkNvbnN0cmFpbnQoJ2V2LXN0b3JlJywgTVlfVkVSU0lPTik7XG5cbnZhciBoYXNoS2V5ID0gJ19fRVZfU1RPUkVfS0VZQCcgKyBNWV9WRVJTSU9OO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2U3RvcmU7XG5cbmZ1bmN0aW9uIEV2U3RvcmUoZWxlbSkge1xuICAgIHZhciBoYXNoID0gZWxlbVtoYXNoS2V5XTtcblxuICAgIGlmICghaGFzaCkge1xuICAgICAgICBoYXNoID0gZWxlbVtoYXNoS2V5XSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xufVxuXG59LHtcImluZGl2aWR1YWwvb25lLXZlcnNpb25cIjo2fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG4ndXNlIHN0cmljdCc7XG5cbi8qZ2xvYmFsIHdpbmRvdywgZ2xvYmFsKi9cblxudmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/XG4gICAgd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIGdsb2JhbCA6IHt9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEluZGl2aWR1YWw7XG5cbmZ1bmN0aW9uIEluZGl2aWR1YWwoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gcm9vdCkge1xuICAgICAgICByZXR1cm4gcm9vdFtrZXldO1xuICAgIH1cblxuICAgIHJvb3Rba2V5XSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgSW5kaXZpZHVhbCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPbmVWZXJzaW9uO1xuXG5mdW5jdGlvbiBPbmVWZXJzaW9uKG1vZHVsZU5hbWUsIHZlcnNpb24sIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciBrZXkgPSAnX19JTkRJVklEVUFMX09ORV9WRVJTSU9OXycgKyBtb2R1bGVOYW1lO1xuICAgIHZhciBlbmZvcmNlS2V5ID0ga2V5ICsgJ19FTkZPUkNFX1NJTkdMRVRPTic7XG5cbiAgICB2YXIgdmVyc2lvblZhbHVlID0gSW5kaXZpZHVhbChlbmZvcmNlS2V5LCB2ZXJzaW9uKTtcblxuICAgIGlmICh2ZXJzaW9uVmFsdWUgIT09IHZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gb25seSBoYXZlIG9uZSBjb3B5IG9mICcgK1xuICAgICAgICAgICAgbW9kdWxlTmFtZSArICcuXFxuJyArXG4gICAgICAgICAgICAnWW91IGFscmVhZHkgaGF2ZSB2ZXJzaW9uICcgKyB2ZXJzaW9uVmFsdWUgK1xuICAgICAgICAgICAgJyBpbnN0YWxsZWQuXFxuJyArXG4gICAgICAgICAgICAnVGhpcyBtZWFucyB5b3UgY2Fubm90IGluc3RhbGwgdmVyc2lvbiAnICsgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEluZGl2aWR1YWwoa2V5LCBkZWZhdWx0VmFsdWUpO1xufVxuXG59LHtcIi4vaW5kZXguanNcIjo1fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1wibWluLWRvY3VtZW50XCI6MTd9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG5cbnZhciBDb21tZW50ID0gcmVxdWlyZShcIi4vZG9tLWNvbW1lbnQuanNcIilcbnZhciBET01UZXh0ID0gcmVxdWlyZShcIi4vZG9tLXRleHQuanNcIilcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcbnZhciBEb2N1bWVudEZyYWdtZW50ID0gcmVxdWlyZShcIi4vZG9tLWZyYWdtZW50LmpzXCIpXG52YXIgRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC5qc1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnQ7XG5cbmZ1bmN0aW9uIERvY3VtZW50KCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImhlYWRcIilcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oZWFkKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYm9keSlcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbdGhpcy5kb2N1bWVudEVsZW1lbnRdXG4gICAgdGhpcy5ub2RlVHlwZSA9IDlcbn1cblxudmFyIHByb3RvID0gRG9jdW1lbnQucHJvdG90eXBlO1xucHJvdG8uY3JlYXRlVGV4dE5vZGUgPSBmdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudE5TID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gbnVsbCA/IG51bGwgOiBTdHJpbmcobmFtZXNwYWNlKVxuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzLCBucylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSkge1xuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpIHtcbiAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQodGhpcylcbn1cblxucHJvdG8uY3JlYXRlRXZlbnQgPSBmdW5jdGlvbiBjcmVhdGVFdmVudChmYW1pbHkpIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50KGZhbWlseSlcbn1cblxucHJvdG8uY3JlYXRlQ29tbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCB0aGlzKVxufVxuXG5wcm90by5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIGdldEVsZW1lbnRCeUlkKGlkKSB7XG4gICAgaWQgPSBTdHJpbmcoaWQpXG5cbiAgICB2YXIgcmVzdWx0ID0gZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChTdHJpbmcobm9kZS5pZCkgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQgfHwgbnVsbFxufVxuXG5wcm90by5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxucHJvdG8uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZVxucHJvdG8uY29udGFpbnMgPSBET01FbGVtZW50LnByb3RvdHlwZS5jb250YWluc1xuXG5wcm90by5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxucHJvdG8uYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbnByb3RvLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbn0se1wiLi9kb20tY29tbWVudC5qc1wiOjksXCIuL2RvbS1lbGVtZW50LmpzXCI6MTAsXCIuL2RvbS1mcmFnbWVudC5qc1wiOjExLFwiLi9kb20tdGV4dC5qc1wiOjEyLFwiLi9ldmVudC5qc1wiOjEzLFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCJkb20td2Fsa1wiOjE4fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IENvbW1lbnRcblxuZnVuY3Rpb24gQ29tbWVudChkYXRhLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb21tZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgb3duZXIpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMubm9kZVZhbHVlID0gZGF0YVxuICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkNvbW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gOFxuQ29tbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNjb21tZW50XCJcblxuQ29tbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfQ29tbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IENvbW1lbnRdXCJcbn1cblxufSx7fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHNlcmlhbGl6ZU5vZGUgPSByZXF1aXJlKFwiLi9zZXJpYWxpemUuanNcIilcblxudmFyIGh0bWxucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG5cbm1vZHVsZS5leHBvcnRzID0gRE9NRWxlbWVudFxuXG5mdW5jdGlvbiBET01FbGVtZW50KHRhZ05hbWUsIG93bmVyLCBuYW1lc3BhY2UpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUpXG4gICAgfVxuXG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBodG1sbnMgOiAobmFtZXNwYWNlIHx8IG51bGwpXG5cbiAgICB0aGlzLnRhZ05hbWUgPSBucyA9PT0gaHRtbG5zID8gU3RyaW5nKHRhZ05hbWUpLnRvVXBwZXJDYXNlKCkgOiB0YWdOYW1lXG4gICAgdGhpcy5ub2RlTmFtZSA9IHRoaXMudGFnTmFtZVxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIlxuICAgIHRoaXMuZGF0YXNldCA9IHt9XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5zdHlsZSA9IHt9XG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxuICAgIHRoaXMubmFtZXNwYWNlVVJJID0gbnNcbiAgICB0aGlzLl9hdHRyaWJ1dGVzID0ge31cblxuICAgIGlmICh0aGlzLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMudHlwZSA9ICd0ZXh0J1xuICAgIH1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRE9NRWxlbWVudFwiXG5ET01FbGVtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDFcblxuRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9hcHBlbmRDaGlsZChjaGlsZCkge1xuICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgIHJldHVybiBjaGlsZFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlcGxhY2VDaGlsZChlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBuZWVkbGUucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIG5lZWRsZS5wYXJlbnROb2RlID0gbnVsbFxuICAgICAgICB0aGlzLmNoaWxkTm9kZXNbaW5kZXhdID0gZWxlbVxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICAgICAgcmV0dXJuIG5lZWRsZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVDaGlsZChlbGVtKSB7XG4gICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBlbGVtLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGVsZW0pXG4gICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMSlcblxuICAgIGVsZW0ucGFyZW50Tm9kZSA9IG51bGxcbiAgICByZXR1cm4gZWxlbVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2luc2VydEJlZm9yZShlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiByZWZlcmVuY2VFbGVtZW50IGlzIGEgZG9tIG5vZGVcbiAgICAgICAgLy8gYW5kIHBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IG5lZWRsZSA9PT0gbnVsbCB8fCBuZWVkbGUgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDAsIGVsZW0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuICAgICAgICByZXR1cm4gZWxlbVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHByZWZpeCA9IG51bGxcbiAgICAgICAgdmFyIGxvY2FsTmFtZSA9IG5hbWVcbiAgICAgICAgdmFyIGNvbG9uUG9zaXRpb24gPSBuYW1lLmluZGV4T2YoXCI6XCIpXG4gICAgICAgIGlmIChjb2xvblBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyKDAsIGNvbG9uUG9zaXRpb24pXG4gICAgICAgICAgICBsb2NhbE5hbWUgPSBuYW1lLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSlcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSB8fCAodGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdID0ge30pXG4gICAgICAgIGF0dHJpYnV0ZXNbbG9jYWxOYW1lXSA9IHt2YWx1ZTogdmFsdWUsIHByZWZpeDogcHJlZml4fVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVzW25hbWVdICYmIGF0dHJpYnV0ZXNbbmFtZV0udmFsdWVcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzW25hbWVdXG4gICAgICAgIH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV1cbiAgICAgICAgcmV0dXJuICEhYXR0cmlidXRlcyAmJiBuYW1lIGluIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lLCB2YWx1ZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG4vLyBVbi1pbXBsZW1lbnRlZFxuRE9NRWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiBfRWxlbWVudF9mb2N1cygpIHtcbiAgICByZXR1cm4gdm9pZCAwXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0VsZW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUodGhpcylcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lcykge1xuICAgIHZhciBjbGFzc2VzID0gY2xhc3NOYW1lcy5zcGxpdChcIiBcIik7XG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUgfHwgXCJcIlxuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc2VzID0gbm9kZUNsYXNzTmFtZS5zcGxpdChcIiBcIilcblxuICAgICAgICAgICAgaWYgKGNsYXNzZXMuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUNsYXNzZXMuaW5kZXhPZihpdGVtKSAhPT0gLTFcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICB0YWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGFnTmFtZSA9PT0gJyonIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lKSkge1xuICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIF9FbGVtZW50X2NvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gbm9kZVxuICAgIH0pIHx8IGZhbHNlXG59XG5cbn0se1wiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCIuL3NlcmlhbGl6ZS5qc1wiOjE5LFwiZG9tLXdhbGtcIjoxOH1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudEZyYWdtZW50XG5cbmZ1bmN0aW9uIERvY3VtZW50RnJhZ21lbnQob3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRvY3VtZW50RnJhZ21lbnRcIlxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxMVxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNkb2N1bWVudC1mcmFnbWVudFwiXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgICBmdW5jdGlvbiBfRG9jdW1lbnRGcmFnbWVudF90b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZSlcbiAgICAgICAgfSkuam9pbihcIlwiKVxuICAgIH1cblxufSx7XCIuL2RvbS1lbGVtZW50LmpzXCI6MTB9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IERPTVRleHRcblxuZnVuY3Rpb24gRE9NVGV4dCh2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHZhbHVlIHx8IFwiXCJcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnR5cGUgPSBcIkRPTVRleHROb2RlXCJcbkRPTVRleHQucHJvdG90eXBlLm5vZGVUeXBlID0gM1xuRE9NVGV4dC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiN0ZXh0XCJcblxuRE9NVGV4dC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfVGV4dF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnJlcGxhY2VEYXRhID0gZnVuY3Rpb24gcmVwbGFjZURhdGEoaW5kZXgsIGxlbmd0aCwgdmFsdWUpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZGF0YVxuICAgIHZhciBsZWZ0ID0gY3VycmVudC5zdWJzdHJpbmcoMCwgaW5kZXgpXG4gICAgdmFyIHJpZ2h0ID0gY3VycmVudC5zdWJzdHJpbmcoaW5kZXggKyBsZW5ndGgsIGN1cnJlbnQubGVuZ3RoKVxuICAgIHRoaXMuZGF0YSA9IGxlZnQgKyB2YWx1ZSArIHJpZ2h0XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG59XG5cbn0se31dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRXZlbnRcblxuZnVuY3Rpb24gRXZlbnQoZmFtaWx5KSB7fVxuXG5FdmVudC5wcm90b3R5cGUuaW5pdEV2ZW50ID0gZnVuY3Rpb24gX0V2ZW50X2luaXRFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZVxuICAgIHRoaXMuYnViYmxlcyA9IGJ1YmJsZXNcbiAgICB0aGlzLmNhbmNlbGFibGUgPSBjYW5jZWxhYmxlXG59XG5cbkV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIF9FdmVudF9wcmV2ZW50RGVmYXVsdCgpIHtcbiAgICBcbn1cblxufSx7fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBhZGRFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0gPSBbXVxuICAgIH1cblxuICAgIGlmIChlbGVtLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcilcbiAgICB9XG59XG5cbn0se31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gZGlzcGF0Y2hFdmVudFxuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2KSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG4gICAgdmFyIHR5cGUgPSBldi50eXBlXG5cbiAgICBpZiAoIWV2LnRhcmdldCkge1xuICAgICAgICBldi50YXJnZXQgPSBlbGVtXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGV2LmN1cnJlbnRUYXJnZXQgPSBlbGVtXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZXYpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZUV2ZW50KGV2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbS5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQoZXYpXG4gICAgfVxufVxuXG59LHt9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBsaXN0ID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cbiAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YobGlzdGVuZXIpXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSlcbiAgICB9XG59XG5cbn0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBEb2N1bWVudCA9IHJlcXVpcmUoJy4vZG9jdW1lbnQuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgRG9jdW1lbnQoKTtcblxufSx7XCIuL2RvY3VtZW50LmpzXCI6OH1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdGl2ZWx5V2Fsa1xuXG5mdW5jdGlvbiBpdGVyYXRpdmVseVdhbGsobm9kZXMsIGNiKSB7XG4gICAgaWYgKCEoJ2xlbmd0aCcgaW4gbm9kZXMpKSB7XG4gICAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH1cbiAgICBcbiAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZXMpXG5cbiAgICB3aGlsZShub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlcy5zaGlmdCgpLFxuICAgICAgICAgICAgcmV0ID0gY2Iobm9kZSlcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlLmNoaWxkTm9kZXMpLmNvbmNhdChub2RlcylcbiAgICAgICAgfVxuICAgIH1cbn1cblxufSx7fV0sMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxpemVOb2RlXG5cbnZhciB2b2lkRWxlbWVudHMgPSAvYXJlYXxiYXNlfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8a2V5Z2VufGxpbmt8bWVudWl0ZW18bWV0YXxwYXJhbXxzb3VyY2V8dHJhY2t8d2JyL2k7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlVGV4dChub2RlLmRhdGEpXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiBcIjwhLS1cIiArIG5vZGUuZGF0YSArIFwiLS0+XCJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVFbGVtZW50KG5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFbGVtZW50KGVsZW0pIHtcbiAgICB2YXIgc3RyaW5ncyA9IFtdXG5cbiAgICB2YXIgdGFnbmFtZSA9IGVsZW0udGFnTmFtZVxuXG4gICAgaWYgKGVsZW0ubmFtZXNwYWNlVVJJID09PSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIikge1xuICAgICAgICB0YWduYW1lID0gdGFnbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgfVxuXG4gICAgc3RyaW5ncy5wdXNoKFwiPFwiICsgdGFnbmFtZSArIHByb3BlcnRpZXMoZWxlbSkgKyBkYXRhc2V0aWZ5KGVsZW0pKVxuXG4gICAgaWYgKHZvaWRFbGVtZW50cy50ZXN0KHRhZ25hbWUpKSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIiAvPlwiKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIj5cIilcblxuICAgICAgICBpZiAoZWxlbS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoLmFwcGx5KHN0cmluZ3MsIGVsZW0uY2hpbGROb2Rlcy5tYXAoc2VyaWFsaXplTm9kZSkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVzY2FwZVRleHQoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS5pbm5lckhUTUwpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlbGVtLmlubmVySFRNTClcbiAgICAgICAgfVxuXG4gICAgICAgIHN0cmluZ3MucHVzaChcIjwvXCIgKyB0YWduYW1lICsgXCI+XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ3Muam9pbihcIlwiKVxufVxuXG5mdW5jdGlvbiBpc1Byb3BlcnR5KGVsZW0sIGtleSkge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIGVsZW1ba2V5XVxuXG4gICAgaWYgKGtleSA9PT0gXCJzdHlsZVwiICYmIE9iamVjdC5rZXlzKGVsZW0uc3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW0uaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAodHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIiB8fCB0eXBlID09PSBcIm51bWJlclwiKSAmJlxuICAgICAgICBrZXkgIT09IFwibm9kZU5hbWVcIiAmJiBrZXkgIT09IFwiY2xhc3NOYW1lXCIgJiYga2V5ICE9PSBcInRhZ05hbWVcIiAmJlxuICAgICAgICBrZXkgIT09IFwidGV4dENvbnRlbnRcIiAmJiBrZXkgIT09IFwiaW5uZXJUZXh0XCIgJiYga2V5ICE9PSBcIm5hbWVzcGFjZVVSSVwiICYmICBrZXkgIT09IFwiaW5uZXJIVE1MXCJcbn1cblxuZnVuY3Rpb24gc3R5bGlmeShzdHlsZXMpIHtcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ3N0cmluZycpIHJldHVybiBzdHlsZXNcbiAgICB2YXIgYXR0ciA9IFwiXCJcbiAgICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNba2V5XVxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgcmV0dXJuIFwiLVwiICsgYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KVxuICAgICAgICBhdHRyICs9IGtleSArIFwiOlwiICsgdmFsdWUgKyBcIjtcIlxuICAgIH0pXG4gICAgcmV0dXJuIGF0dHJcbn1cblxuZnVuY3Rpb24gZGF0YXNldGlmeShlbGVtKSB7XG4gICAgdmFyIGRzID0gZWxlbS5kYXRhc2V0XG4gICAgdmFyIHByb3BzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBkcykge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJkYXRhLVwiICsga2V5LCB2YWx1ZTogZHNba2V5XSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkobGlzdCkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0gW11cbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKHR1cGxlKSB7XG4gICAgICAgIHZhciBuYW1lID0gdHVwbGUubmFtZVxuICAgICAgICB2YXIgdmFsdWUgPSB0dXBsZS52YWx1ZVxuXG4gICAgICAgIGlmIChuYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3R5bGlmeSh2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lICsgXCI9XCIgKyBcIlxcXCJcIiArIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSArIFwiXFxcIlwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gYXR0cmlidXRlcy5sZW5ndGggPyBcIiBcIiArIGF0dHJpYnV0ZXMuam9pbihcIiBcIikgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHByb3BlcnRpZXMoZWxlbSkge1xuICAgIHZhciBwcm9wcyA9IFtdXG4gICAgZm9yICh2YXIga2V5IGluIGVsZW0pIHtcbiAgICAgICAgaWYgKGlzUHJvcGVydHkoZWxlbSwga2V5KSkge1xuICAgICAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IGVsZW1ba2V5XSB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbnMgaW4gZWxlbS5fYXR0cmlidXRlcykge1xuICAgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGVsZW0uX2F0dHJpYnV0ZXNbbnNdKSB7XG4gICAgICAgIHZhciBwcm9wID0gZWxlbS5fYXR0cmlidXRlc1tuc11bYXR0cmlidXRlXVxuICAgICAgICB2YXIgbmFtZSA9IChwcm9wLnByZWZpeCA/IHByb3AucHJlZml4ICsgXCI6XCIgOiBcIlwiKSArIGF0dHJpYnV0ZVxuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHByb3AudmFsdWUgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5jbGFzc05hbWUpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiY2xhc3NcIiwgdmFsdWU6IGVsZW0uY2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIGVzY2FwZVRleHQocykge1xuICAgIHZhciBzdHIgPSAnJztcblxuICAgIGlmICh0eXBlb2YocykgPT09ICdzdHJpbmcnKSB7IFxuICAgICAgICBzdHIgPSBzOyBcbiAgICB9IGVsc2UgaWYgKHMpIHtcbiAgICAgICAgc3RyID0gcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpXG59XG5cbmZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHN0cikge1xuICAgIHJldHVybiBlc2NhcGVUZXh0KHN0cikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcbn1cblxufSx7fV0sMjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuXHRyZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgeCAhPT0gbnVsbDtcbn07XG5cbn0se31dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheVxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUlzQXJyYXkgfHwgaXNBcnJheVxuXG5mdW5jdGlvbiBpc0FycmF5KG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBBcnJheV1cIlxufVxuXG59LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgcGF0Y2ggPSByZXF1aXJlKFwiLi92ZG9tL3BhdGNoLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxufSx7XCIuL3Zkb20vcGF0Y2guanNcIjoyN31dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2suanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVByb3BlcnRpZXNcblxuZnVuY3Rpb24gYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzLCBwcmV2aW91cykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV1cblxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hvb2socHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpXG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlLmhvb2spIHtcbiAgICAgICAgICAgICAgICBwcm9wVmFsdWUuaG9vayhub2RlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QocHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKSB7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKCFpc0hvb2socHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnN0eWxlW2ldID0gXCJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXZpb3VzVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNWYWx1ZS51bmhvb2spIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUudW5ob29rKG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSkge1xuICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWRcblxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSBwcm9wVmFsdWVbYXR0ck5hbWVdXG5cbiAgICAgICAgICAgIGlmIChhdHRyVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgYXR0clZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYocHJldmlvdXNWYWx1ZSAmJiBpc09iamVjdChwcmV2aW91c1ZhbHVlKSAmJlxuICAgICAgICBnZXRQcm90b3R5cGUocHJldmlvdXNWYWx1ZSkgIT09IGdldFByb3RvdHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNPYmplY3Qobm9kZVtwcm9wTmFtZV0pKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0ge31cbiAgICB9XG5cbiAgICB2YXIgcmVwbGFjZXIgPSBwcm9wTmFtZSA9PT0gXCJzdHlsZVwiID8gXCJcIiA6IHVuZGVmaW5lZFxuXG4gICAgZm9yICh2YXIgayBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tdXG4gICAgICAgIG5vZGVbcHJvcE5hbWVdW2tdID0gKHZhbHVlID09PSB1bmRlZmluZWQpID8gcmVwbGFjZXIgOiB2YWx1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2suanNcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sMjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxuXG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodm5vZGUsIG9wdHMpIHtcbiAgICB2YXIgZG9jID0gb3B0cyA/IG9wdHMuZG9jdW1lbnQgfHwgZG9jdW1lbnQgOiBkb2N1bWVudFxuICAgIHZhciB3YXJuID0gb3B0cyA/IG9wdHMud2FybiA6IG51bGxcblxuICAgIHZub2RlID0gaGFuZGxlVGh1bmsodm5vZGUpLmFcblxuICAgIGlmIChpc1dpZGdldCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlLmluaXQoKVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvYy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KVxuICAgIH0gZWxzZSBpZiAoIWlzVk5vZGUodm5vZGUpKSB7XG4gICAgICAgIGlmICh3YXJuKSB7XG4gICAgICAgICAgICB3YXJuKFwiSXRlbSBpcyBub3QgYSB2YWxpZCB2aXJ0dWFsIGRvbSBub2RlXCIsIHZub2RlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSAodm5vZGUubmFtZXNwYWNlID09PSBudWxsKSA/XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KHZub2RlLnRhZ05hbWUpIDpcbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5uYW1lc3BhY2UsIHZub2RlLnRhZ05hbWUpXG5cbiAgICB2YXIgcHJvcHMgPSB2bm9kZS5wcm9wZXJ0aWVzXG4gICAgYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzKVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNyZWF0ZUVsZW1lbnQoY2hpbGRyZW5baV0sIG9wdHMpXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGROb2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIjozNixcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcImdsb2JhbC9kb2N1bWVudFwiOjd9XSwyNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vLyBNYXBzIGEgdmlydHVhbCBET00gdHJlZSBvbnRvIGEgcmVhbCBET00gdHJlZSBpbiBhbiBlZmZpY2llbnQgbWFubmVyLlxuLy8gV2UgZG9uJ3Qgd2FudCB0byByZWFkIGFsbCBvZiB0aGUgRE9NIG5vZGVzIGluIHRoZSB0cmVlIHNvIHdlIHVzZVxuLy8gdGhlIGluLW9yZGVyIHRyZWUgaW5kZXhpbmcgdG8gZWxpbWluYXRlIHJlY3Vyc2lvbiBkb3duIGNlcnRhaW4gYnJhbmNoZXMuXG4vLyBXZSBvbmx5IHJlY3Vyc2UgaW50byBhIERPTSBub2RlIGlmIHdlIGtub3cgdGhhdCBpdCBjb250YWlucyBhIGNoaWxkIG9mXG4vLyBpbnRlcmVzdC5cblxudmFyIG5vQ2hpbGQgPSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUluZGV4XG5cbmZ1bmN0aW9uIGRvbUluZGV4KHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcykge1xuICAgIGlmICghaW5kaWNlcyB8fCBpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRpY2VzLnNvcnQoYXNjZW5kaW5nKVxuICAgICAgICByZXR1cm4gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIDApXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KSB7XG4gICAgbm9kZXMgPSBub2RlcyB8fCB7fVxuXG5cbiAgICBpZiAocm9vdE5vZGUpIHtcbiAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIHJvb3RJbmRleCkpIHtcbiAgICAgICAgICAgIG5vZGVzW3Jvb3RJbmRleF0gPSByb290Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZDaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cblxuICAgICAgICBpZiAodkNoaWxkcmVuKSB7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gcm9vdE5vZGUuY2hpbGROb2Rlc1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByb290SW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdmFyIHZDaGlsZCA9IHZDaGlsZHJlbltpXSB8fCBub0NoaWxkXG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHJvb3RJbmRleCArICh2Q2hpbGQuY291bnQgfHwgMClcblxuICAgICAgICAgICAgICAgIC8vIHNraXAgcmVjdXJzaW9uIGRvd24gdGhlIHRyZWUgaWYgdGhlcmUgYXJlIG5vIG5vZGVzIGRvd24gaGVyZVxuICAgICAgICAgICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCBuZXh0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2UoY2hpbGROb2Rlc1tpXSwgdkNoaWxkLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvb3RJbmRleCA9IG5leHRJbmRleFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG59XG5cbi8vIEJpbmFyeSBzZWFyY2ggZm9yIGFuIGluZGV4IGluIHRoZSBpbnRlcnZhbCBbbGVmdCwgcmlnaHRdXG5mdW5jdGlvbiBpbmRleEluUmFuZ2UoaW5kaWNlcywgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIG1pbkluZGV4ID0gMFxuICAgIHZhciBtYXhJbmRleCA9IGluZGljZXMubGVuZ3RoIC0gMVxuICAgIHZhciBjdXJyZW50SW5kZXhcbiAgICB2YXIgY3VycmVudEl0ZW1cblxuICAgIHdoaWxlIChtaW5JbmRleCA8PSBtYXhJbmRleCkge1xuICAgICAgICBjdXJyZW50SW5kZXggPSAoKG1heEluZGV4ICsgbWluSW5kZXgpIC8gMikgPj4gMFxuICAgICAgICBjdXJyZW50SXRlbSA9IGluZGljZXNbY3VycmVudEluZGV4XVxuXG4gICAgICAgIGlmIChtaW5JbmRleCA9PT0gbWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50SXRlbSA+PSBsZWZ0ICYmIGN1cnJlbnRJdGVtIDw9IHJpZ2h0XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEl0ZW0gPCBsZWZ0KSB7XG4gICAgICAgICAgICBtaW5JbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgICAgICAgfSBlbHNlICBpZiAoY3VycmVudEl0ZW0gPiByaWdodCkge1xuICAgICAgICAgICAgbWF4SW5kZXggPSBjdXJyZW50SW5kZXggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMVxufVxuXG59LHt9XSwyNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiKVxuXG52YXIgdXBkYXRlV2lkZ2V0ID0gcmVxdWlyZShcIi4vdXBkYXRlLXdpZGdldFwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UGF0Y2hcblxuZnVuY3Rpb24gYXBwbHlQYXRjaCh2cGF0Y2gsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdHlwZSA9IHZwYXRjaC50eXBlXG4gICAgdmFyIHZOb2RlID0gdnBhdGNoLnZOb2RlXG4gICAgdmFyIHBhdGNoID0gdnBhdGNoLnBhdGNoXG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBWUGF0Y2guUkVNT1ZFOlxuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpXG4gICAgICAgIGNhc2UgVlBhdGNoLklOU0VSVDpcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WVEVYVDpcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLldJREdFVDpcbiAgICAgICAgICAgIHJldHVybiB3aWRnZXRQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZOT0RFOlxuICAgICAgICAgICAgcmV0dXJuIHZOb2RlUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5PUkRFUjpcbiAgICAgICAgICAgIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBwYXRjaClcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlBST1BTOlxuICAgICAgICAgICAgYXBwbHlQcm9wZXJ0aWVzKGRvbU5vZGUsIHBhdGNoLCB2Tm9kZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guVEhVTks6XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZVJvb3QoZG9tTm9kZSxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRpb25zLnBhdGNoKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9tTm9kZSlcbiAgICB9XG5cbiAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHZOb2RlKTtcblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIGluc2VydE5vZGUocGFyZW50Tm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuZXdOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIHN0cmluZ1BhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdlRleHQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGRvbU5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgZG9tTm9kZS5yZXBsYWNlRGF0YSgwLCBkb21Ob2RlLmxlbmd0aCwgdlRleHQudGV4dClcbiAgICAgICAgbmV3Tm9kZSA9IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodlRleHQsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHdpZGdldFBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgd2lkZ2V0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHVwZGF0aW5nID0gdXBkYXRlV2lkZ2V0KGxlZnRWTm9kZSwgd2lkZ2V0KVxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAodXBkYXRpbmcpIHtcbiAgICAgICAgbmV3Tm9kZSA9IHdpZGdldC51cGRhdGUobGVmdFZOb2RlLCBkb21Ob2RlKSB8fCBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHdpZGdldCwgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIGlmICghdXBkYXRpbmcpIHtcbiAgICAgICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCBsZWZ0Vk5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gdk5vZGVQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdykge1xuICAgIGlmICh0eXBlb2Ygdy5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIgJiYgaXNXaWRnZXQodykpIHtcbiAgICAgICAgdy5kZXN0cm95KGRvbU5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgbW92ZXMpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGRvbU5vZGUuY2hpbGROb2Rlc1xuICAgIHZhciBrZXlNYXAgPSB7fVxuICAgIHZhciBub2RlXG4gICAgdmFyIHJlbW92ZVxuICAgIHZhciBpbnNlcnRcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW92ZXMucmVtb3Zlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZW1vdmUgPSBtb3Zlcy5yZW1vdmVzW2ldXG4gICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzW3JlbW92ZS5mcm9tXVxuICAgICAgICBpZiAocmVtb3ZlLmtleSkge1xuICAgICAgICAgICAga2V5TWFwW3JlbW92ZS5rZXldID0gbm9kZVxuICAgICAgICB9XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlQ2hpbGQobm9kZSlcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGhcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1vdmVzLmluc2VydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaW5zZXJ0ID0gbW92ZXMuaW5zZXJ0c1tqXVxuICAgICAgICBub2RlID0ga2V5TWFwW2luc2VydC5rZXldXG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHdlaXJkZXN0IGJ1ZyBpJ3ZlIGV2ZXIgc2VlbiBpbiB3ZWJraXRcbiAgICAgICAgZG9tTm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgaW5zZXJ0LnRvID49IGxlbmd0aCsrID8gbnVsbCA6IGNoaWxkTm9kZXNbaW5zZXJ0LnRvXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSb290KG9sZFJvb3QsIG5ld1Jvb3QpIHtcbiAgICBpZiAob2xkUm9vdCAmJiBuZXdSb290ICYmIG9sZFJvb3QgIT09IG5ld1Jvb3QgJiYgb2xkUm9vdC5wYXJlbnROb2RlKSB7XG4gICAgICAgIG9sZFJvb3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Um9vdCwgb2xkUm9vdClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Um9vdDtcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiOjQ0LFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCIuL3VwZGF0ZS13aWRnZXRcIjoyOH1dLDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIHJlbmRlciA9IHJlcXVpcmUoXCIuL2NyZWF0ZS1lbGVtZW50XCIpXG52YXIgZG9tSW5kZXggPSByZXF1aXJlKFwiLi9kb20taW5kZXhcIilcbnZhciBwYXRjaE9wID0gcmVxdWlyZShcIi4vcGF0Y2gtb3BcIilcbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxuZnVuY3Rpb24gcGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICByZW5kZXJPcHRpb25zID0gcmVuZGVyT3B0aW9ucyB8fCB7fVxuICAgIHJlbmRlck9wdGlvbnMucGF0Y2ggPSByZW5kZXJPcHRpb25zLnBhdGNoICYmIHJlbmRlck9wdGlvbnMucGF0Y2ggIT09IHBhdGNoXG4gICAgICAgID8gcmVuZGVyT3B0aW9ucy5wYXRjaFxuICAgICAgICA6IHBhdGNoUmVjdXJzaXZlXG4gICAgcmVuZGVyT3B0aW9ucy5yZW5kZXIgPSByZW5kZXJPcHRpb25zLnJlbmRlciB8fCByZW5kZXJcblxuICAgIHJldHVybiByZW5kZXJPcHRpb25zLnBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBwYXRjaFJlY3Vyc2l2ZShyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBpbmRpY2VzID0gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpXG5cbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZG9tSW5kZXgocm9vdE5vZGUsIHBhdGNoZXMuYSwgaW5kaWNlcylcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHJvb3ROb2RlLm93bmVyRG9jdW1lbnRcblxuICAgIGlmICghcmVuZGVyT3B0aW9ucy5kb2N1bWVudCAmJiBvd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCkge1xuICAgICAgICByZW5kZXJPcHRpb25zLmRvY3VtZW50ID0gb3duZXJEb2N1bWVudFxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZUluZGV4ID0gaW5kaWNlc1tpXVxuICAgICAgICByb290Tm9kZSA9IGFwcGx5UGF0Y2gocm9vdE5vZGUsXG4gICAgICAgICAgICBpbmRleFtub2RlSW5kZXhdLFxuICAgICAgICAgICAgcGF0Y2hlc1tub2RlSW5kZXhdLFxuICAgICAgICAgICAgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXRjaChyb290Tm9kZSwgZG9tTm9kZSwgcGF0Y2hMaXN0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoaXNBcnJheShwYXRjaExpc3QpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0Y2hMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3RbaV0sIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0LCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2hlcykge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImFcIikge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKE51bWJlcihrZXkpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGljZXNcbn1cblxufSx7XCIuL2NyZWF0ZS1lbGVtZW50XCI6MjQsXCIuL2RvbS1pbmRleFwiOjI1LFwiLi9wYXRjaC1vcFwiOjI2LFwiZ2xvYmFsL2RvY3VtZW50XCI6NyxcIngtaXMtYXJyYXlcIjoyMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSB1cGRhdGVXaWRnZXRcblxuZnVuY3Rpb24gdXBkYXRlV2lkZ2V0KGEsIGIpIHtcbiAgICBpZiAoaXNXaWRnZXQoYSkgJiYgaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKFwibmFtZVwiIGluIGEgJiYgXCJuYW1lXCIgaW4gYikge1xuICAgICAgICAgICAgcmV0dXJuIGEuaWQgPT09IGIuaWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLmluaXQgPT09IGIuaW5pdFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDF9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXR0cmlidXRlSG9vaztcblxuZnVuY3Rpb24gQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEF0dHJpYnV0ZUhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgcHJldikge1xuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIHByZXYudmFsdWUgPT09IHRoaXMudmFsdWUgJiZcbiAgICAgICAgcHJldi5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBwcm9wLCB0aGlzLnZhbHVlKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgJiYgbmV4dC50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgbmV4dC5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sb25Qb3NpdGlvbiA9IHByb3AuaW5kZXhPZignOicpO1xuICAgIHZhciBsb2NhbE5hbWUgPSBjb2xvblBvc2l0aW9uID4gLTEgPyBwcm9wLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSkgOiBwcm9wO1xuICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIGxvY2FsTmFtZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS50eXBlID0gJ0F0dHJpYnV0ZUhvb2snO1xuXG59LHt9XSwzMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdlN0b3JlID0gcmVxdWlyZSgnZXYtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdkhvb2s7XG5cbmZ1bmN0aW9uIEV2SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFdkhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXZIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkV2SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB0aGlzLnZhbHVlO1xufTtcblxuRXZIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbihub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB1bmRlZmluZWQ7XG59O1xuXG59LHtcImV2LXN0b3JlXCI6NH1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBTb2Z0U2V0SG9vaztcblxuZnVuY3Rpb24gU29mdFNldEhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cbn0se31dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL3Zub2RlLmpzJyk7XG52YXIgVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS92dGV4dC5qcycpO1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12bm9kZScpO1xudmFyIGlzVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12dGV4dCcpO1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtd2lkZ2V0Jyk7XG52YXIgaXNIb29rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdmhvb2snKTtcbnZhciBpc1ZUaHVuayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXRodW5rJyk7XG5cbnZhciBwYXJzZVRhZyA9IHJlcXVpcmUoJy4vcGFyc2UtdGFnLmpzJyk7XG52YXIgc29mdFNldEhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL3NvZnQtc2V0LWhvb2suanMnKTtcbnZhciBldkhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2V2LWhvb2suanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBoO1xuXG5mdW5jdGlvbiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgdGFnLCBwcm9wcywga2V5LCBuYW1lc3BhY2U7XG5cbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BzID0gcHJvcHMgfHwgcHJvcGVydGllcyB8fCB7fTtcbiAgICB0YWcgPSBwYXJzZVRhZyh0YWdOYW1lLCBwcm9wcyk7XG5cbiAgICAvLyBzdXBwb3J0IGtleXNcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgICAgIGtleSA9IHByb3BzLmtleTtcbiAgICAgICAgcHJvcHMua2V5ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnQgbmFtZXNwYWNlXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCduYW1lc3BhY2UnKSkge1xuICAgICAgICBuYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgICAgIHByb3BzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBmaXggY3Vyc29yIGJ1Z1xuICAgIGlmICh0YWcgPT09ICdJTlBVVCcgJiZcbiAgICAgICAgIW5hbWVzcGFjZSAmJlxuICAgICAgICBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICBwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc0hvb2socHJvcHMudmFsdWUpXG4gICAgKSB7XG4gICAgICAgIHByb3BzLnZhbHVlID0gc29mdFNldEhvb2socHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpO1xuXG4gICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgICAgYWRkQ2hpbGQoY2hpbGRyZW4sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgIH1cblxuXG4gICAgcmV0dXJuIG5ldyBWTm9kZSh0YWcsIHByb3BzLCBjaGlsZE5vZGVzLCBrZXksIG5hbWVzcGFjZSk7XG59XG5cbmZ1bmN0aW9uIGFkZENoaWxkKGMsIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpIHtcbiAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoYykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoU3RyaW5nKGMpKSk7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkKGMpKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChjKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoYykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhZGRDaGlsZChjW2ldLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCB8fCBjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudCh7XG4gICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBjLFxuICAgICAgICAgICAgcGFyZW50Vm5vZGU6IHtcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaXNIb29rKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUuc3Vic3RyKDAsIDMpID09PSAnZXYtJykge1xuICAgICAgICAgICAgICAgIC8vIGFkZCBldi1mb28gc3VwcG9ydFxuICAgICAgICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGV2SG9vayh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGQoeCkge1xuICAgIHJldHVybiBpc1ZOb2RlKHgpIHx8IGlzVlRleHQoeCkgfHwgaXNXaWRnZXQoeCkgfHwgaXNWVGh1bmsoeCk7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KSB8fCBpc0NoaWxkKHgpO1xufVxuXG5mdW5jdGlvbiBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoZGF0YSkge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcblxuICAgIGVyci50eXBlID0gJ3ZpcnR1YWwtaHlwZXJzY3JpcHQudW5leHBlY3RlZC52aXJ0dWFsLWVsZW1lbnQnO1xuICAgIGVyci5tZXNzYWdlID0gJ1VuZXhwZWN0ZWQgdmlydHVhbCBjaGlsZCBwYXNzZWQgdG8gaCgpLlxcbicgK1xuICAgICAgICAnRXhwZWN0ZWQgYSBWTm9kZSAvIFZ0aHVuayAvIFZXaWRnZXQgLyBzdHJpbmcgYnV0OlxcbicgK1xuICAgICAgICAnZ290OlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLmZvcmVpZ25PYmplY3QpICtcbiAgICAgICAgJy5cXG4nICtcbiAgICAgICAgJ1RoZSBwYXJlbnQgdm5vZGUgaXM6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEucGFyZW50Vm5vZGUpXG4gICAgICAgICdcXG4nICtcbiAgICAgICAgJ1N1Z2dlc3RlZCBmaXg6IGNoYW5nZSB5b3VyIGBoKC4uLiwgWyAuLi4gXSlgIGNhbGxzaXRlLic7XG4gICAgZXJyLmZvcmVpZ25PYmplY3QgPSBkYXRhLmZvcmVpZ25PYmplY3Q7XG4gICAgZXJyLnBhcmVudFZub2RlID0gZGF0YS5wYXJlbnRWbm9kZTtcblxuICAgIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGVycm9yU3RyaW5nKG9iaikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsICcgICAgJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9iaik7XG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3Zub2RlLmpzXCI6NDMsXCIuLi92bm9kZS92dGV4dC5qc1wiOjQ1LFwiLi9ob29rcy9ldi1ob29rLmpzXCI6MzAsXCIuL2hvb2tzL3NvZnQtc2V0LWhvb2suanNcIjozMSxcIi4vcGFyc2UtdGFnLmpzXCI6MzMsXCJ4LWlzLWFycmF5XCI6MjF9XSwzMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBzcGxpdCA9IHJlcXVpcmUoJ2Jyb3dzZXItc3BsaXQnKTtcblxudmFyIGNsYXNzSWRTcGxpdCA9IC8oW1xcLiNdP1thLXpBLVowLTlcXHUwMDdGLVxcdUZGRkZfOi1dKykvO1xudmFyIG5vdENsYXNzSWQgPSAvXlxcLnwjLztcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVRhZztcblxuZnVuY3Rpb24gcGFyc2VUYWcodGFnLCBwcm9wcykge1xuICAgIGlmICghdGFnKSB7XG4gICAgICAgIHJldHVybiAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgbm9JZCA9ICEocHJvcHMuaGFzT3duUHJvcGVydHkoJ2lkJykpO1xuXG4gICAgdmFyIHRhZ1BhcnRzID0gc3BsaXQodGFnLCBjbGFzc0lkU3BsaXQpO1xuICAgIHZhciB0YWdOYW1lID0gbnVsbDtcblxuICAgIGlmIChub3RDbGFzc0lkLnRlc3QodGFnUGFydHNbMV0pKSB7XG4gICAgICAgIHRhZ05hbWUgPSAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NlcywgcGFydCwgdHlwZSwgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCB0YWdQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0ID0gdGFnUGFydHNbaV07XG5cbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBwYXJ0LmNoYXJBdCgwKTtcblxuICAgICAgICBpZiAoIXRhZ05hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBwYXJ0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcuJykge1xuICAgICAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMgfHwgW107XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnIycgJiYgbm9JZCkge1xuICAgICAgICAgICAgcHJvcHMuaWQgPSBwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3Nlcykge1xuICAgICAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbignICcpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5uYW1lc3BhY2UgPyB0YWdOYW1lIDogdGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG59LHtcImJyb3dzZXItc3BsaXRcIjozfV0sMzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgREVGQVVMVF9OQU1FU1BBQ0UgPSBudWxsO1xudmFyIEVWX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMnO1xudmFyIFhMSU5LX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcbnZhciBYTUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWR1RpbnkxMi9hdHRyaWJ1dGVUYWJsZS5odG1sXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYXR0aW5kZXguaHRtbFxudmFyIFNWR19QUk9QRVJUSUVTID0ge1xuICAgICdhYm91dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2NlbnQtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY3VtdWxhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWRkaXRpdmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxpZ25tZW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYW1wbGl0dWRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FyYWJpYy1mb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVOYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXppbXV0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYW5kd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZUZyZXF1ZW5jeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlUHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlbGluZS1zaGlmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JpYXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FsY01vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FwLWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGFzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcFBhdGhVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1wcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTY3JpcHRUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTdHlsZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3Vyc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGF0YXR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVmYXVsdEFjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXJlY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlzcGxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXZpc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RvbWluYW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGdlTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGl0YWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbGV2YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5hYmxlLWJhY2tncm91bmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V2OmV2ZW50JzogRVZfTkFNRVNQQUNFLFxuICAgICdldmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyUmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNIaWdobGlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtZmFtaWx5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUtYWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3RyZXRjaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0eWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtdmFyaWFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXdlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb3JtYXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnJvbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1uYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGhSZWYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5kbGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LWFkdi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ltYWdlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbjInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW5pdGlhbFZpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW50ZXJjZXB0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsTWF0cml4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlQb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5U3BsaW5lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlUaW1lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsYW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xlbmd0aEFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZXR0ZXItc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaWdodGluZy1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsb2NhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1taWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlckhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJXaWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza1VuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDaGFyYWN0ZXJFbmNvZGluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNvbnRlbnRFbmNvZGluZ3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFTaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhVGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWluJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1uZXh0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1wcmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ251bU9jdGF2ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2JzZXJ2ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BlcmF0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVyZmxvdyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYW5vc2UtMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGhMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVybkNvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Vbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwaGFzZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwbGF5YmFja09yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50ZXItZXZlbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0Wic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFscGhhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJpbWl0aXZlVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGFnYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BlcnR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmFkaXVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVuZGVyaW5nLWludGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXRDb3VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXREdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRmVhdHVyZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb250cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvcm1hdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzb3VyY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm90YXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NlZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2hhcGUtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Nsb3BlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NuYXBzaG90VGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJFeHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcHJlYWRNZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RhcnRPZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RkRGV2aWF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW1oJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW12JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0aXRjaFRpbGVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3AtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaGFycmF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNob2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lY2FwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lam9pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbWl0ZXJsaW1pdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3VyZmFjZVNjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3JEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNNYXN0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeXN0ZW1MYW5ndWFnZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YWJsZVZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtYW5jaG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpbWVsaW5lQmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGl0bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndG8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybUJlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZW9mJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1iaWRpJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtcmFuZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pdHMtcGVyLWVtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWhhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1pZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LW1hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2YWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVyc2lvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LWFkdi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3Qm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdUYXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd29yZC1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dyaXRpbmctbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6YXJjcm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6aHJlZic6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6cm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6c2hvdyc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dGl0bGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnR5cGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3htbDpiYXNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmlkJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmxhbmcnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6c3BhY2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6b29tQW5kUGFuJzogREVGQVVMVF9OQU1FU1BBQ0Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlO1xuXG5mdW5jdGlvbiBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UodmFsdWUpIHtcbiAgaWYgKFNWR19QUk9QRVJUSUVTLmhhc093blByb3BlcnR5KHZhbHVlKSkge1xuICAgIHJldHVybiBTVkdfUFJPUEVSVElFU1t2YWx1ZV07XG4gIH1cbn1cblxufSx7fV0sMzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIGggPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cblxudmFyIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSA9IHJlcXVpcmUoJy4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2UnKTtcbnZhciBhdHRyaWJ1dGVIb29rID0gcmVxdWlyZSgnLi9ob29rcy9hdHRyaWJ1dGUtaG9vaycpO1xuXG52YXIgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3ZnO1xuXG5mdW5jdGlvbiBzdmcodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG5cbiAgICAvLyBzZXQgbmFtZXNwYWNlIGZvciBzdmdcbiAgICBwcm9wZXJ0aWVzLm5hbWVzcGFjZSA9IFNWR19OQU1FU1BBQ0U7XG5cbiAgICB2YXIgYXR0cmlidXRlcyA9IHByb3BlcnRpZXMuYXR0cmlidXRlcyB8fCAocHJvcGVydGllcy5hdHRyaWJ1dGVzID0ge30pO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZShrZXkpO1xuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCkgeyAvLyBub3QgYSBzdmcgYXR0cmlidXRlXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgIT09IG51bGwpIHsgLy8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVcbiAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlXG4gICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpO1xufVxuXG59LHtcIi4vaG9va3MvYXR0cmlidXRlLWhvb2tcIjoyOSxcIi4vaW5kZXguanNcIjozMixcIi4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2VcIjozNCxcIngtaXMtYXJyYXlcIjoyMX1dLDM2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4vaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZVRodW5rXG5cbmZ1bmN0aW9uIGhhbmRsZVRodW5rKGEsIGIpIHtcbiAgICB2YXIgcmVuZGVyZWRBID0gYVxuICAgIHZhciByZW5kZXJlZEIgPSBiXG5cbiAgICBpZiAoaXNUaHVuayhiKSkge1xuICAgICAgICByZW5kZXJlZEIgPSByZW5kZXJUaHVuayhiLCBhKVxuICAgIH1cblxuICAgIGlmIChpc1RodW5rKGEpKSB7XG4gICAgICAgIHJlbmRlcmVkQSA9IHJlbmRlclRodW5rKGEsIG51bGwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYTogcmVuZGVyZWRBLFxuICAgICAgICBiOiByZW5kZXJlZEJcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRodW5rKHRodW5rLCBwcmV2aW91cykge1xuICAgIHZhciByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGVcblxuICAgIGlmICghcmVuZGVyZWRUaHVuaykge1xuICAgICAgICByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGUgPSB0aHVuay5yZW5kZXIocHJldmlvdXMpXG4gICAgfVxuXG4gICAgaWYgKCEoaXNWTm9kZShyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNWVGV4dChyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNXaWRnZXQocmVuZGVyZWRUaHVuaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRodW5rIGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgbm9kZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRUaHVua1xufVxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtdnRleHRcIjo0MCxcIi4vaXMtd2lkZ2V0XCI6NDF9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzVGh1bmtcclxuXHJcbmZ1bmN0aW9uIGlzVGh1bmsodCkge1xyXG4gICAgcmV0dXJuIHQgJiYgdC50eXBlID09PSBcIlRodW5rXCJcclxufVxyXG5cbn0se31dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNIb29rXG5cbmZ1bmN0aW9uIGlzSG9vayhob29rKSB7XG4gICAgcmV0dXJuIGhvb2sgJiZcbiAgICAgICh0eXBlb2YgaG9vay5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJob29rXCIpIHx8XG4gICAgICAgdHlwZW9mIGhvb2sudW5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJ1bmhvb2tcIikpXG59XG5cbn0se31dLDM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbE5vZGVcblxuZnVuY3Rpb24gaXNWaXJ0dWFsTm9kZSh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxOb2RlXCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIGlzVmlydHVhbFRleHQoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsVGV4dFwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1dpZGdldFxuXG5mdW5jdGlvbiBpc1dpZGdldCh3KSB7XG4gICAgcmV0dXJuIHcgJiYgdy50eXBlID09PSBcIldpZGdldFwiXG59XG5cbn0se31dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gXCIyXCJcblxufSx7fV0sNDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcbnZhciBpc1ZIb29rID0gcmVxdWlyZShcIi4vaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsTm9kZVxuXG52YXIgbm9Qcm9wZXJ0aWVzID0ge31cbnZhciBub0NoaWxkcmVuID0gW11cblxuZnVuY3Rpb24gVmlydHVhbE5vZGUodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4sIGtleSwgbmFtZXNwYWNlKSB7XG4gICAgdGhpcy50YWdOYW1lID0gdGFnTmFtZVxuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwgbm9Qcm9wZXJ0aWVzXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IG5vQ2hpbGRyZW5cbiAgICB0aGlzLmtleSA9IGtleSAhPSBudWxsID8gU3RyaW5nKGtleSkgOiB1bmRlZmluZWRcbiAgICB0aGlzLm5hbWVzcGFjZSA9ICh0eXBlb2YgbmFtZXNwYWNlID09PSBcInN0cmluZ1wiKSA/IG5hbWVzcGFjZSA6IG51bGxcblxuICAgIHZhciBjb3VudCA9IChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHx8IDBcbiAgICB2YXIgZGVzY2VuZGFudHMgPSAwXG4gICAgdmFyIGhhc1dpZGdldHMgPSBmYWxzZVxuICAgIHZhciBoYXNUaHVua3MgPSBmYWxzZVxuICAgIHZhciBkZXNjZW5kYW50SG9va3MgPSBmYWxzZVxuICAgIHZhciBob29rc1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcE5hbWVdXG4gICAgICAgICAgICBpZiAoaXNWSG9vayhwcm9wZXJ0eSkgJiYgcHJvcGVydHkudW5ob29rKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFob29rcykge1xuICAgICAgICAgICAgICAgICAgICBob29rcyA9IHt9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaG9va3NbcHJvcE5hbWVdID0gcHJvcGVydHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzICs9IGNoaWxkLmNvdW50IHx8IDBcblxuICAgICAgICAgICAgaWYgKCFoYXNXaWRnZXRzICYmIGNoaWxkLmhhc1dpZGdldHMpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc1RodW5rcyAmJiBjaGlsZC5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZGVzY2VuZGFudEhvb2tzICYmIChjaGlsZC5ob29rcyB8fCBjaGlsZC5kZXNjZW5kYW50SG9va3MpKSB7XG4gICAgICAgICAgICAgICAgZGVzY2VuZGFudEhvb2tzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNXaWRnZXRzICYmIGlzV2lkZ2V0KGNoaWxkKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZC5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNUaHVua3MgJiYgaXNUaHVuayhjaGlsZCkpIHtcbiAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQgKyBkZXNjZW5kYW50c1xuICAgIHRoaXMuaGFzV2lkZ2V0cyA9IGhhc1dpZGdldHNcbiAgICB0aGlzLmhhc1RodW5rcyA9IGhhc1RodW5rc1xuICAgIHRoaXMuaG9va3MgPSBob29rc1xuICAgIHRoaXMuZGVzY2VuZGFudEhvb2tzID0gZGVzY2VuZGFudEhvb2tzXG59XG5cblZpcnR1YWxOb2RlLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxOb2RlXCJcblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZob29rXCI6MzgsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXdpZGdldFwiOjQxLFwiLi92ZXJzaW9uXCI6NDJ9XSw0NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxuVmlydHVhbFBhdGNoLk5PTkUgPSAwXG5WaXJ0dWFsUGF0Y2guVlRFWFQgPSAxXG5WaXJ0dWFsUGF0Y2guVk5PREUgPSAyXG5WaXJ0dWFsUGF0Y2guV0lER0VUID0gM1xuVmlydHVhbFBhdGNoLlBST1BTID0gNFxuVmlydHVhbFBhdGNoLk9SREVSID0gNVxuVmlydHVhbFBhdGNoLklOU0VSVCA9IDZcblZpcnR1YWxQYXRjaC5SRU1PVkUgPSA3XG5WaXJ0dWFsUGF0Y2guVEhVTksgPSA4XG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFBhdGNoXG5cbmZ1bmN0aW9uIFZpcnR1YWxQYXRjaCh0eXBlLCB2Tm9kZSwgcGF0Y2gpIHtcbiAgICB0aGlzLnR5cGUgPSBOdW1iZXIodHlwZSlcbiAgICB0aGlzLnZOb2RlID0gdk5vZGVcbiAgICB0aGlzLnBhdGNoID0gcGF0Y2hcbn1cblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsUGF0Y2hcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFRleHRcblxuZnVuY3Rpb24gVmlydHVhbFRleHQodGV4dCkge1xuICAgIHRoaXMudGV4dCA9IFN0cmluZyh0ZXh0KVxufVxuXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxUZXh0LnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsVGV4dFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlByb3BzXG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhhLCBiKSB7XG4gICAgdmFyIGRpZmZcblxuICAgIGZvciAodmFyIGFLZXkgaW4gYSkge1xuICAgICAgICBpZiAoIShhS2V5IGluIGIpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFWYWx1ZSA9IGFbYUtleV1cbiAgICAgICAgdmFyIGJWYWx1ZSA9IGJbYUtleV1cblxuICAgICAgICBpZiAoYVZhbHVlID09PSBiVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYVZhbHVlKSAmJiBpc09iamVjdChiVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlKGJWYWx1ZSkgIT09IGdldFByb3RvdHlwZShhVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhiVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIG9iamVjdERpZmYgPSBkaWZmUHJvcHMoYVZhbHVlLCBiVmFsdWUpXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdERpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IG9iamVjdERpZmZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYktleSBpbiBiKSB7XG4gICAgICAgIGlmICghKGJLZXkgaW4gYSkpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2JLZXldID0gYltiS2V5XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDQ3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2hcIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdGh1bmtcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIilcblxudmFyIGRpZmZQcm9wcyA9IHJlcXVpcmUoXCIuL2RpZmYtcHJvcHNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbmZ1bmN0aW9uIGRpZmYoYSwgYikge1xuICAgIHZhciBwYXRjaCA9IHsgYTogYSB9XG4gICAgd2FsayhhLCBiLCBwYXRjaCwgMClcbiAgICByZXR1cm4gcGF0Y2hcbn1cblxuZnVuY3Rpb24gd2FsayhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICB2YXIgYXBwbHlDbGVhciA9IGZhbHNlXG5cbiAgICBpZiAoaXNUaHVuayhhKSB8fCBpc1RodW5rKGIpKSB7XG4gICAgICAgIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpXG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblxuICAgICAgICAvLyBJZiBhIGlzIGEgd2lkZ2V0IHdlIHdpbGwgYWRkIGEgcmVtb3ZlIHBhdGNoIGZvciBpdFxuICAgICAgICAvLyBPdGhlcndpc2UgYW55IGNoaWxkIHdpZGdldHMvaG9va3MgbXVzdCBiZSBkZXN0cm95ZWQuXG4gICAgICAgIC8vIFRoaXMgcHJldmVudHMgYWRkaW5nIHR3byByZW1vdmUgcGF0Y2hlcyBmb3IgYSB3aWRnZXQuXG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICAgICAgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgYSwgYikpXG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKGIpKSB7XG4gICAgICAgIGlmIChpc1ZOb2RlKGEpKSB7XG4gICAgICAgICAgICBpZiAoYS50YWdOYW1lID09PSBiLnRhZ05hbWUgJiZcbiAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSA9PT0gYi5uYW1lc3BhY2UgJiZcbiAgICAgICAgICAgICAgICBhLmtleSA9PT0gYi5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNQYXRjaCA9IGRpZmZQcm9wcyhhLnByb3BlcnRpZXMsIGIucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNQYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUFJPUFMsIGEsIHByb3BzUGF0Y2gpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcHBseSA9IGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVlRleHQoYikpIHtcbiAgICAgICAgaWYgKCFpc1ZUZXh0KGEpKSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKGEudGV4dCAhPT0gYi50ZXh0KSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5XSURHRVQsIGEsIGIpKVxuICAgIH1cblxuICAgIGlmIChhcHBseSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBseVxuICAgIH1cblxuICAgIGlmIChhcHBseUNsZWFyKSB7XG4gICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpIHtcbiAgICB2YXIgYUNoaWxkcmVuID0gYS5jaGlsZHJlblxuICAgIHZhciBvcmRlcmVkU2V0ID0gcmVvcmRlcihhQ2hpbGRyZW4sIGIuY2hpbGRyZW4pXG4gICAgdmFyIGJDaGlsZHJlbiA9IG9yZGVyZWRTZXQuY2hpbGRyZW5cblxuICAgIHZhciBhTGVuID0gYUNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBiTGVuID0gYkNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBsZW4gPSBhTGVuID4gYkxlbiA/IGFMZW4gOiBiTGVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBsZWZ0Tm9kZSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgcmlnaHROb2RlID0gYkNoaWxkcmVuW2ldXG4gICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICBpZiAoIWxlZnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXhjZXNzIG5vZGVzIGluIGIgbmVlZCB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLklOU0VSVCwgbnVsbCwgcmlnaHROb2RlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhbGsobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVk5vZGUobGVmdE5vZGUpICYmIGxlZnROb2RlLmNvdW50KSB7XG4gICAgICAgICAgICBpbmRleCArPSBsZWZ0Tm9kZS5jb3VudFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyZWRTZXQubW92ZXMpIHtcbiAgICAgICAgLy8gUmVvcmRlciBub2RlcyBsYXN0XG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICBWUGF0Y2guT1JERVIsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgb3JkZXJlZFNldC5tb3Zlc1xuICAgICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiBhcHBseVxufVxuXG5mdW5jdGlvbiBjbGVhclN0YXRlKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzaW5nbGUgd2Fsaywgbm90IHR3b1xuICAgIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG59XG5cbi8vIFBhdGNoIHJlY29yZHMgZm9yIGFsbCBkZXN0cm95ZWQgd2lkZ2V0cyBtdXN0IGJlIGFkZGVkIGJlY2F1c2Ugd2UgbmVlZFxuLy8gYSBET00gbm9kZSByZWZlcmVuY2UgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzV2lkZ2V0KHZOb2RlKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZOb2RlLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgdk5vZGUsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUodk5vZGUpICYmICh2Tm9kZS5oYXNXaWRnZXRzIHx8IHZOb2RlLmhhc1RodW5rcykpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICBkZXN0cm95V2lkZ2V0cyhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIHN1Yi1wYXRjaCBmb3IgdGh1bmtzXG5mdW5jdGlvbiB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgdmFyIG5vZGVzID0gaGFuZGxlVGh1bmsoYSwgYilcbiAgICB2YXIgdGh1bmtQYXRjaCA9IGRpZmYobm9kZXMuYSwgbm9kZXMuYilcbiAgICBpZiAoaGFzUGF0Y2hlcyh0aHVua1BhdGNoKSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBuZXcgVlBhdGNoKFZQYXRjaC5USFVOSywgbnVsbCwgdGh1bmtQYXRjaClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhdGNoZXMocGF0Y2gpIHtcbiAgICBmb3IgKHZhciBpbmRleCBpbiBwYXRjaCkge1xuICAgICAgICBpZiAoaW5kZXggIT09IFwiYVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEV4ZWN1dGUgaG9va3Mgd2hlbiB0d28gbm9kZXMgYXJlIGlkZW50aWNhbFxuZnVuY3Rpb24gdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNWTm9kZSh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHZOb2RlLmhvb2tzKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChcbiAgICAgICAgICAgICAgICAgICAgVlBhdGNoLlBST1BTLFxuICAgICAgICAgICAgICAgICAgICB2Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkS2V5cyh2Tm9kZS5ob29rcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodk5vZGUuZGVzY2VuZGFudEhvb2tzIHx8IHZOb2RlLmhhc1RodW5rcykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHVuaG9vayhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZEtleXMob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBMaXN0IGRpZmYsIG5haXZlIGxlZnQgdG8gcmlnaHQgcmVvcmRlcmluZ1xuZnVuY3Rpb24gcmVvcmRlcihhQ2hpbGRyZW4sIGJDaGlsZHJlbikge1xuICAgIC8vIE8oTSkgdGltZSwgTyhNKSBtZW1vcnlcbiAgICB2YXIgYkNoaWxkSW5kZXggPSBrZXlJbmRleChiQ2hpbGRyZW4pXG4gICAgdmFyIGJLZXlzID0gYkNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBiRnJlZSA9IGJDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChiRnJlZS5sZW5ndGggPT09IGJDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhOKSB0aW1lLCBPKE4pIG1lbW9yeVxuICAgIHZhciBhQ2hpbGRJbmRleCA9IGtleUluZGV4KGFDaGlsZHJlbilcbiAgICB2YXIgYUtleXMgPSBhQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGFGcmVlID0gYUNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGFGcmVlLmxlbmd0aCA9PT0gYUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE1BWChOLCBNKSkgbWVtb3J5XG4gICAgdmFyIG5ld0NoaWxkcmVuID0gW11cblxuICAgIHZhciBmcmVlSW5kZXggPSAwXG4gICAgdmFyIGZyZWVDb3VudCA9IGJGcmVlLmxlbmd0aFxuICAgIHZhciBkZWxldGVkSXRlbXMgPSAwXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYSBhbmQgbWF0Y2ggYSBub2RlIGluIGJcbiAgICAvLyBPKE4pIHRpbWUsXG4gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgYUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhSXRlbSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgaXRlbUluZGV4XG5cbiAgICAgICAgaWYgKGFJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKGJLZXlzLmhhc093blByb3BlcnR5KGFJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBNYXRjaCB1cCB0aGUgb2xkIGtleXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiS2V5c1thSXRlbS5rZXldXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTWF0Y2ggdGhlIGl0ZW0gaW4gYSB3aXRoIHRoZSBuZXh0IGZyZWUgaXRlbSBpbiBiXG4gICAgICAgICAgICBpZiAoZnJlZUluZGV4IDwgZnJlZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYkZyZWVbZnJlZUluZGV4KytdXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGZyZWUgaXRlbXMgaW4gYiB0byBtYXRjaCB3aXRoXG4gICAgICAgICAgICAgICAgLy8gdGhlIGZyZWUgaXRlbXMgaW4gYSwgc28gdGhlIGV4dHJhIGZyZWUgbm9kZXNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZGVsZXRlZC5cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFzdEZyZWVJbmRleCA9IGZyZWVJbmRleCA+PSBiRnJlZS5sZW5ndGggP1xuICAgICAgICBiQ2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgYkZyZWVbZnJlZUluZGV4XVxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGIgYW5kIGFwcGVuZCBhbnkgbmV3IGtleXNcbiAgICAvLyBPKE0pIHRpbWVcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbmV3SXRlbSA9IGJDaGlsZHJlbltqXVxuXG4gICAgICAgIGlmIChuZXdJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKCFhS2V5cy5oYXNPd25Qcm9wZXJ0eShuZXdJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgYW55IG5ldyBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgYW5kIHRoZW4gc29ydGluZyB0aGVtXG4gICAgICAgICAgICAgICAgLy8gaW4gcGxhY2UuIEluIGZ1dHVyZSB3ZSBzaG91bGQgaW5zZXJ0IG5ldyBpdGVtcyBpbiBwbGFjZS5cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaiA+PSBsYXN0RnJlZUluZGV4KSB7XG4gICAgICAgICAgICAvLyBBZGQgYW55IGxlZnRvdmVyIG5vbi1rZXllZCBpdGVtc1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNpbXVsYXRlID0gbmV3Q2hpbGRyZW4uc2xpY2UoKVxuICAgIHZhciBzaW11bGF0ZUluZGV4ID0gMFxuICAgIHZhciByZW1vdmVzID0gW11cbiAgICB2YXIgaW5zZXJ0cyA9IFtdXG4gICAgdmFyIHNpbXVsYXRlSXRlbVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBiQ2hpbGRyZW4ubGVuZ3RoOykge1xuICAgICAgICB2YXIgd2FudGVkSXRlbSA9IGJDaGlsZHJlbltrXVxuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtc1xuICAgICAgICB3aGlsZSAoc2ltdWxhdGVJdGVtID09PSBudWxsICYmIHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgbnVsbCkpXG4gICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIG5lZWQgYSBrZXkgaW4gdGhpcyBwb3NpdGlvbi4uLlxuICAgICAgICAgICAgaWYgKHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFuIGluc2VydCBkb2Vzbid0IHB1dCB0aGlzIGtleSBpbiBwbGFjZSwgaXQgbmVlZHMgdG8gbW92ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoYktleXNbc2ltdWxhdGVJdGVtLmtleV0gIT09IGsgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmVtb3ZlIGRpZG4ndCBwdXQgdGhlIHdhbnRlZCBpdGVtIGluIHBsYWNlLCB3ZSBuZWVkIHRvIGluc2VydCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZW1zIGFyZSBtYXRjaGluZywgc28gc2tpcCBhaGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGsrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYSBrZXkgaW4gc2ltdWxhdGUgaGFzIG5vIG1hdGNoaW5nIHdhbnRlZCBrZXksIHJlbW92ZSBpdFxuICAgICAgICAgICAgZWxzZSBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgaysrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYWxsIHRoZSByZW1haW5pbmcgbm9kZXMgZnJvbSBzaW11bGF0ZVxuICAgIHdoaWxlKHNpbXVsYXRlSW5kZXggPCBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBvbmx5IG1vdmVzIHdlIGhhdmUgYXJlIGRlbGV0ZXMgdGhlbiB3ZSBjYW4ganVzdFxuICAgIC8vIGxldCB0aGUgZGVsZXRlIHBhdGNoIHJlbW92ZSB0aGVzZSBpdGVtcy5cbiAgICBpZiAocmVtb3Zlcy5sZW5ndGggPT09IGRlbGV0ZWRJdGVtcyAmJiAhaW5zZXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgIG1vdmVzOiB7XG4gICAgICAgICAgICByZW1vdmVzOiByZW1vdmVzLFxuICAgICAgICAgICAgaW5zZXJ0czogaW5zZXJ0c1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUoYXJyLCBpbmRleCwga2V5KSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IGluZGV4LFxuICAgICAgICBrZXk6IGtleVxuICAgIH1cbn1cblxuZnVuY3Rpb24ga2V5SW5kZXgoY2hpbGRyZW4pIHtcbiAgICB2YXIga2V5cyA9IHt9XG4gICAgdmFyIGZyZWUgPSBbXVxuICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cblxuICAgICAgICBpZiAoY2hpbGQua2V5KSB7XG4gICAgICAgICAgICBrZXlzW2NoaWxkLmtleV0gPSBpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmVlLnB1c2goaSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXM6IGtleXMsICAgICAvLyBBIGhhc2ggb2Yga2V5IG5hbWUgdG8gaW5kZXhcbiAgICAgICAgZnJlZTogZnJlZSAgICAgIC8vIEFuIGFycmF5IG9mIHVua2V5ZWQgaXRlbSBpbmRpY2VzXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmRQYXRjaChhcHBseSwgcGF0Y2gpIHtcbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXBwbHkpKSB7XG4gICAgICAgICAgICBhcHBseS5wdXNoKHBhdGNoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBbYXBwbHksIHBhdGNoXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwcGx5XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiOjM2LFwiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92cGF0Y2hcIjo0NCxcIi4vZGlmZi1wcm9wc1wiOjQ2LFwieC1pcy1hcnJheVwiOjIxfV0sNDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHZkb20gPSB7XG4gIFZOb2RlOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92bm9kZScpLFxuICBWVGV4dDogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdnRleHQnKSxcbiAgZGlmZjogcmVxdWlyZSgndmlydHVhbC1kb20vZGlmZicpLFxuICBwYXRjaDogcmVxdWlyZSgndmlydHVhbC1kb20vcGF0Y2gnKSxcbiAgY3JlYXRlRWxlbWVudDogcmVxdWlyZSgndmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnQnKSxcbiAgc3ZnOiByZXF1aXJlKFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIiksXG59O1xuXG5nbG9iYWwuVmlydHVhbERvbSA9IHZkb207XG5tb2R1bGUuZXhwb3J0cyA9IHZkb207XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJ2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudFwiOjEsXCJ2aXJ0dWFsLWRvbS9kaWZmXCI6MixcInZpcnR1YWwtZG9tL3BhdGNoXCI6MjIsXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiOjM1LFwidmlydHVhbC1kb20vdm5vZGUvdm5vZGVcIjo0MyxcInZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0XCI6NDV9XX0se30sWzQ4XSkoNDgpXG59KTtcbiIsImZ1bmN0aW9uIFZkb21UaHVuayhmbiwgYXJncywga2V5KSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFZkb21UaHVuaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWZG9tVGh1bmsoZm4sIGFyZ3MsIGtleSk7XG4gICAgfVxuXG4gICAgaWYgKGtleSkge1xuICAgICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgdGhpcy5mbiA9IGZuO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5WZG9tVGh1bmsgPSBWZG9tVGh1bms7XG5cblZkb21UaHVuay5wcm90b3R5cGUudHlwZSA9ICdUaHVuayc7XG5WZG9tVGh1bmsucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChwcmV2KSB7XG4gIGlmIChwcmV2ICYmIHRoaXMuYXJncyA9PT0gcHJldi5hcmdzICYmIHRoaXMuZm4gPT09IHByZXYuZm4pIHtcbiAgICByZXR1cm4gcHJldi52bm9kZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmZuKHRoaXMuYXJncyk7XG59O1xuXG5cbiIsIi8vIFVzZWQgYnkgd29ya2Fyb3VuZCBmb3IgaW5wdXQgZWxlbWVudCB2YWx1ZSBmaWVsZFxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9ob29rcy9zb2Z0LXNldC1ob29rLmpzXG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG5cbnZhciBHZW5lcmljSG9vayA9IGZ1bmN0aW9uIChpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHZW5lcmljSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljSG9vayhpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0ID0gaW5pdDtcbiAgICB0aGlzLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmV4dHJhID0gZXh0cmE7XG59O1xuXG52YXIgaG9va19zdGF0ZV9rZXkgPSBcInZkb21faG9va19zdGF0ZV9rZXlcIjtcblxuaWYgKHRoaXMuU3ltYm9sKSB7XG4gICAgaG9va19zdGF0ZV9rZXkgPSBTeW1ib2woaG9va19zdGF0ZV9rZXkpO1xufVxuXG5HZW5lcmljSG9vay53cml0ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgc3RhdGUpIHtcbiAgICBpZiAoIW5vZGVbaG9va19zdGF0ZV9rZXldKSB7XG4gICAgICAgIG5vZGVbaG9va19zdGF0ZV9rZXldID0ge307XG4gICAgfVxuICAgIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXSA9IHN0YXRlO1xufVxuXG5HZW5lcmljSG9vay5yZWFkX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgcmV0dXJuIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgZGVsZXRlIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgIHJldHVybiBmcm9tIGluc3RhbmNlb2YgdGhpcyAmJiB0byBpbnN0YW5jZW9mIHRoaXMgJiYgZnJvbS5pZCA9PT0gdG8uaWQgJiYgdG8udXBkYXRlO1xufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHByZXYpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbihwcmV2LCB0aGlzKSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgc3RhdGUgPSB0aGlzLnVwZGF0ZShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5pbml0KG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH1cbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIG5leHQpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbih0aGlzLCBuZXh0KSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLCB0aGUgaW1wZW5kaW5nIFtob29rXSB3aWxsIGhhbmRsZSB0aGUgY2FsbCB0byB1cGRhdGUuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgfVxufTtcblxuam9vX2dsb2JhbF9vYmplY3QuR2VuZXJpY0hvb2sgPSBHZW5lcmljSG9vaztcbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCh2KSB7XG4gIHYgPSB2IC0gKCh2ID4+PiAxKSAmIDB4NTU1NTU1NTUpO1xuICB2ID0gKHYgJiAweDMzMzMzMzMzKSArICgodiA+Pj4gMikgJiAweDMzMzMzMzMzKTtcbiAgcmV0dXJuICgodiArICh2ID4+PiA0KSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+PiAyNDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MgY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4bih4KSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NseiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCkge1xuICB2YXIgbiA9IDMyO1xuICB2YXIgeTtcbiAgeSA9IHggPj4xNjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDg7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0geCA+PiA0OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDE7IGlmICh5ICE9IDApIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSB4O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY2x6KHgpIHtcbiAgdmFyIG4gPSA2NDtcbiAgdmFyIHk7XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTMyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMSk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0gY2FtbF9pbnQ2NF90b19pbnQzMih4KTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpIHtcbiAgaWYgKHggPT09IDApIHsgcmV0dXJuIDMyOyB9XG4gIHZhciBuID0gMTtcbiAgaWYgKCAoeCAmIDB4MDAwMEZGRkYpID09PSAwKSB7IG4gPSBuICsgMTY7IHggPSB4ID4+IDE2OyB9XG4gIGlmICggKHggJiAweDAwMDAwMEZGKSA9PT0gMCkgeyBuID0gbiArICA4OyB4ID0geCA+PiAgODsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwRikgPT09IDApIHsgbiA9IG4gKyAgNDsgeCA9IHggPj4gIDQ7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMDMpID09PSAwKSB7IG4gPSBuICsgIDI7IHggPSB4ID4+ICAyOyB9XG4gIHJldHVybiBuIC0gKHggJiAxKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FuZCwgY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY3R6KHgpIHtcbiAgaWYgKGNhbWxfaW50NjRfaXNfemVybyh4KSkgeyByZXR1cm4gNjQ7IH1cbiAgdmFyIG4gPSAxO1xuICBmdW5jdGlvbiBpc196ZXJvICh4KSAgICB7IHJldHVybiBjYW1sX2ludDY0X2lzX3plcm8oeCk7IH1cbiAgZnVuY3Rpb24gbGFuZCAoeCx5KSAgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9hbmQoeCwgeSk7IH1cbiAgZnVuY3Rpb24gc21hbGxfaW50NjQoeCkgeyByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoeCwwLDApOyB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMHhGRkZGRkYsIDB4MDAwMEZGLCAweDAwMDApKSkpIHtcbiAgICBuID0gbiArIDMyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwRkZGRikpKSkge1xuICAgIG4gPSBuICsgMTY7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMEZGKSkpKSB7XG4gICAgbiA9IG4gKyAgODsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwRikpKSkge1xuICAgIG4gPSBuICsgIDQ7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDMpKSkpIHtcbiAgICBuID0gbiArICAyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgfVxuICByZXR1cm4gbiAtIChjYW1sX2ludDY0X3RvX2ludDMyKGNhbWxfaW50NjRfYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAxKSkpKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSAxO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWV4cG9uZW50PT0wKSB7XG4gICAgbXVsWzFdID0gKG11bFsxXSAqIG11bFszXSkgfCAwO1xuICAgIG11bFsyXSA9IChtdWxbMV0gKiBtdWxbMV0pIHwgMDtcbiAgICBtdWxbM10gPSAobXVsWzJdICogbXVsWzFdKSB8IDA7XG4gICAgcmVzID0gKHJlcyAqIG11bFtleHBvbmVudCAmIDNdKSB8IDA7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCA+PiAyO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKDEsMCk7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKGV4cG9uZW50KSkge1xuICAgIG11bFsxXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzNdKTtcbiAgICBtdWxbMl0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFsxXSk7XG4gICAgbXVsWzNdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzJdLCBtdWxbMV0pO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfbXVsKHJlcywgbXVsW2NhbWxfaW50NjRfbG8zMihleHBvbmVudCkgJiAzXSk7XG4gICAgZXhwb25lbnQgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKGV4cG9uZW50LCAyKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAscylcbn1cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9kb3VibGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX2RvdWJsZShkKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAsZCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfYW1fdGVzdGluZyBjb25zdFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBCYXNlX2FtX3Rlc3RpbmcoeCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jc2VsX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2NzZWxfdmFsdWUodl9jb25kLCB2X3RydWUsIHZfZmFsc2UpIHtcbiAgICBpZiAodl9jb25kKVxuICAgICAgICByZXR1cm4gdl90cnVlO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHZfZmFsc2U7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXNcbmZ1bmN0aW9uIEJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlcyh2X2xlbikge1xuICAgIC8vIFRoaXMgZG9lcyBhIHJlZHVuZGFudCBib3VuZHMgY2hlY2sgYW5kIChzaW5jZSB0aGlzIGlzXG4gICAgLy8gamF2YXNjcmlwdCkgZG9lc24ndCBhbGxvY2F0ZSBsb2NhbGx5LCBidXQgdGhhdCdzIGZpbmUuXG4gICAgcmV0dXJuIGNhbWxfY3JlYXRlX2J5dGVzKHZfbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2xvY2FsX3ZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV92ZWN0XG5mdW5jdGlvbiBjYW1sX21ha2VfbG9jYWxfdmVjdCh2X2xlbiwgdl9lbHQpIHtcbiAgICAvLyBJbiBqYXZhc2NyaXB0IHRoZXJlJ3Mgbm8gbG9jYWwgYWxsb2NhdGlvbi5cbiAgICByZXR1cm4gY2FtbF9tYWtlX3ZlY3QgKHZfbGVuLCB2X2VsdCk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKSB7XG4gICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWwsIGNhbWxfaGFzaF9taXhfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19oYXNoKGgsIHYpe1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdik7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4gKHggLSB5ID49IDAuNSk/KHkgKyAxKTp5XG4gIH0gZWxzZSB7XG4gICAgdmFyIHkgPSBNYXRoLmNlaWwoeCk7XG4gICAgcmV0dXJuICh5IC0geCA+PSAwLjUpPyh5IC0gMSk6eVxuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4KSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4ID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeFtuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICBpZighIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBhID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxlbikge1xuICBpZiAobGVuID09IDApIHJldHVybiAwO1xuICBpZiAoKGkyID09IDApICYmXG4gICAgICAobGVuID49IHMyLmwgfHwgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpKSB7XG4gICAgczIuYyA9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2UgaWYgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09IHMyLmMubGVuZ3RoKSB7XG4gICAgczIuYyArPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIHtcbiAgICBpZiAoczIudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsIGMyID0gczIuYztcbiAgICBpZiAoczEudCA9PSA0IC8qIEFSUkFZICovKSB7XG4gICAgICBpZiAoaTIgPD0gaTEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGwgPSBNYXRoLm1pbiAobGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzIgW2kyICsgaV0gPSBjMS5jaGFyQ29kZUF0KGkxICsgaSk7XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2JsaXRfc3RyaW5nKGEsYixjLGQsZSkge1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcoYSksYixjLGQsZSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKSB7IHJldHVybiBzLmwgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KGEsYikgeyByZXR1cm4gYSArIGIgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIE1sQnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChzMSxzMil7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhzMS50LHMxLmMrczIuYyxzMS5sK3MyLmwpXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgaWYoZ2xvYmFsVGhpcy5xdWl0KSBnbG9iYWxUaGlzLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdClcbiAgICBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsZmFsc2VdKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIGNhbWxfY2FsbGJhY2soYXRfZXhpdCwgWzBdKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnKTtcbiAgICAgIGlmKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9zdGF0aWNfZW52XG5mdW5jdGlvbiBjYW1sX3NldF9zdGF0aWNfZW52KGssdil7XG4gIGlmKCFnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudilcbiAgICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudiA9IHt9XG4gIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W2tdID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fc3lzX2dldGVudiAoY29uc3QpXG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5lbnZcbiAgICAgJiYgcHJvY2Vzcy5lbnZbbl0gIT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9jZXNzLmVudltuXTtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZcbiAgICAgJiYgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKSk7XG4gIGlmKHIgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdXG5cbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmFyZ3ZcbiAgICAgJiYgcHJvY2Vzcy5hcmd2Lmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgYXJndiA9IHByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIil7XG4gICAgdmFyIGNoaWxkX3Byb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG4gICAgaWYoY2hpbGRfcHJvY2VzcyAmJiBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpICogMC4wMDE7XG5mdW5jdGlvbiBjYW1sX3N5c190aW1lICgpIHtcbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHJldHVybiBub3cgKiAwLjAwMSAtIGNhbWxfaW5pdGlhbF90aW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW5cbi8vUmVxdWlyZXM6IGNhbWxfc3lzX3RpbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbihiKSB7XG4gIHJldHVybiBjYW1sX3N5c190aW1lKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JhbmRvbV9zZWVkIG11dGFibGVcbi8vVGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBhcnJheSBzaW5jZSBPQ2FtbCA0LjAuLi5cbmZ1bmN0aW9uIGNhbWxfc3lzX3JhbmRvbV9zZWVkICgpIHtcbiAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICB2YXIgYSA9IGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSg0KSk7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgIHZhciBhID0gbmV3IEludDMyQXJyYXkoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLmJ1ZmZlcik7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeGRnX2RlZmF1bHRzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF94ZGdfZGVmYXVsdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7IC8vIGVtcHR5IGxpc3Rcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmlzRmlsZShyb290LnJlc3QpO1xufVxuLy9BbHdheXNcbi8vUmVxdWlyZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYocHJvY2VzcyAmJiBwcm9jZXNzLm9uKSB7XG4gICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBwcm9jZXNzLmV4aXQgKDIpO1xuICAgIH0pXG4gIH1cbiAgZWxzZSBpZihnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpe1xuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihldmVudCl7XG4gICAgICBpZihldmVudC5lcnJvcil7XG4gICAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGV2ZW50LmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpO1xuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gVUludDhBcnJheVJlYWRlciAocywgaSkgeyB0aGlzLnMgPSBzOyB0aGlzLmkgPSBpOyB9XG5VSW50OEFycmF5UmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK107IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgOCkgfCBzW2kgKyAxXVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQgPj4gMTYpIHwgc1tpICsgMV07XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSh0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIE1sU3RyaW5nUmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7IHRoaXMuaSA9IGk7IH1cbk1sU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0ID4+IDE2KSB8IHMuY2hhckNvZGVBdChpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnMuc3Vic3RyaW5nKGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB2YXIgcyA9IHRoaXMucztcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGJbal0gPSBzLmNoYXJDb2RlQXQoaSArIGopO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldChpKTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIH1cbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9ieXRlcyAoYSkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIChjYW1sX2ludDY0X29mX2J5dGVzIChhKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXJcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAocywgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSwgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzICh0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X21hcnNoYWwod3JpdGVyLCB2LCBzaXplcykge1xuICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVyLndyaXRlICg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4OyBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzaXplWzBdID0gNDtcbiAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzd2l0Y2ggKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOlxuICAgIHNpemVbMF0gPSA0O1xuICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgY2FzZSAyOlxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbmF0aXZlIGludGVnZXJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3VubWFyc2hhbCwgY2FtbF9pbnQ2NF9tYXJzaGFsLCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9pbnQzMl91bm1hcnNoYWwsIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXJpYWxpemUsIGNhbWxfYmFfZGVzZXJpYWxpemUsIGNhbWxfYmFfY29tcGFyZSwgY2FtbF9iYV9oYXNoXG52YXIgY2FtbF9jdXN0b21fb3BzID1cbiAgICB7XCJfalwiOiB7XG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgICAgc2VyaWFsaXplICA6IGNhbWxfaW50NjRfbWFyc2hhbCxcbiAgICAgIGZpeGVkX2xlbmd0aCA6IDgsXG4gICAgICBjb21wYXJlIDogY2FtbF9pbnQ2NF9jb21wYXJlLFxuICAgICAgaGFzaCA6IGNhbWxfaW50NjRfaGFzaFxuICAgIH0sXG4gICAgIFwiX2lcIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQzMl91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfblwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyYXlcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycmF5XCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycjAyXCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnIwMlwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9XG4gICAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKSB7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuICB2YXIgbWFnaWMgPSByZWFkZXIucmVhZDMydSAoKVxuICBzd2l0Y2gobWFnaWMpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHJlYWRlci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiKTtcbiAgICBicmVha1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrO1xuICB9XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKHJlYWRlcikge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYoY29tcHJlc3NlZCkge1xuICAgIGlmKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMjBcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMTZcblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICB2YXIgciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyksIG9mcyk7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoKHIucmVhZDMydSgpKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByLnJlYWQzMnUoKTtcbiAgICBicmVhaztcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGhlYWRlcl9sZW4gLSBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgKyBkYXRhX2xlbjtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9pc19jb250aW51YXRpb25fdGFnXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLlxuICAgICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBDIC8qY3N0LkNPREVfRE9VQkxFX0xJVFRMRSovKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFs3IC0gaV0pfVxuICAgICAgICAgIHdyaXRlci5zaXplXzMyICs9IDNcbiAgICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQ2NFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQgPSBjYW1sX2hhc2hfbWl4X2ludDY0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQgPSBjYW1sX2hhc2hfbWl4X2ludDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0ID0gY2FtbF9oYXNoX21peF9mbG9hdDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nID0gY2FtbF9oYXNoX21peF9zdHJpbmc7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbFxuZnVuY3Rpb24gQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUoc2VlZCkge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoc2VlZCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19hbGxvY1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19hbGxvYyhfLHNpemUpe1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGUoMTIsIDAsIFswLHNpemVdKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1Yih4KXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0dWIoczEsIGkxLCBzMiwgaTIsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHMxLGkxLHMyLGkyLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtc2V0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1zZXRfc3R1YihiaWdzdHJpbmcsIHZfcG9zLCB2X2xlbiwgdl9jaGFyKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIGNhbWxfYmFfc2V0XzEoYmlnc3RyaW5nLCB2X3BvcyArIGksIHZfY2hhcik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHZfczIsdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSwgdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYnl0ZXNfZ2V0KHZfczIsIHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG52YXIgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nID0gY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2ZpbmRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19maW5kKGJzLCBjaHIsIHBvcywgbGVuKXtcbiAgd2hpbGUobGVuID4gMCl7XG4gICAgaWYoY2FtbF9iYV9nZXRfMShicyxwb3MpID09IGNocikgcmV0dXJuIHBvcztcbiAgICBwb3MrKztcbiAgICBsZW4tLTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGUoaGF5c3RhY2ssIG5lZWRsZSwgaGF5c3RhY2tfcG9zLCBoYXlzdGFja19sZW4sIG5lZWRsZV9wb3MsIG5lZWRsZV9sZW4pe1xuICB2YXIgaSA9IDA7XG4gIHZhciBsaW0gPSBoYXlzdGFja19sZW4gLSBuZWVkbGVfbGVuO1xuICBmb3IodmFyIGkgPSAwOyBpIDw9IGxpbTsgKytpKSB7XG4gICAgdmFyIG1hdGNoZXMgPSB0cnVlO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmVlZGxlX2xlbjsgKytqKSB7XG4gICAgICBpZiAoY2FtbF9iYV9nZXRfMShoYXlzdGFjaywgaGF5c3RhY2tfcG9zICsgaSArIGopICE9IGNhbWxfYmFfZ2V0XzEobmVlZGxlLG5lZWRsZV9wb3MgKyBqKSkge1xuICAgICAgICBtYXRjaGVzID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobWF0Y2hlcykgcmV0dXJuIChoYXlzdGFja19wb3MgKyBpKTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8vLy8vLy8vIENPUkVcblxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG5cbi8vUHJvdmlkZXM6IGNvcmVfdGltZV9uc19mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfdGltZV9uc19mb3JtYXQodGltZSxmb3JtYXQpe1xuICB2YXIgZCA9IG5ldyBEYXRlKHRpbWUgKiAxMDAwKTtcbiAgdmFyIGZvcm1hdGpzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmb3JtYXQpO1xuICB2YXIganN0cmluZyA9IGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lKGZvcm1hdGpzLCBkKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanN0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfY29tcGFjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfY29tcGFjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfY2h1bmtzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfY2h1bmtzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3Byb21vdGVkX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3Byb21vdGVkX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY190b3BfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY190b3BfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXG5mdW5jdGlvbiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZmRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luLCBjYW1sX21kNV9jaGFuLCBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbmZ1bmN0aW9uIGNvcmVfbWQ1X2ZkKGZkKXtcbiAgICB2YXIgaWMgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNhbWxfbWQ1X2NoYW4oaWMsIC0xKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBjYW1sX21sX2Nsb3NlX2NoYW5uZWwoaWMpO1xuICAgIH1cbn1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX2JsaXRfc3RyaW5nLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nKGJ1Ziwgb2ZzLCBsZW4sIHJlcyl7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihidWYsIG9mcywgYnl0ZXMsIDAsIGxlbik7XG4gICAgdmFyIHJlczIgPSBjYW1sX21kNV9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpLCAwLCBsZW4pO1xuICAgIGNhbWxfYmxpdF9zdHJpbmcocmVzMiwgMCwgcmVzLCAwLCAxNik7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vQmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1Yih2X2JzdHIpIHtcbiAgaWYgKHZfYnN0ci5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX2Rlc3Ryb3k6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICB9XG4gIC8vIE11dGF0ZSB0aGUgb3JpZ2luYWwgYmlnc3RyaW5nIGluLXBsYWNlLCB0byBzaW11bGF0ZSB3aGF0IHRoZSBDIHZlcnNpb24gZG9lc1xuICB2X2JzdHIuX19pc19kZWFsbG9jYXRlZCA9IHRydWU7XG4gIHZfYnN0ci5kYXRhID0gbmV3IHZfYnN0ci5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcigwKTtcbiAgdl9ic3RyLmRpbXMgPSBbIDAgXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19yZWFsbG9jXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX3JlYWxsb2MoYmlnc3RyaW5nLCBzaXplKSB7XG4gICAgaWYgKGJpZ3N0cmluZy5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19yZWFsbG9jOiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3X2RhdGEgPSBuZXcgYmlnc3RyaW5nLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKHNpemUpO1xuICAgIG5ld19kYXRhLnNldChiaWdzdHJpbmcuZGF0YS5zbGljZSgwLCBzaXplKSk7XG4gICAgdmFyIG5ld19iaWdzdHJpbmcgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmlnc3RyaW5nLmtpbmQsIGJpZ3N0cmluZy5sYXlvdXQsIFtzaXplXSwgbmV3X2RhdGEpO1xuICAgIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIoYmlnc3RyaW5nKTtcblxuICAgIHJldHVybiBuZXdfYmlnc3RyaW5nO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19vZmYsZHN0LGRzdF9vZmYsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyhiYTEsIGJhMV9vZmYsIGJhMiwgYmEyX29mZiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGNhbWxfaW50X2NvbXBhcmUoY2FtbF9iYV9nZXRfMShiYTEsIGJhMV9vZmYgKyBpKSwgY2FtbF9iYV9nZXRfMShiYTIsIGJhMl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZyhiYSwgYmFfb2ZmLCBzdHIsIHN0cl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHN0ciwgc3RyX29mZiArIGkpKTtcbiAgICBpZiAoYyAhPSAwKSByZXR1cm4gY1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jaHJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNocihiYSwgYmFfb2ZmLCBjaHIsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpID09IGNocikge1xuICAgICAgcmV0dXJuIChiYV9vZmYgKyBpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHRhZ19hKSkge1xuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLy8vLy8vLy8gQklOX1BST1RcblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGJpZ3N0cmluZywgaSl7XG4gIGlmIChpID4+PiAwID49IGJpZ3N0cmluZy5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zKTsgLy8gZmlyc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MrbGVuLTEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MpOyAgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgdmFyIHZpZXcgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KGxlbik7XG4gIHZhciBidWZmZXIgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheSh2aWV3LmJ1ZmZlcik7XG4gIGJ1ZmZlci5zZXQoc3JjLmRhdGEuc3ViYXJyYXkoc3JjX3Bvcywgc3JjX3BvcyArIChsZW4gKiA4KSkpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMCBcbiAgICBkc3RbZHN0X3BvcytpKzFdID0gdmlld1tpXTtcbiAgfVxuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YihzcmNfcG9zLHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDAgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3Bvcyk7IC8vIGZpcnN0IHBvcyBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zICsgbGVuIC0gMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3Bvcyk7IC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMFxuICBzcmNfcG9zID0gc3JjX3BvcyArIDFcbiAgdmFyIGZsb2F0NjQgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KHNyYy5zbGljZShzcmNfcG9zLHNyY19wb3MgKyBsZW4pKTtcbiAgdmFyIGZsb2F0NjRfdWludDggPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheShmbG9hdDY0LmJ1ZmZlcik7XG4gIHZhciB2aWV3ID0gZHN0LmRhdGEuc3ViYXJyYXkoZHN0X3BvcywgZHN0X3BvcyArIChsZW4gKiA4KSk7XG4gIHZpZXcuc2V0KGZsb2F0NjRfdWludDgpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEsIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIC8vIFtiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXSBpcyB1c2VkIHdpdGggbWl4ZWQgYmlnYXJyYXkga2luZHMuXG4gIC8vIENvbnZlcnRlciBldmVyeXRoaW5nIHRvIGJpZ2FycmF5IG9mIGNoYXIgYmVmb3JlIHRoZSBibGl0LlxuICBpZihzcmMua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIHNyYyA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShzcmMuZGF0YSk7XG4gIGlmKGRzdC5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgZHN0ID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGRzdC5kYXRhKTtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gQXJyYXlcblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zdWIgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIgKGEsIGksIGxlbikge1xuICB2YXIgYTIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBhMlswXT0wO1xuICBmb3IodmFyIGkyID0gMSwgaTE9IGkrMTsgaTIgPD0gbGVuOyBpMisrLGkxKysgKXtcbiAgICBhMltpMl09YVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2FwcGVuZCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgdmFyIGwxID0gYTEubGVuZ3RoLCBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMStsMi0xXG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gMDtcbiAgdmFyIGkgPSAxLGogPSAxO1xuICBmb3IoO2k8bDE7aSsrKSBhW2ldPWExW2ldO1xuICBmb3IoO2k8bDtpKyssaisrKSBhW2ldPWEyW2pdO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kIChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdmVjdCBjb25zdCAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy9Qcm92aWRlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBibGFrZTJiID0gKGZ1bmN0aW9uICgpIHtcbi8vIEJsYWtlMkIgaW4gcHVyZSBKYXZhc2NyaXB0XG4vLyBBZGFwdGVkIGZyb20gdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbiBSRkM3NjkzXG4vLyBQb3J0ZWQgdG8gSmF2YXNjcmlwdCBieSBEQyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9kY3Bvc2NoXG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSB2W2IsYisxXVxuLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuZnVuY3Rpb24gQURENjRBQSAodiwgYSwgYikge1xuICBjb25zdCBvMCA9IHZbYV0gKyB2W2JdXG4gIGxldCBvMSA9IHZbYSArIDFdICsgdltiICsgMV1cbiAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgbzErK1xuICB9XG4gIHZbYV0gPSBvMFxuICB2W2EgKyAxXSA9IG8xXG59XG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSBiXG4vLyBiMCBpcyB0aGUgbG93IDMyIGJpdHMgb2YgYiwgYjEgcmVwcmVzZW50cyB0aGUgaGlnaCAzMiBiaXRzXG5mdW5jdGlvbiBBREQ2NEFDICh2LCBhLCBiMCwgYjEpIHtcbiAgbGV0IG8wID0gdlthXSArIGIwXG4gIGlmIChiMCA8IDApIHtcbiAgICBvMCArPSAweDEwMDAwMDAwMFxuICB9XG4gIGxldCBvMSA9IHZbYSArIDFdICsgYjFcbiAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgbzErK1xuICB9XG4gIHZbYV0gPSBvMFxuICB2W2EgKyAxXSA9IG8xXG59XG5cbi8vIExpdHRsZS1lbmRpYW4gYnl0ZSBhY2Nlc3NcbmZ1bmN0aW9uIEIyQl9HRVQzMiAoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJbaV0gXiAoYXJyW2kgKyAxXSA8PCA4KSBeIChhcnJbaSArIDJdIDw8IDE2KSBeIChhcnJbaSArIDNdIDw8IDI0KVxufVxuXG4vLyBHIE1peGluZyBmdW5jdGlvblxuLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuZnVuY3Rpb24gQjJCX0cgKGEsIGIsIGMsIGQsIGl4LCBpeSkge1xuICBjb25zdCB4MCA9IG1baXhdXG4gIGNvbnN0IHgxID0gbVtpeCArIDFdXG4gIGNvbnN0IHkwID0gbVtpeV1cbiAgY29uc3QgeTEgPSBtW2l5ICsgMV1cblxuICBBREQ2NEFBKHYsIGEsIGIpIC8vIHZbYSxhKzFdICs9IHZbYixiKzFdIC4uLiBpbiBKUyB3ZSBtdXN0IHN0b3JlIGEgdWludDY0IGFzIHR3byB1aW50MzJzXG4gIEFERDY0QUModiwgYSwgeDAsIHgxKSAvLyB2W2EsIGErMV0gKz0geCAuLi4geDAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIHgsIHgxIGlzIHRoZSBoaWdoIDMyIGJpdHNcblxuICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMyIGJpdHNcbiAgbGV0IHhvcjAgPSB2W2RdIF4gdlthXVxuICBsZXQgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV1cbiAgdltkXSA9IHhvcjFcbiAgdltkICsgMV0gPSB4b3IwXG5cbiAgQURENjRBQSh2LCBjLCBkKVxuXG4gIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSAyNCBiaXRzXG4gIHhvcjAgPSB2W2JdIF4gdltjXVxuICB4b3IxID0gdltiICsgMV0gXiB2W2MgKyAxXVxuICB2W2JdID0gKHhvcjAgPj4+IDI0KSBeICh4b3IxIDw8IDgpXG4gIHZbYiArIDFdID0gKHhvcjEgPj4+IDI0KSBeICh4b3IwIDw8IDgpXG5cbiAgQURENjRBQSh2LCBhLCBiKVxuICBBREQ2NEFDKHYsIGEsIHkwLCB5MSlcblxuICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgcmlnaHQgYnkgMTYgYml0c1xuICB4b3IwID0gdltkXSBeIHZbYV1cbiAgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV1cbiAgdltkXSA9ICh4b3IwID4+PiAxNikgXiAoeG9yMSA8PCAxNilcbiAgdltkICsgMV0gPSAoeG9yMSA+Pj4gMTYpIF4gKHhvcjAgPDwgMTYpXG5cbiAgQURENjRBQSh2LCBjLCBkKVxuXG4gIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSA2MyBiaXRzXG4gIHhvcjAgPSB2W2JdIF4gdltjXVxuICB4b3IxID0gdltiICsgMV0gXiB2W2MgKyAxXVxuICB2W2JdID0gKHhvcjEgPj4+IDMxKSBeICh4b3IwIDw8IDEpXG4gIHZbYiArIDFdID0gKHhvcjAgPj4+IDMxKSBeICh4b3IxIDw8IDEpXG59XG5cbi8vIEluaXRpYWxpemF0aW9uIFZlY3RvclxuY29uc3QgQkxBS0UyQl9JVjMyID0gbmV3IFVpbnQzMkFycmF5KFtcbiAgMHhmM2JjYzkwOCwgMHg2YTA5ZTY2NywgMHg4NGNhYTczYiwgMHhiYjY3YWU4NSwgMHhmZTk0ZjgyYiwgMHgzYzZlZjM3MixcbiAgMHg1ZjFkMzZmMSwgMHhhNTRmZjUzYSwgMHhhZGU2ODJkMSwgMHg1MTBlNTI3ZiwgMHgyYjNlNmMxZiwgMHg5YjA1Njg4YyxcbiAgMHhmYjQxYmQ2YiwgMHgxZjgzZDlhYiwgMHgxMzdlMjE3OSwgMHg1YmUwY2QxOVxuXSlcblxuY29uc3QgU0lHTUE4ID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMyxcbiAgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLCAxMSwgOCwgMTIsIDAsIDUsIDIsIDE1LCAxMywgMTAsIDE0LCAzLCA2LCA3LCAxLFxuICA5LCA0LCA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LCA5LCAwLCA1LCA3LCAyLCA0LFxuICAxMCwgMTUsIDE0LCAxLCAxMSwgMTIsIDYsIDgsIDMsIDEzLCAyLCAxMiwgNiwgMTAsIDAsIDExLCA4LCAzLCA0LCAxMywgNywgNSxcbiAgMTUsIDE0LCAxLCA5LCAxMiwgNSwgMSwgMTUsIDE0LCAxMywgNCwgMTAsIDAsIDcsIDYsIDMsIDksIDIsIDgsIDExLCAxMywgMTEsIDcsXG4gIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLCA2LCAxNSwgMTQsIDksIDExLCAzLCAwLCA4LCAxMiwgMixcbiAgMTMsIDcsIDEsIDQsIDEwLCA1LCAxMCwgMiwgOCwgNCwgNywgNiwgMSwgNSwgMTUsIDExLCA5LCAxNCwgMywgMTIsIDEzLCAwLCAwLFxuICAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMywgNixcbiAgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzXG5dXG5cbi8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuLy8gTXVsdGlwbHkgdGhlbSBhbGwgYnkgMiB0byBtYWtlIHRoZW0gb2Zmc2V0cyBpbnRvIGEgdWludDMyIGJ1ZmZlcixcbi8vIGJlY2F1c2UgdGhpcyBpcyBKYXZhc2NyaXB0IGFuZCB3ZSBkb24ndCBoYXZlIHVpbnQ2NHNcbmNvbnN0IFNJR01BODIgPSBuZXcgVWludDhBcnJheShcbiAgU0lHTUE4Lm1hcChmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4ICogMlxuICB9KVxuKVxuXG4vLyBDb21wcmVzc2lvbiBmdW5jdGlvbi4gJ2xhc3QnIGZsYWcgaW5kaWNhdGVzIGxhc3QgYmxvY2suXG4vLyBOb3RlIHdlJ3JlIHJlcHJlc2VudGluZyAxNiB1aW50NjRzIGFzIDMyIHVpbnQzMnNcbmNvbnN0IHYgPSBuZXcgVWludDMyQXJyYXkoMzIpXG5jb25zdCBtID0gbmV3IFVpbnQzMkFycmF5KDMyKVxuZnVuY3Rpb24gYmxha2UyYkNvbXByZXNzIChjdHgsIGxhc3QpIHtcbiAgbGV0IGkgPSAwXG5cbiAgLy8gaW5pdCB3b3JrIHZhcmlhYmxlc1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIHZbaV0gPSBjdHguaFtpXVxuICAgIHZbaSArIDE2XSA9IEJMQUtFMkJfSVYzMltpXVxuICB9XG5cbiAgLy8gbG93IDY0IGJpdHMgb2Ygb2Zmc2V0XG4gIHZbMjRdID0gdlsyNF0gXiBjdHgudFxuICB2WzI1XSA9IHZbMjVdIF4gKGN0eC50IC8gMHgxMDAwMDAwMDApXG4gIC8vIGhpZ2ggNjQgYml0cyBub3Qgc3VwcG9ydGVkLCBvZmZzZXQgbWF5IG5vdCBiZSBoaWdoZXIgdGhhbiAyKio1My0xXG5cbiAgLy8gbGFzdCBibG9jayBmbGFnIHNldCA/XG4gIGlmIChsYXN0KSB7XG4gICAgdlsyOF0gPSB+dlsyOF1cbiAgICB2WzI5XSA9IH52WzI5XVxuICB9XG5cbiAgLy8gZ2V0IGxpdHRsZS1lbmRpYW4gd29yZHNcbiAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICBtW2ldID0gQjJCX0dFVDMyKGN0eC5iLCA0ICogaSlcbiAgfVxuXG4gIC8vIHR3ZWx2ZSByb3VuZHMgb2YgbWl4aW5nXG4gIC8vIHVuY29tbWVudCB0aGUgRGVidWdQcmludCBjYWxscyB0byBsb2cgdGhlIGNvbXB1dGF0aW9uXG4gIC8vIGFuZCBtYXRjaCB0aGUgUkZDIHNhbXBsZSBkb2N1bWVudGF0aW9uXG4gIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgQjJCX0coMCwgOCwgMTYsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDBdLCBTSUdNQTgyW2kgKiAxNiArIDFdKVxuICAgIEIyQl9HKDIsIDEwLCAxOCwgMjYsIFNJR01BODJbaSAqIDE2ICsgMl0sIFNJR01BODJbaSAqIDE2ICsgM10pXG4gICAgQjJCX0coNCwgMTIsIDIwLCAyOCwgU0lHTUE4MltpICogMTYgKyA0XSwgU0lHTUE4MltpICogMTYgKyA1XSlcbiAgICBCMkJfRyg2LCAxNCwgMjIsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDZdLCBTSUdNQTgyW2kgKiAxNiArIDddKVxuICAgIEIyQl9HKDAsIDEwLCAyMCwgMzAsIFNJR01BODJbaSAqIDE2ICsgOF0sIFNJR01BODJbaSAqIDE2ICsgOV0pXG4gICAgQjJCX0coMiwgMTIsIDIyLCAyNCwgU0lHTUE4MltpICogMTYgKyAxMF0sIFNJR01BODJbaSAqIDE2ICsgMTFdKVxuICAgIEIyQl9HKDQsIDE0LCAxNiwgMjYsIFNJR01BODJbaSAqIDE2ICsgMTJdLCBTSUdNQTgyW2kgKiAxNiArIDEzXSlcbiAgICBCMkJfRyg2LCA4LCAxOCwgMjgsIFNJR01BODJbaSAqIDE2ICsgMTRdLCBTSUdNQTgyW2kgKiAxNiArIDE1XSlcbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgY3R4LmhbaV0gPSBjdHguaFtpXSBeIHZbaV0gXiB2W2kgKyAxNl1cbiAgfVxufVxuXG4vLyByZXVzYWJsZSBwYXJhbWV0ZXJCbG9ja1xuY29uc3QgcGFyYW1ldGVyQmxvY2sgPSBuZXcgVWludDhBcnJheShbXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgNDogbGVhZiBsZW5ndGgsIHNlcXVlbnRpYWwgbW9kZVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgODogbm9kZSBvZmZzZXRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDE2OiBub2RlIGRlcHRoLCBpbm5lciBsZW5ndGgsIHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAyMDogcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDI0OiByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMjg6IHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAzMjogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAzNjogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0MDogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0NDogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0ODogcGVyc29uYWxcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNTI6IHBlcnNvbmFsXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDU2OiBwZXJzb25hbFxuICAwLFxuICAwLFxuICAwLFxuICAwIC8vIDYwOiBwZXJzb25hbFxuXSlcblxuLy8gQ3JlYXRlcyBhIEJMQUtFMmIgaGFzaGluZyBjb250ZXh0XG4vLyBSZXF1aXJlcyBhbiBvdXRwdXQgbGVuZ3RoIGJldHdlZW4gMSBhbmQgNjQgYnl0ZXNcbi8vIFRha2VzIGFuIG9wdGlvbmFsIFVpbnQ4QXJyYXkga2V5XG5mdW5jdGlvbiBibGFrZTJiSW5pdCAob3V0bGVuLCBrZXkpIHtcbiAgaWYgKG91dGxlbiA9PT0gMCB8fCBvdXRsZW4gPiA2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBvdXRwdXQgbGVuZ3RoLCBleHBlY3RlZCAwIDwgbGVuZ3RoIDw9IDY0JylcbiAgfVxuICBpZiAoa2V5Lmxlbmd0aCA+IDY0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGtleSwgZXhwZWN0ZWQgVWludDhBcnJheSB3aXRoIDAgPCBsZW5ndGggPD0gNjQnKVxuICB9XG5cbiAgLy8gc3RhdGUsICdwYXJhbSBibG9jaydcbiAgY29uc3QgY3R4ID0ge1xuICAgIGI6IG5ldyBVaW50OEFycmF5KDEyOCksXG4gICAgaDogbmV3IFVpbnQzMkFycmF5KDE2KSxcbiAgICB0OiAwLCAvLyBpbnB1dCBjb3VudFxuICAgIGM6IDAsIC8vIHBvaW50ZXIgd2l0aGluIGJ1ZmZlclxuICAgIG91dGxlbjogb3V0bGVuIC8vIG91dHB1dCBsZW5ndGggaW4gYnl0ZXNcbiAgfVxuXG4gIC8vIGluaXRpYWxpemUgcGFyYW1ldGVyQmxvY2sgYmVmb3JlIHVzYWdlXG4gIHBhcmFtZXRlckJsb2NrLmZpbGwoMClcbiAgcGFyYW1ldGVyQmxvY2tbMF0gPSBvdXRsZW5cbiAgcGFyYW1ldGVyQmxvY2tbMV0gPSBrZXkubGVuZ3RoXG4gIHBhcmFtZXRlckJsb2NrWzJdID0gMSAvLyBmYW5vdXRcbiAgcGFyYW1ldGVyQmxvY2tbM10gPSAxIC8vIGRlcHRoXG5cbiAgLy8gaW5pdGlhbGl6ZSBoYXNoIHN0YXRlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIGN0eC5oW2ldID0gQkxBS0UyQl9JVjMyW2ldIF4gQjJCX0dFVDMyKHBhcmFtZXRlckJsb2NrLCBpICogNClcbiAgfVxuXG5cblxuICBpZihrZXkubGVuZ3RoID4gMCl7XG4gICAgYmxha2UyYlVwZGF0ZShjdHgsIGtleSlcbiAgICAvLyBhdCB0aGUgZW5kXG4gICAgY3R4LmMgPSAxMjhcbiAgfVxuXG4gIHJldHVybiBjdHhcbn1cblxuLy8gVXBkYXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbi8vIFJlcXVpcmVzIGhhc2ggY29udGV4dCBhbmQgVWludDhBcnJheSAoYnl0ZSBhcnJheSlcbmZ1bmN0aW9uIGJsYWtlMmJVcGRhdGUgKGN0eCwgaW5wdXQpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChjdHguYyA9PT0gMTI4KSB7XG4gICAgICAvLyBidWZmZXIgZnVsbCA/XG4gICAgICBjdHgudCArPSBjdHguYyAvLyBhZGQgY291bnRlcnNcbiAgICAgIGJsYWtlMmJDb21wcmVzcyhjdHgsIGZhbHNlKSAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICBjdHguYyA9IDAgLy8gY291bnRlciB0byB6ZXJvXG4gICAgfVxuICAgIGN0eC5iW2N0eC5jKytdID0gaW5wdXRbaV1cbiAgfVxufVxuXG4vLyBDb21wbGV0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXR1cm5zIGEgVWludDhBcnJheSBjb250YWluaW5nIHRoZSBtZXNzYWdlIGRpZ2VzdFxuZnVuY3Rpb24gYmxha2UyYkZpbmFsIChjdHgpIHtcbiAgY3R4LnQgKz0gY3R4LmMgLy8gbWFyayBsYXN0IGJsb2NrIG9mZnNldFxuXG4gIHdoaWxlIChjdHguYyA8IDEyOCkge1xuICAgIC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgIGN0eC5iW2N0eC5jKytdID0gMFxuICB9XG4gIGJsYWtlMmJDb21wcmVzcyhjdHgsIHRydWUpIC8vIGZpbmFsIGJsb2NrIGZsYWcgPSAxXG5cbiAgLy8gbGl0dGxlIGVuZGlhbiBjb252ZXJ0IGFuZCBzdG9yZVxuICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShjdHgub3V0bGVuKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGN0eC5vdXRsZW47IGkrKykge1xuICAgIG91dFtpXSA9IGN0eC5oW2kgPj4gMl0gPj4gKDggKiAoaSAmIDMpKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiAgcmV0dXJuIHtJbml0OmJsYWtlMmJJbml0LCBVcGRhdGU6Ymxha2UyYlVwZGF0ZSwgRmluYWw6Ymxha2UyYkZpbmFsfVxufSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSl7XG4gIGtleSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGtleSk7XG4gIGlmKGtleS5sZW5ndGggPiA2NCkge1xuICAgIGtleS5zdWJhcnJheSgwLDY0KTtcbiAgfVxuICByZXR1cm4gYmxha2UyYi5Jbml0KGhhc2hsZW4sIGtleSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbikge1xuICB2YXIgciA9IGJsYWtlMmIuRmluYWwoY3R4KTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbil7XG4gIHZhciBpbnB1dCA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGJ1Zik7XG4gIGlucHV0ID0gaW5wdXQuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pO1xuICBibGFrZTJiLlVwZGF0ZShjdHgsIGlucHV0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9zdHJpbmcoaGFzaGxlbiwga2V5LCBidWYsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX2JsYWtlMl9jcmVhdGUgKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsdG9yZWFkKXtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoNDA5Nik7XG4gIGlmKHRvcmVhZCA8IDApe1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCxidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgYnJlYWs7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUodG9yZWFkID4gMCkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCwgKHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkKSk7XG4gICAgICBpZihyZWFkID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgICAgdG9yZWFkIC09IHJlYWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVRyYW5zZm9ybVxudmFyIGNhbWxfTUQ1VHJhbnNmb3JtID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICB9fSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtsZW46MCxcbiAgICAgICAgICB3Om5ldyBVaW50MzJBcnJheShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl0pLFxuICAgICAgICAgIGIzMjpiMzIsXG4gICAgICAgICAgYjg6Yjh9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVVcGRhdGUoY3R4LCBpbnB1dCwgaW5wdXRfbGVuKXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICB2YXIgaW5wdXRfcG9zID0gMDtcbiAgY3R4LmxlbiArPSBpbnB1dF9sZW47XG4gIGlmKGluX2J1Zil7XG4gICAgdmFyIG1pc3NpbmcgPSA2NCAtIGluX2J1ZjtcbiAgICBpZihpbnB1dF9sZW4gPCBtaXNzaW5nKSB7XG4gICAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsaW5wdXRfbGVuKSxpbl9idWYpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxtaXNzaW5nKSxpbl9idWYpO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gbWlzc2luZztcbiAgICBpbnB1dF9wb3MgKz0gbWlzc2luZztcbiAgfVxuICB3aGlsZShpbnB1dF9sZW4gPj0gNjQpe1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIDY0KSwgMCk7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSA2NDtcbiAgICBpbnB1dF9wb3MgKz0gNjQ7XG4gIH1cbiAgaWYoaW5wdXRfbGVuKVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIGN0eC5iOFtpbl9idWZdID0gMHg4MDtcbiAgaW5fYnVmICsrO1xuICBpZihpbl9idWYgPiA1Nikge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDY0OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH1cbiAgY3R4LmIzMlsxNF0gPSBjdHgubGVuIDw8IDM7XG4gIGN0eC5iMzJbMTVdID0gKGN0eC5sZW4gPj4gMjkpICYgMHgxRkZGRkZGRjtcbiAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICB2YXIgdCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICByZXR1cm4gdDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2J5dGVzKHMsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpO1xuICBjYW1sX01ENVVwZGF0ZShjdHgsYS5zdWJhcnJheShvZnMsIG9mcyArIGxlbiksIGxlbik7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc1xudmFyIGNhbWxfZG9tYWluX2RscyA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldChvbGQsbikge1xuICBpZihjYW1sX2RvbWFpbl9kbHMgIT09IG9sZCkgcmV0dXJuIDBcbiAgY2FtbF9kb21haW5fZGxzID0gbjtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZSkgZmlsZS5jbG9zZSgpO1xuICBkZWxldGUgY2FtbF9zeXNfZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSxpZHgpIHtcbiAgaWYoaWR4ID09IHVuZGVmaW5lZCl7XG4gICAgaWR4ID0gY2FtbF9zeXNfZmRzLmxlbmd0aDtcbiAgfVxuICBjYW1sX3N5c19mZHNbaWR4XSA9IGZpbGU7XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGZpbGUsIHVuZGVmaW5lZCk7XG59XG4oZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBuZXcgTWxGYWtlRmRfb3V0KGZkLCBmbGFncylcbiAgfVxuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMCx7cmRvbmx5OjEsYWx0bmFtZTpcIi9kZXYvc3RkaW5cIixpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDApO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMSx7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDEpO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMix7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDIpO1xufSkoKVxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKGNoYW5pZCwgbmFtZSkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0IChjYXB0dXJlZCwgaW50byl7XG4gIHZhciB0b19yZXN0b3JlID0gY2FtbF9tbF9jaGFubmVsX2dldChjYXB0dXJlZCk7XG4gIHZhciBuZXdfID0gY2FtbF9tbF9jaGFubmVsX2dldChpbnRvKTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjYXB0dXJlZF0gPSBuZXdfOyAvLyBYWFhcbiAgcmV0dXJuIHRvX3Jlc3RvcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZSAoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpe1xuICBjYW1sX21sX2NoYW5uZWxzW2NhcHR1cmVkXSA9IHRvX3Jlc3RvcmU7IC8vIFhYWFxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX2dldChpZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tpZF07IC8vIFhYWFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pc19iaW5hcnlfbW9kZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZihjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZCk7XG4gICAgY2hhbi5mZCA9IC0xO1xuICAgIGNoYW4uYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2JpZ2FycmF5IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmxvY2sgKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYobCA8PSBhdmFpbCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBsO1xuICB9XG4gIGVsc2UgaWYoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGF2YWlsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBhdmFpbDtcbiAgICBuID0gYXZhaWw7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgIGlmKG4gPiBhdmFpbCkgbiA9IGF2YWlsO1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgZnVuY3Rpb24gYmxvY2soYnVmZmVyLCBvZmZzZXQsIG4pIHtcbiAgICB2YXIgciA9IDA7XG4gICAgd2hpbGUociA8IG4pe1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCtyXSA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICAgICAgY2hhbi5idWZmZXJfY3VycisrO1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB2YXIgciA9IGJsb2NrKGhlYWRlciwgMCwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgaWYociA9PSAwKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgZWxzZSBpZiAociA8IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3RcIik7XG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChjYW1sX2J5dGVzX29mX2FycmF5KGhlYWRlciksIDApO1xuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuICsgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgYnVmLnNldChoZWFkZXIsMCk7XG4gIHZhciByID0gYmxvY2soYnVmLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUsIGxlbilcbiAgaWYociA8IGxlbilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3QgXCIgKyByICsgXCIgIFwiICsgbGVuKTtcbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcChjKSB7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlKGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2NoYXIsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgNDsgaSsrKXtcbiAgICByZXMgPSAocmVzIDw8IDgpICsgY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW5pZCkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYocG9zID49IGNoYW4ub2Zmc2V0IC0gY2hhbi5idWZmZXJfbWF4XG4gICAgICYmIHBvcyA8PSBjaGFuLm9mZnNldFxuICAgICAmJiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5KSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQscG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3Bvc19pbihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCAtIChjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX3Bvc19pbihjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIHAgPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBkbyB7XG4gICAgaWYocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPiAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyKSwwKTtcbiAgICAgICAgcCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICB9XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZfbWF4ID0gY2hhbi5idWZmZXJfbWF4O1xuICAgICAgY2FtbF9yZWZpbGwgKGNoYW4pO1xuICAgICAgaWYocHJldl9tYXggPT0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPSAxMCk7XG4gIHJldHVybiAocCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXJfY3VyciA9PSAwKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5vdXRwdXQpIHtcbiAgICBjaGFuLm91dHB1dChjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgfVxuICBjaGFuLm9mZnNldCArPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X3RhXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXksIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX291dChjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9wb3Nfb3V0KGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpLmJ1ZmZlcmVkID8gMSA6IDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGNoYW5pZCx2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA9IHY7XG4gIGlmKCF2KSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiAwXG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfYXJlX2FjdGl2ZVxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfYXJlX2FjdGl2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjFcbnZhciB6c3RkX2RlY29tcHJlc3MgPSAoZnVuY3Rpb24gKCkge1xuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBhbGlhc2VzIGZvciBzaG9ydGVyIGNvbXByZXNzZWQgY29kZSAobW9zdCBtaW5pZmVycyBkb24ndCBkbyB0aGlzKVxudmFyIGFiID0gQXJyYXlCdWZmZXIsIHU4ID0gVWludDhBcnJheSwgdTE2ID0gVWludDE2QXJyYXksIGkxNiA9IEludDE2QXJyYXksIHUzMiA9IFVpbnQzMkFycmF5LCBpMzIgPSBJbnQzMkFycmF5O1xudmFyIHNsYyA9IGZ1bmN0aW9uICh2LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5zbGljZSlcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5zbGljZS5jYWxsKHYsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgdmFyIG4gPSBuZXcgdTgoZSAtIHMpO1xuICAgIG4uc2V0KHYuc3ViYXJyYXkocywgZSkpO1xuICAgIHJldHVybiBuO1xufTtcbnZhciBmaWxsID0gZnVuY3Rpb24gKHYsIG4sIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmZpbGwpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuZmlsbC5jYWxsKHYsIG4sIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgZm9yICg7IHMgPCBlOyArK3MpXG4gICAgICAgIHZbc10gPSBuO1xuICAgIHJldHVybiB2O1xufTtcbnZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwodiwgdCwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB3aGlsZSAocyA8IGUpIHtcbiAgICAgICAgdlt0KytdID0gdltzKytdO1xuICAgIH1cbn07XG4vKipcbiAqIENvZGVzIGZvciBlcnJvcnMgZ2VuZXJhdGVkIHdpdGhpbiB0aGlzIGxpYnJhcnlcbiAqL1xuLy8gZXJyb3IgY29kZXNcbnZhciBlYyA9IFtcbiAgICAnaW52YWxpZCB6c3RkIGRhdGEnLFxuICAgICd3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpJyxcbiAgICAnaW52YWxpZCBibG9jayB0eXBlJyxcbiAgICAnRlNFIGFjY3VyYWN5IHRvbyBoaWdoJyxcbiAgICAnbWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrJyxcbiAgICAndW5leHBlY3RlZCBFT0YnXG5dO1xuO1xudmFyIGVyciA9IGZ1bmN0aW9uIChpbmQsIG1zZywgbnQpIHtcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgfHwgZWNbaW5kXSk7XG4gICAgZS5jb2RlID0gaW5kO1xuICAgIGlmICghbnQpXG4gICAgICAgIHRocm93IGU7XG4gICAgcmV0dXJuIGU7XG59O1xudmFyIHJiID0gZnVuY3Rpb24gKGQsIGIsIG4pIHtcbiAgICB2YXIgaSA9IDAsIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKVxuICAgICAgICBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbn07XG52YXIgYjQgPSBmdW5jdGlvbiAoZCwgYikgeyByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7IH07XG4vLyByZWFkIFpzdGFuZGFyZCBmcmFtZSBoZWFkZXJcbnZhciByemZoID0gZnVuY3Rpb24gKGRhdCwgdykge1xuICAgIHZhciBuMyA9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkgfCAoZGF0WzJdIDw8IDE2KTtcbiAgICBpZiAobjMgPT0gMHgyRkI1MjggJiYgZGF0WzNdID09IDI1Mykge1xuICAgICAgICAvLyBac3RhbmRhcmRcbiAgICAgICAgdmFyIGZsZyA9IGRhdFs0XTtcbiAgICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgICAgdmFyIHNzID0gKGZsZyA+PiA1KSAmIDEsIGNjID0gKGZsZyA+PiAyKSAmIDEsIGRmID0gZmxnICYgMywgZmNmID0gZmxnID4+IDY7XG4gICAgICAgIGlmIChmbGcgJiA4KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyBieXRlXG4gICAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgICAgLy8gZGljdCBieXRlc1xuICAgICAgICB2YXIgZGIgPSBkZiA9PSAzID8gNCA6IGRmO1xuICAgICAgICAvLyBkaWN0aW9uYXJ5IGlkXG4gICAgICAgIHZhciBkaSA9IHJiKGRhdCwgYnQsIGRiKTtcbiAgICAgICAgYnQgKz0gZGI7XG4gICAgICAgIC8vIGZyYW1lIHNpemUgYnl0ZXNcbiAgICAgICAgdmFyIGZzYiA9IGZjZiA/ICgxIDw8IGZjZikgOiBzcztcbiAgICAgICAgLy8gZnJhbWUgc291cmNlIHNpemVcbiAgICAgICAgdmFyIGZzcyA9IHJiKGRhdCwgYnQsIGZzYikgKyAoKGZjZiA9PSAxKSAmJiAyNTYpO1xuICAgICAgICAvLyB3aW5kb3cgc2l6ZVxuICAgICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICAgIGlmICghc3MpIHtcbiAgICAgICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgICAgICB2YXIgd2IgPSAxIDw8ICgxMCArIChkYXRbNV0gPj4gMykpO1xuICAgICAgICAgICAgd3MgPSB3YiArICh3YiA+PiAzKSAqIChkYXRbNV0gJiA3KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KVxuICAgICAgICAgICAgZXJyKDEpO1xuICAgICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09IDEgPyAoZnNzIHx8IHdzKSA6IHcgPyAwIDogd3MpICsgMTIpO1xuICAgICAgICBidWZbMF0gPSAxLCBidWZbNF0gPSA0LCBidWZbOF0gPSA4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbDogMCxcbiAgICAgICAgICAgIGQ6IGRpLFxuICAgICAgICAgICAgdzogKHcgJiYgdyAhPSAxKSA/IHcgOiBidWYuc3ViYXJyYXkoMTIpLFxuICAgICAgICAgICAgZTogd3MsXG4gICAgICAgICAgICBvOiBuZXcgaTMyKGJ1Zi5idWZmZXIsIDAsIDMpLFxuICAgICAgICAgICAgdTogZnNzLFxuICAgICAgICAgICAgYzogY2MsXG4gICAgICAgICAgICBtOiBNYXRoLm1pbigxMzEwNzIsIHdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoKG4zID4+IDQpIHwgKGRhdFszXSA8PCAyMCkpID09IDB4MTg0RDJBNSkge1xuICAgICAgICAvLyBza2lwcGFibGVcbiAgICAgICAgcmV0dXJuIGI0KGRhdCwgNCkgKyA4O1xuICAgIH1cbiAgICBlcnIoMCk7XG59O1xuLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbnZhciBtc2IgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgdmFyIGJpdHMgPSAwO1xuICAgIGZvciAoOyAoMSA8PCBiaXRzKSA8PSB2YWw7ICsrYml0cylcbiAgICAgICAgO1xuICAgIHJldHVybiBiaXRzIC0gMTtcbn07XG4vLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG52YXIgcmZzZSA9IGZ1bmN0aW9uIChkYXQsIGJ0LCBtYWwpIHtcbiAgICAvLyB0YWJsZSBwb3NcbiAgICB2YXIgdHBvcyA9IChidCA8PCAzKSArIDQ7XG4gICAgLy8gYWNjdXJhY3kgbG9nXG4gICAgdmFyIGFsID0gKGRhdFtidF0gJiAxNSkgKyA1O1xuICAgIGlmIChhbCA+IG1hbClcbiAgICAgICAgZXJyKDMpO1xuICAgIC8vIHNpemVcbiAgICB2YXIgc3ogPSAxIDw8IGFsO1xuICAgIC8vIHByb2JhYmlsaXRpZXMgc3ltYm9scyAgcmVwZWF0ICAgaW5kZXggICBoaWdoIHRocmVzaG9sZFxuICAgIHZhciBwcm9icyA9IHN6LCBzeW0gPSAtMSwgcmUgPSAtMSwgaSA9IC0xLCBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgICAgdmFyIGJpdHMgPSBtc2IocHJvYnMgKyAxKTtcbiAgICAgICAgdmFyIGNidCA9IHRwb3MgPj4gMztcbiAgICAgICAgLy8gbWFza1xuICAgICAgICB2YXIgbXNrID0gKDEgPDwgKGJpdHMgKyAxKSkgLSAxO1xuICAgICAgICB2YXIgdmFsID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHRwb3MgJiA3KSkgJiBtc2s7XG4gICAgICAgIC8vIG1hc2sgKDEgZmV3ZXIgYml0KVxuICAgICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgICAvLyBtYXggc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIG1zdiA9IG1zayAtIHByb2JzIC0gMTtcbiAgICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIHN2YWwgPSB2YWwgJiBtc2sxZmI7XG4gICAgICAgIGlmIChzdmFsIDwgbXN2KVxuICAgICAgICAgICAgdHBvcyArPSBiaXRzLCB2YWwgPSBzdmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cyArIDE7XG4gICAgICAgICAgICBpZiAodmFsID4gbXNrMWZiKVxuICAgICAgICAgICAgICAgIHZhbCAtPSBtc3Y7XG4gICAgICAgIH1cbiAgICAgICAgZnJlcVsrK3N5bV0gPSAtLXZhbDtcbiAgICAgICAgaWYgKHZhbCA9PSAtMSkge1xuICAgICAgICAgICAgcHJvYnMgKz0gdmFsO1xuICAgICAgICAgICAgc3ltc1stLWh0XSA9IHN5bTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9icyAtPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gcmVwZWF0IGJ5dGVcbiAgICAgICAgICAgICAgICB2YXIgcmJ0ID0gdHBvcyA+PiAzO1xuICAgICAgICAgICAgICAgIHJlID0gKChkYXRbcmJ0XSB8IChkYXRbcmJ0ICsgMV0gPDwgOCkpID4+ICh0cG9zICYgNykpICYgMztcbiAgICAgICAgICAgICAgICB0cG9zICs9IDI7XG4gICAgICAgICAgICAgICAgc3ltICs9IHJlO1xuICAgICAgICAgICAgfSB3aGlsZSAocmUgPT0gMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN5bSA+IDI1NSB8fCBwcm9icylcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzeW1wb3MgPSAwO1xuICAgIC8vIHN5bSBzdGVwIChjb3ByaW1lIHdpdGggc3ogLSBmb3JtdWxhIGZyb20genN0ZCBzb3VyY2UpXG4gICAgdmFyIHNzdGVwID0gKHN6ID4+IDEpICsgKHN6ID4+IDMpICsgMztcbiAgICAvLyBzeW0gbWFza1xuICAgIHZhciBzbWFzayA9IHN6IC0gMTtcbiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzeW07ICsrcykge1xuICAgICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgICBpZiAoc2YgPCAxKSB7XG4gICAgICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHNwbGl0IGludG8gdHdvIGxvb3BzIGluIHpzdGQgdG8gYXZvaWQgYnJhbmNoaW5nLCBidXQgYXMgSlMgaXMgaGlnaGVyLWxldmVsIHRoYXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNmOyArK2kpIHtcbiAgICAgICAgICAgIHN5bXNbc3ltcG9zXSA9IHM7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICAgICAgfSB3aGlsZSAoc3ltcG9zID49IGh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgICAgLy8gbmV4dCBzdGF0ZVxuICAgICAgICB2YXIgbnMgPSBkc3RhdGVbc3ltc1tpXV0rKztcbiAgICAgICAgLy8gbnVtIGJpdHNcbiAgICAgICAgdmFyIG5iID0gbmJpdHNbaV0gPSBhbCAtIG1zYihucyk7XG4gICAgICAgIG5zdGF0ZVtpXSA9IChucyA8PCBuYikgLSBzejtcbiAgICB9XG4gICAgcmV0dXJuIFsodHBvcyArIDcpID4+IDMsIHtcbiAgICAgICAgICAgIGI6IGFsLFxuICAgICAgICAgICAgczogc3ltcyxcbiAgICAgICAgICAgIG46IG5iaXRzLFxuICAgICAgICAgICAgdDogbnN0YXRlXG4gICAgICAgIH1dO1xufTtcbi8vIHJlYWQgaHVmZm1hblxudmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsIHdjID0gLTE7XG4gICAgLy8gICAgYnVmZmVyICAgICAgICAgICAgIGhlYWRlciBieXRlXG4gICAgdmFyIGJ1ZiA9IG5ldyB1OCgyOTIpLCBoYiA9IGRhdFtidF07XG4gICAgLy8gaHVmZm1hbiB3ZWlnaHRzXG4gICAgdmFyIGh3ID0gYnVmLnN1YmFycmF5KDAsIDI1Nik7XG4gICAgLy8gcmFuayBjb3VudFxuICAgIHZhciByYyA9IGJ1Zi5zdWJhcnJheSgyNTYsIDI2OCk7XG4gICAgLy8gcmFuayBpbmRleFxuICAgIHZhciByaSA9IG5ldyB1MTYoYnVmLmJ1ZmZlciwgMjY4KTtcbiAgICAvLyBOT1RFOiBhdCB0aGlzIHBvaW50IGJ0IGlzIDEgbGVzcyB0aGFuIGV4cGVjdGVkXG4gICAgaWYgKGhiIDwgMTI4KSB7XG4gICAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICAgIHZhciBfYSA9IHJmc2UoZGF0LCBidCArIDEsIDYpLCBlYnQgPSBfYVswXSwgZmR0ID0gX2FbMV07XG4gICAgICAgIGJ0ICs9IGhiO1xuICAgICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgICAvLyBsYXN0IGJ5dGVcbiAgICAgICAgdmFyIGxiID0gZGF0W2J0XTtcbiAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgICAgdmFyIHN0MSA9IDAsIHN0MiA9IDAsIGJ0cjEgPSBmZHQuYiwgYnRyMiA9IGJ0cjE7XG4gICAgICAgIC8vIGZzZSBwb3NcbiAgICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgICAgdmFyIGZwb3MgPSAoKytidCA8PCAzKSAtIDggKyBtc2IobGIpO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjE7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QxICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIxKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICAgICAgZnBvcyAtPSBidHIyO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QyICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIyKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDJdO1xuICAgICAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgICAgICBzdDEgPSBmZHQudFtzdDFdO1xuICAgICAgICAgICAgYnRyMiA9IGZkdC5uW3N0Ml07XG4gICAgICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrK3djID4gMjU1KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgICAgZm9yICg7IGkgPCB3YzsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgICAgIGh3W2ldID0gYnl0ZSA+PiA0O1xuICAgICAgICAgICAgaHdbaSArIDFdID0gYnl0ZSAmIDE1O1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgLy8gYml0cyBtdXN0IGJlIGF0IG1vc3QgMTEsIHNhbWUgYXMgd2VpZ2h0XG4gICAgICAgIGlmICh3dCA+IDExKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICB3ZXMgKz0gd3QgJiYgKDEgPDwgKHd0IC0gMSkpO1xuICAgIH1cbiAgICAvLyBtYXggYml0c1xuICAgIHZhciBtYiA9IG1zYih3ZXMpICsgMTtcbiAgICAvLyB0YWJsZSBzaXplXG4gICAgdmFyIHRzID0gMSA8PCBtYjtcbiAgICAvLyByZW1haW5pbmcgc3VtXG4gICAgdmFyIHJlbSA9IHRzIC0gd2VzO1xuICAgIC8vIG11c3QgYmUgcG93ZXIgb2YgMlxuICAgIGlmIChyZW0gJiAocmVtIC0gMSkpXG4gICAgICAgIGVycigwKTtcbiAgICBod1t3YysrXSA9IG1zYihyZW0pICsgMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgKytyY1tod1tpXSA9IHd0ICYmIChtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksIG5iID0gaGJ1Zi5zdWJhcnJheSh0cyk7XG4gICAgcmlbbWJdID0gMDtcbiAgICBmb3IgKGkgPSBtYjsgaSA+IDA7IC0taSkge1xuICAgICAgICB2YXIgcHYgPSByaVtpXTtcbiAgICAgICAgZmlsbChuYiwgaSwgcHYsIHJpW2kgLSAxXSA9IHB2ICsgcmNbaV0gKiAoMSA8PCAobWIgLSBpKSkpO1xuICAgIH1cbiAgICBpZiAocmlbMF0gIT0gdHMpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgYml0cyA9IGh3W2ldO1xuICAgICAgICBpZiAoYml0cykge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSByaVtiaXRzXTtcbiAgICAgICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgcmlbYml0c10gPSBjb2RlICsgKDEgPDwgKG1iIC0gYml0cykpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2J0LCB7XG4gICAgICAgICAgICBuOiBuYixcbiAgICAgICAgICAgIGI6IG1iLFxuICAgICAgICAgICAgczogc3ltc1xuICAgICAgICB9XTtcbn07XG4vLyBUYWJsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXM6XG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbi8vIGRlZmF1bHQgbGl0ZXJhbCBsZW5ndGggdGFibGVcbnZhciBkbGx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsIDE0NiwgNFxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBtYXRjaCBsZW5ndGggdGFibGVcbnZhciBkbWx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCAzNiwgOVxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBvZmZzZXQgY29kZSB0YWJsZVxudmFyIGRvY3QgPSAvKiNfX1BVUkVfXyAqLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMiwgMTMyLCAxNiwgNjYsIDEwMiwgNzAsIDY4LCA2OCwgNjgsIDY4LCAzNiwgNzMsIDJcbl0pLCAwLCA1KVsxXTtcbi8vIGJpdHMgdG8gYmFzZWxpbmVcbnZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsIGJsID0gbmV3IGkzMihsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgYmxbaV0gPSBzO1xuICAgICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xufTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJpdHNcbnZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTM0Njc4MDIwLCAyMDIwNTAwNTcsIDI2OTQyMjA5M1xuXSkpLmJ1ZmZlciwgMCwgMzYpO1xuLy8gbGl0ZXJhbCBsZW5ndGggYmFzZWxpbmVcbnZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuLy8gbWF0Y2ggbGVuZ3RoIGJpdHNcbnZhciBtbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTE3NzY5MjIwLCAxODUyMDcwNDgsIDI1MjU3OTA4NCwgMTZcbl0pKS5idWZmZXIsIDAsIDUzKTtcbi8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxudmFyIG1sYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKG1sYiwgMyk7XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW1cbnZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsIHNzID0gb3V0Lmxlbmd0aCwgbGIgPSBkYXRbbGVuIC0gMV0sIG1zayA9ICgxIDw8IGh1LmIpIC0gMSwgZWIgPSAtaHUuYjtcbiAgICBpZiAoIWxiKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN0ID0gMCwgYnRyID0gaHUuYiwgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLCBpID0gLTE7XG4gICAgZm9yICg7IHBvcyA+IGViICYmIGkgPCBzczspIHtcbiAgICAgICAgdmFyIGNidCA9IHBvcyA+PiAzO1xuICAgICAgICB2YXIgdmFsID0gKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAocG9zICYgNyk7XG4gICAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgICAgb3V0WysraV0gPSBodS5zW3N0XTtcbiAgICAgICAgcG9zIC09IChidHIgPSBodS5uW3N0XSk7XG4gICAgfVxuICAgIGlmIChwb3MgIT0gZWIgfHwgaSArIDEgIT0gc3MpXG4gICAgICAgIGVycigwKTtcbn07XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbi8vIFRPRE86IHVzZSB3b3JrZXJzIHRvIHBhcmFsbGVsaXplXG52YXIgZGh1NCA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgYnQgPSA2O1xuICAgIHZhciBzcyA9IG91dC5sZW5ndGgsIHN6MSA9IChzcyArIDMpID4+IDIsIHN6MiA9IHN6MSA8PCAxLCBzejMgPSBzejEgKyBzejI7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSksIG91dC5zdWJhcnJheSgwLCBzejEpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzJdIHwgKGRhdFszXSA8PCA4KSksIG91dC5zdWJhcnJheShzejEsIHN6MiksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6Miwgc3ozKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQpLCBvdXQuc3ViYXJyYXkoc3ozKSwgaHUpO1xufTtcbi8vIHJlYWQgWnN0YW5kYXJkIGJsb2NrXG52YXIgcnpiID0gZnVuY3Rpb24gKGRhdCwgc3QsIG91dCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYnQgPSBzdC5iO1xuICAgIC8vICAgIGJ5dGUgMCAgICAgICAgYmxvY2sgdHlwZVxuICAgIHZhciBiMCA9IGRhdFtidF0sIGJ0eXBlID0gKGIwID4+IDEpICYgMztcbiAgICBzdC5sID0gYjAgJiAxO1xuICAgIHZhciBzeiA9IChiMCA+PiAzKSB8IChkYXRbYnQgKyAxXSA8PCA1KSB8IChkYXRbYnQgKyAyXSA8PCAxMyk7XG4gICAgLy8gZW5kIGJ5dGUgZm9yIGJsb2NrXG4gICAgdmFyIGVidCA9IChidCArPSAzKSArIHN6O1xuICAgIGlmIChidHlwZSA9PSAxKSB7XG4gICAgICAgIGlmIChidCA+PSBkYXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdC5iID0gYnQgKyAxO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmaWxsKG91dCwgZGF0W2J0XSwgc3QueSwgc3QueSArPSBzeik7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsKG5ldyB1OChzeiksIGRhdFtidF0pO1xuICAgIH1cbiAgICBpZiAoZWJ0ID4gZGF0Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChidHlwZSA9PSAwKSB7XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgICAgIHN0LnkgKz0gc3o7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09IDIpIHtcbiAgICAgICAgLy8gICAgYnl0ZSAzICAgICAgICBsaXQgYnR5cGUgICAgIHNpemUgZm9ybWF0XG4gICAgICAgIHZhciBiMyA9IGRhdFtidF0sIGxidCA9IGIzICYgMywgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgICAvLyBsaXQgc3JjIHNpemUgIGxpdCBjbXAgc3ogNCBzdHJlYW1zXG4gICAgICAgIHZhciBsc3MgPSBiMyA+PiA0LCBsY3MgPSAwLCBzNCA9IDA7XG4gICAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgICAgICBpZiAoc2YgJiAxKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChzZiAmIDIpICYmIChkYXRbKytidF0gPDwgMTIpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgPSBiMyA+PiAzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczQgPSBzZjtcbiAgICAgICAgICAgIGlmIChzZiA8IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9ICgoZGF0WysrYnRdICYgNjMpIDw8IDQpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMik7XG4gICAgICAgICAgICBlbHNlIGlmIChzZiA9PSAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiAzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDIpIHwgKGRhdFsrK2J0XSA8PCA2KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICAgICAgLy8gYWRkIGxpdGVyYWxzIHRvIGVuZCAtIGNhbiBuZXZlciBvdmVybGFwIHdpdGggYmFja3JlZmVyZW5jZXMgYmVjYXVzZSB1bnVzZWQgbGl0ZXJhbHMgYWx3YXlzIGFwcGVuZGVkXG4gICAgICAgIHZhciBidWYgPSBvdXQgPyBvdXQuc3ViYXJyYXkoc3QueSwgc3QueSArIHN0Lm0pIDogbmV3IHU4KHN0Lm0pO1xuICAgICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgICAgdmFyIHNwbCA9IGJ1Zi5sZW5ndGggLSBsc3M7XG4gICAgICAgIGlmIChsYnQgPT0gMClcbiAgICAgICAgICAgIGJ1Zi5zZXQoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsc3MpLCBzcGwpO1xuICAgICAgICBlbHNlIGlmIChsYnQgPT0gMSlcbiAgICAgICAgICAgIGZpbGwoYnVmLCBkYXRbYnQrK10sIHNwbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaHVmZm1hbiB0YWJsZVxuICAgICAgICAgICAgdmFyIGh1ID0gc3QuaDtcbiAgICAgICAgICAgIGlmIChsYnQgPT0gMikge1xuICAgICAgICAgICAgICAgIHZhciBodWQgPSByaHUoZGF0LCBidCk7XG4gICAgICAgICAgICAgICAgLy8gc3VidHJhY3QgZGVzY3JpcHRpb24gbGVuZ3RoXG4gICAgICAgICAgICAgICAgbGNzICs9IGJ0IC0gKGJ0ID0gaHVkWzBdKTtcbiAgICAgICAgICAgICAgICBzdC5oID0gaHUgPSBodWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaHUpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgKHM0ID8gZGh1NCA6IGRodSkoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsY3MpLCBidWYuc3ViYXJyYXkoc3BsKSwgaHUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgICAgdmFyIG5zID0gZGF0W2J0KytdO1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICAgIGlmIChucyA9PSAyNTUpXG4gICAgICAgICAgICAgICAgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdGMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChucyA+IDEyNylcbiAgICAgICAgICAgICAgICBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAgICAgLy8gc3ltYm9sIGNvbXByZXNzaW9uIG1vZGVzXG4gICAgICAgICAgICB2YXIgc2NtID0gZGF0W2J0KytdO1xuICAgICAgICAgICAgaWYgKHNjbSAmIDMpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpID4gLTE7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBtZCA9IChzY20gPj4gKChpIDw8IDEpICsgMikpICYgMztcbiAgICAgICAgICAgICAgICBpZiAobWQgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBybGUgYnVmXG4gICAgICAgICAgICAgICAgICAgIHZhciByYnVmID0gbmV3IHU4KFswLCAwLCBkYXRbYnQrK11dKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgczogcmJ1Zi5zdWJhcnJheSgyLCAzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG46IHJidWYuc3ViYXJyYXkoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGI6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmFjeSBsb2cgOCBmb3Igb2Zmc2V0cywgOSBmb3Igb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSksIGJ0ID0gX2FbMF0sIGR0c1tpXSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3QudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0gc3QudFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2IgPSBzdC50ID0gZHRzLCBtbHQgPSBfYlswXSwgb2N0ID0gX2JbMV0sIGxsdCA9IF9iWzJdO1xuICAgICAgICAgICAgdmFyIGxiID0gZGF0W2VidCAtIDFdO1xuICAgICAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLCBjYnQgPSBzcG9zID4+IDMsIG91YnQgPSAwO1xuICAgICAgICAgICAgdmFyIGxzdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9jdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG9zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvY3QuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG1zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGZvciAoKytuczsgLS1uczspIHtcbiAgICAgICAgICAgICAgICB2YXIgbGxjID0gbGx0LnNbbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbGJ0ciA9IGxsdC5uW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIG1sYyA9IG1sdC5zW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG1idHIgPSBtbHQublttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvZmMgPSBvY3Quc1tvc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvYnRyID0gb2N0Lm5bb3N0XTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvZmMpID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG9mcCA9IDEgPDwgb2ZjO1xuICAgICAgICAgICAgICAgIHZhciBvZmYgPSBvZnAgKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSB8IChkYXRbY2J0ICsgM10gPDwgMjQpKSA+Pj4gKHNwb3MgJiA3KSkgJiAob2ZwIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sYlttbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBtbCA9IG1sYmxbbWxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIGxsID0gbGxibFtsbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsYltsbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIGxzdCA9IGxsdC50W2xzdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxidHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbXN0ID0gbWx0LnRbbXN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICAgICAgICBvc3QgPSBvY3QudFtvc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAob2ZmID4gMykge1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmYgLT0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBvZmYgLSAobGwgIT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IGlkeCA9PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxsOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBsbCwgc3BsICs9IGxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IC1zdGluO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnMgPSBzdC5lICsgc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1sKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBzdC53W2JzICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3VidCArPSBsZW4sIG1sIC09IGxlbiwgc3RpbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3N0aW4gKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBtbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdWJ0ICE9IHNwbCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzcGwgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0KytdID0gYnVmW3NwbCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3VidCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAob3V0KVxuICAgICAgICAgICAgICAgIHN0LnkgKz0gb3VidDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCAwLCBvdWJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICBzdC55ICs9IGxzcztcbiAgICAgICAgICAgICAgICBpZiAoc3BsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHNzOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNwbClcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCBzcGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGVycigyKTtcbn07XG4vLyBjb25jYXRcbnZhciBjY3QgPSBmdW5jdGlvbiAoYnVmcywgb2wpIHtcbiAgICBpZiAoYnVmcy5sZW5ndGggPT0gMSlcbiAgICAgICAgcmV0dXJuIGJ1ZnNbMF07XG4gICAgdmFyIGJ1ZiA9IG5ldyB1OChvbCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgICAgYnVmLnNldChjaGssIGIpO1xuICAgICAgICBiICs9IGNoay5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG59O1xuLyoqXG4gKiBEZWNvbXByZXNzZXMgWnN0YW5kYXJkIGRhdGFcbiAqIEBwYXJhbSBkYXQgVGhlIGlucHV0IGRhdGFcbiAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICogICAgICAgICAgICBleGFjdGx5IGVub3VnaCBtZW1vcnkgdG8gZml0IHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gSWYgeW91clxuICogICAgICAgICAgICBkYXRhIGhhcyBtdWx0aXBsZSBmcmFtZXMgYW5kIHlvdSBrbm93IHRoZSBvdXRwdXQgc2l6ZSwgc3BlY2lmeWluZ1xuICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvbXByZXNzZWQgZGF0YVxuICovXG5yZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsIGJ1ZnMgPSBbXSwgbmIgPSArIWJ1Ziwgb2wgPSAwO1xuICAgIGZvciAoOyBkYXQubGVuZ3RoOykge1xuICAgICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdCA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT0gc3QudSkge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmID0gc3Qudyk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IHN0LnU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKDsgIXN0Lmw7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgICAgICAgIGlmICghYmxrKVxuICAgICAgICAgICAgICAgICAgICBlcnIoNSk7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChibGspO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBibGsubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0Lncuc2V0KGJsaywgc3Qudy5sZW5ndGggLSBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidCA9IHN0LmIgKyAoc3QuYyAqIDQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0ID0gc3Q7XG4gICAgICAgIGRhdCA9IGRhdC5zdWJhcnJheShidCk7XG4gICAgfVxuICAgIHJldHVybiBjY3QoYnVmcywgb2wpO1xufVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjJcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF96c3RkX2luaXRpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMS4xXG5mdW5jdGlvbiBjYW1sX3pzdGRfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcbiAgcmV0dXJuIDFcbn1cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPj0gNC4xMlxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuLy9SZXF1aXJlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcbnZhciBhbGxfZmluYWxpemVycyA9IG5ldyBnbG9iYWxUaGlzLlNldCgpXG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIChjYiwgYSkge1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICB2YXIgeCA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICh4KXthbGxfZmluYWxpemVycy5kZWxldGUoeCk7IGNiKDApOyByZXR1cm47fSk7XG4gICAgeC5yZWdpc3RlcihhLHgpO1xuICAgIGFsbF9maW5hbGl6ZXJzLmFkZCh4KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX2Rpc2NhcmRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKHQpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICAoZ2xvYmFsVGhpcy5uYXZpZ2F0b3ImJmdsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgICAgID9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGNvbnNvbGU7XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCB9IGNhdGNoIChlKSB7IH07XG4gIH1cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMi5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDMuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgfVxuICBjYW1sX2ZhaWx3aXRoKFwiQ2Fubm90IGNyZWF0ZSBhIFhNTEh0dHBSZXF1ZXN0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gZXhuLmpzX2Vycm9yOyB9XG4gIHJldHVybiBudWxsO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCIvL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCBcbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0ICh2b3V0cHV0LCB2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl07XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdO1xuICB2YXIgb3V0cHV0ID0gY2FtbF9tbF9jaGFubmVsc1t2b3V0cHV0XTtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IG91dHB1dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IG91dHB1dDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdCAodnN0ZG91dCwgdnN0ZGVycil7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVycjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkKGNoYW4pe1xuICB2YXIgaW5mbyA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbl07XG4gIHJldHVybiBpbmZvLm9mZnNldFxufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1xuZnVuY3Rpb24gY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2soeCl7XG4gIHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7XG59XG5cbiIsIi8vUHJvdmlkZXM6IGpzX3BlcmZvcm1hbmNlXG52YXIganNfcGVyZm9ybWFuY2UgPSB7bWFyazogKGZ1bmN0aW9uICgpIHt9KSwgbWVhc3VyZTogKGZ1bmN0aW9uICgpIHt9KSB9O1xuaWYgKHR5cGVvZiBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqc19wZXJmb3JtYW5jZSA9IGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlO1xufSBlbHNlIHtcbiAgdHJ5IHtcbiAgICB2YXIgcGVyZl9ob29rcyA9IHJlcXVpcmUoJ3BlcmZfaG9va3MnKTtcbiAgICBqc19wZXJmb3JtYW5jZSA9IHBlcmZfaG9va3MucGVyZm9ybWFuY2U7XG4gICAgam9vX2dsb2JhbF9vYmplY3QuUGVyZm9ybWFuY2VPYnNlcnZlciA9IHBlcmZfaG9va3MuUGVyZm9ybWFuY2VPYnNlcnZlcjtcbiAgfSBjYXRjaCAoX2UpIHtcbiAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oXCJjb3VsZG4ndCBsb2FkIHBlcmZvcm1hbmNlIGhvb2tzXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWFya1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tYXJrKG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tYXJrKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tZWFzdXJlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21lYXN1cmUobmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1lYXN1cmUoXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoc3RhcnQpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoZW5kKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21hcmtzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21hcmtzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWFya3MoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuIiwiLy8vLy8vLy8vIFRJTUVfTk9XXG5cbi8vUHJvdmlkZXM6IHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbnZhciBtc190b19uYW5vID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxMDAwKjEwMDApO1xuZnVuY3Rpb24gdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvKCl7XG4gICAgdmFyIG1zID0gRGF0ZS5ub3coKTtcbiAgICAvLyBtdWx0aXBsZSBieSB0d28gLSBpbnQ2MyBpbnRlZ2VycyBhcmUgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgIHZhciBtc19pNjMgPSBjYW1sX2ludDY0X29mX2Zsb2F0KG1zKjIpO1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChtc19pNjMsbXNfdG9fbmFubyk7XG59XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjhfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPiBsMlxuICB8IGgxIDo6IFtdIC0+IGgxIDo6IGwyXG4gIHwgaDEgOjogaDIgOjogW10gLT4gaDEgOjogaDIgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBoMyA6OiB0bCAtPiBoMSA6OiBoMiA6OiBoMyA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbigqIGZvciBhdF9leGl0ICopXG50eXBlICdhIGF0b21pY190XG5leHRlcm5hbCBhdG9taWNfbWFrZSA6ICdhIC0+ICdhIGF0b21pY190ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgYXRvbWljX2dldCA6ICdhIGF0b21pY190IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgYXRvbWljX2NvbXBhcmVfYW5kX3NldCA6ICdhIGF0b21pY190IC0+ICdhIC0+ICdhIC0+IGJvb2xcbiAgPSBcIiVhdG9taWNfY2FzXCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBhdG9taWNfbWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IGF0b21pY19tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgYXRvbWljX2NvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gYXRvbWljX2NvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19kb21haW5fbG9jYWxfYXRfZXhpdCA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gICghZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQpICgpO1xuICAoYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgICAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgICA9IENvbXBsZXhcbm1vZHVsZSBDb25kaXRpb24gICAgICA9IENvbmRpdGlvblxubW9kdWxlIERpZ2VzdCAgICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRG9tYWluICAgICAgICAgPSBEb21haW5cbm1vZHVsZSBEeW5hcnJheSAgICAgICA9IER5bmFycmF5XG5tb2R1bGUgRWZmZWN0ICAgICAgICAgPSBFZmZlY3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgICAgPSBHY1xubW9kdWxlIEhhc2h0YmwgICAgICAgID0gSGFzaHRibFxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVHlwZSAgICAgICAgICAgPSBUeXBlXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuXG5leHRlcm5hbCBmaWxlX2V4aXN0czogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2ZpbGVfZXhpc3RzXCJcbmV4dGVybmFsIGlzX2RpcmVjdG9yeSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19kaXJlY3RvcnlcIlxuZXh0ZXJuYWwgaXNfcmVndWxhcl9maWxlIDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVwiXG5leHRlcm5hbCByZW1vdmU6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW1vdmVcIlxuZXh0ZXJuYWwgcmVuYW1lIDogc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW5hbWVcIlxuZXh0ZXJuYWwgZ2V0ZW52OiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRlbnZcIlxuXG5sZXQgZ2V0ZW52X29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAoZ2V0ZW52IHMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuZXh0ZXJuYWwgY29tbWFuZDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcIlxuZXh0ZXJuYWwgdGltZTogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfc3lzX3RpbWVcIiBcImNhbWxfc3lzX3RpbWVfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjaGRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX2NoZGlyXCJcbmV4dGVybmFsIG1rZGlyOiBzdHJpbmcgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX21rZGlyXCJcbmV4dGVybmFsIHJtZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcm1kaXJcIlxuZXh0ZXJuYWwgZ2V0Y3dkOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0Y3dkXCJcbmV4dGVybmFsIHJlYWRkaXIgOiBzdHJpbmcgLT4gc3RyaW5nIGFycmF5ID0gXCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVwiXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoaW50IC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IGludCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcblxuZXhjZXB0aW9uIEJyZWFrXG5cbmxldCBjYXRjaF9icmVhayBvbiA9XG4gIGlmIG9uIHRoZW5cbiAgICBzZXRfc2lnbmFsIHNpZ2ludCAoU2lnbmFsX2hhbmRsZShmdW4gXyAtPiByYWlzZSBCcmVhaykpXG4gIGVsc2VcbiAgICBzZXRfc2lnbmFsIHNpZ2ludCBTaWduYWxfZGVmYXVsdFxuXG5cbmV4dGVybmFsIGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzOiBib29sIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcIlxuZXh0ZXJuYWwgcnVudGltZV93YXJuaW5nc19lbmFibGVkOiB1bml0IC0+IGJvb2wgPVxuICBcImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXCJcblxuKCogVGhlIHZlcnNpb24gc3RyaW5nIGlzIGZvdW5kIGluIGZpbGUgLi4vVkVSU0lPTiAqKVxuXG5sZXQgb2NhbWxfdmVyc2lvbiA9IFwiQFZFUlNJT05AXCJcblxubGV0IGRldmVsb3BtZW50X3ZlcnNpb24gPSBAT0NBTUxfREVWRUxPUE1FTlRfVkVSU0lPTkBcblxudHlwZSBleHRyYV9wcmVmaXggPSBQbHVzIHwgVGlsZGVcblxudHlwZSBleHRyYV9pbmZvID0gZXh0cmFfcHJlZml4ICogc3RyaW5nXG5cbnR5cGUgb2NhbWxfcmVsZWFzZV9pbmZvID0ge1xuICBtYWpvciA6IGludDtcbiAgbWlub3IgOiBpbnQ7XG4gIHBhdGNobGV2ZWwgOiBpbnQ7XG4gIGV4dHJhIDogZXh0cmFfaW5mbyBvcHRpb25cbn1cblxubGV0IG9jYW1sX3JlbGVhc2UgPSB7XG4gIG1ham9yID0gQE9DQU1MX1ZFUlNJT05fTUFKT1JAO1xuICBtaW5vciA9IEBPQ0FNTF9WRVJTSU9OX01JTk9SQDtcbiAgcGF0Y2hsZXZlbCA9IEBPQ0FNTF9WRVJTSU9OX1BBVENITEVWRUxAO1xuICBleHRyYSA9IEBPQ0FNTF9SRUxFQVNFX0VYVFJBQFxufVxuXG4oKiBPcHRpbWl6YXRpb24gKilcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5tb2R1bGUgSW1tZWRpYXRlNjQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UoSW1tZWRpYXRlIDogSW1tZWRpYXRlKShOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcbiAgICBleHRlcm5hbCBtYWdpYyA6IF8gcmVwciAtPiB0IHJlcHIgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IHJlcHIgPVxuICAgICAgaWYgd29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICBtYWdpYyBJbW1lZGlhdGVcbiAgICAgIGVsc2VcbiAgICAgICAgbWFnaWMgTm9uX2ltbWVkaWF0ZVxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQzXG5cbmxldCBmb3JjaW5nX3RhZyA9IDI0NFxubGV0IGNvbnRfdGFnID0gMjQ1XG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCJcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFR5cGUgZXF1YWxpdHkgd2l0bmVzcyAqKVxuXG50eXBlIChfLCBfKSBlcSA9IEVxdWFsOiAoJ2EsICdhKSBlcVxuXG4oKiBUeXBlIGlkZW50aWZpZXJzICopXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICB0eXBlIF8gaWQgPSAuLlxuICBtb2R1bGUgdHlwZSBJRCA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgXyBpZCArPSBJZCA6IHQgaWRcbiAgZW5kXG5cbiAgdHlwZSAhJ2EgdCA9IChtb2R1bGUgSUQgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgbWFrZSAodHlwZSBhKSAoKSA6IGEgdCA9XG4gICAgKG1vZHVsZSBzdHJ1Y3QgdHlwZSB0ID0gYSB0eXBlIF8gaWQgKz0gSWQgOiB0IGlkIGVuZClcblxuICBsZXRbQGlubGluZV0gdWlkICh0eXBlIGEpICgobW9kdWxlIEEpIDogYSB0KSA9XG4gICAgT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgQS5JZClcblxuICBsZXQgcHJvdmFibHlfZXF1YWxcbiAgICAgICh0eXBlIGEgYikgKChtb2R1bGUgQSkgOiBhIHQpICgobW9kdWxlIEIpIDogYiB0KSA6IChhLCBiKSBlcSBvcHRpb25cbiAgICA9XG4gICAgbWF0Y2ggQS5JZCB3aXRoIEIuSWQgLT4gU29tZSBFcXVhbCB8IF8gLT4gTm9uZVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgbWFrZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBtYWtlX2NvbnRlbmRlZCA6ICdhIC0+ICdhIHQgPSBcImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXCJcbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBleGNoYW5nZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgPSBcIiVhdG9taWNfZXhjaGFuZ2VcIlxuZXh0ZXJuYWwgY29tcGFyZV9hbmRfc2V0IDogJ2EgdCAtPiAnYSAtPiAnYSAtPiBib29sID0gXCIlYXRvbWljX2Nhc1wiXG5leHRlcm5hbCBmZXRjaF9hbmRfYWRkIDogaW50IHQgLT4gaW50IC0+IGludCA9IFwiJWF0b21pY19mZXRjaF9hZGRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbmxldCBzZXQgciB4ID0gaWdub3JlIChleGNoYW5nZSByIHgpXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbnRlcm5hbHMgb2YgZm9yY2luZyBsYXp5IHZhbHVlcy4gKilcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcblxuKCogW3VwZGF0ZV90b19mb3JjaW5nIGJsa10gdHJpZXMgdG8gdXBkYXRlIGEgW2Jsa10gd2l0aCBbbGF6eV90YWddIHRvXG4gICBbZm9yY2luZ190YWddIHVzaW5nIGNvbXBhcmUtYW5kLXN3YXAgKENBUyksIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoZSBoZWFkZXIgd29yZCBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiBSZXR1cm5zIFswXSBpZiB0aGVcbiAgIENBUyBpcyBzdWNjZXNzZnVsLiBJZiB0aGUgQ0FTIGZhaWxzLCB0aGVuIHRoZSB0YWcgd2FzIG9ic2VydmVkIHRvIGJlXG4gICBzb21ldGhpbmcgb3RoZXIgdGhhbiBbbGF6eV90YWddIGR1ZSB0byBhIGNvbmN1cnJlbnQgbXV0YXRvci4gSW4gdGhpcyBjYXNlLFxuICAgdGhlIGZ1bmN0aW9uIHJldHVybnMgWzFdLiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcmNpbmcgOiBPYmoudCAtPiBpbnQgPVxuICBcImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1wiIFtAQG5vYWxsb2NdXG5cbigqIFtyZXNldF90b19sYXp5IGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGggW09iai5mb3JjaW5nX3RhZ11cbiAgIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5sYXp5X3RhZ10sIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuICopXG5leHRlcm5hbCByZXNldF90b19sYXp5IDogT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcIiBbQEBub2FsbG9jXVxuXG4oKiBbdXBkYXRlX3RvX2ZvcndhcmQgYmxrXSBleHBlY3RzIFtibGtdIHRvIGJlIGEgbGF6eSBvYmplY3Qgd2l0aFxuICAgW09iai5mb3JjaW5nX3RhZ10gYW5kIHVwZGF0ZXMgdGhlIHRhZyB0byBbT2JqLmZvcndhcmRfdGFnXSwgdGFraW5nIGNhcmUgdG9cbiAgIGhhbmRsZSBjb25jdXJyZW50IG1hcmtpbmcgb2YgdGhpcyBvYmplY3QncyBoZWFkZXIgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC5cbiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcndhcmQgOiBPYmoudCAtPiB1bml0ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcIiBbQEBub2FsbG9jXVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgICByZXN1bHRcbiAgd2l0aCBlIC0+XG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJlc2V0X3RvX2xhenkgYjtcbiAgICByYWlzZSBlXG5cbigqIEFzc3VtZXMgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBmb3JjaW5nICopXG5sZXQgZG9fZm9yY2VfdmFsX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICB1cGRhdGVfdG9fZm9yd2FyZCBiO1xuICByZXN1bHRcblxuKCogQ2FsbGVkIGJ5IFtmb3JjZV9nZW5dICopXG5sZXQgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBXZSBleHBlY3QgdGhlIHRhZyB0byBiZSBbbGF6eV90YWddLCBidXQgbWF5IGJlIG90aGVyIHRhZ3MgZHVlIHRvXG4gICAgIGNvbmN1cnJlbnQgZm9yY2luZyBvZiBsYXp5IHZhbHVlcy4gKilcbiAgbWF0Y2ggdXBkYXRlX3RvX2ZvcmNpbmcgKE9iai5yZXByIGJsaykgd2l0aFxuICB8IDAgd2hlbiBvbmx5X3ZhbCAtPiBkb19mb3JjZV92YWxfYmxvY2sgYmxrXG4gIHwgMCAtPiBkb19mb3JjZV9ibG9jayBibGtcbiAgfCBfIC0+IHJhaXNlIFVuZGVmaW5lZFxuXG4oKiB1c2VkIGluIHRoZSAlbGF6eV9mb3JjZSBwcmltaXRpdmUgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIGJsayA9IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbDpmYWxzZSBibGtcblxuKCogW2ZvcmNlX2dlbiB+b25seV92YWw6ZmFsc2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXNcbiAgIGRlY2xhcmVkIGFzIGEgcHJpbWl0aXZlIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0c1xuICAgYXJndW1lbnQsIGV4Y2VwdCB3aGVuIGFmbCBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxubGV0IGZvcmNlX2dlbiB+b25seV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0IGNvdWxkIGhhdmUgYmVlblxuICAgICAgIHNob3J0Y3V0IGR1cmluZyBHQywgc28gdGhhdCBpbmZvcm1hdGlvbiBtdXN0IGJlIGZvcmdvdHRlbiAoc2VlIEdQUiM3MTNcbiAgICAgICBhbmQgaXNzdWUgIzczMDEpLiBUaGlzIGlzIG5vdCBhbiBpc3N1ZSBoZXJlIGF0IHRoZSBtb21lbnQgc2luY2VcbiAgICAgICBbT2JqLnRhZ10gaXMgbm90IHNpbXBsaWZpZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgR1BSIzcxMyBhbHNvXG4gICAgICAgZW5zdXJlcyB0aGF0IG5vIHZhbHVlIHdpbGwgYmUga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZy5cbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gICgqIFNUQVJUIG5vIHNhZmUgcG9pbnRzLiBJZiBhIEdDIG9jY3VycyBoZXJlLCB0aGVuIHRoZSBvYmplY3QgW3hdIG1heSBiZVxuICAgICBzaG9ydC1jaXJjdWl0ZWQsIGFuZCBnZXR0aW5nIHRoZSBmaXJzdCBmaWVsZCBvZiBbeF0gd291bGQgZ2V0IHVzIHRoZSB3cm9uZ1xuICAgICB2YWx1ZS4gTHVja2lseSwgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGluc2VydCBHQyBzYWZlIHBvaW50cyBhdCB0aGlzIHBsYWNlLFxuICAgICBzbyBpdCBpcyBvay4gKilcbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZylcbiAgKCogRU5EIG5vIHNhZmUgcG9pbnRzICopXG4gIGVsc2UgaWYgdCA9IE9iai5mb3JjaW5nX3RhZyB0aGVuIHJhaXNlIFVuZGVmaW5lZFxuICBlbHNlIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6ICdhIC0+ICdhIGxhenlfdCA9IFwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZFwiXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxubGV0IGZvcmNlX3ZhbCBsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV9nZW4gfm9ubHlfdmFsOnRydWUgbFxuXG5sZXQgZnJvbV9mdW4gKGYgOiB1bml0IC0+ICdhcmcpID1cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5sYXp5X3RhZyAxIGluXG4gIE9iai5zZXRfZmllbGQgeCAwIChPYmoucmVwciBmKTtcbiAgKE9iai5vYmogeCA6ICdhcmcgdClcblxubGV0IGZyb21fdmFsICh2IDogJ2FyZykgPVxuICBsZXQgdCA9IE9iai50YWcgKE9iai5yZXByIHYpIGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgfHwgdCA9IE9iai5sYXp5X3RhZyB8fFxuICAgICB0ID0gT2JqLmZvcmNpbmdfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5sZXQgaXNfdmFsIChsIDogJ2FyZyB0KSA9IE9iai50YWcgKE9iai5yZXByIGwpIDw+IE9iai5sYXp5X3RhZ1xuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGZyb21fdmFsIChmIChmb3JjZSB4KSlcbiAgZWxzZSBsYXp5IChmIChmb3JjZSB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIG1hdGNoIHNlcTEoKSB3aXRoXG4gIHwgTmlsIC0+IHNlcTIoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zIChmIHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgICB8IFNvbWUgeSAtPiBDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBpZiBmIHhcbiAgICAgIHRoZW4gQ29ucyAoeCwgZmlsdGVyIGYgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGl0ZXIgZiBuZXh0XG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG5cbmxldCBpc19lbXB0eSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKF8sIF8pIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgdW5jb25zIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBTb21lICh4LCB4cylcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcblxuXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBhY2N1IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZW5ndGhfYXV4IChhY2N1ICsgMSkgeHNcblxubGV0W0BpbmxpbmVdIGxlbmd0aCB4cyA9XG4gIGxlbmd0aF9hdXggMCB4c1xuXG5sZXQgcmVjIGl0ZXJpX2F1eCBmIGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBmIGkgeDtcbiAgICAgIGl0ZXJpX2F1eCBmIChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBpdGVyaSBmIHhzID1cbiAgaXRlcmlfYXV4IGYgMCB4c1xuXG5sZXQgcmVjIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBpIHggaW5cbiAgICAgIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gZm9sZF9sZWZ0aSBmIGFjY3UgeHMgPVxuICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgMCB4c1xuXG5sZXQgcmVjIGZvcl9hbGwgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4ICYmIGZvcl9hbGwgcCB4c1xuXG5sZXQgcmVjIGV4aXN0cyBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4IHx8IGV4aXN0cyBwIHhzXG5cbmxldCByZWMgZmluZCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kIHAgeHNcblxubGV0IGZpbmRfaW5kZXggcCB4cyA9XG4gIGxldCByZWMgYXV4IGkgeHMgPSBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgaWYgcCB4IHRoZW4gU29tZSBpIGVsc2UgYXV4IChpKzEpIHhzIGluXG4gIGF1eCAwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG5sZXQgZmluZF9tYXBpIGYgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBhdXggKGkrMSkgeHNcbiAgICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgICByZXN1bHQgaW5cbiAgYXV4IDAgeHNcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+ZGVmYXVsdCA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGRlZmF1bHRcbmxldCBnZXRfb2sgPSBmdW5jdGlvbiBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIEVycm9yIF9cIlxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgYmluZCByIGYgPSBtYXRjaCByIHdpdGggT2sgdiAtPiBmIHYgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IGpvaW4gPSBmdW5jdGlvbiBPayByIC0+IHIgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcCBmID0gZnVuY3Rpb24gT2sgdiAtPiBPayAoZiB2KSB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBPayB2IC0+IGYgdiB8IEVycm9yIF8gLT4gKClcbmxldCBpdGVyX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGYgZSB8IE9rIF8gLT4gKClcbmxldCBpc19vayA9IGZ1bmN0aW9uIE9rIF8gLT4gdHJ1ZSB8IEVycm9yIF8gLT4gZmFsc2VcbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uIEVycm9yIF8gLT4gdHJ1ZSB8IE9rIF8gLT4gZmFsc2VcblxubGV0IGVxdWFsIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IF8sIF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgT2sgXywgRXJyb3IgXyAtPiAtMVxufCBFcnJvciBfLCBPayBfIC0+IDFcblxubGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uIE9rIHYgLT4gU29tZSB2IHwgRXJyb3IgXyAtPiBOb25lXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE9rIHYgLT4gW3ZdIHwgRXJyb3IgXyAtPiBbXVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE9rIHYgLT4gU2VxLnJldHVybiB2IHwgRXJyb3IgXyAtPiBTZXEuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gYm9vbCA9IGZhbHNlIHwgdHJ1ZVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5sZXQgZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuZXh0ZXJuYWwgdG9faW50IDogYm9vbCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvbiBmYWxzZSAtPiAwLiB8IHRydWUgLT4gMS5cblxuKCpcbmxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxufCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxufCBcInRydWVcIiAtPiBTb21lIHRydWVcbnwgXyAtPiBOb25lXG4qKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb24gZmFsc2UgLT4gXCJmYWxzZVwiIHwgdHJ1ZSAtPiBcInRydWVcIlxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgY2hyIG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJDaGFyLmNoclwiIGVsc2UgdW5zYWZlX2NociBuXG5cbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZTogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBieXRlc191bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgZXNjYXBlZCA9IGZ1bmN0aW9uXG4gIHwgJ1xcJycgLT4gXCJcXFxcJ1wiXG4gIHwgJ1xcXFwnIC0+IFwiXFxcXFxcXFxcIlxuICB8ICdcXG4nIC0+IFwiXFxcXG5cIlxuICB8ICdcXHQnIC0+IFwiXFxcXHRcIlxuICB8ICdcXHInIC0+IFwiXFxcXHJcIlxuICB8ICdcXGInIC0+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4MDA3RiAtPiAxXG58IHUgd2hlbiB1IDw9IDB4MDdGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAzXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHV0Zl8xNl9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGluaXQgaSBsYXN0IGYgPVxuICBpZiBpID4gbGFzdCB0aGVuIFtdXG4gIGVsc2UgaWYgaSA9IGxhc3QgdGhlbiBbZiBpXVxuICBlbHNlXG4gICAgbGV0IHIxID0gZiBpIGluXG4gICAgbGV0IHIyID0gZiAoaSsxKSBpblxuICAgIHIxIDo6IHIyIDo6IGluaXQgKGkrMikgbGFzdCBmXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpbml0IDAgKGxlbiAtIDEpIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBbYTFdIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGluXG4gICAgICByMTo6cjI6Om1hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGkgYTEgaW5cbiAgICAgIGxldCByMiA9IGYgKGkrMSkgYTIgaW5cbiAgICAgIHIxOjpyMjo6bWFwaSAoaSsyKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoW2ExXSwgW2IxXSkgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIFtyMV1cbiAgfCAoYTE6OmEyOjpsMSwgYjE6OmIyOjpsMikgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIGxldCByMiA9IGYgYTIgYjIgaW5cbiAgICAgIHIxOjpyMjo6bWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCBmaW5kX2luZGV4IHAgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIHAgYSB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSBsIGluXG4gIGF1eCAwXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9tYXBpIGYgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGF1eCAoaSsxKSBsXG4gICAgIGVuZCBpblxuICBhdXggMFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IDo6IGZpbmRfYWxsIHAgbCBlbHNlIGZpbmRfYWxsIHAgbFxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyaSBwIGkgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6bCAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIHAgaSB4IHRoZW4geCA6OiBmaWx0ZXJpIHAgaScgbCBlbHNlIGZpbHRlcmkgcCBpJyBsXG5cbmxldCBmaWx0ZXJpIHAgbCA9IGZpbHRlcmkgcCAwIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbFxuICAgICAgfCBTb21lIHYgLT4gdiA6OiBmaWx0ZXJfbWFwIGYgbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBjb25jYXRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6eHMgLT4gcHJlcGVuZF9jb25jYXRfbWFwIChmIHgpIGYgeHNcbmFuZFtAdGFpbF9tb2RfY29uc10gcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHMgPVxuICBtYXRjaCB5cyB3aXRoXG4gIHwgW10gLT4gY29uY2F0X21hcCBmIHhzXG4gIHwgeSA6OiB5cyAtPiB5IDo6IHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgdmVyeSBsb25nIGxpc3QgKGxlbmd0aCBvdmVyIGFib3V0IDEwMDAwMCksIGl0IHVzZWQgdG8gYmVcbiAgIGZhc3RlciB0byBjb252ZXJ0IHRoZSBsaXN0IHRvIGFuIGFycmF5LCBzb3J0IHRoZSBhcnJheSwgYW5kIGNvbnZlcnRcbiAgIGJhY2ssIHRydW5jYXRpbmcgdGhlIGFycmF5IG9iamVjdCBhZnRlciBwcmVwZW5kaW5nIGVhY2ggdGhvdXNhbmRcbiAgIGVudHJpZXMgdG8gdGhlIHJlc3VsdGluZyBsaXN0LiBJbXBvc3NpYmxlIG5vdyB0aGF0IE9iai50cnVuY2F0ZSBoYXNcbiAgIGJlZW4gcmVtb3ZlZC4gKilcblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gOjogXyAtPiBmYWxzZVxuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgb2Zfc2VxIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiBbXVxuICB8IFNlcS5Db25zICh4MSwgc2VxKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbeDFdXG4gICAgICB8IFNlcS5Db25zICh4Miwgc2VxKSAtPiB4MSA6OiB4MiA6OiBvZl9zZXEgc2VxXG4gICAgICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgdW5zYWZlX2VzY2FwZSBzID1cbiAgKCogV2UgcGVyZm9ybSB0d28gcGFzc2VzIG9uIHRoZSBpbnB1dCBzZXF1ZW5jZSwgb25lIHRvIGNvbXB1dGUgdGhlXG4gICAgIHJlc3VsdCBzaXplIGFuZCBvbmUgdG8gd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgICAjMTE1MDgsICMxMTUwOTogVGhpcyBsb2dpYyB3b3VsZCBiZSBpbmNvcnJlY3QgaW4gcHJlc2VuY2Ugb2ZcbiAgICAgY29uY3VycmVudCBtb2RpZmljYXRpb24gdG8gdGhlIGlucHV0LCBtYWtpbmcgdGhlIHVzZSBvZlxuICAgICBbdW5zYWZlX3NldF0gYmVsb3cgbWVtb3J5LXVuc2FmZS5cblxuICAgICBQcmVjb25kaXRpb246IFRoaXMgZnVuY3Rpb24gbWF5IGJlIHNhZmVseSBjYWxsZWQgb246XG4gICAgIC0gYW4gaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2VcbiAgICAgLSBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgKHRoZSBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXApXG5cbiAgICAgSW4gZWl0aGVyIGNhc2Ugd2UgcmV0dXJuIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZS5cbiAgKilcbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBzXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgZXNjYXBlZCBiID1cbiAgbGV0IGIgPSBjb3B5IGIgaW5cbiAgKCogV2UgY29weSBvdXIgaW5wdXQgdG8gb2J0YWluIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSBbYl1cbiAgICAgdG8gc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gKilcbiAgdW5zYWZlX2VzY2FwZSBiXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWRpbmdcbiAgIHRoZSBlcnJvcmluZyBieXRlLlxuXG4gICBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGllbnQgdXNlcyBkZWNvZGVzIHdpdGhvdXQgY2FyaW5nIGFib3V0XG4gICB2YWxpZGl0eSBpdCBuYXR1cmFsbHkgcmVwbGFjZSBib2d1cyBkYXRhIHdpdGggVWNoYXIucmVwIGFjY29yZGluZ1xuICAgdG8gdGhlIFdIQVRXRyBFbmNvZGluZyBzdGFuZGFyZC4gT3RoZXIgc2NoZW1lcyBhcmUgcG9zc2libGUgYnlcbiAgIGNvbnN1bHRpbmcgdGhlIG51bWJlciBvZiB1c2VkIGJ5dGVzIG9uIGludmFsaWQgZGVjb2Rlcy4gRm9yIG1vcmVcbiAgIGRldGFpbHMgc2VlIGh0dHBzOi8vaHNpdm9uZW4uZmkvYnJva2VuLXV0Zi04L1xuXG4gICBGb3IgdGhpcyByZWFzb24gaW4gW2dldF91dGZfOF91Y2hhcl0gd2UgZ3JhZHVhbGx5IGNoZWNrIHRoZSBuZXh0XG4gICBieXRlIGlzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBkb2luZyBpdCBpbW1lZGlhdGVseSBhZnRlciB0aGVcbiAgIGZpcnN0IGJ5dGUuIENvbnRyYXN0IHdpdGggW2lzX3ZhbGlkX3V0Zl84XS4gKilcblxuKCogVVRGLTggKilcblxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feEJGIGIgPSBiIGxzciA2IDw+IDBiMTBcbmxldFtAaW5saW5lXSBub3RfaW5feEEwX3RvX3hCRiBiID0gYiBsc3IgNSA8PiAwYjEwMVxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDlGIGIgPSBiIGxzciA1IDw+IDBiMTAwXG5sZXRbQGlubGluZV0gbm90X2luX3g5MF90b194QkYgYiA9IGIgPCAweDkwIHx8IDB4QkYgPCBiXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OEYgYiA9IGIgbHNyIDQgPD4gMHg4XG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8yIGIwIGIxID1cbiAgKChiMCBsYW5kIDB4MUYpIGxzbCA2KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMyBiMCBiMSBiMiA9XG4gICgoYjAgbGFuZCAweDBGKSBsc2wgMTIpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIyIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzID1cbiAgKChiMCBsYW5kIDB4MDcpIGxzbCAxOCkgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgMTIpIGxvclxuICAoKGIyIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIzIGxhbmQgMHgzRikpXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgYiBpID1cbiAgbGV0IGIwID0gZ2V0X3VpbnQ4IGIgaSBpbiAoKiByYWlzZXMgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIGluZGV4LiAqKVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIENoYXIudW5zYWZlX2NociBiMCB3aXRoICgqIFNlZSBUaGUgVW5pY29kZSBTdGFuZGFyZCwgVGFibGUgMy43ICopXG4gIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGRlY19yZXQgMSBiMFxuICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBkZWNfcmV0IDIgKHV0Zl84X3VjaGFyXzIgYjAgYjEpXG4gIHwgJ1xceEUwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94QTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEVEJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDlGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RjAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g5MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEY0JyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDhGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8IF8gLT4gZGVjX2ludmFsaWQgMVxuXG5sZXQgc2V0X3V0Zl84X3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICAgc2V0X3VpbnQ4IGIgaSB1O1xuICAgICAgMVxuICB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4QzAgbG9yICh1IGxzciA2KSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMilcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEUwIGxvciAodSBsc3IgMTIpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDMpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEYwIGxvciAodSBsc3IgMTgpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiAoaSArIDIpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDQpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl84IGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gICAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIChnZXQgYiBpKSB3aXRoXG4gICAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gbG9vcCBtYXggYiAoaSArIDEpXG4gICAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feEEwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RUQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g5RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94OTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEY0JyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OEYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZCRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZiZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZMRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZsZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBiID0gYm9zIHMgaW5cbiAgKCogV2Ugc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gYnkgcGFzc2luZyBhblxuICAgICBpbW11dGFibGUgYnl0ZSBzZXF1ZW5jZSBbYl0uICopXG4gIGJ0cyAoQi51bnNhZmVfZXNjYXBlIGIpXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zdHJpbmdfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2ggMCB4XG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiBVVEYgZGVjb2RlcnMgYW5kIHZhbGlkYXRvcnMgKilcblxubGV0IGdldF91dGZfOF91Y2hhciBzIGkgPSBCLmdldF91dGZfOF91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfOCBzID0gQi5pc192YWxpZF91dGZfOCAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2YmVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2YmUgKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmxlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmxlIChib3MgcylcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG5cbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAxNlxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIDBdIHdoZW4gW2wgPD0gMF0uXG4gICAgIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYWtlX21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0X21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgKCogV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgeCAwXSB3aGVuIFtzeSA8PSAwXTogKilcbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSAoZiB4IDApIGluXG4gICAgICBmb3IgeSA9IDEgdG8gcHJlZCBzeSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgIGRvbmU7XG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfaW5kZXggcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBTb21lIGlcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwaSBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxubGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICB1bnNhZmVfc2V0IGEgaiB2XG4gIGRvbmVcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgcXVpZXRfbmFuID0gbmFuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IHNpZ25hbGluZ19uYW4gPSBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgbWFrZV9tYXRyaXggc3ggc3kgdiA9XG4gICAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gICAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYWtlX21hdHJpeFwiO1xuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIHN4IChjcmVhdGUgMCkgaW5cbiAgICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgICAgZm9yIHggPSAwIHRvIHN4IC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyB4IChtYWtlIHN5IHYpXG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgaW5pdF9tYXRyaXggc3ggc3kgZiA9XG4gICAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gICAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0X21hdHJpeFwiO1xuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIHN4IChjcmVhdGUgMCkgaW5cbiAgICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgICAgZm9yIHggPSAwIHRvIHN4IC0gMSBkb1xuICAgICAgICBsZXQgcm93ID0gY3JlYXRlIHN5IGluXG4gICAgICAgIGZvciB5ID0gMCB0byBzeSAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCByb3dcbiAgICAgIGRvbmU7XG4gICAgZW5kO1xuICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWFwX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmVcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcGlfaW5wbGFjZSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfb3B0IHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX2luZGV4IHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX21hcCBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXBpIGYgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAxIGRvXG4gICAgICBsZXQgaiA9IHJhbmQgKGkgKyAxKSBpblxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgKGdldCBhIGopO1xuICAgICAgdW5zYWZlX3NldCBhIGogdlxuICAgIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSB4ID0geVxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgbiA+PSAwbiAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgdG9fbGlzdCA9IGVsZW1lbnRzXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZF90b19saXN0OiBrZXkgLT4gJ2EgLT4gJ2EgbGlzdCB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT5cbiAgICAgICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbToga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCB0b19saXN0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgb2ZfbGlzdCA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IGFkZF90b19saXN0IHggZGF0YSBtID1cbiAgICAgIGxldCBhZGQgPSBmdW5jdGlvbiBOb25lIC0+IFNvbWUgW2RhdGFdIHwgU29tZSBsIC0+IFNvbWUgKGRhdGEgOjogbCkgaW5cbiAgICAgIHVwZGF0ZSB4IGFkZCBtXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCB0b19saXN0ID0gYmluZGluZ3NcbiAgICBsZXQgb2ZfbGlzdCBicyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBic1xuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgZHJvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBfaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxXG4gIHwgW10gLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbigqIFRoZSBbaW5uZXJfYnVmZmVyXSB0eXBlIGVuc3VyZXMgdGhhdCB0aGUgW2xlbmd0aF0gYW5kIFtidWZmZXJdIGZpZWxkcyBhcmVcbiAgIGFsd2F5cyBzeW5jaHJvbml6ZWQsIFtsZW5ndGggPSBCeXRlcy5sZW5ndGggYnVmZmVyXSwgZXZlbiBpbiBwcmVzZW5jZVxuICAgb2YgZGF0YSByYWNlcy5cbiopXG50eXBlIGlubmVyX2J1ZmZlciA9IHtcbiAgYnVmZmVyOiBieXRlcztcbiAgbGVuZ3RoOiBpbnQ7XG59XG5cbnR5cGUgdCA9XG4ge211dGFibGUgaW5uZXIgOiBpbm5lcl9idWZmZXI7XG4gIG11dGFibGUgcG9zaXRpb24gOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gW2lubmVyLmxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBpbm5lci5idWZmZXJdXG4gICBJbiBhYnNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIGFsc28gaGF2ZVxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIuaW5uZXIubGVuZ3RoXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIuaW5uZXIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHsgaW5uZXIgPSB7IGJ1ZmZlciA9IHM7IGxlbmd0aCA9IG59OyBwb3NpdGlvbiA9IDA7IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5pbm5lci5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLmJsaXQgc3JjLmlubmVyLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBwb3NpdGlvbiB8fCBwb3NpdGlvbiA+IGxlbmd0aCB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGxldCBpbm5lciA9XG4gICAgeyBidWZmZXIgPSBiLmluaXRpYWxfYnVmZmVyOyBsZW5ndGggPSBCeXRlcy5sZW5ndGggYi5pbml0aWFsX2J1ZmZlciB9XG4gIGluXG4gIGIuaW5uZXIgPC0gaW5uZXJcblxuKCogW3Jlc2l6ZSBiIG1vcmVdIGVuc3VyZXMgdGhhdCBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5pbm5lci5sZW5ndGhdIGhvbGRzXG4gICBieSBkeW5hbWljYWxseSBleHRlbmRpbmcgW2IuaW5uZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5pbm5lci5sZW5ndGhdLlxuKilcbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IG9sZF9wb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCBvbGRfbGVuID0gYi5pbm5lci5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICB3aGlsZSBvbGRfcG9zICsgbW9yZSA+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuaW5uZXIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuaW5uZXIgPC0geyBidWZmZXIgPSBuZXdfYnVmZmVyOyBsZW5ndGggPSAhbmV3X2xlbiB9XG5cbigqIE5vdGU6XG4gICAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGJlbG93IGhhdmUgYSBmYXN0IHBhdGggd2hlbiB0aGUgaW5uZXJcbiAgYnVmZmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBleHRlbmRlZC5cbiAgICBJbiB0aGlzIGNhc2UsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB1bnNhZmUgYWNjZXNzZXMgb24gdGhlXG4gIGNvbnRlbnRzIG9mIHRoZSBbaW5uZXJdIGZpZWxkIHNpbmNlIGl0cyBmaWVsZHMgYXJlIGltbXV0YWJsZS5cbiAgSW4gcHJlc2VuY2Ugb2YgZGF0YSByYWNlcywgd2UgbWF5IGFjY2VzcyB0aGUgd3JvbmcgaW5uZXIgYnVmZmVyLCBidXQgd2VcbiAgd2lsbCB1c2UgdGhpcyBidWZmZXIgc2FmZWx5LlxuICBBcyBzb29uIGFzIHdlIG5lZWQgdG8gcmVzaXplIHRoZSBidWZmZXIsIHdlIGZhbGwgYmFjayB0byBzYWZlIGFjY2Vzc2VzLlxuKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGlmIHBvcyA+PSBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBCeXRlcy5zZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBjXG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxubGV0IHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCA9IDRcbmxldCB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4ID0gNFxuXG5sZXQgcmVjIGFkZF91dGZfOF91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl84X3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl84X3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZiZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmxlX3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZsZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjsgbGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyAwIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5pbm5lci5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCBpblxuICAgICBpZiBzdG9wID0gc3RhcnQgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIGZpbmRfaWRlbnQgcyBqIGxpbSB3aXRoXG4gICAgICAgICB8IGlkZW50LCBuZXh0X2kgLT5cbiAgICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgJyQnO1xuICAgICAgICAgICBzdWJzdCAnICcgalxuICAgICAgICAgZW5kXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cztcbiAgICAgICAgIGlmIGN1cnJlbnQgPD4gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIHNldF9pbnQ4IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDggYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMjtcbiAgICBzZXRfaW50MTYgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MTYgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgNDtcbiAgICBzZXRfaW50MzIgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MzIgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgODtcbiAgICBzZXRfaW50NjQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50NjQgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgUGFzY2FsIEN1b3EsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRcbmV4dGVybmFsIGNyZWF0ZTogdW5pdCAtPiB0ID0gXCJjYW1sX21sX211dGV4X25ld1wiXG5leHRlcm5hbCBsb2NrOiB0IC0+IHVuaXQgPSBcImNhbWxfbWxfbXV0ZXhfbG9ja1wiXG5leHRlcm5hbCB0cnlfbG9jazogdCAtPiBib29sID0gXCJjYW1sX21sX211dGV4X3RyeV9sb2NrXCJcbmV4dGVybmFsIHVubG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X3VubG9ja1wiXG5cbigqIHByaXZhdGUgcmUtZXhwb3J0ICopXG5leHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbigqIGNhbm5vdCBpbmxpbmUsIG90aGVyd2lzZSBmbGFtYmRhIG1pZ2h0IG1vdmUgY29kZSBhcm91bmQuICopXG5sZXRbQGlubGluZSBuZXZlcl0gcHJvdGVjdCBtIGYgPVxuICBsb2NrIG07XG4gIG1hdGNoIGYoKSB3aXRoXG4gIHwgeCAtPlxuICAgIHVubG9jayBtOyB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAoKiBOT1RFOiBbdW5sb2NrXSBkb2VzIG5vdCBwb2xsIGZvciBhc3luY2hyb25vdXMgZXhjZXB0aW9ucyAqKVxuICAgIHVubG9jayBtO1xuICAgIHJlcmFpc2UgZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBDb2xsw6hnZSBkZSBGcmFuY2UgYW5kIElOUklBIFBhcmlzICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFNlbWFwaG9yZXMgKilcblxudHlwZSBzZW0gPSB7XG4gIG11dDogTXV0ZXgudDsgICAgICAgICAgICAgICAgICAgICAgICAgKCogcHJvdGVjdHMgW3ZdICopXG4gIG11dGFibGUgdjogaW50OyAgICAgICAgICAgICAgICAgICAgICAgKCogdGhlIGN1cnJlbnQgdmFsdWUgKilcbiAgbm9uemVybzogQ29uZGl0aW9uLnQgICAgICAgICAgICAgICAgICAoKiBzaWduYWxlZCB3aGVuIFt2ID4gMF0gKilcbn1cblxubW9kdWxlIENvdW50aW5nID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSB2ID1cbiAgaWYgdiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlbWFwaG9yZS5Db3VudGluZy5pbml0OiB3cm9uZyBpbml0aWFsIHZhbHVlXCI7XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7IHY7IG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgaWYgcy52IDwgbWF4X2ludCB0aGVuIGJlZ2luXG4gICAgcy52IDwtIHMudiArIDE7XG4gICAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gICAgTXV0ZXgudW5sb2NrIHMubXV0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICAgIHJhaXNlIChTeXNfZXJyb3IgXCJTZW1hcGhvcmUuQ291bnRpbmcucmVsZWFzZTogb3ZlcmZsb3dcIilcbiAgZW5kXG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gcy52IC0gMTtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gcy52IC0gMTsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxubGV0IGdldF92YWx1ZSBzID0gcy52XG5cbmVuZFxuXG5tb2R1bGUgQmluYXJ5ID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSBiID1cbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTtcbiAgICB2ID0gaWYgYiB0aGVuIDEgZWxzZSAwO1xuICAgIG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgcy52IDwtIDE7XG4gIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSAwO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSAwOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuXG4gICgqIFRoZSBsYXlvdXRzIG9mIFtzdGF0ZV0gYW5kIFt0ZXJtX3N5bmNdIGFyZSBoYXJkLWNvZGVkIGluXG4gICAgIFtydW50aW1lL2RvbWFpbi5jXSAqKVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUnVubmluZ1xuICAgIHwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdCBbQHdhcm5pbmcgXCItdW51c2VkLWNvbnN0cnVjdG9yXCJdXG5cbiAgdHlwZSAnYSB0ZXJtX3N5bmMgPSB7XG4gICAgKCogcHJvdGVjdGVkIGJ5IFttdXRdICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6ICdhIHN0YXRlIFtAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl0gO1xuICAgIG11dCA6IE11dGV4LnQgO1xuICAgIGNvbmQgOiBDb25kaXRpb24udCA7XG4gIH1cblxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+ICdhKSAtPiAnYSB0ZXJtX3N5bmMgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX3N5bmMgOiAnYSBSYXcudGVybV9zeW5jO1xufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgbW9kdWxlIE9ial9vcHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgbm9uZSA6IHRcbiAgICB2YWwgc29tZSA6ICdhIC0+IHRcbiAgICB2YWwgaXNfc29tZSA6IHQgLT4gYm9vbFxuXG4gICAgKCoqIFt1bnNhZmVfZ2V0IG9ial0gbWF5IG9ubHkgYmUgY2FsbGVkIHNhZmVseVxuICAgICAgICBpZiBbaXNfc29tZV0gaXMgdHJ1ZS5cblxuICAgICAgICBbdW5zYWZlX2dldCAoc29tZSB2KV0gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICBbT2JqLm9iaiAoT2JqLnJlcHIgdildLiAqKVxuICAgIHZhbCB1bnNhZmVfZ2V0IDogdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBPYmoudFxuICAgIGxldCBub25lID0gT2JqLnJlcHIgKHJlZiAwKVxuICAgIGxldCBzb21lIHYgPSBPYmoucmVwciB2XG4gICAgbGV0IGlzX3NvbWUgb2JqID0gKG9iaiAhPSBub25lKVxuICAgIGxldCB1bnNhZmVfZ2V0IG9iaiA9IE9iai5vYmogb2JqXG4gIGVuZFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqX29wdC50IGFycmF5XG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gZGxzX3N0YXRlIC0+IGJvb2wgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCBPYmpfb3B0Lm5vbmUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IHJlYyBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiBPYmpfb3B0Lm5vbmUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgICgqIFdlIHdhbnQgYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHNhZmUgd2l0aCByZXNwZWN0IHRvXG4gICAgICAgICBzaW5nbGUtZG9tYWluIG11bHRpLXRocmVhZGluZzogcmV0cnkgaWYgdGhlIERMUyBzdGF0ZSBoYXNcbiAgICAgICAgIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQuXG4gICAgICAgICBOb3RlIHRoYXQgdGhlIG51bWJlciBvZiByZXRyaWVzIHdpbGwgYmUgdmVyeSBzbWFsbCBpblxuICAgICAgICAgY29udGVuZGVkIHNjZW5hcmlvcywgYXMgdGhlIGFycmF5IG9ubHkgZ3Jvd3MsIHdpdGhcbiAgICAgICAgIGV4cG9uZW50aWFsIHJlc2l6aW5nLiAqKVxuICAgICAgaWYgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSBzdCBuZXdfc3RcbiAgICAgIHRoZW4gbmV3X3N0XG4gICAgICBlbHNlIG1heWJlX2dyb3cgaWR4XG4gICAgZW5kXG5cbiAgbGV0IHNldCAodHlwZSBhKSAoaWR4LCBfaW5pdCkgKHggOiBhKSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhcnJheV9jb21wYXJlX2FuZF9zZXQgYSBpIG9sZHZhbCBuZXd2YWwgPVxuICAgICgqIE5vdGU6IHdlIGNhbm5vdCB1c2UgW0Bwb2xsIGVycm9yXSBkdWUgdG8gdGhlXG4gICAgICAgYWxsb2NhdGlvbnMgb24gYS4oaSkgaW4gdGhlIERvdWJsZV9hcnJheSBjYXNlLiAqKVxuICAgIGxldCBjdXJ2YWwgPSBhLihpKSBpblxuICAgIGlmIGN1cnZhbCA9PSBvbGR2YWwgdGhlbiAoXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSBuZXd2YWw7XG4gICAgICB0cnVlXG4gICAgKSBlbHNlIGZhbHNlXG5cbiAgbGV0IGdldCAodHlwZSBhKSAoKGlkeCwgaW5pdCkgOiBhIGtleSkgOiBhID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCBvYmogPSBzdC4oaWR4KSBpblxuICAgIGlmIE9ial9vcHQuaXNfc29tZSBvYmpcbiAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgb2JqIDogYSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA6IGEgPSBpbml0ICgpIGluXG4gICAgICBsZXQgbmV3X29iaiA9IE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2KSBpblxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgW3N0XSBvciBbc3QuKGlkeCldIG1heSBoYXZlIGJlZW4gY2hhbmdlZFxuICAgICAgICAgYnkgYW5vdGhlciB0aHJlYWQgb24gdGhlIHNhbWUgZG9tYWluLlxuXG4gICAgICAgICBJZiBbc3RdIGNoYW5nZWQsIGl0IHdhcyByZXNpemVkIGludG8gYSBsYXJnZXIgdmFsdWUsXG4gICAgICAgICB3ZSBjYW4ganVzdCByZXVzZSB0aGUgbmV3IHZhbHVlLlxuXG4gICAgICAgICBJZiBbc3QuKGlkeCldIGNoYW5nZWQsIHdlIGRyb3AgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYXZvaWRcbiAgICAgICAgIGxldHRpbmcgb3RoZXIgdGhyZWFkcyBvYnNlcnZlIGEgJ3JldmVydCcgdGhhdCBmb3JnZXRzXG4gICAgICAgICBwcmV2aW91cyBtb2RpZmljYXRpb25zLiAqKVxuICAgICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgICAgaWYgYXJyYXlfY29tcGFyZV9hbmRfc2V0IHN0IGlkeCBvYmogbmV3X29ialxuICAgICAgdGhlbiB2XG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgICgqIGlmIHN0LihpZHgpIGNoYW5nZWQsIHNvbWVvbmUgbXVzdCBoYXZlIGluaXRpYWxpemVkXG4gICAgICAgICAgIHRoZSBrZXkgaW4gdGhlIG1lYW50aW1lLiAqKVxuICAgICAgICBsZXQgdXBkYXRlZF9vYmogPSBzdC4oaWR4KSBpblxuICAgICAgICBpZiBPYmpfb3B0LmlzX3NvbWUgdXBkYXRlZF9vYmpcbiAgICAgICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IHVwZGF0ZWRfb2JqIDogYSlcbiAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gIHR5cGUga2V5X3ZhbHVlID0gS1YgOiAnYSBrZXkgKiAnYSAtPiBrZXlfdmFsdWVcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IGtleV92YWx1ZSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKGssIHNwbGl0KSkgLT4gS1YgKGssIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDoga2V5X3ZhbHVlIGxpc3QpID1cbiAgICBMaXN0Lml0ZXIgKGZ1biAoS1YgKGssIHYpKSAtPiBzZXQgayB2KSBsXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbigqKioqKioqKiBDYWxsYmFja3MgKioqKioqKioqKilcblxuKCogZmlyc3Qgc3Bhd24sIGRvbWFpbiBzdGFydHVwIGFuZCBhdCBleGl0IGZ1bmN0aW9uYWxpdHkgKilcbmxldCBmaXJzdF9kb21haW5fc3Bhd25lZCA9IEF0b21pYy5tYWtlIGZhbHNlXG5cbmxldCBmaXJzdF9zcGF3bl9mdW5jdGlvbiA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgYmVmb3JlX2ZpcnN0X3NwYXduIGYgPVxuICBpZiBBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpcnN0IGRvbWFpbiBhbHJlYWR5IHNwYXduZWRcIilcbiAgZWxzZSBiZWdpblxuICAgIGxldCBvbGRfZiA9ICFmaXJzdF9zcGF3bl9mdW5jdGlvbiBpblxuICAgIGxldCBuZXdfZiAoKSA9IG9sZF9mICgpOyBmICgpIGluXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gbmV3X2ZcbiAgZW5kXG5cbmxldCBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCkgPVxuICBpZiBub3QgKEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQpIHRoZW4gYmVnaW5cbiAgICBBdG9taWMuc2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRydWU7XG4gICAgIWZpcnN0X3NwYXduX2Z1bmN0aW9uKCk7XG4gICAgKCogUmVsZWFzZSB0aGUgb2xkIGZ1bmN0aW9uICopXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gKGZ1biAoKSAtPiAoKSlcbiAgZW5kXG5cbmxldCBhdF9leGl0X2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBhdF9leGl0IGYgPVxuICBsZXQgb2xkX2V4aXQgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgZiAoKTsgb2xkX2V4aXQgKClcbiAgaW5cbiAgRExTLnNldCBhdF9leGl0X2tleSBuZXdfZXhpdFxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gIGxldCBmIDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBmICgpXG5cbmxldCBfID0gU3RkbGliLmRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IDo9IGRvX2F0X2V4aXRcblxuKCoqKioqKiogQ3JlYXRpb24gYW5kIFRlcm1pbmF0aW9uICoqKioqKioqKVxuXG5sZXQgc3Bhd24gZiA9XG4gIGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKTtcbiAgbGV0IHBrID0gRExTLmdldF9pbml0aWFsX2tleXMgKCkgaW5cblxuICAoKiBbdGVybV9zeW5jXSBpcyB1c2VkIHRvIHN5bmNocm9uaXplIHdpdGggdGhlIGpvaW5pbmcgZG9tYWlucyAqKVxuICBsZXQgdGVybV9zeW5jID1cbiAgICBSYXcueyBzdGF0ZSA9IFJ1bm5pbmcgO1xuICAgICAgICAgIG11dCA9IE11dGV4LmNyZWF0ZSAoKSA7XG4gICAgICAgICAgY29uZCA9IENvbmRpdGlvbi5jcmVhdGUgKCkgfVxuICBpblxuXG4gIGxldCBib2R5ICgpID1cbiAgICBtYXRjaFxuICAgICAgRExTLmNyZWF0ZV9kbHMgKCk7XG4gICAgICBETFMuc2V0X2luaXRpYWxfa2V5cyBwaztcbiAgICAgIGxldCByZXMgPSBmICgpIGluXG4gICAgICByZXNcbiAgICB3aXRoXG4gICAgKCogUnVuIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzIHdoZW4gdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBlaXRoZXJcbiAgICAgICB0ZXJtaW5hdGVzIG5vcm1hbGx5IG9yIGV4Y2VwdGlvbmFsbHkuICopXG4gICAgfCByZXMgLT5cbiAgICAgICAgKCogSWYgdGhlIGRvbWFpbiBjb21wdXRhdGlvbiB0ZXJtaW5hdGVkIG5vcm1hbGx5LCBidXQgdGhlXG4gICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgdGhlbiByZXR1cm4gdGhlXG4gICAgICAgICAgIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgZG9fYXRfZXhpdCAoKTtcbiAgICAgICAgcmVzXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICgqIElmIGJvdGggdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBhbmQgdGhlIFthdF9leGl0XSBjYWxsYmFja3NcbiAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucywgdGhlbiBpZ25vcmUgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIGFuZCByZXR1cm4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgKHRyeSBkb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgICAgIHJhaXNlIGV4blxuICBpblxuICBsZXQgZG9tYWluID0gUmF3LnNwYXduIGJvZHkgdGVybV9zeW5jIGluXG4gIHsgZG9tYWluIDsgdGVybV9zeW5jIH1cblxubGV0IGpvaW4geyB0ZXJtX3N5bmMgOyBfIH0gPVxuICBsZXQgb3BlbiBSYXcgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCB0ZXJtX3N5bmMuc3RhdGUgd2l0aFxuICAgIHwgUnVubmluZyAtPlxuICAgICAgICBDb25kaXRpb24ud2FpdCB0ZXJtX3N5bmMuY29uZCB0ZXJtX3N5bmMubXV0O1xuICAgICAgICBsb29wICgpXG4gICAgfCBGaW5pc2hlZCByZXMgLT5cbiAgICAgICAgcmVzXG4gIGluXG4gIG1hdGNoIE11dGV4LnByb3RlY3QgdGVybV9zeW5jLm11dCBsb29wIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleCAtPiByYWlzZSBleFxuXG5sZXQgcmVjb21tZW5kZWRfZG9tYWluX2NvdW50ID0gUmF3LmdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmlnblxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0cy4gV2hlbiB0aGUgZmxhZyBpcyBkaXNhYmxlZCwgaXQgd2lsbCByZWplY3QgYW55XG4gICAgICBmb3JtYXQgdGhhdCBpcyBub3QgYWNjZXB0ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uXG5cbiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIHdvdWxkIGJlIFwiJSsgZFwiOiBzcGVjaWZ5aW5nIGJvdGggJysnIChpZiB0aGVcbiAgICAgIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGggYSAnKycgdG8gZ2V0IHRoZSBzYW1lIHdpZHRoIGFzXG4gICAgICBuZWdhdGl2ZSBudW1iZXJzKSBhbmQgJyAnIChpZiB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aFxuICAgICAgYSBzcGFjZSkgZG9lcyBub3QgbWFrZSBzZW5zZSwgYnV0IHRoZSBsZWdhY3kgKDwgNC4wMilcbiAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBoYXBweSB0byBqdXN0IGlnbm9yZSB0aGUgc3BhY2UuXG4gICopXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kIG1zZyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgbXNnXG4gIGluXG5cbiAgKCogVXNlZCB3aGVuIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCAob3IgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdCkgd2FzIGVuY291bnRlcmVkXG4gICAgICB1bmV4cGVjdGVkbHkuICopXG4gIGxldCB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBlbmRfaW5kXG4gICAgICBcInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdFwiXG4gIGluXG5cbiAgKCogVXNlZCBmb3IgJTBjOiBubyBvdGhlciB3aWR0aHMgYXJlIGltcGxlbWVudGVkICopXG4gIGxldCBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmRcbiAgICAgIFwibm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnNcIlxuICBpblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gb3B0aW9uIGRlcGVuZGVuY3lcbiAgICAgcHJvYmxlbS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X3dpdGhvdXQgc3RyX2luZCBjIHMgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBjIHNcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gdW5leHBlY3RlZFxuICAgICBjaGFyYWN0ZXIuICopXG4gIGxldCBleHBlY3RlZF9jaGFyYWN0ZXIgc3RyX2luZCBleHBlY3RlZCByZWFkID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDXCJcbiAgICAgIHN0ciBzdHJfaW5kIGV4cGVjdGVkIHJlYWRcbiAgaW5cblxuICAoKiBQYXJzZSB0aGUgc3RyaW5nIGZyb20gYmVnX2luZCAoaW5jbHVkZWQpIHRvIGVuZF9pbmQgKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBwYXJzZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBiZWdfaW5kIGVuZF9pbmQgLT4gcGFyc2VfbGl0ZXJhbCBiZWdfaW5kIGJlZ19pbmQgZW5kX2luZFxuXG4gICgqIFJlYWQgbGl0ZXJhbCBjaGFyYWN0ZXJzIHVwIHRvICclJyBvciAnQCcgc3BlY2lhbCBjaGFyYWN0ZXJzLiAqKVxuICBhbmQgcGFyc2VfbGl0ZXJhbCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgRW5kX29mX2Zvcm1hdCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfZm9ybWF0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9hZnRlcl9hdCAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9saXRlcmFsIGxpdF9zdGFydCAoc3RyX2luZCArIDEpIGVuZF9pbmRcblxuICAoKiBQYXJzZSBhIGZvcm1hdCBhZnRlciAnJScgKilcbiAgYW5kIHBhcnNlX2Zvcm1hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIGVuZF9pbmQgLT4gcGFyc2VfaWduIHBjdF9pbmQgKHBjdF9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgYW5kIHBhcnNlX2lnbiA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXycgLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCAoc3RyX2luZCsxKSBlbmRfaW5kIHRydWVcbiAgICAgIHwgXyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBmYWxzZVxuXG4gIGFuZCBwYXJzZV9mbGFncyA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiAoXywgXywgZSwgZikgZm10X2ViYlxuICA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBpZ24gLT5cbiAgICBsZXQgemVybyA9IHJlZiBmYWxzZSBhbmQgbWludXMgPSByZWYgZmFsc2VcbiAgICBhbmQgcGx1cyA9IHJlZiBmYWxzZSBhbmQgc3BhY2UgPSByZWYgZmFsc2VcbiAgICBhbmQgaGFzaCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzZXRfZmxhZyBzdHJfaW5kIGZsYWcgPVxuICAgICAgKCogaW4gbGVnYWN5IG1vZGUsIGR1cGxpY2F0ZSBmbGFncyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgIGlmICFmbGFnICYmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUNcIlxuICAgICAgICAgIHN0ciBzdHJfaW5kIHN0ci5bc3RyX2luZF07XG4gICAgICBmbGFnIDo9IHRydWU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHJlYWRfZmxhZ3Mgc3RyX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICcwJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHplcm87ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJy0nIC0+IHNldF9mbGFnIHN0cl9pbmQgbWludXM7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnKycgLT4gc2V0X2ZsYWcgc3RyX2luZCBwbHVzOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcjJyAtPiBzZXRfZmxhZyBzdHJfaW5kIGhhc2g7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnICcgLT4gc2V0X2ZsYWcgc3RyX2luZCBzcGFjZTsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZFxuICAgICAgICAgICF6ZXJvICFtaW51cyAhcGx1cyAhaGFzaCAhc3BhY2UgaWduXG4gICAgICBlbmRcbiAgICBpblxuICAgIHJlYWRfZmxhZ3Mgc3RyX2luZFxuXG4gICgqIFRyeSB0byByZWFkIGEgZGlnaXRhbCBvciBhICcqJyBwYWRkaW5nLiAqKVxuICBhbmQgcGFyc2VfcGFkZGluZyA6IHR5cGUgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHplcm8gbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhZHR5ID0gbWF0Y2ggemVybywgbWludXMgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gUmlnaHRcbiAgICAgIHwgZmFsc2UsIHRydWUgIC0+IExlZnRcbiAgICAgIHwgIHRydWUsIGZhbHNlIC0+IFplcm9zXG4gICAgICB8ICB0cnVlLCB0cnVlICAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMZWZ0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICctJyBcIjBcIiBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgbGV0IG5ld19pbmQsIHdpZHRoID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAoTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiAoQXJnX3BhZGRpbmcgcGFkdHkpXG4gICAgfCBfIC0+XG4gICAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgICB8IExlZnQgIC0+XG4gICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLScgXCJwYWRkaW5nXCI7XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIHwgWmVyb3MgLT5cbiAgICAgICAgICgqIGEgJzAnIHBhZGRpbmcgaW5kaWNhdGlvbiBub3QgZm9sbG93ZWQgYnkgYW55dGhpbmcgc2hvdWxkXG4gICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgUmlnaHQgcGFkZGluZyBvZiB3aWR0aCAwLiBUaGlzIGlzIHVzZWRcbiAgICAgICAgICAgYnkgc2Nhbm5pbmcgY29udmVyc2lvbnMgJTBzIGFuZCAlMGMgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgKExpdF9wYWRkaW5nIChSaWdodCwgMCkpXG4gICAgICB8IFJpZ2h0IC0+XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIGVuZFxuXG4gICgqIElzIHByZWNpc2lvbiBkZWZpbmVkPyAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcGFkZGluZyA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcuJyAtPlxuICAgICAgcGFyc2VfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkXG4gICAgfCBzeW1iIC0+XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIE5vX3ByZWNpc2lvbiBwYWQgc3ltYlxuXG4gICgqIFJlYWQgdGhlIGRpZ2l0YWwgb3IgJyonIHByZWNpc2lvbi4gKilcbiAgYW5kIHBhcnNlX3ByZWNpc2lvbiA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kID1cbiAgICAgIGxldCBuZXdfaW5kLCBwcmVjID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiBwcmVjKSBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmRcbiAgICB8ICgnKycgfCAnLScpIGFzIHN5bWIgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT5cbiAgICAgICgqIExlZ2FjeSBtb2RlIHdvdWxkIGFjY2VwdCBhbmQgaWdub3JlICcrJyBvciAnLScgYmVmb3JlIHRoZVxuICAgICAgICAgaW50ZWdlciBkZXNjcmliaW5nIHRoZSBkZXNpcmVkIHByZWNpc2lvbjsgbm90ZSB0aGF0IHRoaXNcbiAgICAgICAgIGNhbm5vdCBoYXBwZW4gZm9yIHBhZGRpbmcgd2lkdGgsIGFzICcrJyBhbmQgJy0nIGFscmVhZHkgaGF2ZVxuICAgICAgICAgYSBzZW1hbnRpY3MgdGhlcmUuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgdGhlIGlkZWEgKHN1cHBvcnRlZCBieSB0aGlzIHR3ZWFrKSB0aGF0IHdpZHRoIGFuZFxuICAgICAgICAgcHJlY2lzaW9uIGxpdGVyYWxzIGFyZSBcImludGVnZXIgbGl0ZXJhbHNcIiBpbiB0aGUgT0NhbWwgc2Vuc2UgaXNcbiAgICAgICAgIHN0aWxsIGJsYXRhbnRseSB3cm9uZywgYXMgMTIzXzQ1NiBvciAweEZGIGFyZSByZWplY3RlZC4gKilcbiAgICAgIHBhcnNlX2xpdGVyYWwgKG1pbnVzIHx8IHN5bWIgPSAnLScpIChzdHJfaW5kICsgMSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gcGFkIEFyZ19wcmVjaXNpb25cbiAgICB8IF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIG5vdGUgdGhhdCBsZWdhY3kgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBpZ25vcmUgJy4nIHdpdGhvdXRcbiAgICAgICAgICAgYSBudW1iZXIgKGFzIGl0IGRvZXMgZm9yIHBhZGRpbmcgaW5kaWNhdGlvbnMpLCBidXRcbiAgICAgICAgICAgaW50ZXJwcmV0cyBpdCBhcyAnLjAnICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIDApXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLicgXCJwcmVjaXNpb25cIlxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiB0IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfY29udiAodHlwZSB1KSAodHlwZSB2KSAocGFkcHJlYyA6ICh1LCB2KSBwYWRkaW5nKSA9XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIHByZWMgcGFkcHJlYyBzdHIuW3N0cl9pbmRdIGluXG4gICAgKCogaW4gbGVnYWN5IG1vZGUsIHNvbWUgZm9ybWF0cyAoJXMgYW5kICVTKSBhY2NlcHQgYSB3ZWlyZCBtaXggb2ZcbiAgICAgICBwYWRkaW5nIGFuZCBwcmVjaXNpb24sIHdoaWNoIGlzIG1lcmdlZCBhcyBhIHNpbmdsZSBwYWRkaW5nXG4gICAgICAgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBpbiAlLjEwcyB0aGUgcHJlY2lzaW9uIGlzIGltcGxpY2l0bHlcbiAgICAgICB1bmRlcnN0b29kIGFzIHBhZGRpbmcgJTEwcywgYnV0IHRoZSBsZWZ0LXBhZGRpbmcgY29tcG9uZW50IG1heVxuICAgICAgIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBsZWZ0IHBhZGRpbmcgb3IgYSBuZWdhdGl2ZSBwcmVjaXNpb246XG4gICAgICAgJS0uM3MgYW5kICUuLTNzIGFyZSBlcXVpdmFsZW50IHRvICUtM3MgKilcbiAgICBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAtPiAoXG4gICAgICBtYXRjaCBtaW51cywgcHJlYyB3aXRoXG4gICAgICAgIHwgXywgTm9fcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgTm9fcGFkZGluZ1xuICAgICAgICB8IGZhbHNlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKSlcbiAgICAgICAgfCB0cnVlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKExlZnQsIG4pKVxuICAgICAgICB8IGZhbHNlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIFJpZ2h0KVxuICAgICAgICB8IHRydWUsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgTGVmdClcbiAgICApXG4gICAgfCBwYWQgLT4gcGFyc2VfY29udiBwYWRcblxuICAoKiBDYXNlIGFuYWx5c2lzIG9uIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9jb252ZXJzaW9uIDogdHlwZSB4IHkgeiB0IHUgdiBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiAoeCwgeSkgcGFkZGluZyAtPlxuICAgICAgICAoeiwgdCkgcHJlY2lzaW9uIC0+ICh1LCB2KSBwYWRkaW5nIC0+IGNoYXIgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyBwYWRwcmVjIHN5bWIgLT5cbiAgICAoKiBGbGFncyB1c2VkIHRvIGNoZWNrIG9wdGlvbiB1c2FnZXMvY29tcGF0aWJpbGl0aWVzLiAqKVxuICAgIGxldCBwbHVzX3VzZWQgID0gcmVmIGZhbHNlIGFuZCBoYXNoX3VzZWQgPSByZWYgZmFsc2VcbiAgICBhbmQgc3BhY2VfdXNlZCA9IHJlZiBmYWxzZSBhbmQgaWduX3VzZWQgICA9IHJlZiBmYWxzZVxuICAgIGFuZCBwYWRfdXNlZCAgID0gcmVmIGZhbHNlIGFuZCBwcmVjX3VzZWQgID0gcmVmIGZhbHNlIGluXG5cbiAgICAoKiBBY2Nlc3MgdG8gb3B0aW9ucywgdXBkYXRlIGZsYWdzLiAqKVxuICAgIGxldCBnZXRfcGx1cyAgICAoKSA9IHBsdXNfdXNlZCAgOj0gdHJ1ZTsgcGx1c1xuICAgIGFuZCBnZXRfaGFzaCAgICgpID0gaGFzaF91c2VkIDo9IHRydWU7IGhhc2hcbiAgICBhbmQgZ2V0X3NwYWNlICAgKCkgPSBzcGFjZV91c2VkIDo9IHRydWU7IHNwYWNlXG4gICAgYW5kIGdldF9pZ24gICAgICgpID0gaWduX3VzZWQgICA6PSB0cnVlOyBpZ25cbiAgICBhbmQgZ2V0X3BhZCAgICAgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZFxuICAgIGFuZCBnZXRfcHJlYyAgICAoKSA9IHByZWNfdXNlZCAgOj0gdHJ1ZTsgcHJlY1xuICAgIGFuZCBnZXRfcGFkcHJlYyAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkcHJlYyBpblxuXG4gICAgbGV0IGdldF9pbnRfcGFkICgpIDogKHgseSkgcGFkZGluZyA9XG4gICAgICAoKiAlNS4zZCBpcyBhY2NlcHRlZCBhbmQgbWVhbmluZ2Z1bDogcGFkIHRvIGxlbmd0aCA1IHdpdGhcbiAgICAgICAgIHNwYWNlcywgYnV0IGZpcnN0IHBhZCB3aXRoIHplcm9zIHVwdG8gbGVuZ3RoIDMgKDAtcGFkZGluZ1xuICAgICAgICAgaXMgdGhlIGludGVycHJldGF0aW9uIG9mIFwicHJlY2lzaW9uXCIgZm9yIGludGVnZXIgZm9ybWF0cykuXG5cbiAgICAgICAgICUwNS4zZCBpcyByZWR1bmRhbnQ6IHBhZCB0byBsZW5ndGggNSAqd2l0aCB6ZXJvcyosIGJ1dFxuICAgICAgICAgZmlyc3QgcGFkIHdpdGggemVyb3MuLi4gVG8gYWRkIGluc3VsdCB0byB0aGUgaW5qdXJ5LCB0aGVcbiAgICAgICAgIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSAwLXBhZGRpbmcgaW5kaWNhdGlvbiBhbmRcbiAgICAgICAgIGRvZXMgdGhlIDUgcGFkZGluZyB3aXRoIHNwYWNlcyBpbnN0ZWFkLiBXZSByZXVzZSB0aGlzXG4gICAgICAgICBpbnRlcnByZXRhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHN0YXRpY2FsbHkgcmVqZWN0IHRoaXNcbiAgICAgICAgIGZvcm1hdCB3aGVuIHRoZSBsZWdhY3kgbW9kZSBpcyBkaXNhYmxlZCwgdG8gcHJvdGVjdCBzdHJpY3RcbiAgICAgICAgIHVzZXJzIGZyb20gdGhpcyBjb3JuZXIgY2FzZS4gKilcbiAgICAgICBtYXRjaCBnZXRfcGFkICgpLCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICAgICB8IHBhZCwgTm9fcHJlY2lzaW9uIC0+IHBhZFxuICAgICAgICAgfCBOb19wYWRkaW5nLCBfICAgICAtPiBOb19wYWRkaW5nXG4gICAgICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgbiksIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKVxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcywgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBMaXRfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWRcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkIGluXG5cbiAgICAoKiBDaGVjayB0aGF0IHBhZHR5IDw+IFplcm9zLiAqKVxuICAgIGxldCBjaGVja19ub18wIHN5bWIgKHR5cGUgYSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpIDogKGEsYikgcGFkZGluZyA9XG4gICAgICBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoKExlZnQgfCBSaWdodCksIF8pIC0+IHBhZFxuICAgICAgfCBBcmdfcGFkZGluZyAoTGVmdCB8IFJpZ2h0KSAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcyAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgaW5cblxuICAgICgqIEdldCBwYWRkaW5nIGFzIGEgcGFkX29wdGlvbiAoc2VlIFwiJV9cIiwgXCIle1wiLCBcIiUoXCIgYW5kIFwiJVtcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgb3B0X29mX3BhZCBjICh0eXBlIGEpICh0eXBlIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgPSBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IE5vbmVcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aCkgLT4gU29tZSB3aWR0aFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInMCdcIlxuICAgICAgfCBMaXRfcGFkZGluZyAoTGVmdCwgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIictJ1wiXG4gICAgICB8IEFyZ19wYWRkaW5nIF8gLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInKidcIlxuICAgIGluXG4gICAgbGV0IGdldF9wYWRfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWQgKCkpIGluXG4gICAgbGV0IGdldF9wYWRwcmVjX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkcHJlYyAoKSkgaW5cblxuICAgICgqIEdldCBwcmVjaXNpb24gYXMgYSBwcmVjX29wdGlvbiAoc2VlIFwiJV9mXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IGdldF9wcmVjX29wdCAoKSA9IG1hdGNoIGdldF9wcmVjICgpIHdpdGhcbiAgICAgIHwgTm9fcHJlY2lzaW9uICAgICAgIC0+IE5vbmVcbiAgICAgIHwgTGl0X3ByZWNpc2lvbiBuZGVjIC0+IFNvbWUgbmRlY1xuICAgICAgfCBBcmdfcHJlY2lzaW9uICAgICAgLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicqJ1wiXG4gICAgaW5cblxuICAgIGxldCBmbXRfcmVzdWx0ID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnLCcgLT5cbiAgICAgIHBhcnNlIHN0cl9pbmQgZW5kX2luZFxuICAgIHwgJ2MnIC0+XG4gICAgICBsZXQgY2hhcl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoQ2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgc2Nhbl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlMGMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChTY2FuX25leHRfY2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggZ2V0X3BhZF9vcHQgJ2MnIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSAwIC0+IHNjYW5fZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSBfbiAtPlxuICAgICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yXG4gICAgICAgICAgIHRoZW4gaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZFxuICAgICAgICAgICBlbHNlICgqIGxlZ2FjeSBpZ25vcmVzICVjIHdpZHRocyAqKSBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgZW5kXG4gICAgfCAnQycgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jYW1sX2NoYXIsZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChDYW1sX2NoYXIgZm10X3Jlc3QpXG4gICAgfCAncycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChTdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnUycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfY2FtbF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKENhbWxfc3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+XG4gICAgICBsZXQgaWNvbnYgPSBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IFRva2VuX2NvdW50ZXIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIHwgJ24nIHwgJ0wnIHdoZW4gc3RyX2luZD1lbmRfaW5kIHx8IG5vdCAoaXNfaW50X2Jhc2Ugc3RyLltzdHJfaW5kXSkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfb2ZfY2hhciBzeW1iIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50MzIgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ24nIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpXG4gICAgICAgICAgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdMJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50NjQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2YnIHwgJ2UnIHwgJ0UnIHwgJ2cnIHwgJ0cnIHwgJ0YnIHwgJ2gnIHwgJ0gnIC0+XG4gICAgICBsZXQgZmNvbnYgPVxuICAgICAgICBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kXG4gICAgICAgICAgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zsb2F0IChnZXRfcGFkX29wdCAnXycsIGdldF9wcmVjX29wdCAoKSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoRmxvYXQgKGZjb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdiJyB8ICdCJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9ib29sIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChCb29sIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2EnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQWxwaGEgZm10X3Jlc3QpXG4gICAgfCAndCcgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChUaGV0YSBmbXRfcmVzdClcbiAgICB8ICdyJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChSZWFkZXIgZm10X3Jlc3QpXG4gICAgfCAnIScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGbHVzaCBmbXRfcmVzdClcbiAgICB8ICgnJScgfCAnQCcpIGFzIGMgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKGMsIGZtdF9yZXN0KSlcbiAgICB8ICd7JyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJ30nIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICd7Jywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnKCcgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICcpJyBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJygnLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICdbJyAtPlxuICAgICAgbGV0IG5leHRfaW5kLCBjaGFyX3NldCA9IHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdfJywgY2hhcl9zZXQpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ1snLCBjaGFyX3NldCwgZm10X3Jlc3QpKVxuICAgIHwgJy0nIHwgJysnIHwgJyMnIHwgJyAnIHwgJ18nIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvblwiXG4gICAgICAgIHN0ciBwY3RfaW5kIHN5bWJcbiAgICB8IF8gLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGludmFsaWQgY29udmVyc2lvbiBcXFwiJSUlY1xcXCJcIiBzdHIgKHN0cl9pbmQgLSAxKSBzeW1iXG4gICAgaW5cbiAgICAoKiBDaGVjayBmb3IgdW51c2VkIG9wdGlvbnMsIGFuZCByZWplY3QgdGhlbSBhcyBpbmNvbXBhdGlibGUuXG5cbiAgICAgICBTdWNoIGNoZWNrcyBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLCBhcyB0aGUgbGVnYWN5XG4gICAgICAgcGFyc2VyIHNpbGVudGx5IGlnbm9yZWQgaW5jb21wYXRpYmxlIGZsYWdzLiAqKVxuICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlbiBiZWdpblxuICAgIGlmIG5vdCAhcGx1c191c2VkICYmIHBsdXMgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIjtcbiAgICBpZiBub3QgIWhhc2hfdXNlZCAmJiBoYXNoIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCI7XG4gICAgaWYgbm90ICFzcGFjZV91c2VkICYmIHNwYWNlIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCI7XG4gICAgaWYgbm90ICFwYWRfdXNlZCAgJiYgUGFkZGluZ19FQkIgcGFkIDw+IFBhZGRpbmdfRUJCIE5vX3BhZGRpbmcgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCJgcGFkZGluZydcIjtcbiAgICBpZiBub3QgIXByZWNfdXNlZCAmJiBQcmVjaXNpb25fRUJCIHByZWMgPD4gUHJlY2lzaW9uX0VCQiBOb19wcmVjaXNpb24gdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIChpZiBpZ24gdGhlbiAnXycgZWxzZSBzeW1iKVxuICAgICAgICBcImBwcmVjaXNpb24nXCI7XG4gICAgaWYgaWduICYmIHBsdXMgdGhlbiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJysnXCI7XG4gICAgZW5kO1xuICAgICgqIHRoaXMgbGFzdCB0ZXN0IG11c3Qgbm90IGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLFxuICAgICAgIGFzIGlnbm9yaW5nIGl0IHdvdWxkIHR5cGljYWxseSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdHlwaW5nXG4gICAgICAgdGhhbiB3aGF0IHRoZSBsZWdhY3kgcGFyc2VyIHVzZWQgKilcbiAgICBpZiBub3QgIWlnbl91c2VkICYmIGlnbiB0aGVuXG4gICAgICBiZWdpbiBtYXRjaCBzeW1iIHdpdGhcbiAgICAgICAgKCogYXJndW1lbnQtbGVzcyBmb3JtYXRzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpbiBsZWdhY3kgbW9kZSAqKVxuICAgICAgICB8ICgnQCcgfCAnJScgfCAnIScgfCAnLCcpIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+ICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJ18nXCJcbiAgICAgIGVuZDtcbiAgICBmbXRfcmVzdWx0XG5cbiAgKCogUGFyc2UgZm9ybWF0dGluZyBpbmZvcm1hdGlvbiAoYWZ0ZXIgJ0AnKS4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX2F0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIEVuZF9vZl9mb3JtYXQpKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnWycgLT5cbiAgICAgICAgcGFyc2VfdGFnIGZhbHNlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX2JveCwgZm10X3Jlc3QpKVxuICAgICAgfCAneycgLT5cbiAgICAgICAgcGFyc2VfdGFnIHRydWUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICd9JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfdGFnLCBmbXRfcmVzdCkpXG4gICAgICB8ICcsJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCxcIiwgMCwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJAIFwiLCAxLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnOycgLT5cbiAgICAgICAgcGFyc2VfZ29vZF9icmVhayAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJz8nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGRmx1c2gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZvcmNlX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGbHVzaF9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBwYXJzZV9tYWdpY19zaXplIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfYXQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIHdoZW4gc3RyX2luZCArIDEgPCBlbmRfaW5kICYmIHN0ci5bc3RyX2luZCArIDFdID0gJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX3BlcmNlbnQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBmbXRfcmVzdCkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgYywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8bmFtZT4gYWZ0ZXIgXCJAe1wiIG9yIFwiQFtcIi4gKilcbiAgYW5kIHBhcnNlX3RhZyA6IHR5cGUgZSBmIC4gYm9vbCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGlzX29wZW5fdGFnIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIHRyeVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIGxldCBpbmQgPSBTdHJpbmcuaW5kZXhfZnJvbSBzdHIgKHN0cl9pbmQgKyAxKSAnPicgaW5cbiAgICAgICAgaWYgaW5kID49IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgc3RyX2luZCAoaW5kIC0gc3RyX2luZCArIDEpIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKGluZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgKGluZCArIDEpIGluXG4gICAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChzdWJfZm10LCBzdWJfc3RyKSBpblxuICAgICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKEVuZF9vZl9mb3JtYXQsIFwiXCIpIGluXG4gICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDx3aWR0aCBvZmZzZXQ+IGFmdGVyIFwiQDtcIi4gKilcbiAgYW5kIHBhcnNlX2dvb2RfYnJlYWsgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbGV0IG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgfHwgc3RyLltzdHJfaW5kXSA8PiAnPCcgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiAoXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgd2lkdGggPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfM10gd2l0aFxuICAgICAgICAgICAgICB8ICc+JyAtPlxuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfMy1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSwgQnJlYWsgKHMsIHdpZHRoLCAwKVxuICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF80LCBvZmZzZXQgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMyBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzQgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF81XSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF81LXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxLCBCcmVhayAocywgd2lkdGgsIG9mZnNldClcbiAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICApXG4gICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIHN0cl9pbmQsIEJyZWFrIChcIkA7XCIsIDEsIDApXG4gICAgaW5cbiAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSB0aGUgc2l6ZSBpbiBhIDxuPi4gKilcbiAgYW5kIHBhcnNlX21hZ2ljX3NpemUgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbWF0Y2hcbiAgICAgIHRyeVxuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCBzaXplID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfM10gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQgLSAyKSAoc3RyX2luZF8zIC0gc3RyX2luZCArIDMpIGluXG4gICAgICAgICAgU29tZSAoc3RyX2luZF8zICsgMSwgTWFnaWNfc2l6ZSAocywgc2l6ZSkpXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgU29tZSAobmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0KSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyAnPCcsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSBhbmQgY29uc3RydWN0IGEgY2hhciBzZXQuICopXG4gIGFuZCBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG5cbiAgICBsZXQgY2hhcl9zZXQgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgICBsZXQgYWRkX2NoYXIgYyA9XG4gICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYztcbiAgICBpblxuICAgIGxldCBhZGRfcmFuZ2UgYyBjJyA9XG4gICAgICBmb3IgaSA9IGludF9vZl9jaGFyIGMgdG8gaW50X29mX2NoYXIgYycgZG9cbiAgICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IChjaGFyX29mX2ludCBpKTtcbiAgICAgIGRvbmU7XG4gICAgaW5cblxuICAgIGxldCBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQgPVxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgXFxcbiAgICAgICAgIHVzZSAlJSUlIGluc3RlYWQgYXQgcG9zaXRpb24gJWQuXCIgc3RyIHN0cl9pbmRcbiAgICBpblxuXG4gICAgKCogUGFyc2UgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGNoYXIgc2V0LiAqKVxuICAgIGxldCByZWMgcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBsZXQgYyA9IHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFBhcnNlIHRoZSBjb250ZW50IG9mIGEgY2hhciBzZXQgdW50aWwgdGhlIGZpcnN0ICddJy4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfY29udGVudCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBUZXN0IGZvciByYW5nZSBpbiBjaGFyIHNldC4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcbiAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgd2hlbiBjID0gJyUnIC0+XG4gICAgICAgIGFkZF9jaGFyIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBpZiBjID0gJyUnIHRoZW4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kO1xuICAgICAgICAoKiBub3RlIHRoYXQgJ0AnIGFsb25lIGlzIGFjY2VwdGVkLCBhcyBkb25lIGJ5IHRoZSBsZWdhY3lcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb247IHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSByZXF1aXJlcyAlQFxuICAgICAgICAgICBzbyB3ZSBjb3VsZCB3YXJuIG9uIHRoYXQgKilcbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgYydcblxuICAgICgqIE1hbmFnZSByYW5nZSBpbiBjaGFyIHNldCAoZXhjZXB0IGlmIHRoZSAnLScgdGhlIGxhc3QgY2hhciBiZWZvcmUgJ10nKSAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICclJyAtPlxuICAgICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgLT5cbiAgICAgICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDIpIGVuZF9pbmRcbiAgICAgICAgICB8IF8gLT4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICBpblxuICAgIGxldCBzdHJfaW5kLCByZXZlcnNlID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgICAgfCAnXicgLT4gc3RyX2luZCArIDEsIHRydWVcbiAgICAgICAgfCBfIC0+IHN0cl9pbmQsIGZhbHNlIGluXG4gICAgbGV0IG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgbGV0IGNoYXJfc2V0ID0gZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0IGluXG4gICAgbmV4dF9pbmQsIChpZiByZXZlcnNlIHRoZW4gcmV2X2NoYXJfc2V0IGNoYXJfc2V0IGVsc2UgY2hhcl9zZXQpXG5cbiAgKCogQ29uc3VtZSBhbGwgbmV4dCBzcGFjZXMsIHJhaXNlIGFuIEZhaWx1cmUgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBpZiBzdHIuW3N0cl9pbmRdID0gJyAnIHRoZW4gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBlbHNlIHN0cl9pbmRcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZSBpZiBlbmRfaW5kIGlzXG4gICAgIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgYWNjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IGFjYyAqIDEwICsgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCcpIGluXG4gICAgICBpZiBuZXdfYWNjID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZFwiXG4gICAgICAgICAgc3RyIG5ld19hY2MgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCBuZXdfYWNjXG4gICAgfCBfIC0+IHN0cl9pbmQsIGFjY1xuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlXG4gICAgIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX2ludGVnZXIgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMFxuICAgIHwgJy0nIC0+IChcbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgIGxldCBuZXh0X2luZCwgbiA9IHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCAwIGluXG4gICAgICAgIG5leHRfaW5kLCAtblxuICAgICAgfCBjIC0+XG4gICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiZGlnaXRcIiBjXG4gICAgKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBBZGQgYSBsaXRlcmFsIHRvIGEgZm9ybWF0IGZyb20gYSBsaXRlcmFsIGNoYXJhY3RlciBzdWItc2VxdWVuY2UuICopXG4gIGFuZCBhZGRfbGl0ZXJhbCA6IHR5cGUgYSBkIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IChhLCBfLCBfLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGZtdCAtPiBtYXRjaCBzdHJfaW5kIC0gbGl0X3N0YXJ0IHdpdGhcbiAgICB8IDAgICAgLT4gRm10X0VCQiBmbXRcbiAgICB8IDEgICAgLT4gRm10X0VCQiAoQ2hhcl9saXRlcmFsIChzdHIuW2xpdF9zdGFydF0sIGZtdCkpXG4gICAgfCBzaXplIC0+IEZtdF9FQkIgKFN0cmluZ19saXRlcmFsIChTdHJpbmcuc3ViIHN0ciBsaXRfc3RhcnQgc2l6ZSwgZm10KSlcblxuICAoKiBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdWItZm9ybWF0XG4gICAgIChpLmUuIHRoZSBjb3JyZXNwb25kaW5nIFwiJX1cIiBvciBcIiUpXCIpICopXG4gIGFuZCBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBcXFxuICAgICAgICAgZXhwZWN0ZWQgXFxcIiUlJWNcXFwiIGF0IGNoYXJhY3RlciBudW1iZXIgJWRcIiBzdHIgYyBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJyUnIC0+XG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGlmIHN0ci5bc3RyX2luZCArIDFdID0gYyB0aGVuICgqIEVuZCBvZiBmb3JtYXQgZm91bmQgKikgc3RyX2luZCBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgfCAnXycgLT5cbiAgICAgICAgICAoKiBTZWFyY2ggZm9yIFwiJV8oXCIgb3IgXCIlX3tcIi4gKilcbiAgICAgICAgICBpZiBzdHJfaW5kICsgMiA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAyXSB3aXRoXG4gICAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgY1xuICAgICAgICAgIGVuZFxuICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICgqICV7Li4uJX0gc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICgqICUoLi4uJSkgc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICd9JyAtPlxuICAgICAgICAgICgqIEVycm9yOiAlKC4uLiV9LiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICcpJ1wiICd9J1xuICAgICAgICB8ICcpJyAtPlxuICAgICAgICAgICgqIEVycm9yOiAley4uLiUpLiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICd9J1wiICcpJ1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICBlbmRcbiAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAoKiBDaGVjayBpZiBzeW1iIGlzIGEgdmFsaWQgaW50IGNvbnZlcnNpb24gYWZ0ZXIgXCIlbFwiLCBcIiVuXCIgb3IgXCIlTFwiICopXG4gIGFuZCBpc19pbnRfYmFzZSBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gICgqIENvbnZlcnQgYSBjaGFyIChsLCBuIG9yIEwpIHRvIGl0cyBhc3NvY2lhdGVkIGNvdW50ZXIuICopXG4gIGFuZCBjb3VudGVyX29mX2NoYXIgc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2wnIC0+IExpbmVfY291bnRlciAgfCAnbicgLT4gQ2hhcl9jb3VudGVyXG4gICAgfCAnTCcgLT4gVG9rZW5fY291bnRlciB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgaW50X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbWF0Y2ggcGx1cywgaGFzaCwgc3BhY2UsIHN5bWIgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9kICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfaVxuICAgIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2QnIC0+IEludF9zZCB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdpJyAtPiBJbnRfc2lcbiAgICB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfcGQgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X3BpXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAneCcgLT4gSW50X3ggIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ1gnIC0+IEludF9YXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAneCcgLT4gSW50X0N4IHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ1gnIC0+IEludF9DWFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ28nIC0+IEludF9vXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnbycgLT4gSW50X0NvXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAndScgLT4gSW50X3VcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdkJyAtPiBJbnRfQ2RcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdpJyAtPiBJbnRfQ2lcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd1JyAtPiBJbnRfQ3VcbiAgICB8IF8sIHRydWUsIF8sICd4JyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ3hcbiAgICB8IF8sIHRydWUsIF8sICdYJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ1hcbiAgICB8IF8sIHRydWUsIF8sICdvJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ29cbiAgICB8IF8sIHRydWUsIF8sICgnZCcgfCAnaScgfCAndScpIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBmYWxzZSBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCJcbiAgICB8IHRydWUsIF8sIHRydWUsIF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIHRydWUsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiXG4gICAgfCB0cnVlLCBfLCBmYWxzZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIGZhbHNlIGhhc2ggc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgZmFsc2UsIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3BhY2UsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGZsb2F0X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBsZXQgZmxhZyA9IG1hdGNoIHBsdXMsIHNwYWNlIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX1xuICAgIHwgZmFsc2UsICB0cnVlIC0+IEZsb2F0X2ZsYWdfc1xuICAgIHwgIHRydWUsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfcFxuICAgIHwgIHRydWUsICB0cnVlIC0+XG4gICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gRmxvYXRfZmxhZ19wXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIiBpblxuICAgIGxldCBraW5kID0gbWF0Y2ggaGFzaCwgc3ltYiB3aXRoXG4gICAgfCBfLCAnZicgLT4gRmxvYXRfZlxuICAgIHwgXywgJ2UnIC0+IEZsb2F0X2VcbiAgICB8IF8sICdFJyAtPiBGbG9hdF9FXG4gICAgfCBfLCAnZycgLT4gRmxvYXRfZ1xuICAgIHwgXywgJ0cnIC0+IEZsb2F0X0dcbiAgICB8IF8sICdoJyAtPiBGbG9hdF9oXG4gICAgfCBfLCAnSCcgLT4gRmxvYXRfSFxuICAgIHwgZmFsc2UsICdGJyAtPiBGbG9hdF9GXG4gICAgfCB0cnVlLCAnRicgLT4gRmxvYXRfQ0ZcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gICAgZmxhZywga2luZFxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBpbmNvbXBhdGlibGUgb3B0aW9ucy4qKVxuICBhbmQgaW5jb21wYXRpYmxlX2ZsYWcgOiB0eXBlIGEgLiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nIC0+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoIDogaW50O1xuICBtdXRhYmxlIGFyciA6ICdhIHNsb3QgYXJyYXk7XG59XG4oKiB7MiBUaGUgdHlwZSBbJ2EgdF19XG5cbiAgIEEgZHluYW1pYyBhcnJheSBpcyByZXByZXNlbnRlZCB1c2luZyBhIGJhY2tpbmcgYXJyYXkgW2Fycl0gYW5kXG4gICBhIFtsZW5ndGhdLiBJdCBiZWhhdmVzIGFzIGFuIGFycmF5IG9mIHNpemUgW2xlbmd0aF0gLS0gdGhlIGluZGljZXNcbiAgIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXSBpbmNsdWRlZCBjb250YWluIHVzZXItcHJvdmlkZWQgdmFsdWVzIGFuZFxuICAgY2FuIGJlIFtnZXRdIGFuZCBbc2V0XSAtLSBidXQgdGhlIGxlbmd0aCBtYXkgYWxzbyBjaGFuZ2UgaW4gdGhlXG4gICBmdXR1cmUgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzIGF0IHRoZSBlbmQuXG5cbiAgIFdlIHVzZSB0aGUgZm9sbG93aW5nIGNvbmNlcHRzO1xuICAgLSBjYXBhY2l0eTogdGhlIGxlbmd0aCBvZiB0aGUgYmFja2luZyBhcnJheTpcbiAgICAgW0FycmF5Lmxlbmd0aCAgYXJyXVxuICAgLSBsaXZlIHNwYWNlOiB0aGUgcG9ydGlvbiBvZiB0aGUgYmFja2luZyBhcnJheSB3aXRoXG4gICAgIGluZGljZXMgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdIGluY2x1ZGVkLlxuICAgLSBlbXB0eSBzcGFjZTogdGhlIHBvcnRpb24gb2YgdGhlIGJhY2tpbmcgYXJyYXlcbiAgICAgZnJvbSBbbGVuZ3RoXSB0byB0aGUgZW5kIG9mIHRoZSBiYWNraW5nIGFycmF5LlxuXG4gICB7MiBUaGUgdHlwZSBbJ2Egc2xvdF19XG5cbiAgIFdlIHNob3VsZCBub3Qga2VlcCBhIHVzZXItcHJvdmlkZWQgdmFsdWUgaW4gdGhlIGVtcHR5IHNwYWNlLCBhc1xuICAgdGhpcyBjb3VsZCBleHRlbmQgaXRzIGxpZmV0aW1lIGFuZCBtYXkgcmVzdWx0IGluIG1lbW9yeSBsZWFrcyBvZlxuICAgYXJiaXRyYXJ5IHNpemUuIEZ1bmN0aW9ucyB0aGF0IHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBkeW5hbWljXG4gICBhcnJheSwgc3VjaCBhcyBbcG9wX2xhc3RdIG9yIFt0cnVuY2F0ZV0sIG11c3QgcmVhbGx5IGVyYXNlIHRoZVxuICAgZWxlbWVudCBmcm9tIHRoZSBiYWNraW5nIGFycmF5LlxuXG4gICBUaGlzIGNvbnN0cmFpbnQgbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcHJlc2VudCBhbiBkeW5hbWljIGFycmF5IG9mXG4gICBlbGVtZW50cyBvZiB0eXBlIFsnYV0gd2l0aCBhIGJhY2tpbmcgYXJyYXkgb2YgdHlwZSBbJ2EgYXJyYXldOiB3aGF0XG4gICB2YWxpZCB2YWx1ZSBvZiB0eXBlIFsnYV0gd291bGQgd2UgdXNlIGluIHRoZSBlbXB0eSBzcGFjZT8gVHlwaWNhbFxuICAgY2hvaWNlcyBpbmNsdWRlOlxuICAgLSBhY2NlcHRpbmcgc2NlbmFyaW9zIHdoZXJlIHdlIGFjdHVhbGx5IGxlYWsgdXNlci1wcm92aWRlZCB2YWx1ZXNcbiAgICAgKGJ1dCB0aGlzIGNhbiBibG93dXAgbWVtb3J5IHVzYWdlIGluIHNvbWUgY2FzZXMsIGFuZCBpcyBoYXJkIHRvIGRlYnVnKVxuICAgLSByZXF1aXJpbmcgYSBcImR1bW15XCIgdmFsdWUgYXQgY3JlYXRpb24gb2YgdGhlIGR5bmFtaWMgYXJyYXlcbiAgICAgb3IgaW4gdGhlIHBhcnRzIG9mIHRoZSBBUEkgdGhhdCBncm93IHRoZSBlbXB0eSBzcGFjZVxuICAgICAoYnV0IHVzZXJzIGZpbmQgdGhpcyB2ZXJ5IGluY29udmVuaWVudClcbiAgIC0gdXNpbmcgYXJjYW5lIE9iai5tYWdpYyB0cmlja3NcbiAgICAgKGJ1dCBleHBlcnRzIGRvbid0IGFncmVlIG9uIHdoaWNoIHRyaWNrcyBhcmUgc2FmZSB0byB1c2UgYW5kL29yXG4gICAgICBzaG91bGQgYmUgdXNlZCBoZXJlKVxuICAgLSB1c2luZyBhIGJhY2tpbmcgYXJyYXkgb2YgWydhIG9wdGlvbl0gdmFsdWVzLCB1c2luZyBbTm9uZV1cbiAgICAgaW4gdGhlIGVtcHR5IHNwYWNlXG4gICAgIChidXQgdGhpcyBnaXZlcyBhIG5vdGljZWFibHkgbGVzcyBlZmZpY2llbnQgbWVtb3J5IHJlcHJlc2VudGF0aW9uKVxuXG4gICBJbiB0aGUgcHJlc2VudCBpbXBsZW1lbnRhdGlvbiwgd2UgdXNlIHRoZSBbJ2Egb3B0aW9uXSBhcHByb2FjaCxcbiAgIHdpdGggYSB0d2lzdC4gV2l0aCBbJ2Egb3B0aW9uXSwgY2FsbGluZyBbc2V0IGEgaSB4XSBtdXN0IHJlYWxsb2NhdGVcbiAgIGEgbmV3IFtTb21lIHhdIGJsb2NrOlxue1tcbiAgIGxldCBzZXQgYSBpIHggPVxuICAgICBpZiBpIDwgMCB8fCBpID49IGEubGVuZ3RoIHRoZW4gZXJyb3IgXCJvdXQgb2YgYm91bmRzXCI7XG4gICAgIGEuYXJyLihpKSA8LSBTb21lIHhcbl19XG4gICBJbnN0ZWFkIHdlIHVzZSB0aGUgdHlwZSBbJ2Egc2xvdF0gYmVsb3csXG4gICB3aGljaCBiZWhhdmVzIGFzIGFuIG9wdGlvbiB3aG9zZSBbU29tZV0gY29uc3RydWN0b3JcbiAgIChjYWxsZWQgW0VsZW1dIGhlcmUpIGhhcyBhIF9tdXRhYmxlXyBhcmd1bWVudC5cbiopXG5hbmQgJ2Egc2xvdCA9XG58IEVtcHR5XG58IEVsZW0gb2YgeyBtdXRhYmxlIHY6ICdhIH1cbigqXG4gICBUaGlzIGdpdmVzIGFuIGFsbG9jYXRpb24tZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBbc2V0XSB0aGF0IGNhbGxzXG4gICBbQXJyYXkuZ2V0XSAoaW5zdGVhZCBvZiBbQXJyYXkuc2V0XSkgb24gdGhlIGJhY2tpbmcgYXJyYXkgYW5kIHRoZW5cbiAgIG11dGF0ZXMgdGhlIFt2XSBwYXJhbWV0ZXIuIEluIHBzZXVkby1jb2RlOlxue1tcbiAgIGxldCBzZXQgYSBpIHggPVxuICAgICBpZiBpIDwgMCB8fCBpID49IGEubGVuZ3RoIHRoZW4gZXJyb3IgXCJvdXQgb2YgYm91bmRzXCI7XG4gICAgIG1hdGNoIGEuYXJyLihpKSB3aXRoXG4gICAgIHwgRW1wdHkgLT4gZXJyb3IgXCJpbnZhbGlkIHN0YXRlOiBtaXNzaW5nIGVsZW1lbnRcIlxuICAgICB8IEVsZW0gcyAtPiBzLnYgPC0geFxuXX1cbiAgIFdpdGggdGhpcyBhcHByb2FjaCwgYWNjZXNzaW5nIGFuIGVsZW1lbnQgc3RpbGwgcGF5cyB0aGUgY29zdCBvZiBhblxuICAgZXh0cmEgaW5kaXJlY3Rpb24gKGNvbXBhcmVkIHRvIGFwcHJvYWNoZXMgdGhhdCBkbyBub3QgYm94IGVsZW1lbnRzXG4gICBpbiB0aGUgYmFja2luZyBhcnJheSksIGJ1dCBvbmx5IG9wZXJhdGlvbnMgdGhhdCBhZGQgbmV3IGVsZW1lbnRzIGF0XG4gICB0aGUgZW5kIG9mIHRoZSBhcnJheSBwYXkgZXh0cmEgYWxsb2NhdGlvbnMuXG5cbiAgIFRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgd2hlcmUgWydhIG9wdGlvbl0gaXMgYmV0dGVyOiBpdCBtYWtlc1xuICAgW3BvcF9sYXN0X29wdF0gbW9yZSBlZmZpY2llbnQgYXMgdGhlIHVuZGVybHlpbmcgb3B0aW9uIGNhbiBiZVxuICAgcmV0dXJuZWQgZGlyZWN0bHksIGFuZCBpdCBhbHNvIGxldHMgdXMgdXNlIFtBcnJheS5ibGl0XSB0b1xuICAgaW1wbGVtZW50IFthcHBlbmRdLiBXZSBiZWxpZXZlIHRoYXQgb3B0aW1pemluZyBbZ2V0XSBhbmQgW3NldF0gaXNcbiAgIG1vcmUgaW1wb3J0YW50IGZvciBkeW5hbWljIGFycmF5cy5cblxuICAgezIgSW52YXJpYW50cyBhbmQgdmFsaWQgc3RhdGVzfVxuXG4gICBXZSBlbmZvcmNlIHRoZSBpbnZhcmlhbnQgdGhhdCBbbGVuZ3RoID49IDBdIGF0IGFsbCB0aW1lcy5cbiAgIHdlIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQgZm9yIG9wdGltaXphdGlvbi5cblxuICAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGRlZmluZSB3aGF0IHdlIGNhbGwgYSBcInZhbGlkXCIgZHluYXJyYXk6XG4gICAtIHZhbGlkIGxlbmd0aDogW2xlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXVxuICAgLSBubyBtaXNzaW5nIGVsZW1lbnQgaW4gdGhlIGxpdmUgc3BhY2U6XG4gICAgIGZvcmFsbCBpLCBbMCA8PSBpIDwgbGVuZ3RoXSBpbXBsaWVzIFthcnIuKGkpIDw+IEVtcHR5XVxuICAgLSBubyBlbGVtZW50IGluIHRoZSBlbXB0eSBzcGFjZTpcbiAgICAgZm9yYWxsIGksIFtsZW5ndGggPD0gaSA8IEFycmF5Lmxlbmd0aCBhcnJdIGltcGxpZXMgW2Fyci4oaSkgPSBFbXB0eV1cblxuICAgVW5mb3J0dW5hdGVseSwgd2UgY2Fubm90IGVhc2lseSBlbmZvcmNlIHZhbGlkaXR5IGFzIGFuIGludmFyaWFudCBpblxuICAgcHJlc2VuY2Ugb2YgY29uY3VycmVudCB1cGRhdGVzLiBXZSBjYW4gdGh1cyBvYnNlcnZlIGR5bmFycmF5cyBpblxuICAgXCJpbnZhbGlkIHN0YXRlc1wiLiBPdXIgaW1wbGVtZW50YXRpb24gbWF5IHJhaXNlIGV4Y2VwdGlvbnMgb3IgcmV0dXJuXG4gICBpbmNvcnJlY3QgcmVzdWx0cyBvbiBvYnNlcnZpbmcgaW52YWxpZCBzdGF0ZXMsIGJ1dCBvZiBjb3Vyc2UgaXRcbiAgIG11c3QgcHJlc2VydmUgbWVtb3J5IHNhZmV0eS5cbiopXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBsZXRbQGlubGluZSBuZXZlcl0gaW5kZXhfb3V0X29mX2JvdW5kcyBmIH5pIH5sZW5ndGggPVxuICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiRHluYXJyYXkuJXM6IGluZGV4ICVkIG91dCBvZiBib3VuZHMgKGVtcHR5IGR5bmFycmF5KVwiXG4gICAgICAgIGYgaVxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkR5bmFycmF5LiVzOiBpbmRleCAlZCBvdXQgb2YgYm91bmRzICgwLi4lZClcIlxuICAgICAgICBmIGkgKGxlbmd0aCAtIDEpXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgZiBuID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IG5lZ2F0aXZlIGxlbmd0aCAlZCByZXF1ZXN0ZWRcIlxuICAgICAgZiBuXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG5lZ2F0aXZlX2NhcGFjaXR5X3JlcXVlc3RlZCBmIG4gPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCJEeW5hcnJheS4lczogbmVnYXRpdmUgY2FwYWNpdHkgJWQgcmVxdWVzdGVkXCJcbiAgICAgIGYgblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSByZXF1ZXN0ZWRfbGVuZ3RoX291dF9vZl9ib3VuZHMgZiByZXF1ZXN0ZWRfbGVuZ3RoID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGNhbm5vdCBncm93IHRvIHJlcXVlc3RlZCBsZW5ndGggJWQgKG1heF9hcnJheV9sZW5ndGggaXMgJWQpXCJcbiAgICAgIGYgcmVxdWVzdGVkX2xlbmd0aCBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG4gICgqIFdoZW4gb2JzZXJ2aW5nIGFuIGludmFsaWQgc3RhdGUgKFttaXNzaW5nX2VsZW1lbnRdLFxuICAgICBbaW52YWxpZF9sZW5ndGhdKSwgd2UgZG8gbm90IGdpdmUgdGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb25cbiAgICAgaW4gdGhlIGVycm9yIG1lc3NhZ2UsIGFzIHRoZSBlcnJvciBpcyByZWxhdGVkIHRvIGludmFsaWQgb3BlcmF0aW9uc1xuICAgICBwZXJmb3JtZWQgZWFybGllciwgYW5kIG5vdCB0byB0aGUgY2FsbHNpdGUgb2YgdGhlIGZ1bmN0aW9uXG4gICAgIGl0c2VsZi4gKilcblxuICBsZXQgaW52YWxpZF9zdGF0ZV9kZXNjcmlwdGlvbiA9XG4gICAgXCJJbnZhbGlkIGR5bmFycmF5ICh1bnN5bmNocm9uaXplZCBjb25jdXJyZW50IGxlbmd0aCBjaGFuZ2UpXCJcblxuICBsZXRbQGlubGluZSBuZXZlcl0gbWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGggPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCIlczogbWlzc2luZyBlbGVtZW50IGF0IHBvc2l0aW9uICVkIDwgbGVuZ3RoICVkXCJcbiAgICAgIGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb25cbiAgICAgIGkgbGVuZ3RoXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfbGVuZ3RoIH5sZW5ndGggfmNhcGFjaXR5ID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiJXM6IGxlbmd0aCAlZCA+IGNhcGFjaXR5ICVkXCJcbiAgICAgIGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb25cbiAgICAgIGxlbmd0aCBjYXBhY2l0eVxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBsZW5ndGhfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24gZiB+ZXhwZWN0ZWQgfm9ic2VydmVkID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGEgbGVuZ3RoIGNoYW5nZSBmcm9tICVkIHRvICVkIG9jY3VycmVkIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgZiBleHBlY3RlZCBvYnNlcnZlZFxuXG4gICgqIFdoZW4gYW4gW0VtcHR5XSBlbGVtZW50IGlzIG9ic2VydmVkIHVuZXhwZWN0ZWRseSBhdCBpbmRleCBbaV0sXG4gICAgIGl0IG1heSBiZSBlaXRoZXIgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3IgYW4gaW52YWxpZC1zdGF0ZSBzaXR1YXRpb25cbiAgICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgW2kgPD0gbGVuZ3RoXS4gKilcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIHVuZXhwZWN0ZWRfZW1wdHlfZWxlbWVudCBmIH5pIH5sZW5ndGggPVxuICAgIGlmIGkgPCBsZW5ndGggdGhlblxuICAgICAgbWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGhcbiAgICBlbHNlXG4gICAgICBpbmRleF9vdXRfb2ZfYm91bmRzIGYgfmkgfmxlbmd0aFxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBlbXB0eV9keW5hcnJheSBmID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGVtcHR5IGFycmF5XCIgZlxuZW5kXG5cbigqIERldGVjdGluZyBpdGVyYXRvciBpbnZhbGlkYXRpb24uXG5cbiAgIFNlZSB7IWl0ZXJ9IGJlbG93IGZvciBhIGRldGFpbGVkIHVzYWdlIGV4YW1wbGUuXG4qKVxubGV0IGNoZWNrX3NhbWVfbGVuZ3RoIGYgYSB+bGVuZ3RoID1cbiAgbGV0IGxlbmd0aF9hID0gYS5sZW5ndGggaW5cbiAgaWYgbGVuZ3RoIDw+IGxlbmd0aF9hIHRoZW5cbiAgICBFcnJvci5sZW5ndGhfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24gZlxuICAgICAgfmV4cGVjdGVkOmxlbmd0aCB+b2JzZXJ2ZWQ6bGVuZ3RoX2FcblxuKCoqIENhcmVmdWwgdW5zYWZlIGFjY2Vzcy4gKilcblxuKCogUG9zdGNvbmRpdGlvbiBvbiBub24tZXhjZXB0aW9uYWwgcmV0dXJuOlxuICAgW2xlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXSAqKVxubGV0W0BpbmxpbmUgYWx3YXlzXSBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFyciA9XG4gIGxldCBjYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgbGVuZ3RoID4gY2FwYWNpdHkgdGhlblxuICAgIEVycm9yLmludmFsaWRfbGVuZ3RoIH5sZW5ndGggfmNhcGFjaXR5XG5cbigqIFByZWNvbmRpdGlvbjogWzAgPD0gaSA8IGxlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXVxuXG4gICBUaGlzIHByZWNvbmRpdGlvbiBpcyB0eXBpY2FsbHkgZ3VhcmFudGVlZCBieSBrbm93aW5nXG4gICBbMCA8PSBpIDwgbGVuZ3RoXSBhbmQgY2FsbGluZyBbY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnJdLiopXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggPVxuICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IGFyciBpIHdpdGhcbiAgfCBFbXB0eSAtPiBFcnJvci5taXNzaW5nX2VsZW1lbnQgfmkgfmxlbmd0aFxuICB8IEVsZW0ge3Z9IC0+IHZcblxuXG4oKiogezE6ZHluYXJyYXlzIER5bmFtaWMgYXJyYXlzfSAqKVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBhcnIgPSBbfCB8XTtcbn1cblxubGV0IG1ha2UgbiB4ID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwibWFrZVwiIG47XG4gIHtcbiAgICBsZW5ndGggPSBuO1xuICAgIGFyciA9IEFycmF5LmluaXQgbiAoZnVuIF8gLT4gRWxlbSB7diA9IHh9KTtcbiAgfVxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJpbml0XCIgbjtcbiAge1xuICAgIGxlbmd0aCA9IG47XG4gICAgYXJyID0gQXJyYXkuaW5pdCBuIChmdW4gaSAtPiBFbGVtIHt2ID0gZiBpfSk7XG4gIH1cblxubGV0IGdldCBhIGkgPVxuICAoKiBUaGlzIGltcGxlbWVudGF0aW9uIHdpbGwgcHJvcGFnYXRlIGFuIFtJbnZhbGlkX2FyZ3VtZW50XSBleGNlcHRpb25cbiAgICAgZnJvbSBhcnJheSBsb29rdXAgaWYgdGhlIGluZGV4IGlzIG91dCBvZiB0aGUgYmFja2luZyBhcnJheSxcbiAgICAgaW5zdGVhZCBvZiB1c2luZyBvdXIgb3duIFtFcnJvci5pbmRleF9vdXRfb2ZfYm91bmRzXS4gVGhpcyBpc1xuICAgICBhbGxvd2VkIGJ5IG91ciBzcGVjaWZpY2F0aW9uLCBhbmQgbW9yZSBlZmZpY2llbnQgLS0gbm8gbmVlZCB0b1xuICAgICBjaGVjayB0aGF0IFtsZW5ndGggYSA8PSBjYXBhY2l0eSBhXSBpbiB0aGUgZmFzdCBwYXRoLiAqKVxuICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICB8IEVsZW0gcyAtPiBzLnZcbiAgfCBFbXB0eSAtPlxuICAgICAgRXJyb3IudW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IFwiZ2V0XCIgfmkgfmxlbmd0aDphLmxlbmd0aFxuXG5sZXQgc2V0IGEgaSB4ID1cbiAgKCogU2VlIHshZ2V0fSBjb21tZW50IG9uIHRoZSB1c2Ugb2YgY2hlY2tlZCBhcnJheVxuICAgICBhY2Nlc3Mgd2l0aG91dCBvdXIgb3duIGJvdW5kIGNoZWNraW5nLiAqKVxuICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICB8IEVsZW0gcyAtPiBzLnYgPC0geFxuICB8IEVtcHR5IC0+XG4gICAgICBFcnJvci51bmV4cGVjdGVkX2VtcHR5X2VsZW1lbnQgXCJzZXRcIiB+aSB+bGVuZ3RoOmEubGVuZ3RoXG5cbmxldCBsZW5ndGggYSA9IGEubGVuZ3RoXG5cbmxldCBpc19lbXB0eSBhID0gKGEubGVuZ3RoID0gMClcblxubGV0IGNvcHkge2xlbmd0aDsgYXJyfSA9XG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiB1c2UgW2xlbmd0aF0gYXMgdGhlIG5ldyBjYXBhY2l0eSB0byBtYWtlXG4gICAgIHRoaXMgYW4gTyhsZW5ndGgpIG9wZXJhdGlvbi4gKilcbiAge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgRWxlbSB7dn1cbiAgICApO1xuICB9XG5cbmxldCBnZXRfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiBFcnJvci5lbXB0eV9keW5hcnJheSBcImdldF9sYXN0XCI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdLiAqKVxuICB1bnNhZmVfZ2V0IGFyciB+aToobGVuZ3RoIC0gMSkgfmxlbmd0aFxuXG5sZXQgZmluZF9sYXN0IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA8PSBjYXBhY2l0eSBhXS4gKilcbiAgaWYgbGVuZ3RoID0gMCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdLiAqKVxuICAgIFNvbWUgKHVuc2FmZV9nZXQgYXJyIH5pOihsZW5ndGggLSAxKSB+bGVuZ3RoKVxuXG4oKiogezE6cmVtb3ZpbmcgUmVtb3ZpbmcgZWxlbWVudHN9ICopXG5cbmxldCBwb3BfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBsYXN0ID0gbGVuZ3RoIC0gMSBpblxuICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXSBzbyBbbGFzdCA+PSAwXS4gKilcbiAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCBhcnIgbGFzdCB3aXRoXG4gIHwgRW1wdHkgLT5cbiAgICAgIEVycm9yLm1pc3NpbmdfZWxlbWVudCB+aTpsYXN0IH5sZW5ndGhcbiAgfCBFbGVtIHMgLT5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYXJyIGxhc3QgRW1wdHk7XG4gICAgICBhLmxlbmd0aCA8LSBsYXN0O1xuICAgICAgcy52XG5cbmxldCBwb3BfbGFzdF9vcHQgYSA9XG4gIG1hdGNoIHBvcF9sYXN0IGEgd2l0aFxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICB8IHggLT4gU29tZSB4XG5cbmxldCByZW1vdmVfbGFzdCBhID1cbiAgbGV0IGxhc3QgPSBsZW5ndGggYSAtIDEgaW5cbiAgaWYgbGFzdCA+PSAwIHRoZW4gYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsYXN0O1xuICAgIGEuYXJyLihsYXN0KSA8LSBFbXB0eTtcbiAgZW5kXG5cbmxldCB0cnVuY2F0ZSBhIG4gPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJ0cnVuY2F0ZVwiIG47XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBpZiBsZW5ndGggPD0gbiB0aGVuICgpXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBuO1xuICAgIEFycmF5LmZpbGwgYXJyIG4gKGxlbmd0aCAtIG4pIEVtcHR5O1xuICBlbmRcblxubGV0IGNsZWFyIGEgPSB0cnVuY2F0ZSBhIDBcblxuXG4oKiogezE6Y2FwYWNpdHkgQmFja2luZyBhcnJheSBhbmQgY2FwYWNpdHl9ICopXG5cbmxldCBjYXBhY2l0eSBhID0gQXJyYXkubGVuZ3RoIGEuYXJyXG5cbmxldCBuZXh0X2NhcGFjaXR5IG4gPVxuICBsZXQgbicgPVxuICAgICgqIEZvciBsYXJnZSB2YWx1ZXMgb2Ygbiwgd2UgdXNlIDEuNSBhcyBvdXIgZ3Jvd3RoIGZhY3Rvci5cblxuICAgICAgIEZvciBzbWFsbGVyIHZhbHVlcyBvZiBuLCB3ZSBncm93IG1vcmUgYWdncmVzc2l2ZWx5IHRvIGF2b2lkXG4gICAgICAgcmVhbGxvY2F0aW5nIHRvbyBtdWNoIHdoZW4gYWNjdW11bGF0aW5nIGVsZW1lbnRzIGludG8gYW4gZW1wdHlcbiAgICAgICBhcnJheS5cblxuICAgICAgIFRoZSBjb25zdGFudHMgXCI1MTIgd29yZHNcIiBhbmQgXCI4IHdvcmRzXCIgYmVsb3cgYXJlIHRha2VuIGZyb21cbiAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mb2xseS9ibG9iL1xuICAgICAgICAgICBjMDZjMGY0MWQ5MWRhZjFhNmE1ZjNmYzFjZDQ2NTMwMmFjMjYwNDU5L2ZvbGx5L0ZCVmVjdG9yLmgjTDExMjgtTDExNTdcbiAgICAqKVxuICAgIGlmIG4gPD0gNTEyIHRoZW4gbiAqIDJcbiAgICBlbHNlIG4gKyBuIC8gMlxuICBpblxuICAoKiBqdW1wIGRpcmVjdGx5IGZyb20gMCB0byA4ICopXG4gIG1pbiAobWF4IDggbicpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBlbnN1cmVfY2FwYWNpdHkgYSBjYXBhY2l0eV9yZXF1ZXN0ID1cbiAgbGV0IGFyciA9IGEuYXJyIGluXG4gIGxldCBjdXJfY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIGNhcGFjaXR5X3JlcXVlc3QgPCAwIHRoZW5cbiAgICBFcnJvci5uZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgXCJlbnN1cmVfY2FwYWNpdHlcIiBjYXBhY2l0eV9yZXF1ZXN0XG4gIGVsc2UgaWYgY3VyX2NhcGFjaXR5ID49IGNhcGFjaXR5X3JlcXVlc3QgdGhlblxuICAgICgqIFRoaXMgaXMgdGhlIGZhc3QgcGF0aCwgdGhlIGNvZGUgdXAgdG8gaGVyZSBtdXN0IGRvIGFzIGxpdHRsZSBhc1xuICAgICAgIHBvc3NpYmxlLiAoVGhpcyBpcyB3aHkgd2UgZG9uJ3QgdXNlIFtsZXQge2FycjsgbGVuZ3RofSA9IGFdIGFzXG4gICAgICAgdXN1YWwsIHRoZSBsZW5ndGggaXMgbm90IG5lZWRlZCBpbiB0aGUgZmFzdCBwYXRoLikqKVxuICAgICgpXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBjYXBhY2l0eV9yZXF1ZXN0ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlblxuICAgICAgRXJyb3IucmVxdWVzdGVkX2xlbmd0aF9vdXRfb2ZfYm91bmRzIFwiZW5zdXJlX2NhcGFjaXR5XCIgY2FwYWNpdHlfcmVxdWVzdDtcbiAgICBsZXQgbmV3X2NhcGFjaXR5ID1cbiAgICAgICgqIFdlIHVzZSBlaXRoZXIgdGhlIG5leHQgZXhwb25lbnRpYWwtZ3Jvd3RoIHN0cmF0ZWd5LFxuICAgICAgICAgb3IgdGhlIHJlcXVlc3RlZCBzdHJhdGVneSwgd2hpY2hldmVyIGlzIGJpZ2dlci5cblxuICAgICAgICAgQ29tcGFyZWQgdG8gb25seSB1c2luZyB0aGUgZXhwb25lbnRpYWwtZ3Jvd3RoIHN0cmF0ZWd5LCB0aGlzXG4gICAgICAgICBsZXRzIHVzIHVzZSBsZXNzIG1lbW9yeSBieSBhdm9pZGluZyBhbnkgb3ZlcnNob290IHdoZW5ldmVyXG4gICAgICAgICB0aGUgY2FwYWNpdHkgcmVxdWVzdCBpcyBub3RpY2VhYmx5IGxhcmdlciB0aGFuIHRoZSBjdXJyZW50XG4gICAgICAgICBjYXBhY2l0eS5cblxuICAgICAgICAgQ29tcGFyZWQgdG8gb25seSB1c2luZyB0aGUgcmVxdWVzdGVkIGNhcGFjaXR5LCB0aGlzIGF2b2lkc1xuICAgICAgICAgbG9zaW5nIHRoZSBhbW9ydGl6ZWQgZ3VhcmFudGVlOiB3ZSBhbGxvY2F0ZWQgXCJleHBvbmVudGlhbGx5XG4gICAgICAgICBvciBtb3JlXCIsIHNvIHRoZSBhbW9ydGl6YXRpb24gaG9sZHMuIEluIHBhcnRpY3VsYXIsIG5vdGljZVxuICAgICAgICAgdGhhdCByZXBlYXRlZCBjYWxscyB0byBbZW5zdXJlX2NhcGFjaXR5IGEgKGxlbmd0aCBhICsgMSldXG4gICAgICAgICB3aWxsIGhhdmUgYW1vcnRpemVkLWxpbmVhciByYXRoZXIgdGhhbiBxdWFkcmF0aWMgY29tcGxleGl0eS5cbiAgICAgICopXG4gICAgICBtYXggKG5leHRfY2FwYWNpdHkgY3VyX2NhcGFjaXR5KSBjYXBhY2l0eV9yZXF1ZXN0IGluXG4gICAgbGV0IG5ld19hcnIgPSBBcnJheS5tYWtlIG5ld19jYXBhY2l0eSBFbXB0eSBpblxuICAgIEFycmF5LmJsaXQgYXJyIDAgbmV3X2FyciAwIGEubGVuZ3RoO1xuICAgIGEuYXJyIDwtIG5ld19hcnI7XG4gICAgKCogcG9zdGNvbmRpdGlvbjogKilcbiAgICBhc3NlcnQgKDAgPD0gY2FwYWNpdHlfcmVxdWVzdCk7XG4gICAgYXNzZXJ0IChjYXBhY2l0eV9yZXF1ZXN0IDw9IEFycmF5Lmxlbmd0aCBuZXdfYXJyKTtcbiAgZW5kXG5cbmxldCBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSBleHRyYV9jYXBhY2l0eV9yZXF1ZXN0ID1cbiAgZW5zdXJlX2NhcGFjaXR5IGEgKGxlbmd0aCBhICsgZXh0cmFfY2FwYWNpdHlfcmVxdWVzdClcblxubGV0IGZpdF9jYXBhY2l0eSBhID1cbiAgaWYgY2FwYWNpdHkgYSA9IGEubGVuZ3RoXG4gIHRoZW4gKClcbiAgZWxzZSBhLmFyciA8LSBBcnJheS5zdWIgYS5hcnIgMCBhLmxlbmd0aFxuXG5sZXQgc2V0X2NhcGFjaXR5IGEgbiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBFcnJvci5uZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgXCJzZXRfY2FwYWNpdHlcIiBuO1xuICBsZXQgYXJyID0gYS5hcnIgaW5cbiAgbGV0IGN1cl9jYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgbiA8IGN1cl9jYXBhY2l0eSB0aGVuIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbWluIGEubGVuZ3RoIG47XG4gICAgYS5hcnIgPC0gQXJyYXkuc3ViIGFyciAwIG47XG4gIGVuZFxuICBlbHNlIGlmIG4gPiBjdXJfY2FwYWNpdHkgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYXJyID0gQXJyYXkubWFrZSBuIEVtcHR5IGluXG4gICAgQXJyYXkuYmxpdCBhcnIgMCBuZXdfYXJyIDAgYS5sZW5ndGg7XG4gICAgYS5hcnIgPC0gbmV3X2FycjtcbiAgZW5kXG5cbmxldCByZXNldCBhID1cbiAgYS5sZW5ndGggPC0gMDtcbiAgYS5hcnIgPC0gW3x8XVxuXG4oKiogezE6YWRkaW5nIEFkZGluZyBlbGVtZW50c30gKilcblxuKCogV2UgY2hvc2UgYW4gaW1wbGVtZW50YXRpb24gb2YgW2FkZF9sYXN0IGEgeF0gdGhhdCBiZWhhdmVzIGNvcnJlY3RseVxuICAgaW4gcHJlc2VuY2Ugb2YgYXN5bmNocm9ub3VzIC8gcmUtZW50cmFudCBjb2RlIGV4ZWN1dGlvbiBhcm91bmRcbiAgIGFsbG9jYXRpb25zIGFuZCBwb2xsIHBvaW50czogaWYgYW5vdGhlciB0aHJlYWQgb3IgYSBjYWxsYmFjayBnZXRzXG4gICBleGVjdXRlZCBvbiBhbGxvY2F0aW9uLCB3ZSBhZGQgdGhlIGVsZW1lbnQgYXQgdGhlIG5ldyBlbmQgb2YgdGhlXG4gICBkeW5hbWljIGFycmF5LlxuXG4gICAoV2UgZG8gbm90IGdpdmUgdGhlIHNhbWUgZ3VhcmFudGVlcyBpbiBwcmVzZW5jZSBvZiBjb25jdXJyZW50XG4gICBwYXJhbGxlbCB1cGRhdGVzLCB3aGljaCBhcmUgbXVjaCBtb3JlIGV4cGVuc2l2ZSB0byBwcm90ZWN0XG4gICBhZ2FpbnN0LilcbiopXG5cbigqIFthZGRfbGFzdF9pZl9yb29tIGEgZWxlbV0gb25seSB3cml0ZXMgdGhlIHNsb3QgaWYgdGhlcmUgaXMgcm9vbSwgYW5kXG4gICByZXR1cm5zIFtmYWxzZV0gb3RoZXJ3aXNlLiAqKVxubGV0W0BpbmxpbmVdIGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gICgqIHdlIGtub3cgWzAgPD0gbGVuZ3RoXSAqKVxuICBpZiBsZW5ndGggPj0gQXJyYXkubGVuZ3RoIGFyciB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICAoKiB3ZSBrbm93IFswIDw9IGxlbmd0aCA8IEFycmF5Lmxlbmd0aCBhcnJdICopXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoICsgMTtcbiAgICBBcnJheS51bnNhZmVfc2V0IGFyciBsZW5ndGggZWxlbTtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYWRkX2xhc3QgYSB4ID1cbiAgbGV0IGVsZW0gPSBFbGVtIHt2ID0geH0gaW5cbiAgaWYgYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW0gdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hZGQgYSBlbGVtID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIDE7XG4gICAgICBpZiBub3QgKGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtKVxuICAgICAgdGhlbiBncm93X2FuZF9hZGQgYSBlbGVtXG4gICAgaW4gZ3Jvd19hbmRfYWRkIGEgZWxlbVxuICBlbmRcblxubGV0IHJlYyBhcHBlbmRfbGlzdCBhIGxpID1cbiAgbWF0Y2ggbGkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgeCA6OiB4cyAtPiBhZGRfbGFzdCBhIHg7IGFwcGVuZF9saXN0IGEgeHNcblxubGV0IGFwcGVuZF9pdGVyIGEgaXRlciBiID1cbiAgaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBiXG5cbmxldCBhcHBlbmRfc2VxIGEgc2VxID1cbiAgU2VxLml0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgc2VxXG5cbigqIGFwcGVuZF9hcnJheTogc2FtZSBbLi4uX2lmX3Jvb21dIGFuZCBsb29wIGxvZ2ljIGFzIFthZGRfbGFzdF0uICopXG5cbmxldCBhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIgPVxuICBsZXQge2FycjsgbGVuZ3RoID0gbGVuZ3RoX2F9ID0gYSBpblxuICBsZXQgbGVuZ3RoX2IgPSBBcnJheS5sZW5ndGggYiBpblxuICBpZiBsZW5ndGhfYSArIGxlbmd0aF9iID4gQXJyYXkubGVuZ3RoIGFyciB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsZW5ndGhfYSArIGxlbmd0aF9iO1xuICAgICgqIE5vdGU6IHdlIGludGVudGlvbmFsbHkgdXBkYXRlIHRoZSBsZW5ndGggKmJlZm9yZSogZmlsbGluZyB0aGVcbiAgICAgICBlbGVtZW50cy4gVGhpcyBcInJlc2VydmUgYmVmb3JlIGZpbGxcIiBhcHByb2FjaCBwcm92aWRlcyBiZXR0ZXJcbiAgICAgICBiZWhhdmlvciB0aGFuIFwiZmlsbCB0aGVuIG5vdGlmeVwiIGluIHByZXNlbmNlIG9mIHJlZW50cmFudFxuICAgICAgIG1vZGlmaWNhdGlvbnMgKHdoaWNoIG1heSBvY2N1ciBiZWxvdywgb24gYSBwb2xsIHBvaW50IGluIHRoZSBsb29wIG9yXG4gICAgICAgdGhlIFtFbGVtXSBhbGxvY2F0aW9uKTpcblxuICAgICAgIC0gSWYgc29tZSBjb2RlIGFzeW5jaHJvbm91c2x5IGFkZHMgbmV3IGVsZW1lbnRzIGFmdGVyIHRoaXNcbiAgICAgICAgIGxlbmd0aCB1cGRhdGUsIHRoZXkgd2lsbCBnbyBhZnRlciB0aGUgc3BhY2Ugd2UganVzdCByZXNlcnZlZCxcbiAgICAgICAgIGFuZCBpbiBwYXJ0aWN1bGFyIG5vIGFkZGl0aW9uIHdpbGwgYmUgbG9zdC4gSWYgaW5zdGVhZCB3ZVxuICAgICAgICAgdXBkYXRlZCB0aGUgbGVuZ3RoIGFmdGVyIHRoZSBsb29wLCBhbnkgYXN5bmNocm9ub3VzIGFkZGl0aW9uXG4gICAgICAgICBkdXJpbmcgdGhlIGxvb3AgY291bGQgYmUgZXJhc2VkIG9yIGVyYXNlIG9uZSBvZiBvdXIgYWRkaXRpb25zLFxuICAgICAgICAgc2lsZW50bHksIHdpdGhvdXQgd2FybmluZyB0aGUgdXNlci5cblxuICAgICAgIC0gSWYgc29tZSBjb2RlIGFzeW5jaHJvbm91c2x5IGl0ZXJhdGVzIG9uIHRoZSBkeW5hcnJheSwgb3JcbiAgICAgICAgIHJlbW92ZXMgZWxlbWVudHMsIG9yIG90aGVyd2lzZSB0cmllcyB0byBhY2Nlc3MgdGhlXG4gICAgICAgICByZXNlcnZlZC1idXQtbm90LXlldC1maWxsZWQgc3BhY2UsIGl0IHdpbGwgZ2V0IGEgY2xlYW4gXCJtaXNzaW5nXG4gICAgICAgICBlbGVtZW50XCIgZXJyb3IuIFRoaXMgaXMgd29yc2UgdGhhbiB3aXRoIHRoZSBmaWxsLXRoZW4tbm90aWZ5XG4gICAgICAgICBhcHByb2FjaCB3aGVyZSB0aGUgbmV3IGVsZW1lbnRzIHdvdWxkIG9ubHkgYmVjb21lIHZpc2libGVcbiAgICAgICAgICh0byBpdGVyYXRvcnMsIGZvciByZW1vdmFsLCBldGMuKSBhbGx0b2dldGhlciBhdCB0aGUgZW5kIG9mXG4gICAgICAgICBsb29wLlxuXG4gICAgICAgVG8gc3VtbWFyaXNlLCBcInJlc2VydmUgYmVmb3JlIGZpbGxcIiBpcyBiZXR0ZXIgb24gYWRkLWFkZCByYWNlcyxcbiAgICAgICBhbmQgXCJmaWxsIHRoZW4gbm90aWZ5XCIgaXMgYmV0dGVyIG9uIGFkZC1yZW1vdmUgb3IgYWRkLWl0ZXJhdGVcbiAgICAgICByYWNlcy4gQnV0IHRoZSBrZXkgZGlmZmVyZW5jZSBpcyB0aGUgZmFpbHVyZSBtb2RlOlxuICAgICAgIHJlc2VydmUtYmVmb3JlIGZhaWxzIG9uIGFkZC1yZW1vdmUgb3IgYWRkLWl0ZXJhdGUgcmFjZXMgd2l0aFxuICAgICAgIGEgY2xlYW4gZXJyb3IsIHdoaWxlIG5vdGlmeS1hZnRlciBmYWlscyBvbiBhZGQtYWRkIHJhY2VzIHdpdGhcbiAgICAgICBzaWxlbnRseSBkaXNhcHBlYXJpbmcgZGF0YS4gKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX2IgLSAxIGRvXG4gICAgICBsZXQgeCA9IEFycmF5LnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFyciAobGVuZ3RoX2EgKyBpKSAoRWxlbSB7diA9IHh9KVxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFwcGVuZF9hcnJheSBhIGIgPVxuICBpZiBhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIgdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hcHBlbmQgYSBiID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIChBcnJheS5sZW5ndGggYik7XG4gICAgICBpZiBub3QgKGFwcGVuZF9hcnJheV9pZl9yb29tIGEgYilcbiAgICAgIHRoZW4gZ3Jvd19hbmRfYXBwZW5kIGEgYlxuICAgIGluIGdyb3dfYW5kX2FwcGVuZCBhIGIgIGVuZFxuXG4oKiBhcHBlbmQ6IHNhbWUgWy4uLl9pZl9yb29tXSBhbmQgbG9vcCBsb2dpYyBhcyBbYWRkX2xhc3RdLFxuICAgc2FtZSByZXNlcnZlLWJlZm9yZS1maWxsIGxvZ2ljIGFzIFthcHBlbmRfYXJyYXldLiAqKVxuXG4oKiBJdCBpcyBhIHByb2dyYW1taW5nIGVycm9yIHRvIG11dGF0ZSB0aGUgbGVuZ3RoIG9mIFtiXSBkdXJpbmcgYSBjYWxsXG4gICB0byBbYXBwZW5kIGEgYl0uIFRvIGRldGVjdCB0aGlzIG1pc3Rha2Ugd2Uga2VlcCB0cmFjayBvZiB0aGUgbGVuZ3RoXG4gICBvZiBbYl0gdGhyb3VnaG91dCB0aGUgY29tcHV0YXRpb24gYW5kIGNoZWNrIGl0IHRoYXQgZG9lcyBub3RcbiAgIGNoYW5nZS5cbiopXG5sZXQgYXBwZW5kX2lmX3Jvb20gYSBiIH5sZW5ndGhfYiA9XG4gIGxldCB7YXJyID0gYXJyX2E7IGxlbmd0aCA9IGxlbmd0aF9hfSA9IGEgaW5cbiAgaWYgbGVuZ3RoX2EgKyBsZW5ndGhfYiA+IEFycmF5Lmxlbmd0aCBhcnJfYSB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsZW5ndGhfYSArIGxlbmd0aF9iO1xuICAgIGxldCBhcnJfYiA9IGIuYXJyIGluXG4gICAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aF9iIGFycl9iO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGhfYiAtIDEgZG9cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhcnJfYiB+aSB+bGVuZ3RoOmxlbmd0aF9iIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFycl9hIChsZW5ndGhfYSArIGkpIChFbGVtIHt2ID0geH0pXG4gICAgZG9uZTtcbiAgICBjaGVja19zYW1lX2xlbmd0aCBcImFwcGVuZFwiIGIgfmxlbmd0aDpsZW5ndGhfYjtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYXBwZW5kIGEgYiA9XG4gIGxldCBsZW5ndGhfYiA9IGxlbmd0aCBiIGluXG4gIGlmIGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IgdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hcHBlbmQgYSBiIH5sZW5ndGhfYiA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSBsZW5ndGhfYjtcbiAgICAgICgqIEVsaWRpbmcgdGhlIFtjaGVja19zYW1lX2xlbmd0aF0gY2FsbCBiZWxvdyB3b3VsZCBiZSB3cm9uZyBpblxuICAgICAgICAgdGhlIGNhc2Ugd2hlcmUgW2FdIGFuZCBbYl0gYXJlIGFsaWFzZXMgb2YgZWFjaCBvdGhlciwgd2VcbiAgICAgICAgIHdvdWxkIGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AgaW5zdGVhZCBvZiBmYWlsaW5nLlxuXG4gICAgICAgICBXZSBjb3VsZCBwdXNoIHRoZSBjYWxsIHRvIFthcHBlbmRfaWZfcm9vbV0gaXRzZWxmLCBidXQgd2VcbiAgICAgICAgIHByZWZlciB0byBrZWVwIGl0IGluIHRoZSBzbG93IHBhdGguICAqKVxuICAgICAgY2hlY2tfc2FtZV9sZW5ndGggXCJhcHBlbmRcIiBiIH5sZW5ndGg6bGVuZ3RoX2I7XG4gICAgICBpZiBub3QgKGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IpXG4gICAgICB0aGVuIGdyb3dfYW5kX2FwcGVuZCBhIGIgfmxlbmd0aF9iXG4gICAgaW4gZ3Jvd19hbmRfYXBwZW5kIGEgYiB+bGVuZ3RoX2JcbiAgZW5kXG5cblxuXG4oKiogezE6aXRlcmF0aW9uIEl0ZXJhdGlvbn0gKilcblxuKCogVGhlIGltcGxlbWVudGF0aW9uIGNob2ljZSB0aGF0IHdlIG1hZGUgZm9yIGl0ZXJhdG9ycyBpcyB0aGUgb25lXG4gICB0aGF0IG1heGltaXplcyBlZmZpY2llbmN5IGJ5IGF2b2lkaW5nIHJlcGVhdGVkIGJvdW5kIGNoZWNraW5nOiB3ZVxuICAgY2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgZHluYW1pYyBhcnJheSBvbmNlIGF0IHRoZSBiZWdpbm5pbmcsIGFuZFxuICAgdGhlbiBvbmx5IG9wZXJhdGUgb24gdGhhdCBwb3J0aW9uIG9mIHRoZSBkeW5hcnJheSwgaWdub3JpbmdcbiAgIGVsZW1lbnRzIGFkZGVkIGluIHRoZSBtZWFudGltZS5cblxuICAgVGhlIHNwZWNpZmljYXRpb24gc3RhdGVzIHRoYXQgaXQgaXMgYSBwcm9ncmFtbWluZyBlcnJvciB0byBtdXRhdGVcbiAgIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IGR1cmluZyBpdGVyYXRpb24uIFdlIGNoZWNrIGZvciB0aGlzIGFuZFxuICAgcmFpc2UgYW4gZXJyb3Igb24gc2l6ZSBjaGFuZ2UuXG4gICBOb3RlIHRoYXQgd2UgbWF5IHN0aWxsIG1pc3Mgc29tZSB0cmFuc2llbnQgc3RhdGUgY2hhbmdlcyB0aGF0IGNhbmNlbFxuICAgZWFjaCBvdGhlciBhbmQgbGVhdmUgdGhlIGxlbmd0aCB1bmNoYW5nZWQgYXQgdGhlIG5leHQgY2hlY2suXG4qKVxuXG5sZXQgaXRlcl8gZiBrIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgKCogW2NoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyXSBpcyB1c2VkIGZvciBtZW1vcnkgc2FmZXR5LCBpdFxuICAgICBndWFyYW50ZWVzIHRoYXQgdGhlIGJhY2tpbmcgYXJyYXkgaGFzIGNhcGFjaXR5IGF0IGxlYXN0IFtsZW5ndGhdLFxuICAgICBhbGxvd2luZyB1bnNhZmUgYXJyYXkgYWNjZXNzLlxuXG4gICAgIFtjaGVja19zYW1lX2xlbmd0aF0gaXMgdXNlZCBmb3IgY29ycmVjdG5lc3MsIGl0IGxldHMgdGhlIGZ1bmN0aW9uXG4gICAgIGZhaWwgbW9yZSBvZnRlbiBpZiB3ZSBkaXNjb3ZlciB0aGUgcHJvZ3JhbW1pbmcgZXJyb3Igb2YgbXV0YXRpbmdcbiAgICAgdGhlIGxlbmd0aCBkdXJpbmcgaXRlcmF0aW9uLlxuXG4gICAgIFdlIGNvdWxkLCBuYWl2ZWx5LCBjYWxsIFtjaGVja19zYW1lX2xlbmd0aF0gYXQgZWFjaCBpdGVyYXRpb24gb2ZcbiAgICAgdGhlIGxvb3AgKGJlZm9yZSBvciBhZnRlciwgb3IgYm90aCkuIEhvd2V2ZXIsIG5vdGljZSB0aGF0IHRoaXMgaXNcbiAgICAgbm90IG5lY2Vzc2FyeSB0byBkZXRlY3QgdGhlIHJlbW92YWwgb2YgZWxlbWVudHMgZnJvbSBbYV06IGlmXG4gICAgIGVsZW1lbnRzIGhhdmUgYmVlbiByZW1vdmVkIGJ5IHRoZSB0aW1lIHRoZSBbZm9yXSBsb29wIHJlYWNoZXNcbiAgICAgdGhlbSwgdGhlbiBbdW5zYWZlX2dldF0gd2lsbCBpdHNlbGYgZmFpbCB3aXRoIGFuIFtJbnZhbGlkX2FyZ3VtZW50XVxuICAgICBleGNlcHRpb24uIFdlIG9ubHkgbmVlZCB0byBkZXRlY3QgdGhlIGFkZGl0aW9uIG9mIG5ldyBlbGVtZW50cyB0b1xuICAgICBbYV0gZHVyaW5nIGl0ZXJhdGlvbiwgYW5kIGZvciB0aGlzIGl0IGlzIGVub3VnaCB0byBjYWxsXG4gICAgIFtjaGVja19zYW1lX2xlbmd0aF0gb25jZSBhdCB0aGUgZW5kLlxuXG4gICAgIENhbGxpbmcgW2NoZWNrX3NhbWVfbGVuZ3RoXSBtb3JlIG9mdGVuIGNvdWxkIGNhdGNoIG1vcmVcbiAgICAgcHJvZ3JhbW1pbmcgZXJyb3JzLCBidXQgdGhlIG9ubHkgZXJyb3JzIHRoYXQgd2UgbWlzcyB3aXRoIHRoaXNcbiAgICAgb3B0aW1pemF0aW9uIGFyZSB0aG9zZSB0aGF0IGtlZXAgdGhlIGFycmF5IHNpemUgY29uc3RhbnQgLS1cbiAgICAgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgdGhhdCBjYW5jZWwgZWFjaCBvdGhlci4gV2UgY29uc2lkZXIgdGhpc1xuICAgICBhbiBhY2NlcHRhYmxlIHRyYWRlb2ZmLlxuICAqKVxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBrICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKTtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggZiBhIH5sZW5ndGhcblxubGV0IGl0ZXIgayBhID1cbiAgaXRlcl8gXCJpdGVyXCIgayBhXG5cbmxldCBpdGVyaSBrIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgayBpICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKTtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJpdGVyaVwiIGEgfmxlbmd0aFxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBFbGVtIHt2ID0gZiAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCl9KTtcbiAgfSBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcIm1hcFwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVzID0ge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIEVsZW0ge3YgPSBmIGkgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpfSk7XG4gIH0gaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJtYXBpXCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IGZvbGRfbGVmdCBmIGFjYyBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICByIDo9IGYgIXIgdjtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb2xkX2xlZnRcIiBhIH5sZW5ndGg7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSBhY2MgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICByIDo9IGYgdiAhcjtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb2xkX3JpZ2h0XCIgYSB+bGVuZ3RoO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBsb29wIHAgYXJyIGkgbGVuZ3RoID1cbiAgICBpZiBpID0gbGVuZ3RoIHRoZW4gZmFsc2VcbiAgICBlbHNlXG4gICAgICBwICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICAgICAgfHwgbG9vcCBwIGFyciAoaSArIDEpIGxlbmd0aFxuICBpblxuICBsZXQgcmVzID0gbG9vcCBwIGFyciAwIGxlbmd0aCBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcImV4aXN0c1wiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBsb29wIHAgYXJyIGkgbGVuZ3RoID1cbiAgICBpZiBpID0gbGVuZ3RoIHRoZW4gdHJ1ZVxuICAgIGVsc2VcbiAgICAgIHAgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gICAgICAmJiBsb29wIHAgYXJyIChpICsgMSkgbGVuZ3RoXG4gIGluXG4gIGxldCByZXMgPSBsb29wIHAgYXJyIDAgbGVuZ3RoIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9yX2FsbFwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmaWx0ZXIgZiBhID1cbiAgbGV0IGIgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcl8gXCJmaWx0ZXJcIiAoZnVuIHggLT4gaWYgZiB4IHRoZW4gYWRkX2xhc3QgYiB4KSBhO1xuICBiXG5cbmxldCBmaWx0ZXJfbWFwIGYgYSA9XG4gIGxldCBiID0gY3JlYXRlICgpIGluXG4gIGl0ZXJfIFwiZmlsdGVyX21hcFwiIChmdW4geCAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT4gYWRkX2xhc3QgYiB5XG4gICkgYTtcbiAgYlxuXG5cbigqKiB7MTpjb252ZXJzaW9ucyBDb252ZXJzaW9ucyB0byBvdGhlciBkYXRhIHN0cnVjdHVyZXN9ICopXG5cbigqIFRoZSBlYWdlciBbdG9fKl0gY29udmVyc2lvbiBmdW5jdGlvbnMgYmVoYXZlIHNpbWlsYXJseSB0byBpdGVyYXRvcnNcbiAgIGluIHByZXNlbmNlIG9mIHVwZGF0ZXMgZHVyaW5nIGNvbXB1dGF0aW9uLiBUaGUgWypfcmVlbnRyYW50XVxuICAgZnVuY3Rpb25zIG9iZXkgdGhlaXIgbW9yZSBwZXJtaXNzaXZlIHNwZWNpZmljYXRpb24sIHdoaWNoIHRvbGVyYXRlc1xuICAgYW55IGNvbmN1cnJlbnQgdXBkYXRlLiAqKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggYSBpblxuICB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPiBFbGVtIHt2ID0gQXJyYXkudW5zYWZlX2dldCBhIGl9KTtcbiAgfVxuXG5sZXQgdG9fYXJyYXkgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgIHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fYXJyYXlcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgb2ZfbGlzdCBsaSA9XG4gIGxldCBhID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBsaTtcbiAgYVxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggOjogIWxcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19saXN0XCIgYSB+bGVuZ3RoO1xuICAhbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCBpbml0ID0gY3JlYXRlKCkgaW5cbiAgYXBwZW5kX3NlcSBpbml0IHNlcTtcbiAgaW5pdFxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBjaGVja19zYW1lX2xlbmd0aCBcInRvX3NlcVwiIGEgfmxlbmd0aDtcbiAgICBpZiBpID49IGxlbmd0aCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgKyAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcV9yZWVudHJhbnQgYSA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBpZiBpID49IGxlbmd0aCBhIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSArIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxX3JldiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19zZXFfcmV2XCIgYSB+bGVuZ3RoO1xuICAgIGlmIGkgPCAwIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSAtIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggKGxlbmd0aCAtIDEpXG5cbmxldCB0b19zZXFfcmV2X3JlZW50cmFudCBhID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGlmIGkgPCAwIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgaWYgaSA+PSBsZW5ndGggYSB0aGVuXG4gICAgICAoKiBJZiBzb21lIGVsZW1lbnRzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBtZWFudGltZSwgd2Ugc2tpcFxuICAgICAgICAgdGhvc2UgZWxlbWVudHMgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5ldyBlbmQgb2YgdGhlIGFycmF5LiAqKVxuICAgICAgYXV4IChsZW5ndGggYSAtIDEpICgpXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSBnZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpIC0gMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAobGVuZ3RoIGEgLSAxKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLnN0YXJ0c193aXRoIH5wcmVmaXg6XCItXCIgcyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbigqIERpc2FibGUgd2FybmluZyAzNzogdmFsdWVzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcnVudGltZSAqKVxudHlwZVtAd2FybmluZyBcIi0zN1wiXSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgIDogc3RyaW5nO1xuICAgICAgc3RhcnRfbG51bSA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gICAgICBlbmRfb2Zmc2V0IDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2Ygc3RhcnRfbG51bSAqKVxuICAgICAgZW5kX2xudW0gICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBlbmRfbG51bSBsaW5lICopXG4gICAgICBpc19pbmxpbmUgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgIGlmIGwuc3RhcnRfbG51bSA9IGwuZW5kX2xudW0gdGhlblxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiICVkXCIgbC5zdGFydF9sbnVtXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcInMgJWQtJWRcIiBsLnN0YXJ0X2xudW0gbC5lbmRfbG51bVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSVzLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsaW5lcyBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2wgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwuc3RhcnRfbG51bTtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9vZmZzZXQ7XG4gICAgICBlbmRfbGluZSAgICA9IGwuZW5kX2xudW07XG4gICAgICBlbmRfY29sICAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIHZlcmJvc2UgOiBpbnQ7XG4gIG1heF9vdmVyaGVhZCA6IGludDtcbiAgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcblxubGV0IGV2ZW50bG9nX3BhdXNlICgpID0gKClcbmxldCBldmVudGxvZ19yZXN1bWUgKCkgPSAoKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgQXRvbWljLnRcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmIEF0b21pYy5nZXQgYXJlYy5hY3RpdmUgdGhlbiBiZWdpblxuICAgIGxldCBmaW5hbGx5ICgpID0gZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjIGluXG4gICAgRnVuLnByb3RlY3QgfmZpbmFsbHkgYXJlYy5mXG4gIGVuZFxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBBdG9taWMuc2V0IGEgZmFsc2VcblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IEF0b21pYy5tYWtlIHRydWU7IGYgPSBmIH0gaW5cbiAgRG9tYWluLmF0X2V4aXQgKGZ1biAoKSAtPiBkZWxldGVfYWxhcm0gYXJlYy5hY3RpdmUpO1xuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIHRcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuXG4gICAgZXh0ZXJuYWwgZGlzY2FyZCA6IHQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX2Rpc2NhcmRcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgPSBcImNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcIlxuXG5sZXQgaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuIFNvbWUgKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBbQHRhaWxfbW9kX2NvbnNdIHJlYyBpbnB1dF9saW5lcyBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBsaW5lIC0+IGxpbmUgOjogaW5wdXRfbGluZXMgaWNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gW11cblxubGV0IHJlYyBmb2xkX2xpbmVzIGYgYWNjdSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBsaW5lIC0+IGZvbGRfbGluZXMgZiAoZiBhY2N1IGxpbmUpIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IGFjY3VcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cblxuZXh0ZXJuYWwgaXNfYmluYXJ5X21vZGUgOiBpbl9jaGFubmVsIC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYmluYXJ5X21vZGVcIlxuXG5leHRlcm5hbCBpc2F0dHkgOiB0IC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzYXR0eVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9iaWdhcnJheSA6XG4gIHQgLT4gXyBCaWdhcnJheS5BcnJheTEudCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XCJcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBvdXRwdXRfYmlnYXJyYXkgb2MgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9iaWdhcnJheSBvYyBidWYgb2ZzIGxlblxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcblxuZXh0ZXJuYWwgaXNfYmluYXJ5X21vZGUgOiBvdXRfY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgc2V0X2J1ZmZlcmVkIDogdCAtPiBib29sIC0+IHVuaXQgPSBcImNhbWxfbWxfc2V0X2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNfYnVmZmVyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc2F0dHkgOiB0IC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzYXR0eVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFV0aWxpdHkgZnVuY3Rpb25zICopXG5cbmxldCBoZXhfb2Zfc3RyaW5nIGQgPVxuICBsZXQgY2hhcl9oZXggbiA9XG4gICAgQ2hhci5jaHIgKGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgKyBuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIENoYXIuY29kZSAnYScgKyBuIC0gMTApIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGQgaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAobGVuICogMikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgc3RyaW5nX29mX2hleCBzID1cbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJEaWdlc3Qub2ZfaGV4XCIgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBTdHJpbmcuaW5pdCAoU3RyaW5nLmxlbmd0aCBzIC8gMikgKGZ1biBpIC0+IENoYXIuY2hyIChieXRlICgyICogaSkpKVxuXG4oKiBHZW5lcmljIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdCA9IHN0cmluZ1xuICB2YWwgaGFzaF9sZW5ndGggOiBpbnRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgYnl0ZXMgOiBieXRlcyAtPiB0XG4gIHZhbCBzdWJzdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gIHZhbCBzdWJieXRlcyA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgY2hhbm5lbCA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHRcbiAgdmFsIGZpbGUgOiBzdHJpbmcgLT4gdFxuICB2YWwgb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gdCAtPiB1bml0XG4gIHZhbCBpbnB1dCA6IGluX2NoYW5uZWwgLT4gdFxuICB2YWwgdG9faGV4IDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX2hleCA6IHN0cmluZyAtPiB0XG5lbmRcblxuKCogQkxBS0UyIGhhc2hpbmcsIHBhcmFtZXRlcml6ZWQgYnkgaGFzaCBzaXplICopXG5cbm1vZHVsZSBCTEFLRTIgKFg6IHNpZyB2YWwgaGFzaF9sZW5ndGggOiBpbnQgZW5kKSA6IFMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgaGFzaF9sZW5ndGggPVxuICAgIGlmIFguaGFzaF9sZW5ndGggPCAxIHx8IFguaGFzaF9sZW5ndGggPiA2NFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuQkxBS0UyOiB3cm9uZyBoYXNoIHNpemVcIjtcbiAgICBYLmhhc2hfbGVuZ3RoXG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuICB0eXBlIHN0YXRlXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2dlbjogaW50IC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiY2FtbF9ibGFrZTJfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdXBkYXRlOiBzdGF0ZSAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2JsYWtlMl91cGRhdGVcIlxuICBleHRlcm5hbCBmaW5hbDogc3RhdGUgLT4gaW50IC0+IHQgPSBcImNhbWxfYmxha2UyX2ZpbmFsXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogaW50IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGFrZTJfc3RyaW5nXCJcblxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX2dlbiBoYXNoX2xlbmd0aCBcIlwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPVxuICAgIHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG4gIGxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCI7XG4gICAgdW5zYWZlX3N0cmluZyBoYXNoX2xlbmd0aCBcIlwiIHN0ciBvZnMgbGVuXG5cbiAgbGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9XG4gICAgc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxuICBsZXQgY2hhbm5lbCBpYyB0b3JlYWQgPVxuICAgIGxldCBidWZfc2l6ZSA9IDQwOTYgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0IGN0eCA9IGNyZWF0ZSAoKSBpblxuICAgIGlmIHRvcmVhZCA8IDAgdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBkb19yZWFkICgpID1cbiAgICAgICAgbGV0IG4gPSBJbl9jaGFubmVsLmlucHV0IGljIGJ1ZiAwIGJ1Zl9zaXplIGluXG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoXG4gICAgICAgIGVsc2UgKHVwZGF0ZSBjdHggKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwIG47IGRvX3JlYWQgKCkpXG4gICAgICBpbiBkb19yZWFkICgpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCB0b3JlYWQgPVxuICAgICAgICBpZiB0b3JlYWQgPSAwIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgKEludC5taW4gYnVmX3NpemUgdG9yZWFkKSBpblxuICAgICAgICAgIGlmIG4gPSAwXG4gICAgICAgICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIHVwZGF0ZSBjdHggKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwIG47XG4gICAgICAgICAgICBkb19yZWFkICh0b3JlYWQgLSBuKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGluIGRvX3JlYWQgdG9yZWFkXG4gICAgZW5kXG5cbiAgbGV0IGZpbGUgZmlsZW5hbWUgPVxuICAgIEluX2NoYW5uZWwud2l0aF9vcGVuX2JpbiBmaWxlbmFtZSAoZnVuIGljIC0+IGNoYW5uZWwgaWMgKC0xKSlcblxuICBsZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID0gb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG4gIGxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIGhhc2hfbGVuZ3RoXG5cbiAgbGV0IHRvX2hleCBkID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gaGFzaF9sZW5ndGggdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgICBoZXhfb2Zfc3RyaW5nIGRcblxuICBsZXQgb2ZfaGV4IHMgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiBoYXNoX2xlbmd0aCAqIDIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5vZl9oZXhcIjtcbiAgICBzdHJpbmdfb2ZfaGV4IHNcblxuZW5kXG5cbm1vZHVsZSBCTEFLRTEyOCA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gMTYgZW5kKVxubW9kdWxlIEJMQUtFMjU2ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAzMiBlbmQpXG5tb2R1bGUgQkxBS0U1MTIgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDY0IGVuZClcblxuKCogTUQ1IGhhc2hpbmcgKilcblxubW9kdWxlIE1ENSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IHN0cmluZ1xuXG4gIGxldCBoYXNoX2xlbmd0aCA9IDE2XG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuICBleHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuICBleHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxuICBsZXQgc3RyaW5nIHN0ciA9XG4gICAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxuICBsZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gICAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbiAgbGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbiAgbGV0IGZpbGUgZmlsZW5hbWUgPVxuICAgIEluX2NoYW5uZWwud2l0aF9vcGVuX2JpbiBmaWxlbmFtZSAoZnVuIGljIC0+IGNoYW5uZWwgaWMgKC0xKSlcblxuICBsZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID0gb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG4gIGxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbiAgbGV0IHRvX2hleCBkID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgICBoZXhfb2Zfc3RyaW5nIGRcblxuICBsZXQgb2ZfaGV4IHMgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gICAgc3RyaW5nX29mX2hleCBzXG5cbmVuZFxuXG4oKiBEZWZhdWx0IGV4cG9ydGVkIGltcGxlbWVudGF0aW9uIGlzIE1ENSAqKVxuXG5pbmNsdWRlIE1ENVxuXG5sZXQgZnJvbV9oZXggPSBvZl9oZXhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQxNl9lbHQgPSBGbG9hdDE2X2VsdFxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxuKCogS2VlcCB0aGUgb3JkZXIgb2YgdGhlc2UgY29uc3RydWN0b3JzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kXG4gICBlbnVtZXJhdGlvbiBpbiBiaWdhcnJheS5oICopXG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gIHwgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEZsb2F0MTYgOiAoZmxvYXQsIGZsb2F0MTZfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxubGV0IGZsb2F0MTYgPSBGbG9hdDE2XG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDE2IC0+IDJcbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIGxldCBkbGVuID0gQXJyYXkubGVuZ3RoIGRpbXMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zOyBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXggPVxuICAgIFwibHhtMTpcIlxuICAgICgqIFwibHhtXCIgZGVub3RlcyB0aGUgYWxnb3JpdGhtIGN1cnJlbnRseSBpbiB1c2UsIGFuZCAnMScgaXNcbiAgICAgICBhIHZlcnNpb24gbnVtYmVyLiBXZSBzaG91bGQgdXBkYXRlIHRoaXMgcHJlZml4IGlmIHdlIGNoYW5nZVxuICAgICAgIHRoZSBSYW5kb20gYWxnb3JpdGhtIG9yIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc28gdGhhdCB1c2Vyc1xuICAgICAgIGdldCBhIGNsZWFuIGVycm9yIGluc3RlYWQgb2YgYmVsaWV2aW5nIHRoYXQgdGhleSBmYWl0aGZ1bGx5XG4gICAgICAgcmVwcm9kdWNlIHRoZWlyIHByZXZpb3VzIHN0YXRlIGFuZCBpbiBmYWN0IGdldCBhIGRpZmZlcmVudFxuICAgICAgIHN0cmVhbS5cblxuICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25zdHJhaW50IHRvIGtlZXAgdGhlIHNhbWVcbiAgICAgICBcIjxuYW1lPjx2ZXI+OjxkYXRhPlwiIGZvcm1hdCBvciBtZXNzYWdlIHNpemUgaW4gZnV0dXJlIHZlcnNpb25zLFxuICAgICAgIHdlIGNvdWxkIGNoYW5nZSB0aGUgZm9ybWF0IGNvbXBsZXRlbHkgaWYgd2Ugd2FudGVkIGFzIGxvbmdcbiAgICAgICBhcyB0aGVyZSBpcyBubyBjb25mdXNpb24gcG9zc2libGUgd2l0aCB0aGUgcHJldmlvdXMgZm9ybWF0cy4gKilcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuID1cbiAgICBTdHJpbmcubGVuZ3RoIHNlcmlhbGl6YXRpb25fcHJlZml4XG5cbiAgbGV0IHRvX2JpbmFyeV9zdHJpbmcgcyA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChwcmVmbGVuICsgNCAqIDgpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcHJlZml4IDAgYnVmIDAgcHJlZmxlbjtcbiAgICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIGkgKiA4KSAoQXJyYXkxLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuXG4gIGxldCBvZl9iaW5hcnlfc3RyaW5nIGJ1ZiA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGJ1ZiA8PiBwcmVmbGVuICsgNCAqIDhcbiAgICAgICB8fCBub3QgKFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4IGJ1ZilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJSYW5kb20uU3RhdGUub2ZfYmluYXJ5X3N0cmluZzogZXhwZWN0ZWQgYSBmb3JtYXQgXFxcbiAgICAgICAgICBjb21wYXRpYmxlIHdpdGggT0NhbWwgXCIgXiBTeXMub2NhbWxfdmVyc2lvbik7XG4gICAgbGV0IGkxID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAwICogOCkgaW5cbiAgICBsZXQgaTIgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDEgKiA4KSBpblxuICAgIGxldCBpMyA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMiAqIDgpIGluXG4gICAgbGV0IGk0ID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAzICogOCkgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IG1pbl9pbnQzMSA9IC0weDQwMDBfMDAwMFxuICAgICAgKCogPSAtMnteMzB9LCB3aGljaCBpcyBbbWluX2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICBsZXQgbWF4X2ludDMxID0gMHgzRkZGX0ZGRkZcbiAgICAgICgqID0gIDJ7XjMwfS0xLCB3aGljaCBpcyBbbWF4X2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICAoKiBhdm9pZCBpbnRlZ2VyIGxpdGVyYWxzIGZvciB0aGVzZSwgMzItYml0IE9DYW1sIHdvdWxkIHJlamVjdCB0aGVtOiAqKVxuICBsZXQgbWluX2ludDMyID0gLSgxIGxzbCAzMSlcbiAgICAgICgqID0gLTB4ODAwMF8wMDAwIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuICBsZXQgbWF4X2ludDMyID0gKDEgbHNsIDMxKSAtIDFcbiAgICAgICgqID0gIDB4N0ZGRl9GRkZGIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDJeMzAgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtuXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICBbbWFza10gbXVzdCBiZSBvZiB0aGUgZm9ybSBbMnteaX0tMV1cbiAgICAgYW5kIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW25dLiAgTGFyZ2VyIHZhbHVlcyBvZiBbbWFza10gbWFrZSB0aGUgZnVuY3Rpb25cbiAgICAgcnVuIGZhc3RlciAoZmV3ZXIgc2FtcGxlcyBhcmUgcmVqZWN0ZWQpLiAgU21hbGxlciB2YWx1ZXMgb2YgW21hc2tdXG4gICAgIGFyZSB1c2FibGUgb24gYSB3aWRlciByYW5nZSBvZiBPQ2FtbCBpbXBsZW1lbnRhdGlvbnMuICAqKVxuICBsZXQgcmVjIGludF9hdXggcyBuIG1hc2sgPVxuICAgICgqIFdlIHN0YXJ0IGJ5IGRyYXdpbmcgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpbiB0aGUgWyBbMCwgbWFza10gXSByYW5nZSAqKVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWFzayBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgICgqIEZvciB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcmVzdWx0IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgW25dXG4gICAgICogZXhjbHVkZWQsIHRoZSByYW5kb20gbnVtYmVyIFtyXSBtdXN0IGhhdmUgYmVlbiBkcmF3biB1bmlmb3JtbHkgaW5cbiAgICAgKiBhbiBpbnRlcnZhbCB3aG9zZSBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBbbl0uIFRvIGFjaGlldmUgdGhpcyxcbiAgICAgKiB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5nIG9uIHRoZSBncmVhdGVzdCBpbnRlcnZhbCBbIFswLCBrKm4tMV0gXVxuICAgICAqIHRoYXQgZml0cyBpbiBbIFswLCBtYXNrXSBdLiAgVGhhdCBpcywgd2UgcmVqZWN0IHRoZVxuICAgICAqIHNhbXBsZSBpZiBpdCBmYWxscyBvdXRzaWRlIG9mIHRoaXMgaW50ZXJ2YWwsIGFuZCBkcmF3IGFnYWluLlxuICAgICAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBiZWxvdyBkb2VzLCB3aGlsZSBjYXJlZnVseSBhdm9pZGluZ1xuICAgICAqIG92ZXJmbG93cyBhbmQgc3BhcmluZyBhIGRpdmlzaW9uIFttYXNrIC8gbl0uICopXG4gICAgaWYgciAtIHYgPiBtYXNrIC0gbiArIDEgdGhlbiBpbnRfYXV4IHMgbiBtYXNrIGVsc2UgdlxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFRoZSBib3VuZCBtdXN0IGZpdCBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLlxuICAgICBUaGlzIGZ1bmN0aW9uIHlpZWxkcyB0aGUgc2FtZSBvdXRwdXQgcmVnYXJkbGVzcyBvZiB0aGUgaW50ZWdlciBzaXplLiAqKVxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gbWF4X2ludDMxIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRfYXV4IHMgYm91bmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAqKVxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgKCogV2hlbiB0aGUgYm91bmQgZml0cyBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLCB3ZSB1c2UgdGhlIHNhbWUgbWFza1xuICAgICAgIGFzIGluIGZ1bmN0aW9uIFtpbnRdIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zXG4gICAgICAgc3VwcG9ydGVkIGJ5IE9DYW1sICgzMi1iaXQgT0NhbWwsIDY0LWJpdCBPQ2FtbCwgYW5kIEphdmFTY3JpcHQpLlxuICAgICAgIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIFttYXhfaW50MzJdXG4gICAgICAgYXMgdGhlIG1hc2sgc28gYXMgdG8geWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgd2hlcmVcbiAgICAgICBbU3lzLmludF9zaXplID49IDMyXSAoaS5lLiBKYXZhU2NyaXB0IGFuZCA2NC1iaXQgT0NhbWwpLiAqKVxuICAgIGVsc2VcbiAgICAgIGludF9hdXggcyBib3VuZFxuICAgICAgICAoaWYgYm91bmQgPD0gbWF4X2ludDMxIHRoZW4gbWF4X2ludDMxXG4gICAgICAgICBlbHNlIGlmIGJvdW5kIDw9IG1heF9pbnQzMiB0aGVuIG1heF9pbnQzMlxuICAgICAgICAgZWxzZSBtYXhfaW50KVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgVGhlIFtuYml0c10gcGFyYW1ldGVyIGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIHNpZ25lZCBpbnRlZ2Vyc1xuICAgICB3ZSBkcmF3IGZyb20gW3NdLlxuICAgICBXZSBtdXN0IGhhdmUgWy0ye15uYml0cyAtIDF9IDw9IG1pbiA8PSBtYXggPCAye15uYml0cyAtIDF9XS5cbiAgICAgTW9yZW92ZXIsIGZvciB0aGUgaXRlcmF0aW9uIHRvIGNvbnZlcmdlIHF1aWNrbHksIHRoZSBpbnRlcnZhbFxuICAgICBbW21pbiwgbWF4XV0gc2hvdWxkIGhhdmUgd2lkdGggYXQgbGVhc3QgWzJ7Xm5iaXRzIC0gMX1dLlxuICAgICBBcyB0aGUgd2lkdGggYXBwcm9hY2hlcyB0aGlzIGxvd2VyIGxpbWl0LCB0aGUgYXZlcmFnZSBudW1iZXIgb2ZcbiAgICAgZHJhd3MgYXBwcm9hY2hlcyAyLCB3aXRoIGEgcXVpdGUgaGlnaCBzdGFuZGFyZCBkZXZpYXRpb24gKDIgKyBlcHNpbG9uKS4gKilcbiAgbGV0IHJlYyBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzID1cbiAgICBsZXQgZHJvcCA9IFN5cy5pbnRfc2l6ZSAtIG5iaXRzIGluXG4gICAgKCogVGhlIGJpdHNoaWZ0cyByZXBsaWNhdGUgdGhlIFtuYml0c10tdGggYml0IChzaWduIGJpdCkgdG8gaGlnaGVyIGJpdHM6ICopXG4gICAgbGV0IHIgPSAoKEludDY0LnRvX2ludCAobmV4dCBzKSkgbHNsIGRyb3ApIGFzciBkcm9wIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyBlbHNlIHJcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFttYXNrXSBpcyBhcyBkZXNjcmliZWQgZm9yIFtpbnRfYXV4XS5cbiAgICAgW25iaXRzXSBpcyBhcyBkZXNjcmliZWQgZm9yIFtpbnRfaW5fbGFyZ2VfcmFuZ2VdLiAqKVxuICBsZXQgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzayB+bmJpdHMgPVxuICAgIGxldCBzcGFuID0gbWF4IC0gbWluICsgMSBpblxuICAgIGlmIHNwYW4gPD0gbWFzayAoKiBbc3Bhbl0gaXMgc21hbGwgZW5vdWdoICopXG4gICAgJiYgc3BhbiA+IDAgICAgICgqIG5vIG92ZXJmbG93IG9jY3VycmVkIHdoZW4gY29tcHV0aW5nIFtzcGFuXSAqKVxuICAgIHRoZW5cbiAgICAgICgqIEp1c3QgZHJhdyBhIG51bWJlciBpbiBbWzAsIHNwYW4pXSBhbmQgc2hpZnQgaXQgYnkgW21pbl0uICopXG4gICAgICBtaW4gKyBpbnRfYXV4IHMgc3BhbiBtYXNrXG4gICAgZWxzZVxuICAgICAgKCogU3BhbiB0b28gbGFyZ2UsIHVzZSB0aGUgYWx0ZXJuYXRpdmUgZHJhd2luZyBtZXRob2QuICopXG4gICAgICBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBXZSBtdXN0IGhhdmUgW21pbiA8PSBtYXhdLiAqKVxuICBsZXQgaW50X2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50X2luX3JhbmdlXCI7XG4gICAgKCogV2hlbiBib3RoIGJvdW5kcyBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHBhcmFtZXRlcnNcbiAgICAgICBbbWFza10gYW5kIFtuYml0c10gYXBwcm9wcmlhdGUgZm9yIDMxLWJpdCBpbnRlZ2Vycywgc28gYXMgdG9cbiAgICAgICB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgT0NhbWwuXG4gICAgICAgV2hlbiBib3RoIGJvdW5kcyBmaXQgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHBhcmFtZXRlcnNcbiAgICAgICBbbWFza10gYW5kIFtuYml0c10gYXBwcm9wcmlhdGUgZm9yIDMyLWJpdCBpbnRlZ2Vycywgc28gYXMgdG9cbiAgICAgICB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gSmF2YVNjcmlwdCBhbmQgb24gNjQtYml0IE9DYW1sLiAqKVxuICAgIGlmIG1pbiA+PSBtaW5faW50MzEgJiYgbWF4IDw9IG1heF9pbnQzMSB0aGVuXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQzMSB+bmJpdHM6MzFcbiAgICBlbHNlIGlmIG1pbiA+PSBtaW5faW50MzIgJiYgbWF4IDw9IG1heF9pbnQzMiB0aGVuXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQzMiB+bmJpdHM6MzJcbiAgICBlbHNlXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQgfm5iaXRzOlN5cy5pbnRfc2l6ZVxuXG4gICgqIFJldHVybiAzMiByYW5kb20gYml0cyBhcyBhbiBbaW50MzJdICopXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgSW50NjQudG9faW50MzIgKG5leHQgcylcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzMzIgcykgMSBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9hdXhdLiAqKVxuICAgIGlmIEludDMyLihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxbClcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBbaW50MzJdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IHJlYyBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggPVxuICAgIGxldCByID0gSW50NjQudG9faW50MzIgKG5leHQgcykgaW5cbiAgICBpZiByIDwgbWluIHx8IHIgPiBtYXggdGhlbiBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggZWxzZSByXG5cbiAgbGV0IGludDMyX2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJfaW5fcmFuZ2VcIlxuICAgIGVsc2VcbiAgICAgIGxldCBzcGFuID0gSW50MzIuc3VjYyAoSW50MzIuc3ViIG1heCBtaW4pIGluXG4gICAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfaW5fcmFuZ2VfYXV4XS4gKilcbiAgICAgIGlmIHNwYW4gPD0gSW50MzIuemVybyB0aGVuXG4gICAgICAgIGludDMyX2luX3JhbmdlX2F1eCBzIH5taW4gfm1heFxuICAgICAgZWxzZVxuICAgICAgICBJbnQzMi5hZGQgbWluIChpbnQzMmF1eCBzIHNwYW4pXG5cbiAgKCogUmV0dXJuIDY0IHJhbmRvbSBiaXRzIGFzIGFuIFtpbnQ2NF0gKilcbiAgbGV0IGJpdHM2NCBzID1cbiAgICBuZXh0IHNcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDY0YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzNjQgcykgMSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9hdXhdLiAqKVxuICAgIGlmIEludDY0LihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxTClcbiAgICB0aGVuIGludDY0YXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQ2NCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwTFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRcIlxuICAgIGVsc2UgaW50NjRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBbaW50NjRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IHJlYyBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggPVxuICAgIGxldCByID0gbmV4dCBzIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQ2NF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0X2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDY0LnN1Y2MgKEludDY0LnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDY0Lnplcm8gdGhlblxuICAgICAgICBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50NjQuYWRkIG1pbiAoaW50NjRhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiAzMiBvciA2NCByYW5kb20gYml0cyBhcyBhIFtuYXRpdmVpbnRdICopXG4gIGxldCBuYXRpdmViaXRzID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGJpdHMzMiBzKVxuICAgIGVsc2UgZnVuIHMgLT4gSW50NjQudG9fbmF0aXZlaW50IChiaXRzNjQgcylcblxuICAoKiBSZXR1cm4gYSBbbmF0aXZlaW50XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50X2luX3JhbmdlID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzJfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihOYXRpdmVpbnQudG9faW50MzIgbWluKSB+bWF4OihOYXRpdmVpbnQudG9faW50MzIgbWF4KSlcbiAgICBlbHNlIGZ1biBzIH5taW4gfm1heCAtPlxuICAgICAgSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NF9pbl9yYW5nZSBzXG4gICAgICAgIH5taW46KEludDY0Lm9mX25hdGl2ZWludCBtaW4pIH5tYXg6KEludDY0Lm9mX25hdGl2ZWludCBtYXgpKVxuXG4gICgqIFJldHVybiBhIGZsb2F0IDAgPCB4IDwgMSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlXG4gICAgIG11bHRpcGxlcyBvZiAyXi01MyAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHMgPVxuICAgIGxldCBiID0gbmV4dCBzIGluXG4gICAgbGV0IG4gPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIGIgMTEgaW5cbiAgICBpZiBuIDw+IDBMIHRoZW4gSW50NjQudG9fZmxvYXQgbiAqLiAweDEucC01MyBlbHNlIHJhd2Zsb2F0IHNcblxuICAoKiBSZXR1cm4gYSBmbG9hdCBiZXR3ZWVuIDAgYW5kIFtib3VuZF0gKilcbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgKCogUmV0dXJuIGEgcmFuZG9tIEJvb2xlYW4gKilcbiAgbGV0IGJvb2wgcyA9IG5leHQgcyA8IDBMXG5cbiAgKCogU3BsaXQgYSBuZXcgUFJORyBvZmYgdGhlIGdpdmVuIFBSTkcgKilcbiAgbGV0IHNwbGl0IHMgPVxuICAgIGxldCBpMSA9IGJpdHM2NCBzIGluIGxldCBpMiA9IGJpdHM2NCBzIGluXG4gICAgbGV0IGkzID0gYml0czY0IHMgaW4gbGV0IGk0ID0gYml0czY0IHMgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuZW5kXG5cbmxldCBta19kZWZhdWx0ICgpID1cbiAgKCogVGhpcyBpcyB0aGUgc3RhdGUgb2J0YWluZWQgd2l0aCBbU3RhdGUubWFrZSBbfCAzMTQxNTkyNjUgfF1dLiAqKVxuICBTdGF0ZS5tayAoLTYxOTY4NzQyODk1Njc3MDUwOTdMKVxuICAgICAgICAgICA1ODY1NzMyNDk4MzM3MTMxODlMXG4gICAgICAgICAgICgtODU5MTI2ODgwMzg2NTA0MzQwN0wpXG4gICAgICAgICAgIDYzODg2MTM1OTU4NDk3NzIwNDRMXG5cbmxldCByYW5kb21fa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpTdGF0ZS5zcGxpdCBta19kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50X2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGludDMyX2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludDMyX2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgbmF0aXZlaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLm5hdGl2ZWludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQ2NF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQ2NF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBiaXRzMzIgKCkgPSBTdGF0ZS5iaXRzMzIgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czY0ICgpID0gU3RhdGUuYml0czY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IG5hdGl2ZWJpdHMgKCkgPSBTdGF0ZS5uYXRpdmViaXRzIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5yZWluaXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogU3BsaXR0aW5nICopXG5cbmxldCBzcGxpdCAoKSA9IFN0YXRlLnNwbGl0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gdGhlIGxvYWQgZmFjdG9yIGJlY29tZXMgdG9vIGhpZ2guICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IEF0b21pYy5tYWtlIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gQXRvbWljLnNldCByYW5kb21pemVkIHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gQXRvbWljLmdldCByYW5kb21pemVkXG5cbmxldCBwcm5nX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KSBlbHNlIDBcbiAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHNlZWRlZF9oYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbWVtX2luX2J1Y2tldCBrZXkgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCByZWMgbWVtX2luX2J1Y2tldCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IGtleSBuZXh0XG5cbmxldCBtZW0gaCBrZXkgPVxuICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSlcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXJcbiAqICAgIC0gTGlua1xuICogICAgLSBEYXRhICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyICgqIENBTUxfRVBIRV9GSVJTVF9LRVkgaW4gd2Vhay5oICopXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2FjYyAtPiAnYWNjKSAtPiB0IC0+ICdhY2MgLT4gJ2FjY1xuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuICAoKiBHZW5lcmFsIGF1eGlsaWFyeSBmdW5jdGlvbiBmb3Igc2VhcmNoaW5nIGZvciBhIHBhcnRpY3VsYXIgdmFsdWVcbiAgICogaW4gYSBoYXNoLXNldCwgYW5kIGFjdGluZyBhY2NvcmRpbmcgdG8gd2hldGhlciBvciBub3QgaXQncyBmb3VuZCAqKVxuXG4gIGxldCBmaW5kX2F1eCB0IGQgZm91bmQgbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgYXMgb3B0IHdoZW4gSC5lcXVhbCB2IGQgLT4gZm91bmQgYnVja2V0IGkgb3B0IHZcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICBsZXQgZmluZF9vcHQgdCBkID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgIG8gX3YgLT4gbylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IE5vbmUpXG5cbiAgbGV0IG1lcmdlIHQgZCAgICA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pIF9vICB2IC0+IHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAgaCAgaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpOyBkKVxuXG4gIGxldCBmaW5kIHQgZCAgICAgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSBfbyAgdiAtPiB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCByZW1vdmUgdCBkICAgPSBmaW5kX2F1eCB0IGQgKGZ1biAgYiAgaSBfbyBfdiAtPiBzZXQgYiBpIE5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiAoKSlcblxuICBsZXQgbWVtIHQgZCAgICAgID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgX28gX3YgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IGZhbHNlKVxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBlbmRfd2l0aF9uZXdsaW5lIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5sZXQgcHBfcHJpbnRfbm90aGluZyBfc3RhdGUgKCkgPSAoKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZTp0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgaWYgbWFyZ2luID49IHBwX2luZmluaXR5IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA+PSBwcF9pbmZpbml0eVwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cbigqIEluaXRpYWxpc2UgZG9tYWluIGxvY2FsIHN0YXRlICopXG5tb2R1bGUgRExTID0gRG9tYWluLkRMU1xuXG5sZXQgc3RkYnVmX2tleSA9IERMUy5uZXdfa2V5IHBwX21ha2VfYnVmZmVyXG5sZXQgXyA9IERMUy5zZXQgc3RkYnVmX2tleSBzdGRidWZcblxubGV0IHN0cl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBmb3JtYXR0ZXJfb2ZfYnVmZmVyIChETFMuZ2V0IHN0ZGJ1Zl9rZXkpKVxubGV0IF8gPSBETFMuc2V0IHN0cl9mb3JtYXR0ZXJfa2V5IHN0cl9mb3JtYXR0ZXJcblxubGV0IGJ1ZmZlcmVkX291dF9zdHJpbmcga2V5IHN0ciBvZnMgbGVuID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgKERvbWFpbi5ETFMuZ2V0IGtleSkgc3RyIG9mcyBsZW5cblxubGV0IGJ1ZmZlcmVkX291dF9mbHVzaCBvYyBrZXkgKCkgPVxuICBsZXQgYnVmID0gRG9tYWluLkRMUy5nZXQga2V5IGluXG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0ciAwIGxlbiA7XG4gIFN0ZGxpYi5mbHVzaCBvYztcbiAgQnVmZmVyLmNsZWFyIGJ1ZlxuXG5sZXQgc3RkX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxubGV0IGVycl9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcblxubGV0IHN0ZF9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IHN0ZF9mb3JtYXR0ZXJfa2V5IHN0ZF9mb3JtYXR0ZXJcblxubGV0IGVycl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IGVycl9mb3JtYXR0ZXJfa2V5IGVycl9mb3JtYXR0ZXJcblxubGV0IGdldF9zdGRfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleVxubGV0IGdldF9lcnJfZm9ybWF0dGVyICgpID0gRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdHJfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdGRidWYgKCkgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXlcblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiB+ZW5kX3dpdGhfbmV3bGluZTpmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPVxuICBsZXQgc3RkYnVmID0gRExTLmdldCBzdGRidWZfa2V5IGluXG4gIGxldCBzdHJfZm9ybWF0dGVyID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleSBpblxuICBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbmxldCBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IG91dHB1dCcgPSBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgaW5cbiAgICBsZXQgZmx1c2gnICgpID1cbiAgICAgIG91dHB1dCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgMCAoQnVmZmVyLmxlbmd0aCBidWYpO1xuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGZsdXNoICgpXG4gICAgaW5cbiAgICBtYWtlX2Zvcm1hdHRlciBvdXRwdXQnIGZsdXNoJylcblxubGV0IHN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCB2ID0gcHBfb3Blbl9oYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl92Ym94IHYgPSBwcF9vcGVuX3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2h2Ym94IHYgPSBwcF9vcGVuX2h2Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ob3Zib3ggdiA9IHBwX29wZW5faG92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ib3ggdiA9IHBwX29wZW5fYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2VfYm94IHYgPSBwcF9jbG9zZV9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3N0YWcgdiA9IHBwX29wZW5fc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3N0YWcgdiA9IHBwX2Nsb3NlX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9hcyB2IHcgPSBwcF9wcmludF9hcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgcHJpbnRfc3RyaW5nIHYgPSBwcF9wcmludF9zdHJpbmcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ieXRlcyB2ID0gcHBfcHJpbnRfYnl0ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pbnQgdiA9IHBwX3ByaW50X2ludCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2Zsb2F0IHYgPSBwcF9wcmludF9mbG9hdCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2NoYXIgdiA9IHBwX3ByaW50X2NoYXIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ib29sIHYgPSBwcF9wcmludF9ib29sIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnJlYWsgdiB3ID0gcHBfcHJpbnRfYnJlYWsgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X2N1dCB2ID0gcHBfcHJpbnRfY3V0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3BhY2UgdiA9IHBwX3ByaW50X3NwYWNlIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZm9yY2VfbmV3bGluZSB2ID0gcHBfZm9yY2VfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2ZsdXNoIHYgPSBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X25ld2xpbmUgdiA9IHBwX3ByaW50X25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pZl9uZXdsaW5lIHYgPSBwcF9wcmludF9pZl9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBvcGVuX3Rib3ggdiA9IHBwX29wZW5fdGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3Rib3ggdiA9IHBwX2Nsb3NlX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YnJlYWsgdiB3ID0gcHBfcHJpbnRfdGJyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcblxuYW5kIHNldF90YWIgdiA9IHBwX3NldF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YWIgdiA9IHBwX3ByaW50X3RhYiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21hcmdpbiB2ID0gcHBfc2V0X21hcmdpbiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJnaW4gdiA9IHBwX2dldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXhfaW5kZW50IHYgPSBwcF9zZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfaW5kZW50IHYgPSBwcF9nZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2dlb21ldHJ5IH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBwcF9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBzYWZlX3NldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBnZXRfZ2VvbWV0cnkgdiA9IHBwX2dldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHVwZGF0ZV9nZW9tZXRyeSB2ID0gcHBfdXBkYXRlX2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2JveGVzIHYgPSBwcF9zZXRfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21heF9ib3hlcyB2ID0gcHBfZ2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG92ZXJfbWF4X2JveGVzIHYgPSBwcF9vdmVyX21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX3NldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX2dldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiB3ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfc2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfbWFya190YWdzIHYgPVxuICBwcF9zZXRfbWFya190YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21hcmtfdGFncyB2ID1cbiAgcHBfZ2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF90YWdzIHYgPVxuICBwcF9zZXRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG5sZXQgcHBfcHJpbnRfaXRlciA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgaXRlciBwcF92IHBwZiB2ID1cbiAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgbGV0IHBwX3YgdiA9XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW4gaXNfZmlyc3QgOj0gZmFsc2UgZWxzZSBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHZcbiAgaW5cbiAgaXRlciBwcF92IHZcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHYgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgTGlzdC5pdGVyIHBwX3YgcHBmIHZcblxuKCogVG8gZm9ybWF0IGFuIGFycmF5ICopXG5sZXQgcHBfcHJpbnRfYXJyYXkgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHYgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgQXJyYXkuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgU2VxLml0ZXIgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9zdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcblxubGV0IHByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBlcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpICgpO1xuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbmxldCAoKSA9IERvbWFpbi5iZWZvcmVfZmlyc3Rfc3Bhd24gKGZ1biAoKSAtPlxuICBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpO1xuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5fTtcblxuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5fTtcbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaW5dIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyX29wdCA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCBvcHRpb24sICdkKSBmb3JtYXQ2IC0+ICdjXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxubGV0IGtzY2FuZl9nZW4gaWIgZWYgYWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycyB3aXRoXG4gICAgfCBleGNlcHRpb24gKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUgYXMgZXhjKSAtPlxuICAgICAgICBlZiBpYiBleGNcbiAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHwgYXJncyAtPlxuICAgICAgICBhZiAoYXBwbHkgZiBhcmdzKVxuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbmxldCBrc2NhbmYgaWIgZWYgZm10ID1cbiAga3NjYW5mX2dlbiBpYiBlZiAoZnVuIHggLT4geCkgZm10XG5cbmxldCBrc2NhbmZfb3B0IGliIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgKGZ1biBfIF8gLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeCkgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IGJzY2FuZl9vcHQgaWIgZm10ID0ga3NjYW5mX29wdCBpYiBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc3NjYW5mX29wdCBzIGZtdCA9IGtzY2FuZl9vcHQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGluIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzY2FuZl9vcHQgZm10ID0ga3NjYW5mX29wdCBTY2FubmluZy5zdGRpbiBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChPYmoubWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBPYmoubWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gT2JqLm1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gT2JqLm1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gT2JqLm1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IE9iai5tYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gT2JqLm1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBPYmoubWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCBPYmoucmVwciBpbml0IHxdO1xuICAgICBPYmoubWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiBPYmoucmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIE9iai5tYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgT2JqLm1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IE9iai5tYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoID0gSC5zZWVkZWRfaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsxX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrMV9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5IGsgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5IGUgd2l0aFxuICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5IGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleSBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkxIGtleTIgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkxIGVwaCBrZXkxO1xuICAgIHNldF9rZXkyIGVwaCBrZXkyO1xuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBrZXkxKTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleTEga2V5MiA9XG4gICAgbWF0Y2ggZ2V0X2tleTEgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkxIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGdldF9rZXkyIGVwaCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkyIC0+IGdldF9kYXRhIGVwaFxuICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuc2VlZGVkX2hhc2ggc2VlZCBrMSArIEgyLnNlZWRlZF9oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5zZWVkZWRfaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrbl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0ga25fbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgayBlID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBsZW5ndGggZSA8PiBBcnJheS5sZW5ndGggayB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggayAtIDEgZG9cbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGUgaSB3aXRoXG4gICAgICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsuKGkpIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCBFeGl0IC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuZXhpc3RzIChmdW5jdGlvbiAnXFxcIicgfCAnJScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGYgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcIlxcXCJcIjsgZjsgXCJcXFwiXCJdXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmdfa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByYW5kb21fc3RhdGUgPSBEb21haW4uRExTLmdldCBwcm5nX2tleSBpblxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRvbV9zdGF0ZSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6RnVuLmlkIChmdW4gKCkgLT4gdGVtcF9kaXJfbmFtZSlcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBEb21haW4uRExTLnNldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDIwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IHRlbXBfZGlyID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpXG4gICAgPyhwZXJtcyA9IDBvNzAwKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIFN5cy5ta2RpciBuYW1lIHBlcm1zO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPSBGbG9hdC5oeXBvdCB4LnJlIHguaW1cblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gLi5cbmV4dGVybmFsIHBlcmZvcm0gOiAnYSB0IC0+ICdhID0gXCIlcGVyZm9ybVwiXG5cbnR5cGUgZXhuICs9IFVuaGFuZGxlZDogJ2EgdCAtPiBleG5cbmV4Y2VwdGlvbiBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbmxldCAoKSA9XG4gIGxldCBwcmludGVyID0gZnVuY3Rpb25cbiAgICB8IFVuaGFuZGxlZCB4IC0+XG4gICAgICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIlN0ZGxpYi5FZmZlY3QuVW5oYW5kbGVkKCVzKVwiXG4gICAgICAgICAgICAoUHJpbnRleGMuc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBAQCBPYmoucmVwciB4KVxuICAgICAgICBpblxuICAgICAgICBTb21lIG1zZ1xuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgcHJpbnRlclxuXG4oKiBSZWdpc3RlciB0aGUgZXhjZXB0aW9ucyBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiBhY2Nlc3MgaXQgKilcbnR5cGUgXyB0ICs9IFNob3VsZF9ub3Rfc2VlX3RoaXNfXyA6IHVuaXQgdFxubGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJFZmZlY3QuVW5oYW5kbGVkXCJcbiAgICAgICAgICAoVW5oYW5kbGVkIFNob3VsZF9ub3Rfc2VlX3RoaXNfXylcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIlxuICAgICAgICAgIENvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcblxudHlwZSAoJ2EsICdiKSBzdGFjayBbQEBpbW1lZGlhdGVdXG50eXBlIGxhc3RfZmliZXIgW0BAaW1tZWRpYXRlXVxuXG5leHRlcm5hbCByZXN1bWUgOlxuICAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXN1bWVcIlxuZXh0ZXJuYWwgcnVuc3RhY2sgOiAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+ICdiID0gXCIlcnVuc3RhY2tcIlxuXG5tb2R1bGUgRGVlcCA9IHN0cnVjdFxuXG4gIHR5cGUgKCdhLCdiKSBjb250aW51YXRpb25cblxuICBleHRlcm5hbCB0YWtlX2NvbnRfbm9leGMgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gKCdhLCAnYikgc3RhY2sgPVxuICAgIFwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcbiAgZXh0ZXJuYWwgY29udF9sYXN0X2ZpYmVyIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgPSBcIiVmaWVsZDFcIlxuICBleHRlcm5hbCBjb250X3NldF9sYXN0X2ZpYmVyIDpcbiAgICAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiB1bml0ID0gXCIlc2V0ZmllbGQxXCJcblxuICBsZXQgY29udGludWUgayB2ID1cbiAgICByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIHggLT4geCkgdiAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgbGV0IGRpc2NvbnRpbnVlIGsgZSA9XG4gICAgcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+IHJhaXNlIGUpIGUgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoX2JhY2t0cmFjZSBrIGUgYnQgPVxuICAgIHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KVxuICAgICAgZSAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgdHlwZSAoJ2EsJ2IpIGhhbmRsZXIgPVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyB0IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBtYXRjaF93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJ1bnN0YWNrIHMgY29tcCBhcmdcblxuICB0eXBlICdhIGVmZmVjdF9oYW5kbGVyID1cbiAgICB7IGVmZmM6ICdiLiAnYiB0IC0+ICgoJ2IsJ2EpIGNvbnRpbnVhdGlvbiAtPiAnYSkgb3B0aW9uIH1cblxuICBsZXQgdHJ5X3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMnIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIChmdW4geCAtPiB4KSAoZnVuIGUgLT4gcmFpc2UgZSkgZWZmYycgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcblxubW9kdWxlIFNoYWxsb3cgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG5cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcblxuICBleHRlcm5hbCBjb250X2xhc3RfZmliZXIgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciA9IFwiJWZpZWxkMVwiXG4gIGV4dGVybmFsIGNvbnRfc2V0X2xhc3RfZmliZXIgOlxuICAgICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDFcIlxuXG4gIGxldCBmaWJlciA6IHR5cGUgYSBiLiAoYSAtPiBiKSAtPiAoYSwgYikgY29udGludWF0aW9uID0gZnVuIGYgLT5cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3QgdHlwZSBfIHQgKz0gSW5pdGlhbF9zZXR1cF9fIDogYSB0IGVuZCBpblxuICAgIGxldCBleGNlcHRpb24gRSBvZiAoYSxiKSBjb250aW51YXRpb24gaW5cbiAgICBsZXQgZicgKCkgPSBmIChwZXJmb3JtIE0uSW5pdGlhbF9zZXR1cF9fKSBpblxuICAgIGxldCBlcnJvciBfID0gZmFpbHdpdGggXCJpbXBvc3NpYmxlXCIgaW5cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGVmZiB3aXRoXG4gICAgICB8IE0uSW5pdGlhbF9zZXR1cF9fIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgcmFpc2Vfbm90cmFjZSAoRSBrKVxuICAgICAgfCBfIC0+IGVycm9yICgpXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGVycm9yIGVycm9yIGVmZmMgaW5cbiAgICBtYXRjaCBydW5zdGFjayBzIGYnICgpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFIGsgLT4ga1xuICAgIHwgXyAtPiBlcnJvciAoKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdhKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgdXBkYXRlX2hhbmRsZXIgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+XG4gICAgKCdiIC0+ICdjKSAtPlxuICAgIChleG4gLT4gJ2MpIC0+XG4gICAgKCdkIHQgLT4gKCdkLCdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYykgLT5cbiAgICAoJ2EsJ2MpIHN0YWNrID0gXCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBjb250aW51ZV9nZW4gayByZXN1bWVfZnVuIHYgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBsYXN0X2ZpYmVyID0gY29udF9sYXN0X2ZpYmVyIGsgaW5cbiAgICBsZXQgc3RhY2sgPSB1cGRhdGVfaGFuZGxlciBrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJlc3VtZSBzdGFjayByZXN1bWVfZnVuIHYgbGFzdF9maWJlclxuXG4gIGxldCBjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIHggLT4geCkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGggayB2IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiByYWlzZSBlKSB2IGhhbmRsZXJcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayB2IGJ0IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KSB2IGhhbmRsZXJcblxuICBleHRlcm5hbCBnZXRfY2FsbHN0YWNrIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPiBpbnQgLT4gUHJpbnRleGMucmF3X2JhY2t0cmFjZSA9XG4gICAgXCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXCJcbmVuZFxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiBibGl0X3N0cmluZyBkb2Vzbid0IGV4aXN0IGluIFtTdGRMYWJlbHMuQnl0ZXNdLi4uICAqKVxubGV0IGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG47O1xuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBGb3JtYXRcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5cbmxldCBzZXhwX29mX3QgdCA9IHRcbmxldCB0X29mX3NleHAgdCA9IHRcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IHJlcyA9IGNvbXBhcmUgeCB5IGluXG4gICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgeHMgeXNcblxuYW5kIGNvbXBhcmUgYSBiID1cbiAgaWYgYSA9PSBiXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEF0b20gYSwgQXRvbSBiIC0+IFN0cmluZy5jb21wYXJlIGEgYlxuICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgIHwgTGlzdCBhLCBMaXN0IGIgLT4gY29tcGFyZV9saXN0IGEgYilcbjs7XG5cbmxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zIG9mIHRcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIHRcblxubW9kdWxlIFByaW50aW5nID0gc3RydWN0XG4gICgqIERlZmF1bHQgaW5kZW50YXRpb24gbGV2ZWwgZm9yIGh1bWFuLXJlYWRhYmxlIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IGRlZmF1bHRfaW5kZW50ID0gcmVmIDFcblxuICAoKiBFc2NhcGluZyBvZiBzdHJpbmdzIHVzZWQgYXMgYXRvbXMgaW4gUy1leHByZXNzaW9ucyAqKVxuXG4gIGxldCBtdXN0X2VzY2FwZSBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxlbiA9IDBcbiAgICB8fFxuICAgIGxldCByZWMgbG9vcCBzdHIgaXggPVxuICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgfCAnXCInIHwgJygnIHwgJyknIHwgJzsnIHwgJ1xcXFwnIC0+IHRydWVcbiAgICAgIHwgJ3wnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJyMnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJyMnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJ3wnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJ1xcMDAwJyAuLiAnXFwwMzInIHwgJ1xcMTI3JyAuLiAnXFwyNTUnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBpeCA+IDAgJiYgbG9vcCBzdHIgKGl4IC0gMSlcbiAgICBpblxuICAgIGxvb3Agc3RyIChsZW4gLSAxKVxuICA7O1xuXG4gIGxldCBlc2NhcGVkIHMgPVxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgblxuICAgICAgOj0gIW5cbiAgICAgICAgICtcbiAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgICB8IF8gLT4gNFxuICAgIGRvbmU7XG4gICAgaWYgIW4gPSBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBzJyA9IEJ5dGVzLmNyZWF0ZSAhbiBpblxuICAgICAgbiA6PSAwO1xuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICAgICB8ICcgJyAuLiAnficgYXMgYyAtPiBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICBsZXQgYSA9IENoYXIuY29kZSBjIGluXG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAgbW9kIDEwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIG1vZCAxMCkpKSk7XG4gICAgICAgIGluY3IgblxuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcycpXG4gIDs7XG5cbiAgbGV0IGVzY19zdHIgc3RyID1cbiAgICBsZXQgZXN0ciA9IGVzY2FwZWQgc3RyIGluXG4gICAgbGV0IGVsZW4gPSBTdHJpbmcubGVuZ3RoIGVzdHIgaW5cbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChlbGVuICsgMikgaW5cbiAgICBieXRlc19ibGl0X3N0cmluZyB+c3JjOmVzdHIgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczoxIH5sZW46ZWxlbjtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAwICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgKGVsZW4gKyAxKSAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIDs7XG5cbiAgbGV0IGluZGV4X29mX25ld2xpbmUgc3RyIHN0YXJ0ID0gU3RyaW5nLmluZGV4X2Zyb21fb3B0IHN0ciBzdGFydCAnXFxuJ1xuXG4gIGxldCBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBlbmRfcG9zX29wdCA9XG4gICAgbGV0IGVuZF9wb3MgPVxuICAgICAgbWF0Y2ggZW5kX3Bvc19vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgICB8IFNvbWUgZW5kX3BvcyAtPiBlbmRfcG9zXG4gICAgaW5cbiAgICBTdHJpbmcuc3ViIHN0ciB+cG9zOmluZGV4IH5sZW46KGVuZF9wb3MgLSBpbmRleClcbiAgOztcblxuICBsZXQgaXNfb25lX2xpbmUgc3RyID1cbiAgICBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBpbmRleCAtPiBpbmRleCArIDEgPSBTdHJpbmcubGVuZ3RoIHN0clxuICA7O1xuXG4gIGxldCBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyID1cbiAgICBpZiBub3QgKG11c3RfZXNjYXBlIHN0cilcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyXG4gICAgZWxzZSBpZiBpc19vbmVfbGluZSBzdHJcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY19zdHIgc3RyKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGluZGV4ID1cbiAgICAgICAgbGV0IG5leHRfbmV3bGluZSA9IGluZGV4X29mX25ld2xpbmUgc3RyIGluZGV4IGluXG4gICAgICAgIGxldCBuZXh0X2xpbmUgPSBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBuZXh0X25ld2xpbmUgaW5cbiAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjYXBlZCBuZXh0X2xpbmUpO1xuICAgICAgICBtYXRjaCBuZXh0X25ld2xpbmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5ld2xpbmVfaW5kZXggLT5cbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXFwiO1xuICAgICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpO1xuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcblwiO1xuICAgICAgICAgIGxvb3AgKG5ld2xpbmVfaW5kZXggKyAxKVxuICAgICAgaW5cbiAgICAgIHBwX29wZW5fYm94IHBwZiAwO1xuICAgICAgKCogdGhlIGxlYWRpbmcgc3BhY2UgaXMgdG8gbGluZSB1cCB0aGUgbGluZXMgKilcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXFxcIlwiO1xuICAgICAgbG9vcCAwO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXCJcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKCkpXG4gIDs7XG5cbiAgbGV0IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgPSBpZiBtdXN0X2VzY2FwZSBzdHIgdGhlbiBlc2Nfc3RyIHN0ciBlbHNlIHN0clxuXG4gICgqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZvcm1hdHRlcnMgKilcblxuICBsZXQgcmVjIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9vcGVuX2JveCBwcGYgaW5kZW50O1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBMaXN0IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiXG5cbiAgYW5kIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBwcF9wcmludF9zcGFjZSBwcGYgKCk7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIDs7XG5cbiAgbGV0IHJlYyBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPlxuICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXCI7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIHN0cic7XG4gICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHQ7XG4gICAgICBmYWxzZVxuICAgIHwgTGlzdCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCI7XG4gICAgICBmYWxzZVxuXG4gIGFuZCBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0XG4gICAgfCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiXG4gIDs7XG5cbiAgbGV0IHBwX2h1bSBwcGYgc2V4cCA9IHBwX2h1bV9pbmRlbnQgIWRlZmF1bHRfaW5kZW50IHBwZiBzZXhwXG4gIGxldCBwcF9tYWNoIHBwZiBzZXhwID0gaWdub3JlIChwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBzZXhwKVxuICBsZXQgcHAgPSBwcF9tYWNoXG5cbiAgKCogU2V4cCBzaXplICopXG5cbiAgbGV0IHJlYyBzaXplX2xvb3AgKCh2LCBjKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHYgKyAxLCBjICsgU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB8IExpc3QgbHN0IC0+IExpc3QuZm9sZF9sZWZ0IGxzdCB+aW5pdDphY2MgfmY6c2l6ZV9sb29wXG4gIDs7XG5cbiAgbGV0IHNpemUgc2V4cCA9IHNpemVfbG9vcCAoMCwgMCkgc2V4cFxuXG4gICgqIEJ1ZmZlciBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19idWZmZXJfaHVtIH5idWYgPyhpbmRlbnQgPSAhZGVmYXVsdF9pbmRlbnQpIHNleHAgPVxuICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYUA/XCIgKHBwX2h1bV9pbmRlbnQgaW5kZW50KSBzZXhwXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlcl9tYWNoIH5idWYgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlciA9IHRvX2J1ZmZlcl9tYWNoXG5cbiAgbGV0IHRvX2J1ZmZlcl9nZW4gfmJ1ZiB+YWRkX2NoYXIgfmFkZF9zdHJpbmcgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBhZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBhZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IGFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gICgqIFRoZSBtYXhpbXVtIHNpemUgb2YgYSB0aGluZyBvbiB0aGUgbWlub3IgaGVhcCBpcyAyNTYgd29yZHMuXG4gICAgIFByZXZpb3VzbHksIHRoaXMgc2l6ZSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyIGhlcmUgd2FzIDQwOTYgYnl0ZXMsIHdoaWNoXG4gICAgIGNhdXNlZCB0aGUgQnVmZmVyIHRvIGJlIGFsbG9jYXRlZCBvbiB0aGUgKm1ham9yKiBoZWFwIGV2ZXJ5IHRpbWUuXG5cbiAgICAgQWNjb3JkaW5nIHRvIGEgc2ltcGxlIGJlbmNobWFyayBieSBSb24sIHdlIGNhbiBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvclxuICAgICBzbWFsbCBzLWV4cHJlc3Npb25zIGJ5IGEgZmFjdG9yIG9mIH40IGlmIHdlIG9ubHkgYWxsb2NhdGUgMTAyNCBieXRlc1xuICAgICAoMTI4IHdvcmRzICsgc29tZSBzbWFsbCBvdmVyaGVhZCkgd29ydGggb2YgYnVmZmVyIGluaXRpYWxseS4gIEFuZCBvbmVcbiAgICAgY2FuIGFyZ3VlIHRoYXQgaWYgaXQncyBmcmVlIHRvIGFsbG9jYXRlIHN0cmluZ3Mgc21hbGxlciB0aGFuIDI1NiB3b3JkcyxcbiAgICAgbGFyZ2Ugcy1leHByZXNzaW9ucyByZXF1aXJpbmcgbGFyZ2VyIGV4cGVuc2l2ZSBidWZmZXJzIHdvbid0IG5vdGljZVxuICAgICB0aGUgZXh0cmEgdHdvIGRvdWJsaW5ncyBmcm9tIDEwMjQgYnl0ZXMgdG8gMjA0OCBhbmQgNDA5Ni4gQW5kIGVzcGVjaWFsbHlcbiAgICAgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFwcGxpY2F0aW9ucyB0byBhbHdheXMgcGFzcyBpbiBhIGxhcmdlciBidWZmZXIgdG9cbiAgICAgdXNlLiAqKVxuICBsZXQgYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSAxMDI0XG5cbiAgKCogU3RyaW5nIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gP2luZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0clxuICAgICAgd2hlbiBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIF8gLT4gZmFsc2UgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX2h1bSA/aW5kZW50IHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX21hY2ggPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfbWFjaFxuZW5kXG5cbmluY2x1ZGUgUHJpbnRpbmdcblxubGV0IG9mX2Zsb2F0X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5sZXQgb2ZfaW50X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUHJpbnRpbmdcbmVuZFxuXG5sZXQgbWVzc2FnZSBuYW1lIGZpZWxkcyA9XG4gIGxldCByZWMgY29udl9maWVsZHMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChmbmFtZSwgZnNleHApIDo6IHJlc3QgLT5cbiAgICAgIChtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgfCBcIlwiIC0+IGZzZXhwIDo6IGNvbnZfZmllbGRzIHJlc3RcbiAgICAgICB8IF8gLT4gTGlzdCBbIEF0b20gZm5hbWU7IGZzZXhwIF0gOjogY29udl9maWVsZHMgcmVzdClcbiAgaW5cbiAgTGlzdCAoQXRvbSBuYW1lIDo6IGNvbnZfZmllbGRzIGZpZWxkcylcbjs7XG4iLCIoKiogUmVwcmVzZW50YXRpb24gb2YgUy1leHByZXNzaW9uIGdyYW1tYXJzICopXG5cbigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgcmVwcmVzZW50YXRpb24gZm9yIHMtZXhwcmVzc2lvbiBncmFtbWFycy4gVXNpbmcgcHB4X3NleHBfY29udlxuICAgIGFuZCBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gcHJvZHVjZXMgYSBncmFtbWFyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXJpdmVkXG4gICAgW29mX3NleHBdIGZvciBhIGdpdmVuIHR5cGUuXG5cbiAgICBBcyB3aXRoIG90aGVyIGRlcml2ZWQgZGVmaW5pdGlvbnMsIHBvbHltb3JwaGljIHR5cGVzIGRlcml2ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYVxuICAgIGdyYW1tYXIgZm9yIGVhY2ggdHlwZSBhcmd1bWVudCBhbmQgcHJvZHVjZXMgYSBncmFtbWFyIGZvciB0aGUgbW9ub21vcnBoaXplZCB0eXBlLlxuXG4gICAgTW9ub21vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZ3JhbW1hciBkaXJlY3RseS4gVG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cyxcbiAgICBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gd3JhcHMgZ3JhbW1hcnMgaW4gdGhlIFtMYXp5XSBjb25zdHJ1Y3RvciBhcyBuZWVkZWQuXG5cbiAgICBUaGlzIHR5cGUgbWF5IGNoYW5nZSBvdmVyIHRpbWUgYXMgb3VyIG5lZWRzIGZvciBleHByZXNzaXZlIGdyYW1tYXJzIGNoYW5nZS4gV2Ugd2lsbFxuICAgIGF0dGVtcHQgdG8gbWFrZSBjaGFuZ2VzIGJhY2t3YXJkLWNvbXBhdGlibGUsIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSByZWFzb25hYmxlIHVwZ3JhZGVcbiAgICBwYXRoLiAqKVxuXG5bQEBAd2FybmluZyBcIi0zMFwiXSAoKiBhbGxvdyBkdXBsaWNhdGUgZmllbGQgbmFtZXMgKilcblxuKCoqIEdyYW1tYXIgb2YgYSBzZXhwLiAqKVxudHlwZSBncmFtbWFyID1cbiAgfCBBbnkgb2Ygc3RyaW5nICgqKiBhY2NlcHRzIGFueSBzZXhwOyBzdHJpbmcgaXMgYSB0eXBlIG5hbWUgZm9yIGh1bWFuIHJlYWRhYmlsaXR5ICopXG4gIHwgQm9vbCAoKiogYWNjZXB0cyB0aGUgYXRvbXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiLCBtb2R1bG8gY2FwaXRhbGl6YXRpb24gKilcbiAgfCBDaGFyICgqKiBhY2NlcHRzIGFueSBzaW5nbGUtY2hhcmFjdGVyIGF0b20gKilcbiAgfCBJbnRlZ2VyICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGludGVnZXIgc3ludGF4LCByZWdhcmRsZXNzIG9mIGJpdCB3aWR0aCAqKVxuICB8IEZsb2F0ICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGZsb2F0IHN5bnRheCAqKVxuICB8IFN0cmluZyAoKiogYWNjZXB0cyBhbnkgYXRvbSAqKVxuICB8IE9wdGlvbiBvZiBncmFtbWFyICgqKiBhY2NlcHRzIGFuIG9wdGlvbiwgYm90aCBbTm9uZV0gdnMgW1NvbWUgX10gYW5kIFsoKV0gdnMgWyhfKV0uICopXG4gIHwgTGlzdCBvZiBsaXN0X2dyYW1tYXIgKCoqIGFjY2VwdHMgYSBsaXN0ICopXG4gIHwgVmFyaWFudCBvZiB2YXJpYW50ICgqKiBhY2NlcHRzIGNsYXVzZXMga2V5ZWQgYnkgYSBsZWFkaW5nIG9yIHNvbGUgYXRvbSAqKVxuICB8IFVuaW9uIG9mIGdyYW1tYXIgbGlzdCAoKiogYWNjZXB0cyBhIHNleHAgaWYgYW55IG9mIHRoZSBsaXN0ZWQgZ3JhbW1hcnMgYWNjZXB0cyBpdCAqKVxuICB8IFRhZ2dlZCBvZiBncmFtbWFyIHdpdGhfdGFnXG4gICgqKiBhbm5vdGF0ZXMgYSBncmFtbWFyIHdpdGggYSBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIgKilcbiAgfCBUeXZhciBvZiBzdHJpbmdcbiAgKCoqIE5hbWUgb2YgYSB0eXBlIHZhcmlhYmxlLCBlLmcuIFtUeXZhciBcImFcIl0gZm9yIFsnYV0uIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHRoZSBib2R5IG9mXG4gICAgICB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbZGVmbl0gZGVmaW5lcyBhIGNvcnJlc3BvbmRpbmcgdHlwZSB2YXJpYWJsZS4gKilcbiAgfCBUeWNvbiBvZiBzdHJpbmcgKiBncmFtbWFyIGxpc3QgKiBkZWZuIGxpc3RcbiAgKCoqIFR5cGUgY29uc3RydWN0b3IgYXBwbGllZCB0byBhcmd1bWVudHMsIGFuZCBpdHMgZGVmaW5pdGlvbi5cblxuICAgICAgRm9yIGV4YW1wbGUsIHdyaXRpbmcgW1R5Y29uIChcInRyZWVcIiwgWyBJbnRlZ2VyIF0sIGRlZm5zKV0gcmVwcmVzZW50cyBbaW50IHRyZWVdLCBmb3JcbiAgICAgIHdoYXRldmVyIFt0cmVlXSBpcyBkZWZpbmVkIGFzIGluIFtkZWZuc10uIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBbdHJlZV0gYXMgYSBiaW5hcnlcbiAgICAgIHRyZWUgd2l0aCB0aGUgcGFyYW1ldGVyIHR5cGUgc3RvcmVkIGF0IHRoZSBsZWF2ZXMuXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBkZWZucyA9XG4gICAgICAgICAgWyB7IHR5Y29uID0gXCJ0cmVlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFJlY3Vyc2l2ZSAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiTGVhZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChSZWN1cnNpdmUgKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibm9kZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IExpc3QgKE1hbnkgKFJlY3Vyc2l2ZSBcInRyZWVcIiwgW1R5dmFyIFwiYVwiXSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJsZWFmXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gW1R5dmFyIFwiYVwiXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgOztcbiAgICAgIF19XG5cbiAgICAgIFRvIGlsbHVzdHJhdGUgdGhlIG1lYW5pbmcgb2YgW1R5Y29uXSB3aXRoIHJlc3BlY3QgdG8gW2RlZm5zXSwgYW5kIHRvIGRlbW9uc3RyYXRlIG9uZVxuICAgICAgd2F5IHRvIGFjY2VzcyB0aGVtLCBpdCBpcyBlcXVpdmFsZW50IHRvIGV4cGFuZCB0aGUgZGVmaW5pdGlvbiBvZiBcInRyZWVcIiBvbmUgbGV2ZWxcbiAgICAgIGFuZCBtb3ZlIHRoZSBbZGVmbnNdIHRvIGVuY2xvc2VkIHJlY3Vyc2l2ZSByZWZlcmVuY2VzOlxuXG4gICAgICB7W1xuICAgICAgICBUeWNvbiAoXCJ0cmVlXCIsIFsgSW50ZWdlciBdLCBkZWZucylcbiAgICAgICAgLS0+XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSwgZGVmbnMpLCBFbXB0eSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJMZWFmXCJcbiAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0sIGRlZm5zKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgXX1cblxuICAgICAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBleHBvc2VzIHRoZSBzdHJ1Y3R1cmUgb2YgYSBncmFtbWFyIHdpdGggcmVjdXJzaXZlIHJlZmVyZW5jZXMsXG4gICAgICB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBtZWFuaW5nIG9mIHJlY3Vyc2l2ZWx5LWRlZmluZWQgZWxlbWVudHMuICopXG4gIHwgUmVjdXJzaXZlIG9mIHN0cmluZyAqIGdyYW1tYXIgbGlzdFxuICAoKiogVHlwZSBjb25zdHJ1Y3RvciBhcHBsaWVkIHRvIGFyZ3VtZW50cy4gVXNlZCB0byBkZW5vdGUgcmVjdXJzaXZlIHR5cGUgcmVmZXJlbmNlcy5cbiAgICAgIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHVzZWQgaW5zaWRlIHRoZSBbZGVmbl1zIG9mIGEgW1R5Y29uXSBncmFtbWFyLCB0byByZWZlciB0byBhXG4gICAgICB0eXBlIGNvbnN0cnVjdG9yIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBbZGVmbl0gbGlzdC4gKilcbiAgfCBMYXp5IG9mIGdyYW1tYXIgbGF6eV90XG4gICgqKiBMYXppbHkgY29tcHV0ZWQgZ3JhbW1hci4gVXNlIFtMYXp5XSB0byBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLiBUbyBkZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZSBncmFtbWFycywgdXNlIFtSZWN1cnNpdmVdIGluc3RlYWQuICopXG5cbigqKiBHcmFtbWFyIG9mIGEgbGlzdCBvZiBzZXhwcy4gKilcbmFuZCBsaXN0X2dyYW1tYXIgPVxuICB8IEVtcHR5ICgqKiBhY2NlcHRzIGFuIGVtcHR5IGxpc3Qgb2Ygc2V4cHMgKilcbiAgfCBDb25zIG9mIGdyYW1tYXIgKiBsaXN0X2dyYW1tYXJcbiAgKCoqIGFjY2VwdHMgYSBub24tZW1wdHkgbGlzdCB3aXRoIGhlYWQgYW5kIHRhaWwgbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXJzICopXG4gIHwgTWFueSBvZiBncmFtbWFyICgqKiBhY2NlcHRzIHplcm8gb3IgbW9yZSBzZXhwcywgZWFjaCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hciAqKVxuICB8IEZpZWxkcyBvZiByZWNvcmQgKCoqIGFjY2VwdHMgc2V4cHMgcmVwcmVzZW50aW5nIGZpZWxkcyBvZiBhIHJlY29yZCAqKVxuXG4oKiogQ2FzZSBzZW5zaXRpdml0eSBvcHRpb25zIGZvciBuYW1lcyBvZiB2YXJpYW50IGNvbnN0cnVjdG9ycy4gKilcbmFuZCBjYXNlX3NlbnNpdGl2aXR5ID1cbiAgfCBDYXNlX2luc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzZWQgZm9yIGN1c3RvbSBwYXJzZXJzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBVc2VkIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNhc2Ugc2Vuc2l0aXZlIGFmdGVyd2FyZC5cbiAgICAgIFVzZWQgZm9yIHJlZ3VsYXIgdmFyaWFudHMuICopXG5cbigqKiBHcmFtbWFyIG9mIHZhcmlhbnRzLiBBY2NlcHRzIGFueSBzZXhwIG1hdGNoaW5nIG9uZSBvZiB0aGUgY2xhdXNlcy4gKilcbmFuZCB2YXJpYW50ID1cbiAgeyBjYXNlX3NlbnNpdGl2aXR5IDogY2FzZV9zZW5zaXRpdml0eVxuICA7IGNsYXVzZXMgOiBjbGF1c2Ugd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UuIEFjY2VwdHMgc2V4cHMgYmFzZWQgb24gdGhlIFtjbGF1c2Vfa2luZF0uICopXG5hbmQgY2xhdXNlID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgY2xhdXNlX2tpbmQgOiBjbGF1c2Vfa2luZFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlJ3MgY29udGVudHMuIFtBdG9tX2NsYXVzZV0gYWNjZXB0cyBhbiBhdG9tIG1hdGNoaW5nXG4gICAgdGhlIGNsYXVzZSdzIG5hbWUuIFtMaXN0X2NsYXVzZV0gYWNjZXB0cyBhIGxpc3Qgd2hvc2UgaGVhZCBpcyBhbiBhdG9tIG1hdGNoaW5nIHRoZVxuICAgIGNsYXVzZSdzIG5hbWUgYW5kIHdob3NlIHRhaWwgbWF0Y2hlcyBbYXJnc10uIFRoZSBjbGF1c2UncyBuYW1lIGlzIG1hdGNoZWQgbW9kdWxvIHRoZVxuICAgIHZhcmlhbnQncyBbbmFtZV9raW5kXS4gKilcbmFuZCBjbGF1c2Vfa2luZCA9XG4gIHwgQXRvbV9jbGF1c2VcbiAgfCBMaXN0X2NsYXVzZSBvZiB7IGFyZ3MgOiBsaXN0X2dyYW1tYXIgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZC4gQWNjZXB0cyBhbnkgbGlzdCBvZiBzZXhwcyBzcGVjaWZ5aW5nIGVhY2ggb2YgdGhlIGZpZWxkcyxcbiAgICByZWdhcmRsZXNzIG9mIG9yZGVyLiBJZiBbYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBzcGVjaWZpZWQsIGlnbm9yZXMgc2V4cHMgd2l0aCBuYW1lc1xuICAgIG5vdCBmb3VuZCBpbiBbZmllbGRzXS4gKilcbmFuZCByZWNvcmQgPVxuICB7IGFsbG93X2V4dHJhX2ZpZWxkcyA6IGJvb2xcbiAgOyBmaWVsZHMgOiBmaWVsZCB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZCBmaWVsZC4gQSBmaWVsZCBtdXN0IHNob3cgdXAgZXhhY3RseSBvbmNlIGluIGEgcmVjb3JkIGlmXG4gICAgW3JlcXVpcmVkXSwgb3IgYXQgbW9zdCBvbmNlIG90aGVyd2lzZS4gQWNjZXB0cyBhIGxpc3QgaGVhZGVkIGJ5IFtuYW1lXSBhcyBhbiBhdG9tLFxuICAgIGZvbGxvd2VkIGJ5IHNleHBzIG1hdGNoaW5nIFthcmdzXS4gKilcbmFuZCBmaWVsZCA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IHJlcXVpcmVkIDogYm9vbFxuICA7IGFyZ3MgOiBsaXN0X2dyYW1tYXJcbiAgfVxuXG4oKiogR3JhbW1hciB0YWdnZWQgd2l0aCBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIuICopXG5hbmQgJ2Egd2l0aF90YWcgPVxuICB7IGtleSA6IHN0cmluZ1xuICA7IHZhbHVlIDogU2V4cC50XG4gIDsgZ3JhbW1hciA6ICdhXG4gIH1cblxuYW5kICdhIHdpdGhfdGFnX2xpc3QgPVxuICB8IFRhZyBvZiAnYSB3aXRoX3RhZ19saXN0IHdpdGhfdGFnXG4gIHwgTm9fdGFnIG9mICdhXG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbi4gTmFtZXMgdGhlIFt0eWNvbl0gYmVpbmcgZGVmaW5lZCwgYW5kIHRoZVxuICAgIFt0eXZhcnNdIGl0IHRha2VzIGFzIHBhcmFtZXRlcnMuIFNwZWNpZmllcyB0aGUgW2dyYW1tYXJdIG9mIHRoZSBbdHljb25dLiBUaGUgZ3JhbW1hclxuICAgIG1heSByZWZlciB0byBhbnkgb2YgdGhlIFt0eXZhcnNdLCBhbmQgdG8gYW55IG9mIHRoZSBbdHljb25dcyBmcm9tIHRoZSBzYW1lIHNldCBvZlxuICAgIFtSZWN1cnNpdmVdIGRlZmluaXRpb25zLiAqKVxuYW5kIGRlZm4gPVxuICB7IHR5Y29uIDogc3RyaW5nXG4gIDsgdHl2YXJzIDogc3RyaW5nIGxpc3RcbiAgOyBncmFtbWFyIDogZ3JhbW1hclxuICB9XG5cbigqKiBUb3AtbGV2ZWwgZ3JhbW1hciB0eXBlLiBIYXMgYSBwaGFudG9tIHR5cGUgcGFyYW1ldGVyIHRvIGFzc29jaWF0ZSBlYWNoIGdyYW1tYXIgd2l0aFxuICAgIHRoZSB0eXBlIGl0cyBzZXhwcyByZXByZXNlbnQuIFRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGFwcGx5IGdyYW1tYXJzIHRvIHRoZSB3cm9uZ1xuICAgIHR5cGUsIHdoaWxlIGdyYW1tYXJzIGNhbiBzdGlsbCBiZSBlYXNpbHkgY29lcmNlZCB0byBhIG5ldyB0eXBlIGlmIG5lZWRlZC4gKilcbnR5cGUgXyB0ID0geyB1bnR5cGVkIDogZ3JhbW1hciB9IFtAQHVuYm94ZWRdXG5cbmxldCBjb2VyY2UgKHR5cGUgYSBiKSAoeyB1bnR5cGVkID0gXyB9IGFzIHQgOiBhIHQpIDogYiB0ID0gdFxuXG5sZXQgdGFnICh0eXBlIGEpICh7IHVudHlwZWQgPSBncmFtbWFyIH0gOiBhIHQpIH5rZXkgfnZhbHVlIDogYSB0ID1cbiAgeyB1bnR5cGVkID0gVGFnZ2VkIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9IH1cbjs7XG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBpcyB1c2VkIGZvciBhbGwgdGFncyBnZW5lcmF0ZWQgZnJvbSBkb2MgY29tbWVudHMuICopXG5sZXQgZG9jX2NvbW1lbnRfdGFnID0gXCJzZXhwX2dyYW1tYXIuZG9jX2NvbW1lbnRcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgY2FuIGJlIHVzZWQgdG8gYXNzb2NpYXRlIGEgdHlwZSBuYW1lIHdpdGggYSBncmFtbWFyLiAqKVxubGV0IHR5cGVfbmFtZV90YWcgPSBcInNleHBfZ3JhbW1hci50eXBlX25hbWVcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIHJlcHJlc2VudHMgYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZSB0YWcnc1xuICAgIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2NfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2NcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIGlzIGEga2V5IGluIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGUgdGFnJ3NcbiAgICB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX2tleV90YWcgPSBcInNleHBfZ3JhbW1hci5hc3NvYy5rZXlcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIGlzIGEgdmFsdWUgaW4gYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZVxuICAgIHRhZydzIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2NfdmFsdWVfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2MudmFsdWVcIlxuXG4oKiogV2hlbiB0aGUga2V5IGlzIHNldCB0byBbQXRvbSBcImZhbHNlXCJdIGZvciBhIHZhcmlhbnQgY2xhdXNlLCB0aGF0IGNsYXVzZSBzaG91bGQgbm90IGJlXG4gICAgc3VnZ2VzdGVkIGluIGF1dG8tY29tcGxldGlvbiBiYXNlZCBvbiB0aGUgc2V4cCBncmFtbWFyLiAqKVxubGV0IGNvbXBsZXRpb25fc3VnZ2VzdGVkID0gXCJzZXhwX2dyYW1tYXIuY29tcGxldGlvbi1zdWdnZXN0ZWRcIlxuIiwib3BlbiBTdGRMYWJlbHNcblxubGV0IHNleHBfZ3JhbW1hcl93aXRoX3RhZ3MgZ3JhbW1hciB+dGFncyA9XG4gIExpc3QuZm9sZF9yaWdodCB0YWdzIH5pbml0OmdyYW1tYXIgfmY6KGZ1biAoa2V5LCB2YWx1ZSkgZ3JhbW1hciAtPlxuICAgIFNleHBfZ3JhbW1hci5UYWdnZWQgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0pXG47O1xuXG5sZXQgc2V4cF9ncmFtbWFyX3dpdGhfdGFnX2xpc3QgeCB+dGFncyA9XG4gIExpc3QuZm9sZF9yaWdodCB0YWdzIH5pbml0OnggfmY6KGZ1biAoa2V5LCB2YWx1ZSkgZ3JhbW1hciAtPlxuICAgIFNleHBfZ3JhbW1hci5UYWcgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0pXG47O1xuXG5sZXQgdW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCBFbXB0eSB9XG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQm9vbCB9XG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IENoYXIgfVxubGV0IGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEZsb2F0IH1cbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IHNleHBfdF9zZXhwX2dyYW1tYXIgOiBTZXhwLnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJTZXhwLnRcIiB9XG5sZXQgcmVmX3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5cbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBvcHRpb24gU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBPcHRpb24gdW50eXBlZCB9XG47O1xuXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGxpc3QgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGFycmF5IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgZW1wdHlfc2V4cF9ncmFtbWFyIDogXyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbmxldCBvcGFxdWVfc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG5sZXQgZnVuX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxuIiwiKCogVXRpbGl0eSBNb2R1bGUgZm9yIFMtZXhwcmVzc2lvbiBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwXG5cbigqIENvbnZlcnNpb24gb2YgT0NhbWwtdmFsdWVzIHRvIFMtZXhwcmVzc2lvbnMgKilcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogJyUuMTdnJyBpcyBndWFyYW50ZWVkIHRvIGJlIHJvdW5kLXRyaXBwYWJsZS5cblxuICAgJyUuMTVnJyB3aWxsIGJlIHJvdW5kLXRyaXBwYWJsZSBhbmQgbm90IGhhdmUgbm9pc2UgYXQgdGhlIGxhc3QgZGlnaXQgb3IgdHdvIGZvciBhIGZsb2F0XG4gICB3aGljaCB3YXMgY29udmVydGVkIGZyb20gYSBkZWNpbWFsIChzdHJpbmcpIHdpdGggPD0gMTUgc2lnbmlmaWNhbnQgZGlnaXRzLiAgU28gaXQnc1xuICAgd29ydGggdHJ5aW5nIGZpcnN0IHRvIGF2b2lkIHRoaW5ncyBsaWtlIFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIuXG5cbiAgIFNlZSBjb21tZW50IGFib3ZlIFt0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlXSBpbiB7IUNvcmUuRmxvYXR9IGZvclxuICAgZGV0YWlsZWQgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzLiAqKVxubGV0IGRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0ID1cbiAgcmVmIChmdW4geCAtPlxuICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdHXCIgeClcbjs7XG5cbmxldCByZWFkX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCB3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgbGlzdF9tYXAgZiBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBsIH5mKVxubGV0IHNleHBfb2ZfdW5pdCAoKSA9IExpc3QgW11cbmxldCBzZXhwX29mX2Jvb2wgYiA9IEF0b20gKHN0cmluZ19vZl9ib29sIGIpXG5sZXQgc2V4cF9vZl9zdHJpbmcgc3RyID0gQXRvbSBzdHJcbmxldCBzZXhwX29mX2J5dGVzIGJ5dGVzID0gQXRvbSAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHNleHBfb2ZfY2hhciBjID0gQXRvbSAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHNleHBfb2ZfaW50IG4gPSBBdG9tIChzdHJpbmdfb2ZfaW50IG4pXG5sZXQgc2V4cF9vZl9mbG9hdCBuID0gQXRvbSAoIWRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IG4pXG5sZXQgc2V4cF9vZl9pbnQzMiBuID0gQXRvbSAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9pbnQ2NCBuID0gQXRvbSAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgbiA9IEF0b20gKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX3JlZiBzZXhwX29mX19hIHJmID0gc2V4cF9vZl9fYSAhcmZcbmxldCBzZXhwX29mX2xhenlfdCBzZXhwX29mX19hIGx2ID0gc2V4cF9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFsgc2V4cF9vZl9fYSB4IF1cbiAgfCBTb21lIHggLT4gTGlzdCBbIEF0b20gXCJzb21lXCI7IHNleHBfb2ZfX2EgeCBdXG4gIHwgTm9uZSB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFtdXG4gIHwgTm9uZSAtPiBBdG9tIFwibm9uZVwiXG47O1xuXG5sZXQgc2V4cF9vZl9wYWlyIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiAoYSwgYikgPSBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGIgXVxuXG5sZXQgc2V4cF9vZl90cmlwbGUgc2V4cF9vZl9fYSBzZXhwX29mX19iIHNleHBfb2ZfX2MgKGEsIGIsIGMpID1cbiAgTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiOyBzZXhwX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHNleHBfb2ZfbGlzdCBzZXhwX29mX19hIGxzdCA9IExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgbHN0IH5mOnNleHBfb2ZfX2EpKVxuXG5sZXQgc2V4cF9vZl9hcnJheSBzZXhwX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9oYXNodGJsIHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBMaXN0IFsgc2V4cF9vZl9rZXkgazsgc2V4cF9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHNleHBfb2Zfb3BhcXVlIF8gPSBBdG9tIFwiPG9wYXF1ZT5cIlxubGV0IHNleHBfb2ZfZnVuIF8gPSBBdG9tIFwiPGZ1bj5cIlxuXG4oKiBFeGNlcHRpb24gY29udmVydGVyIHJlZ2lzdHJhdGlvbiBhbmQgbG9va3VwICopXG5cbm1vZHVsZSBFeG5fY29udmVydGVyID0gc3RydWN0XG4gICgqIFRoZXNlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IGNvbnRleHQtc3dpdGNoZXNcbiAgICAgY2Fubm90IGhhcHBlbiB1bmxlc3MgdGhlcmUgaXMgYW4gYWxsb2NhdGlvbi4gIEl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0XG4gICAgIHRoYXQgdGhpcyB3aWxsIHJlbWFpbiB0cnVlIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlLiAgVGhhdCB3YXkgd2VcbiAgICAgYXZvaWQgdXNpbmcgbXV0ZXhlcyBhbmQgdGh1cyBhIGRlcGVuZGVuY3kgb24gdGhlIHRocmVhZHMgbGlicmFyeS4gKilcblxuICAoKiBGYXN0IGFuZCBhdXRvbWF0aWMgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiAqKVxuXG4gIG1vZHVsZSBSZWdpc3RyYXRpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzZXhwX29mX2V4biA6IGV4biAtPiBTZXhwLnRcbiAgICAgIDsgKCogSWYgW3ByaW50ZXhjID0gdHJ1ZV0gdGhlbiB0aGlzIHNleHAgY29udmVydGVyIGlzIHVzZWQgZm9yIFByaW50ZXhjLnRvX3N0cmluZyAqKVxuICAgICAgICBwcmludGV4YyA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEV4bl90YWJsZSA9IEVwaGVtZXJvbi5LMS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuXG4gICAgICBsZXQgZXF1YWwgPSAoID09IClcbiAgICAgIGxldCBoYXNoID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuICAgIGVuZClcblxuICBsZXQgdGhlX2V4bl90YWJsZSA6IFJlZ2lzdHJhdGlvbi50IEV4bl90YWJsZS50ID0gRXhuX3RhYmxlLmNyZWF0ZSAxN1xuXG4gICgqIEVwaGVtZXJvbnMgYXJlIHVzZWQgc28gdGhhdCBbc2V4cF9vZl9leG5dIGNsb3N1cmUgZG9uJ3Qga2VlcCB0aGVcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpdmUuICopXG4gIGxldCBhZGQgPyhwcmludGV4YyA9IHRydWUpID9maW5hbGlzZTpfIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBzZXhwX29mX2V4biA9XG4gICAgRXhuX3RhYmxlLmFkZCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9XG4gIDs7XG5cbiAgbGV0IGZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjIGV4biA9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4biBpblxuICAgIG1hdGNoIEV4bl90YWJsZS5maW5kX29wdCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfSAtPlxuICAgICAgKG1hdGNoIGZvcl9wcmludGV4YywgcHJpbnRleGMgd2l0aFxuICAgICAgIHwgZmFsc2UsIF8gfCBfLCB0cnVlIC0+IFNvbWUgKHNleHBfb2ZfZXhuIGV4bilcbiAgICAgICB8IHRydWUsIGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl91bml0X3Rlc3RzX29ubHkgPSBzdHJ1Y3RcbiAgICBsZXQgc2l6ZSAoKSA9IChFeG5fdGFibGUuc3RhdHNfYWxpdmUgdGhlX2V4bl90YWJsZSkubnVtX2JpbmRpbmdzXG4gIGVuZFxuZW5kXG5cbmxldCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6dHJ1ZSBleG5cbmxldCBzZXhwX29mX2V4bl9vcHQgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4YzpmYWxzZSBleG5cblxubGV0IHNleHBfb2ZfZXhuIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gTGlzdCBbIEF0b20gKFByaW50ZXhjLnRvX3N0cmluZyBleG4pIF1cbiAgfCBTb21lIHNleHAgLT4gc2V4cFxuOztcblxubGV0IGV4bl90b19zdHJpbmcgZSA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSlcblxuKCoge1tleGNlcHRpb24gQmxhaCBbQEBkZXJpdmluZyBzZXhwXV19IGdlbmVyYXRlcyBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uXG4gICBbRXhuX2NvbnZlcnRlci5hZGRdIGRlZmluZWQgaW4gdGhpcyBmaWxlLiAgU28gd2UgYXJlIGd1YXJhbnRlZCB0aGF0IGFzIHNvb24gYXMgd2VcbiAgIG1hcmsgYW4gZXhjZXB0aW9uIGFzIHNleHBhYmxlLCB0aGlzIG1vZHVsZSB3aWxsIGJlIGxpbmtlZCBpbiBhbmQgdGhpcyBwcmludGVyIHdpbGwgYmVcbiAgIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4gKilcbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBleG4gLT5cbiAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgc2V4cCAtPiBTb21lIChTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHApKVxuOztcblxubGV0IHByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gUHJpbnRleGMudG9fc3RyaW5nIGV4blxuICB8IFNvbWUgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHBcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgUy1leHByZXNzaW9ucyB0byBPQ2FtbC12YWx1ZXMgKilcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBTZXhwLk9mX3NleHBfZXJyb3JcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4YyBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkpXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcblxubGV0IHVuaXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiAoKVxuICB8IEF0b20gXyB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwidW5pdF9vZl9zZXhwOiBlbXB0eSBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBib29sX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gKFwidHJ1ZVwiIHwgXCJUcnVlXCIpIC0+IHRydWVcbiAgfCBBdG9tIChcImZhbHNlXCIgfCBcIkZhbHNlXCIpIC0+IGZhbHNlXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IHVua25vd24gc3RyaW5nXCIgc2V4cFxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYnl0ZXNfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYnl0ZXNfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY2hhcl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiBzZXhwO1xuICAgIHN0ci5bMF1cbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBpbnRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGZsb2F0X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImZsb2F0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQzMl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50MzIub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50MzJfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDMyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDY0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQ2NC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQ2NF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50NjRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwibmF0aXZlaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJuYXRpdmVpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgcmVmX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gcmVmIChhX19vZl9zZXhwIHNleHApXG5sZXQgbGF6eV90X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2Zfc2V4cCBzZXhwKVxuXG5sZXQgb3B0aW9uX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgaWYgIXJlYWRfb2xkX29wdGlvbl9mb3JtYXRcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFtdIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIGVsIF0gfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCByZXByZXNlbnQgb3B0aW9uYWwgdmFsdWVcIiBzZXhwXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwKVxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cFxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IGJlIChzb21lIGVsKVwiIHNleHApXG47O1xuXG5sZXQgcGFpcl9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGEsIGJcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHR3byBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCB0cmlwbGVfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgY19fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwOyBjX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgbGV0IGMgPSBjX19vZl9zZXhwIGNfc2V4cCBpblxuICAgIGEsIGIsIGNcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBsaXN0X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2Zfc2V4cCBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImxpc3Rfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYXJyYXlfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IFt8fF1cbiAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl9zZXhwIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImFycmF5X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGhhc2h0Ymxfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWxfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgTGlzdCBbIGtfc2V4cDsgdl9zZXhwIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2Zfc2V4cCBrX3NleHApIH5kYXRhOih2YWxfb2Zfc2V4cCB2X3NleHApXG4gICAgICB8IExpc3QgXyB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHNleHBcbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgb3BhcXVlX29mX3NleHAgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgXCJvcGFxdWVfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHNleHBcbjs7XG5cbmxldCBmdW5fb2Zfc2V4cCBzZXhwID0gb2Zfc2V4cF9lcnJvciBcImZ1bl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiBzZXhwXG5cbigqIFNleHAgR3JhbW1hcnMgKilcblxuaW5jbHVkZSBTZXhwX2NvbnZfZ3JhbW1hclxuXG4oKiBSZWdpc3RlcmluZyBkZWZhdWx0IGV4Y2VwdGlvbiBwcmludGVycyAqKVxuXG5sZXQgZ2V0X2ZsY19lcnJvciBuYW1lIChmaWxlLCBsaW5lLCBjaHIpID0gQXRvbSAoc3ByaW50ZiBcIiVzICVzOiVkOiVkXCIgbmFtZSBmaWxlIGxpbmUgY2hyKVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6ZmFsc2UgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBc3NlcnRfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBc3NlcnRfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIkFzc2VydF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeGl0XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEV4aXQgLT4gQXRvbSBcIkV4aXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRW5kX29mX2ZpbGVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRW5kX29mX2ZpbGUgLT4gQXRvbSBcIkVuZF9vZl9maWxlXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJGYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmQgLT4gQXRvbSBcIk5vdF9mb3VuZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBJbnZhbGlkX2FyZ3VtZW50XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYXJnIC0+IExpc3QgWyBBdG9tIFwiSW52YWxpZF9hcmd1bWVudFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXRjaF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE1hdGNoX2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJNYXRjaF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRfc11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmRfcyBhcmcgLT4gTGlzdCBbIEF0b20gXCJOb3RfZm91bmRfc1wiOyBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5c19lcnJvciBhcmcgLT4gTGlzdCBbIEF0b20gXCJTeXNfZXJyb3JcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkhlbHBdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkhlbHAgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkhlbHBcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkJhZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuQmFkIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5CYWRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTGF6eS5VbmRlZmluZWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTGF6eS5VbmRlZmluZWQgLT4gQXRvbSBcIkxhenkuVW5kZWZpbmVkXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNpbmcuUGFyc2VfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBBdG9tIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBRdWV1ZS5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBRdWV1ZS5FbXB0eSAtPiBBdG9tIFwiUXVldWUuRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2NhbmYuU2Nhbl9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFNjYW5mLlNjYW5fZmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJTY2FuZi5TY2FuX2ZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3RhY2suRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3RhY2suRW1wdHkgLT4gQXRvbSBcIlN0YWNrLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5cy5CcmVha11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXMuQnJlYWsgLT4gQXRvbSBcIlN5cy5CcmVha1wiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4Yzp0cnVlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHNleHApIC0+XG4gICAgICAgICAgTGlzdCBbIEF0b20gXCJTZXhwbGliLkNvbnYuT2Zfc2V4cF9lcnJvclwiOyBzZXhwX29mX2V4biBleGM7IHNleHAgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBTLWV4cHJlc3Npb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwX2NvbnZcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHNleHAgPVxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZyBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2MgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogYSBbc2V4cC5ib29sXSBmaWVsZCB3YXMgZ2l2ZW4gYSBwYXlsb2FkLlwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IG9ubHkgcGFpcnMgZXhwZWN0ZWQsIHRoZWlyIGZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBcXFxuICAgICAgIGF0b21cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyBzZXhwIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3NleHA6IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSBzZXhwXG47O1xuIiwib3BlbiEgU3RkTGFiZWxzXG5vcGVuISBTZXhwX2NvbnZcbm9wZW4hIFNleHBfY29udl9lcnJvclxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IERlZmF1bHQgOiAodW5pdCAtPiAnYSkgLT4gKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IE9taXRfbmlsIDogKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFJlcXVpcmVkIDogKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfYXJyYXkgOiAoJ2EgYXJyYXksIFNleHAudCAtPiAnYSkgdFxuICAgIHwgU2V4cF9ib29sIDogKGJvb2wsIHVuaXQpIHRcbiAgICB8IFNleHBfbGlzdCA6ICgnYSBsaXN0LCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfb3B0aW9uIDogKCdhIG9wdGlvbiwgU2V4cC50IC0+ICdhKSB0XG5lbmRcblxubW9kdWxlIEZpZWxkcyA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBFbXB0eSA6IHVuaXQgdFxuICAgIHwgRmllbGQgOlxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBraW5kIDogKCdhLCAnY29udikgS2luZC50XG4gICAgICAgIDsgY29udiA6ICdjb252XG4gICAgICAgIDsgcmVzdCA6ICdiIHRcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgKiAnYikgdFxuXG4gIGxldCBsZW5ndGggPVxuICAgIGxldCByZWMgbGVuZ3RoX2xvb3AgOiB0eXBlIGEuIGEgdCAtPiBpbnQgLT4gaW50ID1cbiAgICAgIGZ1biB0IGFjYyAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaWVsZCB7IHJlc3Q7IF8gfSAtPiBsZW5ndGhfbG9vcCByZXN0IChhY2MgKyAxKVxuICAgICAgICB8IEVtcHR5IC0+IGFjY1xuICAgIGluXG4gICAgZnVuIHQgLT4gbGVuZ3RoX2xvb3AgdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hbGZvcm1lZCA9IHN0cnVjdFxuICAoKiBSZXByZXNlbnRzIGVycm9ycyB0aGF0IGNhbiBvY2N1ciBkdWUgdG8gbWFsZm9ybWVkIHJlY29yZCBzZXhwcy4gQWNjdW11bGF0ZWQgYXMgYVxuICAgICB2YWx1ZSBzbyB3ZSBjYW4gcmVwb3J0IG11bHRpcGxlIG5hbWVzIGF0IG9uY2UgZm9yIGV4dHJhIGZpZWxkcywgZHVwbGljYXRlIGZpZWxkcywgb3JcbiAgICAgbWlzc2luZyBmaWVsZHMuICopXG4gIHR5cGUgdCA9XG4gICAgfCBCb29sX3BheWxvYWRcbiAgICB8IEV4dHJhcyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgRHVwcyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgTWlzc2luZyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgTm9uX3BhaXIgb2YgU2V4cC50IG9wdGlvblxuXG4gIGxldCBjb21iaW5lIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgKCogY2hvb3NlIHRoZSBmaXJzdCBib29sLXBheWxvYWQgb3Igbm9uLXBhaXIgZXJyb3IgdGhhdCBvY2N1cnMgKilcbiAgICB8ICgoQm9vbF9wYXlsb2FkIHwgTm9uX3BhaXIgXykgYXMgdCksIF8gLT4gdFxuICAgIHwgXywgKChCb29sX3BheWxvYWQgfCBOb25fcGFpciBfKSBhcyB0KSAtPiB0XG4gICAgKCogY29tYmluZSBsaXN0cyBvZiBzaW1pbGFyIGVycm9ycyAqKVxuICAgIHwgRXh0cmFzIGEsIEV4dHJhcyBiIC0+IEV4dHJhcyAoYSBAIGIpXG4gICAgfCBEdXBzIGEsIER1cHMgYiAtPiBEdXBzIChhIEAgYilcbiAgICB8IE1pc3NpbmcgYSwgTWlzc2luZyBiIC0+IE1pc3NpbmcgKGEgQCBiKVxuICAgICgqIG90aGVyd2lzZSwgZHVwcyA+IGV4dHJhcyA+IG1pc3NpbmcgKilcbiAgICB8IChEdXBzIF8gYXMgdCksIF8gfCBfLCAoRHVwcyBfIGFzIHQpIC0+IHRcbiAgICB8IChFeHRyYXMgXyBhcyB0KSwgXyB8IF8sIChFeHRyYXMgXyBhcyB0KSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJhaXNlIHQgfmNhbGxlciB+Y29udGV4dCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCb29sX3BheWxvYWQgLT4gcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgY2FsbGVyIGNvbnRleHRcbiAgICB8IEV4dHJhcyBuYW1lcyAtPiByZWNvcmRfZXh0cmFfZmllbGRzIGNhbGxlciAoTGlzdC5yZXYgbmFtZXMpIGNvbnRleHRcbiAgICB8IER1cHMgbmFtZXMgLT4gcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgY2FsbGVyIChMaXN0LnJldiBuYW1lcykgY29udGV4dFxuICAgIHwgTWlzc2luZyBuYW1lcyAtPlxuICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+IHRydWUsIG5hbWUpXG4gICAgICB8PiByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGNhbGxlciBjb250ZXh0XG4gICAgfCBOb25fcGFpciBtYXliZV9jb250ZXh0IC0+XG4gICAgICBsZXQgY29udGV4dCA9IE9wdGlvbi52YWx1ZSBtYXliZV9jb250ZXh0IH5kZWZhdWx0OmNvbnRleHQgaW5cbiAgICAgIHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGNhbGxlciBjb250ZXh0XG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1hbGZvcm1lZCBvZiBNYWxmb3JtZWQudFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgKCogU3RvcmVzIHNleHBzIGNvcnJlc3BvbmRpbmcgdG8gcmVjb3JkIGZpZWxkcywgaW4gdGhlIG9yZGVyIHRoZSBmaWVsZHMgd2VyZSBkZWNsYXJlZC5cbiAgICAgRXhjbHVkZXMgZmllbGRzIGFscmVhZHkgcGFyc2VkIGluIHRoZSBmYXN0IHBhdGguXG5cbiAgICAgTGlzdCBzZXhwcyByZXByZXNlbnQgYSBmaWVsZCB0aGF0IGlzIHByZXNlbnQsIHN1Y2ggYXMgKHggMSkgZm9yIGEgZmllbGQgbmFtZWQgXCJ4XCIuXG4gICAgIEF0b20gc2V4cHMgcmVwcmVzZW50IGEgZmllbGQgdGhhdCBpcyBhYnNlbnQsIG9yIGF0IGxlYXN0IG5vdCB5ZXQgc2Vlbi4gKilcbiAgdHlwZSB0ID0geyBzdGF0ZSA6IFNleHAudCBhcnJheSB9IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwb3MgPSBBcnJheS51bnNhZmVfZ2V0IHQuc3RhdGUgcG9zXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9zIHNleHAgPSBBcnJheS51bnNhZmVfc2V0IHQuc3RhdGUgcG9zIHNleHBcbiAgbGV0IGFic2VudCA9IFNleHAuQXRvbSBcIlwiXG4gIGxldCBjcmVhdGUgbGVuID0geyBzdGF0ZSA9IEFycmF5Lm1ha2UgbGVuIGFic2VudCB9XG5lbmRcblxuKCogUGFyc2luZyBmaWVsZCB2YWx1ZXMgZnJvbSBzdGF0ZS4gKilcblxubGV0IHJlYyBwYXJzZV92YWx1ZV9tYWxmb3JtZWRcbiAgOiB0eXBlIGEgYi4gTWFsZm9ybWVkLnQgLT4gZmllbGRzOihhICogYikgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGFcbiAgPVxuICBmdW4gbWFsZm9ybWVkIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbGV0IChGaWVsZCBmaWVsZCkgPSBmaWVsZHMgaW5cbiAgbGV0IG1hbGZvcm1lZCA9XG4gICAgbWF0Y2ggcGFyc2VfdmFsdWVzIH5maWVsZHM6ZmllbGQucmVzdCB+c3RhdGUgfnBvczoocG9zICsgMSkgd2l0aFxuICAgIHwgKF8gOiBiKSAtPiBtYWxmb3JtZWRcbiAgICB8IGV4Y2VwdGlvbiBNYWxmb3JtZWQgb3RoZXIgLT4gTWFsZm9ybWVkLmNvbWJpbmUgbWFsZm9ybWVkIG90aGVyXG4gIGluXG4gIHJhaXNlIChNYWxmb3JtZWQgbWFsZm9ybWVkKVxuXG5hbmQgcGFyc2VfdmFsdWUgOiB0eXBlIGEgYi4gZmllbGRzOihhICogYikgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGEgKiBiID1cbiAgZnVuIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbGV0IChGaWVsZCB7IG5hbWU7IGtpbmQ7IGNvbnY7IHJlc3QgfSkgPSBmaWVsZHMgaW5cbiAgbGV0IHZhbHVlIDogYSA9XG4gICAgbWF0Y2gga2luZCwgU3RhdGUudW5zYWZlX2dldCBzdGF0ZSBwb3Mgd2l0aFxuICAgICgqIHdlbGwtZm9ybWVkICopXG4gICAgfCBSZXF1aXJlZCwgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IERlZmF1bHQgXywgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IE9taXRfbmlsLCBMaXN0IFsgXzsgc2V4cCBdIC0+IGNvbnYgc2V4cFxuICAgIHwgU2V4cF9vcHRpb24sIExpc3QgWyBfOyBzZXhwIF0gLT4gU29tZSAoY29udiBzZXhwKVxuICAgIHwgU2V4cF9saXN0LCBMaXN0IFsgXzsgc2V4cCBdIC0+IGxpc3Rfb2Zfc2V4cCBjb252IHNleHBcbiAgICB8IFNleHBfYXJyYXksIExpc3QgWyBfOyBzZXhwIF0gLT4gYXJyYXlfb2Zfc2V4cCBjb252IHNleHBcbiAgICB8IFNleHBfYm9vbCwgTGlzdCBbIF8gXSAtPiB0cnVlXG4gICAgKCogaWxsLWZvcm1lZCAqKVxuICAgIHwgKCAoUmVxdWlyZWQgfCBEZWZhdWx0IF8gfCBPbWl0X25pbCB8IFNleHBfb3B0aW9uIHwgU2V4cF9saXN0IHwgU2V4cF9hcnJheSlcbiAgICAgICwgKExpc3QgKF8gOjogXyA6OiBfIDo6IF8pIGFzIHNleHApICkgLT5cbiAgICAgIHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTm9uX3BhaXIgKFNvbWUgc2V4cCkpIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICB8ICggKFJlcXVpcmVkIHwgRGVmYXVsdCBfIHwgT21pdF9uaWwgfCBTZXhwX29wdGlvbiB8IFNleHBfbGlzdCB8IFNleHBfYXJyYXkpXG4gICAgICAsIExpc3QgKFtdIHwgWyBfIF0pICkgLT4gcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChOb25fcGFpciBOb25lKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCBTZXhwX2Jvb2wsIExpc3QgKFtdIHwgXyA6OiBfIDo6IF8pIC0+XG4gICAgICBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgQm9vbF9wYXlsb2FkIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICAoKiBhYnNlbnQgKilcbiAgICB8IFJlcXVpcmVkLCBBdG9tIF8gLT4gcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChNaXNzaW5nIFsgbmFtZSBdKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCBEZWZhdWx0IGRlZmF1bHQsIEF0b20gXyAtPiBkZWZhdWx0ICgpXG4gICAgfCBPbWl0X25pbCwgQXRvbSBfIC0+IGNvbnYgKExpc3QgW10pXG4gICAgfCBTZXhwX29wdGlvbiwgQXRvbSBfIC0+IE5vbmVcbiAgICB8IFNleHBfbGlzdCwgQXRvbSBfIC0+IFtdXG4gICAgfCBTZXhwX2FycmF5LCBBdG9tIF8gLT4gW3x8XVxuICAgIHwgU2V4cF9ib29sLCBBdG9tIF8gLT4gZmFsc2VcbiAgaW5cbiAgdmFsdWUsIHBhcnNlX3ZhbHVlcyB+ZmllbGRzOnJlc3QgfnN0YXRlIH5wb3M6KHBvcyArIDEpXG5cbmFuZCBwYXJzZV92YWx1ZXMgOiB0eXBlIGEuIGZpZWxkczphIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhID1cbiAgZnVuIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbWF0Y2ggZmllbGRzIHdpdGhcbiAgfCBGaWVsZCBfIC0+IHBhcnNlX3ZhbHVlIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgfCBFbXB0eSAtPiAoKVxuOztcblxuKCogUG9wdWxhdGluZyBzdGF0ZS4gSGFuZGxlcyBzbG93IHBhdGggY2FzZXMgd2hlcmUgdGhlcmUgbWF5IGJlIHJlb3JkZXJlZCwgZHVwbGljYXRlZCxcbiAgIG1pc3NpbmcsIG9yIGV4dHJhIGZpZWxkcy4gKilcblxubGV0IHJlYyBwYXJzZV9zcGluZV9tYWxmb3JtZWQgbWFsZm9ybWVkIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgPVxuICBsZXQgbWFsZm9ybWVkID1cbiAgICBtYXRjaCBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgd2l0aFxuICAgIHwgKCkgLT4gbWFsZm9ybWVkXG4gICAgfCBleGNlcHRpb24gTWFsZm9ybWVkIG90aGVyIC0+IE1hbGZvcm1lZC5jb21iaW5lIG1hbGZvcm1lZCBvdGhlclxuICBpblxuICByYWlzZSAoTWFsZm9ybWVkIG1hbGZvcm1lZClcblxuYW5kIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcyA9XG4gIG1hdGNoIChzZXhwcyA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoTGlzdCAoQXRvbSBuYW1lIDo6IF8pIGFzIGZpZWxkKSA6OiBzZXhwcyAtPlxuICAgIGxldCBpID0gaW5kZXggbmFtZSBpblxuICAgIChtYXRjaCBzZWVuIDw9IGkgJiYgaSA8IGxlbiB3aXRoXG4gICAgIHwgdHJ1ZSAtPlxuICAgICAgICgqIHZhbGlkIGZpZWxkIGZvciBzbG93LXBhdGggcGFyc2luZyAqKVxuICAgICAgIGxldCBwb3MgPSBpIC0gc2VlbiBpblxuICAgICAgIChtYXRjaCBTdGF0ZS51bnNhZmVfZ2V0IHN0YXRlIHBvcyB3aXRoXG4gICAgICAgIHwgQXRvbSBfIC0+XG4gICAgICAgICAgKCogZmllbGQgbm90IHNlZW4geWV0ICopXG4gICAgICAgICAgU3RhdGUudW5zYWZlX3NldCBzdGF0ZSBwb3MgZmllbGQ7XG4gICAgICAgICAgcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgIHwgTGlzdCBfIC0+XG4gICAgICAgICAgKCogZmllbGQgYWxyZWFkeSBzZWVuICopXG4gICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChEdXBzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzKVxuICAgICB8IGZhbHNlIC0+XG4gICAgICAgKG1hdGNoIDAgPD0gaSAmJiBpIDwgc2VlbiB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICgqIGZpZWxkIHNlZW4gaW4gZmFzdCBwYXRoICopXG4gICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChEdXBzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiBleHRyYSBmaWVsZCAqKVxuICAgICAgICAgIChtYXRjaCBleHRyYSB3aXRoXG4gICAgICAgICAgIHwgdHJ1ZSAtPiBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbiAgICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRXh0cmFzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzKSkpXG4gIHwgc2V4cCA6OiBzZXhwcyAtPlxuICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoTm9uX3BhaXIgKFNvbWUgc2V4cCkpIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbjs7XG5cbigqIFNsb3cgcGF0aCBmb3IgcmVjb3JkIHBhcnNpbmcuIFVzZXMgc3RhdGUgdG8gc3RvcmUgZmllbGRzIGFzIHRoZXkgYXJlIGRpc2NvdmVyZWQuICopXG5cbmxldCBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMgPVxuICBsZXQgdW5zZWVuID0gRmllbGRzLmxlbmd0aCBmaWVsZHMgaW5cbiAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlIHVuc2VlbiBpblxuICBsZXQgbGVuID0gc2VlbiArIHVuc2VlbiBpblxuICAoKiBwb3B1bGF0ZSBzdGF0ZSAqKVxuICBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHM7XG4gICgqIHBhcnNlIHZhbHVlcyBmcm9tIHN0YXRlICopXG4gIHBhcnNlX3ZhbHVlcyB+ZmllbGRzIH5zdGF0ZSB+cG9zOjBcbjs7XG5cbigqIEZhc3QgcGF0aCBmb3IgcmVjb3JkIHBhcnNpbmcuIERpcmVjdGx5IHBhcnNlcyBhbmQgcmV0dXJucyBmaWVsZHMgaW4gdGhlIG9yZGVyIHRoZXkgYXJlXG4gICBkZWNsYXJlZC4gRmFsbHMgYmFjayBvbiBzbG93IHBhdGggaWYgYW55IGZpZWxkcyBhcmUgYWJzZW50LCByZW9yZGVyZWQsIG9yIG1hbGZvcm1lZC4gKilcblxubGV0IHJlYyBwYXJzZV9maWVsZF9mYXN0XG4gIDogdHlwZSBhIGIuXG4gICAgZmllbGRzOihhICogYikgRmllbGRzLnRcbiAgICAtPiBpbmRleDooc3RyaW5nIC0+IGludClcbiAgICAtPiBleHRyYTpib29sXG4gICAgLT4gc2VlbjppbnRcbiAgICAtPiBTZXhwLnQgbGlzdFxuICAgIC0+IGEgKiBiXG4gID1cbiAgZnVuIH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcyAtPlxuICBsZXQgKEZpZWxkIHsgbmFtZTsga2luZDsgY29udjsgcmVzdCB9KSA9IGZpZWxkcyBpblxuICBtYXRjaCBzZXhwcyB3aXRoXG4gIHwgTGlzdCAoQXRvbSBhdG9tIDo6IGFyZ3MpIDo6IG90aGVycyB3aGVuIFN0cmluZy5lcXVhbCBhdG9tIG5hbWUgLT5cbiAgICAobWF0Y2gga2luZCwgYXJncyB3aXRoXG4gICAgIHwgUmVxdWlyZWQsIFsgc2V4cCBdIC0+XG4gICAgICAgY29udiBzZXhwLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzXG4gICAgIHwgRGVmYXVsdCBfLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IE9taXRfbmlsLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IFNleHBfb3B0aW9uLCBbIHNleHAgXSAtPlxuICAgICAgICggU29tZSAoY29udiBzZXhwKVxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9saXN0LCBbIHNleHAgXSAtPlxuICAgICAgICggbGlzdF9vZl9zZXhwIGNvbnYgc2V4cFxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9hcnJheSwgWyBzZXhwIF0gLT5cbiAgICAgICAoIGFycmF5X29mX3NleHAgY29udiBzZXhwXG4gICAgICAgLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzIClcbiAgICAgfCBTZXhwX2Jvb2wsIFtdIC0+XG4gICAgICAgdHJ1ZSwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICAoKiBtYWxmb3JtZWQgZmllbGQgb2Ygc29tZSBraW5kLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgICAgfCBfLCBfIC0+IHBhcnNlX3JlY29yZF9zbG93IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcylcbiAgKCogbWFsZm9ybWVkIG9yIG91dC1vZi1vcmRlciBmaWVsZCwgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gIHwgXyAtPiBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHNcblxuYW5kIHBhcnNlX3NwaW5lX2Zhc3RcbiAgOiB0eXBlIGEuXG4gICAgZmllbGRzOmEgRmllbGRzLnRcbiAgICAtPiBpbmRleDooc3RyaW5nIC0+IGludClcbiAgICAtPiBleHRyYTpib29sXG4gICAgLT4gc2VlbjppbnRcbiAgICAtPiBTZXhwLnQgbGlzdFxuICAgIC0+IGFcbiAgPVxuICBmdW4gfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzIC0+XG4gIG1hdGNoIGZpZWxkcyB3aXRoXG4gIHwgRmllbGQgXyAtPiBwYXJzZV9maWVsZF9mYXN0IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwc1xuICB8IEVtcHR5IC0+XG4gICAgKG1hdGNoIHNleHBzIHdpdGhcbiAgICAgfCBbXSAtPiAoKVxuICAgICB8IF8gOjogXyAtPlxuICAgICAgICgqIGV4dHJhIHNleHBzLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgICAgICBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMpXG47O1xuXG5sZXQgcGFyc2VfcmVjb3JkX2Zhc3QgfmZpZWxkcyB+aW5kZXggfmV4dHJhIHNleHBzID1cbiAgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW46MCBzZXhwc1xuOztcblxuKCogRW50cnkgcG9pbnRzLiAqKVxuXG5sZXQgcmVjb3JkX29mX3NleHBzXG4gICAgICB+Y2FsbGVyXG4gICAgICB+Y29udGV4dFxuICAgICAgfmZpZWxkc1xuICAgICAgfmluZGV4X29mX2ZpZWxkXG4gICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICB+Y3JlYXRlXG4gICAgICBzZXhwc1xuICA9XG4gIGxldCBhbGxvd19leHRyYV9maWVsZHMgPVxuICAgIGFsbG93X2V4dHJhX2ZpZWxkcyB8fCBub3QgIVNleHBfY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gIGluXG4gIG1hdGNoXG4gICAgcGFyc2VfcmVjb3JkX2Zhc3QgfmZpZWxkcyB+aW5kZXg6aW5kZXhfb2ZfZmllbGQgfmV4dHJhOmFsbG93X2V4dHJhX2ZpZWxkcyBzZXhwc1xuICB3aXRoXG4gIHwgdmFsdWUgLT4gY3JlYXRlIHZhbHVlXG4gIHwgZXhjZXB0aW9uIE1hbGZvcm1lZCBtYWxmb3JtZWQgLT4gTWFsZm9ybWVkLnJhaXNlIG1hbGZvcm1lZCB+Y2FsbGVyIH5jb250ZXh0XG47O1xuXG5sZXQgcmVjb3JkX29mX3NleHAgfmNhbGxlciB+ZmllbGRzIH5pbmRleF9vZl9maWVsZCB+YWxsb3dfZXh0cmFfZmllbGRzIH5jcmVhdGUgc2V4cCA9XG4gIG1hdGNoIChzZXhwIDogU2V4cC50KSB3aXRoXG4gIHwgQXRvbSBfIGFzIGNvbnRleHQgLT4gcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGNhbGxlciBjb250ZXh0XG4gIHwgTGlzdCBzZXhwcyBhcyBjb250ZXh0IC0+XG4gICAgcmVjb3JkX29mX3NleHBzXG4gICAgICB+Y2FsbGVyXG4gICAgICB+Y29udGV4dFxuICAgICAgfmZpZWxkc1xuICAgICAgfmluZGV4X29mX2ZpZWxkXG4gICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICB+Y3JlYXRlXG4gICAgICBzZXhwc1xuOztcbiIsIigqIFRoZSBbZ2xvYmFsaXplX3tib29sLGNoYXIsdW5pdH1dIGZ1bmN0aW9ucyBhcmUgd3JpdHRlbiBhcyBtYXRjaGVzIHBsdXMgdGhlIGlkZW50aXR5XG4gICBmdW5jdGlvbiBzbyB0aGF0IHRoZSB0eXBlIGNoZWNrZXIgY2FuIGdpdmUgdGhlbSB0aGUgZGVzaXJlZCB0eXBlLCB3aXRob3V0IGhhdmluZyB0byBkb1xuICAgYW55dGhpbmcgc3BlY2lhbC4gIEhvd2V2ZXIsIFtnbG9iYWxpemVfaW50XSBjYW5ub3QgYmUgd3JpdHRlbiB0aGlzIHdheSwgc28gd2UgcmVzb3J0IHRvXG4gICB1c2luZyBhbiBbZXh0ZXJuYWxdLiAqKVxuXG5sZXQgZ2xvYmFsaXplX2Jvb2wgPSBmdW5jdGlvblxuICB8ICh0cnVlIHwgZmFsc2UpIGFzIGIgLT4gYlxuOztcblxubGV0IGdsb2JhbGl6ZV9jaGFyID0gZnVuY3Rpb25cbiAgfCAnXFx4MDAnIC4uICdcXHhGRicgYXMgYyAtPiBjXG47O1xuXG5leHRlcm5hbCBnbG9iYWxpemVfZmxvYXQgOiAoZmxvYXRbQGxvY2FsXSkgLT4gZmxvYXQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50IDogKGludFtAbG9jYWxdKSAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50MzIgOiAoaW50MzJbQGxvY2FsXSkgLT4gaW50MzIgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50NjQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50NjQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfbmF0aXZlaW50IDogKG5hdGl2ZWludFtAbG9jYWxdKSAtPiBuYXRpdmVpbnQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfYnl0ZXMgOiAoYnl0ZXNbQGxvY2FsXSkgLT4gYnl0ZXMgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfc3RyaW5nIDogKHN0cmluZ1tAbG9jYWxdKSAtPiBzdHJpbmcgPSBcImNhbWxfb2JqX2R1cFwiXG5cbmxldCBnbG9iYWxpemVfdW5pdCAoKCkgYXMgdSkgPSB1XG5cbmV4dGVybmFsIGdsb2JhbGl6ZV9hcnJheScgOiAoJ2EgYXJyYXlbQGxvY2FsXSkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfb2JqX2R1cFwiXG5cbmxldCBnbG9iYWxpemVfYXJyYXkgXyBhID0gZ2xvYmFsaXplX2FycmF5JyBhXG5cbmxldCByZWMgZ2xvYmFsaXplX2xpc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+IGYgeCA6OiBnbG9iYWxpemVfbGlzdCBmIHhzXG47O1xuXG5sZXQgZ2xvYmFsaXplX29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuOztcblxubGV0IGdsb2JhbGl6ZV9yZXN1bHQgZ2xvYmFsaXplX2EgZ2xvYmFsaXplX2IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIGEgLT4gT2sgKGdsb2JhbGl6ZV9hIGEpXG4gIHwgRXJyb3IgYiAtPiBFcnJvciAoZ2xvYmFsaXplX2IgYilcbjs7XG5cbmxldCBnbG9iYWxpemVfcmVmJyByID0gcmVmICFyXG5sZXQgZ2xvYmFsaXplX3JlZiBfIHIgPSBnbG9iYWxpemVfcmVmJyByXG4iLCIoKiogUHJpbWl0aXZlcyBmb3IgcG9seW1vcnBoaWMgY29tcGFyZS4gKilcblxuKCpfIFBvbHltb3JwaGljIGNvbXBpbGVyIHByaW1pdGl2ZXMgY2FuJ3QgYmUgYWxpYXNlcyBhcyB0aGlzIGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAgaW5saW5pbmcuIChJZiBhbGlhc2VkIHdpdGhvdXQgYSB0eXBlIGFubm90YXRpb24sIHRoZSBjb21waWxlciB3b3VsZCBpbXBsZW1lbnQgdGhlbVxuICB1c2luZyB0aGUgZ2VuZXJpYyBjb2RlIGRvaW5nIGEgQyBjYWxsLCBhbmQgaXQncyB0aGlzIGNvZGUgdGhhdCB3b3VsZCBiZSBpbmxpbmVkLikgQXMgYVxuICByZXN1bHQgd2UgaGF2ZSB0byBjb3B5IHRoZSBbZXh0ZXJuYWwgLi4uXSBkZWNsYXJhdGlvbiBoZXJlLiAqKVxuZXh0ZXJuYWwgKCA8ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA9ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPiApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoID49ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBhc2NlbmRpbmcgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBjb21wYXJlIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbmxldCBtYXggeCB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxubGV0IG1pbiB4IHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBbSW1wb3J0XS4gIEl0IGlzIGFpbWVkIGF0IG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIHN0YW5kYXJkXG4gICBjb21iaW5hdG9ycyBmb3IgW3NleHBfb2ZdLCBbb2Zfc2V4cF0sIFtjb21wYXJlXSBhbmQgW2hhc2hdIGFuZCBhcmUgaW5jbHVkZWQgaW5cbiAgIFtJbXBvcnRdLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAoKiBUaGVzZSBtb2R1bGVzIGFyZSByZWRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0KVxuICBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG50eXBlICdhIHJlZiA9ICdhIFN0ZGxpYi5yZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbigqIFJlc2h1ZmZsZSBbU3RkbGliXSBzbyB0aGF0IHdlIGNob29zZSB0aGUgbW9kdWxlcyB1c2luZyBsYWJlbHMgd2hlbiBhdmFpbGFibGUuICopXG5tb2R1bGUgU3RkbGliID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliXG4gIGluY2x1ZGUgU3RkbGliLlN0ZExhYmVsc1xuICBpbmNsdWRlIFN0ZGxpYi5Nb3JlTGFiZWxzXG5lbmRcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuZXh0ZXJuYWwgKCAmJiApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgbm90IDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuKCogV2UgdXNlIFtPYmoubWFnaWNdIGhlcmUgYXMgb3RoZXIgaW1wbGVtZW50YXRpb25zIGdlbmVyYXRlIGEgY29uZGl0aW9uYWwganVtcCBhbmQgdGhlXG4gICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGlzIG5vdGljZWFibGUuICopXG5sZXQgYm9vbF90b19pbnQgKHggOiBib29sKSA6IGludCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuXG4oKiBUaGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5ICopXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgKCAhPSApID0gU3RkbGliLiggIT0gKVxubGV0ICggKiApID0gU3RkbGliLiggKiApXG5sZXQgKCAqKiApID0gU3RkbGliLiggKiogKVxubGV0ICggKi4gKSA9IFN0ZGxpYi4oICouIClcbmxldCAoICsgKSA9IFN0ZGxpYi4oICsgKVxubGV0ICggKy4gKSA9IFN0ZGxpYi4oICsuIClcbmxldCAoIC0gKSA9IFN0ZGxpYi4oIC0gKVxubGV0ICggLS4gKSA9IFN0ZGxpYi4oIC0uIClcbmxldCAoIC8gKSA9IFN0ZGxpYi4oIC8gKVxubGV0ICggLy4gKSA9IFN0ZGxpYi4oIC8uIClcblxubW9kdWxlIFBvbHkgPSBQb2x5MCAoKiogQGNhbm9uaWNhbCBCYXNlLlBvbHkgKilcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgKCogRGVjbGFyZWQgYXMgZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX2FwcGx5X1ggd3JhcHBpbmcgZXZlbiB3aGVuXG4gICAgIGNvbXBpbGluZyB3aXRob3V0IGNyb3NzIGxpYnJhcnkgaW5saW5pbmcuICopXG4gIGV4dGVybmFsICggPSApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbiAgZXh0ZXJuYWwgY29tcGFyZSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPCApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmVcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGludFxuICAgID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBib29sKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBib29sKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBib29sKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBib29sKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJvb2wpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBib29sKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogY2hhcikgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogY2hhcikgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBjaGFyKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogY2hhcikgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCBpIHggPSBTdGRsaWIuVWNoYXIudG9faW50IHhcbiAgbGV0ICggPCApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIChpIHgpIChpIHkpXG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIChpIHgpIChpIHkpXG4gIGxldCAoIDw+ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PiApIChpIHgpIChpIHkpXG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPj0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgKGkgeCkgKGkgeSlcblxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuYXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5kZXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSAoaSB4KSAoaSB5KVxuICBsZXQgZXF1YWwgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgKGkgeCkgKGkgeSlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBmbG9hdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogZmxvYXQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogZmxvYXQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBmbG9hdCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHN0cmluZykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHN0cmluZykgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IHN0cmluZykgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJ5dGVzKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBieXRlcykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBieXRlcykgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGJ5dGVzKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbigqIFRoaXMgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gc3BlY2lhbGl6ZSBpdCBhcyBhXG4gICBkaXJlY3Qgc2V0IG9yIGNhbWxfbW9kaWZ5ICopXG5leHRlcm5hbCAoIDo9ICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgd29uJ3QgdW5ib3hcbiAgIHJlZmVyZW5jZXMgKilcbmV4dGVybmFsICggISApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gKCdhIHJlZltAbG9jYWxfb3B0XSkgPSBcIiVtYWtlbXV0YWJsZVwiXG5cbmxldCAoIEAgKSA9IFN0ZGxpYi4oIEAgKVxubGV0ICggXiApID0gU3RkbGliLiggXiApXG5sZXQgKCB+LSApID0gU3RkbGliLiggfi0gKVxubGV0ICggfi0uICkgPSBTdGRsaWIuKCB+LS4gKVxubGV0ICggYXNyICkgPSBTdGRsaWIuKCBhc3IgKVxubGV0ICggbGFuZCApID0gU3RkbGliLiggbGFuZCApXG5sZXQgbG5vdCA9IFN0ZGxpYi5sbm90XG5sZXQgKCBsb3IgKSA9IFN0ZGxpYi4oIGxvciApXG5sZXQgKCBsc2wgKSA9IFN0ZGxpYi4oIGxzbCApXG5sZXQgKCBsc3IgKSA9IFN0ZGxpYi4oIGxzciApXG5sZXQgKCBseG9yICkgPSBTdGRsaWIuKCBseG9yIClcbmxldCAoIG1vZCApID0gU3RkbGliLiggbW9kIClcbmxldCBhYnMgPSBTdGRsaWIuYWJzXG5sZXQgZmFpbHdpdGggPSBTdGRsaWIuZmFpbHdpdGhcbmxldCBmc3QgPSBTdGRsaWIuZnN0XG5sZXQgaW52YWxpZF9hcmcgPSBTdGRsaWIuaW52YWxpZF9hcmdcbmxldCBzbmQgPSBTdGRsaWIuc25kXG5cbigqIFtyYWlzZV0gbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBhcyB0aGUgY29tcGlsZXIgYXV0b21hdGljYWxseSByZXBsYWNlc1xuICAgJyVyYWlzZScgYnkgJyVyZXJhaXNlJyB3aGVuIGFwcHJvcHJpYXRlLiAqKVxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxubGV0IHBoeXNfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5cbmV4dGVybmFsIGRlY3IgOiAoaW50IHJlZltAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWRlY3JcIlxuZXh0ZXJuYWwgaW5jciA6IChpbnQgcmVmW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaW5jclwiXG5cbigqIHVzZWQgYnkgc2V4cF9jb252LCB3aGljaCBmbG9hdDAgZGVwZW5kcyBvbiB0aHJvdWdoIG9wdGlvbiAqKVxubGV0IGZsb2F0X29mX3N0cmluZyA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdcblxuKCogW2FtX3Rlc3RpbmddIGlzIHVzZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGluIHRlc3RpbmcgbW9kZSwgc3VjaFxuICAgYXMgaW4gW3JhbmRvbS5tbF0uICBbYW1fdGVzdGluZ10gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW0Jhc2VfYW1fdGVzdGluZ10sIGEgd2VhayBDL2pzXG4gICBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFtmYWxzZV0sIGJ1dCB3aGVuIGxpbmtpbmcgYW4gaW5saW5lLXRlc3QtcnVubmVyIGV4ZWN1dGFibGUsIGlzXG4gICBvdmVycmlkZGVuIGJ5IGFub3RoZXIgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbdHJ1ZV0uICopXG5leHRlcm5hbCBhbV90ZXN0aW5nIDogdW5pdCAtPiBib29sID0gXCJCYXNlX2FtX3Rlc3RpbmdcIlxuXG5sZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmcgKClcbiIsIigqIFtJbnQwXSBkZWZpbmVzIGludGVnZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbU3RkbGliXS4gW0ludDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGVcbiAgIHBhcnQgb2YgW1N0ZGxpYl0gdGhhdCBbQmFzZV0gdXNlcyBmb3IgaW50ZWdlcnMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGludDAubWwgc2hvdWxkIHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgdGhyb3VnaCBbU3RkbGliXS4gW0ludDBdIGhhc1xuICAgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgaW50cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuSW50XSBpbiBidWlsZFxuICAgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgSW50ICA9IEludDBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgSW50ID0gSW50MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcFxuICAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5JbnRdLiAqKVxuXG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9pbnRcbmxldCBvZl9zdHJpbmcgPSBTdGRsaWIuaW50X29mX3N0cmluZ1xubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuaW50X29mX3N0cmluZ19vcHRcbmxldCB0b19mbG9hdCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdCA9IFN0ZGxpYi5pbnRfb2ZfZmxvYXRcbmxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IFN0ZGxpYi5taW5faW50XG5sZXQgc3VjYyA9IFN0ZGxpYi5zdWNjXG5sZXQgcHJlZCA9IFN0ZGxpYi5wcmVkXG4iLCJvcGVuISBJbXBvcnQwXG5pbmNsdWRlIFN0ZGxpYi5QcmludGZcblxuKCoqIGZhaWx3aXRoLCBpbnZhbGlkX2FyZywgYW5kIGV4aXQgYWNjZXB0aW5nIHByaW50ZidzIGZvcm1hdC4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZhaWx3aXRoZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gZmFpbHdpdGggcykgZm10XG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9hcmdmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBpbnZhbGlkX2FyZyBzKSBmbXRcbiIsIigqIFtTeXMwXSBkZWZpbmVzIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW1N0ZGxpYi5TeXNdLiAgW1N5czBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZlxuICAgW1N0ZGxpYi5TeXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3lzLm1sXG4gICBzaG91bGQgdXNlIFtTdGRsaWIuU3lzXS4gW1N5czBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlXG4gICBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHRoZXNlXG4gICBmdW5jdGlvbnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN5c10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIFN5cyA9IFN5czBdLiAgRGVmaW5pbmcgW21vZHVsZSBTeXMgPSBTeXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlXG4gICBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN5c10uICopXG5cbm9wZW4hIEltcG9ydDBcblxudHlwZSBiYWNrZW5kX3R5cGUgPSBTdGRsaWIuU3lzLmJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcblxubGV0IGJhY2tlbmRfdHlwZSA9IFN0ZGxpYi5TeXMuYmFja2VuZF90eXBlXG5sZXQgaW50ZXJhY3RpdmUgPSBTdGRsaWIuU3lzLmludGVyYWN0aXZlXG5sZXQgb3NfdHlwZSA9IFN0ZGxpYi5TeXMub3NfdHlwZVxubGV0IHVuaXggPSBTdGRsaWIuU3lzLnVuaXhcbmxldCB3aW4zMiA9IFN0ZGxpYi5TeXMud2luMzJcbmxldCBjeWd3aW4gPSBTdGRsaWIuU3lzLmN5Z3dpblxubGV0IHdvcmRfc2l6ZV9pbl9iaXRzID0gU3RkbGliLlN5cy53b3JkX3NpemVcbmxldCBpbnRfc2l6ZV9pbl9iaXRzID0gU3RkbGliLlN5cy5pbnRfc2l6ZVxubGV0IGJpZ19lbmRpYW4gPSBTdGRsaWIuU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IFN0ZGxpYi5TeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gU3RkbGliLlN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5sZXQgcnVudGltZV92YXJpYW50ID0gU3RkbGliLlN5cy5ydW50aW1lX3ZhcmlhbnRcbmxldCBydW50aW1lX3BhcmFtZXRlcnMgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfcGFyYW1ldGVyc1xubGV0IGFyZ3YgPSBTdGRsaWIuU3lzLmFyZ3ZcbmxldCBnZXRfYXJndiAoKSA9IFN0ZGxpYi5TeXMuYXJndlxubGV0IG9jYW1sX3ZlcnNpb24gPSBTdGRsaWIuU3lzLm9jYW1sX3ZlcnNpb25cbmxldCBlbmFibGVfcnVudGltZV93YXJuaW5ncyA9IFN0ZGxpYi5TeXMuZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcbmxldCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuXG5sZXQgZ2V0ZW52X2V4biB2YXIgPVxuICB0cnkgU3RkbGliLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCBTdGRsaWIuTm90X2ZvdW5kIC0+XG4gICAgUHJpbnRmLmZhaWx3aXRoZiBcIlN5cy5nZXRlbnZfZXhuOiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBpcyBub3Qgc2V0XCIgdmFyICgpXG47O1xuXG5sZXQgZ2V0ZW52IHZhciA9XG4gIG1hdGNoIFN0ZGxpYi5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVvcGFxdWVcIlxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5X2dsb2JhbCA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxuZXhjZXB0aW9uIEJyZWFrID0gU3RkbGliLlN5cy5CcmVha1xuIiwiKCogW0FycmF5MF0gZGVmaW5lcyBhcnJheSBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXNcbiAgIG9mIFtTdGRsaWIuQXJyYXldLiAgW0FycmF5MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQXJyYXldXG4gICB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGFycmF5MC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQXJyYXldLlxuICAgW0FycmF5MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgYXJyYXlzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5BcnJheV0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkXG4gICBkbyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXS4gIFRoaXMgaW5jbHVkZXMgdXNlcyBvZiBzdWJzY3JpcHQgc3ludGF4IChbeC4oaSldLCBbeC4oaSkgPC1cbiAgIGVdKSwgd2hpY2ggdGhlIE9DYW1sIHBhcnNlciBkZXN1Z2FycyBpbnRvIGNhbGxzIHRvIFtBcnJheS5nZXRdIGFuZCBbQXJyYXkuc2V0XS5cbiAgIERlZmluaW5nIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbVxuICAgbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQXJyYXldLiAqKVxuXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2xvY2FsIDogaW50IC0+ICdhIC0+ICgnYSBhcnJheVtAbG9jYWxdKSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuICBleHRlcm5hbCBnZXQgOiAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgIDogIHNyYzooJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6KCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGRzdF9wb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmVuZFxuXG5pbmNsdWRlIEFycmF5XG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICB0cnkgY3JlYXRlIGxlbiB4IHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgY3JlYXRlX2xvY2FsIH5sZW4geCA9XG4gIFxuICAgICh0cnkgY3JlYXRlX2xvY2FsIGxlbiB4IHdpdGhcbiAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfbG9jYWwgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKCkpXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbiA9XG4gIHRyeSBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCBsZW4gd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgYXBwZW5kID0gU3RkbGliLkFycmF5LmFwcGVuZFxubGV0IGJsaXQgPSBTdGRsaWIuQXJyYXkuYmxpdFxubGV0IGNvbmNhdCA9IFN0ZGxpYi5BcnJheS5jb25jYXRcbmxldCBjb3B5ID0gU3RkbGliLkFycmF5LmNvcHlcbmxldCBmaWxsID0gU3RkbGliLkFycmF5LmZpbGxcblxubGV0IGluaXQgbGVuIH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IGNyZWF0ZSB+bGVuIChmIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIEludDAucHJlZCBsZW4gZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBtYWtlX21hdHJpeCA9IFN0ZGxpYi5BcnJheS5tYWtlX21hdHJpeFxubGV0IG9mX2xpc3QgPSBTdGRsaWIuQXJyYXkub2ZfbGlzdFxubGV0IHN1YiA9IFN0ZGxpYi5BcnJheS5zdWJcbmxldCB0b19saXN0ID0gU3RkbGliLkFycmF5LnRvX2xpc3RcblxubGV0IGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSBsZW5ndGggdCAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgdCBpKSAhclxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgbWFwIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgfmxlbiAoZiAodW5zYWZlX2dldCB0IDApKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBtYXBpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSB+bGVuIChmIDAgKHVuc2FmZV9nZXQgdCAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBzdGFibGVfc29ydCB0IH5jb21wYXJlID0gU3RkbGliLkFycmF5LnN0YWJsZV9zb3J0IHQgfmNtcDpjb21wYXJlXG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGVsdF9pID0gdC4oaSkgaW5cbiAgbGV0IGVsdF9qID0gdC4oaikgaW5cbiAgdW5zYWZlX3NldCB0IGkgZWx0X2o7XG4gIHVuc2FmZV9zZXQgdCBqIGVsdF9pXG47O1xuIiwiKCogW0NoYXIwXSBkZWZpbmVzIGNoYXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbU3RkbGliLkNoYXJdLiAgW0NoYXIwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW1N0ZGxpYi5DaGFyXSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBjaGFyMC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQ2hhcl0uXG4gICBbQ2hhcjBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGNoYXJzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5DaGFyXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgQ2hhciA9IENoYXIwXS4gIERlZmluaW5nIFttb2R1bGUgQ2hhciA9IENoYXIwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkNoYXJdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5sZXQgZXNjYXBlZCA9IFN0ZGxpYi5DaGFyLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBTdGRsaWIuQ2hhci5sb3dlcmNhc2VfYXNjaWlcbmxldCB0b19pbnQgPSBTdGRsaWIuQ2hhci5jb2RlXG5sZXQgdW5zYWZlX29mX2ludCA9IFN0ZGxpYi5DaGFyLnVuc2FmZV9jaHJcbmxldCB1cHBlcmNhc2UgPSBTdGRsaWIuQ2hhci51cHBlcmNhc2VfYXNjaWlcblxuKCogV2UgdXNlIG91ciBvd24gcmFuZ2UgdGVzdCB3aGVuIGNvbnZlcnRpbmcgaW50ZWdlcnMgdG8gY2hhcnMgcmF0aGVyIHRoYW5cbiAgIGNhbGxpbmcgW1N0ZGxpYi5DaGFyLmNocl0gYmVjYXVzZSBpdCdzIHNpbXBsZSBhbmQgaXQgc2F2ZXMgdXMgYSBmdW5jdGlvbiBjYWxsXG4gICBhbmQgdGhlIHRyeS13aXRoIChleGNlcHRpb25zIGNvc3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdvcmxkIHdpdGggYmFja3RyYWNlcykuICopXG5sZXQgaW50X2lzX29rIGkgPSAwIDw9IGkgJiYgaSA8PSAyNTVcbmxldCBtaW5fdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDBcbmxldCBtYXhfdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDI1NVxubGV0IG9mX2ludCBpID0gaWYgaW50X2lzX29rIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2ZfaW50X2V4biBpID1cbiAgaWYgaW50X2lzX29rIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLm9mX2ludF9leG4gZ290IGludGVnZXIgb3V0IG9mIHJhbmdlOiAlZFwiIGkgKClcbjs7XG5cbmxldCBlcXVhbCAodDEgOiBjaGFyKSB0MiA9IFBvbHkuZXF1YWwgdDEgdDJcbiIsIigqIFtMaXN0MF0gZGVmaW5lcyBsaXN0IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW1N0ZGxpYi5MaXN0XS4gIFtMaXN0MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuTGlzdF0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gbGlzdDAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkxpc3RdLlxuICAgW0xpc3QwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBsaXN0cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuTGlzdF0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIExpc3QgPSBMaXN0MF0uICBEZWZpbmluZyBbbW9kdWxlIExpc3QgPSBMaXN0MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5MaXN0XS4gKilcblxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBoZF9leG4gPSBTdGRsaWIuTGlzdC5oZFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MaXN0Lmxlbmd0aFxubGV0IHJldl9hcHBlbmQgPSBTdGRsaWIuTGlzdC5yZXZfYXBwZW5kXG5sZXQgdGxfZXhuID0gU3RkbGliLkxpc3QudGxcbmxldCB1bnppcCA9IFN0ZGxpYi5MaXN0LnNwbGl0XG5cbigqIFNvbWUgb2YgdGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5cbmxldCByZWMgZXhpc3RzIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCB4IDo6IHhzIC0+IGlmIGYgeCB0aGVuIHRydWUgZWxzZSBleGlzdHMgeHMgfmZcbjs7XG5cbmxldCByZWMgZXhpc3RzMl9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gZmFsc2VcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZiBhMSBhMiB8fCBleGlzdHMyX29rIGwxIGwyIH5mXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG47O1xuXG5sZXQgcmVjIGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gaW5pdFxuICB8IGEgOjogbCAtPiBmb2xkIGwgfmluaXQ6KGYgaW5pdCBhKSB+ZlxuOztcblxubGV0IHJlYyBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiBpbml0XG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGZvbGQyX29rIGwxIGwyIH5mIH5pbml0OihmIGluaXQgYTEgYTIpXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mOihmIFtAbG9jYWxdKSA9IG5vdCAoZXhpc3RzIHQgfmY6KGZ1biB4IC0+IG5vdCAoZiB4KSkpXG5cbmxldCByZWMgZm9yX2FsbDJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZiBhMSBhMiAmJiBmb3JfYWxsMl9vayBsMSBsMiB+ZlxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcbjs7XG5cbmxldCByZWMgaXRlciB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBhIDo6IGwgLT5cbiAgICBmIGE7XG4gICAgaXRlciBsIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiB1bml0KSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAoKVxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPlxuICAgIGYgYTEgYTI7XG4gICAgaXRlcjJfb2sgbDEgbDIgfmZcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG47O1xuXG5sZXQgcmVjIG5vbnRhaWxfbWFwIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IHkgPSBmIHggaW5cbiAgICB5IDo6IG5vbnRhaWxfbWFwIHhzIH5mXG47O1xuXG5sZXQgbm9udGFpbF9tYXBpIHQgfmYgPSBTdGRsaWIuTGlzdC5tYXBpIHQgfmZcbmxldCBwYXJ0aXRpb24gdCB+ZiA9IFN0ZGxpYi5MaXN0LnBhcnRpdGlvbiB0IH5mXG5cbmxldCByZXZfbWFwID1cbiAgbGV0IHJlYyBybWFwX2YgZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGEgOjogbCAtPiBybWFwX2YgZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgZnVuIGwgfmY6KGYgW0Bsb2NhbF0pIC0+IHJtYXBfZiBmIFtdIGxcbjs7XG5cbmxldCByZXZfbWFwMl9vayA9XG4gIGxldCByZWMgcm1hcDJfZiBmIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gYWNjdVxuICAgIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IHJtYXAyX2YgZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBmdW4gbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSAtPiBybWFwMl9mIGYgW10gbDEgbDJcbjs7XG5cbmxldCBzb3J0IGwgfmNvbXBhcmUgPSBTdGRsaWIuTGlzdC5zb3J0IGwgfmNtcDpjb21wYXJlXG5sZXQgc3RhYmxlX3NvcnQgbCB+Y29tcGFyZSA9IFN0ZGxpYi5MaXN0LnN0YWJsZV9zb3J0IGwgfmNtcDpjb21wYXJlXG5cbmxldCByZXYgPSBmdW5jdGlvblxuICB8IChbXSB8IFsgXyBdKSBhcyByZXMgLT4gcmVzXG4gIHwgeCA6OiB5IDo6IHJlc3QgLT4gcmV2X2FwcGVuZCByZXN0IFsgeTsgeCBdXG47O1xuXG5sZXQgZm9sZF9yaWdodCBsIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfIC0+IGZvbGQgfmY6KGZ1biBhIGIgLT4gZiBiIGEpIH5pbml0IChyZXYgbCkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmlnaHQyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IGluaXQgKCogYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgW35mXSBiZWxvdyAqKVxuICB8IF8sIF8gLT4gZm9sZDJfb2sgfmY6KGZ1biBhIGIgYyAtPiBmIGIgYyBhKSB+aW5pdCAocmV2IGwxKSAocmV2IGwyKSBbQG5vbnRhaWxdXG47O1xuIiwiKCpcbiAgIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgcnVudGltZSBzdXBwb3J0IGZvciBbcHB4X2hhc2hdLlxuXG4gICBUaGUgW3BweF9oYXNoXSBzeW50YXggZXh0ZW5zaW9uIHN1cHBvcnRzOiBbQEBkZXJpdmluZyBoYXNoXSBhbmQgWyVoYXNoX2ZvbGQ6IFRZUEVdIGFuZFxuICAgWyVoYXNoOiBUWVBFXVxuXG4gICBGb3IgdHlwZSBbdF0gYSBmdW5jdGlvbiBbaGFzaF9mb2xkX3RdIG9mIHR5cGUgW0hhc2guc3RhdGUgLT4gdCAtPiBIYXNoLnN0YXRlXSBpc1xuICAgZ2VuZXJhdGVkLlxuXG4gICBUaGUgZ2VuZXJhdGVkIFtoYXNoX2ZvbGRfPFQ+XSBmdW5jdGlvbiBpcyBjb21wb3NpdGlvbmFsLCBmb2xsb3dpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGVcbiAgIHR5cGU7IGFsbG93aW5nIHVzZXIgb3ZlcnJpZGVzIGF0IGV2ZXJ5IGxldmVsLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIG9jYW1sJ3MgYnVpbHRpblxuICAgcG9seW1vcnBoaWMgaGFzaGluZyBbSGFzaHRibC5oYXNoXSB3aGljaCBpZ25vcmVzIHVzZXIgb3ZlcnJpZGVzLlxuXG4gICBUaGUgZ2VuZXJhdG9yIGFsc28gcHJvdmlkZXMgYSBkaXJlY3QgaGFzaC1mdW5jdGlvbiBbaGFzaF0gKG5hbWVkIFtoYXNoXzxUPl0gd2hlbiA8VD4gIT1cbiAgIFwidFwiKSBvZiB0eXBlOiBbdCAtPiBIYXNoLmhhc2hfdmFsdWVdLlxuXG4gICBUaGUgZm9sZGluZyBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2hfZm9sZDogVFlQRV1cbiAgIFRoZSBkaXJlY3QgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoOiBUWVBFXVxuKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBIYXNoX2ludGZcblxuKCoqIEJ1aWx0aW4gZm9sZGluZy1zdHlsZSBoYXNoIGZ1bmN0aW9ucywgYWJzdHJhY3RlZCBvdmVyIFtIYXNoX2ludGYuU10gKilcbm1vZHVsZSBGb2xkaW5nIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkJ1aWx0aW5faW50ZlxuICB3aXRoIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGhhc2hfZm9sZF91bml0IHMgKCkgPSBzXG4gIGxldCBoYXNoX2ZvbGRfaW50ID0gSGFzaC5mb2xkX2ludFxuICBsZXQgaGFzaF9mb2xkX2ludDY0ID0gSGFzaC5mb2xkX2ludDY0XG4gIGxldCBoYXNoX2ZvbGRfZmxvYXQgPSBIYXNoLmZvbGRfZmxvYXRcbiAgbGV0IGhhc2hfZm9sZF9zdHJpbmcgPSBIYXNoLmZvbGRfc3RyaW5nXG4gIGxldCBhc19pbnQgZiBzIHggPSBoYXNoX2ZvbGRfaW50IHMgKGYgeClcblxuICAoKiBUaGlzIGlnbm9yZXMgdGhlIHNpZ24gYml0IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyB1bmxpa2VseSB0byBsZWFkIHRvXG4gICAgIGZyZXF1ZW50IGNvbGxpc2lvbnMgKG1pbl92YWx1ZSBjb2xsaWRpbmcgd2l0aCAwIGlzIHRoZSBtb3N0IGxpa2VseSBvbmUpLiAgKilcbiAgbGV0IGhhc2hfZm9sZF9pbnQzMiA9IGFzX2ludCBTdGRsaWIuSW50MzIudG9faW50XG4gIGxldCBoYXNoX2ZvbGRfY2hhciA9IGFzX2ludCBDaGFyLnRvX2ludFxuXG4gIGxldCBoYXNoX2ZvbGRfYm9vbCA9XG4gICAgYXNfaW50IChmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IDFcbiAgICAgIHwgZmFsc2UgLT4gMClcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX25hdGl2ZWludCBzIHggPSBoYXNoX2ZvbGRfaW50NjQgcyAoU3RkbGliLkludDY0Lm9mX25hdGl2ZWludCB4KVxuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIGhhc2hfZm9sZF9lbGVtIHMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBoYXNoX2ZvbGRfaW50IHMgMFxuICAgIHwgU29tZSB4IC0+IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfaW50IHMgMSkgeFxuICA7O1xuXG4gIGxldCByZWMgaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgeCA6OiB4cyAtPiBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIHgpIHhzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgKCogVGhlIFtsZW5ndGhdIG9mIHRoZSBsaXN0IG11c3QgYmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGhhc2gtc3RhdGUgc28gdmFsdWVzIG9mXG4gICAgICAgdHlwZXMgc3VjaCBhcyBbdW5pdCBsaXN0XSAtIChbXSwgWygpXSwgWygpOygpXSwuLikgYXJlIGhhc2hlZCBkaWZmZXJlbnRseS4gKilcbiAgICAoKiBUaGUgW2xlbmd0aF0gbXVzdCBjb21lIGJlZm9yZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgYSB2aW9sYXRpb24gb2YgdGhlIHJ1bGVcbiAgICAgICBlbmZvcmNlZCBieSBQZXJmZWN0X2hhc2guICopXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfaW50IHMgKExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCBpblxuICAgIHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xhenlfdCBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzIChTdGRsaWIuTGF6eS5mb3JjZSB4KVxuICBsZXQgaGFzaF9mb2xkX3JlZl9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAheFxuXG4gIGxldCByZWMgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBhcnJheVxuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IGUgPSBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkgaW5cbiAgICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyBlKSBhcnJheSAoaSArIDEpKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgPVxuICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faVxuICAgICAgKCogW2xlbmd0aF0gbXVzdCBiZSBpbmNvcnBvcmF0ZWQgZm9yIGFycmF5cywgYXMgaXQgaXMgZm9yIGxpc3RzLiBTZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgaGFzaF9mb2xkX2VsZW1cbiAgICAgIChoYXNoX2ZvbGRfaW50IHMgKEFycmF5Lmxlbmd0aCBhcnJheSkpXG4gICAgICBhcnJheVxuICAgICAgMFxuICA7O1xuXG4gICgqIHRoZSBkdXBsaWNhdGlvbiBoZXJlIGlzIGJlY2F1c2Ugd2UgdGhpbmtcbiAgICAgb2NhbWwgY2FuJ3QgZWxpbWluYXRlIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIG90aGVyd2lzZS4gKilcbiAgbGV0IGhhc2hfbmF0aXZlaW50IHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9uYXRpdmVpbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2ludDY0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50NjQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQzMiB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDMyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfY2hhciB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2NoYXIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9ib29sIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfYm9vbCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5cbiAgbGV0IGhhc2hfc3RyaW5nIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9zdHJpbmcgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2Zsb2F0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfZmxvYXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF91bml0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdW5pdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5lbmRcblxubW9kdWxlIEYgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuRnVsbFxuICB3aXRoIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICAgYW5kIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBzZWVkID0gSGFzaC5zZWVkID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBGb2xkaW5nIChIYXNoKVxuXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAoSGFzaC5yZXNldCA/c2VlZCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsaGFzaCA6IHNpZ1xuICBpbmNsdWRlXG4gICAgSGFzaF9pbnRmLlNcbiAgICB3aXRoIHR5cGUgc3RhdGUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zdGF0ZVxuICAgICAoKiBXZSBnaXZlIGEgY29uY3JldGUgdHlwZSBmb3IgW3N0YXRlXSwgYWxiZWl0IG9ubHkgcGFydGlhbGx5IGV4cG9zZWQgKHNlZVxuICAgICAgICBCYXNlX2ludGVybmFsaGFzaF90eXBlcyksIHNvIHRoYXQgaXQgdW5pZmllcyB3aXRoIHRoZSBzYW1lIHR5cGUgaW4gW0Jhc2VfYm9vdF0sXG4gICAgICAgIGFuZCB0byBhbGxvdyBvcHRpbWl6YXRpb25zIGZvciB0aGUgaW1tZWRpYXRlIHR5cGUuICopXG4gICAgIGFuZCB0eXBlIHNlZWQgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zZWVkXG4gICAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5oYXNoX3ZhbHVlXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQ2NCA6IHN0YXRlIC0+IGludDY0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2ludCA6IHN0YXRlIC0+IGludCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfZmxvYXQgOiBzdGF0ZSAtPiBmbG9hdCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9zdHJpbmcgOiBzdGF0ZSAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBnZXRfaGFzaF92YWx1ZSA6IHN0YXRlIC0+IGhhc2hfdmFsdWUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXCJcbiAgW0BAbm9hbGxvY11cbmVuZCA9IHN0cnVjdFxuICBsZXQgZGVzY3JpcHRpb24gPSBcImludGVybmFsaGFzaFwiXG5cbiAgaW5jbHVkZSBCYXNlX2ludGVybmFsaGFzaF90eXBlc1xuXG4gIGxldCBhbGxvYyAoKSA9IGNyZWF0ZV9zZWVkZWQgMFxuICBsZXQgcmVzZXQgPyhzZWVkID0gMCkgX3QgPSBjcmVhdGVfc2VlZGVkIHNlZWRcblxuICBtb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gICAgbGV0IGNvbXBhcmVfc3RhdGUgKGEgOiBzdGF0ZSkgKGIgOiBzdGF0ZSkgPSBjb21wYXJlIChhIDo+IGludCkgKGIgOj4gaW50KVxuICAgIGxldCBzdGF0ZV90b19zdHJpbmcgKHN0YXRlIDogc3RhdGUpID0gSW50LnRvX3N0cmluZyAoc3RhdGUgOj4gaW50KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEludGVybmFsaGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID0gZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAocmVzZXQgP3NlZWQgKGFsbG9jICgpKSkgeClcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gICAgbW9kdWxlIEZvbGRpbmcgPSBGb2xkaW5nIChJbnRlcm5hbGhhc2gpXG4gICAgaW5jbHVkZSBGb2xkaW5nXG5cbiAgICAoKiBbRm9sZGluZ10gcHJvdmlkZXMgc29tZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIFtoYXNoXypdIGZ1bmN0aW9ucyBiZWxvdyxcbiAgICAgICBidXQgdGhleSBhcmUgaW5lZmZpY2llbnQgZm9yIHNvbWUgdXNlLWNhc2VzIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiB0aGUgW2hhc2hfZm9sZF1cbiAgICAgICBmdW5jdGlvbnMuIEF0IHRoaXMgcG9pbnQsIHRoZSBbaGFzaF92YWx1ZV0gdHlwZSBoYXMgYmVlbiBmaXhlZCB0byBbaW50XSwgc28gdGhpc1xuICAgICAgIG1vZHVsZSBjYW4gcHJvdmlkZSBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMuICopXG5cbiAgICBsZXQgaGFzaF9jaGFyID0gQ2hhcjAudG9faW50XG5cbiAgICAoKiBUaGlzIGhhc2ggd2FzIGNob3NlbiBmcm9tIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2JhZGJveS82MjY3NzQzXG5cbiAgICAgICBJdCBhdHRlbXB0cyB0byBmdWxmaWxsIHRoZSBwcmltYXJ5IGdvYWxzIG9mIGEgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbjpcblxuICAgICAgIC0gYSBiaXQgY2hhbmdlIGluIHRoZSBpbnB1dCBzaG91bGQgY2hhbmdlIH4xLzIgb2YgdGhlIG91dHB1dCBiaXRzXG4gICAgICAgLSB0aGUgb3V0cHV0IHNob3VsZCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBvdXRwdXQgcmFuZ2VcbiAgICAgICAtIGlucHV0cyB0aGF0IGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIHNob3VsZG4ndCBsZWFkIHRvIG91dHB1dHMgdGhhdCBhcmUgY2xvc2UgdG9cbiAgICAgICAgIGVhY2ggb3RoZXIuXG4gICAgICAgLSBhbGwgYml0cyBvZiB0aGUgaW5wdXQgYXJlIHVzZWQgaW4gZ2VuZXJhdGluZyB0aGUgb3V0cHV0XG5cbiAgICAgICBJbiBvdXIgY2FzZSB3ZSBhbHNvIHdhbnQgaXQgdG8gYmUgZmFzdCwgbm9uLWFsbG9jYXRpbmcsIGFuZCBpbmxpbmFibGUuICAqKVxuICAgIGxldFtAaW5saW5lIGFsd2F5c10gaGFzaF9pbnQgKHQgOiBpbnQpID1cbiAgICAgIGxldCB0ID0gbG5vdCB0ICsgKHQgbHNsIDIxKSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDMpICsgKHQgbHNsIDgpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMTQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMikgKyAodCBsc2wgNCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyOCkgaW5cbiAgICAgIHQgKyAodCBsc2wgMzEpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2Jvb2wgeCA9IGlmIHggdGhlbiAxIGVsc2UgMFxuXG4gICAgZXh0ZXJuYWwgaGFzaF9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiQmFzZV9oYXNoX2RvdWJsZVwiIFtAQG5vYWxsb2NdXG5cbiAgICBsZXQgaGFzaF91bml0ICgpID0gMFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcbiIsIm9wZW4gSW1wb3J0MFxuXG5sZXQgY29tcGFyZV9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJDb21wYXJlIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbmxldCBlcXVhbF9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJFcXVhbCBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG50eXBlICdhIGNvbXBhcmUgPSAnYSAtPiAnYSAtPiBpbnRcbnR5cGUgJ2EgZXF1YWwgPSAnYSAtPiAnYSAtPiBib29sXG5cbm1vZHVsZSBDb21wYXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjb21wYXJlIDogdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2EgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAoJ2EsICdiKSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAnYyBjb21wYXJlIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEVxdWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdhIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICgnYSwgJ2IpIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAnYyBlcXVhbCAtPiAoJ2EsICdiLCAnYykgdCBlcXVhbFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICBsZXQgY29tcGFyZV9ib29sIDogYm9vbCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2NoYXIgOiBjaGFyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfZmxvYXQgOiBmbG9hdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludCA6IGludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDMyIDogaW50MzIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQ2NCA6IGludDY0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50IDogbmF0aXZlaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfc3RyaW5nIDogc3RyaW5nIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfdW5pdCA6IHVuaXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBjb21wYXJlX2FycmF5IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgaWYgcGh5c19lcXVhbCBhIGJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgICAgaWYgcmV0IDw+IDBcbiAgICAgIHRoZW4gcmV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgICAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCAwKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IFtdLCBfIC0+IC0xXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgeCB5IGluXG4gICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBjb21wYXJlX29wdGlvbiBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgfCBOb25lLCBTb21lIF8gLT4gLTFcbiAgICB8IFNvbWUgXywgTm9uZSAtPiAxXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBjb21wYXJlX2VsdCBhIGJcbiAgOztcblxuICBsZXQgY29tcGFyZV9yZWYgY29tcGFyZV9lbHQgYSBiID0gY29tcGFyZV9lbHQgIWEgIWJcbiAgbGV0IGVxdWFsX2Jvb2wgOiBib29sIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfY2hhciA6IGNoYXIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQgOiBpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQzMiA6IGludDMyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50NjQgOiBpbnQ2NCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA6IG5hdGl2ZWludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3N0cmluZyA6IHN0cmluZyBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3VuaXQgOiB1bml0IGVxdWFsID0gUG9seS5lcXVhbFxuXG4gICgqIFtQb2x5LmVxdWFsXSBpcyBJRUVFIGNvbXBsaWFudCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudCBoZXJlLiAqKVxuICBsZXQgZXF1YWxfZmxvYXQgeCB5ID0gZXF1YWxfaW50IChjb21wYXJlX2Zsb2F0IHggeSkgMFxuXG4gIGxldCBlcXVhbF9hcnJheSBlcXVhbF9lbHQgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8XG4gICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgZXF1YWwgbGVuX2EgbGVuX2JcbiAgICAmJlxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGkgPSBsZW5fYVxuICAgICAgfHxcbiAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgZXF1YWxfZWx0IGwgciAmJiBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCByZWMgZXF1YWxfbGlzdCBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IGVxdWFsX2VsdCB4IHkgJiYgZXF1YWxfbGlzdCBlcXVhbF9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGVxdWFsX2VsdCBhIGJcbiAgOztcblxuICBsZXQgZXF1YWxfcmVmIGVxdWFsX2VsdCBhIGIgPSBlcXVhbF9lbHQgIWEgIWJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIGZvciB1c2UgYnkgcHB4X2hhc2gsIGFuZCBpcyB0aHVzIG5vdCBpbiB0aGUgaW50ZXJmYWNlIG9mIEJhc2UuICopXG5tb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBIYXNoID0gSGFzaCAoKiogQGNhbm9uaWNhbCBCYXNlLkhhc2ggKilcbmVuZFxuXG50eXBlICdhIGhhc2hfZm9sZCA9IFN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFN0ZC5IYXNoLnN0YXRlXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiB0IGhhc2hfZm9sZFxuICAgIHZhbCBoYXNoIDogdCAtPiBTdGQuSGFzaC5oYXNoX3ZhbHVlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2EgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYiBoYXNoX2ZvbGQgLT4gKCdhLCAnYikgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3RcbiAgICAgIDogICdhIGhhc2hfZm9sZFxuICAgICAgLT4gJ2IgaGFzaF9mb2xkXG4gICAgICAtPiAnYyBoYXNoX2ZvbGRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGhhc2hfZm9sZFxuICBlbmRcbmVuZFxuIiwib3BlbiBIYXNoLkJ1aWx0aW5cbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPSBTZXhwbGliMC5TZXhwLnQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG5sZXQgcmVjIGNvbXBhcmUgPVxuICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwMV8gYl9fMDAyX1xuICAgICB0aGVuIDBcbiAgICAgZWxzZSAoXG4gICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICAgfCBBdG9tIF9hX18wMDNfLCBBdG9tIF9iX18wMDRfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDNfIF9iX18wMDRfXG4gICAgICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgICAgfCBMaXN0IF9hX18wMDVfLCBMaXN0IF9iX18wMDZfIC0+IGNvbXBhcmVfbGlzdCBjb21wYXJlIF9hX18wMDVfIF9iX18wMDZfKVxuICAgICAgIDogdCAtPiB0IC0+IGludClcbjs7XG5cbmxldCByZWMgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEF0b20gX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBfYTBcbiAgICAgfCBMaXN0IF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX3QgaHN2IF9hMFxuICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuXG5hbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfY29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5sZXQgb2Zfc3RyaW5nID0gKClcbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9XG4gIHwgVzMyXG4gIHwgVzY0XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgVzMyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlczMlwiXG4gICAgfCBXNjQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzY0XCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IG51bV9iaXRzID0gZnVuY3Rpb25cbiAgfCBXMzIgLT4gMzJcbiAgfCBXNjQgLT4gNjRcbjs7XG5cbmxldCB3b3JkX3NpemUgPVxuICBtYXRjaCBTeXMud29yZF9zaXplX2luX2JpdHMgd2l0aFxuICB8IDMyIC0+IFczMlxuICB8IDY0IC0+IFc2NFxuICB8IF8gLT4gZmFpbHdpdGggXCJ1bmtub3duIHdvcmQgc2l6ZVwiXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmxldCByID0gcmVmIFsgXCJCYXNlLlNleHAucHBfaHVtXCIgXVxubGV0IGFsbCAoKSA9ICFyXG5sZXQgcmVnaXN0ZXIgcCA9IHIgOj0gcCA6OiAhclxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBwcCA6IEZvcm1hdHRlci50IC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9wcCAoTSA6IHNpZ1xuICAgIGluY2x1ZGUgU1xuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIGxldCAoKSA9IHJlZ2lzdGVyIChNLm1vZHVsZV9uYW1lIF4gXCIucHBcIilcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXIgKE0gOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbiAgUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgbGV0IHBwIGZvcm1hdHRlciB0ID0gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm9ybWF0dGVyIChNLnRvX3N0cmluZyB0KVxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZXhuIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbltAQEBlbmRdXG5cbmxldCBleGl0ID0gU3RkbGliLmV4aXRcblxuZXhjZXB0aW9uIEZpbmFsbHkgb2YgdCAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGaW5hbGx5XSAoZnVuY3Rpb25cbiAgICB8IEZpbmFsbHkgKGFyZzBfXzAwMV8sIGFyZzFfXzAwMl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfXG4gICAgICBhbmQgcmVzMV9fMDA0XyA9IHNleHBfb2ZfdCBhcmcxX18wMDJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuRmluYWxseVwiOyByZXMwX18wMDNfOyByZXMxX18wMDRfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFJlcmFpc2VkIG9mIHN0cmluZyAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBSZXJhaXNlZF0gKGZ1bmN0aW9uXG4gICAgfCBSZXJhaXNlZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgIGxldCByZXMwX18wMDdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA1X1xuICAgICAgYW5kIHJlczFfXzAwOF8gPSBzZXhwX29mX3QgYXJnMV9fMDA2XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLlJlcmFpc2VkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gU2V4cCBvZiBTZXhwLnRcblxuKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZTpcblxuICAge1tcbiAgICAgZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuICAgICAoKiAuLi4gKilcbiAgICAgW0BAQGVuZF1cbiAgIF19XG5cbiAgIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmEgd3JhcHBpbmcgb2YgWyhTZXhwIC4uLildLiAqKVxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNleHBdIChmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBTZXhwIHNleHBcblxubGV0IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIHQgYmFja3RyYWNlID1cbiAgU3RkbGliLlByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHQgYmFja3RyYWNlXG47O1xuXG5leHRlcm5hbCBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IDogdCAtPiBib29sID0gXCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4blwiXG5cbmxldCByZXJhaXNlIGV4biBzdHIgPVxuICBsZXQgZXhuJyA9IFJlcmFpc2VkIChzdHIsIGV4bikgaW5cbiAgaWYgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG5cbiAgdGhlbiAoXG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuJyBidClcbiAgZWxzZSByYWlzZSBleG4nXG47O1xuXG5sZXQgcmVyYWlzZWYgZXhjIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0ciAoKSAtPiByZXJhaXNlIGV4YyBzdHIpIGZvcm1hdFxubGV0IHRvX3N0cmluZyBleGMgPSBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIChzZXhwX29mX2V4biBleGMpXG5sZXQgdG9fc3RyaW5nX21hY2ggZXhjID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfZXhuXG5cbmxldCBwcm90ZWN0eCB+ZiB4IH4oZmluYWxseSA6IF8gLT4gdW5pdCkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHJlcyAtPlxuICAgIGZpbmFsbHkgeDtcbiAgICByZXNcbiAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKG1hdGNoIGZpbmFsbHkgeCB3aXRoXG4gICAgIHwgKCkgLT4gcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJ0XG4gICAgIHwgZXhjZXB0aW9uIGZpbmFsX2V4biAtPlxuICAgICAgICgqIFVuZm9ydHVuYXRlbHksIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFtmaW5hbF9leG5dIGlzIGRpc2NhcmRlZCBoZXJlLiAqKVxuICAgICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChGaW5hbGx5IChleG4sIGZpbmFsX2V4bikpIGJ0KVxuOztcblxubGV0IHByb3RlY3QgfmYgfmZpbmFsbHkgPSBwcm90ZWN0eCB+ZiAoKSB+ZmluYWxseVxuXG5sZXQgZG9lc19yYWlzZSAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICB0cnlcbiAgICBpZ25vcmUgKGYgKCkgOiBhKTtcbiAgICBmYWxzZVxuICB3aXRoXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBleG5cblxuICAgIGxldCBwcCBwcGYgdCA9XG4gICAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgdCB3aXRoXG4gICAgICB8IFNvbWUgc2V4cCAtPiBTZXhwLnBwX2h1bSBwcGYgc2V4cFxuICAgICAgfCBOb25lIC0+IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RkbGliLlByaW50ZXhjLnRvX3N0cmluZyB0KVxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXhuXCJcbiAgZW5kKVxuXG5sZXQgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2UgPVxuICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCJAWzwyPlVuY2F1Z2h0IGV4Y2VwdGlvbjpAXFxuQFxcbkBbJWFAXUBdQFxcbkAuXCIgcHAgZXhjO1xuICBpZiBTdGRsaWIuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1cyAoKVxuICB0aGVuIFN0ZGxpYi5QcmludGV4Yy5wcmludF9yYXdfYmFja3RyYWNlIFN0ZGxpYi5zdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRlcnJcbjs7XG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMuc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIHByaW50X3dpdGhfYmFja3RyYWNlXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2F1eCB+ZG9fYXRfZXhpdCB+ZXhpdCBmID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4YyAtPlxuICAgIGxldCByYXdfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKCogT25lIHJlYXNvbiB0byBydW4gW2RvX2F0X2V4aXRdIGhhbmRsZXJzIGJlZm9yZSBwcmludGluZyBvdXQgdGhlIGVycm9yIG1lc3NhZ2UgaXNcbiAgICAgICB0aGF0IGl0IGhlbHBzIGN1cnNlcyBhcHBsaWNhdGlvbnMgYnJpbmcgdGhlIHRlcm1pbmFsIGluIGEgZ29vZCBzdGF0ZSwgb3RoZXJ3aXNlIHRoZVxuICAgICAgIGVycm9yIG1lc3NhZ2UgbWlnaHQgZ2V0IGNvcnJ1cHRlZC4gIEFsc28sIHRoZSBPQ2FtbCB0b3AtbGV2ZWwgdW5jYXVnaHQgZXhjZXB0aW9uXG4gICAgICAgaGFuZGxlciBkb2VzIHRoZSBzYW1lLiAqKVxuICAgIGlmIGRvX2F0X2V4aXRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICh0cnkgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5XG4gICAgICAgICAgU3RkbGliLlByaW50Zi5lcHJpbnRmIFwiRXhuLmhhbmRsZV91bmNhdWdodCBjb3VsZCBub3QgcHJpbnQ7IGV4aXRpbmcgYW55d2F5XFxuJSFcIlxuICAgICAgICB3aXRoXG4gICAgICAgIHwgXyAtPiAoKSkpO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID0gaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0IH5kb19hdF9leGl0OnRydWVcblxubGV0IGhhbmRsZV91bmNhdWdodCB+ZXhpdDptdXN0X2V4aXQgZiA9XG4gIGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdDooaWYgbXVzdF9leGl0IHRoZW4gZXhpdCBlbHNlIGlnbm9yZSkgfmRvX2F0X2V4aXQ6bXVzdF9leGl0XG47O1xuXG5sZXQgcmVyYWlzZV91bmNhdWdodCBzdHIgZnVuYyA9XG4gIHRyeSBmdW5jICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICBsZXQgYnQgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoUmVyYWlzZWQgKHN0ciwgZXhuKSkgYnRcbjs7XG5cbmV4dGVybmFsIGNsZWFyX2JhY2t0cmFjZSA6IHVuaXQgLT4gdW5pdCA9IFwiQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3NcIiBbQEBub2FsbG9jXVxuXG5sZXQgcmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgZSA9XG4gICgqIFdlIGNsZWFyIHRoZSBiYWNrdHJhY2UgdG8gcmVkdWNlIGNvbmZ1c2lvbiwgc28gdGhhdCBwZW9wbGUgZG9uJ3QgdGhpbmsgd2hhdGV2ZXJcbiAgICAgaXMgc3RvcmVkIGNvcnJlc3BvbmRzIHRvIHRoaXMgcmFpc2UuICopXG4gIGNsZWFyX2JhY2t0cmFjZSAoKTtcbiAgU3RkbGliLnJhaXNlX25vdHJhY2UgZVxuOztcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBjbGVhcl9iYWNrdHJhY2UgPSBjbGVhcl9iYWNrdHJhY2VcbmVuZFxuIiwiKCogYmVsb25ncyBpbiBDb21tb24sIGJ1dCBtb3ZlZCBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSByZXR1cm4gPSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmxldCB3aXRoX3JldHVybiAodHlwZSBhKSBmID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgKCogUmFpc2VkIHRvIGluZGljYXRlIH5yZXR1cm4gd2FzIGNhbGxlZC4gIExvY2FsIHNvIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB0aWVkIHRvIGFcbiAgICAgICBwYXJ0aWN1bGFyIGNhbGwgb2YgW3dpdGhfcmV0dXJuXS4gKilcbiAgICBleGNlcHRpb24gUmV0dXJuIG9mIGFcbiAgZW5kXG4gIGluXG4gIGxldCBpc19hbGl2ZSA9IHJlZiB0cnVlIGluXG4gIGxldCByZXR1cm4gYSA9XG4gICAgaWYgbm90ICFpc19hbGl2ZVxuICAgIHRoZW4gZmFpbHdpdGggXCJ1c2Ugb2YgW3JldHVybl0gZnJvbSBhIFt3aXRoX3JldHVybl0gdGhhdCBhbHJlYWR5IHJldHVybmVkXCI7XG4gICAgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIChNLlJldHVybiBhKVxuICBpblxuICB0cnlcbiAgICBsZXQgYSA9IGYgeyByZXR1cm4gfSBpblxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIGFcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIChtYXRjaCBleG4gd2l0aFxuICAgICB8IE0uUmV0dXJuIGEgLT4gYVxuICAgICB8IF8gLT4gcmFpc2UgZXhuKVxuOztcblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiBmID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICBmIHsgcmV0dXJuID0gKGZ1biBhIC0+IHJldHVybi5yZXR1cm4gKFNvbWUgYSkpIH07XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IHByZXBlbmQgeyByZXR1cm4gfSB+ZiA9IHsgcmV0dXJuID0gKGZ1biB4IC0+IHJldHVybiAoZiB4KSkgfVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbmV4dGVybmFsIGlnbm9yZSA6IChfW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogdGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgW1N0ZGxpYi5pZ25vcmVdICopXG5cbmxldCBub24gZiB4ID0gbm90IChmIHgpXG5cbmxldCBmb3JldmVyIGYgPVxuICBsZXQgcmVjIGZvcmV2ZXIgKCkgPVxuICAgIGYgKCk7XG4gICAgZm9yZXZlciAoKVxuICBpblxuICB0cnkgZm9yZXZlciAoKSB3aXRoXG4gIHwgZSAtPiBlXG47O1xuXG5leHRlcm5hbCBpZCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlIHR5cGljYWwgdXNlIGNhc2UgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwYXNzIGluIGZ1bmN0aW9uYWwgYXJndW1lbnRzIGFuZCBnZXRcbiAgIGZ1bmN0aW9ucyBhcyBhIHJlc3VsdC4gKilcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IHJlYyBhcHBseV9uX3RpbWVzIH5uIGYgeCA9IGlmIG4gPD0gMCB0aGVuIHggZWxzZSBhcHBseV9uX3RpbWVzIH5uOihuIC0gMSkgZiAoZiB4KVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZfbGFiZWxlZF9mblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBUaGUgZm9sbG93aW5nIGlkZW50aXRpZXMgb3VnaHQgdG8gaG9sZCAoZm9yIHNvbWUgdmFsdWUgb2YgPSk6XG5cbiAgICAgIC0gW3JldHVybiB4ID4+PSBmID0gZiB4XVxuICAgICAgLSBbdCA+Pj0gZnVuIHggLT4gcmV0dXJuIHggPSB0XVxuICAgICAgLSBbKHQgPj49IGYpID4+PSBnID0gdCA+Pj0gZnVuIHggLT4gKGYgeCA+Pj0gZyldXG5cbiAgICAgIE5vdGU6IFs+Pj1dIGlzIHRoZSBpbmZpeCBub3RhdGlvbiBmb3IgW2JpbmRdKSAqKVxuXG4gICgqKiBUaGUgW21hcF0gYXJndW1lbnQgdG8gW01vbmFkLk1ha2VdIHNheXMgaG93IHRvIGltcGxlbWVudCB0aGUgbW9uYWQncyBbbWFwXSBmdW5jdGlvbi5cbiAgICAgIFtgRGVmaW5lX3VzaW5nX2JpbmRdIG1lYW5zIHRvIGRlZmluZSBbbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSldLlxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuXG5cbiAgICAgIFNvbWUgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtNb25hZC5NYWtlXSBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbbWFwXSwgc29cbiAgICAgIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbWFwXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gKCdhIC0+ICdiLCAnYiB0KSBmX2xhYmVsZWRfZm4gXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljID0gQmFzaWNfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBCYXNpY19sb2NhbCA9XG4gIEJhc2ljX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEluZml4X2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuXG4gICgqKiBbdCA+Pj0gZl0gcmV0dXJucyBhIGNvbXB1dGF0aW9uIHRoYXQgc2VxdWVuY2VzIHRoZSBjb21wdXRhdGlvbnMgcmVwcmVzZW50ZWQgYnkgdHdvXG4gICAgICBtb25hZCBlbGVtZW50cy4gIFRoZSByZXN1bHRpbmcgY29tcHV0YXRpb24gZmlyc3QgZG9lcyBbdF0gdG8geWllbGQgYSB2YWx1ZSBbdl0sIGFuZFxuICAgICAgdGhlbiBydW5zIHRoZSBjb21wdXRhdGlvbiByZXR1cm5lZCBieSBbZiB2XS4gKilcbiAgdmFsICggPj49ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmblxuXG4gICgqKiBbdCA+PnwgZl0gaXMgW3QgPj49IChmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS4gKilcbiAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZm5cbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeCA9IEluZml4X2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2Jcbm1vZHVsZSB0eXBlIEluZml4X2xvY2FsID0gSW5maXhfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4X2dlbiA9IHNpZ1xuICAoKiogT3BlbmluZyBhIG1vZHVsZSBvZiB0aGlzIHR5cGUgYWxsb3dzIG9uZSB0byB1c2UgdGhlIFslYmluZF0gYW5kIFslbWFwXSBzeW50YXhcbiAgICAgIGV4dGVuc2lvbnMgZGVmaW5lZCBieSBwcHhfbGV0LCBhbmQgYnJpbmdzIFtyZXR1cm5dIGludG8gc2NvcGUuICopXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICgqKiBUaGVzZSBhcmUgY29udmVuaWVudCB0byBoYXZlIGluIHNjb3BlIHdoZW4gcHJvZ3JhbW1pbmcgd2l0aCBhIG1vbmFkOiAqKVxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIGluY2x1ZGUgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgYm90aCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheCA9XG4gIFN5bnRheF9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTeW50YXhfbG9jYWwgPVxuICBTeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIGluY2x1ZGUgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggOlxuICAgIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgKCoqIFtiaW5kIHQgfmZdID0gW3QgPj49IGZdICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgKCoqIFtyZXR1cm4gdl0gcmV0dXJucyB0aGUgKHRyaXZpYWwpIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyB2LiAqKVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIHQgfmZdIGlzIHQgPj58IGYuICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgKCoqIFtqb2luIHRdIGlzIFt0ID4+PSAoZnVuIHQnIC0+IHQnKV0uICopXG4gIHZhbCBqb2luIDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW2lnbm9yZV9tIHRdIGlzIFttYXAgdCB+ZjooZnVuIF8gLT4gKCkpXS4gIFtpZ25vcmVfbV0gdXNlZCB0byBiZSBjYWxsZWQgW2lnbm9yZV0sXG4gICAgICBidXQgd2UgZGVjaWRlZCB0aGF0IHdhcyBhIGJhZCBuYW1lLCBiZWNhdXNlIGl0IHNoYWRvd2VkIHRoZSB3aWRlbHkgdXNlZFxuICAgICAgW1N0ZGxpYi5pZ25vcmVdLiAgU29tZSBtb25hZHMgc3RpbGwgZG8gW2xldCBpZ25vcmUgPSBpZ25vcmVfbV0gZm9yIGhpc3RvcmljYWxcbiAgICAgIHJlYXNvbnMuICopXG4gIHZhbCBpZ25vcmVfbSA6ICdhIHQgLT4gdW5pdCB0XG5cbiAgdmFsIGFsbCA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcblxuICAoKiogTGlrZSBbYWxsXSwgYnV0IGVuc3VyZXMgdGhhdCBldmVyeSBtb25hZGljIHZhbHVlIGluIHRoZSBsaXN0IHByb2R1Y2VzIGEgdW5pdCB2YWx1ZSxcbiAgICAgIGFsbCBvZiB3aGljaCBhcmUgZGlzY2FyZGVkIHJhdGhlciB0aGFuIGJlaW5nIGNvbGxlY3RlZCBpbnRvIGEgbGlzdC4gKilcbiAgdmFsIGFsbF91bml0IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9XG4gIFNfd2l0aG91dF9zeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9sb2NhbCA9XG4gIFNfd2l0aG91dF9zeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2xvY2FsID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheF9sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4X2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzJfZ2VuID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGdldHMgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgIFRoaXMgaXMgdXNlZCB0byBlbmNvZGUgbW9uYWRzIHdvcmtpbmcgb24gYSBtdWx0aSBwYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgbGlrZVxuICAgICAgKFsoJ2EsJ2IpIHJlc3VsdF0pLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEJhc2ljMl9sb2NhbCA9XG4gIEJhc2ljMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBJbmZpeDJfZ2VuID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdlKSB0LCAoJ2IsICdlKSB0KSBmblxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmblxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MiA9IEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5tb2R1bGUgdHlwZSBJbmZpeDJfbG9jYWwgPSBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4Ml9nZW4gPSBzaWdcbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgbWFwIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdlKSB0IC0+ICgnYiwgJ2UpIHQgLT4gKCdhICogJ2IsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MiA9XG4gIFN5bnRheDJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4Ml9sb2NhbCA9XG4gIFN5bnRheDJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTMl9nZW4gPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIGluY2x1ZGVcbiAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICBpbmNsdWRlXG4gICAgU3ludGF4Ml9nZW5cbiAgICB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG4gICAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG4gICAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggOlxuICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgdmFsIGpvaW4gOiAoKCdhLCAnZSkgdCwgJ2UpIHQgLT4gKCdhLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2UpIHQgLT4gKHVuaXQsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID1cbiAgUzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYiBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTMl9sb2NhbCA9XG4gIFMyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgQmFzaWMzID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgZ2V0IHVuaWZpZWQgYWNyb3NzIGFsbCB0aGVcbiAgICAgIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDMgPSBzaWdcbiAgKCoqIFNhbWUgYXMgSW5maXgsIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBhcmVcbiAgICAgIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MyA9IHNpZ1xuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5cbiAgICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2IsICdkLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2QsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmRcbiAgICAgIGFuZCB0aGlyZCBhcmUgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZCwgJ2UpIHQsICdkLCAnZSkgdCAtPiAoJ2EsICdkLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2QsICdlKSB0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2QsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdkLCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2QsICdlKSB0IGxpc3QgLT4gKHVuaXQsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBzaWdcbiAgKCoqIEluZGV4ZWQgbW9uYWQsIGluIHRoZSBzdHlsZSBvZiBBdGtleS4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBhcmUgY29tcG9zZWRcbiAgICAgIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uIFRvIHNlZSB0aGlzIG1vcmUgY2xlYXJseSwgeW91IGNhbiBsb29rIGF0IHRoZSB0eXBlIG9mIGJpbmQ6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICBdfVxuXG4gICAgICBhbmQgaXNvbGF0ZSBzb21lIG9mIHRoZSB0eXBlIHZhcmlhYmxlcyB0byBzZWUgdGhlaXIgaW5kaXZpZHVhbCBiZWhhdmlvcnM6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogJ2EgICAgICAgICAgICAgLT4gZjooJ2EgLT4gICdiICAgICAgICAgICApIC0+ICAnYlxuICAgICAgICB2YWwgYmluZCA6ICAgICAgJ2ksICdqICAgIC0+ICAgICAgICAgICAgICAgJ2osICdrICAgICAtPiAgICAgJ2ksICdrXG4gICAgICBdfVxuXG4gICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBdGtleS1zdHlsZSBpbmRleGVkIG1vbmFkcywgc2VlOlxuXG4gICAgICB7dlxuICAgICAgICBQYXJhbWV0ZXJpc2VkIE5vdGlvbnMgb2YgQ29tcHV0YXRpb25cbiAgICAgICAgUm9iZXJ0IEF0a2V5XG4gICAgICAgIGh0dHA6Ly9iZW50bmliLm9yZy9wYXJhbW5vdGlvbnMtamZwLnBkZlxuICAgICAgdn0gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5cbiAgICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2IsICdqLCAnaykgdCAtPiAoJ2EgKiAnYiwgJ2ksICdrKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19pbmRleGVkID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgaW5jbHVkZSBTeW50YXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdqLCAnaykgdCwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdrKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnaSwgJ2opIHQgLT4gKHVuaXQsICdpLCAnaikgdFxuICB2YWwgYWxsIDogKCdhLCAnaSwgJ2kpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2ksICdpKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnaSwgJ2kpIHQgbGlzdCAtPiAodW5pdCwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFNfdG9fU19pbmRleGVkIChYIDogUykgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTX2luZGV4ZWRfdG9fUzIgKFggOiBTX2luZGV4ZWQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50XG5lbmRcblxubW9kdWxlIHR5cGUgTW9uYWQgPSBzaWdcbiAgKCoqIEEgbW9uYWQgaXMgYW4gYWJzdHJhY3Rpb24gb2YgdGhlIGNvbmNlcHQgb2Ygc2VxdWVuY2luZyBvZiBjb21wdXRhdGlvbnMuICBBIHZhbHVlIG9mXG4gICAgICB0eXBlIFsnYSBtb25hZF0gcmVwcmVzZW50cyBhIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyBhIHZhbHVlIG9mIHR5cGUgWydhXS4gKilcblxuICBtb2R1bGUgdHlwZSBCYXNpYyA9IEJhc2ljXG4gIG1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMlxuICBtb2R1bGUgdHlwZSBCYXNpYzMgPSBCYXNpYzNcbiAgbW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IEJhc2ljX2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgQmFzaWNfbG9jYWwgPSBCYXNpY19sb2NhbFxuICBtb2R1bGUgdHlwZSBCYXNpYzJfbG9jYWwgPSBCYXNpYzJfbG9jYWxcbiAgbW9kdWxlIHR5cGUgSW5maXggPSBJbmZpeFxuICBtb2R1bGUgdHlwZSBJbmZpeDIgPSBJbmZpeDJcbiAgbW9kdWxlIHR5cGUgSW5maXgzID0gSW5maXgzXG4gIG1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBJbmZpeF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEluZml4X2xvY2FsID0gSW5maXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgSW5maXgyX2xvY2FsID0gSW5maXgyX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFN5bnRheCA9IFN5bnRheFxuICBtb2R1bGUgdHlwZSBTeW50YXgyID0gU3ludGF4MlxuICBtb2R1bGUgdHlwZSBTeW50YXgzID0gU3ludGF4M1xuICBtb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IFN5bnRheF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFN5bnRheF9sb2NhbCA9IFN5bnRheF9sb2NhbFxuICBtb2R1bGUgdHlwZSBTeW50YXgyX2xvY2FsID0gU3ludGF4Ml9sb2NhbFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gU193aXRob3V0X3N5bnRheFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2xvY2FsID0gU193aXRob3V0X3N5bnRheF9sb2NhbFxuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gIG1vZHVsZSB0eXBlIFMzID0gUzNcbiAgbW9kdWxlIHR5cGUgU19pbmRleGVkID0gU19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFNfbG9jYWwgPSBTX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFMyX2xvY2FsID0gUzJfbG9jYWxcblxuICBtb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcbiAgbW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgbW9kdWxlIE1ha2VfaW5kZXhlZCAoWCA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICBtb2R1bGUgTWFrZV9sb2NhbCAoWCA6IEJhc2ljX2xvY2FsKSA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMl9sb2NhbCAoWCA6IEJhc2ljMl9sb2NhbCkgOiBTMl9sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcblxuICAoKiogRGVmaW5lIGEgbW9uYWQgdGhyb3VnaCBhbiBpc29tb3JwaGlzbSB3aXRoIGFuIGV4aXN0aW5nIG1vbmFkLiBGb3IgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSAnYSB0ID0geyB2YWx1ZSA6ICdhIH1cblxuICAgICAgICBpbmNsdWRlIE1vbmFkLk9mX21vbmFkIChNb25hZC5JZGVudCkgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICAgICAgbGV0IHRvX21vbmFkIHsgdmFsdWUgfSA9IHZhbHVlXG4gICAgICAgICAgICBsZXQgb2ZfbW9uYWQgdmFsdWUgPSB7IHZhbHVlIH1cbiAgICAgICAgICBlbmQpXG4gICAgICBdfSAqKVxuICBtb2R1bGUgT2ZfbW9uYWRcbiAgICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQyXG4gICAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkM1xuICAgICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnRcblxuICAoKiogQW4gZWFnZXIgaWRlbnRpdHkgbW9uYWQgd2l0aCBmdW5jdGlvbnMgaGVhdmlseSBhbm5vdGF0ZWQgd2l0aFxuICAgICAgW0BpbmxpbmVkXSBvciBbQGlubGluZSBoaW50XS5cblxuICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIG1hbnVhbGx5IHdyaXR0ZW4sIHJhdGhlciB0aGFuIGJlaW5nXG4gICAgICBjb25zdHJ1Y3RlZCBieSBbTW9uYWQuTWFrZV0uIFRoaXMgZ2l2ZXMgYmV0dGVyIGlubGluaW5nXG4gICAgICBndWFyYW50ZWVzLlxuICAqKVxuICBtb2R1bGUgSWRlbnQgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0ID0gJ2FcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1vbmFkX2ludGZcblxubW9kdWxlIHR5cGUgQmFzaWNfZ2VuZXJhbCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZFxuICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbmVyYWwgKE0gOiBCYXNpY19nZW5lcmFsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgbGV0IG1hcF92aWFfYmluZCBtYSB+ZiA9IE0uYmluZCBtYSB+ZjooZnVuIGEgLT4gTS5yZXR1cm4gKGYgYSkpXG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggTS5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19iaW5kIC0+IG1hcF92aWFfYmluZFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCBhIGIgPSBhID4+PSBmdW4gYSAtPiBiID4+fCBmdW4gYiAtPiBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IGZ1biB0JyAtPiB0J1xuICBsZXQgaWdub3JlX20gdCA9IG1hcCB0IH5mOihmdW4gXyAtPiAoKSlcblxuICBsZXQgYWxsID1cbiAgICBsZXQgcmVjIGxvb3AgdnMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IHZzKVxuICAgICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biB2IC0+IGxvb3AgKHYgOjogdnMpIHRzXG4gICAgaW5cbiAgICBmdW4gdHMgLT4gbG9vcCBbXSB0c1xuICA7O1xuXG4gIGxldCByZWMgYWxsX3VuaXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biAoKSAtPiBhbGxfdW5pdCB0c1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2luZGV4ZWQgKE0gOiBCYXNpY19pbmRleGVkKSA6XG4gIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UzIChNIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgTS50ID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTIgKE0gOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgOj0gKCdhLCAnZCkgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChNIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyX2xvY2FsIChNIDogQmFzaWMyX2xvY2FsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cblxuICBsZXQgbWFwX3ZpYV9iaW5kIG1hIH5mID1cbiAgICBsZXQgcmVzID0gTS5iaW5kIG1hIH5mOihmdW4gYSAtPiBNLnJldHVybiAoZiBhKSkgaW5cbiAgICByZXNcbiAgOztcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBNLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2JpbmQgLT4gbWFwX3ZpYV9iaW5kXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcblxuICAgICAgbGV0IGJvdGggYSBiID1cbiAgICAgICAgbGV0IHJlcyA9XG4gICAgICAgICAgYmluZCBhIH5mOihmdW4gYSAtPlxuICAgICAgICAgICAgbGV0IHJlcyA9IG1hcCBiIH5mOihmdW4gYiAtPiBhLCBiKSBpblxuICAgICAgICAgICAgcmVzKVxuICAgICAgICBpblxuICAgICAgICByZXNcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IEZuLmlkXG5cbiAgbGV0IGlnbm9yZV9tIHQgPVxuICAgIGxldCByZXMgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9sb2NhbCAoTSA6IEJhc2ljX2xvY2FsKSA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID1cbiAgTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2dlbmVyYWwgKE1vbmFkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICB2YWwgYmluZFxuICAgICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbiAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50XG4gICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAgIGVuZCkgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiBhID0gTS5vZl9tb25hZCAoTW9uYWQucmV0dXJuIGEpXG4gICAgbGV0IGJpbmQgdCB+ZiA9IE0ub2ZfbW9uYWQgKE1vbmFkLmJpbmQgKE0udG9fbW9uYWQgdCkgfmY6KGZ1biBhIC0+IE0udG9fbW9uYWQgKGYgYSkpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gdCB+ZiAtPiBNLm9mX21vbmFkIChNb25hZC5tYXAgKE0udG9fbW9uYWQgdCkgfmYpKVxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDNcbiAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDJcbiAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkXG4gICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXRbQGlubGluZV0gYmluZCBhIH5mID0gKGYgW0BpbmxpbmVkIGhpbnRdKSBhXG4gIGxldFtAaW5saW5lXSBtYXAgYSB+ZiA9IChmIFtAaW5saW5lZCBoaW50XSkgYVxuXG4gIGV4dGVybmFsIHJldHVybiA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXRbQGlubGluZV0gKCA+PnwgKSBhIGYgPSBtYXAgYSB+ZlxuICAgIGxldFtAaW5saW5lXSAoID4+PSApIGEgZiA9IGJpbmQgYSB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXRbQGlubGluZV0gYm90aCBhIGIgPSBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kXG5cbiAgZXh0ZXJuYWwgam9pbiA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgaWdub3JlX20gOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG4gIGV4dGVybmFsIGFsbF91bml0IDogKHVuaXQgbGlzdFtAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG4gIGV4dGVybmFsIGFsbCA6ICgnYSBsaXN0W0Bsb2NhbF9vcHRdKSAtPiAoJ2EgbGlzdFtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbigqKiBUaGlzIG1vZHVsZSBzZXJ2ZXMgbW9zdGx5IGFzIGEgcGFydGlhbCBjaGVjayB0aGF0IFtTMl0gYW5kIFtTXSBhcmUgaW4gc3luYywgYnV0XG4gICAgYWN0dWFsbHkgY2FsbGluZyBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsLiAqKVxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChUIDogVC5UKSAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIFQudCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgVC50KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoVCA6IFQuVCkgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIFQudCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIFQudCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MgKFQxIDogVC5UKSAoVDIgOiBULlQpIChYIDogUzMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgVDEudCwgVDIudCkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIFQxLnQsIFQyLnQpIFgudFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2FwcGx5IC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBtYXAyIHRhIHRiIH5mID0gbWFwIH5mIHRhIDwqPiB0YlxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGIgPCo+IHRjXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0ICggKj4gKSB1IHYgPSByZXR1cm4gKGZ1biAoKSB5IC0+IHkpIDwqPiB1IDwqPiB2XG4gIGxldCAoIDwqICkgdSB2ID0gcmV0dXJuIChmdW4geCAoKSAtPiB4KSA8Kj4gdSA8Kj4gdlxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MykgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFhcbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEltcGxcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MikgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsICdkLCBfKSB0ID0gKCdhLCAnZCkgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4XG4gICAgKFggOiBGb3JfbGV0X3N5bnRheCkgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgyXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG4oKiogVGhpcyBmdW5jdG9yIGNsb3NlbHkgcmVzZW1ibGVzIFtNYWtlM10sIGFuZCBpbmRlZWQgaXQgY291bGQgYmUgaW1wbGVtZW50ZWRcbiAgICBtdWNoIHNob3J0ZXIgaW4gdGVybXMgb2YgW01ha2UzXS4gSG93ZXZlciwgd2UgaW1wbGVtZW50IGl0IGJ5IGhhbmQgc28gdGhhdFxuICAgIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25zIGFyZSBtb3JlIGVmZmljaWVudCwgZS5nLiB1c2luZyBbbWFwMl0gZGlyZWN0bHkgaW5zdGVhZCBvZlxuICAgIGRlZmluaW5nIFthcHBseV0gaW4gdGVybXMgb2YgaXQgYW5kIHRoZW4gW21hcDJdIGluIHRlcm1zIG9mIHRoYXQuIEZvciBtb3N0XG4gICAgYXBwbGljYXRpdmVzIHRoaXMgZG9lcyBub3QgbWF0dGVyLCBidXQgZm9yIHNvbWUgKHN1Y2ggYXMgQm9uc2FpLlZhbHVlLnQpLCBpdCBoYXMgYVxuICAgIGxhcmdlciBpbXBhY3QuICopXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMiAoWCA6IEJhc2ljM191c2luZ19tYXAyKSA6XG4gIFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwMiAobWFwMiB0YSB0YiB+ZikgdGMgfmY6KGZ1biBmYWIgYyAtPiBmYWIgYylcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMiAoWCA6IEJhc2ljMl91c2luZ19tYXAyKSA6XG4gIFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDIgKFggOiBCYXNpY191c2luZ19tYXAyKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID1cbiAgTWFrZTJfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljM191c2luZ19tYXAyX2xvY2FsKSA6XG4gIFMzX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gbWFwMiB+ZjooZnVuICgpIC0+IGYpIChyZXR1cm4gKCkpIHQgW0Bub250YWlsXVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSBtYXAgLT4gbWFwXG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG5cbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPVxuICAgIGxldCByZXMgPSBtYXAyIChib3RoIHRhIHRiKSB0YyB+ZjooZnVuIChhLCBiKSBjIC0+IGYgYSBiIGMpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljMl91c2luZ19tYXAyX2xvY2FsKSA6XG4gIFMyX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpY191c2luZ19tYXAyX2xvY2FsKSA6XG4gIFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyIChNIDogTW9uYWQuUzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgTS50ID0gTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gICAgbGV0IGFwcGx5IG1mIG14ID0gTS5iaW5kIG1mIH5mOihmdW4gZiAtPiBNLm1hcCBteCB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBNLm1hcFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZCAoTSA6IE1vbmFkLlMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBPZl9tb25hZDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgQ29tcG9zZSAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50IEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEcucmV0dXJuIChGLnJldHVybiBhKVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRy5hcHBseSAoRy5tYXAgfmY6Ri5hcHBseSB0ZikgdHhcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBHLm1hcCB+ZjooRi5tYXAgfmYpIHRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFBhaXIgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRi5yZXR1cm4gYSwgRy5yZXR1cm4gYVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRi5hcHBseSAoZnN0IHRmKSAoZnN0IHR4KSwgRy5hcHBseSAoc25kIHRmKSAoc25kIHR4KVxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEYubWFwIH5mIChmc3QgdCksIEcubWFwIH5mIChzbmQgdClcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EgdCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgU19mYyA9IHNpZ1xuICB0eXBlIGNvbXBhcmFibGVfdFxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSBjb21wYXJhYmxlX3RcbmVuZFxuXG5tb2R1bGUgTW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdiKVxuZW5kXG5cbmxldCBtYWtlICh0eXBlIHQpIH5jb21wYXJlIH5zZXhwX29mX3QgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgY29tcGFyYWJsZV90ID0gdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kIDogU19mY1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlX3QgPSB0KVxuOztcblxubW9kdWxlIFNfdG9fUzEgKFMgOiBTKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBTLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG9wZW4gU1xuXG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICdhIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIl9cIlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICEnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSBjb21wYXJhdG9yIC0+ICgnYSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgISdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYikgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDIgKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdhLCAnYikgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcCkgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsIF8pIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWRfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYSwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wX2EgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYiwgXykgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDJfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2EgLT4gJ2EgLT4gaW50KVxuICAgICAgLT4gKCdiIC0+ICdiIC0+IGludClcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgLT4gaW50XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdiIC0+IFNleHAudCkgLT4gKCdhLCAnYiwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnZiwgJ3MpIHQgPVxuICB8IEZpcnN0IG9mICdmXG4gIHwgU2Vjb25kIG9mICdzXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6XG4gICdmICdzLiAoJ2YgLT4gJ2YgLT4gaW50KSAtPiAoJ3MgLT4gJ3MgLT4gaW50KSAtPiAoJ2YsICdzKSB0IC0+ICgnZiwgJ3MpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2YgX2NtcF9fcyBhX18wMDFfIGJfXzAwMl8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgIHwgRmlyc3QgX2FfXzAwM18sIEZpcnN0IF9iX18wMDRfIC0+IF9jbXBfX2YgX2FfXzAwM18gX2JfXzAwNF9cbiAgICB8IEZpcnN0IF8sIF8gLT4gLTFcbiAgICB8IF8sIEZpcnN0IF8gLT4gMVxuICAgIHwgU2Vjb25kIF9hX18wMDVfLCBTZWNvbmQgX2JfXzAwNl8gLT4gX2NtcF9fcyBfYV9fMDA1XyBfYl9fMDA2Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgZiBzLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoZiwgcykgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2YgX2hhc2hfZm9sZF9zIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBGaXJzdCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfZiBoc3YgX2EwXG4gIHwgU2Vjb25kIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9zIGhzdiBfYTBcbjs7XG5cbmxldCB0X29mX3NleHAgOlxuICAnZiAncy5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnZikgLT4gKFNleHBsaWIwLlNleHAudCAtPiAncykgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnZiwgJ3MpIHRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDIzXyBzX18wMjRfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gZl9fMDIzXykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBzX18wMjRfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoZl9fMDIzXywgc19fMDI0XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMTFfID0gXCJlaXRoZXIwLm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfZl9fMDA3XyBfb2Zfc19fMDA4XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9mX18wMDdfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgICAgRmlyc3QgcmVzMF9fMDE3X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgX3RhZ19fMDE5XykgOjogc2V4cF9hcmdzX18wMjBfKSBhc1xuICAgICAgICBfc2V4cF9fMDE4XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjBfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMjFfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2Zfc19fMDA4XyBhcmcwX18wMjFfIGluXG4gICAgICAgICAgIFNlY29uZCByZXMwX18wMjJfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxOV9cbiAgICAgICAgICAgICBfc2V4cF9fMDE4XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBzZXhwX18wMTBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnZiAncy5cbiAgKCdmIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdmLCAncykgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDMxXyBzX18wMzJfKVxuICAgICAgOiAgKChmX18wMzFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAzMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChmX18wMzFfLCBzX18wMzJfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2ZfXzAyNV8gX29mX3NfXzAyNl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgYXJnMF9fMDI3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9mX18wMjVfIGFyZzBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmlyc3RcIjsgcmVzMF9fMDI4XyBdXG4gICAgICB8IFNlY29uZCBhcmcwX18wMjlfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzBfID0gX29mX3NfXzAyNl8gYXJnMF9fMDI5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZWNvbmRcIjsgcmVzMF9fMDMwXyBdXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAnZiAncy5cbiAgJ2YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gJ3MgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gKCdmLCAncykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIGZ1biBfJ2Zfc2V4cF9ncmFtbWFyIF8nc19zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkZpcnN0XCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydmX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJTZWNvbmRcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ3Nfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG4iLCIoKiBUaGUgdHlwZSBbdF0gc2hvdWxkIGJlIGFic3RyYWN0IHRvIG1ha2UgdGhlIGZzZXQgYW5kIHNldCBmdW5jdGlvbnMgdW5hdmFpbGFibGVcbiAgIGZvciBwcml2YXRlIHR5cGVzIGF0IHRoZSBsZXZlbCBvZiB0eXBlcyAoYW5kIG5vdCBieSBwdXR0aW5nIE5vbmUgaW4gdGhlIGZpZWxkKS5cbiAgIFVuZm9ydHVuYXRlbHksIG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCBtZWFucyB0aGF0IHdoZW4gY3JlYXRpbmcgZmllbGRzICh0aHJvdWdoXG4gICBhIFtjcmVhdGVdIGZ1bmN0aW9uKSB2YWx1ZSByZXN0cmljdGlvbiBraWNrcyBpbi4gVGhpcyBpcyB3b3JrZWQgYXJvdW5kIGJ5IGluc3RlYWRcbiAgIG5vdCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QsIGJ1dCBmb3JjaW5nIGFueW9uZSBicmVha2luZyB0aGUgYWJzdHJhY3Rpb24gdG8gdXNlXG4gICB0aGUgW0Zvcl9nZW5lcmF0ZWRfY29kZV0gbW9kdWxlLCBtYWtpbmcgaXQgb2J2aW91cyB0byBhbnkgcmVhZGVyIHRoYXQgc29tZXRoaW5nIHVnbHlcbiAgIGlzIGdvaW5nIG9uLlxuICAgdF93aXRoX3Blcm0gKGFuZCBkZXJpdmF0aXZlcykgaXMgdGhlIHR5cGUgdGhhdCB1c2VycyByZWFsbHkgdXNlLiBJdCBpcyBhIGNvbnN0cnVjdG9yXG4gICBiZWNhdXNlOlxuICAgMS4gaXQgbWFrZXMgdHlwZSBlcnJvcnMgbW9yZSByZWFkYWJsZSAobGVzcyBhbGlhc2luZylcbiAgIDIuIHRoZSB0eXBlciBpbiBvY2FtbCA0LjAxIGFsbG93cyB0aGlzOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgICAgIHR5cGUgdCA9IHthIDogaW50fVxuICAgICBlbmRcbiAgICAgdHlwZSB0ID0gQS50XG4gICAgIGxldCBmICh4IDogdCkgPSB4LmFcbiAgIF19XG5cbiAgIChhbHRob3VnaCB3aXRoIFdhcm5pbmcgNDA6IGEgaXMgdXNlZCBvdXQgb2Ygc2NvcGUpXG4gICB3aGljaCBtZWFucyB0aGF0IGlmIFt0X3dpdGhfcGVybV0gd2FzIHJlYWxseSBhbiBhbGlhcyBvbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdLFxuICAgcGVvcGxlIGNvdWxkIHNheSBbdC5zZXR0ZXJdIGFuZCBicmVhayB0aGUgYWJzdHJhY3Rpb24gd2l0aCBubyBpbmRpY2F0aW9uIHRoYXRcbiAgIHNvbWV0aGluZyB1Z2x5IGlzIGdvaW5nIG9uIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgIFRoZSB3YXJuaW5nIGlzIChJIHRoaW5rKSBmb3IgcGVvcGxlIHdobyB3YW50IHRvIG1ha2UgdGhlaXIgY29kZSBjb21wYXRpYmxlIHdpdGhcbiAgIHByZXZpb3VzIHZlcnNpb25zIG9mIG9jYW1sLCBzbyB3ZSBtYXkgdmVyeSB3ZWxsIHR1cm4gaXQgb2ZmLlxuXG4gICBUaGUgdHlwZSB0X3dpdGhfcGVybSBjb3VsZCBhbHNvIGhhdmUgYmVlbiBhIFt1bml0IC0+IEZvcl9nZW5lcmF0ZWRfY29kZS50XSB0byB3b3JrXG4gICBhcm91bmQgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHRoZW4gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSB3b3VsZCBoYXZlIGJlZW4gYSBwcm9wZXJcbiAgIGFic3RyYWN0IHR5cGUsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSAoZm9yIGV4YW1wbGUsIGEgZm9sZCBvbiBhXG4gICByZWNvcmQgdHlwZSB3aXRoIDQwIGZpZWxkcyB3b3VsZCBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgNDAgW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSdzIGF0XG4gICBldmVyeSBzaW5nbGUgZm9sZC4pICopXG5cbm1vZHVsZSBGb3JfZ2VuZXJhdGVkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgeyBmb3JjZV92YXJpYW5jZSA6ICdwZXJtIC0+IHVuaXRcbiAgICA7ICgqIGZvcmNlIFt0XSB0byBiZSBjb250cmF2YXJpYW50IGluIFsncGVybV0sIGJlY2F1c2UgcGhhbnRvbSB0eXBlIHZhcmlhYmxlcyBvblxuICAgICAgICAgY29uY3JldGUgdHlwZXMgZG9uJ3Qgd29yayB0aGF0IHdlbGwgb3RoZXJ3aXNlICh1c2luZyA6PiBjYW4gcmVtb3ZlIHRoZW0gZWFzaWx5KSAqKVxuICAgICAgbmFtZSA6IHN0cmluZ1xuICAgIDsgc2V0dGVyIDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvblxuICAgIDsgZ2V0dGVyIDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICA7IGZzZXQgOiAncmVjb3JkIC0+ICdmaWVsZCAtPiAncmVjb3JkXG4gICAgfVxuXG4gIGxldCBvcGFxdWVfaWRlbnRpdHkgPSBTeXMwLm9wYXF1ZV9pZGVudGl0eVxuZW5kXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtID1cbiAgfCBGaWVsZCBvZiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgRm9yX2dlbmVyYXRlZF9jb2RlLnRcbltAQHVuYm94ZWRdXG5cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9IChbIGBSZWFkIHwgYFNldF9hbmRfY3JlYXRlIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgcmVhZG9ubHlfdCA9IChbIGBSZWFkIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cblxubGV0IG5hbWUgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLm5hbWVcbmxldCBnZXQgKEZpZWxkIGZpZWxkKSByID0gZmllbGQuZ2V0dGVyIHJcbmxldCBmc2V0IChGaWVsZCBmaWVsZCkgciB2ID0gZmllbGQuZnNldCByIHZcbmxldCBzZXR0ZXIgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLnNldHRlclxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ3Jlc3VsdCkgdXNlciA9XG4gIHsgZiA6ICdmaWVsZC4gKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtIC0+ICdyZXN1bHQgfVxuXG5sZXQgbWFwIChGaWVsZCBmaWVsZCkgciB+ZiA9IGZpZWxkLmZzZXQgciAoZiAoZmllbGQuZ2V0dGVyIHIpKVxuXG5sZXQgdXBkYXRlciAoRmllbGQgZmllbGQpID1cbiAgbWF0Y2ggZmllbGQuc2V0dGVyIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHNldHRlciAtPiBTb21lIChmdW4gciB+ZiAtPiBzZXR0ZXIgciAoZiAoZmllbGQuZ2V0dGVyIHIpKSlcbjs7XG4iLCIoKiBbU3RyaW5nMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbU3RkbGliLlN0cmluZ10uIFtTdHJpbmcwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtTdGRsaWIuU3RyaW5nXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN0cmluZzAubWwgc2hvdWxkXG4gICB1c2UgW1N0ZGxpYi5TdHJpbmddLiAgW1N0cmluZzBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2Unc1xuICAgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncywgaW5jbHVkaW5nIHRoZSBzdWJzY3JpcHQgc3ludGF4IFt4LltpXV0gd2hpY2hcbiAgIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbU3RyaW5nXSwgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN0cmluZ10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuXG4gICB7W1xuICAgICBtb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN0cmluZ10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogKHN0cmluZ1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IChzdHJpbmdbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gY2hhclxuICAgID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZW5kXG5cbmluY2x1ZGUgU3RyaW5nXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgKCBeICkgPSAoIF4gKVxubGV0IGNhcGl0YWxpemUgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbmxldCBjb21wYXJlID0gU3RkbGliLlN0cmluZy5jb21wYXJlXG5sZXQgZXNjYXBlZCA9IFN0ZGxpYi5TdHJpbmcuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG5sZXQgbWFrZSA9IFN0ZGxpYi5TdHJpbmcubWFrZVxubGV0IHN1YiA9IFN0ZGxpYi5TdHJpbmcuc3ViXG5sZXQgdW5jYXBpdGFsaXplID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbmxldCB1bnNhZmVfYmxpdCA9IFN0ZGxpYi5TdHJpbmcudW5zYWZlX2JsaXRcbmxldCB1cHBlcmNhc2UgPSBTdGRsaWIuU3RyaW5nLnVwcGVyY2FzZV9hc2NpaVxubGV0IHNwbGl0X29uX2NoYXIgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXJcblxubGV0IGNvbmNhdCA/KHNlcCA9IFwiXCIpIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIlwiXG4gICgqIFRoZSBzdGRsaWIgZG9lcyBub3Qgc3BlY2lhbGl6ZSB0aGlzIGNhc2UgYmVjYXVzZSBpdCBjb3VsZCBicmVhayBleGlzdGluZyBwcm9qZWN0cy4gKilcbiAgfCBbIHggXSAtPiB4XG4gIHwgbCAtPiBTdGRsaWIuU3RyaW5nLmNvbmNhdCB+c2VwIGxcbjs7XG5cbmxldCBpdGVyIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RkbGliLkxleGluZy5wb3NpdGlvbiA9XG4gICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICA7IHBvc19sbnVtIDogaW50XG4gICAgOyBwb3NfYm9sIDogaW50XG4gICAgOyBwb3NfY251bSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICAgICB0aGVuIDBcbiAgICAgICBlbHNlIChcbiAgICAgICAgIG1hdGNoIGNvbXBhcmVfc3RyaW5nIGFfXzAwMV8ucG9zX2ZuYW1lIGJfXzAwMl8ucG9zX2ZuYW1lIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfbG51bSBiX18wMDJfLnBvc19sbnVtIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfYm9sIGJfXzAwMl8ucG9zX2JvbCB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfY251bSBiX18wMDJfLnBvc19jbnVtXG4gICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGZ1biBoc3YgYXJnIC0+XG4gICAgICBsZXQgaHN2ID1cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBhcmcucG9zX2ZuYW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2xudW1cbiAgICAgICAgaW5cbiAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19ib2xcbiAgICAgIGluXG4gICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2NudW1cbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuIHsgcG9zX2ZuYW1lID0gcG9zX2ZuYW1lX18wMDRfXG4gICAgICAgICA7IHBvc19sbnVtID0gcG9zX2xudW1fXzAwNl9cbiAgICAgICAgIDsgcG9zX2JvbCA9IHBvc19ib2xfXzAwOF9cbiAgICAgICAgIDsgcG9zX2NudW0gPSBwb3NfY251bV9fMDEwX1xuICAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwM18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2ludCBwb3NfY251bV9fMDEwXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2NudW1cIjsgYXJnX18wMTFfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9pbnQgcG9zX2JvbF9fMDA4XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2JvbFwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBwb3NfbG51bV9fMDA2XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2xudW1cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgcG9zX2ZuYW1lX18wMDRfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfZm5hbWVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwM19cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIFBweF9oZXJlLmxpZnRfcG9zaXRpb25fYXNfc3RyaW5nLiAqKVxubGV0IG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBbIHBvc19mbmFtZTsgXCI6XCI7IEludC50b19zdHJpbmcgcG9zX2xudW07IFwiOlwiOyBJbnQudG9fc3RyaW5nIChwb3NfY251bSAtIHBvc19ib2wpIF1cbjs7XG5cbmxldCB0b19zdHJpbmcgeyBTdGRsaWIuTGV4aW5nLnBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sIH0gPVxuICBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2xcbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlzdDBcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIChmIHggOiBfIEVpdGhlcjAudCkgd2l0aFxuICAgICAgIHwgRmlyc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmRcbiAgICAgICB8IFNlY29uZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtAbm9udGFpbF1cbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPVxuICB8IE9rIG9mICdhXG4gIHwgRXJyb3Igb2YgJ2JcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2EgJ2IuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2EsICdiKSB0XG4gID1cbiAgZnVuICh0eXBlIGFfXzAxN18gYl9fMDE4XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxN18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGFfXzAxN18sIGJfXzAxOF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwicmVzdWx0Lm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJva1wiIHwgXCJPa1wiKSBhcyBfdGFnX18wMDhfKSA6OiBzZXhwX2FyZ3NfXzAwOV8pIGFzXG4gICAgICAgIF9zZXhwX18wMDdfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAwOV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxMF8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDExXyA9IF9vZl9hX18wMDFfIGFyZzBfXzAxMF8gaW5cbiAgICAgICAgICAgT2sgcmVzMF9fMDExX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMDhfXG4gICAgICAgICAgICAgX3NleHBfXzAwN18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIF90YWdfXzAxM18pIDo6IHNleHBfYXJnc19fMDE0XykgYXNcbiAgICAgICAgX3NleHBfXzAxMl8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE0XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE1XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2JfXzAwMl8gYXJnMF9fMDE1XyBpblxuICAgICAgICAgICBFcnJvciByZXMwX18wMTZfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAxM19cbiAgICAgICAgICAgICBfc2V4cF9fMDEyXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm9rXCIgfCBcIk9rXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAyNV8gYl9fMDI2XylcbiAgICAgIDogICgoYV9fMDI1XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMjZfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDI1XywgYl9fMDI2XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTlfIF9vZl9iX18wMjBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAyMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAyMl8gXVxuICAgICAgfCBFcnJvciBhcmcwX18wMjNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjRfID0gX29mX2JfXzAyMF8gYXJnMF9fMDIzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFcnJvclwiOyByZXMwX18wMjRfIF1cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6XG4gICdhICdiLlxuICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiT2tcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkVycm9yXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMjdfIGJfXzAyOF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAyN18sIGJfXzAyOF8gd2l0aFxuICAgIHwgT2sgX2FfXzAyOV8sIE9rIF9iX18wMzBfIC0+IF9jbXBfX2EgX2FfXzAyOV8gX2JfXzAzMF9cbiAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICB8IF8sIE9rIF8gLT4gMVxuICAgIHwgRXJyb3IgX2FfXzAzMV8sIEVycm9yIF9iX18wMzJfIC0+IF9jbXBfX2IgX2FfXzAzMV8gX2JfXzAzMl8pXG47O1xuXG5sZXQgZXF1YWwgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDMzXyBiX18wMzRfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDMzXyBiX18wMzRfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMzNfLCBiX18wMzRfIHdpdGhcbiAgICB8IE9rIF9hX18wMzVfLCBPayBfYl9fMDM2XyAtPiBfY21wX19hIF9hX18wMzVfIF9iX18wMzZfXG4gICAgfCBPayBfLCBfIC0+IGZhbHNlXG4gICAgfCBfLCBPayBfIC0+IGZhbHNlXG4gICAgfCBFcnJvciBfYV9fMDM3XywgRXJyb3IgX2JfXzAzOF8gLT4gX2NtcF9fYiBfYV9fMDM3XyBfYl9fMDM4Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgYSBiLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoYSwgYikgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBPayBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gIHwgRXJyb3IgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuOztcblxuW0BAQGVuZF1cblxubGV0IGdsb2JhbGl6ZSA9IGdsb2JhbGl6ZV9yZXN1bHRcblxuaW5jbHVkZSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gZiB4XG4gICAgOztcblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgcmV0dXJuIHggPSBPayB4XG4gIGVuZClcblxubGV0IGludmFyaWFudCBjaGVja19vayBjaGVja19lcnJvciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgb2sgLT4gY2hlY2tfb2sgb2tcbiAgfCBFcnJvciBlcnJvciAtPiBjaGVja19lcnJvciBlcnJvclxuOztcblxubGV0IGZhaWwgeCA9IEVycm9yIHhcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcblxubGV0IG1hcF9lcnJvciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgXyBhcyB4IC0+IHhcbiAgfCBFcnJvciB4IC0+IEVycm9yIChmIHgpXG47O1xuXG5tb2R1bGUgRXJyb3IgPSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE9rIF8gYXMgb2sgLT4gb2tcbiAgICAgIHwgRXJyb3IgZSAtPiBmIGVcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwX2Vycm9yXG4gICAgbGV0IHJldHVybiBlID0gRXJyb3IgZVxuICBlbmQpXG5cbmxldCBpc19vayA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IGZhbHNlXG4gIHwgRXJyb3IgXyAtPiB0cnVlXG47O1xuXG5sZXQgb2sgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gU29tZSB4XG4gIHwgRXJyb3IgXyAtPiBOb25lXG47O1xuXG5sZXQgZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gTm9uZVxuICB8IEVycm9yIHggLT4gU29tZSB4XG47O1xuXG5sZXQgb2Zfb3B0aW9uIG9wdCB+ZXJyb3IgPVxuICBtYXRjaCBvcHQgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPiBFcnJvciBlcnJvclxuOztcblxubGV0IGl0ZXIgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIHggLT4gZiB4XG4gIHwgRXJyb3IgXyAtPiAoKVxuOztcblxubGV0IGl0ZXJfZXJyb3IgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIF8gLT4gKClcbiAgfCBFcnJvciB4IC0+IGYgeFxuOztcblxubGV0IHRvX2VpdGhlciA6IF8gdCAtPiBfIEVpdGhlci50ID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IEZpcnN0IHhcbiAgfCBFcnJvciB4IC0+IFNlY29uZCB4XG47O1xuXG5sZXQgb2ZfZWl0aGVyIDogXyBFaXRoZXIudCAtPiBfIHQgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gT2sgeFxuICB8IFNlY29uZCB4IC0+IEVycm9yIHhcbjs7XG5cbmxldCBva19pZl90cnVlIGJvb2wgfmVycm9yID0gaWYgYm9vbCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JcblxubGV0IHRyeV93aXRoIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgb2tfb3JfZmFpbHdpdGggPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIHN0ciAtPiBmYWlsd2l0aCBzdHJcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ29rLCAnZXJyKSBfcmVzdWx0ID0gKCdvaywgJ2VycikgdCA9XG4gICAgfCBPayBvZiAnb2tcbiAgICB8IEVycm9yIG9mICdlcnJcblxuICBsZXQgaXNfZXJyb3IgPSBpc19lcnJvclxuICBsZXQgaXNfb2sgPSBpc19va1xuZW5kXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBPayBfLCBFcnJvciBlIHwgRXJyb3IgZSwgT2sgXyAtPiBFcnJvciBlXG4gIHwgT2sgb2sxLCBPayBvazIgLT4gT2sgKG9rIG9rMSBvazIpXG4gIHwgRXJyb3IgZXJyMSwgRXJyb3IgZXJyMiAtPiBFcnJvciAoZXJyIGVycjEgZXJyMilcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdDEucGFydGl0aW9uX21hcCBsIH5mOnRvX2VpdGhlciBpblxuICBtYXRjaCBlcnJzIHdpdGhcbiAgfCBbXSAtPiBPayBva1xuICB8IF8gOjogXyAtPiBFcnJvciBlcnJzXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gbWFwIChjb21iaW5lX2Vycm9ycyBsKSB+ZjooZnVuIChfIDogdW5pdCBsaXN0KSAtPiAoKSlcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5nIGZvciBleHBvcnQgb25seSAqKVxubGV0IG9rX2ZzdCA9IHRvX2VpdGhlclxuIiwiKCoqIFByb3ZpZGVzIGdlbmVyaWMgc2lnbmF0dXJlcyBmb3IgY29udGFpbmVyIGRhdGEgc3RydWN0dXJlcy5cblxuICAgIFRoZXNlIHNpZ25hdHVyZXMgaW5jbHVkZSBmdW5jdGlvbnMgKFtpdGVyXSwgW2ZvbGRdLCBbZXhpc3RzXSwgW2Zvcl9hbGxdLCAuLi4pIHRoYXRcbiAgICB5b3Ugd291bGQgZXhwZWN0IHRvIGZpbmQgaW4gYW55IGNvbnRhaW5lci4gVXNlZCBieSBpbmNsdWRpbmcgW0NvbnRhaW5lci5TMF0gb3JcbiAgICBbQ29udGFpbmVyLlMxXSBpbiB0aGUgc2lnbmF0dXJlIGZvciBldmVyeSBjb250YWluZXItbGlrZSBkYXRhIHN0cnVjdHVyZSAoW0FycmF5XSxcbiAgICBbTGlzdF0sIFtTdHJpbmddLCAuLi4pIHRvIGVuc3VyZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiogW0NvbnRpbnVlX29yX3N0b3AudF0gaXMgdXNlZCBieSB0aGUgW2ZdIGFyZ3VtZW50IHRvIFtmb2xkX3VudGlsXSBpbiBvcmRlciB0b1xuICAgICAgaW5kaWNhdGUgd2hldGhlciBmb2xkaW5nIHNob3VsZCBjb250aW51ZSwgb3Igc3RvcCBlYXJseS5cblxuICAgICAgQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG4gICopXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHwgQ29udGludWUgb2YgJ2FcbiAgICAgIHwgU3RvcCBvZiAnYlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV4cG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5TdW1tYWJsZSAqKVxubW9kdWxlIHR5cGUgU3VtbWFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCoqIFRoZSByZXN1bHQgb2Ygc3VtbWluZyBubyB2YWx1ZXMuICopXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqKiBBbiBvcGVyYXRpb24gdGhhdCBjb21iaW5lcyB0d28gW3RdJ3MgYW5kIGhhbmRsZXMgW3plcm8gKyB4XSBieSBqdXN0IHJldHVybmluZyBbeF0sXG4gICAgICBhcyB3ZWxsIGFzIGluIHRoZSBzeW1tZXRyaWMgY2FzZS4gKilcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBtb25vbW9ycGhpYyBjb250YWluZXIgLSBhIGNvbnRhaW5lciBmb3IgYSBzcGVjaWZpYyBlbGVtZW50IHR5cGUsIGUuZy4sXG4gICAgc3RyaW5nLCB3aGljaCBpcyBhIGNvbnRhaW5lciBvZiBjaGFyYWN0ZXJzIChbdHlwZSBlbHQgPSBjaGFyXSkgYW5kIG5ldmVyIG9mIGFueXRoaW5nXG4gICAgZWxzZS4gKilcbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGVsdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogdCAtPiBlbHQgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcblxuICAoKiogW2l0ZXJdIG11c3QgYWxsb3cgZXhjZXB0aW9ucyByYWlzZWQgaW4gW2ZdIHRvIGVzY2FwZSwgdGVybWluYXRpbmcgdGhlIGl0ZXJhdGlvblxuICAgICAgY2xlYW5seS4gIFRoZSBzYW1lIGhvbGRzIGZvciBhbGwgZnVuY3Rpb25zIGJlbG93IHRha2luZyBhbiBbZl0uICopXG4gIHZhbCBpdGVyIDogdCAtPiBmOigoZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiB0IC0+IGY6KChlbHQgLT4gJ3N1bSlbQGxvY2FsXSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiB0IC0+IGY6KChlbHQgLT4gJ2Egb3B0aW9uKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcC4gbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lXG4gICAgICBjb21wbGV4aXR5IGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6IHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiBfIHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IF8gdCAtPiBmOigoZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogXyB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlXG4gICAgICBlbGVtZW50cyB3aWxsIGJlIHN1bW1lZCBpcyB1bnNwZWNpZmllZC4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+IF8gdFxuICAgIC0+IGY6KChlbHQgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogXyB0IC0+IGY6KChlbHQgLT4gJ2Egb3B0aW9uKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IF8gdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiBfIHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiAqKVxuICB2YWwgbWluX2VsdCA6IF8gdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IF8gdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBwb2x5bW9ycGhpYyBjb250YWluZXIsIGUuZy4sIFsnYSBsaXN0XSBvciBbJ2EgYXJyYXldLiAqKVxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XSAgKilcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAnYSB0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW5pbXVtIChyZXNwIG1heGltdW0pIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWRcbiAgICAgIFtjb21wYXJlXSBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3RcbiAgICAgIGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uXG4gICAgICB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eSBhcyBbZm9sZF0uICopXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHlcbiAgICAgIGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGVsdCAtPiBlcXVhbDooKCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSBlbHQgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGludClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgaW5jbHVkZSBTMFxuXG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuICB2YWwgb2ZfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdFxuXG4gICgqKiBFLmcuLCBbYXBwZW5kIChvZl9saXN0IFthOyBiXSkgKG9mX2xpc3QgW2M7IGQ7IGVdKV0gaXMgW29mX2xpc3QgW2E7IGI7IGM7IGQ7IGVdXSAqKVxuICB2YWwgYXBwZW5kIDogdCAtPiB0IC0+IHRcblxuICAoKiogQ29uY2F0ZW5hdGVzIGEgbmVzdGVkIGNvbnRhaW5lci4gVGhlIGVsZW1lbnRzIG9mIHRoZSBpbm5lciBjb250YWluZXJzIGFyZVxuICAgICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIHJlc3VsdC4gKilcbiAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG5cbiAgKCoqIFttYXAgZiAob2ZfbGlzdCBbYTE7IC4uLjsgYW5dKV0gYXBwbGllcyBbZl0gdG8gW2ExXSwgW2EyXSwgLi4uLCBbYW5dLCBpbiBvcmRlciwgYW5kXG4gICAgICBidWlsZHMgYSByZXN1bHQgZXF1aXZhbGVudCB0byBbb2ZfbGlzdCBbZiBhMTsgLi4uOyBmIGFuXV0uICopXG4gIHZhbCBtYXAgOiB0IC0+IGY6KChlbHQgLT4gZWx0KVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyBhbGwgdGhlIGVsZW1lbnRzIG9mIFt0XSB0aGF0IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0uICopXG4gIHZhbCBmaWx0ZXIgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbZmlsdGVyX21hcCB0IH5mXSBhcHBsaWVzIFtmXSB0byBldmVyeSBbeF0gaW4gW3RdLiBUaGUgcmVzdWx0IGNvbnRhaW5zIGV2ZXJ5IFt5XSBmb3JcbiAgICAgIHdoaWNoIFtmIHhdIHJldHVybnMgW1NvbWUgeV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogdCAtPiBmOigoZWx0IC0+IGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW2NvbmNhdF9tYXAgdCB+Zl0gaXMgZXF1aXZhbGVudCB0byBbY29uY2F0IChtYXAgdCB+ZildLiAqKVxuICB2YWwgY29uY2F0X21hcCA6IHQgLT4gZjooKGVsdCAtPiB0KVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+Zl0gcmV0dXJucyBhIHBhaXIgW3QxLCB0Ml0sIHdoZXJlIFt0MV0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0XG4gICAgICBzYXRpc2Z5IFtmXSwgYW5kIFt0Ml0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0IGRvIG5vdCBzYXRpc2Z5IFtmXS4gVGhlIFwidGZcIlxuICAgICAgc3VmZml4IGlzIG1uZW1vbmljIHRvIHJlbWluZCByZWFkZXJzIHRoYXQgdGhlIHJlc3VsdCBpcyAodHJ1ZXMsIGZhbHNlcykuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gdCAqIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+Zl0gcGFydGl0aW9ucyBbdF0gYWNjb3JkaW5nIHRvIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiB0IC0+IGY6KChlbHQgLT4gKGVsdCwgZWx0KSBFaXRoZXIwLnQpW0Bsb2NhbF0pIC0+IHQgKiB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzFfd2l0aF9jcmVhdG9ycyA9IHNpZ1xuICBpbmNsdWRlIFMxXG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdFxuXG4gICgqKiBFLmcuLCBbYXBwZW5kIChvZl9saXN0IFsxOyAyXSkgKG9mX2xpc3QgWzM7IDQ7IDVdKV0gaXMgW29mX2xpc3QgWzE7IDI7IDM7IDQ7IDVdXSAqKVxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcblxuICAoKiogQ29uY2F0ZW5hdGVzIGEgbmVzdGVkIGNvbnRhaW5lci4gVGhlIGVsZW1lbnRzIG9mIHRoZSBpbm5lciBjb250YWluZXJzIGFyZVxuICAgICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIHJlc3VsdC4gKilcbiAgdmFsIGNvbmNhdCA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFttYXAgZiAob2ZfbGlzdCBbYTE7IC4uLjsgYW5dKV0gYXBwbGllcyBbZl0gdG8gW2ExXSwgW2EyXSwgLi4uLCBbYW5dLCBpbiBvcmRlciwgYW5kXG4gICAgICBidWlsZHMgYSByZXN1bHQgZXF1aXZhbGVudCB0byBbb2ZfbGlzdCBbZiBhMTsgLi4uOyBmIGFuXV0uICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBvZiBbdF0gdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLiAqKVxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdFxuXG4gICgqKiBbZmlsdGVyX21hcCB0IH5mXSBhcHBsaWVzIFtmXSB0byBldmVyeSBbeF0gaW4gW3RdLiBUaGUgcmVzdWx0IGNvbnRhaW5zIGV2ZXJ5IFt5XSBmb3JcbiAgICAgIHdoaWNoIFtmIHhdIHJldHVybnMgW1NvbWUgeV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtjb25jYXRfbWFwIHQgfmZdIGlzIGVxdWl2YWxlbnQgdG8gW2NvbmNhdCAobWFwIHQgfmYpXS4gKilcbiAgdmFsIGNvbmNhdF9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiB0KVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+Zl0gcmV0dXJucyBhIHBhaXIgW3QxLCB0Ml0sIHdoZXJlIFt0MV0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0XG4gICAgICBzYXRpc2Z5IFtmXSwgYW5kIFt0Ml0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0IGRvIG5vdCBzYXRpc2Z5IFtmXS4gVGhlIFwidGZcIlxuICAgICAgc3VmZml4IGlzIG1uZW1vbmljIHRvIHJlbWluZCByZWFkZXJzIHRoYXQgdGhlIHJlc3VsdCBpcyAodHJ1ZXMsIGZhbHNlcykuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0ICogJ2EgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mXSBwYXJ0aXRpb25zIFt0XSBhY2NvcmRpbmcgdG8gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICgnYiwgJ2MpIEVpdGhlcjAudClbQGxvY2FsXSkgLT4gJ2IgdCAqICdjIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgdHlwZSAoXywgXykgY29uY2F0XG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBlbHQgbGlzdCAtPiAoJ2EsIF8pIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgZWx0IGFycmF5IC0+ICgnYSwgXykgdFxuICB2YWwgYXBwZW5kIDogKCdhLCAncCkgdCAtPiAoJ2EsICdwKSB0IC0+ICgnYSwgJ3ApIHRcbiAgdmFsIGNvbmNhdCA6ICgoJ2EsICdwKSB0LCAncCkgY29uY2F0IC0+ICgnYSwgJ3ApIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBlbHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdwKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIGNvbmNhdF9tYXAgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gKCdiLCAncCkgdClbQGxvY2FsXSkgLT4gKCdiLCAncCkgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ3ApIHQgKiAoJ2EsICdwKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdwKSB0XG4gICAgLT4gZjooKCdhIGVsdCAtPiAoJ2IgZWx0LCAnYyBlbHQpIEVpdGhlcjAudClbQGxvY2FsXSlcbiAgICAtPiAoJ2IsICdwKSB0ICogKCdjLCAncCkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfZ2VuX2FyZyA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZm9sZCA6ICgnYSwgJ3BoYW50b20pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFRoZSBbaXRlcl0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtpdGVyXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZSBbaXRlcl1cbiAgICAgIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgaXRlciB0IH5mID0gQ29udGFpbmVyLml0ZXIgfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbaXRlcl0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbaXRlcl0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3lcbiAgICAgIGFzIHdlbGwuICopXG4gIHZhbCBpdGVyXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ3BoYW50b20pIHQgLT4gZjooKCdhIGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gICAgICBdXG5cbiAgKCoqIFRoZSBbbGVuZ3RoXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2xlbmd0aF0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmVcbiAgICAgIFtsZW5ndGhdIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgbGVuZ3RoIHQgfmYgPSBDb250YWluZXIubGVuZ3RoIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2xlbmd0aF0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbGVuZ3RoXSB3aWxsIGltcHJvdmUgdGhlaXJcbiAgICAgIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIGxlbmd0aCA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EsICdwaGFudG9tKSB0IC0+IGludCBdXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICgnYSwgXykgdCA6PSAnYSB0IGFuZCB0eXBlICdhIGVsdCA6PSAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2UwX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgKCdhLCBfKSB0IDo9IHQgYW5kIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmdcblxuICB0eXBlIChfLCBfKSBjb25jYXRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGVsdCBsaXN0IC0+ICgnYSwgXykgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBlbHQgYXJyYXkgLT4gKCdhLCBfKSB0XG4gIHZhbCBjb25jYXQgOiAoKCdhLCBfKSB0LCBfKSBjb25jYXQgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgaW5jbHVkZSBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuXG4gIHZhbCBjb25jYXRfb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsIF8pIGNvbmNhdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZVxuICAgIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG4gICAgd2l0aCB0eXBlICgnYSwgXykgdCA6PSAnYSB0XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICBhbmQgdHlwZSAoJ2EsIF8pIGNvbmNhdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZVxuICAgIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG4gICAgd2l0aCB0eXBlICgnYSwgXykgdCA6PSB0XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuICAgICBhbmQgdHlwZSAoJ2EsIF8pIGNvbmNhdCA6PSAnYSBsaXN0XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbZm9sZF0uXG5cbiAgICAgIEUuZy46IFtpdGVyIH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSldLiAqKVxuXG4gIHR5cGUgKCd0LCAnYSwgJ2FjYykgZm9sZCA9ICd0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG4gIHR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbiAgdmFsIGl0ZXIgOiBmb2xkOigndCwgJ2EsIHVuaXQpIGZvbGQgLT4gKCd0LCAnYSkgaXRlclxuICB2YWwgY291bnQgOiBmb2xkOigndCwgJ2EsIGludCkgZm9sZCAtPiAndCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIG1pbl9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBsZW5ndGggOiBmb2xkOigndCwgXywgaW50KSBmb2xkIC0+ICd0IC0+IGludFxuICB2YWwgdG9fbGlzdCA6IGZvbGQ6KCd0LCAnYSwgJ2EgbGlzdCkgZm9sZCAtPiAndCAtPiAnYSBsaXN0XG5cbiAgdmFsIHN1bVxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ3N1bSkgZm9sZFxuICAgIC0+IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICd0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2FjYykgZm9sZFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gJ3RcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhY2MpIGZvbGRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ3RcbiAgICAtPiAnZmluYWxcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbaXRlcl0gYW5kIFtsZW5ndGhdLiAqKVxuXG4gIHZhbCBpc19lbXB0eSA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBib29sXG4gIHZhbCBtZW0gOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZpbmQgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19hcnJheSA6IGxlbmd0aDondCBsZW5ndGggLT4gaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIGFycmF5XG5lbmRcblxubW9kdWxlIHR5cGUgQ29udGFpbmVyID0gc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzAgPSBTMFxuICBtb2R1bGUgdHlwZSBTMF9waGFudG9tID0gUzBfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTMF93aXRoX2NyZWF0b3JzID0gUzBfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBTMV9waGFudG9tXG4gIG1vZHVsZSB0eXBlIFMxX3dpdGhfY3JlYXRvcnMgPSBTMV93aXRoX2NyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIERlcml2ZWQgPSBEZXJpdmVkXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWMgPSBHZW5lcmljXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWNfd2l0aF9jcmVhdG9ycyA9IEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBTdW1tYWJsZSA9IFN1bW1hYmxlXG5cbiAgaW5jbHVkZSBEZXJpdmVkXG5cbiAgKCoqIFRoZSBpZGlvbSBmb3IgdXNpbmcgW0NvbnRhaW5lci5NYWtlXSBpcyB0byBiaW5kIHRoZSByZXN1bHRpbmcgbW9kdWxlIGFuZCB0b1xuICAgICAgZXhwbGljaXRseSBpbXBvcnQgZWFjaCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgb25lIHdhbnRzOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgICAgbGV0IGNvdW50ICAgID0gQy5jb3VudFxuICAgICAgICBsZXQgZXhpc3RzICAgPSBDLmV4aXN0c1xuICAgICAgICBsZXQgZmluZCAgICAgPSBDLmZpbmRcbiAgICAgICAgKCogLi4uICopXG4gICAgICBdfVxuXG4gICAgICBUaGlzIGlzIHByZWZlcmFibGUgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIGluY2x1ZGUgQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgXX1cblxuICAgICAgYmVjYXVzZSB0aGUgW2luY2x1ZGVdIG1ha2VzIGl0IHRvbyBlYXN5IHRvIHNoYWRvdyBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgIGNvbnRhaW5lciBmdW5jdGlvbnMgKFtsZW5ndGhdIGJlaW5nIGEgY29tbW9uIG9uZSkuXG5cbiAgICAgIFtDb250YWluZXIuTWFrZTBdIGlzIGxpa2UgW0NvbnRhaW5lci5NYWtlXSwgYnV0IGZvciBtb25vbW9ycGhpYyBjb250YWluZXJzIGxpa2VcbiAgICAgIFtzdHJpbmddLiAqKVxuICBtb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgOiBTMCB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgZWx0IDo9IFQuRWx0LnRcblxuICBtb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcblxuICBtb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIFMxX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIFMwX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGVsdCA6PSBULkVsdC50XG5cbiAgbW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICAgIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBDb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9XG4gICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCgnYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKVtAbG9jYWxdKSAtPiAnYWNjdW1cblxudHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbnR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbmxldCBpdGVyIH4oZm9sZCA6IChfLCBfLCBfKSBmb2xkKSB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpIFtAbm9udGFpbF1cbmxldCBjb3VudCB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIGEgLT4gaWYgZiBhIHRoZW4gbiArIDEgZWxzZSBuKSBbQG5vbnRhaWxdXG5cbmxldCBzdW0gKHR5cGUgYSkgfmZvbGQgKG1vZHVsZSBNIDogU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgZm9sZCB0IH5pbml0Ok0uemVybyB+ZjooZnVuIG4gYSAtPiBNLiggKyApIG4gKGYgYSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgUmVzdWx0Lk9rXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBSZXN1bHQuT2sgeCAtPiB4XG4gICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiByZXR1cm4gZSkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBmaW5pc2hcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IENvbnRpbnVlX29yX3N0b3AuQ29udGludWUgeCAtPiB4XG4gICAgICAgICB8IFN0b3AgeCAtPiByZXR1cm4geCkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWluIC0+IGlmIGNvbXBhcmUgbWluIGVsdCA+IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1heCAtPiBpZiBjb21wYXJlIG1heCBlbHQgPCAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsZW5ndGggfmZvbGQgYyA9IGZvbGQgYyB+aW5pdDowIH5mOihmdW4gYWNjIF8gLT4gYWNjICsgMSlcblxubGV0IGlzX2VtcHR5IH5pdGVyIGMgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biBfIC0+IHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IG1lbSB+aXRlciBjIHggfmVxdWFsID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geSAtPiBpZiBlcXVhbCB4IHkgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0cyB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvcl9hbGwgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgbm90IChmIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcCB+aXRlciB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciB0IH5mOihmdW4geCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gKFNvbWUgeCkpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCB0b19saXN0IH5mb2xkIGMgPSBMaXN0LnJldiAoZm9sZCBjIH5pbml0OltdIH5mOihmdW4gYWNjIHggLT4geCA6OiBhY2MpKVxuXG5sZXQgdG9fYXJyYXkgfmxlbmd0aCB+aXRlciBjID1cbiAgbGV0IGFycmF5ID0gcmVmIFt8fF0gaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICBpdGVyIGMgfmY6KGZ1biB4IC0+XG4gICAgaWYgIWkgPSAwIHRoZW4gYXJyYXkgOj0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCBjKSB4O1xuICAgICFhcnJheS4oIWkpIDwtIHg7XG4gICAgaW5jciBpKTtcbiAgIWFycmF5XG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID1cbnN0cnVjdFxuICBsZXQgZm9sZCA9IFQuZm9sZFxuXG4gIGxldCBpdGVyID1cbiAgICBtYXRjaCBULml0ZXIgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyIC0+IGl0ZXJcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgbGVuZ3RoID1cbiAgICBtYXRjaCBULmxlbmd0aCB3aXRoXG4gICAgfCBgQ3VzdG9tIGxlbmd0aCAtPiBsZW5ndGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCAtPiBsZW5ndGggfmZvbGQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gaXNfZW1wdHkgfml0ZXIgdFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBtZW0gfml0ZXIgdCB4IH5lcXVhbFxuICBsZXQgc3VtIG0gdCA9IHN1bSB+Zm9sZCBtIHRcbiAgbGV0IGNvdW50IHQgfmYgPSBjb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0cyB+aXRlciB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcCB+aXRlciB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kIH5pdGVyIHQgfmZcbiAgbGV0IHRvX2xpc3QgdCA9IHRvX2xpc3QgfmZvbGQgdFxuICBsZXQgdG9fYXJyYXkgdCA9IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgdFxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBmb2xkX3Jlc3VsdCB0IH5mb2xkIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IGZvbGRfdW50aWwgdCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnKSA6XG4gIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKFQpXG5cbiAgbGV0IG9mX2xpc3QgPSBULm9mX2xpc3RcbiAgbGV0IG9mX2FycmF5ID0gVC5vZl9hcnJheVxuICBsZXQgY29uY2F0ID0gVC5jb25jYXRcbiAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IFQuY29uY2F0X29mX2FycmF5XG4gIGxldCBhcHBlbmQgYSBiID0gY29uY2F0IChjb25jYXRfb2ZfYXJyYXkgW3wgYTsgYiB8XSlcbiAgbGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAoY29uY2F0X29mX2FycmF5IChBcnJheS5tYXAgKHRvX2FycmF5IHQpIH5mKSlcblxuICBsZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgICBjb25jYXRfbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IG9mX2FycmF5IFt8fF1cbiAgICAgIHwgU29tZSB5IC0+IG9mX2FycmF5IFt8IHkgfF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IFNvbWUgKGYgeCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkubWFwICh0b19hcnJheSB0KSB+ZiBpblxuICAgIGxldCB4cyA9XG4gICAgICBBcnJheS5mb2xkX3JpZ2h0IGFycmF5IH5pbml0OltdIH5mOihmdW4gZWl0aGVyIGFjYyAtPlxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IHggLT4geCA6OiBhY2NcbiAgICAgICAgfCBTZWNvbmQgXyAtPiBhY2MpXG4gICAgaW5cbiAgICBsZXQgeXMgPVxuICAgICAgQXJyYXkuZm9sZF9yaWdodCBhcnJheSB+aW5pdDpbXSB+ZjooZnVuIGVpdGhlciBhY2MgLT5cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCBfIC0+IGFjY1xuICAgICAgICB8IFNlY29uZCB4IC0+IHggOjogYWNjKVxuICAgIGluXG4gICAgb2ZfbGlzdCB4cywgb2ZfbGlzdCB5c1xuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgcGFydGl0aW9uX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHgpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIFQudFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gQXJyYXkudG9fbGlzdFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxubGV0IGl0ZXJpIH5mb2xkIHQgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIHYgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgdiBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IGNvdW50aSB+Zm9sZGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgbiBhIC0+IGlmIGYgaSBhIHRoZW4gbiArIDEgZWxzZSBuKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvcl9hbGxpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBub3QgKGYgaSB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBpIH5pdGVyaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIHgpKSk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxuKCogQWxsb3dzIFtNYWtlX2dlbl0gdG8gc2hhcmUgYSBbQ29udGFpbmVyLkdlbmVyaWNdIGltcGxlbWVudGF0aW9uIHdpdGgsIGUuZy4sXG4gICBbQ29udGFpbmVyLk1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNdLiAqKVxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyXG4gICAgKFQgOiBNYWtlX2dlbl9hcmcpXG4gICAgKEMgOiBDb250YWluZXIuR2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCkgOlxuICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPVxuc3RydWN0XG4gIGluY2x1ZGUgQ1xuXG4gIGxldCBpdGVyaSA9XG4gICAgbWF0Y2ggVC5pdGVyaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXJpIC0+IGl0ZXJpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlcmkgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBmb2xkaSA9XG4gICAgbWF0Y2ggVC5mb2xkaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGZvbGRpIC0+IGZvbGRpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmluaXQgfmYgLT4gZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9IGNvdW50aSB+Zm9sZGkgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gZXhpc3RzaSB+aXRlcmkgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IGZvcl9hbGxpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZGkgdCB+ZiA9IGZpbmRpIH5pdGVyaSB0IH5mXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZV9nZW4gKFQpXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyIChUKSAoQylcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKF8sIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdCA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUKVxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lciAoVCkgKEMpXG5cbiAgbGV0IGRlcml2ZWRfaW5pdCBuIH5mID0gb2ZfYXJyYXkgKEFycmF5LmluaXQgbiB+ZilcblxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggVC5pbml0IHdpdGhcbiAgICB8IGBDdXN0b20gaW5pdCAtPiBpbml0XG4gICAgfCBgRGVmaW5lX3VzaW5nX29mX2FycmF5IC0+IGRlcml2ZWRfaW5pdFxuICA7O1xuXG4gIGxldCBkZXJpdmVkX2NvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKFQuY29uY2F0X29mX2FycmF5IChBcnJheS5tYXBpICh0b19hcnJheSB0KSB+ZikpXG5cbiAgbGV0IGNvbmNhdF9tYXBpID1cbiAgICBtYXRjaCBULmNvbmNhdF9tYXBpIHdpdGhcbiAgICB8IGBDdXN0b20gY29uY2F0X21hcGkgLT4gY29uY2F0X21hcGlcbiAgICB8IGBEZWZpbmVfdXNpbmdfY29uY2F0IC0+IGRlcml2ZWRfY29uY2F0X21hcGlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgY29uY2F0X21hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+IG9mX2FycmF5IFt8fF1cbiAgICAgIHwgU29tZSB5IC0+IG9mX2FycmF5IFt8IHkgfF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBTb21lIChmIGkgeCkpIFtAbm9udGFpbF1cblxuICBsZXQgZmlsdGVyaSB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTBfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKF8sIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IEFycmF5LnRvX2xpc3RcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RkbGliLkxhenlcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsYXp5X3Rfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGF6eV90XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gbGF6eV90X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5leHRlcm5hbCBmb3JjZSA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5sZXQgbWFwIHQgfmYgPSBsYXp5IChmIChmb3JjZSB0KSlcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIDAgZWxzZSBjb21wYXJlX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG47O1xuXG5sZXQgZXF1YWwgZXF1YWxfYSB0MSB0MiA9IGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiB0cnVlIGVsc2UgZXF1YWxfYSAoZm9yY2UgdDEpIChmb3JjZSB0MilcbmxldCBoYXNoX2ZvbGRfdCA9IEhhc2guQnVpbHRpbi5oYXNoX2ZvbGRfbGF6eV90XG5sZXQgcGVlayB0ID0gaWYgaXNfdmFsIHQgdGhlbiBTb21lIChmb3JjZSB0KSBlbHNlIE5vbmVcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiB4ID0gZnJvbV92YWwgeFxuICAgIGxldCBiaW5kIHQgfmYgPSBsYXp5IChmb3JjZSAoZiAoZm9yY2UgdCkpKVxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgVF91bmZvcmNpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBpc192YWwgdCB0aGVuIHNleHBfb2ZfYSAoZm9yY2UgdCkgZWxzZSBzZXhwX29mX3N0cmluZyBcIjx1bmZvcmNlZCBsYXp5PlwiXG4gIDs7XG5lbmRcbiIsIigqIFNwbGl0IG9mZiB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5IHdpdGggW09yX2Vycm9yXS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbmxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIHBvc2l0aW9uOiAlZFwiIHBvcyAoKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIGxlbmd0aDogJWRcIiBsZW4gKCk7XG4gICgqIFdlIHVzZSBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gdG90YWxfbGVuZ3RoXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA+IHRvdGFsX2xlbmd0aCAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnZiBcInBvcyArIGxlbiBwYXN0IGVuZDogJWQgKyAlZCA+ICVkXCIgcG9zIGxlbiB0b3RhbF9sZW5ndGggKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICAoKiBUaGlzIGlzIGJldHRlciB0aGFuIFtzbG93X2NoZWNrX3Bvc19sZW5fZXhuXSBmb3IgdHdvIHJlYXNvbnM6XG5cbiAgICAgLSBtdWNoIGxlc3MgaW5saW5lZCBjb2RlXG4gICAgIC0gb25seSBvbmUgY29uZGl0aW9uYWwganVtcFxuXG4gICAgIFRoZSByZWFzb24gaXQgd29ya3MgaXMgdGhhdCBjaGVja2luZyBbPCAwXSBpcyB0ZXN0aW5nIHRoZSBoaWdoZXN0IG9yZGVyIGJpdCwgc29cbiAgICAgW2EgPCAwIHx8IGIgPCAwXSBpcyB0aGUgc2FtZSBhcyBbYSBsb3IgYiA8IDBdLlxuXG4gICAgIFtwb3MgKyBsZW5dIGNhbiBvdmVyZmxvdywgc28gW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gaXMgbm90IGVxdWl2YWxlbnQgdG9cbiAgICAgW3RvdGFsX2xlbmd0aCAtIGxlbiAtIHBvcyA8IDBdLCB3ZSBuZWVkIHRvIHRlc3QgZm9yIFtwb3MgKyBsZW5dIG92ZXJmbG93IGFzXG4gICAgIHdlbGwuICopXG4gIGxldCBzdG9wID0gcG9zICsgbGVuIGluXG4gIGlmIHBvcyBsb3IgbGVuIGxvciBzdG9wIGxvciAodG90YWxfbGVuZ3RoIC0gc3RvcCkgPCAwXG4gIHRoZW4gc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBnZXRfcG9zX2xlbl9leG4gPyhwb3MgPSAwKSA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBpIC0+IGlcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBwb3MsIGxlblxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gPSBzbG93X2NoZWNrX3Bvc19sZW5fZXhuXG5lbmRcbiIsIlxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgb3BlbiBTdGRsaWIuQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgbGV0IG9mX3N0YXRlIDogU3RkbGliLlJhbmRvbS5TdGF0ZS50IC0+IHQgPSBTdGRsaWIuT2JqLm1hZ2ljXG5lbmRcblxubGV0IGFzc2lnbiBkc3Qgc3JjID1cbiAgbGV0IGRzdCA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2UgZHN0KSBpblxuICBsZXQgc3JjID0gUmVwci5vZl9zdGF0ZSAoTGF6eS5mb3JjZSBzcmMpIGluXG4gIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEuYmxpdCBzcmMgZHN0XG5cbmxldCBtYWtlX2RlZmF1bHQgZGVmYXVsdCA9XG4gIGxldCBzcGxpdF9mcm9tX3BhcmVudCB2ID1cbiAgICBTdGRsaWIuTGF6eS5tYXBfdmFsIFN0ZGxpYi5SYW5kb20uU3RhdGUuc3BsaXQgdlxuICBpblxuICBTdGRsaWIuRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudCAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBnZXRfc3RhdGUgcmFuZG9tX2tleSA9IFN0ZGxpYi5Eb21haW4uRExTLmdldCByYW5kb21fa2V5XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5cbigqIFVuZm9ydHVuYXRlbHksIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgZXhwb3NlXG4gICBbU3RkbGliLlJhbmRvbS5TdGF0ZS5kZWZhdWx0XSwgd2UgaGF2ZSB0byBjb25zdHJ1Y3Qgb3VyIG93bi4gIFdlIHRoZW4gYnVpbGQgdGhlXG4gICBbU3RkbGliLlJhbmRvbS5pbnRdLCBbU3RkbGliLlJhbmRvbS5ib29sXSBmdW5jdGlvbnMgYW5kIGZyaWVuZHMgdXNpbmcgdGhhdCBkZWZhdWx0IHN0YXRlIGluXG4gICBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeS5cblxuICAgT25lIG90aGVyIHRyaWNraW5lc3MgaXMgdGhhdCB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgdW5leHBvc2VkIFtTdGRsaWIuUmFuZG9tLlN0YXRlLmFzc2lnbl1cbiAgIGZ1bmN0aW9uLCB3aGljaCBhY2Nlc3NlcyB0aGUgdW5leHBvc2VkIHN0YXRlIHJlcHJlc2VudGF0aW9uLiAgU28sIHdlIGNvcHkgdGhlXG4gICBbU3RhdGUucmVwcl0gdHlwZSBkZWZpbml0aW9uIGFuZCBbYXNzaWduXSBmdW5jdGlvbiB0byBoZXJlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksXG4gICBhbmQgdXNlIFtPYmoubWFnaWNdIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24uICopXG5cbigqIFJlZ3Jlc3Npb24gdGVzdHMgb3VnaHQgdG8gYmUgZGV0ZXJtaW5pc3RpYyBiZWNhdXNlIHRoYXQgd2F5IGFueW9uZSB3aG8gYnJlYWtzIHRoZSB0ZXN0XG4gICBrbm93cyB0aGF0IGl0J3MgdGhlaXIgY29kZSB0aGF0IGJyb2tlIHRoZSB0ZXN0LiAgSWYgdGVzdHMgYXJlIG5vbmRldGVybWluaXN0aWMsIGEgdGVzdFxuICAgZmFpbHVyZSBtYXkgaW5zdGVhZCBoYXBwZW4gYmVjYXVzZSB0aGUgdGVzdCBydW5uZXIgZ290IHVubHVja3kgYW5kIHVuY292ZXJlZCBhblxuICAgZXhpc3RpbmcgYnVnIGluIHRoZSBjb2RlIHN1cHBvc2VkbHkgYmVpbmcgXCJwcm90ZWN0ZWRcIiBieSB0aGUgdGVzdCBpbiBxdWVzdGlvbi4gKilcbmxldCBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzID1cbiAgaWYgYW1fdGVzdGluZ1xuICB0aGVuIChcbiAgICBtYXRjaCBhbGxvd19pbl90ZXN0cyB3aXRoXG4gICAgfCBTb21lIHRydWUgLT4gKClcbiAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICBcImluaXRpYWxpemluZyBSYW5kb20gd2l0aCBhIG5vbmRldGVybWluaXN0aWMgc2VlZCBpcyBmb3JiaWRkZW4gaW4gaW5saW5lIHRlc3RzXCIpXG47O1xuXG5leHRlcm5hbCByYW5kb21fc2VlZCA6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbmxldCByYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICByYW5kb21fc2VlZCAoKVxuOztcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFdlIGFsbG93IGxhemluZXNzIG9ubHkgZm9yIHRoZSBkZWZpbml0aW9uIG9mIFtkZWZhdWx0XSwgYmVsb3csIHdoaWNoIG1heSBsYXppbHkgY2FsbFxuICAgICBbbWFrZV9zZWxmX2luaXRdLiBGb3IgYWxsIG90aGVyIHB1cnBvc2VzLCB3ZSBjcmVhdGUgYW5kIHVzZSBbdF0gZWFnZXJseS4gKilcbiAgdHlwZSB0ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS50IExhenkudFxuXG4gIGxldCBiaXRzIHQgPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgdClcbiAgbGV0IGJvb2wgdCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuYm9vbCAoTGF6eS5mb3JjZSB0KVxuICBsZXQgaW50IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDMyIHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50MzIgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50NjQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5pbnQ2NCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBuYXRpdmVpbnQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5uYXRpdmVpbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbWFrZSBzZWVkID0gTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlIHNlZWQpXG4gIGxldCBjb3B5IHQgPSBMYXp5LmZyb21fdmFsIChTdGRsaWIuUmFuZG9tLlN0YXRlLmNvcHkgKExhenkuZm9yY2UgdCkpXG4gIGxldCBjaGFyIHQgPSBpbnQgdCAyNTYgfD4gQ2hhci51bnNhZmVfb2ZfaW50XG4gIGxldCBhc2NpaSB0ID0gaW50IHQgMTI4IHw+IENoYXIudW5zYWZlX29mX2ludFxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICAgIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gICAgTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcbiAgOztcblxuICBsZXQgYXNzaWduID0gUmFuZG9tX3JlcHIuYXNzaWduXG4gIGxldCBmdWxsX2luaXQgdCBzZWVkID0gYXNzaWduIHQgKG1ha2Ugc2VlZClcblxuICBsZXQgZGVmYXVsdCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgZGVmaW5lIEJhc2UncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZSBhcyBhIGNvcHkgb2YgT0NhbWwncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZS5cbiAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBwcm9ncmFtcyB0aGF0IHVzZSBCYXNlLlJhbmRvbSB3aWxsIHNlZSB0aGUgc2FtZSBzZXF1ZW5jZSBvZlxuICAgICAgICAgcmFuZG9tIGJpdHMgYXMgaWYgdGhleSBoYWQgdXNlZCBTdGRsaWIuUmFuZG9tLiBIb3dldmVyLCBiZWNhdXNlIFtnZXRfc3RhdGVdIHJldHVybnNcbiAgICAgICAgIGEgY29weSwgQmFzZS5SYW5kb20gYW5kIE9DYW1sLlJhbmRvbSBhcmUgbm90IHVzaW5nIHRoZSBzYW1lIHN0YXRlLiBJZiBhIHByb2dyYW1cbiAgICAgICAgIHVzZWQgYm90aCwgZWFjaCBvZiB0aGVtIHdvdWxkIGdvIHRocm91Z2ggdGhlIHNhbWUgc2VxdWVuY2Ugb2YgcmFuZG9tIGJpdHMuIFRvXG4gICAgICAgICBhdm9pZCB0aGF0LCB3ZSByZXNldCBPQ2FtbCdzIHJhbmRvbSBzdGF0ZSB0byBhIGRpZmZlcmVudCBzZWVkLCBnaXZpbmcgaXQgYVxuICAgICAgICAgZGlmZmVyZW50IHNlcXVlbmNlLiAqKVxuICAgICAgbGV0IHQgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICAgICAgU3RkbGliLlJhbmRvbS5pbml0IDEzNztcbiAgICAgIExhenkuZnJvbV92YWwgdClcbiAgICBlbHNlXG4gICAgICBsYXp5XG4gICAgICAgICgqIE91dHNpZGUgb2YgdGVzdHMsIHdlIGluaXRpYWxpemUgcmFuZG9tIHN0YXRlIG5vbmRldGVybWluaXN0aWNhbGx5IGFuZCBsYXppbHkuXG4gICAgICAgICAgIFdlIGZvcmNlIHRoZSByYW5kb20gaW5pdGlhbGl6YXRpb24gdG8gYmUgbGF6eSBzbyB0aGF0IHdlIGRvIG5vdCBwYXkgYW55IGNvc3RcbiAgICAgICAgICAgZm9yIGl0IGluIHByb2dyYW1zIHRoYXQgZG8gbm90IHVzZSByYW5kb21uZXNzLiAqKVxuICAgICAgICAoTGF6eS5mb3JjZSAobWFrZV9zZWxmX2luaXQgKCkpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fNjRiaXRzIHQgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBTdGRsaWIuSW50NjQudG9faW50IChpbnQ2NCB0IChTdGRsaWIuSW50NjQub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50X29uXzMyYml0cyB0IGJvdW5kID1cbiAgICAoKiBOb3QgYWx3YXlzIHRydWUgd2l0aCB0aGUgSmF2YVNjcmlwdCBiYWNrZW5kLiAqKVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBTdGRsaWIuSW50MzIudG9faW50IChpbnQzMiB0IChTdGRsaWIuSW50MzIub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDY0ID1cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT5cbiAgICAgIGxvZ3hvclxuICAgICAgICAoYml0cyBzdGF0ZSlcbiAgICAgICAgKGxvZ3hvciAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSA2MCkpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50MzIgPVxuICAgIGxldCBvcGVuIFN0ZGxpYi5JbnQzMiBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPiBsb2d4b3IgKGJpdHMgc3RhdGUpIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMClcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIHN0YXRlID0gU3RkbGliLkludDY0LnRvX2ludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyBzdGF0ZSA9IFN0ZGxpYi5JbnQzMi50b19pbnQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIHN0YXRlID1cbiAgICBTdGRsaWIuSW50NjQudG9fbmF0aXZlaW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMgc3RhdGUgPVxuICAgIFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50MzIgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgcmFpc2VfY3Jvc3NlZF9ib3VuZHMgbmFtZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCBzdHJpbmdfb2ZfYm91bmQgPVxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiUmFuZG9tLiVzOiBjcm9zc2VkIGJvdW5kcyBbJXMgPiAlc11cIlxuICAgICAgbmFtZVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCBsb3dlcl9ib3VuZClcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgdXBwZXJfYm91bmQpXG4gICAgICAoKVxuICBbQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuICA7O1xuXG4gIGxldCBpbnRfaW5jbCA9XG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnRcIiBsbyBoaSBJbnQudG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgICBpZiBkaWZmID0gSW50Lm1heF92YWx1ZVxuICAgICAgdGhlbiBsbyArIChmdWxsX3JhbmdlX2ludCBzdGF0ZSBsYW5kIEludC5tYXhfdmFsdWUpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMFxuICAgICAgdGhlbiBsbyArIGludCBzdGF0ZSAoSW50LnN1Y2MgZGlmZilcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50MzJfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50MzIgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDMyXCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBsXG4gICAgICB0aGVuIGFkZCBsbyAoaW50MzIgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9pbmNsID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLk5hdGl2ZWludCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwibmF0aXZlaW50XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwblxuICAgICAgdGhlbiBhZGQgbG8gKG5hdGl2ZWludCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50NjRfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDY0XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgICB0aGVuIGFkZCBsbyAoaW50NjQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgdW5pZm9ybWx5IHJhbmRvbSBmbG9hdCBpbiBbMCwgMSkuICopXG4gIGxldCByZWMgcmF3ZmxvYXQgc3RhdGUgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBzY2FsZSA9IDB4MXAtMzAgaW5cbiAgICAoKiAyXi0zMCAqKVxuICAgIGxldCByMSA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHIyID0gU3RkbGliLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcmVzdWx0ID0gKChyMSAqLiBzY2FsZSkgKy4gcjIpICouIHNjYWxlIGluXG4gICAgKCogV2l0aCB2ZXJ5IHNtYWxsIHByb2JhYmlsaXR5LCByZXN1bHQgY2FuIHJvdW5kIHVwIHRvIDEuMCwgc28gaW4gdGhhdCBjYXNlLCB3ZSBqdXN0XG4gICAgICAgdHJ5IGFnYWluLiAqKVxuICAgIGlmIHJlc3VsdCA8IDEuMCB0aGVuIHJlc3VsdCBlbHNlIHJhd2Zsb2F0IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGZsb2F0IHN0YXRlIGhpID0gcmF3ZmxvYXQgc3RhdGUgKi4gaGlcblxuICBsZXQgZmxvYXRfcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImZsb2F0XCIgbG8gaGkgU3RkbGliLnN0cmluZ19vZl9mbG9hdDtcbiAgICBsbyArLiBmbG9hdCBzdGF0ZSAoaGkgLS4gbG8pXG4gIDs7XG5lbmRcblxubGV0IGRlZmF1bHQgPSBSYW5kb21fcmVwci5tYWtlX2RlZmF1bHQgU3RhdGUuZGVmYXVsdFxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBpbnQgeCA9IFN0YXRlLmludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQzMiB4ID0gU3RhdGUuaW50MzIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgbmF0aXZlaW50IHggPSBTdGF0ZS5uYXRpdmVpbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50NjQgeCA9IFN0YXRlLmludDY0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGZsb2F0IHggPSBTdGF0ZS5mbG9hdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnRfaW5jbCB4IHkgPSBTdGF0ZS5pbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDMyX2luY2wgeCB5ID0gU3RhdGUuaW50MzJfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IG5hdGl2ZWludF9pbmNsIHggeSA9IFN0YXRlLm5hdGl2ZWludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50NjRfaW5jbCB4IHkgPSBTdGF0ZS5pbnQ2NF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgZmxvYXRfcmFuZ2UgeCB5ID0gU3RhdGUuZmxvYXRfcmFuZ2UgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgY2hhciAoKSA9IFN0YXRlLmNoYXIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGFzY2lpICgpID0gU3RhdGUuYXNjaWkgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpKVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc1xuIiwiKCoqIEFuIGludGVybmFsLW9ubHkgbW9kdWxlIGZhY3RvcmVkIG91dCBkdWUgdG8gYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gY29yZV9hcnJheVxuICAgIGFuZCBjb3JlX2xpc3QuICBDb250YWlucyBjb2RlIGZvciBwZXJtdXRpbmcgYW4gYXJyYXkuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgPyhwb3MgPSAwKSA/bGVuIHQgPVxuICAoKiBDb3BpZWQgZnJvbSBbT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNvbXBpbGluZ1xuICAgICB3aXRob3V0IGZsYW1iZGEuICopXG4gIGxldCB0b3RhbF9sZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBsIC0+IGxcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBsZXQgbnVtX3N3YXBzID0gbGVuIC0gMSBpblxuICBmb3IgaSA9IG51bV9zd2FwcyBkb3dudG8gMSBkb1xuICAgIGxldCB0aGlzX2kgPSBwb3MgKyBpIGluXG4gICAgKCogW3JhbmRvbV9pXSBpcyBkcmF3biBmcm9tIFtwb3MsdGhpc19pXSAqKVxuICAgIGxldCByYW5kb21faSA9IHBvcyArIFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChpICsgMSkgaW5cbiAgICBzd2FwIHQgdGhpc19pIHJhbmRvbV9pXG4gIGRvbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBMZXNzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEVxdWFsIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEdyZWF0ZXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIExlc3M7IEVxdWFsOyBHcmVhdGVyIF0gOiB0IGxpc3QpXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwib3JkZXJpbmcubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIC0+IExlc3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIC0+IEVxdWFsXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgLT4gR3JlYXRlclxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IExlc3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVzc1wiXG4gICAgfCBFcXVhbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJFcXVhbFwiXG4gICAgfCBHcmVhdGVyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkdyZWF0ZXJcIlxuICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJMZXNzXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJFcXVhbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiR3JlYXRlclwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBfb3JkZXJpbmcgPSB0ID1cbiAgICB8IExlc3NcbiAgICB8IEVxdWFsXG4gICAgfCBHcmVhdGVyXG5lbmRcblxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBMZXNzIGVsc2UgaWYgbiA9IDAgdGhlbiBFcXVhbCBlbHNlIEdyZWF0ZXJcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTGVzcyAtPiAtMVxuICB8IEVxdWFsIC0+IDBcbiAgfCBHcmVhdGVyIC0+IDFcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxuXG5pbmNsdWRlIExpc3QxXG5cbigqIFRoaXMgaXRzZWxmIGluY2x1ZGVzIFtMaXN0MF0uICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gICAgZnVuICh0eXBlIGFfXzAwMV8pXG4gICAgICAgIDogKCgoYV9fMDAxX1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDFfKSAtPiAoYV9fMDAxXyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwMV8gdCkgLT5cbiAgICAgIGdsb2JhbGl6ZV9saXN0XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxpc3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9saXN0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxpc3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBPcl91bmVxdWFsX2xlbmd0aHMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBVbmVxdWFsX2xlbmd0aHNcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEwXyBiX18wMTFfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTBfIGJfXzAxMV9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxMF8sIGJfXzAxMV8gd2l0aFxuICAgICAgfCBPayBfYV9fMDEyXywgT2sgX2JfXzAxM18gLT4gX2NtcF9fYSBfYV9fMDEyXyBfYl9fMDEzX1xuICAgICAgfCBPayBfLCBfIC0+IC0xXG4gICAgICB8IF8sIE9rIF8gLT4gMVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMsIFVuZXF1YWxfbGVuZ3RocyAtPiAwKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMTdfKSA6ICgoYV9fMDE3XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAxN18gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTRfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAxNV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYV9fMDE0XyBhcmcwX18wMTVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAxNl8gXVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbF9sZW5ndGhzXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxubGV0IG9mX2xpc3QgdCA9IHRcblxubGV0IHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGxldCBuZXh0X2kgPSBzdHJpZGUgc3RhcnRfaSBpblxuICBsZXQgb3JkZXIgeCB5ID0gT3JkZXJpbmcub2ZfaW50IChjb21wYXJlIHggeSkgaW5cbiAgbGV0IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKCkgPVxuICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXCJcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RyaWRlX29yZGVyID1cbiAgICBtYXRjaCBvcmRlciBzdGFydF9pIG5leHRfaSB3aXRoXG4gICAgfCBFcXVhbCAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgfCBMZXNzIC0+IGBMZXNzXG4gICAgfCBHcmVhdGVyIC0+IGBHcmVhdGVyXG4gIGluXG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBsZXQgaV90b19zdG9wX29yZGVyID0gb3JkZXIgaSBzdG9wX2kgaW5cbiAgICBtYXRjaCBpX3RvX3N0b3Bfb3JkZXIsIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT5cbiAgICAgICgqIGhhdmVuJ3QgeWV0IHJlYWNoZWQgW3N0b3BfaV0uIENvbnRpbnVlLiAqKVxuICAgICAgbGV0IG5leHRfaSA9IHN0cmlkZSBpIGluXG4gICAgICAobWF0Y2ggb3JkZXIgaSBuZXh0X2ksIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICAgICB8IEVxdWFsLCBfIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgY2hhbmdlIGRpcmVjdGlvblwiXG4gICAgICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+IGxvb3AgbmV4dF9pIChpIDo6IGFjY3VtKSlcbiAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICgqIHN0ZXBwZWQgcGFzdCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgYWNjdW1cbiAgICB8IEVxdWFsLCBfIC0+XG4gICAgICAoKiByZWFjaGVkIFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICAobWF0Y2ggc3RvcCB3aXRoXG4gICAgICAgfCBgaW5jbHVzaXZlIC0+IGkgOjogYWNjdW1cbiAgICAgICB8IGBleGNsdXNpdmUgLT4gYWNjdW0pXG4gIGluXG4gIGxldCBzdGFydF9pID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X2lcbiAgICB8IGBleGNsdXNpdmUgLT4gbmV4dF9pXG4gIGluXG4gIHJldiAobG9vcCBzdGFydF9pIFtdKVxuOztcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgaWYgc3RyaWRlID0gMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZTogc3RyaWRlIG11c3QgYmUgbm9uLXplcm9cIjtcbiAgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGU6KGZ1biB4IC0+IHggKyBzdHJpZGUpIH5zdGFydCB+c3RvcCBzdGFydF9pIHN0b3BfaVxuOztcblxubGV0IGhkIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBfIC0+IFNvbWUgeFxuOztcblxubGV0IHRsIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiB0JyAtPiBTb21lIHQnXG47O1xuXG5sZXQgbnRoIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIG50aF9hdXggdCBuID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEgOjogdCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggdCAobiAtIDEpXG4gICAgaW5cbiAgICBudGhfYXV4IHQgbilcbjs7XG5cbmxldCBudGhfZXhuIHQgbiA9XG4gIG1hdGNoIG50aCB0IG4gd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiTGlzdC5udGhfZXhuICVkIGNhbGxlZCBvbiBsaXN0IG9mIGxlbmd0aCAlZFwiIG4gKGxlbmd0aCB0KSAoKVxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdW5vcmRlcmVkX2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwgfCBsLCBbXSAtPiBsXG4gIHwgXyAtPiByZXZfYXBwZW5kIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIgLT4gbG9vcCBhIGIgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXyB8IF8sIFtdIC0+IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGIgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgbDEgbDIgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2IgfSAtPlxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCJcbiAgICAgIG5hbWVcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSlcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYilcbiAgICAgICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYyA6ICdjIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgbDMgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgYyBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIsIGMgd2l0aFxuICAgICAgfCBbXSwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIsIF8gOjogYyAtPiBsb29wIGEgYiBjIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBbXSwgXyB8IF8sIF8sIFtdIC0+XG4gICAgICAgIFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGI7IHRhaWxfb2ZfYyA9IGMgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBsMyAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDNfZXhuIG5hbWUgbDEgbDIgbDMgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2I7IHRhaWxfb2ZfYyB9IC0+XG4gICAgbGV0IG4xID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EgaW5cbiAgICBsZXQgbjIgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYiBpblxuICAgIGxldCBuMyA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9jIGluXG4gICAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZCB8fCAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgbjIgbjMgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIgbDMpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5sZXQgaXRlcjIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihpdGVyMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgaXRlcjJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJpdGVyMl9leG5cIiBsMSBsMjtcbiAgaXRlcjJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KHJldl9tYXAyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCByZXZfbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcInJldl9tYXAyX2V4blwiIGwxIGwyO1xuICByZXZfbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGZvbGQyIGwxIGwyIH5pbml0IH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZDJfb2sgfmluaXQgfmYpIFtAbm9udGFpbF1cblxubGV0IGZvbGQyX2V4biBsMSBsMiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZDJfZXhuXCIgbDEgbDI7XG4gIGZvbGQyX29rIGwxIGwyIH5pbml0IH5mXG47O1xuXG5sZXQgZm9sZF9yaWdodDIgbDEgbDIgfmYgfmluaXQgPVxuICBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb2xkX3JpZ2h0Ml9vayB+ZiB+aW5pdCkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmlnaHQyX2V4biBsMSBsMiB+ZiB+aW5pdCA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZF9yaWdodDJfZXhuXCIgbDEgbDI7XG4gIGZvbGRfcmlnaHQyX29rIGwxIGwyIH5mIH5pbml0XG47O1xuXG5sZXQgZm9yX2FsbDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb3JfYWxsMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgZm9yX2FsbDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb3JfYWxsMl9leG5cIiBsMSBsMjtcbiAgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBleGlzdHMyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZXhpc3RzMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgZXhpc3RzMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImV4aXN0czJfZXhuXCIgbDEgbDI7XG4gIGV4aXN0czJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBlcXVhbCBhID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBiIDo6IGJzIC0+IGVxdWFsIGEgYiB8fCBsb29wIGVxdWFsIGEgYnNcbiAgaW5cbiAgbG9vcCBlcXVhbCBhIHRcbjs7XG5cbigqIFRoaXMgaXMgYSBjb3B5IG9mIHRoZSBjb2RlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggYW4gZXh0cmEgZXRhLWV4cGFuc2lvbiB0b1xuICAgYXZvaWQgY3JlYXRpbmcgcGFydGlhbCBjbG9zdXJlcyAoc2hvd2VkIHVwIGZvciBbZmlsdGVyXSkgaW4gcHJvZmlsaW5nKS4gKilcbmxldCByZXZfZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVjIGZpbmQgfmYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gZmluZCB+ZiAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCB+ZiBhY2N1IGxcbiAgaW5cbiAgZmluZCB+ZiBbXSB0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSByZXYgKHJldl9maWx0ZXIgdCB+ZilcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBsXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICBpblxuICBsb29wIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgbG9vcCBsXG4gIGluXG4gIGxvb3AgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJlYyBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgeCA6OiB0IC0+IGlmIGYgeCB0aGVuIHggZWxzZSBmaW5kX2V4biB0IH5mXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiBpIHggdGhlbiBTb21lIChpLCB4KSBlbHNlIGxvb3AgKGkgKyAxKSBsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgZmluZGlfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBsKVxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgJiYgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgfHwgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbigqKiBGb3IgdGhlIGNvbnRhaW5lciBpbnRlcmZhY2UuICopXG5sZXQgZm9sZF9sZWZ0ID0gZm9sZFxuXG5sZXQgb2ZfYXJyYXkgPSBBcnJheS50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBBcnJheS5vZl9saXN0XG5sZXQgdG9fbGlzdCB0ID0gdFxuXG5sZXQgbWF4X25vbl90YWlsY2FsbCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMV8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQncyBzbWFsbC4gVGhpc1xuICAgICBudW1iZXIgd2FzIHRha2VuIGZyb20gb2NhbWwjc3RkbGliL2xpc3QubWwgd2hpY2ggaXMgYWxzbyBlcXVhbCB0byB0aGUgZGVmYXVsdCBsaW1pdFxuICAgICBvZiByZWN1cnNpdmUgY2FsbCBpbiB0aGUganNfb2Zfb2NhbWwgY29tcGlsZXIgYmVmb3JlIHN3aXRjaGluZyB0byB0cmFtcG9saW5lLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG47O1xuXG4oKiogVGFpbCByZWN1cnNpdmUgdmVyc2lvbnMgb2Ygc3RhbmRhcmQgW0xpc3RdIG1vZHVsZSAqKVxuXG5sZXQgdGFpbF9hcHBlbmQgbDEgbDIgPSByZXZfYXBwZW5kIChyZXYgbDEpIGwyXG5cbigqIFRoZXJlIGFyZSBhIGZldyBvcHRpbWl6ZWQgbGlzdCBvcGVyYXRpb25zIGhlcmUsIGluY2x1ZGluZyBhcHBlbmQgYW5kIG1hcC4gIFRoZXJlIGFyZVxuICAgYmFzaWNhbGx5IHR3byBvcHRpbWl6YXRpb25zIGluIHBsYXk6IGxvb3AgdW5yb2xsaW5nLCBhbmQgZHluYW1pYyBzd2l0Y2hpbmcgYmV0d2VlblxuICAgc3RhY2sgYW5kIGhlYXAgYWxsb2NhdGlvbi5cblxuICAgVGhlIGxvb3AtdW5yb2xsaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgd2UganVzdCB1bnJvbGwgNSBsZXZlbHMgb2YgdGhlIGxvb3AuICBUaGlzIG1ha2VzXG4gICBlYWNoIGl0ZXJhdGlvbiBmYXN0ZXIsIGFuZCBhbHNvIHJlZHVjZXMgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgY29uc3VtZWQgcGVyIGxpc3RcbiAgIGVsZW1lbnQuXG5cbiAgIFRoZSBkeW5hbWljIHN3aXRjaGluZyBpcyBkb25lIGJ5IGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzLCBhbmQgdGhlblxuICAgc3dpdGNoaW5nIHRvIHRoZSBcInNsb3dcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIHdlIGV4Y2VlZCBhIGdpdmVuIGxpbWl0LiAgVGhpcyBtZWFucyB0aGF0XG4gICBzaG9ydCBsaXN0cyB1c2UgdGhlIGZhc3Qgc3RhY2stYWxsb2NhdGlvbiBtZXRob2QsIGFuZCBsb25nIGxpc3RzIHVzZSBhIHNsb3dlciBvbmUgdGhhdFxuICAgZG9lc24ndCByZXF1aXJlIHN0YWNrIHNwYWNlLiAqKVxubGV0IHJlYyBjb3VudF9hcHBlbmQgbDEgbDIgY291bnQgPVxuICBtYXRjaCBsMiB3aXRoXG4gIHwgW10gLT4gbDFcbiAgfCBfIC0+XG4gICAgKG1hdGNoIGwxIHdpdGhcbiAgICAgfCBbXSAtPiBsMlxuICAgICB8IFsgeDEgXSAtPiB4MSA6OiBsMlxuICAgICB8IFsgeDE7IHgyIF0gLT4geDEgOjogeDIgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDMgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiBsMlxuICAgICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgICAgeDFcbiAgICAgICA6OiB4MlxuICAgICAgIDo6IHgzXG4gICAgICAgOjogeDRcbiAgICAgICA6OiB4NVxuICAgICAgIDo6XG4gICAgICAgKGlmIGNvdW50ID4gbWF4X25vbl90YWlsY2FsbFxuICAgICAgICB0aGVuIHRhaWxfYXBwZW5kIHRsIGwyXG4gICAgICAgIGVsc2UgY291bnRfYXBwZW5kIHRsIGwyIChjb3VudCArIDEpKSlcbjs7XG5cbmxldCBhcHBlbmQgbDEgbDIgPSBjb3VudF9hcHBlbmQgbDEgbDIgMFxuXG4oKiBBbiBvcmRpbmFyeSB0YWlsIHJlY3Vyc2l2ZSBtYXAgYnVpbGRzIHVwIGFuIGludGVybWVkaWF0ZSAocmV2ZXJzZWQpIHJlcHJlc2VudGF0aW9uLFxuICAgd2l0aCBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0IHBlciBlbGVtZW50LiBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGluc3RlYWQgY2h1bmtzXG4gICA5IG9iamVjdHMgaW50byBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0LCByZWR1Y2luZyBhbGxvY2F0aW9uIGFuZCBwZXJmb3JtYW5jZSBjb3N0c1xuICAgYWNjb3JkaW5nbHkuIE5vdGUgdGhhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGxpc3QgaXMgZG9uZSBieSB0aGUgc3RkbGliJ3MgbWFwXG4gICBmdW5jdGlvbi4gKilcbmxldCB0YWlsX21hcCB4cyB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIHJpc2UgeXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4geXNcbiAgICB8ICh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicyAtPlxuICAgICAgcmlzZSAoeTAgOjogeTEgOjogeTIgOjogeTMgOjogeTQgOjogeTUgOjogeTYgOjogeTcgOjogeTggOjogeXMpIGJzXG4gIGluXG4gIGxldCByZWMgZGl2ZSBicyA9IGZ1bmN0aW9uXG4gICAgfCB4MCA6OiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB4NiA6OiB4NyA6OiB4OCA6OiB4cyAtPlxuICAgICAgbGV0IHkwID0gZiB4MCBpblxuICAgICAgbGV0IHkxID0gZiB4MSBpblxuICAgICAgbGV0IHkyID0gZiB4MiBpblxuICAgICAgbGV0IHkzID0gZiB4MyBpblxuICAgICAgbGV0IHk0ID0gZiB4NCBpblxuICAgICAgbGV0IHk1ID0gZiB4NSBpblxuICAgICAgbGV0IHk2ID0gZiB4NiBpblxuICAgICAgbGV0IHk3ID0gZiB4NyBpblxuICAgICAgbGV0IHk4ID0gZiB4OCBpblxuICAgICAgZGl2ZSAoKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzKSB4c1xuICAgIHwgeHMgLT4gcmlzZSAobm9udGFpbF9tYXAgfmYgeHMpIGJzXG4gIGluXG4gIGxldCByZXMgPSBkaXZlIFtdIHhzIGluXG4gIHJlc1xuOztcblxubGV0IHJlYyBjb3VudF9tYXAgfmY6KGYgW0Bsb2NhbF0pIGwgY3RyID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIHgxIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgWyBmMSBdXG4gIHwgWyB4MTsgeDIgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgWyBmMTsgZjIgXVxuICB8IFsgeDE7IHgyOyB4MyBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgWyBmMTsgZjI7IGYzIF1cbiAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgWyBmMTsgZjI7IGYzOyBmNCBdXG4gIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgbGV0IGY1ID0gZiB4NSBpblxuICAgIGYxXG4gICAgOjogZjJcbiAgICA6OiBmM1xuICAgIDo6IGY0XG4gICAgOjogZjVcbiAgICA6OiAoaWYgY3RyID4gbWF4X25vbl90YWlsY2FsbCB0aGVuIHRhaWxfbWFwIH5mIHRsIGVsc2UgY291bnRfbWFwIH5mIHRsIChjdHIgKyAxKSlcbjs7XG5cbmxldCBtYXAgbCB+ZiA9IGNvdW50X21hcCB+ZiBsIDBcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCAoID4+fCApIGwgZiA9IG1hcCBsIH5mXG5sZXQgbWFwMl9vayBsMSBsMiB+ZiA9IHJldiAocmV2X21hcDJfb2sgbDEgbDIgfmYpXG5sZXQgbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KG1hcDJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IG1hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJtYXAyX2V4blwiIGwxIGwyO1xuICBtYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmYgPVxuICBsZXQgcmVjIGxvb3AgbDEgbDIgbDMgYWMgPVxuICAgIG1hdGNoIGwxLCBsMiwgbDMgd2l0aFxuICAgIHwgW10sIFtdLCBbXSAtPiBhY1xuICAgIHwgeDEgOjogbDEsIHgyIDo6IGwyLCB4MyA6OiBsMyAtPiBsb29wIGwxIGwyIGwzIChmIHgxIHgyIHgzIDo6IGFjKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbG9vcCBsMSBsMiBsMyBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmV2X21hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihyZXZfbWFwM19vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgcmV2X21hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJyZXZfbWFwM19leG5cIiBsMSBsMiBsMztcbiAgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCBtYXAzX29rIGwxIGwyIGwzIH5mID0gcmV2IChyZXZfbWFwM19vayBsMSBsMiBsMyB+ZilcbmxldCBtYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoobWFwM19vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcIm1hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIG1hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgbDEgbDIgfmYgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgfmYgdCAoZiBoIDo6IGwyKVxuOztcblxubGV0IHVuemlwIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDJcbiAgICB8ICh4LCB5KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMilcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdXG47O1xuXG5sZXQgdW56aXAzIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiBsMyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDIsIGwzXG4gICAgfCAoeCwgeSwgeikgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpICh6IDo6IGwzKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW10gW11cbjs7XG5cbmxldCB6aXBfZXhuIGwxIGwyID1cbiAgdHJ5IG1hcDJfb2sgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDIgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluIHppcF9leG46ICVkIDw+ICVkXCIgKGxlbmd0aCBsMSkgKGxlbmd0aCBsMikgKClcbjs7XG5cbmxldCB6aXAgbDEgbDIgPSBtYXAyIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyXG5cbigqKiBBZGRpdGlvbmFsIGxpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmV2X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGggOjogdCAtPiBsb29wIChpICsgMSkgKGYgaSBoIDo6IGFjYykgdFxuICBpblxuICBsb29wIDAgW10gbCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwaSBsIH5mID0gcmV2IChyZXZfbWFwaSBsIH5mKVxuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGl0ZXJpIGwgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCBsIH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIHNuZCAoZm9sZCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHYgLT4gaSArIDEsIGYgaSBhY2MgdikpXG47O1xuXG5sZXQgZmlsdGVyaSBsIH5mID1cbiAgcmV2IChmb2xkaSBsIH5mOihmdW4gcG9zIGFjYyB4IC0+IGlmIGYgcG9zIHggdGhlbiB4IDo6IGFjYyBlbHNlIGFjYykgfmluaXQ6W10pXG47O1xuXG5sZXQgcmVkdWNlIGwgfmYgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgaGQgOjogdGwgLT4gU29tZSAoZm9sZCB+aW5pdDpoZCB+ZiB0bClcbjs7XG5cbmxldCByZWR1Y2VfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2UgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiA9XG4gICgqIENhbGwgdGhlIFwic2l6ZVwiIG9mIGEgdmFsdWUgdGhlIG51bWJlciBvZiBsaXN0IGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGNvbWJpbmVkIGludG9cbiAgICAgaXQgdmlhIGNhbGxzIHRvIFtmXS4gIFdlIHByb2NlZWQgYnkgdXNpbmcgW2ZdIHRvIGNvbWJpbmUgZWxlbWVudHMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAgIG9mIHRoZSBzYW1lIHNpemUgdW50aWwgd2UgY2FuJ3QgY29tYmluZSBhbnkgbW9yZSwgdGhlbiBnZXR0aW5nIGEgbmV3IGVsZW1lbnQgZnJvbSB0aGVcbiAgICAgaW5wdXQgbGlzdCBhbmQgcmVwZWF0aW5nLlxuXG4gICAgIFdpdGggdGhpcyBzdHJhdGVneSwgaW4gdGhlIGFjY3VtdWxhdG9yOlxuICAgICAtIHdlIG9ubHkgZXZlciBoYXZlIGVsZW1lbnRzIG9mIHNpemVzIGEgcG93ZXIgb2YgdHdvXG4gICAgIC0gd2UgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb2YgZWFjaCBzaXplXG4gICAgIC0gdGhlIHN1bSBvZiBhbGwgdGhlIGVsZW1lbnQgc2l6ZXMgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZFxuXG4gICAgIFRoZXNlIGNvbmRpdGlvbnMgZW5mb3JjZSB0aGF0IGxpc3Qgb2YgZWxlbWVudHMgb2YgZWFjaCBzaXplIGlzIHByZWNpc2VseSB0aGUgYmluYXJ5XG4gICAgIGV4cGFuc2lvbiBvZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkOiBpZiB5b3UndmUgY29uc3VtZWQgMTMgPSAwYjExMDFcbiAgICAgZWxlbWVudHMsIHlvdSBoYXZlIG9uZSBlbGVtZW50IG9mIHNpemUgOCwgb25lIG9mIHNpemUgNCwgYW5kIG9uZSBvZiBzaXplIDEuICBIZW5jZVxuICAgICB3aGVuIGEgbmV3IGVsZW1lbnQgY29tZXMgYWxvbmcsIHRoZSBudW1iZXIgb2YgY29tYmluaW5ncyB5b3UgbmVlZCB0byBkbyBpcyB0aGUgbnVtYmVyXG4gICAgIG9mIHRyYWlsaW5nIDFzIGluIHRoZSBiaW5hcnkgZXhwYW5zaW9uIG9mIFtudW1dLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgaGF2ZVxuICAgICBhbHJlYWR5IGdvbmUgaW50byB0aGUgYWNjdW11bGF0b3IuICBUaGUgYWNjdW11bGF0b3IgaXMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHNpemUsIHNvXG4gICAgIHRoZSBuZXh0IGVsZW1lbnQgdG8gY29tYmluZSB3aXRoIGlzIGFsd2F5cyB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gKilcbiAgbGV0IHJlYyBzdGVwX2FjY3VtIG51bSBhY2MgeCA9XG4gICAgaWYgbnVtIGxhbmQgMSA9IDBcbiAgICB0aGVuIHggOjogYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIE5ldyBlbGVtZW50cyBmcm9tIGxhdGVyIGluIHRoZSBpbnB1dCBsaXN0IGdvIG9uIHRoZSBmcm9udCBvZiB0aGUgYWNjdW11bGF0b3IsIHNvXG4gICAgICAgICB0aGUgYWNjdW11bGF0b3IgaXMgaW4gcmV2ZXJzZSBvcmRlciB3cnQgdGhlIG9yaWdpbmFsIGxpc3Qgb3JkZXIsIGhlbmNlIFtmIHkgeF1cbiAgICAgICAgIGluc3RlYWQgb2YgW2YgeCB5XS4gKilcbiAgICAgIHwgeSA6OiB5cyAtPiBzdGVwX2FjY3VtIChudW0gYXNyIDEpIHlzIChmIHkgeCkpXG4gIGluXG4gICgqIEV4cGVyaW1lbnRhbGx5LCBpbmxpbmluZyBbZm9sZGldIGFuZCB1bnJvbGxpbmcgdGhpcyBsb29wIGEgZmV3IHRpbWVzIGNhbiByZWR1Y2VcbiAgICAgcnVudGltZSBkb3duIHRvIGEgdGhpcmQgYW5kIGFsbG9jYXRpb24gdG8gMS8xNnRoIG9yIHNvIGluIHRoZSBtaWNyb2JlbmNobWFya3MgYmVsb3cuXG4gICAgIEhvd2V2ZXIsIGluIG1vc3QgdXNlIGNhc2VzIFtmXSBpcyBsaWtlbHkgdG8gYmUgZXhwZW5zaXZlIChvdGhlcndpc2Ugd2h5IGRvIHlvdSBjYXJlXG4gICAgIGFib3V0IHRoZSBvcmRlciBvZiByZWR1Y3Rpb24/KSBzbyB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBmdW5jdGlvbiBpdHNlbGYgZG9lc24ndCByZWFsbHlcbiAgICAgbWF0dGVyLiBJZiB5b3UgY29tZSB1cCB3aXRoIGEgdXNlLWNhc2Ugd2hlcmUgaXQgZG9lcywgdGhlbiB0aGF0J3Mgc29tZXRoaW5nIHlvdSBtaWdodFxuICAgICB3YW50IHRvIHRyeTogc2VlIGhnIGxvZyAtcHIgNDllZjA2NWY0MjlkLiAqKVxuICBtYXRjaCBmb2xkaSBsIH5pbml0OltdIH5mOnN0ZXBfYWNjdW0gd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IFNvbWUgKGZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIHggeSAtPiBmIHkgeCkpXG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlX2JhbGFuY2VkIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9iYWxhbmNlZF9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgZ3JvdXBpIGwgfmJyZWFrID1cbiAgbGV0IGdyb3VwcyA9XG4gICAgZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIHggLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IFsgWyB4IF0gXVxuICAgICAgfCBjdXJyZW50X2dyb3VwIDo6IHRsIC0+XG4gICAgICAgIGlmIGJyZWFrIGkgKGhkX2V4biBjdXJyZW50X2dyb3VwKSB4XG4gICAgICAgIHRoZW4gWyB4IF0gOjogY3VycmVudF9ncm91cCA6OiB0bCAoKiBzdGFydCBuZXcgZ3JvdXAgKilcbiAgICAgICAgZWxzZSAoeCA6OiBjdXJyZW50X2dyb3VwKSA6OiB0bClcbiAgICAoKiBleHRlbmQgY3VycmVudCBncm91cCAqKVxuICBpblxuICBtYXRjaCBncm91cHMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgbCAtPiByZXZfbWFwIGwgfmY6cmV2XG47O1xuXG5sZXQgZ3JvdXAgbCB+YnJlYWsgPSBncm91cGkgbCB+YnJlYWs6KGZ1biBfIHggeSAtPiBicmVhayB4IHkpIFtAbm9udGFpbF1cblxubGV0IHNvcnRfYW5kX2dyb3VwIGwgfmNvbXBhcmUgPVxuICBsIHw+IHN0YWJsZV9zb3J0IH5jb21wYXJlIHw+IGdyb3VwIH5icmVhazooZnVuIHggeSAtPiBjb21wYXJlIHggeSA8PiAwKVxuOztcblxubGV0IGNvbmNhdF9tYXAgbCB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChyZXZfYXBwZW5kIChmIGhkKSBhY2MpIHRsXG4gIGluXG4gIGxldCByZXMgPSBhdXggW10gbCBpblxuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBhdXggY29udCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChjb250ICsgMSkgKHJldl9hcHBlbmQgKGYgY29udCBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggMCBbXSBsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtZXJnZSBsMSBsMiB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBhY2MgbDJcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGFjYyBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjb21wYXJlIGgxIGgyIDw9IDAgdGhlbiBsb29wIChoMSA6OiBhY2MpIHQxIGwyIGVsc2UgbG9vcCAoaDIgOjogYWNjKSBsMSB0MlxuICBpblxuICBsb29wIFtdIGwxIGwyIFtAbm9udGFpbF1cbjs7XG5cbm1vZHVsZSBDYXJ0ZXNpYW5fcHJvZHVjdCA9IHN0cnVjdFxuICAoKiBXZSBhcmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZSBleHBvcnQgZnJvbSBmdW5jdG9ycyBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseVxuICAgICByZWJpbmQgbW9yZSBlZmZpY2llbnQgbGlzdC1zcGVjaWZpYyBmdW5jdGlvbnMuICopXG5cbiAgbGV0IGJpbmQgPSBjb25jYXRfbWFwXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcDIgYSBiIH5mID0gY29uY2F0X21hcCBhIH5mOihmdW4geCAtPiBtYXAgYiB+ZjooZnVuIHkgLT4gZiB4IHkpKVxuICBsZXQgcmV0dXJuIHggPSBbIHggXVxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgdCAoZiBbQGxvY2FsXSkgPSBiaW5kIHQgfmZcblxuICBvcGVuIHN0cnVjdFxuICAgIG1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBNb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGxldCBhbGwgPSBNb25hZC5hbGxcbiAgbGV0IGFsbF91bml0ID0gTW9uYWQuYWxsX3VuaXRcbiAgbGV0IGlnbm9yZV9tID0gTW9uYWQuaWdub3JlX21cbiAgbGV0IGpvaW4gPSBNb25hZC5qb2luXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG4gIGVuZFxuXG4gIGxldCBhcHBseSA9IEFwcGxpY2F0aXZlLmFwcGx5XG4gIGxldCBib3RoID0gQXBwbGljYXRpdmUuYm90aFxuICBsZXQgbWFwMyA9IEFwcGxpY2F0aXZlLm1hcDNcbiAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoQ2FydGVzaWFuX3Byb2R1Y3QgOiBNb25hZC5TX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbigqKiByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0X2V4biBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogdGwgLT4gbGFzdF9leG4gdGxcbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubGFzdFwiXG47O1xuXG4oKiogb3B0aW9uYWxseSByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0IGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiBTb21lIHhcbiAgfCBfIDo6IHRsIC0+IGxhc3QgdGxcbiAgfCBbXSAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGlzX3ByZWZpeCBsaXN0IH5wcmVmaXggfmVxdWFsID1cbiAgbWF0Y2ggcHJlZml4IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgaGQgOjogdGwgLT5cbiAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgIHwgW10gLT4gZmFsc2VcbiAgICAgfCBoZCcgOjogdGwnIC0+IGVxdWFsIGhkIGhkJyAmJiBpc19wcmVmaXggdGwnIH5wcmVmaXg6dGwgfmVxdWFsKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGExIDo6IHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgYTEgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhMiA6OiB0IC0+IGlmIGVxdWFsIGExIGEyIHRoZW4gU29tZSAoYTEsIGEyKSBlbHNlIGxvb3AgYTIgdFxuICAgIGluXG4gICAgbG9vcCBhMSB0IFtAbm9udGFpbF1cbjs7XG5cbigqIHJldHVybnMgbGlzdCB3aXRob3V0IGFkamFjZW50IGR1cGxpY2F0ZXMgKilcbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyA/KHdoaWNoX3RvX2tlZXAgPSBgTGFzdCkgbGlzdCB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgdG9fa2VlcCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0b19rZWVwIDo6IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgZXF1YWwgaGQgdG9fa2VlcFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0b19rZWVwID1cbiAgICAgICAgICBtYXRjaCB3aGljaF90b19rZWVwIHdpdGhcbiAgICAgICAgICB8IGBGaXJzdCAtPiB0b19rZWVwXG4gICAgICAgICAgfCBgTGFzdCAtPiBoZFxuICAgICAgICBpblxuICAgICAgICBsb29wIHRvX2tlZXAgYWNjdW0gdGwpXG4gICAgICBlbHNlIGxvb3AgaGQgKHRvX2tlZXAgOjogYWNjdW0pIHRsXG4gIGluXG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gcmV2IChsb29wIGhkIFtdIHRsKVxuOztcblxuKCoqIHJldHVybnMgc29ydGVkIHZlcnNpb24gb2YgbGlzdCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZCAqKVxubGV0IGRlZHVwX2FuZF9zb3J0IGxpc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3QgKCogcGVyZm9ybWFuY2UgaGFjayAqKVxuICB8IF8gLT5cbiAgICBsZXQgZXF1YWwgeCB4JyA9IGNvbXBhcmUgeCB4JyA9IDAgaW5cbiAgICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsaXN0IGluXG4gICAgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgfmVxdWFsIHNvcnRlZCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9hX2R1cCBsIH5jb21wYXJlID1cbiAgbGV0IHNvcnRlZCA9IHNvcnQgbCB+Y29tcGFyZSBpblxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IE5vbmVcbiAgICB8IGhkMSA6OiAoaGQyIDo6IF8gYXMgdGwpIC0+IGlmIGNvbXBhcmUgaGQxIGhkMiA9IDAgdGhlbiBTb21lIGhkMSBlbHNlIGxvb3AgdGxcbiAgaW5cbiAgbG9vcCBzb3J0ZWQgW0Bub250YWlsXVxuOztcblxubGV0IGNvbnRhaW5zX2R1cCBsc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBmaW5kX2FfZHVwIGxzdCB+Y29tcGFyZSB3aXRoXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZmluZF9hbGxfZHVwcyBsIH5jb21wYXJlID1cbiAgKCogV2UgYWRkIHRoaXMgcmV2ZXJzYWwsIHNvIHdlIGNhbiBza2lwIGEgW3Jldl0gYXQgdGhlIGVuZC4gV2UgY291bGQgc2tpcFxuICAgICBbcmV2XSBhbnl3YXkgc2luY2Ugd2UgZG9uIG5vdCBnaXZlIGFueSBvcmRlcmluZyBndWFyYW50ZWVzLCBidXQgaXQgaXNcbiAgICAgbmljZSB0byBnZXQgcmVzdWx0cyBpbiBuYXR1cmFsIG9yZGVyLiAqKVxuICBsZXQgY29tcGFyZSBhIGIgPSBjb21wYXJlIGIgYSBpblxuICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsIGluXG4gICgqIFdhbGsgdGhlIGxpc3QgYW5kIHJlY29yZCB0aGUgZmlyc3Qgb2YgZWFjaCBjb25zZWN1dGl2ZSBydW4gb2YgaWRlbnRpY2FsIGVsZW1lbnRzICopXG4gIGxldCByZWMgbG9vcCBzb3J0ZWQgcHJldiB+YWxyZWFkeV9yZWNvcmRlZCBhY2MgPVxuICAgIG1hdGNoIHNvcnRlZCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBjb21wYXJlIHByZXYgaGQgPD4gMFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIGFjY1xuICAgICAgZWxzZSBpZiBhbHJlYWR5X3JlY29yZGVkXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSBhY2NcbiAgICAgIGVsc2UgbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIChoZCA6OiBhY2MpXG4gIGluXG4gIG1hdGNoIHNvcnRlZCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWMgYWxsX2VxdWFsX3RvIHQgdiB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgeCA6OiB4cyAtPiBlcXVhbCB4IHYgJiYgYWxsX2VxdWFsX3RvIHhzIHYgfmVxdWFsXG47O1xuXG5sZXQgYWxsX2VxdWFsIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gaWYgYWxsX2VxdWFsX3RvIHhzIHggfmVxdWFsIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudCkgW0Bub250YWlsXVxuOztcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID0gMCB0aGVuIGFjY3VtIGVsc2UgbG9vcCAoaSAtIDEpIChmIChpIC0gMSkgOjogYWNjdW0pXG4gIGluXG4gIGxvb3AgbiBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmV2X2ZpbHRlcl9tYXAgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgbCBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcCBsIH5mKVxuXG5sZXQgcmV2X2ZpbHRlcl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaSBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCAoaSArIDEpIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgMCBsIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcGkgbCB+ZilcbmxldCBmaWx0ZXJfb3B0IGwgPSBmaWx0ZXJfbWFwIGwgfmY6Rm4uaWRcblxubGV0IHBhcnRpdGlvbjNfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kIHRyZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kLCByZXYgdHJkXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgYEZzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZCB0cmRcbiAgICAgICB8IGBTbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkgdHJkXG4gICAgICAgfCBgVHJkIHkgLT4gbG9vcCB0IGZzdCBzbmQgKHkgOjogdHJkKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCBmIHggOiBfIEVpdGhlci50ID0gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4IGluXG4gIHBhcnRpdGlvbl9tYXAgdCB+ZiBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX3Jlc3VsdCB0ID0gcGFydGl0aW9uX21hcCB0IH5mOlJlc3VsdC50b19laXRoZXJcblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIHR5cGUgJ2Ega2V5ID0gKCdhW0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX2tleV90YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQga2V5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGtleSA9XG4gICAgZnVuIF9vZl9hX18wMThfIC0+IF9vZl9hX18wMThfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2Zfa2V5IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGtleSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biBfb2ZfYV9fMDIwXyAtPiBfb2ZfYV9fMDIwX1xuICA7O1xuXG4gIGxldCBrZXlfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGtleSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnXG4gICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHZhbHVlID0gKCdhW0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3ZhbHVlX3RhZyA9IExpc3QgW11dKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB2YWx1ZV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB2YWx1ZSA9XG4gICAgZnVuIF9vZl9hX18wMjFfIC0+IF9vZl9hX18wMjFfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdmFsdWUgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdmFsdWUgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAyM18gLT4gX29mX2FfXzAyM19cbiAgOztcblxuICBsZXQgdmFsdWVfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdmFsdWUgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWdcbiAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgKCgnYSBrZXkgKiAnYiB2YWx1ZSkgbGlzdFtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY190YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMzJfID0gXCJsaXN0Lm1sLkFzc29jLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDI0XyBfb2ZfYl9fMDI1XyB4X18wMzNfIC0+XG4gICAgICBsaXN0X29mX3NleHBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wMjdfOyBhcmcxX18wMjhfIF0gLT5cbiAgICAgICAgICAgIGxldCByZXMwX18wMjlfID0ga2V5X29mX3NleHAgX29mX2FfXzAyNF8gYXJnMF9fMDI3X1xuICAgICAgICAgICAgYW5kIHJlczFfXzAzMF8gPSB2YWx1ZV9vZl9zZXhwIF9vZl9iX18wMjVfIGFyZzFfXzAyOF8gaW5cbiAgICAgICAgICAgIHJlczBfXzAyOV8sIHJlczFfXzAzMF9cbiAgICAgICAgICB8IHNleHBfXzAzMV8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMzJfXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgc2V4cF9fMDMxXylcbiAgICAgICAgeF9fMDMzX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfYV9fMDM0XyBfb2ZfYl9fMDM1XyB4X18wNDBfIC0+XG4gICAgICBzZXhwX29mX2xpc3RcbiAgICAgICAgKGZ1biAoYXJnMF9fMDM2XywgYXJnMV9fMDM3XykgLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAzOF8gPSBzZXhwX29mX2tleSBfb2ZfYV9fMDM0XyBhcmcwX18wMzZfXG4gICAgICAgICAgIGFuZCByZXMxX18wMzlfID0gc2V4cF9vZl92YWx1ZSBfb2ZfYl9fMDM1XyBhcmcxX18wMzdfIGluXG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzAzOF87IHJlczFfXzAzOV8gXSlcbiAgICAgICAgeF9fMDQwX1xuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EgJ2IuXG4gICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBUYWdnZWRcbiAgICAgICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3RhZ1xuICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgKGxpc3Rfc2V4cF9ncmFtbWFyXG4gICAgICAgICAgICAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoa2V5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKS51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zICgodmFsdWVfc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIpLnVudHlwZWQsIEVtcHR5KSApKVxuICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBwYWlyX29mX2dyb3VwID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGssIF8pIDo6IF8gYXMgbGlzdCAtPiBrLCBtYXAgbGlzdCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ3JvdXAgYWxpc3QgfmVxdWFsID1cbiAgICBncm91cCBhbGlzdCB+YnJlYWs6KGZ1biAoeCwgXykgKHksIF8pIC0+IG5vdCAoZXF1YWwgeCB5KSkgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmUgPVxuICAgIHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlOihmdW4gKHgsIF8pICh5LCBfKSAtPiBjb21wYXJlIHggeSlcbiAgICB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5mOihmdW4gKGtleScsIF8pIC0+IGVxdWFsIGtleSBrZXknKSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIChzbmQgeClcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuQXNzb2MuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICAgIGxldCBmaW5kX2V4biB0IH5lcXVhbCBrZXkgPVxuICAgICAgbWF0Y2ggZmluZCB0IGtleSB+ZXF1YWwgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlXG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5lcXVhbCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBfIC0+IHRydWVcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgfmVxdWFsIGtleSA9IGZpbHRlciB0IH5mOihmdW4gKGtleScsIF8pIC0+IG5vdCAoZXF1YWwga2V5IGtleScpKSBbQG5vbnRhaWxdXG5cbiAgbGV0IGFkZCB0IH5lcXVhbCBrZXkgdmFsdWUgPVxuICAgICgqIHRoZSByZW1vdmUgZG9lc24ndCBjaGFuZ2UgdGhlIG1hcCBzZW1hbnRpY3MsIGJ1dCBrZWVwcyB0aGUgbGlzdCBzbWFsbCAqKVxuICAgIChrZXksIHZhbHVlKSA6OiByZW1vdmUgdCB+ZXF1YWwga2V5XG4gIDs7XG5cbiAgbGV0IGludmVyc2UgdCA9IG1hcCB0IH5mOihmdW4gKHgsIHkpIC0+IHksIHgpXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mOihmdW4gKGtleSwgdmFsdWUpIC0+IGtleSwgZiB2YWx1ZSkgW0Bub250YWlsXVxuZW5kXG5cbmxldCBzdWIgbCB+cG9zIH5sZW4gPVxuICAoKiBXZSB1c2UgW3BvcyA+IGxlbmd0aCBsIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gbGVuZ3RoIGxdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IGxlbmd0aCBsIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnN1YlwiO1xuICByZXZcbiAgICAoZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGVsIC0+XG4gICAgICAgaWYgaSA+PSBwb3MgJiYgaSA8IHBvcyArIGxlbiB0aGVuIGVsIDo6IGFjYyBlbHNlIGFjYykpXG47O1xuXG5sZXQgc3BsaXRfbiB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdLCB0X29yaWdcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW0sIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWcsIFtdICgqIGluIHRoaXMgY2FzZSwgdF9vcmlnID0gcmV2IGFjY3VtICopXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X25dIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2UgdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZ1xuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbmxldCByZWMgZHJvcCB0IG4gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBfIDo6IHRsIHdoZW4gbiA+IDAgLT4gZHJvcCB0bCAobiAtIDEpXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY2h1bmtzX29mIGwgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8PSAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5jaHVua3Nfb2Y6IEV4cGVjdGVkIGxlbmd0aCA+IDAsIGdvdCAlZFwiIGxlbmd0aCAoKTtcbiAgbGV0IHJlYyBhdXggb2ZfbGVuZ3RoIGFjYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IHN1Ymxpc3QsIGwgPSBzcGxpdF9uIGwgbGVuZ3RoIGluXG4gICAgICBhdXggb2ZfbGVuZ3RoIChzdWJsaXN0IDo6IGFjYykgbFxuICBpblxuICBhdXggbGVuZ3RoIFtdIGxcbjs7XG5cbmxldCBzcGxpdF93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IHQgLT4gcmV2IGFjYywgdFxuICBpblxuICBsb29wIFtdIHhzIFtAbm9udGFpbF1cbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF93aGlsZV0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZV93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IF8gLT4gcmV2IGFjY1xuICBpblxuICBsb29wIFtdIHhzIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWMgZHJvcF93aGlsZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGRyb3Bfd2hpbGUgdGwgfmZcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBkcm9wX2xhc3QgdCA9XG4gIG1hdGNoIHJldiB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiBsc3QgLT4gU29tZSAocmV2IGxzdClcbjs7XG5cbmxldCBkcm9wX2xhc3RfZXhuIHQgPVxuICBtYXRjaCBkcm9wX2xhc3QgdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkxpc3QuZHJvcF9sYXN0X2V4bjogZW1wdHkgbGlzdFwiXG4gIHwgU29tZSBsc3QgLT4gbHN0XG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgbGlzdDEgbGlzdDIgPVxuICBpZiBpc19lbXB0eSBsaXN0MlxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBsMSBsMiBhY2N1bSA9XG4gICAgICBtYXRjaCBsMSB3aXRoXG4gICAgICB8IFtdIC0+IGFjY3VtXG4gICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgbDIgKHJldl9hcHBlbmQgKG1hcCB+ZjooZnVuIHggLT4gaGQsIHgpIGwyKSBhY2N1bSlcbiAgICBpblxuICAgIHJldiAobG9vcCBsaXN0MSBsaXN0MiBbXSkpXG47O1xuXG5sZXQgY29uY2F0IGwgPSBmb2xkX3JpZ2h0IGwgfmluaXQ6W10gfmY6YXBwZW5kXG5sZXQgY29uY2F0X25vX29yZGVyIGwgPSBmb2xkIGwgfmluaXQ6W10gfmY6KGZ1biBhY2MgbCAtPiByZXZfYXBwZW5kIGwgYWNjKVxubGV0IGNvbnMgeCBsID0geCA6OiBsXG5cbmxldCBpc19zb3J0ZWQgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8PSAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGwgW0Bub250YWlsXVxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDwgMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsIFtAbm9udGFpbF1cbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gICgqIHNwZWNpYWwgY2FzZXMgdG8gc3BlZWQgdGhpbmdzIHVwIGluIHRyaXZpYWwgY2FzZXMgKilcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3RcbiAgfCBbIHg7IHkgXSAtPiBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGUgdGhlbiBbIHk7IHggXSBlbHNlIGxpc3RcbiAgfCBfIC0+XG4gICAgbGV0IGFyciA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIEFycmF5X3Blcm11dGUucGVybXV0ZSBhcnIgfnJhbmRvbV9zdGF0ZTtcbiAgICBBcnJheS50b19saXN0IGFyclxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgaWYgaXNfZW1wdHkgbGlzdFxuICB0aGVuIGZhaWx3aXRoIFwiTGlzdC5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGxpc3RcIlxuICBlbHNlIG50aF9leG4gbGlzdCAoUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCBsaXN0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIGxpc3QpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY29tcGFyZSBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgaWYgbiA9IDAgdGhlbiBjb21wYXJlIGNtcCB4cyB5cyBlbHNlIG5cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF9saXN0XG5cbmxldCBlcXVhbF9sb2NhbCAoKGVxdWFsIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB0MSB0MiA9XG4gIGxldCByZWMgbG9vcCB+ZXF1YWwgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgeDEgOjogdDEsIHgyIDo6IHQyIC0+IGVxdWFsIHgxIHgyICYmIGxvb3AgfmVxdWFsIHQxIHQyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgfmVxdWFsIHQxIHQyXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIGYgeCB5IC0+IGVxdWFsX2xvY2FsIGYgeCB5XG47O1xuXG5sZXQgdHJhbnNwb3NlID1cbiAgbGV0IHJlYyBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHQgY29sdW1uX2FjYyB0cmltbWVkIGZvdW5kX2VtcHR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGNvbHVtbl9hY2MsIHRyaW1tZWQsIGZvdW5kX2VtcHR5XG4gICAgfCBbXSA6OiB0bCAtPiBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsIGNvbHVtbl9hY2MgdHJpbW1lZCB0cnVlXG4gICAgfCAoeCA6OiB4cykgOjogdGwgLT5cbiAgICAgIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgKHggOjogY29sdW1uX2FjYykgKHhzIDo6IHRyaW1tZWQpIGZvdW5kX2VtcHR5XG4gIGluXG4gIGxldCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgPSBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgW10gW10gZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wIHJvd3MgY29sdW1ucyBkb19yZXYgPVxuICAgIG1hdGNoIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyB3aXRoXG4gICAgfCBbXSwgW10sIF8gLT4gU29tZSAocmV2IGNvbHVtbnMpXG4gICAgfCBjb2x1bW4sIHRyaW1tZWRfcm93cywgZm91bmRfZW1wdHkgLT5cbiAgICAgIGlmIGZvdW5kX2VtcHR5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29sdW1uID0gaWYgZG9fcmV2IHRoZW4gcmV2IGNvbHVtbiBlbHNlIGNvbHVtbiBpblxuICAgICAgICBsb29wIHRyaW1tZWRfcm93cyAoY29sdW1uIDo6IGNvbHVtbnMpIChub3QgZG9fcmV2KSlcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdIHRydWVcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIG9mIGludCBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXVxuICAgIChmdW5jdGlvblxuICAgICAgfCBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIGFyZzBfXzA0MV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzA0Ml8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9pbnQgYXJnMF9fMDQxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpc3QubWwuVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc1wiXG4gICAgICAgICAgOyByZXMwX18wNDJfXG4gICAgICAgICAgXVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0cmFuc3Bvc2VfZXhuIGwgPVxuICBtYXRjaCB0cmFuc3Bvc2UgbCB3aXRoXG4gIHwgU29tZSBsIC0+IGxcbiAgfCBOb25lIC0+IHJhaXNlIChUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIChtYXAgbCB+ZjpsZW5ndGgpKVxuOztcblxubGV0IGludGVyc3BlcnNlIHQgfnNlcCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiB4IDo6IGZvbGRfcmlnaHQgeHMgfmluaXQ6W10gfmY6KGZ1biB5IGFjYyAtPiBzZXAgOjogeSA6OiBhY2MpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcblxubGV0IGlzX3N1ZmZpeCBsaXN0IH5zdWZmaXggfmVxdWFsOigoZXF1YWxfZWx0IDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsaXN0X2xlbiA9IGxlbmd0aCBsaXN0IGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsaXN0X2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGVxdWFsX2xvY2FsIGVxdWFsX2VsdCAoZHJvcCBsaXN0IChsaXN0X2xlbiAtIHN1ZmZpeF9sZW4pKSBzdWZmaXhcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBhcyBtYW55IHBsYWNlcyBhcyBwb3NzaWJsZS4gUGxlYXNlIGF2b2lkXG4gICBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9faW50ZlxubW9kdWxlIENoYXIgPSBDaGFyMFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBFeG4gb2YgZXhuXG4gICAgfCBTZXhwIG9mIFNleHAudFxuICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24wLnQgb3B0aW9uXG4gICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHJlYyBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IGFyZzBfXzAwMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwMl8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvdWxkX25vdF9jb25zdHJ1Y3RcIjsgcmVzMF9fMDAyXyBdXG4gICAgICB8IFN0cmluZyBhcmcwX18wMDNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDRfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTdHJpbmdcIjsgcmVzMF9fMDA0XyBdXG4gICAgICB8IEV4biBhcmcwX18wMDVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDZfID0gc2V4cF9vZl9leG4gYXJnMF9fMDA1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeG5cIjsgcmVzMF9fMDA2XyBdXG4gICAgICB8IFNleHAgYXJnMF9fMDA3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA4XyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMDhfIF1cbiAgICAgIHwgVGFnX3NleHAgKGFyZzBfXzAwOV8sIGFyZzFfXzAxMF8sIGFyZzJfXzAxMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA5X1xuICAgICAgICBhbmQgcmVzMV9fMDEzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAxMF9cbiAgICAgICAgYW5kIHJlczJfXzAxNF8gPSBzZXhwX29mX29wdGlvbiBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGFyZzJfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfc2V4cFwiOyByZXMwX18wMTJfOyByZXMxX18wMTNfOyByZXMyX18wMTRfIF1cbiAgICAgIHwgVGFnX3QgKGFyZzBfXzAxNV8sIGFyZzFfXzAxNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE1X1xuICAgICAgICBhbmQgcmVzMV9fMDE4XyA9IHNleHBfb2ZfdCBhcmcxX18wMTZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ190XCI7IHJlczBfXzAxN187IHJlczFfXzAxOF8gXVxuICAgICAgfCBUYWdfYXJnIChhcmcwX18wMTlfLCBhcmcxX18wMjBfLCBhcmcyX18wMjFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxOV9cbiAgICAgICAgYW5kIHJlczFfXzAyM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMjBfXG4gICAgICAgIGFuZCByZXMyX18wMjRfID0gc2V4cF9vZl90IGFyZzJfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfYXJnXCI7IHJlczBfXzAyMl87IHJlczFfXzAyM187IHJlczJfXzAyNF8gXVxuICAgICAgfCBPZl9saXN0IChhcmcwX18wMjVfLCBhcmcxX18wMjZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfaW50IGFyZzBfXzAyNV9cbiAgICAgICAgYW5kIHJlczFfXzAyOF8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90IGFyZzFfXzAyNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2ZfbGlzdFwiOyByZXMwX18wMjdfOyByZXMxX18wMjhfIF1cbiAgICAgIHwgV2l0aF9iYWNrdHJhY2UgKGFyZzBfXzAyOV8sIGFyZzFfXzAzMF8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMzFfID0gc2V4cF9vZl90IGFyZzBfXzAyOV9cbiAgICAgICAgYW5kIHJlczFfXzAzMl8gPSBzZXhwX29mX3N0cmluZyBhcmcxX18wMzBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIldpdGhfYmFja3RyYWNlXCI7IHJlczBfXzAzMV87IHJlczFfXzAzMl8gXVxuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHJlYyB0b19zdHJpbmdzX2h1bSB0IGFjID1cbiAgICAoKiBXZSB1c2UgW1NleHAudG9fc3RyaW5nX21hY2hdLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGltcGxlbWVudGluZ1xuICAgICAgIFt0b19zdHJpbmdzX2h1bV0sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgaW5mbyB0byBmaXQgb24gYSBzaW5nbGUgbGluZSwgYW5kIG9uY2Ugd2UndmVcbiAgICAgICBoYWQgdG8gcmVzb3J0IHRvIHNleHBzLCB0aGUgbWVzc2FnZSBpcyBnb2luZyB0byBzdGFydCBub3QgbG9va2luZyBzbyBwcmV0dHlcbiAgICAgICBhbnl3YXkuICopXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IHNleHAgLT5cbiAgICAgIFwiY291bGQgbm90IGNvbnN0cnVjdCBpbmZvOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IFNleHAudG9fc3RyaW5nX21hY2ggKEV4bi5zZXhwX29mX3QgZXhuKSA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgXykgLT4gdGFnIDo6IFwiOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IHRhZyA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWMgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIGJvZHkgZWxzZSB0YWcgOjogXCI6IFwiIDo6IGJvZHlcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICB0b19zdHJpbmdzX2h1bSB0IChcIlxcbkJhY2t0cmFjZTpcXG5cIiA6OiBiYWNrdHJhY2UgOjogYWMpXG4gICAgfCBPZl9saXN0ICh0cnVuY19hZnRlciwgdHMpIC0+XG4gICAgICBsZXQgdHMgPVxuICAgICAgICBtYXRjaCB0cnVuY19hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0c1xuICAgICAgICB8IFNvbWUgbWF4IC0+XG4gICAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCB0cyBpblxuICAgICAgICAgIGlmIG4gPD0gbWF4XG4gICAgICAgICAgdGhlbiB0c1xuICAgICAgICAgIGVsc2UgTGlzdC50YWtlIHRzIG1heCBAIFsgU3RyaW5nIChQcmludGYuc3ByaW50ZiBcImFuZCAlZCBtb3JlIGluZm9cIiAobiAtIG1heCkpIF1cbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT5cbiAgICAgICAgdG9fc3RyaW5nc19odW0gdCAoaWYgTGlzdC5pc19lbXB0eSBhYyB0aGVuIGFjIGVsc2UgXCI7IFwiIDo6IGFjKSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBTdHJpbmcuY29uY2F0ICh0b19zdHJpbmdzX2h1bSB0IFtdKVxuXG4gICgqIExpa2UgW1N0cmluZy5zcGxpdF9saW5lc10sIGJ1dCBsZXNzIG9wdGltaXplZCBhbmQgZG9lc24ndCBoYW5kbGUgW1xcclxcbl0uIEF2b2lkcyBhXG4gICAgIGRlcGVuZGVuY3kgY3ljbGUuIEltcHJvdmVzIG9uIG5haXZlIFtTdHJpbmcuc3BsaXRfb25fY2hhcl0gYnkgcmVtb3ZpbmcgZW1wdHkgZmluYWxcbiAgICAgbGluZS4gKilcbiAgbGV0IHNwbGl0X2xpbmVzIHN0cmluZyA9XG4gICAgbGV0IHN0cmluZyA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAnXFxuJyAoU3RyaW5nLmdldCBzdHJpbmcgKGxlbiAtIDEpKVxuICAgICAgdGhlbiBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICAgIGVsc2Ugc3RyaW5nXG4gICAgaW5cbiAgICBTdHJpbmcuc3BsaXRfb25fY2hhciBzdHJpbmcgfnNlcDonXFxuJ1xuICA7O1xuXG4gIGxldCByZWMgdG9fc2V4cHNfaHVtIHQgYWMgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBfIGFzIHQgLT4gc2V4cF9vZl90IHQgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gQXRvbSBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gRXhuLnNleHBfb2ZfdCBleG4gOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBoZXJlKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoQXRvbSB0YWdcbiAgICAgICAgIDo6IHNleHBcbiAgICAgICAgIDo6XG4gICAgICAgICAobWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGhlcmUgLT4gWyBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmUgXSkpXG4gICAgICA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gTGlzdCAoQXRvbSB0YWcgOjogdG9fc2V4cHNfaHVtIHQgW10pIDo6IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IHNleHAgOjogdG9fc2V4cHNfaHVtIHQgW10gaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIExpc3QgYm9keSA6OiBhYyBlbHNlIExpc3QgKEF0b20gdGFnIDo6IGJvZHkpIDo6IGFjXG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgU2V4cC5MaXN0IFsgdG9fc2V4cF9odW0gdDsgc2V4cF9vZl9saXN0IHNleHBfb2Zfc3RyaW5nIChzcGxpdF9saW5lcyBiYWNrdHJhY2UpIF1cbiAgICAgIDo6IGFjXG4gICAgfCBPZl9saXN0IChfLCB0cykgLT5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPiB0b19zZXhwc19odW0gdCBhYylcblxuICBhbmQgdG9fc2V4cF9odW0gdCA9XG4gICAgbWF0Y2ggdG9fc2V4cHNfaHVtIHQgW10gd2l0aFxuICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgIHwgc2V4cHMgLT4gU2V4cC5MaXN0IHNleHBzXG4gIDs7XG5cbiAgKCogV2UgdXNlIFtwcm90ZWN0XSB0byBndWFyZCBhZ2FpbnN0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHVzZXItc3VwcGxpZWQgZnVuY3Rpb25zLCBzb1xuICAgICB0aGF0IGZhaWx1cmUgdG8gcHJvZHVjZSBvbmUgcGFydCBvZiBhbiBpbmZvIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgcGFydHMuICopXG4gIGxldCBwcm90ZWN0IGYgPVxuICAgIHRyeSBmICgpIHdpdGhcbiAgICB8IGV4biAtPiBDb3VsZF9ub3RfY29uc3RydWN0IChFeG4uc2V4cF9vZl90IGV4bilcbiAgOztcblxuICBsZXQgb2ZfaW5mbyBpbmZvID0gcHJvdGVjdCAoZnVuICgpIC0+IExhenkuZm9yY2UgaW5mbylcbiAgbGV0IHRvX2luZm8gdCA9IGxhenkgdFxuZW5kXG5cbm9wZW4gTWVzc2FnZVxuXG50eXBlIHQgPSBNZXNzYWdlLnQgTGF6eS50XG5cbmxldCBpbnZhcmlhbnQgXyA9ICgpXG5sZXQgdG9fbWVzc2FnZSA9IE1lc3NhZ2Uub2ZfaW5mb1xubGV0IG9mX21lc3NhZ2UgPSBNZXNzYWdlLnRvX2luZm9cblxuKCogSXQgaXMgT0sgdG8gdXNlIFtNZXNzYWdlLnRvX3NleHBfaHVtXSwgd2hpY2ggaXMgbm90IHN0YWJsZSwgYmVjYXVzZSBbdF9vZl9zZXhwXSBiZWxvd1xuICAgY2FuIGhhbmRsZSBhbnkgc2V4cC4gKilcbmxldCBzZXhwX29mX3QgdCA9IE1lc3NhZ2UudG9fc2V4cF9odW0gKHRvX21lc3NhZ2UgdClcbmxldCB0X29mX3NleHAgc2V4cCA9IGxhenkgKE1lc3NhZ2UuU2V4cCBzZXhwKVxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gQW55IFwiSW5mby50XCIgfVxubGV0IGNvbXBhcmUgdDEgdDIgPSBTZXhwLmNvbXBhcmUgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBlcXVhbCB0MSB0MiA9IFNleHAuZXF1YWwgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gU2V4cC5oYXNoX2ZvbGRfdCBzdGF0ZSAoc2V4cF9vZl90IHQpXG5sZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuXG5sZXQgdG9fc3RyaW5nX2h1bSB0ID1cbiAgbWF0Y2ggdG9fbWVzc2FnZSB0IHdpdGhcbiAgfCBTdHJpbmcgcyAtPiBzXG4gIHwgbWVzc2FnZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gKE1lc3NhZ2UudG9fc2V4cF9odW0gbWVzc2FnZSlcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IE1lc3NhZ2UudG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkICh0b19tZXNzYWdlIHQpXG5sZXQgdG9fc3RyaW5nX21hY2ggdCA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfdCB0KVxubGV0IG9mX2xhenkgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfc2V4cCBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFNleHAgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfdCBsYXp5X3QgPSBMYXp5LmpvaW4gbGF6eV90XG5sZXQgb2Zfc3RyaW5nIG1lc3NhZ2UgPSBMYXp5LmZyb21fdmFsIChTdHJpbmcgbWVzc2FnZSlcbmxldCBjcmVhdGVmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBvZl9zdHJpbmcgZm9ybWF0XG5sZXQgb2ZfdGh1bmsgZiA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKGYgKCkpKSlcblxubGV0IGNyZWF0ZSA/aGVyZSA/c3RyaWN0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIG1hdGNoIHN0cmljdCB3aXRoXG4gIHwgTm9uZSAtPiBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKSlcbiAgfCBTb21lICgpIC0+IG9mX21lc3NhZ2UgKFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoU2V4cCBzZXhwKVxubGV0IHRhZyB0IH50YWcgPSBsYXp5IChUYWdfdCAodGFnLCB0b19tZXNzYWdlIHQpKVxuXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAoXCJcIiwgTGF6eS5mb3JjZSB0YWcsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IHRhZ19zIHQgfnRhZyA9IHRhZ19zX2xhenkgdCB+dGFnOihMYXp5LmZyb21fdmFsIHRhZylcblxubGV0IHRhZ19hcmcgdCB0YWcgeCBzZXhwX29mX3ggPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAodGFnLCBzZXhwX29mX3ggeCwgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgb2ZfbGlzdCA/dHJ1bmNfYWZ0ZXIgdHMgPSBsYXp5IChPZl9saXN0ICh0cnVuY19hZnRlciwgTGlzdC5tYXAgdHMgfmY6dG9fbWVzc2FnZSkpXG5cbmV4Y2VwdGlvbiBFeG4gb2YgdFxuXG5sZXQgKCkgPVxuICAoKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlXG4gICAgIFtleGNlcHRpb24gRXhuIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdIC4uLiBbQEBAZW5kXV0gdG8gZWxpbWluYXRlIHRoZSBleHRyYVxuICAgICB3cmFwcGluZyBvZiBcIihFeG4gLi4uKVwiLiAqKVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhuXSAoZnVuY3Rpb25cbiAgICB8IEV4biB0IC0+IHNleHBfb2ZfdCB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB0b19leG4gdCA9XG4gIGlmIG5vdCAoTGF6eS5pc192YWwgdClcbiAgdGhlbiBFeG4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBMYXp5LmZvcmNlIHQgd2l0aFxuICAgIHwgTWVzc2FnZS5FeG4gZXhuIC0+IGV4blxuICAgIHwgXyAtPiBFeG4gdClcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPVxuICBsZXQgYmFja3RyYWNlID1cbiAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGBHZXQgLT5cbiAgICAgIFNvbWUgKFN0ZGxpYi5QcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICAgIHwgU29tZSAoYFRoaXMgcykgLT4gU29tZSBzXG4gIGluXG4gIG1hdGNoIGV4biwgYmFja3RyYWNlIHdpdGhcbiAgfCBFeG4gdCwgTm9uZSAtPiB0XG4gIHwgRXhuIHQsIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlICh0b19tZXNzYWdlIHQsIGJhY2t0cmFjZSkpXG4gIHwgXywgTm9uZSAtPiBMYXp5LmZyb21fdmFsIChNZXNzYWdlLkV4biBleG4pXG4gIHwgXywgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKFNleHAgKEV4bi5zZXhwX29mX3QgZXhuKSwgYmFja3RyYWNlKSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW5mb1wiXG4gICAgbGV0IHBwIHBwZiB0ID0gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmdfaHVtIHQpXG4gIGVuZClcblxubW9kdWxlIEludGVybmFsX3JlcHIgPSBNZXNzYWdlXG5cbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0Vycm9yXSBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIHZhcmlvdXMgcGxhY2VzLiAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXdcbiAgIGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9cblxubGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIkVycm9yLnRcIiB9XG5sZXQgcmFpc2UgdCA9IHJhaXNlICh0b19leG4gdClcbmxldCByYWlzZV9zIHNleHAgPSByYWlzZSAoY3JlYXRlX3Mgc2V4cClcbmxldCB0b19pbmZvIHQgPSB0XG5sZXQgb2ZfaW5mbyB0ID0gdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkVycm9yXCJcbiAgICBsZXQgcHAgPSBwcFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW52YXJpYW50X2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbmxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmIDogdW5pdCA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcIlwiLCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmVcbiAgICAgICAgIDsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuXG4gICAgICAgICA7IFwiXCIsIHNleHBfb2ZfdCB0XG4gICAgICAgICBdKVxuOztcblxubGV0IGNoZWNrX2ZpZWxkIHQgZiBmaWVsZCA9XG4gIHRyeSBmIChGaWVsZC5nZXQgZmllbGQgdCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwicHJvYmxlbSB3aXRoIGZpZWxkXCJcbiAgICAgICAgIFsgXCJmaWVsZFwiLCBzZXhwX29mX3N0cmluZyAoRmllbGQubmFtZSBmaWVsZCk7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPiBSZXN1bHQuY29tcGFyZSBfY21wX19hIEVycm9yLmNvbXBhcmUgYV9fMDAxXyBiX18wMDJfXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+IFJlc3VsdC5lcXVhbCBfY21wX19hIEVycm9yLmVxdWFsIGFfXzAwN18gYl9fMDA4X1xuOztcblxubGV0IGhhc2hfZm9sZF90IDpcbiAgJ2EuXG4gIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgLT4gJ2EgdFxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIGhzdiBhcmcgLT4gUmVzdWx0Lmhhc2hfZm9sZF90IF9oYXNoX2ZvbGRfYSBFcnJvci5oYXNoX2ZvbGRfdCBoc3YgYXJnXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMTNfIHhfXzAxNV8gLT4gUmVzdWx0LnRfb2Zfc2V4cCBfb2ZfYV9fMDEzXyBFcnJvci50X29mX3NleHAgeF9fMDE1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE2XyB4X18wMTdfIC0+IFJlc3VsdC5zZXhwX29mX3QgX29mX2FfXzAxNl8gRXJyb3Iuc2V4cF9vZl90IHhfXzAxN19cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVzdWx0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIgRXJyb3IudF9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCAoID4+PSApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fCApID0gUmVzdWx0LiggPj58IClcbmxldCBiaW5kID0gUmVzdWx0LmJpbmRcbmxldCBpZ25vcmVfbSA9IFJlc3VsdC5pZ25vcmVfbVxubGV0IGpvaW4gPSBSZXN1bHQuam9pblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCByZXR1cm4gPSBSZXN1bHQucmV0dXJuXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IFJlc3VsdC5Nb25hZF9pbmZpeFxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5pbnZhcmlhbnQgZXJyb3Jcbjs7XG5cbmxldCBtYXAyIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE9rIHgsIE9rIHkgLT4gT2sgKGYgeCB5KVxuICB8IE9rIF8sIChFcnJvciBfIGFzIGUpIHwgKEVycm9yIF8gYXMgZSksIE9rIF8gLT4gZVxuICB8IEVycm9yIGUxLCBFcnJvciBlMiAtPiBFcnJvciAoRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgbWFwMiA9IG1hcDJcbiAgZW5kKVxuXG5sZXQgKCAqPiApID0gRm9yX2FwcGxpY2F0aXZlLiggKj4gKVxubGV0ICggPCogKSA9IEZvcl9hcHBsaWNhdGl2ZS4oIDwqIClcbmxldCAoIDwqPiApID0gRm9yX2FwcGxpY2F0aXZlLiggPCo+IClcbmxldCBhcHBseSA9IEZvcl9hcHBsaWNhdGl2ZS5hcHBseVxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBvayA9IFJlc3VsdC5va1xubGV0IGlzX29rID0gUmVzdWx0LmlzX29rXG5sZXQgaXNfZXJyb3IgPSBSZXN1bHQuaXNfZXJyb3JcblxubGV0IHRyeV93aXRoID8oYmFja3RyYWNlID0gZmFsc2UpIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4gP2JhY2t0cmFjZTooaWYgYmFja3RyYWNlIHRoZW4gU29tZSBgR2V0IGVsc2UgTm9uZSkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/YmFja3RyYWNlIGYgPSBqb2luICh0cnlfd2l0aCA/YmFja3RyYWNlIGYpXG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGVyciAtPiBFcnJvci5yYWlzZSBlcnJcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBFcnJvciAoRXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxuXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlID0gZnVuY3Rpb25cbiAgfCBPayBfIGFzIHogLT4gelxuICB8IEVycm9yIGV4biAtPiBvZl9leG4gP2JhY2t0cmFjZSBleG5cbjs7XG5cbmxldCBlcnJvciA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBFcnJvciAoRXJyb3IuY3JlYXRlID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBlcnJvcl9zIHNleHAgPSBFcnJvciAoRXJyb3IuY3JlYXRlX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbWVzc2FnZSA9IEVycm9yIChFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSlcbmxldCBlcnJvcmYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihmdW4gZSAtPiBFcnJvci50YWdfYXJnIGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIHMgPSBlcnJvciBcInVuaW1wbGVtZW50ZWRcIiBzIHNleHBfb2Zfc3RyaW5nXG5cblxubGV0IGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2sgfm9uX2Vycm9yID1cbiAgbWF0Y2ggUmVzdWx0LmNvbWJpbmVfZXJyb3JzIGxpc3Qgd2l0aFxuICB8IE9rIHggLT4gT2sgKG9uX29rIHgpXG4gIHwgRXJyb3IgZXJycyAtPiBFcnJvciAob25fZXJyb3IgZXJycylcbjs7XG5cbmxldCBpZ25vcmVfdW5pdF9saXN0IChfIDogdW5pdCBsaXN0KSA9ICgpXG5cbmxldCBlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSA9IGZ1bmN0aW9uXG4gIHwgWyBlIF0gLT4gZVxuICB8IGxpc3QgLT4gRXJyb3Iub2ZfbGlzdCBsaXN0XG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOkZuLmlkIH5vbl9lcnJvcjplcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6aWdub3JlX3VuaXRfbGlzdCB+b25fZXJyb3I6ZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3Nhcnlcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazpGbi5pZCB+b25fZXJyb3I6RXJyb3Iub2ZfbGlzdFxuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsaXN0ID1cbiAgY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazppZ25vcmVfdW5pdF9saXN0IH5vbl9lcnJvcjpFcnJvci5vZl9saXN0XG47O1xuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdC5wYXJ0aXRpb25fbWFwIGwgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICBtYXRjaCBvayB3aXRoXG4gIHwgW10gLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJycylcbiAgfCBfIC0+IE9rIG9rXG47O1xuXG5sZXQgZmluZF9vayBsID1cbiAgbWF0Y2ggTGlzdC5maW5kX21hcCBsIH5mOlJlc3VsdC5vayB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgT2sgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgICAgICB8IE9rIF8gYXMgeCAtPiByZXR1cm4geFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwID0gUmVzdWx0Lm1hcFxubGV0IGl0ZXIgPSBSZXN1bHQuaXRlclxubGV0IGl0ZXJfZXJyb3IgPSBSZXN1bHQuaXRlcl9lcnJvclxuIiwiKCogVGhpcyBpcyBicm9rZW4gb2ZmIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBTaWduIGFuZCBDb21wYXJhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOZWdcbiAgfCBaZXJvXG4gIHwgUG9zXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbjAubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgc2V4cF9fMDAyXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3MgXSA6IHQgbGlzdClcblxuW0BAQGVuZF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xXG4gIHwgWmVybyAtPiAwXG4gIHwgUG9zIC0+IDFcbjs7XG5cbmxldCBfID0gaGFzaFxuXG4oKiBJZ25vcmUgdGhlIGhhc2ggZnVuY3Rpb24gcHJvZHVjZWQgYnkgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2hdICopXG5sZXQgaGFzaCA9IHRvX2ludFxubGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25cIlxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBOZWcgZWxzZSBpZiBuID0gMCB0aGVuIFplcm8gZWxzZSBQb3NcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gVFxuXG4gIGxldCBpc19wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPiAwXG4gIGxldCBpc19ub25fbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID49IDBcbiAgbGV0IGlzX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8IDBcbiAgbGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPD0gMFxuICBsZXQgc2lnbiB0ID0gU2lnbjAub2ZfaW50IChjb21wYXJlIHQgemVybylcbmVuZFxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIFBvbHlcbiAgZW5kXG5cbiAgaW5jbHVkZSBQb2x5XG5cbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlKVxuICBlbmRcblxuICBpbmNsdWRlIENcbmVuZFxuXG5sZXQgZ3QgY21wIGEgYiA9IGNtcCBhIGIgPiAwXG5sZXQgbHQgY21wIGEgYiA9IGNtcCBhIGIgPCAwXG5sZXQgZ2VxIGNtcCBhIGIgPSBjbXAgYSBiID49IDBcbmxldCBsZXEgY21wIGEgYiA9IGNtcCBhIGIgPD0gMFxubGV0IGVxdWFsIGNtcCBhIGIgPSBjbXAgYSBiID0gMFxubGV0IG5vdF9lcXVhbCBjbXAgYSBiID0gY21wIGEgYiA8PiAwXG5sZXQgbWluIGNtcCB0IHQnID0gaWYgbGVxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5sZXQgbWF4IGNtcCB0IHQnID0gaWYgZ2VxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5cbm1vZHVsZSBJbmZpeCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogSW5maXggd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGxldCAoID4gKSBhIGIgPSBndCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDwgKSBhIGIgPSBsdCBULmNvbXBhcmUgYSBiXG4gIGxldCAoID49ICkgYSBiID0gZ2VxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD0gKSBhIGIgPSBsZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA9ICkgYSBiID0gZXF1YWwgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PiApIGEgYiA9IG5vdF9lcXVhbCBULmNvbXBhcmUgYSBiXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBDb21wYXJpc29ucyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXggKFQpXG5cbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0IG1pbiB0IHQnID0gbWluIGNvbXBhcmUgdCB0J1xuICBsZXQgbWF4IHQgdCcgPSBtYXggY29tcGFyZSB0IHQnXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJhdG9yLmNvbXBhcmVcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBDb21wYXJpc29ucyAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB0IHQnID0gY29tcGFyZSB0JyB0XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciBbQGlubGluZWQgaGludF0gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgICAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgICAgIFtAQEBlbmRdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuKCogY29tcGFyZSBbeF0gYW5kIFt5XSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBmdW5jdGlvbnMgaW4gdGhlIGxpc3QgW2NtcHNdICopXG5sZXQgbGV4aWNvZ3JhcGhpYyBjbXBzIHggeSA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBjbXAgOjogY21wcyAtPlxuICAgICAgbGV0IHJlcyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIHJlcyA9IDAgdGhlbiBsb29wIGNtcHMgZWxzZSByZXNcbiAgICB8IFtdIC0+IDBcbiAgaW5cbiAgbG9vcCBjbXBzXG47O1xuXG5sZXQgbGlmdCBjbXAgfmYgeCB5ID0gY21wIChmIHgpIChmIHkpXG5sZXQgcmV2ZXJzZSBjbXAgeCB5ID0gY21wIHkgeFxuXG50eXBlICdhIHJldmVyc2VkID0gJ2FcblxubGV0IGNvbXBhcmVfcmV2ZXJzZWQgY21wIHggeSA9IGNtcCB5IHhcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2hhYmxlLktleSAqKVxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIFZhbHVlcyByZXR1cm5lZCBieSBbaGFzaF0gbXVzdCBiZSBub24tbmVnYXRpdmUuICBBbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaW4gdGhlXG4gICAgICBjYXNlIHRoYXQgW2hhc2hdIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gKilcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gICgqKiBUaGlzIGZ1bmN0aW9uIGlzIHNvdW5kIGJ1dCBub3QgY29tcGxldGUsIG1lYW5pbmcgdGhhdCBpZiBpdCByZXR1cm5zIFt0cnVlXSB0aGVuIGl0J3NcbiAgICAgIHNhZmUgdG8gdXNlIHRoZSB0d28gaW50ZXJjaGFuZ2VhYmx5LiAgSWYgaXQncyBbZmFsc2VdLCB5b3UgaGF2ZSBubyBndWFyYW50ZWVzLiAgRm9yXG4gICAgICBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICA+IHV0b3BcbiAgICAgICAgb3BlbiBDb3JlOztcbiAgICAgICAgbGV0IGVxdWFsIChhIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpIGIgPVxuICAgICAgICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgICAgICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgICAgICAgOztcbiAgICAgICAgbGV0IGEgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBsZXQgYiA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGVxdWFsIGEgYjs7ICAoKiBmYWxzZT8hICopXG4gICAgICBdfVxuICAqKVxuICBsZXQgZXF1YWwgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGhhc2hfcGFyYW0gPSBTdGRsaWIuSGFzaHRibC5oYXNoX3BhcmFtXG4gIGxldCBoYXNoID0gU3RkbGliLkhhc2h0YmwuaGFzaFxuICBsZXQgcG9seSA9IHsgaGFzaDsgY29tcGFyZSA9IFBvbHkuY29tcGFyZTsgc2V4cF9vZl90ID0gKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgfVxuXG4gIGxldCBvZl9rZXkgKHR5cGUgYSkgKG1vZHVsZSBLZXkgOiBLZXkgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgeyBoYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gIDs7XG5cbiAgbGV0IHRvX2tleSAodHlwZSBhKSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZCA6IEtleVxuICAgICAgd2l0aCB0eXBlIHQgPSBhKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgSGFzaGFibGVcblxubW9kdWxlIHR5cGUgSGFzaGFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSGFzaGFibGUudCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHBvbHkgOiAnYSB0XG4gIHZhbCBvZl9rZXkgOiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKSAtPiAnYSB0XG4gIHZhbCB0b19rZXkgOiAnYSB0IC0+IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpXG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUIDogQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBBcmdfd2l0aF9jb21wYXJhdG9yKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBhbGwgPSAoWyAoKSBdIDogdCBsaXN0KVxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV91bml0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3VuaXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3VuaXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHVuaXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdW5pdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB1bml0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGNvbXBhcmUgXyBfID0gMFxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCIoKVwiIC0+ICgpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQmFzZS5Vbml0Lm9mX3N0cmluZzogKCkgZXhwZWN0ZWRcIlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVuaXRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxubGV0IGludmFyaWFudCAoKSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBcblxubGV0IGdldF9wb3NfbGVuID9wb3MgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgdHJ5IFJlc3VsdC5PayAoZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgYSBzZWFyY2ggZm9yIHRoZSBmaXJzdCAocmVzcC4gbGFzdCkgZWxlbWVudFxuICAgc2F0aXNmeWluZyBhIHByZWRpY2F0ZSwgYXNzdW1pbmcgdGhhdCB0aGUgcHJlZGljYXRlIGlzIGluY3JlYXNpbmcgb25cbiAgIHRoZSBjb250YWluZXIsIG1lYW5pbmcgdGhhdCwgaWYgdGhlIGNvbnRhaW5lciBpcyBbdTEuLi51bl0sIHRoZXJlIGV4aXN0cyBhXG4gICBrIHN1Y2ggdGhhdCBwKHUxKT0uLi4uPXAodWspID0gZmFsc2UgYW5kIHAodWsrMSk9Li4uLj1wKHVuKT0gdHJ1ZS5cbiAgIElmIHRoaXMgayA9IDEgKHJlc3AgbiksIGZpbmRfbGFzdF9ub3Rfc2F0aXNmeWluZyAocmVzcCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcpXG4gICB3aWxsIHJldHVybiBOb25lLiAqKVxuXG5sZXQgcmVjIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gIGlmIGxvID4gaGlcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgcHJlZCAoZ2V0IHQgbG8pXG4gIHRoZW4gU29tZSBsb1xuICBlbHNlIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihsbyArIDEpIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYSBjb250YWluZXIgW3RdLCBhIHByZWRpY2F0ZSBbcHJlZF0gYW5kIHR3byBpbmRpY2VzIFtsbyA8IGhpXSwgc3VjaCB0aGF0XG4gICBbcHJlZF0gaXMgaW5jcmVhc2luZyBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLlxuXG4gICByZXR1cm4gYSByYW5nZSAobG8sIGhpKSB3aGVyZTpcbiAgIC0gbG8gYW5kIGhpIGFyZSBjbG9zZSBlbm91Z2ggdG9nZXRoZXIgZm9yIGEgbGluZWFyIHNlYXJjaFxuICAgLSBJZiBbcHJlZF0gaXMgbm90IGNvbnN0YW50bHkgW2ZhbHNlXSBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICBvbiB3aGljaCBbcHJlZF0gaXMgW3RydWVdIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXS4gKilcbigqIEludmFyaWFudDogdGhlIGZpcnN0IGVsZW1lbnQgc2F0aXNmeWluZyBbcHJlZF0sIGlmIGl0IGV4aXN0cyBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0gKilcbmxldCByZWMgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICAoKiBXYXJuaW5nOiB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IHRlcm1pbmF0ZSBpZiB0aGUgY29uc3RhbnQgKGN1cnJlbnRseSA4KSBpc1xuICAgICBzZXQgPD0gMSAqKVxuICBpZiBoaSAtIGxvIDw9IDhcbiAgdGhlbiBsbywgaGlcbiAgZWxzZSAoXG4gICAgbGV0IG1pZCA9IGxvICsgKChoaSAtIGxvKSAvIDIpIGluXG4gICAgaWYgcHJlZCAoZ2V0IHQgbWlkKVxuICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCBpcyBiZXR3ZWVuIFtsb10gYW5kIFttaWRdICopXG4gICAgdGhlblxuICAgICAgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGk6bWlkIH5wcmVkXG4gICAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQsIGlmIGl0IGV4aXN0cyxcbiAgICAgICAgIGlzIGJldHdlZW4gW21pZCsxXSBhbmQgW2hpXSAqKVxuICAgIGVsc2UgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobWlkICsgMSkgfmhpIH5wcmVkKVxuOztcblxubGV0IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxvID0gcG9zIGluXG4gIGxldCBoaSA9IHBvcyArIGxlbiAtIDEgaW5cbiAgbGV0IGxvLCBoaSA9IGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkIGluXG4gIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYW4gYXJyYXkgd2l0aCBzaGFwZSBbdHJ1ZSwuLi50cnVlLGZhbHNlLC4uLmZhbHNlXSAoaS5lLiwgdGhlIF9yZXZlcnNlXyBvZiB3aGF0XG4gICBpcyBkZXNjcmliZWQgYWJvdmUpIGFuZCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cnVlIG9yIE5vbmUgaWYgdGhlcmUgYXJlIG5vXG4gICB0cnVlKilcbmxldCBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+cHJlZCB+Z2V0IH5sZW5ndGggPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgKCogVGhlIGxhc3Qgc2F0aXNmeWluZyBpcyB0aGUgb25lIGp1c3QgYmVmb3JlIHRoZSBmaXJzdCBub3Qgc2F0aXNmeWluZyAqKVxuICAgIG1hdGNoXG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgfnBvcyB+bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBub3QgKHByZWQgeCkpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICgqIFRoaXMgbWVhbnMgdGhhdCBhbGwgZWxlbWVudHMgc2F0aXNmeSBwcmVkLlxuICAgICAgIFRoZXJlIGlzIGF0IGxlYXN0IGFuIGVsZW1lbnQgYXMgKGxlbiA+IDApICopXG4gICAgfCBTb21lIGkgd2hlbiBpID0gcG9zIC0+IE5vbmUgKCogbm8gZWxlbWVudCBzYXRpc2ZpZXMgcHJlZCAqKVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKGkgLSAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoXG4gICAgICA/cG9zXG4gICAgICA/bGVuXG4gICAgICB0XG4gICAgICB+bGVuZ3RoOigobGVuZ3RoIDogXyAtPiBfKSBbQGxvY2FsXSlcbiAgICAgIH5nZXQ6KChnZXQgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICBob3dcbiAgICAgIHZcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApIFtAbm9udGFpbFxuICAgIF1cbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnNlZ21lbnRfb2YgaG93ID1cbiAgbGV0IGlzX2xlZnQgeCA9XG4gICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICB8IGBSaWdodCAtPiBmYWxzZVxuICBpblxuICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X29uX2xlZnQgLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfbGVmdCBbQG5vbnRhaWxdXG4gIHwgYEZpcnN0X29uX3JpZ2h0IC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19yaWdodCBbQG5vbnRhaWxdXG47O1xuIiwiKCoqIE1vZHVsZSB0eXBlcyBmb3IgYSBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb24gZm9yIGEgc2VxdWVuY2UsIGFuZCBmdW5jdG9ycyBmb3IgYnVpbGRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIEFuIFtJbmRleGFibGVdIHR5cGUgaXMgYSBmaW5pdGUgc2VxdWVuY2Ugb2YgZWxlbWVudHMgaW5kZXhlZCBieSBjb25zZWN1dGl2ZSBpbnRlZ2Vyc1xuICAgIFswXSAuLi4gW2xlbmd0aCB0IC0gMV0uICBbZ2V0XSBhbmQgW2xlbmd0aF0gbXVzdCBiZSBPKDEpIGZvciB0aGUgcmVzdWx0aW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIHRvIGJlIGxnKG4pLiAqKVxubW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBlbHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID1cbiAgICAoWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgOyBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgTGFzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgIF1cbiAgICAgOiB0IGxpc3QpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X29uX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID0gKFsgYExhc3Rfb25fbGVmdDsgYEZpcnN0X29uX3JpZ2h0IF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG50eXBlICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IGNvbXBhcmU6KCgnZWx0IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAtPiBXaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgLT4gJ2tleVxuICAtPiBpbnQgb3B0aW9uXG5cbnR5cGUgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IHNlZ21lbnRfb2Y6KCgnZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAtPiBpbnQgb3B0aW9uXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKHQsIGVsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKHQsIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgQmluYXJ5X3NlYXJjaGFibGUgPSBzaWdcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUgPSBJbmRleGFibGVcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IEluZGV4YWJsZTFcblxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IFdoaWNoX3RhcmdldF9ieV9rZXlcbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnRcblxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9ICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICBtb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCB3aXRoIHR5cGUgZWx0IDo9IFQuZWx0XG4gIG1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlICdhIGVsdFxuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgZWx0XG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogQXJnKSA9IHN0cnVjdFxuICBsZXQgZ2V0ID0gVC5nZXRcbiAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfmNvbXBhcmUgaG93IHZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+c2VnbWVudF9vZiBob3dcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICB0eXBlICdhIGVsdCA9IFQuZWx0XG4gICAgdHlwZSAnYSB0ID0gVC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gIGVuZClcbiIsIigqIFtCeXRlczBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW1N0ZGxpYi5CeXRlc10uIFtCeXRlczBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzc1xuICAgdGhlIHBhcnQgb2YgW1N0ZGxpYi5CeXRlc10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gYnl0ZXMwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5CeXRlc10uIFtCeXRlczBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmRcbiAgIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQnl0ZXNdIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBCeXRlcyAgPSBCeXRlczBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgQnl0ZXMgPSBCeXRlczBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQnl0ZXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiAoYnl0ZXNbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IChieXRlc1tAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gY2hhclxuICAgID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGNoYXJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoY2hhcltAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcblxuICAoKiBbdW5zYWZlX2JsaXRfc3RyaW5nXSBpcyBub3QgZXhwb3J0ZWQgaW4gdGhlIFtzdGRsaWJdIHNvIHdlIGV4cG9ydCBpdCBoZXJlICopXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIDogIHNyYzooc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50NjRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnQ2NFxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50NjRbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50MzJcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnQzMlxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzJcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50MzJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50MTZcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5lbmRcblxuaW5jbHVkZSBQcmltaXRpdmVzXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgYmxpdCA9IFN0ZGxpYi5CeXRlcy5ibGl0XG5sZXQgYmxpdF9zdHJpbmcgPSBTdGRsaWIuQnl0ZXMuYmxpdF9zdHJpbmdcbmxldCBjb21wYXJlID0gU3RkbGliLkJ5dGVzLmNvbXBhcmVcbmxldCBjb3B5ID0gU3RkbGliLkJ5dGVzLmNvcHlcbmxldCBjcmVhdGUgPSBTdGRsaWIuQnl0ZXMuY3JlYXRlXG5cbmV4dGVybmFsIHVuc2FmZV9jcmVhdGVfbG9jYWwgOiBpbnQgLT4gKGJ5dGVzW0Bsb2NhbF0pID0gXCJCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXNcIlxuW0BAbm9hbGxvY11cblxubGV0IGNyZWF0ZV9sb2NhbCBsZW4gPVxuICBcbiAgICAoaWYgbGVuID4gU3lzMC5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuY3JlYXRlX2xvY2FsXCI7XG4gICAgIHVuc2FmZV9jcmVhdGVfbG9jYWwgbGVuKVxuOztcblxubGV0IGZpbGwgPSBTdGRsaWIuQnl0ZXMuZmlsbFxubGV0IG1ha2UgPSBTdGRsaWIuQnl0ZXMubWFrZVxuXG5sZXQgbWFwIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGlmIGwgPSAwXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBtYXBpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgaWYgbCA9IDBcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgc3ViID0gU3RkbGliLkJ5dGVzLnN1YlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImNhbWxfYmxpdF9ieXRlc1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLkJ5dGVzLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0ZGxpYi5CeXRlcy5vZl9zdHJpbmdcblxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZ1xuICA6ICBub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nX3Byb21pc2Vfbm9fbXV0YXRpb25cbiAgOiAgKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgLT4gKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNlcXVlbmNlX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgbGVuZ3RoIDogKF8gdFtAbG9jYWxdKSAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5cbiAgICAoU3JjIDogU2VxdWVuY2VfZ2VuKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgU3JjLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBTcmMudCwgJ2EgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdW5zYWZlX2JsaXQgPSBEc3QudW5zYWZlX2JsaXRcblxuICBsZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpzcmNfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpkc3RfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihEc3QubGVuZ3RoIGRzdCk7XG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IGJsaXRvXG4gICAgICAgIH5zcmNcbiAgICAgICAgPyhzcmNfcG9zID0gMClcbiAgICAgICAgPyhzcmNfbGVuID0gU3JjLmxlbmd0aCBzcmMgLSBzcmNfcG9zKVxuICAgICAgICB+ZHN0XG4gICAgICAgID8oZHN0X3BvcyA9IDApXG4gICAgICAgICgpXG4gICAgPVxuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuOnNyY19sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gICgqIFtzdWJdIGFuZCBbc3Vib10gZW5zdXJlIHRoYXQgZXZlcnkgcG9zaXRpb24gb2YgdGhlIGNyZWF0ZWQgc2VxdWVuY2UgaXMgcG9wdWxhdGVkIGJ5XG4gICAgIGFuIGVsZW1lbnQgb2YgdGhlIHNvdXJjZSBhcnJheS4gIFRodXMgZXZlcnkgZWxlbWVudCBvZiBbZHN0XSBiZWxvdyBpcyB3ZWxsXG4gICAgIGRlZmluZWQuICopXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIGxldCBkc3QgPSBEc3QuY3JlYXRlX2xpa2UgfmxlbiBzcmMgaW5cbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gICAgc3ViXG4gICAgICBzcmNcbiAgICAgIH5wb3NcbiAgICAgIH5sZW46XG4gICAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgfCBOb25lIC0+IFNyYy5sZW5ndGggc3JjIC0gcG9zKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgYmxpdFxuICBlbmQpID1cbiAgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlMV9nZW5lcmljIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSkgPSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICh0LCB0KSBibGl0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IFNlcXVlbmNlLnRcblxuICAgIG9wZW4gU2VxdWVuY2VcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmRcblxuICBpbmNsdWRlIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0XG4gICAgKFNyYyA6IFNlcXVlbmNlKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBNYWtlX2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFNyYy50XG5cbiAgICAgIG9wZW4gU3JjXG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gRHN0LnRcblxuICAgICAgb3BlbiBEc3RcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICAgIGVuZClcblxubW9kdWxlIE1ha2VfdG9fc3RyaW5nIChUIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZClcbiAgICAoVG9fYnl0ZXMgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gVC50IHdpdGggdHlwZSBkc3QgOj0gYnl0ZXMpID1cbnN0cnVjdFxuICBvcGVuIFRvX2J5dGVzXG5cbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3ViIHNyYyB+cG9zIH5sZW4pXG4gIDs7XG5cbiAgbGV0IHN1Ym8gP3BvcyA/bGVuIHNyYyA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1Ym8gP3BvcyA/bGVuIHNyYylcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEVpdGhlcl9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEVpdGhlcjBcblxubGV0IHN3YXAgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gU2Vjb25kIHhcbiAgfCBTZWNvbmQgeCAtPiBGaXJzdCB4XG47O1xuXG5sZXQgaXNfZmlyc3QgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gdHJ1ZVxuICB8IFNlY29uZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc2Vjb25kID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IGZhbHNlXG4gIHwgU2Vjb25kIF8gLT4gdHJ1ZVxuOztcblxubGV0IHZhbHVlIChGaXJzdCB4IHwgU2Vjb25kIHgpID0geFxuXG5sZXQgdmFsdWVfbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IGZpcnN0IHhcbiAgfCBTZWNvbmQgeCAtPiBzZWNvbmQgeFxuOztcblxubGV0IGl0ZXIgPSB2YWx1ZV9tYXBcblxubGV0IG1hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBGaXJzdCAoZmlyc3QgeClcbiAgfCBTZWNvbmQgeCAtPiBTZWNvbmQgKHNlY29uZCB4KVxuOztcblxubGV0IGZpcnN0IHggPSBGaXJzdCB4XG5sZXQgc2Vjb25kIHggPSBTZWNvbmQgeFxuXG5sZXQgZXF1YWwgZXExIGVxMiB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBlcTEgeCB5XG4gIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IGVxMiB4IHlcbiAgfCBGaXJzdCBfLCBTZWNvbmQgXyB8IFNlY29uZCBfLCBGaXJzdCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50IGYgcyA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBmIHhcbiAgfCBTZWNvbmQgeSAtPiBzIHlcbjs7XG5cbm1vZHVsZSBGb2N1cyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRm9jdXMgb2YgeyB2YWx1ZSA6ICdhIFtAZ2xvYmFsXSB9XG4gICAgfCBPdGhlciBvZiB7IHZhbHVlIDogJ2IgW0BnbG9iYWxdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9mb2N1c2VkIChNIDogc2lnXG4gICAgdHlwZSAoKydhLCArJ2IpIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICB2YWwgb3RoZXIgOiAnYiAtPiAoXywgJ2IpIHRcbiAgICB2YWwgZm9jdXMgOiAoJ2EsICdiKSB0IC0+ICgoJ2EsICdiKSBGb2N1cy50W0Bsb2NhbF0pXG5cbiAgICB2YWwgY29tYmluZVxuICAgICAgOiAgKCdhLCAnZCkgdFxuICAgICAgLT4gKCdiLCAnZCkgdFxuICAgICAgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgICAgLT4gb3RoZXI6KCgnZCAtPiAnZCAtPiAnZClbQGxvY2FsXSlcbiAgICAgIC0+ICgnYywgJ2QpIHRcblxuICAgIHZhbCBiaW5kIDogKCdhLCAnYikgdCAtPiBmOigoJ2EgLT4gKCdjLCAnYikgdClbQGxvY2FsXSkgLT4gKCdjLCAnYikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cbiAgb3BlbiBXaXRoX3JldHVyblxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgbGV0IHJlcyA9IGJpbmQgdCB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFwcCA9IEFwcGxpY2F0aXZlLk1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgICAgIGxldCBtYXAyIDogKCdhLCAneCkgdCAtPiAoJ2IsICd4KSB0IC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSkgLT4gKCdjLCAneCkgdCA9XG4gICAgICAgIGZ1biB0MSB0MiB+ZiAtPlxuICAgICAgICBiaW5kIHQxIH5mOihmdW4geCAtPiBiaW5kIHQyIH5mOihmdW4geSAtPiByZXR1cm4gKGYgeCB5KSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBcHBcblxuICBsZXQgY29tYmluZV9hbGwgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIChtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICAgICAgIHwgRm9jdXMgXyAtPiBvdGhlcl9sb29wIGYgYWNjIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvLnZhbHVlKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIHggLT4gcmV0dXJuX2xvb3AgZiAoeC52YWx1ZSA6OiBhY2MpIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIG8udmFsdWUgdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiBbXSB0c1xuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbF91bml0ID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2Mgby52YWx1ZSkgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIHsgdmFsdWUgPSAoKSB9IC0+IHJldHVybl9sb29wIGYgdHNcbiAgICAgICAgIHwgT3RoZXIgeyB2YWx1ZSA9IG8gfSAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIHRzXG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID1cbiAgICBtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICB8IEZvY3VzIHggLT4gU29tZSB4LnZhbHVlXG4gICAgfCBPdGhlciBfIC0+IE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgfCBGb2N1cyB4IC0+IHgudmFsdWVcbiAgICB8IE90aGVyIF8gLT4gZGVmYXVsdFxuICA7O1xuXG4gIGxldCB3aXRoX3JldHVybiBmID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHJldCAtPiBvdGhlciAoZiAoV2l0aF9yZXR1cm4ucHJlcGVuZCByZXQgfmY6cmV0dXJuKSkpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlyc3QgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gZmlyc3RcbiAgICBsZXQgb3RoZXIgPSBzZWNvbmRcblxuICAgIGxldCBmb2N1cyB0IDogXyBGb2N1cy50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IEZvY3VzIHsgdmFsdWUgPSB4IH1cbiAgICAgIHwgU2Vjb25kIHkgLT4gT3RoZXIgeyB2YWx1ZSA9IHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAoZiB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKG90aGVyIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIF8gfCBfLCBTZWNvbmQgeCAtPiBTZWNvbmQgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24uICopXG4gICAgICB8IFNlY29uZCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFNlY29uZCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCByZXR1cm4gPSBzZWNvbmRcbiAgICBsZXQgb3RoZXIgPSBmaXJzdFxuXG4gICAgbGV0IGZvY3VzIHQgOiBfIEZvY3VzLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IEZvY3VzIHsgdmFsdWUgPSB4IH1cbiAgICAgIHwgRmlyc3QgeSAtPiBPdGhlciB7IHZhbHVlID0geSB9XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChmIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAob3RoZXIgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBfIHwgXywgRmlyc3QgeCAtPiBGaXJzdCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24sIGxpa2UgW0ZpcnN0LmJpbmRdIGFib3ZlLiAqKVxuICAgICAgfCBGaXJzdCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnZiwgJ3MpIF9laXRoZXIgPSAoJ2YsICdzKSB0ID1cbiAgICB8IEZpcnN0IG9mICdmXG4gICAgfCBTZWNvbmQgb2YgJ3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfb3B0aW9uXG5cbiAgbGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA1XylcbiAgICAgICAgOiAoKChhX18wMDVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8pIC0+IChhX18wMDVfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XyB0KSAtPlxuICAgICAgZ2xvYmFsaXplX29wdGlvblxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBoYXNoX2ZvbGRfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gICAgb3B0aW9uX29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBzZXhwX29mX29wdGlvblxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBvcHRpb25fc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBnbG9iYWxpemUgOiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgfCBOb25lXG4gIHwgU29tZSBvZiAnYVxuXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NvbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHZhbHVlX21hcCBvIH5kZWZhdWx0IH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuOztcblxubGV0IGl0ZXIgbyB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxuXG5sZXQgY2FsbCB4IH5mID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmIHhcbjs7XG5cbmxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCB2YWx1ZV9leG4gP2hlcmUgP2Vycm9yID9tZXNzYWdlIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggaGVyZSwgZXJyb3IsIG1lc3NhZ2Ugd2l0aFxuICAgICAgfCBOb25lLCBOb25lLCBOb25lIC0+IEVycm9yLm9mX3N0cmluZyBcIk9wdGlvbi52YWx1ZV9leG4gTm9uZVwiXG4gICAgICB8IE5vbmUsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5vZl9zdHJpbmcgbVxuICAgICAgfCBOb25lLCBTb21lIGUsIE5vbmUgLT4gZVxuICAgICAgfCBOb25lLCBTb21lIGUsIFNvbWUgbSAtPiBFcnJvci50YWcgZSB+dGFnOm1cbiAgICAgIHwgU29tZSBwLCBOb25lLCBOb25lIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSBcIk9wdGlvbi52YWx1ZV9leG5cIiBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBOb25lLCBTb21lIG0gLT4gRXJyb3IuY3JlYXRlIG0gcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgU29tZSBlLCBfIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICh2YWx1ZSBtZXNzYWdlIH5kZWZhdWx0OlwiXCIpXG4gICAgICAgICAgKGUsIHApXG4gICAgICAgICAgKHNleHBfb2ZfcGFpciBFcnJvci5zZXhwX29mX3QgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdClcbiAgICBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgdmFsdWVfb3JfdGh1bmsgbyB+ZGVmYXVsdCA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0ICgpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgeCAtPiBbfCB4IHxdXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgeCAtPiBbIHggXVxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZTpfID0gdFxubGV0IG1heF9lbHQgdCB+Y29tcGFyZTpfID0gdFxuXG5sZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICB2YWx1ZV9tYXAgdCB+ZGVmYXVsdDpNLnplcm8gfmZcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYScgLT4gZXF1YWwgYSBhJ1xuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBfIC0+IDFcbjs7XG5cbmxldCBpc19lbXB0eSA9IGlzX25vbmVcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgeCAtPiBmIGluaXQgeFxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGEgLT4gaWYgZiBhIHRoZW4gMSBlbHNlIDBcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gaWYgZiB4IHRoZW4gdCBlbHNlIE5vbmVcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGVxdWFsIGYgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeCcgLT4gZiB4IHgnXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNvbWUgeCA9IFNvbWUgeFxuXG5sZXQgZmlyc3Rfc29tZSB4IHkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIF8gLT4geFxuICB8IE5vbmUgLT4geVxuOztcblxubGV0IHNvbWVfaWYgY29uZCB4ID0gaWYgY29uZCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcblxubGV0IG1lcmdlIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBTb21lIChmIGEgYilcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgdiBhcyBvIHdoZW4gZiB2IC0+IG9cbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcbjs7XG5cbm1vZHVsZSBNb25hZF9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBiaW5kIG8gfmYgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNb25hZC5NYWtlX2xvY2FsIChNb25hZF9hcmcpXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBtYXAyIHggeSB+ZiA9XG4gICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHgsIFNvbWUgeSAtPiBTb21lIChmIHggeSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoQXBwbGljYXRpdmVfYXJnKVxuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCb29sMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBib29sXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfYm9vbCA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBmYWxzZTsgdHJ1ZSBdIDogdCBsaXN0KVxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9ib29sIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Jvb2xcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Jvb2wgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGJvb2xfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYm9vbCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBib29sX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gICAgfCBzIC0+IGludmFsaWRfYXJnZiBcIkJvb2wub2Zfc3RyaW5nOiBleHBlY3RlZCB0cnVlIG9yIGZhbHNlIGJ1dCBnb3QgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfYm9vbFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJvb2xcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgdG9faW50IHggPSBib29sX3RvX2ludCB4XG5cbm1vZHVsZSBOb25fc2hvcnRfY2lyY3VpdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkb24ndCBleHBvc2UgdGhpcywgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBicmVhayB0aGUgaW52YXJpYW50IG1lbnRpb25lZCBiZWxvdyBvZlxuICAgICAodG9faW50IHRydWUgPSAxKSBhbmQgKHRvX2ludCBmYWxzZSA9IDApLiAqKVxuICBsZXQgdW5zYWZlX29mX2ludCAoeCA6IGludCkgOiBib29sID0gU3RkbGliLk9iai5tYWdpYyB4XG4gIGxldCAoIHx8ICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbG9yIHRvX2ludCBiKVxuICBsZXQgKCAmJiApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxhbmQgdG9faW50IGIpXG5lbmRcblxuKCogV2UgZG8gdGhpcyBhcyBhIGRpcmVjdCBhc3NlcnQgb24gdGhlIHRoZW9yeSB0aGF0IGl0J3MgYSBjaGVhcCB0aGluZyB0byB0ZXN0IGFuZCBhXG4gICByZWFsbHkgY29yZSBpbnZhcmlhbnQgdGhhdCB3ZSBuZXZlciBleHBlY3QgdG8gYnJlYWssIGFuZCB3ZSBzaG91bGQgYmUgaGFwcHkgZm9yIGFcbiAgIHByb2dyYW0gdG8gZmFpbCBpbW1lZGlhdGVseSBpZiB0aGlzIGlzIHZpb2xhdGVkLiAqKVxubGV0ICgpID0gYXNzZXJ0IChQb2x5LiggPSApICh0b19pbnQgdHJ1ZSkgMSAmJiBQb2x5LiggPSApICh0b19pbnQgZmFsc2UpIDApXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbnRhaW5lcl9pbnRmLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgTGlzdCA9IExpc3QxXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gICgqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZlxuICAgICB0aGUgc2VxdWVuY2UgKilcbiAgdHlwZSAoJ2EsICdzKSB0ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgeyBzdGF0ZSA6ICdzIH1cbiAgICB8IFlpZWxkIG9mXG4gICAgICAgIHsgdmFsdWUgOiAnYVxuICAgICAgICA7IHN0YXRlIDogJ3NcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAncy5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAncykgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDExXyBzX18wMTJfKVxuICAgICAgICA6ICAoKGFfXzAxMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDEyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDExXywgc19fMDEyXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzAwMV8gX29mX3NfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkRvbmVcIlxuICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHN0YXRlX18wMDRfIH0gLT5cbiAgICAgICAgICBsZXQgYm5kc19fMDAzXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgICAgICBsZXQgYXJnX18wMDVfID0gX29mX3NfXzAwMl8gc3RhdGVfXzAwNF8gaW5cbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGF0ZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlNraXBcIiA6OiBibmRzX18wMDNfKVxuICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB2YWx1ZV9fMDA3Xzsgc3RhdGUgPSBzdGF0ZV9fMDA5XyB9IC0+XG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDEwXyA9IF9vZl9zX18wMDJfIHN0YXRlX18wMDlfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhdGVcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDA4XyA9IF9vZl9hX18wMDFfIHZhbHVlX18wMDdfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidmFsdWVcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJZaWVsZFwiIDo6IGJuZHNfXzAwNl8pXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5vcGVuIFN0ZXBcblxuKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgc2VxdWVuY2UgKilcbnR5cGUgK18gdCA9XG4gIHwgU2VxdWVuY2UgOlxuICAgICAgeyBzdGF0ZSA6ICdzXG4gICAgICA7IG5leHQgOiAncyAtPiAoJ2EsICdzKSBTdGVwLnRcbiAgICAgIH1cbiAgICAgIC0+ICdhIHRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgbmV4dF9zdGVwIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSkgPVxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IH1cbiAgOztcblxuICBsZXQgZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGxvb3AgcyBuZXh0IGZpbmlzaCBmIGFjYyA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGYgYWNjIE5vbmUgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gZiBhY2MgKFNvbWUgYSkgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGZpbmlzaCBmIGluaXRcbiAgOztcbmVuZFxuXG5sZXQgdW5mb2xkX3N0ZXAgfmluaXQgfmYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gaW5pdDsgbmV4dCA9IGYgfVxuXG5sZXQgdW5mb2xkIH5pbml0IH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6KGZ1biBzIC0+XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RlcC5Eb25lXG4gICAgfCBTb21lIChhLCBzKSAtPiBTdGVwLllpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSlcbjs7XG5cbmxldCB1bmZvbGRfd2l0aCBzIH5pbml0IH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gaW5pdCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChzZWVkLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzZWVkLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGYgc2VlZCBhIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VlZCB9IC0+IFNraXAgeyBzdGF0ZSA9IHNlZWQsIHMgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gc2VlZCB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHNlZWQsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgdW5mb2xkX3dpdGhfYW5kX2ZpbmlzaCBzIH5pbml0IH5ydW5uaW5nX3N0ZXAgfmlubmVyX2ZpbmlzaGVkIH5maW5pc2hpbmdfc3RlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChpbml0LCBzKVxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHN0YXRlIC0+XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBuZXh0IGlubmVyX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX2ZpbmlzaGVkIChpbm5lcl9maW5pc2hlZCBzdGF0ZSkgfVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gaW5uZXJfc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gaW5uZXJfc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHJ1bm5pbmdfc3RlcCBzdGF0ZSB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlIH0gLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfVxuICAgICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH0pKVxuICAgICAgICAgICAgIHwgYElubmVyX2ZpbmlzaGVkIHN0YXRlIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggZmluaXNoaW5nX3N0ZXAgc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5uZXJfZmluaXNoZWQgc3RhdGUgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSA9IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpsIH5mOihmdW5jdGlvblxuICAgIHwgW10gLT4gRG9uZVxuICAgIHwgeCA6OiBsIC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGwgfSlcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCB2IG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gdlxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyB2IG5leHQgZlxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoZiB2IGEpIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBpbml0IG5leHQgZlxuOztcblxubGV0IHRvX2xpc3RfcmV2IHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKVxuXG5cbmxldCB0b19saXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9XG4gIGxldCBzYWZlX3RvX2xpc3QgdCA9IExpc3QucmV2ICh0b19saXN0X3JldiB0KSBpblxuICBsZXQgcmVjIHRvX2xpc3QgcyBuZXh0IGkgPVxuICAgIGlmIGkgPSAwXG4gICAgdGhlbiBzYWZlX3RvX2xpc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IFtdXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiB0b19saXN0IHMgbmV4dCBpXG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBhIDo6IHRvX2xpc3QgcyBuZXh0IChpIC0gMSkpXG4gIGluXG4gIHRvX2xpc3QgcyBuZXh0IDUwMFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X3Ygc3RvcF92ID1cbiAgbGV0IHN0ZXAgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgYGluY2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID4gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICAgIHwgYGluY2x1c2l2ZSAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA8IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgICB8IGBleGNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gICAgfCBgZXhjbHVzaXZlIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpIDw9IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgaW5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfdlxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBzdGFydF92ICsgc3RyaWRlXG4gIGluXG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOnN0ZXBcbjs7XG5cbmxldCBvZl9sYXp5IHRfbGF6eSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnRfbGF6eSB+ZjooZnVuIHRfbGF6eSAtPlxuICAgIGxldCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPSBMYXp5LmZvcmNlIHRfbGF6eSBpblxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgU2tpcFxuICAgICAgICB7IHN0YXRlID1cbiAgICAgICAgICAgIChsZXQgdiA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gaW5cbiAgICAgICAgICAgICBsYXp5IHYpXG4gICAgICAgIH1cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgWWllbGRcbiAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgOyBzdGF0ZSA9XG4gICAgICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IGluXG4gICAgICAgICAgICAgbGF6eSB2KVxuICAgICAgICB9KVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc2VlZFxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHNlZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGYgYTsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gZiBpIGE7IHN0YXRlID0gaSArIDEsIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgYWNjIHggaW5cbiAgICBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBhY2MgfSlcbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGkgYWNjIHggaW5cbiAgICBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBpICsgMSwgYWNjIH0pXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzZWVkXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gc2VlZCAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbWFwIH5mOnNuZCAoZmlsdGVyIChtYXBpIHQgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKSlcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gaVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgaSBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIChpICsgMSkgcyBuZXh0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6KFtdLCAwKSB+ZjooZnVuIChsLCBpKSB4IC0+IHggOjogbCwgaSArIDEpXG5cbmxldCB0b19hcnJheSB0ID1cbiAgbGV0IGwsIGxlbiA9IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IHggOjogbCAtPlxuICAgIGxldCBhID0gQXJyYXkuY3JlYXRlIH5sZW4geCBpblxuICAgIGxldCByZWMgbG9vcCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgYS4oaSkgPC0geDtcbiAgICAgICAgbG9vcCAoaSAtIDEpIGxcbiAgICBpblxuICAgIGxvb3AgKGxlbiAtIDIpIGw7XG4gICAgYVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gZiBhIC0+IFNvbWUgYVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZlxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggZiBpIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBub3QgKGYgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gbm90IChmIGkgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgaSBhIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+ICgpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICBmIGE7XG4gICAgICBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIF8gLT4gZmFsc2VcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBhID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gXyB9IHdoZW4gZXF1YWwgYSBiIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBhXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgYSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZW1wdHkgPSBTZXF1ZW5jZSB7IHN0YXRlID0gKCk7IG5leHQgPSAoZnVuICgpIC0+IERvbmUpIH1cblxubGV0IGJpbmQgdCB+ZiA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0sIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICB8IERvbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGVtcHR5LCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGYgYSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSB9KSlcbiAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0sIHJlc3QgfVxuICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSwgcmVzdCB9KSlcbiAgICB+aW5pdDooZW1wdHksIHQpXG47O1xuXG5sZXQgcmV0dXJuIHggPVxuICB1bmZvbGRfc3RlcCB+aW5pdDooU29tZSB4KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRG9uZVxuICAgIHwgU29tZSB4IC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IE5vbmUgfSlcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kKVxuXG5sZXQgbnRoIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBOb25lXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgcyBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICBpZiBwaHlzX2VxdWFsIGkgMCB0aGVuIFNvbWUgYSBlbHNlIGxvb3AgKGkgLSAxKSBzIG5leHRcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIG4gcyBuZXh0KVxuOztcblxubGV0IG50aF9leG4gcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLm50aFwiXG4gIGVsc2UgKFxuICAgIG1hdGNoIG50aCBzIG4gd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLm50aFwiXG4gICAgfCBTb21lIHggLT4geClcbjs7XG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAxM18gYl9fMDE0XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgTGVmdCBfYV9fMDE1XywgTGVmdCBfYl9fMDE2XyAtPiBfY21wX19hIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IExlZnQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBMZWZ0IF8gLT4gMVxuICAgICAgfCBSaWdodCBfYV9fMDE3XywgUmlnaHQgX2JfXzAxOF8gLT4gX2NtcF9fYiBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBSaWdodCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFJpZ2h0IF8gLT4gMVxuICAgICAgfCBCb3RoIChfYV9fMDE5XywgX2FfXzAyMV8pLCBCb3RoIChfYl9fMDIwXywgX2JfXzAyMl8pIC0+XG4gICAgICAgIChtYXRjaCBfY21wX19hIF9hX18wMTlfIF9iX18wMjBfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19iIF9hX18wMjFfIF9iX18wMjJfXG4gICAgICAgICB8IG4gLT4gbikpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90XG4gICAgOiB0eXBlIGEgYi5cbiAgICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgICAtPiAoYSwgYikgdFxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICB8IExlZnQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgfCBSaWdodCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG4gICAgICB8IEJvdGggKF9hMCwgX2ExKSAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyIGluXG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgICBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNDZfIGJfXzA0N18pXG4gICAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzA0Nl8pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDQ3XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgICAtPiAoYV9fMDQ2XywgYl9fMDQ3XykgdCkgLT5cbiAgICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyN18gPSBcInNlcXVlbmNlLm1sLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnRcIiBpblxuICAgICAgZnVuIF9vZl9hX18wMjNfIF9vZl9iX18wMjRfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgX3RhZ19fMDMwXykgOjogc2V4cF9hcmdzX18wMzFfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMjlfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDMxXyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzJfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDMzXyA9IF9vZl9hX18wMjNfIGFyZzBfXzAzMl8gaW5cbiAgICAgICAgICAgICBMZWZ0IHJlczBfXzAzM19cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wMzBfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDI5XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIF90YWdfXzAzNV8pIDo6IHNleHBfYXJnc19fMDM2XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM0XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzNl8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDM3XyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzOF8gPSBfb2ZfYl9fMDI0XyBhcmcwX18wMzdfIGluXG4gICAgICAgICAgICAgUmlnaHQgcmVzMF9fMDM4X1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyN19cbiAgICAgICAgICAgICAgIF90YWdfXzAzNV9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzRfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIF90YWdfXzA0MF8pIDo6IHNleHBfYXJnc19fMDQxXykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM5XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA0MV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDQyXzsgYXJnMV9fMDQzXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzA0NF8gPSBfb2ZfYV9fMDIzXyBhcmcwX18wNDJfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzA0NV8gPSBfb2ZfYl9fMDI0XyBhcmcxX18wNDNfIGluXG4gICAgICAgICAgICAgQm90aCAocmVzMF9fMDQ0XywgcmVzMV9fMDQ1XylcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wNDBfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM5XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgfCBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNThfIGJfXzA1OV8pXG4gICAgICAgIDogICgoYV9fMDU4XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wNTlfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wNThfLCBiX18wNTlfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDQ4XyBfb2ZfYl9fMDQ5XyAtPiBmdW5jdGlvblxuICAgICAgICB8IExlZnQgYXJnMF9fMDUwXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTFfID0gX29mX2FfXzA0OF8gYXJnMF9fMDUwXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgcmVzMF9fMDUxXyBdXG4gICAgICAgIHwgUmlnaHQgYXJnMF9fMDUyXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTNfID0gX29mX2JfXzA0OV8gYXJnMF9fMDUyXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IHJlczBfXzA1M18gXVxuICAgICAgICB8IEJvdGggKGFyZzBfXzA1NF8sIGFyZzFfXzA1NV8pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1Nl8gPSBfb2ZfYV9fMDQ4XyBhcmcwX18wNTRfXG4gICAgICAgICAgYW5kIHJlczFfXzA1N18gPSBfb2ZfYl9fMDQ5XyBhcmcxX18wNTVfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiOyByZXMwX18wNTZfOyByZXMxX18wNTdfIF1cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAgICdhICdiLlxuICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiQm90aFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gICAgICB+Y29tcGFyZVxuICA9XG4gIGxldCB1bnNoYWRvd2VkX2NvbXBhcmUgPSBjb21wYXJlIGluXG4gIGxldCBvcGVuIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50IGluXG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICAgIHwgKFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxJyB9IGFzIHMxKSwgKFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyJyB9IGFzIHMyKVxuICAgICAgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gdW5zaGFkb3dlZF9jb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8IDBcbiAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IExlZnQgYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMScgfSwgczIgfVxuICAgICAgZWxzZSBpZiBjb21wYXJpc29uID0gMFxuICAgICAgdGhlblxuICAgICAgICBZaWVsZCB7IHZhbHVlID0gQm90aCAoYSwgYik7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEnIH0sIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IFJpZ2h0IGI7IHN0YXRlID0gczEsIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgRG9uZSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IExlZnQgYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBEb25lIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBSaWdodCBiOyBzdGF0ZSA9IERvbmUsIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIHMxIHMyIH5jb21wYXJlID1cbiAgbWFwIChtZXJnZV93aXRoX2R1cGxpY2F0ZXMgczEgczIgfmNvbXBhcmUpIH5mOihmdW5jdGlvblxuICAgIHwgTGVmdCB4IHwgUmlnaHQgeCB8IEJvdGggKHgsIF8pIC0+IHgpXG47O1xuXG5sZXQgKG1lcmdlIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMjEtMDddIEZvciBpZGVudGljYWwgYmVoYXZpb3IsIHVzZSBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXSwgYnV0IGNvbnNpZGVyIHVzaW5nIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9zb3J0ZWRdIGluc3RlYWQuXCJdKVxuICA9XG4gIG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZFxuOztcblxubGV0IG1lcmdlX3NvcnRlZFxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgICAgIH5jb21wYXJlXG4gID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gICAgfCAoWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEnIH0gYXMgczEpLCAoWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczInIH0gYXMgczIpXG4gICAgICAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSBjb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8PSAwXG4gICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxJyB9LCBzMiB9XG4gICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMxLCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIERvbmUgLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIERvbmUgfVxuICAgIHwgRG9uZSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gRG9uZSwgU2tpcCB7IHN0YXRlID0gczIgfSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBoZCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBoZF9leG4gcyA9XG4gIG1hdGNoIGhkIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJoZF9leG5cIlxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdGwgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gYSB9IC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgKG1hdGNoIGxvb3AgcyBuZXh0IHdpdGhcbiAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfCBTb21lIHMgLT4gU29tZSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkpXG47O1xuXG5sZXQgdGxfZWFnZXJseV9leG4gcyA9XG4gIG1hdGNoIHRsIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS50bF9leG5cIlxuICB8IFNvbWUgcyAtPiBzXG47O1xuXG5sZXQgbGlmdF9pZGVudGl0eSBuZXh0IHMgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IERvbmUgLT4gRG9uZVxuICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9XG4gIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBJZGVudGl0eSBzIH1cbjs7XG5cbmxldCBuZXh0IHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBTb21lIChhLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgZmlsdGVyX29wdCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gTm9uZTsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gU29tZSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZmlsdGVyX21hcCBzIH5mID0gZmlsdGVyX29wdCAobWFwIHMgfmYpXG5sZXQgZmlsdGVyX21hcGkgcyB+ZiA9IGZpbHRlcl9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBzcGxpdF9uIHMgbiA9XG4gIGxldCByZWMgbG9vcCBzIGkgYWNjdW0gbmV4dCA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiBMaXN0LnJldiBhY2N1bSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBMaXN0LnJldiBhY2N1bSwgZW1wdHlcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBpIGFjY3VtIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoaSAtIDEpIChhIDo6IGFjY3VtKSBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuIFtdIG5leHRcbjs7XG5cbmxldCBjaHVua3NfZXhuIHQgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY2h1bmtzX2V4blwiXG4gIGVsc2VcbiAgICB1bmZvbGRfc3RlcCB+aW5pdDp0IH5mOihmdW4gdCAtPlxuICAgICAgbWF0Y2ggc3BsaXRfbiB0IG4gd2l0aFxuICAgICAgfCBbXSwgX2VtcHR5IC0+IERvbmVcbiAgICAgIHwgKF8gOjogXyBhcyB4cyksIHQgLT4gWWllbGQgeyB2YWx1ZSA9IHhzOyBzdGF0ZSA9IHQgfSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBpIGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgaSBhIC0+IFNvbWUgKGksIGEpXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgKGkgKyAxKSBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgMCBmXG47O1xuXG5sZXQgZmluZF9leG4gcyB+ZiA9XG4gIG1hdGNoIGZpbmQgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLmZpbmRfZXhuXCJcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIG1hdGNoIHMxLCBzMiB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYEZpcnN0X2xpc3QgczFcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBGaXJzdF9saXN0IHMxIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0MSBzMSB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH1cbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSAtPiBTa2lwIHsgc3RhdGUgPSBgRmlyc3RfbGlzdCBzMSB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYEZpcnN0X2xpc3QgczEgfSlcbiAgICAgICAgICAgIHwgYFNlY29uZF9saXN0IHMyIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0MiBzMiB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH0pKVxuICAgICAgfVxuOztcblxubGV0IGNvbmNhdF9tYXAgcyB+ZiA9IGJpbmQgcyB+ZlxubGV0IGNvbmNhdCBzID0gY29uY2F0X21hcCBzIH5mOkZuLmlkXG5sZXQgY29uY2F0X21hcGkgcyB+ZiA9IGNvbmNhdF9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCB6aXAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhLCBiOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICAgIHwgRG9uZSwgXyB8IF8sIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCB6aXBfZnVsbFxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYEJvdGggKGEsIGIpOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBgUmlnaHQgYjsgc3RhdGUgPSBEb25lLCBuZXh0MiBzMiB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBEb25lIC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYExlZnQgYTsgc3RhdGUgPSBuZXh0MSBzMSwgRG9uZSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBib3VuZGVkX2xlbmd0aCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSkgfmF0X21vc3QgPVxuICBsZXQgcmVjIGxvb3AgaSBzZWVkIG5leHQgPVxuICAgIGlmIGkgPiBhdF9tb3N0XG4gICAgdGhlbiBgR3JlYXRlclxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBgSXMgaVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzZWVkIH0gLT4gbG9vcCBpIHNlZWQgbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzZWVkIH0gLT4gbG9vcCAoaSArIDEpIHNlZWQgbmV4dClcbiAgaW5cbiAgbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IGxlbmd0aF9pc19ib3VuZGVkX2J5ID8obWluID0gLTEpID9tYXggdCA9XG4gIGxldCBsZW5ndGhfaXNfYXRfbGVhc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID1cbiAgICBsZXQgcmVjIGxvb3AgcyBhY2MgPVxuICAgICAgaWYgYWNjID49IG1pblxuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBhY2NcbiAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIChhY2MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgcyAwXG4gIGluXG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBsZW5ndGhfaXNfYXRfbGVhc3QgdFxuICB8IFNvbWUgbWF4IC0+XG4gICAgKG1hdGNoIGJvdW5kZWRfbGVuZ3RoIHQgfmF0X21vc3Q6bWF4IHdpdGhcbiAgICAgfCBgSXMgbGVuIHdoZW4gbGVuID49IG1pbiAtPiB0cnVlXG4gICAgIHwgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCBpdGVyaSBzIH5mID0gaXRlciAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykgW0Bub250YWlsXVxuXG5sZXQgZm9sZGkgcyB+aW5pdCB+ZiA9XG4gIGZvbGQgfmluaXQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biBhY2MgKGksIHMpIC0+IGYgaSBhY2MgcykgW0Bub250YWlsXVxuOztcblxubGV0IHJlZHVjZSBzIH5mID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChhLCBzKSAtPiBTb21lIChmb2xkIHMgfmluaXQ6YSB+Zilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHMgfmYgPVxuICBtYXRjaCByZWR1Y2UgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnJlZHVjZV9leG5cIlxuICB8IFNvbWUgcmVzIC0+IHJlc1xuOztcblxubGV0IGdyb3VwIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+YnJlYWsgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OihTb21lIChbXSwgcykpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgfCBTb21lIChhY2MsIHMpIC0+XG4gICAgICAgIChtYXRjaCBhY2MsIG5leHQgcyB3aXRoXG4gICAgICAgICB8IF8sIFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTb21lIChhY2MsIHMpIH1cbiAgICAgICAgIHwgW10sIERvbmUgLT4gRG9uZVxuICAgICAgICAgfCBhY2MsIERvbmUgLT4gWWllbGQgeyB2YWx1ZSA9IExpc3QucmV2IGFjYzsgc3RhdGUgPSBOb25lIH1cbiAgICAgICAgIHwgW10sIFlpZWxkIHsgdmFsdWUgPSBjdXI7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNvbWUgKFsgY3VyIF0sIHMpIH1cbiAgICAgICAgIHwgKHByZXYgOjogXyBhcyBhY2MpLCBZaWVsZCB7IHZhbHVlID0gY3VyOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICBpZiBicmVhayBwcmV2IGN1clxuICAgICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBMaXN0LnJldiBhY2M7IHN0YXRlID0gU29tZSAoWyBjdXIgXSwgcykgfVxuICAgICAgICAgICBlbHNlIFNraXAgeyBzdGF0ZSA9IFNvbWUgKGN1ciA6OiBhY2MsIHMpIH0pKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgbGFzdF9lbHQgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgbGFzdF9lbHQgc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggbGFzdF9lbHQgd2l0aFxuICAgICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNvbWUgKGIsIGEpXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IGxvb3AgKFNvbWUgYSkgcylcbiAgaW5cbiAgbG9vcCBOb25lIHMgW0Bub250YWlsXVxuOztcblxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIHMgfmVxdWFsID1cbiAgdW5mb2xkX3dpdGggcyB+aW5pdDpOb25lIH5mOihmdW4gcHJldiBhIC0+XG4gICAgbWF0Y2ggcHJldiB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU2tpcCB7IHN0YXRlID0gU29tZSBhIH1cbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU29tZSBhIH0pXG47O1xuXG5sZXQgY291bnQgcyB+ZiA9IGZvbGQgcyB+aW5pdDowIH5mOihmdW4gYWNjIGVsdCAtPiBhY2MgKyBCb29sLnRvX2ludCAoZiBlbHQpKSBbQG5vbnRhaWxdXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgYWNjIGVsdCAtPiBhY2MgKyBCb29sLnRvX2ludCAoZiBpIGVsdCkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT5cbiAgICBpZiBpID49IG4gdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGYgaTsgc3RhdGUgPSBpICsgMSB9KVxuOztcblxubGV0IHN1YiBzIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2Uuc3ViXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBpZiBpIC0gcG9zID49IGxlblxuICAgICAgICAgICAgIHRoZW4gRG9uZVxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IHdoZW4gaSA+PSBwb3MgLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSArIDEsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgdGFrZSBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRha2VcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuXG4gICAgICAgICAgICAgdGhlbiBEb25lXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGksIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgZHJvcCBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLmRyb3BcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGkgPj0gbGVuIC0+XG4gICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBpICsgMSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSArIDEsIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCB0YWtlX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IF8gfSAtPiBEb25lKVxuICAgICAgfVxuOztcblxubGV0IGRyb3Bfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBEcm9wcGluZyBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgRHJvcHBpbmcgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgRHJvcHBpbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBTa2lwIHsgc3RhdGUgPSBgRHJvcHBpbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9KVxuICAgICAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcylcbiAgICAgIH1cbjs7XG5cbmxldCBzaGlmdF9yaWdodCBzIHggPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgQ29uc2luZyAoc2VlZCwgeClcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBDb25zaW5nIChzZWVkLCB4KSAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBgSWRlbnRpdHkgc2VlZCB9XG4gICAgICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzKVxuICAgICAgfVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0X3dpdGhfbGlzdCBzIGwgPSBhcHBlbmQgKG9mX2xpc3QgbCkgc1xubGV0IHNoaWZ0X2xlZnQgPSBkcm9wXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgaW50ZXJzcGVyc2UgcyB+c2VwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYEluaXQgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEluaXQgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5pdCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBSdW5uaW5nIHMgfSlcbiAgICAgICAgICAgIHwgYFJ1bm5pbmcgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgUnVubmluZyBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBzZXA7IHN0YXRlID0gYFB1dHRpbmcgKGEsIHMpIH0pXG4gICAgICAgICAgICB8IGBQdXR0aW5nIChhLCBzKSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgUnVubmluZyBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgcmVwZWF0IHggPSB1bmZvbGRfc3RlcCB+aW5pdDp4IH5mOihmdW4geCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSB4IH0pXG5cbmxldCBjeWNsZV9saXN0X2V4biB4cyA9XG4gIGlmIExpc3QuaXNfZW1wdHkgeHMgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuXCI7XG4gIGxldCBzID0gb2ZfbGlzdCB4cyBpblxuICBjb25jYXRfbWFwIH5mOihmdW4gKCkgLT4gcykgKHJlcGVhdCAoKSlcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBzYSBzYiA9IGNvbmNhdF9tYXAgc2EgfmY6KGZ1biBhIC0+IHppcCAocmVwZWF0IGEpIHNiKVxubGV0IHNpbmdsZXRvbiB4ID0gcmV0dXJuIHhcblxubGV0IGRlbGF5ZWRfZm9sZCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZmluaXNoIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IGsgYWNjXG4gICAgfCBTb21lIGEgLT4gZiBhY2MgYSB+aylcbjs7XG5cbmxldCBmb2xkX20gfmJpbmQgfnJldHVybiB0IH5pbml0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiBhY2MpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYWNjIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBpdGVyX20gfmJpbmQgfnJldHVybiB0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0OigpXG4gICAgfmY6KGZ1biAoKSBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuICgpKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBmb2xkX3VudGlsIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoJ2EsICdiKSBDb250aW51ZV9vcl9zdG9wLnQpIHdpdGhcbiAgICAgICB8IFN0b3AgeCAtPiB4XG4gICAgICAgfCBDb250aW51ZSBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZiBpbml0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCBzIH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gUmVzdWx0LnJldHVybiBhY2NcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoXywgXykgUmVzdWx0LnQpIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgfCBPayBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9yY2VfZWFnZXJseSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxuXG5sZXQgbWVtb2l6ZSAodHlwZSBhKSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIG9mIChhLCB0KSBTdGVwLnQgTGF6eS50XG4gIGVuZFxuICBpblxuICBsZXQgcmVjIG1lbW9pemUgcyA9IE0uVCAobGF6eSAoZmluZF9zdGVwIHMpKVxuICBhbmQgZmluZF9zdGVwIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBmaW5kX3N0ZXAgc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IG1lbW9pemUgcyB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBtZW1vaXplIHM7IG5leHQgPSAoZnVuIChNLlQgbCkgLT4gTGF6eS5mb3JjZSBsKSB9XG47O1xuXG5sZXQgZHJvcF9lYWdlcmx5IHMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGkgfmxlbiBzIG5leHQgPVxuICAgIGlmIGkgPj0gbGVuXG4gICAgdGhlbiBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGVtcHR5XG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgfmxlbiBzIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgKGkgKyAxKSB+bGVuIHMgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIDAgfmxlbiBzIG5leHRcbjs7XG5cbmxldCBkcm9wX3doaWxlX29wdGlvbiAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3Agc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gcyB9IC0+XG4gICAgICBpZiBmIHggdGhlbiBsb29wIHMgZWxzZSBTb21lICh4LCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICBpblxuICBsb29wIHMgW0Bub250YWlsXVxuOztcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgICAgfCBgTGVmdCBfIC0+IHIucmV0dXJuIDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gci5yZXR1cm4gKC0xKVxuICAgICAgfCBgQm90aCAodjEsIHYyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlbiByLnJldHVybiBjKTtcbiAgICAwKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPVxuICBmb3JfYWxsICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgfCBgQm90aCAoYTEsIGEyKSAtPiBlcXVhbF9hIGExIGEyXG4gICAgfCBgTGVmdCBfIHwgYFJpZ2h0IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgcm91bmRfcm9iaW4gbGlzdCA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZiBzIHdpdGhcbiAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgWWllbGRcbiAgICAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgICAgOyBzdGF0ZSA9IHRvZG9fc3RhY2ssIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IDo6IGRvbmVfc3RhY2tcbiAgICAgICAgICAgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiB0b2RvX3N0YWNrLCBkb25lX3N0YWNrIH1cbiAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgZG9uZV9zdGFjayB9KVxuICAgIHwgW10gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgZG9uZV9zdGFjayB0aGVuIERvbmUgZWxzZSBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiBkb25lX3N0YWNrLCBbXSB9XG4gIGluXG4gIGxldCBzdGF0ZSA9IGxpc3QsIFtdIGluXG4gIFNlcXVlbmNlIHsgc3RhdGU7IG5leHQgfVxuOztcblxubGV0IGludGVybGVhdmUgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IGYxIH0pID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmMiBzMiB3aXRoXG4gICAgICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICBZaWVsZFxuICAgICAgICAgICB7IHZhbHVlID0geFxuICAgICAgICAgICA7IHN0YXRlID0gdG9kb19zdGFjaywgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiBkb25lX3N0YWNrLCBzMVxuICAgICAgICAgICB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSB0b2RvX3N0YWNrLCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IGRvbmVfc3RhY2ssIHMxIH1cbiAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEgfSlcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggZjEgczEsIGRvbmVfc3RhY2sgd2l0aFxuICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHQ7IHN0YXRlID0gczEgfSwgXyAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgKHQgOjogZG9uZV9zdGFjayksIFtdLCBzMSB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBfIC0+IFNraXAgeyBzdGF0ZSA9IExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSB9XG4gICAgICAgfCBEb25lLCBfIDo6IF8gLT4gU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxIH1cbiAgICAgICB8IERvbmUsIFtdIC0+IERvbmUpXG4gIGluXG4gIGxldCBzdGF0ZSA9IFtdLCBbXSwgczEgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZTsgbmV4dCB9XG47O1xuXG5sZXQgaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QgczEgczIgPVxuICBtYXAgczEgfmY6KGZ1biB4MSAtPiBtYXAgczIgfmY6KGZ1biB4MiAtPiB4MSwgeDIpKSB8PiBpbnRlcmxlYXZlXG47O1xuXG5sZXQgb2Zfc2VxIChzZXEgOiBfIFN0ZGxpYi5TZXEudCkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpzZXEgfmY6KGZ1biBzZXEgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IERvbmVcbiAgICB8IENvbnMgKGhkLCB0bCkgLT4gWWllbGQgeyB2YWx1ZSA9IGhkOyBzdGF0ZSA9IHRsIH0pXG47O1xuXG5sZXQgdG9fc2VxIChTZXF1ZW5jZSB7IHN0YXRlOyBuZXh0IH0pID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBuZXh0IHN0YXRlIHdpdGhcbiAgICB8IERvbmUgLT4gU3RkbGliLlNlcS5OaWxcbiAgICB8IFNraXAgeyBzdGF0ZSB9IC0+IGxvb3Agc3RhdGVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBoZDsgc3RhdGUgfSAtPiBTdGRsaWIuU2VxLkNvbnMgKGhkLCBmdW4gKCkgLT4gbG9vcCBzdGF0ZSlcbiAgaW5cbiAgZnVuICgpIC0+IGxvb3Agc3RhdGVcbjs7XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnZWx0IHN0ZXBzID0gV3JhcCBvZiAoJ2VsdCwgdW5pdCAtPiAnZWx0IHN0ZXBzKSBTdGVwLnRcblxuICBsZXQgdW53cmFwIChXcmFwIHN0ZXApID0gc3RlcFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlbHQpIHQgPSAoJ2EgLT4gJ2VsdCBzdGVwcykgLT4gJ2VsdCBzdGVwc1xuXG4gICAgbGV0IHJldHVybiB4IGsgPSBrIHhcblxuICAgIGxldCBiaW5kIG0gfmYgayA9XG4gICAgICBtIChmdW4gYSAtPlxuICAgICAgICBsZXQgbScgPSBmIGEgaW5cbiAgICAgICAgbScgaylcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBtIH5mIGsgPSBtIChmdW4gYSAtPiBrIChmIGEpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoVClcblxuICBsZXQgeWllbGQgZSBrID0gV3JhcCAoWWllbGQgeyB2YWx1ZSA9IGU7IHN0YXRlID0gayB9KVxuICBsZXQgdG9fc3RlcHMgdCA9IHQgKGZ1biAoKSAtPiBXcmFwIERvbmUpXG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBkZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIGYgLT4gV3JhcCAoWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gKGZ1biAoKSAtPiBrICgpIGYpIH0pKVxuICAgICAgfmZpbmlzaDpyZXR1cm5cbiAgOztcblxuICBsZXQgcnVuIHQgPVxuICAgIGxldCBpbml0ICgpID0gdG9fc3RlcHMgdCBpblxuICAgIGxldCBmIHRodW5rID0gdW53cmFwICh0aHVuayAoKSkgaW5cbiAgICB1bmZvbGRfc3RlcCB+aW5pdCB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGVcblxubW9kdWxlIE9mX3NleHBhYmxlXG4gICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUxXG4gICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMlxuICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTNcbiAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zdHJpbmdhYmxlIChNIDogU3RyaW5nYWJsZS5TKSA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG53aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogTS50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIHN0cmluZ19zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX2FycmF5XG5cbmxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMDVfKVxuICAgICAgOiAoKChhX18wMDVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8pIC0+IChhX18wMDVfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XyB0KSAtPlxuICAgIGdsb2JhbGl6ZV9hcnJheVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGFycmF5X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2FycmF5XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gYXJyYXlfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbigqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBuZXcgaW4tcGxhY2UsIGNvbnN0YW50IGhlYXAgc29ydGluZyBhbGdvcml0aG0gdG8gcmVwbGFjZSB0aGVcbiAgIG9uZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMuICBJdHMgb25seSBwdXJwb3NlIGlzIHRvIGJlIGZhc3RlciAoaG9wZWZ1bGx5XG4gICBzdHJpY3RseSBmYXN0ZXIpIHRoYW4gdGhlIGJhc2Ugc29ydCBhbmQgc3RhYmxlX3NvcnQuXG5cbiAgIEF0IGEgaGlnaCBsZXZlbCB0aGUgYWxnb3JpdGhtIGlzOlxuICAgLSBwaWNrIHR3byBwaXZvdCBwb2ludHMgYnk6XG4gICAtIHBpY2sgNSBhcmJpdHJhcnkgZWxlbWVudHMgZnJvbSB0aGUgYXJyYXlcbiAgIC0gc29ydCB0aGVtIHdpdGhpbiB0aGUgYXJyYXlcbiAgIC0gdGFrZSB0aGUgZWxlbWVudHMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIG1pZGRsZSBlbGVtZW50IG9mIHRoZSBzb3J0IGFzIHRoZSBwaXZvdHNcbiAgIC0gc29ydCB0aGUgYXJyYXkgd2l0aDpcbiAgIC0gYWxsIGVsZW1lbnRzIGxlc3MgdGhhbiBwaXZvdDEgdG8gdGhlIGxlZnQgKHJhbmdlIDEpXG4gICAtIGFsbCBlbGVtZW50cyA+PSBwaXZvdDEgYW5kIDw9IHBpdm90MiBpbiB0aGUgbWlkZGxlIChyYW5nZSAyKVxuICAgLSBhbGwgZWxlbWVudHMgPiBwaXZvdDIgdG8gdGhlIHJpZ2h0IChyYW5nZSAzKVxuICAgLSBpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgZXF1YWwsIHRoZW4gdGhlIG1pZGRsZSByYW5nZSBpcyBzb3J0ZWQsIHNvIGlnbm9yZSBpdFxuICAgLSByZWN1cnNlIGludG8gcmFuZ2UgMSwgMiAoaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIHVuZXF1YWwpLCBhbmQgM1xuICAgLSBkdXJpbmcgcmVjdXJzaW9uIHRoZXJlIGFyZSB0d28gaW5mbGVjdGlvbiBwb2ludHM6XG4gICAtIGlmIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IHJhbmdlIGlzIHNtYWxsLCB1c2UgaW5zZXJ0aW9uIHNvcnQgdG8gc29ydCBpdFxuICAgLSBpZiB0aGUgc3RhY2sgZGVwdGggaXMgbGFyZ2UsIHNvcnQgdGhlIHJhbmdlIHdpdGggaGVhcC1zb3J0IHRvIGF2b2lkIG5eMiB3b3JzdC1jYXNlXG4gICAgIGJlaGF2aW9yXG5cbiAgIFNlZSB0aGUgZm9sbG93aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uOlxuICAgLSBcIkR1YWwtUGl2b3QgUXVpY2tzb3J0XCIgYnkgVmxhZGltaXIgWWFyb3NsYXZza2l5LlxuICAgICBBdmFpbGFibGUgYXRcbiAgICAgaHR0cDovL3d3dy5rcmljaGUuY29tLmFyL3Jvb3QvcHJvZ3JhbW1pbmcvc3BhY2VUaW1lQ29tcGxleGl0eS9EdWFsUGl2b3RRdWlja3NvcnQucGRmXG4gICAtIFwiUXVpY2tzb3J0IGlzIE9wdGltYWxcIiBieSBTZWRnZXdpY2sgYW5kIEJlbnRsZXkuXG4gICAgIFNsaWRlcyBhdCBodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzL3RhbGtzL1F1aWNrc29ydElzT3B0aW1hbC5wZGZcbiAgIC0gaHR0cDovL3d3dy5zb3J0aW5nLWFsZ29yaXRobXMuY29tL3F1aWNrLXNvcnQtMy13YXkgKilcblxubW9kdWxlIFNvcnRlciAoUyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gICAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IHN3YXAgYXJyIGkgaiA9XG4gICAgbGV0IHRtcCA9IGdldCBhcnIgaSBpblxuICAgIHNldCBhcnIgaSAoZ2V0IGFyciBqKTtcbiAgICBzZXQgYXJyIGogdG1wXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgU29ydCA9IHNpZ1xuICAgIHZhbCBzb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gbGVmdDppbnQgKCogbGVmdG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHJpZ2h0OmludCAoKiByaWdodG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHVuaXRcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnNlcnRpb25fc29ydCAqKVxuICBtb2R1bGUgSW5zZXJ0aW9uX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4gaS0xXSBpcyBzb3J0ZWRcbiAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4gcG9zXSBpcyBzb3J0ZWQgYW5kIGNvbnRhaW5zIG9ubHkgZWxlbWVudHMgPiB2XG4gICAgICAgMy4gIGFycltpXSBtYXkgYmUgdGhvdWdodCBvZiBhcyBjb250YWluaW5nIHZcbiAgICAqKVxuICAgIGxldCByZWMgaW5zZXJ0X2xvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGkgdiA9XG4gICAgICBsZXQgaV9uZXh0ID0gaSAtIDEgaW5cbiAgICAgIGlmIGlfbmV4dCA+PSBsZWZ0ICYmIGNvbXBhcmUgKGdldCBhcnIgaV9uZXh0KSB2ID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldCBhcnIgaSAoZ2V0IGFyciBpX25leHQpO1xuICAgICAgICBpbnNlcnRfbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaV9uZXh0IHYpXG4gICAgICBlbHNlIGlcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICAgIFthcnJdIGlzIHNvcnRlZCBmcm9tIFtsZWZ0XSB0byBbcG9zIC0gMV0sIGluY2x1c2l2ZSAqKVxuICAgICAgZm9yIHBvcyA9IGxlZnQgKyAxIHRvIHJpZ2h0IGRvXG4gICAgICAgIGxldCB2ID0gZ2V0IGFyciBwb3MgaW5cbiAgICAgICAgbGV0IGZpbmFsX3BvcyA9IGluc2VydF9sb29wIGFyciB+bGVmdCB+Y29tcGFyZSBwb3MgdiBpblxuICAgICAgICBzZXQgYXJyIGZpbmFsX3BvcyB2XG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFwc29ydCAqKVxuICBtb2R1bGUgSGVhcF9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgIHJvb3QncyBjaGlsZHJlbiBhcmUgYm90aCBlaXRoZXIgcm9vdHMgb2YgbWF4LWhlYXBzIG9yID4gcmlnaHQgKilcbiAgICBsZXQgcmVjIGhlYXBpZnkgYXJyIH5jb21wYXJlIHJvb3QgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCByZWxhdGl2ZV9yb290ID0gcm9vdCAtIGxlZnQgaW5cbiAgICAgIGxldCBsZWZ0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAxIGluXG4gICAgICBsZXQgcmlnaHRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDIgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgbGVmdF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIGxlZnRfY2hpbGQpIChnZXQgYXJyIHJvb3QpID4gMFxuICAgICAgICB0aGVuIGxlZnRfY2hpbGRcbiAgICAgICAgZWxzZSByb290XG4gICAgICBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiByaWdodF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIHJpZ2h0X2NoaWxkKSAoZ2V0IGFyciBsYXJnZXN0KSA+IDBcbiAgICAgICAgdGhlbiByaWdodF9jaGlsZFxuICAgICAgICBlbHNlIGxhcmdlc3RcbiAgICAgIGluXG4gICAgICBpZiBsYXJnZXN0IDw+IHJvb3RcbiAgICAgIHRoZW4gKFxuICAgICAgICBzd2FwIGFyciByb290IGxhcmdlc3Q7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxhcmdlc3QgfmxlZnQgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIEVsZW1lbnRzIGluIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgYXJyYXkgYXJlIGFscmVhZHkgaGVhcHMgb2Ygc2l6ZSAxLiAgV2UgbW92ZVxuICAgICAgICAgdGhyb3VnaCB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgYXJyYXkgZnJvbSBiYWNrIHRvIGZyb250IGV4YW1pbmluZyB0aGUgZWxlbWVudCBhdFxuICAgICAgICAgaGFuZCwgYW5kIHRoZSBsZWZ0IGFuZCByaWdodCBjaGlsZHJlbiwgZml4aW5nIHRoZSBoZWFwIHByb3BlcnR5IGFzIHdlIGdvLiAqKVxuICAgICAgZm9yIGkgPSAobGVmdCArIHJpZ2h0KSAvIDIgZG93bnRvIGxlZnQgZG9cbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgaSB+bGVmdCB+cmlnaHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ7XG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uLiBpXSBpcyBhIG1heC1oZWFwIEhcbiAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLi4gcmlnaHRdIGlzIHNvcnRlZCAoY2FsbCBpdCBTKVxuICAgICAgICAgMy4gIGV2ZXJ5IGVsZW1lbnQgb2YgSCBpcyBsZXNzIHRoYW4gZXZlcnkgZWxlbWVudCBvZiBTICopXG4gICAgICBmb3IgaSA9IHJpZ2h0IGRvd250byBsZWZ0ICsgMSBkb1xuICAgICAgICBzd2FwIGFyciBsZWZ0IGk7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxlZnQgfmxlZnQgfnJpZ2h0OihpIC0gMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc29ydCAqKVxuICBtb2R1bGUgSW50cm9fc29ydCA6IHNpZ1xuICAgIGluY2x1ZGUgU29ydFxuXG4gICAgdmFsIGZpdmVfZWxlbWVudF9zb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIG0xIG0yIG0zIG00IG01ID1cbiAgICAgIGxldCBjb21wYXJlX2FuZF9zd2FwIGkgaiA9XG4gICAgICAgIGlmIGNvbXBhcmUgKGdldCBhcnIgaSkgKGdldCBhcnIgaikgPiAwIHRoZW4gc3dhcCBhcnIgaSBqXG4gICAgICBpblxuICAgICAgKCogT3B0aW1hbCA1LWVsZW1lbnQgc29ydGluZyBuZXR3b3JrOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgMS0tby0tLS0tby0tLS0tby0tLS0tLS0tLS0tLS0tMVxuICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfFxuICAgICAgICAgICAgMi0tby0tLS0tfC0tby0tfC0tLS0tby0tby0tLS0tMlxuICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfCAgICAgfCAgfFxuICAgICAgICAgICAgMy0tLS0tLS0tby0tby0tfC0tby0tfC0tby0tLS0tM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfFxuICAgICAgICAgICAgNC0tLS0tby0tLS0tLS0tby0tby0tfC0tLS0tby0tNFxuICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfFxuICAgICAgICAgICAgNS0tLS0tby0tLS0tLS0tLS0tLS0tby0tLS0tby0tNVxuICAgICAgICAgIHZ9ICopXG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0yO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTMgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTUgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICAoKiBjaG9vc2UgcGl2b3RzIGZvciB0aGUgYXJyYXkgYnkgc29ydGluZyA1IGVsZW1lbnRzIGFuZCBleGFtaW5pbmcgdGhlIGNlbnRlciB0aHJlZVxuICAgICAgIGVsZW1lbnRzLiAgVGhlIGdvYWwgaXMgdG8gY2hvb3NlIHR3byBwaXZvdHMgdGhhdCB3aWxsIGVpdGhlcjpcbiAgICAgICAtIGJyZWFrIHRoZSByYW5nZSB1cCBpbnRvIDMgZXZlbiBwYXJ0aXRpb25zXG4gICAgICAgICBvclxuICAgICAgIC0gZWxpbWluYXRlIGEgY29tbW9ubHkgYXBwZWFyaW5nIGVsZW1lbnQgYnkgc29ydGluZyBpdCBpbnRvIHRoZSBjZW50ZXIgcGFydGl0aW9uXG4gICAgICAgICBieSBpdHNlbGZcbiAgICAgICAgIFRvIHRoaXMgZW5kIHdlIGxvb2sgYXQgdGhlIGNlbnRlciAzIGVsZW1lbnRzIG9mIHRoZSA1IGFuZCByZXR1cm4gcGFpcnMgb2YgZXF1YWxcbiAgICAgICAgIGVsZW1lbnRzIG9yIHRoZSB3aWRlc3QgcmFuZ2UgKilcbiAgICBsZXQgY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHNpeHRoID0gKHJpZ2h0IC0gbGVmdCkgLyA2IGluXG4gICAgICBsZXQgbTEgPSBsZWZ0ICsgc2l4dGggaW5cbiAgICAgIGxldCBtMiA9IG0xICsgc2l4dGggaW5cbiAgICAgIGxldCBtMyA9IG0yICsgc2l4dGggaW5cbiAgICAgIGxldCBtNCA9IG0zICsgc2l4dGggaW5cbiAgICAgIGxldCBtNSA9IG00ICsgc2l4dGggaW5cbiAgICAgIGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZSBtMSBtMiBtMyBtNCBtNTtcbiAgICAgIGxldCBtMl92YWwgPSBnZXQgYXJyIG0yIGluXG4gICAgICBsZXQgbTNfdmFsID0gZ2V0IGFyciBtMyBpblxuICAgICAgbGV0IG00X3ZhbCA9IGdldCBhcnIgbTQgaW5cbiAgICAgIGlmIGNvbXBhcmUgbTJfdmFsIG0zX3ZhbCA9IDBcbiAgICAgIHRoZW4gbTJfdmFsLCBtM192YWwsIHRydWVcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBtM192YWwgbTRfdmFsID0gMFxuICAgICAgdGhlbiBtM192YWwsIG00X3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBtMl92YWwsIG00X3ZhbCwgZmFsc2VcbiAgICA7O1xuXG4gICAgbGV0IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcGl2b3QxLCBwaXZvdDIsIHBpdm90c19lcXVhbCA9IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIGxlZnQgPD0gbCA8IHIgPD0gcmlnaHRcbiAgICAgICAgIDIuICBsIDw9IHAgPD0gclxuICAgICAgICAgMy4gIGwgPD0geCA8IHAgICAgIGltcGxpZXMgYXJyW3hdID49IHBpdm90MVxuICAgICAgICAgYW5kIGFyclt4XSA8PSBwaXZvdDJcbiAgICAgICAgIDQuICBsZWZ0IDw9IHggPCBsICBpbXBsaWVzIGFyclt4XSA8IHBpdm90MVxuICAgICAgICAgNS4gIHIgPCB4IDw9IHJpZ2h0IGltcGxpZXMgYXJyW3hdID4gcGl2b3QyICopXG4gICAgICBsZXQgcmVjIGxvb3AgbCBwIHIgPVxuICAgICAgICBsZXQgcHYgPSBnZXQgYXJyIHAgaW5cbiAgICAgICAgaWYgY29tcGFyZSBwdiBwaXZvdDEgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHN3YXAgYXJyIHAgbDtcbiAgICAgICAgICBjb250IChsICsgMSkgKHAgKyAxKSByKVxuICAgICAgICBlbHNlIGlmIGNvbXBhcmUgcHYgcGl2b3QyID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBsb29wIGludmFyaWFudHM6ICBzYW1lIGFzIHRob3NlIG9mIHRoZSBvdXRlciBsb29wICopXG4gICAgICAgICAgbGV0IHJlYyBzY2FuX2JhY2t3YXJkcyByID1cbiAgICAgICAgICAgIGlmIHIgPiBwICYmIGNvbXBhcmUgKGdldCBhcnIgcikgcGl2b3QyID4gMCB0aGVuIHNjYW5fYmFja3dhcmRzIChyIC0gMSkgZWxzZSByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgciA9IHNjYW5fYmFja3dhcmRzIHIgaW5cbiAgICAgICAgICBzd2FwIGFyciByIHA7XG4gICAgICAgICAgY29udCBsIHAgKHIgLSAxKSlcbiAgICAgICAgZWxzZSBjb250IGwgKHAgKyAxKSByXG4gICAgICBhbmQgY29udCBsIHAgciA9IGlmIHAgPiByIHRoZW4gbCwgciBlbHNlIGxvb3AgbCBwIHIgaW5cbiAgICAgIGxldCBsLCByID0gY29udCBsZWZ0IGxlZnQgcmlnaHQgaW5cbiAgICAgIGwsIHIsIHBpdm90c19lcXVhbFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBsZW4gPSByaWdodCAtIGxlZnQgKyAxIGluXG4gICAgICAoKiBUaGlzIHRha2VzIGNhcmUgb2Ygc29tZSBlZGdlIGNhc2VzLCBzdWNoIGFzIGxlZnQgPiByaWdodCBvciB2ZXJ5IHNob3J0IGFycmF5cyxcbiAgICAgICAgIHNpbmNlIEluc2VydGlvbl9zb3J0LnNvcnQgaGFuZGxlcyB0aGVzZSBjYXNlcyBwcm9wZXJseS4gIFRodXMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgbWFrZSBzdXJlIHRoYXQgbGVmdCBhbmQgcmlnaHQgYXJlIHZhbGlkIGluIHJlY3Vyc2l2ZSBjYWxscy4gKilcbiAgICAgIGlmIGxlbiA8PSAzMlxuICAgICAgdGhlbiBJbnNlcnRpb25fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgaWYgbWF4X2RlcHRoIDwgMFxuICAgICAgdGhlbiBIZWFwX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG1heF9kZXB0aCA9IG1heF9kZXB0aCAtIDEgaW5cbiAgICAgICAgbGV0IGwsIHIsIG1pZGRsZV9zb3J0ZWQgPSBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0OihsIC0gMSk7XG4gICAgICAgIGlmIG5vdCBtaWRkbGVfc29ydGVkIHRoZW4gaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDpsIH5yaWdodDpyO1xuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OihyICsgMSkgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBoZWFwX3NvcnRfc3dpdGNoX2RlcHRoID1cbiAgICAgICAgKCogV2UgYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0IGEgcmVjdXJzaW9uIGRlcHRoIG9mIDMyLiBHTlUgaW50cm9zb3J0IHVzZXMgMmxnKG4pLlxuICAgICAgICAgICBUaGUgZXhwZWN0ZWQgcmVjdXJzaW9uIGRlcHRoIGZvciBwZXJmZWN0IDMtd2F5IHNwbGl0cyBpcyBsb2dfMyhuKS5cblxuICAgICAgICAgICBVc2luZyAzMiBtZWFucyBhIGJhbGFuY2VkIDMtd2F5IHNwbGl0IHdvdWxkIHdvcmsgdXAgdG8gM14zMiBlbGVtZW50cyAocm91Z2hseVxuICAgICAgICAgICAyXjUwIG9yIDEwXjE1KS4gR05VIHJlYWNoZXMgYSBkZXB0aCBvZiAzMiBhdCA2NTUzNiBlbGVtZW50cy5cblxuICAgICAgICAgICBGb3Igc21hbGwgYXJyYXlzLCB0aGlzIG1ha2VzIHVzIGxlc3MgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCwgYnV0IHRoZVxuICAgICAgICAgICAzMipOIGNvc3QgYmVmb3JlIHdlIGRvIGlzIG5vdCB0aGF0IG11Y2guXG5cbiAgICAgICAgICAgRm9yIGxhcmdlIGFycmF5cywgdGhpcyBtZWFucyB3ZSBhcmUgbW9yZSBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0XG4gICAgICAgICAgIHNvbWUgcG9pbnQgaWYgd2UgZ2V0IHNvbWUgYmFkIHNwbGl0cyBvciBpZiB0aGUgYXJyYXkgaXMgaHVnZS4gQnV0IHRoYXQncyBvbmx5IGFcbiAgICAgICAgICAgY29uc3RhbnQgZmFjdG9yIGNvc3QgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiByZWN1cnNpb24uXG5cbiAgICAgICAgICAgQWxsIGluIGFsbCwgdGhpcyBzZWVtcyB0byBiZSBhIHNtYWxsIHRyYWRlb2ZmIGFuZCBhdm9pZHMgcGF5aW5nIGEgY29zdCB0b1xuICAgICAgICAgICBjb21wdXRlIGEgbG9nYXJpdGhtIGF0IHRoZSBzdGFydC4gKilcbiAgICAgICAgMzJcbiAgICAgIGluXG4gICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoOmhlYXBfc29ydF9zd2l0Y2hfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNvcnQgP3BvcyA/bGVuIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBhcnIpXG4gICAgaW5cbiAgICBJbnRyb19zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0OnBvcyB+cmlnaHQ6KHBvcyArIGxlbiAtIDEpXG4gIDs7XG5lbmRcbltAQGlubGluZV1cblxubW9kdWxlIFNvcnQgPSBTb3J0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldFxuICAgIGxldCBzZXQgPSB1bnNhZmVfc2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmxldCBzb3J0ID0gU29ydC5zb3J0XG5sZXQgb2ZfYXJyYXkgdCA9IHRcbmxldCB0b19hcnJheSB0ID0gdFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGlzX3NvcnRlZCB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPiAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+PSAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVyZ2UgYTEgYTIgfmNvbXBhcmUgPVxuICBsZXQgbDEgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgbGV0IGwyID0gQXJyYXkubGVuZ3RoIGEyIGluXG4gIGlmIGwxID0gMFxuICB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsMiA9IDBcbiAgdGhlbiBjb3B5IGExXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMiAwKSAodW5zYWZlX2dldCBhMSAobDEgLSAxKSkgPj0gMFxuICB0aGVuIGFwcGVuZCBhMSBhMlxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgMCkgKHVuc2FmZV9nZXQgYTIgKGwyIC0gMSkpID4gMFxuICB0aGVuIGFwcGVuZCBhMiBhMVxuICBlbHNlIChcbiAgICBsZXQgbGVuID0gbDEgKyBsMiBpblxuICAgIGxldCBtZXJnZWQgPSBjcmVhdGUgfmxlbiAodW5zYWZlX2dldCBhMSAwKSBpblxuICAgIGxldCBhMV9pbmRleCA9IHJlZiAwIGluXG4gICAgbGV0IGEyX2luZGV4ID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IHVzZV9hMSA9XG4gICAgICAgIGlmIGwxID0gIWExX2luZGV4XG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBpZiBsMiA9ICFhMl9pbmRleFxuICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgZWxzZSBjb21wYXJlICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KSA8PSAwXG4gICAgICBpblxuICAgICAgaWYgdXNlX2ExXG4gICAgICB0aGVuIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpO1xuICAgICAgICBhMV9pbmRleCA6PSAhYTFfaW5kZXggKyAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KTtcbiAgICAgICAgYTJfaW5kZXggOj0gIWEyX2luZGV4ICsgMSlcbiAgICBkb25lO1xuICAgIG1lcmdlZClcbjs7XG5cbmxldCBjb3B5X21hdHJpeCA9IG1hcCB+Zjpjb3B5XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudCkgW0Bub250YWlsXVxuOztcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwIH5mIHQpKVxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcGkgfmYgdCkpXG5cbmxldCByZXZfaW5wbGFjZSB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICB3aGlsZSAhaSA8ICFqIGRvXG4gICAgc3dhcCB0ICFpICFqO1xuICAgIGluY3IgaTtcbiAgICBkZWNyIGpcbiAgZG9uZVxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IHQgPSBjb3B5IHQgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgYSA6OiBsIC0+XG4gICAgbGV0IGxlbiA9IDEgKyBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgICgqIFdlIHN0YXJ0IGF0IFtsZW4gLSAyXSBiZWNhdXNlIHdlIGFscmVhZHkgcHV0IFthXSBhdCBbdC4obGVuIC0gMSldLiAqKVxuICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIHQuKGkpIDwtIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgdFxuOztcblxuKCogW29mX2xpc3RfbWFwXSBhbmQgW29mX2xpc3RfcmV2X21hcF0gYXJlIGJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBPQ2FtbFxuICAgZGlzdHJpYnV0aW9uLiAqKVxuXG5sZXQgb2ZfbGlzdF9tYXAgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaGQpO1xuICAgICAgICBmaWxsIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgMSB0bCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgb2ZfbGlzdF9tYXBpIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgMCBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgYSBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpIGhkKTtcbiAgICAgICAgZmlsbCBhIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgYSAxIHRsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXAgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXBpIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcGkgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgciA9IHJlZiBbfHxdIGluXG4gIGxldCBrID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCB0IGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgaWYgIWsgPSAwIHRoZW4gciA6PSBjcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGE7XG4gICAgICB1bnNhZmVfc2V0ICFyICFrIGE7XG4gICAgICBpbmNyIGtcbiAgZG9uZTtcbiAgaWYgIWsgPSBsZW5ndGggdCB0aGVuICFyIGVsc2UgaWYgIWsgPiAwIHRoZW4gc3ViIH5wb3M6MCB+bGVuOiFrICFyIGVsc2UgW3x8XVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfaSBhIC0+IGYgYSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9vcHQgdCA9IGZpbHRlcl9tYXAgdCB+ZjpGbi5pZFxuXG5sZXQgcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjIgPVxuICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIHQxIHQyID1cbiAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yXG47O1xuXG5sZXQgaXRlcjJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5pdGVyMl9leG5cIiB0MSB0MjtcbiAgaXRlcmkgdDEgfmY6KGZ1biBpIHgxIC0+IGYgeDEgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkubWFwMl9leG5cIiB0MSB0MjtcbiAgaW5pdCAobGVuZ3RoIHQxKSB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGQyX2V4biB0MSB0MiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9sZDJfZXhuXCIgdDEgdDI7XG4gIGZvbGRpIHQxIH5pbml0IH5mOihmdW4gaSBhYyB4IC0+IGYgYWMgeCAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cblxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSkgW0Bub250YWlsXVxuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHMyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZXhpc3RzMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvcl9hbGwyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPSBsZW5ndGggdDEgPSBsZW5ndGggdDIgJiYgZm9yX2FsbDJfZXhuIHQxIHQyIH5mOmVxdWFsXG5cblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBmaW5kaV9pbnRlcm5hbCB0IH5mIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBpZl9ub3RfZm91bmQgKClcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgKG5vdCAhZm91bmQpICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGYgIWkgdmFsdWVcbiAgICAgIHRoZW4gKFxuICAgICAgICB2YWx1ZV9mb3VuZCA6PSB2YWx1ZTtcbiAgICAgICAgZm91bmQgOj0gdHJ1ZSlcbiAgICAgIGVsc2UgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiAhZm91bmQgdGhlbiBpZl9mb3VuZCB+aTohaSB+dmFsdWU6IXZhbHVlX2ZvdW5kIGVsc2UgaWZfbm90X2ZvdW5kICgpKVxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBTb21lIChpLCB2YWx1ZSkpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBpLCB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZGlfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmRfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZjooZnVuIF9pIHggLT4gZiB4KVxuICAgIH5pZl9mb3VuZDooZnVuIH5pOl8gfnZhbHVlIC0+IHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX2V4bjogbm90IGZvdW5kXCIpKSlcbiAgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgdCB+ZiA9IE9wdGlvbi5tYXAgKGZpbmRpIHQgfmY6KGZ1biBfaSB4IC0+IGYgeCkpIH5mOihmdW4gKF9pLCB4KSAtPiB4KVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiAhaSB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuIDw9IDFcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZXN1bHQgPSByZWYgTm9uZSBpblxuICAgIGxldCBpID0gcmVmIDEgaW5cbiAgICBsZXQgcHJldiA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgY3VyID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBlcXVhbCBjdXIgIXByZXZcbiAgICAgIHRoZW4gKFxuICAgICAgICByZXN1bHQgOj0gU29tZSAoIXByZXYsIGN1cik7XG4gICAgICAgIGkgOj0gbilcbiAgICAgIGVsc2UgKFxuICAgICAgICBwcmV2IDo9IGN1cjtcbiAgICAgICAgaW5jciBpKVxuICAgIGRvbmU7XG4gICAgIXJlc3VsdClcbjs7XG5cbmxldCByZWR1Y2UgdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIGZvciBpID0gMSB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gICAgZG9uZTtcbiAgICBTb21lICFyKVxuOztcblxubGV0IHJlZHVjZV9leG4gdCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSB0IH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBwZXJtdXRlID0gQXJyYXlfcGVybXV0ZS5wZXJtdXRlXG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgYXJyYXlcIlxuICBlbHNlIHQuKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgemlwIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MiB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MikpXG47O1xuXG5sZXQgemlwX2V4biB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDJcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnppcF9leG5cIlxuICBlbHNlIG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuOztcblxubGV0IHVuemlwIHQgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgeCwgeSA9IHQuKDApIGluXG4gICAgbGV0IHJlczEgPSBjcmVhdGUgfmxlbjpuIHggaW5cbiAgICBsZXQgcmVzMiA9IGNyZWF0ZSB+bGVuOm4geSBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IHgsIHkgPSB0LihpKSBpblxuICAgICAgcmVzMS4oaSkgPC0geDtcbiAgICAgIHJlczIuKGkpIDwtIHlcbiAgICBkb25lO1xuICAgIHJlczEsIHJlczIpXG47O1xuXG5sZXQgc29ydGVkX2NvcHkgdCB+Y29tcGFyZSA9XG4gIGxldCB0MSA9IGNvcHkgdCBpblxuICBzb3J0IHQxIH5jb21wYXJlO1xuICB0MVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgKGJvdGggOiBfIEVpdGhlci50IHQpID0gbWFwaSB0IH5mIGluXG4gIGxldCBmaXJzdHMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgeCAtPiBTb21lIHhcbiAgICAgIHwgU2Vjb25kIF8gLT4gTm9uZSlcbiAgaW5cbiAgbGV0IHNlY29uZHMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgXyAtPiBOb25lXG4gICAgICB8IFNlY29uZCB4IC0+IFNvbWUgeClcbiAgaW5cbiAgZmlyc3RzLCBzZWNvbmRzXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCkgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biBfIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biBfIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5sZXQgbGFzdCB0ID0gdC4obGVuZ3RoIHQgLSAxKVxuXG4oKiBDb252ZXJ0IHRvIGEgc2VxdWVuY2UgYnV0IGRvZXMgbm90IGF0dGVtcHQgdG8gcHJvdGVjdCBhZ2FpbnN0IG1vZGlmaWNhdGlvblxuICAgaW4gdGhlIGFycmF5LiAqKVxubGV0IHRvX3NlcXVlbmNlX211dGFibGUgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggdFxuICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSB0LihpKTsgc3RhdGUgPSBpICsgMSB9KVxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19zZXF1ZW5jZV9tdXRhYmxlIChjb3B5IHQpXG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCB0MSB0MiA9XG4gIGlmIGlzX2VtcHR5IHQxIHx8IGlzX2VtcHR5IHQyXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuOihuMSAqIG4yKSAodDEuKDApLCB0Mi4oMCkpIGluXG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIGZvciBpMSA9IDAgdG8gbjEgLSAxIGRvXG4gICAgICBmb3IgaTIgPSAwIHRvIG4yIC0gMSBkb1xuICAgICAgICB0LighcikgPC0gdDEuKGkxKSwgdDIuKGkyKTtcbiAgICAgICAgaW5jciByXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHRyYW5zcG9zZSB0dCA9XG4gIGlmIGxlbmd0aCB0dCA9IDBcbiAgdGhlbiBTb21lIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHdpZHRoID0gbGVuZ3RoIHR0IGluXG4gICAgbGV0IGRlcHRoID0gbGVuZ3RoIHR0LigwKSBpblxuICAgIGlmIGV4aXN0cyB0dCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQgPD4gZGVwdGgpXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChpbml0IGRlcHRoIH5mOihmdW4gZCAtPiBpbml0IHdpZHRoIH5mOihmdW4gdyAtPiB0dC4odykuKGQpKSkpKVxuOztcblxubGV0IHRyYW5zcG9zZV9leG4gdHQgPVxuICBtYXRjaCB0cmFuc3Bvc2UgdHQgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS50cmFuc3Bvc2VfZXhuXCJcbiAgfCBTb21lIHR0JyAtPiB0dCdcbjs7XG5cbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBbfHxdXG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiB0LigwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnQgPSBTb3J0XG4gIG1vZHVsZSBTb3J0ZXIgPSBTb3J0ZXJcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdCBhbGwgdmFsdWVzIG9mIHR5cGUgW3RdIGRvIG5vdCBoYXZlIHRoZSB0YWdcbiAgIFtkb3VibGVfYXJyYXlfdGFnXS4gIFNvbWUgZnVuY3Rpb25zIGJlbG93IGFzc3VtZSB0aGlzIGluIG9yZGVyIHRvIGF2b2lkIHRlc3RpbmcgdGhlXG4gICB0YWcsIGFuZCB3aWxsIHNlZ2ZhdWx0IGlmIHRoaXMgcHJvcGVydHkgZG9lc24ndCBob2xkLiAqKVxudHlwZSB0ID0gU3RkbGliLk9iai50IGFycmF5XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIGFzc2VydCAoU3RkbGliLk9iai50YWcgKFN0ZGxpYi5PYmoucmVwciB0KSA8PiBTdGRsaWIuT2JqLmRvdWJsZV9hcnJheV90YWcpXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoICgqIHdvdWxkIGNoZWNrIGZvciBmbG9hdCBhcnJheXMgaW4gMzIgYml0LCBidXQgd2hhdGV2ZXIgKilcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgU2V4cC5BdG9tXG4gICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgXCI8T2JqX2FycmF5LnQgb2YgbGVuZ3RoIFwiOyBJbnQudG9fc3RyaW5nIChsZW5ndGggdCk7IFwiPlwiIF0pXG47O1xuXG5sZXQgemVyb19vYmogPSBTdGRsaWIuT2JqLnJlcHIgKDAgOiBpbnQpXG5cbigqIFdlIGNhbGwgW0FycmF5LmNyZWF0ZV0gd2l0aCBhIHZhbHVlIHRoYXQgaXMgbm90IGEgZmxvYXQgc28gdGhhdCB0aGUgYXJyYXkgZG9lc24ndCBnZXRcbiAgIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbmxldCBjcmVhdGVfemVybyB+bGVuID0gQXJyYXkuY3JlYXRlIH5sZW4gemVyb19vYmpcbmxldCBlbXB0eSA9IFt8fF1cblxudHlwZSBub3RfYV9mbG9hdCA9XG4gIHwgTm90X2FfZmxvYXRfMFxuICB8IE5vdF9hX2Zsb2F0XzEgb2YgaW50XG5cbmxldCBfbm90X2FfZmxvYXRfMCA9IE5vdF9hX2Zsb2F0XzBcbmxldCBfbm90X2FfZmxvYXRfMSA9IE5vdF9hX2Zsb2F0XzEgNDJcblxubGV0IGdldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gIEl0IGlzIE5PVCBvayB0byB1c2UgW2ludCBhcnJheV0gc2luY2UgKGlmXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgaW5saW5lZCBhbmQgdGhlIGFycmF5IGNvbnRhaW5zIGluLWhlYXAgYm94ZWQgdmFsdWVzKSB3cm9uZyByZWdpc3RlclxuICAgICB0eXBpbmcgbWF5IHJlc3VsdCwgbGVhZGluZyB0byBhIGZhaWx1cmUgdG8gcmVnaXN0ZXIgbmVjZXNzYXJ5IEdDIHJvb3RzLiAqKVxuICBTdGRsaWIuT2JqLnJlcHJcbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gaXMgcmVxdWlyZWQgb24gdGhlIGFycmF5IGJlY2F1c2UgdGhpcyBjb2RlIGJyZWFrcyB0aGUgdXN1YWxcbiAgICAgICBhc3N1bXB0aW9ucyBhYm91dCBhcnJheSBraW5kcyB0aGF0IHRoZSBGbGFtYmRhIDIgb3B0aW1pc2VyIGNhbiBzZWUuICopXG4gICAgKChTeXMub3BhcXVlX2lkZW50aXR5IChTdGRsaWIuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpLihpKVxuICAgICA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxuICBTdGRsaWIuT2JqLnJlcHJcbiAgICAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSlcbiAgICAgICBpXG4gICAgIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogU2FtZSBjb21tZW50IGFzIFt1bnNhZmVfZ2V0XS4gU3lzLm9wYXF1ZV9pZGVudGl0eSBwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbVxuICAgICBwb3RlbnRpYWxseSB3cm9uZ2x5IGd1ZXNzaW5nIHRoZSB0eXBlIG9mIHRoZSBhcnJheSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBlbGVtZW50LCB0aGF0XG4gICAgIGlzIHByZXZlbnQgdGhlIGltcGxpY2F0aW9uOiAoT2JqLnRhZyBvYmogPSBPYmouZG91YmxlX3RhZykgPT4gKE9iai50YWcgdCA9XG4gICAgIE9iai5kb3VibGVfYXJyYXlfdGFnKSB3aGljaCBmbGFtYmRhIGhhcyB0cmllZCBpbiB0aGUgcGFzdCAoYXQgbGVhc3QgdGhhdCdzIGFzc3VtaW5nXG4gICAgIHRoZSBjb21waWxlciByZXNwZWN0cyBTeXMub3BhcXVlX2lkZW50aXR5LCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBjYXNlKS4gKilcbiAgQXJyYXkudW5zYWZlX3NldFxuICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSlcbiAgICBpXG4gICAgKFN0ZGxpYi5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIHNhbWUgYXMgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IGJ1dCBzYWZlICopXG4gIChTeXMub3BhcXVlX2lkZW50aXR5IChTdGRsaWIuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpLihpKVxuICA8LSAoU3RkbGliLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnQgPVxuICAoKiBUaGlzIHNraXBzIFtjYW1sX21vZGlmeV0sIHdoaWNoIGlzIE9LIGlmIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgaW50ZWdlcnMuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBpbnQgYXJyYXkpKVxuICAgIGlcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSBpbnQpXG47O1xuXG4oKiBGb3IgW3NldF0gYW5kIFt1bnNhZmVfc2V0XSwgaWYgYSBwb2ludGVyIGlzIGludm9sdmVkLCB3ZSBmaXJzdCBkbyBhIHBoeXNpY2FsLWVxdWFsaXR5XG4gICB0ZXN0IHRvIHNlZSBpZiB0aGUgcG9pbnRlciBpcyBjaGFuZ2luZy4gIElmIG5vdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyB0aGUgW3NldF0sIHdoaWNoXG4gICBzYXZlcyBhIGNhbGwgdG8gW2NhbWxfbW9kaWZ5XS4gIFdlIHRoaW5rIHRoaXMgcGh5c2ljYWwtZXF1YWxpdHkgdGVzdCBpcyB3b3J0aCBpdFxuICAgYmVjYXVzZSBpdCBpcyB2ZXJ5IGNoZWFwIChib3RoIHZhbHVlcyBhcmUgYWxyZWFkeSBhdmFpbGFibGUgZnJvbSB0aGUgW2lzX2ludF0gdGVzdClcbiAgIGFuZCBiZWNhdXNlIFtjYW1sX21vZGlmeV0gaXMgZXhwZW5zaXZlLiAqKVxuXG5sZXQgc2V0IHQgaSBvYmogPVxuICAoKiBXZSB1c2UgW2dldF0gZmlyc3QgYnV0IHRoZW4gd2UgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBzaW5jZSB3ZSBrbm93IHRoYXQgW2ldIGlzXG4gICAgIHZhbGlkLiAqKVxuICBsZXQgb2xkX29iaiA9IGdldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0IHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBhID0gZ2V0IHQgaSBpblxuICBsZXQgYiA9IGdldCB0IGogaW5cbiAgdW5zYWZlX3NldCB0IGkgYjtcbiAgdW5zYWZlX3NldCB0IGogYVxuOztcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICAoKiBJZiB3ZSBjYW4sIHVzZSBbQXJyYXkuY3JlYXRlXSBkaXJlY3RseS4gRXZlbiB0aG91Z2ggW2lzX2ludF0gY2hlY2sgaXMgc3Vic3VtZWQgYnlcbiAgICAgdGhlIHRhZyBjaGVjaywgY2hlY2tpbmcgaXQgaXMgbXVjaCBmYXN0ZXIsIHNpbmNlIGl0IGF2b2lkcyBhIEMgZnVuY3Rpb24gY2FsbC4gICopXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IHggfHwgU3RkbGliLk9iai50YWcgeCA8PiBTdGRsaWIuT2JqLmRvdWJsZV90YWdcbiAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiB4XG4gIGVsc2UgKFxuICAgICgqIE90aGVyd2lzZSB1c2UgW2NyZWF0ZV96ZXJvXSBhbmQgc2V0IHRoZSBjb250ZW50cyAqKVxuICAgIGxldCB0ID0gY3JlYXRlX3plcm8gfmxlbiBpblxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeFxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCBzaW5nbGV0b24gb2JqID0gY3JlYXRlIH5sZW46MSBvYmpcblxuKCogUHJlLWNvbmRpdGlvbjogdC4oaSkgaXMgYW4gaW50ZWdlci4gKilcbmxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIG9iaiA9XG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2VcbiAgICAoKiBbdC4oaSldIGlzIGFuIGludGVnZXIgYW5kIFtvYmpdIGlzIG5vdCwgc28gd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmVcbiAgICAgICBlcXVhbC4gKilcbiAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50IHQgaSBpbnQgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnRcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgaW50KVxuOztcblxubGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgaSA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgbm90IChTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciAwKVxuOztcblxuKCoqIFt1bnNhZmVfYmxpdF0gaXMgbGlrZSBbQXJyYXkuYmxpdF0sIGV4Y2VwdCBpdCB1c2VzIG91ciBvd24gZm9yLWxvb3AgdG8gYXZvaWRcbiAgICBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlLiAgSXRzIHBlcmZvcm1hbmNlIGlzIHN0aWxsIG5vdCBjb21wYXJhYmxlIHRvIGEgbWVtY3B5LiAqKVxubGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgKCogV2hlbiBbcGh5c19lcXVhbCBzcmMgZHN0XSwgd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIFtkc3RfcG9zIDwgc3JjX3Bvc10gYW5kIGhhdmUgdGhlXG4gICAgIGZvciBsb29wIGdvIGluIHRoZSByaWdodCBkaXJlY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBvdmVyd3JpdGUgZGF0YSB0aGF0IHdlIHN0aWxsIG5lZWRcbiAgICAgdG8gcmVhZC4gIFdoZW4gW25vdCAocGh5c19lcXVhbCBzcmMgZHN0KV0sIGRvaW5nIHRoaXMgaXMgaGFybWxlc3MuICBGcm9tIGFcbiAgICAgbWVtb3J5LXBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIG9uZSBsb29wcyB1cCBvciBkb3duLlxuICAgICBDb25zdGFudC1zdHJpZGUgYWNjZXNzLCBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzaG91bGQgYmUgaW5kaXN0aW5ndWlzaGFibGUgKGF0IGxlYXN0IG9uXG4gICAgIGFuIGludGVsIGk3KS4gIFNvLCB3ZSBkb24ndCBkbyBhIGNoZWNrIGZvciBbcGh5c19lcXVhbCBzcmMgZHN0XSBhbmQgYWx3YXlzIGxvb3AgdXAgaW5cbiAgICAgdGhhdCBjYXNlLiAqKVxuICBpZiBkc3RfcG9zIDwgc3JjX3Bvc1xuICB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbjs7XG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZV96ZXJvXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZV96ZXJvIH5sZW46KGxlbmd0aCBzcmMpIGluXG4gIGJsaXRvIH5zcmMgfmRzdCAoKTtcbiAgZHN0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFdBUk5JTkc6XG4gICBXZSB1c2Ugbm9uLW1lbW9yeS1zYWZlIHRoaW5ncyB0aHJvdWdob3V0IHRoZSBbVHJ1c3RlZF0gbW9kdWxlLlxuICAgTW9zdCBvZiBpdCBpcyBvbmx5IHNhZmUgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBzaWduYXR1cmUgKGUuZy4gZXhwb3NpbmdcbiAgIFt2YWwgY29weSA6ICdhIHQgLT4gJ2IgdF0gd291bGQgYmUgYSBiaWcgbWlzdGFrZSkuICopXG5tb2R1bGUgVHJ1c3RlZCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9vYmpfYXJyYXkgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHN3YXAgOiBfIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBsZW5ndGggOiAoJ2EgdFtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIEJsaXQuYmxpdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgOiBfIHQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBPYmpfYXJyYXkudFxuXG4gIGxldCBlbXB0eSA9IE9ial9hcnJheS5lbXB0eVxuICBsZXQgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlX29ial9hcnJheSB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZSB+bGVuIHggPSBPYmpfYXJyYXkuY3JlYXRlIH5sZW4gKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgc2luZ2xldG9uIHggPSBPYmpfYXJyYXkuc2luZ2xldG9uIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHN3YXAgdCBpIGogPSBPYmpfYXJyYXkuc3dhcCB0IGkgalxuICBsZXQgZ2V0IGFyciBpID0gU3RkbGliLk9iai5vYmogKE9ial9hcnJheS5nZXQgYXJyIGkpXG4gIGxldCBzZXQgYXJyIGkgeCA9IE9ial9hcnJheS5zZXQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2dldCBhcnIgaSA9IFN0ZGxpYi5PYmoub2JqIChPYmpfYXJyYXkudW5zYWZlX2dldCBhcnIgaSlcbiAgbGV0IHVuc2FmZV9zZXQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9zZXRfaW50IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnQgYXJyIGkgeFxuXG4gIGxldCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHhcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBPYmpfYXJyYXkubGVuZ3RoXG4gIGxldCB1bnNhZmVfYmxpdCA9IE9ial9hcnJheS51bnNhZmVfYmxpdFxuICBsZXQgY29weSA9IE9ial9hcnJheS5jb3B5XG5cbiAgbGV0IHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID0gT2JqX2FycmF5LnNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA9IE9ial9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlclxuZW5kXG5cbmluY2x1ZGUgVHJ1c3RlZFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKFN0ZGxpYi5PYmoudGFnIChTdGRsaWIuT2JqLnJlcHIgdCkgPD4gU3RkbGliLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuOztcblxubGV0IGluaXQgbCB+ZiA9XG4gIGlmIGwgPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJVbmlmb3JtX2FycmF5LmluaXRcIlxuICBlbHNlIChcbiAgICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46bCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgcmVzKVxuOztcblxubGV0IG9mX2FycmF5IGFyciA9IGluaXQgfmY6KEFycmF5LnVuc2FmZV9nZXQgYXJyKSAoQXJyYXkubGVuZ3RoIGFycikgW0Bub250YWlsXVxubGV0IG1hcCBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpIFtAbm9udGFpbF1cbmxldCBtYXBpIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmIGkgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKSBbQG5vbnRhaWxdXG5cbmxldCBpdGVyIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBmb2xkaSBhIH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IH5mOihnZXQgdCkgKGxlbmd0aCB0KVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgeCAtPiBzZXQgcmVzIGkgeCk7XG4gIHJlc1xuOztcblxuKCogSXQgaXMgbm90IHNhZmUgZm9yIFt0b19hcnJheV0gdG8gYmUgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBjb2RlIHRoYXRcbiAgIHJlbGllcyBvbiBbZmxvYXQgYXJyYXldcyBiZWluZyB1bmJveGVkLCBmb3IgZXhhbXBsZSBpbiBbYmluX3dyaXRlX2FycmF5XS4gKilcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiBmYWxzZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgfmYgKGkgLSAxKVxuICBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID0gaWYgaSA8IDAgdGhlbiB0cnVlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpICYmIGxvb3AgdCB+ZiAoaSAtIDEpIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0MSBpblxuICBpZiBsZW5ndGggdDIgPD4gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyX2V4blwiO1xuICBpbml0IGxlbiB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKGdyYW1tYXIgOiBlbHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogZWx0IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxuaW5jbHVkZVxuICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAoQXJyYXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gZW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIChnZXQgdCAwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBwcHhfY29tcGFyZSBbY29tcGFyZV9hcnJheV0gYnV0IHVzZXMgb3VyIFt1bnNhZmVfZ2V0XSBhbmQgW2xlbmd0aF0uICopXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCBhIGIgPVxuICBpZiBwaHlzX2VxdWFsIGEgYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBsZW5ndGggYiBpblxuICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgaWYgcmV0IDw+IDBcbiAgICB0aGVuIHJldFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsID0gdW5zYWZlX2dldCBhIGlcbiAgICAgICAgICBhbmQgciA9IHVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCkpXG47O1xuXG5tb2R1bGUgU29ydCA9IEFycmF5LlByaXZhdGUuU29ydGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0XG4gICAgbGV0IHNldCA9IHVuc2FmZV9zZXRcbiAgZW5kKVxuXG5sZXQgc29ydCA9IFNvcnQuc29ydFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgY2VpbCA9IFN0ZGxpYi5jZWlsXG5sZXQgZmxvb3IgPSBTdGRsaWIuZmxvb3JcbmxldCBtb2RfZmxvYXQgPSBTdGRsaWIubW9kX2Zsb2F0XG5sZXQgbW9kZiA9IFN0ZGxpYi5tb2RmXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ1xubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBtYXhfZmluaXRlX3ZhbHVlID0gU3RkbGliLm1heF9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxubGV0IGNsYXNzaWZ5X2Zsb2F0ID0gU3RkbGliLmNsYXNzaWZ5X2Zsb2F0XG5sZXQgYWJzX2Zsb2F0ID0gU3RkbGliLmFic19mbG9hdFxubGV0IGlzX2ludGVnZXIgPSBTdGRsaWIuRmxvYXQuaXNfaW50ZWdlclxubGV0ICggKiogKSA9IFN0ZGxpYi4oICoqIClcblxubGV0ICggJS4gKSBhIGIgPVxuICAoKiBSYWlzZSBpbiBjYXNlIG9mIGEgbmVnYXRpdmUgbW9kdWx1cywgYXMgZG9lcyBJbnQuKCAlICkuICopXG4gIGlmIGIgPCAwLlxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCIlZiAlJSAlZiBpbiBmbG9hdDAubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCIgYSBiICgpO1xuICBsZXQgbSA9IFN0ZGxpYi5tb2RfZmxvYXQgYSBiIGluXG4gICgqIFByb2R1Y2UgYSBub24tbmVnYXRpdmUgcmVzdWx0IGluIGFuYWxvZ3kgd2l0aCBJbnQuKCAlICkuICopXG4gIGlmIG0gPCAwLiB0aGVuIG0gKy4gYiBlbHNlIG1cbjs7XG5cbigqIFRoZSBiaXRzIG9mIElOUklBJ3MgW1BlcnZhc2l2ZXNdIHRoYXQgd2UganVzdCB3YW50IHRvIGV4cG9zZSBpbiBbRmxvYXRdLiBNb3N0IGFyZVxuICAgYWxyZWFkeSBkZXByZWNhdGVkIGluIFtQZXJ2YXNpdmVzXSwgYW5kIGV2ZW50dWFsbHkgYWxsIG9mIHRoZW0gc2hvdWxkIGJlLiAqKVxuaW5jbHVkZSAoXG4gIFN0ZGxpYiA6XG4gIHNpZ1xuICAgIGV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuXG4gICAgZXh0ZXJuYWwgbGRleHBcbiAgICAgIDogIChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgICAtPiAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiXG4gICAgW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gIGVuZClcblxuKCogV2UgbmVlZCB0aGlzIGluZGlyZWN0aW9uIGJlY2F1c2UgdGhlc2UgYXJlIGV4cG9zZWQgYXMgXCJ2YWxcIiBpbnN0ZWFkIG9mIFwiZXh0ZXJuYWxcIiAqKVxubGV0IGZyZXhwID0gZnJleHBcbmxldCBsZGV4cCA9IGxkZXhwXG5sZXQgaXNfbmFuIHggPSAoeCA6IGZsb2F0KSA8PiB4XG5cbigqIEFuIG9yZGVyLXByZXNlcnZpbmcgYmlqZWN0aW9uIGJldHdlZW4gYWxsIGZsb2F0cyBleGNlcHQgZm9yIE5hTnMsIGFuZCA5OS45NSUgb2ZcbiAgIGludDY0cy5cblxuICAgTm90ZSB3ZSBkb24ndCBkaXN0aW5ndWlzaCAwLiBhbmQgLTAuIGFzIHNlcGFyYXRlIHZhbHVlcyBoZXJlLCB0aGV5IGJvdGggbWFwIHRvIDBMLCB3aGljaFxuICAgbWFwcyBiYWNrIHRvIDAuXG5cbiAgIFRoaXMgc2hvdWxkIHdvcmsgYm90aCBvbiBsaXR0bGUtZW5kaWFuIGFuZCBoaWdoLWVuZGlhbiBDUFVzLiAgV2lraXBlZGlhIHNheXM6IFwib25cbiAgIG1vZGVybiBzdGFuZGFyZCBjb21wdXRlcnMgKGkuZS4sIGltcGxlbWVudGluZyBJRUVFIDc1NCksIG9uZSBtYXkgaW4gcHJhY3RpY2Ugc2FmZWx5XG4gICBhc3N1bWUgdGhhdCB0aGUgZW5kaWFubmVzcyBpcyB0aGUgc2FtZSBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcyBmb3IgaW50ZWdlcnNcIlxuICAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5kaWFubmVzcyNGbG9hdGluZy1wb2ludF9hbmRfZW5kaWFubmVzcykuXG4qKVxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgPVxuICBpZiBpc19uYW4gdFxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiAoKiBhbHNvIGluY2x1ZGVzIC0wLiAqKVxuICAgIFNvbWUgMExcbiAgZWxzZSBpZiB0ID4gMC5cbiAgdGhlbiBTb21lIChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB0KVxuICBlbHNlIFNvbWUgKFN0ZGxpYi5JbnQ2NC5uZWcgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0ICgtLnQpKSlcbjs7XG5cbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4geCA9IE9wdGlvbi52YWx1ZV9leG4gKHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHgpXG5cbmxldCBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4ID1cbiAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSB4IDBMXG4gIHRoZW4gU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgeFxuICBlbHNlIH4tLihTdGRsaWIuSW50NjQuZmxvYXRfb2ZfYml0cyAoU3RkbGliLkludDY0Lm5lZyB4KSlcbjs7XG5cbmxldCBvbmVfdWxwIGRpciB0ID1cbiAgbWF0Y2ggdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCB3aXRoXG4gIHwgTm9uZSAtPiBTdGRsaWIubmFuXG4gIHwgU29tZSB4IC0+XG4gICAgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXJcbiAgICAgIChTdGRsaWIuSW50NjQuYWRkXG4gICAgICAgICB4XG4gICAgICAgICAobWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICB8IGBVcCAtPiAxTFxuICAgICAgICAgIHwgYERvd24gLT4gLTFMKSlcbjs7XG5cbigqIFt1cHBlcl9ib3VuZF9mb3JfaW50XSBhbmQgW2xvd2VyX2JvdW5kX2Zvcl9pbnRdIGFyZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG1heC9taW4gZmxvYXRcbiAgIHRoYXQgZml0cyBpbiBhIGdpdmVuLXNpemUgaW50ZWdlciB3aGVuIHJvdW5kZWQgdG93YXJkcyAwICh1c2luZyBbaW50X29mX2Zsb2F0XSkuXG5cbiAgIG1heF9pbnQvbWluX2ludCBkZXBlbmQgb24gW251bV9iaXRzXSwgZS5nLiArLy0gMl4zMCwgKy8tIDJeNjIgaWYgMzEtYml0LCA2My1iaXRcbiAgIChyZXNwZWN0aXZlbHkpIHdoaWxlIGZsb2F0IGlzIElFRUUgc3RhbmRhcmQgZm9yIGRvdWJsZSAoNTIgc2lnbmlmaWNhbnQgYml0cykuXG5cbiAgIEluIGFsbCBjYXNlcywgd2Ugd2FudCB0byBndWFyYW50ZWUgdGhhdFxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgPD0geCA8PSB1cHBlcl9ib3VuZF9mb3JfaW50XVxuICAgaWZmIFtpbnRfb2ZfZmxvYXQgeF0gZml0cyBpbiBhbiBpbnQgd2l0aCBbbnVtX2JpdHNdIGJpdHMuXG5cbiAgIFsyICoqIChudW1fYml0cyAtIDEpXSBpcyB0aGUgZmlyc3QgZmxvYXQgZ3JlYXRlciB0aGF0IG1heF9pbnQsIHdlIHVzZSB0aGUgcHJlY2VkaW5nXG4gICBmbG9hdCBhcyB1cHBlciBib3VuZC5cblxuICAgWy0gKDIgKiogKG51bV9iaXRzIC0gMSkpXSBpcyBlcXVhbCB0byBtaW5faW50LlxuICAgRm9yIGxvd2VyIGJvdW5kIHdlIGxvb2sgZm9yIHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXSBzbyB0aGF0XG4gICBbZl0gcm91bmRzIHRvd2FyZCB6ZXJvIHRvIFttaW5faW50XVxuXG4gICBTbyBpbiBwYXJ0aWN1bGFyIHdlIHdpbGwgaGF2ZTpcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IHggPD0gLSAoMiAqKiAoMS14KSldXG4gICBbdXBwZXJfYm91bmRfZm9yX2ludCB4ICA8ICAgIDIgKiogKDEteCkgXVxuKilcbmxldCB1cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgb25lX3VscCBgRG93biAoMi4gKiogZXhwKVxuOztcblxubGV0IGlzX3hfbWludXNfb25lX2V4YWN0IHggPVxuICAoKiBbeCA9IHggLS4gMS5dIGRvZXMgbm90IHdvcmsgd2l0aCB4ODcgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYWNrZW5kICh3aGljaCBpcyB1c2VkXG4gICAgIG9uIDMyLWJpdCBvY2FtbCkgYmVjYXVzZSBvZiA4MC1iaXQgcmVnaXN0ZXIgcHJlY2lzaW9uIG9mIGludGVybWVkaWF0ZSBjb21wdXRhdGlvbnMuXG5cbiAgICAgQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGNvbXB1dGluZyB0aGlzOiBbeCAtLiBvbmVfdWxwIGBEb3duIHggPD0gMS5dIGlzIGFsc28gcHJvbmUgdG9cbiAgICAgdGhlIHNhbWUgcHJlY2lzaW9uIGlzc3VlczogeW91IG5lZWQgdG8gbWFrZSBzdXJlIFt4XSBpcyA2NC1iaXQuXG4gICopXG4gIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBub3QgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHggPSBTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCAoeCAtLiAxLikpXG47O1xuXG5sZXQgbG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIGxldCBtaW5faW50X2FzX2Zsb2F0ID0gfi0uKDIuICoqIGV4cCkgaW5cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBudW1fYml0cyAtIDEgPCA1MyAoKiA1MyA9ICNiaXRzIGluIHRoZSBmbG9hdCdzIG1hbnRpc3NhIHdpdGggc2lnbiBpbmNsdWRlZCAqKVxuICB0aGVuIChcbiAgICAoKiBUaGUgc21hbGxlc3QgZmxvYXQgdGhhdCByb3VuZHMgdG93YXJkcyB6ZXJvIHRvIFttaW5faW50XSBpc1xuICAgICAgIFttaW5faW50IC0gMSArIGVwc2lsb25dICopXG4gICAgYXNzZXJ0IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KTtcbiAgICBvbmVfdWxwIGBVcCAobWluX2ludF9hc19mbG9hdCAtLiAxLikpXG4gIGVsc2UgKFxuICAgICgqIFttaW5faW50X2FzX2Zsb2F0XSBpcyBhbHJlYWR5IHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXS4gKilcbiAgICBhc3NlcnQgKG5vdCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCkpO1xuICAgIG1pbl9pbnRfYXNfZmxvYXQpXG47O1xuXG4oKiBGbG9hdCBjbGFtcGluZyBpcyBzdHJ1Y3R1cmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gY2xhbXBpbmcgZm9yIG90aGVyIHR5cGVzLCBzb1xuICAgdGhhdCB3ZSBnZXQgdGhlIGJlaGF2aW9yIG9mIFtjbGFtcF91bmNoZWNrZWQgbmFuIH5taW4gfm1heCA9IG5hbl0gKGZvciBhbnkgW21pbl0gYW5kXG4gICBbbWF4XSkgZm9yIGZyZWUuXG4qKVxubGV0IGNsYW1wX3VuY2hlY2tlZCAodCA6IGZsb2F0KSB+bWluIH5tYXggPVxuICBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgbWF4IDwgdCB0aGVuIG1heCBlbHNlIHRcbjs7XG5cbmxldCBib3ggPVxuICAoKiBQcmV2ZW50IHBvdGVudGlhbCBjb25zdGFudCBmb2xkaW5nIG9mIFsrLiAwLl0gaW4gdGhlIG5lYXIgb2NhbWxvcHQgZnV0dXJlLiAqKVxuICBsZXQgeCA9IFN5czAub3BhcXVlX2lkZW50aXR5IDAuIGluXG4gIGZ1biBmIC0+IGYgKy4geFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5pbmNsdWRlIENoYXIwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfY2hhciA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9jaGFyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9jaGFyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfY2hhciA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubWFrZSAxIHRcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggcyB3aXRoXG4gICAgfCAxIC0+IHMuWzBdXG4gICAgfCBfIC0+IGZhaWx3aXRoZiBcIkNoYXIub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQ2hhclwiXG4gIGVuZClcblxubGV0IHBwIGZtdCBjID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVDXCIgY1xuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGFsbCA9IEFycmF5LmluaXQgMjU2IH5mOnVuc2FmZV9vZl9pbnQgfD4gQXJyYXkudG9fbGlzdFxuXG5sZXQgaXNfbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfcHJpbnQgPSBmdW5jdGlvblxuICB8ICcgJyAuLiAnficgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnXFx0JyB8ICdcXG4nIHwgJ1xcMDExJyAoKiB2ZXJ0aWNhbCB0YWIgKikgfCAnXFwwMTInICgqIGZvcm0gZmVlZCAqKSB8ICdcXHInIHwgJyAnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19hbHBoYSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbigqIFdyaXRpbmcgdGhlc2Ugb3V0LCBpbnN0ZWFkIG9mIGNhbGxpbmcgW2lzX2FscGhhXSBhbmQgW2lzX2RpZ2l0XSwgcmVkdWNlc1xuICAgcnVudGltZSBieSBhcHByb3guIDMwJSAqKVxubGV0IGlzX2FscGhhbnVtID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfZGlnaXRfdW5zYWZlIHQgPSB0b19pbnQgdCAtIHRvX2ludCAnMCdcblxubGV0IGdldF9kaWdpdF9leG4gdCA9XG4gIGlmIGlzX2RpZ2l0IHRcbiAgdGhlbiBnZXRfZGlnaXRfdW5zYWZlIHRcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLmdldF9kaWdpdF9leG4gJUM6IG5vdCBhIGRpZ2l0XCIgdCAoKVxuOztcblxubGV0IGdldF9kaWdpdCB0ID0gaWYgaXNfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9kaWdpdF91bnNhZmUgdCkgZWxzZSBOb25lXG5cbmxldCBpc19oZXhfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF9sb3dlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfdXBwZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdF9leG4gPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnMCdcbiAgfCAnYScgLi4gJ2YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ2EnICsgMTBcbiAgfCAnQScgLi4gJ0YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ0EnICsgMTBcbiAgfCB0IC0+XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJDaGFyLmdldF9oZXhfZGlnaXRfZXhuOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiXG4gICAgICAgICBbIFwiY2hhclwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IGdldF9oZXhfZGlnaXQgdCA9IGlmIGlzX2hleF9kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2hleF9kaWdpdF9leG4gdCkgZWxzZSBOb25lXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgYzEgYzIgPSBjb21wYXJlIChsb3dlcmNhc2UgYzEpIChsb3dlcmNhc2UgYzIpXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfY2hhciBzdGF0ZSAobG93ZXJjYXNlIHQpXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0MC5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbigqIENvbnN0cnVjdCBhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAyNTYsIG1hcHBpbmcgZXZlcnkgaW5wdXQgY2hhcmFjdGVyIGNvZGUgdG9cbiAgIGl0cyBjb3JyZXNwb25kaW5nIG91dHB1dCBjaGFyYWN0ZXIuXG5cbiAgIEJlbmNobWFya3MgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuIHRoZSBsYW1iZGEgKGluY2x1ZGluZyBjb3N0IG9mXG4gICB0aGlzIGZ1bmN0aW9uKSwgZXZlbiBpZiB0YXJnZXQvcmVwbGFjZW1lbnQgYXJlIGp1c3QgMiBjaGFyYWN0ZXJzIGVhY2guXG5cbiAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFuc2xhdGlvbiBtYXAgaXMgZXF1aXZhbGVudCB0byBqdXN0IHRoZSBpZGVudGl0eS4gKilcbmxldCB0cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgbGV0IHRyX21hcCA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGkgKENoYXIub2ZfaW50X2V4biBpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIC0gMSBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCAoU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgaSlcbiAgZG9uZTtcbiAgbGV0IGxhc3RfcmVwbGFjZW1lbnQgPSBTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCAtIDEpIGluXG4gIGZvclxuICAgIGkgPSBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgdG8gU3RyaW5nLmxlbmd0aCB0YXJnZXQgLSAxXG4gIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IGxhc3RfcmVwbGFjZW1lbnRcbiAgZG9uZTtcbiAgbGV0IHJlYyBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIGkgPVxuICAgIGlmIGkgPSAyNTZcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIGkpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgKGkgKyAxKVxuICBpblxuICAoKiBxdWljayBjaGVjayBvbiB0aGUgZmlyc3QgdGFyZ2V0IGNoYXJhY3RlciB3aGljaCB3aWxsIDk5JSBiZSB0cnVlICopXG4gIGxldCBmaXJzdF90YXJnZXQgPSB0YXJnZXQuWzBdIGluXG4gIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGZpcnN0X3RhcmdldCkpIGZpcnN0X3RhcmdldFxuICB8fCBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIDBcbiAgdGhlbiBTb21lIChCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0cl9tYXApXG4gIGVsc2UgTm9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYVxuXG5sZXQgc3RhZ2UgPSBGbi5pZFxubGV0IHVuc3RhZ2UgPSBGbi5pZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIEludCA9IEludDBcbmluY2x1ZGUgU3RyaW5nMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9zdHJpbmcgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfc3RyaW5nXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9zdHJpbmcgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG50eXBlIGVsdCA9IGNoYXJcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxuKCogVGhpcyBpcyBjb3BpZWQvYWRhcHRlZCBmcm9tICdibGl0Lm1sJy5cbiAgIFtzdWJdLCBbc3Vib10gY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW0JsaXQuTWFrZShCeXRlcyldIHBsdXMgdW5zYWZlIGNhc3RzIHRvL2Zyb21cbiAgIHN0cmluZyBidXQgd2VyZSBpbmxpbmVkIGhlcmUgdG8gYXZvaWQgdXNpbmcgW0J5dGVzLnVuc2FmZV9vZl9zdHJpbmddIGFzIG11Y2ggYXMgcG9zc2libGUuXG4qKVxubGV0IHVuc2FmZV9zdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBcIlwiXG4gIGVsc2UgKFxuICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgaWYgcG9zID0gMCAmJiBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyY1xuICB0aGVuIHNyY1xuICBlbHNlIChcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggc3JjKTtcbiAgICB1bnNhZmVfc3ViIHNyYyB+cG9zIH5sZW4pXG47O1xuXG5sZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgc3ViXG4gICAgc3JjXG4gICAgfnBvc1xuICAgIH5sZW46XG4gICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgfCBOb25lIC0+IGxlbmd0aCBzcmMgLSBwb3MpXG47O1xuXG5sZXQgcmVjIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF8gY2hhciA9XG4gIHBvcyA8IGVuZF9cbiAgJiYgKENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgdCBwb3MpIGNoYXIgfHwgY29udGFpbnNfdW5zYWZlIHQgfnBvczoocG9zICsgMSkgfmVuZF8gY2hhcilcbjs7XG5cbmxldCBjb250YWlucyA/KHBvcyA9IDApID9sZW4gdCBjaGFyID1cbiAgbGV0IHRvdGFsX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggdCBpblxuICBsZXQgbGVuID0gT3B0aW9uLnZhbHVlIGxlbiB+ZGVmYXVsdDoodG90YWxfbGVuZ3RoIC0gcG9zKSBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfOihwb3MgKyBsZW4pIGNoYXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCByZWMgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPj0gbGVuXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyArIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZXhuIHQgY2hhciA9IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2V4blxuOztcblxubGV0IGluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9mcm9tX2V4blxuOztcblxubGV0IHJlYyByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPCAwXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczoobGVuIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2V4biB0IGNoYXIgPSByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2V4blxuOztcblxubGV0IHJpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IC0xIHx8IHBvcyA+PSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCBpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgPSBfIH0gOiBTZXhwLnQgPVxuICAgIExpc3RcbiAgICAgIFsgTGlzdCBbIEF0b20gXCJwYXR0ZXJuXCI7IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm4gXVxuICAgICAgOyBMaXN0IFsgQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZSBdXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHBhdHRlcm4gdCA9IHQucGF0dGVyblxuICBsZXQgY2FzZV9zZW5zaXRpdmUgdCA9IHQuY2FzZV9zZW5zaXRpdmVcblxuICAoKiBGaW5kIG1heCBudW1iZXIgb2YgbWF0Y2hlZCBjaGFyYWN0ZXJzIGF0IFtuZXh0X3RleHRfY2hhcl0sIGdpdmVuIHRoZSBjdXJyZW50XG4gICAgIFttYXRjaGVkX2NoYXJzXS4gVHJ5IHRvIGV4dGVuZCB0aGUgY3VycmVudCBtYXRjaCwgaWYgY2hhcnMgZG9uJ3QgbWF0Y2gsIHRyeSB0byBtYXRjaFxuICAgICBmZXdlciBjaGFycy4gSWYgY2hhcnMgbWF0Y2ggdGhlbiBleHRlbmQgdGhlIG1hdGNoLiAqKVxuICBsZXQga21wX2ludGVybmFsX2xvb3Agfm1hdGNoZWRfY2hhcnMgfm5leHRfdGV4dF9jaGFyIH5wYXR0ZXJuIH5rbXBfYXJyYXkgfmNoYXJfZXF1YWwgPVxuICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIG1hdGNoZWRfY2hhcnMgaW5cbiAgICB3aGlsZVxuICAgICAgIW1hdGNoZWRfY2hhcnMgPiAwXG4gICAgICAmJiBub3QgKGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycykpXG4gICAgZG9cbiAgICAgIG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKCFtYXRjaGVkX2NoYXJzIC0gMSlcbiAgICBkb25lO1xuICAgIGlmIGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycylcbiAgICB0aGVuIG1hdGNoZWRfY2hhcnMgOj0gIW1hdGNoZWRfY2hhcnMgKyAxO1xuICAgICFtYXRjaGVkX2NoYXJzXG4gIDs7XG5cbiAgbGV0IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbWF0Y2ggY2FzZV9zZW5zaXRpdmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiBDaGFyLmVxdWFsXG4gICAgfCBmYWxzZSAtPiBDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVAgcHJlLXByb2Nlc3Npbmcgb2YgdGhlIHBhdHRlcm46IGJ1aWxkIHRoZSBpbnQgYXJyYXksIHdoaWNoLCBmb3IgZWFjaCBpLFxuICAgICBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IG5vbi10cml2aWFsIHByZWZpeCBvZiBzIHdoaWNoIGlzIGVxdWFsIHRvIGEgc3VmZml4XG4gICAgIGVuZGluZyBhdCBzLltpXSAqKVxuICBsZXQgY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBsZXQgbiA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgbGV0IGttcF9hcnJheSA9IEFycmF5LmNyZWF0ZSB+bGVuOm4gKC0xKSBpblxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgMCAwO1xuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhcjoodW5zYWZlX2dldCBwYXR0ZXJuIGkpXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IGkgIW1hdGNoZWRfY2hhcnNcbiAgICAgIGRvbmUpO1xuICAgIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9XG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVA6IHVzZSB0aGUgcHJlLXByb2Nlc3NlZCBwYXR0ZXJuIHRvIG9wdGltaXplIGxvb2stYmVoaW5kcyBvbiBub24tbWF0Y2hlcy5cbiAgICAgV2UgcmV0dXJuIGludCB0byBhdm9pZCBhbGxvY2F0aW9uIGluIFtpbmRleF9leG5dLiAtMSBtZWFucyBubyBtYXRjaC4gKilcbiAgbGV0IGluZGV4X2ludGVybmFsID8ocG9zID0gMCkgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfmluXzp0ZXh0ID1cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlbmd0aCB0ZXh0IC0gbGVuZ3RoIHBhdHRlcm5cbiAgICB0aGVuIC0xXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IGogPSByZWYgcG9zIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICB3aGlsZSAhaiA8IG4gJiYgIW1hdGNoZWRfY2hhcnMgPCBrIGRvXG4gICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCAhaiBpblxuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgaiA6PSAhaiArIDFcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGsgdGhlbiAhaiAtIGsgZWxzZSAtMSlcbiAgOztcblxuICBsZXQgbWF0Y2hlcyB0IHN0ciA9IGluZGV4X2ludGVybmFsIHQgfmluXzpzdHIgPj0gMFxuXG4gIGxldCBpbmRleCA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuICA7O1xuXG4gIGxldCBpbmRleF9leG4gP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwID49IDBcbiAgICB0aGVuIHBcbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJTdWJzdHJpbmcgbm90IGZvdW5kXCIgWyBcInN1YnN0cmluZ1wiLCBzZXhwX29mX3N0cmluZyB0LnBhdHRlcm4gXSlcbiAgOztcblxuICBsZXQgaW5kZXhfYWxsIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5tYXlfb3ZlcmxhcCB+aW5fOnRleHQgPVxuICAgIGlmIGxlbmd0aCBwYXR0ZXJuID0gMFxuICAgIHRoZW4gTGlzdC5pbml0ICgxICsgbGVuZ3RoIHRleHQpIH5mOkZuLmlkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgbGV0IGZvdW5kID0gcmVmIFtdIGluXG4gICAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGtcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgZm91bmQgOj0gKGogLSBrKSA6OiAhZm91bmQ7XG4gICAgICAgICAgKCogd2UganVzdCBmb3VuZCBhIG1hdGNoIGluIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gKilcbiAgICAgICAgICBtYXRjaCBtYXlfb3ZlcmxhcCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+IG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKGsgLSAxKVxuICAgICAgICAgIHwgZmFsc2UgLT4gbWF0Y2hlZF9jaGFycyA6PSAwKTtcbiAgICAgICAgaWYgaiA8IG5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0IGogaW5cbiAgICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgICB+Y2hhcl9lcXVhbClcbiAgICAgIGRvbmU7XG4gICAgICBMaXN0LnJldiAhZm91bmQpXG4gIDs7XG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgP3BvcyB0IH5pbl86cyB+d2l0aF8gPVxuICAgIG1hdGNoIGluZGV4ID9wb3MgdCB+aW5fOnMgd2l0aFxuICAgIHwgTm9uZSAtPiBzXG4gICAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgbGVuX3dpdGggLSBsZW5fdCkgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOndpdGhfIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczppIH5sZW46bGVuX3dpdGg7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6KGkgKyBsZW5fdClcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczooaSArIGxlbl93aXRoKVxuICAgICAgICB+bGVuOihsZW5fcyAtIGkgLSBsZW5fdCk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG5cbiAgbGV0IHJlcGxhY2VfYWxsIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBudW1fbWF0Y2hlcyA9IExpc3QubGVuZ3RoIG1hdGNoZXMgaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgKChsZW5fd2l0aCAtIGxlbl90KSAqIG51bV9tYXRjaGVzKSkgaW5cbiAgICAgIGxldCBuZXh0X2RzdF9wb3MgPSByZWYgMCBpblxuICAgICAgbGV0IG5leHRfc3JjX3BvcyA9IHJlZiAwIGluXG4gICAgICBMaXN0Lml0ZXIgbWF0Y2hlcyB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGxlbiA9IGkgLSAhbmV4dF9zcmNfcG9zIGluXG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczohbmV4dF9zcmNfcG9zIH5kc3QgfmRzdF9wb3M6IW5leHRfZHN0X3BvcyB+bGVuO1xuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICAgIH5zcmM6d2l0aF9cbiAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgfmRzdFxuICAgICAgICAgIH5kc3RfcG9zOighbmV4dF9kc3RfcG9zICsgbGVuKVxuICAgICAgICAgIH5sZW46bGVuX3dpdGg7XG4gICAgICAgIG5leHRfZHN0X3BvcyA6PSAhbmV4dF9kc3RfcG9zICsgbGVuICsgbGVuX3dpdGg7XG4gICAgICAgIG5leHRfc3JjX3BvcyA6PSAhbmV4dF9zcmNfcG9zICsgbGVuICsgbGVuX3QpO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOiFuZXh0X3NyY19wb3NcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczohbmV4dF9kc3RfcG9zXG4gICAgICAgIH5sZW46KGxlbl9zIC0gIW5leHRfc3JjX3Bvcyk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG4gIGxldCBzcGxpdF9vbiB0IHMgPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgTGlzdC5tYXAyX2V4blxuICAgICAgKC1wYXR0ZXJuX2xlbiA6OiBtYXRjaGVzKVxuICAgICAgKG1hdGNoZXMgQCBbIFN0cmluZy5sZW5ndGggcyBdKVxuICAgICAgfmY6KGZ1biBpIGogLT4gc3ViIHMgfnBvczooaSArIHBhdHRlcm5fbGVuKSB+bGVuOihqIC0gaSAtIHBhdHRlcm5fbGVuKSlcbiAgOztcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgcHVibGljID0gdFxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgPVxuICAgICAgKGZ1biBhX18wMDNfIGJfXzAwNF8gLT5cbiAgICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAzXyBiX18wMDRfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgIChlcXVhbF9zdHJpbmcgYV9fMDAzXy5wYXR0ZXJuIGJfXzAwNF8ucGF0dGVybilcbiAgICAgICAgICAgICAoU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgICAgIChlcXVhbF9ib29sIGFfXzAwM18uY2FzZV9zZW5zaXRpdmUgYl9fMDA0Xy5jYXNlX3NlbnNpdGl2ZSlcbiAgICAgICAgICAgICAgICAoZXF1YWxfYXJyYXkgZXF1YWxfaW50IGFfXzAwM18ua21wX2FycmF5IGJfXzAwNF8ua21wX2FycmF5KSlcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gYm9vbClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgcGF0dGVybiA9IHBhdHRlcm5fXzAwOF9cbiAgICAgICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA9IGNhc2Vfc2Vuc2l0aXZlX18wMTBfXG4gICAgICAgICAgIDsga21wX2FycmF5ID0ga21wX2FycmF5X18wMTJfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAwN18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTNfID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX2ludCBrbXBfYXJyYXlfXzAxMl8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwia21wX2FycmF5XCI7IGFyZ19fMDEzXyBdIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlX18wMTBfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IGFyZ19fMDExXyBdXG4gICAgICAgICAgIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9zdHJpbmcgcGF0dGVybl9fMDA4XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXR0ZXJuXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDdfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBGbi5pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm5faGVscGVyID0gc3RydWN0XG4gIG1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IFNlYXJjaF9wYXR0ZXJuMFxuZW5kXG5cbm9wZW4gU2VhcmNoX3BhdHRlcm5faGVscGVyXG5cbmxldCBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9leG4gP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+bWF5X292ZXJsYXAgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9hbGxcbiAgICAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKVxuICAgIH5tYXlfb3ZlcmxhcFxuICAgIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9maXJzdCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2FsbCAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5zdWJzdHJpbmcgPVxuICBPcHRpb24uaXNfc29tZSAoc3Vic3RyX2luZGV4X2dlbiB0IH5wYXR0ZXJuOnN1YnN0cmluZyB+Y2FzZV9zZW5zaXRpdmUpXG47O1xuXG5sZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcblxubGV0IGlzX3N1YnN0cmluZ19hdF9nZW4gPVxuICBsZXQgcmVjIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zIH5zdWJfbGVuIH5jaGFyX2VxdWFsID1cbiAgICBpZiBzdWJfcG9zID0gc3ViX2xlblxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgY2hhcl9lcXVhbCAodW5zYWZlX2dldCBzdHIgc3RyX3BvcykgKHVuc2FmZV9nZXQgc3ViIHN1Yl9wb3MpXG4gICAgdGhlbiBsb29wIH5zdHIgfnN0cl9wb3M6KHN0cl9wb3MgKyAxKSB+c3ViIH5zdWJfcG9zOihzdWJfcG9zICsgMSkgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbiAgICBlbHNlIGZhbHNlXG4gIGluXG4gIGZ1biBzdHIgfnBvczpzdHJfcG9zIH5zdWJzdHJpbmc6c3ViIH5jaGFyX2VxdWFsIC0+XG4gICAgbGV0IHN0cl9sZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHN1Yl9sZW4gPSBsZW5ndGggc3ViIGluXG4gICAgaWYgc3RyX3BvcyA8IDAgfHwgc3RyX3BvcyA+IHN0cl9sZW5cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJTdHJpbmcuaXNfc3Vic3RyaW5nX2F0OiBpbnZhbGlkIGluZGV4ICVkIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgICAgc3RyX3Bvc1xuICAgICAgICBzdHJfbGVuXG4gICAgICAgICgpO1xuICAgIHN0cl9wb3MgKyBzdWJfbGVuIDw9IHN0cl9sZW5cbiAgICAmJiBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvczowIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfc3VmZml4X2dlbiBzdHJpbmcgfnN1ZmZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW5cbiAgICAgICBzdHJpbmdcbiAgICAgICB+cG9zOihzdHJpbmdfbGVuIC0gc3VmZml4X2xlbilcbiAgICAgICB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfcHJlZml4X2dlbiBzdHJpbmcgfnByZWZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgcHJlZml4X2xlbiA9IGxlbmd0aCBwcmVmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBwcmVmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW4gc3RyaW5nIH5wb3M6MCB+c3Vic3RyaW5nOnByZWZpeCB+Y2hhcl9lcXVhbFxuOztcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcl9jb21wYXJlX2Nhc2VsZXNzIGMxIGMyID0gQ2hhci5jb21wYXJlIChDaGFyLmxvd2VyY2FzZSBjMSkgKENoYXIubG93ZXJjYXNlIGMyKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2xvb3AgfnBvcyB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMiA9XG4gICAgICBpZiBwb3MgPSBsZW4xXG4gICAgICB0aGVuIGlmIHBvcyA9IGxlbjIgdGhlbiAwIGVsc2UgLTFcbiAgICAgIGVsc2UgaWYgcG9zID0gbGVuMlxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMgPSBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgKHVuc2FmZV9nZXQgc3RyaW5nMSBwb3MpICh1bnNhZmVfZ2V0IHN0cmluZzIgcG9zKSBpblxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbG9vcCB+cG9zOihwb3MgKyAxKSB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMlxuICAgICAgICB8IF8gLT4gYylcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgc3RyaW5nMSBzdHJpbmcyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgc3RyaW5nMSBzdHJpbmcyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2VcbiAgICAgICAgY29tcGFyZV9sb29wXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfnN0cmluZzFcbiAgICAgICAgICB+bGVuMTooU3RyaW5nLmxlbmd0aCBzdHJpbmcxKVxuICAgICAgICAgIH5zdHJpbmcyXG4gICAgICAgICAgfmxlbjI6KFN0cmluZy5sZW5ndGggc3RyaW5nMilcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPVxuICAgICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgICBsZXQgc3RhdGUgPSByZWYgKGhhc2hfZm9sZF9pbnQgc3RhdGUgbGVuKSBpblxuICAgICAgZm9yIHBvcyA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBzdGF0ZSA6PSBoYXNoX2ZvbGRfY2hhciAhc3RhdGUgKENoYXIubG93ZXJjYXNlICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgICAgIGRvbmU7XG4gICAgICAhc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgICBsZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmdfYXQgPSBpc19zdWJzdHJpbmdfYXRfZ2VuIH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGbi5pZFxubGV0IHRvX3N0cmluZyA9IEZuLmlkXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIlN0cmluZy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPCAwIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSAtIDEpIGluXG4gIGxvb3AgW10gKGxlbmd0aCBzIC0gMSlcbjs7XG5cbmxldCB0b19saXN0X3JldiBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPSBsZW4gdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpICsgMSkgaW5cbiAgbG9vcCBbXSAwXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyBpICh1bnNhZmVfZ2V0IHQgKGxlbiAtIDEgLSBpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXNcbjs7XG5cbigqKiBFZmZpY2llbnQgc3RyaW5nIHNwbGl0dGluZyAqKVxuXG5sZXQgbHNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcubHNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgbHNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSBpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgbHNwbGl0Ml9leG5cbjs7XG5cbmxldCByc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IHJpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcnNwbGl0Ml9leG5cbjs7XG5cbmxldCBsc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKGxzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAocnNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNoYXJfbGlzdF9tZW0gbCAoYyA6IGNoYXIpID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBoZCA6OiB0bCAtPiBDaGFyLmVxdWFsIGhkIGMgfHwgY2hhcl9saXN0X21lbSB0bCBjXG47O1xuXG5sZXQgc3BsaXRfZ2VuIHN0ciB+b24gPVxuICBsZXQgaXNfZGVsaW0gPVxuICAgIG1hdGNoIG9uIHdpdGhcbiAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gIGxldCByZWMgbG9vcCBhY2MgbGFzdF9wb3MgcG9zID1cbiAgICBpZiBwb3MgPSAtMVxuICAgIHRoZW4gc3ViIHN0ciB+cG9zOjAgfmxlbjpsYXN0X3BvcyA6OiBhY2NcbiAgICBlbHNlIGlmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvczEgPSBwb3MgKyAxIGluXG4gICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpwb3MxIH5sZW46KGxhc3RfcG9zIC0gcG9zMSkgaW5cbiAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBwb3MgKHBvcyAtIDEpKVxuICAgIGVsc2UgbG9vcCBhY2MgbGFzdF9wb3MgKHBvcyAtIDEpXG4gIGluXG4gIGxvb3AgW10gbGVuIChsZW4gLSAxKVxuOztcblxubGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG5sZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG5sZXQgc3BsaXRfbGluZXMgPVxuICBsZXQgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbCA9XG4gICAgcG9zIDo9ICFwb3MgLSBpZiAhcG9zID4gMCAmJiBDaGFyLmVxdWFsIHQuWyFwb3MgLSAxXSAnXFxyJyB0aGVuIDIgZWxzZSAxO1xuICAgIGVvbCA6PSAhcG9zICsgMVxuICBpblxuICBmdW4gdCAtPlxuICAgIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgICgqIEludmFyaWFudDogWy0xIDw9IHBvcyA8IGVvbF0uICopXG4gICAgICBsZXQgcG9zID0gcmVmIChuIC0gMSkgaW5cbiAgICAgIGxldCBlb2wgPSByZWYgbiBpblxuICAgICAgbGV0IGFjID0gcmVmIFtdIGluXG4gICAgICAoKiBXZSB0cmVhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3BlY2lhbGx5LCBiZWNhdXNlIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFcbiAgICAgICAgIG5ld2xpbmUsIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgZW1wdHkgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dC4gKilcbiAgICAgIGlmIENoYXIuZXF1YWwgdC5bIXBvc10gJ1xcbicgdGhlbiBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sO1xuICAgICAgd2hpbGUgIXBvcyA+PSAwIGRvXG4gICAgICAgIGlmIENoYXIuKCA8PiApIHQuWyFwb3NdICdcXG4nXG4gICAgICAgIHRoZW4gZGVjciBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogQmVjYXVzZSBbcG9zIDwgZW9sXSwgd2Uga25vdyB0aGF0IFtzdGFydCA8PSBlb2xdLiAqKVxuICAgICAgICAgIGxldCBzdGFydCA9ICFwb3MgKyAxIGluXG4gICAgICAgICAgYWMgOj0gc3ViIHQgfnBvczpzdGFydCB+bGVuOighZW9sIC0gc3RhcnQpIDo6ICFhYztcbiAgICAgICAgICBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sKVxuICAgICAgZG9uZTtcbiAgICAgIHN1YiB0IH5wb3M6MCB+bGVuOiFlb2wgOjogIWFjKVxuOztcblxubGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5sZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcblxubGV0IGlzX3N1YnN0cmluZ19hdCBzIH5wb3MgfnN1YnN0cmluZyA9XG4gIGlzX3N1YnN0cmluZ19hdF9nZW4gcyB+cG9zIH5zdWJzdHJpbmcgfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuOztcblxubGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gIGVsc2UgKFxuICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgIHwgXyAtPiBvbl9lcnJvcilcbjs7XG5cbmxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9wcmVmaXhcIiB0IG4gfnBvczpuIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9zdWZmaXhcIiB0IG4gfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG5sZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxubGV0IGxmaW5kaSA/KHBvcyA9IDApIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA9IG4gdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gIGxvb3AgcG9zIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBmIGMpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT4gU29tZSB0LltpXVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gblxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZiB0LltpXSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzKVxuICBpblxuICBsb29wIDAgW0Bub250YWlsXVxuOztcblxubGV0IHJmaW5kaSA/cG9zIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgLSAxKSBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gICAgfCBOb25lIC0+IGxlbmd0aCB0IC0gMVxuICBpblxuICBsb29wIHBvcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGFzdF9ub25fZHJvcCB+ZHJvcCB0ID0gcmZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKSBbQG5vbnRhaWxdXG5cbmxldCByc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG47O1xuXG5sZXQgZmlyc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSkgW0Bub250YWlsXVxuXG5sZXQgbHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgMCAtPiB0XG4gIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuOztcblxuKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxubGV0IHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiBpIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IG1hcCB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAobGVuZ3RoIHMpIH5mOihmdW4gaSAtPiBzLltpXSlcblxubGV0IGV4aXN0cyA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPCBsZW4gJiYgKGYgcy5baV0gfHwgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9yX2FsbCA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPSBsZW4gfHwgKGYgcy5baV0gJiYgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgaSBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHRcbmxldCBtYXhfZWx0IHQgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0XG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmxldCBmaW5kX21hcGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxubGV0IGZpbmRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kaSB+aXRlcmkgdCB+ZlxubGV0IGNvdW50aSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuY291bnRpIH5mb2xkaSB0IH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZvcl9hbGxpIH5pdGVyaSB0IH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZXhpc3RzaSB+aXRlcmkgdCB+ZlxuXG5sZXQgbWVtID1cbiAgbGV0IHJlYyBsb29wIHQgYyB+cG9zOmkgfmxlbiA9XG4gICAgaSA8IGxlbiAmJiAoQ2hhci5lcXVhbCBjICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IGMgfnBvczooaSArIDEpIH5sZW4pXG4gIGluXG4gIGZ1biB0IGMgLT4gbG9vcCB0IGMgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBpZiBDaGFyLmVxdWFsIHRhcmdldCByZXBsYWNlbWVudFxuICB0aGVuIHNcbiAgZWxzZSBpZiBtZW0gcyB0YXJnZXRcbiAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gaWYgQ2hhci5lcXVhbCBjIHRhcmdldCB0aGVuIHJlcGxhY2VtZW50IGVsc2UgYylcbiAgZWxzZSBzXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBpc19lbXB0eSB0YXJnZXRcbiAgdGhlbiBzdGFnZSBGbi5pZFxuICBlbHNlIGlmIGlzX2VtcHR5IHJlcGxhY2VtZW50XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aSByZXBsYWNlbWVudCBpcyBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgRm4uaWRcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgaWYgZXhpc3RzIHMgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgKHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSkpXG4gICAgICAgIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSlcbiAgICAgICAgZWxzZSBzKSlcbjs7XG5cbigqIGZhc3QgdmVyc2lvbiwgaWYgd2UgZXZlciBuZWVkIGl0OlxuICAge1tcbiAgICAgbGV0IGNvbmNhdF9hcnJheSB+c2VwIGFyID1cbiAgICAgICBsZXQgYXJfbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgICAgaWYgYXJfbGVuID0gMCB0aGVuIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBsZXQgc2VwX2xlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgIGxldCByZXNfbGVuX3JlZiA9IHJlZiAoc2VwX2xlbiAqIChhcl9sZW4gLSAxKSkgaW5cbiAgICAgICAgIGZvciBpID0gMCB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIHJlc19sZW5fcmVmIDo9ICFyZXNfbGVuX3JlZiArIGxlbmd0aCBhci4oaSlcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICBsZXQgcmVzID0gY3JlYXRlICFyZXNfbGVuX3JlZiBpblxuICAgICAgICAgbGV0IHN0cl8wID0gYXIuKDApIGluXG4gICAgICAgICBsZXQgbGVuXzAgPSBsZW5ndGggc3RyXzAgaW5cbiAgICAgICAgIGJsaXQgfnNyYzpzdHJfMCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjAgfmxlbjpsZW5fMDtcbiAgICAgICAgIGxldCBwb3NfcmVmID0gcmVmIGxlbl8wIGluXG4gICAgICAgICBmb3IgaSA9IDEgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnNlcCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOnBvcyB+bGVuOnNlcF9sZW47XG4gICAgICAgICAgIGxldCBuZXdfcG9zID0gcG9zICsgc2VwX2xlbiBpblxuICAgICAgICAgICBsZXQgc3RyX2kgPSBhci4oaSkgaW5cbiAgICAgICAgICAgbGV0IGxlbl9pID0gbGVuZ3RoIHN0cl9pIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzdHJfaSB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOm5ld19wb3MgfmxlbjpsZW5faTtcbiAgICAgICAgICAgcG9zX3JlZiA6PSBuZXdfcG9zICsgbGVuX2lcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICByZXNcbiAgIF19ICopXG5cbmxldCBjb25jYXRfYXJyYXkgP3NlcCBhciA9IGNvbmNhdCA/c2VwIChBcnJheS50b19saXN0IGFyKVxubGV0IGNvbmNhdF9tYXAgP3NlcCBzIH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcCAodG9fYXJyYXkgcykgfmYpXG5sZXQgY29uY2F0X21hcGkgP3NlcCB0IH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcGkgKHRvX2FycmF5IHQpIH5mKVxuXG5sZXQgY29uY2F0X2xpbmVzID1cbiAgbGV0IHJlYyBsaW5lX2xlbmd0aHMgfmxpbmVzIH5uZXdsaW5lX2xlbiB+c3VtID1cbiAgICBtYXRjaCBsaW5lcyB3aXRoXG4gICAgfCBbXSAtPiBzdW1cbiAgICB8IGxpbmUgOjogbGluZXMgLT5cbiAgICAgIGxldCBzdW0gPSBzdW0gKyBTdHJpbmcubGVuZ3RoIGxpbmUgKyBuZXdsaW5lX2xlbiBpblxuICAgICAgbGluZV9sZW5ndGhzIH5saW5lcyB+bmV3bGluZV9sZW4gfnN1bVxuICBpblxuICBsZXQgcmVjIHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3MgPVxuICAgIG1hdGNoIGxpbmVzIHdpdGhcbiAgICB8IFtdIC0+IHBvc1xuICAgIHwgbGluZSA6OiBsaW5lcyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6bGluZVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6YnVmXG4gICAgICAgIH5kc3RfcG9zOnBvc1xuICAgICAgICB+bGVuOihTdHJpbmcubGVuZ3RoIGxpbmUpO1xuICAgICAgbGV0IHBvcyA9IHBvcyArIFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIGlmIGNybGZcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zICdcXHInO1xuICAgICAgICAgIHBvcyArIDEpXG4gICAgICAgIGVsc2UgcG9zXG4gICAgICBpblxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zICdcXG4nO1xuICAgICAgbGV0IHBvcyA9IHBvcyArIDEgaW5cbiAgICAgIHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3NcbiAgaW5cbiAgZnVuID8oY3JsZiA9IGZhbHNlKSBsaW5lcyAtPlxuICAgIGxldCBuZXdsaW5lX2xlbiA9IGlmIGNybGYgdGhlbiAyIGVsc2UgMSBpblxuICAgIGxldCBsZW4gPSBsaW5lX2xlbmd0aHMgfm5ld2xpbmVfbGVuIH5saW5lcyB+c3VtOjAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCB3cml0dGVuID0gd3JpdGVfbGluZXMgfmJ1ZiB+bGluZXMgfmNybGYgfnBvczowIGluXG4gICAgYXNzZXJ0ICh3cml0dGVuID0gbGVuKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuOztcblxuKCogW2ZpbHRlciB0IGZdIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtLlxuXG4gICBMZXQgW24gPSBsZW5ndGggdF0uXG5cbiAgIDEuIEZpbmQgdGhlIGxvd2VzdCBbaV0gc3VjaCB0aGF0IFtub3QgKGYgdC5baV0pXS5cblxuICAgMi4gSWYgdGhlcmUgaXMgbm8gc3VjaCBbaV0sIHRoZW4gcmV0dXJuIFt0XS5cblxuICAgMy4gSWYgdGhlcmUgaXMgc3VjaCBhbiBbaV0sIGFsbG9jYXRlIGEgc3RyaW5nLCBbb3V0XSwgdG8gaG9sZCB0aGUgcmVzdWx0LiAgW291dF0gaGFzXG4gICBsZW5ndGggW24gLSAxXSwgd2hpY2ggaXMgdGhlIG1heGltdW0gcG9zc2libGUgb3V0cHV0IHNpemUgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBhdCBsZWFzdFxuICAgb25lIGNoYXJhY3RlciBub3Qgc2F0aXNmeWluZyBbZl0uXG5cbiAgIDQuIENvcHkgY2hhcmFjdGVycyBhdCBpbmRpY2VzIDAgLi4uIFtpIC0gMV0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDUuIFdhbGsgdGhyb3VnaCBjaGFyYWN0ZXJzIGF0IGluZGljZXMgW2krMV0gLi4uIFtuLTFdIG9mIFt0XSwgY29weWluZyB0aG9zZSB0aGF0XG4gICBzYXRpc2Z5IFtmXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNi4gSWYgd2UgY29tcGxldGVseSBmaWxsZWQgW291dF0sIHRoZW4gcmV0dXJuIGl0LiAgSWYgbm90LCByZXR1cm4gdGhlIHByZWZpeCBvZiBbb3V0XVxuICAgdGhhdCB3ZSBkaWQgZmlsbCBpbi5cblxuICAgVGhpcyBhbGdvcml0aG0gaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgc3RyaW5nIGlmIHRoZXJlJ3NcbiAgIG5vdGhpbmcgdG8gZmlsdGVyLCB3aGljaCBpcyBhIGNvbW1vbiBjYXNlLiAqKVxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgIWkgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgIWkgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIFNvbWUgKGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9pZl9leGlzdHMgcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3BfcHJlZml4X2V4biBzIH5wcmVmaXggPVxuICBtYXRjaCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3BfcHJlZml4X2V4biAlUyAlU1wiIHMgcHJlZml4ICgpXG47O1xuXG5sZXQgY2hvcF9zdWZmaXggcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIFNvbWUgKGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9pZl9leGlzdHMgcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3Bfc3VmZml4X2V4biBzIH5zdWZmaXggPVxuICBtYXRjaCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3Bfc3VmZml4X2V4biAlUyAlU1wiIHMgc3VmZml4ICgpXG47O1xuXG5tb2R1bGUgRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeCA9IHN0cnVjdFxuICAoKiBXaGVuIHRha2luZyBhIHN0cmluZyBwcmVmaXggb3Igc3VmZml4LCB3ZSBleHRyYWN0IGZyb20gdGhlIHNob3J0ZXN0IGlucHV0IGF2YWlsYWJsZVxuICAgICBpbiBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiBvbmUgb2Ygb3VyIGlucHV0cyB3aXRob3V0IGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nLiAqKVxuXG4gIGxldCBzaG9ydGVyIGEgYiA9IGlmIGxlbmd0aCBhIDw9IGxlbmd0aCBiIHRoZW4gYSBlbHNlIGJcblxuICBsZXQgc2hvcnRlc3QgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OmZpcnN0IH5mOnNob3J0ZXJcbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgZm9yIGNvbW1vbiBwcmVmaXgvc3VmZml4IGFic3RyYWN0IG92ZXIgW2dldF9wb3NdLCB3aGljaCBpc1xuICAgICBlaXRoZXIgW3Bvc19mcm9tX2xlZnRdIG9yIFtwb3NfZnJvbV9yaWdodF0uICopXG5cbiAgbGV0IHBvc19mcm9tX2xlZnQgKF8gOiB0KSAoaSA6IGludCkgPSBpXG4gIGxldCBwb3NfZnJvbV9yaWdodCB0IGkgPSBsZW5ndGggdCAtIGkgLSAxXG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyID1cbiAgICBpZiBsZW5fc29fZmFyID49IG1heF9sZW5cbiAgICB0aGVuIG1heF9sZW5cbiAgICBlbHNlIGlmIENoYXIuZXF1YWxcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYSAoZ2V0X3BvcyBhIGxlbl9zb19mYXIpKVxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBiIChnZXRfcG9zIGIgbGVuX3NvX2ZhcikpXG4gICAgdGhlbiBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOihsZW5fc29fZmFyICsgMSlcbiAgICBlbHNlIGxlbl9zb19mYXJcbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgPVxuICAgIGxldCBtYXhfbGVuID0gbWluIChsZW5ndGggYSkgKGxlbmd0aCBiKSBpblxuICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICA7O1xuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgbGlzdCB+Z2V0X3BvcyB+bWF4X2xlbiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBtYXhfbGVuXG4gICAgfCBzZWNvbmQgOjogcmVzdCAtPlxuICAgICAgbGV0IG1heF9sZW4gPVxuICAgICAgICAoKiBXZSBjYWxsIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoXSBzb1xuICAgICAgICAgICB0aGF0IFttYXhfbGVuXSBsaW1pdHMgb3VyIHRyYXZlcnNhbCBvZiBbZmlyc3RdIGFuZCBbc2Vjb25kXS4gKilcbiAgICAgICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGZpcnN0IHNlY29uZCB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gICAgICBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3Agc2Vjb25kIHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3MgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogUHJlY29tcHV0aW5nIFttYXhfbGVuXSBiYXNlZCBvbiBbc2hvcnRlc3QgbGlzdF0gc2F2ZXMgdXMgd29yayBpbiBsb25nZXIgc3RyaW5ncyxcbiAgICAgICAgIGF0IHRoZSBjb3N0IG9mIGFuIGV4dHJhIHBhc3Mgb3ZlciB0aGUgc3BpbmUgb2YgW2xpc3RdLlxuXG4gICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgc3RyaW5nczpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIGxldCBsb25nX2EgPSBMaXN0LmluaXQgMTAwMCB+ZjooRm4uY29uc3QgJ2EnKVxuICAgICAgICAgICAgWyBsb25nX2E7IGxvbmdfYTsgJ2FhJyBdXG4gICAgICAgICB2fVxuXG4gICAgICAgICB0aGUgYXBwcm9hY2ggYmVsb3cgd2lsbCBqdXN0IGNoZWNrIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhbGwgdGhlIHN0cmluZ3MuXG4gICAgICAqKVxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggKHNob3J0ZXN0IGxpc3QpIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIHRoYXQgcHJvZHVjZSBhIHN0cmluZyBhYnN0cmFjdCBvdmVyIFt0YWtlXSwgd2hpY2ggaXMgZWl0aGVyXG4gICAgIFtwcmVmaXhdIG9yIFtzdWZmaXhdLiAqKVxuXG4gIGxldCBjb21tb25fZ2VuZXJpYzIgYSBiIH5nZXRfcG9zIH50YWtlID1cbiAgICBsZXQgbGVuID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgaW5cbiAgICAoKiBVc2UgdGhlIHNob3J0ZXIgb2YgdGhlIHR3byBzdHJpbmdzLCBzbyB0aGF0IGlmIHRoZSBzaG9ydGVyIG9uZSBpcyB0aGUgc2hhcmVkXG4gICAgICAgcHJlZml4LCBbdGFrZV0gd29uJ3QgYWxsb2NhdGUgYW5vdGhlciBzdHJpbmcuICopXG4gICAgdGFrZSAoc2hvcnRlciBhIGIpIGxlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYyBsaXN0IH5nZXRfcG9zIH50YWtlID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIEFzIHdpdGggW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0sIHdlIGJhc2UgW21heF9sZW5dIG9uIFtzaG9ydGVzdCBsaXN0XS4gV2UgYWxzb1xuICAgICAgICAgdXNlIHRoaXMgcmVzdWx0IGZvciBbdGFrZV0sIGJlbG93LCB0byBwb3RlbnRpYWxseSBhdm9pZCBhbGxvY2F0aW5nIGEgc3RyaW5nLiAqKVxuICAgICAgbGV0IHMgPSBzaG9ydGVzdCBsaXN0IGluXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCBzIGluXG4gICAgICBpZiBtYXhfbGVuID0gMFxuICAgICAgdGhlbiBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgKCogV2UgY2FsbCBkaXJlY3RseSBpbnRvIFtjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW5cbiAgICAgICAgICAgICBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSB0byBhdm9pZCByZWNvbXB1dGluZyBbc2hvcnRlc3QgbGlzdF0uICopXG4gICAgICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICAgICAgICBpblxuICAgICAgICB0YWtlIHMgbGVuKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeFxuXG4gIGxldCBjb21tb25fcHJlZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbmVuZFxuXG4oKiBUaGVyZSB1c2VkIHRvIGJlIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIHRoYXQgd2FzIGZhc3RlciBmb3IgdmVyeSBzaG9ydCBzdHJpbmdzXG4gICAocGVha2luZyBhdCA0MCUgZmFzdGVyIGZvciA0LTYgY2hhciBsb25nIHN0cmluZ3MpLlxuICAgVGhpcyBuZXcgZnVuY3Rpb24gaXMgYXJvdW5kIDIwJSBmYXN0ZXIgdGhhbiB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uLCBidXQgc2xvd2VyXG4gICB0aGFuIHRoZSBwcmV2aW91cyBjdXN0b20gaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZSBuZXcgT0NhbWwgZnVuY3Rpb24gaXMgd2VsbFxuICAgYmVoYXZlZCwgYW5kIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbGVzcyBsaWtlbHkgdG8gZGl2ZXJnZSBmcm9tIHRoZSBkZWZhdWx0IE9DYW1sXG4gICBpbXBsZW1lbnRhdGlvbiBkb2VzLCB3aGljaCBpcyBhIGRlc2lyYWJsZSBwcm9wZXJ0eS4gKFRoZSBvbmx5IHdheSB0byBhdm9pZCB0aGVcbiAgIGRpdmVyZ2VuY2UgaXMgdG8gZXhwb3NlIHRoZSBtYWNybyByZWRlZmluZWQgaW4gaGFzaF9zdHVicy5jIGluIHRoZSBoYXNoLmggaGVhZGVyIG9mXG4gICB0aGUgT0NhbWwgY29tcGlsZXIuKSAqKVxubW9kdWxlIEhhc2ggPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgaGFzaCA6IHN0cmluZyAtPiBpbnQgPSBcIkJhc2VfaGFzaF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZW5kXG5cbigqIFtpbmNsdWRlIEhhc2hdIHRvIG1ha2UgdGhlIFtleHRlcm5hbF0gdmVyc2lvbiBvdmVycmlkZSB0aGUgW2hhc2hdIGZyb21cbiAgIFtIYXNoYWJsZS5NYWtlX2JpbmFibGVdLCBzbyB0aGF0IHdlIGdldCBhIGxpdHRsZSBiaXQgb2YgYSBzcGVlZHVwIGJ5IGV4cG9zaW5nIGl0IGFzXG4gICBleHRlcm5hbCBpbiB0aGUgbWxpLiAqKVxubGV0IF8gPSBoYXNoXG5cbmluY2x1ZGUgSGFzaFxuXG4oKiBmb3IgaW50ZXJhY3RpdmUgdG9wLWxldmVscyAtLSBtb2R1bGVzIGRlcml2aW5nIGZyb20gU3RyaW5nIHNob3VsZCBoYXZlIFN0cmluZydzIHByZXR0eVxuICAgcHJpbnRlci4gKilcbmxldCBwcCBwcGYgc3RyaW5nID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiVTXCIgc3RyaW5nXG5sZXQgb2ZfY2hhciBjID0gbWFrZSAxIGNcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBCeXRlcy5zZXQgdCBpIGMpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCBvZl9saXN0ID0gb2ZfY2hhcl9saXN0XG5sZXQgb2ZfYXJyYXkgYSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhKSB+ZjooQXJyYXkuZ2V0IGEpXG5sZXQgYXBwZW5kID0gKCBeIClcblxubGV0IHBhZF9yaWdodCA/KGNoYXIgPSAnICcpIHMgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHMgaW5cbiAgaWYgc3JjX2xlbiA+PSBsZW5cbiAgdGhlbiBzXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5kc3Q6cmVzIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnNyY19sZW47XG4gICAgQnl0ZXMuZmlsbCB+cG9zOnNyY19sZW4gfmxlbjoobGVuIC0gc3JjX2xlbikgcmVzIGNoYXI7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG5sZXQgcGFkX2xlZnQgPyhjaGFyID0gJyAnKSBzIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzIGluXG4gIGlmIHNyY19sZW4gPj0gbGVuXG4gIHRoZW4gc1xuICBlbHNlIChcbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+ZHN0OnJlcyB+c3JjX3BvczowIH5kc3RfcG9zOihsZW4gLSBzcmNfbGVuKSB+bGVuOnNyY19sZW47XG4gICAgQnl0ZXMuZmlsbCB+cG9zOjAgfmxlbjoobGVuIC0gc3JjX2xlbikgcmVzIGNoYXI7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG4oKiBDYWxsZWQgdXBvbiBmaXJzdCBkaWZmZXJlbmNlIGdlbmVyYXRlZCBieSBmaWx0ZXJpbmcuIEFsbG9jYXRlcyBbYnVmZmVyX2xlbl0gYnl0ZXNcbiAgIGZvciBuZXcgcmVzdWx0LCBhbmQgY29waWVzIFtwcmVmaXhfbGVuXSB1bmNoYW5nZWQgY2hhcmFjdGVycyBmcm9tIFtzcmNdLlxuICAgQWx3YXlzIHJldHVybnMgYSBsb2NhbCBidWZmZXIuICopXG5sZXQgbG9jYWxfY29weV9wcmVmaXggKHNyYyBbQGxvY2FsXSkgfnByZWZpeF9sZW4gfmJ1ZmZlcl9sZW4gPVxuICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlX2xvY2FsIGJ1ZmZlcl9sZW4gaW5cbiAgQnl0ZXMuUHJpbWl0aXZlcy51bnNhZmVfYmxpdF9zdHJpbmcgfnNyYyB+ZHN0IH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnByZWZpeF9sZW47XG4gICBkc3Rcbjs7XG5cbigqIENvcGllcyBhIHBlcmhhcHMtbG9jYWwgYnVmZmVyIGludG8gYSBkZWZpbml0ZWx5LWdsb2JhbCBzdHJpbmcuICopXG5sZXQgbG9jYWxfY29weV90b19zdHJpbmcgKGJ1ZiBbQGxvY2FsXSkgfnBvcyA9XG4gIGxldCBzdHIgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZiBpblxuICB1bnNhZmVfc3ViIHN0ciB+cG9zOjAgfmxlbjpwb3MgW0Bub250YWlsXVxuOztcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBzdHJ1Y3RcbiAgICAoKiBmaWx0ZXJfbWFwIGhlbHBlcnMgKilcblxuICAgICgqIEZpbHRlcnMgZnJvbSBzdHJpbmcgW3NyY10gaW50byBhbiBhbGxvY2F0ZWQgYnVmZmVyIFtkc3RdO1xuICAgICAgIGNvcGllcyB0aGUgYWxsb2NhdGVkIGJ1ZmZlciB0byBhIGhlYXAtYWxsb2NhdGVkIHJlc3VsdCBzdHJpbmcuXG5cbiAgICAgICBQcmUtY29uZGl0aW9uczpcbiAgICAgICBbc3JjX2xlbiA9IGxlbmd0aCBzcmNdXG4gICAgICAgW3NyYyAhPSBkc3RdXG4gICAgICAgWzAgPD0gc3JjX3BvcyA8IHNyY19sZW5dXG4gICAgICAgWzAgPD0gZHN0X3BvcyA8IGxlbmd0aCBkc3RdXG4gICAgKilcbiAgICBsZXQgZmlsdGVyX21hcGlfaW50byBzcmMgKGRzdCBbQGxvY2FsXSkgfmYgfnNyY19wb3MgfmRzdF9wb3MgfnNyY19sZW4gPVxuICAgICAgbGV0IGRzdF9wb3MgPSAgKHJlZiBkc3RfcG9zKSBpblxuICAgICAgZm9yIHNyY19wb3MgPSBzcmNfcG9zIHRvIHNyY19sZW4gLSAxIGRvXG4gICAgICAgIG1hdGNoIGYgc3JjX3BvcyAodW5zYWZlX2dldCBzcmMgc3JjX3Bvcykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGRzdCAhZHN0X3BvcyBjO1xuICAgICAgICAgIGluY3IgZHN0X3Bvc1xuICAgICAgZG9uZTtcbiAgICAgIGxvY2FsX2NvcHlfdG9fc3RyaW5nIGRzdCB+cG9zOiFkc3RfcG9zXG4gICAgOztcblxuICAgICgqIEZpbHRlcnMgW3RdLiBJZiB0aGUgcmVzdWx0IHR1cm5zIG91dCB0byBiZSBpZGVudGljYWwgdG8gdGhlIGlucHV0LCByZXR1cm5zIFt0XVxuICAgICAgIGRpcmVjdGx5IHdpdGhvdXQgbmVlZGluZyB0byBhbGxvY2F0ZSBhIGJ1ZmZlciBhbmQgdHJhdmVyc2UgdGhlIHN0cmluZyB0d2ljZS5cblxuICAgICAgIFByZS1jb25kaXRpb246IFtsZW4gPT0gbGVuZ3RoIHRdXG4gICAgICAgUHJlLWNvbmRpdGlvbjogWzAgPD0gcG9zIDw9IGxlbl0gKilcbiAgICBsZXQgcmVjIGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCB0IHBvcyBpblxuICAgICAgICBsZXQgbmV4dCA9IEludC5zdWNjIHBvcyBpblxuICAgICAgICBtYXRjaCBmIHBvcyBjMSB3aXRoXG4gICAgICAgIHwgU29tZSBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgICAoKiBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCBjb250aW51ZSAqKVxuICAgICAgICAgIGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvczpuZXh0IH5sZW5cbiAgICAgICAgfCBvcHRpb24gLT5cbiAgICAgICAgICAoKiBJZiBhIGNoYXJhY3RlciBoYXMgYmVlbiBjaGFuZ2VkIG9yIGRyb3BwZWQsIGJlZ2luIGFuIG91dHB1dCBidWZmZXIgdXAgdG9cbiAgICAgICAgICAgICBbcG9zXSwgYW5kIHdyaXRlIHRoZSBuZXcgY2hhcmFjdGVyIGludG8gaXQuICopXG4gICAgICAgICAgbGV0IGNvcHkgPSBsb2NhbF9jb3B5X3ByZWZpeCB0IH5wcmVmaXhfbGVuOnBvcyB+YnVmZmVyX2xlbjpsZW4gaW5cbiAgICAgICAgICBsZXQgZHN0X3BvcyA9XG4gICAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHBvc1xuICAgICAgICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBjb3B5IHBvcyBjO1xuICAgICAgICAgICAgICBuZXh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmaWx0ZXJfbWFwaV9pbnRvIHQgY29weSB+ZiB+c3JjX3BvczpuZXh0IH5kc3RfcG9zIH5zcmNfbGVuOmxlbiBbQG5vbnRhaWxdKVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGZpbHRlcl9tYXAgZnVuY3Rpb25zICopXG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPSBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSBbQG5vbnRhaWxdXG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBzdHJ1Y3RcbiAgICAoKiBwYXJ0aXRpb24gaGVscGVycyAqKVxuXG4gICAgbGV0IHBhcnRpdGlvbl9tYXBfaW50byBzcmMgfmZzdHMgfnNuZHMgfmYgfmxlbiB+c3JjX3BvcyB+ZnN0X3BvcyB+c25kX3BvcyA9XG4gICAgICBsZXQgZnN0X3BvcyA9ICAocmVmIGZzdF9wb3MpIGluXG4gICAgICBsZXQgc25kX3BvcyA9ICAocmVmIHNuZF9wb3MpIGluXG4gICAgICBmb3Igc3JjX3BvcyA9IHNyY19wb3MgdG8gbGVuIC0gMSBkb1xuICAgICAgICBtYXRjaCAgKGYgKHVuc2FmZV9nZXQgc3JjIHNyY19wb3MpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZnN0cyAhZnN0X3BvcyBjO1xuICAgICAgICAgIGluY3IgZnN0X3Bvc1xuICAgICAgICB8IFNlY29uZCBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzbmRzICFzbmRfcG9zIGM7XG4gICAgICAgICAgaW5jciBzbmRfcG9zXG4gICAgICBkb25lO1xuICAgICAgbG9jYWxfY29weV90b19zdHJpbmcgZnN0cyB+cG9zOiFmc3RfcG9zLCBsb2NhbF9jb3B5X3RvX3N0cmluZyBzbmRzIH5wb3M6IXNuZF9wb3NcbiAgICA7O1xuXG4gICAgbGV0IHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSBzcmMgfmYgfmxlbiB+cG9zOnNyY19wb3MgfmZzdF9wb3MgfnNuZF9wb3MgZWl0aGVyID1cbiAgICAgIGxldCBmc3RzID0gbG9jYWxfY29weV9wcmVmaXggc3JjIH5wcmVmaXhfbGVuOmZzdF9wb3MgfmJ1ZmZlcl9sZW46bGVuIGluXG4gICAgICBsZXQgc25kcyA9IGxvY2FsX2NvcHlfcHJlZml4IHNyYyB+cHJlZml4X2xlbjpzbmRfcG9zIH5idWZmZXJfbGVuOmxlbiBpblxuICAgICAgbGV0IGZzdF9wb3MsIHNuZF9wb3MgPVxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZnN0cyBmc3RfcG9zIGM7XG4gICAgICAgICAgIChmc3RfcG9zICsgMSwgc25kX3BvcylcbiAgICAgICAgfCBTZWNvbmQgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgc25kcyBzbmRfcG9zIGM7XG4gICAgICAgICAgIChmc3RfcG9zLCBzbmRfcG9zICsgMSlcbiAgICAgIGluXG4gICAgICBwYXJ0aXRpb25fbWFwX2ludG9cbiAgICAgICAgc3JjXG4gICAgICAgIH5mc3RzXG4gICAgICAgIH5zbmRzXG4gICAgICAgIH5mXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnNyY19wb3M6KHNyY19wb3MgKyAxKVxuICAgICAgICB+ZnN0X3Bvc1xuICAgICAgICB+c25kX3BvcyBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCByZWMgcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBzcmMsIFwiXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOihwb3MgKyAxKVxuICAgICAgICB8IGVpdGhlciAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgfmZzdF9wb3M6cG9zXG4gICAgICAgICAgICB+c25kX3BvczowXG4gICAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBcIlwiLCBzcmNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgU2Vjb25kIGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpXG4gICAgICAgIHwgZWl0aGVyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgICBzcmNcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICB+ZnN0X3BvczowXG4gICAgICAgICAgICB+c25kX3Bvczpwb3NcbiAgICAgICAgICAgIGVpdGhlciBbQG5vbnRhaWxdKVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIHBhcnRpdGlvbiBmdW5jdGlvbnMgKilcblxuICBsZXQgcGFydGl0aW9uX21hcCBzcmMgfmYgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggc3JjIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gXCJcIiwgXCJcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgMCBpblxuICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICB8IEZpcnN0IGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPiBwYXJ0aXRpb25fbWFwX2ZpcnN0X21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6MVxuICAgICAgfCBTZWNvbmQgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6MVxuICAgICAgfCBlaXRoZXIgLT5cbiAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgc3JjXG4gICAgICAgICAgfmZcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfmZzdF9wb3M6MFxuICAgICAgICAgIH5zbmRfcG9zOjBcbiAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIHBhcnRpdGlvbl9tYXAgdCB+ZjooZnVuIGMgLT4gaWYgZiBjIHRoZW4gIChGaXJzdCBjKSBlbHNlICAoU2Vjb25kIGMpKSBbQG5vbnRhaWxcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEVzY2FwaW5nID0gc3RydWN0XG4gICgqIElmIHRoaXMgaXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBbZXNjYXBlXSwgd2hpY2ggYXR0ZW1wdHMgdG8gZW5zdXJlIGFsbCB0aGVcbiAgICAgaW52YXJpYW50cyBjaGVja2VkIGhlcmUuICAqKVxuICBsZXQgYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBmdW5jID1cbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBpZiBMaXN0LkFzc29jLm1lbSBlc2NhcGV3b3J0aHlfbWFwIH5lcXVhbDpDaGFyLmVxdWFsIGVzY2FwZV9jaGFyXG4gICAgICB0aGVuIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgIGVsc2UgKGVzY2FwZV9jaGFyLCBlc2NhcGVfY2hhcikgOjogZXNjYXBld29ydGh5X21hcFxuICAgIGluXG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiAoLTEpIGluXG4gICAgbGV0IHZhbHMgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgZmFsc2UgaW5cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBPayBhcnJcbiAgICAgIHwgKGNfZnJvbSwgY190bykgOjogbCAtPlxuICAgICAgICBsZXQgaywgdiA9XG4gICAgICAgICAgbWF0Y2ggZnVuYyB3aXRoXG4gICAgICAgICAgfCBgRXNjYXBlIC0+IENoYXIudG9faW50IGNfZnJvbSwgY190b1xuICAgICAgICAgIHwgYFVuZXNjYXBlIC0+IENoYXIudG9faW50IGNfdG8sIGNfZnJvbVxuICAgICAgICBpblxuICAgICAgICBpZiBhcnIuKGspIDw+IC0xIHx8IHZhbHMuKENoYXIudG9faW50IHYpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgICBcImVzY2FwZXdvcnRoeV9tYXAgbm90IG9uZS10by1vbmVcIlxuICAgICAgICAgICAgICAgWyBcImNfZnJvbVwiLCBzZXhwX29mX2NoYXIgY19mcm9tXG4gICAgICAgICAgICAgICA7IFwiY190b1wiLCBzZXhwX29mX2NoYXIgY190b1xuICAgICAgICAgICAgICAgOyAoIFwiZXNjYXBld29ydGh5X21hcFwiXG4gICAgICAgICAgICAgICAgICwgc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9jaGFyIHNleHBfb2ZfY2hhcikgZXNjYXBld29ydGh5X21hcFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICBdKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhcnIuKGspIDwtIENoYXIudG9faW50IHY7XG4gICAgICAgICAgdmFscy4oQ2hhci50b19pbnQgdikgPC0gdHJ1ZTtcbiAgICAgICAgICBsb29wIGwpXG4gICAgaW5cbiAgICBsb29wIGVzY2FwZXdvcnRoeV9tYXBcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYEVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBjYWxjdWxhdGUgYSBsaXN0IG9mIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgZmlyc3QsIHRoZSBvcmRlclxuICAgICAgICAgICAgICBpcyBmcm9tIHRhaWwgdG8gaGVhZCAqKVxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlX2xlbiA9IHJlZiAwIGluXG4gICAgICAgICAgIGxldCB0b19lc2NhcGUgPVxuICAgICAgICAgICAgIGZvbGRpIHNyYyB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGMgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgYykgd2l0aFxuICAgICAgICAgICAgICAgfCAtMSAtPiBhY2NcbiAgICAgICAgICAgICAgIHwgbiAtPlxuICAgICAgICAgICAgICAgICAoKiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpICopXG4gICAgICAgICAgICAgICAgIGluY3IgdG9fZXNjYXBlX2xlbjtcbiAgICAgICAgICAgICAgICAgKGksIENoYXIudW5zYWZlX29mX2ludCBuKSA6OiBhY2MpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX2VzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICgqIFt0b19lc2NhcGVdIGRpdmlkZSBbc3JjXSB0byBbTGlzdC5sZW5ndGggdG9fZXNjYXBlICsgMV0gcGllY2VzIHNlcGFyYXRlZCBieVxuICAgICAgICAgICAgICAgIHRoZSBjaGFycyB0byBlc2NhcGUuXG5cbiAgICAgICAgICAgICAgICBMZXRzIHRha2VcbiAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgZXNjYXBlX2dlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZXdvcnRoeV9tYXA6WygnYScsICdBJyk7ICgnYicsICdCJyk7ICgnYycsICdDJyldXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGVfY2hhcjonXydcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCBhbmQgYXNzdW1lIHRoZSBzdHJpbmcgdG8gZXNjYXBlIGlzXG5cbiAgICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgICB0aGVuIFt0b19lc2NhcGVdIGlzIFsoMTEsICdDJyk7ICg3LCAnQicpOyAoMywgJ0EnKV0uXG5cbiAgICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIFtkc3RdIG9mIGxlbmd0aCBbbGVuZ3RoIHNyYyArIDNdIHRvIHN0b3JlIHRoZVxuICAgICAgICAgICAgICAgIHJlc3VsdCwgY29weSBwaWVjZSBcIjMzM1wiIHRvIFtkc3RdIGRpcmVjdGx5LCB0aGVuIGNvcHkgJ18nIGFuZCAnQycgdG8gW2RzdF07XG4gICAgICAgICAgICAgICAgdGhlbiBtb3ZlIG9uIHRvIG5leHQ7IGFmdGVyIDMgaXRlcmF0aW9ucywgY29weSBwaWVjZSBcIjAwMFwiIGFuZCB3ZSBhcmUgZG9uZS5cblxuICAgICAgICAgICAgICAgIEZpbmFsbHkgdGhlIHJlc3VsdCB3aWxsIGJlXG5cbiAgICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiICopXG4gICAgICAgICAgICAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gICAgICAgICAgICAgbGV0IGRzdF9sZW4gPSBzcmNfbGVuICsgIXRvX2VzY2FwZV9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGRzdF9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IChpZHgsIGVzY2FwZWRfY2hhcikgOjogdG9fZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqW2lkeF0gPSB0aGUgY2hhciB0byBlc2NhcGUqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIGZpcnN0IGl0ZXJhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgICAgICAgICAgICAgICAoKiBjYWxjdWxhdGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDEgYmVjYXVzZSB3ZSBkb24ndCBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAxIGluXG4gICAgICAgICAgICAgICAgICgqIHNldCB0aGUgZHN0X3BvcyB0byBjb3B5IHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiwgc2V0IFtzcmNfcG9zXSB0byBbaWR4ICsgMV0gdG8gc2tpcCAnYycgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMSkgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAyIHRvIGNvcHkgJ18nIGFuZCAnQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMiBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IGRzdF9wb3MgZXNjYXBlX2NoYXI7XG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgKGRzdF9wb3MgKyAxKSBlc2NhcGVkX2NoYXI7XG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSBmaXJzdCAqKVxuICAgICAgICAgICAgIGxvb3Agc3JjX2xlbiBkc3RfbGVuIHRvX2VzY2FwZTtcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCBlc2NhcGUgfmVzY2FwZXdvcnRoeSB+ZXNjYXBlX2NoYXIgPVxuICAgICgqIEZvciBbZXNjYXBlX2dlbl9leG5dLCB3ZSBkb24ndCBrbm93IGhvdyB0byBmaXggaW52YWxpZCBlc2NhcGV3b3J0aHlfbWFwIHNvIHdlIGhhdmVcbiAgICAgICB0byByYWlzZSBleGNlcHRpb247IGJ1dCBpbiB0aGlzIGNhc2UsIHdlIGtub3cgaG93IHRvIGZpeCBkdXBsaWNhdGVkIGVsZW1lbnRzIGluXG4gICAgICAgZXNjYXBld29ydGh5IGxpc3QsIHNvIHdlIGp1c3QgZml4IGl0IGluc3RlYWQgb2YgcmFpc2luZyBleGNlcHRpb24gdG8gbWFrZSB0aGlzXG4gICAgICAgZnVuY3Rpb24gZWFzaWVyIHRvIHVzZS4gICopXG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgZXNjYXBld29ydGh5XG4gICAgICB8PiBMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOkNoYXIuY29tcGFyZVxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjIC0+IGMsIGMpXG4gICAgaW5cbiAgICBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXJcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYFVuZXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIENvbnRpbnVlIHRoZSBleGFtcGxlIGluIFtlc2NhcGVfZ2VuX2V4bl0sIG5vdyB3ZSB1bmVzY2FwZVxuXG4gICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCJcblxuICAgICAgICAgICAgICBiYWNrIHRvXG5cbiAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgIFRoZW4gW3RvX3VuZXNjYXBlXSBpcyBbMTQ7IDk7IDRdLCB3aGljaCBpcyBpbmRleGVzIG9mICdfJ3MuXG5cbiAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBzdHJpbmcgW2RzdF0gdG8gc3RvcmUgdGhlIHJlc3VsdCwgY29weSBcIjMzM1wiIHRvIGl0LCB0aGVuIGNvcHlcbiAgICAgICAgICAgICAgJ2MnLCB0aGVuIG1vdmUgb24gdG8gbmV4dCBpdGVyYXRpb24uIEFmdGVyIDMgaXRlcmF0aW9ucyBjb3B5IFwiMDAwXCIgYW5kIHdlIGFyZVxuICAgICAgICAgICAgICBkb25lLiAgKilcbiAgICAgICAgICAgKCogaW5kZXhlcyBvZiBlc2NhcGUgY2hhcnMgKilcbiAgICAgICAgICAgbGV0IHRvX3VuZXNjYXBlID1cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgYWNjID1cbiAgICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHNyY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3JjIH5lc2NhcGVfY2hhciBpIHN0YXR1cyBpblxuICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGluZyAtPiBpIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gYWNjKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxvb3AgMCBgTGl0ZXJhbCBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b191bmVzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlJyAtPlxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbmd0aCBzcmMgLSBMaXN0Lmxlbmd0aCB0b191bmVzY2FwZSkgaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbaWR4XSA9IGluZGV4IG9mIGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSAxc3QgaXRlcmF0aW9uIGFzIGV4YW1wbGUsIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDIgdG9cbiAgICAgICAgICAgICAgICAgICAgc2tpcCAnX0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDIgaW5cbiAgICAgICAgICAgICAgICAgKCogcG9pbnQgW2RzdF9wb3NdIHRvIHRoZSBwb3NpdGlvbiB0byBjb3B5IFwiMzMzXCIgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDIpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMSB0byBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAxIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldFxuICAgICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgICAgICAgIGRzdF9wb3NcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBzcmMuW2lkeCArIDFdKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgLTEgLT4gc3JjLltpZHggKyAxXVxuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gQ2hhci51bnNhZmVfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgICAoKiB1cGRhdGUgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gKilcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgaWR4IDwgbGVuZ3RoIHNyYyAtIDFcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYykgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgKCogZm9yIGVzY2FwZWQgc3RyaW5nIGVuZGluZyB3aXRoIGFuIGVzY2FwaW5nIGNoYXIgbGlrZSBcIjAwMF9cIiwganVzdCBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMgLSAxKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGUnO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuICh1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZSB+ZXNjYXBlX2NoYXIgPSB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwOltdIH5lc2NhcGVfY2hhclxuXG4gIGxldCBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgcmVjIGxvb3AgcCBjbnQgPVxuICAgICAgaWYgcCA8IDAgfHwgQ2hhci4oIDw+ICkgc3RyLltwXSBlc2NhcGVfY2hhciB0aGVuIGNudCBlbHNlIGxvb3AgKHAgLSAxKSAoY250ICsgMSlcbiAgICBpblxuICAgIGxvb3AgKHBvcyAtIDEpIDBcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCBvZGQgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIG1vZCAyID0gMSBpblxuICAgIG1hdGNoIG9kZCwgQ2hhci5lcXVhbCBzdHIuW3Bvc10gZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgdHJ1ZSwgKHRydWUgfCBmYWxzZSkgLT4gYEVzY2FwZWRcbiAgICB8IGZhbHNlLCB0cnVlIC0+IGBFc2NhcGluZ1xuICAgIHwgZmFsc2UsIGZhbHNlIC0+IGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2JvdW5kIHN0ciBwb3MgZnVuY3Rpb25fbmFtZSA9XG4gICAgaWYgcG9zID49IGxlbmd0aCBzdHIgfHwgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIiVzOiBvdXQgb2YgYm91bmRzXCIgZnVuY3Rpb25fbmFtZSAoKVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwaW5nIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGluZ1wiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwaW5nIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGVkIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGVkXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBlZCAtPiB0cnVlXG4gICAgfCBgRXNjYXBpbmcgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2xpdGVyYWwgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2xpdGVyYWxcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImluZGV4X2Zyb21cIjtcbiAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgPVxuICAgICAgaWYgaSA+PSBwb3NcbiAgICAgICYmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAmJiBDaGFyLmVxdWFsIHN0ci5baV0gY2hhclxuICAgICAgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaSA9IGkgKyAxIGluXG4gICAgICAgIGlmIGkgPj0gbGVuZ3RoIHN0clxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSBsb29wIGkgKHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMpKVxuICAgIGluXG4gICAgbG9vcCBwb3MgKGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCBpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG4gIGxldCBpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcblxuICBsZXQgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcInJpbmRleF9mcm9tXCI7XG4gICAgKCogaWYgdGhlIHRhcmdldCBjaGFyIGlzIHRoZSBzYW1lIGFzIFtlc2NhcGVfY2hhcl0sIHdlIGhhdmUgbm8gd2F5IHRvIGRldGVybWluZSB3aGljaFxuICAgICAgIGVzY2FwZV9jaGFyIGlzIGxpdGVyYWwsIHNvIGp1c3QgcmV0dXJuIE5vbmUgKilcbiAgICBpZiBDaGFyLmVxdWFsIGNoYXIgZXNjYXBlX2NoYXJcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBwb3MgPVxuICAgICAgICBpZiBwb3MgPCAwXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXNjYXBlX2NoYXJzID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBpblxuICAgICAgICAgIGlmIGVzY2FwZV9jaGFycyBtb2QgMiA9IDAgJiYgQ2hhci5lcXVhbCBzdHIuW3Bvc10gY2hhclxuICAgICAgICAgIHRoZW4gU29tZSBwb3NcbiAgICAgICAgICBlbHNlIGxvb3AgKHBvcyAtIGVzY2FwZV9jaGFycyAtIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgcG9zKVxuICA7O1xuXG4gIGxldCByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJyaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgcmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgaWYgaXNfZW1wdHkgc3RyIHRoZW4gTm9uZSBlbHNlIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICAoKiBbc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uXSB3b3JrcyBzaW1pbGFybHkgdG8gW1N0cmluZy5zcGxpdF9nZW5dLCB3aXRoIGFuXG4gICAgIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQ6IG9ubHkgc3BsaXQgb24gbGl0ZXJhbCBjaGFycywgbm90IGVzY2FwaW5nIG9yIGVzY2FwZWQgKilcbiAgbGV0IHNwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbiA9XG4gICAgbGV0IGlzX2RlbGltID1cbiAgICAgIG1hdGNoIG9uIHdpdGhcbiAgICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICAgIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyBwb3MgPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIExpc3QucmV2IChzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoobGVuIC0gbGFzdF9wb3MpIDo6IGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgc3RhdHVzIGluXG4gICAgICAgIGlmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAgICYmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihwb3MgLSBsYXN0X3BvcykgaW5cbiAgICAgICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgc3RhdHVzIChwb3MgKyAxKSAocG9zICsgMSkpXG4gICAgICAgIGVsc2UgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIChwb3MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgW10gYExpdGVyYWwgMCAwXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG4gIGxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbiAgbGV0IHNwbGl0X2F0IHN0ciBwb3MgPVxuICAgIHN1YiBzdHIgfnBvczowIH5sZW46cG9zLCBzdWIgc3RyIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBzdHIgLSBwb3MgLSAxKVxuICA7O1xuXG4gIGxldCBsc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IHJzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcbiAgbGV0IHJzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChyaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG5cbiAgKCogW2xhc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYW5kIFtmaXJzdF9ub25fZHJvcF9saXRlcmFsXSBhcmUgZWl0aGVyIGJvdGggW05vbmVdIG9yIGJvdGhcbiAgICAgW1NvbWVdLiBJZiBbU29tZV0sIHRoZW4gdGhlIGZvcm1lciBpcyA+PSB0aGUgbGF0dGVyLiAqKVxuICBsZXQgbGFzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICByZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgbGZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbiAgOztcblxuICBsZXQgbHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgMCAtPiB0XG4gICAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG4gIDs7XG5cbiAgKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbiAgbGV0IHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gICAgKCogcGVyZm9ybWFuY2UgaGFjazogYXZvaWQgY29weWluZyBbdF0gaW4gY29tbW9uIGNhc2VzICopXG4gICAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuICA7O1xuZW5kXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuKCogT3ZlcnJpZGUgW1NlYXJjaF9wYXR0ZXJuXSB3aXRoIGRlZmF1bHQgY2FzZS1zZW5zaXRpdml0eSBhcmd1bWVudCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgZmlsZSwgc28gdGhhdCBjYWxsIHNpdGVzIGFib3ZlIGFyZSBmb3JjZWQgdG8gc3VwcGx5IGNhc2Utc2Vuc2l0aXZpdHkgZXhwbGljaXRseS4gKilcbm1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IHN0cnVjdFxuICBpbmNsdWRlIFNlYXJjaF9wYXR0ZXJuMFxuXG4gIGxldCBjcmVhdGUgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpIHBhdHRlcm4gPSBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmVcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9ieXRlcyA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoYnl0ZXNfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYnl0ZXMgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYnl0ZXNfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEJ5dGVzMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5CeXRlc1wiXG4gIGxldCBwcCBmbXQgdCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiICh0b19zdHJpbmcgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFRvX2J5dGVzID0gQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFQpIChUb19ieXRlcylcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIGVuZClcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgbiAwXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIkJ5dGVzLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gc2V0IHQgaSBjKTtcbiAgdFxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgKGkgLSAxKSAodW5zYWZlX2dldCB0IGkgOjogYWNjKVxuICBpblxuICBsb29wIHQgKGxlbmd0aCB0IC0gMSkgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcbmxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gbWFwaSB0IH5mXG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBwb3MgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzIGkpIHRhcmdldCB0aGVuIHVuc2FmZV9zZXQgcyBpIHJlcGxhY2VtZW50XG4gIGRvbmVcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAwXG4gIHRoZW4gc3RhZ2UgaWdub3JlXG4gIGVsc2UgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgMFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGk6IHJlcGxhY2VtZW50IGlzIHRoZSBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgaWdub3JlXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHMgaSAoU3RyaW5nLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCAodW5zYWZlX2dldCBzIGkpKSlcbiAgICAgICAgZG9uZSkpXG47O1xuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgY29udGFpbnMgP3BvcyA/bGVuIHQgY2hhciA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbGFzdCA9IHBvcyArIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIGxhc3RcbiAgICAmJiAoQ2hhci5lcXVhbCAoZ2V0IHQgaSkgY2hhciB8fCBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIjIDEgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gXG50eXBlIHJlc3VsdCA9XG58IE5lZyBvZiBzdHJpbmdcbnwgUG9zIG9mIHN0cmluZ1xuXG4jIDggXCJzcmMvaGV4X2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDgyXFwwMDBcXDEwNVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBwYXJzZV9oZXggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxMzUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOZWcgYm9keSApXG4jIDEzOSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDE0NSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIFBvcyBib2R5IClcbiMgMTQ5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBjb252ZXJ0X2ZhaWx1cmUgeCBhIGIgdG9fc3RyaW5nID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiY29udmVyc2lvbiBmcm9tICVzIHRvICVzIGZhaWxlZDogJXMgaXMgb3V0IG9mIHJhbmdlXCJcbiAgICBhXG4gICAgYlxuICAgICh0b19zdHJpbmcgeClcbiAgICAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBudW1fYml0c19pbnQgPSBTeXMuaW50X3NpemVfaW5fYml0c1xubGV0IG51bV9iaXRzX2ludDMyID0gMzJcbmxldCBudW1fYml0c19pbnQ2NCA9IDY0XG5sZXQgbnVtX2JpdHNfbmF0aXZlaW50ID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50ID0gNjMgfHwgbnVtX2JpdHNfaW50ID0gMzEgfHwgbnVtX2JpdHNfaW50ID0gMzIpXG5sZXQgbWluX2ludDMyID0gU3RkbGliLkludDMyLm1pbl9pbnRcbmxldCBtYXhfaW50MzIgPSBTdGRsaWIuSW50MzIubWF4X2ludFxubGV0IG1pbl9pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5taW5faW50XG5sZXQgbWF4X2ludDY0ID0gU3RkbGliLkludDY0Lm1heF9pbnRcbmxldCBtaW5fbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5taW5faW50XG5sZXQgbWF4X25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQubWF4X2ludFxubGV0IGludF90b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2ludFxubGV0IGludDMyX3RvX3N0cmluZyA9IFN0ZGxpYi5JbnQzMi50b19zdHJpbmdcbmxldCBpbnQ2NF90b19zdHJpbmcgPSBTdGRsaWIuSW50NjQudG9fc3RyaW5nXG5sZXQgbmF0aXZlaW50X3RvX3N0cmluZyA9IFN0ZGxpYi5OYXRpdmVpbnQudG9fc3RyaW5nXG5cbigqIGludCA8LT4gaW50MzIgKilcblxubGV0IGludF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludFwiIFwiaW50MzJcIiBpbnRfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50MzJcIiBcImludFwiIGludDMyX3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF90cnVuYyA9IFN0ZGxpYi5JbnQzMi50b19pbnRcbmxldCBpbnRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuSW50MzIub2ZfaW50XG5cbmxldCBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX2ludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX2ludF90cnVuYyBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9faW50X3RydW5jIG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQzMiBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50MzIgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnRfdG9faW50MzIgeCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50MzJfdG9faW50IHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50MzJfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBpbnRfdG9faW50MzJfdHJ1bmMgeCBlbHNlIGludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbmxldCBpbnQzMl90b19pbnRfZXhuIHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50MzJfdG9faW50X3RydW5jIHggZWxzZSBpbnQzMl90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludF90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9pbnRcbmxldCBpbnQ2NF90b19pbnRfdHJ1bmMgPSBTdGRsaWIuSW50NjQudG9faW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGxldCBtaW4gPSBpbnRfdG9faW50NjQgSW50Lm1pbl92YWx1ZSBpblxuICBsZXQgbWF4ID0gaW50X3RvX2ludDY0IEludC5tYXhfdmFsdWUgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50NjRfdG9faW50X3RydW5jIHggZWxzZSBpbnQ2NF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50XCIgbmF0aXZlaW50X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludF90b19uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludFxubGV0IG5hdGl2ZWludF90b19pbnRfdHJ1bmMgPSBTdGRsaWIuTmF0aXZlaW50LnRvX2ludFxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19uYXRpdmVpbnQgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9fbmF0aXZlaW50IEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludCB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnRfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDMyXCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50MzJfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfaW50MzJcbmxldCBpbnQ2NF90b19pbnQzMl90cnVuYyA9IFN0ZGxpYi5JbnQ2NC50b19pbnQzMlxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGxldCBtaW4gPSBpbnQzMl90b19pbnQ2NCBtaW5faW50MzIgaW5cbiAgbGV0IG1heCA9IGludDMyX3RvX2ludDY0IG1heF9pbnQzMiBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzIgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gaW50NjRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9XG4gIGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnQzMlwiIG5hdGl2ZWludF90b19zdHJpbmdcbjs7XG5cbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDMyX3RvX25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50MzJcbmxldCBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuTmF0aXZlaW50LnRvX2ludDMyXG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX25hdGl2ZWludCBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9fbmF0aXZlaW50IG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzIgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcIm5hdGl2ZWludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQ2NCA+PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X3RydW5jID0gU3RkbGliLkludDY0LnRvX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9uYXRpdmVpbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50NjQgPD0gbnVtX2JpdHNfbmF0aXZlaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gbmF0aXZlaW50X3RvX2ludDY0IG1pbl9uYXRpdmVpbnQgaW5cbiAgICBsZXQgbWF4ID0gbmF0aXZlaW50X3RvX2ludDY0IG1heF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIFNvbWUgKGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gaW50NjMgKilcblxubGV0IGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDYzXCIgaW50NjRfdG9fc3RyaW5nXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzID1cbiAgbGV0IG1pbiA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBtaW5faW50NjQgMSBpblxuICBsZXQgbWF4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IG1heF9pbnQ2NCAxIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF9maXRfb25faW50NjNfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiAoKSBlbHNlIGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeFxuOztcblxuKCogc3RyaW5nIGNvbnZlcnNpb25zICopXG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgPVxuICBsZXQgaW5wdXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBpZiBpbnB1dF9sZW5ndGggPD0gY2hhcnNfcGVyX2RlbGltaXRlclxuICB0aGVuIGlucHV0XG4gIGVsc2UgKFxuICAgIGxldCBoYXNfc2lnbiA9XG4gICAgICBtYXRjaCBpbnB1dC5bMF0gd2l0aFxuICAgICAgfCAnKycgfCAnLScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgbnVtX2RpZ2l0cyA9IGlmIGhhc19zaWduIHRoZW4gaW5wdXRfbGVuZ3RoIC0gMSBlbHNlIGlucHV0X2xlbmd0aCBpblxuICAgIGxldCBudW1fZGVsaW1pdGVycyA9IChudW1fZGlnaXRzIC0gMSkgLyBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IG91dHB1dF9sZW5ndGggPSBpbnB1dF9sZW5ndGggKyBudW1fZGVsaW1pdGVycyBpblxuICAgIGxldCBvdXRwdXQgPSBCeXRlcy5jcmVhdGUgb3V0cHV0X2xlbmd0aCBpblxuICAgIGxldCBpbnB1dF9wb3MgPSByZWYgKGlucHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG91dHB1dF9wb3MgPSByZWYgKG91dHB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gcmVmIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgZmlyc3RfZGlnaXRfcG9zID0gaWYgaGFzX3NpZ24gdGhlbiAxIGVsc2UgMCBpblxuICAgIHdoaWxlICFpbnB1dF9wb3MgPj0gZmlyc3RfZGlnaXRfcG9zIGRvXG4gICAgICBpZiAhbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGRlbGltaXRlcjtcbiAgICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgICBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIDo9IGNoYXJzX3Blcl9kZWxpbWl0ZXIpO1xuICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBpbnB1dC5bIWlucHV0X3Bvc107XG4gICAgICBkZWNyIGlucHV0X3BvcztcbiAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgIGRlY3IgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlclxuICAgIGRvbmU7XG4gICAgaWYgaGFzX3NpZ24gdGhlbiBCeXRlcy5zZXQgb3V0cHV0IDAgaW5wdXQuWzBdO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0cHV0KVxuOztcblxubGV0IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlciA9XG4gIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlcjozXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzIGlucHV0ID0gaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyOidfJ1xubGV0IHNleHBfb2ZfaW50X3N0eWxlID0gU2V4cC5vZl9pbnRfc3R5bGVcblxubW9kdWxlIE1ha2UgKEkgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIElcblxuICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDNcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9XG4gICAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAodG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHQgaW5cbiAgICBTZXhwLkF0b21cbiAgICAgIChtYXRjaCAhc2V4cF9vZl9pbnRfc3R5bGUgd2l0aFxuICAgICAgIHwgYFVuZGVyc2NvcmVzIC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgcyB+Y2hhcnNfcGVyX2RlbGltaXRlciB+ZGVsaW1pdGVyOidfJ1xuICAgICAgIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaGV4IChJIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRfaGV4ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoSS5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIEkuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gSS5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gNFxuXG4gICAgbGV0IHRvX3N0cmluZycgP2RlbGltaXRlciB0ID1cbiAgICAgIGxldCBtYWtlX3N1ZmZpeCA9XG4gICAgICAgIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJLnRvX3N0cmluZ1xuICAgICAgICB8IFNvbWUgZGVsaW1pdGVyIC0+XG4gICAgICAgICAgZnVuIHQgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAoSS50b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICAgICAgaW5cbiAgICAgIGlmIEkuKCA8ICkgdCBJLnplcm8gdGhlbiBcIi0weFwiIF4gbWFrZV9zdWZmaXggKEkubmVnIHQpIGVsc2UgXCIweFwiIF4gbWFrZV9zdWZmaXggdFxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmcnIHQgP2RlbGltaXRlcjpOb25lXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPSB0b19zdHJpbmcnIHQgfmRlbGltaXRlclxuXG4gICAgbGV0IGludmFsaWQgc3RyID1cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCIlcy5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiBJLm1vZHVsZV9uYW1lIHN0ciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIHN0ciA9XG4gICAgICBJLm9mX3N0cmluZyAoU3RyaW5nLmZpbHRlciBzdHIgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgJ18nKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgICAgbGV0IG1vZHVsZSBMID0gSGV4X2xleGVyIGluXG4gICAgICBsZXQgbGV4ID0gU3RkbGliLkxleGluZy5mcm9tX3N0cmluZyBzdHIgaW5cbiAgICAgIGxldCByZXN1bHQgPSBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBMLnBhcnNlX2hleCBsZXgpIGluXG4gICAgICBpZiBsZXgubGV4X2N1cnJfcG9zID0gbGV4LmxleF9idWZmZXJfbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWQgc3RyXG4gICAgICAgIHwgU29tZSAoTmVnIGJvZHkpIC0+IEkubmVnIChvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgICAgfCBTb21lIChQb3MgYm9keSkgLT4gb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICBlbHNlIGludmFsaWQgc3RyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhleCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVF9oZXhcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFRfaGV4KVxuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBmaWxlIHdhcyBhdXRvZ2VuZXJhdGVkIGJ5IC4uL2dlbmVyYXRlL2dlbmVyYXRlX3Bvd19vdmVyZmxvd19ib3VuZHMuZXhlICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgaGF2ZSB0byB1c2UgSW50NjQudG9faW50X2V4biBpbnN0ZWFkIG9mIGludCBjb25zdGFudHMgdG8gbWFrZVxuICAgc3VyZSB0aGF0IGZpbGUgY2FuIGJlIHByZXByb2Nlc3NlZCBvbiAzMi1iaXQgbWFjaGluZXMuICopXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUgOiBpbnQzMiA9XG4gIDIxNDc0ODM2NDdsXG5cbmxldCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQzMiBhcnJheSA9XG4gIFt8IDIxNDc0ODM2NDdsXG4gIDsgIDIxNDc0ODM2NDdsXG4gIDsgIDQ2MzQwbFxuICA7ICAxMjkwbFxuICA7ICAyMTVsXG4gIDsgIDczbFxuICA7ICAzNWxcbiAgOyAgMjFsXG4gIDsgIDE0bFxuICA7ICAxMGxcbiAgOyAgOGxcbiAgOyAgN2xcbiAgOyAgNWxcbiAgOyAgNWxcbiAgOyAgNGxcbiAgOyAgNGxcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUgOiBpbnQgPVxuICAoLTEpIGxzciAxXG5cbmxldCBpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50IGFycmF5ID1cbiAgbWF0Y2ggSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludCB3aXRoXG4gIHwgMzIgLT4gQXJyYXkubWFwIGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyB+ZjpTdGRsaWIuSW50MzIudG9faW50XG4gIHwgNjMgLT5cbiAgICBbfCBTdGRsaWIuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgU3RkbGliLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIFN0ZGxpYi5JbnQ2NC50b19pbnQgMjE0NzQ4MzY0N0xcbiAgICA7ICAxNjY0NTEwXG4gICAgOyAgNDYzNDBcbiAgICA7ICA1NDA0XG4gICAgOyAgMTI5MFxuICAgIDsgIDQ2M1xuICAgIDsgIDIxNVxuICAgIDsgIDExOFxuICAgIDsgIDczXG4gICAgOyAgNDlcbiAgICA7ICAzNVxuICAgIDsgIDI3XG4gICAgOyAgMjFcbiAgICA7ICAxN1xuICAgIDsgIDE0XG4gICAgOyAgMTJcbiAgICA7ICAxMFxuICAgIDsgIDlcbiAgICA7ICA4XG4gICAgOyAgN1xuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgMzEgLT5cbiAgICBbfCAxMDczNzQxODIzXG4gICAgOyAgMTA3Mzc0MTgyM1xuICAgIDsgIDMyNzY3XG4gICAgOyAgMTAyM1xuICAgIDsgIDE4MVxuICAgIDsgIDYzXG4gICAgOyAgMzFcbiAgICA7ICAxOVxuICAgIDsgIDEzXG4gICAgOyAgMTBcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDQ2MTE2ODYwMTg0MjczODc5MDNMXG5cbmxldCBpbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDIxNDc0ODM2NDdMXG4gIDsgIDE2NjQ1MTBMXG4gIDsgIDQ2MzQwTFxuICA7ICA1NDA0TFxuICA7ICAxMjkwTFxuICA7ICA0NjNMXG4gIDsgIDIxNUxcbiAgOyAgMTE4TFxuICA7ICA3M0xcbiAgOyAgNDlMXG4gIDsgIDM1TFxuICA7ICAyN0xcbiAgOyAgMjFMXG4gIDsgIDE3TFxuICA7ICAxNExcbiAgOyAgMTJMXG4gIDsgIDEwTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuXG5sZXQgaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAzMDM3MDAwNDk5TFxuICA7ICAyMDk3MTUxTFxuICA7ICA1NTEwOExcbiAgOyAgNjIwOExcbiAgOyAgMTQ0OExcbiAgOyAgNTExTFxuICA7ICAyMzRMXG4gIDsgIDEyN0xcbiAgOyAgNzhMXG4gIDsgIDUyTFxuICA7ICAzOExcbiAgOyAgMjhMXG4gIDsgIDIyTFxuICA7ICAxOExcbiAgOyAgMTVMXG4gIDsgIDEzTFxuICA7ICAxMUxcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgfF1cblxubGV0IGludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtMzAzNzAwMDQ5OUxcbiAgOyAgLTIwOTcxNTFMXG4gIDsgIC01NTEwOExcbiAgOyAgLTYyMDhMXG4gIDsgIC0xNDQ4TFxuICA7ICAtNTExTFxuICA7ICAtMjM0TFxuICA7ICAtMTI3TFxuICA7ICAtNzhMXG4gIDsgIC01MkxcbiAgOyAgLTM4TFxuICA7ICAtMjhMXG4gIDsgIC0yMkxcbiAgOyAgLTE4TFxuICA7ICAtMTVMXG4gIDsgIC0xM0xcbiAgOyAgLTExTFxuICA7ICAtOUxcbiAgOyAgLThMXG4gIDsgIC03TFxuICA7ICAtN0xcbiAgOyAgLTZMXG4gIDsgIC02TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0xTFxuICB8XVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgbmVnYXRpdmVfZXhwb25lbnQgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiZXhwb25lbnQgY2FuIG5vdCBiZSBuZWdhdGl2ZVwiICgpXG5sZXQgb3ZlcmZsb3cgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiaW50ZWdlciBvdmVyZmxvdyBpbiBwb3dcIiAoKVxuXG4oKiBUbyBpbXBsZW1lbnQgW2ludDY0X3Bvd10sIHdlIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gT0NhbWwgdG8gZWxpbWluYXRlIGFsbG9jYXRpb24uICopXG5leHRlcm5hbCBpbnRfbWF0aF9pbnRfcG93IDogaW50IC0+IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGludF9tYXRoX2ludDY0X3BvdyA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViXCJcblxubGV0IGludF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGlmIGV4cG9uZW50IDwgMCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFcbiAgJiYgKGV4cG9uZW50ID4gNjNcbiAgICAgIHx8IGFicyBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLihleHBvbmVudCkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIEludDY0X3dpdGhfY29tcGFyaXNvbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuSW50NjRcblxuICBleHRlcm5hbCAoIDwgKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoID49ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5lbmRcblxuKCogd2UgZG9uJ3QgZG8gW2Fic10gaW4gaW50NjQgY2FzZSB0byBhdm9pZCBhbGxvY2F0aW9uICopXG5sZXQgaW50NjRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgKGJhc2UgPiAxTCB8fCBiYXNlIDwgLTFMKVxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IChiYXNlID49IDBMXG4gICAgICAgICAgJiYgYmFzZVxuICAgICAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudCkpXG4gICAgICB8fCAoYmFzZSA8IDBMXG4gICAgICAgICAgJiYgYmFzZVxuICAgICAgICAgICAgIDwgUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudCkpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubGV0IGludDYzX3Bvd19vbl9pbnQ2NCBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMUxcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCBhYnMgYmFzZVxuICAgICAgICAgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICApXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIEZsb2F0YWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIH4tICkgOiB0IC0+IHRcblxuICBpbmNsdWRlIENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFggOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgb3BlbiBYXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gWC5yZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgb25lID0gb2ZfaW50X2V4biAxXG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gICgqKiBmbG9hdCBkaXZpc2lvbiBvZiBpbnRlZ2VycyAqKVxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGxldCByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPSBpIC0gKGkgJSBtb2R1bHVzKVxuXG4gIGxldCByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBpZiByZW1haW5kZXIgPSB6ZXJvIHRoZW4gaSBlbHNlIGkgKyBtb2R1bHVzIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgaWYgaSA9IHplcm9cbiAgICB0aGVuIHplcm9cbiAgICBlbHNlIGlmIGkgPiB6ZXJvXG4gICAgdGhlbiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgZWxzZSByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuXG4gIGxldCByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGxldCBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA9IG1vZHVsdXMgLSByZW1haW5kZXIgaW5cbiAgICBpZiBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA8PSByZW1haW5kZXJcbiAgICB0aGVuIGkgKyBtb2R1bHVzX21pbnVzX3JlbWFpbmRlclxuICAgIGVsc2UgaSAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgRG93biAtPiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgVXAgLT4gcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpbnRfcG93ID0gaW50X3Bvd1xuICBsZXQgaW50NjRfcG93ID0gaW50NjRfcG93XG4gIGxldCBpbnQ2M19wb3dfb25faW50NjQgPSBpbnQ2M19wb3dfb25faW50NjRcblxuICBtb2R1bGUgUG93X292ZXJmbG93X2JvdW5kcyA9IFBvd19vdmVyZmxvd19ib3VuZHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIEMgc3R1YiBmb3IgaW50IHBvcGNvdW50IHRvIHVzZSB0aGUgUE9QQ05UIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG5leHRlcm5hbCBpbnRfcG9wY291bnQgOiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudFwiIFtAQG5vYWxsb2NdXG5cbigqIFRvIG1haW50YWluIGphdmFzY3JpcHQgY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIHVuYm94aW5nLCB3ZSBpbXBsZW1lbnQgcG9wY291bnQgaW5cbiAgIE9DYW1sIHJhdGhlciB0aGFuIHVzZSBDIHN0dWJzLiBJbXBsZW1lbnRhdGlvbiBhZGFwdGVkIGZyb206XG4gICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYW1taW5nX3dlaWdodCNFZmZpY2llbnRfaW1wbGVtZW50YXRpb24gKilcbmxldCBpbnQ2NF9wb3Bjb3VudCA9XG4gIGxldCBvcGVuIFN0ZGxpYi5JbnQ2NCBpblxuICBsZXQgKCArICkgPSBhZGQgaW5cbiAgbGV0ICggLSApID0gc3ViIGluXG4gIGxldCAoICogKSA9IG11bCBpblxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgaW5cbiAgbGV0ICggbGFuZCApID0gbG9nYW5kIGluXG4gIGxldCBtMSA9IDB4NTU1NTU1NTU1NTU1NTU1NUwgaW5cbiAgKCogMGIwMTAxMDEwMS4uLiAqKVxuICBsZXQgbTIgPSAweDMzMzMzMzMzMzMzMzMzMzNMIGluXG4gICgqIDBiMDAxMTAwMTEuLi4gKilcbiAgbGV0IG00ID0gMHgwZjBmMGYwZjBmMGYwZjBmTCBpblxuICAoKiAwYjAwMDAxMTExLi4uICopXG4gIGxldCBoMDEgPSAweDAxMDEwMTAxMDEwMTAxMDFMIGluXG4gICgqIDEgYml0IHNldCBwZXIgYnl0ZSAqKVxuICBmdW4gW0BpbmxpbmVdIHggLT5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgcGFpciBvZiBiaXRzICopXG4gICAgbGV0IHggPSB4IC0gKCh4IGxzciAxKSBsYW5kIG0xKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSA0IGJpdHMgKilcbiAgICBsZXQgeCA9ICh4IGxhbmQgbTIpICsgKCh4IGxzciAyKSBsYW5kIG0yKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBieXRlICopXG4gICAgbGV0IHggPSAoeCArICh4IGxzciA0KSkgbGFuZCBtNCBpblxuICAgICgqIHN1bSB0aGUgYml0IGNvdW50cyBpbiB0aGUgdG9wIGJ5dGUgYW5kIHNoaWZ0IGl0IGRvd24gKilcbiAgICB0b19pbnQgKCh4ICogaDAxKSBsc3IgNTYpXG47O1xuXG5sZXQgaW50MzJfcG9wY291bnQgPVxuICAoKiBPbiA2NC1iaXQgc3lzdGVtcywgdGhpcyBpcyBmYXN0ZXIgdGhhbiBpbXBsZW1lbnRpbmcgdXNpbmcgW2ludDMyXSBhcml0aG1ldGljLiAqKVxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmTCBpblxuICBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKFN0ZGxpYi5JbnQ2NC5sb2dhbmQgKFN0ZGxpYi5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrKVxuOztcblxubGV0IG5hdGl2ZWludF9wb3Bjb3VudCA9XG4gIG1hdGNoIFN0ZGxpYi5OYXRpdmVpbnQuc2l6ZSB3aXRoXG4gIHwgMzIgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDMyX3BvcGNvdW50IChTdGRsaWIuTmF0aXZlaW50LnRvX2ludDMyIHgpXG4gIHwgNjQgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChTdGRsaWIuSW50NjQub2ZfbmF0aXZlaW50IHgpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2lnbjBcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFNpZ24wKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX3N0cmluZ19odW0gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBcIm5lZ2F0aXZlXCJcbiAgfCBaZXJvIC0+IFwiemVyb1wiXG4gIHwgUG9zIC0+IFwicG9zaXRpdmVcIlxuOztcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTEuXG4gIHwgWmVybyAtPiAwLlxuICB8IFBvcyAtPiAxLlxuOztcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9IG9mX2ludCAodG9faW50IHQgKiB0b19pbnQgdCcpXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGF0IHRoZSBlbmQsIGFmdGVyIGFueVxuICAgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc29cbiAgIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpc1xuICAgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRfaW50ZlxuaW5jbHVkZSBJbnQwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgeCB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIHggeVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICB8IF8gLT4gUHJpbnRmLmZhaWx3aXRoZiBcIkludC5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbmVuZFxuXG5sZXQgbnVtX2JpdHMgPSBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCB0b19mbG9hdCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBTdGRsaWIuaW50X29mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIFN0ZGxpYi5pbnRfb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIleFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIleFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiAodFtAbG9jYWxfb3B0XSkgLT4gKGludDMyW0Bsb2NhbF9vcHRdKSA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMl90cnVuYyA6IChpbnQzMltAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9pbnQ2NF90cnVuYyA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiAobmF0aXZlaW50W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5cbmxldCBwcmVkIGkgPSBpIC0gMVxubGV0IHN1Y2MgaSA9IGkgKyAxXG5sZXQgdG9faW50IGkgPSBpXG5sZXQgdG9faW50X2V4biA9IHRvX2ludFxubGV0IG9mX2ludCBpID0gaVxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IFN0ZGxpYi5taW5faW50XG5sZXQgbWF4X3ZhbHVlXzMwX2JpdHMgPSAweDNGRkZfRkZGRlxubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19pbnRcbmxldCBvZl9pbnQzMl9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnQzMiA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IHRvX2ludDY0ID0gQ29udi5pbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBhYnMgeCA9IGFicyB4XG5cbigqIG5vdGUgdGhhdCByZW0gaXMgbm90IHNhbWUgYXMgJSAqKVxubGV0IHJlbSBhIGIgPSBhIG1vZCBiXG5sZXQgaW5jciA9IFN0ZGxpYi5pbmNyXG5sZXQgZGVjciA9IFN0ZGxpYi5kZWNyXG5sZXQgc2hpZnRfcmlnaHQgYSBiID0gYSBhc3IgYlxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYSBiID0gYSBsc3IgYlxubGV0IHNoaWZ0X2xlZnQgYSBiID0gYSBsc2wgYlxubGV0IGJpdF9ub3QgYSA9IGxub3QgYVxubGV0IGJpdF9vciBhIGIgPSBhIGxvciBiXG5sZXQgYml0X2FuZCBhIGIgPSBhIGxhbmQgYlxubGV0IGJpdF94b3IgYSBiID0gYSBseG9yIGJcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludF9wb3dcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCAtIDEgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggKyAxXG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4IC0gKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCAoeCAtIDEpID0gMFxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoKiBOb3RlIHRoYXQgd2UgcGFzcyB0aGUgdGFnZ2VkIGludCBoZXJlLiBTZWUgaW50X21hdGhfc3R1YnMuYyBmb3IgZGV0YWlscyBvbiB3aHlcbiAgICAgICAgICB0aGlzIGlzIGNvcnJlY3QuICopXG4gICAgaW50XG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2Nsel91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludFtAdW50YWdnZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jdHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBpZiBpID0gMSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoaSAtIDEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBzaWduID0gU2lnbi5vZl9pbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludF9wb3Bjb3VudFxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVhZGRpbnRcIlxuICBleHRlcm5hbCAoIC0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJXN1YmludFwiXG4gIGV4dGVybmFsICggKiApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbXVsaW50XCJcbiAgZXh0ZXJuYWwgKCAvICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVkaXZpbnRcIlxuICBleHRlcm5hbCAoIH4tICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBtb2R1bGUgRiA9IEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgRlxuXG4gIGV4dGVybmFsIGJzd2FwMTYgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVic3dhcDE2XCJcblxuICAoKiBUaGVzZSBpbmxpbmVkIHZlcnNpb25zIG9mICglKSwgKC8lKSwgYW5kICgvLykgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aGVpciBmdW5jdG9yaXplZFxuICAgICBjb3VudGVycGFydHMgaW4gW0ZdIChzZWUgYmVuY2htYXJrcyBiZWxvdykuXG5cbiAgICAgVGhlIHJlYXNvbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZWQgaW4gW0ludF0gYnV0IG5vdCBpbiBhbnkgb2YgdGhlIG90aGVyIGludGVnZXJcbiAgICAgbW9kdWxlcyBpcyB0aGF0IHRoZXkgZXhpc3RlZCBpbiBbSW50XSBhbmQgW0ludF0gYWxvbmUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZlxuICAgICB0aGUgW0ludF9tYXRoLk1ha2VdIGZ1bmN0b3IsIGFuZCB3ZSBkaWRuJ3Qgd2FudCB0byBkZWdyYWRlIHRoZWlyIHBlcmZvcm1hbmNlLlxuXG4gICAgIFdlIHdvbid0IHByZS1lbXB0aXZlbHkgZG8gdGhlIHNhbWUgZm9yIG5ldyBmdW5jdGlvbnMsIHVubGVzcyBzb21lb25lIGNhcmVzLCBvbiBhIGNhc2VcbiAgICAgYnkgY2FzZSBmYXNoaW9uLiAgKilcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gcmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYW5kaW50XCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJW9yaW50XCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG4gIGxldCBsbm90ID0gbG5vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuICBleHRlcm5hbCAoIGxzciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlbHNyaW50XCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFzcmludFwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnRdIGFuZCBbSW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9fRiA9IE8uRlxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBpbmNsdWRpbmcgZnVuY3RvclxuICAgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFVjaGFyMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5VY2hhclwiXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gSGFzaC5mb2xkX2ludCBzdGF0ZSAodG9faW50IHQpXG4gIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGxldCB0b19zdHJpbmcgdCA9IFByaW50Zi5zcHJpbnRmIFwiVSslMDRYXCIgKHRvX2ludCB0KVxuXG4gICgqIERvIG5vdCBhY3R1YWxseSBleHBvcnQgdGhpcy4gU2VlIGRpc2N1c3Npb24gaW4gdGhlIC5tbGkgKilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIlUrJVhcIiAoZnVuIGkgLT4gVWNoYXIwLm9mX2ludCBpKSB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gb2YgdGhlIGZvcm0gVStYWFhYIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgaW50X2lzX3NjYWxhciA9IGlzX3ZhbGlkXG5cbmxldCBzdWNjX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5zdWNjIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnN1Y2NfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHN1Y2MgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAuc3VjYyBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBwcmVkX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5wcmVkIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnByZWRfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHByZWQgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAucHJlZCBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBvZl9zY2FsYXIgaSA9IGlmIGludF9pc19zY2FsYXIgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9zY2FsYXJfZXhuIGkgPVxuICBpZiBpbnRfaXNfc2NhbGFyIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci5vZl9pbnRfZXhuIGdvdCBhIGludmFsaWQgVW5pY29kZSBzY2FsYXIgdmFsdWU6ICUwNFhcIiBpICgpXG47O1xuXG5sZXQgdG9fc2NhbGFyIHQgPSBVY2hhcjAudG9faW50IHRcbmxldCB0b19jaGFyIGMgPSBpZiBpc19jaGFyIGMgdGhlbiBTb21lICh1bnNhZmVfdG9fY2hhciBjKSBlbHNlIE5vbmVcblxubGV0IHRvX2NoYXJfZXhuIGMgPVxuICBpZiBpc19jaGFyIGNcbiAgdGhlbiB1bnNhZmVfdG9fY2hhciBjXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIudG9fY2hhcl9leG4gZ290IGEgbm9uIGxhdGluLTEgY2hhcmFjdGVyOiBVKyUwNFhcIiAodG9faW50IGMpICgpXG47O1xuXG5sZXQgdXRmOF9ieXRlX2xlbmd0aCB1Y2hhciA9XG4gIGxldCBjb2RlcG9pbnQgPSB0b19zY2FsYXIgdWNoYXIgaW5cbiAgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MDBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIDRcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYSkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMDNfIGJfXzAwNF8pXG4gICAgICA6ICAoKGFfXzAwM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDA0XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAwM18sIGJfXzAwNF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyBUIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlRcIlxuOztcblxuW0BAQGVuZF1cblxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgc3ltICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYiwgYSkgdCA9IFRcbmxldCB0cmFucyAodHlwZSBhIGIgYykgKFQgOiAoYSwgYikgdCkgKFQgOiAoYiwgYykgdCkgOiAoYSwgYykgdCA9IFRcbmxldCBjb252ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgKGEgOiBhKSA6IGIgPSBhXG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG5cbm1vZHVsZSBMaWZ0MiAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdClcbiAgICA6ICgoYTEsIGEyKSBYLnQsIChiMSwgYjIpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubW9kdWxlIExpZnQzIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMiBhMyBiMykgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIChUIDogKGEzLCBiMykgdClcbiAgICA6ICgoYTEsIGEyLCBhMykgWC50LCAoYjEsIGIyLCBiMykgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5sZXQgZGV0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExICogYTIsIGIxICogYjIpIHQpIDogKGExLCBiMSkgdCAqIChhMiwgYjIpIHQgPVxuICBULCBUXG47O1xuXG5sZXQgdHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCA9IFRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBzdHJpcCA6ICgnYSB0LCAnYiB0KSBlcXVhbCAtPiAoJ2EsICdiKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZTIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHRcblxuICB2YWwgc3RyaXAgOiAoKCdhMSwgJ2EyKSB0LCAoJ2IxLCAnYjIpIHQpIGVxdWFsIC0+ICgnYTEsICdiMSkgZXF1YWwgKiAoJ2EyLCAnYjIpIGVxdWFsXG5lbmRcblxubW9kdWxlIENvbXBvc2l0aW9uX3ByZXNlcnZlc19pbmplY3Rpdml0eSAoTTEgOiBJbmplY3RpdmUpIChNMiA6IEluamVjdGl2ZSkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgTTEudCBNMi50XG5cbiAgbGV0IHN0cmlwIGUgPSBNMS5zdHJpcCAoTTIuc3RyaXAgZSlcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVpZCA9IEludFxuXG4gIG1vZHVsZSBXaXRuZXNzID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSAuLlxuICAgICAgdHlwZSB0eXBlX3dpdG5lc3NfaW50ID0gWyBgdHlwZV93aXRuZXNzIG9mIGludCBdIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICBsZXQgc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50ID1cbiAgICAgICAgKGZ1biAoYHR5cGVfd2l0bmVzcyB2X18wMDVfKSAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0eXBlX3dpdG5lc3NcIjsgc2V4cF9vZl9pbnQgdl9fMDA1XyBdXG4gICAgICAgICAgIDogdHlwZV93aXRuZXNzX2ludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICA7O1xuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IF9zZXhwX29mX2EgdCA9XG4gICAgICAgIGB0eXBlX3dpdG5lc3NcbiAgICAgICAgICAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWRcbiAgICAgICAgICAgICAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIHQpKVxuICAgICAgICB8PiBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBzZXhwX29mX3QgKHR5cGUgYSkgc2V4cF9vZl9hIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBNLktleSB8PiBLZXkuc2V4cF9vZl90IHNleHBfb2ZfYVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIHQpICgpID1cbiAgICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgOztcblxuICAgIGxldCB1aWQgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgTS5LZXkpXG4gICAgOztcblxuICAgICgqIFdlIHdhbnQgYSBjb25zdGFudCBhbGxvY2F0ZWQgb25jZSB0aGF0IFtzYW1lXSBjYW4gcmV0dXJuIHdoZW5ldmVyIGl0IGdldHMgdGhlIHNhbWVcbiAgICAgICB3aXRuZXNzZXMuICBJZiB3ZSB3cml0ZSB0aGUgY29uc3RhbnQgaW5zaWRlIHRoZSBib2R5IG9mIFtzYW1lXSwgdGhlIG5hdGl2ZS1jb2RlXG4gICAgICAgY29tcGlsZXIgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kIGxpZnQgaXQgb3V0LiAgQnV0IGZvciBjbGFyaXR5IGFuZCByb2J1c3RuZXNzLFxuICAgICAgIHdlIGRvIGl0IG91cnNlbHZlcy4gKilcbiAgICBsZXQgc29tZV90ID0gU29tZSBUXG5cbiAgICBsZXQgc2FtZSAodHlwZSBhIGIpIChhIDogYSB0KSAoYiA6IGIgdCkgOiAoYSwgYikgZXF1YWwgb3B0aW9uID1cbiAgICAgIGxldCBtb2R1bGUgQSA9ICh2YWwgYSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBCID0gKHZhbCBiIDogUyB3aXRoIHR5cGUgdCA9IGIpIGluXG4gICAgICBtYXRjaCBBLktleSB3aXRoXG4gICAgICB8IEIuS2V5IC0+IHNvbWVfdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuICBlbmRcblxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3aXRuZXNzIDogJ2EgV2l0bmVzcy50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyB0b19zZXhwIDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgXyB7IHdpdG5lc3M7IG5hbWU7IHRvX3NleHAgfSA6IFNleHAudCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gQXRvbSBuYW1lXG4gICAgZWxzZVxuICAgICAgTGlzdFxuICAgICAgICBbIExpc3QgWyBBdG9tIFwibmFtZVwiOyBBdG9tIG5hbWUgXVxuICAgICAgICA7IExpc3QgWyBBdG9tIFwid2l0bmVzc1wiOyB3aXRuZXNzIHw+IFdpdG5lc3Muc2V4cF9vZl90IHRvX3NleHAgXVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3NleHAgdCA9IHQudG9fc2V4cFxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBjcmVhdGUgfm5hbWUgdG9fc2V4cCA9IHsgd2l0bmVzcyA9IFdpdG5lc3MuY3JlYXRlICgpOyBuYW1lOyB0b19zZXhwIH1cbiAgbGV0IHVpZCB0ID0gV2l0bmVzcy51aWQgdC53aXRuZXNzXG4gIGxldCBoYXNoIHQgPSB1aWQgdFxuICBsZXQgaGFzaF9mb2xkX3QgcyB0ID0gaGFzaF9mb2xkX2ludCBzICh1aWQgdClcbiAgbGV0IHNhbWVfd2l0bmVzcyB0MSB0MiA9IFdpdG5lc3Muc2FtZSB0MS53aXRuZXNzIHQyLndpdG5lc3NcbiAgbGV0IHNhbWUgdDEgdDIgPSBPcHRpb24uaXNfc29tZSAoc2FtZV93aXRuZXNzIHQxIHQyKVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIHQxIHQyID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgdDEgdDIgd2l0aFxuICAgIHwgU29tZSB3IC0+IHdcbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIlR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBnb3QgZGlmZmVyZW50IGlkc1wiXG4gICAgICAgICAgIFsgKCBcIlwiXG4gICAgICAgICAgICAgLCBzZXhwX29mX3BhaXIgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHQxLCB0MilcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIF0pXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogWydhIENoZWFwX29wdGlvbi50XSBpcyBsaWtlIFsnYSBvcHRpb25dLCBidXQgaXQgZG9lc24ndCBib3ggW3NvbWUgX10gdmFsdWVzLlxuXG4gICAgVGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHRoYXQgYXJlIHVuc2FmZSBhYm91dCBpdDpcblxuICAgIC0gW2Zsb2F0IHQgYXJyYXldIChvciBhbnkgYXJyYXktYmFja2VkIGNvbnRhaW5lcikgaXMgbm90IG1lbW9yeS1zYWZlXG4gICAgICBiZWNhdXNlIGZsb2F0IGFycmF5IG9wdGltaXphdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB1bmJveGVkIG9wdGlvblxuICAgICAgb3B0aW1pemF0aW9uLiBZb3UgaGF2ZSB0byB1c2UgW1VuaWZvcm1fYXJyYXkudF0gaW5zdGVhZCBvZiBbYXJyYXldLlxuXG4gICAgLSBOZXN0ZWQgb3B0aW9ucyAoWydhIHQgdF0pIGRvbid0IHdvcmsuIFRoZXkgYXJlIGJlbGlldmVkIHRvIGJlXG4gICAgICBtZW1vcnktc2FmZSwgYnV0IG5vdCBwYXJhbWV0cmljLlxuXG4gICAgLSBBIHJlY29yZCB3aXRoIFtmbG9hdCB0XXMgaW4gaXQgc2hvdWxkIGJlIHNhZmUsIGJ1dCBpdCdzIG9ubHkgW3RdIGJlaW5nXG4gICAgICBhYnN0cmFjdCB0aGF0IGdpdmVzIHlvdSBzYWZldHkuIElmIHRoZSBjb21waWxlciB3YXMgc21hcnQgZW5vdWdoIHRvIHBlZWtcbiAgICAgIHRocm91Z2ggdGhlIG1vZHVsZSBzaWduYXR1cmUgdGhlbiBpdCBjb3VsZCBkZWNpZGUgdG8gY29uc3RydWN0IGEgZmxvYXRcbiAgICAgIGFycmF5IGluc3RlYWQuICopXG5tb2R1bGUgQ2hlYXBfb3B0aW9uID0gc3RydWN0XG4gICgqIFRoaXMgaXMgdGFrZW4gZnJvbSBjb3JlLiBSYXRoZXIgdGhhbiBleHBvc2UgaXQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgYmFzZSwganVzdFxuICAgICBrZWVwIGEgY29weSBhcm91bmQgaGVyZS4gKilcbiAgbGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoU3RkbGliLk9iai5tYWdpYyBiIDogYSlcblxuICBtb2R1bGUgVDAgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBub25lIDogXyB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiAnYSB0XG4gICAgdmFsIGlzX25vbmUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc19zb21lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiAnYVxuICAgIHZhbCB2YWx1ZV91bnNhZmUgOiAnYSB0IC0+ICdhXG4gICAgdmFsIGl0ZXJfc29tZSA6ICdhIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdFxuXG4gICAgKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgICAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICAgICAgSXQgd291bGQgYmUgc2ltcGxlciB0byB1c2UgdGhpcyB2YWx1ZSBhcyBbbm9uZV0sIGJ1dCB3ZSB1c2UgYW4gaW1tZWRpYXRlIGluc3RlYWRcbiAgICAgICBiZWNhdXNlIGl0IGxldHMgdXMgYXZvaWQgY2FtbF9tb2RpZnkgd2hlbiBzZXR0aW5nIHRvIFtub25lXSwgbWFraW5nIGNlcnRhaW5cbiAgICAgICBiZW5jaG1hcmtzIHNpZ25pZmljYW50bHkgZmFzdGVyIChlLmcuIC4uL2JlbmNoL2FycmF5X3F1ZXVlLmV4ZSkuXG5cbiAgICAgICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBNb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlciBwbGFjZSB3aGVyZSB3ZSB3YW50XG4gICAgICAgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbiAgICBsZXQgbm9uZV9zdWJzdGl0dXRlIDogXyB0ID1cbiAgICAgIFN0ZGxpYi5PYmoub2JqIChTdGRsaWIuT2JqLm5ld19ibG9jayBTdGRsaWIuT2JqLmFic3RyYWN0X3RhZyAxKVxuICAgIDs7XG5cbiAgICBsZXQgbm9uZSA6IF8gdCA9XG4gICAgICAoKiBUaGUgbnVtYmVyIHdhcyBwcm9kdWNlZCBieVxuICAgICAgICAgWzwgL2Rldi91cmFuZG9tIHRyIC1jIC1kICcxMjM0NTY3ODkwYWJjZGVmJyB8IGhlYWQgLWMgMTZdLlxuXG4gICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGEgcmFuZG9tIG51bWJlciB3aWxsIGhhdmUgbG93ZXIgcHJvYmFiaWxpdHkgdG8gY29sbGlkZSB3aXRoXG4gICAgICAgICBhbnl0aGluZyB0aGFuIGFueSBudW1iZXIgd2UgY2FuIGNob29zZSBvdXJzZWx2ZXMuXG5cbiAgICAgICAgIFdlIGFyZSB1c2luZyBhIHBvbHltb3JwaGljIHZhcmlhbnQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyIGNvbnN0YW50IGJlY2F1c2UgdGhlcmVcbiAgICAgICAgIGlzIGEgY29tcGlsZXIgYnVnIHdoZXJlIGl0IHdyb25nbHkgYXNzdW1lcyB0aGF0IHRoZSByZXN1bHQgb2YgW2lmIF8gdGhlbiBjIGVsc2VcbiAgICAgICAgIHldIGlzIG5vdCBhIHBvaW50ZXIgaWYgW2NdIGlzIGFuIGludGVnZXIgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgVGhpcyBpcyBiZWluZ1xuICAgICAgICAgZml4ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL3B1bGwvNTU1LiAgVGhlIFwibWVtb3J5IGNvcnJ1cHRpb25cIiB0ZXN0XG4gICAgICAgICBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIGlzc3VlLiAgKilcbiAgICAgIFN0ZGxpYi5PYmoubWFnaWMgYHg2ZThlZTM0NzhlMWQ3NDQ5XG4gICAgOztcblxuICAgIGxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsIHggbm9uZVxuICAgIGxldCBpc19zb21lIHggPSBub3QgKHBoeXNfZXF1YWwgeCBub25lKVxuXG4gICAgbGV0IHNvbWUgKHR5cGUgYSkgKHggOiBhKSA6IGEgdCA9XG4gICAgICBpZiBwaHlzX3NhbWUgeCBub25lIHRoZW4gbm9uZV9zdWJzdGl0dXRlIGVsc2UgU3RkbGliLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV91bnNhZmUgKHR5cGUgYSkgKHggOiBhIHQpIDogYSA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHggbm9uZV9zdWJzdGl0dXRlIHRoZW4gU3RkbGliLk9iai5tYWdpYyBub25lIGVsc2UgU3RkbGliLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV9leG4geCA9XG4gICAgICBpZiBpc19zb21lIHhcbiAgICAgIHRoZW4gdmFsdWVfdW5zYWZlIHhcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuOiB0aGUgZWxlbWVudCBpcyBbTm9uZV1cIlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcl9zb21lIHQgfmYgPSBpZiBpc19zb21lIHQgdGhlbiBmICh2YWx1ZV91bnNhZmUgdClcbiAgZW5kXG5cbiAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuXG4gICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgfCBTb21lIHggLT4gc29tZSB4XG4gICAgOztcblxuICAgIGxldFtAaW5saW5lXSB0b19vcHRpb24geCA9IGlmIGlzX3NvbWUgeCB0aGVuIFNvbWUgKHZhbHVlX3Vuc2FmZSB4KSBlbHNlIE5vbmVcbiAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19vcHRpb25cbiAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9vcHRpb25cblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoT3B0aW9uLnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUMVxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMSAoT3B0aW9uKSAoVDEpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgQ2hlYXBfb3B0aW9uLnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAwMV8geF9fMDAzXyAtPlxuICBVbmlmb3JtX2FycmF5LnRfb2Zfc2V4cCAoQ2hlYXBfb3B0aW9uLnRfb2Zfc2V4cCBfb2ZfYV9fMDAxXykgeF9fMDAzX1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDA0XyB4X18wMDVfIC0+XG4gIFVuaWZvcm1fYXJyYXkuc2V4cF9vZl90IChDaGVhcF9vcHRpb24uc2V4cF9vZl90IF9vZl9hX18wMDRfKSB4X18wMDVfXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9zZXhwX2dyYW1tYXIgKENoZWFwX29wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVtcHR5ID0gVW5pZm9ybV9hcnJheS5lbXB0eVxubGV0IGNyZWF0ZSB+bGVuID0gVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbiBDaGVhcF9vcHRpb24ubm9uZVxubGV0IGluaXQgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIChmIGkpKSBbQG5vbnRhaWxdXG5sZXQgaW5pdF9zb21lIG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLnNvbWUgKGYgaSkpIFtAbm9udGFpbF1cbmxldCBsZW5ndGggPSBVbmlmb3JtX2FycmF5Lmxlbmd0aFxubGV0W0BpbmxpbmVdIGdldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19ub25lIHQgaSA9IENoZWFwX29wdGlvbi5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IHNldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHNldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHNldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxubGV0IHN3YXAgdCBpIGogPSBVbmlmb3JtX2FycmF5LnN3YXAgdCBpIGpcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX2dldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgdW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgdCBpID1cbiAgQ2hlYXBfb3B0aW9uLnZhbHVlX3Vuc2FmZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbjs7XG5cbmxldCB1bnNhZmVfaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHVuc2FmZV9zZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgdW5zYWZlX3NldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcblxubGV0IGNsZWFyIHQgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldF9ub25lIHQgaVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgaW5wdXQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGlucHV0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBpbnB1dCBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlciBpbnB1dCB+ZiA9IGl0ZXJpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5cbmxldCBmb2xkaSBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiBhY2MgOj0gZiBpICFhY2MgZWxlbSk7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkIGlucHV0IH5pbml0IH5mID0gZm9sZGkgaW5wdXQgfmluaXQgfmY6KGZ1biAoXyA6IGludCkgYWNjIHggLT4gZiBhY2MgeCkgW0Bub250YWlsXVxuXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyLk1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsIF8pIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbHQgPSAnYSBvcHRpb25cblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcblxubGV0IG1hcGkgaW5wdXQgfmYgPVxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW46KGxlbmd0aCBpbnB1dCkgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gdW5zYWZlX3NldCBvdXRwdXQgaSAoZiBpIGVsZW0pKTtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSBlbGVtIC0+IGYgZWxlbSkgW0Bub250YWlsXVxuXG5sZXQgbWFwX3NvbWUgaW5wdXQgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbiBpblxuICBsZXQgKCkgPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgb3B0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGlucHV0IGkgaW5cbiAgICAgIENoZWFwX29wdGlvbi5pdGVyX3NvbWUgb3B0IH5mOihmdW4geCAtPiB1bnNhZmVfc2V0X3NvbWUgb3V0cHV0IGkgKGYgeCkpXG4gICAgZG9uZVxuICBpblxuICBvdXRwdXRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcblxubGV0IG9mX2FycmF5X3NvbWUgYXJyYXkgPVxuICBpbml0X3NvbWUgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxuaW5jbHVkZSBCbGl0Lk1ha2UxX2dlbmVyaWMgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5ID0gVW5pZm9ybV9hcnJheS5jb3B5XG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlX2NoZWFwX29wdGlvbiA9IENoZWFwX29wdGlvblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhY2tfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIFtEZXF1ZV0gaW4gdGhhdCBpdCB1c2VzIGFuIGFycmF5IG9mIFsnYV0gYW5kXG4gICBhIG11dGFibGUgW2ludF0gdG8gaW5kaWNhdGUgd2hhdCBpbiB0aGUgYXJyYXkgaXMgdXNlZC4gIFdlIGNob29zZSB0byBpbXBsZW1lbnQgW1N0YWNrXVxuICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4gb24gdG9wIG9mIFtEZXF1ZV0gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBFLmcuIGEgc2ltcGxlXG4gICBtaWNyb2JlbmNobWFyayBzaG93cyB0aGF0IHB1c2gvcG9wIGlzIGFib3V0IDIwJSBmYXN0ZXIuICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV8geyBsZW5ndGggPSBsZW5ndGhfXzAwM187IGVsdHMgPSBlbHRzX18wMDVfIH0gLT5cbiAgbGV0IGJuZHNfXzAwMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDZfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMDVfIGluXG4gICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwM18gaW5cbiAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gIGluXG4gIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgc2V4cF9vZl90ID0gYFJlYm91bmRfbGF0ZXJcbmxldCBfID0gc2V4cF9vZl90XG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgKHsgbGVuZ3RoOyBlbHRzIH0gYXMgdCkgOiB1bml0ID1cbiAgdHJ5XG4gICAgYXNzZXJ0ICgwIDw9IGxlbmd0aCAmJiBsZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgICAgaW52YXJpYW50X2EgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBpKVxuICAgIGRvbmU7XG4gICAgKCogV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHVudXNlZCBlbGVtZW50cyBhcmUgdW5zZXQgdG8gYXZvaWQgYSBzcGFjZVxuICAgICAgIGxlYWsuICopXG4gICAgZm9yIGkgPSBsZW5ndGggdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzIC0gMSBkb1xuICAgICAgYXNzZXJ0IChub3QgKE9wdGlvbl9hcnJheS5pc19zb21lIGVsdHMgaSkpXG4gICAgZG9uZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJTdGFjay5pbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJleG5cIiwgZXhuIHw+IEV4bi5zZXhwX29mX3Q7IFwic3RhY2tcIiwgdCB8PiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9vcGFxdWUgXSlcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSB7IGxlbmd0aCA9IDA7IGVsdHMgPSBPcHRpb25fYXJyYXkuZW1wdHkgfVxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFRoZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcmUgdmlzaXRlZCBoYXMgYmVlbiBjaG9zZW4gc28gYXMgdG8gYmUgYmFja3dhcmRzXG4gICBjb21wYXRpYmxlIHdpdGggW1N0ZGxpYi5TdGFja10gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICFyIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1lbSA9IEMubWVtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgb2ZfbGlzdCAodHlwZSBhKSAobCA6IGEgbGlzdCkgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxcbiAgdGhlbiBjcmVhdGUgKClcbiAgZWxzZSAoXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjooMiAqIGxlbmd0aCkgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgT3B0aW9uX2FycmF5LnNldF9zb21lIGVsdHMgaSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHsgbGVuZ3RoOyBlbHRzIH0pXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHJlc2l6ZSB0IHNpemUgPVxuICBsZXQgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOnNpemUgaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfnNyYzp0LmVsdHMgfmRzdDphcnIgfnNyY19wb3M6MCB+ZHN0X3BvczowIH5sZW46dC5sZW5ndGg7XG4gIHQuZWx0cyA8LSBhcnJcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IG5ld19jYXBhY2l0eSAobGVuZ3RoIHQpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gcmVzaXplIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgcHVzaCB0IGEgPVxuICBpZiB0Lmxlbmd0aCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzIHRoZW4gcmVzaXplIHQgKDIgKiAodC5sZW5ndGggKyAxKSk7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmVsdHMgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IHQubGVuZ3RoIC0gMSBpblxuICBsZXQgcmVzdWx0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGk7XG4gIHQubGVuZ3RoIDwtIGk7XG4gIHJlc3VsdFxuOztcblxubGV0IHBvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnBvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgcG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9ub25lbXB0eSB0KVxubGV0IHBvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSBwb3BfZXJyb3IgZWxzZSBwb3Bfbm9uZW1wdHkgdFxubGV0IHRvcF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgKHQubGVuZ3RoIC0gMSlcbmxldCB0b3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay50b3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHRvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3Bfbm9uZW1wdHkgdClcbmxldCB0b3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgdG9wX2Vycm9yIGVsc2UgdG9wX25vbmVtcHR5IHRcbmxldCBjb3B5IHsgbGVuZ3RoOyBlbHRzIH0gPSB7IGxlbmd0aDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jb3B5IGVsdHMgfVxuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDApXG47O1xuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGYgKHBvcF9ub25lbXB0eSB0KTtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKCkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgbWF0Y2ggZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IHB1c2ggdF9yZXN1bHQgeFxuICBkb25lO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgeCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgICBpZiBmIHggdGhlbiBwdXNoIHRfcmVzdWx0IHhcbiAgZG9uZTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHdyaXRlX2luZGV4ID0gcmVmIDAgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICBmb3IgcmVhZF9pbmRleCA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgIGxldCB4ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQuZWx0cyByZWFkX2luZGV4IGluXG4gICAgICAgIGlmIGYgeFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpZiAhd3JpdGVfaW5kZXggPCByZWFkX2luZGV4XG4gICAgICAgICAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAhd3JpdGVfaW5kZXggeDtcbiAgICAgICAgICBpbmNyIHdyaXRlX2luZGV4KVxuICAgICAgZG9uZSlcbiAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICBmb3IgaSA9ICF3cml0ZV9pbmRleCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgaVxuICAgICAgZG9uZTtcbiAgICAgIHQubGVuZ3RoIDwtICF3cml0ZV9pbmRleCkgW0Bub250YWlsXVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgcHVzaCB0IHg7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhpcyBpcyBsaWZ0ZWQgb3V0IG9mIFtNXSBiZWNhdXNlIFtTb3VyY2VfY29kZV9wb3NpdGlvbjBdIGV4cG9ydHMgW1N0cmluZzBdXG4gICBhcyBbU3RyaW5nXSwgd2hpY2ggZG9lcyBub3QgZXhwb3J0IGEgaGFzaCBmdW5jdGlvbi4gKilcbmxldCBoYXNoX292ZXJyaWRlIHsgU3RkbGliLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9ID1cbiAgU3RyaW5nLmhhc2ggcG9zX2ZuYW1lXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2xudW1cbiAgbHhvciBJbnQuaGFzaCBwb3NfYm9sXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2NudW1cbjs7XG5cbm1vZHVsZSBNID0gc3RydWN0XG4gIGluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5cbiAgbGV0IGhhc2ggPSBoYXNoX292ZXJyaWRlXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChNKVxuXG5sZXQgb2ZfcG9zIChwb3NfZm5hbWUsIHBvc19sbnVtLCBwb3NfY251bSwgXykgPVxuICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sID0gMCB9XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdcbiAgICB8IFplcm9cbiAgICB8IFBvc1xuICAgIHwgTmFuXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbl9vcl9uYW4ubWwuVC50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIChmdW4gaHN2IGFyZyAtPlxuICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgIHwgTmFuIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgM1xuICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvczsgTmFuIF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25fb3JfbmFuXCJcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogVC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogVC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBULnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogVC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IFQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IG9mX3NpZ24gPSBmdW5jdGlvblxuICB8IFNpZ24uTmVnIC0+IE5lZ1xuICB8IFNpZ24uWmVybyAtPiBaZXJvXG4gIHwgU2lnbi5Qb3MgLT4gUG9zXG47O1xuXG5sZXQgdG9fc2lnbl9leG4gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBTaWduLk5lZ1xuICB8IFplcm8gLT4gU2lnbi5aZXJvXG4gIHwgUG9zIC0+IFNpZ24uUG9zXG4gIHwgTmFuIC0+IGludmFsaWRfYXJnIFwiQmFzZS5TaWduX29yX25hbi50b19zaWduX2V4bjogTmFuXCJcbjs7XG5cbmxldCBvZl9pbnQgbiA9IG9mX3NpZ24gKFNpZ24ub2ZfaW50IG4pXG5sZXQgdG9faW50X2V4biB0ID0gU2lnbi50b19pbnQgKHRvX3NpZ25fZXhuIHQpXG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuICB8IE5hbiAtPiBOYW5cbjs7XG5cbmxldCAoICogKSB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5hbiwgXyB8IF8sIE5hbiAtPiBOYW5cbiAgfCBfIC0+IG9mX3NpZ24gKFNpZ24uKCAqICkgKHRvX3NpZ25fZXhuIHQpICh0b19zaWduX2V4biB0JykpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFwibmVnYXRpdmVcIlxuICB8IFplcm8gLT4gXCJ6ZXJvXCJcbiAgfCBQb3MgLT4gXCJwb3NpdGl2ZVwiXG4gIHwgTmFuIC0+IFwibm90LWEtbnVtYmVyXCJcbjs7XG5cbigqIEluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgYW55IGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXRcbiAgIGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgYWxsIDogJ2EuICdhIGxpc3QgLT4gJ2EgdCBsaXN0ID1cbiAgZnVuIF9hbGxfb2ZfYSAtPlxuICBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICB8IGVudW1lcmF0ZV9fMDAxXyA6OiBsIC0+IG1hcCBsIChJbmNsIGVudW1lcmF0ZV9fMDAxXyA6OiBhY2MpXG4gICAgIGluXG4gICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgKFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgICAgIHwgZW51bWVyYXRlX18wMDJfIDo6IGwgLT4gbWFwIGwgKEV4Y2wgZW51bWVyYXRlX18wMDJfIDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAgICBbIFVuYm91bmRlZCBdKVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMThfKSA6ICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfIHQpIC0+XG4gIGxldCBlcnJvcl9zb3VyY2VfXzAwNl8gPSBcIm1heWJlX2JvdW5kLm1sLnRcIiBpblxuICBmdW4gX29mX2FfXzAwM18gLT4gZnVuY3Rpb25cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgX3RhZ19fMDA5XykgOjogc2V4cF9hcmdzX18wMTBfKSBhc1xuICAgICAgX3NleHBfXzAwOF8gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxMF8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTFfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAwM18gYXJnMF9fMDExXyBpblxuICAgICAgICAgSW5jbCByZXMwX18wMTJfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMDlfXG4gICAgICAgICAgIF9zZXhwX18wMDhfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTZfIGluXG4gICAgICAgICBFeGNsIHJlczBfXzAxN19cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSAtPiBVbmJvdW5kZWRcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIDo6IF8pIGFzXG4gICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IHNleHBfXzAwNV8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biAodHlwZSBhX18wMjRfKSA6ICgoYV9fMDI0XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAyNF8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gIGZ1biBfb2ZfYV9fMDE5XyAtPiBmdW5jdGlvblxuICAgIHwgSW5jbCBhcmcwX18wMjBfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIxXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkluY2xcIjsgcmVzMF9fMDIxXyBdXG4gICAgfCBFeGNsIGFyZzBfXzAyMl8gLT5cbiAgICAgIGxldCByZXMwX18wMjNfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhjbFwiOyByZXMwX18wMjNfIF1cbiAgICB8IFVuYm91bmRlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmJvdW5kZWRcIlxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiSW5jbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXhjbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlVuYm91bmRlZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG50eXBlIGludGVydmFsX2NvbXBhcmlzb24gPVxuICB8IEJlbG93X2xvd2VyX2JvdW5kXG4gIHwgSW5fcmFuZ2VcbiAgfCBBYm92ZV91cHBlcl9ib3VuZFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cblxubGV0IGludGVydmFsX2NvbXBhcmlzb25fb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJtYXliZV9ib3VuZC5tbC5pbnRlcnZhbF9jb21wYXJpc29uXCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSAtPiBCZWxvd19sb3dlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgLT4gSW5fcmFuZ2VcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIC0+IEFib3ZlX3VwcGVyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IHNleHBfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IGludGVydmFsX2NvbXBhcmlzb24pXG47O1xuXG5sZXQgc2V4cF9vZl9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJCZWxvd19sb3dlcl9ib3VuZFwiXG4gICAgfCBJbl9yYW5nZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbl9yYW5nZVwiXG4gICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJBYm92ZV91cHBlcl9ib3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0IChpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW1hciA6IGludGVydmFsX2NvbXBhcmlzb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJCZWxvd19sb3dlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiSW5fcmFuZ2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkFib3ZlX3VwcGVyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoU3RkbGliLmNvbXBhcmUgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50KVxuOztcblxubGV0IChoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiA6XG4gICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEluX3JhbmdlIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoX2ludGVydmFsX2NvbXBhcmlzb24gOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBJbmNsIChmIGluY2wpXG4gIHwgRXhjbCBleGNsIC0+IEV4Y2wgKGYgZXhjbClcbiAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG47O1xuXG5sZXQgaXNfbG93ZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBpbmNsIGEgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGV4Y2wgYSA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX3VwcGVyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgYSBpbmNsIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBhIGV4Y2wgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgbWF0Y2ggbG93ZXIgd2l0aFxuICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICB8IEluY2wgbG93ZXIgfCBFeGNsIGxvd2VyIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgfCBJbmNsIHVwcGVyIHwgRXhjbCB1cHBlciAtPiBjb21wYXJlIGxvd2VyIHVwcGVyID4gMClcbjs7XG5cbmxldCBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIGlmIGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmVcbiAgdGhlbiBmYWlsd2l0aCBcIk1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuOiBsb3dlciBib3VuZCA+IHVwcGVyIGJvdW5kXCJcbjs7XG5cbmxldCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZTtcbiAgaWYgbm90IChpc19sb3dlcl9ib3VuZCBsb3dlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQmVsb3dfbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBub3QgKGlzX3VwcGVyX2JvdW5kIHVwcGVyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBBYm92ZV91cHBlcl9ib3VuZFxuICBlbHNlIEluX3JhbmdlXG47O1xuXG5sZXQgaW50ZXJ2YWxfY29udGFpbnNfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIG1hdGNoIGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gdHJ1ZVxuICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYE9rIG9mICdhXG4gICAgfCBgRHVwbGljYXRlXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgfCBgT2sgX2xlZnRfXzAwM18sIGBPayBfcmlnaHRfXzAwNF8gLT4gX2NtcF9fYSBfbGVmdF9fMDAzXyBfcmlnaHRfXzAwNF9cbiAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiAwXG4gICAgICB8IHgsIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNV8gYl9fMDA2XyAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDVfIGJfXzAwNl9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzAwNV8sIGJfXzAwNl8gd2l0aFxuICAgICAgICB8IGBPayBfbGVmdF9fMDA3XywgYE9rIF9yaWdodF9fMDA4XyAtPiBfY21wX19hIF9sZWZ0X18wMDdfIF9yaWdodF9fMDA4X1xuICAgICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gdHJ1ZVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAwOV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYE9rIHZfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgX29mX2FfXzAwOV8gdl9fMDEwXyBdXG4gICAgICB8IGBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRHVwbGljYXRlXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSBjb21wYXJhdG9yOigna2V5LCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2sgJ3YuICgnayAtPiAnayAtPiBpbnQpIC0+ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBsZXQgdF9fMDEzXywgdF9fMDE0XyA9IGFfXzAxMV8gaW5cbiAgICBsZXQgdF9fMDE1XywgdF9fMDE2XyA9IGJfXzAxMl8gaW5cbiAgICBtYXRjaCBfY21wX19rIHRfXzAxM18gdF9fMDE1XyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBpZiBTdGRsaWIuKCA9PSApIHRfXzAxNF8gdF9fMDE2X1xuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdF9fMDE0XywgdF9fMDE2XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzAxN18sIGBMZWZ0IF9yaWdodF9fMDE4XyAtPiBfY21wX192IF9sZWZ0X18wMTdfIF9yaWdodF9fMDE4X1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDE5XywgYFJpZ2h0IF9yaWdodF9fMDIwXyAtPiBfY21wX192IF9sZWZ0X18wMTlfIF9yaWdodF9fMDIwX1xuICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMjFfLCBgVW5lcXVhbCBfcmlnaHRfXzAyMl8gLT5cbiAgICAgICAgICBsZXQgdF9fMDIzXywgdF9fMDI0XyA9IF9sZWZ0X18wMjFfIGluXG4gICAgICAgICAgbGV0IHRfXzAyNV8sIHRfXzAyNl8gPSBfcmlnaHRfXzAyMl8gaW5cbiAgICAgICAgICAobWF0Y2ggX2NtcF9fdiB0X18wMjNfIHRfXzAyNV8gd2l0aFxuICAgICAgICAgICB8IDAgLT4gX2NtcF9fdiB0X18wMjRfIHRfXzAyNl9cbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHkpXG4gICAgfCBuIC0+IG5cbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdrICd2LlxuICAgICgnayAtPiAnayAtPiBib29sKSAtPiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgICAgIGxldCB0X18wMjlfLCB0X18wMzBfID0gYV9fMDI3XyBpblxuICAgICAgbGV0IHRfXzAzMV8sIHRfXzAzMl8gPSBiX18wMjhfIGluXG4gICAgICBTdGRsaWIuKCAmJiApXG4gICAgICAgIChfY21wX19rIHRfXzAyOV8gdF9fMDMxXylcbiAgICAgICAgKGlmIFN0ZGxpYi4oID09ICkgdF9fMDMwXyB0X18wMzJfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCB0X18wMzBfLCB0X18wMzJfIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDMzXywgYExlZnQgX3JpZ2h0X18wMzRfIC0+IF9jbXBfX3YgX2xlZnRfXzAzM18gX3JpZ2h0X18wMzRfXG4gICAgICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMzVfLCBgUmlnaHQgX3JpZ2h0X18wMzZfIC0+IF9jbXBfX3YgX2xlZnRfXzAzNV8gX3JpZ2h0X18wMzZfXG4gICAgICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAzN18sIGBVbmVxdWFsIF9yaWdodF9fMDM4XyAtPlxuICAgICAgICAgICAgIGxldCB0X18wMzlfLCB0X18wNDBfID0gX2xlZnRfXzAzN18gaW5cbiAgICAgICAgICAgICBsZXQgdF9fMDQxXywgdF9fMDQyXyA9IF9yaWdodF9fMDM4XyBpblxuICAgICAgICAgICAgIFN0ZGxpYi4oICYmICkgKF9jbXBfX3YgdF9fMDM5XyB0X18wNDFfKSAoX2NtcF9fdiB0X18wNDBfIHRfXzA0Ml8pXG4gICAgICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuKCA9ICkgeCB5KSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnayAndi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdrKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wNTdfID0gXCJtYXBfaW50Zi5tbC5TeW1tZXRyaWNfZGlmZl9lbGVtZW50LnRcIiBpblxuICAgIGZ1biBfb2Zfa19fMDQzXyBfb2Zfdl9fMDQ0XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNjdfOyBhcmcxX18wNjhfIF0gLT5cbiAgICAgICAgbGV0IHJlczBfXzA2OV8gPSBfb2Zfa19fMDQzXyBhcmcwX18wNjdfXG4gICAgICAgIGFuZCByZXMxX18wNzBfID1cbiAgICAgICAgICBsZXQgc2V4cF9fMDY2XyA9IGFyZzFfXzA2OF8gaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNleHBfXzA2Nl8gd2l0aFxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyBhcyBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIDo6IHNleHBfYXJnc19fMDUwXykgYXNcbiAgICAgICAgICAgICAgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiBhcyBfdGFnX18wNjNfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2NF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDY1XyA9IF9vZl92X18wNDRfIGFyZzBfXzA2NF8gaW5cbiAgICAgICAgICAgICAgICAgICAgYExlZnQgcmVzMF9fMDY1X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjNfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiBhcyBfdGFnX18wNjBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2MV8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDYyXyA9IF9vZl92X18wNDRfIGFyZzBfXzA2MV8gaW5cbiAgICAgICAgICAgICAgICAgICAgYFJpZ2h0IHJlczBfXzA2Ml9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYwX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiBhcyBfdGFnX18wNTFfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA1OF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU5XyA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYXJnMF9fMDU4XyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNTJfOyBhcmcxX18wNTNfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDUyX1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2Zfdl9fMDQ0XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMwX18wNTRfLCByZXMxX18wNTVfXG4gICAgICAgICAgICAgICAgICAgICAgfCBzZXhwX18wNTZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNleHBfXzA1Nl9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYFVuZXF1YWwgcmVzMF9fMDU5X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNTFfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgIHNleHBfXzA2Nl9cbiAgICAgICAgaW5cbiAgICAgICAgcmVzMF9fMDY5XywgcmVzMV9fMDcwX1xuICAgICAgfCBzZXhwX18wNzFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgZXJyb3Jfc291cmNlX18wNTdfIDIgc2V4cF9fMDcxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdrICd2LlxuICAgICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2Zfa19fMDcyXyBfb2Zfdl9fMDczXyAoYXJnMF9fMDgxXywgYXJnMV9fMDgyXykgLT5cbiAgICAgIGxldCByZXMwX18wODNfID0gX29mX2tfXzA3Ml8gYXJnMF9fMDgxX1xuICAgICAgYW5kIHJlczFfXzA4NF8gPVxuICAgICAgICBtYXRjaCBhcmcxX18wODJfIHdpdGhcbiAgICAgICAgfCBgTGVmdCB2X18wNzRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2Zfdl9fMDczXyB2X18wNzRfIF1cbiAgICAgICAgfCBgUmlnaHQgdl9fMDc1XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl92X18wNzNfIHZfXzA3NV8gXVxuICAgICAgICB8IGBVbmVxdWFsIHZfXzA3Nl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbFwiXG4gICAgICAgICAgICA7IChsZXQgYXJnMF9fMDc3XywgYXJnMV9fMDc4XyA9IHZfXzA3Nl8gaW5cbiAgICAgICAgICAgICAgIGxldCByZXMwX18wNzlfID0gX29mX3ZfXzA3M18gYXJnMF9fMDc3X1xuICAgICAgICAgICAgICAgYW5kIHJlczFfXzA4MF8gPSBfb2Zfdl9fMDczXyBhcmcxX18wNzhfIGluXG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wNzlfOyByZXMxX18wODBfIF0pXG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDgzXzsgcmVzMV9fMDg0XyBdXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgICAnayAndi5cbiAgICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydrX3NleHBfZ3JhbW1hciBfJ3Zfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIExpc3RcbiAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAoIF8na19zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgLCBDb25zXG4gICAgICAgICAgICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEVtcHR5IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpXG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wODVfIGJfXzA4Nl8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzA4NV8gYl9fMDg2X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDg1XywgYl9fMDg2XyB3aXRoXG4gICAgICB8IGBMZWZ0IF9sZWZ0X18wODdfLCBgTGVmdCBfcmlnaHRfXzA4OF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDg3XyBfcmlnaHRfXzA4OF9cbiAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wODlfLCBgUmlnaHQgX3JpZ2h0X18wOTBfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18wODlfIF9yaWdodF9fMDkwX1xuICAgICAgfCBgQm90aCBfbGVmdF9fMDkxXywgYEJvdGggX3JpZ2h0X18wOTJfIC0+XG4gICAgICAgIGxldCB0X18wOTNfLCB0X18wOTRfID0gX2xlZnRfXzA5MV8gaW5cbiAgICAgICAgbGV0IHRfXzA5NV8sIHRfXzA5Nl8gPSBfcmlnaHRfXzA5Ml8gaW5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2xlZnQgdF9fMDkzXyB0X18wOTVfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19yaWdodCB0X18wOTRfIHRfXzA5Nl9cbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgfCB4LCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA5N18gYl9fMDk4XyAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wOTdfIGJfXzA5OF9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzA5N18sIGJfXzA5OF8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wOTlfLCBgTGVmdCBfcmlnaHRfXzEwMF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDk5XyBfcmlnaHRfXzEwMF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzEwMV8sIGBSaWdodCBfcmlnaHRfXzEwMl8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzEwMV8gX3JpZ2h0X18xMDJfXG4gICAgICAgIHwgYEJvdGggX2xlZnRfXzEwM18sIGBCb3RoIF9yaWdodF9fMTA0XyAtPlxuICAgICAgICAgIGxldCB0X18xMDVfLCB0X18xMDZfID0gX2xlZnRfXzEwM18gaW5cbiAgICAgICAgICBsZXQgdF9fMTA3XywgdF9fMTA4XyA9IF9yaWdodF9fMTA0XyBpblxuICAgICAgICAgIFN0ZGxpYi4oICYmICkgKF9jbXBfX2xlZnQgdF9fMTA1XyB0X18xMDdfKSAoX2NtcF9fcmlnaHQgdF9fMTA2XyB0X18xMDhfKVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2xlZnRfXzEwOV8gX29mX3JpZ2h0X18xMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IHZfXzExMV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2ZfbGVmdF9fMTA5XyB2X18xMTFfIF1cbiAgICAgIHwgYFJpZ2h0IHZfXzExMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3JpZ2h0X18xMTBfIHZfXzExMl8gXVxuICAgICAgfCBgQm90aCB2X18xMTNfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiXG4gICAgICAgICAgOyAobGV0IGFyZzBfXzExNF8sIGFyZzFfXzExNV8gPSB2X18xMTNfIGluXG4gICAgICAgICAgICAgbGV0IHJlczBfXzExNl8gPSBfb2ZfbGVmdF9fMTA5XyBhcmcwX18xMTRfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzExN18gPSBfb2ZfcmlnaHRfXzExMF8gYXJnMV9fMTE1XyBpblxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzExNl87IHJlczFfXzExN18gXSlcbiAgICAgICAgICBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wICopXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29udGludWVcbiAgICB8IFN0b3BcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgQ29udGludWU7IFN0b3AgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFN0ZGxpYi4oID0gKSA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb250aW51ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJDb250aW51ZVwiXG4gICAgICB8IFN0b3AgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RvcFwiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWQgKilcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGaW5pc2hlZFxuICAgIHwgVW5maW5pc2hlZFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBGaW5pc2hlZDsgVW5maW5pc2hlZCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoU3RkbGliLiggPSApIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkZpbmlzaGVkXCJcbiAgICAgIHwgVW5maW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmZpbmlzaGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdjbXAgY21wXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgaW52YXJpYW50cyA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc2V0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IGxpc3QpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGNoYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gZjooKCd2IG9wdGlvbiAtPiAndiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgdXBkYXRlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gZjooKCd2IG9wdGlvbiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaW5kIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBvcHRpb24pIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBtZW0gOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOigoJ2sga2V5IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooKCd2MSAtPiAndjIpW0Bsb2NhbF0pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgdmFsIG1hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOlxuICAgICAgICAgKChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0XG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgnayBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBlcXVhbFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrIGtleSAqICd2KSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21iaW5lOigoa2V5OidrIGtleSAtPiAndiAtPiAndiAtPiAndilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooKCd2IC0+ICd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KCgnYWNjIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAgIC0+ICdhY2MgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayBrZXkgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2xlX2d0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sdF9nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYXBwZW5kXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBsb3dlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IG1pbjonayBrZXlcbiAgICAgIC0+IG1heDonayBrZXlcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayBrZXkgLT4gbWF4OidrIGtleSAtPiAoJ2sga2V5ICogJ3YpIGxpc3QgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBudGggOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICdrIGtleSAqICd2XG4gIHZhbCByYW5rIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGludCBvcHRpb24pIGFjY2Vzc19vcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgU2VxdWVuY2UudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA6IHNpZ1xuICAgIHZhbCBtYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG5cbiAgICB2YWwgZmlsdGVyX21hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24gQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdHJlZVxuICB0eXBlICdrIGtleVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdrLCAnY21wLCAnayBrZXkgLT4gJ3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdFxuICAgICAgLT4gZjooKCdrMSBrZXkgLT4gJ2syIGtleSlbQGxvY2FsXSlcbiAgICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0IC0+IGY6KCgnazEga2V5IC0+ICdrMiBrZXkpW0Bsb2NhbF0pIC0+ICgnazIsICd2LCAnY21wMikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIHRyYW5zcG9zZV9rZXlzXG4gICAgOiAoICdrMVxuICAgICAgLCAnY21wMVxuICAgICAgLCAoICdrMlxuICAgICAgICAsICdjbXAyXG4gICAgICAgICwgKCdrMSwgKCdrMiwgJ2EsICdjbXAyKSB0LCAnY21wMSkgdCAtPiAoJ2syLCAoJ2sxLCAnYSwgJ2NtcDEpIHQsICdjbXAyKSB0IClcbiAgICAgICAgICBjcmVhdGVfb3B0aW9ucyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbGVuOmludCAtPiBmOigoaW50IC0+ICdrIGtleSAqICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIGxpc3RcbiAgICAgIC0+IGluaXQ6J3YyXG4gICAgICAtPiBmOigoJ3YyIC0+ICd2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgbGlzdCAtPiBmOigoJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXVxuICAgICAgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBTZXF1ZW5jZS50XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooKCd2MiAtPiAndjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gZjooKCd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3RcbiAgICAgIC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdCAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3QgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0IC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KChmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooKGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdrLCAnY21wLCAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZSAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnYSBjbXBcbiAgdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdFxuICAgIDogIChtb2R1bGUgQ29tcGFyZV9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBpbnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKEhhc2guc3RhdGUgLT4gJ3YgLT4gSGFzaC5zdGF0ZSlcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXAgPSBzaWdcbiAgKCoqIFtNYXBdIGlzIGEgZnVuY3Rpb25hbCBkYXRhIHN0cnVjdHVyZSAoYmFsYW5jZWQgYmluYXJ5IHRyZWUpIGltcGxlbWVudGluZyBmaW5pdGUgbWFwc1xuICAgICAgb3ZlciBhIHRvdGFsbHktb3JkZXJlZCBkb21haW4sIGNhbGxlZCBhIFwia2V5XCIuICopXG5cbiAgdHlwZSAoISdrZXksICshJ3ZhbHVlLCAhJ2NtcCkgdFxuXG4gIG1vZHVsZSBPcl9kdXBsaWNhdGUgPSBPcl9kdXBsaWNhdGVcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbiAgbW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBVbmZpbmlzaGVkXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2VudW1lcmF0ZV9saWIuRW51bWVyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBNYXBzIFtDb250aW51ZV0gdG8gW0ZpbmlzaGVkXSBhbmQgW1N0b3BdIHRvIFtVbmZpbmlzaGVkXS4gKilcbiAgICB2YWwgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0XG5cbiAgICAoKiogTWFwcyBbRmluaXNoZWRdIHRvIFtDb250aW51ZV0gYW5kIFtVbmZpbmlzaGVkXSB0byBbU3RvcF0uICopXG4gICAgdmFsIHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudFxuICBlbmRcblxuICBtb2R1bGUgTWVyZ2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgdmFsIGNvbXBhcmVcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGJvb2xcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgbGVmdCA6ICgnbGVmdCwgXykgdCAtPiAnbGVmdCBvcHRpb25cbiAgICB2YWwgcmlnaHQgOiAoXywgJ3JpZ2h0KSB0IC0+ICdyaWdodCBvcHRpb25cbiAgICB2YWwgbGVmdF92YWx1ZSA6ICgnbGVmdCwgXykgdCAtPiBkZWZhdWx0OidsZWZ0IC0+ICdsZWZ0XG4gICAgdmFsIHJpZ2h0X3ZhbHVlIDogKF8sICdyaWdodCkgdCAtPiBkZWZhdWx0OidyaWdodCAtPiAncmlnaHRcblxuICAgIHZhbCB2YWx1ZXNcbiAgICAgIDogICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBsZWZ0X2RlZmF1bHQ6J2xlZnRcbiAgICAgIC0+IHJpZ2h0X2RlZmF1bHQ6J3JpZ2h0XG4gICAgICAtPiAnbGVmdCAqICdyaWdodFxuICBlbmRcblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0IGlmIHRoZSBpbnZhcmlhbnRzIG9mIHRoZSBpbnRlcm5hbCBBVkwgc2VhcmNoIHRyZWUgaG9sZC4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Yy5cbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogVGhlIGVtcHR5IG1hcC4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQSBtYXAgd2l0aCBvbmUgKGtleSwgZGF0YSkgcGFpci4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LiAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiBUaGUgYWNjdW11bGF0b3IgaXMgcGVyLWtleS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgIyBsZXQgbWFwID0gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImFcIiwgMTsgXCJhXCIsIDEwOyBcImJcIiwgMjsgXCJiXCIsIDIwOyBcImJcIiwgMjAwIF1cbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdDpJbnQuU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgfmY6U2V0LmFkZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfcyBbJXNleHAgKG1hcCA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTs7XG4gICAgICAgICgoYSAoMSAxMCkpIChiICgyIDIwIDIwMCkpKVxuICAgICAgICAtIDogdW5pdCA9ICgpXG4gICAgICBdfVxuICAqKVxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCgnYyAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOigoJ2IgLT4gJ2IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaXRlcmkgfml0ZXJpXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0XSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiB0YWtpbmcgYSBjb25jcmV0ZVxuICAgICAgZGF0YSBzdHJ1Y3R1cmUsIGl0IHRha2VzIGFuIGl0ZXJhdGlvbiBmdW5jdGlvbi4gIEZvciBpbnN0YW5jZSwgdG8gY29udmVydCBhIHN0cmluZyB0YWJsZVxuICAgICAgaW50byBhIG1hcDogW29mX2l0ZXJpIChtb2R1bGUgU3RyaW5nKSB+ZjooSGFzaHRibC5pdGVyaSB0YWJsZSldLiAgSXQgaXMgZmFzdGVyIHRoYW5cbiAgICAgIGFkZGluZyB0aGUgZWxlbWVudHMgb25lIGJ5IG9uZS4gKilcbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KChmOigoa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBMaWtlIFtvZl9pdGVyaV0gZXhjZXB0IHRoYXQgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOigoZjooKGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYSBzb3J0ZWQgYXJyYXkgb2Yga2V5LWRhdGEgcGFpcnMuIFRoZSBpbnB1dCBhcnJheSBtdXN0IGJlIHNvcnRlZFxuICAgICAgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlciksIGFzIGdpdmVuIGJ5IHRoZSByZWxldmFudCBjb21wYXJhdG9yLCBhbmRcbiAgICAgIG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlIGtleXMuIElmIGVpdGhlciBvZiB0aGVzZSBjb25kaXRpb25zIGRvZXMgbm90IGhvbGQsXG4gICAgICBhbiBlcnJvciBpcyByZXR1cm5lZC4gICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2Zfc29ydGVkX2FycmF5XSBleGNlcHQgdGhhdCBpdCByZXR1cm5zIGEgbWFwIHdpdGggYnJva2VuIGludmFyaWFudHMgd2hlbiBhblxuICAgICAgW0Vycm9yXSB3b3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheSBjIChTZXF1ZW5jZS50b19hcnJheVxuICAgICAgc2VxKV0sIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGFycmF5LlxuXG4gICAgICBUaGUgc2VxdWVuY2Ugd2lsbCBiZSBmb2xkZWQgb3ZlciBvbmNlLCBhbmQgdGhlIGFkZGl0aW9uYWwgdGltZSBjb21wbGV4aXR5IGlzIHtlIE8obil9LlxuICAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3QgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cblxuICAgICAgSWYgeW91ciBzZXF1ZW5jZSBpcyBpbmNyZWFzaW5nLCB1c2UgW29mX2luY3JlYXNpbmdfc2VxdWVuY2VdLlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3Rfb3JfZXJyb3IgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX2V4biBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfbXVsdGkgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZm9sZCBjIHNlcSB+aW5pdCB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9mb2xkIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+aW5pdCB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooKCdjIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfcmVkdWNlIGMgc2VxIH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X3JlZHVjZSBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ29uc3RydWN0cyBhIG1hcCBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIHdoZXJlIFtnZXRfa2V5XSBleHRyYWN0cyBhIGtleSBmcm9tIGEgdmFsdWUuXG4gICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5XG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBMaWtlIFtvZl9saXN0X3dpdGhfa2V5XTsgcmV0dXJucyBbRXJyb3JdIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9leG5cbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHByb2R1Y2VzIGxpc3RzIG9mIGFsbCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2gga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9tdWx0aVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFRlc3RzIHdoZXRoZXIgYSBtYXAgaXMgZW1wdHkuICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW2xlbmd0aCBtYXBdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbbWFwXS4gIE8oMSksIGJ1dCBbVHJlZS5sZW5ndGhdIGlzXG4gICAgICBPKG4pLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBuZXcgYmluZGluZzsgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBib3VuZCwgaXRzXG4gICAgICBwcmV2aW91cyBiaW5kaW5nIGRpc2FwcGVhcnMuICopXG4gIHZhbCBzZXQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FkZCB0IH5rZXkgfmRhdGFdIGFkZHMgYSBuZXcgZW50cnkgdG8gW3RdIG1hcHBpbmcgW2tleV0gdG8gW2RhdGFdIGFuZCByZXR1cm5zIFtgT2tdXG4gICAgICB3aXRoIHRoZSBuZXcgbWFwLCBvciBpZiBba2V5XSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gW3RdLCByZXR1cm5zIFtgRHVwbGljYXRlXS4gKilcbiAgdmFsIGFkZCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIElmIFtrZXldIGlzIG5vdCBwcmVzZW50IHRoZW4gYWRkIGEgc2luZ2xldG9uIGxpc3QsIG90aGVyd2lzZSwgY29ucyBkYXRhIG9udG8gdGhlXG4gICAgICBoZWFkIG9mIHRoZSBleGlzdGluZyBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBJZiB0aGUga2V5IGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZlIGl0cyBoZWFkIGVsZW1lbnQ7IGlmIHRoZSByZXN1bHQgaXMgZW1wdHksIHJlbW92ZVxuICAgICAgdGhlIGtleS4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgdGhlIGVtcHR5IGxpc3QgaWYgdGhlcmUgaXMgbm9uZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gJ3YgbGlzdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSByZXR1cm5zIGEgbmV3IG1hcCBbbV0gdGhhdCBpcyB0aGUgc2FtZSBhcyBbdF0gb24gYWxsIGtleXMgZXhjZXB0XG4gICAgICBmb3IgW2tleV0sIGFuZCB3aG9zZSB2YWx1ZSBmb3IgW2tleV0gaXMgZGVmaW5lZCBieSBbZl0sIGkuZS4sIFtmaW5kIG0ga2V5ID0gZiAoZmluZFxuICAgICAgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+IGY6KCgndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cblxuICAoKiogUmV0dXJucyBbU29tZSB2YWx1ZV0gYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgW05vbmVdIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3Ygb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIHJhaXNpbmcgW1N0ZGxpYi5Ob3RfZm91bmRdIG9yIFtOb3RfZm91bmRfc11cbiAgICAgIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYW55IGJpbmRpbmcgZm9yIHRoZSBrZXkgaW4gcXVlc3Rpb24gcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbbWVtIG1hcCBrZXldIHRlc3RzIHdoZXRoZXIgW21hcF0gY29udGFpbnMgYSBiaW5kaW5nIGZvciBba2V5XS4gKilcbiAgdmFsIG1lbSA6ICgnaywgXywgJ2NtcCkgdCAtPiAnayAtPiBib29sXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOigoJ2sgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIHVudGlsIHRoZSBmaXJzdCB0aW1lIFtmXSByZXR1cm5zIFtTdG9wXS4gSWYgW2ZdIHJldHVybnMgW1N0b3BdLCB0aGUgZmluYWxcbiAgICAgIHJlc3VsdCBpcyBbVW5maW5pc2hlZF0uIE90aGVyd2lzZSwgdGhlIGZpbmFsIHJlc3VsdCBpcyBbRmluaXNoZWRdLiAqKVxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICAoKiogSXRlcmF0ZXMgdHdvIG1hcHMgc2lkZSBieSBzaWRlLiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIE8oTSArIE4pLiAgSWYgdHdvXG4gICAgICBpbnB1dHMgYXJlIFtbKDAsIGEpOyAoMSwgYSldXSBhbmQgW1soMSwgYik7ICgyLCBiKV1dLCBbZl0gd2lsbCBiZSBjYWxsZWQgd2l0aCBbWygwLFxuICAgICAgYExlZnQgYSk7ICgxLCBgQm90aCAoYSwgYikpOyAoMiwgYFJpZ2h0IGIpXV0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIHJlcGxhY2VkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuKilcbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCgndjEgLT4gJ3YyKVtAbG9jYWxdKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogQ29udmVydCBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdG8gYSBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdXNpbmcgW2ZdLiAqKVxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCgnazEgLT4gJ2syKVtAbG9jYWxdKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgKCoqIExpa2UgW21hcF9rZXlzXSwgYnV0IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOigoJ2sxIC0+ICdrMilbQGxvY2FsXSlcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0sIHVudGlsIHRoZSBmaXJzdFxuICAgICAgdGltZSB0aGF0IFtmXSByZXR1cm5zIFtTdG9wIF9dLiBJZiBbZl0gcmV0dXJucyBbU3RvcCBmaW5hbF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJuc1xuICAgICAgaW1tZWRpYXRlbHkgd2l0aCB0aGUgdmFsdWUgW2ZpbmFsXS4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIGFuZCB0aGUgZmluYWxcbiAgICAgIGNhbGwgdG8gW2ZdIHJldHVybnMgW0NvbnRpbnVlIGxhc3RdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgW2ZpbmlzaCBsYXN0XS4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogRm9sZHMgb3ZlciB0d28gbWFwcyBzaWRlIGJ5IHNpZGUsIGxpa2UgW2l0ZXIyXS4gKilcbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyX21hcGldIHJ1biBpbiBPKG4pXG4gICAgICB0aW1lLlxuXG4gICAgICBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbcGFydGl0aW9uX3RmXSBhbmQgW3BhcnRpdGlvbmlfdGZdIGtlZXAgYSBsb3RcbiAgICAgIG9mIHNoYXJpbmcgYmV0d2VlbiB0aGVpciByZXN1bHQgYW5kIHRoZSBvcmlnaW5hbCBtYXAuICBEcm9wcGluZyBvciBrZWVwaW5nIGEgcnVuIG9mXG4gICAgICBba10gY29uc2VjdXRpdmUgZWxlbWVudHMgY29zdHMgW08obG9nKGspKV0gZXh0cmEgbWVtb3J5LiBLZWVwaW5nIHRoZSBlbnRpcmUgbWFwXG4gICAgICBjb3N0cyBubyBleHRyYSBtZW1vcnkgYXQgYWxsOiBbZmlsdGVyIH5mOihmdW4gXyAtPiB0cnVlKV0gcmV0dXJucyB0aGUgb3JpZ2luYWwgbWFwLlxuICAqKVxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgnayAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIGZpbHRlcmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuICopXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhc1xuICAgICAgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcGkgdCB+Zl0gcmV0dXJucyB0d28gbmV3IFt0XXMsIHdpdGggZWFjaCBrZXkgaW4gW3RdIGFwcGVhcmluZyBpblxuICAgICAgZXhhY3RseSBvbmUgb2YgdGhlIHJlc3VsdGluZyBtYXBzIGRlcGVuZGluZyBvbiBpdHMgbWFwcGluZyBpbiBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqXG4gICAgIHtbXG4gICAgICAgcGFydGl0aW9uaV90ZiB0IH5mXG4gICAgICAgPVxuICAgICAgIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBpZiBmIH5rZXkgfmRhdGFcbiAgICAgICAgIHRoZW4gRmlyc3QgZGF0YVxuICAgICAgICAgZWxzZSBTZWNvbmQgZGF0YSlcbiAgICAgXX0gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUHJvZHVjZXMgW09rXSBvZiBhIG1hcCBpbmNsdWRpbmcgYWxsIGtleXMgaWYgYWxsIGRhdGEgaXMgW09rXSwgb3IgYW4gW0Vycm9yXVxuICAgICAgaW5jbHVkaW5nIGFsbCBlcnJvcnMgb3RoZXJ3aXNlLiAqKVxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFJldHVybnMgYSB0b3RhbCBvcmRlcmluZyBiZXR3ZWVuIG1hcHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHRvdGFsIG9yZGVyaW5nIHVzZWRcbiAgICAgIHRvIGNvbXBhcmUgZGF0YSBhc3NvY2lhdGVkIHdpdGggZXF1YWwga2V5cyBpbiB0aGUgdHdvIG1hcHMuICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIG1hcHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgbSkuY29tcGFyZV0gb2YgdGhlIG1hcCBbbV0gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnayBIYXNoLmZvbGRlciAtPiAndiBIYXNoLmZvbGRlciAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCBjbXAgbTEgbTJdIHRlc3RzIHdoZXRoZXIgdGhlIG1hcHMgW20xXSBhbmQgW20yXSBhcmUgZXF1YWwsIHRoYXQgaXMsIGNvbnRhaW5cbiAgICAgIHRoZSBzYW1lIGtleXMgYW5kIGFzc29jaWF0ZSBlYWNoIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlLiAgW2NtcF0gaXMgdGhlIGVxdWFsaXR5XG4gICAgICBwcmVkaWNhdGUgdXNlZCB0byBjb21wYXJlIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGtleXMgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sgbGlzdFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZGF0YSBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgKCoqIENyZWF0ZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBmcm9tIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gKCoqIGRlZmF1bHQgaXMgW2BJbmNyZWFzaW5nXSAqKVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiB7MiBBZGRpdGlvbmFsIG9wZXJhdGlvbnMgb24gbWFwc30gKilcblxuICAoKiogTWVyZ2VzIHR3byBtYXBzLiBUaGUgcnVudGltZSBpcyBPKGxlbmd0aCh0MSkgKyBsZW5ndGgodDIpKS4gWW91IHNob3VsZG4ndCB1c2UgdGhpc1xuICAgICAgZnVuY3Rpb24gdG8gbWVyZ2UgYSBsaXN0IG9mIG1hcHM7IGNvbnNpZGVyIHVzaW5nIFttZXJnZV9za2V3ZWRdIGluc3RlYWQuICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogQSBzcGVjaWFsIGNhc2Ugb2YgW21lcmdlXSwgW21lcmdlX3NrZXdlZCB0MSB0Ml0gaXMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlXG4gICAgICBiaW5kaW5ncyBvZiBbdDFdIGFuZCBbdDJdLiBCaW5kaW5ncyB0aGF0IGFwcGVhciBpbiBib3RoIFt0MV0gYW5kIFt0Ml0gYXJlXG4gICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHZhbHVlIHVzaW5nIHRoZSBbY29tYmluZV0gZnVuY3Rpb24uIEluIGEgY2FsbFxuICAgICAgW2NvbWJpbmUgfmtleSB2MSB2Ml0sIHRoZSB2YWx1ZSBbdjFdIGNvbWVzIGZyb20gW3QxXSBhbmQgW3YyXSBmcm9tIFt0Ml0uXG5cbiAgICAgIFRoZSBydW50aW1lIG9mIFttZXJnZV9za2V3ZWRdIGlzIFtPKG1pbihsMSwgbDIpICogbG9nKG1heChsMSwgbDIpKSldLCB3aGVyZSBbbDFdIGlzXG4gICAgICB0aGUgbGVuZ3RoIG9mIFt0MV0gYW5kIFtsMl0gdGhlIGxlbmd0aCBvZiBbdDJdLiBUaGlzIGlzIGxpa2VseSB0byBiZSBmYXN0ZXIgdGhhblxuICAgICAgW21lcmdlXSB3aGVuIG9uZSBvZiB0aGUgbWFwcyBpcyBhIGxvdCBzbWFsbGVyLCBvciB3aGVuIHlvdSBtZXJnZSBhIGxpc3Qgb2YgbWFwcy4gKilcbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooKGtleTonayAtPiAndiAtPiAndiAtPiAndilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgICAgOiAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSByZXR1cm5zIGEgbGlzdCBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS5cbiAgICAgIEl0IGlzIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50XG4gICAgICBvZiBzdHJ1Y3R1cmUuIFRoZSBrZXlzIGluIHRoZSBvdXRwdXQgc2VxdWVuY2Ugd2lsbCBiZSBpbiBzb3J0ZWQgb3JkZXIuXG5cbiAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBbZGF0YV9lcXVhbF0gaXMgYXQgbGVhc3QgYXMgZXF1YXRpbmcgYXMgcGh5c2ljYWwgZXF1YWxpdHk6IHRoYXRcbiAgICAgIFtwaHlzX2VxdWFsIHggeV0gaW1wbGllcyBbZGF0YV9lcXVhbCB4IHldLiBPdGhlcndpc2UsIFtzeW1tZXRyaWNfZGlmZl0gbWF5IGJlaGF2ZSBpblxuICAgICAgdW5leHBlY3RlZCB3YXlzLiBGb3IgZXhhbXBsZSwgd2l0aCBbfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpXSBpdCBpcyBOT1RcbiAgICAgIG5lY2Vzc2FyaWx5IHRoZSBjYXNlIHRoZSByZXN1bHRpbmcgY2hhbmdlIHNlcXVlbmNlIHdpbGwgY29udGFpbiBhbiBlbGVtZW50XG4gICAgICBbKGssIGBVbmVxdWFsIF8pXSBmb3IgZXZlcnkga2V5IFtrXSBzaGFyZWQgYnkgYm90aCBtYXBzLlxuXG4gICAgICBXYXJuaW5nOiBGbG9hdCBlcXVhbGl0eSB2aW9sYXRlcyB0aGlzIHByb3BlcnR5ISBbcGh5c19lcXVhbCBGbG9hdC5uYW4gRmxvYXQubmFuXSBpc1xuICAgICAgdHJ1ZSwgYnV0IFtGbG9hdC4oPSkgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXMgZmFsc2UuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gZm9sZHMgYWNyb3NzIGFuIGltcGxpY2l0IHNlcXVlbmNlIG9mIGNoYW5nZXNcbiAgICAgIGJldHdlZW4gW3QxXSBhbmQgW3QyXSwgaW4gc29ydGVkIG9yZGVyIGJ5IGtleXMuIEVxdWl2YWxlbnQgdG9cbiAgICAgIFtTZXF1ZW5jZS5mb2xkIChzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCldLCBhbmQgbW9yZSBlZmZpY2llbnQuICopXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigoJ3YgLT4gJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIFttaW5fZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW5pbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogW21heF9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1heGltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIFttYXBdIGlzIGVtcHR5LiAqKVxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBTd2FwIHRoZSBpbm5lciBhbmQgb3V0ZXIga2V5cyBvZiBuZXN0ZWQgbWFwcy4gSWYgW3RyYW5zcG9zZV9rZXlzIG0gYSA9IGJdLCB0aGVuXG4gICAgICBbZmluZF9leG4gKGZpbmRfZXhuIGEgaSkgaiA9IGZpbmRfZXhuIChmaW5kX2V4biBiIGopIGldLiAqKVxuICB2YWwgdHJhbnNwb3NlX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICgnazIsICd2LCAnY21wMikgdCwgJ2NtcDEpIHRcbiAgICAtPiAoJ2syLCAoJ2sxLCAndiwgJ2NtcDEpIHQsICdjbXAyKSB0XG5cbiAgKCoqIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBhcyBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBbTGlzdF0uICopXG5cbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cblxuICAoKiogW3NwbGl0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldLCB0aGUgbWFwcGluZyBvZiBba2V5XSBpZlxuICAgICAgYW55LCBhbmQgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2xlX2d0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgdGhhdCBhcmUgbGVzcyBvciBlcXVhbCB0byBba2V5XSBhbmQgYVxuICAgICAgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0X2xlX2d0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbc3BsaXRfbHRfZ2UgdCBrZXldIHJldHVybnMgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tleV0gYW5kIGEgbWFwIG9mXG4gICAgICBrZXlzIHRoYXQgYXJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRfbHRfZ2UgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnRdIHJldHVybnMgW2BPayBtYXBdIHdoZXJlIFttYXBdIGNvbnRhaW5zIGFsbCB0aGVcbiAgICAgIFsoa2V5LCB2YWx1ZSldIHBhaXJzIGZyb20gdGhlIHR3byBpbnB1dCBtYXBzIGlmIGFsbCB0aGUga2V5cyBmcm9tIFtsb3dlcl9wYXJ0XSBhcmVcbiAgICAgIGxlc3MgdGhhbiBhbGwgdGhlIGtleXMgZnJvbSBbdXBwZXJfcGFydF0uICBPdGhlcndpc2UgaXQgcmV0dXJuc1xuICAgICAgW2BPdmVybGFwcGluZ19rZXlfcmFuZ2VzXS5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBuKSB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBsYXJnZXIgaW5wdXQgbWFwLiAgVGhpcyBjYW4gYmVcbiAgICAgIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gW01hcC5tZXJnZV0gb3IgcmVwZWF0ZWQgW01hcC5hZGRdLlxuXG4gICAgICB7W1xuICAgICAgICBhc3NlcnQgKG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgIHwgYE9rIHdob2xlX21hcCAtPlxuICAgICAgICAgICAgTWFwLnRvX2FsaXN0IHdob2xlX21hcFxuICAgICAgICAgICAgPSBMaXN0LmFwcGVuZCAodG9fYWxpc3QgbG93ZXJfcGFydCkgKHRvX2FsaXN0IHVwcGVyX3BhcnQpXG4gICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiB0cnVlKTtcbiAgICAgIF19ICopXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gICgqKiBbc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXSByZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBlbnRyaWVzIGZyb21cbiAgICAgIFt0XSB3aG9zZSBrZXlzIGxpZSBpbnNpZGUgdGhlIGludGVydmFsIGluZGljYXRlZCBieSBbfmxvd2VyX2JvdW5kXSBhbmRcbiAgICAgIFt+dXBwZXJfYm91bmRdLiAgSWYgdGhpcyBpbnRlcnZhbCBpcyBlbXB0eSwgYW4gZW1wdHkgbWFwIGlzIHJldHVybmVkLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgb3V0cHV0IG1hcC4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZVxuICAgICAgb3V0cHV0IG1hcC4gKilcbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmZdIGZvbGRzIFtmXSAod2l0aCBpbml0aWFsIHZhbHVlIFt+aW5pdF0pXG4gICAgICBvdmVyIGFsbCBrZXlzIChhbmQgdGhlaXIgYXNzb2NpYXRlZCB2YWx1ZXMpIHRoYXQgYXJlIGluIHRoZSByYW5nZSBbW21pbiwgbWF4XV1cbiAgICAgIChpbmNsdXNpdmUpLiAgKilcbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IG1pbjona1xuICAgIC0+IG1heDona1xuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXhdIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgbGlzdCBvZiB0aGUgZWxlbWVudHMgd2hvc2Uga2V5c1xuICAgICAgbGllIGluIFtbbWluLCBtYXhdXSAoaW5jbHVzaXZlKSwgd2l0aCB0aGUgc21hbGxlc3Qga2V5IGJlaW5nIGF0IHRoZSBoZWFkIG9mIHRoZVxuICAgICAgbGlzdC4gKilcbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sgLT4gbWF4OidrIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIFtjbG9zZXN0X2tleSB0IGRpciBrXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XSB3aXRoIFtrZXldIGNsb3Nlc3QgdG9cbiAgICAgIFtrXSB0aGF0IHNhdGlzZmllcyB0aGUgZ2l2ZW4gaW5lcXVhbGl0eSBib3VuZC5cblxuICAgICAgRm9yIGV4YW1wbGUsIFtjbG9zZXN0X2tleSB0IGBMZXNzX3RoYW4ga10gd291bGQgYmUgdGhlIHBhaXIgd2l0aCB0aGUgY2xvc2VzdCBrZXkgdG9cbiAgICAgIFtrXSB3aGVyZSBba2V5IDwga10uXG5cbiAgICAgIFt0b19zZXF1ZW5jZV0gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgW2Nsb3Nlc3Rfa2V5XS4gIEl0IGlzIGxlc3NcbiAgICAgIGVmZmljaWVudCBmb3IgaW5kaXZpZHVhbCBsb29rdXBzIGJ1dCBtb3JlIGVmZmljaWVudCBmb3IgZmluZGluZyBtYW55IGVsZW1lbnRzIHN0YXJ0aW5nXG4gICAgICBhdCBzb21lIHZhbHVlLiAqKVxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdrXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbbnRoIHQgbl0gZmluZHMgdGhlIChrZXksIHZhbHVlKSBwYWlyIG9mIHJhbmsgbiAoaS5lLiwgc3VjaCB0aGF0IHRoZXJlIGFyZSBleGFjdGx5IG5cbiAgICAgIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBmb3VuZCBrZXkpLCBpZiBvbmUgZXhpc3RzLiAgTyhsb2cobGVuZ3RoIHQpICsgbikgdGltZS4gKilcbiAgdmFsIG50aCA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICdrICogJ3ZcblxuICAoKiogW3JhbmsgdCBrXSBJZiBba10gaXMgaW4gW3RdLCByZXR1cm5zIHRoZSBudW1iZXIgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tdIGluXG4gICAgICBbdF0sIGFuZCBbTm9uZV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgcmFuayA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gaW50IG9wdGlvblxuXG5cblxuICAoKiogW3RvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdF1cbiAgICAgIGdpdmVzIGEgc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGJldHdlZW4gW2tleXNfbGVzc19vcl9lcXVhbF90b10gYW5kXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUsIHByZXNlbnRlZCBpbiBbb3JkZXJdLiAgSWZcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dLCB0aGUgc2VxdWVuY2UgaXNcbiAgICAgIGVtcHR5LlxuXG4gICAgICBXaGVuIG5laXRoZXIgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gbm9yIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFyZVxuICAgICAgcHJvdmlkZWQsIHRoZSBjb3N0IGlzIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSB0byBwcm9kdWNlXG4gICAgICBlYWNoIGVsZW1lbnQuIElmIGVpdGhlciBpcyBwcm92aWRlZCAoYW5kIGlzIHVzZWQgYnkgdGhlIG9yZGVyIHBhcmFtZXRlclxuICAgICAgcHJvdmlkZWQpLCB0aGVuIHRoZSB0aGUgY29zdCBpcyBPKG4pIHVwIGZyb250LCBhbmQgYW1vcnRpemVkIE8oMSkgdG9cbiAgICAgIHByb2R1Y2UgZWFjaCBlbGVtZW50LiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2tcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XVxuICAgICAgc3BlY2lmaWVkIGJ5IFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KChrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBvbiB0aGUgYm91bmRhcnkgb2YgdGhlXG4gICAgICBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZVxuICAgICAgbGVmdCBzZWdtZW50LCB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuXG4gICAgICBJdCByZXR1cm5zIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zdWJyYW5nZV0gdGFrZXMgYSBbY29tcGFyZV0gZnVuY3Rpb24gdGhhdCBkaXZpZGVzIFt0XSBpbnRvIHRocmVlXG4gICAgICAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzIHdpdGggcmVzcGVjdCB0byBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdOlxuXG4gICAgICB7dlxuICAgICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgSW5fcmFuZ2UgfCBBYm92ZV91cHBlcl9ib3VuZCB8XG4gICAgICB2fVxuXG4gICAgICBhbmQgcmV0dXJucyBhIG1hcCBvZiB0aGUgW0luX3JhbmdlXSBzZWdtZW50LlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG0gKyBuKSB3aGVyZSBbbV0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgbWFwIGFuZCBbbl0gaXMgdGhlXG4gICAgICBsZW5ndGggb2YgdGhlIG91dHB1dC4gVGhlIGxpbmVhciB0ZXJtIGluIFtuXSBpcyB0byBjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dC5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFtjb21wYXJlXSBkb2VzIG5vdCBzZWdtZW50IFt0XSBhcyBzaG93biBhYm92ZSwgb3IgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIGl0cyBpbnB1dHMuICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgdHJhdmVyc2FscyB0byByZWNvbnN0cnVjdCBhIG1hcCB3aXRoaW4gYW4gYXBwbGljYXRpdmUuIFVzZXNcbiAgICAgIFtMYXp5X2FwcGxpY2F0aXZlXSBzbyB0aGF0IHRoZSBtYXAgY2FuIGJlIHRyYXZlcnNlZCB3aXRoaW4gdGhlIGFwcGxpY2F0aXZlLCByYXRoZXJcbiAgICAgIHRoYW4gbmVlZGluZyB0byBiZSB0cmF2ZXJzZWQgYWxsIGF0IG9uY2UsIG91dHNpZGUgdGhlIGFwcGxpY2F0aXZlLiAqKVxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgOiBzaWdcbiAgICB2YWwgbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG5cbiAgICB2YWwgZmlsdGVyX21hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbiBBLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCBBLnRcbiAgZW5kXG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IGludCBNYXAuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSAoU3RyaW5nLnQsIGludCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgTWFwLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFtTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3NdXG4gICAgICAtLSBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLlxuXG4gICAgICBJbiBhZGRpdGlvbiwgd2hlbiB1c2luZyBbQEBkZXJpdmluZ10sIHRoZSByZXF1aXJlbWVudHMgb24gdGhlIGtleSBtb2R1bGUgYXJlIG9ubHlcbiAgICAgIHRob3NlIG5lZWRlZCB0byBzYXRpc2Z5IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZGVyaXZlIG9uIHRoZSBtYXAgaXRzZWxmLiBTYXkgeW91XG4gICAgICB3cml0ZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSB0ID0gaW50IE1hcC5NKFgpLnQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIF19XG5cbiAgICAgIHRoZW4gdGhpcyB3aWxsIGJlIHdlbGwgdHlwZWQgZXhhY3RseSBpZiBbWF0gY29udGFpbnMgYXQgbGVhc3Q6XG4gICAgICAtIGEgdHlwZSBbdF0gd2l0aCBubyBwYXJhbWV0ZXJzXG4gICAgICAtIGEgY29tcGFyYXRvciB3aXRuZXNzXG4gICAgICAtIGEgW2hhc2hfZm9sZF90XSBmdW5jdGlvbiB3aXRoIHRoZSByaWdodCB0eXBlICopXG4gIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgna2V5LCAndmFsdWUsICdjbXApIHQgOj0gKCdrZXksICd2YWx1ZSwgJ2NtcCkgdFxuXG4gICgqKiBbVXNpbmdfY29tcGFyYXRvcl0gaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW01hcF0sIGV4Y2VwdCB0aGVcbiAgICAgIGZ1bmN0aW9ucyB0YWtlIGEgW35jb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XSwgd2hlcmVhcyB0aGUgZnVuY3Rpb25zIGF0IHRoZVxuICAgICAgdG9wbGV2ZWwgb2YgW01hcF0gdGFrZSBhIFsoJ2ssICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnaywgKyd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoKydrLCArJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8sIF8pIHRcblxuICAgICAgKCoqIFtCdWlsZF9pbmNyZWFzaW5nXSBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBtYXAgaW5jcmVtZW50YWxseSBmcm9tIGFcbiAgICAgICAgICBzZXF1ZW5jZSB0aGF0IGlzIGtub3duIHRvIGJlIGluY3JlYXNpbmcuXG5cbiAgICAgICAgICBUaGUgdG90YWwgdGltZSBjb21wbGV4aXR5IG9mIGNvbnN0cnVjdGluZyBhIG1hcCB0aGlzIHdheSBpcyBPKG4pLCB3aGljaCBpcyBtb3JlXG4gICAgICAgICAgZWZmaWNpZW50IHRoYW4gdXNpbmcgW01hcC5hZGRdIGJ5IGEgbG9nYXJpdGhtaWMgZmFjdG9yLlxuXG4gICAgICAgICAgVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBkdWFsIG9mIFt0b19zZXF1ZW5jZV0sIGJ1dCB3ZSBkb24ndCBoYXZlXG4gICAgICAgICAgYW4gZXF1YWxseSBuZWF0IGlkaW9tIGZvciB0aGUgZHVhbHMgb2Ygc2VxdWVuY2VzIChbb2Zfc2VxdWVuY2VdIGlzIG11Y2ggbGVzc1xuICAgICAgICAgIGdlbmVyYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgc2VxdWVuY2UgdG8gYmUgcHJvZHVjZWQgYXN5bmNocm9ub3VzbHkpLiAqKVxuICAgICAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB0eXBlICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgdmFsIGVtcHR5IDogKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IG9mIFthZGRfZXhuXSBpcyBhbW9ydGl6ZWQgY29uc3RhbnQtdGltZSAoaWYgW3RdIGlzIHVzZWRcbiAgICAgICAgICAgIGxpbmVhcmx5KSwgd2l0aCBhIHdvcnN0LWNhc2UgTyhsb2cobikpIHRpbWUuICopXG4gICAgICAgIHZhbCBhZGRfZXhuXG4gICAgICAgICAgOiAgKCdrLCAndiwgJ3cpIHRcbiAgICAgICAgICAtPiBjb21wYXJhdG9yOignaywgJ3cpIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+IGtleTona1xuICAgICAgICAgIC0+IGRhdGE6J3ZcbiAgICAgICAgICAtPiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgaXMgTyhsb2cobikpLiAqKVxuICAgICAgICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICd3KSB0IC0+ICgnaywgJ3YsICd3KSB0cmVlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3RcbiAgICAgIDogICdrIEhhc2guZm9sZGVyXG4gICAgICAtPiAndiBIYXNoLmZvbGRlclxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgKCoqIFRvIGdldCBhcm91bmQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uLCBhcHBseSB0aGUgZnVuY3RvciBhbmQgaW5jbHVkZSBpdC4gWW91XG4gICAgICAgIGNhbiBzZWUgYW4gZXhhbXBsZSBvZiB0aGlzIGluIHRoZSBbUG9seV0gc3VibW9kdWxlIGJlbG93LiAqKVxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBNYXAuICopXG4gIG1vZHVsZSBQb2x5IDpcbiAgICBTX3BvbHlcbiAgICB3aXRoIHR5cGUgKCdrZXksICsndmFsdWUpIHQgPSAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgIGFuZCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0cmVlID1cbiAgICAgICAgICAgKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICgqKiBDcmVhdGUgYSBtYXAgZnJvbSBhIHRyZWUgdXNpbmcgdGhlIGdpdmVuIGNvbXBhcmF0b3IuICopXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIEV4dHJhY3QgYSB0cmVlIGZyb20gYSBtYXAuICopXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtNYXBdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIE5hbWVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzZXQgOiAnYVxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5HZW5lcmljXG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICAoKiogVGhlIFthY2Nlc3Nfb3B0aW9uc10gdHlwZSBpcyB1c2VkIHRvIG1ha2UgW0FjY2Vzc29yc19nZW5lcmljXSBmbGV4aWJsZSBhcyB0byB3aGV0aGVyXG4gICAgICBhIGNvbXBhcmF0b3IgaXMgcmVxdWlyZWQgdG8gYmUgcGFzc2VkIHRvIGNlcnRhaW4gZnVuY3Rpb25zLiAqKVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG5cbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcblxuICAoKiogb3ZlcnJpZGUgW0NvbnRhaW5lcl0ncyBbbWVtXSAqKVxuICB2YWwgbWVtIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdW5pb24gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnYSBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAoICdhXG4gICAgICAgICwgJ2NtcFxuICAgICAgICAsICgnYSwgJ2NtcCkgdCBOYW1lZC50IC0+IG9mXzooJ2EsICdjbXApIHQgTmFtZWQudCAtPiB1bml0IE9yX2Vycm9yLnQgKVxuICAgICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogKCAnYVxuICAgICAgICAsICdjbXBcbiAgICAgICAgLCAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiB1bml0IE9yX2Vycm9yLnQgKVxuICAgICAgICAgIGFjY2Vzc19vcHRpb25zXG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYSBlbHQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGY6XG4gICAgICAgICAgICgoWyBgTGVmdCBvZiAnYSBlbHQgfCBgUmlnaHQgb2YgJ2EgZWx0IHwgYEJvdGggb2YgJ2EgZWx0ICogJ2EgZWx0IF0gLT4gdW5pdClcbiAgICAgICAgICAgIFtAbG9jYWxdKVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogJ2EgZWx0IG9wdGlvbiAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2xlX2d0XG4gICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sdF9nZVxuICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBlcXVpdjooKCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIGVsdFxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnY21wIGNtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gJ2EgZWx0IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgZWx0IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KCgnYSBlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSBlbHQsICdhIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGVsdFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCwgJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXAsICdhIGVsdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wLCAnYSBlbHQgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnYSwgJ2NtcCwgbGVuOmludCAtPiBmOigoaW50IC0+ICdhIGVsdClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXywgJ2EgZWx0IGxpc3QgLT4gJ2EgZWx0IGxpc3QpIGNyZWF0ZV9vcHRpb25zXG5cbiAgKCoqIFRoZSB0eXBlcyBvZiBbbWFwXSBhbmQgW2ZpbHRlcl9tYXBdIGFyZSBzdWJ0bGUuICBUaGUgaW5wdXQgc2V0LCBbKCdhLCBfKSBzZXRdLFxuICAgICAgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBhIHNldCBvZiAqYW55KiB0eXBlLCB3aXRoIGFueVxuICAgICAgY29tcGFyYXRvciwgd2hpbGUgdGhlIG91dHB1dCBzZXQsIFsoJ2IsICdjbXApIHRdLCByZWZsZWN0cyB0aGF0IHRoZSBvdXRwdXQgc2V0IGhhc1xuICAgICAgdGhlIHBhcnRpY3VsYXIgWydjbXBdIG9mIHRoZSBjcmVhdGlvbiBmdW5jdGlvbi4gIFRoZSBjb21wYXJhdG9yIGNhbiBjb21lIGluIG9uZSBvZlxuICAgICAgdGhyZWUgd2F5cywgZGVwZW5kaW5nIG9uIHdoaWNoIHNldCBtb2R1bGUgaXMgdXNlZFxuXG4gICAgICAtIFtTZXQubWFwXSAtLSBjb21wYXJhdG9yIGNvbWVzIGFzIGFuIGFyZ3VtZW50XG4gICAgICAtIFtTZXQuUG9seS5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgcG9seW1vcnBoaWMgY29tcGFyaXNvblxuICAgICAgLSBbRm9vLlNldC5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgW0Zvby5jb21wYXJhdG9yXSAqKVxuICB2YWwgbWFwXG4gICAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCgnYSAtPiAnYiBlbHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCAnYlxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgXykgc2V0IC0+IGY6KCgnYSAtPiAnYiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiAoJ2IsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wLCAoJ2EgZWx0LCAnY21wIGNtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdlbHQsICdjbXApIHRcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZVxuICB0eXBlICdlbHQgZWx0XG4gIHR5cGUgJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgJ2VsdCB0XG4gIHR5cGUgJ2VsdCB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ2NtcCkgdCA6PSAnZWx0IHRcbiAgICB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHRyZWUgOj0gJ2VsdCB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3QgOiAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCAnY21wKSB0IC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+ICgnZWx0LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdCA6IChtb2R1bGUgQ29tcGFyZV9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsX21fX3QgOiAobW9kdWxlIEVxdWFsX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdlbHQsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5cbiAgdmFsIGhhc2hfbV9fdCA6IChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgXykgdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgKCoqIFNldHMgYmFzZWQgb24geyFDb21wYXJhdG9yLlN9LlxuXG4gICAgICBDcmVhdG9ycyByZXF1aXJlIGEgY29tcGFyYXRvciBhcmd1bWVudCB0byBiZSBwYXNzZWQgaW4sIHdoZXJlYXMgYWNjZXNzb3JzIHVzZSB0aGVcbiAgICAgIGNvbXBhcmF0b3IgcHJvdmlkZWQgYnkgdGhlIGlucHV0IHNldC4gKilcblxuICAoKiogVGhlIHR5cGUgb2YgYSBzZXQuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCwgYW5kXG4gICAgICB0aGUgc2Vjb25kIGlkZW50aWZpZXMgdGhlIGNvbXBhcmF0b3IsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdFxuICAgICAgaXMgdXNlZCBmb3Igb3JkZXJpbmcgZWxlbWVudHMgaW4gdGhpcyBzZXQuICBNYW55IG9wZXJhdGlvbnMgKGUuZy4sIHshdW5pb259KSxcbiAgICAgIHJlcXVpcmUgdGhhdCB0aGV5IGJlIHBhc3NlZCBzZXRzIHdpdGggdGhlIHNhbWUgZWxlbWVudCB0eXBlIGFuZCB0aGUgc2FtZSBjb21wYXJhdG9yXG4gICAgICB0eXBlLiAqKVxuICB0eXBlICghJ2VsdCwgISdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCEnZWx0LCAhJ2NtcCkgdCA6PSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdHMgaW50ZXJuYWwgaW52YXJpYW50cyBvZiB0aGUgc2V0IGRhdGEgc3RydWN0dXJlLiAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGNcbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogQ3JlYXRlcyBhbiBlbXB0eSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvciB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIHByb3ZpZGVkXG4gICAgICBlbGVtZW50LiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUgc2V0LiBbTygxKV0uICopXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcblxuICAoKiogW2lzX2VtcHR5IHRdIGlzIFt0cnVlXSBpZmYgW3RdIGlzIGVtcHR5LiAgW08oMSldLiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFttZW0gdCBhXSByZXR1cm5zIFt0cnVlXSBpZmYgW2FdIGlzIGluIFt0XS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuXG4gICgqKiBbYWRkIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gYWRkZWQgdG8gW3RdLCBvciByZXR1cm5zIFt0XSBpZiBbbWVtIHQgYV0uXG4gICAgICBbTyhsb2cgbildLiAqKVxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbcmVtb3ZlIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gcmVtb3ZlZCBmcm9tIFt0XSBpZiBbbWVtIHQgYV0sIG9yIHJldHVybnMgW3RdXG4gICAgICBvdGhlcndpc2UuICBbTyhsb2cgbildLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gdDEgdDJdIHJldHVybnMgdGhlIHVuaW9uIG9mIHRoZSB0d28gc2V0cy4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gYyBsaXN0XSByZXR1cm5zIHRoZSB1bmlvbiBvZiBhbGwgdGhlIHNldHMgaW4gW2xpc3RdLiAgVGhlXG4gICAgICBbY29tcGFyYXRvcl0gYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yIHRoZSBjYXNlIHdoZXJlIFtsaXN0XSBpcyBlbXB0eS5cbiAgICAgIFtPKG1heChMaXN0Lmxlbmd0aCBsaXN0LCBuIGxvZyBuKSldLCB3aGVyZSBbbl0gaXMgdGhlIHN1bSBvZiBzaXplcyBvZiB0aGUgaW5wdXQgc2V0cy4gKilcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpbnRlciB0MSB0Ml0gY29tcHV0ZXMgdGhlIGludGVyc2VjdGlvbiBvZiBzZXRzIFt0MV0gYW5kIFt0Ml0uICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtkaWZmIHQxIHQyXSBjb21wdXRlcyB0aGUgc2V0IGRpZmZlcmVuY2UgW3QxIC0gdDJdLCBpLmUuLCB0aGUgc2V0IGNvbnRhaW5pbmcgYWxsXG4gICAgICBlbGVtZW50cyBpbiBbdDFdIHRoYXQgYXJlIG5vdCBpbiBbdDJdLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyXSByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uIEl0IGlzXG4gICAgICBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudCBvZlxuICAgICAgc3RydWN0dXJlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICAoKiogW2NvbXBhcmVfZGlyZWN0IHQxIHQyXSBjb21wYXJlcyB0aGUgc2V0cyBbdDFdIGFuZCBbdDJdLiAgSXQgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRcbiAgICAgIGFzIFtjb21wYXJlXSwgYnV0IHVubGlrZSBjb21wYXJlLCBkb2Vzbid0IHJlcXVpcmUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbiBmb3IgdGhlXG4gICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIHNldC4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgc2V0cyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBzKS5jb21wYXJlXSBvZiB0aGUgc2V0IFtzXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdhIEhhc2guZm9sZGVyIC0+ICgnYSwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiB0aGUgdHdvIHNldHMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cy4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXSAqKVxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2V4aXN0cyB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlcmUgZXhpc3RzIGFuIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGFdLiAgW08obildLFxuICAgICAgYnV0IHJldHVybnMgYXMgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtmIGFdLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFtmb3JfYWxsIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiBmb3IgYWxsIFthXSBpbiBbdF0sIFtmIGFdLiAgW08obildLCBidXQgcmV0dXJucyBhc1xuICAgICAgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtub3QgKGYgYSldLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBbY291bnQgdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW3RydWVdLlxuICAgICAgW08obildLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBbc3VtIHRdIHJldHVybnMgdGhlIHN1bSBvZiBbZiB0XSBmb3IgZWFjaCBbdF0gaW4gdGhlIHNldC5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFtmaW5kIHQgZl0gcmV0dXJucyBhbiBlbGVtZW50IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgdHJ1ZSwgd2l0aCBubyBndWFyYW50ZWUgYXNcbiAgICAgIHRvIHdoaWNoIGVsZW1lbnQgaXMgcmV0dXJuZWQuICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZSBlbGVtZW50IGlzXG4gICAgICBmb3VuZC4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbZmluZF9tYXAgdCBmXSByZXR1cm5zIFtiXSBmb3Igc29tZSBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhID0gU29tZSBiXS4gIElmIG5vIHN1Y2hcbiAgICAgIFthXSBleGlzdHMsIHRoZW4gW2ZpbmRdIHJldHVybnMgW05vbmVdLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGVcbiAgICAgIGVsZW1lbnQgaXMgZm91bmQuICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICAoKiogTGlrZSBbZmluZF0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcblxuICAoKiogW250aCB0IGldIHJldHVybnMgdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgb2YgW3RdLCBpbiBbTyhsb2cgbildIHRpbWUuICBUaGVcbiAgICAgIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFtOb25lXSBpZiBbaSA8IDBdIG9yIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtyZW1vdmVfaW5kZXggdCBpXSByZXR1cm5zIGEgdmVyc2lvbiBvZiBbdF0gd2l0aCB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCByZW1vdmVkLFxuICAgICAgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFt0XSBpZiBbaSA8IDBdIG9yXG4gICAgICBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgdHJ1ZSBpZmYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdLiAqKVxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbYXJlX2Rpc2pvaW50IHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgW2lzX2VtcHR5IChpbnRlciB0MSB0MildLCBidXQgaXMgbW9yZVxuICAgICAgZWZmaWNpZW50LiAqKVxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtOYW1lZF0gYWxsb3dzIHRoZSB2YWxpZGF0aW9uIG9mIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHNldHMuICBBXG4gICAgICBbTmFtZWQudF0gaXMgYSByZWNvcmQgb2YgYSBzZXQgYW5kIGEgbmFtZSwgd2hlcmUgdGhlIG5hbWUgaXMgdXNlZCBpbiBlcnJvciBtZXNzYWdlcyxcbiAgICAgIGFuZCBbTmFtZWQuaXNfc3Vic2V0XSBhbmQgW05hbWVkLmVxdWFsXSB2YWxpZGF0ZSBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHNcbiAgICAgIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgZm9yLCBlLmcuLFxuICAgICAge1tcbiAgICAgICAgTmFtZWQuaXNfc3Vic2V0IHsgc2V0ID0gc2V0MTsgbmFtZSA9IFwic2V0MVwiIH0gfm9mXzp7c2V0ID0gc2V0MjsgbmFtZSA9IFwic2V0MlwiIH1cbiAgICAgIF19XG5cbiAgICAgIGxvb2tzIGxpa2VcbiAgICAgIHt2XG4gICAgICAgIChcInNldDEgaXMgbm90IGEgc3Vic2V0IG9mIHNldDJcIiAoaW52YWxpZF9lbGVtZW50cyAoLi4uZWxlbWVudHMgb2Ygc2V0MSAtIHNldDIuLi4pKSlcbiAgICAgICB2fVxuXG4gICAgICBzbyBbbmFtZV0gc2hvdWxkIGJlIGEgbm91biBwaHJhc2UgdGhhdCBkb2Vzbid0IHNvdW5kIGF3a3dhcmQgaW4gdGhlIGFib3ZlIGVycm9yXG4gICAgICBtZXNzYWdlLiAgRXZlbiB0aG91Z2ggaXQgYWRkcyB2ZXJib3NpdHksIGNob29zaW5nIFtuYW1lXXMgdGhhdCBzdGFydCB3aXRoIHRoZSBwaHJhc2VcbiAgICAgIFwidGhlIHNldCBvZlwiIG9mdGVuIG1ha2VzIHRoZSBlcnJvciBtZXNzYWdlIHNvdW5kIG1vcmUgbmF0dXJhbC5cbiAgKilcbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdjbXApIHNldCA6PSAoJ2EsICdjbXApIHRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIE5hbWVkLnQgPVxuICAgICAgeyBzZXQgOiAnYVxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdIGFuZCBhXG4gICAgICAgIGh1bWFuLXJlYWRhYmxlIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgc2V0IHQgLT4gb2ZfOignYSwgJ2NtcCkgc2V0IHQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBlcXVhbCB0byBbdDJdIGFuZCBhIGh1bWFuLXJlYWRhYmxlXG4gICAgICAgIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSBzZXQgdCAtPiAoJ2EsICdjbXApIHNldCB0IC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICAoKiogVGhlIGxpc3Qgb3IgYXJyYXkgZ2l2ZW4gdG8gW29mX2xpc3RdIGFuZCBbb2ZfYXJyYXldIG5lZWQgbm90IGJlIHNvcnRlZC4gKilcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdG9fbGlzdF0gYW5kIFt0b19hcnJheV0gcHJvZHVjZSBzZXF1ZW5jZXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICBjb21wYXJhdG9yLiAqKVxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIENyZWF0ZSBzZXQgZnJvbSBzb3J0ZWQgYXJyYXkuICBUaGUgaW5wdXQgbXVzdCBiZSBzb3J0ZWQgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3JcbiAgICAgIGRlc2NlbmRpbmcgb3JkZXIgYXMgZ2l2ZW4gYnkgdGhlIGNvbXBhcmF0b3IpIGFuZCBjb250YWluIG5vIGR1cGxpY2F0ZXMsIG90aGVyd2lzZSB0aGVcbiAgICAgIHJlc3VsdCBpcyBhbiBlcnJvci4gIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgW08obildLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBTaW1pbGFyIHRvIFtvZl9zb3J0ZWRfYXJyYXldLCBidXQgd2l0aG91dCBjaGVja2luZyB0aGUgaW5wdXQgYXJyYXkuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3RhYmxlX2RlZHVwX2xpc3RdIGlzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdGhlIFtMaXN0XSBtb2R1bGUgYmVjYXVzZSB0aGVcbiAgICAgIGltcGxlbWVudGF0aW9uIHJlbGllcyBjcnVjaWFsbHkgb24gc2V0cywgYW5kIGJlY2F1c2UgZG9pbmcgc28gYWxsb3dzIG9uZSB0byBhdm9pZCB1c2VzXG4gICAgICBvZiBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGZ1bmN0b3IgYXQgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25cbiAgICAgIG9mIFtDb21wYXJhdG9yXSBhbmQgdXNpbmcgdGhlIHJlc3VsdGluZyBbc3RhYmxlX2RlZHVwX2xpc3RdLiAqKVxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFttYXAgYyB0IH5mXSByZXR1cm5zIGEgbmV3IHNldCBjcmVhdGVkIGJ5IGFwcGx5aW5nIFtmXSB0byBldmVyeSBlbGVtZW50IGluXG4gICAgICBbdF0uICBUaGUgcmV0dXJuZWQgc2V0IGlzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBbY29tcGFyYXRvcl0uICBbTyhuIGxvZyBuKV0uICopXG4gIHZhbCBtYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgeyFtYXB9LCBleGNlcHQgZWxlbWVudHMgZm9yIHdoaWNoIFtmXSByZXR1cm5zIFtOb25lXSB3aWxsIGJlIGRyb3BwZWQuICAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyB0aGUgc3Vic2V0IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAgW08obiBsb2dcbiAgICAgIG4pXS4gKilcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0byBsYXJnZXN0LiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdCwgc2hvcnQgY2lyY3VpdGluZyB0aGUgZm9sZCBpZiBbZiBhY2N1bSB4XSBpcyBhbiBbRXJyb3IgX10gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cblxuICAoKiogTGlrZSB7IWZvbGR9LCBleGNlcHQgdGhhdCBpdCBnb2VzIGZyb20gdGhlIGxhcmdlc3QgdG8gdGhlIHNtYWxsZXN0IGVsZW1lbnQuICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2EgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtpdGVyIHQgfmZdIGNhbGxzIFtmXSBvbiBldmVyeSBlbGVtZW50IG9mIFt0XSwgZ29pbmcgaW4gb3JkZXIgZnJvbSB0aGUgc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QuICAqKVxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlIHR3byBzZXRzIHNpZGUgYnkgc2lkZS4gIENvbXBsZXhpdHkgaXMgW08obStuKV0gd2hlcmUgW21dIGFuZCBbbl0gYXJlIHRoZSBzaXplc1xuICAgICAgb2YgdGhlIHR3byBpbnB1dCBzZXRzLiAgQXMgYW4gZXhhbXBsZSwgd2l0aCB0aGUgaW5wdXRzIFswOyAxXSBhbmQgWzE7IDJdLCBbZl0gd2lsbCBiZVxuICAgICAgY2FsbGVkIHdpdGggW2BMZWZ0IDBdOyBbYEJvdGggKDEsIDEpXTsgYW5kIFtgUmlnaHQgMl0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KChbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBpZiBbYSwgYiA9IHBhcnRpdGlvbl90ZiBzZXQgfmZdIHRoZW4gW2FdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZWQgW3RydWVdLFxuICAgICAgYW5kIFtiXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VzIFtmYWxzZV0uICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogU2FtZSBhcyB7IXRvX2xpc3R9LiAqKVxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1pbl9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFJldHVybnMgdGhlIGxhcmdlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gICopXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWF4X2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogcmV0dXJucyBhbiBhcmJpdHJhcnkgZWxlbWVudCwgb3IgW05vbmVdIGlmIHRoZSBzZXQgaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFjaG9vc2V9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFtzcGxpdCB0IHhdIHByb2R1Y2VzIGEgdHJpcGxlIFsodDEsIG1heWJlX3gsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLFxuICAgICAgW21heWJlX3hdIGlzIHRoZSBtZW1iZXIgKGlmIGFueSkgb2YgW3RdIHdoaWNoIGNvbXBhcmVzIGVxdWFsIHRvIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsYXJnZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2xlX2d0IHQgeF0gcHJvZHVjZXMgYSBwYWlyIFsodDEsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdF9sZV9ndCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2x0X2dlIHQgeF0gcHJvZHVjZXMgYSBwYWlyIFsodDEsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBbeF0uICopXG4gIHZhbCBzcGxpdF9sdF9nZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogaWYgW2VxdWl2XSBpcyBhbiBlcXVpdmFsZW5jZSBwcmVkaWNhdGUsIHRoZW4gW2dyb3VwX2J5IHNldCB+ZXF1aXZdIHByb2R1Y2VzIGEgbGlzdFxuICAgICAgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcyAoaS5lLiwgYSBzZXQtdGhlb3JldGljIHF1b3RpZW50KS4gIEUuZy4sXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBjaGFycyA9IFNldC5vZl9saXN0IFsnQSc7ICdhJzsgJ2InOyAnYyddIGluXG4gICAgICAgIGxldCBlcXVpdiBjIGMnID0gQ2hhci5lcXVhbCAoQ2hhci51cHBlcmNhc2UgYykgKENoYXIudXBwZXJjYXNlIGMnKSBpblxuICAgICAgICBncm91cF9ieSBjaGFycyB+ZXF1aXZcbiAgICAgIF19XG5cbiAgICAgIHByb2R1Y2VzOlxuXG4gICAgICB7W1xuICAgICAgICBbU2V0Lm9mX2xpc3QgWydBJzsnYSddOyBTZXQuc2luZ2xldG9uICdiJzsgU2V0LnNpbmdsZXRvbiAnYyddXG4gICAgICBdfVxuXG4gICAgICBbZ3JvdXBfYnldIHJ1bnMgaW4gTyhuXjIpIHRpbWUsIHNvIGlmIHlvdSBoYXZlIGEgY29tcGFyaXNvbiBmdW5jdGlvbiwgaXQncyB1c3VhbGx5XG4gICAgICBtdWNoIGZhc3RlciB0byB1c2UgW1NldC5vZl9saXN0XS4gKilcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICAoKiogW3RvX3NlcXVlbmNlIHRdIGNvbnZlcnRzIHRoZSBzZXQgW3RdIHRvIGEgc2VxdWVuY2Ugb2YgdGhlIGVsZW1lbnRzIGJldHdlZW5cbiAgICAgIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmQgW2xlc3Nfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSBpbiB0aGUgb3JkZXIgaW5kaWNhdGVkIGJ5XG4gICAgICBbb3JkZXJdLiAgSWYgW2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBsZXNzX29yX2VxdWFsX3RvXSB0aGUgc2VxdWVuY2UgaXMgZW1wdHkuICBDb3N0IGlzXG4gICAgICBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgZm9yIGVhY2ggZWxlbWVudCBwcm9kdWNlZC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gW3RdIHNwZWNpZmllZCBieVxuICAgICAgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2YgdGhlIHNlZ21lbnRzIGFzXG4gICAgICBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBsZWZ0IHNlZ21lbnQsXG4gICAgICB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuICBJdCByZXR1cm5zXG4gICAgICBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOigoJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFByb2R1Y2VzIHRoZSBlbGVtZW50cyBvZiB0aGUgdHdvIHNldHMgYmV0d2VlbiBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kXG4gICAgICBbbGVzc19vcl9lcXVhbF90b10gaW4gW29yZGVyXSwgbm90aW5nIHdoZXRoZXIgZWFjaCBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGxlZnQgc2V0LFxuICAgICAgdGhlIHJpZ2h0IHNldCwgb3IgYm90aC4gIEluIHRoZSBib3RoIGNhc2UsIGJvdGggZWxlbWVudHMgYXJlIHJldHVybmVkLCBpbiBjYXNlIHRoZVxuICAgICAgY2FsbGVyIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvIHRoZSBzZXRzJyBjb21wYXJhdG9yLiAgUnVuc1xuICAgICAgaW4gTyhsZW5ndGggdCArIGxlbmd0aCB0JykuICopXG4gIG1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgICB8IExlZnQgb2YgJ2FcbiAgICAgIHwgUmlnaHQgb2YgJ2JcbiAgICAgIHwgQm90aCBvZiAnYSAqICdiXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IFNldC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gKFN0cmluZy50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW1NldC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3MsXG4gICAgICBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLiAqKVxuICBtb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKiBBIHBvbHltb3JwaGljIFNldC4gKilcbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgKCoqIFVzaW5nIGNvbXBhcmF0b3IgaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW1NldF0sIGV4Y2VwdCB0aGUgZnVuY3Rpb25zXG4gICAgICB0YWtlIGEgW35jb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRdIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXQgdGhlIHRvcGxldmVsIG9mXG4gICAgICBbU2V0XSB0YWtlcyBhIFsoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnZWx0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgKCoqIEEgW1RyZWUudF0gY29udGFpbnMganVzdCB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZSB0aGF0IGEgc2V0IGlzIGJhc2VkIG9uLCB3aXRob3V0XG4gICAgICAgICAgaW5jbHVkaW5nIHRoZSBjb21wYXJhdG9yLiAgQWNjb3JkaW5nbHksIGFueSBvcGVyYXRpb24gb24gYSBbVHJlZS50XSBtdXN0IGFsc28gdGFrZVxuICAgICAgICAgIGFzIGFuIGFyZ3VtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbXBhcmF0b3IuICopXG4gICAgICB0eXBlICgnYSwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8pIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2VsdCBIYXNoLmZvbGRlciAtPiAoJ2VsdCwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbU2V0XX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNldF9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFbXB0eVxuICAgICgqIChMZWFmIHgpIGlzIHRoZSBzYW1lIGFzIChOb2RlIChFbXB0eSwgeCwgRW1wdHksIDEsIDEpKSBidXQgdXNlcyBsZXNzIHNwYWNlLiAqKVxuICAgIHwgTGVhZiBvZiAnYVxuICAgICgqIGZpcnN0IGludCBpcyBoZWlnaHQsIHNlY29uZCBpcyBzdWItdHJlZSBzaXplICopXG4gICAgfCBOb2RlIG9mICdhIHQgKiAnYSAqICdhIHQgKiBpbnQgKiBpbnRcblxuICB0eXBlICdhIHRyZWUgPSAnYSB0XG5cbiAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGUgY2hpbGRyZW4gZGlmZmVyIGJ5XG4gICAgIGF0IG1vc3QgMi4gKilcbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHYgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2VsdCBsb3dlciB2IDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfZWx0IHYgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIHYgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBoLCBuKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgbiA9IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSB2KSBjb21wYXJlX2VsdCBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgdikgdXBwZXIgY29tcGFyZV9lbHQgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfZWx0IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfZWx0IHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgIGlmIGggPSAxXG4gICAgdGhlbiBMZWFmIHZcbiAgICBlbHNlIChcbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLlNldCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgayA9IGYgaSBpblxuICAgICAgICBMZWFmIGtcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIEVtcHR5XG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgKExlYWYga3IpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICAoKiBXZSBkb24ndCBjaGVjayBpZiB0aGUgYXJyYXkgaXMgc29ydGVkIG9yIGtleXMgYXJlIGR1cGxpY2F0ZWQsIGJlY2F1c2UgdGhhdFxuICAgICAgICAgY2hlY2tpbmcgaXMgc2xvd2VyIHRoYW4gdGhlIHdob2xlIFtvZl9zb3J0ZWRfYXJyYXldIGZ1bmN0aW9uICopXG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyIHx8IGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKGkpIGFycmF5LihpICsgMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpKVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICBsZXQgYmFsIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKGwpPmgocikrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBscnYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgbGwpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgRW1wdHkpIGxydiAoY3JlYXRlIEVtcHR5IHYgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgocik+aChsKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIHJsdiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBycik7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgRW1wdHkpIHJsdiAoY3JlYXRlIEVtcHR5IHJ2IHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGlmIGggPSAxIHRoZW4gTGVhZiB2IGVsc2UgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gIGV4Y2VwdGlvbiBTYW1lXG5cbiAgbGV0IGFkZCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gY3JlYXRlIChMZWFmIHgpIHYgRW1wdHlcbiAgICAgICAgZWxzZSBjcmVhdGUgRW1wdHkgdiAoTGVhZiB4KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBiYWwgKGF1eCBsKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbYWRkXSB0aGF0IGFzc3VtZXMgdGhhdCBbeF0gaXMgbGVzcyB0aGFuIGFsbCBleGlzdGluZyBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGFkZF9taW4geCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgIHwgTGVhZiBfIC0+IE5vZGUgKEVtcHR5LCB4LCB0LCAyLCAyKVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChhZGRfbWluIHggbCkgdiByXG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW2FkZF0gdGhhdCBhc3N1bWVzIHRoYXQgW3hdIGlzIGdyZWF0ZXIgdGhhbiBhbGwgZXhpc3RpbmcgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBhZGRfbWF4IHQgeCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICB8IExlYWYgXyAtPiBOb2RlICh0LCB4LCBFbXB0eSwgMiwgMilcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCBsIHYgKGFkZF9tYXggciB4KVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZFxuICAgICByLiAqKVxuICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gYWRkX21pbiB2IHJcbiAgICB8IF8sIEVtcHR5IC0+IGFkZF9tYXggbCB2XG4gICAgfCBMZWFmIGx2LCBfIC0+IGFkZF9taW4gbHYgKGFkZF9taW4gdiByKVxuICAgIHwgXywgTGVhZiBydiAtPiBhZGRfbWF4IChhZGRfbWF4IGwgdikgcnZcbiAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIGxoLCBfKSwgTm9kZSAocmwsIHJ2LCByciwgcmgsIF8pIC0+XG4gICAgICBpZiBsaCA+IHJoICsgMlxuICAgICAgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgMlxuICAgICAgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByclxuICAgICAgZWxzZSBjcmVhdGUgbCB2IHJcbiAgOztcblxuICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgYWNjID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiB2YWx1ZSAtPiBmIGFjYyB2YWx1ZSBbQG5vbnRhaWxdXG4gICAgICB8IE5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIGxlZnQgYWNjIHdpdGhcbiAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIGFjYyB2YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICAgICB8IENvbnRpbnVlIGEgLT4gZm9sZF91bnRpbF9oZWxwZXIgfmYgcmlnaHQgYSkpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGluaXQgd2l0aFxuICAgIHwgQ29udGludWUgeCAtPiBmaW5pc2ggeCBbQG5vbnRhaWxdXG4gICAgfCBTdG9wIHggLT4geFxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChfLCB2LCBFbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCBfLCByLCBfLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgciwgXywgXykgLT4gclxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gYmFsIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG4gIGxldCBjb25jYXQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gam9pbiB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICBsZXQgc3BsaXQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBzcGxpdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIFNvbWUgdiwgRW1wdHlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIEVtcHR5LCBOb25lLCBMZWFmIHZcbiAgICAgICAgZWxzZSBMZWFmIHYsIE5vbmUsIEVtcHR5XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbCwgU29tZSB2LCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxsLCBtYXliZV9lbHQsIHJsID0gc3BsaXQgbCBpblxuICAgICAgICAgIGxsLCBtYXliZV9lbHQsIGpvaW4gcmwgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbHIsIG1heWJlX2VsdCwgcnIgPSBzcGxpdCByIGluXG4gICAgICAgICAgam9pbiBsIHYgbHIsIG1heWJlX2VsdCwgcnIpXG4gICAgaW5cbiAgICBzcGxpdCB0XG4gIDs7XG5cbiAgbGV0IHJlYyBzcGxpdF9sZV9ndCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA+PSAwIHRoZW4gTGVhZiB2LCBFbXB0eSBlbHNlIEVtcHR5LCBMZWFmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gYWRkX21heCBsIHYsIHJcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIHJsID0gc3BsaXRfbGVfZ3QgbCB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBsbCwgam9pbiBybCB2IHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxyLCByciA9IHNwbGl0X2xlX2d0IHIgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgam9pbiBsIHYgbHIsIHJyKVxuICA7O1xuXG4gIGxldCByZWMgc3BsaXRfbHRfZ2UgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPiAwIHRoZW4gTGVhZiB2LCBFbXB0eSBlbHNlIEVtcHR5LCBMZWFmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gbCwgYWRkX21pbiB2IHJcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIHJsID0gc3BsaXRfbHRfZ2UgbCB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBsbCwgam9pbiBybCB2IHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxyLCByciA9IHNwbGl0X2x0X2dlIHIgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgam9pbiBsIHYgbHIsIHJyKVxuICA7O1xuXG4gICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IHJlYyBtZW0gdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDBcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDAgfHwgbWVtIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24geCA9IExlYWYgeFxuXG4gIGxldCByZW1vdmUgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA9IDAgdGhlbiBFbXB0eSBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6XyA9XG4gICAgbGV0IHJlYyBhdXggdCBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBMZWFmIF8gLT4gaWYgaSA9IDAgdGhlbiBFbXB0eSBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCBpKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IGkgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHVuaW9uIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICAgICAgfCBMZWFmIHYxLCBfIC0+IHVuaW9uIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgczJcbiAgICAgICAgfCBfLCBMZWFmIHYyIC0+IHVuaW9uIHMxIChOb2RlIChFbXB0eSwgdjIsIEVtcHR5LCAxLCAxKSlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBoMSwgXyksIE5vZGUgKGwyLCB2MiwgcjIsIGgyLCBfKSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxXG4gICAgICAgICAgICB0aGVuIGFkZCBzMSB2MiB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbDIsIF8sIHIyID0gc3BsaXQgczIgdjEgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpKVxuICAgICAgICAgIGVsc2UgaWYgaDEgPSAxXG4gICAgICAgICAgdGhlbiBhZGQgczIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbDEsIF8sIHIxID0gc3BsaXQgczEgdjIgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKSkpXG4gICAgaW5cbiAgICB1bmlvbiBzMSBzMlxuICA7O1xuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIHhzID1cbiAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIExpc3QuZm9sZCB4cyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjIHggLT4gdW5pb24gYWMgKHRvX3RyZWUgeCkgfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlciBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IChMZWFmIGVsdCBhcyBzaW5nbGV0b24pLCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIChMZWFmIGVsdCBhcyBzaW5nbGV0b24pIC0+XG4gICAgICAgICAgaWYgbWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0IHRoZW4gc2luZ2xldG9uIGVsc2UgRW1wdHlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgICB8IGwyLCBTb21lIHYxLCByMiAtPiBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKSkpXG4gICAgaW5cbiAgICBpbnRlciBzMSBzMlxuICA7O1xuXG4gIGxldCBkaWZmIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gRW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIC0+IEVtcHR5XG4gICAgICAgIHwgdDEsIEVtcHR5IC0+IHQxXG4gICAgICAgIHwgTGVhZiB2MSwgdDIgLT4gZGlmZiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHQyXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgICB8IGwyLCBTb21lIF8sIHIyIC0+IGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpKSlcbiAgICBpblxuICAgIGRpZmYgczEgczJcbiAgOztcblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2EsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnYSAqICdhIHRyZWUgKiAoJ2EsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyBzIChlIDogKF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgcyAoZSA6IChfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NldCBzIDogKF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHMgRW5kXG4gICAgbGV0IG9mX3NldF9yaWdodCBzIDogKF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHMgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIHIsIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCByIChNb3JlICh2LCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGUxIGUyID1cbiAgICAgIGxldCByZWMgbG9vcCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIHIxLCBlMSksIE1vcmUgKHYyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgaWYgcGh5c19lcXVhbCByMSByMlxuICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpXG4gICAgICBpblxuICAgICAgbG9vcCBlMSBlMlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGl0ZXIgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gKClcbiAgICAgIHwgTW9yZSAoYSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgZiBhO1xuICAgICAgICBpdGVyIChjb25zIHRyZWUgZW51bSkgfmZcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIyIGNvbXBhcmVfZWx0IHQxIHQyIH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gKClcbiAgICAgICAgfCBFbmQsIF8gLT4gaXRlciB0MiB+ZjooZnVuIGEgLT4gZiAoYFJpZ2h0IGEpKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgXywgRW5kIC0+IGl0ZXIgdDEgfmY6KGZ1biBhIC0+IGYgKGBMZWZ0IGEpKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBCb3RoIChhMSwgYTIpKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYExlZnQgYTEpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBmIChgUmlnaHQgYTIpO1xuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgOiAoKF8sIF8pIEVpdGhlci50LCBfKSBTZXF1ZW5jZS5TdGVwLnQgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBTZWNvbmQgZWx0OyBzdGF0ZSA9IEVuZCwgY29ucyB0cmVlIGVudW0gfVxuICAgICAgICB8IE1vcmUgKGVsdCwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBGaXJzdCBlbHQ7IHN0YXRlID0gY29ucyB0cmVlIGVudW0sIEVuZCB9XG4gICAgICAgIHwgKE1vcmUgKGExLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBuZXh0X3N0YXRlIH0pXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBGaXJzdCBhMTsgc3RhdGUgPSBjb25zIHRyZWUxIGVudW0xLCByaWdodCB9XG4gICAgICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gU2Vjb25kIGEyOyBzdGF0ZSA9IGxlZnQsIGNvbnMgdHJlZTIgZW51bTIgfVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl9zZXQgdDEsIG9mX3NldCB0MikgfmY6c3RlcFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGs7IHN0YXRlID0gRW51bS5jb25zIHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrOyBzdGF0ZSA9IEVudW0uY29uc19yaWdodCB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0X3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2VsdCBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlbHQgLT4gYWRkIHQgZWx0IH5jb21wYXJlX2VsdFxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGdyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApIFtAbm9udGFpbF1cbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgeCA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnQgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0IFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICAgICAgdCdcbiAgICA9XG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdClcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0JylcbiAgICAgIH5jb21wYXJlOlxuICAgICAgICAobWF0Y2ggb3JkZXIgd2l0aFxuICAgICAgICAgfCBgSW5jcmVhc2luZyAtPiBjb21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIHwgYERlY3JlYXNpbmcgLT4gRm4uZmxpcCBjb21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgOztcblxuICBsZXQgaXRlcjIgczEgczIgfmNvbXBhcmVfZWx0IH5mID1cbiAgICBFbnVtLml0ZXIyIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKSB+ZlxuICA7O1xuXG4gIGxldCBlcXVhbCBzMSBzMiB+Y29tcGFyZV9lbHQgPSBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID0gMFxuXG4gIGxldCBpc19zdWJzZXQgczEgfm9mXzpzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaXNfc3Vic2V0IHMxIH5vZl86czIgPVxuICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgIHwgRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBMZWFmIHYxLCB0MiAtPiBtZW0gdDIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCBMZWFmIHYyIC0+XG4gICAgICAgIChtYXRjaCBsMSwgcjEgd2l0aFxuICAgICAgICAgfCBFbXB0eSwgRW1wdHkgLT5cbiAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZG4ndCBvY2N1ciBpbiBwcmFjdGljZSBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGNvbnN0cnVjdGVkXG4gICAgICAgICAgICAgIGEgTGVhZiByYXRoZXIgdGhhbiBhIE5vZGUgd2l0aCB0d28gRW1wdHkgc3VidHJlZXMgKilcbiAgICAgICAgICAgY29tcGFyZV9lbHQgdjEgdjIgPSAwXG4gICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCAoTm9kZSAobDIsIHYyLCByMiwgXywgXykgYXMgdDIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIHBoeXNfZXF1YWwgczEgczIgfHwgKGlzX3N1YnNldCBsMSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnIyKVxuICAgICAgICAgICgqIE5vdGUgdGhhdCBoZWlnaHQgYW5kIHNpemUgZG9uJ3QgbWF0dGVyIGhlcmUuICopXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBpc19zdWJzZXQgKE5vZGUgKGwxLCB2MSwgRW1wdHksIDAsIDApKSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnQyXG4gICAgICAgIGVsc2UgaXNfc3Vic2V0IChOb2RlIChFbXB0eSwgdjEsIHIxLCAwLCAwKSkgfm9mXzpyMiAmJiBpc19zdWJzZXQgbDEgfm9mXzp0MlxuICAgIGluXG4gICAgaXNfc3Vic2V0IHMxIH5vZl86czJcbiAgOztcblxuICBsZXQgcmVjIGFyZV9kaXNqb2ludCBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgZWx0LCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIExlYWYgZWx0IC0+IG5vdCAobWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0KVxuICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIGZhbHNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT5cbiAgICAgICAgICBhcmVfZGlzam9pbnQgbDEgbDIgfmNvbXBhcmVfZWx0ICYmIGFyZV9kaXNqb2ludCByMSByMiB+Y29tcGFyZV9lbHRcbiAgICAgICAgfCBfLCBTb21lIF8sIF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBpdGVyIGw7XG4gICAgICAgIGYgdjtcbiAgICAgICAgaXRlciByXG4gICAgaW5cbiAgICBpdGVyIHQgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgcmVjIGZvbGQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIGFjY3UgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkgdilcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9lbGVtIHN0YXRlIHQgPVxuICAgIGZvbGQgdCB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKSB+ZjpoYXNoX2ZvbGRfZWxlbVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuXG4gIGxldCByZWMgZm9sZF9yaWdodCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgdiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgdiAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZm9yX2FsbCB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2ICYmIGZvcl9hbGwgfmY6cCBsICYmIGZvcl9hbGwgfmY6cCByXG4gIDs7XG5cbiAgbGV0IHJlYyBleGlzdHMgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgfHwgZXhpc3RzIH5mOnAgbCB8fCBleGlzdHMgfmY6cCByXG4gIDs7XG5cbiAgbGV0IGZpbHRlciBzIH5mOnAgPVxuICAgIGxldCByZWMgZmlsdCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IExlYWYgdiBhcyB0IC0+IGlmIHAgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBsJyA9IGZpbHQgbCBpblxuICAgICAgICBsZXQga2VlcF92ID0gcCB2IGluXG4gICAgICAgIGxldCByJyA9IGZpbHQgciBpblxuICAgICAgICBpZiBrZWVwX3YgJiYgcGh5c19lcXVhbCBsIGwnICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICB0aGVuIHRcbiAgICAgICAgZWxzZSBpZiBrZWVwX3ZcbiAgICAgICAgdGhlbiBqb2luIGwnIHYgcidcbiAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcbiAgICBpblxuICAgIGZpbHQgcyBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdFxuICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgclxuICAgIGluXG4gICAgZmlsdCBFbXB0eSBzIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHMgfmY6cCA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgICB8IExlYWYgdiBhcyB0IC0+IGlmIHAgdiB0aGVuIHQsIEVtcHR5IGVsc2UgRW1wdHksIHRcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgbCd0LCBsJ2YgPSBsb29wIGwgaW5cbiAgICAgICAgbGV0IGtlZXBfdl90ID0gcCB2IGluXG4gICAgICAgIGxldCByJ3QsIHInZiA9IGxvb3AgciBpblxuICAgICAgICBsZXQgbWsga2VlcF92IGwnIHInID1cbiAgICAgICAgICBpZiBrZWVwX3YgJiYgcGh5c19lcXVhbCBsIGwnICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgaWYga2VlcF92XG4gICAgICAgICAgdGhlbiBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuICAgICAgICBpblxuICAgICAgICBtayBrZWVwX3ZfdCBsJ3Qgcid0LCBtayAobm90IGtlZXBfdl90KSBsJ2YgcidmXG4gICAgaW5cbiAgICBsb29wIHMgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IHYgOjogYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcbiAgOztcblxuICBsZXQgZWxlbWVudHMgcyA9IGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgbGV0IGNob29zZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBjaG9vc2VfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTZXQuY2hvb3NlX2V4bjogZW1wdHkgc2V0XCIpIGluXG4gICAgbGV0IGNob29zZV9leG4gdCA9XG4gICAgICBtYXRjaCBjaG9vc2UgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgY2hvb3NlX2V4blxuICA7O1xuXG4gIGxldCBvZl9saXN0IGxzdCB+Y29tcGFyZV9lbHQgPVxuICAgIExpc3QuZm9sZCBsc3QgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlIH5jb21wYXJlX2VsdCA9XG4gICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgdG9fbGlzdCBzID0gZWxlbWVudHMgc1xuXG4gIGxldCBvZl9hcnJheSBhIH5jb21wYXJlX2VsdCA9XG4gICAgQXJyYXkuZm9sZCBhIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gICgqIGZhc3RlciBidXQgZXF1aXZhbGVudCB0byBbQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KV0gKilcbiAgbGV0IHRvX2FycmF5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IFt8fF1cbiAgICB8IExlYWYgdiAtPiBbfCB2IHxdXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgbGV0IHJlcyA9IEFycmF5LmNyZWF0ZSB+bGVuOnMgdiBpblxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgKCogSW52YXJpYW50OiBvbiBlbnRyeSBhbmQgb24gZXhpdCB0byBbbG9vcF0sICFwb3NfcmVmIGlzIHRoZSBuZXh0XG4gICAgICAgICAgIGF2YWlsYWJsZSBjZWxsIGluIHRoZSBhcnJheS4gKilcbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IExlYWYgdiAtPlxuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgICBsb29wIGw7XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWY7XG4gICAgICAgICAgbG9vcCByXG4gICAgICBpblxuICAgICAgbG9vcCBsO1xuICAgICAgKCogcmVzLighcG9zX3JlZikgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAoYnkgQXJyYXkuY3JlYXRlIH5sZW46YWJvdmUpLiAqKVxuICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgbG9vcCByO1xuICAgICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mIH5jb21wYXJlX2VsdCA9XG4gICAgZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IChmIHgpIH5jb21wYXJlX2VsdCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBncm91cF9ieSBzZXQgfmVxdWl2ID1cbiAgICBsZXQgcmVjIGxvb3Agc2V0IGVxdWl2X2NsYXNzZXMgPVxuICAgICAgaWYgaXNfZW1wdHkgc2V0XG4gICAgICB0aGVuIGVxdWl2X2NsYXNzZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeCA9IGNob29zZV9leG4gc2V0IGluXG4gICAgICAgIGxldCBlcXVpdl94LCBub3RfZXF1aXZfeCA9XG4gICAgICAgICAgcGFydGl0aW9uX3RmIHNldCB+ZjooZnVuIGVsdCAtPiBwaHlzX2VxdWFsIHggZWx0IHx8IGVxdWl2IHggZWx0KVxuICAgICAgICBpblxuICAgICAgICBsb29wIG5vdF9lcXVpdl94IChlcXVpdl94IDo6IGVxdWl2X2NsYXNzZXMpKVxuICAgIGluXG4gICAgbG9vcCBzZXQgW10gW0Bub250YWlsXVxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gU29tZSB2XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggZmluZCBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmQgciB+ZlxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAobWF0Y2ggZiB2IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBmaW5kX21hcCBsIH5mIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgciB+ZlxuICAgICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcikpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2V0LmZpbmRfZXhuIGZhaWxlZCB0byBmaW5kIGEgbWF0Y2hpbmcgZWxlbWVudFwiXG4gICAgfCBTb21lIGUgLT4gZVxuICA7O1xuXG4gIGxldCByZWMgbnRoIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgaSA9IDAgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgaWYgaSA+PSBzXG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBudGggbCBpIGVsc2UgaWYgYyA9IDAgdGhlbiBTb21lIHYgZWxzZSBudGggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCB4cyBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuID1cbiAgICAgIG1hdGNoIHhzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgbGVmdG92ZXJzXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIG1lbSBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0XG4gICAgICAgIHRoZW4gbG9vcCB0bCBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuXG4gICAgICAgIGVsc2UgbG9vcCB0bCAoaGQgOjogbGVmdG92ZXJzKSAoYWRkIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHQpXG4gICAgaW5cbiAgICBsb29wIHhzIFtdIGVtcHR5XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBsc3QgLT5cbiAgICAgIGxldCBlbHRfbHN0ID0gTGlzdC5tYXAgbHN0IH5mOmFfb2Zfc2V4cCBpblxuICAgICAgbGV0IHNldCA9IG9mX2xpc3QgZWx0X2xzdCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGxlbmd0aCBzZXQgPSBMaXN0Lmxlbmd0aCBsc3RcbiAgICAgIHRoZW4gc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNldCA9IHJlZiBlbXB0eSBpblxuICAgICAgICBMaXN0Lml0ZXIyX2V4biBsc3QgZWx0X2xzdCB+ZjooZnVuIGVsX3NleHAgZWwgLT5cbiAgICAgICAgICBpZiBtZW0gIXNldCBlbCB+Y29tcGFyZV9lbHRcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBkdXBsaWNhdGUgZWxlbWVudCBpbiBzZXRcIiBlbF9zZXhwXG4gICAgICAgICAgZWxzZSBzZXQgOj0gYWRkICFzZXQgZWwgfmNvbXBhcmVfZWx0KTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlKVxuICAgIHwgc2V4cCAtPiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biBlbCBhY2MgLT4gc2V4cF9vZl9hIGVsIDo6IGFjYykpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbGV0IGlzX3N1YnNldFxuICAgICAgICAgIChzdWJzZXQgOiBfIE5hbWVkLnQpXG4gICAgICAgICAgfm9mXzooc3VwZXJzZXQgOiBfIE5hbWVkLnQpXG4gICAgICAgICAgfnNleHBfb2ZfZWx0XG4gICAgICAgICAgfmNvbXBhcmVfZWx0XG4gICAgICA9XG4gICAgICBsZXQgaW52YWxpZF9lbGVtZW50cyA9IGRpZmYgc3Vic2V0LnNldCBzdXBlcnNldC5zZXQgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBpc19lbXB0eSBpbnZhbGlkX2VsZW1lbnRzXG4gICAgICB0aGVuIE9rICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGludmFsaWRfZWxlbWVudHNfc2V4cCA9IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBpbnZhbGlkX2VsZW1lbnRzIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgKHN1YnNldC5uYW1lIF4gXCIgaXMgbm90IGEgc3Vic2V0IG9mIFwiIF4gc3VwZXJzZXQubmFtZSlcbiAgICAgICAgICAgICBbIFwiaW52YWxpZF9lbGVtZW50c1wiLCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgXSkpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBzMSBzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgICAgWyBpc19zdWJzZXQgczEgfm9mXzpzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIDsgaXNfc3Vic2V0IHMyIH5vZl86czEgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2EsICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogJ2EgVHJlZTAudFxuICB9XG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdHJlZSA9ICdhIFRyZWUwLnRcblxubGV0IGxpa2UgeyB0cmVlID0gXzsgY29tcGFyYXRvciB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgfVxuXG5sZXQgbGlrZV9tYXliZV9ub19vcCAoeyB0cmVlID0gb2xkX3RyZWU7IGNvbXBhcmF0b3IgfSBhcyBvbGRfdCkgdHJlZSA9XG4gIGlmIHBoeXNfZXF1YWwgb2xkX3RyZWUgdHJlZSB0aGVuIG9sZF90IGVsc2UgeyB0cmVlOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCBjb21wYXJlX2VsdCB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcblxuICBsZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGtcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gICAgZW5kKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0LnRyZWVcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0LnRyZWVcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdC50cmVlXG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHQudHJlZVxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0LnRyZWVcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0LnRyZWVcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5pbml0IH5mIH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhLnRyZWUgYi50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0LnRyZWUgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdC50cmVlIH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdC50cmVlIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdC50cmVlIH5mXG4gIGxldCBtZW0gdCBhID0gVHJlZTAubWVtIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZV9tYXliZV9ub19vcCB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mKVxuICBsZXQgYWRkIHQgYSA9IGxpa2UgdCAoVHJlZTAuYWRkIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCByZW1vdmUgdCBhID0gbGlrZSB0IChUcmVlMC5yZW1vdmUgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAudW5pb24gdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgaW50ZXIgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5pbnRlciB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBkaWZmIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjb21wYXJlX2VsdCB0MSkgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0LnRyZWUgfm9mXzpvZl8udHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCB0b19uYW1lZF90cmVlIChuYW1lZCA6IChfLCBfKSB0IE5hbWVkLnQpID0geyBuYW1lZCB3aXRoIHNldCA9IG5hbWVkLnNldC50cmVlIH1cblxuICAgIGxldCBpc19zdWJzZXQgc3Vic2V0IH5vZl86c3VwZXJzZXQgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgICh0b19uYW1lZF90cmVlIHN1YnNldClcbiAgICAgICAgfm9mXzoodG9fbmFtZWRfdHJlZSBzdXBlcnNldClcbiAgICAgICAgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBzdWJzZXQuc2V0KVxuICAgICAgICB+c2V4cF9vZl9lbHQ6c3Vic2V0LnNldC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgdDEgdDIgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdCBbIGlzX3N1YnNldCB0MSB+b2ZfOnQyOyBpc19zdWJzZXQgdDIgfm9mXzp0MSBdXG4gICAgOztcblxuICAgIGluY2x1ZGUgTmFtZWRcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsZXQgdHJlZV90LCB0cmVlX2YgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0IHRyZWVfdCwgbGlrZV9tYXliZV9ub19vcCB0IHRyZWVfZlxuICA7O1xuXG4gIGxldCBzcGxpdCB0IGEgPVxuICAgIGxldCB0cmVlMSwgYiwgdHJlZTIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBiLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgc3BsaXRfbGVfZ3QgdCBhID1cbiAgICBsZXQgdHJlZTEsIHRyZWUyID0gVHJlZTAuc3BsaXRfbGVfZ3QgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2x0X2dlIHQgYSA9XG4gICAgbGV0IHRyZWUxLCB0cmVlMiA9IFRyZWUwLnNwbGl0X2x0X2dlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IExpc3QubWFwIChUcmVlMC5ncm91cF9ieSB0LnRyZWUgfmVxdWl2KSB+ZjoobGlrZSB0KVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0LnRyZWUgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlX2luZGV4IHQudHJlZSBpIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSB0LmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICAgICAgdCcudHJlZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgc3RhdGUgdC50cmVlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID0gKCdhLCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBjZSBjb21wYXJhdG9yID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpIGFfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGUgPSBUcmVlMC5zaW5nbGV0b24gZVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID0gVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdFxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0XG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAubWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyIHQgfmYgPSBUcmVlMC5maWx0ZXIgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uX3RmIHQgfmZcbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEgYiB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAubWVtIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuYWRkIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAucmVtb3ZlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLnVuaW9uIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGludGVyIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuaW50ZXIgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmRpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNlIGNvbXBhcmF0b3IpIHQxIHQyXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgYXJlX2Rpc2pvaW50IH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGEgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl8gfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLnVuaW9uX2xpc3QgbCB+dG9fdHJlZTpGbi5pZCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IFRyZWUwLmdyb3VwX2J5IHQgfmVxdWl2XG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc3BsaXRfbGVfZ3QgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXRfbGVfZ3QgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0X2x0X2dlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0X2x0X2dlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IH5jb21wYXJhdG9yIHQgaSA9IFRyZWUwLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWUwLk5hbWVkXG5cbiAgICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQxIH5vZl86dDIgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgIHQxXG4gICAgICAgIH5vZl86dDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgICAgVHJlZTAuTmFtZWQuZXF1YWxcbiAgICAgICAgdDFcbiAgICAgICAgdDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5jb21wYXJlIGFfb2Zfc2V4cCBzZXhwKVxuICA7O1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cbiAgZW5kXG5cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGUgfVxuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgbClcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgbGV0IHRyZWUgPVxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IuTW9uYWRfaW5maXguKFxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgPj58IGZ1biB0cmVlIC0+IHsgY29tcGFyYXRvcjsgdHJlZSB9KVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAubWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvclxuICAgIDsgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIH1cbiAgOztcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG50eXBlICgnZWx0LCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGVsdCBjbXApICgobW9kdWxlIE0pIDogKGVsdCwgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCB1bmlvbl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB+bGVuIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2Zfc2VxdWVuY2UgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBzdGFibGVfZGVkdXBfbGlzdCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBtYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxubGV0IGZpbHRlcl9tYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCB0b190cmVlID0gVXNpbmdfY29tcGFyYXRvci50b190cmVlXG5sZXQgb2ZfdHJlZSBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGVsdCBjbXApXG4gICAgICAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdClcbiAgOiAoZWx0LCBfKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGVsdCkgc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZVxuOztcblxubGV0IGhhc2hfbV9fdCBmb2xkZXIgdCA9XG4gIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9tX190IGZvbGRlciAoSGFzaC5jcmVhdGUgKCkpIHQgaW5cbiAgSGFzaC5nZXRfaGFzaF92YWx1ZSBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSBzZXQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0cmVlID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgdW5pb25fbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yIGFcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2Zfc2VxdWVuY2UgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfcmVmXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPSBlcXVhbF9yZWZcblxuICBsZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfKVxuICAgICAgICA6ICgoKGFfXzAwOV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA5XykgLT4gKGFfXzAwOV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDlfIHQpIC0+XG4gICAgICBnbG9iYWxpemVfcmVmXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IHJlZl9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX3JlZlxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiByZWZfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBnbG9iYWxpemUgOiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0XG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbigqIEluIHRoZSBkZWZpbml0aW9uIG9mIFt0XSwgd2UgZG8gbm90IGhhdmUgW1tAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXSBiZWNhdXNlXG4gICBpbiBnZW5lcmFsLCBzeW50YXggZXh0ZW5zaW9ucyB0ZW5kIHRvIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gd2hlbiBhdmFpbGFibGUgcmF0aGVyIHRoYW5cbiAgIHVzaW5nIHRoZSBhbGlhcy4gIEhlcmUgdGhhdCB3b3VsZCBsZWFkIHRvIHVzZSB0aGUgcmVjb3JkIHJlcHJlc2VudGF0aW9uIFsgeyBtdXRhYmxlXG4gICBjb250ZW50cyA6ICdhIH0gXSB3aGljaCB3b3VsZCByZXN1bHQgaW4gZGlmZmVyZW50IChhbmQgdW53YW50ZWQpIGJlaGF2aW9yLiAgKilcbnR5cGUgJ2EgdCA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuZXh0ZXJuYWwgY3JlYXRlIDogJ2EgLT4gKCdhIHRbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG5sZXQgc3dhcCB0MSB0MiA9XG4gIGxldCB0bXAgPSAhdDEgaW5cbiAgdDEgOj0gIXQyO1xuICB0MiA6PSB0bXBcbjs7XG5cbmxldCByZXBsYWNlIHQgZiA9IHQgOj0gZiAhdFxuXG5sZXQgc2V0X3RlbXBvcmFyaWx5IHQgYSB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gIXQgaW5cbiAgdCA6PSBhO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQgOj0gcmVzdG9yZV90bylcbjs7XG5cbm1vZHVsZSBBbmRfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVCA6ICdhIHJlZiAqICdhIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V0IChUIChyLCBhKSkgPSByIDo9IGFcbiAgbGV0IHNldHMgdHMgPSBMaXN0Lml0ZXIgdHMgfmY6c2V0XG4gIGxldCBzbmFwc2hvdCAoVCAociwgXykpID0gVCAociwgIXIpXG4gIGxldCBzbmFwc2hvdHMgdHMgPSBMaXN0Lm1hcCB0cyB+ZjpzbmFwc2hvdFxuZW5kXG5cbmxldCBzZXRzX3RlbXBvcmFyaWx5IGFuZF92YWx1ZXMgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9IEFuZF92YWx1ZS5zbmFwc2hvdHMgYW5kX3ZhbHVlcyBpblxuICBBbmRfdmFsdWUuc2V0cyBhbmRfdmFsdWVzO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IEFuZF92YWx1ZS5zZXRzIHJlc3RvcmVfdG8pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cblxuKCogW3RdIHN0b3JlcyB0aGUgW3QubGVuZ3RoXSBxdWV1ZSBlbGVtZW50cyBhdCBjb25zZWN1dGl2ZSBpbmNyZWFzaW5nIGluZGljZXMgb2YgW3QuZWx0c10sXG4gICBtb2QgdGhlIGNhcGFjaXR5IG9mIFt0XSwgd2hpY2ggaXMgW09wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gIFRoZSBjYXBhY2l0eSBpc1xuICAgcmVxdWlyZWQgdG8gYmUgYSBwb3dlciBvZiB0d28gKHVzZXItcmVxdWVzdGVkIGNhcGFjaXRpZXMgYXJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgIHBvd2VyKSwgc28gdGhhdCBtb2QgY2FuIHF1aWNrbHkgYmUgY29tcHV0ZWQgdXNpbmcgW2xhbmQgdC5tYXNrXSwgd2hlcmUgW3QubWFzayA9XG4gICBjYXBhY2l0eSB0IC0gMV0uICBTbywgcXVldWUgZWxlbWVudCBbaV0gaXMgYXQgW3QuZWx0cy4oICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKV0uXG5cbiAgIFtudW1fbXV0YXRpb25zXSBpcyB1c2VkIHRvIGRldGVjdCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBudW1fbXV0YXRpb25zIDogaW50XG4gIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbWFzayA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV9cbiAgICB7IG51bV9tdXRhdGlvbnMgPSBudW1fbXV0YXRpb25zX18wMDNfXG4gICAgOyBmcm9udCA9IGZyb250X18wMDVfXG4gICAgOyBtYXNrID0gbWFza19fMDA3X1xuICAgIDsgbGVuZ3RoID0gbGVuZ3RoX18wMDlfXG4gICAgOyBlbHRzID0gZWx0c19fMDExX1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDAyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTJfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMTFfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDlfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBtYXNrX18wMDdfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFza1wiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDZfID0gc2V4cF9vZl9pbnQgZnJvbnRfXzAwNV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmcm9udFwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbnVtX211dGF0aW9uc19fMDAzXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm51bV9tdXRhdGlvbnNcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSB0eXBlIFMgPSBRdWV1ZV9pbnRmLlNcblxubGV0IGluY19udW1fbXV0YXRpb25zIHQgPSB0Lm51bV9tdXRhdGlvbnMgPC0gdC5udW1fbXV0YXRpb25zICsgMVxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5sZXQgZWx0c19pbmRleCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9pc19zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9pc19zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgYSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSkgYVxubGV0IHVuc2FmZV91bnNldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5cbmxldCBjaGVja19pbmRleF9leG4gdCBpID1cbiAgaWYgaSA8IDAgfHwgaSA+PSB0Lmxlbmd0aFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJRdWV1ZSBpbmRleCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIFsgXCJpbmRleFwiLCBpIHw+IEludC5zZXhwX29mX3Q7IFwibGVuZ3RoXCIsIHQubGVuZ3RoIHw+IEludC5zZXhwX29mX3QgXSlcbjs7XG5cbmxldCBnZXQgdCBpID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgdW5zYWZlX2dldCB0IGlcbjs7XG5cbmxldCBzZXQgdCBpIGEgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICB1bnNhZmVfc2V0IHQgaSBhXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxubGV0IGxlbmd0aCB7IGxlbmd0aDsgXyB9ID0gbGVuZ3RoXG5cbmxldCBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zID1cbiAgaWYgdC5udW1fbXV0YXRpb25zIDw+IG51bV9tdXRhdGlvbnNcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwibXV0YXRpb24gb2YgcXVldWUgZHVyaW5nIGl0ZXJhdGlvblwiXG4gICAgICAgICBbIFwiXCIsIHQgfD4gc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIF0pXG47O1xuXG5sZXQgY29tcGFyZSA9XG4gIGxldCByZWMgdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCBwb3MgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MiA9XG4gICAgbWF0Y2ggcG9zID0gbGVuMSwgcG9zID0gbGVuMiB3aXRoXG4gICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgIGxldCB4ID0gY29tcGFyZV9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgMCAtPiB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyXG4gICAgICAgfCBuIC0+IG4pXG4gIGluXG4gIGZ1biBjb21wYXJlX2VsdCB0MSB0MiAtPlxuICAgIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB0aGVuIDBcbiAgICBlbHNlXG4gICAgICB1bnNhZmVfY29tcGFyZV9mcm9tXG4gICAgICAgIGNvbXBhcmVfZWx0XG4gICAgICAgIDBcbiAgICAgICAgfnQxXG4gICAgICAgIH50MlxuICAgICAgICB+bGVuMTp0MS5sZW5ndGhcbiAgICAgICAgfmxlbjI6dDIubGVuZ3RoXG4gICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGVxdWFsID1cbiAgbGV0IHJlYyB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgcG9zIH50MSB+dDIgfm11dDEgfm11dDIgfmxlbiA9XG4gICAgcG9zID0gbGVuXG4gICAgfHxcbiAgICBsZXQgYiA9IGVxdWFsX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICBiICYmIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuXG4gIGluXG4gIGZ1biBlcXVhbF9lbHQgdDEgdDIgLT5cbiAgICBwaHlzX2VxdWFsIHQxIHQyXG4gICAgfHxcbiAgICBsZXQgbGVuMSA9IHQxLmxlbmd0aCBpblxuICAgIGxldCBsZW4yID0gdDIubGVuZ3RoIGluXG4gICAgbGVuMSA9IGxlbjJcbiAgICAmJiB1bnNhZmVfZXF1YWxfZnJvbVxuICAgICAgICAgZXF1YWxfZWx0XG4gICAgICAgICAwXG4gICAgICAgICB+dDFcbiAgICAgICAgIH50MlxuICAgICAgICAgfmxlbjpsZW4xXG4gICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgeyBudW1fbXV0YXRpb25zOyBtYXNrID0gXzsgZWx0czsgZnJvbnQ7IGxlbmd0aCB9ID0gdCBpblxuICBhc3NlcnQgKGZyb250ID49IDApO1xuICBhc3NlcnQgKGZyb250IDwgY2FwYWNpdHkgdCk7XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgYXNzZXJ0IChjYXBhY2l0eSA9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gIGFzc2VydCAoY2FwYWNpdHkgPj0gMSk7XG4gIGFzc2VydCAoSW50LmlzX3BvdzIgY2FwYWNpdHkpO1xuICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkpO1xuICBmb3IgaSA9IDAgdG8gY2FwYWNpdHkgLSAxIGRvXG4gICAgaWYgaSA8IHQubGVuZ3RoXG4gICAgdGhlbiAoXG4gICAgICBpbnZhcmlhbnRfYSAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucylcbiAgICBlbHNlIGFzc2VydCAobm90ICh1bnNhZmVfaXNfc2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgP2NhcGFjaXR5ICgpIDogYSB0ID1cbiAgbGV0IGNhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiY2Fubm90IGhhdmUgcXVldWUgd2l0aCBuZWdhdGl2ZSBjYXBhY2l0eVwiXG4gICAgICAgICAgICAgWyBcImNhcGFjaXR5XCIsIGNhcGFjaXR5IHw+IEludC5zZXhwX29mX3QgXSlcbiAgICAgIGVsc2UgaWYgY2FwYWNpdHkgPSAwXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgSW50LmNlaWxfcG93MiBjYXBhY2l0eVxuICBpblxuICB7IG51bV9tdXRhdGlvbnMgPSAwXG4gIDsgZnJvbnQgPSAwXG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGxlbmd0aCA9IDBcbiAgOyBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmNhcGFjaXR5XG4gIH1cbjs7XG5cbmxldCBibGl0X3RvX2FycmF5IH5zcmMgZHN0ID1cbiAgYXNzZXJ0IChzcmMubGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZHN0KTtcbiAgbGV0IGZyb250X2xlbiA9IEludC5taW4gc3JjLmxlbmd0aCAoY2FwYWNpdHkgc3JjIC0gc3JjLmZyb250KSBpblxuICBsZXQgcmVzdF9sZW4gPSBzcmMubGVuZ3RoIC0gZnJvbnRfbGVuIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46ZnJvbnRfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6c3JjLmZyb250IH5kc3QgfmRzdF9wb3M6MDtcbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpyZXN0X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3Bvczpmcm9udF9sZW5cbjs7XG5cbmxldCBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgZHN0ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICBibGl0X3RvX2FycmF5IH5zcmM6dCBkc3Q7XG4gIHQuZnJvbnQgPC0gMDtcbiAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gIHQuZWx0cyA8LSBkc3Rcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBkZXNpcmVkX2NhcGFjaXR5ID1cbiAgKCogV2UgYWxsb3cgYXJndW1lbnRzIGxlc3MgdGhhbiAxIHRvIFtzZXRfY2FwYWNpdHldLCBidXQgdHJhbnNsYXRlIHRoZW0gdG8gMSB0byBzaW1wbGlmeVxuICAgICB0aGUgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUgYXJyYXkgbGVuZ3RoIGJlaW5nIGEgcG93ZXIgb2YgMi4gKilcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5jZWlsX3BvdzIgKG1heCAxIChtYXggZGVzaXJlZF9jYXBhY2l0eSB0Lmxlbmd0aCkpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgZW5xdWV1ZSB0IGEgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCAoMiAqIHQubGVuZ3RoKTtcbiAgdW5zYWZlX3NldCB0IHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGRlcXVldWVfbm9uZW1wdHkgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBlbHRzID0gdC5lbHRzIGluXG4gIGxldCBmcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBmcm9udCBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgZWx0cyBmcm9udDtcbiAgdC5mcm9udCA8LSBlbHRzX2luZGV4IHQgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIFN0ZGxpYi5RdWV1ZS5FbXB0eSBlbHNlIGRlcXVldWVfbm9uZW1wdHkgdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9ub25lbXB0eSB0KVxubGV0IGRlcXVldWVfYW5kX2lnbm9yZV9leG4gKHR5cGUgZWx0KSAodCA6IGVsdCB0KSA9IGlnbm9yZSAoZGVxdWV1ZV9leG4gdCA6IGVsdClcbmxldCBmcm9udF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIHQuZnJvbnRcbmxldCBsYXN0X25vbmVtcHR5IHQgPSB1bnNhZmVfZ2V0IHQgKHQubGVuZ3RoIC0gMSlcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGZyb250X25vbmVtcHR5IHQpXG5sZXQgcGVla19leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBmcm9udF9ub25lbXB0eSB0XG5sZXQgbGFzdCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChsYXN0X25vbmVtcHR5IHQpXG5sZXQgbGFzdF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBsYXN0X25vbmVtcHR5IHRcblxubGV0IGNsZWFyIHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgdW5zYWZlX3Vuc2V0IHQgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMDtcbiAgICB0LmZyb250IDwtIDApXG47O1xuXG5sZXQgYmxpdF90cmFuc2ZlciB+c3JjIH5kc3QgP2xlbiAoKSA9XG4gIGluY19udW1fbXV0YXRpb25zIHNyYztcbiAgaW5jX251bV9tdXRhdGlvbnMgZHN0O1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBzcmMubGVuZ3RoXG4gICAgfCBTb21lIGxlbiAtPlxuICAgICAgaWYgbGVuIDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiUXVldWUuYmxpdF90cmFuc2ZlcjogbmVnYXRpdmUgbGVuZ3RoXCJcbiAgICAgICAgICAgICBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICAgICAgbWluIGxlbiBzcmMubGVuZ3RoXG4gIGluXG4gIGlmIGxlbiA+IDBcbiAgdGhlbiAoXG4gICAgc2V0X2NhcGFjaXR5IGRzdCAobWF4IChjYXBhY2l0eSBkc3QpIChkc3QubGVuZ3RoICsgbGVuKSk7XG4gICAgbGV0IGRzdF9zdGFydCA9IGRzdC5mcm9udCArIGRzdC5sZW5ndGggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgKCogVGhpcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHNpbXBseSBbZW5xdWV1ZSBkc3QgKGRlcXVldWVfbm9uZW1wdHkgc3JjKV0gKilcbiAgICAgIGxldCBzcmNfaSA9IChzcmMuZnJvbnQgKyBpKSBsYW5kIHNyYy5tYXNrIGluXG4gICAgICBsZXQgZHN0X2kgPSAoZHN0X3N0YXJ0ICsgaSkgbGFuZCBkc3QubWFzayBpblxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZVxuICAgICAgICBkc3QuZWx0c1xuICAgICAgICBkc3RfaVxuICAgICAgICAoT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gc3JjLmVsdHMgc3JjX2kpO1xuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBzcmMuZWx0cyBzcmNfaVxuICAgIGRvbmU7XG4gICAgZHN0Lmxlbmd0aCA8LSBkc3QubGVuZ3RoICsgbGVuO1xuICAgIHNyYy5mcm9udCA8LSAoc3JjLmZyb250ICsgbGVuKSBsYW5kIHNyYy5tYXNrO1xuICAgIHNyYy5sZW5ndGggPC0gc3JjLmxlbmd0aCAtIGxlbilcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgc2V0X2NhcGFjaXR5IHQgKEludC5tYXggKGNhcGFjaXR5IHQpICh0Lmxlbmd0aCArIExpc3QubGVuZ3RoIGwpKTtcbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgICBsZXQgciA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gICAgZG9uZTtcbiAgICAhcilcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgYSAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5cbigqIFtpdGVyXSBpcyBpbXBsZW1lbnRlZCBkaXJlY3RseSBiZWNhdXNlIGltcGxlbWVudGluZyBpdCBpbiB0ZXJtcyBvZiBbZm9sZF0gaXNcbiAgIHNsb3dlci4gKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHJlc3VsdCA6PSB1bnNhZmVfZ2V0IHQgaSA6OiAhcmVzdWx0XG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuXG5cbigqIEZvciBbY29uY2F0X21hcF0sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJdLCB3ZSBkb24ndCBjcmVhdGUgW3RfcmVzdWx0XSB3aXRoIFt0XSdzXG4gICBjYXBhY2l0eSBiZWNhdXNlIHdlIGhhdmUgbm8gaWRlYSBob3cgbWFueSBlbGVtZW50cyBbdF9yZXN1bHRdIHdpbGwgdWx0aW1hdGVseSBob2xkLiAqKVxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXIgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXJpIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6c3JjLmxlbmd0aCAoKSBpblxuICBibGl0X3RvX2FycmF5IH5zcmMgZHN0LmVsdHM7XG4gIGRzdC5sZW5ndGggPC0gc3JjLmxlbmd0aDtcbiAgZHN0XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTooTGlzdC5sZW5ndGggbCkgKCkgaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxuKCogVGhlIHF1ZXVlIFt0XSByZXR1cm5lZCBieSBbY3JlYXRlXSB3aWxsIGhhdmUgW3QubGVuZ3RoID0gMF0sIFt0LmZyb250ID0gMF0sIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBJbnQuY2VpbF9wb3cyIGxlbl0uICBTbywgd2Ugb25seSBoYXZlIHRvIHNldCBbdC5sZW5ndGhdIHRvIFtsZW5dIGFmdGVyXG4gICB0aGUgYmxpdCB0byBtYWludGFpbiBhbGwgdGhlIGludmFyaWFudHM6IFt0Lmxlbmd0aF0gaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgaW4gdGhlIHF1ZXVlLCBbdC5mcm9udF0gaXMgdGhlIGFycmF5IGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gKilcbmxldCBpbml0IGxlbiB+ZiA9XG4gIGlmIGxlbiA8IDBcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJRdWV1ZS5pbml0OiBuZWdhdGl2ZSBsZW5ndGhcIiBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6bGVuICgpIGluXG4gIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgPj0gbGVuKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyBpIChmIGkpXG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIGxlbjtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LnVuc2FmZV9nZXQgYSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCB0Lmxlbmd0aCB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBtYXAgdGEgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHRhLm51bV9tdXRhdGlvbnMgaW5cbiAgbGV0IHRiID0gY3JlYXRlIH5jYXBhY2l0eTp0YS5sZW5ndGggKCkgaW5cbiAgdGIubGVuZ3RoIDwtIHRhLmxlbmd0aDtcbiAgZm9yIGkgPSAwIHRvIHRhLmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgYiA9IGYgKHVuc2FmZV9nZXQgdGEgaSkgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdGEgbnVtX211dGF0aW9ucztcbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHRiLmVsdHMgaSBiXG4gIGRvbmU7XG4gIHRiXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBtYXAgdCB+ZjooZnVuIGEgLT5cbiAgICBsZXQgcmVzdWx0ID0gZiAhaSBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgcmVzdWx0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6MSAoKSBpblxuICBlbnF1ZXVlIHQgeDtcbiAgdFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHRvX2xpc3QgdCB8PiBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2FcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCB8PiBvZl9saXN0XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB8XG5cbiAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBmdW5jdGlvblxuICAgIHwgKF8gOiB0KSAtPiAuXG4gIDs7XG5cbiAgbGV0IGFsbCA9IFtdXG4gIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBcIkJhc2UuTm90aGluZy50XCIgc2V4cFxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG4gIGxldCB0b19zdHJpbmcgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBvZl9zdHJpbmcgKF8gOiBzdHJpbmcpID0gZmFpbHdpdGggXCJCYXNlLk5vdGhpbmcub2Zfc3RyaW5nOiBub3Qgc3VwcG9ydGVkXCJcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTm90aGluZ1wiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkbGliLk5hdGl2ZWludFxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9XG4gICAgKGdsb2JhbGl6ZV9uYXRpdmVpbnQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKG5hdGl2ZWludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9uYXRpdmVpbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gbmF0aXZlaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgbGV0IG9mX3N0cmluZ19vcHQgPSBvZl9zdHJpbmdfb3B0XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX25hdGl2ZWludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJW54XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVueFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bV9iaXRzID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIk5hdGl2ZWludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5OYXRpdmVpbnQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuTmF0aXZlaW50LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gU3RkbGliLk5hdGl2ZWludC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgKHggOiBuYXRpdmVpbnQpID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gU3RkbGliLk5hdGl2ZWludC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLk5hdGl2ZWludC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBTdGRsaWIuTmF0aXZlaW50LnByZWQgeCA9IDBuXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgbmF0aXZlaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgU3RkbGliLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBpZiBTdGRsaWIuTmF0aXZlaW50LmVxdWFsIGkgU3RkbGliLk5hdGl2ZWludC5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChTdGRsaWIuTmF0aXZlaW50LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9uYXRpdmVpbnQgdCA9IHRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50IHQgPSB0XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQubmF0aXZlaW50X3BvcGNvdW50XG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IHRvX2ludDMyX3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtOYXRpdmVpbnRdIGFuZCBbTmF0aXZlaW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuZXh0ZXJuYWwgYnN3YXAgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfbmF0aXZlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1hcF9pbnRmXG5cbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG4gICgqIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIHRlc3RlZCBpbiBbdGVzdF9tYXAubWxdIHRvIG1ha2Ugc3VyZSBvdXIgdXNlIG9mXG4gICAgIFtTdGRsaWIuT2JqLm1hZ2ljXSBpcyBjb3JyZWN0IGFuZCBzYWZlLiAqKVxuICBsZXQgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0ID0gU3RkbGliLk9iai5tYWdpY1xuICBsZXQgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50ID0gU3RkbGliLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuTWVyZ2VfZWxlbWVudFxuXG4gIGxldCBsZWZ0ID0gZnVuY3Rpb25cbiAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gU29tZSBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiBTb21lIHJpZ2h0XG4gIDs7XG5cbiAgbGV0IGxlZnRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgUmlnaHQgXyAtPiBkZWZhdWx0XG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBfIC0+IGRlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gcmlnaHRcbiAgOztcblxuICBsZXQgdmFsdWVzIHQgfmxlZnRfZGVmYXVsdCB+cmlnaHRfZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBsZWZ0IC0+IGxlZnQsIHJpZ2h0X2RlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCAtPiBsZWZ0X2RlZmF1bHQsIHJpZ2h0XG4gICAgfCBgQm90aCAobGVmdCwgcmlnaHQpIC0+IGxlZnQsIHJpZ2h0XG4gIDs7XG5lbmRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuZXhjZXB0aW9uIER1cGxpY2F0ZSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIER1cGxpY2F0ZV0gKGZ1bmN0aW9uXG4gICAgfCBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLkR1cGxpY2F0ZVwiXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbigqIFtXaXRoX2xlbmd0aC50XSBhbGxvd3MgdXMgdG8gc3RvcmUgbGVuZ3RoIGluZm9ybWF0aW9uIG9uIHRoZSBzdGFjayB3aGlsZVxuICAga2VlcGluZyB0aGUgdHJlZSBnbG9iYWwuIFRoaXMgc2F2ZXMgdXAgdG8gTyhsb2cgbikgYmxvY2tzIG9mIGhlYXAgYWxsb2NhdGlvbi4gKilcbm1vZHVsZSBXaXRoX2xlbmd0aCA6IHNpZ1xuICB0eXBlICdhIHQgPSBwcml2YXRlXG4gICAgeyB0cmVlIDogJ2FcbiAgICAgICAgICAgICBbQGdsb2JhbF1cbiAgICA7IGxlbmd0aCA6IGludCBbQGdsb2JhbF1cbiAgICB9XG5cbiAgdmFsIHdpdGhfbGVuZ3RoIDogJ2EgLT4gaW50IC0+ICgnYSB0W0Bsb2NhbF0pXG4gIHZhbCB3aXRoX2xlbmd0aF9nbG9iYWwgOiAnYSAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgZ2xvYmFsaXplIDogKCdhIHRbQGxvY2FsXSkgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0cmVlIDogJ2EgW0BnbG9iYWxdXG4gICAgOyBsZW5ndGggOiBpbnQgW0BnbG9iYWxdXG4gICAgfVxuXG4gIGxldCB3aXRoX2xlbmd0aCB0cmVlIGxlbmd0aCA9ICB7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCB3aXRoX2xlbmd0aF9nbG9iYWwgdHJlZSBsZW5ndGggPSB7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCBnbG9iYWxpemUgKHsgdHJlZTsgbGVuZ3RoIH0gW0Bsb2NhbF0pID0geyB0cmVlOyBsZW5ndGggfVxuZW5kXG5cbm9wZW4gV2l0aF9sZW5ndGhcblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgTGVhZiBvZiAnayAqICd2XG4gICAgfCBOb2RlIG9mICgnaywgJ3YpIHQgKiAnayAqICd2ICogKCdrLCAndikgdCAqIGludFxuXG4gIHR5cGUgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIHRcblxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9rZXkgbG93ZXIgayA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2tleSBrIHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiAoaywgXykgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgfCBOb2RlIChsLCBrLCBfLCByLCBoKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIGspIGNvbXBhcmVfa2V5IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSBrKSB1cHBlciBjb21wYXJlX2tleSByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9rZXkgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9rZXkgdFxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMiAqKVxuICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA9IDAgJiYgaHIgPSAwXG4gICAgdGhlbiBMZWFmICh4LCBkKVxuICAgIGVsc2UgTm9kZSAobCwgeCwgZCwgciwgaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IExlYWYgKGtleSwgZGF0YSlcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5NYXAgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpIDogKF8sIF8pIHQgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgaywgdiA9IGYgaSBpblxuICAgICAgICBMZWFmIChrLCB2KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgRW1wdHksIDIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IsIHZyID0gZiAoaSArIDIpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIExlYWYgKGtyLCB2ciksIDIpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgdiByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDJcbiAgICAgICAgIHx8XG4gICAgICAgICBsZXQgazAsIF8gPSBhcnJheS4oMCkgaW5cbiAgICAgICAgIGxldCBrMSwgXyA9IGFycmF5LigxKSBpblxuICAgICAgICAgY29tcGFyZV9rZXkgazAgazEgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBcbiAgICAgICh3aXRoX2xlbmd0aFxuICAgICAgICAgKG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHQpXG4gICAgICAgICBhcnJheV9sZW5ndGgpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+XG4gICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSlcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oMCkpIChmc3QgYXJyYXkuKDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LihpKSkgKGZzdCBhcnJheS4oaSArIDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpKVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMyAqKVxuICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsIGluXG4gICAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBociArIDIgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsZCwgbHIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKGxydiwgbHJkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBFbXB0eSkgbHJ2IGxyZCAoY3JlYXRlIEVtcHR5IHggZCByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyZCwgbHJyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBobCArIDIgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByZCwgcnIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKHJsdiwgcmxkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBFbXB0eSkgcmx2IHJsZCAoY3JlYXRlIEVtcHR5IHJ2IHJkIHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsZCwgcmxyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKSkpXG4gICAgZWxzZSBjcmVhdGUgbCB4IGQgclxuICA7O1xuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5IH5zZXhwX29mX2tleSA9XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIltNYXAuYWRkX2V4bl0gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuXG4gIG1vZHVsZSBBZGRfb3Jfc2V0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbFxuICAgICAgfCBBZGRfZXhuXG4gICAgICB8IFNldFxuICBlbmRcblxuICBsZXQgcmVjIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgICAgIH5rZXk6eFxuICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICAgICB+KGFkZF9vcl9zZXQgOiBBZGRfb3Jfc2V0LnQpXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoeCwgZGF0YSkpIChsZW5ndGggKyAxKSlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+ICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZSlcbiAgICAgICAgfCBBZGRfZXhuIC0+ICAocmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5KVxuICAgICAgICB8IFNldCAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmICh4LCBkYXRhKSkgbGVuZ3RoKSlcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCAoTm9kZSAoTGVhZiAoeCwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKSkgKGxlbmd0aCArIDEpKVxuICAgICAgZWxzZSAgKHdpdGhfbGVuZ3RoIChOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoeCwgZGF0YSksIDIpKSAobGVuZ3RoICsgMSkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGUpXG4gICAgICAgIHwgQWRkX2V4biAtPiAgKHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleSlcbiAgICAgICAgfCBTZXQgLT4gICh3aXRoX2xlbmd0aCAoTm9kZSAobCwgeCwgZGF0YSwgciwgaCkpIGxlbmd0aCkpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIGwgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgciB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFtzZXQnXSBmb3IgdGhlIGNhc2Ugd2hlbiBba2V5XSBpcyBsZXNzIHRoYW4gYWxsIHRoZSBleGlzdGluZyBrZXlzICopXG4gIGxldCByZWMgc2V0X21pbiBrZXkgZGF0YSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgKGtleSwgZGF0YSlcbiAgICB8IExlYWYgKHYsIGQpIC0+IE5vZGUgKExlYWYgKGtleSwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBsID0gc2V0X21pbiBrZXkgZGF0YSBsIGluXG4gICAgICBiYWwgbCB2IGQgclxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFtzZXQnXSBmb3IgdGhlIGNhc2Ugd2hlbiBba2V5XSBpcyBncmVhdGVyIHRoYW4gYWxsIHRoZVxuICAgICBleGlzdGluZyBrZXlzICAqKVxuICBsZXQgcmVjIHNldF9tYXggdCBrZXkgZGF0YSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrZXksIGRhdGEpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoa2V5LCBkYXRhKSwgMilcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgciA9IHNldF9tYXggciBrZXkgZGF0YSBpblxuICAgICAgYmFsIGwgdiBkIHJcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgIH5hZGRfb3Jfc2V0OkFkZF9leG4pXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICB+YWRkX29yX3NldDpBZGRfZXhuX2ludGVybmFsKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXk6KGZ1biBfIC0+IExpc3QgW10pXG4gICAgICAgICB+YWRkX29yX3NldDpTZXQpXG4gIDs7XG5cbiAgbGV0IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXkgPSAoc2V0IHQgfmxlbmd0aDowIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KS50cmVlXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPVxuICAgICAgICB7IGxlZnRfc3VidHJlZSA6ICgnaywgJ3YpIHRcbiAgICAgICAgOyBrZXkgOiAna1xuICAgICAgICA7IGRhdGEgOiAndlxuICAgICAgICB9XG5cbiAgICAgIGxldCBzaW5nbGV0b25fdG9fdHJlZV9leG4gPSBmdW5jdGlvblxuICAgICAgICB8IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9IC0+IHNpbmdsZXRvbiBrZXkgZGF0YVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNYXAuc2luZ2xldG9uX3RvX3RyZWVfZXhuOiBub3QgYSBzaW5nbGV0b25cIlxuICAgICAgOztcblxuICAgICAgbGV0IHNpbmdsZXRvbiB+a2V5IH5kYXRhID0geyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH1cblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGNvbGxhcHNlIGwgciA9IGNyZWF0ZSBsLmxlZnRfc3VidHJlZSBsLmtleSBsLmRhdGEgclxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIubGVmdF9zdWJ0cmVlKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGpvaW4gbCByID0geyByIHdpdGggbGVmdF9zdWJ0cmVlID0gY29sbGFwc2UgbCByLmxlZnRfc3VidHJlZSB9XG4gICAgICBsZXQgbWF4X2tleSB0ID0gdC5rZXlcbiAgICBlbmRcblxuICAgICgqKiBCdWlsZCB0cmVlcyBmcm9tIHNpbmdsZXRvbnMgaW4gYSBiYWxhbmNlZCB3YXkgYnkgdXNpbmcgc2tldyBiaW5hcnkgZW5jb2RpbmcuXG4gICAgICAgIEVhY2ggbGV2ZWwgY29udGFpbnMgdHJlZXMgb2YgdGhlIHNhbWUgaGVpZ2h0LCBjb25zZWN1dGl2ZSBsZXZlbHMgaGF2ZSBjb25zZWN1dGl2ZVxuICAgICAgICBoZWlnaHRzLiBUaGVyZSBhcmUgbm8gZ2Fwcy4gVGhlIGZpcnN0IGxldmVsIGFyZSBzaW5nbGUga2V5cy5cbiAgICAqKVxuICAgIHR5cGUgKCdrLCAndikgdCA9XG4gICAgICB8IFplcm8gb2YgdW5pdFxuICAgICAgKCogW3VuaXRdIHRvIG1ha2UgcGF0dGVybiBtYXRjaGluZyBmYXN0ZXIgKilcbiAgICAgIHwgT25lIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG4gICAgICB8IFR3byBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudCAqICgnaywgJ3YpIEZyYWdtZW50LnRcblxuICAgIGxldCBlbXB0eSA9IFplcm8gKClcblxuICAgIGxldCBhZGRfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCB4ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiBPbmUgKHQsIHgpXG4gICAgICAgIHwgT25lICh0LCB5KSAtPiBUd28gKHQsIHksIHgpXG4gICAgICAgIHwgVHdvICh0LCB6LCB5KSAtPiBPbmUgKGdvIHQgKEZyYWdtZW50LmpvaW4geiB5KSwgeClcbiAgICAgIGluXG4gICAgICBmdW4gdCB+a2V5IH5kYXRhIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbiB+a2V5IH5kYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZV91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IHJcbiAgICAgICAgfCBPbmUgKHQsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIGwgcilcbiAgICAgICAgfCBUd28gKHQsIGxsLCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSAoRnJhZ21lbnQuam9pbiBsbCBsKSByKVxuICAgICAgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gRW1wdHlcbiAgICAgIHwgT25lICh0LCByKSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICAgIHwgVHdvICh0LCBsLCByKSAtPiBnbyAoT25lICh0LCBsKSkgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gTm9uZVxuICAgICAgfCBPbmUgKF8sIHIpIHwgVHdvIChfLCBfLCByKSAtPiBTb21lIChGcmFnbWVudC5tYXhfa2V5IHIpXG4gICAgOztcbiAgZW5kXG5cblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGxldCB7IHRyZWUgPSBidWlsZGVyOyBsZW5ndGggfSA9XG4gICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICBzZXFcbiAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIEJ1aWxkX2luY3JlYXNpbmcuZW1wdHkgMClcbiAgICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IGJ1aWxkZXI7IGxlbmd0aCB9IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBCdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgYnVpbGRlciB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJlX2tleSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICAgICAgICByZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX2luY3JlYXNpbmdfc2VxdWVuY2U6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbFxuICAgICAgICAgICAgICAgIChCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgYnVpbGRlciB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgIChsZW5ndGggKyAxKSlcbiAgICAgIGluXG4gICAgICBPayAod2l0aF9sZW5ndGhfZ2xvYmFsIChCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIGJ1aWxkZXIpIGxlbmd0aCkpXG4gIDs7XG5cbiAgKCogTGlrZSBbYmFsXSBidXQgYWxsb3dzIGFueSBkaWZmZXJlbmNlIGluIGhlaWdodCBiZXR3ZWVuIFtsXSBhbmQgW3JdLlxuXG4gICAgIE8ofGhlaWdodCBsIC0gaGVpZ2h0IHJ8KSAqKVxuICBsZXQgcmVjIGpvaW4gbCBrIGQgciA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBzZXRfbWluIGsgZCByXG4gICAgfCBfLCBFbXB0eSAtPiBzZXRfbWF4IGwgayBkXG4gICAgfCBMZWFmIChsaywgbGQpLCBfIC0+IHNldF9taW4gbGsgbGQgKHNldF9taW4gayBkIHIpXG4gICAgfCBfLCBMZWFmIChyaywgcmQpIC0+IHNldF9tYXggKHNldF9tYXggbCBrIGQpIHJrIHJkXG4gICAgfCBOb2RlIChsbCwgbGssIGxkLCBsciwgbGgpLCBOb2RlIChybCwgcmssIHJkLCByciwgcmgpIC0+XG4gICAgICAoKiBbYmFsXSByZXF1aXJlcyBoZWlnaHQgZGlmZmVyZW5jZSA8PSAzLiAqKVxuICAgICAgaWYgbGggPiByaCArIDNcbiAgICAgICgqIFtoZWlnaHQgbHIgPj0gaGVpZ2h0IHJdLFxuICAgICAgICAgdGhlcmVmb3JlIFtoZWlnaHQgKGpvaW4gbHIgayBkIHIgLi4uKV0gaXMgW2hlaWdodCBybCArIDFdIG9yIFtoZWlnaHQgcmxdXG4gICAgICAgICB0aGVyZWZvcmUgdGhlIGhlaWdodCBkaWZmZXJlbmNlIHdpdGggW2xsXSB3aWxsIGJlIDw9IDMgKilcbiAgICAgIHRoZW4gYmFsIGxsIGxrIGxkIChqb2luIGxyIGsgZCByKVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgM1xuICAgICAgdGhlbiBiYWwgKGpvaW4gbCBrIGQgcmwpIHJrIHJkIHJyXG4gICAgICBlbHNlIGJhbCBsIGsgZCByXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmVdIHJlYyBzcGxpdF9nZW4gdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBFbXB0eSwgU29tZSAoaywgZCksIEVtcHR5XG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gRW1wdHksIE5vbmUsIHRcbiAgICAgIGVsc2UgdCwgTm9uZSwgRW1wdHlcbiAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBsLCBTb21lIChrLCBkKSwgclxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBtYXliZSwgbHIgPSBzcGxpdF9nZW4gbCB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBsbCwgbWF5YmUsIGpvaW4gbHIgayBkIHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJsLCBtYXliZSwgcnIgPSBzcGxpdF9nZW4gciB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBqb2luIGwgayBkIHJsLCBtYXliZSwgcnIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgPSBzcGxpdF9nZW4gdCB4IH5jb21wYXJlX2tleTooZnVuIHkgLT4gY29tcGFyZV9rZXkgeCB5KVxuXG4gICgqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVhbGx5IHJlaW5zZXJ0IFt4XSwgYnV0IGp1c3QgYXJyYW5nZXMgc28gdGhhdCBbc3BsaXRdXG4gICAgIHByb2R1Y2VzIHRoZSBlcXVpdmFsZW50IHRyZWUgaW4gdGhlIGZpcnN0IHBsYWNlLiAqKVxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8geCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsZWZ0LCBib3VuZGFyeV9vcHQsIHJpZ2h0ID1cbiAgICAgIHNwbGl0X2dlblxuICAgICAgICB0XG4gICAgICAgIHhcbiAgICAgICAgfmNvbXBhcmVfa2V5OlxuICAgICAgICAgIChtYXRjaCBpbnRvIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCAtPlxuICAgICAgICAgICAgIGZ1biB5IC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgeCB5IHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gMVxuICAgICAgICAgICAgICAgIHwgcmVzIC0+IHJlcylcbiAgICAgICAgICAgfCBgUmlnaHQgLT5cbiAgICAgICAgICAgICBmdW4geSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IHggeSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IC0xXG4gICAgICAgICAgICAgICAgfCByZXMgLT4gcmVzKSlcbiAgICBpblxuICAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgYm91bmRhcnlfb3B0KTtcbiAgICBsZWZ0LCByaWdodFxuICA7O1xuXG4gIGxldCBzcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH4obG93ZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+KHVwcGVyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgPVxuICAgIGlmIE1heWJlX2JvdW5kLmJvdW5kc19jcm9zc2VkXG4gICAgICAgICB+Y29tcGFyZTpjb21wYXJlX2tleVxuICAgICAgICAgfmxvd2VyOmxvd2VyX2JvdW5kXG4gICAgICAgICB+dXBwZXI6dXBwZXJfYm91bmRcbiAgICB0aGVuIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZWZ0LCBtaWRfYW5kX3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggbG93ZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBlbXB0eSwgdFxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGV0IG1pZCwgcmlnaHQgPVxuICAgICAgICBtYXRjaCB1cHBlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IG1pZF9hbmRfcmlnaHQsIGVtcHR5XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+XG4gICAgICAgICAgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxlZnQsIG1pZCwgcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIFNvbWUgZCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGQgZWxzZSBmaW5kIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZGF0YSA9IGRhdGEgOjogT3B0aW9uLnZhbHVlIChmaW5kIHQga2V5IH5jb21wYXJlX2tleSkgfmRlZmF1bHQ6W10gaW5cbiAgICAgKHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggZmluZCB0IHggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gW11cbiAgICB8IFNvbWUgbCAtPiBsXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgaWZfbm90X2ZvdW5kIGtleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgcmFpc2UgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIk1hcC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHNleHBfb2Zfa2V5IGtleSBdKSlcbiAgICBpblxuICAgIGxldCByZWMgZmluZF9leG4gdCB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gZCBlbHNlIGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIGQgZWxzZSBmaW5kX2V4biAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgeCB+Y29tcGFyZV9rZXkgPSBPcHRpb24uaXNfc29tZSAoZmluZCB0IHggfmNvbXBhcmVfa2V5KVxuXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoRW1wdHksIGssIGQsIF8sIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIGssIGQsIEVtcHR5LCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgXywgXywgciwgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIF8sIHIsIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHgsIGQsIHIsIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgeCBkIHJcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbWF4X2VsdCBsb3dlcl9wYXJ0LCBtaW5fZWx0IHVwcGVyX3BhcnQgd2l0aFxuICAgIHwgTm9uZSwgXyAtPiBgT2sgdXBwZXJfcGFydFxuICAgIHwgXywgTm9uZSAtPiBgT2sgbG93ZXJfcGFydFxuICAgIHwgU29tZSAobWF4X2xvd2VyLCBfKSwgU29tZSAobWluX3VwcGVyLCB2KSB3aGVuIGNvbXBhcmVfa2V5IG1heF9sb3dlciBtaW5fdXBwZXIgPCAwIC0+XG4gICAgICBsZXQgdXBwZXJfcGFydF93aXRob3V0X21pbiA9IHJlbW92ZV9taW5fZWx0IHVwcGVyX3BhcnQgaW5cbiAgICAgIGBPayAoam9pbiBsb3dlcl9wYXJ0IG1pbl91cHBlciB2IHVwcGVyX3BhcnRfd2l0aG91dF9taW4pXG4gICAgfCBfIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlID1cbiAgICAoKiBUaGlzIGFzc3VtZXMgdGhhdCBtaW4gPD0gbWF4LCB3aGljaCBpcyBjaGVja2VkIGJ5IHRoZSBvdXRlciBmdW5jdGlvbi4gKilcbiAgICBsZXQgcmVjIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW5pdFxuICAgICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIG1pbiA8IDAgfHwgY29tcGFyZV9rZXkgayBtYXggPiAwXG4gICAgICAgIHRoZW4gKCogayA8IG1pbiB8fCBrID4gbWF4ICopXG4gICAgICAgICAgaW5pdFxuICAgICAgICBlbHNlIGYgfmtleTprIH5kYXRhOmQgaW5pdFxuICAgICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgY19taW4gPSBjb21wYXJlX2tleSBrIG1pbiBpblxuICAgICAgICBpZiBjX21pbiA8IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPCBtaW4sIHRoZW4gdGhpcyBub2RlIGFuZCBpdHMgbGVmdCBicmFuY2ggYXJlIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgaWYgY19taW4gPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrID0gbWluLCB0aGVuIHRoaXMgbm9kZSdzIGxlZnQgYnJhbmNoIGlzIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQ6KGYgfmtleTprIH5kYXRhOmQgaW5pdCkgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGsgPiBtaW4gKilcbiAgICAgICAgICBsZXQgeiA9IGdvIGwgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGxldCBjX21heCA9IGNvbXBhcmVfa2V5IGsgbWF4IGluXG4gICAgICAgICAgKCogaWYgayA+IG1heCwgd2UncmUgZG9uZSAqKVxuICAgICAgICAgIGlmIGNfbWF4ID4gMFxuICAgICAgICAgIHRoZW4gelxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHogPSBmIH5rZXk6ayB+ZGF0YTpkIHogaW5cbiAgICAgICAgICAgICgqIGlmIGsgPSBtYXgsIHRoZW4gd2UgZm9sZCBpbiB0aGlzIG9uZSBsYXN0IHZhbHVlIGFuZCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgICBpZiBjX21heCA9IDAgdGhlbiB6IGVsc2UgZ28gciB+bWluIH5tYXggfmluaXQ6eiB+ZiB+Y29tcGFyZV9rZXkpKVxuICAgIGluXG4gICAgZnVuIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgY29tcGFyZV9rZXkgbWluIG1heCA8PSAwIHRoZW4gZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGVsc2UgaW5pdFxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXkgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgICAgIHRcbiAgICAgICAgIH5taW5cbiAgICAgICAgIH5tYXhcbiAgICAgICAgIH5pbml0OltdXG4gICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgbCAtPiAoa2V5LCBkYXRhKSA6OiBsKVxuICAgICAgICAgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbnM6XG4gICAgIC0gYWxsIGVsZW1lbnRzIGluIHQxIGFyZSBsZXNzIHRoYW4gZWxlbWVudHMgaW4gdDJcbiAgICAgLSB8aGVpZ2h0KHQxKSAtIGhlaWdodCh0Mil8IDw9IDIgKilcbiAgbGV0IGNvbmNhdF91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBzaW1pbGFyIHRvIFtjb25jYXRfdW5jaGVja2VkXSwgYW5kIGJhbGFuY2VzIHRyZWVzIG9mIGFyYml0cmFyeSBoZWlnaHQgZGlmZmVyZW5jZXMgKilcbiAgbGV0IGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFJlbW92ZV9ub19vcFxuXG4gIGxldCByZW1vdmUgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wKVxuICAgICAgfCBMZWFmICh2LCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSB4IHYgPSAwXG4gICAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCBFbXB0eSAobGVuZ3RoIC0gMSkpXG4gICAgICAgIGVsc2UgIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuICAod2l0aF9sZW5ndGggKGNvbmNhdF91bmNoZWNrZWQgbCByKSAobGVuZ3RoIC0gMSkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gcmVtb3ZlX2xvb3AgbCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHJlbW92ZV9sb29wIHIgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgdHJ5ICAocmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5KSB3aXRoXG4gICAgfCBSZW1vdmVfbm9fb3AgLT4gICh3aXRoX2xlbmd0aCB0IGxlbmd0aClcbiAgOztcblxuICAoKiBVc2UgZXhjZXB0aW9uIHRvIGF2b2lkIHRyZWUtcmVidWlsZCBpbiBuby1vcCBjYXNlICopXG4gIGV4Y2VwdGlvbiBDaGFuZ2Vfbm9fb3BcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIGNoYW5nZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICgqIGVxdWl2YWxlbnQgdG8gcmV0dXJuaW5nOiBFbXB0eSAqKVxuICAgICAgICAgICAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBDaGFuZ2Vfbm9fb3ApXG4gICAgICAgICB8IFNvbWUgZGF0YSAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmIChrZXksIGRhdGEpKSAobGVuZ3RoICsgMSkpKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAgKHdpdGhfbGVuZ3RoIEVtcHR5IChsZW5ndGggLSAxKSlcbiAgICAgICAgICB8IFNvbWUgZCcgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAodiwgZCcpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIEVtcHR5KSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBFbXB0eSB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gICh3aXRoX2xlbmd0aCAoY29uY2F0X3VuY2hlY2tlZCBsIHIpIChsZW5ndGggLSAxKSlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiAgKHdpdGhfbGVuZ3RoIChOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgdHJ5ICAoY2hhbmdlX2NvcmUgdCBrZXkgZikgd2l0aFxuICAgIHwgQ2hhbmdlX25vX29wIC0+ICAod2l0aF9sZW5ndGggdCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyB1cGRhdGVfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGYgTm9uZSBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChMZWFmIChrZXksIGRhdGEpKSAobGVuZ3RoICsgMSkpXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGQnID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKExlYWYgKHYsIGQnKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCBFbXB0eSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgRW1wdHkgdiBkIHIpIGxlbmd0aCkpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRhdGEgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgICAodXBkYXRlX2NvcmUgdCBrZXkgZilcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBcbiAgICAgIChjaGFuZ2UgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgfCBTb21lIChbXSB8IFsgXyBdKSAtPiBOb25lXG4gICAgICAgICB8IFNvbWUgKF8gOjogKF8gOjogXyBhcyBub25fZW1wdHlfdGFpbCkpIC0+IFNvbWUgbm9uX2VtcHR5X3RhaWwpKVxuICA7O1xuXG4gIGxldCByZWMgaXRlcl9rZXlzIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIF8pIC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgXywgciwgXykgLT5cbiAgICAgIGl0ZXJfa2V5cyB+ZiBsO1xuICAgICAgZiB2O1xuICAgICAgaXRlcl9rZXlzIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAoXywgZCkgLT4gZiBkXG4gICAgfCBOb2RlIChsLCBfLCBkLCByLCBfKSAtPlxuICAgICAgaXRlciB+ZiBsO1xuICAgICAgZiBkO1xuICAgICAgaXRlciB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgaXRlcmkgfmYgbDtcbiAgICAgIGYgfmtleTp2IH5kYXRhOmQ7XG4gICAgICBpdGVyaSB+ZiByXG4gIDs7XG5cbiAgbGV0IGl0ZXJpX3VudGlsID1cbiAgICBsZXQgcmVjIGl0ZXJpX3VudGlsX2xvb3AgdCB+ZiA6IENvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggaXRlcmlfdW50aWxfbG9vcCB+ZiBsIHdpdGhcbiAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICB8IENvbnRpbnVlIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICAgICB8IENvbnRpbnVlIC0+IGl0ZXJpX3VudGlsX2xvb3AgfmYgcikpXG4gICAgaW5cbiAgICBmdW4gdCB+ZiAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLm9mX2NvbnRpbnVlX29yX3N0b3AgKGl0ZXJpX3VudGlsX2xvb3AgdCB+ZilcbiAgOztcblxuICBsZXQgcmVjIG1hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIGQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgbGV0IHInID0gbWFwIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgfmtleTp2IH5kYXRhOmQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwaSB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBtYXBpIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkIHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2xvb3AgdCB+YWNjIH5mIDogKF8sIF8pIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY1xuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9sb29wIGwgfmFjYyB+ZiB3aXRoXG4gICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgYWNjIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBmb2xkX3VudGlsX2xvb3AgciB+YWNjIH5mKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfbG9vcCB0IH5hY2M6aW5pdCB+ZiB3aXRoXG4gICAgfCBDb250aW51ZSBhY2MgLT4gZmluaXNoIGFjYyBbQG5vbnRhaWxdXG4gICAgfCBTdG9wIHN0b3AgLT4gc3RvcFxuICA7O1xuXG4gIGxldCByZWMgZm9sZF9yaWdodCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaWx0ZXJfbWFwaSB0IH5mIH5sZW4gPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgfCBTb21lIG5ld19kYXRhIC0+IExlYWYgKHYsIG5ld19kYXRhKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICBFbXB0eSlcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwaSBsIH5mIH5sZW4gaW5cbiAgICAgIGxldCBuZXdfZGF0YSA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IGZpbHRlcl9tYXBpIHIgfmYgfmxlbiBpblxuICAgICAgKG1hdGNoIG5ld19kYXRhIHdpdGhcbiAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT4gam9pbiBsJyB2IG5ld19kYXRhIHInXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgIGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaWx0ZXJpIHQgfmYgfmxlbiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICB8IHRydWUgLT4gdFxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgRW1wdHkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGwnID0gZmlsdGVyaSBsIH5mIH5sZW4gaW5cbiAgICAgIGxldCBrZWVwX2RhdGEgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBmaWx0ZXJpIHIgfmYgfmxlbiBpblxuICAgICAgaWYgcGh5c19lcXVhbCBsIGwnICYmIGtlZXBfZGF0YSAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgIHRoZW4gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGtlZXBfZGF0YSB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPiBqb2luIGwnIHYgZCByJ1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICAgY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgOztcblxuICBsZXQgZmlsdGVyIHQgfmYgfmxlbiA9IGZpbHRlcmkgdCB+bGVuIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiB+bGVuID0gZmlsdGVyaSB0IH5sZW4gfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiB+bGVuID0gZmlsdGVyX21hcGkgdCB+bGVuIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgICBsZXQgdDEsIHQyID1cbiAgICAgIGZvbGRcbiAgICAgICAgdFxuICAgICAgICB+aW5pdDooQnVpbGRfaW5jcmVhc2luZy5lbXB0eSwgQnVpbGRfaW5jcmVhc2luZy5lbXB0eSlcbiAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICh0MSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHggLT4gQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQxIH5rZXkgfmRhdGE6eCwgdDJcbiAgICAgICAgICB8IFNlY29uZCB5IC0+IHQxLCBCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdDIgfmtleSB+ZGF0YTp5KVxuICAgIGluXG4gICAgQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0MSwgQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0MlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICAgIGxldCByZWMgbG9vcCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgICAgfCB0cnVlIC0+IHQsIEVtcHR5XG4gICAgICAgICB8IGZhbHNlIC0+IEVtcHR5LCB0KVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgbCd0LCBsJ2YgPSBsb29wIGwgfmYgaW5cbiAgICAgICAgbGV0IGtlZXBfZGF0YV90ID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgICBsZXQgcid0LCByJ2YgPSBsb29wIHIgfmYgaW5cbiAgICAgICAgbGV0IG1rIGwnIGtlZXBfZGF0YSByJyA9XG4gICAgICAgICAgaWYgcGh5c19lcXVhbCBsIGwnICYmIGtlZXBfZGF0YSAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGtlZXBfZGF0YSB3aXRoXG4gICAgICAgICAgICB8IHRydWUgLT4gam9pbiBsJyB2IGQgcidcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgICAgICAgaW5cbiAgICAgICAgbWsgbCd0IGtlZXBfZGF0YV90IHIndCwgbWsgbCdmIChub3Qga2VlcF9kYXRhX3QpIHInZlxuICAgIGluXG4gICAgbG9vcCB0IH5mXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnaywgJ3YsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnayAqICd2ICogKCdrLCAndikgdHJlZSAqICgnaywgJ3YsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyB0IChlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCB0IChlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl90cmVlIHRyZWUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9IGNvbnMgdHJlZSBFbmRcbiAgICBsZXQgb2ZfdHJlZV9yaWdodCB0cmVlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHRyZWUgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgXywgciwgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RlcF9kZWVwZXJfZXhuIHRyZWUgZSA9XG4gICAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IEVtcHR5LCBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbCwgTW9yZSAodiwgZCwgciwgZSlcbiAgICA7O1xuXG4gICAgKCogW2Ryb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyXSBkcm9wcyB0aGUgbGFyZ2VzdCBwaHlzaWNhbGx5LWVxdWFsXG4gICAgICAgcHJlZml4IG9mIHRyZWUxIGFuZCB0cmVlMiB0aGF0IHRoZXkgc2hhcmUsIGFuZCB0aGVuIHByZXBlbmRzIHRoZSByZW1haW5pbmcgZGF0YVxuICAgICAgIGludG8gYWNjMSBhbmQgYWNjMiwgcmVzcGVjdGl2ZWx5LlxuICAgICAgIFRoaXMgY2FuIGJlIGFzeW1wdG90aWNhbGx5IGZhc3RlciB0aGFuIFtjb25zXSBldmVuIGlmIGl0IHNraXBzIGEgc21hbGwgcHJvcG9ydGlvblxuICAgICAgIG9mIHRoZSB0cmVlIGJlY2F1c2UgW2NvbnNdIGlzIGFsd2F5cyBPKGxvZyhuKSkgaW4gdGhlIHNpemUgb2YgdGhlIHRyZWUsIHdoaWxlXG4gICAgICAgdGhpcyBmdW5jdGlvbiBpcyBPKGxvZyhuL20pKSB3aGVyZSBbbV0gaXMgdGhlIHNpemUgb2YgdGhlIHBhcnQgb2YgdGhlIHRyZWUgdGhhdFxuICAgICAgIGlzIHNraXBwZWQuICopXG4gICAgbGV0IHJlYyBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICB0aGVuIGFjYzEsIGFjYzJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaDIgPSBoZWlnaHQgdHJlZTIgaW5cbiAgICAgICAgbGV0IGgxID0gaGVpZ2h0IHRyZWUxIGluXG4gICAgICAgIGlmIGgyID0gaDFcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHRyZWUxLCBhY2MxID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUxIGFjYzEgaW5cbiAgICAgICAgICBsZXQgdHJlZTIsIGFjYzIgPSBzdGVwX2RlZXBlcl9leG4gdHJlZTIgYWNjMiBpblxuICAgICAgICAgIGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyKVxuICAgICAgICBlbHNlIGlmIGgyID4gaDFcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHRyZWUyLCBhY2MyID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUyIGFjYzIgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHRyZWUxLCBhY2MxID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUxIGFjYzEgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMikpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2RhdGEgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGUxLCBlMiA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggcjEgZTEgcjIgZTIgaW5cbiAgICAgICAgICAgICAgbG9vcCBlMSBlMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgZGF0YV9lcXVhbCB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IHRydWVcbiAgICAgICAgfCBFbmQsIF8gfCBfLCBFbmQgLT4gZmFsc2VcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGNvbXBhcmVfa2V5IHYxIHYyID0gMFxuICAgICAgICAgICYmIGRhdGFfZXF1YWwgZDEgZDJcbiAgICAgICAgICAmJlxuICAgICAgICAgIGxldCBlMSwgZTIgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHIxIGUxIHIyIGUyIGluXG4gICAgICAgICAgbG9vcCBlMSBlMlxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmb2xkIH5pbml0IH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+IGluaXRcbiAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBsZXQgbmV4dCA9IGYgfmtleSB+ZGF0YSBpbml0IGluXG4gICAgICAgIGZvbGQgKGNvbnMgdHJlZSBlbnVtKSB+aW5pdDpuZXh0IH5mXG4gICAgOztcblxuICAgIGxldCBmb2xkMiBjb21wYXJlX2tleSB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgY3VyciA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gY3VyclxuICAgICAgICB8IEVuZCwgXyAtPlxuICAgICAgICAgIGZvbGQgdDIgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYFJpZ2h0IGRhdGEpIGFjYykgW0Bub250YWlsXG4gICAgICAgICAgXVxuICAgICAgICB8IF8sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgdDEgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYExlZnQgZGF0YSkgYWNjKSBbQG5vbnRhaWxcbiAgICAgICAgICBdXG4gICAgICAgIHwgTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpLCBNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBCb3RoICh2MSwgdjIpKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBMZWZ0IHYxKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MiBuZXh0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azIgfmRhdGE6KGBSaWdodCB2MikgY3VyciBpblxuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyIGluaXQgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsID1cbiAgICAgIGxldCBzdGVwIHN0YXRlID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGtleSwgYFJpZ2h0IGRhdGE7IHN0YXRlID0gRW5kLCBjb25zIHRyZWUgZW51bSB9XG4gICAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSwgRW5kIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0ga2V5LCBgTGVmdCBkYXRhOyBzdGF0ZSA9IGNvbnMgdHJlZSBlbnVtLCBFbmQgfVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBlbnVtMSB0cmVlMiBlbnVtMiBpblxuICAgICAgICAgICAgaWYgZGF0YV9lcXVhbCB2MSB2MlxuICAgICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLlNraXAgeyBzdGF0ZSA9IG5leHRfc3RhdGUgfVxuICAgICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMSwgYFVuZXF1YWwgKHYxLCB2Mik7IHN0YXRlID0gbmV4dF9zdGF0ZSB9KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazEsIGBMZWZ0IHYxOyBzdGF0ZSA9IGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0IH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMiwgYFJpZ2h0IHYyOyBzdGF0ZSA9IGxlZnQsIGNvbnMgdHJlZTIgZW51bTIgfVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0Oihkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQpIH5mOnN0ZXBcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgYWNjID1cbiAgICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgICB8IEVuZCwgZW51bSAtPlxuICAgICAgICAgIGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgZW51bSwgRW5kIC0+XG4gICAgICAgICAgZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaWYgZGF0YV9lcXVhbCB2MSB2MiB0aGVuIGFjYyBlbHNlIGYgYWNjIChrMSwgYFVuZXF1YWwgKHYxLCB2MikpIGluXG4gICAgICAgICAgICBsZXQgZW51bTEsIGVudW0yID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBlbnVtMSB0cmVlMiBlbnVtMiBpblxuICAgICAgICAgICAgbG9vcCBlbnVtMSBlbnVtMiBhY2MpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsxIHYxIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSByaWdodCBhY2MpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrMiB2MiBpblxuICAgICAgICAgICAgbG9vcCBsZWZ0IChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IGxlZnQsIHJpZ2h0ID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgICBsb29wIGxlZnQgcmlnaHQgaW5pdCBbQG5vbnRhaWxdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gaywgdjsgc3RhdGUgPSBFbnVtLmNvbnMgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWUgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrLCB2OyBzdGF0ZSA9IEVudW0uY29uc19yaWdodCB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZV9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZ19rZXkpXG4gICAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2tleSBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPiBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19sZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBsZXQgZTEsIGUyID0gRW51bS5kcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQgaW5cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIGUxIGUyXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgbGV0IGUxLCBlMiA9IEVudW0uZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgRW51bS5lcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgZTEgZTJcbiAgOztcblxuICBsZXQgaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyXG4gICAgICBjb21wYXJlX2tleVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MSlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDIpXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICgpIC0+IGYgfmtleSB+ZGF0YSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDIgY29tcGFyZV9rZXkgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MikgfmYgfmluaXRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAoKiBbRW51bS5mb2xkX2RpZmZzXSBpcyBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYnV0IGlzIGNvbnNpZGVyYWJseVxuICAgICAgIHNsb3dlciwgYXMgd2UgaGF2ZSB0byBhbGxvY2F0ZSBxdWl0ZSBhIGxvdCBvZiBzdGF0ZSB0byB0cmFjayBlbnVtZXJhdGlvbiBvZiBhIHRyZWUuXG4gICAgICAgQXZvaWQgaWYgd2UgY2FuLlxuICAgICopXG4gICAgbGV0IHNsb3cgeCB5IH5pbml0ID0gRW51bS5mb2xkX3N5bW1ldHJpY19kaWZmIHggeSB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmYgfmluaXQgaW5cbiAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgbGV0IGRlbHRhIGFjYyBrIHYgdicgPSBpZiBkYXRhX2VxdWFsIHYgdicgdGhlbiBhY2MgZWxzZSBmIGFjYyAoaywgYFVuZXF1YWwgKHYsIHYnKSkgaW5cbiAgICAoKiBJZiB0d28gdHJlZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXQgdGhlIHJvb3QgKGFuZCB0aGUgc2FtZSBrZXksIGlmIHRoZXkncmVcbiAgICAgICBbTm9kZV1zKSB3ZSBjYW4gdHJpdmlhbGx5IGRpZmYgZWFjaCBzdWJwYXJ0IGluIG9idmlvdXMgd2F5cy4gKilcbiAgICBsZXQgcmVjIGxvb3AgdCB0JyBhY2MgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0IHQnXG4gICAgICB0aGVuIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQsIHQnIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgbmV3X3ZhbHMgLT5cbiAgICAgICAgICBmb2xkIG5ld192YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBvbGRfdmFscywgRW1wdHkgLT5cbiAgICAgICAgICBmb2xkIG9sZF92YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBMZWFmIChrLCB2KSwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSBrIGsnIHdpdGhcbiAgICAgICAgICAgfCB4IHdoZW4geCA9IDAgLT4gZGVsdGEgYWNjIGsgdiB2J1xuICAgICAgICAgICB8IHggd2hlbiB4IDwgMCAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsgdiBpblxuICAgICAgICAgICAgIGFkZCBhY2MgaycgdidcbiAgICAgICAgICAgfCBfICgqIHdoZW4geCA+IDAgKikgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrJyB2JyBpblxuICAgICAgICAgICAgIHJlbW92ZSBhY2MgayB2KVxuICAgICAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pLCBOb2RlIChsJywgaycsIHYnLCByJywgXykgd2hlbiBjb21wYXJlX2tleSBrIGsnID0gMCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBsb29wIGwgbCcgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IGRlbHRhIGFjYyBrIHYgdicgaW5cbiAgICAgICAgICBsb29wIHIgcicgYWNjXG4gICAgICAgICgqIE91ciByb290cyBhcmVuJ3QgdGhlIHNhbWUga2V5LiBGYWxsYmFjayB0byB0aGUgc2xvdyBtb2RlLiBUcmVlcyB3aXRoIHNtYWxsXG4gICAgICAgICAgIGRpZmZzIHdpbGwgb25seSBkbyB0aGlzIG9uIHZlcnkgc21hbGwgcGFydHMgb2YgdGhlIHRyZWUgKGhvcGVmdWxseSAtIGlmIHRoZVxuICAgICAgICAgICBvdmVyYWxsIHJvb3QgaXMgcmViYWxhbmNlZCwgd2UnbGwgZWF0IHRoZSB3aG9sZSBjb3N0LCB1bmZvcnR1bmF0ZWx5LikgKilcbiAgICAgICAgfCBOb2RlIF8sIE5vZGUgXyB8IE5vZGUgXywgTGVhZiBfIHwgTGVhZiBfLCBOb2RlIF8gLT4gc2xvdyB0IHQnIH5pbml0OmFjYylcbiAgICBpblxuICAgIGxvb3AgdDEgdDIgaW5pdCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlYyBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKGwsIF8sIF8sIHIsIF8pIC0+IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgc3RhdGUgLT4gaGFzaF9mb2xkX2RhdGEgKGhhc2hfZm9sZF9rZXkgc3RhdGUga2V5KSBkYXRhKVxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpfIGxpc3QgLT4ga2V5IDo6IGxpc3QpIHQgfmluaXQ6W11cbiAgbGV0IGRhdGEgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIHQgfmluaXQ6W11cblxuICBtb2R1bGUgdHlwZSBGb2xkYWJsZSA9IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuICBlbmRcblxuICBsZXRbQGlubGluZSBhbHdheXNdIG9mX2ZvbGRhYmxlJyB+Zm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIChmb2xkIFtAaW5saW5lZCBoaW50XSlcbiAgICAgIGZvbGRhYmxlXG4gICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICB+ZjooZnVuIHsgdHJlZSA9IGFjY3VtOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgcHJldl9kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbml0XG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgZGF0YSA9IGYgcHJldl9kYXRhIGRhdGEgaW5cbiAgICAgICAgKHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICA7O1xuXG4gIG1vZHVsZSBPZl9mb2xkYWJsZSAoTSA6IEZvbGRhYmxlKSA9IHN0cnVjdFxuICAgIGxldCBvZl9mb2xkYWJsZV9mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBvZl9mb2xkYWJsZScgfmZvbGQ6TS5mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfcmVkdWNlIGZvbGRhYmxlIH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGRcbiAgICAgICAgZm9sZGFibGVcbiAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IGFjY3VtOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIGxldCBuZXdfZGF0YSA9XG4gICAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgICAgICAgIHwgU29tZSBwcmV2IC0+IGYgcHJldiBkYXRhXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YTpuZXdfZGF0YSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxcbiAgICAgIF1cbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleSA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgTS5mb2xkXG4gICAgICAgICAgICBmb2xkYWJsZVxuICAgICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IGxlbmd0aCcgfSBhcyBhY2MpID1cbiAgICAgICAgICAgICAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCdcbiAgICAgICAgICAgICAgdGhlbiByLnJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KVxuICAgICAgICAgICAgICBlbHNlIGdsb2JhbGl6ZSBhY2MgW0Bub250YWlsXSlcbiAgICAgICAgaW5cbiAgICAgICAgYE9rIG1hcClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX29yX2Vycm9yIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCIpXG4gICAgICAgICAga2V5XG4gICAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX2V4biBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfZXhuOiBkdXBsaWNhdGUga2V5XCIpIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgIDs7XG5cbiAgICAoKiBSZXZlcnNlIHRoZSBpbnB1dCwgdGhlbiBmb2xkIGZyb20gbGVmdCB0byByaWdodC4gVGhlIHJlc3VsdGluZyBtYXAgdXNlcyB0aGUgZmlyc3RcbiAgICAgICBpbnN0YW5jZSBvZiBlYWNoIGtleSBmcm9tIHRoZSBpbnB1dCBsaXN0LiBUaGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gZWFjaFxuICAgICAgIG91dHB1dCBsaXN0IGlzIHRoZSBzYW1lIGFzIGluIHRoZSBpbnB1dCBsaXN0LiAqKVxuICAgIGxldCBvZl9mb2xkYWJsZV9tdWx0aSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgbGV0IGFsaXN0ID0gTS5mb2xkIGZvbGRhYmxlIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgaW5cbiAgICAgIG9mX2ZvbGRhYmxlJyBhbGlzdCB+Zm9sZDpMaXN0LmZvbGQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSB+Y29tcGFyZV9rZXlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgT2ZfYWxpc3QgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwiYWxpc3RcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBmb2xkID0gTGlzdC5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9hbGlzdF9mb2xkID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9hbGlzdCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9hbGlzdF9leG4gPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9leG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfbXVsdGlcblxuICBtb2R1bGUgT2Zfc2VxdWVuY2UgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwic2VxdWVuY2VcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICAgIGxldCBmb2xkID0gU2VxdWVuY2UuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2Zfc2VxdWVuY2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZXhuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX211bHRpXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXkgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IG1hcCA9XG4gICAgICAgIExpc3QuZm9sZFxuICAgICAgICAgIGxpc3RcbiAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQga2V5ID0gZ2V0X2tleSBkYXRhIGluXG4gICAgICAgICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IG5ld19sZW5ndGggfSBhcyBhY2MpID1cbiAgICAgICAgICAgICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGxlbmd0aCA9IG5ld19sZW5ndGhcbiAgICAgICAgICAgIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSlcbiAgICAgICAgICAgIGVsc2UgZ2xvYmFsaXplIGFjYyBbQG5vbnRhaWxdKVxuICAgICAgaW5cbiAgICAgIGBPayBtYXApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgIFwiTWFwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3I6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBrZXlcbiAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeCAtPiB4XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9saXN0X3dpdGhfa2V5X2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGxpc3QgPSBMaXN0LnJldiBsaXN0IGluXG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKSB+ZjooZnVuIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IGRhdGEgLT5cbiAgICAgIGxldCBrZXkgPSBnZXRfa2V5IGRhdGEgaW5cbiAgICAgICh1cGRhdGUgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1biBvcHRpb24gLT5cbiAgICAgICAgIGxldCBsaXN0ID0gT3B0aW9uLnZhbHVlIG9wdGlvbiB+ZGVmYXVsdDpbXSBpblxuICAgICAgICAgZGF0YSA6OiBsaXN0KVxuICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBub3QgKGYgZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgbm90IChmIH5rZXkgfmRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIGYgZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXG4gICAgXVxuICA7O1xuXG4gIGxldCB0b19hbGlzdCA/KGtleV9vcmRlciA9IGBJbmNyZWFzaW5nKSB0ID1cbiAgICBtYXRjaCBrZXlfb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT4gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gICAgfCBgRGVjcmVhc2luZyAtPiBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZWx0cyA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46KGxlbmd0aCB0MSArIGxlbmd0aCB0MikgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlcjIgdDEgdDIgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YTp2YWx1ZXMgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB2YWx1ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgIFVuaWZvcm1fYXJyYXkuc2V0IGVsdHMgIWkgKGtleSwgdmFsdWUpO1xuICAgICAgICBpbmNyIGlcbiAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgbGV0IGxlbiA9ICFpIGluXG4gICAgbGV0IGdldCBpID0gVW5pZm9ybV9hcnJheS5nZXQgZWx0cyBpIGluXG4gICAgbGV0IHRyZWUgPSBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mOmdldCBpblxuICAgICAod2l0aF9sZW5ndGggdHJlZSBsZW4pXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCA9XG4gICAgbGV0IG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aF9sYXJnZSB0X2xhcmdlIHRfc21hbGwgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGZvbGRcbiAgICAgICAgdF9zbWFsbFxuICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIHRfbGFyZ2UgbGVuZ3RoX2xhcmdlKVxuICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6ZGF0YScgeyB0cmVlID0gdDsgbGVuZ3RoIH0gLT5cbiAgICAgICAgICAodXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhJ1xuICAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IGNhbGwgY29tYmluZSB+a2V5IGRhdGEgZGF0YScpXG4gICAgICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIGluXG4gICAgbGV0IGNhbGwgZiB+a2V5IHggeSA9IGYgfmtleSB4IHkgaW5cbiAgICBsZXQgc3dhcCBmIH5rZXkgeCB5ID0gZiB+a2V5IHkgeCBpblxuICAgIGZ1biB0MSB0MiB+bGVuZ3RoMSB+bGVuZ3RoMiB+Y29tYmluZSB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGxlbmd0aDIgPD0gbGVuZ3RoMVxuICAgICAgdGhlbiBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgxIHQxIHQyIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgyIHQyIHQxIH5jYWxsOnN3YXAgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIENsb3Nlc3Rfa2V5X2ltcGwgPSBzdHJ1Y3RcbiAgICAoKiBbbWFya2VyXSBhbmQgW3JlcGFja2FnZV0gYWxsb3cgdXMgdG8gY3JlYXRlIFwibG9naWNhbFwiIG9wdGlvbnMgd2l0aG91dCBhY3R1YWxseVxuICAgICAgIGFsbG9jYXRpbmcgYW55IG9wdGlvbnMuIFBhc3NpbmcgW0ZvdW5kIGtleSB2YWx1ZV0gdG8gYSBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgcGFzc2luZyBbU29tZSAoa2V5LCB2YWx1ZSldOyBwYXNzaW5nIFtNaXNzaW5nICgpICgpXSBpcyBlcXVpdmFsZW50IHRvIHBhc3NpbmdcbiAgICAgICBbTm9uZV0uICopXG4gICAgdHlwZSAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyID1cbiAgICAgIHwgTWlzc2luZyA6ICgnaywgJ3YsIHVuaXQsIHVuaXQpIG1hcmtlclxuICAgICAgfCBGb3VuZCA6ICgnaywgJ3YsICdrLCAndikgbWFya2VyXG5cbiAgICBsZXQgcmVwYWNrYWdlXG4gICAgICAgICAgKHR5cGUgayB2IGtfb3B0IHZfb3B0KVxuICAgICAgICAgIChtYXJrZXIgOiAoaywgdiwga19vcHQsIHZfb3B0KSBtYXJrZXIpXG4gICAgICAgICAgKGsgOiBrX29wdClcbiAgICAgICAgICAodiA6IHZfb3B0KVxuICAgICAgOiAoayAqIHYpIG9wdGlvblxuICAgICAgPVxuICAgICAgbWF0Y2ggbWFya2VyIHdpdGhcbiAgICAgIHwgTWlzc2luZyAtPiBOb25lXG4gICAgICB8IEZvdW5kIC0+IFNvbWUgKGssIHYpXG4gICAgOztcblxuICAgICgqIFRoZSB0eXBlIHNpZ25hdHVyZSBpcyBleHBsaWNpdCBoZXJlIHRvIGFsbG93IHBvbHltb3JwaGljIHJlY3Vyc2lvbi4gKilcbiAgICBsZXQgcmVjIGxvb3AgOlxuICAgICAgJ2sgJ3YgJ2tfb3B0ICd2X29wdC5cbiAgICAgICgnaywgJ3YpIHRyZWVcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrXG4gICAgICAtPiBjb21wYXJlX2tleTooJ2sgLT4gJ2sgLT4gaW50KVxuICAgICAgLT4gKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlclxuICAgICAgLT4gJ2tfb3B0XG4gICAgICAtPiAndl9vcHRcbiAgICAgIC0+ICgnayAqICd2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIGZ1biB0IGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIC0+IGMgPj0gMFxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+IGMgPiAwXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IGMgPD0gMFxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+IGMgPCAwXG4gICAgICAgICAgdGhlbiBTb21lIChrJywgdicpXG4gICAgICAgICAgZWxzZSByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IE5vZGUgKGwsIGsnLCB2JywgciwgXykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBjID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJhc2UgY2FzZSAobm8gcmVjdXJzaXZlIGNhbGwpLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgTGVzc19vcl9lcXVhbF90byAtPiBTb21lIChrJywgdicpXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgciB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWluX2VsdCByXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgbCB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWF4X2VsdCBsKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogV2UgYXJlIGd1YXJhbnRlZWQgaGVyZSB0aGF0IGsnIDw+IGsuICopXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHRoZSBvbmx5IHJlY3Vyc2l2ZSBjYXNlLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIgayB+Y29tcGFyZV9rZXkgPSBsb29wIHQgZGlyIGsgfmNvbXBhcmVfa2V5IE1pc3NpbmcgKCkgKClcbiAgZW5kXG5cbiAgbGV0IGNsb3Nlc3Rfa2V5ID0gQ2xvc2VzdF9rZXlfaW1wbC5jbG9zZXN0X2tleVxuXG4gIGxldCByZWMgcmFuayB0IGsgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGsnLCBfKSAtPiBpZiBjb21wYXJlX2tleSBrJyBrID0gMCB0aGVuIFNvbWUgMCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGsnLCBfLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBTb21lIChsZW5ndGggbClcbiAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgIHRoZW4gcmFuayBsIGsgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIE9wdGlvbi5tYXAgKHJhbmsgciBrIH5jb21wYXJlX2tleSkgfmY6KGZ1biByYW5rIC0+IHJhbmsgKyAxICsgbGVuZ3RoIGwpXG4gIDs7XG5cbiAgKCogdGhpcyBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbU2VxdWVuY2VdIGludGVyZmFjZSBidXQgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvblxuICAgICBhbGxvY2F0ZXMgb25seSAyIHdvcmRzIGFuZCBkb2Vzbid0IHJlcXVpcmUgd3JpdGUtYmFycmllciAqKVxuICBsZXQgcmVjIG50aCcgbnVtX3RvX3NlYXJjaCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPlxuICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICBOb25lKVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIChtYXRjaCBudGgnIG51bV90b19zZWFyY2ggbCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiBzb21lXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgICAgIG50aCcgbnVtX3RvX3NlYXJjaCByKSlcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IG50aCcgKHJlZiBuKSB0XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPCAwKSBbQG5vbnRhaWxdXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB+a2V5IH5kYXRhID0gbm90IChpc19sZWZ0IH5rZXkgfmRhdGEpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0IFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXSBmaW5kcyB0aGUga2V5IGluIFt0XSB3aGljaCBzYXRpc2ZpZXMgW21heWJlX2JvdW5kXVxuICAgICBhbmQgdGhlIHJlbGV2YW50IG9uZSBvZiBbaWZfZXhjbHVzaXZlXSBvciBbaWZfaW5jbHVzaXZlXSwgYXMganVkZ2VkIGJ5IFtjb21wYXJlXS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgfmlmX2V4Y2x1c2l2ZSB+aWZfaW5jbHVzaXZlID1cbiAgICBsZXQgZmluZF9ib3VuZCB0IGhvdyBib3VuZCB+Y29tcGFyZSA6IF8gTWF5YmVfYm91bmQudCBvcHRpb24gPVxuICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCB0IGhvdyBib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICB8IFNvbWUgKGJvdW5kLCBfKSAtPiBTb21lIChJbmNsIGJvdW5kKVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIChtYXliZV9ib3VuZCA6IF8gTWF5YmVfYm91bmQudCkgd2l0aFxuICAgIHwgRXhjbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfZXhjbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBJbmNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9pbmNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IFVuYm91bmRlZCAtPiBTb21lIFVuYm91bmRlZFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHNdIGZpbmRzIHRoZSAobm90IG5lY2Vzc2FyaWx5IGRpc3RpbmN0KSBrZXlzIGluIFt0XVxuICAgICB3aGljaCBtb3N0IGNsb3NlbHkgYXBwcm9hY2ggKGJ1dCBkbyBub3QgY3Jvc3MpIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF0sIGFzXG4gICAgIGp1ZGdlZCBieSBbY29tcGFyZV0uIEl0IHJldHVybnMgW05vbmVdIGlmIG5vIGtleXMgaW4gW3RdIGFyZSB3aXRoaW4gdGhhdCByYW5nZS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBmaW5kX2xvd2VyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBsZXQgZmluZF91cHBlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIG1hdGNoIGZpbmRfbG93ZXJfYm91bmQgdCBsb3dlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbG93ZXJfYm91bmQgLT5cbiAgICAgIChtYXRjaCBmaW5kX3VwcGVyX2JvdW5kIHQgdXBwZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIHVwcGVyX2JvdW5kIC0+IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkpXG4gIDs7XG5cblxuICB0eXBlICgnaywgJ3YpIGFjYyA9XG4gICAgeyBtdXRhYmxlIGJhZF9rZXkgOiAnayBvcHRpb25cbiAgICA7IG11dGFibGUgbWFwX2xlbmd0aCA6ICgnaywgJ3YpIHQgV2l0aF9sZW5ndGgudFxuICAgIH1cblxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFjYyA9IHsgYmFkX2tleSA9IE5vbmU7IG1hcF9sZW5ndGggPSB3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMCB9IGluXG4gICAgaXRlcmkgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQgeyB0cmVlID0gbWFwOyBsZW5ndGggfSA9IGFjYy5tYXBfbGVuZ3RoIGluXG4gICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IGxlbmd0aCcgfSBhcyBwYWlyKSA9XG4gICAgICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgbWFwIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgJiYgT3B0aW9uLmlzX25vbmUgYWNjLmJhZF9rZXlcbiAgICAgIHRoZW4gYWNjLmJhZF9rZXkgPC0gU29tZSBrZXlcbiAgICAgIGVsc2UgYWNjLm1hcF9sZW5ndGggPC0gZ2xvYmFsaXplIHBhaXIpO1xuICAgIG1hdGNoIGFjYy5iYWRfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9rIGFjYy5tYXBfbGVuZ3RoXG4gICAgfCBTb21lIGtleSAtPiBgRHVwbGljYXRlX2tleSBrZXlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuY3JlYXRlIFwiTWFwLm9mX2l0ZXJpX2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwIHNleHAgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwKSBzZXhwIGluXG4gICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgbWF0Y2ggb2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgICBMaXN0Lml0ZXIyX29rIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBrMiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiTWFwLnRfb2Zfc2V4cF9kaXJlY3Q6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgIGxldCBmIH5rZXkgfmRhdGEgYWNjID0gU2V4cC5MaXN0IFsgc2V4cF9vZl9rZXkga2V5OyBzZXhwX29mX3ZhbHVlIGRhdGEgXSA6OiBhY2MgaW5cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgfmYgdCB+aW5pdDpbXSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCB+c2V4cF9vZl9rZXkgPVxuICAgIGxldCBva3MsIGVycm9ycyA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gICAgaWYgaXNfZW1wdHkgZXJyb3JzXG4gICAgdGhlbiBPayBva3NcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yX3MgKHNleHBfb2ZfdCBzZXhwX29mX2tleSBFcnJvci5zZXhwX29mX3QgZXJyb3JzKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c1xuICAgICAgICB0MVxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcjooeyBjb21wYXJlID0gY29tcGFyZV9rZXk7IHNleHBfb2ZfdCA9IHNleHBfb2Zfa2V5IH0gOiBfIENvbXBhcmF0b3IudClcbiAgICA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBgT2tcbiAgICAgICAgKGZvbGRcbiAgICAgICAgICAgdDFcbiAgICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgeyB0cmVlID0gdDI7IGxlbmd0aCB9IC0+XG4gICAgICAgICAgICAgbGV0IGtleSA9IGYga2V5IGluXG4gICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICBhZGRfZXhuX2ludGVybmFsIHQyIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IHw+IGdsb2JhbGl6ZVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IER1cGxpY2F0ZSAtPiByZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkpKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcmVzdWx0IC0+IHJlc3VsdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJNYXAubWFwX2tleXNfZXhuOiBkdXBsaWNhdGUga2V5XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBsZXQgdHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3Igb3V0ZXJfdCA9XG4gICAgZm9sZFxuICAgICAgb3V0ZXJfdFxuICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgfmY6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl90IGFjYyAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgaW5uZXJfdFxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgeyB0cmVlID0gYWNjOyBsZW5ndGggPSBhY2NfbGVuIH0gLT5cbiAgICAgICAgICAgICh1cGRhdGVcbiAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgaW5uZXJfa2V5XG4gICAgICAgICAgICAgICB+bGVuZ3RoOmFjY19sZW5cbiAgICAgICAgICAgICAgIH5jb21wYXJlX2tleTppbm5lcl9jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB3aXRoX2xlbmd0aF9nbG9iYWwgKHNpbmdsZXRvbiBvdXRlcl9rZXkgZGF0YSkgMVxuICAgICAgICAgICAgICAgICB8IFNvbWUgeyB0cmVlID0gZWx0OyBsZW5ndGggPSBlbHRfbGVuIH0gLT5cbiAgICAgICAgICAgICAgICAgICAoc2V0XG4gICAgICAgICAgICAgICAgICAgICAgZWx0XG4gICAgICAgICAgICAgICAgICAgICAgfmtleTpvdXRlcl9rZXlcbiAgICAgICAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgICAgICAgICAgIH5sZW5ndGg6ZWx0X2xlblxuICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlX2tleTpvdXRlcl9jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pXG4gICAgICAgICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSlcbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIG1hcGkgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQS5yZXR1cm4gRW1wdHlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gQS5tYXAgKGYgfmtleTp2IH5kYXRhOmQpIH5mOihmdW4gbmV3X2RhdGEgLT4gTGVhZiAodiwgbmV3X2RhdGEpKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgbCcgPSBBLm9mX3RodW5rIChmdW4gKCkgLT4gbWFwaSB+ZiBsKSBpblxuICAgICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICAgIGxldCByJyA9IEEub2ZfdGh1bmsgKGZ1biAoKSAtPiBtYXBpIH5mIHIpIGluXG4gICAgICAgIEEubWFwMyBsJyBkJyByJyB+ZjooZnVuIGwnIGQnIHInIC0+IE5vZGUgKGwnLCB2LCBkJywgcicsIGgpKVxuICAgIDs7XG5cbiAgICAoKiBJbiB0aGVvcnkgdGhlIGNvbXB1dGF0aW9uIG9mIGxlbmd0aCBvbi10aGUtZmx5IGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBiZWNhdXNlIGl0IGNhblxuICAgICAgIGJlIGRvbmUgYnkgd3JhcHBpbmcgdGhlIGFwcGxpY2F0aXZlIFtBXSB3aXRoIGxlbmd0aC1jb21wdXRpbmcgbG9naWMuIEhvd2V2ZXIsXG4gICAgICAgaW50cm9kdWNpbmcgYW4gYXBwbGljYXRpdmUgdHJhbnNmb3JtZXIgbGlrZSB0aGF0IG1ha2VzIHRoZSBtYXAgYmVuY2htYXJrcyBpblxuICAgICAgIGFzeW5jX2tlcm5lbC9iZW5jaC9zcmMvYmVuY2hfZGVmZXJyZWRfbWFwLm1sIG5vdGljZWFibHkgc2xvd2VyLiAqKVxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIGxldCByZWMgdHJlZV9maWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gQS5yZXR1cm4gKHdpdGhfbGVuZ3RoX2dsb2JhbCBFbXB0eSAwKVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgICAgQS5tYXAgKGYgfmtleTp2IH5kYXRhOmQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBTb21lIG5ld19kYXRhIC0+IHdpdGhfbGVuZ3RoX2dsb2JhbCAoTGVhZiAodiwgbmV3X2RhdGEpKSAxXG4gICAgICAgICAgICB8IE5vbmUgLT4gd2l0aF9sZW5ndGhfZ2xvYmFsIEVtcHR5IDApXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgICBBLm1hcDNcbiAgICAgICAgICAgIChBLm9mX3RodW5rIChmdW4gKCkgLT4gdHJlZV9maWx0ZXJfbWFwaSBsIH5mKSlcbiAgICAgICAgICAgIChmIH5rZXk6diB+ZGF0YTpkKVxuICAgICAgICAgICAgKEEub2ZfdGh1bmsgKGZ1biAoKSAtPiB0cmVlX2ZpbHRlcl9tYXBpIHIgfmYpKVxuICAgICAgICAgICAgfmY6XG4gICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICB7IHRyZWUgPSBsJzsgbGVuZ3RoID0gbF9sZW4gfSBuZXdfZGF0YSB7IHRyZWUgPSByJzsgbGVuZ3RoID0gcl9sZW4gfSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIG5ld19kYXRhIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT5cbiAgICAgICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbCAoam9pbiBsJyB2IG5ld19kYXRhIHInKSAobF9sZW4gKyByX2xlbiArIDEpXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWwgKGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpIChsX2xlbiArIHJfbGVuKSlcbiAgICAgIGluXG4gICAgICB0cmVlX2ZpbHRlcl9tYXBpIHQgfmZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2ssICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogKCdrLCAndikgVHJlZTAudFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG5cbmxldCBjb21wYXJlX2tleSB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudCkgPVxuICB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgbGlrZV9tYXliZV9ub19vcFxuICAgICAgKHsgdHJlZSA9IG9sZF90cmVlOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpXG4gICAgICAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudClcbiAgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCB3aXRoX3NhbWVfbGVuZ3RoIHsgdHJlZSA9IF87IGNvbXBhcmF0b3I7IGxlbmd0aCB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5sZXQgb2ZfbGlrZV90cmVlIHQgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG5sZXQgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdHJlZSA9XG4gIGlmIHBoeXNfZXF1YWwgdC50cmVlIHRyZWVcbiAgdGhlbiB0XG4gIGVsc2UgeyB0cmVlOyBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG47O1xuXG5sZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbigqIEV4cG9zaW5nIHRoaXMgZnVuY3Rpb24gd291bGQgbWFrZSBpdCB2ZXJ5IGVhc3kgZm9yIHRoZSBpbnZhcmlhbnRzXG4gICBvZiB0aGlzIG1vZHVsZSB0byBiZSBicm9rZW4uICopXG5sZXQgb2ZfdHJlZV91bnNhZmUgfmNvbXBhcmF0b3Igfmxlbmd0aCB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuXG4gIGxldCBpbnZhcmlhbnRzIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgJiYgVHJlZTAubGVuZ3RoIHQudHJlZSA9IHQubGVuZ3RoXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnNldCB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4bl9pbnRlcm5hbFxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgcmVzdWx0IC0+IGBPayByZXN1bHRcbiAgICB8IGV4Y2VwdGlvbiBEdXBsaWNhdGUgLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZV9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCBrZXkgPSBUcmVlMC5maW5kX211bHRpIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5jaGFuZ2UgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC51cGRhdGUgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHQudHJlZVxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIHQga2V5ID0gVHJlZTAuZmluZCB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgcmVtb3ZlIHQga2V5ID1cbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICB0XG4gICAgICAoVHJlZTAucmVtb3ZlIHQudHJlZSBrZXkgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lbSB0IGtleSA9IFRyZWUwLm1lbSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQudHJlZSB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIHQxIHQyIH5mID0gVHJlZTAuaXRlcjIgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIGxldCBtYXAgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwIHQudHJlZSB+ZilcbiAgbGV0IG1hcGkgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwaSB0LnRyZWUgfmYpXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEudHJlZSB0Mi50cmVlIH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9rZXlzIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlsdGVyIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyaSB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2UgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXBpIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZSB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfbGlrZV90cmVlMiB0ICh0MSwgdDIpID0gb2ZfbGlrZV90cmVlIHQgdDEsIG9mX2xpa2VfdHJlZSB0IHQyXG5cbiAgbGV0IG9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AgdCAodDEsIHQyKSA9XG4gICAgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdDEsIG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHQyXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBvZl9saWtlX3RyZWUyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQudHJlZSB+ZilcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IG9mX2xpa2VfdHJlZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcCB0LnRyZWUgfmYpXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKFRyZWUwLnBhcnRpdGlvbmlfdGYgdC50cmVlIH5mKVxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYpXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KG9mX2xpa2VfdHJlZSB0KVxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzIHQudHJlZSB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2RhdGEgdDEgdDIgPSBUcmVlMC5lcXVhbCAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdC50cmVlXG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHQudHJlZVxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0LnRyZWVcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MS50cmVlXG4gICAgICB0Mi50cmVlXG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiA9XG4gICAgbGlrZSB0MSAoVHJlZTAubWVyZ2UgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogVGhpcyBpcyBvbmx5IGEgbm8tb3AgaW4gdGhlIGNhc2Ugd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXBzIGlzIGVtcHR5LiAqKVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIChpZiB0Mi5sZW5ndGggPD0gdDEubGVuZ3RoIHRoZW4gdDEgZWxzZSB0MilcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxLnRyZWVcbiAgICAgICAgIHQyLnRyZWVcbiAgICAgICAgIH5sZW5ndGgxOnQxLmxlbmd0aFxuICAgICAgICAgfmxlbmd0aDI6dDIubGVuZ3RoXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQudHJlZSB+ZlxuXG4gIGxldCBzcGxpdCB0IGsgPVxuICAgIGxldCBsLCBtYXliZSwgciA9IFRyZWUwLnNwbGl0IHQudHJlZSBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgaW5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgYm90aF9sZW4gPSBpZiBPcHRpb24uaXNfc29tZSBtYXliZSB0aGVuIHQubGVuZ3RoIC0gMSBlbHNlIHQubGVuZ3RoIGluXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG1heWJlLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggciksIG1heWJlLCByKVxuICA7O1xuXG4gIGxldCBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50byBrID1cbiAgICBsZXQgbCwgciA9XG4gICAgICBUcmVlMC5zcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdC50cmVlIH5pbnRvIGsgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG9mX3RyZWVfdW5zYWZlIHIgfmNvbXBhcmF0b3Igfmxlbmd0aDoodC5sZW5ndGggLSBsZW5ndGggbCkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgciA9IG9mX3RyZWUgciB+Y29tcGFyYXRvciBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbCB+Y29tcGFyYXRvciB+bGVuZ3RoOih0Lmxlbmd0aCAtIGxlbmd0aCByKSwgcilcbiAgOztcblxuICBsZXQgc3BsaXRfbGVfZ3QgdCBrID0gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG86YExlZnQga1xuICBsZXQgc3BsaXRfbHRfZ2UgdCBrID0gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG86YFJpZ2h0IGtcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgbGVmdCwgbWlkLCByaWdodCA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZSB0LnRyZWUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IG91dGVyX2pvaW5lZF9oZWlnaHQgPVxuICAgICAgbGV0IGhfbCA9IFRyZWUwLmhlaWdodCBsZWZ0XG4gICAgICBhbmQgaF9yID0gVHJlZTAuaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoX2wgPSBoX3IgdGhlbiBoX2wgKyAxIGVsc2UgbWF4IGhfbCBoX3JcbiAgICBpblxuICAgIGlmIG91dGVyX2pvaW5lZF9oZWlnaHQgPCBUcmVlMC5oZWlnaHQgbWlkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWlkX2xlbmd0aCA9IHQubGVuZ3RoIC0gKFRyZWUwLmxlbmd0aCBsZWZ0ICsgVHJlZTAubGVuZ3RoIHJpZ2h0KSBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpIH5sZW5ndGg6bWlkX2xlbmd0aClcbiAgICBlbHNlIG9mX3RyZWUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmFwcGVuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IGxvd2VyX3BhcnQpXG4gICAgICAgIH5sb3dlcl9wYXJ0Omxvd2VyX3BhcnQudHJlZVxuICAgICAgICB+dXBwZXJfcGFydDp1cHBlcl9wYXJ0LnRyZWVcbiAgICB3aXRoXG4gICAgfCBgT2sgdHJlZSAtPlxuICAgICAgYE9rXG4gICAgICAgIChvZl90cmVlX3Vuc2FmZVxuICAgICAgICAgICB0cmVlXG4gICAgICAgICAgIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIGxvd2VyX3BhcnQpXG4gICAgICAgICAgIH5sZW5ndGg6KGxvd2VyX3BhcnQubGVuZ3RoICsgdXBwZXJfcGFydC5sZW5ndGgpKVxuICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQudHJlZSB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdC50cmVlIH5taW4gfm1heCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdC50cmVlIGRpciBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQudHJlZSBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIHQga2V5ID0gVHJlZTAucmFuayB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdC50cmVlIH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIFRyZWUwLkVtcHR5IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHJlZV90cmF2ZXJzYWxzID0gVHJlZTAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgdCB+ZiA9XG4gICAgICBBLm1hcCAoVHJlZV90cmF2ZXJzYWxzLm1hcGkgdC50cmVlIH5mKSB+ZjooZnVuIG5ld190cmVlIC0+XG4gICAgICAgIHdpdGhfc2FtZV9sZW5ndGggdCBuZXdfdHJlZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgICAgQS5tYXAgKFRyZWVfdHJhdmVyc2Fscy5maWx0ZXJfbWFwaSB0LnRyZWUgfmYpIH5mOihmdW4gbmV3X3RyZWVfd2l0aF9sZW5ndGggLT5cbiAgICAgICAgbGlrZSB0IG5ld190cmVlX3dpdGhfbGVuZ3RoKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbigqIFswXSBpcyB1c2VkIGFzIHRoZSBbbGVuZ3RoXSBhcmd1bWVudCBldmVyeXdoZXJlIGluIHRoaXMgbW9kdWxlLCBzaW5jZSB0cmVlcyBkbyBub3RcbiAgIGhhdmUgdGhlaXIgbGVuZ3RocyBzdG9yZWQgYXQgdGhlIHJvb3QsIHVubGlrZSBtYXBzLiBUaGUgdmFsdWVzIGFyZSBkaXNjYXJkZWQgYWx3YXlzLiAqKVxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9ICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gayB2ID0gVHJlZTAuc2luZ2xldG9uIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvclxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9IChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9IChUcmVlMC5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl9yZXF1aXJlZF9ieV9pbnRmIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID0gKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcikudHJlZVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X211bHRpXG4gICAgICAgbGlzdFxuICAgICAgIH5nZXRfa2V5XG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgdCA9IHRcblxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG5cbiAgbGV0IHNldCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5zZXQgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgYWRkX2V4biB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgdFxuICAgICAgIH5rZXlcbiAgICAgICB+ZGF0YVxuICAgICAgIH5sZW5ndGg6MFxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICB0XG4gICAgICAgfmtleVxuICAgICAgIH5kYXRhXG4gICAgICAgfmxlbmd0aDowXG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIHRyeSBgT2sgKGFkZF9leG5faW50ZXJuYWwgdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhKSB3aXRoXG4gICAgfCBfIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIChUcmVlMC5yZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX211bHRpIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIChUcmVlMC5jaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHRcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAuZmluZCB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICAoVHJlZTAucmVtb3ZlIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAubWVtIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdCB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQgfmZcblxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIFRyZWUwLml0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mXG4gIGxldCBtYXBpIHQgfmYgPSBUcmVlMC5tYXBpIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmYgfmluaXQgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIH5jb21wYXJhdG9yIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiA9IFRyZWUwLmZpbHRlcl9rZXlzIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9IFRyZWUwLmZpbHRlcmkgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gVHJlZTAuZmlsdGVyX21hcGkgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl9tYXAgdCB+ZlxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uaV90ZiB0IH5mXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIH5jb21wYXJhdG9yIHQgPVxuICAgIFRyZWUwLmNvbWJpbmVfZXJyb3JzIHQgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmVxdWFsIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHRcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdFxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDFcbiAgICAgIHQyXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIChUcmVlMC5tZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIH5jb21wYXJhdG9yIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBMZW5ndGggY29tcHV0YXRpb24gbWFrZXMgdGhpcyBzaWduaWZpY2FudGx5IHNsb3dlciB0aGFuIFttZXJnZV9za2V3ZWRdIG9uIGEgbWFwXG4gICAgICAgd2l0aCBhIFtsZW5ndGhdIGZpZWxkLCBidXQgZG9lcyBwcmVzZXJ2ZSBhbW91bnQgb2YgYWxsb2NhdGlvbi4gKilcbiAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgdDFcbiAgICAgICB0MlxuICAgICAgIH5sZW5ndGgxOihsZW5ndGggdDEpXG4gICAgICAgfmxlbmd0aDI6KGxlbmd0aCB0MilcbiAgICAgICB+Y29tYmluZVxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0IH5mXG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGsgPSBUcmVlMC5zcGxpdCB0IGsgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHNwbGl0X2xlX2d0IH5jb21wYXJhdG9yIHQgayA9XG4gICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5XG4gICAgICB0XG4gICAgICB+aW50bzpgTGVmdFxuICAgICAga1xuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2x0X2dlIH5jb21wYXJhdG9yIHQgayA9XG4gICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5XG4gICAgICB0XG4gICAgICB+aW50bzpgUmlnaHRcbiAgICAgIGtcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmNvbXBhcmF0b3Igfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIFRyZWUwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgXywgcmV0LCBfID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfmxvd2VyX2JvdW5kXG4gICAgICAgIH51cHBlcl9ib3VuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHJldFxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB+Y29tcGFyYXRvciB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgIHRcbiAgICAgIH5taW5cbiAgICAgIH5tYXhcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgfmNvbXBhcmF0b3IgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0IGRpciBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdCBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAucmFuayB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHRcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcikudHJlZVxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaCBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IEVtcHR5XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyZWUwX3RyYXZlcnNhbHMgPSBUcmVlMC5NYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSB0IH5mID0gVHJlZTBfdHJhdmVyc2Fscy5tYXBpIHQgfmZcblxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIEEubWFwXG4gICAgICAgIChUcmVlMF90cmF2ZXJzYWxzLmZpbHRlcl9tYXBpIHQgfmYpXG4gICAgICAgIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiB3aXRoXG4gICAgfCBgT2sgeyB0cmVlID0gdDsgbGVuZ3RoID0gXyB9IC0+IGBPayB0XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPSAoVHJlZTAubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYpLnRyZWVcblxuICAoKiBUaGlzIGNhbGxpbmcgY29udmVudGlvbiBvZiBbfmNvbXBhcmF0b3IgfmNvbXBhcmF0b3JdIGlzIGNvbmZ1c2luZy4gSXQgaXMgcmVxdWlyZWRcbiAgICAgYmVjYXVzZSBbYWNjZXNzX29wdGlvbnNdIGFuZCBbY3JlYXRlX29wdGlvbnNdIGJvdGggZGVtYW5kIGEgW35jb21wYXJhdG9yXSBhcmd1bWVudCBpblxuICAgICBbTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZV0uXG5cbiAgICAgTWFraW5nIGl0IGxlc3MgY29uZnVzaW5nIHdvdWxkIHJlcXVpcmUgc29tZSB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5IGluIHNpZ25hdHVyZXMuXG4gICAgIEJldHRlciB0byBqdXN0IGxpdmUgd2l0aCBhbiB1bmRlc2lyYWJsZSBpbnRlcmZhY2UgaW4gYSBmdW5jdGlvbiB0aGF0IHdpbGwgcHJvYmFibHlcbiAgICAgbmV2ZXIgYmUgY2FsbGVkIGRpcmVjdGx5LiAqKVxuICBsZXQgdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yIHQgPVxuICAgIChUcmVlMC50cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciB0KS50cmVlXG4gICAgfD4gbWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ3cpIHQgPSAoJ2ssICd2KSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRcblxuICAgIGxldCBlbXB0eSA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcblxuICAgIGxldCBhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgdCB3aXRoXG4gICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICBFcnJvci5yYWlzZV9zIChTZXhwLkF0b20gXCJNYXAuQnVpbGRfaW5jcmVhc2luZy5hZGQ6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgfCBfIC0+IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0IH5rZXkgfmRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWUgdCA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdiA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBrIHY7IGxlbmd0aCA9IDEgfVxuXG4gIGxldCBvZl90cmVlMCB+Y29tcGFyYXRvciAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudCkgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgOztcblxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAod2l0aF9sZW5ndGggdHJlZSAoVHJlZTAubGVuZ3RoIHRyZWUpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgPSB0b190cmVlXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgICAgfmY6KGZ1biB0cmVlIC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoIH0gLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5pdGVyaSB3aXRoXG4gICAgfCBgT2sgdHJlZV9sZW5ndGggLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlX2xlbmd0aClcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICh3aXRoX2xlbmd0aCAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZikgbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihmdW4geCAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB4KVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gb2ZfdHJlZTAgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgdC50cmVlIH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBwYWlyIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgcGFpcilcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm1hcF9rZXlzX2V4biB0LnRyZWUgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3IgdCA9XG4gICAgbGV0IG91dGVyX2NvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3IgaW5cbiAgICBUcmVlMC50cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciAoVHJlZTAubWFwIHQudHJlZSB+Zjp0b190cmVlKVxuICAgIHw+IG9mX3RyZWUwIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3JcbiAgICB8PiBtYXAgfmY6KGZ1biB4IC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgeClcbiAgOztcblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3IgPSBLLmNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBlbmRcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX3RyZWUgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgdHJlZSA9XG4gIG9mX3RyZWUgfmNvbXBhcmF0b3I6TS5jb21wYXJhdG9yIHRyZWVcbjs7XG5cbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0X211bHRpIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3RfZm9sZCBtIGEgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+aW5pdCB+ZlxuOztcblxubGV0IG9mX2FsaXN0X3JlZHVjZSBtIGEgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfaXRlcmkgbSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuXG5sZXQgb2ZfaXRlcmlfZXhuIG0gfml0ZXJpID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBtIHNlcSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzZXFcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2V4biBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9tdWx0aSBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9mb2xkIG0gcyB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5pbml0IH5mXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIG0gcyB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmZcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5IG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBtYXBfa2V5cyBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCBtYXBfa2V5c19leG4gbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxubGV0IHRyYW5zcG9zZV9rZXlzIG0gdCA9IFVzaW5nX2NvbXBhcmF0b3IudHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgTSAoSyA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBrIGNtcClcbiAgICAgIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgdl9vZl9zZXhwXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOksuY29tcGFyYXRvciBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrKVxuICAgICAgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKVxuICAgICAgKHZfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBUYWdnZWRcbiAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdGFnXG4gICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgIChNYW55XG4gICAgICAgICAgICAgICAgIChMaXN0XG4gICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICggVGFnZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBncmFtbWFyID0gSy50X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUYWdnZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgZ3JhbW1hciA9IHZfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpKSlcbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgY29tcGFyZV92IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY29tcGFyZV92IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBrKSBoYXNoX2ZvbGRfdiBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgSy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfdiBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGEgfmluaXQgfmZcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYSB+ZlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHMgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzIH5mXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIHQgPSBVc2luZ19jb21wYXJhdG9yLnRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yIHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0MFxuXG50eXBlICdhIHQgPSAnYSBTdGRsaWIuUXVldWUudFxuXG5sZXQgY3JlYXRlID0gU3RkbGliLlF1ZXVlLmNyZWF0ZVxubGV0IGNsZWFyID0gU3RkbGliLlF1ZXVlLmNsZWFyXG5sZXQgY29weSA9IFN0ZGxpYi5RdWV1ZS5jb3B5XG5sZXQgaXNfZW1wdHkgPSBTdGRsaWIuUXVldWUuaXNfZW1wdHlcbmxldCBsZW5ndGggPSBTdGRsaWIuUXVldWUubGVuZ3RoXG5sZXQgcGVlayA9IFN0ZGxpYi5RdWV1ZS5wZWVrXG5sZXQgcG9wID0gU3RkbGliLlF1ZXVlLnBvcFxubGV0IHB1c2ggPSBTdGRsaWIuUXVldWUucHVzaFxubGV0IHRyYW5zZmVyID0gU3RkbGliLlF1ZXVlLnRyYW5zZmVyXG5cbmxldCBpdGVyIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgY2FtbF9pdGVyIDogKCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiAnYSB0IC0+IHVuaXQgPVxuICAgIFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5RdWV1ZS5pdGVyIDogKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdClcbiAgaW5cbiAgY2FtbF9pdGVyIGYgdFxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbWxfZm9sZCA6ICgoJ2IgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIC0+ICdhIHQgLT4gJ2IgPVxuICAgIFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5RdWV1ZS5mb2xkIDogKCdiIC0+ICdhIC0+ICdiKSAtPiAnYiAtPiAnYSB0IC0+ICdiKVxuICBpblxuICBjYW1sX2ZvbGQgZiBpbml0IHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlua2VkX3F1ZXVlMFxuXG5sZXQgZW5xdWV1ZSB0IHggPSBMaW5rZWRfcXVldWUwLnB1c2ggeCB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBvcCB0KVxubGV0IGRlcXVldWVfZXhuID0gTGlua2VkX3F1ZXVlMC5wb3BcbmxldCBkZXF1ZXVlX2FuZF9pZ25vcmVfZXhuICh0eXBlIGVsdCkgKHQgOiBlbHQgdCkgPSBpZ25vcmUgKGRlcXVldWVfZXhuIHQgOiBlbHQpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBlZWsgdClcbmxldCBwZWVrX2V4biA9IExpbmtlZF9xdWV1ZTAucGVla1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBpdGVyaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvbGRpID0gQy5mb2xkaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxubGV0IGl0ZXJpID0gQy5pdGVyaVxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9IExpbmtlZF9xdWV1ZTAudHJhbnNmZXIgc3JjIGRzdFxuXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gZW5xdWV1ZSByZXMgKGYgYSkpO1xuICByZXNcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gZW5xdWV1ZSByZXMgKGYgaSBhKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXIgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyaSBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsaXN0ID0gTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnJheSB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGVucXVldWUgdCAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIGxlbmd0aCB0IHdpdGhcbiAgfCAwIC0+IFt8fF1cbiAgfCBsZW4gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW4gKHBlZWtfZXhuIHQpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIHYgLT5cbiAgICAgIGFyci4oIWkpIDwtIHY7XG4gICAgICBpbmNyIGkpO1xuICAgIGFyclxuOztcblxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKGxpc3Rfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHNpbmdsZXRvbiBhID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IGE7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5JbnQ2NFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50NjQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50NjRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgY29tcGFyZSA9IEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nX29wdCA9IG9mX3N0cmluZ19vcHRcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSA2NFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludDY0X3Bvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBTdGRsaWIuSW50NjQub2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2NC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwNjQgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMTYgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDQ4XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAzMiB4ID1cbiAgKCogVGhpcyBpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiBjb2VyY2luZyB0byBhbiBpbnQzMiB0byBwZXJmb3JtIGJ5dGVzd2FwLiBDb2VyY2luZ1xuICAgICBmcm9tIGFuIGludDMyIHdpbGwgYWRkIHVubmVjZXNzYXJ5IHNoaWZ0IG9wZXJhdGlvbnMgdG8gc2lnbiBleHRlbmQgdGhlIG51bWJlclxuICAgICBhcHByb3ByaWF0ZWx5LlxuICAqKVxuICBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAzMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDQ4IHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAxNlxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgaW5jciByID0gciA6PSBhZGQgIXIgb25lXG5sZXQgZGVjciByID0gciA6PSBzdWIgIXIgb25lXG5cbmV4dGVybmFsIG9mX2ludDY0IDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0XG5sZXQgdG9faW50NjQgdCA9IHRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmV4dGVybmFsIHRvX2ludF90cnVuYyA6ICh0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQzMltAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludF90cnVuY1xuICA6ICAoaW50NjRbQGxvY2FsX29wdF0pXG4gIC0+IChuYXRpdmVpbnRbQGxvY2FsX29wdF0pXG4gID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgb2ZfaW50IDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMiA6IChpbnQzMltAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29mX2ludDMyXCJcblxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252LmludDY0X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5JbnQ2NC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IFN0ZGxpYi5JbnQ2NC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5JbnQ2NC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuSW50NjQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgU3RkbGliLkludDY0LnByZWQgeCA9IFN0ZGxpYi5JbnQ2NC56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBpZiBTdGRsaWIuSW50NjQuZXF1YWwgaSBTdGRsaWIuSW50NjQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoU3RkbGliLkludDY0LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVMeFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0XCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2FkZFwiXG4gIGV4dGVybmFsICggLSApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9zdWJcIlxuICBleHRlcm5hbCAoICogKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbXVsXCJcbiAgZXh0ZXJuYWwgKCAvICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2RpdlwiXG4gIGV4dGVybmFsICggfi0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2FuZFwiXG4gIGV4dGVybmFsICggbG9yICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29yXCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X3hvclwiXG5cbiAgbGV0IGxub3QgPSBiaXRfbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKVxuICAgIDogICh0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKHRbQGxvY2FsX29wdF0pXG4gICAgPSBcIiVpbnQ2NF9sc2xcIlxuXG4gIGV4dGVybmFsICggYXNyIClcbiAgICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICh0W0Bsb2NhbF9vcHRdKVxuICAgID0gXCIlaW50NjRfYXNyXCJcblxuICBleHRlcm5hbCAoIGxzciApXG4gICAgOiAgKHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAodFtAbG9jYWxfb3B0XSlcbiAgICA9IFwiJWludDY0X2xzclwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2NF0gYW5kIFtJbnQ2NC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEEgNjNiaXQgaW50ZWdlciBpcyBhIDY0Yml0IGludGVnZXIgd2l0aCBpdHMgYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICBhbmQgaXRzIGxvd2VzdCBiaXQgc2V0IHRvIDAuXG4gICBUaGlzIGlzIHRoZSBzYW1lIGtpbmQgb2YgZW5jb2RpbmcgYXMgT0NhbWwgaW50IG9uIDY0Yml0IGFyY2hpdGVjdHVyZS5cbiAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmVpbmcgdGhlIGxvd2VzdCBiaXQgKGltbWVkaWF0ZSBiaXQpIHNldCB0byAxLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cblxubW9kdWxlIFQwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG4gICAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50NjQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5tb2R1bGUgVyA6IHNpZ1xuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuICBlbmRcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIHZhbCB3cmFwX2V4biA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIHdyYXBfbW9kdWxvIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgdW53cmFwIDogdCAtPiBTdGRsaWIuSW50NjQudFxuXG4gICgqKiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIGludDY0IHRoYXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0IGludDYzIG1vZHVsbyAyXjYzLiAqKVxuICB2YWwgdW53cmFwX3Vuc2lnbmVkIDogdCAtPiBTdGRsaWIuSW50NjQudFxuXG4gIHZhbCBpbnZhcmlhbnQgOiB0IC0+IHVuaXRcbiAgdmFsIGFkZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdWIgOiB0IC0+IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIHN1Y2MgOiB0IC0+IHRcbiAgdmFsIHByZWQgOiB0IC0+IHRcbiAgdmFsIG11bCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGl2IDogdCAtPiB0IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3Bjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBiaXRfbm90IDogdCAtPiB0XG4gIHZhbCBiaXRfeG9yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9vciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfYW5kIDogdCAtPiB0IC0+IHRcbiAgdmFsIHNoaWZ0X2xlZnQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQ2NCA6IHQgLT4gU3RkbGliLkludDY0LnRcbiAgdmFsIG9mX2ludDY0IDogU3RkbGliLkludDY0LnQgLT4gdCBvcHRpb25cbiAgdmFsIG9mX2ludDY0X2V4biA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIG9mX2ludDY0X3RydW5jIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGNlaWxfcG93MiA6IHQgLT4gdFxuICB2YWwgZmxvb3JfcG93MiA6IHQgLT4gdFxuICB2YWwgY2VpbF9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGZsb29yX2xvZzIgOiB0IC0+IGludFxuICB2YWwgaXNfcG93MiA6IHQgLT4gYm9vbFxuICB2YWwgY2x6IDogdCAtPiBpbnRcbiAgdmFsIGN0eiA6IHQgLT4gaW50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUMFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgbGV0IHdyYXBfZXhuIHggPVxuICAgICgqIFJhaXNlcyBpZiB0aGUgaW50NjQgdmFsdWUgZG9lcyBub3QgZml0IG9uIGludDYzLiAqKVxuICAgIENvbnYuaW50NjRfZml0X29uX2ludDYzX2V4biB4O1xuICAgIFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTFxuICA7O1xuXG4gIGxldCB3cmFwIHggPVxuICAgIGlmIENvbnYuaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gU29tZSAoU3RkbGliLkludDY0Lm11bCB4IDJMKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgd3JhcF9tb2R1bG8geCA9IFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTFxuICBsZXQgdW53cmFwIHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgeCAxXG4gIGxldCB1bndyYXBfdW5zaWduZWQgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMVxuXG4gICgqIFRoaXMgZG9lcyBub3QgdXNlIHdyYXAgb3IgdW53cmFwIHRvIGF2b2lkIGdlbmVyYXRpbmcgZXhjZXB0aW9ucyBpbiB0aGUgY2FzZSBvZlxuICAgICBvdmVyZmxvd3MuIFRoaXMgaXMgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBpbnQgdHlwZSBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlLiAqKVxuICBsZXQgZjIgZiBhIGIgPVxuICAgIFN0ZGxpYi5JbnQ2NC5tdWwgKGYgKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBhIDEpIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgYiAxKSkgMkxcbiAgOztcblxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZUxcbiAgbGV0IG0geCA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmQgeCBtYXNrXG4gIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAobSB0ID0gdClcbiAgbGV0IGFkZCB4IHkgPSBTdGRsaWIuSW50NjQuYWRkIHggeVxuICBsZXQgc3ViIHggeSA9IFN0ZGxpYi5JbnQ2NC5zdWIgeCB5XG4gIGxldCBuZWcgeCA9IFN0ZGxpYi5JbnQ2NC5uZWcgeFxuICBsZXQgYWJzIHggPSBTdGRsaWIuSW50NjQuYWJzIHhcbiAgbGV0IG9uZSA9IHdyYXBfZXhuIDFMXG4gIGxldCBzdWNjIGEgPSBhZGQgYSBvbmVcbiAgbGV0IHByZWQgYSA9IHN1YiBhIG9uZVxuICBsZXQgbWluX3ZhbHVlID0gbSBTdGRsaWIuSW50NjQubWluX2ludFxuICBsZXQgbWF4X3ZhbHVlID0gbSBTdGRsaWIuSW50NjQubWF4X2ludFxuICBsZXQgYml0X25vdCB4ID0gbSAoU3RkbGliLkludDY0LmxvZ25vdCB4KVxuICBsZXQgYml0X2FuZCA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmRcbiAgbGV0IGJpdF94b3IgPSBTdGRsaWIuSW50NjQubG9neG9yXG4gIGxldCBiaXRfb3IgPSBTdGRsaWIuSW50NjQubG9nb3JcbiAgbGV0IHNoaWZ0X2xlZnQgeCBpID0gU3RkbGliLkludDY0LnNoaWZ0X2xlZnQgeCBpXG4gIGxldCBzaGlmdF9yaWdodCB4IGkgPSBtIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgeCBpKVxuICBsZXQgc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkgPSBtIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkpXG4gIGxldCBwb3cgPSBmMiBJbnRfbWF0aC5Qcml2YXRlLmludDYzX3Bvd19vbl9pbnQ2NFxuICBsZXQgbXVsIGEgYiA9IFN0ZGxpYi5JbnQ2NC5tdWwgYSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSlcbiAgbGV0IGRpdiBhIGIgPSB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0LmRpdiBhIGIpXG4gIGxldCByZW0gYSBiID0gU3RkbGliLkludDY0LnJlbSBhIGJcbiAgbGV0IHBvcGNvdW50IHggPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudCB4XG4gIGxldCB0b19pbnQ2NCB0ID0gdW53cmFwIHRcbiAgbGV0IG9mX2ludDY0IHQgPSB3cmFwIHRcbiAgbGV0IG9mX2ludDY0X2V4biB0ID0gd3JhcF9leG4gdFxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgdCA9IHdyYXBfbW9kdWxvIHRcbiAgbGV0IHRfb2Zfc2V4cCB4ID0gd3JhcF9leG4gKGludDY0X29mX3NleHAgeClcbiAgbGV0IHNleHBfb2ZfdCB4ID0gc2V4cF9vZl9pbnQ2NCAodW53cmFwIHgpXG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBpc19wb3cyIHggPSBJbnQ2NC5pc19wb3cyICh1bndyYXAgeClcblxuICBsZXQgY2x6IHggPVxuICAgICgqIFdlIHJ1biBJbnQ2NC5jbHogZGlyZWN0bHkgb24gdGhlIHdyYXBwZWQgaW50NjMgdmFsdWUuIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHRoZVxuICAgICAgIGJpdHMgb2YgdGhlIGludDYzX2VtdWwgYXJlIGxlZnQtYWxpZ25lZCBpbiB0aGUgSW50NjQuICopXG4gICAgSW50NjQuY2x6IHhcbiAgOztcblxuICBsZXQgY3R6IHggPSBJbnQ2NC5jdHogKHVud3JhcCB4KVxuICBsZXQgZmxvb3JfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBjZWlsX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgZmxvb3JfbG9nMiB4ID0gSW50NjQuZmxvb3JfbG9nMiAodW53cmFwIHgpXG4gIGxldCBjZWlsX2xvZzIgeCA9IEludDY0LmNlaWxfbG9nMiAodW53cmFwIHgpXG5lbmRcblxub3BlbiBXXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFcudCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChXLmdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIFcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBXLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKFcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoVy5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBXLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVy5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVy5jb21wYXJlXG4gIGxldCBpbnZhcmlhbnQgPSBXLmludmFyaWFudFxuXG4gICgqIFdlIGRvbid0IGV4cGVjdCBbaGFzaF0gdG8gZm9sbG93IHRoZSBiZWhhdmlvciBvZiBpbnQgaW4gNjRiaXQgYXJjaGl0ZWN0dXJlICopXG4gIGxldCBfID0gaGFzaFxuICBsZXQgaGFzaCAoeCA6IHQpID0gU3RkbGliLkhhc2h0YmwuaGFzaCB4XG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGludmFsaWRfc3RyIHggPSBQcmludGYuZmFpbHdpdGhmIFwiSW50NjMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgeCAoKVxuXG4gICgqXG4gICAgIFwic2lnblwiIHJlZmVycyB0byB3aGV0aGVyIHRoZSBudW1iZXIgc3RhcnRzIHdpdGggYSAnLSdcbiAgICAgXCJzaWduZWRuZXNzID0gZmFsc2VcIiBtZWFucyB0aGUgcmVzdCBvZiB0aGUgbnVtYmVyIGlzIHBhcnNlZCBhcyB1bnNpZ25lZCBhbmQgdGhlbiBjYXN0XG4gICAgIHRvIHNpZ25lZCB3aXRoIHdyYXAtYXJvdW5kIG1vZHVsbyAyXmlcbiAgICAgXCJzaWduZWRuZXNzID0gdHJ1ZVwiIG1lYW5zIG5vIHN1Y2ggY3JhemluZXNzIGhhcHBlbnNcblxuICAgICBUaGUgdGVybWlub2xvZ3kgYW5kIHRoZSBsb2dpYyBpcyBkdWUgdG8gdGhlIGNvZGUgaW4gYnl0ZXJ1bi9pbnRzLmMgaW4gb2NhbWwgNC4wM1xuICAgICAoW3BhcnNlX3NpZ25fYW5kX2Jhc2VdIGZ1bmN0aW9uKS5cblxuICAgICBTaWduZWRuZXNzIGVxdWFscyB0cnVlIGZvciBwbGFpbiBkZWNpbWFsIG51bWJlciAoZS5nLiAxMjM1LCAtNjc4OSlcblxuICAgICBTaWduZWRuZXNzIGVxdWFscyBmYWxzZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAtIFsweGZmZmZdLCBbLTB4ZmZmZl0gKGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswYjAxMDFdLCBbLTBiMDEwMV0gKGJpbmFyeSByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMG8xMjM3XSwgWy0wbzEyMzddIChvY3RhbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMHU5ODEyXSwgWy0wdTk4MTJdICh1bnNpZ25lZCBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIC0gYXZhaWxhYmxlIGZyb20gT0NhbWwgNC4wMykgKilcbiAgbGV0IHNpZ25fYW5kX3NpZ25lZG5lc3MgeCA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggeCBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcG9zLCBzaWduID1cbiAgICAgIGlmIDAgPCBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCB4LlswXSB3aXRoXG4gICAgICAgIHwgJy0nIC0+IDEsIGBOZWdcbiAgICAgICAgfCAnKycgLT4gMSwgYFBvc1xuICAgICAgICB8IF8gLT4gMCwgYFBvcylcbiAgICAgIGVsc2UgMCwgYFBvc1xuICAgIGluXG4gICAgaWYgcG9zICsgMiA8IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IGMxID0geC5bcG9zXSBpblxuICAgICAgbGV0IGMyID0geC5bcG9zICsgMV0gaW5cbiAgICAgIG1hdGNoIGMxLCBjMiB3aXRoXG4gICAgICB8ICcwJywgJzAnIC4uICc5JyAtPiBzaWduLCB0cnVlXG4gICAgICB8ICcwJywgXyAtPiBzaWduLCBmYWxzZVxuICAgICAgfCBfIC0+IHNpZ24sIHRydWUpXG4gICAgZWxzZSBzaWduLCB0cnVlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gU3RkbGliLkludDY0LnRvX3N0cmluZyAodW53cmFwIHgpXG5cbiAgbGV0IG9mX3N0cmluZ19yYXcgc3RyID1cbiAgICBsZXQgc2lnbiwgc2lnbmVkbmVzcyA9IHNpZ25fYW5kX3NpZ25lZG5lc3Mgc3RyIGluXG4gICAgaWYgc2lnbmVkbmVzc1xuICAgIHRoZW4gb2ZfaW50NjRfZXhuIChTdGRsaWIuSW50NjQub2Zfc3RyaW5nIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb3Nfc3RyID1cbiAgICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICAgIHwgYE5lZyAtPiBTdHJpbmcuc3ViIHN0ciB+cG9zOjEgfmxlbjooU3RyaW5nLmxlbmd0aCBzdHIgLSAxKVxuICAgICAgICB8IGBQb3MgLT4gc3RyXG4gICAgICBpblxuICAgICAgbGV0IGludDY0ID0gU3RkbGliLkludDY0Lm9mX3N0cmluZyBwb3Nfc3RyIGluXG4gICAgICAoKiB1bnNpZ25lZCA2My1iaXQgaW50IG11c3QgcGFyc2UgYXMgYSBwb3NpdGl2ZSBzaWduZWQgNjQtYml0IGludCAqKVxuICAgICAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGludDY0IDBMIHRoZW4gaW52YWxpZF9zdHIgc3RyO1xuICAgICAgbGV0IGludDYzID0gd3JhcF9tb2R1bG8gaW50NjQgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBgTmVnIC0+IG5lZyBpbnQ2M1xuICAgICAgfCBgUG9zIC0+IGludDYzKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICB0cnkgb2Zfc3RyaW5nX3JhdyBzdHIgd2l0aFxuICAgIHwgXyAtPiBpbnZhbGlkX3N0ciBzdHJcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX29wdCBzdHIgPVxuICAgIG1hdGNoIG9mX3N0cmluZ19yYXcgc3RyIHdpdGhcbiAgICB8IHQgLT4gU29tZSB0XG4gICAgfCBleGNlcHRpb24gXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGJzd2FwMTYgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDE2ICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDMyIHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAzMiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXA0OCB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwNDggKHVud3JhcCB0KSlcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG51bV9iaXRzID0gNjNcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGJpdF9ub3RcbmxldCBiaXRfeG9yID0gYml0X3hvclxubGV0IGJpdF9vciA9IGJpdF9vclxubGV0IGJpdF9hbmQgPSBiaXRfYW5kXG5sZXQgcG9wY291bnQgPSBwb3Bjb3VudFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBwb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVcbmxldCBtaW51c19vbmUgPSB3cmFwX2V4biBTdGRsaWIuSW50NjQubWludXNfb25lXG5sZXQgb25lID0gd3JhcF9leG4gU3RkbGliLkludDY0Lm9uZVxubGV0IHplcm8gPSB3cmFwX2V4biBTdGRsaWIuSW50NjQuemVyb1xubGV0IGlzX3BvdzIgPSBpc19wb3cyXG5sZXQgZmxvb3JfcG93MiA9IGZsb29yX3BvdzJcbmxldCBjZWlsX3BvdzIgPSBjZWlsX3BvdzJcbmxldCBmbG9vcl9sb2cyID0gZmxvb3JfbG9nMlxubGV0IGNlaWxfbG9nMiA9IGNlaWxfbG9nMlxubGV0IGNseiA9IGNselxubGV0IGN0eiA9IGN0elxubGV0IHRvX2Zsb2F0IHggPSBTdGRsaWIuSW50NjQudG9fZmxvYXQgKHVud3JhcCB4KVxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCB4ID0gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdCB4KVxuXG5sZXQgb2ZfZmxvYXQgdCA9XG4gIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiB0ID49IGZsb2F0X2xvd2VyX2JvdW5kICYmIHQgPD0gZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0Lm9mX2Zsb2F0IHQpXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDYzLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgb2ZfaW50NjQgPSBvZl9pbnQ2NFxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gb2ZfaW50NjRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IHRvX2ludDY0XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxuXG4oKiBXZSBjYW4gcmV1c2UgY29udmVyc2lvbiBmdW5jdGlvbiBmcm9tL3RvIGludDY0IGhlcmUuICopXG5sZXQgb2ZfaW50IHggPSB3cmFwX2V4biAoQ29udi5pbnRfdG9faW50NjQgeClcbmxldCBvZl9pbnRfZXhuIHggPSBvZl9pbnQgeFxubGV0IHRvX2ludCB4ID0gQ29udi5pbnQ2NF90b19pbnQgKHVud3JhcCB4KVxubGV0IHRvX2ludF9leG4geCA9IENvbnYuaW50NjRfdG9faW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50X3RydW5jIHggPSBDb252LmludDY0X3RvX2ludF90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfaW50MzIgeCA9IHdyYXBfZXhuIChDb252LmludDMyX3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50MzJfZXhuIHggPSBvZl9pbnQzMiB4XG5sZXQgdG9faW50MzIgeCA9IENvbnYuaW50NjRfdG9faW50MzIgKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX3RydW5jIHggPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jICh1bndyYXAgeClcbmxldCBvZl9uYXRpdmVpbnQgeCA9IG9mX2ludDY0IChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF9leG4geCA9IHdyYXBfZXhuIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF90cnVuYyB4ID0gb2ZfaW50NjRfdHJ1bmMgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgdG9fbmF0aXZlaW50IHggPSBDb252LmludDY0X3RvX25hdGl2ZWludCAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jICh1bndyYXAgeClcblxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoVC5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIFQuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gVC5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuXG4gICAgbGV0IHRvX3N0cmluZyBpID1cbiAgICAgICgqIHRoZSB1c2Ugb2YgW3Vud3JhcF91bnNpZ25lZF0gaGVyZSBpcyBpbXBvcnRhbnQgZm9yIHRoZSBjYXNlIG9mIFttaW5fdmFsdWVdICopXG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVMeFwiICh1bndyYXBfdW5zaWduZWQgaSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gb2Zfc3RyaW5nIChcIjB4XCIgXiBzKVxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2My5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcgeFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2M1wiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjNdIGFuZCBbSW50NjMuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICB0eXBlIGVtdWxhdGVkID0gdFxuXG4gIHR5cGUgKCd1bmRlcmx5aW5nX3R5cGUsICdpbnRlcm1lZGlhdGVfdHlwZSkgdCA9XG4gICAgfCBJbnQgOiAoaW50LCBpbnQpIHRcbiAgICB8IEludDY0IDogKGludDY0LCBlbXVsYXRlZCkgdFxuZW5kXG5cbmxldCByZXByID0gUmVwci5JbnQ2NFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5JbnQzMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50MzIgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50MzJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQzMl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQzMiA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQzMl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gIGxldCBvZl9zdHJpbmdfb3B0ID0gb2Zfc3RyaW5nX29wdFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDMyXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQzMi5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgSW5maXhfY29tcGFyZSA9IHN0cnVjdFxuICBvcGVuIFBvbHlcblxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IHggPj0geVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IHggPD0geVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IHggPiB5XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSB4IDwgeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IHggPD4geVxuZW5kXG5cbm1vZHVsZSBDb21wYXJlID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXhfY29tcGFyZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfaW50MzIgdCA9IHRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyIHQgPSB0XG5sZXQgdG9faW50MzJfZXhuID0gdG9faW50MzJcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDMyX3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmxldCBvZl9pbnQgPSBDb252LmludF90b19pbnQzMlxubGV0IG9mX2ludF9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnRfdHJ1bmMgPSBDb252LmludF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludCA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYuaW50MzJfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYuaW50MzJfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXAzMiA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVic3dhcF9pbnQzMlwiXG5cbmxldCBic3dhcDE2IHggPSBTdGRsaWIuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXAzMiB4KSAxNlxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuSW50MzIubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBTdGRsaWIuSW50MzIubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBTdGRsaWIuSW50MzIucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBTdGRsaWIuSW50MzIuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgU3RkbGliLkludDMyLnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIFN0ZGxpYi5JbnQzMi5wcmVkIHggPSBTdGRsaWIuSW50MzIuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludDMyIGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICAoKiBUaGUgW2kgPSAxXSBjaGVjayBpcyBuZWVkZWQgYmVjYXVzZSBjbHooMCkgaXMgdW5kZWZpbmVkICopXG4gICAgaWYgU3RkbGliLkludDMyLmVxdWFsIGkgU3RkbGliLkludDMyLm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKFN0ZGxpYi5JbnQzMi5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50MzIgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJWx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzIuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMlwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKENvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDMyXSBhbmQgW0ludDMyLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFJlcHIgPSBJbnQ2M19lbXVsLlJlcHJcblxuKCogSW4gYSB3b3JsZCB3aGVyZSB0aGUgY29tcGlsZXIgd291bGQgdW5kZXJzdGFuZCBbQEBpbW1lZGlhdGU2NF0gYXR0cmlidXRlcyBvbiB0eXBlXG4gICBkZWNsYXJhdGlvbnMsIHRoaXMgbW9kdWxlIGlzIGhvdyBvbmUgd291bGQgcHJvZHVjZSBhIFt0eXBlIHRdIHdpdGggdGhpcyBhdHRyaWJ1dGUuICopXG5tb2R1bGUgSW1tZWRpYXRlNjQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpIDogc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIHZhbCByZXByIDogdCByZXByXG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICBleHRlcm5hbCB0cmFuc3BhcmVudF9tYWdpYyA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdiW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGxldCByZXByID1cbiAgICAgICgqIFtPYmoubWFnaWNdIGludm9sdmVzIG9wYXF1ZW5lc3MgdW5kZXIgRmxhbWJkYSAyIHdoaWNoIHdpbGwgaW5oaWJpdFxuICAgICAgICAgYXZhaWxhYmlsaXR5IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIGZvciBsYXRlciBpbmxpbmluZ1xuICAgICAgICAgKGUuZy4gaW50byBmbG9hdC5tbCkuIEFzIHN1Y2ggd2UgZXhwbGljaXRseSB1c2UgJWlkZW50aXR5IGhlcmUuICopXG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+ICh0cmFuc3BhcmVudF9tYWdpYyBJbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgICB8IFczMiAtPiAodHJhbnNwYXJlbnRfbWFnaWMgTm9uX2ltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICA7O1xuICBlbmRcbiAgW0BAaW5saW5lIGFsd2F5c11cbmVuZFxuXG5pbmNsdWRlIEltbWVkaWF0ZTY0Lk1ha2UgKEludCkgKEludDYzX2VtdWwpXG5cbm1vZHVsZSBCYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgSW50X2ludGYuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2ludDMyIDogaW50MzIgLT4gdFxuICAgIHZhbCB0b19pbnQzMiA6IHQgLT4gSW50MzIudCBvcHRpb25cbiAgICB2YWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IEludDMyLnRcbiAgICB2YWwgb2ZfaW50NjQgOiBJbnQ2NC50IC0+IHQgb3B0aW9uXG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0IG9wdGlvblxuICAgIHZhbCB0b19uYXRpdmVpbnQgOiB0IC0+IG5hdGl2ZWludCBvcHRpb25cbiAgICB2YWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHRcbiAgICB2YWwgdG9fbmF0aXZlaW50X3RydW5jIDogdCAtPiBuYXRpdmVpbnRcbiAgICB2YWwgb2ZfZmxvYXRfdW5jaGVja2VkIDogZmxvYXQgLT4gdFxuICAgIHZhbCByZXByIDogKHQsIHQpIEludDYzX2VtdWwuUmVwci50XG4gICAgdmFsIGJzd2FwMTYgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXAzMiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDQ4IDogdCAtPiB0XG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE5hdGl2ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdG9faW50IHggPSBTb21lIHhcbiAgICBsZXQgdG9faW50X3RydW5jIHggPSB4XG5cbiAgICAoKiBbb2ZfaW50MzJfZXhuXSBpcyBhIHNhZmUgb3BlcmF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoIDY0LWJpdCB3b3JkIHNpemVzLiAqKVxuICAgIGxldCBvZl9pbnQzMiA9IG9mX2ludDMyX2V4blxuICAgIGxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IHRvX25hdGl2ZWludCB4XG4gICAgbGV0IHRvX25hdGl2ZWludCB4ID0gU29tZSAodG9fbmF0aXZlaW50IHgpXG4gICAgbGV0IHJlcHIgPSBJbnQ2M19lbXVsLlJlcHIuSW50XG4gICAgbGV0IGJzd2FwMzIgdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXAzMiAoSW50NjQub2ZfaW50IHQpKVxuICAgIGxldCBic3dhcDQ4IHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwNDggKEludDY0Lm9mX2ludCB0KSlcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIFMpID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIE5hdGl2ZSA6IFMpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgSW50NjNfZW11bCA6IFMpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSAodmFsIEJhY2tlbmQuaW1wbCA6IEJhY2tlbmQuUylcblxubW9kdWxlIE92ZXJmbG93X2V4biA9IHN0cnVjdFxuICBsZXQgKCArICkgdCB1ID1cbiAgICBsZXQgc3VtID0gdCArIHUgaW5cbiAgICBpZiBiaXRfb3IgKGJpdF94b3IgdCB1KSAoYml0X3hvciB0IChiaXRfbm90IHN1bSkpIDwgemVyb1xuICAgIHRoZW4gc3VtXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCArICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInN1bVwiLCBzZXhwX29mX3Qgc3VtIF0pXG4gIDs7XG5cbiAgbGV0ICggLSApIHQgdSA9XG4gICAgbGV0IGRpZmYgPSB0IC0gdSBpblxuICAgIGxldCBwb3NfZGlmZiA9IHQgPiB1IGluXG4gICAgaWYgdCA8PiB1ICYmIEJvb2wuKCA8PiApIHBvc19kaWZmIChpc19wb3NpdGl2ZSBkaWZmKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLSApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJkaWZmXCIsIHNleHBfb2ZfdCBkaWZmIF0pXG4gICAgZWxzZSBkaWZmXG4gIDs7XG5cbiAgbGV0IG5lZ2F0aXZlX29uZSA9IG9mX2ludCAoLTEpXG4gIGxldCBkaXZfd291bGRfb3ZlcmZsb3cgdCB1ID0gdCA9IG1pbl92YWx1ZSAmJiB1ID0gbmVnYXRpdmVfb25lXG5cbiAgbGV0ICggKiApIHQgdSA9XG4gICAgbGV0IHByb2R1Y3QgPSB0ICogdSBpblxuICAgIGlmIHUgPD4gemVybyAmJiAoZGl2X3dvdWxkX292ZXJmbG93IHByb2R1Y3QgdSB8fCBwcm9kdWN0IC8gdSA8PiB0KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKiApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCBwcm9kdWN0IF0pXG4gICAgZWxzZSBwcm9kdWN0XG4gIDs7XG5cbiAgbGV0ICggLyApIHQgdSA9XG4gICAgaWYgZGl2X3dvdWxkX292ZXJmbG93IHQgdVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCAodCAvIHUpIF0pXG4gICAgZWxzZSB0IC8gdVxuICA7O1xuXG4gIGxldCBhYnMgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcImFicyBvdmVyZmxvd1wiIGVsc2UgYWJzIHRcbiAgbGV0IG5lZyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwibmVnIG92ZXJmbG93XCIgZWxzZSBuZWcgdFxuZW5kXG5cbmxldCAoKSA9IGFzc2VydCAoSW50LiggPSApIG51bV9iaXRzIDYzKVxuXG5sZXQgcmFuZG9tX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50IHN0YXRlICh0b19pbnRfZXhuIGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb21fb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlICh0b19pbnQ2NCBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX29mX2ludDY0XG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnRfaW5jbCBzdGF0ZSAodG9faW50X2V4biBsbykgKHRvX2ludF9leG4gaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHN0YXRlICh0b19pbnQ2NCBsbykgKHRvX2ludDY0IGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21faW5jbF9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX2luY2xfb2ZfaW50NjRcbjs7XG5cbmxldCBmbG9vcl9sb2cyIHQgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gdCB8PiB0b19pbnRfZXhuIHw+IEludC5mbG9vcl9sb2cyXG4gIHwgVzMyIC0+XG4gICAgaWYgdCA8PSB6ZXJvXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKTtcbiAgICBsZXQgZmxvb3JfbG9nMiA9IHJlZiAoSW50LiggLSApIG51bV9iaXRzIDIpIGluXG4gICAgd2hpbGUgZXF1YWwgemVybyAoYml0X2FuZCB0IChzaGlmdF9sZWZ0IG9uZSAhZmxvb3JfbG9nMikpIGRvXG4gICAgICBmbG9vcl9sb2cyIDo9IEludC4oIC0gKSAhZmxvb3JfbG9nMiAxXG4gICAgZG9uZTtcbiAgICAhZmxvb3JfbG9nMlxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcHIgPSBSZXByXG5cbiAgbGV0IHJlcHIgPSByZXByXG5cbiAgbW9kdWxlIEVtdWwgPSBJbnQ2M19lbXVsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuS2V5ICopXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIFR3byBbdF1zIHRoYXQgW2NvbXBhcmVdIGVxdWFsIG11c3QgaGF2ZSBlcXVhbCBoYXNoZXMgZm9yIHRoZSBoYXNodGFibGVcbiAgICAgICAgdG8gYmVoYXZlIHByb3Blcmx5LiAqKVxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLk1lcmdlX2ludG9fYWN0aW9uICopXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJlbW92ZVxuICAgIHwgU2V0X3RvIG9mICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gc2lnXG4gICgqKiB7MiBBY2Nlc3NvcnN9ICopXG5cbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgdmFsIHNleHBfb2Zfa2V5IDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBTZXhwLnRcbiAgdmFsIGNsZWFyIDogKF8sIF8pIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBBdHRlbXB0aW5nIHRvIG1vZGlmeSAoW3NldF0sIFtyZW1vdmVdLCBldGMuKSB0aGUgaGFzaHRhYmxlIGR1cmluZyBpdGVyYXRpb24gKFtmb2xkXSxcbiAgICAgIFtpdGVyXSwgW2l0ZXJfa2V5c10sIFtpdGVyaV0pIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAqKVxuICB2YWwgZm9sZFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOigoJ2Ega2V5IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgb3ZlciBib3RoIGtleXMgYW5kIHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuaXRlcmkgaCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgcHJpbnRfZW5kbGluZSAoUHJpbnRmLnNwcmludGYgXCIlZC0lZFwiIGtleSBkYXRhKSk7O1xuICAgICAgMS00XG4gICAgICA1LTZcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9ICopXG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBib29sXG4gIHZhbCByZW1vdmUgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogQ2hvb3NlIGFuIGFyYml0cmFyeSBrZXkvdmFsdWUgcGFpciBvZiBhIGhhc2ggdGFibGUuIFJldHVybnMgW05vbmVdIGlmIFt0XSBpcyBlbXB0eS5cblxuICAgICAgVGhlIGNob2ljZSBpcyBkZXRlcm1pbmlzdGljLiBDYWxsaW5nIFtjaG9vc2VdIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHRhYmxlXG4gICAgICByZXR1cm5zIHRoZSBzYW1lIGtleS92YWx1ZSBwYWlyLCBzbyBsb25nIGFzIHRoZSB0YWJsZSBpcyBub3QgbXV0YXRlZCBpbiBiZXR3ZWVuLlxuICAgICAgQmV5b25kIGRldGVybWluaXNtLCBubyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IGhvdyB0aGUgY2hvaWNlIGlzIG1hZGUuIEV4cGVjdFxuICAgICAgYmlhcyB0b3dhcmQgY2VydGFpbiBoYXNoIHZhbHVlcy5cblxuICAgICAgVGhpcyBoYXNoIGJpYXMgY2FuIGxlYWQgdG8gZGVnZW5lcmF0ZSBwZXJmb3JtYW5jZSBpbiBzb21lIGNhc2VzLCBzdWNoIGFzIGNsZWFyaW5nXG4gICAgICBhIGhhc2ggdGFibGUgdXNpbmcgcmVwZWF0ZWQgW2Nob29zZV0gYW5kIFtyZW1vdmVdLiBBdCBlYWNoIGl0ZXJhdGlvbiwgZmluZGluZyB0aGVcbiAgICAgIG5leHQgZWxlbWVudCBtYXkgaGF2ZSB0byBzY2FuIGZhcnRoZXIgZnJvbSBpdHMgaW5pdGlhbCBoYXNoIHZhbHVlLiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuXG4gICgqKiBMaWtlIFtjaG9vc2VdLiBSYWlzZXMgaWYgW3RdIGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogQ2hvb3NlcyBhIHJhbmRvbSBrZXkvdmFsdWUgcGFpciBvZiBhIGhhc2ggdGFibGUuIFJldHVybnMgW05vbmVdIGlmIFt0XSBpcyBlbXB0eS5cblxuICAgICAgVGhlIGNob2ljZSBpcyBkaXN0cmlidXRlZCB1bmlmb3JtbHkgYWNyb3NzIGhhc2ggdmFsdWVzLCByYXRoZXIgdGhhbiBhY3Jvc3Mga2V5c1xuICAgICAgdGhlbXNlbHZlcy4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGNsb3NlciB0aGUga2V5cyBhcmUgdG8gZXZlbmx5IHNwYWNlZCBvdXQgaW4gdGhlXG4gICAgICB0YWJsZSwgdGhlIGNsb3NlciB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgdG8gYSB1bmlmb3JtIGNob2ljZSBvZiBrZXlzLlxuXG4gICAgICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBwcmVmZXJhYmxlIHRvIFtjaG9vc2VdIHdoZW4gbm9uZGV0ZXJtaW5pc3RpYyBjaG9pY2UgaXNcbiAgICAgIGFjY2VwdGFibGUsIGFuZCBiaWFzIHRvd2FyZCBjZXJ0YWluIGhhc2ggdmFsdWVzIGlzIHVuZGVzaXJhYmxlLiAqKVxuICB2YWwgY2hvb3NlX3JhbmRvbWx5XG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAoKiogZGVmYXVsdDogW1JhbmRvbS5TdGF0ZS5kZWZhdWx0XSAqKVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuXG4gICgqKiBMaWtlIFtjaG9vc2VfcmFuZG9tbHldLiBSYWlzZXMgaWYgW3RdIGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlX3JhbmRvbWx5X2V4blxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgKCoqIGRlZmF1bHQ6IFtSYW5kb20uU3RhdGUuZGVmYXVsdF0gKilcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogU2V0cyB0aGUgZ2l2ZW4gW2tleV0gdG8gW2RhdGFdLiAqKVxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbYWRkXSBhbmQgW2FkZF9leG5dIGxlYXZlIHRoZSB0YWJsZSB1bmNoYW5nZWQgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBwcmVzZW50LiAqKVxuICB2YWwgYWRkIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gWyBgT2sgfCBgRHVwbGljYXRlIF1cblxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gY2hhbmdlcyBbdF0ncyB2YWx1ZSBmb3IgW2tleV0gdG8gYmUgW2YgKGZpbmQgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2IpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZV9hbmRfcmV0dXJuIHQga2V5IH5mXSBpcyBbdXBkYXRlXSwgYnV0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBbZiBvXS4gKilcbiAgdmFsIHVwZGF0ZV9hbmRfcmV0dXJuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooKCdiIG9wdGlvbiAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogW21hcCB0IGZdIHJldHVybnMgYSBuZXcgdGFibGUgd2l0aCB2YWx1ZXMgcmVwbGFjZWQgYnkgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBbZl1cbiAgICAgIHRvIHRoZSBjdXJyZW50IHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIGxldCBoJyA9IEhhc2h0YmwubWFwIGggfmY6KChmdW4geCAtPiB4ICogMilbQGxvY2FsXSkgaW5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaCc7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDEyKTsgKDEsIDgpXVxuICAgICAgdn0gKilcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+ICdjKVtAbG9jYWxdKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyB0YWJsZSBieSBmaWx0ZXJpbmcgdGhlIGdpdmVuIHRhYmxlJ3MgdmFsdWVzIGJ5IFtmXTogdGhlIGtleXMgZm9yIHdoaWNoXG4gICAgICBbZl0gYXBwbGllZCB0byB0aGUgY3VycmVudCB2YWx1ZSByZXR1cm5zIFtTb21lXSBhcmUga2VwdCwgYW5kIHRob3NlIGZvciB3aGljaCBpdFxuICAgICAgcmV0dXJucyBbTm9uZV0gYXJlIGRpc2NhcmRlZC5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuZmlsdGVyX21hcCBoIH5mOigoZnVuIHggLT4gaWYgeCA+IDUgdGhlbiBTb21lIHggZWxzZSBOb25lKVtAbG9jYWxdKVxuICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgNildXG4gICAgICB2fSAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+ICdjIG9wdGlvbilbQGxvY2FsXSkgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooKCdhIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogUmV0dXJucyBuZXcgdGFibGVzIHdpdGggYm91bmQgdmFsdWVzIHBhcnRpdGlvbmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZFxuICAgICAgdmFsdWVzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogUmV0dXJucyBhIHBhaXIgb2YgdGFibGVzIFsodDEsIHQyKV0sIHdoZXJlIFt0MV0gY29udGFpbnMgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGVcbiAgICAgIGluaXRpYWwgdGFibGUgd2hpY2ggc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXSwgYW5kIFt0Ml0gY29udGFpbnMgdGhlIHJlc3QuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fdGZdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBbZmluZF9vcl9hZGQgdCBrIH5kZWZhdWx0XSByZXR1cm5zIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBrZXkgW2tdIGlmIGl0IGlzIGluIHRoZVxuICAgICAgdGFibGUgW3RdLCBhbmQgb3RoZXJ3aXNlIGFzc2lnbnMgW2tdIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBbZGVmYXVsdCAoKV0uICopXG4gIHZhbCBmaW5kX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCh1bml0IC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gICgqKiBMaWtlIFtmaW5kX29yX2FkZF0gYnV0IFtkZWZhdWx0XSB0YWtlcyB0aGUga2V5IGFzIGFuIGFyZ3VtZW50LiAqKVxuICB2YWwgZmluZGlfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDooKCdhIGtleSAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogW2ZpbmQgdCBrXSByZXR1cm5zIFtTb21lXSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgW2tdIGluIFt0XSwgb3IgW05vbmVdIGlmIG5vIHN1Y2hcbiAgICAgIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBbZmluZF9leG4gdCBrXSByZXR1cm5zIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgW2tdIGluIFt0XSwgb3IgcmFpc2VzIFtTdGRsaWIuTm90X2ZvdW5kXVxuICAgICAgb3IgW05vdF9mb3VuZF9zXSBpZiBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYlxuXG4gICgqKiBbZmluZF9hbmRfY2FsbCB0IGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRdXG5cbiAgICAgIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIFttYXRjaCBmaW5kIHQgayB3aXRoIFNvbWUgdiAtPiBpZl9mb3VuZCB2IHwgTm9uZSAtPiBpZl9ub3RfZm91bmQga11cblxuICAgICAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSB0aGUgb3B0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gICgqKiBKdXN0IGxpa2UgW2ZpbmRfYW5kX2NhbGxdLCBidXQgdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQgd2hpY2ggaXMgcGFzc2VkIHRvIFtpZl9mb3VuZF1cbiAgICAgIGFuZCBbaWZfbm90X2ZvdW5kXSwgc28gdGhhdCB0aGUgY2xpZW50IGNvZGUgY2FuIGF2b2lkIGFsbG9jYXRpbmcgY2xvc3VyZXMgb3IgdXNpbmdcbiAgICAgIHJlZnMgdG8gcGFzcyB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGluIGNvZGVcbiAgICAgIHdoaWNoIHRyaWVzIHRvIG1pbmltaXplIGhlYXAgYWxsb2NhdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOigoJ2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICAoKiogW2ZpbmRfYW5kX3JlbW92ZSB0IGtdIHJldHVybnMgU29tZSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgayBpbiB0IGFuZCByZW1vdmVzIGl0LFxuICAgICAgb3IgTm9uZSBpcyBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9hbmRfcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIE1lcmdlcyB0d28gaGFzaHRhYmxlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiBbbWVyZ2UgZiBoMSBoMl0gaGFzIGFzIGtleXMgdGhlIHNldCBvZiBhbGwgW2tdIGluIHRoZSB1bmlvbiBvZiB0aGVcbiAgICAgIHNldHMgb2Yga2V5cyBvZiBbaDFdIGFuZCBbaDJdIGZvciB3aGljaCBbZChrKV0gaXMgbm90IE5vbmUsIHdoZXJlOlxuXG4gICAgICBkKGspID1cbiAgICAgIC0gW2YgfmtleTprIChgTGVmdCBkMSldXG4gICAgICAgIGlmIFtrXSBpbiBbaDFdIG1hcHMgdG8gZDEsIGFuZCBbaDJdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYFJpZ2h0IGQyKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMl0gbWFwcyB0byBkMiwgYW5kIFtoMV0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgQm90aCAoZDEsIGQyKSldXG4gICAgICAgIG90aGVyd2lzZSwgd2hlcmUgW2tdIGluIFtoMV0gbWFwcyB0byBbZDFdIGFuZCBba10gaW4gW2gyXSBtYXBzIHRvIFtkMl0uXG5cbiAgICAgIEVhY2gga2V5IFtrXSBpcyBtYXBwZWQgdG8gYSBzaW5nbGUgcGllY2Ugb2YgZGF0YSBbeF0sIHdoZXJlIFtkKGspID0gU29tZSB4XS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ2EpIHRcbiAgICAtPiAoJ2ssICdiKSB0XG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIGtleSAtPiBbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdiIHwgYEJvdGggb2YgJ2EgKiAnYiBdIC0+ICdjIG9wdGlvbilcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICdjKSB0XG5cblxuICAoKiogRXZlcnkgW2tleV0gaW4gW3NyY10gd2lsbCBiZSByZW1vdmVkIG9yIHNldCBpbiBbZHN0XSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgb2YgW2ZdLiAqKVxuICB2YWwgbWVyZ2VfaW50b1xuICAgIDogIHNyYzooJ2ssICdhKSB0XG4gICAgLT4gZHN0OignaywgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiAnYSAtPiAnYiBvcHRpb24gLT4gJ2IgTWVyZ2VfaW50b19hY3Rpb24udClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGtleXMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgZGF0YSBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG5cbiAgKCoqIFtmaWx0ZXJfaW5wbGFjZSB0IH5mXSByZW1vdmVzIGFsbCB0aGUgZWxlbWVudHMgZnJvbSBbdF0gdGhhdCBkb24ndCBzYXRpc2Z5IFtmXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzX2lucGxhY2UgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbbWFwX2lucGxhY2UgdCB+Zl0gYXBwbGllcyBbZl0gdG8gYWxsIGVsZW1lbnRzIGluIFt0XSwgdHJhbnNmb3JtaW5nIHRoZW0gaW5cbiAgICAgIHBsYWNlLiAqKVxuICB2YWwgbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+ICdiKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIG1hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZmlsdGVyX21hcF9pbnBsYWNlXSBjb21iaW5lcyB0aGUgZWZmZWN0cyBvZiBbbWFwX2lucGxhY2VdIGFuZCBbZmlsdGVyX2lucGxhY2VdLiAqKVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX21hcGlfaW5wbGFjZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtlcXVhbCBmIHQxIHQyXSBhbmQgW3NpbWlsYXIgZiB0MSB0Ml0gYm90aCByZXR1cm4gdHJ1ZSBpZmYgW3QxXSBhbmQgW3QyXSBoYXZlIHRoZVxuICAgICAgc2FtZSBrZXlzIGFuZCBmb3IgYWxsIGtleXMgW2tdLCBbZiAoZmluZF9leG4gdDEgaykgKGZpbmRfZXhuIHQyIGspXS4gIFtlcXVhbF0gYW5kXG4gICAgICBbc2ltaWxhcl0gb25seSBkaWZmZXIgaW4gdGhlaXIgdHlwZXMuICopXG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuXG4gIHZhbCBzaW1pbGFyIDogKCdiMSAtPiAnYjIgLT4gYm9vbCkgLT4gKCdhLCAnYjEpIHQgLT4gKCdhLCAnYjIpIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCAoa2V5LCBkYXRhKSBwYWlycyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgbGlzdFxuXG5cbiAgKCoqIFtyZW1vdmVfaWZfemVyb10ncyBkZWZhdWx0IGlzIFtmYWxzZV0uICopXG4gIHZhbCBpbmNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gIHZhbCBkZWNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE11bHRpID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gICgqKiBbYWRkX211bHRpIHQgfmtleSB+ZGF0YV0gaWYgW2tleV0gaXMgcHJlc2VudCBpbiB0aGUgdGFibGUgdGhlbiBjb25zXG4gICAgICBbZGF0YV0gb24gdGhlIGxpc3QsIG90aGVyd2lzZSBhZGQgW2tleV0gd2l0aCBhIHNpbmdsZSBlbGVtZW50IGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW3JlbW92ZV9tdWx0aSB0IGtleV0gdXBkYXRlcyB0aGUgdGFibGUsIHJlbW92aW5nIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGJvdW5kIHRvXG4gICAgICBba2V5XS4gSWYgdGhlIGxpc3QgaGFzIG9ubHkgb25lIGVsZW1lbnQgKG9yIGlzIGVtcHR5KSB0aGVuIHRoZSBiaW5kaW5nIGlzXG4gICAgICByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCBfIGxpc3QpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogW2ZpbmRfbXVsdGkgdCBrZXldIHJldHVybnMgdGhlIGVtcHR5IGxpc3QgaWYgW2tleV0gaXMgbm90IHByZXNlbnQgaW4gdGhlIHRhYmxlLFxuICAgICAgcmV0dXJucyBbdF0ncyB2YWx1ZXMgZm9yIFtrZXldIG90aGVyd2lzZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2Ega2V5IC0+ICdiIGxpc3RcbmVuZFxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ2tleSBLZXkudFxuICAtPiAnelxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ3pcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGUgOiAoJ2Ega2V5LCAnYiwgdW5pdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2Ega2V5LCAnYiBsaXN0LCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKVxuICAgICAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBncm91cFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gY29tYmluZTooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+ICgnYSwgJ2IpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiB7MiBDcmVhdG9yc30gKilcblxuICAoKiogVGhlIG1vZHVsZSB5b3UgcGFzcyB0byBbY3JlYXRlXSBtdXN0IGhhdmUgYSB0eXBlIHRoYXQgaXMgaGFzaGFibGUsIHNleHBhYmxlLCBhbmRcbiAgICAgIGNvbXBhcmFibGUuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KTs7XG4gICAgICAgIC0gOiAoaW50LCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj47O1xuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMywgXCJzb21ldGhpbmdcIik7ICgyLCBcIndoYXRldmVyXCIpXVxuICAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBXaGVyZWFzIFtvZl9hbGlzdF0gd2lsbCByZXBvcnQgW0R1cGxpY2F0ZV9rZXldIG5vIG1hdHRlciBob3cgbWFueSBkdXBzIHRoZXJlIGFyZSBpblxuICAgICAgeW91ciBsaXN0LCBbb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXSB3aWxsIHJlcG9ydCBlYWNoIGFuZCBldmVyeSBkdXBsaWNhdGUgZW50cnkuXG5cbiAgICAgIEZvciBleGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXkgMVxuXG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXlzIFsxOyAyXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQ3JlYXRlcyBhIHt7IU11bHRpfSBcIm11bHRpXCJ9IGhhc2h0YWJsZSwgaS5lLiwgYSBoYXNodGFibGUgd2hlcmUgZWFjaCBrZXkgcG9pbnRzIHRvIGFcbiAgICAgIGxpc3QgcG90ZW50aWFsbHkgY29udGFpbmluZyBtdWx0aXBsZSB2YWx1ZXMuIFNvIGluc3RlYWQgb2Ygc2hvcnQtY2lyY3VpdGluZyB3aXRoIGFcbiAgICAgIFtgRHVwbGljYXRlX2tleV0gdmFyaWFudCBvbiBkdXBsaWNhdGVzLCBhcyBpbiBbb2ZfYWxpc3RdLCBbb2ZfYWxpc3RfbXVsdGldIGZvbGRzXG4gICAgICB0aG9zZSB2YWx1ZXMgaW50byBhIGxpc3QgZm9yIHRoZSBnaXZlbiBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBJbnQpIFsoMSwgXCJhXCIpOyAoMSwgXCJiXCIpOyAoMiwgXCJjXCIpOyAoMiwgXCJkXCIpXTs7XG4gICAgICB2YWwgaCA6IChpbnQsIHN0cmluZyBsaXN0KSBIYXNodGJsLnQgPSA8YWJzdHI+XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgIC0gOiBzdHJpbmcgbGlzdCA9IFtcImJcIjsgXCJhXCJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gICgqKiBBcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3IgbGlzdF0gdG8gY3JlYXRlIHRoZVxuICAgICAgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlLlxuXG4gICAgICB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXVxuICAgICAgXX1cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIEhhc2h0YmwuY3JlYXRlX21hcHBlZCAobW9kdWxlIEludClcbiAgICAgICAgICAgIH5nZXRfa2V5OigoZnVuIHggLT4geClbQGxvY2FsXSlcbiAgICAgICAgICAgIH5nZXRfZGF0YTooKGZ1biB4IC0+IHggKyAxKVtAbG9jYWxdKVxuICAgICAgICAgICBbMTsgMjsgM107O1xuICAgICAgICB2YWwgaCA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIGludCkgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuXG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBtYXRjaCBoIHdpdGhcbiAgICAgICAgICB8IGBPayB4IC0+IHhcbiAgICAgICAgICB8IGBEdXBsaWNhdGVfa2V5cyBfIC0+IGZhaWx3aXRoIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgICAtIDogaW50ID0gMlxuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdFxuXG4gICgqKiBMaWtlIFtjcmVhdGVfbWFwcGVkXSwgYXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyXG4gICAgICBsaXN0XSB0byBjcmVhdGUgdGhlIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZSAtLVxuICAgICAgYW5kIHRoZW4sIGxpa2UgW2FkZF9tdWx0aV0sIGZvbGRzIHRvZ2V0aGVyIHZhbHVlcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUga2V5cy4gSGVyZSxcbiAgICAgIHRob3VnaCwgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBmb2xkaW5nIGlzIGdpdmVuIGJ5IFtjb21iaW5lXSAoaW5zdGVhZCBvZiBqdXN0XG4gICAgICBiZWluZyBhIFtjb25zXSkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLmdyb3VwIChtb2R1bGUgSW50KVxuICAgICAgICAgICB+Z2V0X2tleTooKGZ1biB4IC0+IHggLyAyKVtAbG9jYWxdKVxuICAgICAgICAgICB+Z2V0X2RhdGE6KChmdW4geCAtPiB4KVtAbG9jYWxdKVxuICAgICAgICAgICB+Y29tYmluZTooKGZ1biB4IHkgLT4geCAqIHkpW0Bsb2NhbF0pXG4gICAgICAgICAgICBbIDE7IDI7IDM7IDRdXG4gICAgICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWygyLCA0KTsgKDEsIDYpOyAoMCwgMSldXG4gICAgICAgdn0gKilcbiAgdmFsIGdyb3VwXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gY29tYmluZTooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBzaWdcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuXG4gIHR5cGUgKCEnYSwgISdiKSB0XG5cbiAgKCoqIFdlIHByb3ZpZGUgYSBbc2V4cF9vZl90XSBidXQgbm90IGEgW3Rfb2Zfc2V4cF0gZm9yIHRoaXMgdHlwZSBiZWNhdXNlIG9uZSBuZWVkcyB0byBiZVxuICAgICAgZXhwbGljaXQgYWJvdXQgdGhlIGhhc2ggYW5kIGNvbXBhcmlzb24gZnVuY3Rpb25zIHVzZWQgd2hlbiBjcmVhdGluZyBhIGhhc2h0YWJsZS5cbiAgICAgIE5vdGUgdGhhdCBbSGFzaHRibC5Qb2x5LnRdIGRvZXMgaGF2ZSBbW0BAZGVyaXZpbmcgc2V4cF1dLCBhbmQgdXNlcyBPQ2FtbCdzIGJ1aWx0LWluXG4gICAgICBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGFuZCBhbmQgcG9seW1vcnBoaWMgaGFzaGluZy4gKilcbiAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cC50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ICgqKiBAaW5saW5lICopXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgKCoqIEBpbmxpbmUgKilcblxuXG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAoKiogQGlubGluZSAqKVxuXG4gIHZhbCBoYXNoYWJsZV9zIDogKCdrZXksIF8pIHQgLT4gJ2tleSBLZXkudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgOiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuXG4gIHZhbCBoYXNoYWJsZSA6ICdhIEhhc2hhYmxlLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdrLCAndikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNodGJsID0gc2lnXG4gICgqKiBBIGhhc2ggdGFibGUgaXMgYSBtdXRhYmxlIGRhdGEgc3RydWN0dXJlIGltcGxlbWVudGluZyBhIG1hcCBiZXR3ZWVuIGtleXMgYW5kIHZhbHVlcy5cbiAgICAgIEl0IHN1cHBvcnRzIGNvbnN0YW50LXRpbWUgbG9va3VwIGFuZCBpbi1wbGFjZSBtb2RpZmljYXRpb24uXG5cbiAgICAgIHsxIFVzYWdlfVxuXG4gICAgICBBcyBhIHNpbXBsZSBleGFtcGxlLCB3ZSdsbCBjcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggc3RyaW5nIGtleXMgdXNpbmcgdGhlXG4gICAgICB7eyFjcmVhdGV9W2NyZWF0ZV19IGNvbnN0cnVjdG9yLCB3aGljaCBleHBlY3RzIGEgbW9kdWxlIGRlZmluaW5nIHRoZSBrZXkncyB0eXBlOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgaCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgU3RyaW5nKTs7XG4gICAgICAgIHZhbCBoIDogKHN0cmluZywgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+XG4gICAgICBdfVxuXG4gICAgICBXZSBjYW4gc2V0IHRoZSB2YWx1ZXMgb2YgaW5kaXZpZHVhbCBrZXlzIHdpdGgge3shc2V0fVtzZXRdfS4gSWYgdGhlIGtleSBhbHJlYWR5IGhhc1xuICAgICAgYSB2YWx1ZSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbi5cblxuICAgICAge3ZcbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjU7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiYmFyXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fVxuXG4gICAgICBXZSBjYW4gYWNjZXNzIHZhbHVlcyBieSBrZXksIG9yIGR1bXAgYWxsIG9mIHRoZSBoYXNoIHRhYmxlJ3MgZGF0YTpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuZmluZCBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCBvcHRpb24gPSBTb21lIDZcblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCA9IDZcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCA2KTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuICAgICAge3shY2hhbmdlfVtjaGFuZ2VdfSBsZXRzIHVzIGNoYW5nZSBhIGtleSdzIHZhbHVlIGJ5IGFwcGx5aW5nIHRoZSBnaXZlbiBmdW5jdGlvbjpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuY2hhbmdlIGggXCJmb29cIiAoZnVuIHggLT5cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBTb21lICh4ICogMilcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgKTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgMTIpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG5cbiAgICAgIFdlIGNhbiB1c2Uge3shbWVyZ2V9W21lcmdlXX0gdG8gbWVyZ2UgdHdvIGhhc2h0YWJsZXMgd2l0aCBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gICAgICBob3cgd2UgY2hvb3NlIHZhbHVlcyB3aGVuIGEga2V5IGlzIHByZXNlbnQgaW4gdGhlIGZpcnN0IChcImxlZnRcIikgaGFzaHRhYmxlLCB0aGVcbiAgICAgIHNlY29uZCAoXCJyaWdodFwiKSwgb3IgYm90aC4gSGVyZSwgd2UnbGwgY29ucyB0aGUgdmFsdWVzIHdoZW4gYm90aCBoYXNodGFibGVzIGhhdmUgYVxuICAgICAga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn1cblxuICAgICAgezEgSW50ZXJmYWNlfSAqKVxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N1Ym1vZHVsZXMgKCoqIEBpbmxpbmUgKilcblxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBBY2Nlc3NvcnNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBDcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBNdWx0aSA9IE11bHRpXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IFNfd2l0aG91dF9zdWJtb2R1bGVzXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gTWVyZ2VfaW50b19hY3Rpb25cblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9ICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgbW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICAgIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gaW50IEhhc2h0YmwuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IChTdHJpbmcudCwgaW50KSBIYXNodGJsLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgSGFzaHRibC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZFxuICAgICAgc3ludGF4IGRvZXNuJ3QgKGJlY2F1c2UgW3Rfb2Zfc2V4cF0gZG9lc24ndCBrbm93IHdoYXQgY29tcGFyaXNvbi9oYXNoIGZ1bmN0aW9uIHRvXG4gICAgICB1c2UpLiAqKVxuICBtb2R1bGUgTSAoSyA6IFQuVCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKi8qKilcblxuICAoKl8gU2VlIHRoZSBKYW5lIFN0cmVldCBTdHlsZSBHdWlkZSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgW1ByaXZhdGVdIHN1Ym1vZHVsZXM6XG5cbiAgICBodHRwczovL29wZW5zb3VyY2UuamFuZXN0cmVldC5jb20vc3RhbmRhcmRzLyNwcml2YXRlLXN1Ym1vZHVsZXMgKilcbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gICAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICAgIHZhbCBoYXNoYWJsZSA6ICgna2V5LCBfKSB0IC0+ICdrZXkgSGFzaGFibGUudFxuICBlbmRcbmVuZFxuIiwiKCogQSBmZXcgc21hbGwgdGhpbmdzIGNvcGllZCBmcm9tIG90aGVyIHBhcnRzIG9mIEJhc2UgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiB1cywgc28gd2VcbiAgIGNhbid0IHVzZSB0aGVtLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuKCogSXRzIGltcG9ydGFudCB0aGF0IEVtcHR5IGhhdmUgbm8gYXJncy4gSXQncyB0ZW1wdGluZyB0byBtYWtlIHRoaXMgdHlwZSBhIHJlY29yZFxuICAgKGUuZy4gdG8gaG9sZCB0aGUgY29tcGFyZSBmdW5jdGlvbiksIGJ1dCBhIGxvdCBvZiBtZW1vcnkgaXMgc2F2ZWQgYnkgRW1wdHkgYmVpbmcgYW5cbiAgIGltbWVkaWF0ZSwgc2luY2UgYWxsIHVudXNlZCBidWNrZXRzIGluIHRoZSBoYXNodGJsIGRvbid0IHVzZSBhbnkgbWVtb3J5IChiZXNpZGVzIHRoZVxuICAgYXJyYXkgY2VsbCkgKilcbnR5cGUgKCdrLCAndikgdCA9XG4gIHwgRW1wdHlcbiAgfCBOb2RlIG9mXG4gICAgICB7IG11dGFibGUgbGVmdCA6ICgnaywgJ3YpIHRcbiAgICAgIDsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgICA7IG11dGFibGUgcmlnaHQgOiAoJ2ssICd2KSB0XG4gICAgICB9XG4gIHwgTGVhZiBvZlxuICAgICAgeyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIH1cblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0OyByaWdodCA9IF8gfSAtPiBoZWlnaHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgY29tcGFyZSA9XG4gIGxldCBsZWdhbF9sZWZ0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSBsZWZ0X2tleSBrZXkgPCAwKVxuICBpblxuICBsZXQgbGVnYWxfcmlnaHRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgcmlnaHRfa2V5IGtleSA+IDApXG4gIGluXG4gIGxldCByZWMgaW52ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IHwgTGVhZiBfIC0+ICgpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gazsgdmFsdWUgPSBfOyBoZWlnaHQgPSBoOyByaWdodCB9IC0+XG4gICAgICBsZXQgaGwsIGhyID0gaGVpZ2h0IGxlZnQsIGhlaWdodCByaWdodCBpblxuICAgICAgaW52IGxlZnQ7XG4gICAgICBpbnYgcmlnaHQ7XG4gICAgICBsZWdhbF9sZWZ0X2tleSBrIGxlZnQ7XG4gICAgICBsZWdhbF9yaWdodF9rZXkgayByaWdodDtcbiAgICAgIGFzc2VydCAoaCA9IEludC5tYXggaGwgaHIgKyAxKTtcbiAgICAgIGFzc2VydCAoYWJzIChobCAtIGhyKSA8PSAyKVxuICBpblxuICBpbnZcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCB+Y29tcGFyZSA9IGludmFyaWFudCBjb21wYXJlIHRcblxuKCogSW4gdGhlIGZvbGxvd2luZyBjb21tZW50cyxcbiAgICd0IGlzIGJhbGFuY2VkJyBtZWFucyB0aGF0ICdpbnZhcmlhbnQgdCcgZG9lcyBub3RcbiAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoaXMgaW1wbGllcyBvZiBjb3Vyc2UgdGhhdCBlYWNoIG5vZGUncyBoZWlnaHQgZmllbGQgaXNcbiAgIGNvcnJlY3QuXG4gICAndCBpcyBiYWxhbmNlYWJsZScgbWVhbnMgdGhhdCBoZWlnaHQgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIG9mIHRcbiAgIGRpZmZlciBieSBhdCBtb3N0IDMuICopXG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGhhdmUgY29ycmVjdCBoZWlnaHRzXG4gICBAcG9zdDogb3V0cHV0IGhhcyB0aGUgY29ycmVjdCBoZWlnaHQgKilcbmxldCB1cGRhdGVfaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gb2xkX2hlaWdodDsgcmlnaHQgfSBhcyB4KSAtPlxuICAgIGxldCBuZXdfaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IGxlZnQpIChoZWlnaHQgcmlnaHQpICsgMSBpblxuICAgIGlmIG5ld19oZWlnaHQgPD4gb2xkX2hlaWdodCB0aGVuIHguaGVpZ2h0IDwtIG5ld19oZWlnaHRcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGFyZSBiYWxhbmNlZFxuICAgQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHBvc3Q6IG91dHB1dCBpcyBiYWxhbmNlZCAoaW4gcGFydGljdWxhciwgaGVpZ2h0IGlzIGNvcnJlY3QpICopXG5sZXQgYmFsYW5jZSB0cmVlID1cbiAgbWF0Y2ggdHJlZSB3aXRoXG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gdHJlZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHJvb3Rfbm9kZSkgLT5cbiAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdFxuICAgIGFuZCBociA9IGhlaWdodCByaWdodCBpblxuICAgICgqICsgMiBpcyBjcml0aWNhbGx5IGltcG9ydGFudCwgbG93ZXJpbmcgaXQgdG8gMSB3aWxsIGJyZWFrIHRoZSBMZWFmXG4gICAgICAgYXNzdW1wdGlvbnMgaW4gdGhlIGNvZGUgYmVsb3csIGFuZCB3aWxsIGZvcmNlIHVzIHRvIHByb21vdGUgbGVhZiBub2RlcyBpblxuICAgICAgIHRoZSBiYWxhbmNlIHJvdXRpbmUuIEl0J3MgYWxzbyBmYXN0ZXIsIHNpbmNlIGl0IHdpbGwgYmFsYW5jZSBsZXNzIG9mdGVuLlxuICAgICAgIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgZGVsaWNhdGUuICBUaGUgdXBkYXRlX2hlaWdodCBjYWxscyBtdXN0XG4gICAgICAgb2NjdXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNpbmNlIHVwZGF0ZV9oZWlnaHQgYXNzdW1lcyBpdHMgY2hpbGRyZW4gaGF2ZVxuICAgICAgIHRoZSBjb3JyZWN0IGhlaWdodHMuICAqKVxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICgqIEl0IGNhbm5vdCBiZSBhIGxlYWYsIGJlY2F1c2UgZXZlbiBpZiByaWdodCBpcyBlbXB0eSwgYSBsZWFmXG4gICAgICAgICBpcyBvbmx5IGhlaWdodCAxICopXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IGxlZnRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIGxlZnRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxlZnRfbm9kZV9sZWZ0ID49IGhlaWdodCBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgbGVmdClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogaWYgcmlnaHQgaXMgYSBsZWFmLCB0aGVuIGxlZnQgbXVzdCBiZSBlbXB0eS4gVGhhdCBtZWFuc1xuICAgICAgICAgICAgIGhlaWdodCBpcyAyLiBFdmVuIGlmIGhyIGlzIGVtcHR5IHdlIHN0aWxsIGNhbid0IGdldCBoZXJlLiAqKVxuICAgICAgICAgIG1hdGNoIGxlZnRfbm9kZV9yaWdodCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IGxyX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBscl9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBscl9ub2RlKSAtPlxuICAgICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIGxyX2xlZnQ7XG4gICAgICAgICAgICByb290X25vZGUubGVmdCA8LSBscl9yaWdodDtcbiAgICAgICAgICAgIGxyX25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICAgIGxyX25vZGUubGVmdCA8LSBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgICBsZWZ0X25vZGVfcmlnaHQpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHJpZ2h0IGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IHJpZ2h0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyByaWdodF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcmlnaHRfbm9kZV9yaWdodCA+PSBoZWlnaHQgcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgcmlnaHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgICAgIG1hdGNoIHJpZ2h0X25vZGVfbGVmdCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IHJsX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBybF9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBybF9ub2RlKSAtPlxuICAgICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHJsX3JpZ2h0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJsX2xlZnQ7XG4gICAgICAgICAgICBybF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICAgIHJsX25vZGUucmlnaHQgPC0gcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgICByaWdodF9ub2RlX2xlZnQpKVxuICAgIGVsc2UgKFxuICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgdHJlZSlcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfbGVmdCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIGxlZnQgdHJlZSB0aGVuICgpIGVsc2Ugci5sZWZ0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChsZWZ0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X3JpZ2h0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgcmlnaHQgdHJlZSB0aGVuICgpIGVsc2Ugci5yaWdodCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0IGlzIGJhbGFuY2VkLlxuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlZCwgd2l0aCBuZXcgbm9kZSBpbnNlcnRlZFxuICAgQHBvc3Q6ICFhZGRlZCA9IHRydWUgaWZmIHRoZSBzaGFwZSBvZiB0aGUgaW5wdXQgdHJlZSBjaGFuZ2VkLiAgKilcbmxldCBhZGQgPVxuICBsZXQgcmVjIGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IExlYWYgKHsga2V5ID0gayc7IHZhbHVlID0gXyB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaycgayBpblxuICAgICAgKCogVGhpcyBjb21wYXJlIGlzIHJldmVyc2VkIG9uIHB1cnBvc2UsIHdlIGFyZSBwcmV0ZW5kaW5nXG4gICAgICAgICB0aGF0IHRoZSBsZWFmIHdhcyBqdXN0IGluc2VydGVkIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheVxuICAgICAgICAgcm91bmQsIHRoYXQgd2F5IHdlIG9ubHkgYWxsb2NhdGUgb25lIG5vZGUuICopXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2O1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICAgIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gTm9kZSB7IGxlZnQgPSB0OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gRW1wdHkgfVxuICAgICAgICBlbHNlIE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSB0IH0pXG4gICAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiBzZXRfbGVmdCB0IChhZGQgbGVmdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KVxuICAgICAgZWxzZSBzZXRfcmlnaHQgdCAoYWRkIHJpZ2h0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpO1xuICAgICAgdFxuICBpblxuICBmdW4gdCB+cmVwbGFjZSB+Y29tcGFyZSB+YWRkZWQgfmtleSB+ZGF0YSAtPlxuICAgIGxldCB0ID0gYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGtleSBkYXRhIGluXG4gICAgaWYgIWFkZGVkIHRoZW4gYmFsYW5jZSB0IGVsc2UgdFxuOztcblxubGV0IHJlYyBmaXJzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IGw7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gZmlyc3QgbFxuOztcblxubGV0IHJlYyBsYXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHIgfSAtPiBsYXN0IHJcbjs7XG5cblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWMgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX25vdF9mb3VuZFxuICA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2UgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2VcbiAgICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgKGlmIGMgPCAwIHRoZW4gbGVmdCBlbHNlIHJpZ2h0KVxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICBrXG4gICAgICAgIGFyZzFcbiAgICAgICAgYXJnMlxuICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIGRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIGRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIGRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gPVxuICBsZXQgaWZfZm91bmQgXyA9IHRydWUgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gZmFsc2UgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IHJlbW92ZSA9XG4gIGxldCByZWMgbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIF8gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBtaW5fZWx0IGxlZnRcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTGVhZiBfIC0+IEVtcHR5ICgqIFRoaXMgbXVzdCBiZSB0aGUgcm9vdCAqKVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+IHJpZ2h0XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT5cbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSBFbXB0eTtcbiAgICAgIHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgKHJlbW92ZV9taW5fZWx0IGxlZnQpO1xuICAgICAgdHJlZVxuICBpblxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgdHJlZSA9IG1pbl9lbHQgdDIgaW5cbiAgICAgIChtYXRjaCB0cmVlIHdpdGhcbiAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgICAgICBsZXQgdDIgPSBiYWxhbmNlIChyZW1vdmVfbWluX2VsdCB0MikgaW5cbiAgICAgICAgIE5vZGVcbiAgICAgICAgICAgeyBsZWZ0ID0gdDFcbiAgICAgICAgICAgOyBrZXkgPSBrXG4gICAgICAgICAgIDsgdmFsdWUgPSB2XG4gICAgICAgICAgIDsgaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IHQxKSAoaGVpZ2h0IHQyKSArIDFcbiAgICAgICAgICAgOyByaWdodCA9IHQyXG4gICAgICAgICAgIH1cbiAgICAgICB8IE5vZGUgXyBhcyBub2RlIC0+XG4gICAgICAgICBzZXRfcmlnaHQgbm9kZSAocmVtb3ZlX21pbl9lbHQgdDIpO1xuICAgICAgICAgc2V0X2xlZnQgbm9kZSB0MTtcbiAgICAgICAgIG5vZGUpXG4gIGluXG4gIGxldCByZWMgcmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGsgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICBFbXB0eVxuICAgIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgRW1wdHkpXG4gICAgICBlbHNlIChcbiAgICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgICAgdClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIG1lcmdlIGxlZnQgcmlnaHQpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc2V0X2xlZnQgdCAocmVtb3ZlIGxlZnQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHNldF9yaWdodCB0IChyZW1vdmUgcmlnaHQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICBpblxuICBmdW4gdCB+cmVtb3ZlZCB+Y29tcGFyZSBrIC0+IGJhbGFuY2UgKHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrKVxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBpbml0XG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhIGluaXRcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBFbXB0eVxuICAgICAgfSAtPiBmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gRW1wdHlcbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9IH1cbiAgICAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH07IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9XG4gICAgLT4gZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSkgfmZcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgaXRlciBsZWZ0IH5mO1xuICAgIGYgfmtleSB+ZGF0YTtcbiAgICBpdGVyIHJpZ2h0IH5mXG47O1xuXG5sZXQgcmVjIG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmICh7IGtleTsgdmFsdWUgfSBhcyB0KSAtPiB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5OyB2YWx1ZTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyB0KSAtPlxuICAgIG1hcGlfaW5wbGFjZSB+ZiBsZWZ0O1xuICAgIHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlO1xuICAgIG1hcGlfaW5wbGFjZSB+ZiByaWdodFxuOztcblxubGV0IGNob29zZV9leG4gPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltBdmx0cmVlLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSlcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZTsgXyB9IHwgTm9kZSB7IGtleTsgdmFsdWU7IF8gfSAtPiBrZXksIHZhbHVlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2h0YmxfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXkuU1xuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IGhhc2hfcGFyYW0gPSBIYXNoYWJsZS5oYXNoX3BhcmFtXG5sZXQgaGFzaCA9IEhhc2hhYmxlLmhhc2hcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG50eXBlICgnaywgJ3YpIHQgPVxuICB7IG11dGFibGUgdGFibGUgOiAoJ2ssICd2KSBBdmx0cmVlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IGdyb3d0aF9hbGxvd2VkIDogYm9vbFxuICA7IGhhc2hhYmxlIDogJ2sgSGFzaGFibGUudFxuICA7IG11dGFibGUgbXV0YXRpb25fYWxsb3dlZCA6IGJvb2wgKCogU2V0IGR1cmluZyBhbGwgaXRlcmF0aW9uIG9wZXJhdGlvbnMgKilcbiAgfVxuXG50eXBlICdhIGtleSA9ICdhXG5cbmxldCBzZXhwX29mX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3RcbmxldCBjb21wYXJlX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlXG5cbmxldCBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0ID1cbiAgaWYgbm90IHQubXV0YXRpb25fYWxsb3dlZCB0aGVuIGZhaWx3aXRoIFwiSGFzaHRibDogbXV0YXRpb24gbm90IGFsbG93ZWQgZHVyaW5nIGl0ZXJhdGlvblwiXG47O1xuXG5sZXQgd2l0aG91dF9tdXRhdGluZyB0IGYgPVxuICBpZiB0Lm11dGF0aW9uX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICB4XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHJhaXNlIGV4bilcbiAgZWxzZSBmICgpXG47O1xuXG4oKiogSW50ZXJuYWxseSB1c2UgYSBtYXhpbXVtIHNpemUgdGhhdCBpcyBhIHBvd2VyIG9mIDIuIFJldmVyc2VzIHRoZSBhYm92ZSB0byBmaW5kIHRoZVxuICAgIGZsb29yIHBvd2VyIG9mIDIgYmVsb3cgdGhlIHN5c3RlbSBtYXggYXJyYXkgbGVuZ3RoICopXG5sZXQgbWF4X3RhYmxlX2xlbmd0aCA9IEludC5mbG9vcl9wb3cyIEFycmF5Lm1heF9sZW5ndGhcblxuKCogVGhlIGRlZmF1bHQgc2l6ZSBpcyBjaG9zZW4gdG8gYmUgMCAoYXMgb3Bwb3NlZCB0byAxMjggYXMgaXQgd2FzIGJlZm9yZSkgYmVjYXVzZTpcbiAgIC0gMTI4IGNhbiBjcmVhdGUgc3Vic3RhbnRpYWwgbWVtb3J5IG92ZXJoZWFkICh4MTApIHdoZW4gY3JlYXRpbmcgbWFueSB0YWJsZXMsIG1vc3RcbiAgICAgb2Ygd2hpY2ggYXJlIG5vdCBiaWcgKHNheSwgaWYgeW91IGhhdmUgYSBoYXNodGJsIG9mIGhhc2h0YmwpLiBBbmQgbWVtb3J5IG92ZXJoZWFkIGlzXG4gICAgIG5vdCB0aGF0IGVhc3kgdG8gcHJvZmlsZS5cbiAgIC0gaWYgYSBoYXNodGJsIGlzIGdvaW5nIHRvIGdyb3csIGl0J3Mgbm90IGNsZWFyIHdoeSAxMjggaXMgbWFya2VkbHkgYmV0dGVyIHRoYW4gb3RoZXJcbiAgICAgc2l6ZXMgKGlmIHlvdSBnb2luZyB0byBzdGljayAxMDAwIGVsZW1lbnRzLCB5b3UncmUgZ29pbmcgdG8gZ3JvdyB0aGUgaGFzaHRhYmxlIG9uY2VcbiAgICAgb3IgdHdpY2UgYW55d2F5KVxuICAgLSBpbiBvdGhlciBsYW5ndWFnZXMgKGxpa2UgcnVzdCwgcHl0aG9uLCBhbmQgYXBwYXJlbnRseSBnbyksIHRoZSBkZWZhdWx0IGlzIGFsc28gYVxuICAgICBzbWFsbCBzaXplLiAqKVxubGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMCkgfmhhc2hhYmxlICgpID1cbiAgbGV0IHNpemUgPSBJbnQubWluIChJbnQubWF4IDEgc2l6ZSkgbWF4X3RhYmxlX2xlbmd0aCBpblxuICBsZXQgc2l6ZSA9IEludC5jZWlsX3BvdzIgc2l6ZSBpblxuICB7IHRhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBBdmx0cmVlLmVtcHR5XG4gIDsgbGVuZ3RoID0gMFxuICA7IGdyb3d0aF9hbGxvd2VkXG4gIDsgaGFzaGFibGVcbiAgOyBtdXRhdGlvbl9hbGxvd2VkID0gdHJ1ZVxuICB9XG47O1xuXG4oKiogU3VwcGxlbWVudGFsIGhhc2guIFRoaXMgbWF5IG5vdCBiZSBuZWNlc3NhcnksIGl0IGlzIGludGVuZGVkIGFzIGEgZGVmZW5zZSBhZ2FpbnN0IHBvb3JcbiAgICBoYXNoIGZ1bmN0aW9ucywgZm9yIHdoaWNoIHRoZSBwb3dlciBvZiAyIHNpemVkIHRhYmxlIHdpbGwgYmUgZXNwZWNpYWxseSBzZW5zaXRpdmUuXG4gICAgV2l0aCBzb21lIHRlc3Rpbmcgd2UgbWF5IGNob29zZSB0byBhZGQgaXQsIGJ1dCB0aGlzIHRhYmxlIGlzIGRlc2lnbmVkIHRvIGJlIHJvYnVzdCB0b1xuICAgIGNvbGxpc2lvbnMsIGFuZCBpbiBtb3N0IG9mIG15IHRlc3RpbmcgdGhpcyBkZWdyYWRlcyBwZXJmb3JtYW5jZS4gKilcbmxldCBfc3VwcGxlbWVudGFsX2hhc2ggaCA9XG4gIGxldCBoID0gaCBseG9yICgoaCBsc3IgMjApIGx4b3IgKGggbHNyIDEyKSkgaW5cbiAgaCBseG9yIChoIGxzciA3KSBseG9yIChoIGxzciA0KVxuOztcblxubGV0IHNsb3QgdCBrZXkgPVxuICBsZXQgaGFzaCA9IHQuaGFzaGFibGUuSGFzaGFibGUuaGFzaCBrZXkgaW5cbiAgKCogdGhpcyBpcyBhbHdheXMgbm9uLW5lZ2F0aXZlIGJlY2F1c2Ugd2UgZG8gW2xhbmRdIHdpdGggbm9uLW5lZ2F0aXZlIG51bWJlciAqKVxuICBoYXNoIGxhbmQgKEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSlcbjs7XG5cbmxldCBhZGRfd29ya2VyIHQgfnJlcGxhY2UgfmtleSB+ZGF0YSA9XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZCA9ICAocmVmIGZhbHNlKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgICgqIFRoZSBhdmwgdHJlZSBtaWdodCByZXBsYWNlIHRoZSB2YWx1ZSBbcmVwbGFjZT10cnVlXSBvciBkbyBub3RoaW5nIFtyZXBsYWNlPWZhbHNlXVxuICAgICAgIHRvIHRoZSBlbnRyeSwgaW4gdGhhdCBjYXNlIHRoZSB0YWJsZSBkaWQgbm90IGdldCBiaWdnZXIsIHNvIHdlIHNob3VsZCBub3RcbiAgICAgICBpbmNyZW1lbnQgbGVuZ3RoLCB3ZSBwYXNzIGluIHRoZSBib29sIHJlZiB0LmFkZGVkIHNvIHRoYXQgaXQgY2FuIHRlbGwgdXMgd2hldGhlclxuICAgICAgIGl0IGFkZGVkIG9yIHJlcGxhY2VkLiBXZSBkbyBpdCB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLiBTaW5jZSB0aGUgYm9vbFxuICAgICAgIGlzIGFuIGltbWVkaWF0ZSBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuICAgIEF2bHRyZWUuYWRkIH5yZXBsYWNlIHJvb3QgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIH5hZGRlZCB+a2V5IH5kYXRhXG4gIGluXG4gIGlmICFhZGRlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgKCogVGhpcyBsaXR0bGUgb3B0aW1pemF0aW9uIHNhdmVzIGEgY2FtbF9tb2RpZnkgd2hlbiB0aGUgdHJlZVxuICAgICBoYXNuJ3QgYmVlbiByZWJhbGFuY2VkLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV3X3Jvb3Qgcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgIWFkZGVkXG47O1xuXG5sZXQgbWF5YmVfcmVzaXplX3RhYmxlIHQgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgbGV0IHNob3VsZF9ncm93ID0gdC5sZW5ndGggPiBsZW4gaW5cbiAgaWYgc2hvdWxkX2dyb3cgJiYgdC5ncm93dGhfYWxsb3dlZFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FycmF5X2xlbmd0aCA9IEludC5taW4gKGxlbiAqIDIpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgICBpZiBuZXdfYXJyYXlfbGVuZ3RoID4gbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbmV3X3RhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46bmV3X2FycmF5X2xlbmd0aCBBdmx0cmVlLmVtcHR5IGluXG4gICAgICBsZXQgb2xkX3RhYmxlID0gdC50YWJsZSBpblxuICAgICAgdC50YWJsZSA8LSBuZXdfdGFibGU7XG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IGYgfmtleSB+ZGF0YSA9IGlnbm9yZSAoYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YSA6IGJvb2wpIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9sZF90YWJsZSAtIDEgZG9cbiAgICAgICAgQXZsdHJlZS5pdGVyIG9sZF90YWJsZS4oaSkgfmZcbiAgICAgIGRvbmUpKVxuOztcblxubGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBpZ25vcmUgKGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgOiBib29sKTtcbiAgbWF5YmVfcmVzaXplX3RhYmxlIHRcbjs7XG5cbmxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGFkZGVkID0gYWRkX3dvcmtlciB+cmVwbGFjZTpmYWxzZSB0IH5rZXkgfmRhdGEgaW5cbiAgaWYgYWRkZWRcbiAgdGhlbiAoXG4gICAgbWF5YmVfcmVzaXplX3RhYmxlIHQ7XG4gICAgYE9rKVxuICBlbHNlIGBEdXBsaWNhdGVcbjs7XG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICB8IGBPayAtPiAoKVxuICB8IGBEdXBsaWNhdGUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleSB0IGluXG4gICAgbGV0IGVycm9yID0gRXJyb3IuY3JlYXRlIFwiSGFzaHRibC5hZGRfZXhuIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIga2V5IHNleHBfb2Zfa2V5IGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIHQudGFibGUuKGkpIDwtIEF2bHRyZWUuZW1wdHlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gMFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDIgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMlxuICAgICAgdHJlZVxuICAgICAgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gICAgICBrZXlcbiAgICAgIH5hXG4gICAgICB+YlxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQga2V5IC0+IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBmYWxzZVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gXyB9IC0+IGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwXG4gIHwgdHJlZSAtPiBBdmx0cmVlLm1lbSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWRfb3JfcmVtb3ZlZCA9ICAocmVmIGZhbHNlKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIEF2bHRyZWUucmVtb3ZlIHJvb3QgfnJlbW92ZWQ6YWRkZWRfb3JfcmVtb3ZlZCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG4gIGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCByb290IG5ld19yb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290O1xuICBpZiAhYWRkZWRfb3JfcmVtb3ZlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGFjYyA6PSBmIH5rZXkgfmRhdGEgIWFjY1xuICAgICAgICB8IGJ1Y2tldCAtPiBhY2MgOj0gQXZsdHJlZS5mb2xkIGJ1Y2tldCB+aW5pdDohYWNjIH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgIWFjY1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICAgICAgICB8IGJ1Y2tldCAtPiBBdmx0cmVlLml0ZXIgYnVja2V0IH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT4gdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG1cbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgaXRlcl9rZXlzIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCByZWMgY2hvb3NlX25vbmVtcHR5IHRhYmxlIGkgPVxuICBsZXQgYXZsdHJlZSA9IEFycmF5LnVuc2FmZV9nZXQgdGFibGUgaSBpblxuICBpZiBBdmx0cmVlLmlzX2VtcHR5IGF2bHRyZWVcbiAgdGhlbiBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgKChpICsgMSkgbGFuZCAoQXJyYXkubGVuZ3RoIHRhYmxlIC0gMSkpXG4gIGVsc2UgQXZsdHJlZS5jaG9vc2VfZXhuIGF2bHRyZWVcbjs7XG5cbmxldCBjaG9vc2VfZXhuIHQgPVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSGFzaHRibC5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pO1xuICBjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwXG47O1xuXG5sZXQgY2hvb3NlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDApXG5cbmxldCBjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkgfnJhbmRvbV9zdGF0ZSB0ID1cbiAgbGV0IHN0YXJ0X2lkeCA9IFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChBcnJheS5sZW5ndGggdC50YWJsZSkgaW5cbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgc3RhcnRfaWR4XG47O1xuXG5sZXQgY2hvb3NlX3JhbmRvbWx5ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9yYW5kb21seV9ub25lbXB0eSB+cmFuZG9tX3N0YXRlIHQpXG47O1xuXG5sZXQgY2hvb3NlX3JhbmRvbWx5X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX3JhbmRvbWx5X2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX3JhbmRvbWx5X25vbmVtcHR5IH5yYW5kb21fc3RhdGUgdFxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IGludmFyaWFudF9kYXRhIHQgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgQXZsdHJlZS5pbnZhcmlhbnQgdC50YWJsZS4oaSkgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gIGRvbmU7XG4gIGxldCByZWFsX2xlbiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGkgLT5cbiAgICAgIGludmFyaWFudF9rZXkga2V5O1xuICAgICAgaW52YXJpYW50X2RhdGEgZGF0YTtcbiAgICAgIGkgKyAxKVxuICBpblxuICBhc3NlcnQgKHJlYWxfbGVuID0gdC5sZW5ndGgpXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgaWZfZm91bmQgdiBfID0gdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIGsgdCA9XG4gICAgcmFpc2VcbiAgICAgIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJIYXNodGJsLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgdC5oYXNoYWJsZS5zZXhwX29mX3QgayBdKSlcbiAgaW5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID0gZmluZF9hbmRfY2FsbDEgdCBrZXkgfmE6dCB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBmb3JfYWxsaSB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG5sZXQgZm9yX2FsbCB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gbm90IChmIGRhdGEpKSlcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxcbiAgXVxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOihmIH5rZXkgfmRhdGEpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBjb3B5IHQgPSBtYXAgdCB+ZjpGbi5pZFxuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IFNvbWUgbmV3X2RhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IE5vbmUgLT4gKCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGxldCB0MSA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IG5ld19kYXRhIC0+IHNldCB0MCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBTZWNvbmQgbmV3X2RhdGEgLT4gc2V0IHQxIH5rZXkgfmRhdGE6bmV3X2RhdGEpO1xuICB0MCwgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKSBcbiAgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5cbmxldCBmaW5kX29yX2FkZCB0IGlkIH5kZWZhdWx0OihkZWZhdWx0IFtAbG9jYWxdKSA9XG4gIGZpbmRfYW5kX2NhbGxcbiAgICB0XG4gICAgaWRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0ICgpIGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGlfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsXG4gICAgdFxuICAgIGlkXG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCBrZXkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpIFtAbm9udGFpbF1cbjs7XG5cbigqIFNvbWUgaGFzaHRibCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gcGVyZm9ybSB0aGlzIG1vcmUgZWZmaWNpZW50bHkgdGhhbiB0d29cbiAgIHNlcGFyYXRlIGxvb2t1cHMgKilcbmxldCBmaW5kX2FuZF9yZW1vdmUgdCBpZCA9XG4gIGxldCByZXN1bHQgPSBmaW5kIHQgaWQgaW5cbiAgaWYgT3B0aW9uLmlzX3NvbWUgcmVzdWx0IHRoZW4gcmVtb3ZlIHQgaWQ7XG4gIHJlc3VsdFxuOztcblxuXG5sZXQgY2hhbmdlIHQgaWQgfmYgPVxuICBtYXRjaCBmIChmaW5kIHQgaWQpIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB0IGlkXG4gIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXk6aWQgfmRhdGFcbjs7XG5cbmxldCB1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mID1cbiAgbGV0IGRhdGEgPSBmIChmaW5kIHQgaWQpIGluXG4gIHNldCB0IH5rZXk6aWQgfmRhdGE7XG4gIGRhdGFcbjs7XG5cbmxldCB1cGRhdGUgdCBpZCB+ZiA9IGlnbm9yZSAodXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA6IF8pXG5cbmxldCBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieSA9XG4gIGlmIHJlbW92ZV9pZl96ZXJvXG4gIHRoZW5cbiAgICBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvcHQgLT5cbiAgICAgIG1hdGNoIGJ5ICsgT3B0aW9uLnZhbHVlIG9wdCB+ZGVmYXVsdDowIHdpdGhcbiAgICAgIHwgMCAtPiBOb25lXG4gICAgICB8IG4gLT4gU29tZSBuKVxuICBlbHNlXG4gICAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGJ5XG4gICAgICB8IFNvbWUgaSAtPiBieSArIGkpXG47O1xuXG5sZXQgaW5jciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5XG5sZXQgZGVjciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5ICgtYnkpXG5cbmxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBbIGRhdGEgXVxuICAgIHwgU29tZSBsIC0+IGRhdGEgOjogbClcbjs7XG5cbmxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBbXSB8IFNvbWUgWyBfIF0gLT4gcmVtb3ZlIHQga2V5XG4gIHwgU29tZSAoXyA6OiB0bCkgLT4gc2V0IHQgfmtleSB+ZGF0YTp0bFxuOztcblxubGV0IGZpbmRfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBsIC0+IGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSB+c2l6ZSAoKSBpblxuICBsZXQgZHVwZXMgPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGlmIG1lbSByZXMga2V5IHRoZW4gZHVwZXMgOj0ga2V5IDo6ICFkdXBlcyBlbHNlIHNldCByZXMgfmtleSB+ZGF0YSk7XG4gIG1hdGNoICFkdXBlcyB3aXRoXG4gIHwgW10gLT4gYE9rIHJlc1xuICB8IGtleXMgLT4gYER1cGxpY2F0ZV9rZXlzIChMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmUga2V5cylcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIH5oYXNoYWJsZSAoKSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgYWRkX211bHRpIHJlcyB+a2V5IH5kYXRhKTtcbiAgcmVzXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0IHdpdGhcbiAgfCBgT2sgdCAtPiBgT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrIC0+IGBEdXBsaWNhdGVfa2V5IChMaXN0LmhkX2V4biBrKVxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBgT2sgdiAtPiBSZXN1bHQuT2sgdlxuICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yIFwiSGFzaHRibC5vZl9hbGlzdF9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgc2V4cF9vZl9rZXlcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgUmVzdWx0Lk9rIHYgLT4gdlxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEVycm9yLnJhaXNlIGVcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCB0b19hbGlzdCB0ID0gZm9sZCB+ZjooZnVuIH5rZXkgfmRhdGEgbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICB0XG4gIHw+IHRvX2FsaXN0XG4gIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChrMSwgXykgKGsyLCBfKSAtPiB0Lmhhc2hhYmxlLmNvbXBhcmUgazEgazIpXG4gIHw+IHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSlcbjs7XG5cbmxldCB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9XG4gIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHApIHNleHAgaW5cbiAgbWF0Y2ggb2ZfYWxpc3Qgfmhhc2hhYmxlIGFsaXN0IH5zaXplOihMaXN0Lmxlbmd0aCBhbGlzdCkgd2l0aFxuICB8IGBPayB2IC0+IHZcbiAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICBMaXN0Lml0ZXIyX2V4biBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICBpZiBoYXNoYWJsZS5jb21wYXJlIGsgazIgPSAwXG4gICAgICB0aGVuXG4gICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIkhhc2h0YmwudF9vZl9zZXhwOiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGsgdilcbiAgICAgIChrX2dyYW1tYXIgOiBrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgKHZfZ3JhbW1hciA6IHYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogKGssIHYpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG47O1xuXG5sZXQga2V5cyB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YTpfIGFjYyAtPiBrZXkgOjogYWNjKVxubGV0IGRhdGEgdCA9IGZvbGQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IGFkZF90b19ncm91cHMgZ3JvdXBzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cyA9XG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gcm93IC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgcm93IGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByb3cgaW5cbiAgICBsZXQgZGF0YSA9XG4gICAgICBtYXRjaCBmaW5kIGdyb3VwcyBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgIHwgU29tZSBvbGQgLT4gY29tYmluZSBvbGQgZGF0YVxuICAgIGluXG4gICAgc2V0IGdyb3VwcyB+a2V5IH5kYXRhKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgcm93cyA9XG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSBpblxuICBhZGRfdG9fZ3JvdXBzIHJlcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3M7XG4gIHJlc1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhOkZuLmlkIHJvd3Ncbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgbWF0Y2ggY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyB3aXRoXG4gIHwgYE9rIHQgLT4gUmVzdWx0Lk9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMga2V5cyAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiSGFzaHRibC5jcmVhdGVfd2l0aF9rZXk6IGR1cGxpY2F0ZSBrZXlzXCJcbiAgICAgICAgIFsgXCJrZXlzXCIsIHNleHBfb2ZfbGlzdCBzZXhwX29mX2tleSBrZXlzIF0pXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBPcl9lcnJvci5va19leG4gKGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MpXG47O1xuXG5sZXQgbWVyZ2UgPVxuICBsZXQgbWF5YmVfc2V0IHQgfmtleSB+ZiBkID1cbiAgICBtYXRjaCBmIH5rZXkgZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gc2V0IHQgfmtleSB+ZGF0YTp2XG4gIGluXG4gIGZ1biB0X2xlZnQgdF9yaWdodCB+ZiAtPlxuICAgIGlmIG5vdCAoSGFzaGFibGUuZXF1YWwgdF9sZWZ0Lmhhc2hhYmxlIHRfcmlnaHQuaGFzaGFibGUpXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkhhc2h0YmwubWVyZ2U6IGRpZmZlcmVudCAnaGFzaGFibGUnIHZhbHVlc1wiO1xuICAgIGxldCBuZXdfdCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmdyb3d0aF9hbGxvd2VkOnRfbGVmdC5ncm93dGhfYWxsb3dlZFxuICAgICAgICB+aGFzaGFibGU6dF9sZWZ0Lmhhc2hhYmxlXG4gICAgICAgIH5zaXplOnRfbGVmdC5sZW5ndGhcbiAgICAgICAgKClcbiAgICBpblxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9sZWZ0IChmdW4gKCkgLT5cbiAgICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9yaWdodCAoZnVuICgpIC0+XG4gICAgICAgIGl0ZXJpIHRfbGVmdCB+ZjooZnVuIH5rZXkgfmRhdGE6bGVmdCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9yaWdodCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYExlZnQgbGVmdClcbiAgICAgICAgICB8IFNvbWUgcmlnaHQgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBCb3RoIChsZWZ0LCByaWdodCkpKTtcbiAgICAgICAgaXRlcmkgdF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6cmlnaHQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfbGVmdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYFJpZ2h0IHJpZ2h0KVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICAgKCogYWxyZWFkeSBkb25lIGFib3ZlICopKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdKTtcbiAgICBuZXdfdFxuOztcblxubGV0IG1lcmdlX2ludG8gfnNyYyB+ZHN0IH5mID1cbiAgaXRlcmkgc3JjIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCBkc3RfZGF0YSA9IGZpbmQgZHN0IGtleSBpblxuICAgIGxldCBhY3Rpb24gPSB3aXRob3V0X211dGF0aW5nIGRzdCAoZnVuICgpIC0+IGYgfmtleSBkYXRhIGRzdF9kYXRhKSBpblxuICAgIG1hdGNoIChhY3Rpb24gOiBfIE1lcmdlX2ludG9fYWN0aW9uLnQpIHdpdGhcbiAgICB8IFJlbW92ZSAtPiByZW1vdmUgZHN0IGtleVxuICAgIHwgU2V0X3RvIGRhdGEgLT5cbiAgICAgIChtYXRjaCBkc3RfZGF0YSB3aXRoXG4gICAgICAgfCBOb25lIC0+IHNldCBkc3QgfmtleSB+ZGF0YVxuICAgICAgIHwgU29tZSBkc3RfZGF0YSAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZHN0X2RhdGEgZGF0YSkgdGhlbiBzZXQgZHN0IH5rZXkgfmRhdGEpKSBbQG5vbnRhaWxcbiAgXVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhYyBlbHNlIGtleSA6OiBhYylcbiAgaW5cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGtleSAtPiByZW1vdmUgdCBrZXkpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgbWFwX3Jlc3VsdHMgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IChrZXksIGYgfmtleSB+ZGF0YSkgOjogYWMpIGluXG4gIExpc3QuaXRlciBtYXBfcmVzdWx0cyB+ZjooZnVuIChrZXksIHJlc3VsdCkgLT5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1vdmUgdCBrZXlcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhKVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID1cbiAgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgd2l0aG91dF9tdXRhdGluZyB0IChmdW4gKCkgLT5cbiAgICBBcnJheS5pdGVyIHQudGFibGUgfmY6KEF2bHRyZWUubWFwaV9pbnBsYWNlIH5mKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IG1hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgZXF1YWwgZXF1YWwgdCB0JyA9XG4gIGxlbmd0aCB0ID0gbGVuZ3RoIHQnXG4gICYmICh3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICB3aXRob3V0X211dGF0aW5nIHQnIChmdW4gKCkgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIG1hdGNoIGZpbmQgdCcga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHIucmV0dXJuIGZhbHNlXG4gICAgICAgIHwgU29tZSBkYXRhJyAtPiBpZiBub3QgKGVxdWFsIGRhdGEgZGF0YScpIHRoZW4gci5yZXR1cm4gZmFsc2UpIFtAbm9udGFpbF0pO1xuICAgIHRydWUpIFtAbm9udGFpbF0pXG47O1xuXG5sZXQgc2ltaWxhciA9IGVxdWFsXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgY2hvb3NlID0gY2hvb3NlXG4gIGxldCBjaG9vc2VfZXhuID0gY2hvb3NlX2V4blxuICBsZXQgY2hvb3NlX3JhbmRvbWx5ID0gY2hvb3NlX3JhbmRvbWx5XG4gIGxldCBjaG9vc2VfcmFuZG9tbHlfZXhuID0gY2hvb3NlX3JhbmRvbWx5X2V4blxuICBsZXQgY2xlYXIgPSBjbGVhclxuICBsZXQgY29weSA9IGNvcHlcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZVxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGFkZF9leG4gPSBhZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbiAgbGV0IHVwZGF0ZSA9IHVwZGF0ZVxuICBsZXQgdXBkYXRlX2FuZF9yZXR1cm4gPSB1cGRhdGVfYW5kX3JldHVyblxuICBsZXQgYWRkX211bHRpID0gYWRkX211bHRpXG4gIGxldCByZW1vdmVfbXVsdGkgPSByZW1vdmVfbXVsdGlcbiAgbGV0IGZpbmRfbXVsdGkgPSBmaW5kX211bHRpXG4gIGxldCBtZW0gPSBtZW1cbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZpbHRlcl9tYXAgPSBmaWx0ZXJfbWFwXG4gIGxldCBmaWx0ZXJfbWFwaSA9IGZpbHRlcl9tYXBpXG4gIGxldCBmaWx0ZXJfa2V5cyA9IGZpbHRlcl9rZXlzXG4gIGxldCBmaWx0ZXIgPSBmaWx0ZXJcbiAgbGV0IGZpbHRlcmkgPSBmaWx0ZXJpXG4gIGxldCBwYXJ0aXRpb25fbWFwID0gcGFydGl0aW9uX21hcFxuICBsZXQgcGFydGl0aW9uX21hcGkgPSBwYXJ0aXRpb25fbWFwaVxuICBsZXQgcGFydGl0aW9uX3RmID0gcGFydGl0aW9uX3RmXG4gIGxldCBwYXJ0aXRpb25pX3RmID0gcGFydGl0aW9uaV90ZlxuICBsZXQgZmluZF9vcl9hZGQgPSBmaW5kX29yX2FkZFxuICBsZXQgZmluZGlfb3JfYWRkID0gZmluZGlfb3JfYWRkXG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgZmluZF9leG4gPSBmaW5kX2V4blxuICBsZXQgZmluZF9hbmRfY2FsbCA9IGZpbmRfYW5kX2NhbGxcbiAgbGV0IGZpbmRfYW5kX2NhbGwxID0gZmluZF9hbmRfY2FsbDFcbiAgbGV0IGZpbmRfYW5kX2NhbGwyID0gZmluZF9hbmRfY2FsbDJcbiAgbGV0IGZpbmRpX2FuZF9jYWxsID0gZmluZGlfYW5kX2NhbGxcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMSA9IGZpbmRpX2FuZF9jYWxsMVxuICBsZXQgZmluZGlfYW5kX2NhbGwyID0gZmluZGlfYW5kX2NhbGwyXG4gIGxldCBmaW5kX2FuZF9yZW1vdmUgPSBmaW5kX2FuZF9yZW1vdmVcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IG1lcmdlID0gbWVyZ2VcbiAgbGV0IG1lcmdlX2ludG8gPSBtZXJnZV9pbnRvXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgPSBmaWx0ZXJfa2V5c19pbnBsYWNlXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSA9IGZpbHRlcl9pbnBsYWNlXG4gIGxldCBmaWx0ZXJpX2lucGxhY2UgPSBmaWx0ZXJpX2lucGxhY2VcbiAgbGV0IG1hcF9pbnBsYWNlID0gbWFwX2lucGxhY2VcbiAgbGV0IG1hcGlfaW5wbGFjZSA9IG1hcGlfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlID0gZmlsdGVyX21hcGlfaW5wbGFjZVxuICBsZXQgZXF1YWwgPSBlcXVhbFxuICBsZXQgc2ltaWxhciA9IHNpbWlsYXJcbiAgbGV0IGluY3IgPSBpbmNyXG4gIGxldCBkZWNyID0gZGVjclxuICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleVxuZW5kXG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBLZXkuaGFzaGFibGVcblxuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKClcbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID0gb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHBcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG4gIDs7XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXkgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IEhhc2hhYmxlLnBvbHlcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEhhc2hhYmxlID0gSGFzaGFibGUuSGFzaGFibGVcblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBsZXQgaGFzaGFibGUgdCA9IHQuaGFzaGFibGVcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgY3JlYXRlIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfbXVsdGkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgY3JlYXRlX21hcHBlZCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgZ3JvdXAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG47O1xuXG5sZXQgaGFzaGFibGVfcyB0ID0gSGFzaGFibGUudG9fa2V5IHQuaGFzaGFibGVcblxubW9kdWxlIE0gKEsgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBrKSAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrKSB2X29mX3NleHAgc2V4cCA9XG4gIHRfb2Zfc2V4cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEspKSBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGspIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaykgdl9ncmFtbWFyID1cbiAgdF9zZXhwX2dyYW1tYXIgSy50X3NleHBfZ3JhbW1hciB2X2dyYW1tYXJcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuXG5sZXQgaGFzaGFibGVfcyA9IEhhc2h0YmwuaGFzaGFibGVfc1xubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5sZXQgcG9seV9oYXNoYWJsZSA9IEhhc2h0YmwuUG9seS5oYXNoYWJsZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAnYSB0ID0gKCdhLCB1bml0KSBIYXNodGJsLnRcbnR5cGUgJ2EgaGFzaF9zZXQgPSAnYSB0XG50eXBlICdhIGVsdCA9ICdhXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuICBsZXQgbGVuZ3RoID0gSGFzaHRibC5sZW5ndGhcbiAgbGV0IG1lbSA9IEhhc2h0YmwubWVtXG4gIGxldCBpc19lbXB0eSB0ID0gSGFzaHRibC5pc19lbXB0eSB0XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgSGFzaHRibC5pdGVyX2tleXMgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyBhcyBvIC0+IHIucmV0dXJuIG8pO1xuICAgICAgTm9uZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBTb21lIGEgZWxzZSBOb25lKSBbQG5vbnRhaWxdXG4gIGxldCBhZGQgdCBrID0gSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KClcblxuICBsZXQgc3RyaWN0X2FkZCB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImVsZW1lbnQgYWxyZWFkeSBleGlzdHNcIlxuICAgIGVsc2UgKFxuICAgICAgSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KCk7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9hZGRfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X2FkZCB0IGspXG4gIGxldCByZW1vdmUgPSBIYXNodGJsLnJlbW92ZVxuXG4gIGxldCBzdHJpY3RfcmVtb3ZlIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlIHQgaztcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yIFwiZWxlbWVudCBub3QgaW4gc2V0XCIgayAoSGFzaHRibC5zZXhwX29mX2tleSB0KVxuICA7O1xuXG4gIGxldCBzdHJpY3RfcmVtb3ZlX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9yZW1vdmUgdCBrKVxuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgIEhhc2h0YmwuZm9sZCB0IH5pbml0IH5mOihmdW4gfmtleSB+ZGF0YTooKSBhY2MgLT4gZiBhY2Mga2V5KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9IEhhc2h0YmwuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG4gIGxldCB0b19saXN0ID0gSGFzaHRibC5rZXlzXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2UgdCA9XG4gICAgc2V4cF9vZl9saXN0IHNleHBfb2ZfZSAodG9fbGlzdCB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTooaGFzaGFibGUgdCkuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IGluZGV4ID0gcmVmIChsZW4gLSAxKSBpblxuICAgIGZvbGQgdCB+aW5pdDpbfHxdIH5mOihmdW4gYWNjIGtleSAtPlxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGFjYyA9IDBcbiAgICAgIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4ga2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgaW5kZXggOj0gIWluZGV4IC0gMTtcbiAgICAgICAgYWNjLighaW5kZXgpIDwtIGtleTtcbiAgICAgICAgYWNjKSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgICBIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID0gbm90IChIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gbm90IChmIGtleSkpKVxuICBsZXQgZXF1YWwgdDEgdDIgPSBIYXNodGJsLmVxdWFsIChmdW4gKCkgKCkgLT4gdHJ1ZSkgdDEgdDJcbiAgbGV0IGNvcHkgdCA9IEhhc2h0YmwuY29weSB0XG4gIGxldCBmaWx0ZXIgdCB+ZiA9IEhhc2h0YmwuZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSkgW0Bub250YWlsXVxuICBsZXQgdW5pb24gdDEgdDIgPSBIYXNodGJsLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIF8gLT4gU29tZSAoKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBmaWx0ZXIgdDEgfmY6KGZ1biBrZXkgLT4gbm90IChIYXNodGJsLm1lbSB0MiBrZXkpKVxuXG4gIGxldCBpbnRlciB0MSB0MiA9XG4gICAgbGV0IHNtYWxsZXIsIGxhcmdlciA9IGlmIGxlbmd0aCB0MSA+IGxlbmd0aCB0MiB0aGVuIHQyLCB0MSBlbHNlIHQxLCB0MiBpblxuICAgIEhhc2h0YmwuZmlsdGVyaSBzbWFsbGVyIH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBIYXNodGJsLm1lbSBsYXJnZXIga2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgICBsZXQgdG9fcmVtb3ZlID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgeCAtPiBpZiBmIHggdGhlbiBhYyBlbHNlIHggOjogYWMpIGluXG4gICAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIHggLT4gcmVtb3ZlIHQgeClcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGhhc2h0YmwgPSBIYXNodGJsLm1hcCBoYXNodGJsIH5mOmlnbm9yZVxuICBsZXQgdG9faGFzaHRibCB0IH5mID0gSGFzaHRibC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBsXG4gIGluXG4gIGxldCB0ID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIG0gaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biBrIC0+IGFkZCB0IGspO1xuICB0XG47O1xuXG5sZXQgdF9vZl9zZXhwIG0gZV9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBTZXhwLkF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIHJlcXVpcmVzIGEgbGlzdFwiIHNleHBcbiAgfCBTZXhwLkxpc3QgbGlzdCAtPlxuICAgIGxldCB0ID0gY3JlYXRlIG0gfnNpemU6KExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biBzZXhwIC0+XG4gICAgICBsZXQgZSA9IGVfb2Zfc2V4cCBzZXhwIGluXG4gICAgICBtYXRjaCBzdHJpY3RfYWRkIHQgZSB3aXRoXG4gICAgICB8IE9rICgpIC0+ICgpXG4gICAgICB8IEVycm9yIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCBnb3QgYSBkdXBsaWNhdGUgZWxlbWVudFwiIHNleHApO1xuICAgIHRcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBFbHQudCkgLT4gU2V4cC50IC0+ICdhIEVsdC50IHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIEVsdC50IHRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgd2l0aCB0eXBlICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGVfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBlX29mX3NleHAgc2V4cFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGhhc2hfc2V0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBwb2x5X2hhc2hhYmxlXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG5lbmRcblxubW9kdWxlIE0gKEVsdCA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IEVsdC50IHRcbmVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQpIHNleHAgPVxuICB0X29mX3NleHAgKG1vZHVsZSBFbHQpIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdCkgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFByaW50ZlxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5pbmNsdWRlIEZsb2F0MFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfZmxvYXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Zsb2F0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfZmxvYXQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGZsb2F0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Zsb2F0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGZsb2F0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCB0b19mbG9hdCB4ID0geFxubGV0IG9mX2Zsb2F0IHggPSB4XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIHRyeSBmbG9hdF9vZl9zdHJpbmcgcyB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5vZl9zdHJpbmcgJXNcIiBzICgpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XS4gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGkgbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG4oKiBMZXQgW3ldIGJlIGEgcG93ZXIgb2YgMi4gIFRoZW4gdGhlIG5leHQgcmVwcmVzZW50YWJsZSBmbG9hdCBpczpcbiAgIFt6ID0geSAqICgxICsgMiAqKiAtNTIpXVxuICAgYW5kIHRoZSBwcmV2aW91cyBvbmUgaXNcbiAgIFt4ID0geSAqICgxIC0gMiAqKiAtNTMpXVxuXG4gICBJbiBnZW5lcmFsLCBldmVyeSB0d28gYWRqYWNlbnQgZmxvYXRzIGFyZSB3aXRoaW4gYSBmYWN0b3Igb2YgYmV0d2VlbiBbMSArIDIqKi01M11cbiAgIGFuZCBbMSArIDIqKi01Ml0gZnJvbSBlYWNoIG90aGVyLCB0aGF0IGlzIHdpdGhpbiBbMSArIDEuMWUtMTZdIGFuZCBbMSArIDIuM2UtMTZdLlxuXG4gICBTbyBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0IHN0YXJ0cyB3aXRoIFwiMVwiLCB0aGVuIGl0cyBhZGphY2VudCBmbG9hdHNcbiAgIHdpbGwgdXN1YWxseSBkaWZmZXIgZnJvbSBpdCBieSAxLCBhbmQgc29tZXRpbWVzIGJ5IDIsIGF0IHRoZSAxN3RoIHNpZ25pZmljYW50IGRpZ2l0XG4gICAoY291bnRpbmcgZnJvbSAxKS5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIHN0YXJ0cyB3aXRoIFwiOVwiLCB0aGVuIHRoZSBhZGphY2VudFxuICAgZmxvYXRzIHdpbGwgYmUgb2ZmIGJ5IG5vIG1vcmUgdGhhbiAyMyBhdCB0aGUgMTZ0aCBhbmQgMTd0aCBzaWduaWZpY2FudCBkaWdpdHMuXG5cbiAgIEUuZy46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1NjdcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk5XCJcbiAgIHZ9XG4gICBQcmludGluZyBhIGNvdXBsZSBvZiBleHRyYSBkaWdpdHMgcmV2ZWFscyB0aGF0IHRoZSBkaWZmZXJlbmNlIGluZGVlZCBpcyByb3VnaGx5IDExIGF0XG4gICBkaWdpdHMgMTd0aCBhbmQgMTh0aCAodGhhdCBpcywgMTN0aCBhbmQgMTR0aCBhZnRlciBcIi5cIik6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5ODg2XCJcbiAgIHZ9XG5cbiAgIFRoZSB1bHAgKHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRqYWNlbnQgZmxvYXRzKSBpcyB0d2ljZSBhcyBiaWcgb24gdGhlIG90aGVyIHNpZGUgb2ZcbiAgIDEwMjQuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDI0LjAwMDAwMDAwMDAwMDIyN1wiXG4gICB2fVxuXG4gICBOb3cgdGFrZSBhIHBvd2VyIG9mIDIgd2hpY2ggc3RhcnRzIHdpdGggOTk6XG5cbiAgIHt2XG4gICAgICMgMi4qKjkzLiA7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgIDEgMjM0NTY3ODkwMTIzNDU2NzhcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDIyZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDQ0ZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDExZSsyN1xuICAgdn1cblxuICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAyKio5MyBhbmQgaXRzIHR3byBuZWlnaGJvcnMgaXMgc2xpZ2h0bHkgbW9yZSB0aGFuLCByZXNwZWN0aXZlbHksXG4gICAxIGFuZCAyIGF0IHNpZ25pZmljYW50IGRpZ2l0IDE2LlxuXG4gICBUaG9zZSBleGFtcGxlcyBzaG93IHRoYXQ6XG4gICAtIDE3IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBhbHdheXMgc3VmZmljaWVudCB0byByZXByZXNlbnQgYSBmbG9hdCB3aXRob3V0IGFtYmlndWl0eVxuICAgLSAxNXRoIHNpZ25pZmljYW50IGRpZ2l0IGNhbiBhbHdheXMgYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseVxuICAgLSBjb252ZXJ0aW5nIGEgZGVjaW1hbCBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgdG8gaXRzIG5lYXJlc3QgZmxvYXQgYW5kIGJhY2tcbiAgICAgY2FuIGNoYW5nZSB0aGUgbGFzdCBkZWNpbWFsIGRpZ2l0IGJ5IG5vIG1vcmUgdGhhbiAxXG5cbiAgIFRvIG1ha2Ugc3VyZSB0aGF0IGZsb2F0cyBvYnRhaW5lZCBieSBjb252ZXJzaW9uIGZyb20gZGVjaW1hbCBmcmFjdGlvbnMgKGUuZy4gXCIzLjE0XCIpXG4gICBhcmUgcHJpbnRlZCB3aXRob3V0IHRyYWlsaW5nIG5vbi16ZXJvIGRpZ2l0cywgb25lIHNob3VsZCBjaG9vc2UgdGhlIGZpcnN0IGFtb25nIHRoZVxuICAgJyUuMTVnJywgJyUuMTZnJywgYW5kICclLjE3ZycgcmVwcmVzZW50YXRpb25zIHdoaWNoIGRvZXMgcm91bmQtdHJpcDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiICAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCJcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUgKilcblxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOFwiICAgICAgICAgICAgICAgICAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWRvZXMgbm90IHJvdW5kLXRyaXAgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAyXCIgICAgICAgICgqIHByZWZlciB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDE4XCIgICAgICAgKCogdGhpcyBvbmUgaGFzIG9uZSBkaWdpdCBvZiBqdW5rIGF0IHRoZSBlbmQgKilcbiAgIHZ9XG5cbiAgIFNraXBwaW5nIHRoZSAnJS4xNmcnIGluIHRoZSBhYm92ZSBwcm9jZWR1cmUgc2F2ZXMgdXMgc29tZSB0aW1lLCBidXQgaXQgbWVhbnMgdGhhdCwgYXNcbiAgIHNlZW4gaW4gdGhlIHNlY29uZCBleGFtcGxlIGFib3ZlLCBvY2Nhc2lvbmFsbHkgbnVtYmVycyB3aXRoIGV4YWN0bHkgMTYgc2lnbmlmaWNhbnRcbiAgIGRpZ2l0cyB3aWxsIGhhdmUgYW4gZXJyb3IgaW50cm9kdWNlZCBhdCB0aGUgMTd0aCBkaWdpdC4gIFRoYXQgaXMgcHJvYmFibHkgT0sgZm9yXG4gICB0eXBpY2FsIHVzZSwgYmVjYXVzZSBhIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBcInVnbHlcIiBhbHJlYWR5LiAgQWRkaW5nIG9uZVxuICAgbW9yZSBkb2Vzbid0IG1ha2UgaXQgbXVjaCB3b3JzZSBmb3IgYSBodW1hbiByZWFkZXIuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW5ub3Qgc2tpcCAnJS4xNWcnIGFuZCBvbmx5IGxvb2sgYXQgJyUuMTZnJyBhbmQgJyUuMTdnJywgc2luY2VcbiAgIHRoZSBpbmFjY3VyYWN5IGF0IHRoZSAxNnRoIGRpZ2l0IG1pZ2h0IGludHJvZHVjZSB0aGUgbm9pc2Ugd2Ugd2FudCB0byBhdm9pZDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyXCIgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAxXCIgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1qdW5rIGF0IHRoZSBlbmQgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAwOVwiXG4gICB2fVxuKilcbmxldCB0b19zdHJpbmcgeCA9XG4gIHZhbGlkX2Zsb2F0X2xleGVtXG4gICAgKGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNWdcIiB4IGluXG4gICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3Z1wiIHgpXG47O1xuXG5sZXQgbWF4X3ZhbHVlID0gaW5maW5pdHlcbmxldCBtaW5fdmFsdWUgPSBuZWdfaW5maW5pdHlcbmxldCBtaW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwNzQuXG5sZXQgbWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDIyLlxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgcGkgPSAweDMuMjQzRjZBODg4NUEzMDhEMzEzMTk4QTJFMDM3MDczXG5sZXQgc3FydF9waSA9IDB4MS5DNUJGODkxQjRFRjZBQTc5QzNCMDUyMEQ1REI5MzhcbmxldCBzcXJ0XzJwaSA9IDB4Mi44MUIyNjNGRUM0RTBCMkNBRjk0ODNGNUNFNDU5RENcbmxldCBldWxlciA9IDB4MC45M0M0NjdFMzdEQjBDN0E0RDFCRTNGODEwMTUyQ0JcbmxldCBvZl9pbnQgPSBJbnQudG9fZmxvYXRcbmxldCB0b19pbnQgPSBJbnQub2ZfZmxvYXRcbmxldCBvZl9pbnQ2MyBpID0gSW50NjMudG9fZmxvYXQgaVxubGV0IG9mX2ludDY0IGkgPSBTdGRsaWIuSW50NjQudG9fZmxvYXQgaVxubGV0IHRvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX2Zsb2F0XG5sZXQgaXJvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5sZXQgaXJvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5cbigqIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgXCJleG5cIiByb3VuZGluZyBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBzbyB0aGV5IGFyZSB3cml0dGVuXG4gICBvdXQgc2VwYXJhdGVseSwgYW5kIHR1bmVkIGluZGl2aWR1YWxseS4gIChXZSBjb3VsZCBoYXZlIHRoZSBvcHRpb24gdmVyc2lvbnMgY2FsbFxuICAgdGhlIFwiZXhuXCIgdmVyc2lvbnMsIGJ1dCB0aGF0IGltcG9zZXMgYXJndWFibHkgZ3JhdHVpdG91cyBvdmVyaGVhZC0tLWVzcGVjaWFsbHlcbiAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBjYXB0dXJlIG9mIGJhY2t0cmFjZXMgaXMgZW5hYmxlZCB1cG9uIFwid2l0aFwiLS0tYW5kIHRoYXQgc2VlbXNcbiAgIG5vdCB3b3J0aCBpdCB3aGVuIGNvbXBhcmVkIHRvIHRoZSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBjb2RlIGR1cGxpY2F0aW9uLikgKilcblxuKCogRXJyb3IgcmVwb3J0aW5nIGJlbG93IGlzIHZlcnkgY2FyZWZ1bGx5IGFycmFuZ2VkIHNvIHRoYXQsIGUuZy4sIFtpcm91bmRfbmVhcmVzdF9leG5dXG4gICBpdHNlbGYgY2FuIGJlIGlubGluZWQgaW50byBjYWxsZXJzIHN1Y2ggdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYWxsb2NhdGUgYSBib3ggZm9yIHRoZVxuICAgW2Zsb2F0XSBhcmd1bWVudC4gIFRoaXMgaXMgZG9uZSB3aXRoIGEgYm94IFtib3hdIGZ1bmN0aW9uIGNhcmVmdWxseSBjaG9zZW4gdG8gYWxsb3cgdGhlXG4gICBjb21waWxlciB0byBjcmVhdGUgYSBzZXBhcmF0ZSBib3ggZm9yIHRoZSBmbG9hdCBvbmx5IGluIGVycm9yIGNhc2VzLiAgU2VlLCBlLmcuLFxuICAgWy4uLy4uL3plcm8vdGVzdC9wcmljZV90ZXN0Lm1sXSBmb3IgYSBtZWNoYW5pY2FsIHRlc3Qgb2YgdGhpcyBwcm9wZXJ0eSB3aGVuIGJ1aWxkaW5nXG4gICB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9dHJ1ZV0uICopXG5cbmxldCBpcm91bmRfdXAgdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX2Rvd24gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW4gaWYgdCA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KSBlbHNlIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldCBpcm91bmRfdG93YXJkc196ZXJvIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pcm91bmRfdG93YXJkc196ZXJvX2V4bjogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChib3ggdClcbiAgICAgICgpXG47O1xuXG4oKiBPdXRzaWRlIG9mIHRoZSByYW5nZSAocm91bmRfbmVhcmVzdF9sYi4ucm91bmRfbmVhcmVzdF91YiksIGFsbCByZXByZXNlbnRhYmxlIGRvdWJsZXNcbiAgIGFyZSBpbnRlZ2VycyBpbiB0aGUgbWF0aGVtYXRpY2FsIHNlbnNlLCBhbmQgW3JvdW5kX25lYXJlc3RdIHNob3VsZCBiZSBpZGVudGl0eS5cblxuICAgSG93ZXZlciwgZm9yIG9kZCBudW1iZXJzIHdpdGggdGhlIGFic29sdXRlIHZhbHVlIGJldHdlZW4gMioqNTIgYW5kIDIqKjUzLCB0aGUgZm9ybXVsYVxuICAgW3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsgMC41KV0gZG9lcyBub3QgaG9sZDpcblxuICAge3ZcbiAgICAgIyBsZXQgbmFpdmVfcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKy4gMC41KTs7XG4gICAgICMgbGV0IHggPSAyLiAqKiA1Mi4gKy4gMS47O1xuICAgICB2YWwgeCA6IGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5Ny5cbiAgICAgIyBuYWl2ZV9yb3VuZF9uZWFyZXN0IHg7O1xuICAgICAtIDogICAgIGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5OC5cbiAgIHZ9XG4qKVxuXG5sZXQgcm91bmRfbmVhcmVzdF9sYiA9IC0uKDIuICoqIDUyLilcbmxldCByb3VuZF9uZWFyZXN0X3ViID0gMi4gKiogNTIuXG5cbigqIEZvciBbeCA9IG9uZV91bHAgYERvd24gMC41XSwgdGhlIGZvcm11bGEgW2Zsb29yICh4ICsuIDAuNSldIGZvciByb3VuZGluZyB0byBuZWFyZXN0XG4gICBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlIHRoZSBleGFjdCByZXN1bHQgaXMgaGFsZndheSBiZXR3ZWVuIFtvbmVfdWxwIGBEb3duIDEuXSBhbmQgWzEuXSxcbiAgIGFuZCBpdCBnZXRzIHJvdW5kZWQgdXAgdG8gWzEuXSBkdWUgdG8gdGhlIHJvdW5kLXRpZXMtdG8tZXZlbiBydWxlLiAqKVxubGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwIGBEb3duIDAuNVxuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgPVxuICB0XG4gICsuXG4gIGlmIHQgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIHRoZW4gb25lX3VscF9sZXNzX3RoYW5faGFsZiAoKiBzaW5jZSB0IDwgMC41LCBtYWtlIHN1cmUgdGhlIHJlc3VsdCBpcyA8IDEuMCAqKVxuICBlbHNlIDAuNVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpKVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gICAgZWxzZSBOb25lXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0XzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0XzMyXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuXzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGxcIiAoYm94IHQpICgpKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfbmVhcmVzdF9leG5fNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF9leG5fMzJcbjs7XG5cbigqIFRoZSBmb2xsb3dpbmcgW2lyb3VuZF9leG5dIGFuZCBbaXJvdW5kXSBmdW5jdGlvbnMgYXJlIHNsb3dlciB0aGFuIHRoZSBvbmVzIGFib3ZlLlxuICAgVGhlaXIgZXF1aXZhbGVuY2UgdG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRlc3RlZCBpbiB0aGUgdW5pdCB0ZXN0cyBiZWxvdy4gKilcblxubGV0W0BpbmxpbmVdIGlyb3VuZF9leG4gPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYFplcm8gLT4gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdFxuICB8IGBOZWFyZXN0IC0+IGlyb3VuZF9uZWFyZXN0X2V4biB0XG4gIHwgYFVwIC0+IGlyb3VuZF91cF9leG4gdFxuICB8IGBEb3duIC0+IGlyb3VuZF9kb3duX2V4biB0XG47O1xuXG5sZXQgaXJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICB0cnkgU29tZSAoaXJvdW5kX2V4biB+ZGlyIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBpc19pbmYgdCA9IDEuIC8uIHQgPSAwLlxubGV0IGlzX2Zpbml0ZSB0ID0gdCAtLiB0ID0gMC5cblxubGV0IG1pbl9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBtYXhfaW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgYWRkID0gKCArLiApXG5sZXQgc3ViID0gKCAtLiApXG5sZXQgbmVnID0gKCB+LS4gKVxubGV0IGFicyA9IGFic19mbG9hdFxubGV0IHNjYWxlID0gKCAqLiApXG5sZXQgc3F1YXJlIHggPSB4ICouIHhcblxubW9kdWxlIFBhcnRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBmcmFjdGlvbmFsIDogdCAtPiBmbG9hdFxuICB2YWwgaW50ZWdyYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBtb2RmIDogZmxvYXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0ICogZmxvYXRcblxuICBsZXQgZnJhY3Rpb25hbCB0ID0gZnN0IHRcbiAgbGV0IGludGVncmFsIHQgPSBzbmQgdFxuICBsZXQgbW9kZiA9IG1vZGZcbmVuZFxuXG5sZXQgbW9kZiA9IFBhcnRzLm1vZGZcbmxldCByb3VuZF9kb3duID0gZmxvb3JcbmxldCByb3VuZF91cCA9IGNlaWxcbmxldCByb3VuZF90b3dhcmRzX3plcm8gdCA9IGlmIHQgPj0gMC4gdGhlbiByb3VuZF9kb3duIHQgZWxzZSByb3VuZF91cCB0XG5cbigqIHNlZSB0aGUgY29tbWVudCBhYm92ZSBbcm91bmRfbmVhcmVzdF9sYl0gYW5kIFtyb3VuZF9uZWFyZXN0X3ViXSBmb3IgYW4gZXhwbGFuYXRpb24gKilcbmxldFtAb2NhbWwuaW5saW5lXSByb3VuZF9uZWFyZXN0X2lubGluZSB0ID1cbiAgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGIgJiYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiBmbG9vciAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgZWxzZSB0ICsuIDAuXG47O1xuXG5sZXQgcm91bmRfbmVhcmVzdCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0XG5cbmxldCByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiB0ID1cbiAgaWYgdCA8PSByb3VuZF9uZWFyZXN0X2xiIHx8IHQgPj0gcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIHQgKy4gMC5cbiAgZWxzZSAoXG4gICAgbGV0IGZsb29yID0gZmxvb3IgdCBpblxuICAgICgqIFtjZWlsX29yX3N1Y2MgPSBpZiB0IGlzIGFuIGludGVnZXIgdGhlbiB0ICsuIDEuIGVsc2UgY2VpbCB0XS4gIEZhc3RlciB0aGFuIFtjZWlsXS4gKilcbiAgICBsZXQgY2VpbF9vcl9zdWNjID0gZmxvb3IgKy4gMS4gaW5cbiAgICBsZXQgZGlmZl9mbG9vciA9IHQgLS4gZmxvb3IgaW5cbiAgICBsZXQgZGlmZl9jZWlsID0gY2VpbF9vcl9zdWNjIC0uIHQgaW5cbiAgICBpZiBkaWZmX2Zsb29yIDwgZGlmZl9jZWlsXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgaWYgZGlmZl9mbG9vciA+IGRpZmZfY2VpbFxuICAgIHRoZW4gY2VpbF9vcl9zdWNjXG4gICAgZWxzZSBpZiAoKiBleGFjdCB0aWUsIHBpY2sgdGhlIGV2ZW4gKilcbiAgICAgIG1vZF9mbG9hdCBmbG9vciAyLiA9IDAuXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgY2VpbF9vcl9zdWNjKVxuOztcblxubGV0IGludDYzX3JvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcbmxldCBpbnQ2M19yb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5cbmxldCBpbnQ2M19yb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGludDYzX3JvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuIHQwID1cbiAgbGV0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHQwIGluXG4gIGlmIHQgPiAwLlxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKGJveCB0MClcbiAgICAgICAgKClcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoYm94IHQwKVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biBmID0gSW50NjMub2ZfaW50IChpcm91bmRfbmVhcmVzdF9leG4gZilcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIHwgVzMyIC0+IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG47O1xuXG5sZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCB0XG4gIHwgYERvd24gLT4gcm91bmRfZG93biB0XG4gIHwgYFVwIC0+IHJvdW5kX3VwIHRcbiAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gdFxuOztcblxubW9kdWxlIENsYXNzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbmZpbml0ZVxuICAgIHwgTmFuXG4gICAgfCBOb3JtYWxcbiAgICB8IFN1Ym5vcm1hbFxuICAgIHwgWmVyb1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgSW5maW5pdGU7IE5hbjsgTm9ybWFsOyBTdWJub3JtYWw7IFplcm8gXSA6IHQgbGlzdClcblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDA3XyA9IFwiZmxvYXQubWwuQ2xhc3MudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIC0+IEluZmluaXRlXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgLT4gTm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgLT4gU3Vibm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDhfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwOF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSA6OiBfKSBhcyBzZXhwX18wMDhfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDhfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA4XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgIHwgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbmZpbml0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmZpbml0ZVwiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgfCBOb3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTm9ybWFsXCJcbiAgICAgIHwgU3Vibm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN1Ym5vcm1hbFwiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJJbmZpbml0ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlN1Ym5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuZW5kXG5cbmxldCBjbGFzc2lmeSB0ID1cbiAgbGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gIHwgRlBfbm9ybWFsIC0+IEMuTm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsIC0+IEMuU3Vibm9ybWFsXG4gIHwgRlBfemVybyAtPiBDLlplcm9cbiAgfCBGUF9pbmZpbml0ZSAtPiBDLkluZmluaXRlXG4gIHwgRlBfbmFuIC0+IEMuTmFuXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzID8oZGVsaW1pdGVyID0gJ18nKSA/KHN0cmlwX3plcm8gPSBmYWxzZSkgc3RyaW5nID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyaW5nIH5vbjonLicgd2l0aFxuICB8IE5vbmUgLT4gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgc3RyaW5nIH5kZWxpbWl0ZXJcbiAgfCBTb21lIChsZWZ0LCByaWdodCkgLT5cbiAgICBsZXQgbGVmdCA9IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIGxlZnQgfmRlbGltaXRlciBpblxuICAgIGxldCByaWdodCA9XG4gICAgICBpZiBzdHJpcF96ZXJvIHRoZW4gU3RyaW5nLnJzdHJpcCByaWdodCB+ZHJvcDooZnVuIGMgLT4gQ2hhci4oID0gKSBjICcwJykgZWxzZSByaWdodFxuICAgIGluXG4gICAgKG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgfCBcIlwiIC0+IGxlZnRcbiAgICAgfCBfIC0+IGxlZnQgXiBcIi5cIiBeIHJpZ2h0KVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gP2RlbGltaXRlciA/KGRlY2ltYWxzID0gMykgP3N0cmlwX3plcm8gPyhleHBsaWNpdF9wbHVzID0gZmFsc2UpIGYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGRlY2ltYWxzIDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJ0b19zdHJpbmdfaHVtOiBpbnZhbGlkIGFyZ3VtZW50IH5kZWNpbWFscz0lZFwiIGRlY2ltYWxzICgpO1xuICBtYXRjaCBjbGFzc2lmeSBmIHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiBmID4gMC4gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW5cIlxuICB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgcyA9XG4gICAgICBpZiBleHBsaWNpdF9wbHVzIHRoZW4gc3ByaW50ZiBcIiUrLipmXCIgZGVjaW1hbHMgZiBlbHNlIHNwcmludGYgXCIlLipmXCIgZGVjaW1hbHMgZlxuICAgIGluXG4gICAgaW5zZXJ0X3VuZGVyc2NvcmVzIHMgP2RlbGltaXRlciA/c3RyaXBfemVyb1xuOztcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgbGV0IHNleHAgPSBzZXhwX29mX3QgdCBpblxuICBtYXRjaCAhU2V4cC5vZl9mbG9hdF9zdHlsZSB3aXRoXG4gIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHNleHBcbiAgfCBgVW5kZXJzY29yZXMgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgTGlzdCBfIC0+XG4gICAgICAgcmFpc2Vfc1xuICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgXCJbc2V4cF9vZl9mbG9hdF0gcHJvZHVjZWQgc3RyYW5nZSBzZXhwXCJcbiAgICAgICAgICAgIFsgXCJzZXhwXCIsIFNleHAuc2V4cF9vZl90IHNleHAgXSlcbiAgICAgfCBBdG9tIHN0cmluZyAtPlxuICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzdHJpbmcgJ0UnIHRoZW4gc2V4cCBlbHNlIEF0b20gKGluc2VydF91bmRlcnNjb3JlcyBzdHJpbmcpKVxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCA/KHByZWZpeCA9IFwiXCIpIH5raWxvIH5tZWdhIH5naWdhIH50ZXJhID9wZXRhICgpID1cbiAgKCogUm91bmQgYSByYXRpbyB0b3dhcmQgdGhlIG5lYXJlc3QgaW50ZWdlciwgcmVzb2x2aW5nIHRpZXMgdG93YXJkIHRoZSBuZWFyZXN0IGV2ZW5cbiAgICAgbnVtYmVyLiAgRm9yIHNhbmUgaW5wdXRzIChpbiBwYXJ0aWN1bGFyLCB3aGVuIFtkZW5vbWluYXRvcl0gaXMgYW4gaW50ZWdlciBhbmRcbiAgICAgW2FicyBudW1lcmF0b3IgPCAyZTUyXSkgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgbWlnaHQgYmUgYVxuICAgICBsaXR0bGUgYml0IG9mZiwgYnV0IHdlIGRvbid0IHJlYWxseSB1c2UgdGhhdCBjYXNlLiAqKVxuICBsZXQgaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IGsgPSBmbG9vciAobnVtZXJhdG9yIC8uIGRlbm9taW5hdG9yKSBpblxuICAgICgqIGlmIFthYnMgayA8IDJlNTNdLCB0aGVuIGJvdGggW2tdIGFuZCBbayArLiAxLl0gYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGFuZCBpblxuICAgICAgIHBhcnRpY3VsYXIgW2sgKy4gMS4gPiBrXS4gIElmIFtkZW5vbWluYXRvcl0gaXMgYWxzbyBhbiBpbnRlZ2VyLCBhbmRcbiAgICAgICBbYWJzIChkZW5vbWluYXRvciAqLiAoayArLiAxKSkgPCAyZTUzXSAoYW5kIGluIHNvbWUgb3RoZXIgY2FzZXMsIHRvbyksIHRoZW4gW2xvd2VyXVxuICAgICAgIGFuZCBbaGlnaGVyXSBhcmUgYWN0dWFsbHkgYm90aCBhY2N1cmF0ZS4gIFNpbmNlIChyb3VnaGx5KVxuICAgICAgIFtudW1lcmF0b3IgPSBkZW5vbWluYXRvciAqLiBrXSB0aGVuIGZvciBbYWJzIG51bWVyYXRvciA8IDJlNTJdIHdlIHNob3VsZCBiZVxuICAgICAgIGZpbmUuICopXG4gICAgbGV0IGxvd2VyID0gZGVub21pbmF0b3IgKi4gayBpblxuICAgIGxldCBoaWdoZXIgPSBkZW5vbWluYXRvciAqLiAoayArLiAxLikgaW5cbiAgICAoKiBTdWJ0cmFjdGluZyBudW1iZXJzIHdpdGhpbiBhIGZhY3RvciBvZiB0d28gZnJvbSBlYWNoIG90aGVyIGlzIGFjY3VyYXRlLlxuICAgICAgIFNvIGVpdGhlciB0aGUgdHdvIHN1YnRyYWN0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGUsIG9yIGsgPSAwLCBvciBrID0gLTEuXG4gICAgICAgSW4gY2FzZSBvZiBhIHRpZSwgcm91bmQgdG8gZXZlbi4gKilcbiAgICBsZXQgZGlmZl9yaWdodCA9IGhpZ2hlciAtLiBudW1lcmF0b3IgaW5cbiAgICBsZXQgZGlmZl9sZWZ0ID0gbnVtZXJhdG9yIC0uIGxvd2VyIGluXG4gICAgbGV0IGsgPSBpcm91bmRfbmVhcmVzdF9leG4gayBpblxuICAgIGlmIGRpZmZfcmlnaHQgPCBkaWZmX2xlZnRcbiAgICB0aGVuIGsgKyAxXG4gICAgZWxzZSBpZiBkaWZmX3JpZ2h0ID4gZGlmZl9sZWZ0XG4gICAgdGhlbiBrXG4gICAgZWxzZSBpZiAoKiBhIHRpZSAqKVxuICAgICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoayBtb2QgMikgMFxuICAgIHRoZW4ga1xuICAgIGVsc2UgayArIDFcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgdCA8IDAuMCB0aGVuIFwiLWluZiAgXCIgZWxzZSBcImluZiAgXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW4gIFwiXG4gIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBnbyB0ID1cbiAgICAgIGxldCBjb252X29uZSB0ID1cbiAgICAgICAgYXNzZXJ0ICgwLiA8PSB0ICYmIHQgPCA5OTkuOTUpO1xuICAgICAgICBsZXQgeCA9IHByZWZpeCBeIGZvcm1hdF9mbG9hdCBcIiUuMWZcIiB0IGluXG4gICAgICAgICgqIEZpeCB0aGUgXCIuMFwiIHN1ZmZpeCAqKVxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHggfnN1ZmZpeDpcIi4wXCJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHggPSBCeXRlcy5vZl9zdHJpbmcgeCBpblxuICAgICAgICAgIGxldCBuID0gQnl0ZXMubGVuZ3RoIHggaW5cbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDEpICcgJztcbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDIpICcgJztcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOngpXG4gICAgICAgIGVsc2UgeFxuICAgICAgaW5cbiAgICAgIGxldCBjb252IG1hZyB0IGRlbm9taW5hdG9yID1cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAoZGVub21pbmF0b3IgPSAxMDAuICYmIHQgPj0gOTk5Ljk1KVxuICAgICAgICAgIHx8IChkZW5vbWluYXRvciA+PSAxMDBfMDAwLiAmJiB0ID49IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDkuOTk5XzUpKSk7XG4gICAgICAgIGFzc2VydCAodCA8IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDlfOTk5LjUpKTtcbiAgICAgICAgbGV0IGksIGQgPVxuICAgICAgICAgIGxldCBrID0gaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yOnQgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICAgKCogW21vZF0gaXMgb2theSBoZXJlIGJlY2F1c2Ugd2Uga25vdyBpID49IDAuICopXG4gICAgICAgICAgayAvIDEwLCBrIG1vZCAxMFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgICAgIGFzc2VydCAoMCA8PSBpICYmIGkgPCAxMDAwKTtcbiAgICAgICAgYXNzZXJ0ICgwIDw9IGQgJiYgZCA8IDEwKTtcbiAgICAgICAgaWYgZCA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiJXMlZCVzIFwiIHByZWZpeCBpIG1hZ1xuICAgICAgICBlbHNlIHNwcmludGYgXCIlcyVkJXMlZFwiIHByZWZpeCBpIG1hZyBkXG4gICAgICBpblxuICAgICAgKCogV2hpbGUgdGhlIHN0YW5kYXJkIG1ldHJpYyBwcmVmaXhlcyAoZS5nLiBjYXBpdGFsIFwiTVwiIHJhdGhlciB0aGFuIFwibVwiLCBbMV0pIGFyZVxuICAgICAgICAgbm9taW5hbGx5IG1vcmUgY29ycmVjdCwgdGhpcyBoaW5kZXJzIHJlYWRhYmlsaXR5IGluIG91ciBjYXNlLiAgRS5nLiwgMTBHNiBhbmRcbiAgICAgICAgIDEwNjYgbG9vayB0b28gc2ltaWxhci4gIFRoYXQncyBhbiBleHRyZW1lIGV4YW1wbGUsIGJ1dCBpbiBnZW5lcmFsIGssbSxnLHQscFxuICAgICAgICAgcHJvYmFibHkgc3RhbmQgb3V0IGJldHRlciB0aGFuIEssTSxHLFQsUCB3aGVuIGludGVyc3BlcnNlZCB3aXRoIGRpZ2l0cy5cblxuICAgICAgICAgWzFdIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0cmljX3ByZWZpeCAqKVxuICAgICAgKCogVGhlIHRyaWNrIGhlcmUgaXMgdGhhdDpcbiAgICAgICAgIC0gdGhlIGZpcnN0IGJvdW5kYXJ5ICg5OTkuOTUpIGFzIGEgZmxvYXQgaXMgc2xpZ2h0bHkgb3Zlci1yZXByZXNlbnRlZCAoc28gaXQgaXNcbiAgICAgICAgICAgYmV0dGVyIGFwcHJveGltYXRlZCBhcyBcIjFrXCIgdGhhbiBhcyBcIjk5OS45XCIpLFxuICAgICAgICAgLSB0aGUgb3RoZXIgYm91bmRhcmllcyBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYmVjYXVzZSB0aGV5IGFyZSBpbnRlZ2Vycy5cbiAgICAgICAgICAgVGhhdCdzIHdoeSB0aGUgc3RyaWN0IGVxdWFsaXRpZXMgYmVsb3cgZG8gZXhhY3RseSB3aGF0IHdlIHdhbnQuICopXG4gICAgICBpZiB0IDwgOTk5Ljk1RTBcbiAgICAgIHRoZW4gY29udl9vbmUgdFxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTNcbiAgICAgIHRoZW4gY29udiBraWxvIHQgMTAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTZcbiAgICAgIHRoZW4gY29udiBtZWdhIHQgMTAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU5XG4gICAgICB0aGVuIGNvbnYgZ2lnYSB0IDEwMF8wMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTEyXG4gICAgICB0aGVuIGNvbnYgdGVyYSB0IDEwMF8wMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBwZXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdFxuICAgICAgICB8IFNvbWUgcGV0YSAtPlxuICAgICAgICAgIGlmIHQgPCA5OTkuOTVFMTVcbiAgICAgICAgICB0aGVuIGNvbnYgcGV0YSB0IDEwMF8wMDBfMDAwXzAwMF8wMDAuXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHQpXG4gICAgaW5cbiAgICBpZiB0ID49IDAuIHRoZW4gZ28gdCBlbHNlIFwiLVwiIF4gZ28gfi0udFxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyB0ID1cbiAgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0IH5raWxvOlwia1wiIH5tZWdhOlwibVwiIH5naWdhOlwiZ1wiIH50ZXJhOlwidFwiIH5wZXRhOlwicFwiICgpXG47O1xuXG4oKiBQZXJmb3JtYW5jZSBub3RlOiBJbml0aWFsaXppbmcgdGhlIGFjY3VtdWxhdG9yIHRvIDEgcmVzdWx0cyBpbiBvbmUgZXh0cmFcbiAgIG11bHRpcGx5OyBlLmcuLCB0byBjb21wdXRlIHggKiogNCwgd2UgaW4gcHJpbmNpcGxlIG9ubHkgbmVlZCAyIG11bHRpcGxpZXMsXG4gICBidXQgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgMyBtdWx0aXBsaWVzLiAgSG93ZXZlciwgYXR0ZW1wdHMgdG8gYXZvaWQgdGhpc1xuICAgKGxpa2UgZGVjcmVtZW50aW5nIG4gYW5kIGluaXRpYWxpemluZyBhY2N1bSB0byBiZSB4LCBvciBoYW5kbGluZyBzbWFsbFxuICAgZXhwb25lbnRzIGFzIGEgc3BlY2lhbCBjYXNlKSBoYXZlIG5vdCB5aWVsZGVkIGFueXRoaW5nIHRoYXQgaXMgYSBuZXRcbiAgIGltcHJvdmVtZW50LlxuKilcbmxldCBpbnRfcG93IHggbiA9XG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAxLlxuICBlbHNlIChcbiAgICAoKiBVc2luZyBbeCArLiAoLTAuKV0gb24gdGhlIGZvbGxvd2luZyBsaW5lIGNvbnZpbmNlcyB0aGUgY29tcGlsZXIgdG8gYXZvaWQgYSBjZXJ0YWluXG4gICAgICAgYm94aW5nICh0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbGxvY2F0aW9uIGluIGVhY2ggaXRlcmF0aW9uKS4gIFNvb24sIHRoZSBjb21waWxlclxuICAgICAgIHNob3VsZG4ndCBuZWVkIHRoaXMgXCJoaW50XCIgdG8gYXZvaWQgdGhlIGJveGluZy4gIFRoZSByZWFzb24gd2UgYWRkIC0wIHJhdGhlciB0aGFuIDBcbiAgICAgICBpcyB0aGF0IFt4ICsuICgtMC4pXSBpcyBhcHBhcmVudGx5IGFsd2F5cyB0aGUgc2FtZSBhcyBbeF0sIHdoZXJlYXMgW3ggKy4gMC5dIGlzXG4gICAgICAgbm90LCBpbiB0aGF0IGl0IHNlbmRzIFstMC5dIHRvIFswLl0uICBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBiZWNhdXNlIHdlIHdhbnRcbiAgICAgICBbaW50X3BvdyAoLTAuKSAoLTEpXSB0byByZXR1cm4gbmVnX2luZmluaXR5IGp1c3QgbGlrZSBbLTAuICoqIC0xLl0gd291bGQuICAqKVxuICAgIGxldCB4ID0gcmVmICh4ICsuIC0wLikgaW5cbiAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgbGV0IGFjY3VtID0gcmVmIDEuIGluXG4gICAgaWYgIW4gPCAwXG4gICAgdGhlbiAoXG4gICAgICAoKiB4ICoqIG4gPSAoMS94KSAqKiAtbiAqKVxuICAgICAgeCA6PSAxLiAvLiAheDtcbiAgICAgIG4gOj0gfi0gKCFuKTtcbiAgICAgIGlmICFuIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIG4gbXVzdCBoYXZlIGJlZW4gbWluX2ludCwgc28gaXQgaXMgbm93IHNvIGJpZyB0aGF0IGl0IGhhcyB3cmFwcGVkIGFyb3VuZC5cbiAgICAgICAgICAgV2UgZGVjcmVtZW50IGl0IHNvIHRoYXQgaXQgbG9va3MgcG9zaXRpdmUgYWdhaW4sIGJ1dCBhY2NvcmRpbmdseSBoYXZlXG4gICAgICAgICAgIHRvIHB1dCBhbiBleHRyYSBmYWN0b3Igb2YgeCBpbiB0aGUgYWNjdW11bGF0b3IuXG4gICAgICAgICopXG4gICAgICAgIGFjY3VtIDo9ICF4O1xuICAgICAgICBkZWNyIG4pKTtcbiAgICAoKiBMZXR0aW5nIFthXSBkZW5vdGUgKHRoZSBvcmlnaW5hbCB2YWx1ZSBvZikgW3ggKiogbl0sIHdlIG1haW50YWluXG4gICAgICAgdGhlIGludmFyaWFudCB0aGF0IFsoeCAqKiBuKSAqLiBhY2N1bSA9IGFdLiAqKVxuICAgIHdoaWxlICFuID4gMSBkb1xuICAgICAgaWYgIW4gbGFuZCAxIDw+IDAgdGhlbiBhY2N1bSA6PSAheCAqLiAhYWNjdW07XG4gICAgICB4IDo9ICF4ICouICF4O1xuICAgICAgbiA6PSAhbiBsc3IgMVxuICAgIGRvbmU7XG4gICAgKCogbiBpcyBuZWNlc3NhcmlseSAxIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsXG4gICAgICAgbXVsdGlwbGljYXRpb24gYnkgeC4gKilcbiAgICAheCAqLiAhYWNjdW0pXG47O1xuXG5sZXQgcm91bmRfZ2VuIHggfmhvdyA9XG4gIGlmIHggPSAwLlxuICB0aGVuIDAuXG4gIGVsc2UgaWYgbm90IChpc19maW5pdGUgeClcbiAgdGhlbiB4XG4gIGVsc2UgKFxuICAgICgqIFNpZ25pZmljYW50IGRpZ2l0cyBhbmQgZGVjaW1hbCBkaWdpdHMuICopXG4gICAgbGV0IHNkLCBkZCA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgc2lnbmlmaWNhbnRfZGlnaXRzIHNkIC0+XG4gICAgICAgIGxldCBkZCA9IHNkIC0gdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgICAgfCBgZGVjaW1hbF9kaWdpdHMgZGQgLT5cbiAgICAgICAgbGV0IHNkID0gZGQgKyB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgc2QgPCAwXG4gICAgdGhlbiAwLlxuICAgIGVsc2UgaWYgc2QgPj0gMTdcbiAgICB0aGVuIHhcbiAgICBlbHNlIChcbiAgICAgICgqIENob29zZSB0aGUgb3JkZXIgdGhhdCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdC4gU21hbGwgcG9zaXRpdmVcbiAgICAgICAgIGludGVnZXJzIGFyZSwgYnV0IHRoZWlyIGludmVyc2VzIGluIG1vc3QgY2FzZXMgYXJlIG5vdC4gKilcbiAgICAgIGxldCBhYnNfZGQgPSBJbnQuYWJzIGRkIGluXG4gICAgICBpZiBhYnNfZGQgPiAyMiB8fCBzZCA+PSAxNlxuICAgICAgKCogMTAqKjIyIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBidXQgMTAqKjIzIGlzIG5vdCwgc28gdXNlIHRoZSBzbG93XG4gICAgICAgICBwYXRoLiAgU2ltaWxhcmx5LCBpZiB3ZSBuZWVkIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpbiB0aGUgcmVzdWx0LCB0aGVuIHRoZSBpbnRlZ2VyXG4gICAgICAgICBbcm91bmRfbmVhcmVzdCAoeCA8b3A+IG9yZGVyKV0gbWlnaHQgbm90IGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBzaW5jZVxuICAgICAgICAgZm9yIHNvbWUgcmFuZ2VzIHdlIG9ubHkgaGF2ZSAxNSBkaWdpdHMgb2YgcHJlY2lzaW9uIGd1YXJhbnRlZWQuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgd2UgYXJlIHN0aWxsIHJvdW5kaW5nIHR3aWNlIGhlcmU6XG5cbiAgICAgICAgIDEpIGZpcnN0IHRpbWUgd2hlbiByb3VuZGluZyBbeCAqLiBvcmRlcl0gb3IgW3ggLy4gb3JkZXJdIHRvIHRoZSBuZWFyZXN0IGZsb2F0XG4gICAgICAgICAoanVzdCB0aGUgbm9ybWFsIHdheSBmbG9hdGluZy1wb2ludCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiB3b3JrcyksXG5cbiAgICAgICAgIDIpIHNlY29uZCB0aW1lIHdoZW4gYXBwbHlpbmcgW3JvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuXSB0byB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgYWJvdmUgb3BlcmF0aW9uXG5cbiAgICAgICAgIFNvIGZvciBhcmd1bWVudHMgd2l0aGluIGFuIHVscCBmcm9tIGEgdGllIHdlIG1pZ2h0IHN0aWxsIHByb2R1Y2UgYW4gb2ZmLWJ5LW9uZVxuICAgICAgICAgcmVzdWx0LiAqKVxuICAgICAgdGhlbiBvZl9zdHJpbmcgKHNwcmludGYgXCIlLipnXCIgc2QgeClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3JkZXIgPSBpbnRfcG93IDEwLiBhYnNfZGQgaW5cbiAgICAgICAgaWYgZGQgPj0gMFxuICAgICAgICB0aGVuIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4ICouIG9yZGVyKSAvLiBvcmRlclxuICAgICAgICBlbHNlIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4IC8uIG9yZGVyKSAqLiBvcmRlcikpKVxuOztcblxubGV0IHJvdW5kX3NpZ25pZmljYW50IHggfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIHNpZ25pZmljYW50X2RpZ2l0cyAwXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQucm91bmRfc2lnbmlmaWNhbnQ6IGludmFsaWQgYXJndW1lbnQgc2lnbmlmaWNhbnRfZGlnaXRzOiVkXCJcbiAgICAgIHNpZ25pZmljYW50X2RpZ2l0c1xuICAgICAgKClcbiAgZWxzZSByb3VuZF9nZW4geCB+aG93Oihgc2lnbmlmaWNhbnRfZGlnaXRzIHNpZ25pZmljYW50X2RpZ2l0cylcbjs7XG5cbmxldCByb3VuZF9kZWNpbWFsIHggfmRlY2ltYWxfZGlnaXRzID0gcm91bmRfZ2VuIHggfmhvdzooYGRlY2ltYWxfZGlnaXRzIGRlY2ltYWxfZGlnaXRzKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAoKiBjbGFtcF91bmNoZWNrZWQgaXMgaW4gZmxvYXQwLm1sICopXG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgaWYgbWluIDw9IG1heFxuICB0aGVuIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG47O1xuXG5sZXQgKCArICkgPSAoICsuIClcbmxldCAoIC0gKSA9ICggLS4gKVxubGV0ICggKiApID0gKCAqLiApXG5sZXQgKCAqKiApID0gKCAqKiApXG5sZXQgKCAvICkgPSAoIC8uIClcbmxldCAoICUgKSA9ICggJS4gKVxubGV0ICggfi0gKSA9ICggfi0uIClcblxubGV0IHNpZ25fZXhuIHQgOiBTaWduLnQgPVxuICBpZiB0ID4gMC5cbiAgdGhlbiBQb3NcbiAgZWxzZSBpZiB0IDwgMC5cbiAgdGhlbiBOZWdcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiBaZXJvXG4gIGVsc2UgRXJyb3IucmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiRmxvYXQuc2lnbl9leG4gb2YgTkFOXCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IHNpZ25fb3JfbmFuIHQgOiBTaWduX29yX25hbi50ID1cbiAgaWYgdCA+IDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8IDAuIHRoZW4gTmVnIGVsc2UgaWYgdCA9IDAuIHRoZW4gWmVybyBlbHNlIE5hblxuOztcblxubGV0IGllZWVfbmVnYXRpdmUgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBQb2x5LihiaXRzIDwgU3RkbGliLkludDY0Lnplcm8pXG47O1xuXG5sZXQgZXhwb25lbnRfYml0cyA9IDExXG5sZXQgbWFudGlzc2FfYml0cyA9IDUyXG5sZXQgZXhwb25lbnRfbWFzazY0ID0gSW50NjQuKHNoaWZ0X2xlZnQgb25lIGV4cG9uZW50X2JpdHMgLSBvbmUpXG5sZXQgZXhwb25lbnRfbWFzayA9IEludDY0LnRvX2ludF9leG4gZXhwb25lbnRfbWFzazY0XG5sZXQgbWFudGlzc2FfbWFzayA9IEludDYzLihzaGlmdF9sZWZ0IG9uZSBtYW50aXNzYV9iaXRzIC0gb25lKVxubGV0IG1hbnRpc3NhX21hc2s2NCA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhX21hc2tcblxubGV0IGllZWVfZXhwb25lbnQgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2NC4oYml0X2FuZCAoc2hpZnRfcmlnaHRfbG9naWNhbCBiaXRzIG1hbnRpc3NhX2JpdHMpIGV4cG9uZW50X21hc2s2NClcbiAgfD4gU3RkbGliLkludDY0LnRvX2ludFxuOztcblxubGV0IGllZWVfbWFudGlzc2EgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICAoKiBUaGlzIGlzIHNhZmUgYmVjYXVzZSBtYW50aXNzYV9tYXNrNjQgPCBJbnQ2My5tYXhfdmFsdWUgKilcbiAgKEludDYzLm9mX2ludDY0X3RydW5jKSBTdGRsaWIuSW50NjQuKGxvZ2FuZCBiaXRzIG1hbnRpc3NhX21hc2s2NClcbjs7XG5cbmxldCBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBpZiBJbnQuKGJpdF9hbmQgZXhwb25lbnQgZXhwb25lbnRfbWFzayA8PiBleHBvbmVudClcbiAgdGhlbiBmYWlsd2l0aGYgXCJleHBvbmVudCAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIGV4cG9uZW50IGV4cG9uZW50X21hc2sgKClcbiAgZWxzZSBpZiBJbnQ2My4oYml0X2FuZCBtYW50aXNzYSBtYW50aXNzYV9tYXNrIDw+IG1hbnRpc3NhKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIm1hbnRpc3NhICVzIG91dCBvZiByYW5nZSBbMCwgJXNdXCJcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2EpXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhX21hc2spXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgc2lnbl9iaXRzID0gaWYgbmVnYXRpdmUgdGhlbiBTdGRsaWIuSW50NjQubWluX2ludCBlbHNlIFN0ZGxpYi5JbnQ2NC56ZXJvIGluXG4gICAgbGV0IGV4cHRfYml0cyA9XG4gICAgICBTdGRsaWIuSW50NjQuc2hpZnRfbGVmdCAoU3RkbGliLkludDY0Lm9mX2ludCBleHBvbmVudCkgbWFudGlzc2FfYml0c1xuICAgIGluXG4gICAgbGV0IG1hbnRfYml0cyA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhIGluXG4gICAgbGV0IGJpdHMgPSBTdGRsaWIuSW50NjQuKGxvZ29yIHNpZ25fYml0cyAobG9nb3IgZXhwdF9iaXRzIG1hbnRfYml0cykpIGluXG4gICAgU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgYml0cylcbjs7XG5cbmxldCBjcmVhdGVfaWVlZSB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhKVxuOztcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdG9fc3RyaW5nIHggPSBQcmludGYuc3ByaW50ZiBcIiUuOEdcIiB4XG4gIGxldCBzZXhwX29mX3QgeCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX3N0cmluZyB4XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBUaGVzZSBhcmUgcGFydGx5IGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRvIGF2b2lkIHNvbWUgYm94aW5nIHdlJ3JlIGdldHRpbmcgd2l0aFxuICAgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dLiAgVGhleSBhbHNvIG1ha2UgW0Zsb2F0LmlzX25lZ2F0aXZlIG5hbl0gYW5kXG4gICBbRmxvYXQuaXNfbm9uX3Bvc2l0aXZlIG5hbl0gcmV0dXJuIFtmYWxzZV07IHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXSByZXR1cm5cbiAgIFt0cnVlXS4gKilcbmxldCBpc19wb3NpdGl2ZSB0ID0gdCA+IDAuXG5sZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSB0ID49IDAuXG5sZXQgaXNfbmVnYXRpdmUgdCA9IHQgPCAwLlxubGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gdCA8PSAwLlxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5GbG9hdFwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoICUgKSA9ICggJSApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50ID0gb2ZfaW50XG4gIGxldCBvZl9mbG9hdCB4ID0geFxuZW5kXG5cbm1vZHVsZSBPX2RvdCA9IHN0cnVjdFxuICBsZXQgKCAqLiApID0gKCAqIClcbiAgbGV0ICggKy4gKSA9ICggKyApXG4gIGxldCAoIC0uICkgPSAoIC0gKVxuICBsZXQgKCAvLiApID0gKCAvIClcbiAgbGV0ICggJS4gKSA9ICggJSApXG4gIGxldCAoIH4tLiApID0gKCB+LSApXG4gIGxldCAoICoqLiApID0gKCAqKiApXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJveCA9IGJveFxuICBsZXQgY2xhbXBfdW5jaGVja2VkID0gY2xhbXBfdW5jaGVja2VkXG4gIGxldCBsb3dlcl9ib3VuZF9mb3JfaW50ID0gbG93ZXJfYm91bmRfZm9yX2ludFxuICBsZXQgdXBwZXJfYm91bmRfZm9yX2ludCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHNwZWNpYWxpemVkX2hhc2ggPSBoYXNoX2Zsb2F0XG4gIGxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICBsZXQgaXJvdW5kX25lYXJlc3RfZXhuXzY0ID0gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IHJlcGxhY2UgZGVmYXVsdHMgaW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLlxuXG4gICBUaGUgZGVzaXJlZCBiZWhhdmlvciBoZXJlIGlzIHRvIHByb3BhZ2F0ZSBhIG5hbiBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLiBCZWNhdXNlIHRoZVxuICAgZmlyc3QgY29tcGFyaXNvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbiwgaXQgc3VmZmljZXMgdG9cbiAgIGNoZWNrIGlmIHggaXMgbmFuLiBUaGVuLCB3aGVuIHggaXMgbmFuIG9yIGJvdGggeCBhbmQgeSBhcmUgbmFuLCB3ZSByZXR1cm4geCA9IG5hbjsgYW5kXG4gICB3aGVuIHkgaXMgbmFuIGJ1dCBub3QgeCwgd2UgcmV0dXJuIHkgPSBuYW4uXG5cbiAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucy4gIFRoZSBiZW5jaG1hcmsgYmVsb3cgc2hvd3MgYSBmZXdcbiAgIGRpZmZlcmVudCB2ZXJzaW9ucy4gIFRoaXMgYmVuY2htYXJrIHdhcyBydW4gb3ZlciBhbiBhcnJheSBvZiByYW5kb20gZmxvYXRzIChub25lIG9mXG4gICB3aGljaCBhcmUgbmFuKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuNDJ1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDIuMDJ1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuODh1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG4gICBUaGUgYmVuY2htYXJrIGJlbG93IHdhcyBydW4gd2hlbiB4ID4geSBpcyBhbHdheXMgdHJ1ZSAoYWdhaW4sIG5vIG5hbiB2YWx1ZXMpLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi44M3VzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS45N3VzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS41NnVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4qKVxubGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5sZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCdWZmZXJfaW50ZlxuaW5jbHVkZSBTdGRsaWIuQnVmZmVyXG5cbmxldCBjb250ZW50c19ieXRlcyA9IHRvX2J5dGVzXG5sZXQgYWRkX3N1YnN0cmluZyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YnN0cmluZyB0IHMgcG9zIGxlblxubGV0IGFkZF9zdWJieXRlcyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YmJ5dGVzIHQgcyBwb3MgbGVuXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3N0cmluZyAoY29udGVudHMgdClcblxubGV0IGNhbWxfYnVmZmVyX2xlbmd0aCA9XG4gIChTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuQnVmZmVyLmxlbmd0aCA6IHQgLT4gaW50KSA6ICh0W0Bsb2NhbF0pIC0+IGludClcbjs7XG5cbmxldCBjYW1sX2J1ZmZlcl9ibGl0ID1cbiAgKFN0ZGxpYi5PYmoubWFnaWNcbiAgICAgKFN0ZGxpYi5CdWZmZXIuYmxpdCA6IFN0ZGxpYi5CdWZmZXIudCAtPiBpbnQgLT4gQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQpXG4gICA6IChTdGRsaWIuQnVmZmVyLnRbQGxvY2FsXSkgLT4gaW50IC0+IChCeXRlcy50W0Bsb2NhbF0pIC0+IGludCAtPiBpbnQgLT4gdW5pdClcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBsZW5ndGggPSBjYW1sX2J1ZmZlcl9sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIGNhbWxfYnVmZmVyX2JsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFN0ZGxpYi5CdWZmZXIpIChUb19ieXRlcylcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID0gU3RkbGliLlByaW50ZXhjLnJhd19iYWNrdHJhY2VcblxubGV0IGVsaWRlID0gcmVmIGZhbHNlXG5sZXQgZWxpZGVkX21lc3NhZ2UgPSBcIjxiYWNrdHJhY2UgZWxpZGVkIGluIHRlc3Q+XCJcblxubGV0IGdldCA/KGF0X21vc3RfbnVtX2ZyYW1lcyA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgU3RkbGliLlByaW50ZXhjLmdldF9jYWxsc3RhY2sgYXRfbW9zdF9udW1fZnJhbWVzXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBpZiAhZWxpZGUgdGhlbiBlbGlkZWRfbWVzc2FnZSBlbHNlIFN0ZGxpYi5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyB0XG47O1xuXG5sZXQgdG9fc3RyaW5nX2xpc3QgdCA9IFN0cmluZy5zcGxpdF9saW5lcyAodG9fc3RyaW5nIHQpXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkxpc3QgKExpc3QubWFwICh0b19zdHJpbmdfbGlzdCB0KSB+ZjooZnVuIHggLT4gU2V4cC5BdG9tIHgpKVxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBzZXRfcmVjb3JkaW5nID0gU3RkbGliLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbiAgbGV0IGFtX3JlY29yZGluZyA9IFN0ZGxpYi5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4gIGxldCBtb3N0X3JlY2VudCAoKSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKVxuXG4gIGxldCBtb3N0X3JlY2VudF9mb3JfZXhuIGV4biA9XG4gICAgaWYgRXhuLmlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuIHRoZW4gU29tZSAobW9zdF9yZWNlbnQgKCkpIGVsc2UgTm9uZVxuICA7O1xuXG4gICgqIFdlIHR1cm4gb24gYmFja3RyYWNlcyBieSBkZWZhdWx0IGlmIE9DQU1MUlVOUEFSQU0gZG9lc24ndCBleHBsaWNpdGx5IG1lbnRpb24gdGhlbS4gKilcbiAgbGV0IG1heWJlX3NldF9yZWNvcmRpbmcgKCkgPVxuICAgIGxldCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgPVxuICAgICAgbWF0Y2ggU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSB4IC0+IExpc3QuZXhpc3RzIChTdHJpbmcuc3BsaXQgeCB+b246JywnKSB+ZjooU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiYlwiKVxuICAgIGluXG4gICAgaWYgbm90IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyB0aGVuIHNldF9yZWNvcmRpbmcgdHJ1ZVxuICA7O1xuXG4gICgqIHRoZSBjYWxsZXIgc2V0IHNvbWV0aGluZywgdGhleSBhcmUgcmVzcG9uc2libGUgKilcblxuICBsZXQgd2l0aF9yZWNvcmRpbmcgYiB+ZiA9XG4gICAgbGV0IHNhdmVkID0gYW1fcmVjb3JkaW5nICgpIGluXG4gICAgc2V0X3JlY29yZGluZyBiO1xuICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gc2V0X3JlY29yZGluZyBzYXZlZClcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBFeG4ubWF5YmVfc2V0X3JlY29yZGluZyAoKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIHRoZSB0b3BsZXZlbCBvZiB0aGUgQmFzZSBsaWJyYXJ5OyBpdCdzIHdoYXQgeW91IGdldCB3aGVuIHlvdSB3cml0ZVxuICAgIFtvcGVuIEJhc2VdLlxuXG4gICAgVGhlIGdvYWwgb2YgQmFzZSBpcyBib3RoIHRvIGJlIGEgbW9yZSBjb21wbGV0ZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIHJpY2hlciBBUElzLFxuICAgIGFuZCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgaW4gaXRzIGRlc2lnbi4gRm9yIGluc3RhbmNlLCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeVxuICAgIHNvbWUgdGhpbmdzIGhhdmUgbW9kdWxlcyBhbmQgb3RoZXJzIGRvbid0OyBpbiBCYXNlLCBldmVyeXRoaW5nIGlzIGEgbW9kdWxlLlxuXG4gICAgQmFzZSBleHRlbmRzIHNvbWUgbW9kdWxlcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIGxpa2UgW0FycmF5XSxcbiAgICBbQnVmZmVyXSwgW0J5dGVzXSwgW0NoYXJdLCBbSGFzaHRibF0sIFtJbnQzMl0sIFtJbnQ2NF0sIFtMYXp5XSwgW0xpc3RdLCBbTWFwXSxcbiAgICBbTmF0aXZlaW50XSwgW1ByaW50Zl0sIFtSYW5kb21dLCBbU2V0XSwgW1N0cmluZ10sIFtTeXNdLCBhbmQgW1VjaGFyXS4gT25lIGtleVxuICAgIGRpZmZlcmVuY2UgaXMgdGhhdCBCYXNlIGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMgYXMgbXVjaCBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeSBhbmRcbiAgICBpbnN0ZWFkIG1ha2VzIGhlYXZ5IHVzZSBvZiB0aGUgW1Jlc3VsdF0gdHlwZSwgYXMgaW46XG5cbiAgICB7WyB0eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYiBdfVxuXG4gICAgQmFzZSBhbHNvIGFkZHMgZW50aXJlbHkgbmV3IG1vZHVsZXMsIG1vc3Qgbm90YWJseTpcblxuICAgIC0gW0NvbXBhcmFibGVdLCBbQ29tcGFyYXRvcl0sIGFuZCBbQ29tcGFyaXNvbnNdIGluIGxpZXUgb2YgcG9seW1vcnBoaWMgY29tcGFyZS5cbiAgICAtIFtDb250YWluZXJdLCB3aGljaCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGFjcm9zcyBjb250YWluZXItbGlrZSBkYXRhXG4gICAgICBzdHJ1Y3R1cmVzIChhcnJheXMsIGxpc3RzLCBzdHJpbmdzKS5cbiAgICAtIFtSZXN1bHRdLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSwgc3VwcG9ydGluZyB0aGUgb3ItZXJyb3IgcGF0dGVybi5cbiopXG5cbigqXyBXZSBoaWRlIHRoaXMgZnJvbSB0aGUgd2ViIGRvY3MgYmVjYXVzZSB0aGUgbGluZSB3cmFwcGluZyBpcyBiYWQsIG1ha2luZyBpdFxuICBwcmV0dHkgbXVjaCBpbnNjcnV0YWJsZS4gKilcbigqKi8qKilcblxuKCogVGhlIGludGVudCBpcyB0byBzaGFkb3cgYWxsIG9mIElOUklBJ3Mgc3RhbmRhcmQgbGlicmFyeS4gIE1vZHVsZXMgYmVsb3cgd291bGQgY2F1c2VcbiAgIGNvbXBpbGF0aW9uIGVycm9ycyB3aXRob3V0IGJlaW5nIHJlbW92ZWQgZnJvbSBbU2hhZG93X3N0ZGxpYl0gYmVmb3JlIGluY2x1c2lvbi4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgKCogTW9kdWxlcyBkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW5fY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLkluX2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBPdXRfY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLk91dF9jaGFubmVsXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0XG4gICgqIFN1cHBvcnQgZm9yIGdlbmVyYXRlZCBsZXhlcnMgKilcbiAgd2l0aCBtb2R1bGUgTGV4aW5nIDo9IFNoYWRvd19zdGRsaWIuTGV4aW5nXG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0IDo9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA6PSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmKVxuICBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiovKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmluYXJ5X3NlYXJjaFxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gQmluYXJ5X3NlYXJjaGFibGVcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQnVmZmVyID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcXVhbCA9IEVxdWFsXG5tb2R1bGUgRXJyb3IgPSBFcnJvclxubW9kdWxlIEV4biA9IEV4blxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGbG9hdCA9IEZsb2F0XG5tb2R1bGUgRmxvYXRhYmxlID0gRmxvYXRhYmxlXG5tb2R1bGUgRm4gPSBGblxubW9kdWxlIEZvcm1hdHRlciA9IEZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVcbm1vZHVsZSBIYXNoZXIgPSBIYXNoZXJcbm1vZHVsZSBIYXNodGJsID0gSGFzaHRibFxubW9kdWxlIElkZW50aWZpYWJsZSA9IElkZW50aWZpYWJsZVxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludGFibGUgPSBJbnRhYmxlXG5tb2R1bGUgSW50X21hdGggPSBJbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE5hdGl2ZWludCA9IE5hdGl2ZWludFxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvclxubW9kdWxlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24gPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5tb2R1bGUgT3JkZXJpbmcgPSBPcmRlcmluZ1xubW9kdWxlIFBvbHkgPSBQb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IFBvcGNvdW50XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiB0aGUgaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBSYW5kb20gPSBSYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBTeXNcbm1vZHVsZSBUID0gVFxubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxuKCogQXZvaWQgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBmb3IgdXNlcyBvZiB0aGUgc2lnbmF0dXJlcyBkZWZpbmVkIGluIFtUXS4gKilcbmluY2x1ZGUgVFxuXG4oKiBUaGlzIGlzIGEgaGFjayBzbyB0aGF0IG9kb2MgY3JlYXRlcyBiZXR0ZXIgZG9jdW1lbnRhdGlvbi4gKilcbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cF93aXRoX2NvbXBhcmFibGUgKCoqIEBpbmxpbmUgKilcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcyA9IHN0cnVjdFxuICBtb2R1bGUgRmllbGRzbGliID0gRmllbGRzbGliXG4gIG1vZHVsZSBHbG9iYWxpemUgPSBHbG9iYWxpemVcbiAgbW9kdWxlIE9ial9sb2NhbCA9IE9ial9sb2NhbFxuICBtb2R1bGUgUHB4X2NvbXBhcmVfbGliID0gUHB4X2NvbXBhcmVfbGliXG4gIG1vZHVsZSBQcHhfZW51bWVyYXRlX2xpYiA9IFBweF9lbnVtZXJhdGVfbGliXG4gIG1vZHVsZSBQcHhfaGFzaF9saWIgPSBQcHhfaGFzaF9saWJcbiAgbW9kdWxlIFZhcmlhbnRzbGliID0gVmFyaWFudHNsaWJcblxuICBsZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmdcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0gYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZSBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGludCA9IEFycmF5LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBib29sID0gQXJyYXkuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX2FycmF5IDpcbiAgICAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIGFycmF5W0BvY2FtbC5sb2NhbF0pIC0+ICdhIGFycmF5XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfKVxuICAgICAgICA6ICAoKChhX18wMDlfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwOV8pIC0+IChhX18wMDlfIGFycmF5W0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18wMDlfIGFycmF5KSAtPlxuICAgICAgQXJyYXkuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGFycmF5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGFycmF5ID1cbiAgICBBcnJheS50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9hcnJheSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIEFycmF5LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBhcnJheV9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBhcnJheSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBBcnJheS50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ib29sID0gKEJvb2wuY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQpXG4gIGxldCBlcXVhbF9ib29sID0gKEJvb2wuZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9ib29sIDogKGJvb2xbQG9jYW1sLmxvY2FsXSkgLT4gYm9vbCkgPVxuICAgIChCb29sLmdsb2JhbGl6ZSA6IChib29sW0BvY2FtbC5sb2NhbF0pIC0+IGJvb2wpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfYm9vbCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEJvb2wuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfYm9vbCA6IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEJvb2wuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBib29sX29mX3NleHAgPSAoQm9vbC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYm9vbClcbiAgbGV0IHNleHBfb2ZfYm9vbCA9IChCb29sLnNleHBfb2ZfdCA6IGJvb2wgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCb29sLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9jaGFyID0gKENoYXIuY29tcGFyZSA6IGNoYXIgLT4gY2hhciAtPiBpbnQpXG4gIGxldCBlcXVhbF9jaGFyID0gKENoYXIuZXF1YWwgOiBjaGFyIC0+IGNoYXIgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9jaGFyIDogKGNoYXJbQG9jYW1sLmxvY2FsXSkgLT4gY2hhcikgPVxuICAgIChDaGFyLmdsb2JhbGl6ZSA6IChjaGFyW0BvY2FtbC5sb2NhbF0pIC0+IGNoYXIpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfY2hhciA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIENoYXIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfY2hhciA6IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IENoYXIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBjaGFyX29mX3NleHAgPSAoQ2hhci50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gY2hhcilcbiAgbGV0IHNleHBfb2ZfY2hhciA9IChDaGFyLnNleHBfb2ZfdCA6IGNoYXIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBDaGFyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGV4biA9IEV4bi50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX2V4biA9IChFeG4uc2V4cF9vZl90IDogZXhuIC0+IFNleHBsaWIwLlNleHAudClcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfZmxvYXQgPSAoRmxvYXQuY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludClcbiAgbGV0IGVxdWFsX2Zsb2F0ID0gKEZsb2F0LmVxdWFsIDogZmxvYXQgLT4gZmxvYXQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9mbG9hdCA6IChmbG9hdFtAb2NhbWwubG9jYWxdKSAtPiBmbG9hdCkgPVxuICAgIChGbG9hdC5nbG9iYWxpemUgOiAoZmxvYXRbQG9jYW1sLmxvY2FsXSkgLT4gZmxvYXQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfZmxvYXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgRmxvYXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gRmxvYXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBmbG9hdF9vZl9zZXhwID0gKEZsb2F0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBmbG9hdClcbiAgbGV0IHNleHBfb2ZfZmxvYXQgPSAoRmxvYXQuc2V4cF9vZl90IDogZmxvYXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludCA9IEludC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50ID0gKEludC5jb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQgPSAoSW50LmVxdWFsIDogaW50IC0+IGludCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2ludCA6IChpbnRbQG9jYW1sLmxvY2FsXSkgLT4gaW50KSA9XG4gICAgKEludC5nbG9iYWxpemUgOiAoaW50W0BvY2FtbC5sb2NhbF0pIC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIEludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQgOiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludF9vZl9zZXhwID0gKEludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50KVxuICBsZXQgc2V4cF9vZl9pbnQgPSAoSW50LnNleHBfb2ZfdCA6IGludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50MzIgPSAoSW50MzIuY29tcGFyZSA6IGludDMyIC0+IGludDMyIC0+IGludClcbiAgbGV0IGVxdWFsX2ludDMyID0gKEludDMyLmVxdWFsIDogaW50MzIgLT4gaW50MzIgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9pbnQzMiA6IChpbnQzMltAb2NhbWwubG9jYWxdKSAtPiBpbnQzMikgPVxuICAgIChJbnQzMi5nbG9iYWxpemUgOiAoaW50MzJbQG9jYW1sLmxvY2FsXSkgLT4gaW50MzIpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50MzIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50MzIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50MzIgOiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50MzIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQzMl9vZl9zZXhwID0gKEludDMyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQzMilcbiAgbGV0IHNleHBfb2ZfaW50MzIgPSAoSW50MzIuc2V4cF9vZl90IDogaW50MzIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDMyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDY0ID0gKEludDY0LmNvbXBhcmUgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQ2NCA9IChJbnQ2NC5lcXVhbCA6IGludDY0IC0+IGludDY0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfaW50NjQgOiAoaW50NjRbQG9jYW1sLmxvY2FsXSkgLT4gaW50NjQpID1cbiAgICAoSW50NjQuZ2xvYmFsaXplIDogKGludDY0W0BvY2FtbC5sb2NhbF0pIC0+IGludDY0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2ludDY0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDY0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDY0IDogaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDY0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50NjRfb2Zfc2V4cCA9IChJbnQ2NC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50NjQpXG4gIGxldCBzZXhwX29mX2ludDY0ID0gKEludDY0LnNleHBfb2ZfdCA6IGludDY0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQ2NC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gaW50ID0gTGlzdC5jb21wYXJlXG4gIGxldCBlcXVhbF9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gYm9vbCA9IExpc3QuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX2xpc3QgOlxuICAgICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgbGlzdFtAb2NhbWwubG9jYWxdKSAtPiAnYSBsaXN0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNjJfKVxuICAgICAgICA6ICAoKChhX18wNjJfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzA2Ml8pIC0+IChhX18wNjJfIGxpc3RbQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzA2Ml8gbGlzdCkgLT5cbiAgICAgIExpc3QuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBsaXN0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIExpc3QuaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgbGlzdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBsaXN0ID1cbiAgICBMaXN0LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2xpc3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgbGlzdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIExpc3Quc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgbGlzdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBMaXN0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmNvbXBhcmUgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGludClcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA9IChOYXRpdmVpbnQuZXF1YWwgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfbmF0aXZlaW50IDogKG5hdGl2ZWludFtAb2NhbWwubG9jYWxdKSAtPiBuYXRpdmVpbnQpID1cbiAgICAoTmF0aXZlaW50Lmdsb2JhbGl6ZSA6IChuYXRpdmVpbnRbQG9jYW1sLmxvY2FsXSkgLT4gbmF0aXZlaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX25hdGl2ZWludCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gTmF0aXZlaW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X29mX3NleHAgPSAoTmF0aXZlaW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBuYXRpdmVpbnQpXG4gIGxldCBzZXhwX29mX25hdGl2ZWludCA9IChOYXRpdmVpbnQuc2V4cF9vZl90IDogbmF0aXZlaW50IC0+IFNleHBsaWIwLlNleHAudClcblxuICBsZXQgKG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBOYXRpdmVpbnQudF9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBpbnQgPVxuICAgIE9wdGlvbi5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBib29sID1cbiAgICBPcHRpb24uZXF1YWxcbiAgOztcblxuICBsZXQgZ2xvYmFsaXplX29wdGlvbiA6XG4gICAgJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSBvcHRpb25bQG9jYW1sLmxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wODVfKVxuICAgICAgICA6ICAoKChhX18wODVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzA4NV8pIC0+IChhX18wODVfIG9wdGlvbltAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMDg1XyBvcHRpb24pIC0+XG4gICAgICBPcHRpb24uZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIG9wdGlvblxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBPcHRpb24uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgb3B0aW9uX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIG9wdGlvbiA9XG4gICAgT3B0aW9uLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX29wdGlvbiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBvcHRpb24gLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBPcHRpb24uc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBvcHRpb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gT3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBpbnQgPSBSZWYuY29tcGFyZVxuICBsZXQgZXF1YWxfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGJvb2wgPSBSZWYuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX3JlZiA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgcmVmW0BvY2FtbC5sb2NhbF0pIC0+ICdhIHJlZiA9XG4gICAgZnVuICh0eXBlIGFfXzEwMl8pXG4gICAgICAgIDogICgoKGFfXzEwMl9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMTAyXykgLT4gKGFfXzEwMl8gcmVmW0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18xMDJfIHJlZikgLT5cbiAgICAgIFJlZi5nbG9iYWxpemVcbiAgOztcblxuICBsZXQgcmVmX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHJlZiA9XG4gICAgUmVmLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3JlZiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSByZWYgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBSZWYuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IHJlZl9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgcmVmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZWYudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3N0cmluZyA9IChTdHJpbmcuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICBsZXQgZXF1YWxfc3RyaW5nID0gKFN0cmluZy5lcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9zdHJpbmcgOiAoc3RyaW5nW0BvY2FtbC5sb2NhbF0pIC0+IHN0cmluZykgPVxuICAgIChTdHJpbmcuZ2xvYmFsaXplIDogKHN0cmluZ1tAb2NhbWwubG9jYWxdKSAtPiBzdHJpbmcpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfc3RyaW5nIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBTdHJpbmcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfc3RyaW5nIDogc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBTdHJpbmcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzdHJpbmdfb2Zfc2V4cCA9IChTdHJpbmcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHN0cmluZylcbiAgbGV0IHNleHBfb2Zfc3RyaW5nID0gKFN0cmluZy5zZXhwX29mX3QgOiBzdHJpbmcgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2J5dGVzID0gKEJ5dGVzLmNvbXBhcmUgOiBieXRlcyAtPiBieXRlcyAtPiBpbnQpXG4gIGxldCBlcXVhbF9ieXRlcyA9IChCeXRlcy5lcXVhbCA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfYnl0ZXMgOiAoYnl0ZXNbQG9jYW1sLmxvY2FsXSkgLT4gYnl0ZXMpID1cbiAgICAoQnl0ZXMuZ2xvYmFsaXplIDogKGJ5dGVzW0BvY2FtbC5sb2NhbF0pIC0+IGJ5dGVzKVxuICA7O1xuXG4gIGxldCBieXRlc19vZl9zZXhwID0gKEJ5dGVzLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBieXRlcylcbiAgbGV0IHNleHBfb2ZfYnl0ZXMgPSAoQnl0ZXMuc2V4cF9vZl90IDogYnl0ZXMgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJ5dGVzLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV91bml0ID0gKFVuaXQuY29tcGFyZSA6IHVuaXQgLT4gdW5pdCAtPiBpbnQpXG4gIGxldCBlcXVhbF91bml0ID0gKFVuaXQuZXF1YWwgOiB1bml0IC0+IHVuaXQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV91bml0IDogKHVuaXRbQG9jYW1sLmxvY2FsXSkgLT4gdW5pdCkgPVxuICAgIChVbml0Lmdsb2JhbGl6ZSA6ICh1bml0W0BvY2FtbC5sb2NhbF0pIC0+IHVuaXQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdW5pdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFVuaXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfdW5pdCA6IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFVuaXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB1bml0X29mX3NleHAgPSAoVW5pdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdW5pdClcbiAgbGV0IHNleHBfb2ZfdW5pdCA9IChVbml0LnNleHBfb2ZfdCA6IHVuaXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBVbml0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICAoKiogRm9ybWF0IHN0dWZmICopXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcblxuICAoKiogTGlzdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIExpc3QuSW5maXhcblxuICAoKiogSW50IG9wZXJhdG9ycyBhbmQgY29tcGFyaXNvbnMgKilcblxuICBpbmNsdWRlIEludC5PXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICgqKiBGbG9hdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIEZsb2F0Lk9fZG90XG5cbiAgKCogVGhpcyBpcyBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBiZSBvcHRpbWl6ZWQgYXdheSBpbiBtb3JlIGNvbnRleHRzLiAqKVxuXG4gICgqKiBSZXZlcnNlIGFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbeCB8PiBnIHw+IGZdIGlzIGVxdWl2YWxlbnQgdG8gW2YgKGcgKHgpKV0uICopXG4gIGV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuICAoKiogQXBwbGljYXRpb24gb3BlcmF0b3IuIFtnIEBAIGYgQEAgeF0gaXMgZXF1aXZhbGVudCB0byBbZyAoZiAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCBAQCApIDogKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4gICgqKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuICAoKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuICBleHRlcm5hbCAoICYmICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgZXh0ZXJuYWwgKCB8fCApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgZXh0ZXJuYWwgbm90IDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuICAoKiBUaGlzIG11c3QgYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5LiAqKVxuICBleHRlcm5hbCBpZ25vcmUgOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbiAgKCoqIENvbW1vbiBzdHJpbmcgb3BlcmF0aW9ucyAqKVxuICBsZXQgKCBeICkgPSBTdHJpbmcuKCBeIClcblxuICAoKiogUmVmZXJlbmNlIG9wZXJhdGlvbnMgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUgYW5kXG4gICAgIHRvIGtlZXAgcmVmZXJlbmNlIHVuYm94aW5nIHdvcmtpbmcgKilcbiAgZXh0ZXJuYWwgKCAhICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIHJlZiA6ICdhIC0+ICgnYSByZWZbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuICBleHRlcm5hbCAoIDo9ICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuICAoKiogUGFpciBvcGVyYXRpb25zICopXG5cbiAgbGV0IGZzdCA9IGZzdFxuICBsZXQgc25kID0gc25kXG5cbiAgKCoqIEV4Y2VwdGlvbnMgc3R1ZmYgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBtYXkgcmV3cml0ZSAnJXJhaXNlJyBhcyAnJXJlcmFpc2UnLiAqKVxuICBleHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG4gIGxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG4gIGxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gICgqKiBNaXNjICopXG5cbiAgZXh0ZXJuYWwgcGh5c19lcXVhbCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXFcIlxuICBleHRlcm5hbCBmb3JjZSA6ICgnYSBMYXp5LnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuaW5jbHVkZSBDb250YWluZXJfaW50Zi5FeHBvcnQgKCoqIEBpbmxpbmUgKilcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gTm90X2ZvdW5kX3NcblxuKCogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgW0Jhc2VdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtCYXNlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gW0Jhc2VdOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICBbQmFzZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gQmFja3RyYWNlLmluaXRpYWxpemVfbW9kdWxlICgpXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuXG5sZXQgc2V0X2lucHV0X25hbWUgbmFtZSA9IGlucHV0X25hbWUgOj0gbmFtZVxubGV0IHNldF9pbnB1dF9sZXhidWYgbGV4YnVmX29wdCA9IGlucHV0X2xleGJ1ZiA6PSBsZXhidWZfb3B0XG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgb2xkX3QgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopID0ge1xuICAgIGxvYzogdDtcbiAgICBtc2c6IHN0cmluZztcbiAgICBzdWI6IG9sZF90IGxpc3Q7XG4gICAgaWZfaGlnaGxpZ2h0OiBzdHJpbmc7XG4gIH1cblxuICB0eXBlIGxvY2F0aW9uX3JlcG9ydF9raW5kICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydF9raW5kICopID1cbiAgfCBSZXBvcnRfZXJyb3JcbiAgfCBSZXBvcnRfd2FybmluZyBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfd2FybmluZ19hc19lcnJvciBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnQgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0X2FzX2Vycm9yIG9mIHN0cmluZ1xuXG4gIHR5cGUgbG9jYXRpb25fbXNnID0gKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkgbG9jXG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0ICopID0ge1xuICAgIGtpbmQgOiBsb2NhdGlvbl9yZXBvcnRfa2luZDtcbiAgICBtYWluIDogbG9jYXRpb25fbXNnO1xuICAgIHN1YiA6IGxvY2F0aW9uX21zZyBsaXN0O1xuICB9XG5cbiAgdHlwZSB0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IG9sZF90ICopXG4gICgqKiBPbiBvY2FtbCA+PSA0LjA4OiBbdF0gaXMgYSBbbG9jYXRpb25fcmVwb3J0XSBmb3Igd2hpY2ggW2xvY2F0aW9uX3JlcG9ydF9raW5kXSBtdXN0IGJlIFtSZXBvcnRfZXJyb3JdLiAqKVxuXG4gIHR5cGUgdmVyc2lvbl9zcGVjaWZpY190ID0gW2BOZXdfZXJyb3Igb2YgbG9jYXRpb25fcmVwb3J0IHwgYE9sZF9lcnJvciBvZiBvbGRfdF1cblxuICBsZXQgdmVyc2lvbl9zcGVjaWZpY190X29mX3QgOiB0IC0+IHZlcnNpb25fc3BlY2lmaWNfdCA9IGZ1biB4IC0+XG4gICAgKCpJRl9BVF9MRUFTVCA0MDggYE5ld19lcnJvciB4ICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IGBPbGRfZXJyb3IgeCAqKVxuXG4gIGxldCBpc193ZWxsX2Zvcm1lZCBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IGtpbmQgPSBSZXBvcnRfZXJyb3I7IF8gfSAtPiB0cnVlXG4gICAgfCBgTmV3X2Vycm9yIF8gLT4gZmFsc2VcbiAgICB8IGBPbGRfZXJyb3IgXyAtPiB0cnVlXG5cbiAgbGV0IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgKG1zZyA6IGxvY2F0aW9uX21zZykgPSBGb3JtYXQuYXNwcmludGYgXCIldFwiIG1zZy50eHRcblxuICBsZXQgbWFpbl9tc2cgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgeyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIG1haW47IGxvYyA9IG1haW4ubG9jIH1cbiAgICB8IGBPbGRfZXJyb3IgeyBtc2c7IGxvYzsgXyB9IC0+IHsgdHh0ID0gbXNnOyBsb2MgfVxuXG4gIGxldCBzdWJfbXNncyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBlcnIgLT4geyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIGVycjsgbG9jID0gZXJyLmxvYyB9KVxuICAgICAgICAgIHN1YlxuICAgIHwgYE9sZF9lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIGxldCByZWMgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgfCB7IGxvYzsgbXNnOyBzdWI7IF8gfSA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgKHsgdHh0ID0gbXNnOyBsb2MgfSA6OiBhY2MpIChzdWIgQCB0YWlsKVxuICAgICAgICBpblxuICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIFtdIHN1YlxuXG4gIGxldCBvZl9leG4gZXhuID1cbiAgICAoKklGX0FUX0xFQVNUIDQwNiBtYXRjaCBlcnJvcl9vZl9leG4gZXhuIHdpdGggfCBTb21lIChgT2sgZSkgLT4gU29tZSBlIHwgTm9uZSB8IFNvbWUgYEFscmVhZHlfZGlzcGxheWVkIC0+IE5vbmUgKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDYgZXJyb3Jfb2ZfZXhuIGV4biopXG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyA9IHsgZXJyb3Igd2l0aCBtc2cgfVxuXG4gIGxldCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cgPVxuICAgIGxldCB0eHQgcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgbXNnIGluXG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCB0eHQgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbXNnIGVycm9yIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnKilcblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBzdWIgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB7IGxvYzsgdHh0IH0gLT4geyBsb2M7IG1zZyA9IHR4dDsgc3ViID0gW107IGlmX2hpZ2hsaWdodCA9IHR4dCB9KVxuICAgICAgICBzdWJcbiAgICBpblxuICAgIHsgbG9jOyBtc2cgPSB0eHQ7IHN1YjsgaWZfaGlnaGxpZ2h0ID0gdHh0IH1cblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9uZXcgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBta190eHQgeCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiB4IGluXG4gICAgbGV0IG1rIGxvYyB4ID0geyBsb2M7IHR4dCA9IG1rX3R4dCB4IH0gaW5cbiAgICB7XG4gICAgICBraW5kID0gUmVwb3J0X2Vycm9yO1xuICAgICAgbWFpbiA9IG1rIGxvYyB0eHQ7XG4gICAgICBzdWIgPSBMaXN0Lm1hcCAoZnVuIHsgbG9jOyB0eHQgfSAtPiBtayBsb2MgdHh0KSBzdWI7XG4gICAgfVxuXG4gIGxldCBtYWtlIH5zdWIgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgbXNnKilcblxuICBsZXQgX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jID0geyBlcnJvciB3aXRoIGxvYyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyA9XG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCBsb2MgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbG9jIGVycm9yIGxvYyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jKilcbmVuZFxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgbXNnID0gcmFpc2VfZXJyb3JmID9sb2MgbXNnXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcblxubGV0IHBhcnNlIHMgPVxuICAoKklGX05PVF9BVF9MRUFTVCA0MTEgcGFyc2UgcyAqKVxuICAoKklGX0FUX0xFQVNUIDQxMSBPY2FtbF9jb21tb24uUGFyc2UubG9uZ2lkZW50IEBAIExleGluZy5mcm9tX3N0cmluZyBAQCBzICopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzFcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzFcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgR2F6YWduYWlyZSwgT0NhbWxQcm8gICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBGYWJyaWNlIExlIEZlc3NhbnQsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIEhvbmdibyBaaGFuZywgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9yaWdpbmFsIENvZGUgZnJvbSBCZXItbWV0YW9jYW1sLCBtb2RpZmllZCBmb3IgMy4xMi4wIGFuZCBmaXhlZCAqKVxuKCogUHJpbnRpbmcgY29kZSBleHByZXNzaW9ucyAqKVxuKCogQXV0aG9yczogIEVkIFBpenppLCBGYWJyaWNlIExlIEZlc3NhbnQgKilcbigqIEV4dGVuc2l2ZSBSZXdyaXRlOiBIb25nYm8gWmhhbmc6IFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICopXG4oKiBUT0RPIG1vcmUgZmluZS1ncmFpbmVkIHByZWNlZGVuY2UgcHJldHR5LXByaW50aW5nICopXG5cbm9wZW4gQXN0XzQxNFxub3BlbiBBc3R0eXBlc1xub3BlbiBGb3JtYXRcbm9wZW4gTG9jYXRpb25cbm9wZW4gTG9uZ2lkZW50XG5vcGVuIFBhcnNldHJlZVxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG5lbmRcblxubGV0IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gIGluXG4gIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXNcbiAgICAgICAgLT5cbiAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICBpblxuICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgaW5cbiAgbG9vcCB0XG5cbmxldCBwcmVmaXhfc3ltYm9scyA9IFsgJyEnOyAnPyc7ICd+JyBdXG5cbmxldCBpbmZpeF9zeW1ib2xzID1cbiAgWyAnPSc7ICc8JzsgJz4nOyAnQCc7ICdeJzsgJ3wnOyAnJic7ICcrJzsgJy0nOyAnKic7ICcvJzsgJyQnOyAnJSc7ICcjJyBdXG5cbigqIHR5cGUgZml4aXR5ID0gSW5maXh8IFByZWZpeCAgKilcbmxldCBzcGVjaWFsX2luZml4X3N0cmluZ3MgPVxuICBbIFwiYXNyXCI7IFwibGFuZFwiOyBcImxvclwiOyBcImxzbFwiOyBcImxzclwiOyBcImx4b3JcIjsgXCJtb2RcIjsgXCJvclwiOyBcIjo9XCI7IFwiIT1cIjsgXCI6OlwiIF1cblxubGV0IGxldG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2wnXG4gICYmIHMuWzFdID0gJ2UnXG4gICYmIHMuWzJdID0gJ3QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxubGV0IGFuZG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2EnXG4gICYmIHMuWzFdID0gJ24nXG4gICYmIHMuWzJdID0gJ2QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxuKCogZGV0ZXJtaW5lcyBpZiB0aGUgc3RyaW5nIGlzIGFuIGluZml4IHN0cmluZy5cbiAgIGNoZWNrcyBiYWNrd2FyZHMsIGZpcnN0IGFsbG93aW5nIGEgcmVuYW1pbmcgcG9zdGZpeCAoXCJfMTAyXCIpIHdoaWNoXG4gICBtYXkgaGF2ZSByZXN1bHRlZCBmcm9tIFBleHAgLT4gVGV4cCAtPiBQZXhwIHRyYW5zbGF0aW9uLCB0aGVuIGNoZWNraW5nXG4gICBpZiBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGFyZSB2YWxpZCBpbmZpeFxuICAgY2hhcmFjdGVycy4gKilcbmxldCBmaXhpdHlfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcIlwiIC0+IGBOb3JtYWxcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcyBzcGVjaWFsX2luZml4X3N0cmluZ3MgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gaW5maXhfc3ltYm9scyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBwcmVmaXhfc3ltYm9scyAtPiBgUHJlZml4IHNcbiAgfCBzIHdoZW4gcy5bMF0gPSAnLicgLT4gYE1peGZpeCBzXG4gIHwgcyB3aGVuIGxldG9wIHMgLT4gYExldG9wIHNcbiAgfCBzIHdoZW4gYW5kb3AgcyAtPiBgQW5kb3Agc1xuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgdmlld19maXhpdHlfb2ZfZXhwID0gZnVuY3Rpb25cbiAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICBmaXhpdHlfb2Zfc3RyaW5nIGxcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IGlzX2luZml4ID0gZnVuY3Rpb24gYEluZml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19taXhmaXggPSBmdW5jdGlvbiBgTWl4Zml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19rd2RvcCA9IGZ1bmN0aW9uIGBMZXRvcCBfIHwgYEFuZG9wIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBmaXJzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bMF0gPSBjXG5sZXQgbGFzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bU3RyaW5nLmxlbmd0aCBzdHIgLSAxXSA9IGNcbmxldCBmaXJzdF9pc19pbiBjcyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBMaXN0Lm1lbSBzdHIuWzBdIGNzXG5cbigqIHdoaWNoIGlkZW50aWZpZXJzIGFyZSBpbiBmYWN0IG9wZXJhdG9ycyBuZWVkaW5nIHBhcmVudGhlc2VzICopXG5sZXQgbmVlZHNfcGFyZW5zIHR4dCA9XG4gIGxldCBmaXggPSBmaXhpdHlfb2Zfc3RyaW5nIHR4dCBpblxuICBpc19pbmZpeCBmaXggfHwgaXNfbWl4Zml4IGZpeCB8fCBpc19rd2RvcCBmaXhcbiAgfHwgZmlyc3RfaXNfaW4gcHJlZml4X3N5bWJvbHMgdHh0XG5cbigqIHNvbWUgaW5maXhlcyBuZWVkIHNwYWNlcyBhcm91bmQgcGFyZW5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCBjb21tZW50XG4gICBzeW50YXggKilcbmxldCBuZWVkc19zcGFjZXMgdHh0ID0gZmlyc3RfaXMgJyonIHR4dCB8fCBsYXN0X2lzICcqJyB0eHRcbmxldCBzdHJpbmdfbG9jIHBwZiB4ID0gZnByaW50ZiBwcGYgXCIlc1wiIHgudHh0XG5cbigqIGFkZCBwYXJlbnRoZXNlcyB0byBiaW5kZXJzIHdoZW4gdGhleSBhcmUgaW4gZmFjdCBpbmZpeCBvciBwcmVmaXggb3BlcmF0b3JzICopXG5sZXQgcHJvdGVjdF9pZGVudCBwcGYgdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIihAOyVzQDspXCJcbiAgICBlbHNlIFwiKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCB0eHRcblxubGV0IHByb3RlY3RfbG9uZ2lkZW50IHBwZiBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJWEuJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiJWEuKEA7JXNAOylcIlxuICAgIGVsc2UgXCIlYS4oJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dFxuXG50eXBlIHNwYWNlX2Zvcm1hdHRlciA9ICh1bml0LCBGb3JtYXQuZm9ybWF0dGVyLCB1bml0KSBmb3JtYXRcblxubGV0IG92ZXJyaWRlID0gZnVuY3Rpb24gT3ZlcnJpZGUgLT4gXCIhXCIgfCBGcmVzaCAtPiBcIlwiXG5cbigqIHZhcmlhbmNlIGVuY29kaW5nOiBuZWVkIHRvIHN5bmMgdXAgd2l0aCB0aGUgW3BhcnNlci5tbHldICopXG5sZXQgdHlwZV92YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgTm9WYXJpYW5jZSAtPiBcIlwiXG4gIHwgQ292YXJpYW50IC0+IFwiK1wiXG4gIHwgQ29udHJhdmFyaWFudCAtPiBcIi1cIlxuXG5sZXQgdHlwZV9pbmplY3Rpdml0eSA9IGZ1bmN0aW9uIE5vSW5qZWN0aXZpdHkgLT4gXCJcIiB8IEluamVjdGl2ZSAtPiBcIiFcIlxuXG50eXBlIGNvbnN0cnVjdCA9XG4gIFsgYGNvbnMgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYGxpc3Qgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYG5pbFxuICB8IGBub3JtYWxcbiAgfCBgc2ltcGxlIG9mIExvbmdpZGVudC50XG4gIHwgYHR1cGxlIF1cblxubGV0IHZpZXdfZXhwciB4ID1cbiAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIigpXCI7IF8gfSwgXykgLT4gYHR1cGxlXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBgbmlsXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIF8pIC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZXhwIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgIFBleHBfY29uc3RydWN0XG4gICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgIFNvbWUgeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgZTE7IGUyIF07IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAgICApO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGxvb3AgZTIgKGUxIDo6IGFjYylcbiAgICAgICAgfCBlIC0+IChMaXN0LnJldiAoZSA6OiBhY2MpLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgbHMsIGIgPSBsb29wIHggW10gaW5cbiAgICAgIGlmIGIgdGhlbiBgbGlzdCBscyBlbHNlIGBjb25zIGxzXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHgsIE5vbmUpIC0+IGBzaW1wbGUgeC50eHRcbiAgfCBfIC0+IGBub3JtYWxcblxubGV0IGlzX3NpbXBsZV9jb25zdHJ1Y3QgOiBjb25zdHJ1Y3QgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gIHwgYG5pbCB8IGB0dXBsZSB8IGBsaXN0IF8gfCBgc2ltcGxlIF8gLT4gdHJ1ZVxuICB8IGBjb25zIF8gfCBgbm9ybWFsIC0+IGZhbHNlXG5cbmxldCBwcCA9IGZwcmludGZcblxudHlwZSBjdHh0ID0geyBwaXBlIDogYm9vbDsgc2VtaSA6IGJvb2w7IGlmdGhlbmVsc2UgOiBib29sIH1cblxubGV0IHJlc2V0X2N0eHQgPSB7IHBpcGUgPSBmYWxzZTsgc2VtaSA9IGZhbHNlOyBpZnRoZW5lbHNlID0gZmFsc2UgfVxubGV0IHVuZGVyX3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGUgPSB0cnVlIH1cbmxldCB1bmRlcl9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pID0gdHJ1ZSB9XG5sZXQgdW5kZXJfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZSA9IHRydWUgfVxuKCpcbmxldCByZXNldF9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pPWZhbHNlIH1cbmxldCByZXNldF9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlPWZhbHNlIH1cbmxldCByZXNldF9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlPWZhbHNlIH1cbiopXG5cbmxldCBsaXN0IDpcbiAgICAgICdhLlxuICAgICAgP3NlcDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIGxpc3QgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/c2VwID9maXJzdCA/bGFzdCBmdSBmIHhzIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBzZXAgPSBtYXRjaCBzZXAgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiQCBcIiA6IF8gZm9ybWF0NikgaW5cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICB8IHhzIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgICAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgICAgICBmdSBmIHg7XG4gICAgICAgICAgICAgIHBwIGYgc2VwO1xuICAgICAgICAgICAgICBsb29wIGYgeHNcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICAgIGxvb3AgZiB4cztcbiAgICAgICAgcHAgZiBsYXN0XG4gIGluXG4gIGF1eCBmIHhzXG5cbmxldCBvcHRpb24gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBvcHRpb24gLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/Zmlyc3QgP2xhc3QgZnUgZiBhIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICBmdSBmIHg7XG4gICAgICBwcCBmIGxhc3RcblxubGV0IHBhcmVuIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICBib29sIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/KGZpcnN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSA/KGxhc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpIGIgZnUgZiB4IC0+XG4gIGlmIGIgdGhlbiAoXG4gICAgcHAgZiBcIihcIjtcbiAgICBwcCBmIGZpcnN0O1xuICAgIGZ1IGYgeDtcbiAgICBwcCBmIGxhc3Q7XG4gICAgcHAgZiBcIilcIilcbiAgZWxzZSBmdSBmIHhcblxubGV0IHJlYyBsb25naWRlbnQgZiA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcHJvdGVjdF9pZGVudCBmIHNcbiAgfCBMZG90ICh5LCBzKSAtPiBwcm90ZWN0X2xvbmdpZGVudCBmIGxvbmdpZGVudCB5IHNcbiAgfCBMYXBwbHkgKHksIHMpIC0+IHBwIGYgXCIlYSglYSlcIiBsb25naWRlbnQgeSBsb25naWRlbnQgc1xuXG5sZXQgbG9uZ2lkZW50X2xvYyBmIHggPSBwcCBmIFwiJWFcIiBsb25naWRlbnQgeC50eHRcblxubGV0IGNvbnN0YW50IGYgPSBmdW5jdGlvblxuICB8IFBjb25zdF9jaGFyIGkgLT4gcHAgZiBcIiVDXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIE5vbmUpIC0+IHBwIGYgXCIlU1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBTb21lIGRlbGltKSAtPiBwcCBmIFwieyVzfCVzfCVzfVwiIGRlbGltIGkgZGVsaW1cbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG5cbigqIHRyYWlsaW5nIHNwYWNlKilcbmxldCBtdXRhYmxlX2ZsYWcgZiA9IGZ1bmN0aW9uIEltbXV0YWJsZSAtPiAoKSB8IE11dGFibGUgLT4gcHAgZiBcIm11dGFibGVAO1wiXG5sZXQgdmlydHVhbF9mbGFnIGYgPSBmdW5jdGlvbiBDb25jcmV0ZSAtPiAoKSB8IFZpcnR1YWwgLT4gcHAgZiBcInZpcnR1YWxAO1wiXG5cbigqIHRyYWlsaW5nIHNwYWNlIGFkZGVkICopXG5sZXQgcmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+ICgpIHwgUmVjdXJzaXZlIC0+IHBwIGYgXCJyZWMgXCJcblxubGV0IG5vbnJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiBwcCBmIFwibm9ucmVjIFwiIHwgUmVjdXJzaXZlIC0+ICgpXG5cbmxldCBkaXJlY3Rpb25fZmxhZyBmID0gZnVuY3Rpb25cbiAgfCBVcHRvIC0+IHBwIGYgXCJ0b0AgXCJcbiAgfCBEb3dudG8gLT4gcHAgZiBcImRvd250b0AgXCJcblxubGV0IHByaXZhdGVfZmxhZyBmID0gZnVuY3Rpb24gUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwicHJpdmF0ZUAgXCJcbmxldCBpdGVyX2xvYyBmIGN0eHQgeyB0eHQ7IGxvYyA9IF8gfSA9IGYgY3R4dCB0eHRcbmxldCBjb25zdGFudF9zdHJpbmcgZiBzID0gcHAgZiBcIiVTXCIgc1xuXG5sZXQgdHl2YXIgcHBmIHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBzLlsxXSA9ICdcXCcnIHRoZW5cbiAgICAoKiB3aXRob3V0IHRoZSBzcGFjZSwgdGhpcyB3b3VsZCBiZSBwYXJzZWQgYXNcbiAgICAgICBhIGNoYXJhY3RlciBsaXRlcmFsICopXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJyAlc1wiIHNcbiAgZWxzZSBGb3JtYXQuZnByaW50ZiBwcGYgXCInJXNcIiBzXG5cbmxldCB0eXZhcl9sb2MgZiBzdHIgPSB0eXZhciBmIHN0ci50eHRcbmxldCBzdHJpbmdfcXVvdCBmIHggPSBwcCBmIFwiYCVzXCIgeFxuXG4oKiBjIFsnYSwnYl0gKilcbmxldCByZWMgY2xhc3NfcGFyYW1zX2RlZiBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiWyVhXSBcIiAoKiBzcGFjZSAqKSAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+c2VwOlwiLFwiKSBsXG5cbmFuZCB0eXBlX3dpdGhfbGFiZWwgY3R4dCBmIChsYWJlbCwgYykgPVxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBjb3JlX3R5cGUxIGN0eHQgZiBjICgqIG90aGVyd2lzZSBwYXJlbnRoZXNpemUgKilcbiAgfCBMYWJlbGxlZCBzIC0+IHBwIGYgXCIlczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuICB8IE9wdGlvbmFsIHMgLT4gcHAgZiBcIj8lczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuXG5hbmQgY29yZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjb3JlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHR5cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2Fycm93IChsLCBjdDEsIGN0MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGN0MSkgKGNvcmVfdHlwZSBjdHh0KSBjdDJcbiAgICB8IFB0eXBfYWxpYXMgKGN0LCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSBjdCB0eXZhciBzXG4gICAgfCBQdHlwX3BvbHkgKFtdLCBjdCkgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgIHwgUHR5cF9wb2x5IChzbCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYVwiXG4gICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgbClcbiAgICAgICAgICAgICAgbClcbiAgICAgICAgICBzbCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSB4XG5cbmFuZCBjb3JlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFB0eXBfdmFyIHMgLT4gdHl2YXIgZiBzXG4gICAgfCBQdHlwX3R1cGxlIGwgLT4gcHAgZiBcIiglYSlcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgIHwgUHR5cF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmICgqIFwiJWElYUA7XCIgKikgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IFsgeCBdIC0+IHBwIGYgXCIlYUA7XCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+IGxpc3QgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKUA7XCIgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLEA7XCIgZiBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF92YXJpYW50IChsLCBjbG9zZWQsIGxvdykgLT5cbiAgICAgICAgbGV0IGZpcnN0X2lzX2luaGVyaXQgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgeyBQYXJzZXRyZWUucHJmX2Rlc2MgPSBSaW5oZXJpdCBfIH0gOjogXyAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBlX3ZhcmlhbnRfaGVscGVyIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBSdGFnIChsLCBfLCBjdGwpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAOyVhQF1cIiAoaXRlcl9sb2Mgc3RyaW5nX3F1b3QpIGxcbiAgICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiJlwiKSBjdGwpXG4gICAgICAgICAgICAgICAgY3RsIChhdHRyaWJ1dGVzIGN0eHQpIHgucHJmX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IFJpbmhlcml0IGN0IC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+WyVhJWFdQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCAobCwgY2xvc2VkKSB3aXRoXG4gICAgICAgICAgICB8IFtdLCBDbG9zZWQgLT4gKClcbiAgICAgICAgICAgIHwgW10sIE9wZW4gLT4gcHAgZiBcIj5cIiAoKiBDZiAjNzIwMDogcHJpbnQgWz5dIGNvcnJlY3RseSAqKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVzQDslYVwiXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggKGNsb3NlZCwgbG93KSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgTm9uZSAtPiBpZiBmaXJzdF9pc19pbmhlcml0IHRoZW4gXCIgfFwiIGVsc2UgXCJcIlxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIFNvbWUgXyAtPiBcIjxcIiAoKiBGSVhNRSBkZXN1Z2FyIHRoZSBzeW50YXggc3VnYXIqKVxuICAgICAgICAgICAgICAgICAgfCBPcGVuLCBfIC0+IFwiPlwiKVxuICAgICAgICAgICAgICAgICAgKGxpc3QgdHlwZV92YXJpYW50X2hlbHBlciB+c2VwOlwiQDs8MSAtMj58IFwiKVxuICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICBsXG4gICAgICAgICAgKGZ1biBmIGxvdyAtPlxuICAgICAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBbXSB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSB4cyAtPiBwcCBmIFwiPkAgJWFcIiAobGlzdCBzdHJpbmdfcXVvdCkgeHMpXG4gICAgICAgICAgbG93XG4gICAgfCBQdHlwX29iamVjdCAobCwgbykgLT5cbiAgICAgICAgbGV0IGNvcmVfZmllbGRfdHlwZSBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgT3RhZyAobCwgY3QpIC0+XG4gICAgICAgICAgICAgICgqIENmICM3MjAwICopXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzOiAlYUAgJWFAIEBdXCIgbC50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgICAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG9mX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IE9pbmhlcml0IGN0IC0+IHBwIGYgXCJAWzxob3YyPiVhQCBAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZpZWxkX3ZhciBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEFzdHR5cGVzLkNsb3NlZCAtPiAoKVxuICAgICAgICAgIHwgQXN0dHlwZXMuT3BlbiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBwcCBmIFwiLi5cIiB8IF8gLT4gcHAgZiBcIiA7Li5cIilcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+PEAgJWElYUAgPiBAXVwiXG4gICAgICAgICAgKGxpc3QgY29yZV9maWVsZF90eXBlIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbCBmaWVsZF92YXIgb1xuICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgIHwgUHR5cF9jbGFzcyAobGksIGwpIC0+XG4gICAgICAgICgqRklYTUUqKVxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYSMlYUBdXCJcbiAgICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF9wYWNrYWdlIChsaWQsIGNzdHJzKSAtPiAoXG4gICAgICAgIGxldCBhdXggZiAocywgY3QpID1cbiAgICAgICAgICBwcCBmIFwidHlwZSAlYUAgPUAgJWFcIiBsb25naWRlbnRfbG9jIHMgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjc3RycyB3aXRoXG4gICAgICAgIHwgW10gLT4gcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhQCB3aXRoQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgICAgIChsaXN0IGF1eCB+c2VwOlwiQCBhbmRAIFwiKSBjc3RycylcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGNvcmVfdHlwZSBjdHh0KSBmIHhcblxuKCoqKioqKioqKioqKioqKioqKioqcGF0dGVybioqKioqKioqKioqKioqKioqKioqKVxuKCogYmUgY2F1dGlvdXMgd2hlbiB1c2UgW3BhdHRlcm5dLCBbcGF0dGVybjFdIGlzIHByZWZlcnJlZCAqKVxuYW5kIHBhdHRlcm4gY3R4dCBmIHggPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKHBhdHRlcm4gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHBhdF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2FsaWFzIChwLCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwIHByb3RlY3RfaWRlbnQgcy50eHRcbiAgICB8IF8gLT4gcGF0dGVybl9vciBjdHh0IGYgeFxuXG5hbmQgcGF0dGVybl9vciBjdHh0IGYgeCA9XG4gIGxldCByZWMgbGVmdF9hc3NvY2lhdGl2ZSB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfb3IgKHAxLCBwMik7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgbGVmdF9hc3NvY2lhdGl2ZSBwMSAocDIgOjogYWNjKVxuICAgIHwgeCAtPiB4IDo6IGFjY1xuICBpblxuICBtYXRjaCBsZWZ0X2Fzc29jaWF0aXZlIHggW10gd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHBhdHRlcm4xIGN0eHQgZiB4XG4gIHwgb3JwYXRzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCB+c2VwOlwiQCB8IFwiIChwYXR0ZXJuMSBjdHh0KSkgb3JwYXRzXG5cbmFuZCBwYXR0ZXJuMSBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBsZXQgcmVjIHBhdHRlcm5fbGlzdF9oZWxwZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCB7XG4gICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgIFNvbWUgKFtdLCB7IHBwYXRfZGVzYyA9IFBwYXRfdHVwbGUgWyBwYXQxOyBwYXQyIF07IF8gfSkgKTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYTo6JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0MSBwYXR0ZXJuX2xpc3RfaGVscGVyIHBhdDIgKCpSQSopXG4gICAgfCBwIC0+IHBhdHRlcm4xIGN0eHQgZiBwXG4gIGluXG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF92YXJpYW50IChsLCBTb21lIHApIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBfKSAtPlxuICAgICAgICBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKCh7IHR4dDsgXyB9IGFzIGxpKSwgcG8pIC0+IChcbiAgICAgICAgaWYgKCogRklYTUUgVGhlIHRoaXJkIGZpZWxkIGFsd2F5cyBmYWxzZSAqKVxuICAgICAgICAgICB0eHQgPSBMaWRlbnQgXCI6OlwiIHRoZW4gcHAgZiBcIiVhXCIgcGF0dGVybl9saXN0X2hlbHBlciB4XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBwbyB3aXRoXG4gICAgICAgICAgfCBTb21lIChbXSwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDslYVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IFNvbWUgKHZsLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAICh0eXBlICVhKUA7JWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAgXCIgc3RyaW5nX2xvYylcbiAgICAgICAgICAgICAgICB2bCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpKVxuICAgIHwgXyAtPiBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX3BhdHRlcm4gY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKChcIigpXCIgfCBcIltdXCIpIGFzIHgpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgIHBwIGYgXCIlc1wiIHhcbiAgICB8IFBwYXRfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gcHJvdGVjdF9pZGVudCBmIHR4dFxuICAgIHwgUHBhdF9hcnJheSBsIC0+IHBwIGYgXCJAWzwyPlt8JWF8XUBdXCIgKGxpc3QgKHBhdHRlcm4xIGN0eHQpIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gTm9uZSB9IC0+IHBwIGYgXCIobW9kdWxlQCBfKUAgXCJcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gU29tZSBzIH0gLT4gcHAgZiBcIihtb2R1bGVAICVzKUAgXCIgc1xuICAgIHwgUHBhdF90eXBlIGxpIC0+IHBwIGYgXCIjJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQcGF0X3JlY29yZCAobCwgY2xvc2VkKSAtPiAoXG4gICAgICAgIGxldCBsb25naWRlbnRfeF9wYXR0ZXJuIGYgKGxpLCBwKSA9XG4gICAgICAgICAgbWF0Y2ggKGxpLCBwKSB3aXRoXG4gICAgICAgICAgfCAoIHsgdHh0ID0gTGlkZW50IHM7IF8gfSxcbiAgICAgICAgICAgICAgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9IClcbiAgICAgICAgICAgIHdoZW4gcyA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2xvc2VkIHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzwyPntAOyVhQDt9QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbFxuICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+e0A7JWE7X31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsKVxuICAgIHwgUHBhdF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwxPiglYSlAXVwiIChsaXN0IH5zZXA6XCIsQDtcIiAocGF0dGVybjEgY3R4dCkpIGwgKCogbGV2ZWwxKilcbiAgICB8IFBwYXRfY29uc3RhbnQgYyAtPiBwcCBmIFwiJWFcIiBjb25zdGFudCBjXG4gICAgfCBQcGF0X2ludGVydmFsIChjMSwgYzIpIC0+IHBwIGYgXCIlYS4uJWFcIiBjb25zdGFudCBjMSBjb25zdGFudCBjMlxuICAgIHwgUHBhdF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+KCVhQDs6QDslYSlAXVwiIChwYXR0ZXJuMSBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBwYXRfbGF6eSBwIC0+IHBwIGYgXCJAWzwyPihsYXp5QDslYSlAXVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBwIC0+IHBwIGYgXCJAWzwyPmV4Y2VwdGlvbkA7JWFAXVwiIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUHBhdF9vcGVuIChsaWQsIHApIC0+XG4gICAgICAgIGxldCB3aXRoX3BhcmVuID1cbiAgICAgICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQcGF0X2FycmF5IF8gfCBQcGF0X3JlY29yZCBfXG4gICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYSBAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgKHBhcmVuIHdpdGhfcGFyZW4gQEAgcGF0dGVybjEgY3R4dClcbiAgICAgICAgICBwXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKHBhdHRlcm4gY3R4dCkgZiB4XG5cbmFuZCBsYWJlbF9leHAgY3R4dCBmIChsLCBvcHQsIHApID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPlxuICAgICAgKCogc2luZ2xlIGNhc2UgcGF0dGVybiBwYXJlbnMgbmVlZGVkIGhlcmUgKilcbiAgICAgIHBwIGYgXCIlYUAgXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgfCBPcHRpb25hbCByZXN0IC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgd2hlbiB0eHQgPSByZXN0IC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+IHBwIGYgXCI/KCVzPUA7JWEpQDtcIiByZXN0IChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lc0AgXCIgcmVzdClcbiAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiPyVzOiglYT1AOyVhKUA7XCIgcmVzdCAocGF0dGVybjEgY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXM6JWFAO1wiIHJlc3QgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApKVxuICB8IExhYmVsbGVkIGwgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSB3aGVuIHR4dCA9IGxcbiAgICAgICAgLT5cbiAgICAgICAgICBwcCBmIFwifiVzQDtcIiBsXG4gICAgICB8IF8gLT4gcHAgZiBcIn4lczolYUA7XCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcClcblxuYW5kIHN1Z2FyX2V4cHIgY3R4dCBmIGUgPVxuICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGZhbHNlXG4gIGVsc2VcbiAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2FwcGx5XG4gICAgICAgICggeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gaWQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgICAgICBhcmdzIClcbiAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4gKGxhYiwgXykgLT4gbGFiID0gTm9sYWJlbCkgYXJncyAtPiAoXG4gICAgICAgIGxldCBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgc2VwIHJpZ2h0IHByaW50X2luZGV4XG4gICAgICAgICAgICBpbmRpY2VzIHJlbV9hcmdzID1cbiAgICAgICAgICBsZXQgcHJpbnRfcGF0aCBwcGYgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgbSAtPiBwcCBwcGYgXCIuJWFcIiBsb25naWRlbnQgbVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggKGFzc2lnbiwgcmVtX2FyZ3MpIHdpdGhcbiAgICAgICAgICB8IGZhbHNlLCBbXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoIHBhdGhfcHJlZml4XG4gICAgICAgICAgICAgICAgbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCB0cnVlLCBbIHYgXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQCA8LUA7PDEgMj4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aFxuICAgICAgICAgICAgICAgIHBhdGhfcHJlZml4IGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodFxuICAgICAgICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSB2O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChpZCwgTGlzdC5tYXAgc25kIGFyZ3MpIHdpdGhcbiAgICAgICAgfCBMaWRlbnQgXCIhXCIsIFsgZSBdIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92PiElYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGU7XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTGRvdCAocGF0aCwgKChcImdldFwiIHwgXCJzZXRcIikgYXMgZnVuYykpLCBhIDo6IG90aGVyX2FyZ3MgLT4gKFxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGZ1bmMgPSBcInNldFwiIGluXG4gICAgICAgICAgICBsZXQgcHJpbnQgPSBwcmludF9pbmRleG9wIGEgTm9uZSBhc3NpZ24gaW5cbiAgICAgICAgICAgIG1hdGNoIChwYXRoLCBvdGhlcl9hcmdzKSB3aXRoXG4gICAgICAgICAgICB8IExpZGVudCBcIkFycmF5XCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLihcIiBcIlwiIFwiKVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGlkZW50IFwiU3RyaW5nXCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLltcIiBcIlwiIFwiXVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTFcIiksIGkxIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTEgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkyXCIpLCBpMSA6OiBpMiA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMiBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTNcIiksIGkxIDo6IGkyIDo6IGkzIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyOyBpMyBdIHJlc3RcbiAgICAgICAgICAgIHwgKCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkdlbmFycmF5XCIpLFxuICAgICAgICAgICAgICAgIHsgcGV4cF9kZXNjID0gUGV4cF9hcnJheSBpbmRleGVzOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IDo6IHJlc3RcbiAgICAgICAgICAgICAgKSAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgaW5kZXhlcyByZXN0XG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIHwgKExpZGVudCBzIHwgTGRvdCAoXywgcykpLCBhIDo6IGkgOjogcmVzdCB3aGVuIGZpcnN0X2lzICcuJyBzIC0+XG4gICAgICAgICAgICAoKiBleHRyYWN0IG9wZXJhdG9yOlxuICAgICAgICAgICAgICAgYXNzaWdubWVudCBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXQgXiBcIjwtXCJdLFxuICAgICAgICAgICAgICAgYWNjZXNzIG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldF0gZGlyZWN0bHlcbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBsZXQgbXVsdGlfaW5kaWNlcyA9IFN0cmluZy5jb250YWlucyBzICc7JyBpblxuICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICBtYXRjaCBpLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcnJheSBsIHdoZW4gbXVsdGlfaW5kaWNlcyAtPiBsXG4gICAgICAgICAgICAgIHwgXyAtPiBbIGkgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBsYXN0X2lzICctJyBzIGluXG4gICAgICAgICAgICBsZXQga2luZCA9XG4gICAgICAgICAgICAgICgqIGV4dHJhY3QgdGhlIHJpZ2h0IGVuZCBicmFja2V0ICopXG4gICAgICAgICAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGlmIGFzc2lnbiB0aGVuIHMuW24gLSAzXSBlbHNlIHMuW24gLSAxXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgICB8ICcpJyAtPiAoJygnLCBcIilcIilcbiAgICAgICAgICAgICAgfCAnXScgLT4gKCdbJywgXCJdXCIpXG4gICAgICAgICAgICAgIHwgJ30nIC0+ICgneycsIFwifVwiKVxuICAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhdGhfcHJlZml4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaWQgd2l0aCBMZG90IChtLCBfKSAtPiBTb21lIG0gfCBfIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCA9IFN0cmluZy5zdWIgcyAwICgxICsgU3RyaW5nLmluZGV4IHMgbGVmdCkgaW5cbiAgICAgICAgICAgIHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBcIjtcIiByaWdodFxuICAgICAgICAgICAgICAoaWYgbXVsdGlfaW5kaWNlcyB0aGVuIGV4cHJlc3Npb24gY3R4dCBlbHNlIHNpbXBsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgIGkgcmVzdFxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmFuZCBleHByZXNzaW9uIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKUAsJWEpXCIgKGV4cHJlc3Npb24gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGV4cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2Z1bmN0aW9uIF8gfCBQZXhwX2Z1biBfIHwgUGV4cF9tYXRjaCBfIHwgUGV4cF90cnkgXyB8IFBleHBfc2VxdWVuY2UgX1xuICAgIHwgUGV4cF9uZXd0eXBlIF9cbiAgICAgIHdoZW4gY3R4dC5waXBlIHx8IGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgKFBleHBfaWZ0aGVuZWxzZSBfIHwgUGV4cF9zZXF1ZW5jZSBfKSB3aGVuIGN0eHQuaWZ0aGVuZWxzZSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9sZXQgXyB8IFBleHBfbGV0bW9kdWxlIF8gfCBQZXhwX29wZW4gXyB8IFBleHBfbGV0ZXhjZXB0aW9uIF9cbiAgICB8IFBleHBfbGV0b3AgX1xuICAgICAgd2hlbiBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfZnVuIChsLCBlMCwgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDslYS0+QDslYUBdXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZTAsIHApXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9uZXd0eXBlIChsaWQsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7KHR5cGVAOyVzKUA7LT5AOyVhQF1cIiBsaWQudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfZnVuY3Rpb24gbCAtPiBwcCBmIFwiQFs8aHY+ZnVuY3Rpb24lYUBdXCIgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX21hdGNoIChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2MD5AWzwyPm1hdGNoICVhQF1AIHdpdGhAXSVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX3RyeSAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8aHYyPnRyeUAgJWFAXUAgQFs8MD53aXRoJWFAXUBdXCJcbiAgICAgICAgICAoKiBcInRyeUA7QFs8Mj4lYUBdQFxcbndpdGhAXFxuJWFcIiopXG4gICAgICAgICAgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9sZXQgKHJmLCBsLCBlKSAtPlxuICAgICAgICAoKiBwcCBmIFwiQFs8Mj5sZXQgJWElYSBpbkA7PDEgLTI+JWFAXVwiXG4gICAgICAgICAgICgqbm8gaW5kZW50YXRpb24gaGVyZSwgYSBuZXcgbGluZSopICopXG4gICAgICAgICgqICAgcmVjX2ZsYWcgcmYgKilcbiAgICAgICAgcHAgZiBcIkBbPDI+JWEgaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ3MgcmVzZXRfY3R4dCkgKHJmLCBsKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXBwbHkgKGUsIGwpIC0+IChcbiAgICAgICAgaWYgbm90IChzdWdhcl9leHByIGN0eHQgZiB4KSB0aGVuXG4gICAgICAgICAgbWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIGUgd2l0aFxuICAgICAgICAgIHwgYEluZml4IHMgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbICgoTm9sYWJlbCwgXykgYXMgYXJnMSk7ICgoTm9sYWJlbCwgXykgYXMgYXJnMikgXSAtPlxuICAgICAgICAgICAgICAgICAgKCogRklYTUUgYXNzb2NpYXRpdml0eSBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gKilcbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQDslc0A7JWFAXVwiXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMSBzXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgYFByZWZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0Lm1lbSBzIFsgXCJ+K1wiOyBcIn4tXCI7IFwifisuXCI7IFwifi0uXCIgXVxuICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgKCogU2VlICM3MjAwOiBhdm9pZCB0dXJuaW5nICh+LSAxKSBpbnRvICgtIDEpIHdoaWNoIGlzXG4gICAgICAgICAgICAgICAgICAgICBwYXJzZWQgYXMgYW4gaW50IGxpdGVyYWwgKilcbiAgICAgICAgICAgICAgICAgIHwgWyAoXywgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0YW50IF8gfSkgXSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgICAgICAgICAgICAgIGVsc2Ugc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIChOb2xhYmVsLCB4KSBdIC0+IHBwIGYgXCJAWzwyPiVzQDslYUBdXCIgcyAoc2ltcGxlX2V4cHIgY3R4dCkgeFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCJcbiAgICAgICAgICAgICAgICAoZnVuIGYgKGUsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGV4cHJlc3Npb24yIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgKCogcmVzZXQgaGVyZSBvbmx5IGJlY2F1c2UgW2Z1bmN0aW9uLG1hdGNoLHRyeSxzZXF1ZW5jZV1cbiAgICAgICAgICAgICAgICAgICAgIGFyZSBsb3dlciBwcmlvcml0eSAqKSlcbiAgICAgICAgICAgICAgICAoZSwgbCkpXG4gICAgfCBQZXhwX2NvbnN0cnVjdCAobGksIFNvbWUgZW8pIHdoZW4gbm90IChpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkpXG4gICAgICAtPiAoXG4gICAgICAgICgqIE5vdCBlZmZpY2llbnQgRklYTUUqKVxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYGNvbnMgbHMgLT4gbGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgZiBscyB+c2VwOlwiQDs6OkA7XCJcbiAgICAgICAgfCBgbm9ybWFsIC0+IHBwIGYgXCJAWzwyPiVhQDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfc2V0ZmllbGQgKGUxLCBsaSwgZTIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhQCA8LUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlMSBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIGUyXG4gICAgfCBQZXhwX2lmdGhlbmVsc2UgKGUxLCBlMiwgZW8pIC0+XG4gICAgICAgICgqIEA7QFs8Mj5lbHNlQCAlYUBdQF0gKilcbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPDI+aWZAICVhQF1AO0BbPDI+dGhlbkAgJWFAXSVhQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlID0gZXhwcmVzc2lvbiAodW5kZXJfaWZ0aGVuZWxzZSBjdHh0KSBpblxuICAgICAgICBwcCBmIGZtdCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTEgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUyXG4gICAgICAgICAgKGZ1biBmIGVvIC0+XG4gICAgICAgICAgICBtYXRjaCBlbyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCJAO0BbPDI+ZWxzZUA7JWFAXVwiIChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICgqIHBwIGYgXCIoKVwiICopKVxuICAgICAgICAgIGVvXG4gICAgfCBQZXhwX3NlcXVlbmNlIF8gLT5cbiAgICAgICAgbGV0IHJlYyBzZXF1ZW5jZV9oZWxwZXIgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9zZXF1ZW5jZSAoZTEsIGUyKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBzZXF1ZW5jZV9oZWxwZXIgKGUxIDo6IGFjYykgZTJcbiAgICAgICAgICB8IHYgLT4gTGlzdC5yZXYgKHYgOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbHN0ID0gc2VxdWVuY2VfaGVscGVyIFtdIHggaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2PiVhQF1cIiAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKSBsc3RcbiAgICB8IFBleHBfbmV3IGxpIC0+IHBwIGYgXCJAWzxob3YyPm5ld0AgJWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2V0aW5zdHZhciAocywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAIDwtQCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9vdmVycmlkZSBsIC0+XG4gICAgICAgICgqIEZJWE1FICopXG4gICAgICAgIGxldCBzdHJpbmdfeF9leHByZXNzaW9uIGYgKHMsIGUpID1cbiAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ezwlYT59QF1cIiAobGlzdCBzdHJpbmdfeF9leHByZXNzaW9uIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBleHBfbGV0bW9kdWxlIChzLCBtZSwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBtb2R1bGVAICVzQCA9QCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV9leHByIHJlc2V0X2N0eHQpIG1lIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChjZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBleGNlcHRpb25AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgICAgICAgIGNkIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXNzZXJ0IGUgLT4gcHAgZiBcIkBbPGhvdjI+YXNzZXJ0QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfbGF6eSBlIC0+IHBwIGYgXCJAWzxob3YyPmxhenlAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICgqIFBleHBfcG9seTogaW1wb3NzaWJsZSBidXQgd2Ugc2hvdWxkIHByaW50IGl0IGFueXdheSwgcmF0aGVyIHRoYW5cbiAgICAgICBhc3NlcnQgZmFsc2UgKilcbiAgICB8IFBleHBfcG9seSAoZSwgTm9uZSkgLT4gcHAgZiBcIkBbPGhvdjI+IXBvbHkhQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfcG9seSAoZSwgU29tZSBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCFwb2x5IUAgJWFAIDogJWEpQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG8ucG9wZW5fZXhwciAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIFNvbWUgZW8pIC0+IHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgfCBQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPkBbPHY+JWFALCVhQF0gaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ19vcCBjdHh0KSBsZXRfXG4gICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmdfb3AgY3R4dCkpXG4gICAgICAgICAgYW5kcyAoZXhwcmVzc2lvbiBjdHh0KSBib2R5XG4gICAgfCBQZXhwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBwcCBmIFwiLlwiXG4gICAgfCBfIC0+IGV4cHJlc3Npb24xIGN0eHQgZiB4XG5cbmFuZCBleHByZXNzaW9uMSBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9vYmplY3QgY3MgLT4gcHAgZiBcIiVhXCIgKGNsYXNzX3N0cnVjdHVyZSBjdHh0KSBjc1xuICAgIHwgXyAtPiBleHByZXNzaW9uMiBjdHh0IGYgeFxuKCogdXNlZCBpbiBbUGV4cF9hcHBseV0gKilcblxuYW5kIGV4cHJlc3Npb24yIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2ZpZWxkIChlLCBsaSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEuJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2VuZCAoZSwgcykgLT4gcHAgZiBcIkBbPGhvdjI+JWEjJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIHMudHh0XG4gICAgfCBfIC0+IHNpbXBsZV9leHByIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgXyB3aGVuIGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSAtPiAoXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgbmlsIC0+IHBwIGYgXCJbXVwiXG4gICAgICAgIHwgYHR1cGxlIC0+IHBwIGYgXCIoKVwiXG4gICAgICAgIHwgYGxpc3QgeHMgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxodjA+WyVhXUBdXCJcbiAgICAgICAgICAgICAgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICAgICAgeHNcbiAgICAgICAgfCBgc2ltcGxlIHggLT4gbG9uZ2lkZW50IGYgeFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9pZGVudCBsaSAtPiBsb25naWRlbnRfbG9jIGYgbGlcbiAgICAoKiAobWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIHggd2l0aCAqKVxuICAgICgqIHxgTm9ybWFsIC0+IGxvbmdpZGVudF9sb2MgZiBsaSAqKVxuICAgICgqIHwgYFByZWZpeCBfIHwgYEluZml4IF8gLT4gcHAgZiBcIiggJWEgKVwiIGxvbmdpZGVudF9sb2MgbGkpICopXG4gICAgfCBQZXhwX2NvbnN0YW50IGMgLT4gY29uc3RhbnQgZiBjXG4gICAgfCBQZXhwX3BhY2sgbWUgLT4gcHAgZiBcIihtb2R1bGVAOyVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUGV4cF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYSlAXVwiIChsaXN0IChzaW1wbGVfZXhwciBjdHh0KSB+c2VwOlwiLEA7XCIpIGxcbiAgICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEgOiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfY29lcmNlIChlLCBjdG8xLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSVhIDo+ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICAob3B0aW9uIChjb3JlX3R5cGUgY3R4dCkgfmZpcnN0OlwiIDogXCIgfmxhc3Q6XCIgXCIpXG4gICAgICAgICAgY3RvMVxuICAgICAgICAgICgqIG5vIHNlcCBoaW50KikgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgIGN0XG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQZXhwX3JlY29yZCAobCwgZW8pIC0+XG4gICAgICAgIGxldCBsb25naWRlbnRfeF9leHByZXNzaW9uIGYgKGxpLCBlKSA9XG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfVxuICAgICAgICAgICAgd2hlbiBsaS50eHQgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPntAOyVhJWFAXUA7fUBdXCIgKCogXCJAWzxob3YyPnslYSVhfUBdXCIgKilcbiAgICAgICAgICAob3B0aW9uIH5sYXN0OlwiIHdpdGhAO1wiIChzaW1wbGVfZXhwciBjdHh0KSlcbiAgICAgICAgICBlb1xuICAgICAgICAgIChsaXN0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gfnNlcDpcIjtAO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfYXJyYXkgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzwyPlt8JWF8XUBdQF1cIlxuICAgICAgICAgIChsaXN0IChzaW1wbGVfZXhwciAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX3doaWxlIChlMSwgZTIpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID0gXCJAWzwyPndoaWxlQDslYUA7ZG9AOyVhQDtkb25lQF1cIiBpblxuICAgICAgICBwcCBmIGZtdCAoZXhwcmVzc2lvbiBjdHh0KSBlMSAoZXhwcmVzc2lvbiBjdHh0KSBlMlxuICAgIHwgUGV4cF9mb3IgKHMsIGUxLCBlMiwgZGYsIGUzKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8aHYyPkBbPDI+Zm9yICVhID1AOyVhQDslYSVhQDtkb0BdQDslYUBdQDtkb25lQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24gY3R4dCBpblxuICAgICAgICBwcCBmIGZtdCAocGF0dGVybiBjdHh0KSBzIGV4cHJlc3Npb24gZTEgZGlyZWN0aW9uX2ZsYWcgZGYgZXhwcmVzc2lvbiBlMlxuICAgICAgICAgIGV4cHJlc3Npb24gZTNcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiBjdHh0KSBmIHhcblxuYW5kIGF0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGF0dHJpYnV0ZSBjdHh0IGYpIGxcbmFuZCBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGl0ZW1fYXR0cmlidXRlIGN0eHQgZikgbFxuXG5hbmQgYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBpdGVtX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IGYgeCA9XG4gICgqIG5vdGU6IHZhbHVlX2Rlc2NyaXB0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgICAgICAgIGJ1dCB0aGV5J3JlIGFscmVhZHkgcHJpbnRlZCBieSB0aGUgY2FsbGVycyB0aGlzIG1ldGhvZCAqKVxuICBwcCBmIFwiQFs8aG92Mj4lYSVhQF1cIiAoY29yZV90eXBlIGN0eHQpIHgucHZhbF90eXBlXG4gICAgKGZ1biBmIHggLT5cbiAgICAgIGlmIHgucHZhbF9wcmltIDw+IFtdIHRoZW5cbiAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobGlzdCBjb25zdGFudF9zdHJpbmcpIHgucHZhbF9wcmltKVxuICAgIHhcblxuYW5kIGV4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID0gcHAgZiBcIkBbPDI+WyUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgaXRlbV9leHRlbnNpb24gY3R4dCBmIChzLCBlKSA9XG4gIHBwIGYgXCJAWzwyPlslJSUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgcHAgZiBcIkBbPGhvdjI+ZXhjZXB0aW9uQCAlYUBdJWFcIlxuICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICB4LnB0eWV4bl9jb25zdHJ1Y3RvciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXhuX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdGZfZGVzYyB3aXRoXG4gIHwgUGN0Zl9pbmhlcml0IGN0IC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlYUBdJWFcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl92YWwgKHMsIG1mLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgQCAlYSVhJXNAIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9tZXRob2QgKHMsIHBmLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgJWEgJWElcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50QCAlYUAgPUAgJWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGN0Zl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGN0Zl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgY3R4dCBmIHsgcGNzaWdfc2VsZiA9IGN0OyBwY3NpZ19maWVsZHMgPSBsOyBfIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3RAWzwxPiVhQF1AICVhQF1AIGVuZEBdXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FueTsgcHR5cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPiAoKVxuICAgICAgfCBjdCAtPiBwcCBmIFwiICglYSlcIiAoY29yZV90eXBlIGN0eHQpIGN0KVxuICAgIGN0XG4gICAgKGxpc3QgKGNsYXNzX3R5cGVfZmllbGQgY3R4dCkgfnNlcDpcIkA7XCIpXG4gICAgbFxuXG4oKiBjYWxsIFtjbGFzc19zaWduYXR1cmVdIGNhbGxlZCBieSBbY2xhc3Nfc2lnbmF0dXJlXSAqKVxuYW5kIGNsYXNzX3R5cGUgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdHlfZGVzYyB3aXRoXG4gIHwgUGN0eV9zaWduYXR1cmUgY3MgLT5cbiAgICAgIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgY3M7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgIHBwIGYgXCIlYSVhJWFcIlxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9hcnJvdyAobCwgY28sIGNsKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjbykgKGNsYXNzX3R5cGUgY3R4dCkgY2xcbiAgfCBQY3R5X2V4dGVuc2lvbiBlIC0+XG4gICAgICBleHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfb3BlbiAobywgZSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX3R5cGUgY3R4dCkgZVxuXG4oKiBbY2xhc3MgdHlwZSBhID0gb2JqZWN0IGVuZF0gKilcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGwgPVxuICBsZXQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBrd2QgZiB4ID1cbiAgICBsZXQgeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9ID0geCBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0AgPUAgJWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiKVxuICAgICAgICB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICB4c1xuXG5hbmQgY2xhc3NfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjZl9kZXNjIHdpdGhcbiAgfCBQY2ZfaW5oZXJpdCAob3ZmLCBjZSwgc28pIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlc0AgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgICAgICAoZnVuIGYgc28gLT5cbiAgICAgICAgICBtYXRjaCBzbyB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHMgLT4gcHAgZiBcIkAgYXMgJXNcIiBzLnR4dClcbiAgICAgICAgc28gKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCVzICVhJXMgPUA7JWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kIHZpcnR1YWwgJWEgJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIHZpcnR1YWwgJWElcyA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgbGV0IGJpbmQgZSA9XG4gICAgICAgIGJpbmRpbmcgY3R4dCBmXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX3BhdCA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBzO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBlO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QlcyAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIHByaXZhdGVfZmxhZyBwZlxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBTb21lIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJXMgOkA7JWE9QDslYVwiIHMudHh0IChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIE5vbmUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIGJpbmQgZVxuICAgICAgICAgIHwgXyAtPiBiaW5kIGUpXG4gICAgICAgIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludCAlYSA9QDslYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgZSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5pdGlhbGl6ZXJAICVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjZl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGNmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgeyBwY3N0cl9zZWxmID0gcDsgcGNzdHJfZmllbGRzID0gbCB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0JWFAOyVhQF1AO2VuZEBdXCJcbiAgICAoZnVuIGYgcCAtPlxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgXyAtPiBwcCBmIFwiICVhXCIgKHBhdHRlcm4gY3R4dCkgcFxuICAgICAgfCBfIC0+IHBwIGYgXCIgKCVhKVwiIChwYXR0ZXJuIGN0eHQpIHApXG4gICAgcFxuICAgIChsaXN0IChjbGFzc19maWVsZCBjdHh0KSlcbiAgICBsXG5cbmFuZCBjbGFzc19leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wY2xfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY2xfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wY2xfZGVzYyB3aXRoXG4gICAgfCBQY2xfc3RydWN0dXJlIGNzIC0+IGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgY3NcbiAgICB8IFBjbF9mdW4gKGwsIGVvLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiZnVuQCAlYUAgLT5AICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZW8sIHApIChjbGFzc19leHByIGN0eHQpIGVcbiAgICB8IFBjbF9sZXQgKHJmLCBsLCBjZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQCBpbkAgJWFcIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgIHwgUGNsX2FwcGx5IChjZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIigoJWEpQCAlYSlcIlxuICAgICAgICAgICgqIENmOiAjNzIwMCAqKSAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgICAgIGNlXG4gICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICBsXG4gICAgfCBQY2xfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBpZiBsIDw+IFtdIHRoZW4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBjbF9jb25zdHJhaW50IChjZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWFAIDpAICVhKVwiIChjbGFzc19leHByIGN0eHQpIGNlIChjbGFzc190eXBlIGN0eHQpIGN0XG4gICAgfCBQY2xfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQY2xfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX2V4cHIgY3R4dCkgZVxuXG5hbmQgbW9kdWxlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtdHlfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBtdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3IgKCkgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChzLCBtdDEpLCBtdDIpIC0+IChcbiAgICAgICAgbWF0Y2ggcy50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXQxXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3JAICglc0AgOkAgJWEpQCAtPkAgJWFAXVwiIG5hbWVcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MSAobW9kdWxlX3R5cGUgY3R4dCkgbXQyKVxuICAgIHwgUG10eV93aXRoIChtdCwgW10pIC0+IG1vZHVsZV90eXBlIGN0eHQgZiBtdFxuICAgIHwgUG10eV93aXRoIChtdCwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIHdpdGhAICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10XG4gICAgICAgICAgKGxpc3QgKHdpdGhfY29uc3RyYWludCBjdHh0KSB+c2VwOlwiQCBhbmRAIFwiKVxuICAgICAgICAgIGxcbiAgICB8IF8gLT4gbW9kdWxlX3R5cGUxIGN0eHQgZiB4XG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQd2l0aF90eXBlIChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2R1bGUgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGUgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcbiAgfCBQd2l0aF90eXBlc3Vic3QgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhIDo9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2RzdWJzdCAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcblxuYW5kIG1vZHVsZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gbW9kdWxlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9hbGlhcyBsaSAtPiBwcCBmIFwiKG1vZHVsZSAlYSlcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPnNpZ0AgJWFAXUAgZW5kQF1cIiAoKiBcIkBbPGhvdj5zaWdAICVhQCBlbmRAXVwiICopXG4gICAgICAgICAgKGxpc3QgKHNpZ25hdHVyZV9pdGVtIGN0eHQpKVxuICAgICAgICAgIHNcbiAgICAgICAgKCogRklYTUUgd3JvbmcgaW5kZW50YXRpb24qKVxuICAgIHwgUG10eV90eXBlb2YgbWUgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCBvZkAgJWFAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG10eV9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAobW9kdWxlX3R5cGUgY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHNpZ25hdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gY3R4dCBmIHggOiB1bml0ID1cbiAgbWF0Y2ggeC5wc2lnX2Rlc2Mgd2l0aFxuICB8IFBzaWdfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc2lnX3R5cGVzdWJzdCBsIC0+XG4gICAgICAoKiBQc2lnX3R5cGVzdWJzdCBpcyBuZXZlciByZWN1cnNpdmUsIGJ1dCB3ZSBzcGVjaWZ5IFtSZWN1cnNpdmVdIGhlcmUgdG9cbiAgICAgICAgIGF2b2lkIHByaW50aW5nIGEgW25vbnJlY10gZmxhZywgd2hpY2ggd291bGQgYmUgcmVqZWN0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICopXG4gICAgICB0eXBlX2RlZl9saXN0IGN0eHQgZiAoUmVjdXJzaXZlLCBmYWxzZSwgbClcbiAgfCBQc2lnX3ZhbHVlIHZkIC0+XG4gICAgICBsZXQgaW50cm8gPSBpZiB2ZC5wdmFsX3ByaW0gPSBbXSB0aGVuIFwidmFsXCIgZWxzZSBcImV4dGVybmFsXCIgaW5cbiAgICAgIHBwIGYgXCJAWzwyPiVzQCAlYUAgOkAgJWFAXSVhXCIgaW50cm8gcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzaWdfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzaWdfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc2lnX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGNsYXNzX2Rlc2NyaXB0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0A7OkA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZXNjcmlwdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzaWdfbW9kdWxlXG4gICAgICAoe1xuICAgICAgICAgcG1kX3R5cGUgPSB7IHBtdHlfZGVzYyA9IFBtdHlfYWxpYXMgYWxpYXM7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcG1kKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIGxvbmdpZGVudF9sb2MgYWxpYXMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHVsZSBwbWQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOkAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2RzdWJzdCBwbXMgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOj1AICVhQF0lYVwiIHBtcy5wbXNfbmFtZS50eHQgbG9uZ2lkZW50X2xvY1xuICAgICAgICBwbXMucG1zX21hbmlmZXN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1zLnBtc19hdHRyaWJ1dGVzXG4gIHwgUHNpZ19vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5vcGVuJXNAICVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzaWdfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgLT5cbiAgICAgIGxldCBtZCA9XG4gICAgICAgIG1hdGNoIG1kIHdpdGggTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogYXN0IGludmFyaWFudCAqKSB8IFNvbWUgbXQgLT4gbXRcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzQCA6PUAgJWFAXSVhXCIgcy50eHQgKG1vZHVsZV90eXBlIGN0eHQpIG1kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc2lnX3JlY21vZHVsZSBkZWNscyAtPlxuICAgICAgbGV0IHJlYyBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgPyhmaXJzdCA9IHRydWUpIGwgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IHBtZCA6OiB0bCAtPlxuICAgICAgICAgICAgaWYgbm90IGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgcHAgZiBcIkAgQFs8aG92Mj5hbmRAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIH5maXJzdDpmYWxzZSB0bFxuICAgICAgaW5cbiAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiBkZWNsc1xuICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHNpZ19leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgbW9kdWxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBtb2RfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtb2RfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYyPnN0cnVjdEA7QFs8MD4lYUBdQDs8MSAtMj5lbmRAXVwiXG4gICAgICAgICAgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIH5zZXA6XCJAXFxuXCIpXG4gICAgICAgICAgc1xuICAgIHwgUG1vZF9jb25zdHJhaW50IChtZSwgbXQpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYUAgOkAgJWEpQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUgKG1vZHVsZV90eXBlIGN0eHQpIG10XG4gICAgfCBQbW9kX2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgbWUpIC0+IHBwIGYgXCJmdW5jdG9yICgpQDstPkA7JWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKHMsIG10KSwgbWUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5jdG9yQCAoJXNAIDpAICVhKUA7LT5AOyVhXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfYXBwbHkgKG1lMSwgbWUyKSAtPlxuICAgICAgICBwcCBmIFwiKCVhKSglYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUxIChtb2R1bGVfZXhwciBjdHh0KSBtZTJcbiAgICAgICAgKCogQ2Y6ICM3MjAwICopXG4gICAgfCBQbW9kX3VucGFjayBlIC0+IHBwIGYgXCIodmFsQCAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuXG5hbmQgc3RydWN0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHBheWxvYWQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGUsIGF0dHJzKSB9IF0gLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBTdHIgeCAtPiBzdHJ1Y3R1cmUgY3R4dCBmIHhcbiAgfCBQVHlwIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIGNvcmVfdHlwZSBjdHh0IGYgeFxuICB8IFBTaWcgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgc2lnbmF0dXJlIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgTm9uZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4O1xuICAgICAgcHAgZiBcIiB3aGVuIFwiO1xuICAgICAgZXhwcmVzc2lvbiBjdHh0IGYgZVxuXG4oKiB0cmFuc2Zvcm0gW2YgPSBmdW4gZyBoIC0+IC4uXSB0byBbZiBnIGggPSAuLi4gXSBjb3VsZCBiZSBpbXByb3ZlZCAqKVxuYW5kIGJpbmRpbmcgY3R4dCBmIHsgcHZiX3BhdCA9IHA7IHB2Yl9leHByID0geDsgXyB9ID1cbiAgKCogLnB2Yl9hdHRyaWJ1dGVzIGhhdmUgYWxyZWFkeSBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciwgI2JpbmRpbmdzICopXG4gIGxldCByZWMgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBmIHggPVxuICAgIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9mdW4gKGxhYmVsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgICBpZiBsYWJlbCA9IE5vbGFiZWwgdGhlblxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsYWJlbCwgZW8sIHApIHBwX3ByaW50X3BleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgZVxuICAgICAgfCBQZXhwX25ld3R5cGUgKHN0ciwgZSkgLT5cbiAgICAgICAgICBwcCBmIFwiKHR5cGVAICVzKUAgJWFcIiBzdHIudHh0IHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgfCBfIC0+IHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgaW5cbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB0eXZhcnMgaW5cbiAgbGV0IGlzX2Rlc3VnYXJlZF9nYWR0IHAgZSA9XG4gICAgbGV0IGdhZHRfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9ICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgU29tZSAocGF0LCBhcmdzX3R5dmFycywgcnQpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyBnYWR0X2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIGdhZHRfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IGdhZHRfZXhwID0gZ2FkdF9leHAgW10gZSBpblxuICAgIG1hdGNoIChnYWR0X3BhdHRlcm4sIGdhZHRfZXhwKSB3aXRoXG4gICAgfCBTb21lIChwLCBwdF90eXZhcnMsIHB0X2N0KSwgU29tZSAoZV90eXZhcnMsIGUsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlbiBTb21lIChwLCBwdF90eXZhcnMsIGVfY3QsIGUpIGVsc2UgTm9uZVxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IHtcbiAgICAgcHBhdF9kZXNjID1cbiAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwKSApO1xuICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgXztcbiAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0IChjb3JlX3R5cGUgY3R4dCkgdHlwXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGVsc2VcbiAgICBtYXRjaCBpc19kZXN1Z2FyZWRfZ2FkdCBwIHggd2l0aFxuICAgIHwgU29tZSAocCwgW10sIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFNvbWUgKHAsIHR5dmFycywgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiB0eXBlQDslYS5AOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgKGxpc3QgcHBfcHJpbnRfc3RyaW5nIH5zZXA6XCJAO1wiKVxuICAgICAgICAgICh0eXZhcnNfc3RyIHR5dmFycykgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHAsIHR5KTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPiAoXG4gICAgICAgICAgICAoKiBzcGVjaWFsIGNhc2UgZm9yIHRoZSBmaXJzdCopXG4gICAgICAgICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICAgICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJWFAOzpAOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICAgICAgICAgIHR5IChleHByZXNzaW9uIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJWFAOzpAOyVhKUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24geFxuICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeClcblxuKCogW2luXSBpcyBub3QgcHJpbnRlZCAqKVxuYW5kIGJpbmRpbmdzIGN0eHQgZiAocmYsIGwpID1cbiAgbGV0IGJpbmRpbmcga3dkIHJmIGYgeCA9XG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYUBdJWFcIiBrd2QgcmVjX2ZsYWcgcmYgKGJpbmRpbmcgY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB2Yl9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gYmluZGluZyBcImxldFwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKGJpbmRpbmcgXCJsZXRcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZyBcImFuZFwiIE5vbnJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCBiaW5kaW5nX29wIGN0eHQgZiB4ID1cbiAgbWF0Y2ggKHgucGJvcF9wYXQsIHgucGJvcF9leHApIHdpdGhcbiAgfCAoIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBwdmFyOyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICB7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgZXZhcjsgXyB9O1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgXztcbiAgICAgIH0gKVxuICAgIHdoZW4gcHZhciA9IGV2YXIgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVzQF1cIiB4LnBib3Bfb3AudHh0IGV2YXJcbiAgfCBwYXQsIGV4cCAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJWFAOz1AOyVhQF1cIiB4LnBib3Bfb3AudHh0IChwYXR0ZXJuIGN0eHQpIHBhdFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBleHBcblxuYW5kIHN0cnVjdHVyZV9pdGVtIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wc3RyX2Rlc2Mgd2l0aFxuICB8IFBzdHJfZXZhbCAoZSwgYXR0cnMpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj47OyVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfdHlwZSAoXywgW10pIC0+IGFzc2VydCBmYWxzZVxuICB8IFBzdHJfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc3RyX3ZhbHVlIChyZiwgbCkgLT5cbiAgICAgICgqIHBwIGYgXCJAWzxob3YyPmxldCAlYSVhQF1cIiAgcmVjX2ZsYWcgcmYgYmluZGluZ3MgbCAqKVxuICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpXG4gIHwgUHN0cl90eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHN0cl9leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzdHJfbW9kdWxlIHggLT5cbiAgICAgIGxldCByZWMgbW9kdWxlX2hlbHBlciA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKGFyZ19vcHQsIG1lJyk7IHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIChtYXRjaCBhcmdfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgVW5pdCAtPiBwcCBmIFwiKClcIlxuICAgICAgICAgICAgfCBOYW1lZCAocywgbXQpIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglczolYSlcIlxuICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCk7XG4gICAgICAgICAgICBtb2R1bGVfaGVscGVyIG1lJ1xuICAgICAgICB8IG1lIC0+IG1lXG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlICVzJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSB4LnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKGZ1biBmIG1lIC0+XG4gICAgICAgICAgbGV0IG1lID0gbW9kdWxlX2hlbHBlciBtZSBpblxuICAgICAgICAgIG1hdGNoIG1lIHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcG1vZF9kZXNjID1cbiAgICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgIChtZScsICh7IHBtdHlfZGVzYyA9IFBtdHlfaWRlbnQgXyB8IFBtdHlfc2lnbmF0dXJlIF87IF8gfSBhcyBtdCkpO1xuICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIgOkA7JWFAOz1AOyVhQDtcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgICAgbWUnXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCIgPUAgJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUpXG4gICAgICAgIHgucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBtYl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5vcGVuJXNAOyVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl9jbGFzcyBsIC0+IChcbiAgICAgIGxldCBleHRyYWN0X2NsYXNzX2FyZ3MgY2wgPVxuICAgICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfZnVuIChsLCBlbywgcCwgY2wnKTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIGxvb3AgKChsLCBlbywgcCkgOjogYWNjKSBjbCdcbiAgICAgICAgICB8IGNsIC0+IChMaXN0LnJldiBhY2MsIGNsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXJncywgY2wgPSBsb29wIFtdIGNsIGluXG4gICAgICAgIGxldCBjb25zdHIsIGNsID1cbiAgICAgICAgICBtYXRjaCBjbCB3aXRoXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2NvbnN0cmFpbnQgKGNsJywgY3QpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgKFNvbWUgY3QsIGNsJylcbiAgICAgICAgICB8IF8gLT4gKE5vbmUsIGNsKVxuICAgICAgICBpblxuICAgICAgICAoYXJncywgY29uc3RyLCBjbClcbiAgICAgIGluXG4gICAgICBsZXQgY2xhc3NfY29uc3RyYWludCBmIGN0ID0gcHAgZiBcIjogQFslYUBdIFwiIChjbGFzc190eXBlIGN0eHQpIGN0IGluXG4gICAgICBsZXQgY2xhc3NfZGVjbGFyYXRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgbGV0IGFyZ3MsIGNvbnN0ciwgY2wgPSBleHRyYWN0X2NsYXNzX2FyZ3MgeC5wY2lfZXhwciBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMgJWElYT1AOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dFxuICAgICAgICAgIChsaXN0IChsYWJlbF9leHAgY3R4dCkpXG4gICAgICAgICAgYXJncyAob3B0aW9uIGNsYXNzX2NvbnN0cmFpbnQpIGNvbnN0ciAoY2xhc3NfZXhwciBjdHh0KSBjbFxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHN0cl9jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHN0cl9wcmltaXRpdmUgdmQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmV4dGVybmFsQCAlYUAgOkAgJWFAXSVhXCIgcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzdHJfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX3JlY21vZHVsZSBkZWNscyAtPiAoXG4gICAgICAoKiAzLjA3ICopXG4gICAgICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXM6JWFAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICB8IHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBkZWNscyB3aXRoXG4gICAgICB8ICh7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYilcbiAgICAgICAgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6JWFAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgcG1iIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHN0cl9leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgdHlwZV9wYXJhbSBjdHh0IGYgKGN0LCAoYSwgYikpID1cbiAgcHAgZiBcIiVzJXMlYVwiICh0eXBlX3ZhcmlhbmNlIGEpICh0eXBlX2luamVjdGl2aXR5IGIpIChjb3JlX3R5cGUgY3R4dCkgY3RcblxuYW5kIHR5cGVfcGFyYW1zIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCIlYSBcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixAO1wiKSBsXG5cbmFuZCB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIGV4cG9ydGVkLCBsKSA9XG4gIGxldCB0eXBlX2RlY2wga3dkIHJmIGYgeCA9XG4gICAgbGV0IGVxID1cbiAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0ICYmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gXCJcIlxuICAgICAgZWxzZSBpZiBleHBvcnRlZCB0aGVuIFwiID1cIlxuICAgICAgZWxzZSBcIiA6PVwiXG4gICAgaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMlcyVhQF0lYVwiIGt3ZCBub25yZWNfZmxhZyByZiAodHlwZV9wYXJhbXMgY3R4dClcbiAgICAgIHgucHR5cGVfcGFyYW1zIHgucHR5cGVfbmFtZS50eHQgZXEgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gdHlwZV9kZWNsIFwidHlwZVwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKHR5cGVfZGVjbCBcInR5cGVcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAodHlwZV9kZWNsIFwiYW5kXCIgUmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0IGYgbGJscyA9XG4gIGxldCB0eXBlX3JlY29yZF9maWVsZCBmIHBsZCA9XG4gICAgcHAgZiBcIkBbPDI+JWElczpAOyVhQDslYUBdXCIgbXV0YWJsZV9mbGFnIHBsZC5wbGRfbXV0YWJsZSBwbGQucGxkX25hbWUudHh0XG4gICAgICAoY29yZV90eXBlIGN0eHQpIHBsZC5wbGRfdHlwZSAoYXR0cmlidXRlcyBjdHh0KSBwbGQucGxkX2F0dHJpYnV0ZXNcbiAgaW5cbiAgcHAgZiBcIntAXFxuJWF9XCIgKGxpc3QgdHlwZV9yZWNvcmRfZmllbGQgfnNlcDpcIjtAXFxuXCIpIGxibHNcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICAoKiB0eXBlX2RlY2xhcmF0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgIGJ1dCBpdCdzIGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kICopXG4gIGxldCBwcml2IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfcHJpdmF0ZSB3aXRoIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcIkA7cHJpdmF0ZVwiXG4gIGluXG4gIGxldCBtYW5pZmVzdCBmID1cbiAgICBtYXRjaCB4LnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeSAtPlxuICAgICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCB0aGVuXG4gICAgICAgICAgcHAgZiBcIiV0QDslYVwiIHByaXYgKGNvcmVfdHlwZSBjdHh0KSB5XG4gICAgICAgIGVsc2UgcHAgZiBcIkA7JWFcIiAoY29yZV90eXBlIGN0eHQpIHlcbiAgaW5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGYgcGNkID1cbiAgICBwcCBmIFwifEA7XCI7XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAoIHBjZC5wY2RfbmFtZS50eHQsXG4gICAgICAgIHBjZC5wY2RfdmFycyxcbiAgICAgICAgcGNkLnBjZF9hcmdzLFxuICAgICAgICBwY2QucGNkX3JlcyxcbiAgICAgICAgcGNkLnBjZF9hdHRyaWJ1dGVzIClcbiAgaW5cbiAgbGV0IHJlcHIgZiA9XG4gICAgbGV0IGludHJvIGYgPSBpZiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuICgpIGVsc2UgcHAgZiBcIkA7PVwiIGluXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgeHMgLT5cbiAgICAgICAgbGV0IHZhcmlhbnRzIGZtdCB4cyA9XG4gICAgICAgICAgaWYgeHMgPSBbXSB0aGVuIHBwIGZtdCBcIiB8XCJcbiAgICAgICAgICBlbHNlIHBwIGZtdCBcIkBcXG4lYVwiIChsaXN0IH5zZXA6XCJAXFxuXCIgY29uc3RydWN0b3JfZGVjbGFyYXRpb24pIHhzXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCIldCV0JWFcIiBpbnRybyBwcml2IHZhcmlhbnRzIHhzXG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgIHwgUHR5cGVfcmVjb3JkIGwgLT4gcHAgZiBcIiV0JXRAOyVhXCIgaW50cm8gcHJpdiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGxcbiAgICB8IFB0eXBlX29wZW4gLT4gcHAgZiBcIiV0JXRAOy4uXCIgaW50cm8gcHJpdlxuICBpblxuICBsZXQgY29uc3RyYWludHMgZiA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChjdDEsIGN0MiwgXykgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBjb25zdHJhaW50QCAlYUAgPUAgJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIpXG4gICAgICB4LnB0eXBlX2NzdHJzXG4gIGluXG4gIHBwIGYgXCIldCV0JXRcIiBtYW5pZmVzdCByZXByIGNvbnN0cmFpbnRzXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgeCA9XG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgZiB4ID1cbiAgICBwcCBmIFwiQFxcbnxAOyVhXCIgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KSB4XG4gIGluXG4gIHBwIGYgXCJAWzwyPnR5cGUgJWElYSArPSAlYUAgJWFAXSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIHBwIGYgXCIlYUA7XCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsXCIpIGwpXG4gICAgeC5wdHlleHRfcGFyYW1zIGxvbmdpZGVudF9sb2MgeC5wdHlleHRfcGF0aCBwcml2YXRlX2ZsYWdcbiAgICB4LnB0eWV4dF9wcml2YXRlICgqIENmOiAjNzIwMCAqKVxuICAgIChsaXN0IH5zZXA6XCJcIiBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgeC5wdHlleHRfY29uc3RydWN0b3JzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleHRfYXR0cmlidXRlc1xuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmIChuYW1lLCB2YXJzLCBhcmdzLCByZXMsIGF0dHJzKSA9XG4gIGxldCBuYW1lID0gbWF0Y2ggbmFtZSB3aXRoIFwiOjpcIiAtPiBcIig6OilcIiB8IHMgLT4gcyBpblxuICBsZXQgcHBfdmFycyBmIHZzID1cbiAgICBtYXRjaCB2cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdnMgLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIHZzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcHAgZiBcIiVzJWFAOyVhXCIgbmFtZVxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+ICgpXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPiBwcCBmIFwiQDtvZkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBTb21lIHIgLT5cbiAgICAgIHBwIGYgXCIlczpAOyVhJWFAOyVhXCIgbmFtZSBwcF92YXJzIHZhcnNcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiBjb3JlX3R5cGUxIGN0eHQgZiByXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCJcbiAgICAgICAgICAgICAgICAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIilcbiAgICAgICAgICAgICAgICBsIChjb3JlX3R5cGUxIGN0eHQpIHJcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsIChjb3JlX3R5cGUxIGN0eHQpIHIpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0IGYgeCA9XG4gICgqIENmOiAjNzIwMCAqKVxuICBtYXRjaCB4LnBleHRfa2luZCB3aXRoXG4gIHwgUGV4dF9kZWNsICh2LCBsLCByKSAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAgICh4LnBleHRfbmFtZS50eHQsIHYsIGwsIHIsIHgucGV4dF9hdHRyaWJ1dGVzKVxuICB8IFBleHRfcmViaW5kIGxpIC0+XG4gICAgICBwcCBmIFwiJXNAOz1AOyVhJWFcIiB4LnBleHRfbmFtZS50eHQgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBleHRfYXR0cmlidXRlc1xuXG5hbmQgY2FzZV9saXN0IGN0eHQgZiBsIDogdW5pdCA9XG4gIGxldCBhdXggZiB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9ID1cbiAgICBwcCBmIFwiQDt8IEBbPDI+JWElYUA7LT5AOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwY19saHNcbiAgICAgIChvcHRpb24gKGV4cHJlc3Npb24gY3R4dCkgfmZpcnN0OlwiQDt3aGVuQDtcIilcbiAgICAgIHBjX2d1YXJkXG4gICAgICAoZXhwcmVzc2lvbiAodW5kZXJfcGlwZSBjdHh0KSlcbiAgICAgIHBjX3Joc1xuICBpblxuICBsaXN0IGF1eCBmIGwgfnNlcDpcIlwiXG5cbmFuZCBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCBmIChsLCBlKSA9XG4gIGxldCBzaW1wbGVfbmFtZSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIFNvbWUgbFxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT4gZXhwcmVzc2lvbjIgY3R4dCBmIGUgKCogbGV2ZWwgMiopXG4gIHwgT3B0aW9uYWwgc3RyIC0+XG4gICAgICBpZiBTb21lIHN0ciA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIj8lc1wiIHN0clxuICAgICAgZWxzZSBwcCBmIFwiPyVzOiVhXCIgc3RyIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gIHwgTGFiZWxsZWQgbGJsIC0+XG4gICAgICBpZiBTb21lIGxibCA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIn4lc1wiIGxibFxuICAgICAgZWxzZSBwcCBmIFwifiVzOiVhXCIgbGJsIChzaW1wbGVfZXhwciBjdHh0KSBlXG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgZiB4ID1cbiAgbWF0Y2ggeC5wZGlyYV9kZXNjIHdpdGhcbiAgfCBQZGlyX3N0cmluZyBzIC0+IHBwIGYgXCJAICVTXCIgc1xuICB8IFBkaXJfaW50IChuLCBOb25lKSAtPiBwcCBmIFwiQCAlc1wiIG5cbiAgfCBQZGlyX2ludCAobiwgU29tZSBtKSAtPiBwcCBmIFwiQCAlcyVjXCIgbiBtXG4gIHwgUGRpcl9pZGVudCBsaSAtPiBwcCBmIFwiQCAlYVwiIGxvbmdpZGVudCBsaVxuICB8IFBkaXJfYm9vbCBiIC0+IHBwIGYgXCJAICVzXCIgKHN0cmluZ19vZl9ib29sIGIpXG5cbmxldCB0b3BsZXZlbF9waHJhc2UgZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUHRvcF9kZWYgcyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHQpKSBzXG4gICgqIHBwX29wZW5faHZib3ggZiAwOyAqKVxuICAoKiBwcF9wcmludF9saXN0IHN0cnVjdHVyZV9pdGVtIGYgcyA7ICopXG4gICgqIHBwX2Nsb3NlX2JveCBmICgpOyAqKVxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IE5vbmU7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQF1cIiBwZGlyX25hbWUudHh0XG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gU29tZSBwZGlyX2FyZzsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAICVhQF1cIiBwZGlyX25hbWUudHh0IGRpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZ1xuXG5sZXQgZXhwcmVzc2lvbiBmIHggPSBwcCBmIFwiQFslYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgeFxuXG5sZXQgc3RyaW5nX29mX2V4cHJlc3Npb24geCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBleHByZXNzaW9uIGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgc3RyaW5nX29mX3N0cnVjdHVyZSB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIHN0cnVjdHVyZSByZXNldF9jdHh0IGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgdG9wX3BocmFzZSBmIHggPVxuICBwcF9wcmludF9uZXdsaW5lIGYgKCk7XG4gIHRvcGxldmVsX3BocmFzZSBmIHg7XG4gIHBwIGYgXCI7O1wiO1xuICBwcF9wcmludF9uZXdsaW5lIGYgKClcblxubGV0IGNvcmVfdHlwZSA9IGNvcmVfdHlwZSByZXNldF9jdHh0XG5sZXQgcGF0dGVybiA9IHBhdHRlcm4gcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZSA9IHNpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlID0gc3RydWN0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19leHByID0gY2xhc3NfZXhwciByZXNldF9jdHh0XG5sZXQgY2xhc3NfZmllbGQgPSBjbGFzc19maWVsZCByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZSA9IGNsYXNzX3R5cGUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3NpZ25hdHVyZSA9IGNsYXNzX3NpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZV9maWVsZCA9IGNsYXNzX3R5cGVfZmllbGQgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV9leHByID0gbW9kdWxlX2V4cHIgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV90eXBlID0gbW9kdWxlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZV9pdGVtID0gc2lnbmF0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZV9pdGVtID0gc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHR5cGVfZGVjbGFyYXRpb24gPSB0eXBlX2RlY2xhcmF0aW9uIHJlc2V0X2N0eHRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzM1wiXG5lbmRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nIGxvYyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgKCoqIFtNLihUKV0gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mXG4gICAgICAgIGZ1bmN0aW9uX3BhcmFtIGxpc3QgKiB0eXBlX2NvbnN0cmFpbnQgb3B0aW9uICogZnVuY3Rpb25fYm9keVxuICAgICgqKiBbUGV4cF9mdW5jdGlvbiAoW1AxOyAuLi47IFBuXSwgQywgYm9keSldIHJlcHJlc2VudHMgYW55IGNvbnN0cnVjdFxuICAgICAgICBpbnZvbHZpbmcgW2Z1bl0gb3IgW2Z1bmN0aW9uXSwgaW5jbHVkaW5nOlxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IEVdXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9ib2R5IEVdXG4gICAgICAgIC0gW2Z1biBQMSAuLi4gUG4gLT4gZnVuY3Rpb24gcDEgLT4gZTEgfCAuLi4gfCBwbSAtPiBlbV1cbiAgICAgICAgICB3aGVuIFtib2R5ID0gUGZ1bmN0aW9uX2Nhc2VzIFsgcDEgLT4gZTE7IC4uLjsgcG0gLT4gZW0gXV1cbiAgICAgICAgW0NdIHJlcHJlc2VudHMgYSB0eXBlIGNvbnN0cmFpbnQgb3IgY29lcmNpb24gcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGVcbiAgICAgICAgYXJyb3csIGUuZy4gW2Z1biBQMSAuLi4gUG4gOiB0eSAtPiAuLi5dIHdoZW4gW0MgPSBTb21lIChQY29uc3RyYWludCB0eSldLlxuICAgICAgICBBIGZ1bmN0aW9uIG11c3QgaGF2ZSBwYXJhbWV0ZXJzLiBbUGV4cF9mdW5jdGlvbiAocGFyYW1zLCBfLCBib2R5KV0gbXVzdFxuICAgICAgICBoYXZlIG5vbi1lbXB0eSBbcGFyYW1zXSBvciBhIFtQZnVuY3Rpb25fY2FzZXMgX10gYm9keS5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbV9kZXNjICopID1cbiAgICB8IFBwYXJhbV92YWwgb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuXG4gICAgKCoqIFtQcGFyYW1fdmFsIChsYmwsIGV4cDAsIFApXSByZXByZXNlbnRzIHRoZSBwYXJhbWV0ZXI6XG4gICAgICAgIC0gW1BdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbfmw6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6KFAgPSBFMCldXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgTm90ZTogSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAqKVxuICAgIHwgUHBhcmFtX25ld3R5cGUgb2Ygc3RyaW5nIGxvY1xuICAgICgqKiBbUHBhcmFtX25ld3R5cGUgeF0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyIFsodHlwZSB4KV0uXG4gICAgICAgIFt4XSBjYXJyaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgaWRlbnRpZmllciwgd2hlcmVhcyB0aGUgW3BwYXJhbV9sb2NdXG4gICAgICAgIG9uIHRoZSBlbmNsb3NpbmcgW2Z1bmN0aW9uX3BhcmFtXSBub2RlIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgWyh0eXBlIHgpXVxuICAgICAgICBhcyBhIHdob2xlLlxuXG4gICAgICAgIE11bHRpcGxlIHBhcmFtZXRlcnMgWyh0eXBlIGEgYiBjKV0gYXJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlXG4gICAgICAgIFtQcGFyYW1fbmV3dHlwZV0gbm9kZXMsIGxldCdzIHNheTpcblxuICAgICAgICB7WyBbIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBhOyBwcGFyYW1fbG9jID0gbG9jMSB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBiOyBwcGFyYW1fbG9jID0gbG9jMiB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBjOyBwcGFyYW1fbG9jID0gbG9jMyB9O1xuICAgICAgICAgICBdXG4gICAgICAgIF19XG5cbiAgICAgICAgSGVyZSwgdGhlIGZpcnN0IGxvYyBbbG9jMV0gaXMgdGhlIGxvY2F0aW9uIG9mIFsodHlwZSBhIGIgYyldLCBhbmQgdGhlXG4gICAgICAgIHN1YnNlcXVlbnQgbG9jcyBbbG9jMl0gYW5kIFtsb2MzXSBhcmUgdGhlIHNhbWUgYXMgW2xvYzFdLCBleGNlcHQgbWFya2VkIGFzXG4gICAgICAgIGdob3N0IGxvY2F0aW9ucy4gVGhlIGxvY2F0aW9ucyBvbiBbYV0sIFtiXSwgW2NdLCBjb3JyZXNwb25kIHRvIHRoZVxuICAgICAgICB2YXJpYWJsZXMgW2FdLCBbYl0sIGFuZCBbY10gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgICopXG5cbiAgYW5kIGZ1bmN0aW9uX3BhcmFtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSAqKSA9XG4gICAgeyBwcGFyYW1fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBwYXJhbV9kZXNjIDogZnVuY3Rpb25fcGFyYW1fZGVzYztcbiAgICB9XG5cbiAgYW5kIGZ1bmN0aW9uX2JvZHkgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgKikgPVxuICAgIHwgUGZ1bmN0aW9uX2JvZHkgb2YgZXhwcmVzc2lvblxuICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIG9mIGNhc2UgbGlzdCAqIExvY2F0aW9uLnQgKiBhdHRyaWJ1dGVzXG4gICAgKCoqIEluIFtQZnVuY3Rpb25fY2FzZXMgKF8sIGxvYywgYXR0cnMpXSwgdGhlIGxvY2F0aW9uIGV4dGVuZHMgZnJvbSB0aGVcbiAgICAgICAgc3RhcnQgb2YgdGhlIFtmdW5jdGlvbl0ga2V5d29yZCB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IGNhc2UuIFRoZSBjb21waWxlclxuICAgICAgICB3aWxsIG9ubHkgdXNlIHR5cGVjaGVja2luZy1yZWxhdGVkIGF0dHJpYnV0ZXMgZnJvbSBbYXR0cnNdLCBlLmcuIGVuYWJsaW5nXG4gICAgICAgIG9yIGRpc2FibGluZyBhIHdhcm5pbmcuXG4gICAgKilcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gIGFuZCB0eXBlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQY29uc3RyYWludCBvZiBjb3JlX3R5cGVcbiAgICB8IFBjb2VyY2Ugb2YgY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAoKiogU2VlIHRoZSBjb21tZW50IG9uIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bmN0aW9ufVtQZXhwX2Z1bmN0aW9uXX0uICopXG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzRcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzRcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMlxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA1LjAyXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBta19naG9zdF9hdHRyIG5hbWUgPVxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0geyBMb2NhdGlvbi50eHQgPSBuYW1lOyBsb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbXTtcbiAgICBhdHRyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gIH1cblxubGV0IHJlYyBjb25jYXRfbGlzdF9saXQgbGVmdCByaWdodCA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBvcGVuIEFzdF81MDIuQXN0dHlwZXMgaW5cbiAgbWF0Y2ggKGxlZnQucGV4cF9kZXNjLCByaWdodC5wZXhwX2Rlc2MpIHdpdGhcbiAgfCBfLCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGxlZnRcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pLCBfIC0+IHJpZ2h0XG4gIHwgKCBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgbG9jIH0sXG4gICAgICAgICAgU29tZSAoeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgaGQ7IHRsIF07IF8gfSBhcyBhcmdfZXhwcikgKSxcbiAgICAgIF8gKSAtPlxuICAgICAge1xuICAgICAgICBsZWZ0IHdpdGhcbiAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IGxvYyB9LFxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXJnX2V4cHIgd2l0aFxuICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGhkOyBjb25jYXRfbGlzdF9saXQgdGwgcmlnaHQgXTtcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICB9XG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkludmFsaWQgb2NhbWwucHB4LmNvbnRleHQncyBsb2FkX3BhdGhcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBsb2MgPSBleHByLnBleHBfbG9jIGluXG4gIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX3R1cGxlIFsgdmlzaWJsZTsgaGlkZGVuIF0gLT5cbiAgICAgIGxldCBtaWdyYXRpb25fYXR0ciA9XG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyX25hbWUgPSB7IExvY2F0aW9uLnR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIjsgbG9jIH07XG4gICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgYXR0cl9wYXlsb2FkID1cbiAgICAgICAgICAgIFBTdHIgWyB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKSB9IF07XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwcicgPSBjb25jYXRfbGlzdF9saXQgdmlzaWJsZSBoaWRkZW4gaW5cbiAgICAgIHsgZXhwcicgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBtaWdyYXRpb25fYXR0ciA6OiBleHByLnBleHBfYXR0cmlidXRlcyB9XG4gIHwgXyAtPiBleHByXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGxpZGVudF9sb2MsIGV4cHIpIC0+XG4gICAgICBtYXRjaCBsaWRlbnRfbG9jLkFzdF81MDIuQXN0dHlwZXMudHh0IHdpdGhcbiAgICAgIHwgTG9uZ2lkZW50LkxpZGVudCBcImxvYWRfcGF0aFwiIC0+XG4gICAgICAgICAgKGxpZGVudF9sb2MsIG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIpXG4gICAgICB8IF8gLT4gKGxpZGVudF9sb2MsIGV4cHIpKVxuICAgIGZpZWxkc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIHBheWxvYWQgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyXG4gICAgICBbXG4gICAgICAgICh7XG4gICAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgICAgUHN0cl9ldmFsXG4gICAgICAgICAgICAgICAoKHsgcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgfSBhcyBleHByKSwgYXR0cmlidXRlcyk7XG4gICAgICAgICB9IGFzIHN0cmkpO1xuICAgICAgXSAtPlxuICAgICAgbGV0IG5ld19maWVsZHMgPSBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgaW5cbiAgICAgIGxldCBuZXdfZXhwciA9IHsgZXhwciB3aXRoIHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChuZXdfZmllbGRzLCBOb25lKSB9IGluXG4gICAgICBQU3RyIFsgeyBzdHJpIHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChuZXdfZXhwciwgYXR0cmlidXRlcykgfSBdXG4gIHwgXyAtPiBwYXlsb2FkXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHRjb25zdHJhaW50LCBib2R5KSAtPlxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBQZnVuY3Rpb25fYm9keSBleHByIC0+IChcbiAgICAgICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgKCogV2UgZG9uJ3Qgd2FudCB0aGlzIFtmdW5dIHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBwYXJlbnQgZHVyaW5nXG4gICAgICAgICAgICAgICAgICAgdGhlIHJvdW5kLXRyaXAuIFRoaXMgYXR0cmlidXRlIHNpZ25hbHMgdGhhdCB0aGlzIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICByZWFsbHkgaXMgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiAqKVxuICAgICAgICAgICAgICAgIGxldCBhdHRyID0gbWtfZ2hvc3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcIiBpblxuICAgICAgICAgICAgICAgIGxldCBleHByID0gY29weV9leHByZXNzaW9uIGV4cHIgaW5cbiAgICAgICAgICAgICAgICB7IGV4cHIgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRyIDo6IGV4cHIucGV4cF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICAgIHwgXyAtPiBjb3B5X2V4cHJlc3Npb24gZXhwcilcbiAgICAgICAgfCBQZnVuY3Rpb25fY2FzZXMgKGNhc2VzLCBsb2MsIGF0dHJzKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSBjYXNlcyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBsb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdHRycztcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIG1hdGNoIHRjb25zdHJhaW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGV4cHJcbiAgICAgICAgfCBTb21lIChQY29uc3RyYWludCBjKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoZXhwciwgY29weV9jb3JlX3R5cGUgYyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gZXhwci5wZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgU29tZSAoUGNvZXJjZSAoYzEsIGMyKSkgLT5cbiAgICAgICAgICAgIGxldCBjMSA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgYzEgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwciwgYzEsIGNvcHlfY29yZV90eXBlIGMyKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBleHByLnBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgIChmdW4gcGFyYW0gZXhwciAtPlxuICAgICAgICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2Rlc2MgPSBQcGFyYW1fdmFsIChsYmwsIGV4cDAsIHApO1xuICAgICAgICAgICAgIHBwYXJhbV9sb2M7XG4gICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGxibCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBleHAwLFxuICAgICAgICAgICAgICAgICAgICAgIGNvcHlfcGF0dGVybiBwLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHIgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBwcGFyYW1fbG9jO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgeyBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHg7IHBwYXJhbV9sb2MgfSAtPlxuICAgICAgICAgICAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeCwgZXhwcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gcHBhcmFtX2xvYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIHBhcmFtcyBleHByXG4gICAgICBpblxuICAgICAgZXhwci5wZXhwX2Rlc2NcbiAgICAgICgqIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MCkgKilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLmxldF87IEFzdF81MDIuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9sb2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyBsb2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MS50eHQpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gdHlwZXNcIlxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDJcblxuKCoqIExvb2sgZm9yIGEgcGFydGljdWxhciBhdHRyaWJ1dGUgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBsaXN0LiBBdHRyaWJ1dGVzIGFyZVxuICAgIHVzZWQgdG8gbWFrZSBjZXJ0YWluIG1pZ3JhdGlvbnMgcm91bmQtdHJpcC4gUmV0dXJucyBbTm9uZV0gaWYgdGhlIHNwZWNpZmllZFxuICAgIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuICopXG5sZXQgZXh0cmFjdF9hdHRyIG5hbWUgKGF0dHJzIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcykgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChOb25lLCBMaXN0LnJldiBhY2MpXG4gICAgfCB7IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IHsgdHh0OyBfIH07IGF0dHJfcGF5bG9hZDsgXyB9IDo6IHFcbiAgICAgIHdoZW4gdHh0ID0gbmFtZSAtPlxuICAgICAgICAoU29tZSBhdHRyX3BheWxvYWQsIExpc3QucmV2X2FwcGVuZCBhY2MgcSlcbiAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgaW5cbiAgbG9vcCBbXSBhdHRyc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDEuUGFyc2V0cmVlIGluXG4gIGxldCBwYXlsb2FkLCBvdGhlcl9hdHRycyA9XG4gICAgZXh0cmFjdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIiBleHByLnBleHBfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgbG9jID0gZXhwci5wZXhwX2xvYyB9LCBOb25lKVxuICAgICAgaW5cbiAgICAgIGxldCBoaWRkZW4gPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2M7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgIGxldCB2aXNpYmxlID0gZXhwciBpblxuICAgICAge1xuICAgICAgICBleHByIHdpdGhcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gb3RoZXJfYXR0cnM7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyB2aXNpYmxlOyBoaWRkZW4gXTtcbiAgICAgIH1cbiAgfCBTb21lIChQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKTsgXyB9IF0pIC0+IGV4cHJcbiAgfCBTb21lIF8gLT4gaW52YWxpZF9hcmcgXCJJbnZhbGlkIHBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoIHBheWxvYWRcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChsaWRlbnRfbG9jLCBleHByKSAtPlxuICAgICAgbWF0Y2ggbGlkZW50X2xvYy5Bc3RfNTAxLkFzdHR5cGVzLnR4dCB3aXRoXG4gICAgICB8IExvbmdpZGVudC5MaWRlbnQgXCJsb2FkX3BhdGhcIiAtPlxuICAgICAgICAgIChsaWRlbnRfbG9jLCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByKVxuICAgICAgfCBfIC0+IChsaWRlbnRfbG9jLCBleHByKSlcbiAgICBmaWVsZHNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBwYXlsb2FkID1cbiAgbGV0IG9wZW4gQXN0XzUwMS5QYXJzZXRyZWUgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0clxuICAgICAgW1xuICAgICAgICAoe1xuICAgICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICAgIFBzdHJfZXZhbFxuICAgICAgICAgICAgICAgKCh7IHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIH0gYXMgZXhwciksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgfSBhcyBzdHJpKTtcbiAgICAgIF0gLT5cbiAgICAgIGxldCBuZXdfZmllbGRzID0gbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzIGluXG4gICAgICBsZXQgbmV3X2V4cHIgPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAobmV3X2ZpZWxkcywgTm9uZSkgfSBpblxuICAgICAgUFN0ciBbIHsgc3RyaSB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAobmV3X2V4cHIsIGF0dHJpYnV0ZXMpIH0gXVxuICB8IF8gLT4gcGF5bG9hZFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uXG4gICAgICAgICggW10sXG4gICAgICAgICAgTm9uZSxcbiAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXMgKExpc3QubWFwIGNvcHlfY2FzZSB4MCwgbG9jLCBbXSkgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuIChhcmdfbGFiZWwsIG9wdF9kZWZhdWx0LCBwYXQsIGV4cHIpIC0+XG4gICAgICBsZXQgdGFrZV9ib2R5IChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiBjYXNlX2xpc3QgLT5cbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlc1xuICAgICAgICAgICAgICAoIExpc3QubWFwIGNvcHlfY2FzZSBjYXNlX2xpc3QsXG4gICAgICAgICAgICAgICAgZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXMgKVxuICAgICAgICB8IF8gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHkgKGNvcHlfZXhwcmVzc2lvbiBlKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgdGFrZV9hcmd1bWVudHMgYWNjIChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgICAgICAgKCogVGhlIGF0dHJpYnV0ZSBsaXN0IGlzIG5vdCBlbXB0eSwgbm9uZSBvZiB0aGVzZSBub2RlcyBjb3VsZCBoYXZlXG4gICAgICAgICAgICAgYmVlbiBjcmVhdGVkIGJ5IHRoZSBkb3dud2FyZCBtaWdyYXRpb24uIEV4Y2VwdCBmb3IgW1BleHBfZnVuXSwgZm9yXG4gICAgICAgICAgICAgd2hpY2ggd2UgYWRkIGEgZ2hvc3QgYXR0cmlidXRlIHRvIGhlbHAgdXMgcm91bmR0cmlwLiAqKVxuICAgICAgICAgIGxldCBfLCBhdHRycyA9XG4gICAgICAgICAgICBleHRyYWN0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXCIgZS5wZXhwX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5XG4gICAgICAgICAgICAgIChjb3B5X2V4cHJlc3Npb24geyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfSkgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlIGxpa2VseSB0byBoYXZlIGJlZW4gc3ludGhldGl6ZWQgZHVyaW5nIHRoZVxuICAgICAgICAgICAgIGRvd253YXJkIG1pZ3JhdGlvbi4gKilcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoYXJnX2xhYmVsLCBvcHRfZGVmYXVsdCwgcGF0LCBleHByKSAtPlxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50c19mdW4gYWNjIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh0LCBleHByKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fbG9jID0gdC5sb2M7XG4gICAgICAgICAgICAgICAgICBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50cyBhY2MgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChleHAsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBUaGVzZSB0d28gZXhwcmVzc2lvbiBhcmUgcmVwcmVzZW50ZWQgdGhlIHNhbWUgb24gNS4xIGJ1dFxuICAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSBvbiA1LjI6XG4gICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCA6IChfIC0+IGludCkgLT4gZnVuIHkgLT4geCt5XG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCAtPiAoKGZ1biB5IC0+IHgreSkgOiBfIC0+IGludClcbiAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgV2Ugbm9ybWFsaXplIHRoZSBzZWNvbmQgaW50byB0aGUgZmlyc3Qgd2hlbiBtaWdyYXRpbmcgdG8gNS4yLFxuICAgICAgICAgICAgICAgICBtYWtpbmcgdGhlIG1pZ3JhdGlvbiA1LjItPjUuMS0+NS4yIG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseVxuICAgICAgICAgICAgICAgICB3aXRob3V0IGNoYW5nZSBpbiBzZW1hbnRpY3MuICopXG4gICAgICAgICAgICAgIGxldCBjdCA9XG4gICAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0cmFpbnQgKGNvcHlfY29yZV90eXBlIGN0KSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGFjYywgY3QsIHRha2VfYm9keSBleHApXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwLCBjMSwgYzIpIC0+XG4gICAgICAgICAgICAgICgqIFNhbWUgYXMgYWJvdmUsIG1pZ2h0IG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseSBPSy4gKilcbiAgICAgICAgICAgICAgbGV0IGMxID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBjMVxuICAgICAgICAgICAgICBhbmQgYzIgPSBjb3B5X2NvcmVfdHlwZSBjMiBpblxuICAgICAgICAgICAgICAoYWNjLCBTb21lIChBc3RfNTAyLlBhcnNldHJlZS5QY29lcmNlIChjMSwgYzIpKSwgdGFrZV9ib2R5IGV4cClcbiAgICAgICAgICB8IF8gLT4gKGFjYywgTm9uZSwgdGFrZV9ib2R5IGUpXG4gICAgICBhbmQgdGFrZV9hcmd1bWVudHNfZnVuIGFjYyBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHIgPVxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBsZXQgcHBhcmFtX2Rlc2MgPVxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhcmFtX3ZhbFxuICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGFyZ19sYWJlbCxcbiAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBvcHRfZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4gcGF0IClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIEJlc3QtZWZmb3J0IGxvY2F0aW9uLiAqKVxuICAgICAgICAgIHsgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IHBhdC5wcGF0X2xvYzsgcHBhcmFtX2Rlc2MgfSA6OiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgdGFrZV9hcmd1bWVudHMgYWNjIGV4cHJcbiAgICAgIGluXG4gICAgICAoKiBUaGUgYXJndW1lbnQgbGlzdCByZXR1cm5lZCBieSBbdGFrZV9hcmd1bWVudHNdIGlzIHJldmVyc2VkICopXG4gICAgICBsZXQgYXJnX2xpc3QsIHR5cGVfY29uc3RyYWludCwgYm9keSA9XG4gICAgICAgIHRha2VfYXJndW1lbnRzX2Z1biBbXSBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHJcbiAgICAgIGluXG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0LnJldiBhcmdfbGlzdCwgdHlwZV9jb25zdHJhaW50LCBib2R5KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzXG4gICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IHgxOyBsb2MgPSB4MC5wdHlwX2xvYyB9KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIDQuMTQgYW5kIDUuMCBmcm9tIGEgUGFyc2V0cmVlIHBvaW50IG9mIHZpZXcgYXJlIHRoZSBtYWdpYyBudW1iZXJzICopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuQXN0dHlwZXNcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5QYXJzZXRyZWVcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMlwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICBsZXQgbWVyZ2VfbG9jIGxlZnQgcmlnaHQgPVxuICAgIExvY2F0aW9uLlxuICAgICAgeyBsb2Nfc3RhcnQgPSBsZWZ0LmxvY19zdGFydDsgbG9jX2VuZCA9IHJpZ2h0LmxvY19lbmQ7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgaW5cbiAgbGV0IGdob3N0X2xvYyBsb2MgPSB7IGxvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwID1cbiAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgZ2hvc3RfbG9jXG4gICAgICAgIChtZXJnZV9sb2MgcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICBpblxuICAgIHtcbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHBhdCwgdHlwKTtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgfVxuICBpblxuICBsZXQgcHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0IGFuZCBwdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICBsZXQgY29uc3RyYWluX3BhdCBwYXQgdHlwIGV4cHIgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCBpblxuICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByID1cbiAgICBtYXRjaCAocHZiX2NvbnN0cmFpbnQsIHB2Yl9wYXQpIHdpdGhcbiAgICB8ICggU29tZVxuICAgICAgICAgIChQdmNfY29uc3RyYWludFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTtcbiAgICAgICAgICAgICAgdHlwID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiB0aGUgc3VnYXJpbmcgb2YgW2xldCB4OiB1bml2YXJzIC4gdHlwID0gZXhwIF0gd2FzIGRlc3VnYXJlZCB0b1xuICAgICAgICAgICBbbGV0ICh4OnVuaXZhcnMgLiB0eXApID0gZXhwXSBpbiA1LjAgd2hpY2ggZG9lc24ndCBmaXQgdGhlIGNhc2UgYmVsb3cgKilcbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgKCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICAgICAgICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgICAgICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgICAgICAgbGV0IGRlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgICAgICAgICggTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICBsYmxfbHN0X29wdGlvbiApXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPVxuICAgICAgICAgIG1hdGNoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBnaG9zdF9sb2MgdHlwLnB0eXBfbG9jXG4gICAgICAgICAgfCBfIDo6IF8gLT4gZ2hvc3RfbG9jIHBleHBfbG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBfcG9seSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwIHdpdGhcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgICAgICAgICAoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyxcbiAgICAgICAgICAgICAgICAgIHZhcmlmeV9jb25zdHJ1Y3RvcnMgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHR5cCApO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgICAgIGdob3N0X2xvY1xuICAgICAgICAgICAgKG1lcmdlX2xvYyBwdmJfcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jXG4gICAgICAgICAgICAgICB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0geyAoZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cF9wb2x5KSB3aXRoIHBwYXRfbG9jIH1cbiAgICAgICAgYW5kIHB2Yl9leHByID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBleHByIHZhciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodmFyLCBleHByKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAocHZiX2V4cHIsIHR5cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoTGlzdC5yZXYgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzKVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdOyB0eXAgfSksIF8gLT5cbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgU29tZSAoUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KSwgXyAtPlxuICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbiBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBnaG9zdF9sb2MgY29lcmNpb24ucHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHR5cCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29lcmNpb24gd2l0aFxuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoW10sIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cCBpblxuICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHB2Yl9leHByLCBncm91bmQsIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IF8gLT4gKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBsb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxID0gY29weV9tb2R1bGVfZXhwciB4MSBpblxuICAgICAgbGV0IHgxID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IGxvYyA9IHsgeDEucG1vZF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID1cbiAgICAgICAgICAgICAgICAgIHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IGxvYyB9O1xuICAgICAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgW107XG4gICAgICAgICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogeDEucG1vZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9XG4gICAgICAgIHwgXyAtPiB4MVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgbGV0IGVtcHR5X3N0cnVjdCA9XG4gICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgZW1wdHlfc3RydWN0KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAwLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+IFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuICBpblxuICAoKiBNYXRjaCB0aGUgZm9ybSBvZiB0aGUgZXhwciBhbmQgcGF0dGVybiB0byBkZWNpZGUgdGhlIHZhbHVlIG9mXG4gICAgIFtwdmJfY29uc3RyYWludF0uIEFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgUFByaW50ZXIuICopXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdHl2YXJzIGluXG4gIGxldCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHAgZSA9XG4gICAgbGV0IHZhbHVlX3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gYXMgdHlfZXh0KSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGFzc2VydCAobWF0Y2ggcnQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpO1xuICAgICAgICAgIGxldCB0eSA9IG1hdGNoIGFyZ3NfdHl2YXJzIHdpdGggW10gLT4gcnQgfCBfIC0+IHR5X2V4dCBpblxuICAgICAgICAgIGBWYXIgKHBhdCwgYXJnc190eXZhcnMsIHJ0LCB0eSlcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocGF0LCBydCk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYE5vblZhciAocGF0LCBydClcbiAgICAgIHwgXyAtPiBgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyB2YWx1ZV9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICB2YWx1ZV9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgdmFsdWVfZXhwID0gdmFsdWVfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAodmFsdWVfcGF0dGVybiwgdmFsdWVfZXhwKSB3aXRoXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBTb21lIChlX3R5dmFycywgaW5uZXJfZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlblxuICAgICAgICAgIGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgcHRfdHl2YXJzLCBlX2N0LCBpbm5lcl9lKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogdGhlIGV4cHJlc3Npb24gY29uc3RyYWludCBhbmQgdGhlIHBhdHRlcm4gY29uc3RyYWludCxcbiAgICAgICAgICAgICBkb24ndCBtYXRjaCwgYnV0IHdlIHN0aWxsIGhhdmUgYSBQdHlwX3BvbHkgcGF0dGVybiBjb25zdHJhaW50IHRoYXRcbiAgICAgICAgICAgICBzaG91bGQgYmUgcmVzdWdhcmVkIHRvIGEgdmFsdWUgYmluZGluZyAqKVxuICAgICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIF8gLT5cbiAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYE5vblZhciAocGF0LCBjdCksIF8gLT4gYE5vblZhciAocGF0LCBjdCwgZSlcbiAgICB8IF8gLT4gYE5vbmVcbiAgaW5cbiAgbGV0IHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cCA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIFNvbWVcbiAgICAgIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICAgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSB0eV92YXJzOyB0eXAgfSlcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByLCBwdmJfY29uc3RyYWludCA9XG4gICAgbWF0Y2ggcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwdmJfcGF0IHB2Yl9leHByIHdpdGhcbiAgICB8IGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgdHlfdmFycywgdHlwLCBlKSAtPlxuICAgICAgICAocCwgZSwgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgW10sIGN0LCBleHByKSAtPiAoXG4gICAgICAgICgqIGNoZWNrIGlmIHdlIGFyZSBpbiB0aGUgW2xldCB4IDogdHk/IDo+IGNvZXIgPSBleHByIF0gY2FzZSAqKVxuICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29lcmNlIChleHByLCBnciwgY29lcmNlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBnciBpblxuICAgICAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNlIGluXG4gICAgICAgICAgICBsZXQgcHZiX2NvbnN0cmFpbnQgPVxuICAgICAgICAgICAgICBTb21lIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKHBhdCwgZXhwciwgcHZiX2NvbnN0cmFpbnQpXG4gICAgICAgIHwgXyAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgXywgY3QsIGV4cHIpIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdClcbiAgICB8IGBOb25WYXIgKHAsIHR5cCwgZSkgLT4gKHAsIGUsIHdpdGhfY29uc3RyYWludCBbXSB0eXApXG4gICAgfCBgTm9uZSAtPiAocHZiX3BhdCwgcHZiX2V4cHIsIE5vbmUpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxLCBpc191bml0ID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHIgYWNjIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBfID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IF8gfTtcbiAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IHEgLT5cbiAgICAgICAgICAgICAgICAgIChMaXN0LnJldl9hcHBlbmQgYWNjIHEsIGZhbHNlKVxuICAgICAgICAgICAgICB8IGhkIDo6IHRsIC0+IGV4dHJhY3RfYXR0ciAoaGQgOjogYWNjKSB0bFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGIgPSBleHRyYWN0X2F0dHIgW10geDEucG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICAgICAoeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9LCBiKVxuICAgICAgICB8IF8gLT4gKHgxLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBpZiBpc191bml0IHRoZW4gQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICAgICAgZWxzZVxuICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDAuQXN0dHlwZXMudHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJtb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNTAwLlBhcnNldHJlZS4lcyAtPiBBc3RfNDE0LlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF80MTQuUGFyc2V0cmVlLiVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgKFtdLCBQKVxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICBDICh0eXBlIGEgYikgUCAgIFNvbWUgKFthOyBiXSwgUClcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgOj0gIC4uLiAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZCAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxNC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+IChcbiAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgICAgIHwgaGQgOjogXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJ0eXBlIHBhcmFtZXRlcnMgaW4gZXh0ZW5zaW9uIGNvbnN0cnVjdG9yc1wiKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcGNkX3ZhcnMgd2l0aFxuICB8IFtdIC0+XG4gICAgICB7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgICAgIH1cbiAgfCBoZCA6OiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJwY2RfdmFycyBpbiBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbnNcIlxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTQuQXN0dHlwZXMudHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTQuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKFtdLCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycyA9IFtdO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjlcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChtYXRjaCB4MCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgfCB0eSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgdHkuQXN0XzQxMy5Bc3R0eXBlcy5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJleGlzdGVudGlhbHMgaW4gcGF0dGVybi1tYXRjaGluZ1wiKTtcbiAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHgxKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgXCJtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvY1xuICAgICAgICBcImRlc3RydWN0aXZlIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jXG4gICAgICAgIFwibG9jYWwgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gKFtdLCBjb3B5X3BhdHRlcm4geCkpIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyN1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyN1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBfLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgTG9jYXRpb24ubm9uZSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI2XCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTBcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2NcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFub255bW91cyBsZXQgbW9kdWxlXCJcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvY1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFueW55bW91cyB1bnBhY2tcIiB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBMb2NhdGlvbi50IGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtYl9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgYmluZGluZ1wiKVxuICAgICAgICBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+XG4gICAgc3RyaW5nIEFzdF80MDkuQXN0dHlwZXMubG9jICogQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgb3B0aW9uID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+ICh7IGxvYyA9IExvY2F0aW9uLm5vbmU7IHR4dCA9IFwiKlwiIH0sIE5vbmUpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICggY29weV9sb2MgKGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIHggLT4geCkgeDAsXG4gICAgICAgIFNvbWUgKGNvcHlfbW9kdWxlX3R5cGUgeDEpIClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1kX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gVGh1IE1hciAyMSAwOTo1MDo0MiBHTVQgMjAxOVxuICAgT0NhbWwgd2FzOlxuICAgY29tbWl0IDU1YzliYTQ2NjM2MmYzMDNlYjRkNWVkNTExZjZmZGExNDI4NzkxMzcgKEhFQUQgLT4gNC4wOCwgb3JpZ2luLzQuMDgpXG4gICAgIEF1dGhvcjogTmljb2zDoXMgT2plZGEgQsOkciA8bi5vamUuYmFyQGdtYWlsLmNvbT5cbiAgICAgRGF0ZTogICBUdWUgTWFyIDE5IDA4OjExOjAyIDIwMTkgKzAxMDBcblxuICAgICAgICAgTWVyZ2UgcHVsbCByZXF1ZXN0ICM4NTIxIGZyb20gbm9qYi9maXhfdW5peF90ZXN0c180MDhcblxuICAgICAgICAgQWN0dWFsbHkgcnVuIGFsbCBsaWItdW5peCB0ZXN0cyBbNC4wOF1cbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA5LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA5LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA4LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDguUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA4LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOC5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDguQXN0dHlwZXMudHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gV2VkIEFwciAxOCAxMDozMzoyOSBCU1QgMjAxOFxuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgYzBiZDZhMjdlMTM4OTExNTYwZjQzZGM3NWQ1ZmRlMmFkZTRkNmNmZSAoSEVBRCwgdGFnOiA0LjA3LjArYmV0YTIpXG4gICAgIEF1dGhvcjogRGFtaWVuIERvbGlnZXogPGRhbWllbi5kb2xpZ2V6QGlucmlhLmZyPlxuICAgICBEYXRlOiAgIFR1ZSBBcHIgMTAgMTQ6NTA6NDggMjAxOCArMDIwMFxuXG4gICAgICAgICBjaGFuZ2UgVkVSU0lPTiBmb3IgNC4wNy4wK2JldGEyXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIzXCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDhcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9sb2MgPSBfO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgICggcGRpcl9uYW1lLkxvY2F0aW9uLnR4dCxcbiAgICAgICAgICBtYXRjaCBwZGlyX2FyZyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IGFyZyApXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IF9wZGlyYV9sb2MgfSAtPlxuICBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2NcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZCxcbiAgICAgICAgICAgICAgY29weV9leHByZXNzaW9uIHgxIClcbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB7IGxldF87IGFuZHMgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbGV0Xy5wYm9wX29wLmxvYyBcImxldCBvcGVyYXRvcnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcHJmX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MSxcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwb2ZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX2xvYyA9IF87XG4gICAgIH0gLT5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWUsIGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPVxuICAgICAgICAgICAgICAgIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24geDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBsZXQgeDBfbG9jID1cbiAgICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgICB8IFtdIC0+IExvY2F0aW9uLm5vbmVcbiAgICAgICAgfCB7IEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYzsgXyB9IDo6IF8gLT4gcHR5cGVfbG9jXG4gICAgICBpblxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwX2xvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAucG1zX2xvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiBoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG4oKiBhbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICBGcm9tLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuICAgZnVuXG4gICAgIHsgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBwdHlleG5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuICAgICAgLT5cbiAgICAge1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSAoY29weV9sb2NhdGlvbiBwdHlleG5fbG9jKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgKGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcylcbiAgICAgfSopXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX25hbWUgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi50eHQgPSB4MDsgTG9jYXRpb24ubG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2FyZyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb25cbiAgICA9XG4gIGxldCB3cmFwIHBkaXJhX2Rlc2MgPVxuICAgIFNvbWUgeyBUby5QYXJzZXRyZWUucGRpcmFfZGVzYzsgVG8uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IExvY2F0aW9uLm5vbmUgfVxuICBpblxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBOb25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MCkgfD4gd3JhcFxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9ib29sIHgyLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4Myk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID0gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4Mik7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID0gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDA7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCB4MTtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQpO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBwb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc3RyX2ZpZWxkc1xuICBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZClcbiAgICAgICAgICAgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzaWdfZmllbGRzXG4gIGluXG5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiBfIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IHB0eWV4dF9wYXRoLkxvY2F0aW9uLmxvYztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIE1vbiBPY3QgIDIgMTE6MjU6NTcgQ0VTVCAyMDE3XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCA2NTk0MGEyYzZiZTQzYzQyZjc1YzZjNmIyNTU5NzRmN2U2ZGUwM2NhIChIRUFEIC0+IDQuMDYsIG9yaWdpbi80LjA2KVxuICAgICBBdXRob3I6IENocmlzdG9waGUgUmFmZmFsbGkgPGNocmlzdG9waGVAcmFmZmFsbGkuZXU+XG4gICAgIERhdGU6ICAgU3VuIE9jdCAxIDE4OjI3OjA3IDIwMTcgKzAyMDBcblxuICAgICAgICAgZml4ZWQgcG9zaXRpb24gb2YgbGFzdCBvcHRpb25hbCBsYXN0IHNlbWljb2x1bW4gaW4gc2VxdWVuY2UgKCMxMzg3KVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyMlwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgTG9jYXRpb24ubm9uZSBcImluaGVyaXRhbmNlIGluIG9iamVjdCB0eXBlXCIpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAudHh0LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIGV4cHJlc3Npb25cIlxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBfOyBfIH0sIHgwKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgeDA7IGxvYyB9LCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSB4MDsgbG9jIH0sIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyBsb2M7IF8gfSwgX3gwKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgbG9jOyBfIH0sIF94MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgdHlwZVwiXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIHsgdHh0ID0gY29weV9sYWJlbCB4MDsgbG9jID0gTG9jYXRpb24ubm9uZSB9LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lLFxuICAgICAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MS5Gcm9tLkFzdHR5cGVzLnR4dClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbm9sb2MgeCA9IHsgTG9jYXRpb24udHh0ID0geDsgbG9jID0gTG9jYXRpb24ubm9uZSB9XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBub2xvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKG5vbG9jIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAobm9sb2MgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiBub2xvYyB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gbm9sb2MgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDRcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJsb2NhbCBleGNlcHRpb25zXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBsYWIgbXVzdCBzdGFydCB3aXRoICc/Jy5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcblxuICAgIE5vdGU6IHdoZW4gdXNlZCB1bmRlciBQc3RyX3ByaW1pdGl2ZSwgcHJpbSBjYW5ub3QgYmUgZW1wdHlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb3JlX3R5cGUgbGlzdDtcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUpXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChhcmdzID0gW10sIHJlcyA9IFNvbWUgVDApXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29yZV90eXBlIGxpc3QgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIGludFxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxNVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDJcblxubGV0IGluamVjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIGQgPVxuICBsZXQgb3BlbiBUbyBpblxuICBsZXQgb3BlbiBQYXJzZXRyZWUgaW5cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgXyAtPlxuICAgICAgbGV0IGxvYyA9IHsgZC5wdHlwX2xvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHR4dCA9IExvbmdpZGVudC5MZG90IChMb25naWRlbnQuTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIikgaW5cbiAgICAgIGxldCBpZGVudCA9IHsgTG9jYXRpb24udHh0OyBsb2MgfSBpblxuICAgICAge1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWRlbnQsIFsgZCBdKTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuICB8IF8gLT4gZFxuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjAzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ1bnJlYWNoYWJsZSBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgbG9jIHgwLCBjb3B5X2NvbnN0YW50IGxvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIGxvYyA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJzaWduYXR1cmVzIGluIGF0dHJpYnV0ZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoZnJvbV9sb2MgcGV4dF9uYW1lKSBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKGZyb21fbG9jIHBjZF9uYW1lKSBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlIGxpc3QgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+IExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiaW5saW5lIHJlY29yZHNcIlxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gXCJcIlxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4geDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFwiP1wiIF4geDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IGxvYyA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLkFzdHR5cGVzLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdsJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQzMiAoSW50MzIub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdMJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQ2NCAoSW50NjQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICduJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgKE5hdGl2ZWludC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGludGVnZXIgbGl0ZXJhbHNcIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPiBUby5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGZsb2F0IGxpdGVyYWxzXCIpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHJlY2ZsYWcgdHlwZXMgPVxuICBtYXRjaCAocmVjZmxhZywgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzKSB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzIC0+IHR5cGVzXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIFtdIC0+IFtdXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHggOjogeHMgLT5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiX25vbmVfXCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gLTE7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICAoeyBUby5Bc3R0eXBlcy50eHQgPSBcIm5vbnJlY1wiOyBsb2MgfSwgVG8uUGFyc2V0cmVlLlBTdHIgW10pXG4gICAgICAgIDo6IHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIF94MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDJcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB0eXAgPVxuICBsZXQgb3BlbiBGcm9tIGluXG4gIGxldCBvcGVuIExvbmdpZGVudCBpblxuICBtYXRjaCAobGFiZWwsIHR5cC5QYXJzZXRyZWUucHR5cF9kZXNjKSB3aXRoXG4gIHwgKCBUby5Bc3R0eXBlcy5PcHRpb25hbCBfLFxuICAgICAgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKHsgTG9jYXRpb24udHh0ID0gTGRvdCAoTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIik7IF8gfSwgWyBkIF0pICkgLT5cbiAgICAgIGRcbiAgfCBfIC0+IHR5cFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHBjZF9hcmdzKTtcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuIGZ1biB4IC0+XG4gIGlmIHggPD4gXCJcIiB0aGVuXG4gICAgaWYgeC5bMF0gPSAnPycgdGhlblxuICAgICAgVG8uQXN0dHlwZXMuT3B0aW9uYWwgKFN0cmluZy5zdWIgeCAxIChTdHJpbmcubGVuZ3RoIHggLSAxKSlcbiAgICBlbHNlIFRvLkFzdHR5cGVzLkxhYmVsbGVkIHhcbiAgZWxzZSBUby5Bc3R0eXBlcy5Ob2xhYmVsXG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5Bc3R0eXBlcy5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50MzIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHgwLCBTb21lICdsJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDY0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB4MCwgU29tZSAnTCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB4MCwgU29tZSAnbicpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHR5cGVzID1cbiAgbGV0IGlzX25vbnJlYyAoYXR0ciwgXykgPSBhdHRyLkxvY2F0aW9uLnR4dCA9IFwibm9ucmVjXCIgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzIHdpdGhcbiAgfCB4IDo6IHhzIHdoZW4gTGlzdC5leGlzdHMgaXNfbm9ucmVjIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgLT5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoaXNfbm9ucmVjIHgpKSB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4cylcbiAgfCB0eXBlcyAtPiAoVG8uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcylcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2ludCAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsImxldCBpc19rZXl3b3JkID0gZnVuY3Rpb25cbiAgfCBcImFuZFwiIC0+IHRydWVcbiAgfCBcImFzXCIgLT4gdHJ1ZVxuICB8IFwiYXNzZXJ0XCIgLT4gdHJ1ZVxuICB8IFwiYmVnaW5cIiAtPiB0cnVlXG4gIHwgXCJjbGFzc1wiIC0+IHRydWVcbiAgfCBcImNvbnN0cmFpbnRcIiAtPiB0cnVlXG4gIHwgXCJkb1wiIC0+IHRydWVcbiAgfCBcImRvbmVcIiAtPiB0cnVlXG4gIHwgXCJkb3dudG9cIiAtPiB0cnVlXG4gIHwgXCJlbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZW5kXCIgLT4gdHJ1ZVxuICB8IFwiZXhjZXB0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZXh0ZXJuYWxcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IHRydWVcbiAgfCBcImZvclwiIC0+IHRydWVcbiAgfCBcImZ1blwiIC0+IHRydWVcbiAgfCBcImZ1bmN0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3RvclwiIC0+IHRydWVcbiAgfCBcImlmXCIgLT4gdHJ1ZVxuICB8IFwiaW5cIiAtPiB0cnVlXG4gIHwgXCJpbmNsdWRlXCIgLT4gdHJ1ZVxuICB8IFwiaW5oZXJpdFwiIC0+IHRydWVcbiAgfCBcImluaXRpYWxpemVyXCIgLT4gdHJ1ZVxuICB8IFwibGF6eVwiIC0+IHRydWVcbiAgfCBcImxldFwiIC0+IHRydWVcbiAgfCBcIm1hdGNoXCIgLT4gdHJ1ZVxuICB8IFwibWV0aG9kXCIgLT4gdHJ1ZVxuICB8IFwibW9kdWxlXCIgLT4gdHJ1ZVxuICB8IFwibXV0YWJsZVwiIC0+IHRydWVcbiAgfCBcIm5ld1wiIC0+IHRydWVcbiAgfCBcIm5vbnJlY1wiIC0+IHRydWVcbiAgfCBcIm9iamVjdFwiIC0+IHRydWVcbiAgfCBcIm9mXCIgLT4gdHJ1ZVxuICB8IFwib3BlblwiIC0+IHRydWVcbiAgfCBcIm9yXCIgLT4gdHJ1ZVxuICAoKiB8IFwicGFyc2VyXCIgLT4gdHJ1ZSAqKVxuICB8IFwicHJpdmF0ZVwiIC0+IHRydWVcbiAgfCBcInJlY1wiIC0+IHRydWVcbiAgfCBcInNpZ1wiIC0+IHRydWVcbiAgfCBcInN0cnVjdFwiIC0+IHRydWVcbiAgfCBcInRoZW5cIiAtPiB0cnVlXG4gIHwgXCJ0b1wiIC0+IHRydWVcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJ0cnlcIiAtPiB0cnVlXG4gIHwgXCJ0eXBlXCIgLT4gdHJ1ZVxuICB8IFwidmFsXCIgLT4gdHJ1ZVxuICB8IFwidmlydHVhbFwiIC0+IHRydWVcbiAgfCBcIndoZW5cIiAtPiB0cnVlXG4gIHwgXCJ3aGlsZVwiIC0+IHRydWVcbiAgfCBcIndpdGhcIiAtPiB0cnVlXG4gIHwgXCJsb3JcIiAtPiB0cnVlXG4gIHwgXCJseG9yXCIgLT4gdHJ1ZVxuICB8IFwibW9kXCIgLT4gdHJ1ZVxuICB8IFwibGFuZFwiIC0+IHRydWVcbiAgfCBcImxzbFwiIC0+IHRydWVcbiAgfCBcImxzclwiIC0+IHRydWVcbiAgfCBcImFzclwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnNcbiAgICBvcGVuIFByaW50ZiAkKilcblxuKCogQ29weSBvZiBPQ2FtbCBwYXJzZXRyZWVzICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uIChmdW4gc3VmZml4IF8gLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBBc3RfJXMgPSBBc3RfJXNcXG5cIiBzdWZmaXggc3VmZml4KVxuKilcbm1vZHVsZSBBc3RfNDAyID0gQXN0XzQwMlxubW9kdWxlIEFzdF80MDMgPSBBc3RfNDAzXG5tb2R1bGUgQXN0XzQwNCA9IEFzdF80MDRcbm1vZHVsZSBBc3RfNDA1ID0gQXN0XzQwNVxubW9kdWxlIEFzdF80MDYgPSBBc3RfNDA2XG5tb2R1bGUgQXN0XzQwNyA9IEFzdF80MDdcbm1vZHVsZSBBc3RfNDA4ID0gQXN0XzQwOFxubW9kdWxlIEFzdF80MDkgPSBBc3RfNDA5XG5tb2R1bGUgQXN0XzQxMCA9IEFzdF80MTBcbm1vZHVsZSBBc3RfNDExID0gQXN0XzQxMVxubW9kdWxlIEFzdF80MTIgPSBBc3RfNDEyXG5tb2R1bGUgQXN0XzQxMyA9IEFzdF80MTNcbm1vZHVsZSBBc3RfNDE0ID0gQXN0XzQxNFxubW9kdWxlIEFzdF81MDAgPSBBc3RfNTAwXG5tb2R1bGUgQXN0XzUwMSA9IEFzdF81MDFcbm1vZHVsZSBBc3RfNTAyID0gQXN0XzUwMlxuKCokKilcblxuKCogTWFudWFsIG1pZ3JhdGlvbiBiZXR3ZWVuIHZlcnNpb25zICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biB4IHkgLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHggeSB4IHk7XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB5IHggeSB4KVxuKilcbm1vZHVsZSBNaWdyYXRlXzQwMl80MDMgPSBNaWdyYXRlXzQwMl80MDNcbm1vZHVsZSBNaWdyYXRlXzQwM180MDIgPSBNaWdyYXRlXzQwM180MDJcbm1vZHVsZSBNaWdyYXRlXzQwM180MDQgPSBNaWdyYXRlXzQwM180MDRcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDMgPSBNaWdyYXRlXzQwNF80MDNcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDUgPSBNaWdyYXRlXzQwNF80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDQgPSBNaWdyYXRlXzQwNV80MDRcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDYgPSBNaWdyYXRlXzQwNV80MDZcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDUgPSBNaWdyYXRlXzQwNl80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDcgPSBNaWdyYXRlXzQwNl80MDdcbm1vZHVsZSBNaWdyYXRlXzQwN180MDYgPSBNaWdyYXRlXzQwN180MDZcbm1vZHVsZSBNaWdyYXRlXzQwN180MDggPSBNaWdyYXRlXzQwN180MDhcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDcgPSBNaWdyYXRlXzQwOF80MDdcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDkgPSBNaWdyYXRlXzQwOF80MDlcbm1vZHVsZSBNaWdyYXRlXzQwOV80MDggPSBNaWdyYXRlXzQwOV80MDhcbm1vZHVsZSBNaWdyYXRlXzQwOV80MTAgPSBNaWdyYXRlXzQwOV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMF80MDkgPSBNaWdyYXRlXzQxMF80MDlcbm1vZHVsZSBNaWdyYXRlXzQxMF80MTEgPSBNaWdyYXRlXzQxMF80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTAgPSBNaWdyYXRlXzQxMV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTIgPSBNaWdyYXRlXzQxMV80MTJcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTEgPSBNaWdyYXRlXzQxMl80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTMgPSBNaWdyYXRlXzQxMl80MTNcbm1vZHVsZSBNaWdyYXRlXzQxM180MTIgPSBNaWdyYXRlXzQxM180MTJcbm1vZHVsZSBNaWdyYXRlXzQxM180MTQgPSBNaWdyYXRlXzQxM180MTRcbm1vZHVsZSBNaWdyYXRlXzQxNF80MTMgPSBNaWdyYXRlXzQxNF80MTNcbm1vZHVsZSBNaWdyYXRlXzQxNF81MDAgPSBNaWdyYXRlXzQxNF81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMF80MTQgPSBNaWdyYXRlXzUwMF80MTRcbm1vZHVsZSBNaWdyYXRlXzUwMF81MDEgPSBNaWdyYXRlXzUwMF81MDFcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDAgPSBNaWdyYXRlXzUwMV81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDIgPSBNaWdyYXRlXzUwMV81MDJcbm1vZHVsZSBNaWdyYXRlXzUwMl81MDEgPSBNaWdyYXRlXzUwMl81MDFcbigqJCopXG5cbigqIENvbXBpbGVyIG1vZHVsZXMgKilcbm1vZHVsZSBBc3RfbWV0YWRhdGEgPSBBc3RfbWV0YWRhdGFcbm1vZHVsZSBDb25maWcgPSBDb25maWdcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBQYXJzZSA9IFBhcnNlXG5tb2R1bGUgUHByaW50YXN0ID0gUHByaW50YXN0XG5cbmxldCBpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKSA9XG4gICgqSUZfQVRfTEVBU1QgNDA4IE9jYW1sX2NvbW1vbi5Db21wbWlzYy5yZWFkX2NsZmxhZ3NfZnJvbV9lbnYgKCkgKilcbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ICgpICopXG4oKiogQWRqdXN0IHRoZSByZXBvcnRpbmcgc3R5bGUgb2YgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBPQ0FNTF9DT0xPUiBhbmQgT0NBTUxfRVJST1JfU1RZTEUuICopXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRPRE86IHJlbW92ZSB0aGlzIG9wZW4gKilcbm9wZW4gU3RkbGliMFxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxub3BlbiBBc3RsaWIuQXN0XzUwMFxuXG5bQEBAd2FybmluZyBcIi05XCJdXG5cbm9wZW4gQXN0dHlwZXNcbm9wZW4gUGFyc2V0cmVlXG5cbnR5cGUgJ2Egd2l0aF9sb2MgPSAnYSBMb2NhdGlvbi5sb2NcbnR5cGUgbG9jID0gTG9jYXRpb24udFxudHlwZSBsaWQgPSBMb25naWRlbnQudCB3aXRoX2xvY1xudHlwZSBzdHIgPSBzdHJpbmcgd2l0aF9sb2NcbnR5cGUgc3RyX29wdCA9IHN0cmluZyBvcHRpb24gd2l0aF9sb2NcbnR5cGUgYXR0cnMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5sZXQgZGVmYXVsdF9sb2MgPSByZWYgTG9jYXRpb24ubm9uZVxuXG50eXBlIHJlZl9hbmRfdmFsdWUgPSBSIDogJ2EgcmVmICogJ2EgLT4gcmVmX2FuZF92YWx1ZVxuXG5sZXQgcHJvdGVjdF9yZWYgPVxuICBsZXQgc2V0X3JlZiAoUiAociwgdikpID0gciA6PSB2IGluXG4gIGZ1biByZWYgZiAtPlxuICAgIGxldCAoUiAociwgXykpID0gcmVmIGluXG4gICAgbGV0IGJhY2t1cCA9IFIgKHIsICFyKSBpblxuICAgIHNldF9yZWYgcmVmO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfZGVmYXVsdF9sb2MgbCBmID0gcHJvdGVjdF9yZWYgKFIgKGRlZmF1bHRfbG9jLCBsKSkgZlxuXG5tb2R1bGUgQ29uc3QgPSBzdHJ1Y3RcbiAgbGV0IGludGVnZXIgP3N1ZmZpeCBpID0gUGNvbnN0X2ludGVnZXIgKGksIHN1ZmZpeClcbiAgbGV0IGludCA/c3VmZml4IGkgPSBpbnRlZ2VyID9zdWZmaXggKEludC50b19zdHJpbmcgaSlcbiAgbGV0IGludDMyID8oc3VmZml4ID0gJ2wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQzMi50b19zdHJpbmcgaSlcbiAgbGV0IGludDY0ID8oc3VmZml4ID0gJ0wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQ2NC50b19zdHJpbmcgaSlcbiAgbGV0IG5hdGl2ZWludCA/KHN1ZmZpeCA9ICduJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxuICBsZXQgZmxvYXQgP3N1ZmZpeCBmID0gUGNvbnN0X2Zsb2F0IChmLCBzdWZmaXgpXG4gIGxldCBjaGFyIGMgPSBQY29uc3RfY2hhciBjXG5cbiAgbGV0IHN0cmluZyA/cXVvdGF0aW9uX2RlbGltaXRlciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgcyA9XG4gICAgUGNvbnN0X3N0cmluZyAocywgbG9jLCBxdW90YXRpb25fZGVsaW1pdGVyKVxuZW5kXG5cbm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgbmFtZSBwYXlsb2FkID1cbiAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgVHlwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2MgPSBkO1xuICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGQucHR5cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHR5cF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF90dXBsZSBhKVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NvbnN0ciAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX29iamVjdCAoYSwgYikpXG4gIGxldCBjbGFzc18gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY2xhc3MgKGEsIGIpKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYWxpYXMgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wb2x5IChhLCBiKSlcbiAgbGV0IHBhY2thZ2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcGFja2FnZSAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2V4dGVuc2lvbiBhKVxuXG4gIGxldCBmb3JjZV9wb2x5IHQgPVxuICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gdCB8IF8gLT4gcG9seSB+bG9jOnQucHR5cF9sb2MgW10gdFxuICAoKiAtPiBnaG9zdD8gKilcblxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gICAgaW5cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuZW5kXG5cbm1vZHVsZSBQYXQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYyA9IGQ7XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZC5wcGF0X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQcGF0X2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXIgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FsaWFzIChhLCBiKSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdGFudCBhKVxuICBsZXQgaW50ZXJ2YWwgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R1cGxlIGEpXG5cbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cnVjdCAoYSwgT3B0aW9uLm1hcCAoZnVuIGIgLT4gKFtdLCBiKSkgYikpXG5cbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hcnJheSBhKVxuICBsZXQgb3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29yIChhLCBiKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgdHlwZV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R5cGUgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9sYXp5IGEpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3VucGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3BlbiAoYSwgYikpXG4gIGxldCBleGNlcHRpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leGNlcHRpb24gYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIEV4cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjID0gZDtcbiAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBkLnBleHBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZGVudCBhKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0YW50IGEpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBmdW5jdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1bmN0aW9uIGEpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcHBseSAoYSwgYikpXG4gIGxldCBtYXRjaF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbWF0Y2ggKGEsIGIpKVxuICBsZXQgdHJ5XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF90cnkgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3R1cGxlIGEpXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RydWN0IChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGZpZWxkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZpZWxkIChhLCBiKSlcbiAgbGV0IHNldGZpZWxkID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FycmF5IGEpXG4gIGxldCBpZnRoZW5lbHNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykpXG4gIGxldCBzZXF1ZW5jZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXF1ZW5jZSAoYSwgYikpXG4gIGxldCB3aGlsZV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfd2hpbGUgKGEsIGIpKVxuICBsZXQgZm9yXyA/bG9jID9hdHRycyBhIGIgYyBkIGUgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBjb2VyY2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpKVxuICBsZXQgc2VuZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZW5kIChhLCBiKSlcbiAgbGV0IG5ld18gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ldyBhKVxuICBsZXQgc2V0aW5zdHZhciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSlcbiAgbGV0IG92ZXJyaWRlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vdmVycmlkZSBhKVxuICBsZXQgbGV0bW9kdWxlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSlcbiAgbGV0IGxldGV4Y2VwdGlvbiA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpKVxuICBsZXQgYXNzZXJ0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXNzZXJ0IGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGF6eSBhKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wb2x5IChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29iamVjdCBhKVxuICBsZXQgbmV3dHlwZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXd0eXBlIChhLCBiKSlcbiAgbGV0IHBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29wZW4gKGEsIGIpKVxuXG4gIGxldCBsZXRvcCA/bG9jID9hdHRycyBsZXRfIGFuZHMgYm9keSA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0pXG5cbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZXh0ZW5zaW9uIGEpXG4gIGxldCB1bnJlYWNoYWJsZSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBleHBfdW5yZWFjaGFibGVcbiAgbGV0IGNhc2UgbGhzID9ndWFyZCByaHMgPSB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cblxuICBsZXQgYmluZGluZ19vcCBvcCBwYXQgZXhwIGxvYyA9XG4gICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG10eV9kZXNjID0gZDsgcG10eV9sb2MgPSBsb2M7IHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBkLnBtdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9pZGVudCBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2FsaWFzIGEpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3NpZ25hdHVyZSBhKVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZnVuY3RvciAoYSwgYikpXG4gIGxldCB3aXRoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV93aXRoIChhLCBiKSlcbiAgbGV0IHR5cGVvZl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3R5cGVvZiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgTW9kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtb2RfZGVzYyA9IGQ7IHBtb2RfbG9jID0gbG9jOyBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gZC5wbW9kX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfaWRlbnQgeClcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2Rfc3RydWN0dXJlIHgpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhcmcgYm9keSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2Z1bmN0b3IgKGFyZywgYm9keSkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBtMSBtMiA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2FwcGx5IChtMSwgbTIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgbSBtdHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9jb25zdHJhaW50IChtLCBtdHkpKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGUgPSBtayA/bG9jID9hdHRycyAoUG1vZF91bnBhY2sgZSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIFNpZyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzaWdfZGVzYyA9IGQ7IHBzaWdfbG9jID0gbG9jIH1cbiAgbGV0IHZhbHVlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdmFsdWUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzaWdfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGVzdWJzdCBhKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R1bGUgYSlcbiAgbGV0IG1vZF9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHN1YnN0IGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19vcGVuIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2luY2x1ZGUgYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3NfdHlwZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHNpZ19leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBTdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc3RyX2Rlc2MgPSBkOyBwc3RyX2xvYyA9IGxvYyB9XG4gIGxldCBldmFsID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9ldmFsIChhLCBhdHRycykpXG4gIGxldCB2YWx1ZSA/bG9jIGEgYiA9IG1rID9sb2MgKFBzdHJfdmFsdWUgKGEsIGIpKVxuICBsZXQgcHJpbWl0aXZlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcHJpbWl0aXZlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc3RyX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdWxlIGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9vcGVuIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfaW5jbHVkZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBDbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2xfZGVzYyA9IGQ7IHBjbF9sb2MgPSBsb2M7IHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gZC5wY2xfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0ciAoYSwgYikpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfc3RydWN0dXJlIGEpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGNsX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2FwcGx5IChhLCBiKSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNsX2xldCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3R5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdHlfZGVzYyA9IGQ7IHBjdHlfbG9jID0gbG9jOyBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gZC5wY3R5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfY29uc3RyIChhLCBiKSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3RmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdGZfZGVzYyA9IGQ7IHBjdGZfbG9jID0gbG9jOyBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9pbmhlcml0IGEpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl92YWwgKGEsIGIsIGMsIGQpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfbWV0aG9kIChhLCBiLCBjLCBkKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY3RmX2F0dHJpYnV0ZSBhKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBkLnBjdGZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgQ2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNmX2Rlc2MgPSBkOyBwY2ZfbG9jID0gbG9jOyBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaGVyaXQgKGEsIGIsIGMpKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfdmFsIChhLCBiLCBjKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX21ldGhvZCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgaW5pdGlhbGl6ZXJfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaXRpYWxpemVyIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGNmX2F0dHJpYnV0ZSBhKVxuICBsZXQgdmlydHVhbF8gY3QgPSBDZmtfdmlydHVhbCBjdFxuICBsZXQgY29uY3JldGUgbyBlID0gQ2ZrX2NvbmNyZXRlIChvLCBlKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGQucGNmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIFZhbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwcmltID0gW10pIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgcHZhbF90eXBlID0gdHlwO1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdmFsX2xvYyA9IGxvYztcbiAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSB0eXAgPVxuICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cDsgcG1kX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1kX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE1zID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHN5biA9XG4gICAge1xuICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgcG1zX21hbmlmZXN0ID0gc3luO1xuICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtc19sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNdGQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID90eXAgbmFtZSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgIHBtdGRfdHlwZSA9IHR5cDtcbiAgICAgIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG10ZF9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBleHByID1cbiAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgT3BuID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG92ZXJyaWRlID0gRnJlc2gpIGV4cHIgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIEluY2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG1leHByID1cbiAgICB7IHBpbmNsX21vZCA9IG1leHByOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5lbmRcblxubW9kdWxlIFZiID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBwYXQgZXhwciA9XG4gICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnM7IHB2Yl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBDaSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2aXJ0ID0gQ29uY3JldGUpID8ocGFyYW1zID0gW10pXG4gICAgICBuYW1lIGV4cHIgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICBwY2lfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8oY3N0cnMgPSBbXSlcbiAgICAgID8oa2luZCA9IFB0eXBlX2Fic3RyYWN0KSA/KHByaXYgPSBQdWJsaWMpID9tYW5pZmVzdCBuYW1lID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB0eXBlX2xvYyA9IGxvYztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZmllbGQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhtdXQgPSBJbW11dGFibGUpIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbGRfbXV0YWJsZSA9IG11dDtcbiAgICAgIHBsZF90eXBlID0gdHlwO1xuICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbigqKiBUeXBlIGV4dGVuc2lvbnMgKilcbm1vZHVsZSBUZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhwcml2ID0gUHVibGljKVxuICAgICAgcGF0aCBjb25zdHJ1Y3RvcnMgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBta19leGNlcHRpb24gPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgY29uc3RydWN0b3IgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGtpbmQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGRlY2wgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9kZWNsICh2YXJzLCBhcmdzLCByZXMpO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IHJlYmluZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGxpZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfcmViaW5kIGxpZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBDc2lnID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxubW9kdWxlIENzdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG4oKiogUm93IGZpZWxkcyAqKVxubW9kdWxlIFJmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHByZl9kZXNjID0gZGVzYzsgcHJmX2xvYyA9IGxvYzsgcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCBjb25zdCB0eXMgPVxuICAgIG1rID9sb2MgP2F0dHJzIChSdGFnIChsYWJlbCwgY29uc3QsIHR5cykpXG5cbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChSaW5oZXJpdCB0eSlcbmVuZFxuXG4oKiogT2JqZWN0IGZpZWxkcyAqKVxubW9kdWxlIE9mID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHBvZl9kZXNjID0gZGVzYzsgcG9mX2xvYyA9IGxvYzsgcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCB0eSA9IG1rID9sb2MgP2F0dHJzIChPdGFnIChsYWJlbCwgdHkpKVxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKE9pbmhlcml0IHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCRUdJTiBvZiBCTEFDSyBNQUdJQyAqKVxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG50eXBlIF8gd2l0bmVzc2VzID0gLi5cblxudHlwZSBfIG1pZ3JhdGlvbiA9IC4uXG50eXBlIF8gbWlncmF0aW9uICs9IFVuZGVmaW5lZCA6IF8gbWlncmF0aW9uXG5cbnR5cGUgJ2EgbWlncmF0aW9uX2luZm8gPSB7XG4gIG11dGFibGUgbmV4dF92ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xuICBtdXRhYmxlIHByZXZpb3VzX3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG59XG5cbigqKiBBYnN0cmFjdCB2aWV3IG9mIGEgdmVyc2lvbiBvZiBhbiBPQ2FtbCBBc3QgKilcbm1vZHVsZSB0eXBlIEFzdCA9IHNpZ1xuICAoKiQgZm9yZWFjaF9tb2R1bGUgKGZ1biBtIHR5cGVzIC0+XG4gICAgICBwcmludGYgXCIgIG1vZHVsZSAlcyA6IHNpZ1xcblwiIG07XG4gICAgICBMaXN0Lml0ZXIgdHlwZXMgfmY6KHByaW50ZiBcIiAgICB0eXBlICVzXFxuXCIpO1xuICAgICAgcHJpbnRmIFwiICBlbmRcXG5cIlxuICAgIClcbiAgKilcbiAgbW9kdWxlIFBhcnNldHJlZSA6IHNpZ1xuICAgIHR5cGUgc3RydWN0dXJlXG4gICAgdHlwZSBzaWduYXR1cmVcbiAgICB0eXBlIHRvcGxldmVsX3BocmFzZVxuICAgIHR5cGUgY29yZV90eXBlXG4gICAgdHlwZSBleHByZXNzaW9uXG4gICAgdHlwZSBwYXR0ZXJuXG4gICAgdHlwZSBjYXNlXG4gICAgdHlwZSB0eXBlX2RlY2xhcmF0aW9uXG4gICAgdHlwZSB0eXBlX2V4dGVuc2lvblxuICAgIHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgdHlwZSBjbGFzc19leHByXG4gICAgdHlwZSBjbGFzc19maWVsZFxuICAgIHR5cGUgY2xhc3NfdHlwZVxuICAgIHR5cGUgY2xhc3Nfc2lnbmF0dXJlXG4gICAgdHlwZSBjbGFzc190eXBlX2ZpZWxkXG4gICAgdHlwZSBtb2R1bGVfZXhwclxuICAgIHR5cGUgbW9kdWxlX3R5cGVcbiAgICB0eXBlIHNpZ25hdHVyZV9pdGVtXG4gICAgdHlwZSBzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcbigqJCopXG4gIG1vZHVsZSBDb25maWcgOiBzaWdcbiAgICB2YWwgYXN0X2ltcGxfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gICAgdmFsIGFzdF9pbnRmX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICBlbmRcbmVuZFxuXG4oKiBTaG9ydGN1dHMgZm9yIHRhbGtpbmcgYWJvdXQgYXN0IHR5cGVzIG91dHNpZGUgb2YgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG50eXBlICdhIF90eXBlcyA9ICdhIGNvbnN0cmFpbnQgJ2FcbiAgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBfO1xcblwiIHMpICopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IF87XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogXztcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBfO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IF87XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogXztcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBfO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IF87XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogXztcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IF87XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogXztcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IF87XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogXztcbigqJCopXG4gID5cbjs7XG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICBwcmludGYgXCJ0eXBlICdhIGdldF8lcyA9XFxuXCIgcztcbiAgICBwcmludGYgXCIgICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCAlcyA6ICd4OyAuLiA+XFxuXCIgc1xuICApICopXG50eXBlICdhIGdldF9zdHJ1Y3R1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdG9wbGV2ZWxfcGhyYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHRvcGxldmVsX3BocmFzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jb3JlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY29yZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4cHJlc3Npb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXhwcmVzc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9wYXR0ZXJuID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHBhdHRlcm4gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2FzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZGVjbGFyYXRpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9kZWNsYXJhdGlvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2V4dGVuc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2V4dGVuc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3Nfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3NpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGVfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlX2l0ZW0gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc3RydWN0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlX2l0ZW0gOiAneDsgLi4gPlxuKCokKilcblxubW9kdWxlIHR5cGUgT0NhbWxfdmVyc2lvbiA9IHNpZ1xuICBtb2R1bGUgQXN0IDogQXN0XG4gIHZhbCB2ZXJzaW9uIDogaW50XG4gIHZhbCBzdHJpbmdfdmVyc2lvbiA6IHN0cmluZ1xuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIHZhbCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0bmVzcyhBc3QgOiBBc3QpID1cbnN0cnVjdFxuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIGxldCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvID1cbiAgICB7IG5leHRfdmVyc2lvbiA9IFVuZGVmaW5lZDsgcHJldmlvdXNfdmVyc2lvbiA9IFVuZGVmaW5lZCB9XG5lbmRcblxudHlwZSAndHlwZXMgb2NhbWxfdmVyc2lvbiA9XG4gIChtb2R1bGUgT0NhbWxfdmVyc2lvblxuICAgICgqJCBsZXQgc2VwID0gd2l0aF90aGVuX2FuZCAoKSBpblxuICAgICAgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiICAgICV0IHR5cGUgQXN0LiVzLiVzID0gJ3R5cGVzIGdldF8lc1xcblwiIHNlcCBtIHMgcykgKilcbiAgICB3aXRoIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgPSAndHlwZXMgZ2V0X3N0cnVjdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gJ3R5cGVzIGdldF90b3BsZXZlbF9waHJhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgPSAndHlwZXMgZ2V0X2NvcmVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gPSAndHlwZXMgZ2V0X2V4cHJlc3Npb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5wYXR0ZXJuID0gJ3R5cGVzIGdldF9wYXR0ZXJuXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2FzZSA9ICd0eXBlcyBnZXRfY2FzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSAndHlwZXMgZ2V0X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9ICd0eXBlcyBnZXRfdHlwZV9leHRlbnNpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSAndHlwZXMgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSAndHlwZXMgZ2V0X2NsYXNzX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlID0gJ3R5cGVzIGdldF9jbGFzc190eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9jbGFzc19zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc190eXBlX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPSAndHlwZXMgZ2V0X21vZHVsZV9leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPSAndHlwZXMgZ2V0X21vZHVsZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3NpZ25hdHVyZV9pdGVtXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICApXG5cbnR5cGUgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJXM6ICdmcm9tIGdldF8lcyAtPiAndG9fIGdldF8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmU6ICdmcm9tIGdldF9zdHJ1Y3R1cmUgLT4gJ3RvXyBnZXRfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZTogJ2Zyb20gZ2V0X3NpZ25hdHVyZSAtPiAndG9fIGdldF9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlOiAnZnJvbSBnZXRfdG9wbGV2ZWxfcGhyYXNlIC0+ICd0b18gZ2V0X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGU6ICdmcm9tIGdldF9jb3JlX3R5cGUgLT4gJ3RvXyBnZXRfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb246ICdmcm9tIGdldF9leHByZXNzaW9uIC0+ICd0b18gZ2V0X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybjogJ2Zyb20gZ2V0X3BhdHRlcm4gLT4gJ3RvXyBnZXRfcGF0dGVybjtcbiAgY29weV9jYXNlOiAnZnJvbSBnZXRfY2FzZSAtPiAndG9fIGdldF9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb246ICdmcm9tIGdldF90eXBlX2RlY2xhcmF0aW9uIC0+ICd0b18gZ2V0X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb246ICdmcm9tIGdldF90eXBlX2V4dGVuc2lvbiAtPiAndG9fIGdldF90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6ICdmcm9tIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3RvXyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHI6ICdmcm9tIGdldF9jbGFzc19leHByIC0+ICd0b18gZ2V0X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQ6ICdmcm9tIGdldF9jbGFzc19maWVsZCAtPiAndG9fIGdldF9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlOiAnZnJvbSBnZXRfY2xhc3NfdHlwZSAtPiAndG9fIGdldF9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZTogJ2Zyb20gZ2V0X2NsYXNzX3NpZ25hdHVyZSAtPiAndG9fIGdldF9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX3R5cGVfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwcjogJ2Zyb20gZ2V0X21vZHVsZV9leHByIC0+ICd0b18gZ2V0X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlOiAnZnJvbSBnZXRfbW9kdWxlX3R5cGUgLT4gJ3RvXyBnZXRfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW06ICdmcm9tIGdldF9zaWduYXR1cmVfaXRlbSAtPiAndG9fIGdldF9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbTogJ2Zyb20gZ2V0X3N0cnVjdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxubGV0IGlkIHggPSB4XG5sZXQgbWlncmF0aW9uX2lkZW50aXR5IDogKCdhLCAnYSkgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgIGNvcHlfJXMgPSBpZDtcXG5cIiBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSA9IGlkO1xuICBjb3B5X2NvcmVfdHlwZSA9IGlkO1xuICBjb3B5X2V4cHJlc3Npb24gPSBpZDtcbiAgY29weV9wYXR0ZXJuID0gaWQ7XG4gIGNvcHlfY2FzZSA9IGlkO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gPSBpZDtcbiAgY29weV90eXBlX2V4dGVuc2lvbiA9IGlkO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGlkO1xuICBjb3B5X2NsYXNzX2V4cHIgPSBpZDtcbiAgY29weV9jbGFzc19maWVsZCA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGUgPSBpZDtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgPSBpZDtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkID0gaWQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgPSBpZDtcbiAgY29weV9tb2R1bGVfdHlwZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtID0gaWQ7XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gPSBpZDtcbigqJCopXG59XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IG1pZ3JhdGlvbl9jb21wb3NlIChhYiA6ICgnYSwgJ2IpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIChiYyA6ICgnYiwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIDogKCdhLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyUtMjFzID0gY29tcG9zZSBiYy5jb3B5XyUtMjFzIGFiLmNvcHlfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgYWIuY29weV90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICBhYi5jb3B5X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgIGFiLmNvcHlfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfcGF0dGVybiAgICAgICAgICAgICAgIGFiLmNvcHlfcGF0dGVybjtcbiAgY29weV9jYXNlICAgICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2FzZSAgICAgICAgICAgICAgICAgIGFiLmNvcHlfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgIGFiLmNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgIGFiLmNvcHlfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gY29tcG9zZSBiYy5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhYi5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZCAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICBhYi5jb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV90eXBlICAgICAgICAgICBhYi5jb3B5X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgYWIuY29weV9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG50eXBlIF8gbWlncmF0aW9uICs9IE1pZ3JhdGlvbiA6ICdmcm9tIG9jYW1sX3ZlcnNpb24gKiAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb24gLT4gJ2Zyb20gbWlncmF0aW9uXG5cbm1vZHVsZSB0eXBlIE1pZ3JhdGVfbW9kdWxlID0gc2lnXG4gIG1vZHVsZSBGcm9tIDogQXN0XG4gIG1vZHVsZSBUbyA6IEFzdFxuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICBwcmludGYgXCIgIHZhbCBjb3B5XyUtMjFzOiBGcm9tLiVzLiVzIC0+IFRvLiVzLiVzXFxuXCIgcyBtIHMgbSBzKSAqKVxuICB2YWwgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgdmFsIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgOiBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICB2YWwgY29weV9jb3JlX3R5cGUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlXG4gIHZhbCBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICB2YWwgY29weV9wYXR0ZXJuICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5cbiAgdmFsIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlXG4gIHZhbCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICB2YWwgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICB2YWwgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIHZhbCBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICB2YWwgY29weV9jbGFzc19maWVsZCAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICB2YWwgY29weV9jbGFzc190eXBlICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgdmFsIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICB2YWwgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgdmFsIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgdmFsIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgdmFsIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbigqJCopXG5lbmRcblxubW9kdWxlIE1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgICAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgbWlncmF0aW9uX2Z1bmN0aW9ucyA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBsZXQgb3BlbiBBX3RvX0IgaW5cbiAgICB7XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICAgIGNvcHlfc3RydWN0dXJlO1xuICAgICAgY29weV9zaWduYXR1cmU7XG4gICAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICAgIGNvcHlfY29yZV90eXBlO1xuICAgICAgY29weV9leHByZXNzaW9uO1xuICAgICAgY29weV9wYXR0ZXJuO1xuICAgICAgY29weV9jYXNlO1xuICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgY29weV9jbGFzc19leHByO1xuICAgICAgY29weV9jbGFzc19maWVsZDtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9taWdyYXRpb24gKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG4gICAgKEJfdG9fQSA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBCLkFzdCBhbmQgbW9kdWxlIFRvID0gQS5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0ICgpID0gKFxuICAgIGxldCBpc191bmRlZmluZWQgOiB0eXBlIGEuIGEgbWlncmF0aW9uIC0+IGJvb2wgPSBmdW5jdGlvblxuICAgICAgfCBVbmRlZmluZWQgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBhc3NlcnQgKEEudmVyc2lvbiA8IEIudmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbik7XG4gICAgbGV0IG1vZHVsZSBBX3RvX0JfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhBKShCKShBX3RvX0IpIGluXG4gICAgbGV0IG1vZHVsZSBCX3RvX0FfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhCKShBKShCX3RvX0EpIGluXG4gICAgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBBKSwgQV90b19CX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEIpKTtcbiAgICBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBCKSwgQl90b19BX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEEpKTtcbiAgKVxuZW5kXG5cbnR5cGUgJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvbiA9XG4gIHwgTm9fbWlncmF0aW9uIDogJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuICB8IEltbWVkaWF0ZV9taWdyYXRpb25cbiAgICA6ICAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb25cbiAgICAgIC0+ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cblxubGV0IGltbWVkaWF0ZV9taWdyYXRpb25cbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlcylcXG5cIiBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZSlcbiAgICAodHlwZSBzaWduYXR1cmUpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlKVxuICAgICh0eXBlIGNvcmVfdHlwZSlcbiAgICAodHlwZSBleHByZXNzaW9uKVxuICAgICh0eXBlIHBhdHRlcm4pXG4gICAgKHR5cGUgY2FzZSlcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICAodHlwZSBjbGFzc19leHByKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkKVxuICAgICh0eXBlIGNsYXNzX3R5cGUpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0pXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0pXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiAgXCIgICAgICUtMjFzIDogJXM7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmU7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGU7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb247XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm47XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2U7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb247XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmU7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQ7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW07XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgIGRpcmVjdGlvblxuICA9XG4gIGxldCB2ZXJzaW9uID0gbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBOZXh0IC0+IEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uXG4gICAgfCBgUHJldmlvdXMgLT4gQS5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uXG4gIGluXG4gIG1hdGNoIHZlcnNpb24gd2l0aFxuICB8IFVuZGVmaW5lZCAtPiBOb19taWdyYXRpb25cbiAgfCBNaWdyYXRpb24gKF8sIGZ1bnMsIHRvXykgLT4gSW1tZWRpYXRlX21pZ3JhdGlvbiAoZnVucywgdG9fKVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBtaWdyYXRlXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMxKSAodHlwZSAlczIpXFxuXCIgcyBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZTEpICh0eXBlIHN0cnVjdHVyZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlMSkgKHR5cGUgc2lnbmF0dXJlMilcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UxKSAodHlwZSB0b3BsZXZlbF9waHJhc2UyKVxuICAgICh0eXBlIGNvcmVfdHlwZTEpICh0eXBlIGNvcmVfdHlwZTIpXG4gICAgKHR5cGUgZXhwcmVzc2lvbjEpICh0eXBlIGV4cHJlc3Npb24yKVxuICAgICh0eXBlIHBhdHRlcm4xKSAodHlwZSBwYXR0ZXJuMilcbiAgICAodHlwZSBjYXNlMSkgKHR5cGUgY2FzZTIpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjEpICh0eXBlIHR5cGVfZGVjbGFyYXRpb24yKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uMSkgKHR5cGUgdHlwZV9leHRlbnNpb24yKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjEpICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjIpXG4gICAgKHR5cGUgY2xhc3NfZXhwcjEpICh0eXBlIGNsYXNzX2V4cHIyKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkMSkgKHR5cGUgY2xhc3NfZmllbGQyKVxuICAgICh0eXBlIGNsYXNzX3R5cGUxKSAodHlwZSBjbGFzc190eXBlMilcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUxKSAodHlwZSBjbGFzc19zaWduYXR1cmUyKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQxKSAodHlwZSBjbGFzc190eXBlX2ZpZWxkMilcbiAgICAodHlwZSBtb2R1bGVfZXhwcjEpICh0eXBlIG1vZHVsZV9leHByMilcbiAgICAodHlwZSBtb2R1bGVfdHlwZTEpICh0eXBlIG1vZHVsZV90eXBlMilcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbTEpICh0eXBlIHNpZ25hdHVyZV9pdGVtMilcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbTEpICh0eXBlIHN0cnVjdHVyZV9pdGVtMilcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMTtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTE7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTE7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTE7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTE7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24xO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMTtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTE7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24xO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjE7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjE7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIxO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDE7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUxO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUxO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMTtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIxO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTE7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0xO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgICgobW9kdWxlIEIpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczI7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUyO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUyO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UyO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUyO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjI7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UyO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24yO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IyO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQyO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMjtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMjtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDI7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUyO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTI7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMjtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9uc1xuICA9XG4gIG1hdGNoIEEuVmVyc2lvbiB3aXRoXG4gIHwgQi5WZXJzaW9uIC0+IG1pZ3JhdGlvbl9pZGVudGl0eVxuICB8IF8gLT5cbiAgICBsZXQgZGlyZWN0aW9uID0gaWYgQS52ZXJzaW9uIDwgQi52ZXJzaW9uIHRoZW4gYE5leHQgZWxzZSBgUHJldmlvdXMgaW5cbiAgICBsZXQgcmVjIG1pZ3JhdGUgKG0gOiBBLnR5cGVzIGltbWVkaWF0ZV9taWdyYXRpb24pIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZiwgKG1vZHVsZSBUbykpIC0+XG4gICAgICAgIG1hdGNoIFRvLlZlcnNpb24gd2l0aFxuICAgICAgICB8IEIuVmVyc2lvbiAtPiBmXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1hdGNoIGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBUbykgZGlyZWN0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGcsIHRvMikgLT5cbiAgICAgICAgICAgIG1pZ3JhdGUgKEltbWVkaWF0ZV9taWdyYXRpb24gKG1pZ3JhdGlvbl9jb21wb3NlIGYgZywgdG8yKSlcbiAgICBpblxuICAgIG1pZ3JhdGUgKGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBBKSBkaXJlY3Rpb24pXG5cbm1vZHVsZSBDb252ZXJ0IChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBsZXQge1xuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgY29weV9wYXR0ZXJuO1xuICAgIGNvcHlfY2FzZTtcbiAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgY29weV9jbGFzc19maWVsZDtcbiAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICB9IDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIG1pZ3JhdGUgKG1vZHVsZSBBKSAobW9kdWxlIEIpXG5lbmRcblxuKCokIGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gdmVyc2lvbiAtPlxuICAgIHByaW50ZiBcIm1vZHVsZSBPQ2FtbF8lZCA9IHN0cnVjdFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF8lZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XyVkKVxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgdmVyc2lvbiA9ICVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCBzdHJpbmdfdmVyc2lvbiA9ICVTXFxuXCIgdmVyc2lvbjtcbiAgICBwcmludGYgXCJlbmRcXG5cIjtcbiAgICBwcmludGYgXCJsZXQgb2NhbWxfJWQgOiBPQ2FtbF8lZC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF8lZClcXG5cIlxuICAgICAgbiBuIG47XG4gIClcbiopXG5tb2R1bGUgT0NhbWxfNDAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMilcbiAgbGV0IHZlcnNpb24gPSA0MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAyXCJcbmVuZFxubGV0IG9jYW1sXzQwMiA6IE9DYW1sXzQwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDIpXG5tb2R1bGUgT0NhbWxfNDAzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMylcbiAgbGV0IHZlcnNpb24gPSA0MDNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAzXCJcbmVuZFxubGV0IG9jYW1sXzQwMyA6IE9DYW1sXzQwMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDMpXG5tb2R1bGUgT0NhbWxfNDA0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNClcbiAgbGV0IHZlcnNpb24gPSA0MDRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA0XCJcbmVuZFxubGV0IG9jYW1sXzQwNCA6IE9DYW1sXzQwNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDQpXG5tb2R1bGUgT0NhbWxfNDA1ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNSlcbiAgbGV0IHZlcnNpb24gPSA0MDVcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA1XCJcbmVuZFxubGV0IG9jYW1sXzQwNSA6IE9DYW1sXzQwNS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDUpXG5tb2R1bGUgT0NhbWxfNDA2ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNilcbiAgbGV0IHZlcnNpb24gPSA0MDZcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA2XCJcbmVuZFxubGV0IG9jYW1sXzQwNiA6IE9DYW1sXzQwNi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDYpXG5tb2R1bGUgT0NhbWxfNDA3ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwN1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNylcbiAgbGV0IHZlcnNpb24gPSA0MDdcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA3XCJcbmVuZFxubGV0IG9jYW1sXzQwNyA6IE9DYW1sXzQwNy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDcpXG5tb2R1bGUgT0NhbWxfNDA4ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOClcbiAgbGV0IHZlcnNpb24gPSA0MDhcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA4XCJcbmVuZFxubGV0IG9jYW1sXzQwOCA6IE9DYW1sXzQwOC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDgpXG5tb2R1bGUgT0NhbWxfNDA5ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOSlcbiAgbGV0IHZlcnNpb24gPSA0MDlcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA5XCJcbmVuZFxubGV0IG9jYW1sXzQwOSA6IE9DYW1sXzQwOS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDkpXG5tb2R1bGUgT0NhbWxfNDEwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMClcbiAgbGV0IHZlcnNpb24gPSA0MTBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEwXCJcbmVuZFxubGV0IG9jYW1sXzQxMCA6IE9DYW1sXzQxMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTApXG5tb2R1bGUgT0NhbWxfNDExID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMSlcbiAgbGV0IHZlcnNpb24gPSA0MTFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjExXCJcbmVuZFxubGV0IG9jYW1sXzQxMSA6IE9DYW1sXzQxMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTEpXG5tb2R1bGUgT0NhbWxfNDEyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMilcbiAgbGV0IHZlcnNpb24gPSA0MTJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEyXCJcbmVuZFxubGV0IG9jYW1sXzQxMiA6IE9DYW1sXzQxMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTIpXG5tb2R1bGUgT0NhbWxfNDEzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMylcbiAgbGV0IHZlcnNpb24gPSA0MTNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEzXCJcbmVuZFxubGV0IG9jYW1sXzQxMyA6IE9DYW1sXzQxMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTMpXG5tb2R1bGUgT0NhbWxfNDE0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxNClcbiAgbGV0IHZlcnNpb24gPSA0MTRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjE0XCJcbmVuZFxubGV0IG9jYW1sXzQxNCA6IE9DYW1sXzQxNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTQpXG5tb2R1bGUgT0NhbWxfNTAwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMClcbiAgbGV0IHZlcnNpb24gPSA1MDBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjBcIlxuZW5kXG5sZXQgb2NhbWxfNTAwIDogT0NhbWxfNTAwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMClcbm1vZHVsZSBPQ2FtbF81MDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAxXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAxKVxuICBsZXQgdmVyc2lvbiA9IDUwMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMVwiXG5lbmRcbmxldCBvY2FtbF81MDEgOiBPQ2FtbF81MDEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAxKVxubW9kdWxlIE9DYW1sXzUwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDIpXG4gIGxldCB2ZXJzaW9uID0gNTAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4yXCJcbmVuZFxubGV0IG9jYW1sXzUwMiA6IE9DYW1sXzUwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDIpXG4oKiQqKVxuXG5sZXQgYWxsX3ZlcnNpb25zIDogKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSBsaXN0ID0gW1xuICAoKiRmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIF8gLT5cbiAgICAgIHByaW50ZiBcIihtb2R1bGUgT0NhbWxfJWQgOiBPQ2FtbF92ZXJzaW9uKTtcXG5cIiBuKSopXG4obW9kdWxlIE9DYW1sXzQwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDYgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA3IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDkgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAxIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKCokKilcbl1cblxuKCokZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biBhIGIgLT5cbiAgICBwcmludGYgXCJpbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF8lZCkoT0NhbWxfJWQpXFxuXCIgYSBiO1xuICAgIHByaW50ZiBcIiAgICAoQXN0bGliLk1pZ3JhdGVfJWRfJWQpKEFzdGxpYi5NaWdyYXRlXyVkXyVkKVxcblwiIGEgYiBiIGFcbiAgKVxuKilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMikoT0NhbWxfNDAzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDJfNDAzKShBc3RsaWIuTWlncmF0ZV80MDNfNDAyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAzKShPQ2FtbF80MDQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwM180MDQpKEFzdGxpYi5NaWdyYXRlXzQwNF80MDMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDQpKE9DYW1sXzQwNSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA0XzQwNSkoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNSkoT0NhbWxfNDA2KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDVfNDA2KShBc3RsaWIuTWlncmF0ZV80MDZfNDA1KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA2KShPQ2FtbF80MDcpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNl80MDcpKEFzdGxpYi5NaWdyYXRlXzQwN180MDYpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDcpKE9DYW1sXzQwOClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA3XzQwOCkoQXN0bGliLk1pZ3JhdGVfNDA4XzQwNylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOCkoT0NhbWxfNDA5KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDhfNDA5KShBc3RsaWIuTWlncmF0ZV80MDlfNDA4KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA5KShPQ2FtbF80MTApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOV80MTApKEFzdGxpYi5NaWdyYXRlXzQxMF80MDkpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTApKE9DYW1sXzQxMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEwXzQxMSkoQXN0bGliLk1pZ3JhdGVfNDExXzQxMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMSkoT0NhbWxfNDEyKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTFfNDEyKShBc3RsaWIuTWlncmF0ZV80MTJfNDExKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEyKShPQ2FtbF80MTMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMl80MTMpKEFzdGxpYi5NaWdyYXRlXzQxM180MTIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTMpKE9DYW1sXzQxNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEzXzQxNCkoQXN0bGliLk1pZ3JhdGVfNDE0XzQxMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxNCkoT0NhbWxfNTAwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTRfNTAwKShBc3RsaWIuTWlncmF0ZV81MDBfNDE0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAwKShPQ2FtbF81MDEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMF81MDEpKEFzdGxpYi5NaWdyYXRlXzUwMV81MDApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF81MDEpKE9DYW1sXzUwMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNTAxXzUwMikoQXN0bGliLk1pZ3JhdGVfNTAyXzUwMSlcbigqJCopXG5cbm1vZHVsZSBPQ2FtbF9jdXJyZW50ID0gT0NhbWxfT0NBTUxfVkVSU0lPTlxuXG5tb2R1bGUgRmluZF92ZXJzaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEltcGwgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IEludGYgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IFVua25vd25cblxuICBsZXQgZnJvbV9tYWdpYyBtYWdpYyA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gVW5rbm93blxuICAgICAgfCAobW9kdWxlIFZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEltcGwgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2UgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEludGYgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb3AgdGFpbFxuICAgIGluXG4gICAgKCogVHJhdmVyc2UgdGhlIHZlcnNpb25zIGZyb20gbGFzdCB0byBmaXJzdDpcbiAgICAgICBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmVuJ3QgdW5pcXVlIGFtb25nIHZlcnNpb25zLFxuICAgICAgIHdlIHdhbnQgdGhlIGxhdGVzdCB2ZXJzaW9uIHdpdGggYSBtYWdpYyBudW1iZXIgbWF0Y2guXG4gICAgICAgVGhlIHNpdHVhdGlvbiBpbiBtaW5kIGlzIHRydW5rIHN1cHBvcnQuICopXG4gICAgICBsZXQgYWxsX3ZlcnNpb25zX3RvcF9kb3duID0gTGlzdC5yZXYgYWxsX3ZlcnNpb25zIGluXG4gICAgICBsb29wIGFsbF92ZXJzaW9uc190b3BfZG93blxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBjb250cm9sIHdoYXQgd2UgdXNlIGZyb20gdGhlIGN1cnJlbnQgY29tcGlsZXIgYW5kIHdoYXQgaXMgZW1iZWQgaW5cbiAgIHRoaXMgbGlicmFyeS5cblxuICAgSXQgbXVzdCBiZSBvcGVuZWQgaW4gYWxsIG1vZHVsZXMsIGVzcGVjaWFsbHkgdGhlIG9uZXMgY29taW5nIGZyb20gdGhlIGNvbXBpbGVyLlxuKilcblxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG5tb2R1bGUgSnMgPSBWZXJzaW9ucy5PQ2FtbF81MDBcbm1vZHVsZSBPY2FtbCA9IFZlcnNpb25zLk9DYW1sX2N1cnJlbnRcblxubW9kdWxlIFNlbGVjdF9hc3QgKE9jYW1sIDogVmVyc2lvbnMuT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc1xuXG4gIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgdHlwZSAoJ2pzLCAnb2NhbWwpIHQgPVxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlc1xcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLiVzLFxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLiVzIClcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgIHRcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFRvcGxldmVsX3BocmFzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDb3JlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXhwcmVzc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFBhdHRlcm5cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5wYXR0ZXJuLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2FzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbigqJCopXG4gICAgICB8IExpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBsaXN0LCAnYiBsaXN0KSB0XG4gICAgICB8IFBhaXIgOiAoJ2EsICdiKSB0ICogKCdjLCAnZCkgdCAtPiAoJ2EgKiAnYywgJ2IgKiAnZCkgdFxuICBlbmRcblxuICBvcGVuIFR5cGVcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcbiAgbW9kdWxlIFRvX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoSnMpIChPY2FtbClcblxuICBsZXQgcmVjIG9mX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IG9jYW1sIC0+IGpzID1cbiAgICBsZXQgb3BlbiBPZl9vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwIChvZl9vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gb2Zfb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gb2Zfb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCByZWMgdG9fb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4ganMgLT4gb2NhbWwgPVxuICAgIGxldCBvcGVuIFRvX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKHRvX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSB0b19vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSB0b19vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IG9mX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gdG9fb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiBvZl9vY2FtbCBpdGVtXG4gIGxldCB0b19vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IG9mX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gdG9fb2NhbWwgaXRlbVxuZW5kXG5cbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBTZWxlY3RfYXN0IChPY2FtbClcbm1vZHVsZSBBc3RfaGVscGVyID0gQXN0X2hlbHBlcl9saXRlXG5cbigqIE1vZHVsZXMgZnJvbSBBc3RfPG4+IG9mIEFzdGxpYiwgd2hlcmUgPG4+IGlzIHRoZSBjb21waWxlciB2ZXJzaW9uIHRoZSBwcHhsaWIgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggKilcbm1vZHVsZSBQYXJzZXRyZWUgPSBTZWxlY3RlZF9hc3QuQXN0LlBhcnNldHJlZVxubW9kdWxlIEFzdHR5cGVzID0gU2VsZWN0ZWRfYXN0LkFzdC5Bc3R0eXBlc1xuXG4oKiBPdGhlciBBc3RsaWIgbW9kdWxlcyAqKVxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxuXG5tb2R1bGUgUGFyc2UgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RsaWIuUGFyc2VcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcblxuICBsZXQgaW1wbGVtZW50YXRpb24gbGV4YnVmID0gaW1wbGVtZW50YXRpb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc3RydWN0dXJlXG4gIGxldCBpbnRlcmZhY2UgbGV4YnVmID0gaW50ZXJmYWNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3NpZ25hdHVyZVxuXG4gIGxldCB0b3BsZXZlbF9waHJhc2UgbGV4YnVmID1cbiAgICB0b3BsZXZlbF9waHJhc2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IHVzZV9maWxlIGxleGJ1ZiA9XG4gICAgdXNlX2ZpbGUgbGV4YnVmIHw+IExpc3QubWFwIE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IGNvcmVfdHlwZSBsZXhidWYgPSBjb3JlX3R5cGUgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfY29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uIGxleGJ1ZiA9IGV4cHJlc3Npb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfZXhwcmVzc2lvblxuICBsZXQgcGF0dGVybiBsZXhidWYgPSBwYXR0ZXJuIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3BhdHRlcm5cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBkZWZhdWx0X3ByaW50X3dhcm5pbmcgX2xvYyA9ICgpXG5sZXQgYWJvdXRfaXRlX2JyYW5jaF9yZWYgPSByZWYgZGVmYXVsdF9wcmludF93YXJuaW5nXG5sZXQgY2FyZV9hYm91dF9pdGVfYnJhbmNoID0gcmVmIGZhbHNlXG5sZXQgYWJvdXRfaXRlX2JyYW5jaCBsb2MgPSAhYWJvdXRfaXRlX2JyYW5jaF9yZWYgbG9jXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBEZWZpbml0aW9uIG9mIHRoZSBPQ2FtbCBBU1QgKilcblxub3BlbiBJbXBvcnRcblxuKCogVGhpcyBmaWxlIGlzIG9idGFpbmVkIGJ5OlxuXG4gICAtIGNvcHlpbmcgYSBzdWJzZXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXN0X3h4eC5tbCBmaWxlIGZyb20gQXN0bGliXG4gICAoc3ViLW1vZHVsZXMgQXN0dHlwZXMgYW5kIFBhcnNldHJlZSlcbiAgIC0gYWRkaW5nIHRoZSB0eXBlIGRlZmluaXRpb25zIGZvciBwb3NpdGlvbiwgbG9jYXRpb24sIGxvYyBhbmQgbG9uZ2lkZW50XG4gICAtIGZsYXR0ZW5pbmcgYWxsIHRoZSBtb2R1bGVzXG4gICAtIHJlbW92aW5nIEFzdHR5cGVzLmNvbnN0YW50ICh1bnVzZWQgYW5kIGNvbmZsaWN0cyB3aXRoIFBhcnNldHJlZS5jb25zdGFudClcbiAgIC0gcmVuYW1pbmcgYSBmZXcgdHlwZXM6XG4gICAtIC0gTG9jYXRpb24udCAtPiBsb2NhdGlvblxuICAgLSAtIExvbmdpZGVudC50IC0+IGxvbmdpZGVudFxuICAgLSBhZGRpbmcgYSB0eXBlIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jIGFuZCByZXBsYWNpbmcgYWxsIHRoZSBvY2N1cnJlbmNlcyBvZiB0aGVcbiAgIGxhdHRlciBieSB0aGUgZm9ybWVyLiBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIG92ZXJyaWRlIGl0ZXJhdGlvbiBhbiB0aGUgbGV2ZWwgb2YgYVxuICAgbG9uZ2lkZW50IGxvY1xuICAgLSBhZGRpbmcgYSB0eXBlIGNhc2VzID0gY2FzZSBsaXN0XG4gICAtIHJlcGxhY2luZyBhbGwgb2NjdXJlbmNlcyBvZiBcImNhc2UgbGlzdFwiIGJ5IFwiY2FzZXNcIlxuICAgLSByZXBsYWNpbmcgYWxsIHRoZSAoKklGX0NVUlJFTlQgPSBGb28uYmFyKikgYnk6ID0gRm9vLmJhclxuICAgLSByZW1vdmluZyB0aGUgZXh0cmEgdmFsdWVzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGVcbiAgIC0gcmVwbGFjaW5nIGFwcCBbdHlwZSAuLi5dIGJ5IFthbmQgLi4uXSB0byBtYWtlIGV2ZXJ5dGhpbmcgb25lIHJlY3Vyc2l2ZSBibG9ja1xuICAgLSBhZGRpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVtAQEBlbmRdIGF0IHRoZSBlbmRcblxuICAgVG8gdXBkYXRlIGl0IHRvIGEgbmV3ZXIgT0NhbWwgdmVyc2lvbiwgY3JlYXRlIGEgbmV3IG1vZHVsZSB3aXRoIHRoZSBhYm92ZSBmcm9tIHRoZVxuICAgbGF0ZXN0IGNvbXBpbGVyIGFuZCBhZGQgdGhlIGZvbGxvd2luZyBtb2R1bGUgZGVmaW5pdGlvbnMgYW5kIG9wZW5zIHRvIGdldCBpdCB0b1xuICAgY29tcGlsZTpcbiAgIFt7XG4gICAgbW9kdWxlIEFzdCA9IFZlcnNpb25zLk9DYW1sXzR4eFxuICAgIG9wZW4gQXN0LkFzdFxuICAgIG1vZHVsZSBMb2NhdGlvbiAgID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uXG4gICAgbW9kdWxlIExvbmdpZGVudCA9IE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcbiAgIH1dXG5cbiAgIE9uY2UgeW91IGhhdmUgZ2VuZXJhdGVkIHRoZSBpbmxpbmVkIGRlcml2ZWQgdHJhdmVyc2FsIGNsYXNzZXMgYnkgcnVubmluZ1xuICAgW3sgZHVuZSBidWlsZCBAbGludCB9XSB5b3UgY2FuIHJlcGxhY2UgdGhlIGFib3ZlIG1lbnRpb25lZCBtb2R1bGUgZGVmaW5pdGlvbnMgYnkgYVxuICAgW29wZW4gSW1wb3J0XSBhbmQgdXBkYXRlIFtJbXBvcnRdIHNvIHRoYXQgdGhlIFtKc10gbW9kdWxlIHBvaW50cyB0b1xuICAgW1ZlcnNpb25zLk9DYW1sXzR4eF0uXG4qKVxuXG4oKiBTb3VyY2UgY29kZSBsb2NhdGlvbnMgKHJhbmdlcyBvZiBwb3NpdGlvbnMpLCB1c2VkIGluIHBhcnNldHJlZS4gKilcblxudHlwZSBwb3NpdGlvbiA9IExleGluZy5wb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmFuZCBsb2NhdGlvbiA9IExvY2F0aW9uLnQgPSB7XG4gIGxvY19zdGFydCA6IHBvc2l0aW9uO1xuICBsb2NfZW5kIDogcG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmFuZCBsb2NhdGlvbl9zdGFjayA9IGxvY2F0aW9uIGxpc3RcblxuKCogTm90ZSBvbiB0aGUgdXNlIG9mIExleGluZy5wb3NpdGlvbiBpbiB0aGlzIG1vZHVsZS5cbiAgIElmIFtwb3NfZm5hbWUgPSBcIlwiXSwgdGhlbiB1c2UgWyFpbnB1dF9uYW1lXSBpbnN0ZWFkLlxuICAgSWYgW3Bvc19sbnVtID0gLTFdLCB0aGVuIFtwb3NfYm9sID0gMF0uIFVzZSBbcG9zX2NudW1dIGFuZFxuICAgcmUtcGFyc2UgdGhlIGZpbGUgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjaGFyYWN0ZXIgbnVtYmVycy5cbiAgIEVsc2UgYWxsIGZpZWxkcyBhcmUgY29ycmVjdC5cbiopXG5hbmQgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0geyB0eHQgOiAnYTsgbG9jIDogbG9jYXRpb24gfVxuXG4oKiBMb25nIGlkZW50aWZpZXJzLCB1c2VkIGluIHBhcnNldHJlZS4gKilcbmFuZCBsb25naWRlbnQgPSBMb25naWRlbnQudCA9XG4gIHwgTGlkZW50IG9mIHN0cmluZ1xuICB8IExkb3Qgb2YgbG9uZ2lkZW50ICogc3RyaW5nXG4gIHwgTGFwcGx5IG9mIGxvbmdpZGVudCAqIGxvbmdpZGVudFxuXG5hbmQgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2NcblxuKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuYW5kIHJlY19mbGFnID0gQXN0dHlwZXMucmVjX2ZsYWcgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuYW5kIGRpcmVjdGlvbl9mbGFnID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBVcHRvIHwgRG93bnRvXG5cbigqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuYW5kIHByaXZhdGVfZmxhZyA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IFByaXZhdGUgfCBQdWJsaWNcbmFuZCBtdXRhYmxlX2ZsYWcgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5hbmQgdmlydHVhbF9mbGFnID0gQXN0dHlwZXMudmlydHVhbF9mbGFnID0gVmlydHVhbCB8IENvbmNyZXRlXG5hbmQgb3ZlcnJpZGVfZmxhZyA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBPdmVycmlkZSB8IEZyZXNoXG5hbmQgY2xvc2VkX2ZsYWcgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyA9IENsb3NlZCB8IE9wZW5cbmFuZCBsYWJlbCA9IHN0cmluZ1xuXG5hbmQgYXJnX2xhYmVsID0gQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgfCBOb2xhYmVsXG4gIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICB8IE9wdGlvbmFsIG9mIHN0cmluZyAgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbmFuZCB2YXJpYW5jZSA9IEFzdHR5cGVzLnZhcmlhbmNlID0gQ292YXJpYW50IHwgQ29udHJhdmFyaWFudCB8IE5vVmFyaWFuY2VcbmFuZCBpbmplY3Rpdml0eSA9IEFzdHR5cGVzLmluamVjdGl2aXR5ID0gSW5qZWN0aXZlIHwgTm9JbmplY3Rpdml0eVxuXG4oKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG5hbmQgY29uc3RhbnQgPSBQYXJzZXRyZWUuY29uc3RhbnQgPVxuICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGV4Y2VwdFxuICAgICAgICAgIFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlciAqKVxuICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIGxvY2F0aW9uICogc3RyaW5nIG9wdGlvblxuICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy4gKilcbiAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGFyZSByZWplY3RlZFxuICAgICAgICAgIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbmFuZCBhdHRyaWJ1dGUgPSBQYXJzZXRyZWUuYXR0cmlidXRlID0ge1xuICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICBhdHRyX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW0BpZCBBUkddXSBhbmQgW1tAQGlkIEFSR11dLlxuXG4gICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULiBUaGUgY29tcGlsZXIgaWdub3Jlc1xuICAgIHVua25vd24gYXR0cmlidXRlcy4gKilcblxuYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4oKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgcGF5bG9hZCA9IFBhcnNldHJlZS5wYXlsb2FkID1cbiAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbPyBQXSBvciBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuYW5kIGNvcmVfdHlwZSA9IFBhcnNldHJlZS5jb3JlX3R5cGUgPSB7XG4gIHB0eXBfZGVzYyA6IGNvcmVfdHlwZV9kZXNjO1xuICBwdHlwX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwdHlwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvcmVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZF19LFxuICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19LiAqKVxuICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXSByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlXG4gICAgICAgICAgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS4gKilcbiAgfCBQdHlwX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19LFxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LiAqKVxuICB8IFB0eXBfY2xhc3Mgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsjdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCAjdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbWyBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWz4gYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfSxcbiAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uICopXG4gIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVxuICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZyB0byBhIGNvbnN0cmFpbnQgb24gYVxuICAgICAgICAgICAgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICB7W1xuICAgICAgICAgICAgbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXG4gICAgICAgICAgXX1cbiAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9XG4gICAgICAgICAgICBbUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX0gW1BleHBfcG9seV19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9IFtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fSBbUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX0gW3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LiAqKVxuICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuYW5kIHBhY2thZ2VfdHlwZSA9IGxvbmdpZGVudF9sb2MgKiAobG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSkgbGlzdFxuKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG5cbiAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV0gcmVwcmVzZW50c1xuICAgICAgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uICopXG5cbmFuZCByb3dfZmllbGQgPSBQYXJzZXRyZWUucm93X2ZpZWxkID0ge1xuICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICBwcmZfbG9jIDogbG9jYXRpb247XG4gIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIHJvd19maWVsZF9kZXNjID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgIC0gW2BBIG9mIFRdIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYSBjb25zdGFudCAoZW1wdHkpXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvciAoc2VlXG4gICAgICAgICAgICA0LjIgaW4gdGhlIG1hbnVhbCkgKilcbiAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuYW5kIG9iamVjdF9maWVsZCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgPSB7XG4gIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gIHBvZl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbigqKiB7MiBQYXR0ZXJuc30gKilcblxuYW5kIHBhdHRlcm4gPSBQYXJzZXRyZWUucGF0dGVybiA9IHtcbiAgcHBhdF9kZXNjIDogcGF0dGVybl9kZXNjO1xuICBwcGF0X2xvYyA6IGxvY2F0aW9uO1xuICBwcGF0X2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwcGF0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHBhdHRlcm5fZGVzYyA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPVxuICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlciBidXQgcmVqZWN0ZWQgYnlcbiAgICAgICAgICB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBwYXRfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXSAqKVxuICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdICopXG4gIHwgUHBhdF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19XG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19XG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgfCBQcGF0X3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICB8IFBwYXRfb3BlbiBvZiBsb25naWRlbnRfbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBleHByZXNzaW9uID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gPSB7XG4gIHBleHBfZGVzYyA6IGV4cHJlc3Npb25fZGVzYztcbiAgcGV4cF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcGV4cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBleHByZXNzaW9uX2Rlc2MgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgfCBQZXhwX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF0gKilcbiAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSxcbiAgICAgICAgICBbMW5dICopXG4gIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXMgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF1cblxuICAgICAgICAgIE5vdGVzOlxuXG4gICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5IHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn0gW1BleHBfZnVuXX0uXG4gICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1cbiAgICAgICAgICAgIFtQZXhwX2Z1bl19LiAqKVxuICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICBbbGldIGNhbiBiZSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSAobm9uIGxhYmVsZWRcbiAgICAgICAgICBhcmd1bWVudCksIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH0gW0xhYmVsbGVkXX0gKGxhYmVsbGVkXG4gICAgICAgICAgYXJndW1lbnRzKSBvciB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbF19IChvcHRpb25hbFxuICAgICAgICAgIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBleHBfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV0gKilcbiAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0gKilcbiAgfCBQZXhwX3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICAoKiogW0UubF0gKilcbiAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99IFtVcHRvXX1cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99IFtEb3dudG9dfSAqKVxuICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gWyhFIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLiAqKVxuICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICB8IFBleHBfbmV3IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbbmV3IE0uY10gKilcbiAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9IFtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgdmFsdWVzKS4gKilcbiAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG5hbmQgY2FzZSA9IFBhcnNldHJlZS5jYXNlID0ge1xuICBwY19saHMgOiBwYXR0ZXJuO1xuICBwY19ndWFyZCA6IGV4cHJlc3Npb24gb3B0aW9uO1xuICBwY19yaHMgOiBleHByZXNzaW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG5hbmQgbGV0b3AgPSBQYXJzZXRyZWUubGV0b3AgPSB7XG4gIGxldF8gOiBiaW5kaW5nX29wO1xuICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICBib2R5IDogZXhwcmVzc2lvbjtcbn1cblxuYW5kIGJpbmRpbmdfb3AgPSBQYXJzZXRyZWUuYmluZGluZ19vcCA9IHtcbiAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gIHBib3BfcGF0IDogcGF0dGVybjtcbiAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICBwYm9wX2xvYyA6IGxvY2F0aW9uO1xufVxuXG4oKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPSB7XG4gIHB2YWxfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB2YWxfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcHZhbF9wcmltIDogc3RyaW5nIGxpc3Q7XG4gIHB2YWxfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB2YWxfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcblxuICAgIC0gW3ZhbCB4OiBUXSwgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19IFtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1cbiAgICAgIFtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXSAqKVxuXG4oKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHB0eXBlX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdHlwZV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgcHR5cGVfY3N0cnMgOiAoY29yZV90eXBlICogY29yZV90eXBlICogbG9jYXRpb24pIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICBwdHlwZV9raW5kIDogdHlwZV9raW5kO1xuICBwdHlwZV9wcml2YXRlIDogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgcHR5cGVfbWFuaWZlc3QgOiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgcHR5cGVfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB0eXBlX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbiwgZm9yIHZhcmlvdXNcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9IFtwdHlwZV9raW5kXX0gYW5kXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH0gW3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuXG4gICAgLSBbdHlwZSB0XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDBdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9XG4gICAgICBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fSBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1cbiAgICAgIFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfSBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSAuLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn0gW1B0eXBlX29wZW5dfSxcbiAgICAgIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXS4gKilcblxuYW5kIHR5cGVfa2luZCA9IFBhcnNldHJlZS50eXBlX2tpbmQgPVxuICB8IFB0eXBlX2Fic3RyYWN0XG4gIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gIHwgUHR5cGVfb3BlblxuXG5hbmQgbGFiZWxfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPSB7XG4gIHBsZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGxkX211dGFibGUgOiBtdXRhYmxlX2ZsYWc7XG4gIHBsZF90eXBlIDogY29yZV90eXBlO1xuICBwbGRfbG9jIDogbG9jYXRpb247XG4gIHBsZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW0BpZDFdIFtAaWQyXV0gKilcbn1cbigqKiAtIFt7IC4uLjsgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9IFtwbGRfbXV0YWJsZV19XG4gICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0sXG4gICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9XG4gICAgICBbcGxkX211dGFibGVdfSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfS5cblxuICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0ge1xuICBwY2RfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjZF92YXJzIDogc3RyaW5nIGxvYyBsaXN0O1xuICBwY2RfYXJncyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgcGNkX3JlcyA6IGNvcmVfdHlwZSBvcHRpb247XG4gIHBjZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29uc3RydWN0b3JfYXJndW1lbnRzID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259IHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yXG4gICAgICAgICAgYXJndW1lbnRzIG9mOlxuXG4gICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDOiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDIG9mIHsuLi59XSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAgICAgICAtIFtDOiB7Li4ufSAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLiAqKVxuXG5hbmQgdHlwZV9leHRlbnNpb24gPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSB7XG4gIHB0eWV4dF9wYXRoIDogbG9uZ2lkZW50X2xvYztcbiAgcHR5ZXh0X3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHB0eWV4dF9jb25zdHJ1Y3RvcnMgOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgcHR5ZXh0X3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7XG4gIHB0eWV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAoW3R5cGUgdCArPSAuLi5dKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSB7XG4gIHBleHRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICBwZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgdHlwZV9leGNlcHRpb24gPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPSB7XG4gIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgcHR5ZXhuX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXSBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uXG4gICAgICAgICAgY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcblxuICAgICAgICAgIHt1bFxuICAgICAgICAgICB7LSBbQyBvZiBUMSAqIC4uLiAqIFRuXVxuICAgICAgICAgICAgICB3aGVuOlxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbTm9uZV0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgIH0gKilcbiAgfCBQZXh0X3JlYmluZCBvZiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX3R5cGUgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSA9IHtcbiAgcGN0eV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjO1xuICBwY3R5X2xvYyA6IGxvY2F0aW9uO1xuICBwY3R5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICB8IFBjdHlfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgLSBbP2w6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19LiAqKVxuICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0ge1xuICBwY3NpZ19zZWxmIDogY29yZV90eXBlO1xuICBwY3NpZ19maWVsZHMgOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn0gW3Bjc2lnX3NlbGZdfSBpc1xuICAgICAge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9IFtQdHlwX2FueV19ICopXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSB7XG4gIHBjdGZfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgcGN0Zl9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0Zl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG4gIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgJ2EgY2xhc3NfaW5mb3MgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgPSB7XG4gIHBjaV92aXJ0IDogdmlydHVhbF9mbGFnO1xuICBwY2lfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcGNpX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2lfZXhwciA6ICdhO1xuICBwY2lfbG9jIDogbG9jYXRpb247XG4gIHBjaV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uICopXG5cbmFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX2V4cHIgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciA9IHtcbiAgcGNsX2Rlc2MgOiBjbGFzc19leHByX2Rlc2M7XG4gIHBjbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICB8IFBjbF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXS4gKilcbiAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLiBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yXG4gICAgICAgICAgc3RhcnQgd2l0aCBbP10gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG5hbmQgY2xhc3Nfc3RydWN0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9IHtcbiAgcGNzdHJfc2VsZiA6IHBhdHRlcm47XG4gIHBjc3RyX2ZpZWxkcyA6IGNsYXNzX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn0gW3Bjc3RyX3NlbGZdfSBpc1xuICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fSBbUHBhdF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgPSB7XG4gIHBjZl9kZXNjIDogY2xhc3NfZmllbGRfZGVzYztcbiAgcGNmX2xvYyA6IGxvY2F0aW9uO1xuICBwY2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9XG4gICAgICAgICAgICBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbU29tZSB4XSAqKVxuICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3ZhbCB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1cbiAgICAgICAgICAgIFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9XG4gICAgICAgICAgICBbTXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX0gKilcbiAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV0gKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVxuICAgICAgICAgICAgW1BleHBfcG9seV19KVxuICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVxuICAgICAgICAgICAgW1B0eXBfcG9seV19KSAqKVxuICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgY2xhc3NfZmllbGRfa2luZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4oKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfdHlwZSA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSA9IHtcbiAgcG10eV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYztcbiAgcG10eV9sb2MgOiBsb2NhdGlvbjtcbiAgcG10eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICB8IFBtdHlfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUG10eV9hbGlhcyBvZiBsb25naWRlbnRfbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbmFuZCBmdW5jdG9yX3BhcmFtZXRlciA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbmFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbmFuZCBzaWduYXR1cmVfaXRlbSA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9IHtcbiAgcHNpZ19kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgcHNpZ19sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gKilcbiAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICopXG4gIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgbW9kdWxlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG1kX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1kX3R5cGUgOiBtb2R1bGVfdHlwZTtcbiAgcG1kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbWRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG5hbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID0ge1xuICBwbXNfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtc19tYW5pZmVzdCA6IGxvbmdpZGVudF9sb2M7XG4gIHBtc19hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1zX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbmFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG10ZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcG10ZF90eXBlIDogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICBwbXRkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXRkX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW1MgPSBNVF0sXG4gICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCB3aGVuXG4gICAgICB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9IFtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uICopXG5cbmFuZCAnYSBvcGVuX2luZm9zID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgPSB7XG4gIHBvcGVuX2V4cHIgOiAnYTtcbiAgcG9wZW5fb3ZlcnJpZGUgOiBvdmVycmlkZV9mbGFnO1xuICBwb3Blbl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9wZW5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSAoc2lsZW5jZXMgdGhlIFwidXNlZFxuICAgICAgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9IFtGcmVzaF19ICopXG5cbmFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gbG9uZ2lkZW50X2xvYyBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT10gKilcblxuYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT11cbiAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG5hbmQgJ2EgaW5jbHVkZV9pbmZvcyA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zID0ge1xuICBwaW5jbF9tb2QgOiAnYTtcbiAgcGluY2xfbG9jIDogbG9jYXRpb247XG4gIHBpbmNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgfCBQd2l0aF90eXBlIG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZVxuICAgICAgICAgIHR5cGVfZGVjbGFyYXRpb24uICopXG4gIHwgUHdpdGhfbW9kdWxlIG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZSBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgfCBQd2l0aF9tb2RzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX2V4cHIgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgPSB7XG4gIHBtb2RfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2M7XG4gIHBtb2RfbG9jIDogbG9jYXRpb247XG4gIHBtb2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgfCBQbW9kX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbWF0gKilcbiAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbmFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9IHtcbiAgcHN0cl9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgcHN0cl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgdmFsdWVfYmluZGluZyA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID0ge1xuICBwdmJfcGF0IDogcGF0dGVybjtcbiAgcHZiX2V4cHIgOiBleHByZXNzaW9uO1xuICBwdmJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHB2Yl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIG1vZHVsZV9iaW5kaW5nID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID0ge1xuICBwbWJfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWJfZXhwciA6IG1vZHVsZV9leHByO1xuICBwbWJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHBtYl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbigqKiB7MSBUb3BsZXZlbH0gKilcbigqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG5hbmQgdG9wbGV2ZWxfcGhyYXNlID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG5hbmQgdG9wbGV2ZWxfZGlyZWN0aXZlID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSA9IHtcbiAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICBwZGlyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50ID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9IHtcbiAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICBwZGlyYV9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICB8IFBkaXJfaWRlbnQgb2YgbG9uZ2lkZW50XG4gIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuYW5kIGNhc2VzID0gY2FzZSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1cblxuY2xhc3MgdmlydHVhbCBtYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBpdGVyID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsaXN0IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wdGlvbiAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHVuaXRcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBzZWxmI3N0cmluZyBwb3NfZm5hbWU7XG4gICAgICAgIHNlbGYjaW50IHBvc19sbnVtO1xuICAgICAgICBzZWxmI2ludCBwb3NfYm9sO1xuICAgICAgICBzZWxmI2ludCBwb3NfY251bVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgICAgIHNlbGYjYm9vbCBsb2NfZ2hvc3RcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbG9jIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBfYSB0eHQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gbG9jXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBiXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gdW5pdCA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IHVuaXQgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKClcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGNcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWU7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gYXR0cl9sb2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKClcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGNcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgIGJcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHByZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNib29sIGI7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9mX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGJcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBkXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjO1xuICAgICAgICAgICAgc2VsZiNkaXJlY3Rpb25fZmxhZyBkO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGVcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYlxuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+ICgpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNfbGhzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwY19yaHNcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHNlbGYjYmluZGluZ19vcCBsZXRfO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHM7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBib2R5XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcDtcbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBib3BfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGJvcF9sb2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBjKVxuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+ICgpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWU7XG4gICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbGRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnM7XG4gICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGg7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lO1xuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBjbGFzc19pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwY2lfcGFyYW1zO1xuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZTtcbiAgICAgICAgX2EgcGNpX2V4cHI7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNpX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBkXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGJcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXR5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGJcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+ICgpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtZF9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWU7XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXNfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXRkX2xvY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wZW5faW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcG9wZW5fZXhwcjtcbiAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcGluY2xfbW9kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHN0cl9sb2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2Yl9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWJfbG9jXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBhY2NcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGEgYWNjXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IGFjY1xuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IGFjY1xuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGEgYWNjXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYSBhY2NcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBhY2NcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IGFjY1xuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBhY2NcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYSBhY2NcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYSBhY2NcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGRfbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gYm9vbCAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+IGNoYXIgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gaW50ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYSBsaXN0ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2Egb3B0aW9uICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gc3RyaW5nICogJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiBwb3NpdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSwgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2xudW0sIGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2JvbCwgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgKHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiBsb2NhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZW5kLCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QsIGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgICh7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gbG9jYXRpb25fc3RhY2sgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2EgbG9jICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgdHh0LCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBsb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICAoeyB0eHQ7IGxvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gbG9uZ2lkZW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExpZGVudCBhLCBhY2MpXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoTGRvdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgKExhcHBseSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+IGxvbmdpZGVudF9sb2MgKiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+IHJlY19mbGFnICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiBkaXJlY3Rpb25fZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gcHJpdmF0ZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiBtdXRhYmxlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+IHZpcnR1YWxfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiBvdmVycmlkZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gY2xvc2VkX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiBsYWJlbCAqICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+IGFyZ19sYWJlbCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIGFjYylcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMYWJlbGxlZCBhLCBhY2MpXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoT3B0aW9uYWwgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiB2YXJpYW5jZSAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gaW5qZWN0aXZpdHkgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiBjb25zdGFudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2ludGVnZXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2hhciBhIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9jaGFyIGEsIGFjYylcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X3N0cmluZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfZmxvYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gYXR0cmlidXRlICogJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkLCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiBhdHRyaWJ1dGVzICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+IHBheWxvYWQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTdHIgYSwgYWNjKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFNpZyBhLCBhY2MpXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQVHlwIGEsIGFjYylcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBQYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gY29yZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MsIGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXIgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NsYXNzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXJpYW50IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BhY2thZ2UgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiBwYWNrYWdlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiByb3dfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MsIGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiByb3dfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFJ0YWcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUmluaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+IG9iamVjdF9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYywgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChPdGFnIChhLCBiKSwgYWNjKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKE9pbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+IHBhdHRlcm4gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYywgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gcGF0dGVybl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXIgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9pbnRlcnZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90eXBlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+IGV4cHJlc3Npb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYywgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjYXNlcyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuY3Rpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbWF0Y2ggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHJ5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZpZWxkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VxdWVuY2UgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3doaWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBlLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29lcmNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZW5kIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ldyBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGluc3R2YXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX292ZXJyaWRlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXNzZXJ0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb2JqZWN0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ld3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGV0b3AgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG9wIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoUGV4cF91bnJlYWNoYWJsZSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gY2FzZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY19saHMsIGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBwY19ndWFyZCwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgcGNfcmhzLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICAoeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiBsZXRvcCAqICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgbGV0XywgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhbmRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBib2R5LCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgKHsgbGV0XzsgYW5kczsgYm9keSB9LCBhY2MpXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiBiaW5kaW5nX29wICogJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwYm9wX29wLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9wcmltLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQsIGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QsIGFjYyA9XG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+IHR5cGVfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgYWNjKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfdmFyaWFudCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3JlY29yZCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3BlbiwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2RfdmFycywgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXJncywgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfcmVzLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3JlY29yZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+IHR5cGVfZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gdHlwZV9leGNlcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciwgYWNjID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfZGVjbCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9yZWJpbmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gY2xhc3NfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjY1xuICAgICAgICBpblxuICAgICAgICAoeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc190eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9pbmhlcml0IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0LCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2lfZXhwciwgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwY2lfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiBjbGFzc19leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjbF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICAoeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaGVyaXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbml0aWFsaXplciBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKENma192aXJ0dWFsIGEsIGFjYylcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX2NvbmNyZXRlIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfd2l0aCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfdHlwZW9mIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9hbGlhcyBhLCBhY2MpXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgYWNjKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoTmFtZWQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjLCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgICh7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3ZhbHVlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1kX3R5cGUsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1zX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciwgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCwgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiB3aXRoX2NvbnN0cmFpbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHVsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kc3Vic3QgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+IG1vZHVsZV9leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2Rfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+IHN0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYywgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9ldmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ZhbHVlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9wcmltaXRpdmUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+IHZhbHVlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZiX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwdmJfZXhwciwgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gbW9kdWxlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2V4cHIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiB0b3BsZXZlbF9waHJhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RlZiBhLCBhY2MpXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kaXIgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9hcmcsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYywgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX3N0cmluZyBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2ludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNib29sIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9ib29sIGEsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gY2FzZXMgKiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zXG4gICAgICAgID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3B0aW9uIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBwb3NfbG51bSk7XG4gICAgICAgICAgICAoXCJwb3NfYm9sXCIsIHBvc19ib2wpO1xuICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgcG9zX2NudW0pO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgIChcImxvY19lbmRcIiwgbG9jX2VuZCk7XG4gICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgbG9jX2dob3N0KTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxvYyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJ0eHRcIiwgdHh0KTsgKFwibG9jXCIsIGxvYykgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGlkZW50XCIgWyBhIF1cbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGRvdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFwcGx5XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAncmVzID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiTm9ucmVjdXJzaXZlXCIgW11cbiAgICAgICAgfCBSZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJSZWN1cnNpdmVcIiBbXVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVcHRvIC0+IHNlbGYjY29uc3RyIFwiVXB0b1wiIFtdXG4gICAgICAgIHwgRG93bnRvIC0+IHNlbGYjY29uc3RyIFwiRG93bnRvXCIgW11cblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcml2YXRlIC0+IHNlbGYjY29uc3RyIFwiUHJpdmF0ZVwiIFtdXG4gICAgICAgIHwgUHVibGljIC0+IHNlbGYjY29uc3RyIFwiUHVibGljXCIgW11cblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbW11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJJbW11dGFibGVcIiBbXVxuICAgICAgICB8IE11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJNdXRhYmxlXCIgW11cblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBWaXJ0dWFsIC0+IHNlbGYjY29uc3RyIFwiVmlydHVhbFwiIFtdXG4gICAgICAgIHwgQ29uY3JldGUgLT4gc2VsZiNjb25zdHIgXCJDb25jcmV0ZVwiIFtdXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdmVycmlkZSAtPiBzZWxmI2NvbnN0ciBcIk92ZXJyaWRlXCIgW11cbiAgICAgICAgfCBGcmVzaCAtPiBzZWxmI2NvbnN0ciBcIkZyZXNoXCIgW11cblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+IHNlbGYjY29uc3RyIFwiQ2xvc2VkXCIgW11cbiAgICAgICAgfCBPcGVuIC0+IHNlbGYjY29uc3RyIFwiT3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IHNlbGYjY29uc3RyIFwiTm9sYWJlbFwiIFtdXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhYmVsbGVkXCIgWyBhIF1cbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3B0aW9uYWxcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDb3ZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb3ZhcmlhbnRcIiBbXVxuICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb250cmF2YXJpYW50XCIgW11cbiAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IHNlbGYjY29uc3RyIFwiTm9WYXJpYW5jZVwiIFtdXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEluamVjdGl2ZSAtPiBzZWxmI2NvbnN0ciBcIkluamVjdGl2ZVwiIFtdXG4gICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiBzZWxmI2NvbnN0ciBcIk5vSW5qZWN0aXZpdHlcIiBbXVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfaW50ZWdlclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfY2hhclwiIFsgYSBdXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3Rfc3RyaW5nXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2Zsb2F0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgYXR0cl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU3RyXCIgWyBhIF1cbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU2lnXCIgWyBhIF1cbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQVHlwXCIgWyBhIF1cbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQUGF0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgcHR5cF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBzZWxmI2NvbnN0ciBcIlB0eXBfYW55XCIgW11cbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9vYmplY3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY2xhc3NcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJpYW50XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wYWNrYWdlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcmZfbG9jXCIsIHByZl9sb2MpO1xuICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJ0YWdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIHBvZl9sb2MpO1xuICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3RhZ1wiIFsgYTsgYiBdXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9pbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgcHBhdF9sb2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IHNlbGYjY29uc3RyIFwiUHBhdF9hbnlcIiBbXVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9pbnRlcnZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgcGV4cF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuY3Rpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX21hdGNoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHJ5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZmllbGRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0ZmllbGRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lmdGhlbmVsc2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VxdWVuY2VcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfd2hpbGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mb3JcIiBbIGE7IGI7IGM7IGQ7IGUgXVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb2VyY2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VuZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3ZlcnJpZGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0bW9kdWxlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Fzc2VydFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vYmplY3RcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BhY2tcIiBbIGEgXVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vcGVuXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0b3BcIiBbIGEgXVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBzZWxmI2NvbnN0ciBcIlBleHBfdW5yZWFjaGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY19saHNcIiwgcGNfbGhzKTsgKFwicGNfZ3VhcmRcIiwgcGNfZ3VhcmQpOyAoXCJwY19yaHNcIiwgcGNfcmhzKSBdXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJsZXRfXCIsIGxldF8pOyAoXCJhbmRzXCIsIGFuZHMpOyAoXCJib2R5XCIsIGJvZHkpIF1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBwYm9wX29wKTtcbiAgICAgICAgICAgIChcInBib3BfcGF0XCIsIHBib3BfcGF0KTtcbiAgICAgICAgICAgIChcInBib3BfZXhwXCIsIHBib3BfZXhwKTtcbiAgICAgICAgICAgIChcInBib3BfbG9jXCIsIHBib3BfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgcHZhbF9wcmltKTtcbiAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgcHZhbF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBwdHlwZV9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX2Fic3RyYWN0XCIgW11cbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV92YXJpYW50XCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3JlY29yZFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX29wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIHBsZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgIChcInBsZF90eXBlXCIsIHBsZF90eXBlKTtcbiAgICAgICAgICAgIChcInBsZF9sb2NcIiwgcGxkX2xvYyk7XG4gICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBwY2RfdmFycyk7XG4gICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBwY2RfYXJncyk7XG4gICAgICAgICAgICAoXCJwY2RfcmVzXCIsIHBjZF9yZXMpO1xuICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBwY2RfbG9jKTtcbiAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl9yZWNvcmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgcGV4dF9raW5kKTtcbiAgICAgICAgICAgIChcInBleHRfbG9jXCIsIHBleHRfbG9jKTtcbiAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfZGVjbFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X3JlYmluZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIHBjdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc2lnX3NlbGZcIiwgcGNzaWdfc2VsZik7IChcInBjc2lnX2ZpZWxkc1wiLCBwY3NpZ19maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfaW5oZXJpdFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIHBjaV92aXJ0KTtcbiAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBwY2lfZXhwcik7XG4gICAgICAgICAgICAoXCJwY2lfbG9jXCIsIHBjaV9sb2MpO1xuICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2xfbG9jXCIsIHBjbF9sb2MpO1xuICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzdHJfc2VsZlwiLCBwY3N0cl9zZWxmKTsgKFwicGNzdHJfZmllbGRzXCIsIHBjc3RyX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBwY2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbmhlcml0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbml0aWFsaXplclwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX3ZpcnR1YWxcIiBbIGEgXVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX2NvbmNyZXRlXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgcG10eV9sb2MpO1xuICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV93aXRoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3R5cGVvZlwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9hbGlhc1wiIFsgYSBdXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gc2VsZiNjb25zdHIgXCJVbml0XCIgW11cbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJOYW1lZFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzaWdfZGVzY1wiLCBwc2lnX2Rlc2MpOyAoXCJwc2lnX2xvY1wiLCBwc2lnX2xvYykgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3ZhbHVlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgcG1kX25hbWUpO1xuICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgcG1kX3R5cGUpO1xuICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBwbWRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtc19uYW1lXCIsIHBtc19uYW1lKTtcbiAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBwbXNfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIHBtdGRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgcGluY2xfbW9kKTtcbiAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHVsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2RzdWJzdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIHBtb2RfbG9jKTtcbiAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHN0cl9kZXNjXCIsIHBzdHJfZGVzYyk7IChcInBzdHJfbG9jXCIsIHBzdHJfbG9jKSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ZhbHVlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ByaW1pdGl2ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHB2Yl9wYXQpO1xuICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgcHZiX2V4cHIpO1xuICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBwdmJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgcG1iX25hbWUpO1xuICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgcG1iX2V4cHIpO1xuICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBwbWJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGVmXCIgWyBhIF1cbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kaXJcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBwZGlyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBkaXJhX2Rlc2NcIiwgcGRpcmFfZGVzYyk7IChcInBkaXJhX2xvY1wiLCBwZGlyYV9sb2MpIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfc3RyaW5nXCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2ludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9ib29sXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2wgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZyAqICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvc19mbmFtZSA9IFN0ZGxpYi5mc3QgcG9zX2ZuYW1lO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBTdGRsaWIuZnN0IHBvc19sbnVtO1xuICAgICAgICAgICAgcG9zX2JvbCA9IFN0ZGxpYi5mc3QgcG9zX2JvbDtcbiAgICAgICAgICAgIHBvc19jbnVtID0gU3RkbGliLmZzdCBwb3NfY251bTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgU3RkbGliLnNuZCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBTdGRsaWIuc25kIHBvc19sbnVtKTtcbiAgICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBTdGRsaWIuc25kIHBvc19ib2wpO1xuICAgICAgICAgICAgICAoXCJwb3NfY251bVwiLCBTdGRsaWIuc25kIHBvc19jbnVtKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbG9jX3N0YXJ0ID0gU3RkbGliLmZzdCBsb2Nfc3RhcnQ7XG4gICAgICAgICAgICBsb2NfZW5kID0gU3RkbGliLmZzdCBsb2NfZW5kO1xuICAgICAgICAgICAgbG9jX2dob3N0ID0gU3RkbGliLmZzdCBsb2NfZ2hvc3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIFN0ZGxpYi5zbmQgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBTdGRsaWIuc25kIGxvY19lbmQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgU3RkbGliLnNuZCBsb2NfZ2hvc3QpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICAoIHsgdHh0ID0gU3RkbGliLmZzdCB0eHQ7IGxvYyA9IFN0ZGxpYi5mc3QgbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4IFsgKFwidHh0XCIsIFN0ZGxpYi5zbmQgdHh0KTsgKFwibG9jXCIsIFN0ZGxpYi5zbmQgbG9jKSBdXG4gICAgICAgIClcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKExpZGVudCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiTGlkZW50XCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBMZG90IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxkb3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGFwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jICogJ3JlcyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCAqICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIHNlbGYjY29uc3RyIGN0eCBcIk5vbGFiZWxcIiBbXSlcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIExhYmVsbGVkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYWJlbGxlZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggT3B0aW9uYWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9wdGlvbmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfaW50ZWdlciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfaW50ZWdlclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2NoYXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9jaGFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgKCBQY29uc3Rfc3RyaW5nIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X3N0cmluZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9mbG9hdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfZmxvYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGF0dHJfbmFtZSA9IFN0ZGxpYi5mc3QgYXR0cl9uYW1lO1xuICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gU3RkbGliLmZzdCBhdHRyX3BheWxvYWQ7XG4gICAgICAgICAgICBhdHRyX2xvYyA9IFN0ZGxpYi5mc3QgYXR0cl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIFN0ZGxpYi5zbmQgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIFN0ZGxpYi5zbmQgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgU3RkbGliLnNuZCBhdHRyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU3RyIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU3RyXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU2lnIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU2lnXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQVHlwIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQVHlwXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBQYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUFBhdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gU3RkbGliLmZzdCBwdHlwX2Rlc2M7XG4gICAgICAgICAgICBwdHlwX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgU3RkbGliLnNuZCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYW55XCIgW10pXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jbGFzcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NsYXNzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhcmlhbnRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfcGFja2FnZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wYWNrYWdlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHJmX2Rlc2MgPSBTdGRsaWIuZnN0IHByZl9kZXNjO1xuICAgICAgICAgICAgcHJmX2xvYyA9IFN0ZGxpYi5mc3QgcHJmX2xvYztcbiAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcmZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBTdGRsaWIuc25kIHByZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBTdGRsaWIuc25kIHByZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBSdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUnRhZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUmluaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJpbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcG9mX2Rlc2M7XG4gICAgICAgICAgICBwb2ZfbG9jID0gU3RkbGliLmZzdCBwb2ZfbG9jO1xuICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcG9mX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBPdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk90YWdcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggT2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IFN0ZGxpYi5mc3QgcHBhdF9kZXNjO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBTdGRsaWIuZnN0IHBwYXRfbG9jO1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgU3RkbGliLnNuZCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FueVwiIFtdKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2ludGVydmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfaW50ZXJ2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IFN0ZGxpYi5mc3QgcGV4cF9kZXNjO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBTdGRsaWIuZnN0IHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBleHBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgU3RkbGliLnNuZCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1bmN0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1bmN0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9tYXRjaCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX21hdGNoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF90cnkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90cnlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2ZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZmllbGRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0ZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGZpZWxkXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9pZnRoZW5lbHNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZnRoZW5lbHNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlcXVlbmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VxdWVuY2VcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF93aGlsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3doaWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgICggUGV4cF9mb3JcbiAgICAgICAgICAgICAgICAoIFN0ZGxpYi5mc3QgYSxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYixcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYyxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZCxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZSApLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZvclwiXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBhO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBiO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBjO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBkO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBlO1xuICAgICAgICAgICAgICAgIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfY29lcmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb2VyY2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VuZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlbmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRpbnN0dmFyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0aW5zdHZhclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfb3ZlcnJpZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3ZlcnJpZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG1vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2xldGV4Y2VwdGlvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXNzZXJ0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Fzc2VydFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXd0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3dHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3BhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG9wIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG9wXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAoUGV4cF91bnJlYWNoYWJsZSwgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdKVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjX2xocyA9IFN0ZGxpYi5mc3QgcGNfbGhzO1xuICAgICAgICAgICAgcGNfZ3VhcmQgPSBTdGRsaWIuZnN0IHBjX2d1YXJkO1xuICAgICAgICAgICAgcGNfcmhzID0gU3RkbGliLmZzdCBwY19yaHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNfbGhzXCIsIFN0ZGxpYi5zbmQgcGNfbGhzKTtcbiAgICAgICAgICAgICAgKFwicGNfZ3VhcmRcIiwgU3RkbGliLnNuZCBwY19ndWFyZCk7XG4gICAgICAgICAgICAgIChcInBjX3Joc1wiLCBTdGRsaWIuc25kIHBjX3Jocyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbGV0XyA9IFN0ZGxpYi5mc3QgbGV0XztcbiAgICAgICAgICAgIGFuZHMgPSBTdGRsaWIuZnN0IGFuZHM7XG4gICAgICAgICAgICBib2R5ID0gU3RkbGliLmZzdCBib2R5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxldF9cIiwgU3RkbGliLnNuZCBsZXRfKTtcbiAgICAgICAgICAgICAgKFwiYW5kc1wiLCBTdGRsaWIuc25kIGFuZHMpO1xuICAgICAgICAgICAgICAoXCJib2R5XCIsIFN0ZGxpYi5zbmQgYm9keSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwYm9wX29wID0gU3RkbGliLmZzdCBwYm9wX29wO1xuICAgICAgICAgICAgcGJvcF9wYXQgPSBTdGRsaWIuZnN0IHBib3BfcGF0O1xuICAgICAgICAgICAgcGJvcF9leHAgPSBTdGRsaWIuZnN0IHBib3BfZXhwO1xuICAgICAgICAgICAgcGJvcF9sb2MgPSBTdGRsaWIuZnN0IHBib3BfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBib3Bfb3BcIiwgU3RkbGliLnNuZCBwYm9wX29wKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgU3RkbGliLnNuZCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAgIChcInBib3BfZXhwXCIsIFN0ZGxpYi5zbmQgcGJvcF9leHApO1xuICAgICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBTdGRsaWIuc25kIHBib3BfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZhbF9uYW1lID0gU3RkbGliLmZzdCBwdmFsX25hbWU7XG4gICAgICAgICAgICBwdmFsX3R5cGUgPSBTdGRsaWIuZnN0IHB2YWxfdHlwZTtcbiAgICAgICAgICAgIHB2YWxfcHJpbSA9IFN0ZGxpYi5mc3QgcHZhbF9wcmltO1xuICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmFsX2xvYyA9IFN0ZGxpYi5mc3QgcHZhbF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIFN0ZGxpYi5zbmQgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIFN0ZGxpYi5zbmQgcHZhbF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIFN0ZGxpYi5zbmQgcHZhbF9wcmltKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgU3RkbGliLnNuZCBwdmFsX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZSA9IFN0ZGxpYi5mc3QgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBTdGRsaWIuZnN0IHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZCA9IFN0ZGxpYi5mc3QgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jID0gU3RkbGliLmZzdCBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBTdGRsaWIuc25kIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBTdGRsaWIuc25kIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBTdGRsaWIuc25kIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBlX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX2Fic3RyYWN0XCIgW10pXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX29wZW5cIiBbXSlcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGxkX25hbWUgPSBTdGRsaWIuZnN0IHBsZF9uYW1lO1xuICAgICAgICAgICAgcGxkX211dGFibGUgPSBTdGRsaWIuZnN0IHBsZF9tdXRhYmxlO1xuICAgICAgICAgICAgcGxkX3R5cGUgPSBTdGRsaWIuZnN0IHBsZF90eXBlO1xuICAgICAgICAgICAgcGxkX2xvYyA9IFN0ZGxpYi5mc3QgcGxkX2xvYztcbiAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbGRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBTdGRsaWIuc25kIHBsZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgU3RkbGliLnNuZCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAgIChcInBsZF90eXBlXCIsIFN0ZGxpYi5zbmQgcGxkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbG9jXCIsIFN0ZGxpYi5zbmQgcGxkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNkX25hbWUgPSBTdGRsaWIuZnN0IHBjZF9uYW1lO1xuICAgICAgICAgICAgcGNkX3ZhcnMgPSBTdGRsaWIuZnN0IHBjZF92YXJzO1xuICAgICAgICAgICAgcGNkX2FyZ3MgPSBTdGRsaWIuZnN0IHBjZF9hcmdzO1xuICAgICAgICAgICAgcGNkX3JlcyA9IFN0ZGxpYi5mc3QgcGNkX3JlcztcbiAgICAgICAgICAgIHBjZF9sb2MgPSBTdGRsaWIuZnN0IHBjZF9sb2M7XG4gICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgU3RkbGliLnNuZCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjZF92YXJzXCIsIFN0ZGxpYi5zbmQgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBTdGRsaWIuc25kIHBjZF9hcmdzKTtcbiAgICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBTdGRsaWIuc25kIHBjZF9yZXMpO1xuICAgICAgICAgICAgICAoXCJwY2RfbG9jXCIsIFN0ZGxpYi5zbmQgcGNkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aCA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgU3RkbGliLnNuZCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXh0X25hbWUgPSBTdGRsaWIuZnN0IHBleHRfbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IFN0ZGxpYi5mc3QgcGV4dF9raW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBTdGRsaWIuZnN0IHBleHRfbG9jO1xuICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIFN0ZGxpYi5zbmQgcGV4dF9raW5kKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgU3RkbGliLnNuZCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2xvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgU3RkbGliLnNuZCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4dF9kZWNsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9kZWNsXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4dF9yZWJpbmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfcmViaW5kXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gU3RkbGliLmZzdCBwY3R5X2Rlc2M7XG4gICAgICAgICAgICBwY3R5X2xvYyA9IFN0ZGxpYi5mc3QgcGN0eV9sb2M7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgU3RkbGliLnNuZCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBTdGRsaWIuc25kIHBjdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY3R5X2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc2lnX3NlbGYgPSBTdGRsaWIuZnN0IHBjc2lnX3NlbGY7XG4gICAgICAgICAgICBwY3NpZ19maWVsZHMgPSBTdGRsaWIuZnN0IHBjc2lnX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3NpZ19zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzaWdfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc2lnX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc2lnX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjdGZfZGVzYztcbiAgICAgICAgICAgIHBjdGZfbG9jID0gU3RkbGliLmZzdCBwY3RmX2xvYztcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBTdGRsaWIuc25kIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfdmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNpX3ZpcnQgPSBTdGRsaWIuZnN0IHBjaV92aXJ0O1xuICAgICAgICAgICAgcGNpX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcGNpX3BhcmFtcztcbiAgICAgICAgICAgIHBjaV9uYW1lID0gU3RkbGliLmZzdCBwY2lfbmFtZTtcbiAgICAgICAgICAgIHBjaV9leHByID0gU3RkbGliLmZzdCBwY2lfZXhwcjtcbiAgICAgICAgICAgIHBjaV9sb2MgPSBTdGRsaWIuZnN0IHBjaV9sb2M7XG4gICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgU3RkbGliLnNuZCBwY2lfdmlydCk7XG4gICAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgU3RkbGliLnNuZCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjaV9leHByXCIsIFN0ZGxpYi5zbmQgcGNpX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwY2lfbG9jXCIsIFN0ZGxpYi5zbmQgcGNpX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IFN0ZGxpYi5mc3QgcGNsX2Rlc2M7XG4gICAgICAgICAgICBwY2xfbG9jID0gU3RkbGliLmZzdCBwY2xfbG9jO1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgICggUGNsX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNsX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2xfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc3RyX3NlbGYgPSBTdGRsaWIuZnN0IHBjc3RyX3NlbGY7XG4gICAgICAgICAgICBwY3N0cl9maWVsZHMgPSBTdGRsaWIuZnN0IHBjc3RyX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3N0cl9zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzdHJfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc3RyX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc3RyX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjZl9kZXNjO1xuICAgICAgICAgICAgcGNmX2xvYyA9IFN0ZGxpYi5mc3QgcGNmX2xvYztcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBjZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBTdGRsaWIuc25kIHBjZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUGNmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9pbml0aWFsaXplciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaXRpYWxpemVyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggQ2ZrX3ZpcnR1YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma192aXJ0dWFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIENma19jb25jcmV0ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfY29uY3JldGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10eV9kZXNjID0gU3RkbGliLmZzdCBwbXR5X2Rlc2M7XG4gICAgICAgICAgICBwbXR5X2xvYyA9IFN0ZGxpYi5mc3QgcG10eV9sb2M7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgU3RkbGliLnNuZCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBTdGRsaWIuc25kIHBtdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X3dpdGggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV93aXRoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV90eXBlb2YgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfdHlwZW9mXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfYWxpYXMgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBzZWxmI2NvbnN0ciBjdHggXCJVbml0XCIgW10pXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBOYW1lZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJOYW1lZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgKCB7IHBzaWdfZGVzYyA9IFN0ZGxpYi5mc3QgcHNpZ19kZXNjOyBwc2lnX2xvYyA9IFN0ZGxpYi5mc3QgcHNpZ19sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHNpZ19kZXNjXCIsIFN0ZGxpYi5zbmQgcHNpZ19kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHNpZ19sb2NcIiwgU3RkbGliLnNuZCBwc2lnX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3ZhbHVlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBTdGRsaWIuZnN0IHBtZF9uYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSBTdGRsaWIuZnN0IHBtZF90eXBlO1xuICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1kX2xvYyA9IFN0ZGxpYi5mc3QgcG1kX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBTdGRsaWIuc25kIHBtZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgU3RkbGliLnNuZCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWRfbG9jXCIsIFN0ZGxpYi5zbmQgcG1kX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXNfbmFtZSA9IFN0ZGxpYi5mc3QgcG1zX25hbWU7XG4gICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHBtc19tYW5pZmVzdDtcbiAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtc19sb2MgPSBTdGRsaWIuZnN0IHBtc19sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgU3RkbGliLnNuZCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXNfbG9jXCIsIFN0ZGxpYi5zbmQgcG1zX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gU3RkbGliLmZzdCBwbXRkX25hbWU7XG4gICAgICAgICAgICBwbXRkX3R5cGUgPSBTdGRsaWIuZnN0IHBtdGRfdHlwZTtcbiAgICAgICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG10ZF9sb2MgPSBTdGRsaWIuZnN0IHBtdGRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBTdGRsaWIuc25kIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBTdGRsaWIuc25kIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIFN0ZGxpYi5zbmQgcG10ZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gU3RkbGliLmZzdCBwb3Blbl9leHByO1xuICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBTdGRsaWIuZnN0IHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gU3RkbGliLmZzdCBwb3Blbl9sb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgU3RkbGliLnNuZCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgU3RkbGliLnNuZCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBTdGRsaWIuc25kIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBpbmNsX21vZCA9IFN0ZGxpYi5mc3QgcGluY2xfbW9kO1xuICAgICAgICAgICAgcGluY2xfbG9jID0gU3RkbGliLmZzdCBwaW5jbF9sb2M7XG4gICAgICAgICAgICBwaW5jbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwaW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBTdGRsaWIuc25kIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBTdGRsaWIuc25kIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVzdWJzdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gU3RkbGliLmZzdCBwbW9kX2Rlc2M7XG4gICAgICAgICAgICBwbW9kX2xvYyA9IFN0ZGxpYi5mc3QgcG1vZF9sb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgU3RkbGliLnNuZCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBTdGRsaWIuc25kIHBtb2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2Rfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgKCB7IHBzdHJfZGVzYyA9IFN0ZGxpYi5mc3QgcHN0cl9kZXNjOyBwc3RyX2xvYyA9IFN0ZGxpYi5mc3QgcHN0cl9sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHN0cl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHN0cl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHN0cl9sb2NcIiwgU3RkbGliLnNuZCBwc3RyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9ldmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdmFsdWUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl92YWx1ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcHJpbWl0aXZlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ByaW1pdGl2ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBTdGRsaWIuZnN0IHB2Yl9wYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IFN0ZGxpYi5mc3QgcHZiX2V4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmJfbG9jID0gU3RkbGliLmZzdCBwdmJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgU3RkbGliLnNuZCBwdmJfcGF0KTtcbiAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgU3RkbGliLnNuZCBwdmJfZXhwcik7XG4gICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIFN0ZGxpYi5zbmQgcHZiX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWJfbmFtZSA9IFN0ZGxpYi5mc3QgcG1iX25hbWU7XG4gICAgICAgICAgICBwbWJfZXhwciA9IFN0ZGxpYi5mc3QgcG1iX2V4cHI7XG4gICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWJfbG9jID0gU3RkbGliLmZzdCBwbWJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1iX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBTdGRsaWIuc25kIHBtYl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtYl9sb2NcIiwgU3RkbGliLnNuZCBwbWJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kZWYgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGVmXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RpciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kaXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJfbmFtZSA9IFN0ZGxpYi5mc3QgcGRpcl9uYW1lO1xuICAgICAgICAgICAgcGRpcl9hcmcgPSBTdGRsaWIuZnN0IHBkaXJfYXJnO1xuICAgICAgICAgICAgcGRpcl9sb2MgPSBTdGRsaWIuZnN0IHBkaXJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBTdGRsaWIuc25kIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIFN0ZGxpYi5zbmQgcGRpcl9hcmcpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcmFfZGVzYyA9IFN0ZGxpYi5mc3QgcGRpcmFfZGVzYztcbiAgICAgICAgICAgIHBkaXJhX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcmFfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJhX2Rlc2NcIiwgU3RkbGliLnNuZCBwZGlyYV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGRpcmFfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcmFfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9zdHJpbmcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfc3RyaW5nXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQZGlyX2ludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2ludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9ib29sIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2Jvb2xcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgKiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuW0BAQGVuZF1cbltAQEBlbmRdXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IudFxuXG5sZXQgdG9fZXh0ZW5zaW9uIChlcnJvciA6IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50KSA9XG4gIGxldCBvcGVuIEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBpblxuICBsZXQgb3BlbiBBc3RfaGVscGVyIGluXG4gIGlmIG5vdCAoaXNfd2VsbF9mb3JtZWQgZXJyb3IpIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcInRvX2V4dGVuc2lvbjogZXhwZWN0ZWQga2luZCBSZXBvcnRfZXJyb3JcIik7XG4gIGxldCBzdWJfbXNncyA9IHN1Yl9tc2dzIGVycm9yIGluXG4gIGxldCBtYWluX21zZyA9IG1haW5fbXNnIGVycm9yIGluXG4gIGxldCBlcnJfZXh0ZW5zaW9uX25hbWUgbG9jID0geyBMb2NhdGlvbi5sb2M7IHR4dCA9IFwib2NhbWwuZXJyb3JcIiB9IGluXG4gIGxldCBta19zdHJpbmdfY29uc3RhbnQgeCA9IFN0ci5ldmFsIChFeHAuY29uc3RhbnQgKENvbnN0LnN0cmluZyB4KSkgaW5cbiAgbGV0IGV4dGVuc2lvbl9vZl9zdWJfbXNnIChzdWJfbXNnIDogc3RyaW5nIExvY2F0aW9uLmxvYykgPVxuICAgIFN0ci5leHRlbnNpb25cbiAgICAgIChlcnJfZXh0ZW5zaW9uX25hbWUgc3ViX21zZy5sb2MsIFBTdHIgWyBta19zdHJpbmdfY29uc3RhbnQgc3ViX21zZy50eHQgXSlcbiAgaW5cbiAgKCBlcnJfZXh0ZW5zaW9uX25hbWUgbWFpbl9tc2cubG9jLFxuICAgIFBhcnNldHJlZS5QU3RyXG4gICAgICAobWtfc3RyaW5nX2NvbnN0YW50IG1haW5fbXNnLnR4dCA6OiBMaXN0Lm1hcCBleHRlbnNpb25fb2Zfc3ViX21zZyBzdWJfbXNncylcbiAgKVxuXG5sZXQgcmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLnJlZ2lzdGVyX2Vycm9yX29mX2V4blxuXG5sZXQgbWVzc2FnZSBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi50eHQ7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICB0eHRcblxubGV0IHNldF9tZXNzYWdlID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX21zZ1xuXG5sZXQgbWFrZSB+bG9jIHR4dCB+c3ViID1cbiAgbGV0IHN1YiA9IExpc3QubWFwIChmdW4gKGxvYywgdHh0KSAtPiB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IHR4dCB9KSBzdWIgaW5cbiAgQXN0bGliLkxvY2F0aW9uLkVycm9yLm1ha2UgfnN1YiB7IGxvYzsgdHh0IH1cblxubGV0IHVwZGF0ZV9sb2MgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbG9jXG5cbmxldCBnZXRfbG9jYXRpb24gZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24ubG9jOyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgbG9jXG5cbmxldCBvZl9leG4gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iub2ZfZXhuXG5sZXQgcmFpc2UgZXJyb3IgPSByYWlzZSAoQXN0bGliLkxvY2F0aW9uLkVycm9yIGVycm9yKVxuIiwibW9kdWxlIERvX25vdF91c2VfZGlyZWN0bHkgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgQWZsX2luc3RydW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWZsX2luc3RydW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIEFsaWFzX2FuYWx5c2lzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsaWFzX2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBBbGxvY2F0ZWRfY29uc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxsb2NhdGVkX2NvbnN0IGluc3RlYWRcIl1cbm1vZHVsZSBBbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXJjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BcmNoIGluc3RlYWRcIl1cbm1vZHVsZSBBcmdfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXJnX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saW5rIGluc3RlYWRcIl1cbm1vZHVsZSBBc21wYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21wYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdHR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBdHRyX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkF0dHJfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBCYWNrZW5kX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJhY2tlbmRfdmFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJhY2tlbmRfdmFyIGluc3RlYWRcIl1cbm1vZHVsZSBCaW51dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJpbnV0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CcmFuY2hfcmVsYXhhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb25faW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQnR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfZXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnVpbGRfZXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX3BhdGhfcHJlZml4X21hcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWxkX3BhdGhfcHJlZml4X21hcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbHRpbl9hdHRyaWJ1dGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbHRpbl9hdHRyaWJ1dGVzIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVwYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlc2VjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CeXRlc2VjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIENTRSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0UgaW5zdGVhZFwiXVxubW9kdWxlIENTRWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0VnZW4gaW5zdGVhZFwiXVxubW9kdWxlIENhbWxpbnRlcm5hbE1lbmhpckxpYiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNhbWxpbnRlcm5hbE1lbmhpckxpYiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2NvbXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DY29tcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDbGZsYWdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2xmbGFncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb25fYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbl9hdXggaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfZWxlbWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2VsZW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vZmZzZXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb2Zmc2V0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIENtaV9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbWlfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faGVscGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faGVscGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW4gaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbl9zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW5fc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIENtb19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENtdDJhbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdDJhbm5vdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ210X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdF9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENteF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENteHNfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb2xvcmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db2xvcmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tYmFsbG9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbWJhbGxvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGF0aW9uX3VuaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsYXRpb25fdW5pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQ29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21waWxlX2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcG1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wbWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcHJlc3Npb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wcmVzc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uZmlnIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWdfYm9vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uZmlnX21haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbnNpc3RibCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbnNpc3RibCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29udmVydF9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbnZlcnRfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ3R5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YWZsb3cgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGF0YWZsb3cgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFyZXByID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGF0YXJlcHIgaW5zdGVhZFwiXVxubW9kdWxlIERlYWRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRlYWRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBEZWJ1Z2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZWJ1Z2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIERlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmcgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmdfd2l0aF9rZXlzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZ193aXRoX2tleXMgaW5zdGVhZFwiXVxubW9kdWxlIERsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9jc3RyaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvY3N0cmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIERvbWFpbnN0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9tYWluc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIEVmZmVjdF9hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FZmZlY3RfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0Y29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRW1pdGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgRW52YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3J0cmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVycm9ydHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaWQgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mb19mb3JfcGFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mb19mb3JfcGFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwdW5nZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRXh0cmFjdF9wcm9qZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHRyYWN0X3Byb2plY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaXRlcmF0b3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaXRlcmF0b3JzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3RvX2NsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV90b19jbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3V0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEZyZXNoZW5pbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRnJlc2hlbmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgR2VucHJpbnR2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLkdlbnByaW50dmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJZF90eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JZF90eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnRpZmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBJbXBvcnRfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkltcG9ydF9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2RfZXJyb3JwcmludGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgaW5zdGVhZFwiXVxubW9kdWxlIEluY29uc3RhbnRfaWRlbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluY29uc3RhbnRfaWRlbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2Nvc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfY29zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfZGVjaXNpb24gaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0c190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0c190eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfdHJhbnNmb3JtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ190cmFuc2Zvcm1zIGluc3RlYWRcIl1cbm1vZHVsZSBJbnN0cnVjdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuSW5zdHJ1Y3QgaW5zdGVhZFwiXVxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJmIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcm5hbF92YXJpYWJsZV9uYW1lcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcm5hbF92YXJpYWJsZV9uYW1lcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJ2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJ2YWwgaW5zdGVhZFwiXVxubW9kdWxlIEludmFyaWFudF9wYXJhbXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW52YXJpYW50X3BhcmFtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBMYXp5X2JhY2t0cmFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhenlfYmFja3RyYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBMZXhlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxleGVyIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcl9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyaXplID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcml6ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlua2FnZV9uYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmthZ2VfbmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluc2NhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5zY2FuIGluc3RlYWRcIl1cbm1vZHVsZSBMaXZlbmVzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaXZlbmVzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9hZF9wYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9hZF9wYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhbF9zdG9yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2FsX3N0b3JlIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2F0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBMb25naWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIE1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgTWFpbl9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFpbl9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5NYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBNYWtlZGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFrZWRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWF0Y2hpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYXRjaGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWV0YSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ldGEgaW5zdGVhZFwiXVxubW9kdWxlIE1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBNdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk10eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBNdXRhYmxlX3ZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk11dGFibGVfdmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIE51bWJlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5OdW1iZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBPcGNvZGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3Bjb2RlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3ByaW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3ByaW50IGluc3RlYWRcIl1cbm1vZHVsZSBPcHRjb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRlcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wdG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE9wdG1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0bWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgT3V0Y29tZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhcmFtZXRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXJhbWV0ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2V0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXNzX3dyYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFzc193cmFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0dGVybnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXR0ZXJucyBpbnN0ZWFkXCJdXG5tb2R1bGUgUGVyc2lzdGVudF9lbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QZXJzaXN0ZW50X2VudiBpbnN0ZWFkXCJdXG5tb2R1bGUgUG9sbGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qb2xsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBQcGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBwcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJlZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJlZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBQcmltaXRpdmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmltaXRpdmUgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRpbnN0ciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuUHJpbnRpbnN0ciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRsaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludG1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIFByaW50cGF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRwYXQgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXAgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cGVkIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2MgaW5zdGVhZFwiXVxubW9kdWxlIFByb2ZpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Qcm9maWxlIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9qZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2plY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFJlZl90b192YXJpYWJsZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVmX3RvX3ZhcmlhYmxlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUnVudGltZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJ1bnRpbWVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZHVsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkdWxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3RnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFNlbWFudGljc19vZl9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbWFudGljc19vZl9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2hhcGUgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlX3JlZHVjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNoYXBlX3JlZHVjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcmVfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNoYXJlX2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2lnbmF0dXJlX2dyb3VwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2lnbmF0dXJlX2dyb3VwIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGVfdmFsdWVfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsZV92YWx1ZV9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaW1wbGlmIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHNfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgU2ltcGxpZnlfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTcGlsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGlsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BsaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BsaXQgaW5zdGVhZFwiXVxubW9kdWxlIFN0YWNrZnJhbWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhY2tmcmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhY2tmcmFtZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGFja2ZyYW1lZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTdGF0aWNfZXhjZXB0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YXRpY19leGNlcHRpb24gaW5zdGVhZFwiXVxubW9kdWxlIFN0cm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0cm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFN1YnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Vic3QgaW5zdGVhZFwiXVxubW9kdWxlIFN3aXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN3aXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltdGFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW10YWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ludGF4ZXJyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ludGF4ZXJyIGluc3RlYWRcIl1cbm1vZHVsZSBUYWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVGFnIGluc3RlYWRcIl1cbm1vZHVsZSBUYXJnZXRpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXJnZXRpbnQgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBUZXJtaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRlcm1pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBUaHJlYWRfc2FuaXRpemVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRocmVhZF9zYW5pdGl6ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRtYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRtYyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bjb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFRvcGRpcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGRpcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGV2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGV2YWwgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGhvb2tzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUb3Bsb29wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bsb29wIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BtYWluIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BwcmludGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wcHJpbnRlcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcHN0YXJ0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUcmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGF0dHJpYnV0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGF0dHJpYnV0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsb2JqID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsb2JqIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xwcmltID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNscHJpbSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZV9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9wcm9wZXJ0aWVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfcHJvcGVydGllcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfc2VwYXJhYmlsaXR5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfc2VwYXJhYmlsaXR5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF91bmJveGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdW5ib3hlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdmFyaWFuY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF92YXJpYW5jZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWR0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWR0cmVlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW9wdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVvcHQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGV0ZXhwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXRleHAgaW5zdGVhZFwiXVxubW9kdWxlIFVuX2FuZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Vbl9hbmYgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFVuaXRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlVuaXRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW50eXBlYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVW50eXBlYXN0IGluc3RlYWRcIl1cbm1vZHVsZSBWYWx1ZV9yZWNfY2hlY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5WYWx1ZV9yZWNfY2hlY2sgaW5zdGVhZFwiXVxubW9kdWxlIFZhbHVlX3JlY19jb21waWxlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlZhbHVlX3JlY19jb21waWxlciBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFsdWVfcmVjX3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBWYXJfd2l0aGluX2Nsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyX3dpdGhpbl9jbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBWYXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgV2FybmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5XYXJuaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2FzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgWDg2X2RzbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZHNsIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfZ2FzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9nYXMgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9tYXNtID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9tYXNtIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfcHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfcHJvYyBpbnN0ZWFkXCJdXG4iLCJvcGVuIFN0ZExhYmVsc1xuXG5sZXQgcGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzID1cbiAgbGV0IGFyZ3MgPVxuICAgIExpc3QuY29uY2F0XG4gICAgICBbXG4gICAgICAgIFsgXCIta2VlcC13aGl0ZXNwYWNlXCIgXTtcbiAgICAgICAgWyBcIi1sb2NhdGlvbi1zdHlsZSBvbWFrZVwiIF07XG4gICAgICAgIChpZiB1c2VfY29sb3IgdGhlbiBbXSBlbHNlIFsgXCItYXNjaWlcIiBdKTtcbiAgICAgICAgZXh0cmFfcGF0ZGlmZl9hcmdzO1xuICAgICAgXVxuICBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKFwicGF0ZGlmZlwiIDo6IGFyZ3MpXG5cbmxldCBwcmludCA/ZGlmZl9jb21tYW5kID8oZXh0cmFfcGF0ZGlmZl9hcmdzID0gW10pID8odXNlX2NvbG9yID0gZmFsc2UpIH5maWxlMVxuICAgIH5maWxlMiAoKSA9XG4gIGxldCBleGVjIGNtZCA9XG4gICAgbGV0IGNtZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIDE+JjJcIiBjbWQgKEZpbGVuYW1lLnF1b3RlIGZpbGUxKVxuICAgICAgICAoRmlsZW5hbWUucXVvdGUgZmlsZTIpXG4gICAgaW5cbiAgICBtYXRjaCBTeXMuY29tbWFuZCBjbWQgd2l0aFxuICAgIHwgMCAtPiBgU2FtZVxuICAgIHwgMSAtPiBgRGlmZmVyZW50XG4gICAgfCBuIC0+IGBFcnJvciAobiwgY21kKVxuICBpblxuICBtYXRjaCBkaWZmX2NvbW1hbmQgd2l0aFxuICB8IFNvbWUgcyAtPiBpZ25vcmUgKGV4ZWMgcyA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIGV4ZWMgKHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncykgd2l0aFxuICAgICAgfCBgU2FtZSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgcHJvZHVjZWQgbm8gb3V0cHV0LCBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICAgICAgfCBgRGlmZmVyZW50IC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBzdWNjZXNzZnVsbHkgZm91bmQgYSBkaWZmZXJlbmNlICopXG4gICAgICAgICAgKClcbiAgICAgIHwgYEVycm9yIChlcnJfY29kZSwgY21kKSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgdGhyZXcgYW4gZXJyb3IuLi4gcGVyaGFwcyBpdCB3YXNuJ3QgaW5zdGFsbGVkPyBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRXJyb3I6XFxuXFxcbiAgICAgICAgICAgICA+ICVTIGV4aXRlZCB3aXRoIGNvZGUgJWRcXG5cXFxuICAgICAgICAgICAgID4gUGVyaGFwcyBwYXRkaWZmIGlzIG5vdCBpbnN0YWxsZWQ/IEhpbnQsIHRyeTogb3BhbSBpbnN0YWxsIHBhdGRpZmZcXG5cXFxuICAgICAgICAgICAgID4gRmFsbGluZyBiYWNrIHRvIGRpZmYgLXVcXG5cXG5cIlxuICAgICAgICAgICAgY21kIGVycl9jb2RlO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSkpXG4iLCJ0eXBlIGRlcml2ZXIgPSAuLlxuXG5sZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgNDJcblxubGV0IHJlZ2lzdGVyIG5hbWUgZGVyaXZlciA9XG4gIGlmIEhhc2h0YmwubWVtIGFsbCBuYW1lIHRoZW5cbiAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgIFwiUHB4X2Rlcml2aWVycy5yZWdpc3RlcjogJVMgaXMgYWxyZWFkeSByZWdpc3RlcmVkXCIgbmFtZTtcbiAgSGFzaHRibC5hZGQgYWxsIG5hbWUgZGVyaXZlclxuXG5sZXQgbG9va3VwIG5hbWUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgYWxsIG5hbWUgd2l0aFxuICB8IGRydiAtPiBTb21lIGRydlxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZGVyaXZlcnMgKCkgPVxuICBIYXNodGJsLmZvbGQgKGZ1biBuYW1lIGRydiBhY2MgLT4gKG5hbWUsIGRydikgOjogYWNjKSBhbGwgW11cbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgbWFwID0gJ2EgLT4gJ2FcbiAgdHlwZSAnYSBpdGVyID0gJ2EgLT4gdW5pdFxuICB0eXBlICgnYSwgJ2FjYykgZm9sZCA9ICdhIC0+ICdhY2MgLT4gJ2FjY1xuICB0eXBlICgnYSwgJ2FjYykgZm9sZF9tYXAgPSAnYSAtPiAnYWNjIC0+ICdhICogJ2FjY1xuICB0eXBlICgnY3R4LCAnYSkgbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2FcbiAgdHlwZSAoJ2EsICdyZXMpIGxpZnQgPSAnYSAtPiAncmVzXG4gIHR5cGUgKCdjdHgsICdhLCAncmVzKSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhICogJ3Jlc1xuZW5kXG5cbmNsYXNzIG1hcCA9XG4gIGxldCBhbnkgeCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5tYXAgLT4gJ2Egb3B0aW9uIFQubWFwID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULm1hcCAtPiAnYSBsaXN0IFQubWFwID0gTGlzdC5tYXBcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgYXJyYXkgVC5tYXAgPSBBcnJheS5tYXBcbiAgZW5kXG5cbmNsYXNzIGl0ZXIgPVxuICBsZXQgYW55ID0gaWdub3JlIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQuaXRlciA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULml0ZXIgLT4gJ2Egb3B0aW9uIFQuaXRlciA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGxpc3QgVC5pdGVyID0gTGlzdC5pdGVyXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQuaXRlciAtPiAnYSBhcnJheSBULml0ZXIgPSBBcnJheS5pdGVyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZCA9XG4gIGxldCBhbnkgXyBhY2MgPSBhY2MgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIHggYWNjIC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IGFjYyB8IFNvbWUgeCAtPiBmIHggYWNjXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGFjYyB8IHggOjogbCAtPiBsb29wIGYgbCAoZiB4IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICByIDo9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhclxuICAgICAgICBkb25lO1xuICAgICAgICAhclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGRfbWFwID1cbiAgbGV0IGFueSB4IGFjYyA9ICh4LCBhY2MpIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBhY2MpXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgKFNvbWUgeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBhY2MpXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgbGV0IGwsIGFjYyA9IGxvb3AgZiBsIGFjYyBpblxuICAgICAgICAgICAgKHggOjogbCwgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gKGEsIGFjYylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkgYWNjIGluXG4gICAgICAgICAgbGV0IGEnID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyIGluXG4gICAgICAgICAgICBBcnJheS51bnNhZmVfc2V0IGEnIGkgeDtcbiAgICAgICAgICAgIHIgOj0gYWNjXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAoYScsICFyKVxuICBlbmRcblxuY2xhc3MgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBsZXQgYW55IF8geCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2Egb3B0aW9uKSBULm1hcF93aXRoX2NvbnRleHRcbiAgICAgICAgPVxuICAgICAgZnVuIGYgY3R4IHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgbGlzdCkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+IExpc3QubWFwIChmIGN0eCkgbFxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGFycmF5KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGEgLT4gQXJyYXkubWFwIChmIGN0eCkgYVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZWxmI2NvbnN0ciBcIk5vbmVcIiBbXVxuICAgICAgICB8IFNvbWUgeCAtPiBzZWxmI2NvbnN0ciBcIlNvbWVcIiBbIGYgeCBdXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2VsZiNjb25zdHIgXCJbXVwiIFtdXG4gICAgICAgIHwgeCA6OiBsIC0+IHNlbGYjY29uc3RyIFwiOjpcIiBbIGYgeDsgc2VsZiNsaXN0IGYgbCBdXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBzZWxmI2NvbnN0ciBjdHggXCJOb25lXCIgW10pXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzID0gZiBjdHggeCBpblxuICAgICAgICAgICAgKFNvbWUgeCwgc2VsZiNjb25zdHIgY3R4IFwiU29tZVwiIFsgcmVzIF0pXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBzZWxmI2NvbnN0ciBjdHggXCJbXVwiIFtdKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlc19oZWFkID0gZiBjdHggeCBpblxuICAgICAgICAgICAgbGV0IGwsIHJlc190YWlsID0gc2VsZiNsaXN0IGYgY3R4IGwgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIHNlbGYjY29uc3RyIGN0eCBcIjo6XCIgWyByZXNfaGVhZDsgcmVzX3RhaWwgXSlcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydyZXNdIHN0ZF9saWZ0ZXJzID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdFxuICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0XG5lbmRcblxuY2xhc3MgdHlwZSBbJ2N0eCwgJ3Jlc10gc3RkX2xpZnRfbWFwcGVyc193aXRoX2NvbnRleHQgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICBtZXRob2QgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGFycmF5IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIG9wdGlvbiA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGxpc3QgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbmVuZFxuIiwibW9kdWxlIENhbWwgPSBTdGRsaWIgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTA2XSB1c2UgU3RkbGliIGluc3RlYWRcIl1cbm9wZW4gU3RkbGliXG5vcGVuIFN0ZExhYmVsc1xubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIHR5cGUgQ29tcGFyaXNvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPj0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBtaW4gOiB0IC0+IHQgLT4gdFxuICB2YWwgbWF4IDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0IG1pbiA9IG1pblxuICBsZXQgbWF4ID0gbWF4XG5lbmRcblxuaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5cbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBib29sKVxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEJ5dGVzXG5cbiAgbGV0IHN1Yl9zdHJpbmcgdCB+cG9zIH5sZW4gPSBTdGRsaWIuQnl0ZXMuc3ViX3N0cmluZyB0IHBvcyBsZW5cblxuICBsZXQgYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIFN0ZGxpYi5CeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGNoYXIpXG5lbmRcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IHkgLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICB5XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgcmFpc2UgZXhuXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfZmxvYXRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gZmxvYXQpXG5lbmRcblxubW9kdWxlIEZuID0gc3RydWN0XG4gIGxldCBpZCB4ID0geFxuZW5kXG5cbm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICB3aGlsZSBtZW0gdCBrZXkgZG9cbiAgICAgIHJlbW92ZSB0IGtleVxuICAgIGRvbmU7XG4gICAgYWRkIHQga2V5IGRhdGFcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgaWYgbWVtIHQga2V5IHRoZW4gRXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLmFkZF9leG5cIilcbiAgICBlbHNlIChcbiAgICAgIGFkZCB0IGtleSBkYXRhO1xuICAgICAgT2sgKCkpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGggT2sgKCkgLT4gKCkgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG5cbiAgbGV0IGZpbmRfb3B0IHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGggZGF0YSAtPiBTb21lIGRhdGEgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZpbmRfb3B0IHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgICAgICBhZGRfZXhuIHQgfmtleSB+ZGF0YTtcbiAgICAgICAgZGF0YVxuXG4gIGxldCByZWMgYWRkX2FsaXN0IHQgYWxpc3QgPVxuICAgIG1hdGNoIGFsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE9rICgpXG4gICAgfCAoa2V5LCBkYXRhKSA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gYWRkX2FsaXN0IHQgdGFpbFxuICAgICAgICB8IEVycm9yIChfIDogZXhuKSAtPiBFcnJvciBrZXkpXG5cbiAgbGV0IG9mX2FsaXN0ID9zaXplIGFsaXN0ID1cbiAgICBsZXQgc2l6ZSA9XG4gICAgICBtYXRjaCBzaXplIHdpdGggU29tZSBzaXplIC0+IHNpemUgfCBOb25lIC0+IExpc3QubGVuZ3RoIGFsaXN0XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSBzaXplIGluXG4gICAgbWF0Y2ggYWRkX2FsaXN0IHQgYWxpc3Qgd2l0aCBPayAoKSAtPiBPayB0IHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuXG4gIGxldCBvZl9hbGlzdF9leG4gP3NpemUgYWxpc3QgPVxuICAgIG1hdGNoIG9mX2FsaXN0ID9zaXplIGFsaXN0IHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuXCIpXG5lbmRcblxubW9kdWxlIEluX2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICAgIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGVuYW1lIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5IGZpbGVuYW1lIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2VfaW5cblxuICBsZXQgaW5wdXRfYWxsIHQgPVxuICAgIGxldCByZWMgcmVhZF9hbGxfaW50byB0IGJ1ZiA9XG4gICAgICBtYXRjaCBpbnB1dF9jaGFyIHQgd2l0aFxuICAgICAgfCBjaGFyIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgICAgICAgIHJlYWRfYWxsX2ludG8gdCBidWZcbiAgICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHJlYWRfYWxsX2ludG8gdCBidWY7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCByZWFkX2FsbCBmaWxlbmFtZSA9IHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjppbnB1dF9hbGxcbmVuZFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBtYXhfaW50ID0gbWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5lbmRcblxubW9kdWxlIEVpdGhlciA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcbmVuZFxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgICgqIHNoYWRvdyBub24tdGFpbC1yZWN1cnNpdmUgZnVuY3Rpb25zICopXG4gICAgbGV0IG1lcmdlID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzb2MgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NxID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuXG4gICAgbGV0IHJldl9tYXBpIGxpc3QgfmYgPVxuICAgICAgbGV0IHJlYyByZXZfbWFwaV9hdCBsaXN0IGkgfmYgfmFjYyA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPiByZXZfbWFwaV9hdCB0YWlsIChpICsgMSkgfmYgfmFjYzooZiBpIGhlYWQgOjogYWNjKVxuICAgICAgaW5cbiAgICAgIHJldl9tYXBpX2F0IGxpc3QgMCB+ZiB+YWNjOltdXG5cbiAgICBsZXQgZm9sZF9yaWdodDIgbGlzdDEgbGlzdDIgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0MiAocmV2IGxpc3QxKSAocmV2IGxpc3QyKSB+aW5pdCB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgYWNjKVxuXG4gICAgbGV0IG1hcCBsaXN0IH5mID0gcmV2IChyZXZfbWFwIGxpc3QgfmYpXG4gICAgbGV0IG1hcGkgbGlzdCB+ZiA9IHJldiAocmV2X21hcGkgbGlzdCB+ZilcblxuICAgIGxldCBmb2xkX3JpZ2h0IGxpc3QgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0IChMaXN0LnJldiBsaXN0KSB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+IGYgeCBhY2MpXG5cbiAgICBsZXQgYXBwZW5kIHggeSA9IHJldl9hcHBlbmQgKHJldiB4KSB5XG4gICAgbGV0IGNvbmNhdCBsaXN0ID0gZm9sZF9yaWdodCBsaXN0IH5pbml0OltdIH5mOmFwcGVuZFxuXG4gICAgbGV0IHJldl9jb21iaW5lIGxpc3QxIGxpc3QyID1cbiAgICAgIGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+ICh4LCB5KSA6OiBhY2MpXG5cbiAgICBsZXQgY29tYmluZSBsaXN0MSBsaXN0MiA9IHJldiAocmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIpXG5cbiAgICBsZXQgc3BsaXQgbGlzdCA9XG4gICAgICBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6KFtdLCBbXSkgfmY6KGZ1biAoeCwgeSkgKHhzLCB5cykgLT5cbiAgICAgICAgICAoeCA6OiB4cywgeSA6OiB5cykpXG5cbiAgICBsZXQgbWFwMiBsaXN0MSBsaXN0MiB+ZiA9XG4gICAgICByZXYgKGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IDo6IGFjYykpXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gICAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBwIHggd2l0aFxuICAgICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbClcbiAgICBpblxuICAgIHBhcnQgW10gW10gbFxuXG4gIGxldCBpbml0IH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCB+bGVuIH5wb3MgfmYgfmFjYyA9XG4gICAgICBpZiBwb3MgPj0gbGVuIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICBlbHNlIGxvb3AgfmxlbiB+cG9zOihwb3MgKyAxKSB+ZiB+YWNjOihmIHBvcyA6OiBhY2MpXG4gICAgaW5cbiAgICBsb29wIH5sZW4gfnBvczowIH5mIH5hY2M6W11cblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBbXSAtPiB0cnVlIHwgXyA6OiBfIC0+IGZhbHNlXG5cbiAgbGV0IHJldl9maWx0ZXJfb3B0IGxpc3QgPVxuICAgIGZvbGRfbGVmdCBsaXN0IH5pbml0OltdIH5mOihmdW4gdGFpbCBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGggTm9uZSAtPiB0YWlsIHwgU29tZSBoZWFkIC0+IGhlYWQgOjogdGFpbClcblxuICBsZXQgZmlsdGVyX29wdCBsaXN0ID0gcmV2IChyZXZfZmlsdGVyX29wdCBsaXN0KVxuICBsZXQgZmlsdGVyX21hcCBsaXN0IH5mID0gcmV2X2ZpbHRlcl9vcHQgKHJldl9tYXAgbGlzdCB+ZilcbiAgbGV0IGNvbmNhdF9tYXAgbGlzdCB+ZiA9IGNvbmNhdCAobWFwIGxpc3QgfmYpXG5cbiAgbGV0IHJlYyBmaW5kX21hcCBsaXN0IH5mID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGhlYWQgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGYgaGVhZCB3aXRoIFNvbWUgXyBhcyBzb21lIC0+IHNvbWUgfCBOb25lIC0+IGZpbmRfbWFwIHRhaWwgfmYpXG5cbiAgbGV0IGZpbmRfbWFwX2V4biBsaXN0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCBsaXN0IH5mIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG4gIGxldCByZWMgbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbIHggXSAtPiBTb21lIHhcbiAgICB8IF8gOjogKF8gOjogXyBhcyByZXN0KSAtPiBsYXN0IHJlc3RcblxuICBsZXQgc3BsaXRfd2hpbGUgbGlzdCB+ZiA9XG4gICAgbGV0IHJlYyBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYyA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gZiBoZWFkIC0+IHNwbGl0X3doaWxlX2ludG8gdGFpbCB+ZiB+YWNjOihoZWFkIDo6IGFjYylcbiAgICAgIHwgXyA6OiBfIHwgW10gLT4gKExpc3QucmV2IGFjYywgbGlzdClcbiAgICBpblxuICAgIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjOltdXG5cbiAgbGV0IGZpbmRfYV9kdXAgKHR5cGUgZWx0KSBsaXN0IH5jb21wYXJlID1cbiAgICBsZXQgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZWx0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZCBpblxuICAgIGxldCBtb2R1bGUgRWx0X3NldCA9IFNldC5NYWtlIChFbHQpIGluXG4gICAgbGV0IHJlYyBmaW5kX2FfZHVwX2luIGxpc3QgfnNldCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBFbHRfc2V0Lm1lbSBoZWFkIHNldCB0aGVuIFNvbWUgaGVhZFxuICAgICAgICAgIGVsc2UgZmluZF9hX2R1cF9pbiB0YWlsIH5zZXQ6KEVsdF9zZXQuYWRkIGhlYWQgc2V0KVxuICAgIGluXG4gICAgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQ6RWx0X3NldC5lbXB0eVxuXG4gIGxldCBhc3NvY19vcHQga2V5IGFsaXN0ID1cbiAgICBtYXRjaCBhc3NvYyBrZXkgYWxpc3Qgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gICgqIHJlb3JkZXJzIGFyZ3VtZW50cyB0byBpbXByb3ZlIHR5cGUgaW5mZXJlbmNlICopXG4gIGxldCBpdGVyIGxpc3QgfmYgPSBpdGVyIGxpc3QgfmZcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG4gIGxldCBpdGVyIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG4gIGxldCB0b19saXN0IHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBbXSB8IFNvbWUgeCAtPiBbIHggXVxuZW5kXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGYgYSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGhhbmRsZV9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gYSB8IEVycm9yIGUgLT4gZiBlXG5lbmRcblxubW9kdWxlIE5vbkVtcHR5TGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqICdhIGxpc3RcblxuICBsZXQgKCBAICkgKHQxLCBxMSkgKHQyLCBxMikgPSAodDEsIHExIEAgKHQyIDo6IHEyKSlcbiAgbGV0IGhkID0gZnN0XG4gIGxldCB0b19saXN0ICh0LCBxKSA9IHQgOjogcVxuICBsZXQgbWFwIH5mICh0LCBxKSA9IChmIHQsIExpc3QubWFwIH5mIHEpXG5lbmRcblxubW9kdWxlIE91dF9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSA/KGFwcGVuZCA9IGZhbHNlKSA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NikgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2Vfb3V0XG5cbiAgbGV0IHdyaXRlX2FsbCBmaWxlbmFtZSB+ZGF0YSA9XG4gICAgd2l0aF9maWxlIGZpbGVuYW1lIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGlzX2VtcHR5ICh0IDogdCkgPSBsZW5ndGggdCA9IDBcbiAgbGV0IHByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuXG4gIGxldCBzdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOihsZW5ndGggdCAtIGxlbikgfmxlblxuICBsZXQgZHJvcF9wcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOmxlbiB+bGVuOihsZW5ndGggdCAtIGxlbilcbiAgbGV0IGRyb3Bfc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuXG4gIGxldCBpc19wcmVmaXggdCB+cHJlZml4ID1cbiAgICBsZXQgcmVjIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlblxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgcG9zKSAoZ2V0IHByZWZpeCBwb3MpXG4gICAgICAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczoocG9zICsgMSkgfmxlblxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHByZWZpeFxuICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOjAgfmxlbjoobGVuZ3RoIHByZWZpeClcblxuICBsZXQgaXNfc3VmZml4IHQgfnN1ZmZpeCA9XG4gICAgbGV0IHJlYyBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3MgfnN1ZmZpeF9vZmZzZXQgPVxuICAgICAgcG9zIDwgMFxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgKHN1ZmZpeF9vZmZzZXQgKyBwb3MpKSAoZ2V0IHN1ZmZpeCBwb3MpXG4gICAgICAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3M6KHBvcyAtIDEpIH5zdWZmaXhfb2Zmc2V0XG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggc3VmZml4XG4gICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeFxuICAgICAgICAgfnBvczoobGVuZ3RoIHN1ZmZpeCAtIDEpXG4gICAgICAgICB+c3VmZml4X29mZnNldDoobGVuZ3RoIHQgLSBsZW5ndGggc3VmZml4KVxuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgbGV0IHJlYyBleGlzdHNfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zIDwgbGVuICYmIChmIChnZXQgdCBwb3MpIHx8IGV4aXN0c19hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBleGlzdHNfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgbGV0IHJlYyBmb3JfYWxsX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW4gfHwgKGYgKGdldCB0IHBvcykgJiYgZm9yX2FsbF9hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBmb3JfYWxsX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCBpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGhcbiAgICB8IGkgLT4gU29tZSBpXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgbHNwbGl0MiB0IH5vbiA9XG4gICAgbWF0Y2ggaW5kZXhfb3B0IHQgb24gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICAgU29tZSAoc3ViIHQgfnBvczowIH5sZW46aSwgc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpKVxuXG4gIGxldCBjYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBsb3dlcmNhc2VfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdW5jYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IHNwbGl0X29uX2NoYXIgdCB+c2VwID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyIHNlcCB0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHN0cmluZylcblxuICBtb2R1bGUgTWFwID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgbGV0IGZpbmRfb3B0IGtleSB0ID1cbiAgICAgIG1hdGNoIGZpbmQga2V5IHQgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICBlbmRcblxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFN0cmluZylcbmVuZFxuXG5sZXQgKCBAICkgPSBMaXN0LmFwcGVuZFxubGV0IG91dHB1dCBvYyBieXRlcyB+cG9zIH5sZW4gPSBvdXRwdXQgb2MgYnl0ZXMgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIH5wb3MgfmxlbiA9IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIHBvcyBsZW5cbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTCA9IEFzdGxpYi5Mb2NhdGlvblxuXG50eXBlIHQgPSBsb2NhdGlvbiA9IHtcbiAgbG9jX3N0YXJ0IDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZW5kIDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5sZXQgaW5fZmlsZSBuYW1lID1cbiAgbGV0IGxvYyA9IHsgcG9zX2ZuYW1lID0gbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAtMSB9IGluXG4gIHsgbG9jX3N0YXJ0ID0gbG9jOyBsb2NfZW5kID0gbG9jOyBsb2NfZ2hvc3QgPSB0cnVlIH1cblxubGV0IHNldF9maWxlbmFtZSBsb2MgZm4gPVxuICBsZXQgbG9jX3N0YXJ0ID0geyBsb2MubG9jX3N0YXJ0IHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICBsZXQgbG9jX2VuZCA9IHsgbG9jLmxvY19lbmQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIHsgbG9jIHdpdGggbG9jX3N0YXJ0OyBsb2NfZW5kIH1cblxubGV0IG5vbmUgPSBpbl9maWxlIFwiX25vbmVfXCJcblxubGV0IGluaXQgbGV4YnVmIGZuYW1lID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAwIH1cblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIGZtdCA9IEwucmFpc2VfZXJyb3JmID9sb2MgZm10XG5sZXQgcmVwb3J0X2V4Y2VwdGlvbiA9IEwucmVwb3J0X2V4Y2VwdGlvblxuXG5sZXQgb2ZfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIHtcbiAgICBsb2Nfc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgbG9jX2VuZCA9IGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICB9XG5cbmxldCBwcmludCBwcGYgdCA9XG4gIFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XCJcbiAgICB0LmxvY19zdGFydC5wb3NfZm5hbWUgdC5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAodC5sb2Nfc3RhcnQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuICAgICh0LmxvY19lbmQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuXG50eXBlIG5vbnJlYyAnYSBsb2MgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiB0IH1cblxubGV0IGNvbXBhcmVfcG9zIHAxIHAyID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxldCBjb2x1bW4gcCA9XG4gICAgKCogTWFudWFsIGV4dHJhY3Q6XG4gICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3NfY251bSBhbmQgcG9zX2JvbCBpcyB0aGUgY2hhcmFjdGVyIG9mZnNldFxuICAgICAgIHdpdGhpbiB0aGUgbGluZSAoaS5lLiB0aGUgY29sdW1uIG51bWJlciwgYXNzdW1pbmcgZWFjaCBjaGFyYWN0ZXIgaXNcbiAgICAgICBvbmUgY29sdW1uIHdpZGUpLiAqKVxuICAgIHAucG9zX2NudW0gLSBwLnBvc19ib2xcbiAgaW5cbiAgbWF0Y2ggSW50LmNvbXBhcmUgcDEucG9zX2xudW0gcDIucG9zX2xudW0gd2l0aFxuICB8IDAgLT4gSW50LmNvbXBhcmUgKGNvbHVtbiBwMSkgKGNvbHVtbiBwMilcbiAgfCBuIC0+IG5cblxubGV0IG1pbl9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA8PSAwIHRoZW4gcDEgZWxzZSBwMlxubGV0IG1heF9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA+PSAwIHRoZW4gcDEgZWxzZSBwMlxuXG5sZXQgY29tcGFyZSBsb2MxIGxvYzIgPVxuICBtYXRjaCBjb21wYXJlX3BvcyBsb2MxLmxvY19zdGFydCBsb2MyLmxvY19zdGFydCB3aXRoXG4gIHwgMCAtPiBjb21wYXJlX3BvcyBsb2MxLmxvY19lbmQgbG9jMi5sb2NfZW5kXG4gIHwgbiAtPiBuXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBpbmNsdWRlIFBweGxpYl9hc3QuTG9jYXRpb25fZXJyb3JcblxuICBsZXQgY3JlYXRlZiB+bG9jIGZtdCA9IEZvcm1hdC5rYXNwcmludGYgKGZ1biBzdHIgLT4gbWFrZSB+bG9jIH5zdWI6W10gc3RyKSBmbXRcbmVuZFxuXG5sZXQgZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIGZtdCA9XG4gIEZvcm1hdC5rYXNwcmludGZcbiAgICAoZnVuIHN0ciAtPiBFcnJvci50b19leHRlbnNpb24gQEAgRXJyb3IubWFrZSB+bG9jIH5zdWI6W10gc3RyKVxuICAgIGZtdFxuXG5leGNlcHRpb24gRXJyb3IgPSBMLkVycm9yXG5cbmxldCAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgIHwgRXJyb3IgZSAtPiBTb21lIChFcnJvci5tZXNzYWdlIGUpXG4gICAgfCBfIC0+IE5vbmUpXG4iLCJvcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEV4cGVjdGVkIG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IGZhaWwgbG9jIGV4cGVjdGVkID0gcmFpc2UgKEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSlcblxudHlwZSBjb250ZXh0ID0ge1xuICAoKiBbbWF0Y2hlZF0gY291bnRzIGhvdyBtYW55IGNvbnN0cnVjdG9ycyBoYXZlIGJlZW4gbWF0Y2hlZC4gVGhpcyBpcyB1c2VkIHRvIGZpbmQgd2hhdFxuICAgICBwYXR0ZXJuIG1hdGNoZXMgdGhlIG1vc3Qgc29tZSBwaWVjZSBvZiBhc3QgaW4gW0FzdF9wYXR0ZXJuLmFsdF0uIEluIHRoZSBjYXNlIHdoZXJlXG4gICAgIGFsbCBicmFuY2hlcyBmYWlsIHRvIG1hdGNoLCB3ZSByZXBvcnQgdGhlIGVycm9yIGZyb20gdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlXG4gICAgIG1vc3QuXG5cbiAgICAgVGhpcyBpcyBvbmx5IGluY3JlbWVudGVkIGJ5IGNvbWJpbmF0b3JzIHRoYXQgY2FuIGZhaWwuICopXG4gIG11dGFibGUgbWF0Y2hlZCA6IGludDtcbn1cblxudHlwZSAoJ21hdGNoZWRfdmFsdWUsICdrLCAna19yZXN1bHQpIHQgPVxuICB8IFQgb2YgKGNvbnRleHQgLT4gTG9jYXRpb24udCAtPiAnbWF0Y2hlZF92YWx1ZSAtPiAnayAtPiAna19yZXN1bHQpXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIE0gPVxuICBzdHJ1Y3RcbiAgICBsZXQgYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnBheWxvYWQgLT5cbiAgICAgICAgICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgYmluZGluZ19vcCB+bG9jICA9XG4gICAgICAoKGZ1biB+b3AgLT5cbiAgICAgICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgICAgICgoZnVuIH5leHAgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9vcCA9IG9wO1xuICAgICAgICAgICAgICAgICAgICBwYm9wX3BhdCA9IHBhdDtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9leHAgPSBleHA7XG4gICAgICAgICAgICAgICAgICAgIHBib3BfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjYXNlIH5saHMgID1cbiAgICAgICgoZnVuIH5ndWFyZCAtPlxuICAgICAgICAgICgoZnVuIH5yaHMgLT4geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfc3RydWN0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZnVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9sZXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfdmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX21ldGhvZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX2luZm9zIH5sb2MgID1cbiAgICAgICgoZnVuIH52aXJ0IC0+XG4gICAgICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9hcnJvdyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl92YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9tZXRob2QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfbWV0aG9kIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfY29uc3RyYWludCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnZhcnMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmFyZ3MgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5yZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYXJyb3cgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF90dXBsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX29iamVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcG9seSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcGFja2FnZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9zdHJpbmcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2ludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2Jvb2wgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZnVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbWF0Y2ggfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF90cnkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHVwbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF92YXJpYW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9yZWNvcmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZmllbGQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FycmF5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3doaWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZm9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4geDQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29lcmNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlbmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ldyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX292ZXJyaWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Fzc2VydCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xhenkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcG9seSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb2JqZWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbmV3dHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRvcCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgaW5jbHVkZV9pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biBtb2RfIC0+XG4gICAgICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+bXV0YWJsZV8gLT5cbiAgICAgICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgICAgICAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGV0b3AgfmxldF8gID1cbiAgICAgICgoZnVuIH5hbmRzIC0+ICgoZnVuIH5ib2R5IC0+IHsgbGV0XzsgYW5kczsgYm9keSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgID1cbiAgICAgICgoZnVuIH5lbmRfIC0+XG4gICAgICAgICAgKChmdW4gfmdob3N0IC0+XG4gICAgICAgICAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbWJfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1iX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1iX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbWRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1kX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtZF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9mdW5jdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfYXBwbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3VucGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9zaWduYXR1cmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV93aXRoIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfdHlwZW9mIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3RhZyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBvZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3Blbl9pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICgoZnVuIH5vdmVycmlkZSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0YW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R1cGxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfcmVjb3JkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FycmF5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9vciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfbGF6eSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF91bnBhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICA9XG4gICAgICAoKGZ1biB+bG51bSAtPlxuICAgICAgICAgICgoZnVuIH5ib2wgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNudW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2ZuYW1lID0gZm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gbG51bTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IGJvbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJ0YWcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwcmZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcmluaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ192YWx1ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXh0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4Y2VwdGlvbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHR5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19pbmNsdWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2NsYXNzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9ldmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl92YWx1ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGV4dCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX21vZHR5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9pbmNsdWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmFyZyAtPiB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNzdHJzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIGNvbnN0cnVjdG9yIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+cGF0aCAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNvbnN0cnVjdG9ycyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfYmluZGluZyB+bG9jICA9XG4gICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB2Yl9wYXQgPSBwYXQ7XG4gICAgICAgICAgICAgICAgcHZiX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHZiX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAgKChmdW4gfnByaW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgZW5kXG5tb2R1bGUgTWFrZShMb2M6c2lnIHZhbCBsb2MgOiBMb2NhdGlvbi50IGVuZCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgbG9jID0gTG9jLmxvY1xuICAgIGxldCBhdHRyaWJ1dGUgfm5hbWUgID1cbiAgICAgICgoZnVuIH5wYXlsb2FkIC0+XG4gICAgICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGJpbmRpbmdfb3Agfm9wICA9XG4gICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgKChmdW4gfmV4cCAtPlxuICAgICAgICAgICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjYXNlIH5saHMgID1cbiAgICAgICgoZnVuIH5ndWFyZCAtPlxuICAgICAgICAgICgoZnVuIH5yaHMgLT4geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MCkgfVxuICAgIGxldCBwY2xfZnVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfYXBwbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2xldCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfaW5oZXJpdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfdmFsIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfVxuICAgIGxldCBwY2ZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9jb25zdHJhaW50IHgwKSB9XG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9pbml0aWFsaXplciB4MCkgfVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBjbGFzc19pbmZvcyB+dmlydCAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgICAgICAgICAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfYXJyb3cgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9pbmhlcml0IHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dmFycyAtPlxuICAgICAgICAgICgoZnVuIH5hcmdzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5yZXMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgICAgICAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FueSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfb2JqZWN0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY2xhc3MgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FsaWFzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcG9seSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9wYWNrYWdlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wYWNrYWdlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZGlyX3N0cmluZyB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9XG4gICAgbGV0IHBkaXJfaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pZGVudCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH1cbiAgICBsZXQgcGRpcl9ib29sIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9XG4gICAgbGV0IHBleHBfaWRlbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FwcGx5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9tYXRjaCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHJ5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcmVjb3JkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZmllbGQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGZpZWxkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VxdWVuY2UgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3doaWxlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mb3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4geDQgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29lcmNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZW5kIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ldyB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXNzZXJ0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX29iamVjdCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldG9wIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWUgID1cbiAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBpbmNsdWRlX2luZm9zIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+bXV0YWJsZV8gLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICAgICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxldG9wIH5sZXRfICA9XG4gICAgICAoKGZ1biB+YW5kcyAtPiAoKGZ1biB+Ym9keSAtPiB7IGxldF87IGFuZHM7IGJvZHkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICA9XG4gICAgICAoKGZ1biB+ZW5kXyAtPlxuICAgICAgICAgICgoZnVuIH5naG9zdCAtPlxuICAgICAgICAgICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWUgID1cbiAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtYl9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbWRfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2lkZW50IHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MCkgfVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9hcHBseSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfdW5wYWNrIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApIH1cbiAgICBsZXQgcG1vZF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9pZGVudCB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApIH1cbiAgICBsZXQgcG10eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9mdW5jdG9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfd2l0aCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3R5cGVvZiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBvdGFnIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb2luaGVyaXQgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5leHByICA9XG4gICAgICAoKGZ1biB+b3ZlcnJpZGUgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3JlY29yZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90eXBlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICA9XG4gICAgICAoKGZ1biB+bG51bSAtPlxuICAgICAgICAgICgoZnVuIH5ib2wgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNudW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2ZuYW1lID0gZm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gbG51bTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IGJvbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJ0YWcgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcmZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCByaW5oZXJpdCB4MCA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9XG4gICAgbGV0IHBzaWdfdmFsdWUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4geDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V2YWwgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdmFsdWUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGV4dCB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdHlwZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9vcGVuIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH1cbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9pbmNsdWRlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24geDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lICA9XG4gICAgICAoKGZ1biB+YXJnIC0+IHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5jc3RycyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfnBhdGggID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+Y29uc3RydWN0b3JzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfYmluZGluZyB+cGF0ICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBwYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHZiX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICgoZnVuIH5wcmltIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogTG9jYXRpb24udCB9XG5cbmxldCB0eHQgdCA9IHQudHh0XG5sZXQgbG9jIHQgPSB0LmxvY1xubGV0IG1ha2UgfmxvYyB0eHQgPSB7IGxvYzsgdHh0IH1cbmxldCBtYXAgdCB+ZiA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGxvbmdpZGVudCA9IExpZGVudCBvZiBzdHJpbmcgfCBMZG90IG9mIHQgKiBzdHJpbmcgfCBMYXBwbHkgb2YgdCAqIHRcblxuICBsZXQgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50X2NoYXIgPSBmdW5jdGlvblxuICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJ18nIHwgJ1xcJycgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnQgPSBmdW5jdGlvblxuICAgIHwgXCJhc3JcIiB8IFwibGFuZFwiIHwgXCJsb3JcIiB8IFwibHNsXCIgfCBcImxzclwiIHwgXCJseG9yXCIgfCBcIm1vZFwiIHwgXCJvclwiIC0+IGZhbHNlXG4gICAgfCBzdHJpbmcgLT4gU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOmlzX25vcm1hbF9pZGVudF9jaGFyXG5cbiAgbGV0IHNob3J0X25hbWUgc3RyaW5nID1cbiAgICBpZiBpc19ub3JtYWxfaWRlbnQgc3RyaW5nIHRoZW4gc3RyaW5nIGVsc2UgXCIoIFwiIF4gc3RyaW5nIF4gXCIgKVwiXG5cbiAgbGV0IHJlYyBuYW1lID0gZnVuY3Rpb25cbiAgICB8IExpZGVudCBzIC0+IHNob3J0X25hbWUgc1xuICAgIHwgTGRvdCAoYSwgYikgLT4gbmFtZSBhIF4gXCIuXCIgXiBzaG9ydF9uYW1lIGJcbiAgICB8IExhcHBseSAoYSwgYikgLT4gUHJpbnRmLnNwcmludGYgXCIlcyglcylcIiAobmFtZSBhKSAobmFtZSBiKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAobmFtZSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgcmVjIGZsYXQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcyA6OiBhY2N1XG4gIHwgTGRvdCAobGlkLCBzKSAtPiBmbGF0IChzIDo6IGFjY3UpIGxpZFxuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgZmxhdHRlbl9leG4gbGlkID0gZmxhdCBbXSBsaWRcblxubGV0IGxhc3RfZXhuID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzXG4gIHwgTGRvdCAoXywgcykgLT4gc1xuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgdW5mbGF0dGVuIH5pbml0IGwgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOihmdW4gYWNjIHMgLT4gTGRvdCAoYWNjLCBzKSlcblxuKCogZm9yIGNhc2VzIHdpdGhvdXQgZG90dGVkIG9wZXJhdG9ycyAoZS5nLiBbcGFyc2UgXCJBLkIuQ1wiXSkgKilcbmxldCBwYXJzZV9zaW1wbGUgcyA9XG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLicgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IHMgOjogbCAtPiB1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsXG5cbigqIGhhbmRsZSBbXCJBLkIuKCsuKylcIl0gb3IgW1wiVmVjLiguJS4oKTwtKVwiXSAqKVxubGV0IHBhcnNlIHMgPVxuICBsZXQgaW52YWxpZCAoKSA9XG4gICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwiUHB4bGliLkxvbmdpZGVudC5wYXJzZTogJVNcIiBzKVxuICBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPCAxIHRoZW4gaW52YWxpZCAoKTtcbiAgbGV0IG9wZW5fcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcoJyBpblxuICBsZXQgY2xvc2VfcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcpJyBpblxuICBtYXRjaCAocy5bMF0sIG9wZW5fcGFyLCBjbG9zZV9wYXIpIHdpdGhcbiAgfCAoJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnXycpLCBOb25lLCBOb25lIC0+IHBhcnNlX3NpbXBsZSBzXG4gIHwgXywgTm9uZSwgTm9uZSAtPiBMaWRlbnQgcyAoKiBUaGlzIGlzIGEgcmF3IG9wZXJhdG9yLCBubyBtb2R1bGUgcGF0aCAqKVxuICB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+IGludmFsaWQgKClcbiAgfCBfLCBTb21lIGwsIFNvbWUgciAtPiAoXG4gICAgICBpZiBJbnQuKHIgPD4gU3RyaW5nLmxlbmd0aCBzIC0gMSkgdGhlbiBpbnZhbGlkICgpO1xuICAgICAgbGV0IGdyb3VwID1cbiAgICAgICAgaWYgSW50LihyID0gbCArIDEpIHRoZW4gXCIoKVwiXG4gICAgICAgIGVsc2UgU3RyaW5nLnRyaW0gKFN0cmluZy5zdWIgcyB+cG9zOihsICsgMSkgfmxlbjoociAtIGwgLSAxKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQuKGwgPSAwKSB0aGVuIExpZGVudCBncm91cFxuICAgICAgZWxzZSBpZiBDaGFyLihzLltsIC0gMV0gPD4gJy4nKSB0aGVuIGludmFsaWQgKClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGJlZm9yZSA9IFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjoobCAtIDEpIGluXG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIGJlZm9yZSB+c2VwOicuJyB3aXRoXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgcyA6OiBsIC0+IExkb3QgKHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGwsIGdyb3VwKSlcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlIChUKVxubW9kdWxlIFNldCA9IFNldC5NYWtlIChUKVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBEZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTG9jLnRcblxuICAgIGxldCBsb2MgKHggOiBfIHQpID0geC5sb2NcbiAgICBsZXQgbWsgfmxvYyB4ID0geyBsb2M7IHR4dCA9IHggfVxuICAgIGxldCBtYXAgZiB0ID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4gICAgbGV0IG1hcF9saWRlbnQgeCA9IG1hcCAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4XG4gICAgbGV0IGxpZGVudCB+bG9jIHggPSBtayB+bG9jIChMb25naWRlbnQucGFyc2UgeClcbiAgZW5kXG5cbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NIC0tLS0tKilcbiAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCB2YnMgLT4gWyBwc3RyX3ZhbHVlIH5sb2MgcmVjX2ZsYWcgdmJzIF1cblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYzpfIH5uYW1lOl8gfnBhcmFtczpfIH5jc3RyczpfIH5raW5kOl9cbiAgICAgIH5wcml2YXRlXzpfIH5tYW5pZmVzdDpfID1cbiAgICBmYWlsd2l0aFxuICAgICAgXCJQcHhsaWIuQXN0X2J1aWxkZXIubm9ucmVjX3R5cGVfZGVjbGFyYXRpb246IGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uXCJcblxuICBsZXQgZWludCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgZWNoYXIgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgZXN0cmluZyB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBlZmxvYXQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBlaW50MzIgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBlaW50NjQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBlbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IHBpbnQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IHBjaGFyIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IHBzdHJpbmcgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgcGZsb2F0IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgcGludDMyIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgcGludDY0IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgcG5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBlYm9vbCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IHBib29sIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgZXZhciB+bG9jIHYgPSBwZXhwX2lkZW50IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHYpKVxuICBsZXQgcHZhciB+bG9jIHYgPSBwcGF0X3ZhciB+bG9jIChMb2NhdGVkLm1rIH5sb2MgdilcbiAgbGV0IGV1bml0IH5sb2MgPSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcHVuaXQgfmxvYyA9IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwZXhwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHB0eXBfdHVwbGUgfmxvYyBsXG5cbiAgbGV0IHBleHBfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocGV4cF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHBwYXRfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocHBhdF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHB0eXBfcG9seSB+bG9jIHZhcnMgdHkgPVxuICAgIG1hdGNoIHZhcnMgd2l0aCBbXSAtPiB0eSB8IF8gLT4gcHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuXG4gIGxldCBwZXhwX2FwcGx5IH5sb2MgZSBlbCA9XG4gICAgbWF0Y2ggKGUsIGVsKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBlXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LCBfIC0+XG4gICAgICAgIHsgZSB3aXRoIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MgQCBlbCkgfVxuICAgIHwgXyAtPiBwZXhwX2FwcGx5IH5sb2MgZSBlbFxuXG4gIGxldCBlYXBwbHkgfmxvYyBlIGVsID1cbiAgICBwZXhwX2FwcGx5IH5sb2MgZSAoTGlzdC5tYXAgZWwgfmY6KGZ1biBlIC0+IChBc3R0eXBlcy5Ob2xhYmVsLCBlKSkpXG5cbiAgbGV0IGVhYnN0cmFjdCB+bG9jIHBzIGUgPVxuICAgIExpc3QuZm9sZF9yaWdodCBwcyB+aW5pdDplIH5mOihmdW4gcCBlIC0+XG4gICAgICAgIHBleHBfZnVuIH5sb2MgQXN0dHlwZXMuTm9sYWJlbCBOb25lIHAgZSlcblxuICBsZXQgZXNlcXVlbmNlIH5sb2MgZWwgPVxuICAgIG1hdGNoIExpc3QucmV2IGVsIHdpdGhcbiAgICB8IFtdIC0+IGV1bml0IH5sb2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHRsIH5pbml0OmhkIH5mOihmdW4gYWNjIGUgLT4gcGV4cF9zZXF1ZW5jZSB+bG9jIGUgYWNjKVxuXG4gIGxldCBwY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCBlY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCByZWMgZWxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocGV4cF90dXBsZSB+bG9jIFsgeDsgZWxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCByZWMgcGxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocHBhdF90dXBsZSB+bG9jIFsgeDsgcGxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IH5sb2MgKGlkZW50IDogTG9uZ2lkZW50LnQpIH5mID1cbiAgICBtYXRjaCBpZGVudCB3aXRoXG4gICAgfCBMaWRlbnQgbiAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMaWRlbnQgKGYgbik7IGxvYyB9XG4gICAgfCBMZG90IChwYXRoLCBuKSAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMZG90IChwYXRoLCBmIG4pOyBsb2MgfVxuICAgIHwgTGFwcGx5IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bmV4cGVjdGVkIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZVwiXG5cbiAgbGV0IHR5cGVfY29uc3RyX2NvbnYgfmxvYzphcHBseV9sb2MgeyBMb2MubG9jOyB0eHQgPSBsb25naWRlbnQgfSB+ZiBhcmdzID1cbiAgICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCAobG9uZ2lkZW50IDogTG9uZ2lkZW50LnQpIHdpdGhcbiAgICB8IExpZGVudCBfIHwgTGRvdCAoKExpZGVudCBfIHwgTGRvdCBfKSwgXykgfCBMYXBwbHkgXyAtPiAoXG4gICAgICAgIGxldCBpZGVudCA9XG4gICAgICAgICAgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBsb25naWRlbnQgfmxvYyB+ZlxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpZGVudFxuICAgICAgICB8IF8gOjogXyAtPiBlYXBwbHkgfmxvYzphcHBseV9sb2MgaWRlbnQgYXJncylcbiAgICB8IExkb3QgKChMYXBwbHkgXyBhcyBtb2R1bGVfcGF0aCksIG4pIC0+XG4gICAgICAgIGxldCBzdWZmaXhfbiBmdW5jdG9yXyA9IFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZnVuY3Rvcl8gXiBcIl9fXCIgXiBuIGluXG4gICAgICAgIGxldCByZWMgZ2F0aGVyX2xhcHBseSBmdW5jdG9yX2FyZ3MgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCAqIF8gPVxuICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBMYXBwbHkgKHJlc3QsIGFyZykgLT4gZ2F0aGVyX2xhcHBseSAoYXJnIDo6IGZ1bmN0b3JfYXJncykgcmVzdFxuICAgICAgICAgIHwgTGlkZW50IGZ1bmN0b3JfIC0+IChMaWRlbnQgKHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICAgIHwgTGRvdCAoZnVuY3Rvcl9wYXRoLCBmdW5jdG9yXykgLT5cbiAgICAgICAgICAgICAgKExkb3QgKGZ1bmN0b3JfcGF0aCwgc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpZGVudCwgZnVuY3Rvcl9hcmdzID0gZ2F0aGVyX2xhcHBseSBbXSBtb2R1bGVfcGF0aCBpblxuICAgICAgICBlYXBwbHkgfmxvYzphcHBseV9sb2NcbiAgICAgICAgICAodW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBpZGVudCB+bG9jIH5mKVxuICAgICAgICAgIChMaXN0Lm1hcCBmdW5jdG9yX2FyZ3MgfmY6KGZ1biBwYXRoIC0+XG4gICAgICAgICAgICAgICBwZXhwX3BhY2sgfmxvYyAocG1vZF9pZGVudCB+bG9jIHsgdHh0ID0gcGF0aDsgbG9jIH0pKVxuICAgICAgICAgIEAgYXJncylcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBsb25naWRlbnQgfmYgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgbG9uZ2lkZW50IH5sb2MgfmYgW11cblxuICBsZXQgZXRhX3JlZHVjZSA9XG4gICAgbGV0IHJlYyBnYXRoZXJfcGFyYW1zIGFjYyBleHByID1cbiAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgIFBleHBfZnVuIChsYWJlbCwgTm9uZSAoKiBubyBkZWZhdWx0IGV4cHJlc3Npb24gKiksIHN1YnBhdCwgYm9keSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgIH0gLT4gKFxuICAgICAgICAgIG1hdGNoIHN1YnBhdCB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgTm9uZSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHR5ICk7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICgqIFdlIHJlZHVjZSBbZnVuICh4IDogdHkpIC0+IGYgeF0gYnkgcmV3cml0aW5nIGl0IFsoZiA6IHR5IC0+IF8pXS4gKilcbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBTb21lIHR5KSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcikpXG4gICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcilcbiAgICBpblxuICAgIGxldCBhbm5vdGF0ZSB+bG9jIGV4cHIgcGFyYW1zID1cbiAgICAgIGlmIExpc3QuZXhpc3RzIHBhcmFtcyB+ZjooZnVuIChfLCBfLCB0eSkgLT4gT3B0aW9uLmlzX3NvbWUgdHkpIHRoZW5cbiAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgcGFyYW1zIH5pbml0OihwdHlwX2FueSB+bG9jKVxuICAgICAgICAgICAgfmY6KGZ1biAocGFyYW1fbGFiZWwsIHBhcmFtLCB0eV9vcHQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgbG9jID0gcGFyYW0ubG9jIGluXG4gICAgICAgICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdHlfb3B0IHdpdGggTm9uZSAtPiBwdHlwX2FueSB+bG9jIHwgU29tZSB0eSAtPiB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwdHlwX2Fycm93IH5sb2MgcGFyYW1fbGFiZWwgdHkgYWNjKVxuICAgICAgICBpblxuICAgICAgICBwZXhwX2NvbnN0cmFpbnQgfmxvYyBleHByIHR5XG4gICAgICBlbHNlIGV4cHJcbiAgICBpblxuICAgIGxldCByZWMgZ2F0aGVyX2FyZ3MgbiB4ID1cbiAgICAgIGlmIG4gPSAwIHRoZW4gU29tZSAoeCwgW10pXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGJvZHksIGFyZ3MpO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGFyZ3MgPD0gbiB0aGVuXG4gICAgICAgICAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChuIC0gTGlzdC5sZW5ndGggYXJncykgYm9keSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSAoYm9keSwgYXJncycpIC0+IFNvbWUgKGJvZHksIGFyZ3MnIEAgYXJncylcbiAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgZnVuIGV4cHIgLT5cbiAgICAgIGxldCBwYXJhbXMsIGJvZHkgPSBnYXRoZXJfcGFyYW1zIFtdIGV4cHIgaW5cbiAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChMaXN0Lmxlbmd0aCBwYXJhbXMpIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gYXMgZl9pZGVudCksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsMiBhcmdzIHBhcmFtc1xuICAgICAgICAgICAgICB+ZjooZnVuIChhcmdfbGFiZWwsIGFyZykgKHBhcmFtX2xhYmVsLCBwYXJhbSwgXykgLT5cbiAgICAgICAgICAgICAgICBQb2x5LiggPSApIChhcmdfbGFiZWwgOiBhcmdfbGFiZWwpIHBhcmFtX2xhYmVsXG4gICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IG5hbWUnOyBfIH07XG4gICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgIFN0cmluZy4oID0gKSBuYW1lJyBwYXJhbS50eHRcbiAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPiBTb21lIChhbm5vdGF0ZSB+bG9jOmV4cHIucGV4cF9sb2MgZl9pZGVudCBwYXJhbXMpKVxuICAgICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByID0gT3B0aW9uLnZhbHVlIChldGFfcmVkdWNlIGV4cHIpIH5kZWZhdWx0OmV4cHJcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIGV4cHIgfnJlY19mbGFnID1cbiAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgfCBSZWN1cnNpdmUgLT4gZXhwclxuICAgIHwgTm9ucmVjdXJzaXZlIC0+IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwclxuZW5kXG5cbm1vZHVsZSB0eXBlIExvYyA9IEFzdF9idWlsZGVyX2ludGYuTG9jXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9pbnRmLlNcblxuICBtb2R1bGUgTGF0ZXN0IDogc2lnXG4gICAgdmFsIHBwYXRfY29uc3RydWN0IDpcbiAgICAgIGxvbmdpZGVudCBsb2MgLT4gKGxhYmVsIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uIC0+IHBhdHRlcm5cblxuICAgIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgICAgdmFyczpsYWJlbCBsb2MgbGlzdCAtPlxuICAgICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgICB1bml0IC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBlbmRcblxuICB2YWwgcHBhdF9jb25zdHJ1Y3QgOiBsb25naWRlbnQgbG9jIC0+IHBhdHRlcm4gb3B0aW9uIC0+IHBhdHRlcm5cblxuICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG5lbmRcblxubW9kdWxlIE1ha2UgKExvYyA6IHNpZ1xuICB2YWwgbG9jIDogTG9jYXRpb24udFxuZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKSAtLS0tLSopXG5cbiAgbGV0IHBwYXRfY29uc3RydWN0IGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgPSBEZWZhdWx0LnBzdHJfdmFsdWVfbGlzdFxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV8gfm1hbmlmZXN0ID1cbiAgICBEZWZhdWx0Lm5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfXG4gICAgICB+bWFuaWZlc3RcblxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmYXVsdC5Mb2NhdGVkXG5cbiAgICBsZXQgbG9jIF8gPSBMb2MubG9jXG4gICAgbGV0IG1rIHggPSBtayB+bG9jOkxvYy5sb2MgeFxuICAgIGxldCBsaWRlbnQgeCA9IGxpZGVudCB+bG9jOkxvYy5sb2MgeFxuICBlbmRcblxuICBsZXQgcGV4cF90dXBsZSBsID0gRGVmYXVsdC5wZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSBsID0gRGVmYXVsdC5wcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSBsID0gRGVmYXVsdC5wdHlwX3R1cGxlIH5sb2MgbFxuICBsZXQgcGV4cF90dXBsZV9vcHQgbCA9IERlZmF1bHQucGV4cF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlX29wdCBsID0gRGVmYXVsdC5wcGF0X3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHB0eXBfcG9seSB2YXJzIHR5ID0gRGVmYXVsdC5wdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG4gIGxldCBwZXhwX2FwcGx5IGUgZWwgPSBEZWZhdWx0LnBleHBfYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlaW50IHQgPSBEZWZhdWx0LmVpbnQgfmxvYyB0XG4gIGxldCBlY2hhciB0ID0gRGVmYXVsdC5lY2hhciB+bG9jIHRcbiAgbGV0IGVzdHJpbmcgdCA9IERlZmF1bHQuZXN0cmluZyB+bG9jIHRcbiAgbGV0IGVmbG9hdCB0ID0gRGVmYXVsdC5lZmxvYXQgfmxvYyB0XG4gIGxldCBlaW50MzIgdCA9IERlZmF1bHQuZWludDMyIH5sb2MgdFxuICBsZXQgZWludDY0IHQgPSBEZWZhdWx0LmVpbnQ2NCB+bG9jIHRcbiAgbGV0IGVuYXRpdmVpbnQgdCA9IERlZmF1bHQuZW5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IGVib29sIHQgPSBEZWZhdWx0LmVib29sIH5sb2MgdFxuICBsZXQgZXZhciB0ID0gRGVmYXVsdC5ldmFyIH5sb2MgdFxuICBsZXQgcGludCB0ID0gRGVmYXVsdC5waW50IH5sb2MgdFxuICBsZXQgcGNoYXIgdCA9IERlZmF1bHQucGNoYXIgfmxvYyB0XG4gIGxldCBwc3RyaW5nIHQgPSBEZWZhdWx0LnBzdHJpbmcgfmxvYyB0XG4gIGxldCBwZmxvYXQgdCA9IERlZmF1bHQucGZsb2F0IH5sb2MgdFxuICBsZXQgcGludDMyIHQgPSBEZWZhdWx0LnBpbnQzMiB+bG9jIHRcbiAgbGV0IHBpbnQ2NCB0ID0gRGVmYXVsdC5waW50NjQgfmxvYyB0XG4gIGxldCBwbmF0aXZlaW50IHQgPSBEZWZhdWx0LnBuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBwYm9vbCB0ID0gRGVmYXVsdC5wYm9vbCB+bG9jIHRcbiAgbGV0IHB2YXIgdCA9IERlZmF1bHQucHZhciB+bG9jIHRcbiAgbGV0IGV1bml0ID0gRGVmYXVsdC5ldW5pdCB+bG9jXG4gIGxldCBwdW5pdCA9IERlZmF1bHQucHVuaXQgfmxvY1xuICBsZXQgZWNvbnN0cnVjdCA9IERlZmF1bHQuZWNvbnN0cnVjdFxuICBsZXQgcGNvbnN0cnVjdCA9IERlZmF1bHQucGNvbnN0cnVjdFxuICBsZXQgZWFwcGx5IGUgZWwgPSBEZWZhdWx0LmVhcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVhYnN0cmFjdCBwcyBlID0gRGVmYXVsdC5lYWJzdHJhY3QgfmxvYyBwcyBlXG4gIGxldCBlc2VxdWVuY2UgZWwgPSBEZWZhdWx0LmVzZXF1ZW5jZSB+bG9jIGVsXG4gIGxldCBlbGlzdCBsID0gRGVmYXVsdC5lbGlzdCB+bG9jIGxcbiAgbGV0IHBsaXN0IGwgPSBEZWZhdWx0LnBsaXN0IH5sb2MgbFxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IGlkZW50IH5mIGFyZ3MgPVxuICAgIERlZmF1bHQudHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mIGFyZ3NcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgPVxuICAgIERlZmF1bHQudW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZlxuXG4gIGxldCBldGFfcmVkdWNlID0gRGVmYXVsdC5ldGFfcmVkdWNlXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlID0gRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyA9XG4gICAgRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbmVuZFxuXG5sZXQgbWFrZSBsb2MgPVxuICAobW9kdWxlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBsb2MgPSBsb2NcbiAgZW5kKSA6IFMpXG4iLCIoKiogU21hbGwgaGVscGVyIHRvIGZpbmQgb3V0IHdobyBpcyB0aGUgY2FsbGVyIG9mIGEgZnVuY3Rpb24gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgUHJpbnRleGMgPSBTdGRsaWIuUHJpbnRleGNcblxudHlwZSB0ID0gUHJpbnRleGMubG9jYXRpb24gb3B0aW9uXG5cbmxldCBnZXQgfnNraXAgPVxuICBsZXQgc2tpcCA9IF9fRklMRV9fIDo6IHNraXAgaW5cbiAgbGV0IHN0YWNrID0gUHJpbnRleGMuZ2V0X2NhbGxzdGFjayAxNiBpblxuICBsZXQgbGVuID0gUHJpbnRleGMucmF3X2JhY2t0cmFjZV9sZW5ndGggc3RhY2sgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Qgc3RhY2sgcG9zXG4gICAgICAgIHw+IFByaW50ZXhjLmNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IHw+IFByaW50ZXhjLlNsb3QubG9jYXRpb25cbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgbG9jIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gfnNldDpza2lwIGxvYy5maWxlbmFtZSB0aGVuIGxvb3AgKHBvcyArIDEpIGVsc2UgU29tZSBsb2NcbiAgaW5cbiAgbG9vcCAwXG4iLCIoKiogSGVscGVycyB0byBwcm92aWRlIGhpbnRzIHRvIFBQWCB1c2VycyBmb3IgdHlwb3Mgb3Igc3BlbGxjaGVja3MuICopXG5cbm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gQ3V0b2ZmX21ldFxuXG4oKiBBcyBmb3VuZCBoZXJlIGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9MZXZlbnNodGVpbl9kaXN0YW5jZSNPQ2FtbCAqKVxubGV0IGxldmVuc2h0ZWluX2Rpc3RhbmNlIHMgdCBjdXRvZmYgPVxuICBsZXQgbSA9IFN0cmluZy5sZW5ndGggcyBhbmQgbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICBpZiBjdXRvZmYgPSAwIHx8IGFicyAobSAtIG4pID49IGN1dG9mZiB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIGZvciBhbGwgaSBhbmQgaiwgZC4oaSkuKGopIHdpbGwgaG9sZCB0aGUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiB0aGVcbiAgICAgICBmaXJzdCBpIGNoYXJhY3RlcnMgb2YgcyBhbmQgdGhlIGZpcnN0IGogY2hhcmFjdGVycyBvZiB0ICopXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlX21hdHJpeCB+ZGlteDoobSArIDEpIH5kaW15OihuICsgMSkgMCBpblxuICAgIGZvciBpID0gMCB0byBtIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IGZpcnN0IHN0cmluZyB0byBhbiBlbXB0eSBzZWNvbmQgc3RyaW5nICopXG4gICAgICBkLihpKS4oMCkgPC0gaVxuICAgIGRvbmU7XG4gICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgc2Vjb25kIHN0cmluZyB0byBhbiBlbXB0eSBmaXJzdCBzdHJpbmcgKilcbiAgICAgIGQuKDApLihqKSA8LSBqXG4gICAgZG9uZTtcbiAgICAoKiB0aGUgbWluaW11bSBvZiBlYWNoIGxpbmUgdG9nZXRoZXIgd2l0aCB0aGUgY29sdW1uIGluZGV4IHdpbGwgYmUgdXNlZFxuICAgICAgIHRvIG5vdGljZSBjdXRvZmYgZXhjZWVkaW5nIGFuZCByZXR1cm4gZWFybHkgaW4gdGhhdCBjYXNlICopXG4gICAgbGV0IGxpbmVfbWluID0gcmVmIDAgaW5cbiAgICBsZXQgZGlzdGFuY2UgPVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMSB0byBuIGRvXG4gICAgICAgICAgaWYgIWxpbmVfbWluID49IGN1dG9mZiAtIDEgJiYgaiA+PSBjdXRvZmYgLSAxIHRoZW4gcmFpc2UgQ3V0b2ZmX21ldDtcbiAgICAgICAgICBsaW5lX21pbiA6PSBtYXggbSBuO1xuICAgICAgICAgIGZvciBpID0gMSB0byBtIGRvXG4gICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICBpZiBDaGFyLmVxdWFsIHMuW2kgLSAxXSB0LltqIC0gMV0gdGhlbiBkLihpIC0gMSkuKGogLSAxKVxuICAgICAgICAgICAgICAgICgqIG5vIG9wZXJhdGlvbiByZXF1aXJlZCAqKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWluXG4gICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqKSArIDEpICgqIGEgZGVsZXRpb24gKilcbiAgICAgICAgICAgICAgICAgIChtaW5cbiAgICAgICAgICAgICAgICAgICAgIChkLihpKS4oaiAtIDEpICsgMSkgKCogYW4gaW5zZXJ0aW9uICopXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqIC0gMSkgKyAxKSAoKiBhIHN1YnN0aXR1dGlvbiAqKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBkLihpKS4oaikgPC0gdmFsdWU7XG4gICAgICAgICAgICBsaW5lX21pbiA6PSBtaW4gIWxpbmVfbWluIHZhbHVlXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lO1xuICAgICAgICBpZiBkLihtKS4obikgPCBjdXRvZmYgdGhlbiBTb21lIGQuKG0pLihuKSBlbHNlIE5vbmVcbiAgICAgIHdpdGggQ3V0b2ZmX21ldCAtPiBOb25lXG4gICAgaW5cbiAgICBkaXN0YW5jZVxuXG5sZXQgc3BlbGxjaGVjayBuYW1lcyBuYW1lID1cbiAgbGV0IGN1dG9mZiA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBuYW1lIHdpdGhcbiAgICB8IDEgfCAyIC0+IDBcbiAgICB8IDMgfCA0IC0+IDFcbiAgICB8IDUgfCA2IC0+IDJcbiAgICB8IF8gLT4gM1xuICBpblxuICBsZXQgXywgc3VnZ2VzdGlvbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0IG5hbWVzIH5pbml0OihJbnQubWF4X2ludCwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKChiZXN0X2Rpc3RhbmNlLCBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSBhcyBhY2MpIHJlZ2lzdGVyZWRfbmFtZSAtPlxuICAgICAgICBtYXRjaCBsZXZlbnNodGVpbl9kaXN0YW5jZSBuYW1lIHJlZ2lzdGVyZWRfbmFtZSBjdXRvZmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgICBpZiBkaXN0IDwgYmVzdF9kaXN0YW5jZSB0aGVuIChkaXN0LCBbIHJlZ2lzdGVyZWRfbmFtZSBdKVxuICAgICAgICAgICAgZWxzZSBpZiBkaXN0ID4gYmVzdF9kaXN0YW5jZSB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoZGlzdCwgcmVnaXN0ZXJlZF9uYW1lIDo6IG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpKVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBzdWdnZXN0aW9ucyB8PiBMaXN0LmZpbHRlciB+ZjooU3RyaW5nLiggPD4gKSBuYW1lKSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGxhc3QgOjogcmV2X3Jlc3QgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiSGludDogRGlkIHlvdSBtZWFuICVzJXMlcz9cIlxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5yZXYgcmV2X3Jlc3QpKVxuICAgICAgICAgICAoaWYgTGlzdC5pc19lbXB0eSByZXZfcmVzdCB0aGVuIFwiXCIgZWxzZSBcIiBvciBcIilcbiAgICAgICAgICAgbGFzdClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mID1cbiAgbGV0IHJlYyBjb2xsYXBzZV9hZnRlcl9hdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBpZiAobm90IChTdHJpbmcuaXNfZW1wdHkgcGFydCkpICYmIENoYXIuZXF1YWwgcGFydC5bMF0gJ0AnIHRoZW5cbiAgICAgICAgICBbIFN0cmluZy5jb25jYXQgKFN0cmluZy5kcm9wX3ByZWZpeCBwYXJ0IDEgOjogcGFydHMpIH5zZXA6XCIuXCIgXVxuICAgICAgICBlbHNlIHBhcnQgOjogY29sbGFwc2VfYWZ0ZXJfYXQgcGFydHNcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBwYXJ0cyA9XG4gICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGxvb3AgKGYgKFN0cmluZy5jb25jYXQgKHBhcnQgOjogcGFydHMpIH5zZXA6XCIuXCIpIGFjYykgcGFydHNcbiAgaW5cbiAgU3RyaW5nLnNwbGl0X29uX2NoYXIgbmFtZSB+c2VwOicuJyB8PiBjb2xsYXBzZV9hZnRlcl9hdCB8PiBsb29wIGFjY1xuXG5sZXQgZG90X3N1ZmZpeGVzIG5hbWUgPVxuICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OltdIH5mOihmdW4geCBhY2MgLT4geCA6OiBhY2MpXG5cbmxldCBzcGxpdF9wYXRoID1cbiAgbGV0IHJlYyBsb29wIHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKSB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgYW5kIGFmdGVyX2RvdCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdBJyAuLiAnWicgLT4gKFN0cmluZy5wcmVmaXggcyAoaSAtIDEpLCBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggcyBpKSlcbiAgICAgIHwgJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSlcbiAgICAgIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBpblxuICBmdW4gcyAtPiBsb29wIHMgMFxuXG5tb2R1bGUgUGF0dGVybiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG5hbWUgOiBzdHJpbmc7IGRvdF9zdWZmaXhlcyA6IFN0cmluZy5TZXQudCB9XG5cbiAgbGV0IG1ha2UgbmFtZSA9XG4gICAgeyBuYW1lOyBkb3Rfc3VmZml4ZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKGRvdF9zdWZmaXhlcyBuYW1lKSB9XG5cbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgbWF0Y2hlcyB0IG1hdGNoZWQgPSBTdHJpbmcuU2V0Lm1lbSBtYXRjaGVkIHQuZG90X3N1ZmZpeGVzXG5lbmRcblxuKCogT24gdGhlIG5hbWVzcGFjZSBcImEuTkFNRVNQQUNFXCIsIHJldHVybiB0aGUgcGFpciAoXCJhXCIsIE5BTUVTUEFDRSkgKilcbmxldCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSA9XG4gIG1hdGNoIFN0cmluZy5pbmRleF9vcHQgbmFtZSAnLicgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgaW5cbiAgICAgIGxldCBiZWZvcmVfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6MCB+bGVuOmkgaW5cbiAgICAgIGxldCBhZnRlcl9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczooaSArIDEpIH5sZW46KG4gLSBpIC0gMSkgaW5cbiAgICAgIFNvbWUgKGJlZm9yZV9kb3QsIGFmdGVyX2RvdClcblxubW9kdWxlIEFsbG93bGlzdGVkID0gc3RydWN0XG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBhcyB3ZWxsIGFzIGFsbCB0aGVpciBkb3Qgc3VmZml4ZXMuXG5cbiAgICAgU2luY2UgdGhlc2UgYXR0cmlidXRlcyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuXG4gICAgIFNhZGx5LCB0aGUgY29tcGlsZXIgc2lsZW50bHkgaWdub3JlcyB0aGVtIGlmIHRoZXkgYXJlIG1pc3BsYWNlZC4uLlxuICAqKVxuICBsZXQgY3JlYXRlX3NldCBmdWxseV9xdWFsaWZpZWRfbmFtZXMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICB+ZjooZnVuIGFjYyBuYW1lIC0+XG4gICAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mOihmdW4geCBhY2MgLT4gU3RyaW5nLlNldC5hZGQgeCBhY2MpKVxuICAgICAgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSBmdWxseV9xdWFsaWZpZWRfbmFtZXNcblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgY3JlYXRlX3NldFxuICAgICAgW1xuICAgICAgICBcIm9jYW1sLmFsZXJ0XCI7XG4gICAgICAgIFwib2NhbWwuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZF9tdXRhYmxlXCI7XG4gICAgICAgIFwib2NhbWwuZG9jXCI7XG4gICAgICAgIFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlNjRcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVkXCI7XG4gICAgICAgIFwib2NhbWwubG9jYWxcIjtcbiAgICAgICAgXCJvY2FtbC5ub2FsbG9jXCI7XG4gICAgICAgIFwib2NhbWwucHB3YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwucmVtb3ZlX2FsaWFzZXNcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZWRcIjtcbiAgICAgICAgXCJvY2FtbC50YWlsY2FsbFwiO1xuICAgICAgICBcIm9jYW1sLnRleHRcIjtcbiAgICAgICAgXCJvY2FtbC51bmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnRhZ2dlZFwiO1xuICAgICAgICBcIm9jYW1sLndhcm5fb25fbGl0ZXJhbF9wYXR0ZXJuXCI7XG4gICAgICAgIFwib2NhbWwud2FybmVycm9yXCI7XG4gICAgICAgIFwib2NhbWwud2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICAgIFwidG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgIF1cblxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9ucy5cblxuICAgICBTaW5jZSB0aGVzZSBleHRlbnNpb25zIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG4gICopXG4gIGxldCBleHRlbnNpb25zID0gY3JlYXRlX3NldCBbIFwib2NhbWwuZXJyb3JcIjsgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIiBdXG5cbiAgbGV0IGlzX2FsbG93bGlzdGVkIH5raW5kIG5hbWUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEF0dHJpYnV0ZSAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGF0dHJpYnV0ZXNcbiAgICB8IGBFeHRlbnNpb24gLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBleHRlbnNpb25zXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgYXR0cmlidXRlc1xuICBsZXQgZ2V0X2V4dGVuc2lvbl9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBleHRlbnNpb25zXG5lbmRcblxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBzdHJ1Y3RcbiAgdHlwZSByZXNlcnZlZCA9IChzdHJpbmcsIHN1Yl9uYW1lc3BhY2VzKSBIYXNodGJsLnRcbiAgYW5kIHN1Yl9uYW1lc3BhY2VzID0gQWxsIHwgU3ViX25hbWVzcGFjZXMgb2YgcmVzZXJ2ZWRcblxuICAoKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbQWxsXSwgdGhlbiBcInhcIiBhbmQgYWxsIHBhdGhzIHRoYXRcbiAgICogc3RhcnQgd2l0aCBcInguXCIgYXJlIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsXVxuICAgKlxuICAgKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbU3ViX25hbWVzcGFjZXMgdGJsJ10sIGFuZCBQIGlzXG4gICAqIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsJ10sIHRoZW4gYWxsIHBhdGhzIFwieC5QXCIgYXJlIHJlc2VydmVkIHdpdGhcbiAgICogcmVzcGVjdCB0byBbdGJsXS5cbiAgICopXG4gIGxldCBjcmVhdGVfcmVzZXJ2ZWQgKCkgOiByZXNlcnZlZCA9IEhhc2h0YmwuY3JlYXRlIDE2XG5cbiAgbGV0IHJlYyByZXNlcnZlIG5zIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5zIHdpdGhcbiAgICB8IE5vbmUgLT4gSGFzaHRibC5hZGRfZXhuIHRibCB+a2V5Om5zIH5kYXRhOkFsbFxuICAgIHwgU29tZSAob3V0ZXJfbnMsIHJlc3RfbnMpIC0+IChcbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHRibCBvdXRlcl9ucyB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgICAgICAgIFN1Yl9uYW1lc3BhY2VzIChjcmVhdGVfcmVzZXJ2ZWQgKCkpKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU3ViX25hbWVzcGFjZXMgcmVzdF90YmwgLT4gcmVzZXJ2ZSByZXN0X25zIHJlc3RfdGJsXG4gICAgICAgIHwgQWxsIC0+ICgpKVxuXG4gIGxldCByZWMgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgd2l0aFxuICAgIHwgU29tZSAobnMsIHJlc3QpIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbnMgd2l0aFxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsKSAtPlxuICAgICAgICAgICAgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyByZXN0IHJlc3RfdGJsXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2UpXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIF8pIHwgTm9uZSAtPiBmYWxzZSlcblxuICBsZXQgdGJsID0gY3JlYXRlX3Jlc2VydmVkICgpXG4gIGxldCByZXNlcnZlIG5zID0gcmVzZXJ2ZSBucyB0YmxcbiAgbGV0IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSA9IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmxcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1lcmxpblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWFzb25cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVmbXRcIiAoKiByZWFzb24gKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm5zXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXRhb2NhbWxcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwib2NhbWxmb3JtYXRcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicHB4bGliLm1pZ3JhdGlvblwiXG5cbiAgbGV0IGNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lID1cbiAgICBsZXQga2luZCwgbGlzdCA9XG4gICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIHwgYEF0dHJpYnV0ZSAtPiAoXCJhdHRyaWJ1dGVcIiwgQWxsb3dsaXN0ZWQuYXR0cmlidXRlcylcbiAgICAgIHwgYEV4dGVuc2lvbiAtPiAoXCJleHRlbnNpb25cIiwgQWxsb3dsaXN0ZWQuZXh0ZW5zaW9ucylcbiAgICBpblxuICAgIGlmIFN0cmluZy5TZXQubWVtIG5hbWUgbGlzdCB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXQgbWF0Y2hlcyBhbiAlcyByZXNlcnZlZCBieSB0aGUgXFxcbiAgICAgICAgIGNvbXBpbGVyXCJcbiAgICAgICAga2luZCBuYW1lIGtpbmRcbiAgICBlbHNlIGlmIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXRzIG5hbWVzcGFjZSBpcyBtYXJrZWQgYXMgXFxcbiAgICAgICAgIHJlc2VydmVkXCJcbiAgICAgICAga2luZCBuYW1lXG5lbmRcblxubGV0IGlnbm9yZV9jaGVja3MgbmFtZSA9XG4gIFJlc2VydmVkX25hbWVzcGFjZXMuaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lXG4gIHx8IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OlwiX1wiXG5cbm1vZHVsZSBSZWdpc3RyYXIgPSBzdHJ1Y3RcbiAgdHlwZSBlbGVtZW50ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA6IHN0cmluZzsgZGVjbGFyZWRfYXQgOiBDYWxsZXJfaWQudCB9XG4gIHR5cGUgYWxsX2Zvcl9jb250ZXh0ID0geyBtdXRhYmxlIGFsbCA6IGVsZW1lbnQgU3RyaW5nLk1hcC50IH1cblxuICB0eXBlICdhIHQgPSB7XG4gICAgYWxsX2J5X2NvbnRleHQgOiAoJ2EsIGFsbF9mb3JfY29udGV4dCkgSGFzaHRibC50O1xuICAgIHNraXAgOiBzdHJpbmcgbGlzdDtcbiAgICBraW5kIDogc3RyaW5nO1xuICAgIHN0cmluZ19vZl9jb250ZXh0IDogJ2EgLT4gc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfmtpbmQgfmN1cnJlbnRfZmlsZSB+c3RyaW5nX29mX2NvbnRleHQgPVxuICAgIHtcbiAgICAgIGFsbF9ieV9jb250ZXh0ID0gSGFzaHRibC5jcmVhdGUgMTY7XG4gICAgICBza2lwID0gWyBjdXJyZW50X2ZpbGU7IF9fRklMRV9fIF07XG4gICAgICBraW5kO1xuICAgICAgc3RyaW5nX29mX2NvbnRleHQ7XG4gICAgfVxuXG4gIGxldCBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCA9XG4gICAgSGFzaHRibC5maW5kX29yX2FkZCB0LmFsbF9ieV9jb250ZXh0IGNvbnRleHQgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICB7IGFsbCA9IFN0cmluZy5NYXAuZW1wdHkgfSlcblxuICBsZXQgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWUgPVxuICAgIG1hdGNoIFN0cmluZy5NYXAuZmluZF9vcHQgbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgICBsZXQgZGVjbGFyZWRfYXQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsb2MgOiBTdGRsaWIuUHJpbnRleGMubG9jYXRpb24pIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiIGRlY2xhcmVkIGF0ICVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuICAgICAgICBpblxuICAgICAgICBsZXQgY29udGV4dCA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBzIC0+IFwiIG9uIFwiIF4gcyBeIFwic1wiXG4gICAgICAgIGluXG4gICAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICAgIFwiU29tZSBwcHgtZXMgdHJpZWQgdG8gcmVnaXN0ZXIgY29uZmxpY3RpbmcgdHJhbnNmb3JtYXRpb25zOiAlcyBcXFxuICAgICAgICAgICAnJXMnJXMlcyBtYXRjaGVzICVzICclcyclc1wiXG4gICAgICAgICAgKFN0cmluZy5jYXBpdGFsaXplX2FzY2lpIHQua2luZClcbiAgICAgICAgICBuYW1lIGNvbnRleHQgKGRlY2xhcmVkX2F0IGNhbGxlcikgdC5raW5kIGUuZnVsbHlfcXVhbGlmaWVkX25hbWVcbiAgICAgICAgICAoZGVjbGFyZWRfYXQgZS5kZWNsYXJlZF9hdClcblxuICBsZXQgY2hlY2tfY29sbGlzaW9ucyB0IGNvbnRleHQgbmFtZSA9XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWVcblxuICBsZXQgcmVnaXN0ZXIgfmtpbmQgdCBjb250ZXh0IG5hbWUgPVxuICAgIFJlc2VydmVkX25hbWVzcGFjZXMuY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWU7XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQ6YWxsIHQgY29udGV4dCBuYW1lO1xuICAgIGxldCB0ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA9IG5hbWU7IGRlY2xhcmVkX2F0ID0gY2FsbGVyIH0gaW5cbiAgICBhbGwuYWxsIDwtXG4gICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFsbC5hbGwgfmY6KGZ1biBuYW1lIGFjYyAtPlxuICAgICAgICAgIFN0cmluZy5NYXAuYWRkIG5hbWUgdCBhY2MpXG5cbiAgbGV0IHNwZWxsY2hlY2sgdCBjb250ZXh0ID8oYWxsb3dsaXN0ID0gW10pIG5hbWUgPVxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGxldCBhbGwgPVxuICAgICAgU3RyaW5nLk1hcC5mb2xkIChmdW4ga2V5IF8gYWNjIC0+IGtleSA6OiBhY2MpIGFsbF9mb3JfY29udGV4dC5hbGwgW11cbiAgICBpblxuICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoYWxsIEAgYWxsb3dsaXN0KSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgXyBhcyB4IC0+IHhcbiAgICB8IE5vbmUgd2hlbiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgLT4gTm9uZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIGxldCBvdGhlcl9jb250ZXh0cyA9XG4gICAgICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgICAgICAoZnVuIGN0eCBhbGxfZnJvbV9jb250ZXh0IGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIFBvbHkuKCA8PiApIGNvbnRleHQgY3R4XG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZnJvbV9jb250ZXh0LmFsbFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjdHggd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPiAocyBeIFwic1wiKSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZSBhY2MpXG4gICAgICAgICAgICB0LmFsbF9ieV9jb250ZXh0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcF90ZXh0ID0gRm9ybWF0LnBwX3ByaW50X3RleHQgaW5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29udGV4dCBwcGYgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgbGV0IGFfb3JfYW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyB8ICd5JyAtPiBcImFuXCJcbiAgICAgICAgICAgICAgICB8IF8gLT4gXCJhXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgICAgICAgICAgXCJAIGJ1dEAgaXNAIHVzZWRAIGhlcmVAIGluQCB0aGVAIGNvbnRleHRAIG9mQCAlc0AgJWFcIiBhX29yX2FuXG4gICAgICAgICAgICAgICAgcHBfdGV4dCBzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5zb3J0IH5jbXA6KGZ1biB4IHkgLT4gLVN0cmluZy5jb21wYXJlIHggeSkgb3RoZXJfY29udGV4dHNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgfCBbIGMgXSAtPlxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZSBwcF90ZXh0IGNcbiAgICAgICAgICAgICAgICAgY3VycmVudF9jb250ZXh0KVxuICAgICAgICB8IGxhc3QgOjogcmV2X290aGVycyAtPlxuICAgICAgICAgICAgbGV0IG90aGVycyA9IExpc3QucmV2IHJldl9vdGhlcnMgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWFAIGFuZEAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWVcbiAgICAgICAgICAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IHBwX3RleHQgfnBwX3NlcDooZnVuIHBwZiAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKSlcbiAgICAgICAgICAgICAgICAgb3RoZXJzIHBwX3RleHQgbGFzdCBjdXJyZW50X2NvbnRleHQpKVxuXG4gIG1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICAgICgqIFRPRE86IGhpbnQgc3BlbGxpbmcgZXJyb3JzIHJlZ2FyZGluZyByZXNlcnZlZCBuYW1lc3BhY2VzIG5hbWVzIGFuZCBhbGxvd2xpc3RlZFxuICAgICAgIG5hbWVzIGluc3RlYWQgb2YgdGFraW5nIGFuIG9wdGlvbmFsIFthbGxvd2xpc3RdIHBhcmFtZXRlci4gKilcbiAgICBsZXQgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAoZnVuIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIHNwZWxsY2hlY2sgdCBjb250ZXh0IG5hbWUudHh0ID9hbGxvd2xpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlc1wiIG1zZ1xuICAgICAgICAgIHwgU29tZSBzIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzLlxcbiVzXCIgbXNnIHMpXG4gICAgICAgIGZtdCBuYW1lLnR4dFxuXG4gICAgbGV0IHJhaXNlX2Vycm9yZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnJhaXNlIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcblxuICAgIGxldCBlcnJvcl9leHRlbnNpb25mIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcbiAgZW5kXG5cbiAgbGV0IHJhaXNlX2Vycm9yZiA9IEVycm9yLnJhaXNlX2Vycm9yZlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEJ1ZmZlciA9IFN0ZGxpYi5CdWZmZXJcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBsaWRlbnQgeCA9IExvbmdpZGVudC5MaWRlbnQgeFxuXG5sZXQgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgPVxuICBsZXQgbG9jID0gdGQucHR5cGVfbmFtZS5sb2MgaW5cbiAgcHR5cF9jb25zdHIgfmxvY1xuICAgIChMb2NhdGVkLm1hcCBsaWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAoTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmZzdClcblxubGV0IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4ID1cbiAgbGV0IGNob3AgbiB+b3JfbW9yZSBzdHJpbmcgcG9zIGYgPVxuICAgIGxldCB0YXJnZXQgPSAhcG9zIC0gbiBpblxuICAgIHdoaWxlICFwb3MgPiAwICYmIChvcl9tb3JlIHx8ICFwb3MgPiB0YXJnZXQpICYmIGYgc3RyaW5nLlshcG9zIC0gMV0gZG9cbiAgICAgIHBvcyA6PSAhcG9zIC0gMVxuICAgIGRvbmU7XG4gICAgIXBvcyA8PSB0YXJnZXRcbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIGxldCBwb3MgPSByZWYgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGlmXG4gICAgICBjaG9wIDEgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgICAmJiBjaG9wIDMgfm9yX21vcmU6dHJ1ZSBzdHJpbmcgcG9zIChmdW5jdGlvblxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiBjaG9wIDIgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgdGhlbiBTdHJpbmcucHJlZml4IHN0cmluZyAhcG9zXG4gICAgZWxzZSBzdHJpbmdcblxubGV0IGdlbl9zeW1ib2wgPVxuICBsZXQgY250ID0gcmVmIDAgaW5cbiAgZnVuID8ocHJlZml4ID0gXCJfeFwiKSAoKSAtPlxuICAgIGNudCA6PSAhY250ICsgMTtcbiAgICBsZXQgcHJlZml4ID0gc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggcHJlZml4IGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlc19fJTAzaV9cIiBwcmVmaXggIWNudFxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOlxuICAgICh0eXBlX2RlY2xhcmF0aW9uLCBfKSByZXN1bHQgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IHByZWZpeF9zdHJpbmcgaSA9XG4gICAgKCogYSwgYiwgLi4uLCB5LCB6LCBhYSwgYmIsIC4uLiAqKVxuICAgIFN0cmluZy5tYWtlICgoaSAvIDI2KSArIDEpIChDaGFyLmNociAoQ2hhci5jb2RlICdhJyArIChpIG1vZCAyNikpKVxuICBpblxuICBsZXQgbmFtZV9wYXJhbSBpICh0cCwgdmFyaWFuY2UpID1cbiAgICAobWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IE9rIChQdHlwX3ZhciAoZ2VuX3N5bWJvbCB+cHJlZml4OihwcmVmaXhfc3RyaW5nIGkpICgpKSlcbiAgICB8IFB0eXBfdmFyIF8gYXMgdiAtPiBPayB2XG4gICAgfCBfIC0+XG4gICAgICAgIEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6dHAucHR5cF9sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiKSlcbiAgICA+PnwgZnVuIHB0eXBfZGVzYyAtPiAoeyB0cCB3aXRoIHB0eXBfZGVzYyB9LCB2YXJpYW5jZSlcbiAgaW5cbiAgbGV0IHB0eXBlX3BhcmFtcywgZXJyb3JzID1cbiAgICB0ZC5wdHlwZV9wYXJhbXMgfD4gTGlzdC5tYXBpIH5mOm5hbWVfcGFyYW1cbiAgICB8PiBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE9rIG8gLT4gRWl0aGVyLkxlZnQgb1xuICAgICAgICAgfCBFcnJvciBlIC0+IEVpdGhlci5SaWdodCBlKVxuICBpblxuICBtYXRjaCBlcnJvcnMgd2l0aCBbXSAtPiBPayB7IHRkIHdpdGggcHR5cGVfcGFyYW1zIH0gfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpXG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDogdHlwZV9kZWNsYXJhdGlvbiA9XG4gIG1hdGNoIG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzIHRkIHdpdGhcbiAgfCBPayByZXMgLT4gcmVzXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+ZiA9XG4gIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgbGV0IHJlc3VsdF90eXBlID1cbiAgICBmIH5sb2M6dGQucHR5cGVfbmFtZS5sb2MgKGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkKVxuICBpblxuICBMaXN0LmZvbGRfcmlnaHQgdGQucHR5cGVfcGFyYW1zIH5pbml0OnJlc3VsdF90eXBlXG4gICAgfmY6KGZ1biAodHAsIF92YXJpYW5jZSkgYWNjIC0+XG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIHB0eXBfYXJyb3cgfmxvYyBOb2xhYmVsIChmIH5sb2MgdHApIGFjYylcblxubGV0IHN0cmluZ19vZl9jb3JlX3R5cGUgY3QgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBQcHJpbnRhc3QuY29yZV90eXBlIHBwZiBjdDtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgKHR5LCBfKSA9XG4gIGxldCBsb2MgPSB0eS5wdHlwX2xvYyBpblxuICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICB8IFB0eXBfdmFyIG5hbWUgLT4gT2sgKExvY2F0ZWQubWsgfmxvYyBuYW1lKVxuICB8IF8gLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIsIFtdKVxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZSB0ID1cbiAgbWF0Y2ggZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgdCB3aXRoXG4gIHwgT2sgZSAtPiBlXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG5jbGFzcyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcbiAgICB2YWwgdHlwZV9uYW1lcyA6IHN0cmluZyBsaXN0ID0gTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpXG4gICAgbWV0aG9kIHJldHVybl90cnVlICgpID0gcmFpc2Vfbm90cmFjZSBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hcnJvdyBfIC0+ICgpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgaWQ7IF8gfSwgXylcbiAgICAgICAgd2hlbiBMaXN0Lm1lbSB+c2V0OnR5cGVfbmFtZXMgaWQgLT5cbiAgICAgICAgICBzZWxmI3JldHVybl90cnVlICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkID1cbiAgICAgICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBjZC5wY2RfcmVzICopXG4gICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICB8IFBjc3RyX3R1cGxlIGFyZ3MgLT4gTGlzdC5pdGVyIGFyZ3MgfmY6c2VsZiNjb3JlX3R5cGVcbiAgICAgIHwgUGNzdHJfcmVjb3JkIGZpZWxkcyAtPiBMaXN0Lml0ZXIgZmllbGRzIH5mOnNlbGYjbGFiZWxfZGVjbGFyYXRpb25cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlcyBfID0gKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGF0dHJpYnV0ZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpXG5cbiAgICBtZXRob2QgZ28gKCkgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5pdGVyIHRkcyB+ZjpzZWxmI3R5cGVfZGVjbGFyYXRpb24gd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlIC0+IFJlY3Vyc2l2ZVxuICAgICAgICAgIHwgKCkgLT4gTm9ucmVjdXJzaXZlKVxuICBlbmRcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID0gKG5ldyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMpI2dvICgpXG5sZXQgcmVjIGxhc3QgeCBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHggfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxubGV0IGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCA9XG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHIgW10gLT4gbmFtZS5sb2NcbiAgfCBQU3RyICh4IDo6IGwpIC0+IHsgeC5wc3RyX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzdHJfbG9jLmxvY19lbmQgfVxuICB8IFBTaWcgW10gLT4gbmFtZS5sb2NcbiAgfCBQU2lnICh4IDo6IGwpIC0+IHsgeC5wc2lnX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzaWdfbG9jLmxvY19lbmQgfVxuICB8IFBUeXAgdCAtPiB0LnB0eXBfbG9jXG4gIHwgUFBhdCAoeCwgTm9uZSkgLT4geC5wcGF0X2xvY1xuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT4geyB4LnBwYXRfbG9jIHdpdGggbG9jX2VuZCA9IGUucGV4cF9sb2MubG9jX2VuZCB9XG5cbmxldCBsb2Nfb2ZfcGF5bG9hZCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcblxubGV0IGxvY19vZl9hdHRyaWJ1dGUgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICAoKiBUT0RPOiBmaXggdGhpcyBpbiB0aGUgY29tcGlsZXIsIGFuZCBtb3ZlIHRoZSBsb2dpYyB0byBvbXAgd2hlbiBjb252ZXJ0aW5nXG4gICAgIGZyb20gb2xkZXIgYXN0cy4gKilcbiAgKCogXCJvY2FtbC5kb2NcIiBhdHRyaWJ1dGVzIGFyZSBnZW5lcmF0ZWQgd2l0aCBbTG9jYXRpb24ubm9uZV0sIHdoaWNoIGlzIG5vdCBoZWxwZnVsIGZvclxuICAgICBlcnJvciBtZXNzYWdlcy4gKilcbiAgaWYgUG9seS4oID0gKSBhdHRyX25hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlblxuICAgIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcbiAgZWxzZVxuICAgIHtcbiAgICAgIGF0dHJfbmFtZS5sb2Mgd2l0aFxuICAgICAgbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkKS5sb2NfZW5kO1xuICAgIH1cblxubGV0IGxvY19vZl9leHRlbnNpb24gKG5hbWUsIHBheWxvYWQpID1cbiAgaWYgUG9seS4oID0gKSBuYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW4gbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkXG4gIGVsc2VcbiAgICB7IG5hbWUubG9jIHdpdGggbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQpLmxvY19lbmQgfVxuXG5sZXQgY3VycnlfYXBwbGljYXRpb25zIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9hcHBseSAoZiwgb3JpZ19mb3J3YXJkX2FyZ3MpIC0+XG4gICAgICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBmXG4gICAgICAgIHwgbGFzdF9hcmcgOjogcmV2X2Zyb250X2FyZ3MgLT5cbiAgICAgICAgICAgIHBleHBfYXBwbHkgfmxvYyAobG9vcCByZXZfZnJvbnRfYXJncykgWyBsYXN0X2FyZyBdXG4gICAgICBpblxuICAgICAgbG9vcCAoTGlzdC5yZXYgb3JpZ19mb3J3YXJkX2FyZ3MpXG4gIHwgXyAtPiBleHByXG5cbmxldCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIExpc3QuZmlsdGVyX21hcCB+ZjooZnVuY3Rpb25cbiAgICB8IHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9sb2MgPSBfOyBhdHRyX3BheWxvYWQgPSBfIH1cbiAgICAgIHdoZW4gTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUuTG9jYXRpb24udHh0IC0+XG4gICAgICAgIE5vbmVcbiAgICB8IGF0dHIgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgICBTb21lIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGVzIG5vdCBhbGxvd2VkIGhlcmVcIikpXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGRcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhIGFjYyA9IGF0dHJpYnV0ZXNfZXJyb3JzIFsgYSBdIEAgYWNjXG4gIGVuZFxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXMgbCA9XG4gIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlc19pbiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSA9IGFzc2VydF9ub19hdHRyaWJ1dGVzIFsgYSBdXG4gIGVuZFxuXG5sZXQgYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMgPVxuICB7XG4gICAgYXR0cl9uYW1lID0geyBsb2M7IHR4dCA9IFwib2NhbWwucHB3YXJuaW5nXCIgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpc19wb2x5bW9ycGhpY192YXJpYW50ID1cbiAgbGV0IHJlYyBjaGVjayA9IGZ1bmN0aW9uXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCBfOyBfIH0gLT4gYERlZmluaXRlbHlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAodHlwLCBfKTsgXyB9IC0+IGNoZWNrIHR5cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciBfOyBfIH0gLT4gYE1heWJlXG4gICAgfCBfIC0+IGBTdXJlbHlfbm90XG4gICAgKCogVHlwZSB2YXJzIGdvIGhlcmUgZXZlbiB0aG91Z2ggdGhleSBjb3VsZCBiZSBwb2x5bW9ycGhpY1xuICAgICAgIHZhcmlhbnRzLCBob3dldmVyIHdlIGRvbid0IGhhbmRsZSBpdCBpZiB0aGV5IGdldCBzdWJzdGl0dXRlZFxuICAgICAgIGJ5IGEgcG9seW1vcnBoaWMgdmFyaWFudCB0aGF0IGlzIHRoZW4gaW5jbHVkZWQuICopXG4gIGluXG4gIGZ1biB0ZCB+c2lnXyAtPlxuICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfcmVjb3JkIF8gfCBQdHlwZV9vcGVuIC0+IGBTdXJlbHlfbm90XG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoXG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlmIHNpZ18gdGhlbiBgTWF5YmUgZWxzZSBgU3VyZWx5X25vdFxuICAgICAgICB8IFNvbWUgdHlwIC0+IGNoZWNrIHR5cClcblxubGV0IG1rX25hbWVkX3NpZyB+bG9jIH5zZ19uYW1lIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgWyB0ZCBdXG4gICAgd2hlbiBTdHJpbmcuZXF1YWwgdGQucHR5cGVfbmFtZS50eHQgXCJ0XCIgJiYgTGlzdC5pc19lbXB0eSB0ZC5wdHlwZV9jc3RycyAtPlxuICAgICAgaWZcbiAgICAgICAgKG5vdCBoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudClcbiAgICAgICAgJiYgUG9seS4oID0gKSAoaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlKSBgRGVmaW5pdGVseVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBhcml0eSA9IExpc3QubGVuZ3RoIHRkLnB0eXBlX3BhcmFtcyBpblxuICAgICAgICBpZiBhcml0eSA+PSA0IHRoZW4gTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG10eSA9XG4gICAgICAgICAgICBpZiBhcml0eSA9IDAgdGhlbiBzZ19uYW1lIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlcyVkXCIgc2dfbmFtZSBhcml0eVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgICAgICAgIGxldCBmb3Jfc3Vic3QgPVxuICAgICAgICAgICAgQXN0X2hlbHBlci5UeXBlLm1rIH5sb2MgdGQucHR5cGVfbmFtZSB+cGFyYW1zOnRkLnB0eXBlX3BhcmFtc1xuICAgICAgICAgICAgICB+bWFuaWZlc3Q6XG4gICAgICAgICAgICAgICAgKHB0eXBfY29uc3RyIH5sb2NcbiAgICAgICAgICAgICAgICAgICAoTG9jYXRlZC5tYXBfbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgICAgICAgKExpc3QubWFwIH5mOmZzdCB0ZC5wdHlwZV9wYXJhbXMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKGluY2x1ZGVfaW5mb3MgfmxvY1xuICAgICAgICAgICAgICAgKHBtdHlfd2l0aCB+bG9jXG4gICAgICAgICAgICAgICAgICAocG10eV9pZGVudCB+bG9jIChMb2NhdGVkLmxpZGVudCBtdHkgfmxvYykpXG4gICAgICAgICAgICAgICAgICBbIFB3aXRoX3R5cGVzdWJzdCAoTG9jYXRlZC5saWRlbnQgfmxvYyBcInRcIiwgZm9yX3N1YnN0KSBdKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGV4bl90b19sb2NfZXJyb3IgZXhuID1cbiAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoIFNvbWUgZXJyb3IgLT4gZXJyb3IgfCBOb25lIC0+IHJhaXNlIGV4blxuXG5tb2R1bGUgV2l0aF9lcnJvcnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3RcblxuICBsZXQgcmV0dXJuIGUgPSAoZSwgW10pXG5cbiAgbGV0ICggPj49ICkgKHgsIGVycm9yczEpIGYgPVxuICAgIGxldCB5LCBlcnJvcnMyID0gZiB4IGluXG4gICAgKHksIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gIGxldCAoID4+fCApICh4LCBlcnJvcnMpIGYgPSAoZiB4LCBlcnJvcnMpXG5cbiAgbGV0IG9mX3Jlc3VsdCByZXN1bHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBPayB4IC0+ICh4LCBbXSlcbiAgICB8IEVycm9yIGVycm9ycyAtPiAoZGVmYXVsdCwgTm9uRW1wdHlMaXN0LnRvX2xpc3QgZXJyb3JzKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gKExpc3QubWFwIGxpc3QgfmY6ZnN0LCBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjpzbmQpXG5lbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9wYXR0ZXJuMFxubGV0IG5vbGFiZWwgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9sYWJlbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9sYWJlbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxhYmVsbGVkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBMYWJlbGxlZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFiZWxsZWRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wdGlvbmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPcHRpb25hbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3B0aW9uYWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGF0dHJpYnV0ZSB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+cGF5bG9hZDooVCBwYXlsb2FkKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHguYXR0cl9uYW1lKS5sb2MgKHguYXR0cl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBheWxvYWQgY3R4IGxvYyB4LmF0dHJfcGF5bG9hZCBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBiaW5kaW5nX29wIH5vcDooVCBvcCkgID1cbiAgKChmdW4gfnBhdDooVCBwYXQpIC0+XG4gICAgICAoKGZ1biB+ZXhwOihUIGV4cCkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG9wIGN0eCAoeC5wYm9wX29wKS5sb2MgKHgucGJvcF9vcCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcGF0IGN0eCBsb2MgeC5wYm9wX3BhdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cCBjdHggbG9jIHgucGJvcF9leHAgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgY2FzZSB+bGhzOihUIGxocykgID1cbiAgKChmdW4gfmd1YXJkOihUIGd1YXJkKSAtPlxuICAgICAgKChmdW4gfnJoczooVCByaHMpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsaHMgY3R4IGxvYyB4LnBjX2xocyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGd1YXJkIGN0eCBsb2MgeC5wY19ndWFyZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHJocyBjdHggbG9jIHgucGNfcmhzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNsX2Z1biAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2FwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9sZXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2xfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2luaGVyaXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2luaXRpYWxpemVyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaXRpYWxpemVyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2ZrX3ZpcnR1YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENma192aXJ0dWFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2aXJ0dWFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjZmtfY29uY3JldGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25jcmV0ZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjaV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2lfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY2xhc3NfaW5mb3MgfnZpcnQ6KFQgdmlydCkgID1cbiAgKChmdW4gfnBhcmFtczooVCBwYXJhbXMpIC0+XG4gICAgICAoKGZ1biB+bmFtZTooVCBuYW1lKSAtPlxuICAgICAgICAgICgoZnVuIH5leHByOihUIGV4cHIpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gdmlydCBjdHggbG9jIHgucGNpX3ZpcnQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucGNpX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wY2lfbmFtZSkubG9jICh4LnBjaV9uYW1lKS50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wY2lfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZjooVCBzZWxmKSAgPVxuICAoKGZ1biB+ZmllbGRzOihUIGZpZWxkcykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc2lnX3NlbGYgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzaWdfZmllbGRzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZjooVCBzZWxmKSAgPVxuICAoKGZ1biB+ZmllbGRzOihUIGZpZWxkcykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc3RyX3NlbGYgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzdHJfZmllbGRzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3R5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdHlfYXJyb3cgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3R5X29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3RmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3RmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjbG9zZWQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDbG9zZWRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcGVuXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNvbnN0X2ludGVnZXIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVnZXJcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY29uc3RfY2hhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2NoYXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNoYXJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjb25zdF9zdHJpbmcgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjb25zdF9mbG9hdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZsb2F0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNzdHJfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNzdHJfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dmFyczooVCB2YXJzKSAtPlxuICAgICAgKChmdW4gfmFyZ3M6KFQgYXJncykgLT5cbiAgICAgICAgICAoKGZ1biB+cmVzOihUIHJlcykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBjZF9uYW1lKS5sb2MgKHgucGNkX25hbWUpLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHZhcnMgY3R4IGxvYyB4LnBjZF92YXJzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhcmdzIGN0eCBsb2MgeC5wY2RfYXJncyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcmVzIGN0eCBsb2MgeC5wY2RfcmVzIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwX2Fycm93IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfb2JqZWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfY2xhc3MgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX2FsaWFzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfcG9seSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfcGFja2FnZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrYWdlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB1cHRvID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVwdG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVwdG9cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBkb3dudG9fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERvd250byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRG93bnRvXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcmFfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBkaXJfc3RyaW5nIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX3N0cmluZyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZGlyX2ludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZGlyX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcl9ib29sIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX2Jvb2wgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImJvb2xcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sZXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2Z1bmN0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdGlvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfZnVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgKChmdW4gKFQgZjMpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9hcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9tYXRjaCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWF0Y2hcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF90cnkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2NvbnN0cnVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9yZWNvcmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9maWVsZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZpZWxkXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2V0ZmllbGQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0ZmllbGRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9pZnRoZW5lbHNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZnRoZW5lbHNlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NlcXVlbmNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXF1ZW5jZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3doaWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aGlsZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2ZvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICAoKGZ1biAoVCBmNCkgLT5cbiAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjQgY3R4IGxvYyB4NCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZm9yXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2NvZXJjZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb2VyY2VcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2VuZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VuZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX25ldyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9uZXcgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXdcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX3NldGluc3R2YXIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGluc3R2YXJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9vdmVycmlkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3ZlcnJpZGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xldG1vZHVsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0bW9kdWxlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2xldGV4Y2VwdGlvbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldGV4Y2VwdGlvblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2Fzc2VydCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFzc2VydFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9wb2x5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9vYmplY3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfb2JqZWN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX25ld3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld3R5cGVcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3BhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2tcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2xldG9wIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldG9wIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRvcFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucmVhY2hhYmxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+a2luZDooVCBraW5kKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGV4dF9uYW1lKS5sb2MgKHgucGV4dF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wZXh0X2tpbmQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHRfZGVjbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlY2xcIilcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4dF9yZWJpbmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBleHRfcmViaW5kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmViaW5kXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB1bml0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuaXQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVuaXRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBuYW1lZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5hbWVkXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5waW5jbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5waW5jbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGluY2x1ZGVfaW5mb3Mgfm1vZF86KFQgbW9kXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG1vZF8gY3R4IGxvYyB4LnBpbmNsX21vZCBrIGluIGspKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGluamVjdGl2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBJbmplY3RpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkluamVjdGl2ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vaW5qZWN0aXZpdHkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9JbmplY3Rpdml0eVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBsZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfm11dGFibGVfOihUIG11dGFibGVfKSAtPlxuICAgICAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBsZF9uYW1lKS5sb2MgKHgucGxkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBtdXRhYmxlXyBjdHggbG9jIHgucGxkX211dGFibGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBsZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsZXRvcCB+bGV0XzooVCBsZXRfKSAgPVxuICAoKGZ1biB+YW5kczooVCBhbmRzKSAtPlxuICAgICAgKChmdW4gfmJvZHk6KFQgYm9keSkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGxldF8gY3R4IGxvYyB4LmxldF8gayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhbmRzIGN0eCBsb2MgeC5hbmRzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYm9keSBjdHggbG9jIHguYm9keSBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsb2NhdGlvbiB+c3RhcnQ6KFQgc3RhcnQpICA9XG4gICgoZnVuIH5lbmRfOihUIGVuZF8pIC0+XG4gICAgICAoKGZ1biB+Z2hvc3Q6KFQgZ2hvc3QpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzdGFydCBjdHggbG9jIHgubG9jX3N0YXJ0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZW5kXyBjdHggbG9jIHgubG9jX2VuZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGdob3N0IGN0eCBsb2MgeC5sb2NfZ2hvc3QgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGlkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxpZGVudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbGRvdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBMZG90ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMZG90XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGFwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IExhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFwcGx5XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1iX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtYl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfYmluZGluZyB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+ZXhwcjooVCBleHByKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWJfbmFtZSkubG9jICh4LnBtYl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wbWJfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1kX25hbWUpLmxvYyAoeC5wbWRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbW9kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbW9kX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtb2RfZnVuY3RvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG1vZF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtc19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXNfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbXNfbmFtZSkubG9jICh4LnBtc19uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdCBjdHggKHgucG1zX21hbmlmZXN0KS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wbXNfbWFuaWZlc3QpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9mdW5jdG9yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV93aXRoIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndpdGhcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV90eXBlb2YgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlb2ZcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfYWxpYXMgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfYWxpYXMgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10ZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucG10ZF9uYW1lKS5sb2MgKHgucG10ZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG10ZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBpbW11dGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgSW1tdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbW11dGFibGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtdXRhYmxlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBNdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJNdXRhYmxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG9mX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG9mX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3RhZyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBPdGFnICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk90YWdcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgb2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wZW5faW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9wZW5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9wZW5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvcGVuX2luZm9zIH5leHByOihUIGV4cHIpICA9XG4gICgoZnVuIH5vdmVycmlkZTooVCBvdmVycmlkZSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBleHByIGN0eCBsb2MgeC5wb3Blbl9leHByIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gb3ZlcnJpZGUgY3R4IGxvYyB4LnBvcGVuX292ZXJyaWRlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBvdmVycmlkZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPdmVycmlkZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3ZlcnJpZGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBmcmVzaCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBGcmVzaCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRnJlc2hcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcGF0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2FsaWFzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2ludGVydmFsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlcnZhbFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfY29uc3RydWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3JlY29yZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfb3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF90eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQU3RyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU3RyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQU2lnIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU2lnXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQVHlwIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQVHlwXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBQYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBQYXRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwb3NpdGlvbiB+Zm5hbWU6KFQgZm5hbWUpICA9XG4gICgoZnVuIH5sbnVtOihUIGxudW0pIC0+XG4gICAgICAoKGZ1biB+Ym9sOihUIGJvbCkgLT5cbiAgICAgICAgICAoKGZ1biB+Y251bTooVCBjbnVtKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZm5hbWUgY3R4IGxvYyB4LnBvc19mbmFtZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsbnVtIGN0eCBsb2MgeC5wb3NfbG51bSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBib2wgY3R4IGxvYyB4LnBvc19ib2wgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gY251bSBjdHggbG9jIHgucG9zX2NudW0gayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHByaXZhdGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFByaXZhdGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlByaXZhdGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdWJsaWMgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHVibGljIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQdWJsaWNcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub25yZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25yZWN1cnNpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCByZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSZWN1cnNpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcmZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcmZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnByZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBydGFnIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJ0YWdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHJpbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBSaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmluaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzaWdfdmFsdWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3ZhbHVlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ190eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzaWdfdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ190eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2RzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2R0eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19leHRlbnNpb24gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHN0cl9ldmFsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXZhbFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfdmFsdWUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3ByaW1pdGl2ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwcmltaXRpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfZXh0ZW5zaW9uIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmFyZzooVCBhcmcpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wZGlyX25hbWUpLmxvYyAoeC5wZGlyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYXJnIGN0eCBsb2MgeC5wZGlyX2FyZyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdG9wX2RlZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHRvcF9kZWYgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlZlwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHRvcF9kaXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0b3BfZGlyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkaXJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cGVfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cGVfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfmNzdHJzOihUIGNzdHJzKSAtPlxuICAgICAgICAgICgoZnVuIH5raW5kOihUIGtpbmQpIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXzooVCBwcml2YXRlXykgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnB0eXBlX25hbWUpLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdHlwZV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyBjdHggbG9jIHgucHR5cGVfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGNzdHJzIGN0eCBsb2MgeC5wdHlwZV9jc3RycyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wdHlwZV9raW5kIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlXyBjdHggbG9jIHgucHR5cGVfcHJpdmF0ZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4IGxvYyB4LnB0eXBlX21hbmlmZXN0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4bl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleG5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leGNlcHRpb24gfmNvbnN0cnVjdG9yOihUIGNvbnN0cnVjdG9yKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGNvbnN0cnVjdG9yIGN0eCBsb2MgeC5wdHlleG5fY29uc3RydWN0b3IgayBpbiBrKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoOihUIHBhdGgpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfmNvbnN0cnVjdG9yczooVCBjb25zdHJ1Y3RvcnMpIC0+XG4gICAgICAgICAgKChmdW4gfnByaXZhdGVfOihUIHByaXZhdGVfKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggY3R4ICh4LnB0eWV4dF9wYXRoKS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB0eWV4dF9wYXRoKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucHR5ZXh0X3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcnMgY3R4IGxvYyB4LnB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwcml2YXRlXyBjdHggbG9jIHgucHR5ZXh0X3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwZV9hYnN0cmFjdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWJzdHJhY3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV92YXJpYW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV9vcGVuID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX29wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB2YWx1ZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2Yl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfYmluZGluZyB+cGF0OihUIHBhdCkgID1cbiAgKChmdW4gfmV4cHI6KFQgZXhwcikgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gcGF0IGN0eCBsb2MgeC5wdmJfcGF0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucHZiX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2YWxfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZhbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgKChmdW4gfnByaW06KFQgcHJpbSkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucHZhbF9uYW1lKS5sb2MgKHgucHZhbF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnB2YWxfdHlwZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwcmltIGN0eCBsb2MgeC5wdmFsX3ByaW0gayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNvdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb3ZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvdmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNvbnRyYXZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29udHJhdmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vdmFyaWFuY2UgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9WYXJpYW5jZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9WYXJpYW5jZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHZpcnR1YWxfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFZpcnR1YWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlZpcnR1YWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjb25jcmV0ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb25jcmV0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29uY3JldGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwd2l0aF90eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2R0eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX3R5cGVzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2RzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFzdF9wYXR0ZXJuMFxuXG5sZXQgc2F2ZV9jb250ZXh0IGN0eCA9IGN0eC5tYXRjaGVkXG5sZXQgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXAgPSBjdHgubWF0Y2hlZCA8LSBiYWNrdXBcbmxldCBpbmNyX21hdGNoZWQgYyA9IGMubWF0Y2hlZCA8LSBjLm1hdGNoZWQgKyAxXG5cbmxldCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICB0cnkgT2sgKGYgeyBtYXRjaGVkID0gMCB9IGxvYyB4IGspXG4gIHdpdGggRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpIC0+IChcbiAgICBtYXRjaCBvbl9lcnJvciB3aXRoXG4gICAgfCBOb25lIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCIlcyBleHBlY3RlZFwiIGV4cGVjdGVkLCBbXSlcbiAgICB8IFNvbWUgZiAtPiBPayAoZiAoKSkpXG5cbmxldCBwYXJzZSAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIG1hdGNoIHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayB3aXRoXG4gIHwgT2sgciAtPiByXG4gIHwgRXJyb3IgKHIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIHJcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuMC50ICogJ2IgLT4gKCdhLCAnYykgdFxuXG4gIGxldCBjcmVhdGUgdCBmID0gVCAodCwgZilcbiAgbGV0IHBhcnNlX3JlcyAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2VfcmVzIHQgbG9jIHggZlxuICBsZXQgcGFyc2UgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlIHQgbG9jIHggZlxuZW5kXG5cbmxldCBfXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeClcblxubGV0IF9fJyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB7IGxvYzsgdHh0ID0geCB9KVxuXG5sZXQgZHJvcCA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIF8gayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGspXG5cbmxldCBhc19fIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeCAoayB4KSBpblxuICAgICAgaylcblxubGV0IGNzdCB+dG9fc3RyaW5nID8oZXF1YWwgPSBQb2x5LmVxdWFsKSB2ID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGlmIGVxdWFsIHggdiB0aGVuIChcbiAgICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgICAgaylcbiAgICAgIGVsc2UgZmFpbCBsb2MgKHRvX3N0cmluZyB2KSlcblxubGV0IGludCB2ID0gY3N0IH50b19zdHJpbmc6SW50LnRvX3N0cmluZyB2XG5sZXQgY2hhciB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJUNcIikgdlxubGV0IHN0cmluZyB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJVNcIikgdlxubGV0IGZsb2F0IHYgPSBjc3QgfnRvX3N0cmluZzpGbG9hdC50b19zdHJpbmcgdlxubGV0IGludDMyIHYgPSBjc3QgfnRvX3N0cmluZzpJbnQzMi50b19zdHJpbmcgdlxubGV0IGludDY0IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQ2NC50b19zdHJpbmcgdlxubGV0IG5hdGl2ZWludCB2ID0gY3N0IH50b19zdHJpbmc6TmF0aXZlaW50LnRvX3N0cmluZyB2XG5sZXQgYm9vbCB2ID0gY3N0IH50b19zdHJpbmc6Qm9vbC50b19zdHJpbmcgdlxuXG5sZXQgYm9vbCcgKFQgZnVuYykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFwidHJ1ZVwiIC0+IGZ1bmMgY3R4IGxvYyB0cnVlIGtcbiAgICAgIHwgXCJmYWxzZVwiIC0+IGZ1bmMgY3R4IGxvYyBmYWxzZSBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJCb29sXCIpXG5cbmxldCBmYWxzZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZhbHNlXCIpXG5cbmxldCB0cnVlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnVlXCIpXG5cbmxldCBuaWwgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIltdXCIpXG5cbmxldCAoIF46OiApIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHgwIDo6IHgxIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCI6OlwiKVxuXG5sZXQgbm9uZSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25lXCIpXG5cbmxldCBzb21lIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSB4MCAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlNvbWVcIilcblxubGV0IHBhaXIgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MikgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBrKVxuXG5sZXQgKCAqKiApID0gcGFpclxuXG5sZXQgdHJpcGxlIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyLCB4MykgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpblxuICAgICAgaylcblxubGV0IGFsdCAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBiYWNrdXAgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICB0cnkgZjEgY3R4IGxvYyB4IGtcbiAgICAgIHdpdGggZTEgLT4gKFxuICAgICAgICBsZXQgbTEgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwO1xuICAgICAgICB0cnkgZjIgY3R4IGxvYyB4IGtcbiAgICAgICAgd2l0aCBlMiAtPlxuICAgICAgICAgIGxldCBtMiA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgICBpZiBtMSA+PSBtMiB0aGVuIChcbiAgICAgICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggbTE7XG4gICAgICAgICAgICByYWlzZSBlMSlcbiAgICAgICAgICBlbHNlIHJhaXNlIGUyKSlcblxubGV0ICggfHx8ICkgPSBhbHRcbmxldCBtYXAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgaykpXG5sZXQgbWFwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBsb2MgaykpXG5sZXQgbWFwX3Jlc3VsdCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIChmdW5jIGN0eCBsb2MgeCBrKSlcbmxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG5sZXQgbWFwMCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayBmKSlcbmxldCBtYXAxIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGEpKSlcblxubGV0IG1hcDIgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBhIGIpKSlcblxubGV0IG1hcDAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIChmIGxvYykpKVxuXG5sZXQgbWFwMScgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgbG9jIGEpKSlcblxubGV0IG1hcDInIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgbG9jIGEgYikpKVxuXG5sZXQgbWFwX3ZhbHVlIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiB4KSBrKVxubGV0IG1hcF92YWx1ZScgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIGxvYyB4KSBrKVxuXG5sZXQgYWx0X29wdGlvbiBzb21lIG5vbmUgPVxuICBhbHQgKG1hcDEgc29tZSB+ZjooZnVuIHggLT4gU29tZSB4KSkgKG1hcDAgbm9uZSB+ZjpOb25lKVxuXG5sZXQgbWFueSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgbCBrIC0+XG4gICAgICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBrIChMaXN0LnJldiBhY2N1KVxuICAgICAgICB8IHggOjogeHMgLT4gZiBjdHggbG9jIHggKGZ1biB4IC0+IGF1eCAoeCA6OiBhY2N1KSB4cylcbiAgICAgIGluXG4gICAgICBhdXggW10gbClcblxubGV0IGxvYyAoVCBmKSA9IFQgKGZ1biBjdHggX2xvYyAoeCA6IF8gTG9jLnQpIGsgLT4gZiBjdHggeC5sb2MgeC50eHQgaylcbmxldCBwYWNrMCB0ID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgKCkpXG5sZXQgcGFjazIgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgLT4gZiAoeCwgeSkpXG5sZXQgcGFjazMgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgeiAtPiBmICh4LCB5LCB6KSlcblxuaW5jbHVkZSBBc3RfcGF0dGVybl9nZW5lcmF0ZWRcblxubGV0IGVjaGFyIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IGVzdHJpbmcgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgZWZsb2F0IHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IHBjaGFyIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IHBzdHJpbmcgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgcGZsb2F0IHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IGludCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChpbnRfb2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50MzInIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50MzIub2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50NjQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50NjQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBuYXRpdmVpbnQnIChUIGYpID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoTmF0aXZlaW50Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgY29uc3RfaW50IHQgPSBwY29uc3RfaW50ZWdlciAoaW50JyB0KSBub25lXG5sZXQgY29uc3RfaW50MzIgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQzMicgdCkgKHNvbWUgKGNoYXIgJ2wnKSlcbmxldCBjb25zdF9pbnQ2NCB0ID0gcGNvbnN0X2ludGVnZXIgKGludDY0JyB0KSAoc29tZSAoY2hhciAnTCcpKVxubGV0IGNvbnN0X25hdGl2ZWludCB0ID0gcGNvbnN0X2ludGVnZXIgKG5hdGl2ZWludCcgdCkgKHNvbWUgKGNoYXIgJ24nKSlcbmxldCBlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBlaW50MzIgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgZWludDY0IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IGVuYXRpdmVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHBpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IHBpbnQzMiB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBwaW50NjQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgcG5hdGl2ZWludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgc2luZ2xlX2V4cHJfcGF5bG9hZCB0ID0gcHN0ciAocHN0cl9ldmFsIHQgbmlsIF46OiBuaWwpXG5sZXQgbm9fbGFiZWwgdCA9IGNzdCBBc3R0eXBlcy5Ob2xhYmVsIH50b19zdHJpbmc6KGZ1biBfIC0+IFwiTm9sYWJlbFwiKSAqKiB0XG5sZXQgZWJvb2wgdCA9IHBleHBfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5sZXQgcGJvb2wgdCA9IHBwYXRfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5cbmxldCBleHRlbnNpb24gKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKChuYW1lIDogXyBMb2MudCksIHBheWxvYWQpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IG5hbWUubG9jIG5hbWUudHh0IGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyBwYXlsb2FkIGsgaW5cbiAgICAgIGspXG5cbmxldCByZWMgcGFyc2VfZWxpc3QgKGUgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbikgYWNjID1cbiAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzO1xuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBOb25lKSAtPiBMaXN0LnJldiBhY2NcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgYXJnKSAtPiAoXG4gICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXJnLnBleHBfYXR0cmlidXRlcztcbiAgICAgIG1hdGNoIGFyZy5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX3R1cGxlIFsgaGQ7IHRsIF0gLT4gcGFyc2VfZWxpc3QgdGwgKGhkIDo6IGFjYylcbiAgICAgIHwgXyAtPiBmYWlsIGFyZy5wZXhwX2xvYyBcImxpc3RcIilcbiAgfCBfIC0+IGZhaWwgZS5wZXhwX2xvYyBcImxpc3RcIlxuXG5sZXQgZWxpc3QgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCBsID0gcGFyc2VfZWxpc3QgZSBbXSBpblxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgKExpc3QubWFwIGwgfmY6KGZ1biB4IC0+IGYgY3R4IHguUGFyc2V0cmVlLnBleHBfbG9jIHggKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBlc2VxdWVuY2UgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCByZWMgcGFyc2Vfc2VxIGV4cHIgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGV4cHIsIG5leHQpIC0+IHBhcnNlX3NlcSBuZXh0IChleHByIDo6IGFjYylcbiAgICAgICAgfCBfIC0+IGV4cHIgOjogYWNjXG4gICAgICBpblxuICAgICAga1xuICAgICAgICAoTGlzdC5yZXZfbWFwIChwYXJzZV9zZXEgZSBbXSkgfmY6KGZ1biBleHByIC0+XG4gICAgICAgICAgICAgZiBjdHggZXhwci5wZXhwX2xvYyBleHByIChmdW4geCAtPiB4KSkpKVxuXG5sZXQgb2ZfZnVuYyBmID0gVCBmXG5sZXQgdG9fZnVuYyAoVCBmKSA9IGZcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcG9seV9lcXVhbCBhIGIgPVxuICBsZXQgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIDogXyAtPiB0XG4gIGVuZCBpblxuICBTdGRwcHguUG9seS5lcXVhbCAoUG9seS5UIGEpIChQb2x5LlQgYilcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gdFxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIHRcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gdFxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENsYXNzX2luZm9zIDogXyBjbGFzc19pbmZvcyB0XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gdFxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gdFxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gdFxuICAgIHwgSW5jbHVkZV9pbmZvcyA6IF8gaW5jbHVkZV9pbmZvcyB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IFZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIHRcbiAgICB8IE1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgdFxuICAgIHwgUHN0cl9ldmFsIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHN0cl9leHRlbnNpb24gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc2lnX2V4dGVuc2lvbiA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFJ0YWcgOiByb3dfZmllbGQgdFxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgOiBvYmplY3RfZmllbGQgdFxuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbiA9IExhYmVsX2RlY2xhcmF0aW9uXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2RlY2xhcmF0aW9uID0gVHlwZV9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9leHRlbnNpb24gPSBUeXBlX2V4dGVuc2lvblxuICBsZXQgdHlwZV9leGNlcHRpb24gPSBUeXBlX2V4Y2VwdGlvblxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gPSBWYWx1ZV9kZXNjcmlwdGlvblxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjbGFzc19pbmZvcyA9IENsYXNzX2luZm9zXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uID0gTW9kdWxlX2RlY2xhcmF0aW9uXG4gIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gIGxldCBvcGVuX2Rlc2NyaXB0aW9uID0gT3Blbl9kZXNjcmlwdGlvblxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IEluY2x1ZGVfaW5mb3NcbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IHZhbHVlX2JpbmRpbmcgPSBWYWx1ZV9iaW5kaW5nXG4gIGxldCBtb2R1bGVfYmluZGluZyA9IE1vZHVsZV9iaW5kaW5nXG4gIGxldCBwc3RyX2V2YWwgPSBQc3RyX2V2YWxcbiAgbGV0IHBzdHJfZXh0ZW5zaW9uID0gUHN0cl9leHRlbnNpb25cbiAgbGV0IHBzaWdfZXh0ZW5zaW9uID0gUHNpZ19leHRlbnNpb25cbiAgbGV0IHJ0YWcgPSBSdGFnXG4gIGxldCBvYmplY3RfdHlwZV9maWVsZCA9IE9iamVjdF90eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9wc3RyX2V2YWwgc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V2YWwgKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V2YWxcIlxuXG4gIGxldCBnZXRfcHN0cl9leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X3BzaWdfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc2lnX2Rlc2Mgd2l0aFxuICAgIHwgUHNpZ19leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc2lnX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHgucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHgucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geC5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB4LnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB4LnB0eWV4bl9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geC5wZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFBhdHRlcm4gLT4geC5wcGF0X2F0dHJpYnV0ZXNcbiAgICB8IENvcmVfdHlwZSAtPiB4LnB0eXBfYXR0cmlidXRlc1xuICAgIHwgRXhwcmVzc2lvbiAtPiB4LnBleHBfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geC5wdmFsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGUgLT4geC5wY3R5X2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geC5wY3RmX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2luZm9zIC0+IHgucGNpX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2V4cHIgLT4geC5wY2xfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZmllbGQgLT4geC5wY2ZfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGUgLT4geC5wbXR5X2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB4LnBtZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB4LnBtdGRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB4LnBtc19hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geC5waW5jbF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZXhwciAtPiB4LnBtb2RfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfYmluZGluZyAtPiB4LnB2Yl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB4LnBtYl9hdHRyaWJ1dGVzXG4gICAgfCBQc3RyX2V2YWwgLT4gc25kIChnZXRfcHN0cl9ldmFsIHgpXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc3RyX2V4dGVuc2lvbiB4KVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gc25kIChnZXRfcHNpZ19leHRlbnNpb24geClcbiAgICB8IFJ0YWcgLT4geC5wcmZfYXR0cmlidXRlc1xuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geC5wb2ZfYXR0cmlidXRlc1xuXG4gIGxldCBzZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2luZm9zIC0+IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZXhwciAtPiB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBzdHJfZXZhbCAtPlxuICAgICAgICB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGdldF9wc3RyX2V2YWwgeCB8PiBmc3QsIGF0dHJzKSB9XG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGdldF9wc3RyX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGdldF9wc2lnX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBSdGFnIC0+IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4gXCJsYWJlbCBkZWNsYXJhdGlvblwiXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IFwidHlwZSBleHRlbnNpb25cIlxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4gXCJ0eXBlIGV4Y2VwdGlvblwiXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gXCJleHRlbnNpb24gY29uc3RydWN0b3JcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IFwidmFsdWVcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ2xhc3NfaW5mb3MgLT4gXCJjbGFzcyBkZWNsYXJhdGlvblwiXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBcIm1vZHVsZSBzdWJzdGl0dXRpb25cIlxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiBcImluY2x1ZGVcIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IFwidmFsdWUgYmluZGluZ1wiXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiBcIm1vZHVsZSBiaW5kaW5nXCJcbiAgICB8IFBzdHJfZXZhbCAtPiBcInRvcGxldmVsIGV4cHJlc3Npb25cIlxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBleHRlbnNpb25cIlxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBzaWduYXR1cmUgZXh0ZW5zaW9uXCJcbiAgICB8IFJ0YWcgLT4gXCJwb2x5bW9ycGhpYyB2YXJpYW50IHRhZ1wiXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiBcIm9iamVjdCB0eXBlIGZpZWxkXCJcblxuICAoKlxuICBsZXQgcGF0dGVybiA6IHR5cGUgYSBiIGMgZC4gYSB0XG4gICAgLT4gKGF0dHJpYnV0ZXMsIGIsIGMpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYywgZCkgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBiLCBkKSBBc3RfcGF0dGVybi50ID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uICAgICAgIC0+IEFzdF9wYXR0ZXJuLnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBBc3RfcGF0dGVybi5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gICAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAgIC0+IEFzdF9wYXR0ZXJuLnBleHRfYXR0cmlidXRlc1xuKilcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxubW9kdWxlIEZsb2F0aW5nX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcblxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGUgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgdCB4ID1cbiAgICBtYXRjaCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgdCB4IHdpdGhcbiAgICB8IFNvbWUgYSAtPiBhXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZVwiXG5cbiAgbGV0IHJlcGxhY2VfYnlfZHVtbXkgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGEgPVxuICAgIGxldCBkdW1teV9leHQgPSAoeyB0eHQgPSBcIlwiOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sIFBTdHIgW10pIGluXG4gICAgZnVuIHQgeCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG50eXBlIHBhY2tlZF9jb250ZXh0ID1cbiAgfCBPbl9pdGVtIDogXyBDb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcbiAgfCBGbG9hdGluZyA6IF8gRmxvYXRpbmdfY29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG5cbnR5cGUgXyBwYXlsb2FkX3BhcnNlciA9XG4gIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgKHBheWxvYWQsICdhLCAnYikgQXN0X3BhdHRlcm4udFxuICAgICAgKiAoYXR0cl9sb2M6TG9jYXRpb24udCAtPiBuYW1lX2xvYzpMb2NhdGlvbi50IC0+ICdhKVxuICAgICAgLT4gJ2IgcGF5bG9hZF9wYXJzZXJcblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbn1cblxudHlwZSBwYWNrZWQgPSBUIDogKF8sIF8pIHQgLT4gcGFja2VkXG5cbmxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcbmxldCBjb250ZXh0IHQgPSB0LmNvbnRleHRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImF0dHJpYnV0ZVwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1bmN0aW9uXG4gICAgfCBPbl9pdGVtIHQgLT4gU29tZSAoQ29udGV4dC5kZXNjIHQpXG4gICAgfCBGbG9hdGluZyB0IC0+IFNvbWUgKEZsb2F0aW5nX2NvbnRleHQuZGVzYyB0IF4gXCIgKGZsb2F0aW5nKVwiKSlcblxubGV0IGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAge1xuICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgIGNvbnRleHQ7XG4gICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgfVxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gaylcblxubGV0IGRlY2xhcmVfd2l0aF9uYW1lX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jIC0+XG4gICAgICBrIH5uYW1lX2xvYylcblxubGV0IGRlY2xhcmVfd2l0aF9hdHRyX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jIH5uYW1lX2xvYzpfIC0+XG4gICAgICBrIH5hdHRyX2xvYylcblxudHlwZSAnYSBmbGFnID0gKCdhLCB1bml0KSB0XG5cbmxldCBkZWNsYXJlX2ZsYWcgbmFtZSBjb250ZXh0ID1cbiAgbGV0IHBheWxvYWRfcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgaW5cbiAgbGV0IGNvbnRpbnVhdGlvbiB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyA9ICgpIGluXG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF5bG9hZF9wYXR0ZXJuIGNvbnRpbnVhdGlvblxuXG5tb2R1bGUgQXR0cmlidXRlX3RhYmxlID0gU3RkbGliLkhhc2h0YmwuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsb2NcblxuICBsZXQgbm9ybWFsaXplIHQgPSB7IHQgd2l0aCBsb2MgPSB7IHQubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IH1cbiAgbGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCAobm9ybWFsaXplIHQpXG4gIGxldCBlcXVhbCB4IHkgPSBQb2x5LmVxdWFsIChub3JtYWxpemUgeCkgKG5vcm1hbGl6ZSB5KVxuZW5kKVxuXG5sZXQgbm90X3NlZW4gPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIDEyOFxubGV0IG1hcmtfYXNfc2VlbiB7IGF0dHJfbmFtZTsgXyB9ID0gQXR0cmlidXRlX3RhYmxlLnJlbW92ZSBub3Rfc2VlbiBhdHRyX25hbWVcbmxldCBtYXJrX2FzX2hhbmRsZWRfbWFudWFsbHkgPSBtYXJrX2FzX3NlZW5cblxubGV0IGV4cGxpY2l0bHlfZHJvcCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgPSBtYXJrX2FzX3NlZW5cbiAgZW5kXG5cbmxldCBnZXRfaW50ZXJuYWwgPVxuICBsZXQgcmVjIGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgbG9uZ2VzdF9tYXRjaCA9XG4gICAgbWF0Y2ggYXR0cmlidXRlcyB3aXRoXG4gICAgfCBbXSAtPiBPayBsb25nZXN0X21hdGNoXG4gICAgfCAoeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gYXMgYXR0cikgOjogcmVzdCAtPlxuICAgICAgICBpZiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQgdGhlblxuICAgICAgICAgIG1hdGNoIGxvbmdlc3RfbWF0Y2ggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgfCBTb21lIHsgYXR0cl9uYW1lID0gbmFtZSc7IF8gfSAtPlxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBuYW1lLnR4dCBpblxuICAgICAgICAgICAgICBsZXQgbGVuJyA9IFN0cmluZy5sZW5ndGggbmFtZScudHh0IGluXG4gICAgICAgICAgICAgIGlmIGxlbiA+IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgICAgIGVsc2UgaWYgbGVuIDwgbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiRHVwbGljYXRlZCBhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICBpblxuICBmdW4gdCBhdHRyaWJ1dGVzIC0+IGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgTm9uZVxuXG5sZXQgY29udmVydCA/KGRvX21hcmtfYXNfc2VlbiA9IHRydWUpIHBhdHRlcm4gYXR0ciA9XG4gIGlmIGRvX21hcmtfYXNfc2VlbiB0aGVuIG1hcmtfYXNfc2VlbiBhdHRyO1xuICBsZXQgKFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKSkgPSBwYXR0ZXJuIGluXG4gIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuXG4gICAgKENvbW1vbi5sb2Nfb2ZfcGF5bG9hZCBhdHRyKVxuICAgIGF0dHIuYXR0cl9wYXlsb2FkXG4gICAgKGsgfmF0dHJfbG9jOmF0dHIuYXR0cl9sb2Mgfm5hbWVfbG9jOmF0dHIuYXR0cl9uYW1lLmxvYylcblxubGV0IGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgP2RvX21hcmtfYXNfc2VlbiA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcblxubGV0IGdldCB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgbWF0Y2ggZ2V0X3JlcyA/bWFya19hc19zZWVuIHQgeCB3aXRoXG4gIHwgT2sgKFNvbWUgKCkpIC0+IE9rIHRydWVcbiAgfCBPayBOb25lIC0+IE9rIGZhbHNlXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcblxubGV0IGhhc19mbGFnIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBjb25zdW1lX3JlcyB0IHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgbGV0IGF0dHJzID0gTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKGF0dHIgPT0gYXR0cicpKSBpblxuICAgICAgbGV0IHggPSBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGF0dHJzIGluXG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSAoeCwgdmFsdWUpXG5cbmxldCBjb25zdW1lIHQgeCA9XG4gIGNvbnN1bWVfcmVzIHQgeFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcmVtb3ZlX3NlZW5fcmVzICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBpblxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE9rIGFjY1xuICAgIHwgVCB0IDo6IHJlc3QgLT5cbiAgICAgICAgaWYgQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCB0aGVuXG4gICAgICAgICAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgICAgICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgfCBTb21lIGF0dHIgLT5cbiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICAgICAgICBpZiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWUgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgICAgIGVsc2UgbG9vcCAoYXR0ciA6OiBhY2MpIHJlc3RcbiAgICAgICAgZWxzZSBsb29wIGFjYyByZXN0XG4gIGluXG4gIGxvb3AgW10gcGFja2VkcyA+PnwgZnVuIG1hdGNoZWQgLT5cbiAgbGV0IGF0dHJzID1cbiAgICBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoTGlzdC5tZW1xIH5zZXQ6bWF0Y2hlZCBhdHRyJykpXG4gIGluXG4gIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzXG5cbmxldCByZW1vdmVfc2VlbiAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICByZW1vdmVfc2Vlbl9yZXMgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBwYXR0ZXJuX3JlcyB0IHAgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGYgPSBBc3RfcGF0dGVybi50b19mdW5jIHAgaW5cbiAgQXN0X3BhdHRlcm4ub2ZfZnVuYyAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBjb25zdW1lX3JlcyB0IHggPj58IGZ1biByZXMgLT5cbiAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZiBjdHggbG9jIHggKGsgTm9uZSlcbiAgICAgIHwgU29tZSAoeCwgdikgLT4gZiBjdHggbG9jIHggKGsgKFNvbWUgdikpKVxuXG5sZXQgcGF0dGVybiB0IHAgPVxuICBwYXR0ZXJuX3JlcyB0IHAgfD4gQXN0X3BhdHRlcm4udG9fZnVuY1xuICB8PiAoZnVuIGYgYSBiIGMgZCAtPlxuICAgICAgIGYgYSBiIGMgZFxuICAgICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpKVxuICB8PiBBc3RfcGF0dGVybi5vZl9mdW5jXG5cbm1vZHVsZSBGbG9hdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IEZsb2F0aW5nX2NvbnRleHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xuICB9XG5cbiAgbGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspO1xuICAgIH1cblxuICBsZXQgY29udmVydF9yZXMgdHMgeCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgbWF0Y2ggdHMgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgeyBjb250ZXh0OyBfIH0gOjogXyAtPiAoXG4gICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIHRzIH5mOihmdW4gdCAtPiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0KSk7XG4gICAgICAgIGxldCBhdHRyID0gQ29udGV4dC5nZXRfYXR0cmlidXRlIGNvbnRleHQgeCBpblxuICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dClcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICAgICAgfCBbIHQgXSAtPiBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICBcIk11bHRpcGxlIG1hdGNoIGZvciBmbG9hdGluZyBhdHRyaWJ1dGVzOiAlc1wiXG4gICAgICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgICAgICBbXSApKVxuXG4gIGxldCBjb252ZXJ0IHRzIHggPVxuICAgIGNvbnZlcnRfcmVzIHRzIHhcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIGlmXG4gICAgKG5vdFxuICAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBBdHRyaWJ1dGUgbmFtZS50eHRcbiAgICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpKVxuICAgICYmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZVxuICB0aGVuXG4gICAgbGV0IGFsbG93bGlzdCA9IE5hbWUuQWxsb3dsaXN0ZWQuZ2V0X2F0dHJpYnV0ZV9saXN0ICgpIGluXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgY29udGV4dCB+YWxsb3dsaXN0XG4gICAgICAgIFwiQXR0cmlidXRlIGAlcycgd2FzIG5vdCB1c2VkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBfID1cbiAgICAgIFtcbiAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICBdXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLlxuICAgICAgICBhIENvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBhdHRyc1xuICAgICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAgICAgICBjb2xsZWN0ZWRfZXJyb3JzKVxuICAgICAgICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXSwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfZmxvYXRpbmcgOiB0eXBlIGEuXG4gICAgICAgIGEgRmxvYXRpbmcuQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgY29udGV4dCBub2RlXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBTb21lICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgIChGbG9hdGluZy5Db250ZXh0LnJlcGxhY2VfYnlfZHVtbXkgY29udGV4dCBub2RlLCBjb2xsZWN0ZWRfZXJyb3JzKVxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTGFiZWxfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leHRlbnNpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4Y2VwdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4Y2VwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHRlbnNpb25fY29uc3RydWN0b3IgeCBpblxuICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBQYXR0ZXJuIHggaW5cbiAgICAgIHN1cGVyI3BhdHRlcm4gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29yZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXhwcmVzc2lvbiB4IGluXG4gICAgICBzdXBlciNleHByZXNzaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZXhwciB4IGluXG4gICAgICBzdXBlciNjbGFzc19leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9leHByIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGggUnRhZyBfIC0+IHNlbGYjY2hlY2tfbm9kZSBSdGFnIHggfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNyb3dfZmllbGQgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpIC0+XG4gICAgICAgICAgICBsZXQgZmllbGRzLCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KHNlbGYjY2hlY2tfbm9kZSBPYmplY3RfdHlwZV9maWVsZClcbiAgICAgICAgICAgICAgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZyksIExpc3QuY29uY2F0IGVycm9ycylcbiAgICAgICAgfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFN0cnVjdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V2YWwgaXRlbVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTaWduYXR1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc2lnX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcbiAgZW5kXG5cbmxldCBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIG1hdGNoIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmFpc2VfaWZfbm9uX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLiBhIENvbnRleHQudCAtPiBhIC0+IGEgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gbm9kZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIExpc3QuaXRlciBhdHRyc1xuICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgICAgICAgICAgICBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyKTtcbiAgICAgICAgICAgIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2xhYmVsX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4dGVuc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXhjZXB0aW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3BhdHRlcm4geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHByZXNzaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZV9maWVsZCB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcm93X2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcbiAgZW5kXG5cbmxldCByZXNldF9jaGVja3MgKCkgPSBBdHRyaWJ1dGVfdGFibGUuY2xlYXIgbm90X3NlZW5cblxubGV0IGNvbGxlY3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpXG4gICAgICAgID1cbiAgICAgIGxldCBsb2MgPSBDb21tb24ubG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUuYWRkIG5vdF9zZWVuIG5hbWUgbG9jXG4gIGVuZFxuXG5sZXQgY29sbGVjdF91bnNlZW5fZXJyb3JzICgpID1cbiAgbGV0IGZhaWwgbmFtZSBsb2MgYWNjID1cbiAgICBsZXQgdHh0ID0gbmFtZS50eHQgaW5cbiAgICBpZiBub3QgKE5hbWUuaWdub3JlX2NoZWNrcyB0eHQpIHRoZW5cbiAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBzaWxlbnRseSBkcm9wcGVkXCIgdHh0XG4gICAgICA6OiBhY2NcbiAgICBlbHNlIGFjY1xuICBpblxuICBBdHRyaWJ1dGVfdGFibGUuZm9sZCBmYWlsIG5vdF9zZWVuIFtdXG5cbmxldCBjaGVja19hbGxfc2VlbiAoKSA9XG4gIG1hdGNoIGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gPVxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLnJlbW92ZSB0YWJsZSBuYW1lXG4gIGVuZFxuXG5sZXQgY29weV9vZl9ub3Rfc2VlbiAoKSA9XG4gIGxldCBjb3B5ID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAoQXR0cmlidXRlX3RhYmxlLmxlbmd0aCBub3Rfc2VlbikgaW5cbiAgQXR0cmlidXRlX3RhYmxlLml0ZXIgKEF0dHJpYnV0ZV90YWJsZS5hZGQgY29weSkgbm90X3NlZW47XG4gIGNvcHlcblxubGV0IGRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSBzdCA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3N0cnVjdHVyZSBzdDtcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cblxubGV0IGRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSBzZyA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3NpZ25hdHVyZSBzZztcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIGZpbGVfcGF0aCA6IHN0cmluZztcbiAgbWFpbl9tb2R1bGVfbmFtZSA6IHN0cmluZztcbiAgc3VibW9kdWxlX3BhdGggOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIGVuY2xvc2luZ19tb2R1bGUgOiBzdHJpbmc7XG4gIGVuY2xvc2luZ192YWx1ZSA6IHN0cmluZyBvcHRpb247XG4gIHZhbHVlIDogc3RyaW5nIGxvYyBvcHRpb247XG4gIGluX2V4cHIgOiBib29sO1xufVxuXG5sZXQgdG9wX2xldmVsIH5maWxlX3BhdGggPVxuICBsZXQgbWFpbl9tb2R1bGVfbmFtZSA9XG4gICAgZmlsZV9wYXRoIHw+IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSB8PiBTdGRsaWIuRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvblxuICAgIHw+IFN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGluXG4gIHtcbiAgICBmaWxlX3BhdGg7XG4gICAgbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBzdWJtb2R1bGVfcGF0aCA9IFtdO1xuICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtYWluX21vZHVsZV9uYW1lO1xuICAgIGVuY2xvc2luZ192YWx1ZSA9IE5vbmU7XG4gICAgdmFsdWUgPSBOb25lO1xuICAgIGluX2V4cHIgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZmlsZV9wYXRoIHQgPSB0LmZpbGVfcGF0aFxubGV0IG1haW5fbW9kdWxlX25hbWUgdCA9IHQubWFpbl9tb2R1bGVfbmFtZVxubGV0IGVuY2xvc2luZ19tb2R1bGUgdCA9IHQuZW5jbG9zaW5nX21vZHVsZVxubGV0IGVuY2xvc2luZ192YWx1ZSB0ID0gdC5lbmNsb3NpbmdfdmFsdWVcblxubGV0IHN1Ym1vZHVsZV9wYXRoIHQgPVxuICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG5cbmxldCB2YWx1ZSB0ID0gT3B0aW9uLm1hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQudmFsdWVcblxubGV0IGZ1bGx5X3F1YWxpZmllZF9wYXRoIHQgPVxuICBsZXQgdmFsdWUgPSB2YWx1ZSB0IGluXG4gIGxldCBzdWJtb2R1bGVfcGF0aCA9XG4gICAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBTb21lIGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG4gIGluXG4gIGxldCBuYW1lcyA9IChTb21lIHQubWFpbl9tb2R1bGVfbmFtZSA6OiBzdWJtb2R1bGVfcGF0aCkgQCBbIHZhbHVlIF0gaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIEBAIExpc3QuZmlsdGVyX29wdCBuYW1lc1xuXG5sZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggaW5fZXhwciA9IHRydWUgfVxuXG5sZXQgZW50ZXJfbW9kdWxlIH5sb2MgbW9kdWxlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHN1Ym1vZHVsZV9wYXRoID0geyB0eHQgPSBtb2R1bGVfbmFtZTsgbG9jIH0gOjogdC5zdWJtb2R1bGVfcGF0aDtcbiAgICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZTtcbiAgICB9XG5cbmxldCBlbnRlcl92YWx1ZSB+bG9jIHZhbHVlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHZhbHVlID0gU29tZSB7IHR4dCA9IHZhbHVlX25hbWU7IGxvYyB9O1xuICAgICAgZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lO1xuICAgIH1cblxubGV0IHRvX3N0cmluZ19wYXRoIHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgKHQuZmlsZV9wYXRoIDo6IHN1Ym1vZHVsZV9wYXRoIHQpXG5sZXQgd2l0aF9zdHJpbmdfcGF0aCBmIH5sb2MgfnBhdGggPSBmIH5sb2MgfnBhdGg6KHRvX3N0cmluZ19wYXRoIHBhdGgpOztcblxubGV0IG1vZHVsZSBNID0gc3RydWN0XG4gIGxldCBhID0gXCJsb2xcIlxuZW5kIGluXG5NLmFcbiIsIm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgdG9vbF9uYW1lIDogc3RyaW5nOyBjb2RlX3BhdGggOiBDb2RlX3BhdGgudDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgbGV0IHRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWUgPVxuICAgIGxldCBjb2RlX3BhdGggPSBDb2RlX3BhdGgudG9wX2xldmVsIH5maWxlX3BhdGggaW5cbiAgICB7IHRvb2xfbmFtZTsgY29kZV9wYXRoOyBpbnB1dF9uYW1lIH1cblxuICBsZXQgY29kZV9wYXRoIHQgPSB0LmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQudG9vbF9uYW1lXG4gIGxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfZXhwciB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX21vZHVsZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX21vZHVsZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl92YWx1ZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2MgOiBMb2NhdGlvbi50OyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYyB+YmFzZSAoKSA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYzsgYmFzZSB9XG4gIGxldCBleHRlbnNpb25fcG9pbnRfbG9jIHQgPSB0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBkZXJpdmVkX2l0ZW1fbG9jIDogTG9jYXRpb24udDsgaW5saW5lIDogYm9vbDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmRlcml2ZWRfaXRlbV9sb2MgfmlubGluZSB+YmFzZSAoKSA9XG4gICAgeyBkZXJpdmVkX2l0ZW1fbG9jOyBiYXNlOyBpbmxpbmUgfVxuXG4gIGxldCBkZXJpdmVkX2l0ZW1fbG9jIHQgPSB0LmRlcml2ZWRfaXRlbV9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuICBsZXQgaW5saW5lIHQgPSB0LmlubGluZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5kZXJpdmVkX2l0ZW1fbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb24uV2l0aF9lcnJvcnNcbmluY2x1ZGUgQXN0X3RyYXZlcnNlMFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBQcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gQXN0LmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBlbmRcblxubGV0IG1vZHVsZV9uYW1lID0gZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgbmFtZSAtPiBuYW1lXG5sZXQgZW50ZXIgbmFtZSBwYXRoID0gaWYgU3RyaW5nLmlzX2VtcHR5IHBhdGggdGhlbiBuYW1lIGVsc2UgcGF0aCBeIFwiLlwiIF4gbmFtZVxubGV0IGVudGVyX29wdCBuYW1lX29wdCBwYXRoID0gZW50ZXIgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBwYXRoXG5cbmNsYXNzIG1hcF93aXRoX3BhdGggPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmddIG1hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgICgqIFdBUzpcbiAgICAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4ID1cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFBzdHJfbW9kdWxlIG1iIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgKGVudGVyIG1iLnBtYl9uYW1lLnR4dCBwYXRoKSB4XG4gICAgICAgfCBfIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4XG5cbiAgICAgICBPdmVycmlkaW5nIFttb2R1bGVfYmluZGluZ10gc2VlbXMgdG8gYmUgT0sgYmVjYXVzZSBpdCBkb2VzIG5vdCBjYXRjaFxuICAgICAgIGxvY2FsIG1vZHVsZSBiaW5kaW5ncyBiZWNhdXNlIGF0IHRoZSBtb21lbnQgdGhlIHBhcnNldHJlZSBkb2Vzbid0IG1ha2VcbiAgICAgICB1c2Ugb2YgW21vZHVsZV9iaW5kaW5nXSBmb3IgbG9jYWwgbW9kdWxlcywgYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGluIHRoZVxuICAgICAgIGZ1dHVyZSwgc28gdGhpcyBtaWdodCBiZSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG4gICAgICAgVGhlIGZvbGxvd2luZzpcblxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG5cbiAgICAgICBpcyBkaXNhbGxvd2VkLCBidXRcblxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuXG4gICAgICAgaXNuJ3QsIGFuZCB0aGUgXCJwYXRoXCIgY29uc3RydWN0ZWQgaGVyZSB3b3VsZCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICBiZXR3ZWVuIHRoZW0uICopXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBwYXRoIG1iID1cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIChlbnRlcl9vcHQgbWIucG1iX25hbWUudHh0IHBhdGgpIG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBwYXRoIG1kID1cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiAoZW50ZXJfb3B0IG1kLnBtZF9uYW1lLnR4dCBwYXRoKSBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBwYXRoIG10ZCA9XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoZW50ZXIgbXRkLnBtdGRfbmFtZS50eHQgcGF0aCkgbXRkXG4gIGVuZFxuXG5sZXQgdmFyX25hbWVzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIGZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwIGFjYyA9XG4gICAgICBsZXQgYWNjID0gc3VwZXIjcGF0dGVybiBwIGFjYyBpblxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHR4dCA6OiBhY2MgfCBfIC0+IGFjY1xuICBlbmRcblxubGV0IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYyBuYW1lX29wdCBjdHh0ID1cbiAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyAobW9kdWxlX25hbWUgbmFtZV9vcHQpIGN0eHRcblxubGV0IGVudGVyX3ZhbHVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfdmFsdWVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfaWRlbnQgKGxpZGVudCBfXycpKSlcbiAgICBGbi5pZFxuXG5sZXQgZW50ZXJfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2V4cHJcbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9jb25zdHJ1Y3QgKGxpZGVudCBfXycpIG5vbmUpKVxuICAgIEZuLmlkXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxuY2xhc3MgbWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyA9XG4gIGxldCByZXR1cm4gX2N0eCB4ID0gKHgsIFtdKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdFxuICAgICAgW0V4cGFuc2lvbl9jb250ZXh0LkJhc2UudCwgTG9jYXRpb24uRXJyb3IudCBsaXN0XSBsaWZ0X21hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBpbnQgPSByZXR1cm5cbiAgICBtZXRob2Qgc3RyaW5nID0gcmV0dXJuXG4gICAgbWV0aG9kIGJvb2wgPSByZXR1cm5cbiAgICBtZXRob2QgY2hhciA9IHJldHVyblxuICAgIG1ldGhvZCBmbG9hdCA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQzMiA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQ2NCA9IHJldHVyblxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSByZXR1cm5cbiAgICBtZXRob2QgdW5pdCA9IHJldHVyblxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCkgLT5cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgICAgICAnYSBhcnJheSAtPlxuICAgICAgICAgICdhIGFycmF5ICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+XG4gICAgICAgIGxldCBsaXN0LCBlcnJvcnMgPSBzZWxmI2xpc3QgZiBjdHggKEFycmF5LnRvX2xpc3QgYSkgaW5cbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgbGlzdCwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIG90aGVyIDogJ2EuIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIF8gXyAtPiBbXVxuXG4gICAgbWV0aG9kIHJlY29yZCBfY3R4IGZpZWxkcyA9IExpc3QuY29uY2F0X21hcCBmaWVsZHMgfmY6c25kXG4gICAgbWV0aG9kIGNvbnN0ciBfY3R4IF90YWcgYXJncyA9IExpc3QuY29uY2F0IGFyZ3NcbiAgICBtZXRob2QgdHVwbGUgX2N0eCBsID0gTGlzdC5jb25jYXQgbFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGN0eHRcbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFzIGV4cHIpID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfdmFsdWUgZXhwciB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlID4+PSBmdW4gY3R4dCAtPlxuICAgICAgbGV0IGN0eHQgPSBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX2V4cHIgY3R4dCBpblxuICAgICAgbGV0IHBleHBfZGVzYywgZGVzY19lcnJvcnMgPVxuICAgICAgICBtYXRjaCBwZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSkgLT5cbiAgICAgICAgICAgIGxldCBuYW1lLCBuYW1lX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4dCBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZV9leHByLCBtb2R1bGVfZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgICBsZXQgd2l0aF9sZXRfbW9kdWxlID1cbiAgICAgICAgICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSBleHByXG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bW9kdWxlX2V4cHIucG1vZF9sb2MgbmFtZS50eHQgY3R4dFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB3aXRoX2xldF9tb2R1bGUgPj49IGZ1biBjdHh0IC0+IHNlbGYjbW9kdWxlX2V4cHIgY3R4dCBtb2R1bGVfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBib2R5LCBib2R5X2Vycm9ycyA9IHNlbGYjZXhwcmVzc2lvbiBjdHh0IGJvZHkgaW5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHh0IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgbmFtZV9lcnJvcnM7IG1vZHVsZV9leHByX2Vycm9yczsgYm9keV9lcnJvcnMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpLCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHh0IHBleHBfZGVzY1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvYyBpblxuICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBsb2Nfc3RhY2tfZXJyb3JzID1cbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvY19zdGFja1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGN0eHQgcGV4cF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBkZXNjX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIGxvY19zdGFja19lcnJvcnMpO1xuICAgICAgICAgICAgKFwiYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgXSApXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGN0eHQgbWUgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2V4cHIgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl9tb2R1bGUgbWUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2V4cHIgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9leHByIGN0eHQgbWVcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgY3R4dCBtYiA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfYmluZGluZyA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyBtYlxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptYi5wbWJfbG9jIG1iLnBtYl9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfYmluZGluZyA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgY3R4dCBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uIG1kXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1kLnBtZF9sb2MgbWQucG1kX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gbXRkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2M6bXRkLnBtdGRfbG9jXG4gICAgICAgICAgICAgIG10ZC5wbXRkX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPlxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGRcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZCA9XG4gICAgICBsZXQgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiB2ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6dmQucHZhbF9sb2MgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAgICAgICBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIGN0eHRcbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYXMgdmIpID1cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIHZiIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSAoKSAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIGN0eHQgdmJcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpbl9iaW5kaW5nX2N0eHQgPVxuICAgICAgICAgICAgbWF0Y2ggdmFyX25hbWVzX29mI3BhdHRlcm4gcHZiX3BhdCBbXSB3aXRoXG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT4gY3R4dFxuICAgICAgICAgICAgfCBbIHZhcl9uYW1lIF0gLT5cbiAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6cHZiX2xvYyB2YXJfbmFtZSBjdHh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX3BhdCwgcGF0X2Vycm9ycyA9IHNlbGYjcGF0dGVybiBjdHh0IHB2Yl9wYXQgaW5cbiAgICAgICAgICBsZXQgcHZiX2V4cHIsIGV4cHJfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBpbl9iaW5kaW5nX2N0eHQgcHZiX2V4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGluX2JpbmRpbmdfY3R4dCBwdmJfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcHZiX2xvYyBpblxuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwYXRfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBleHByX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBlcnJvcnMpXG4gIGVuZFxuXG5jbGFzcyBzZXhwX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbU2V4cC50XSBBc3QubGlmdFxuICAgIG1ldGhvZCBpbnQgPSBzZXhwX29mX2ludFxuICAgIG1ldGhvZCBzdHJpbmcgPSBzZXhwX29mX3N0cmluZ1xuICAgIG1ldGhvZCBib29sID0gc2V4cF9vZl9ib29sXG4gICAgbWV0aG9kIGNoYXIgPSBzZXhwX29mX2NoYXJcbiAgICBtZXRob2QgZmxvYXQgPSBzZXhwX29mX2Zsb2F0XG4gICAgbWV0aG9kIGludDMyID0gc2V4cF9vZl9pbnQzMlxuICAgIG1ldGhvZCBpbnQ2NCA9IHNleHBfb2ZfaW50NjRcbiAgICBtZXRob2QgbmF0aXZlaW50ID0gc2V4cF9vZl9uYXRpdmVpbnRcbiAgICBtZXRob2QgdW5pdCA9IHNleHBfb2ZfdW5pdFxuICAgIG1ldGhvZCBvcHRpb24gPSBzZXhwX29mX29wdGlvblxuICAgIG1ldGhvZCBsaXN0ID0gc2V4cF9vZl9saXN0XG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSAtPiBTZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHAudCA9IHNleHBfb2ZfYXJyYXlcbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2EgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiXG5cbiAgICBtZXRob2QgcmVjb3JkIGZpZWxkcyA9XG4gICAgICBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAobGFiZWwsIHNleHApIC0+XG4gICAgICAgICAgICAgU2V4cC5MaXN0IFsgQXRvbSBsYWJlbDsgc2V4cCBdKSlcblxuICAgIG1ldGhvZCBjb25zdHIgdGFnIGFyZ3MgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoIFtdIC0+IEF0b20gdGFnIHwgXyAtPiBMaXN0IChBdG9tIHRhZyA6OiBhcmdzKVxuXG4gICAgbWV0aG9kIHR1cGxlIGwgPSBMaXN0IGxcbiAgZW5kXG5cbmxldCBzZXhwX29mID0gbmV3IHNleHBfb2ZcbiIsIiMgMSBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuIFxub3BlbiBMZXhpbmdcblxubGV0IHVwZGF0ZV9sb2MgbGV4YnVmIGxpbmVzX3RvX3NraXAgPVxuICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBwb3Mgd2l0aFxuICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgbGluZXNfdG9fc2tpcDtcbiAgICBwb3NfYm9sID0gcG9zLnBvc19jbnVtO1xuICB9XG5cbiMgMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgc2tpcF9oYXNoX2JhbmcgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE0IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDMgKVxuIyAxMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMSAtPlxuIyAxNiBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAxIClcbiMgMTE4IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDIgLT5cbiMgMTcgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICAoICgpIClcbiMgMTIzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuIEltcG9ydFxuXG5sZXQgd2l0aF9vdXRwdXQgZm4gfmJpbmFyeSB+ZiA9XG4gIG1hdGNoIGZuIHdpdGhcbiAgfCBOb25lIHwgU29tZSBcIi1cIiAtPlxuICAgICAgKCogRmxpcHBpbmcgYmFjayBhbmQgZm9ydGggZnJvbSBiaW5hcnkgdG8gdGV4dCBpcyBub3RcbiAgICAgICAgIGEgZ29vZCBpZGVhLCBzbyB3ZSdsbCBtYWtlIHR3byBzaW1wbGlmeWluZyBhc3N1bXB0aW9uczpcbiAgICAgICAgIDEuIEFzc3VtZSB0aGF0IG5vdGhpbmcgaXMgYnVmZmVyZWQgb24gc3Rkb3V0IGJlZm9yZVxuICAgICAgICAgICAgZW50ZXJpbmcgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICAgICBmbHVzaCB0aGUgc3Rkb3V0IG9uIGVudHJ5LlxuICAgICAgICAgMi4gQXNzdW1lIHRoYXQgbm90aGluZyBlbHNlIGlzIHNlbnQgdG8gc3Rkb3V0IGFmdGVyXG4gICAgICAgICAgICBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIGl0IGlzIHNhZmUgdG8gbGVhdmUgc3Rkb3V0XG4gICAgICAgICAgICBjaGFubmVsIGluIGJpbmFyeSBtb2RlIChvciB0ZXh0IG1vZGUgaWYgW2JpbmFyeT10cnVlXSlcbiAgICAgICAgICAgIGFmdGVyIHRoZSBmdW5jdGlvbiBpcyBkb25lLiAqKVxuICAgICAgc2V0X2JpbmFyeV9tb2RlX291dCBzdGRvdXQgYmluYXJ5O1xuICAgICAgZiBzdGRvdXRcbiAgfCBTb21lIGZuIC0+IE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+YmluYXJ5IH5mXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgfCBJbXBsXG5cbiAgbGV0IG9mX2ZpbGVuYW1lIGZuIDogdCBvcHRpb24gPVxuICAgIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxcIiB0aGVuIFNvbWUgSW1wbFxuICAgIGVsc2UgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbGlcIiB0aGVuIFNvbWUgSW50ZlxuICAgIGVsc2UgTm9uZVxuXG4gIGxldCBkZXNjcmliZSA9IGZ1bmN0aW9uIEltcGwgLT4gXCJpbXBsZW1lbnRhdGlvblwiIHwgSW50ZiAtPiBcImludGVyZmFjZVwiXG4gIGxldCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gUG9seS5lcXVhbFxuZW5kXG5cbm1vZHVsZSBJbnRmX29yX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuXG4gIGxldCBtYXAgdCAobWFwIDogQXN0X3RyYXZlcnNlLm1hcCkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIHgpXG5cbiAgbGV0IG1hcF93aXRoX2NvbnRleHQgdCAobWFwIDogXyBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dCkgY3R4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIGN0eCB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgY3R4IHgpXG5cbiAgbGV0IGtpbmQgOiBfIC0+IEtpbmQudCA9IGZ1bmN0aW9uIEludGYgXyAtPiBJbnRmIHwgSW1wbCBfIC0+IEltcGxcbmVuZFxuXG5tb2R1bGUgQXN0X2lvID0gc3RydWN0XG4gIHR5cGUgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfdmVyc2lvbilcblxuICBsZXQgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKVxuICAoKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgaW5wdXQgdmVyc2lvbiBjYW4ndCBiZSBkZXRlcm1pbmVkIGR1ZSB0b1xuICAgICAgbG9hZGluZyBvciBwcmVwcm9jZXNzaW5nIGVycm9ycyAqKVxuXG4gIHR5cGUgdCA9IHtcbiAgICBpbnB1dF9uYW1lIDogc3RyaW5nO1xuICAgIGlucHV0X3ZlcnNpb24gOiBpbnB1dF92ZXJzaW9uO1xuICAgIGFzdCA6IEludGZfb3JfaW1wbC50O1xuICB9XG5cbiAgdHlwZSByZWFkX2Vycm9yID1cbiAgICB8IE5vdF9hX2JpbmFyeV9hc3RcbiAgICB8IFVua25vd25fdmVyc2lvbiBvZiBzdHJpbmcgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFN5c3RlbV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuXG4gIHR5cGUgaW5wdXRfc291cmNlID0gU3RkaW4gfCBGaWxlIG9mIHN0cmluZ1xuICB0eXBlIGlucHV0X2tpbmQgPSBQb3NzaWJseV9zb3VyY2Ugb2YgS2luZC50ICogc3RyaW5nIHwgTmVjZXNzYXJpbHlfYmluYXJ5XG5cbiAgbGV0IHJlYWRfZXJyb3JfdG9fc3RyaW5nIChlcnJvciA6IHJlYWRfZXJyb3IpID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0IC0+IFwiRXJyb3I6IE5vdCBhIGJpbmFyeSBhc3RcIlxuICAgIHwgVW5rbm93bl92ZXJzaW9uIChzLCBfKSAtPiBcIkVycm9yOiBVbmtub3duIHZlcnNpb24gXCIgXiBzXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3IgKGxvYywgXykgLT5cbiAgICAgICAgXCJTb3VyY2UgcGFyc2UgZXJyb3I6XCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuICAgIHwgU3lzdGVtX2Vycm9yIChsb2MsIF8pIC0+IFwiU3lzdGVtIGVycm9yOiBcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG5cbiAgbGV0IHBhcnNlX3NvdXJjZV9jb2RlIH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGljXG4gICAgICA9XG4gICAgKCogVGhlIGlucHV0IHZlcnNpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBpbnB1dCB3aWxsIGdldCBwYXJzZWQgYnlcbiAgICAgICB0aGUgY3VycmVudCBjb21waWxlciBQYXJzZSBtb2R1bGUgKilcbiAgICBsZXQgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIGluXG4gICAgdHJ5XG4gICAgICAoKiBUbyB0ZXN0IGlmIGEgZmlsZSBpcyBhbiBBU1QgZmlsZSwgd2UgaGF2ZSB0byByZWFkIHRoZSBmaXJzdCBmZXcgYnl0ZXMgb2YgdGhlXG4gICAgICAgICBmaWxlLiBJZiBpdCBpcyBub3QsIHdlIGhhdmUgdG8gcGFyc2UgdGhlc2UgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWxlIGFzXG4gICAgICAgICBzb3VyY2UgY29kZS5cbiAgICAgICAgIFRoZSBjb21waWxlciBqdXN0IGRvZXMgW3NlZWtfb24gMF0gaW4gdGhpcyBjYXNlLCBob3dldmVyIHRoaXMgZG9lc24ndCB3b3JrXG4gICAgICAgICB3aGVuIHRoZSBpbnB1dCBpcyBhIHBpcGUuXG4gICAgICAgICBXaGF0IHdlIGRvIGlzIHdlIGJ1aWxkIGEgc3RyaW5nIG9mIHRoZSB3aG9sZSBzb3VyY2UsIGFwcGVuZCB0aGUgcHJlZml4XG4gICAgICAgICBhbmQgYnVpbHQgYSBsZXhpbmcgYnVmZmVyIGZyb20gdGhhdC5cbiAgICAgICAgIFdlIGhhdmUgdG8gcHV0IGFsbCB0aGUgc291cmNlIGludG8gdGhlIGxleGluZyBidWZmZXIgYXQgb25jZSB0aGlzIHdheVxuICAgICAgICAgZm9yIHNvdXJjZSBxdW90YXRpb24gdG8gd29yayBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICAgICAgIFNlZSBvY2FtbCMxMjIzOCBhbmQgb2NhbWwvZHJpdmVyL3BwYXJzZS5tbC4gKilcbiAgICAgIGxldCBhbGxfc291cmNlID0gcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgXiBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBhbGxfc291cmNlIGluXG4gICAgICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IGxleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gaW5wdXRfbmFtZSB9O1xuICAgICAgQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9sZXhidWYgKFNvbWUgbGV4YnVmKTtcbiAgICAgIFNraXBfaGFzaF9iYW5nLnNraXBfaGFzaF9iYW5nIGxleGJ1ZjtcbiAgICAgIGxldCBhc3QgOiBJbnRmX29yX2ltcGwudCA9XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IEludGYgLT4gSW50ZiAoUGFyc2UuaW50ZXJmYWNlIGxleGJ1ZilcbiAgICAgICAgfCBJbXBsIC0+IEltcGwgKFBhcnNlLmltcGxlbWVudGF0aW9uIGxleGJ1ZilcbiAgICAgIGluXG4gICAgICBPayB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgbWFnaWNfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG4gIGxldCByZWFkX21hZ2ljIGljID1cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIH5wb3M6MCB+bGVuIGluXG4gICAgaWYgbGVuID0gbWFnaWNfbGVuZ3RoIHRoZW4gT2sgcyBlbHNlIEVycm9yIHNcblxuICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lID1cbiAgICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpYyA9XG4gICAgICAoKiBzZXQgaW5wdXQgbGV4YnVmIGZvciBlcnJvciBtZXNzYWdlcy4gKilcbiAgICAgIGxldCBzb3VyY2UgPSBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzb3VyY2UgaW5cbiAgICAgIEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbGV4YnVmIChTb21lIGxleGJ1Zik7XG4gICAgICBsZXhidWZcbiAgICBpblxuICAgIG1hdGNoIEluX2NoYW5uZWwud2l0aF9maWxlIH5iaW5hcnk6dHJ1ZSBpbnB1dF9uYW1lIH5mOnNldF9pbnB1dF9sZXhidWYgd2l0aFxuICAgIHwgKF8gOiBMZXhpbmcubGV4YnVmKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIFN5c19lcnJvciBfIC0+ICgpXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBjaCB+aW5wdXRfa2luZCA9XG4gICAgbGV0IGhhbmRsZV9ub25fYmluYXJ5IHByZWZpeF9yZWFkX2Zyb21fc291cmNlID1cbiAgICAgIG1hdGNoIGlucHV0X2tpbmQgd2l0aFxuICAgICAgfCBQb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIC0+XG4gICAgICAgICAgcGFyc2Vfc291cmNlX2NvZGUgfmtpbmQgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGNoXG4gICAgICB8IE5lY2Vzc2FyaWx5X2JpbmFyeSAtPiBFcnJvciBOb3RfYV9iaW5hcnlfYXN0XG4gICAgaW5cbiAgICAoKiBNYXJzaGFsbGVkIEFTVCBtdXN0IGJlIHJlYWQgaW4gYmluYXJ5IG1vZGUuIEV2ZW4gdGhvdWdoIHdlIGRvbid0IGtub3dcbiAgICAgICBiZWZvcmUgcmVhZGluZyB0aGUgbWFnaWMgbnVtYmVyIHdoZW4gdGhlIGZpbGUgaGFzIGEgbWFyc2hhbGxlZCBBU1QsXG4gICAgICAgaXQgaXMgc2FmZSB0byByZWFkIHNvdXJjZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gKilcbiAgICBzZXRfYmluYXJ5X21vZGVfaW4gY2ggdHJ1ZTtcbiAgICBtYXRjaCByZWFkX21hZ2ljIGNoIHdpdGhcbiAgICB8IEVycm9yIHMgLT4gaGFuZGxlX25vbl9iaW5hcnkgc1xuICAgIHwgT2sgcyAtPiAoXG4gICAgICAgIG1hdGNoIEZpbmRfdmVyc2lvbi5mcm9tX21hZ2ljIHMgd2l0aFxuICAgICAgICB8IEludGYgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWU7XG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkludGYgKElucHV0X3RvX3BweGxpYi5jb3B5X3NpZ25hdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgSW1wbCAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW1wbCAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc3RydWN0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBVbmtub3duIC0+XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgfHwgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICB0aGVuIEVycm9yIChVbmtub3duX3ZlcnNpb24gKHMsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSlcbiAgICAgICAgICAgIGVsc2UgaGFuZGxlX25vbl9iaW5hcnkgcylcblxuICBsZXQgcmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggaW5wdXRfc291cmNlIHdpdGhcbiAgICAgIHwgU3RkaW4gLT5cbiAgICAgICAgICBzZXRfYmluYXJ5X21vZGVfaW4gc3RkaW4gdHJ1ZTtcbiAgICAgICAgICBmcm9tX2NoYW5uZWwgc3RkaW4gfmlucHV0X2tpbmRcbiAgICAgIHwgRmlsZSBmbiAtPiBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kKVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCB3cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24pOyBhc3QgfVxuICAgICAgfmFkZF9wcHhfY29udGV4dCA9XG4gICAgbGV0IG1vZHVsZSBQcHhsaWJfdG9faW5wdXQgPSBDb252ZXJ0IChKcykgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbGV0IG1vZHVsZSBPY2FtbF90b19pbnB1dCA9IENvbnZlcnQgKENvbXBpbGVyX3ZlcnNpb24pIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgfCBJbnRmIHNnIC0+XG4gICAgICAgIGxldCBzZyA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHNnXG4gICAgfCBJbXBsIHN0IC0+XG4gICAgICAgIGxldCBzdCA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHN0XG5cbiAgbW9kdWxlIFJlYWRfYmluID0gc3RydWN0XG4gICAgdHlwZSBhc3QgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG4gICAgdHlwZSB0ID0geyBhc3QgOiBhc3Q7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gICAgbGV0IHJlYWRfYmluYXJ5IGZuID1cbiAgICAgIG1hdGNoXG4gICAgICAgIEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQ6TmVjZXNzYXJpbHlfYmluYXJ5KVxuICAgICAgd2l0aFxuICAgICAgfCBPayB7IGFzdDsgaW5wdXRfbmFtZTsgXyB9IC0+XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgICAgfCBJbXBsIHN0cnVjdHVyZSAtPiBJbXBsIHN0cnVjdHVyZVxuICAgICAgICAgICAgfCBJbnRmIHNpZ25hdHVyZSAtPiBJbnRmIHNpZ25hdHVyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgeyBhc3Q7IGlucHV0X25hbWUgfVxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChyZWFkX2Vycm9yX3RvX3N0cmluZyBlKVxuXG4gICAgbGV0IGdldF9hc3QgdCA9IHQuYXN0XG4gICAgbGV0IGdldF9pbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5c3RlbSA9IHN0cnVjdFxuICBsZXQgcnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0IH5vdXRwdXQgPVxuICAgIGxldCBjb21tYW5kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgPiAlc1wiIHBwXG4gICAgICAgIChpZiBTdHJpbmcuZXF1YWwgaW5wdXQgXCItXCIgdGhlbiBcIlwiIGVsc2UgU3RkbGliLkZpbGVuYW1lLnF1b3RlIGlucHV0KVxuICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIG91dHB1dClcbiAgICBpblxuICAgIGlmIFN0ZGxpYi5TeXMuY29tbWFuZCBjb21tYW5kID0gMCB0aGVuIE9rICgpXG4gICAgZWxzZSBFcnJvciAoY29tbWFuZCwgQXN0X2lvLmZhbGxfYmFja19pbnB1dF92ZXJzaW9uKVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5tb2R1bGUgRmlsZW5hbWUgPSBTdGRsaWIuRmlsZW5hbWVcblxuKCogVE9ETzogbWFrZSB0aGUgXCJkZXJpdmluZy5cIiBkZXBlbmQgb24gdGhlIG1hdGNoaW5nIGF0dHJpYnV0ZSBuYW1lLiAqKVxubGV0IGVuZF9tYXJrZXJfc2lnID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTaWduYXR1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZW5kX21hcmtlcl9zdHIgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFN0cnVjdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbm1vZHVsZSB0eXBlIFQxID0gc2lnXG4gIHR5cGUgJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBnZXRfbG9jIDogdCAtPiBMb2NhdGlvbi50XG4gIHZhbCBlbmRfbWFya2VyIDogKHQsIHVuaXQpIEF0dHJpYnV0ZS5GbG9hdGluZy50XG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA6IHNpZ1xuICAgIHZhbCBhcHBseSA6XG4gICAgICA8IHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gVC50XG4gICAgICA7IHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gVC50XG4gICAgICA7IC4uID4gLT5cbiAgICAgIHQgVC50XG4gIGVuZFxuXG4gIHZhbCBwYXJzZSA6IExleGluZy5sZXhidWYgLT4gdCBsaXN0XG4gIHZhbCBwcCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19zZXhwIDogdCAtPiBTZXhwLnRcbmVuZCkgPVxuc3RydWN0XG4gIGxldCBleHRyYWN0X3ByZWZpeCB+cG9zIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcInBweGxpYjogW0BAQEBAQCVzXSBhdHRyaWJ1dGUgbWlzc2luZ1wiXG4gICAgICAgICAgICAgICAgKEF0dHJpYnV0ZS5GbG9hdGluZy5uYW1lIE0uZW5kX21hcmtlciksXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuRmxvYXRpbmcuY29udmVydF9yZXMgWyBNLmVuZF9tYXJrZXIgXSB4IHdpdGhcbiAgICAgICAgICB8IE9rIE5vbmUgLT4gbG9vcCAoeCA6OiBhY2MpIGxcbiAgICAgICAgICB8IE9rIChTb21lICgpKSAtPiBPayAoTGlzdC5yZXYgYWNjLCAoTS5nZXRfbG9jIHgpLmxvY19zdGFydClcbiAgICAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgICAgIHwgZXhjZXB0aW9uIEZhaWx1cmUgXyAtPiBsb29wICh4IDo6IGFjYykgbClcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG4gIGxldCByZW1vdmVfbG9jID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgICAgbWV0aG9kISBsb2NhdGlvbiBfID0gTG9jYXRpb24ubm9uZVxuICAgICAgbWV0aG9kISBsb2NhdGlvbl9zdGFjayBfID0gW11cbiAgICBlbmRcblxuICBtb2R1bGUgTV9tYXAgPSBNLlRyYW5zZm9ybSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCByZW1vdmVfbG9jIHggPSBNX21hcC5hcHBseSByZW1vdmVfbG9jIHhcbiAgbGV0IHJlYyBsYXN0IHByZXYgPSBmdW5jdGlvbiBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGRpZmZfYXN0cyB+Z2VuZXJhdGVkIH5yb3VuZF90cmlwID1cbiAgICBsZXQgd2l0aF90ZW1wX2ZpbGUgZiA9XG4gICAgICBFeG4ucHJvdGVjdHhcbiAgICAgICAgKEZpbGVuYW1lLnRlbXBfZmlsZSBcInBweGxpYlwiIFwiXCIpXG4gICAgICAgIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mXG4gICAgaW5cbiAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMSAtPlxuICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMiAtPlxuICAgICAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZHVtcCBmbiBhc3QgPVxuICAgICAgICAgICAgICAgICAgT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgICAgICAgICAgICAgIFNleHAucHBfaHVtIHBwZiAoTS50b19zZXhwIGFzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGR1bXAgZm4xIGdlbmVyYXRlZDtcbiAgICAgICAgICAgICAgICBkdW1wIGZuMiByb3VuZF90cmlwO1xuICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCJwYXRkaWZmIC1hc2NpaSAtYWx0LW9sZCBnZW5lcmF0ZWQgLWFsdC1uZXcgXFxcbiAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9rID1cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaWZmIC0tbGFiZWwgZ2VuZXJhdGVkIC0tbGFiZWwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBvayB0aGVuIEluX2NoYW5uZWwucmVhZF9hbGwgb3V0XG4gICAgICAgICAgICAgICAgZWxzZSBcIjxubyBkaWZmZXJlbmNlcyBwcm9kdWNlZCBieSBkaWZmPlwiKSkpXG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzID1cbiAgICBtYXRjaCBNLnBhcnNlIChMZXhpbmcuZnJvbV9zdHJpbmcgcykgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgcmVjIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2UgPVxuICAgIG1hdGNoIChleHBlY3RlZCwgc291cmNlKSB3aXRoXG4gICAgfCBbXSwgW10gLT4gKClcbiAgICB8IFtdLCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyAoTS5nZXRfbG9jIHgpIHdpdGggbG9jX2VuZCA9IChNLmdldF9sb2MgKGxhc3QgeCBsKSkubG9jX2VuZCB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFtdXG4gICAgfCBfLCBbXSAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IExvY2F0aW9uLmxvY19naG9zdCA9IGZhbHNlOyBsb2Nfc3RhcnQgPSBlbmRfcG9zOyBsb2NfZW5kID0gZW5kX3BvcyB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIGV4cGVjdGVkXG4gICAgfCB4IDo6IGV4cGVjdGVkLCB5IDo6IHNvdXJjZSAtPlxuICAgICAgICBsZXQgbG9jID0gTS5nZXRfbG9jIHkgaW5cbiAgICAgICAgbGV0IHggPSByZW1vdmVfbG9jIHggaW5cbiAgICAgICAgbGV0IHkgPSByZW1vdmVfbG9jIHkgaW5cbiAgICAgICAgaWYgUG9seS4oIDw+ICkgeCB5IHRoZW4gKFxuICAgICAgICAgIGxldCByb3VuZF90cmlwID1cbiAgICAgICAgICAgIHJlbW92ZV9sb2MgKHBhcnNlX3N0cmluZyAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIE0ucHAgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHJvdW5kX3RyaXAgdGhlblxuICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICAgICAgICAgICAgXCJwcHhsaWI6IHRoZSBjb3JyZWN0ZWQgY29kZSBkb2Vzbid0IHJvdW5kLXRyaXAuXFxuXFxcbiAgICAgICAgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIE9DYW1sIHByaW50ZXI6XFxuXFxcbiAgICAgICAgICAgICAgICVzXCJcbiAgICAgICAgICAgICAgKGRpZmZfYXN0cyB+Z2VuZXJhdGVkOnggfnJvdW5kX3RyaXApO1xuICAgICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFsgeCBdKTtcbiAgICAgICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuXG4gIGxldCBkb19tYXRjaCB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBzb3VyY2UgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGV4dHJhY3RfcHJlZml4IH5wb3Mgc291cmNlID4+fCBmdW4gKHNvdXJjZSwgZW5kX3BvcykgLT5cbiAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5lbmRcblxuKCokKilcbm1vZHVsZSBTdHIgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc3RyX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc3RyXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbXBsZW1lbnRhdGlvblxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmVfaXRlbVxuZW5kKVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5tb2R1bGUgU2lnID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHNpZ25hdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHNpZ19sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3NpZ1xuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc2lnbmF0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW50ZXJmYWNlXG4gIGxldCBwcCA9IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZV9pdGVtXG5lbmQpXG5cbigqJCopXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmVfcmVzID0gU3RyLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3N0cnVjdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlX3JlcyA9IFNpZy5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zaWduYXR1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cblxudHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHB4X2ltcG9ydCA6IHR5cGVfZGVjbGFyYXRpb24gdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFBweF9pbXBvcnQgLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcblxuICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgZnVuIGEgYiAtPlxuICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgfCBDbGFzc19leHByLCBDbGFzc19leHByIC0+IEVxXG4gICAgfCBDbGFzc19maWVsZCwgQ2xhc3NfZmllbGQgLT4gRXFcbiAgICB8IENsYXNzX3R5cGUsIENsYXNzX3R5cGUgLT4gRXFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIENsYXNzX3R5cGVfZmllbGQgLT4gRXFcbiAgICB8IENvcmVfdHlwZSwgQ29yZV90eXBlIC0+IEVxXG4gICAgfCBFeHByZXNzaW9uLCBFeHByZXNzaW9uIC0+IEVxXG4gICAgfCBNb2R1bGVfZXhwciwgTW9kdWxlX2V4cHIgLT4gRXFcbiAgICB8IE1vZHVsZV90eXBlLCBNb2R1bGVfdHlwZSAtPiBFcVxuICAgIHwgUGF0dGVybiwgUGF0dGVybiAtPiBFcVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIFNpZ25hdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgU3RydWN0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFBweF9pbXBvcnQsIFBweF9pbXBvcnQgLT4gRXFcbiAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChQb2x5LiggPD4gKSAoVCBhKSAoVCBiKSk7XG4gICAgICAgIE5lXG5cbiAgbGV0IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2wgPVxuICAgIG1hdGNoIHR5cGVfZGVjbCB3aXRoXG4gICAgfCB7IHB0eXBlX21hbmlmZXN0ID0gU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIChuYW1lLCBfKTsgXyB9OyBfIH1cbiAgICAgIC0+XG4gICAgICAgIGxldCB2aXJ0dWFsX3BheWxvYWQgPVxuICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl90eXBlIH5sb2M6dHlwZV9kZWNsLnB0eXBlX2xvYyBSZWN1cnNpdmVcbiAgICAgICAgICAgIFsgdHlwZV9kZWNsIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHIgPSBbXSBpblxuICAgICAgICBTb21lICgobmFtZSwgUFN0ciBbIHZpcnR1YWxfcGF5bG9hZCBdKSwgYXR0cilcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfZXh0ZW5zaW9uIDogdHlwZSBhLiBhIHQgLT4gYSAtPiAoZXh0ZW5zaW9uICogYXR0cmlidXRlcykgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgeyBwY2xfZGVzYyA9IFBjbF9leHRlbnNpb24gZTsgcGNsX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBlOyBwY2ZfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZSwgeyBwY3R5X2Rlc2MgPSBQY3R5X2V4dGVuc2lvbiBlOyBwY3R5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZTsgcGN0Zl9hdHRyaWJ1dGVzID0gYTsgXyB9XG4gICAgICAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ29yZV90eXBlLCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIGU7IHB0eXBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgRXhwcmVzc2lvbiwgeyBwZXhwX2Rlc2MgPSBQZXhwX2V4dGVuc2lvbiBlOyBwZXhwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV9leHByLCB7IHBtb2RfZGVzYyA9IFBtb2RfZXh0ZW5zaW9uIGU7IHBtb2RfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX3R5cGUsIHsgcG10eV9kZXNjID0gUG10eV9leHRlbnNpb24gZTsgcG10eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBQYXR0ZXJuLCB7IHBwYXRfZGVzYyA9IFBwYXRfZXh0ZW5zaW9uIGU7IHBwYXRfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBQcHhfaW1wb3J0LCB0eXBlX2RlY2wgLT4gZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbFxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXNfcmVzIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gKGEsIExvY2F0aW9uLkVycm9yLnQgTm9uRW1wdHlMaXN0LnQpIHJlc3VsdCA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDbGFzc19leHByIC0+IE9rIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0geC5wY2xfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IE9rIHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0geC5wY2ZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4gT2sgeyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0geC5wY3R5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+XG4gICAgICAgIE9rIHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IHgucGN0Zl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IE9rIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IHgucHR5cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiBPayB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSB4LnBleHBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IE9rIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IHgucG1vZF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4gT2sgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0geC5wbXR5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IE9rIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IHgucHBhdF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgUHB4X2ltcG9ydCAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWVyZ2VfYXR0cmlidXRlc19yZXMgdCB4IGF0dHJzXG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiZXh0ZW5zaW9uXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuIChDb250ZXh0LlQgY3R4KSAtPiBTb21lIChDb250ZXh0LmRlc2MgY3R4KSlcblxubW9kdWxlIE1ha2UgKENhbGxiYWNrIDogc2lnXG4gIHR5cGUgJ2EgdFxuZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSBwYXlsb2FkX3BhcnNlciA9XG4gICAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAgICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50ICogJ2IgQ2FsbGJhY2sudFxuICAgICAgICAtPiAoJ2EsICdjKSBwYXlsb2FkX3BhcnNlclxuXG4gIHR5cGUgKCdjb250ZXh0LCAncGF5bG9hZCkgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdjb250ZXh0IENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogKHBheWxvYWQsICdwYXlsb2FkKSBwYXlsb2FkX3BhcnNlcjtcbiAgICB3aXRoX2FyZyA6IGJvb2w7XG4gIH1cblxuICBsZXQgZGVjbGFyZSA6XG4gICAgICB0eXBlIGEuXG4gICAgICB3aXRoX2FyZzpib29sIC0+XG4gICAgICBzdHJpbmcgLT5cbiAgICAgIGEgQ29udGV4dC50IC0+XG4gICAgICAocGF5bG9hZCwgJ2IsICdwYXlsb2FkKSBBc3RfcGF0dGVybi50IC0+XG4gICAgICAnYiBDYWxsYmFjay50IC0+XG4gICAgICAoYSwgJ3BheWxvYWQpIHQgPVxuICAgZnVuIH53aXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrIC0+XG4gICAgKCogQ2hlY2sgdGhhdCB0aGVyZSBpcyBubyBjb2xsaXNpb25zIGJldHdlZW4gcHB4X2ltcG9ydCBhbmQgY29yZV90eXBlXG4gICAgICAgZXh0ZW5zaW9ucyAqKVxuICAgIChtYXRjaCBjb250ZXh0IHdpdGhcbiAgICB8IENvbnRleHQuUHB4X2ltcG9ydCAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIENvcmVfdHlwZSkgbmFtZVxuICAgIHwgQ29udGV4dC5Db3JlX3R5cGUgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBQcHhfaW1wb3J0KSBuYW1lXG4gICAgfCBfIC0+ICgpKTtcbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgRXh0ZW5zaW9uIHJlZ2lzdHJhciAoQ29udGV4dC5UIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgICAgIHdpdGhfYXJnO1xuICAgIH1cblxuICBsZXQgZmluZCB0cyAoZXh0IDogZXh0ZW5zaW9uKSA9XG4gICAgbGV0IHsgdHh0ID0gbmFtZTsgbG9jIH0gPSBmc3QgZXh0IGluXG4gICAgbGV0IG5hbWUsIGFyZyA9IE5hbWUuc3BsaXRfcGF0aCBuYW1lIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCBfIDo6IF8gOjogXyBhcyBsIC0+XG4gICAgICAgIEVycm9yXG4gICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZXh0ZW5zaW9uczogJXNcIlxuICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgW10gKVxuICAgIHwgWyB0IF0gLT5cbiAgICAgICAgaWYgKG5vdCB0LndpdGhfYXJnKSAmJiBPcHRpb24uaXNfc29tZSBhcmcgdGhlblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICAgICAgICAgIFwiRXh0ZW5zaW9uICVzIGRvZXNuJ3QgZXhwZWN0IGEgcGF0aCBhcmd1bWVudFwiIG5hbWUsXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBhcmcgPVxuICAgICAgICAgICAgT3B0aW9uLm1hcCBhcmcgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNoaWZ0ID0gU3RyaW5nLmxlbmd0aCBuYW1lICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGxvYy5sb2Nfc3RhcnQgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eHQgPSBMb25naWRlbnQucGFyc2UgcztcbiAgICAgICAgICAgICAgICAgIGxvYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXJ0IHdpdGggcG9zX2NudW0gPSBzdGFydC5wb3NfY251bSArIHNoaWZ0IH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIChTb21lICh0LCBhcmcpKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG4gIGVuZClcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGN0eCBwYXR0IGZcblxuICBsZXQgZGVjbGFyZSBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY3R4IHBhdHQgKGZ1biB+YXJnOl8gLT4gZilcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmxvYyBleHQgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGZpbmQgdHMgZXh0ID4+PSBmdW4gciAtPlxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPlxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5hcmcpID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBTb21lIHBheWxvYWRcblxuICBsZXQgY29udmVydCB0cyB+bG9jIGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmxvYyBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbm1vZHVsZSBNID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24udCAtPiBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG5lbmQpXG5cbnR5cGUgJ2EgZXhwYW5kZXJfcmVzdWx0ID0gU2ltcGxlIG9mICdhIHwgSW5saW5lIG9mICdhIGxpc3RcblxubW9kdWxlIEZvcl9jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgZXhwYW5kZXJfcmVzdWx0KSBNLnRcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aFxuICAgICAgICB8IFNpbXBsZSB4IC0+IFNvbWUgeFxuICAgICAgICB8IElubGluZSBfIC0+IGZhaWx3aXRoIFwiRXh0ZW5zaW9uLmNvbnZlcnRcIilcblxuICBsZXQgY29udmVydCB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoIFNpbXBsZSB4IC0+IFNvbWUgWyB4IF0gfCBJbmxpbmUgbCAtPiBTb21lIGwpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lIHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxudHlwZSB0ID0gVCA6IF8gRm9yX2NvbnRleHQudCAtPiB0XG5cbmxldCBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgOiB0eXBlIGEuIGZ1bmM6c3RyaW5nIC0+IGEgQ29udGV4dC50IC0+IHVuaXQgPVxuIGZ1biB+ZnVuYyBjdHggLT5cbiAgbWF0Y2ggY3R4IHdpdGhcbiAgfCBDb250ZXh0LkNsYXNzX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5DbGFzc190eXBlX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5TaWduYXR1cmVfaXRlbSAtPiAoKVxuICB8IENvbnRleHQuU3RydWN0dXJlX2l0ZW0gLT4gKClcbiAgfCBjb250ZXh0IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCIlczogJXMgY2FuJ3QgYmUgaW5saW5lZFwiIGZ1bmNcbiAgICAgICAgKENvbnRleHQuZGVzYyBjb250ZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9ieV9jb250ZXh0IDpcbiAgICB0eXBlIGEuIGEgQ29udGV4dC50IC0+IHQgbGlzdCAtPiBhIEZvcl9jb250ZXh0LnQgbGlzdCA9XG4gZnVuIGNvbnRleHQgZXhwYW5kZXJzIC0+XG4gIG1hdGNoIGV4cGFuZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBUIHQgOjogcmVzdCAtPiAoXG4gICAgICBtYXRjaCBDb250ZXh0LmVxIGNvbnRleHQgdC5jb250ZXh0IHdpdGhcbiAgICAgIHwgRXEgLT4gdCA6OiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3RcbiAgICAgIHwgTmUgLT4gZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0KVxuXG5sZXQgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBjdHggKG5hbWUsIF8pID1cbiAgaWZcbiAgICBub3RcbiAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBFeHRlbnNpb24gbmFtZS50eHRcbiAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dClcbiAgdGhlblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIChDb250ZXh0LlQgY3R4KVxuICAgICAgICBcIkV4dGVuc2lvbiBgJXMnIHdhcyBub3QgdHJhbnNsYXRlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pIGFjYyA9XG4gICAgICBhY2NcbiAgICAgIEAgW1xuICAgICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICAgIF1cblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENvcmVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFBhdHRlcm4gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgRXhwcmVzc2lvbiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdGZfZXh0ZW5zaW9uIGV4dCAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZV9maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjZl9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbXR5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTaWduYXR1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV9leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHN0cl9leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFN0cnVjdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2NcbiAgZW5kXG5cbmxldCBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNwYXR0ZXJuX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNleHByZXNzaW9uX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG4gIGVuZFxuXG5tb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0IH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuZW5kXG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IF9fZGVjbGFyZV9wcHhfaW1wb3J0IG5hbWUgZXhwYW5kID1cbiAgKCogVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gdW53cmFwIHRoZSB0eXBlIGRlY2xhcmF0aW9uIGZyb20gdGhlIHBheWxvYWRcbiAgICAgYXNzZW1ibGVkIGJ5IFtDb250ZXh0LmdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbl0gKilcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl90eXBlIHJlY3Vyc2l2ZSAoX18gXjo6IG5pbCkgXjo6IG5pbCkpIGluXG4gIFYzLmRlY2xhcmUgbmFtZSBDb250ZXh0LlBweF9pbXBvcnQgcGF0dGVybiBleHBhbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgPSBkZWNsYXJlXG4gIGxldCBkZWNsYXJlX2lubGluZSA9IGRlY2xhcmVfaW5saW5lXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBFID0gRXh0ZW5zaW9uXG5tb2R1bGUgRUMgPSBFeHRlbnNpb24uQ29udGV4dFxubW9kdWxlIEEgPSBBdHRyaWJ1dGVcbm1vZHVsZSBBQyA9IEF0dHJpYnV0ZS5Db250ZXh0XG5cbm1vZHVsZSBSdWxlID0gc3RydWN0XG4gIG1vZHVsZSBBdHRyX2dyb3VwX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDpcbiAgICAgICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICAgICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAgICAgJ2IgbGlzdCAtPlxuICAgICAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICAgICAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBBdHRyX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgU3BlY2lhbF9mdW5jdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBpZGVudCA6IExvbmdpZGVudC50O1xuICAgICAgZXhwYW5kIDogUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gUGFyc2V0cmVlLmV4cHJlc3Npb24gb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50X2tpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBGbG9hdCB8IEludGVnZXJcbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3VmZml4IDogY2hhcjtcbiAgICAgIGtpbmQgOiBDb25zdGFudF9raW5kLnQ7XG4gICAgICBleHBhbmQgOiBMb2NhdGlvbi50IC0+IHN0cmluZyAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEV4dGVuc2lvbiA6IEV4dGVuc2lvbi50IHRcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiA6IFNwZWNpYWxfZnVuY3Rpb24udCB0XG4gICAgICB8IENvbnN0YW50IDogQ29uc3RhbnQudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcblxuICAgIHR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbiAgICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgICBmdW4gYSBiIC0+XG4gICAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgICAgfCBFeHRlbnNpb24sIEV4dGVuc2lvbiAtPiBFcVxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uLCBTcGVjaWFsX2Z1bmN0aW9uIC0+IEVxXG4gICAgICB8IENvbnN0YW50LCBDb25zdGFudCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2wsIEF0dHJfc3RyX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2wsIEF0dHJfc2lnX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCwgQXR0cl9zdHJfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQsIEF0dHJfc2lnX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiwgQXR0cl9zdHJfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiwgQXR0cl9zaWdfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBfIC0+IE5lXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYSBGaWVsZC50ICogJ2EgLT4gdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfZ3JvdXBfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgJ2IgbGlzdCAtPlxuICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIGxldCByZWMgZmlsdGVyIDogdHlwZSBhLiBhIEZpZWxkLnQgLT4gdCBsaXN0IC0+IGEgbGlzdCA9XG4gICBmdW4gZmllbGQgbCAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IFQgKGZpZWxkJywgeCkgOjogbCAtPiAoXG4gICAgICAgIG1hdGNoIEZpZWxkLmVxIGZpZWxkIGZpZWxkJyB3aXRoXG4gICAgICAgIHwgRmllbGQuRXEgLT4geCA6OiBmaWx0ZXIgZmllbGQgbFxuICAgICAgICB8IEZpZWxkLk5lIC0+IGZpbHRlciBmaWVsZCBsKVxuXG4gIGxldCBleHRlbnNpb24gZXh0ID0gVCAoRXh0ZW5zaW9uLCBleHQpXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb24gaWQgZiA9XG4gICAgVCAoU3BlY2lhbF9mdW5jdGlvbiwgeyBuYW1lID0gaWQ7IGlkZW50ID0gTG9uZ2lkZW50LnBhcnNlIGlkOyBleHBhbmQgPSBmIH0pXG5cbiAgbGV0IGNvbnN0YW50IGtpbmQgc3VmZml4IGV4cGFuZCA9IFQgKENvbnN0YW50LCB7IHN1ZmZpeDsga2luZDsgZXhwYW5kIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdGVkX2NvZGVfaG9vayA9IHN0cnVjdFxuICB0eXBlICdhIHNpbmdsZV9vcl9tYW55ID0gU2luZ2xlIG9mICdhIHwgTWFueSBvZiAnYSBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgRXh0ZW5zaW9uLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIHNpbmdsZV9vcl9tYW55IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuICBsZXQgcmVwbGFjZSB0IGNvbnRleHQgbG9jIHggPSB0LmYgY29udGV4dCBsb2MgeFxuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE1hbnkgW10gLT4gKClcbiAgICB8IF8gLT4gdC5mIGNvbnRleHQgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IHhcbmVuZFxuXG4oKiBVc2VkIHRvIGluc2VydCBlcnJvciBleHRlbnNpb25zICopXG5sZXQgd3JhcF9leHRlbnNpb24gOiB0eXBlIGEuIGxvYzpMb2NhdGlvbi50IC0+IGEgRUMudCAtPiBhIC0+IGV4dGVuc2lvbiAtPiBhID1cbiBmdW4gfmxvYyB0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uIC0+XG4gICgqIFByZWZpeGluZyBjb25zdHJ1Y3RvcnMgd2l0aCB0aGUgbW9kdWxlIHBhdGggaXMgbmVjZXNzYXJ5IGZvciBPQ2FtbCA8IDQuMDcsXG4gICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzY4NTIgKilcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRUMuQ2xhc3NfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjbF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc19maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjZl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0eV9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlX2ZpZWxkIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0Zl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Db3JlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wdHlwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkV4cHJlc3Npb24gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wZXhwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLk1vZHVsZV9leHByIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucG1vZF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuUGF0dGVybiAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBwYXRfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuU2lnbmF0dXJlX2l0ZW0gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuICB8IEVDLlN0cnVjdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5QcHhfaW1wb3J0IC0+XG4gICAgICAoKiBJbnNlcnQgdGhlIGVycm9yIGluIHRoZSB0eXBlIGRlY2wgbWFuaWZlc3QgKilcbiAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9XG4gICAgICAgIFNvbWUgKEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb24pXG4gICAgICBpblxuICAgICAgeyBvcmlnaW5hbF9ub2RlIHdpdGggcHR5cGVfbWFuaWZlc3QgfVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gPVxuICBsZXQgZXJyb3IgPSBleG5fdG9fbG9jX2Vycm9yIGV4biBpblxuICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gIGxldCBleHRlbnNpb24gPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgKGV4dGVuc2lvbiwgbG9jKVxuXG5sZXQgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgd3JhcF9leHRlbnNpb24gfmxvYyBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uXG5cbmxldCBleG5fdG9fc3RyaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCBleG5fdG9fc2lnaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCByZWMgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgRUMubWVyZ2VfYXR0cmlidXRlc19yZXMgY29udGV4dCB4IGF0dHJzXG4gICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzKVxuXG5sZXQgbWFwX25vZGUgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+aG9vayB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICBXaXRoX2Vycm9ycy5yZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4bikpKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHRcbiAgICAgICAgICAgIChFQy5tZXJnZV9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRycylcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICA+PnwgZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBsb2MgKFNpbmdsZSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgZ2VuZXJhdGVkX2NvZGUpXG5cbmxldCByZWMgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rIH5lbWJlZF9lcnJvcnNcbiAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gW11cbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhlc2UgdHdvIGxldHMgZm9yY2UgdGhlIGV2YWx1YXRpb24gb3JkZXIsIHNvIHRoYXQgZXJyb3JzIGFyZSByZXBvcnRlZCBpbiB0aGVcbiAgICAgICAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgZmlsZS4gKilcbiAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGdldF9sb2MgeCBpblxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIFsgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuIF0pKVxuICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICAgICAgfCBTb21lIGNvbnZlcnRlZCAtPlxuICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgY29udmVydGVkIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICAgICAgICA+Pj0gZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBleHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAoTWFueSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gY29kZSAtPiBnZW5lcmF0ZWRfY29kZSBAIGNvZGUpKVxuXG5sZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG5sZXQgdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnMgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICBtYXRjaFxuICAgIExpc3QubWFwIHNwZWNpYWxfZnVuY3Rpb25zXG4gICAgICB+ZjooZnVuIHsgUnVsZS5TcGVjaWFsX2Z1bmN0aW9uLmlkZW50OyBleHBhbmQ7IF8gfSAtPiAoaWRlbnQsIGV4cGFuZCkpXG4gICAgKCogV2UgZXhwZWN0IHRoZSBsb29rdXAgdG8gZmFpbCBtb3N0IG9mIHRoZSB0aW1lLCBieSBtYWtpbmcgdGhlIHRhYmxlIGJpZyAoYW5kXG4gICAgICAgc3BhcnNlKSwgd2UgbWFrZSBpdCBtb3JlIGxpa2VseSB0byBmYWlsIHF1aWNrbHkgKilcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0IH5zaXplOihtYXggMTAyNCAoTGlzdC5sZW5ndGggc3BlY2lhbF9mdW5jdGlvbnMgKiAyKSlcbiAgd2l0aFxuICB8IE9rIHRhYmxlIC0+IHRhYmxlXG4gIHwgRXJyb3IgaWRlbnQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkNvbnRleHRfZnJlZS5WMS5tYXBfdG9wX2Rvd246ICVzIHByZXNlbnQgdHdpY2UgaW4gbGlzdCBvZiBzcGVjaWFsIFxcXG4gICAgICAgICBmdW5jdGlvbnNcIlxuICAgICAgICAoTGlzdC5maW5kX21hcF9leG4gc3BlY2lhbF9mdW5jdGlvbnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgaWYgUG9seS5lcXVhbCByLmlkZW50IGlkZW50IHRoZW4gU29tZSByLm5hbWUgZWxzZSBOb25lKSlcblxuKCogW2dldF9ncm91cCBhdHRyIGxdIHJldHVybnMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZm9yIGVhY2hcbiAgIG5vZGUgaW4gW2xdLlxuICAgSWYgW2xdIGlzIGVtcHR5IG9yIGlmIG5vbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXZlIGFuIGF0dHJpYnV0ZSBhdHRhY2hlZCxcbiAgIFtnZXRfZ3JvdXBdIHJldHVybnMgW05vbmVdLlxuICAgSWYgW2xdIGlzIG5vdCBlbXB0eSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGFzIGFuIGF0dHJpYnVlXG4gICBhdHRhY2hlZCwgW2dldF9ncm91cF0gcmV0dXJucyB0aGUgZXF1aXZhbGVudCBvZlxuICAgW1NvbWUgKExpc3QubWFwIH5mOihBdHRyaWJ1dGUuZ2V0IGF0dHIpIGwpXS4gKilcbmxldCByZWMgZ2V0X2dyb3VwIGF0dHIgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBOb25lXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIGdldF9ncm91cCBhdHRyIGwgPj49IGZ1biBncm91cCAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYXR0ciB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lID4+fCBmdW4gYXR0cjIgLT5cbiAgICAgIG1hdGNoIChhdHRyMiwgZ3JvdXApIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICB8IE5vbmUsIFNvbWUgdmFscyAtPiBTb21lIChOb25lIDo6IHZhbHMpXG4gICAgICB8IFNvbWUgdmFsdWUsIE5vbmUgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiBMaXN0Lm1hcCBsIH5mOihmdW4gXyAtPiBOb25lKSlcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSB2YWxzIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogdmFscykpXG5cbigqIFNhbWUgYXMgW0xpc3QucmV2XSB0aGVuIFtMaXN0LmNvbmNhdF0gYnV0IGV4cGVjdGluZyB0aGUgaW5wdXQgdG8gYmUgb2YgbGVuZ3RoIDw9IDIgKilcbmxldCByZXZfY29uY2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFsgeCBdIC0+IHhcbiAgfCBbIHg7IHkgXSAtPiB5IEAgeFxuICB8IGwgLT4gTGlzdC5jb25jYXQgKExpc3QucmV2IGwpXG5cbmxldCBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgc29ydF9hdHRyX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgPVxuICBFcnJvclxuICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgIFwiQSBjb250ZXh0LWZyZWUgcnVsZSBkZWxldGVkIG9yIGFkZGVkIGF0dHJpYnVlcyBvZiBhIHN0ci9zaWcgaXRlbVwiLFxuICAgICAgW10gKVxuXG4oKiBSZXR1cm5zIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBhdHRyaWJ1dGUgaGFuZGxlcnMuIFdlIGRvbid0IHJlbW92ZSB0aGVzZSBhdHRyaWJ1dGVzLCBhc1xuICAgYW5vdGhlciBwYXNzIG1pZ2h0IGludGVycHJldCB0aGVtIGxhdGVyLiBGb3IgaW5zdGFuY2UgYm90aCBwcHhfZGVyaXZpbmcgYW5kXG4gICBwcHhsaWJfZGVyaXZpbmcgaW50ZXJwcmV0cyBbQEBkZXJpdmluZ10gYXR0cmlidXRlcy5cblxuICAgVGhpcyBjb21wbGV4aXR5IGlzIGhvcnJpYmxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgZG9uJ3QgY2FyZSBhcyBbYXR0cnNdIGlzIGFsd2F5cyBhIGxpc3RcbiAgIG9mIG9uZSBlbGVtZW50OyBpdCBvbmx5IGhhcyBbQEBkZXJpdmluZ10uXG4qKVxubGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRycyByZiB+aXRlbXMgfmV4cGFuZGVkX2l0ZW1zIH5sb2MgfmJhc2VfY3R4dFxuICAgIH5lbWJlZF9lcnJvcnMgfmNvbnZlcnRfZXhuID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSlcbiAgICB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5UIGdyb3VwKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGl0ZW1zID4+PSBmdW4gZzEgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbXMgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWVzLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTpncm91cC5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBncm91cC5leHBhbmQgfmN0eHQgcmYgZXhwYW5kZWRfaXRlbXMgdmFsdWVzIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5sZXQgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJzIH5jb252ZXJ0X2V4biB+aXRlbSB+ZXhwYW5kZWRfaXRlbSB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9pbmxpbmUuVCBhKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBpdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcxIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6YS5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBhLmV4cGFuZCB+Y3R4dCBleHBhbmRlZF9pdGVtIHZhbHVlIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5tb2R1bGUgRXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIGxpc3QgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG5lbmRcblxuY2xhc3MgbWFwX3RvcF9kb3duID8oZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3ApXG4gID8oZ2VuZXJhdGVkX2NvZGVfaG9vayA9IEdlbmVyYXRlZF9jb2RlX2hvb2subm9wKSA/KGVtYmVkX2Vycm9ycyA9IGZhbHNlKSBydWxlc1xuICA9XG4gIGxldCBob29rID0gZ2VuZXJhdGVkX2NvZGVfaG9vayBpblxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gICAgUnVsZS5maWx0ZXIgU3BlY2lhbF9mdW5jdGlvbiBydWxlcyB8PiB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9uc1xuICBpblxuICBsZXQgY29uc3RhbnRzID1cbiAgICBSdWxlLmZpbHRlciBDb25zdGFudCBydWxlc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gKGMgOiBSdWxlLkNvbnN0YW50LnQpIC0+ICgoYy5zdWZmaXgsIGMua2luZCksIGMuZXhwYW5kKSlcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0X2V4blxuICBpblxuICBsZXQgZXh0ZW5zaW9ucyA9IFJ1bGUuZmlsdGVyIEV4dGVuc2lvbiBydWxlcyBpblxuICBsZXQgY2xhc3NfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZXhwciBleHRlbnNpb25zXG4gIGFuZCBjbGFzc19maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNvcmVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY29yZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGV4cHJlc3Npb24gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmV4cHJlc3Npb24gZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV9leHByIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBwYXR0ZXJuID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5wYXR0ZXJuIGV4dGVuc2lvbnNcbiAgYW5kIHNpZ25hdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zaWduYXR1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc3RydWN0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgcHB4X2ltcG9ydCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuUHB4X2ltcG9ydCBleHRlbnNpb25zIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbHMsIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbHMsIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dHMsIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dHMsIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbnMsIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbnMsIGF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgbWFwX25vZGUgPSBtYXBfbm9kZSB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lID0gaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2lubGluZSA9IGhhbmRsZV9hdHRyX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgYXMgc3VwZXJcblxuICAgICgqIE5vIHBvaW50IHJlY3Vyc2luZyBpbnRvIGV2ZXJ5IGxvY2F0aW9uICopXG4gICAgbWV0aG9kISBsb2NhdGlvbiBfIHggPSByZXR1cm4geFxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY29yZV90eXBlIGNvcmVfdHlwZSBzdXBlciNjb3JlX3R5cGUgeC5wdHlwX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnBhdHRlcm4gcGF0dGVybiBzdXBlciNwYXR0ZXJuIHgucHBhdF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSA9XG4gICAgICBsZXQgd2l0aF9jb250ZXh0ID1cbiAgICAgICAgKCogTWFrZSBzdXJlIGNvZGUtcGF0aCBhdHRyaWJ1dGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwYW5kaW5nLiAqKVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+Pj0gZnVuIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIGUpXG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgIEF0dHJpYnV0ZS5yZW1vdmVfc2Vlbl9yZXMgRXhwcmVzc2lvblxuICAgICAgICAgICAgICBbIFQgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIF1cbiAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmVcbiAgICAgICAgICAgID4+fCBmdW4gZSAtPlxuICAgICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgYmFzZV9jdHh0LCBlKVxuICAgICAgaW5cbiAgICAgIHdpdGhfY29udGV4dCA+Pj0gZnVuIChiYXNlX2N0eHQsIGUpIC0+XG4gICAgICBsZXQgZXhwYW5kZWQgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgICAgbWFwX25vZGUgRUMuZXhwcmVzc2lvbiBleHByZXNzaW9uXG4gICAgICAgICAgICAgIChmdW4gXyBlIC0+IHJldHVybiBlKVxuICAgICAgICAgICAgICBlLnBleHBfbG9jIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgXyAtPiByZXR1cm4gZVxuICAgICAgaW5cbiAgICAgIGV4cGFuZGVkID4+PSBmdW4gZSAtPlxuICAgICAgbGV0IGV4cGFuZF9jb25zdGFudCBraW5kIGNoYXIgdGV4dCA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgY29uc3RhbnRzIChjaGFyLCBraW5kKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgU29tZSBleHBhbmQgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCAoZXhwYW5kIGUucGV4cF9sb2MgdGV4dClcbiAgICAgIGluXG4gICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfYXBwbHkgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgaWQ7IF8gfSBhcyBmdW5jKSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jIGFyZ3NcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmNcbiAgICAgICAgICAgICAgICAgICAgYXJnc1xuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2lkZW50IGlkIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2ludGVnZXIgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEludGVnZXIgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2Zsb2F0IChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBGbG9hdCBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgcmV0dXJuIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcblxuICAgICgqIFByZS1jb25kaXRpb25zOlxuICAgICAgIC0gZS5wZXhwX2Rlc2MgPSBQZXhwX2FwcGx5KGZ1bmMsIGFyZ3MpXG4gICAgICAgLSBmdW5jLnBleHBfZGVzYyA9IFBleHBfaWRlbnQgX1xuICAgICopXG4gICAgbWV0aG9kIHByaXZhdGUgcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgID1cbiAgICAgIGxldCB7IHBleHBfZGVzYyA9IF87IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBlIGluXG4gICAgICBsZXQgZnVuYyA9XG4gICAgICAgIGxldCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGZ1bmMgaW5cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgICAge1xuICAgICAgICAgIHBleHBfZGVzYztcbiAgICAgICAgICBwZXhwX2xvYyAoKiBsb2NhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkICopO1xuICAgICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGZ1bmMgPj49IGZ1biBmdW5jIC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biAobGFiLCBleHApIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGV4cCA+PnwgZnVuIGV4cCAtPiAobGFiLCBleHApKVxuICAgICAgICB8PiBjb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGFyZ3MgPj49IGZ1biBhcmdzIC0+XG4gICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAge1xuICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChmdW5jLCBhcmdzKTtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICB9XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZSBjbGFzc190eXBlIHN1cGVyI2NsYXNzX3R5cGUgeC5wY3R5X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIHgucGN0Zl9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19leHByIGNsYXNzX2V4cHIgc3VwZXIjY2xhc3NfZXhwciB4LnBjbF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGQgeC5wY2ZfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV90eXBlIG1vZHVsZV90eXBlIHN1cGVyI21vZHVsZV90eXBlIHgucG10eV9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgKCgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIHgpXG4gICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIE1vZHVsZV9leHByXG4gICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgXVxuICAgICAgICAgICAgIHhcbiAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICAgPj58IGZ1biB4IC0+XG4gICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBiYXNlX2N0eHQsIHgpKVxuICAgICAgPj49IGZ1biAoYmFzZV9jdHh0LCB4KSAtPlxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX2V4cHIgbW9kdWxlX2V4cHIgc3VwZXIjbW9kdWxlX2V4cHIgeC5wbW9kX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zdHJ1Y3R1cmVfaXRlbSBzdHJ1Y3R1cmVfaXRlbSBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4LnBzdHJfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnNpZ25hdHVyZV9pdGVtIHNpZ25hdHVyZV9pdGVtIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHgucHNpZ19sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc3RydWN0dXJlIGJhc2VfY3R4dCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjcGF0dGVybiBiYXNlX2N0eHQgcGNzdHJfc2VsZiA+Pj0gZnVuIHBjc3RyX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY2ZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzdHJfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc3RyX2ZpZWxkcyAtPiB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuUHB4X2ltcG9ydCBwcHhfaW1wb3J0IHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geC5wdHlwZV9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc2lnbmF0dXJlIGJhc2VfY3R4dCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjY29yZV90eXBlIGJhc2VfY3R4dCBwY3NpZ19zZWxmID4+PSBmdW4gcGNzaWdfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjdGZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzaWdfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc2lnX2ZpZWxkcyAtPiB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICAoKiBUT0RPOiB0cnkgdG8gZmFjdG9yaXplICNzdHJ1Y3R1cmUgYW5kICNzaWduYXR1cmUgd2l0aG91dCBtZXRhLXByb2dyYW1taW5nICopXG4gICAgKCokKilcbiAgICBtZXRob2QhIHN0cnVjdHVyZSBiYXNlX2N0eHQgc3QgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTdHJ1Y3R1cmVfaXRlbSBpdGVtLnBzdHJfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHN0cl9sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3N0cnVjdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTdHJ1Y3R1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzdHJ1Y3R1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc3RyX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZXhuID0gZXhuX3RvX3N0cmkgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc3RyX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHN0cl9kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHJmLCB0ZHMpLCBQc3RyX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSBtdGQsIFBzdHJfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgdGUsIFBzdHJfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24gZWMsIFBzdHJfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG4gICAgbWV0aG9kISBzaWduYXR1cmUgYmFzZV9jdHh0IHNnID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU2lnbmF0dXJlX2l0ZW0gaXRlbS5wc2lnX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzaWdfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zaWduYXR1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU2lnbmF0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc2cgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc2lnbmF0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHNpZ19sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zaWdpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHNpZ19kZXNjLCBleHBhbmRlZF9pdGVtLnBzaWdfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlIChyZiwgdGRzKSwgUHNpZ190eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgbXRkLCBQc2lnX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHRlLCBQc2lnX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGVjLCBQc2lnX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokKilcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBVdGlsc1xuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXh0ZW5zaW9uIG9mICdhIEV4dGVuc2lvbi5Db250ZXh0LnRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBvZiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50XG5cbiAgbGV0IHBhcmVuIHBwIHBwZiB4ID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiglYSlcIiBwcCB4XG5cbiAgbGV0IHByaW50ZXIgOiB0eXBlIGEuIGEgdCAtPiBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlciAtPiBhIC0+IHVuaXQgPVxuICAgIGxldCBvcGVuIEV4dGVuc2lvbi5Db250ZXh0IGluXG4gICAgbGV0IG9wZW4gQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2V4cHIgLT4gUHByaW50YXN0LmNsYXNzX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlIC0+IFBwcmludGFzdC5jbGFzc190eXBlXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENvcmVfdHlwZSAtPiBwYXJlbiBQcHJpbnRhc3QuY29yZV90eXBlXG4gICAgfCBFeHRlbnNpb24gRXhwcmVzc2lvbiAtPiBwYXJlbiBQcHJpbnRhc3QuZXhwcmVzc2lvblxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV9leHByIC0+IFBwcmludGFzdC5tb2R1bGVfZXhwclxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV90eXBlIC0+IFBwcmludGFzdC5tb2R1bGVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIFBhdHRlcm4gLT4gcGFyZW4gUHByaW50YXN0LnBhdHRlcm5cbiAgICB8IEV4dGVuc2lvbiBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBQcHhfaW1wb3J0IC0+IFBwcmludGFzdC50eXBlX2RlY2xhcmF0aW9uXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlbWVudCA9IHN0cnVjdFxuICB0eXBlIGRhdGEgPVxuICAgIHwgVmFsdWVzIDpcbiAgICAgICAgJ2EgQ29udGV4dC50ICogJ2EgQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2suc2luZ2xlX29yX21hbnlcbiAgICAgICAgLT4gZGF0YVxuICAgIHwgVGV4dCBvZiBzdHJpbmdcblxuICB0eXBlIHQgPSB7IHN0YXJ0IDogTGV4aW5nLnBvc2l0aW9uOyBzdG9wIDogTGV4aW5nLnBvc2l0aW9uOyBkYXRhIDogZGF0YSB9XG5cbiAgbGV0IG1ha2UgfmNvbnRleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID1cbiAgICB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVmFsdWVzIChjb250ZXh0LCByZXBsKSB9XG5cbiAgbGV0IG1ha2VfdGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPSB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVGV4dCByZXBsIH1cblxuICBsZXQgdGV4dCBibG9jayA9XG4gICAgbWF0Y2ggYmxvY2suZGF0YSB3aXRoXG4gICAgfCBUZXh0IHMgLT4gc1xuICAgIHwgVmFsdWVzIChjb250ZXh0LCBnZW5lcmF0ZWQpIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgcHJpbnRlciA9IENvbnRleHQucHJpbnRlciBjb250ZXh0IGluXG4gICAgICAgICAgbWF0Y2ggZ2VuZXJhdGVkIHdpdGhcbiAgICAgICAgICB8IFNpbmdsZSB4IC0+IFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiIHByaW50ZXIgeFxuICAgICAgICAgIHwgTWFueSBsIC0+XG4gICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgKGZ1biBwcGYgbCAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciBwcGYgeDtcbiAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKSlcbiAgICAgICAgICAgICAgICBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc193cyA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UgaW5cbiAgICAgICAgbGV0IHN0cmlwX3dzIHMgaSBsZW4gPVxuICAgICAgICAgIGxldCBsZW4gPSByZWYgbGVuIGluXG4gICAgICAgICAgd2hpbGUgIWxlbiA+IDAgJiYgaXNfd3Mgcy5baSArICFsZW4gLSAxXSBkb1xuICAgICAgICAgICAgbGVuIDo9ICFsZW4gLSAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBTdHJpbmcuc3ViIHMgfnBvczppIH5sZW46IWxlblxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBwb3MgPVxuICAgICAgICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHMgdGhlbiBbXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBpZHggPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzdHJpcF93cyBzIHBvcyAoaWR4IC0gcG9zKSA6OiBcIlxcblwiIDo6IGxvb3AgcyAoaWR4ICsgMSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKGxvb3AgcyAwKVxuZW5kXG5cbm9wZW4gUmVwbGFjZW1lbnRcblxubW9kdWxlIFJlcGxhY2VtZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXBsYWNlbWVudC50IGxpc3RcblxuICAoKiBNZXJnZSBsb2NhdGlvbnMgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBPdmVybGFwcGluZyBsb2NhdGlvbnMgYXJlIG1lcmdlZCBpbnRvIG9uZS4gVGhlXG4gICAgIHJlc3VsdCBpcyBzb3J0ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHRvIHRoZSBlbmQuICopXG4gIGxldCBjaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgPVxuICAgIExpc3QuaXRlciByZXBscyB+ZjooZnVuIHJlcGwgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBTdHJpbmcuKCA8PiApIHJlcGwuc3RhcnQucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgICB8fCBTdHJpbmcuKCA8PiApIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVuYW1lKVxuICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiB0aGUgcmV3cml0aW5nIGNvbnRhaW5zIHBhcnRzIGZyb20gYW5vdGhlciBmaWxlLlxcblxcXG4gICAgICAgICAgICAgSXQgaXMgdG9vIGNvbXBsaWNhdGVkIHRvIHJlY29uY2lsZSBpdCB3aXRoIHRoZSBzb3VyY2U6ICVzIG9yICVzIFxcXG4gICAgICAgICAgICAgYW5kICVzXCJcbiAgICAgICAgICAgIHJlcGwuc3RhcnQucG9zX2ZuYW1lIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgYXNzZXJ0IChyZXBsLnN0YXJ0LnBvc19jbnVtIDw9IHJlcGwuc3RvcC5wb3NfY251bSkpO1xuICAgIGxldCByZXBscyA9XG4gICAgICBMaXN0LnNvcnQgcmVwbHMgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgICAgIGxldCBkID0gY29tcGFyZSBhLnN0YXJ0LnBvc19jbnVtIGIuc3RvcC5wb3NfY251bSBpblxuICAgICAgICAgIGlmIGQgPSAwIHRoZW5cbiAgICAgICAgICAgICgqIFB1dCB0aGUgbGFyZ2VzdCBmaXJzdCwgc28gdGhhdCB0aGUgZm9sbG93aW5nIFtmaWx0ZXJdIGZ1bmN0aW9ucyBhbHdheXMgcGlja3MgdXBcbiAgICAgICAgICAgICAgIHRoZSBsYXJ0ZXN0IGZpcnN0IHdoZW4gc2V2ZXJhbCBnZW5lcmF0ZWQgcmVwbHMgc3RhcnQgYXQgdGhlIHNhbWUgcG9zaXRpb24gKilcbiAgICAgICAgICAgIGNvbXBhcmUgYi5zdG9wLnBvc19jbnVtIGEuc3RvcC5wb3NfY251bVxuICAgICAgICAgIGVsc2UgZClcbiAgICBpblxuICAgIGxldCByZWMgZmlsdGVyIHByZXYgcmVwbHMgfmFjYyA9XG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IChwcmV2IDo6IGFjYylcbiAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID49IHJlcGwuc3RvcC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgICgqIFtyZXBsXSBpcyBpbmNsdWRlZCBpbiBbcHJldl0gPT4gc2tpcCBbcmVwbF0gKilcbiAgICAgICAgICAgICAgZmlsdGVyIHByZXYgcmVwbHMgfmFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IGxvY2F0aW9ucyBvZiBnZW5lcmF0ZWQgY29kZSBhcmUgb3ZlcmxhcHBpbmcsIFxcXG4gICAgICAgICAgICAgICAgIGNhbm5vdCByZWNvbmNpbGVcIlxuICAgICAgICAgICAgICAgIH5sb2M6XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9IHJlcGwuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxvY19lbmQgPSBwcmV2LnN0b3A7XG4gICAgICAgICAgICAgICAgICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzoocHJldiA6OiBhY2MpXG4gICAgaW5cbiAgICBtYXRjaCByZXBscyB3aXRoIFtdIC0+IFtdIHwgcmVwbCA6OiByZXBscyAtPiBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOltdXG5lbmRcblxubGV0IGNvdW50X25ld2xpbmVzIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIFN0cmluZy5pdGVyIHMgfmY6KGZ1bmN0aW9uICdcXG4nIC0+IG4gOj0gIW4gKyAxIHwgXyAtPiAoKSk7XG4gICFuXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9iZWdpbiA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEJFR0lOIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxubGV0IGdlbmVyYXRlZF9jb2RlX2VuZCA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEVORCAgIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxudHlwZSBtb2RlID0gVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzXG50eXBlIHRhcmdldCA9IE91dHB1dCBvZiBtb2RlIHwgQ29ycmVjdGVkXG5cbmxldCBza2lwX2JsYW5rX2VvbCBjb250ZW50cyAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSA9XG4gIGxldCByZWMgbG9vcCBjbnVtID1cbiAgICBpZiBjbnVtID0gU3RyaW5nLmxlbmd0aCBjb250ZW50cyB0aGVuIHsgcG9zIHdpdGggcG9zX2NudW0gPSBjbnVtIH1cbiAgICBlbHNlXG4gICAgICBtYXRjaCBjb250ZW50cy5bY251bV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXHInIC0+IGxvb3AgKGNudW0gKyAxKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvcyB3aXRoXG4gICAgICAgICAgICBwb3NfY251bSA9IGNudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2JvbCA9IGNudW0gKyAxO1xuICAgICAgICAgIH1cbiAgICAgIHwgXyAtPiBwb3NcbiAgaW5cbiAgbG9vcCBwb3MucG9zX2NudW1cblxubGV0IHdpdGhfb3V0cHV0IH5zdHlsZXIgfihraW5kIDogS2luZC50KSBmbiB+ZiA9XG4gIG1hdGNoIHN0eWxlciB3aXRoXG4gIHwgTm9uZSAtPiB3aXRoX291dHB1dCBmbiB+YmluYXJ5OmZhbHNlIH5mXG4gIHwgU29tZSBjbWQgLT5cbiAgICAgIGxldCB0bXBfZm4sIG9jID1cbiAgICAgICAgU3RkbGliLkZpbGVuYW1lLm9wZW5fdGVtcF9maWxlIFwicHB4bGliX2RyaXZlclwiXG4gICAgICAgICAgKG1hdGNoIGtpbmQgd2l0aCBJbXBsIC0+IFwiLm1sXCIgfCBJbnRmIC0+IFwiLm1saVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBjbWQgPVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzJXNcIiBjbWRcbiAgICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIHRtcF9mbilcbiAgICAgICAgICAobWF0Y2ggZm4gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIGZuIC0+IFwiID4gXCIgXiBTdGRsaWIuRmlsZW5hbWUucXVvdGUgZm4pXG4gICAgICBpblxuICAgICAgbGV0IG4gPVxuICAgICAgICBFeG4ucHJvdGVjdHggdG1wX2ZuIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mOihmdW4gXyAtPlxuICAgICAgICAgICAgRXhuLnByb3RlY3R4IG9jIH5maW5hbGx5OmNsb3NlX291dCB+ZjtcbiAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQpXG4gICAgICBpblxuICAgICAgaWYgbiA8PiAwIHRoZW4gKFxuICAgICAgICBQcmludGYuZXByaW50ZiBcImNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAlZDogJXNcXG5cIiBuIGNtZDtcbiAgICAgICAgU3RkbGliLmV4aXQgMSlcblxubGV0IHJlY29uY2lsZSA/c3R5bGVyIChyZXBscyA6IFJlcGxhY2VtZW50cy50KSB+a2luZCB+Y29udGVudHMgfmlucHV0X2ZpbGVuYW1lXG4gICAgfm91dHB1dCB+aW5wdXRfbmFtZSB+dGFyZ2V0ID1cbiAgbGV0IHJlcGxzID0gUmVwbGFjZW1lbnRzLmNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyBpblxuICBsZXQgb3V0cHV0X25hbWUgPSBtYXRjaCBvdXRwdXQgd2l0aCBOb25lIC0+IFwiPHN0ZG91dD5cIiB8IFNvbWUgZm4gLT4gZm4gaW5cbiAgd2l0aF9vdXRwdXQgb3V0cHV0IH5zdHlsZXIgfmtpbmQgfmY6KGZ1biBvYyAtPlxuICAgICAgbGV0IGNvcHlfaW5wdXQgcG9zIH51cF90byB+bGluZSB+bGFzdF9pc190ZXh0IH5pc190ZXh0ID1cbiAgICAgICAgbGV0IHBvcyA9IGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvcyBpblxuICAgICAgICBpZiBwb3MucG9zX2NudW0gPCB1cF90byB0aGVuIChcbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuJSpzXCIgcG9zLnBvc19sbnVtIGlucHV0X25hbWVcbiAgICAgICAgICAgICAgICAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyB8IENvcnJlY3RlZCAtPiAoKSk7XG4gICAgICAgICAgb3V0cHV0X3N1YnN0cmluZyBvYyBjb250ZW50cyB+cG9zOnBvcy5wb3NfY251bVxuICAgICAgICAgICAgfmxlbjoodXBfdG8gLSBwb3MucG9zX2NudW0pO1xuICAgICAgICAgIGxldCBsaW5lID0gcmVmIChsaW5lICsgMSkgaW5cbiAgICAgICAgICBmb3IgaSA9IHBvcy5wb3NfY251bSB0byB1cF90byAtIDEgZG9cbiAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgY29udGVudHMuW2ldICdcXG4nIHRoZW4gbGluZSA6PSAhbGluZSArIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBsaW5lID0gIWxpbmUgaW5cbiAgICAgICAgICBpZiAobm90IGlzX3RleHQpICYmIENoYXIuKCA8PiApIGNvbnRlbnRzLlt1cF90byAtIDFdICdcXG4nIHRoZW4gKFxuICAgICAgICAgICAgb3V0cHV0X2NoYXIgb2MgJ1xcbic7XG4gICAgICAgICAgICBsaW5lICsgMSlcbiAgICAgICAgICBlbHNlIGxpbmUpXG4gICAgICAgIGVsc2UgbGluZVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoY29weV9pbnB1dCBwb3MgfnVwX3RvOihTdHJpbmcubGVuZ3RoIGNvbnRlbnRzKSB+bGluZVxuICAgICAgICAgICAgICAgICB+bGFzdF9pc190ZXh0IH5pc190ZXh0OmZhbHNlXG4gICAgICAgICAgICAgICAgOiBpbnQpXG4gICAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgICAgbGV0IGlzX3RleHQgPVxuICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBjb3B5X2lucHV0IHBvcyB+dXBfdG86cmVwbC5zdGFydC5wb3NfY251bSB+bGluZSB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICAgICAgfmlzX3RleHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcblwiIChsaW5lICsgMSkgb3V0cHV0X25hbWU7XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbjtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgQ29ycmVjdGVkIC0+IGxpbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzIH5sYXN0X2lzX3RleHQ6aXNfdGV4dFxuICAgICAgYW5kIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBsc1xuICAgICAgICAgIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT4gZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzJyAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgIGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgICAgbGV0IGxhc3RfaXNfdGV4dCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzJyB+bGFzdF9pc190ZXh0XG4gICAgICBhbmQgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2VuZCk7XG4gICAgICAgIGxvb3AgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IGlucHV0X25hbWU7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgeyBzdGFydCA9IHsgcG9zX2NudW0gPSAwOyBfIH07IF8gfSA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbik7XG4gICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlXG4gICAgICB8IF8gLT4gbG9vcCAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlKVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIG5leHRfaWQgOiBpbnQ7XG4gIG11dGFibGUgYmluZGluZ3MgOiBQYXJzZXRyZWUudmFsdWVfYmluZGluZyBsaXN0O1xufVxuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0X2lkID0gMDsgYmluZGluZ3MgPSBbXSB9XG5cbmxldCBzYW5pdGl6ZSB0IGUgPVxuICBtYXRjaCB0LmJpbmRpbmdzIHdpdGhcbiAgfCBbXSAtPiBlXG4gIHwgYmluZGluZ3MgLT5cbiAgICAgIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGUucGV4cF9sb2MgaW5cbiAgICAgIEFzdC5wZXhwX2xldCBOb25yZWN1cnNpdmUgYmluZGluZ3MgZVxuXG5sZXQgcXVvdGUgdCAoZSA6IGV4cHJlc3Npb24pID1cbiAgbGV0IGxvYyA9IGUucGV4cF9sb2MgaW5cbiAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgbG9jIGluXG4gIGxldCBuYW1lID0gXCJfX1wiIF4gSW50LnRvX3N0cmluZyB0Lm5leHRfaWQgaW5cbiAgbGV0IGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgICgqIE9wdGltaXplIGlkZW50aWZpZXIgcXVvdGluZyBieSBhdm9pZGluZyBjbG9zdXJlLlxuICAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtcHB4L3BweF9kZXJpdmluZy9wdWxsLzI1Mi4gKilcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT4gKGUsIEFzdC5ldmFyIG5hbWUpXG4gICAgfCBfIC0+XG4gICAgICAgIGxldCBiaW5kaW5nX2V4cHIgPVxuICAgICAgICAgIEFzdC5wZXhwX2Z1biBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgIChsZXQgdW5pdCA9IEFzdF9idWlsZGVyLkRlZmF1bHQuTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIgaW5cbiAgICAgICAgICAgICBBc3QucHBhdF9jb25zdHJ1Y3QgdW5pdCBOb25lKVxuICAgICAgICAgICAgZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcXVvdGVkX2V4cHIgPSBBc3QuZWFwcGx5IChBc3QuZXZhciBuYW1lKSBbIEFzdC5ldW5pdCBdIGluXG4gICAgICAgIChiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByKVxuICBpblxuICBsZXQgYmluZGluZyA9XG4gICAgbGV0IHBhdCA9IEFzdC5wdmFyIG5hbWUgaW5cbiAgICBBc3QudmFsdWVfYmluZGluZyB+cGF0IH5leHByOmJpbmRpbmdfZXhwclxuICBpblxuICB0LmJpbmRpbmdzIDwtIGJpbmRpbmcgOjogdC5iaW5kaW5ncztcbiAgdC5uZXh0X2lkIDwtIHQubmV4dF9pZCArIDE7XG4gIHF1b3RlZF9leHByXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IG1rX2F0dHJfbm9sb2MgdHh0ID0gQXN0X2hlbHBlci5BdHRyLm1rIExvY2F0aW9uLnsgdHh0OyBsb2MgPSBub25lIH1cbmxldCBoaWRlX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uaGlkZVwiIChQU3RyIFtdKVxubGV0IGZvY3VzX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uZm9jdXNcIiAoUFN0ciBbXSlcblxubGV0IGhpZGVfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBoaWRlX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuIiwib3BlbiBJbXBvcnRcblxubW9kdWxlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGluc2VydCA6IG5vZGVfbmFtZTpzdHJpbmcgLT4gTG9jYXRpb24udCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcblxuICB2YWwgY292ZXJlZF9ieSA6IHQgLT4gbG9jOkxvY2F0aW9uLnQgLT4gYm9vbFxuICAoKiogW2NvdmVyZWRfYnkgdCB+bG9jID0gdHJ1ZV0gaWZmIFt0XSBpcyBjb3ZlcmVkIGJ5IFtsb2NdICopXG5cbiAgdmFsIGZpbmRfb3V0c2lkZSA6IExvY2F0aW9uLnQgLT4gdCAtPiBzdHJpbmcgKiBMb2NhdGlvbi50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1pbl9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIG1heF9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIHJhbmdlcyA6IChzdHJpbmcgKiBMb2NhdGlvbi50KSBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5ID0geyBtaW5fcG9zID0gTm9uZTsgbWF4X3BvcyA9IE5vbmU7IHJhbmdlcyA9IFtdIH1cblxuICBsZXQgcmVjIGluc2VydCByYW5nZXMgKChub2RlX25hbWUsIG5vZGVfbG9jKSBhcyBub2RlKSA9XG4gICAgbWF0Y2ggcmFuZ2VzIHdpdGhcbiAgICB8IFtdIC0+IFsgbm9kZSBdXG4gICAgfCAoKHhfbmFtZSwgeF9sb2MpIGFzIHgpIDo6IHhzIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uIGluXG4gICAgICAgIGlmIGNvbXBhcmVfcG9zIG5vZGVfbG9jLmxvY19zdGFydCB4X2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIG5vZGUgOjogeCA6OiB4c1xuICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcG9zIHhfbG9jLmxvY19zdGFydCBub2RlX2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIHggOjogaW5zZXJ0IHhzIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICAgICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4LCAlcyBvdmVybGFwcyB3aXRoICVzIGF0IGxvY2F0aW9uOkAuJWFcIlxuICAgICAgICAgICAgbm9kZV9uYW1lIHhfbmFtZSBMb2NhdGlvbi5wcmludCB4X2xvY1xuXG4gIGxldCBtaW5fcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWluX3BvcyBwMSBwMilcblxuICBsZXQgbWF4X3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1heF9wb3MgcDEgcDIpXG5cbiAgbGV0IGxvbmdlc3RfZmlyc3QgbDEgbDIgfnN0b3BfYWZ0ZXIgPVxuICAgIGxldCByZWMgbG9vcCB4cyB5cyBuID1cbiAgICAgIG1hdGNoICh4cywgeXMsIG4pIHdpdGhcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBfLCAwIC0+IChsMiwgbDEpXG4gICAgICB8IF8sIFtdLCBfIC0+IChsMSwgbDIpXG4gICAgICB8IF8gOjogeHMsIF8gOjogeXMsIG4gLT4gbG9vcCB4cyB5cyAobiAtIDEpXG4gICAgaW5cbiAgICBsb29wIGwxIGwyIHN0b3BfYWZ0ZXJcblxuICBsZXQgdW5pb24gdDEgdDIgPVxuICAgIGxldCBpbml0LCBsID0gbG9uZ2VzdF9maXJzdCB0MS5yYW5nZXMgdDIucmFuZ2VzIH5zdG9wX2FmdGVyOjQyIGluXG4gICAgbGV0IHJhbmdlcyA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6aW5zZXJ0IGluXG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgdDEubWluX3BvcyB0Mi5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgdDEubWF4X3BvcyB0Mi5tYXhfcG9zO1xuICAgICAgcmFuZ2VzO1xuICAgIH1cblxuICBsZXQgaW5zZXJ0IH5ub2RlX25hbWUgbG9jIHQgPVxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIChTb21lIGxvYy5sb2Nfc3RhcnQpIHQubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIChTb21lIGxvYy5sb2NfZW5kKSB0Lm1heF9wb3M7XG4gICAgICByYW5nZXMgPSBpbnNlcnQgdC5yYW5nZXMgKG5vZGVfbmFtZSwgbG9jKTtcbiAgICB9XG5cbiAgbGV0IGNvdmVyZWRfYnkgdCB+bG9jID1cbiAgICBtYXRjaCAodC5taW5fcG9zLCB0Lm1heF9wb3MpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBtaW5fcG9zLCBTb21lIG1heF9wb3MgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbWluX3BvcyBsb2MubG9jX3N0YXJ0ID49IDBcbiAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbWF4X3BvcyBsb2MubG9jX2VuZCA8PSAwXG4gICAgfCBfLCBfIC0+XG4gICAgICAgICgqIHRoZXJlIGFyZSBubyBvcGVuIHJhbmdlcyAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuICBsZXQgZmluZF9vdXRzaWRlIGxvYyB0ID1cbiAgICBMaXN0LmZpbmQgdC5yYW5nZXMgfmY6KGZ1biAoXywgbCkgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19zdGFydCBsLmxvY19zdGFydCA+IDBcbiAgICAgICAgfHwgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgbC5sb2NfZW5kIDwgMClcbmVuZFxuXG5sZXQgcmVsb2NfcG10eV9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbXR5X2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtdHlfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG10eV9sb2MgPSB7IHJlcy5wbXR5X2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgcmVsb2NfcG1vZF9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbW9kX2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtb2RfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG1vZF9sb2MgPSB7IHJlcy5wbW9kX2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYyA9XG4gIExpc3QuZm9yX2FsbCB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGF0dHIuYXR0cl9sb2MubG9jX2VuZCA+PSAwKVxuXG5sZXQgZmlsZSA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcbmxldCBzYW1lX2ZpbGVfc29fZmFyID0gcmVmIHRydWVcblxubGV0IHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGZuYW1lID1cbiAgKCogVE9ETzogcmVtb3ZlIHVzZXMgb2YgTG9jYXRpb24ubm9uZSBmcm9tIHRoZSBwcHhlcy4gKilcbiAgaWYgU3RyaW5nLmVxdWFsIGZuYW1lIFwiX25vbmVfXCIgdGhlbiB0cnVlICgqIGRvIG5vdGhpbmcgZm9yIG5vdy4gKilcbiAgZWxzZVxuICAgIG1hdGNoICFmaWxlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgZmlsZSA6PSBTb21lIGZuYW1lO1xuICAgICAgICB0cnVlXG4gICAgfCBTb21lIG9yaWdfZm5hbWUgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIG9yaWdfZm5hbWUgZm5hbWVcbiAgICAgICAgfHxcbiAgICAgICAgKHNhbWVfZmlsZV9zb19mYXIgOj0gZmFsc2U7XG4gICAgICAgICBmYWxzZSlcblxubGV0IHNob3VsZF9pZ25vcmUgbG9jIGF0dHJzID1cbiAgKCogSWYgdGhlIGZpbGVuYW1lIGNoYW5nZWQsIHRoZW4gdGhlcmUgd2VyZSBsaW5lIGRpcmVjdGl2ZXMsIGFuZCB0aGUgbG9jYXRpb25zXG4gICAgIGFyZSBhbGwgbWVzc2VkIHVwLiAqKVxuICAobm90IChzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSkpXG4gIHx8ICgqIElnbm9yZSB0aGluZ3MgZXhwbGljaXRseSBtYXJrZWQuICopXG4gIExpc3QuZXhpc3RzXG4gICAgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBTdHJpbmcuZXF1YWwgYXR0ci5hdHRyX25hbWUudHh0XG4gICAgICAgIE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlLmF0dHJfbmFtZS50eHQpXG4gICAgYXR0cnNcblxubGV0IHJlYyBleHRyYWN0X2NvbnN0cmFpbnQgZSA9XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSB8IFBleHBfY29lcmNlIChlLCBfLCBjdCkgLT4gU29tZSAoZSwgY3QpXG4gIHwgUGV4cF9uZXd0eXBlIChuYW1lLCBleHApIC0+XG4gICAgICBPcHRpb24ubWFwIChleHRyYWN0X2NvbnN0cmFpbnQgZXhwKSB+ZjooZnVuIChleHAsIGN0KSAtPlxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlIChuYW1lLCBleHApO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdCApKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZG9fY2hlY2sgfm5vZGVfbmFtZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzID1cbiAgaWYgbm90ICFzYW1lX2ZpbGVfc29fZmFyIHRoZW4gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgZWxzZSBpZiBub2RlX2xvYy5sb2NfZ2hvc3QgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnVuaW9uIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcbiAgZWxzZSBpZiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5jb3ZlcmVkX2J5IGNoaWxkcmVuc19sb2NzIH5sb2M6bm9kZV9sb2MgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lIG5vZGVfbG9jIHNpYmxpbmdzX2xvY3NcbiAgZWxzZVxuICAgIGxldCBjaGlsZF9uYW1lLCBjaGlsZF9sb2MgPVxuICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZmluZF9vdXRzaWRlIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgaW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweDpAIHRoaXMgJXMgaXMgYnVpbHQgZnJvbSBhJXMgd2hvc2UgbG9jYXRpb24gaXMgXFxcbiAgICAgICBvdXRzaWRlIG9mIHRoaXMgbm9kZSdzLkAuQ2hpbGQgJXMgZm91bmQgYXQ6QCAlYVwiXG4gICAgICBub2RlX25hbWVcbiAgICAgICgobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgY2hpbGRfbmFtZSAwIHdpdGhcbiAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyAtPiBcIm4gXCJcbiAgICAgICB8IF8gLT4gXCIgXCIpXG4gICAgICBeIGNoaWxkX25hbWUpXG4gICAgICBjaGlsZF9uYW1lIExvY2F0aW9uLnByaW50IGNoaWxkX2xvY1xuXG5sZXQgZW5mb3JjZV9pbnZhcmlhbnRzIGZuYW1lID1cbiAgbGV0ICgpID0gZmlsZSA6PSBmbmFtZSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICgqIFRPRE86IHdlIHNob3VsZCBnZW5lcmF0ZSBhIGNsYXNzIHdoaWNoIGVuZm9yY2VzIHRoZSBsb2NhdGlvbiBpbnZhcmlhbnQuXG4gICAgICAgQW5kIHRoZW4gd2Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgd2hlcmUgd2UgbmVlZCBhbiBlc2NhcGVcbiAgICAgICBoYXRjaCBiZWNhdXNlIHRoZSBwYXJzZXIgaXNuJ3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLlxuXG4gICAgICAgVGhhdCB3b3VsZCBlbnN1cmUgdGhhdCB3ZSBzdGF5IHVwIHRvIGRhdGUgYXMgdGhlIEFTVCBjaGFuZ2VzLiAqKVxuXG4gICAgbWV0aG9kISBsb25naWRlbnRfbG9jIHggc2libGluZ3MgPVxuICAgICAgaWYgeC5sb2MubG9jX2dob3N0IHRoZW4gc2libGluZ3NcbiAgICAgIGVsc2UgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWU6XCJpZGVudFwiIHgubG9jIHNpYmxpbmdzXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnByZl9sb2MgeC5wcmZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjcm93X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInJvdyBmaWVsZFwiIHgucHJmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9iamVjdF9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvZl9sb2MgeC5wb2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvYmplY3RfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib2JqZWN0IGZpZWxkXCIgeC5wb2ZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBiaW5kaW5nX29wIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNiaW5kaW5nX29wIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJiaW5kaW5nIG9wZXJhdG9yXCIgeC5wYm9wX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZhbF9sb2MgeC5wdmFsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgZGVzY3JpcHRpb25cIiB4LnB2YWxfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cGVfbG9jIHgucHR5cGVfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZGVjbGFyYXRpb25cIiB4LnB0eXBlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbGRfbG9jIHgucGxkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibGFiZWwgZGVjbGFyYXRpb25cIiB4LnBsZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNkX2xvYyB4LnBjZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCIgeC5wY2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4dF9sb2MgeC5wdHlleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGV4dGVuc2lvblwiIHgucHR5ZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4dF9sb2MgeC5wZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiIHgucGV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3R5X2xvYyB4LnBjdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlXCIgeC5wY3R5X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3RmX2xvYyB4LnBjdGZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGUgZmllbGRcIiB4LnBjdGZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNpX2xvYyB4LnBjaV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3NcIiB4LnBjaV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNsX2xvYyB4LnBjbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc19leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGV4cHJlc3Npb25cIiB4LnBjbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNmX2xvYyB4LnBjZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGZpZWxkXCIgeC5wY2ZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc2lnX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzaWduYXR1cmUgaXRlbVwiIHgucHNpZ19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtZF9sb2MgeC5wbWRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGRlY2xhcmF0aW9uXCIgeC5wbWRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1zX2xvYyB4LnBtc19hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9zdWJzdGl0dXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHN1YnN0aXR1dGlvblwiIHgucG1zX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXRkX2xvYyB4LnBtdGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiIHgucG10ZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9wZW5faW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvcGVuX2xvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb3Blbl9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9wZW5cIiB4LnBvcGVuX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBpbmNsX2xvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImluY2x1ZGVcIiB4LnBpbmNsX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHN0cl9sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic3RydWN0dXJlIGl0ZW1cIiB4LnBzdHJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtYl9sb2MgeC5wbWJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgYmluZGluZ1wiIHgucG1iX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgKilcbiAgICAoKiB0aGUgdHlwZSBjb25zdHJhaW50IGlzIGR1cGxpY2F0ZWQuICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmJfbG9jIHgucHZiX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgbWF0Y2ggKHgucHZiX3BhdC5wcGF0X2Rlc2MsIGV4dHJhY3RfY29uc3RyYWludCB4LnB2Yl9leHByKSB3aXRoXG4gICAgICAgICAgKCogbGV0IHggOiB0eXBlIGEgYiBjLiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfIDo6IF8sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAoKiBsZXQgeCA6ICBjdCA9IGVcbiAgICAgICAgICAgICBsZXQgeCA6PiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50IChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoW10sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdHAucHR5cF9sb2MgY3RlLnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgX2FjYyA9IHNlbGYjY29yZV90eXBlIGN0cCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjdmFsdWVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBiaW5kaW5nXCIgeC5wdmJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1UIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgdHlwZS4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSB0eXBlLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG10eV9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHgucG10eV9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlXCIgeC5wbXR5X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNRSBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIGV4cHIuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgZXhwci4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyB4LnBtb2RfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZXhwcmVzc2lvblwiIHgucG1vZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgeC5wdHlwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29yZSB0eXBlXCIgeC5wdHlwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogQW5kIGFnYWluIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNleHByZXNzaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgeC5wZXhwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhwcmVzc2lvblwiIHgucGV4cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIC4uLiBhbmQgYWdhaW4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjcGF0dGVybiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHgucHBhdF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInBhdHRlcm5cIiB4LnBwYXRfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgICopXG4gICAgKCogdGhlIGNvbnN0cnVjdCBlcXVhbHMgdGhlIGxvY2F0aW9uIG9mIHRoZSB0eXBlX2V4Y2VwdGlvbiAqKVxuICAgICgqIChhbmQgc28gY292ZXJzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlcykuICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXhuX2xvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgaW5pdCA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGxldCBjaGlsZHNfbG9jcyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgeC5wdHlleG5fY29uc3RydWN0b3IgaW5pdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cnNfbG9jcyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGluaXQgaW5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgYXR0cnNfbG9jcyBzaWJsaW5nc19sb2NzKTtcbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBjaGlsZHNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgKilcbiAgICAoKiBsaHMgaXMgc29tZXRpbWVzIGluY2x1ZGVkIGluIHRoZSByaHMuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQd2l0aF90eXBlIChfLCB0ZGVjbCkgfCBQd2l0aF90eXBlc3Vic3QgKF8sIHRkZWNsKSAtPlxuICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiB0ZGVjbCBzaWJsaW5nc19sb2NcbiAgICAgIHwgXyAtPiBzdXBlciN3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6KilcbiAgICAoKiAtIEZvby57IGJhcjsgLi4uIH0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLlsgYmFyOyAuLi4gXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uKCBiYXI7IC4uLiApICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIG1ldGhvZCB4IDogdHlwZSBhLiAuLi4gPSAuLi4gICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpIDwtIGJheiAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdIDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9yZWNvcmQgKGxhYmVscywgZXhwcl9vKSAtPlxuICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGxpZCwgZSkgYWNjIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgZS5wZXhwX2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAoKiBwdW5uaW5nLiAqKVxuICAgICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gZXhwcl9vIGFjY1xuICAgICAgfCBQZXhwX29wZW5cbiAgICAgICAgICAoKHsgcG9wZW5fZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9pZGVudCBsaWQ7IF8gfTsgXyB9IGFzIG9wbiksIGUpXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnQgPSAwXG4gICAgICAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2NfZW5kIGUucGV4cF9sb2MubG9jX2VuZCA8PiAwIC0+XG4gICAgICAgICAgKCogbGV0J3MgcmVsb2NhdGUgLi4uICopXG4gICAgICAgICAgbGV0IGVfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX3N0YXJ0ID0gbGlkLmxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICBzdXBlciNleHByZXNzaW9uX2Rlc2NcbiAgICAgICAgICAgIChQZXhwX29wZW4gKG9wbiwgeyBlIHdpdGggcGV4cF9sb2MgPSBlX2xvYyB9KSlcbiAgICAgICAgICAgIGFjY1xuICAgICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8sIGN0KTsgXyB9KSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZXh0cmFjdF9jb25zdHJhaW50IGUgd2l0aFxuICAgICAgICAgIHwgU29tZSAoZSwgY3RlKSB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RlLnB0eXBfbG9jIGN0LnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgUGV4cF9hcHBseSAoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gbGlkOyBfIH07IF8gfSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIExvbmdpZGVudC5sYXN0X2V4biBsaWQgd2l0aFxuICAgICAgICAgIHwgaWRcbiAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCBpZCB+cHJlZml4OlwiLlwiXG4gICAgICAgICAgICAgICAgICYmIChTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9PC1cIikgLT5cbiAgICAgICAgICAgICAgc2VsZiNsaXN0IChmdW4gKF8sIGUpIC0+IHNlbGYjZXhwcmVzc2lvbiBlKSBhcmdzIGFjY1xuICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiAgICAgICAgICAgICAqKVxuICAgICgqIC0gcHVubmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gcmVjb3JkIGZpZWxkIHdpdGggdHlwZSBjb25zdHJhaW50LiAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gdW5wYWNrIGxvY2F0aW9ucyBiZWluZyBpbmNvcnJlY3Qgd2hlbiBjb25zdHJhaW5lZCAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfcmVjb3JkIChsYWJlbHMsIF8pIC0+XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChsaWQsIHBhdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgcGF0LnBwYXRfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIHBhdC5wcGF0X2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgKCogc2ltcGxlIHB1bm5pbmchICopXG4gICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwIGFjY1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHBhdCBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGF0IGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh7IHBwYXRfZGVzYyA9IFBwYXRfdW5wYWNrIGE7IF8gfSwgYikgLT5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIGZha2Ugc3RydWN0dXJlIGZvciBhIGdlbmVyYXRpdmUgYXJndW1lbnQgY292ZXJzIHRoZSAgICAgKilcbiAgICAoKiBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2FwcGx5IChtLCB7IHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdOyBwbW9kX2xvYzsgXyB9KVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIG0ucG1vZF9sb2MubG9jX3N0YXJ0IHBtb2RfbG9jLmxvY19zdGFydCA9IDAgLT5cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciBtIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogb3Blbl9pbmZvcyBmb3IgUGNsX29wZW4gb25seSBjb3ZlcnMgdGhlIFwib3BlblwiIGtleXdvcmQgICopXG4gICAgKCogYW5kIG5vdCB0aGUgbW9kdWxlIG9wZW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfb3BlbiAob2QsIGNlKSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgY2UgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X29wZW4gKG9kLCBjdCkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGN0IGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgZG9jc3RyaW5ncyBoYXZlICAgICopXG4gICAgKCogdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIGl0ZW0gdGhleSBnZXQgYXR0YWNoZWQgdG8uICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB4IGFjYyA9XG4gICAgICBtYXRjaCB4LmF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLmRvY1wiIHwgXCJvY2FtbC50ZXh0XCIgLT4gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjYXR0cmlidXRlIHggYWNjXG4gIGVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgQXJnID0gU3RkbGliLkFyZ1xuXG5sZXQgZXhlX25hbWUgPSBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgU3RkbGliLlN5cy5leGVjdXRhYmxlX25hbWVcbmxldCBhcmdzID0gcmVmIFtdXG5sZXQgYWRkX2FyZyBrZXkgc3BlYyB+ZG9jID0gYXJncyA6PSAoa2V5LCBzcGVjLCBkb2MpIDo6ICFhcmdzXG5sZXQgbG9jX2ZuYW1lID0gcmVmIE5vbmVcbmxldCBwZXJmb3JtX2NoZWNrcyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzXG5sZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnNcbmxldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA9IHJlZiBPcHRpb25zLnBlcmZvcm1fbG9jYXRpb25zX2NoZWNrXG5sZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AgPSByZWYgZmFsc2VcbmxldCBhcHBseV9saXN0ID0gcmVmIE5vbmVcbmxldCBwcmVwcm9jZXNzb3IgPSByZWYgTm9uZVxubGV0IG5vX21lcmdlID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF9wYXNzZXMgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyA9IHJlZiBmYWxzZVxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE9wdGlvbnMuZGlmZl9jb21tYW5kXG5sZXQgcHJldHR5ID0gcmVmIGZhbHNlXG5sZXQgc3R5bGVyID0gcmVmIE5vbmVcbmxldCBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgPSByZWYgTm9uZVxubGV0IGNvcnJlY3RlZF9zdWZmaXggPSByZWYgXCIucHB4LWNvcnJlY3RlZFwiXG5cbmxldCBnaG9zdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgIG1ldGhvZCEgbG9jYXRpb24gbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgZW5kXG5cbmxldCBjaG9wX3ByZWZpeCB+cHJlZml4IHggPVxuICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXggeCB0aGVuXG4gICAgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHggKFN0cmluZy5sZW5ndGggcHJlZml4KSlcbiAgZWxzZSBOb25lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoIChsb2MgOiBMb2NhdGlvbi50KSA9XG4gIGxldCBmbmFtZSA9IGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lIGluXG4gIG1hdGNoIGNob3BfcHJlZml4IH5wcmVmaXg6XCIuL1wiIGZuYW1lIHdpdGhcbiAgfCBTb21lIGZuYW1lIC0+IGZuYW1lXG4gIHwgTm9uZSAtPiBmbmFtZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zdHIgOiBzdHJ1Y3R1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc3RyX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc2lnIDogc2lnbmF0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHNpZ19sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbm1vZHVsZSBMaW50X2Vycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9IExvY2F0aW9uLnQgKiBzdHJpbmdcblxuICBsZXQgb2Zfc3RyaW5nIGxvYyBzID0gKGxvYywgcylcbmVuZFxuXG5tb2R1bGUgQ29va2llcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUXG5cbiAgbGV0IGdpdmVuX3Rocm91Z2hfY2xpID0gcmVmIFtdXG5cbiAgbGV0IGdldCBUIG5hbWUgcGF0dGVybiA9XG4gICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2UgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG5cbiAgbGV0IGdldF9yZXMgVCBuYW1lIHBhdHRlcm4gPVxuICAgIG1hdGNoXG4gICAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoT2sgZSkgLT4gT2sgKFNvbWUgZSlcbiAgICB8IFNvbWUgKEVycm9yIGUpIC0+IEVycm9yIGVcblxuICBsZXQgc2V0IFQgbmFtZSBleHByID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLnNldF9jb29raWUgbmFtZSAoU2VsZWN0ZWRfYXN0LnRvX29jYW1sIEV4cHJlc3Npb24gZXhwcilcblxuICBsZXQgaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9oYW5kbGVyIGYgPSBoYW5kbGVycyA6PSAhaGFuZGxlcnMgQCBbIGYgXVxuXG4gIGxldCBhZGRfc2ltcGxlX2hhbmRsZXIgbmFtZSBwYXR0ZXJuIH5mID1cbiAgICBhZGRfaGFuZGxlciAoZnVuIFQgLT4gZiAoZ2V0IFQgbmFtZSBwYXR0ZXJuKSlcblxuICBsZXQgYWNrbm93bGVkZ2VfY29va2llcyBUID0gTGlzdC5pdGVyICFoYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuICBsZXQgcG9zdF9oYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX3Bvc3RfaGFuZGxlciBmID0gcG9zdF9oYW5kbGVycyA6PSAhcG9zdF9oYW5kbGVycyBAIFsgZiBdXG4gIGxldCBjYWxsX3Bvc3RfaGFuZGxlcnMgVCA9IExpc3QuaXRlciAhcG9zdF9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuZW5kXG5cbm1vZHVsZSBJbnN0cnVtZW50ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gQmVmb3JlIHwgQWZ0ZXJcblxuICB0eXBlIHQgPSB7XG4gICAgdHJhbnNmb3JtYXRpb24gOlxuICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQ7XG4gICAgcG9zaXRpb24gOiBwb3M7XG4gIH1cblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgICAgbGV0IHRyYW5zZm9ybWF0aW9uIGN0eCBzdCA9IHJldHVybiAodHJhbnNmb3JtYXRpb24gY3R4IHN0KSBpblxuICAgICAgeyB0cmFuc2Zvcm1hdGlvbjsgcG9zaXRpb24gfVxuICBlbmRcblxuICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBfIHN0ID0gdHJhbnNmb3JtYXRpb24gc3QgaW5cbiAgICBWMi5tYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvblxuZW5kXG5cbm1vZHVsZSBUcmFuc2Zvcm0gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgYWxpYXNlcyA6IHN0cmluZyBsaXN0O1xuICAgIGltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlICogUGFyc2V0cmVlLnN0cnVjdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgKiBQYXJzZXRyZWUuc2lnbmF0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGluc3RydW1lbnQgOiBJbnN0cnVtZW50LnQgb3B0aW9uO1xuICAgIHJ1bGVzIDogQ29udGV4dF9mcmVlLlJ1bGUudCBsaXN0O1xuICAgIHJlZ2lzdGVyZWRfYXQgOiBDYWxsZXJfaWQudDtcbiAgfVxuXG4gIGxldCBoYXNfbmFtZSB0IG5hbWUgPVxuICAgIFN0cmluZy5lcXVhbCBuYW1lIHQubmFtZSB8fCBMaXN0LmV4aXN0cyB+ZjooU3RyaW5nLmVxdWFsIG5hbWUpIHQuYWxpYXNlc1xuXG4gIGxldCBhbGwgOiB0IGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHByaW50X2NhbGxlcl9pZCBvYyAoY2FsbGVyX2lkIDogQ2FsbGVyX2lkLnQpID1cbiAgICBtYXRjaCBjYWxsZXJfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRfc3RyaW5nIG9jIFwiPHVua25vd24gbG9jYXRpb24+XCJcbiAgICB8IFNvbWUgbG9jIC0+IFByaW50Zi5mcHJpbnRmIG9jIFwiJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG5cbiAgbGV0IHJlZ2lzdGVyID8oZXh0ZW5zaW9ucyA9IFtdKSA/KHJ1bGVzID0gW10pID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuICAgICAgP2luc3RydW1lbnQgPyhhbGlhc2VzID0gW10pIG5hbWUgPVxuICAgIGxldCBydWxlcyA9IExpc3QubWFwIGV4dGVuc2lvbnMgfmY6Q29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIEAgcnVsZXMgaW5cbiAgICBsZXQgY2FsbGVyX2lkID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbIFN0ZGxpYi5fX0ZJTEVfXyBdIGluXG4gICAgKG1hdGNoIExpc3QuZmlsdGVyICFhbGwgfmY6KGZ1biBjdCAtPiBoYXNfbmFtZSBjdCBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgY3QgOjogXyAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIldhcm5pbmc6IGNvZGUgdHJhbnNmb3JtYXRpb24gJXMgcmVnaXN0ZXJlZCB0d2ljZS5cXG5cIlxuICAgICAgICAgIG5hbWU7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIGZpcnN0IHRpbWUgd2FzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkXG4gICAgICAgICAgY3QucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gc2Vjb25kIHRpbWUgaXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWQgY2FsbGVyX2lkKTtcbiAgICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgY3QgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBhbGlhc2VzO1xuICAgICAgICBydWxlcztcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGltcGw7XG4gICAgICAgIGludGY7XG4gICAgICAgIGxpbnRfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGY7XG4gICAgICAgIGxpbnRfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudDtcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IGNhbGxlcl9pZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGFsbCA6PSBjdCA6OiAhYWxsXG5cbiAgbGV0IHJlYyBsYXN0IHByZXYgbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGxvY19vZl9saXN0IH5nZXRfbG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBmaXJzdCA6IExvY2F0aW9uLnQgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgbGV0IGxhc3QgPSBnZXRfbG9jIChsYXN0IHggbCkgaW5cbiAgICAgICAgU29tZSB7IGZpcnN0IHdpdGggbG9jX2VuZCA9IGxhc3QubG9jX2VuZCB9XG5cbiAgbGV0IG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIHQgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWUgPVxuICAgIGxldCB7IHJ1bGVzOyBlbmNsb3NlX2ltcGw7IGVuY2xvc2VfaW50ZjsgaW1wbDsgaW50ZjsgXyB9ID0gdCBpblxuICAgIGxldCBtYXAgPVxuICAgICAgbmV3IENvbnRleHRfZnJlZS5tYXBfdG9wX2Rvd25cbiAgICAgICAgcnVsZXMgfmVtYmVkX2Vycm9ycyB+Z2VuZXJhdGVkX2NvZGVfaG9vazpob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgIGluXG4gICAgbGV0IGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBjb250ZXh0IHdob2xlX2xvYyBmID1cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9IGYgd2hvbGVfbG9jIGluXG4gICAgICAobWF0Y2ggd2hvbGVfbG9jIHdpdGhcbiAgICAgIHwgU29tZSAobG9jIDogTG9jYXRpb24udCkgLT4gKFxuICAgICAgICAgIGxldCBsb2NfaGVhZGVyID0geyBsb2Mgd2l0aCBsb2NfZW5kID0gbG9jLmxvY19zdGFydCB9IGluXG4gICAgICAgICAgbGV0IGxvY19mb290ZXIgPSB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICAobWF0Y2ggaGVhZGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19oZWFkZXIgKE1hbnkgaGVhZGVyKSk7XG4gICAgICAgICAgbWF0Y2ggZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19mb290ZXIgKE1hbnkgZm9vdGVyKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggaGVhZGVyIEAgZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBob29rLmYgY29udGV4dCBsb2MgKE1hbnkgbCkpKTtcbiAgICAgIChoZWFkZXIsIGZvb3RlcilcbiAgICBpblxuICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZSB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgIGluXG4gICAgbGV0IG1hcF9pbXBsIGN0eHQgc3Rfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHN0ID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzdF93aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ltcGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzdCB+Z2V0X2xvYzooZnVuIHN0IC0+IHN0LlBhcnNldHJlZS5wc3RyX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU3RydWN0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc3RydWN0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzdDsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHN0IC0+IG1hdGNoIGltcGwgd2l0aCBOb25lIC0+IHJldHVybiBzdCB8IFNvbWUgZiAtPiBmIGN0eHQgc3RcbiAgICBpblxuICAgIGxldCBtYXBfaW50ZiBjdHh0IHNnX3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzZyA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc2dfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbnRmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc2cgfmdldF9sb2M6KGZ1biBzZyAtPiBzZy5QYXJzZXRyZWUucHNpZ19sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFNpZ25hdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3NpZ25hdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc2c7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzZyAtPiBtYXRjaCBpbnRmIHdpdGggTm9uZSAtPiByZXR1cm4gc2cgfCBTb21lIGYgLT4gZiBjdHh0IHNnXG4gICAgaW5cbiAgICB7IHQgd2l0aCBpbXBsID0gU29tZSBtYXBfaW1wbDsgaW50ZiA9IFNvbWUgbWFwX2ludGYgfVxuXG4gIGxldCBidWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfmhvb2sgfnJ1bGVzIH5lbmNsb3NlX2ltcGwgfmVuY2xvc2VfaW50ZlxuICAgICAgfmlucHV0X25hbWUgPVxuICAgIG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5ob29rIH5pbnB1dF9uYW1lXG4gICAgICB7XG4gICAgICAgIG5hbWUgPSBcIjxidWlsdGluOmNvbnRleHQtZnJlZT5cIjtcbiAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOltdO1xuICAgICAgfVxuXG4gIGxldCBwYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIHRzID1cbiAgICBsZXQgYmVmb3JlX2luc3RycywgYWZ0ZXJfaW5zdHJzLCByZXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IHRzIH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChiZWZfaSwgYWZ0X2ksIHJlc3QpIHQgLT5cbiAgICAgICAgICBsZXQgcmVkdWNlZF90ID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdCB3aXRoXG4gICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZiBpbnN0ciA9XG4gICAgICAgICAgICAoaW5zdHIuSW5zdHJ1bWVudC5wb3NpdGlvbiwgaW5zdHIuSW5zdHJ1bWVudC50cmFuc2Zvcm1hdGlvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIE9wdGlvbi5tYXAgdC5pbnN0cnVtZW50IH5mIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKEJlZm9yZSwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYmVmX2ksXG4gICAgICAgICAgICAgICAgYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgU29tZSAoQWZ0ZXIsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCBiZWZfaSxcbiAgICAgICAgICAgICAgICB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IE5vbmUgLT4gKGJlZl9pLCBhZnRfaSwgcmVkdWNlZF90IDo6IHJlc3QpKVxuICAgIGluXG4gICAgKCBgTGludGVyc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIHQubGludF9pbXBsIHx8IE9wdGlvbi5pc19zb21lIHQubGludF9pbnRmIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxsaW50OiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gdC5saW50X2ltcGw7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gdC5saW50X2ludGY7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBQcmVwcm9jZXNzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbXBsXG4gICAgICAgICAgICAgICB8fCBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW50ZlxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxwcmVwcm9jZXNzOiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IHQucHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSB0LnByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgIGBSZXN0IHJlc3QgKVxuZW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm0ucmVnaXN0ZXJcblxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuICAgICAgPVxuICAgIGxldCBpbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgaW1wbCB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFN0cnVjdHVyZSlcbiAgICBpblxuICAgIGxldCBpbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgaW50ZiB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFNpZ25hdHVyZSlcbiAgICBpblxuICAgIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbmVuZFxuXG5sZXQgYWRkX2N0eHRfYXJnIChmIDogJ2EgLT4gJ2IpIDogRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdiID1cbiBmdW4gXyB4IC0+IGYgeFxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZiA/aW1wbFxuICAgID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ltcGwgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW50ZiA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbXBsID0gT3B0aW9uLm1hcCBsaW50X2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ludGYgPSBPcHRpb24ubWFwIGxpbnRfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW1wbCA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbnRmID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG5cbmxldCByZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIH5uYW1lID8oYWxpYXNlcyA9IFtdKSB+aW1wbCB+aW50ZiA9XG4gIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIG5hbWUgfmltcGwgfmludGYgfmFsaWFzZXNcbltAQHdhcm5pbmcgXCItMTZcIl1cbigqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYSB3YXJuaW5nIDE2IGFzIG9mIG9jYW1sIDQuMTIgKilcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZlxuXG5sZXQgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgbmFtZSB+b2xkX2Ryb3BwZWQgfm5ld19kcm9wcGVkID1cbiAgbGV0IHByaW50X2RpZmYgd2hhdCBhIGIgPVxuICAgIGxldCBkaWZmID1cbiAgICAgIExpc3QuZmlsdGVyIGEgfmY6KGZ1biAobmFtZSA6IF8gTG9jLnQpIC0+XG4gICAgICAgICAgbm90XG4gICAgICAgICAgICAoTGlzdC5leGlzdHMgYiB+ZjooZnVuIChuYW1lJyA6IF8gTG9jYXRpb24ubG9jKSAtPlxuICAgICAgICAgICAgICAgICBuYW1lLnR4dCA9PSBuYW1lJy50eHQpKSlcbiAgICBpblxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBkaWZmKSB0aGVuIChcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzICVzIGFmdGVyIGFwcGx5aW5nICVzOlxcblwiIHdoYXRcbiAgICAgICAgbmFtZTtcbiAgICAgIExpc3QuaXRlciBkaWZmIH5mOihmdW4geyBMb2NhdGlvbi50eHQ7IGxvYyB9IC0+XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiLSAlYTogJXNcXG5cIiBMb2NhdGlvbi5wcmludCBsb2MgdHh0KTtcbiAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIkAuXCIpXG4gIGluXG4gIHByaW50X2RpZmYgXCJkaXNhcHBlYXJlZFwiIG5ld19kcm9wcGVkIG9sZF9kcm9wcGVkO1xuICBwcmludF9kaWZmIFwicmVhcHBlYXJlZFwiIG9sZF9kcm9wcGVkIG5ld19kcm9wcGVkXG5cbmxldCBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgfmlucHV0X25hbWUgPVxuICBsZXQgY3RzID1cbiAgICBtYXRjaCAhYXBwbHlfbGlzdCB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QucmV2ICFUcmFuc2Zvcm0uYWxsXG4gICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgICAgTGlzdC5maW5kICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICBpblxuICBsZXQgKCBgTGludGVycyBsaW50ZXJzLFxuICAgICAgICBgUHJlcHJvY2VzcyBwcmVwcm9jZXNzLFxuICAgICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgICAgYFJlc3QgY3RzICkgPVxuICAgIFRyYW5zZm9ybS5wYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIGN0c1xuICBpblxuICAoKiBBbGxvdyBvbmx5IG9uZSBwcmVwcm9jZXNzb3IgdG8gYXNzdXJlIGRldGVybWluaXN0aWMgb3JkZXIgKilcbiAgKGlmIExpc3QubGVuZ3RoIHByZXByb2Nlc3MgPiAxIHRoZW5cbiAgICAgbGV0IHBwID1cbiAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0Lm1hcCBwcmVwcm9jZXNzIH5mOihmdW4gdCAtPiB0Lm5hbWUpKVxuICAgICBpblxuICAgICBsZXQgZXJyID1cbiAgICAgICBQcmludGYuc3ByaW50ZiBcIkF0IG1vc3Qgb25lIHByZXByb2Nlc3NvciBpcyBhbGxvd2VkLCB3aGlsZSBnb3Q6ICVzXCIgcHBcbiAgICAgaW5cbiAgICAgZmFpbHdpdGggZXJyKTtcbiAgbGV0IG1ha2VfZ2VuZXJpYyB0cmFuc2Zvcm1zID1cbiAgICBpZiAhbm9fbWVyZ2UgdGhlblxuICAgICAgTGlzdC5tYXAgdHJhbnNmb3Jtc1xuICAgICAgICB+ZjpcbiAgICAgICAgICAoVHJhbnNmb3JtLm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfnRvb2xfbmFtZVxuICAgICAgICAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSlcbiAgICBlbHNlXG4gICAgICAobGV0IGdldF9lbmNsb3NlcnMgfmYgPVxuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBmIGN0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGN0Lm5hbWUsIHgpKVxuICAgICAgICAgKCogU29ydCB0aGVtIHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyaW5nICopXG4gICAgICAgICB8PiBMaXN0LnNvcnQgfmNtcDooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKVxuICAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICAgaW5cblxuICAgICAgIGxldCBydWxlcyA9XG4gICAgICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LnJ1bGVzKVxuICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICBhbmQgaW1wbF9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbXBsKVxuICAgICAgIGFuZCBpbnRmX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ludGYpIGluXG4gICAgICAgbWF0Y2ggKHJ1bGVzLCBpbXBsX2VuY2xvc2VycywgaW50Zl9lbmNsb3NlcnMpIHdpdGhcbiAgICAgICB8IFtdLCBbXSwgW10gLT4gdHJhbnNmb3Jtc1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgICBsZXQgbWVyZ2VfZW5jbG9zZXIgPSBmdW5jdGlvblxuICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgIHwgZW5jbG9zZXJzIC0+XG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoZnVuIGN0eHQgbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycywgZm9vdGVycyA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIGVuY2xvc2VycyB+ZjooZnVuIGYgLT4gZiBjdHh0IGxvYykgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzID0gTGlzdC5jb25jYXQgaGVhZGVycyBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGZvb3RlcnMgPSBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgZm9vdGVycykgaW5cbiAgICAgICAgICAgICAgICAgICAgIChoZWFkZXJzLCBmb290ZXJzKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgVHJhbnNmb3JtLmJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+cnVsZXMgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgIH5lbmNsb3NlX2ltcGw6KG1lcmdlX2VuY2xvc2VyIGltcGxfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH5lbmNsb3NlX2ludGY6KG1lcmdlX2VuY2xvc2VyIGludGZfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWVcbiAgICAgICAgICAgOjogdHJhbnNmb3JtcylcbiAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKGN0LmltcGwsIGN0LmludGYpIHdpdGggTm9uZSwgTm9uZSAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgaW5cbiAgbGludGVycyBAIHByZXByb2Nlc3MgQCBiZWZvcmVfaW5zdHJzIEAgbWFrZV9nZW5lcmljIGN0cyBAIGFmdGVyX2luc3Ryc1xuXG5sZXQgYXBwbHlfdHJhbnNmb3JtcyB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmZpZWxkIH5saW50X2ZpZWxkIH5kcm9wcGVkX3NvX2ZhclxuICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzIGFzdCA9XG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH50b29sX25hbWUgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH5pbnB1dF9uYW1lXG4gIGluXG4gIGxldCBmaW5pc2ggKGFzdCwgX2Ryb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpID1cbiAgICAoIGFzdCxcbiAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzIH5mOihmdW4gKGxvYywgcykgLT5cbiAgICAgICAgICBDb21tb24uYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMpLFxuICAgICAgZXJyb3JzIClcbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgY3RzIH5pbml0Oihhc3QsIFtdLCBbXSwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKGFzdCwgZHJvcHBlZCwgKGxpbnRfZXJyb3JzIDogXyBsaXN0KSwgZXJyb3JzKSAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aFxuICAgICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgICAgICAgIG1hdGNoIGxpbnRfZmllbGQgY3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAobGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSAobGludF9lcnJvcnMgQCBmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKGxpbnRfZXJyb3JzLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmaWVsZCBjdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IChhc3QsIG1vcmVfZXJyb3JzKSwgZXJyb3JzID1cbiAgICAgICAgICAgICAgdHJ5IChmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKChhc3QsIFtdKSwgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkcm9wcGVkID1cbiAgICAgICAgICAgICAgaWYgIWRlYnVnX2F0dHJpYnV0ZV9kcm9wIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBuZXdfZHJvcHBlZCA9IGRyb3BwZWRfc29fZmFyIGFzdCBpblxuICAgICAgICAgICAgICAgIGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIGN0Lm5hbWUgfm9sZF9kcm9wcGVkOmRyb3BwZWRcbiAgICAgICAgICAgICAgICAgIH5uZXdfZHJvcHBlZDtcbiAgICAgICAgICAgICAgICBuZXdfZHJvcHBlZClcbiAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMgQCBtb3JlX2Vycm9ycykpXG4gIGluXG4gIGZpbmlzaCBhY2NcblxuKCokKilcblxubGV0IGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH4oa2luZCA6IEtpbmQudCkgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBJbnRmIC0+IEludGZfb3JfaW1wbC5JbnRmIFsgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciBdXG4gIHwgSW1wbCAtPiBJbnRmX29yX2ltcGwuSW1wbCBbIGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgXVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gfihraW5kIDogS2luZC50KSA9XG4gIGV4bl90b19sb2NfZXJyb3IgZXhuIHw+IGVycm9yX3RvX2V4dGVuc2lvbiB+a2luZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEFjdHVhbCByZXdyaXRpbmcgb2Ygc3RydWN0dXJlL3NpZ25hdHVyZXMgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBwcmludF9wYXNzZXMgKCkgPVxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhsaWJfZHJpdmVyXCIgaW5cbiAgbGV0IGVtYmVkX2Vycm9ycyA9IGZhbHNlIGluXG4gIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgICAgfmlucHV0X25hbWU6Tm9uZVxuICBpblxuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlblxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpmcmVzaGVuLWFuZC1jb2xsZWN0LWF0dHJpYnV0ZXM+XFxuXCI7XG4gIExpc3QuaXRlciBjdHMgfmY6KGZ1biBjdCAtPiBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5UcmFuc2Zvcm0ubmFtZSk7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWF0dHJpYnV0ZXM+XFxuXCI7XG4gICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1leHRlbnNpb25zPlxcblwiKVxuXG5sZXQgc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyA9XG4gIExpc3Quc29ydCBlcnJvcnMgfmNtcDooZnVuIGVycm9yIGVycm9yJyAtPlxuICAgICAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICAgICAgbGV0IGxvYycgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3InIGluXG4gICAgICBMb2NhdGlvbi5jb21wYXJlIGxvYyBsb2MnKVxuXG4oKiQqKVxuXG5sZXQgbWFwX3N0cnVjdHVyZV9nZW4gc3QgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3N0cnVjdHVyZSBzdCk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHN0ID1cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzdFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc3RcbiAgICBpblxuICAgIHN0XG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc3QgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3N0cnVjdHVyZV9pdGVtKVxuICAgIEAgc3RcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHN0ID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc3RydWN0dXJlIHN0XG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzdFxuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgbGV0IHN0LCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHN0IH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmltcGwpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ltcGwpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc3QgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9XG4gIG1hdGNoXG4gICAgbWFwX3N0cnVjdHVyZV9nZW4gc3RcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IG1hcF9zaWduYXR1cmVfZ2VuIHNnIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzaWduYXR1cmUgc2cpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzZyA9XG4gICAgbGV0IHNnID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc2dcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHNnXG4gICAgaW5cbiAgICBzZ1xuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHNnID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzaWduYXR1cmVfaXRlbSlcbiAgICBAIHNnXG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzZyA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc2dcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gIGxldCBzZywgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzZyB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbnRmKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbnRmKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHNnIHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zaWduYXR1cmUgc2cgPVxuICBtYXRjaFxuICAgIG1hcF9zaWduYXR1cmVfZ2VuIHNnXG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQqKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEVudHJ5IHBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzID1cbiAgbGV0IHRlc3QgbWFnaWNfbnVtYmVyID1cbiAgICBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDooU3RyaW5nLnN1YiBtYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgaW5cbiAgdGVzdCBBc3RfbWFnaWMuYXN0X2ludGZfbWFnaWNfbnVtYmVyIHx8IHRlc3QgQXN0X21hZ2ljLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG5sZXQgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGlucHV0X2ZpbGVfbmFtZSA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExvY2F0aW9uLkVycm9yLm1ha2UgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlX25hbWUpIG1zZyB+c3ViOltdXG4gICAgICBpblxuICAgICAgRXJyb3IgKGVyciwgaW5wdXRfdmVyc2lvbikpXG5cbmxldCByZW1vdmVfbm9fZXJyb3IgZm4gPSB0cnkgU3RkbGliLlN5cy5yZW1vdmUgZm4gd2l0aCBTeXNfZXJyb3IgXyAtPiAoKVxuXG5sZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgdiAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgdlxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICByYWlzZSBlXG5cbmxldCB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mID1cbiAgbWF0Y2ggIXByZXByb2Nlc3NvciB3aXRoXG4gIHwgTm9uZSAtPiBmIGZuXG4gIHwgU29tZSBwcCAtPlxuICAgICAgcHJvdGVjdHggKFN0ZGxpYi5GaWxlbmFtZS50ZW1wX2ZpbGUgXCJvY2FtbHBwXCIgXCJcIikgfmZpbmFsbHk6cmVtb3ZlX25vX2Vycm9yXG4gICAgICAgIH5mOihmdW4gdG1wZmlsZSAtPlxuICAgICAgICAgIG1hdGNoIFN5c3RlbS5ydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQ6Zm4gfm91dHB1dDp0bXBmaWxlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGYgdG1wZmlsZVxuICAgICAgICAgIHwgRXJyb3IgKGZhaWxlZF9jb21tYW5kLCBmYWxsX2JhY2tfdmVyc2lvbikgLT5cbiAgICAgICAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICAgICAgICAgIFwiRXJyb3Igd2hpbGUgcnVubmluZyBleHRlcm5hbCBwcmVwcm9jZXNzb3JcXG5Db21tYW5kIGxpbmU6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICBmYWlsZWRfY29tbWFuZClcblxubGV0IHJlbG9jYXRlX21hcHBlciA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyAqIHN0cmluZ10gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCEgcG9zaXRpb24gKG9sZF9mbiwgbmV3X2ZuKSBwb3MgPVxuICAgICAgaWYgU3RyaW5nLmVxdWFsIHBvcy5wb3NfZm5hbWUgb2xkX2ZuIHRoZW4geyBwb3Mgd2l0aCBwb3NfZm5hbWUgPSBuZXdfZm4gfVxuICAgICAgZWxzZSBwb3NcbiAgZW5kXG5cbigqIFNldCB0aGUgaW5wdXQgbmFtZSBnbG9iYWxseS4gVGhpcyBpcyB1c2VkIGJ5IHNvbWUgcHB4IHJld3JpdGVyc1xuICAgc3VjaCBhcyBiaXNlY3RfcHB4LiAqKVxubGV0IHNldF9pbnB1dF9uYW1lID0gQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9uYW1lXG5cbmxldCBsb2FkX2lucHV0IH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnJlbG9jYXRlIGZuID1cbiAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgbGV0IGlucHV0X3NvdXJjZSA9IGlmIFN0cmluZy5lcXVhbCBmbiBcIi1cIiB0aGVuIEFzdF9pby5TdGRpbiBlbHNlIEZpbGUgZm4gaW5cbiAgbGV0IGlucHV0X2tpbmQgPSBBc3RfaW8uUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSBpblxuICBtYXRjaCBBc3RfaW8ucmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdF9raW5kID0gSW50Zl9vcl9pbXBsLmtpbmQgYXN0IGluXG4gICAgICBpZiBub3QgKEtpbmQuZXF1YWwga2luZCBhc3Rfa2luZCkgdGhlblxuICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gZm5cbiAgICAgICAgICBcIkZpbGUgY29udGFpbnMgYSBiaW5hcnkgJXMgQVNUIGJ1dCBhbiAlcyB3YXMgZXhwZWN0ZWRcIlxuICAgICAgICAgIChLaW5kLmRlc2NyaWJlIGFzdF9raW5kKSAoS2luZC5kZXNjcmliZSBraW5kKVxuICAgICAgZWxzZSBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB8fCBub3QgcmVsb2NhdGUgdGhlbiAoXG4gICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICBPayAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIE9rXG4gICAgICAgICAgKCBpbnB1dF9uYW1lLFxuICAgICAgICAgICAgaW5wdXRfdmVyc2lvbixcbiAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKSApXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICBcIkZpbGUgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSlcbiAgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgRXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbilcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGZuID1cbiAgKCogSWYgdGhlcmUncyBhbiBlcnJvciB3aGlsZSBsb2FkaW5nIGluIHJ1bl9hc19wcHggbW9kZSwgdGhlIGtpbmQgb2YgQVNUIChpbXBsL2ludGYpIGlzIHN0aWxsIHVua25vd24uXG4gICAgIFRoYXQncyB3aHksIGFzIG9wcG9zZWQgdG8gbG9hZF9pbnB1dCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgZXJyb3JzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgcmVzdWx0OlxuICAgICBoYW5kbGluZyBhbiBlcnJvciBieSByZXR1cm5pbmcgYW4gQVNUIHdpdGggdGhlIGVycm9yIHBhY2tlZCBhcyBleHRlbnNpb24gbm9kZSB3b3VsZG4ndCBiZSBwb3NzaWJsZS4gKilcbiAgbWF0Y2ggQXN0X2lvLnJlYWQgKEZpbGUgZm4pIH5pbnB1dF9raW5kOkFzdF9pby5OZWNlc3NhcmlseV9iaW5hcnkgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICAgICAgYXN0XG4gICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgdGhlbiBhc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSlcbiAgICAgIGluXG4gICAgICAoKiBXaXRoIGAtLWFzLXBweGAsIG9jYW1sIGNhbGxzIHRoZSBzdGFuZGFsb25lIHNlcGFyYXRlbHkgZm9yIGV2ZXJ5IHN0cnVjdHVyZS9zaWduYXR1cmUgaXRlbVxuICAgICAgICAgd2l0aCB0aGUgZmlsZW5hbWUgYXMgbWV0YWRhdGEgdGhhdCBpdCBnZXRzIGZyb20gdGhlIHByZXZpb3VzIGNhbGwuIHJlbG9jYXRlX21hcHBlciBvbmx5XG4gICAgICAgICByZWxvY2F0ZXMgcG9zaXRpb25zIHdob3NlIHBvc2l0aW9uIGZpbGVuYW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgbWV0YWRhdGEgZmlsZW5hbWUuXG4gICAgICAgICBTbyBhbHdheXMgcmV0dXJuIHRoZSBtZXRhZGF0YSBmaWxlbmFtZSBpdHNlbGYsIGV2ZW4gaWYgYC1sb2MtZmlsZW5hbWVgIGlzIHByb3ZpZGVkLiAqKVxuICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgXykpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJUaGUgaW5wdXQgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiRXhwZWN0ZWQgYSBiaW5hcnkgQVNUIGFzIGlucHV0XCJcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgXykpIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIF8pKSAtPlxuICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmbiB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG5cbmxldCBsb2FkX3NvdXJjZV9maWxlIGZuID1cbiAgbGV0IHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZuIGluXG4gIGlmIHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgXCJwcHhsaWJfZHJpdmVyOiBjYW5ub3QgdXNlIC1yZWNvbmNpbGUgd2l0aCBiaW5hcnkgQVNUIGZpbGVzXCI7XG4gIHNcblxudHlwZSBvdXRwdXRfbW9kZSA9XG4gIHwgUHJldHR5X3ByaW50XG4gIHwgRHVtcF9hc3RcbiAgfCBEcGFyc2V0cmVlXG4gIHwgUmVjb25jaWxlIG9mIFJlY29uY2lsZS5tb2RlXG4gIHwgTnVsbFxuXG4oKiQqKVxubGV0IGV4dHJhY3RfY29va2llc19zdHIgc3QgPVxuICBsZXQgc3QgPVxuICAgIG1hdGNoIHN0IHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzdCAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU3RydWN0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3N0ciB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzdFxuICAgIHwgXyAtPiBzdFxuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHN0XG5cbmxldCBhZGRfY29va2llc19zdHIgc3QgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFN0cnVjdHVyZVxuICBpblxuICBwcmVmaXggQCBzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5sZXQgZXh0cmFjdF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBzZyA9XG4gICAgbWF0Y2ggc2cgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzaWdfZGVzYyA9XG4gICAgICAgICAgIFBzaWdfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHNnIC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTaWduYXR1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc2lnIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHNnXG4gICAgfCBfIC0+IHNnXG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc2dcblxubGV0IGFkZF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU2lnbmF0dXJlXG4gIGluXG4gIHByZWZpeCBAIHNnXG5cbigqJCopXG5cbmxldCBleHRyYWN0X2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoZXh0cmFjdF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChleHRyYWN0X2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBhZGRfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChhZGRfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoYWRkX2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBjb3JyZWN0aW9ucyA9IHJlZiBbXVxubGV0IGFkZF90b19saXN0IHIgeCA9IHIgOj0geCA6OiAhclxuXG5sZXQgcmVnaXN0ZXJfY29ycmVjdGlvbiB+bG9jIH5yZXBsID1cbiAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2VfdGV4dCAoKSB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZFxuICAgICAgIH5yZXBsKVxuXG5sZXQgcHJvY2Vzc19maWxlX2hvb2tzID0gcmVmIFtdXG5sZXQgcmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2sgZiA9IGFkZF90b19saXN0IHByb2Nlc3NfZmlsZV9ob29rcyBmXG5cbm1vZHVsZSBGaWxlX3Byb3BlcnR5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgICBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnQ7XG4gIH1cblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGFsbCA9IHJlZiBbXVxuICBsZXQgcmVnaXN0ZXIgdCA9IGFkZF90b19saXN0IGFsbCAoVCB0KVxuICBsZXQgcmVzZXRfYWxsICgpID0gTGlzdC5pdGVyICFhbGwgfmY6KGZ1biAoVCB0KSAtPiB0LmRhdGEgPC0gTm9uZSlcblxuICBsZXQgZHVtcF9hbmRfcmVzZXRfYWxsICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QucmV2ICFhbGwpIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbWF0Y2ggdC5kYXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICAgIHQuZGF0YSA8LSBOb25lO1xuICAgICAgICAgICAgU29tZSAodC5uYW1lLCB0LnNleHBfb2ZfdCB2KSlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2ZpbGVfcHJvcGVydHlcbiAgICAoTmFtZSA6IHNpZ1xuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmQpXG4gICAgKFQgOiBTZXhwYWJsZS5TKSA9XG5zdHJ1Y3RcbiAgbGV0IHQgOiBfIEZpbGVfcHJvcGVydHkudCA9XG4gICAgeyBuYW1lID0gTmFtZS5uYW1lOyBkYXRhID0gTm9uZTsgc2V4cF9vZl90ID0gVC5zZXhwX29mX3QgfVxuXG4gIGxldCAoKSA9IEZpbGVfcHJvcGVydHkucmVnaXN0ZXIgdFxuICBsZXQgc2V0IHggPSB0LmRhdGEgPC0gU29tZSB4XG5lbmRcblxubGV0IHByb2Nlc3NfYXN0IChhc3QgOiBJbnRmX29yX2ltcGwudCkgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9va1xuICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+ZW1iZWRfZXJyb3JzID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zaWduYXR1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW50ZiBhc3RcbiAgfCBJbXBsIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW1wbCBhc3RcblxubGV0IHByb2Nlc3NfZmlsZSAoa2luZCA6IEtpbmQudCkgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZVxuICAgIH5lbWJlZF9lcnJvcnMgfm91dHB1dCA9XG4gIEZpbGVfcHJvcGVydHkucmVzZXRfYWxsICgpO1xuICBMaXN0Lml0ZXIgKExpc3QucmV2ICFwcm9jZXNzX2ZpbGVfaG9va3MpIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgY29ycmVjdGlvbnMgOj0gW107XG4gIGxldCByZXBsYWNlbWVudHMgPSByZWYgW10gaW5cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4X2RyaXZlclwiIGluXG4gIGxldCBob29rIDogQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2sudCA9XG4gICAgbWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICAgIHwgUmVjb25jaWxlIChVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBmID1cbiAgICAgICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgICAgIGFkZF90b19saXN0IHJlcGxhY2VtZW50c1xuICAgICAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRXh0ZW5zaW9uIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6Z2VuZXJhdGVkKSk7XG4gICAgICAgIH1cbiAgICB8IF8gLT4gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA6IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci50ID1cbiAgICB7XG4gICAgICBmID1cbiAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihGbG9hdGluZ19hdHRyaWJ1dGUgY29udGV4dClcbiAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOihNYW55IGdlbmVyYXRlZCkpKTtcbiAgICB9XG4gIGluXG5cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9XG4gICAgbGV0IHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkID1cbiAgICAgIHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmY6KGxvYWRfaW5wdXQgfmtpbmQgfmlucHV0X25hbWUgfnJlbG9jYXRlKVxuICAgIGluXG4gICAgbWF0Y2ggcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgd2l0aFxuICAgIHwgT2sgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpIC0+IChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBleHRyYWN0X2Nvb2tpZXMgYXN0XG4gICAgICAgICAgICB8PiBwcm9jZXNzX2FzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kKSlcbiAgICB8IEVycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikgd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgKGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+a2luZClcbiAgICB8IEVycm9yIChlcnJvciwgXykgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuXG4gICAgICAgIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcbiAgaW5cbiAgT3B0aW9uLml0ZXIgIW91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSB+ZjooZnVuIGZuIC0+XG4gICAgICBsZXQgbWV0YWRhdGEgPSBGaWxlX3Byb3BlcnR5LmR1bXBfYW5kX3Jlc2V0X2FsbCAoKSBpblxuICAgICAgT3V0X2NoYW5uZWwud3JpdGVfYWxsIGZuXG4gICAgICAgIH5kYXRhOlxuICAgICAgICAgIChMaXN0Lm1hcCBtZXRhZGF0YSB+ZjooZnVuIChzLCBzZXhwKSAtPlxuICAgICAgICAgICAgICAgU2V4cC50b19zdHJpbmdfaHVtIChTZXhwLkxpc3QgWyBBdG9tIHM7IHNleHAgXSkgXiBcIlxcblwiKVxuICAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiKSk7XG5cbiAgbGV0IGlucHV0X2NvbnRlbnRzID0gbGF6eSAobG9hZF9zb3VyY2VfZmlsZSBmbikgaW5cbiAgbGV0IGNvcnJlY3RlZCA9IGZuIF4gIWNvcnJlY3RlZF9zdWZmaXggaW5cbiAgbGV0IG1pc21hdGNoZXNfZm91bmQgPVxuICAgIG1hdGNoICFjb3JyZWN0aW9ucyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgICBpZiBTdGRsaWIuU3lzLmZpbGVfZXhpc3RzIGNvcnJlY3RlZCB0aGVuIFN0ZGxpYi5TeXMucmVtb3ZlIGNvcnJlY3RlZDtcbiAgICAgICAgZmFsc2VcbiAgICB8IGNvcnJlY3Rpb25zIC0+XG4gICAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgY29ycmVjdGlvbnNcbiAgICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgICAgfm91dHB1dDooU29tZSBjb3JyZWN0ZWQpIH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZVxuICAgICAgICAgIH50YXJnZXQ6Q29ycmVjdGVkID9zdHlsZXI6IXN0eWxlciB+a2luZDtcbiAgICAgICAgdHJ1ZVxuICBpblxuXG4gIChtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gIHwgTnVsbCAtPiAoKVxuICB8IFByZXR0eV9wcmludCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gUHByaW50YXN0LnNpZ25hdHVyZSBwcGYgYXN0XG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBQcHJpbnRhc3Quc3RydWN0dXJlIHBwZiBhc3QpO1xuICAgICAgICAgIGxldCBudWxsX2FzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aCBJbnRmIFtdIHwgSW1wbCBbXSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IG51bGxfYXN0IHRoZW4gU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBEdW1wX2FzdCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgQXN0X2lvLndyaXRlIG9jXG4gICAgICAgICAgICB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgICAgICAgICB+YWRkX3BweF9jb250ZXh0OnRydWUpXG4gIHwgRHBhcnNldHJlZSAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIGxldCBhc3QgPSBhZGRfY29va2llcyBhc3QgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlIGFzdClcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlIGFzdCkpO1xuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgUmVjb25jaWxlIG1vZGUgLT5cbiAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgIXJlcGxhY2VtZW50c1xuICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgIH5vdXRwdXQgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lIH50YXJnZXQ6KE91dHB1dCBtb2RlKVxuICAgICAgICA/c3R5bGVyOiFzdHlsZXIgfmtpbmQpO1xuXG4gIGlmXG4gICAgbWlzbWF0Y2hlc19mb3VuZCAmJiBtYXRjaCAhZGlmZl9jb21tYW5kIHdpdGggU29tZSBcIi1cIiAtPiBmYWxzZSB8IF8gLT4gdHJ1ZVxuICB0aGVuIChcbiAgICBQcHhsaWJfcHJpbnRfZGlmZi5wcmludCAoKSB+ZmlsZTE6Zm4gfmZpbGUyOmNvcnJlY3RlZCB+dXNlX2NvbG9yOiF1c2VfY29sb3JcbiAgICAgID9kaWZmX2NvbW1hbmQ6IWRpZmZfY29tbWFuZDtcbiAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgb3V0cHV0X21vZGUgPSByZWYgUHJldHR5X3ByaW50XG5sZXQgb3V0cHV0ID0gcmVmIE5vbmVcbmxldCBraW5kID0gcmVmIE5vbmVcbmxldCBpbnB1dCA9IHJlZiBOb25lXG5sZXQgZW1iZWRfZXJyb3JzID0gcmVmIGZhbHNlXG5cbmxldCBzZXRfaW5wdXQgZm4gPVxuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT4gaW5wdXQgOj0gU29tZSBmblxuICB8IFNvbWUgXyAtPiByYWlzZSAoQXJnLkJhZCBcInRvbyBtYW55IGlucHV0IGZpbGVzXCIpXG5cbmxldCBzZXRfa2luZCBrID1cbiAgbWF0Y2ggIWtpbmQgd2l0aFxuICB8IFNvbWUgaycgd2hlbiBub3QgKEtpbmQuZXF1YWwgayBrJykgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwibXVzdCBzcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIC1pbXBsIG9yIC1pbnRmXCIpXG4gIHwgXyAtPiBraW5kIDo9IFNvbWUga1xuXG5sZXQgc2V0X291dHB1dF9tb2RlIG1vZGUgPVxuICBtYXRjaCAoIW91dHB1dF9tb2RlLCBtb2RlKSB3aXRoXG4gIHwgUHJldHR5X3ByaW50LCBfIC0+IG91dHB1dF9tb2RlIDo9IG1vZGVcbiAgfCBfLCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRHVtcF9hc3QsIER1bXBfYXN0IHwgRHBhcnNldHJlZSwgRHBhcnNldHJlZSAtPiAoKVxuICB8IFJlY29uY2lsZSBhLCBSZWNvbmNpbGUgYiB3aGVuIFBvbHkuZXF1YWwgYSBiIC0+ICgpXG4gIHwgeCwgeSAtPlxuICAgICAgbGV0IGFyZ19vZl9vdXRwdXRfbW9kZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IER1bXBfYXN0IC0+IFwiLWR1bXAtYXN0XCJcbiAgICAgICAgfCBEcGFyc2V0cmVlIC0+IFwiLWRwYXJzZXRyZWVcIlxuICAgICAgICB8IFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT4gXCItcmVjb25jaWxlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+IFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCJcbiAgICAgICAgfCBOdWxsIC0+IFwiLW51bGxcIlxuICAgICAgaW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzIGFuZCAlcyBhcmUgaW5jb21wYXRpYmxlXCIgKGFyZ19vZl9vdXRwdXRfbW9kZSB4KVxuICAgICAgICAgICAgICAoYXJnX29mX291dHB1dF9tb2RlIHkpKSlcblxubGV0IHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKSA9XG4gIExpc3QuaXRlciAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QubmFtZSlcblxubGV0IHBhcnNlX2FwcGx5X2xpc3QgcyA9XG4gIGxldCBuYW1lcyA9XG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIiB0aGVuIFtdIGVsc2UgU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicsJ1xuICBpblxuICBMaXN0Lml0ZXIgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICBpZlxuICAgICAgICBub3RcbiAgICAgICAgICAoTGlzdC5leGlzdHMgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoU3RkbGliLkFyZy5CYWRcbiAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJjb2RlIHRyYW5zZm9ybWF0aW9uICclcycgZG9lcyBub3QgZXhpc3RcIiBuYW1lKSkpO1xuICBuYW1lc1xuXG50eXBlIG1hc2sgPSB7XG4gIG11dGFibGUgYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG4gIG11dGFibGUgZG9udF9hcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbn1cblxubGV0IG1hc2sgPSB7IGFwcGx5ID0gTm9uZTsgZG9udF9hcHBseSA9IE5vbmUgfVxuXG5sZXQgaGFuZGxlX2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gICgqIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncyBtb3JlIGludHVpdGl2ZSAqKVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IG11c3QgYmUgY2FsbGVkIGJlZm9yZSAtZG9udC1hcHBseVwiKTtcbiAgbWFzay5hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBoYW5kbGVfZG9udF9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gIG1hc2suZG9udF9hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBpbnRlcnByZXRfbWFzayAoKSA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgfHwgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICBsZXQgc2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUgY3QgPVxuICAgICAgbGV0IGlzX2NhbmRpZGF0ZSA9XG4gICAgICAgIG1hdGNoIG1hc2suYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT4gTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdClcbiAgICAgIGluXG4gICAgICBsZXQgaXNfc2VsZWN0ZWQgPVxuICAgICAgICBtYXRjaCBtYXNrLmRvbnRfYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaXNfY2FuZGlkYXRlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICAgICAgaXNfY2FuZGlkYXRlICYmIG5vdCAoTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdCkpXG4gICAgICBpblxuICAgICAgaWYgaXNfc2VsZWN0ZWQgdGhlbiBTb21lIGN0Lm5hbWUgZWxzZSBOb25lXG4gICAgaW5cbiAgICBhcHBseV9saXN0IDo9XG4gICAgICBTb21lIChMaXN0LmZpbHRlcl9tYXAgIVRyYW5zZm9ybS5hbGwgfmY6c2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUpXG5cbmxldCBzZXRfY29va2llIHMgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonPScgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwiaW52YWxpZCBjb29raWUsIG11c3QgYmUgb2YgdGhlIGZvcm0gXFxcIjxuYW1lPj08ZXhwcj5cXFwiXCIpXG4gIHwgU29tZSAobmFtZSwgdmFsdWUpIC0+XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHZhbHVlIGluXG4gICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIjxjb21tYW5kLWxpbmU+XCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfTtcbiAgICAgIGxldCBleHByID0gUGFyc2UuZXhwcmVzc2lvbiBsZXhidWYgaW5cbiAgICAgIENvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgOj0gKG5hbWUsIGV4cHIpIDo6ICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpXG5cbmxldCBzaGFyZWRfYXJncyA9XG4gIFtcbiAgICAoIFwiLWxvYy1maWxlbmFtZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gbG9jX2ZuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIjxzdHJpbmc+IEZpbGUgbmFtZSB0byB1c2UgaW4gbG9jYXRpb25zXCIgKTtcbiAgICAoIFwiLXJlc2VydmUtbmFtZXNwYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlcy5yZXNlcnZlLFxuICAgICAgXCI8c3RyaW5nPiBNYXJrIHRoZSBnaXZlbiBuYW1lc3BhY2UgYXMgcmVzZXJ2ZWRcIiApO1xuICAgIChcIi1uby1jaGVja1wiLCBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3MsIFwiIERpc2FibGUgY2hlY2tzICh1bnNhZmUpXCIpO1xuICAgIChcIi1jaGVja1wiLCBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzLCBcIiBFbmFibGUgY2hlY2tzXCIpO1xuICAgICggXCItbm8tY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBEaXNhYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBFbmFibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLW5vLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRGlzYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBFbmFibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEFwcGx5IHRoZXNlIHRyYW5zZm9ybWF0aW9ucyBpbiBvcmRlciAoY29tbWEtc2VwYXJhdGVkIGxpc3QpXCIgKTtcbiAgICAoIFwiLWRvbnQtYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2RvbnRfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gRXhjbHVkZSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnNcIiApO1xuICAgICggXCItbm8tbWVyZ2VcIixcbiAgICAgIEFyZy5TZXQgbm9fbWVyZ2UsXG4gICAgICBcIiBEbyBub3QgbWVyZ2UgY29udGV4dCBmcmVlIHRyYW5zZm9ybWF0aW9ucyAoYmV0dGVyIGZvciBkZWJ1Z2dpbmcgXFxcbiAgICAgICByZXdyaXRlcnMpLiBBcyBhIHJlc3VsdCwgdGhlIGNvbnRleHQtZnJlZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIG5vdCBhbGwgXFxcbiAgICAgICBhcHBsaWVkIGJlZm9yZSBhbGwgaW1wbCBhbmQgaW50Zi5cIiApO1xuICAgIChcIi1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIk5BTUU9RVhQUiBTZXQgdGhlIGNvb2tpZSBOQU1FIHRvIEVYUFJcIik7XG4gICAgKFwiLS1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIiBTYW1lIGFzIC1jb29raWVcIik7XG4gIF1cblxubGV0ICgpID1cbiAgTGlzdC5pdGVyIHNoYXJlZF9hcmdzIH5mOihmdW4gKGtleSwgc3BlYywgZG9jKSAtPiBhZGRfYXJnIGtleSBzcGVjIH5kb2MpXG5cbmxldCBhc19wcCAoKSA9XG4gIHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdDtcbiAgZW1iZWRfZXJyb3JzIDo9IHRydWVcblxubGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gIFtcbiAgICAoIFwiLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgUnVuIGFzIGEgLXBweCByZXdyaXRlciAobXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQpXCIgKTtcbiAgICAoIFwiLS1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBTYW1lIGFzIC1hcy1wcHhcIiApO1xuICAgIChcIi1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2hvcnRoYW5kIGZvcjogLWR1bXAtYXN0IC1lbWJlZC1lcnJvcnNcIik7XG4gICAgKFwiLS1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2FtZSBhcyAtYXMtcHBcIik7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXQgOj0gU29tZSBzKSxcbiAgICAgIFwiPGZpbGVuYW1lPiBPdXRwdXQgZmlsZSAodXNlICctJyBmb3Igc3Rkb3V0KVwiICk7XG4gICAgKFwiLVwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9pbnB1dCBcIi1cIiksIFwiIFJlYWQgaW5wdXQgZnJvbSBzdGRpblwiKTtcbiAgICAoIFwiLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBEdW1wIHRoZSBtYXJzaGFsZWQgYXN0IHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkIG9mIHByZXR0eS1wcmludGluZyBpdFwiXG4gICAgKTtcbiAgICAoIFwiLS1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgU2FtZSBhcyAtZHVtcC1hc3RcIiApO1xuICAgICggXCItZHBhcnNldHJlZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHBhcnNldHJlZSksXG4gICAgICBcIiBQcmludCB0aGUgcGFyc2V0cmVlIChzYW1lIGFzIG9jYW1sYyAtZHBhcnNldHJlZSlcIiApO1xuICAgICggXCItZW1iZWQtZXJyb3JzXCIsXG4gICAgICBBcmcuU2V0IGVtYmVkX2Vycm9ycyxcbiAgICAgIFwiIEVtYmVkIGVycm9ycyBpbiB0aGUgb3V0cHV0IEFTVCAoZGVmYXVsdDogdHJ1ZSB3aGVuIC1hcy1wcCwgZmFsc2UgXFxcbiAgICAgICBvdGhlcndpc2UpXCIgKTtcbiAgICAoIFwiLW51bGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIE51bGwpLFxuICAgICAgXCIgUHJvZHVjZSBubyBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXCIgKTtcbiAgICAoIFwiLWltcGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWwgZmlsZVwiICk7XG4gICAgKFwiLS1pbXBsXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksIFwiPGZpbGU+IFNhbWUgYXMgLWltcGxcIik7XG4gICAgKCBcIi1pbnRmXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1saSBmaWxlXCIgKTtcbiAgICAoXCItLWludGZcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW50ZlwiKTtcbiAgICAoIFwiLWRlYnVnLWF0dHJpYnV0ZS1kcm9wXCIsXG4gICAgICBBcmcuU2V0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wLFxuICAgICAgXCIgRGVidWcgYXR0cmlidXRlIGRyb3BwaW5nXCIgKTtcbiAgICAoIFwiLXByaW50LXRyYW5zZm9ybWF0aW9uc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyxcbiAgICAgIFwiIFByaW50IGxpbmtlZC1pbiBjb2RlIHRyYW5zZm9ybWF0aW9ucywgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGFwcGxpZWRcIiApO1xuICAgICggXCItcHJpbnQtcGFzc2VzXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfcGFzc2VzLFxuICAgICAgXCIgUHJpbnQgdGhlIGFjdHVhbCBwYXNzZXMgb3ZlciB0aGUgd2hvbGUgQVNUIGluIHRoZSBvcmRlciB0aGV5IGFyZSBcXFxuICAgICAgIGFwcGxpZWRcIiApO1xuICAgICggXCItaXRlLWNoZWNrXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiV2FybmluZzogdGhlIC1pdGUtY2hlY2sgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBoYXMgbm8gZWZmZWN0LlxcbiUhXCI7XG4gICAgICAgICAgRXh0cmFfd2FybmluZ3MuY2FyZV9hYm91dF9pdGVfYnJhbmNoIDo9IHRydWUpLFxuICAgICAgXCIgKG5vIGVmZmVjdCAtLSBrZXB0IGZvciBjb21wYXRpYmlsaXR5KVwiICk7XG4gICAgKCBcIi1wcFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gcHJlcHJvY2Vzc29yIDo9IFNvbWUgcyksXG4gICAgICBcIjxjb21tYW5kPiAgUGlwZSBzb3VyY2VzIHRocm91Z2ggcHJlcHJvY2Vzc29yIDxjb21tYW5kPiAoaW5jb21wYXRpYmxlIFxcXG4gICAgICAgd2l0aCAtYXMtcHB4KVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzKSksXG4gICAgICBcIiAoV0lQKSBQcmV0dHkgcHJpbnQgdGhlIG91dHB1dCB1c2luZyBhIG1peCBvZiB0aGUgaW5wdXQgc291cmNlIGFuZCB0aGUgXFxcbiAgICAgICBnZW5lcmF0ZWQgY29kZVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpKSxcbiAgICAgIFwiIChXSVApIHNhbWUgYXMgLXJlY29uY2lsZSBidXQgdXNlcyBjb21tZW50cyB0byBlbmNsb3NlIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgRG9uJ3QgdXNlIGNvbG9ycyB3aGVuIHByaW50aW5nIGVycm9yc1wiKTtcbiAgICAoIFwiLWRpZmYtY21kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgIFwiIERpZmYgY29tbWFuZCB3aGVuIHVzaW5nIGNvZGUgZXhwZWN0YXRpb25zICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKTtcbiAgICAoIFwiLXByZXR0eVwiLFxuICAgICAgQXJnLlNldCBwcmV0dHksXG4gICAgICBcIiBJbnN0cnVjdCBjb2RlIGdlbmVyYXRvcnMgdG8gaW1wcm92ZSB0aGUgcHJldHRpbmVzcyBvZiB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLXN0eWxlclwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzdHlsZXIgOj0gU29tZSBzKSwgXCIgQ29kZSBzdHlsZXJcIik7XG4gICAgKCBcIi1vdXRwdXQtbWV0YWRhdGFcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCJGSUxFIFdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgbWV0YWRhdGFcIiApO1xuICAgICggXCItY29ycmVjdGVkLXN1ZmZpeFwiLFxuICAgICAgQXJnLlNldF9zdHJpbmcgY29ycmVjdGVkX3N1ZmZpeCxcbiAgICAgIFwiU1VGRklYIFN1ZmZpeCB0byBhcHBlbmQgdG8gY29ycmVjdGVkIGZpbGVzXCIgKTtcbiAgXVxuXG5sZXQgZ2V0X2FyZ3MgPyhzdGFuZGFsb25lX2FyZ3MgPSBzdGFuZGFsb25lX2FyZ3MpICgpID1cbiAgc3RhbmRhbG9uZV9hcmdzIEAgTGlzdC5yZXYgIWFyZ3NcblxubGV0IHN0YW5kYWxvbmVfbWFpbiAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIFs8ZmlsZXM+XVwiIGV4ZV9uYW1lIGluXG4gIGxldCBhcmdzID0gZ2V0X2FyZ3MgKCkgaW5cbiAgQXJnLnBhcnNlIChBcmcuYWxpZ24gYXJncykgc2V0X2lucHV0IHVzYWdlO1xuICBpbnRlcnByZXRfbWFzayAoKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIHRoZW4gKFxuICAgIHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfcGFzc2VzIHRoZW4gKFxuICAgIHByaW50X3Bhc3NlcyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzOiBubyBpbnB1dCBmaWxlIGdpdmVuXFxuJSFcIiBleGVfbmFtZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBTb21lIGZuIC0+XG4gICAgICBsZXQga2luZCA9XG4gICAgICAgIG1hdGNoICFraW5kIHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggS2luZC5vZl9maWxlbmFtZSBmbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgXCIlczogZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJyVzJywgdXNlIC1pbXBsIG9yIC1pbnRmLlxcblwiXG4gICAgICAgICAgICAgICAgICBleGVfbmFtZSBmbjtcbiAgICAgICAgICAgICAgICBTdGRsaWIuZXhpdCAyKVxuICAgICAgaW5cbiAgICAgIGxldCBpbnB1dF9uYW1lLCByZWxvY2F0ZSA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aCBOb25lIC0+IChmbiwgZmFsc2UpIHwgU29tZSBmbiAtPiAoZm4sIHRydWUpXG4gICAgICBpblxuICAgICAgcHJvY2Vzc19maWxlIGtpbmQgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZTohb3V0cHV0X21vZGVcbiAgICAgICAgfm91dHB1dDohb3V0cHV0IH5lbWJlZF9lcnJvcnM6IWVtYmVkX2Vycm9yc1xuXG5sZXQgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuID1cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBpbnB1dF9mbiBpblxuICBsZXQgYXN0ID1cbiAgICB0cnlcbiAgICAgIGxldCBhc3QgPSBleHRyYWN0X2Nvb2tpZXMgYXN0IGluXG4gICAgICBsZXQgdG9vbF9uYW1lID0gQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkgaW5cbiAgICAgIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gICAgICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gICAgICBwcm9jZXNzX2FzdCBhc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgfmVtYmVkX2Vycm9yczp0cnVlXG4gICAgd2l0aCBleG4gLT4gZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQ6KEludGZfb3JfaW1wbC5raW5kIGFzdClcbiAgaW5cbiAgd2l0aF9vdXRwdXQgKFNvbWUgb3V0cHV0X2ZuKSB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgQXN0X2lvLndyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuXG5sZXQgcGFyc2VfaW5wdXQgcGFzc2VkX2luX2FyZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2cgPVxuICB0cnlcbiAgICBBcmcucGFyc2VfYXJndiBwYXNzZWRfaW5fYXJncyAoQXJnLmFsaWduIHZhbGlkX2FyZ3MpXG4gICAgICAoZnVuIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJhbm9ueW1vdXMgYXJndW1lbnRzIG5vdCBhY2NlcHRlZFwiKSlcbiAgICAgIGluY29ycmVjdF9pbnB1dF9tc2dcbiAgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IEFyZy5IZWxwIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDBcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBpbnB1dCA9XG4gIGxldCB2YWxpZF9hcmdzID0gZ2V0X2FyZ3MgfnN0YW5kYWxvbmVfYXJncyAoKSBpblxuICBtYXRjaCBMaXN0LnJldiBAQCBBcnJheS50b19saXN0IEBAIGlucHV0IHdpdGhcbiAgfCBvdXRwdXRfZm4gOjogaW5wdXRfZm4gOjogZmxhZ3NfYW5kX3Byb2dfbmFtZVxuICAgIHdoZW4gTGlzdC5sZW5ndGggZmxhZ3NfYW5kX3Byb2dfbmFtZSA+IDAgLT5cbiAgICAgIGxldCBwcm9nX25hbWVfYW5kX2ZsYWdzID0gTGlzdC5yZXYgZmxhZ3NfYW5kX3Byb2dfbmFtZSB8PiBBcnJheS5vZl9saXN0IGluXG4gICAgICBwYXJzZV9pbnB1dCBwcm9nX25hbWVfYW5kX2ZsYWdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgaW50ZXJwcmV0X21hc2sgKCk7XG4gICAgICByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm47XG4gICAgICBTdGRsaWIuZXhpdCAwXG4gIHwgWyBoZWxwOyBfIF0gd2hlbiBTdHJpbmcuZXF1YWwgaGVscCBcIi1oZWxwXCIgfHwgU3RyaW5nLmVxdWFsIGhlbHAgXCItLWhlbHBcIiAtPlxuICAgICAgcGFyc2VfaW5wdXQgaW5wdXQgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgfCBfIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIlVzYWdlOiAlc1xcbiUhXCIgdXNhZ2U7XG4gICAgICBTdGRsaWIuZXhpdCAyXG5cbmxldCBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgbGV0IHVzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzIC1hcy1wcHggW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lXG4gIGluXG4gIGxldCBhcmd2ID0gQXJyYXkubWFrZSAobiAtIDEpIFwiXCIgaW5cbiAgYXJndi4oMCkgPC0gU3RkbGliLlN5cy5hcmd2LigwKTtcbiAgZm9yIGkgPSAxIHRvIG4gLSAyIGRvXG4gICAgYXJndi4oaSkgPC0gU3RkbGliLlN5cy5hcmd2LihpICsgMSlcbiAgZG9uZTtcbiAgbGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gICAgTGlzdC5tYXAgc3RhbmRhbG9uZV9hcmdzIH5mOihmdW4gKGFyZywgc3BlYywgX2RvYykgLT5cbiAgICAgICAgKGFyZywgc3BlYywgXCIgVW51c2VkIHdpdGggLWFzLXBweFwiKSlcbiAgaW5cbiAgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGFyZ3ZcblxubGV0IHN0YW5kYWxvbmUgKCkgPVxuICBBc3RsaWIuaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCk7XG4gIHRyeVxuICAgIGlmXG4gICAgICBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2ID49IDJcbiAgICAgICYmXG4gICAgICBtYXRjaCBTdGRsaWIuU3lzLmFyZ3YuKDEpIHdpdGhcbiAgICAgIHwgXCItYXMtcHB4XCIgfCBcIi0tYXMtcHB4XCIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKClcbiAgICBlbHNlIHN0YW5kYWxvbmVfbWFpbiAoKTtcbiAgICBTdGRsaWIuZXhpdCAwXG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZSBpblxuICBsZXQgaW5wdXQgPSBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgdHJ5IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzOltdIH51c2FnZSBpbnB1dFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBwcmV0dHkgKCkgPSAhcHJldHR5XG5cbmxldCBlbmFibGVfY2hlY2tzICgpID1cbiAgKCogV2UgZG8gbm90IGVuYWJsZSB0aGUgbG9jYXRpb25zIGNoZWNrIGhlcmUsIHdlIGN1cnJlbnRseSByZXF1aXJlIHRoYXQgb25lXG4gICAgIHRvIGJlIHNwZWNpZmljYWxseSBlbmFibGVkLiAqKVxuICBwZXJmb3JtX2NoZWNrcyA6PSB0cnVlO1xuICBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIDo9IHRydWVcblxubGV0IGVuYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IHRydWVcbmxldCBkaXNhYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gZmFsc2VcbmxldCBtYXBfc3RydWN0dXJlIHN0ID0gbWFwX3N0cnVjdHVyZSBzdFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG5sZXQgdW5kZXJzY29yZV9iaW5kaW5nIGV4cCA9XG4gIGxldCBsb2MgPSBleHAucGV4cF9sb2MgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpIH5leHByOmV4cFxuXG5sZXQgdmFyc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvbmdpZGVudC50IExvY2F0ZWQudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdHQgYWNjID1cbiAgICAgIG1hdGNoIHBhdHQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF92YXIgdiAtPiBMb2NhdGVkLm1hcCAoZnVuIHZhciAtPiBMb25naWRlbnQuTGlkZW50IHZhcikgdiA6OiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdHQgYWNjXG4gIGVuZFxuXG4oKiBGb3IgZXZlcnkgW2xldCB4ID0gLi4uXSBzdHJ1Y3R1cmUgaXRlbSwgYWRkIGEgW2xldCBfID0geF0gKilcbmxldCBhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZSBzdCA9XG4gICAgICBsZXQgcmVjIGxvb3Agc3QgYWNjID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgICB8ICh7IHBzdHJfZGVzYyA9IFBzdHJfdmFsdWUgKF8sIHZicyk7IHBzdHJfbG9jID0gbG9jIH0gYXMgaXRlbSkgOjogcmVzdFxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgdmFycyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IHZicyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB2YiAtPlxuICAgICAgICAgICAgICAgICAgdmFyc19vZiNwYXR0ZXJuIHZiLnB2Yl9wYXQgYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpZ24gPVxuICAgICAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIHZhcnMgfmY6KGZ1biB2IC0+XG4gICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlX2JpbmRpbmcgKHBleHBfaWRlbnQgfmxvYzp2LmxvYyB2KSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbG9vcCByZXN0IChpZ24gQCAoaXRlbSA6OiBhY2MpKVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiBsb29wIHJlc3QgKGl0ZW0gOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKHN1cGVyI3N0cnVjdHVyZSBzdCkgW11cbiAgZW5kXG5cbmxldCBiaW5kc19tb2R1bGVfbmFtZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtib29sXSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBtYiBhY2MgPVxuICAgICAgbWF0Y2ggbWIucG1iX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIG1iIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjID1cbiAgICAgIG1hdGNoIG1kLnBtZF9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24gbXMgXyA9XG4gICAgICBtYXRjaCBtcy5wbXNfbmFtZS50eHQgd2l0aCAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuXG4gICAgbWV0aG9kISBmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgfCBOYW1lZCAobmFtZSwgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdW5wYWNrIG5hbWUgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGggU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZSB8IE5vbmUgLT4gYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGV4cHIgYWNjID1cbiAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIF8sIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjY1xuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxuKCogW2RvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGVdIC0tIElmIHRydWUsIGdlbmVyYXRlZCBjb2RlXG4gICBjb250YWlucyBjb21waWxlciBhdHRyaWJ1dGUgdG8gZGlzYWJsZSB1bnVzZWQgd2FybmluZ3MsIGluc3RlYWQgb2ZcbiAgIGluc2VydGluZyBbbGV0IF8gPSAuLi4gXS4gKilcbmxldCBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3czMl9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIGxldCBjb252X3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiY29kZVwiOyBcImF0dHJpYnV0ZVwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJjb2RlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSBmYWxzZVxuICAgICAgICB8IFwiYXR0cmlidXRlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgSG93IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmcta2VlcC13MzJcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LXczMlwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCJcblxubGV0IGtlZXBfdzMyX2ltcGwgKCkgPSAha2VlcF93MzJfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93MzJfaW50ZiAoKSA9ICFrZWVwX3czMl9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93NjBfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93NjBfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93NjBfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13NjBcIiBrZWVwX3c2MF9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyA2MCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCJcblxubGV0IGtlZXBfdzYwX2ltcGwgKCkgPSAha2VlcF93NjBfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW50ZiAoKSA9ICFrZWVwX3c2MF9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyA9IHJlZiBPcHRpb25zLmRlZmF1bHRfYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItdW51c2VkLWNvZGUtd2FybmluZ3NcIlxuICAgIChCb29sICgoIDo9ICkgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MpKVxuICAgIH5kb2M6XCJfIEFsbG93IHBweCBkZXJpdmVycyB0byBlbmFibGUgdW51c2VkIGNvZGUgd2FybmluZ3NcIlxuXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKCkgPSAhYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubW9kdWxlIEFyZ3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgQXN0X3BhdHRlcm4gOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQXN0X3BhdHRlcm5cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50KVxuXG4gIHR5cGUgJ2EgcGFyYW0gPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBwYXR0ZXJuIDogKGV4cHJlc3Npb24sICdhKSBBc3RfcGF0dGVybi5QYWNrZWQudDtcbiAgICBkZWZhdWx0IDogJ2E7XG4gIH1cblxuICBsZXQgYXJnIG5hbWUgcGF0dGVybiA9XG4gICAge1xuICAgICAgbmFtZTtcbiAgICAgIGRlZmF1bHQgPSBOb25lO1xuICAgICAgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiAoZnVuIHggLT4gU29tZSB4KTtcbiAgICB9XG5cbiAgbGV0IGZsYWcgbmFtZSA9XG4gICAgbGV0IHBhdHRlcm4gPSBwZXhwX2lkZW50IChsaWRlbnQgKHN0cmluZyBuYW1lKSkgaW5cbiAgICB7IG5hbWU7IGRlZmF1bHQgPSBmYWxzZTsgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiB0cnVlIH1cblxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IE5pbCA6ICgnbSwgJ20pIHRcbiAgICB8IENvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIHQgKiAnYSBwYXJhbSAtPiAoJ20xLCAnbTIpIHRcblxuICBsZXQgZW1wdHkgPSBOaWxcbiAgbGV0ICggKz4gKSBhIGIgPSBDb25zIChhLCBiKVxuXG4gIGxldCByZWMgbmFtZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gc3RyaW5nIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh0LCBwKSAtPiBwLm5hbWUgOjogbmFtZXMgdFxuXG4gIG1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgKF8sIF8pIGluc3RhbmNlID1cbiAgICAgIHwgSV9uaWwgOiAoJ20sICdtKSBpbnN0YW5jZVxuICAgICAgfCBJX2NvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIGluc3RhbmNlICogJ2EgLT4gKCdtMSwgJ20yKSBpbnN0YW5jZVxuXG4gICAgbGV0IHJlYyBjcmVhdGUgOlxuICAgICAgICB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QgLT4gKGEsIGIpIGluc3RhbmNlID1cbiAgICAgZnVuIHNwZWMgYXJncyAtPlxuICAgICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgICB8IE5pbCAtPiBJX25pbFxuICAgICAgfCBDb25zICh0LCBwKSAtPlxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jX29wdCBwLm5hbWUgYXJncyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcC5kZWZhdWx0XG4gICAgICAgICAgICB8IFNvbWUgZXhwciAtPiBBc3RfcGF0dGVybi5QYWNrZWQucGFyc2UgcC5wYXR0ZXJuIGV4cHIucGV4cF9sb2MgZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgSV9jb25zIChjcmVhdGUgdCBhcmdzLCB2YWx1ZSlcblxuICAgIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYi4gKGEsIGIpIGluc3RhbmNlIC0+IGEgLT4gYiA9XG4gICAgIGZ1biB0IGYgLT4gbWF0Y2ggdCB3aXRoIElfbmlsIC0+IGYgfCBJX2NvbnMgKHQsIHgpIC0+IGFwcGx5IHQgZiB4XG4gIGVuZFxuXG4gIGxldCBhcHBseSB0IGFyZ3MgZiA9IEluc3RhbmNlLmFwcGx5IChJbnN0YW5jZS5jcmVhdGUgdCBhcmdzKSBmXG5lbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBHZW5lcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGlnbm9yZSAoXyA6IHQpID0gKClcblxudHlwZSBwYXJzZWRfYXJncyA9XG4gIHwgQXJncyBvZiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdFxuICB8IFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxudHlwZSAnaXRlbSBkZXJpdmVkX2NvZGUgPSB7IGl0ZW1zIDogJ2l0ZW0gbGlzdDsgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sIH1cblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlIGRlcml2ZXIgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFQgOiB7XG4gICAgICAgIHNwZWMgOiAoJ2MsICdhKSBBcmdzLnQ7XG4gICAgICAgIGdlbiA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjO1xuICAgICAgICBhcmdfbmFtZXMgOiBTdHJpbmcuU2V0LnQ7XG4gICAgICAgIGRlcHMgOiBkZXJpdmVyIGxpc3Q7XG4gICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbDtcbiAgICAgIH1cbiAgICAgICAgLT4gKCdhLCAnYikgdFxuXG4gIGxldCBkZXBzIChUIHQpID0gdC5kZXBzXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgP2F0dHJpYnV0ZXM6KF8gPSBbXSkgPyhkZXBzID0gW10pID8odW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSlcbiAgICAgICAgc3BlYyBnZW4gPVxuICAgICAgbGV0IGFyZ19uYW1lcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoQXJncy5uYW1lcyBzcGVjKSBpblxuICAgICAgVCB7IHNwZWM7IGdlbjsgYXJnX25hbWVzOyBkZXBzOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9XG5cbiAgICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG4gIGVuZFxuXG4gIGxldCBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjIGdlbiA9XG4gICAgVjIubWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlY1xuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIud2l0aF9sb2NfYW5kX3BhdGggZ2VuKVxuXG4gIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG5cbiAgbGV0IG1lcmdlX2FjY2VwdGVkX2FyZ3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBUIHQgOjogcmVzdCAtPiBsb29wIChTdHJpbmcuU2V0LnVuaW9uIGFjYyB0LmFyZ19uYW1lcykgcmVzdFxuICAgIGluXG4gICAgbG9vcCBTdHJpbmcuU2V0LmVtcHR5IGxcblxuICBsZXQgY2hlY2tfYXJndW1lbnRzIG5hbWUgZ2VuZXJhdG9ycyAoYXJncyA6IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0KSA9XG4gICAgbGV0IGVtcHR5X2xhYmVsX2Vycm9yID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBsYWJlbCB0aGVuXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yIGFyZ3VtZW50cyBtdXN0IGJlIGxhYmVsbGVkXCIpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciA9XG4gICAgICBPcHRpb24ubWFwXG4gICAgICAgIChMaXN0LmZpbmRfYV9kdXAgYXJncyB+Y29tcGFyZTooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbiAgICAgICAgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBhcmd1bWVudCBsYWJlbGxlZCAnJXMnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2VcIlxuICAgICAgICAgICAgbGFiZWwpXG4gICAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjY2VwdGVkX2FyZ3MgPSBtZXJnZV9hY2NlcHRlZF9hcmdzIGdlbmVyYXRvcnMgaW5cbiAgICBsZXQgdW5hY2NlcHRlZF9hcmd1bWVudCA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5TZXQubWVtIGxhYmVsIGFjY2VwdGVkX2FyZ3MpIHRoZW5cbiAgICAgICAgICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU3BlbGxjaGVjay5zcGVsbGNoZWNrIChTdHJpbmcuU2V0LmVsZW1lbnRzIGFjY2VwdGVkX2FyZ3MpIGxhYmVsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciAnJXMnIGRvZXNuJ3QgYWNjZXB0IGFyZ3VtZW50IFxcXG4gICAgICAgICAgICAgICAgICAnJXMnJXNcIlxuICAgICAgICAgICAgICAgICBuYW1lIGxhYmVsIHNwZWxsY2hlY2tfbXNnKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBlcnJvcnMgPVxuICAgICAgZW1wdHlfbGFiZWxfZXJyb3IgQCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgQCB1bmFjY2VwdGVkX2FyZ3VtZW50XG4gICAgaW5cbiAgICBpZiBMaXN0Lmxlbmd0aCBlcnJvcnMgPSAwIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvcnNcblxuICBsZXQgYXBwbHkgKFQgdCkgfm5hbWU6XyB+Y3R4dCB4IGFyZ3MgPSBBcmdzLmFwcGx5IHQuc3BlYyBhcmdzICh0LmdlbiB+Y3R4dCB4KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgKG5hbWUsIGdlbmVyYXRvcnMsIGFyZ3MpID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBjaGVja19hcmd1bWVudHMgbmFtZS50eHQgZ2VuZXJhdG9ycyBhcmdzID4+fCBmdW4gKCkgLT5cbiAgICBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIGl0ZW1zID0gYXBwbHkgKFQgdCkgfm5hbWU6bmFtZS50eHQgfmN0eHQgZW50cnkgYXJncztcbiAgICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA9IHQudW51c2VkX2NvZGVfd2FybmluZ3M7XG4gICAgICAgIH0pXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSBnZW5lcmF0b3JzIGV4dF90b19pdGVtID1cbiAgICBsZXQgbCA9IExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSkgaW5cbiAgICBsZXQgbDEsIGxlcnIgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvbiBPayBlIC0+IExlZnQgZSB8IEVycm9yIGUgLT4gUmlnaHQgZSkgbFxuICAgIGluXG4gICAgbGV0IGxlcnIgPVxuICAgICAgTGlzdC5jb25jYXQgbGVyclxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBlcnIgLT4gZXh0X3RvX2l0ZW0gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICBpblxuICAgIExpc3QuY29uY2F0IGwxIEAgWyB7IGl0ZW1zID0gbGVycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9IF1cbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICBtb2R1bGUgQWN0dWFsX2Rlcml2ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgc3RyX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2V4dCA6IChzaWduYXR1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGV4dGVuc2lvbiA6XG4gICAgICAgIChsb2M6TG9jYXRpb24udCAtPiBwYXRoOnN0cmluZyAtPiBjb3JlX3R5cGUgLT4gZXhwcmVzc2lvbikgb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEFsaWFzID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3RyX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSBraW5kID0gU3RyIHwgU2lnXG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAga2luZCA6IGtpbmQ7XG4gICAgICBnZXQgOiBBY3R1YWxfZGVyaXZlci50IC0+ICgnYSwgJ2IpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGdldF9zZXQgOiBBbGlhcy50IC0+IHN0cmluZyBsaXN0O1xuICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcIm1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG4gIGVuZFxuXG4gIHR5cGUgdCA9IEFjdHVhbF9kZXJpdmVyIG9mIEFjdHVhbF9kZXJpdmVyLnQgfCBBbGlhcyBvZiBBbGlhcy50XG4gIHR5cGUgUHB4X2Rlcml2ZXJzLmRlcml2ZXIgKz0gVCBvZiB0XG5cbiAgbGV0IGRlcml2ZXJzICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKFBweF9kZXJpdmVycy5kZXJpdmVycyAoKSkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIFQgdCAtPiBTb21lIChuYW1lLCB0KVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbiAgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBsZXQgcmVjIGxvb3AgbmFtZSBjb2xsZWN0ZWQgPVxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHMgY29sbGVjdGVkIH5mOihmdW4gKGQgOiBBY3R1YWxfZGVyaXZlci50KSAtPlxuICAgICAgICAgICAgU3RyaW5nLmVxdWFsIGQubmFtZSBuYW1lKVxuICAgICAgdGhlbiBjb2xsZWN0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIChUIChBY3R1YWxfZGVyaXZlciBkcnYpKSAtPiBkcnYgOjogY29sbGVjdGVkXG4gICAgICAgIHwgU29tZSAoVCAoQWxpYXMgYWxpYXMpKSAtPlxuICAgICAgICAgICAgbGV0IHNldCA9IGZpZWxkLmdldF9zZXQgYWxpYXMgaW5cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBzZXQgfmluaXQ6Y29sbGVjdGVkIH5mOmxvb3BcbiAgICAgICAgfCBfIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBuYW1lIFtdKVxuXG4gIGxldCByZXNvbHZlX2ludGVybmFsIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBMaXN0Lm1hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgbmFtZSkgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgbWF0Y2ggZmllbGQuZ2V0IGRydiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgICAgICB8IFNvbWUgZyAtPiAoZHJ2Lm5hbWUsIGcpKVxuXG4gIGxldCBzdXBwb3J0ZWRfZm9yIGZpZWxkID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZGVyaXZlcnMgKCkpIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIF8pIC0+XG4gICAgICAgIG1hdGNoIHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuU2V0LmFkZCBuYW1lIGFjY1xuICAgICAgICB8IGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIF8gLT4gYWNjKVxuICAgIHw+IFN0cmluZy5TZXQuZWxlbWVudHNcblxuICBsZXQgbm90X3N1cHBvcnRlZCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgPyhzcGVsbGNoZWNrID0gdHJ1ZSkgbmFtZSA9XG4gICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgIGlmIHNwZWxsY2hlY2sgdGhlblxuICAgICAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKHN1cHBvcnRlZF9mb3IgZmllbGQpIG5hbWUudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICBlbHNlIFwiXCJcbiAgICBpblxuICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6ICclcycgaXMgbm90IGEgc3VwcG9ydGVkICVzIGRlcml2aW5nIGdlbmVyYXRvciVzXCJcbiAgICAgIG5hbWUudHh0IGZpZWxkLm5hbWUgc3BlbGxjaGVja19tc2dcblxuICBsZXQgcmVzb2x2ZSBmaWVsZCBuYW1lID1cbiAgICB0cnkgT2sgKHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZS50eHQpXG4gICAgd2l0aCBOb3Rfc3VwcG9ydGVkIG5hbWUnIC0+XG4gICAgICBFcnJvciAobm90X3N1cHBvcnRlZCBmaWVsZCB+c3BlbGxjaGVjazooU3RyaW5nLmVxdWFsIG5hbWUudHh0IG5hbWUnKSBuYW1lKVxuXG4gIGxldCByZXNvbHZlX2FsbCBmaWVsZCBkZXJpdmVycyA9XG4gICAgbGV0IGRlcml2ZXJzX2FuZF9hcmdzLCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwXG4gICAgICAgIChmdW4gKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVpdGhlci5SaWdodCAobm90X3N1cHBvcnRlZCBmaWVsZCBuYW1lKVxuICAgICAgICAgIHwgU29tZSAoVCBfKSAtPiAoXG4gICAgICAgICAgICAgICgqIEl0J3Mgb25lIG9mIG91cnMsIHBhcnNlIHRoZSBhcmd1bWVudHMgbm93LiBXZSBjYW4ndCBkbyBpdCBiZWZvcmUgc2luY2VcbiAgICAgICAgICAgICAgICAgcHB4X2Rlcml2aW5nIHVzZXMgYSBkaWZmZXJlbnQgc3ludGF4IGZvciBhcmd1bWVudHMuICopXG4gICAgICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IEFyZ3MgbCAtPiBFaXRoZXIuTGVmdCAoU29tZSAobmFtZSwgbCkpXG4gICAgICAgICAgICAgIHwgVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPlxuICAgICAgICAgICAgICAgICAgRWl0aGVyLlJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2MgXCJQcHhsaWIuRGVyaXZpbmc6ICVzXCIgbXNnKSlcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAoKiBJdCdzIG5vdCBvbmUgb2Ygb3VycywgaWdub3JlIGl0LiAqKVxuICAgICAgICAgICAgICBFaXRoZXIuTGVmdCBOb25lKVxuICAgICAgICBkZXJpdmVyc1xuICAgICAgfD4gZnVuIChsMSwgbDIpIC0+IChMaXN0LmZpbHRlcl9vcHQgbDEsIGwyKVxuICAgIGluXG4gICAgKCogU2V0IG9mIGFjdHVhbCBkZXJpdmVyIG5hbWVzICopXG4gICAgbGV0IHNlZW4gPSBIYXNodGJsLmNyZWF0ZSAxNiBpblxuICAgIGxldCByZXN1bHQsIGRlcF9lcnJvcnMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmluaXQ6KFtdLCBbXSkgZGVyaXZlcnNfYW5kX2FyZ3NcbiAgICAgICAgfmY6KGZ1biAocmVzdWx0LCBlcnJvcnMpIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIHJlc29sdmUgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+IChyZXN1bHQsIGVycm9ycyBAIFsgZSBdKVxuICAgICAgICAgIHwgT2sgbmFtZWRfZ2VuZXJhdG9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCBuYW1lZF9nZW5lcmF0b3JzXG4gICAgICAgICAgICAgICAgICB+ZjooZnVuIChhY3R1YWxfZGVyaXZlcl9uYW1lLCBnZW4pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBkdXBfZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zLmZhaWxfb25fZHVwbGljYXRlX2Rlcml2ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBIYXNodGJsLm1lbSBzZWVuIGFjdHVhbF9kZXJpdmVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBhcHBlYXJzIHR3aWNlXCIgYWN0dWFsX2Rlcml2ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIChHZW5lcmF0b3IuZGVwcyBnZW4pIH5mOihmdW4gZGVwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgZGVwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwX25hbWUgPSBkcnYubmFtZSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChIYXNodGJsLm1lbSBzZWVuIGRlcF9uYW1lKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGlzIG5lZWRlZCBmb3IgJXMsIHlvdSBuZWVkIHRvIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBpdCBiZWZvcmUgaW4gdGhlIGxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcF9uYW1lIG5hbWUudHh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgc2VlbiB+a2V5OmFjdHVhbF9kZXJpdmVyX25hbWUgfmRhdGE6KCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cF9lcnJvciBAIGxfZXJyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHJlc3VsdCBAIFsgKG5hbWUsIExpc3QubWFwIG5hbWVkX2dlbmVyYXRvcnMgfmY6c25kLCBhcmdzKSBdLFxuICAgICAgICAgICAgICAgIGVycm9ycyBAIGxfZXJyICkpXG4gICAgaW5cbiAgICAocmVzdWx0LCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgQCBkZXBfZXJyb3JzKVxuXG4gIGxldCBhZGQgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvbiA/c3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb24gP3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/ZXh0ZW5zaW9uIG5hbWUgPVxuICAgIGxldCBhY3R1YWxfZGVyaXZlciA6IEFjdHVhbF9kZXJpdmVyLnQgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBleHRlbnNpb247XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWN0dWFsX2Rlcml2ZXIgYWN0dWFsX2Rlcml2ZXIpKTtcbiAgICAobWF0Y2ggZXh0ZW5zaW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgZXh0ZW5zaW9uID1cbiAgICAgICAgICBFeHRlbnNpb24uZGVjbGFyZSBuYW1lIEV4cHJlc3Npb24gQXN0X3BhdHRlcm4uKHB0eXAgX18pIGZcbiAgICAgICAgaW5cbiAgICAgICAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgKFwiUHB4bGliLkRlcml2aW5nLlwiIF4gbmFtZSlcbiAgICAgICAgICB+cnVsZXM6WyBDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gZXh0ZW5zaW9uIF0pO1xuICAgIG5hbWVcblxuICBsZXQgYWRkX2FsaWFzIG5hbWUgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvblxuICAgICAgP3N0cl9tb2R1bGVfdHlwZV9kZWNsID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb25cbiAgICAgID9zaWdfbW9kdWxlX3R5cGVfZGVjbCBzZXQgPVxuICAgIGxldCBhbGlhcyA6IEFsaWFzLnQgPVxuICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIE5vbmUgLT4gc2V0IHwgU29tZSBzZXQgLT4gc2V0IGluXG4gICAgICB7XG4gICAgICAgIHN0cl90eXBlX2RlY2wgPSBnZXQgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0ID0gZ2V0IHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbiA9IGdldCBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbCA9IGdldCBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQgPSBnZXQgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uID0gZ2V0IHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFsaWFzIGFsaWFzKSk7XG4gICAgbmFtZVxuZW5kXG5cbmxldCBhZGQgPSBEZXJpdmVyLmFkZFxubGV0IGFkZF9hbGlhcyA9IERlcml2ZXIuYWRkX2FsaWFzXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgW0BAZGVyaXZpbmcgXSBwYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGludmFsaWRfd2l0aCB+bG9jID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJpbnZhbGlkIFtAQGRlcml2aW5nIF0gYXR0cmlidXRlIHN5bnRheFwiXG5cbmxldCBnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQgPVxuICBtYXRjaCBMb25naWRlbnQuZmxhdHRlbl9leG4gaWQgd2l0aFxuICB8IGwgLT4geyBsb2M7IHR4dCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBsIH1cbiAgfCBleGNlcHRpb24gXyAtPiBpbnZhbGlkX3dpdGggfmxvY1xuXG5leGNlcHRpb24gVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgcGFyc2VfYXJndW1lbnRzIGwgPVxuICB0cnlcbiAgICBBcmdzXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IFsgKE5vbGFiZWwsIGUpIF0gLT4gKFxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIC0+XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChpZCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgcyAtPiBzXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXggKGlkLmxvYywgXCJzaW1wbGUgaWRlbnRpZmllciBleHBlY3RlZFwiKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAobmFtZSwgZXhwcikpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAoIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgICAgICBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBvciByZWNvcmQgZXhwZWN0ZWRcIiApKSlcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIExpc3QubWFwIGwgfmY6KGZ1biAobGFiZWwsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgICAgICAgfCBMYWJlbGxlZCBzIC0+IChzLCBleHByKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgICAgIChleHByLnBleHBfbG9jLCBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBleHBlY3RlZFwiKSkpKVxuICB3aXRoIFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT4gVW5rbm93bl9zeW50YXggKGxvYywgbXNnKVxuXG5sZXQgbWtfZGVyaXZpbmdfYXR0ciBjb250ZXh0IH5wcmVmaXggfnN1ZmZpeCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgKHByZWZpeCBeIFwiZGVyaXZpbmdcIiBeIHN1ZmZpeClcbiAgICBjb250ZXh0XG4gICAgQXN0X3BhdHRlcm4uKFxuICAgICAgbGV0IGdlbmVyYXRvcl9uYW1lICgpID1cbiAgICAgICAgbWFwJyAocGV4cF9pZGVudCBfXykgfmY6KGZ1biBsb2MgZiBpZCAtPlxuICAgICAgICAgICAgZiAoZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9yICgpID1cbiAgICAgICAgbWFwIChnZW5lcmF0b3JfbmFtZSAoKSkgfmY6KGZ1biBmIHggLT4gZiAoeCwgQXJncyBbXSkpXG4gICAgICAgIHx8fCBwYWNrMlxuICAgICAgICAgICAgICAocGV4cF9hcHBseSAoZ2VuZXJhdG9yX25hbWUgKCkpXG4gICAgICAgICAgICAgICAgIChtYXAxIChtYW55IF9fKSB+ZjpwYXJzZV9hcmd1bWVudHMpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3JzID1cbiAgICAgICAgcGV4cF90dXBsZSAobWFueSAoZ2VuZXJhdG9yICgpKSlcbiAgICAgICAgfHx8IG1hcCAoZ2VuZXJhdG9yICgpKSB+ZjooZnVuIGYgeCAtPiBmIFsgeCBdKVxuICAgICAgaW5cbiAgICAgIHBzdHIgKHBzdHJfZXZhbCBnZW5lcmF0b3JzIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBVbnVzZWQgd2FybmluZyBzdHVmZiArIGxvY2F0aW9ucyBjaGVjayBzaWxlbmNpbmcgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgc3RyaW5nID1cbiAgICBMaXN0LnNvcnQgd2FybmluZ3MgfmNtcDpJbnQuY29tcGFyZVxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gd2FybmluZyAtPiBcIi1cIiBeIEludC50b19zdHJpbmcgd2FybmluZylcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIlxuICBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLndhcm5pbmdcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2Mgc3RyaW5nKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpbmxpbmVfZG9jX2F0dHIgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLmRvY1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBcIkBpbmxpbmVcIikgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG4oKiB3cmFwIGEgc3RydWN0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtb2Rfc3RydWN0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc3RyX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc3RydWN0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc3RyXSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHN0ID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWYga2VlcF93MzJfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIChbXSwgc3QpXG4gICAgZWxzZSBpZiBub3QgIWRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgdGhlblxuICAgICAgKFtdLCBJZ25vcmVfdW51c2VkX3dhcm5pbmcuYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyNzdHJ1Y3R1cmUgc3QpXG4gICAgZWxzZSAoWyAzMiBdLCBzdClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgIHx8IG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzdHJ1Y3R1cmUgc3QgZmFsc2UpXG4gICAgdGhlbiAod2FybmluZ3MsIHN0KVxuICAgIGVsc2UgKDYwIDo6IHdhcm5pbmdzLCBzdClcbiAgaW5cbiAgbGV0IHdyYXAsIHN0ID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHN0KVxuICAgIGVsc2UgKHRydWUsIHBzdHJfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzdClcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgZWxzZSBzdFxuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3N0cl0gYWJvdmUgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogd3JhcCBhIHNpZ25hdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbXR5X3NpZ25hdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHNpZ19pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHNpZ25hdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3NpZ10gKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzZyA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWYga2VlcF93MzJfaW50ZiAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIFtdIGVsc2UgWyAzMiBdXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ludGYgKClcbiAgICAgIHx8IChub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc2lnbmF0dXJlIHNnIGZhbHNlKSlcbiAgICAgIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgdGhlbiB3YXJuaW5nc1xuICAgIGVsc2UgNjAgOjogd2FybmluZ3NcbiAgaW5cbiAgbGV0IHdyYXAsIHNnID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHNnKVxuICAgIGVsc2UgKHRydWUsIHBzaWdfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzZylcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc2lnIH5sb2MgfmhpZGUgc2cgZWxzZSBzZ1xuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3NpZ10gYWJvdmUgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBNYWluIGV4cGFuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgdHlwZXNfdXNlZF9ieV9kZXJpdmluZyAodGRzIDogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSA6IHN0cnVjdHVyZV9pdGVtIGxpc3QgPVxuICBpZiBrZWVwX3czMl9pbXBsICgpIHRoZW4gW11cbiAgZWxzZVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgIGxldCB0eXAgPSBDb21tb24uY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgICBwc3RyX3ZhbHVlIH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpXG4gICAgICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgICAgIChwZXhwX2Z1biB+bG9jIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgICAgICAgIChwcGF0X2NvbnN0cmFpbnQgfmxvYyAocHBhdF9hbnkgfmxvYykgdHlwKVxuICAgICAgICAgICAgICAgICAgIChldW5pdCB+bG9jKSk7XG4gICAgICAgICAgXSlcblxubGV0IG1lcmdlX2dlbmVyYXRvcnMgZmllbGQgbCA9XG4gIExpc3QuZmlsdGVyX21hcCBsIH5mOihmdW4geCAtPiB4KSB8PiBMaXN0LmNvbmNhdCB8PiBEZXJpdmVyLnJlc29sdmVfYWxsIGZpZWxkXG5cbigqIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIFsnYSBkZXJpdmVkXSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXS4gVGhpc1xuICAgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGFkZCBbaW5jbHVkZSBzdHJ1Y3QgLi4uIGVuZF0gdG8gZGlzYWJsZSB3YXJuaW5ncy4gKilcbmxldCBtZXJnZV9kZXJpdmVkIGxpc3RzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGxpc3RzIH5pbml0OltdIH5mOihmdW4gZGVyaXZlZCBhY2MgLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IG90aGVyIDo6IG90aGVyc1xuICAgICAgICB3aGVuIEJvb2wuZXF1YWwgZGVyaXZlZC51bnVzZWRfY29kZV93YXJuaW5ncyBvdGhlci51bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgICAtPlxuICAgICAgICAgIHsgb3RoZXIgd2l0aCBpdGVtcyA9IGRlcml2ZWQuaXRlbXMgQCBvdGhlci5pdGVtcyB9IDo6IG90aGVyc1xuICAgICAgfCBfIC0+IGRlcml2ZWQgOjogYWNjKVxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgKCogVE9ETzogaW5zdGVhZCBvZiBkaXNhYmxpbmcgdGhlIHVudXNlZCB3YXJuaW5nIGZvciB0eXBlcyB0aGVtc2VsdmVzLCB3ZVxuICAgICBzaG91bGQgYWRkIGEgdGFnIFtAQHVudXNlZF0uICopXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSB0eXBlc191c2VkX2J5X2Rlcml2aW5nIHRkcyBAIGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgcnVsZXMgfnR5cCB+ZXhwYW5kX3NpZyB+ZXhwYW5kX3N0ciB+cnVsZV9zdHIgfnJ1bGVfc2lnIH5ydWxlX3N0cl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0ID1cbiAgbGV0IHByZWZpeCA9IFwicHB4bGliLlwiIGluXG4gIGxldCBkZXJpdmluZ19hdHRyID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiXCIgfnByZWZpeCB0eXAgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHJfZXhwZWN0ID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiX2lubGluZVwiIH5wcmVmaXggdHlwIGluXG4gIFtcbiAgICBydWxlX3NpZyBkZXJpdmluZ19hdHRyIGV4cGFuZF9zaWc7XG4gICAgcnVsZV9zdHIgZGVyaXZpbmdfYXR0ciBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc3RyX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc2lnX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc2lnO1xuICBdXG5cbmxldCBydWxlc190eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOlR5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2RlY2xzXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2RlY2xzXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3RcblxubGV0IHJ1bGVzX3R5cGVfZXh0ID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4dGVuc2lvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZXh0XG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dF9leHBlY3RcblxubGV0IHJ1bGVzX2V4Y2VwdGlvbiA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leGNlcHRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9leGNlcHRpb25cbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25cbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0XG5cbmxldCBydWxlc19tb2R1bGVfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcblxubGV0ICgpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBbIHJ1bGVzX3R5cGVfZGVjbDsgcnVsZXNfdHlwZV9leHQ7IHJ1bGVzX2V4Y2VwdGlvbjsgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCBdXG4gICAgfD4gTGlzdC5jb25jYXRcbiAgaW5cbiAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIFwiZGVyaXZpbmdcIiB+YWxpYXNlczpbIFwidHlwZV9jb252XCIgXSB+cnVsZXNcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgYWZmaXggPVxuICB8IFByZWZpeCBvZiBzdHJpbmdcbiAgfCBTdWZmaXggb2Ygc3RyaW5nXG4gIHwgUHJlZml4U3VmZml4IG9mIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgbWFuZ2xlID8oZml4cG9pbnQgPSBcInRcIikgYWZmaXggbmFtZSA9XG4gIG1hdGNoIChTdHJpbmcuKG5hbWUgPSBmaXhwb2ludCksIGFmZml4KSB3aXRoXG4gIHwgdHJ1ZSwgKFByZWZpeCB4IHwgU3VmZml4IHgpIC0+IHhcbiAgfCB0cnVlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBuYW1lIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeCB4IC0+IHggXiBcIl9cIiBeIG5hbWVcbiAgfCBmYWxzZSwgU3VmZml4IHggLT4gbmFtZSBeIFwiX1wiIF4geFxuXG5sZXQgbWFuZ2xlX3R5cGVfZGVjbCA/Zml4cG9pbnQgYWZmaXggeyBwdHlwZV9uYW1lID0geyB0eHQgPSBuYW1lOyBfIH07IF8gfSA9XG4gIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggbmFtZVxuXG5sZXQgbWFuZ2xlX2xpZCA/Zml4cG9pbnQgYWZmaXggbGlkID1cbiAgbWF0Y2ggbGlkIHdpdGhcbiAgfCBMaWRlbnQgcyAtPiBMaWRlbnQgKG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMZG90IChwLCBzKSAtPiBMZG90IChwLCBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGFwcGx5IF8gLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuRXhwYW5zaW9uX2hlbHBlcnMubWFuZ2xlX2xpZDogTGFwcGx5XCJcblxubW9kdWxlIFF1b3RlciA9IFF1b3RlclxuIiwiKCoqIFN0YW5kYXJkIGxpYnJhcnkgZm9yIHBweCByZXdyaXRlcnMgKilcblxuKCoqIFtwcHhsaWJdIGlzIG1lYW50IHRvIGJlIG9wZW5lZCBnbG9iYWxseSBpbiB5b3VyIFBQWCBzb3VyY2UgZmlsZXMuXG5cbiAgICBPcGVuaW5nIGl0IGNvbWVzIHdpdGggdHdvIGFkdmFudGFnZXMuIEZpcnN0LCBpdCB3aWxsIHNoYWRvdyB0aGVcbiAgICBbY29tcGlsZXItbGlic10gbW9kdWxlcy4gVGhlIFtjb21waWxlci1saWJzXSBtb2R1bGVzIGFyZSB1bnN0YWJsZSBhbmQgYXJlbid0XG4gICAgbWVhbnQgdG8gYmUgdXNlZCwgc28gc2hhZG93aW5nIHRoZW0gaXMgYSBnb29kIHByb3RlY3Rpb24gbWVjaGFuaXNtLiBJbiBjYXNlXG4gICAgeW91IGRvbid0IHdhbnQgdG8gb3BlbiBbUHB4bGliXSwgeW91IGNhbiBvcGVuIFtPY2FtbF9zaGFkb3ddIHRvIGdldCB0aGUgc2FtZVxuICAgIHByb3RlY3Rpb24uIFNlY29uZCwgaXQgd2lsbCBicmluZyBzZXZlcmFsIG1vZHVsZXMgaW4gc2NvcGUsIHRoYXQgYXJlIHVzZWZ1bFxuICAgIHRvIGhhdmUgd2hlbiB3cml0aW5nIGEgcmV3cml0ZXI6XG5cbiAgICAtIFRoZSBtYWluIFtwcHhsaWJdIG1vZHVsZXMsIHN1Y2ggYXMgbW9kdWxlcyB0byBoZWxwIG1hbmlwdWxhdGUgdGhlIEFTVFxuICAgICAgKHshQXN0X2J1aWxkZXJ9LCB7IUFzdF9wYXR0ZXJufSksIGFuZCBhIGZldyBmdW5jdGlvbnMuXG4gICAgLSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzLCBzdWNoIGFzIHshQXN0X2hlbHBlcn0gb3IgeyFQcHJpbnRhc3R9LFxuICAgIC0gVGhlIHdob2xlIEFTVCB0eXBlcyAoYnkgW2luY2x1ZGluZ10gdGhlIHshQXN0fSBtb2R1bGUpLlxuXG4gICAgezEgVGhlIGNvcmUgW3BweGxpYl0gZW50cmllc30gKilcblxuKCoqIHsyIE1hbmlwdWxhdGluZyB0aGUgQVNUfSAqKVxuXG5tb2R1bGUgQXN0X2J1aWxkZXIgPSBBc3RfYnVpbGRlclxubW9kdWxlIEFzdF9wYXR0ZXJuID0gQXN0X3BhdHRlcm5cbm1vZHVsZSBBc3RfdHJhdmVyc2UgPSBBc3RfdHJhdmVyc2VcblxuKCoqIHsyIENvbnRleHQtZnJlZSByZXdyaXRpbmd9ICopXG5cbm1vZHVsZSBDb250ZXh0X2ZyZWUgPSBDb250ZXh0X2ZyZWVcbm1vZHVsZSBEZXJpdmluZyA9IERlcml2aW5nXG5tb2R1bGUgRXh0ZW5zaW9uID0gRXh0ZW5zaW9uXG5tb2R1bGUgRXhwYW5zaW9uX2NvbnRleHQgPSBFeHBhbnNpb25fY29udGV4dFxubW9kdWxlIENvZGVfcGF0aCA9IENvZGVfcGF0aFxuXG4oKiogezIgT3RoZXIgaGVscGVyc30gKilcblxubW9kdWxlIEV4cGFuc2lvbl9oZWxwZXJzID0gRXhwYW5zaW9uX2hlbHBlcnNcbm1vZHVsZSBNZXJsaW5faGVscGVycyA9IE1lcmxpbl9oZWxwZXJzXG5tb2R1bGUgU3BlbGxjaGVjayA9IFNwZWxsY2hlY2tcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxuXG4oKiogezIgRHJpdmVyLXJlbGF0ZWQgbW9kdWxlc30gKilcblxubW9kdWxlIERyaXZlciA9IERyaXZlclxubW9kdWxlIENhbGxlcl9pZCA9IENhbGxlcl9pZFxubW9kdWxlIEFzdF9pbyA9IFV0aWxzLkFzdF9pby5SZWFkX2JpblxuXG4oKiogezIgQ2hlY2tzfSAqKVxuXG5tb2R1bGUgQXR0cmlidXRlID0gQXR0cmlidXRlXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlc1xuXG4oKiogezIgQ29tbW9uIGhlbHBlciBmdW5jdGlvbnN9ICopXG5cbmluY2x1ZGUgQ29tbW9uXG5cbigqKiB7MSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzfVxuXG4gICAgRXhwb3NlIHNvbWUgbW9kdWxlcyBmcm9tIHshUHB4bGliX2FzdH0uICopXG5cbm1vZHVsZSBBc3QgPSBQcHhsaWJfYXN0LkFzdFxubW9kdWxlIEFzdF9oZWxwZXIgPSBQcHhsaWJfYXN0LkFzdF9oZWxwZXJcbm1vZHVsZSBBc3R0eXBlcyA9IFBweGxpYl9hc3QuQXN0dHlwZXNcbm1vZHVsZSBQYXJzZSA9IFBweGxpYl9hc3QuUGFyc2Vcbm1vZHVsZSBQYXJzZXRyZWUgPSBQcHhsaWJfYXN0LlBhcnNldHJlZVxubW9kdWxlIFBwcmludGFzdCA9IFBweGxpYl9hc3QuUHByaW50YXN0XG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Rcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgTG9jID0gTG9jXG5cbigqKiB7MSBUaGUgd2hvbGUgQVNUIHR5cGVzfSAqKVxuXG5pbmNsdWRlIEFzdFxuKCoqIEluY2x1ZGUgYWxsIHRoZSBBc3QgZGVmaW5pdGlvbnMgc2luY2Ugd2UgbmVlZCB0aGVtIGluIGV2ZXJ5IHNpbmdsZSBwcHhcblxuICAgIEBjbG9zZWQgKilcblxuKCoqIE1ha2Ugc3VyZSBjb2RlIHVzaW5nIFBweGxpYiBkb2Vzbid0IHJlZmVyIHRvIGNvbXBpbGVyLWxpYnMgd2l0aG91dCBiZWluZ1xuICAgIGV4cGxpY2l0IGFib3V0IGl0OlxuXG4gICAgQGNsb3NlZCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG9wZW4gT2NhbWxfc2hhZG93XG5cbiAgaW5jbHVkZSAoXG4gICAgT2NhbWxfc2hhZG93IDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE9jYW1sX3NoYWRvd1xuICAgICAgZW5kXG4gICAgICB3aXRoIG1vZHVsZSBBc3RfaGVscGVyIDo9IEFzdF9oZWxwZXJcbiAgICAgIHdpdGggbW9kdWxlIEFzdHR5cGVzIDo9IEFzdHR5cGVzXG4gICAgICB3aXRoIG1vZHVsZSBEb2NzdHJpbmdzIDo9IERvY3N0cmluZ3NcbiAgICAgIHdpdGggbW9kdWxlIElkZW50aWZpYWJsZSA6PSBJZGVudGlmaWFibGVcbiAgICAgIHdpdGggbW9kdWxlIExleGVyIDo9IExleGVyXG4gICAgICB3aXRoIG1vZHVsZSBMb2NhdGlvbiA6PSBMb2NhdGlvblxuICAgICAgd2l0aCBtb2R1bGUgTG9uZ2lkZW50IDo9IExvbmdpZGVudFxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2UgOj0gUGFyc2VcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNldHJlZSA6PSBQYXJzZXRyZWVcbiAgICAgIHdpdGggbW9kdWxlIFBwcmludGFzdCA6PSBQcHJpbnRhc3RcbiAgICAgIHdpdGggbW9kdWxlIFN5bnRheGVyciA6PSBTeW50YXhlcnIpXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBGb3IgdGVzdHMgYW5kIFBweF9jb3JlIGNvbXBhdGliaWxpdHkgbGF5ZXIgKilcbm1vZHVsZSBQcHhsaWJfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29tbW9uID0gQ29tbW9uXG4gIG1vZHVsZSBOYW1lID0gTmFtZVxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBQcHhsaWJcblxubGV0IGRlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmRlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChhbHRfb3B0aW9uIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpIG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2VxdWFsID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfY29tcGFyZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfeW9qc29uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9pZiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfaWZcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgb3BhcXVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJ5b2pzb24ub3BhcXVlXCIgQXR0cmlidXRlLkNvbnRleHQuY29yZV90eXBlIEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgKClcbjs7XG5cbmxldCBvcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm9wdGlvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfdGQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQudHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IHlvanNvbl9rZXkgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmtleVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQucnRhZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIGF0dHIgZGVzY3JpcHRpb24gPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICB+bG9jXG4gICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAJXNdIGlzIG9ubHkgYWxsb3dlZCBvbiB0eXBlIFslc10uXCJcbiAgICAoQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgICBkZXNjcmlwdGlvblxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkIHgpXG4gIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgIH5sb2NcbiAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiBpbmxpbmUgcmVjb3Jkcy5cIlxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkIHgpXG4gIHRoZW4gKFxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IGNkc1xuICAgICAgd2hlbiBMaXN0LmV4aXN0cyBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIF8gLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIG9ubHkgd29ya3Mgb24gcmVjb3Jkcy4gRm9yIGlubGluZSBcXFxuICAgICAgICAgcmVjb3JkcywgZG86IHR5cGUgdCA9IEEgb2YgeyBhIDogaW50IH0gW0BAYWxsb3dfZXh0cmFfZmllbGRzXSB8IEIgW0BAQEBkZXJpdmluZyBcXFxuICAgICAgICAgeW9qc29uXVwiXG4gICAgfCBfIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiByZWNvcmRzLlwiKVxuOztcblxubW9kdWxlIFJlY29yZF9maWVsZF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgY29tbW9uID0gWyBgeW9qc29uX29wdGlvbiBvZiBjb3JlX3R5cGUgXVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIGF0dHIgbGQgfmYgPVxuICAgIE9wdGlvbi5tYXAgKEF0dHJpYnV0ZS5nZXQgYXR0ciBsZCkgfmY6KGZ1biB4IC0+IGYgeCwgQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgOztcblxuICBsZXQgY3JlYXRlIH5sb2MgZ2V0dGVycyBsZCA9XG4gICAgbGV0IGNvbW1vbl9nZXR0ZXJzID1cbiAgICAgIFsgKGZ1biBsZCAtPlxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5nZXQgb3B0aW9uIGxkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICAgICAgfCBbJXR5cGU6IFsldD8gdHldIG9wdGlvbl0gLT4gU29tZSAoYHlvanNvbl9vcHRpb24gdHksIFwiW0B5b2pzb24ub3B0aW9uXVwiKVxuICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIG9wdGlvbiBcIl8gb3B0aW9uXCIpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICBdXG4gICAgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlcl9tYXAgKGdldHRlcnMgQCBjb21tb25fZ2V0dGVycykgfmY6KGZ1biBmIC0+IGYgbGQpIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgKHYsIF8pIF0gLT4gU29tZSB2XG4gICAgfCBfIDo6IF8gOjogXyBhcyBhdHRyaWJ1dGVzIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTogJXNcIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChMaXN0Lm1hcCBhdHRyaWJ1dGVzIH5mOnNuZCkpXG4gIDs7XG5cbiAgbW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZGVmYXVsdCBvZiBleHByZXNzaW9uXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlIH5sb2MgWyBnZXRfYXR0cmlidXRlIGRlZmF1bHQgfmY6KGZ1biBkZWZhdWx0IC0+IGBkZWZhdWx0IGRlZmF1bHQpIF0gbGRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgb2YgWyBgbm9fYXJnIHwgYGNvbXBhcmUgfCBgZXF1YWwgfCBgeW9qc29uIHwgYGZ1bmMgb2YgZXhwcmVzc2lvbiBdXG4gICAgICB8IGBkcm9wX2lmIG9mIGV4cHJlc3Npb25cbiAgICAgIHwgYGtlZXBcbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmxvY1xuICAgICAgICBbIGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IGBkcm9wX2RlZmF1bHQgYG5vX2FyZ1xuICAgICAgICAgICAgfCBTb21lIGUgLT4gYGRyb3BfZGVmYXVsdCAoYGZ1bmMgZSkpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfZXF1YWwgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBlcXVhbClcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9jb21wYXJlIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgY29tcGFyZSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF95b2pzb24gfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGB5b2pzb24pXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2lmIH5mOihmdW4geCAtPiBgZHJvcF9pZiB4KVxuICAgICAgICBdXG4gICAgICAgIGxkXG4gICAgICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6YGtlZXBcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPVxuICB7IGxhYmVsIDogc3RyaW5nXG4gIDsgbmFtZV9vdmVycmlkZSA6IHN0cmluZyBvcHRpb25cbiAgfVxuXG5sZXQgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZSA9IHsgbGFiZWw7IG5hbWVfb3ZlcnJpZGUgfVxuXG5sZXQgb2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKGNkIDogUHB4bGliLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSA9XG4gIGxldCBsYWJlbCA9IGNkLnBjZF9uYW1lLnR4dCBpblxuICBsZXQgbmFtZV9vdmVycmlkZSA9IFBweGxpYi5BdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl92YXJpYW50X25hbWUgY2QgaW5cbiAgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZVxuOztcblxubGV0IGxhYmVsIHQgPSB0LmxhYmVsXG5sZXQgbmFtZSB0ID0gT3B0aW9uLnZhbHVlIHQubmFtZV9vdmVycmlkZSB+ZGVmYXVsdDp0LmxhYmVsXG4iLCJvcGVuIEJhc2Vcbm9wZW4gUHB4bGliXG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBBdHRycyA9IEF0dHJzXG5cbmxldCAoIC0tPiApIGxocyByaHMgPSBjYXNlIH5ndWFyZDpOb25lIH5saHMgfnJoc1xuXG4oKiBTaW1wbGlmaWVzIG1hdGNoIGNhc2VzLCBmb3IgcmVhZGFiaWxpdHkgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBJdCdzIG5vdCBvYnZpb3VzIHdlIGNhblxuICAgc3RpY2sgdGhpcyBpbiBwcHhfY29yZSwgYXMgKG1hdGNoIGUxIHdpdGggcCAtPiBlMikgYW5kIChsZXQgcCA9IGUxIGluIGUyKSBhcmUgbm90IHR5cGVkXG4gICBleGFjdGx5IHRoZSBzYW1lICh0eXBlIGluZmVyZW5jZSBnb2VzIGluIGRpZmZlcmVudCBvcmRlciwgbWVhbmluZyB0eXBlIGRpc2FtYmlndWF0aW9uXG4gICBkaWZmZXJzKS4gKilcbmxldCBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlcyA9XG4gIG1hdGNoIGNhc2VzIHdpdGhcbiAgfCBbIHsgcGNfbGhzOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyB9IF0gLT5cbiAgICAobWF0Y2ggcGNfbGhzLCBleHByIHdpdGhcbiAgICAgfCAoIHsgcHBhdF9hdHRyaWJ1dGVzID0gW107IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gaWRlbnQ7IF8gfTsgXyB9XG4gICAgICAgLCB7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGlkZW50JzsgXyB9OyBfIH0gKVxuICAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIGlkZW50IGlkZW50JyAtPiBwY19yaHNcbiAgICAgfCBfIC0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGNfbGhzIH5leHByIF0gcGNfcmhzKVxuICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXNcbjs7XG5cbm1vZHVsZSBGdW5fb3JfbWF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZ1biBvZiBleHByZXNzaW9uXG4gICAgfCBNYXRjaCBvZiBjYXNlIGxpc3RcblxuICBsZXQgZXhwciB+bG9jIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZlxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIGNhc2VzXG4gIDs7XG5cbiAgbGV0IHVucm9sbCB+bG9jIGUgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBlYXBwbHkgfmxvYyBmIFsgZSBdXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX21hdGNoIH5sb2MgZSBjYXNlc1xuICA7O1xuXG4gIGxldCBtYXBfdG1wX3ZhcnMgfmxvYyB0cyA9XG4gICAgbGV0IHZhcnMgPSBMaXN0Lm1hcGkgdHMgfmY6KGZ1biBpIF8gLT4gXCJ2XCIgXiBJbnQudG9fc3RyaW5nIGkpIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIExpc3QubWFwMl9leG4gdmFycyB0cyB+ZjooZnVuIHZhciB0IC0+XG4gICAgICAgIGxldCBleHByID0gdW5yb2xsIH5sb2MgKGV2YXIgfmxvYyB2YXIpIHQgaW5cbiAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyB2YXIpIH5leHByKVxuICAgIGluXG4gICAgYmluZGluZ3MsIExpc3QubWFwIHZhcnMgfmY6KHB2YXIgfmxvYyksIExpc3QubWFwIHZhcnMgfmY6KGV2YXIgfmxvYylcbiAgOztcbmVuZFxuXG4oKiBBIHJlbmFtaW5nIGlzIGEgbWFwcGluZyBmcm9tIHR5cGUgdmFyaWFibGUgbmFtZSB0byB0eXBlIHZhcmlhYmxlIG5hbWUuXG4gICBJbiBkZWZpbml0aW9ucyBzdWNoIGFzOlxuXG4gICB0eXBlICdhIHQgPVxuICAgfCBBIDogPHR5cGU+IC0+ICdiIHRcbiAgIHwgQiBvZiAnYVxuXG4gICB3ZSBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4geW9qc29uX29mIHBhcmFtZXRlciBuYW1lZCBhZnRlciAnYSwgYnV0ICdhIGlzIG5vdCBpblxuICAgc2NvcGUgaW4gPHR5cGU+IHdoZW4gaGFuZGxpbmcgdGhlIGNvbnN0cnVjdG9yIEEgKGJlY2F1c2UgQSBpcyBhIGdhZHQgY29uc3RydWN0b3IpLlxuICAgSW5zdGVhZCB0aGUgdHlwZSB2YXJpYWJsZXMgaW4gc2NvcGUgYXJlIHRoZSBvbmVzIGRlZmluZWQgaW4gdGhlIHJldHVybiB0eXBlIG9mIEEsXG4gICBuYW1lbHkgJ2IuIFRoZXJlIGNvdWxkIGJlIGxlc3Mgb3IgbW9yZSB0eXBlIHZhcmlhYmxlIGluIGNhc2VzIHN1Y2ggYXM6XG5cbiAgIHR5cGUgXyBsZXNzID0gTGVzcyA6IGludCBsZXNzXG4gICB0eXBlIF8gbW9yZSA9IE1vcmUgOiAoJ2EgKiAnYSkgbW9yZVxuXG4gICBJZiBmb3IgaW5zdGFuY2UsIDx0eXBlPiBpcyBbJ2IgKiAnY10sIHdoZW4gd2UgZmluZCAnYiwgd2Ugd2lsbCBsb29rIGZvciBbJ2JdIGluIHRoZVxuICAgcmVuYW1pbmcgYW5kIGZpbmQgWydhXSAob25seSBpbiB0aGF0IGdhZHQgYnJhbmNoLCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSBpbiBvdGhlclxuICAgYnJhbmNoZXMpLCBhdCB3aGljaCBwb2ludCB3ZSBjYW4gY2FsbCB0aGUgcHJldmlvdXNseSBib3VuZCB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkXG4gICBhZnRlciAnYS5cbiAgIElmIHdlIGNhbid0IGZpbmQgYSByZXN1bHRpbmcgbmFtZSwgbGlrZSB3aGVuIGxvb2tpbmcgdXAgWydjXSBpbiB0aGUgcmVuYW1pbmcsIHRoZW4gd2VcbiAgIGFzc3VtZSB0aGUgdmFyaWFibGUgaXMgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkIGFuZCB0cmVhdCBpdCBhcyBbX10gKHdoaWNoIGlzIG9rLFxuICAgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIGNvbnN0cmFpbnRzKS4gKilcbm1vZHVsZSBSZW5hbWluZyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgaWRlbnRpdHkgOiB0XG4gIHZhbCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgOiB0IC0+IHN0cmluZyBsb2MgLT4gdFxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIHZhbCBiaW5kaW5nX2tpbmQgOiB0IC0+IHN0cmluZyAtPiBiaW5kaW5nX2tpbmRcbiAgdmFsIG9mX2dhZHQgOiBzdHJpbmcgbGlzdCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvciA9IHN0cmluZyBMb2MudFxuICB0eXBlIHQgPSAoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50IG9wdGlvblxuXG4gIGxldCBpZGVudGl0eSA9IE5vbmVcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICBsZXQgYWRkX3VuaXZlcnNhbGx5X2JvdW5kICh0IDogdCkgbmFtZSA6IHQgPVxuICAgIGxldCBuYW1lID0gbmFtZS50eHQgaW5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBtYXAgLT4gU29tZSAoTWFwLnNldCB+a2V5Om5hbWUgfmRhdGE6KE9rIG5hbWUpIG1hcClcbiAgOztcblxuICBsZXQgYmluZGluZ19raW5kIHQgdmFyID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFyXG4gICAgfCBTb21lIG1hcCAtPlxuICAgICAgKG1hdGNoIE1hcC5maW5kIG1hcCB2YXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBFeGlzdGVudGlhbGx5X2JvdW5kXG4gICAgICAgfCBTb21lIChPayB2YWx1ZSkgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFsdWVcbiAgICAgICB8IFNvbWUgKEVycm9yIHsgbG9jOyB0eHQgfSkgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCIlc1wiIHR4dClcbiAgOztcblxuICAoKiBSZXR1cm4gYSBtYXAgdHJhbnNsYXRpbmcgdHlwZSB2YXJpYWJsZXMgYXBwZWFyaW5nIGluIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdBRFRcbiAgICAgY29uc3RydWN0b3IgdG8gdGhlaXIgbmFtZSBpbiB0aGUgdHlwZSBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICBGb3IgaW5zdGFuY2U6XG5cbiAgICAge1tcbiAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSBYIDogJ3ggKiAneSAtPiAoJ3gsICd5KSB0XG4gICAgIF19XG5cbiAgICAgd2lsbCBwcm9kdWNlOlxuXG4gICAgIHtbXG4gICAgICAgXCJ4XCIgLT4gT2sgXCJhXCJcbiAgICAgICAgICAgICAgICBcInlcIiAtPiBPayBcImJcIlxuICAgICBdfVxuXG4gICAgIElmIGEgdmFyaWFibGUgYXBwZWFycyB0d2ljZSBpbiB0aGUgcmV0dXJuIHR5cGUgaXQgd2lsbCBtYXAgdG8gW0Vycm9yIF9dLiBJZiBhXG4gICAgIHZhcmlhYmxlIGNhbm5vdCBiZSBtYXBwZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgZGVjbGFyYXRpb24sIGl0IHdpbGwgbWFwIHRvXG4gICAgIFtFcnJvcl0gKGZvciBpbnN0YW5jZSBbQSA6ICdhIC0+ICdhIGxpc3QgdF0pLlxuXG4gICAgIEl0IHJldHVybnMgTm9uZSBvbiB1c2VyIGVycm9yLCB0byBsZXQgdGhlIHR5cGVyIGdpdmUgdGhlIGVycm9yIG1lc3NhZ2UgKilcbiAgbGV0IG9mX2dhZHQgPVxuICAgICgqIEFkZCBhbGwgdHlwZSB2YXJpYWJsZXMgb2YgYSB0eXBlIHRvIGEgbWFwLiAqKVxuICAgIGxldCBhZGRfdHlwZXZhcnMgPVxuICAgICAgb2JqZWN0XG4gICAgICAgIGluaGVyaXQgWyhzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgbWFwID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICB7IGxvYyA9IHR5LnB0eXBfbG9jXG4gICAgICAgICAgICAgIDsgdHh0ID1cbiAgICAgICAgICAgICAgICAgIFwicHB4X3lvanNvbl9jb252OiB2YXJpYWJsZSBpcyBub3QgYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgY29uc3RydWN0b3JcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGE6KEVycm9yIGVycm9yKVxuICAgICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgdHkgbWFwXG4gICAgICBlbmRcbiAgICBpblxuICAgIGxldCBhdXggbWFwIHRwX25hbWUgdHBfaW5fcmV0dXJuX3R5cGUgPVxuICAgICAgbWF0Y2ggdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICBpZiBNYXAubWVtIG1hcCB2YXJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2MgPSB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2xvYyBpblxuICAgICAgICAgICAgRXJyb3IgeyBsb2M7IHR4dCA9IFwicHB4X3lvanNvbl9jb252OiBkdXBsaWNhdGUgdmFyaWFibGVcIiB9KVxuICAgICAgICAgIGVsc2UgT2sgdHBfbmFtZVxuICAgICAgICBpblxuICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YVxuICAgICAgfCBfIC0+IGFkZF90eXBldmFycyNjb3JlX3R5cGUgdHBfaW5fcmV0dXJuX3R5cGUgbWFwXG4gICAgaW5cbiAgICBmdW4gdHBzIGNkIC0+XG4gICAgICBtYXRjaCBjZC5wY2RfcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgKG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICB8IFB0eXBfY29uc3RyIChfLCBwYXJhbXMpIC0+XG4gICAgICAgICAgIGlmIExpc3QubGVuZ3RoIHBhcmFtcyA8PiBMaXN0Lmxlbmd0aCB0cHNcbiAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoU3RkbGliLkxpc3RMYWJlbHMuZm9sZF9sZWZ0MlxuICAgICAgICAgICAgICAgICAgdHBzXG4gICAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpKVxuICAgICAgICAgICAgICAgICAgfmY6YXV4KVxuICAgICAgICAgfCBfIC0+IE5vbmUpXG4gIDs7XG5lbmRcblxuKCogVXRpbGl0eSBmdW5jdGlvbnMgKilcblxubGV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgUHR5cF92YXIgXyAtPiBQdHlwX2FueVxuICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG5sZXQgcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB4ID1cbiAgbGV0IHByZWZpeCA9IFwicmlnaWRfXCIgaW5cbiAgaWYgU3RyaW5nLmVxdWFsIHggdHlwZV9uYW1lIHx8IFN0cmluZy5pc19wcmVmaXggeCB+cHJlZml4XG4gIHRoZW4gcHJlZml4IF4geCBeIFwiX29mX3R5cGVfXCIgXiB0eXBlX25hbWVcbiAgZWxzZSB4XG47O1xuXG5sZXQgbWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSA9XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciBzIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoTG9jYXRlZC5saWRlbnQgfmxvYzp0eS5wdHlwX2xvYyAocmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSBzKSwgW10pXG4gICAgICAgICAgfCBkZXNjIC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIGRlc2NcbiAgICAgICAgaW5cbiAgICAgICAgeyB0eSB3aXRoIHB0eXBfZGVzYyB9XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgcXVhbnRpZmllZCB0eXBlIFsgISAnYSAuLiAneiAuIChtYWtlX21vbm9fdHlwZSB0ICgnYSAuLiAneikpIF0gb3JcbiAgIFt0eXBlIGEgLi4gei4gbWFrZV9tb25vX3R5cGUgdCAoYSAuLiB6KV0gd2hlbiBbdXNlX3JpZ2lkX3ZhcmlhYmxlc10gaXMgdHJ1ZS5cbiAgIEFubm90YXRpb24gYXJlIG5lZWRlZCBmb3Igbm9uIHJlZ3VsYXIgcmVjdXJzaXZlIGRhdGF0eXBlcyBhbmQgZ2FkdCB3aGVuIHRoZSByZXR1cm4gdHlwZVxuICAgb2YgY29uc3RydWN0b3JzIGFyZSBjb25zdHJhaW5lZC4gVW5mb3J0dW5hdGVseSwgcHV0dGluZyByaWdpZCB2YXJpYWJsZXMgZXZlcnl3aGVyZSBkb2VzXG4gICBub3Qgd29yayBiZWNhdXNlIG9mIGNlcnRhaW5zIHR5cGVzIHdpdGggY29uc3RyYWludHMuIFdlIHRodXMgb25seSB1c2UgcmlnaWQgdmFyaWFibGVzXG4gICBmb3Igc3VtIHR5cGVzLCB3aGljaCBpbmNsdWRlcyBhbGwgR0FEVHMuICopXG5cbmxldCB0dmFyc19vZl9jb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gc3RyaW5nIGxpc3QgPVxuICBsZXQgdHZhcnMgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gaWYgTGlzdC5tZW0gYWNjIHggfmVxdWFsOlN0cmluZy5lcXVhbCB0aGVuIGFjYyBlbHNlIHggOjogYWNjXG4gICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgeCBhY2NcbiAgICBlbmRcbiAgaW5cbiAgZnVuIHR5cCAtPiBMaXN0LnJldiAodHZhcnMjY29yZV90eXBlIHR5cCBbXSlcbjs7XG5cbmxldCBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nXG4gICAgICAoKiBwbGFjaW5nIGEgc3VpdGFibHkgcG9seW1vcnBoaWMgb3IgcmlnaWQgdHlwZSBjb25zdHJhaW50IG9uIHRoZSBwYXR0ZXJuIG9yIGJvZHkgKilcbiAgICAgIChsb2MgOiBMb2NhdGlvbi50KVxuICAgICAgKHRkIDogdHlwZV9kZWNsYXJhdGlvbilcbiAgICAgICh0eXAgOiBjb3JlX3R5cGUpXG4gICAgICB+KHRwcyA6IHN0cmluZyBsb2MgbGlzdClcbiAgICAgIH4oZnVuY19uYW1lIDogc3RyaW5nKVxuICAgICAgKGJvZHkgOiBleHByZXNzaW9uKVxuICA9XG4gIGxldCB2YXJzID0gdHZhcnNfb2ZfY29yZV90eXBlIHR5cCBpblxuICBsZXQgaGFzX3ZhcnMgPVxuICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IF8gOjogXyAtPiB0cnVlXG4gIGluXG4gIGxldCBwYXQgPVxuICAgIGxldCBwYXQgPSBwdmFyIH5sb2MgZnVuY19uYW1lIGluXG4gICAgaWYgbm90IGhhc192YXJzXG4gICAgdGhlbiBwYXRcbiAgICBlbHNlIChcbiAgICAgIGxldCB2YXJzID0gTGlzdC5tYXAgfmY6KGZ1biB0eHQgLT4geyB0eHQ7IGxvYyB9KSB2YXJzIGluXG4gICAgICBwcGF0X2NvbnN0cmFpbnQgfmxvYyBwYXQgKHB0eXBfcG9seSB+bG9jIHZhcnMgdHlwKSlcbiAgaW5cbiAgbGV0IGJvZHkgPVxuICAgIGxldCB1c2VfcmlnaWRfdmFyaWFibGVzID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV92YXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiB1c2VfcmlnaWRfdmFyaWFibGVzXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdHlwZV9uYW1lID0gdGQucHR5cGVfbmFtZS50eHQgaW5cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICB0cHNcbiAgICAgICAgfmY6KGZ1biB0cCBib2R5IC0+XG4gICAgICAgICAgcGV4cF9uZXd0eXBlIH5sb2MgeyB0eHQgPSByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHRwLnR4dDsgbG9jID0gdHAubG9jIH0gYm9keSlcbiAgICAgICAgfmluaXQ6KHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgKG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lIHR5cCkpKVxuICAgIGVsc2UgaWYgaGFzX3ZhcnNcbiAgICB0aGVuIGJvZHlcbiAgICBlbHNlIHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgdHlwXG4gIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0IH5leHByOmJvZHlcbjs7XG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIChvYmplY3RcbiAgICBpbmhlcml0IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUgd2l0aFxuICAgICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgfm1hcmtfYXNfc2VlbjpmYWxzZSBBdHRycy5vcGFxdWUgY3R5cGUpIC0+XG4gICAgICAgICgpXG4gICAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPiAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuICBlbmQpXG4gICNnb1xuICAgICgpXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIHRvIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX29mX3lvanNvbl9vZiB+bG9jIHQgPSBbJXR5cGU6IFsldCB0XSAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnRdXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl95b2pzb25fb2ZcblxuICBsZXQgbWtfc2lnIH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwICgoIF4gKSBcInlvanNvbl9vZl9cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOihta190eXBlIHRkKVxuICAgICAgICAgICB+cHJpbTpbXSkpXG4gIDs7XG5lbmRcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiBmcm9tIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX29mX29mX3lvanNvbiB+bG9jIHQgPSBbJXR5cGU6IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCAtPiBbJXQgdF1dXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl9vZl95b2pzb25cblxuICBsZXQgc2lnX29mX3RkIHdpdGhfcG9seSB0ZCA9XG4gICAgbGV0IG9mX3lvanNvbl90eXBlID0gbWtfdHlwZSB0ZCBpblxuICAgIGxldCBsb2MgPSB7IHRkLnB0eXBlX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBvZl95b2pzb25faXRlbSA9XG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBzIF4gXCJfb2ZfeW9qc29uXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICB+cHJpbTpbXSlcbiAgICBpblxuICAgIG1hdGNoIHdpdGhfcG9seSwgaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlIHdpdGhcbiAgICB8IHRydWUsIGBTdXJlbHlfbm90IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlNpZ19nZW5lcmF0ZV9vZl95b2pzb24uc2lnX29mX3RkOiB5b2pzb25fcG9seSBhbm5vdGF0aW9uIGJ1dCB0eXBlIGlzIHN1cmVseSBub3QgXFxcbiAgICAgICAgIGEgcG9seW1vcnBoaWMgdmFyaWFudFwiXG4gICAgfCBmYWxzZSwgKGBTdXJlbHlfbm90IHwgYE1heWJlKSAtPiBbIG9mX3lvanNvbl9pdGVtIF1cbiAgICB8ICh0cnVlIHwgZmFsc2UpLCBgRGVmaW5pdGVseSB8IHRydWUsIGBNYXliZSAtPlxuICAgICAgWyBvZl95b2pzb25faXRlbVxuICAgICAgOyBwc2lnX3ZhbHVlXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IFwiX19cIiBeIHMgXiBcIl9vZl95b2pzb25fX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICAgIH5wcmltOltdKVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBta19zaWcgfnBvbHkgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHNpZ19vZl90ZCBwb2x5KVxuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gICgqIEhhbmRsaW5nIG9mIHJlY29yZCBkZWZhdWx0cyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IH5sb2MgaWQgfmY6KGZ1biBzIC0+IFwieW9qc29uX29mX1wiIF4gcykgYXJnc1xuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB5b2pzb25fb2ZfdHlwZVxuICAgICAgICAgICAgfih0eXBldmFyX2hhbmRsaW5nIDogWyBgb2sgb2YgUmVuYW1pbmcudCB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciBdKVxuICAgICAgICAgICAgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IFsldHlwZTogX10gLT4gRnVuIFslZXhwciBmdW4gXyAtPiBgU3RyaW5nIFwiX1wiXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCBbIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkgXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSV5b2pzb25fb2Y6IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIlxuICAgICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYmluZGluZ19raW5kIHJlbmFtaW5nIHBhcm0gd2l0aFxuICAgICAgICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgcGFybSAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmQgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgWyV0eXBlOiBfXSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgICh5b2pzb25fb2ZfdHlwZV9jb25zdHJcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBpZFxuICAgICAgICAgICAoTGlzdC5tYXAgYXJncyB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSkpKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIF9mIC0+XG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9mdW4gUHB4X3lvanNvbl9jb252X2xpYi5pZ25vcmVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3ZhcmlhbnQgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFt5b2pzb25fb2ZdIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOihmdW4gdHAgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcHZhcnMsIGV2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBpbl9leHByID0gWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIGV2YXJzXV0gaW5cbiAgICBsZXQgZXhwciA9IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGluX2V4cHIgaW5cbiAgICBwcGF0X3R1cGxlIH5sb2MgcHZhcnMgLS0+IGV4cHJcblxuICAoKiBDb252ZXJzaW9uIG9mIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIHlvanNvbl9vZl92YXJpYW50XG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICgobG9jLCByb3dfZmllbGRzKSA6IExvY2F0aW9uLnQgKiByb3dfZmllbGQgbGlzdClcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBpdGVtIHJvdyA9XG4gICAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3cgaW5cbiAgICAgIG1hdGNoIHJvdy5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBdXVxuICAgICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV1dIGluXG4gICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9IExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZykgYXJncyBpblxuICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgfmxvYyAoU29tZSBwYXR0KVxuICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV1cbiAgICAgIHwgUmluaGVyaXQgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIFtdKTsgXyB9IC0+XG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKVxuICAgICAgICAtLT4geW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgWyBbJWV4cHIgdl0gXVxuICAgICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUnRhZy8mXCJcbiAgICAgIHwgUmluaGVyaXQgKHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBfIDo6IF8pOyBfIH0gYXMgdHlwKSAtPlxuICAgICAgICBsZXQgY2FsbCA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHR5cCkgaW5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpIC0tPiBbJWV4cHIgWyVlIGNhbGxdIHZdXG4gICAgICB8IFJpbmhlcml0IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUmluaGVyaXQvbm9uLWlkXCJcbiAgICAgICgqIGltcG9zc2libGU/KilcbiAgICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIE1hdGNoIChMaXN0Lm1hcCB+ZjppdGVtIHJvd19maWVsZHMpXG5cbiAgKCogUG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkcyAqKVxuICBhbmQgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAoKiBTaG91bGQgYmUgaW1wb3NzaWJsZSBiZWNhdXNlIFt5b2pzb25fb2ZfcG9seV0gaXMgb25seSBjYWxsZWQgb24gcG9seW1vcnBoaWMgcmVjb3JkXG4gICAgICAgICBmaWVsZHMgYW5kIHJlY29yZCB0eXBlIGRlZmluaXRpb25zIGNhbid0IG9jY3VyIGluIHR5cGUgZXhwcmVzc2lvbnMuICopXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBvbHltb3JwaGljIHR5cGUgaW4gYSB0eXBlIGV4cHJlc3Npb25cIlxuICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgICAgaW5cbiAgICAgIGxldCByZW5hbWluZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHBhcm1zIH5pbml0OnJlbmFtaW5nIH5mOlJlbmFtaW5nLmFkZF91bml2ZXJzYWxseV9ib3VuZFxuICAgICAgaW5cbiAgICAgIChtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgICAgTWF0Y2hcbiAgICAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgICAgIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICAgICBdKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgcmVjb3JkIHR5cGVzICopXG5cbiAgbGV0IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgPVxuICAgIGxldCBwID0gTG9jLm1ha2UgKExvbmdpZGVudC5MaWRlbnQgbmFtZSkgfmxvYywgcHZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgIHBhdHQgQCBbIHAgXVxuICA7O1xuXG4gIHR5cGUgaXNfZW1wdHlfZXhwciA9XG4gICAgfCBJbnNwZWN0X3ZhbHVlIG9mIChsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG4gICAgfCBJbnNwZWN0X3lvanNvbiBvZiAoY252X2V4cHI6ZXhwcmVzc2lvbiAtPiBsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG5cbiAgbGV0IHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHlfZXhwciBrZXkgPVxuICAgIGxldCBsb2MgPSB7IHRwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgIHwgRnVuIGV4cCAtPiBleHBcbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gZWwgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZWxdIG1hdGNoaW5nc11dXG4gICAgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjbnZfZXhwclxuICAgICAgfCBTb21lIHlvanNvbl9vZiAtPiBbJWV4cHIgWyVlIHlvanNvbl9vZl0gWyVlIGNudl9leHByXV1cbiAgICBpblxuICAgIGxldCBleHByID1cbiAgICAgIGxldCB2X25hbWUgPSBcInZfXCIgXiBuYW1lIGluXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgbWF0Y2ggaXNfZW1wdHlfZXhwciB3aXRoXG4gICAgICAgICAgICB8IEluc3BlY3RfdmFsdWUgaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciBsb2MgKGV2YXIgfmxvYyB2X25hbWUpXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1cbiAgICAgICAgICAgIHwgSW5zcGVjdF95b2pzb24gaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciB+Y252X2V4cHIgbG9jIFslZXhwciBhcmddXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXVxuICAgICAgICBpblxuICAgICAgICBbJWUgZXhwcl1dXG4gICAgaW5cbiAgICBwYXR0LCBleHByXG4gIDs7XG5cbiAgbGV0IGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXMgfnR5cGVzX2JlaW5nX2RlZmluZWQgfmxvYyB+d2h5IHRwID1cbiAgICBsZXQgZGlzYWxsb3dfdmFyaWFibGVzID1cbiAgICAgIGxldCBpdGVyID1cbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgfCBQdHlwX3ZhciB2IC0+XG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgY29udGFpbnMgXFxcbiAgICAgICAgICAgICAgICAgYSB0eXBlIHZhcmlhYmxlOiAnJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbiBpcyBub3QgYXZhaWFibGUgZm9yIHR5cGUgdmFyaWFibGVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgbGV0IGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBmdW4gXyAtPiAoKVxuICAgICAgfCBgUmVjdXJzaXZlIHR5cGVzX2JlaW5nX2RlZmluZWQgLT5cbiAgICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyBsb2MgPSBfOyB0eHQgPSBMaWRlbnQgcyB9LCBfKSBhcyB0IC0+XG4gICAgICAgICAgICAgICAgaWYgU2V0Lm1lbSB0eXBlc19iZWluZ19kZWZpbmVkIHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgXFxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgdHlwZSBkZWZpbmVkIGluIHRoZSBjdXJyZW50IHJlY3Vyc2l2ZSBibG9jazogJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgbm90IHN1cHBvcnRlZC5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBkaXNhbGxvd192YXJpYWJsZXMgdHA7XG4gICAgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIHRwXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgIGhvd1xuICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgcGF0dFxuICAgICAgICBleHByXG4gICAgICAgIG5hbWVcbiAgICAgICAgdHBcbiAgICAgICAgP3lvanNvbl9vZlxuICAgICAgICBkZWZhdWx0XG4gICAgICAgIGtleVxuICAgID1cbiAgICBsZXQgaXNfZW1wdHkgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHlvanNvbiAtPlxuICAgICAgICBJbnNwZWN0X3lvanNvblxuICAgICAgICAgIChmdW4gfmNudl9leHByIGxvYyB5b2pzb25fZXhwciAtPlxuICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIChbJWUgY252X2V4cHJdIFslZSBkZWZhdWx0XSkgWyVlIHlvanNvbl9leHByXV0pXG4gICAgICB8IChgbm9fYXJnIHwgYGZ1bmMgXyB8IGBjb21wYXJlIHwgYGVxdWFsKSBhcyBob3cgLT5cbiAgICAgICAgbGV0IGVxdWFsaXR5X2YgbG9jID1cbiAgICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgIHwgYG5vX2FyZyAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbQG9jYW1sLnBwd2FybmluZ1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0XSBpcyBkZXByZWNhdGVkOiBcXFxuICAgICAgICAgICAgICAgICBwbGVhc2UgdXNlIG9uZSBvZjpcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdCBmXSBhbmQgZ2l2ZSBhbiBcXFxuICAgICAgICAgICAgICAgICBleHBsaWNpdCBlcXVhbGl0eSBmdW5jdGlvbiAoW2YgPSBcXFxuICAgICAgICAgICAgICAgICBQb2x5Lig9KV0gY29ycmVzcG9uZHMgdG8gdGhlIG9sZCBcXFxuICAgICAgICAgICAgICAgICBiZWhhdmlvcilcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWNvbXBhcmVdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslZXF1YWxdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBpZiB5b3UgXFxcbiAgICAgICAgICAgICAgICAgd2FudCB0byBjb21wYXJlIHRoZSB5b2pzb24gXFxcbiAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb25zXFxuXCJdXVxuICAgICAgICAgIHwgYGZ1bmMgZiAtPiBmXG4gICAgICAgICAgfCBgY29tcGFyZSAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBjb21wYXJlXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVjb21wYXJlLmVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgICB8IGBlcXVhbCAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBlcXVhbFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICBpblxuICAgICAgICBJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSBlcXVhbGl0eV9mIGxvY10gWyVlIGRlZmF1bHRdIFslZSBleHByXV0pXG4gICAgaW5cbiAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5IGtleVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+cmVuYW1pbmcgbG9jIGZsZHMgfndyYXBfZXhwciA9XG4gICAgbGV0IGNvbGwgKChwYXR0IDogKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QpLCBleHByKSBsZCA9XG4gICAgICBsZXQgbmFtZSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBsZC5wbGRfbmFtZS5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLllvanNvbl9vZi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICB8IGB5b2pzb25fb3B0aW9uIHRwIC0+XG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBbJWV4cHIgdl0gaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpXSB3aXRoXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBibmRzXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICBibmQgOjogYm5kc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFslZSBleHByXV1cbiAgICAgICAgaW5cbiAgICAgICAgcGF0dCwgZXhwclxuICAgICAgfCBgZHJvcF9kZWZhdWx0IGhvdyAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICAobWF0Y2ggQXR0cmlidXRlLmdldCBBdHRycy5kZWZhdWx0IGxkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm5vIGRlZmF1bHQgdG8gZHJvcFwiXG4gICAgICAgICB8IFNvbWUgZGVmYXVsdCAtPlxuICAgICAgICAgICB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgaG93XG4gICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgcGF0dFxuICAgICAgICAgICAgIGV4cHJcbiAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgdHBcbiAgICAgICAgICAgICBkZWZhdWx0XG4gICAgICAgICAgICAga2V5KVxuICAgICAgfCBgZHJvcF9pZiB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBwYXR0XG4gICAgICAgICAgZXhwclxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICB0cFxuICAgICAgICAgIChJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSB0ZXN0XSBbJWUgZXhwcl1dKSlcbiAgICAgICAgICBrZXlcbiAgICAgIHwgYGtlZXAgYXMgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IGBrZWVwIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICAgIHwgYG9taXRfbmlsIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGNudl9leHByXSB3aXRoXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gYm5kc1xuICAgICAgICAgICAgICB8IGFyZyAtPiAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgIGluXG4gICAgICAgICggcGF0dFxuICAgICAgICAsIFslZXhwclxuICAgICAgICAgIGxldCBibmRzID0gWyVlIGJuZHNdIGluXG4gICAgICAgICAgWyVlIGV4cHJdXSApXG4gICAgaW5cbiAgICBsZXQgaW5pdF9leHByID0gd3JhcF9leHByIFslZXhwciBibmRzXSBpblxuICAgIGxldCBwYXR0LCBleHByID0gTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDooW10sIGluaXRfZXhwcikgZmxkcyBpblxuICAgICggcHBhdF9yZWNvcmQgfmxvYyBwYXR0IENsb3NlZFxuICAgICwgWyVleHByXG4gICAgICBsZXQgYm5kcyA6IChzdHJpbmcgKiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQpIGxpc3QgPSBbXSBpblxuICAgICAgWyVlIGV4cHJdXSApXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiBzdW0gdHlwZXMgKilcblxuICBsZXQgYnJhbmNoX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCByZW5hbWluZyB+bG9jIGNvbnN0cl9saWQgY29uc3RyX3N0ciBhcmdzID1cbiAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IFBjc3RyX3JlY29yZCBsZHMgLT5cbiAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgbG9jXG4gICAgICAgICAgbGRzXG4gICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBMaXN0IFsgWyVlIGNuc3RyX2V4cHJdOyBgQXNzb2MgWyVlIGV4cHJdIF1dKVxuICAgICAgaW5cbiAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KSAtLT4gZXhwclxuICAgIHwgUGNzdHJfdHVwbGUgcGNkX2FyZ3MgLT5cbiAgICAgIChtYXRjaCBwY2RfYXJncyB3aXRoXG4gICAgICAgfCBbXSAtPlxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIE5vbmUgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdIF1dXG4gICAgICAgfCBhcmdzIC0+XG4gICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPVxuICAgICAgICAgICBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykpIGFyZ3NcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICAgaW5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KVxuICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXSlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0cHMgY2RzID1cbiAgICBGdW5fb3JfbWF0Y2guTWF0Y2hcbiAgICAgIChMaXN0Lm1hcCBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcub2ZfZ2FkdCB0cHMgY2QgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbGlkID0gTG9jYXRlZC5tYXAgbGlkZW50IGNkLnBjZF9uYW1lIGluXG4gICAgICAgICBsZXQgY29uc3RyX25hbWUgPVxuICAgICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgaW5cbiAgICAgICAgICAgTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgfD4gZXN0cmluZyB+bG9jOmNkLnBjZF9uYW1lLmxvY1xuICAgICAgICAgaW5cbiAgICAgICAgIGJyYW5jaF9zdW1cbiAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgcmVuYW1pbmdcbiAgICAgICAgICAgfmxvYzpjZC5wY2RfbG9jXG4gICAgICAgICAgIGNvbnN0cl9saWRcbiAgICAgICAgICAgY29uc3RyX25hbWVcbiAgICAgICAgICAgY2QucGNkX2FyZ3MpKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IHlvanNvbl9vZl9uaWwgbG9jID0gRnVuX29yX21hdGNoLkZ1biBbJWV4cHIgZnVuIF92IC0+IGFzc2VydCBmYWxzZV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBjZHMgLT5cbiAgICAgICAgICB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIChMaXN0Lm1hcCB0cHMgfmY6KGZ1biB4IC0+IHgudHh0KSkgY2RzXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPlxuICAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLmlkZW50aXR5IGluXG4gICAgICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBsZHNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBBc3NvYyBbJWUgZXhwcl1dKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTWF0Y2ggWyBwYXR0IC0tPiBleHByIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4geW9qc29uX29mX25pbCBsb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgUmVuYW1pbmcuaWRlbnRpdHkpIHR5KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19wcml2YXRlX2FsaWFzID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCwgdGQucHR5cGVfbWFuaWZlc3QsIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0LCBTb21lIF8sIFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBpc19wcml2YXRlX2FsaWFzXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogUmVwbGFjZSBhbGwgdHlwZSB2YXJpYWJsZSBieSBfIHRvIGF2b2lkIGdlbmVyYWxpemF0aW9uIHByb2JsZW1zICopXG4gICAgICAgIGxldCB0eV9zcmMgPVxuICAgICAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtYW5pZmVzdCA9XG4gICAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgIHwgU29tZSBtYW5pZmVzdCAtPiBtYW5pZmVzdFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInlvanNvbl9vZl90ZC9uby1tYW5pZmVzdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eV9kc3QgPSByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBtYW5pZmVzdCBpblxuICAgICAgICBsZXQgY29lcmNpb24gPSBbJWV4cHIgKHYgOiBbJXQgdHlfc3JjXSA6PiBbJXQgdHlfZHN0XSldIGluXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgY29lcmNpb24gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIGNvZXJjaW9uIG1hdGNoaW5nc11dKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aCByZWN1cnNpdmUgdHlwZXMgYnlcbiAgICAgICAgICAgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHZdIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzKVxuICAgIGluXG4gICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfdHlwZSB0ZCBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgbGV0IHJlY19mbGFnID1cbiAgICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICAgIHwgYFJlY3Vyc2l2ZSBfIC0+IFJlY3Vyc2l2ZVxuICAgICAgICB8IGBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIFsgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5IF1cbiAgOztcblxuICBsZXQgeW9qc29uX29mX3RkcyB+bG9jIH5wYXRoOl8gKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgIGxldCB0eXBlc19iZWluZ19kZWZpbmVkID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IGBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGBSZWN1cnNpdmVcbiAgICAgICAgICAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dCkpKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkKSBpblxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGZsZHMgPVxuICAgIGxldCBjb2xsIGxkID1cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgZXN0cmluZyB+bG9jIGtleVxuICAgIGluXG4gICAgZWxpc3QgfmxvYyAoTGlzdC5tYXAgfmY6Y29sbCBmbGRzKVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPiB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGxkc1xuICAgICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9vcGVuIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IHlvanNvbl9maWVsZHMgb25seSB3b3JrcyBvbiByZWNvcmRzXCJcbiAgICBpblxuICAgIGxldCB0eXAgPSBbJXR5cGU6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9maWVsZHNfb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX2ZpZWxkc19vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGRzIH5sb2MgfnBhdGg6XyAoXywgdGRzKSA9XG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIChMaXN0Lm1hcCB0ZHMgfmY6eW9qc29uX2ZpZWxkc19vZl90ZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICAoKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuICAoKiBIYW5kbGUgYmFja3RyYWNraW5nIHdoZW4gdmFyaWFudHMgZG8gbm90IG1hdGNoICopXG4gIGxldCBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwciA9XG4gICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXSAtLT4gZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBkZXBlbmRpbmcgb24gd2hldGhlciB0byBnZW5lcmF0ZSBhIG1hdGNoIGZvciB0aGUgbGFzdFxuICAgICBjYXNlIG9mIG1hdGNoaW5nIGEgdmFyaWFudCAqKVxuICBsZXQgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hlcyA9XG4gICAgbWF0Y2ggbWF0Y2hfbGFzdCwgbWF0Y2hlcyB3aXRoXG4gICAgfCB0cnVlLCBbIHsgcGNfbGhzID0gXzsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXVxuICAgIHwgXywgWyB7IHBjX2xocyA9IFslcGF0PyBfXTsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXSAtPiBleHByXG4gICAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXRvbV0gbWF0Y2hlc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIG1hbGZvcm1lZCBZb2pzb25zICopXG4gIGxldCBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzIGNhbGwgPVxuICAgIGxldCBjb2xsX3N0cnVjdHMgYWNjIChsb2MsIGxhYmVsKSA9XG4gICAgICAocHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAtLT5cbiAgICAgICBtYXRjaCBjYWxsIHdpdGhcbiAgICAgICB8IGBwdGFnX25vX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfbm9fYXJncyBfdHBfbG9jIF95b2pzb25dXG4gICAgICAgfCBgcHRhZ190YWtlc19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyBfeW9qc29uXSlcbiAgICAgIDo6IGFjY1xuICAgIGluXG4gICAgbGV0IGV4Y19ub192YXJpYW50X21hdGNoID1cbiAgICAgIFslcGF0PyBfXSAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKV1cbiAgICBpblxuICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGxfc3RydWN0cyB+aW5pdDpbIGV4Y19ub192YXJpYW50X21hdGNoIF0gcmV2X2Vsc1xuICA7O1xuXG4gICgqIFNwbGl0IHRoZSByb3cgZmllbGRzIG9mIGEgdmFyaWFudCB0eXBlIGludG8gbGlzdHMgb2YgYXRvbWljIHZhcmlhbnRzLFxuICAgICBzdHJ1Y3R1cmVkIHZhcmlhbnRzLCBhdG9taWMgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLFxuICAgICBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMuICopXG4gIGxldCBzcGxpdF9yb3dfZmllbGQgfmxvYyAoYXRvbXMsIHN0cnVjdHMsIGFpbmhzLCBzaW5ocykgcm93X2ZpZWxkID1cbiAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3dfZmllbGQgaW5cbiAgICBtYXRjaCByb3dfZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgdHBsID0gbG9jLCBsYWJlbCBpblxuICAgICAgdHBsIDo6IGF0b21zLCBzdHJ1Y3RzLCBgQSB0cGwgOjogYWluaHMsIHNpbmhzXG4gICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBhdG9tcywgKGxvYywgbGFiZWwpIDo6IHN0cnVjdHMsIGFpbmhzLCBgUyAobG9jLCBsYWJlbCwgdHAsIHJvd19maWVsZCkgOjogc2luaHNcbiAgICB8IFJpbmhlcml0IGluaCAtPlxuICAgICAgbGV0IGlpbmggPSBgSSBpbmggaW5cbiAgICAgIGF0b21zLCBzdHJ1Y3RzLCBpaW5oIDo6IGFpbmhzLCBpaW5oIDo6IHNpbmhzXG4gICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwic3BsaXRfcm93X2ZpZWxkLyZcIlxuICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgdHlwZV9jb25zdHJfb2ZfeW9qc29uID8oaW50ZXJuYWwgPSBmYWxzZSkgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGlkIGFyZ3MgfmxvYyB+ZjooZnVuIHMgLT5cbiAgICAgIGxldCBzID0gcyBeIFwiX29mX3lvanNvblwiIGluXG4gICAgICBpZiBpbnRlcm5hbCB0aGVuIFwiX19cIiBeIHMgXiBcIl9fXCIgZWxzZSBzKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlID8oaW50ZXJuYWwgPSBmYWxzZSkgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSB8IFsldHlwZTogX10gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoICh0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBvayAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSVvZl95b2pzb246IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIilcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biBhcmcgLT5cbiAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBhcmcpKVxuICAgICAgaW5cbiAgICAgIEZ1biAodHlwZV9jb25zdHJfb2ZfeW9qc29uIH5sb2MgfmludGVybmFsIGlkIGFyZ3MpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5mdW5fb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFtvZl95b2pzb25dIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGZwcyBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFslcCBwbGlzdCB+bG9jIHBhdHRzXV1cbiAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF90dXBsZSB+bG9jIHZhcnMpXG4gICAgOyBbJXBhdD8geW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICBbJWUgZWludCB+bG9jIG5dXG4gICAgICAgICAgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oID1cbiAgICBsZXQgbG9jID0gaW5oLnB0eXBfbG9jIGluXG4gICAgbGV0IGZ1bmNfZXhwciA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCBpblxuICAgIGxldCBhcHAgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgICBsZXQgZnVuX2V4cHIgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGZ1bmNfZXhwciBpblxuICAgICAgRnVuIFslZXhwciBbJWUgZnVuX2V4cHJdIF95b2pzb25dXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZXhjID1cbiAgICAgIGhhbmRsZV9ub192YXJpYW50X21hdGNoXG4gICAgICAgIGxvY1xuICAgICAgICAoaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcylcbiAgICBpblxuICAgIGxldCBuZXdfb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBbIFslcGF0PyBfXVxuICAgICAgICAtLT4gcGV4cF90cnlcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICAoWyVlIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgYXBwXVxuICAgICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgICAgIG1hdGNoX2V4Y1xuICAgICAgXVxuICAgIGluXG4gICAgbmV3X290aGVyX21hdGNoZXMsIHRydWVcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBhdG9taWMgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbSB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfYXRvbXNfaW5ocyB+cmV2X3N0cnVjdHMgPVxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBBIChsb2MsIGxhYmVsKSAtPlxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgICAgIC0tPiBwZXhwX3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPVxuICAgICAgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfc3RydWN0cyBgcHRhZ190YWtlc19hcmdzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfYXRvbXNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X2F0b21zX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX2F0b21zX2luaHNcblxuICAoKiBWYXJpYW50IGNvbnZlcnNpb25zICopXG5cbiAgKCogTWF0Y2ggYXJndW1lbnRzIG9mIGNvbnN0cnVjdG9ycyAodmFyaWFudHMgb3Igc3VtIHR5cGVzKSAqKVxuICBhbmQgbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50IGxhYmVsIHRwcyA9XG4gICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgbGV0IGNuc3RyIHZhcnNfZXhwciA9XG4gICAgICBpZiBpc192YXJpYW50XG4gICAgICB0aGVuIHBleHBfdmFyaWFudCB+bG9jIGNuc3RyX2xhYmVsIChTb21lIHZhcnNfZXhwcilcbiAgICAgIGVsc2UgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgdmFyc19leHByKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgICAgbGV0IGdvb2RfYXJnX21hdGNoID1cbiAgICAgICAgbGV0IHZhcnNfZXhwciA9XG4gICAgICAgICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgICAgICAgfCBbIHZhcl9leHByIF0gLT4gdmFyX2V4cHJcbiAgICAgICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHZhcnNcbiAgICAgICAgaW5cbiAgICAgICAgY25zdHIgdmFyc19leHByXG4gICAgICBpblxuICAgICAgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaFxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBtYXRjaCB5b2pzb25fYXJncyB3aXRoXG4gICAgICB8IFslcCBwbGlzdCB+bG9jIHBhdHRzXSAtPiBbJWUgcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZ29vZF9hcmdfbWF0Y2hdXG4gICAgICB8IF8gLT5cbiAgICAgICAgWyVlXG4gICAgICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBzdHJ1Y3R1cmVkIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICA9XG4gICAgbGV0IGhhc19zdHJ1Y3RzX3JlZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBTIChsb2MsIGxhYmVsLCB0cCwgX3JvdykgLT5cbiAgICAgICAgaGFzX3N0cnVjdHNfcmVmIDo9IHRydWU7XG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbWtfY25zdHJfYXJnc19tYXRjaFxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5sb2M6dHAucHR5cF9sb2NcbiAgICAgICAgICAgIH5pc192YXJpYW50OnRydWVcbiAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIFslcGF0PyBbJXAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIGFzIF90YWddIC0tPiBleHByXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPSBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9hdG9tcyBgcHRhZ19ub19hcmdzIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdHNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X3N0cnVjdHNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfc3RydWN0c19pbmhzLCAhaGFzX3N0cnVjdHNfcmVmXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgYXRvbWljIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzIChpLmUuIG5vdFxuICAgICBpbmNsdWRlZCB2YXJpYW50IHR5cGVzKSAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkX2xpc3QgPVxuICAgIGxldCByZXZfYXRvbXMsIHJldl9zdHJ1Y3RzLCByZXZfYXRvbXNfaW5ocywgcmV2X3N0cnVjdHNfaW5ocyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjooc3BsaXRfcm93X2ZpZWxkIH5sb2MpIH5pbml0OihbXSwgW10sIFtdLCBbXSkgcm93X2ZpZWxkX2xpc3RcbiAgICBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3QsIGhhc19zdHJ1Y3RzID1cbiAgICAgIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgIGluXG4gICAgbGV0IG1heWJlX3lvanNvbl9hcmdzX3BhdHQgPSBpZiBoYXNfc3RydWN0cyB0aGVuIFslcGF0PyB5b2pzb25fYXJnc10gZWxzZSBbJXBhdD8gX10gaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgYXRvbSBdIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWtfdmFyaWFudF9tYXRjaF9hdG9tXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmdWxsX3R5cGVcbiAgICAgICAgICAgIH5yZXZfYXRvbXNfaW5oc1xuICAgICAgICAgICAgfnJldl9zdHJ1Y3RzXG4gICAgOyBbJXBhdD8gYExpc3QgKGBTdHJpbmcgYXRvbSA6OiBbJXAgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dF0pIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWF0Y2hfc3RydWN0XG4gICAgOyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgdmFyaWFudHMgKilcbiAgYW5kIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcykgPVxuICAgIGxldCBpc19jb250YWluZWQsIGZ1bGxfdHlwZSA9XG4gICAgICBtYXRjaCBmdWxsX3R5cGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIHB0eXBfdmFyaWFudCB+bG9jIHJvd19maWVsZHMgQ2xvc2VkIE5vbmVcbiAgICAgIHwgU29tZSBmdWxsX3R5cGUgLT4gZmFsc2UsIGZ1bGxfdHlwZVxuICAgIGluXG4gICAgbGV0IHRvcF9tYXRjaCA9XG4gICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgIHwgeyBwcmZfZGVzYyA9IFJpbmhlcml0IGluaDsgXyB9IDo6IHJlc3QgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGluaCByb3dfZmllbGRzID1cbiAgICAgICAgICBsZXQgY2FsbCA9XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgKFslZVxuICAgICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByXG4gICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oKV1cbiAgICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGNhbGxcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgICAgICBtYXRjaCBoLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCBpbmggLT4gbG9vcCBpbmggdFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcmZ0YWdfbWF0Y2hlcyA9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gcmZ0YWdfbWF0Y2hlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBleHBfdHJ5IH5sb2MgY2FsbCAoaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIpXG4gICAgICAgIGluXG4gICAgICAgIFsgWyVwYXQ/IHlvanNvbl0gLS0+IGxvb3AgaW5oIHJlc3QgXVxuICAgICAgfCBfIDo6IF8gLT4gaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIGltcG9zc2libGUgKilcbiAgICBpblxuICAgIGlmIGlzX2NvbnRhaW5lZFxuICAgIHRoZW5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICB0cnkgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSB0b3BfbWF0Y2hdIHdpdGhcbiAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgZWxzZSBNYXRjaCB0b3BfbWF0Y2hcblxuICBhbmQgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgIH5sb2NcbiAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICBpblxuICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgIGluXG4gICAgbWF0Y2ggdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHAgd2l0aFxuICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgIE1hdGNoXG4gICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBleHRyYWN0aW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgPVxuICAgIGxldCByZWMgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpbml0cywgbm9fYXJncywgYXJnc1xuICAgICAgfCBsZCA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgbGV0IGtleSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpubSAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKSBpblxuICAgICAgICAobWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkLCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIHRwKSwgXyB8IChOb25lIHwgU29tZSAoYGRlZmF1bHQgXykpLCB0cCAtPlxuICAgICAgICAgICBsZXQgaW5pdHMgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZV0gOjogaW5pdHMgaW5cbiAgICAgICAgICAgbGV0IHVucm9sbGVkID1cbiAgICAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBbJWV4cHIgX2ZpZWxkX3lvanNvbl1cbiAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgICAgIChwc3RyaW5nIH5sb2Mga2V5XG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWUgPSBbJWUgdW5yb2xsZWRdIGluXG4gICAgICAgICAgICAgICAgICBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXVxuICAgICAgICAgICAgICAgICAgOj0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBmdmFsdWVcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlcyA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlc10pXG4gICAgICAgICAgICAgOjogYXJnc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyBtb3JlX2ZsZHMpXG4gICAgaW5cbiAgICBsZXQgaGFuZGxlX2V4dHJhID1cbiAgICAgIFsgKFslcGF0PyBfXVxuICAgICAgICAgLS0+XG4gICAgICAgICBpZiBhbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgIHRoZW4gWyVleHByICgpXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICBpZiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApXG4gICAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICB0aGVuIGV4dHJhIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYVxuICAgICAgICAgICAgIGVsc2UgKCldKVxuICAgICAgXVxuICAgIGluXG4gICAgbG9vcCBbXSBoYW5kbGVfZXh0cmEgaGFuZGxlX2V4dHJhIChMaXN0LnJldiBmbGRzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGhhc19ub25vcHRfZmllbGRzID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMgPVxuICAgICAgbGV0IHJlYyBsb29wICgocmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBsb2MgfTsgXyB9IGFzIGxkKSA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgICBsZXQgZmxkID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1dIGluXG4gICAgICAgICAgbGV0IG1rX2RlZmF1bHQgbG9jID1cbiAgICAgICAgICAgIGJpX2xzdCwgWyVwYXQ/IFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXSA6OiBnb29kX3BhdHRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgXyB8IGB5b2pzb25fb3B0aW9uIF8pIC0+IG1rX2RlZmF1bHQgbG9jXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaGFzX25vbm9wdF9maWVsZHMgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgKCBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgWyVlIGZsZF0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAsIFslZSBlc3RyaW5nIH5sb2Mgbm1dXVxuICAgICAgICAgICAgICAgIDo6IGJpX2xzdFxuICAgICAgICAgICAgICAsIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXVxuICAgICAgICAgICAgICAgIDo6IGdvb2RfcGF0dHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjYyA9IFslZXhwciBbJWUgZmxkXV0gOjogcmVzX3RwbHMsIG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzIGluXG4gICAgICAgICAgbG9vcCBhY2MgbW9yZV9mbGRzXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgbG9vcCAoW10sIFtdLCBbXSkgKExpc3QucmV2IGZsZHMpXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZ29vZF9leHByID1cbiAgICAgIGlmIGhhc19wb2x5XG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNudnQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IF8gfTsgXyB9IC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMgd2l0aFxuICAgICAgICB8IFsgbWF0Y2hfZ29vZF9leHByIF0gLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIHwgbWF0Y2hfZ29vZF9leHBycyAtPiBwZXhwX3R1cGxlIH5sb2MgbWF0Y2hfZ29vZF9leHBycylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY252dCBsZCA9XG4gICAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IGRlZmF1bHQpIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gWyVlIGRlZmF1bHRdXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT4gdl1cbiAgICAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gXykgfCBOb25lIC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBubSwgdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgd3JhcF9leHByIChwZXhwX3JlY29yZCB+bG9jIChMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMpIE5vbmUpKVxuICAgIGluXG4gICAgbGV0IGV4cHIsIHBhdHQgPVxuICAgICAgbWF0Y2ggcmVzX3RwbHMsIGdvb2RfcGF0dHMgd2l0aFxuICAgICAgfCBbIHJlc19leHByIF0sIFsgcmVzX3BhdHQgXSAtPiByZXNfZXhwciwgcmVzX3BhdHRcbiAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgcmVzX3RwbHMsIHBwYXRfdHVwbGUgfmxvYyBnb29kX3BhdHRzXG4gICAgaW5cbiAgICBpZiAhaGFzX25vbm9wdF9maWVsZHNcbiAgICB0aGVuXG4gICAgICBwZXhwX21hdGNoXG4gICAgICAgIH5sb2NcbiAgICAgICAgZXhwclxuICAgICAgICBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICA7IFslcGF0PyBfXVxuICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICBbJWUgZWxpc3QgfmxvYyBiaV9sc3RdXVxuICAgICAgICBdXG4gICAgZWxzZSBwZXhwX21hdGNoIH5sb2MgZXhwciBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgY29udmVydGluZyByZWNvcmQgZmllbGRzICopXG5cbiAgbGV0IG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgZXhwcl9yZWZfaW5pdHMsIF9tY19ub19hcmdzX2ZpZWxkcywgbWNfZmllbGRzX3dpdGhfYXJncyA9XG4gICAgICBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpXG4gICAgaW5cbiAgICBsZXQgZmllbGRfcmVmcyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAgIGZsZHNcbiAgICAgICAgZXhwcl9yZWZfaW5pdHNcbiAgICAgICAgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IGluaXQgLT5cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHZhciB+bG9jIChuYW1lIF4gXCJfZmllbGRcIikpIH5leHByOlslZXhwciByZWYgWyVlIGluaXRdXSlcbiAgICBpblxuICAgIHBleHBfbGV0XG4gICAgICB+bG9jXG4gICAgICBOb25yZWN1cnNpdmVcbiAgICAgIChmaWVsZF9yZWZzXG4gICAgICAgQCBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBkdXBsaWNhdGVzXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgOyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZXh0cmFdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICBdKVxuICAgICAgWyVleHByXG4gICAgICAgIGxldCByZWMgaXRlciA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBwZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyBbJXBhdD8gKGZpZWxkX25hbWUsIF9maWVsZF95b2pzb24pIDo6IHRhaWxdXG4gICAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgICAgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZmllbGRfbmFtZV0gbWNfZmllbGRzX3dpdGhfYXJnc107XG4gICAgICAgICAgICAgICAgICBpdGVyIHRhaWxdXG4gICAgICAgICAgICAgIDsgWyVwYXQ/IFtdXSAtLT4gWyVleHByICgpXVxuICAgICAgICAgICAgICBdXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIGZpZWxkX3lvanNvbnM7XG4gICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcyB3aXRoXG4gICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcylcbiAgICAgICAgICAgIHlvanNvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgKG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEgd2l0aFxuICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEpXG4gICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgfCBbXSAtPiBbJWUgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwcl0pXVxuICA7O1xuXG4gIGxldCBpc19wb2x5IChfLCBmbGRzKSA9XG4gICAgTGlzdC5leGlzdHMgZmxkcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgeyBwbGRfdHlwZSA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfTsgXyB9IC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICBsb2NcbiAgICAgICAgZmxkc1xuICAgICAgICB+d3JhcF9leHByXG4gICAgPVxuICAgIGxldCBoYXNfcG9seSA9IGlzX3BvbHkgKGxvYywgZmxkcykgaW5cbiAgICBsZXQgY252X2ZpZWxkcyA9XG4gICAgICBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwclxuICAgIGluXG4gICAgaWYgaGFzX3BvbHlcbiAgICB0aGVuIChcbiAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgbGV0IHBhdHMgPVxuICAgICAgICAgIExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+IHB2YXIgfmxvYyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwYXRzIHdpdGhcbiAgICAgICAgfCBbIHBhdCBdIC0+IHBhdFxuICAgICAgICB8IHBhdHMgLT4gcHBhdF90dXBsZSB+bG9jIHBhdHNcbiAgICAgIGluXG4gICAgICBsZXQgcmVjb3JkX2RlZiA9XG4gICAgICAgIHdyYXBfZXhwclxuICAgICAgICAgIChwZXhwX3JlY29yZFxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAoTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT5cbiAgICAgICAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKSlcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgaW5cbiAgICAgIHBleHBfbGV0XG4gICAgICAgIH5sb2NcbiAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGF0dCB+ZXhwcjpjbnZfZmllbGRzIF1cbiAgICAgICAgcmVjb3JkX2RlZilcbiAgICBlbHNlIGNudl9maWVsZHNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciByZWNvcmRzICopXG4gIGxldCByZWNvcmRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgTWF0Y2hcbiAgICAgIFsgWyVwYXQ/IGBBc3NvYyBmaWVsZF95b2pzb25zIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGZsZHNcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIHggLT4geClcbiAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b21cbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIF1cbiAgOztcblxuICAoKiBTdW0gdHlwZSBjb252ZXJzaW9ucyAqKVxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB3ZWxsLWZvcm1lZCBZb2pzb25zIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3JlY29yZCBmaWVsZHM7IF8gfSAtPlxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX2NkIGNkKSlcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZSAtPlxuICAgICAgICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSBlKSlcbiAgICAgICAgaW5cbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCBbIGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZyk7IGBBc3NvYyBmaWVsZF95b2pzb25zIF1cbiAgICAgICAgICBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBleHByXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIF1dXG4gICAgICAgIC0tPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSBOb25lXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfIGFzIHRwcyk7IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgKGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZykgOjogeW9qc29uX2FyZ3MpIGFzIF95b2pzb25dXG4gICAgICAgIC0tPiBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQ6ZmFsc2UgbGFiZWwgdHBzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIG1hbGZvcm1lZCBZb2pzb25zIHdpdGggZ29vZCB0YWdzXG4gICAgIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19iYWRfc3VtX21hdGNoZXMgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gOjogXykgYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIF90cF9sb2MgeW9qc29uXVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXykgfCBQY3N0cl9yZWNvcmQgXzsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIF90cF9sb2MgeW9qc29uXSlcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBzdW0gdHlwZXMgKilcbiAgbGV0IHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgbGV0IGFsdHMgPVxuICAgICAgTGlzdC5tYXAgYWx0cyB+ZjooZnVuIGNkIC0+IGNkLCBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QpXG4gICAgaW5cbiAgICBNYXRjaFxuICAgICAgKExpc3QuY29uY2F0XG4gICAgICAgICBbIG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cylcbiAgICAgICAgIDsgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGFsdHMpXG4gICAgICAgICA7IFsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICAgICAgICAgXVxuICAgICAgICAgXSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCBuaWxfb2ZfeW9qc29uIGxvYyA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBGdW5cbiAgICAgIFslZXhwclxuICAgICAgICBmdW4geW9qc29uIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBfdHBfbG9jIHlvanNvbl1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYzpfIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGZ1bGxfdHlwZSA9XG4gICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgIGluXG4gICAgbGV0IGlzX3ByaXZhdGUgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICB8IFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgfCBQdWJsaWMgLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIGlzX3ByaXZhdGVcbiAgICB0aGVuIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwib2ZfeW9qc29uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgdHlwZVwiO1xuICAgIGxldCBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb24gPVxuICAgICAgbWF0Y2ggaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzpmYWxzZSB3aXRoXG4gICAgICB8IGBEZWZpbml0ZWx5IC0+IHRydWVcbiAgICAgIHwgYE1heWJlIC0+IHBvbHlcbiAgICAgIHwgYFN1cmVseV9ub3QgLT5cbiAgICAgICAgaWYgcG9seVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICBcInlvanNvbl9wb2x5IGFubm90YXRpb24gb24gYSB0eXBlIHRoYXQgaXMgc3VyZWx5IG5vdCBhIHBvbHltb3JwaGljIHZhcmlhbnRcIjtcbiAgICAgICAgZmFsc2VcbiAgICBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhbHRzIC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKHRkLnB0eXBlX2xvYywgYWx0cylcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGJscyAtPlxuICAgICAgICAgIHJlY29yZF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX3RkIHRkKSlcbiAgICAgICAgICAgIChsb2MsIGxibHMpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBuaWxfb2ZfeW9qc29uIHRkLnB0eXBlX2xvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgICAgICB0eXBlX29mX3lvanNvblxuICAgICAgICAgICAgICAgfmZ1bGxfdHlwZVxuICAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgIH5pbnRlcm5hbDpjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHR5KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGhcbiAgICAgICAgIHJlY3Vyc2l2ZSB0eXBlcyBieSBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHQgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHRdIF1dXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX25hbWUgPSB0eXBlX25hbWUgXiBcIl9vZl95b2pzb25cIiBpblxuICAgIGxldCBpbnRlcm5hbF9uYW1lID0gXCJfX1wiIF4gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uX19cIiBpblxuICAgIGxldCBhcmdfcGF0dHMsIGFyZ19leHBycyA9XG4gICAgICBMaXN0LnVuemlwXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgbGV0IG5hbWUgPSBcIl9vZl9cIiBeIHRwLnR4dCBpblxuICAgICAgICAgICAgIHB2YXIgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSlcbiAgICAgICAgICAgdHBzKVxuICAgIGluXG4gICAgbGV0IGJpbmRfdHBfbG9jX2luID1cbiAgICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMuJXNcIiBwYXRoIHR5cGVfbmFtZSBpblxuICAgICAgZnVuIGUgLT5cbiAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPlxuICAgICAgICAgICgqIHdlIGRlZmluaXRlbHkgZG9uJ3QgdXNlIHRoZSBzdHJpbmcsIHNvIGNsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgY29kZSBhIGJpdCAqKVxuICAgICAgICAgIGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgICAgICBbJWUgZV1dXG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfZnVuX2JvZHkgPVxuICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICB0aGVuXG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoYmluZF90cF9sb2NfaW5cbiAgICAgICAgICAgICAoZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHkpKSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGxldCBuZWVkX3RwX2xvYywgYm9keV9iZWxvd19sYW1iZGFzID1cbiAgICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBub192YXJpYW50X21hdGNoX21jID1cbiAgICAgICAgICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF1cbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGludGVybmFsX2NhbGwgPVxuICAgICAgICAgICAgbGV0IGludGVybmFsX2V4cHIgPSBldmFyIH5sb2MgaW50ZXJuYWxfbmFtZSBpblxuICAgICAgICAgICAgZWFwcGx5IH5sb2MgaW50ZXJuYWxfZXhwciAoYXJnX2V4cHJzIEAgWyBbJWV4cHIgeW9qc29uXSBdKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyeV93aXRoID0gcGV4cF90cnkgfmxvYyBpbnRlcm5hbF9jYWxsIG5vX3ZhcmlhbnRfbWF0Y2hfbWMgaW5cbiAgICAgICAgICBmYWxzZSwgYmluZF90cF9sb2NfaW4gWyVleHByIGZ1biB5b2pzb24gLT4gWyVlIHRyeV93aXRoXV0pXG4gICAgICAgIGVsc2UgdHJ1ZSwgYm9keVxuICAgICAgaW5cbiAgICAgIGxldCBib2R5X3dpdGhfbGFtYmRhcyA9XG4gICAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlY1xuICAgICAgICAgIH5yZWNfZmxhZ1xuICAgICAgICAgIChlYWJzdHJhY3QgfmxvYyBhcmdfcGF0dHMgYm9keV9iZWxvd19sYW1iZGFzKVxuICAgICAgaW5cbiAgICAgIGlmIG5lZWRfdHBfbG9jIHRoZW4gYmluZF90cF9sb2NfaW4gYm9keV93aXRoX2xhbWJkYXMgZWxzZSBib2R5X3dpdGhfbGFtYmRhc1xuICAgIGluXG4gICAgbGV0IG1rX2JpbmRpbmcgZnVuY19uYW1lIGJvZHkgPVxuICAgICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfdHlwZSB0ZCBpblxuICAgICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfYmluZGluZ3MgPVxuICAgICAgbWF0Y2ggaW50ZXJuYWxfZnVuX2JvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgYm9keSAtPiBbIG1rX2JpbmRpbmcgaW50ZXJuYWxfbmFtZSBib2R5IF1cbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9iaW5kaW5nID0gbWtfYmluZGluZyBleHRlcm5hbF9uYW1lIGV4dGVybmFsX2Z1bl9ib2R5IGluXG4gICAgaW50ZXJuYWxfYmluZGluZ3MsIFsgZXh0ZXJuYWxfYmluZGluZyBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcbiAgbGV0IHRkc19vZl95b2pzb24gfmxvYyB+cG9seSB+cGF0aCAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCB0eXBldmFyX2hhbmRsaW5nID0gYG9rIGluXG4gICAgbGV0IHNpbmdsZXRvbiA9XG4gICAgICBtYXRjaCB0ZHMgd2l0aFxuICAgICAgfCBbIF8gXSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHNpbmdsZXRvblxuICAgIHRoZW4gKFxuICAgICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICAgIGluXG4gICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIFJlY3Vyc2l2ZSBiaW5kaW5nc1xuICAgICAgfCBOb25yZWN1cnNpdmUgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGludGVybmFsc1xuICAgICAgICAgIEAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGV4dGVybmFscykpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wb2x5IH5sb2MgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICBpblxuICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3MpXG4gIDs7XG5cbiAgbGV0IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wYXRoIGN0eXAgPVxuICAgIGxldCBsb2MgPSB7IGN0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgZnAgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBjdHlwIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIFslZSBmdW5fZXhwcl0geW9qc29uXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGZ1bGxfdHlwZV9uYW1lID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgbGluZSAlaTogJXNcIlxuICAgICAgICBwYXRoXG4gICAgICAgIGxvYy5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAgICAgKHN0cmluZ19vZl9jb3JlX3R5cGUgY3R5cClcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgIFslZSBib2R5XV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX2V4dGVuc2lvbiB0eSA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi50eXBlX29mX3lvanNvbl9vZiB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gdHlcbiAgOztcblxuICBsZXQgY29yZV90eXBlIHR5ID1cbiAgICBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOmBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciB0eVxuICAgIHw+IEZ1bl9vcl9tYXRjaC5leHByIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWdcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90ZHNcbmVuZFxuXG5tb2R1bGUgWW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzLnlvanNvbl9maWVsZHNfb2ZfdGRzXG5lbmRcblxubW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl9vZl95b2pzb24gfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSA9XG4gICAgU3RyX2dlbmVyYXRlX29mX3lvanNvbi50eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHJcbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX29mX3lvanNvbi50ZHNfb2ZfeW9qc29uXG5lbmRcblxubW9kdWxlIFNpZ195b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IG1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzID1cbiAgICBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzXG4gICAgQCBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZyB+cG9seTpmYWxzZSB+bG9jIH5wYXRoIGRlY2xzXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgfmxvYyB+cGF0aCAoKF9yZiwgdGRzKSBhcyBkZWNscykgPVxuICAgIG1hdGNoXG4gICAgICBta19uYW1lZF9zaWdcbiAgICAgICAgfmxvY1xuICAgICAgICB+c2dfbmFtZTpcIlBweF95b2pzb25fY29udl9saWIuWW9qc29uYWJsZS5TXCJcbiAgICAgICAgfmhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50OmZhbHNlXG4gICAgICAgIHRkc1xuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5jbHVkZV9pbmZvcyAtPiBbIHBzaWdfaW5jbHVkZSB+bG9jIGluY2x1ZGVfaW5mb3MgXVxuICAgIHwgTm9uZSAtPiBta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc29vX3J1bnRpbWUuUnVudGltZV92ZXJzaW9uICopXG5tb2R1bGUgUnVudGltZV92ZXJzaW9uID0gSnNvb19ydW50aW1lX19SdW50aW1lX3ZlcnNpb25cblxubW9kdWxlIEpzb29fcnVudGltZV9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCJtb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgdHlwZSAnYSBqc19hcnJheSA9IHRcblxuICB0eXBlICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2sgPSB0XG5cbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuICBleHRlcm5hbCBib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuICBleHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG4gIGV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgaW50MzJfb2ZfbnVtYmVyIDogdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCBuYXRpdmVpbnRfb2ZfbnVtYmVyIDogdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCB0eXBlb2YgOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuICBleHRlcm5hbCBpbnN0YW5jZW9mIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBleHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBleHRlcm5hbCBkZWxldGUgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gIGV4dGVybmFsIGNhbGwgOiB0IC0+IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gIGV4dGVybmFsIGZ1bl9jYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gIGV4dGVybmFsIG5ld19vYmogOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG4gIGV4dGVybmFsIG5ld19vYmpfYXJyIDogdCAtPiB0IGpzX2FycmF5IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICh0IGpzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIHQganNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAoJ2IgLT4gdCBqc19hcnJheSAtPiAnYSkgLT4gKCdiLCB0IGpzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIHR5cGUgcmVkaXJlY3Rpb25cblxuICBleHRlcm5hbCByZWRpcmVjdF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gaW50bzpvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvblxuICAgID0gXCJjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3RcIlxuXG4gIGV4dGVybmFsIHJlc3RvcmVfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHJlZGlyZWN0aW9uIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmVcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YXNTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YXNTY3JpcHQgZXJyb3IgaXMgYWxyZWFkeSBhdHRhY2hlZCwgaXQgd2lsbCBkbyBub3RoaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0b1xuICAgIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBKYXZhU2NyaXB0IHN0YWNrIHRyYWNlcy5cblxuICAgIEF0dGFjaGluZyBKYXZhc1NjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgc3RyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGxldCByYWlzZV8gOiB0IC0+ICdhID0gSnMuanNfZXhwciBcIihmdW5jdGlvbiAoZXhuKSB7IHRocm93IGV4biB9KVwiXG5cbiAgZXh0ZXJuYWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uID0gXCJjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG4gPSBcImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXCJcbmVuZFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMi02MFwiXVxuXG5tb2R1bGUgRm9yX2NvbXBhdGliaWxpdHlfb25seSA9IHN0cnVjdFxuICAoKiBBZGQgcHJpbWl0aXZlcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiBFeGlzdGluZyB1c2VycyBtaWdodFxuICAgICBkZXBlbmQgb24gaXQgKGUuZy4gZ2VuX2pzX2FwaSksIHdlIGRvbnQgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2VzIG1pc3NpbmcgcHJpbWl0aXZlcy4gKilcblxuICBleHRlcm5hbCBjYW1sX2pzX2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IEpzLnQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19ieXRlX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF9vZl9qc19hcnJheSA6ICdhIEpzLmpzX2FycmF5IC0+ICdhIGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X3RvX2pzX2FycmF5IDogJ2EgbGlzdCAtPiAnYSBKcy5qc19hcnJheSA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuQ1NTICopXG5tb2R1bGUgQ1NTID0gSnNfb2Zfb2NhbWxfX0NTU1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb20gKilcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbF9fRG9tXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9ldmVudHMgKilcbm1vZHVsZSBEb21fZXZlbnRzID0gSnNfb2Zfb2NhbWxfX0RvbV9ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2h0bWwgKilcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sX19Eb21faHRtbFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fc3ZnICopXG5tb2R1bGUgRG9tX3N2ZyA9IEpzX29mX29jYW1sX19Eb21fc3ZnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkV2ZW50U291cmNlICopXG5tb2R1bGUgRXZlbnRTb3VyY2UgPSBKc19vZl9vY2FtbF9fRXZlbnRTb3VyY2VcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlsZSAqKVxubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbF9fRmlsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaXJlYnVnICopXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sX19GaXJlYnVnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZvcm0gKilcbm1vZHVsZSBGb3JtID0gSnNfb2Zfb2NhbWxfX0Zvcm1cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuR2VvbG9jYXRpb24gKilcbm1vZHVsZSBHZW9sb2NhdGlvbiA9IEpzX29mX29jYW1sX19HZW9sb2NhdGlvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGVyc2VjdGlvbk9ic2VydmVyICopXG5tb2R1bGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50bCAqKVxubW9kdWxlIEludGwgPSBKc19vZl9vY2FtbF9fSW50bFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5KcyAqKVxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWxfX0pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzb24gKilcbm1vZHVsZSBKc29uID0gSnNfb2Zfb2NhbWxfX0pzb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnN0YWJsZSAqKVxubW9kdWxlIEpzdGFibGUgPSBKc19vZl9vY2FtbF9fSnN0YWJsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5MaWJfdmVyc2lvbiAqKVxubW9kdWxlIExpYl92ZXJzaW9uID0gSnNfb2Zfb2NhbWxfX0xpYl92ZXJzaW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLk11dGF0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBNdXRhdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX011dGF0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUGVyZm9ybWFuY2VPYnNlcnZlciAqKVxubW9kdWxlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZWdleHAgKilcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbF9fUmVnZXhwXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlc2l6ZU9ic2VydmVyICopXG5tb2R1bGUgUmVzaXplT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUmVzaXplT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuU3lzX2pzICopXG5tb2R1bGUgU3lzX2pzID0gSnNfb2Zfb2NhbWxfX1N5c19qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5UeXBlZF9hcnJheSAqKVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWxfX1R5cGVkX2FycmF5XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlVybCAqKVxubW9kdWxlIFVybCA9IEpzX29mX29jYW1sX19VcmxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViR0wgKilcbm1vZHVsZSBXZWJHTCA9IEpzX29mX29jYW1sX19XZWJHTFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJTb2NrZXRzICopXG5tb2R1bGUgV2ViU29ja2V0cyA9IEpzX29mX29jYW1sX19XZWJTb2NrZXRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldvcmtlciAqKVxubW9kdWxlIFdvcmtlciA9IEpzX29mX29jYW1sX19Xb3JrZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuWG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX19YbWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGxvY2FsIG1vZHVsZSBbSnNdIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBwcHhfanMgZXh0ZW5zaW9uIHdvcmsgd2l0aGluIHRoYXQgZmlsZS4gKilcbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG5cbiAgdHlwZSAoLSdhLCArJ2IpIG1ldGhfY2FsbGJhY2tcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgdHlwZSB0b3BcblxuICAgIHR5cGUgYW55ID0gdG9wIHRcblxuICAgIHR5cGUgYW55X2pzX2FycmF5ID0gYW55XG5cbiAgICBleHRlcm5hbCBpbmplY3QgOiAnYSAtPiBhbnkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBjb2VyY2UgOiBfIHQgLT4gXyB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgZ2V0IDogJ2EgLT4gJ2IgLT4gJ2MgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldCA6ICdhIC0+ICdiIC0+ICdjIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICAgIGV4dGVybmFsIGRlbGV0ZSA6ICdhIC0+ICdiIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICAgIGV4dGVybmFsIGNhbGwgOiAnYSAtPiAnYiAtPiBhbnkgYXJyYXkgLT4gJ2MgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBmdW5fY2FsbCA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGwgOiAnYSAtPiBzdHJpbmcgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqX2FyciA6ICdhIC0+IGFueV9qc19hcnJheSAtPiAnYiA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogYW55KSBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICAgIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICAgIGxldCBnbG9iYWwgPSBwdXJlX2pzX2V4cHIgXCJnbG9iYWxUaGlzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoYW55X2pzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIGFueV9qc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgICgnYiAtPiBhbnlfanNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgYW55X2pzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgICgqIERFUFJFQ0FURUQgKilcbiAgICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuICBlbmRcblxuICAoKioqKilcblxuICB0eXBlICdhIG9wdCA9ICdhXG5cbiAgdHlwZSAnYSBvcHRkZWYgPSAnYVxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgbGV0IG51bGwgOiAnYSBvcHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG5cbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIG9wdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgdW5kZWZpbmVkIDogJ2Egb3B0ZGVmID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2Egb3B0ZGVmID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSB0eXBlIE9QVCA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVtcHR5IDogJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuXG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgICB2YWwgdGVzdCA6ICdhIHQgLT4gYm9vbFxuXG4gICAgdmFsIGl0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgY2FzZSA6ICdhIHQgLT4gKHVuaXQgLT4gJ2IpIC0+ICgnYSAtPiAnYikgLT4gJ2JcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYVxuXG4gICAgdmFsIG9wdGlvbiA6ICdhIG9wdGlvbiAtPiAnYSB0XG5cbiAgICB2YWwgdG9fb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb25cblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdCA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdFxuXG4gICAgbGV0IGVtcHR5ID0gbnVsbFxuXG4gICAgbGV0IHJldHVybiA9IHNvbWVcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChlcXVhbHMgeCBudWxsKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChlcXVhbHMgeCBudWxsKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRkZWYgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHRkZWYgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRkZWZcblxuICAgIGxldCBlbXB0eSA9IHVuZGVmaW5lZFxuXG4gICAgbGV0IHJldHVybiA9IGRlZlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIGxldCBjb2VyY2UgeCBmIGcgPSBPcHQuZ2V0IChmIHgpIChmdW4gKCkgLT4gZyB4KVxuXG4gIGxldCBjb2VyY2Vfb3B0IHggZiBnID0gT3B0LmdldCAoT3B0LmJpbmQgeCBmKSAoZnVuICgpIC0+IGcgeClcblxuICAoKioqKilcblxuICB0eXBlICsnYSBtZXRoXG5cbiAgdHlwZSArJ2EgZ2VuX3Byb3BcblxuICB0eXBlICdhIHJlYWRvbmx5X3Byb3AgPSA8IGdldCA6ICdhID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHdyaXRlb25seV9wcm9wID0gPCBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHByb3AgPSA8IGdldCA6ICdhIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBvcHRkZWZfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSArJ2EgY29uc3RyXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBjYWxsYmFjayA9ICh1bml0LCAnYSkgbWV0aF9jYWxsYmFja1xuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gICgqKioqKVxuXG4gIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgKCoqKiopXG5cbiAgbGV0IF90cnVlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInRydWVcIlxuXG4gIGxldCBfZmFsc2UgPSBVbnNhZmUucHVyZV9qc19leHByIFwiZmFsc2VcIlxuXG4gIHR5cGUgbWF0Y2hfcmVzdWx0X2hhbmRsZVxuXG4gIHR5cGUgc3RyaW5nX2FycmF5XG5cbiAgdHlwZSBudW1iZXJfdCA9IGZsb2F0XG5cbiAgY2xhc3MgdHlwZSBudW1iZXIgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmdfcmFkaXggOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRml4ZWQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbF9kaWdpdHMgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvUHJlY2lzaW9uIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgZW5kXG5cbiAgYW5kIGpzX3N0cmluZyA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB2YWx1ZU9mIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJBdCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckNvZGVBdCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICAoKiBUaGlzIG1heSByZXR1cm4gTmFOLi4uICopXG4gICAgbWV0aG9kIGNvbmNhdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfNCA6XG4gICAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsb2NhbGVDb21wYXJlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgbWV0aG9kIF9tYXRjaCA6IHJlZ0V4cCB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemVfZm9ybSA6IG5vcm1hbGl6YXRpb24gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZSA6IHJlZ0V4cCB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzZWFyY2ggOiByZWdFeHAgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdCA6IGpzX3N0cmluZyB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9saW1pdGVkIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHAgOiByZWdFeHAgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwTGltaXRlZCA6IHJlZ0V4cCB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nX3RvRW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZUxvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1VwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVVwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0cmltIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGFuZCByZWdFeHAgPSBvYmplY3RcbiAgICBtZXRob2QgZXhlYyA6IGpzX3N0cmluZyB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIHRlc3QgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNvdXJjZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBnbG9iYWwgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZUNhc2UgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG11bHRpbGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbGFzdEluZGV4IDogaW50IHByb3BcbiAgZW5kXG5cbiAgYW5kIG5vcm1hbGl6YXRpb24gPSBqc19zdHJpbmdcblxuICAoKiBzdHJpbmcgaXMgdXNlZCBieSBwcHhfanMsIGl0IG5lZWRzIHRvIGNvbWUgYmVmb3JlIGFueSB1c2Ugb2YgdGhlXG4gICAgIG5ldyBzeW50YXggaW4gdGhpcyBmaWxlICopXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGxldCBuZmMgPSBzdHJpbmcgXCJORkNcIlxuXG4gIGxldCBuZmQgPSBzdHJpbmcgXCJORkRcIlxuXG4gIGxldCBuZmtjID0gc3RyaW5nIFwiTkZLQ1wiXG5cbiAgbGV0IG5ma2QgPSBzdHJpbmcgXCJORktEXCJcbmVuZFxuXG5pbmNsdWRlIEpzXG5cbmNsYXNzIHR5cGUgc3RyaW5nX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgZnJvbUNoYXJDb2RlIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgc3RyaW5nX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fU3RyaW5nXG5cbmxldCByZWdFeHAgPSBVbnNhZmUuZ2xvYmFsIyMuX1JlZ0V4cFxuXG5sZXQgcmVnRXhwX2NvcHkgPSByZWdFeHBcblxubGV0IHJlZ0V4cF93aXRoRmxhZ3MgPSByZWdFeHBcblxuY2xhc3MgdHlwZSBbJ2FdIGpzX2FycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmNhdCA6ICdhIGpzX2FycmF5IHQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGpvaW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHBvcCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHB1c2ggOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCByZXZlcnNlIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNoaWZ0IDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnQgOiAoJ2EgLT4gJ2EgLT4gbnVtYmVyX3QpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0X2FzU3RyaW5ncyA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8yIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzMgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfNCA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnQgOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzb21lIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZXZlcnkgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb3JFYWNoIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtYXAgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBmaWx0ZXIgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgcmVkdWNlX2luaXQgOiAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlIDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0X2luaXQgOlxuICAgICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodCA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuZW5kXG5cbmxldCBvYmplY3RfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgb2JqZWN0X2tleXMgbyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBvYmplY3RfY29uc3RydWN0b3IjI2tleXMgb1xuXG5sZXQgYXJyYXlfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX0FycmF5XG5cbmxldCBhcnJheV9lbXB0eSA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9sZW5ndGggPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfZ2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IFVuc2FmZS5nZXRcblxubGV0IGFycmF5X3NldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gVW5zYWZlLnNldFxuXG5sZXQgYXJyYXlfbWFwX3BvbHkgOlxuICAgICdhICNqc19hcnJheSB0IC0+ICgnYSAtPiBpbnQgLT4gJ2EgI2pzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiICNqc19hcnJheSB0ID1cbiBmdW4gYSBjYiAtPiAoVW5zYWZlLmNvZXJjZSBhKSMjbWFwIGNiXG5cbmxldCBhcnJheV9tYXAgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggX2lkeCBfIC0+IGYgeCkpXG5cbmxldCBhcnJheV9tYXBpIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IGlkeCBfIC0+IGYgaWR4IHgpKVxuXG5jbGFzcyB0eXBlIG1hdGNoX3Jlc3VsdCA9IG9iamVjdFxuICBpbmhlcml0IFtqc19zdHJpbmcgdF0ganNfYXJyYXlcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnB1dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgc3RyX2FycmF5IDogc3RyaW5nX2FycmF5IHQgLT4ganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IFVuc2FmZS5jb2VyY2VcblxubGV0IG1hdGNoX3Jlc3VsdCA6IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCAtPiBtYXRjaF9yZXN1bHQgdCA9IFVuc2FmZS5jb2VyY2VcblxuY2xhc3MgdHlwZSBkYXRlID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1RpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZURhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdmFsdWVPZiA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEhvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDSG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZXpvbmVPZmZzZXQgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0Z1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0U2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ1NlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0b1VUQ1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9JU09TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSlNPTiA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRhdGVfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tb250aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2RheSA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2hvdXIgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21pbiA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX3NlYyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tcyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG5vdyA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgZGF0ZV9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RhdGVcblxubGV0IGRhdGUgOiBkYXRlX2NvbnN0ciB0ID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbm93IDogZGF0ZSB0IGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2Zyb21UaW1lVmFsdWUgOiAobnVtYmVyX3QgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tb250aCA6IChpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZGF5IDogKGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfaG91ciA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9taW4gOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX3NlYyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21zIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9XG4gIGRhdGVfY29uc3RyXG5cbmNsYXNzIHR5cGUgbWF0aCA9IG9iamVjdFxuICBtZXRob2QgX0UgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjEwIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMkUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cxMEUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QSSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQxXzJfIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFicyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYWNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbjIgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNlaWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZXhwIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBmbG9vciA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbG9nIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHBvdyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcmFuZG9tIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByb3VuZCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzcXJ0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IG1hdGggPSBVbnNhZmUuZ2xvYmFsIyMuX01hdGhcblxuY2xhc3MgdHlwZSBlcnJvciA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhY2sgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgZXJyb3JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9FcnJvclxuXG5tb2R1bGUgSnNfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvcl90ID0gZXJyb3IgdFxuXG4gIGluY2x1ZGUgSnNvb19ydW50aW1lLkVycm9yXG5cbiAgZXh0ZXJuYWwgb2ZfZXJyb3IgOiBlcnJvcl90IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IGVycm9yX3QgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IG5hbWUgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5uYW1lXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5tZXNzYWdlXG5cbiAgbGV0IHN0YWNrIChlIDogdCkgOiBzdHJpbmcgb3B0aW9uID1cbiAgICBPcHQudG9fb3B0aW9uIChPcHQubWFwICh0b19lcnJvciBlKSMjLnN0YWNrIHRvX3N0cmluZylcblxuICBsZXQgdG9fc3RyaW5nIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyN0b1N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWdpYyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yIHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdiKSBlcSA9IEVxIDogKCdhLCAnYSkgZXFcblxuICBsZXQgKGVxIDogKGVycm9yIHQsIEpzX2Vycm9yLnQpIGVxKSA9IE9iai5tYWdpYyBFcVxuXG4gIGxldCBtID1cbiAgICBtYXRjaCBlcSB3aXRoXG4gICAgfCBFcSAtPlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIGV4Y2VwdGlvbiBFcnJvciA9IEpzX2Vycm9yLkV4blxuICAgICAgICBlbmQgOiBUKVxuXG4gIG1vZHVsZSBFcnJvciA9ICh2YWwgbSA6IFQpXG5lbmRcblxuaW5jbHVkZSBNYWdpYy5FcnJvclxuXG5sZXQgcmFpc2VfanNfZXJyb3IgZSA9IEpzX2Vycm9yLnJhaXNlXyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IHN0cmluZ19vZl9lcnJvciBlID0gSnNfZXJyb3IudG9fc3RyaW5nIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgZXhuX3dpdGhfanNfYmFja3RyYWNlID0gSnNfZXJyb3IuYXR0YWNoX2pzX2JhY2t0cmFjZVxuXG5leHRlcm5hbCBqc19lcnJvcl9vZl9leG4gOiBleG4gLT4gZXJyb3IgdCBvcHQgPSBcImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXCJcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBfSlNPTiA6IGpzb24gdCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgZGVjb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGRlY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCB1bmVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy51bmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxuZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIHRvX2Jvb2wgOiBib29sIHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiAnYSBqc19hcnJheSB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG5leHRlcm5hbCB0b19hcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG5leHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbmV4dGVybmFsIGZsb2F0IDogZmxvYXQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogbnVtYmVyX3QgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiBudW1iZXIgdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogbnVtYmVyIHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBpbnQzMiA6IGludDMyIC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG5leHRlcm5hbCB0b19pbnQzMiA6IG51bWJlcl90IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuZXh0ZXJuYWwgbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogbnVtYmVyX3QgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHR5cGVvZiA6IF8gdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG5leHRlcm5hbCBpbnN0YW5jZW9mIDogXyB0IC0+IF8gY29uc3RyIC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbmxldCBpc05hTiAoaSA6ICdhKSA6IGJvb2wgPVxuICB0b19ib29sIChVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmlzTmFOIFt8IFVuc2FmZS5pbmplY3QgaSB8XSlcblxubGV0IHBhcnNlSW50IChzIDoganNfc3RyaW5nIHQpIDogaW50ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlSW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUludFwiIGVsc2Ugc1xuXG5sZXQgcGFyc2VGbG9hdCAocyA6IGpzX3N0cmluZyB0KSA6IG51bWJlcl90ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlRmxvYXQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlRmxvYXRcIiBlbHNlIHNcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgICAgfCBKc19lcnJvci5FeG4gZSAtPiBTb21lIChKc19lcnJvci50b19zdHJpbmcgZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBlIC0+XG4gICAgICBsZXQgZSA6IDwgLi4gPiB0ID0gT2JqLm1hZ2ljIGUgaW5cbiAgICAgIGlmIGluc3RhbmNlb2YgZSBhcnJheV9jb25zdHJ1Y3RvciB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19zdHJpbmcgZSMjdG9TdHJpbmcpKVxuXG5sZXQgZXhwb3J0X2pzIChmaWVsZCA6IGpzX3N0cmluZyB0KSB4ID1cbiAgVW5zYWZlLnNldFxuICAgIChVbnNhZmUucHVyZV9qc19leHByIFwianNvb19leHBvcnRzXCIpXG4gICAgZmllbGRcbiAgICAoaWYgU3RyaW5nLmVxdWFsIChKcy50b19zdHJpbmcgKHR5cGVvZiAoT2JqLm1hZ2ljIHgpKSkgXCJmdW5jdGlvblwiXG4gICAgICAgICgqIGZ1bmN0aW9uIHdpdGggYXJpdHkvbGVuZ3RoIGVxdWFsIHRvIHplcm8gYXJlIGFscmVhZHkgd3JhcHBlZCAqKVxuICAgICAgICAmJiBVbnNhZmUuZ2V0IChPYmoubWFnaWMgeCkgKEpzLnN0cmluZyBcImxlbmd0aFwiKSA+IDBcbiAgICAgdGhlbiBPYmoubWFnaWMgKHdyYXBfY2FsbGJhY2sgKE9iai5tYWdpYyB4KSlcbiAgICAgZWxzZSB4KVxuXG5sZXQgZXhwb3J0IGZpZWxkIHggPSBleHBvcnRfanMgKHN0cmluZyBmaWVsZCkgeFxuXG5sZXQgZXhwb3J0X2FsbCBvYmogPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG9iaiBpblxuICBrZXlzIyNmb3JFYWNoXG4gICAgKHdyYXBfY2FsbGJhY2sgKGZ1biAoa2V5IDoganNfc3RyaW5nIHQpIF8gXyAtPiBleHBvcnRfanMga2V5IChVbnNhZmUuZ2V0IG9iaiBrZXkpKSlcblxuKCoqKiopXG5cbigqIERFUFJFQ0FURUQgKilcblxudHlwZSBmbG9hdF9wcm9wID0gbnVtYmVyX3QgcHJvcFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gbm9kZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBsaXN0X29mX25vZGVMaXN0IChub2RlTGlzdCA6ICdhIG5vZGVMaXN0IHQpID1cbiAgbGV0IGxlbmd0aCA9IG5vZGVMaXN0IyMubGVuZ3RoIGluXG4gIGxldCByZWMgYWRkX2l0ZW0gYWNjIGkgPVxuICAgIGlmIGkgPCBsZW5ndGhcbiAgICB0aGVuXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChub2RlTGlzdCMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWRkX2l0ZW0gYWNjIChpICsgMSlcbiAgICAgIHwgU29tZSBlIC0+IGFkZF9pdGVtIChlIDo6IGFjYykgKGkgKyAxKVxuICAgIGVsc2UgTGlzdC5yZXYgYWNjXG4gIGluXG4gIGFkZF9pdGVtIFtdIDBcblxudHlwZSBub2RlVHlwZSA9XG4gIHwgT1RIRVJcbiAgKCogV2lsbCBub3QgaGFwcGVuICopXG4gIHwgRUxFTUVOVFxuICB8IEFUVFJJQlVURVxuICB8IFRFWFRcbiAgfCBDREFUQV9TRUNUSU9OXG4gIHwgRU5USVRZX1JFRkVSRU5DRVxuICB8IEVOVElUWVxuICB8IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05cbiAgfCBDT01NRU5UXG4gIHwgRE9DVU1FTlRcbiAgfCBET0NVTUVOVF9UWVBFXG4gIHwgRE9DVU1FTlRfRlJBR01FTlRcbiAgfCBOT1RBVElPTlxuXG5tb2R1bGUgRG9jdW1lbnRQb3NpdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICB0eXBlIG1hc2sgPSBpbnRcblxuICBsZXQgZGlzY29ubmVjdGVkID0gMHgwMVxuXG4gIGxldCBwcmVjZWRpbmcgPSAweDAyXG5cbiAgbGV0IGZvbGxvd2luZyA9IDB4MDRcblxuICBsZXQgY29udGFpbnMgPSAweDA4XG5cbiAgbGV0IGNvbnRhaW5lZF9ieSA9IDB4MTBcblxuICBsZXQgaW1wbGVtZW50YXRpb25fc3BlY2lmaWMgPSAweDIwXG5cbiAgbGV0IGhhcyB0IG1hc2sgPSB0IGxhbmQgbWFzayA9IG1hc2tcblxuICBsZXQgYWRkIHggeSA9IHggbG9yIHlcblxuICBsZXQgKCArICkgPSBhZGRcbmVuZFxuXG5jbGFzcyB0eXBlIG5vZGUgPSBvYmplY3RcbiAgbWV0aG9kIG5vZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVHlwZSA6IG5vZGVUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogbm9kZSBub2RlTGlzdCB0IHByb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydEJlZm9yZSA6IG5vZGUgdCAtPiBub2RlIHQgb3B0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgaGFzQ2hpbGROb2RlcyA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lTm9kZSA6IGJvb2wgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6IG5vZGUgdCAtPiBEb2N1bWVudFBvc2l0aW9uLnQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBOYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBQcmVmaXggOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBhcHBlbmRDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI2FwcGVuZENoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZW1vdmVDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI3JlbW92ZUNoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZXBsYWNlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCkgPVxuICBpZ25vcmUgKHAjI3JlcGxhY2VDaGlsZCAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCkpXG5cbmxldCBpbnNlcnRCZWZvcmUgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCBvcHQpID1cbiAgaWdub3JlIChwIyNpbnNlcnRCZWZvcmUgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQgb3B0KSlcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0F0dHJdIG9iamVjdHMuICopXG5jbGFzcyB0eXBlIGF0dHIgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWNpZmllZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lckVsZW1lbnQgOiBlbGVtZW50IHQgcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtOYW1lZE5vZGVNYXBdIG9iamVjdHMuICopXG5hbmQgWydub2RlXSBuYW1lZE5vZGVNYXAgPSBvYmplY3RcbiAgbWV0aG9kIGdldE5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0TmFtZWRJdGVtIDogJ25vZGUgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZU5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0VsZW1lbnRdIG9iamVjdHMuICopXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgdGFnTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlTlMgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHIgbmFtZWROb2RlTWFwIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgY2hhcmFjdGVyRGF0YSA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VianNfc3RyaW5nRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmREYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydERhdGEgOiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZURhdGEgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBjb21tZW50ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIHRleHQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnRGcmFnbWVudCA9IG5vZGVcblxuY2xhc3MgdHlwZSBbJ2VsZW1lbnRdIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiAnZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6IGRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudE5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHROb2RlIDoganNfc3RyaW5nIHQgLT4gdGV4dCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ29tbWVudCA6IGpzX3N0cmluZyB0IC0+IGNvbW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBpbXBvcnROb2RlIDogZWxlbWVudCB0IC0+IGJvb2wgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgYWRvcHROb2RlIDogZWxlbWVudCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9kZV90eXBlID1cbiAgfCBFbGVtZW50IG9mIGVsZW1lbnQgdFxuICB8IEF0dHIgb2YgYXR0ciB0XG4gIHwgVGV4dCBvZiB0ZXh0IHRcbiAgfCBPdGhlciBvZiBub2RlIHRcblxubGV0IG5vZGVUeXBlIGUgPVxuICBtYXRjaCBlIyMubm9kZVR5cGUgd2l0aFxuICB8IEVMRU1FTlQgLT4gRWxlbWVudCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IEFUVFJJQlVURSAtPiBBdHRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQ0RBVEFfU0VDVElPTiB8IFRFWFQgLT4gVGV4dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IF8gLT4gT3RoZXIgKGUgOj4gbm9kZSB0KVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGNhc3QgKGUgOiAjbm9kZSBKcy50KSB0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gdCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGVsZW1lbnQgZSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPSBjYXN0IGUgRUxFTUVOVFxuXG4gIGxldCB0ZXh0IGUgOiB0ZXh0IEpzLnQgSnMub3B0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gVEVYVCB8fCBlIyMubm9kZVR5cGUgPT0gQ0RBVEFfU0VDVElPTlxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhdHRyIGUgOiBhdHRyIEpzLnQgSnMub3B0ID0gY2FzdCBlIEFUVFJJQlVURVxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiIC0+IGJvb2wgdCkgbWV0aF9jYWxsYmFjayBvcHRcbigqKiBUaGUgdHlwZSBvZiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbnMuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXJcbiAgICAgIFsnYV0gaXMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldCBvYmplY3Q7IHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICBbJ2JdIGlzIHRoZSB0eXBlIG9mIHRoZSBldmVudCBvYmplY3QuICopXG5cbmNsYXNzIHR5cGUgWydhXSBldmVudCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICAoKiBMZWdhY3kgbWV0aG9kcyAqKVxuICBtZXRob2Qgc3JjRWxlbWVudCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiAnYiBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBKcy5udWxsXG5cbmxldCB3aW5kb3dfZXZlbnQgKCkgOiAnYSAjZXZlbnQgdCA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJldmVudFwiXG5cbigqIFRoZSBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdCBtdXN0IGJlIGNhbGxlZCBleHBsaWNpdGx5IHdoZW5cbiAgIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIuLi4gKilcbmxldCBoYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQuICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBmdWxsX2hhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLm1ldGhfY2FsbGJhY2sgKGZ1biB0aGlzIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQgKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBpbnZva2VfaGFuZGxlciAoZiA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyKSAodGhpcyA6ICdhKSAoZXZlbnQgOiAnYikgOiBib29sIHQgPVxuICBKcy5VbnNhZmUuY2FsbCBmIHRoaXMgW3wgSnMuVW5zYWZlLmluamVjdCBldmVudCB8XVxuXG5sZXQgZXZlbnRUYXJnZXQgKGUgOiAoPCAuLiA+IGFzICdhKSAjZXZlbnQgdCkgOiAnYSB0ID1cbiAgbGV0IHRhcmdldCA9XG4gICAgT3B0LmdldCBlIyMudGFyZ2V0IChmdW4gKCkgLT4gT3B0LmdldCBlIyMuc3JjRWxlbWVudCAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZCkpXG4gIGluXG4gIGlmIEpzLmluc3RhbmNlb2YgdGFyZ2V0IEpzLlVuc2FmZS5nbG9iYWwjIy5fTm9kZVxuICB0aGVuXG4gICAgKCogV29ya2Fyb3VuZCBmb3IgU2FmYXJpIGJ1ZyAqKVxuICAgIGxldCB0YXJnZXQnIDogbm9kZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZSB0YXJnZXQgaW5cbiAgICBpZiB0YXJnZXQnIyMubm9kZVR5cGUgPT0gVEVYVFxuICAgIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoT3B0LmdldCB0YXJnZXQnIyMucGFyZW50Tm9kZSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgZWxzZSB0YXJnZXRcbiAgZWxzZSB0YXJnZXRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQgbWFrZSBzID0gSnMuc3RyaW5nIHNcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gdW5pdCAtPiB1bml0XG5cbmNsYXNzIHR5cGUgZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgY2FwdHVyZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhc3NpdmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGUpIyMuYWRkRXZlbnRMaXN0ZW5lcilcbiAgdGhlblxuICAgIGxldCBldiA9IChKcy5zdHJpbmcgXCJvblwiKSMjY29uY2F0IHR5cCBpblxuICAgIGxldCBjYWxsYmFjayBlID0gSnMuVW5zYWZlLmNhbGwgKGgsIGUsIFt8fF0pIGluXG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2F0dGFjaEV2ZW50IGV2IGNhbGxiYWNrIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNkZXRhY2hFdmVudCBldiBjYWxsYmFja1xuICBlbHNlXG4gICAgbGV0IG9wdHMgOiBldmVudF9saXN0ZW5lcl9vcHRpb25zIHQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBsZXQgaXRlciB0IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBiIC0+IGYgYlxuICAgIGluXG4gICAgaXRlciBjYXB0dXJlIChmdW4gYiAtPiBvcHRzIyMuY2FwdHVyZSA6PSBiKTtcbiAgICBpdGVyIG9uY2UgKGZ1biBiIC0+IG9wdHMjIy5vbmNlIDo9IGIpO1xuICAgIGl0ZXIgcGFzc2l2ZSAoZnVuIGIgLT4gb3B0cyMjLnBhc3NpdmUgOj0gYik7XG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2FkZEV2ZW50TGlzdGVuZXIgdHlwIGggb3B0cyBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcmVtb3ZlRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzXG5cbmxldCBhZGRFdmVudExpc3RlbmVyIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwIGggY2FwdCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlIHR5cCB+Y2FwdHVyZTpjYXB0IGhcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgaWQgPSBpZCAoKVxuXG5sZXQgcHJldmVudERlZmF1bHQgZXYgPVxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5wcmV2ZW50RGVmYXVsdCAoKiBJRSBoYWNrICopXG4gIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyNwcmV2ZW50RGVmYXVsdFxuICBlbHNlIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnJldHVyblZhbHVlIDo9IEpzLmJvb2wgZmFsc2VcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID9idWJibGVzID9jYW5jZWxhYmxlID9kZXRhaWwgdHlwID1cbiAgbGV0IG9wdF9pdGVyIGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb3B0cyA9IFVuc2FmZS5vYmogW3x8XSBpblxuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmJ1YmJsZXMgOj0gYm9vbCB4KSBidWJibGVzO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmNhbmNlbGFibGUgOj0gYm9vbCB4KSBjYW5jZWxhYmxlO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmRldGFpbCA6PSBzb21lIHgpIGRldGFpbDtcbiAgbGV0IGNvbnN0ciA6XG4gICAgICAoICAgKCdhLCAnYikgI2N1c3RvbUV2ZW50IEpzLnQgRXZlbnQudHlwXG4gICAgICAgLT4gPCBkZXRhaWwgOiAnYiBvcHQgcHJvcCA+IHRcbiAgICAgICAtPiAoJ2EsICdiKSBjdXN0b21FdmVudCB0KVxuICAgICAgY29uc3RyID1cbiAgICBVbnNhZmUuZ2xvYmFsIyMuX0N1c3RvbUV2ZW50XG4gIGluXG4gIG5ldyVqcyBjb25zdHIgdHlwIG9wdHNcblxuKCogSUUgPCA5ICopXG5cbmNsYXNzIHR5cGUgc3RyaW5nTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIEpzXG5cbnR5cGUgdWludDMyID0gZmxvYXRcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlciA9IG9iamVjdFxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5lbmRcblxubGV0IGFycmF5QnVmZmVyIDogKGludCAtPiBhcnJheUJ1ZmZlciB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0FycmF5QnVmZmVyXG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXJWaWV3ID0gb2JqZWN0XG4gIG1ldGhvZCBidWZmZXIgOiBhcnJheUJ1ZmZlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZU9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gdHlwZWRBcnJheSA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBfQllURVNfUEVSX0VMRU1FTlQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRfZnJvbUFycmF5IDogJ2EganNfYXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldF9mcm9tVHlwZWRBcnJheSA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5IDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICAoKiBUaGlzIGZha2UgbWV0aG9kIGlzIG5lZWRlZCBmb3IgdHlwaW5nIHB1cnBvc2VzLlxuICAgICBXaXRob3V0IGl0LCBbJ2JdIHdvdWxkIG5vdCBiZSBjb25zdHJhaW5lZC4gKilcbiAgbWV0aG9kIF9jb250ZW50X3R5cGVfIDogJ2Igb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG50eXBlIGludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQzMkFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0NjRBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQ2NF9lbHQpIHR5cGVkQXJyYXlcblxuZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0XG4gID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbmxldCBpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21BcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2luQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21BcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2luQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgaW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9pbkJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfaW5CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgaW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9pbkJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfaW5CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9pbkJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9pbkJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgc2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID1cbiBmdW4gYSBpIHYgLT4gYXJyYXlfc2V0IChVbnNhZmUuY29lcmNlIGEpIGkgdlxuXG5sZXQgZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmxldCB1bnNhZmVfZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxuY2xhc3MgdHlwZSBkYXRhVmlldyA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBnZXRJbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyIDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyXyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyIDogaW50IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyXyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NF8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyXyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzJfIDogaW50IC0+IHVpbnQzMiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzJfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NF8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBkYXRhVmlldyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRGF0YVZpZXdcblxubGV0IGRhdGFWaWV3X2luQnVmZmVyID0gZGF0YVZpZXdcblxubW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciBKcy50ID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5IEpzLnQgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IGJ5dGVzID0gXCJjYW1sX2J5dGVzX29mX2FycmF5XCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogYnl0ZXMgLT4gdWludDhBcnJheSBKcy50ID0gXCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcImNhbmNlbFwiXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNsb3NlID0gRG9tLkV2ZW50Lm1ha2UgXCJjbG9zZVwiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpYWxvZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3JldHVyblZhbHVlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9wZW5fIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcmV0dXJuVmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNob3cgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hvd01vZGFsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2FuY2VsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jbG9zZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVsbGlwc2UgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpYWxvZyBkb2MgOiBkaWFsb2dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpYWxvZ1wiXG5cbmxldCBjcmVhdGVEaXYgZG9jIDogZGl2RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaXZcIlxuXG5sZXQgY3JlYXRlRW1iZWQgZG9jIDogZW1iZWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVtYmVkXCJcblxubGV0IGNyZWF0ZVAgZG9jIDogcGFyYWdyYXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwXCJcblxubGV0IGNyZWF0ZUgxIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgxXCJcblxubGV0IGNyZWF0ZUgyIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgyXCJcblxubGV0IGNyZWF0ZUgzIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgzXCJcblxubGV0IGNyZWF0ZUg0IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg0XCJcblxubGV0IGNyZWF0ZUg1IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg1XCJcblxubGV0IGNyZWF0ZUg2IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg2XCJcblxubGV0IGNyZWF0ZVEgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInFcIlxuXG5sZXQgY3JlYXRlQmxvY2txdW90ZSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmxvY2txdW90ZVwiXG5cbmxldCBjcmVhdGVQcmUgZG9jIDogcHJlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwcmVcIlxuXG5sZXQgY3JlYXRlQnIgZG9jIDogYnJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJyXCJcblxubGV0IGNyZWF0ZUhyIGRvYyA6IGhyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoclwiXG5cbmxldCBjcmVhdGVJbnMgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbnNcIlxuXG5sZXQgY3JlYXRlRGVsIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVsXCJcblxubGV0IGNyZWF0ZUEgZG9jIDogYW5jaG9yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUltZyBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1nXCJcblxubGV0IGNyZWF0ZU9iamVjdCBkb2MgOiBvYmplY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9iamVjdFwiXG5cbmxldCBjcmVhdGVQYXJhbSBkb2MgOiBwYXJhbUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGFyYW1cIlxuXG5sZXQgY3JlYXRlTWFwIGRvYyA6IG1hcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFwXCJcblxubGV0IGNyZWF0ZUFyZWEgZG9jIDogYXJlYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXJlYVwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlVGFibGUgZG9jIDogdGFibGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRhYmxlXCJcblxubGV0IGNyZWF0ZUNhcHRpb24gZG9jIDogdGFibGVDYXB0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYXB0aW9uXCJcblxubGV0IGNyZWF0ZUNvbCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sXCJcblxubGV0IGNyZWF0ZUNvbGdyb3VwIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xncm91cFwiXG5cbmxldCBjcmVhdGVUaGVhZCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoZWFkXCJcblxubGV0IGNyZWF0ZVRmb290IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGZvb3RcIlxuXG5sZXQgY3JlYXRlVGJvZHkgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Ym9keVwiXG5cbmxldCBjcmVhdGVUciBkb2MgOiB0YWJsZVJvd0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJcIlxuXG5sZXQgY3JlYXRlVGggZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aFwiXG5cbmxldCBjcmVhdGVUZCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRkXCJcblxubGV0IGNyZWF0ZVN1YiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1YlwiXG5cbmxldCBjcmVhdGVTdXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdXBcIlxuXG5sZXQgY3JlYXRlU3BhbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNwYW5cIlxuXG5sZXQgY3JlYXRlVHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ0dFwiXG5cbmxldCBjcmVhdGVJIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiaVwiXG5cbmxldCBjcmVhdGVCIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYlwiXG5cbmxldCBjcmVhdGVCaWcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiaWdcIlxuXG5sZXQgY3JlYXRlU21hbGwgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzbWFsbFwiXG5cbmxldCBjcmVhdGVFbSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImVtXCJcblxubGV0IGNyZWF0ZVN0cm9uZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN0cm9uZ1wiXG5cbmxldCBjcmVhdGVDaXRlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY2l0ZVwiXG5cbmxldCBjcmVhdGVEZm4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZm5cIlxuXG5sZXQgY3JlYXRlQ29kZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNvZGVcIlxuXG5sZXQgY3JlYXRlU2FtcCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNhbXBcIlxuXG5sZXQgY3JlYXRlS2JkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwia2JkXCJcblxubGV0IGNyZWF0ZVZhciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInZhclwiXG5cbmxldCBjcmVhdGVBYmJyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWJiclwiXG5cbmxldCBjcmVhdGVEZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRkXCJcblxubGV0IGNyZWF0ZUR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZHRcIlxuXG5sZXQgY3JlYXRlTm9zY3JpcHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJub3NjcmlwdFwiXG5cbmxldCBjcmVhdGVBZGRyZXNzIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWRkcmVzc1wiXG5cbmxldCBjcmVhdGVGcmFtZXNldCBkb2MgOiBmcmFtZVNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVzZXRcIlxuXG5sZXQgY3JlYXRlRnJhbWUgZG9jIDogZnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lXCJcblxubGV0IGNyZWF0ZUlmcmFtZSBkb2MgOiBpRnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImlmcmFtZVwiXG5cbmxldCBjcmVhdGVBdWRpbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXVkaW9cIlxuXG5sZXQgY3JlYXRlVmlkZW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZGVvXCJcblxuZXhjZXB0aW9uIENhbnZhc19ub3RfYXZhaWxhYmxlXG5cbmxldCBjcmVhdGVDYW52YXMgZG9jIDogY2FudmFzRWxlbWVudCB0ID1cbiAgbGV0IGMgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhbnZhc1wiIGluXG4gIGlmIG5vdCAoT3B0LnRlc3QgYyMjLmdldENvbnRleHQpIHRoZW4gcmFpc2UgQ2FudmFzX25vdF9hdmFpbGFibGU7XG4gIGNcblxubGV0IGh0bWxfZWxlbWVudCA6IGh0bWxFbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9IVE1MRWxlbWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgOiAjRG9tLm5vZGUgSnMudCAtPiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgaHRtbF9lbGVtZW50KSlcbiAgICB0aGVuXG4gICAgICAoKiBpZSA8IDkgZG9lcyBub3QgaGF2ZSBIVE1MRWxlbWVudDogd2UgaGF2ZSB0byBjaGVhdCB0byBjaGVja1xuICAgICAgICAgdGhhdCBzb21ldGhpbmcgaXMgYW4gaHRtbCBlbGVtZW50ICopXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIChKcy5VbnNhZmUuY29lcmNlIGUpIyMuaW5uZXJIVE1MKSlcbiAgICAgIHRoZW4gSnMubnVsbFxuICAgICAgZWxzZSBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIEpzLmluc3RhbmNlb2YgZSBodG1sX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgdGFnIChlIDogI2VsZW1lbnQgdCkgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA9IHVuc2FmZUNvZXJjZSBcImFcIiBlXG5cbiAgbGV0IGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcImFyZWFcIiBlXG5cbiAgbGV0IGJhc2UgZSA9IHVuc2FmZUNvZXJjZSBcImJhc2VcIiBlXG5cbiAgbGV0IGJsb2NrcXVvdGUgZSA9IHVuc2FmZUNvZXJjZSBcImJsb2NrcXVvdGVcIiBlXG5cbiAgbGV0IGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcImJvZHlcIiBlXG5cbiAgbGV0IGJyIGUgPSB1bnNhZmVDb2VyY2UgXCJiclwiIGVcblxuICBsZXQgYnV0dG9uIGUgPSB1bnNhZmVDb2VyY2UgXCJidXR0b25cIiBlXG5cbiAgbGV0IGNhbnZhcyBlID0gdW5zYWZlQ29lcmNlIFwiY2FudmFzXCIgZVxuXG4gIGxldCBjYXB0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJjYXB0aW9uXCIgZVxuXG4gIGxldCBjb2wgZSA9IHVuc2FmZUNvZXJjZSBcImNvbFwiIGVcblxuICBsZXQgY29sZ3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcImNvbGdyb3VwXCIgZVxuXG4gIGxldCBkZWwgZSA9IHVuc2FmZUNvZXJjZSBcImRlbFwiIGVcblxuICBsZXQgZGl2IGUgPSB1bnNhZmVDb2VyY2UgXCJkaXZcIiBlXG5cbiAgbGV0IGRsIGUgPSB1bnNhZmVDb2VyY2UgXCJkbFwiIGVcblxuICBsZXQgZmllbGRzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZpZWxkc2V0XCIgZVxuXG4gIGxldCBlbWJlZCBlID0gdW5zYWZlQ29lcmNlIFwiZW1iZWRcIiBlXG5cbiAgbGV0IGZvcm0gZSA9IHVuc2FmZUNvZXJjZSBcImZvcm1cIiBlXG5cbiAgbGV0IGZyYW1lc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZXNldFwiIGVcblxuICBsZXQgZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lXCIgZVxuXG4gIGxldCBoMSBlID0gdW5zYWZlQ29lcmNlIFwiaDFcIiBlXG5cbiAgbGV0IGgyIGUgPSB1bnNhZmVDb2VyY2UgXCJoMlwiIGVcblxuICBsZXQgaDMgZSA9IHVuc2FmZUNvZXJjZSBcImgzXCIgZVxuXG4gIGxldCBoNCBlID0gdW5zYWZlQ29lcmNlIFwiaDRcIiBlXG5cbiAgbGV0IGg1IGUgPSB1bnNhZmVDb2VyY2UgXCJoNVwiIGVcblxuICBsZXQgaDYgZSA9IHVuc2FmZUNvZXJjZSBcImg2XCIgZVxuXG4gIGxldCBoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJoZWFkXCIgZVxuXG4gIGxldCBociBlID0gdW5zYWZlQ29lcmNlIFwiaHJcIiBlXG5cbiAgbGV0IGh0bWwgZSA9IHVuc2FmZUNvZXJjZSBcImh0bWxcIiBlXG5cbiAgbGV0IGlmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiaWZyYW1lXCIgZVxuXG4gIGxldCBpbWcgZSA9IHVuc2FmZUNvZXJjZSBcImltZ1wiIGVcblxuICBsZXQgaW5wdXQgZSA9IHVuc2FmZUNvZXJjZSBcImlucHV0XCIgZVxuXG4gIGxldCBpbnMgZSA9IHVuc2FmZUNvZXJjZSBcImluc1wiIGVcblxuICBsZXQgbGFiZWwgZSA9IHVuc2FmZUNvZXJjZSBcImxhYmVsXCIgZVxuXG4gIGxldCBsZWdlbmQgZSA9IHVuc2FmZUNvZXJjZSBcImxlZ2VuZFwiIGVcblxuICBsZXQgbGkgZSA9IHVuc2FmZUNvZXJjZSBcImxpXCIgZVxuXG4gIGxldCBsaW5rIGUgPSB1bnNhZmVDb2VyY2UgXCJsaW5rXCIgZVxuXG4gIGxldCBtYXAgZSA9IHVuc2FmZUNvZXJjZSBcIm1hcFwiIGVcblxuICBsZXQgbWV0YSBlID0gdW5zYWZlQ29lcmNlIFwibWV0YVwiIGVcblxuICBsZXQgX29iamVjdCBlID0gdW5zYWZlQ29lcmNlIFwib2JqZWN0XCIgZVxuXG4gIGxldCBvbCBlID0gdW5zYWZlQ29lcmNlIFwib2xcIiBlXG5cbiAgbGV0IG9wdGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRncm91cFwiIGVcblxuICBsZXQgb3B0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRpb25cIiBlXG5cbiAgbGV0IHAgZSA9IHVuc2FmZUNvZXJjZSBcInBcIiBlXG5cbiAgbGV0IHBhcmFtIGUgPSB1bnNhZmVDb2VyY2UgXCJwYXJhbVwiIGVcblxuICBsZXQgcHJlIGUgPSB1bnNhZmVDb2VyY2UgXCJwcmVcIiBlXG5cbiAgbGV0IHEgZSA9IHVuc2FmZUNvZXJjZSBcInFcIiBlXG5cbiAgbGV0IHNjcmlwdCBlID0gdW5zYWZlQ29lcmNlIFwic2NyaXB0XCIgZVxuXG4gIGxldCBzZWxlY3QgZSA9IHVuc2FmZUNvZXJjZSBcInNlbGVjdFwiIGVcblxuICBsZXQgc3R5bGUgZSA9IHVuc2FmZUNvZXJjZSBcInN0eWxlXCIgZVxuXG4gIGxldCB0YWJsZSBlID0gdW5zYWZlQ29lcmNlIFwidGFibGVcIiBlXG5cbiAgbGV0IHRib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Ym9keVwiIGVcblxuICBsZXQgdGQgZSA9IHVuc2FmZUNvZXJjZSBcInRkXCIgZVxuXG4gIGxldCB0ZXh0YXJlYSBlID0gdW5zYWZlQ29lcmNlIFwidGV4dGFyZWFcIiBlXG5cbiAgbGV0IHRmb290IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Zm9vdFwiIGVcblxuICBsZXQgdGggZSA9IHVuc2FmZUNvZXJjZSBcInRoXCIgZVxuXG4gIGxldCB0aGVhZCBlID0gdW5zYWZlQ29lcmNlIFwidGhlYWRcIiBlXG5cbiAgbGV0IHRpdGxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aXRsZVwiIGVcblxuICBsZXQgdHIgZSA9IHVuc2FmZUNvZXJjZSBcInRyXCIgZVxuXG4gIGxldCB1bCBlID0gdW5zYWZlQ29lcmNlIFwidWxcIiBlXG5cbiAgbGV0IGF1ZGlvIGUgPSB1bnNhZmVDb2VyY2UgXCJhdWRpb1wiIGVcblxuICBsZXQgdmlkZW8gZSA9IHVuc2FmZUNvZXJjZSBcInZpZGVvXCIgZVxuXG4gIGxldCB1bnNhZmVDb2VyY2VFdmVudCBjb25zdHIgKGV2IDogI2V2ZW50IHQpID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoZGVmIGNvbnN0cikgJiYgSnMuaW5zdGFuY2VvZiBldiBjb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZXYpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IG1vdXNlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlRXZlbnQgZXZcblxuICBsZXQga2V5Ym9hcmRFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fS2V5Ym9hcmRFdmVudCBldlxuXG4gIGxldCB3aGVlbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9XaGVlbEV2ZW50IGV2XG5cbiAgbGV0IG1vdXNlU2Nyb2xsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlU2Nyb2xsRXZlbnQgZXZcblxuICBsZXQgcG9wU3RhdGVFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fUG9wU3RhdGVFdmVudCBldlxuXG4gIGxldCBtZXNzYWdlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01lc3NhZ2VFdmVudCBldlxuZW5kXG5cbigqKioqKVxuXG5sZXQgZXZlbnRUYXJnZXQgPSBEb20uZXZlbnRUYXJnZXRcblxubGV0IGV2ZW50UmVsYXRlZFRhcmdldCAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmdldCBlIyMucmVsYXRlZFRhcmdldCAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBKcy50b19zdHJpbmcgZSMjLl90eXBlIHdpdGhcbiAgICAgIHwgXCJtb3VzZW92ZXJcIiAtPiBPcHRkZWYuZ2V0IGUjIy5mcm9tRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXCJtb3VzZW91dFwiIC0+IE9wdGRlZi5nZXQgZSMjLnRvRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXyAtPiBKcy5udWxsKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIGUjIy5jbGllbnRYICsgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdFxuICAsIGUjIy5jbGllbnRZICsgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3AgKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5wYWdlWFxuICAgIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKVxuICAgIChmdW4geCAtPiBPcHRkZWYuY2FzZSBlIyMucGFnZVkgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpIChmdW4geSAtPiB4LCB5KSlcblxubGV0IGVsZW1lbnRDbGllbnRQb3NpdGlvbiAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHIgPSBlIyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMubGVmdCkgLSBib2R5IyMuY2xpZW50TGVmdCAtIGh0bWwjIy5jbGllbnRMZWZ0XG4gICwgdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy50b3ApIC0gYm9keSMjLmNsaWVudFRvcCAtIGh0bWwjIy5jbGllbnRUb3AgKVxuXG5sZXQgZ2V0RG9jdW1lbnRTY3JvbGwgKCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnQsIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wXG5cbmxldCBidXR0b25QcmVzc2VkIChldiA6ICNtb3VzZUV2ZW50IEpzLnQpID1cbiAgSnMuT3B0ZGVmLmNhc2VcbiAgICBldiMjLndoaWNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggZXYjIy5idXR0b24gd2l0aFxuICAgICAgfCAxIC0+IExlZnRfYnV0dG9uXG4gICAgICB8IDIgLT4gUmlnaHRfYnV0dG9uXG4gICAgICB8IDQgLT4gTWlkZGxlX2J1dHRvblxuICAgICAgfCBfIC0+IE5vX2J1dHRvbilcbiAgICAoZnVuIHggLT4geClcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgP2NhcHR1cmVcbiAgICA/b25jZVxuICAgID9wYXNzaXZlXG4gICAgZVxuICAgIEV2ZW50LndoZWVsXG4gICAgKGhhbmRsZXIgKGZ1biAoZSA6IG1vdXNld2hlZWxFdmVudCB0KSAtPlxuICAgICAgICAgbGV0IGR4ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFYIChmdW4gKCkgLT4gMCkgLyA0MCBpblxuICAgICAgICAgbGV0IGR5ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFZIChmdW4gKCkgLT4gZSMjLndoZWVsRGVsdGEpIC8gNDAgaW5cbiAgICAgICAgIGggKGUgOj4gbW91c2VFdmVudCB0KSB+ZHggfmR5KSlcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIGUgaCBjYXB0ID1cbiAgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyB+Y2FwdHVyZTpjYXB0IGUgaFxuXG4oKioqKiopXG5cbm1vZHVsZSBLZXlib2FyZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBVbmlkZW50aWZpZWRcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IEtleUFcbiAgICB8IEtleUJcbiAgICB8IEtleUNcbiAgICB8IEtleURcbiAgICB8IEtleUVcbiAgICB8IEtleUZcbiAgICB8IEtleUdcbiAgICB8IEtleUhcbiAgICB8IEtleUlcbiAgICB8IEtleUpcbiAgICB8IEtleUtcbiAgICB8IEtleUxcbiAgICB8IEtleU1cbiAgICB8IEtleU5cbiAgICB8IEtleU9cbiAgICB8IEtleVBcbiAgICB8IEtleVFcbiAgICB8IEtleVJcbiAgICB8IEtleVNcbiAgICB8IEtleVRcbiAgICB8IEtleVVcbiAgICB8IEtleVZcbiAgICB8IEtleVdcbiAgICB8IEtleVhcbiAgICB8IEtleVlcbiAgICB8IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IERpZ2l0MFxuICAgIHwgRGlnaXQxXG4gICAgfCBEaWdpdDJcbiAgICB8IERpZ2l0M1xuICAgIHwgRGlnaXQ0XG4gICAgfCBEaWdpdDVcbiAgICB8IERpZ2l0NlxuICAgIHwgRGlnaXQ3XG4gICAgfCBEaWdpdDhcbiAgICB8IERpZ2l0OVxuICAgIHwgTWludXNcbiAgICB8IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgVGFiXG4gICAgfCBFbnRlclxuICAgIHwgU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBFc2NhcGVcbiAgICB8IEJhY2tzcGFjZVxuICAgIHwgSW5zZXJ0XG4gICAgfCBEZWxldGVcbiAgICB8IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IEJyYWNrZXRMZWZ0XG4gICAgfCBCcmFja2V0UmlnaHRcbiAgICB8IFNlbWljb2xvblxuICAgIHwgUXVvdGVcbiAgICB8IEJhY2txdW90ZVxuICAgIHwgQmFja3NsYXNoXG4gICAgfCBDb21tYVxuICAgIHwgUGVyaW9kXG4gICAgfCBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IEYxXG4gICAgfCBGMlxuICAgIHwgRjNcbiAgICB8IEY0XG4gICAgfCBGNVxuICAgIHwgRjZcbiAgICB8IEY3XG4gICAgfCBGOFxuICAgIHwgRjlcbiAgICB8IEYxMFxuICAgIHwgRjExXG4gICAgfCBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgTnVtcGFkMFxuICAgIHwgTnVtcGFkMVxuICAgIHwgTnVtcGFkMlxuICAgIHwgTnVtcGFkM1xuICAgIHwgTnVtcGFkNFxuICAgIHwgTnVtcGFkNVxuICAgIHwgTnVtcGFkNlxuICAgIHwgTnVtcGFkN1xuICAgIHwgTnVtcGFkOFxuICAgIHwgTnVtcGFkOVxuICAgIHwgTnVtcGFkTXVsdGlwbHlcbiAgICB8IE51bXBhZFN1YnRyYWN0XG4gICAgfCBOdW1wYWRBZGRcbiAgICB8IE51bXBhZERlY2ltYWxcbiAgICB8IE51bXBhZEVxdWFsXG4gICAgfCBOdW1wYWRFbnRlclxuICAgIHwgTnVtcGFkRGl2aWRlXG4gICAgfCBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgQ29udHJvbExlZnRcbiAgICB8IENvbnRyb2xSaWdodFxuICAgIHwgTWV0YUxlZnRcbiAgICB8IE1ldGFSaWdodFxuICAgIHwgU2hpZnRMZWZ0XG4gICAgfCBTaGlmdFJpZ2h0XG4gICAgfCBBbHRMZWZ0XG4gICAgfCBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IEFycm93TGVmdFxuICAgIHwgQXJyb3dSaWdodFxuICAgIHwgQXJyb3dVcFxuICAgIHwgQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgUGFnZVVwXG4gICAgfCBQYWdlRG93blxuICAgIHwgSG9tZVxuICAgIHwgRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFZvbHVtZU11dGVcbiAgICB8IFZvbHVtZURvd25cbiAgICB8IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgTWVkaWFUcmFja05leHRcbiAgICB8IE1lZGlhUGxheVBhdXNlXG4gICAgfCBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IENvbnRleHRNZW51XG4gICAgfCBCcm93c2VyU2VhcmNoXG4gICAgfCBCcm93c2VySG9tZVxuICAgIHwgQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgQnJvd3NlclJlZnJlc2hcbiAgICB8IEJyb3dzZXJTdG9wXG4gICAgfCBCcm93c2VyRm9yd2FyZFxuICAgIHwgQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBPU0xlZnRcbiAgICB8IE9TUmlnaHRcbiAgICB8IFNjcm9sbExvY2tcbiAgICB8IFByaW50U2NyZWVuXG4gICAgfCBJbnRsQmFja3NsYXNoXG4gICAgfCBJbnRsWWVuXG4gICAgfCBQYXVzZVxuXG4gIGxldCB0cnlfY29kZSB2ID1cbiAgICBtYXRjaCBKcy50b19zdHJpbmcgdiB3aXRoXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBcIktleUFcIiAtPiBLZXlBXG4gICAgfCBcIktleUJcIiAtPiBLZXlCXG4gICAgfCBcIktleUNcIiAtPiBLZXlDXG4gICAgfCBcIktleURcIiAtPiBLZXlEXG4gICAgfCBcIktleUVcIiAtPiBLZXlFXG4gICAgfCBcIktleUZcIiAtPiBLZXlGXG4gICAgfCBcIktleUdcIiAtPiBLZXlHXG4gICAgfCBcIktleUhcIiAtPiBLZXlIXG4gICAgfCBcIktleUlcIiAtPiBLZXlJXG4gICAgfCBcIktleUpcIiAtPiBLZXlKXG4gICAgfCBcIktleUtcIiAtPiBLZXlLXG4gICAgfCBcIktleUxcIiAtPiBLZXlMXG4gICAgfCBcIktleU1cIiAtPiBLZXlNXG4gICAgfCBcIktleU5cIiAtPiBLZXlOXG4gICAgfCBcIktleU9cIiAtPiBLZXlPXG4gICAgfCBcIktleVBcIiAtPiBLZXlQXG4gICAgfCBcIktleVFcIiAtPiBLZXlRXG4gICAgfCBcIktleVJcIiAtPiBLZXlSXG4gICAgfCBcIktleVNcIiAtPiBLZXlTXG4gICAgfCBcIktleVRcIiAtPiBLZXlUXG4gICAgfCBcIktleVVcIiAtPiBLZXlVXG4gICAgfCBcIktleVZcIiAtPiBLZXlWXG4gICAgfCBcIktleVdcIiAtPiBLZXlXXG4gICAgfCBcIktleVhcIiAtPiBLZXlYXG4gICAgfCBcIktleVlcIiAtPiBLZXlZXG4gICAgfCBcIktleVpcIiAtPiBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBcIkRpZ2l0MFwiIC0+IERpZ2l0MFxuICAgIHwgXCJEaWdpdDFcIiAtPiBEaWdpdDFcbiAgICB8IFwiRGlnaXQyXCIgLT4gRGlnaXQyXG4gICAgfCBcIkRpZ2l0M1wiIC0+IERpZ2l0M1xuICAgIHwgXCJEaWdpdDRcIiAtPiBEaWdpdDRcbiAgICB8IFwiRGlnaXQ1XCIgLT4gRGlnaXQ1XG4gICAgfCBcIkRpZ2l0NlwiIC0+IERpZ2l0NlxuICAgIHwgXCJEaWdpdDdcIiAtPiBEaWdpdDdcbiAgICB8IFwiRGlnaXQ4XCIgLT4gRGlnaXQ4XG4gICAgfCBcIkRpZ2l0OVwiIC0+IERpZ2l0OVxuICAgIHwgXCJNaW51c1wiIC0+IE1pbnVzXG4gICAgfCBcIkVxdWFsXCIgLT4gRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBcIlRhYlwiIC0+IFRhYlxuICAgIHwgXCJFbnRlclwiIC0+IEVudGVyXG4gICAgfCBcIlNwYWNlXCIgLT4gU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBcIkVzY2FwZVwiIC0+IEVzY2FwZVxuICAgIHwgXCJCYWNrc3BhY2VcIiAtPiBCYWNrc3BhY2VcbiAgICB8IFwiSW5zZXJ0XCIgLT4gSW5zZXJ0XG4gICAgfCBcIkRlbGV0ZVwiIC0+IERlbGV0ZVxuICAgIHwgXCJDYXBzTG9ja1wiIC0+IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IFwiQnJhY2tldExlZnRcIiAtPiBCcmFja2V0TGVmdFxuICAgIHwgXCJCcmFja2V0UmlnaHRcIiAtPiBCcmFja2V0UmlnaHRcbiAgICB8IFwiU2VtaWNvbG9uXCIgLT4gU2VtaWNvbG9uXG4gICAgfCBcIlF1b3RlXCIgLT4gUXVvdGVcbiAgICB8IFwiQmFja3F1b3RlXCIgLT4gQmFja3F1b3RlXG4gICAgfCBcIkJhY2tzbGFzaFwiIC0+IEJhY2tzbGFzaFxuICAgIHwgXCJDb21tYVwiIC0+IENvbW1hXG4gICAgfCBcIlBlcmlvZFwiIC0+IFBlcmlvZFxuICAgIHwgXCJTbGFzaFwiIC0+IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgXCJGMVwiIC0+IEYxXG4gICAgfCBcIkYyXCIgLT4gRjJcbiAgICB8IFwiRjNcIiAtPiBGM1xuICAgIHwgXCJGNFwiIC0+IEY0XG4gICAgfCBcIkY1XCIgLT4gRjVcbiAgICB8IFwiRjZcIiAtPiBGNlxuICAgIHwgXCJGN1wiIC0+IEY3XG4gICAgfCBcIkY4XCIgLT4gRjhcbiAgICB8IFwiRjlcIiAtPiBGOVxuICAgIHwgXCJGMTBcIiAtPiBGMTBcbiAgICB8IFwiRjExXCIgLT4gRjExXG4gICAgfCBcIkYxMlwiIC0+IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBcIk51bXBhZDBcIiAtPiBOdW1wYWQwXG4gICAgfCBcIk51bXBhZDFcIiAtPiBOdW1wYWQxXG4gICAgfCBcIk51bXBhZDJcIiAtPiBOdW1wYWQyXG4gICAgfCBcIk51bXBhZDNcIiAtPiBOdW1wYWQzXG4gICAgfCBcIk51bXBhZDRcIiAtPiBOdW1wYWQ0XG4gICAgfCBcIk51bXBhZDVcIiAtPiBOdW1wYWQ1XG4gICAgfCBcIk51bXBhZDZcIiAtPiBOdW1wYWQ2XG4gICAgfCBcIk51bXBhZDdcIiAtPiBOdW1wYWQ3XG4gICAgfCBcIk51bXBhZDhcIiAtPiBOdW1wYWQ4XG4gICAgfCBcIk51bXBhZDlcIiAtPiBOdW1wYWQ5XG4gICAgfCBcIk51bXBhZE11bHRpcGx5XCIgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IFwiTnVtcGFkU3VidHJhY3RcIiAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgXCJOdW1wYWRBZGRcIiAtPiBOdW1wYWRBZGRcbiAgICB8IFwiTnVtcGFkRGVjaW1hbFwiIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IFwiTnVtcGFkRXF1YWxcIiAtPiBOdW1wYWRFcXVhbFxuICAgIHwgXCJOdW1wYWRFbnRlclwiIC0+IE51bXBhZEVudGVyXG4gICAgfCBcIk51bXBhZERpdmlkZVwiIC0+IE51bXBhZERpdmlkZVxuICAgIHwgXCJOdW1Mb2NrXCIgLT4gTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IFwiQ29udHJvbExlZnRcIiAtPiBDb250cm9sTGVmdFxuICAgIHwgXCJDb250cm9sUmlnaHRcIiAtPiBDb250cm9sUmlnaHRcbiAgICB8IFwiTWV0YUxlZnRcIiAtPiBNZXRhTGVmdFxuICAgIHwgXCJNZXRhUmlnaHRcIiAtPiBNZXRhUmlnaHRcbiAgICB8IFwiU2hpZnRMZWZ0XCIgLT4gU2hpZnRMZWZ0XG4gICAgfCBcIlNoaWZ0UmlnaHRcIiAtPiBTaGlmdFJpZ2h0XG4gICAgfCBcIkFsdExlZnRcIiAtPiBBbHRMZWZ0XG4gICAgfCBcIkFsdFJpZ2h0XCIgLT4gQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBcIkFycm93TGVmdFwiIC0+IEFycm93TGVmdFxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgLT4gQXJyb3dSaWdodFxuICAgIHwgXCJBcnJvd1VwXCIgLT4gQXJyb3dVcFxuICAgIHwgXCJBcnJvd0Rvd25cIiAtPiBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBcIlBhZ2VVcFwiIC0+IFBhZ2VVcFxuICAgIHwgXCJQYWdlRG93blwiIC0+IFBhZ2VEb3duXG4gICAgfCBcIkhvbWVcIiAtPiBIb21lXG4gICAgfCBcIkVuZFwiIC0+IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBcIlZvbHVtZU11dGVcIiAtPiBWb2x1bWVNdXRlXG4gICAgfCBcIlZvbHVtZURvd25cIiAtPiBWb2x1bWVEb3duXG4gICAgfCBcIlZvbHVtZVVwXCIgLT4gVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgXCJNZWRpYVRyYWNrUHJldmlvdXNcIiAtPiBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IFwiTWVkaWFUcmFja05leHRcIiAtPiBNZWRpYVRyYWNrTmV4dFxuICAgIHwgXCJNZWRpYVBsYXlQYXVzZVwiIC0+IE1lZGlhUGxheVBhdXNlXG4gICAgfCBcIk1lZGlhU3RvcFwiIC0+IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgXCJDb250ZXh0TWVudVwiIC0+IENvbnRleHRNZW51XG4gICAgfCBcIkJyb3dzZXJTZWFyY2hcIiAtPiBCcm93c2VyU2VhcmNoXG4gICAgfCBcIkJyb3dzZXJIb21lXCIgLT4gQnJvd3NlckhvbWVcbiAgICB8IFwiQnJvd3NlckZhdm9yaXRlc1wiIC0+IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IFwiQnJvd3NlclJlZnJlc2hcIiAtPiBCcm93c2VyUmVmcmVzaFxuICAgIHwgXCJCcm93c2VyU3RvcFwiIC0+IEJyb3dzZXJTdG9wXG4gICAgfCBcIkJyb3dzZXJGb3J3YXJkXCIgLT4gQnJvd3NlckZvcndhcmRcbiAgICB8IFwiQnJvd3NlckJhY2tcIiAtPiBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IFwiT1NMZWZ0XCIgLT4gT1NMZWZ0XG4gICAgfCBcIk9TUmlnaHRcIiAtPiBPU1JpZ2h0XG4gICAgfCBcIlNjcm9sbExvY2tcIiAtPiBTY3JvbGxMb2NrXG4gICAgfCBcIlByaW50U2NyZWVuXCIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IFwiSW50bEJhY2tzbGFzaFwiIC0+IEludGxCYWNrc2xhc2hcbiAgICB8IFwiSW50bFllblwiIC0+IEludGxZZW5cbiAgICB8IFwiUGF1c2VcIiAtPiBQYXVzZVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX2xlZnQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRMZWZ0XG4gICAgfCAxNyAtPiBDb250cm9sTGVmdFxuICAgIHwgMTggLT4gQWx0TGVmdFxuICAgIHwgOTEgLT4gTWV0YUxlZnRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9yaWdodCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdFJpZ2h0XG4gICAgfCAxNyAtPiBDb250cm9sUmlnaHRcbiAgICB8IDE4IC0+IEFsdFJpZ2h0XG4gICAgfCA5MSAtPiBNZXRhUmlnaHRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9udW1wYWQgPSBmdW5jdGlvblxuICAgIHwgNDYgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgNDUgLT4gTnVtcGFkMFxuICAgIHwgMzUgLT4gTnVtcGFkMVxuICAgIHwgNDAgLT4gTnVtcGFkMlxuICAgIHwgMzQgLT4gTnVtcGFkM1xuICAgIHwgMzcgLT4gTnVtcGFkNFxuICAgIHwgMTIgLT4gTnVtcGFkNVxuICAgIHwgMzkgLT4gTnVtcGFkNlxuICAgIHwgMzYgLT4gTnVtcGFkN1xuICAgIHwgMzggLT4gTnVtcGFkOFxuICAgIHwgMzMgLT4gTnVtcGFkOVxuICAgIHwgMTMgLT4gTnVtcGFkRW50ZXJcbiAgICB8IDExMSAtPiBOdW1wYWREaXZpZGVcbiAgICB8IDEwNyAtPiBOdW1wYWRBZGRcbiAgICB8IDEwOSAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgMTA2IC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCAxMTAgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgOTYgLT4gTnVtcGFkMFxuICAgIHwgOTcgLT4gTnVtcGFkMVxuICAgIHwgOTggLT4gTnVtcGFkMlxuICAgIHwgOTkgLT4gTnVtcGFkM1xuICAgIHwgMTAwIC0+IE51bXBhZDRcbiAgICB8IDEwMSAtPiBOdW1wYWQ1XG4gICAgfCAxMDIgLT4gTnVtcGFkNlxuICAgIHwgMTAzIC0+IE51bXBhZDdcbiAgICB8IDEwNCAtPiBOdW1wYWQ4XG4gICAgfCAxMDUgLT4gTnVtcGFkOVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX25vcm1hbCA9IGZ1bmN0aW9uXG4gICAgfCAyNyAtPiBFc2NhcGVcbiAgICB8IDExMiAtPiBGMVxuICAgIHwgMTEzIC0+IEYyXG4gICAgfCAxMTQgLT4gRjNcbiAgICB8IDExNSAtPiBGNFxuICAgIHwgMTE2IC0+IEY1XG4gICAgfCAxMTcgLT4gRjZcbiAgICB8IDExOCAtPiBGN1xuICAgIHwgMTE5IC0+IEY4XG4gICAgfCAxMjAgLT4gRjlcbiAgICB8IDEyMSAtPiBGMTBcbiAgICB8IDEyMiAtPiBGMTFcbiAgICB8IDEyMyAtPiBGMTJcbiAgICB8IDQyIC0+IFByaW50U2NyZWVuXG4gICAgfCAxNDUgLT4gU2Nyb2xsTG9ja1xuICAgIHwgMTkgLT4gUGF1c2VcbiAgICB8IDE5MiAtPiBCYWNrcXVvdGVcbiAgICB8IDQ5IC0+IERpZ2l0MVxuICAgIHwgNTAgLT4gRGlnaXQyXG4gICAgfCA1MSAtPiBEaWdpdDNcbiAgICB8IDUyIC0+IERpZ2l0NFxuICAgIHwgNTMgLT4gRGlnaXQ1XG4gICAgfCA1NCAtPiBEaWdpdDZcbiAgICB8IDU1IC0+IERpZ2l0N1xuICAgIHwgNTYgLT4gRGlnaXQ4XG4gICAgfCA1NyAtPiBEaWdpdDlcbiAgICB8IDQ4IC0+IERpZ2l0MFxuICAgIHwgMTg5IC0+IE1pbnVzXG4gICAgfCAxODcgLT4gRXF1YWxcbiAgICB8IDggLT4gQmFja3NwYWNlXG4gICAgfCA5IC0+IFRhYlxuICAgIHwgODEgLT4gS2V5UVxuICAgIHwgODcgLT4gS2V5V1xuICAgIHwgNjkgLT4gS2V5RVxuICAgIHwgODIgLT4gS2V5UlxuICAgIHwgODQgLT4gS2V5VFxuICAgIHwgODkgLT4gS2V5WVxuICAgIHwgODUgLT4gS2V5VVxuICAgIHwgNzMgLT4gS2V5SVxuICAgIHwgNzkgLT4gS2V5T1xuICAgIHwgODAgLT4gS2V5UFxuICAgIHwgMjE5IC0+IEJyYWNrZXRMZWZ0XG4gICAgfCAyMjEgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCAyMjAgLT4gQmFja3NsYXNoXG4gICAgfCAyMCAtPiBDYXBzTG9ja1xuICAgIHwgNjUgLT4gS2V5QVxuICAgIHwgODMgLT4gS2V5U1xuICAgIHwgNjggLT4gS2V5RFxuICAgIHwgNzAgLT4gS2V5RlxuICAgIHwgNzEgLT4gS2V5R1xuICAgIHwgNzIgLT4gS2V5SFxuICAgIHwgNzQgLT4gS2V5SlxuICAgIHwgNzUgLT4gS2V5S1xuICAgIHwgNzYgLT4gS2V5TFxuICAgIHwgMTg2IC0+IFNlbWljb2xvblxuICAgIHwgMjIyIC0+IFF1b3RlXG4gICAgfCAxMyAtPiBFbnRlclxuICAgIHwgOTAgLT4gS2V5WlxuICAgIHwgODggLT4gS2V5WFxuICAgIHwgNjcgLT4gS2V5Q1xuICAgIHwgODYgLT4gS2V5VlxuICAgIHwgNjYgLT4gS2V5QlxuICAgIHwgNzggLT4gS2V5TlxuICAgIHwgNzcgLT4gS2V5TVxuICAgIHwgMTg4IC0+IENvbW1hXG4gICAgfCAxOTAgLT4gUGVyaW9kXG4gICAgfCAxOTEgLT4gU2xhc2hcbiAgICB8IDMyIC0+IFNwYWNlXG4gICAgfCA5MyAtPiBDb250ZXh0TWVudVxuICAgIHwgNDUgLT4gSW5zZXJ0XG4gICAgfCAzNiAtPiBIb21lXG4gICAgfCAzMyAtPiBQYWdlVXBcbiAgICB8IDQ2IC0+IERlbGV0ZVxuICAgIHwgMzUgLT4gRW5kXG4gICAgfCAzNCAtPiBQYWdlRG93blxuICAgIHwgMzcgLT4gQXJyb3dMZWZ0XG4gICAgfCA0MCAtPiBBcnJvd0Rvd25cbiAgICB8IDM5IC0+IEFycm93UmlnaHRcbiAgICB8IDM4IC0+IEFycm93VXBcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IG1ha2VfdW5pZGVudGlmaWVkIF8gPSBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gT3B0ZGVmLmNhc2UgdmFsdWUgbWFrZV91bmlkZW50aWZpZWQgZlxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IHJ1bl9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IGYgdmFsdWVcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBnZXRfa2V5X2NvZGUgZXZ0ID0gZXZ0IyMua2V5Q29kZVxuXG4gIGxldCB0cnlfa2V5X2xvY2F0aW9uIGV2dCA9XG4gICAgbWF0Y2ggZXZ0IyMubG9jYXRpb24gd2l0aFxuICAgIHwgMSAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX2xlZnRcbiAgICB8IDIgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9yaWdodFxuICAgIHwgMyAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX251bXBhZFxuICAgIHwgXyAtPiBtYWtlX3VuaWRlbnRpZmllZFxuXG4gIGxldCAoIHw+ICkgeCBmID0gZiB4XG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgVW5pZGVudGlmaWVkXG4gICAgfD4gdHJ5X25leHQgZXZ0IyMuY29kZSB0cnlfY29kZVxuICAgIHw+IHRyeV9rZXlfbG9jYXRpb24gZXZ0XG4gICAgfD4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9ub3JtYWxcblxuICBsZXQgb2Zfa2V5X2NvZGUgPSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5lbmRcblxubW9kdWxlIEtleWJvYXJkX2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBVY2hhci50IG9wdGlvblxuXG4gIGxldCBjaGFyX29mX2ludCB2YWx1ZSA9XG4gICAgaWYgMCA8IHZhbHVlIHRoZW4gdHJ5IFNvbWUgKFVjaGFyLm9mX2ludCB2YWx1ZSkgd2l0aCBfIC0+IE5vbmUgZWxzZSBOb25lXG5cbiAgbGV0IGVtcHR5X3N0cmluZyBfID0gSnMuc3RyaW5nIFwiXCJcblxuICBsZXQgbm9uZSBfID0gTm9uZVxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIGxldCBrZXkgPSBPcHRkZWYuZ2V0IGV2dCMjLmtleSBlbXB0eV9zdHJpbmcgaW5cbiAgICBtYXRjaCBrZXkjIy5sZW5ndGggd2l0aFxuICAgIHwgMCAtPiBPcHRkZWYuY2FzZSBldnQjIy5jaGFyQ29kZSBub25lIGNoYXJfb2ZfaW50XG4gICAgfCAxIC0+IGNoYXJfb2ZfaW50IChpbnRfb2ZfZmxvYXQgKEpzLnRvX2Zsb2F0IChrZXkjI2NoYXJDb2RlQXQgMCkpKVxuICAgIHwgXyAtPiBOb25lXG5lbmRcblxuKCoqKioqKVxuXG5sZXQgZWxlbWVudCA6ICNEb20uZWxlbWVudCB0IC0+IGVsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2VcblxudHlwZSB0YWdnZWRFbGVtZW50ID1cbiAgfCBBIG9mIGFuY2hvckVsZW1lbnQgdFxuICB8IEFyZWEgb2YgYXJlYUVsZW1lbnQgdFxuICB8IEF1ZGlvIG9mIGF1ZGlvRWxlbWVudCB0XG4gIHwgQmFzZSBvZiBiYXNlRWxlbWVudCB0XG4gIHwgQmxvY2txdW90ZSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IEJvZHkgb2YgYm9keUVsZW1lbnQgdFxuICB8IEJyIG9mIGJyRWxlbWVudCB0XG4gIHwgQnV0dG9uIG9mIGJ1dHRvbkVsZW1lbnQgdFxuICB8IENhbnZhcyBvZiBjYW52YXNFbGVtZW50IHRcbiAgfCBDYXB0aW9uIG9mIHRhYmxlQ2FwdGlvbkVsZW1lbnQgdFxuICB8IENvbCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IENvbGdyb3VwIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgRGVsIG9mIG1vZEVsZW1lbnQgdFxuICB8IERpYWxvZyBvZiBkaWFsb2dFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYWdyYXBoRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiaW5jbHVkZSBKc19vZl9vY2FtbC5Kc1xubW9kdWxlIFVybCA9IEpzX29mX29jYW1sLlVybFxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWwuRmlyZWJ1Z1xubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbC5GaWxlXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWwuRG9tXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbC5UeXBlZF9hcnJheVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sLlJlZ2V4cFxuXG50eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbnR5cGUgd2luZG93ID0gRG9tX2h0bWwud2luZG93XG5cbmxldCB0b19hcnJheWYgZiBhID0gQXJyYXkubWFwIGYgKHRvX2FycmF5IGEpXG5cbmxldCBvZl9hcnJheWYgZiBhID0gYXJyYXkgKEFycmF5Lm1hcCBmIGEpXG5cbmxldCB0b19saXN0IGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5IGFcblxubGV0IG9mX2xpc3QgbCA9IGFycmF5IEBAIEFycmF5Lm9mX2xpc3QgQEAgbFxuXG5sZXQgdG9fbGlzdGYgZiBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheWYgZiBhXG5cbmxldCBvZl9saXN0ZiBmIGEgPSBvZl9hcnJheWYgZiBAQCBBcnJheS5vZl9saXN0IGFcblxubGV0IG9wdGRlZiBmID0gZnVuY3Rpb24gTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHRkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHVub3B0ZGVmX2YgZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IGYgeFxuXG5sZXQgdW5vcHRkZWYgZGVmIHggPSBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiB4XG5cbmxldCBjb252ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBvcHQgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBjb252b3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBqc19sb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChzdHJpbmcgcylcblxubGV0IGxvZyBmbXQgPVxuICBGb3JtYXQua2ZwcmludGZcbiAgICAoZnVuIF9mbXQgLT4ganNfbG9nIChzdHJpbmcgKEZvcm1hdC5mbHVzaF9zdHJfZm9ybWF0dGVyICgpKSkpXG4gICAgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgZm10XG5cbmxldCBlcnJvcl9vZl9zdHJpbmcgcyA9IG5ldyVqcyBlcnJvcl9jb25zdHIgKHN0cmluZyBzKVxubGV0IGNhdGNoX2V4biBmID0gZnVuY3Rpb25cbiAgfCBKc19lcnJvci5FeG4gZSAtPiBmIChKc19lcnJvci50b19lcnJvciBlKVxuICB8IGV4biAtPiBmIEBAIGVycm9yX29mX3N0cmluZyBAQCBQcmludGV4Yy50b19zdHJpbmcgZXhuXG5cbm1vZHVsZSBBT3B0ID0gc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgbGV0IG51bGwgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IHVuZGVmaW5lZCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgcmV0dXJuIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgY29lcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwganNfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuICBsZXQgaXNfbm9uZSAoeCA6ICdhIHQpIDogYm9vbCA9IHggPT0gdW5kZWZpbmVkIHx8IGpzX2VxdWFscyB4IG51bGxcbiAgbGV0IG1hcCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIHJldHVybiAoZiAoY29lcmNlIHgpKVxuICBsZXQgYmluZCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IgdCkgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgZiAoY29lcmNlIHgpXG4gIGxldCB0ZXN0ICh4IDogJ2EgdCkgOiBib29sID0gbm90IChpc19ub25lIHgpXG4gIGxldCBpdGVyICh4IDogJ2EgdCkgKGYgOiAnYSAtPiB1bml0KSA6IHVuaXQgPSBpZiBub3QgKGlzX25vbmUgeCkgdGhlbiBmIChjb2VyY2UgeClcbiAgbGV0IGNhc2UgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2IpIChnIDogJ2EgLT4gJ2IpIDogJ2IgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgZyAoY29lcmNlIHgpXG4gIGxldCBnZXQgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2EpIDogJ2EgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgKGNvZXJjZSB4KVxuICBsZXQgb3B0aW9uID8obm9uZT11bmRlZmluZWQpICh4IDogJ2Egb3B0aW9uKSA6ICdhIHQgPSBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gIGxldCB0b19vcHRpb24gKHggOiAnYSB0KSA6ICdhIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGxldCBhb3B0ID8obm9uZT0odW5kZWZpbmVkIDogJ2IgdCkpIChmIDogJ2EgLT4gJ2IpIDogJ2Egb3B0aW9uIC0+ICdiIHQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gIGxldCB0b19hb3B0IChmIDogJ2EgLT4gJ2IpICh4IDogJ2EgdCkgOiAnYiBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSAoZiB4KSlcbmVuZFxudHlwZSAnYSBhb3B0ID0gJ2EgQU9wdC50XG5cbnR5cGUgJ2EgY2FzZV9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgPiBnZW5fcHJvcFxuXG5sZXQgcmVjIGNob29zZV9jYXNlX29wdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgaCA6OiB0IC0+IG1hdGNoIE9wdGRlZi50b19vcHRpb24gaCB3aXRoIE5vbmUgLT4gY2hvb3NlX2Nhc2Vfb3B0IHQgfCBTb21lIF8gLT4gaFxuXG5sZXQgY2hvb3NlX2Nhc2UgbCA9IGNob29zZV9jYXNlX29wdCAoTGlzdC5tYXAgT3B0ZGVmLnJldHVybiBsKVxuXG5sZXQgb2JqZWN0X2NzID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcbmxldCBhc3NpZ24gKG8xIDogXyB0KSAobzIgOiBfIHQpID0gVW5zYWZlLmNvZXJjZSAob2JqZWN0X2NzIyNhc3NpZ24gbzEgbzIpXG5sZXQgYXNzaWduX2xpc3QgbCA9IFVuc2FmZS5jb2VyY2UgKFVuc2FmZS5tZXRoX2NhbGwgb2JqZWN0X2NzIFwiYXNzaWduXCIgKEFycmF5Lm9mX2xpc3QgbCkpXG5cbmxldCByZW1vdmVfdW5kZWZpbmVkIG8gPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG8gaW5cbiAga2V5cyMjZm9yRWFjaCAod3JhcF9jYWxsYmFjayAoZnVuIGsgXyBfIC0+XG4gICAgICBpZiBub3QgKE9wdGRlZi50ZXN0IChVbnNhZmUuZ2V0IG8gaykpIHRoZW4gVW5zYWZlLmRlbGV0ZSBvIGspKVxuIiwib3BlbiBKc1xuXG50eXBlIG5vbnJlYyAnYSB0ID0gPCA+IHRcblxubGV0IG9iaiA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpICh2IDogJ2EpID0gVW5zYWZlLnNldCB0IChzdHJpbmcgaykgdlxuXG5sZXQgYWRkX2xpc3QgKHQgOiAnYSB0KSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSBsXG5cbmxldCBhZGRfbGlzdGYgKHQgOiAnYiB0KSAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIChmIHYpKSBsXG5cbmxldCBtYWtlIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdCB0IGw7XG4gIHRcblxubGV0IG1ha2VmIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2IgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0ZiB0IGYgbDtcbiAgdFxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpID0gVW5zYWZlLmRlbGV0ZSB0IChzdHJpbmcgaylcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgOiAnYSBvcHRpb24gPVxuICBPcHRkZWYudG9fb3B0aW9uIChVbnNhZmUuZ2V0IHQgKHN0cmluZyBrKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IHN0cmluZyBsaXN0ID1cbiAgdG9fbGlzdGYgdG9fc3RyaW5nIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtcyAodCA6ICdhIHQpIDogKHN0cmluZyAqICdhKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zZiAoZiA6ICgnYSAtPiAnYikpICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2IpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIGYgQEAgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBsZW5ndGggKHQgOiAnYSB0KSA9IChvYmojI2tleXMgdCkjIy5sZW5ndGhcblxubGV0IG1lcmdlIChsIDogJ2EgdCBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIChpdGVtcyB4KSkgbDtcbiAgdFxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHByb21pc2UwID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHRoZW5fIDogKCdhIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICAgIG1ldGhvZCBjYXRjaCA6ICgnYiAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9taXNlID0gWydhLCBlcnJvciB0XSBwcm9taXNlMFxuXG50eXBlICgnYSwgJ2IpIHByb21pc2VfY3MgPVxuICAoKCgnYSAtPiB1bml0KSAtPiAoJ2IgLT4gdW5pdCkgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdClcbiAgY29uc3RyXG5cbmxldCBwcm9taXNlIGYgPVxuICBsZXQgY3MgOiAoJ2EsICdiKSBwcm9taXNlX2NzID0gVW5zYWZlLmdsb2JhbCMjLl9Qcm9taXNlIGluXG4gIG5ldyVqcyBjcyAod3JhcF9jYWxsYmFjayBmKVxuXG5sZXQganRoZW4wID9lcnJvciAocHJvbSA6ICgnYSwgJ2IgdCkgcHJvbWlzZTAgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biAoZnVuIHggLT4gZWYgKFVuc2FmZS5jb2VyY2UgeCkpIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4gP2Vycm9yIChwcm9tIDogJ2EgcHJvbWlzZSB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPSBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biBlZiBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuMF9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4wIHByb20gZlxubGV0IGp0aGVuX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbiBwcm9tIGZcblxubGV0IHJ0aGVuIHByb20gZiA9XG4gIGp0aGVuIH5lcnJvcjooZnVuIGUgLT4gZiBAQCBFcnJvciBlKSBwcm9tIChmdW4geCAtPiBmIChPayB4KSlcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IGxvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgbzEgbzJcblxubGV0IGxvZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIG8xIG8yIG8zXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBsb2dfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGxvZ19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZGVidWcgbyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgb1xuXG5sZXQgZGVidWcyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIG8xIG8yXG5cbmxldCBkZWJ1ZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgbzEgbzIgbzNcblxubGV0IGRlYnVnX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBkZWJ1Z19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBkZWJ1Z19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCB3YXJuIG8gPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gb1xuXG5sZXQgd2FybjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiBvMSBvMlxuXG5sZXQgd2FybjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyBvMSBvMiBvM1xuXG5sZXQgd2Fybl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjd2FybiAoSnMuc3RyaW5nIHMpXG5cbmxldCB3YXJuX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgd2Fybl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGVycm9yIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIG9cblxubGV0IGVycm9yMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiBvMSBvMlxuXG5sZXQgZXJyb3IzIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIG8xIG8yIG8zXG5cbmxldCBlcnJvcl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKVxuXG5sZXQgZXJyb3Jfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZXJyb3Jfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIGJpZ0ludCA9IG9iamVjdFxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBvcHRkZWYgLT4gXyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHZhbHVlT2YgOiBiaWdJbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub25yZWMgdCA9IGJpZ0ludCB0XG5cbmxldCBiaWdJbnQgOiAoVW5zYWZlLmFueSAtPiB0KSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJCaWdJbnRcIlxuXG5sZXQgb2Zfc3RyaW5nIHMgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgc3RyaW5nIHMpXG5sZXQgb2ZfaW50IChpIDogaW50KSA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBpKVxubGV0IG9mX2ludDY0IChpIDogaW50NjQpID0gb2Zfc3RyaW5nIChJbnQ2NC50b19zdHJpbmcgaSlcbmxldCBvZl9uYXRpdmUgKGkgOiBuYXRpdmVpbnQpID0gb2Zfc3RyaW5nIChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfZmxvYXQgZiA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBudW1iZXJfb2ZfZmxvYXQgZilcblxubGV0IHRvX2xvY2FsZV9zdHJpbmcgP2ZtdCA/b3B0aW9ucyAobiA6IHQpID1cbiAgdG9fc3RyaW5nIChuIyN0b0xvY2FsZVN0cmluZyAob3B0ZGVmIHN0cmluZyBmbXQpIChPcHRkZWYub3B0aW9uIG9wdGlvbnMpKVxubGV0IHRvX3N0cmluZyAobiA6IHQpID0gdG9fc3RyaW5nIG4jI3RvU3RyaW5nXG4iLCJvcGVuIEpzXG5cbmxldCBzZXRJbm5lckh0bWwgZWx0IHMgPSBlbHQjIy5pbm5lckhUTUwgOj0gc3RyaW5nIHNcblxubGV0IHNldFRleHQgZWx0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgcyAtPlxuICAgICAgZWx0IyMudGV4dENvbnRlbnQgOj0gc29tZSAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjYWRkIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzZXMgZWx0IGwgPSBMaXN0Lml0ZXIgKGFkZENsYXNzIGVsdCkgbFxuXG5sZXQgcmVtb3ZlQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI3JlbW92ZSAoc3RyaW5nIHMpXG5cbmxldCBjb250YWluc0NsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNjb250YWlucyAoc3RyaW5nIHMpXG5cbmxldCBzZXRBdHRyaWJ1dGUgZWx0IGtleSB2YWx1ZSA9IGVsdCMjc2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSAoc3RyaW5nIHZhbHVlKVxuXG5sZXQgcmVtb3ZlQXR0cmlidXRlIGVsdCBrZXkgPSBlbHQjI3JlbW92ZUF0dHJpYnV0ZSAoc3RyaW5nIGtleSlcblxubGV0IGdldEF0dHJpYnV0ZSBlbHQga2V5ID0gT3B0LnRvX29wdGlvbiAoZWx0IyNnZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpKVxuXG5sZXQgc2V0Q1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhZGRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBsZXQgc3R5bGVzID1cbiAgICBtYXRjaCBnZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIHN0eWxlc1xuICAgIHwgU29tZSBvbGRfc3R5bGVzIC0+XG4gICAgICAgIG9sZF9zdHlsZXMgXiBcIjsgXCIgXiBzdHlsZXNcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhcHBlbmRDaGlsZCA9IERvbS5hcHBlbmRDaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGQgPSBEb20ucmVtb3ZlQ2hpbGRcblxubGV0IGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9IExpc3QuaXRlciAoRG9tLmFwcGVuZENoaWxkIHBhcmVudCkgY2hpbGRyZW5cblxubGV0IGNoaWxkcmVuIHBhcmVudCA9IERvbS5saXN0X29mX25vZGVMaXN0IHBhcmVudCMjLmNoaWxkTm9kZXNcblxubGV0IHJlbW92ZUNoaWxkaSBwYXJlbnQgaSA9XG4gIG1hdGNoIExpc3QubnRoX29wdCAoY2hpbGRyZW4gcGFyZW50KSBpIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgY2hpbGQgLT5cbiAgICAgIHJlbW92ZUNoaWxkIHBhcmVudCBjaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50ID0gTGlzdC5pdGVyIChyZW1vdmVDaGlsZCBwYXJlbnQpIChjaGlsZHJlbiBwYXJlbnQpXG5cbmxldCByZXBsYWNlQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID1cbiAgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50IDtcbiAgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuXG5cbmxldCBieV9pZCBzID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgc1xuXG5sZXQgYWRkTGlzdGVuZXIgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IGV2IGYgPVxuICBsZXQgY2FwdHVyZSA9IE9wdGlvbi5tYXAgYm9vbCBjYXB0dXJlIGluXG4gIGxldCBvbmNlID0gT3B0aW9uLm1hcCBib29sIG9uY2UgaW5cbiAgbGV0IHBhc3NpdmUgPSBPcHRpb24ubWFwIGJvb2wgcGFzc2l2ZSBpblxuICBpZ25vcmUgQEBcbiAgRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgKERvbS5FdmVudC5tYWtlIGV2KVxuICAgIChEb20uaGFuZGxlciAoZnVuIGUgLT4gYm9vbCAoZiBlKSkpXG5cbm1vZHVsZSBFbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oY2xhc3NlcyA9IFtdKSA/KHN0eWxlcyA9IFtdKSA/KGxpc3RlbiA9IFtdKSA/KGF0dHIgPSBbXSkgP3RleHQgZlxuICAgICAgY2hpbGRyZW4gPVxuICAgIGxldCBlbHQgPSBmIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgTGlzdC5pdGVyIChmdW4gKGV2LCBmKSAtPiBhZGRMaXN0ZW5lciBlbHQgZXYgZikgbGlzdGVuIDtcbiAgICBhZGRDbGFzc2VzIGVsdCBjbGFzc2VzIDtcbiAgICBzZXRDU1MgZWx0IHN0eWxlcyA7XG4gICAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IHNldEF0dHJpYnV0ZSBlbHQgayB2KSBhdHRyIDtcbiAgICBzZXRUZXh0IGVsdCB0ZXh0IDtcbiAgICBhcHBlbmRDaGlsZHJlbiBlbHQgY2hpbGRyZW4gO1xuICAgIGVsdFxuXG4gIGxldCBidXR0b24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUJ1dHRvbiBjaGlsZHJlblxuXG4gIGxldCBkaXYgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZURpdiBjaGlsZHJlblxuXG4gIGxldCBhID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVBIGNoaWxkcmVuXG5cbiAgbGV0IHNwYW4gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNwYW4gY2hpbGRyZW5cblxuICBsZXQgZm9ybSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRm9ybSBjaGlsZHJlblxuXG4gIGxldCBvcHRpb24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZU9wdGlvbiBjaGlsZHJlblxuXG4gIGxldCBzZWxlY3QgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNlbGVjdCBjaGlsZHJlblxuXG4gIGxldCBpbnB1dCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgKCkgPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW5wdXQgW11cblxuICBsZXQgaWZyYW1lID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJZnJhbWUgY2hpbGRyZW5cblxuICBsZXQgbGFiZWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxhYmVsIGNoaWxkcmVuXG5cbiAgbGV0IHVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVVbCBjaGlsZHJlblxuXG4gIGxldCBsaSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGkgY2hpbGRyZW5cblxuICBsZXQgaW1nID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbWcgY2hpbGRyZW5cblxuICBsZXQgc2NyaXB0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTY3JpcHQgY2hpbGRyZW5cblxuICBsZXQgdGFibGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRhYmxlIGNoaWxkcmVuXG5cbiAgbGV0IHRyID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUciBjaGlsZHJlblxuXG4gIGxldCB0aCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGggY2hpbGRyZW5cblxuICBsZXQgdGQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRkIGNoaWxkcmVuXG5lbmRcblxubGV0IGVuY2Fwc2UgcyA9IFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiXG5cbmxldCBzdHJpbmdzX3RvX2FycmF5IGwgPSBcIltcIiBeIFN0cmluZy5jb25jYXQgXCIsXCIgbCBeIFwiXVwiXG5cbmxldCBzdHJpbmdzX3RvX29iamVjdCBsID1cbiAgbGV0IHMgPVxuICAgIFwie1wiXG4gICAgXiBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBlbmNhcHNlIGsgXiBcIjpcIiBeIHYpIGwpXG4gICAgXiBcIn1cIlxuICBpblxuICB0cnkgX0pTT04jI3BhcnNlIChzdHJpbmcgcylcbiAgd2l0aCBfIC0+XG4gICAgbG9nX3N0ciAoXCJjYW5ub3QgcGFyc2UganNvbiBcIiBeIHMpIDtcbiAgICBVbnNhZmUub2JqIFt8fF1cbiIsIm9wZW4gRXpqc19taW5cblxubW9kdWxlIFR5cGVzID0gRXpqc19pZGJfdHlwZXNcbm9wZW4gVHlwZXNcblxudHlwZSBtb2RlID0gUkVBRE9OTFkgfCBSRUFEV1JJVEUgfCBWRVJTSU9OQ0hBTkdFXG50eXBlIGRpcmVjdGlvbiA9IE5FWFQgfCBQUkVWIHwgTkVYVFVOSVFVRSB8IFBSRVZVTklRVUVcblxudHlwZSBkYl9vcHRpb25zID0geyBrZXlfcGF0aCA6IHN0cmluZyBvcHRpb247IGF1dG9faW5jcmVtZW50IDogYm9vbCBvcHRpb24gfVxuXG50eXBlIGRiX3VwZ3JhZGUgPSB7IG9sZF92ZXJzaW9uIDogaW50OyBuZXdfdmVyc2lvbiA6IGludCB9XG5cbnR5cGUgaW5kZXhfb3B0aW9ucyA9IHsgdW5pcXVlIDogYm9vbCBvcHRpb247IG11bHRpX2VudHJ5IDogYm9vbCBvcHRpb247IGxvY2FsZSA6IGJvb2wgb3B0aW9uIH1cblxubW9kdWxlIHR5cGUgVHJfc2lnID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGpzXG4gIHZhbCB0b19qcyA6IHQgLT4ganNcbiAgdmFsIG9mX2pzIDoganMgLT4gdFxuZW5kXG5cbmxldCBzdHJfb2ZfbW9kZSA9IGZ1bmN0aW9uXG4gIHwgUkVBRE9OTFkgLT4gc3RyaW5nIFwicmVhZG9ubHlcIlxuICB8IFJFQURXUklURSAtPiBzdHJpbmcgXCJyZWFkd3JpdGVcIlxuICB8IFZFUlNJT05DSEFOR0UgLT4gc3RyaW5nIFwidmVyc2lvbmNoYW5nZVwiXG5cbmxldCBzdHJfb2ZfZGlyZWN0aW9uID0gZnVuY3Rpb25cbiAgfCBORVhUIC0+IHN0cmluZyBcIm5leHRcIlxuICB8IFBSRVYgLT4gc3RyaW5nIFwicHJldlwiXG4gIHwgTkVYVFVOSVFVRSAtPiBzdHJpbmcgXCJuZXh0dW5pcXVlXCJcbiAgfCBQUkVWVU5JUVVFIC0+IHN0cmluZyBcInByZXZ1bmlxdWVcIlxuXG5sZXQgaURCS2V5UmFuZ2UgOiBVbnNhZmUuYW55IGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiXG5sZXQgaW5kZXhlZERCIDoganNfc3RyaW5nIHQgaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiXG5cbmxldCByZXN1bHQgciA9IHIjIy5yZXN1bHRcblxubGV0IHdyYXAgP2Vycm9yID9jYWxsYmFjayByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgd3JhcGYgP2Vycm9yID9jYWxsYmFjayBnIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAoZyBAQCByZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IGRiX3VwZ3JhZGVfZXZlbnQgKGUgOiBpREJWZXJzaW9uQ2hhbmdlRXZlbnQgdCkgPSB7XG4gIG9sZF92ZXJzaW9uID0gZSMjLm9sZFZlcnNpb247XG4gIG5ld192ZXJzaW9uID0gZSMjLm5ld1ZlcnNpb247XG59XG5cbmxldCBvcGVuREIgP3VwZ3JhZGUgP2Vycm9yID92ZXJzaW9uIG5hbWUgY2FsbGJhY2sgPVxuICBsZXQgaW5kZXhlZERCIDogXyBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCIgaW5cbiAgbGV0IHIgPSBsYXp5IChpbmRleGVkREIjI19vcGVuIChzdHJpbmcgbmFtZSkgKEFPcHQub3B0aW9uIHZlcnNpb24pKSBpblxuICB3cmFwID9lcnJvciB+Y2FsbGJhY2sgcjtcbiAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgciMjLm9udXBncmFkZW5lZWRlZCA6PVxuICAgIEFPcHQuYW9wdCAoZnVuIHUgLT4gd3JhcF9jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgbGV0IHYgPSBkYl91cGdyYWRlX2V2ZW50IGUgaW5cbiAgICAgICAgbGV0IGRiID0gcmVzdWx0IHIgaW5cbiAgICAgICAgdSBkYiB2KSkgdXBncmFkZVxuXG5sZXQgdHJhbnNhY3Rpb24gciA6IGlEQlRyYW5zYWN0aW9uIHQgPSByIyMudHJhbnNhY3Rpb25cblxubGV0IGNyZWF0ZV9kYl9vcHRpb25zIHtrZXlfcGF0aDsgYXV0b19pbmNyZW1lbnR9IDogY3JlYXRlX2RiX29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICB2YWwga2V5UGF0aCA9IEFPcHQuYW9wdCBzdHJpbmcga2V5X3BhdGhcbiAgdmFsIGF1dG9JbmNyZW1lbnQgPSBBT3B0LmFvcHQgYm9vbCBhdXRvX2luY3JlbWVudFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcmUgP29wdGlvbnMgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA9XG4gIFVuc2FmZS5jb2VyY2UgQEBcbiAgZGIjI2NyZWF0ZU9iamVjdFN0b3JlIChzdHJpbmcgbmFtZSkgKEFPcHQuYW9wdCBjcmVhdGVfZGJfb3B0aW9ucyBvcHRpb25zKVxuXG5sZXQgZ2V0X3N0b3JlID9tb2RlIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgOiAoXywgXykgaURCT2JqZWN0U3RvcmUgdCA9XG4gIGxldCB0ciA9IGRiIyN0cmFuc2FjdGlvbiAoYXJyYXkgW3wgc3RyaW5nIG5hbWUgfF0pIChBT3B0LmFvcHQgc3RyX29mX21vZGUgbW9kZSkgaW5cbiAgVW5zYWZlLmNvZXJjZSBAQCB0ciMjb2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKVxuXG5tb2R1bGUgU3RvcmUoSyA6IFRyX3NpZykoRCA6IFRyX3NpZykgPSBzdHJ1Y3RcblxuICB0eXBlIHN0b3JlID0gKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHRcbiAgdHlwZSBrZXlzID0gSyBvZiBLLnQgfCBLUiBvZiBLLmpzIGlEQktleVJhbmdlIHRcblxuICBsZXQgY3JlYXRlID9vcHRpb25zIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgY3JlYXRlX3N0b3JlID9vcHRpb25zIGRiIG5hbWVcblxuICBsZXQgc3RvcmUgP21vZGUgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBnZXRfc3RvcmUgP21vZGUgZGIgbmFtZVxuXG4gIGxldCBhZGQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgSy5vZl9qcyBAQCBsYXp5IChzdCMjYWRkIChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCBwdXQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXAgP2NhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjcHV0IChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCByYW5nZSA/b2xvd2VyID9vdXBwZXIgP2xvd2VyID91cHBlciAoKSA9XG4gICAgbGV0IGlEQktleVJhbmdlIDogSy5qcyBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIiBpblxuICAgIG1hdGNoIGxvd2VyLCB1cHBlciB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBsb3dlciwgTm9uZSAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNsb3dlckJvdW5kIChLLnRvX2pzIGxvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSlcbiAgICB8IE5vbmUsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjdXBwZXJCb3VuZCAoSy50b19qcyB1cHBlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG4gICAgfCBTb21lIGxvd2VyLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2JvdW5kXG4gICAgICAgICAgICAoSy50b19qcyBsb3dlcikgKEsudG9fanMgdXBwZXIpXG4gICAgICAgICAgICAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcblxuICBsZXQgY291bnQgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpIChjYWxsYmFjayA6IGludCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCBBT3B0LnVuZGVmaW5lZClcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCAoQU9wdC5kZWYgKEsudG9fanMgaykpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudF9yYW5nZSAoQU9wdC5kZWYgcikpXG5cbiAgbGV0IGdldCA/ZXJyb3IgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChELm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGwgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGdldF9rZXkgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoSy5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsX2tleXMgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXNfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGRlbGV0ZSA/Y2FsbGJhY2sgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSA9IGZ1bmN0aW9uXG4gICAgfCBLIGtleSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGVfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGl0ZXIgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgayAoRC5vZl9qcyBjIyMudmFsdWUpO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKSAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBpdGVyX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGNsZWFyID9lcnJvciA/Y2FsbGJhY2sgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIChmdW4gXyAtPiAoKSkgQEAgbGF6eSBzdCMjY2xlYXJcblxuICBsZXQgY3JlYXRlX2luZGV4X29wdGlvbnMge3VuaXF1ZTsgbXVsdGlfZW50cnk7IGxvY2FsZX0gOiBjcmVhdGVfaW5kZXhfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gICAgdmFsIHVuaXF1ZSA9IEFPcHQuYW9wdCBib29sIHVuaXF1ZVxuICAgIHZhbCBtdWx0aUVudHJ5ID0gQU9wdC5hb3B0IGJvb2wgbXVsdGlfZW50cnlcbiAgICB2YWwgbG9jYWxlID0gQU9wdC5hb3B0IGJvb2wgbG9jYWxlXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVfaW5kZXggP29wdGlvbnMgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUga2V5X3BhdGggPVxuICAgIGxldCBvcHRpb25zID0gQU9wdC5hb3B0IGNyZWF0ZV9pbmRleF9vcHRpb25zIG9wdGlvbnMgaW5cbiAgICBzdCMjY3JlYXRlSW5kZXggKHN0cmluZyBuYW1lKSAoc3RyaW5nIGtleV9wYXRoKSBvcHRpb25zXG5cbiAgbGV0IGRlbGV0ZV9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgaWdub3JlIEBAIHN0IyNkZWxldGVJbmRleCAoc3RyaW5nIG5hbWUpXG5cbiAgbGV0IGdldF9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgc3QjI2luZGV4IChzdHJpbmcgbmFtZSlcblxuZW5kXG5cbm1vZHVsZSBOb1RyKFMgOiBzaWcgdHlwZSB0IGVuZCkgOiBUcl9zaWcgd2l0aCB0eXBlIHQgPSBTLnQgYW5kIHR5cGUganMgPSBTLnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUy50XG4gIHR5cGUganMgPSBTLnRcbiAgbGV0IHRvX2pzIHggPSB4XG4gIGxldCBvZl9qcyB4ID0geFxuZW5kXG5cbm1vZHVsZSBJbnRUciA6IChUcl9zaWcgd2l0aCB0eXBlIGpzID0gaW50IGFuZCB0eXBlIHQgPSBpbnQpID0gTm9UcihzdHJ1Y3QgdHlwZSB0ID0gaW50IGVuZClcblxubW9kdWxlIFN0cmluZ1RyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGpzX3N0cmluZyB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGpzX3N0cmluZyB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IHN0cmluZyB4XG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgTnVtYmVyVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gbnVtYmVyIHQgYW5kIHR5cGUgdCA9IGZsb2F0ID0gc3RydWN0XG4gIHR5cGUganMgPSBudW1iZXIgdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdG9fanMgeCA9IG51bWJlcl9vZl9mbG9hdCB4XG4gIGxldCBvZl9qcyB4ID0gZmxvYXRfb2ZfbnVtYmVyIHhcbmVuZFxuXG5tb2R1bGUgRGF0ZVRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGRhdGUgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBkYXRlIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gbmV3JWpzIGRhdGVfZnJvbVRpbWVWYWx1ZSAoZGF0ZSMjcGFyc2UgKHN0cmluZyB4KSlcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeCMjdG9Mb2NhbGVTdHJpbmdcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPSBTdGRsaWIuaW5fY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5cbmxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcbjs7XG5cbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGUgfmYgPSBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5IGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG5cbmxldCBtYXlfZW9mIGYgPVxuICB0cnkgU29tZSAoZiAoKSkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IE5vbmVcbjs7XG5cbmxldCBpbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLmlucHV0IHQgYnVmIHBvcyBsZW5cbmxldCByZWFsbHlfaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIucmVhbGx5X2lucHV0IHQgYnVmIHBvcyBsZW4pXG5sZXQgcmVhbGx5X2lucHV0X2V4biB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgaW5wdXRfYnl0ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9ieXRlIHQpXG5sZXQgaW5wdXRfY2hhciB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9jaGFyIHQpXG5sZXQgaW5wdXRfYmluYXJ5X2ludCB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9iaW5hcnlfaW50IHQpXG5sZXQgdW5zYWZlX2lucHV0X3ZhbHVlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X3ZhbHVlIHQpXG5sZXQgaW5wdXRfYnVmZmVyIHQgYnVmIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWYgdCBsZW4pXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuXG5sZXQgaW5wdXRfYWxsIHQgPVxuICAoKiBXZSB1c2UgNjU1MzYgYmVjYXVzZSB0aGF0IGlzIHRoZSBzaXplIG9mIE9DYW1sJ3MgSU8gYnVmZmVycy4gKilcbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpblxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBjaHVua19zaXplIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgU3RkbGliLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWZmZXIgdCBjaHVua19zaXplO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgdHJ5IGxvb3AgKCkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBidWZmZXJcbjs7XG5cbmxldCB0cmltIH5maXhfd2luX2VvbCBsaW5lID1cbiAgaWYgZml4X3dpbl9lb2xcbiAgdGhlbiAoXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAoU3RyaW5nLmdldCBsaW5lIChsZW4gLSAxKSkgJ1xccidcbiAgICB0aGVuIFN0cmluZy5zdWIgbGluZSB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICBlbHNlIGxpbmUpXG4gIGVsc2UgbGluZVxuOztcblxubGV0IGlucHV0X2xpbmUgPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBtYXRjaCBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X2xpbmUgdCkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgbGluZSAtPiBTb21lICh0cmltIH5maXhfd2luX2VvbCBsaW5lKVxuOztcblxubGV0IGlucHV0X2xpbmVfZXhuID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbGV0IGxpbmUgPSBTdGRsaWIuaW5wdXRfbGluZSB0IGluXG4gIHRyaW0gfmZpeF93aW5fZW9sIGxpbmVcbjs7XG5cbmxldCBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIGFjID1cbiAgICBtYXRjaCBpbnB1dF9saW5lID9maXhfd2luX2VvbCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNcbiAgICB8IFNvbWUgbGluZSAtPiBsb29wIChmIGFjIGxpbmUpXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IGlucHV0X2xpbmVzID9maXhfd2luX2VvbCB0ID1cbiAgTGlzdC5yZXYgKGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6W10gfmY6KGZ1biBsaW5lcyBsaW5lIC0+IGxpbmUgOjogbGluZXMpKVxuOztcblxubGV0IGl0ZXJfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmYgPVxuICBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OigpIH5mOihmdW4gKCkgbGluZSAtPiBmIGxpbmUpXG47O1xuXG5sZXQgcmVhZF9saW5lcyA/Zml4X3dpbl9lb2wgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6KGlucHV0X2xpbmVzID9maXhfd2luX2VvbClcbmxldCByZWFkX2FsbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjppbnB1dF9hbGxcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gU3RkbGliLm91dF9jaGFubmVsXG5cbmxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgc3Rkb3V0ID0gU3RkbGliLnN0ZG91dFxubGV0IHN0ZGVyciA9IFN0ZGxpYi5zdGRlcnJcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgaWYgcGh5c19lcXVhbCB0IHN0ZGVyclxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRlcnI+XCJcbiAgZWxzZSBpZiBwaHlzX2VxdWFsIHQgc3Rkb3V0XG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZG91dD5cIlxuICBlbHNlIFNleHAuQXRvbSBcIjxPdXRfY2hhbm5lbC50PlwiXG47O1xuXG50eXBlICdhIHdpdGhfY3JlYXRlX2FyZ3MgPVxuICA/YmluYXJ5OmJvb2wgLT4gP2FwcGVuZDpib29sIC0+ID9mYWlsX2lmX2V4aXN0czpib29sIC0+ID9wZXJtOmludCAtPiAnYVxuXG5sZXQgY3JlYXRlXG4gICAgICA/KGJpbmFyeSA9IHRydWUpXG4gICAgICA/KGFwcGVuZCA9IGZhbHNlKVxuICAgICAgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpXG4gICAgICBmaWxlXG4gID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBTdGRsaWIub3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuOztcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub19lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgb3V0cHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIub3V0cHV0IHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIub3V0cHV0X3N1YnN0cmluZyB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dF9jaGFyID0gU3RkbGliLm91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X2J5dGUgPSBTdGRsaWIub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IFN0ZGxpYi5vdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF9idWZmZXIgPSBTdGRsaWIuQnVmZmVyLm91dHB1dF9idWZmZXJcbmxldCBvdXRwdXRfdmFsdWUgPSBTdGRsaWIub3V0cHV0X3ZhbHVlXG5sZXQgbmV3bGluZSB0ID0gb3V0cHV0X3N0cmluZyB0IFwiXFxuXCJcblxubGV0IG91dHB1dF9saW5lcyB0IGxpbmVzID1cbiAgTGlzdC5pdGVyIGxpbmVzIH5mOihmdW4gbGluZSAtPlxuICAgIG91dHB1dF9zdHJpbmcgdCBsaW5lO1xuICAgIG5ld2xpbmUgdClcbjs7XG5cbmxldCBwcmludGYgPSBTdGRsaWIuUHJpbnRmLnByaW50ZlxubGV0IGVwcmludGYgPSBTdGRsaWIuUHJpbnRmLmVwcmludGZcbmxldCBmcHJpbnRmID0gU3RkbGliLlByaW50Zi5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRsaWIuUHJpbnRmLmtmcHJpbnRmXG5sZXQgcHJpbnRfc3RyaW5nID0gU3RkbGliLnByaW50X3N0cmluZ1xubGV0IHByaW50X2VuZGxpbmUgPSBTdGRsaWIucHJpbnRfZW5kbGluZVxubGV0IHByZXJyX2VuZGxpbmUgPSBTdGRsaWIucHJlcnJfZW5kbGluZVxuXG5sZXQgcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJpbnRfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgZXByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByZXJyX2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG47O1xuXG5sZXQgd3JpdGVfbGluZXMgZmlsZSBsaW5lcyA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfbGluZXMgdCBsaW5lcylcbmxldCB3cml0ZV9hbGwgZmlsZSB+ZGF0YSA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbiIsIm1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG5tb2R1bGUgQ29udl9lcnJvciA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvclxubW9kdWxlIFNleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiBCYXNlXG5cbnR5cGUgJ2EgdGVzdF9wcmVkXG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ICgnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9lcVxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+ICdhXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxudHlwZSAnYSB0ZXN0X3Jlc3VsdFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+IGV4cGVjdDonYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbmV4Y2VwdGlvbiBFIG9mIHN0cmluZyAqIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnIGJvZHkgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgbWF0Y2ggbWVzc2FnZSB3aXRoXG4gICAgfCBOb25lIC0+IHRhZ1xuICAgIHwgU29tZSBzIC0+IHMgXiBcIjogXCIgXiB0YWdcbiAgaW5cbiAgbGV0IHNleHAgPVxuICAgIFNleHAuTGlzdCAoXG4gICAgICBib2R5XG4gICAgICBAIFsgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiTG9jXCI7IFNleHAuQXRvbSBwb3MgXSBdXG4gICAgICBAIGJlZ2luIG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgXyAtPiBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIlN0YWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgWyVzZXhwX29mOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IGxpc3RdIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gXVxuICAgICAgZW5kXG4gICAgKVxuICBpblxuICAoKiBIZXJlIGFuZCBpbiBvdGhlciBwbGFjZXMgd2UgcmV0dXJuIGV4Y2VwdGlvbnMsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHJhaXNpbmcsIGFuZFxuICAgICBpbnN0ZWFkIHJhaXNlIGF0IHRoZSBsYXRlc3QgbW9tZW50IHBvc3NpYmxlLCBzbyBiYWNrdHJhY2UgZG9uJ3QgaW5jbHVkZSBub2lzZSBmcm9tXG4gICAgIHRoZXNlIGZ1bmN0aW9ucyB0aGF0IGNvbnN0cnVjdCBleGNlcHRpb25zLiAqKVxuICBFIChtZXNzYWdlLCBzZXhwKVxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwicHJlZGljYXRlIGZhaWxlZFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcIlZhbHVlXCI7IHNleHBpZmllciB0XVxuICBdXG5cbmxldCB0ZXN0X3ByZWQgfnBvcyB+c2V4cGlmaWVyIH5oZXJlID9tZXNzYWdlIHByZWRpY2F0ZSB0ID1cbiAgaWYgbm90IChwcmVkaWNhdGUgdCkgdGhlblxuICAgIHJhaXNlIChleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0KVxuXG5sZXQgcl9kaWZmIDogKGZyb21fOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHVuaXQpIG9wdGlvbiByZWYgPSByZWYgICBOb25lXG5sZXQgc2V0X2RpZmZfZnVuY3Rpb24gZiA9IHJfZGlmZiA6PSBmXG5cbmxldCBbQGNvbGRdIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdCA9XG4gIGxldCBnb3QgPSBzZXhwaWZpZXIgZ290IGluXG4gIGxldCBleHBlY3QgPSBzZXhwaWZpZXIgZXhwZWN0IGluXG4gIGJlZ2luIG1hdGNoICFyX2RpZmYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRpZmYgLT5cbiAgICBsZXQgZnJvbV8gPSBTZXhwLnRvX3N0cmluZ19odW0gZXhwZWN0IGluXG4gICAgbGV0IHRvXyAgID0gU2V4cC50b19zdHJpbmdfaHVtIGdvdCBpblxuICAgIGRpZmYgfmZyb21fIH50b19cbiAgZW5kO1xuICBgRmFpbCAoZXhwZWN0LCBnb3QpXG5cbmxldCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgcGFzcyA9XG4gICAgbWF0Y2ggZXF1YWwgd2l0aFxuICAgIHwgTm9uZSAtPiBjb21wYXJhdG9yIGdvdCBleHBlY3QgPSAwXG4gICAgfCBTb21lIGYgLT4gZiBnb3QgZXhwZWN0XG4gIGluXG4gIGlmIHBhc3NcbiAgdGhlbiBgUGFzc1xuICBlbHNlIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdFxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJjb21wYXJpc29uIGZhaWxlZFwiIFtcbiAgICB0MTtcbiAgICBTZXhwLkF0b20gXCJ2c1wiO1xuICAgIHQyO1xuICBdXG5cbmxldCB0ZXN0X2VxIH5wb3MgfnNleHBpZmllciB+Y29tcGFyYXRvciB+aGVyZSA/bWVzc2FnZSA/ZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0OnQxIH5nb3Q6dDIgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKHQxLCB0MikgLT4gcmFpc2UgKGV4bl90ZXN0X2VxIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnQxIH50MilcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiZ290IHVuZXhwZWN0ZWQgcmVzdWx0XCIgW1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiZXhwZWN0ZWRcIjsgZXhwZWN0XTtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImdvdFwiOyBnb3RdO1xuICBdXG5cbmxldFtAd2FybmluZyBcIi0xNlwiXSB0ZXN0X3Jlc3VsdCB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIH5leHBlY3QgfmdvdCA9XG4gIG1hdGNoIHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3QgfmdvdCB3aXRoXG4gIHwgYFBhc3MgLT4gKClcbiAgfCBgRmFpbCAoZXhwZWN0LCBnb3QpIC0+IHJhaXNlIChleG5fdGVzdF9yZXN1bHQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+ZXhwZWN0IH5nb3QpXG4iLCJsZXQgdW5pcXVlX2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbigqIFVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgbGlibmFtZSBpbiBzdWNoIGEgd2F5IHRoYXQgZm9yIGZ1bmN0b3IgYXBwbGljYXRpb25zLCBpdCBpc1xuICAgdGhlIGNhbGxpbmcgbGlicmFyaWVzIG5hbWUgdGhhdCBnZXRzIHJlZ2lzdGVyZWQuICopXG5tb2R1bGUgQ3VycmVudF9saWJuYW1lID0gc3RydWN0XG4gIGxldCBudWxsID0gXCI8dW5rbm93bj5cIlxuICBsZXQgbGlibmFtZV9yZWYgPSByZWYgbnVsbFxuICBsZXQgc2V0IHN0ciA9IGxpYm5hbWVfcmVmIDo9IHN0clxuICBsZXQgdW5zZXQgKCkgPSBsaWJuYW1lX3JlZiA6PSBudWxsXG4gIGxldCBnZXQgKCkgPSAhbGlibmFtZV9yZWZcbmVuZFxuXG5tb2R1bGUgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sgPSBzdHJ1Y3RcbiAgbGV0IHQgPSByZWYgW11cbiAgbGV0IHB1c2ggcyA9IHQgOj0gcyA6OiAhdFxuICBsZXQgcG9wX2V4biAoKSA9IHQgOj0gTGlzdC50bCAhdFxuXG4gIGxldCB0b19uYW1lICgpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBtcyAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLlwiIChMaXN0LnJldiBtcykpXG4gIDs7XG5lbmRcblxuKCogVGhpcyBpcyB0aGUgbWFpbiBkYXRhIHN0cnVjdHVyZSBvZiB0aGlzIG1vZHVsZS4gQW4gW0VudHJ5LnRdIHJlcHJlc2VudHMgYSBiZW5jaG1hcmtcbiAgIGFsb25nIHdpdGggc29tZSBtZXRhZGF0YSBhYm91dCBpcyBwb3NpdGlvbiwgYXJndW1lbnRzIGV0Yy4gKilcbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICB0eXBlICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgPVxuICAgIHsgYXJnX25hbWUgOiBzdHJpbmdcbiAgICA7IHBhcmFtcyA6IChzdHJpbmcgKiAncGFyYW0pIGxpc3RcbiAgICA7IHRodW5rIDogJ3BhcmFtIC0+IHVuaXQgLT4gJ2FcbiAgICB9XG5cbiAgdHlwZSB0ZXN0X3NwZWMgPVxuICAgIHwgUmVndWxhcl90aHVuayA6IChbIGBpbml0IF0gLT4gdW5pdCAtPiAnYSkgLT4gdGVzdF9zcGVjXG4gICAgfCBQYXJhbWV0ZXJpc2VkX3RodW5rIDogKCdwYXJhbSwgJ2EpIHBhcmFtZXRlcmlzZWRfc3BlYyAtPiB0ZXN0X3NwZWNcblxuICB0eXBlIHQgPVxuICAgIHsgdW5pcXVlX2lkIDogaW50XG4gICAgOyBjb2RlIDogc3RyaW5nXG4gICAgOyB0eXBlX2NvbnZfcGF0aCA6IHN0cmluZ1xuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgICA7IGxpbmUgOiBpbnRcbiAgICA7IHN0YXJ0cG9zIDogaW50XG4gICAgOyBlbmRwb3MgOiBpbnRcbiAgICA7IHRlc3Rfc3BlYyA6IHRlc3Rfc3BlY1xuICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZSB0MS51bmlxdWVfaWQgdDIudW5pcXVlX2lkXG5cbiAgKCogRXh0cmFjdHMgbW9kdWxlIG5hbWUgZnJvbSBbXCJmaWxlbmFtZS5tbC5Nb2R1bGVcIl0sIHdoaWNoIGlzIHRoZSBmb3JtYXQgb2YgW2V4dF9uYW1lXVxuICAgICBhcyBzZXQgYnkgW3R5cGVjb252XS4gKilcbiAgbGV0IGdldF9tb2R1bGVfbmFtZV9vcHQgdCA9XG4gICAgbGV0IHN0ciA9IHQudHlwZV9jb252X3BhdGggaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpICsgNCA8PSBsZW5cbiAgICAgIHRoZW5cbiAgICAgICAgaWYgU3RyaW5nLnN1YiBzdHIgaSA0ID0gXCIubWwuXCJcbiAgICAgICAgdGhlbiBTb21lIChTdHJpbmcuc3ViIHN0ciAoaSArIDQpIChsZW4gLSBpIC0gNCkpXG4gICAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCB3aXRoX3Rlc3Rfc3BlYyB0IHRlc3Rfc3BlYyA9IHsgdCB3aXRoIHRlc3Rfc3BlYyB9XG5lbmRcblxuKCogSW5zcGVjdCBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGRlY2lkZSBpZiBiZW5jaG1hcmtzIGFyZSBiZWluZyBydW4uIFRoaXMgaXNcbiAgIGNhbGxlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIFtwYV9iZW5jaF0gc3ludGF4IHRvIGRlY2lkZSBpZiB0aGUgZ2xvYmFsIGhhc2h0YWJsZVxuICAgc2hvdWxkIGJlIHBvcHVsYXRlZC4gKilcbmxldCBhZGRfZW52aXJvbm1lbnRfdmFyID1cbiAgbGV0IHYgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQkVOQ0hNQVJLU19SVU5ORVJcIiB3aXRoXG4gICAgfCBOb3RfZm91bmQgLT4gXCJcIlxuICBpblxuICB2ID0gXCJUUlVFXCJcbjs7XG5cbigqIFRoaXMgaGFzaHRhYmxlIGNvbnRhaW5zIGFsbCB0aGUgYmVuY2htYXJrcyBmcm9tIGFsbCB0aGUgb2YgbGlicmFyaWVzIHRoYXQgaGF2ZSBiZWVuXG4gICBsb2FkZWQuIEF0IHRoZSB0aW1lIHRoZSBiZW5jaG1hcmtzIGFyZSByZWdpc3RlcmluZyB0aGVtc2VsdmVzIHdpdGggW3BweF9iZW5jaF9saWJdIHdlXG4gICBkb24ndCB5ZXQga25vdyB3aGljaCBsaWJyYXJpZXMgd2lsbCBuZWVkIHRvIGJlIHJ1bi4gICopXG5sZXQgbGlic190b19lbnRyaWVzIDogKHN0cmluZywgRW50cnkudCBsaXN0KSBIYXNodGJsLnQgPSBIYXNodGJsLmNyZWF0ZSAxMFxuXG5sZXQgbG9va3VwX3Jldl9saWIgfmxpYm5hbWUgPVxuICB0cnkgSGFzaHRibC5maW5kIGxpYnNfdG9fZW50cmllcyBsaWJuYW1lIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gW11cbjs7XG5cbmxldCBsb29rdXBfbGliIH5saWJuYW1lID0gTGlzdC5yZXYgKGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuXG5sZXQgZm9yY2VfZHJvcCA9XG4gICgqIFVzZWZ1bCBmb3IganNfb2Zfb2NhbWwgdG8gcGVyZm9ybSBkZWFkY29kZSBlbGltaW5hdGlvbi5cbiAgICAgc2VlIHBweC9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCBbQWN0aW9uLmdldF0gZm9yIG1vcmUgZGV0YWlscyAqKVxuICB0cnlcbiAgICBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0JFTkNIXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICB8IE5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxubGV0IGdldF9tb2RlICgpID0gaWYgZm9yY2VfZHJvcCB0aGVuIGBJZ25vcmUgZWxzZSBgQ29sbGVjdFxuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoXG4gICAgICAgICAgICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmNvZGVcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfnR5cGVfY29udl9wYXRoXG4gICAgICAgICAgICAgICAgICAgICB+bGluZVxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zXG4gICAgICAgICAgICAgICAgICAgICB0ZXN0X3NwZWNcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgbGV0IGxpYm5hbWUgPSBDdXJyZW50X2xpYm5hbWUuZ2V0ICgpIGluXG4gICAgbGV0IGVudHJ5ID1cbiAgICAgIHsgRW50cnkuY29kZVxuICAgICAgOyB1bmlxdWVfaWQgPSB1bmlxdWVfaWQgKClcbiAgICAgIDsgdHlwZV9jb252X3BhdGhcbiAgICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgPSBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay50b19uYW1lICgpXG4gICAgICA7IG5hbWVcbiAgICAgIDsgZmlsZW5hbWVcbiAgICAgIDsgbGluZVxuICAgICAgOyBzdGFydHBvc1xuICAgICAgOyBlbmRwb3NcbiAgICAgIDsgdGVzdF9zcGVjXG4gICAgICB9XG4gICAgaW5cbiAgICBIYXNodGJsLmFkZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSAoZW50cnkgOjogbG9va3VwX3Jldl9saWIgfmxpYm5hbWUpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoX21vZHVsZVxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlOl9cbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aDpfXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6X1xuICAgICAgICAgICAgICAgICAgICAgfmxpbmU6X1xuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIH5lbmRwb3M6X1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIGdldF9tb2RlICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYENvbGxlY3QgLT5cbiAgICAoKiBSdW5uaW5nIGYgcmVnaXN0ZXJzIHRoZSBiZW5jaG1hcmtzIHVzaW5nIEJFTkNIICopXG4gICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucHVzaCBuYW1lO1xuICAgICh0cnlcbiAgICAgICBmICgpO1xuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKClcbiAgICAgd2l0aFxuICAgICB8IGV4IC0+XG4gICAgICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucG9wX2V4biAoKTtcbiAgICAgICByYWlzZSBleClcbjs7XG4iLCJ0eXBlIHQgPSBzdHJpbmdcblxuKCogU2hhcmUgdGhlIGRpZ2VzdCBvZiB0aGUgZW1wdHkgc3RyaW5nICopXG5sZXQgZW1wdHkgPSBEaWdlc3Quc3RyaW5nIFwiXCJcbmxldCBtYWtlIHMgPVxuICBpZiBzID0gZW1wdHkgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBzXG5cbmxldCBjb21wYXJlID0gY29tcGFyZVxuXG5sZXQgbGVuZ3RoID0gMTZcblxubGV0IHRvX2JpbmFyeSBzID0gc1xubGV0IG9mX2JpbmFyeV9leG4gcyA9IGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzID0gbGVuZ3RoKTsgbWFrZSBzXG5sZXQgdW5zYWZlX29mX2JpbmFyeSA9IG1ha2VcblxubGV0IHRvX2hleCA9IERpZ2VzdC50b19oZXhcbmxldCBvZl9oZXhfZXhuIHMgPSBtYWtlIChEaWdlc3QuZnJvbV9oZXggcylcblxubGV0IHN0cmluZyBzID0gbWFrZSAoRGlnZXN0LnN0cmluZyBzKVxuXG5sZXQgYnl0ZXMgcyA9IG1ha2UgKERpZ2VzdC5ieXRlcyBzKVxuXG5sZXQgc3ViYnl0ZXMgYnl0ZXMgfnBvcyB+bGVuID0gbWFrZSAoRGlnZXN0LnN1YmJ5dGVzIGJ5dGVzIHBvcyBsZW4pXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBMb2NhdGlvbiA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVXVpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5sZXQgZXZhbF9mYWlsIGxvYyBmbXQgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBzIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiAhXCIle0xvY2F0aW9ufTogJXNcIiBsb2MgcykpIGZtdFxuOztcblxubGV0IGVxdWFsX29wdGlvbiBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBTb21lIF8sIE5vbmUgfCBOb25lLCBTb21lIF8gLT4gZmFsc2VcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbjs7XG5cbm1vZHVsZSBTb3J0ZWRfdGFibGUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IChzdHJpbmcgKiAnYSkgbGlzdCAtPiAnYSB0XG4gIHZhbCBleHBvc2UgOiAnYSB0IC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHsgc29ydGVkIDogKHN0cmluZyAqICdhKSBsaXN0IH0gW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwc1xuICAgIDogIGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAgIC0+IFsgYE9rIG9mIChzdHJpbmcgKiAnYSkgbGlzdCB8IGBNaXNtYXRjaCBvZiBzdHJpbmcgXVxuICAgID1cbiAgICBmdW4gfmVxIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyB+bGFzdF9rZXkgfmxhc3RfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBgT2sgKExpc3QucmV2IGFjYylcbiAgICAgIHwgKGtleSwgdmFsdWUpIDo6IHhzIC0+XG4gICAgICAgIGlmIFN0cmluZy4obGFzdF9rZXkgPSBrZXkpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiBlcSBsYXN0X3ZhbHVlIHZhbHVlIHRoZW4gbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlIHhzIGVsc2UgYE1pc21hdGNoIGtleVxuICAgICAgICBlbHNlIGxvb3AgKChrZXksIHZhbHVlKSA6OiBhY2MpIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgICBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBgT2sgW11cbiAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPiBsb29wIFsga2V5LCB2YWx1ZSBdIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgOztcblxuICBsZXQgY3JlYXRlIGxvYyB+ZXEgeHMgPVxuICAgIGxldCBzb3J0ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHhzIGluXG4gICAgbWF0Y2ggbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwcyB+ZXEgc29ydGVkIHdpdGhcbiAgICB8IGBPayBzb3J0ZWQgLT4geyBzb3J0ZWQgfVxuICAgIHwgYE1pc21hdGNoIHMgLT5cbiAgICAgIGV2YWxfZmFpbCBsb2MgXCJEaWZmZXJlbnQgc2hhcGVzIGZvciBkdXBsaWNhdGVkIHBvbHltb3JwaGljIGNvbnN0cnVjdG9yOiBgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IGV4cG9zZSB0ID0gdC5zb3J0ZWRcbiAgbGV0IG1hcCB0IH5mID0geyBzb3J0ZWQgPSBMaXN0Lm1hcCB0LnNvcnRlZCB+ZjooZnVuIChrLCB2KSAtPiBrLCBmIHYpIH1cbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCA9IE1kNV9saWIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCB0b19tZDUgOiB0IC0+IE1kNV9saWIudFxuICB2YWwgb2ZfbWQ1IDogTWQ1X2xpYi50IC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBjb25zdHJ1Y3RvciA6IHN0cmluZyAtPiB0IGxpc3QgLT4gdFxuICB2YWwgbGlzdCA6IHQgbGlzdCAtPiB0XG4gIHZhbCBwYWlyIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyAtPiB0XG4gIHZhbCB1dWlkIDogVXVpZC50IC0+IHRcbiAgdmFsIGludCA6IGludCAtPiB0XG4gIHZhbCBvcHRpb24gOiB0IG9wdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZDVfbGliXG5cbiAgbGV0IHRvX21kNSB0ID0gdFxuICBsZXQgb2ZfbWQ1IHQgPSB0XG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IHNleHBfb2Zfc3RyaW5nXG4gIGxldCB0X29mX3NleHAgcyA9IHMgfD4gc3RyaW5nX29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdXVpZCB1ID0gc3RyaW5nIChVdWlkLnRvX3N0cmluZyB1KVxuICBsZXQgaW50IHggPSBzdHJpbmcgKEludC50b19zdHJpbmcgeClcbiAgbGV0IHBhaXIgeCB5ID0gc3RyaW5nICh0b19iaW5hcnkgeCBeIHRvX2JpbmFyeSB5KVxuICBsZXQgbGlzdCBsID0gc3RyaW5nIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAoTGlzdC5tYXAgfmY6dG9fYmluYXJ5IGwpKVxuICBsZXQgY29uc3RydWN0b3IgcyBsID0gc3RyaW5nIChzIF4gdG9fYmluYXJ5IChsaXN0IGwpKVxuXG4gIGxldCBvcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBjb25zdHJ1Y3RvciBcIm5vbmVcIiBbXVxuICAgIHwgU29tZSB4IC0+IGNvbnN0cnVjdG9yIFwic29tZVwiIFsgeCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IgPSBzdHJ1Y3RcbiAgKCogWydhIHRdIGlzIGEgbm9uLXJlY3Vyc2l2ZSB0eXBlLCB1c2VkIHRvIHJlcHJlc2VudCAxLWxheWVyIG9mIGV4cHJlc3Npb24uICBUaGVcbiAgICAgcmVjdXJzaXZlIGtub3QgaXMgdGllZCBiZWxvdyBpbiBbQ2Fub25pY2FsX2Z1bGwuRXhwLnRdLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogJ2FcbiAgICB8IEJhc2Ugb2YgVXVpZC50ICogJ2EgbGlzdFxuICAgIHwgVHVwbGUgb2YgJ2EgbGlzdFxuICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogJ2EgbGlzdCkgbGlzdFxuICAgICgqIFBvbHltb3JwaGljIHZhcmlhbnRzIGFyZSBpbnNlbnNpdGl2ZSB0byB0aGUgb3JkZXIgdGhlIGNvbnN0cnVjdG9ycyBhcmUgbGlzdGVkICopXG4gICAgfCBQb2x5X3ZhcmlhbnQgb2YgJ2Egb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgKCogTGVmdC1oYW5kLXNpZGUgb2YgW0FwcGxpY2F0aW9uXSBpcyBhIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSBkZWZpbml0aW9uOiBpdFxuICAgICAgIGNhbiByZWZlciB0byBpdHNlbGYgdXNpbmcgW1JlY19hcHAgKGksIF8pXSB3aGVyZSBbaV0gaXMgdGhlIGRlcHRoIG9mIHRoaXNcbiAgICAgICBhcHBsaWNhdGlvbiBub2RlIChob3cgbWFueSBhcHBsaWNhdGlvbiBub2RlcyBhcmUgYWJvdmUgaXQpLlxuICAgICAgIEl0IGFsc28gaGFzIGl0cyBvd24gc2NvcGUgb2YgdHlwZSB2YXJpYWJsZXMgc28gaXQgY2FuIG5vdCByZWZlciB0byB0eXBlIHZhcmlhYmxlc1xuICAgICAgIG9mIHRoZSBlbmNsb3Npbmcgc2NvcGUuXG4gICAgKilcbiAgICB8IEFwcGxpY2F0aW9uIG9mICdhICogJ2EgbGlzdFxuICAgIHwgUmVjX2FwcCBvZiBpbnQgKiAnYSBsaXN0XG4gICAgfCBWYXIgb2YgaW50XG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IG1hcCB4IH5mID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEFubm90YXRlICh1LCB4KSAtPiBBbm5vdGF0ZSAodSwgZiB4KVxuICAgIHwgQmFzZSAocywgeHMpIC0+IEJhc2UgKHMsIExpc3QubWFwIH5mIHhzKVxuICAgIHwgVHVwbGUgeHMgLT4gVHVwbGUgKExpc3QubWFwIH5mIHhzKVxuICAgIHwgUmVjb3JkIGwgLT4gUmVjb3JkIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHgpIC0+IHMsIGYgeCkpXG4gICAgfCBWYXJpYW50IGwgLT4gVmFyaWFudCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4cykgLT4gcywgTGlzdC5tYXAgfmYgeHMpKVxuICAgIHwgUG9seV92YXJpYW50IHQgLT4gUG9seV92YXJpYW50IChTb3J0ZWRfdGFibGUubWFwIHQgfmY6KE9wdGlvbi5tYXAgfmYpKVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IEFwcGxpY2F0aW9uIChmIHgsIExpc3QubWFwIH5mIGwpXG4gICAgfCBSZWNfYXBwICh0LCBsKSAtPiBSZWNfYXBwICh0LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgVmFyIHYgLT4gVmFyIHZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IChmdW4gXyAtPiBBdG9tIFwiLi4uXCIpIHQpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9kaWdlc3QgOiBzaWdcbiAgKCogRGlnZXN0IHZhcmlvdXMgZXhwcmVzc2lvbiBmb3JtcyAqKVxuXG4gIHZhbCBkaWdlc3RfbGF5ZXIgOiBEaWdlc3QudCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgLT4gRGlnZXN0LnRcbmVuZCA9IHN0cnVjdFxuICBsZXQgZGlnZXN0X2xheWVyID0gZnVuY3Rpb25cbiAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQW5ub3RhdGUgKHUsIHgpIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3IgXCJhbm5vdGF0ZVwiIFsgRGlnZXN0LnV1aWQgdTsgeCBdXG4gICAgfCBCYXNlICh1LCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJiYXNlXCIgWyBEaWdlc3QudXVpZCB1OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFR1cGxlIGwgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwidHVwbGVcIiBbIERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjb3JkIGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInJlY29yZFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3QgKExpc3QubWFwIGwgfmY6KGZ1biAocywgdCkgLT4gRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgcykgdCkpIF1cbiAgICB8IFZhcmlhbnQgbCAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwidmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIGwpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIChEaWdlc3QubGlzdCBsKSkpXG4gICAgICAgIF1cbiAgICB8IFBvbHlfdmFyaWFudCB0YWJsZSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwicG9seV92YXJpYW50XCJcbiAgICAgICAgWyBEaWdlc3QubGlzdFxuICAgICAgICAgICAgKExpc3QubWFwIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYmxlKSB+ZjooZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgeCkgKERpZ2VzdC5vcHRpb24geSkpKVxuICAgICAgICBdXG4gICAgfCBBcHBsaWNhdGlvbiAoeCwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYXBwbGljYXRpb25cIiBbIHg7IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjX2FwcCAobiwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwicmVjX2FwcFwiIFsgRGlnZXN0LmludCBuOyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFZhciBuIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInZhclwiIFsgRGlnZXN0LmludCBuIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVmlzaWJpbGl0eSA9IHN0cnVjdFxuICB0eXBlIHZpc2libGUgPSBWaXNpYmxlXG4gIHR5cGUgb3BhcXVlID0gT3BhcXVlXG5cbiAgbGV0IF8gPSBWaXNpYmxlXG4gIGxldCBfID0gT3BhcXVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ2Fub25pY2FsID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19kaWdlc3QgOiB0IC0+IERpZ2VzdC50XG5cbiAgbW9kdWxlIEV4cDEgOiBzaWdcbiAgICB0eXBlIF8gdFxuXG4gICAgdmFsIHZhciA6IGludCAtPiBfIHRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgYXBwbHkgOiAnYSB0IC0+ICdhIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgb3BhcXVlIDogXyB0IC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIHZhbCBnZXRfcG9seV92YXJpYW50XG4gICAgICA6ICBWaXNpYmlsaXR5LnZpc2libGUgdFxuICAgICAgLT4gKFZpc2liaWxpdHkub3BhcXVlIHQgb3B0aW9uIFNvcnRlZF90YWJsZS50LCBzdHJpbmcpIFJlc3VsdC50XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgOiBzaWdcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgOiBzaWdcbiAgICB2YWwgYW5ub3RhdGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgYmFzZXR5cGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB0dXBsZSA6IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgcG9seV92YXJpYW50IDogTG9jYXRpb24udCAtPiAoc3RyaW5nICogXyBFeHAxLnQgb3B0aW9uKSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhciA6IGludCAtPiBfIEV4cDEudFxuICAgIHZhbCByZWN1cnNlIDogaW50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgYXBwbHkgOiAnYSBFeHAxLnQgLT4gJ2EgRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgZGVmaW5lIDogVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudCAtPiBEZWYudFxuICAgIHZhbCByZWNvcmQgOiAoc3RyaW5nICogXyBFeHAxLnQpIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdmFyaWFudCA6IChzdHJpbmcgKiBfIEV4cDEudCBsaXN0KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGNyZWF0ZSA6IF8gRXhwMS50IC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9kaWdlc3QgOiBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2Fub25pY2FsIG9mIERpZ2VzdC50XG5cbiAgbGV0IHRvX2RpZ2VzdCAoQ2Fub25pY2FsIHgpID0geFxuXG4gIG1vZHVsZSBDRCA9IENyZWF0ZV9kaWdlc3RcblxuICBtb2R1bGUgRXhwMSA9IHN0cnVjdFxuICAgIHR5cGUgb3BhcXVlID0gRGlnZXN0LnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFBvbHlfdmFyaWFudCBvZiBvcGFxdWUgb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgb2YgKHN0cmluZyAqIG9wYXF1ZSlcbiAgICAgIHwgT3BhcXVlIDogb3BhcXVlIC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIGxldCB0b19kaWdlc3QgKHR5cGUgYSkgKHggOiBhIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPcGFxdWUgeCAtPiB4XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgKF8sIHgpIC0+IHhcbiAgICAgIHwgUG9seV92YXJpYW50IHggLT4gQ0QuZGlnZXN0X2xheWVyIChQb2x5X3ZhcmlhbnQgeClcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsICh0eXBlIGEpICh4IDogYSB0KSAoeSA6IGEgdCkgPVxuICAgICAgRGlnZXN0LmNvbXBhcmUgKHRvX2RpZ2VzdCB4KSAodG9fZGlnZXN0IHkpID0gMFxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHggPSBPcGFxdWUgKHRvX2RpZ2VzdCB4KVxuXG4gICAgbGV0IGNyZWF0ZSB4ID1cbiAgICAgIGxldCB4ID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IHggaW5cbiAgICAgIGxldCBkZXNjID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50b19zdHJpbmcgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUG9seV92YXJpYW50IGwgLT4gUG9seV92YXJpYW50IGxcbiAgICAgIHwgQmFzZSBfIC0+IE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBBbm5vdGF0ZSBfIC0+XG4gICAgICAgICgqIEl0J3MgdW5zYWZlIHRvIHVzZSBkZXJpdmluZyBiaW5faW8gd2hlbiBpbmhlcml0aW5nIGZyb20gYSBwb2x5bW9ycGhpYyB2YXJpYW50XG4gICAgICAgICAgIHRoYXQgaGFzIGEgY3VzdG9tIGJpbl9pby4gIElmIHdlIGZvcmJpZCB0aGF0LCB3ZSBjYW4gaGFwcGlseSByZWplY3QgaGVyZVxuICAgICAgICAgICBhbnl0aGluZyB0aGF0J3MgYW5ub3RhdGVkLiAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQXBwbGljYXRpb24gXyAtPlxuICAgICAgICAoKiBBcHBsaWNhdGlvbiBjYW4gcmVhbGx5IGJlIGEgcG9seS12YXJpYW50IHlvdSBjYW4gaW5oZXJpdCBmcm9tISAgQnV0IGl0J3MgYVxuICAgICAgICAgICByYXJlIHNpdHVhdGlvbiB0aGF0IG1vc3RseSAob25seT8pIGFyaXNlcyB3aXRoIGluaGVyaXRhbmNlIGZyb20gcmVjdXJzaXZlXG4gICAgICAgICAgIHBvbHltb3JwaWMgdmFyaWFudHMsIHdoaWNoIHdlJ3ZlIG5vdCBzZWVuIGFueXdoZXJlIHlldC4gIFNvIHdlIHJlamVjdCBpdC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFJlY19hcHAgXyAtPlxuICAgICAgICAoKiBZb3UgY2FuIG9ubHkgZ2V0IHRoZSBbUmVjX2FwcF0gY29uc3RydWN0b3IgZm9yIHR5cGUtcmVmZXJlbmNlcyB3aXRoaW4gdGhlXG4gICAgICAgICAgIG11dHVhbCBncm91cCBiZWluZyBkZWZpbmVkLiBSZWZlcmVuY2VzIHdoaWNoXG4gICAgICAgICAgIGZvbGxvdyBhZnRlciB0aGUgY3VycmVudCBncm91cCB3aWxsIGFsd2F5cyBiZSBbQXBwbGljYXRpb25dcy5cblxuICAgICAgICAgICBBbmQgc2luY2Ugb2NhbWwgcmVqZWN0cyByZWZlcmVuY2VzIGluIGBpbmhlcml0YW5jZScgcG9zaXRpb24gdG8gdHlwZXMgd2l0aGluXG4gICAgICAgICAgIHRoZSBjdXJyZW50IGdyb3VwIChzZWUgZXhhbXBsZSkgd2l0aDpcblxuICAgICAgICAgICBFcnJvcjogVGhlIHR5cGUgY29uc3RydWN0b3IgdFxuICAgICAgICAgICBpcyBub3QgeWV0IGNvbXBsZXRlbHkgZGVmaW5lZFxuXG4gICAgICAgICAgIHRoZW4gaXRzIG9rIHRvIHNheSB0aGF0IGEgcmVjLWFwcCBpcyBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBpbmhlcml0ZWQgZnJvbSBhbmRcbiAgICAgICAgICAgcmV0dXJuIFtOb25fcG9seV92YXJpYW50XS5cblxuICAgICAgICAgICBBbmQgdW5saWtlIHRoZSBbQXBwbGljYXRpb25dIGNhc2UsIGl0IHNob3VsZCBuZXZlciBiZSBwb3NzaWJsZSB0byBzZWVcbiAgICAgICAgICAgYW4gZXJyb3IgbWVzc2FnZSB3aXRoIHRoZSBbZGVzY10gPSBbUmVjX2FwcF0uXG5cbiAgICAgICAgICAgRXhhbXBsZTogW3R5cGUgdCA9IFtgYSBvZiBbIHwgdF0gXV1cbiAgICAgICAgICAgSGVyZSwgW3wgdF0gd291bGQgYmUgYW4gZXhhbXBsZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgUmVjX2FwcCwgd2hpY2hcbiAgICAgICAgICAgaXMgcmVqZWN0ZWQgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgICAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgVmFyIF8gfCBUdXBsZSBfIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT5cbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IGNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IGRlZiBsID0gY3JlYXRlIChBcHBsaWNhdGlvbiAoZGVmLCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0aWQgbCA9IGNyZWF0ZSAoUmVjX2FwcCAodGlkLCBsKSlcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ICh4IDogVmlzaWJpbGl0eS52aXNpYmxlIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChkZXNjLCBfKSAtPiBFcnJvciBkZXNjXG4gICAgICB8IFBvbHlfdmFyaWFudCBsIC0+IE9rIChTb3J0ZWRfdGFibGUubWFwIH5mOihPcHRpb24ubWFwIH5mOihmdW4geCAtPiBPcGFxdWUgeCkpIGwpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLmNyZWF0ZSAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IGwgPSBFeHAxLmNyZWF0ZSAoQmFzZSAodSwgbCkpXG4gICAgbGV0IHR1cGxlIGwgPSBFeHAxLmNyZWF0ZSAoVHVwbGUgbClcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIGwgPVxuICAgICAgRXhwMS5jcmVhdGUgKFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gRXhwMS5lcXVhbCkgbCkpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IEV4cDEuY3JlYXRlIChWYXIgeClcbiAgICBsZXQgYXBwbHkgeCBsID0gRXhwMS5jcmVhdGUgKEFwcGxpY2F0aW9uICh4LCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0IGwgPSBFeHAxLmNyZWF0ZSAoUmVjX2FwcCAodCwgbCkpXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgbCA9IEV4cDEuY3JlYXRlIChSZWNvcmQgbClcbiAgICBsZXQgdmFyaWFudCBsID0gRXhwMS5jcmVhdGUgKFZhcmlhbnQgbClcbiAgICBsZXQgY3JlYXRlIGUgPSBDYW5vbmljYWwgKEV4cDEudG9fZGlnZXN0IGUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZnVsbCA9IHN0cnVjdFxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQwID0gRXhwIG9mIHQwIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsX3QwIHggeSA9IGNvbXBhcmVfdDAgeCB5ID0gMFxuXG4gICAgdHlwZSAnYSB0ID0gdDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB2YXIgeCA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5WYXIgeClcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5BcHBsaWNhdGlvbiAoZCwgeHMpKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUmVjX2FwcCAociwgeHMpKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPVxuICAgICAgRXhwXG4gICAgICAgIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudFxuICAgICAgICAgICAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gZXF1YWxfdDApIHhzKSlcbiAgICA7O1xuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgKFBvbHlfdmFyaWFudCB0YWIpIC0+IE9rIHRhYlxuICAgICAgfCBFeHAgY2MgLT4gRXJyb3IgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIGNjKVxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHQgPSB0XG5cbiAgICBsZXQgcmVjIHRvX2RpZ2VzdCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCBlIC0+IENELmRpZ2VzdF9sYXllciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgICgqIEEgW0RlZi50XSBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG1heSBiZSBhcHBsaWVkICopXG4gICAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICAoKiBBIGNhbm9uaWNhbCBzaGFwZSBbdF0gaXMgYW4gW0V4cDEudF0uICopXG4gIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fZGlnZXN0IGUgPSBFeHAxLnRvX2RpZ2VzdCBlXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLkV4cCAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IHhzID0gRXhwMS5FeHAgKEJhc2UgKHUsIHhzKSlcbiAgICBsZXQgdHVwbGUgeHMgPSBFeHAxLkV4cCAoVHVwbGUgeHMpXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBFeHAxLnBvbHlfdmFyaWFudCBsb2MgeHNcbiAgICBsZXQgdmFyIG4gPSBFeHAxLkV4cCAoVmFyIG4pXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cDEucmVjdXJzZSByIHhzXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAxLmFwcGx5IGQgeHNcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCB4cyA9IEV4cDEuRXhwIChSZWNvcmQgeHMpXG4gICAgbGV0IHZhcmlhbnQgeHMgPSBFeHAxLkV4cCAoVmFyaWFudCB4cylcbiAgICBsZXQgY3JlYXRlIGV4cCA9IGV4cFxuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nX2h1bSB0ID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgdClcbmVuZFxuXG5tb2R1bGUgVGlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBWaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIEdpZCA6IHNpZ1xuICAoKiB1bmlxdWUgZ3JvdXAtaWQsIHVzZWQgYXMga2V5IGZvciBUZW52IGJlbG93ICopXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gIGxldCByID0gcmVmIDBcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgdSA9ICFyIGluXG4gICAgciA6PSAxICsgdTtcbiAgICB1XG4gIDs7XG5lbmRcblxubW9kdWxlIEV4cHJlc3Npb24gPSBzdHJ1Y3RcbiAgdHlwZSAndCBwb2x5X2NvbnN0ciA9XG4gICAgWyBgQ29uc3RyIG9mIHN0cmluZyAqICd0IG9wdGlvblxuICAgIHwgYEluaGVyaXQgb2YgTG9jYXRpb24udCAqICd0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiAoVGlkLnQgKiBWaWQudCBsaXN0ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBpZCA6ICdhIHQgLT4gR2lkLnRcbiAgICB2YWwgbG9va3VwIDogJ2EgdCAtPiBUaWQudCAtPiBWaWQudCBsaXN0ICogJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgZ2lkIDogR2lkLnRcbiAgICAgIDsgbG9jIDogTG9jYXRpb24udFxuICAgICAgOyBtZW1iZXJzIDogKFRpZC50ICogKFZpZC50IGxpc3QgKiAnYSkpIGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICAgIGxldCBjcmVhdGUgbG9jIHRyaXBzID1cbiAgICAgIGxldCBnaWQgPSBHaWQuY3JlYXRlICgpIGluXG4gICAgICBsZXQgbWVtYmVycyA9IExpc3QubWFwIHRyaXBzIH5mOihmdW4gKHgsIHZzLCB0KSAtPiB4LCAodnMsIHQpKSBpblxuICAgICAgeyBnaWQ7IGxvYzsgbWVtYmVycyB9XG4gICAgOztcblxuICAgIGxldCBpZCBnID0gZy5naWRcblxuICAgIGxldCBsb29rdXAgZyB0aWQgPVxuICAgICAgbWF0Y2ggTGlzdC5Bc3NvYy5maW5kIGcubWVtYmVycyB+ZXF1YWw6VGlkLiggPSApIHRpZCB3aXRoXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+IHNjaGVtZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgIGcubG9jXG4gICAgICAgICAgIVwiaW1wb3NzaWJsZTogbG9va3VwX2dyb3VwLCB1bmJvdW5kIHR5cGUtaWRlbnRpZmllcjogJXtUaWR9XCJcbiAgICAgICAgICB0aWRcbiAgICAgICAgICAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogdFxuICAgICAgICB8IEJhc2Ugb2YgVXVpZC50ICogdCBsaXN0XG4gICAgICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogdCBsaXN0KSBsaXN0XG4gICAgICAgIHwgVHVwbGUgb2YgdCBsaXN0XG4gICAgICAgIHwgUG9seV92YXJpYW50IG9mIChMb2NhdGlvbi50ICogdCBwb2x5X2NvbnN0ciBsaXN0KVxuICAgICAgICB8IFZhciBvZiAoTG9jYXRpb24udCAqIFZpZC50KVxuICAgICAgICB8IFJlY19hcHAgb2YgVGlkLnQgKiB0IGxpc3RcbiAgICAgICAgfCBUb3BfYXBwIG9mIHQgR3JvdXAudCAqIFRpZC50ICogdCBsaXN0XG4gICAgICBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgdmFyaWFudHNdXG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgdHlwZSBncm91cCA9IHQgR3JvdXAudFxuXG4gIGxldCBncm91cCA9IEdyb3VwLmNyZWF0ZVxuXG4gIHR5cGUgcG9seV92YXJpYW50X3JvdyA9IHQgcG9seV9jb25zdHJcblxuICBsZXQgY29uc3RyIHMgdCA9IGBDb25zdHIgKHMsIHQpXG4gIGxldCBpbmhlcml0XyBsb2MgdCA9IGBJbmhlcml0IChsb2MsIHQpXG4gIGxldCB2YXIgbG9jIHQgPSBWYXIgKGxvYywgdClcbiAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBQb2x5X3ZhcmlhbnQgKGxvYywgeHMpXG4gIGxldCBiYXNldHlwZSA9IGJhc2VcblxuICAoKiBcIlZSXCIgc3RhbmRzIGZvciBcInZhcmlhbnQgb3IgcmVjb3JkXCIgKilcblxuICBsZXQgaXNfY3ljbGljXzAgfih2aWFfVlIgOiBib29sKSA6IGdyb3VwIC0+IFRpZC50IC0+IGJvb2wgPVxuICAgIGZ1biBncm91cCB0aWQgLT5cbiAgICBsZXQgc2V0ID0gcmVmIFtdIGluXG4gICAgbGV0IHZpc2l0ZWQgdGlkID0gTGlzdC5tZW0gIXNldCB0aWQgfmVxdWFsOlRpZC5lcXVhbCBpblxuICAgIGxldCBhZGQgdGlkID0gc2V0IDo9IHRpZCA6OiAhc2V0IGluXG4gICAgbGV0IHJlYyB0cmF2ID0gZnVuY3Rpb25cbiAgICAgICgqIFdlIGxvb2sgZm9yIGN5Y2xlcyBieSB0cmF2ZXJzaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdHlwZS1leHByZXNzaW9ucyAqKVxuICAgICAgfCBBbm5vdGF0ZSAoXywgdCkgLT4gdHJhdiB0XG4gICAgICB8IEJhc2UgKF8sIHRzKSB8IFR1cGxlIHRzIHwgVG9wX2FwcCAoXywgXywgdHMpIC0+IExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgICAoKiAuLmluY2x1ZGluZyBwb2x5LXZhcmlhbnRzICopXG4gICAgICB8IFBvbHlfdmFyaWFudCAoXywgY3MpIC0+XG4gICAgICAgIExpc3QuaXRlciBjcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IGBDb25zdHIgKF8sIE5vbmUpIC0+ICgpXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBTb21lIHQpIC0+IHRyYXYgdFxuICAgICAgICAgIHwgYEluaGVyaXQgKF9sb2MsIHQpIC0+IHRyYXYgdClcbiAgICAgICgqIC4uIGFuZCByZWNvcmRzICYgKG5vcm1hbCkgdmFyaWFudHMgKilcbiAgICAgIHwgUmVjb3JkIHhzIC0+IGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0KSAtPiB0cmF2IHQpIGVsc2UgKClcbiAgICAgIHwgVmFyaWFudCB4cyAtPlxuICAgICAgICBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdHMpIC0+IExpc3QuaXRlciB+Zjp0cmF2IHRzKSBlbHNlICgpXG4gICAgICAoKiBXZSBkb250IGZvbGxvdyB0eXBlLXZhcnMgKilcbiAgICAgIHwgVmFyIF8gLT4gKClcbiAgICAgICgqIHRyYXZlcnNlIChyZWN1cnNpdmUpIHR5cGUtYXBwcyB3aGVuIGZpcnN0IGVuY291bnRlcmVkICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgdHMpIC0+XG4gICAgICAgIGlmIHZpc2l0ZWQgdGlkXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYWRkIHRpZDtcbiAgICAgICAgICB0cmF2X3RpZCB0aWQpO1xuICAgICAgICBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgIGFuZCB0cmF2X3RpZCB0aWQgPVxuICAgICAgbGV0IF8sIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICB0cmF2IGJvZHlcbiAgICBpblxuICAgIHRyYXZfdGlkIHRpZDtcbiAgICBsZXQgcmVzID0gdmlzaXRlZCB0aWQgaW5cbiAgICAoKmxldCBfc3MgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKExpc3QubWFwICghc2V0KSB+Zjooc3ByaW50ZiAhXCIle1RpZH1cIikpIGluKilcbiAgICAoKlByaW50Zi5wcmludGYgIVwiaXNfY3lsaWM6ICV7VGlkfSAtLT4gKCVzKSAlYiAgLS0gJXMlIVwiIHRpZCBfc3MgcmVzIChHcm91cC5sb2MgZ3JvdXApOyopXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGlzX2N5Y2xpYyA9IGlzX2N5Y2xpY18wIH52aWFfVlI6dHJ1ZVxuICBsZXQgaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOmZhbHNlXG5lbmRcblxuaW5jbHVkZSBFeHByZXNzaW9uXG5cbm1vZHVsZSBFdmFsdWF0aW9uIChDYW5vbmljYWwgOiBDYW5vbmljYWwpID0gc3RydWN0XG4gICgqIFtWZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS12YXJzICopXG4gIG1vZHVsZSBWZW52IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbG9va3VwIDogdCAtPiBWaWQudCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb25cbiAgICB2YWwgY3JlYXRlIDogKFZpZC50ICogVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQpIGxpc3QgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBNYXAuTShWaWQpLnRcblxuICAgIGxldCBjcmVhdGUgPVxuICAgICAgTGlzdC5mb2xkXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBWaWQpKVxuICAgICAgICB+ZjooZnVuIHQgKGssIHYpIC0+IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgZW5kXG5cbiAgbW9kdWxlIEFwcGxpY2FuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnRcbiAgICAgIHwgRGVmaW5pdGlvbiBvZiBDYW5vbmljYWwuRGVmLnRcbiAgZW5kXG5cbiAgKCogW1RlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLWRlZmluaXRpb25zICopXG4gIG1vZHVsZSBUZW52IDogc2lnXG4gICAgdHlwZSBrZXkgPSBHaWQudCAqIFRpZC50XG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZmluZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBvcHRpb25cbiAgICB2YWwgZW1wdHkgOiB0XG4gICAgdmFsIGV4dGVuZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEdpZC50ICogVGlkLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZFxuXG4gICAgdHlwZSBrZXkgPSBLZXkudFxuICAgIHR5cGUgdCA9IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBNYXAuTShLZXkpLnRcblxuICAgIGxldCBmaW5kIHQgayA9IE1hcC5maW5kIHQga1xuICAgIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIEtleSlcbiAgICBsZXQgZXh0ZW5kIHQgayB2ID0gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0XG4gIGVuZFxuXG4gICgqIFtEZWZpbmluZy50XVxuICAgICBNb25hZCBmb3IgbWFuYWdpbmcgdW4tcm9sbGluZyBkZXB0aCwgYW5kIG1haW50YWluZyBhIFtUZW52LnRdICopXG4gIG1vZHVsZSBEZWZpbmluZyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICB2YWwgbG9va19lbnYgOiBUZW52LmtleSAtPiBBcHBsaWNhbmQudCBvcHRpb24gdFxuICAgIHZhbCBleHRlbmRfbmV3X3RpZCA6IFRlbnYua2V5IC0+IENhbm9uaWNhbC5EZWYudCB0IC0+IEFwcGxpY2FuZC50IHRcbiAgICB2YWwgZXhlYyA6ICdhIHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gZGVwdGg6aW50IC0+IFRlbnYudCAtPiAnYVxuXG4gICAgbGV0IHJldHVybiB4IH5kZXB0aDpfIF90ZW52ID0geFxuXG4gICAgbGV0IGJpbmQgdCBmIH5kZXB0aCB0ZW52ID1cbiAgICAgIGxldCB4ID0gdCB+ZGVwdGggdGVudiBpblxuICAgICAgKGYgeCkgfmRlcHRoIHRlbnZcbiAgICA7O1xuXG4gICAgbGV0IGxvb2tfZW52IGtleSB+ZGVwdGg6XyB0ZW52ID1cbiAgICAgIGxldCByZXN1bHQgPSBUZW52LmZpbmQgdGVudiBrZXkgaW5cbiAgICAgIE9wdGlvbi5tYXAgfmY6KGZ1biAoYFJlY3Vyc2lvbl9sZXZlbCB4KSAtPiBBcHBsaWNhbmQuUmVjdXJzaW9uX2xldmVsIHgpIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgZXh0ZW5kX25ld190aWQga2V5IGRlZl90IH5kZXB0aCB0ZW52ID1cbiAgICAgIEFwcGxpY2FuZC5EZWZpbml0aW9uXG4gICAgICAgIChsZXQgdmFsdWUgPSBgUmVjdXJzaW9uX2xldmVsIGRlcHRoIGluXG4gICAgICAgICBsZXQgdGVudiA9IFRlbnYuZXh0ZW5kIHRlbnYga2V5IHZhbHVlIGluXG4gICAgICAgICBkZWZfdCB+ZGVwdGg6KGRlcHRoICsgMSkgdGVudilcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgdCA9IHQgfmRlcHRoOjAgVGVudi5lbXB0eVxuICBlbmRcblxuICB0eXBlICdhIGRlZmluaW5nID0gJ2EgRGVmaW5pbmcudFxuXG4gIGxldCAoID4+PSApID0gRGVmaW5pbmcuYmluZFxuICBsZXQgcmV0dXJuID0gRGVmaW5pbmcucmV0dXJuXG5cbiAgbGV0IHNlcXVlbmNlX2RlZmluaW5nIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYiBkZWZpbmluZykgLT4gJ2IgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIHhzIH5mIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjY195cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjX3lzKVxuICAgICAgfCB4IDo6IHhzIC0+IGYgeCA+Pj0gZnVuIHkgLT4gbG9vcCAoeSA6OiBhY2NfeXMpIHhzXG4gICAgaW5cbiAgICBsb29wIFtdIHhzXG4gIDs7XG5cbiAgKCpcbiAgICAgU2hhcGUgZXZhbHVhdGlvbi5cblxuICAgICBTaGFwZXMgYXJlIGV2YWx1YXRlZCB0byBjYW5vbmljYWwtc2hhcGUgKGV4cHJlc3Npb25zKSwgd2l0aCBhZGRpdGlvbmFsIGRlZnMgY29sbGVjdGVkXG4gICAgIGluIHRoZSBbZGVmaW5pbmddIG1vbmFkLCB3aGljaCBhbHNvIG1hbmFnZXMgZ2VuZXJhdGlvbi9tYXBwaW5nIHRvIFtDYW5vbmljYWwuVGlkLnRdXG5cbiAgICAgVGhlcmUgaXMgZG93bndhcmRzIGNvbnRleHQgb2YgW2dyb3VwXSBhbmQgW1ZlbnYudF1cbiAgICAgVGhlIChjdXJyZW50KSBbZ3JvdXBdIGNoYW5nZXMgd2hlbiB0aGUgY2FzZSBmb3IgW1RvcF9hcHBdIGNhbGxzIFtldmFsX2FwcF0uXG5cbiAgICAgVGhlIGN1cnJlbnQgW1ZlbnYudF0gaXMgYWJhbmRvbmVkIHdoZW4gW2V2YWxfYXBwXSBpcyBjYWxsZWQsIGFuZCB0aGVuIHJlLWNyZWF0ZWQgYWZ0ZXJcbiAgICAgdGhlIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgdG8gZWl0aGVyIGlubGluZSB0aGUgdHlwZS1hcHBsaWNhdGlvbiwgb3IgbWFrZSBhIHJlZmVyZW5jZVxuICAgICB0byBhIHR5cGUtZGVmaW5pdGlvbiwgd2hpY2ggaXMgY3JlYXRlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggKEdpZC50ICogVGlkLnQpLlxuXG4gICAgIFdlIG1ha2UgYSB0eXBlLWRlZmluaXRpb24gYWx3YXlzIGZvciBSZWNvcmRzIGFuZCBWYXJpYW50cywgYW5kIGluIGFkZGl0aW9uIGZvciBhbnlcbiAgICAgb3RoZXIgY3ljbGljIHR5cGUtZGVmaW5pdGlvbi5cbiAgKilcblxuICBsZXQgcmVjIGV2YWwgOiBncm91cCAtPiBWZW52LnQgLT4gdCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFJlY29yZCBiaW5kcyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBiaW5kcyB+ZjooZnVuIChzLCB4KSAtPlxuICAgICAgICAgIGV2YWwgZ3JvdXAgdmVudiB4ID4+PSBmdW4geSAtPiByZXR1cm4gKHMsIHkpKVxuICAgICAgICA+Pj0gZnVuIGJpbmRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5yZWNvcmQgYmluZHMpXG4gICAgICB8IFZhcmlhbnQgYWx0cyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBhbHRzIH5mOihmdW4gKHMsIHhzKSAtPlxuICAgICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHhzID4+PSBmdW4geXMgLT4gcmV0dXJuIChzLCB5cykpXG4gICAgICAgID4+PSBmdW4gYWx0cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudmFyaWFudCBhbHRzKVxuICAgICAgfCBWYXIgKGxvYywgdmlkKSAtPlxuICAgICAgICAobWF0Y2ggVmVudi5sb29rdXAgdmVudiB2aWQgd2l0aFxuICAgICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICAgICAgIHwgTm9uZSAtPiBldmFsX2ZhaWwgbG9jICFcIkZyZWUgdHlwZSB2YXJpYWJsZTogJyV7VmlkfVwiIHZpZCAoKSlcbiAgICAgIHwgQW5ub3RhdGUgKHMsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYW5ub3RhdGUgcyB2KVxuICAgICAgfCBCYXNlIChzLCB0cykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYmFzZXR5cGUgcyB2cylcbiAgICAgIHwgVHVwbGUgdHMgLT4gZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudHVwbGUgdnMpXG4gICAgICB8IFRvcF9hcHAgKGluX2dyb3VwLCB0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3NcbiAgICAgICAgPj49IGZ1biBhcmdzIC0+XG4gICAgICAgICgqIGFyZ3MgZXZhbHVhdGVkIGluIGN1cnJlbnQgZ3JvdXAgKilcbiAgICAgICAgZXZhbF9hcHAgaW5fZ3JvdXAgdGlkIGFyZ3NcbiAgICAgICgqIGdyb3VwIGNoYW5nZWQgaGVyZSAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3MgPj49IGZ1biBhcmdzIC0+IGV2YWxfYXBwIGdyb3VwIHRpZCBhcmdzXG4gICAgICB8IFBvbHlfdmFyaWFudCAobG9jLCBjcykgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgfmY6KGV2YWxfcG9seV9jb25zdHIgZ3JvdXAgdmVudikgY3NcbiAgICAgICAgPj49IGZ1biB4c3MgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnBvbHlfdmFyaWFudCBsb2MgKExpc3QuY29uY2F0IHhzcykpXG5cbiAgYW5kIGV2YWxfbGlzdCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHRzIC0+IHNlcXVlbmNlX2RlZmluaW5nIHRzIH5mOihldmFsIGdyb3VwIHZlbnYpXG5cbiAgYW5kIGV2YWxfcG9seV9jb25zdHJcbiAgICA6ICBncm91cCAtPiBWZW52LnQgLT4gdCBwb2x5X2NvbnN0clxuICAgICAgLT4gKHN0cmluZyAqIFZpc2liaWxpdHkub3BhcXVlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uKSBsaXN0IGRlZmluaW5nXG4gICAgPVxuICAgIGZ1biBncm91cCB2ZW52IGMgLT5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCBgQ29uc3RyIChzLCBOb25lKSAtPiByZXR1cm4gWyBzLCBOb25lIF1cbiAgICAgIHwgYENvbnN0ciAocywgU29tZSB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIFsgcywgU29tZSAoQ2Fub25pY2FsLkV4cDEub3BhcXVlIHYpIF1cbiAgICAgIHwgYEluaGVyaXQgKGxvYywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHRcbiAgICAgICAgPj49IGZ1biB2IC0+XG4gICAgICAgIChtYXRjaCBDYW5vbmljYWwuRXhwMS5nZXRfcG9seV92YXJpYW50IHYgd2l0aFxuICAgICAgICAgfCBPayB0YWIgLT4gcmV0dXJuIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYilcbiAgICAgICAgIHwgRXJyb3IgZGVzYyAtPlxuICAgICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICBcIlRoZSBzaGFwZSBmb3IgYW4gaW5oZXJpdGVkIHR5cGUgaXMgbm90IGRlc2NyaWJlZCBhcyBhIHBvbHltb3JwaGljLXZhcmlhbnQ6ICVzXCJcbiAgICAgICAgICAgICBkZXNjXG4gICAgICAgICAgICAgKCkpXG5cbiAgYW5kIGV2YWxfZGVmaW5pdGlvbiA6IGdyb3VwIC0+IFZpZC50IGxpc3QgLT4gdCAtPiBDYW5vbmljYWwuRGVmLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCBmb3JtYWxzIGJvZHkgLT5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgKExpc3QubWFwaSBmb3JtYWxzIH5mOihmdW4gaSB4IC0+IHgsIENhbm9uaWNhbC5FeHAxLnZhciBpKSkgaW5cbiAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuZGVmaW5lIHYpXG5cbiAgYW5kIGV2YWxfYXBwIDogZ3JvdXAgLT4gVGlkLnQgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdGlkIGFyZ3MgLT5cbiAgICAgIGxldCBnaWQgPSBHcm91cC5pZCBncm91cCBpblxuICAgICAgbGV0IGZvcm1hbHMsIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgcmVjb3JkX29yX25vcm1hbF92YXJpYW50ID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgICB8IFR1cGxlIF8gfCBBbm5vdGF0ZSBfIHwgQmFzZSBfIHwgUG9seV92YXJpYW50IF8gfCBWYXIgXyB8IFJlY19hcHAgXyB8IFRvcF9hcHAgXyAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGN5Y2xpYyA9IGlzX2N5Y2xpYyBncm91cCB0aWQgaW5cbiAgICAgIGxldCBjeWNsaWNfbm9fVlIgPSBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiBncm91cCB0aWQgaW5cbiAgICAgIGlmIChyZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgJiYgY3ljbGljKSB8fCBjeWNsaWNfbm9fVlJcbiAgICAgIHRoZW5cbiAgICAgICAgRGVmaW5pbmcubG9va19lbnYgKGdpZCwgdGlkKVxuICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHJlY3Vyc2UgLT4gcmV0dXJuIHJlY3Vyc2VcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIERlZmluaW5nLmV4dGVuZF9uZXdfdGlkIChnaWQsIHRpZCkgKGV2YWxfZGVmaW5pdGlvbiBncm91cCBmb3JtYWxzIGJvZHkpKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgciAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLnJlY3Vyc2UgciBhcmdzKVxuICAgICAgICB8IERlZmluaXRpb24gZGVmIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEuYXBwbHkgZGVmIGFyZ3MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHZlbnYgPVxuICAgICAgICAgIG1hdGNoIExpc3QuemlwIGZvcm1hbHMgYXJncyB3aXRoXG4gICAgICAgICAgfCBPayB4IC0+IFZlbnYuY3JlYXRlIHhcbiAgICAgICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBmYWlsd2l0aCBcImFwcGx5LCBpbmNvcnJlY3QgdHlwZSBhcHBsaWNhdGlvbiBhcml0eVwiXG4gICAgICAgIGluXG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5KVxuICA7O1xuXG4gICgqIHRvcCBsZXZlbCBlbnRyeSBwb2ludCBmb3IgZXZhbHVhdGlvbiAqKVxuICBsZXQgZXZhbCA6IHQgLT4gQ2Fub25pY2FsLnQgPVxuICAgIGZ1biB0IC0+XG4gICAgICBsZXQgZ3JvdXAgPSBncm91cCAoTG9jYXRpb24ub2Zfc3RyaW5nIFwidG9wLWxldmVsXCIpIFtdIGluXG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIFtdIGluXG4gICAgICBsZXQgdiA9IERlZmluaW5nLmV4ZWMgKGV2YWwgZ3JvdXAgdmVudiB0KSBpblxuICAgICAgQ2Fub25pY2FsLkNyZWF0ZS5jcmVhdGUgdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW5vbmljYWxfZnVsbFxuXG4gIG1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsX2Z1bGwpXG5tb2R1bGUgQ2Fub25pY2FsX3NlbGVjdGVkID0gQ2Fub25pY2FsX2RpZ2VzdFxubW9kdWxlIEV2YWx1YXRpb25fdG9fZGlnZXN0ID0gRXZhbHVhdGlvbiAoQ2Fub25pY2FsX3NlbGVjdGVkKVxuXG5sZXQgZXZhbF90b19kaWdlc3QgZXhwID0gQ2Fub25pY2FsX3NlbGVjdGVkLnRvX2RpZ2VzdCAoRXZhbHVhdGlvbl90b19kaWdlc3QuZXZhbCBleHApXG5sZXQgZXZhbF90b19kaWdlc3Rfc3RyaW5nIGV4cCA9IERpZ2VzdC50b19oZXggKGV2YWxfdG9fZGlnZXN0IGV4cClcblxubW9kdWxlIEZvcl90eXBlcmVwID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBOb3RfYV90dXBsZSBvZiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGRlY29uc3RydWN0X3R1cGxlX2V4biB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFR1cGxlIHRzIC0+IHRzXG4gICAgfCBfIC0+IHJhaXNlIChOb3RfYV90dXBsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnRlZF90YWJsZSA9IFNvcnRlZF90YWJsZVxuICBtb2R1bGUgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3RvciA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3JcbiAgbW9kdWxlIENhbm9uaWNhbCA9IENhbm9uaWNhbFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogU2FtZSBhcyB7IUJ5dGVzLmJsaXRfc3RyaW5nfSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cbiAgICBJZiBbc10gaXMgZW1wdHksIHRoZSByZXN1bHQgaXMgdGhlIHNpbmdsZXRvbiBsaXN0IFtbXCJcIl1dLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0ICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYWNjIC0+IGNoYXIgLT4gJ2FjYykgLT4gJ2FjYyAtPiBzdHJpbmcgLT4gJ2FjY1xuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYWNjIC0+ICdhY2MpIC0+IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJpbmNsdWRlIFN0YWJsZV93aXRuZXNzX2ludGZcblxuKCogVGhlIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24gb2Ygc3RhYmxlIHdpdG5lc3NlcyBkb2VzIG5vdCBtYXR0ZXIuICopXG50eXBlIF8gdCA9IHVuaXRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYXJyYXkgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYm9vbCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19ieXRlcyA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19jaGFyID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2V4biA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19mbG9hdCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19pbnQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50MzIgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50NjQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbGF6eV90ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2xpc3QgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbmF0aXZlaW50ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX29wdGlvbiAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19yZWYgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3Nfc3RyaW5nID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX3VuaXQgPSAoKVxuZW5kXG5cbmxldCBvZl9zZXJpYWxpemFibGUgKCkgXyBfID0gKClcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTEgKF8gOiBUMSkgKF8gOiBUMSkgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyAoKSA9ICgpXG5lbmRcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTIgKF8gOiBUMikgKF8gOiBUMikgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyAoKSAoKSA9ICgpXG5lbmRcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTMgKF8gOiBUMykgKF8gOiBUMykgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyBfICgpICgpID0gKClcbmVuZFxuXG5sZXQgYXNzZXJ0X3N0YWJsZSA9ICgpXG4iLCIoKiBDb21tb246IGNvbW1vbiBkZWZpbml0aW9ucyB1c2VkIGJ5IGJpbmFyeSBwcm90b2NvbCBjb252ZXJ0ZXJzICopXG5cbm9wZW4gQmFzZVxub3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcblxudHlwZSBwb3MgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogRXJyb3JzIGFuZCBleGNlcHRpb25zICopXG5cbmV4Y2VwdGlvbiBCdWZmZXJfc2hvcnRcbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbm1vZHVsZSBSZWFkRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ19pbnQ4XG4gICAgfCBJbnRfY29kZVxuICAgIHwgSW50X292ZXJmbG93XG4gICAgfCBOYXQwX2NvZGVcbiAgICB8IE5hdDBfb3ZlcmZsb3dcbiAgICB8IEludDMyX2NvZGVcbiAgICB8IEludDY0X2NvZGVcbiAgICB8IE5hdGl2ZWludF9jb2RlXG4gICAgfCBVbml0X2NvZGVcbiAgICB8IEJvb2xfY29kZVxuICAgIHwgT3B0aW9uX2NvZGVcbiAgICB8IFN0cmluZ190b29fbG9uZ1xuICAgIHwgVmFyaWFudF90YWdcbiAgICB8IEFycmF5X3Rvb19sb25nXG4gICAgfCBMaXN0X3Rvb19sb25nIG9mXG4gICAgICAgIHsgbGVuIDogaW50XG4gICAgICAgIDsgbWF4X2xlbiA6IGludFxuICAgICAgICB9XG4gICAgfCBIYXNodGJsX3Rvb19sb25nXG4gICAgfCBTdW1fdGFnIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudCBvZiBzdHJpbmdcbiAgICB8IFBvbHlfcmVjX2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIG9mIHN0cmluZ1xuICAgIHwgU2lsbHlfdHlwZSBvZiBzdHJpbmdcbiAgICB8IEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBOZWdfaW50OCAtPiBcIk5lZ19pbnQ4XCJcbiAgICB8IEludF9jb2RlIC0+IFwiSW50X2NvZGVcIlxuICAgIHwgSW50X292ZXJmbG93IC0+IFwiSW50X292ZXJmbG93XCJcbiAgICB8IE5hdDBfY29kZSAtPiBcIk5hdDBfY29kZVwiXG4gICAgfCBOYXQwX292ZXJmbG93IC0+IFwiTmF0MF9vdmVyZmxvd1wiXG4gICAgfCBJbnQzMl9jb2RlIC0+IFwiSW50MzJfY29kZVwiXG4gICAgfCBJbnQ2NF9jb2RlIC0+IFwiSW50NjRfY29kZVwiXG4gICAgfCBOYXRpdmVpbnRfY29kZSAtPiBcIk5hdGl2ZWludF9jb2RlXCJcbiAgICB8IFVuaXRfY29kZSAtPiBcIlVuaXRfY29kZVwiXG4gICAgfCBCb29sX2NvZGUgLT4gXCJCb29sX2NvZGVcIlxuICAgIHwgT3B0aW9uX2NvZGUgLT4gXCJPcHRpb25fY29kZVwiXG4gICAgfCBTdHJpbmdfdG9vX2xvbmcgLT4gXCJTdHJpbmdfdG9vX2xvbmdcIlxuICAgIHwgVmFyaWFudF90YWcgLT4gXCJWYXJpYW50X3RhZ1wiXG4gICAgfCBBcnJheV90b29fbG9uZyAtPiBcIkFycmF5X3Rvb19sb25nXCJcbiAgICB8IExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSAtPiBzcHJpbnRmIFwiTGlzdF90b29fbG9uZyAvICVkIChtYXggJWQpXCIgbGVuIG1heF9sZW5cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmcgLT4gXCJIYXNodGJsX3Rvb19sb25nXCJcbiAgICB8IFN1bV90YWcgbG9jIC0+IFwiU3VtX3RhZyAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50IGxvYyAtPiBcIlZhcmlhbnQgLyBcIiBeIGxvY1xuICAgIHwgUG9seV9yZWNfYm91bmQgbG9jIC0+IFwiUG9seV9yZWNfYm91bmQgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIGxvYyAtPiBcIlZhcmlhbnRfd3JvbmdfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBTaWxseV90eXBlIGxvYyAtPiBcIlNpbGx5X3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgRW1wdHlfdHlwZSBsb2MgLT4gXCJFbXB0eV90eXBlIC8gXCIgXiBsb2NcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmV4Y2VwdGlvbiBSZWFkX2Vycm9yIG9mIFJlYWRFcnJvci50ICogcG9zIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5leGNlcHRpb24gUG9seV9yZWNfd3JpdGUgb2Ygc3RyaW5nXG5leGNlcHRpb24gRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxubGV0IHJhaXNlX3JlYWRfZXJyb3IgZXJyIHBvcyA9IHJhaXNlIChSZWFkX2Vycm9yIChlcnIsIHBvcykpXG5cbmxldCByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSBwb3MgPVxuICByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lLCBwb3MpKVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIGxvYyA9IGZhaWx3aXRoIChsb2MgXiBcIjogY29uY3VycmVudCBtb2RpZmljYXRpb25cIilcbmxldCBhcnJheV9ib3VuZF9lcnJvciAoKSA9IGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiXG5cbigqIEJ1ZmZlcnMgKilcblxudHlwZSBwb3NfcmVmID0gcG9zIHJlZlxudHlwZSBidWYgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5sZXQgY3JlYXRlX2J1ZiBuID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIGNfbGF5b3V0IG5cbmxldCBidWZfbGVuIGJ1ZiA9IEFycmF5MS5kaW0gYnVmXG5sZXQgYXNzZXJ0X3BvcyBwb3MgPSBpZiBwb3MgPCAwIHRoZW4gYXJyYXlfYm91bmRfZXJyb3IgKClcbmxldCBjaGVja19wb3MgKGJ1ZiA6IGJ1ZikgcG9zID0gaWYgcG9zID49IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHBvc1xuOztcblxubGV0IGNoZWNrX25leHQgKGJ1ZiA6IGJ1ZikgbmV4dCA9IGlmIG5leHQgPiBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgZ2V0X29wdF9wb3MgfmxvYyB+dmFyID0gZnVuY3Rpb25cbiAgfCBTb21lIHBvcyAtPlxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpbl9wcm90LkNvbW1vbi4lczogJXMgPCAwXCIgbG9jIHZhcik7XG4gICAgcG9zXG4gIHwgTm9uZSAtPiAwXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3JjOmJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBkc3Q6YnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfc3R1YlwiXG5cbmxldCBibGl0X2J1ZiA/c3JjX3BvcyB+c3JjID9kc3RfcG9zIH5kc3QgbGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIHNyY1xuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgPiBzcmNfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gZHN0XG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyA+IGRzdF9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBzcmNcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyArIGxlbiA+IHNyY19sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGRzdFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zICsgbGVuID4gZHN0X2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmIH5zcmNfcG9zIH5zcmMgfmRzdF9wb3MgfmRzdCB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHN0cmluZ1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9ieXRlc19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9zdHJpbmdfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfc3RyaW5nX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxubGV0IGJsaXRfYnl0ZXNfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnl0ZXNfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX3N0cmluZ1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9ieXRlc1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X2J1Zl9ieXRlcyA/c3JjX3BvcyBidWYgP2RzdF9wb3Mgc3RyIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1Zl9zdHJpbmdcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IGJ1Zl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gc3RyX2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IGJ1Zl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zIGJ1ZiB+ZHN0X3BvcyBzdHIgfmxlblxuOztcblxubGV0IGJsaXRfYnVmX3N0cmluZyA9IGJsaXRfYnVmX2J5dGVzXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxubGV0IHJlYyBjb3B5X2h0YmxfbGlzdCBodGJsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBodGJsXG4gIHwgKGssIHYpIDo6IHJlc3QgLT5cbiAgICBTdGRsaWIuSGFzaHRibC5hZGQgaHRibCBrIHY7XG4gICAgY29weV9odGJsX2xpc3QgaHRibCByZXN0XG47O1xuXG4oKiBCaWdhcnJheXMgKilcblxudHlwZSB2ZWMzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWM2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSB2ZWM2NFxudHlwZSBtYXQzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQ2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBtYXQ2NFxuXG4oKiBGbG9hdCBhcnJheXMgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0IGFycmF5XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdGFycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdGFycmF5XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKioqKVxuXG5sZXQgKCArICkgPSAoICsgKVxuIiwiKCogTmF0MDogbmF0dXJhbCBudW1iZXJzIChpbmNsdWRpbmcgemVybykgKilcblxudHlwZSB0ID0gaW50XG5cbmxldCBvZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHRoZW4gZmFpbHdpdGggXCJCaW5fcHJvdC5OYXQwLm9mX2ludDogbiA8IDBcIjtcbiAgblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuIiwiKCogV3JpdGVfbWw6IHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2Egd3JpdGVyID0gYnVmIC0+IHBvczpwb3MgLT4gJ2EgLT4gcG9zXG50eXBlICgnYSwgJ2IpIHdyaXRlcjEgPSAnYSB3cml0ZXIgLT4gJ2Igd3JpdGVyXG50eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIyID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MpIHdyaXRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIzID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MsICdkKSB3cml0ZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ4IDogYnVmIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ2NCA6IGJ1ZiAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMgJCopXG5cbmxldCBjb2RlX05FR19JTlQ4ID0gKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSAnXFx4ZmYnICgqJCopXG5sZXQgY29kZV9JTlQxNiA9ICgqJCBDb2RlLmNoYXIgSU5UMTYgKikgJ1xceGZlJyAoKiQqKVxubGV0IGNvZGVfSU5UMzIgPSAoKiQgQ29kZS5jaGFyIElOVDMyICopICdcXHhmZCcgKCokKilcbmxldCBjb2RlX0lOVDY0ID0gKCokIENvZGUuY2hhciBJTlQ2NCAqKSAnXFx4ZmMnICgqJCopXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxuXG5sZXQgdW5zYWZlX3NldDE2YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MTZcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MzJcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0NjRcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDE2bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG4gIGVsc2UgdW5zYWZlX3NldDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG4gIGVsc2UgdW5zYWZlX3NldDY0XG47O1xuXG5sZXQgYmluX3dyaXRlX3VuaXQgYnVmIH5wb3MgKCkgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAnXFwwMDAnO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgYiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIChpZiBiIHRoZW4gJ1xcMDAxJyBlbHNlICdcXDAwMCcpO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuID1cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX05FR19JTlQ4O1xuICB1bnNhZmVfc2V0OCBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMyBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQxNjtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMzI7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA5IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDY0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfY2hhciBidWYgfnBvcyBjID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgYztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiBuID49IDBcbiAgdGhlblxuICAgIGlmIG4gPCAweDAwMDAwMDgwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMVxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8IC0oMSBsc2wgMzEpXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIG5hdDAgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzJcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX3N0cmluZyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIHN0cmluZ3MgKilcbiAgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2J5dGVzIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBieXRlcyAqKVxuICB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5iaXRzX29mX2Zsb2F0IHgpO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFzc2VydF9wb3MgcG9zO1xuICAgICAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbilcbiAgICAgIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4pXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbiAgZWxzZSBpZiBuID49IDB4MDAwMDgwMDBMIHx8IG4gPCAtMHgwMDAwODAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQ2NC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50IGJ1ZiB+cG9zIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICAmJiAobiA+PSAoKiAweDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMVxuICAgICAgfHwgbiA8ICgqIC0weDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQubmVnIChOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMSkpXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfbmF0aXZlaW50IG4pKVxuICBlbHNlIGlmICgobm90IGFyY2hfc2l4dHlmb3VyKSAmJiBuID49IDB4ODAwMG4pIHx8IG4gPCAtMHg4MDAwblxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKE5hdGl2ZWludC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChOYXRpdmVpbnQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgciA9IGJpbl93cml0ZV9lbCBidWYgfnBvcyAhclxuXG5sZXQgYmluX3dyaXRlX2xhenkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGx2ID1cbiAgbGV0IHYgPSBMYXp5LmZvcmNlIGx2IGluXG4gIGJpbl93cml0ZV9lbCBidWYgfnBvcyB2XG47O1xuXG5sZXQgYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgZmFsc2VcbiAgfCBTb21lIHYgLT5cbiAgICBsZXQgbmV4dCA9IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIHRydWUgaW5cbiAgICBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6bmV4dCB2XG47O1xuXG5sZXQgYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgKGEsIGIpID1cbiAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQgYlxuOztcblxubGV0IGJpbl93cml0ZV90cmlwbGUgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgKGEsIGIsIGMpID1cbiAgbGV0IG5leHQxID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBsZXQgbmV4dDIgPSBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0MSBiIGluXG4gIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOm5leHQyIGNcbjs7XG5cbmxldCBiaW5fd3JpdGVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gZWxzX3Bvc1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9lbCBidWYgfnBvczplbHNfcG9zIGhkIGluXG4gICAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvczpuZXdfZWxzX3BvcyB0bFxuICBpblxuICBmdW4gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGxzdCAtPlxuICAgIGxldCBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKExpc3QubGVuZ3RoIGxzdCkgaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIGxlbiBpblxuICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuIH5sZW5ndGggfmJsaXQgYnVmIH5wb3MgYSA9XG4gIGxldCBsZW4gPSBsZW5ndGggYSBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBibGl0IH5zcmNfcG9zOjAgYSB+ZHN0X3Bvczpwb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6RmxvYXQuQXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6QXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyID1cbiAgbGV0IGVsc19wb3NfcmVmID0gcmVmIGVsc19wb3MgaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgZWxzX3Bvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFlbHNfcG9zX3JlZiAoQXJyYXkudW5zYWZlX2dldCBhciBpKVxuICBkb25lO1xuICAhZWxzX3Bvc19yZWZcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXkgKHR5cGUgYSkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3dyaXRlX2VsIDogYSB3cml0ZXIpIDogZmxvYXQgd3JpdGVyKSA9PSBiaW5fd3JpdGVfZmxvYXRcbiAgdGhlbiBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCBwbiA9IE5hdDAudW5zYWZlX29mX2ludCBuIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbiBpblxuICAgIGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIpXG47O1xuXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlX2tleSBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zIGh0YmwgPVxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgZWxzX3BvcyA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9rZXkgYnVmIH5wb3M6ZWxzX3BvcyBrIGluXG4gICAgYmluX3dyaXRlX3ZhbCBidWYgfnBvczpuZXdfZWxzX3BvcyB2XG4gIGluXG4gIGxldCByZXNfcG9zID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIGVsc19wb3MgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fd3JpdGVfaGFzaHRibFwiO1xuICByZXNfcG9zXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWMzMiB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWM2NCB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmVjID0gYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0MzIgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDY0IG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9tYXQgPSBiaW5fd3JpdGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgYnVmIH5wb3MgcyA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHMgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92YXJpYW50X2ludCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IHgpIDEpIDFsKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfOGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzE2Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMzJiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF82NGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjRfYml0cyBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazE2X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDMyIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDY0IDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5cbmxldCBiaW5fd3JpdGVfbWQ1IGJ1ZiB+cG9zIHggPVxuICBsZXQgeCA9IE1kNV9saWIudG9fYmluYXJ5IHggaW5cbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHggPSAxNik7XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDE2IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX3N0cmluZ19nZXQ2NCB4IDAgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCA4IGluXG4gICAgdW5zYWZlX3NldDY0IGJ1ZiBwb3MgYTtcbiAgICB1bnNhZmVfc2V0NjQgYnVmIChwb3MgKyA4KSBiKVxuICBlbHNlIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggNCBpblxuICAgIGxldCBjID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDggaW5cbiAgICBsZXQgZCA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAxMiBpblxuICAgIHVuc2FmZV9zZXQzMiBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgNCkgYjtcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyA4KSBjO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDEyKSBkKTtcbiAgbmV4dFxuOztcbiIsIigqIFJlYWRfbWw6IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGJpbmFyeSBwcm90b2NvbCB1c2luZyAobW9zdGx5KSBPQ2FtbC4gKilcblxuKCogTm90ZTogdGhlIGNvZGUgaXMgdGhpcyBmaWxlIGlzIGNhcmVmdWxseSB3cml0dGVuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLiBXaGVuXG4gICB0b3VjaGluZyB0aGlzIGNvZGUsIGJlIHN1cmUgdG8gcnVuIHRoZSBiZW5jaG1hcmtzIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4gKilcblxub3BlbiBCaWdhcnJheVxub3BlbiBDb21tb25cblxudHlwZSAnYSByZWFkZXIgPSBidWYgLT4gcG9zX3JlZjpwb3NfcmVmIC0+ICdhXG50eXBlICgnYSwgJ2IpIHJlYWRlcjEgPSAnYSByZWFkZXIgLT4gJ2IgcmVhZGVyXG50eXBlICgnYSwgJ2IsICdjKSByZWFkZXIyID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MpIHJlYWRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIzID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MsICdkKSByZWFkZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuXG5sZXQgdW5zYWZlX2dldDhfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgYyA9IHVuc2FmZV9nZXQ4IGJ1ZiBwb3MgaW5cbiAgaWYgYyA+PSAxMjggdGhlbiBjIC0gMjU2IGVsc2UgY1xuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxubGV0IG1heF9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWluX2ludFxubGV0IG1heF9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWluX2ludFxuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDMyIHBvcyB4ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIGlmIHggPj0gbWluX2ludF9pbnQzMiAmJiB4IDw9IG1heF9pbnRfaW50MzJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2FmZV9pbnRfb2ZfaW50NjQgcG9zIHggPVxuICBpZiB4ID49IG1pbl9pbnRfaW50NjQgJiYgeCA8PSBtYXhfaW50X2ludDY0XG4gIHRoZW4gSW50NjQudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXQgc2FmZV9uYXRpdmVpbnRfb2ZfaW50NjQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfcG9zIHggLT4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgZWxzZVxuICAgIGZ1biBbQGlubGluZSBhbHdheXNdIHBvcyB4IC0+XG4gICAgICBpZiB4ID49IEludDY0Lm9mX25hdGl2ZWludCBOYXRpdmVpbnQubWluX2ludFxuICAgICAgJiYgeCA8PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1heF9pbnRcbiAgICAgIHRoZW4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2dldDE2IDogYnVmIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBic3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBic3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0MTZiZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQxNiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQzMiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQ2NCBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTYgZWxzZSB1bnNhZmVfZ2V0MTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzIgZWxzZSB1bnNhZmVfZ2V0MzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjQgZWxzZSB1bnNhZmVfZ2V0NjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV9zaWduZWQgYnVmIHBvcyA9XG4gIGxldCB4ID0gdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcyBpblxuICBpZiB4ID4gMzI3NjcgdGhlbiB4IC0gNjU1MzYgZWxzZSB4XG47O1xuXG5sZXQgYmluX3JlYWRfdW5pdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiB1bnNhZmVfZ2V0IGJ1ZiBwb3MgPSAnXFwwMDAnXG4gIHRoZW4gcG9zX3JlZiA6PSBwb3MgKyAxXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuVW5pdF9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2Jvb2wgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGZhbHNlXG4gIHwgJ1xcMDAxJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICB0cnVlXG4gIHwgXyAtPiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5Cb29sX2NvZGUgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zIGluXG4gIGlmIG4gPj0gMCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5lZ19pbnQ4ICFwb3NfcmVmO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogQ2FuIGJlIGFib3ZlIG5leHQgbGluZSAobm8gZXJyb3JzIHBvc3NpYmxlIHdpdGggMTZiaXQpLlxuICAgICBUaGlzIHNob3VsZCBpbXByb3ZlIHRoZSBnZW5lcmF0ZWQgY29kZS4gKilcbiAgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDY0bGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDMyICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9pbnRfb2ZfaW50NjQgIXBvc19yZWYgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIEludDY0Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBOYXRpdmVpbnQub2ZfaW50MzIgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfbmF0aXZlaW50X29mX2ludDY0IHBvcyBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF8xNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIE5hdDAudW5zYWZlX29mX2ludCAodW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcylcbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgbWFza18zMmJpdCA9IEludDY0LnRvX2ludCAweGZmZmZfZmZmZkwgaW5cbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgIGxldCBuID0gSW50MzIudG9faW50ICh1bnNhZmVfZ2V0MzJsZSBidWYgcG9zKSBpblxuICAgICAgaWYgbiA+PSAwXG4gICAgICB0aGVuIE5hdDAudW5zYWZlX29mX2ludCBuXG4gICAgICBlbHNlXG4gICAgICAgICgqIEVyYXNlIHRoZSB1cHBlciBiaXRzIHRoYXQgd2VyZSBzZXQgdG8gMSBkdXJpbmcgdGhlIGludDMyIC0+IGludCBjb252ZXJzaW9uLiAqKVxuICAgICAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKG4gbGFuZCBtYXNrXzMyYml0KSlcbiAgZWxzZVxuICAgIGZ1biBidWYgfnBvc19yZWYgfnBvcyAtPlxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gICAgICBpZiBuID49IDBsICYmIG4gPD0gbWF4X2ludF9pbnQzMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBuID0gTmF0MC51bnNhZmVfb2ZfaW50IChJbnQzMi50b19pbnQgbikgaW5cbiAgICAgICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgICAgICBuKVxuICAgICAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93ICFwb3NfcmVmXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIChcbiAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50NjQudG9faW50IG4pIGluXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIG4pXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdDAudW5zYWZlX29mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmF0MF8zMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgcG9zXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfYnl0ZXMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0YXJ0X3BvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5TdHJpbmdfdG9vX2xvbmcgc3RhcnRfcG9zO1xuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWZfYnl0ZXMgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIHN0ciB+bGVuO1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9zdHJpbmcgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0ciA9IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiBpblxuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJpbl9yZWFkX2NoYXIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIENoYXIuY29kZSBjaFxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gICAgZWxzZVxuICAgICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfZmxvYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICBJbnQ2NC5mbG9hdF9vZl9iaXRzICh1bnNhZmVfZ2V0NjRsZSBidWYgcG9zKVxuOztcblxubGV0IGJpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQzMi5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50MzJfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIEludDY0Lm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnQ2NF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdGl2ZWludC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIHdoZW4gYXJjaF9zaXh0eWZvdXIgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0aXZlaW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX3JlZiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgcmVmIGVsXG47O1xuXG5sZXQgYmluX3JlYWRfbGF6eSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgTGF6eS5mcm9tX3ZhbCBlbFxuOztcblxubGV0IGJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXDAwMCcgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTm9uZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgU29tZSBlbFxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuT3B0aW9uX2NvZGUgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfcGFpciBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGJcbjs7XG5cbmxldCBiaW5fcmVhZF90cmlwbGUgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBjID0gYmluX3JlYWRfYyBidWYgfnBvc19yZWYgaW5cbiAgYSwgYiwgY1xuOztcblxubGV0IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiA9XG4gIGxldCByZWMgbG9vcCBuIGFjYyA9XG4gICAgaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChuIC0gMSkgKGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA6OiBhY2MpXG4gIGluXG4gIGxvb3AgbGVuIFtdXG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9sZW4gdGhlbiByYWlzZV9yZWFkX2Vycm9yIChMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0pICFwb3NfcmVmO1xuICBsZXQgcmV2X2xzdCA9IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBMaXN0LnJldiByZXZfbHN0XG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbjptYXhfaW50IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZlxuOztcblxubGV0IGR1bW15X2Zsb2F0X2J1ZiA9IGNyZWF0ZV9idWYgOFxubGV0ICgpID0gaWdub3JlIChXcml0ZS5iaW5fd3JpdGVfZmxvYXQgZHVtbXlfZmxvYXRfYnVmIH5wb3M6MCAzLjEpXG5cbmxldCBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4gfmNyZWF0ZSB+YmxpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9mbG9hdF9hcnJheV9sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBwb3M7XG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBhcnIgPSBjcmVhdGUgbGVuIGluXG4gIGJsaXQgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIGFyciB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGFyclxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0YXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpGbG9hdC5BcnJheS5jcmVhdGVcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICAgIGJ1ZlxuICAgIH5wb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXRfYXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpBcnJheS5jcmVhdGVfZmxvYXRcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRfYXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2FycmF5ICh0eXBlIGEpIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl9yZWFkX2VsIDogYSByZWFkZXIpIDogZmxvYXQgcmVhZGVyKSA9PSBiaW5fcmVhZF9mbG9hdFxuICB0aGVuIChPYmoubWFnaWMgKGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA6IGZsb2F0IGFycmF5KSA6IGEgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFt8fF1cbiAgICBlbHNlIChcbiAgICAgIGlmIGFyY2hfc2l4dHlmb3VyXG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpXG4gICAgICBlbHNlIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBtYXliZV9mbG9hdCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBkdW1teV9mbG9hdF9idWYgfnBvc19yZWY6KHJlZiAwKSBpblxuICAgICAgICAgICAgU29tZSBlbFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBtYXliZV9mbG9hdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3NcbiAgICAgICAgfCBTb21lIGVsIC0+XG4gICAgICAgICAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgZWwpID0gT2JqLmRvdWJsZV90YWcgfHwgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3Bvcyk7XG4gICAgICBsZXQgZmlyc3QgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiBmaXJzdCBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIGkgZWxcbiAgICAgIGRvbmU7XG4gICAgICByZXMpKVxuOztcblxubGV0IGJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYWRfa3ZfcGFpciA9IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBpblxuICBsZXQgZWxzID0gYmluX3JlYWRfbl9yZXZfbGlzdCByZWFkX2t2X3BhaXIgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBjb3B5X2h0YmxfbGlzdCBodGJsIGVsc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzMyIHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzY0IHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfdmVjID0gYmluX3JlYWRfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDMyIG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbjEgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgbGVuMiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG1hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dCBsZW4xIGxlbjIgaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfbWF0NjQgbWF0KSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBtYXRcbjs7XG5cbmxldCBiaW5fcmVhZF9tYXQgPSBiaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHN0ciA9IGNyZWF0ZV9idWYgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpzdHIgfmRzdF9wb3M6MCB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHN0clxuOztcblxubGV0IGJpbl9yZWFkX3ZhcmlhbnRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAoKiBbbl0gbXVzdCBjb250YWluIGFuIGludGVnZXIgYWxyZWFkeSBlbmNvZGVkLCBpLmUuIFtuID0gMiAqIGsgKyAxXS4gKilcbiAgaWYgSW50MzIubG9nYW5kIG4gMWwgPSAwbFxuICB0aGVuIHJhaXNlIChSZWFkX2Vycm9yIChSZWFkRXJyb3IuVmFyaWFudF90YWcsIHBvcykpXG4gIGVsc2UgKFxuICAgICgqIFdlIHNoaWZ0IGl0IGJ5IG9uZSBiaXQgdG8gdGhlIHJpZ2h0IHNlIHdlIGdldCBiYWNrIFsyICogayArIDFdIGluIHRoZSBlbmQuICopXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHQgbiAxKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfOGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gIHVuc2FmZV9nZXQ4IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfMTZiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzMyYml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzY0Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDY0IHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50NjRfYml0cyBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMTZfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmszMl9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50MzIgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazY0X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0YmUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3Ncbjs7XG5cblslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMDcsIDApXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDY0dVwiXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5cblslJWVuZGlmXVxuXG5sZXQgYmluX3JlYWRfbWQ1IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0NjQgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDY0IGJ1ZiAocG9zICsgOCkgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDggYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0MzIgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgNCkgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDgpIGluXG4gICAgbGV0IGQgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyAxMikgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDQgYjtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDggYztcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDEyIGQpO1xuICBNZDVfbGliLnVuc2FmZV9vZl9iaW5hcnkgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzKVxuOztcbiIsImluY2x1ZGUgQmluX3NoYXBlXG5cbigqIG5ldyBiYXNlIHNoYXBlcyAqKVxubGV0IGJpbl9zaGFwZV91bml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidW5pdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9ib29sID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYm9vbFwiKSBbXVxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJieXRlc1wiKSBbXVxubGV0IGJpbl9zaGFwZV9jaGFyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiY2hhclwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDYzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjNcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXRpdmVpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0MCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdDBcIikgW11cbmxldCBiaW5fc2hhcGVfZGlnZXN0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZGlnZXN0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm1hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJiaWdzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0YXJyYXlcIikgW11cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2YXJpYW50X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF84Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8xNmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMzJiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzY0Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NF9iaXRzXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMTZfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50NjRcIikgW11cblxuKCogbmV3IHNoYXBlIGNvbnN0cnVjdG9ycyAqKVxubGV0IGJpbl9zaGFwZV9yZWYgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInJlZlwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9vcHRpb24geCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm9wdGlvblwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9saXN0IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJsaXN0XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2FycmF5IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJhcnJheVwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHggeSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImhhc2h0YmxcIikgWyB4OyB5IF1cblxuKCogc2hhcGUtY29uc3RydWN0b3IgYWxpYXNlcyAqKVxubGV0IGJpbl9zaGFwZV9sYXp5IHggPSB4XG5sZXQgYmluX3NoYXBlX3BhaXIgeCB5ID0gdHVwbGUgWyB4OyB5IF1cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHggeSB6ID0gdHVwbGUgWyB4OyB5OyB6IF1cbiIsIigqIFNpemU6IGNvbXB1dGUgc2l6ZSBvZiB2YWx1ZXMgaW4gdGhlIGJpbmFyeSBwcm90b2NvbC4gKilcblxub3BlbiBCaWdhcnJheVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcblxub3BlbiBDb21tb25cblxubW9kdWxlIE1heGltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9ib29sID0gMVxuICBsZXQgYmluX3NpemVfY2hhciA9IDFcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1heCBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gOFxuICBsZXQgYmluX3NpemVfaW50MzIgPSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IDlcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IGJpbl9zaXplX2ludF9uYXQwXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gMVxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gMlxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gOFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSAyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IDhcbmVuZFxuXG5tb2R1bGUgTWluaW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IE1heGltdW0uYmluX3NpemVfdW5pdFxuICBsZXQgYmluX3NpemVfYm9vbCA9IE1heGltdW0uYmluX3NpemVfYm9vbFxuICBsZXQgYmluX3NpemVfY2hhciA9IE1heGltdW0uYmluX3NpemVfY2hhclxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gMlxuICBsZXQgYmluX3NpemVfaW50ID0gbWluIGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSBNYXhpbXVtLmJpbl9zaXplX2Zsb2F0XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfaW50NjQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX3JlZiA9IDFcbiAgbGV0IGJpbl9zaXplX2xhenlfdCA9IDFcbiAgbGV0IGJpbl9zaXplX29wdGlvbiA9IDFcbiAgbGV0IGJpbl9zaXplX3BhaXIgPSAxICsgMVxuICBsZXQgYmluX3NpemVfdHJpcGxlID0gMSArIDEgKyAxXG4gIGxldCBiaW5fc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwXG4gIGxldCBiaW5fc2l6ZV9saXN0ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfaGFzaHRibCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9ieXRlcyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2xlbiArIGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IE1heGltdW0uYmluX3NpemVfdmFyaWFudF9pbnRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfOGJpdFxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMTZiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzMyYml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF82NGJpdFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IE1heGltdW0uYmluX3NpemVfaW50NjRfYml0c1xuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazE2X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzJcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludDY0XG5lbmRcblxudHlwZSAnYSBzaXplciA9ICdhIC0+IGludFxudHlwZSAoJ2EsICdiKSBzaXplcjEgPSAnYSBzaXplciAtPiAnYiBzaXplclxudHlwZSAoJ2EsICdiLCAnYykgc2l6ZXIyID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYykgc2l6ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2l6ZXIzID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYywgJ2QpIHNpemVyMlxuXG5sZXQgYmluX3NpemVfdW5pdCAoKSA9IDFcbmxldCBiaW5fc2l6ZV9ib29sIF8gPSAxXG5cbmxldCBiaW5fc2l6ZV9pbnRfbmF0MCBuID1cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDgwMDAwMDAwICopIDEgbHNsIDMxXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgbiA9XG4gIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgKCogLTB4ODAwMDAwMDAgKikgLSgxIGxzbCAzMSlcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2NoYXIgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnQgbiA9IGlmIG4gPj0gMCB0aGVuIGJpbl9zaXplX2ludF9uYXQwIG4gZWxzZSBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgblxuXG5sZXQgYmluX3NpemVfbmF0MCBuYXQwID1cbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHgxMDAwMDAwMDAgKikgMSBsc2wgMzJcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHNpemVfbGVuID0gYmluX3NpemVfbmF0MCBwbGVuIGluXG4gIHNpemVfbGVuICsgbGVuXG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoU3RyaW5nLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfYnl0ZXMgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChCeXRlcy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX21kNSBfID0gMTZcblxubGV0IGJpbl9zaXplX2Zsb2F0IGYgPVxuICAoKiBJZiB3ZSBqdXN0IGlnbm9yZSB0aGUgYXJndW1lbnQgdGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgcmVxdWlyZSBpdCB0byBleGlzdCBhbmQgYmVcbiAgICAgYm94ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBmb3IgaW5zdGFuY2Ugd2UgY2FsbCB0aGlzIGZvciBhIGZpZWxkIG9mIGEgZmxvYXQgcmVjb3JkLFxuICAgICB0aGUgY29tcGlsZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZmxvYXQgZm9yIG5vdGhpbmcuXG5cbiAgICAgV2l0aCB0aGlzIGxpbmUgdGhlIGNvbXBpbGVyIHJlYWxseSBpZ25vcmVzIHRoZSBmbG9hdC4gKilcbiAgaWdub3JlICh0cnVuY2F0ZSBmKTtcbiAgOFxuOztcblxubGV0IGJpbl9zaXplX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbCB0aGVuIDUgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl9zaXplX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50IChJbnQ2NC50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50MzIgKEludDY0LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfbmF0aXZlaW50ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQ2NCAoSW50NjQub2ZfbmF0aXZlaW50IG4pXG4gIGVsc2UgZnVuIG4gLT4gYmluX3NpemVfaW50MzIgKE5hdGl2ZWludC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX3JlZiBiaW5fc2l6ZV9lbCByID0gYmluX3NpemVfZWwgIXJcbmxldCBiaW5fc2l6ZV9sYXp5X3QgYmluX3NpemVfZWwgbHYgPSBiaW5fc2l6ZV9lbCAoTGF6eS5mb3JjZSBsdilcbmxldCBiaW5fc2l6ZV9sYXp5ID0gYmluX3NpemVfbGF6eV90XG5cbmxldCBiaW5fc2l6ZV9vcHRpb24gYmluX3NpemVfZWwgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMVxuICB8IFNvbWUgdiAtPiAxICsgYmluX3NpemVfZWwgdlxuOztcblxubGV0IGJpbl9zaXplX3BhaXIgYmluX3NpemVfYSBiaW5fc2l6ZV9iIChhLCBiKSA9IGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYlxuXG5sZXQgYmluX3NpemVfdHJpcGxlIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIChhLCBiLCBjKSA9XG4gIGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYiArIGJpbl9zaXplX2MgY1xuOztcblxubGV0IGJpbl9zaXplX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYyB+bGVuX2FjYyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBzaXplX2FjYyArIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW5fYWNjKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzooc2l6ZV9hY2MgKyBiaW5fc2l6ZV9lbCBoZCkgfmxlbl9hY2M6KGxlbl9hY2MgKyAxKSB0bFxuICBpblxuICBmdW4gYmluX3NpemVfZWwgbHN0IC0+IGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzowIH5sZW5fYWNjOjAgbHN0XG47O1xuXG5sZXQgYmluX3NpemVfbGVuIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBiaW5fc2l6ZV9uYXQwIHBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdGFycmF5IGFyID1cbiAgbGV0IGxlbiA9IEZsb2F0LkFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgYXIgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4gPVxuICBsZXQgdG90YWxfbGVuX3JlZiA9IHJlZiB0b3RhbF9sZW4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgbGV0IGVsID0gQXJyYXkudW5zYWZlX2dldCBhciBpIGluXG4gICAgdG90YWxfbGVuX3JlZiA6PSAhdG90YWxfbGVuX3JlZiArIGJpbl9zaXplX2VsIGVsXG4gIGRvbmU7XG4gICF0b3RhbF9sZW5fcmVmXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXkgKHR5cGUgYSkgYmluX3NpemVfZWwgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fc2l6ZV9lbCA6IGEgc2l6ZXIpIDogZmxvYXQgc2l6ZXIpID09IGJpbl9zaXplX2Zsb2F0XG4gIHRoZW4gYmluX3NpemVfZmxvYXRfYXJyYXkgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCB0b3RhbF9sZW4gPSBiaW5fc2l6ZV9sZW4gbiBpblxuICAgIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+bilcbjs7XG5cbmxldCBiaW5fc2l6ZV9oYXNodGJsIGJpbl9zaXplX2tleSBiaW5fc2l6ZV92YWwgaHRibCA9XG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgdG90YWxfbGVuID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgdG90YWxfbGVuICsgYmluX3NpemVfa2V5IGsgKyBiaW5fc2l6ZV92YWwgdlxuICBpblxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgdG90YWxfbGVuID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIChiaW5fc2l6ZV9sZW4gbGVuKSBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl9zaXplX2hhc2h0YmxcIjtcbiAgdG90YWxfbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZ2VuX3ZlYyB2ZWMgbXVsdGlwbGllciA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHZlYyBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKG11bHRpcGxpZXIgKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDhcbmxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3NpemVfZ2VuX21hdCBtYXQgbXVsdGlwbGllciA9XG4gIGxldCBkaW0xID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBkaW0yID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBzaXplID0gZGltMSAqIGRpbTIgaW5cbiAgYmluX3NpemVfbGVuIGRpbTEgKyBiaW5fc2l6ZV9sZW4gZGltMiArIChtdWx0aXBsaWVyICogc2l6ZSlcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgOFxubGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NpemVfYmlnc3RyaW5nIGJ1ZiA9IGJpbl9zaXplX2dlbl92ZWMgYnVmIDFcbmxldCBiaW5fc2l6ZV92YXJpYW50X2ludCBfID0gNFxubGV0IGJpbl9zaXplX2ludF84Yml0IF8gPSAxXG5sZXQgYmluX3NpemVfaW50XzE2Yml0IF8gPSAyXG5sZXQgYmluX3NpemVfaW50XzMyYml0IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzY0Yml0IF8gPSA4XG5sZXQgYmluX3NpemVfaW50NjRfYml0cyBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgXyA9IDJcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyIF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludCBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCBfID0gOFxuIiwiKCogVHBfY2xhc3M6IHNpemVycywgd3JpdGVycywgYW5kIHJlYWRlcnMgaW4gcmVjb3JkcyAqKVxuXG50eXBlICdhIHdyaXRlciA9XG4gIHsgc2l6ZSA6ICdhIFNpemUuc2l6ZXJcbiAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICB9XG5cbnR5cGUgJ2EgcmVhZGVyID1cbiAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICB9XG5cbnR5cGUgJ2EgdCA9XG4gIHsgc2hhcGUgOiBTaGFwZS50XG4gIDsgd3JpdGVyIDogJ2Egd3JpdGVyXG4gIDsgcmVhZGVyIDogJ2EgcmVhZGVyXG4gIH1cblxudHlwZSAnYSB3cml0ZXIwID0gJ2Egd3JpdGVyXG50eXBlICdhIHJlYWRlcjAgPSAnYSByZWFkZXJcbnR5cGUgJ2EgdDAgPSAnYSB0XG5cbm1vZHVsZSBTMSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gJ2Igd3JpdGVyMFxuICB0eXBlICgnYSwgJ2IpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gJ2IgcmVhZGVyMFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSB0MCAtPiAnYiB0MFxuZW5kXG5cbm1vZHVsZSBTMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MpIFMxLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MpIFMxLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYykgUzEudFxuZW5kXG5cbm1vZHVsZSBTMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSB0MCAtPiAoJ2IsICdjLCAnZCkgUzIudFxuZW5kXG5cbmxldCB2YXJpYW50X3dyb25nX3R5cGUgbmFtZSBfYnVmIH5wb3NfcmVmIF94ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lICFwb3NfcmVmXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMuU3RyICopXG4oKiQgbWtfYmFzZSBcInVuaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfdW5pdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdW5pdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdCB9XG5sZXQgYmluX3JlYWRlcl91bml0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF91bml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgfVxubGV0IGJpbl9zaGFwZV91bml0ID0gU2hhcGUuYmluX3NoYXBlX3VuaXRcblxubGV0IGJpbl91bml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV91bml0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3VuaXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfdW5pdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJvb2xcIiAqKVxubGV0IGJpbl93cml0ZXJfYm9vbCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYm9vbDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbCB9XG5sZXQgYmluX3JlYWRlcl9ib29sID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9ib29sOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgfVxubGV0IGJpbl9zaGFwZV9ib29sID0gU2hhcGUuYmluX3NoYXBlX2Jvb2xcblxubGV0IGJpbl9ib29sID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ib29sOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Jvb2w7IHJlYWRlciA9IGJpbl9yZWFkZXJfYm9vbCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInN0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nIH1cblxubGV0IGJpbl9yZWFkZXJfc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9zdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX3N0cmluZ1xuXG5sZXQgYmluX3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfc3RyaW5nOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3N0cmluZzsgcmVhZGVyID0gYmluX3JlYWRlcl9zdHJpbmcgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJieXRlc1wiICopXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYnl0ZXM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzIH1cblxubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2J5dGVzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBTaGFwZS5iaW5fc2hhcGVfYnl0ZXNcblxubGV0IGJpbl9ieXRlcyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYnl0ZXM7IHdyaXRlciA9IGJpbl93cml0ZXJfYnl0ZXM7IHJlYWRlciA9IGJpbl9yZWFkZXJfYnl0ZXMgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJjaGFyXCIgKilcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2NoYXI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2NoYXIgfVxubGV0IGJpbl9yZWFkZXJfY2hhciA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfY2hhcjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiIH1cbmxldCBiaW5fc2hhcGVfY2hhciA9IFNoYXBlLmJpbl9zaGFwZV9jaGFyXG5cbmxldCBiaW5fY2hhciA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfY2hhcjsgd3JpdGVyID0gYmluX3dyaXRlcl9jaGFyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2NoYXIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludCB9XG5sZXQgYmluX3JlYWRlcl9pbnQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgfVxubGV0IGJpbl9zaGFwZV9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XG5sZXQgYmluX2ludCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQgfVxuXG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdFxuXG5sZXQgYmluX2Zsb2F0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDMyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50MzIgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50MzI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9pbnQzMlxuXG5sZXQgYmluX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQzMjsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQzMjsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQzMiB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjQgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NFxuXG5sZXQgYmluX2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdGl2ZWludFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdGl2ZWludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0aXZlaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFNoYXBlLmJpbl9zaGFwZV9uYXRpdmVpbnRcblxubGV0IGJpbl9uYXRpdmVpbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdGl2ZWludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0aXZlaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXRpdmVpbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXQwXCIgKilcbmxldCBiaW5fd3JpdGVyX25hdDAgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdDA7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdDAgfVxubGV0IGJpbl9yZWFkZXJfbmF0MCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0MDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0MFwiIH1cbmxldCBiaW5fc2hhcGVfbmF0MCA9IFNoYXBlLmJpbl9zaGFwZV9uYXQwXG5cbmxldCBiaW5fbmF0MCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0MDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXQwOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdDAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwicmVmXCIgKilcbmxldCBiaW5fd3JpdGVyX3JlZiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcmVmIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9yZWYgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9yZWYgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfcmVmIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9yZWYgeDEgPSBTaGFwZS5iaW5fc2hhcGVfcmVmIHgxXG5cbmxldCBiaW5fcmVmIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcmVmIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcmVmIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3JlZiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxhenlcIiAqKVxubGV0IGJpbl93cml0ZXJfbGF6eSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGF6eSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGF6eSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xhenkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGF6eSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xhenkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGF6eSB4MVxuXG5sZXQgYmluX2xhenkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9sYXp5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGF6eSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9sYXp5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwib3B0aW9uXCIgKilcbmxldCBiaW5fd3JpdGVyX29wdGlvbiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfb3B0aW9uIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9vcHRpb24gYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9vcHRpb24geDEgPSBTaGFwZS5iaW5fc2hhcGVfb3B0aW9uIHgxXG5cbmxldCBiaW5fb3B0aW9uIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfb3B0aW9uIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfb3B0aW9uIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX29wdGlvbiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcInBhaXJcIiAqKVxubGV0IGJpbl93cml0ZXJfcGFpciBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3BhaXIgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfcGFpciBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9wYWlyIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3BhaXIgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJwYWlyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9wYWlyIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX3BhaXIgeDEgeDJcblxubGV0IGJpbl9wYWlyIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcGFpciBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3BhaXIgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3BhaXIgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UzIFwidHJpcGxlXCIgKilcbmxldCBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiBiaW5fd3JpdGVyX2VsMyA9XG4gIHsgc2l6ZSA9XG4gICAgICAoZnVuIHYgLT5cbiAgICAgICAgIFNpemUuYmluX3NpemVfdHJpcGxlIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSBiaW5fd3JpdGVyX2VsMy5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfdHJpcGxlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwxLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwyLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwzLndyaXRlXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zXG4gICAgICAgICAgIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiBiaW5fcmVhZGVyX2VsMyA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF90cmlwbGVcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDEucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMi5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwzLnJlYWRcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInRyaXBsZVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzID0gU2hhcGUuYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4M1xuXG5sZXQgYmluX3RyaXBsZSBiaW5fZWwxIGJpbl9lbDIgYmluX2VsMyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdHJpcGxlIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZSBiaW5fZWwzLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl90cmlwbGUgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXIgYmluX2VsMy53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlciBiaW5fZWwzLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsaXN0XCIgKilcbmxldCBiaW5fd3JpdGVyX2xpc3QgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xpc3QgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xpc3QgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9saXN0IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xpc3QgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsaXN0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9saXN0IHgxID0gU2hhcGUuYmluX3NoYXBlX2xpc3QgeDFcblxubGV0IGJpbl9saXN0IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGlzdCBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xpc3QgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGlzdCBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2FycmF5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9hcnJheSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfYXJyYXkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9hcnJheSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9hcnJheSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImFycmF5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9hcnJheSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9hcnJheSB4MVxuXG5sZXQgYmluX2FycmF5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYXJyYXkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9hcnJheSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9hcnJheSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcImhhc2h0YmxcIiAqKVxubGV0IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX2hhc2h0YmwgeDEgeDJcblxubGV0IGJpbl9oYXNodGJsIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaGFzaHRibCBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG5cbmxldCBiaW5fZmxvYXQzMl92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fZmxvYXQ2NF92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJ2ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfdmVjID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZlYyB9XG5sZXQgYmluX3JlYWRlcl92ZWMgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmVjXCIgfVxubGV0IGJpbl9zaGFwZV92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3ZlYyA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdmVjOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZlYzsgcmVhZGVyID0gYmluX3JlYWRlcl92ZWMgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcblxubGV0IGJpbl9mbG9hdDMyX21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm1hdFwiICopXG5sZXQgYmluX3dyaXRlcl9tYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbWF0IH1cbmxldCBiaW5fcmVhZGVyX21hdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiB9XG5sZXQgYmluX3NoYXBlX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fbWF0ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9tYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfbWF0OyByZWFkZXIgPSBiaW5fcmVhZGVyX21hdCB9XG5cbigqJCBta19iYXNlIFwiYmlnc3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX2JpZ3N0cmluZyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYmlnc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmcgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYmlnc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX2JpZ3N0cmluZ1xuXG5sZXQgYmluX2JpZ3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYmlnc3RyaW5nXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9iaWdzdHJpbmdcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2JpZ3N0cmluZ1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0YXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXRhcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheSB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0YXJyYXlcblxubGV0IGJpbl9mbG9hdGFycmF5ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdGFycmF5XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdGFycmF5XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdGFycmF5XG4gIH1cbjs7XG5cbigqJCopXG5cbigqJCBta19iYXNlIFwidmFyaWFudF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfdmFyaWFudF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZhcmlhbnRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92YXJpYW50X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl92YXJpYW50X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmFyaWFudF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZhcmlhbnRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV92YXJpYW50X2ludCA9IFNoYXBlLmJpbl9zaGFwZV92YXJpYW50X2ludFxuXG5sZXQgYmluX3ZhcmlhbnRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV92YXJpYW50X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdmFyaWFudF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzhiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzhiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF84Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfOGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfOGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzhiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF84Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfOGJpdFxuXG5sZXQgYmluX2ludF84Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfOGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzhiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF84Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzE2Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8xNmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzE2Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMTZiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzE2Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMTZiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8xNmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzE2Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8xNmJpdFxuXG5sZXQgYmluX2ludF8xNmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzE2Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMTZiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8xNmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8zMmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMzJiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8zMmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzMyYml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8zMmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzMyYml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMzJiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8zMmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMzJiaXRcblxubGV0IGJpbl9pbnRfMzJiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8zMmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzMyYml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMzJiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfNjRiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzY0Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfNjRiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfNjRiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzY0Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfNjRiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzY0Yml0XG5cbmxldCBiaW5faW50XzY0Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfNjRiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF82NGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzY0Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRfYml0c1wiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NF9iaXRzID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NF9iaXRzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NF9iaXRzIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0X2JpdHMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0X2JpdHM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0X2JpdHNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRfYml0c1xuXG5sZXQgYmluX2ludDY0X2JpdHMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0X2JpdHNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0X2JpdHNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0X2JpdHNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMTZfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmsxNl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazE2X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazE2X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazE2X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG5cbmxldCBiaW5fbmV0d29yazE2X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazE2X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazE2X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50MzIgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50MzJcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50MzJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG5cbmxldCBiaW5fbmV0d29yazY0X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDY0XG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludDY0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG5cbmxldCBiaW5fbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0XG4gIH1cbjs7XG5cbigqJCopXG5cbigqIENvbnZlcnNpb24gb2YgYmluYWJsZSB0eXBlcyAqKVxuXG5sZXQgY252X3dyaXRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gdHBfY2xhc3Muc2l6ZSAoY252IHYpKVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IHRwX2NsYXNzLndyaXRlIGJ1ZiB+cG9zIChjbnYgdikpXG4gIH1cbjs7XG5cbmxldCBjbnZfcmVhZGVyIGNudiB0cF9jbGFzcyA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGNudiAodHBfY2xhc3MucmVhZCBidWYgfnBvc19yZWYpKVxuICA7IHZ0YWdfcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIHZ0YWcgLT4gY252ICh0cF9jbGFzcy52dGFnX3JlYWQgYnVmIH5wb3NfcmVmIHZ0YWcpKVxuICB9XG47O1xuXG5sZXQgY252IGZvcl9zaGFwZSBmb3Jfd3JpdGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MgPVxuICB7IHNoYXBlID0gZm9yX3NoYXBlIHRwX2NsYXNzLnNoYXBlXG4gIDsgd3JpdGVyID0gY252X3dyaXRlciBmb3Jfd3JpdGVyIHRwX2NsYXNzLndyaXRlclxuICA7IHJlYWRlciA9IGNudl9yZWFkZXIgZm9yX3JlYWRlciB0cF9jbGFzcy5yZWFkZXJcbiAgfVxuOztcbiIsIigqIEJpbmFibGU6IHNpZ25hdHVyZXMgZGVmaW5pbmcgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBmb3IgdGhlIGJpbmFyeSBwcm90b2NvbC5cbiAgIFtTLCBTMSwgZXRjXSBhcmUgdGhlIHNpZ25hdHVyZXMgc2F0aXNmaWVkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZSBhbmRcbiAgIFtNaW5pbWFsLlMsIE1pbmltYWwuUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHRoYXQgZ2VuZXJhdGVkIGNvZGUgdXNlcy4gKilcblxuKCogdGhlIHN1YnNldCBvZiBTIGNvbnRhaW5pbmcgb25seSBmdW5jdGlvbnMsIHNvIHRoYXQgb25lIGNhbiByZWN1cnNpdmVseSBkZWZpbmUgbW9kdWxlc1xuICAgaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlICopXG5tb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfdCA6IHQgV3JpdGUud3JpdGVyXG4gIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuXG4gICgqKlxuICAgICBUaGlzIGZ1bmN0aW9uIG9ubHkgbmVlZHMgaW1wbGVtZW50YXRpb24gaWYgW3RdIGV4cG9zZWQgdG8gYmUgYSBwb2x5bW9ycGhpYyB2YXJpYW50LlxuICAgICBEZXNwaXRlIHdoYXQgdGhlIHR5cGUgcmVhZHMsIHRoaXMgZG9lcyAqbm90KiBwcm9kdWNlIGEgZnVuY3Rpb24gYWZ0ZXIgcmVhZGluZztcbiAgICAgaW5zdGVhZCBpdCB0YWtlcyB0aGUgY29uc3RydWN0b3IgdGFnIChpbnQpIGJlZm9yZSByZWFkaW5nIGFuZCByZWFkcyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgdmFyaWFudCBbdF0gYWZ0ZXJ3YXJkcy5cbiAgKilcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKGludCAtPiB0KSBSZWFkLnJlYWRlclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gIHZhbCBiaW5fd3JpdGVyX3QgOiB0IFR5cGVfY2xhc3Mud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiB0IFR5cGVfY2xhc3MucmVhZGVyXG4gIHZhbCBiaW5fdCA6IHQgVHlwZV9jbGFzcy50XG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdhIHQpIFJlYWQucmVhZGVyMVxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFNpemUuc2l6ZXIyXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgaW50IC0+ICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFdyaXRlLndyaXRlcjNcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLnRcbmVuZFxuXG5tb2R1bGUgTWluaW1hbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiB0IFNpemUuc2l6ZXJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICAgIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2EgdCkgV3JpdGUud3JpdGVyMVxuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFNpemUuc2l6ZXIzXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsICdjLCBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICBlbmRcbmVuZFxuIiwiKCogVXRpbHM6IHV0aWxpdHkgZnVuY3Rpb25zIGZvciB1c2VyIGNvbnZlbmllbmNlICopXG5cbm9wZW4gQ29tbW9uXG5vcGVuIFNpemVcbm9wZW4gVHlwZV9jbGFzc1xuaW5jbHVkZSBVdGlsc19pbnRmXG5cbmxldCBzaXplX2hlYWRlcl9sZW5ndGggPSA4XG5sZXQgYmluX3dyaXRlX3NpemVfaGVhZGVyID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdFxubGV0IGJpbl9yZWFkX3NpemVfaGVhZGVyID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXRcblxubGV0IGJpbl9kdW1wID8oaGVhZGVyID0gZmFsc2UpIHdyaXRlciB2ID1cbiAgbGV0IGJ1ZiwgcG9zLCBwb3NfbGVuID1cbiAgICBsZXQgdl9sZW4gPSB3cml0ZXIuc2l6ZSB2IGluXG4gICAgaWYgaGVhZGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdG90X2xlbiA9IHZfbGVuICsgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB0b3RfbGVuIGluXG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zOjAgdl9sZW4gaW5cbiAgICAgIGJ1ZiwgcG9zLCBwb3MgKyB2X2xlbilcbiAgICBlbHNlIChcbiAgICAgIGxldCBidWYgPSBjcmVhdGVfYnVmIHZfbGVuIGluXG4gICAgICBidWYsIDAsIHZfbGVuKVxuICBpblxuICBsZXQgcG9zID0gd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYgaW5cbiAgaWYgcG9zID0gcG9zX2xlblxuICB0aGVuIGJ1ZlxuICBlbHNlIGZhaWx3aXRoIFwiQmluX3Byb3QuVXRpbHMuYmluX2R1bXA6IHNpemUgY2hhbmdlZCBkdXJpbmcgd3JpdGluZ1wiXG47O1xuXG4oKiBSZWFkaW5nIGZyb20gc3RyZWFtcyAqKVxuXG5sZXQgYmluX3JlYWRfc3RyZWFtID9tYXhfc2l6ZSB+cmVhZCByZWFkZXIgPVxuICBsZXQgYnVmID0gY3JlYXRlX2J1ZiBzaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgcmVhZCBidWYgfnBvczowIH5sZW46c2l6ZV9oZWFkZXJfbGVuZ3RoO1xuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCBsZW4gPSBiaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgbWF0Y2ggbWF4X3NpemUgd2l0aFxuICB8IFNvbWUgbWF4X3NpemUgd2hlbiBsZW4gPiBtYXhfc2l6ZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc3RyZWFtOiBzaXplIGV4Y2VlZHMgbWF4X3NpemU6ICVkID4gJWRcIlxuICAgICAgICAgbGVuXG4gICAgICAgICBtYXhfc2l6ZSlcbiAgfCBfIC0+XG4gICAgbGV0IGJ1ZiA9IGlmIGxlbiA+IHNpemVfaGVhZGVyX2xlbmd0aCB0aGVuIGNyZWF0ZV9idWYgbGVuIGVsc2UgYnVmIGluXG4gICAgcmVhZCBidWYgfnBvczowIH5sZW47XG4gICAgcG9zX3JlZiA6PSAwO1xuICAgIGxldCByZXMgPSByZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBpZiAhcG9zX3JlZiA9IGxlblxuICAgIHRoZW4gcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbXNnID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogcHJvdG9jb2wgbGllZCBhYm91dCBsZW5ndGggb2YgdmFsdWU6IGV4cGVjdGVkIFxcXG4gICAgICAgICAgICVkLCByZWNlaXZlZCAlZFwiXG4gICAgICAgICAgbGVuXG4gICAgICAgICAgIXBvc19yZWZcbiAgICAgIGluXG4gICAgICBmYWlsd2l0aCBtc2cpXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubW9kdWxlIE9mX21pbmltYWwgKFMgOiBCaW5hYmxlLk1pbmltYWwuUykgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gUy50ID0gc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgPSB7IHNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgcmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgbGV0IGJpbl90ID0geyBzaGFwZSA9IGJpbl9zaGFwZV90OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3Q7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB9XG5lbmRcblxubGV0IG1heWJlX2Fubm90YXRlX3NoYXBlIG1heWJlX3V1aWQgc2hhcGUgPVxuICBtYXRjaCBtYXliZV91dWlkIHdpdGhcbiAgfCBOb25lIC0+IHNoYXBlXG4gIHwgU29tZSB1dWlkIC0+IFNoYXBlLmFubm90YXRlIHV1aWQgc2hhcGVcbjs7XG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgT2ZfbWluaW1hbCAoc3RydWN0XG4gICAgICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gICAgICB0eXBlIHQgPSBTLnRcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgQi5iaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IEIuYmluX3NpemVfdCAoUy50b19iaW5hYmxlIHQpXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9IEIuYmluX3dyaXRlX3QgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID0gUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmKVxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuID0gUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbCA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsIHQgPSBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwgKFMudG9fYmluYWJsZSB0KVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTEuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzcy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzcy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlXG4gICAgICBTLm1heWJlX2NhbGxlcl9pZGVudGl0eVxuICAgICAgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgdCA9XG4gICAgQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMi5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM19nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgYmluX3NpemVfZWwzIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJpbl93cml0ZV9lbDMgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgdHlwZV9jbGFzczMgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZSB0eXBlX2NsYXNzMy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXIgdHlwZV9jbGFzczMud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlciB0eXBlX2NsYXNzMy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGVfd2l0aF91dWlkX3NwZWMpID0gTWFrZV9iaW5hYmxlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTFfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUyX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTJfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlM193aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUzX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5sZXQgd2l0aF9tb2R1bGVfbmFtZSBmIH5tb2R1bGVfbmFtZSBmdW5jdGlvbl9uYW1lID1cbiAgbWF0Y2ggbW9kdWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gZiBmdW5jdGlvbl9uYW1lXG4gIHwgU29tZSBtb2R1bGVfbmFtZSAtPiBQcmludGYua3NwcmludGYgZiBcIiVzLiVzXCIgbW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uID0gd2l0aF9tb2R1bGVfbmFtZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvblxuXG5sZXQgcmFpc2VfcmVhZF90b29fbXVjaCA9XG4gIHdpdGhfbW9kdWxlX25hbWVcbiAgICAoUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoIFwiJXM6IHRyaWVkIHRvIHJlYWQgbW9yZSBlbGVtZW50cyB0aGFuIGF2YWlsYWJsZVwiKVxuOztcblxubGV0IHJhaXNlX3JlYWRfbm90X2Vub3VnaCA9XG4gIHdpdGhfbW9kdWxlX25hbWUgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiBkaWRuJ3QgcmVhZCBhbGwgZWxlbWVudHNcIilcbjs7XG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGVfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiNjU5MjM3MWEtNDk5NC0xMWU2LTkyM2EtNzc0OGU0MTgyNzY0XCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMV9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImFjOGE5ZmY0LTQ5OTQtMTFlNi05YTFiLTlmYjRlOTMzYmQ5ZFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0IF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYnVmIH5wb3NfcmVmIF9uID0gcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyLnNpemUgdilcbiAgICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyID1cbiAgICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiBfbiAtPiBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIF9uKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMl9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdDEgdDIgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJiNGU1NGFkMi00OTk0LTExZTYtYjhkZi04N2MyOTk3ZjlmNTJcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdDEgdDIgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYmluX3NpemVfYiB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiBuIC0+XG4gICAgICAgICAgIF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMyAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTNfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyIHQzID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiZjIxMTJlZGEtZTdkNy0xMWU2LWJiMzYtMDcyZTljZTE1OWRiXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIHQzIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2Jpbl9yZWFkX2MgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiBiaW5fd3JpdGVyMyA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIGJpbl93cml0ZXIzLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAgIGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJpbl93cml0ZXIzLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgYmluX3JlYWRlcjMgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICAgIGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFRoaXMgbW9kdWxlIGRlZmluZXMgZGVmYXVsdCBjb252ZXJ0ZXJzIGZvciB0aGUgdHlwZXMgZGVmaW5lZCBpbiB0aGUgT0NhbWxcbiAgIHN0YW5kYXJkIGxpYnJhcnkuXG4qKVxuXG5pbmNsdWRlIFNpemVcblxubGV0IGJpbl91bml0ID0gVHlwZV9jbGFzcy5iaW5fdW5pdFxubGV0IGJpbl9zaGFwZV91bml0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdW5pdFxubGV0IGJpbl93cml0ZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl91bml0XG5sZXQgYmluX3dyaXRlX3VuaXQgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdFxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl91bml0XG5sZXQgYmluX3JlYWRfdW5pdCA9IFJlYWQuYmluX3JlYWRfdW5pdFxuXG5sZXQgX19iaW5fcmVhZF91bml0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYm9vbCA9IFR5cGVfY2xhc3MuYmluX2Jvb2xcbmxldCBiaW5fc2hhcGVfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Jvb2xcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYm9vbFxubGV0IGJpbl93cml0ZV9ib29sID0gV3JpdGUuYmluX3dyaXRlX2Jvb2xcbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYm9vbFxubGV0IGJpbl9yZWFkX2Jvb2wgPSBSZWFkLmJpbl9yZWFkX2Jvb2xcblxubGV0IF9fYmluX3JlYWRfYm9vbF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3N0cmluZ1xubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9zdHJpbmdcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9zdHJpbmdcbmxldCBiaW5fd3JpdGVfc3RyaW5nID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZ1xubGV0IGJpbl9yZWFkZXJfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZ1xubGV0IGJpbl9yZWFkX3N0cmluZyA9IFJlYWQuYmluX3JlYWRfc3RyaW5nXG5cbmxldCBfX2Jpbl9yZWFkX3N0cmluZ19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9ieXRlc1xubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2J5dGVzXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9ieXRlc1xubGV0IGJpbl93cml0ZV9ieXRlcyA9IFdyaXRlLmJpbl93cml0ZV9ieXRlc1xubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYnl0ZXNcbmxldCBiaW5fcmVhZF9ieXRlcyA9IFJlYWQuYmluX3JlYWRfYnl0ZXNcblxubGV0IF9fYmluX3JlYWRfYnl0ZXNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fY2hhciA9IFR5cGVfY2xhc3MuYmluX2NoYXJcbmxldCBiaW5fc2hhcGVfY2hhciA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2NoYXJcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfY2hhclxubGV0IGJpbl93cml0ZV9jaGFyID0gV3JpdGUuYmluX3dyaXRlX2NoYXJcbmxldCBiaW5fcmVhZGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfY2hhclxubGV0IGJpbl9yZWFkX2NoYXIgPSBSZWFkLmJpbl9yZWFkX2NoYXJcblxubGV0IF9fYmluX3JlYWRfY2hhcl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2ludCA9IFR5cGVfY2xhc3MuYmluX2ludFxubGV0IGJpbl9zaGFwZV9pbnQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5fd3JpdGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnRcbmxldCBiaW5fd3JpdGVfaW50ID0gV3JpdGUuYmluX3dyaXRlX2ludFxubGV0IGJpbl9yZWFkZXJfaW50ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludFxubGV0IGJpbl9yZWFkX2ludCA9IFJlYWQuYmluX3JlYWRfaW50XG5sZXQgX19iaW5fcmVhZF9pbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0XG5sZXQgYmluX3JlYWRfZmxvYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdGFycmF5XG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5ID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0YXJyYXlfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX2ludDMyXG5sZXQgYmluX3NoYXBlX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50MzJcbmxldCBiaW5fd3JpdGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDMyXG5sZXQgYmluX3dyaXRlX2ludDMyID0gV3JpdGUuYmluX3dyaXRlX2ludDMyXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQzMlxubGV0IGJpbl9yZWFkX2ludDMyID0gUmVhZC5iaW5fcmVhZF9pbnQzMlxuXG5sZXQgX19iaW5fcmVhZF9pbnQzMl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX2ludDY0XG5sZXQgYmluX3NoYXBlX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50NjRcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDY0XG5sZXQgYmluX3dyaXRlX2ludDY0ID0gV3JpdGUuYmluX3dyaXRlX2ludDY0XG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQ2NFxubGV0IGJpbl9yZWFkX2ludDY0ID0gUmVhZC5iaW5fcmVhZF9pbnQ2NFxuXG5sZXQgX19iaW5fcmVhZF9pbnQ2NF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9uYXRpdmVpbnRcbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludFxuXG5sZXQgX19iaW5fcmVhZF9uYXRpdmVpbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlZlxubGV0IGJpbl9zaGFwZV9yZWYgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9yZWZcbmxldCBiaW5fd3JpdGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9yZWZcbmxldCBiaW5fd3JpdGVfcmVmID0gV3JpdGUuYmluX3dyaXRlX3JlZlxubGV0IGJpbl9yZWFkZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3JlZlxubGV0IGJpbl9yZWFkX3JlZiA9IFJlYWQuYmluX3JlYWRfcmVmXG5cbmxldCBfX2Jpbl9yZWFkX3JlZl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5X3QgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5X3QgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV90X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eSA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenkgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX29wdGlvblxubGV0IGJpbl9zaGFwZV9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9vcHRpb25cbmxldCBiaW5fd3JpdGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9vcHRpb25cbmxldCBiaW5fd3JpdGVfb3B0aW9uID0gV3JpdGUuYmluX3dyaXRlX29wdGlvblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX29wdGlvblxubGV0IGJpbl9yZWFkX29wdGlvbiA9IFJlYWQuYmluX3JlYWRfb3B0aW9uXG5cbmxldCBfX2Jpbl9yZWFkX29wdGlvbl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGlzdCA9IFR5cGVfY2xhc3MuYmluX2xpc3RcbmxldCBiaW5fc2hhcGVfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xpc3RcbmxldCBiaW5fd3JpdGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGlzdFxubGV0IGJpbl93cml0ZV9saXN0ID0gV3JpdGUuYmluX3dyaXRlX2xpc3RcbmxldCBiaW5fcmVhZGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGlzdFxubGV0IGJpbl9yZWFkX2xpc3QgPSBSZWFkLmJpbl9yZWFkX2xpc3RcblxubGV0IF9fYmluX3JlYWRfbGlzdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fYXJyYXlcbmxldCBiaW5fc2hhcGVfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9hcnJheVxubGV0IGJpbl93cml0ZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYXJyYXlcbmxldCBiaW5fd3JpdGVfYXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfYXJyYXlcbmxldCBiaW5fcmVhZGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2FycmF5XG5sZXQgYmluX3JlYWRfYXJyYXkgPSBSZWFkLmJpbl9yZWFkX2FycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2FycmF5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9oYXNodGJsXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9oYXNodGJsXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVfaGFzaHRibCA9IFdyaXRlLmJpbl93cml0ZV9oYXNodGJsXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2hhc2h0YmxcbmxldCBiaW5fcmVhZF9oYXNodGJsID0gUmVhZC5iaW5fcmVhZF9oYXNodGJsXG5cbmxldCBfX2Jpbl9yZWFkX2hhc2h0YmxfXyBfZiBfZyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9iaWdzdHJpbmdcbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9iaWdzdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX21hdCA9IFR5cGVfY2xhc3MuYmluX21hdFxubGV0IGJpbl9zaGFwZV9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fd3JpdGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9tYXRcbmxldCBiaW5fd3JpdGVfbWF0ID0gV3JpdGUuYmluX3dyaXRlX21hdFxubGV0IGJpbl9yZWFkZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX21hdFxubGV0IGJpbl9yZWFkX21hdCA9IFJlYWQuYmluX3JlYWRfbWF0XG5sZXQgX19iaW5fcmVhZF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3ZlY1xubGV0IGJpbl9zaGFwZV92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl92ZWNcbmxldCBiaW5fd3JpdGVfdmVjID0gV3JpdGUuYmluX3dyaXRlX3ZlY1xubGV0IGJpbl9yZWFkZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3ZlY1xubGV0IGJpbl9yZWFkX3ZlYyA9IFJlYWQuYmluX3JlYWRfdmVjXG5sZXQgX19iaW5fcmVhZF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiICFwb3NfcmVmXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1kNV9saWJcblxuICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICBTaGFwZS5iYXNldHlwZSAoU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmNmJkY2RkMC05Zjc1LTExZTYtOWE3ZS1kMzAyMDQyOGVmZWRcIikgW11cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX3QgPSBTaXplLmJpbl9zaXplX21kNVxuICAgIGxldCBiaW5fd3JpdGVfdCA9IFdyaXRlLmJpbl93cml0ZV9tZDVcbiAgICBsZXQgYmluX3JlYWRfdCA9IFJlYWQuYmluX3JlYWRfbWQ1XG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdmRpZ2VzdCA9XG4gICAgICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiU2hhcGUuTWQ1LnRcIiAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgKCogd2UgYXNzdW1lIHRoaXMgdHlwZSB0byBoYXZlIGEgc3RhYmxlIGZvcm1hdCAqKVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuIENvbW1vblxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBiaW5fc2hhcGVfdCB0ID1cbiAgICBTaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiODVhMjU1N2UtNDkwYS0xMWU2LTk4YWMtNGI4OTUzZDUyNWZlXCIpIFsgdCBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJpbl9zaXplX2EgYVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyBhID1cbiAgICBsZXQgc3RhcnRfYSA9IHBvcyArIFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgIGxldCBlbmRfYSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zOnN0YXJ0X2EgYSBpblxuICAgIGxldCBzaXplID0gZW5kX2EgLSBzdGFydF9hIGluXG4gICAgbGV0IHdyaXR0ZW4gPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgIGFzc2VydCAod3JpdHRlbiA9IHN0YXJ0X2EpO1xuICAgIGVuZF9hXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBleHBlY3RlZF9zaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IHN0YXJ0X2EgPSAhcG9zX3JlZiBpblxuICAgIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgZW5kX2EgPSAhcG9zX3JlZiBpblxuICAgIGlmIGVuZF9hIC0gc3RhcnRfYSA8PiBleHBlY3RlZF9zaXplXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgIFwiQmluX3Byb3QuQmxvYi5iaW5fcmVhZF90OiBzaXplICglZCkgPD4gZXhwZWN0ZWQgKCVkKVwiXG4gICAgICAgICAgIChlbmRfYSAtIHN0YXJ0X2EpXG4gICAgICAgICAgIGV4cGVjdGVkX3NpemUpO1xuICAgIGFcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLnRcIiAhcG9zX3JlZlxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaWQgPSAnYVxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBVdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgbW9kdWxlIEJpbmFibGUgPSBUXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBvZl9iaW5hYmxlIHQgPSB0XG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRcbiAgZW5kKVxuXG5tb2R1bGUgT3BhcXVlID0gc3RydWN0XG4gICgqIFtCaWdzdHJpbmddIGFuZCBbU3RyaW5nXSBzaGFyZSBbYmluX3NoYXBlX3RdIGJlY2F1c2UgdGhleSBoYXZlIGV4YWN0bHkgdGhlIHNhbWVcbiAgICAgc2VyaWFsaXphdGlvbiBmb3JtYXQgYW5kIHRoZXkgZGVub3RlIHRoZSBzYW1lIHZhbHVlcy5cblxuICAgICBJbiBmYWN0IGFsbW9zdCBjZXJ0YWlubHkgW0Jsb2IudF0gaXRzZWxmIHNob3VsZCBoYXZlIHRoZSBzYW1lIGJpbl9zaGFwZV90IGFzIHdlbGwuICopXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTFmNzZlLTQ5MGEtMTFlNi04NmE5LTViZWY1ODVmMjYwMlwiKSBbXSlcbiAgOztcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgKCogW2J1Zl0gaXMgdGhlIGJpbi1pbyBkYXRhIGV4Y2x1ZGluZyB0aGUgc2l6ZSBoZWFkZXIuIFdoZW4gKGRlLSlzZXJpYWxpemVkLCB0aGUgc2l6ZVxuICAgICAgIGhlYWRlciBpcyBpbmNsdWRlZC4gKilcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYnVmXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IGJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgYnVmX2xlbiB0XG5cbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgbGV0IHNpemUgPSBidWZfbGVuIHQgaW5cbiAgICAgICAgbGV0IHBvcyA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgICAgIGJsaXRfYnVmIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyBzaXplO1xuICAgICAgICBwb3MgKyBzaXplXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBsZXQgdCA9IGNyZWF0ZV9idWYgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3BvczohcG9zX3JlZiB+ZHN0OnQgfmRzdF9wb3M6MCBzaXplO1xuICAgICAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgc2l6ZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgdG9fb3BhcXVlIGJsb2IgYmluX3dyaXRlciA9IFV0aWxzLmJpbl9kdW1wIGJpbl93cml0ZXIgYmxvYlxuICAgIGxldCBvZl9vcGFxdWVfZXhuICh0IDogdCkgYmluX3JlYWRlciA9IGJpbl9yZWFkZXIuVHlwZV9jbGFzcy5yZWFkIHQgfnBvc19yZWY6KHJlZiAwKVxuXG4gICAgKCogQmlnc3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogYnVmIC0+IGJ1ZiAtPiBpbnQpXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgUHB4X3NleHBfY29udl9saWIuU2V4cC5BdG9tIChvZl9vcGFxdWVfZXhuIHQgVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZylcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIFN0cmluZy5sZW5ndGggdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgfnNyY19wb3M6MCBidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIGJsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgIGxldCBsZW4gPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zOiFwb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIGxlbjtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBTdHJpbmcubGVuZ3RoIHRcblxuICAgIGxldCB0b19vcGFxdWUgfmJ1ZiB2IGJpbl93cml0ZXJfdiA6IHQgPVxuICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyX3YuVHlwZV9jbGFzcy53cml0ZSBidWYgfnBvcyB2IGluXG4gICAgICBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IG9mX29wYXF1ZV9leG4gfmJ1ZiAodCA6IHQpIGJpbl9yZWFkZXJfdiA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgYnVmIH5sZW47XG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzID0gYmluX3JlYWRlcl92LlR5cGVfY2xhc3MucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGlmICFwb3NfcmVmIDw+IGxlblxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgIFwiT3BhcXVlIGJsb2IgaGFzICVkIGJ5dGVzIGJ1dCBbb2Zfb3BhcXVlX2V4bl0gcmVhZCAlZFwiXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICFwb3NfcmVmXG4gICAgICAgIGluXG4gICAgICAgIGZhaWx3aXRoIGVycm9yKVxuICAgICAgZWxzZSByZXNcbiAgICA7O1xuXG4gICAgKCogU3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IFBweF9zZXhwX2NvbnZfbGliLkNvbnYuc2V4cF9vZl9zdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIElnbm9yZWQgPSBzdHJ1Y3RcbiAgKCogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGFuIGlnbm9yZWQgdmFsdWUgaXMganVzdCB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUgaXQgd2FzIGNyZWF0ZWRcbiAgICAgZnJvbSAoaS5lLiwgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUgaWdub3JlZCBmcm9tIHRoZSBidWZmZXIgd2Ugd2VyZSByZWFkaW5nXG4gICAgIC0tIHdlIGV4Y2x1ZGUgdGhlIDggYnl0ZSBzaXplIGhlYWRlciBmcm9tIHdoaWNoIHRoZSBzaXplIHdhcyByZWFkKS4gKilcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IGJpbl9zaXplX3Qgc2l6ZSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIHNpemVcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBzaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgc2l6ZVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLklnbm9yZWQudFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuZW5kXG4iLCJtb2R1bGUgdHlwZSBTID0gc2lnXG4gIHZhbCBwcmVfdGVzdF9ob29rIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IHByZV90ZXN0X2hvb2sgPSBpZ25vcmVcbiIsIlslJWltcG9ydCBcImNvbmZpZy5oXCJdXG5cbm9wZW4hIEJhc2VcblxuWyUlaWZkZWYgSlNDX0FSQ0hfU0lYVFlGT1VSXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuW0BAbm9hbGxvY11cblxuWyUlZWxzZV1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcblxuWyUlZW5kaWZdXG5bJSVpZmRlZiBKU0NfUE9TSVhfVElNRVJTXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSBmYWlsZWRcIlxuXG5bJSVlbHNlXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJnZXR0aW1lb2ZkYXkgZmFpbGVkXCJcblxuWyUlZW5kaWZdXG5cbmxldCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpID1cbiAgbGV0IHQgPSBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8gKCkgaW5cbiAgaWYgSW50NjMuKCA8PiApIHQgSW50NjMuemVybyB0aGVuIHQgZWxzZSBnZXR0aW1lX2ZhaWxlZCAoKVxuOztcbiIsIm1vZHVsZSBUZXN0X3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU3VjY2Vzc1xuICAgIHwgRmFpbHVyZVxuICAgIHwgRXJyb3JcblxuICBsZXQgdG9fZXhpdF9jb2RlID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gMFxuICAgIHwgRmFpbHVyZSAtPiAyXG4gICAgfCBFcnJvciAtPiAxXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IFwic3VjY2Vzc1wiXG4gICAgfCBGYWlsdXJlIC0+IFwiZmFpbHVyZVwiXG4gICAgfCBFcnJvciAtPiBcImVycm9yXCJcbiAgOztcblxuICBsZXQgY29tYmluZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFN1Y2Nlc3MsIFN1Y2Nlc3MgLT4gU3VjY2Vzc1xuICAgIHwgRXJyb3IsIF8gfCBfLCBFcnJvciAtPiBFcnJvclxuICAgIHwgRmFpbHVyZSwgXyB8IF8sIEZhaWx1cmUgLT4gRmFpbHVyZVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbCB0cyA9IExpc3QuZm9sZF9sZWZ0IGNvbWJpbmUgU3VjY2VzcyB0c1xuZW5kXG5cbmxldCBwYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZyA9XG4gIHRyeSBBcmcucGFyc2VfYXJndiBhcmd2IGwgZiBtc2cgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICBleGl0IDFcbiAgfCBBcmcuSGVscCBtc2cgLT5cbiAgICBQcmludGYucHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgZXhpdCAwXG47O1xuXG50eXBlIGRlc2NyID0gc3RyaW5nXG5cbmxldCB0ZXN0X21vZHVsZXNfcmFuID0gcmVmIDBcbmxldCB0ZXN0X21vZHVsZXNfZmFpbGVkID0gcmVmIDBcbmxldCB0ZXN0c19yYW4gPSByZWYgMFxubGV0IHRlc3RzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgZHluYW1pY19saWIgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5cbnR5cGUgZmlsZW5hbWUgPSBzdHJpbmdcbnR5cGUgbGluZV9udW1iZXIgPSBpbnRcbnR5cGUgc3RhcnRfcG9zID0gaW50XG50eXBlIGVuZF9wb3MgPSBpbnRcbnR5cGUgY29uZmlnID0gKG1vZHVsZSBJbmxpbmVfdGVzdF9jb25maWcuUylcblxudHlwZSAnYSB0ZXN0X2Z1bmN0aW9uX2FyZ3MgPVxuICBjb25maWc6Y29uZmlnXG4gIC0+IGRlc2NyOmRlc2NyIExhenkudFxuICAtPiB0YWdzOnN0cmluZyBsaXN0XG4gIC0+IGZpbGVuYW1lOmZpbGVuYW1lXG4gIC0+IGxpbmVfbnVtYmVyOmxpbmVfbnVtYmVyXG4gIC0+IHN0YXJ0X3BvczpzdGFydF9wb3NcbiAgLT4gZW5kX3BvczplbmRfcG9zXG4gIC0+ICdhXG5cbm1vZHVsZSBUYWdfcHJlZGljYXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByZXF1aXJlZF90YWdzIDogc3RyaW5nIGxpc3RcbiAgICA7IGRyb3BwZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgfVxuXG4gIGxldCBpbml0aWFsID0geyByZXF1aXJlZF90YWdzID0gW107IGRyb3BwZWRfdGFncyA9IFsgXCJkaXNhYmxlZFwiIF0gfVxuXG4gIGxldCBkcm9wIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IHRhZyA6OiB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IExpc3QuZmlsdGVyICgoIDw+ICkgdGFnKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlcXVpcmUgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gTGlzdC5maWx0ZXIgKCggPD4gKSB0YWcpIHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gdGFnIDo6IHQucmVxdWlyZWRfdGFnc1xuICAgIH1cbiAgOztcblxuICBsZXQgZW50aXJlX21vZHVsZV9kaXNhYmxlZCB0IH5wYXJ0aWFsX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbiAgOztcblxuICBsZXQgZGlzYWJsZWQgdCB+Y29tcGxldGVfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHJlcSAtPiBub3QgKExpc3QubWVtIHJlcSB0YWdzKSkgdC5yZXF1aXJlZF90YWdzXG4gICAgfHwgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbiAgOztcbmVuZFxuXG50eXBlIHdoaWNoX3Rlc3RzID1cbiAgeyBsaWJuYW1lIDogc3RyaW5nXG4gIDsgb25seV90ZXN0X2xvY2F0aW9uIDogKGZpbGVuYW1lICogbGluZV9udW1iZXIgb3B0aW9uICogYm9vbCByZWYpIGxpc3RcbiAgOyBuYW1lX2ZpbHRlciA6IHN0cmluZyBsaXN0XG4gIDsgd2hpY2hfdGFncyA6IFRhZ19wcmVkaWNhdGUudFxuICB9XG5cbnR5cGUgdGVzdF9tb2RlID1cbiAgeyB3aGljaF90ZXN0cyA6IHdoaWNoX3Rlc3RzXG4gIDsgd2hhdF90b19kbyA6IFsgYFJ1bl9wYXJ0aXRpb24gb2Ygc3RyaW5nIG9wdGlvbiB8IGBMaXN0X3BhcnRpdGlvbnMgXVxuICB9XG5cbm1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgdHlwZSB0ID1cbiAgICBbIGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gICAgXVxuXG4gIHZhbCBnZXQgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICAgIF1cblxuICBsZXQgYWN0aW9uIDogdCByZWYgPSByZWYgYElnbm9yZVxuXG4gIGxldCBmb3JjZV9kcm9wID1cbiAgICB0cnlcbiAgICAgIGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIiA6IHN0cmluZyk7XG4gICAgICB0cnVlXG4gICAgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBjb21waWxpbmcgdG8gamF2YXNjcmlwdC5cbiAgICAgICBKc19vZl9vY2FtbCBjYW4gc3RhdGljYWxseSBldmFsdWF0ZSBbU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIl1cbiAgICAgICBhbmQgaW5saW5lIHRoZSByZXN1bHQgKFtgSWdub3JlXSkgd2hlbmV2ZXIgW2dldCAoKV0gaXMgY2FsbGVkLlxuICAgICAgIFVuaXQgdGVzdHMgY2FuIHRoZW4gYmUgdHJlYXRlZCBhcyBkZWFkY29kZSBzaW5jZSB0aGUgYXJndW1lbnQgW2ZdIG9mIHRoZSBbdGVzdF1cbiAgICAgICBmdW5jdGlvbiBiZWxvdyBpcyBuZXZlciB1c2VkLiAqKVxuICAgIGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgIWFjdGlvblxuICA7O1xuXG4gIGxldCBzZXQgdiA9IGFjdGlvbiA6PSB2XG5lbmRcblxubW9kdWxlIFBhcnRpdGlvbiA6IHNpZ1xuICB2YWwgZm91bmRfdGVzdCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgc2V0X2N1cnJlbnQgOiBzdHJpbmcgLT4gdW5pdFxuICB2YWwgaXNfY3VycmVudCA6IHN0cmluZyBvcHRpb24gLT4gYm9vbFxuICB2YWwgYWxsIDogdW5pdCAtPiBzdHJpbmcgbGlzdFxuZW5kID0gc3RydWN0XG4gIGxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSAyM1xuICBsZXQgY3VycmVudCA9IHJlZiBcIlwiXG4gIGxldCBzZXRfY3VycmVudCB4ID0gY3VycmVudCA6PSB4XG5cbiAgbGV0IGZvdW5kX3Rlc3QgKCkgPVxuICAgIGlmICFjdXJyZW50IDw+IFwiXCIgJiYgbm90IChIYXNodGJsLm1lbSBhbGwgIWN1cnJlbnQpIHRoZW4gSGFzaHRibC5hZGQgYWxsICFjdXJyZW50ICgpXG4gIDs7XG5cbiAgbGV0IGlzX2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIHAgLT4gcCA9ICFjdXJyZW50XG4gIDs7XG5cbiAgbGV0IGFsbCAoKSA9IExpc3Quc29ydCBTdHJpbmcuY29tcGFyZSAoSGFzaHRibC5mb2xkIChmdW4gayAoKSBhY2MgLT4gayA6OiBhY2MpIGFsbCBbXSlcbmVuZFxuXG5tb2R1bGUgTW9kdWxlX2NvbnRleHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG9uZV9tb2R1bGUgPVxuICAgICAgeyBkZXNjciA6IHN0cmluZ1xuICAgICAgOyB0YWdzIDogc3RyaW5nIGxpc3RcbiAgICAgIH1cblxuICAgIHR5cGUgdCA9IG9uZV9tb2R1bGUgbGlzdFxuXG4gICAgbGV0IGRlc2NyIHQgPSBMaXN0Lm1hcCAoZnVuIG0gLT4gbS5kZXNjcikgdFxuICAgIGxldCB0YWdzIHQgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgKGZ1biBtIC0+IG0udGFncykgdClcbiAgZW5kXG5cbiAgbGV0IGN1cnJlbnQgOiBULnQgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHdpdGhfIH5kZXNjciB+dGFncyBmID1cbiAgICBsZXQgcHJldiA9ICFjdXJyZW50IGluXG4gICAgY3VycmVudCA6PSB7IFQuZGVzY3I7IHRhZ3MgfSA6OiBwcmV2O1xuICAgIHRyeVxuICAgICAgbGV0IHggPSBmICgpIGluXG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICB4XG4gICAgd2l0aFxuICAgIHwgZSAtPlxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjdXJyZW50X2Rlc2NyICgpID0gVC5kZXNjciAhY3VycmVudFxuICBsZXQgY3VycmVudF90YWdzICgpID0gVC50YWdzICFjdXJyZW50XG5lbmRcblxubGV0IHZlcmJvc2UgPSByZWYgZmFsc2VcbmxldCBzdHJpY3QgPSByZWYgZmFsc2VcbmxldCBzaG93X2NvdW50cyA9IHJlZiBmYWxzZVxubGV0IGxpc3RfdGVzdF9uYW1lcyA9IHJlZiBmYWxzZVxubGV0IGRlbGF5ZWRfZXJyb3JzID0gcmVmIFtdXG5sZXQgc3RvcF9vbl9lcnJvciA9IHJlZiBmYWxzZVxubGV0IGxvZyA9IHJlZiBOb25lXG5sZXQgdGltZV9zZWMgPSByZWYgMC5cbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGluX3BsYWNlID0gcmVmIGZhbHNlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE5vbmVcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gcmVmIE5vbmVcbmxldCBkaWZmX3BhdGhfcHJlZml4ID0gcmVmIE5vbmVcblxubGV0IGRpc3BsYXllZF9kZXNjciBkZXNjciBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zID1cbiAgbGV0IChsYXp5IGRlc2NyKSA9IGRlc2NyIGluXG4gIFByaW50Zi5zcHJpbnRmXG4gICAgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkJXNcIlxuICAgIGZpbGVuYW1lXG4gICAgbGluZVxuICAgIHN0YXJ0X3Bvc1xuICAgIGVuZF9wb3NcbiAgICAoaWYgZGVzY3IgPSBcIlwiIHRoZW4gXCJcIiBlbHNlIFwiOiBcIiBeIGRlc2NyKVxuOztcblxubGV0IHBhcnNlX2Rlc2NyIHN0ciA9XG4gIHRyeVxuICAgIFNvbWVcbiAgICAgIChTY2FuZi5zc2NhbmZcbiAgICAgICAgIHN0clxuICAgICAgICAgXCIgRmlsZSAlUyAsIGxpbmUgJWQgLCBjaGFyYWN0ZXJzICVkIC0gJWQgJSFcIlxuICAgICAgICAgKGZ1biBmaWxlIGxpbmUgX3N0YXJ0X3BvcyBfZW5kX3BvcyAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoXG4gIHwgXyAtPlxuICAgICh0cnlcbiAgICAgICBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICUhXCIgKGZ1biBmaWxlIGxpbmUgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgICAgd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAlIVwiIChmdW4gZmlsZSAtPiBmaWxlLCBOb25lKSkgd2l0aFxuICAgICAgICB8IF8gLT4gTm9uZSkpXG47O1xuXG5sZXQgKCkgPVxuICBpZiBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLmFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggQXJyYXkudG9fbGlzdCBTeXMuYXJndiB3aXRoXG4gICAgfCBuYW1lIDo6IFwiaW5saW5lLXRlc3QtcnVubmVyXCIgOjogbGliIDo6IHJlc3QgLT5cbiAgICAgICgqIHdoZW4gd2Ugc2VlIHRoaXMgYXJndW1lbnQsIHdlIHN3aXRjaCB0byB0ZXN0IG1vZGUgKilcbiAgICAgIGxldCB0ZXN0cyA9IHJlZiBbXSBpblxuICAgICAgbGV0IGxpc3RfcGFydGl0aW9ucyA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IHBhcnRpdGlvbiA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgdGFnX3ByZWRpY2F0ZSA9IHJlZiBUYWdfcHJlZGljYXRlLmluaXRpYWwgaW5cbiAgICAgIGxldCBuYW1lX2ZpbHRlciA9IHJlZiBbXSBpblxuICAgICAgcGFyc2VfYXJndlxuICAgICAgICAoQXJyYXkub2ZfbGlzdCAobmFtZSA6OiByZXN0KSlcbiAgICAgICAgKEFyZy5hbGlnblxuICAgICAgICAgICBbICggXCItbGlzdC10ZXN0LW5hbWVzXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0XG4gICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbGlzdF90ZXN0X25hbWVzIDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgOj0gdHJ1ZSlcbiAgICAgICAgICAgICAsIFwiIERvIG5vdCBydW4gdGVzdHMgYnV0IHNob3cgd2hhdCB3b3VsZCBoYXZlIGJlZW4gcnVuXCIgKVxuICAgICAgICAgICA7ICggXCItbGlzdC1wYXJ0aXRpb25zXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF9wYXJ0aXRpb25zIDo9IHRydWUpXG4gICAgICAgICAgICAgLCBcIiBMaXN0cyBhbGwgdGhlIHBhcnRpdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0IG9yIHRlc3RfbW9kdWxlXCIgKVxuICAgICAgICAgICA7ICggXCItcGFydGl0aW9uXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBpIC0+IHBhcnRpdGlvbiA6PSBTb21lIGkpXG4gICAgICAgICAgICAgLCBcIiBPbmx5IHJ1biB0aGUgdGVzdHMgaW4gdGhlIGdpdmVuIHBhcnRpdGlvblwiIClcbiAgICAgICAgICAgOyBcIi12ZXJib3NlXCIsIEFyZy5TZXQgdmVyYm9zZSwgXCIgU2hvdyB0aGUgdGVzdHMgYXMgdGhleSBydW5cIlxuICAgICAgICAgICA7ICggXCItc3RvcC1vbi1lcnJvclwiXG4gICAgICAgICAgICAgLCBBcmcuU2V0IHN0b3Bfb25fZXJyb3JcbiAgICAgICAgICAgICAsIFwiIFJ1biB0ZXN0cyBvbmx5IHVwIHRvIHRoZSBmaXJzdCBlcnJvciAoZG9lc24ndCB3b3JrIGZvciBleHBlY3QgdGVzdHMpXCIgKVxuICAgICAgICAgICA7IFwiLXN0cmljdFwiLCBBcmcuU2V0IHN0cmljdCwgXCIgRW5kIHdpdGggYW4gZXJyb3IgaWYgbm8gdGVzdHMgd2VyZSBydW5cIlxuICAgICAgICAgICA7IFwiLXNob3ctY291bnRzXCIsIEFyZy5TZXQgc2hvd19jb3VudHMsIFwiIFNob3cgdGhlIG51bWJlciBvZiB0ZXN0cyByYW5cIlxuICAgICAgICAgICA7ICggXCItbG9nXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0XG4gICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKHRyeSBTeXMucmVtb3ZlIFwiaW5saW5lX3Rlc3RzLmxvZ1wiIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICAgICAgICAgICAgICAgIGxvZyA6PSBTb21lIChvcGVuX291dCBcImlubGluZV90ZXN0cy5sb2dcIikpXG4gICAgICAgICAgICAgLCBcIiBMb2cgdGhlIHRlc3RzIHJ1biBpbiBpbmxpbmVfdGVzdHMubG9nXCIgKVxuICAgICAgICAgICA7ICggXCItZHJvcC10YWdcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLmRyb3AgIXRhZ19wcmVkaWNhdGUgcylcbiAgICAgICAgICAgICAsIFwidGFnIE9ubHkgcnVuIHRlc3RzIG5vdCB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIFxcXG4gICAgICAgICAgICAgICAgLXJlcXVpcmUtdGFnKVwiIClcbiAgICAgICAgICAgOyAoIFwiLXJlcXVpcmUtdGFnXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmdcbiAgICAgICAgICAgICAgICAgKGZ1biBzIC0+IHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5yZXF1aXJlICF0YWdfcHJlZGljYXRlIHMpXG4gICAgICAgICAgICAgLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1kcm9wLXRhZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1tYXRjaGluZ1wiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBuYW1lX2ZpbHRlciA6PSBzIDo6ICFuYW1lX2ZpbHRlcilcbiAgICAgICAgICAgICAsIFwic3Vic3RyaW5nIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIGdpdmVuIHN1YnN0cmluZ1wiIClcbiAgICAgICAgICAgOyAoIFwiLW9ubHktdGVzdFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUsIGluZGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwYXJzZV9kZXNjciBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKGZpbGUsIGluZGV4KSAtPiBmaWxlLCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJzonXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnOicgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLnN1YiBzIDAgaSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXhfc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHMgKGkgKyAxKSAoU3RyaW5nLmxlbmd0aCBzIC0gaSAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaW5kZXhfc3RyaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmd1bWVudCAlcyBkb2Vzbid0IGZpdCB0aGUgZm9ybWF0IGZpbGVuYW1lWzpsaW5lX251bWJlcl1cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBTb21lIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzLCBOb25lXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIHRlc3RzIDo9IChmaWxlbmFtZSwgaW5kZXgsIHJlZiBmYWxzZSkgOjogIXRlc3RzKVxuICAgICAgICAgICAgICwgXCJsb2NhdGlvbiBSdW4gb25seSB0aGUgdGVzdHMgc3BlY2lmaWVkIGJ5IGFsbCB0aGUgLW9ubHktdGVzdCBvcHRpb25zLlxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbnMgY2FuIGJlIG9uZSBvZiB0aGVzZSBmb3JtczpcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLm1sXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbDpsaW5lX251bWJlclxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjNcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyMywgY2hhcmFjdGVycyAyLTNcIiApXG4gICAgICAgICAgIDsgXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgU3VtbWFyaXplIHRlc3RzIHdpdGhvdXQgdXNpbmcgY29sb3JcIlxuICAgICAgICAgICA7IFwiLWluLXBsYWNlXCIsIEFyZy5TZXQgaW5fcGxhY2UsIFwiIFVwZGF0ZSBleHBlY3QgdGVzdHMgaW4gcGxhY2VcIlxuICAgICAgICAgICA7ICggXCItZGlmZi1jbWRcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIERpZmYgY29tbWFuZCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGRpZmZpbmcgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1zb3VyY2UtdHJlZS1yb290XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHNvdXJjZV90cmVlX3Jvb3QgOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgUGF0aCB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWVcIiApXG4gICAgICAgICAgIDsgKCBcIi1kaWZmLXBhdGgtcHJlZml4XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfcGF0aF9wcmVmaXggOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgUHJlZml4IHRvIHByZXBlbmQgdG8gZmlsZXBhdGhzIGluIHRlc3Qgb3V0cHV0XCIgKVxuICAgICAgICAgICBdKVxuICAgICAgICAoZnVuIGFub24gLT5cbiAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogdW5leHBlY3RlZCBhbm9ueW1vdXMgYXJndW1lbnQgJXNcXG4lIVwiIG5hbWUgYW5vbjtcbiAgICAgICAgICAgZXhpdCAxKVxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyBbYXJnc11cIiBuYW1lIFwiaW5saW5lLXRlc3QtcnVubmVyXCIgbGliKTtcbiAgICAgIEFjdGlvbi5zZXRcbiAgICAgICAgKGBUZXN0X21vZGVcbiAgICAgICAgICAgeyB3aGljaF90ZXN0cyA9XG4gICAgICAgICAgICAgICB7IGxpYm5hbWUgPSBsaWJcbiAgICAgICAgICAgICAgIDsgb25seV90ZXN0X2xvY2F0aW9uID0gIXRlc3RzXG4gICAgICAgICAgICAgICA7IHdoaWNoX3RhZ3MgPSAhdGFnX3ByZWRpY2F0ZVxuICAgICAgICAgICAgICAgOyBuYW1lX2ZpbHRlciA9ICFuYW1lX2ZpbHRlclxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICA7IHdoYXRfdG9fZG8gPVxuICAgICAgICAgICAgICAgKGlmICFsaXN0X3BhcnRpdGlvbnMgdGhlbiBgTGlzdF9wYXJ0aXRpb25zIGVsc2UgYFJ1bl9wYXJ0aXRpb24gIXBhcnRpdGlvbilcbiAgICAgICAgICAgfSlcbiAgICB8IF8gLT4gKCkpXG47O1xuXG5sZXQgYW1fdGVzdF9ydW5uZXIgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgVGVzdF9tb2RlIF8gLT4gdHJ1ZVxuICB8IGBJZ25vcmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBhbV9ydW5uaW5nX2Vudl92YXIgPVxuICAoKiBmb3IgYXBwcm94aW1hdGUgY29tcGF0aWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdmFyaWFibGUgaXMgbm90IGV4YWN0bHkgZXF1aXZhbGVudFxuICAgICB0byB3aGF0IFBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVCB1c2VkIHRvIGJlICopXG4gIFwiVEVTVElOR19GUkFNRVdPUktcIlxuOztcblxuKCogVGhpcyB2YWx1ZSBpcyBkZXByZWNhdGVkIGluIHByaW5jaXBsZSwgaW4gZmF2b3Igb2YgQ29yZS5hbV9ydW5uaW5nX3Rlc3QsIHNvXG4gICB3ZSdyZSBnb2luZyB0byBsaXZlIHdpdGggdGhlIHVnbHkgcGF0dGVybiBtYXRjaC4gKilcbmxldCBhbV9ydW5uaW5nID1cbiAgbWF0Y2ggU3lzLmdldGVudiBcIlBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVFwiIHdpdGhcbiAgfCAoXyA6IHN0cmluZykgLT5cbiAgICB0cnVlICgqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcGVvcGxlIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBkaXJlY3RseSAqKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAobWF0Y2ggU3lzLmdldGVudiBhbV9ydW5uaW5nX2Vudl92YXIgd2l0aFxuICAgICB8IFwiaW5saW5lLXRlc3RcIiAtPiB0cnVlXG4gICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBmYWxzZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgdGVzdGluZyA9XG4gIGlmIGFtX3Rlc3RfcnVubmVyXG4gIHRoZW4gYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyXG4gIGVsc2UgaWYgYW1fcnVubmluZ1xuICB0aGVuIGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lclxuICBlbHNlIGBOb3RfdGVzdGluZ1xuOztcblxubGV0IHdhbGxfdGltZV9jbG9ja19ucyAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKClcblxubGV0IHdoZXJlX3RvX2N1dF9iYWNrdHJhY2UgPVxuICBsYXp5XG4gICAgKEJhc2UuU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLmNyZWF0ZVxuICAgICAgIChfX01PRFVMRV9fIF4gXCIuXCIgXiBcInRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXCIpKVxuOztcblxubGV0IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgYmVmb3JlX25zID0gd2FsbF90aW1lX2Nsb2NrX25zICgpIGluXG4gIGxldCByZXMgPVxuICAgICgqIFRvIGF2b2lkIG5vaXNlIGluIGJhY2t0cmFjZXMsIHdlIGRvIHR3byB0aGluZ3MuXG5cbiAgICAgICBXZSB1c2UgW3doZXJlX3RvX2N1dF9iYWNrdHJhY2VdIGFib3ZlIHRvIHJlbW92ZSB0aGUgc3RhY2sgZnJhbWVzIGZvciB0aGUgY3VycmVudFxuICAgICAgIGZ1bmN0aW9uIGFuZCBhbnkgZnVuY3Rpb24gaXQgZ2V0cyBpbmxpbmVkIGludG8sIGFzIGl0J3Mgbm90IG9mIGFueSBpbnRlcmVzdCB0byB0aGVcbiAgICAgICB1c2VyLCBzaW5jZSBpdCdzIG5vdCB0YWxraW5nIGFib3V0IHRoZWlyIHRlc3QgYnV0IGluc3RlYWQgdGFsa2luZyBhYm91dCB0aGVcbiAgICAgICBwcHhfaW5saW5lX3Rlc3QgbWFjaGluZXJ5LlxuXG4gICAgICAgV2UgYWxzbyBhdm9pZCBpbnNlcnRpbmcgYW55IGNvZGUgYmV0d2VlbiB0aGUgW2ZdIHRoYXQgY29tZXMgZnJvbSB0aGUgdXNlcidzIGZpbGVcbiAgICAgICBhbmQgZ3JhYmJpbmcgdGhlIGJhY2t0cmFjZSBmcm9tIGl0cyBleGNlcHRpb25zIChubyB3cmFwcGluZyBvZiBbZl0gd2l0aCBoaWdoIG9yZGVyXG4gICAgICAgZnVuY3Rpb25zIGxpa2UgRXhuLnByb3RlY3QsIG9yIChmdW4gKCkgLT4gZiAoKTsgdHJ1ZSkpLiAqKVxuICAgIHRyeSBPayAoZiAoKSkgd2l0aFxuICAgIHwgZXhuIC0+IEVycm9yIChleG4sIFByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gIGluXG4gIHRpbWVfc2VjIDo9IEJhc2UuSW50NjMuKHdhbGxfdGltZV9jbG9ja19ucyAoKSAtIGJlZm9yZV9ucyB8PiB0b19mbG9hdCkgLy4gMWU5O1xuICByZXNcbjs7XG5cbmxldCBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSA9IGxhenkgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBbfCAxMDA7IDIwMDsgMzAwIHxdKVxubGV0IHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlID0gbGF6eSAoQmFzZS5SYW5kb20uU3RhdGUubWFrZSBbfCAxMTE7IDIyMjsgMzMzIHxdKVxuXG5sZXQgdGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgY2FtbF9yYW5kb21fc3RhdGUgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICBsZXQgYmFzZV9yYW5kb21fc3RhdGUgPSBCYXNlLlJhbmRvbS5TdGF0ZS5jb3B5IEJhc2UuUmFuZG9tLlN0YXRlLmRlZmF1bHQgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUpO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUpO1xuICBsZXQgcmVzdWx0ID0gdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSBjYW1sX3JhbmRvbV9zdGF0ZTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIGJhc2VfcmFuZG9tX3N0YXRlO1xuICByZXN1bHRcbjs7XG5cbmxldCBzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFwiXCJcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHMgLT4gXCIgIGluIFRFU1wiIF4gXCJUX01PRFVMRSBhdCBcIiBeIFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgcyBeIFwiXFxuXCIpXG4gICAgICAgKE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfZGVzY3IgKCkpKVxuOztcblxubGV0IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgbCA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgdXNlZCkgLT5cbiAgICAgICBsZXQgcG9zaXRpb25fc3RhcnQgPSBTdHJpbmcubGVuZ3RoIGRlZl9maWxlbmFtZSAtIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgcG9zaXRpb25fc3RhcnQgPj0gMFxuICAgICAgICAgJiZcbiAgICAgICAgIGxldCBlbmRfb2ZfZGVmX2ZpbGVuYW1lID1cbiAgICAgICAgICAgU3RyaW5nLnN1YiBkZWZfZmlsZW5hbWUgcG9zaXRpb25fc3RhcnQgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpXG4gICAgICAgICBpblxuICAgICAgICAgZW5kX29mX2RlZl9maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAgICAmJiAocG9zaXRpb25fc3RhcnQgPSAwIHx8IGRlZl9maWxlbmFtZS5bcG9zaXRpb25fc3RhcnQgLSAxXSA9ICcvJylcbiAgICAgICAgICYmXG4gICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBkZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlclxuICAgICAgIGluXG4gICAgICAgaWYgZm91bmQgdGhlbiB1c2VkIDo9IHRydWU7XG4gICAgICAgZm91bmQpXG4gICAgbFxuOztcblxubGV0IG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciBkZXNjciA9XG4gIG1hdGNoIG5hbWVfZmlsdGVyIHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyA6OiBfIC0+XG4gICAgTGlzdC5leGlzdHMgKGZ1biBzdWJzdHJpbmcgLT4gQmFzZS5TdHJpbmcuaXNfc3Vic3RyaW5nIH5zdWJzdHJpbmcgZGVzY3IpIG5hbWVfZmlsdGVyXG47O1xuXG5sZXQgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCkgPVxuICBtYXRjaCBMaXN0LnJldiAhZGVsYXllZF9lcnJvcnMgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgXyA6OiBfIGFzIGRlbGF5ZWRfZXJyb3JzIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJcXG4lc1xcbiUhXCIgKFN0cmluZy5tYWtlIDcwICc9Jyk7XG4gICAgTGlzdC5pdGVyIChmdW4gbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBtZXNzYWdlKSBkZWxheWVkX2Vycm9yc1xuOztcblxubGV0IGVwcmludGZfb3JfZGVsYXkgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmXG4gICAgKGZ1biBzIC0+XG4gICAgICAgaWYgIXZlcmJvc2UgdGhlbiBkZWxheWVkX2Vycm9ycyA6PSBzIDo6ICFkZWxheWVkX2Vycm9ycyBlbHNlIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHM7XG4gICAgICAgaWYgIXN0b3Bfb25fZXJyb3JcbiAgICAgICB0aGVuIChcbiAgICAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgICAgZXhpdCAyKSlcbiAgICBmbXRcbjs7XG5cbmxldCBhZGRfaG9va3MgKChtb2R1bGUgQykgOiBjb25maWcpIGYgKCkgPVxuICBDLnByZV90ZXN0X2hvb2sgKCk7XG4gIGYgKClcbjs7XG5cbmxldCBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSA9XG4gIGxldCBvcGVuIEJhc2UgaW5cbiAgYmFja3RyYWNlXG4gIHw+IFN0cmluZy5zcGxpdF9saW5lc1xuICB8PiBMaXN0LnRha2Vfd2hpbGUgfmY6KGZ1biBzdHIgLT5cbiAgICBub3QgKFN0cmluZy5TZWFyY2hfcGF0dGVybi5tYXRjaGVzIChmb3JjZSB3aGVyZV90b19jdXRfYmFja3RyYWNlKSBzdHIpKVxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIgXiBcIlxcblwiKVxuICB8PiBTdHJpbmcuY29uY2F0XG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9pbm5lclxuICAgICAgICAgICAgICAgICAgICAgfmNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgfmRlc2NyXG4gICAgICAgICAgICAgICAgICAgICB+dGFnc1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOmRlZl9maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgICAgICAgICAgICAgICAgICAgIGJvb2xfb2ZfZlxuICA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlXG4gICAgICB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb247IHdoaWNoX3RhZ3M7IG5hbWVfZmlsdGVyIH1cbiAgICAgIDsgd2hhdF90b19kb1xuICAgICAgfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyID1cbiAgICAgIGxhenkgKGRpc3BsYXllZF9kZXNjciBkZXNjciBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIHN0YXJ0X3BvcyBlbmRfcG9zKVxuICAgIGluXG4gICAgbGV0IGNvbXBsZXRlX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAmJiAobWF0Y2ggb25seV90ZXN0X2xvY2F0aW9uIHdpdGhcbiAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgIHwgXyA6OiBfIC0+IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgb25seV90ZXN0X2xvY2F0aW9uKVxuICAgICAgJiYgKG5vdCAoVGFnX3ByZWRpY2F0ZS5kaXNhYmxlZCB3aGljaF90YWdzIH5jb21wbGV0ZV90YWdzKSlcbiAgICAgICYmIG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciAoTGF6eS5mb3JjZSBkZXNjcilcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW5cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRlc2NyID0gTGF6eS5mb3JjZSBkZXNjciBpblxuICAgICAgICAgIGluY3IgdGVzdHNfcmFuO1xuICAgICAgICAgIChtYXRjaCAhbG9nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgIHwgU29tZSBjaCAtPiBQcmludGYuZnByaW50ZiBjaCBcIiVzXFxuJXNcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpO1xuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gUHJpbnRmLnByaW50ZiBcIiVzJSFcIiBkZXNjcjtcbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGlmICFsaXN0X3Rlc3RfbmFtZXNcbiAgICAgICAgICAgIHRoZW4gT2sgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBTZWUgW3RpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXSBmb3Igd2h5IHdlIHVzZSBbYm9vbF9vZl9mXVxuICAgICAgICAgICAgICAgICByYXRoZXIgaGF2ZSB0aGUgY2FsbGVyIHdyYXAgW2ZdIHRvIGFkanVzdCBpdHMgcmV0dXJuIHZhbHVlLiAqKVxuICAgICAgICAgICAgICBSZXN1bHQubWFwIGJvb2xfb2ZfZiAodGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBJZiAhbGlzdF90ZXN0X25hbWVzLCB0aGlzIGlzIGlzIGEgaGFybWxlc3MgemVyby4gKilcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIgKCUuM2Ygc2VjKVxcbiUhXCIgIXRpbWVfc2VjO1xuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayB0cnVlIC0+ICgpXG4gICAgICAgICAgfCBPayBmYWxzZSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgaXMgZmFsc2UuXFxuJXNcXG4lIVwiIGRlc2NyIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5XG4gICAgICAgICAgICAgIFwiJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiXG4gICAgICAgICAgICAgIGRlc2NyXG4gICAgICAgICAgICAgIHNlcFxuICAgICAgICAgICAgICBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpKVxuOztcblxubGV0IHNldF9saWJfYW5kX3BhcnRpdGlvbiBzdGF0aWNfbGliIHBhcnRpdGlvbiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgKCogcG9zc2libGUgaWYgdGhlIGludGVyZmFjZSBpcyB1c2VkIGV4cGxpY2l0bHkgb3IgaWYgd2UgaGFwcGVuIHRvIGR5bmxpbmsgc29tZXRoaW5nXG4gICAgICAgdGhhdCBjb250YWluIHRlc3RzICopXG4gICAgKClcbiAgfCBOb25lIC0+XG4gICAgZHluYW1pY19saWIgOj0gU29tZSBzdGF0aWNfbGliO1xuICAgIChtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgICAgfCBgSWdub3JlIC0+ICgpXG4gICAgIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzOyB3aGF0X3RvX2RvIH0gLT5cbiAgICAgICBpZiB3aGljaF90ZXN0cy5saWJuYW1lID0gc3RhdGljX2xpYlxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IHJlcXVpcmVzX3BhcnRpdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgfCBgUnVuX3BhcnRpdGlvbiAoU29tZSBfKSAtPiB0cnVlXG4gICAgICAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gTm9uZSAtPiBmYWxzZVxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHBhcnRpdGlvbiA9IFwiXCIgJiYgcmVxdWlyZXNfcGFydGl0aW9uXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJwcHhfaW5saW5lX3Rlc3Q6IGNhbm5vdCB1c2UgLWxpc3QtcGFydGl0aW9uIG9yIC1wYXJ0aXRpb24gd2l0aG91dCBcXFxuICAgICAgICAgICAgICBzcGVjaWZ5aW5nIGEgcGFydGl0aW9uIGF0IHByZXByb2Nlc3NpbmcgdGltZVwiXG4gICAgICAgICBlbHNlIFBhcnRpdGlvbi5zZXRfY3VycmVudCBwYXJ0aXRpb24pKVxuOztcblxubGV0IHVuc2V0X2xpYiBzdGF0aWNfbGliID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogbm90IGdpdmluZyBhbiBlcnJvciwgYmVjYXVzZSB3aGVuIHNvbWUgYW5ub3lpbmcgcGVvcGxlIHB1dCBwYV9vdW5pdCBpbiB0aGVpciBsaXN0XG4gICAgICAgb2YgcHJlcHJvY2Vzc29ycywgcGFfb3VuaXQgaXMgc2V0IHVwIHR3aWNlIGFuZCB3ZSBoYXZlIHR3byBjYWxscyB0byB1bnNldF9saWIgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBmaWxlLCBhbmQgdGhlIHNlY29uZCBvbmUgY29tZXMgaW4gdGhpcyBicmFuY2ggKilcbiAgICAoKVxuICB8IFNvbWUgbGliIC0+IGlmIGxpYiA9IHN0YXRpY19saWIgdGhlbiBkeW5hbWljX2xpYiA6PSBOb25lXG47O1xuXG5sZXQgdGVzdCB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiA9XG4gIHRlc3RfaW5uZXIgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgKGZ1biBiIC0+XG4gICAgYilcbjs7XG5cbmxldCB0ZXN0X3VuaXQgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIChmdW4gKCkgLT5cbiAgICB0cnVlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfbW9kdWxlXG4gICAgICAgICAgICAgICAgICAgICB+Y29uZmlnXG4gICAgICAgICAgICAgICAgICAgICB+ZGVzY3JcbiAgICAgICAgICAgICAgICAgICAgIH50YWdzXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlXG4gICAgICB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSBfOyBuYW1lX2ZpbHRlciA9IF87IHdoaWNoX3RhZ3MgfVxuICAgICAgOyB3aGF0X3RvX2RvXG4gICAgICB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgKCkgPSBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcyBpblxuICAgIGxldCBwYXJ0aWFsX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAoKiBJZiwgbm8gbWF0dGVyIHdoYXQgdGFncyBhIHRlc3QgZGVmaW5lcywgd2UgY2VydGFpbmx5IHdpbGwgZHJvcCBhbGwgdGVzdHMgd2l0aGluXG4gICAgICAgICB0aGlzIG1vZHVsZSwgdGhlbiBkb24ndCBydW4gdGhlIG1vZHVsZSBhdCBhbGwuIFRoaXMgbWVhbnMgcGVvcGxlIGNhbiB3cml0ZVxuICAgICAgICAgdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZyB3aXRob3V0IGJyZWFraW5nIHRoZSAzMi1iaXQgYnVpbGQ6XG4gICAgICAgICBsZXQldGVzdF9tb2R1bGUgW0B0YWdzIFwiNjQtYml0cy1vbmx5XCJdID0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgIGxldCBpID0gSW50NjQudG9faW50X2V4biAuLi4uXG4gICAgICAgICBlbmQpXG4gICAgICAgICBXZSBkb24ndCBzaG9ydGN1dCBiYXNlZCBvbiBwb3NpdGlvbiwgYXMgd2UgY2FuJ3QgdGVsbCB3aGF0IHBvc2l0aW9ucyB0aGVcbiAgICAgICAgIGlubmVyIHRlc3RzIHdpbGwgaGF2ZS4gKilcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5lbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHdoaWNoX3RhZ3MgfnBhcnRpYWxfdGFncylcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW5cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgICAgIGxldCBkZXNjciA9IGRlc2NyICgpIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1vZHVsZV9jb250ZXh0LndpdGhfIH5kZXNjciB+dGFncyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICgqIFdlIGRvIG5vdCByZXNldCByYW5kb20gc3RhdGVzIHVwb24gZW50ZXJpbmcgW2xldCV0ZXN0X21vZHVsZV0uXG5cbiAgICAgICAgICAgICAgICAgQ29uOiBDb2RlIGluIHRlc3QgbW9kdWxlcyBjYW4gYWNjaWRlbnRhbGx5IGRlcGVuZCBvbiB0b3AtbGV2ZWwgcmFuZG9tXG4gICAgICAgICAgICAgICAgIHN0YXRlIGVmZmVjdHMuXG5cbiAgICAgICAgICAgICAgICAgUHJvczogKDEpIFdlIGRvbid0IHJlc2V0IHRvIHRoZSBzYW1lIHNlZWQgb24gZW50ZXJpbmcgYSBbbGV0JXRlc3RfbW9kdWxlXVxuICAgICAgICAgICAgICAgICBhbmQgdGhlbiBhIFtsZXQldGVzdF0gaW5zaWRlIHRoYXQgbW9kdWxlLCB3aGljaCBjb3VsZCBsZWFkIHRvXG4gICAgICAgICAgICAgICAgIGFjY2lkZW50YWxseSByYW5kb21seSBnZW5lcmF0aW5nIHRoZSBzYW1lIHZhbHVlcyBpbiBzb21lIHRlc3QuICgyKSBNb3ZpbmdcbiAgICAgICAgICAgICAgICAgY29kZSBpbnRvIGFuZCBvdXQgb2YgW2xldCV0ZXN0X21vZHVsZV0gZG9lcyBub3QgY2hhbmdlIGl0cyByYW5kb20gc2VlZC5cbiAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheVxuICAgICAgICAgICAgICAoXCJURVNcIiBeXiBcIlRfTU9EVUxFIGF0ICVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIilcbiAgICAgICAgICAgICAgKFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZGVzY3IpXG4gICAgICAgICAgICAgIHNlcFxuICAgICAgICAgICAgICBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpKVxuOztcblxubGV0IHN1bW1hcml6ZSAoKSA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT5cbiAgICBpZiBTeXMuYXJndiA8PiBbfHxdICYmIEZpbGVuYW1lLmJhc2VuYW1lIFN5cy5hcmd2LigwKSA9IFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGVcIlxuICAgIHRoZW5cbiAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgIFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGUgaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJ1biBieSBoYW5kLCB5b3UgXFxuXFxcbiAgICAgICAgIHNob3VsZCBydW4gdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IGluc3RlYWQuXFxuXFxcbiAgICAgICAgICUhXCJcbiAgICBlbHNlXG4gICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICBcIllvdSBhcmUgZG9pbmcgc29tZXRoaW5nIHVuZXhwZWN0ZWQgd2l0aCB0aGUgdGVzdHMuIE5vIHRlc3RzIGhhdmUgXFxuXFxcbiAgICAgICAgIGJlZW4gcnVuLiBZb3Ugc2hvdWxkIHVzZSB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgdG8gcnVuIFxcblxcXG4gICAgICAgICB0ZXN0cy5cXG5cXFxuICAgICAgICAgJSFcIjtcbiAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IF87IHdoYXRfdG9fZG8gPSBgTGlzdF9wYXJ0aXRpb25zIH0gLT5cbiAgICBMaXN0Lml0ZXIgKFByaW50Zi5wcmludGYgXCIlc1xcblwiKSAoUGFydGl0aW9uLmFsbCAoKSk7XG4gICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICB8IGBUZXN0X21vZGUgeyB3aGF0X3RvX2RvID0gYFJ1bl9wYXJ0aXRpb24gXzsgd2hpY2hfdGVzdHMgfSAtPlxuICAgIChtYXRjaCAhbG9nIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBjaCAtPiBjbG9zZV9vdXQgY2gpO1xuICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgIChtYXRjaCAhdGVzdHNfZmFpbGVkLCAhdGVzdF9tb2R1bGVzX2ZhaWxlZCB3aXRoXG4gICAgIHwgMCwgMCAtPlxuICAgICAgIGlmICFzaG93X2NvdW50c1xuICAgICAgIHRoZW5cbiAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgIFwiJWQgdGVzdHMgcmFuLCAlZCB0ZXN0X21vZHVsZXMgcmFuXFxuJSFcIlxuICAgICAgICAgICAhdGVzdHNfcmFuXG4gICAgICAgICAgICF0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgbGV0IHVudXNlZF90ZXN0cyA9XG4gICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gKF8sIF8sIHVzZWQpIC0+IG5vdCAhdXNlZCkgd2hpY2hfdGVzdHMub25seV90ZXN0X2xvY2F0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgbWF0Y2ggdW51c2VkX3Rlc3RzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgfCBfIDo6IF8gLT4gU29tZSB1bnVzZWRfdGVzdHNcbiAgICAgICBpblxuICAgICAgIChtYXRjaCBlcnJvcnMgd2l0aFxuICAgICAgICB8IFNvbWUgdGVzdHMgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IHRoZSBmb2xsb3dpbmcgLW9ubHktdGVzdCBmbGFncyBtYXRjaGVkIG5vdGhpbmc6XCI7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCBfKSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBQcmludGYuZXByaW50ZiBcIiAlc1wiIGZpbGVuYW1lXG4gICAgICAgICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gUHJpbnRmLmVwcmludGYgXCIgJXM6JWRcIiBmaWxlbmFtZSBsaW5lX251bWJlcilcbiAgICAgICAgICAgIHRlc3RzO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiLlxcbiUhXCI7XG4gICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgIXRlc3RzX3JhbiA9IDAgJiYgIXN0cmljdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IG5vIHRlc3RzIGhhdmUgYmVlbiBydW4uXFxuJSFcIjtcbiAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yKVxuICAgICAgICAgIGVsc2UgVGVzdF9yZXN1bHQuU3VjY2VzcylcbiAgICAgfCBjb3VudCwgY291bnRfdGVzdF9tb2R1bGVzIC0+XG4gICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgIFwiRkFJTEVEICVkIC8gJWQgdGVzdHMlc1xcbiUhXCJcbiAgICAgICAgIGNvdW50XG4gICAgICAgICAhdGVzdHNfcmFuXG4gICAgICAgICAoaWYgY291bnRfdGVzdF9tb2R1bGVzID0gMFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgKFwiLCAlZCBURVNcIiBeXiBcIlRfTU9EVUxFU1wiKSBjb3VudF90ZXN0X21vZHVsZXMpO1xuICAgICAgIFRlc3RfcmVzdWx0LkZhaWx1cmUpXG47O1xuXG5sZXQgdXNlX2NvbG9yID0gIXVzZV9jb2xvclxubGV0IGluX3BsYWNlID0gIWluX3BsYWNlXG5sZXQgZGlmZl9jb21tYW5kID0gIWRpZmZfY29tbWFuZFxubGV0IGRpZmZfcGF0aF9wcmVmaXggPSAhZGlmZl9wYXRoX3ByZWZpeFxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSAhc291cmNlX3RyZWVfcm9vdFxubGV0IGV2YWx1YXRvcnMgPSByZWYgWyBzdW1tYXJpemUgXVxubGV0IGFkZF9ldmFsdWF0b3IgfmYgPSBldmFsdWF0b3JzIDo9IGYgOjogIWV2YWx1YXRvcnNcblxubGV0IGV4aXQgKCkgPVxuICBMaXN0Lm1hcCAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFldmFsdWF0b3JzKVxuICB8PiBUZXN0X3Jlc3VsdC5jb21iaW5lX2FsbFxuICB8PiBUZXN0X3Jlc3VsdC50b19leGl0X2NvZGVcbiAgfD4gZXhpdFxuOztcbiIsIm9wZW4hIEJhc2Vcbm1vZHVsZSBHYyA9IFN0ZGxpYi5HY1xuXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5cbmxldCBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIlBQWF9NT0RVTEVfVElNRVJcIlxuXG5sZXQgZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKSA9XG4gICgqIGF2b2lkIFN0ZGxpYi5TeXMuZ2V0ZW52X29wdCB0byBwcmVzZXJ2ZSA0LjA0LnggY29tcGF0aWJpbGl0eSAqKVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgd2l0aFxuICB8IHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgYW1fcmVjb3JkaW5nX3ZhbHVlID0gZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKVxubGV0IGFtX3JlY29yZGluZyA9IE9wdGlvbi5pc19zb21lIGFtX3JlY29yZGluZ192YWx1ZVxuXG5tb2R1bGUgRHVyYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudFxuXG4gIGxldCB0b19uYW5vc2Vjb25kcyB0ID0gdFxuICBsZXQgb2ZfbmFub3NlY29uZHMgdCA9IHRcblxuICBtb2R1bGUgdHlwZSBGb3JtYXQgPSBzaWdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IDogdCBsaXN0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA9IHN0cnVjdFxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeDpcIm5zXCIgfD4gSW50NjMub2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyBuYW5vcyA9IEludDYzLnRvX3N0cmluZyBuYW5vcyBeIFwibnNcIlxuICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6dG9fc3RyaW5nXG4gIGVuZFxuXG4gIGxldCBmb3JtYXQgPSByZWYgKG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA6IEZvcm1hdClcblxuICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQub2Zfc3RyaW5nIHN0cmluZ1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nXG4gIDs7XG5lbmRcblxubW9kdWxlIEdjX2V2ZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltaW5nX2V2ZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBkZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgcnVudGltZSA6IER1cmF0aW9uLnRcbiAgICA7IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50XG4gICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA6IHQgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA6IER1cmF0aW9uLnRcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgOiBHYy5zdGF0XG4gICAgOyBtdXRhYmxlIG5lc3RlZF90aW1lciA6IHQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDogVGltaW5nX2V2ZW50LnQgbGlzdFxuICAgIH1cblxuICBsZXQgY3JlYXRlID9uZXN0ZWRfdGltZXIgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPSBcIlwiXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lID0gSW50NjMuemVyb1xuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPSBHYy5xdWlja19zdGF0ICgpXG4gICAgOyBuZXN0ZWRfdGltZXJcbiAgICA7IHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyID0gW11cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gXCJcIjtcbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gSW50NjMuemVybztcbiAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5lc3RlZCAtPiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPC0gW11cbiAgOztcblxuICBsZXQgcmVjb3JkX3N0YXJ0IHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChTdHJpbmcuaXNfZW1wdHkgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbik7XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIGRlc2NyaXB0aW9uO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA8LSBHYy5xdWlja19zdGF0ICgpO1xuICAgICAgKCogY2FsbCBbVGltZV9ub3ddIGFzIGxhdGUgYXMgcG9zc2libGUgYmVmb3JlIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSlcbiAgOztcblxuICBsZXQgcmVjb3JkX3VudGlsIHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogY29tcHV0ZSBbVGltZV9ub3ddIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIGxldCB1bnRpbCA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgaW5cbiAgICAgIGxldCBzdGFydCA9IHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2FmdGVyID0gR2MucXVpY2tfc3RhdCAoKSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2JlZm9yZSA9IHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgaW5cbiAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAtICkgdW50aWwgc3RhcnQgaW5cbiAgICAgIGFzc2VydCAoU3RyaW5nLmVxdWFsIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gZGVzY3JpcHRpb24pO1xuICAgICAgbGV0IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50ID1cbiAgICAgICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgY29tcGFjdGlvbnMgPSBnY19zdGF0c19hZnRlci5jb21wYWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5jb21wYWN0aW9uc1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIG5lc3RlZCAtPiBMaXN0LnJldiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIGluXG4gICAgICBsZXQgdGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQgPVxuICAgICAgICB7IGRlc2NyaXB0aW9uOyBydW50aW1lOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH1cbiAgICAgIGluXG4gICAgICB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICA8LSB0aW1pbmdfZXZlbnQgOjogdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcjtcbiAgICAgIHJlc2V0IHQpXG4gIDs7XG5lbmRcblxubGV0IGRlZmluaXRpb25fdGltZXIgPSBUaW1lci5jcmVhdGUgKClcbmxldCBtb2R1bGVfdGltZXIgPSBUaW1lci5jcmVhdGUgfm5lc3RlZF90aW1lcjpkZWZpbml0aW9uX3RpbWVyICgpXG5sZXQgcmVjb3JkX3N0YXJ0IG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3N0YXJ0IG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF91bnRpbCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF91bnRpbCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfZGVmaW5pdGlvbl9zdGFydCBsb2MgPSBUaW1lci5yZWNvcmRfc3RhcnQgZGVmaW5pdGlvbl90aW1lciBsb2NcbmxldCByZWNvcmRfZGVmaW5pdGlvbl91bnRpbCBsb2MgPSBUaW1lci5yZWNvcmRfdW50aWwgZGVmaW5pdGlvbl90aW1lciBsb2NcblxubGV0IGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nXG4gICAgICAoeyBtaW5vcl9jb2xsZWN0aW9uczsgbWFqb3JfY29sbGVjdGlvbnM7IGNvbXBhY3Rpb25zIH0gOiBHY19ldmVudHMudClcbiAgPVxuICBsZXQgdG9fbGlzdCBkZXNjcmlwdGlvbiBjb3VudCA9XG4gICAgaWYgY291bnQgPSAwIHRoZW4gW10gZWxzZSBbIEludC50b19zdHJpbmcgY291bnQgXiBcIiBcIiBeIGRlc2NyaXB0aW9uIF1cbiAgaW5cbiAgbGV0IHN0cmluZ3MgPVxuICAgIHRvX2xpc3QgXCJtaW5vciBjb2xsZWN0aW9uc1wiIG1pbm9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwibWFqb3IgY29sbGVjdGlvbnNcIiBtYWpvcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcImNvbXBhY3Rpb25zXCIgY29tcGFjdGlvbnNcbiAgaW5cbiAgaWYgTGlzdC5pc19lbXB0eSBzdHJpbmdzIHRoZW4gXCJcIiBlbHNlIFwiOyBHQzogXCIgXiBTdHJpbmcuY29uY2F0IHN0cmluZ3MgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZCBsaXN0ID1cbiAgbGV0IGxlZnRfY29sdW1uX3dpZHRoID1cbiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDowIH5mOihmdW4gd2lkdGggKGxlZnQsIF8pIC0+IEludC5tYXggd2lkdGggKFN0cmluZy5sZW5ndGggbGVmdCkpXG4gIGluXG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biAobGVmdCwgcmlnaHQpIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCIlKnMgJXNcIiBsZWZ0X2NvbHVtbl93aWR0aCBsZWZ0IHJpZ2h0KVxuOztcblxubGV0IHJlYyB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbGlzdCB+aW5kZW50ID1cbiAgbGV0IGR1cmF0aW9uX3N0cmluZ3MgPVxuICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+IHRpbWluZ19ldmVudC5ydW50aW1lKVxuICAgIHw+IER1cmF0aW9uLnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdFxuICBpblxuICBsZXQgcHJlZml4ID0gU3RyaW5nLm1ha2UgaW5kZW50ICcgJyBpblxuICBMaXN0Lm1hcDJfZXhuXG4gICAgZHVyYXRpb25fc3RyaW5nc1xuICAgIGxpc3RcbiAgICB+ZjpcbiAgICAgIChmdW5cbiAgICAgICAgZHVyYXRpb25fc3RyaW5nIHsgcnVudGltZSA9IF87IGRlc2NyaXB0aW9uOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH0gLT5cbiAgICAgICAgKCBkdXJhdGlvbl9zdHJpbmdcbiAgICAgICAgLCBkZXNjcmlwdGlvblxuICAgICAgICAgIF4gZ2NfZXZlbnRzX3N1ZmZpeF9zdHJpbmcgZ2NfZXZlbnRzXG4gICAgICAgICAgXiBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAodGltaW5nX2V2ZW50c190b19zdHJpbmdzIG5lc3RlZF90aW1pbmdfZXZlbnRzIH5pbmRlbnQ6KGluZGVudCArIDQpKVxuICAgICAgICAgICAgICAgICB+ZjooZnVuIGxpbmUgLT4gXCJcXG5cIiBeIGxpbmUpKSApKVxuICB8PiB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZFxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGxpbmUgLT4gcHJlZml4IF4gbGluZSlcbjs7XG5cbmxldCBmYWtlX3RpbWluZ19ldmVudHMgPVxuICBsZXQgZ2NfZXZlbnRzIGkgOiBHY19ldmVudHMudCA9XG4gICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgMiA9IDEgdGhlbiAxIGVsc2UgMClcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSA0ID0gMyB0aGVuIDEgZWxzZSAwKVxuICAgIDsgY29tcGFjdGlvbnMgPSAoaWYgaSAlIDggPSA3IHRoZW4gMSBlbHNlIDApXG4gICAgfVxuICBpblxuICBsYXp5XG4gICAgKExpc3QuaW5pdCAxMiB+ZjooZnVuIGkgOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkZha2VfX0RlcGVuZGVuY3lfJWRcIiAoaSArIDEpXG4gICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaSArIDEpKVxuICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGlcbiAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgKGlmIChpICsgMSkgJSA0ID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBMaXN0LmluaXQgKGkgKyAxKSB+ZjooZnVuIGogOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkxpbmUgJWRcIiAoaiArIDEpXG4gICAgICAgICAgICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaiArIDEpKVxuICAgICAgICAgICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGpcbiAgICAgICAgICAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID0gW11cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZWxzZSBbXSlcbiAgICAgICB9KSlcbjs7XG5cbmxldCBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzIHRpbWluZ19ldmVudHMgPVxuICBsZXQgbm90aWZ5X29mX292ZXJyaWRpbmcgKCkgPVxuICAgIFN0ZGlvLnByaW50X2VuZGxpbmUgXCJwcHhfbW9kdWxlX3RpbWVyOiBvdmVycmlkaW5nIHRpbWUgbWVhc3VyZW1lbnRzIGZvciB0ZXN0aW5nXCJcbiAgaW5cbiAgbGV0IHRpbWluZ19ldmVudHMgPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZV9leG4gYW1fcmVjb3JkaW5nX3ZhbHVlIHdpdGhcbiAgICB8IFwiRkFLRV9NT0RVTEVTXCIgLT5cbiAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgZm9yY2UgZmFrZV90aW1pbmdfZXZlbnRzXG4gICAgfCBzdHJpbmcgLT5cbiAgICAgIChtYXRjaCBEdXJhdGlvbi5vZl9zdHJpbmcgc3RyaW5nIHdpdGhcbiAgICAgICB8IG92ZXJyaWRlIC0+XG4gICAgICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgICAgIExpc3QubWFwaSB0aW1pbmdfZXZlbnRzIH5mOihmdW4gaW5kZXggKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPlxuICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgICAgTGlzdC5tYXBpXG4gICAgICAgICAgICAgICB0aW1pbmdfZXZlbnQubmVzdGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgICAgICAgIH5mOihmdW4gaW5kZXggbmVzdGVkX3RpbWluZ19ldmVudCAtPlxuICAgICAgICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgICAgICAgIHsgbmVzdGVkX3RpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWUgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB0aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9KVxuICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdGltaW5nX2V2ZW50cylcbiAgaW5cbiAgdGltaW5nX2V2ZW50cyB8PiB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgfmluZGVudDowIHw+IExpc3QuaXRlciB+ZjpTdGRpby5wcmludF9lbmRsaW5lXG47O1xuXG5sZXQgKCkgPVxuICBpZiBhbV9yZWNvcmRpbmdcbiAgdGhlblxuICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgIHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgKExpc3QucmV2IG1vZHVsZV90aW1lci50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcikpXG47O1xuIiwidHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmFzZS5UeXBlX2VxdWFsLnQgPSBUIDogKCdhLCAnYSkgdFxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgY29udiA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBhIC0+IGIgPSBmdW4gVCB4IC0+IHhcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcbiIsIigqIHRoaXMgbGliIHNob3VsZCBub3QgZGVwZW5kIG9uIGNvcmUgKilcbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiAwXG4gICAgICB8IFtdLCBfIC0+IC0xXG4gICAgICB8IF8sIFtdIC0+IDFcbiAgICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiBsb29wIHhzIHlzIGVsc2UgblxuICAgIGluXG4gICAgbG9vcCBhIGJcbiAgOztcbmVuZFxuXG5tb2R1bGUgVWlkIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbmV4dCA6IHN0cmluZyAtPiB0XG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgdmFsIG5hbWUgOiB0IC0+IHN0cmluZ1xuICB2YWwgc3RhdGljIDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb2RlIDogaW50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIGEgYiA9IGNvbXBhcmUgKGEuY29kZSA6IGludCkgYi5jb2RlXG4gIGxldCBlcXVhbCBhIGIgPSAoYS5jb2RlIDogaW50KSA9IGIuY29kZVxuICBsZXQgdWlkID0gcmVmIDBcblxuICBsZXQgbmV4dCBuYW1lID1cbiAgICBsZXQgY29kZSA9ICF1aWQgaW5cbiAgICBpbmNyIHVpZDtcbiAgICB7IGNvZGU7IG5hbWUgfVxuICA7O1xuXG4gIGxldCBoYXNoIGEgPSBIYXNodGJsLmhhc2ggYS5jb2RlXG4gIGxldCBuYW1lIGEgPSBhLm5hbWVcbiAgbGV0IHN0YXRpYyA9IG5leHQgXCJzdGF0aWNcIlxuZW5kXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHVpZCA6IFVpZC50XG4gICAgOyBwYXJhbXMgOiB0IGxpc3RcbiAgICB9XG5cbiAgbGV0IHJlYyBjb21wYXJlIGsxIGsyID1cbiAgICBpZiBrMSA9PSBrMlxuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNtcCA9IFVpZC5jb21wYXJlIGsxLnVpZCBrMi51aWQgaW5cbiAgICAgIGlmIGNtcCA8PiAwIHRoZW4gY21wIGVsc2UgTGlzdC5jb21wYXJlIGNvbXBhcmUgazEucGFyYW1zIGsyLnBhcmFtcylcbiAgOztcblxuICBsZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG4gIGxldCBoYXNoID0gKEhhc2h0YmwuaGFzaCA6IHQgLT4gaW50KVxuICBsZXQgc3RhdGljID0geyB1aWQgPSBVaWQuc3RhdGljOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxudHlwZSAnYSB0ID0gS2V5LnRcbnR5cGUgJ2EgdHlwZW5hbWUgPSAnYSB0XG5cbmxldCBrZXkgdCA9IHRcbmxldCB1aWQgdCA9IHQuS2V5LnVpZFxubGV0IG5hbWUgdCA9IFVpZC5uYW1lIHQuS2V5LnVpZFxubGV0IHN0YXRpYyA9IEtleS5zdGF0aWNcbmxldCBjcmVhdGUgPyhuYW1lID0gXCJUeXBlbmFtZS5jcmVhdGVcIikgKCkgPSB7IEtleS51aWQgPSBVaWQubmV4dCBuYW1lOyBwYXJhbXMgPSBbXSB9XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFRoZSBhcmd1bWVudCBmb3IgT2JqLm1hZ2ljIGhlcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBjb3JlL3R5cGVfZXF1YWwgKilcblxuICBsZXQgc2FtZSAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID0gS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcblxuICBsZXQgc2FtZV93aXRuZXNzICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiBTb21lIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgZmFpbHdpdGggXCJUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdhIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICgnYSwgJ2IpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAnYyB0eXBlbmFtZSAtPiAoJ2EsICdiLCAnYykgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAnZSB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90ID0geyBLZXkudWlkOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGEgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYiBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGMgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkIGUgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZDsgZSBdIH1cbmVuZFxuXG5tb2R1bGUgS2V5X3RhYmxlID0gSGFzaHRibC5NYWtlIChLZXkpXG5cbm1vZHVsZSBUYWJsZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGRhdGEgPSBEYXRhIDogJ2EgdCAqICdhIFgudCAtPiBkYXRhXG4gIHR5cGUgdCA9IGRhdGEgS2V5X3RhYmxlLnRcblxuICBsZXQgY3JlYXRlIGludCA9IEtleV90YWJsZS5jcmVhdGUgaW50XG4gIGxldCBtZW0gdGFibGUgbmFtZSA9IEtleV90YWJsZS5tZW0gdGFibGUgKGtleSBuYW1lKVxuICBsZXQgc2V0IHRhYmxlIG5hbWUgZGF0YSA9IEtleV90YWJsZS5yZXBsYWNlIHRhYmxlIChrZXkgbmFtZSkgKERhdGEgKG5hbWUsIGRhdGEpKVxuXG4gIGxldCBmaW5kICh0eXBlIGEpIHRhYmxlIChuYW1lIDogYSB0eXBlbmFtZSkgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIHRyeSBTb21lIChLZXlfdGFibGUuZmluZCB0YWJsZSAoa2V5IG5hbWUpKSB3aXRoXG4gICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKERhdGEgKG5hbWUnLCBkYXRhKSkgLT5cbiAgICAgIChmdW4gKHR5cGUgYikgKG5hbWUnIDogYiB0eXBlbmFtZSkgKGRhdGEgOiBiIFgudCkgLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSAoc2FtZV93aXRuZXNzX2V4biBuYW1lJyBuYW1lIDogKGIsIGEpIFR5cGVfZXF1YWwudCkgaW5cbiAgICAgICAgIFNvbWUgKGRhdGEgOiBhIFgudCkpXG4gICAgICAgIG5hbWUnXG4gICAgICAgIGRhdGFcbiAgOztcbmVuZFxuXG5sZXQgZmFpbCB1aWRfYSB1aWRfYiA9XG4gIGxldCBtc2cgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4biAlUyAlU1wiIChVaWQubmFtZSB1aWRfYSkgKFVpZC5uYW1lIHVpZF9iKVxuICBpblxuICBmYWlsd2l0aCBtc2dcbjs7XG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzEgKEEgOiBTMSkgKEIgOiBTMSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhLiAoJ2EgQS50LCAnYSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8yIChBIDogUzIpIChCIDogUzIpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYi4gKCgnYSwgJ2IpIEEudCwgKCdhLCAnYikgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8zIChBIDogUzMpIChCIDogUzMpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYy4gKCgnYSwgJ2IsICdjKSBBLnQsICgnYSwgJ2IsICdjKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNCAoQSA6IFM0KSAoQiA6IFM0KSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MgJ2QuICgoJ2EsICdiLCAnYywgJ2QpIEEudCwgKCdhLCAnYiwgJ2MsICdkKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl81IChBIDogUzUpIChCIDogUzUpID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBlcSA6XG4gICAgICAgICdhICdiICdjICdkICdlLiAoKCdhLCAnYiwgJ2MsICdkLCAnZSkgQS50LCAoJ2EsICdiLCAnYywgJ2QsICdlKSBCLnQpIFR5cGVfZXF1YWwudFxuICAgIH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcbiIsIigqKlxuICAgUGxhY2UgaG9sZGVyIGZvciBjb21tb24gVmFyaWFudHMgYW5kIEZpZWxkcyBpbnRlcmZhY2VcbiopXG5cbm1vZHVsZSBNIChYIDogc2lnXG4gICAgKCoqXG4gICAgICAgVGhpcyBmdW5jdG9yIGlzIGVzc2VudGlhbGx5IHRoZXJlIGJlY2F1c2Ugd2UgdXNlIHRoaXMgc2FtZSBpbnRlcmZhY2UgaW4gZGlmZmVyZW50XG4gICAgICAgY29udGV4dHMsIHdpdGggZGlmZmVyZW50IHR5cGVzIGZvciBbJ2EgdF0uXG5cbiAgICAgICAxKSBPbmUgdXNlIGNhc2UgZm9yIGl0IGlzIHdoZXJlIFsnYSBYLnQgPSAnYSBUeXBlcmVwLnRdLiAgVGhlc2UgaW50ZXJmYWNlcyBhcmUgdGhlblxuICAgICAgIHBhcnQgb2YgdGhlIHR5cGUgd2l0bmVzcyBidWlsdCBmb3IgYSB0eXBlIGNvbnRhaW5pbmcgYSByZWNvcmQgb3IgYSB2YXJpYW50IGluIGl0c1xuICAgICAgIHN0cnVjdHVyZS4gW3RyYXZlcnNlXSB3aWxsIGdpdmUgYSB3YXkgb2YgYWNjZXNzaW5nIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVcbiAgICAgICBhcmd1bWVudHMgb2YgYSB2YXJpYW50IG9yIHJlY29yZCB0eXBlLlxuXG4gICAgICAgMikgQW5vdGhlciB1c2UgY2FzZSBpcyBmb3IgYnVpbGRpbmcgXCJzdGFnZWQgZ2VuZXJpYyBjb21wdXRhdGlvbnNcIi4gSW4gdGhhdCBjYXNlLCB0aGVcbiAgICAgICB0eXBlIFsnYSBYLnRdIGlzIHRoZSB0eXBlIG9mIHRoZSBjb21wdXRhdGlvbiB0aGF0IGlzIGJlaW5nIGJ1aWx0LiAgW3RyYXZlcnNlXVxuICAgICAgIHJldHVybnMgdGhlIGNvbXB1dGF0aW9uIGJ1aWx0IGZvciB0aGUgYXJndW1lbnQuIFRoZSBpbnRlcmZhY2Ugbm8gbG9uZ2VyIGV4cG9ydHNcbiAgICAgICB0aGUgdHlwZXJlcCBvZiB0aGUgYXJndW1lbnRzIGluIGhvcGVzIG9mIGVuZm9yY2luZyB0aGF0IG5vIHR5cGVyZXAgdHJhdmVyc2FsXG4gICAgICAgaGFwcGVucyBhdCBydW50aW1lIGlmIHRoZSBjb21wdXRhdGlvbiBoYXBwZW4gdG8gYmUgYSBmdW5jdGlvbi5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgZnVuY3Rpb25zIHByZWZpeGVkIGJ5IFtpbnRlcm5hbF0gYXMgd2VsbCBhcyB0aGUgbW9kdWxlIHN1ZmZpeGVkIGJ5IFtfaW50ZXJuYWxdXG4gICAgIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiBbd2l0aCB0eXBlcmVwXSBhcyB3ZWxsIGFzIHNvbWVcbiAgICAgaW50ZXJuYWxzIG9mIHRoZSB0eXBlcmVwIGxpYnJhcnkuIERvIG5vdCBjb25zaWRlciB1c2luZyB0aGVzZSBzb21ld2hlcmUgZWxzZS4gIFRoZXlcbiAgICAgc2hvdWxkIGlkZWFsbHkgbm90IGJlIGV4cG9ydGVkIG91dHNpZGUgdGhlIHR5cGVyZXAgbGlicmFyeSwgYnV0IHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICBuZWVkcyBzb21laG93IHRvIGFjY2VzcyB0aGlzLCBldmVuIG91dHNpZGUuICopXG5cbiAgbW9kdWxlIFRhZ19pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnYXJncyBYLnRcbiAgICAgIDsgYXJpdHkgOiBpbnRcbiAgICAgIDsgYXJnc19sYWJlbHMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyBvY2FtbF9yZXByIDogaW50XG4gICAgICA7IHR5aWQgOiAnYXJncyBUeXBlbmFtZS50XG4gICAgICA7IGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIHRhZywgdGhhdCBpcyBhbiBpdGVtIGluIGEgdmFyaWFudCB0eXBlLCBhbHNvIGNhbGxlZCBhbiBcImFwcGxpZWRcbiAgICAgdmFyaWFudCBDb25zdHJ1Y3RvclwiXG5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSB0YWdcbiAgICAgcGFyYW1ldGVycy4gIEV4YW1wbGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPVxuICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICB8IEIgb2Ygc3RyaW5nXG4gICAgICAgICB8IEMgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgXX1cblxuICAgICB0aGlzIHR5cGUgaGFzIHRocmVlIGNvbnN0cnVjdG9ycy4gRm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZ1xuICAgICBbVGFnLnRdOlxuXG4gICAgIHtbXG4gICAgICAgdmFsIHRhZ19BIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQiA6ICh0LCBzdHJpbmcgICAgICAgICkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0MgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgIF19XG5cbiAgICAgTm90ZSwgaW5saW5lIHJlY29yZCBpbiB2YXJpYW50IGFyZSB0eXBlZCBhcyBpZiB0aGVpciBkZWZpbml0aW9uIHdhcyB1c2luZyB0dXBsZXMsXG4gICAgIHdpdGhvdXQgdGhlIHBhcmVudGhlc2lzLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlaXIgcnVudGltZSByZXByZXNlbnRhdGlvbi4gIEJ1dFxuICAgICB0aGUgZGlzdGluY3Rpb24gaXMgY2FycmllZCBhbmQgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uIGFzIHBhcnQgb2YgdGhlIFtUYWcudF0uXG4gICAgIFNlZSBbYXJnc19sYWJlbHNdLiAqKVxuICBtb2R1bGUgVGFnIDogc2lnXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHt2XG4gICAgICAgICBDb25zdHJ1Y3RvciAgICAgICAgfCBsYWJlbFxuICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgfCBBIG9mIGludCAgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IGBhIG9mIGludCAgICAgICAgfCAgXCJhXCJcbiAgICAgICAgIHwgYEEgb2YgaW50ICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9IHwgIFwiQVwiXG4gICAgICAgdn1cblxuICAgICAgIGZvciBzdGFuZGFyZCB2YXJpYW50LCB0aGUgb2NhbWwgc3ludGF4IGltcGxpZXMgdGhhdCB0aGlzIGxhYmVsIHdpbGwgYWx3YXlzIHN0YXJ0c1xuICAgICAgIHdpdGggYSBjYXBpdGFsIGxldHRlci4gRm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIGNoYXIuXG4gICAgICAgRm9yIHBvbHltb3JwaGljIHZhcmlhbnQsIHRoaXMgbGFiZWwgZG9lcyBub3QgaW5jbHVkZSB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIHNpemUgb2YgdGhlIG9jYW1sIGhlYXAgYmxvY2sgY29udGFpbmluZyB0aGUgYXJndW1lbnRzXG5cbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7dlxuICAgICAgICAgIDA6IHwgQSB8ICdBXG4gICAgICAgICAgMTogfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludH1cbiAgICAgICAgICAyOiB8IEEgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICAgICBldGMuXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcml0eSA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqIFRoZSBsYWJlbCBvZiB0aGUgZmllbGRzIGZvciBpbmxpbmUgcmVjb3Jkcy4gIEZvciBvdGhlciBmb3JtcyBvZiB0YWdzLCB0aGlzIGlzIHRoZVxuICAgICAgICBlbXB0eSBsaXN0LiAgV2hlbiB0aGlzIHJldHVybnMgYSBub24gZW1wdHkgbGlzdCwgdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgbGlzdFxuICAgICAgICBpcyBlcXVhbCB0byB0aGUgYXJpdHkuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICB7dlxuICAgICAgICAgKDEpIEVtcHR5OlxuXG4gICAgICAgICAgIHwgQSB8ICdBXG4gICAgICAgICAgIHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgfCBBIG9mIGludCAqIGZsb2F0XG5cbiAgICAgICAgICgyKSBOb24gZW1wdHk6XG5cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgLT4gWyBcInhcIiBdXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfSAgIC0+IFsgXCJ4XCIgOyBcInlcIiBdXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcmdzX2xhYmVscyA6IChfLCBfKSB0IC0+IHN0cmluZyBsaXN0XG5cbiAgICAoKipcbiAgICAgICBUaGUgaW5kZXggb2YgdGhlIGNvbnN0cnVjdG9yIGluIHRoZSBsaXN0IG9mIGFsbCB0aGUgdmFyaWFudCB0eXBlJ3MgY29uc3RydWN0b3JzXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBDIG9mIGludCAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRCBvZiBjaGFyICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEUgb2YgeyB4IDogaW50IH0gICgqIDQgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBvY2FtbF9yZXByIGlzIHJlbGF0ZWQgdG8gdGhlIHJ1bnRpbWUgb2Ygb2JqZWN0cy4gdGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZlxuICAgICAgIGdpdmluZyBvbmUgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBkeW5hbWljYWxseSBhbiBbT2JqLnRdIHJlcHJlc2VudGluZyBhIHRhZy5cblxuICAgICAgIFBvbHltb3JwaGljIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSBoYXNoIG9mIHRoZSBsYWJlbCwgYXMgZG9uZSBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyBgYmFyKSAgKCogNDg5NTE4NyAqKVxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljICdmb28pICAoKiA1MDk3MjIyICopXG5cbiAgICAgICBTdGFuZGFyZHMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSB0YWcgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlLlxuICAgICAgIHRoZSB3YXkgaXQgd29ya3MgaW4gdGhlIG9jYW1sIHJ1bnRpbWUgaXMgYnkgcGFydGl0aW9uaW5nIHRoZSBjb25zdHJ1Y3RvcnMgcmVnYXJkaW5nXG4gICAgICAgaWYgdGhleSBoYXZlIHNvbWUgYXJndW1lbnRzIG9yIG5vdCwgcHJlc2VydmluZyB0aGUgb3JkZXIsIHRoZW4gYXNzaWduIGluY3JlYXNpbmdcbiAgICAgICBpbmRleCB3aXRoaW5nIGVhY2ggcGFydGl0aW9uLlxuICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0gICAgICAgICAgICAgICAgICAoKiBubyBhcmcgKikgICgqIGFyZ3MgKilcbiAgICAgICAgICAgfCBBICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiBvZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQyAgICAgICAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEQgb2YgKGZsb2F0ICogc3RyaW5nKSAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEUgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBGICAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRyBvZiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgSCBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBvY2FtbF9yZXByIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHaXZlIGJhY2sgYSB3YXkgb2YgY29uc3RydWN0aW5nIGEgdmFsdWUgb2YgdGhhdCBjb25zdHJ1Y3RvciBmcm9tIGl0cyBhcmd1bWVudHMuXG5cbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgICAgfCBCIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgIHwgQ1xuICAgICAgICAgICB8IEQgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICBdfVxuXG4gICAgICAgW2NyZWF0ZV0gd2lsbCByZXR1cm4gc29tZXRoaW5nIGVxdWl2YWxlbnQgdG86XG4gICAgICAgdGFnX0EgOiBbQXJncyAoZnVuIChkIDogKGludCAqIHN0cmluZykgLT4gQSBkKV1cbiAgICAgICB0YWdfQiA6IFtBcmdzIChmdW4gKGksIGYpIC0+IEIgKGksIGYpKV1cbiAgICAgICB0YWdfQyA6IFtDb25zdCBDXVxuICAgICAgIHRhZ19EIDogW0FyZ3MgKGZ1biAoeCwgeSkgLT4gRCB7IHg7IHkgfSldXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgdCAtPiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiBtaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgd2hpbGUgYnVpbGRpbmcgYSBjb21wdXRhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIHJlcHJlc2VudGF0aW9uL2NvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBUYWdfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVGFnX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgYXJpdHkgdCA9IHQuYXJpdHlcbiAgICBsZXQgYXJnc19sYWJlbHMgdCA9IHQuYXJnc19sYWJlbHNcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgb2NhbWxfcmVwciB0ID0gdC5vY2FtbF9yZXByXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAtPiAndmFyaWFudCB0YWdcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2EpIFRhZy50ICogJ2EgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyB0YWdzIDogJ2EgdGFnIGFycmF5XG4gICAgICA7IHBvbHltb3JwaGljIDogYm9vbFxuICAgICAgOyB2YWx1ZSA6ICdhIC0+ICdhIHZhbHVlXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50IDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIHRhZ3MgY29uc3RpdHVpbmcgYSB2YXJpYW50XG4gICAgICAgdHlwZS4gdGhlIFsndmFyaWFudF0gcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlXG4gICAgICAgY29uc3RydWN0b3JzIG9mIHRoYXQgdmFyaWFudCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVycyBtaWdodCBiZSBkaWZmZXJlbnRcbiAgICAgICBmb3IgZWFjaCBjb25zdHJ1Y3RvciBhbmQgaXMgdGh1cyBleGlzdGVudGlhbFxuICAgICopXG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuXG4gICAgKCoqXG4gICAgICAgQSBzaW1pbGFyIGV4aXN0ZW50aWFsIGNvbnN0cnVjdG9yIHRvIFtfIHRhZ10gYnV0IHRoaXMgb25lIGhvbGRzIGEgdmFsdWUgd2hvc2UgdHlwZVxuICAgICAgIGlzIHRoZSBhcmd1bWVudHMgb2YgdGhlIHRhZyBjb25zdHJ1Y3Rvci4gIEEgdmFsdWUgb2YgdHlwZSBbJ2EgdmFsdWVdIGlzIGEgcGFpciBvZlxuICAgICAgICgxKSBhIHZhbHVlIG9mIHZhcmlhbnQgdHlwZSBbJ2FdIGFsb25nIHdpdGggKDIpIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAgICAgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlIFsnYV1cbiAgICAqKVxuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgKiAnYXJncyAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHZhcmlhbnQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB0YWdzIG9mIHRoaXMgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIHRhZyBvZiB0aGlzIHZhcmlhbnQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgdGFnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgdGFnXG5cbiAgICAoKipcbiAgICAgICBEaXN0aW5ndWlzaCBwb2x5bW9ycGhpYyB2YXJpYW50cyBhbmQgc3RhbmRhcmQgdmFyaWFudHMuIFR5cGljYWxseSwgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cyB0YWdzIHN0YXJ0cyB3aXRoIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICAgIEV4YW1wbGVcbiAgICAgICBwb2x5bW9ycGhpYyB2YXJpYW50OiB0eXBlIHQgPSBbIGBBIHwgYEIgXVxuICAgICAgIHN0YW5kYXJkIHZhcmlhbnQ6ICAgIHR5cGUgdCA9IEEgfCBCXG4gICAgKilcbiAgICB2YWwgaXNfcG9seW1vcnBoaWMgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgUGF0dGVybiBtYXRjaGluZyBvbiBhIHZhbHVlIG9mIHRoaXMgdmFyaWFudCB0eXBlLlxuICAgICopXG4gICAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSAtPiAnYSB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgdGFnIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFZhcmlhbnRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyaWFudF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC50YWdzXG4gICAgbGV0IHRhZyB0IGluZGV4ID0gdC50YWdzLihpbmRleClcbiAgICBsZXQgaXNfcG9seW1vcnBoaWMgdCA9IHQucG9seW1vcnBoaWNcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LnRhZ3NcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2ZpZWxkIFgudFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyB0eWlkIDogJ2ZpZWxkIFR5cGVuYW1lLnRcbiAgICAgIDsgZ2V0IDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICAgIDsgKCogc2V0IDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvbjsgKFxcKiBtdXRhYmxlIGZpZWxkICpcXCkgKilcbiAgICAgICAgaXNfbXV0YWJsZSA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSBmaWVsZCwgdGhhdCBpcyBhbiBpdGVtIGluIGEgcmVjb3JkIHR5cGUuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAgICAgRXhhbXBsZTpcbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQgOyB5IDogc3RyaW5nIH1cbiAgICAgXX1cbiAgICAgVGhpcyB0eXBlIGhhcyB0d28gZmllbGRzLiBmb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nIFtGaWVsZC50XVxuXG4gICAgIHZhbCBmaWVsZF94IDogKHQsIGludCkgRmllbGQudFxuICAgICB2YWwgZmllbGRfeSA6ICh0LCBzdHJpbmcpIEZpZWxkLnRcbiAgKilcbiAgbW9kdWxlIEZpZWxkIDogc2lnXG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0XG5cblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHsgeCAgIDogaW50OyAgICAgKCogXCJ4XCIgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogXCJmb29cIiAqKVxuICAgICAgICAgICBiYXIgOiBmbG9hdDsgICAoKiBcImJhclwiICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlIGZpZWxkIGluIHRoZSBsaXN0IG9mIGFsbCBmaWVsZHMgZm9yIHRoaXMgcmVjb3JkIHR5cGUuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgICB4ICAgOiBpbnQ7ICAgICAoKiAwICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIDEgKilcbiAgICAgICAgICAgYmFyIDogc3RyaW5nOyAgKCogMiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEZpZWxkIGFjY2Vzc29ycy4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgZG90IG9wZXJhdGlvbi5cbiAgICAgICBbRmllbGQuZ2V0IGJhcl9maWVsZCB0XSByZXR1cm5zIHRoZSBmaWVsZCBbYmFyXSBvZiB0aGUgcmVjb3JkIHZhbHVlIFt0XSwganVzdCB0aGVcbiAgICAgICBzYW1lIGFzIFt0LmJhcl1cbiAgICAqKVxuICAgIHZhbCBnZXQgOiAoJ3JlY29yZCwgJ2ZpZWxkKSB0IC0+ICdyZWNvcmQgLT4gJ2ZpZWxkXG5cbiAgICAoKiogcmV0dXJuIHdoZXRoZXIgdGhlIGZpZWxkIGlzIG11dGFibGUsIGkuZS4gd2hldGhlciBpdHMgZGVjbGFyYXRpb24gaXMgcHJlZml4ZWQgd2l0aFxuICAgICAgICB0aGUga2V5d29yZCBbbXV0YWJsZV0gKilcbiAgICB2YWwgaXNfbXV0YWJsZSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiAgTWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0ICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBGaWVsZF9pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBGaWVsZF9pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IGdldCB0ID0gdC5nZXRcbiAgICBsZXQgaXNfbXV0YWJsZSB0ID0gdC5pc19tdXRhYmxlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyBmaWVsZHMgOiAnYSBmaWVsZCBhcnJheVxuICAgICAgOyBoYXNfZG91YmxlX2FycmF5X3RhZyA6IGJvb2xcbiAgICAgIDsgY3JlYXRlIDogJ2EgZmllbGRzIC0+ICdhXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgZmllbGRzIGNvbnN0aXR1aW5nIGEgcmVjb3JkIHR5cGUuIHRoZVxuICAgICAgIFsncmVjb3JkXSBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBmaWVsZCBvZiB0aGF0XG4gICAgICAgcmVjb3JkIHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBmaWVsZHMgbWlnaHQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGZpZWxkIGFuZCBpcyB0aHVzXG4gICAgICAgZXhpc3RlbnRpYWwuXG4gICAgKilcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBbJ3JlY29yZCBmaWVsZHNdIGlzIGEgdHlwZSBpc29tb3JwaGljIHRvIFsncmVjb3JkXS4gIFRoaXMgZ2l2ZXMgYSB3YXkgdG8gZ2V0IHRoZVxuICAgICAgIGZpZWxkIHZhbHVlIGZvciBlYWNoIGZpZWxkIG9mIHRoZSByZWNvcmQuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICB0aGF0IGl0IGlzIGNvbnZlbmllbnQgZm9yIHdyaXRpbmcgZ2VuZXJpYyBjb21wdXRhdGlvbnMuXG4gICAgKilcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSByZWNvcmQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgcmVjb3JkIHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBvZiB0aGlzIHJlY29yZCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIGZpZWxkIG9mIHRoaXMgcmVjb3JkIHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIGZpZWxkIDogJ2EgdCAtPiBpbnQgLT4gJ2EgZmllbGRcblxuICAgICgqKlxuICAgICAgIFRoaXMgaXMgYSBsb3cgbGV2ZWwgbWV0YWRhdGEgcmVnYXJkaW5nIHRoZSB3YXkgdGhlIG9jYW1sIGNvbXBpbGVyIHJlcHJlc2VudCB0aGVcbiAgICAgICBhcnJheSB1bmRlcm5lYXRoIHRoYXQgaXMgdGhlIHJ1bnRpbWUgdmFsdWUgb2YgYSByZWNvcmQgb2YgdHlwZSBbJ2FdIGdpdmVuIGEgd2l0bmVzc1xuICAgICAgIG9mIHR5cGUgWydhIHRdLiBbaGFzX2RvdWJsZV9hcnJheV90YWcgd10gcmV0dXJucyBbdHJ1ZV0gaWYgdGhlIGFycmF5IHRoYXRcbiAgICAgICByZXByZXNlbnRzIHJ1bnRpbWUgdmFsdWVzIG9mIHRoaXMgdHlwZSBpcyBhbiBvcHRpbWl6ZWQgb2NhbWwgZmxvYXQgYXJyYXkuXG4gICAgICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgYmUgdHJ1ZSBmb3IgcmVjb3JkIHdoZXJlIGFsbCBmaWVsZHMgYXJlIHN0YXRpY2FsbHkga25vd24gYXMgdG9cbiAgICAgICBiZSBbZmxvYXRzXS5cblxuICAgICAgIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZHluYW1pY2FsbHkgYnkgaW5zcGVjdGluZyB0aGUgdHlwZXJlcCBvbmNlXG4gICAgICAgaXQgaXMgYXBwbGllZCwgYmVjYXVzZSB0aGVyZSBpcyBhdCB0aGlzIHBvaW50IG5vIHdheSB0byB0ZWxsIHdoZXRoZXIgb25lIG9mIHRoZVxuICAgICAgIGZpZWxkIGlzIHBvbHltb3JwaGljIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgRXhwb3NlIG9uZSBkaXJlY3Rpb24gb2YgdGhlIGlzb21vcnBoaXNtIGJldHdlZW4gYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYW5kIGEgdmFsdWUgb2ZcbiAgICAgICB0eXBlIFsnYSBmaWVsZHNdLiBCYXNpY2FsbHksIGdpdmVuIGFuIGVuY29kaW5nIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHZhbHVlIG9mIGFsbFxuICAgICAgIHRoZSBmaWVsZHMgb2YgYSByZWNvcmQsIGNyZWF0ZSB0aGF0IHJlY29yZCBhbmQgcmV0dXJuIGl0LlxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICdhIHQgLT4gJ2EgZmllbGRzIC0+ICdhXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSBmaWVsZCAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBSZWNvcmRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUmVjb3JkX2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LmZpZWxkc1xuICAgIGxldCBmaWVsZCB0IGluZGV4ID0gdC5maWVsZHMuKGluZGV4KVxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyB0ID0gdC5oYXNfZG91YmxlX2FycmF5X3RhZ1xuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC5maWVsZHNcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSBOYW1lX29mID0gc3RydWN0XG4gIGxldCB0eXBlbmFtZV9vZl9pbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDMyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQzMlxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQzMlwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50NjQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDY0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDY0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9uYXRpdmVpbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG5hdGl2ZWludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJuYXRpdmVpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2NoYXIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiY2hhclwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfZmxvYXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImZsb2F0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9zdHJpbmcgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJzdHJpbmdcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2J5dGVzID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJieXRlc1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYm9vbCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYm9vbFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJib29sXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl91bml0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInVuaXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbW9kdWxlIE1fb3B0aW9uID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgICAgIGxldCBuYW1lID0gXCJvcHRpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2Zfb3B0aW9uID0gTV9vcHRpb24udHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xpc3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBuYW1lID0gXCJsaXN0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xpc3QgPSBNX2xpc3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2FycmF5ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICAgICAgbGV0IG5hbWUgPSBcImFycmF5XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2FycmF5ID0gTV9hcnJheS50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGF6eV90ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbiAgICAgIGxldCBuYW1lID0gXCJsYXp5X3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGF6eV90ID0gTV9sYXp5X3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3JlZiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4gICAgICBsZXQgbmFtZSA9IFwicmVmXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3JlZiA9IE1fcmVmLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9mdW5jdGlvbiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIC0+ICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJmdW5jdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9mdW5jdGlvbiA9IE1fZnVuY3Rpb24udHlwZW5hbWVfb2ZfdFxuXG4gIHR5cGUgdHVwbGUwID0gdW5pdFxuXG4gIG1vZHVsZSBNX3R1cGxlMCA9IFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHR1cGxlMFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUwXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMCA9IE1fdHVwbGUwLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTIgPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTJcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUyID0gTV90dXBsZTIudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMyA9IFR5cGVuYW1lLk1ha2UzIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2NcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlM1wiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTMgPSBNX3R1cGxlMy50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU0ID0gVHlwZW5hbWUuTWFrZTQgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSAqICdiICogJ2MgKiAnZFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNCA9IE1fdHVwbGU0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTUgPSBUeXBlbmFtZS5NYWtlNSAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTVcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU1ID0gTV90dXBsZTUudHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSByZWMgVHlwZXJlcCA6IHNpZ1xuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICAgIHZhbCBuYW1lIDogXyB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgOiBzaWdcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhhdCB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBUeXBlcmVwLnRcblxuICB2YWwgc2FtZSA6IF8gdCAtPiBfIHQgLT4gYm9vbFxuICB2YWwgc2FtZV93aXRuZXNzIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbiAgdmFsIHNhbWVfd2l0bmVzc19leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50XG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIHZhbCBoZWFkIDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBUMCBfIC0+IDBcbiAgICAgIHwgVDEgXyAtPiAxXG4gICAgICB8IFQyIF8gLT4gMlxuICAgICAgfCBUMyBfIC0+IDNcbiAgICAgIHwgVDQgXyAtPiA0XG4gICAgICB8IFQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCAodHlwZSBhKSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQxIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQyIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQzIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ0IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ1IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgOztcblxuICAgIGxldCBuYW1lIHJlcCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgKHR5cGVuYW1lX29mX3QgcmVwKSlcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlID0gc3RydWN0XG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoaXMgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIGxldCBhcml0eSA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgXyAtPiAyXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgXyAtPiAzXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgXyAtPiA0XG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICAgIHwgVDIgKGEsIGIpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUyIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgfCBUMyAoYSwgYiwgYykgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTNcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgIHwgVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU0XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgfCBUNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTVcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcblxuICBsZXQgcmVjIHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgIHwgSW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50XG4gICAgfCBJbnQzMiAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDMyXG4gICAgfCBJbnQ2NCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDY0XG4gICAgfCBOYXRpdmVpbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICB8IENoYXIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9jaGFyXG4gICAgfCBGbG9hdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Zsb2F0XG4gICAgfCBTdHJpbmcgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9zdHJpbmdcbiAgICB8IEJ5dGVzIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICB8IEJvb2wgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ib29sXG4gICAgfCBVbml0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfdW5pdFxuICAgIHwgT3B0aW9uIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX29wdGlvbiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMaXN0IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xpc3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgQXJyYXkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYXJyYXkgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGF6eSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9sYXp5X3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgUmVmIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3JlZiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBGdW5jdGlvbiAoZG9tLCBybmcpIC0+XG4gICAgICBOYW1lX29mLnR5cGVuYW1lX29mX2Z1bmN0aW9uICh0eXBlbmFtZV9vZl90IGRvbSkgKHR5cGVuYW1lX29mX3Qgcm5nKVxuICAgIHwgVHVwbGUgcmVwIC0+IFR5cGVyZXAuVHVwbGUudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFJlY29yZCByZXAgLT4gVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFZhcmlhbnQgcmVwIC0+IFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZVxuICA7O1xuXG4gIGxldCByZWMgc2FtZV93aXRuZXNzIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIFR5cGVfZXF1YWwudCBvcHRpb24gPVxuICAgIGZ1biB0MSB0MiAtPlxuICAgICAgbGV0IG1vZHVsZSBFID0gVHlwZV9lcXVhbCBpblxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgTmFtZWQgKG5hbWUxLCByMSksIE5hbWVkIChuYW1lMiwgcjIpIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3MgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTEpIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUyKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcjEsIHIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgTm9uZSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZSkpXG4gICAgICB8IE5hbWVkIChfLCByMSksIHQyIC0+XG4gICAgICAgIChtYXRjaCByMSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDEpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IHQxLCBOYW1lZCAoXywgcjIpIC0+XG4gICAgICAgIChtYXRjaCByMiB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IEludCwgSW50IC0+IFNvbWUgRS5UXG4gICAgICB8IEludDMyLCBJbnQzMiAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQ2NCwgSW50NjQgLT4gU29tZSBFLlRcbiAgICAgIHwgTmF0aXZlaW50LCBOYXRpdmVpbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgQ2hhciwgQ2hhciAtPiBTb21lIEUuVFxuICAgICAgfCBGbG9hdCwgRmxvYXQgLT4gU29tZSBFLlRcbiAgICAgIHwgU3RyaW5nLCBTdHJpbmcgLT4gU29tZSBFLlRcbiAgICAgIHwgQnl0ZXMsIEJ5dGVzIC0+IFNvbWUgRS5UXG4gICAgICB8IEJvb2wsIEJvb2wgLT4gU29tZSBFLlRcbiAgICAgIHwgVW5pdCwgVW5pdCAtPiBTb21lIEUuVFxuICAgICAgfCBPcHRpb24gcjEsIE9wdGlvbiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMaXN0IHIxLCBMaXN0IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEFycmF5IHIxLCBBcnJheSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMYXp5IHIxLCBMYXp5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IFJlZiByMSwgUmVmIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEZ1bmN0aW9uIChkb20xLCBybmcxKSwgRnVuY3Rpb24gKGRvbTIsIHJuZzIpIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgZG9tMSBkb20yLCBzYW1lX3dpdG5lc3Mgcm5nMSBybmcyIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICB8IFR1cGxlIHQxLCBUdXBsZSB0MiAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSBUeXBlcmVwLlR1cGxlIGluXG4gICAgICAgIChtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgfCBULlQyIChhMSwgYjEpLCBULlQyIChhMiwgYjIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQzIChhMSwgYjEsIGMxKSwgVC5UMyAoYTIsIGIyLCBjMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8gfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ0IChhMSwgYjEsIGMxLCBkMSksIFQuVDQgKGEyLCBiMiwgYzIsIGQyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8gfCBfLCBOb25lLCBfLCBfIHwgXywgXywgTm9uZSwgXyB8IF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNSAoYTEsIGIxLCBjMSwgZDEsIGUxKSwgVC5UNSAoYTIsIGIyLCBjMiwgZDIsIGUyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgKCBzYW1lX3dpdG5lc3MgYTEgYTJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYjEgYjJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYzEgYzJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZTEgZTIgKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBOb25lLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIE5vbmUsIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgTm9uZSwgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDIgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDMgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDQgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDUgXywgXyAtPiBOb25lKVxuICAgICAgfCBSZWNvcmQgcjEsIFJlY29yZCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgVmFyaWFudCByMSwgVmFyaWFudCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBJbnQsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQzMiwgXyAtPiBOb25lXG4gICAgICB8IEludDY0LCBfIC0+IE5vbmVcbiAgICAgIHwgTmF0aXZlaW50LCBfIC0+IE5vbmVcbiAgICAgIHwgQ2hhciwgXyAtPiBOb25lXG4gICAgICB8IEZsb2F0LCBfIC0+IE5vbmVcbiAgICAgIHwgU3RyaW5nLCBfIC0+IE5vbmVcbiAgICAgIHwgQnl0ZXMsIF8gLT4gTm9uZVxuICAgICAgfCBCb29sLCBfIC0+IE5vbmVcbiAgICAgIHwgVW5pdCwgXyAtPiBOb25lXG4gICAgICB8IE9wdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGlzdCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgQXJyYXkgXywgXyAtPiBOb25lXG4gICAgICB8IExhenkgXywgXyAtPiBOb25lXG4gICAgICB8IFJlZiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgRnVuY3Rpb24gXywgXyAtPiBOb25lXG4gICAgICB8IFR1cGxlIF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWNvcmQgXywgXyAtPiBOb25lXG4gICAgICB8IFZhcmlhbnQgXywgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWUgYSBiID0gc2FtZV93aXRuZXNzIGEgYiA8PiBOb25lXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gYSBiID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgYSBiIHdpdGhcbiAgICB8IFNvbWUgcHJvb2YgLT4gcHJvb2ZcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWFkID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQgKF8sIFNvbWUgKGxhenkgdCkpIC0+IGhlYWQgdFxuICAgIHwgdCAtPiB0XG4gIDs7XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfaW50ID0gVHlwZXJlcC5JbnRcbmxldCB0eXBlcmVwX29mX2ludDMyID0gVHlwZXJlcC5JbnQzMlxubGV0IHR5cGVyZXBfb2ZfaW50NjQgPSBUeXBlcmVwLkludDY0XG5sZXQgdHlwZXJlcF9vZl9uYXRpdmVpbnQgPSBUeXBlcmVwLk5hdGl2ZWludFxubGV0IHR5cGVyZXBfb2ZfY2hhciA9IFR5cGVyZXAuQ2hhclxubGV0IHR5cGVyZXBfb2ZfZmxvYXQgPSBUeXBlcmVwLkZsb2F0XG5sZXQgdHlwZXJlcF9vZl9zdHJpbmcgPSBUeXBlcmVwLlN0cmluZ1xubGV0IHR5cGVyZXBfb2ZfYnl0ZXMgPSBUeXBlcmVwLkJ5dGVzXG5sZXQgdHlwZXJlcF9vZl9ib29sID0gVHlwZXJlcC5Cb29sXG5sZXQgdHlwZXJlcF9vZl91bml0ID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl9vcHRpb24gcmVwID0gVHlwZXJlcC5PcHRpb24gcmVwXG5sZXQgdHlwZXJlcF9vZl9saXN0IHJlcCA9IFR5cGVyZXAuTGlzdCByZXBcbmxldCB0eXBlcmVwX29mX2FycmF5IHJlcCA9IFR5cGVyZXAuQXJyYXkgcmVwXG5sZXQgdHlwZXJlcF9vZl9sYXp5X3QgcmVwID0gVHlwZXJlcC5MYXp5IHJlcFxubGV0IHR5cGVyZXBfb2ZfcmVmIHJlcCA9IFR5cGVyZXAuUmVmIHJlcFxubGV0IHR5cGVyZXBfb2ZfZnVuY3Rpb24gZG9tIHJuZyA9IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUwID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl90dXBsZTIgYSBiID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTMgYSBiIGMgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNCBhIGIgYyBkID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTUgYSBiIGMgZCBlID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkpXG5cbmluY2x1ZGUgTmFtZV9vZlxuXG5sZXQgdmFsdWVfdHVwbGUwID0gKClcblxubGV0IHR5cGVyZXBfb2ZfaW50NjMsIHR5cGVuYW1lX29mX2ludDYzID1cbiAgbGV0IHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHJcbiAgICA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBhIFR5cGVyZXAudCAqIGEgVHlwZW5hbWUudFxuICAgID0gZnVuY3Rpb25cbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IHR5cGVyZXBfb2ZfaW50LCB0eXBlbmFtZV9vZl9pbnRcbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gdHlwZXJlcF9vZl9pbnQ2NCwgdHlwZW5hbWVfb2ZfaW50NjRcbiAgaW5cbiAgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuOztcbiIsIigqIHVzaW5nIHRoZSBoYXNoX3ZhcmlhbnQgb2YgcGFfdHlwZV9jb252IGF0IGNvbXBpbGUgdGltZSAqKVxubGV0IHJlcHJfb2ZfcG9seV92YXJpYW50IDogWz4gXSAtPiBpbnQgPVxuICBmdW4gdmFyaWFudCAtPlxuICBsZXQgb2JqID0gT2JqLnJlcHIgdmFyaWFudCBpblxuICBpZiBPYmouaXNfaW50IG9ialxuICB0aGVuIE9iai5vYmogb2JqXG4gIGVsc2UgKFxuICAgIGxldCBzaXplID0gT2JqLnNpemUgb2JqIGluXG4gICAgYXNzZXJ0IChzaXplID0gMik7XG4gICAgbGV0IHJlcHIgPSBPYmouZmllbGQgb2JqIDAgaW5cbiAgICBhc3NlcnQgKE9iai5pc19pbnQgcmVwcik7XG4gICAgT2JqLm9iaiByZXByKVxuOztcblxubGV0IGhhc2hfdmFyaWFudCBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gKDIyMyAqICFhY2N1KSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKCgxIGxzbCAzMSkgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdVxuOztcblxuKCogYSBmZXcgdW5pdCB0ZXN0cyBvZiBjYXNlcyB0aGF0IGhhdmUgdHJpZ2dlcmVkIGRpZmZzIGluIHRoZSBwYXN0IG9mIHRoaXNcbiAgIGxpYiAqKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgTGF0ZW5jeV9zdGF0cyA9IGhhc2hfdmFyaWFudCBcIkxhdGVuY3lfc3RhdHNcIilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYHplcm8gPSBoYXNoX3ZhcmlhbnQgXCJ6ZXJvXCIpXG5sZXRbQGlubGluZSBuZXZlcl0gZG91YmxlX2FycmF5X3ZhbHVlICgpID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqLm1hZ2ljIDAuKVxubGV0IGhhc19kb3VibGVfYXJyYXlfdGFnIGEgPSBPYmouZG91YmxlX2FycmF5X3RhZyA9IE9iai50YWcgKE9iai5yZXByIGEpXG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgZG91YmxlID1cbiAgICAgIHsgYSA6IGZsb2F0XG4gICAgICA7IGIgOiBmbG9hdFxuICAgICAgfVxuXG4gICAgdHlwZSBzaW1wbGUgPVxuICAgICAgeyBjIDogZmxvYXRcbiAgICAgIDsgZCA6IGludFxuICAgICAgfVxuXG4gICAgbGV0IGRvdWJsZSA9IHsgYSA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKTsgYiA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKSB9XG4gICAgbGV0IHNpbXBsZSA9IHsgYyA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKTsgZCA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKSB9XG4gIGVuZFxuICBpblxuICBhc3NlcnQgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uZG91YmxlKTtcbiAgYXNzZXJ0IChub3QgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uc2ltcGxlKSlcbjs7XG4iLCJtb2R1bGUgTSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gKCdhLCAnYikgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAoJ2EsICdiLCAnYykgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAnZCBYLnQgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgWC50XG4gICAgICAtPiAnYiBYLnRcbiAgICAgIC0+ICdjIFgudFxuICAgICAgLT4gJ2QgWC50XG4gICAgICAtPiAnZSBYLnRcbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgWC50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZiA9IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmXG5cbm1vZHVsZSBIZWxwZXIgKEEgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSAoQiA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpID0gc3RydWN0XG4gIHR5cGUgbWFwID0geyBtYXAgOiAnYS4gJ2EgQS50IC0+ICdhIEIudCB9XG5cbiAgbGV0IG1hcF92YXJpYW50ICh0eXBlIHZhcmlhbnQpIHsgbWFwIH0gKHZhcmlhbnQgOiB2YXJpYW50IEEuVmFyaWFudC50KSA9XG4gICAgbGV0IG1hcF9jcmVhdGUgPSBmdW5jdGlvblxuICAgICAgfCBBLlRhZy5BcmdzIGZjdCAtPiBCLlRhZ19pbnRlcm5hbC5BcmdzIGZjdFxuICAgICAgfCBBLlRhZy5Db25zdCBrIC0+IEIuVGFnX2ludGVybmFsLkNvbnN0IGtcbiAgICBpblxuICAgIGxldCBtYXBfdGFnIHRhZyA9XG4gICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVGFnIHRhZyAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLlRhZy5sYWJlbCB0YWcgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5UYWcudHJhdmVyc2UgdGFnKSBpblxuICAgICAgICBsZXQgYXJpdHkgPSBBLlRhZy5hcml0eSB0YWcgaW5cbiAgICAgICAgbGV0IGFyZ3NfbGFiZWxzID0gQS5UYWcuYXJnc19sYWJlbHMgdGFnIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuVGFnLmluZGV4IHRhZyBpblxuICAgICAgICBsZXQgb2NhbWxfcmVwciA9IEEuVGFnLm9jYW1sX3JlcHIgdGFnIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5UYWcudHlpZCB0YWcgaW5cbiAgICAgICAgbGV0IGNyZWF0ZSA9IG1hcF9jcmVhdGUgKEEuVGFnLmNyZWF0ZSB0YWcpIGluXG4gICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5UYWdcbiAgICAgICAgICAoQi5UYWcuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuVGFnX2ludGVybmFsLmxhYmVsXG4gICAgICAgICAgICAgOyByZXBcbiAgICAgICAgICAgICA7IGFyaXR5XG4gICAgICAgICAgICAgOyBhcmdzX2xhYmVsc1xuICAgICAgICAgICAgIDsgaW5kZXhcbiAgICAgICAgICAgICA7IG9jYW1sX3JlcHJcbiAgICAgICAgICAgICA7IHR5aWRcbiAgICAgICAgICAgICA7IGNyZWF0ZVxuICAgICAgICAgICAgIH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50IGluXG4gICAgbGV0IHBvbHltb3JwaGljID0gQS5WYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQgaW5cbiAgICBsZXQgdGFncyA9XG4gICAgICBBcnJheS5pbml0IChBLlZhcmlhbnQubGVuZ3RoIHZhcmlhbnQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX3RhZyAoQS5WYXJpYW50LnRhZyB2YXJpYW50IGluZGV4KSlcbiAgICBpblxuICAgIGxldCB2YWx1ZSAoYSA6IHZhcmlhbnQpID1cbiAgICAgIG1hdGNoIEEuVmFyaWFudC52YWx1ZSB2YXJpYW50IGEgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVmFsdWUgKGF0YWcsIGEpIC0+XG4gICAgICAgIChmdW4gKHR5cGUgYXJncykgKGF0YWcgOiAodmFyaWFudCwgYXJncykgQS5UYWcudCkgKGEgOiBhcmdzKSAtPlxuICAgICAgICAgICBsZXQgKEIuVmFyaWFudF9pbnRlcm5hbC5UYWcgYnRhZykgPSB0YWdzLihBLlRhZy5pbmRleCBhdGFnKSBpblxuICAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYnRhZyA6ICh2YXJpYW50LCBleCkgQi5UYWcudCkgLT5cbiAgICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5UYWcudHlpZCBhdGFnKSAoQi5UYWcudHlpZCBidGFnKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYnRhZyA9IChidGFnIDogKHZhcmlhbnQsIGFyZ3MpIEIuVGFnLnQpIGluXG4gICAgICAgICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5WYWx1ZSAoYnRhZywgYSkpXG4gICAgICAgICAgICAgYnRhZylcbiAgICAgICAgICBhdGFnXG4gICAgICAgICAgYVxuICAgIGluXG4gICAgQi5WYXJpYW50LmludGVybmFsX3VzZV9vbmx5IHsgQi5WYXJpYW50X2ludGVybmFsLnR5cGVuYW1lOyB0YWdzOyBwb2x5bW9ycGhpYzsgdmFsdWUgfVxuICA7O1xuXG4gIGxldCBtYXBfcmVjb3JkICh0eXBlIHJlY29yZCkgeyBtYXAgfSAocmVjb3JkIDogcmVjb3JkIEEuUmVjb3JkLnQpID1cbiAgICBsZXQgbWFwX2ZpZWxkIGZpZWxkID1cbiAgICAgIG1hdGNoIGZpZWxkIHdpdGhcbiAgICAgIHwgQS5SZWNvcmQuRmllbGQgZmllbGQgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5GaWVsZC5sYWJlbCBmaWVsZCBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLkZpZWxkLnRyYXZlcnNlIGZpZWxkKSBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLkZpZWxkLmluZGV4IGZpZWxkIGluXG4gICAgICAgIGxldCBpc19tdXRhYmxlID0gQS5GaWVsZC5pc19tdXRhYmxlIGZpZWxkIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5GaWVsZC50eWlkIGZpZWxkIGluXG4gICAgICAgIGxldCBnZXQgPSBBLkZpZWxkLmdldCBmaWVsZCBpblxuICAgICAgICBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZFxuICAgICAgICAgIChCLkZpZWxkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLkZpZWxkX2ludGVybmFsLmxhYmVsOyByZXA7IGluZGV4OyBpc19tdXRhYmxlOyB0eWlkOyBnZXQgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVjb3JkIGluXG4gICAgbGV0IGhhc19kb3VibGVfYXJyYXlfdGFnID0gQS5SZWNvcmQuaGFzX2RvdWJsZV9hcnJheV90YWcgcmVjb3JkIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBBcnJheS5pbml0IChBLlJlY29yZC5sZW5ndGggcmVjb3JkKSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF9maWVsZCAoQS5SZWNvcmQuZmllbGQgcmVjb3JkIGluZGV4KSlcbiAgICBpblxuICAgIGxldCBjcmVhdGUgeyBCLlJlY29yZF9pbnRlcm5hbC5nZXQgfSA9XG4gICAgICBsZXQgZ2V0ICh0eXBlIGEpIChhZmllbGQgOiAoXywgYSkgQS5GaWVsZC50KSA9XG4gICAgICAgIG1hdGNoIGZpZWxkcy4oQS5GaWVsZC5pbmRleCBhZmllbGQpIHdpdGhcbiAgICAgICAgfCBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZCBiZmllbGQgLT5cbiAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYmZpZWxkIDogKHJlY29yZCwgZXgpIEIuRmllbGQudCkgLT5cbiAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuRmllbGQudHlpZCBhZmllbGQpIChCLkZpZWxkLnR5aWQgYmZpZWxkKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGJmaWVsZCA9IChiZmllbGQgOiAocmVjb3JkLCBhKSBCLkZpZWxkLnQpIGluXG4gICAgICAgICAgICAgZ2V0IGJmaWVsZClcbiAgICAgICAgICAgIGJmaWVsZFxuICAgICAgaW5cbiAgICAgIEEuUmVjb3JkLmNyZWF0ZSByZWNvcmQgeyBBLlJlY29yZC5nZXQgfVxuICAgIGluXG4gICAgQi5SZWNvcmQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgIHsgQi5SZWNvcmRfaW50ZXJuYWwudHlwZW5hbWU7IGZpZWxkczsgaGFzX2RvdWJsZV9hcnJheV90YWc7IGNyZWF0ZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgTmFtZWQgPSBzaWdcbiAgdHlwZSAnYSBjb21wdXRhdGlvblxuXG4gIG1vZHVsZSBDb250ZXh0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBpbml0IDogQ29udGV4dC50IC0+ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgZ2V0X3dpcF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNldF9maW5hbF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNoYXJlIDogXyBUeXBlcmVwLnQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXB1dGF0aW9uID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIGludCA6IGludCB0XG4gIHZhbCBpbnQzMiA6IGludDMyIHRcbiAgdmFsIGludDY0IDogaW50NjQgdFxuICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICB2YWwgYm9vbCA6IGJvb2wgdFxuICB2YWwgdW5pdCA6IHVuaXQgdFxuICB2YWwgb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICB2YWwgbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBhcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICB2YWwgbGF6eV90IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICB2YWwgcmVmXyA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgdmFsIGZ1bmN0aW9uXyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgLT4gJ2IpIHRcbiAgdmFsIHR1cGxlMiA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHVwbGUzIDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gKCdhICogJ2IgKiAnYykgdFxuICB2YWwgdHVwbGU0IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgdmFsIHR1cGxlNSA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gJ2UgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuICB2YWwgcmVjb3JkIDogJ2EgUmVjb3JkLnQgLT4gJ2EgdFxuICB2YWwgdmFyaWFudCA6ICdhIFZhcmlhbnQudCAtPiAnYSB0XG5cbiAgbW9kdWxlIE5hbWVkIDogTmFtZWQgd2l0aCB0eXBlICdhIGNvbXB1dGF0aW9uIDo9ICdhIHRcbmVuZFxuXG4oKiBzcGVjaWFsIGZ1bmN0b3IgYXBwbGljYXRpb24gZm9yIGNvbXB1dGF0aW9uIGFzIGNsb3N1cmUgb2YgdGhlIGZvcm0gW2EgLT4gYl0gKilcbm1vZHVsZSBNYWtlX25hbWVkX2Zvcl9jbG9zdXJlIChYIDogc2lnXG4gICAgdHlwZSAnYSBpbnB1dFxuICAgIHR5cGUgJ2Egb3V0cHV0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaW5wdXQgLT4gJ2Egb3V0cHV0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGlnbm9yZVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudFxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgOiAnYSBYLnQgcmVmXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudCBvcHRpb24gcmVmXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IGluaXQgKCkgbmFtZSA9XG4gICAgbGV0IHBhdGggPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIG5hbWUpIGluXG4gICAgbGV0IHIgPSByZWYgKGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWQgcGF0aCkpIGluXG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlID0gKGZ1biBpbnB1dCAtPiAhciBpbnB1dClcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlID0gclxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSByZWYgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWQgPVxuICAgIG1hdGNoIHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIGNsb3MgLT4gY2xvc1xuICAgIHwgTm9uZSAtPiBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZVxuICA7O1xuXG4gIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uID1cbiAgICBsZXQgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgaW5cbiAgICBtYXRjaCBjb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBCYXNlLnBoeXNfZXF1YWwgc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2UgY29tcHV0YXRpb24gdGhlbiBhc3NlcnQgZmFsc2U7XG4gICAgICBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6PSBTb21lIGNvbXB1dGF0aW9uO1xuICAgICAgc2hhcmVkLnJ1bnRpbWVfcmVmZXJlbmNlIDo9IGNvbXB1dGF0aW9uO1xuICAgICAgY29tcHV0YXRpb25cbiAgOztcblxuICBsZXQgc2hhcmUgXyA9IHRydWVcbmVuZFxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGltcGxlbWVudHMgOiBUeXBlbmFtZS5VaWQudCAtPiBib29sXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBCcm9rZW5fZGVwZW5kZW5jeSBvZiBzdHJpbmdcblxuICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzIG5hbWUgcmVxdWlyZWQgPVxuICAgIG1hdGNoIHJlcXVpcmVkIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+ICgpXG4gICAgfCBfIC0+XG4gICAgICBmdW4gdWlkIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geyBuYW1lID0gbmFtZSc7IGltcGxlbWVudHMgfSAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoaW1wbGVtZW50cyB1aWQpXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAoKiBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgc2V0IHVwLCB0aGlzIGlzIGFuIGVycm9yIGR1cmluZyB0aGVcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwcm9ncmFtLCB3ZSByYXRoZXIgZmFpbCB3aXRoIGEgaHVtYW5cbiAgICAgICAgICAgICAgICAgIHJlYWRhYmxlIG91dHB1dCAqKVxuICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiVHlwZV9nZW5lcmljICVTIHJlcXVpcmVzICVTIGZvciB1aWQgJVNcXG5cIlxuICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICBuYW1lJ1xuICAgICAgICAgICAgICAgICAgIChUeXBlbmFtZS5VaWQubmFtZSB1aWQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgcHJlcnJfZW5kbGluZSBtZXNzYWdlO1xuICAgICAgICAgICAgICAgcmFpc2UgKEJyb2tlbl9kZXBlbmRlbmN5IG1lc3NhZ2UpKSlcbiAgICAgICAgICByZXF1aXJlZFxuICA7O1xuZW5kXG5cbigqIEV4dGVuZGluZyBhbiBleGlzdGluZyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBFeHRlbmRpbmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgdmFsIGlkZW50IDogSWRlbnQudFxuXG4gICgqIGdlbmVyaWNfaWRlbnQgKiB0eXBlbmFtZSBvciBpbmZvICopXG4gIGV4Y2VwdGlvbiBOb3RfaW1wbGVtZW50ZWQgb2Ygc3RyaW5nICogc3RyaW5nXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdhIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYiBjb21wdXRhdGlvbiAtPiAoJ2EsICdiKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICdlIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIHZhbCByZWdpc3RlcjAgOiAobW9kdWxlIFMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMSA6IChtb2R1bGUgUzEpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMiA6IChtb2R1bGUgUzIpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMyA6IChtb2R1bGUgUzMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNCA6IChtb2R1bGUgUzQpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNSA6IChtb2R1bGUgUzUpIC0+IHVuaXRcblxuICAoKiBzcGVjaWFsIGxlc3Mgc2NhcnkgdHlwZSB3aGVuIHRoZSB0eXBlIGhhcyBubyBwYXJhbWV0ZXJzICopXG4gIHZhbCByZWdpc3RlciA6ICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiAtPiB1bml0XG5cbiAgKCpcbiAgICAgRXNzZW50aWFsbHkgYmVjYXVzZSB3ZSBjYW5ub3QgdGFsayBhYm91dCBhIHZhcmlhYmxlIG9mIGtpbmQgKiAtPiBrXG4gICAgIHZhbCByZWdpc3RlcjEgOiAnYSAndCBUeXBlcmVwLnQgLT4gKCdhIGNvbXB1dGF0aW9uIC0+ICdhICd0IGNvbXB1dGF0aW9uKSAtPiB1bml0XG4gICAgIC4uLlxuICAqKVxuZW5kXG5cbigqIEltcGxlbWVudGluZyBhIG5ldyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBTX2ltcGxlbWVudGF0aW9uID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgKCogcmFpc2UgdXNpbmcgdGhlIGN1cnJlbnQgaWRlbnQgKilcbiAgdmFsIHJhaXNlX25vdF9pbXBsZW1lbnRlZCA6IHN0cmluZyAtPiAnYVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICAoKlxuICAgICBTdGFuZGFyZCBjYXNlLCBmaW5kIGEgZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24sIG9yIGxvb2sgaW4gdGhlIGNvbnRlbnRcbiAgKilcbiAgdmFsIF91c2luZ19leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgVHlwZXJlcC50IGxhenlfdCBvcHRpb25cbiAgICAtPiAnYSBjb21wdXRhdGlvblxuXG4gICgqXG4gICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSBtb3JlIGNvbnRyb2wgb24gd2hhdCB5b3Ugd2FudCB0byBkb1xuICAqKVxuICB2YWwgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgY29tcHV0YXRpb24gb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gIHZhbCBvZl90eXBlcmVwIDogJ2EgVHlwZXJlcC50IC0+IFsgYGdlbmVyaWMgb2YgJ2EgY29tcHV0YXRpb24gXVxuXG4gIG1vZHVsZSBDb21wdXRhdGlvbiA6IENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfaW1wbGVtZW50YXRpb24gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG4gIGVuZCkgOiBTX2ltcGxlbWVudGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFgudFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcblxuICAoKiB3ZSBkbyBub3QgdXNlIGNvcmUgc2luY2Ugd2UgYXJlIGVhcmxpZXIgaW4gdGhlIGRlcGVuZGVuY2llcyBncmFwaCAqKVxuICBtb2R1bGUgVWlkX3RhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLlVpZClcblxuICAgIGxldCBmaW5kIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgdHJ5IFNvbWUgKGZpbmQgdGFibGUga2V5KSB3aXRoXG4gICAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgZWxzZSBOb25lXG4gICAgOztcblxuICAgIGxldCBjaGVja19kZXBlbmRlbmNpZXMgPSBJZGVudC5jaGVja19kZXBlbmRlbmNpZXMgWC5uYW1lIFgucmVxdWlyZWRcblxuICAgIGxldCByZXBsYWNlIHRhYmxlIGtleSB2YWx1ZSA9XG4gICAgICBjaGVja19kZXBlbmRlbmNpZXMga2V5O1xuICAgICAgcmVwbGFjZSAoTGF6eS5mb3JjZSB0YWJsZSkga2V5IHZhbHVlXG4gICAgOztcblxuICAgIGxldCBtZW0gdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICBtZW0gdGFibGUga2V5KVxuICAgICAgZWxzZSBmYWxzZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaXplID0gMjU2XG4gIGxldCB0YWJsZTAgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTEgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTIgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTMgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTQgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTUgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG5cbiAgbGV0IGlzX3JlZ2lzdGVyZWQgdWlkID1cbiAgICBVaWRfdGFibGUubWVtIHRhYmxlMCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMSB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMiB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMyB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNSB1aWRcbiAgOztcblxuICBsZXQgaWRlbnQgPSB7IElkZW50Lm5hbWUgPSBYLm5hbWU7IGltcGxlbWVudHMgPSBpc19yZWdpc3RlcmVkIH1cblxuICBtb2R1bGUgRmluZDAgKFQgOiBUeXBlcmVwLk5hbWVkLlQwKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiBULm5hbWVkIGNvbXB1dGF0aW9uIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTAgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgcmVwIDogUykgaW5cbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIFMudHlwZW5hbWVfb2ZfdCBULnR5cGVuYW1lX29mX25hbWVkIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCB3aXRuZXNzKSBTLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQxIChUIDogVHlwZXJlcC5OYW1lZC5UMSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgcmVwIDogUzEpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8xXG4gICAgICAgICAgICAoUzEpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzEuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDIgKFQgOiBUeXBlcmVwLk5hbWVkLlQyKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTIgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIHJlcCA6IFMyKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMlxuICAgICAgICAgICAgKFMyKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMi5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMyAoVCA6IFR5cGVyZXAuTmFtZWQuVDMpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMyAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgcmVwIDogUzMpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8zXG4gICAgICAgICAgICAoUzMpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IFQuYyBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMzLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ0IChUIDogVHlwZXJlcC5OYW1lZC5UNCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTQgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIHJlcCA6IFM0KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNFxuICAgICAgICAgICAgKFM0KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICgnYSwgJ2IsICdjLCAnZCkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNC5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNSAoVCA6IFR5cGVyZXAuTmFtZWQuVDUpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTUgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIHJlcCA6IFM1KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNVxuICAgICAgICAgICAgKFM1KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB1bml0ID0gVHlwZW5hbWUuc3RhdGljXG5cbiAgbGV0IHJlZ2lzdGVyMCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSAodmFsIGNvbXB1dGUgOiBTKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgUy50eXBlbmFtZV9vZl90IGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUwIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCBjb21wdXRlIDogUzEpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzEudHlwZW5hbWVfb2ZfdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjIgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgY29tcHV0ZSA6IFMyKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMyLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMiB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjMgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgY29tcHV0ZSA6IFMzKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMzLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUzIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCBjb21wdXRlIDogUzQpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzQudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjUgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgY29tcHV0ZSA6IFM1KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM1LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlciAodHlwZSBhKSB0eXBlcmVwX29mX2EgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IGNvbXB1dGUgPSBjb21wdXRlXG4gICAgZW5kXG4gICAgaW5cbiAgICByZWdpc3RlcjAgKG1vZHVsZSBTIDogUylcbiAgOztcblxuICAoKiBJTVBMRU1FTlRBVElPTiAqKVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICBsZXQgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiAodHlwZSBhKSBhdXggPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQwIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQxIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID0gKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSA6IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDIgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMiAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgOiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDMgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMyAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDQgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYykgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ1IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5hKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5iKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5lKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgOztcblxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIGxldCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgc3RyaW5nID0gcmFpc2UgKE5vdF9pbXBsZW1lbnRlZCAoWC5uYW1lLCBzdHJpbmcpKVxuXG4gIGxldCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCBjb250ZW50ID1cbiAgICBtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgd2l0aFxuICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPiBhdXguZ2VuZXJpYyBjb250ZW50XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgcmVwIGluXG4gICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgXyA9IEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuS2V5KVxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcblxuICAgIGluY2x1ZGUgQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29tcHV0YXRpb24gPSBYXG4gIGluY2x1ZGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYKVxuXG4gIG1vZHVsZSBNZW1vID0gVHlwZW5hbWUuVGFibGUgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgWC5OYW1lZC50XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZWxwZXIgPSBIZWxwZXIgKFR5cGVyZXApIChDb21wdXRhdGlvbilcblxuICBsZXQgb2ZfdHlwZXJlcCByZXAgPVxuICAgIGxldCBjb250ZXh0ID0gWC5OYW1lZC5Db250ZXh0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBtZW1vX3RhYmxlID0gTWVtby5jcmVhdGUgMzIgaW5cbiAgICBsZXQgcmVjIG9mX3R5cGVyZXAgOiB0eXBlIGEuIGEgVHlwZXJlcC50IC0+IGEgdCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuSW50IC0+IFguaW50XG4gICAgICB8IFR5cGVyZXAuSW50MzIgLT4gWC5pbnQzMlxuICAgICAgfCBUeXBlcmVwLkludDY0IC0+IFguaW50NjRcbiAgICAgIHwgVHlwZXJlcC5OYXRpdmVpbnQgLT4gWC5uYXRpdmVpbnRcbiAgICAgIHwgVHlwZXJlcC5DaGFyIC0+IFguY2hhclxuICAgICAgfCBUeXBlcmVwLkZsb2F0IC0+IFguZmxvYXRcbiAgICAgIHwgVHlwZXJlcC5TdHJpbmcgLT4gWC5zdHJpbmdcbiAgICAgIHwgVHlwZXJlcC5CeXRlcyAtPiBYLmJ5dGVzXG4gICAgICB8IFR5cGVyZXAuQm9vbCAtPiBYLmJvb2xcbiAgICAgIHwgVHlwZXJlcC5Vbml0IC0+IFgudW5pdFxuICAgICAgfCBUeXBlcmVwLk9wdGlvbiByZXAgLT4gWC5vcHRpb24gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxpc3QgcmVwIC0+IFgubGlzdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuQXJyYXkgcmVwIC0+IFguYXJyYXkgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxhenkgcmVwIC0+IFgubGF6eV90IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5SZWYgcmVwIC0+IFgucmVmXyAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKSAtPiBYLmZ1bmN0aW9uXyAob2ZfdHlwZXJlcCBkb20pIChvZl90eXBlcmVwIHJuZylcbiAgICAgIHwgVHlwZXJlcC5UdXBsZSB0dXBsZSAtPlxuICAgICAgICAoKiBkbyBOT1Qgd3JpdGUgW1gudHVwbGUyIChvZl90eXBlcmVwIGEpIChvZl90eXBlcmVwIGIpXVxuICAgICAgICAgICBiZWNhdXNlIG9mX3R5cGVyZXAgY2FuIGNvbnRhaW4gYSBzaWRlIGVmZmVjdCBhbmQgW2FdIHNob3VsZCBiZSBleGVjdXRlZFxuICAgICAgICAgICBiZWZvcmUgW2JdICopXG4gICAgICAgIChtYXRjaCB0dXBsZSB3aXRoXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgWC50dXBsZTIgcmEgcmJcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgWC50dXBsZTMgcmEgcmIgcmNcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIFgudHVwbGU0IHJhIHJiIHJjIHJkXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBsZXQgcmUgPSBvZl90eXBlcmVwIGUgaW5cbiAgICAgICAgICAgWC50dXBsZTUgcmEgcmIgcmMgcmQgcmUpXG4gICAgICB8IFR5cGVyZXAuUmVjb3JkIHJlY29yZCAtPlxuICAgICAgICBYLnJlY29yZCAoSGVscGVyLm1hcF9yZWNvcmQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHJlY29yZClcbiAgICAgIHwgVHlwZXJlcC5WYXJpYW50IHZhcmlhbnQgLT5cbiAgICAgICAgWC52YXJpYW50IChIZWxwZXIubWFwX3ZhcmlhbnQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHZhcmlhbnQpXG4gICAgICB8IFR5cGVyZXAuTmFtZWQgKG5hbWVkLCBjb250ZW50KSAtPlxuICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZWQgaW5cbiAgICAgICAgKG1hdGNoIE1lbW8uZmluZCBtZW1vX3RhYmxlIHR5cGVuYW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBzaGFyZWQgLT4gWC5OYW1lZC5nZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIHsgZ2VuZXJpYyA9IG9mX3R5cGVyZXAgfSBuYW1lZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+XG4gICAgICAgICAgICAgICAgIGlmIFguTmFtZWQuc2hhcmUgY29udGVudFxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgc2hhcmVkID0gWC5OYW1lZC5pbml0IGNvbnRleHQgdHlwZW5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICBNZW1vLnNldCBtZW1vX3RhYmxlIHR5cGVuYW1lIHNoYXJlZDtcbiAgICAgICAgICAgICAgICAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgICAgICBYLk5hbWVkLnNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgICAgICAgIGVsc2Ugb2ZfdHlwZXJlcCBjb250ZW50KSkpXG4gICAgaW5cbiAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIHJlcCBpblxuICAgIGBnZW5lcmljIGNvbXB1dGF0aW9uXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkID1cbiAgICBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5hbWVkID0gWC50XG4gICAgICAgIHR5cGUgdCA9IFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgICB3aXRoIHR5cGUgdCA9IFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSkgb2ZfcDEgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICdhIG5hbWVkID0gJ2EgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgdCA9IHAxIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgICB3aXRoIHR5cGUgdCA9IHAxIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMikgb2ZfcDEgb2ZfcDIgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkID0gKCdhLCAnYikgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMykgb2ZfcDEgb2ZfcDIgb2ZfcDMgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZCA9ICgnYSwgJ2IsICdjKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCBwNSkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDUpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgZSA9IHA1XG5cbiAgICAgICAgbGV0IGUgPSBvZl9wNVxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudClcbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgOiBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgOiBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpIDogVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgWC50ID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgOlxuICBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgOlxuICBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgOlxuICBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIE5hbWUgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCByZWxhdGl2ZV90byA6IGRpcjpzdHJpbmcgLT4gdCAtPiBzdHJpbmdcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCByZWxhdGl2ZV90byB+ZGlyIHQgPVxuICAgIGlmIG5vdCAoU3RkbGliLkZpbGVuYW1lLmlzX3JlbGF0aXZlIHQpIHRoZW4gdCBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5jb25jYXQgZGlyIHRcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbF9kaXIgPVxuICBsZXQgZGlyX29yX2Vycm9yID1cbiAgICBtYXRjaCBTdGRsaWIuU3lzLmdldGN3ZCAoKSB3aXRoXG4gICAgfCB2IC0+IGBPayB2XG4gICAgfCBleGNlcHRpb24gZXhuIC0+IGBFeG4gZXhuXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoIGRpcl9vcl9lcnJvciB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRXhuIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbm1vZHVsZSBMb2NhdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbGVuYW1lIDogTmFtZS50XG4gICAgICA7IGxpbmVfbnVtYmVyIDogaW50XG4gICAgICA7IGxpbmVfc3RhcnQgOiBpbnRcbiAgICAgIDsgc3RhcnRfcG9zIDogaW50XG4gICAgICA7IGVuZF9wb3MgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcblxuICAgIGxldCB0X29mX3NleHAgPVxuICAgICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwMl8gPSBcImZpbGUubWwuTG9jYXRpb24uVC50XCIgaW5cbiAgICAgICBmdW4geF9fMDAzXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X3JlY29yZC5yZWNvcmRfb2Zfc2V4cFxuICAgICAgICAgICB+Y2FsbGVyOmVycm9yX3NvdXJjZV9fMDAyX1xuICAgICAgICAgICB+ZmllbGRzOlxuICAgICAgICAgICAgIChGaWVsZFxuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiZmlsZW5hbWVcIlxuICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgOyBjb252ID0gTmFtZS50X29mX3NleHBcbiAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibGluZV9udW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibGluZV9zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJzdGFydF9wb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiZW5kX3Bvc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9IEVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgIH5pbmRleF9vZl9maWVsZDooZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFwiZmlsZW5hbWVcIiAtPiAwXG4gICAgICAgICAgICAgfCBcImxpbmVfbnVtYmVyXCIgLT4gMVxuICAgICAgICAgICAgIHwgXCJsaW5lX3N0YXJ0XCIgLT4gMlxuICAgICAgICAgICAgIHwgXCJzdGFydF9wb3NcIiAtPiAzXG4gICAgICAgICAgICAgfCBcImVuZF9wb3NcIiAtPiA0XG4gICAgICAgICAgICAgfCBfIC0+IC0xKVxuICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOmZhbHNlXG4gICAgICAgICAgIH5jcmVhdGU6XG4gICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgKGZpbGVuYW1lLCAobGluZV9udW1iZXIsIChsaW5lX3N0YXJ0LCAoc3RhcnRfcG9zLCAoZW5kX3BvcywgKCkpKSkpKSA6IHQgLT5cbiAgICAgICAgICAgICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyOyBsaW5lX3N0YXJ0OyBzdGFydF9wb3M7IGVuZF9wb3MgfSlcbiAgICAgICAgICAgeF9fMDAzX1xuICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSB0X29mX3NleHBcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IGZpbGVuYW1lID0gZmlsZW5hbWVfXzAwNV9cbiAgICAgICAgICAgOyBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAwOV9cbiAgICAgICAgICAgOyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAxMV9cbiAgICAgICAgICAgOyBlbmRfcG9zID0gZW5kX3Bvc19fMDEzX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDRfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDE0XyA9IHNleHBfb2ZfaW50IGVuZF9wb3NfXzAxM18gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAxNF8gXSA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfaW50IHN0YXJ0X3Bvc19fMDExXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2ludCBsaW5lX3N0YXJ0X18wMDlfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfc3RhcnRcIjsgYXJnX18wMTBfIF1cbiAgICAgICAgICAgOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBsaW5lX251bWJlcl9fMDA3XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX251bWJlclwiOyBhcmdfXzAwOF8gXVxuICAgICAgICAgICA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA2XyA9IE5hbWUuc2V4cF9vZl90IGZpbGVuYW1lX18wMDVfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZpbGVuYW1lXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDRfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIGxldCBfID0gc2V4cF9vZl90XG5cbiAgICBsZXQgY29tcGFyZSA9XG4gICAgICAoZnVuIGFfXzAxNV8gYl9fMDE2XyAtPlxuICAgICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTVfIGJfXzAxNl9cbiAgICAgICAgIHRoZW4gMFxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIE5hbWUuY29tcGFyZSBhX18wMTVfLmZpbGVuYW1lIGJfXzAxNl8uZmlsZW5hbWUgd2l0aFxuICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5saW5lX251bWJlciBiX18wMTZfLmxpbmVfbnVtYmVyIHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8ubGluZV9zdGFydCBiX18wMTZfLmxpbmVfc3RhcnQgd2l0aFxuICAgICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5zdGFydF9wb3MgYl9fMDE2Xy5zdGFydF9wb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDE1Xy5lbmRfcG9zIGJfXzAxNl8uZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IGNvbXBhcmVcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuICBsZXQgYmVnaW5uaW5nX29mX2ZpbGUgZmlsZW5hbWUgPVxuICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyID0gMTsgbGluZV9zdGFydCA9IDA7IHN0YXJ0X3BvcyA9IDA7IGVuZF9wb3MgPSAwIH1cbiAgOztcblxuICBsZXQgb2Zfc291cmNlX2NvZGVfcG9zaXRpb24gKHBvcyA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpID1cbiAgICB7IGZpbGVuYW1lID0gTmFtZS5vZl9zdHJpbmcgKFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBwb3MucG9zX2ZuYW1lKVxuICAgIDsgbGluZV9udW1iZXIgPSBwb3MucG9zX2xudW1cbiAgICA7IGxpbmVfc3RhcnQgPSBwb3MucG9zX2JvbFxuICAgIDsgc3RhcnRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgOyBlbmRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfc3RyaW5nIDogdCAtPiB0IC0+IGludClcbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgZXhwZWN0ZWRfbGVuZ3RoID0gMzIgaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gZXhwZWN0ZWRfbGVuZ3RoXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmcsIHVuZXhwZWN0ZWQgbGVuZ3RoXCI7XG4gICAgZm9yIGkgPSAwIHRvIGV4cGVjdGVkX2xlbmd0aCAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gKClcbiAgICAgIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmdcIlxuICAgIGRvbmU7XG4gICAgc1xuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogU2FtZSBhcyB7IUJ5dGVzLmJsaXRfc3RyaW5nfSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cbiAgICBJZiBbc10gaXMgZW1wdHksIHRoZSByZXN1bHQgaXMgdGhlIHNpbmdsZXRvbiBsaXN0IFtbXCJcIl1dLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0ICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYWNjIC0+IGNoYXIgLT4gJ2FjYykgLT4gJ2FjYyAtPiBzdHJpbmcgLT4gJ2FjY1xuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYWNjIC0+ICdhY2MpIC0+IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJvcGVuISBCYXNlXG5vcGVuIEltcG9ydFxub3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxub3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIEJvZHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4YWN0IG9mIHN0cmluZ1xuICAgIHwgT3V0cHV0XG4gICAgfCBQcmV0dHkgb2YgJ2FcbiAgICB8IFVucmVhY2hhYmxlXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlLCBlcXVhbF1cblxuICBsZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAwNl8pIDogKChhX18wMDZfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDA2XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRXhhY3QgYXJnMF9fMDAyXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwMl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhhY3RcIjsgcmVzMF9fMDAzXyBdXG4gICAgICB8IE91dHB1dCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJPdXRwdXRcIlxuICAgICAgfCBQcmV0dHkgYXJnMF9fMDA0XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA1XyA9IF9vZl9hX18wMDFfIGFyZzBfXzAwNF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUHJldHR5XCI7IHJlczBfXzAwNV8gXVxuICAgICAgfCBVbnJlYWNoYWJsZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbnJlYWNoYWJsZVwiXG4gIDs7XG5cbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDdfIGJfXzAwOF8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwN18gYl9fMDA4X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA3XywgYl9fMDA4XyB3aXRoXG4gICAgICB8IEV4YWN0IF9hX18wMDlfLCBFeGFjdCBfYl9fMDEwXyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDA5XyBfYl9fMDEwX1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gMVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiAwXG4gICAgICB8IE91dHB1dCwgXyAtPiAtMVxuICAgICAgfCBfLCBPdXRwdXQgLT4gMVxuICAgICAgfCBQcmV0dHkgX2FfXzAxMV8sIFByZXR0eSBfYl9fMDEyXyAtPiBfY21wX19hIF9hX18wMTFfIF9iX18wMTJfXG4gICAgICB8IFByZXR0eSBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFByZXR0eSBfIC0+IDFcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IDApXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEzXyBiX18wMTRfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTNfIGJfXzAxNF9cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxM18sIGJfXzAxNF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDE1XywgRXhhY3QgX2JfXzAxNl8gLT4gZXF1YWxfc3RyaW5nIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgRXhhY3QgXyAtPiBmYWxzZVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiB0cnVlXG4gICAgICB8IE91dHB1dCwgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBPdXRwdXQgLT4gZmFsc2VcbiAgICAgIHwgUHJldHR5IF9hX18wMTdfLCBQcmV0dHkgX2JfXzAxOF8gLT4gX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiBmYWxzZVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gdHJ1ZSlcbiAgOztcblxuICBsZXQgXyA9IGVxdWFsXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWFwX3ByZXR0eSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IChFeGFjdCBfIHwgT3V0cHV0IHwgVW5yZWFjaGFibGUpIGFzIHQgLT4gdFxuICAgIHwgUHJldHR5IHggLT4gUHJldHR5IChmIHgpXG4gIDs7XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyB0YWcgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYm9keSA6ICdhIEJvZHkudFxuICA7IGV4dGlkX2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIDsgYm9keV9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbmxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE5X1xuICAgIHsgdGFnID0gdGFnX18wMjFfXG4gICAgOyBib2R5ID0gYm9keV9fMDIzX1xuICAgIDsgZXh0aWRfbG9jYXRpb24gPSBleHRpZF9sb2NhdGlvbl9fMDI1X1xuICAgIDsgYm9keV9sb2NhdGlvbiA9IGJvZHlfbG9jYXRpb25fXzAyN19cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAyMF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI4XyA9IEZpbGUuTG9jYXRpb24uc2V4cF9vZl90IGJvZHlfbG9jYXRpb25fXzAyN18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5X2xvY2F0aW9uXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNl8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBleHRpZF9sb2NhdGlvbl9fMDI1XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4dGlkX2xvY2F0aW9uXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNF8gPSBCb2R5LnNleHBfb2ZfdCBfb2ZfYV9fMDE5XyBib2R5X18wMjNfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keVwiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjJfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdGFnX18wMjFfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidGFnXCI7IGFyZ19fMDIyXyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMjBfXG47O1xuXG5sZXQgXyA9IHNleHBfb2ZfdFxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDI5XyBiX18wMzBfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDI5XyBiX18wMzBfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBjb21wYXJlX29wdGlvbiBjb21wYXJlX3N0cmluZyBhX18wMjlfLnRhZyBiX18wMzBfLnRhZyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAobWF0Y2ggQm9keS5jb21wYXJlIF9jbXBfX2EgYV9fMDI5Xy5ib2R5IGJfXzAzMF8uYm9keSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAobWF0Y2ggRmlsZS5Mb2NhdGlvbi5jb21wYXJlIGFfXzAyOV8uZXh0aWRfbG9jYXRpb24gYl9fMDMwXy5leHRpZF9sb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCAwIC0+IEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmJvZHlfbG9jYXRpb24gYl9fMDMwXy5ib2R5X2xvY2F0aW9uXG4gICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgfCBuIC0+IG4pXG4gICAgfCBuIC0+IG4pXG47O1xuXG5sZXQgXyA9IGNvbXBhcmVcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAzNV8gYl9fMDM2XyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAzNV8gYl9fMDM2X1xuICB0aGVuIHRydWVcbiAgZWxzZVxuICAgIFN0ZGxpYi4oICYmIClcbiAgICAgIChlcXVhbF9vcHRpb24gZXF1YWxfc3RyaW5nIGFfXzAzNV8udGFnIGJfXzAzNl8udGFnKVxuICAgICAgKFN0ZGxpYi4oICYmIClcbiAgICAgICAgIChCb2R5LmVxdWFsIF9jbXBfX2EgYV9fMDM1Xy5ib2R5IGJfXzAzNl8uYm9keSlcbiAgICAgICAgIChTdGRsaWIuKCAmJiApXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmV4dGlkX2xvY2F0aW9uIGJfXzAzNl8uZXh0aWRfbG9jYXRpb24pXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmJvZHlfbG9jYXRpb24gYl9fMDM2Xy5ib2R5X2xvY2F0aW9uKSkpXG47O1xuXG5sZXQgXyA9IGVxdWFsXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHN0cmluZyB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChmdW4geF9fMDQxXyAtPiBzZXhwX29mX3Qgc2V4cF9vZl9zdHJpbmcgeF9fMDQxXyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzA0Ml8gYl9fMDQzXyAtPiBjb21wYXJlIGNvbXBhcmVfc3RyaW5nIGFfXzA0Ml8gYl9fMDQzXyA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWFwX3ByZXR0eSB0IH5mID0geyB0IHdpdGggYm9keSA9IEJvZHkubWFwX3ByZXR0eSB0LmJvZHkgfmYgfVxuIiwibW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgRmlsZSA9IEZpbGVcbiAgbW9kdWxlIEV4cGVjdGF0aW9uID0gRXhwZWN0YXRpb25cbmVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSB1c2UgW0V4cGVjdF90ZXN0X2NvbW1vbl0gaW5zdGVhZFwiXVxuXG5pbmNsdWRlIFN0ZCBbQEBhbGVydCBcIi1kZXByZWNhdGVkXCJdXG4iLCJtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBDUiAoKiogTGVhdmVzIGEgQ1IsIHNvIHRoYXQgZmVhdHVyZXMgY2Fubm90IGJlIHJlbGVhc2VkLiAqKVxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nICgqKiBPbmx5IGZvciBwcHhfZXhwZWN0IHRlc3Rpbmc7IGRvIG5vdCB1c2UuICopXG4gICAgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIElPIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICBlbmRcblxuICAoKiogUnVuIGFuIElPIG9wZXJhdGlvbiB1bnRpbCBjb21wbGV0aW9uICopXG4gIHZhbCBydW4gOiAodW5pdCAtPiB1bml0IElPLnQpIC0+IHVuaXRcblxuICAoKiogW3Nhbml0aXplXSBjYW4gYmUgdXNlZCB0byBtYXAgYWxsIG91dHB1dCBzdHJpbmdzLCBlLmcuIGZvciBjbGVhbnNpbmcuICopXG4gIHZhbCBzYW5pdGl6ZSA6IHN0cmluZyAtPiBzdHJpbmdcblxuXG4gICgqKiBbdXBvbl91bnJlbGVhc2FibGVfaXNzdWVdIHNwZWNpZmllcyBob3cgdG8gZGVhbCB3aXRoIG91dHB1dCB0aGF0IHNob3VsZCBub3QgYmVcbiAgICAgIHJlbGVhc2VkIGV2ZW4gaWYgaXQgaXMgYWNjZXB0ZWQgKGUuZy4gYmFja3RyYWNlcykuIFRoZSBkZWZhdWx0IGlzIFtgQ1JdLiAgKilcbiAgdmFsIHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuZW5kXG5cbigqKiBDb25maWd1cmF0aW9uIGZvciBydW5uaW5nIGV4cGVjdCB0ZXN0cyAqKVxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID0gc2lnXG4gICgqKiBUbyBjb25maWd1cmUgZXhwZWN0X3Rlc3QsIGFkZCB0aGUgZm9sbG93aW5nIGF0IHRoZSB0b3Agb2YgeW91ciAubWwgZmlsZSwgb3IgaW4gc29tZVxuICAgICAgaW1wb3J0Lm1sOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdcbiAgICAgICAgICBsZXQgcHJlX3JlZGlyZWN0X2hvb2sgKCkgPSAuLi5cbiAgICAgICAgZW5kXG4gICAgICBdfVxuXG4gICAgICBOb3RlIHRoYXQgc2luY2UgYWxsIGV4cGVjdCB0ZXN0IGFyZSBhbHNvIGlubGluZSB0ZXN0cywgdGhlIGlubGluZSB0ZXN0IGNvbmZpZ3VyYXRpb25cbiAgICAgIGFsc28gYXBwbGllcyB0byBhbGwgZXhwZWN0IHRlc3QuXG4gICopXG5cbiAgbW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgY29tbWVudF9wcmVmaXggOiB0IC0+IHN0cmluZ1xuXG4gICAgKCoqIE1lc3NhZ2UgdG8gcHJpbnQgd2hlbiBhbiBleHBlY3RhdGlvbiBjb250YWlucyBhIGJhY2t0cmFjZSAqKVxuICAgIHZhbCBtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlIDogdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IFNcbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlNcblxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID1cbiAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzXG5cbm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gdDEgPSB0MlxuXG4gIGxldCBjb21tZW50X3ByZWZpeCA9IGZ1bmN0aW9uXG4gICAgfCBgQ1IgLT4gXCJDUiBcIlxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nIC0+IFwiXCJcbiAgOztcblxuICBsZXQgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSB0ID1cbiAgICBQcmludGYuc3ByaW50ZlxuICAgICAge3xcbigqICVzZXhwZWN0X3Rlc3RfY29sbGVjdG9yOiBUaGlzIHRlc3QgZXhwZWN0YXRpb24gYXBwZWFycyB0byBjb250YWluIGEgYmFja3RyYWNlLlxuICAgVGhpcyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBhcyBiYWNrdHJhY2VzIGFyZSBmcmFnaWxlLlxuICAgUGxlYXNlIGNoYW5nZSB0aGlzIHRlc3QgdG8gbm90IGluY2x1ZGUgYSBiYWNrdHJhY2UuICopXG5cbnx9XG4gICAgICAoY29tbWVudF9wcmVmaXggdClcbiAgOztcbmVuZFxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjhcXDAwMFxcMDA1XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAwNlxcMDAwXFwwODVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA0MFxcMDAwXFwwMzFcXDAwMFxcMDQ2XFwwMDBcXDA0OFxcMDAwXFwwMDdcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDA2MlxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDEwM1xcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDVcXDAwMFxcMDk1XFwwMDBcXDEwN1xcMDAwXFwwOTVcXDAwMFxcMTEzXFwwMDBcXDAxMFxcMDAwXFwxMDRcXDAwMFxcXG4gICAgXFwxMDRcXDAwMFxcMTE2XFwwMDBcXDEwNFxcMDAwXFwxMjJcXDAwMFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMTFcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTI1XFwwMDBcXDEyN1xcMDAwXFwwMTJcXDAwMFxcMTI2XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDExOVxcMDAwXFwxMjJcXDAwMFxcMDEzXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMTJcXDAwMFxcMDM5XFwwMDBcXDAxMlxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDYxXFwwMDBcXDA3MVxcMDAwXFwwNTlcXDAwMFxcMDg2XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDNcXDAwMFxcMDI5XFwwMDBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDE4XFwwMDBcXDAyN1xcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDI2XFwwMDBcXDAxNlxcMDAwXFwwMDVcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjJcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMDMwXFwwMDBcXDAxM1xcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFxcbiAgICBcXDAzOFxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNjBcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTZcXDAwMFxcMDU4XFwwMDBcXDA2MlxcMDAwXFwwNDZcXDAwMFxcMDYzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAzM1xcMDAwXFwwMzhcXDAwMFxcMDQzXFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNjBcXDAwMFxcMDcwXFwwMDBcXDA4MFxcMDAwXFwwODVcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjhcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMTdcXDAwMFxcMDI2XFwwMDBcXDAyNFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMjVcXDAwMFxcMDE1XFwwMDBcXDAwNFxcMDAwXFwwMTBcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDA5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDM3XFwwMDBcXDAzOVxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDYxXFwwMDBcXDA0NFxcMDAwXFwwNjJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgY2hlY2sgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjMgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxNjggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG5vdF9hdF9ib3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiA0NFxuYW5kIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxODAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDkgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgKCBub3RfYXRfYm9zIGxleGJ1ZiApXG4jIDE4NSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDIgLT5cbiMgMTAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAoIGZhbHNlIClcbiMgMTkwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMiBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gXG4gIGxldCBjb250YWluc19iYWNrdHJhY2VzIHMgPSBjaGVjayAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiMgMjAxIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuIiwib3BlbiBFeHBlY3RfdGVzdF9jb21tb25cbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuXG5tb2R1bGUgVGVzdF9vdXRjb21lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBmaWxlX2RpZ2VzdCA6IEZpbGUuRGlnZXN0LnRcbiAgICA7IGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gICAgOyBleHBlY3RhdGlvbnMgOiBFeHBlY3RhdGlvbi5SYXcudCBsaXN0XG4gICAgOyB1bmNhdWdodF9leG5fZXhwZWN0YXRpb24gOiBFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICA7IHNhdmVkX291dHB1dCA6IChGaWxlLkxvY2F0aW9uLnQgKiBzdHJpbmcpIGxpc3RcbiAgICA7IHRyYWlsaW5nX291dHB1dCA6IHN0cmluZ1xuICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuICAgIDsgdW5jYXVnaHRfZXhuIDogKGV4biAqIFByaW50ZXhjLnJhd19iYWNrdHJhY2UpIG9wdGlvblxuICAgIH1cbmVuZFxuXG5sZXQgdGVzdHNfcnVuIDogVGVzdF9vdXRjb21lLnQgbGlzdCByZWYgPSByZWYgW11cblxubGV0IHByb3RlY3QgfmZpbmFsbHkgfmYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+XG4gICAgZmluYWxseSAoKTtcbiAgICB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICBmaW5hbGx5ICgpO1xuICAgIHJhaXNlIGVcbjs7XG5cbm1vZHVsZSBDdXJyZW50X2ZpbGUgPSBzdHJ1Y3RcbiAgbGV0IGN1cnJlbnQgPSByZWYgTm9uZVxuXG4gIGxldCBzZXQgfmFic29sdXRlX2ZpbGVuYW1lID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGN1cnJlbnQgOj0gU29tZSBhYnNvbHV0ZV9maWxlbmFtZVxuICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLnNldDogYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCB1bnNldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBfIC0+IGN1cnJlbnQgOj0gTm9uZVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci51bnNldDogbm90IHNldFwiXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBmbiAtPiBmblxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5nZXQ6IG5vdCBzZXRcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzYXZlZCA6IChGaWxlLkxvY2F0aW9uLnQgKiBpbnQpIGxpc3RcbiAgICA7IGNoYW4gOiBvdXRfY2hhbm5lbFxuICAgIDsgZmlsZW5hbWUgOiBGaWxlLk5hbWUudFxuICAgIH1cblxuICBleHRlcm5hbCBiZWZvcmVfdGVzdFxuICAgIDogIG91dHB1dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XCJcblxuICBleHRlcm5hbCBhZnRlcl90ZXN0XG4gICAgOiAgc3Rkb3V0Om91dF9jaGFubmVsXG4gICAgLT4gc3RkZXJyOm91dF9jaGFubmVsXG4gICAgLT4gdW5pdFxuICAgID0gXCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcIlxuXG4gIGxldCBnZXRfcG9zaXRpb24gKCkgPSBwb3Nfb3V0IHN0ZG91dFxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIGxldCBmaWxlbmFtZSA9IEZpbGVuYW1lLnRlbXBfZmlsZSBcImV4cGVjdC10ZXN0XCIgXCJvdXRwdXRcIiBpblxuICAgIGxldCBjaGFuID0gb3Blbl9vdXRfYmluIGZpbGVuYW1lIGluXG4gICAgYmVmb3JlX3Rlc3Qgfm91dHB1dDpjaGFuIH5zdGRvdXQgfnN0ZGVycjtcbiAgICB7IGNoYW47IGZpbGVuYW1lID0gRmlsZS5OYW1lLm9mX3N0cmluZyBmaWxlbmFtZTsgc2F2ZWQgPSBbXSB9XG4gIDs7XG5cbiAgbGV0IHJlbGF0aXZlX2ZpbGVuYW1lIHQgPSBGaWxlLk5hbWUucmVsYXRpdmVfdG8gfmRpcjooRmlsZS5pbml0aWFsX2RpciAoKSkgdC5maWxlbmFtZVxuXG4gIGxldCB3aXRoX2ljIGZuYW1lIH5mID1cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIHByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBjbG9zZV9pbiBpYykgfmY6KGZ1biAoKSAtPiBmIGljKVxuICA7O1xuXG4gIGxldCBjdXJyZW50X3Rlc3QgOiAoRmlsZS5Mb2NhdGlvbi50ICogdCkgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG4gIGxldCBhbV9ydW5uaW5nX2V4cGVjdF90ZXN0ICgpID0gT3B0aW9uLmlzX3NvbWUgIWN1cnJlbnRfdGVzdFxuXG4gIGxldCBnZXRfY3VycmVudCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgfCBTb21lIChfLCB0KSAtPiB0XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkluc3RhbmNlLmdldF9jdXJyZW50IGNhbGxlZCBvdXRzaWRlIGEgdGVzdC5cIlxuICA7O1xuXG4gIGxldCBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkXG4gIDs7XG5cbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgbGV0IHByZXZfcG9zID1cbiAgICAgIG1hdGNoIHQuc2F2ZWQgd2l0aFxuICAgICAgfCBbXSAtPiAwXG4gICAgICB8IChfLCBwcmV2X3BvcykgOjogXyAtPiBwcmV2X3Bvc1xuICAgIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZDtcbiAgICBmbHVzaCB0LmNoYW47XG4gICAgbGV0IGxlbiA9IHBvcyAtIHByZXZfcG9zIGluXG4gICAgd2l0aF9pYyAocmVsYXRpdmVfZmlsZW5hbWUgdCkgfmY6KGZ1biBpYyAtPlxuICAgICAgc2Vla19pbiBpYyBwcmV2X3BvcztcbiAgICAgIHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuKVxuICA7O1xuZW5kXG5cbmxldCBhbV9ydW5uaW5nX2V4cGVjdF90ZXN0ID0gSW5zdGFuY2UuYW1fcnVubmluZ19leHBlY3RfdGVzdFxuXG5sZXQgZmx1c2ggKCkgPVxuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCk7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuZXJyX2Zvcm1hdHRlciAoKTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRvdXQ7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gIGxldCBpbnN0YW5jZSA9IEluc3RhbmNlLmdldF9jdXJyZW50ICgpIGluXG4gIGZsdXNoICgpO1xuICBJbnN0YW5jZS5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggaW5zdGFuY2UgbG9jYXRpb25cbjs7XG5cbm1vZHVsZSBNYWtlIChDIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlMpID0gc3RydWN0XG4gIG1vZHVsZSBJbnN0YW5jZV9pbyA6IHNpZ1xuICAgIHZhbCBzYXZlX291dHB1dCA6IEZpbGUuTG9jYXRpb24udCAtPiB1bml0XG4gICAgdmFsIHNhdmVfYW5kX3JldHVybl9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gc3RyaW5nXG5cbiAgICB2YWwgZXhlY1xuICAgICAgOiAgZmlsZV9kaWdlc3Q6RmlsZS5EaWdlc3QudFxuICAgICAgLT4gbG9jYXRpb246RmlsZS5Mb2NhdGlvbi50XG4gICAgICAtPiBleHBlY3RhdGlvbnM6RXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgICAgLT4gdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uOkV4cGVjdGF0aW9uLlJhdy50IG9wdGlvblxuICAgICAgLT4gZjoodW5pdCAtPiB1bml0IEMuSU8udClcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgb3BlbiBJbnN0YW5jZVxuXG4gICAgbGV0IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyBsZW4gPVxuICAgICAgbGV0IHMgPSByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB8PiBDLnNhbml0aXplIGluXG4gICAgICBpZiBub3QgKENoZWNrX2JhY2t0cmFjZXMuY29udGFpbnNfYmFja3RyYWNlcyBzKVxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAubWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZVxuICAgICAgICAgIEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgXiBzXG4gICAgOztcblxuICAgIGxldCBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0ID1cbiAgICAgIFN5cy5jaGRpciAoRmlsZS5pbml0aWFsX2RpciAoKSk7XG4gICAgICBsZXQgbGFzdF9vZnMgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICAgIGFmdGVyX3Rlc3QgfnN0ZG91dCB+c3RkZXJyO1xuICAgICAgY2xvc2Vfb3V0IHQuY2hhbjtcbiAgICAgIGxldCBmbmFtZSA9IHJlbGF0aXZlX2ZpbGVuYW1lIHQgaW5cbiAgICAgIHByb3RlY3RcbiAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPiBTeXMucmVtb3ZlIGZuYW1lKVxuICAgICAgICB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgd2l0aF9pYyBmbmFtZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICBsZXQgb2ZzLCBvdXRwdXRzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgdC5zYXZlZClcbiAgICAgICAgICAgICAgICB+aW5pdDooMCwgW10pXG4gICAgICAgICAgICAgICAgfmY6KGZ1biAob2ZzLCBhY2MpIChsb2MsIG5leHRfb2ZzKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgKG5leHRfb2ZzIC0gb2ZzKSBpblxuICAgICAgICAgICAgICAgICAgbmV4dF9vZnMsIChsb2MsIHMpIDo6IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhaWxpbmdfb3V0cHV0ID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChsYXN0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dHMsIHRyYWlsaW5nX291dHB1dCkpXG4gICAgOztcblxuICAgIGxldCBzYXZlX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBmbHVzaCAoKTtcbiAgICAgIHNhdmVfb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvblxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBmbHVzaCAoKTtcbiAgICAgIHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uXG4gICAgOztcblxuICAgIGxldCAoKSA9XG4gICAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIChsb2MsIHQpIC0+XG4gICAgICAgICAgbGV0IGJsb2NrcywgdHJhaWxpbmcgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICAgICAgICAgIEVycm9yOiBwcm9ncmFtIGV4aXRlZCB3aGlsZSBleHBlY3QgdGVzdCB3YXMgcnVubmluZyFcXG5cXFxuICAgICAgICAgICAgIE91dHB1dCBjYXB0dXJlZCBzbyBmYXI6XFxuXFxcbiAgICAgICAgICAgICAlIVwiXG4gICAgICAgICAgICAoRmlsZS5OYW1lLnRvX3N0cmluZyBsb2MuZmlsZW5hbWUpXG4gICAgICAgICAgICBsb2MubGluZV9udW1iZXJcbiAgICAgICAgICAgIChsb2Muc3RhcnRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpXG4gICAgICAgICAgICAobG9jLmVuZF9wb3MgLSBsb2MubGluZV9zdGFydCk7XG4gICAgICAgICAgTGlzdC5pdGVyIGJsb2NrcyB+ZjooZnVuIChfLCBzKSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzKTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzJSFcIiB0cmFpbGluZylcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgfmZpbGVfZGlnZXN0IH5sb2NhdGlvbiB+ZXhwZWN0YXRpb25zIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb24gfmYgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIGN1cnJlbnRfdGVzdCA6PSBTb21lIChsb2NhdGlvbiwgdCk7XG4gICAgICBsZXQgZmluYWxseSB1bmNhdWdodF9leG4gPVxuICAgICAgICBDLnJ1biAoZnVuICgpIC0+XG4gICAgICAgICAgQy5JTy5yZXR1cm5cbiAgICAgICAgICAgIChmbHVzaCAoKTtcbiAgICAgICAgICAgICBjdXJyZW50X3Rlc3QgOj0gTm9uZTtcbiAgICAgICAgICAgICBsZXQgc2F2ZWRfb3V0cHV0LCB0cmFpbGluZ19vdXRwdXQgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgICAgdGVzdHNfcnVuXG4gICAgICAgICAgICAgOj0geyBmaWxlX2RpZ2VzdFxuICAgICAgICAgICAgICAgIDsgbG9jYXRpb25cbiAgICAgICAgICAgICAgICA7IGV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgICAgICAgICAgOyBzYXZlZF9vdXRwdXRcbiAgICAgICAgICAgICAgICA7IHRyYWlsaW5nX291dHB1dFxuICAgICAgICAgICAgICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogIXRlc3RzX3J1bikpXG4gICAgICBpblxuICAgICAgbWF0Y2ggQy5ydW4gZiB3aXRoXG4gICAgICB8ICgpIC0+IGZpbmFsbHkgTm9uZVxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICAgIGZpbmFsbHkgKFNvbWUgKGV4biwgYnQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzYXZlX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfb3V0cHV0XG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9hbmRfcmV0dXJuX291dHB1dFxuXG4gIGxldCBydW5cbiAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgIH4obG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnQpXG4gICAgICAgIH5hYnNvbHV0ZV9maWxlbmFtZTpkZWZpbmVkX2luXG4gICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICB+dGFnc1xuICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgfmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgICBmXG4gICAgPVxuICAgIFBweF9pbmxpbmVfdGVzdF9saWIudGVzdFxuICAgICAgfmNvbmZpZzppbmxpbmVfdGVzdF9jb25maWdcbiAgICAgIH5kZXNjcjpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAobWF0Y2ggZGVzY3JpcHRpb24gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgcyAtPiBzKSlcbiAgICAgIH50YWdzXG4gICAgICB+ZmlsZW5hbWU6KEZpbGUuTmFtZS50b19zdHJpbmcgbG9jYXRpb24uZmlsZW5hbWUpXG4gICAgICB+bGluZV9udW1iZXI6bG9jYXRpb24ubGluZV9udW1iZXJcbiAgICAgIH5zdGFydF9wb3M6KGxvY2F0aW9uLnN0YXJ0X3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICB+ZW5kX3BvczoobG9jYXRpb24uZW5kX3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yID0gQ3VycmVudF9maWxlLmdldCAoKSBpblxuICAgICAgICAgaWYgZGVmaW5lZF9pbiA8PiByZWdpc3RlcmluZ190ZXN0c19mb3JcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICBcIlRyeWluZyB0byBydW4gYW4gZXhwZWN0IHRlc3QgZnJvbSB0aGUgd3JvbmcgZmlsZS5cXG5cXFxuICAgICAgICAgICAgICAtIHRlc3QgZGVjbGFyZWQgYXQgJXM6JWRcXG5cXFxuICAgICAgICAgICAgICAtIHRyeWluZyB0byBydW4gaXQgZnJvbSAlc1xcblwiXG4gICAgICAgICAgICAgZGVmaW5lZF9pblxuICAgICAgICAgICAgIGxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgKCogVG8gYXZvaWQgY2FwdHVyaW5nIG5vdC15ZXQgZmx1c2hlZCBkYXRhIG9mIHRoZSBzdGRvdXQgYnVmZmVyICopXG4gICAgICAgICAgIEMucnVuIChmdW4gKCkgLT4gQy5JTy5yZXR1cm4gKGZsdXNoICgpKSk7XG4gICAgICAgICAgIEluc3RhbmNlX2lvLmV4ZWNcbiAgICAgICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICB+bG9jYXRpb25cbiAgICAgICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgIH5mO1xuICAgICAgICAgICB0cnVlKSlcbiAgOztcbmVuZFxuW0BAaW5saW5lIG5ldmVyXVxuXG5sZXQgdGVzdHNfcnVuICgpID1cbiAgKCogV2UgcHJlcGVuZCB0ZXN0cyB3aGVuIHdlIGVuY291bnRlciB0aGVtLCBzbyByZXZlcnNlIHRoZSBsaXN0IHRvIHJlaW5zdGF0ZSBvcmRlciAqKVxuICBMaXN0LnJldiAhdGVzdHNfcnVuXG47O1xuIiwibW9kdWxlIElPID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHJldHVybiB4ID0geFxuZW5kXG5cbmxldCBzYW5pdGl6ZSBzID0gc1xubGV0IHJ1biBmID0gZiAoKVxubGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gYENSXG4iLCJtb2R1bGUgUHB4X3NleHBfY29udl9saWIgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3JcbiAgbW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbiAgbW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5lbmRcblxubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG4iLCIoKiBUaGlzIG1vZHVsZSBidWlsZHMgYSBidWZmZXIgb2YgXCJpbnN0cnVjdGlvbnNcIiwgaW4gb3JkZXIgdG8gcmVwcmVzZW50IGEgY29tcGFjdCBzZXF1ZW5jZVxuICAgb2YgZGVsaW1pdGluZyBwb3NpdGlvbnMgYW5kIG5ld2xpbmVzLiBUaGUgcGFyc2VyIHN0b3JlcyB0aGUgcG9zaXRpb25zIG9mIGVhY2g6XG5cbiAgIC0gbmV3bGluZVxuICAgLSBiZWdpbm5pbmcgb2YgYXRvbVxuICAgLSBlbmQgb2YgYXRvbVxuICAgLSBsZWZ0IHBhcmVudGhlc2lzXG4gICAtIHJpZ2h0IHBhcmVudGhlc2lzXG5cbiAgIEluc3RydWN0aW9ucyBhcmUgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIGJpdHMuIFRoZSBuZXh0IGluc3RydWN0aW9uIGlzIGRldGVybWluZWQgYnlcbiAgIGxvb2tpbmcgYXQgdGhlIG5leHQgZmV3IGJpdHM6XG5cbiAgIC0gYml0IDAgcmVwcmVzZW50cyBhIHNhdmVkIHBvc2l0aW9uIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMCByZXByZXNlbnQgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMCBhcmUgZm9sbG93ZWQgYnkgNSBiaXRzIG9mIHBheWxvYWQuIFRoZSA1LWJpdCBwYXlsb2FkcyBvZiBhbnkgc3Vic2VxdWVudCAxMTAtXG4gICAgIGluc3RydWN0aW9ucyBhcmUgc3F1YXNoZWQgdG8gZm9ybSBhIG51bWJlciAobGVhc3Qgc2lnbmlmaWNhbnQgNS1iaXQgY2h1bmsgZmlyc3QpLlxuICAgICBUaGlzIG51bWJlciArIDUgcmVwcmVzZW50cyBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTExMCBtYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IGxpbmUgKHdpdGggb2Zmc2V0IGluY3JlbWVudGVkKVxuICAgLSBiaXRzIDExMTEgcmVwcmVzZW50IGEgcG9zaXRpb24gc2F2ZWQgdHdpY2UgZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuXG4gICBGb3IgaW5zdGFuY2UgbGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXhwOlxuXG4gICB7W1xuICAgICB7fFxuKGFiY1xuICAgICAgXCJmb29cbiBiYXJcIlxuKVxufH1cbiAgIF19XG5cbiAgIHRoZSBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gcmVjb3JkIGluIG9yZGVyIHRvIHJlY29uc3RydWN0IHRoZSBwb3NpdGlvbiBvZiBhbnlcbiAgIHN1Yi1zZXhwIGlzOlxuXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGZpcnN0ICcoJ1xuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImFiY1wiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiYWJjXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAxIGFkdmFuY2UgNlxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAwIGFkdmFuY2UgNVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGxhc3QgJyknXG5cbiAgICh3ZSBzYXZlIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY2xvc2luZyBwYXJlbnRoZXNpcylcblxuICAgVGhlIHRvdGFsIHNlcXVlbmNlIGlzIDQyIGJpdHMsIHNvIHdlIG5lZWQgNiBieXRlcyB0byBzdG9yZSBpdFxuXG4gICBUaGUgc2VxdWVuY2Ugb2YgYml0cyBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgMTYtYml0IHZhbHVlcywgd2hlcmUgdGhlIGVhcmxpZXIgYml0c1xuICAgYXJlIG1vc3Qgc2lnbmlmaWNhbnQuXG5cbiAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIHN0b3JlcyB0aGUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUuIFRoaXMgd2F5IG9ubHkgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgcmVxdWlyZSBhIGRvdWJsZSBwb3NpdGlvbnMuIElmIHdlIHdlcmUgc3RvcmluZyBlbmQgcG9zaXRpb25zIGFzXG4gICBleGNsdXNpdmUsIHdlIHdvdWxkIG5lZWQgZG91YmxlIHBvc2l0aW9ucyBmb3IgWykoXSBhbmQgW2EoXSwgd2hpY2ggYXJlIGxpa2VseSB0byBiZVxuICAgZnJlcXVlbnQgaW4gcy1leHByZXNzaW9ucyBwcmludGVkIHdpdGggdGhlIG5vbiBbX2h1bV0gcHJpbnRlci4gV2UgZXhwZWN0IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHRvIGJlIGxlc3MgZnJlcXVlbnQgc28gaXQgbWFrZXMgc2Vuc2UgdG8gcGVuYWxpemUgdGhlbSBpbnN0ZWFkLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zID1cbiAgeyBsaW5lIDogaW50XG4gIDsgY29sIDogaW50XG4gIDsgb2Zmc2V0IDogaW50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9wb3MgPVxuICAoZnVuIHsgbGluZSA9IGxpbmVfXzAwMl87IGNvbCA9IGNvbF9fMDA0Xzsgb2Zmc2V0ID0gb2Zmc2V0X18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgb2Zmc2V0X18wMDZfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mZnNldFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2ZfaW50IGNvbF9fMDA0XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb2xcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2ludCBsaW5lX18wMDJfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiBwb3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcG9zID0gU3RkbGliLmNvbXBhcmVcbmxldCBiZWdpbm5pbmdfb2ZfZmlsZSA9IHsgbGluZSA9IDE7IGNvbCA9IDA7IG9mZnNldCA9IDAgfVxubGV0IHNoaWZ0X3BvcyBwb3MgfmNvbHMgPSB7IHBvcyB3aXRoIGNvbCA9IHBvcy5jb2wgKyBjb2xzOyBvZmZzZXQgPSBwb3Mub2Zmc2V0ICsgY29scyB9XG5cbnR5cGUgcmFuZ2UgPVxuICB7IHN0YXJ0X3BvcyA6IHBvc1xuICA7IGVuZF9wb3MgOiBwb3NcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3JhbmdlID1cbiAgKGZ1biB7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDA5XzsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxMV8gfSAtPlxuICAgICBsZXQgYm5kc19fMDA4XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX3BvcyBlbmRfcG9zX18wMTFfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX3BvcyBzdGFydF9wb3NfXzAwOV8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDhfXG4gICAgIDogcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcmFuZ2UgPSBTdGRsaWIuY29tcGFyZVxuXG5sZXQgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zID1cbiAgeyBzdGFydF9wb3M7IGVuZF9wb3MgPSBzaGlmdF9wb3MgbGFzdF9wb3MgfmNvbHM6MSB9XG47O1xuXG5tb2R1bGUgQ2h1bmsgOiBzaWdcbiAgKCoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgW2xlbmd0aC8yXSBzaWduZWQgMTYtYml0IHZhbHVlcyAqKVxuICB0eXBlIHRcblxuICAoKiogTGVuZ3RoIGluIGJ5dGVzLiAqKVxuICB2YWwgbGVuZ3RoIDogaW50XG5cbiAgdmFsIGFsbG9jIDogdW5pdCAtPiB0XG5cbiAgKCoqIFtnZXQxNiB+cG9zXSBhbmQgW3NldDE2IH5wb3NdIG1hbmlwdWxhdGUgdGhlIFtwb3MvMl10aCBzdG9yZWQgdmFsdWUuXG4gICAgICBbcG9zXSBtdXN0IGJlIGV2ZW4uXG4gICAgICBbc2V0MTYgeF0gb25seSB1c2VzIHRoZSAxNiBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFt4XS4gKilcbiAgdmFsIGdldDE2IDogdCAtPiBwb3M6aW50IC0+IGludFxuXG4gIHZhbCBzZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgKCogT0NhbWwgc3RyaW5ncyBhbHdheXMgd2FzdGUgdHdvIGJ5dGVzIGF0IHRoZSBlbmQsIHNvIHdlIHRha2UgYSBwb3dlciBvZiB0d28gbWludXMgdHdvXG4gICAgIHRvIGJlIHN1cmUgd2UgZG9uJ3Qgd2FzdGUgc3BhY2UuICopXG4gIGxldCBsZW5ndGggPSA2MlxuICBsZXQgYWxsb2MgKCkgPSBCeXRlcy5jcmVhdGUgbGVuZ3RoXG5cbiAgZXh0ZXJuYWwgZ2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuICBleHRlcm5hbCBzZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcblxuICAoKiBJZiB3ZSB3YW50IHRvIG1ha2UgYSBbUG9zaXRpb25zLnRdIHNlcmlhbGl6YWJsZTpcblxuICAgICB7W1xuICAgICAgIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiOztcblxuICAgICAgIGxldCBnZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgLT4gZ2V0MTYgYnVmIH5wb3MgfD4gYnN3YXAxNlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBnZXQxNlxuXG4gICAgICAgbGV0IHNldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyB4IC0+IHNldDE2IGJ1ZiB+cG9zIChic3dhcDE2IHgpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHNldDE2XG4gICAgIF19XG5cbiAgKilcbmVuZFxuXG50eXBlIHRfID1cbiAgeyBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2NodW5rc10uXG4gICAgICAgVGhlIGxhc3QgW2V4dHJhX2JpdHNdIGJpdHMgd2lsbCBiZSBzdG9yZWQgYXMgdGhlICpsZWFzdCogc2lnbmlmaWNhbnQgYml0c1xuICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBwYWlyIG9mIGJ5dGVzIG9mIHRoZSBsYXN0IGNodW5rLiAqKVxuICAgIG51bV9ieXRlcyA6IGludFxuICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgOyBpbml0aWFsX3BvcyA6IHBvc1xuICB9XG5cbnR5cGUgdCA9IHRfIExhenkudFxuXG5sZXQgbWVtb3J5X2Zvb3RwcmludF9pbl9ieXRlcyAobGF6eSB0KSA9XG4gIGxldCBudW1fZmllbGRzID0gNCBpblxuICBsZXQgaGVhZGVyX3dvcmRzID0gMSBpblxuICBsZXQgd29yZF9ieXRlcyA9XG4gICAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgfCAzMiAtPiA0XG4gICAgfCA2NCAtPiA4XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsZXQgY2h1bmtfd29yZHMgPVxuICAgIGxldCBkaXZfY2VpbCBhIGIgPSAoYSArIGIgLSAxKSAvIGIgaW5cbiAgICBsZXQgbiA9XG4gICAgICBkaXZfY2VpbFxuICAgICAgICAoQ2h1bmsubGVuZ3RoXG4gICAgICAgICArIDEgKCogTlVMIHRlcm1pbmF0aW5nIGJ5dGVzICopXG4gICAgICAgICArIDEgKCogbnVtYmVyIG9mIHdhc3RlZCBieXRlcyB0byBmaWxsIGEgd29yZCAqKSlcbiAgICAgICAgd29yZF9ieXRlc1xuICAgIGluXG4gICAgbiArIGhlYWRlcl93b3Jkc1xuICBpblxuICBsZXQgcG9zX2ZpZWxkcyA9IDMgaW5cbiAgbGV0IHBvc193b3JkcyA9IGhlYWRlcl93b3JkcyArIHBvc19maWVsZHMgaW5cbiAgbGV0IGxpc3RfY29uc193b3JkcyA9IGhlYWRlcl93b3JkcyArIDIgaW5cbiAgKGhlYWRlcl93b3Jkc1xuICAgKyBudW1fZmllbGRzXG4gICArIHBvc193b3Jkc1xuICAgKyAoTGlzdC5sZW5ndGggdC5jaHVua3MgKiAoY2h1bmtfd29yZHMgKyBsaXN0X2NvbnNfd29yZHMpKSlcbiAgKiB3b3JkX2J5dGVzXG47O1xuXG5tb2R1bGUgQnVpbGRlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtfcG9zIDogaW50XG4gICAgOyBtdXRhYmxlIGZpbGxlZF9jaHVua3MgOiBDaHVuay50IGxpc3QgKCogRmlsbGVkIGNodW5rcyBpbiByZXZlcnNlIG9yZGVyICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgICgqIE9mZnNldCBvZiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbiBvciBuZXdsaW5lIHBsdXNcbiAgICAgICBvbmUsIG9yIFtpbml0aWFsX3Bvc10gKilcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgICgqIHRoZSBbbnVtX2JpdHNdIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW2ludF9idWZdXG4gICAgICAgYXJlIHRoZSBiaXRzIG5vdCB5ZXQgcHVzaGVkIHRvIFtjaHVua10uICopXG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgaW5pdGlhbF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQuY2h1bmtfcG9zID49IDAgJiYgdC5jaHVua19wb3MgPD0gQ2h1bmsubGVuZ3RoKTtcbiAgICBhc3NlcnQgKHQub2Zmc2V0ID49IHQuaW5pdGlhbF9wb3Mub2Zmc2V0KTtcbiAgICBhc3NlcnQgKHQubnVtX2JpdHMgPD0gMTUpXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IGZhbHNlXG4gIGxldCBpbnZhcmlhbnQgdCA9IGlmIGNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0XG5cbiAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gYmVnaW5uaW5nX29mX2ZpbGUpICgpID1cbiAgICB7IGNodW5rID0gQ2h1bmsuYWxsb2MgKClcbiAgICA7IGNodW5rX3BvcyA9IDBcbiAgICA7IGZpbGxlZF9jaHVua3MgPSBbXVxuICAgIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgOyBpbnRfYnVmID0gMFxuICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgOyBpbml0aWFsX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCAocG9zIDogcG9zKSA9XG4gICAgKCogV2UgbmVlZCBhIG5ldyBjaHVuayBhcyBbY29udGVudHNdIGtlZXBzIHRoZSBjdXJyZW50IGNodW5rIGluIHRoZSBjbG9zdXJlIG9mIHRoZVxuICAgICAgIGxhenkgdmFsdWUuICopXG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwO1xuICAgIHQuZmlsbGVkX2NodW5rcyA8LSBbXTtcbiAgICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICAgIHQuaW50X2J1ZiA8LSAwO1xuICAgIHQubnVtX2JpdHMgPC0gMDtcbiAgICB0LmluaXRpYWxfcG9zIDwtIHBvc1xuICA7O1xuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhbGxvY19uZXdfY2h1bmsgdCA9XG4gICAgdC5maWxsZWRfY2h1bmtzIDwtIHQuY2h1bmsgOjogdC5maWxsZWRfY2h1bmtzO1xuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMFxuICA7O1xuXG4gIGxldCBhZGRfdWludDE2IHQgbiA9XG4gICAgaWYgdC5jaHVua19wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBhbGxvY19uZXdfY2h1bmsgdDtcbiAgICBDaHVuay5zZXQxNiB0LmNodW5rIH5wb3M6dC5jaHVua19wb3MgblxuICA7O1xuXG4gIGxldCBhZGRfYml0cyB0IG4gfm51bV9iaXRzID1cbiAgICBsZXQgaW50X2J1ZiA9ICh0LmludF9idWYgbHNsIG51bV9iaXRzKSBsb3IgbiBpblxuICAgIGxldCBudW1fYml0cyA9IHQubnVtX2JpdHMgKyBudW1fYml0cyBpblxuICAgIHQuaW50X2J1ZiA8LSBpbnRfYnVmO1xuICAgIGlmIG51bV9iaXRzIDwgMTZcbiAgICB0aGVuIHQubnVtX2JpdHMgPC0gbnVtX2JpdHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fYml0cyA9IG51bV9iaXRzIC0gMTYgaW5cbiAgICAgIHQubnVtX2JpdHMgPC0gbnVtX2JpdHM7XG4gICAgICBhZGRfdWludDE2IHQgKGludF9idWYgbHNyIG51bV9iaXRzKTtcbiAgICAgIHQuY2h1bmtfcG9zIDwtIHQuY2h1bmtfcG9zICsgMlxuICAgICAgKCogbm8gbmVlZCB0byBjbGVhciB0aGUgYml0cyBvZiBpbnRfYnVmIHdlIGp1c3Qgd3JvdGUsIGFzIGZ1cnRoZXIgc2V0MTYgd2lsbCBpZ25vcmVcbiAgICAgICAgIHRoZXNlIGV4dHJhIGJpdHMuICopKVxuICA7O1xuXG4gIGxldCBjb250ZW50cyB0ID1cbiAgICAoKiBGbHVzaCB0aGUgY3VycmVudCBbdC5pbnRfYnVmXSAqKVxuICAgIGFkZF91aW50MTYgdCB0LmludF9idWY7XG4gICAgbGV0IHJldl9jaHVua3MgPSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcyBpblxuICAgIGxldCBjaHVua19wb3MgPSB0LmNodW5rX3BvcyBpblxuICAgIGxldCBleHRyYV9iaXRzID0gdC5udW1fYml0cyBpblxuICAgIGxldCBpbml0aWFsX3BvcyA9IHQuaW5pdGlhbF9wb3MgaW5cbiAgICBsYXp5XG4gICAgICB7IGNodW5rcyA9IExpc3QucmV2IHJldl9jaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gKChMaXN0Lmxlbmd0aCByZXZfY2h1bmtzIC0gMSkgKiBDaHVuay5sZW5ndGgpICsgY2h1bmtfcG9zXG4gICAgICA7IGV4dHJhX2JpdHNcbiAgICAgIDsgaW5pdGlhbF9wb3NcbiAgICAgIH1cbiAgOztcblxuICBsZXQgbG9uZ19zaGlmdCB0IG4gPVxuICAgIGxldCBuID0gcmVmIChuIC0gNSkgaW5cbiAgICB3aGlsZSAhbiA+IDAgZG9cbiAgICAgIGFkZF9iaXRzIHQgKDBiMTEwMF8wMDAwIGxvciAoIW4gbGFuZCAwYjAwMDFfMTExMSkpIH5udW1fYml0czo4O1xuICAgICAgbiA6PSAhbiBsc3IgNVxuICAgIGRvbmVcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IG4gPj0gNSAqKVxuICBsZXRbQGlubGluZSBuZXZlcl0gYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGxvbmdfc2hpZnQgdCBuO1xuICAgIGFkZF9iaXRzIHQgaW5zdHIgfm51bV9iaXRzOmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgc2hpZnQ0ID0gMGIxMF8xMF8xMF8xMFxuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBsZXQgbiA9IG9mZnNldCAtIHQub2Zmc2V0IGluXG4gICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDAgfCAxIHwgMiB8IDMgfCA0IC0+XG4gICAgICBsZXQgbnVtX2JpdHMgPSAobiBsc2wgMSkgKyBpbnN0cl9iaXRzIGluXG4gICAgICBhZGRfYml0cyB0ICgoc2hpZnQ0IGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIgbGFuZCAoKDEgbHNsIG51bV9iaXRzKSAtIDEpKSB+bnVtX2JpdHNcbiAgICB8IDVcbiAgICB8IDZcbiAgICB8IDdcbiAgICB8IDhcbiAgICB8IDlcbiAgICB8IDEwXG4gICAgfCAxMVxuICAgIHwgMTJcbiAgICB8IDEzXG4gICAgfCAxNFxuICAgIHwgMTVcbiAgICB8IDE2XG4gICAgfCAxN1xuICAgIHwgMThcbiAgICB8IDE5XG4gICAgfCAyMFxuICAgIHwgMjFcbiAgICB8IDIyXG4gICAgfCAyM1xuICAgIHwgMjRcbiAgICB8IDI1XG4gICAgfCAyNlxuICAgIHwgMjdcbiAgICB8IDI4XG4gICAgfCAyOVxuICAgIHwgMzBcbiAgICB8IDMxXG4gICAgfCAzMlxuICAgIHwgMzNcbiAgICB8IDM0XG4gICAgfCAzNVxuICAgIHwgMzYgLT5cbiAgICAgIGFkZF9iaXRzXG4gICAgICAgIHRcbiAgICAgICAgKCgoMGIxMTAwXzAwMDAgbG9yIChuIC0gNSkpIGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIpXG4gICAgICAgIH5udW1fYml0czooOCArIGluc3RyX2JpdHMpXG4gICAgfCBfIC0+XG4gICAgICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5Qb3NpdGlvbnMuYWRkX2dlblwiO1xuICAgICAgYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgYWRkIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjAgfmluc3RyX2JpdHM6MVxuICBsZXQgYWRkX3R3aWNlIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTEgfmluc3RyX2JpdHM6NFxuICBsZXQgYWRkX25ld2xpbmUgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMCB+aW5zdHJfYml0czo0XG5lbmRcblxudHlwZSBwb3NpdGlvbnMgPSB0XG5cbm1vZHVsZSBJdGVyYXRvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogcG9zaXRpb25zIC0+IHRcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gICgqIFthZHZhbmNlIHQgfnNraXBdIGlnbm9yZXMgW3NraXBdIHNhdmVkIHBvc2l0aW9ucyBhbmQgcmV0dXJucyB0aGUgbmV4dCBzYXZlZCBwb3NpdGlvbi5cbiAgICAgUmFpc2VzIFtOb19tb3JlXSB3aGVuIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIHBvc2l0aW9uIHNldC4gKilcbiAgdmFsIGFkdmFuY2VfZXhuIDogdCAtPiBza2lwOmludCAtPiBwb3NcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gICAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBhdmFpbGFibGUgZnJvbSBbaW5zdHJfcG9zXSBpblxuICAgICAgICAgW2NodW5rIDo6IGNodW5rc10uICopXG4gICAgICBtdXRhYmxlIG51bV9ieXRlcyA6IGludFxuICAgIDsgZXh0cmFfYml0cyA6IGludFxuICAgIDsgbXV0YWJsZSBpbnN0cl9wb3MgOiBpbnQgKCogcG9zaXRpb24gaW4gW2NodW5rXSAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSBib2wgOiBpbnRcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBOdW1iZXIgb2YgYml0cyBub3QgeWV0IGNvbnN1bWVkIGluIFtpbnRfYnVmXSAqKVxuICAgIDsgbXV0YWJsZSBwZW5kaW5nIDogcG9zIG9wdGlvblxuICAgIH1cblxuICBsZXQgY3JlYXRlICgobGF6eSBwKSA6IHBvc2l0aW9ucykgPVxuICAgIG1hdGNoIHAuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB7IGNodW5rXG4gICAgICA7IGNodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSBwLm51bV9ieXRlc1xuICAgICAgOyBleHRyYV9iaXRzID0gcC5leHRyYV9iaXRzXG4gICAgICA7IGluc3RyX3BvcyA9IDBcbiAgICAgIDsgb2Zmc2V0ID0gcC5pbml0aWFsX3Bvcy5vZmZzZXRcbiAgICAgIDsgbGluZSA9IHAuaW5pdGlhbF9wb3MubGluZVxuICAgICAgOyBib2wgPSBwLmluaXRpYWxfcG9zLm9mZnNldCAtIHAuaW5pdGlhbF9wb3MuY29sXG4gICAgICA7IGludF9idWYgPSAwXG4gICAgICA7IG51bV9iaXRzID0gMFxuICAgICAgOyBwZW5kaW5nID0gTm9uZVxuICAgICAgfVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgbGV0IG5vX21vcmUgKCkgPSByYWlzZV9ub3RyYWNlIE5vX21vcmVcblxuICBsZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfY2h1bmsgdCA9XG4gICAgbWF0Y2ggdC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHQuaW5zdHJfcG9zIDwtIDA7XG4gICAgICB0Lm51bV9ieXRlcyA8LSB0Lm51bV9ieXRlcyAtIENodW5rLmxlbmd0aDtcbiAgICAgIHQuY2h1bmsgPC0gY2h1bms7XG4gICAgICB0LmNodW5rcyA8LSBjaHVua3NcbiAgOztcblxuICBsZXQgZmV0Y2ggdCA9XG4gICAgaWYgdC5pbnN0cl9wb3MgPiB0Lm51bV9ieXRlcyB0aGVuIG5vX21vcmUgKCk7XG4gICAgaWYgdC5pbnN0cl9wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBmZXRjaF9jaHVuayB0O1xuICAgIGxldCB2ID0gQ2h1bmsuZ2V0MTYgdC5jaHVuayB+cG9zOnQuaW5zdHJfcG9zIGluXG4gICAgbGV0IGFkZGVkX2JpdHMgPSBpZiB0Lmluc3RyX3BvcyA9IHQubnVtX2J5dGVzIHRoZW4gdC5leHRyYV9iaXRzIGVsc2UgMTYgaW5cbiAgICB0LmludF9idWYgPC0gKHQuaW50X2J1ZiBsc2wgYWRkZWRfYml0cykgbG9yICh2IGxhbmQgKCgxIGxzbCBhZGRlZF9iaXRzKSAtIDEpKTtcbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgKyBhZGRlZF9iaXRzO1xuICAgIHQuaW5zdHJfcG9zIDwtIHQuaW5zdHJfcG9zICsgMlxuICA7O1xuXG4gIGxldCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHMgPVxuICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0c1xuICAgIHRoZW4gKFxuICAgICAgZmV0Y2ggdDtcbiAgICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0cyB0aGVuIG5vX21vcmUgKCkpO1xuICAgIGxldCBuID0gKHQuaW50X2J1ZiBsc3IgKHQubnVtX2JpdHMgLSBudW1fYml0cykpIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSBpblxuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyAtIG51bV9iaXRzO1xuICAgIG5cbiAgOztcblxuICAoKiBbb2Zmc2V0X3NoaWZ0XSBhbmQgW29mZnNldF9zaGlmdF9udW1fYml0c10gZW5jb2RlIHRoZSBvZmZzZXQgbnVtYmVyXG4gICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIFsxMTBdIGluc3RydWN0aW9ucy4gKilcbiAgbGV0IHJlYyBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzID1cbiAgICBtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAoKiBiaXQgc2VxIDAgLT4gbmV3IGl0ZW0gKilcbiAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9XG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAoKiBiaXQgc2VxIDEwIC0+IHNoaWZ0ICopXG4gICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICgqIGJpdCBzZXEgMTEwIC0+IGxvbmcgc2hpZnQgKilcbiAgICAgICAgICAgIGxldCBuID0gbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjUgaW5cbiAgICAgICAgICAgIGxldCBvZmZzZXRfc2hpZnQgPSBpZiBvZmZzZXRfc2hpZnRfbnVtX2JpdHMgPSAwIHRoZW4gNSBlbHNlIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgYWR2YW5jZVxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIH5za2lwXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnQ6KG9mZnNldF9zaGlmdCArIChuIGxzbCBvZmZzZXRfc2hpZnRfbnVtX2JpdHMpKVxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOihvZmZzZXRfc2hpZnRfbnVtX2JpdHMgKyA1KVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMCAtPiBuZXdsaW5lICopXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICAgICAgICB0LmJvbCA8LSB0Lm9mZnNldDtcbiAgICAgICAgICAgICAgIHQubGluZSA8LSB0LmxpbmUgKyAxO1xuICAgICAgICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMSAtPiAyIG5ldyBpdGVtcyAqKVxuICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgaWYgc2tpcCA8PSAxXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9IGluXG4gICAgICAgICAgICAgICAgIGlmIHNraXAgPSAwIHRoZW4gdC5wZW5kaW5nIDwtIFNvbWUgcG9zO1xuICAgICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDIpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjApKSlcbiAgOztcblxuICBsZXQgYWR2YW5jZV9leG4gdCB+c2tpcCA9XG4gICAgbWF0Y2ggdC5wZW5kaW5nIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICB0LnBlbmRpbmcgPC0gTm9uZTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHBvc1xuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBOb25lIC0+IGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gIDs7XG5lbmRcblxubGV0IGZpbmQgdCBhIGIgPVxuICBpZiBhIDwgMCB8fCBiIDw9IGEgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmZpbmRcIjtcbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICB0cnlcbiAgICBsZXQgc3RhcnRfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDphIGluXG4gICAgbGV0IGxhc3RfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDooYiAtIGEgLSAxKSBpblxuICAgIG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3Bvc1xuICB3aXRoXG4gIHwgSXRlcmF0b3IuTm9fbW9yZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUG9zaXRpb24uZmluZFwiXG47O1xuXG5sZXQgcmVjIHN1Yl9zZXhwX2NvdW50IChzZXhwIDogU2V4cC50KSA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gXyAtPiAxXG4gIHwgTGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQ6MSB+ZjooZnVuIGFjYyB4IC0+IGFjYyArIHN1Yl9zZXhwX2NvdW50IHgpXG47O1xuXG5tb2R1bGUgU2V4cF9zZWFyY2ggPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEZvdW5kIG9mIGludFxuXG4gIGxldCByZWMgbG9vcCB+c3ViIGluZGV4IChzZXhwIDogU2V4cC50KSA9XG4gICAgaWYgc2V4cCA9PSBzdWJcbiAgICB0aGVuIHJhaXNlX25vdHJhY2UgKEZvdW5kIGluZGV4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IEF0b20gXyAtPiBpbmRleCArIDJcbiAgICAgIHwgTGlzdCBsIC0+XG4gICAgICAgIGxldCBpbmRleCA9IGxvb3BfbGlzdCB+c3ViIChpbmRleCArIDEpIGwgaW5cbiAgICAgICAgaW5kZXggKyAxKVxuXG4gIGFuZCBsb29wX2xpc3QgfnN1YiBpbmRleCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNleHBzIH5pbml0OmluZGV4IH5mOihsb29wIH5zdWIpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplIHQgfnN1YiBhID1cbiAgICBsZXQgYiA9IGEgKyAoc3ViX3NleHBfY291bnQgc3ViICogMikgLSAxIGluXG4gICAgU29tZSAoZmluZCB0IGEgYilcbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9waHlzIHQgc2V4cCB+c3ViID1cbiAgICBtYXRjaCBsb29wIH5zdWIgMCBzZXhwIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyB0IHNleHBzIH5zdWIgPVxuICAgIG1hdGNoIGxvb3BfbGlzdCB+c3ViIDAgc2V4cHMgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5lbmRcblxubGV0IGZpbmRfc3ViX3NleHBfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfcGh5c1xubGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBJdGVyYXRvci5Ob19tb3JlIC0+IExpc3QucmV2IGFjY1xuICAgIHwgcG9zIC0+IGxvb3AgKHBvcyA6OiBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdG9fbGlzdCB0IHw+IEFycmF5Lm9mX2xpc3RcbmxldCBjb21wYXJlIHQxIHQyID0gU3RkbGliLmNvbXBhcmUgKHRvX2FycmF5IHQxKSAodG9fYXJyYXkgdDIpXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfcG9zICh0b19hcnJheSB0KVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgQXRvbSBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgYXRvbSA6IHN0cmluZ1xuICAgICAgOyB1bmVzY2FwZWQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICB9XG4gIHwgTGlzdCBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgZWxlbWVudHMgOiB0X29yX2NvbW1lbnQgbGlzdFxuICAgICAgfVxuXG5hbmQgdF9vcl9jb21tZW50ID1cbiAgfCBTZXhwIG9mIHRcbiAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuYW5kIGNvbW1lbnQgPVxuICB8IFBsYWluX2NvbW1lbnQgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGNvbW1lbnQgOiBzdHJpbmdcbiAgICAgIH1cbiAgfCBTZXhwX2NvbW1lbnQgb2ZcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgIDsgY29tbWVudHMgOiBjb21tZW50IGxpc3RcbiAgICAgIDsgc2V4cCA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgcmVjIHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgQXRvbSB7IGxvYyA9IGxvY19fMDAyXzsgYXRvbSA9IGF0b21fXzAwNF87IHVuZXNjYXBlZCA9IHVuZXNjYXBlZF9fMDA2XyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAxXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHVuZXNjYXBlZF9fMDA2XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidW5lc2NhcGVkXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIGF0b21fXzAwNF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImF0b21cIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDNfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMDJfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJBdG9tXCIgOjogYm5kc19fMDAxXylcbiAgICB8IExpc3QgeyBsb2MgPSBsb2NfXzAwOV87IGVsZW1lbnRzID0gZWxlbWVudHNfXzAxMV8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwOF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90X29yX2NvbW1lbnQgZWxlbWVudHNfXzAxMV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsZW1lbnRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEwXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDA5XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGlzdFwiIDo6IGJuZHNfXzAwOF8pXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl90X29yX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFNleHAgYXJnMF9fMDEzXyAtPlxuICAgICAgbGV0IHJlczBfXzAxNF8gPSBzZXhwX29mX3QgYXJnMF9fMDEzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMTRfIF1cbiAgICB8IENvbW1lbnQgYXJnMF9fMDE1XyAtPlxuICAgICAgbGV0IHJlczBfXzAxNl8gPSBzZXhwX29mX2NvbW1lbnQgYXJnMF9fMDE1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29tbWVudFwiOyByZXMwX18wMTZfIF1cbiAgICAgIDogdF9vcl9jb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCB7IGxvYyA9IGxvY19fMDE4XzsgY29tbWVudCA9IGNvbW1lbnRfXzAyMF8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAxN18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAyMV8gPSBzZXhwX29mX3N0cmluZyBjb21tZW50X18wMjBfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50XCI7IGFyZ19fMDIxXyBdIDo6IGJuZHNfXzAxN19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMTdfID1cbiAgICAgICAgbGV0IGFyZ19fMDE5XyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDE4XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDE5XyBdIDo6IGJuZHNfXzAxN19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGxhaW5fY29tbWVudFwiIDo6IGJuZHNfXzAxN18pXG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zID0gaGFzaF9zZW1pX3Bvc19fMDIzX1xuICAgICAgICA7IGNvbW1lbnRzID0gY29tbWVudHNfXzAyNV9cbiAgICAgICAgOyBzZXhwID0gc2V4cF9fMDI3X1xuICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDIyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI4XyA9IHNleHBfb2ZfdCBzZXhwX18wMjdfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXhwXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI2XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2NvbW1lbnQgY29tbWVudHNfXzAyNV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbW1lbnRzXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI0XyA9IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBoYXNoX3NlbWlfcG9zX18wMjNfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJoYXNoX3NlbWlfcG9zXCI7IGFyZ19fMDI0XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cF9jb21tZW50XCIgOjogYm5kc19fMDIyXylcbiAgICAgIDogY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgY29tcGFyZV90X29yX2NvbW1lbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGNvbXBhcmVfY29tbWVudCA9IFN0ZGxpYi5jb21wYXJlXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFNleHAudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoU2V4cC50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoU2V4cC50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIHsgYXRvbTsgXyB9IC0+IGsgKFNleHAuQXRvbSBhdG9tKVxuICAgICAgfCBMaXN0IHsgZWxlbWVudHM7IF8gfSAtPiBmb3JnZXRfdG9jcyBlbGVtZW50cyAoZnVuIHhzIC0+IGsgKFNleHAuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGFja19pbnRmXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgVF9vcl9jb21tZW50IG9mIENzdC50X29yX2NvbW1lbnQgKiB0XG4gICAgfCBPcGVuIG9mIFBvc2l0aW9ucy5wb3MgKiB0XG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgb2ZcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgICA7IHJldl9jb21tZW50cyA6IENzdC5jb21tZW50IGxpc3RcbiAgICAgICAgOyBzdGFjayA6IHRcbiAgICAgICAgfVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGdldF9tYW55ID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IGxvb3AgKHQgOjogYWNjKSBzdGFja1xuICAgICAgfCBPcGVuIF8gfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55XCJcbiAgICBpblxuICAgIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG4gIDs7XG5lbmRcblxubW9kdWxlIEp1c3RfcG9zaXRpb25zID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcblxuICBsZXQgZW1wdHkgPSAoKVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgRW1wdHlcbiAgfCBPcGVuIG9mIHRcbiAgfCBTZXhwIG9mIFNleHAudCAqIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGdldF9zaW5nbGUgPSBmdW5jdGlvblxuICB8IFNleHAgKHNleHAsIEVtcHR5KSAtPiBzZXhwXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlXCJcbjs7XG5cbmxldCBnZXRfbWFueSA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBPcGVuIF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X21hbnlcIlxuICAgIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IGxvb3AgKHNleHAgOjogYWNjKSBzdGFja1xuICBpblxuICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgfCBTZXhwXG5lbmRcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRva2VuX2J1ZmZlciA6IEJ1ZmZlci50ICgqKiBTdGFydGluZyBwb3NpdGlvbnMgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKiopXG4gICAgOyBtdXRhYmxlIHRva2VuX3N0YXJ0X3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCB1bml0KSB0XG4gICAgfCBTZXhwIDogKHVuaXQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBDc3QgOiAoRm9yX2NzdC50LCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KSB0XG5lbmRcblxubW9kdWxlIHJlYyBTdGF0ZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHsgbXV0YWJsZSBhdXRvbWF0b25fc3RhdGUgOiBpbnRcbiAgICA7IGtpbmQgOiAoJ3UsICdzKSBLaW5kLnRcbiAgICA7IG11dGFibGUgZGVwdGggOiBpbnQgKCoqIE51bWJlciBvZiBvcGVuZWQgI3wgd2hlbiBwYXJzaW5nIGEgYmxvY2sgY29tbWVudCAqKVxuICAgIDsgbXV0YWJsZSBibG9ja19jb21tZW50X2RlcHRoIDogaW50XG4gICAgKCoqIFN0YWNrIG9mIGlnbm9yaW5nIGRlcHRoczsgdGhlIGN1cnJlbnQgZGVwdGggaXMgcHVzaGVkXG4gICAgICAgIGVhY2ggdGltZSBhICM7IGNvbW1lbnQgaXMgZW50ZXJlZC4gKilcbiAgICA7IG11dGFibGUgaWdub3Jpbmdfc3RhY2sgOiBpbnQgbGlzdFxuICAgICgqKiBXaGVuIHBhcnNpbmcgYW4gZXNjYXBlIHNlcXVlbmNlIG9mIHRoZSBmb3JtIFwiXFxcXE5OTlwiIG9yIFwiXFxcXFhYXCIsIHRoaXMgYWNjdW11bGF0ZXNcbiAgICAgICAgdGhlIGNvbXB1dGVkIG51bWJlciAqKVxuICAgIDsgbXV0YWJsZSBlc2NhcGVkX3ZhbHVlIDogaW50ICgqKiBCdWZmZXIgZm9yIGFjY3VtdWxhdGluZyBhdG9tcyAqKVxuICAgIDsgYXRvbV9idWZmZXIgOiBCdWZmZXIudFxuICAgIDsgdXNlcl9zdGF0ZSA6ICd1XG4gICAgOyBtb2RlIDogKCd1LCAncykgTW9kZS50XG4gICAgOyBtdXRhYmxlIGZ1bGxfc2V4cHMgOiBpbnRcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50ICgqKiBnbG9iYWwgb2Zmc2V0ICoqKVxuICAgIDsgbXV0YWJsZSBsaW5lX251bWJlciA6IGludFxuICAgIDsgbXV0YWJsZSBib2xfb2Zmc2V0IDogaW50ICgqKiBvZmZzZXQgb2YgYmVnaW5uaW5nIG9mIGxpbmUgKiopXG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIE1vZGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFNpbmdsZVxuICAgIHwgTWFueVxuICAgIHwgRWFnZXIgb2ZcbiAgICAgICAgeyBnb3Rfc2V4cCA6ICgndSwgJ3MpIFN0YXRlLnQgLT4gJ3MgLT4gJ3NcbiAgICAgICAgOyBtdXRhYmxlIG5vX3NleHBfaXNfZXJyb3IgOiBib29sXG4gICAgICAgIH1cbmVuZCA9XG4gIE1vZGVcblxubW9kdWxlIHR5cGUgQXV0b21hdG9uX3N0YXRlID0gc2lnXG4gIG1vZHVsZSBDb250ZXh0ID0gQ29udGV4dFxuICBtb2R1bGUgRm9yX2NzdCA9IEZvcl9jc3RcbiAgbW9kdWxlIEtpbmQgPSBLaW5kXG4gIG1vZHVsZSBNb2RlID0gTW9kZVxuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZVxuXG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2luaXRpYWxfcG9zOlBvc2l0aW9ucy5wb3NcbiAgICAtPiAoJ3UsICdzKSBNb2RlLnRcbiAgICAtPiAoJ3UsICdzKSBLaW5kLnRcbiAgICAtPiAoJ3UsICdzKSB0XG5cbiAgdmFsIHJlc2V0IDogP3BvczpQb3NpdGlvbnMucG9zIC0+IF8gdCAtPiB1bml0XG4gIHZhbCBwb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgXykgdCAtPiBQb3NpdGlvbnMudFxuICB2YWwgbW9kZSA6ICgndSwgJ3MpIHQgLT4gKCd1LCAncykgTW9kZS50XG5cbiAgKCoqIE51bWJlciBvZiBjaGFyYWN0ZXJzIGZlZCB0byB0aGUgcGFyc2VyICopXG4gIHZhbCBvZmZzZXQgOiBfIHQgLT4gaW50XG5cbiAgKCoqIFBvc2l0aW9uIGluIHRoZSB0ZXh0ICopXG4gIHZhbCBsaW5lIDogXyB0IC0+IGludFxuXG4gIHZhbCBjb2x1bW4gOiBfIHQgLT4gaW50XG5cbiAgKCoqIFdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdW5jbG9zZWQgcGFyZW50aGVzZXMgKilcbiAgdmFsIGhhc191bmNsb3NlZF9wYXJlbiA6ICgndSwgJ3MpIHQgLT4gYm9vbFxuXG4gIHZhbCBzZXRfZXJyb3Jfc3RhdGUgOiBfIHQgLT4gdW5pdFxuXG4gICgqKi8qKilcblxuICAoKl8gT25seSBmb3IgY29udmVydGluZyBlcnJvcnMgdG8gdGhlIG9sZCBwYXJzZXIgZXJyb3JzICopXG4gIHZhbCBhdG9tX2J1ZmZlciA6IF8gdCAtPiBCdWZmZXIudFxuXG4gICgqXyBGb3IgY292ZXJhdGUgdGVzdHMgKilcbiAgdmFsIGF1dG9tYXRvbl9zdGF0ZSA6ICgndSwgJ3MpIHQgLT4gaW50XG4gIHZhbCBjb250ZXh0IDogXyB0IC0+IENvbnRleHQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlX2ludGZcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG5vcGVuIFN0YXRlXG5cbmxldCBpbml0aWFsX3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBQb3NpdGlvbnMucG9zIC0+IHUgPVxuICBmdW4ga2luZCBpbml0aWFsX3BvcyAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBDc3QgLT5cbiAgICAoKiBbdG9rZW5fc3RhcnRfcG9zXSBpcyBzZXQgdG8gYSBkdW1teSBsb2NhdGlvbiBoZXJlLiBJdCBpcyBwcm9wZXJseSBzZXQgd2hlbiB3ZVxuICAgICAgIHN0YXJ0IHRvIGNhcHR1cmUgYSB0b2tlbiBmcm9tIHRoZSBpbnB1dCAqKVxuICAgIHsgdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjg7IHRva2VuX3N0YXJ0X3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSB9XG47O1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3N0YXRlLnByaW50X2NvbnN0YW50cyAoKSAqKVxubGV0IGluaXRpYWxfc3RhdGUgPSAwXG5sZXQgZXJyb3Jfc3RhdGUgPSAxXG5cbigqJCopXG5cbmxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgbW9kZSBraW5kID1cbiAgeyBraW5kXG4gIDsgZGVwdGggPSAwXG4gIDsgYXV0b21hdG9uX3N0YXRlID0gaW5pdGlhbF9zdGF0ZVxuICA7IGJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gIDsgaWdub3Jpbmdfc3RhY2sgPSBbXVxuICA7IGVzY2FwZWRfdmFsdWUgPSAwXG4gIDsgYXRvbV9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyOFxuICA7IHVzZXJfc3RhdGUgPSBpbml0aWFsX3VzZXJfc3RhdGUga2luZCBpbml0aWFsX3Bvc1xuICA7IG1vZGVcbiAgOyBmdWxsX3NleHBzID0gMFxuICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICA7IGxpbmVfbnVtYmVyID0gaW5pdGlhbF9wb3MubGluZVxuICA7IGJvbF9vZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXQgLSBpbml0aWFsX3Bvcy5jb2xcbiAgfVxuOztcblxubGV0IG1vZGUgdCA9IHQubW9kZVxubGV0IHBvc2l0aW9ucyB0ID0gUG9zaXRpb25zLkJ1aWxkZXIuY29udGVudHMgdC51c2VyX3N0YXRlXG5sZXQgYXRvbV9idWZmZXIgdCA9IHQuYXRvbV9idWZmZXJcbmxldCBvZmZzZXQgc3RhdGUgPSBzdGF0ZS5vZmZzZXRcbmxldCBsaW5lIHN0YXRlID0gc3RhdGUubGluZV9udW1iZXJcbmxldCBjb2x1bW4gc3RhdGUgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG5sZXQgcG9zaXRpb24gdCA9IHsgUG9zaXRpb25zLmNvbCA9IGNvbHVtbiB0OyBsaW5lID0gbGluZSB0OyBvZmZzZXQgPSBvZmZzZXQgdCB9XG5cbmxldCByZXNldF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSB0IC0+IHVuaXQgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IENzdCAtPiBCdWZmZXIuY2xlYXIgdC51c2VyX3N0YXRlLnRva2VuX2J1ZmZlclxuOztcblxubGV0IHJlc2V0ID8ocG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSB0ID1cbiAgdC5kZXB0aCA8LSAwO1xuICB0LmF1dG9tYXRvbl9zdGF0ZSA8LSBpbml0aWFsX3N0YXRlO1xuICB0LmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gMDtcbiAgdC5pZ25vcmluZ19zdGFjayA8LSBbXTtcbiAgdC5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIHQuZnVsbF9zZXhwcyA8LSAwO1xuICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICB0LmxpbmVfbnVtYmVyIDwtIHBvcy5saW5lO1xuICB0LmJvbF9vZmZzZXQgPC0gcG9zLm9mZnNldCAtIHBvcy5jb2w7XG4gIHJlc2V0X3VzZXJfc3RhdGUgdDtcbiAgQnVmZmVyLmNsZWFyIHQuYXRvbV9idWZmZXJcbjs7XG5cbmxldCBjb250ZXh0IHN0YXRlIDogQ29udGV4dC50ID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IF8gOjogXyAtPiBTZXhwX2NvbW1lbnRcbiAgfCBbXSAtPiBTZXhwXG47O1xuXG5sZXQgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlID0gc3RhdGUuZGVwdGggPiAwXG5sZXQgc2V0X2Vycm9yX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIGVycm9yX3N0YXRlXG5sZXQgYXV0b21hdG9uX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFJlYXNvbiA9IHN0cnVjdFxuICAoKl8gU29tZSBvZiB0aGVzZSBjb21lIGZyb20gW1BhcnNleHBfc3ltYm9saWNfYXV0b21hdG9uLlBhcnNlX2Vycm9yX3JlYXNvbl0uICopXG4gIHR5cGUgdCA9XG4gICAgKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX3BhcnNlX2Vycm9yLnByaW50X2NvbnN0cnVjdG9ycyAoKSAqKVxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbiAgICAoKiQqKVxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0XG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gICAgfCBUb29fbWFueV9zZXhwc1xuICAgIHwgVW5jbG9zZWRfcGFyZW5cbmVuZFxuXG5tb2R1bGUgdHlwZSBQYXJzZV9lcnJvciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcG9zaXRpb24gOiB0IC0+IFBvc2l0aW9ucy5wb3NcbiAgdmFsIG1lc3NhZ2UgOiB0IC0+IHN0cmluZ1xuXG4gICgqKiBSZXBvcnQgYW4gZXJyb3IgaW4gYSBzdHlsZSBzaW1pbGFyIHRvIE9DYW1sLCBmb3IgaW5zdGFuY2U6XG5cbiAgICAgIEZpbGUgXCJibGFoXCIsIGxpbmUgNDIsIGNoYXJhY3RlciAxMDpcbiAgICAgIEVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcbiAgICAgIHVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nLlxuICAqKVxuICB2YWwgcmVwb3J0IDogRm9ybWF0LmZvcm1hdHRlciAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdCAtPiB1bml0XG5cbiAgZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHRcblxuICAoKiovKiopXG5cbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgICAoKiogVG8gbWF0Y2ggdGhlIG9sZCBiZWhhdmlvciwgdGhlIG9sZCBwYXJzZXIgc29tZXRpbWVzIHJhaXNlZCBbRmFpbHVyZV0gYW5kIHNvbWV0aW1lc1xuICAgICAgICByYWlzZWQgW1BhcnNlX2Vycm9yXSAqKVxuICAgIHZhbCBvbGRfcGFyc2VyX2V4biA6IHQgLT4gWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG5cbiAgICB2YWwgcmFpc2UgOiBSZWFzb24udCAtPiBQb3NpdGlvbnMucG9zIC0+IGF0X2VvZjpib29sIC0+IGF0b21fYnVmZmVyOkJ1ZmZlci50IC0+ICdhXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VfZXJyb3JfaW50ZlxuXG50eXBlIHQgPVxuICB7IHBvc2l0aW9uIDogUG9zaXRpb25zLnBvc1xuICA7IG1lc3NhZ2UgOiBzdHJpbmdcbiAgOyBvbGRfcGFyc2VyX2V4biA6IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuICB9XG5cbmxldCBzZXhwX29mX3QgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gPSBfIH0gOiBTZXhwLnQgPVxuICBMaXN0XG4gICAgWyBMaXN0IFsgQXRvbSBcInBvc2l0aW9uXCI7IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBwb3NpdGlvbiBdXG4gICAgOyBMaXN0IFsgQXRvbSBcIm1lc3NhZ2VcIjsgc2V4cF9vZl9zdHJpbmcgbWVzc2FnZSBdXG4gICAgXVxuOztcblxubGV0IHBvc2l0aW9uIHQgPSB0LnBvc2l0aW9uXG5sZXQgbWVzc2FnZSB0ID0gdC5tZXNzYWdlXG5sZXQgb2xkX3BhcnNlcl9leG4gdCA9IHQub2xkX3BhcnNlcl9leG5cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgcG9zID0gcG9zaXRpb24gdCBpblxuICBsZXQgbXNnID0gbWVzc2FnZSB0IGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlciAlZDpcXG5FcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XFxuJXNcXG5cIlxuICAgIGZpbGVuYW1lXG4gICAgcG9zLmxpbmVcbiAgICBwb3MuY29sXG4gICAgbXNnXG47O1xuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhcnNlX2Vycm9yLm1sLlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmFpc2UgKHJlYXNvbiA6IFJlYXNvbi50KSBwb3NpdGlvbiB+YXRfZW9mIH5hdG9tX2J1ZmZlciA9XG4gIGxldCBtZXNzYWdlID1cbiAgICAoKiBUaGVzZSBtZXNzYWdlcyB3aGVyZSBjaG9vc2VuIHN1Y2ggdGhhdCB3ZSBjYW4gYnVpbGQgdGhlIHZhcmlvdXMgU2V4cGxpYiBwYXJzaW5nXG4gICAgICAgZnVuY3Rpb25zIG9uIHRvcCBvZiBQYXJzZXhwIGFuZCBrZWVwIHRoZSBzYW1lIGV4Y2VwdGlvbnMuXG5cbiAgICAgICBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMsIGEgc2ltcGxlIGxheWVyIG9uIHRvcCBvZiBwYXJzZXhwIHRvIGltcGxlbWVudCB0aGVcbiAgICAgICBzZXhwbGliIEFQSSBpcyBwYXNzaW5nIGFsbCB0aGUgc2V4cGxpYiB0ZXN0cy5cblxuICAgICAgIE5vdGUgdGhhdCBwYXJzZXhwIG1hdGNoZXMgdGhlIHNlbWFudGljIG9mIFNleHAucGFyc2Ugd2hpY2ggaXMgc2xpZ2h0bHlcbiAgICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgb2NhbWxsZXgvb2NhbWx5YWNjIGJhc2VkIHBhcnNlciBvZiBTZXhwbGliLiBUaGUgbGF0dGVyIG9uZVxuICAgICAgIGlzIGxlc3MgdGVzdGVkIGFuZCBhc3N1bWVkIHRvIGJlIGxlc3MgdXNlZC4gKilcbiAgICBtYXRjaCByZWFzb24gd2l0aFxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZyAtPiBcInVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nXCJcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50IC0+IFwidW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnRcIlxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZSAtPiBcImVzY2FwZSBzZXF1ZW5jZSBpbiBxdW90ZWQgc3RyaW5nIG91dCBvZiByYW5nZVwiXG4gICAgfCBVbmNsb3NlZF9wYXJlbiAtPiBcInVuY2xvc2VkIHBhcmVudGhlc2VzIGF0IGVuZCBvZiBpbnB1dFwiXG4gICAgfCBUb29fbWFueV9zZXhwcyAtPiBcInMtZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBkYXRhXCJcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZCAtPiBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnKSdcIlxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tIC0+XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCJcbiAgICAgIHRoZW4gXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCJcbiAgICAgIGVsc2UgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCJcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHAgLT4gXCJ1bnRlcm1pbmF0ZWQgc2V4cCBjb21tZW50XCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyIC0+XG4gICAgICBpZiBhdF9lb2ZcbiAgICAgIHRoZW4gXCJ1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgICAgZWxzZSBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyIGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0IC0+IFwibm8gcy1leHByZXNzaW9uIGZvdW5kIGluIGlucHV0XCJcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUGFyc2VyX2F1dG9tYXRvbjogcGFyc2VyIGlzIGRlYWRcIlxuICBpblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPVxuICAgIG1hdGNoIHJlYXNvbiwgYXRfZW9mIHdpdGhcbiAgICB8IFRvb19tYW55X3NleHBzLCBfIHwgXywgdHJ1ZSAtPiBgRmFpbHVyZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tLCBfXG4gICAgICB3aGVuIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIiAtPiBgRmFpbHVyZVxuICAgIHwgXyAtPiBgUGFyc2VfZXJyb3JcbiAgaW5cbiAgcmFpc2UgKFBhcnNlX2Vycm9yIHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuIH0pXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID0gb2xkX3BhcnNlcl9leG5cbiAgbGV0IHJhaXNlID0gcmFpc2VcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEF1dG9tYXRvbl9zdGF0ZVxub3BlbiBTdGF0ZVxuXG5sZXQgcmFpc2VfZXJyb3IgOiB0eXBlIGEgYi4gKGEsIGIpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IF8gPVxuICBmdW4gc3RhdGUgfmF0X2VvZiByZWFzb24gLT5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBQYXJzZV9lcnJvci5Qcml2YXRlLnJhaXNlXG4gICAgcmVhc29uXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbiAgICB+YXRfZW9mXG4gICAgfmF0b21fYnVmZmVyOnN0YXRlLmF0b21fYnVmZmVyXG47O1xuXG50eXBlIG5vbnJlYyBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLkNvbnRleHQudCA9XG4gIHwgU2V4cF9jb21tZW50XG4gIHwgU2V4cFxuXG5sZXQgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5jb250ZXh0XG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gJ3MgLT4gJ3NcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbmVuZFxuXG5tb2R1bGUgRXBzaWxvbiA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiAncyAtPiAnc1xuXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmRcblxubGV0IGN1cnJlbnRfcG9zID8oZGVsdGEgPSAwKSBzdGF0ZSA6IFBvc2l0aW9ucy5wb3MgPVxuICBsZXQgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0ICsgZGVsdGEgaW5cbiAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXI7IGNvbCA9IG9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXQ7IG9mZnNldCB9XG47O1xuXG5sZXQgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSB4ID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIHhcbmxldCBhZHZhbmNlIHN0YXRlID0gc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIDFcblxubGV0IGFkdmFuY2VfZW9sIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIGxldCBuZXdsaW5lX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICBzdGF0ZS5vZmZzZXQgPC0gbmV3bGluZV9vZmZzZXQgKyAxO1xuICBzdGF0ZS5ib2xfb2Zmc2V0IDwtIHN0YXRlLm9mZnNldDtcbiAgc3RhdGUubGluZV9udW1iZXIgPC0gc3RhdGUubGluZV9udW1iZXIgKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlID0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aFxuXG5sZXQgYWRkX3Rva2VuX2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgc3RhY2tcbjs7XG5cbmxldCBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBpc19pZ25vcmluZyBzdGF0ZSA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHAgLT4gZmFsc2VcbiAgfCBTZXhwX2NvbW1lbnQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX25vdF9pZ25vcmluZyBzdGF0ZSA9IG5vdCAoaXNfaWdub3Jpbmcgc3RhdGUpXG5cbmxldCBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlID1cbiAgbGV0IGlzX3NpbmdsZSA9XG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBTaW5nbGUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBpc19zaW5nbGUgJiYgc3RhdGUuZnVsbF9zZXhwcyA+IDAgJiYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBUb29fbWFueV9zZXhwc1xuOztcblxubGV0IGFkZF9wb3Mgc3RhdGUgfmRlbHRhID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0ICsgZGVsdGEpXG47O1xuXG5sZXQgYWRkX2ZpcnN0X2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgY2hhcjtcbiAgKCogRm9yIG5vbi1xdW90ZWQgYXRvbXMsIHdlIHNhdmUgYm90aCBwb3NpdGlvbnMgYXQgdGhlIGVuZC4gV2UgY2FuIGFsd2F5cyBkZXRlcm1pbmUgdGhlXG4gICAgIHN0YXJ0IHBvc2l0aW9uIGZyb20gdGhlIGVuZCBwb3NpdGlvbiBhbmQgdGhlIGF0b20gbGVuZ3RoIGZvciBub24tcXVvdGVkIGF0b21zLlxuXG4gICAgIERvaW5nIGl0IHRoaXMgd2F5IGFsbG93cyB1cyB0byBkZXRlY3Qgc2luZ2xlIGNoYXJhY2F0ZXIgYXRvbXMgZm9yIHdoaWNoIHdlIG5lZWQgdG9cbiAgICAgc2F2ZSB0aGUgcG9zaXRpb24gdHdpY2UuICopXG4gIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJyMnO1xuICBzdGFja1xuOztcblxubGV0IHN0YXJ0X3F1b3RlZF9zdHJpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICdcIic7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2VzY2FwZWQgc3RhdGUgYyBzdGFjayA9XG4gIGxldCBjJyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnbicgLT4gJ1xcbidcbiAgICB8ICdyJyAtPiAnXFxyJ1xuICAgIHwgJ2InIC0+ICdcXGInXG4gICAgfCAndCcgLT4gJ1xcdCdcbiAgICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1wiJyAtPiBjXG4gICAgfCBfIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xcXFwnO1xuICAgICAgY1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYyc7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xccic7XG4gIHN0YWNrXG47O1xuXG5sZXQgZGVjX3ZhbCBjID0gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG5cbmxldCBoZXhfdmFsIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICB8ICdhJyAuLiAnZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgfCBfIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG47O1xuXG5sZXQgYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBvcGVuaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIE9wZW4gc3RhY2sgZWxzZSBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICB0aGVuIChcbiAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBPcGVuIHN0YWNrKVxuICAgIGVsc2Ugc3RhY2tcbiAgfCBDc3QgLT4gT3BlbiAoY3VycmVudF9wb3Mgc3RhdGUsIHN0YWNrKVxuOztcblxubGV0IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0XG4gICAgc3RhdGUudXNlcl9zdGF0ZVxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG47O1xuXG5sZXQgcmVzZXRfcG9zaXRpb25zIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHAgLT4gKClcbiAgfCBDc3QgLT4gKClcbjs7XG5cbmxldCB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gIHwgU2luZ2xlIHwgTWFueSAtPiBzdGFja1xuICB8IEVhZ2VyIHsgZ290X3NleHAgPSBmOyBfIH0gLT5cbiAgICAoKiBNb2RpZnkgdGhlIG9mZnNldCBzbyB0aGF0IFtmXSBnZXQgYSBzdGF0ZSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50XG4gICAgICAgcy1leHByZXNzaW9uICopXG4gICAgbGV0IHNhdmVkX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICAgIHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyBkZWx0YTtcbiAgICBsZXQgc2F2ZWRfZnVsbF9zZXhwcyA9IHN0YXRlLmZ1bGxfc2V4cHMgaW5cbiAgICAobWF0Y2ggZiBzdGF0ZSBzdGFjayB3aXRoXG4gICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gICAgICAgcmFpc2UgZVxuICAgICB8IHN0YWNrIC0+XG4gICAgICAgKCogVGhpcyBhc3NlcnQgaXMgbm90IGEgZnVsbCBwcm90ZWN0aW9uIGFnYWluc3QgdGhlIHVzZXIgbXV0YXRpbmcgdGhlIHN0YXRlIGJ1dFxuICAgICAgICAgIGl0IHNob3VsZCBjYXRjaCBtb3N0IGNhc2VzLiAqKVxuICAgICAgIGFzc2VydCAoc3RhdGUub2Zmc2V0ID0gc2F2ZWRfb2Zmc2V0ICsgZGVsdGEgJiYgc3RhdGUuZnVsbF9zZXhwcyA9IHNhdmVkX2Z1bGxfc2V4cHMpO1xuICAgICAgIHN0YXRlLm9mZnNldCA8LSBzYXZlZF9vZmZzZXQ7XG4gICAgICAgcmVzZXRfcG9zaXRpb25zIHN0YXRlO1xuICAgICAgIHN0YWNrKVxuOztcblxubGV0IGlzX3RvcF9sZXZlbCBzdGF0ZSA9IGlzX25vdF9pZ25vcmluZyBzdGF0ZSAmJiBzdGF0ZS5kZXB0aCA9IDBcblxubGV0IGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZSB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgZWxzZSBzdGFja1xuOztcblxubGV0IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IF90bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPiBzdGF0ZS5kZXB0aCAtPlxuICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID0gc3RhdGUuZGVwdGggLT5cbiAgICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSB0bDtcbiAgICB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNleHBfYWRkZWQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHMgLT4gZGVsdGE6aW50IC0+IHMgPVxuICBmdW4gc3RhdGUgc3RhY2sgfmRlbHRhIC0+XG4gIGxldCBpc19jb21tZW50ID0gbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlIGluXG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZVxuICB0aGVuIChcbiAgICBpZiBub3QgaXNfY29tbWVudCB0aGVuIHN0YXRlLmZ1bGxfc2V4cHMgPC0gc3RhdGUuZnVsbF9zZXhwcyArIDE7XG4gICAgaWYgKG5vdCBpc19jb21tZW50KVxuICAgICAgIHx8XG4gICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICAgfCBDc3QgLT4gdHJ1ZVxuICAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YVxuICAgIGVsc2Ugc3RhY2spXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0IGFjYyA6IEF1dG9tYXRvbl9zdGFjay50IC0+IEF1dG9tYXRvbl9zdGFjay50ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBPcGVuIHN0YWNrIC0+IFNleHAgKExpc3QgYWNjLCBzdGFjaylcbiAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbWFrZV9saXN0IChzZXhwIDo6IGFjYykgc3RhY2tcbjs7XG5cbmxldCBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCAoc3RhY2sgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KVxuICA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPVxuICBtYXRjaCBzdGFjayB3aXRoXG4gIHwgSW5fc2V4cF9jb21tZW50IHIgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnQgeyByIHdpdGggcmV2X2NvbW1lbnRzID0gY29tbWVudCA6OiByLnJldl9jb21tZW50cyB9XG4gIHwgXyAtPiBUX29yX2NvbW1lbnQgKENvbW1lbnQgY29tbWVudCwgc3RhY2spXG47O1xuXG5sZXQgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgSW5fc2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgcmV2X2NvbW1lbnRzOyBzdGFjayB9IC0+XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgU2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgY29tbWVudHMgPSBMaXN0LnJldiByZXZfY29tbWVudHM7IHNleHAgfVxuICAgICAgaW5cbiAgICAgIGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrXG4gICAgfCBzdGFjayAtPiBUX29yX2NvbW1lbnQgKFNleHAgc2V4cCwgc3RhY2spXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdF9jc3QgZW5kX3BvcyBhY2MgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbWFrZV9saXN0X2NzdCBlbmRfcG9zICh0IDo6IGFjYykgc3RhY2tcbiAgICB8IE9wZW4gKHN0YXJ0X3Bvcywgc3RhY2spIC0+XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gTGlzdCB7IGxvYyA9IHsgc3RhcnRfcG9zOyBlbmRfcG9zIH07IGVsZW1lbnRzID0gYWNjIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gICAgfCBFbXB0eSB8IEluX3NleHBfY29tbWVudCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxubGV0IGNsb3NpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMFxuICB0aGVuIChcbiAgICBsZXQgc3RhY2sgOiBzID1cbiAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgICAgKCogTm90ZSB3ZSBzdG9yZSBlbmQgcG9zaXRpb25zIGFzIGluY2x1c2l2ZSBpbiBbUG9zaXRpb25zLnRdLCBzbyB3ZSB1c2UgW2RlbHRhOjBdLFxuICAgICAgICAgICB3aGlsZSBpbiB0aGUgW0NzdF0gY2FzZSB3ZSBzYXZlIGRpcmVjdGx5IHRoZSBmaW5hbCByYW5nZXMsIHNvIHdlIHVzZVxuICAgICAgICAgICBbZGVsdGE6MV0uICopXG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIHN0YWNrXG4gICAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gbWFrZV9saXN0IFtdIHN0YWNrIGVsc2Ugc3RhY2tcbiAgICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgICBtYWtlX2xpc3QgW10gc3RhY2spXG4gICAgICAgIGVsc2Ugc3RhY2tcbiAgICAgIHwgQ3N0IC0+IG1ha2VfbGlzdF9jc3QgKGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YToxKSBbXSBzdGFja1xuICAgIGluXG4gICAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggLSAxO1xuICAgIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gIGVsc2UgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbjs7XG5cbmxldCBtYWtlX2xvYyA/KGRlbHRhID0gMCkgKHN0YXRlIDogKEF1dG9tYXRvbl9zdGF0ZS5Gb3JfY3N0LnQsIF8pIEF1dG9tYXRvbl9zdGF0ZS50KVxuICA6IFBvc2l0aW9ucy5yYW5nZVxuICA9XG4gIHsgc3RhcnRfcG9zID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3M7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGEgfVxuOztcblxuKCogVGhpcyBpcyBhbHdheXMgY2FsbGVkIG9uIHRoZSBwb3NpdGlvbiBleGFjdGx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYVxuICAgbm9uLXF1b3RlZCBhdG9tICopXG5sZXQgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b20gPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBhdG9tIGluXG4gIGlmIGxlbiA9IDFcbiAgdGhlbiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfdHdpY2Ugc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgLSAxKVxuICBlbHNlIChcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLWxlbik7XG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKSlcbjs7XG5cbmxldCBlcHNfcHVzaF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGxvYyA6IFBvc2l0aW9ucy5yYW5nZSA9XG4gICAgICAgIHsgc3RhcnRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgICAgIDsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTowXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gQXRvbSB7IGxvYzsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzdHIgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IHB1c2hfcXVvdGVkX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1wiJztcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPVxuICAgICAgICBBdG9tIHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgcyB9XG4gICAgICBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MVxuOztcblxubGV0IHN0YXJ0X3NleHBfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSBzdGF0ZS5kZXB0aCA6OiBzdGF0ZS5pZ25vcmluZ19zdGFjaztcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgSW5fc2V4cF9jb21tZW50XG4gICAgICB7IGhhc2hfc2VtaV9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTsgcmV2X2NvbW1lbnRzID0gW107IHN0YWNrIH1cbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAxXG4gICAgdGhlbiAoXG4gICAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnIycpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG47O1xuXG5sZXQgZW5kX2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIC0gMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGNvbW1lbnQgPSBzIH1cbiAgICAgIGluXG4gICAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gICAgZWxzZSBzdGFja1xuOztcblxubGV0IHN0YXJ0X2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGVuZF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZTsgY29tbWVudCA9IHMgfSBpblxuICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBlcHNfZW9pX2NoZWNrIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFVuY2xvc2VkX3BhcmVuO1xuICBpZiBpc19pZ25vcmluZyBzdGF0ZSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwO1xuICBpZiBzdGF0ZS5mdWxsX3NleHBzID0gMFxuICB0aGVuIChcbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IE1hbnkgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZTsgXyB9IC0+ICgpXG4gICAgfCBTaW5nbGUgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSB0cnVlOyBfIH0gLT5cbiAgICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBOb19zZXhwX2ZvdW5kX2luX2lucHV0KTtcbiAgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19hdG9tXG4gIHwgUGFyc2luZ19saXN0XG4gIHwgUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX2F0b20gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19hdG9tXCJcbiAgICB8IFBhcnNpbmdfbGlzdCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2xpc3RcIlxuICAgIHwgUGFyc2luZ19zZXhwX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19zZXhwX2NvbW1lbnRcIlxuICAgIHwgUGFyc2luZ19ibG9ja19jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYmxvY2tfY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIG1hdGNoIHNleHBfb2ZfdCB0IHdpdGhcbiAgfCBBdG9tIHMgLT4gc1xuICB8IExpc3QgXyAtPiBmYWlsd2l0aCBcIkJVRzogW3NleHBfb2ZfdF0gcmV0dXJuZWQgYSBbTGlzdCBfXVwiXG47O1xuIiwib3BlbiBBdXRvbWF0b25fYWN0aW9uXG5cbmxldCByYWlzZSA9IEF1dG9tYXRvbl9hY3Rpb24ucmFpc2VfZXJyb3JcblxudHlwZSB1J1xudHlwZSBzJ1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3RhYmxlcy5wcmludF9jb2RlICgpICopXG5sZXQgdHJfMDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAwX2YgfVxuXG5sZXQgdHJfMDFfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDFfZiB9XG5cbmxldCB0cl8wMl9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDJfZiB9XG5cbmxldCB0cl8wM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wM19mIH1cblxubGV0IHRyXzA0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA0X2YgfVxuXG5sZXQgdHJfMDVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDVfZiB9XG5cbmxldCB0cl8wNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNl9mIH1cblxubGV0IHRyXzA3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA3X2YgfVxuXG5sZXQgdHJfMDhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOF9mIH1cblxubGV0IHRyXzA5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOV9mIH1cbmxldCB0cl8xMF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl8xMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTBfZiB9XG5sZXQgdHJfMTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl8xMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTFfZiB9XG5cbmxldCB0cl8xMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMl9mIH1cblxubGV0IHRyXzEzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTNfZiB9XG5cbmxldCB0cl8xNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNF9mIH1cblxubGV0IHRyXzE1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTVfZiB9XG5cbmxldCB0cl8xNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE2X2YgfVxuXG5sZXQgdHJfMTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTdfZiB9XG5cbmxldCB0cl8xOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE4X2YgfVxuXG5sZXQgdHJfMTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOV9mIH1cblxubGV0IHRyXzIwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMF9mIH1cblxubGV0IHRyXzIxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIxX2YgfVxuXG5sZXQgdHJfMjJfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG47O1xuXG5sZXQgdHJfMjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIyX2YgfVxuXG5sZXQgdHJfMjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIzX2YgfVxuXG5sZXQgdHJfMjRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjRfZiB9XG5cbmxldCB0cl8yNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI1X2YgfVxuXG5sZXQgdHJfMjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjZfZiB9XG5cbmxldCB0cl8yN19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI3X2YgfVxuXG5sZXQgdHJfMjhfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjhfZiB9XG5cbmxldCB0cl8yOV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI5X2YgfVxuXG5sZXQgdHJfMzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMF9mIH1cblxubGV0IHRyXzMxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMxX2YgfVxuXG5sZXQgdHJfMzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMl9mIH1cblxubGV0IHRyXzMzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzNfZiB9XG5cbmxldCB0cl8zNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9zZXhwX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM0X2YgfVxuXG5sZXQgdHJfMzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM1X2YgfVxuXG5sZXQgdHJfMzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM2X2YgfVxuXG5sZXQgdHJfMzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zN19mIH1cblxubGV0IHRyXzM4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM4X2YgfVxuXG5sZXQgdHJfMzlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM5X2YgfVxuXG5sZXQgdHJfNDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2VzY2FwZWQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQwX2YgfVxuXG5sZXQgdHJfNDFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDFfZiB9XG5cbmxldCB0cl80Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQyX2YgfVxuXG5sZXQgdHJfNDNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQzX2YgfVxuXG5sZXQgdHJfNDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NF9mIH1cblxubGV0IHRyXzQ1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDVfZiB9XG5cbmxldCB0cl80Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDZfZiB9XG5cbmxldCB0cl80N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ3X2YgfVxuXG5sZXQgdHJfNDhfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuOztcblxubGV0IHRyXzQ4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OF9mIH1cblxubGV0IHRyXzQ5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OV9mIH1cblxubGV0IHRyXzUwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTBfZiB9XG5cbmxldCB0cl81MV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG47O1xuXG5sZXQgdHJfNTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUxX2YgfVxuXG5sZXQgdHJfNTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUyX2YgfVxuXG5sZXQgdHJfNTNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81M19mIH1cblxubGV0IHRyXzU0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NF9mIH1cblxubGV0IHRyXzU1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTVfZiB9XG5cbmxldCB0cl81Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU2X2YgfVxuXG5sZXQgdHJfNTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTdfZiB9XG5cbmxldCB0cl81OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNThfZiB9XG5cbmxldCB0cl81OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU5X2YgfVxuXG5sZXQgdHJfNjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjBfZiB9XG5cbmxldCB0cl82MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYxX2YgfVxuXG5sZXQgdHJfNjJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Ml9mIH1cblxubGV0IHRyXzYzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjNfZiB9XG5cbmxldCB0cl82NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgKGlmIGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPD4gMCB0aGVuIDE2IGVsc2UgMCk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY0X2YgfVxuXG5sZXQgdHJfNjVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjVfZiB9XG5cbmxldCB0cl82Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY2X2YgfVxuXG5sZXQgdHJfNjdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjdfZiB9XG5cbmxldCB0cl82OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY4X2YgfVxuXG5sZXQgdHJfNjlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY5X2YgfVxuXG5sZXQgdHJfNzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MF9mIH1cblxubGV0IHRyXzcxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzFfZiB9XG5cbmxldCB0cl83Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcyX2YgfVxuXG5sZXQgdHJfNzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzczIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83M19mIH1cblxubGV0IHRyXzc0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NF9mIH1cblxubGV0IHRyXzc1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzVfZiB9XG5cbmxldCB0cl83Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc2X2YgfVxuXG5sZXQgdHJfNzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83N19mIH1cblxubGV0IHRyXzc4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc4X2YgfVxubGV0IHRyX2VvaV8wMF9mIHN0YXRlIHN0YWNrID0gZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xubGV0IHRyX2VvaV8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDBfZiB9XG5sZXQgdHJfZW9pXzAxX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyX2VvaV8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDFfZiB9XG5sZXQgdHJfZW9pXzAyX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfZW9pXzAyIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMl9mIH1cblxubGV0IHRyX2VvaV8wM19mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzAzIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wM19mIH1cblxubGV0IHRyX2VvaV8wNF9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA0IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNF9mIH1cblxubGV0IHRyX2VvaV8wNV9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA1IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNV9mIH1cbmxldCB0cl9lb2lfMDZfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbmxldCB0cl9lb2lfMDYgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA2X2YgfVxubGV0IHRyX2VvaV8wN19mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxubGV0IHRyX2VvaV8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDdfZiB9XG5cbmxldCB0cmFuc2l0aW9ucyA9XG4gIFt8IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAyXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAzXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAwXG4gICA7IHRyXzA0XG4gICA7IHRyXzA1XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA2XG4gICA7IHRyXzA3XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA4XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA5XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzAyXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI0XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI1XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI4XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI5XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI2XG4gICA7IHRyXzMwXG4gICA7IHRyXzMxXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzMyXG4gICA7IHRyXzMzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM0XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM1XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM3XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM4XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM5XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQxXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQyXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ0XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQxXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ2XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ3XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU2XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU0XG4gICA7IHRyXzU3XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU4XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzY0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzM1XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY1XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY2XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY3XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY4XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcwXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzY3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzc4XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gIHxdXG47O1xuXG5sZXQgdHJhbnNpdGlvbnNfZW9pID1cbiAgW3wgdHJfZW9pXzAwXG4gICA7IHRyX2VvaV8wMVxuICAgOyB0cl9lb2lfMDJcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzA0XG4gICA7IHRyX2VvaV8wNVxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgfF1cbjs7XG5cbmxldCBvbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcyA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50IGFycmF5ID1cbiAgW3wgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gIHxdXG47O1xuKCokKilcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN0YWNrID0gQXV0b21hdG9uX3N0YWNrXG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZVxuXG5sZXQgZmVlZCAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgY2hhciAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgaWR4ID0gKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSBsc2wgOCkgbG9yIENoYXIuY29kZSBjaGFyIGluXG4gIEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnMuKGlkeCkuZiBzdGF0ZSBjaGFyIHN0YWNrXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGZlZWRfZW9pICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgc3RhY2sgPSBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zX2VvaS4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKS5mIHN0YXRlIHN0YWNrIGluXG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgc3RhdGUgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHBfY29tbWVudCAtPiBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFNleHAgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIEF1dG9tYXRvbl90YWJsZXMub2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSlcbiAgICAgICAsIGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSApXG4gICAgIHdpdGhcbiAgICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIHRydWUgLT4gUGFyc2luZ19saXN0XG4gICAgIHwgcywgXyAtPiBzKVxuOztcblxubGV0IHJlYyBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3Vic3RyaW5nXCI7XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdWJieXRlcyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3ViYnl0ZXNcIjtcbiAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBzdGFjayA9XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG47O1xuXG5sZXQgZmVlZF9ieXRlcyBzdGF0ZSBzdHIgc3RhY2sgPSBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoQnl0ZXMubGVuZ3RoIHN0cilcblxubGV0IGVtcHR5X3N0YWNrIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gcyA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAtPiBTdGFjay5lbXB0eVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gU3RhY2suZW1wdHlcbiAgfCBQb3NpdGlvbnMgLT4gU3RhY2suSnVzdF9wb3NpdGlvbnMuZW1wdHlcbiAgfCBDc3QgLT4gU3RhY2suRm9yX2NzdC5lbXB0eVxuOztcblxubGV0IG9mX3N1YnN0cmluZyAodHlwZSB1IHMpIChtb2RlIDogKHUsIHMpIE1vZGUudCkgKGtpbmQgOiAodSwgcykgS2luZC50KSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzdGF0ZSA9IGNyZWF0ZSBtb2RlIGtpbmQgaW5cbiAgbGV0IHN0YWNrID0gZmVlZF9zdWJzdHJpbmcgc3RhdGUgcyB+cG9zIH5sZW4gKGVtcHR5X3N0YWNrIGtpbmQpIGluXG4gIHN0YXRlLCBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IHVzZXJfZXhuIDogZXhuXG4gIDsgc3ViX3NleHAgOiBTZXhwLnRcbiAgOyBsb2NhdGlvbiA6IFBvc2l0aW9ucy5yYW5nZSBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuIHsgdXNlcl9leG4gPSB1c2VyX2V4bl9fMDAyXzsgc3ViX3NleHAgPSBzdWJfc2V4cF9fMDA0XzsgbG9jYXRpb24gPSBsb2NhdGlvbl9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY2F0aW9uX18wMDZfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY2F0aW9uXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gU2V4cC5zZXhwX29mX3Qgc3ViX3NleHBfXzAwNF8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3ViX3NleHBcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2V4biB1c2VyX2V4bl9fMDAyXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ1c2VyX2V4blwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHVzZXJfZXhuIHQgPSB0LnVzZXJfZXhuXG5sZXQgc3ViX3NleHAgdCA9IHQuc3ViX3NleHBcbmxldCBsb2NhdGlvbiB0ID0gdC5sb2NhdGlvblxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBsaW5lLCBzdGFydCwgc3RvcCA9XG4gICAgbWF0Y2ggdC5sb2NhdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IDEsIDAsIDBcbiAgICB8IFNvbWUgeyBzdGFydF9wb3M7IGVuZF9wb3MgfSAtPlxuICAgICAgc3RhcnRfcG9zLmxpbmUsIHN0YXJ0X3Bvcy5jb2wsIHN0YXJ0X3Bvcy5jb2wgKyBlbmRfcG9zLm9mZnNldCAtIHN0YXJ0X3Bvcy5vZmZzZXRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICBFcnJvcjogcy1leHByZXNzaW9uIGNvbnZlcnNpb24gZXJyb3I7XFxuXFxcbiAgICAgZXhjZXB0aW9uICVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydFxuICAgIHN0b3BcbiAgICAoU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIHQudXNlcl9leG4pXG47O1xuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwOF8gLT5cbiAgICAgIGxldCByZXMwX18wMDlfID0gc2V4cF9vZl90IGFyZzBfXzAwOF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mX3NleHBfZXJyb3IubWwuT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDlfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIH51c2VyX2V4biB+c3ViX3NleHAgfmxvY2F0aW9uID1cbiAgcmFpc2UgKE9mX3NleHBfZXJyb3IgeyB1c2VyX2V4bjsgc3ViX3NleHA7IGxvY2F0aW9uIH0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2VfZXJyb3Igb2YgUGFyc2VfZXJyb3IudFxuICB8IE9mX3NleHBfZXJyb3Igb2YgT2Zfc2V4cF9lcnJvci50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBQYXJzZV9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwM18gLT5cbiAgICAgIGxldCByZXMwX18wMDRfID0gT2Zfc2V4cF9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDRfIF1cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBhcnNlX2Vycm9yIGUgLT4gUGFyc2VfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuICB8IE9mX3NleHBfZXJyb3IgZSAtPiBPZl9zZXhwX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VyX2ludGZcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmxldCBraW5kX3RvX3N0YWNrXG4gIDogdHlwZSBzdGFjay5cbiAgICAoJ3N0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCAtPiAobW9kdWxlIFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gID1cbiAgZnVuICh0eXBlIHN0YXRlKSAoa2luZCA6IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQpIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFNleHAgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFBvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5KdXN0X3Bvc2l0aW9ucyA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgQ3N0IC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuOztcblxubGV0IG1ha2UgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1vZGUgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgU1xuICAgICAgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuICAgICAgIGFuZCB0eXBlIFN0YXRlLnQgPSAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUudFxuICAgICAgIGFuZCB0eXBlIFN0YWNrLnQgPSBzdGFjaylcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyAoKSA9IEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgbW9kZSBraW5kXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IHN0b3Agc3RhdGUgPSBBLnNldF9lcnJvcl9zdGF0ZSBzdGF0ZVxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBtYWtlX3ZhbHVlIHN0YXRlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrKVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgPVxuICAgICAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlICgpIGluXG4gICAgICBmZWVkX2VvaSBzdGF0ZSAoZmVlZF9zdHJpbmcgc3RhdGUgc3RyIFN0YWNrLmVtcHR5KVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciA9XG4gICAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciBlXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IG1ha2VfZWFnZXIgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNfZWFnZXJcbiAgICAgIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcbiAgICAgICBhbmQgdHlwZSBTdGF0ZS50ID0gKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLnRcbiAgICAgICBhbmQgdHlwZSBTdGFjay50ID0gc3RhY2spXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgUmVhZF9vbmx5XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyA/KG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZSkgZiA9XG4gICAgICAgIGxldCBnb3Rfc2V4cCBzdGF0ZSBzdGFjayA9XG4gICAgICAgICAgbGV0IHBhcnNlZF92YWx1ZSA9IG1ha2VfdmFsdWUgc3RhdGUgc3RhY2sgaW5cbiAgICAgICAgICBmIHN0YXRlIHBhcnNlZF92YWx1ZTtcbiAgICAgICAgICBTdGFjay5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIChFYWdlciB7IGdvdF9zZXhwOyBub19zZXhwX2lzX2Vycm9yIH0pIGtpbmRcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBzdG9wIHQgPSBBLnNldF9lcnJvcl9zdGF0ZSB0XG4gICAgICBsZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHQgPSBBdXRvbWF0b24ub2xkX3BhcnNlcl9jb250X3N0YXRlIHRcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gaWdub3JlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrIDogU3RhY2sudClcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbW9kdWxlIExleGJ1Zl9jb25zdW1lciA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gU3RhdGUudFxuXG4gICAgICBleGNlcHRpb24gR290X3NleHAgb2YgcGFyc2VkX3ZhbHVlICogUG9zaXRpb25zLnBvc1xuXG4gICAgICBsZXQgZ290X3NleHAgc3RhdGUgcGFyc2VkX3ZhbHVlID1cbiAgICAgICAgcmFpc2Vfbm90cmFjZSAoR290X3NleHAgKHBhcnNlZF92YWx1ZSwgU3RhdGUucG9zaXRpb24gc3RhdGUpKVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IFN0YXRlLmNyZWF0ZSBnb3Rfc2V4cFxuXG4gICAgICBsZXQgcG9zX29mX2xleGJ1ZiBsZXhidWYgPVxuICAgICAgICBsZXQgcCA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCBpblxuICAgICAgICB7IFBvc2l0aW9ucy5saW5lID0gcC5wb3NfbG51bTsgY29sID0gcC5wb3NfY251bSAtIHAucG9zX2JvbDsgb2Zmc2V0ID0gcC5wb3NfY251bSB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdXBkYXRlX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgKHBvcyA6IFBvc2l0aW9ucy5wb3MpID1cbiAgICAgICAgbGV0IHAgPSBwb3Mub2Zmc2V0IC0gbGV4YnVmLmxleF9hYnNfcG9zIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BcbiAgICAgICAgPC0geyBsZXhidWYubGV4X2N1cnJfcCB3aXRoXG4gICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MubGluZVxuICAgICAgICAgICA7IHBvc19jbnVtID0gcG9zLm9mZnNldFxuICAgICAgICAgICA7IHBvc19ib2wgPSBwb3Mub2Zmc2V0IC0gcG9zLmNvbFxuICAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIGZlZWRfbGV4YnVmIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIHN0YWNrID1cbiAgICAgICAgbGV0IHN0YWNrID1cbiAgICAgICAgICBmZWVkX3N1YmJ5dGVzXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlclxuICAgICAgICAgICAgc3RhY2tcbiAgICAgICAgICAgIH5wb3M6bGV4YnVmLmxleF9jdXJyX3Bvc1xuICAgICAgICAgICAgfmxlbjoobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9jdXJyX3BvcylcbiAgICAgICAgaW5cbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbjtcbiAgICAgICAgaWYgbm90IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV4YnVmLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgICAgICBmZWVkX2xleGJ1ZiB0IGxleGJ1ZiBzdGFjaylcbiAgICAgICAgZWxzZSBmZWVkX2VvaSB0IHN0YWNrXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfZ2VuIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICAgICAgQS5yZXNldCB0IH5wb3M6KHBvc19vZl9sZXhidWYgbGV4YnVmKTtcbiAgICAgICAgbWF0Y2ggZmVlZF9sZXhidWYgdCBsZXhidWYgU3RhY2suZW1wdHkgd2l0aFxuICAgICAgICB8ICgpIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIE5vbmVcbiAgICAgICAgfCBleGNlcHRpb24gR290X3NleHAgKHBhcnNlZF92YWx1ZSwgcG9zKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIHBvcztcbiAgICAgICAgICBTb21lIHBhcnNlZF92YWx1ZVxuICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiAoU3RhdGUucG9zaXRpb24gdCk7XG4gICAgICAgICAgcmFpc2UgZXhuXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB4ID1cbiAgICAgICAgbWF0Y2ggQS5tb2RlIHQgd2l0aFxuICAgICAgICB8IEVhZ2VyIGUgLT4gZS5ub19zZXhwX2lzX2Vycm9yIDwtIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlIHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB0cnVlO1xuICAgICAgICBtYXRjaCBwYXJzZV9nZW4gdCBsZXhidWYgd2l0aFxuICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAucGFyc2VfZ2VuOiBOb25lXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9vcHQgdCBsZXhidWYgPVxuICAgICAgICBzZXRfbm9fc2V4cF9pc19lcnJvciB0IGZhbHNlO1xuICAgICAgICBwYXJzZV9nZW4gdCBsZXhidWZcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29udl9pbnRmXG5cbm1vZHVsZSBNYWtlXG4gICAgKE1vZGUgOiBNb2RlKVxuICAgIChTZXhwX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBNb2RlLnBhcnNlZF9zZXhwKVxuICAgIChQb3NpdGlvbnNfcGFyc2VyIDogUGFyc2VyLlMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IFBvc2l0aW9ucy50KSA9XG5zdHJ1Y3RcbiAgbGV0IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIHVzZXJfZXhuID1cbiAgICBsZXQgbG9jYXRpb24gPSBNb2RlLmZpbmQgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIGluXG4gICAgT2Zfc2V4cF9lcnJvci5yYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwOnN1YiB+bG9jYXRpb25cbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgZiA9XG4gICAgbGV0IHBhcnNlZF92YWx1ZSA9IFNleHBfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgbWF0Y2ggTW9kZS5hcHBseV9mIHBhcnNlZF92YWx1ZSB+ZiB3aXRoXG4gICAgfCB4IC0+IHhcbiAgICB8IGV4Y2VwdGlvbiBTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc3ViKSAtPlxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFBvc2l0aW9uc19wYXJzZXIucGFyc2Vfc3RyaW5nX2V4biBzdHIgaW5cbiAgICAgIHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBwYXJzZV9zdHJpbmcgc3RyIGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKVxuICA7O1xuXG4gIGxldCBjb252X2V4biAocGFyc2VkX3ZhbHVlLCBwb3NpdGlvbnMpIGYgPVxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT4gcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIGV4biB+c3ViXG4gIDs7XG5cbiAgbGV0IGNvbnYgeCBmID1cbiAgICBtYXRjaCBjb252X2V4biB4IGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgZVxuICA7O1xuXG4gIGxldCBjb252X2NvbWJpbmUgcmVzdWx0IGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChQYXJzZV9lcnJvciBlKVxuICAgIHwgT2sgeCAtPlxuICAgICAgKG1hdGNoIGNvbnYgeCBmIHdpdGhcbiAgICAgICB8IE9rIF8gYXMgciAtPiByXG4gICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChPZl9zZXhwX2Vycm9yIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnYuU1xubW9kdWxlIHR5cGUgUGFyc2VyID0gUGFyc2VyLlNcbm1vZHVsZSB0eXBlIEVhZ2VyX3BhcnNlciA9IFBhcnNlci5TX2VhZ2VyXG5cbm1vZHVsZSBDb252X2Vycm9yID0gQ29udl9lcnJvclxubW9kdWxlIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5tb2R1bGUgT2xkX3BhcnNlcl9jb250X3N0YXRlID0gT2xkX3BhcnNlcl9jb250X3N0YXRlXG5tb2R1bGUgUGFyc2VfZXJyb3IgPSBQYXJzZV9lcnJvclxubW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xubW9kdWxlIENzdCA9IENzdFxubW9kdWxlIEEgPSBBdXRvbWF0b25cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yXG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbm1vZHVsZSBTaW5nbGUgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgU2luZ2xlIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5tb2R1bGUgTWFueSA9ICh2YWwgUGFyc2VyLm1ha2UgU2V4cCBNYW55IChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X21hbnkpKVxubW9kdWxlIEVhZ2VyID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBTZXhwIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5cbmxldCBhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cCBzdGF0ZSBzdGFjayA9IGdldF9zZXhwIHN0YWNrLCBBLnBvc2l0aW9ucyBzdGF0ZVxuXG5sZXQgYW5kX3Bvc2l0aW9ucyBtb2RlIGdldF9zZXhwID1cbiAgUGFyc2VyLm1ha2UgU2V4cF93aXRoX3Bvc2l0aW9ucyBtb2RlIChhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cClcbjs7XG5cbm1vZHVsZSBTaW5nbGVfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBTaW5nbGUgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpXG5tb2R1bGUgTWFueV9hbmRfcG9zaXRpb25zID0gKHZhbCBhbmRfcG9zaXRpb25zIE1hbnkgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfYW5kX3Bvc2l0aW9ucyA9XG4gICh2YWwgUGFyc2VyLm1ha2VfZWFnZXJcbiAgICAgICAgIFNleHBfd2l0aF9wb3NpdGlvbnNcbiAgICAgICAgIChBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSB8PiBhbmRfZ2V0X3Bvc2l0aW9ucykpXG5cbmxldCBqdXN0X2dldF9wb3NpdGlvbnMgc3RhdGUgKCkgPSBBLnBvc2l0aW9ucyBzdGF0ZVxubGV0IGp1c3RfcG9zaXRpb25zIG1vZGUgPSBQYXJzZXIubWFrZSBQb3NpdGlvbnMgbW9kZSBqdXN0X2dldF9wb3NpdGlvbnNcblxubW9kdWxlIFNpbmdsZV9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwganVzdF9wb3NpdGlvbnMgU2luZ2xlKVxubW9kdWxlIE1hbnlfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIE1hbnkpXG5tb2R1bGUgRWFnZXJfanVzdF9wb3NpdGlvbnMgPSAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIFBvc2l0aW9ucyBqdXN0X2dldF9wb3NpdGlvbnMpXG5cbmxldCBjc3QgbW9kZSBmID0gUGFyc2VyLm1ha2UgQ3N0IG1vZGUgKGNvbnN0IGYpXG5cbm1vZHVsZSBNYW55X2NzdCA9ICh2YWwgY3N0IE1hbnkgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkpXG5cbm1vZHVsZSBFYWdlcl9jc3QgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIENzdCAoZnVuIF8gc3RhY2sgLT5cbiAgICAgbWF0Y2ggQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkgc3RhY2sgd2l0aFxuICAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG5cbnR5cGUgJ2EgaWQgPSAnYVxudHlwZSBzZXhwX2xpc3QgPSBTZXhwLnQgbGlzdFxuXG5tb2R1bGUgQ29udl9zaW5nbGUgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IGYgeFxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9waHlzXG4gICAgZW5kKVxuICAgIChTaW5nbGUpXG4gICAgKFNpbmdsZV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2EgbGlzdFxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgeCB+ZilcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgQ29udl9tYW55X2F0X29uY2UgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50IGxpc3RcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudCBsaXN0XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQXV0b21hdG9uID0gQXV0b21hdG9uXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbiAgbW9kdWxlIEF1dG9tYXRvbl9zdGF0ZSA9IEF1dG9tYXRvbl9zdGF0ZVxuICBtb2R1bGUgUG9zaXRpb25zID0gUG9zaXRpb25zXG5lbmRcbiIsIigqIGZvciBsZXhpbmcgcG9zaXRpb25zOlxuICAgLSBsbnVtIHN0YXJ0cyBmcm9tIDFcbiAgIC0gY251bSBzdGFydHMgZnJvbSAwXG4gICAtIHBvc19ib2wgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGxpbmVcblxuICAgZm9yIGFic29sdXRlIHBvczpcbiAgIC0gcm93IHN0YXJ0cyBmcm9tIDFcbiAgIC0gY29sIHN0YXJ0cyBmcm9tIDFcblxuICAgZm9yIHJlbGF0aXZlIHBvcywgb2J2aW91c2x5IDAgbWVhbnMgc2FtZSBwb3NpdGlvblxuKilcblxuKCogb3BlcmF0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9yIGJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBvc2l0aW9ucyAqKVxubW9kdWxlIFBvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcm93IDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHJvdzsgY29sIH0gPSBUeXBlLkF0b20gKFByaW50Zi5zcHJpbnRmIFwiJWQ6JWRcIiByb3cgY29sKVxuICBsZXQgYWRkIHQxIHQyID0geyByb3cgPSB0MS5yb3cgKyB0Mi5yb3c7IGNvbCA9IHQxLmNvbCArIHQyLmNvbCB9XG4gIGxldCBzdWIgdDEgdDIgPSB7IHJvdyA9IHQxLnJvdyAtIHQyLnJvdzsgY29sID0gdDEuY29sIC0gdDIuY29sIH1cblxuICBsZXQgY29tcGFyZSB7IHJvdyA9IHIxOyBjb2wgPSBjMSB9IHsgcm93ID0gcjI7IGNvbCA9IGMyIH0gPVxuICAgIGlmIHIxID0gcjIgdGhlbiBjMSAtIGMyIGVsc2UgcjEgLSByMlxuICA7O1xuXG4gIGxldCBnZXEgdDEgdDIgPSBjb21wYXJlIHQxIHQyID49IDBcbmVuZFxuXG5tb2R1bGUgUmVsYXRpdmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb3NcblxuICBsZXQgemVybyA9IHsgcm93ID0gMDsgY29sID0gMCB9XG5lbmRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IG9yaWdpbiA9IHsgcm93ID0gMTsgY29sID0gMSB9XG5cbiAgbGV0IG9mX2xleGluZyB7IExleGluZy5wb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2w7IHBvc19mbmFtZSA9IF8gfSA9XG4gICAgeyByb3cgPSBwb3NfbG51bTsgY29sID0gcG9zX2NudW0gLSBwb3NfYm9sICsgMSB9XG4gIDs7XG5cbiAgbGV0IGRpZmYgPSBzdWJcbmVuZFxuIiwiKCoqIFR5cGUgb2YgYW5ub3RhdGVkIFMtZXhwcmVzc2lvbnMgKilcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IG1hcCB0IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBmIHQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFBvcyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gVHlwZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgKCoqIEluIFtBdG9tIChfLCBzLCBvcHQpXSwgW3NdIGlzIHRoZSB1bmVzY2FwZWQgc3RyaW5nLCB0aGF0IGlzIHRoZSBhcmd1bWVudCBvZlxuICAgICAgICBbVHlwZS5BdG9tXS4gV2hlbiBbb3B0XSBpcyBkZWZpbmVkLCBpdCBpcyB0aGUgc291cmNlIHN5bnRheCBvZiBbc10sIHRoYXQgaXMgYVxuICAgICAgICBzdHJpbmcgdGhhdCBjYW4gYmUgcHJpbnRlZCBhcyBpcyBpZiBvbmUgd2FudHMgdG8gcGFyc2UgYW5kIHByaW50IHByZXNlcnZpbmdcbiAgICAgICAgc3ludGF4LiBUaGlzIGlzIHVzdWFsbHkgc2V0IGZvciBxdW90ZWQgYXRvbXMgKHRvIHByZXNlcnZlIHRoZSBmYWN0IHRoYXQgd2VyZVxuICAgICAgICBxdW90ZWQpLCBidXQgaXQgY2FuIGJlIHVzZWZ1bCB0byBkbyB0aGUgcmV2ZXJzZTogc2V0IGl0IGZvciBhdG9tcyB0aGF0IGNhbiBiZVxuICAgICAgICBwYXJzZWQgdW5xdW90ZWQgYnV0IHdvdWxkIGJlIHByaW50ZWQgd2l0aCBxdW90ZXMsIHRvIHByZXNlcnZlIHRoZSBsYWNrIG9mIHF1b3Rlcy5cbiAgICAgICAgRm9yIGluc3RhbmNlOlxuICAgICAgICBBdG9tIChfLCBcImFcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xhfH1cbiAgICAgICAgQXRvbSAoXywgXCJhIGJcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xcImEgYlwifH1cbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIFNvbWUgXCJcXFwiYVxcXCJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xcImFcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIFNvbWUgXCJhIGJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xhIGJ8fSBvciBtYXkgcmFpc2UsIGFzIGl0IGlzXG4gICAgICAgIGFuIGVycm9yIHRvIGNvbnN0cnVjdGVkIHN1Y2ggYW4gYXRvbSAoZG9lc24ndCBwYXJzZSBiYWNrKSAqKVxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0b20gb2YgUG9zLnQgKiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IExpc3Qgb2YgUG9zLnQgKiB0X29yX2NvbW1lbnQgbGlzdCAqIFBvcy50XG5cbiAgICAoKiBwb3NpdGlvbnMgb2YgbGVmdCBhbmQgcmlnaHQgcGFyZW5zICopXG4gICAgYW5kIHRfb3JfY29tbWVudCA9XG4gICAgICB8IFNleHAgb2YgdFxuICAgICAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuICAgIGFuZCBjb21tZW50ID1cbiAgICAgIHwgUGxhaW5fY29tbWVudCBvZiBQb3MudCAqIHN0cmluZ1xuICAgICAgfCBTZXhwX2NvbW1lbnQgb2YgUG9zLnQgKiBjb21tZW50IGxpc3QgKiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX3Rfb3JfY29tbWVudCA6IHRfb3JfY29tbWVudCAtPiBUeXBlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3NleHAgOiBzaWdcbiAgICB2YWwgb2ZfdCA6IHQgLT4gVHlwZS50XG4gICAgdmFsIG9mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBvZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIG1heWJlIHdlIGNhbiBhY3R1YWxseSB1c2UgY29udiBoZXJlLCBpbnN0ZWFkIG9mIGlubGluaW5nIGl0ICopXG5cbiAgICBsZXQgb2ZfcG9zID0gUG9zLnNleHBfb2ZfdFxuICAgIGxldCBvZl9zdHJpbmcgeCA9IFR5cGUuQXRvbSB4XG4gICAgbGV0IG9mX2xpc3Qgb2ZfYSB4cyA9IFR5cGUuTGlzdCAoTGlzdC5tYXAgfmY6b2ZfYSB4cylcblxuICAgIGxldCBvZl9vcHRpb24gb2ZfYSA9IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgeCAtPiBUeXBlLkxpc3QgWyBvZl9hIHggXVxuICAgICAgfCBOb25lIC0+IFR5cGUuTGlzdCBbXVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIG9mX3QgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJBdG9tXCI7IG9mX3BvcyB2MTsgb2Zfc3RyaW5nIHYyOyBvZl9vcHRpb24gb2Zfc3RyaW5nIHYzIF1cbiAgICAgIHwgTGlzdCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiTGlzdFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfdF9vcl9jb21tZW50IHYyOyBvZl9wb3MgdjMgXVxuXG4gICAgYW5kIG9mX3Rfb3JfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAgdCAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJTZXhwXCI7IG9mX3QgdCBdXG4gICAgICB8IENvbW1lbnQgYyAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJDb21tZW50XCI7IG9mX2NvbW1lbnQgYyBdXG5cbiAgICBhbmQgb2ZfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFBsYWluX2NvbW1lbnQgKHYxLCB2MikgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiUGxhaW5fY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2MiBdXG4gICAgICB8IFNleHBfY29tbWVudCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cF9jb21tZW50XCI7IG9mX3BvcyB2MTsgb2ZfbGlzdCBvZl9jb21tZW50IHYyOyBvZl90IHYzIF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gVG9fc2V4cC5vZl90XG4gIGxldCBzZXhwX29mX2NvbW1lbnQgPSBUb19zZXhwLm9mX2NvbW1lbnRcbiAgbGV0IHNleHBfb2ZfdF9vcl9jb21tZW50ID0gVG9fc2V4cC5vZl90X29yX2NvbW1lbnRcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKFNyY19wb3MuUmVsYXRpdmUpXG5tb2R1bGUgUGFyc2VkID0gTWFrZSAoU3JjX3Bvcy5BYnNvbHV0ZSlcblxubGV0IHJlbGF0aXZpemUgPVxuICBsZXQgcmVsIH5vdXRlcl9wIHAgPSBTcmNfcG9zLkFic29sdXRlLmRpZmYgcCBvdXRlcl9wIGluXG4gIGxldCByZWMgYXV4X3Qgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLkF0b20gKHBvcywgcywgc29wdCkgLT4gQXRvbSAocmVsIHBvcyB+b3V0ZXJfcCwgcywgc29wdClcbiAgICB8IFBhcnNlZC5MaXN0IChzdGFydF9wb3MsIHRvY3MsIGVuZF9wb3MpIC0+XG4gICAgICBMaXN0XG4gICAgICAgICggcmVsIHN0YXJ0X3BvcyB+b3V0ZXJfcFxuICAgICAgICAsIExpc3QubWFwIHRvY3MgfmY6KGZ1biB0b2MgLT4gYXV4X3RvYyB+b3V0ZXJfcDpzdGFydF9wb3MgdG9jKVxuICAgICAgICAsIHJlbCBlbmRfcG9zIH5vdXRlcl9wIClcbiAgYW5kIGF1eF90b2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlNleHAgdCAtPiBTZXhwIChhdXhfdCB0IH5vdXRlcl9wKVxuICAgIHwgUGFyc2VkLkNvbW1lbnQgYyAtPiBDb21tZW50IChhdXhfYyBjIH5vdXRlcl9wKVxuICBhbmQgYXV4X2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlBsYWluX2NvbW1lbnQgKHBvcywgdHh0KSAtPiBQbGFpbl9jb21tZW50IChyZWwgcG9zIH5vdXRlcl9wLCB0eHQpXG4gICAgfCBQYXJzZWQuU2V4cF9jb21tZW50IChwb3MsIGNzLCB0KSAtPlxuICAgICAgU2V4cF9jb21tZW50XG4gICAgICAgIChyZWwgcG9zIH5vdXRlcl9wLCBMaXN0Lm1hcCBjcyB+ZjooZnVuIGMgLT4gYXV4X2Mgfm91dGVyX3AgYyksIGF1eF90IHQgfm91dGVyX3ApXG4gIGluXG4gIGZ1biB0b2MgLT4gYXV4X3RvYyB0b2Mgfm91dGVyX3A6U3JjX3Bvcy5BYnNvbHV0ZS5vcmlnaW5cbjs7XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKFxuIyAxNSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgc3RyaW5nXG4jIDYgXCJzcmMvcGFyc2VyLm1sXCJcbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nXG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiMgMjcgXCJzcmMvcGFyc2VyLm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OCAoKiBMUEFSRU4gKik7XG4gIDI1OSAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MCAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMjJcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAxMFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDE1XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDEzXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDQwXFwwMDBcXFxuXFwwMzRcXDI1NVxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwyNTVcXFxuXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMjU1XFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMjU1XFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAyOVxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjg2XG5sZXQgeXl0YWJsZSA9IFwiXFwwMTZcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAyOVxcMDAwXFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAzOVxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjJcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzMVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjZcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDhcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDhcXDAwMFxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwMTFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDE3NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTgxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgKCBUeXBlLkF0b20gXzEgKVxuIyAxODggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgW10gKVxuIyAxOTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAzOCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgKExpc3QucmV2IF8yKSApXG4jIDIwMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjA3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxNCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyMiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyOSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMzcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMSApXG4jIDI0NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzIgKVxuIyAyNTIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDI1OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBOb25lIClcbiMgMjY1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDI3MiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggW10gKVxuIyAyNzkgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjk1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMwMiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMDggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzE1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMyMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlLnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKFxuIyA1MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgc3RyaW5nICogKExleGluZy5wb3NpdGlvbiAqIHN0cmluZykgb3B0aW9uXG4jIDYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbilcbiAgfCBDT01NRU5UIG9mIChcbiMgNTQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgIHN0cmluZyAqIExleGluZy5wb3NpdGlvbiBvcHRpb25cbiMgMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nXG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuICAoKiBjb21wYXJlIHRvIHBhcnNlci5tbHkgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSBXaXRoX3BvcyA9IHN0cnVjdFxuXG4gICAgb3BlbiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZFxuXG4gICAgbGV0IGNvZXJjZSA9IFNyY19wb3MuQWJzb2x1dGUub2ZfbGV4aW5nXG5cbiAgICBsZXQgc3RhcnRfcG9zICgpID0gY29lcmNlIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpXG5cbiAgICBsZXQgZW5kX3BvcyAoKSA9XG4gICAgICBsZXQgcCA9IFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MgKCkgaW5cbiAgICAgIGNvZXJjZSB7IHAgd2l0aCBMZXhpbmcucG9zX2NudW0gPSBwLkxleGluZy5wb3NfY251bSAtIDEgfVxuXG4gICAgbGV0IGF0b20gKHgsIHkpID1cbiAgICAgIGxldCAocG9zLCB5KSA9XG4gICAgICAgIG1hdGNoIHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKHN0YXJ0X3BvcyAoKSwgU29tZSB4KVxuICAgICAgICB8IFNvbWUgKHBvcywgeCkgLT4gKGNvZXJjZSBwb3MsIFNvbWUgeClcbiAgICAgIGluXG4gICAgICBBdG9tIChwb3MsIHgsIHkpXG5cbiAgICBsZXQgbGlzdCB0cyA9IExpc3QgKHN0YXJ0X3BvcyAoKSwgdHMsIGVuZF9wb3MgKCkpXG5cbiAgICBsZXQgc2V4cCAgICB4ID0gU2V4cCAgICB4XG4gICAgbGV0IGNvbW1lbnQgeCA9IENvbW1lbnQgeFxuXG4gICAgbGV0IHNleHBfY29tbWVudCBjcyB0ID0gU2V4cF9jb21tZW50IChzdGFydF9wb3MgKCksIGNzLCB0KVxuXG4gICAgbGV0IHBsYWluX2NvbW1lbnQgKHgsIHBvc19vcHQpID1cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBwb3Nfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN0YXJ0X3BvcyAoKVxuICAgICAgICB8IFNvbWUgcG9zIC0+IGNvZXJjZSBwb3NcbiAgICAgIGluXG4gICAgICBQbGFpbl9jb21tZW50IChwb3MsIHgpXG5cbiAgZW5kXG5cbiMgNzAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OSAoKiBMUEFSRU4gKik7XG4gIDI2MCAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MSAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gIDI1OCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMTBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAwNlxcMDAwXFwwMjJcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAyMFxcMDAwXFwwMTVcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTZcXDAwMFxcMDIxXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDE3XFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDZcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMThcXDAwMFxcMDIxXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMTVcXDAwMFxcMDIyXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDM3XFwwMDBcXFxuXFwwMDlcXDI1NVxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDI1NVxcMDA5XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyN1xcMjU1XFwyNTFcXDI1NVxcMjM1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjM0XFwyNTVcXDAxMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjkyXG5sZXQgeXl0YWJsZSA9IFwiXFwwMzZcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMjhcXDAwMFxcMDMzXFwwMDBcXDAxOVxcMDAwXFwwMzdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMjVcXDAwMFxcMDExXFwwMDBcXDAyN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAzNVxcMDAwXFwwMTFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDEwXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFwwMDVcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBMUEFSRU5cXDAwMFxcXG4gIFJQQVJFTlxcMDAwXFxcbiAgRU9GXFwwMDBcXFxuICBIQVNIX1NFTUlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBTVFJJTkdcXDAwMFxcXG4gIENPTU1FTlRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICggV2l0aF9wb3MuYXRvbSBfMSApXG4jIDIyMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA3NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5saXN0IChMaXN0LnJldiBfMikgKVxuIyAyMjkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3NyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAoIHBhcnNlX2ZhaWx1cmUgXCJzZXhwXCIgKVxuIyAyMzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA4MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICggV2l0aF9wb3MucGxhaW5fY29tbWVudCBfMSApXG4jIDI0MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3Muc2V4cF9jb21tZW50IChMaXN0LnJldiBfMikgXzMgKVxuIyAyNTAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggW10gKVxuIyAyNTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI2NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X2NvbW1lbnRzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHAgXzEgKVxuIyAyNzEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggV2l0aF9wb3MuY29tbWVudCBfMSApXG4jIDI3OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDkyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggW10gKVxuIyAyODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDkzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAoIFR5cGVfd2l0aF9sYXlvdXQucmVsYXRpdml6ZSBfMSApXG4jIDI5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBTb21lIF8xIClcbiMgMzA2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAzMTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTAzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBbXzFdIClcbiMgMzE5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDMyNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMzM0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwOCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM0MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTEyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzUzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDM2MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzX2FicyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbilcbmxldCBzZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbmxldCBzZXhwc19hYnMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkLnRfb3JfY29tbWVudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbiIsIiMgMSBcInNyYy9sZXhlci5tbGxcIlxuIFxuICAoKiogTGV4ZXI6IExleGVyIFNwZWNpZmljYXRpb24gZm9yIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIFByaW50ZlxuICBvcGVuIExleGluZ1xuXG4gIGxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICAgIHwgJ24nIC0+ICdcXDAxMCdcbiAgICB8ICdyJyAtPiAnXFwwMTMnXG4gICAgfCAnYicgLT4gJ1xcMDA4J1xuICAgIHwgJ3QnIC0+ICdcXDAwOSdcbiAgICB8IGMgLT4gY1xuXG4gIGxldCBsZiA9ICdcXDAxMCdcblxuICBsZXQgZGVjX2NvZGUgYzEgYzIgYzMgPVxuICAgIDEwMCAqIChDaGFyLmNvZGUgYzEgLSA0OCkgKyAxMCAqIChDaGFyLmNvZGUgYzIgLSA0OCkgKyAoQ2hhci5jb2RlIGMzIC0gNDgpXG5cbiAgbGV0IGhleF9jb2RlIGMxIGMyID1cbiAgICBsZXQgZDEgPSBDaGFyLmNvZGUgYzEgaW5cbiAgICBsZXQgdmFsMSA9XG4gICAgICBpZiBkMSA+PSA5NyB0aGVuIGQxIC0gODdcbiAgICAgIGVsc2UgaWYgZDEgPj0gNjUgdGhlbiBkMSAtIDU1XG4gICAgICBlbHNlIGQxIC0gNDggaW5cbiAgICBsZXQgZDIgPSBDaGFyLmNvZGUgYzIgaW5cbiAgICBsZXQgdmFsMiA9XG4gICAgICBpZiBkMiA+PSA5NyB0aGVuIGQyIC0gODdcbiAgICAgIGVsc2UgaWYgZDIgPj0gNjUgdGhlbiBkMiAtIDU1XG4gICAgICBlbHNlIGQyIC0gNDggaW5cbiAgICB2YWwxICogMTYgKyB2YWwyXG5cbiAgbGV0IGZvdW5kX25ld2xpbmUgbGV4YnVmIGRpZmYgPVxuICAgIGxldCBsZXhfY3Vycl9wID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAge1xuICAgICAgICBsZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsZXhfY3Vycl9wLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxleF9jdXJyX3AucG9zX2NudW0gLSBkaWZmO1xuICAgICAgfVxuXG4gICgqIHNhbWUgbGVuZ3RoIGNvbXB1dGF0aW9uIGFzIGluIFtMZXhpbmcubGV4ZW1lXSAqKVxuICBsZXQgbGV4ZW1lX2xlbiB7IGxleF9zdGFydF9wb3M7IGxleF9jdXJyX3BvczsgXyB9ID0gbGV4X2N1cnJfcG9zIC0gbGV4X3N0YXJ0X3Bvc1xuXG4gIGxldCBtYWluX2ZhaWx1cmUgbGV4YnVmIG1zZyA9XG4gICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgXCJTZXhwbGliLkxleGVyLm1haW46ICVzIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgIG1zZyBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgICAgIHZhbCBhZGRfY2hhciA6IHQgLT4gY2hhciAtPiB1bml0XG4gICAgICB2YWwgYWRkX3N1YmJ5dGVzIDogdCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfbGV4ZW1lIDogdCAtPiBsZXhidWYgLT4gdW5pdFxuICAgICAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gICAgICB2YWwgb2ZfYnVmZmVyIDogQnVmZmVyLnQgLT4gdFxuICAgIGVuZFxuICAgIG1vZHVsZSBUb2tlbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgbHBhcmVuIDogdFxuICAgICAgdmFsIHJwYXJlbiA6IHRcbiAgICAgIHZhbCBlb2YgOiB0XG4gICAgICB2YWwgc2ltcGxlX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICB2YWwgaGFzaF9zZW1pIDogdFxuICAgICAgdmFsIHF1b3RlZF9zdHJpbmcgOiBMZXhpbmcucG9zaXRpb24gLT4gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiB0XG4gICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgdmFsIGNvbW1lbnQgOiBzdHJpbmcgLT4gbWFpbjpzIC0+IHNcbiAgICAgIHZhbCBibG9ja19jb21tZW50IDogTGV4aW5nLnBvc2l0aW9uIC0+IG1haW46cyAtPiBzXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogVCkgOiBzaWdcbiAgICB2YWwgbWFpbiA6ID9idWY6QnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiBYLlRva2VuLnRcbiAgZW5kID0gc3RydWN0ICgqIEJFR0lOIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG4gICAgb3BlbiBYXG5cbiMgODQgXCJzcmMvbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjQ0XFwyNTVcXDAxMFxcMDAwXFwwNDNcXDAwMFxcMDUzXFwwMDBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDA4NlxcMDAwXFwyNDhcXDI1NVxcMjQ5XFwyNTVcXDA5NlxcMDAwXFxcbiAgICBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTcyXFwwMDBcXDE4MlxcMDAwXFwyMjBcXDAwMFxcMjMwXFwwMDBcXDAwN1xcMDAxXFwyNDdcXDI1NVxcXG4gICAgXFwwMTdcXDAwMVxcMDUwXFwwMDFcXDA2MFxcMDAxXFwwOTNcXDAwMVxcMTAzXFwwMDFcXDEzNlxcMDAxXFwxNDZcXDAwMVxcMTgxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDIyNFxcMDAxXFwyMzRcXDAwMVxcMDExXFwwMDJcXDAzN1xcMDAwXFwyNDZcXDI1NVxcMDgwXFwwMDBcXDI0OFxcMjU1XFxcbiAgICBcXDAyM1xcMDAyXFwyNTVcXDI1NVxcMjQ5XFwyNTVcXDA1N1xcMDAyXFwwMzNcXDAwMlxcMjUyXFwyNTVcXDAwN1xcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMTEyXFwwMDJcXDI1MVxcMjU1XFwxNDRcXDAwMlxcMjUwXFwyNTVcXDA4MVxcMDAwXFwyNTBcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMTIyXFwwMDBcXDI1NVxcMjU1XFwxNjZcXDAwMFxcMTMwXFwwMDFcXDI1MlxcMjU1XFwyNTFcXDI1NVxcMTczXFwwMDFcXDI1MVxcMDAxXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDIzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAxN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzVcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDQ2XFwwMDBcXDAwOVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMzZcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXDAzOFxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDUzXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDI0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxN1xcMDAwXFwwNTlcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDE5XFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMjlcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDI1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBtYWluIGJ1ZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICggZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgbWFpbiBidWYgbGV4YnVmIClcbiMgMzcwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgKCBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNzUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRcbiMgMzgxIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uY29tbWVudCB0ZXh0IH5tYWluIGJ1ZiBsZXhidWYgKVxuIyAzODUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA5OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmxwYXJlbiApXG4jIDM5MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDEwMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLnJwYXJlbiApXG4jIDM5NSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDEwMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgcG9zID0gTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBwb3MgbGV4YnVmO1xuICAgICAgICBsZXQgdG9rID0gVG9rZW4ucXVvdGVkX3N0cmluZyBwb3MgYnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQwNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG4jIDExMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBUb2tlbi5oYXNoX3NlbWkgKVxuIyA0MTIgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxMTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIFtwb3NdIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLmJsb2NrX2NvbW1lbnQgcG9zIH5tYWluIGJ1ZiBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICB0b2tcbiAgICAgIClcbiMgNDI0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTIwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCIgKVxuIyA0MjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMjYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggbWFpbl9mYWlsdXJlIGxleGJ1ZiBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIiApXG4jIDQzNCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxMCAtPlxubGV0XG4jIDEyNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJcbiMgNDQwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uc2ltcGxlX3N0cmluZyBzdHIgKVxuIyA0NDQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTI4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4uZW9mIClcbiMgNDQ5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiAzNlxuYW5kIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMzEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7ICgpIClcbiMgNDYxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTMzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDIgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDcxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTQwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDMgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDgxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAxNDYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDQ4NyBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNDcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChjaGFyX2Zvcl9iYWNrc2xhc2ggYyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0OTUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgIGMxXG4jIDUwMSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTA2IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzXG4jIDUxMSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBpblxuIyAxNTMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHYgPSBkZWNfY29kZSBjMSBjMiBjMyBpblxuICAgICAgICBpZiB2ID4gMjU1IHRoZW4gKFxuICAgICAgICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9zdHJpbmc6IFxcXG4gICAgICAgICAgICAgICBpbGxlZ2FsIGVzY2FwZSBhdCBsaW5lICVkIGNoYXIgJWQ6IGBcXFxcJWMlYyVjJ1wiXG4gICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wgLSAzKVxuICAgICAgICAgICAgICBjMSBjMiBjMyBpblxuICAgICAgICAgIGZhaWx3aXRoIG1zZyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1MjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxubGV0XG4jIDE2OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMVxuIyA1MzUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMlxuIyA1NDAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTY5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gaGV4X2NvZGUgYzEgYzIgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociB2KTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU0OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMTc1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBjXG4jIDU1NSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNzYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGM7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NjQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxODMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGxmO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTc0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTkwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBvZnMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIG9mcyBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIG9mcyBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1ODUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgICAgICBzdGFydC5wb3NfbG51bSAoc3RhcnQucG9zX2NudW0gLSBzdGFydC5wb3NfYm9sKVxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBtc2dcbiAgICAgIClcbiMgNTk3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgNTNcbmFuZCBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjA5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDsgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiApXG4jIDYxMCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDIxMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MTYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAyMTUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBsZXQgY3VyID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMSB9IGluXG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWZcbiAgICAgIClcbiMgNjI3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMjIzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgKFxuICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgIGxldCBzdGFydCA9IHsgY3VyIHdpdGggcG9zX2NudW0gPSBjdXIucG9zX2NudW0gLSAyIH0gaW5cbiAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgKHN0YXJ0IDo6IGxvY3MpIGxleGJ1ZlxuICAgIClcbiMgNjM3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMjMwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbWF0Y2ggbG9jcyB3aXRoXG4gICAgICAgIHwgW19dIC0+ICgpICgqIHRoZSBjb21tZW50IGlzIGZpbmlzaGVkICopXG4gICAgICAgIHwgXyA6OiAoXyA6OiBfIGFzIHQpIC0+IHNjYW5fYmxvY2tfY29tbWVudCBidWYgdCBsZXhidWZcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UgICgqIGltcG9zc2libGUgKilcbiAgICAgIClcbiMgNjQ4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgMjM4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gOjogXyAtPlxuICAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgIHNwcmludGYgXCJTZXhwbGliLkxleGVyLnNjYW5fYmxvY2tfY29tbWVudDogXFxcbiAgICAgICAgICAgICAgICB1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudCBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDY2MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMjUwIFwic3JjL2xleGVyLm1sbFwiXG4gICgqIFJFU1VNRSBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gICAgbGV0IG1haW4gP2J1ZiA9XG4gICAgICBsZXQgYnVmID1cbiAgICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNyZWF0ZSA2NFxuICAgICAgICB8IFNvbWUgYnVmIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5vZl9idWZmZXIgYnVmXG4gICAgICBpblxuICAgICAgbWFpbiBidWZcblxuICBlbmQgKCogRU5EIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG5cbiAgbW9kdWxlIFZhbmlsbGEgPVxuICAgIE1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQnVmZmVyXG4gICAgICAgIGxldCBhZGRfbGV4ZW1lIF8gXyA9ICgpXG4gICAgICAgIGxldCBvZl9idWZmZXIgYiA9IGJcbiAgICAgIGVuZFxuICAgICAgbW9kdWxlIFRva2VuID0gc3RydWN0XG4gICAgICAgIG9wZW4gUGFyc2VyXG4gICAgICAgIHR5cGUgdCA9IHRva2VuXG4gICAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICAgIGxldCBlb2YgPSBFT0ZcbiAgICAgICAgbGV0IGxwYXJlbiA9IExQQVJFTlxuICAgICAgICBsZXQgcnBhcmVuID0gUlBBUkVOXG4gICAgICAgIGxldCBoYXNoX3NlbWkgPSBIQVNIX1NFTUlcbiAgICAgICAgbGV0IHNpbXBsZV9zdHJpbmcgeCA9IFNUUklORyB4XG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIF8gYnVmID0gU1RSSU5HIChCdWZmZXIuY29udGVudHMgYnVmKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBfcG9zIH5tYWluIGJ1ZiBsZXhidWYgPVxuICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZlxuICAgICAgICBsZXQgY29tbWVudCBfdGV4dCB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKCogc2tpcCBhbmQgY29udGludWUgbGV4aW5nICopXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFdpdGhfbGF5b3V0ID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7XG4gICAgICAgICAgY29udGVudHMgOiBCdWZmZXIudDtcbiAgICAgICAgICBsZXhlbWUgOiBCdWZmZXIudDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3JlYXRlIG4gPSB7Y29udGVudHMgPSBCdWZmZXIuY3JlYXRlIG47IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgbn1cbiAgICAgICAgbGV0IG9mX2J1ZmZlciBjb250ZW50cyA9IHsgY29udGVudHM7IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgNjQgfVxuICAgICAgICBsZXQgYWRkX2NoYXIgdCBjaCA9IEJ1ZmZlci5hZGRfY2hhciB0LmNvbnRlbnRzIGNoXG4gICAgICAgIGxldCBhZGRfc3ViYnl0ZXMgdCBzdHIgb2ZzIGxlbiA9IEJ1ZmZlci5hZGRfc3ViYnl0ZXMgdC5jb250ZW50cyBzdHIgb2ZzIGxlblxuICAgICAgICBsZXQgYWRkX2xleGVtZSB0IGxleGJ1ZiA9IEJ1ZmZlci5hZGRfc3RyaW5nIHQubGV4ZW1lIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgbGV0IGNsZWFyIHQgPSBCdWZmZXIuY2xlYXIgdC5sZXhlbWU7IEJ1ZmZlci5jbGVhciB0LmNvbnRlbnRzXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlcl93aXRoX2xheW91dFxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgKHgsIE5vbmUpXG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIHBvcyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHM7IGxleGVtZX0gPVxuICAgICAgICAgIFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGNvbnRlbnRzLCBTb21lIChwb3MsIEJ1ZmZlci5jb250ZW50cyBsZXhlbWUpKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBwb3Mgfm1haW46XyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHMgPSBfOyBsZXhlbWV9IF9sZXhidWYgPVxuICAgICAgICAgIENPTU1FTlQgKEJ1ZmZlci5jb250ZW50cyBsZXhlbWUsIFNvbWUgcG9zKVxuICAgICAgICBsZXQgY29tbWVudCB0ZXh0IH5tYWluOl8gX2J1ZiBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UICh0ZXh0LCBOb25lKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIGxldCBtYWluID0gVmFuaWxsYS5tYWluXG4gIGxldCBtYWluX3dpdGhfbGF5b3V0ID0gV2l0aF9sYXlvdXQubWFpblxuXG5cbiMgNzQ1IFwic3JjL2xleGVyLm1sXCJcbiIsIigqIFNleHA6IE1vZHVsZSBmb3IgaGFuZGxpbmcgUy1leHByZXNzaW9ucyAoSS9PLCBldGMuKSAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBCaWdhcnJheVxubW9kdWxlIFNleHBsaWIgPSBTZXhwbGliMFxubW9kdWxlIENvbnYgPSBTZXhwbGliLlNleHBfY29udlxuXG4oKiBjb252Lm1sIGRlcGVuZHMgb24gdXMgc28gd2UgY2FuIG9ubHkgdXNlIHRoaXMgbW9kdWxlICopXG5cbmluY2x1ZGUgVHlwZVxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbmluY2x1ZGUgKFxuICBTZXhwbGliLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByaXZhdGVcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIEkvTy1jaGFubmVscyAqKVxuXG5sZXQgd2l0aF9uZXdfYnVmZmVyIG9jIGYgPVxuICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gIGYgYnVmO1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBidWZcbjs7XG5cbmxldCBvdXRwdXRfaHVtIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSBzZXhwIH5idWYpXG5cbmxldCBvdXRwdXRfaHVtX2luZGVudCBpbmRlbnQgb2Mgc2V4cCA9XG4gIHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfaHVtIH5pbmRlbnQgc2V4cCB+YnVmKVxuOztcblxubGV0IG91dHB1dF9tYWNoIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmKVxubGV0IG91dHB1dCA9IG91dHB1dF9tYWNoXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZpbGUgKilcblxuKCogVGhlIHRlbXAgZmlsZSBmdW5jdGlvbnMgaW4gdGhlIE9DYW1sIEZpbGVuYW1lIG1vZHVsZSBkbyBub3Qgc3VwcG9ydFxuICAgcGVybWlzc2lvbnMuICBCdXQgb3BlbmluZyBhIGZpbGUgd2l0aCBnaXZlbiBwZXJtaXNzaW9ucyBpcyBkaWZmZXJlbnRcbiAgIGZyb20gb3BlbmluZyBpdCBhbmQgY2htb2RpbmcgaXQgdG8gdGhlc2UgcGVybWlzc2lvbnMsIGJlY2F1c2UgdGhlIHVtYXNrXG4gICBpcyB0YWtlbiBpbiBhY2NvdW50LiAgVW5kZXIgVW5peCB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGdldCB0aGUgdW1hc2sgaW5cbiAgIGEgdGhyZWFkLXNhZmUgd2F5LiAqKVxubW9kdWxlIFRtcF9maWxlID0gc3RydWN0XG4gIGxldCBwcm5nID0gcmVmIE5vbmVcblxuICBsZXQgdGVtcF9maWxlX25hbWUgcHJlZml4IHN1ZmZpeCA9XG4gICAgbGV0IHJhbmRfc3RhdGUgPVxuICAgICAgbWF0Y2ggIXBybmcgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCByZXQgPSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkgaW5cbiAgICAgICAgcHJuZyA6PSBTb21lIHJldDtcbiAgICAgICAgcmV0XG4gICAgaW5cbiAgICBsZXQgcm5kID0gUmFuZG9tLlN0YXRlLmJpdHMgcmFuZF9zdGF0ZSBsYW5kIDB4RkZGRkZGIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4XG4gIDs7XG5cbiAgKCogS2VlcCB0aGUgcGVybWlzc2lvbnMgbG9vc2UuIFNleHBzIGFyZSB1c3VhbGx5IHNoYXJlZCBhbmQgcmFyZWx5IHByaXZhdGUqKVxuICBsZXQgb3Blbl90ZW1wX2ZpbGUgPyhwZXJtID0gMG82NjYpIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgb2MgPVxuICAgICAgICAgIG9wZW5fb3V0X2dlbiBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2w7IE9wZW5fdGV4dCBdIHBlcm0gbmFtZVxuICAgICAgICBpblxuICAgICAgICBuYW1lLCBvY1xuICAgICAgd2l0aFxuICAgICAgfCBTeXNfZXJyb3IgXyBhcyBlIC0+IGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gICAgaW5cbiAgICB0cnlfbmFtZSAwXG4gIDs7XG5lbmRcblxubGV0IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9mdW5jdGlvbiBmaWxlIHNleHAgPVxuICBsZXQgdG1wX25hbWUsIG9jID0gVG1wX2ZpbGUub3Blbl90ZW1wX2ZpbGUgP3Blcm0gZmlsZSBcInRtcFwiIGluXG4gICh0cnlcbiAgICAgb3V0cHV0X2Z1bmN0aW9uIG9jIHNleHA7XG4gICAgIGNsb3NlX291dCBvY1xuICAgd2l0aFxuICAgfCBlIC0+XG4gICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICAgKHRyeSBTeXMucmVtb3ZlIHRtcF9uYW1lIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgIHJhaXNlIGUpO1xuICBTeXMucmVuYW1lIHRtcF9uYW1lIGZpbGVcbjs7XG5cbmxldCBvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2Mgc2V4cCA9XG4gIGRvX291dHB1dCBvYyBzZXhwO1xuICBvdXRwdXRfc3RyaW5nIG9jIFwiXFxuXCJcbjs7XG5cbmxldCBzYXZlX2h1bSA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwXG5sZXQgc2F2ZV9tYWNoID9wZXJtIGZpbGUgc2V4cCA9IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9tYWNoIGZpbGUgc2V4cFxubGV0IHNhdmUgPSBzYXZlX21hY2hcbmxldCBvdXRwdXRfc2V4cHNfbmwgZG9fb3V0cHV0IG9jIHNleHBzID0gTGlzdC5pdGVyIChvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2MpIHNleHBzXG5cbmxldCBzYXZlX3NleHBzX2h1bSA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfaHVtKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwc19tYWNoID9wZXJtIGZpbGUgc2V4cHMgPVxuICBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBzX25sIG91dHB1dF9tYWNoKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwcyA9IHNhdmVfc2V4cHNfbWFjaFxuXG4oKiBTY2FuIGZ1bmN0aW9ucyAqKVxuXG5sZXQgc2Nhbl9zZXhwID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHAgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwX29wdCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwX29wdCAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHBzIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fcmV2X3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnJldl9zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcblxubGV0IGdldF9tYWluX2J1ZiBidWYgPVxuICBsZXQgYnVmID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDEyOFxuICAgIHwgU29tZSBidWYgLT4gYnVmXG4gIGluXG4gIExleGVyLm1haW4gfmJ1ZlxuOztcblxubGV0IHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mIH5pbml0IGxleGJ1ZiA9XG4gIGxldCBtYWluID0gZ2V0X21haW5fYnVmIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBtYXRjaCBQYXJzZXIuc2V4cF9vcHQgbWFpbiBsZXhidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgc2V4cCAtPiBsb29wIChmIGFjYyBzZXhwKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBzY2FuX2l0ZXJfc2V4cHMgP2J1ZiB+ZiBsZXhidWYgPVxuICBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiBsZXhidWYgfmluaXQ6KCkgfmY6KGZ1biAoKSBzZXhwIC0+IGYgc2V4cClcbjs7XG5cbmxldCBzY2FuX3NleHBzX2NvbnYgP2J1ZiB+ZiBsZXhidWYgPVxuICBsZXQgY29sbCBhY2Mgc2V4cCA9IGYgc2V4cCA6OiBhY2MgaW5cbiAgTGlzdC5yZXYgKHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mOmNvbGwgfmluaXQ6W10gbGV4YnVmKVxuOztcblxubGV0IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlID9jb250YWluaW5nX3NleHAgP2xvY2F0aW9uID9pbnZhbGlkX3NleHAgKCkgfmV4biA6IHQgPVxuICBMaXN0XG4gICAgKExpc3QuY29uY2F0XG4gICAgICAgWyBbIEF0b20gXCJPZl9zZXhwX2Vycm9yXCIgXVxuICAgICAgIDsgKG1hdGNoIGxvY2F0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIEF0b20geCBdKVxuICAgICAgIDsgWyAobWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgICAgICB8IEZhaWx1cmUgeCAtPiBBdG9tIHhcbiAgICAgICAgICAgICB8IF8gLT4gQ29udi5zZXhwX29mX2V4biBleG4pXG4gICAgICAgICBdXG4gICAgICAgOyAobWF0Y2ggaW52YWxpZF9zZXhwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIExpc3QgWyBBdG9tIFwiaW52YWxpZF9zZXhwXCI7IHggXSBdKVxuICAgICAgIDsgKG1hdGNoIGNvbnRhaW5pbmdfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImNvbnRhaW5pbmdfc2V4cFwiOyB4IF0gXSlcbiAgICAgICBdKVxuOztcblxuKCogUGFydGlhbCBwYXJzaW5nICopXG5cbm1vZHVsZSBBbm5vdCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IFBhcnNleHAuUG9zaXRpb25zLnBvcyA9XG4gICAgeyBsaW5lIDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICA7IG9mZnNldCA6IGludFxuICAgIH1cblxuICB0eXBlIHJhbmdlID0gUGFyc2V4cC5Qb3NpdGlvbnMucmFuZ2UgPVxuICAgIHsgc3RhcnRfcG9zIDogcG9zXG4gICAgOyBlbmRfcG9zIDogcG9zXG4gICAgfVxuXG4gIHR5cGUgdCA9XG4gICAgfCBBdG9tIG9mIHJhbmdlICogVHlwZS50XG4gICAgfCBMaXN0IG9mIHJhbmdlICogdCBsaXN0ICogVHlwZS50XG5cbiAgdHlwZSAnYSBjb252ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBFcnJvciBvZiBleG4gKiB0XG4gICAgXVxuXG4gIGV4Y2VwdGlvbiBDb252X2V4biBvZiBzdHJpbmcgKiBleG5cblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENvbnZfZXhuXSAoZnVuY3Rpb25cbiAgICAgIHwgQ29udl9leG4gKGxvY2F0aW9uLCBleG4pIC0+IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+ZXhuXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIHR5cGUgc3RhY2sgPVxuICAgIHsgbXV0YWJsZSBwb3NpdGlvbnMgOiBwb3MgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGFjayA6IHQgbGlzdCBsaXN0XG4gICAgfVxuXG4gIGxldCBnZXRfc2V4cCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChfLCBzZXhwKSB8IExpc3QgKF8sIF8sIHNleHApIC0+IHNleHBcbiAgOztcblxuICBsZXQgZ2V0X3JhbmdlID0gZnVuY3Rpb25cbiAgICB8IEF0b20gKHJhbmdlLCBfKSB8IExpc3QgKHJhbmdlLCBfLCBfKSAtPiByYW5nZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX2NvbnYgc2V4cF9vZl9hID0gZnVuY3Rpb25cbiAgICB8IGBSZXN1bHQgYSAtPiBUeXBlLkxpc3QgWyBBdG9tIFwiUmVzdWx0XCI7IGEgfD4gc2V4cF9vZl9hIF1cbiAgICB8IGBFcnJvciAoZXhuLCB0KSAtPlxuICAgICAgTGlzdCBbIEF0b20gXCJFcnJvclwiOyBMaXN0IFsgZXhuIHw+IENvbnYuc2V4cF9vZl9leG47IHQgfD4gZ2V0X3NleHAgXSBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIEFubm90X3NleHAgb2YgdFxuXG4gIGxldCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgYW5ub3Rfc2V4cCA9XG4gICAgICBtYXRjaCBhbm5vdF9zZXhwIHdpdGhcbiAgICAgIHwgKEF0b20gKF8sIHN1Yl9zZXhwKSB8IExpc3QgKF8sIF8sIHN1Yl9zZXhwKSkgd2hlbiBzZXhwID09IHN1Yl9zZXhwIC0+XG4gICAgICAgIHJhaXNlIChBbm5vdF9zZXhwIGFubm90X3NleHApXG4gICAgICB8IExpc3QgKF8sIGFubm90cywgXykgLT4gTGlzdC5pdGVyIGxvb3AgYW5ub3RzXG4gICAgICB8IEF0b20gXyAtPiAoKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsb29wIGFubm90X3NleHA7XG4gICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgQW5ub3Rfc2V4cCByZXMgLT4gU29tZSByZXNcbiAgOztcbmVuZFxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmxvY2F0aW9uIH5pbnZhbGlkX3NleHAgfmV4blxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhuLCBpbnZhbGlkX3NleHApIC0+XG4gICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlX3BvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSB0ZXh0X2xpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgdGV4dF9jaGFyIDogaW50XG4gICAgOyBtdXRhYmxlIGdsb2JhbF9vZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgYnVmX3BvcyA6IGludFxuICAgIH1cblxuICBsZXQgY3JlYXRlID8odGV4dF9saW5lID0gMSkgPyh0ZXh0X2NoYXIgPSAwKSA/KGJ1Zl9wb3MgPSAwKSA/KGdsb2JhbF9vZmZzZXQgPSAwKSAoKSA9XG4gICAgbGV0IGZhaWwgbXNnID0gZmFpbHdpdGggKFwiU2V4cGxpYi5TZXhwLlBhcnNlX3Bvcy5jcmVhdGU6IFwiIF4gbXNnKSBpblxuICAgIGlmIHRleHRfbGluZSA8IDFcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2xpbmUgPCAxXCJcbiAgICBlbHNlIGlmIHRleHRfY2hhciA8IDBcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2NoYXIgPCAwXCJcbiAgICBlbHNlIGlmIGdsb2JhbF9vZmZzZXQgPCAwXG4gICAgdGhlbiBmYWlsIFwiZ2xvYmFsX29mZnNldCA8IDBcIlxuICAgIGVsc2UgaWYgYnVmX3BvcyA8IDBcbiAgICB0aGVuIGZhaWwgXCJidWZfcG9zIDwgMFwiXG4gICAgZWxzZSB7IHRleHRfbGluZTsgdGV4dF9jaGFyOyBnbG9iYWxfb2Zmc2V0OyBidWZfcG9zIH1cbiAgOztcblxuICBsZXQgd2l0aF9idWZfcG9zIHQgYnVmX3BvcyA9IHsgdCB3aXRoIGJ1Zl9wb3MgfVxuZW5kXG5cbm1vZHVsZSBDb250X3N0YXRlID0gUGFyc2V4cC5PbGRfcGFyc2VyX2NvbnRfc3RhdGVcblxudHlwZSAoJ2EsICd0KSBwYXJzZV9yZXN1bHQgPVxuICB8IERvbmUgb2YgJ3QgKiBQYXJzZV9wb3MudFxuICB8IENvbnQgb2YgQ29udF9zdGF0ZS50ICogKCdhLCAndCkgcGFyc2VfZnVuXG5cbmFuZCAoJ2EsICd0KSBwYXJzZV9mdW4gPSBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCAndCkgcGFyc2VfcmVzdWx0XG5cbnR5cGUgJ3QgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA6IFBhcnNlX3Bvcy50IH1cblxudHlwZSBwYXJzZV9lcnJvciA9XG4gIHsgZXJyX21zZyA6IHN0cmluZ1xuICA7IHBhcnNlX3N0YXRlIDogWyBgU2V4cCBvZiB0IGxpc3QgbGlzdCBwYXJzZV9zdGF0ZSB8IGBBbm5vdCBvZiBBbm5vdC5zdGFjayBwYXJzZV9zdGF0ZSBdXG4gIH1cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHBhcnNlX2Vycm9yXG5cbmxldCAoKSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIHBlIC0+XG4gICAgICBsZXQgcHBvcyA9XG4gICAgICAgIG1hdGNoIHBlLnBhcnNlX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgU2V4cCB7IHBhcnNlX3BvcyB9IHwgYEFubm90IHsgcGFyc2VfcG9zIH0gLT4gcGFyc2VfcG9zXG4gICAgICBpblxuICAgICAgTGlzdFxuICAgICAgICBbIEF0b20gXCJTZXhwbGliLlNleHAuUGFyc2VfZXJyb3JcIlxuICAgICAgICA7IExpc3RcbiAgICAgICAgICAgIFsgTGlzdCBbIEF0b20gXCJlcnJfbXNnXCI7IEF0b20gcGUuZXJyX21zZyBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9saW5lXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9saW5lIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJ0ZXh0X2NoYXJcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy50ZXh0X2NoYXIgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcImdsb2JhbF9vZmZzZXRcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0IF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJidWZfcG9zXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuYnVmX3BvcyBdXG4gICAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlcl9vdXRwdXQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IFR5cGUudFxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEkgPSBQYXJzZXhwLlBvc2l0aW9ucy5JdGVyYXRvclxuXG4gIGxldCByZWMgYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgVHlwZS5BdG9tIF8gLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuQXRvbSAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgc2V4cClcbiAgICB8IFR5cGUuTGlzdCBsIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHBfbGlzdCBsIGl0ZXIgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90Lkxpc3QgKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIGFubm90LCBzZXhwKVxuXG4gIGFuZCBhbm5vdGF0ZV9zZXhwX2xpc3Qgc2V4cHMgaXRlciA9XG4gICAgTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIpIHNleHBzKVxuICA7O1xuXG4gIG1vZHVsZSBCYXJlX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJcblxuICAgIHR5cGUgb3V0cHV0ID0gVHlwZS50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIHNleHAgPSByYWlzZV9ub3RyYWNlIChGb3VuZCBzZXhwKVxuICBlbmRcblxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJfYW5kX3Bvc2l0aW9uc1xuXG4gICAgdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIChzZXhwLCBwb3NpdGlvbnMpID1cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHAgc2V4cCAoSS5jcmVhdGUgcG9zaXRpb25zKSBpblxuICAgICAgcmFpc2Vfbm90cmFjZSAoRm91bmQgYW5ub3QpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfcGFyc2VyIChUIDogc2lnXG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LlRcblxuICAgIHR5cGUgaW5wdXRcblxuICAgIHZhbCBsZW5ndGggOiBpbnB1dCAtPiBpbnRcblxuICAgIHZhbCB1bnNhZmVfZmVlZF9sb29wXG4gICAgICA6ICBJbXBsLlN0YXRlLnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICAgICAgLT4gaW5wdXRcbiAgICAgIC0+IG1heF9wb3M6aW50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgcGFyc2VcbiAgICA6ICA/cGFyc2VfcG9zOlBhcnNlX3Bvcy50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiBULmlucHV0XG4gICAgLT4gKFQuaW5wdXQsIFQub3V0cHV0KSBwYXJzZV9yZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIGJ1Zl9wb3MgPVxuICAgIHsgUGFyc2VfcG9zLnRleHRfbGluZSA9IFQuSW1wbC5TdGF0ZS5saW5lIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MudGV4dF9jaGFyID0gVC5JbXBsLlN0YXRlLmNvbHVtbiBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuYnVmX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zIDwgMFwiO1xuICAgIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBsZW4gPCAwXCI7XG4gICAgbGV0IHN0cl9sZW4gPSBULmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcG9zX2xlbiA9IHBvcyArIGxlbiBpblxuICAgIGlmIHBvc19sZW4gPiBzdHJfbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zICsgbGVuID4gc3RyX2xlblwiO1xuICAgIHBvc19sZW4gLSAxXG4gIDs7XG5cbiAgbGV0IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2cgPVxuICAgIGxldCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zID0gcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIHBvcyB9IGluXG4gICAgbGV0IHBhcnNlX2Vycm9yID0geyBlcnJfbXNnID0gbXNnOyBwYXJzZV9zdGF0ZSA9IGBTZXhwIHBhcnNlX3N0YXRlIH0gaW5cbiAgICByYWlzZSAoUGFyc2VfZXJyb3IgcGFyc2VfZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIHBvcyBlID1cbiAgICBsZXQgbXNnID0gUGFyc2V4cC5QYXJzZV9lcnJvci5tZXNzYWdlIGUgaW5cbiAgICBtYXRjaCBQYXJzZXhwLlBhcnNlX2Vycm9yLlByaXZhdGUub2xkX3BhcnNlcl9leG4gZSB3aXRoXG4gICAgfCBgUGFyc2VfZXJyb3IgLT4gcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZ1xuICAgIHwgYEZhaWx1cmUgLT4gZmFpbHdpdGggbXNnXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIgPVxuICAgIGxldCBtYXhfcG9zID0gY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyIGluXG4gICAgbGV0IHByZXZpb3VzX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICBtYXRjaCBULnVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3Mgd2l0aFxuICAgIHwgc3RhY2sgLT4gbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFja1xuICAgIHwgZXhjZXB0aW9uIFQuRm91bmQgcmVzdWx0IC0+XG4gICAgICBsZXQgb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgICAgbGV0IG5leHRfcG9zID0gcG9zICsgKG9mZnNldCAtIHByZXZpb3VzX29mZnNldCkgaW5cbiAgICAgIERvbmUgKHJlc3VsdCwgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIG5leHRfcG9zKVxuICAgIHwgZXhjZXB0aW9uIFBhcnNleHAuUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZXJyIC0+XG4gICAgICBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSAocG9zICsgKFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgLSBwcmV2aW91c19vZmZzZXQpKSBlcnJcblxuICBhbmQgbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFjayA9XG4gICAgbGV0IHBhcnNlX2Z1biA9XG4gICAgICBsZXQgdXNlZF9yZWYgPSByZWYgZmFsc2UgaW5cbiAgICAgIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgICAgIGlmICF1c2VkX3JlZlxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwOiBwYXJzZXIgY29udGludWF0aW9uIGNhbGxlZCB0d2ljZVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHVzZWRfcmVmIDo9IHRydWU7XG4gICAgICAgICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyKVxuICAgIGluXG4gICAgbGV0IGNvbnRfc3RhdGUgPSBULkltcGwuU3RhdGUub2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIGluXG4gICAgQ29udCAoY29udF9zdGF0ZSwgcGFyc2VfZnVuKVxuICA7O1xuXG4gIGxldCBwYXJzZSA/KHBhcnNlX3BvcyA9IFBhcnNlX3Bvcy5jcmVhdGUgKCkpID9sZW4gc3RyID1cbiAgICBsZXQgcG9zLCBidWZfcG9zID1cbiAgICAgIGxldCB7IFBhcnNlX3Bvcy50ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9ID0gcGFyc2VfcG9zIGluXG4gICAgICAoIHsgUGFyc2V4cC5Qb3NpdGlvbnMubGluZSA9IHRleHRfbGluZTsgY29sID0gdGV4dF9jaGFyOyBvZmZzZXQgPSBnbG9iYWxfb2Zmc2V0IH1cbiAgICAgICwgYnVmX3BvcyApXG4gICAgaW5cbiAgICBsZXQgc3RhdGUgPSBULkltcGwuU3RhdGUuY3JlYXRlIH5wb3Mgfm5vX3NleHBfaXNfZXJyb3I6ZmFsc2UgVC5yYWlzZV9mb3VuZCBpblxuICAgIGxldCBzdGFjayA9IFQuSW1wbC5TdGFjay5lbXB0eSBpblxuICAgIGxldCBsZW4gPVxuICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgIHwgTm9uZSAtPiBULmxlbmd0aCBzdHIgLSBidWZfcG9zXG4gICAgaW5cbiAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+cG9zOmJ1Zl9wb3MgfmxlblxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0ciA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxubGV0IHBhcnNlID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyX2Fubm90ID0gU3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgPSBCaWdzdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nX2Fubm90ID0gQmlnc3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgKilcblxubGV0IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSA9XG4gICgpO1xuICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgIGxldCBwYXJzZV9wb3MgPVxuICAgICAgbWF0Y2ggcGFyc2VfcG9zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzZV9wb3MuY3JlYXRlIH5idWZfcG9zOnBvcyAoKVxuICAgICAgfCBTb21lIHBhcnNlX3BvcyAtPlxuICAgICAgICBwYXJzZV9wb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgPC0gcG9zO1xuICAgICAgICBwYXJzZV9wb3NcbiAgICBpblxuICAgIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOihTb21lIGxlbikgc3RyXG47O1xuXG4oKiBbd3NfYnVmXSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyICopXG5sZXQgZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiA9XG4gICgqIFdoZW4gcGFyc2luZyBhdG9tcywgdGhlIGluY3JlbWVudGFsIHBhcnNlciBjYW5ub3QgdGVsbCB3aGV0aGVyXG4gICAgIGl0IGlzIGF0IHRoZSBlbmQgdW50aWwgaXQgaGl0cyB3aGl0ZXNwYWNlLiAgV2UgdGhlcmVmb3JlIGZlZWQgaXRcbiAgICAgb25lIHNwYWNlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGZpbmlzaGVkLiAqKVxuICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgd3NfYnVmIHdpdGhcbiAgfCBEb25lIChzZXhwLCBfKSAtPiBPayBzZXhwXG4gIHwgQ29udCAoY29udF9zdGF0ZSwgXykgLT4gRXJyb3IgY29udF9zdGF0ZVxuOztcblxubGV0IGdlbl9pbnB1dF9zZXhwIG15X3BhcnNlID9wYXJzZV9wb3MgaWMgPVxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgICB8IEVycm9yIF8gLT4gcmFpc2UgRW5kX29mX2ZpbGUpXG4gICAgfCBjIC0+XG4gICAgICBCeXRlcy5zZXQgYnVmIDAgYztcbiAgICAgIChtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIGxvb3AgKG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSlcbjs7XG5cbmxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG5cbmxldCBnZW5faW5wdXRfcmV2X3NleHBzIG15X3BhcnNlIH53c19idWYgP3BhcnNlX3BvcyA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBpYyA9XG4gIGxldCByZXZfc2V4cHNfcmVmID0gcmVmIFtdIGluXG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIC0+XG4gICAgICAgIHJldl9zZXhwc19yZWYgOj0gc2V4cCA6OiAhcmV2X3NleHBzX3JlZjtcbiAgICAgICAgbGV0IG5fcGFyc2VkID0gYnVmX3BvcyAtIHBvcyBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBpZiBuX3BhcnNlZCA9IGxlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV3X2xlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46bmV3X2xlbilcbiAgICAgICAgZWxzZSBsb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIG5fcGFyc2VkKVxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46KGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4pKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cCA6OiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChcIlNleHBsaWIuU2V4cC5pbnB1dF9yZXZfc2V4cHM6IHJlYWNoZWQgRU9GIHdoaWxlIGluIHN0YXRlIFwiXG4gICAgICAgICAgIF4gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpXG4gIGluXG4gIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuOztcblxubGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG47O1xuXG5sZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbigqIG9mX3N0cmluZyBhbmQgb2ZfYmlnc3RyaW5nICopXG5cbmxldCBvZl9zdHJpbmdfYmlnc3RyaW5nIGxvYyBteV9wYXJzZSB3c19idWYgZ2V0X2xlbiBnZXRfc3ViIHN0ciA9XG4gIG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6Tm9uZSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgfCBEb25lIChzZXhwLCBwYXJzZV9wb3MpIC0+XG4gICAgKG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgICAgfCBEb25lIChfc2V4cDIsIF8pIC0+XG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogZ290IG11bHRpcGxlIFMtZXhwcmVzc2lvbnMgd2hlcmUgb25seSBvbmUgd2FzIGV4cGVjdGVkLlwiXG4gICAgICAgICAgICBsb2MpXG4gICAgIHwgQ29udCAoQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIF8pIC0+IHNleHBcbiAgICAgfCBDb250IChfLCBfKSAtPlxuICAgICAgICgqIG5vdCB1c2luZyBbZmVlZF9lbmRfb2ZfaW5wdXRdIGhlcmUgbWVhbnMgXCJhIGJcIiB3aWxsIGVuZCB1cCBoZXJlIGFuZCBub3QgaW5cbiAgICAgICAgICBcIm11bHRpcGxlIFMtZXhwcmVzc2lvbnNcIiBicmFuY2gsIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IG11Y2ggKilcbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBTLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YSBhdCBwb3NpdGlvbiAlZC4uLlwiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIHBhcnNlX3Bvcy5idWZfcG9zKSlcbiAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPlxuICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgbGV0IGNvbnRfc3RhdGVfc3RyID0gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSBpblxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGluY29tcGxldGUgUy1leHByZXNzaW9uIHdoaWxlIGluIHN0YXRlICVzOiAlc1wiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGNvbnRfc3RhdGVfc3RyXG4gICAgICAgICAgICAoZ2V0X3N1YiBzdHIgMCAoZ2V0X2xlbiBzdHIpKSkpXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHN0ciA9IG9mX3N0cmluZ19iaWdzdHJpbmcgXCJvZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG5sZXQgb2Zfc3RyaW5nX21hbnkgc3RyID0gUGFyc2V4cC5NYW55LnBhcnNlX3N0cmluZ19leG4gc3RyXG5cbmxldCBnZXRfYnN0cl9zdWJfc3RyIGJzdHIgcG9zIGxlbiA9XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue3BvcyArIGl9XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYnN0cl93c19idWYgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgMVxubGV0ICgpID0gYnN0cl93c19idWYuezB9IDwtICcgJ1xuXG5sZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgXCJvZl9iaWdzdHJpbmdcIlxuICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgIGJzdHJfd3NfYnVmXG4gICAgQXJyYXkxLmRpbVxuICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICBic3RyXG47O1xuXG4oKiBMb2FkaW5nICopXG5cbmxldCBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICB0cnlcbiAgICBsZXQgc2V4cHMgPSBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvczpOb25lID9idWYgaWMgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwc1xuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbmxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG5sZXQgZ2VuX2xvYWRfc2V4cF9sb2MgPSBcIlNleHBsaWIuU2V4cC5nZW5fbG9hZF9zZXhwXCJcblxubGV0IGdlbl9sb2FkX3NleHAgbXlfcGFyc2UgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlID1cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIFwiJXM6IEVPRiBpbiAlcyB3aGlsZSBpbiBzdGF0ZSAlc1wiXG4gICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgd2hlbiBzdHJpY3QgLT5cbiAgICAgICAgbGV0IHJlYyBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgICAgfCBEb25lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChzcHJpbnRmIFwiJXM6IG1vcmUgdGhhbiBvbmUgUy1leHByZXNzaW9uIGluIGZpbGUgJXNcIiBnZW5fbG9hZF9zZXhwX2xvYyBmaWxlKVxuICAgICAgICAgIHwgQ29udCAoY29udF9zdGF0ZSwgdGhpc19wYXJzZSkgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgICBpZiBsZW4gPiAwXG4gICAgICAgICAgICB0aGVuIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbiAgICAgICAgICAgIGVsc2UgaWYgY29udF9zdGF0ZSA9IENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICAgICAgICAgICB0aGVuIHNleHBcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiJXM6ICVzIGluIHN0YXRlICVzIGxvYWRpbmcgZmlsZSAlc1wiXG4gICAgICAgICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwgaW5jb21wbGV0ZSBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSlcbiAgICAgICAgICAgICAgICAgICBmaWxlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBidWZfcG9zKVxuICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBsb29wIChta190aGlzX3BhcnNlIG15X3BhcnNlKSBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxubW9kdWxlIEFubm90YXRlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEFubm90XG5cbiAgbGV0IHBhcnNlID0gcGFyc2Vfc3RyX2Fubm90XG4gIGxldCBwYXJzZV9iaWdzdHJpbmcgPSBwYXJzZV9iaWdzdHJpbmdfYW5ub3RcblxuICBsZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gICAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuICA7O1xuXG4gIGxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG4gIGxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIkFubm90YXRlZC5vZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgICBcIkFubm90YXRlZC5vZl9iaWdzdHJpbmdcIlxuICAgICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgICBic3RyX3dzX2J1ZlxuICAgICAgQXJyYXkxLmRpbVxuICAgICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgICAgYnN0clxuICA7O1xuXG4gIGxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxuICBsZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxuICBsZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG4gIGxldCBjb252IGYgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHNleHAgPSBnZXRfc2V4cCBhbm5vdF9zZXhwIGluXG4gICAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBiYWRfc2V4cCkgYXMgZSAtPlxuICAgICAgKG1hdGNoIGZpbmRfc2V4cCBhbm5vdF9zZXhwIGJhZF9zZXhwIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gcmFpc2UgZVxuICAgICAgIHwgU29tZSBiYWRfYW5ub3Rfc2V4cCAtPiBgRXJyb3IgKGV4YywgYmFkX2Fubm90X3NleHApKVxuICA7O1xuXG4gIGxldCBnZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwID1cbiAgICBsZXQgcmFuZ2UgPSBnZXRfcmFuZ2UgYW5ub3Rfc2V4cCBpblxuICAgIGxldCB7IHN0YXJ0X3BvcyA9IHsgbGluZTsgY29sOyBvZmZzZXQgPSBfIH07IGVuZF9wb3MgPSBfIH0gPSByYW5nZSBpblxuICAgIGxldCBsb2MgPSBzcHJpbnRmIFwiJXM6JWQ6JWRcIiBmaWxlIGxpbmUgY29sIGluXG4gICAgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvYywgZXhjKSwgZ2V0X3NleHAgYW5ub3Rfc2V4cClcbiAgOztcbmVuZFxuXG5sZXQgbG9hZF9zZXhwX2NvbnYgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgc2V4cCA9IGxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKEFubm90YXRlZC5sb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUpXG47O1xuXG5sZXQgcmFpc2VfY29udl9leG4gfmZpbGUgPSBmdW5jdGlvblxuICB8IGBSZXN1bHQgcmVzIC0+IHJlc1xuICB8IGBFcnJvciAoZXhjLCBhbm5vdF9zZXhwKSAtPiByYWlzZSAoQW5ub3RhdGVkLmdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHApXG47O1xuXG5sZXQgbG9hZF9zZXhwX2NvbnZfZXhuID9zdHJpY3QgP2J1ZiBmaWxlIGYgPVxuICByYWlzZV9jb252X2V4biB+ZmlsZSAobG9hZF9zZXhwX2NvbnYgP3N0cmljdCA/YnVmIGZpbGUgZilcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnYgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBgUmVzdWx0IChmIHNleHApKSByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwIChmdW4gYW5ub3Rfc2V4cCAtPiBBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnZfZXhuID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCBmIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgIChmdW4gYW5ub3Rfc2V4cCAtPiByYWlzZV9jb252X2V4biB+ZmlsZSAoQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSlcbiAgICAgICAgIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIGFubm90X29mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKGFubm90X29mX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnYgc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIEFubm90YXRlZC5vZl9zdHJpbmcgc3RyIGZcblxubGV0IG9mX2JpZ3N0cmluZ19jb252IGJzdHIgZiA9XG4gIGdlbl9vZl9zdHJpbmdfY29udiBvZl9iaWdzdHJpbmcgQW5ub3RhdGVkLm9mX2JpZ3N0cmluZyBic3RyIGZcbjs7XG5cbm1vZHVsZSBPZl9zdHJpbmdfY29udl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4YyA6IGV4blxuICAgIDsgc2V4cCA6IFR5cGUudFxuICAgIDsgc3ViX3NleHAgOiBUeXBlLnRcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEUgb2YgdFxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRV0gKGZ1bmN0aW9uXG4gICAgICB8IEUgb3NjZSAtPlxuICAgICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICgpXG4gICAgICAgICAgfmludmFsaWRfc2V4cDpvc2NlLnN1Yl9zZXhwXG4gICAgICAgICAgfmV4bjpvc2NlLmV4Y1xuICAgICAgICAgIH5jb250YWluaW5nX3NleHA6b3NjZS5zZXhwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuZW5kXG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgZiBzZXhwIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHN1Yl9zZXhwKSAtPlxuICAgIHJhaXNlIChPZl9zdHJpbmdfY29udl9leG4uRSB7IE9mX3N0cmluZ19jb252X2V4bi5leGM7IHNleHA7IHN1Yl9zZXhwIH0pXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnZfZXhuIHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGZcbmxldCBvZl9iaWdzdHJpbmdfY29udl9leG4gYnN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9iaWdzdHJpbmcgYnN0ciBmXG5cbmxldCBvZl9zdHJpbmdfbWFueV9jb252X2V4biBzdHIgZiA9XG4gIGxldCBzZXhwcyA9IG9mX3N0cmluZ19tYW55IHN0ciBpblxuICBMaXN0Lm1hcCAoZnVuIHNleHAgLT4gZ2VuX29mX3N0cmluZ19jb252X2V4biAoZnVuIHggLT4geCkgc2V4cCBmKSBzZXhwc1xuOztcblxuKCogVXRpbGl0aWVzIGZvciBhdXRvbWF0ZWQgdHlwZSBjb252ZXJzaW9ucyAqKVxuXG5sZXQgdW5pdCA9IExpc3QgW11cblxubGV0IGlzX3VuaXQgPSBmdW5jdGlvblxuICB8IExpc3QgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmV4dGVybmFsIHNleHBfb2ZfdCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRfb2Zfc2V4cCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogVXRpbGl0aWVzIGZvciBjb252ZXJzaW9uIGVycm9yIGhhbmRsaW5nICopXG5cbnR5cGUgZm91bmQgPVxuICBbIGBGb3VuZFxuICB8IGBQb3Mgb2YgaW50ICogZm91bmRcbiAgXVxuXG50eXBlIHNlYXJjaF9yZXN1bHQgPVxuICBbIGBOb3RfZm91bmRcbiAgfCBmb3VuZFxuICBdXG5cbmxldCByZWMgc2VhcmNoX3BoeXNpY2FsIHNleHAgfmNvbnRhaW5lZCA9XG4gIGlmIHNleHAgPT0gY29udGFpbmVkXG4gIHRoZW4gYEZvdW5kXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSBfIC0+IGBOb3RfZm91bmRcbiAgICB8IExpc3QgbHN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYE5vdF9mb3VuZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCByZXMgPSBzZWFyY2hfcGh5c2ljYWwgaCB+Y29udGFpbmVkIGluXG4gICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgIHwgYE5vdF9mb3VuZCAtPiBsb29wIChpICsgMSkgdFxuICAgICAgICAgICB8ICNmb3VuZCBhcyBmb3VuZCAtPiBgUG9zIChpLCBmb3VuZCkpXG4gICAgICBpblxuICAgICAgbG9vcCAwIGxzdClcbjs7XG5cbmxldCByZWMgc3Vic3RfZm91bmQgc2V4cCB+c3Vic3QgPSBmdW5jdGlvblxuICB8IGBGb3VuZCAtPiBzdWJzdFxuICB8IGBQb3MgKHBvcywgZm91bmQpIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IEF0b20gXyAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogYXRvbSB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgYWNjIHBvcyA9IGZ1bmN0aW9uXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBzaG9ydCBsaXN0IHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgICAgIHwgaCA6OiB0IHdoZW4gcG9zIDw+IDAgLT4gbG9vcCAoaCA6OiBhY2MpIChwb3MgLSAxKSB0XG4gICAgICAgICB8IGggOjogdCAtPiBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChzdWJzdF9mb3VuZCBoIH5zdWJzdCBmb3VuZCA6OiB0KSlcbiAgICAgICBpblxuICAgICAgIGxvb3AgW10gcG9zIGxzdClcbjs7XG4iLCIoKiBwYWNrYWdpbmcgb2YgYW5ub3RhdGVkIHNleHAgZnVuY3Rpb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgZiB0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbmluY2x1ZGUgVHlwZV93aXRoX2xheW91dFxuXG50eXBlIHBvcyA9IFNyY19wb3MuUmVsYXRpdmUudCA9XG4gIHsgcm93IDogaW50XG4gIDsgY29sIDogaW50XG4gIH1cblxubGV0IHNleHBfb2ZfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS5zZXhwX29mX3RcblxubW9kdWxlIExleGVyID0gc3RydWN0XG4gIGxldCBtYWluID0gTGV4ZXIubWFpbl93aXRoX2xheW91dFxuZW5kXG5cbm1vZHVsZSBQYXJzZXIgPSBQYXJzZXJfd2l0aF9sYXlvdXRcblxubW9kdWxlIFJlbmRlciA9IHN0cnVjdFxuICBtb2R1bGUgUmVsX3BvcyA9IFNyY19wb3MuUmVsYXRpdmVcbiAgbW9kdWxlIEFic19wb3MgPSBTcmNfcG9zLkFic29sdXRlXG5cbiAgdHlwZSBsYXN0X2F0b20gPVxuICAgIHsgaW1tZWRfYWZ0ZXIgOiBBYnNfcG9zLnRcbiAgICA7IHVuZXNjYXBlZCA6IGJvb2xcbiAgICB9XG5cbiAgdHlwZSBzdGF0ZSA9XG4gICAgeyBtdXRhYmxlIHJvd19zaGlmdCA6IFJlbF9wb3MudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50IDogQWJzX3Bvcy50XG4gICAgOyBtdXRhYmxlIGxhc3RfYXRvbSA6IGxhc3RfYXRvbSBvcHRpb25cbiAgICA7IG11dGFibGUgbGFzdF9jb21tZW50X3JvdyA6IGludFxuICAgIH1cblxuICAoKiB0aGUgcG9pbnQgb2YgW2ltbWVkX2FmdGVyX2xhc3RfYXRvbV0gaXMgdG8gcHJldmVudFxuICAgICAoQSBCIEMpIGZyb20gcmVuZGVyaW5nIGFzIChBIEJCQykgYWZ0ZXIgd2UgcmVwbGFjZSBCIHdpdGggQkIgKilcblxuICB0eXBlICdhIHQgPSAoY2hhciAtPiB1bml0KSAtPiBzdGF0ZSAtPiAnYVxuXG4gIGxldCByZXR1cm4gYSBfcHV0YyBfc3QgPSBhXG4gIGxldCBiaW5kIG0gfmYgcHV0YyBzdCA9IGYgKG0gcHV0YyBzdCkgcHV0YyBzdFxuXG4gIGxldCBydW4gcHV0YyBtID1cbiAgICBtXG4gICAgICBwdXRjXG4gICAgICB7IHJvd19zaGlmdCA9IFJlbF9wb3MuemVyb1xuICAgICAgOyBjdXJyZW50ID0gQWJzX3Bvcy5vcmlnaW5cbiAgICAgIDsgbGFzdF9hdG9tID0gTm9uZVxuICAgICAgOyBsYXN0X2NvbW1lbnRfcm93ID0gMCAoKiBiZWZvcmUgdGhlIGZpbGUgc3RhcnRzICopXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhciBwdXRjIHN0IGMgPVxuICAgIGxldCB7IEFic19wb3MuY29sOyByb3cgfSA9IHN0LmN1cnJlbnQgaW5cbiAgICBwdXRjIGM7XG4gICAgaWYgYyA9ICdcXG4nXG4gICAgdGhlbiBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3cgPSAxICsgcm93OyBjb2wgPSAxIH1cbiAgICBlbHNlIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdzsgY29sID0gMSArIGNvbCB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfc3RyaW5nIHB1dGMgc3Qgc3RyID1cbiAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCBzdHIuW2ldXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXJzIHB1dGMgc3QgYyB+biA9IGVtaXRfc3RyaW5nIHB1dGMgc3QgKFN0cmluZy5tYWtlIG4gYylcblxuICBsZXQgYWR2YW5jZSBwdXRjIH5hbmNob3Igc3QgfmJ5OmRlbHRhIH51bmVzY2FwZWRfYXRvbSB+bGluZV9jb21tZW50ID1cbiAgICBsZXQgbmV3X3BvcyA9IEFic19wb3MuYWRkIChBYnNfcG9zLmFkZCBhbmNob3IgZGVsdGEpIHN0LnJvd19zaGlmdCBpblxuICAgIGxldCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lID1cbiAgICAgIHVuZXNjYXBlZF9hdG9tXG4gICAgICAmJlxuICAgICAgbWF0Y2ggc3QubGFzdF9hdG9tIHdpdGhcbiAgICAgIHwgU29tZSB7IGltbWVkX2FmdGVyOyB1bmVzY2FwZWQgPSBwcmV2X3VuZXNjYXBlZCB9IC0+XG4gICAgICAgIG5ld19wb3MgPSBpbW1lZF9hZnRlciAmJiBwcmV2X3VuZXNjYXBlZFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgaW5cbiAgICAoKiBhdm9pZCBqb2luaW5nIHN1YnNlcXVlbnQgaXRlbXMgaW50byBhIHByZWNlZGluZyBsaW5lIGNvbW1lbnQgKilcbiAgICBsZXQgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnQgPSBuZXdfcG9zLnJvdyA9IHN0Lmxhc3RfY29tbWVudF9yb3cgaW5cbiAgICBsZXQgbmVlZF90b19yZXBvc2l0aW9uID1cbiAgICAgIChub3QgKEFic19wb3MuZ2VxIG5ld19wb3Mgc3QuY3VycmVudCkpXG4gICAgICB8fCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudFxuICAgICAgfHwgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZVxuICAgIGluXG4gICAgbGV0IHJvd19kZWx0YSwgbmV3X3BvcyA9XG4gICAgICBpZiBuZWVkX3RvX3JlcG9zaXRpb25cbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiByZXBvc2l0aW9uaW5nIGhldXJpc3RpYzoganVzdCBtb3ZlIHRvIHRoZSBuZXh0IGZyZXNoIHJvdyAqKVxuICAgICAgICBsZXQgbmV3X3JvdyA9IDEgKyBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICAgIGxldCByb3dfZGVsdGEgPSBuZXdfcm93IC0gbmV3X3Bvcy5BYnNfcG9zLnJvdyBpblxuICAgICAgICByb3dfZGVsdGEsIHsgQWJzX3Bvcy5yb3cgPSBuZXdfcm93OyBjb2wgPSBuZXdfcG9zLkFic19wb3MuY29sIH0pXG4gICAgICBlbHNlIDAsIG5ld19wb3NcbiAgICBpblxuICAgICgqIGFkdmFuY2UgdG8gbmV3X3BvcyBieSBlbWl0dGluZyB3aGl0ZXNwYWNlICopXG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLnJvdyA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3dcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLnJvdyAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnXFxuJyB+bik7XG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLmNvbCA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2xcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2wgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnICcgfm4pO1xuICAgIGFzc2VydCAobmV3X3BvcyA9IHN0LmN1cnJlbnQpO1xuICAgIGlmIGxpbmVfY29tbWVudCB0aGVuIHN0Lmxhc3RfY29tbWVudF9yb3cgPC0gc3QuY3VycmVudC5yb3c7XG4gICAgc3Qucm93X3NoaWZ0XG4gICAgPC0geyBzdC5yb3dfc2hpZnQgd2l0aCBSZWxfcG9zLnJvdyA9IHN0LnJvd19zaGlmdC5SZWxfcG9zLnJvdyArIHJvd19kZWx0YSB9XG4gIDs7XG5cbiAgbGV0IHJlYyByZW5kZXJfdCBwdXRjIH5hbmNob3IgKHN0IDogc3RhdGUpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQXRvbSAoZGVsdGEsIHRleHQsIGZtdF90ZXh0KSAtPlxuICAgICAgbGV0IGZtdF90ZXh0ID1cbiAgICAgICAgbWF0Y2ggZm10X3RleHQgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gUHJlX3NleHAubWFjaF9tYXliZV9lc2Nfc3RyIHRleHRcbiAgICAgICAgfCBTb21lIHRleHQgLT4gdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCB1bmVzY2FwZWQgPSBmbXRfdGV4dC5bMF0gPD4gJ1wiJyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTp1bmVzY2FwZWQgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgZm10X3RleHQ7XG4gICAgICBzdC5sYXN0X2F0b20gPC0gU29tZSB7IGltbWVkX2FmdGVyID0gc3QuY3VycmVudDsgdW5lc2NhcGVkIH1cbiAgICB8IExpc3QgKHN0YXJ0X2RlbHRhLCB0b2NzLCBlbmRfZGVsdGEpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OnN0YXJ0X2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBsZXQgY2hpbGRfYW5jaG9yID0gQWJzX3Bvcy5zdWIgc3QuY3VycmVudCBzdC5yb3dfc2hpZnQgaW5cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcoJztcbiAgICAgIExpc3QuaXRlciB0b2NzIH5mOihmdW4gdG9jIC0+IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOmNoaWxkX2FuY2hvciBzdCB0b2MpO1xuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTplbmRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcpJztcbiAgICAgICgpXG5cbiAgYW5kIHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICAgIHwgQ29tbWVudCBjIC0+IHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCBjXG5cbiAgYW5kIHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IChkZWx0YSwgdGV4dCkgLT5cbiAgICAgIGxldCBsaW5lX2NvbW1lbnQgPSBTdHJpbmcubGVuZ3RoIHRleHQgPiAwICYmIHRleHQuWzBdID0gJzsnIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IHRleHRcbiAgICB8IFNleHBfY29tbWVudCAoZGVsdGEsIGNzLCB0KSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBcIiM7XCI7XG4gICAgICBMaXN0Lml0ZXIgY3MgfmY6KHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCk7XG4gICAgICByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICA7O1xuXG4gIGxldCByZW5kZXIgYXNleHAgcHV0YyBzdCA9IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOkFic19wb3Mub3JpZ2luIHN0IGFzZXhwXG4gIGxldCBzZXhwID0gcmVuZGVyXG5lbmRcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoVHlwZS50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChUeXBlLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChUeXBlLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20gKF8sIHgsIF8pIC0+IGsgKFR5cGUuQXRvbSB4KVxuICAgICAgfCBMaXN0IChfLCB0b2NzLCBfKSAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoVHlwZS5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm9wZW4gU2V4cFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0MzJfdmVjID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0NjRfdmVjID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IGZsb2F0NjRfdmVjXG50eXBlIGZsb2F0MzJfbWF0ID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIGZsb2F0NjRfbWF0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IGZsb2F0NjRfbWF0XG5cbmxldCBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWMgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5MS5kaW0gdmVjIGRvd250byAxIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IHZlYy57aX0gOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfYmlnc3RyaW5nIChic3RyIDogYmlnc3RyaW5nKSA9XG4gIGxldCBuID0gQXJyYXkxLmRpbSBic3RyIGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57aX1cbiAgZG9uZTtcbiAgQXRvbSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX3ZlYyAodmVjIDogZmxvYXQzMl92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl9mbG9hdDY0X3ZlYyAodmVjIDogZmxvYXQ2NF92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl92ZWMgKHZlYyA6IHZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcblxubGV0IHNleHBfb2ZfZmxvYXRfbWF0IG1hdCA9XG4gIGxldCBtID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBuID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gICgqIEl0J3Mgc3VycHJpc2luZyB0aGF0IHdlIHNlcmlhbGl6ZSBbRm9ydHJhbl9sYXlvdXRdIG1hdHJpY2VzIGluIHJvdy1tYWpvciBvcmRlci4gSSBjYW5cbiAgICAgb25seSBzcGVjdWxhdGUgdGhhdCBpdCB3YXMgY2hvc2VuIGZvciByZWFkYWJpbGl0eS4gVGhlIGNhY2hlIHBlcmZvcm1hbmNlIGlzXG4gICAgIGlycmVsZXZhbnQgYmVjYXVzZSBwZW9wbGUgd2hvIGNhcmUgd29uJ3Qgc2VyaWFsaXplIHRvIHNleHAuICopXG4gIGZvciByb3cgPSBuIGRvd250byAxIGRvXG4gICAgZm9yIGNvbCA9IG0gZG93bnRvIDEgZG9cbiAgICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCBtYXQue2NvbCwgcm93fSA6OiAhbHN0X3JlZlxuICAgIGRvbmVcbiAgZG9uZTtcbiAgTGlzdCAoc2V4cF9vZl9pbnQgbSA6OiBzZXhwX29mX2ludCBuIDo6ICFsc3RfcmVmKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl9tYXQgKG1hdCA6IGZsb2F0MzJfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfZmxvYXQ2NF9tYXQgKG1hdCA6IGZsb2F0NjRfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfbWF0IChtYXQgOiBtYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgYmlnc3RyaW5nX3NleHBfZ3JhbW1hciA6IGJpZ3N0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5cbmxldCBiaWdzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgYnN0ciA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgYnN0ci57aX0gPC0gc3RyLltpXVxuICAgIGRvbmU7XG4gICAgYnN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0X3ZlYyBjcmVhdGVfZmxvYXRfdmVjIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IGVtcHR5X2Zsb2F0X3ZlY1xuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfdmVjIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMue2l9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSBsc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X3ZlY19vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBlbXB0eV9mbG9hdDMyX3ZlYyA9IGNyZWF0ZV9mbG9hdDMyX3ZlYyAwXG5sZXQgZW1wdHlfZmxvYXQ2NF92ZWMgPSBjcmVhdGVfZmxvYXQ2NF92ZWMgMFxubGV0IGZsb2F0MzJfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDMyX3ZlYyBjcmVhdGVfZmxvYXQzMl92ZWNcbmxldCBmbG9hdDY0X3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgKE1hbnkgRmxvYXQpIH1cbmxldCBmbG9hdDMyX3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxuXG5sZXQgY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzID1cbiAgaWYgZGF0YSA9IFtdIHRoZW4gcmVzIGVsc2Ugb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiB0b28gbXVjaCBkYXRhXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdF9tYXQgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgKHNtIDo6IHNuIDo6IGRhdGEpIC0+XG4gICAgbGV0IG0gPSBpbnRfb2Zfc2V4cCBzbSBpblxuICAgIGxldCBuID0gaW50X29mX3NleHAgc24gaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X21hdCBtIG4gaW5cbiAgICBpZiBtID0gMCB8fCBuID0gMFxuICAgIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3BfY29scyBjb2wgZGF0YSA9XG4gICAgICAgIGxldCB2ZWMgPSBBcnJheTIuc2xpY2VfcmlnaHQgcmVzIGNvbCBpblxuICAgICAgICBsZXQgcmVjIGxvb3Bfcm93cyByb3cgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBub3QgZW5vdWdoIGRhdGFcIiBzZXhwXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIHZlYy57cm93fSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgICAgICBpZiByb3cgPSBtXG4gICAgICAgICAgICB0aGVuIGlmIGNvbCA9IG4gdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgdCByZXMgZWxzZSBsb29wX2NvbHMgKGNvbCArIDEpIHRcbiAgICAgICAgICAgIGVsc2UgbG9vcF9yb3dzIChyb3cgKyAxKSB0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Bfcm93cyAxIGRhdGFcbiAgICAgIGluXG4gICAgICBsb29wX2NvbHMgMSBkYXRhKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgdG9vIHNob3J0XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGZsb2F0MzJfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQzMl9tYXRcbmxldCBmbG9hdDY0X21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5sZXQgbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcblxubGV0IG1hdF9zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoQ29ucyAoSW50ZWdlciwgQ29ucyAoSW50ZWdlciwgTWFueSBGbG9hdCkpKSB9XG47O1xuXG5sZXQgZmxvYXQzMl9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBzdHJpbmdfb2ZfX29mX19zZXhwX29mIHRvX3NleHAgeCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIHgpXG5cbmxldCBvZl9zdHJpbmdfX29mX19vZl9zZXhwIG9mX3NleHAgcyA9XG4gIHRyeVxuICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgcyBpblxuICAgIG9mX3NleHAgc2V4cFxuICB3aXRoXG4gIHwgZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoc3ByaW50ZiBcIm9mX3N0cmluZyBmYWlsZWQgb24gJXMgd2l0aCAlc1wiIHMgKFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSkpKVxuOztcbiIsIm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfaGFzaHRibFxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5oYXNodGJsX29mX3NleHBcbmVuZFxuXG5tb2R1bGUgTGF6eSA9IHN0cnVjdFxuICBpbmNsdWRlIExhenlcblxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2xhenlfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgc2V4cF9vZl91bml0ID0gQ29udi5zZXhwX29mX3VuaXRcbmxldCB1bml0X29mX3NleHAgPSBDb252LnVuaXRfb2Zfc2V4cFxubGV0IHVuaXRfc2V4cF9ncmFtbWFyID0gQ29udi51bml0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYm9vbCA9IENvbnYuc2V4cF9vZl9ib29sXG5sZXQgYm9vbF9vZl9zZXhwID0gQ29udi5ib29sX29mX3NleHBcbmxldCBib29sX3NleHBfZ3JhbW1hciA9IENvbnYuYm9vbF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3N0cmluZyA9IENvbnYuc2V4cF9vZl9zdHJpbmdcbmxldCBzdHJpbmdfb2Zfc2V4cCA9IENvbnYuc3RyaW5nX29mX3NleHBcbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyID0gQ29udi5zdHJpbmdfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9jaGFyID0gQ29udi5zZXhwX29mX2NoYXJcbmxldCBjaGFyX29mX3NleHAgPSBDb252LmNoYXJfb2Zfc2V4cFxubGV0IGNoYXJfc2V4cF9ncmFtbWFyID0gQ29udi5jaGFyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50ID0gQ29udi5zZXhwX29mX2ludFxubGV0IGludF9vZl9zZXhwID0gQ29udi5pbnRfb2Zfc2V4cFxubGV0IGludF9zZXhwX2dyYW1tYXIgPSBDb252LmludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Zsb2F0ID0gQ29udi5zZXhwX29mX2Zsb2F0XG5sZXQgZmxvYXRfb2Zfc2V4cCA9IENvbnYuZmxvYXRfb2Zfc2V4cFxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA9IENvbnYuZmxvYXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQzMiA9IENvbnYuc2V4cF9vZl9pbnQzMlxubGV0IGludDMyX29mX3NleHAgPSBDb252LmludDMyX29mX3NleHBcbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgPSBDb252LmludDMyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50NjQgPSBDb252LnNleHBfb2ZfaW50NjRcbmxldCBpbnQ2NF9vZl9zZXhwID0gQ29udi5pbnQ2NF9vZl9zZXhwXG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQ2NF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX25hdGl2ZWludCA9IENvbnYuc2V4cF9vZl9uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IENvbnYubmF0aXZlaW50X29mX3NleHBcbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5uYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9yZWYgPSBDb252LnNleHBfb2ZfcmVmXG5sZXQgcmVmX29mX3NleHAgPSBDb252LnJlZl9vZl9zZXhwXG5sZXQgcmVmX3NleHBfZ3JhbW1hciA9IENvbnYucmVmX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGF6eV90ID0gQ29udi5zZXhwX29mX2xhenlfdFxubGV0IGxhenlfdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX29wdGlvbiA9IENvbnYuc2V4cF9vZl9vcHRpb25cbmxldCBvcHRpb25fb2Zfc2V4cCA9IENvbnYub3B0aW9uX29mX3NleHBcbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyID0gQ29udi5vcHRpb25fc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9saXN0ID0gQ29udi5zZXhwX29mX2xpc3RcbmxldCBsaXN0X29mX3NleHAgPSBDb252Lmxpc3Rfb2Zfc2V4cFxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyID0gQ29udi5saXN0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYXJyYXkgPSBDb252LnNleHBfb2ZfYXJyYXlcbmxldCBhcnJheV9vZl9zZXhwID0gQ29udi5hcnJheV9vZl9zZXhwXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyID0gQ29udi5hcnJheV9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2V4biA9IENvbnYuc2V4cF9vZl9leG5cbmxldCBleG5fc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG4iLCJpbmNsdWRlIFNleHBfZ3JhbW1hcl9pbnRmXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5sZXQgcmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0aGVyIH50X29mX3NleHAgfnRfc2V4cF9ncmFtbWFyID1cbiAgdF9vZl9zZXhwLCB0X3NleHBfZ3JhbW1hclxuOztcbiIsIigqIFBhdGg6IE1vZHVsZSBmb3IgU3Vic3RpdHV0aW9ucyB3aXRoaW4gUy1leHByZXNzaW9ucyAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBTZXhwXG5cbnR5cGUgZWwgPVxuICB8IFBvcyBvZiBpbnRcbiAgfCBNYXRjaCBvZiBzdHJpbmcgKiBpbnRcbiAgfCBSZWMgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IGVsIGxpc3RcblxubGV0IGlsbGVnYWxfYXRvbSBsb2Mgc2V4cCA9XG4gIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBhdG9tOiAlc1wiIGxvYyAoU2V4cC50b19zdHJpbmcgc2V4cCkpXG47O1xuXG5sZXQgZXh0cmFjdF9wb3NfbHN0IGxvYyBzZXhwIGl4IGxzdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGluZGV4ICVkIGluOiAlc1wiIGxvYyBpeCBzZXhwX3N0cilcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3Vic3QgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgICB8IFNvbWUgeCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4IDo6IHQpXG4gICAgICAgIGluXG4gICAgICAgIHN1YnN0LCBoKVxuICAgICAgZWxzZSBsb29wIChoIDo6IGFjYykgKG4gLSAxKSB0XG4gIGluXG4gIGxvb3AgW10gaXggbHN0XG47O1xuXG5sZXQgZXh0cmFjdF9wb3MgbiA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X3Bvc1wiIHNleHAgbiBsc3QgaW5cbiAgICAoZnVuIHggLT4gTGlzdCAoc3Vic3QgeCkpLCBlbFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcG9zXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCAoKEF0b20gc3RyIGFzIHNleHApIDo6IGFyZ3MpIHdoZW4gc3RyID0gdGFnIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfbWF0Y2hcIiAoTGlzdCBhcmdzKSBhcmdfaXggYXJncyBpblxuICAgIChmdW4gbWF5YmVfeCAtPiBMaXN0IChzZXhwIDo6IHN1YnN0IG1heWJlX3gpKSwgZWxcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICBmYWlsd2l0aCAoXCJQYXRoLmV4dHJhY3RfbWF0Y2g6IHVuZXhwZWN0ZWQgbmVzdGVkIGxpc3QgaW46IFwiIF4gc2V4cF9zdHIpXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9tYXRjaFwiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguZXh0cmFjdF9yZWM6IGtleSBcXFwiJXNcXFwiIG5vdCBmb3VuZCBpbjogJXNcIiBrZXkgc2V4cF9zdHIpXG4gICAgICB8IExpc3QgWyAoQXRvbSBzdHIgYXMgc2V4cCk7IHYgXSA6OiByZXN0IHdoZW4gc3RyID0ga2V5IC0+XG4gICAgICAgIGxldCBzdWJzdCB4ID0gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoTGlzdCBbIHNleHA7IHggXSA6OiByZXN0KSkgaW5cbiAgICAgICAgc3Vic3QsIHZcbiAgICAgIHwgaCA6OiB0IC0+IGxvb3AgKGggOjogYWNjKSB0XG4gICAgaW5cbiAgICBsb29wIFtdIGxzdFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcmVjXCIgc2V4cFxuOztcblxubGV0IGlkIHggPSB4XG5cbmxldCByZWMgc3Vic3Rfb3B0aW9uIChzdXBfc3Vic3QsIGVsKSByZXN0ID1cbiAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gIGxldCBzdWJzdCB4ID0gc3VwX3N1YnN0IChTb21lIChzdWJfc3Vic3QgeCkpIGluXG4gIHN1YnN0LCBzdWJfZWxcblxuYW5kIHN1YnN0X3BhdGggc2V4cCA9IGZ1bmN0aW9uXG4gIHwgUG9zIG4gOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfcG9zIG4gc2V4cCkgdFxuICB8IE1hdGNoICh0YWcsIGFyZ19peCkgOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCBzZXhwKSB0XG4gIHwgUmVjIGtleSA6OiByZXN0IC0+XG4gICAgbGV0IHJlY19zdWJzdCwgZWwgPSBleHRyYWN0X3JlYyBrZXkgc2V4cCBpblxuICAgIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICAgIGxldCBzdWJzdCB4ID0gcmVjX3N1YnN0IChzdWJfc3Vic3QgeCkgaW5cbiAgICBzdWJzdCwgc3ViX2VsXG4gIHwgW10gLT4gaWQsIHNleHBcbjs7XG5cbmxldCBpbXBsb2RlIGxzdCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGl4ID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgQnl0ZXMuc2V0IHN0ciBpeCBoO1xuICAgICAgbG9vcCAoaXggKyAxKSB0XG4gICAgfCBbXSAtPiBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICBpblxuICBsb29wIDAgbHN0XG47O1xuXG5sZXQgZmFpbF9wYXJzZSBtc2cgPSBmYWlsd2l0aCAoXCJQYXRoLnBhcnNlOiBcIiBeIG1zZylcblxubGV0IHBhcnNlIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gZmFpbF9wYXJzZSBcInBhdGggZW1wdHlcIlxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgYWNjIGRvdF9peCA9XG4gICAgICBtYXRjaCBzdHIuW2RvdF9peF0gd2l0aFxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IGRvdF9peDEgPSBkb3RfaXggKyAxIGluXG4gICAgICAgIGlmIGRvdF9peDEgPSBsZW5cbiAgICAgICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBwYXJzZV9kb3QgYWNjIHN0cl9hY2MgaXggPVxuICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIF1cbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICAgICAgICAgIHwgJ1snIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBwYXJzZV9pbmRleCBpbmRleF9hY2MgaXggPVxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiByZWFkaW5nIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSwgaW5kZXhfYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IChTb21lIChpbnRfb2ZfY2hhciBjIC0gNDgpKSAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfaW5kZXhfYWNjID0gU29tZSAoKDEwICogaW5kZXhfYWNjKSArIGludF9vZl9jaGFyIGMgLSA0OCkgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBuZXdfaW5kZXhfYWNjIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBOb25lIC0+IGZhaWxfcGFyc2UgXCJlbXB0eSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBQb3MgaW5kZXhfYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hdGNoIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSwgaW5kZXhfYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIHBhdGhfZWwgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbG9vcCAocGF0aF9lbCA6OiBhY2MpIGl4MVxuICAgICAgICAgICAgICAgICAgICB8IGMsIF8gLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcImlsbGVnYWwgY2hhcmFjdGVyIGluIGluZGV4OiAlY1wiIGMpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggTm9uZSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICdcXFxcJyAtPlxuICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgYWZ0ZXIgZXNjYXBlXCJcbiAgICAgICAgICAgICAgICBlbHNlIHBhcnNlX2RvdCBhY2MgKHN0ci5baXgxXSA6OiBzdHJfYWNjKSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXSB0aGVuIGZhaWxfcGFyc2UgXCJkb3VibGUgJy4nXCI7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPSBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2RvdCAocGF0aF9lbCA6OiBhY2MpIFtdIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgYyAtPiBwYXJzZV9kb3QgYWNjIChjIDo6IHN0cl9hY2MpIChpeCArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZG90IGFjYyBbXSBkb3RfaXgxKVxuICAgICAgfCBjIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCInLicgZXhwZWN0ZWQ7IGdvdCAnJWMnXCIgYylcbiAgICBpblxuICAgIGxvb3AgW10gMClcbjs7XG5cbmxldCBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCA9XG4gIGxldCBwYXRoID1cbiAgICBtYXRjaCBwYXRoLCBzdHIgd2l0aFxuICAgIHwgU29tZSBwYXRoLCBfIC0+IHBhdGhcbiAgICB8IE5vbmUsIFNvbWUgc3RyIC0+IHBhcnNlIHN0clxuICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICBpblxuICBzdWJzdF9wYXRoIHNleHAgcGF0aFxuOztcblxubGV0IGdldCA/cGF0aCA/c3RyIHNleHAgPSBzbmQgKGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwKVxuXG5sZXQgcmVwbGFjZSA/cGF0aCA/c3RyIHNleHAgfnN1YnN0ID1cbiAgbGV0IHN1YnN0X2Z1biwgXyA9IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwIGluXG4gIHN1YnN0X2Z1biBzdWJzdFxuOztcblxubGV0IHJlcGxhY2Vfbm9fcGF0aCB+c3RyIHNleHAgfnN1YnN0ID0gcmVwbGFjZSB+c3RyIHNleHAgfnN1YnN0XG4iLCJsZXQgcmVnaXN0ZXIgZXhjIGV4Y19uYW1lID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIF9leGMgLT5cbiAgICBTZXhwLkF0b20gZXhjX25hbWUpXG47O1xuXG5sZXQgbWFnaWNfZmllbGQgcmVwciBuID0gT2JqLm1hZ2ljIChPYmouZmllbGQgcmVwciBuKVxuXG5sZXQgcmVnaXN0ZXIxIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDEgXSlcbjs7XG5cbmxldCByZWdpc3RlcjIgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDIgXSlcbjs7XG5cbmxldCByZWdpc3RlcjMgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI0IG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczIHNleHBfb2ZfYXJnNCA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNCBdKVxuOztcblxubGV0IHJlZ2lzdGVyNVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI2XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDYgXSlcbjs7XG5cbmxldCByZWdpc3RlcjdcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNyBdKVxuOztcblxubGV0IHJlZ2lzdGVyOFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3OyBzZXhwOCBdKVxuOztcblxubGV0IHJlZ2lzdGVyOVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgXSlcbjs7XG5cbmxldCByZWdpc3RlcjEwXG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgICAgIHNleHBfb2ZfYXJnMTBcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBsZXQgc2V4cDEwID0gc2V4cF9vZl9hcmcxMCAobWFnaWNfZmllbGQgcmVwciAxMCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICA7IHNleHAxMFxuICAgICAgXSlcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBcIkZhc3QgU3BsaXR0YWJsZSBQc2V1ZG9yYW5kb20gTnVtYmVyIEdlbmVyYXRvcnNcIiBieSBTdGVlbGUgZXQuXG4gICAgYWwuICgxKS4gIFRoZSBwYXBlcidzIGFsZ29yaXRobSBwcm92aWRlcyBkZWNlbnQgcmFuZG9tbmVzcyBmb3IgbW9zdCBwdXJwb3NlcywgYnV0XG4gICAgc2FjcmlmaWNlcyBjcnlwdG9ncmFwaGljLXF1YWxpdHkgcmFuZG9tbmVzcyBpbiBmYXZvciBvZiBwZXJmb3JtYW5jZS4gIFRoZSBvcmlnaW5hbFxuICAgIGltcGxlbWVudGF0aW9uIHdhcyB0ZXN0ZWQgd2l0aCBEaWVIYXJkZXIgYW5kIEJpZ0NydXNoOyBzZWUgdGhlIHBhcGVyIGZvciBkZXRhaWxzLlxuXG4gICAgT3VyIGltcGxlbWVudGF0aW9uIGlzIGEgcG9ydCBmcm9tIEphdmEgdG8gT0NhbWwgb2YgdGhlIHBhcGVyJ3MgYWxnb3JpdGhtLiAgT3RoZXIgdGhhblxuICAgIHRoZSBjaG9pY2Ugb2YgaW5pdGlhbCBzZWVkIGZvciBbY3JlYXRlXSwgb3VyIHBvcnQgc2hvdWxkIGJlIGZhaXRoZnVsLiAgV2UgaGF2ZSBub3RcbiAgICByZS1ydW4gdGhlIERpZUhhcmRlciBvciBCaWdDcnVzaCB0ZXN0cyBvbiBvdXIgaW1wbGVtZW50YXRpb24uICBPdXIgcG9ydCBpcyBhbHNvIG5vdCBhc1xuICAgIHBlcmZvcm1hbnQgYXMgdGhlIG9yaWdpbmFsOyB0d28gZmFjdG9ycyB0aGF0IGh1cnQgdXMgYXJlIGJveGVkIFtpbnQ2NF0gdmFsdWVzIGFuZCBsYWNrXG4gICAgb2YgYSBQT1BDTlQgcHJpbWl0aXZlLlxuXG4gICAgKDEpIGh0dHA6Ly8yMDE0LnNwbGFzaGNvbi5vcmcvZXZlbnQvb29wc2xhMjAxNC1mYXN0LXNwbGl0dGFibGUtcHNldWRvcmFuZG9tLW51bWJlci1nZW5lcmF0b3JzXG4gICAgKGFsc28gbWlycm9yZWQgYXQgaHR0cDovL2dlZS5jcy5vc3dlZ28uZWR1L2RsL3BhcGVycy9vb3BzbGExNC5wZGYpXG5cbiAgICBCZXdhcmUgd2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2U7IGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50IGEgW3NwbGl0XSBvcGVyYXRpb25cbiAgICB3aG9zZSBvdXRwdXQgaXMgbm90IGFzIFwiaW5kZXBlbmRlbnRcIiBhcyBpdCBzZWVtcyAoMikuICBUaGlzIGJ1ZyBjYXVzZWQgcHJvYmxlbXMgZm9yXG4gICAgSGFza2VsbCdzIFF1aWNrY2hlY2sgbGlicmFyeSBmb3IgYSBsb25nIHRpbWUuXG5cbiAgICAoMikgU2NoYWF0aHVuLCBcIkV2YWx1YXRpb24gb2Ygc3BsaXR0YWJsZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnNcIiwgSkZQIDIwMTUuXG4gICAgaHR0cDovL3d3dy5oZy5zY2hhYXRodW4ubmV0L3Jlc2VhcmNoL1BhcGVycy9oZ3MyMDE1amZwLnBkZlxuKilcblxub3BlbiEgQmFzZVxub3BlbiAgSW50NjQuT1xuXG5sZXQgaXNfb2RkIHggPSB4IGxvciAxTCA9IHhcblxubGV0IHBvcGNvdW50ID0gSW50NjQucG9wY291bnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2VlZCA6IGludDY0XG4gICAgOyBvZGRfZ2FtbWEgICAgOiBpbnQ2NFxuICAgIH1cblxuICBsZXQgZ29sZGVuX2dhbW1hID0gMHg5ZTM3Xzc5YjlfN2Y0YV83YzE1TFxuXG4gIGxldCBvZl9pbnQgc2VlZCA9XG4gICAgeyBzZWVkICAgICAgPSBJbnQ2NC5vZl9pbnQgc2VlZFxuICAgIDsgb2RkX2dhbW1hID0gZ29sZGVuX2dhbW1hXG4gICAgfVxuXG4gIGxldCBjb3B5IHsgc2VlZCA7IG9kZF9nYW1tYSB9ID0geyBzZWVkIDsgb2RkX2dhbW1hIH1cblxuICBsZXQgbWl4X2JpdHMgeiBuID1cbiAgICB6IGx4b3IgKHogbHNyIG4pXG5cbiAgbGV0IG1peDY0IHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhmZjUxX2FmZDdfZWQ1NV84Y2NkTCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhjNGNlX2I5ZmVfMWE4NV9lYzUzTCBpblxuICAgIG1peF9iaXRzIHogMzNcblxuICBsZXQgbWl4NjRfdmFyaWFudDEzIHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzApICogMHhiZjU4XzQ3NmRfMWNlNF9lNWI5TCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMjcpICogMHg5NGQwXzQ5YmJfMTMzMV8xMWViTCBpblxuICAgIG1peF9iaXRzIHogMzFcblxuICBsZXQgbWl4X29kZF9nYW1tYSB6ID1cbiAgICBsZXQgeiA9IChtaXg2NF92YXJpYW50MTMgeikgbG9yIDFMIGluXG4gICAgbGV0IG4gPSBwb3Bjb3VudCAoeiBseG9yICh6IGxzciAxKSkgaW5cbiAgICAoKiBUaGUgb3JpZ2luYWwgcGFwZXIgdXNlcyBbPj1dIGluIHRoZSBjb25kaXRpb25hbCBpbW1lZGlhdGVseSBiZWxvdzsgaG93ZXZlciB0aGlzIGlzXG4gICAgICAgYSB0eXBvLCBhbmQgd2UgY29ycmVjdCBpdCBieSB1c2luZyBbPF0uIFRoaXMgd2FzIGZpeGVkIGluIHJlc3BvbnNlIHRvIFsxXSBhbmQgWzJdLlxuXG4gICAgICAgWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3NwbGl0dGFibGVfcmFuZG9tL2lzc3Vlcy8xXG4gICAgICAgWzJdIGh0dHA6Ly93d3cucGNnLXJhbmRvbS5vcmcvcG9zdHMvYnVncy1pbi1zcGxpdG1peC5odG1sXG4gICAgKilcbiAgICBpZiBJbnQuKCA8ICkgbiAyNFxuICAgIHRoZW4geiBseG9yIDB4YWFhYV9hYWFhX2FhYWFfYWFhYUxcbiAgICBlbHNlIHpcblxuICBsZXQldGVzdF91bml0IFwib2RkIGdhbW1hXCIgPVxuICAgIGZvciBpbnB1dCA9IC0xXzAwMF8wMDAgdG8gMV8wMDBfMDAwIGRvXG4gICAgICBsZXQgb3V0cHV0ID0gbWl4X29kZF9nYW1tYSAoSW50NjQub2ZfaW50IGlucHV0KSBpblxuICAgICAgaWYgbm90IChpc19vZGQgb3V0cHV0KSB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgICAgXCJnYW1tYSB2YWx1ZSBpcyBub3Qgb2RkXCJcbiAgICAgICAgICAgIChpbnB1dCAgOiBpbnQpXG4gICAgICAgICAgICAob3V0cHV0IDogaW50NjQpXVxuICAgIGRvbmVcblxuICBsZXQgbmV4dF9zZWVkIHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgdC5vZGRfZ2FtbWEgaW5cbiAgICB0LnNlZWQgPC0gbmV4dDtcbiAgICBuZXh0XG5cbiAgbGV0IG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYSA9XG4gICAgbGV0IHNlZWQgICAgICA9IG1peDY0ICAgICAgICAgc2VlZCAgaW5cbiAgICBsZXQgb2RkX2dhbW1hID0gbWl4X29kZF9nYW1tYSBnYW1tYSBpblxuICAgIHsgc2VlZDsgb2RkX2dhbW1hIH1cblxuICBsZXQgcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSA9XG4gICAgUmFuZG9tLlN0YXRlLmludDY0X2luY2wgcmFuZG9tX3N0YXRlIEludDY0Lm1pbl92YWx1ZSBJbnQ2NC5tYXhfdmFsdWVcblxuICBsZXQgY3JlYXRlIHJhbmRvbV9zdGF0ZSA9XG4gICAgbGV0IHNlZWQgID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIGxldCBnYW1tYSA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgc3BsaXQgdCA9XG4gICAgbGV0IHNlZWQgID0gbmV4dF9zZWVkIHQgaW5cbiAgICBsZXQgZ2FtbWEgPSBuZXh0X3NlZWQgdCBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBuZXh0X2ludDY0IHQgPSBtaXg2NCAobmV4dF9zZWVkIHQpXG5cbiAgKCogW3BlcnR1cmJdIGlzIG5vdCBmcm9tIGFueSBleHRlcm5hbCBzb3VyY2UsIGJ1dCBwcm92aWRlcyBhIHdheSB0byBtaXggaW4gZXh0ZXJuYWxcbiAgICAgZW50cm9weSB3aXRoIGEgcHNldWRvLXJhbmRvbSBzdGF0ZS4gKilcbiAgbGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIG1peDY0IChJbnQ2NC5vZl9pbnQgc2FsdCkgaW5cbiAgICB0LnNlZWQgPC0gbmV4dFxuXG5lbmRcblxubGV0IGJvb2wgc3RhdGUgPSBpc19vZGQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIFdlIGFidXNlIHRlcm1pbm9sb2d5IGFuZCByZWZlciB0byBpbmRpdmlkdWFsIHZhbHVlcyBhcyBiaWFzZWQgb3IgdW5iaWFzZWQuICBNb3JlXG4gICBwcm9wZXJseSwgd2hhdCBpcyB1bmJpYXNlZCBpcyB0aGUgc2FtcGxlciB0aGF0IHJlc3VsdHMgaWYgd2Uga2VlcCBvbmx5IHRoZXNlIFwidW5iaWFzZWRcIlxuICAgdmFsdWVzLiAqKVxubGV0IHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgfmRyYXdcbiAgICAgIH5yZW1haW5kZXJcbiAgICAgIH5kcmF3X21heGltdW1cbiAgICAgIH5yZW1haW5kZXJfbWF4aW11bVxuICA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgZHJhdyAtIHJlbWFpbmRlciA8PSBkcmF3X21heGltdW0gLSByZW1haW5kZXJfbWF4aW11bVxuXG5sZXQldGVzdF91bml0IFwicmVtYWluZGVyX2lzX3VuYmlhc2VkXCIgPVxuICAoKiBjaG9vc2luZyBhIHJhbmdlIG9mIDEwIHZhbHVlcyBiYXNlZCBvbiBhIHJhbmdlIG9mIDEwNSB2YWx1ZXMgKilcbiAgbGV0IGRyYXdfbWF4aW11bSA9IDEwNEwgaW5cbiAgbGV0IHJlbWFpbmRlcl9tYXhpbXVtID0gOUwgaW5cbiAgbGV0IGlzX3VuYmlhc2VkIGRyYXcgPVxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyByZW1haW5kZXJfbWF4aW11bSkgaW5cbiAgICByZW1haW5kZXJfaXNfdW5iaWFzZWQgfmRyYXcgfnJlbWFpbmRlciB+ZHJhd19tYXhpbXVtIH5yZW1haW5kZXJfbWF4aW11bVxuICBpblxuICBmb3IgaSA9IDAgdG8gOTkgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OnRydWVcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMTAwIHRvIDEwNCBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6ZmFsc2VcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmVcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBib3VuZGVkIHJhbmRvbW5lc3MgaXMgYWRhcHRlZCBmcm9tIFtSYW5kb20uU3RhdGUuaW50Kl0gaW4gdGhlXG4gICBPQ2FtbCBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhlIHB1cnBvc2UgaXMgdG8gdXNlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0b1xuICAgW25leHRfaW50NjRdIHRvIHByb2R1Y2UgYSBudW1iZXIgdW5pZm9ybWx5IGNob3NlbiB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLiAqKVxubGV0IGludDY0ID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBsZXQgcmVjIGJldHdlZW4gc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGluXG4gICAgaWYgbG8gPD0gZHJhdyAmJiBkcmF3IDw9IGhpXG4gICAgdGhlbiBkcmF3XG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcbiAgaW5cbiAgbGV0IHJlYyBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGxhbmQgSW50NjQubWF4X3ZhbHVlIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIG1heGltdW0pIGluXG4gICAgaWYgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICAgICB+ZHJhd1xuICAgICAgICAgfnJlbWFpbmRlclxuICAgICAgICAgfmRyYXdfbWF4aW11bTpJbnQ2NC5tYXhfdmFsdWVcbiAgICAgICAgIH5yZW1haW5kZXJfbWF4aW11bTptYXhpbXVtXG4gICAgdGhlbiByZW1haW5kZXJcbiAgICBlbHNlIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbG8gPiBoaSB0aGVuIGJlZ2luXG4gICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludDY0OiBjcm9zc2VkIGJvdW5kc1wiIChsbyA6IGludDY0KSAoaGkgOiBpbnQ2NCldXG4gICAgZW5kO1xuICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgIGlmIGRpZmYgPSBJbnQ2NC5tYXhfdmFsdWVcbiAgICB0aGVuICgoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSkgbGFuZCBJbnQ2NC5tYXhfdmFsdWUpICsgbG9cbiAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICB0aGVuIChub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgZGlmZikgKyBsb1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG5cbmxldCBpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQzMiBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50MzIgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50MzIgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnQzMl90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IG5hdGl2ZWludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfbmF0aXZlaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX25hdGl2ZWludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX25hdGl2ZWludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDYzIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2My50b19pbnQ2NCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2My50b19pbnQ2NCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDYzLm9mX2ludDY0X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgZG91YmxlX3VscCA9IDIuICoqLiAtNTMuXG5cbmxldCV0ZXN0X3VuaXQgXCJkb3VibGVfdWxwXCIgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPlxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPSAxLjApXG4gIHwgVzMyIC0+XG4gICAgKCogMzItYml0IE9DYW1sIHVzZXMgYSA2NC1iaXQgZmxvYXQgcmVwcmVzZW50YXRpb24gYnV0IDgwLWJpdCBmbG9hdCBpbnN0cnVjdGlvbnMsIHNvXG4gICAgICAgcm91bmRpbmcgd29ya3MgZGlmZmVyZW50bHkgZHVlIHRvIHRoZSBjb252ZXJzaW9uIGJhY2sgYW5kIGZvcnRoLiAqKVxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApIDw9IDEuMClcblxubGV0IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NCA9XG4gIChJbnQ2NC50b19mbG9hdCAoaW50NjQgbHNyIDExKSkgKi4gZG91YmxlX3VscFxuXG5sZXQldGVzdF91bml0IFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPSBiZWdpblxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4MDAwMF8wMDAwXzAwMDBfMDAwMEwgPSAwLik7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPCAxLjApO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMID0gKDEuMCAtLiBkb3VibGVfdWxwKSk7XG5lbmRcblxubGV0IHVuaXRfZmxvYXQgc3RhdGUgPVxuICB1bml0X2Zsb2F0X2Zyb21faW50NjQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIE5vdGUgYWJvdXQgcm91bmRvZmYgZXJyb3I6XG5cbiAgIEFsdGhvdWdoIFtmbG9hdCBzdGF0ZSB+bG8gfmhpXSBpcyBub21pbmFsbHkgaW5jbHVzaXZlIG9mIGVuZHBvaW50cywgd2UgYXJlIHJlbHlpbmcgb25cbiAgIHRoZSBmYWN0IHRoYXQgW3VuaXRfZmxvYXRdIG5ldmVyIHJldHVybnMgMS4sIGJlY2F1c2UgdGhlcmUgYXJlIHBhaXJzIFsobG8saGkpXSBmb3JcbiAgIHdoaWNoIFtsbyArLiAxLiAqLiAoaGkgLS4gbG8pID4gaGldLiAgVGhlcmUgYXJlIGFsc28gcGFpcnMgWyhsbyxoaSldIGFuZCB2YWx1ZXMgb2YgW3hdXG4gICB3aXRoIFt4IDwgMS5dIHN1Y2ggdGhhdCBbbG8gKy4geCAqLiAoaGkgLS4gbG8pID0gaGldLCBzbyBpdCB3b3VsZCBub3QgYmUgY29ycmVjdCB0b1xuICAgZG9jdW1lbnQgdGhpcyBhcyBiZWluZyBleGNsdXNpdmUgb2YgW2hpXS5cbiopXG5sZXQgZmxvYXQgPVxuICBsZXQgcmVjIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgcmFuZ2UgPSBoaSAtLiBsbyBpblxuICAgIGlmIEZsb2F0LmlzX2Zpbml0ZSByYW5nZVxuICAgIHRoZW4gKGxvICsuICh1bml0X2Zsb2F0IHN0YXRlICouIHJhbmdlKSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBJZiBbaGkgLSBsb10gaXMgaW5maW5pdGUsIHRoZW4gW2hpICsgbG9dIGlzIGZpbml0ZSBiZWNhdXNlIFtoaV0gYW5kIFtsb10gaGF2ZVxuICAgICAgICAgb3Bwb3NpdGUgc2lnbnMuICopXG4gICAgICBsZXQgbWlkID0gKGhpICsuIGxvKSAvLiAyLiBpblxuICAgICAgaWYgYm9vbCBzdGF0ZVxuICAgICAgKCogRGVwZW5kaW5nIG9uIHJvdW5kaW5nLCB0aGUgcmVjdXJzaW9uIHdpdGggW35oaTptaWRdIG1pZ2h0IGJlIGluY2x1c2l2ZSBvZiBbbWlkXSxcbiAgICAgICAgIHdoaWNoIHdvdWxkIG1lYW4gdGhlIHR3byBjYXNlcyBvdmVybGFwIG9uIFttaWRdLiBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gaW5jcmVtZW50XG4gICAgICAgICBvciBkZWNyZW1lbnQgW21pZF0gdXNpbmcgW29uZV91bHBdIGluIGVpdGhlciBvZiB0aGUgY2FsbHMsIGJ1dCB0aGVuIGlmIHRoZSBmaXJzdFxuICAgICAgICAgY2FzZSBpcyBleGNsdXNpdmUgd2UgbGVhdmUgYSBcImdhcFwiIGJldHdlZW4gdGhlIHR3byByYW5nZXMuIFRoZXJlJ3Mgbm8gcGVyZmVjdGx5XG4gICAgICAgICB1bmlmb3JtIHNvbHV0aW9uLCBzbyB3ZSB1c2UgdGhlIHNpbXBsZXIgY29kZSB0aGF0IGRvZXMgbm90IGNhbGwgW29uZV91bHBdLiAqKVxuICAgICAgdGhlbiBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaTptaWRcbiAgICAgIGVsc2UgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbzptaWQgfmhpXG4gICAgZW5kXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgbG8gJiYgRmxvYXQuaXNfZmluaXRlIGhpKVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgbm90IGZpbml0ZSBudW1iZXJzXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGlmIEZsb2F0LiggPiApIGxvIGhpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpXG5cbmxldCViZW5jaF9mdW4gXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9XG4gIGxldCBpbnQ2NCA9IDFMIGluXG4gIGZ1biAoKSAtPiB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjRcblxubW9kdWxlIExvZ191bmlmb3JtID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlIChNIDogc2lnIGluY2x1ZGUgSW50LlMgdmFsIHVuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0IGVuZCkgOiBzaWdcbiAgICB2YWwgbG9nX3VuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOk0udCAtPiBoaTpNLnQgLT4gTS50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gTVxuXG4gICAgbGV0IGJpdHNfdG9fcmVwcmVzZW50IHQgPVxuICAgICAgYXNzZXJ0ICh0ID49IHplcm8pO1xuICAgICAgbGV0IHQgPSByZWYgdCBpblxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgd2hpbGUgIXQgPiB6ZXJvIGRvXG4gICAgICAgIHQgOj0gc2hpZnRfcmlnaHQgIXQgMTtcbiAgICAgICAgSW50LmluY3IgbjtcbiAgICAgIGRvbmU7XG4gICAgICAhblxuXG4gICAgbGV0JXRlc3RfdW5pdCBcImJpdHNfdG9fcmVwcmVzZW50XCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBpbnRdIChiaXRzX3RvX3JlcHJlc2VudCBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDApICAgMDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxKSAgIDE7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMikgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDMpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA0KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNSkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDYpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA3KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gOCkgICA0O1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEwMCkgNztcbiAgICAgIHRlc3QgTS5tYXhfdmFsdWUgKEludC5wcmVkIE0ubnVtX2JpdHMpO1xuICAgIDs7XG5cbiAgICBsZXQgbWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIGlmIEludC5lcXVhbCBuIDBcbiAgICAgIHRoZW4gemVyb1xuICAgICAgZWxzZSBzaGlmdF9sZWZ0IG9uZSAoSW50LnByZWQgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAyKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDQpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gOCk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biA2NCk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSAoTS5zaGlmdF9yaWdodF9sb2dpY2FsIE0ubWluX3ZhbHVlIDEpO1xuICAgIDs7XG5cbiAgICBsZXQgbWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIHByZWQgKHNoaWZ0X2xlZnQgb25lIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWF4X3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDMpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNyk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biAxNSk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biAxMjcpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgTS5tYXhfdmFsdWU7XG4gICAgOztcblxuICAgIGxldCBsb2dfdW5pZm9ybSBzdGF0ZSB+bG8gfmhpID1cbiAgICAgIGxldCBtaW5fYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGxvIGluXG4gICAgICBsZXQgbWF4X2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBoaSBpblxuICAgICAgbGV0IGJpdHMgPSBpbnQgc3RhdGUgfmxvOm1pbl9iaXRzIH5oaTptYXhfYml0cyBpblxuICAgICAgdW5pZm9ybSBzdGF0ZVxuICAgICAgICB+bG86KG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtYXggbG8pXG4gICAgICAgIH5oaToobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1pbiBoaSlcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9pbnQgICAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQgICAgICAgbGV0IHVuaWZvcm0gPSBpbnQgICAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDMyICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDMyICAgICBsZXQgdW5pZm9ybSA9IGludDMyICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjMgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjMgICAgIGxldCB1bmlmb3JtID0gaW50NjMgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2NCAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2NCAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2NCAgICAgZW5kKVxuICBtb2R1bGUgRm9yX25hdGl2ZWludCA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIE5hdGl2ZWludCBsZXQgdW5pZm9ybSA9IG5hdGl2ZWludCBlbmQpXG5cbiAgbGV0IGludCAgICAgICA9IEZvcl9pbnQubG9nX3VuaWZvcm1cbiAgbGV0IGludDMyICAgICA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjMgICAgID0gRm9yX2ludDYzLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2NCAgICAgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1cbiAgbGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1cbmVuZFxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjEgKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTGF5b3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpZ2FycmF5LmxheW91dFxuXG4gIGxldCBvZmZzZXQgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgIHwgQmlnYXJyYXkuRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIHwgQmlnYXJyYXkuQ19sYXlvdXQgLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTEuZGltIHQgLSAxIGRvXG4gICAgICBmIChpICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0fVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbSB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTEuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIChfIDogZWx0KSAtPiB0LntpfSA8LSBmIGkpO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gaW5pdCA6PSBmICFpbml0IHQue2l9KTtcbiAgICAhaW5pdFxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgfmY6KGZ1biBpIC0+IHQue2kgKyBvZmZzZXR9KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkxLmRpbSB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIEJpZ2FycmF5LkFycmF5Mi50XG5cbiAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQgLSAxIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCAtIDEgZG9cbiAgICAgICAgZiAoaSArIG9mZnNldCkgKGogKyBvZmZzZXQpIHQue2kgKyBvZmZzZXQsIGogKyBvZmZzZXR9XG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpbml0ICh0eXBlIGVsdCkgKGtpbmQgOiAoZWx0LCBfKSBCaWdhcnJheS5raW5kKSBsYXlvdXQgZGltMSBkaW0yIH5mID1cbiAgICBsZXQgdCA9IEJpZ2FycmF5LkFycmF5Mi5jcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgaiAoXyA6IGVsdCkgLT4gdC57aSwgan0gPC0gZiBpIGopO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gKF8gOiBpbnQpIChfIDogaW50KSBlbHQgLT4gaW5pdCA6PSBmICFpbml0IGVsdCk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMSB0KSB+ZjooZnVuIGkgLT5cbiAgICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIH5mOihmdW4gaiAtPiB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fSkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBfc2V4cF9vZl9wYWNrIF9zZXhwX29mX2xheW91dCB0ID1cbiAgICBbJXNleHAgKHRvX2FycmF5IHQgOiBlbHQgYXJyYXkgYXJyYXkpXVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGQgaGFzaF9mb2xkX2VsdCBzdGF0ZSB0ID1cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMSB0KSBpblxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIGluXG4gICAgZm9sZCB0IH5pbml0OnN0YXRlIH5mOmhhc2hfZm9sZF9lbHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSAtPiBzaXplOmludCAtPiBoYXNoOkhhc2guc3RhdGUgLT4gSGFzaC5zdGF0ZVxuXG5sZXQgY3JlYXRlIGYgOiBfIHQgPSBmXG5cbmxldCBvYnNlcnZlICh0IDogXyB0KSB4IH5zaXplIH5oYXNoID1cbiAgaWYgc2l6ZSA8IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgZWxzZSB0IHggfnNpemUgfmhhc2hcbjs7XG5cbmxldCBvcGFxdWUgXyB+c2l6ZTpfIH5oYXNoID0gaGFzaFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgZ2VuZXJhdGUgOiAnYSB0IC0+IHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhKSBTdGFnZWQudFxuXG4gIGxldCBjcmVhdGUgZiA6IF8gdCA9IFN0YWdlZC5zdGFnZSBmXG5cbiAgbGV0IGdlbmVyYXRlICh0IDogXyB0KSB+c2l6ZSB+cmFuZG9tID1cbiAgICBpZiBzaXplIDwgMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmdlbmVyYXRlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgICBlbHNlIFN0YWdlZC51bnN0YWdlIHQgfnNpemUgfnJhbmRvbVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgc2l6ZSA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb206XyAtPiBzaXplKVxuXG5sZXQgZm4gZG9tIHJuZyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuc3BsaXQgcmFuZG9tIGluXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBoYXNoID0gT2JzZXJ2ZXIwLm9ic2VydmUgZG9tIHggfnNpemUgfmhhc2g6KEhhc2guYWxsb2MgKCkpIGluXG4gICAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY29weSByYW5kb20gaW5cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpO1xuICAgICAgZ2VuZXJhdGUgcm5nIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgd2l0aF9zaXplIHQgfnNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgcGVydHVyYiB0IHNhbHQgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUucGVydHVyYiByYW5kb20gc2FsdDtcbiAgICBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIH5zaXplIH5yYW5kb20gPVxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IFNvbWUgeSAtPiB5XG4gICAgfCBOb25lIC0+IGxvb3AgfnNpemU6KHNpemUgKyAxKSB+cmFuZG9tXG4gIGluXG4gIGNyZWF0ZSBsb29wXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5sZXQgcmV0dXJuIHggPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb206XyAtPiB4KVxubGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBmIChnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYXBwbHkgdGYgdHggPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGYgPSBnZW5lcmF0ZSB0ZiB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0eCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgZiB4KVxuOztcblxubGV0IGJpbmQgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIGdlbmVyYXRlIChmIHgpIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QubWFwIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gTGlzdC5pdGVyIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgYm90aCA9IEZvcl9hcHBsaWNhdGl2ZS5ib3RoXG5sZXQgbWFwMiA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAyXG5sZXQgbWFwMyA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAzXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IEZvcl9hcHBsaWNhdGl2ZS5BcHBsaWNhdGl2ZV9pbmZpeFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbmZpeFxuXG5tb2R1bGUgRm9yX21vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgaWdub3JlX20gPSBGb3JfbW9uYWQuaWdub3JlX21cbmxldCBqb2luID0gRm9yX21vbmFkLmpvaW5cblxubW9kdWxlIE1vbmFkX2luZml4ID0gRm9yX21vbmFkLk1vbmFkX2luZml4XG5pbmNsdWRlIE1vbmFkX2luZml4XG5tb2R1bGUgTGV0X3N5bnRheCA9IEZvcl9tb25hZC5MZXRfc3ludGF4XG5vcGVuIExldF9zeW50YXhcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgYXJyYXkgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgbGV0IGxvID0gMCBpblxuICBsZXQgaGkgPSBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvIH5oaSBpblxuICAgIGFycmF5LihpbmRleCkpXG47O1xuXG5sZXQgdW5pb24gbGlzdCA9IGpvaW4gKG9mX2xpc3QgbGlzdClcblxubGV0IG9mX3dlaWdodGVkX2xpc3QgYWxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGFsaXN0XG4gIHRoZW4gRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IGVtcHR5IGxpc3RcIl07XG4gIGxldCB3ZWlnaHRzLCB2YWx1ZXMgPSBMaXN0LnVuemlwIGFsaXN0IGluXG4gIGxldCB2YWx1ZV9hcnJheSA9IEFycmF5Lm9mX2xpc3QgdmFsdWVzIGluXG4gIGxldCB0b3RhbF93ZWlnaHQsIGN1bXVsYXRpdmVfd2VpZ2h0X2FycmF5ID1cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5pbml0IChBcnJheS5sZW5ndGggdmFsdWVfYXJyYXkpIH5mOihmdW4gXyAtPiAwLikgaW5cbiAgICBsZXQgc3VtID1cbiAgICAgIExpc3QuZm9sZGkgd2VpZ2h0cyB+aW5pdDowLiB+ZjooZnVuIGluZGV4IGFjYyB3ZWlnaHQgLT5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgd2VpZ2h0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbm90IGZpbml0ZVwiXG4gICAgICAgICAgICAgICAgKHdlaWdodCA6IGZsb2F0KV07XG4gICAgICAgIGlmIEZsb2F0LiggPCApIHdlaWdodCAwLlxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbmVnYXRpdmVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBsZXQgY3VtdWxhdGl2ZSA9IGFjYyArLiB3ZWlnaHQgaW5cbiAgICAgICAgYXJyYXkuKGluZGV4KSA8LSBjdW11bGF0aXZlO1xuICAgICAgICBjdW11bGF0aXZlKVxuICAgIGluXG4gICAgaWYgRmxvYXQuKCA8PSApIHN1bSAwLlxuICAgIHRoZW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB0b3RhbCB3ZWlnaHQgaXMgemVyb1wiXTtcbiAgICBzdW0sIGFycmF5XG4gIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBjaG9pY2UgPSBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOjAuIH5oaTp0b3RhbF93ZWlnaHQgaW5cbiAgICBtYXRjaFxuICAgICAgQXJyYXkuYmluYXJ5X3NlYXJjaFxuICAgICAgICBjdW11bGF0aXZlX3dlaWdodF9hcnJheVxuICAgICAgICB+Y29tcGFyZTpGbG9hdC5jb21wYXJlXG4gICAgICAgIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgICAgY2hvaWNlXG4gICAgd2l0aFxuICAgIHwgU29tZSBpbmRleCAtPiB2YWx1ZV9hcnJheS4oaW5kZXgpXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB3ZWlnaHRlZF91bmlvbiBhbGlzdCA9IGpvaW4gKG9mX3dlaWdodGVkX2xpc3QgYWxpc3QpXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGdlbmVyYXRlIChmb3JjZSBsYXp5X3QpIH5zaXplIH5yYW5kb20pXG5cbmxldCBmaXhlZF9wb2ludCBvZl9nZW5lcmF0b3IgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX2dlbmVyYXRvciAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBmb3JjZSBsYXp5X3Rcbjs7XG5cbmxldCB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgcmVjX2xpc3QgPVxuICAgICAgTGlzdC5tYXAgKGYgc2VsZikgfmY6KGZ1biAodywgdCkgLT5cbiAgICAgICAgKCB3XG4gICAgICAgICwgbGV0JWJpbmQgbiA9IHNpemUgaW5cbiAgICAgICAgICB3aXRoX3NpemUgfnNpemU6KG4gLSAxKSB0ICkpXG4gICAgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG5vbnJlY19saXN0IHx8IExpc3QuaXNfZW1wdHkgcmVjX2xpc3RcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci53ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb246IGxpc3RzIG11c3QgYmUgbm9uLWVtcHR5XCJdO1xuICAgIGxldCBub25yZWNfZ2VuID0gd2VpZ2h0ZWRfdW5pb24gbm9ucmVjX2xpc3QgaW5cbiAgICBsZXQgcmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIChub25yZWNfbGlzdCBAIHJlY19saXN0KSBpblxuICAgIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gICAgfCAwIC0+IG5vbnJlY19nZW5cbiAgICB8IF8gLT4gcmVjX2dlbilcbjs7XG5cbmxldCByZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBsZXQgd2VpZ2h0ZWQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6KGZ1biB0IC0+IDEuLCB0KSBpblxuICB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gKHdlaWdodGVkIG5vbnJlY19saXN0KSB+ZjooZnVuIHNlbGYgLT4gd2VpZ2h0ZWQgKGYgc2VsZikpXG47O1xuXG5sZXQgc2l6ZXMgPyhtaW5fbGVuZ3RoID0gMCkgPyhtYXhfbGVuZ3RoID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgYXNzZXJ0IChtaW5fbGVuZ3RoIDw9IG1heF9sZW5ndGgpO1xuICAgIGxldCB1cHBlcl9ib3VuZCA9IG1pbl9sZW5ndGggKyBzaXplIGluXG4gICAgbGV0IG1heF9sZW5ndGggPVxuICAgICAgaWYgdXBwZXJfYm91bmQgPj0gbWluX2xlbmd0aCAoKiBndWFyZCBhZ2FpbnN0IG92ZXJmbG93ICopXG4gICAgICB0aGVuIG1pbiBtYXhfbGVuZ3RoIHVwcGVyX2JvdW5kXG4gICAgICBlbHNlIG1heF9sZW5ndGhcbiAgICBpblxuICAgICgqIHBpY2sgYSBsZW5ndGgsIHdlaWdodGVkIGxvdyBzbyB0aGF0IG1vc3Qgb2YgdGhlIHNpemUgaXMgc3BlbnQgb24gZWxlbWVudHMgKilcbiAgICBsZXQgbGVuID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86bWluX2xlbmd0aCB+aGk6bWF4X2xlbmd0aCBpblxuICAgICgqIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyByZXR1cm4gYW4gZW1wdHkgYXJyYXksIG90aGVyd2lzZSByZXR1cm4gYSBub24tZW1wdHkgYXJyYXlcbiAgICAgICB3aXRoIHRoZSBzaXplIGRpc3RyaWJ1dGVkIGFtb25nIHRoZSBlbGVtZW50cyAqKVxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2l6ZXMgPSBBcnJheS5pbml0IGxlbiB+ZjooZnVuIF8gLT4gMCkgaW5cbiAgICAgIGxldCByZW1haW5pbmcgPSBzaXplIC0gKGxlbiAtIG1pbl9sZW5ndGgpIGluXG4gICAgICBsZXQgbWF4X2luZGV4ID0gbGVuIC0gMSBpblxuICAgICAgZm9yIF8gPSAxIHRvIHJlbWFpbmluZyBkb1xuICAgICAgICAoKiBwaWNrIGFuIGluZGV4LCB3ZWlnaHRlZCBsb3cgc28gdGhhdCB3ZSBzZWUgdW5iYWxhbmNlZCBkaXN0cmlidXRpb25zIG9mdGVuICopXG4gICAgICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOm1heF9pbmRleCBpblxuICAgICAgICBzaXplcy4oaW5kZXgpIDwtIHNpemVzLihpbmRleCkgKyAxXG4gICAgICBkb25lO1xuICAgICAgKCogcGVybXV0ZSB0aGUgYXJyYXkgc28gdGhhdCBubyBpbmRleCBpcyBmYXZvcmVkIG92ZXIgYW5vdGhlciAqKVxuICAgICAgZm9yIGkgPSAwIHRvIG1heF9pbmRleCAtIDEgZG9cbiAgICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgQXJyYXkuc3dhcCBzaXplcyBpIGpcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgKEFycmF5LnN1bSAobW9kdWxlIEludCkgc2l6ZXMgfmY6Rm4uaWQgKyAobGVuIC0gbWluX2xlbmd0aCkgPSBzaXplKTtcbiAgICAgIEFycmF5LnRvX2xpc3Qgc2l6ZXMpKVxuOztcblxubGV0IHVuaXQgPSByZXR1cm4gKClcbmxldCBib29sID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tKVxubGV0IG9wdGlvbiB2YWx1ZV90ID0gdW5pb24gWyByZXR1cm4gTm9uZTsgbWFwIHZhbHVlX3QgfmY6T3B0aW9uLnJldHVybiBdXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID0gdW5pb24gWyBtYXAgZnN0X3QgfmY6RWl0aGVyLmZpcnN0OyBtYXAgc25kX3QgfmY6RWl0aGVyLnNlY29uZCBdXG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICB8IFNlY29uZCBlcnIgLT4gRXJyb3IgZXJyKVxuOztcblxubGV0IGxpc3RfZ2VuZXJpYyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCBlbHRfZ2VuID1cbiAgbGV0JWJpbmQgc2l6ZXMgPSBzaXplcyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCAoKSBpblxuICBMaXN0Lm1hcCBzaXplcyB+ZjooZnVuIHNpemUgLT4gd2l0aF9zaXplIH5zaXplIGVsdF9nZW4pIHw+IGFsbFxuOztcblxubGV0IGxpc3QgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyBlbHRfZ2VuXG5sZXQgbGlzdF9ub25fZW1wdHkgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDoxIGVsdF9nZW5cblxubGV0IGxpc3Rfd2l0aF9sZW5ndGggZWx0X2dlbiB+bGVuZ3RoID1cbiAgbGlzdF9nZW5lcmljIH5taW5fbGVuZ3RoOmxlbmd0aCB+bWF4X2xlbmd0aDpsZW5ndGggZWx0X2dlblxuOztcblxubGV0IGxpc3RfZmlsdGVyZWQgZWx0cyA9XG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBsZW5ndGhfb2ZfaW5wdXQgPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgbGVuZ3RoX29mX291dHB1dCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmxlbmd0aF9vZl9pbnB1dCBpblxuICAgIGxldCBpbmRpY2VzID0gQXJyYXkuaW5pdCBsZW5ndGhfb2ZfaW5wdXQgfmY6Rm4uaWQgaW5cbiAgICAoKiBDaG9vc2UgW2xlbmd0aF9vZl9vdXRwdXRdIHJhbmRvbSB2YWx1ZXMgaW4gdGhlIHByZWZpeCBvZiBbaW5kaWNlc10uICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9vZl9vdXRwdXQgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOmkgfmhpOihsZW5ndGhfb2ZfaW5wdXQgLSAxKSBpblxuICAgICAgQXJyYXkuc3dhcCBpbmRpY2VzIGkgalxuICAgIGRvbmU7XG4gICAgKCogU29ydCB0aGUgY2hvc2VuIGluZGljZXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHJlb3JkZXIgdGhlbS4gKilcbiAgICBBcnJheS5zb3J0IGluZGljZXMgfnBvczowIH5sZW46bGVuZ3RoX29mX291dHB1dCB+Y29tcGFyZTpJbnQuY29tcGFyZTtcbiAgICAoKiBSZXR1cm4gdGhlIGNob3NlbiBlbGVtZW50cy4gKilcbiAgICBMaXN0LmluaXQgbGVuZ3RoX29mX291dHB1dCB+ZjooZnVuIGkgLT4gZWx0cy4oaW5kaWNlcy4oaSkpKSlcbjs7XG5cbmxldCBsaXN0X3Blcm11dGF0aW9ucyBsaXN0ID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDEgZG9cbiAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86MCB+aGk6aSBpblxuICAgICAgQXJyYXkuc3dhcCBhcnJheSBpIGpcbiAgICBkb25lO1xuICAgIEFycmF5LnRvX2xpc3QgYXJyYXkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IG1hcCAobGlzdCB0KSB+ZjpBcnJheS5vZl9saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsXG5cbmxldCBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86KENoYXIudG9faW50IGxvKSB+aGk6KENoYXIudG9faW50IGhpKVxuICAgIHw+IENoYXIudW5zYWZlX29mX2ludClcbjs7XG5cbmxldCBjaGFyX3VwcGVyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ0EnICdaJ1xubGV0IGNoYXJfbG93ZXJjYXNlID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnYScgJ3onXG5sZXQgY2hhcl9kaWdpdCA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJzAnICc5J1xubGV0IGNoYXJfcHJpbnRfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJyAnICd+J1xubGV0IGNoYXJfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgQ2hhci5taW5fdmFsdWUgQ2hhci5tYXhfdmFsdWVcbmxldCBjaGFyX2FscGhhID0gdW5pb24gWyBjaGFyX2xvd2VyY2FzZTsgY2hhcl91cHBlcmNhc2UgXVxuXG5sZXQgY2hhcl9hbHBoYW51bSA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgKCogTW9zdCBwZW9wbGUgcHJvYmFibHkgZXhwZWN0IHRoaXMgdG8gYmUgYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiwgbm90IHdlaWdodGVkXG4gICAgICAgdG93YXJkIGRpZ2l0cyBsaWtlIHdlIHdvdWxkIGdldCB3aXRoIFt1bmlvbl0gKHNpbmNlIHRoZXJlIGFyZSBmZXdlciBkaWdpdHMgdGhhblxuICAgICAgIGxldHRlcnMpLiAqKVxuICAgIFsgNTIuLCBjaGFyX2FscGhhOyAxMC4sIGNoYXJfZGlnaXQgXVxuOztcblxubGV0IGNoYXJfd2hpdGVzcGFjZSA9IG9mX2xpc3QgKExpc3QuZmlsdGVyIENoYXIuYWxsIH5mOkNoYXIuaXNfd2hpdGVzcGFjZSlcbmxldCBjaGFyX3ByaW50ID0gd2VpZ2h0ZWRfdW5pb24gWyAxMC4sIGNoYXJfYWxwaGFudW07IDEuLCBjaGFyX3ByaW50X3VuaWZvcm0gXVxuXG5sZXQgY2hhciA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgWyAxMDAuLCBjaGFyX3ByaW50XG4gICAgOyAxMC4sIGNoYXJfdW5pZm9ybVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1pbl92YWx1ZVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1heF92YWx1ZVxuICAgIF1cbjs7XG5cbigqIFByb2R1Y2VzIGEgbnVtYmVyIGZyb20gMCBvciAxIHRvIHNpemUgKyAxLCB3ZWlnaHRlZCBoaWdoLiBXZSBoYXZlIGZvdW5kIHRoaXNcbiAgIGRpc3RyaWJ1dGlvbiBlbXBpcmljYWxseSB1c2VmdWwgZm9yIHN0cmluZyBsZW5ndGhzLiAqKVxubGV0IHNtYWxsX2ludCB+YWxsb3dfemVybyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgbG93ZXJfYm91bmQgPSBpZiBhbGxvd196ZXJvIHRoZW4gMCBlbHNlIDEgaW5cbiAgICBsZXQgdXBwZXJfYm91bmQgPSBzaXplICsgMSBpblxuICAgIGxldCB3ZWlnaHRlZF9sb3cgPVxuICAgICAgU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86MCB+aGk6KHVwcGVyX2JvdW5kIC0gbG93ZXJfYm91bmQpXG4gICAgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfaGlnaCA9IHVwcGVyX2JvdW5kIC0gd2VpZ2h0ZWRfbG93IGluXG4gICAgd2VpZ2h0ZWRfaGlnaClcbjs7XG5cbmxldCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzp0cnVlXG5sZXQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50ID0gc21hbGxfaW50IH5hbGxvd196ZXJvOmZhbHNlXG5cbm1vZHVsZSB0eXBlIEludF93aXRoX3JhbmRvbSA9IHNpZ1xuICBpbmNsdWRlIEludC5TXG5cbiAgdmFsIHVuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG4gIHZhbCBsb2dfdW5pZm9ybSA6IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRm9yX2ludGVnZXIgKEludGVnZXIgOiBJbnRfd2l0aF9yYW5kb20pID0gc3RydWN0XG4gIGxldCBnZW9tZXRyaWMgbG8gfnAgPVxuICAgIGlmIEZsb2F0LmVxdWFsIHAgMS5cbiAgICB0aGVuIHJldHVybiBsb1xuICAgIGVsc2UgaWYgRmxvYXQuZXF1YWwgcCAwLlxuICAgIHRoZW4gcmV0dXJuIEludGVnZXIubWF4X3ZhbHVlXG4gICAgZWxzZSBpZiBGbG9hdC4oIDwgKSBwIDAuIHx8IEZsb2F0LiggPiApIHAgMS4gfHwgRmxvYXQuaXNfbmFuIHBcbiAgICB0aGVuXG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImdlb21ldHJpYyBkaXN0cmlidXRpb246IHAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDFcIiAocCA6IGZsb2F0KV1cbiAgICBlbHNlIChcbiAgICAgICgqIFdlIHN0YXJ0IHdpdGggYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4gV2UgY29udmVydCB0byBleHBvbmVudGlhbCBkaXN0cmlidXRpb25cbiAgICAgICAgIHVzaW5nIFtsb2ddLiBXZSBjb252ZXJ0IHRvIGdlb21ldHJpYyB3aXRoIFtyb3VuZF9kb3duXS4gVGhlbiB3ZSBib3VuZHMgY2hlY2sgYW5kXG4gICAgICAgICByZXR1cm4uICopXG4gICAgICBsZXQgZGVub21pbmF0b3IgPSBGbG9hdC5sb2cxcCAoLS5wKSBpblxuICAgICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20udW5pdF9mbG9hdCByYW5kb20gaW5cbiAgICAgICAgbGV0IGV4cG9uZW50aWFsID0gRmxvYXQubG9nIHVuaWZvcm0gLy4gZGVub21pbmF0b3IgaW5cbiAgICAgICAgbGV0IGZsb2F0ID0gRmxvYXQucm91bmRfZG93biBleHBvbmVudGlhbCBpblxuICAgICAgICBtYXRjaCBJbnRlZ2VyLm9mX2Zsb2F0IGZsb2F0IHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+IEludGVnZXIubWF4X3ZhbHVlXG4gICAgICAgIHwgaW50IC0+XG4gICAgICAgICAgbGV0IGludCA9IEludGVnZXIuKCArICkgbG8gaW50IGluXG4gICAgICAgICAgaWYgSW50ZWdlci4oIDwgKSBpbnQgbG8gdGhlbiBJbnRlZ2VyLm1heF92YWx1ZSBlbHNlIGludCkpXG4gIDs7XG5cbiAgbGV0IHVuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci51bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBsb2dfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLmxvZ191bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBub25fdW5pZm9ybSBmIGxvIGhpID1cbiAgICB3ZWlnaHRlZF91bmlvbiBbIDAuMDUsIHJldHVybiBsbzsgMC4wNSwgcmV0dXJuIGhpOyAwLjksIGYgbG8gaGkgXVxuICA7O1xuXG4gIGxldCBpbmNsdXNpdmUgPSBub25fdW5pZm9ybSB1bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgbG9nX2luY2x1c2l2ZSA9IG5vbl91bmlmb3JtIGxvZ191bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgdW5pZm9ybV9hbGwgPSB1bmlmb3JtX2luY2x1c2l2ZSBJbnRlZ2VyLm1pbl92YWx1ZSBJbnRlZ2VyLm1heF92YWx1ZVxuXG4gIGxldCBhbGwgPVxuICAgIFslbWFwXG4gICAgICBsZXQgbmVnYXRpdmUgPSBib29sXG4gICAgICBhbmQgbWFnbml0dWRlID0gbG9nX2luY2x1c2l2ZSBJbnRlZ2VyLnplcm8gSW50ZWdlci5tYXhfdmFsdWUgaW5cbiAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gSW50ZWdlci5iaXRfbm90IG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2ludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnRcbiAgZW5kKVxuXG5sZXQgaW50ID0gRm9yX2ludC5hbGxcbmxldCBpbnRfdW5pZm9ybSA9IEZvcl9pbnQudW5pZm9ybV9hbGxcbmxldCBpbnRfaW5jbHVzaXZlID0gRm9yX2ludC5pbmNsdXNpdmVcbmxldCBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmVcbmxldCBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnRfZ2VvbWV0cmljID0gRm9yX2ludC5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9pbnQzMiA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDMyXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDMyXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50MzJcbiAgZW5kKVxuXG5sZXQgaW50MzIgPSBGb3JfaW50MzIuYWxsXG5sZXQgaW50MzJfdW5pZm9ybSA9IEZvcl9pbnQzMi51bmlmb3JtX2FsbFxubGV0IGludDMyX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5pbmNsdXNpdmVcbmxldCBpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQzMl9nZW9tZXRyaWMgPSBGb3JfaW50MzIuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfaW50NjMgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQ2M1xuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDYzXG4gIGVuZClcblxubGV0IGludDYzID0gRm9yX2ludDYzLmFsbFxubGV0IGludDYzX3VuaWZvcm0gPSBGb3JfaW50NjMudW5pZm9ybV9hbGxcbmxldCBpbnQ2M19pbmNsdXNpdmUgPSBGb3JfaW50NjMuaW5jbHVzaXZlXG5sZXQgaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfaW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfZ2VvbWV0cmljID0gRm9yX2ludDYzLmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX2ludDY0ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2NFxuICBlbmQpXG5cbmxldCBpbnQ2NCA9IEZvcl9pbnQ2NC5hbGxcbmxldCBpbnQ2NF91bmlmb3JtID0gRm9yX2ludDY0LnVuaWZvcm1fYWxsXG5sZXQgaW50NjRfaW5jbHVzaXZlID0gRm9yX2ludDY0LmluY2x1c2l2ZVxubGV0IGludDY0X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2dlb21ldHJpYyA9IEZvcl9pbnQ2NC5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBOYXRpdmVpbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20ubmF0aXZlaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0ubmF0aXZlaW50XG4gIGVuZClcblxubGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQuYWxsXG5sZXQgbmF0aXZlaW50X3VuaWZvcm0gPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1fYWxsXG5sZXQgbmF0aXZlaW50X2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQuaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2dlb21ldHJpYyA9IEZvcl9uYXRpdmVpbnQuZ2VvbWV0cmljXG5sZXQgZmxvYXRfemVyb19leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMC5cbmxldCBmbG9hdF96ZXJvX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSAwLlxuXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9XG4gIEZsb2F0Lm9uZV91bHAgYERvd24gRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IEZsb2F0Lm1heF9maW5pdGVfdmFsdWVcbmxldCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9pbmZfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfaW5mX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X25hbl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubmFuXG5sZXQgZmxvYXRfbWluX25hbl9tYW50aXNzYSA9IEludDYzLnN1Y2MgZmxvYXRfaW5mX21hbnRpc3NhXG5sZXQgZmxvYXRfbWF4X25hbl9tYW50aXNzYSA9IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2FcbmxldCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyA9IDUyXG5cbigqIFdlIHdlaWdodCBtYW50aXNzYXMgc28gdGhhdCBcImludGVnZXItbGlrZVwiIHZhbHVlcywgYW5kIHZhbHVlcyB3aXRoIG9ubHkgYSBmZXcgZGlnaXRzXG4gICBwYXN0IHRoZSBkZWNpbWFsLCBhcmUgcmVhc29uYWJseSBjb21tb24uICopXG5sZXQgZmxvYXRfbm9ybWFsX21hbnRpc3NhID1cbiAgbGV0JWJpbmQgbnVtX2JpdHMgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlIDAgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgaW5cbiAgbGV0JW1hcCBiaXRzID1cbiAgICBGb3JfaW50NjMuaW5jbHVzaXZlIEludDYzLnplcm8gKEludDYzLnByZWQgKEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzKSlcbiAgaW5cbiAgSW50NjMuc2hpZnRfbGVmdCBiaXRzIChJbnQuKCAtICkgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgbnVtX2JpdHMpXG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCArICkgbG93ZXJfYm91bmQgb2Zmc2V0XG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggLSApIHVwcGVyX2JvdW5kIG9mZnNldFxuOztcblxuKCogV2Ugd2VpZ2h0IGV4cG9uZW50cyBzdWNoIHRoYXQgdmFsdWVzIG5lYXIgMSBhcmUgbW9yZSBsaWtlbHkuICopXG5sZXQgZmxvYXRfZXhwb25lbnQgPVxuICBsZXQgbWlkcG9pbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDEuIGluXG4gIHVuaW9uXG4gICAgWyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgbWlkcG9pbnRcbiAgICA7IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBtaWRwb2ludCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50XG4gICAgXVxuOztcblxubGV0IGZsb2F0X3plcm8gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfemVyb19leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF96ZXJvX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPVxuICAgIEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlIGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYVxuICBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9ub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSBmbG9hdF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBmbG9hdF9ub3JtYWxfbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfaW5maW5pdGUgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfaW5mX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X2luZl9tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25hbiA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9uYW5fZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gRm9yX2ludDYzLmluY2x1c2l2ZSBmbG9hdF9taW5fbmFuX21hbnRpc3NhIGZsb2F0X21heF9uYW5fbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gZmxvYXRfemVyb1xuICB8IFN1Ym5vcm1hbCAtPiBmbG9hdF9zdWJub3JtYWxcbiAgfCBOb3JtYWwgLT4gZmxvYXRfbm9ybWFsXG4gIHwgSW5maW5pdGUgLT4gZmxvYXRfaW5maW5pdGVcbiAgfCBOYW4gLT4gZmxvYXRfbmFuXG47O1xuXG5sZXQgZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IDEuXG4gIHwgU3Vibm9ybWFsIC0+IDEwLlxuICB8IE5vcm1hbCAtPiAxMDAuXG4gIHwgSW5maW5pdGUgLT4gMS5cbiAgfCBOYW4gLT4gMS5cbjs7XG5cbmxldCBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIGZpbHRlciA9XG4gIExpc3QuZmlsdGVyX21hcCBGbG9hdC5DbGFzcy5hbGwgfmY6KGZ1biBjIC0+XG4gICAgaWYgZmlsdGVyIGMgdGhlbiBTb21lIChmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYywgZmxvYXRfb2ZfY2xhc3MgYykgZWxzZSBOb25lKVxuICB8PiB3ZWlnaHRlZF91bmlvblxuOztcblxubGV0IGZsb2F0X2Zpbml0ZSA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3dpdGhvdXRfbmFuID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgfCBJbmZpbml0ZSAtPiB0cnVlXG4gICAgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXQgPSBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW4gXyAtPiB0cnVlKVxuXG5sZXQgZmxvYXRfZmluaXRlX25vbl96ZXJvID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBaZXJvIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfcG9zaXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X25lZ2F0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBpZiAobm90IChGbG9hdC5pc19maW5pdGUgbG93ZXJfYm91bmQpKSB8fCBub3QgKEZsb2F0LmlzX2Zpbml0ZSB1cHBlcl9ib3VuZClcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiBib3VuZHMgYXJlIG5vdCBmaW5pdGVcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGxldCBsb3dlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCBpblxuICBsZXQgdXBwZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgRG93biB1cHBlcl9ib3VuZCBpblxuICBpZiBsb3dlcl9pbmNsdXNpdmUgPiB1cHBlcl9pbmNsdXNpdmVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiByZXF1ZXN0ZWQgcmFuZ2UgaXMgZW1wdHlcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86bG93ZXJfaW5jbHVzaXZlIH5oaTp1cHBlcl9pbmNsdXNpdmUpXG47O1xuXG5sZXQgZmxvYXRfaW5jbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgaWYgRmxvYXQuZXF1YWwgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgdGhlbiByZXR1cm4gbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBGbG9hdC4oID0gKSAoRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQpIHVwcGVyX2JvdW5kXG4gIHRoZW4gdW5pb24gWyByZXR1cm4gbG93ZXJfYm91bmQ7IHJldHVybiB1cHBlcl9ib3VuZCBdXG4gIGVsc2VcbiAgICB3ZWlnaHRlZF91bmlvblxuICAgICAgWyAwLjA1LCByZXR1cm4gbG93ZXJfYm91bmRcbiAgICAgIDsgMC4wNSwgcmV0dXJuIHVwcGVyX2JvdW5kXG4gICAgICA7IDAuOSwgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgICAgIF1cbjs7XG5cbmxldCBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aCA9XG4gIGxpc3Rfd2l0aF9sZW5ndGggY2hhcl9nZW4gfmxlbmd0aCB8PiBtYXAgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdFxuOztcblxubGV0IHN0cmluZ19vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmcgPSBzdHJpbmdfb2YgY2hhclxubGV0IHN0cmluZ19ub25fZW1wdHkgPSBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJcbmxldCBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aCA9IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyIH5sZW5ndGhcblxubW9kdWxlIEVkaXRfc3RyaW5nID0gc3RydWN0XG4gIGxldCBlZGl0X2luc2VydCBzdHJpbmcgPVxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfZ2VvbWV0cmljIDEgfnA6MC41IGluXG4gICAgbGV0JWJpbmQgc3RyID0gc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGg6bGVuIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IHN0cjsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyBwb3MgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9yZW1vdmUgc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyAocG9zICsgbGVuKSBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X3JlcGxhY2Ugc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBsZXQlYmluZCBzdHIgPSBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aDpsZW4gaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgc3RyOyBTdHJpbmcuZHJvcF9wcmVmaXggc3RyaW5nIChwb3MgKyBsZW4pIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfZG91YmxlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyAocG9zICsgbGVuKTsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyBwb3MgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9ub25lbXB0eSBzdHJpbmcgPVxuICAgIFsgZWRpdF9pbnNlcnQgc3RyaW5nOyBlZGl0X3JlbW92ZSBzdHJpbmc7IGVkaXRfcmVwbGFjZSBzdHJpbmc7IGVkaXRfZG91YmxlIHN0cmluZyBdXG4gICAgfD4gdW5pb25cbiAgOztcblxuICBsZXQgcmVjIGVkaXQgc3RyaW5nIG5fdGltZXMgPVxuICAgIGlmIG5fdGltZXMgPD0gMFxuICAgIHRoZW4gcmV0dXJuIHN0cmluZ1xuICAgIGVsc2UgKFxuICAgICAgbGV0JWJpbmQgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZyB0aGVuIGVkaXRfaW5zZXJ0IHN0cmluZyBlbHNlIGVkaXRfbm9uZW1wdHkgc3RyaW5nXG4gICAgICBpblxuICAgICAgZWRpdCBzdHJpbmcgKG5fdGltZXMgLSAxKSlcbiAgOztcbmVuZFxuXG5sZXQgc3RyaW5nX2xpa2Ugc3RyaW5nID1cbiAgbGV0JWJpbmQgbl90aW1lcyA9IGludF9nZW9tZXRyaWMgMCB+cDowLjUgaW5cbiAgRWRpdF9zdHJpbmcuZWRpdCBzdHJpbmcgbl90aW1lc1xuOztcblxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmdcblxubGV0IHNleHBfb2YgYXRvbSA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCViaW5kIHNpemUgPSBzaXplIGluXG4gICAgKCogY2hvb3NlIGEgbnVtYmVyIHdlaWdodGVkIGxvdyBzbyB3ZSBoYXZlIGEgZGVjcmVhc2luZywgYnV0IG5vdCB2YW5pc2hpbmcsIGNoYW5jZVxuICAgICAgIHRvIGdlbmVyYXRlIGF0b21zIGFzIHNpemUgZ3Jvd3MgKilcbiAgICBtYXRjaCViaW5kIEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgKHNpemUgKyAxKSB3aXRoXG4gICAgKCogZ2VuZXJhdGUgYW4gYXRvbSB1c2luZyB0aGUgZ2l2ZW4gc2l6ZSAqKVxuICAgIHwgMCAtPlxuICAgICAgbGV0JW1hcCBhdG9tID0gYXRvbSBpblxuICAgICAgU2V4cC5BdG9tIGF0b21cbiAgICAoKiByZWx5aW5nIG9uIFtMaXN0Lmdlbl0gdG8gZGlzdHJpYnV0ZSBbc2l6ZV0gb3ZlciBzdWItc2V4cHMgKilcbiAgICB8IF8gLT5cbiAgICAgIGxldCVtYXAgbGlzdCA9IGxpc3Qgc2VsZiBpblxuICAgICAgU2V4cC5MaXN0IGxpc3QpXG47O1xuXG5sZXQgc2V4cCA9IHNleHBfb2Ygc3RyaW5nXG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQlYmluZCBrZXlzID0gbGlzdCBrZXlfZ2VuIGluXG4gIGxldCBrZXlzID0gTGlzdC5kZWR1cF9hbmRfc29ydCBrZXlzIH5jb21wYXJlOmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gIGxldCViaW5kIGRhdGEgPSBsaXN0X3dpdGhfbGVuZ3RoIGRhdGFfZ2VuIH5sZW5ndGg6KExpc3QubGVuZ3RoIGtleXMpIGluXG4gIHJldHVybiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgKExpc3QuemlwX2V4biBrZXlzIGRhdGEpKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gIG1hcCAobGlzdCBlbHRfZ2VuKSB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9saXN0IH5jb21wYXJhdG9yKVxuOztcblxubGV0IGNvbXBhcmF0b3Jfb2ZfbVxuICAgICAgKHR5cGUgYSBjKVxuICAgICAgKG1vZHVsZSBNIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjKVxuICA9XG4gIE0uY29tcGFyYXRvclxuOztcblxubGV0IG1hcF90X20gbSBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW5cbiAgfD4gbWFwIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IHNldF90X20gbSBlbHRfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgfD4gbWFwIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IGJpZ2FycmF5MSB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JW1hcCBlbHRzID0gbGlzdCB0IGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBkaW0gPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IGRpbSB+ZjooZnVuIGkgLT4gZWx0cy4oaSAtIG9mZnNldCkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gYmlnYXJyYXkxIGNoYXIgQ2hhciBDX2xheW91dFxubGV0IGZsb2F0MzJfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbmxldCBiaWdhcnJheTJfZGltID1cbiAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgfCAwIC0+IHJldHVybiAoMCwgMClcbiAgfCBtYXhfdG90YWxfc2l6ZSAtPlxuICAgIGxldCViaW5kIGEgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZV0sIHdlaWdodGVkIGxvdyB0byBnaXZlIHRoZSBvdGhlclxuICAgICAgICAgZGltZW5zaW9uIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgY29tcGFyYXRpdmVseSBoaWdoICopXG4gICAgICBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgbWF4X3RvdGFsX3NpemVcbiAgICBpblxuICAgIGxldCViaW5kIGIgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZSAvIGFdLCB3ZWlnaHRlZCBoaWdoIHRvIHJlYWNoIGNsb3NlIHRvXG4gICAgICAgICBbbWF4X3RvdGFsX3NpemVdIG1vc3Qgb2YgdGhlIHRpbWUgKilcbiAgICAgIGxldCBtYXhfYiA9IG1heF90b3RhbF9zaXplIC8gYSBpblxuICAgICAgbGV0JW1hcCBiX3dlaWdodGVkX2xvdyA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCBtYXhfYiBpblxuICAgICAgbWF4X2IgLSBiX3dlaWdodGVkX2xvd1xuICAgIGluXG4gICAgKCogYXZvaWQgYW55IHNrZXcgb2YgYSB2cyBiIGJ5IHJhbmRvbWx5IHN3YXBwaW5nICopXG4gICAgaWYlbWFwIGJvb2wgdGhlbiBhLCBiIGVsc2UgYiwgYVxuOztcblxubGV0IGJpZ2FycmF5MiB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JWJpbmQgZGltMSwgZGltMiA9IGJpZ2FycmF5Ml9kaW0gaW5cbiAgbGV0JW1hcCBlbHRzID0gbGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTEgKGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0yIHQpIGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdF9tYXAgfmY6QXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gaSBqIC0+XG4gICAgZWx0cy4oaSAtIG9mZnNldCkuKGogLSBvZmZzZXQpKVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBEZWJ1ZyA9IHN0cnVjdFxuICBsZXQgY292ZXJhZ2VcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgQ21wIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHNhbXBsZVxuICAgID1cbiAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICBzYW1wbGVcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBDbXApKVxuICAgICAgfmY6KGZ1biBjb3VudHMgdmFsdWUgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBjb3VudHMgdmFsdWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2ICsgMSkpXG4gIDs7XG5cbiAgbGV0IG1vbml0b3IgdCB+ZiA9XG4gICAgbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgZiB2YWx1ZTtcbiAgICAgIHZhbHVlKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjEgKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYXRvbWljIDogXyB0XG4gIHZhbCBjcmVhdGUgOiAoJ2EgLT4gJ2EgU2VxdWVuY2UudCkgLT4gJ2EgdFxuICB2YWwgc2hyaW5rIDogJ2EgdCAtPiAnYSAtPiAnYSBTZXF1ZW5jZS50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGxldCBhdG9taWMgXyA9IFNlcXVlbmNlLmVtcHR5XG4gIGxldCBjcmVhdGUgPSBGbi5pZFxuICBsZXQgc2hyaW5rID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG1hcCB0IH5mIH5mX2ludmVyc2UgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm1hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG5sZXQgZmlsdGVyIHQgfmYgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlciB+ZiAoc2hyaW5rIHQgeCkpXG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgfmZfaW52ZXJzZSA9XG4gIGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UuZmlsdGVyX21hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG47O1xuXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm9mX2xhenkgKGxhenkgKHNocmluayAoZm9yY2UgbGF6eV90KSB4KSkpXG5cbmxldCBmaXhlZF9wb2ludCBvZl9zaHJpbmtlciA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAob2Zfc2hyaW5rZXIgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgb2ZfbGF6eSBsYXp5X3Rcbjs7XG5cbmxldCBib3RoIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gKGZzdCwgc25kKSAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICBbIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6KGZ1biBmc3QgLT4gZnN0LCBzbmQpXG4gICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6KGZ1biBzbmQgLT4gZnN0LCBzbmQpXG4gICAgICBdKVxuOztcblxubGV0IHVuaXQgPSBhdG9taWNcbmxldCBib29sID0gYXRvbWljXG5sZXQgY2hhciA9IGF0b21pY1xubGV0IGludCA9IGF0b21pY1xubGV0IGludDMyID0gYXRvbWljXG5sZXQgaW50NjMgPSBhdG9taWNcbmxldCBpbnQ2NCA9IGF0b21pY1xubGV0IG5hdGl2ZWludCA9IGF0b21pY1xubGV0IGZsb2F0ID0gYXRvbWljXG5cbmxldCBiaWdhcnJheTEgc3JjID1cbiAgbGV0IGRpbSA9IEJpZ2FycmF5LkFycmF5MS5kaW0gc3JjIGluXG4gIG1hdGNoIGRpbSB3aXRoXG4gIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICB8IF8gLT5cbiAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5MS5raW5kIHNyYyBpblxuICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTEubGF5b3V0IHNyYyBpblxuICAgIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gICAgU2VxdWVuY2UuaW5pdCBkaW0gfmY6KGZ1biB0b19za2lwIC0+XG4gICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmluaXQga2luZCBsYXlvdXQgKGRpbSAtIDEpIH5mOihmdW4gaSAtPlxuICAgICAgICBzcmMue2lmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxfSkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0MzJfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0NjRfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxuXG5sZXQgYmlnYXJyYXkyID1cbiAgbGV0IG1vZHVsZSBEaW1zID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZGltMSA6IGludFxuICAgICAgOyBkaW0yIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSBhID0gQmlnYXJyYXkuQXJyYXkyLnsgZGltMSA9IGRpbTEgYTsgZGltMiA9IGRpbTIgYSB9XG4gIGVuZFxuICBpblxuICBsZXQgc2hyaW5rIGZpZWxkIHNyYyA9XG4gICAgbGV0IGRpbXMgPSBEaW1zLmNyZWF0ZSBzcmMgaW5cbiAgICBtYXRjaCBGaWVsZC5nZXQgZmllbGQgZGltcyB3aXRoXG4gICAgfCAwIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBfIC0+XG4gICAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5Mi5raW5kIHNyYyBpblxuICAgICAgbGV0IGxheW91dCA9IEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgc3JjIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgZGltcyB+ZjpJbnQucHJlZCBpblxuICAgICAgU2VxdWVuY2UuaW5pdCAoRmllbGQuZ2V0IGZpZWxkIGRpbXMpIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgICAgbGV0IHNraXAgaSA9IGlmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxIGluXG4gICAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gZGltMSBkaW0yIC0+XG4gICAgICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgeyBkaW0xOyBkaW0yIH0gfmY6c2tpcCBpblxuICAgICAgICAgIHNyYy57ZGltMSwgZGltMn0pKVxuICBpblxuICBmdW4gc3JjIC0+XG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMSBzcmM7IHNocmluayBEaW1zLkZpZWxkcy5kaW0yIHNyYyBdXG47O1xuXG5sZXQgZmxvYXQzMl9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5sZXQgZmxvYXQ2NF9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5cbmxldCBvcHRpb24gdmFsdWVfdCA9XG4gIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAoU2VxdWVuY2Uuc2luZ2xldG9uIE5vbmUpXG4gICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6T3B0aW9uLnJldHVybiAoc2hyaW5rIHZhbHVlX3QgdmFsdWUpKSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBsaXN0X3QgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIHRhaWxcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGVsdF90IGhlYWQpIH5mOihmdW4gaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBsaXN0X3QgdGFpbCkgfmY6KGZ1biB0YWlsIC0+IGhlYWQgOjogdGFpbClcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBzdHJpbmcgPSBtYXAgKGxpc3QgY2hhcikgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdCB+Zl9pbnZlcnNlOlN0cmluZy50b19saXN0XG5sZXQgYnl0ZXMgPSBtYXAgc3RyaW5nIH5mOkJ5dGVzLm9mX3N0cmluZyB+Zl9pbnZlcnNlOkJ5dGVzLnRvX3N0cmluZ1xubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdCB+Zl9pbnZlcnNlOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IG1hcCB0IH5mOlJlZi5jcmVhdGUgfmZfaW52ZXJzZTpSZWYuKCAhIClcbmxldCBsYXp5X3QgdCA9IG1hcCB0IH5mOkxhenkuZnJvbV92YWwgfmZfaW52ZXJzZTpMYXp5LmZvcmNlXG5cbmxldCBzZXhwID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzaHJpbmtlciAtPlxuICAgIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAgICAgbGV0IHNocmlua19saXN0ID1cbiAgICAgICAgICBzaHJpbmsgKGxpc3Qgc2hyaW5rZXIpIGwgfD4gU2VxdWVuY2UubWFwIH5mOihmdW4gbCAtPiBTZXhwLkxpc3QgbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNocmlua190cmVlID0gU2VxdWVuY2Uub2ZfbGlzdCBsIGluXG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rX2xpc3Q7IHNocmlua190cmVlIF0pKVxuOztcblxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIGVpdGhlciAtPlxuICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBmc3QgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgZnN0X3QgZnN0KSB+ZjpFaXRoZXIuZmlyc3RcbiAgICB8IFNlY29uZCBzbmQgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgc25kX3Qgc25kKSB+ZjpFaXRoZXIuc2Vjb25kKVxuOztcblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgbWFwXG4gICAgKGVpdGhlciBva190IGVycl90KVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBvayAtPiBPayBva1xuICAgICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbiAgICB+Zl9pbnZlcnNlOihmdW5jdGlvblxuICAgICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgICAgfCBFcnJvciBlcnIgLT4gU2Vjb25kIGVycilcbjs7XG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgYWxpc3QgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2FsaXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9rZXlzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBhbGlzdCkgfmY6KGZ1biAoaywgXykgLT5cbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrKVxuICAgIGluXG4gICAgbGV0IHNocmlua19rZXlzID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIGxldCB0cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrZXkgaW5cbiAgICAgICAgICAgU2VxdWVuY2UuZmlsdGVyX21hcCAoc2hyaW5rIGtleV90IGtleSkgfmY6KGZ1biBzbWFsbGVyX2tleSAtPlxuICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB+Y29tcGFyYXRvciB0cmVlIH5rZXk6c21hbGxlcl9rZXkgfmRhdGFcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBgT2sgdHJlZSAtPiBTb21lIHRyZWVcbiAgICAgICAgICAgICB8IGBEdXBsaWNhdGUgLT4gTm9uZSkpKVxuICAgIGluXG4gICAgbGV0IHNocmlua19kYXRhID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGRhdGFfdCBkYXRhKSB+ZjooZnVuIHNtYWxsZXJfZGF0YSAtPlxuICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuc2V0IH5jb21wYXJhdG9yIHRyZWUgfmtleSB+ZGF0YTpzbWFsbGVyX2RhdGEpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9rZXlzOyBzaHJpbmtfa2V5czsgc2hyaW5rX2RhdGEgXSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90ID1cbiAgY3JlYXRlIChmdW4gdHJlZSAtPlxuICAgIGxldCBsaXN0ID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9lbHRzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBsaXN0KSB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdClcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgZWx0IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBlbHRfdCBlbHQpIH5mOihmdW4gc21hbGxlcl9lbHQgLT5cbiAgICAgICAgICAgICBtYXRjaCBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLm1lbSB+Y29tcGFyYXRvciB0cmVlIHNtYWxsZXJfZWx0IHdpdGhcbiAgICAgICAgICAgICB8IHRydWUgLT4gTm9uZVxuICAgICAgICAgICAgIHwgZmFsc2UgLT4gU29tZSAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgdHJlZSB+Y29tcGFyYXRvciBzbWFsbGVyX2VsdCkpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9lbHRzOyBzaHJpbmtfZWx0cyBdKVxuOztcblxubGV0IG1hcF90IGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIG1hcF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBtYXBfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAobWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QpXG4gICAgICAgIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IG1hcF90KVxuOztcblxubGV0IHNldF90IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gc2V0X3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IFNldC5jb21wYXJhdG9yIHNldF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90KVxuICAgICAgICB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBzZXRfdClcbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFRlc3RfaW50ZlxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBTZWVkID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9uZGV0ZXJtaW5pc3RpY1xuICAgICAgfCBEZXRlcm1pbmlzdGljIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIG1vZHVsZSBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgc2VxdWVuY2UgPVxuICAgICAgbGV0IHByZWZpeCwgc3VmZml4ID0gU2VxdWVuY2Uuc3BsaXRfbiBzZXF1ZW5jZSAxMDAgaW5cbiAgICAgIGxldCBwcmVmaXggPSBMaXN0Lm1hcCBwcmVmaXggfmY6c2V4cF9vZl9lbHQgaW5cbiAgICAgIGxldCBzdWZmaXggPVxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5pc19lbXB0eSBzdWZmaXggd2l0aFxuICAgICAgICB8IHRydWUgLT4gW11cbiAgICAgICAgfCBmYWxzZSAtPiBbIFslbWVzc2FnZSBcIi4uLlwiXSBdXG4gICAgICBpblxuICAgICAgU2V4cC5MaXN0IChwcmVmaXggQCBzdWZmaXgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHNlZWQgOiBTZWVkLnRcbiAgICA7IHRlc3RfY291bnQgOiBpbnRcbiAgICA7IHNocmlua19jb3VudCA6IGludFxuICAgIDsgc2l6ZXMgOiBpbnQgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZyA6IENvbmZpZy50ID1cbiAgeyBzZWVkID0gRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuICA7IHRlc3RfY291bnQgPVxuICAgICAgKCogW1NwbGl0dGFibGVfcmFuZG9tXSBpcyBiYXNlZCBvbiA2NC1iaXQgYXJpdGhtZXRpYywgYW5kIHNvIHRlc3RzIHJ1biBtdWNoIHNsb3dlclxuICAgICAgICAgb24gMzItYml0IHRhcmdldHMuIFdlIHJ1biBhbiBvcmRlciBvZiBtYWduaXR1ZGUgZmV3ZXIgdHJpYWxzIHNvIGFzIG5vdCB0b1xuICAgICAgICAgY29tcGxldGVseSBib2cgZG93biBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbXMuICopXG4gICAgICAobWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICAgfCBXMzIgLT4gMV8wMDApXG4gIDsgc2hyaW5rX2NvdW50ID0gMTBfMDAwXG4gIDsgc2l6ZXMgPSBTZXF1ZW5jZS5jeWNsZV9saXN0X2V4biAoTGlzdC5yYW5nZSAwIH5zdGFydDpgaW5jbHVzaXZlIDMwIH5zdG9wOmBpbmNsdXNpdmUpXG4gIH1cbjs7XG5cbmxldCBsYXp5X25vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnID1cbiAgbWF0Y2ggQ29uZmlnLnNlZWQgY29uZmlnIHdpdGhcbiAgfCBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2UgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICB8IERldGVybWluaXN0aWMgc3RyaW5nIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoU3RyaW5nLmhhc2ggc3RyaW5nKVxuOztcblxubGV0IG9uZV9zaXplX3Blcl90ZXN0IH4oY29uZmlnIDogQ29uZmlnLnQpID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0Oihjb25maWcuc2l6ZXMsIDApIH5mOihmdW4gKHNpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMpIC0+XG4gICAgbWF0Y2ggbnVtYmVyX29mX3NpemVfdmFsdWVzID49IGNvbmZpZy50ZXN0X2NvdW50IHdpdGhcbiAgICB8IHRydWUgLT4gTm9uZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IHNpemVzIHdpdGhcbiAgICAgICB8IFNvbWUgKHNpemUsIHJlbWFpbmluZ19zaXplcykgLT5cbiAgICAgICAgIFNvbWUgKHNpemUsIChyZW1haW5pbmdfc2l6ZXMsIG51bWJlcl9vZl9zaXplX3ZhbHVlcyArIDEpKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogaW5zdWZmaWNpZW50IHNpemUgdmFsdWVzIGZvciB0ZXN0IGNvdW50XCJcbiAgICAgICAgICAgICAgIH50ZXN0X2NvdW50Oihjb25maWcudGVzdF9jb3VudCA6IGludClcbiAgICAgICAgICAgICAgIChudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgOiBpbnQpXSkpXG47O1xuXG5sZXQgc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yID1cbiAgbGV0IHJlYyBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3IgPVxuICAgIG1hdGNoIHNocmlua19jb3VudCB3aXRoXG4gICAgfCAwIC0+IGlucHV0LCBlcnJvclxuICAgIHwgXyAtPlxuICAgICAgbGV0IHNocmlua19jb3VudCA9IHNocmlua19jb3VudCAtIDEgaW5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IGFsdGVybmF0ZXMgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBpbnB1dCwgZXJyb3JcbiAgICAgICB8IFNvbWUgKGFsdGVybmF0ZSwgYWx0ZXJuYXRlcykgLT5cbiAgICAgICAgIChtYXRjaCBmIGFsdGVybmF0ZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3JcbiAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgYWx0ZXJuYXRlcyA9IFNocmlua2VyLnNocmluayBzaHJpbmtlciBhbHRlcm5hdGUgaW5cbiAgICAgICAgICAgIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBhbHRlcm5hdGUgZXJyb3IpKVxuICBpblxuICBsZXQgc2hyaW5rX2NvdW50ID0gQ29uZmlnLnNocmlua19jb3VudCBjb25maWcgaW5cbiAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgaW5wdXQgaW5cbiAgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG47O1xuXG5sZXQgaW5wdXRfc2VxdWVuY2UgfmNvbmZpZyB+ZXhhbXBsZXMgfmdlbmVyYXRvciA9XG4gIGxldCByYW5kb20gPSBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnIGluXG4gIFNlcXVlbmNlLmFwcGVuZFxuICAgIChTZXF1ZW5jZS5vZl9saXN0IGV4YW1wbGVzKVxuICAgIChvbmVfc2l6ZV9wZXJfdGVzdCB+Y29uZmlnXG4gICAgIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIHNpemUgLT4gR2VuZXJhdG9yLmdlbmVyYXRlIGdlbmVyYXRvciB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbmxldCB3aXRoX3NhbXBsZSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIGdlbmVyYXRvciA9XG4gIGxldCBzZXF1ZW5jZSA9IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgaW5cbiAgZiBzZXF1ZW5jZVxuOztcblxubGV0IHJlc3VsdCAodHlwZSBhKSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIG0gPVxuICBsZXQgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID0gbSBpblxuICB3aXRoX3NhbXBsZSBNLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb25maWcgfmV4YW1wbGVzIH5mOihmdW4gc2VxdWVuY2UgLT5cbiAgICBtYXRjaFxuICAgICAgU2VxdWVuY2UuZm9sZF9yZXN1bHQgc2VxdWVuY2UgfmluaXQ6KCkgfmY6KGZ1biAoKSBpbnB1dCAtPlxuICAgICAgICBtYXRjaCBmIGlucHV0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChpbnB1dCwgZXJyb3IpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgICAgbGV0IHNocmlua2VyID0gTS5xdWlja2NoZWNrX3Nocmlua2VyIGluXG4gICAgICBsZXQgaW5wdXQsIGVycm9yID0gc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yIGluXG4gICAgICBFcnJvciAoaW5wdXQsIGVycm9yKSlcbjs7XG5cbmxldCBydW4gKHR5cGUgYSkgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIG1hdGNoIHJlc3VsdCB+ZiA/Y29uZmlnID9leGFtcGxlcyAobW9kdWxlIE0pIHdpdGhcbiAgfCBPayAoKSAtPiBPayAoKVxuICB8IEVycm9yIChpbnB1dCwgZXJyb3IpIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLlRlc3QucnVuOiB0ZXN0IGZhaWxlZFwiIChpbnB1dCA6IE0udCkgKGVycm9yIDogRXJyb3IudCldXG47O1xuXG5sZXQgd2l0aF9zYW1wbGVfZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciA9XG4gIGxldCBmIHggPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGYgeCkgaW5cbiAgd2l0aF9zYW1wbGUgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgZ2VuZXJhdG9yIHw+IE9yX2Vycm9yLm9rX2V4blxuOztcblxubGV0IHJ1bl9leG4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgPVxuICBsZXQgZiB4ID1cbiAgICBPcl9lcnJvci50cnlfd2l0aCB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIHJ1biB+ZiA/Y29uZmlnID9leGFtcGxlcyB0ZXN0YWJsZSB8PiBPcl9lcnJvci5va19leG5cbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIE9ic2VydmVyMFxuXG5sZXQgdW5tYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSB0IChmIHgpIH5zaXplIH5oYXNoKVxubGV0IG9mX2hhc2hfZm9sZCBmID0gY3JlYXRlIChmdW4geCB+c2l6ZTpfIH5oYXNoIC0+IGYgaGFzaCB4KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmb3JjZSBsYXp5X3QpIHggfnNpemUgfmhhc2gpXG5cbmxldCBmaXhlZF9wb2ludCB3cmFwID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5ICh3cmFwIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgdW5pdCA9IG9wYXF1ZVxubGV0IGJvb2wgPSBvZl9oYXNoX2ZvbGQgQm9vbC5oYXNoX2ZvbGRfdFxubGV0IGNoYXIgPSBvZl9oYXNoX2ZvbGQgQ2hhci5oYXNoX2ZvbGRfdFxubGV0IGludCA9IG9mX2hhc2hfZm9sZCBJbnQuaGFzaF9mb2xkX3RcbmxldCBpbnQzMiA9IG9mX2hhc2hfZm9sZCBJbnQzMi5oYXNoX2ZvbGRfdFxubGV0IGludDYzID0gb2ZfaGFzaF9mb2xkIEludDYzLmhhc2hfZm9sZF90XG5sZXQgaW50NjQgPSBvZl9oYXNoX2ZvbGQgSW50NjQuaGFzaF9mb2xkX3RcbmxldCBuYXRpdmVpbnQgPSBvZl9oYXNoX2ZvbGQgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5sZXQgZmxvYXQgPSBvZl9oYXNoX2ZvbGQgRmxvYXQuaGFzaF9mb2xkX3RcbmxldCBzdHJpbmcgPSBvZl9oYXNoX2ZvbGQgU3RyaW5nLmhhc2hfZm9sZF90XG5sZXQgc2V4cCA9IG9mX2hhc2hfZm9sZCBTZXhwLmhhc2hfZm9sZF90XG5sZXQgYmlnc3RyaW5nID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2NoYXIpXG5sZXQgZmxvYXQzMl92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQzMl9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgYnl0ZXMgPSB1bm1hcCBzdHJpbmcgfmY6Qnl0ZXMudG9fc3RyaW5nXG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgfnNpemUgfmhhc2ggLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSlcbiAgICB8IFNlY29uZCBzbmQgLT4gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAyKSlcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIHVubWFwIChlaXRoZXIgb2tfdCBlcnJfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgaGFzaCA9IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoIGluXG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIHNuZF90IHNuZCB+c2l6ZSB+aGFzaCBpblxuICAgIGhhc2gpXG47O1xuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9wYXF1ZSB2YWx1ZV90KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRmlyc3QgKClcbiAgICB8IFNvbWUgdmFsdWUgLT4gU2Vjb25kIHZhbHVlKVxuOztcblxubGV0IGxpc3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBsaXN0IH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IHNpemVzID1cbiAgICAgIEdlbmVyYXRvci5zaXplcyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoICgpXG4gICAgICB8PiBHZW5lcmF0b3IuZ2VuZXJhdGUgfnNpemUgfnJhbmRvbVxuICAgIGluXG4gICAgTGlzdC5mb2xkMl9leG4gbGlzdCBzaXplcyB+aW5pdDooaGFzaF9mb2xkX2ludCBoYXNoIDApIH5mOihmdW4gaGFzaCBlbHQgc2l6ZSAtPlxuICAgICAgb2JzZXJ2ZSBlbHRfdCBlbHQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAxKSkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IHVubWFwIChsaXN0IHQpIH5mOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IHVubWFwIHQgfmY6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSB1bm1hcCB0IH5mOkxhenkuZm9yY2VcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biBmIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICAoKiBFbXBpcmljYWxseSwgZG91YmxpbmcgdGhlIHNpemUgd2hlbiBnZW5lcmF0aW5nIHRoZSBsaXN0IG9mIGlucHV0cyBnaXZlcyB1cyBtdWNoXG4gICAgICAgICBiZXR0ZXIgY292ZXJhZ2Ugb2YgdGhlIHNwYWNlIG9mIGZ1bmN0aW9ucy4gKilcbiAgICAgIEdlbmVyYXRvci5nZW5lcmF0ZSAoR2VuZXJhdG9yLnNpemVzICgpKSB+c2l6ZTooc2l6ZSAqIDIpIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZCBzaXplcyB+aW5pdDpoYXNoIH5mOihmdW4gaGFzaCBzaXplIC0+XG4gICAgICBsZXQgeCA9IEdlbmVyYXRvci5nZW5lcmF0ZSBkb20gfnNpemUgfnJhbmRvbSBpblxuICAgICAgb2JzZXJ2ZSBybmcgKGYgeCkgfnNpemUgfmhhc2gpKVxuOztcblxubGV0IG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobGlzdCAoYm90aCBrZXlfb2JzIGRhdGFfb2JzKSkgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdFxuOztcblxubGV0IHNldF90cmVlIGVsdF9vYnMgPSB1bm1hcCAobGlzdCBlbHRfb2JzKSB+ZjpTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2xpc3RcblxubGV0IG1hcF90IGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobWFwX3RyZWUga2V5X29icyBkYXRhX29icykgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuOztcblxubGV0IHNldF90IGVsdF9vYnMgPSB1bm1hcCAoc2V0X3RyZWUgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuIiwibW9kdWxlIEdlbmVyYXRvciA9IEdlbmVyYXRvclxubW9kdWxlIE9ic2VydmVyID0gT2JzZXJ2ZXJcbm1vZHVsZSBTaHJpbmtlciA9IFNocmlua2VyXG5tb2R1bGUgVGVzdCA9IFRlc3Rcbm1vZHVsZSBFeHBvcnQgPSBFeHBvcnRcbmluY2x1ZGUgRXhwb3J0XG5cbigqKi8qKilcblxuKCpfIFRoaXMgbW9kdWxlIGlzIGV4cG9zZWQgb25seSB0byBtYWtlIG9jYW1sZG9jIG91dHB1dCBtb3JlIHJlYWRhYmxlLiAqKVxubW9kdWxlIFdpdGhfYmFzaWNfdHlwZXMgPSBXaXRoX2Jhc2ljX3R5cGVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBCaWdhcnJheV9oZWxwZXJzID0gQmlnYXJyYXlfaGVscGVyc1xuZW5kXG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFVpX2VmZmVjdF9pbnRmXG5cbnR5cGUgJ2EgdCA9IC4uXG50eXBlICdhIHQgKz0gSWdub3JlIDogdW5pdCB0IHwgTWFueSA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuXG4oKiBXZSB1c2UgdGhpcyB0YWJsZSBmb3IgZGlzcGF0Y2hpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgaW4gYW4gZWZmaWNpZW50IHdheS4gICopXG50eXBlIGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZGVuXG5cbmxldCBoYW5kbGVycyA6IChoaWRkZW4gLT4gdW5pdCkgSGFzaHRibC5NKEludCkudCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KSB+c2l6ZTo4XG5cbm1vZHVsZSBEZWZpbmUgKEhhbmRsZXIgOiBIYW5kbGVyKSA6XG4gIFMgd2l0aCB0eXBlIGFjdGlvbiA6PSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogSGFuZGxlci5BY3Rpb24udCAtPiB1bml0IHRcblxuICBsZXQga2V5ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWU7XG4gICAgICAgIGNhbGxiYWNrICgpXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5tb2R1bGUgRGVmaW5lMSAoSGFuZGxlciA6IEhhbmRsZXIxKSA6XG4gIFMxIHdpdGggdHlwZSAnYSBhY3Rpb24gOj0gJ2EgSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6ICdhIEhhbmRsZXIuQWN0aW9uLnQgLT4gJ2EgdFxuXG4gIGxldCBrZXkgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBsZXQgY2FsbGVkID0gcmVmIGZhbHNlIGluXG4gICAgICAgIGxldCBjYWxsYmFjayBhID1cbiAgICAgICAgICBpZiAhY2FsbGVkXG4gICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIm9uX3Jlc3BvbnNlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyFcIlxuICAgICAgICAgIGVsc2UgY2FsbGVkIDo9IHRydWU7XG4gICAgICAgICAgY2FsbGJhY2sgYVxuICAgICAgICBpblxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZSB+b25fcmVzcG9uc2U6Y2FsbGJhY2tcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbmxldCBnZXRfa2V5IHQgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCB0KSlcblxubGV0IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYikpID1cbiAgSGFzaHRibC5maW5kX2V4biBoYW5kbGVycyAoZ2V0X2tleSB0KSAoVCAodCwgY2IpKVxuOztcblxubW9kdWxlIFByaW50X3MgPSBEZWZpbmUgKHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBTZXhwXG5cbiAgICBsZXQgaGFuZGxlIHMgPSBTdGRpby5wcmludF9zIHNcbiAgZW5kKVxuXG5sZXQgcHJpbnRfcyA9IFByaW50X3MuaW5qZWN0XG5cbigqIEVmZmVjdGZ1bCB0aGluZ3MgKilcbnR5cGUgJ2EgdCArPVxuICB8IFJldHVybiA6ICdhIC0+ICdhIHRcbiAgfCBMYXp5IDogJ2EgdCBMYXp5LnQgLT4gJ2EgdFxuICB8IEJpbmQgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2IgdFxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE1hcCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYlxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE5ldmVyIDogJ2IgdFxuICB8IEZ1biA6IChjYWxsYmFjazooJ2EgLT4gdW5pdCkgLT4gdW5pdCkgLT4gJ2EgdFxuXG5sZXQgcmV0dXJuIGEgPSBSZXR1cm4gYVxubGV0IGJpbmQgKHR5cGUgYSkgKHQgOiBhIHQpIH5mID0gQmluZCB7IHQ7IGYgfVxubGV0IG1hcCAodHlwZSBhIGIpICh0IDogYSB0KSB+ZiA6IGIgdCA9IE1hcCB7IHQ7IGYgfVxubGV0IG5ldmVyID0gTmV2ZXJcbmxldCBvZl9mdW4gfmYgPSBGdW4gZlxubGV0IGxhenlfIGEgPSBMYXp5IGFcblxuaW5jbHVkZSBCYXNlLk1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IHJlYyBldmFsIDogdHlwZSBhLiBhIHQgLT4gY2FsbGJhY2s6KGEgLT4gdW5pdCkgLT4gdW5pdCA9XG4gIGZ1biB0IH5jYWxsYmFjayAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBGdW4gZiAtPiBmIH5jYWxsYmFja1xuICB8IElnbm9yZSAtPiBjYWxsYmFjayAoKVxuICB8IFJldHVybiBhIC0+IGNhbGxiYWNrIGFcbiAgfCBMYXp5IChsYXp5IHQpIC0+IGV2YWwgdCB+Y2FsbGJhY2tcbiAgfCBNYW55IGwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZXZhbCB+Y2FsbGJhY2s6aWdub3JlKTtcbiAgICBjYWxsYmFjayAoKVxuICB8IEJpbmQgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gZXZhbCAoZiBhKSB+Y2FsbGJhY2spXG4gIHwgTWFwIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGNhbGxiYWNrIChmIGEpKVxuICB8IE5ldmVyIC0+ICgpXG4gIHwgdCAtPiBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2FsbGJhY2spKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlID0gZXZhbCB+Y2FsbGJhY2s6aWdub3JlXG5cbiAgdHlwZSBoaWRlID0gaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRlXG5cbiAgbGV0IGhhbmRsZXJzID0gaGFuZGxlcnNcbiAgbGV0IG9mX2Z1biA9IG9mX2Z1blxuZW5kXG5cbm1vZHVsZSBBZHZhbmNlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3luY19mdW5fYXJnID0gc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyKSAtPiAnciB0XG4gICAgZW5kXG5cbiAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IG9uX3Jlc3BvbnNlIChmIGEpXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW5jX2Z1biA9IERlZmluZTEgKFN5bmNfZnVuX2FyZylcblxuICBsZXQgb2Zfc3luY19mdW4gZiBhID0gU3luY19mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBDYWxsYmFjayA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9XG4gICAgICAgIHsgcmVxdWVzdCA6ICdhXG4gICAgICAgIDsgb25fcmVzcG9uc2UgOiAnYiAtPiB1bml0IHRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2UgPSB7IHJlcXVlc3Q7IG9uX3Jlc3BvbnNlIH1cbiAgICAgIGxldCByZXF1ZXN0IHsgcmVxdWVzdDsgXyB9ID0gcmVxdWVzdFxuICAgICAgbGV0IHJlc3BvbmRfdG8geyBvbl9yZXNwb25zZTsgXyB9IHJlc3BvbnNlID0gb25fcmVzcG9uc2UgcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIGxldCBtYWtlIDogcmVxdWVzdDonYSAtPiBldmFsdWF0b3I6KCgnYSwgJ2IpIENhbGxiYWNrLnQgLT4gdW5pdCB0KSAtPiAnYiB0ID1cbiAgICAgIGZ1biB+cmVxdWVzdCB+ZXZhbHVhdG9yIC0+XG4gICAgICBFeHBlcnQub2ZfZnVuIH5mOihmdW4gfmNhbGxiYWNrIC0+XG4gICAgICAgIGxldCBjYWxsYmFjayA9XG4gICAgICAgICAgQ2FsbGJhY2subWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2U6KGZ1biByZXNwb25zZSAtPlxuICAgICAgICAgICAgY2FsbGJhY2sgcmVzcG9uc2U7XG4gICAgICAgICAgICBJZ25vcmUpXG4gICAgICAgIGluXG4gICAgICAgIEV4cGVydC5oYW5kbGUgKGV2YWx1YXRvciBjYWxsYmFjaykpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFN2YXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2Egc3RhdGUgPVxuICAgICAgICB8IEVtcHR5IG9mIHsgbXV0YWJsZSBoYW5kbGVycyA6ICgnYSAtPiB1bml0KSBsaXN0IH1cbiAgICAgICAgfCBGdWxsIG9mICdhXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHN0YXRlIHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIChFbXB0eSB7IGhhbmRsZXJzID0gW10gfSlcblxuICAgICAgbGV0IHVwb24gdCBoYW5kbGVyID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IHQgLT4gdC5oYW5kbGVycyA8LSBoYW5kbGVyIDo6IHQuaGFuZGxlcnNcbiAgICAgICAgfCBGdWxsIHggLT4gaGFuZGxlciB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmlsbF9pZl9lbXB0eSB0IHggPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRnVsbCBfIC0+ICgpXG4gICAgICAgIHwgRW1wdHkgeyBoYW5kbGVycyB9IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGhhbmRsZXJzIH5mOihmdW4gaGFuZGxlciAtPiBoYW5kbGVyIHgpO1xuICAgICAgICAgIHQgOj0gRnVsbCB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGVlayB0ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IF8gLT4gTm9uZVxuICAgICAgICB8IEZ1bGwgeCAtPiBTb21lIHhcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3Zhcl9mdW5fYXJnID0gc3RydWN0XG4gICAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAnciBTdmFyLnQpIC0+ICdyIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IFN2YXIudXBvbiAoZiBhKSBvbl9yZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuID0gRGVmaW5lMSAoU3Zhcl9mdW5fYXJnKVxuXG4gICAgbGV0IG9mX3N2YXJfZnVuIGYgYSA9IFN2YXJfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgICBtb2R1bGUgUXVlcnlfcmVzcG9uc2VfdHJhY2tlciA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ3EsICdyKSBycGMgPVxuICAgICAgICB7IHF1ZXJ5IDogJ3FcbiAgICAgICAgOyByZXNwb25zZSA6ICdyIFN2YXIudFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxLCAncikgdCA9ICgncSwgJ3IpIHJwYyBsaXN0IHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIFtdXG5cbiAgICAgIGxldCBhZGRfcXVlcnkgdCBxdWVyeSA9XG4gICAgICAgIGxldCByZXNwb25zZSA9IFN2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIHQgOj0geyBxdWVyeTsgcmVzcG9uc2UgfSA6OiAhdDtcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWVyaWVzX3BlbmRpbmdfcmVzcG9uc2UgdCA9XG4gICAgICAgIExpc3QubWFwICF0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgPSBfIH0gLT4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICB0eXBlICdyIG1heWJlX3Jlc3BvbmQgPVxuICAgICAgICB8IE5vX3Jlc3BvbnNlX3lldFxuICAgICAgICB8IFJlc3BvbmQgb2YgJ3JcblxuICAgICAgbGV0IG1heWJlX3Jlc3BvbmQgdCB+ZiA9XG4gICAgICAgIHRcbiAgICAgICAgOj0gTGlzdC5maWx0ZXIgIXQgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSB9IC0+XG4gICAgICAgICAgbWF0Y2ggZiBxdWVyeSB3aXRoXG4gICAgICAgICAgfCBOb19yZXNwb25zZV95ZXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgUmVzcG9uZCByZXNwIC0+XG4gICAgICAgICAgICBTdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzcDtcbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIHFydCA9IG9mX3N2YXJfZnVuIChRdWVyeV9yZXNwb25zZV90cmFja2VyLmFkZF9xdWVyeSBxcnQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQWR2YW5jZWRcbiIsIm1vZHVsZSBEb21faHRtbCA9IHN0cnVjdFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG4gIG9wZW4gSnNfb2Zfb2NhbWwuSnNcblxuICAoKiBObyBqc19vZl9vY2FtbCBQUiB5ZXQuICopXG4gIGNsYXNzIHR5cGUgd2hlZWxFdmVudCA9IG9iamVjdFxuICAgIGluaGVyaXQgbW91c2VFdmVudFxuICAgIG1ldGhvZCBkZWx0YVggOiBmbG9hdCByZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbHRhWSA6IGZsb2F0IHJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVsdGFaIDogZmxvYXQgcmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZWx0YU1vZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgdmFsIHNpZ25lZCA6IGJvb2xcbiAgdmFsIG51bV9iaXRzIDogaW50XG4gIHZhbCBudW1fYnl0ZXMgOiBpbnRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTyA6IHNpZ1xuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBtb2R1bGUgV3JhcCA6IHNpZ1xuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgICBlbmRcbiAgZW5kXG5cbmVuZFxuXG5sZXQgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIEJhc2UucmFpc2VfcyBbJW1lc3NhZ2UgKG1vZF9uYW1lIF4gXCI6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZFwiKSB+XzoodG9fc3RyaW5nIHgpXVxuW0BAY29sZF1cbjs7XG5cbmxldCB0cnVuY191bnNpZ25lZCA6IHR5cGUgYSBiLiBjb252OihhIC0+IGIpIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpIC0+IG1hc2s6YSAtPiBhIC0+IGIgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB4IC0+IGNvbnYgKGxvZ2FuZCB4IG1hc2spXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl91bnNpZ25lZFxuICA6IHR5cGUgYSBiLlxuICAgIGNvbnY6KGEgLT4gYilcbiAgICAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKVxuICAgIC0+IG1hc2s6YVxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBiXG4gID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIGNvbnYgeSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgdHJ1bmNfc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdDppbnQgLT4gYSAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCAtPiBzaGlmdF9yaWdodCAoc2hpZnRfbGVmdCB4IHNoaWZ0KSBzaGlmdFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnQ6aW50XG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4geSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbjs7XG5cbmxldCBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgaWYgZ3JlYXRlcl9lcXVhbCB4IHplcm8gdGhlbiB4IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9XG4gIHJhaXNlIChTZXhwbGliMC5TZXhwX2NvbnYuT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcbjs7XG5cbm1vZHVsZSBSZXByMzIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuU3lzLkltbWVkaWF0ZTY0Lk1ha2UgKEJhc2UuSW50KSAoQmFzZS5JbnQzMilcblxuICBsZXQgdG9faW50MzIgKHggOiB0KSA6IEJhc2UuSW50MzIudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiB4XG4gIDs7XG5cbiAgKCogc2lnbi1leHRlbmRpbmcgY29udmVyc2lvbiB0byBpbnQ2NCAqKVxuICBsZXQgdG9faW50NjQgKHggOiB0KSA6IEJhc2UuSW50NjQudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludDMyIHhcbiAgOztcbmVuZFxuXG4oKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0eXBlcyAqKVxudHlwZSBpbnQ4ID0gaW50XG50eXBlIHVpbnQ4ID0gaW50XG50eXBlIGludDE2ID0gaW50XG50eXBlIHVpbnQxNiA9IGludFxudHlwZSBpbnQzMiA9IFJlcHIzMi50XG50eXBlIHVpbnQzMiA9IFJlcHIzMi50XG50eXBlIGludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIHVpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSBpbnQ2NCA9IEJhc2UuSW50NjQudFxudHlwZSB1aW50NjQgPSBCYXNlLkludDY0LnRcblxubW9kdWxlIEludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMTI4XG4gIGxldCBtYXhfdmFsdWUgPSAxMjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDI1NVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0zMjc2OFxuICBsZXQgbWF4X3ZhbHVlID0gMzI3NjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSA2NTUzNVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYWNrZW5kMzJfUyA9IHNpZ1xuICBtb2R1bGUgU2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMiA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzIgOiB0IC0+IEJhc2UuSW50MzIudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQ4IDogaW50OCAtPiB0XG4gICAgdmFsIG9mX2ludDE2IDogaW50MTYgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M190cnVuYyA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfZXhuIDogaW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDMyX3dyYXAgOiB1aW50MzIgLT4gdFxuICAgIHZhbCBvZl91aW50MzJfZXhuIDogdWludDMyIC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFVuc2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl90cnVuYyA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfZXhuIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl90cnVuYyA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfZXhuIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF90cnVuYyA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfZXhuIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQ2NCA6IHQgLT4gQmFzZS5JbnQ2NC50XG4gICAgdmFsIG9mX2Jhc2VfaW50X2V4biA6IEJhc2UuSW50LnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludF9leG4gOiB0IC0+IEJhc2UuSW50LnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDggOiB1aW50OCAtPiB0XG4gICAgdmFsIG9mX3VpbnQxNiA6IHVpbnQxNiAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M190cnVuYyA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M19leG4gOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfdHJ1bmMgOiB1aW50NjQgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfZXhuIDogdWludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2ludDMyX3dyYXAgOiBpbnQzMiAtPiB0XG4gICAgdmFsIG9mX2ludDMyX2V4biA6IGludDMyIC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJhY2tlbmQzMiA6IHNpZ1xuICB2YWwgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICAgICAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgICAgIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0gdHJ1bmMgeFxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4biB4XG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgNDI5NDk2NzI5NUxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gICAgICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgICAgIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgICAgIGxldCBtYXNrID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgMHhGRkZGRkZGRkxcbiAgICAgIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gICAgICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICAgICAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBleG42NCB4ID1cbiAgICAgICAgZXhuX3Vuc2lnbmVkXG4gICAgICAgICAgfmNvbnZcbiAgICAgICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICAgICAgfm1hc2s6bWFzazY0XG4gICAgICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgICAgICB+bW9kX25hbWVcbiAgICAgICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICAgICAgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9XG4gICAgICAgIEJhc2UuSW50NjQudG9faW50X3RydW5jIChsb2dhbmQ2NCAoQmFzZS5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrNjQpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0gQmFzZS5JbnQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50LiggPD0gKSB4IChCYXNlLkludC5vZl9pbnQ2NF90cnVuYyAyMTQ3NDgzNjQ3TClcbiAgICAgICAgdGhlbiBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludC50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9ICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50MzJcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQzMi50b19zdHJpbmdcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBCYXNlLkludDYzLnRvX2ludDMyX2V4biB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2NC50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggOiB0ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQzMi4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQzMi4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludDMyLiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50MzIuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50MzIuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBCYXNlLkludDMyLiggLyApXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50MzIudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgY29tcGFyZSB4IHkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfY29tcGFyZSB4IHkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gLTFsXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50MzIub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMEwgJiYgQmFzZS5JbnQ2NC4oIDw9ICkgeCA0Mjk0OTY3Mjk1TFxuICAgICAgICB0aGVuIEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQzMi50b19pbnQ2NCB4KSAweEZGRkZGRkZGTFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludF9leG4geCA9XG4gICAgICAgIEJhc2UuSW50MzIub2ZfaW50X2V4biB4XG4gICAgICAgIHw+IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgICB8PiBCYXNlLkludDMyLnRvX2ludF9leG5cbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJWx1XCIgeClcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJWx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgICAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICAgICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgICAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICAgICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfZGl2XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpID1cbiAgICBtYXRjaCBSZXByMzIucmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBJIDogQmFja2VuZDMyX1MpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgTiA6IEJhY2tlbmQzMl9TKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlNpZ25lZFxuZW5kXG5cbm1vZHVsZSBVaW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5VbnNpZ25lZFxuZW5kXG5cbm1vZHVsZSBJbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAaW1tZWRpYXRlNjRdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjNcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDYzLm9mX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDYzLiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDYzLiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjMuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDYzLiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2My4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDYzLiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjMuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICAoKiB4IGFuZCB5IGFyZSBzaWduLWV4dGVuZGVkLCB3aGljaCBwcmVzZXJ2ZXMgdGhlIGhpZ2ggYml0ICopXG4gICAgU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmUgKEJhc2UuSW50NjMudG9faW50NjQgeCkgKEJhc2UuSW50NjMudG9faW50NjQgeSlcbiAgOztcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2M1wiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyAoVWludDMyLnRvX2Jhc2VfaW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4gKHggOiB1aW50NjQpIDogdCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgKHRvX2Jhc2VfaW50NjQgeCkpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBvZl9iYXNlX2ludDY0X2V4biB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcblxuICAgICAgbGV0ICggLyApIHggeSA9XG4gICAgICAgIG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjQuKCAvICkgKHRvX2Jhc2VfaW50NjQgeCkgKHRvX2Jhc2VfaW50NjQgeSkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDY0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2NFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2NFxuICBsZXQgemVybyA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2NC5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjQubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDY0XG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjRcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjMgeCA9IEJhc2UuSW50NjMudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjRfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2NC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2NC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDY0LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2NC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2NC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDY0LiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50NjRcbiAgbGV0IGNvbXBhcmUgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfY29tcGFyZVxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gLTFMXG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDY0XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCBleG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyIHggPSBVaW50MzIudG9fYmFzZV9pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2MyAoeCA6IHVpbnQ2MykgOiBpbnQ2NCA9XG4gICAgQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAweDdGRkZGRkZGRkZGRkZGRkZMXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgeClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9kaXZcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuICB2YWwgZ2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuICB2YWwgZ2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcbiAgdmFsIGdldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcbiAgdmFsIGdldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG4gIHZhbCBnZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG4gIHZhbCBnZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDggLT4gdW5pdFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDggLT4gdW5pdFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudFxuICB2YWwgZ2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnQgLT4gdW5pdFxuZW5kXG5cbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IFN0ZGxpYi5JbnQzMi50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogU3RkbGliLkludDY0LnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbm1vZHVsZSBNYWtlX2dldCAoRiA6IEdldF9mdW5jdGlvbnMpIDogR2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ4IHQgfnBvcyA9IEludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDggdCB+cG9zID0gVWludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4XG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV9zZXQgKEYgOiBTZXRfZnVuY3Rpb25zKSA6IFNldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50OCB0IH5wb3MgeCA9IEYuc2V0X3VpbnQ4IHQgcG9zIHhcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ4IHQgfnBvcyB4ID0gc2V0X3VpbnQ4IHQgfnBvcyAoVWludDgub2ZfaW50OF93cmFwIHgpXG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDE2X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X3VpbnQxNl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDE2X2xlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9sZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG4gIGxldCBzZXRfaW50MTZfYmUgdCB+cG9zIHggPSBzZXRfdWludDE2X2JlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MzJfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDMyX2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDMyX2xlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2xlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcbiAgbGV0IHNldF91aW50MzJfYmUgdCB+cG9zIHggPSBzZXRfaW50MzJfYmUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ2NF9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDY0X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ2NF9sZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9sZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG4gIGxldCBzZXRfdWludDY0X2JlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2JlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIEJ5dGVzMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQxNl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuICBleHRlcm5hbCBzZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuICBleHRlcm5hbCBzZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlcylcbiAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKEJ5dGVzMFVuc2FmZSlcbiAgICBpbmNsdWRlIE1ha2Vfc2V0IChCeXRlczBVbnNhZmUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdHJpbmcwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzApXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzBVbnNhZmUpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBCaWdzdHJpbmcwID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgKCBjaGFyXG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHRcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5jX2xheW91dCApXG4gICAgICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgoJ2EsICdiLCAnYykgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuICBleHRlcm5hbCBkaW0gOiAoKCdhLCAnYiwgJ2MpIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuZW5kXG5cbmluY2x1ZGUgQmlnc3RyaW5nMFxuXG5leHRlcm5hbCBhdXhfY3JlYXRlIDogbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzOmludCAtPiBzaXplOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfYWxsb2NcIlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIE9uZSBuZWVkcyB0byB1c2UgW0NhbWwuU3lzLndvcmRfc2l6ZV0gc28gdGhhdCBpdHMgdmFsdWUgaXMga25vd24gYXQgY29tcGlsZS10aW1lLiAqKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3RkbGliLlN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN0ZGxpYi5TeXMuYmlnX2VuZGlhblxubGV0IG5vdF9vbl8zMmJpdCA9IFN0ZGxpYi5TeXMud29yZF9zaXplID4gMzJcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24udmFsdWUgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5kZWZhdWx0OigtMSlcbiAgaW5cbiAgKCogVGhpcyBjaGVjayBpcyBpbXBvcnRhbnQgYmVjYXVzZSBbYXV4X2NyZWF0ZSB+c2l6ZTooLTEpXSByYWlzZXMgW091dF9vZl9tZW1vcnldLCB3aGljaFxuICAgICBjb3VsZCBiZSBjb25mdXNpbmcgZHVyaW5nIGRlYnVnZ2luZy4gKilcbiAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcImNyZWF0ZTogc2l6ZSA9ICVkIDwgMFwiIHNpemUpO1xuICBhdXhfY3JlYXRlIH5tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgfnNpemVcbjs7XG5cbmxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbmV4dGVybmFsIGlzX21tYXBwZWQgOiB0IC0+IGJvb2wgPSBcImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcIiBbQEBub2FsbG9jXVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB0LntpfSA8LSBmIGlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGNoZWNrX2FyZ3Nfc2xvdyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogcG9zIDwgMFwiKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogbGVuIDwgMFwiKTtcbiAgbGV0IGJzdHJfbGVuID0gbGVuZ3RoIGJzdHIgaW5cbiAgKCogQmUgY2FyZWZ1bCB3aXRoIG92ZXJmbG93ISAgV2UgY291bGQgaGF2ZSBib2dvbnMgbGlrZSBbcG9zID0gSW50Lm1heF92YWx1ZV0gb3IgW2xlbiA9XG4gICAgIEludC5tYXhfdmFsdWVdIHBhc3NlZCBieSB0aGUgdXNlci4gKilcbiAgaWYgYnN0cl9sZW4gLSBwb3MgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpZ3N0cmluZy4lczogbGVuZ3RoKGJzdHIpIDwgcG9zICsgbGVuXCIgbG9jKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBjaGVja19hcmdzIH5sb2MgfnBvcyB+bGVuIChic3RyIDogdCkgPVxuICBsZXQgb3BlbiBCb29sLk5vbl9zaG9ydF9jaXJjdWl0aW5nIGluXG4gIGxldCBic3RyX2xlbiA9IGxlbmd0aCBic3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBic3RyX2xlbiAtIHBvcyA8IGxlbiB0aGVuIGNoZWNrX2FyZ3Nfc2xvdyB+bG9jIH5wb3MgfmxlbiBic3RyXG47O1xuXG5sZXQgZ2V0X29wdF9sZW4gYnN0ciB+cG9zID0gZnVuY3Rpb25cbiAgfCBTb21lIGxlbiAtPiBsZW5cbiAgfCBOb25lIC0+IGxlbmd0aCBic3RyIC0gcG9zXG47O1xuXG4oKiBCbGl0dGluZyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6KHRbQGxvY2FsX29wdF0pXG4gIC0+IHNyY19wb3M6aW50XG4gIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaWdzdHJpbmdfYmxpdF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqIEV4cG9zaW5nIHRoZSBleHRlcm5hbCB2ZXJzaW9uIG9mIGdldC9zZXQgc3VwcG9ydHMgYmV0dGVyIGlubGluaW5nLiAqKVxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXNcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbmVuZFxuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubW9kdWxlIEZyb21fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQnl0ZXNfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0W0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQmlnc3RyaW5nX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJ5dGVzX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOihzdHJpbmdbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUb19ieXRlc1xuICBpbmNsdWRlIEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ3N0cmluZzApIChUb19ieXRlcylcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRnJvbV9zdHJpbmcuc3Vib1xubGV0IG9mX2J5dGVzID0gRnJvbV9ieXRlcy5zdWJvXG5sZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnN1Ym9cbmxldCB0b19ieXRlcyA9IFRvX2J5dGVzLnN1Ym9cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbmxldCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdCA9IGZ1bmN0aW9uXG4gIHwgQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyBhcyBzZXhwIC0+XG4gICAgU2V4cGxpYjAuU2V4cF9jb252Lm9mX3NleHBfZXJyb3IgXCJiaWdzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY29weSB0IDogdCA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxubGV0IGNvbmNhdCA9XG4gIGxldCBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICBsZXQgc3JjX3BvcyA9IDAgaW5cbiAgICBsZXQgZHN0X3BvcyA9ICFkc3RfcG9zX3JlZiBpblxuICAgIGJsaXQgfmRzdCB+ZHN0X3BvcyB+c3JjIH5zcmNfcG9zIH5sZW47XG4gICAgZHN0X3Bvc19yZWYgOj0gZHN0X3BvcyArIGxlblxuICBpblxuICBmdW4gP3NlcCBsaXN0IC0+XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBjcmVhdGUgMFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBsZXQgaGVhZF9sZW4gPSBsZW5ndGggaGVhZCBpblxuICAgICAgbGV0IHNlcF9sZW4gPSBPcHRpb24udmFsdWVfbWFwIHNlcCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQpIH5kZWZhdWx0OjAgaW5cbiAgICAgIGxldCB0YWlsX2NvdW50ID0gTGlzdC5sZW5ndGggdGFpbCBpblxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGhlYWRfbGVuXG4gICAgICAgICsgKHNlcF9sZW4gKiB0YWlsX2NvdW50KVxuICAgICAgICArIExpc3Quc3VtIChtb2R1bGUgSW50KSB0YWlsIH5mOihmdW4gdCAtPiBsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGRzdF9wb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGFwcGVuZCB+c3JjOmhlYWQgfmRzdCB+ZHN0X3Bvc19yZWY7XG4gICAgICBMaXN0Lml0ZXIgdGFpbCB+ZjooZnVuIHNyYyAtPlxuICAgICAgICAobWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHNlcCAtPiBhcHBlbmQgfnNyYzpzZXAgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgICBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICBhc3NlcnQgKCFkc3RfcG9zX3JlZiA9IGxlbik7XG4gICAgICBkc3Rcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1zZXQgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBjaGFyIC0+IHVuaXQgPSBcImJpZ3N0cmluZ19tZW1zZXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtc2V0IHQgfnBvcyB+bGVuIGMgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdCk7XG4gIHVuc2FmZV9tZW1zZXQgdCB+cG9zIH5sZW4gY1xuOztcblxuKCogQ29tcGFyaXNvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gdFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczIgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDIpO1xuICB1bnNhZmVfbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfYnl0ZXNcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiBCeXRlcy50XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvczpwb3MyXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJ5dGVzLmxlbmd0aCBieXRlcyk7XG4gIHVuc2FmZV9tZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlblxuOztcblxubGV0IGNvbXBhcmUgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IGxlbiA9IEludC5taW4gbGVuMSBsZW4yIGluXG4gICAgbWF0Y2ggdW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbiB3aXRoXG4gICAgfCAwIC0+IGlmIGxlbjEgPCBsZW4yIHRoZW4gLTEgZWxzZSBpZiBsZW4xID4gbGVuMiB0aGVuIDEgZWxzZSAwXG4gICAgfCBuIC0+IG4pXG47O1xuXG5leHRlcm5hbCBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbiAgOiAgSGFzaC5zdGF0ZVxuICAtPiB0XG4gIC0+IEhhc2guc3RhdGVcbiAgPSBcImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgX21ha2luZ19zdXJlX3RoZV9DX2JpbmRpbmdfdGFrZXNfYW5faW50ICh4IDogSGFzaC5zdGF0ZSkgPSAoeCA6PiBpbnQpXG5sZXQgaGFzaF9mb2xkX3QgPSBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbmxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcblxudHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubGV0IGVxdWFsIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIEludC5lcXVhbCBsZW4xIGxlbjIgJiYgSW50LmVxdWFsICh1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuOmxlbjEpIDApXG47O1xuXG4oKiBTZWFyY2ggKilcblxuZXh0ZXJuYWwgdW5zYWZlX2ZpbmQgOiB0IC0+IGNoYXIgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludCA9IFwiYmlnc3RyaW5nX2ZpbmRcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbW1lbVxuICA6ICBoYXlzdGFjazp0XG4gIC0+IG5lZWRsZTp0XG4gIC0+IGhheXN0YWNrX3BvczppbnRcbiAgLT4gaGF5c3RhY2tfbGVuOmludFxuICAtPiBuZWVkbGVfcG9zOmludFxuICAtPiBuZWVkbGVfbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGVcIiBcImJpZ3N0cmluZ19tZW1tZW1cIlxuW0BAbm9hbGxvY11cblxubGV0IGZpbmQgPyhwb3MgPSAwKSA/bGVuIGNociBic3RyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwiZmluZFwiIH5wb3MgfmxlbiBic3RyO1xuICBsZXQgcmVzID0gdW5zYWZlX2ZpbmQgYnN0ciBjaHIgfnBvcyB+bGVuIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbmxldCBtZW1tZW1cbiAgICAgIH5oYXlzdGFja1xuICAgICAgfm5lZWRsZVxuICAgICAgPyhoYXlzdGFja19wb3MgPSAwKVxuICAgICAgP2hheXN0YWNrX2xlblxuICAgICAgPyhuZWVkbGVfcG9zID0gMClcbiAgICAgID9uZWVkbGVfbGVuXG4gICAgICAoKVxuICA9XG4gIGxldCBoYXlzdGFja19sZW4gPSBnZXRfb3B0X2xlbiBoYXlzdGFjayB+cG9zOmhheXN0YWNrX3BvcyBoYXlzdGFja19sZW4gaW5cbiAgbGV0IG5lZWRsZV9sZW4gPSBnZXRfb3B0X2xlbiBuZWVkbGUgfnBvczpuZWVkbGVfcG9zIG5lZWRsZV9sZW4gaW5cbiAgbGV0IHJlcyA9XG4gICAgdW5zYWZlX21lbW1lbSB+aGF5c3RhY2sgfm5lZWRsZSB+aGF5c3RhY2tfcG9zIH5oYXlzdGFja19sZW4gfm5lZWRsZV9wb3Mgfm5lZWRsZV9sZW5cbiAgaW5cbiAgaWYgcmVzIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHJlc1xuOztcblxuKCogdmltOiBzZXQgZmlsZXR5cGU9b2NhbWwgOiAqKVxuXG4oKiBCaW5hcnktcGFja2luZyBsaWtlIGFjY2Vzc29ycyAqKVxuXG5leHRlcm5hbCBpbnQzMl9vZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50MzJfdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIGludDY0X29mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBpbnQ2NF90b19pbnQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogKGludDY0W0Bsb2NhbF0pIC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8xNiA6IHQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzMyIDogdCAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF82NCA6IHQgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMTYgOiAodFtAbG9jYWxfb3B0XSkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF8zMlxuICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgLT4gaW50XG4gIC0+IGludDMyXG4gIC0+IHVuaXRcbiAgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0XzY0IDogdCAtPiBpbnQgLT4gKGludDY0W0Bsb2NhbF0pIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGdldF8xNiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX2dldF8xNiB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDMyID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX2dldF8zMiB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDY0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX2dldF82NCB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfMTZfdHJ1bmMgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX3NldF8xNiB0IHBvcyB2XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50MzIpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9zZXRfMzIgdCBwb3MgdlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSAoKHYgOiBpbnQ2NCkgW0Bsb2NhbF0pIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgdlxuOztcblxubGV0IHNpZ25fZXh0ZW5kXzE2IHUgPSAodSBsc2wgKEludC5udW1fYml0cyAtIDE2KSkgYXNyIChJbnQubnVtX2JpdHMgLSAxNilcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAwMCB8fCB4ID4gMHg3RkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50OCB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MCB8fCB4ID4gMHg3RlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfIH5sb2M6XyAtPiAoKVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAtMSBsc2wgMzEgJiYgeCA8IDEgbHNsIDMxXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDBcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMCAmJiB4IDwgMSBsc2wgMzJcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50NjQgeCB+bG9jID1cbiAgaWYgeCA+PSAwXG4gIHRoZW4gKClcbiAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcykpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChnZXRfMTYgdCBwb3MpXG5sZXQgcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKGdldF8xNiB0IHBvcykpXG5cbmxldCB3cml0ZV9pbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV9pbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX3VpbnQxNiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV91aW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX3VpbnQxNiB0IH5wb3MgPSBnZXRfMTYgdCBwb3NcbmxldCByZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAoZ2V0XzE2IHQgcG9zKVxuXG5sZXQgd3JpdGVfdWludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfdWludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50ICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKSlcbmxldCB1bnNhZmVfcmVhZF9pbnQzMiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG5sZXQgcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50IChnZXRfMzIgdCBwb3MpXG5sZXQgcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAoZ2V0XzMyIHQgcG9zKSlcbmxldCByZWFkX2ludDMyIHQgfnBvcyA9IGdldF8zMiB0IHBvc1xubGV0IHJlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKGdldF8zMiB0IHBvcylcbmxldCB3cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyB4XG5sZXQgd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxuOztcblxubGV0IHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAodW5zYWZlX2dldF82NCB0IHBvcylcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnQgKHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcykpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID1cbiAgdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAoZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9IGludDY0X3RvX2ludCAoc3dhcDY0IChnZXRfNjQgdCBwb3MpKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0IHQgfnBvcyA9IGdldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0IChnZXRfNjQgdCBwb3MpXG5sZXQgd3JpdGVfaW50NjQgdCB+cG9zICh4IFtAbG9jYWxdKSA9IHNldF82NCB0IHBvcyB4XG5sZXQgd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgKHggW0Bsb2NhbF0pID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxubGV0IHdyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQxNiBlbHNlIHVuc2FmZV9yZWFkX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTZfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF91aW50MTYgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZcbjs7XG5cbmxldCBnZXRfaW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDE2IGVsc2UgcmVhZF9pbnQxNl9zd2FwXG5sZXQgZ2V0X2ludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNl9zd2FwIGVsc2UgcmVhZF9pbnQxNlxubGV0IGdldF91aW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX3VpbnQxNiBlbHNlIHJlYWRfdWludDE2X3N3YXBcbmxldCBnZXRfdWludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTZfc3dhcCBlbHNlIHJlYWRfdWludDE2XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2IGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MTZcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTYgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV91aW50MTZcbjs7XG5cbmxldCBzZXRfaW50MTZfYmVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfZXhuIGVsc2Ugd3JpdGVfaW50MTZfc3dhcF9leG5cbmxldCBzZXRfaW50MTZfbGVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQxNl9leG5cblxubGV0IHNldF91aW50MTZfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X2V4biBlbHNlIHdyaXRlX3VpbnQxNl9zd2FwX2V4blxuOztcblxubGV0IHNldF91aW50MTZfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfdWludDE2X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMlxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMiBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJcbjs7XG5cbmxldCBnZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzIgZWxzZSByZWFkX2ludDMyX3N3YXBcbmxldCBnZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfc3dhcCBlbHNlIHJlYWRfaW50MzJcbmxldCBzZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyIGVsc2Ugd3JpdGVfaW50MzJfc3dhcFxubGV0IHNldF9pbnQzMl90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfc3dhcCBlbHNlIHdyaXRlX2ludDMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50IGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9pbnRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50XG47O1xuXG5sZXQgZ2V0X2ludDMyX2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnQgZWxzZSByZWFkX2ludDMyX2ludF9zd2FwXG5sZXQgZ2V0X2ludDMyX2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnRfc3dhcCBlbHNlIHJlYWRfaW50MzJfaW50XG5cbmxldCBzZXRfaW50MzJfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X2V4biBlbHNlIHdyaXRlX2ludDMyX2ludF9zd2FwX2V4blxuOztcblxubGV0IHNldF9pbnQzMl9sZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfZXhuXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludFxuOztcblxubGV0IGdldF9pbnQ2NF9iZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50IGVsc2UgcmVhZF9pbnQ2NF9pbnRfc3dhcFxubGV0IGdldF9pbnQ2NF9sZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50X3N3YXAgZWxzZSByZWFkX2ludDY0X2ludFxubGV0IHNldF9pbnQ2NF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludCBlbHNlIHdyaXRlX2ludDY0X2ludF9zd2FwXG5sZXQgc2V0X2ludDY0X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfaW50X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NF9pbnRcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0IGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRcbjs7XG5cbm1vZHVsZSBMb2NhbCA9IHN0cnVjdFxuICBsZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAodW5zYWZlX3JlYWRfaW50NjQgdCB+cG9zKSlcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBfbG9jYWwgdCB+cG9zID1cbiAgICAgKEludDY0LiggKyApIDBMICh1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAocmVhZF9pbnQ2NCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAocmVhZF9pbnQ2NF9zd2FwIHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gICAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfbG9jYWwgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwX2xvY2FsXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gICAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsXG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9sb2NhbCBlbHNlIHJlYWRfaW50NjRfc3dhcF9sb2NhbFxuICBsZXQgZ2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X3N3YXBfbG9jYWwgZWxzZSByZWFkX2ludDY0X2xvY2FsXG5lbmRcblxubGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NCBlbHNlIHJlYWRfaW50NjRfc3dhcFxubGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwIGVsc2UgcmVhZF9pbnQ2NFxubGV0IHNldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjQgZWxzZSB3cml0ZV9pbnQ2NF9zd2FwXG5sZXQgc2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRcblxubGV0IGludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX2ludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxubGV0IHVpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF91aW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG4oKiBbUG9seV0gaXMgcmVxdWlyZWQgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB1bmJveGVkIFtpbnQ2NF0uICopXG5sZXRbQGlubGluZSBhbHdheXNdIGludDY0X3RvX2ludF9leG4gKG4gW0Bsb2NhbF0pID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gLTB4NDAwMF8wMDAwXzAwMDBfMDAwMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gLTB4MDAwMF8wMDAwXzQwMDBfMDAwMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQ2NF90b19pbnRfZXhuIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2JlID0gdW5zYWZlX3NldF9pbnQ2NF9iZVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2xlID0gdW5zYWZlX3NldF9pbnQ2NF9sZVxuXG5sZXQgc2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2JlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9iZSB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50NjRfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9sZV9leG5cIiBuO1xuICBzZXRfaW50NjRfbGUgdCB+cG9zIG5cbjs7XG5cbigqIFR5cGUgYW5ub3RhdGlvbnMgb24gdGhlIFt0XXMgYXJlIGltcG9ydGFudCBoZXJlOiBpbiBvcmRlciBmb3IgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlXG4gICBvcHRpbWl6ZWQgY29kZSwgaXQgbmVlZHMgdG8ga25vdyB0aGUgZnVsbHkgaW5zdGFudGlhdGVkIHR5cGUgb2YgdGhlIGJpZ2FycmF5LiBUaGlzIGlzXG4gICBiZWNhdXNlIHRoZSB0eXBlIG9mIHRoZSBiaWdhcnJheSBlbmNvZGVzIHRoZSBlbGVtZW50IGtpbmQgYW5kIHRoZSBsYXlvdXQgb2YgdGhlXG4gICBiaWdhcnJheS4gV2l0aG91dCB0aGUgYW5ub3RhdGlvbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgQyBjYWxsIHRvIHRoZSBnZW5lcmljIGFjY2Vzc1xuICAgZnVuY3Rpb25zLiAqKVxubGV0IHVuc2FmZV9zZXRfdWludDggKHQgOiB0KSB+cG9zIG4gPSBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG5cbmxldCB1bnNhZmVfc2V0X2ludDggKHQgOiB0KSB+cG9zIG4gPVxuICAoKiBJbiBhbGwgdGhlIHNldCBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgYXJlIHRoZXNlIHRlc3RzLCBpdCBsb29rcyBsaWtlIHRoZSB0ZXN0IGNvdWxkIGJlXG4gICAgIHJlbW92ZWQsIHNpbmNlIHRoZXkgYXJlIG9ubHkgY2hhbmdpbmcgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90XG4gICAgIHdyaXR0ZW4uICopXG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBzZXRfdWludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDhfZXhuXCIgbjtcbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgc2V0X2ludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfaW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF9pbnQ4X2V4blwiIG47XG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBnZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpXG5cbmxldCBnZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgbWFzazMyX24gPSBTdGRsaWIuTmF0aXZlaW50LihzdWIgKHNoaWZ0X2xlZnQgMW4gMzIpIDFuKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQzMl9vZl9pbnQzMl90IG4gPVxuICBpZiBub3Rfb25fMzJiaXRcbiAgdGhlblxuICAgICgqIHVzZSBDYW1sLk5hdGl2ZWludCB0byBlbnN1cmUgaW5saW5pbmcgZXZlbiB3aXRob3V0IHgtbGlicmFyeS1pbmxpbmluZyAqKVxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuKHRvX2ludCAobG9nYW5kIChvZl9pbnQzMiBuKSBtYXNrMzJfbikpXG4gIGVsc2UgaW50MzJfdG9faW50IG5cbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9sZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9sZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2JlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2JlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2xlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2JlIHQgfnBvcylcbjs7XG5cbmxldCBzZXRfdWludDMyX2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfbGVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfbGVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2JlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2JlX2V4biB0IH5wb3MgblxuOztcblxubGV0IGdldF91aW50MzJfbGUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2xlIHQgfnBvcylcbmxldCBnZXRfdWludDMyX2JlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9iZSB0IH5wb3MpXG5cbm1vZHVsZSBJbnRfcmVwciA9IHN0cnVjdFxuICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gZ2V0X3VpbnQ4IHQgfnBvc1xuICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCB4KVxuICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gZ2V0XzE2IHQgcG9zXG4gICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHNldF8xNl90cnVuYyB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IGdldF8zMiB0IHBvc1xuICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHNldF8zMiB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IGdldF82NCB0IHBvc1xuICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHNldF82NCB0IHBvcyB4XG4gIGVuZFxuXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gdW5zYWZlX2dldF91aW50OCB0IH5wb3NcbiAgICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IHVuc2FmZV9zZXRfdWludDggdCB+cG9zIHhcbiAgICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xuICAgICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2lnbl9leHRlbmRfMTYgPSBzaWduX2V4dGVuZF8xNlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBCbGl0XG5pbmNsdWRlIFRlc3RfYmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmxpdFxuXG4gIHR5cGUgJ2Egc3JjXG4gIHR5cGUgJ2EgZHN0XG5cbiAgKCogIHZhbCBibGl0ICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBibGl0byA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdG9cblxuICAoKiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIHN1YiA6ICgnYSBzcmMsICdhIGRzdCkgc3ViXG5cbiAgKCp2YWwgc3VibyAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1Ym8qKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl90ZXN0c19nZW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVxdWFsIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sXG5cbiAgICB2YWwgb2ZfYm9vbCA6IGJvb2wgLT4gYm9vbCB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgelxuXG4gIG1vZHVsZSBTcmMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiAoXyB0W0Bsb2NhbF0pIC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIERzdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IChfIHRbQGxvY2FsXSkgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICAgIHZhbCBvdmVybGFwcGluZ19zcmNfZHN0IDogWyBgRG9fbm90X2NoZWNrIHwgYENoZWNrIG9mICdhIFNyYy50IC0+ICdhIHQgXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW5cbiAgICAoRm9yX3Rlc3RzIDogRm9yX3Rlc3RzX2dlbilcbiAgICAoVGVzdGVkIDogU19nZW5cbiAgICAgd2l0aCB0eXBlICdhIHNyYyA6PSAnYSBGb3JfdGVzdHMuU3JjLnRcbiAgICAgd2l0aCB0eXBlICdhIGRzdCA6PSAnYSBGb3JfdGVzdHMuRHN0LnQpID1cbnN0cnVjdFxuICBvcGVuIFRlc3RlZFxuICBvcGVuIEZvcl90ZXN0c1xuXG4gIGxldCBpbml0IH5sZW4gfmNyZWF0ZSB+c2V0IH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCB0IGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHRcbiAgOztcblxuICBsZXQgZWx0MSA9IEVsdC5vZl9ib29sIHRydWVcbiAgbGV0IGVsdDIgPSBFbHQub2ZfYm9vbCBmYWxzZVxuICBsZXQgKCkgPSBhc3NlcnQgKG5vdCAoRWx0LmVxdWFsIGVsdDEgZWx0MikpXG4gIGxldCBzcmNfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDEgZWxzZSBlbHQyXG4gIGxldCBkc3RfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDIgZWxzZSBlbHQxXG5cbiAgKCogVGVzdCBbYmxpdF0uICopXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IG4gPSA0IGluXG4gICAgZm9yIHNyY19sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgIGZvciBkc3RfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICAgIGZvciBzcmNfcG9zID0gMCB0byBzcmNfbGVuZ3RoIGRvXG4gICAgICAgICAgZm9yIGRzdF9wb3MgPSAwIHRvIGRzdF9sZW5ndGggZG9cbiAgICAgICAgICAgIGZvciBzcmNfbGVuID0gMCB0byBtaW4gKHNyY19sZW5ndGggLSBzcmNfcG9zKSAoZHN0X2xlbmd0aCAtIGRzdF9wb3MpIGRvXG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBpc19pbl9yYW5nZSBpID0gaSA+PSBkc3RfcG9zICYmIGkgPCBkc3RfcG9zICsgc3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVjayBsZW5ndGggZ2V0IG5hbWUgc2VxdWVuY2UgfmV4cGVjdCA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHNlcXVlbmNlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEVsdC5lcXVhbCAoZ2V0IHNlcXVlbmNlIGkpIChleHBlY3QgaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJidWdcIiAobmFtZSA6IHN0cmluZykgKGkgOiBpbnQpXVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX3NyYyA9IGNoZWNrIFNyYy5sZW5ndGggU3JjLmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19kc3QgPSBjaGVjayBEc3QubGVuZ3RoIERzdC5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3JjID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpzcmNfbGVuZ3RoIH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKFNyYy5sZW5ndGggc3JjID0gc3JjX2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46ZHN0X2xlbmd0aCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChEc3QubGVuZ3RoIGRzdCA9IGRzdF9sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBpbml0X3NyYyAoKSA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gc3JjX2xlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgU3JjLnNldCBzcmMgaSAoc3JjX2JpdCBpKVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcImJsaXQgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19iaXQgKHNyY19wb3MgKyBpIC0gZHN0X3BvcykgZWxzZSBkc3RfYml0IGkpO1xuICAgICAgICAgICAgICAgIChtYXRjaCBEc3Qub3ZlcmxhcHBpbmdfc3JjX2RzdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYERvX25vdF9jaGVjayAtPiAoKVxuICAgICAgICAgICAgICAgICB8IGBDaGVjayBzcmNfdG9fZHN0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgZHN0X3BvcyArIHNyY19sZW4gPD0gc3JjX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3JjX3RvX2RzdCBzcmMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdCBvdmVybGFwcGluZ1wiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19iaXQgKGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfcG9zICsgaSAtIGRzdF9wb3MgZWxzZSBpKSkpKSk7XG4gICAgICAgICAgICAgICAgKCogQ2hlY2sgW3N1Yl0uICopXG4gICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9IHN1YiBzcmMgfnBvczpzcmNfcG9zIH5sZW46c3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcInN1YiBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcInN1YiBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT4gc3JjX2JpdCAoc3JjX3BvcyArIGkpKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIFwiYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfcG9zIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfcG9zIDogaW50KV1cbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgc3JjID0gaW5pdCB+bGVuOjQgfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXQgaW5cbiAgICBsZXQgZHN0ID0gaW5pdCB+bGVuOjggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXQgaW5cbiAgICBsZXQgYXNzZXJ0X3JhaXNlcyBmID0gYXNzZXJ0IChFeG4uZG9lc19yYWlzZSBmKSBpblxuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOigtMSkgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOigtMSkgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjUgfnNyY19sZW46MSB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46OCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjUgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjggKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QxXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seSlcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgICBsZXQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gICAgICAgIGxldCBvZl9ib29sID0gRm4uaWRcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0MV9nZW5lcmljXG4gICAgKEVsdCA6IEVsdDEpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIEVsdF90b19lbHQxIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IEVsdC50XG5cbiAgbGV0IGVxdWFsID0gRWx0LmVxdWFsXG4gIGxldCBvZl9ib29sID0gRWx0Lm9mX2Jvb2xcbmVuZFxuXG5tb2R1bGUgVGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogUyB3aXRoIHR5cGUgdCA6PSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU3JjXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdF9kaXN0aW5jdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKERzdCA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBTcmMudCB3aXRoIHR5cGUgZHN0IDo9IERzdC50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNyY1xuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBvcGVuIERzdFxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYERvX25vdF9jaGVja1xuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdCkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlX2Rpc3RpbmN0IChTcmMpIChEc3QpXG4gIGluY2x1ZGUgVGVzdF9kaXN0aW5jdCAoRWx0KSAoU3JjKSAoRHN0KSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpY19hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQxKSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDFfZ2VuZXJpYyAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmluYXJ5X3NlYXJjaGFibGVcbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmluYXJ5X3NlYXJjaGFibGVcblxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSBlbHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0ID0gc2lnXG4gIGluY2x1ZGUgU19nZW5cblxuICBtb2R1bGUgRm9yX3Rlc3QgOiBzaWdcbiAgICB2YWwgY29tcGFyZSA6IGJvb2wgZWx0IC0+IGJvb2wgZWx0IC0+IGludFxuICAgIHZhbCBzbWFsbCA6IGJvb2wgZWx0XG4gICAgdmFsIGJpZyA6IGJvb2wgZWx0XG4gICAgdmFsIG9mX2FycmF5IDogYm9vbCBlbHQgYXJyYXkgLT4gYm9vbCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlbiAoTSA6IEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQldGVzdF9tb2R1bGUgXCJ0ZXN0X2JpbmFyeV9zZWFyY2hhYmxlXCIgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBlbHRfY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBzID0gRm9yX3Rlc3Quc21hbGxcbiAgICAgIGxldCBiID0gRm9yX3Rlc3QuYmlnXG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSB0IGhvdyB2ID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgKEZvcl90ZXN0Lm9mX2FycmF5IHQpIGhvdyB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgKCA9ICkgPSBQb2x5LmVxdWFsXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMlxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gcyA9IE5vbmVcblxuICAgICAgbGV0IGNyZWF0ZV90ZXN0X2Nhc2UgKG51bV9zLCBudW1fYikgPVxuICAgICAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIGIgfmxlbjoobnVtX3MgKyBudW1fYikgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG51bV9zIC0gMSBkb1xuICAgICAgICAgIGFyci4oaSkgPC0gc1xuICAgICAgICBkb25lO1xuICAgICAgICBhcnJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbmx5X3NtYWxsID0gMTBfMDAwLCAwXG4gICAgICBsZXQgb25seV9iaWcgPSAwLCAxMF8wMDBcbiAgICAgIGxldCBib3RoID0gMjUzMSwgNDcxN1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCAoY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsKSB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPiB0cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2UgYm90aCBpblxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgdiAtPiB2ID0gMjUzMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSA9XG4gICAgICAgIEFycmF5LmluaXQgMTAwXzAwMCB+ZjooZnVuIGkgLT4gaWYgaSA+IDUwXzAwMCB0aGVuIGIgZWxzZSBzKVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdHMgYXJvdW5kIGEgZ2FwKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgYmVnaW5uaW5nIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBlbmQgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICAgIGZvciBsZW5ndGggPSAwIHRvIDUgZG9cbiAgICAgICAgICBmb3IgbnVtX3MgPSAwIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgbGV0IGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIH5mOihmdW4gaSAtPiBpZiBpIDwgbnVtX3MgdGhlbiBzIGVsc2UgYikgaW5cbiAgICAgICAgICAgIGZvciBwb3MgPSAtMSB0byBsZW5ndGggZG9cbiAgICAgICAgICAgICAgZm9yIGxlbiA9IC0xIHRvIGxlbmd0aCArIDEgZG9cbiAgICAgICAgICAgICAgICAoKnRyeSopXG4gICAgICAgICAgICAgICAgbGV0IHNob3VsZF9yYWlzZSA9XG4gICAgICAgICAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgICAgIH50b3RhbF9sZW5ndGg6bGVuZ3RoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+cG9zIH5sZW4gfmNvbXBhcmU6ZWx0X2NvbXBhcmUgYExhc3RfZXF1YWxfdG8gcylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIHNob3VsZF9yYWlzZSwgcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgICB8IHRydWUsIEVycm9yIF8gLT4gKClcbiAgICAgICAgICAgICAgICB8IHRydWUsIE9rIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byByYWlzZSBidXQgaXQgZGlkbid0XCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBFcnJvciBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gbm90IHJhaXNlLCBidXQgaXQgcmFpc2VkXCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBPayByZXN1bHQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2hlZCA9IG51bV9zIC0gMSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGNvcnJlY3RfcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc2VhcmNoZWQgPCBwb3NcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgbGVuID0gMFxuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBzZWFyY2hlZCA+PSBwb3MgKyBsZW5cbiAgICAgICAgICAgICAgICAgICAgdGhlbiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIFNvbWUgc2VhcmNoZWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBub3QgKGNvcnJlY3RfcmVzdWx0ID0gcmVzdWx0KSB0aGVuIGZhaWx3aXRoIFwiV3JvbmcgcmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgICgqd2l0aCBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGhzIFwiYmluYXJ5X3NlYXJjaCBidWdcIlxuICAgICAgICAgICAgICAgICAgICAoZXhuLCBgbGVuZ3RoIGxlbmd0aCwgYHNlYXJjaF9rZXkgc2VhcmNoX2tleSwgYHBvcyBwb3MsIGBsZW4gbGVuKVxuICAgICAgICAgICAgICAgICAgICA8OnNleHBfb2Y8IGV4biAqIFsgYGxlbmd0aCBvZiBpbnQgXSAqIFsgYHNlYXJjaF9rZXkgb2YgaW50IF1cbiAgICAgICAgICAgICAgICAgICAqIFsgYHBvcyBvZiBpbnQgXSAqIFsgYGxlbiBvZiBpbnQgXSA+PiopXG4gICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhID0gYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgKEZvcl90ZXN0Lm9mX2FycmF5IGEpXG5cbiAgICAgICgqdGVzdCBmb3IgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIHggPSBpZiB4ID0gYiB0aGVuIGBSaWdodCBlbHNlIGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA1MF8wMDBcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBSaWdodCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IE5vbmVcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgOTlfOTk5XG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBOb25lXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVGVzdCAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gTS50XG4gICAgdHlwZSAnYSBlbHQgPSBNLmVsdFxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gIGVuZClcblxubW9kdWxlIFRlc3QxIChNIDogQmluYXJ5X3NlYXJjaGFibGUxX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTS50XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSA9IE0uRm9yX3Rlc3Qub2ZfYXJyYXlcbiAgICAgIGxldCBjb21wYXJlID0gQm9vbC5jb21wYXJlXG4gICAgICBsZXQgc21hbGwgPSBmYWxzZVxuICAgICAgbGV0IGJpZyA9IHRydWVcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0IChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE0udFxuICAgICAgdHlwZSBlbHQgPSBNLmVsdFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlMV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdDEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgTS50XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZClcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBTdGRsaWIuRmlsZW5hbWVcblxuICBsZXQgY2hlY2tfc3VmZml4ID0gY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX2V4dGVuc2lvbiA9IGNob3BfZXh0ZW5zaW9uXG4gIGxldCBjaG9wX3N1ZmZpeCA9IGNob3Bfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBjaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBpc19pbXBsaWNpdCA9IGlzX2ltcGxpY2l0XG4gIGxldCBpc19yZWxhdGl2ZSA9IGlzX3JlbGF0aXZlXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBwYXJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcl9zZXAgPSBkaXJfc2VwXG4gIGxldCBxdW90ZSA9IHF1b3RlXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gZ2V0X3RlbXBfZGlyX25hbWUgKClcbiAgbGV0IGRpcm5hbWUgPSBkaXJuYW1lXG4gIGxldCBiYXNlbmFtZSA9IGJhc2VuYW1lXG5lbmRcblxubGV0IGlzX2Fic29sdXRlIHAgPSBub3QgKGlzX3JlbGF0aXZlIHApXG5cbmxldCBjb25jYXQgcDEgcDIgPVxuICBpZiBTdHJpbmcuaXNfZW1wdHkgcDFcbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUuY29uY2F0IGNhbGxlZCB3aXRoIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKHNlY29uZCBcXFxuICAgICAgIGFyZ3VtZW50OiAlcylcIlxuICAgICAgcDJcbiAgICAgICgpO1xuICBsZXQgcmVjIGNvbGxhcHNlX3RyYWlsaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lIChcIlwiLCAoXCIuXCIgfCBcIlwiKSkgLT4gXCJcIlxuICAgIHwgU29tZSAocywgKFwiLlwiIHwgXCJcIikpIC0+IGNvbGxhcHNlX3RyYWlsaW5nIHNcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gc1xuICBpblxuICBsZXQgcmVjIGNvbGxhcHNlX2xlYWRpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKChcIi5cIiB8IFwiXCIpLCBzKSAtPiBjb2xsYXBzZV9sZWFkaW5nIHNcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT4gc1xuICBpblxuICBjb2xsYXBzZV90cmFpbGluZyBwMSBeIFwiL1wiIF4gY29sbGFwc2VfbGVhZGluZyBwMlxuOztcblxubGV0IHRvX2Fic29sdXRlX2V4biBwIH5yZWxhdGl2ZV90byA9XG4gIGlmIGlzX3JlbGF0aXZlIHJlbGF0aXZlX3RvXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLnRvX2Fic29sdXRlX2V4biBjYWxsZWQgd2l0aCBhIFtyZWxhdGl2ZV90b10gdGhhdCBpcyBhIHJlbGF0aXZlIHBhdGg6ICVzXCJcbiAgICAgIHJlbGF0aXZlX3RvXG4gICAgICAoKVxuICBlbHNlIGlmIGlzX2Fic29sdXRlIHBcbiAgdGhlbiBwXG4gIGVsc2UgY29uY2F0IHJlbGF0aXZlX3RvIHBcbjs7XG5cbmxldCBzcGxpdCBzID0gZGlybmFtZSBzLCBiYXNlbmFtZSBzXG5cbigqIFttYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemVdIGNvbWVzIGZyb20gZ2V0Y29uZiBfUE9TSVhfTkFNRV9NQVggLyAqKVxubGV0IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSA9IDI1NVxuXG5sZXQgaXNfcG9zaXhfcGF0aG5hbWVfY29tcG9uZW50IHMgPVxuICBsZXQgbW9kdWxlIFMgPSBTdHJpbmcgaW5cbiAgcyA8PiBcIi5cIlxuICAmJiBzIDw+IFwiLi5cIlxuICAmJiBJbnQuKDAgPCBTLmxlbmd0aCBzKVxuICAmJiBJbnQuKFMubGVuZ3RoIHMgPD0gbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplKVxuICAmJiAobm90IChTLmNvbnRhaW5zIHMgJy8nKSlcbiAgJiYgbm90IChTLmNvbnRhaW5zIHMgJ1xcMDAwJylcbjs7XG5cbmxldCByb290ID0gXCIvXCJcblxubGV0IHNwbGl0X2V4dGVuc2lvbiBmbiA9XG4gIGxldCBkaXIsIGZuID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy8nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgZm5cbiAgICB8IFNvbWUgKHBhdGgsIGZuKSAtPiBTb21lIHBhdGgsIGZuXG4gIGluXG4gIGxldCBmbiwgZXh0ID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy4nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gZm4sIE5vbmVcbiAgICB8IFNvbWUgKGJhc2VfZm4sIGV4dCkgLT4gYmFzZV9mbiwgU29tZSBleHRcbiAgaW5cbiAgbGV0IGZuID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgTm9uZSAtPiBmblxuICAgIHwgU29tZSBkaXIgLT4gZGlyIF4gXCIvXCIgXiBmblxuICBpblxuICBmbiwgZXh0XG47O1xuXG5sZXQgcGFydHMgZmlsZW5hbWUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGZpbGVuYW1lID1cbiAgICBtYXRjaCBzcGxpdCBmaWxlbmFtZSB3aXRoXG4gICAgfCAoXCIuXCIgYXMgYmFzZSksIFwiLlwiIC0+IGJhc2UgOjogYWNjXG4gICAgfCAoXCIvXCIgYXMgYmFzZSksIFwiL1wiIC0+IGJhc2UgOjogYWNjXG4gICAgfCByZXN0LCBkaXIgLT4gbG9vcCAoZGlyIDo6IGFjYykgcmVzdFxuICBpblxuICBsb29wIFtdIGZpbGVuYW1lXG47O1xuXG5sZXQgb2ZfcGFydHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwiRmlsZW5hbWUub2ZfcGFydHM6IGVtcHR5IHBhcnRzIGxpc3RcIlxuICB8IHJvb3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpyb290IH5mOlN0ZGxpYi5GaWxlbmFtZS5jb25jYXRcbjs7XG5cbmxldCByZWMgc2tpcF9jb21tb25fcHJlZml4IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgd2hlbiBTdHJpbmcuZXF1YWwgaDEgaDIgLT4gc2tpcF9jb21tb25fcHJlZml4IHQxIHQyXG4gIHwgXyAtPiBsMSwgbDJcbjs7XG5cbmxldCBvZl9hYnNvbHV0ZV9leG4gYSB+cmVsYXRpdmVfdG86YiA9XG4gIGlmIGlzX3JlbGF0aXZlIGFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+Zmlyc3RfYXJnOihhIDogc3RyaW5nKV07XG4gIGlmIGlzX3JlbGF0aXZlIGJcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogW35yZWxhdGl2ZV90b10gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+cmVsYXRpdmVfdG86KGIgOiBzdHJpbmcpXTtcbiAgbGV0IGFfcGFydHMgPSBwYXJ0cyBhIGluXG4gIGxldCBiX3BhcnRzID0gcGFydHMgYiBpblxuICBsZXQgYV9zdWZmaXgsIGJfc3VmZml4ID0gc2tpcF9jb21tb25fcHJlZml4IGFfcGFydHMgYl9wYXJ0cyBpblxuICBsZXQgZ29fdXAgPSBMaXN0Lm1hcCB+ZjooZnVuIF8gLT4gcGFyZW50X2Rpcl9uYW1lKSBiX3N1ZmZpeCBpblxuICBtYXRjaCBnb191cCBAIGFfc3VmZml4IHdpdGhcbiAgfCBbXSAtPiBjdXJyZW50X2Rpcl9uYW1lXG4gIHwgcmVscGF0aCAtPiBvZl9wYXJ0cyByZWxwYXRoXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBjcmVhdGVfYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlX2ZkID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgcmVhbHBhdGggPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2RpciA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBVbml2X21hcF9pbnRmXG5tb2R1bGUgVWlkID0gVHlwZV9lcXVhbC5JZC5VaWRcblxubW9kdWxlIE1ha2UxXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICgncywgJ2EpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogQSB3cmFwcGVyIGZvciB0aGUgW0tleV0gbW9kdWxlIHRoYXQgYWRkcyBhIGR5bmFtaWMgY2hlY2sgdG8gW0tleS50eXBlX2lkXS5cblxuICAgICBJdCdzIGEgYnVnIGlmIHRoZSB1c2VyLXByb3ZpZGVkIFtLZXkudHlwZV9pZF0gZ2l2ZXMgZGlmZmVyZW50IHR5cGUgaWRzIG9uIGRpZmZlcmVudFxuICAgICBjYWxscy4gIEJlY2F1c2UgdGhpcyBjaGVjayBzaG91bGQgYmUgZmFpcmx5IGNoZWFwLCB3ZSBkbyBpdCBkeW5hbWljYWxseSB0byBhdm9pZFxuICAgICBzdWJ0bGVyIHByb2JsZW1zIGxhdGVyLlxuXG4gICAgIE9mIGNvdXJzZSwgd2UncmUgbm90IGNoZWNraW5nIHRydWx5IHBhdGhvbG9naWNhbCB0aGluZ3MgbGlrZSB0aGUgcHJvdmlkZWRcbiAgICAgW0tleS50eXBlX2lkXSBvbmx5IGNoYW5nZXMgdGhlIHZhbHVlIGl0IHJldHVybnMgb24gZXZlcnkgdGhpcmQgY2FsbC4uLiAqKVxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgS2V5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIHRlc3QtZnJpZW5kbHkgc2V4cCBjb252ZXJzaW9uICopXG4gICAgbGV0IHNleHBfb2ZfdHlwZV9pZCB0eXBlX2lkID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IG5hbWUgPSAoVHlwZV9lcXVhbC5JZC5uYW1lIHR5cGVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDsgdWlkID1cbiAgICAgICAgICAgIChpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmdcbiAgICAgICAgICAgICB0aGVuIFNleHAuQXRvbSBcIjx1aWQ+XCJcbiAgICAgICAgICAgICBlbHNlIFR5cGVfZXF1YWwuSWQuVWlkLnNleHBfb2ZfdCAoVHlwZV9lcXVhbC5JZC51aWQgdHlwZV9pZClcbiAgICAgICAgICAgICAgICAgIDogU2V4cC50KVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZV9pZCBrZXkgPVxuICAgICAgbGV0IHR5cGVfaWQxID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBsZXQgdHlwZV9pZDIgPSBLZXkudHlwZV9pZCBrZXkgaW5cbiAgICAgIGlmIFR5cGVfZXF1YWwuSWQuc2FtZSB0eXBlX2lkMSB0eXBlX2lkMlxuICAgICAgdGhlbiB0eXBlX2lkMVxuICAgICAgZWxzZVxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltLZXkudHlwZV9pZF0gbXVzdCBub3QgcHJvdmlkZSBkaWZmZXJlbnQgdHlwZSBpZHMgd2hlbiBjYWxsZWQgb24gdGhlIHNhbWUgXFxcbiAgICAgICAgICAgICBpbnB1dFwiXG4gICAgICAgICAgICAgIChrZXkgOiBfIEtleS50KVxuICAgICAgICAgICAgICAodHlwZV9pZDEgOiB0eXBlX2lkKVxuICAgICAgICAgICAgICAodHlwZV9pZDIgOiB0eXBlX2lkKV1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlICgncywgJ2EpIGRhdGEgPSAoJ3MsICdhKSBEYXRhLnRcblxuICBsZXQgbmFtZV9vZl9rZXkga2V5ID0gVHlwZV9lcXVhbC5JZC5uYW1lIChLZXkudHlwZV9pZCBrZXkpXG4gIGxldCB1aWRfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQudWlkIChLZXkudHlwZV9pZCBrZXkpXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ3MgdCA9IFQgOiAnYSBLZXkudCAqICgncywgJ2EpIERhdGEudCAtPiAncyB0XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAoVCAoa2V5LCBkYXRhKSkgPVxuICAgICAgRGF0YS5zZXhwX29mX3Qgc2V4cF9vZl9hIChUeXBlX2VxdWFsLklkLnRvX3NleHAgKEtleS50eXBlX2lkIGtleSkpIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWRfbmFtZSAoVCAoa2V5LCBfKSkgPSBuYW1lX29mX2tleSBrZXlcbiAgICBsZXQgdHlwZV9pZF91aWQgKFQgKGtleSwgXykpID0gdWlkX29mX2tleSBrZXlcblxuICAgIGxldCBjb21wYXJlIHQxIHQyID1cbiAgICAgIGxldCBjID0gU3RyaW5nLmNvbXBhcmUgKHR5cGVfaWRfbmFtZSB0MSkgKHR5cGVfaWRfbmFtZSB0MikgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBVaWQuY29tcGFyZSAodHlwZV9pZF91aWQgdDEpICh0eXBlX2lkX3VpZCB0MilcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdzIHQgPSAncyBQYWNrZWQudCBNYXAuTShVaWQpLnRcblxuICBsZXQgdG9fYWxpc3QgdCA9IE1hcC5kYXRhIHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlBhY2tlZC5jb21wYXJlXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgdG9fYWxpc3QgdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gcGFja2VkIC0+IFBhY2tlZC50eXBlX2lkX25hbWUgcGFja2VkLCBwYWNrZWQpXG4gICAgfD4gWyVzZXhwX29mOiAoc3RyaW5nICogYSBQYWNrZWQudCkgbGlzdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50ICh0IDogXyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIE1hcC5pdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBhc3NlcnQgKFVpZC5lcXVhbCBrZXkgKFBhY2tlZC50eXBlX2lkX3VpZCBkYXRhKSkpKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID0gTWFwLnNldCB0IH5rZXk6KHVpZF9vZl9rZXkga2V5KSB+ZGF0YTooUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gIGxldCBtZW1fYnlfaWQgdCBpZCA9IE1hcC5tZW0gdCBpZFxuICBsZXQgbWVtIHQga2V5ID0gbWVtX2J5X2lkIHQgKHVpZF9vZl9rZXkga2V5KVxuICBsZXQgcmVtb3ZlX2J5X2lkIHQgaWQgPSBNYXAucmVtb3ZlIHQgaWRcbiAgbGV0IHJlbW92ZSB0IGtleSA9IHJlbW92ZV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IGVtcHR5ID0gTWFwLmVtcHR5IChtb2R1bGUgVWlkKVxuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPVxuICAgIE1hcC5zaW5nbGV0b24gKG1vZHVsZSBVaWQpICh1aWRfb2Zfa2V5IGtleSkgKFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IE1hcC5pc19lbXB0eVxuXG4gIGxldCBmaW5kICh0eXBlIGIpIHQgKGtleSA6IGIgS2V5LnQpID1cbiAgICBtYXRjaCBNYXAuZmluZCB0ICh1aWRfb2Zfa2V5IGtleSkgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChQYWNrZWQuVCAoa2V5JywgdmFsdWUpKSAtPlxuICAgICAgKCogY2Fubm90IHJhaXNlIC0tIHNlZSBbaW52YXJpYW50XSAqKVxuICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQga2V5KSAoS2V5LnR5cGVfaWQga2V5JylcbiAgICAgIGluXG4gICAgICBTb21lICh2YWx1ZSA6IChfLCBiKSBEYXRhLnQpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJVbml2X21hcC5maW5kX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPSBpZiBtZW0gdCBrZXkgdGhlbiBgRHVwbGljYXRlIGVsc2UgYE9rIChzZXQgdCB+a2V5IH5kYXRhKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBgT2sgdCAtPiB0XG4gICAgfCBgRHVwbGljYXRlIC0+XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuYWRkX2V4biBvbiBleGlzdGluZyBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2VfZXhuIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIGRhdGEpXG4gICAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuY2hhbmdlX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIGxldCBvcmlnID0gZmluZCB0IGtleSBpblxuICAgIGxldCBuZXh0ID0gdXBkYXRlIG9yaWcgaW5cbiAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgfCBOb25lIC0+IGlmIE9wdGlvbi5pc19ub25lIG9yaWcgdGhlbiB0IGVsc2UgcmVtb3ZlIHQga2V5XG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9IGNoYW5nZSB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcblxuICBsZXQgb2ZfYWxpc3RfZXhuIHQgPVxuICAgIE1hcC5vZl9hbGlzdF9leG4gKG1vZHVsZSBVaWQpIChMaXN0Lm1hcCB0IH5mOihmdW4gcCAtPiBQYWNrZWQudHlwZV9pZF91aWQgcCwgcCkpXG4gIDs7XG5cbiAgbGV0IHR5cGVfZXF1YWwgOiAoJ3MgdCwgJ3MgUGFja2VkLnQgTWFwLk0oVHlwZV9lcXVhbC5JZC5VaWQpLnQpIFR5cGVfZXF1YWwudCA9IFRcbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBNID1cbiAgICBNYWtlMVxuICAgICAgKEtleSlcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgJ2EpIHQgPSAnYSBEYXRhLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZClcblxuICB0eXBlIHQgPSB1bml0IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBLZXkgPSBLZXlcblxuICB0eXBlICdhIGRhdGEgPSAnYSBEYXRhLnRcblxuICBsZXQgaW52YXJpYW50ID0gTS5pbnZhcmlhbnRcbiAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuICBsZXQgc2luZ2xldG9uID0gTS5zaW5nbGV0b25cbiAgbGV0IGlzX2VtcHR5ID0gTS5pc19lbXB0eVxuICBsZXQgc2V0ID0gTS5zZXRcbiAgbGV0IG1lbSA9IE0ubWVtXG4gIGxldCBtZW1fYnlfaWQgPSBNLm1lbV9ieV9pZFxuICBsZXQgZmluZCA9IE0uZmluZFxuICBsZXQgZmluZF9leG4gPSBNLmZpbmRfZXhuXG4gIGxldCBhZGQgPSBNLmFkZFxuICBsZXQgYWRkX2V4biA9IE0uYWRkX2V4blxuICBsZXQgY2hhbmdlID0gTS5jaGFuZ2VcbiAgbGV0IGNoYW5nZV9leG4gPSBNLmNoYW5nZV9leG5cbiAgbGV0IHVwZGF0ZSA9IE0udXBkYXRlXG4gIGxldCByZW1vdmUgPSBNLnJlbW92ZVxuICBsZXQgcmVtb3ZlX2J5X2lkID0gTS5yZW1vdmVfYnlfaWRcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAncyB0MSA9ICdzIE0uUGFja2VkLnQgPSBUIDogJ2EgS2V5LnQgKiAnYSBEYXRhLnQgLT4gJ3MgdDFcbiAgICB0eXBlIHQgPSB1bml0IHQxXG4gIGVuZFxuXG4gIGxldCB0b19hbGlzdCA9IE0udG9fYWxpc3RcbiAgbGV0IG9mX2FsaXN0X2V4biA9IE0ub2ZfYWxpc3RfZXhuXG4gIGxldCB0eXBlX2VxdWFsIDogKHQsIFBhY2tlZC50IE1hcC5NKFR5cGVfZXF1YWwuSWQuVWlkKS50KSBUeXBlX2VxdWFsLnQgPSBUXG5lbmRcblxubW9kdWxlIE1lcmdlIChLZXkgOiBLZXkpIChJbnB1dDFfZGF0YSA6IERhdGEpIChJbnB1dDJfZGF0YSA6IERhdGEpIChPdXRwdXRfZGF0YSA6IERhdGEpID1cbnN0cnVjdFxuICB0eXBlIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICdhIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICdhIElucHV0MV9kYXRhLnQgKiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gJ2EgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZSAodDEgOiBNYWtlKEtleSkoSW5wdXQxX2RhdGEpLnQpICh0MiA6IE1ha2UoS2V5KShJbnB1dDJfZGF0YSkudCkgfmY6eyBmIH1cbiAgICA6IE1ha2UoS2V5KShPdXRwdXRfZGF0YSkudFxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0Lk0uUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNZXJnZTFcbiAgICAoS2V5IDogS2V5KVxuICAgIChJbnB1dDFfZGF0YSA6IERhdGExKVxuICAgIChJbnB1dDJfZGF0YSA6IERhdGExKVxuICAgIChPdXRwdXRfZGF0YSA6IERhdGExKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ3MxLCAnczIsICdzMykgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudCAqICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gKCdzMywgJ2EpIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlMSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlXG4gICAgICAgICh0eXBlIHMxIHMyKVxuICAgICAgICAodDEgOiBzMSBNYWtlMShLZXkpKElucHV0MV9kYXRhKS50KVxuICAgICAgICAodDIgOiBzMiBNYWtlMShLZXkpKElucHV0Ml9kYXRhKS50KVxuICAgICAgICB+Zjp7IGYgfVxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0LlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgVHlwZV9pZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVHlwZV9lcXVhbC5JZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHR5cGVfaWQgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBNYWtlXG4gICAgKFR5cGVfaWRfa2V5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kKSA6XG4gICAgUyB3aXRoIHR5cGUgJ2EgZGF0YSA9ICdhIGFuZCBtb2R1bGUgS2V5IDo9IFR5cGVfaWRfa2V5KVxuXG5tb2R1bGUgS2V5ID0gVHlwZV9lcXVhbC5JZFxuXG5tb2R1bGUgV2l0aF9kZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBrZXkgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgZGVmYXVsdCA6ICdhXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5kZWZhdWx0IH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBkZWZhdWx0OyBrZXkgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZGVmYXVsdCB9ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IChmaW5kIHQga2V5KVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGRlZmF1bHQgPSBfIH0gfmRhdGEgPSBzZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID0gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIChmaW5kIHQga2V5KSlcbmVuZFxuXG5tb2R1bGUgV2l0aF9mb2xkID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBrZXkgOiAnYiBXaXRoX2RlZmF1bHQuS2V5LnRcbiAgICAgIDsgZiA6ICdiIC0+ICdhIC0+ICdiXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5pbml0IH5mIH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBmOyBrZXkgPSBXaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDppbml0IH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IFdpdGhfZGVmYXVsdC5LZXkuaWQgdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGYgPSBfIH0gPSBXaXRoX2RlZmF1bHQuZmluZCB0IGtleVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGYgPSBfIH0gfmRhdGEgPSBXaXRoX2RlZmF1bHQuc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQgeyBLZXkua2V5OyBmID0gXyB9IH5mOnVwZGF0ZSA9IFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6dXBkYXRlXG5cbiAgbGV0IGFkZCB0IH5rZXk6eyBLZXkua2V5OyBmIH0gfmRhdGEgPVxuICAgIFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6KGZ1biBhY2MgLT4gZiBhY2MgZGF0YSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcbiAgb3BlbiBXaXRoX2ZvbGRcblxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCAnYSBsaXN0KSBLZXkudFxuXG4gICAgbGV0IGNyZWF0ZSB+bmFtZSBzZXhwX29mID1cbiAgICAgIEtleS5jcmVhdGUgfmluaXQ6W10gfmY6KGZ1biB4cyB4IC0+IHggOjogeHMpIH5uYW1lIChMaXN0LnNleHBfb2ZfdCBzZXhwX29mKVxuICAgIDs7XG5cbiAgICBsZXQgaWQgPSBXaXRoX2ZvbGQuS2V5LmlkXG4gIGVuZFxuXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuZW5kXG4iLCJpbmNsdWRlIHN0cnVjdFxuICBvcGVuIFN0ZGlvXG5cbiAgbGV0IGVwcmludGYgPSBlcHJpbnRmXG4gIGxldCBwcmludGYgPSBwcmludGZcbiAgbGV0IHByaW50X3MgPSBwcmludF9zXG4gIGxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbiAgbGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG4gIGxldCBwcmVycl9lbmRsaW5lID0gcHJlcnJfZW5kbGluZVxuXG4gIG1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gQmFzZS5QcmludGZcblxuICBsZXQgc3ByaW50ZiA9IHNwcmludGZcbiAgbGV0IGZhaWx3aXRoZiA9IGZhaWx3aXRoZlxuICBsZXQga3NwcmludGYgPSBrc3ByaW50ZlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSFxuICB8IENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuICB8IENPTVBfQ1dPUkRcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxubGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB0KVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFNleHBsaWIwLlNleHBfY29udlxuICBvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG4gIG9wZW4gUHB4X3N0YWJsZV93aXRuZXNzX3J1bnRpbWUuU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbiAgbW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3QgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgY29tcGFyZSA9IEJhc2UuTGF6eS5jb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgcmVjIGludmFyaWFudCB0ID1cbiAgICAgICAgICBCYXNlLkludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IFplcm8gLT4gKClcbiAgICAgICAgICAgIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiTWFueSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYW55IHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcIk1heWJlIFplcm8gc2hvdWxkIGJlIGp1c3QgWmVyb1wiXG4gICAgICAgICAgICB8IE1heWJlIHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgQ29uY2F0IFtdIHwgQ29uY2F0IFsgXyBdIC0+IGZhaWx3aXRoIFwiRmxhdHRlbiB6ZXJvIGFuZCBvbmUtZWxlbWVudCBDb25jYXRcIlxuICAgICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5MaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50XG4gICAgICAgICAgICB8IEFkX2hvYyBfIC0+ICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHQgPSBbJW9mX3NleHA6IHRdIHNleHAgaW5cbiAgICAgICAgICBpbnZhcmlhbnQgdDtcbiAgICAgICAgICB0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyB1c2FnZSA9XG4gICAgICAgICAgbGV0IG9wZW4gSW1wb3J0IGluXG4gICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IFplcm8gLT4gXCJcIlxuICAgICAgICAgIHwgT25lIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYW55IChPbmUgXyBhcyB0KSAtPiBzcHJpbnRmIFwiWyVzIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1hbnkgdCAtPiBzcHJpbnRmIFwiWyglcykgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1heWJlIHQgLT4gc3ByaW50ZiBcIlslc11cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoQmFzZS5MaXN0Lm1hcCB0cyB+Zjp1c2FnZSlcbiAgICAgICAgICB8IEFkX2hvYyB1c2FnZSAtPiB1c2FnZVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IGFub25zIDogQW5vbnMuVjIudFxuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgdXNhZ2UgOiBzdHJpbmdcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFncyB9ID1cbiAgICAgICAgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zID0gVXNhZ2UgdXNhZ2U7IGZsYWdzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zOyBmbGFncyB9ID1cbiAgICAgICAgeyBzdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lXG4gICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgKG1hdGNoIGFub25zIHdpdGhcbiAgICAgICAgICAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyKVxuICAgICAgICA7IGZsYWdzXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgYSA9IER1bW15X3R5cGVfYmVjYXVzZV93ZV9jYW5ub3RfZGlnZXN0X3R5cGVfY29uc3RydWN0b3JzX29ubHlfY29uY3JldGVfdHlwZXNcbiAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICAgeyB0IHdpdGggc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZikgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgb3BlbiEgQmFzZVxuXG4gICAgICBsZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHQuc3ViY29tbWFuZHMgfmYgfVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCA9XG4gICAgICAgIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IExhenkuZnJvbV92YWwgc3ViY29tbWFuZHMgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzIH0gOiAnYSBNb2RlbC50KSA6ICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZvcmNlIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBsZXQgYWJzX3BhdGggfmRpciBwYXRoID1cbiAgICAgIGlmIEZpbGVuYW1lX2Jhc2UuaXNfYWJzb2x1dGUgcGF0aCB0aGVuIHBhdGggZWxzZSBGaWxlbmFtZV9iYXNlLmNvbmNhdCBkaXIgcGF0aFxuICAgIDs7XG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fdjMgdCA6IFYzLnQgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgPSBbXVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjMgKHQgOiBWMy50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIFYzLnRvX2xhdGVzdCB0b192M1xuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBvZl92MyBWMy5vZl9sYXRlc3RcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7ICgqIFtwYXRoX3RvX2V4ZV0gbXVzdCBiZSBhYnNvbHV0ZS4gKilcbiAgICAgICAgICBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX3YyIHQgOiBWMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IFwiL1wiXG4gICAgICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl92MiAodCA6IFYyLnQpID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2UgVjIudG9fbGF0ZXN0IHRvX3YyXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIG9mX3YyIFYyLm9mX2xhdGVzdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudFxuICAgICAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjIudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjEudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjEudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLnRvX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLm9mX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEub2ZfbGF0ZXN0IGUpXG4gICAgICAgIHwgTGF6eSB0aHVuayAtPiBvZl9sYXRlc3QgKEJhc2UuTGF6eS5mb3JjZSB0aHVuaylcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLm1hcCAoR3JvdXBfaW5mby5WMS5vZl9sYXRlc3QgZykgfmY6b2ZfbGF0ZXN0KVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWZXJzaW9uZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVjEgb2YgVjEudFxuICAgICAgICB8IFYyIG9mIFYyLnRcbiAgICAgICAgfCBWMyBvZiBWMy50ICgqIGF2YWlsYWJsZSBhdCBsZWFzdCBzaW5jZSAyMDIwLTA0ICopXG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCB2YXJpYW50cywgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBmdW5jdGlvblxuICAgICAgICB8IFYxIHQgLT4gVjEudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMiB0IC0+IFYyLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjMgdCAtPiBWMy50b19sYXRlc3QgdFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCB+dmVyc2lvbl90b191c2UgbGF0ZXN0ID1cbiAgICAgICAgbWF0Y2ggdmVyc2lvbl90b191c2Ugd2l0aFxuICAgICAgICB8IDEgLT4gVjEgKFYxLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMiAtPiBWMiAoVjIub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAzIC0+IFYzIChWMy5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IG90aGVyIC0+XG4gICAgICAgICAgQmFzZS5FcnJvci5jcmVhdGVcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwidW5zdXBwb3J0ZWQgdmVyc2lvbl90b191c2VcIlxuICAgICAgICAgICAgb3RoZXJcbiAgICAgICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgICAgIHw+IEJhc2UuRXJyb3IucmFpc2VcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEJhc2Vcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgaW52YXJpYW50ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudXNhZ2VcbiAgZW5kXG5cbiAgdHlwZSB0ID0gU3RhYmxlLkFub25zLk1vZGVsLnQgPVxuICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIudFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgbWF5YmVfbWlzc2luZ19wcmVmaXggPSBcIltcIlxuICBsZXQgbWF5YmVfbWlzc2luZ19zdWZmaXggPSBcIl1cIlxuICBsZXQgbWF5YmVfbW9yZV9zdWZmaXggPSBcIiAuLi5cIlxuXG4gIGxldCB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgPVxuICAgIGxldCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9ID0gdCBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBpZiBhdF9sZWFzdF9vbmNlXG4gICAgICB0aGVuIGZsYWdfbmFtZVxuICAgICAgZWxzZSBTdHJpbmcuY29uY2F0IFsgbWF5YmVfbWlzc2luZ19wcmVmaXg7IGZsYWdfbmFtZTsgbWF5YmVfbWlzc2luZ19zdWZmaXggXVxuICAgIGluXG4gICAgaWYgYXRfbW9zdF9vbmNlIHRoZW4gZGVzY3JpcHRpb24gZWxzZSBTdHJpbmcuY29uY2F0IFsgZGVzY3JpcHRpb247IG1heWJlX21vcmVfc3VmZml4IF1cbiAgOztcblxuICBsZXQgb2ZfaGVscF9zdHJpbmcgbmFtZSA9XG4gICAgbGV0IGF0X21vc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggbmFtZSB+c3VmZml4Om1heWJlX21vcmVfc3VmZml4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgbGV0IGF0X2xlYXN0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgU3RyaW5nLmNob3BfcHJlZml4IG5hbWUgfnByZWZpeDptYXliZV9taXNzaW5nX3ByZWZpeFxuICAgICAgICB8PiBPcHRpb24uYmluZCB+ZjooU3RyaW5nLmNob3Bfc3VmZml4IH5zdWZmaXg6bWF5YmVfbWlzc2luZ19zdWZmaXgpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0sIG5hbWVcbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19oZWxwX3N0cmluZ1wiID1cbiAgICBsZXQgZmxhZ19uYW1lID0gXCJuYW1lXCIgaW5cbiAgICBMaXN0Lml0ZXIgWyVhbGw6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgbGV0IHMgPSB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgaW5cbiAgICAgIHByaW50X3MgWyVtZXNzYWdlIFwiXCIgfl86KHQgOiB0KSBzXTtcbiAgICAgIGxldCB0JywgZmxhZ19uYW1lJyA9IG9mX2hlbHBfc3RyaW5nIHMgaW5cbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSB0IHQnKTtcbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBzdHJpbmddIGZsYWdfbmFtZSBmbGFnX25hbWUnKSk7XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIltuYW1lXSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJuYW1lIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBbbmFtZV0pXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgbmFtZSkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRmxhZ19pbmZvLk1vZGVsLnQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZG9jIDogc3RyaW5nXG4gICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgcGFyc2VfbmFtZSB0ID1cbiAgICBsZXQgbnVtX29jY3VycmVuY2VzLCBmbGFnX25hbWUgPSBOdW1fb2NjdXJyZW5jZXMub2ZfaGVscF9zdHJpbmcgdC5uYW1lIGluXG4gICAgbWF0Y2ggU3RyaW5nLnNwbGl0IGZsYWdfbmFtZSB+b246JyAnIHdpdGhcbiAgICB8IFsgZmxhZ19uYW1lIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgZmFsc2UsIGZsYWdfbmFtZSlcbiAgICB8IFsgZmxhZ19uYW1lOyBfYXJnX2RvYyBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIHRydWUsIGZsYWdfbmFtZSlcbiAgICB8IF8gLT4gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuYWJsZSB0byBwYXJzZVwiIGZsYWdfbmFtZV0pXG4gIDs7XG5cbiAgKCogVXNlcnMgYXJlIGxpa2VseSB0byBjYWxsIGFsbCB0aHJlZSBvZiB0aGVzZSBmdW5jdGlvbnMsIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCByZS1wYXJzZVxuICAgICB0aGUgW25hbWVdIHNldmVyYWwgdGltZXMuIFdlIGRvbid0IGV4cGVjdCB1c2VycyBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gY2FyZSBhYm91dCB0aGVcbiAgICAgaW5lZmZpY2llbmN5LiAqKVxuICBsZXQgZmxhZ19uYW1lIHQgPVxuICAgIHBhcnNlX25hbWUgdFxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICgoXyA6IE51bV9vY2N1cnJlbmNlcy50KSwgKF8gOiBib29sKSwgZmxhZ19uYW1lKSAtPiBmbGFnX25hbWUpXG4gIDs7XG5cbiAgbGV0IG51bV9vY2N1cnJlbmNlcyB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAobnVtX29jY3VycmVuY2VzLCAoXyA6IGJvb2wpLCAoXyA6IHN0cmluZykpIC0+XG4gICAgICBudW1fb2NjdXJyZW5jZXMpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVzX2FyZyB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoKF8gOiBOdW1fb2NjdXJyZW5jZXMudCksIHJlcXVpcmVzX2FyZywgKF8gOiBzdHJpbmcpKSAtPlxuICAgICAgcmVxdWlyZXNfYXJnKVxuICA7O1xuXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBcIlstaGVscF1cIiAtPiAtMVxuICAgIHwgXCJbLWhlbHBdXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLXZlcnNpb25dXCIgLT4gLTFcbiAgICB8IFwiWy12ZXJzaW9uXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy1idWlsZC1pbmZvXVwiIC0+IC0xXG4gICAgfCBcIlstYnVpbGQtaW5mb11cIiwgXyAtPiAxXG4gICAgfCBfLCBcImhlbHBcIiAtPiAtMVxuICAgIHwgXCJoZWxwXCIsIF8gLT4gMVxuICAgIHwgXywgXCJ2ZXJzaW9uXCIgLT4gLTFcbiAgICB8IFwidmVyc2lvblwiLCBfIC0+IDFcbiAgICB8IF8gLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2hlbHBfZGlzcGxheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBGbGFnX2luZm8udCBsaXN0XG5cbiAgbGV0IHNvcnQgdCA9XG4gICAgTGlzdC5zdGFibGVfc29ydCB0IH5jb21wYXJlOihmdW4gYSBiIC0+XG4gICAgICBGbGFnX2luZm8uaGVscF9zY3JlZW5fY29tcGFyZSBhLkZsYWdfaW5mby5uYW1lIGIuRmxhZ19pbmZvLm5hbWUpXG4gIDs7XG5cbiAgbGV0IHdvcmRfd3JhcF9hbmRfc3RyaXAgdGV4dCB3aWR0aCA9XG4gICAgbGV0IGNodW5rcyA9IFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonXFxuJyBpblxuICAgIExpc3QuY29uY2F0X21hcCBjaHVua3MgfmY6KGZ1biB0ZXh0IC0+XG4gICAgICBsZXQgd29yZHMgPVxuICAgICAgICBTdHJpbmcuc3BsaXQgdGV4dCB+b246JyAnXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gd29yZCAtPiBub3QgKFN0cmluZy5pc19lbXB0eSB3b3JkKSlcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBMaXN0LmZvbGQgd29yZHMgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyB3b3JkIC0+XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKG1hdGNoIGFjYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IFtdLCB3b3JkXG4gICAgICAgICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT5cbiAgICAgICAgICAgICAgICgqIGVmZmljaWVuY3kgaXMgbm90IGEgY29uY2VybiBmb3IgdGhlIHN0cmluZyBsZW5ndGhzIHdlIGV4cGVjdCAqKVxuICAgICAgICAgICAgICAgbGV0IGxpbmVfYW5kX3dvcmQgPSBsaW5lIF4gXCIgXCIgXiB3b3JkIGluXG4gICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGxpbmVfYW5kX3dvcmQgPD0gd2lkdGhcbiAgICAgICAgICAgICAgIHRoZW4gbGluZXMsIGxpbmVfYW5kX3dvcmRcbiAgICAgICAgICAgICAgIGVsc2UgbGluZSA6OiBsaW5lcywgd29yZCkpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+IExpc3QucmV2IChsaW5lIDo6IGxpbmVzKSlcbiAgOztcblxuICBtb2R1bGUgRGlzcGxheSA6IHNpZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbnVtX2NvbHMgPSA4MFxuICAgIGxldCBzcGFjZXNfc3RyaW5nIHdpZHRoID0gU3RyaW5nLm1ha2Ugd2lkdGggJyAnXG5cbiAgICBsZXQgcGFkX3NwYWNlc190b19zdWZmaXggeCB+d2lkdGggPVxuICAgICAgbGV0IHNsYWNrID0gd2lkdGggLSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICAgIHggXiBzcGFjZXNfc3RyaW5nIHNsYWNrXG4gICAgOztcblxuICAgIGxldCBpbmRlbnRhdGlvbiA9IFwiICBcIlxuICAgIGxldCBpbmRlbnRfYW5kX25ld2xpbmUgeCA9IExpc3QuY29uY2F0IFsgWyBpbmRlbnRhdGlvbiBdOyB4OyBbIFwiXFxuXCIgXSBdXG4gICAgbGV0IHNwYWNpbmdfZG90ID0gXCIuIFwiXG5cbiAgICBsZXQgZG90X2luZGVudGF0aW9uX29mZnNldCA9XG4gICAgICAyN1xuICAgIDs7XG5cbiAgICBsZXQgZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW4gPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfd2lkdGggPSBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtblxuICAgIGxldCBsaHNfcGFkX3dpZHRoID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3BhZCA9IHNwYWNlc19zdHJpbmcgbGhzX3BhZF93aWR0aFxuXG4gICAgbGV0IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlID1cbiAgICAgIExpc3QubWFwIH5mOihmdW4gdiAtPiBpbmRlbnRfYW5kX25ld2xpbmUgWyBsaHNfcGFkOyB2IF0pXG4gICAgOztcblxuICAgIGxldCByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgZG9jdW1lbnRhdGlvbiA9XG4gICAgICBsZXQgZmxhZ19vbl9pdHNfb3duX2xpbmUgPVxuICAgICAgICBsZXQgZmxhZ193aWR0aCA9XG4gICAgICAgICAgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbiArIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICBpblxuICAgICAgICBpZiBmbGFnX3dpZHRoID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIHNwYWNpbmdfZG90XG4gICAgICAgIHRoZW4gaW5kZW50X2FuZF9uZXdsaW5lIFsgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIGxldCB3cmFwcGVkX2RvY3VtZW50YXRpb24gPVxuICAgICAgICB3b3JkX3dyYXBfYW5kX3N0cmlwXG4gICAgICAgICAgZG9jdW1lbnRhdGlvblxuICAgICAgICAgIChudW1fY29scyAtIGxoc193aWR0aCAtIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24pXG4gICAgICBpblxuICAgICAgbWF0Y2ggd3JhcHBlZF9kb2N1bWVudGF0aW9uIHdpdGhcbiAgICAgIHwgW10gLT4gWyBmbGFnX29uX2l0c19vd25fbGluZSBdXG4gICAgICB8IGRvY193cmFwcGVkX2ZpcnN0X2xpbmUgOjogZG9jX3dyYXBwZWRfcmVzdF9saW5lcyAtPlxuICAgICAgICBsZXQgd3JhcHBlZF9kb2NfbGluZXMgPSBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIGluXG4gICAgICAgIGxldCBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIHggPVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCB4XG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICA7IGRvY193cmFwcGVkX2ZpcnN0X2xpbmVcbiAgICAgICAgICAgIF1cbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXRcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZsYWdfb25faXRzX293bl9saW5lXG4gICAgICAgICAgOjogcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBcIlwiXG4gICAgICAgICAgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgTGlzdC5jb25jYXRfbWFwIHQgfmY6KGZ1biB0IC0+XG4gICAgICAgIGxldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID1cbiAgICAgICAgICBsZXQgZmxhZyA9IHQuRmxhZ19pbmZvLm5hbWUgaW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChmbGFnIDo6IHQuYWxpYXNlcylcbiAgICAgICAgaW5cbiAgICAgICAgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIHQuZG9jIHw+IExpc3QuY29uY2F0KVxuICAgICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IERpc3BsYXkudG9fc3RyaW5nIHRcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1YmNvbW1hbmRcbiAgICB8IEZsYWdcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1YmNvbW1hbmQgLT4gXCJzdWJjb21tYW5kXCJcbiAgICB8IEZsYWcgLT4gXCJmbGFnXCJcbiAgOztcbmVuZFxuXG5sZXQgbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgaXNfZGFzaCA9IENoYXIuZXF1YWwgJy0nIGluXG4gIGxldCBhbGlzdCA9XG4gICAgKCogbm8gcGFydGlhbCBtYXRjaGVzIHVubGVzcyBzb21lIG5vbi1kYXNoIGNoYXIgaXMgcHJlc2VudCAqKVxuICAgIGlmIFN0cmluZy5mb3JfYWxsIHByZWZpeCB+Zjppc19kYXNoXG4gICAgdGhlbiBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIChkYXRhLCBfKSkgLT4ga2V5LCAoZGF0YSwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpKVxuICAgIGVsc2UgYWxpc3RcbiAgaW5cbiAgbWF0Y2hcbiAgICBMaXN0LmZpbHRlciBhbGlzdCB+ZjooZnVuY3Rpb25cbiAgICAgIHwga2V5LCAoXywgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4XG4gICAgICB8IGtleSwgKF8sIGBQcmVmaXgpIC0+IFN0cmluZy5pc19wcmVmaXgga2V5IH5wcmVmaXgpXG4gIHdpdGhcbiAgfCBbIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIF0gLT4gT2sgKGtleSwgZGF0YSlcbiAgfCBbXSAtPiBFcnJvciAoc3ByaW50ZiAhXCJ1bmtub3duICV7S2V5X3R5cGV9ICVzXCIga2V5X3R5cGUgcHJlZml4KVxuICB8IG1hdGNoZXMgLT5cbiAgICAobWF0Y2ggTGlzdC5maW5kIG1hdGNoZXMgfmY6KGZ1biAoa2V5LCBfKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeCkgd2l0aFxuICAgICB8IFNvbWUgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgLT4gT2sgKGtleSwgZGF0YSlcbiAgICAgfCBOb25lIC0+XG4gICAgICAgbGV0IG1hdGNoaW5nX2tleXMgPSBMaXN0Lm1hcCB+Zjpmc3QgbWF0Y2hlcyBpblxuICAgICAgIEVycm9yXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIVwiJXtLZXlfdHlwZX0gJXMgaXMgYW4gYW1iaWd1b3VzIHByZWZpeDogJXNcIlxuICAgICAgICAgICAga2V5X3R5cGVcbiAgICAgICAgICAgIHByZWZpeFxuICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgbWF0Y2hpbmdfa2V5cykpKVxuOztcblxubW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQmFzZV9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgYW5vbnMgOiBBbm9ucy50XG4gICAgOyBmbGFncyA6IEZsYWdfaW5mby50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9mbGFnIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IGZhbHNlIC0+IEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJGbGFncyBtdXN0IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XSlcbiAgICB8IHRydWUgLT5cbiAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCB0LmZsYWdzIH5mOihmdW4gKGZsYWdfaW5mbyA6IEZsYWdfaW5mby50KSAtPlxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGZsYWdfbmFtZSA9IEZsYWdfaW5mby5mbGFnX25hbWUgZmxhZ19pbmZvIGluXG4gICAgICAgICAgT2tcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoZmxhZ19uYW1lIDo6IGZsYWdfaW5mby5hbGlhc2VzKSB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgICAgICAga2V5LCAoZmxhZ19pbmZvLCBgUHJlZml4KSkpKVxuICAgICAgICB8PiBPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGxvb2t1cF9leHBhbmQgKExpc3QuY29uY2F0IGNob2ljZXMpIHByZWZpeCBGbGFnXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBnZXRfdXNhZ2UgdCA9XG4gICAgbWF0Y2ggdC5hbm9ucyB3aXRoXG4gICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIudXNhZ2UgZ3JhbW1hclxuICA7O1xuZW5kXG5cbm1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QudCBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9zdWJjb21tYW5kIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgIEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJTdWJjb21tYW5kcyBtdXN0IG5vdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF0pXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCAoZm9yY2UgdC5zdWJjb21tYW5kcykgfmY6KGZ1biAoa2V5LCBhKSAtPiBrZXksIChhLCBgUHJlZml4KSlcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIGNob2ljZXMgcHJlZml4IFN1YmNvbW1hbmRcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IG1hcCA9IFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLm1hcFxuZW5kXG5cbm1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkV4ZWNfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5lbmRcblxubW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRnVsbHlfZm9yY2VkLk1vZGVsLnQgPVxuICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogdFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBleHBhbmRlZF9zdWJjb21tYW5kcyB0ID1cbiAgICBsZXQgcmVjIGV4cGFuZCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4ZWMgKF8sIHQpIC0+IGV4cGFuZCB0XG4gICAgICB8IEJhc2ljIF8gLT4gWyBbXSBdXG4gICAgICB8IEdyb3VwIHsgc3ViY29tbWFuZHM7IF8gfSAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKExhenkuZm9yY2Ugc3ViY29tbWFuZHMpIH5mOihmdW4gKG5hbWUsIHQpIC0+XG4gICAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biBwYXRoIC0+IG5hbWUgOjogcGF0aCkgKGV4cGFuZCB0KSlcbiAgICBpblxuICAgICgqIFJldmVyc2luZyBzbyB0aGF0IHRoZSBjb21tYW5kcyBzaG93IHVwIGluIHRoZSBzYW1lIG9yZGVyIGFzIGhlbHAgaXMgb3V0cHV0ICopXG4gICAgTGlzdC5yZXYgKGV4cGFuZCB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuU2V4cGFibGUuTW9kZWwudCA9XG4gICAgfCBCYXNlIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udFxuICAgIHwgTGF6eSBvZiB0IExhenkudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBleHRyYWN0aW9uX3ZhciA9IEVudl92YXIudG9fc3RyaW5nIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuXG4gIG1vZHVsZSBWZXJzaW9uZWQgPSBTdGFibGUuU2V4cGFibGUuVmVyc2lvbmVkXG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgbGV0IGYgaSBzdXBwb3J0ZWQgXyA9IFNldC5hZGQgc3VwcG9ydGVkIGkgaW5cbiAgICBWZXJzaW9uZWQuVmFyaWFudHMuZm9sZCB+aW5pdDooU2V0LmVtcHR5IChtb2R1bGUgSW50KSkgfnYxOihmIDEpIH52MjooZiAyKSB+djM6KGYgMylcbiAgOztcblxuICBsZXQgb2ZfdmVyc2lvbmVkID0gVmVyc2lvbmVkLnRvX2xhdGVzdFxuICBsZXQgdG9fdmVyc2lvbmVkIHQgfnZlcnNpb25fdG9fdXNlID0gVmVyc2lvbmVkLm9mX2xhdGVzdCB0IH52ZXJzaW9uX3RvX3VzZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiAodW5pdCAtPiB0KVxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBmdWxseV9mb3JjZWQgOiB0IC0+IEZ1bGx5X2ZvcmNlZC50ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IEJhc2ljIGJcbiAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLm1hcCBnIH5mOmZ1bGx5X2ZvcmNlZClcbiAgfCBFeGVjIChlLCBmKSAtPiBFeGVjIChlLCBmdWxseV9mb3JjZWQgKGYgKCkpKVxuICB8IExhenkgdGh1bmsgLT4gZnVsbHlfZm9yY2VkIChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IHJlYyBnZXRfc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBiLnN1bW1hcnlcbiAgfCBHcm91cCBnIC0+IGcuc3VtbWFyeVxuICB8IEV4ZWMgKGUsIF8pIC0+IGUuc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gZ2V0X3N1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgaGVscF90ZXh0ID0gYFVzZV9Db21tYW5kX3VuaXhcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleV90eXBlID0gS2V5X3R5cGVcblxuICBsZXQgYWJzX3BhdGggPSBTdGFibGUuRXhlY19pbmZvLmFic19wYXRoXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmVcbiAgbGV0IHdvcmRfd3JhcCA9IEZsYWdfaGVscF9kaXNwbGF5LndvcmRfd3JhcF9hbmRfc3RyaXBcbiAgbGV0IGxvb2t1cF9leHBhbmQgPSBsb29rdXBfZXhwYW5kXG5lbmRcbiIsIlxub3BlbiEgQmFzZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbW1hbmRfaW50ZlxubW9kdWxlIFNoYXBlID0gU2hhcGVcblxuKCogaW4gb3JkZXIgdG8gZGVmaW5lIGV4cGVjdCB0ZXN0cywgd2Ugd2FudCB0byByYWlzZSByYXRoZXIgdGhhbiBleGl0IGlmIHRoZSBjb2RlIGlzXG4gICBydW5uaW5nIGluIHRoZSB0ZXN0IHJ1bm5lciBwcm9jZXNzICopXG5sZXQgcmFpc2VfaW5zdGVhZF9vZl9leGl0ID1cbiAgbWF0Y2ggUHB4X2lubGluZV90ZXN0X2xpYi50ZXN0aW5nIHdpdGhcbiAgfCBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXIgLT4gdHJ1ZVxuICB8IGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lciB8IGBOb3RfdGVzdGluZyAtPiBmYWxzZVxuOztcblxuZXhjZXB0aW9uIEV4aXRfY2FsbGVkIG9mIHsgc3RhdHVzIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogW3JhaXNlX2luc3RlYWRfb2ZfZXhpdF0tcmVzcGVjdGluZyB3cmFwcGVycyBmb3IgW2V4aXRdIGFuZCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0ICopXG5pbmNsdWRlIHN0cnVjdFxuICBsZXQgZXhpdCBzdGF0dXMgPVxuICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdCB0aGVuIHJhaXNlIChFeGl0X2NhbGxlZCB7IHN0YXR1cyB9KSBlbHNlIFN0ZGxpYi5leGl0IHN0YXR1c1xuICA7O1xuXG4gIG1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgICBsZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPVxuICAgICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0XG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IGYgKCkgd2l0aFxuICAgICAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzID0gMCB9IGFzIGV4biAtPiBwcmludF9zIFslc2V4cCAoZXhuIDogZXhuKV0pXG4gICAgICBlbHNlIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZlxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCB1bndvcmRzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHhzXG5sZXQgdW5wYXJhZ3JhcGhzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXFxuXCIgeHNcblxuZXhjZXB0aW9uIEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgb2Ygc3RyaW5nXG5cbmxldCBkaWUgZm10ID0ga3NwcmludGYgKGZ1biBtc2cgKCkgLT4gcmFpc2UgKEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnKSkgZm10XG5sZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IFNoYXBlLlByaXZhdGUuaGVscF9zY3JlZW5fY29tcGFyZVxuXG4oKiB1bml2ZXJzYWwgbWFwcyBhcmUgdXNlZCB0byBwYXNzIGFyb3VuZCB2YWx1ZXMgYmV0d2VlbiBkaWZmZXJlbnQgYml0c1xuICAgb2YgY29tbWFuZCBsaW5lIHBhcnNpbmcgY29kZSB3aXRob3V0IGhhdmluZyBhIGh1Z2UgaW1wYWN0IG9uIHRoZVxuICAgdHlwZXMgaW52b2x2ZWRcblxuICAgMS4gcGFzc2luZyB2YWx1ZXMgZnJvbSBwYXJzZWQgYXJncyB0byBjb21tYW5kLWxpbmUgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uc1xuICAgMi4gcGFzc2luZyBzcGVjaWFsIHZhbHVlcyB0byBhIGJhc2UgY29tbWFuZHMgdGhhdCByZXF1ZXN0IHRoZW0gaW4gdGhlaXIgc3BlY1xuICogZXhwYW5kZWQgc3ViY29tbWFuZCBwYXRoXG4gKiBhcmdzIHBhc3NlZCB0byB0aGUgYmFzZSBjb21tYW5kXG4gKiBoZWxwIHRleHQgZm9yIHRoZSBiYXNlIGNvbW1hbmRcbiopXG5tb2R1bGUgRW52ID0gc3RydWN0XG4gIGluY2x1ZGUgVW5pdl9tYXBcblxuICBsZXQga2V5X2NyZWF0ZSBuYW1lID0gVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZSBTZXhwbGliLkNvbnYuc2V4cF9vZl9vcGFxdWVcbiAgbGV0IG11bHRpX2FkZCA9IFVuaXZfbWFwLk11bHRpLmFkZFxuICBsZXQgc2V0X3dpdGhfZGVmYXVsdCA9IFVuaXZfbWFwLldpdGhfZGVmYXVsdC5zZXRcbmVuZFxuXG5tb2R1bGUgUGFyc2luZ19vdXRjb21lIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyByZXN1bHQgOiAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudFxuICAgIDsgaGFzX2FyZyA6IGJvb2xcbiAgICB9XG5cbiAgdmFsIHJldHVybl9ub19hcmcgOiAnYSAtPiAnYSB0XG4gIHZhbCByZXR1cm5fd2l0aF9hcmcgOiAnYSAtPiAnYSB0XG4gIHZhbCBlcnJvciA6IGhhc19hcmc6Ym9vbCAtPiBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSAtPiAnYSB0XG4gIHZhbCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyA6ICdhIHQgLT4gJ2EgdCB0XG5cbiAgdmFsIGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgOiAgKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnQgdFxuICAgIC0+ICdhIHRcblxuICBpbmNsdWRlIEFwcGxpY2F0aXZlLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyByZXN1bHQgOiAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudFxuICAgIDsgaGFzX2FyZyA6IGJvb2xcbiAgICB9XG5cbiAgbGV0IGFwcGx5IGYgeCA9XG4gICAgeyByZXN1bHQgPVxuICAgICAgICBSZXN1bHQuY29tYmluZVxuICAgICAgICAgIGYucmVzdWx0XG4gICAgICAgICAgeC5yZXN1bHRcbiAgICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICAgIH5lcnI6KGZ1biAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyXzEpIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBfZXJyXzIpIC0+XG4gICAgICAgICAgICBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnJfMSlcbiAgICA7IGhhc19hcmcgPSBmLmhhc19hcmcgfHwgeC5oYXNfYXJnXG4gICAgfVxuICA7O1xuXG4gIGxldCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID0geyByZXN1bHQgPSBPayB0OyBoYXNfYXJnID0gdC5oYXNfYXJnIH1cblxuICBsZXQgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgeyByZXN1bHQgPSBSZXN1bHQuam9pbiB0LnJlc3VsdDsgaGFzX2FyZyA9IHQuaGFzX2FyZyB9XG4gIDs7XG5cbiAgbGV0IG1hcCB7IHJlc3VsdDsgaGFzX2FyZyB9IH5mID0geyByZXN1bHQgPSBSZXN1bHQubWFwIHJlc3VsdCB+ZjsgaGFzX2FyZyB9XG4gIGxldCByZXR1cm5fbm9fYXJnIHYgPSB7IHJlc3VsdCA9IE9rIHY7IGhhc19hcmcgPSBmYWxzZSB9XG4gIGxldCByZXR1cm5fd2l0aF9hcmcgdiA9IHsgcmVzdWx0ID0gT2sgdjsgaGFzX2FyZyA9IHRydWUgfVxuICBsZXQgZXJyb3Igfmhhc19hcmcgZXJyID0geyByZXN1bHQgPSBFcnJvciBlcnI7IGhhc19hcmcgfVxuXG4gIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuX25vX2FyZ1xuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQXV0b19jb21wbGV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBzdHJpbmcgbGlzdFxuXG4gIG1vZHVsZSBGb3JfZXNjYXBlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29tcGxldGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IEF1dG9fY29tcGxldGUudCBvcHRpb25cblxuICBtb2R1bGUgRm9yX2VzY2FwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEF1dG9fY29tcGxldGUuRm9yX2VzY2FwZS50IG9wdGlvblxuICBlbmRcblxuICBsZXQgcnVuX2FuZF9leGl0IHQgZW52IH5wYXJ0IDogTm90aGluZy50ID1cbiAgICBPcHRpb24uaXRlciB0IH5mOihmdW4gY29tcGxldGlvbnMgLT5cbiAgICAgIExpc3QuaXRlciB+ZjpwcmludF9lbmRsaW5lIChjb21wbGV0aW9ucyBlbnYgfnBhcnQpKTtcbiAgICBleGl0IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJnX3R5cGUgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGV4dHJhX2RvYyA6ICdhIHQgLT4gc3RyaW5nIG9wdGlvbiBsYXp5X3RcbiAgdmFsIGtleSA6ICdhIHQgLT4gJ2EgRW52Lk11bHRpLktleS50IG9wdGlvblxuICB2YWwgY29tcGxldGUgOiAnYSB0IC0+IENvbXBsZXRlci50XG4gIHZhbCBwYXJzZSA6ICdhIHQgLT4gc3RyaW5nIC0+ICdhIE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAtPiAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG1hcCA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdiIHQgLT4gZjooJ2IgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2xhenkgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYSB0IGxhenlfdCAtPiAnYSB0XG5cbiAgdmFsIG9mX21hcFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+ICdhIE1hcC5NKFN0cmluZykudFxuICAgIC0+ICdhIHRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGNvbW1hX3NlcGFyYXRlZFxuICAgIDogID9hbGxvd19lbXB0eTpib29sXG4gICAgLT4gP2tleTonYSBsaXN0IEVudi5NdWx0aS5LZXkudFxuICAgIC0+ID9zdHJpcF93aGl0ZXNwYWNlOmJvb2xcbiAgICAtPiA/dW5pcXVlX3ZhbHVlczpib29sXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIGxpc3QgdFxuXG4gIG1vZHVsZSBFeHBvcnQgOiBzaWdcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgaW50IDogaW50IHRcbiAgICB2YWwgY2hhciA6IGNoYXIgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgYm9vbCA6IGJvb2wgdFxuICAgIHZhbCBzZXhwIDogU2V4cC50IHRcbiAgICB2YWwgc2V4cF9jb252IDogP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudCAtPiAoU2V4cC50IC0+ICdhKSAtPiAnYSB0XG4gIGVuZFxuXG4gIHZhbCBhdXRvX2NvbXBsZXRlIDogXyB0IC0+IEF1dG9fY29tcGxldGUudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwYXJzZSA6IHN0cmluZyAtPiAnYVxuICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgIDsga2V5IDogJ2EgVW5pdl9tYXAuTXVsdGkuS2V5LnQgb3B0aW9uXG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBwYXJzZSB0IHMgPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IHQucGFyc2UgcylcbiAgbGV0IGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgcGFyc2UgfmV4dHJhX2RvYyA9IHsgcGFyc2U7IGtleTsgY29tcGxldGU7IGV4dHJhX2RvYyB9XG5cbiAgbGV0IGNyZWF0ZSA/Y29tcGxldGUgP2tleSBvZl9zdHJpbmcgPVxuICAgIGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nIH5leHRyYV9kb2M6KExhenkuZnJvbV92YWwgTm9uZSlcbiAgOztcblxuICBsZXQgbWFwID9rZXkgdCB+ZiA9IHsgdCB3aXRoIGtleTsgcGFyc2UgPSAoZnVuIHMgLT4gZiAodC5wYXJzZSBzKSkgfVxuXG4gIGxldCBvZl9sYXp5ID9rZXkgdCA9XG4gICAgbGV0IHBhcnNlIHN0ciA9IChmb3JjZSB0KS5wYXJzZSBzdHIgaW5cbiAgICBsZXQgY29tcGxldGUgZW52IH5wYXJ0ID1cbiAgICAgIG1hdGNoIChmb3JjZSB0KS5jb21wbGV0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogU2VlIFtydW5fYW5kX2V4aXRdIC0gbm8gY29tcGxldGlvbnMgaXMgZXF1aXZhbGVudCB0byBub3QgaGF2aW5nIGFcbiAgICAgICAgICAgW0NvbXBsZXRlXS4gKilcbiAgICAgICAgW11cbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSBlbnYgfnBhcnRcbiAgICBpblxuICAgIGxldCBleHRyYV9kb2MgPSBMYXp5LmJpbmQgdCB+ZjpleHRyYV9kb2MgaW5cbiAgICB7IHBhcnNlOyBjb21wbGV0ZSA9IFNvbWUgY29tcGxldGU7IGtleTsgZXh0cmFfZG9jIH1cbiAgOztcblxuICBsZXQgc3RyaW5nID0gY3JlYXRlIEZuLmlkXG4gIGxldCBpbnQgPSBjcmVhdGUgSW50Lm9mX3N0cmluZ1xuICBsZXQgY2hhciA9IGNyZWF0ZSBDaGFyLm9mX3N0cmluZ1xuICBsZXQgZmxvYXQgPSBjcmVhdGUgRmxvYXQub2Zfc3RyaW5nXG4gIGxldCBzZXhwID0gY3JlYXRlIFBhcnNleHAuU2luZ2xlLnBhcnNlX3N0cmluZ19leG5cblxuICBsZXQgc2V4cF9jb252ID9jb21wbGV0ZSBvZl9zZXhwID1cbiAgICBjcmVhdGUgP2NvbXBsZXRlIChmdW4gcyAtPiBvZl9zZXhwIChQYXJzZXhwLlNpbmdsZS5wYXJzZV9zdHJpbmdfZXhuIHMpKVxuICA7O1xuXG4gIGxldCBhc3NvY2lhdGl2ZVxuICAgICAgICA/KGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgPSB0cnVlKVxuICAgICAgICA/KGxpc3RfdmFsdWVzX2luX2hlbHAgPSB0cnVlKVxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBsZXQgb3BlbiBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICB2YWwgaXNfcHJlZml4IDogc3RyaW5nIC0+IHByZWZpeDpzdHJpbmcgLT4gYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgVCA6XG4gICAgICAgICAgICB7IGNtcCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAgICAgICAgIDsgbWFwIDogKHN0cmluZywgJ2EsICdjbXApIE1hcC50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAtPiAnYSB0XG4gICAgZW5kIGluXG4gICAgbGV0IChUIHsgY21wID0gKG1vZHVsZSBTKTsgbWFwIH0pID1cbiAgICAgIGxldCBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5XG4gICAgICAgICAgICAodHlwZSBjbXApXG4gICAgICAgICAgICAobW9kdWxlIFMgOiBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgICAgICBhbGlzdFxuICAgICAgICA9XG4gICAgICAgIG1hdGNoIE1hcC5vZl9hbGlzdCAobW9kdWxlIFMpIGFsaXN0IHdpdGhcbiAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IChfIDogUy50KSAtPlxuICAgICAgICAgIGxldCBkdXBsaWNhdGVfa2V5cyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrLCAoXyA6ICdhKSkgLT4gaywgaylcbiAgICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIFMpXG4gICAgICAgICAgICB8PiBNYXAuZmlsdGVyIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiB0cnVlKVxuICAgICAgICAgICAgfD4gTWFwLmRhdGFcbiAgICAgICAgICBpblxuICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5vZl9hbGlzdF9leG5cIiAoZHVwbGljYXRlX2tleXMgOiBzdHJpbmcgbGlzdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICBsZXQgbWFrZSBjbXAgPSBUIHsgY21wOyBtYXAgPSBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5IGNtcCBhbGlzdCB9IGluXG4gICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIG1ha2UgKG1vZHVsZSBTdHJpbmcpIGVsc2UgbWFrZSAobW9kdWxlIFN0cmluZy5DYXNlbGVzcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXggPVxuICAgICAgbWF0Y2ggYXV0b19jb21wbGV0ZSB3aXRoXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgbWFwKSB+ZjooZnVuIChuYW1lLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeCB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKiBCYXNoIGNvbXBsZXRpb24gd2lsbCBub3QgYWNjZXB0IFtGb29dIGFzIGEgY29tcGxldGlvbiBmb3IgW2ZdLiBTbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICB0byBtYXRjaCB0aGUgY2FwaXRhbGl6YXRpb24gZ2l2ZW4uICopXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1Ym8gbmFtZSB+cG9zOihTdHJpbmcubGVuZ3RoIHByZWZpeCkgaW5cbiAgICAgICAgICAgIGxldCBuYW1lID0gcHJlZml4IF4gc3VmZml4IGluXG4gICAgICAgICAgICBTb21lIG5hbWUpXG4gICAgaW5cbiAgICBsZXQgZmluZCBhcmcgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgbWFwIGFyZyB3aXRoXG4gICAgICB8IFNvbWUgXyBhcyBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChuYW1lLCBfKSAtPiBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6YXJnKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIChfc2luZ2xldG9uX2tleSwgdikgXSAtPiBTb21lIHZcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgICAoKiBJbiB0aGUgdHdvLW9yLW1vcmUgY2FzZSB3ZSBjb3VsZCBwcm92aWRlIGZpbHRlcmVkIGhlbHAgdGV4dCwgYnV0IGl0J3NcbiAgICAgICAgICAgICAgICAgbW9yZSBnZW5lcmFsbHkgdXNlZnVsIHRvIGxpc3QgYWxsIHRoZSBvcHRpb25zLCB3aGljaCB3ZSBkbyBiZWxvdy4gKilcbiAgICAgICAgICAgICAgTm9uZSkpXG4gICAgaW5cbiAgICBjcmVhdGUnXG4gICAgICB+ZXh0cmFfZG9jOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChpZiBsaXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChNYXAua2V5cyBtYXApIGluXG4gICAgICAgICAgICAgU29tZSBbJXN0cmluZyBcIihjYW4gYmU6ICV7dmFsdWVzfSlcIl0pXG4gICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICA/a2V5XG4gICAgICB+Y29tcGxldGVcbiAgICAgIChmdW4gYXJnIC0+XG4gICAgICAgICBtYXRjaCBmaW5kIGFyZyB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHZhbGlkX2FyZ3VtZW50c19leHRyYSA9XG4gICAgICAgICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBcIlwiIGVsc2UgXCIgKGNhc2UgaW5zZW5zaXRpdmUpXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgXCJ2YWxpZCBhcmd1bWVudHMlczogeyVzfVwiXG4gICAgICAgICAgICAgdmFsaWRfYXJndW1lbnRzX2V4dHJhXG4gICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTWFwLmtleXMgbWFwKSlcbiAgICAgICAgICAgICAoKSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGFzc29jaWF0aXZlXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgIGFsaXN0XG4gIDs7XG5cbiAgbGV0IG9mX21hcFxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBtYXBcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChNYXAudG9fYWxpc3QgbWFwKVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc3RyaW5nYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobGV0JW1hcC5MaXN0IHQgPSBFLmFsbCBpblxuICAgICAgIEUudG9fc3RyaW5nIHQsIHQpXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIGVudW1lcmF0ZWRcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBFXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgWyVzZXhwICh0IDogRS50KV1cbiAgICAgIGVuZClcbiAgOztcblxuICBsZXQgYm9vbCA9IGVudW1lcmF0ZWQgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2UgKG1vZHVsZSBCb29sKVxuXG4gIGxldCBjb21tYV9zZXBhcmF0ZWRcbiAgICAgICAgPyhhbGxvd19lbXB0eSA9IGZhbHNlKVxuICAgICAgICA/a2V5XG4gICAgICAgID8oc3RyaXBfd2hpdGVzcGFjZSA9IGZhbHNlKVxuICAgICAgICA/KHVuaXF1ZV92YWx1ZXMgPSBmYWxzZSlcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgc3RyaXAgPSBpZiBzdHJpcF93aGl0ZXNwYWNlIHRoZW4gZnVuIHN0ciAtPiBTdHJpbmcuc3RyaXAgc3RyIGVsc2UgRm4uaWQgaW5cbiAgICBsZXQgY29tcGxldGUgPVxuICAgICAgT3B0aW9uLm1hcCB0LmNvbXBsZXRlIH5mOihmdW4gY29tcGxldGVfZWx0IGVudiB+cGFydCAtPlxuICAgICAgICBsZXQgcHJlZml4ZXMsIHN1ZmZpeCA9XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHBhcnQgfm9uOicsJyB8PiBMaXN0LnJldiB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBbXSwgcGFydFxuICAgICAgICAgIHwgaGQgOjogdGwgLT4gTGlzdC5yZXYgdGwsIGhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc19hbGxvd2VkID1cbiAgICAgICAgICBpZiBub3QgdW5pcXVlX3ZhbHVlc1xuICAgICAgICAgIHRoZW4gZnVuIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgc2Vlbl9hbHJlYWR5ID1cbiAgICAgICAgICAgICAgcHJlZml4ZXMgfD4gTGlzdC5tYXAgfmY6c3RyaXAgfD4gU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZnVuIGNob2ljZSAtPiBub3QgKFNldC5tZW0gc2Vlbl9hbHJlYWR5IChzdHJpcCBjaG9pY2UpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoY29tcGxldGVfZWx0IGVudiB+cGFydDpzdWZmaXgpIH5mOihmdW4gY2hvaWNlIC0+XG4gICAgICAgICAgICAgIChub3QgKFN0cmluZy5tZW0gY2hvaWNlICcsJykpICYmIGlzX2FsbG93ZWQgY2hvaWNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBjaG9pY2UgdG8gYXV0by1jb21wbGV0ZSwgYWRkIGEgc2Vjb25kIGNob2ljZSB3aXRoXG4gICAgICAgICAgICAgYSB0cmFpbGluZyBjb21tYSBzbyB0aGF0IGF1dG8tY29tcGxldGlvbiB3aWxsIGdvIHRvIHRoZSBlbmQgYnV0IGJhc2hcbiAgICAgICAgICAgICB3b24ndCBhZGQgYSBzcGFjZS4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjaG9pY2VzLCBvciBhIHNpbmdsZSBjaG9pY2VcbiAgICAgICAgICAgICB0aGF0IG11c3QgYmUgZmluYWwsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgZHVtbXkgb3B0aW9uLiAqKVxuICAgICAgICAgIHwgWyBjaG9pY2UgXSAtPiBbIGNob2ljZTsgY2hvaWNlIF4gXCIsXCIgXVxuICAgICAgICAgIHwgY2hvaWNlcyAtPiBjaG9pY2VzXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIGNob2ljZXMgfmY6KGZ1biBjaG9pY2UgLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChwcmVmaXhlcyBAIFsgY2hvaWNlIF0pKSlcbiAgICBpblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBzdHJpbmcgPSBzdHJpcCBzdHJpbmcgaW5cbiAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYWxsb3dfZW1wdHlcbiAgICAgICAgdGhlbiBbXVxuICAgICAgICBlbHNlIGZhaWx3aXRoIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLmNvbW1hX3NlcGFyYXRlZDogZW1wdHkgbGlzdCBub3QgYWxsb3dlZFwiXG4gICAgICBlbHNlIExpc3QubWFwIChTdHJpbmcuc3BsaXQgc3RyaW5nIH5vbjonLCcpIH5mOihmdW4gc3RyIC0+IHQucGFyc2UgKHN0cmlwIHN0cikpXG4gICAgaW5cbiAgICBjcmVhdGUgP2tleSA/Y29tcGxldGUgb2Zfc3RyaW5nXG4gIDs7XG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGxldCBzdHJpbmcgPSBzdHJpbmdcbiAgICBsZXQgaW50ID0gaW50XG4gICAgbGV0IGNoYXIgPSBjaGFyXG4gICAgbGV0IGZsb2F0ID0gZmxvYXRcbiAgICBsZXQgYm9vbCA9IGJvb2xcbiAgICBsZXQgc2V4cCA9IHNleHBcbiAgICBsZXQgc2V4cF9jb252ID0gc2V4cF9jb252XG4gIGVuZFxuXG4gIGxldCBhdXRvX2NvbXBsZXRlIHQgPVxuICAgIG1hdGNoIHQuY29tcGxldGUgd2l0aFxuICAgIHwgU29tZSBmIC0+IGZcbiAgICB8IE5vbmUgLT4gZnVuIF8gfnBhcnQ6XyAtPiBbXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudCA9XG4gICAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgICA7IGF0X21vc3Rfb25jZSA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCB0b19oZWxwX3N0cmluZyA9IFNoYXBlLk51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ1xuXG4gICAgbGV0IHRvX2hlbHBfc3RyaW5nX2RlcHJlY2F0ZWQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgPSBfIH0gZmxhZ19uYW1lID1cbiAgICAgIHRvX2hlbHBfc3RyaW5nIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9IH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbGV0IGFueSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X2xlYXN0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSB0cnVlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X21vc3Rfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH1cbiAgICBsZXQgZXhhY3RseV9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gIGVuZFxuXG4gIHR5cGUgYWN0aW9uID1cbiAgICB8IE5vX2FyZyBvZiAoRW52LnQgLT4gRW52LnQpXG4gICAgfCBQcmludF9pbmZvX2FuZF9xdWl0IG9mIChFbnYudCAtPiBzdHJpbmcpXG4gICAgfCBBcmcgb2YgKEVudi50IC0+IHN0cmluZyAtPiBFbnYudCkgKiBDb21wbGV0ZXIudFxuICAgIHwgUmVzdCBvZiAoRW52LnQgLT4gc3RyaW5nIGxpc3QgLT4gRW52LnQpICogQ29tcGxldGVyLkZvcl9lc2NhcGUudFxuXG4gIG1vZHVsZSBJbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIDogc3RyaW5nIGxpc3RcbiAgICAgICgqIFthbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscF0gYXJlIGFsaWFzZXMgdGhhdCBkb24ndCBzaG93IHVwIGluIC1oZWxwIG91dHB1dC5cbiAgICAgICAgIEN1cnJlbnRseSB0aGV5J3JlIG9ubHkgdXNlZCBmb3IgZG91YmxlLWRhc2ggYnVpbHQtaW4gZmxhZ3MgbGlrZSAtLWhlbHAgYW5kXG4gICAgICAgICAtLXZlcnNpb24uICopXG4gICAgICA7IGFjdGlvbiA6IGFjdGlvblxuICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICAgIDsgY2hlY2tfYXZhaWxhYmxlIDogRW52LnQgLT4gdW5pdFxuICAgICAgOyBuYW1lX21hdGNoaW5nIDogWyBgUHJlZml4IHwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgXVxuICAgICAgfVxuXG4gICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCBmbGFnX25hbWUgPVxuICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nIHQubnVtX29jY3VycmVuY2VzIH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbW9kdWxlIERvYyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBhcmdfZG9jIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICB9XG5cbiAgICAgIGxldCBwYXJzZSB+YWN0aW9uIH5kb2MgPVxuICAgICAgICBsZXQgYXJnX2RvYywgZG9jID1cbiAgICAgICAgICBtYXRjaCAoYWN0aW9uIDogYWN0aW9uKSwgU3RyaW5nLmxzcGxpdDIgZG9jIH5vbjonICcgd2l0aFxuICAgICAgICAgIHwgKE5vX2FyZyBfIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBfKSwgXyAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IEFyZyBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBTb21lIFwiX1wiLCBkb2NcbiAgICAgICAgICB8IFJlc3QgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCAoQXJnIF8gfCBSZXN0IF8pLCBTb21lIChhcmcsIGRvYykgLT4gU29tZSBhcmcsIGRvY1xuICAgICAgICBpblxuICAgICAgICB7IGRvYyA9IFN0cmluZy5zdHJpcCBkb2M7IGFyZ19kb2MgfVxuICAgICAgOztcblxuICAgICAgbGV0IGNvbmNhdCB+bmFtZSB+YXJnX2RvYyA9XG4gICAgICAgIG1hdGNoIGFyZ19kb2Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbmFtZVxuICAgICAgICB8IFNvbWUgYXJnX2RvYyAtPiBuYW1lIF4gXCIgXCIgXiBhcmdfZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgeCA9XG4gICAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHQubnVtX29jY3VycmVuY2VzIHhcbiAgICAgIDs7XG5cbiAgICAgICgqIGZsYWcgaGVscCBpbiB0aGUgZm9ybWF0IG9mIHRoZSBvbGQgY29tbWFuZC4gdXNlZCBmb3IgaW5qZWN0aW9uICopXG4gICAgICBsZXQgaGVscFxuICAgICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgICB9IGFzIHQpXG4gICAgICAgID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBkb2MgfnByZWZpeDpcIiBcIlxuICAgICAgICB0aGVuXG4gICAgICAgICAgKG5hbWUsIFN0cmluZy5sc3RyaXAgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+IHgsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICAgICAgKHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYyksIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgKCB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWU6eCB+YXJnX2RvYylcbiAgICAgICAgICAgICwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUgKSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFsaWduXG4gICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgIH0gYXMgdClcbiAgICAgIDogU2hhcGUuRmxhZ19pbmZvLnRcbiAgICAgID1cbiAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgIGxldCBuYW1lID0gd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSBpblxuICAgICAgeyBuYW1lOyBkb2M7IGFsaWFzZXMgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIGZsYWdzID1cbiAgICAgIG1hdGNoXG4gICAgICAgIE1hcC5vZl9hbGlzdCAobW9kdWxlIFN0cmluZykgKExpc3QubWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUsIGZsYWcpKVxuICAgICAgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBmbGFnIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG5hbWVkICVzXCIgZmxhZyAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lIDo6IGZsYWcuYWxpYXNlcylcbiAgICAgICAgfD4gTGlzdC5maW5kX2FfZHVwIH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXVxuICAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIHggLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3Mgb3IgYWxpYXNlcyBuYW1lZCAlc1wiIHggKCkpO1xuICAgICAgICBtYXBcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB7IGFjdGlvbiA6IGFjdGlvblxuICAgIDsgcmVhZCA6IEVudi50IC0+ICdhIFBhcnNpbmdfb3V0Y29tZS50XG4gICAgOyBudW1fb2NjdXJyZW5jZXMgOiBOdW1fb2NjdXJyZW5jZXMudFxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gc3RyaW5nIC0+ICdhIHN0YXRlXG5cbiAgbGV0IGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIHsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBhY3Rpb24gPVxuICAgICAgICAobGV0IHVwZGF0ZSBlbnYgYXJnID1cbiAgICAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYXJnIHdpdGhcbiAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVMuXFxuJXNcIlxuICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgYXJnXG4gICAgICAgICAgICAgICAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcilcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIHwgT2sgYXJnIC0+XG4gICAgICAgICAgICAgbGV0IGVudiA9IHdyaXRlIGVudiBhcmcgaW5cbiAgICAgICAgICAgICAobWF0Y2ggQXJnX3R5cGUua2V5IGFyZ190eXBlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGVudlxuICAgICAgICAgICAgICB8IFNvbWUga2V5IC0+IEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6YXJnKVxuICAgICAgICAgaW5cbiAgICAgICAgIEFyZyAodXBkYXRlLCBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSkpXG4gICAgOyBleHRyYV9kb2MgPSBBcmdfdHlwZS5leHRyYV9kb2MgYXJnX3R5cGVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1hcF9mbGFnICh0IDogXyB0KSB+ZiBpbnB1dCA9XG4gICAgbGV0IHsgYWN0aW9uOyByZWFkOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gdCBpbnB1dCBpblxuICAgIHsgYWN0aW9uXG4gICAgOyByZWFkID0gKGZ1biBlbnYgLT4gUGFyc2luZ19vdXRjb21lLm1hcCAocmVhZCBlbnYpIH5mKVxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBleHRyYV9kb2NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnID1cbiAgICBFbnYudXBkYXRlIGVudiBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYXJnXG4gICAgICB8IFNvbWUgXyAtPiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKCkpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkX3ZhbHVlID9kZWZhdWx0IGFyZ190eXBlIG5hbWUgbnVtX29jY3VycmVuY2VzID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHZcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkIGFyZ190eXBlIG5hbWUgPSByZXF1aXJlZF92YWx1ZSBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcblxuICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUgbmFtZSA9XG4gICAgcmVxdWlyZWRfdmFsdWUgfmRlZmF1bHQgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9wdGlvbmFsIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5maW5kIGVudiBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIE5vbmVcbiAgICAgIHwgU29tZSBfIGFzIHZhbHVlIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdmFsdWVcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBub19hcmdfZ2VuZXJhbCB+aXNfcmVxdWlyZWQgfmtleV92YWx1ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHVuaXRdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5tZW0gZW52IGtleSB3aXRoXG4gICAgICB8IHRydWUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB0cnVlXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgIGlmIGlzX3JlcXVpcmVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKVxuICAgICAgICBlbHNlIFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52ID1cbiAgICAgIGlmIEVudi5tZW0gZW52IGtleVxuICAgICAgdGhlbiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKClcbiAgICAgIGVsc2UgRW52LnNldCBlbnYgfmtleSB+ZGF0YTooKVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgPVxuICAgICAgbGV0IGVudiA9XG4gICAgICAgIE9wdGlvbi5mb2xkIGtleV92YWx1ZSB+aW5pdDplbnYgfmY6KGZ1biBlbnYgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgICAgRW52LnNldF93aXRoX2RlZmF1bHQgZW52IH5rZXkgfmRhdGE6dmFsdWUpXG4gICAgICBpblxuICAgICAgd3JpdGUgZW52XG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IC0+XG4gICAgICAgICAgbGV0IGVudiA9IGFjdGlvbiBlbnYgaW5cbiAgICAgICAgICBmICgpO1xuICAgICAgICAgIGVudlxuICAgIGluXG4gICAgeyByZWFkXG4gICAgOyBhY3Rpb24gPSBOb19hcmcgYWN0aW9uXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPVxuICAgICAgICAoaWYgaXNfcmVxdWlyZWRcbiAgICAgICAgIHRoZW4gTnVtX29jY3VycmVuY2VzLmV4YWN0bHlfb25jZVxuICAgICAgICAgZWxzZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmcgbmFtZSA9XG4gICAgbm9fYXJnX2dlbmVyYWwgbmFtZSB+aXNfcmVxdWlyZWQ6ZmFsc2UgfmtleV92YWx1ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfcmVxdWlyZWQgdiBuYW1lID1cbiAgICBtYXBfZmxhZ1xuICAgICAgKG5vX2FyZ19nZW5lcmFsIH5pc19yZXF1aXJlZDp0cnVlIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmUpXG4gICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+IHZcbiAgICAgICAgfCBmYWxzZSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICBuYW1lXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19yZWdpc3RlciB+a2V5IH52YWx1ZSBuYW1lID1cbiAgICBub19hcmdfZ2VuZXJhbFxuICAgICAgbmFtZVxuICAgICAgfmlzX3JlcXVpcmVkOmZhbHNlXG4gICAgICB+a2V5X3ZhbHVlOihTb21lIChrZXksIHZhbHVlKSlcbiAgICAgIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfc29tZSB2YWx1ZSA9XG4gICAgbWFwX2ZsYWcgbm9fYXJnIH5mOihmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IFNvbWUgdmFsdWVcbiAgICAgIHwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBsZXQgbGlzdGVkIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6W10gfm5hbWUgWyVzZXhwX29mOiBfIGxpc3RdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIExpc3QucmV2IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgd2l0aFxuICAgICAgfCBbXSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBbXVxuICAgICAgfCBfIDo6IF8gYXMgdmFsdWVfbGlzdCAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlX2xpc3RcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIGxpc3QgLT4gYXJnIDo6IGxpc3QpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hbnlcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBMaXN0LnJldiAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgZmlyc3QgOjogcmVzdCAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIChmaXJzdCwgcmVzdClcbiAgICAgIHwgW10gLT5cbiAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIHEgLT4gYXJnIDo6IHEpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgYXJnX3R5cGUgPVxuICAgIG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgfD4gbWFwX2ZsYWcgfmY6KGZ1biAoeCwgeHMpIC0+IHggOjogeHMpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBhY3Rpb24gZW52IGNtZF9saW5lID0gRW52LnNldCBlbnYgfmtleSB+ZGF0YTpjbWRfbGluZSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBOb25lXG4gICAgICB8IFNvbWUgXyBhcyB2YWx1ZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IHggLT5cbiAgICAgICAgICBmIHg7XG4gICAgICAgICAgYWN0aW9uIGVudiB4XG4gICAgaW5cbiAgICB7IGFjdGlvbiA9IFJlc3QgKGFjdGlvbiwgY29tcGxldGUpXG4gICAgOyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19hYm9ydCB+ZXhpdCBfbmFtZSA9XG4gICAgeyBhY3Rpb24gPSBOb19hcmcgKGZ1biBfIC0+IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoZXhpdCAoKSkpXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyByZWFkID1cbiAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICgqIFdlIGtub3cgdGhhdCB0aGUgZmxhZyB3YXNuJ3QgcGFzc2VkIGhlcmUgYmVjYXVzZSBpZiBpdCB3YXMgcGFzc2VkXG4gICAgICAgICAgICAgIHRoZW4gdGhlIFthY3Rpb25dIHdvdWxkIGhhdmUgY2FsbGVkIFtleGl0XS4gKilcbiAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgKCkpXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSBuYW1lID0gZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lIG5hbWVcblxuICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIH5jb21wbGV0ZSBuYW1lID1cbiAgICBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGU6KFNvbWUgY29tcGxldGUpIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG4gIDs7XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fYXJnIH5ob29rIG5hbWUgPVxuICAgICAgbm9fYXJnX2dlbmVyYWwgfmlzX3JlcXVpcmVkOmZhbHNlIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaykgfmtleV92YWx1ZTpOb25lIG5hbWVcbiAgICA7O1xuXG4gICAgbGV0IGVzY2FwZSB+aG9vayA9IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaylcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhdGggOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgY3JlYXRlIDogcGF0aF90b19leGU6c3RyaW5nIC0+IHRcbiAgdmFsIG9mX3BhcnRzIDogc3RyaW5nIGxpc3QgLT4gdFxuICB2YWwgYXBwZW5kIDogdCAtPiBzdWJjb21tYW5kOnN0cmluZyAtPiB0XG4gIHZhbCByZXBsYWNlX2ZpcnN0IDogdCAtPiBmcm9tOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHRcbiAgdmFsIHBhcnRzIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgcGFydHNfZXhlX2Jhc2VuYW1lIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19kb3RzIDogdCAtPiBzdHJpbmdcbiAgdmFsIHBvcF9oZWxwIDogdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBjcmVhdGUgfnBhdGhfdG9fZXhlID0gWyBwYXRoX3RvX2V4ZSBdXG4gIGxldCBvZl9wYXJ0cyBwYXJ0cyA9IExpc3QucmV2IHBhcnRzXG4gIGxldCBhcHBlbmQgdCB+c3ViY29tbWFuZCA9IHN1YmNvbW1hbmQgOjogdFxuICBsZXQgcGFydHMgPSBMaXN0LnJldlxuXG4gIGxldCBwYXJ0c19leGVfYmFzZW5hbWUgdCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgdCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGQgOjogdGwgLT4gRmlsZW5hbWVfYmFzZS5iYXNlbmFtZSBoZCA6OiB0bFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IHVud29yZHMgKHBhcnRzX2V4ZV9iYXNlbmFtZSB0KVxuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGhcblxuICBsZXQgcmVwbGFjZV9maXJzdCB0IH5mcm9tIH50b18gPVxuICAgIGxldCByZWMgYXV4IHBhcnRzIH5hY2MgfmZyb20gfnRvXyA9XG4gICAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBTdHJpbmcuKCA9ICkgaGQgZnJvbVxuICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCB0bCAodG9fIDo6IGFjYylcbiAgICAgICAgZWxzZSBhdXggdGwgfmFjYzooaGQgOjogYWNjKSB+ZnJvbSB+dG9fXG4gICAgaW5cbiAgICBhdXggKHBhcnRzIHQpIH5hY2M6W10gfmZyb20gfnRvX1xuICA7O1xuXG4gIGxldCBwb3BfaGVscCA9IGZ1bmN0aW9uXG4gICAgfCBcImhlbHBcIiA6OiB0IC0+IHRcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19kb3RzIHQgPVxuICAgIChtYXRjaCB0IHdpdGhcbiAgICAgfCBbXSAtPiBbXVxuICAgICB8IGxhc3QgOjogaW5pdCAtPiBsYXN0IDo6IExpc3QubWFwIGluaXQgfmY6KEZuLmNvbnN0IFwiLlwiKSlcbiAgICB8PiB0b19zdHJpbmdcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5lbmRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyIDogc2lnXG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgb25lIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgbWFueSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZV9pZGVtcG90ZW50IDogdCAtPiB0XG4gICAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG4gICAgdmFsIGFkX2hvYyA6IHVzYWdlOnN0cmluZyAtPiB0XG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBuYW1lcyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuXG4gICAgbGV0IGludmFyaWFudCA9IFNoYXBlLkFub25zLkdyYW1tYXIuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU2hhcGUuQW5vbnMuR3JhbW1hci51c2FnZVxuXG4gICAgbGV0IHJlYyBpc19maXhlZF9hcml0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gdHJ1ZVxuICAgICAgfCBPbmUgXyAtPiB0cnVlXG4gICAgICB8IE1hbnkgXyAtPiBmYWxzZVxuICAgICAgfCBNYXliZSBfIC0+IGZhbHNlXG4gICAgICB8IEFkX2hvYyBfIC0+IGZhbHNlXG4gICAgICB8IENvbmNhdCB0cyAtPlxuICAgICAgICAobWF0Y2ggTGlzdC5yZXYgdHMgd2l0aFxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgIHwgbGFzdCA6OiBvdGhlcnMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgb3RoZXJzIH5mOmlzX2ZpeGVkX2FyaXR5KTtcbiAgICAgICAgICAgaXNfZml4ZWRfYXJpdHkgbGFzdClcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBuYW1lcyA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gW11cbiAgICAgIHwgT25lIHMgLT4gWyBzIF1cbiAgICAgIHwgTWFueSB0IC0+IG5hbWVzIHRcbiAgICAgIHwgTWF5YmUgdCAtPiBuYW1lcyB0XG4gICAgICB8IEFkX2hvYyBzIC0+IFsgcyBdXG4gICAgICB8IENvbmNhdCB0cyAtPiBMaXN0LmNvbmNhdF9tYXAgdHMgfmY6bmFtZXNcbiAgICA7O1xuXG4gICAgbGV0IHplcm8gPSBaZXJvXG4gICAgbGV0IG9uZSBuYW1lID0gT25lIG5hbWVcblxuICAgIGxldCBtYW55ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT5cbiAgICAgICAgaWYgbm90IChpc19maXhlZF9hcml0eSB0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIml0ZXJhdGlvbiBvZiB2YXJpYWJsZS1sZW5ndGggZ3JhbW1hcnMgc3VjaCBhcyAlcyBpcyBkaXNhbGxvd2VkXCJcbiAgICAgICAgICAgICh1c2FnZSB0KVxuICAgICAgICAgICAgKCk7XG4gICAgICAgIE1hbnkgdFxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgdCAtPiBNYXliZSB0XG4gICAgOztcblxuICAgIGxldCBtYXliZV9pZGVtcG90ZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IE1heWJlIHQgLT4gTWF5YmUgdFxuICAgICAgfCBNYW55IHQgLT4gTWFueSB0XG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgY29uY2F0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gWmVyb1xuICAgICAgfCBjYXIgOjogY2RyIC0+XG4gICAgICAgIGxldCBjYXIsIGNkciA9XG4gICAgICAgICAgTGlzdC5mb2xkIGNkciB+aW5pdDooY2FyLCBbXSkgfmY6KGZ1biAodDEsIGFjYykgdDIgLT5cbiAgICAgICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICAgICB8IFplcm8sIHQgfCB0LCBaZXJvIC0+IHQsIGFjY1xuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2ZpeGVkX2FyaXR5IHQxXG4gICAgICAgICAgICAgIHRoZW4gdDIsIHQxIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgICAgICBcInRoZSBncmFtbWFyICVzIGZvciBhbm9ueW1vdXMgYXJndW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSB0aGVyZSBcXFxuICAgICAgICAgICAgICAgICAgIGlzIHRoZSBwb3NzaWJpbGl0eSBmb3IgYXJndW1lbnRzICglcykgZm9sbG93aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgYXJndW1lbnRzICglcykuICBTdXBwb3J0aW5nIHN1Y2ggZ3JhbW1hcnMgd291bGQgY29tcGxpY2F0ZSB0aGUgXFxcbiAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBzaWduaWZpY2FudGx5LlwiXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgKENvbmNhdCAoTGlzdC5yZXYgKHQyIDo6IHQxIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MilcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MSlcbiAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggY2RyIHdpdGhcbiAgICAgICAgIHwgW10gLT4gY2FyXG4gICAgICAgICB8IF8gOjogXyAtPiBDb25jYXQgKExpc3QucmV2IChjYXIgOjogY2RyKSkpXG4gICAgOztcblxuICAgIGxldCBhZF9ob2MgfnVzYWdlID0gQWRfaG9jIHVzYWdlXG4gIGVuZFxuXG4gIG1vZHVsZSBQYXJzZXIgOiBzaWdcbiAgICBtb2R1bGUgQmFzaWMgOiBzaWdcbiAgICAgIHR5cGUgKydhIHRcblxuICAgICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICAgIHZhbCAoIDwqPiApIDogKCdhIC0+ICdiKSB0IC0+ICdhIHQgLT4gJ2IgdFxuICAgICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICBlbmRcblxuICAgICAgdmFsIGZyb21fZW52IDogKEVudi50IC0+ICdhKSAtPiAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICsnYSB0ID0gJ2EgUGFyc2luZ19vdXRjb21lLnQgQmFzaWMudFxuXG4gICAgdmFsIG9uZSA6IG5hbWU6c3RyaW5nIC0+ICdhIEFyZ190eXBlLnQgLT4gJ2EgdFxuICAgIHZhbCBtYXliZSA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB2YWwgc2VxdWVuY2UgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCBzdG9wX3BhcnNpbmcgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmluYWxfdmFsdWUgOiAnYSBCYXNpYy50IC0+IEVudi50IC0+ICdhXG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7ICgqIElmIGVtYWNzIGhpZ2hsaWdodHMgW3BhcnNlcl0gYXMgaWYgaXQgd2VyZSBhIGtleXdvcmQsIHRoYXQncyBvbmx5IGJlY2F1c2VcbiAgICAgICAgICAgICBbcGFyc2VyXSB3YXMgYSBrZXl3b3JkIGluIGNhbWxwNC4gW3BhcnNlcl0gaXMgYSByZWd1bGFyIG5hbWUgaW4gT0NhbWwuICopXG4gICAgICAgICAgcGFyc2VyIDogJ2EgQmFzaWMudFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB2YWwgY29uc3VtZSA6ICdhIEJhc2ljLnQgLT4gc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgQ29uc3VtZV9yZXN1bHQudFxuICAgIHZhbCBjb21wbGV0ZSA6ICdhIEJhc2ljLnQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gTm90aGluZy50XG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICBlbmRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEJhc2ljID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IERvbmUgb2YgKEVudi50IC0+ICdhKVxuICAgICAgICB8IE1vcmUgb2YgJ2EgbW9yZVxuICAgICAgICAoKiBBIFtUZXN0XSB3aWxsIChnZW5lcmFsbHkpIHJldHVybiBhIFtEb25lIF9dIHZhbHVlIGlmIHRoZXJlIGlzIG5vIG1vcmUgaW5wdXQgYW5kXG4gICAgICAgICAgIGEgW01vcmVdIHBhcnNlciB0byB1c2UgaWYgdGhlcmUgaXMgYW55IG1vcmUgaW5wdXQuICopXG4gICAgICAgIHwgVGVzdCBvZiAobW9yZTpib29sIC0+ICdhIHQpXG4gICAgICAgICgqIElmIHdlJ3JlIG9ubHkgY29tcGxldGluZywgd2UgY2FuJ3QgcHVsbCB2YWx1ZXMgb3V0LCBidXQgd2UgY2FuIHN0aWxsIHN0ZXAgdGhyb3VnaFxuICAgICAgICAgICBbdF1zICh3aGljaCBtYXkgaGF2ZSBjb21wbGV0aW9uIHNldCB1cCkuICopXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBvZiBwYWNrZWQgbGlzdFxuICAgICAgICB8IFN0b3BfcGFyc2luZyBvZiAnYSB0XG5cbiAgICAgIGFuZCAnYSBtb3JlID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgcGFyc2UgOiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBwYXJzZV9yZXN1bHRcbiAgICAgICAgOyBjb21wbGV0ZSA6IENvbXBsZXRlci50XG4gICAgICAgIH1cblxuICAgICAgYW5kIHBhY2tlZCA9IFBhY2tlZCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgICAgIGFuZCAnYSBwYXJzZV9yZXN1bHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIHRcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2VfbW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9IH5mID1cbiAgICAgICAgbGV0IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICAgIHsgcGFyc2VyID0gZiBwYXJzZXI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICBpblxuICAgICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYWNrX2Zvcl9jb21wbGV0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIF8gLT4gW10gKCogd29uJ3QgY29tcGxldGUgb3IgY29uc3VtZSBhbnl0aGluZyAqKVxuICAgICAgICB8IChNb3JlIF8gfCBUZXN0IF8gfCBTdG9wX3BhcnNpbmcgXykgYXMgeCAtPiBbIFBhY2tlZCB4IF1cbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBzIC0+IHBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPVxuICAgICAgICBtYXRjaCB0X2xlZnQsIHRfcmlnaHQgd2l0aFxuICAgICAgICAoKiBbRG9uZV0gKilcbiAgICAgICAgfCBEb25lIGYsIERvbmUgeCAtPlxuICAgICAgICAgIERvbmVcbiAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICBsZXQgZl9vdXRjb21lID0gZiBlbnYgaW5cbiAgICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4IGVudiBpblxuICAgICAgICAgICAgICAgZl9vdXRjb21lIHhfb3V0Y29tZSlcbiAgICAgICAgKCogbmV4dCBzdGVwIFtNb3JlXSAqKVxuICAgICAgICB8IE1vcmUgbW9yZSwgXyAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0bCAtPiB0bCA8Kj4gdF9yaWdodClcbiAgICAgICAgfCBEb25lIF8sIE1vcmUgbW9yZSAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0ciAtPiB0X2xlZnQgPCo+IHRyKVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW09ubHlfZm9yX2NvbXBsZXRpb25dICopXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfLCBfIHwgRG9uZSBfLCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgICBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHRfbGVmdCBAIHBhY2tfZm9yX2NvbXBsZXRpb24gdF9yaWdodClcbiAgICAgICAgKCogbmV4dCBzdGVwIFtTdG9wX3BhcnNpbmddICopXG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHRsLCB0ciB8IChEb25lIF8gYXMgdGwpLCBTdG9wX3BhcnNpbmcgdHIgLT4gU3RvcF9wYXJzaW5nICh0bCA8Kj4gdHIpXG4gICAgICAgICgqIG5leHQgc3RlcCBbVGVzdF0gKilcbiAgICAgICAgfCBUZXN0IHRlc3QsIF8gLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRlc3Qgfm1vcmUgPCo+IHRfcmlnaHQpXG4gICAgICAgIHwgRG9uZSBfLCBUZXN0IHRlc3QgLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRfbGVmdCA8Kj4gdGVzdCB+bW9yZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IERvbmUgKGZ1biBfIC0+IGEpXG4gICAgICBsZXQgKCA+PnwgKSB0IGYgPSByZXR1cm4gZiA8Kj4gdFxuICAgICAgbGV0IGZyb21fZW52IGYgPSBEb25lIChmdW4gZW52IC0+IGYgZW52KVxuXG4gICAgICBtb2R1bGUgRm9yX29wZW5pbmcgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG9wZW4gQmFzaWNcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFBhcnNpbmdfb3V0Y29tZS50IEJhc2ljLnRcblxuICAgIGxldCAoID4+fCApIHQgZiA9IHQgPj58IFBhcnNpbmdfb3V0Y29tZS5tYXAgfmZcbiAgICBsZXQgKCA8Kj4gKSB0X2xlZnQgdF9yaWdodCA9IHJldHVybiBQYXJzaW5nX291dGNvbWUuKCA8Kj4gKSA8Kj4gdF9sZWZ0IDwqPiB0X3JpZ2h0XG4gICAgbGV0IHJldHVybiBhID0gcmV0dXJuIChQYXJzaW5nX291dGNvbWUucmV0dXJuIGEpXG4gICAgbGV0IHJldHVybl93aXRoX2FyZyBhID0gRG9uZSAoZnVuIF8gLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyBhKVxuICAgIGxldCBzdG9wX3BhcnNpbmcgdCA9IFN0b3BfcGFyc2luZyB0XG5cbiAgICBsZXQgb25lX21vcmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgbGV0IHBhcnNlIGFub24gfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYW5vbiB3aXRoXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICBpZiBmb3JfY29tcGxldGlvblxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIHdlIGRvbid0ICpyZWFsbHkqIGNhcmUgYWJvdXQgdGhpcyB2YWx1ZSwgc28ganVzdCBwdXQgaW4gYSBkdW1teSB2YWx1ZSBzb1xuICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYW4gY29udGludWUgKilcbiAgICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkaWUgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVNcXG4lc1wiIG5hbWUgYW5vbiAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcikgKClcbiAgICAgICAgfCBPayB2IC0+XG4gICAgICAgICAgeyBwYXJzZXIgPSByZXR1cm5fd2l0aF9hcmcgdlxuICAgICAgICAgIDsgdXBkYXRlX2VudiA9XG4gICAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICAgIE9wdGlvbi5mb2xkIChBcmdfdHlwZS5rZXkgYXJnX3R5cGUpIH5pbml0OmVudiB+ZjooZnVuIGVudiBrZXkgLT5cbiAgICAgICAgICAgICAgICAgICBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOnYpKVxuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlID0gQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUgfVxuICAgIDs7XG5cbiAgICBsZXQgb25lIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlXG4gICAgICAgICAgIHRoZW4gb25lX21vcmUgfm5hbWUgYXJnX3R5cGVcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIERvbmVcbiAgICAgICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyBhbm9ueW1vdXMgYXJndW1lbnQ6ICVzXCIgbmFtZSkpKSkpXG4gICAgOztcblxuICAgIGxldCBtYXliZSB0ID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlIHRoZW4gcmV0dXJuX3dpdGhfYXJnIChmdW4gYSAtPiBTb21lIGEpIDwqPiB0IGVsc2UgcmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBzZXF1ZW5jZSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCA9XG4gICAgICAgIFRlc3RcbiAgICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybiAoZnVuIHYgYWNjIC0+IHYgOjogYWNjKSA8Kj4gdCA8Kj4gbG9vcCBlbHNlIHJldHVybiBbXSlcbiAgICAgIGluXG4gICAgICBsb29wXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfdmFsdWUgdCBlbnYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgYSAtPiBhIGVudlxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBmaW5hbF92YWx1ZSB0IGVudlxuICAgICAgfCBUZXN0IGYgLT4gZmluYWxfdmFsdWUgKGYgfm1vcmU6ZmFsc2UpIGVudlxuICAgICAgfCBNb3JlIF8gLT5cbiAgICAgICAgKCogdGhpcyBkb2Vzbid0IGhhcHBlbiBiZWNhdXNlIGFsbCBvY2N1cnJlbmNlcyBvZiBbTW9yZV0gYXJlIHByb3RlY3RlZFxuICAgICAgICAgICBieSBbVGVzdF0sIHdoaWNoIG1lYW5zIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGFuIGV4dHJhIGFyZ3VtZW50IHRvIGdpdmVcbiAgICAgICAgICAgYmVmb3JlIHJlcXVlc3RpbmcgdGhlIGZpbmFsIHZhbHVlICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgZmFpbHdpdGggXCJCVUc6IGFza2VkIGZvciBmaW5hbCB2YWx1ZSB3aGVuIGRvaW5nIGNvbXBsZXRpb25cIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIEJhc2ljLnRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgbGV0IHJlYyBjb25zdW1lXG4gICAgICA6IHR5cGUgYS4gYSBCYXNpYy50IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+IGEgQ29uc3VtZV9yZXN1bHQudFxuICAgICAgPVxuICAgICAgZnVuIHQgYXJnIH5mb3JfY29tcGxldGlvbiAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgXyAtPiBkaWUgXCJ0b28gbWFueSBhbm9ueW1vdXMgYXJndW1lbnRzXCIgKClcbiAgICAgIHwgVGVzdCBmIC0+IGNvbnN1bWUgKGYgfm1vcmU6dHJ1ZSkgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgfCBNb3JlIHsgcGFyc2U7IF8gfSAtPlxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiB9XG4gICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IHsgKGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uKSB3aXRoIHBhcnNlX2ZsYWdzID0gZmFsc2UgfVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBhY2tlZCAtPlxuICAgICAgICAobWF0Y2ggcGFja2VkIHdpdGhcbiAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICB8IFBhY2tlZCB0IDo6IHJlc3QgLT5cbiAgICAgICAgICAgbGV0ICh7IHVwZGF0ZV9lbnY7IHBhcnNlX2ZsYWdzOyBwYXJzZXIgfSA6IF8gQ29uc3VtZV9yZXN1bHQudCkgPVxuICAgICAgICAgICAgIGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdXBkYXRlX2VudlxuICAgICAgICAgICA7IHBhcnNlX2ZsYWdzXG4gICAgICAgICAgIDsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiBwYXJzZXIgQCByZXN0KVxuICAgICAgICAgICB9KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbXBsZXRlIDogdHlwZSBhLiBhIEJhc2ljLnQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gTm90aGluZy50ID1cbiAgICAgIGZ1biB0IGVudiB+cGFydCAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBEb25lIF8gLT4gZXhpdCAwXG4gICAgICAgIHwgVGVzdCBmIC0+IGNvbXBsZXRlIChmIH5tb3JlOnRydWUpIGVudiB+cGFydFxuICAgICAgICB8IE1vcmUgeyBjb21wbGV0ZTsgXyB9IC0+IENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcGxldGUgZW52IH5wYXJ0XG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gY29tcGxldGUgdCBlbnYgfnBhcnRcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHQgLT5cbiAgICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gZXhpdCAwXG4gICAgICAgICAgIHwgUGFja2VkIHQgOjogXyAtPiBjb21wbGV0ZSB0IGVudiB+cGFydClcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIFBhcnNlci5Gb3Jfb3BlbmluZ1xuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwIDogJ2EgUGFyc2VyLnRcbiAgICA7IGdyYW1tYXIgOiBHcmFtbWFyLnRcbiAgICB9XG5cbiAgbGV0IHQyIHQxIHQyID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiAtPiBhMSwgYTIpIDwqPiB0MS5wIDwqPiB0Mi5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQzIHQxIHQyIHQzID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyAtPiBhMSwgYTIsIGEzKSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0NCB0MSB0MiB0MyB0NCA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgYTQgLT4gYTEsIGEyLCBhMywgYTQpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wIDwqPiB0NC5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyOyB0NC5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZSBzdHIgPVxuICAgICgqIFZlcmlmeSB0aGUgc3RyaW5nIGlzIG5vdCBlbXB0eSBvciBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UgKilcbiAgICBsZXQgc3RybGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBzdHJsZW4gPSAwIHRoZW4gZmFpbHdpdGggXCJFbXB0eSBhbm9ueW1vdXMgYXJndW1lbnQgbmFtZSBwcm92aWRlZFwiO1xuICAgIGlmIFN0cmluZy4oIDw+ICkgKFN0cmluZy5zdHJpcCBzdHIpIHN0clxuICAgIHRoZW4gZmFpbHdpdGhmIFwiYXJndW1lbnQgbmFtZSAlUyBoYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZVwiIHN0ciAoKTtcbiAgICAoKiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHNwZWNpYWwgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgZG9uJ3QgZG8gYW55dGhpbmcgKilcbiAgICBsZXQgaGFzX3NwZWNpYWxfY2hhcnMgPVxuICAgICAgbGV0IHNwZWNpYWxfY2hhcnMgPVxuICAgICAgICBTZXQub2ZfbGlzdCAobW9kdWxlIENoYXIpIFsgJzwnOyAnPic7ICdbJzsgJ10nOyAnKCc7ICcpJzsgJ3snOyAnfScgXVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5leGlzdHMgc3RyIH5mOihTZXQubWVtIHNwZWNpYWxfY2hhcnMpXG4gICAgaW5cbiAgICBpZiBoYXNfc3BlY2lhbF9jaGFycyB0aGVuIHN0ciBlbHNlIFN0cmluZy51cHBlcmNhc2Ugc3RyXG4gIDs7XG5cbiAgbGV0ICggJTogKSBuYW1lIGFyZ190eXBlID1cbiAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgeyBwID0gUGFyc2VyLm9uZSB+bmFtZSBhcmdfdHlwZTsgZ3JhbW1hciA9IEdyYW1tYXIub25lIG5hbWUgfVxuICA7O1xuXG4gIGxldCBtYXBfYW5vbnMgdCB+ZiA9IHsgcCA9IHQucCA+PnwgZjsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG4gIGxldCBtYXliZSB0ID0geyBwID0gUGFyc2VyLm1heWJlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWF5YmUgdC5ncmFtbWFyIH1cblxuICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0IGRlZmF1bHQgdCA9XG4gICAgbGV0IHQgPSBtYXliZSB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biB2IC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCB2KSB9XG4gIDs7XG5cbiAgbGV0IHNlcXVlbmNlIHQgPSB7IHAgPSBQYXJzZXIuc2VxdWVuY2UgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYW55IHQuZ3JhbW1hciB9XG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0ID0gdDIgdCAoc2VxdWVuY2UgdClcblxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgdCA9XG4gICAgbGV0IHQgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biAoeCwgeHMpIC0+IHggOjogeHMpIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIHQgPSB7IHAgPSBQYXJzZXIuc3RvcF9wYXJzaW5nIHQucDsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgYWRfaG9jIH51c2FnZV9hcmcgPVxuICAgICAgeyBwID1cbiAgICAgICAgICBQYXJzZXIuc2VxdWVuY2VcbiAgICAgICAgICAgIChQYXJzZXIub25lIH5uYW1lOlwiV0lMTCBORVZFUiBCRSBQUklOVEVEXCIgQXJnX3R5cGUuRXhwb3J0LnN0cmluZylcbiAgICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuYWRfaG9jIH51c2FnZTp1c2FnZV9hcmdcbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ21kbGluZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mIHN0cmluZyAqIHRcbiAgICB8IENvbXBsZXRlIG9mIHN0cmluZ1xuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBvZl9saXN0IGFyZ3MgPSBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpOaWwgfmY6KGZ1biBhcmcgYXJncyAtPiBDb25zIChhcmcsIGFyZ3MpKVxuXG4gIGxldCByZWMgdG9fbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHgsIHhzKSAtPiB4IDo6IHRvX2xpc3QgeHNcbiAgICB8IENvbXBsZXRlIHggLT4gWyB4IF1cbiAgOztcblxuICBsZXQgcmVjIGVuZHNfaW5fY29tcGxldGUgPSBmdW5jdGlvblxuICAgIHwgQ29tcGxldGUgXyAtPiB0cnVlXG4gICAgfCBOaWwgLT4gZmFsc2VcbiAgICB8IENvbnMgKF8sIGFyZ3MpIC0+IGVuZHNfaW5fY29tcGxldGUgYXJnc1xuICA7O1xuXG4gIGxldCBleHRlbmQgdCB+ZXh0ZW5kIH5wYXRoID1cbiAgICBpZiBlbmRzX2luX2NvbXBsZXRlIHRcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwYXRoX2xpc3QgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6W10gKExpc3QudGwgKFBhdGgucGFydHMgcGF0aCkpIGluXG4gICAgICBvZl9saXN0ICh0b19saXN0IHQgQCBleHRlbmQgcGF0aF9saXN0KSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBTaGFwZS5Qcml2YXRlLktleV90eXBlXG5cbmxldCBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUgZmxhZ19vcl9zdWJjb21tYW5kID1cbiAgaWYgU3RyaW5nLmV4aXN0cyBmbGFnX29yX3N1YmNvbW1hbmQgfmY6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnXycpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiJXMgJXMgY29udGFpbnMgYW4gdW5kZXJzY29yZS4gVXNlIGEgZGFzaCBpbnN0ZWFkLlwiXG4gICAgICAoS2V5X3R5cGUudG9fc3RyaW5nIGtleV90eXBlKVxuICAgICAgZmxhZ19vcl9zdWJjb21tYW5kXG4gICAgICAoKVxuOztcblxubGV0IG5vcm1hbGl6ZSBrZXlfdHlwZSBrZXkgPVxuICBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUga2V5O1xuICBtYXRjaCBrZXlfdHlwZSB3aXRoXG4gIHwgS2V5X3R5cGUuRmxhZyAtPlxuICAgIGlmIFN0cmluZy5lcXVhbCBrZXkgXCItXCIgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuZXhpc3RzIGtleSB+ZjpDaGFyLmlzX3doaXRlc3BhY2VcbiAgICB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWUgKGNvbnRhaW5zIHdoaXRlc3BhY2UpOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCItXCIga2V5IHRoZW4ga2V5IGVsc2UgXCItXCIgXiBrZXlcbiAgfCBLZXlfdHlwZS5TdWJjb21tYW5kIC0+IFN0cmluZy5sb3dlcmNhc2Uga2V5XG47O1xuXG5sZXQgbG9va3VwX2V4cGFuZCA9IFNoYXBlLlByaXZhdGUubG9va3VwX2V4cGFuZFxuXG5sZXQgbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgbWFwIHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBhbGlzdCA9XG4gICAgTGlzdC5jb25jYXRfbWFwIChNYXAuZGF0YSBtYXApIH5mOihmdW4gZmxhZyAtPlxuICAgICAgbGV0IHsgRmxhZy5JbnRlcm5hbC5uYW1lXG4gICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgIDsgYWN0aW9uID0gX1xuICAgICAgICAgIDsgZG9jID0gX1xuICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgPVxuICAgICAgICBmbGFnXG4gICAgICBpblxuICAgICAgbGV0IGRhdGEgPSBmbGFnLCBuYW1lX21hdGNoaW5nIGluXG4gICAgICBsZXQgYWxpYXNlcyA9IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIEAgYWxpYXNlcyBpblxuICAgICAgKG5hbWUsIGRhdGEpIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biBhbGlhcyAtPiBhbGlhcywgZGF0YSkpXG4gIGluXG4gIG1hdGNoIExpc3QuZmluZF9hX2R1cCBhbGlzdCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgd2l0aFxuICB8IE5vbmUgLT4gbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGVcbiAgfCBTb21lIChmbGFnLCBfKSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbjs7XG5cbm1vZHVsZSBDb21tYW5kX2Jhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBmbGFncyA6IEZsYWcuSW50ZXJuYWwudCBNYXAuTShTdHJpbmcpLnRcbiAgICA7XG4gICAgICBhbm9ucyA6IHVuaXQgLT4gKFsgYFBhcnNlX2FyZ3MgXSAtPiBbIGBSdW5fbWFpbiBdIC0+IHVuaXQpIEFub25zLlBhcnNlci5CYXNpYy50XG4gICAgOyB1c2FnZSA6IEFub25zLkdyYW1tYXIudFxuICAgIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBzdWJjb21tYW5kX2NtcF9mc3QgKGEsIF8pIChjLCBfKSA9IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBjXG5cbiAgICBsZXQgZmxhZ3NfaGVscCA/KGRpc3BsYXlfaGVscF9mbGFncyA9IHRydWUpIHQgPVxuICAgICAgbGV0IGZsYWdzID0gTWFwLmRhdGEgdC5mbGFncyBpblxuICAgICAgbGV0IGZsYWdzID1cbiAgICAgICAgaWYgZGlzcGxheV9oZWxwX2ZsYWdzXG4gICAgICAgIHRoZW4gZmxhZ3NcbiAgICAgICAgZWxzZSBMaXN0LmZpbHRlciBmbGFncyB+ZjooZnVuIGYgLT4gU3RyaW5nLiggPD4gKSBmLm5hbWUgXCItaGVscFwiKVxuICAgICAgaW5cbiAgICAgIExpc3QuY29uY2F0X21hcCB+ZjpGbGFnLkludGVybmFsLkRlcHJlY2F0ZWQuaGVscCBmbGFnc1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmb3JtYXR0ZWRfZmxhZ3MgdCA9XG4gICAgTWFwLmRhdGEgdC5mbGFnc1xuICAgIHw+IExpc3QubWFwIH5mOkZsYWcuSW50ZXJuYWwuYWxpZ25cbiAgICAoKiB0aGlzIHNvcnQgcHV0cyBvcHRpb25hbCBmbGFncyBhZnRlciByZXF1aXJlZCBvbmVzICopXG4gICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IFN0cmluZy5jb21wYXJlIGEubmFtZSBiLm5hbWUpXG4gICAgfD4gU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkuc29ydFxuICA7O1xuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuQmFzZV9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB0LnJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpXG4gICAgOyBhbm9ucyA9IEdyYW1tYXIgdC51c2FnZVxuICAgIDsgZmxhZ3MgPSBmb3JtYXR0ZWRfZmxhZ3MgdFxuICAgIH1cbiAgOztcblxuICBsZXQgcGF0aF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcInBhdGhcIlxuICBsZXQgYXJnc19rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImFyZ3NcIlxuICBsZXQgaGVscF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImhlbHBcIlxuXG4gIGxldCBpbmRlbnRfYnlfMiBzdHIgPVxuICAgIFN0cmluZy5zcGxpdCB+b246J1xcbicgc3RyXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IFwiICBcIiBeIGxpbmUpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyA9XG4gICAgbWF0Y2ggbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgdC5mbGFncyBhcmcgRmxhZyB3aXRoXG4gICAgfCBFcnJvciBtc2cgLT4gZGllIFwiJXNcIiBtc2cgKClcbiAgICB8IE9rIChmbGFnX25hbWUsIGZsYWcpIC0+IGZsYWdfbmFtZSwgZmxhZy5hY3Rpb25cbiAgOztcblxuICBsZXQgcnVuX2ZsYWcgdCBlbnYgYXJnIChhcmdzIDogQ21kbGluZS50KSA9XG4gICAgbGV0IGZsYWcsIGFjdGlvbiA9IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgaW5cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBpbmZvIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICAoKiBJZiB3ZSdyZSBkb2luZyBjb21wbGV0aW9uLCB2ZXJzaW9uL2hlbHAgaW5mbyBhcmVuJ3QgdXNlZnVsIGNvbXBsZXRpb25cbiAgICAgICAgIHJlc3BvbnNlcy4gKilcbiAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgIHRoZW4gZW52LCBhcmdzXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJpbnRfZW5kbGluZSAoaW5mbyBlbnYpO1xuICAgICAgICBleGl0IDApXG4gICAgfCBOb19hcmcgZiAtPiBmIGVudiwgYXJnc1xuICAgIHwgQXJnIChmLCBjb21wKSAtPlxuICAgICAgKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgIHwgTmlsIC0+IGRpZSBcIm1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgJXNcIiBmbGFnICgpXG4gICAgICAgfCBDb25zIChhcmcsIHJlc3QpIC0+XG4gICAgICAgICBsZXQgZW52ID1cbiAgICAgICAgICAgdHJ5IGYgZW52IGFyZyB3aXRoXG4gICAgICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIGFzIGUgLT5cbiAgICAgICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgcmVzdCB0aGVuIGVudiBlbHNlIHJhaXNlIGVcbiAgICAgICAgIGluXG4gICAgICAgICBlbnYsIHJlc3RcbiAgICAgICB8IENvbXBsZXRlIHBhcnQgLT4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0KSlcbiAgICB8IFJlc3QgKGYsIGNvbXApIC0+XG4gICAgICBsZXQgYXJnX2xpc3QgPSBDbWRsaW5lLnRvX2xpc3QgYXJncyBpblxuICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgICAgIHRoZW4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0OmFyZ19saXN0KTtcbiAgICAgIGYgZW52IGFyZ19saXN0LCBOaWxcbiAgOztcblxuICBsZXQgcmVjIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciAoY21kbGluZSA6IENtZGxpbmUudCkgfmZvcl9jb21wbGV0aW9uIH5wYXJzZV9mbGFncyA9XG4gICAgbWF0Y2ggY21kbGluZSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIExpc3QuaXRlciAoTWFwLmRhdGEgdC5mbGFncykgfmY6KGZ1biBmbGFnIC0+IGZsYWcuY2hlY2tfYXZhaWxhYmxlIGVudik7XG4gICAgICBBbm9ucy5QYXJzZXIuZmluYWxfdmFsdWUgcGFyc2VyIGVudlxuICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgaWYgcGFyc2VfZmxhZ3MgJiYgU3RyaW5nLmlzX3ByZWZpeCBwYXJ0IH5wcmVmaXg6XCItXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICBMaXN0Lml0ZXIgKE1hcC5rZXlzIHQuZmxhZ3MpIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQgdGhlbiBwcmludF9lbmRsaW5lIG5hbWUpO1xuICAgICAgICBleGl0IDApXG4gICAgICBlbHNlIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQW5vbnMuUGFyc2VyLmNvbXBsZXRlIHBhcnNlciBlbnYgfnBhcnQpXG4gICAgfCBDb25zIChhcmcsIGFyZ3MpIC0+XG4gICAgICBsZXQgYXJnLCBhcmdzLCBhcmdfaXNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHBhcnNlX2ZsYWdzIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIChtYXRjaCBhcmcsIGFyZ3Mgd2l0aFxuICAgICAgICAgICAoKiB0aGUgJy1hbm9uJyBmbGFnIGlzIGhlcmUgYXMgYW4gZXNjYXBlIGhhdGNoIGluIGNhc2UgeW91IGhhdmUgYW5cbiAgICAgICAgICAgICAgYW5vbnltb3VzIGFyZ3VtZW50IHRoYXQgc3RhcnRzIHdpdGggYSBoeXBoZW4uICopXG4gICAgICAgICAgIHwgXCItYW5vblwiLCBDb25zIChhcmcsIGFyZ3MpIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgKCogc3VwcG9ydCB0aGUgY29tbW9uIFVuaXggY29udmVudGlvbiB3aGVyZSBcIi1cIiBtZWFucyBzdGRpbiAqKVxuICAgICAgICAgICB8IFwiLVwiLCBfIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgfCBfLCBfIC0+IGFyZywgYXJncywgU3RyaW5nLmlzX3ByZWZpeCBhcmcgfnByZWZpeDpcIi1cIilcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYXJnX2lzX2ZsYWcgd2l0aFxuICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgbGV0IGVudiwgYXJncyA9IHJ1bl9mbGFnIHQgZW52IGFyZyBhcmdzIGluXG4gICAgICAgICBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgYXJncyB+cGFyc2VfZmxhZ3MgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzMSA9IHBhcnNlX2ZsYWdzIGluXG4gICAgICAgICBsZXQgKHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMjsgdXBkYXRlX2VudiB9XG4gICAgICAgICAgICAgIDogXyBBbm9ucy5QYXJzZXIuQ29uc3VtZV9yZXN1bHQudClcbiAgICAgICAgICAgPVxuICAgICAgICAgICBBbm9ucy5QYXJzZXIuY29uc3VtZSBwYXJzZXIgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBlbnYgPSB1cGRhdGVfZW52IGVudiBpblxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzID0gcGFyc2VfZmxhZ3MxICYmIHBhcnNlX2ZsYWdzMiBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIH5wYXJzZV9mbGFncyBhcmdzIH5mb3JfY29tcGxldGlvbilcbiAgOztcblxuICBsZXQgcnVuX2V4biBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIHdoZW4gZm9yX2NvbXBsZXRpb24gLT4gZXhpdCAwXG4gICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyB9IC0+IGV4aXQgc3RhdHVzXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZXhuX3N0ciA9XG4gICAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cgLT4gbXNnXG4gICAgICAgIHwgXyAtPiBTZXhwLnRvX3N0cmluZ19odW0gWyVzZXhwIChleG4gOiBleG4pXVxuICAgICAgaW5cbiAgICAgIGxldCB2ZXJib3NlID0gT3B0aW9uLnZhbHVlIHZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgfmRlZmF1bHQ6dHJ1ZSBpblxuICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgIGlmIHZlcmJvc2VcbiAgICAgICAgdGhlblxuICAgICAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgIH5zZXA6XCJcXG5cXG5cIlxuICAgICAgICAgICAgWyBcIkVycm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lOlwiXG4gICAgICAgICAgICA7IGluZGVudF9ieV8yIGV4bl9zdHJcbiAgICAgICAgICAgIDsgXCJGb3IgdXNhZ2UgaW5mb3JtYXRpb24sIHJ1blwiXG4gICAgICAgICAgICA7IFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiAtaGVscFxcblwiXG4gICAgICAgICAgICBdXG4gICAgICAgIGVsc2UgZXhuX3N0clxuICAgICAgaW5cbiAgICAgIHByZXJyX2VuZGxpbmUgZXJyb3JfbXNnO1xuICAgICAgZXhpdCAxXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH5oZWxwX3RleHRcbiAgICAgICAgfm9uX2ZhaWx1cmVcbiAgICA9XG4gICAgbGV0IGZvcl9jb21wbGV0aW9uID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICBsZXQgZW52ID1cbiAgICAgIGVudlxuICAgICAgfD4gRW52LnNldCB+a2V5OnBhdGhfa2V5IH5kYXRhOnBhdGhcbiAgICAgIHw+IEVudi5zZXQgfmtleTphcmdzX2tleSB+ZGF0YTooQ21kbGluZS50b19saXN0IGFyZ3MpXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6aGVscF9rZXkgfmRhdGE6aGVscF90ZXh0XG4gICAgaW5cbiAgICBtYXRjaFxuICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IG1haW4gPVxuICAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52ICh0LmFub25zICgpKSB+Zm9yX2NvbXBsZXRpb24gfnBhcnNlX2ZsYWdzOnRydWUgYXJnc1xuICAgICAgICBpblxuICAgICAgICBtYWluIGBQYXJzZV9hcmdzKVxuICAgIHdpdGhcbiAgICB8IE9rIHRodW5rIC0+XG4gICAgICB3aGVuX3BhcnNpbmdfc3VjY2VlZHMgKCk7XG4gICAgICB0aHVuayBgUnVuX21haW5cbiAgICB8IEVycm9yIGV4biAtPiBvbl9mYWlsdXJlIGV4biB+Zm9yX2NvbXBsZXRpb24gfnBhdGggfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgOztcblxuICBtb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgICB0eXBlICsnYSB0ID1cbiAgICAgIHsgZiA6IHVuaXQgLT4gKHVuaXQgLT4gJ2EgUGFyc2luZ19vdXRjb21lLnQpIEFub25zLlBhcnNlci5CYXNpYy50XG4gICAgICA7IHVzYWdlIDogdW5pdCAtPiBBbm9ucy5HcmFtbWFyLnRcbiAgICAgIDsgZmxhZ3MgOiB1bml0IC0+IEZsYWcuSW50ZXJuYWwudCBsaXN0XG4gICAgICB9XG5cbiAgICBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZ1xuXG4gICAgbGV0IHdyYXBfdmFsdWUgdiAoKSA9IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHZcblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgeyBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgcmV0dXJuIChmdW4gZiB4ICgpIC0+XG4gICAgICAgICAgICAgICAoKiBvcmRlciBvZiBldmFsdWF0aW9uIGhlcmUgYWZmZWN0cyBpbiB3aGF0IG9yZGVyIHRoZSB1c2VycycgY2FsbGJhY2tzXG4gICAgICAgICAgICAgICAgICBhcmUgZXZhbHVhdGVkLCBzbyBpdCdzIGltcG9ydGFudCB0byBjYWxsIFtmXSBiZWZvcmUgW3hdICopXG4gICAgICAgICAgICAgICBsZXQgZl9vdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgICAgbGV0IHhfb3V0Y29tZSA9IHggKCkgaW5cbiAgICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5hcHBseSBmX291dGNvbWUgeF9vdXRjb21lKVxuICAgICAgICAgICAgIDwqPiBmLmYgKClcbiAgICAgICAgICAgICA8Kj4geC5mICgpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4geC5mbGFncyAoKSBAIGYuZmxhZ3MgKCkpXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLmNvbmNhdCBbIGYudXNhZ2UgKCk7IHgudXNhZ2UgKCkgXSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGVtcHR5X3NwZWMgOiAnbS4gKCdtIC0+ICdtKSB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gKCkgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgRm4uaWQpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXBfb3V0Y29tZSB4IH5mID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHguZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4geCAoKSAtPlxuICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4ICgpIGluXG4gICAgICAgICAgICAgZiB4X291dGNvbWUpXG4gICAgICA7IGZsYWdzID0geC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHgudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG1hcCB4IH5mID0gbWFwX291dGNvbWUgeCB+ZjooUGFyc2luZ19vdXRjb21lLm1hcCB+ZilcblxuICAgIGxldCBsb29rdXAga2V5ID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiBFbnYuZmluZF9leG4gZW52IGtleSkgPj58IHdyYXBfdmFsdWUpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHBhdGggOiBQYXRoLnQgdCA9IGxvb2t1cCBwYXRoX2tleVxuICAgIGxldCBhcmdzIDogc3RyaW5nIGxpc3QgdCA9IGxvb2t1cCBhcmdzX2tleVxuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCB0ID0gbG9va3VwIGhlbHBfa2V5XG5cbiAgICAoKiBUaGlzIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LCBmb3IgdGhlIGhlbHAgY29tbWFuZC4gKilcbiAgICBsZXQgZW52ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IGVudikgPj58IHdyYXBfdmFsdWUpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gICAgICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gQW5vbnNcblxuICAgICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgICAgbGV0IG1hcF9hbm9ucyA9IG1hcF9hbm9uc1xuICAgICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCB0MiA9IHQyXG4gICAgICBsZXQgdDMgPSB0M1xuICAgICAgbGV0IHQ0ID0gdDRcblxuICAgICAgbGV0IGFub24gc3BlYyA9XG4gICAgICAgIEFub25zLkdyYW1tYXIuaW52YXJpYW50IHNwZWMuZ3JhbW1hcjtcbiAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBzcGVjLnAgPj58IGZ1biBvdXRjb21lICgpIC0+IG91dGNvbWUpXG4gICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBzcGVjLmdyYW1tYXIpXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZXNjYXBlX2Fub24gfmZpbmFsX2Fub24gPVxuICAgICAgQW5vbnMuZXNjYXBlICh0MiBmaW5hbF9hbm9uIChzZXF1ZW5jZSAoXCJBUkdcIiAlOiBzdHJpbmcpKSkgfD4gYW5vblxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlID0gZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgICAgbGV0IG5vX2FyZ19yZXF1aXJlZCA9IG5vX2FyZ19yZXF1aXJlZFxuICAgICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuXG4gICAgICBsZXQgZmxhZ19pbnRlcm5hbFxuICAgICAgICAgICAgPyhhbGlhc2VzID0gW10pXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBtb2RlXG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgPVxuICAgICAgICBsZXQgbm9ybWFsaXplIGZsYWcgPSBub3JtYWxpemUgS2V5X3R5cGUuRmxhZyBmbGFnIGluXG4gICAgICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICAgICAgbGV0IGFsaWFzZXMgPSBMaXN0Lm1hcCB+Zjpub3JtYWxpemUgYWxpYXNlcyBpblxuICAgICAgICBsZXQgeyByZWFkOyBhY3Rpb247IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH0gPSBtb2RlIG5hbWUgaW5cbiAgICAgICAgbGV0IGNoZWNrX2F2YWlsYWJsZSA9XG4gICAgICAgICAgbWF0Y2ggbnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2Ugd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gKGlnbm9yZSA6IFVuaXZfbWFwLnQgLT4gdW5pdClcbiAgICAgICAgICB8IHRydWUgLT4gZnVuIGVudiAtPiBpZ25vcmUgKHJlYWQgZW52IDogXylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5hbWVfbWF0Y2hpbmcgPVxuICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIGZ1bGxfZmxhZ19yZXF1aXJlZCB0aGVuIGBGdWxsX21hdGNoX3JlcXVpcmVkIGVsc2UgYFByZWZpeFxuICAgICAgICBpblxuICAgICAgICB7IGYgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IHJlYWQgZW52KSA+PnwgZnVuIHYgKCkgLT4gdilcbiAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBbIHsgbmFtZVxuICAgICAgICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgICAgICAgICA7IGRvYyA9XG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZm9yY2UgZXh0cmFfZG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZXh0cmFfZG9jIC0+IFslc3RyaW5nIFwiJXtkb2N9ICV7ZXh0cmFfZG9jfVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBkb2MpXG4gICAgICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBdKVxuICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBmbGFnID0gZmxhZ19pbnRlcm5hbCB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6W11cblxuICAgICAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGFyZ190eXBlXG4gICAgICAgICAgICBzZXhwX29mX2RlZmF1bHRcbiAgICAgICAgICAgIH5kZWZhdWx0XG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgID1cbiAgICAgICAgbGV0IGRvYyA9XG4gICAgICAgICAgbWF0Y2ggc2V4cF9vZl9kZWZhdWx0IGRlZmF1bHQgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIFwiX1wiIC0+IGRvY1xuICAgICAgICAgIHwgZGVmYXVsdF9zZXhwIC0+IHNwcmludGYgIVwiJXMgKGRlZmF1bHQ6ICV7U2V4cH0pXCIgZG9jIGRlZmF1bHRfc2V4cFxuICAgICAgICBpblxuICAgICAgICBmbGFnXG4gICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIChvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSlcbiAgICAgICAgICB+ZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHJldHVybiB2ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gKCkgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgdikpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgICAgeyB0IHdpdGhcbiAgICAgICAgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHQuZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4gZiAoKSAtPlxuICAgICAgICAgICAgIGxldCBvdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5yZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyBvdXRjb21lKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgICB7IHQgd2l0aFxuICAgICAgICBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgdC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biBmICgpIC0+XG4gICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG91dGNvbWUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvcHRpb25hbF90b19yZXF1aXJlZCB0ID1cbiAgICAgIHsgdCB3aXRoXG4gICAgICAgIGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB0LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIGYgKCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgIChQYXJzaW5nX291dGNvbWUubWFwIG91dGNvbWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIFwiW29wdGlvbmFsX3RvX3JlcXVpcmVkXSBnb3QgYSBbTm9uZV0gcmVzdWx0XCIpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gT2sgdikpKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICBlbmQpXG5cbiAgICBsZXQgYXJnX25hbWVzIHQgPVxuICAgICAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpIGluXG4gICAgICBsZXQgZmxhZ19uYW1lcyA9IE1hcC5rZXlzIGZsYWdzIGluXG4gICAgICBsZXQgYW5vbl9uYW1lcyA9IEFub25zLkdyYW1tYXIubmFtZXMgKHQudXNhZ2UgKCkpIGluXG4gICAgICBMaXN0LmNvbmNhdCBbIGZsYWdfbmFtZXM7IGFub25fbmFtZXMgXVxuICAgIDs7XG5cbiAgICBsZXQgcmVxdWlyZWRfYXJnX25hbWVzIHQgPVxuICAgICAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpIGluXG4gICAgICBMaXN0LmZpbHRlcl9tYXAgKE1hcC50b19hbGlzdCBmbGFncykgfmY6KGZ1biAobmFtZSwgZmxhZykgLT5cbiAgICAgICAgaWYgZmxhZy5udW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZSB0aGVuIFNvbWUgbmFtZSBlbHNlIE5vbmUpXG4gICAgOztcblxuICAgIG1vZHVsZSBDaG9vc2Vfb25lID0gc3RydWN0XG4gICAgICB0eXBlICdhIHBhcmFtID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgQ2hvaWNlX25hbWUgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgbGlzdF90b19zdHJpbmcgOiB0IGxpc3QgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogJ2EgcGFyYW0gLT4gdFxuICAgICAgICB2YWwgZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzIDogdCAtPiBleGNlcHQ6c3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IGFsbF9hcmdzIDogc3RyaW5nIGxpc3RcbiAgICAgICAgICAgIDsgcmVxdWlyZWRfYXJncyA6IHN0cmluZyBsaXN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodC5hbGxfYXJncyA6IHN0cmluZyBsaXN0KV1cbiAgICAgICAgZW5kXG5cbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIHBhcmFtID1cbiAgICAgICAgICBsZXQgcmVxdWlyZWRfYXJncyA9IHJlcXVpcmVkX2FyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lcyA9IGFyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lc193aXRoX2NvbW1hcyA9IExpc3QuZmlsdGVyIG5hbWVzIH5mOihmdW4gcyAtPiBTdHJpbmcuY29udGFpbnMgcyAnLCcpIGluXG4gICAgICAgICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IG5hbWVzX3dpdGhfY29tbWFzKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiRm9yIHNpbXBsaWNpdHksIFtDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gZG9lcyBub3Qgc3VwcG9ydCBuYW1lcyB3aXRoIFxcXG4gICAgICAgICAgICAgICBjb21tYXMuXCJcbiAgICAgICAgICAgICAgbmFtZXNfd2l0aF9jb21tYXNcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cbiAgICAgICAgICAgIHw+IEVycm9yLnJhaXNlO1xuICAgICAgICAgIG1hdGNoIG5hbWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZSBcIltjaG9vc2Vfb25lXSBleHBlY3RzIGNob2ljZXMgdG8gcmVhZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlwiXVxuICAgICAgICAgIHwgXyA6OiBfIC0+IHsgYWxsX2FyZ3MgPSBuYW1lczsgcmVxdWlyZWRfYXJncyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgICBtYXRjaCB0LnJlcXVpcmVkX2FyZ3Mgd2l0aFxuICAgICAgICAgIHwgW10gLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIHQuYWxsX2FyZ3NcbiAgICAgICAgICB8IF8gOjogXyAtPiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgdC5yZXF1aXJlZF9hcmdzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGVudW1lcmF0ZV9yZXF1aXJlZF9mbGFncyB0IH5leGNlcHQgPVxuICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIHQucmVxdWlyZWRfYXJncyB+ZjooZnVuIHggLT4gbm90IChTdHJpbmcuZXF1YWwgZXhjZXB0IHgpKSB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgbClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbGlzdF90b19zdHJpbmcgdHMgPSBMaXN0Lm1hcCB0cyB+Zjp0b19zdHJpbmcgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuICBcIlxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgID8obmV3X2JlaGF2aW9yID0gdHJ1ZSlcbiAgICAgICAgICAgICh0cyA6IGEgcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBsZXQgZml4X2ZsYWcgdCA9XG4gICAgICAgICAgaWYgbmV3X2JlaGF2aW9yXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmFtZV9vZl90aGVfZ3JvdXAgPSBDaG9pY2VfbmFtZS5jcmVhdGVfZXhuIHQgaW5cbiAgICAgICAgICAgIGxldCBmaXhfbnVtX29jY3VycmVuY2VzIGZsYWcgPVxuICAgICAgICAgICAgICB7IGZsYWcgd2l0aFxuICAgICAgICAgICAgICAgIEZsYWcuSW50ZXJuYWwubnVtX29jY3VycmVuY2VzID1cbiAgICAgICAgICAgICAgICAgIHsgZmxhZy5GbGFnLkludGVybmFsLm51bV9vY2N1cnJlbmNlcyB3aXRoIGF0X2xlYXN0X29uY2UgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuZCBmaXhfZG9jIGZsYWcgPVxuICAgICAgICAgICAgICB7IGZsYWcgd2l0aFxuICAgICAgICAgICAgICAgIEZsYWcuSW50ZXJuYWwuZG9jID1cbiAgICAgICAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCIlcyVzXCJcbiAgICAgICAgICAgICAgICAgICAgZmxhZy5GbGFnLkludGVybmFsLmRvY1xuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgQ2hvaWNlX25hbWUuZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2VwdDpmbGFnLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29mX3RoZV9ncm91cFxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBncm91cCAtPiBzcHJpbnRmIFwiIFtyZXF1aXJlczogXFxcIiVzXFxcIl1cIiBncm91cClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW5kIG1ha2VfYW5vbnNfb3B0aW9uYWwgKGFub24gOiBBbm9ucy5HcmFtbWFyLnQpID1cbiAgICAgICAgICAgICAgQW5vbnMuR3JhbW1hci5tYXliZV9pZGVtcG90ZW50IGFub25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aFxuICAgICAgICAgICAgICB1c2FnZSA9IChmdW4gKCkgLT4gbWFrZV9hbm9uc19vcHRpb25hbCAodC51c2FnZSAoKSkpXG4gICAgICAgICAgICA7IGZsYWdzID1cbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgKHQuZmxhZ3MgKCkpIH5mOihmdW4gZmxhZ19pbnRlcm5hbCAtPlxuICAgICAgICAgICAgICAgICAgICAgZmxhZ19pbnRlcm5hbCB8PiBmaXhfbnVtX29jY3VycmVuY2VzIHw+IGZpeF9kb2MpKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBlbHNlIHRcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0LCBmaXhfZmxhZyB0KVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdCAobW9kdWxlIENob2ljZV9uYW1lKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPlxuICAgICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGNhbGxlZCB3aXRoIGR1cGxpY2F0ZSBuYW1lXCJcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIFslc2V4cF9vZjogQ2hvaWNlX25hbWUudF1cbiAgICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgICAgICB8IGBPayB0cyAtPlxuICAgICAgICAgIE1hcC5mb2xkIHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOnQgYWNjIC0+XG4gICAgICAgICAgICBtYXAyXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAocmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdClcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgeyByZXN1bHQgPSB2YWx1ZTsgaGFzX2FyZyB9IC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggaGFzX2FyZyB3aXRoXG4gICAgICAgICAgICAgICAgfCBmYWxzZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IHRydWUgLT4gKG5hbWUsIHZhbHVlKSA6OiBhY2MpKVxuICAgICAgICAgIHw+IG1hcCB+ZjooZnVuIHZhbHVlX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCBhcmdfY291bnRlciA9IExpc3QubGVuZ3RoIHZhbHVlX2xpc3QgaW5cbiAgICAgICAgICAgIGxldCBtaXNzaW5nX2ZsYWdfZXJyb3IgZm10ID1cbiAgICAgICAgICAgICAga3NwcmludGZcbiAgICAgICAgICAgICAgICAoZnVuIG1zZyAoKSAtPiBFcnJvciAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgKEVycm9yLm9mX3N0cmluZyBtc2cpKSlcbiAgICAgICAgICAgICAgICBmbXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9yZV90aGFuX29uZV9lcnJvciBwYXNzZWQgPVxuICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAhXCJDYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIG9mIHRoZXNlOiBcXG5cXFxuICAgICAgICAgICAgICAgICBcXCAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBwYXNzZWQgfmY6ZnN0KVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICBhbmQgc3VjY2Vzc19saXN0LCBlcnJvcl9saXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIHZhbHVlX2xpc3QgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBuYW1lLCBPayB2YWx1ZSAtPiBGaXJzdCAobmFtZSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgfCBuYW1lLCBFcnJvciBlcnIgLT4gU2Vjb25kIChuYW1lLCBlcnIpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIHN1Y2Nlc3NfbGlzdCB3aXRoXG4gICAgICAgICAgICB8IF8gOjogXyA6OiBfIGFzIHBhc3NlZCAtPiBtb3JlX3RoYW5fb25lX2Vycm9yIHBhc3NlZFxuICAgICAgICAgICAgfCBbIChfLCAodmFsdWUgOiBhKSkgXSAtPlxuICAgICAgICAgICAgICBpZiBhcmdfY291bnRlciA+IDFcbiAgICAgICAgICAgICAgdGhlbiBtb3JlX3RoYW5fb25lX2Vycm9yIHZhbHVlX2xpc3RcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRGVmYXVsdF90byAoXyA6IGEpIC0+ICh2YWx1ZSA6IGIpXG4gICAgICAgICAgICAgICAgICAgfCBSYWlzZSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gKFNvbWUgdmFsdWUgOiBiKSlcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGVycm9yX2xpc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBbIChuYW1lLCBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIF0gLT5cbiAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk5vdCBhbGwgZmxhZ3MgaW4gZ3JvdXAgXFxcIiVzXFxcIiBhcmUgZ2l2ZW46ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ2hvaWNlX25hbWUudG9fc3RyaW5nIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyKSkpKVxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gdmFsdWUgLT4gT2sgdmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gT2sgTm9uZVxuICAgICAgICAgICAgICAgICAgfCBSYWlzZSAtPlxuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nX2ZsYWdfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAhXCJNdXN0IHBhc3Mgb25lIG9mIHRoZXNlOlxcbiAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgICAgICAgIChNYXAua2V5cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAoKSkpKVxuICAgICAgICAgIHw+IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICA7O1xuXG4gICAgICBsZXQgY2hvb3NlX29uZVxuICAgICAgICAgICAgKHR5cGUgYSBiKVxuICAgICAgICAgICAgKHRzIDogYSBvcHRpb24gcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBjaG9vc2Vfb25lX25vbl9vcHRpb25hbFxuICAgICAgICAgIH5uZXdfYmVoYXZpb3I6ZmFsc2VcbiAgICAgICAgICB+aWZfbm90aGluZ19jaG9zZW5cbiAgICAgICAgICAoTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgbWFwX291dGNvbWUgdCB+ZjooZnVuIHsgUGFyc2luZ19vdXRjb21lLnJlc3VsdDsgaGFzX2FyZyB9IC0+XG4gICAgICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBPayAoU29tZSB2YWx1ZSkgLT4geyBQYXJzaW5nX291dGNvbWUucmVzdWx0ID0gT2sgdmFsdWU7IGhhc19hcmcgPSB0cnVlIH1cbiAgICAgICAgICAgICAgIHwgT2sgTm9uZSAtPlxuICAgICAgICAgICAgICAgICB7IGhhc19hcmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgICA7IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgKEVycm9yLm9mX3N0cmluZyBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZ1wiKSlcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfCBFcnJvciBfIGFzIHJlc3VsdCAtPiB7IGhhc19hcmc7IHJlc3VsdCB9KSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBDaG9vc2Vfb25lLmNob29zZV9vbmVcblxuICAgIGxldCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbCBsc3QgfmlmX25vdGhpbmdfY2hvc2VuID1cbiAgICAgIENob29zZV9vbmUuY2hvb3NlX29uZV9ub25fb3B0aW9uYWwgbHN0IH5pZl9ub3RoaW5nX2Nob3NlblxuICAgIDs7XG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lcyB0ID0gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgYXJnX25hbWVzIHQpXG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lIHQgPVxuICAgICAgbWF0Y2ggYXJnX25hbWVzIHQgd2l0aFxuICAgICAgfCBbIG5hbWUgXSAtPiBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+IHZhbHVlLCBuYW1lKVxuICAgICAgfCBuYW1lcyAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlthbmRfYXJnX25hbWVdIGV4cGVjdHMgZXhhY3RseSBvbmUgbmFtZSwgZ290XCIgfl86KG5hbWVzIDogc3RyaW5nIGxpc3QpXVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2UgeyBmbGFnczsgdXNhZ2UgPSBfOyBmIH0gYXJncyA9XG4gICAgICBsZXQgY21kbGluZSA9IENtZGxpbmUub2ZfbGlzdCBhcmdzIGluXG4gICAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICAgIHJ1blxuICAgICAgICB7IHN1bW1hcnkgPSBcIlwiXG4gICAgICAgIDsgcmVhZG1lID0gTm9uZVxuICAgICAgICA7IGZsYWdzID0gZmxhZ3MgKCkgfD4gRmxhZy5JbnRlcm5hbC5jcmVhdGVcbiAgICAgICAgOyBhbm9ucyA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmcgaW5cbiAgICAgICAgICAgICAgIGYgKClcbiAgICAgICAgICAgICAgID4+fCBmdW4gcGFyYW1zIGBQYXJzZV9hcmdzIGBSdW5fbWFpbiAtPlxuICAgICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBwYXJhbXMgKCkgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIG91dGNvbWUucmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgLT4gcmVzdWx0IDo9IFNvbWUgKEVycm9yIGVycilcbiAgICAgICAgICAgICAgIHwgT2sgeCAtPiByZXN1bHQgOj0gU29tZSAoT2sgeCkpXG4gICAgICAgIDsgdXNhZ2UgPSBBbm9ucy5HcmFtbWFyLnplcm9cbiAgICAgICAgfVxuICAgICAgICBVbml2X21hcC5lbXB0eVxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzOkZuLmlkXG4gICAgICAgIH5hcmdzOmNtZGxpbmVcbiAgICAgICAgfnBhdGg6UGF0aC5lbXB0eVxuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjooU29tZSB0cnVlKVxuICAgICAgICB+aGVscF90ZXh0OihsYXp5IFwiTm8gaGVscCBmb3IgcGFyc2luZ1wiKVxuICAgICAgICB+b25fZmFpbHVyZTpcbiAgICAgICAgICAoZnVuXG4gICAgICAgICAgICBleG5cbiAgICAgICAgICAgIH5mb3JfY29tcGxldGlvbjooXyA6IGJvb2wpXG4gICAgICAgICAgICB+cGF0aDooXyA6IFBhdGgudClcbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOihfIDogYm9vbCBvcHRpb24pXG4gICAgICAgICAgICAtPiByZXN1bHQgOj0gU29tZSAoRXJyb3IgKEVycm9yLm9mX2V4biBleG4pKSk7XG4gICAgICBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV0gIXJlc3VsdFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhIC0+ICdiKSBQYXJhbS50XG4gICAgdHlwZSAnYSBwYXJhbSA9ICdhIFBhcmFtLnRcblxuICAgIGxldCBhcHBseSA9IFBhcmFtLmFwcGx5XG4gICAgbGV0ICggKysgKSB0MSB0MiA9IFBhcmFtLm1hcDIgdDEgdDIgfmY6KGZ1biBmMSBmMiB4IC0+IGYyIChmMSB4KSlcbiAgICBsZXQgKCArPiApIHQxIHAyID0gUGFyYW0ubWFwMiB0MSBwMiB+ZjooZnVuIGYxIHAyIHggLT4gKGYxIHgpIHAyKVxuICAgIGxldCAoICs8ICkgdDEgcDIgPSBQYXJhbS5tYXAyIHAyIHQxIH5mOihmdW4gcDIgZjEgeCAtPiBmMSAoeCBwMikpXG4gICAgbGV0IHN0ZXAgZiA9IFBhcmFtLnJldHVybiBmXG5cbiAgICAoKiBJZGVhbGx5IHRoaXMgd291bGQgYmUgW2xldCBlbXB0eSA9IFBhcmFtLnJldHVybiBGbi5pZF0sIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoYXRcbiAgICAgICBkb2Vzbid0IGNvbXBpbGUgYmVjYXVzZSBvZiB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gKilcbiAgICBsZXQgZW1wdHkgPSBQYXJhbS5lbXB0eV9zcGVjXG4gICAgbGV0IGNvbnN0IHggPSBQYXJhbS5yZXR1cm4geFxuICAgIGxldCBtYXAgPSBQYXJhbS5tYXBcbiAgICBsZXQgd3JhcCBmIHQgPSBQYXJhbS5tYXAgdCB+ZjooZnVuIHJ1biBtYWluIC0+IGYgfnJ1biB+bWFpbilcbiAgICBsZXQgb2ZfcGFyYW0gcCA9IG1hcCBwIH5mOihmdW4gZiBrIC0+IGsgZilcbiAgICBsZXQgdG9fcGFyYW0gdCBtID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgbSlcbiAgICBsZXQgcGF0aCA6IFBhdGgudCBwYXJhbSA9IFBhcmFtLnBhdGhcbiAgICBsZXQgYXJncyA6IHN0cmluZyBsaXN0IHBhcmFtID0gUGFyYW0uYXJnc1xuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCBwYXJhbSA9IFBhcmFtLmhlbHBcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICAgICAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEFub25zXG5cbiAgICAgIHR5cGUgJ2EgYW5vbnMgPSAnYSB0XG5cbiAgICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgdDIgPSB0MlxuICAgICAgbGV0IHQzID0gdDNcbiAgICAgIGxldCB0NCA9IHQ0XG4gICAgICBsZXQgYW5vbiA9IFBhcmFtLmFub25cbiAgICBlbmRcblxuICAgIGxldCBlc2NhcGVfYW5vbiA9IFBhcmFtLmVzY2FwZV9hbm9uXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIHR5cGUgJ2EgZmxhZyA9ICdhIHRcblxuICAgICAgbGV0IG1hcF9mbGFnID0gbWFwX2ZsYWdcbiAgICAgIGxldCBlc2NhcGUgPSBlc2NhcGVcbiAgICAgIGxldCBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUgPSBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGVcbiAgICAgIGxldCBsaXN0ZWQgPSBsaXN0ZWRcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgPSBvbmVfb3JfbW9yZV9hc19saXN0XG4gICAgICBsZXQgbm9fYXJnID0gbm9fYXJnXG4gICAgICBsZXQgbm9fYXJnX3JlcXVpcmVkID0gbm9fYXJnX3JlcXVpcmVkXG4gICAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgICBsZXQgbm9fYXJnX3NvbWUgPSBub19hcmdfc29tZVxuICAgICAgbGV0IG9wdGlvbmFsID0gb3B0aW9uYWxcbiAgICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG4gICAgICBsZXQgZmxhZyA9IFBhcmFtLmZsYWdcbiAgICAgIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2MgPSBQYXJhbS5mbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcblxuICAgICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgUGFyYW0udFxuXG4gICAgICAgICAgbGV0IHJldHVybiA9IFBhcmFtLnJldHVyblxuICAgICAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHBhaXIgPSBQYXJhbS5ib3RoXG4gICAgZW5kXG5cbiAgICBsZXQgZmxhZ3Nfb2ZfYXJnc19leG4gYXJncyA9XG4gICAgICBMaXN0LmZvbGQgYXJncyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgc3BlYywgZG9jKSAtPlxuICAgICAgICBsZXQgZ2VuIGYgZmxhZ190eXBlID1cbiAgICAgICAgICBzdGVwIChmdW4gbSB4IC0+XG4gICAgICAgICAgICBmIHg7XG4gICAgICAgICAgICBtKVxuICAgICAgICAgICs+IFBhcmFtLmZsYWcgbmFtZSBmbGFnX3R5cGUgfmRvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgY2FsbCBmIGFyZ190eXBlID0gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mKSAoUGFyYW0ub3B0aW9uYWwgYXJnX3R5cGUpIGluXG4gICAgICAgIGxldCBzZXQgciBhcmdfdHlwZSA9IGNhbGwgKGZ1biB4IC0+IHIgOj0geCkgYXJnX3R5cGUgaW5cbiAgICAgICAgbGV0IHNldF9ib29sIHIgYiA9IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiByIDo9IGIpIFBhcmFtLm5vX2FyZyBpblxuICAgICAgICBhY2NcbiAgICAgICAgKytcbiAgICAgICAgbWF0Y2ggKHNwZWMgOiBTdGRsaWIuQXJnLnNwZWMpIHdpdGhcbiAgICAgICAgfCBVbml0IGYgLT4gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIGYgKCkpIFBhcmFtLm5vX2FyZ1xuICAgICAgICB8IFNldCByIC0+IHNldF9ib29sIHIgdHJ1ZVxuICAgICAgICB8IENsZWFyIHIgLT4gc2V0X2Jvb2wgciBmYWxzZVxuICAgICAgICB8IFN0cmluZyBmIC0+IGNhbGwgZiBzdHJpbmdcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT4gc2V0IHIgc3RyaW5nXG4gICAgICAgIHwgSW50IGYgLT4gY2FsbCBmIGludFxuICAgICAgICB8IFNldF9pbnQgciAtPiBzZXQgciBpbnRcbiAgICAgICAgfCBGbG9hdCBmIC0+IGNhbGwgZiBmbG9hdFxuICAgICAgICB8IFNldF9mbG9hdCByIC0+IHNldCByIGZsb2F0XG4gICAgICAgIHwgQm9vbCBmIC0+IGNhbGwgZiBib29sXG4gICAgICAgIHwgU3ltYm9sIChzeW1zLCBmKSAtPlxuICAgICAgICAgIGxldCBhcmdfdHlwZSA9XG4gICAgICAgICAgICBBcmdfdHlwZS5vZl9hbGlzdF9leG5cbiAgICAgICAgICAgICAgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2VcbiAgICAgICAgICAgICAgKExpc3QubWFwIHN5bXMgfmY6KGZ1biBzeW0gLT4gc3ltLCBzeW0pKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY2FsbCBmIGFyZ190eXBlXG4gICAgICAgIHwgUmVzdCBmIC0+IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZjooTGlzdC5pdGVyIH5mKSkgUGFyYW0uZXNjYXBlXG4gICAgICAgIHwgVHVwbGUgXyAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlR1cGxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKEV4cGFuZCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDA1LCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuRXhwYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKFJlc3RfYWxsIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTIsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5SZXN0X2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBGbGFnLkRlcHJlY2F0ZWRcbiAgICAgIGluY2x1ZGUgQW5vbnMuRGVwcmVjYXRlZFxuICAgIGVuZFxuXG4gICAgbGV0IGFyZ19uYW1lcyA9IFBhcmFtLmFyZ19uYW1lc1xuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gUGFyYW0uQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBQYXJhbS5jaG9vc2Vfb25lXG4gICAgbGV0IGNob29zZV9vbmVfbm9uX29wdGlvbmFsID0gUGFyYW0uY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICBsZXQgYW5kX2FyZ19uYW1lcyA9IFBhcmFtLmFuZF9hcmdfbmFtZXNcbiAgICBsZXQgYW5kX2FyZ19uYW1lID0gUGFyYW0uYW5kX2FyZ19uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBsaXN0IExhenkudFxuICAgIDsgYm9keSA6IChwYXRoOnN0cmluZyBsaXN0IC0+IHVuaXQpIG9wdGlvblxuICAgIH1cblxuICBsZXQgc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGUgdCA6IF8gU2hhcGUuR3JvdXBfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSB0LnJlYWRtZVxuICAgIDsgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzdWJjb21tYW5kX3RvX3NoYXBlKVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgYWJzX3BhdGggPSBTaGFwZS5Qcml2YXRlLmFic19wYXRoXG5sZXQgY29tcF9jd29yZCA9IEVudl92YXIuQ09NUF9DV09SRFxuXG5tb2R1bGUgRXhlYyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7ICgqIElmIFtwYXRoX3RvX2V4ZV0gaXMgcmVsYXRpdmUsIGludGVycHJldCB3LnIudC4gW3dvcmtpbmdfZGlyXSAqKVxuICAgICAgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGVudiA6IGVudiBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5FeGVjX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kID0gdC5jaGlsZF9zdWJjb21tYW5kXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEEgcHJveHkgY29tbWFuZCBpcyB0aGUgc3RydWN0dXJlIG9mIGFuIEV4ZWMgY29tbWFuZCBvYnRhaW5lZCBieSBydW5uaW5nIGl0IGluIGFcbiAgIHNwZWNpYWwgd2F5ICopXG5tb2R1bGUgUHJveHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBCYXNlIG9mIFNoYXBlLkJhc2VfaW5mby50XG4gICAgICB8IEdyb3VwIG9mICdhIFNoYXBlLkdyb3VwX2luZm8udFxuICAgICAgfCBFeGVjIG9mIFNoYXBlLkV4ZWNfaW5mby50XG4gICAgICB8IExhenkgb2YgJ2EgdCBMYXp5LnRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsga2luZCA6IHQgS2luZC50XG4gICAgfVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzZSBvZiBDb21tYW5kX2Jhc2UudFxuICB8IEdyb3VwIG9mIHQgR3JvdXAudFxuICB8IEV4ZWMgb2YgRXhlYy50XG4gIHwgTGF6eSBvZiB0IExhenkudFxuXG5sZXQgcmVjIHNleHBhYmxlX3NoYXBlIDogdCAtPiBTaGFwZS5TZXhwYWJsZS50ID0gZnVuY3Rpb25cbiAgfCBCYXNlIGJhc2UgLT4gQmFzZSAoQ29tbWFuZF9iYXNlLnNoYXBlIGJhc2UpXG4gIHwgRXhlYyBleGVjIC0+IEV4ZWMgKEV4ZWMuc2hhcGUgZXhlYylcbiAgfCBHcm91cCBncm91cCAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2V4cGFibGVfc2hhcGUgZ3JvdXApXG4gIHwgTGF6eSB0aHVuayAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzZXhwYWJsZV9zaGFwZSB0aHVuaylcbjs7XG5cbnR5cGUgKCdtYWluLCAncmVzdWx0KSBiYXNpY19zcGVjX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZ1xuICAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZylcbiAgLT4gKCdtYWluLCB1bml0IC0+ICdyZXN1bHQpIENvbW1hbmRfYmFzZS5TcGVjLnRcbiAgLT4gJ21haW5cbiAgLT4gdFxuXG5sZXQgZXh0ZW5kX2V4biB+bWVtIH5hZGQgbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGlmIG1lbSBtYXAga2V5XG4gIHRoZW4gZmFpbHdpdGhmIFwidGhlcmUgaXMgYWxyZWFkeSBhICVzIG5hbWVkICVzXCIgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSkga2V5ICgpO1xuICBhZGQgbWFwIH5rZXkgfmRhdGFcbjs7XG5cbmxldCBleHRlbmRfbWFwX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhIH5tZW06TWFwLm1lbSB+YWRkOk1hcC5zZXRcbjs7XG5cbmxldCBleHRlbmRfYWxpc3RfZXhuIGFsaXN0IGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG5cbiAgICBhbGlzdFxuICAgIGtleV90eXBlXG4gICAgfmtleVxuICAgIGRhdGFcbiAgICB+bWVtOihmdW4gYWxpc3Qga2V5IC0+IExpc3QuQXNzb2MubWVtIGFsaXN0IGtleSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuICAgIH5hZGQ6KGZ1biBhbGlzdCB+a2V5IH5kYXRhIC0+IExpc3QuQXNzb2MuYWRkIGFsaXN0IGtleSBkYXRhIH5lcXVhbDpTdHJpbmcuZXF1YWwpXG47O1xuXG5tb2R1bGUgQmFpbG91dF9kdW1wX2ZsYWcgPSBzdHJ1Y3RcbiAgbGV0IGFkZCBiYXNlIH5uYW1lIH5hbGlhc2VzIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCB+dGV4dCB+dGV4dF9zdW1tYXJ5ID1cbiAgICBsZXQgZmxhZ3MgPSBiYXNlLkNvbW1hbmRfYmFzZS5mbGFncyBpblxuICAgIGxldCBmbGFncyA9XG4gICAgICBleHRlbmRfbWFwX2V4blxuICAgICAgICBmbGFnc1xuICAgICAgICBLZXlfdHlwZS5GbGFnXG4gICAgICAgIH5rZXk6bmFtZVxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBGbGFnLk51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBpZ25vcmVcbiAgICAgICAgOyBhY3Rpb24gPSBQcmludF9pbmZvX2FuZF9xdWl0IChmdW4gZW52IC0+IHRleHQgZW52KVxuICAgICAgICA7IGRvYyA9IHNwcmludGYgXCIgcHJpbnQgJXMgYW5kIGV4aXRcIiB0ZXh0X3N1bW1hcnlcbiAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gYFByZWZpeFxuICAgICAgICB9XG4gICAgaW5cbiAgICB7IGJhc2Ugd2l0aCBmbGFncyB9XG4gIDs7XG5lbmRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgeyBDb21tYW5kX2Jhc2UuUGFyYW0udXNhZ2U7IGZsYWdzOyBmIH0gPVxuICBsZXQgZmxhZ3MgPSBmbGFncyAoKSBpblxuICBsZXQgdXNhZ2UgPSB1c2FnZSAoKSBpblxuICBsZXQgYW5vbnMgKCkgPVxuICAgIGxldCBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZyBpblxuICAgIGYgKClcbiAgICA+PnwgZnVuIHBhcmFtcyBgUGFyc2VfYXJncyAtPlxuICAgIGxldCBvdXRjb21lID0gcGFyYW1zICgpIGluXG4gICAgbWF0Y2ggb3V0Y29tZS5yZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgLT4gZGllIFwiJXNcIiAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnIpICgpXG4gICAgfCBPayB0aHVuayAtPiBmdW4gYFJ1bl9tYWluIC0+IHRodW5rICgpXG4gIGluXG4gIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlIGZsYWdzIGluXG4gIGxldCBiYXNlID0geyBDb21tYW5kX2Jhc2Uuc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3M7IGFub25zIH0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgYmFzZVxuICAgICAgfm5hbWU6XCItaGVscFwiXG4gICAgICB+YWxpYXNlczpbIFwiLT9cIiBdXG4gICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0taGVscFwiIF1cbiAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGlzIGhlbHAgdGV4dFwiXG4gICAgICB+dGV4dDooZnVuIGVudiAtPiBMYXp5LmZvcmNlIChFbnYuZmluZF9leG4gZW52IENvbW1hbmRfYmFzZS5oZWxwX2tleSkpXG4gIGluXG4gIEJhc2UgYmFzZVxuOztcblxubGV0IGJhc2ljX3NwZWMgfnN1bW1hcnkgP3JlYWRtZSBzcGVjIG1haW4gPVxuICBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIChDb21tYW5kX2Jhc2UuU3BlYy50b19wYXJhbSBzcGVjIG1haW4pXG47O1xuXG5sZXQgc3Vic19rZXkgOiAoc3RyaW5nICogdCkgbGlzdCBFbnYuS2V5LnQgPSBFbnYua2V5X2NyZWF0ZSBcInN1YmNvbW1hbmRzXCJcblxubGV0IGxhenlfZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCBzdWJjb21tYW5kcyA9XG4gICAgTGF6eS5tYXAgYWxpc3QgfmY6KGZ1biBhbGlzdCAtPlxuICAgICAgbGV0IGFsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAobmFtZSwgdCkgLT4gbm9ybWFsaXplIEtleV90eXBlLlN1YmNvbW1hbmQgbmFtZSwgdClcbiAgICAgIGluXG4gICAgICBtYXRjaCBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTdHJpbmcpIGFsaXN0IHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBzdWJjb21tYW5kcyBuYW1lZCAlc1wiIG5hbWUgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICAobWF0Y2ggcHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciB3aXRoXG4gICAgICAgICB8IFNvbWUgKCkgLT4gYWxpc3RcbiAgICAgICAgIHwgTm9uZSAtPiBNYXAudG9fYWxpc3QgbWFwKSlcbiAgaW5cbiAgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH1cbjs7XG5cbmxldCBncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IGFsaXN0ID1cbiAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gZiAoKSAtPiBTdHJpbmcuc3RyaXAgKGYgKCkpKSBpblxuICBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgKExhenkuZnJvbV92YWwgYWxpc3QpXG47O1xuXG5sZXQgZXhlYyB+c3VtbWFyeSA/cmVhZG1lID8oY2hpbGRfc3ViY29tbWFuZCA9IFtdKSA/ZW52IH5wYXRoX3RvX2V4ZSAoKSA9XG4gIGxldCB3b3JraW5nX2RpciA9XG4gICAgRmlsZW5hbWVfYmFzZS5kaXJuYW1lXG4gICAgQEBcbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgXyB8IGBSZWxhdGl2ZV90b19tZSBfIC0+IFN0ZGxpYi5TeXMuZXhlY3V0YWJsZV9uYW1lXG4gICAgfCBgUmVsYXRpdmVfdG9fYXJndjAgXyAtPiBTdGRsaWIuU3lzLmFyZ3YuKDApXG4gIGluXG4gIGxldCBwYXRoX3RvX2V4ZSA9XG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWVfYmFzZS5pc19hYnNvbHV0ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBBYnNvbHV0ZSBtdXN0IGJlIGFic29sdXRlXCJcbiAgICAgIGVsc2UgcFxuICAgIHwgYFJlbGF0aXZlX3RvX21lIHAgfCBgUmVsYXRpdmVfdG9fYXJndjAgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZV9iYXNlLmlzX3JlbGF0aXZlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYFJlbGF0aXZlX3RvX21lIG11c3QgYmUgcmVsYXRpdmVcIlxuICAgICAgZWxzZSBwXG4gIGluXG4gIEV4ZWMgeyBzdW1tYXJ5OyByZWFkbWU7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgY2hpbGRfc3ViY29tbWFuZDsgZW52IH1cbjs7XG5cbmxldCBvZl9sYXp5IHRodW5rID0gTGF6eSB0aHVua1xuXG5sZXQgcmVjIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgOiBQcm94eS50XG4gID1cbiAgbGV0IGtpbmQgPVxuICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgaW5cbiAgeyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IHBhdGhfdG9fc3ViY29tbWFuZDsgY2hpbGRfc3ViY29tbWFuZDsga2luZCB9XG5cbmFuZCBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gID1cbiAgbWF0Y2ggKHNleHBhYmxlIDogU2hhcGUuU2V4cGFibGUudCkgd2l0aFxuICB8IEJhc2UgYiAtPiBQcm94eS5LaW5kLkJhc2UgYlxuICB8IEV4ZWMgZSAtPiBQcm94eS5LaW5kLkV4ZWMgZVxuICB8IExhenkgbCAtPlxuICAgIFByb3h5LktpbmQuTGF6eVxuICAgICAgKExhenkubWFwIGwgfmY6KGZ1biBzZXhwYWJsZSAtPlxuICAgICAgICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQpKVxuICB8IEdyb3VwIGcgLT5cbiAgICBQcm94eS5LaW5kLkdyb3VwXG4gICAgICB7IGcgd2l0aFxuICAgICAgICBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgTGF6eS5tYXBcbiAgICAgICAgICAgIGcuc3ViY29tbWFuZHNcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6KGZ1biAoc3RyLCBzZXhwYWJsZSkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHBhdGhfdG9fc3ViY29tbWFuZCA9IHBhdGhfdG9fc3ViY29tbWFuZCBAIFsgc3RyIF0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IHByb3h5ID1cbiAgICAgICAgICAgICAgICAgICBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBzdHIsIHByb3h5KSlcbiAgICAgIH1cbjs7XG5cbm1vZHVsZSBWZXJzaW9uX2luZm8gKFZlcnNpb25fdXRpbCA6IFZlcnNpb25fdXRpbCkgPSBzdHJ1Y3RcbiAgbGV0IHByaW50X3ZlcnNpb24gfnZlcnNpb24gPSBwcmludF9lbmRsaW5lIChmb3JjZSB2ZXJzaW9uKVxuICBsZXQgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbyA9IHByaW50X2VuZGxpbmUgKGZvcmNlIGJ1aWxkX2luZm8pXG5cbiAgbGV0IGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8gPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcInByaW50IHZlcnNpb24gaW5mb3JtYXRpb25cIlxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLihcbiAgICAgICAgcmV0dXJuIChmdW4gdmVyc2lvbl9mbGFnIGJ1aWxkX2luZm9fZmxhZyAtPlxuICAgICAgICAgIGlmIGJ1aWxkX2luZm9fZmxhZ1xuICAgICAgICAgIHRoZW4gcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mb1xuICAgICAgICAgIGVsc2UgaWYgdmVyc2lvbl9mbGFnXG4gICAgICAgICAgdGhlbiBwcmludF92ZXJzaW9uIH52ZXJzaW9uXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICAgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbik7XG4gICAgICAgICAgZXhpdCAwKVxuICAgICAgICA8Kj4gZmxhZyBcIi12ZXJzaW9uXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgdGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWJ1aWxkLWluZm9cIiBub19hcmcgfmRvYzpcIiBwcmludCBidWlsZCBpbmZvIGZvciB0aGlzIGJ1aWxkXCIpXG4gIDs7XG5cbiAgbGV0IHJlYyBhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gdW52ZXJzaW9uZWQgPVxuICAgIG1hdGNoIHVudmVyc2lvbmVkIHdpdGhcbiAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItdmVyc2lvblwiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tdmVyc2lvblwiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwidGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIHZlcnNpb24pXG4gICAgICBpblxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItYnVpbGQtaW5mb1wiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tYnVpbGQtaW5mb1wiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwiaW5mbyBhYm91dCB0aGlzIGJ1aWxkXCJcbiAgICAgICAgICB+dGV4dDooZnVuIF8gLT4gZm9yY2UgYnVpbGRfaW5mbylcbiAgICAgIGluXG4gICAgICBCYXNlIGJhc2VcbiAgICB8IEdyb3VwIGdyb3VwIC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBncm91cC5Hcm91cC5zdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgc3ViY29tbWFuZHNcbiAgICAgICAgICAgIEtleV90eXBlLlN1YmNvbW1hbmRcbiAgICAgICAgICAgIH5rZXk6XCJ2ZXJzaW9uXCJcbiAgICAgICAgICAgIChjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IGdyb3VwIHdpdGggR3JvdXAuc3ViY29tbWFuZHMgfVxuICAgIHwgRXhlYyBleGVjIC0+IEV4ZWMgZXhlY1xuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gKExhenkuZm9yY2UgdGh1bmspKSlcbiAgOztcblxuICBsZXQgbm9ybWFsaXplX3ZlcnNpb25fbGluZXMgbGluZXMgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiIChMaXN0LnNvcnQgbGluZXMgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdmVyc2lvbiA9IGxhenkgKG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIFZlcnNpb25fdXRpbC52ZXJzaW9uX2xpc3QpXG5cbiAgbGV0IGRlZmF1bHRfYnVpbGRfaW5mbyA9XG4gICAgbGF6eVxuICAgICAgKCogbGF6eSB0byBhdm9pZCBsb2FkaW5nIGFsbCB0aGUgdGltZSB6b25lIHN0dWZmIGF0IHRvcGxldmVsICopXG4gICAgICAoVmVyc2lvbl91dGlsLnJlcHJpbnRfYnVpbGRfaW5mbyBWZXJzaW9uX3V0aWwuVGltZS5zZXhwX29mX3QpXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVmVyc2lvbl9pbmZvXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKHN0cnVjdFxuICAgICAgICBsZXQgdmVyc2lvbl9saXN0ID0gWyBcImhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcIjsgXCJzc2g6Ly9hL3BhdGhfOGJhZGYwMGRcIiBdXG4gICAgICAgIGxldCByZXByaW50X2J1aWxkX2luZm8gdG9fc2V4cCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwICgpKVxuXG4gICAgICAgIG1vZHVsZSBUaW1lID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICBlbmRcbiAgICAgIGVuZClcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IHZlcnNpb24gd2hlcmUgbXVsdGlwbGUgcmVwb3MgYXJlIHVzZWRcIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAgICAgaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlxuICAgICAgICBzc2g6Ly9hL3BhdGhfOGJhZGYwMGQgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IGJ1aWxkIGluZm9cIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbzoobGF6eSBcInNvbWUgYnVpbGQgaW5mb1wiKTtcbiAgICAgIFslZXhwZWN0IHt8IHNvbWUgYnVpbGQgaW5mbyB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgcmVjIHN1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2UgeCAtPiB4LnN1bW1hcnlcbiAgfCBHcm91cCB4IC0+IHguc3VtbWFyeVxuICB8IEV4ZWMgeCAtPiB4LnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IHN1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIENvbW1hbmRfYmFzZS5TcGVjXG5cbiAgbGV0IHBhdGggPSBtYXAgfmY6UGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gIG1vZHVsZSBTcGVjID0gU3BlYy5EZXByZWNhdGVkXG5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJ5XG5cbiAgbGV0IHJlYyBnZXRfZmxhZ19uYW1lcyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIGJhc2UgLT4gYmFzZS5Db21tYW5kX2Jhc2UuZmxhZ3MgfD4gTWFwLmtleXNcbiAgICB8IExhenkgdGh1bmsgLT4gZ2V0X2ZsYWdfbmFtZXMgKExhenkuZm9yY2UgdGh1bmspXG4gICAgfCBHcm91cCBfIHwgRXhlYyBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBoZWxwX3JlY3Vyc2l2ZSB+Y21kIH53aXRoX2ZsYWdzIH5leHBhbmRfZG90cyB0IHMgPVxuICAgIGxldCByZWMgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzID1cbiAgICAgIGxldCBuZXdfcyA9IHMgXiAoaWYgZXhwYW5kX2RvdHMgdGhlbiBjbWQgZWxzZSBcIi5cIikgXiBcIiBcIiBpblxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICAgICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgICAgbGV0IGJhc2VfaGVscCA9IHMgXiBjbWQsIHN1bW1hcnkgKEJhc2UgYmFzZSkgaW5cbiAgICAgICAgaWYgd2l0aF9mbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYmFzZV9oZWxwXG4gICAgICAgICAgOjogTGlzdC5tYXBcbiAgICAgICAgICAgICAgIH5mOihmdW4gKGZsYWcsIGgpIC0+IG5ld19zIF4gZmxhZywgaClcbiAgICAgICAgICAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgICAgICAgICAgIH5jb21wYXJlOkNvbW1hbmRfYmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgICAgICAgKENvbW1hbmRfYmFzZS5EZXByZWNhdGVkLmZsYWdzX2hlbHAgfmRpc3BsYXlfaGVscF9mbGFnczpmYWxzZSBiYXNlKSlcbiAgICAgICAgZWxzZSBbIGJhc2VfaGVscCBdXG4gICAgICB8IEdyb3VwIHsgc3VtbWFyeTsgc3ViY29tbWFuZHM7IHJlYWRtZSA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgICAgKHMgXiBjbWQsIHN1bW1hcnkpXG4gICAgICAgIDo6IChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6Q29tbWFuZF9iYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biAoY21kJywgdCkgLT4gaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQ6Y21kJyB0IG5ld19zKVxuICAgICAgICAgICApXG4gICAgICB8IEV4ZWMgXyAtPlxuICAgICAgICAoKiBDb21tYW5kLmV4ZWMgZG9lcyBub3Qgc3VwcG9ydCBkZXByZWNhdGVkIGNvbW1hbmRzICopXG4gICAgICAgIFtdXG4gICAgaW5cbiAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3VuaXggKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBzdHJpbmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyLlZlcnNpb25fdXRpbClcblxuICBtb2R1bGUgRm9yX3VuaXhfd2l0aF9jb21tYW5kX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBFbnZfdmFyLnQgPSBzdHJ1Y3RcbiAgICAoKiBXZSBmb3JjZSBhY2Nlc3MgdG8gZW52IHZhcnMgdG8gZ28gdGhyb3VnaCBbQ29tbWFuZF9lbnZfdmFyXSBzbyB0aGF0IHdlIGNhbiBrZWVwIGFuXG4gICAgICAgYWNjdXJhdGUgZW51bWVyYXRpb24gb2YgdGhlIHZhcmlhYmxlcyB3ZSB1c2UuICopXG5cbiAgICBpbmNsdWRlIEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXJcblxuICAgIG1vZHVsZSBVbml4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXhcblxuICAgICAgbGV0IHB1dGVudiB+a2V5IH5kYXRhID0gcHV0ZW52IH5rZXk6KEVudl92YXIudG9fc3RyaW5nIGtleSkgfmRhdGFcbiAgICAgIGxldCB1bnNldGVudiBrZXkgPSB1bnNldGVudiAoRW52X3Zhci50b19zdHJpbmcga2V5KVxuICAgICAgbGV0IHVuc2FmZV9nZXRlbnYga2V5ID0gdW5zYWZlX2dldGVudiAoRW52X3Zhci50b19zdHJpbmcga2V5KVxuXG4gICAgICBsZXQgY29udmVydF9lbnYgZW52ID1cbiAgICAgICAgbGV0IGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0ID1cbiAgICAgICAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGVudl92YXIsIHN0cikgLT4gRW52X3Zhci50b19zdHJpbmcgZW52X3Zhciwgc3RyKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBlbnYgd2l0aFxuICAgICAgICB8IGBSZXBsYWNlIGxpc3QgLT4gYFJlcGxhY2UgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBFeHRlbmQgbGlzdCAtPiBgRXh0ZW5kIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgT3ZlcnJpZGUgbGlzdCAtPiBgT3ZlcnJpZGUgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBSZXBsYWNlX3JhdyBfIGFzIHJlcGxhY2UgLT4gcmVwbGFjZVxuICAgICAgOztcblxuICAgICAgbGV0IGV4ZWMgfnByb2cgfmFyZ3YgP3VzZV9wYXRoID9lbnYgKCkgPVxuICAgICAgICBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52OihPcHRpb24ubWFwIGVudiB+Zjpjb252ZXJ0X2VudikgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfcHJvY2Vzc19lbnYgP3dvcmtpbmdfZGlyID9wcm9nX3NlYXJjaF9wYXRoID9hcmd2MCB+cHJvZyB+YXJncyB+ZW52ICgpID1cbiAgICAgICAgY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgP3dvcmtpbmdfZGlyXG4gICAgICAgICAgP3Byb2dfc2VhcmNoX3BhdGhcbiAgICAgICAgICA/YXJndjBcbiAgICAgICAgICB+cHJvZ1xuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfmVudjooY29udmVydF9lbnYgZW52KVxuICAgICAgICAgICgpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyXG5cbiAgKCogQ2xlYXIgdGhlIHNldHRpbmcgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgYXNzb2NpYXRlZCB3aXRoIGNvbW1hbmQtbGluZVxuICAgICBjb21wbGV0aW9uIGFuZCByZWN1cnNpdmUgaGVscCBzbyB0aGF0IHN1YnByb2Nlc3NlcyBkb24ndCBzZWUgdGhlbS5cblxuICAgICBVc2UgW3Vuc2FmZV9nZXRlbnZdIHNvIHNldHVpZC1yb290IHByb2dyYW1zIGNhbiBzdGlsbCByZWFkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICAgVGhlcmUgaXMgbm8gc2VjdXJpdHkgcmlzayBoZXJlIGJlY2F1c2UgdGhlIHZhbHVlcyBhcmUgb25seSB1c2VkIGFzIHRyaWdnZXJzIHRvIGR1bXBcbiAgICAgb3V0IGNvbW1hbmQgaW5mb3JtYXRpb24uICopXG4gIGxldCBnZXRlbnZfYW5kX2NsZWFyIHZhciA9XG4gICAgbGV0IHZhbHVlID0gVW5peC51bnNhZmVfZ2V0ZW52IHZhciBpblxuICAgIGlmIE9wdGlvbi5pc19zb21lIHZhbHVlIHRoZW4gVW5peC51bnNldGVudiB2YXI7XG4gICAgdmFsdWVcbiAgOztcblxuICBsZXQgbWF5YmVfY29tcF9jd29yZCAoKSA9IGdldGVudl9hbmRfY2xlYXIgY29tcF9jd29yZCB8PiBPcHRpb24ubWFwIH5mOkludC5vZl9zdHJpbmdcblxuICBsZXQgc2V0X2NvbXBfY3dvcmQgbmV3X3ZhbHVlID1cbiAgICBsZXQgbmV3X3ZhbHVlID0gSW50LnRvX3N0cmluZyBuZXdfdmFsdWUgaW5cbiAgICBVbml4LnB1dGVudiB+a2V5OmNvbXBfY3dvcmQgfmRhdGE6bmV3X3ZhbHVlXG4gIDs7XG5cbiAgbW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4ZWNcblxuICAgIGxldCBleGVjX3dpdGhfYXJncyB0IH5hcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICBsZXQgcHJvZyA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlIGluXG4gICAgICBsZXQgYXJncyA9IHQuY2hpbGRfc3ViY29tbWFuZCBAIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSB0LmVudiBpblxuICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfbmV3X2NvbXBfY3dvcmQgfmY6KGZ1biBuIC0+XG4gICAgICAgICgqIFRoZSBsb2dpYyBmb3IgdHJhY2tpbmcgW21heWJlX25ld19jb21wX2N3b3JkXSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHdoZXRoZXJcbiAgICAgICAgICAgdGhpcyBleGVjIHNwZWNpZmllcyBhIGNoaWxkIHN1YmNvbW1hbmQuIElmIGl0IGRvZXMsIENPTVBfQ1dPUkQgbmVlZHMgdG8gYmUgc2V0XG4gICAgICAgICAgIGhpZ2hlciB0byBhY2NvdW50IGZvciB0aGUgYXJndW1lbnRzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hpbGQgc3ViY29tbWFuZC4gKilcbiAgICAgICAgc2V0X2NvbXBfY3dvcmQgKG4gKyBMaXN0Lmxlbmd0aCB0LmNoaWxkX3N1YmNvbW1hbmQpKTtcbiAgICAgIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgICAgICAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5Vbml4LmV4ZWMgP2VudiB+cHJvZyB+YXJndjoocHJvZyA6OiBhcmdzKSAoKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYXBlLlNleHBhYmxlXG5cbiAgICBsZXQgcmVhZF9zdGRvdXRfYW5kX3N0ZGVyciAocHJvY2Vzc19pbmZvIDogVW5peC5Qcm9jZXNzX2luZm8udCkgPVxuICAgICAgKCogV2UgbmVlZCB0byByZWFkIGVhY2ggb2Ygc3Rkb3V0IGFuZCBzdGRlcnIgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgdG8gYXZvaWQgZGVhZGxvY2tzXG4gICAgICAgICBpZiB0aGUgY2hpbGQgcHJvY2VzcyBkZWNpZGVzIHRvIHdhaXQgZm9yIGEgcmVhZCBvbiBvbmUgYmVmb3JlIGNsb3NpbmcgdGhlIG90aGVyLlxuICAgICAgICAgQnVmZmVyaW5nIG1heSBoaWRlIHRoaXMgcHJvYmxlbSB1bnRpbCBvdXRwdXQgaXMgXCJzdWZmaWNpZW50bHkgbGFyZ2VcIi4gKilcbiAgICAgIGxldCBzdGFydF9yZWFkaW5nIGRlc2NyIGluZm8gPVxuICAgICAgICBsZXQgb3V0cHV0ID0gcmVmIE5vbmUgaW5cbiAgICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgICAgVGhyZWFkLmNyZWF0ZVxuICAgICAgICAgICAgfm9uX3VuY2F1Z2h0X2V4bjpgUHJpbnRfdG9fc3RkZXJyXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICBkZXNjciB8PiBVbml4LmluX2NoYW5uZWxfb2ZfZGVzY3IgfD4gSW5fY2hhbm5lbC5pbnB1dF9hbGwpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgb3V0cHV0IDo9IFNvbWUgcmVzdWx0KVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJlYWQuam9pbiB0aHJlYWQ7XG4gICAgICAgICAgVW5peC5jbG9zZSBkZXNjcjtcbiAgICAgICAgICBtYXRjaCAhb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUcgZmFpbGVkIHRvIHJlYWRcIiAoaW5mbyA6IEluZm8udCldXG4gICAgICAgICAgfCBTb21lIChPayBvdXRwdXQpIC0+IG91dHB1dFxuICAgICAgICAgIHwgU29tZSAoRXJyb3IgZXhuKSAtPiByYWlzZSBleG4pXG4gICAgICBpblxuICAgICAgKCogV2UgbWlnaHQgaGFuZyBmb3JldmVyIHRyeWluZyB0byBqb2luIHRoZSByZWFkaW5nIHRocmVhZHMgaWYgdGhlIGNoaWxkIHByb2Nlc3Mga2VlcHNcbiAgICAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3Igb3Blbi4gTm90IGhhbmRsaW5nIHRoaXMgYmVjYXVzZSBJIHRoaW5rIHdlJ3ZlIG5ldmVyIHNlZW4gaXRcbiAgICAgICAgIGluIHRoZSB3aWxkIGRlc3BpdGUgcnVubmluZyB2dWxuZXJhYmxlIGNvZGUgZm9yIHllYXJzLiAqKVxuICAgICAgKCogV2UgaGF2ZSB0byBzdGFydCBib3RoIHRocmVhZHMgYmVmb3JlIGpvaW5pbmcgYW55IG9mIHRoZW0uICopXG4gICAgICBsZXQgZmluaXNoX3N0ZG91dCA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZG91dCAoSW5mby5vZl9zdHJpbmcgXCJzdGRvdXRcIikgaW5cbiAgICAgIGxldCBmaW5pc2hfc3RkZXJyID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3RkZXJyIChJbmZvLm9mX3N0cmluZyBcInN0ZGVyclwiKSBpblxuICAgICAgU3RhZ2VkLnVuc3RhZ2UgZmluaXNoX3N0ZG91dCAoKSwgU3RhZ2VkLnVuc3RhZ2UgZmluaXNoX3N0ZGVyciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCA9XG4gICAgICBsZXQgcHJvY2Vzc19pbmZvID1cbiAgICAgICAgVW5peC5jcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5wcm9nOihhYnNfcGF0aCB+ZGlyOndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlKVxuICAgICAgICAgIH5hcmdzOmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+ZW52OlxuICAgICAgICAgICAgKGxldCBoZWxwX3NleHAgPVxuICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zIHw+IFNldC5zZXhwX29mX21fX3QgKG1vZHVsZSBJbnQpIHw+IFNleHAudG9fc3RyaW5nXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBgRXh0ZW5kIFsgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQLCBoZWxwX3NleHAgXSlcbiAgICAgIGluXG4gICAgICBVbml4LmNsb3NlIHByb2Nlc3NfaW5mby5zdGRpbjtcbiAgICAgIGxldCBzdGRvdXQsIHN0ZGVyciA9IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgcHJvY2Vzc19pbmZvIGluXG4gICAgICBVbml4LndhaXQgcHJvY2Vzc19pbmZvLnBpZDtcbiAgICAgICgqIE5vdyB3ZSd2ZSBraWxsZWQgYWxsIHRoZSBwcm9jZXNzZXMgYW5kIHRocmVhZHMgd2UgbWFkZS4gKilcbiAgICAgIG1hdGNoIHN0ZG91dCB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IFZlcnNpb25lZC50X29mX3NleHAgfD4gb2ZfdmVyc2lvbmVkIHdpdGhcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcImNhbm5vdCBwYXJzZSBjb21tYW5kIHNoYXBlXCJcbiAgICAgICAgICAgICAgfl86KGV4biA6IGV4bilcbiAgICAgICAgICAgICAgKHN0ZG91dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgKHN0ZGVyciA6IHN0cmluZyldXG4gICAgICB8IHQgLT4gdFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmQgKHQgOiB0KSB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICAgIG1hdGNoIHBhdGhfdG9fc3ViY29tbWFuZCB3aXRoXG4gICAgICB8IFtdIC0+IHRcbiAgICAgIHwgc3ViIDo6IHN1YnMgLT5cbiAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgfCBCYXNlIF8gLT4gZmFpbHdpdGhmIFwidW5leHBlY3RlZCBzdWJjb21tYW5kICVTXCIgc3ViICgpXG4gICAgICAgICB8IExhenkgdGh1bmsgLT4gZmluZCAoTGF6eS5mb3JjZSB0aHVuaykgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgfCBFeGVjIHsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBjaGlsZF9zdWJjb21tYW5kOyBfIH0gLT5cbiAgICAgICAgICAgZmluZFxuICAgICAgICAgICAgIChvZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kKVxuICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6KHN1YiA6OiAoc3VicyBAIGNoaWxkX3N1YmNvbW1hbmQpKVxuICAgICAgICAgfCBHcm91cCBnIC0+XG4gICAgICAgICAgIChtYXRjaCBMaXN0LkFzc29jLmZpbmQgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcykgfmVxdWFsOlN0cmluZy5lcXVhbCBzdWIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcInVua25vd24gc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgICAgfCBTb21lIHQgLT4gZmluZCB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6c3VicykpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZCA9XG4gICAgU2V4cGFibGUub2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZFxuICAgIHw+IHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6W11cbiAgOztcblxuICBsZXQgcmVjIHNoYXBlX29mX3Byb3h5IHByb3h5IDogU2hhcGUudCA9IHNoYXBlX29mX3Byb3h5X2tpbmQgcHJveHkuUHJveHkua2luZFxuXG4gIGFuZCBzaGFwZV9vZl9leGUgKCkgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpciA9XG4gICAgc2hhcGVfb2ZfcHJveHkgKHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZClcblxuICBhbmQgc2hhcGVfb2ZfcHJveHlfa2luZCBraW5kID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyBiXG4gICAgfCBMYXp5IGwgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2hhcGVfb2ZfcHJveHlfa2luZCBsKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgR3JvdXBcbiAgICAgICAgeyBnIHdpdGhcbiAgICAgICAgICBzdWJjb21tYW5kcyA9IExhenkubWFwIGcuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mOnNoYXBlX29mX3Byb3h5KVxuICAgICAgICB9XG4gICAgfCBFeGVjICh7IGNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgOztcblxuICBsZXQgcmVjIHNoYXBlIHQgOiBTaGFwZS50ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyAoQ29tbWFuZF9iYXNlLnNoYXBlIGIpXG4gICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzaGFwZSBnKVxuICAgIHwgRXhlYyAoeyBFeGVjLmNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChFeGVjLnNoYXBlIGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICAgIHwgTGF6eSB0aHVuayAtPiBzaGFwZSAoTGF6eS5mb3JjZSB0aHVuaylcbiAgOztcblxuICBsZXQgZ2F0aGVyX2hlbHAgfnJlY3Vyc2l2ZSB+ZmxhZ3MgfmV4cGFuZF9kb3RzIHNoYXBlID1cbiAgICBsZXQgcmVjIGxvb3AgcGF0aCBhY2Mgc2hhcGUgPVxuICAgICAgbGV0IHN0cmluZ19vZl9wYXRoID0gaWYgZXhwYW5kX2RvdHMgdGhlbiBQYXRoLnRvX3N0cmluZyBlbHNlIFBhdGgudG9fc3RyaW5nX2RvdHMgaW5cbiAgICAgIGxldCBnYXRoZXJfZ3JvdXAgcGF0aCBhY2Mgc3ViY29tbWFuZHMgPVxuICAgICAgICBsZXQgZmlsdGVyZWRfc3ViY29tbWFuZHMgPVxuICAgICAgICAgICgqIE9ubHkgc2hvdyB0aGUgW2hlbHBdIHN1YmNvbW1hbmQgYXQgdG9wLWxldmVsLiAqKVxuICAgICAgICAgIGlmIFBhdGguaXNfZW1wdHkgcGF0aFxuICAgICAgICAgIHRoZW4gc3ViY29tbWFuZHNcbiAgICAgICAgICBlbHNlIExpc3QuQXNzb2MucmVtb3ZlIH5lcXVhbDpTdHJpbmcuKCA9ICkgc3ViY29tbWFuZHMgXCJoZWxwXCJcbiAgICAgICAgaW5cbiAgICAgICAgZmlsdGVyZWRfc3ViY29tbWFuZHNcbiAgICAgICAgfD4gTGlzdC5zdGFibGVfc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBoZWxwX3NjcmVlbl9jb21wYXJlIChmc3QgYSkgKGZzdCBiKSlcbiAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyAoc3ViY29tbWFuZCwgc2hhcGUpIC0+XG4gICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kIGluXG4gICAgICAgICAgbGV0IG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIGluXG4gICAgICAgICAgbGV0IGRvYyA9IFNoYXBlLmdldF9zdW1tYXJ5IHNoYXBlIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHsgU2hhcGUuRmxhZ19pbmZvLm5hbWU7IGRvYzsgYWxpYXNlcyA9IFtdIH0gOjogYWNjIGluXG4gICAgICAgICAgaWYgcmVjdXJzaXZlIHRoZW4gbG9vcCBwYXRoIGFjYyBzaGFwZSBlbHNlIGFjYylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgICB8IEV4ZWMgKF8sIHNoYXBlKSAtPlxuICAgICAgICAoKiBJZiB0aGUgZXhlY3V0YWJsZSBiZWluZyBjYWxsZWQgZG9lc24ndCB1c2UgW0NvcmUuQ29tbWFuZF0sIHRoZW4gc2V4cCBleHRyYWN0aW9uXG4gICAgICAgICAgIHdpbGwgZmFpbC4gKilcbiAgICAgICAgKHRyeSBsb29wIHBhdGggYWNjIChzaGFwZSAoKSkgd2l0aFxuICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIHwgR3JvdXAgZyAtPiBnYXRoZXJfZ3JvdXAgcGF0aCBhY2MgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcylcbiAgICAgIHwgQmFzaWMgYiAtPlxuICAgICAgICBpZiBmbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYi5mbGFnc1xuICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZm10IC0+IFN0cmluZy4oIDw+ICkgZm10Lm5hbWUgXCJbLWhlbHBdXCIpXG4gICAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBmbXQgLT5cbiAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpmbXQubmFtZSBpblxuICAgICAgICAgICAgbGV0IGZtdCA9IHsgZm10IHdpdGggbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggfSBpblxuICAgICAgICAgICAgZm10IDo6IGFjYylcbiAgICAgICAgZWxzZSBhY2NcbiAgICAgIHwgTGF6eSB0aHVuayAtPiBsb29wIHBhdGggYWNjIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIGluXG4gICAgbG9vcCBQYXRoLmVtcHR5IFtdIHNoYXBlIHw+IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IH5mbGFncyB+cGF0aCB+c3VtbWFyeSB+cmVhZG1lIH5mb3JtYXRfbGlzdCA9XG4gICAgdW5wYXJhZ3JhcGhzXG4gICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICBbIFNvbWUgc3VtbWFyeVxuICAgICAgICAgOyBTb21lIChTdHJpbmcuY29uY2F0IFsgXCIgIFwiOyBQYXRoLnRvX3N0cmluZyBwYXRoOyBcIiBTVUJDT01NQU5EXCIgXSlcbiAgICAgICAgIDsgcmVhZG1lXG4gICAgICAgICA7IFNvbWUgKGlmIGZsYWdzIHRoZW4gXCI9PT0gc3ViY29tbWFuZHMgYW5kIGZsYWdzID09PVwiIGVsc2UgXCI9PT0gc3ViY29tbWFuZHMgPT09XCIpXG4gICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBmb3JtYXRfbGlzdClcbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSA9XG4gICAgbGV0IGZvcm1hdF9saXN0ID0gZ2F0aGVyX2hlbHAgfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlIHNoYXBlIGluXG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgQmFzaWMgYiAtPlxuICAgICAgbGV0IHVzYWdlID0gU2hhcGUuQmFzZV9pbmZvLmdldF91c2FnZSBiIGluXG4gICAgICB1bnBhcmFncmFwaHNcbiAgICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgICBbIFNvbWUgYi5zdW1tYXJ5XG4gICAgICAgICAgIDsgU29tZSAoXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIFwiIF4gdXNhZ2UpXG4gICAgICAgICAgIDsgYi5yZWFkbWVcbiAgICAgICAgICAgOyBTb21lIFwiPT09IGZsYWdzID09PVwiXG4gICAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGIuZmxhZ3MpXG4gICAgICAgICAgIF0pXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTpnLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTpnLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBFeGVjIChlLCBfKSAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6ZS5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6ZS5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgTGF6eSB0aHVuayAtPiBoZWxwX2Zvcl9zaGFwZSAoTGF6eS5mb3JjZSB0aHVuaykgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmVcbiAgOztcblxuICBsZXQgaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUgPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcImV4cGxhaW4gYSBnaXZlbiBzdWJjb21tYW5kIChwZXJoYXBzIHJlY3Vyc2l2ZWx5KVwiXG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uKFxuICAgICAgICByZXR1cm4gKGZ1biByZWN1cnNpdmUgZmxhZ3MgZXhwYW5kX2RvdHMgcGF0aCAoZW52IDogRW52LnQpIGNtZF9vcHQgKCkgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBtYXRjaCBFbnYuZmluZCBlbnYgc3Vic19rZXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHN1YnMgLT4gc3Vic1xuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgKCogbWFpbnRhaW5lZCBieSBbZGlzcGF0Y2hdICopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGgucG9wX2hlbHAgcGF0aCBpblxuICAgICAgICAgICAgT3B0aW9uLmZvbGQgY21kX29wdCB+aW5pdDpwYXRoIH5mOihmdW4gcGF0aCBzdWJjb21tYW5kIC0+XG4gICAgICAgICAgICAgIFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcGF0aCwgc2hhcGUgPVxuICAgICAgICAgICAgbWF0Y2ggY21kX29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjpzaGFwZSB8PiBMYXp5LmZyb21fdmFsIGluXG4gICAgICAgICAgICAgIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIGluXG4gICAgICAgICAgICAgIHBhdGgsIFNoYXBlLkdyb3VwIHsgcmVhZG1lOyBzdW1tYXJ5OyBzdWJjb21tYW5kcyB9XG4gICAgICAgICAgICB8IFNvbWUgY21kIC0+XG4gICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICBsb29rdXBfZXhwYW5kXG4gICAgICAgICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YnMgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpKVxuICAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgIFN1YmNvbW1hbmRcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAgICBcInVua25vd24gc3ViY29tbWFuZCAlcyBmb3IgY29tbWFuZCAlczogJXNcIlxuICAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgIChQYXRoLnRvX3N0cmluZyBwYXRoKVxuICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBPayAocG9zc2libHlfZXhwYW5kZWRfbmFtZSwgdCkgLT5cbiAgICAgICAgICAgICAgICAgKCogRml4IHRoZSB1bmV4cGFuZGVkIHZhbHVlICopXG4gICAgICAgICAgICAgICAgIGxldCBwYXRoID1cbiAgICAgICAgICAgICAgICAgICBQYXRoLnJlcGxhY2VfZmlyc3QgfmZyb206Y21kIH50b186cG9zc2libHlfZXhwYW5kZWRfbmFtZSBwYXRoXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHBhdGgsIHNoYXBlIHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmludF9lbmRsaW5lIChoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cykpXG4gICAgICAgIDwqPiBmbGFnIFwiLXJlY3Vyc2l2ZVwiIG5vX2FyZyB+ZG9jOlwiIHNob3cgc3ViY29tbWFuZHMgb2Ygc3ViY29tbWFuZHMsIGV0Yy5cIlxuICAgICAgICA8Kj4gZmxhZyBcIi1mbGFnc1wiIG5vX2FyZyB+ZG9jOlwiIHNob3cgZmxhZ3MgYXMgd2VsbCBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWV4cGFuZC1kb3RzXCIgbm9fYXJnIH5kb2M6XCIgZXhwYW5kIHN1YmNvbW1hbmRzIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgPCo+IHBhdGhcbiAgICAgICAgPCo+IGVudlxuICAgICAgICA8Kj4gYW5vbiAobWF5YmUgKFwiU1VCQ09NTUFORFwiICU6IHN0cmluZykpKVxuICA7O1xuXG4gICgqIFRoaXMgc2NyaXB0IHdvcmtzIGluIGJvdGggYmFzaCAodmlhIHJlYWRhcnJheSkgYW5kIHpzaCAodmlhIHJlYWQgLUEpLiAgSWYgeW91IGNoYW5nZVxuICAgICBpdCwgcGxlYXNlIHRlc3QgaW4gYm90aCBiYXNoIGFuZCB6c2guICBJdCBkb2VzIG5vdCB3b3JrIHRjc2ggKGRpZmZlcmVudCBmdW5jdGlvblxuICAgICBzeW50YXgpLiAqKVxuICBsZXQgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCkgPVxuICAgIGxldCBmbmFtZSA9IHNwcmludGYgXCJfanNhdXRvY29tXyVzXCIgKFBpZC50b19zdHJpbmcgKFVuaXguZ2V0cGlkICgpKSkgaW5cbiAgICBsZXQgYXJndl8wID0gU3RkbGliLlN5cy5hcmd2LigwKSBpblxuICAgIHByaW50ZlxuICAgICAgXCJmdW5jdGlvbiAlcyB7XFxuXFxcbiAgICAgIFxcICBleHBvcnQgQ09NUF9DV09SRFxcblxcXG4gICAgICBcXCAgQ09NUF9XT1JEU1swXT0lc1xcblxcXG4gICAgICBcXCAgaWYgdHlwZSByZWFkYXJyYXkgPiAvZGV2L251bGxcXG5cXFxuICAgICAgXFwgIHRoZW4gcmVhZGFycmF5IC10IENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZWxzZSBJRlM9XFxcIlxcblxcXG4gICAgICAgXFxcIiByZWFkIC1kIFxcXCJcXFwiIC1BIENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZmlcXG5cXFxuICAgICAgIH1cXG5cXFxuICAgICAgIGNvbXBsZXRlIC1GICVzICVzXFxuXFxcbiAgICAgICAlIVwiXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gIDs7XG5cbiAgbGV0IGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICBTZXQuaW50ZXIgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zIHN1cHBvcnRlZF92ZXJzaW9uc1xuICAgIHw+IFNldC5tYXhfZWx0XG4gICAgfD4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiQ291bGRuJ3QgY2hvb3NlIGEgc3VwcG9ydGVkIGhlbHAgb3V0cHV0IHZlcnNpb24gZm9yIENvbW1hbmQuZXhlYyBmcm9tIHRoZSBnaXZlbiBcXFxuICAgICAgICAgc3VwcG9ydGVkIHZlcnNpb25zLlwiXG4gICAgICAgIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9uc1xuICAgICAgICAoU2V0LnNleHBfb2ZfbV9fdCAobW9kdWxlIEludCkpXG4gICAgICB8PiBFcnJvci5yYWlzZVxuICAgIHwgU29tZSB2ZXJzaW9uX3RvX3VzZSAtPlxuICAgICAgc2V4cGFibGVfc2hhcGUgdFxuICAgICAgfD4gU2V4cGFibGUuZmluZCB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICB8PiBTZXhwYWJsZS50b192ZXJzaW9uZWQgfnZlcnNpb25fdG9fdXNlXG4gICAgICB8PiBTZXhwYWJsZS5WZXJzaW9uZWQuc2V4cF9vZl90XG4gICAgICB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgfD4gcHJpbnRfc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2ID1cbiAgICBtYXRjaCBhcmd2IHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibWlzc2luZyBleGVjdXRhYmxlIG5hbWVcIlxuICAgIHwgY21kIDo6IGFyZ3MgLT5cbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCkgfmY6KGZ1biB2ZXJzaW9uIC0+XG4gICAgICAgIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgICAgICAgIFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgdmVyc2lvbiB8PiBTZXQubV9fdF9vZl9zZXhwIChtb2R1bGUgSW50KVxuICAgICAgICBpblxuICAgICAgICBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZDphcmdzO1xuICAgICAgICBleGl0IDApO1xuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0gpIH5mOihmdW4gXyAtPlxuICAgICAgICBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKTtcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIGNtZCwgYXJnc1xuICA7O1xuXG4gIGxldCBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyA9XG4gICAgbGV0IG1heWJlX2NvbXBfY3dvcmQgPSBtYXliZV9jb21wX2N3b3JkICgpIGluXG4gICAgbGV0IGFyZ3MgPVxuICAgICAgbWF0Y2ggbWF5YmVfY29tcF9jd29yZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gQ21kbGluZS5vZl9saXN0IGFyZ3NcbiAgICAgIHwgU29tZSBjb21wX2N3b3JkIC0+XG4gICAgICAgIGxldCBhcmdzID0gTGlzdC50YWtlIChhcmdzIEAgWyBcIlwiIF0pIGNvbXBfY3dvcmQgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6Q21kbGluZS5OaWwgfmY6KGZ1biBhcmcgYXJncyAtPlxuICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgQ21kbGluZS5OaWwgLT4gQ21kbGluZS5Db21wbGV0ZSBhcmdcbiAgICAgICAgICB8IF8gLT4gQ21kbGluZS5Db25zIChhcmcsIGFyZ3MpKVxuICAgIGluXG4gICAgUGF0aC5jcmVhdGUgfnBhdGhfdG9fZXhlOmNtZCwgYXJncywgbWF5YmVfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCByZWMgYWRkX2hlbHBfc3ViY29tbWFuZHMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBfIGFzIHQgLT4gdFxuICAgIHwgRXhlYyBfIGFzIHQgLT4gdFxuICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH0gLT5cbiAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgIExhenkubWFwIHN1YmNvbW1hbmRzIH5mOihmdW4gc3ViY29tbWFuZHMgLT5cbiAgICAgICAgICBleHRlbmRfYWxpc3RfZXhuXG4gICAgICAgICAgICAoTGlzdC5Bc3NvYy5tYXAgc3ViY29tbWFuZHMgfmY6YWRkX2hlbHBfc3ViY29tbWFuZHMpXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwiaGVscFwiXG4gICAgICAgICAgICAoaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUpKVxuICAgICAgaW5cbiAgICAgIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG4gICAgfCBMYXp5IHRodW5rIC0+IExhenkgKGxhenkgKGFkZF9oZWxwX3N1YmNvbW1hbmRzIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggPVxuICAgIE9wdGlvbi52YWx1ZV9tYXAgZXh0ZW5kIH5kZWZhdWx0OmFyZ3MgfmY6KGZ1biBmIC0+XG4gICAgICBDbWRsaW5lLmV4dGVuZCBhcmdzIH5leHRlbmQ6ZiB+cGF0aClcbiAgOztcblxuICBsZXQgcmVjIGRpc3BhdGNoXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBlbnZcbiAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgICB+YXJnc1xuICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICBsZXQgdCA9IExhenkuZm9yY2UgdGh1bmsgaW5cbiAgICAgIGRpc3BhdGNoXG4gICAgICAgIHRcbiAgICAgICAgZW52XG4gICAgICAgIH5leHRlbmRcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBhcmdzID0gbWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCBpblxuICAgICAgbGV0IGhlbHBfdGV4dCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoaGVscF9mb3Jfc2hhcGUgKHNoYXBlIHQpIHBhdGggfnJlY3Vyc2l2ZTpmYWxzZSB+ZmxhZ3M6dHJ1ZSB+ZXhwYW5kX2RvdHM6ZmFsc2UpXG4gICAgICBpblxuICAgICAgQ29tbWFuZF9iYXNlLnJ1blxuICAgICAgICBiYXNlXG4gICAgICAgIGVudlxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfm9uX2ZhaWx1cmU6Q29tbWFuZF9iYXNlLnJ1bl9leG5cbiAgICB8IEV4ZWMgZXhlYyAtPlxuICAgICAgbGV0IGFyZ3MgPSBDbWRsaW5lLnRvX2xpc3QgKG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGgpIGluXG4gICAgICBFeGVjLmV4ZWNfd2l0aF9hcmdzIH5hcmdzIGV4ZWMgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgfCBHcm91cCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9IGFzIGdyb3VwKSAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgbGV0IGVudiA9IEVudi5zZXQgZW52IH5rZXk6c3Vic19rZXkgfmRhdGE6KExhenkuZm9yY2Ugc3VicykgaW5cbiAgICAgIGxldCBkaWVfc2hvd2luZ19oZWxwIG1zZyA9XG4gICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgdGhlbiBleGl0IDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIlc1xcbiUhXCJcbiAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9KSlcbiAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgIGRpZSBcIiVzXCIgbXNnICgpKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgICBsZXQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBPcHRpb24ubWFwIH5mOkludC5wcmVkIG1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCBza2lwIHJlc3QgPSBwYXJzZV9ncm91cCByZXN0IH5tYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgcmVzb2x2ZSBzdWIgcmVzdCA9XG4gICAgICAgICAgbGV0IHN1YnMgPSBMaXN0LkFzc29jLm1hcCAoTGF6eS5mb3JjZSBzdWJzKSB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkgaW5cbiAgICAgICAgICBtYXRjaCBsb29rdXBfZXhwYW5kIHN1YnMgc3ViIFN1YmNvbW1hbmQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgbXNnIC0+IGRpZV9zaG93aW5nX2hlbHAgbXNnXG4gICAgICAgICAgfCBPayAoc3ViLCB0KSAtPlxuICAgICAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICBlbnZcbiAgICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICAgIH5wYXRoOihQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOnN1YilcbiAgICAgICAgICAgICAgfmFyZ3M6cmVzdFxuICAgICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChhcmdzIDogQ21kbGluZS50KSB3aXRoXG4gICAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBkaWVfc2hvd2luZ19oZWxwXG4gICAgICAgICAgICAgICAoc3ByaW50ZiBcIm1pc3Npbmcgc3ViY29tbWFuZCBmb3IgY29tbWFuZCAlc1wiIChQYXRoLnRvX3N0cmluZyBwYXRoKSlcbiAgICAgICAgICAgfCBTb21lIGJvZHkgLT4gYm9keSB+cGF0aDooUGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aCkpXG4gICAgICAgIHwgQ29ucyAoc3ViLCByZXN0KSAtPlxuICAgICAgICAgICgqIE1hdGNoIGZvciBmbGFncyByZWNvZ25pemVkIHdoZW4gc3ViY29tbWFuZHMgYXJlIGV4cGVjdGVkIG5leHQgKilcbiAgICAgICAgICAobWF0Y2ggc3ViIHdpdGhcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBhdCB0aGUgdG9wIGxldmVsIGNvbW1hbmQgb25seSAqKVxuICAgICAgICAgICB8IChcIi12ZXJzaW9uXCIgfCBcIi0tdmVyc2lvblwiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjtcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCAoXCItYnVpbGQtaW5mb1wiIHwgXCItLWJ1aWxkLWluZm9cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgZXZlcnl3aGVyZSAqKVxuICAgICAgICAgICB8IFwiLWhlbHBcIiB8IFwiLS1oZWxwXCIgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOaWwgfCBDb21wbGV0ZSAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgZ3JvdXAgd2l0aCBzdWJjb21tYW5kcyA9IHN1YnMgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgICAgICAgIGV4aXQgMFxuICAgICAgICAgICAgICAgfCBDbWRsaW5lLkNvbnMgKGZpcnN0X29mX3Jlc3QsIHJlc3Rfb2ZfcmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgcmVzb2x2ZSBmaXJzdF9vZl9yZXN0IChDb25zIChzdWIsIHJlc3Rfb2ZfcmVzdCkpKVxuICAgICAgICAgICB8IChfIDogc3RyaW5nKSAtPiByZXNvbHZlIHN1YiByZXN0KVxuICAgICAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBMYXp5LmZvcmNlIHN1YnNcbiAgICAgICAgICAgIHw+IExpc3QubWFwIH5mOmZzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBuYW1lIC0+IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQpXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmVcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBjb21wbGV0ZV9zdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgICAgICAgIHNoYXBlIHQgfD4gU2hhcGUuZnVsbHlfZm9yY2VkIHw+IFNoYXBlLkZ1bGx5X2ZvcmNlZC5leHBhbmRlZF9zdWJjb21tYW5kc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKG1hdGNoIGYgfnBhdGg6KFBhdGgucGFydHMgcGF0aCkgfnBhcnQgc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZXhpdCAxXG4gICAgICAgICAgICAgIHwgU29tZSB0b19vdXRwdXQgLT5cbiAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgdG9fb3V0cHV0KTtcbiAgICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIExpc3QuaXRlciBzdWJzIH5mOnByaW50X2VuZGxpbmU7XG4gICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgaW5cbiAgICAgIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICA/dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICA/dmVyc2lvblxuICAgICAgICA/YnVpbGRfaW5mb1xuICAgICAgICA/KGFyZ3YgPSBBcnJheS50b19saXN0IFN0ZGxpYi5TeXMuYXJndilcbiAgICAgICAgP2V4dGVuZFxuICAgICAgICA/KHdoZW5fcGFyc2luZ19zdWNjZWVkcyA9IEZuLmlkKVxuICAgICAgICA/Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgYnVpbGRfaW5mbyA9XG4gICAgICBtYXRjaCBidWlsZF9pbmZvIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGxhenkgdlxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICBpblxuICAgIGxldCB2ZXJzaW9uID1cbiAgICAgIG1hdGNoIHZlcnNpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICgqIFt2ZXJzaW9uXSB3YXMgc3BhY2UgZGVsaW1pdGVkIGF0IHNvbWUgcG9pbnQgYW5kIG5ld2xpbmUgZGVsaW1pdGVkXG4gICAgICAgICAgIGF0IGFub3RoZXIuICBXZSBhbHdheXMgcHJpbnQgb25lIChyZXBvLCByZXZpc2lvbikgcGFpciBwZXIgbGluZVxuICAgICAgICAgICBhbmQgZW5zdXJlIHNvcnRlZCBvcmRlciAqKVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKFZlcnNpb25faW5mby5ub3JtYWxpemVfdmVyc2lvbl9saW5lc1xuICAgICAgICAgICAgIChTdHJpbmcuc3BsaXQgdiB+b246JyAnIHw+IExpc3QuY29uY2F0X21hcCB+ZjooU3RyaW5nLnNwbGl0IH5vbjonXFxuJykpKVxuICAgIGluXG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBsZXQgdCA9IFZlcnNpb25faW5mby5hZGQgdCB+dmVyc2lvbiB+YnVpbGRfaW5mbyBpblxuICAgICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgICBsZXQgY21kLCBhcmdzID0gaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgaW5cbiAgICAgIGxldCBwYXRoLCBhcmdzLCBtYXliZV9uZXdfY29tcF9jd29yZCA9IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzIGluXG4gICAgICB0cnlcbiAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICB0XG4gICAgICAgICAgRW52LmVtcHR5XG4gICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICB3aXRoXG4gICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+XG4gICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHByZXJyX2VuZGxpbmUgbXNnO1xuICAgICAgICAgIGV4aXQgMSkpXG4gIDs7XG5cbiAgbGV0IGRlcHJlY2F0ZWRfcnVuIHQgfmNtZCB+YXJncyB+aXNfaGVscCB+aXNfaGVscF9yZWMgfmlzX2hlbHBfcmVjX2ZsYWdzIH5pc19leHBhbmRfZG90c1xuICAgID1cbiAgICBsZXQgcGF0aF9zdHJpbmdzID0gU3RyaW5nLnNwbGl0IGNtZCB+b246JyAnIGluXG4gICAgbGV0IHBhdGggPSBQYXRoLm9mX3BhcnRzIHBhdGhfc3RyaW5ncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfZXhwYW5kX2RvdHMgdGhlbiBcIi1leHBhbmQtZG90c1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlY19mbGFncyB0aGVuIFwiLWZsYWdzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjIHRoZW4gXCItclwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwIHRoZW4gXCItaGVscFwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgIGRpc3BhdGNoXG4gICAgICB0XG4gICAgICBFbnYuZW1wdHlcbiAgICAgIH5wYXRoXG4gICAgICB+YXJnc1xuICAgICAgfmV4dGVuZDpOb25lXG4gICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmQ6Tm9uZVxuICAgICAgfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfmJ1aWxkX2luZm86VmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6Tm9uZVxuICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzOk5vbmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgKydhIHRcblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgaGVscCA6IHN0cmluZyBMYXp5LnQgdFxuICAgIHZhbCBwYXRoIDogc3RyaW5nIGxpc3QgdFxuICAgIHZhbCBhcmdzIDogc3RyaW5nIGxpc3QgdFxuXG4gICAgdmFsIGZsYWdcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgRmxhZy50XG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEFyZ190eXBlLnRcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiBkZWZhdWx0OidhXG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgYW5vbiA6ICdhIEFub25zLnQgLT4gJ2EgdFxuICAgIHZhbCBlc2NhcGVfYW5vbiA6IGZpbmFsX2Fub246J2EgQW5vbnMudCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuIDogc2lnXG4gICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICB8IFJhaXNlIDogKCdhLCAnYSkgdFxuICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICBlbmRcblxuICAgIHZhbCBjaG9vc2Vfb25lXG4gICAgICA6ICAnYSBvcHRpb24gdCBsaXN0XG4gICAgICAtPiBpZl9ub3RoaW5nX2Nob3NlbjooJ2EsICdiKSBJZl9ub3RoaW5nX2Nob3Nlbi50XG4gICAgICAtPiAnYiB0XG5cbiAgICB2YWwgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgIDogICdhIHQgbGlzdFxuICAgICAgLT4gaWZfbm90aGluZ19jaG9zZW46KCdhLCAnYikgSWZfbm90aGluZ19jaG9zZW4udFxuICAgICAgLT4gJ2IgdFxuXG4gICAgdmFsIGFuZF9hcmdfbmFtZXMgOiAnYSB0IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG4gICAgdmFsIGFuZF9hcmdfbmFtZSA6ICdhIHQgLT4gKCdhICogc3RyaW5nKSB0XG4gICAgdmFsIGFyZ19uYW1lcyA6ICdhIHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDb21tYW5kX2Jhc2UuUGFyYW1cblxuICBsZXQgcGF0aCA9IG1hcCB+ZjpQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJhbVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBQYXJhbVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG5cbnR5cGUgJ3Jlc3VsdCBiYXNpY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmcgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpIC0+ICh1bml0IC0+ICdyZXN1bHQpIFBhcmFtLnQgLT4gdFxuXG5sZXQgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbSA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbVxuOztcblxubGV0IGJhc2ljX29yX2Vycm9yIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBiYXNpY1xuICAgIH5zdW1tYXJ5XG4gICAgP3JlYWRtZVxuICAgIChsZXQlbWFwIHJ1biA9IHBhcmFtIGluXG4gICAgIGZ1biAoKSAtPlxuICAgICAgIG1hdGNoIHJ1biAoKSB3aXRoXG4gICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgU3RkaW8ucHJlcnJfZW5kbGluZSAoRXJyb3IudG9fc3RyaW5nX2h1bSBlKTtcbiAgICAgICAgIGV4aXQgMSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBhYnNfcGF0aCA9IGFic19wYXRoXG4gIGxldCB3b3JkX3dyYXAgPSBTaGFwZS5Qcml2YXRlLndvcmRfd3JhcFxuXG4gIG1vZHVsZSBBbm9ucyA9IEFub25zXG4gIG1vZHVsZSBDbWRsaW5lID0gQ21kbGluZVxuICBtb2R1bGUgRm9yX3VuaXggPSBGb3JfdW5peFxuICBtb2R1bGUgUGF0aCA9IFBhdGhcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3BlY1xuXG4gICAgbGV0IHRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSBwYXJhbSA9XG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uQ2hvb3NlX29uZS5DaG9pY2VfbmFtZS4oY3JlYXRlX2V4biBwYXJhbSB8PiB0b19zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHJ1biA9IGBVc2VfQ29tbWFuZF91bml4XG5sZXQgc2hhcGUgPSBgVXNlX0NvbW1hbmRfdW5peFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5leHRlcm5hbCBpc19oZWFwX2Jsb2NrIDogU3RkbGliLk9iai50IC0+IGJvb2wgPSBcImNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrXCJcbltAQG5vYWxsb2NdXG5cbmxldCBpc19vayB2ID0gaXNfaGVhcF9ibG9jayAoU3RkbGliLk9iai5yZXByIHYpXG5sZXQgY3JlYXRlIHYgPSBpZiBpc19vayB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuXG5sZXQgY3JlYXRlX2V4biB2ID1cbiAgaWYgaXNfb2sgdiB0aGVuIHYgZWxzZSBmYWlsd2l0aCBcIkhlYXBfYmxvY2suY3JlYXRlX2V4biBjYWxsZWQgd2l0aCBub24gaGVhcCBibG9ja1wiXG47O1xuXG5sZXQgdmFsdWUgdCA9IHRcbmxldCBieXRlc19wZXJfd29yZCA9IFdvcmRfc2l6ZS4obnVtX2JpdHMgd29yZF9zaXplKSAvIDhcblxubGV0IGJ5dGVzICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIChTdGRsaWIuT2JqLnNpemUgKFN0ZGxpYi5PYmoucmVwciAodCA6IGEgdCkpICsgMSkgKiBieXRlc19wZXJfd29yZFxuOztcbiIsIm9wZW4gQmFzZVxuXG4oKiogRWFjaCBzaW5nbGVfZXJyb3IgaXMgYSBwYXRoIGluZGljYXRpbmcgdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgZGF0YXN0cnVjdHVyZSBpblxuICAgIHF1ZXN0aW9uIHRoYXQgaXMgYmVpbmcgdmFsaWRhdGVkLCBhbG9uZyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuICopXG50eXBlIHNpbmdsZV9lcnJvciA9XG4gIHsgcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZXJyb3IgOiBFcnJvci50XG4gIH1cblxudHlwZSB0ID0gc2luZ2xlX2Vycm9yIGxpc3RcbnR5cGUgJ2EgY2hlY2sgPSAnYSAtPiB0XG5cbmxldCBwYXNzIDogdCA9IFtdXG5cbmxldCBmYWlscyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSB9IF1cbjs7XG5cbmxldCBmYWlsIG1lc3NhZ2UgPSBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLm9mX3N0cmluZyBtZXNzYWdlIH0gXVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IGZhaWxfcyBzZXhwID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGVfcyBzZXhwIH0gXVxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgb2ZfbGlzdCA9IExpc3QuY29uY2F0XG5cbmxldCBuYW1lIG5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdICgqIHdoZW4gc3VjY2Vzc2Z1bCwgYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYSBjbG9zdXJlIGZvciBbfmZdLCBiZWxvdyAqKVxuICB8IF8gLT4gTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiB7IHBhdGggPSBuYW1lIDo6IHBhdGg7IGVycm9yIH0pXG47O1xuXG5sZXQgbmFtZV9saXN0IG4gbCA9IG5hbWUgbiAob2ZfbGlzdCBsKVxubGV0IGZhaWxfZm4gbWVzc2FnZSBfID0gZmFpbCBtZXNzYWdlXG5sZXQgcGFzc19ib29sIChfIDogYm9vbCkgPSBwYXNzXG5sZXQgcGFzc191bml0IChfIDogdW5pdCkgPSBwYXNzXG5cbmxldCBwcm90ZWN0IGYgdiA9XG4gIHRyeSBmIHYgd2l0aFxuICB8IGV4biAtPlxuICAgIGZhaWxfcyAoU2V4cC5tZXNzYWdlIFwiRXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgdmFsaWRhdGlvblwiIFsgXCJcIiwgc2V4cF9vZl9leG4gZXhuIF0pXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHByb3RlY3RcbiAgICAoZnVuICgpIC0+XG4gICAgICAgZiAoKTtcbiAgICAgICBwYXNzKVxuICAgICgpXG47O1xuXG5sZXQgcGF0aF9zdHJpbmcgcGF0aCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBwYXRoXG5cbmxldCBlcnJvcnMgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT5cbiAgICBFcnJvci50b19zdHJpbmdfaHVtIChFcnJvci50YWcgZXJyb3IgfnRhZzoocGF0aF9zdHJpbmcgcGF0aCkpKVxuOztcblxubGV0IHJlc3VsdF9mYWlsIHQgPVxuICBPcl9lcnJvci5lcnJvclxuICAgIFwidmFsaWRhdGlvbiBlcnJvcnNcIlxuICAgIChMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+IHBhdGhfc3RyaW5nIHBhdGgsIGVycm9yKSlcbiAgICBbJXNleHBfb2Y6IChzdHJpbmcgKiBFcnJvci50KSBMaXN0LnRdXG5bQEBjb2xkXVxuOztcblxuKCoqIFtyZXN1bHRdIGlzIGNhcmVmdWxseSBpbXBsZW1lbnRlZCBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkIC0tIGNhbGxpbmcgW3Jlc3VsdF9mYWlsXSxcbiAgICB3aGljaCBpcyBub3QgaW5saW5lYWJsZSwgaXMga2V5IHRvIHRoaXMuICopXG5sZXQgcmVzdWx0IHQgPSBpZiBMaXN0LmlzX2VtcHR5IHQgdGhlbiBPayAoKSBlbHNlIHJlc3VsdF9mYWlsIHRcblxubGV0IG1heWJlX3JhaXNlIHQgPSBPcl9lcnJvci5va19leG4gKHJlc3VsdCB0KVxubGV0IHZhbGlkX29yX2Vycm9yIGNoZWNrIHggPSBPcl9lcnJvci5tYXAgKHJlc3VsdCAocHJvdGVjdCBjaGVjayB4KSkgfmY6KGZ1biAoKSAtPiB4KVxuXG5sZXQgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCBfcmVjb3JkIHYgPVxuICBsZXQgcmVzdWx0ID0gcHJvdGVjdCBjaGVjayB2IGluXG4gIG5hbWUgKEZpZWxkLm5hbWUgZmxkKSByZXN1bHRcbjs7XG5cbmxldCBmaWVsZCBjaGVjayByZWNvcmQgZmxkID1cbiAgbGV0IHYgPSBGaWVsZC5nZXQgZmxkIHJlY29yZCBpblxuICBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIHJlY29yZCB2XG47O1xuXG5sZXQgZmllbGRfZm9sZGVyIGNoZWNrIHJlY29yZCA9XG4gICgpO1xuICBmdW4gYWNjIGZsZCAtPiBmaWVsZCBjaGVjayByZWNvcmQgZmxkIDo6IGFjY1xuOztcblxubGV0IGZpZWxkX2RpcmVjdF9mb2xkZXIgY2hlY2sgPVxuICBTdGFnZWQuc3RhZ2UgKGZ1biBhY2MgZmxkIHJlY29yZCB2IC0+XG4gICAgbWF0Y2ggZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdiB3aXRoXG4gICAgfCBbXSAtPiBhY2MgKCogQXZvaWQgYWxsb2NhdGluZyBhIG5ldyBsaXN0IGluIHRoZSBzdWNjZXNzIGNhc2UgKilcbiAgICB8IHJlc3VsdCAtPiByZXN1bHQgOjogYWNjKVxuOztcblxubGV0IGFsbCBjaGVja3MgdiA9XG4gIGxldCByZWMgbG9vcCBjaGVja3MgdiBlcnJzID1cbiAgICBtYXRjaCBjaGVja3Mgd2l0aFxuICAgIHwgW10gLT4gZXJyc1xuICAgIHwgY2hlY2sgOjogY2hlY2tzIC0+XG4gICAgICAobWF0Y2ggcHJvdGVjdCBjaGVjayB2IHdpdGhcbiAgICAgICB8IFtdIC0+IGxvb3AgY2hlY2tzIHYgZXJyc1xuICAgICAgIHwgZXJyIC0+IGxvb3AgY2hlY2tzIHYgKGVyciA6OiBlcnJzKSlcbiAgaW5cbiAgb2ZfbGlzdCAoTGlzdC5yZXYgKGxvb3AgY2hlY2tzIHYgW10pKVxuOztcblxubGV0IG9mX3Jlc3VsdCBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gZmFpbCBlcnJvcilcbjs7XG5cbmxldCBvZl9lcnJvciBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gWyB7IHBhdGggPSBbXTsgZXJyb3IgfSBdKVxuOztcblxubGV0IGJvb2x0ZXN0IGYgfmlmX2ZhbHNlID0gcHJvdGVjdCAoZnVuIHYgLT4gaWYgZiB2IHRoZW4gcGFzcyBlbHNlIGZhaWwgaWZfZmFsc2UpXG5cbmxldCBwYWlyIH5mc3QgfnNuZCAoZnN0X3ZhbHVlLCBzbmRfdmFsdWUpID1cbiAgb2ZfbGlzdCBbIG5hbWUgXCJmc3RcIiAocHJvdGVjdCBmc3QgZnN0X3ZhbHVlKTsgbmFtZSBcInNuZFwiIChwcm90ZWN0IHNuZCBzbmRfdmFsdWUpIF1cbjs7XG5cbmxldCBsaXN0X2luZGV4ZWQgY2hlY2sgbGlzdCA9XG4gIExpc3QubWFwaSBsaXN0IH5mOihmdW4gaSBlbCAtPiBuYW1lIChJbnQudG9fc3RyaW5nIChpICsgMSkpIChwcm90ZWN0IGNoZWNrIGVsKSlcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGxpc3Qgfm5hbWU6ZXh0cmFjdF9uYW1lIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gZWwgLT5cbiAgICBtYXRjaCBwcm90ZWN0IGNoZWNrIGVsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCB0IC0+XG4gICAgICAoKiBleHRyYSBsZXZlbCBvZiBwcm90ZWN0aW9uIGluIGNhc2UgZXh0cmFjdF9uYW1lIHRocm93cyBhbiBleGNlcHRpb24gKilcbiAgICAgIHByb3RlY3QgKGZ1biB0IC0+IG5hbWUgKGV4dHJhY3RfbmFtZSBlbCkgdCkgdClcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGFsaXN0IH5uYW1lIGYgbGlzdCcgPSBsaXN0IChmdW4gKF8sIHgpIC0+IGYgeCkgbGlzdCcgfm5hbWU6KGZ1biAoa2V5LCBfKSAtPiBuYW1lIGtleSlcbmxldCBmaXJzdF9mYWlsdXJlIHQxIHQyID0gaWYgTGlzdC5pc19lbXB0eSB0MSB0aGVuIHQyIGVsc2UgdDFcblxubGV0IG9mX2Vycm9yX29wdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwYXNzXG4gIHwgU29tZSBlcnJvciAtPiBmYWlsIGVycm9yXG47O1xuXG5sZXQgYm91bmRlZCB+bmFtZSB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggPVxuICBtYXRjaCBNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggd2l0aFxuICB8IEluX3JhbmdlIC0+IHBhc3NcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPlxuICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzIDwgYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbiAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzID4gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCArKyApIHQxIHQyID0gY29tYmluZSB0MSB0MlxuZW5kXG4iLCJcbigqIFdlIGRvIG5vdCBbaW5jbHVkZSBCYXNlXSBoZXJlLCBhbmQgaW5zdGVhZCBpbXBvcnQgbW9kdWxlcyB0aGF0IFtDb3JlXSBkb2Vzbid0IGV4dGVuZCxcbiAgIGJlY2F1c2Ugd2Ugd2FudCBjb2RlIGluIFtDb3JlXSB0byBiZSBjbGVhciB3aGVuIGl0IHJlZmVyZW5jZXMgYSBbQmFzZV0gbW9kdWxlIHRoYXRcbiAgIFtDb3JlXSBpcyBvdmVycmlkaW5nLiAqKVxubW9kdWxlIEFwcGxpY2F0aXZlID0gQmFzZS5BcHBsaWNhdGl2ZVxubW9kdWxlIEF2bHRyZWUgPSBCYXNlLkF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYXNlLkJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCYXNlLkJpbmFyeV9zZWFyY2hcbm1vZHVsZSBDb21wYXJpc29ucyA9IEJhc2UuQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRXF1YWwgPSBCYXNlLkVxdWFsXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBGbG9hdGFibGUgPSBCYXNlLkZsb2F0YWJsZVxubW9kdWxlIEZvcm1hdHRlciA9IEJhc2UuRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEJhc2UuSGFzaFxubW9kdWxlIEhhc2hlciA9IEJhc2UuSGFzaGVyXG5tb2R1bGUgSW50YWJsZSA9IEJhc2UuSW50YWJsZVxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEJhc2UuSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X21hdGggPSBCYXNlLkludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gQmFzZS5JbnZhcmlhbnRcbm1vZHVsZSBNb25hZCA9IEJhc2UuTW9uYWRcbm1vZHVsZSBQb2x5ID0gQmFzZS5Qb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBCYXNlLlByZXR0eV9wcmludGVyXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZ2FibGUgPSBCYXNlLlN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBCYXNlLlN5c1xubW9kdWxlIFVjaGFyID0gQmFzZS5VY2hhclxubW9kdWxlIFdpdGhfcmV0dXJuID0gQmFzZS5XaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IEJhc2UuV29yZF9zaXplXG5cbigqIFdlIGRvIGluY2x1ZGUgW0Jhc2VdJ3MgdG9wLWxldmVsIHZhbHVlIGFuZCB0eXBlIGJpbmRpbmdzLCBiZWNhdXNlIHRoZXkgZG9uJ3QgY2F1c2VcbiAgIGFueSBjb25mdXNpb24sIGFuZCBkdXBsaWNhdGluZyB0aGVtIHdvdWxkIGJlIGVycm9yIHByb25lLiAqKVxuaW5jbHVkZSBCYXNlLkV4cG9ydFxuaW5jbHVkZSBTdGRpb1xuaW5jbHVkZSBCYXNlX2Zvcl90ZXN0c1xuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5tb2R1bGUgRmllbGQgPSBGaWVsZHNsaWIuRmllbGRcblxubW9kdWxlIEZyb21fc2V4cGxpYiA6IHNpZ1xuICB0eXBlIGJpZ3N0cmluZyA9IFNleHBsaWIuQ29udi5iaWdzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBtYXQgPSBTZXhwbGliLkNvbnYubWF0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdmVjID0gU2V4cGxpYi5Db252LnZlYyBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICgqIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0gYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGZyb21cbiAgICAgW1tAQGRlcml2aW5nIHNleHBdXSwgW1slc2V4cF9vZjogXV0sIGFuZCBbWyVvZl9zZXhwOiBdXS4gIFRoZSB0eXBlIFtfIHNleHBfb3BhcXVlXVxuICAgICBleHBhbmRzIHRvIHVzZXMgb2YgW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXS4gKilcblxuICB2YWwgc2V4cF9vZl9vcGFxdWUgOiBfIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBvcGFxdWVfb2Zfc2V4cCA6IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIHNleHBfb2ZfcGFpciA6ICgnYSAtPiBCYXNlLlNleHAudCkgLT4gKCdiIC0+IEJhc2UuU2V4cC50KSAtPiAnYSAqICdiIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBwYWlyX29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EpIC0+IChCYXNlLlNleHAudCAtPiAnYikgLT4gQmFzZS5TZXhwLnQgLT4gJ2EgKiAnYlxuXG4gIGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIEJhc2UuU2V4cC50XG5cbiAgdmFsIG9mX3NleHBfZXJyb3IgOiBzdHJpbmcgLT4gQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgb2Zfc2V4cF9lcnJvcl9leG4gOiBleG4gLT4gQmFzZS5TZXhwLnQgLT4gX1xuZW5kID1cbiAgU2V4cGxpYi5Db252XG5cbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5cbigqIFtzZXhwX29wYXF1ZV0gaW5kaWNhdGVzIHRvIFtwcHhfc2V4cF9jb252XSB0aGF0IGEgdmFsdWUgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIFtfXSwgaS5lLlxuICAgW1NleHAuQXRvbSBcIl9cIl0uICBIZXJlIHdlIGV4cG9zZSB0aGUgW0BAZGVyaXZpbmddIGFzcGVjdHMgb2YgW3NleHBfb3BhcXVlXSBzbyB0aGF0XG4gICBvdGhlciBwcHgncyB0cmVhdCBbc2V4cF9vcGFxdWVdIGNvcnJlY3RseSwgYnkgaWdub3JpbmcgaXQgYW5kIHByb2Nlc3NpbmcgdGhlIHVuZGVybHlpbmdcbiAgIHR5cGUuICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHNleHBfb3BhcXVlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHNleHBfb3BhcXVlIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIHNleHBfb3BhcXVlIDo9ICdhKVxuXG5pbmNsdWRlIChcbiAgVHlwZXJlcF9saWIuU3RkIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFR5cGVyZXBfbGliLlN0ZFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgVHlwZV9lcXVhbCA6PSBUeXBlcmVwX2xpYi5TdGQuVHlwZV9lcXVhbClcblxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50c2xpYi5WYXJpYW50XG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBhbV9ydW5uaW5nX3Rlc3QgPVxuICB0cnlcbiAgICBpZ25vcmUgKFN0ZGxpYi5TeXMuZ2V0ZW52IFwiVEVTVElOR19GUkFNRVdPUktcIiA6IHN0cmluZyk7XG4gICAgdHJ1ZVxuICB3aXRoXG4gICgqIFtDYW1sLipdIG5ldmVyIHJhaXNlcyBbTm90X2ZvdW5kX3NdICopXG4gIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxudHlwZSAnYSBpZGVudGl0eSA9ICdhXG5cbm1vZHVsZSBOb3RfZm91bmQgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uXG4gICAgTm90X2ZvdW5kID0gTm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgW0BkZXByZWNhdGVkXG4gICAgICAgICAgICAgICAgICB7fFtzaW5jZSAyMDE4LTAyXSBJbnN0ZWFkIG9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIGNvbnNpZGVyIHVzaW5nIFtyYWlzZV9zXSB3aXRoIGFuXG5pbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLiAgSWYgY29kZSBuZWVkcyB0byBkaXN0aW5ndWlzaCBbTm90X2ZvdW5kXSBmcm9tIG90aGVyXG5leGNlcHRpb25zLCBwbGVhc2UgY2hhbmdlIGl0IHRvIGhhbmRsZSBib3RoIFtOb3RfZm91bmRdIGFuZCBbTm90X2ZvdW5kX3NdLiAgVGhlbiwgaW5zdGVhZFxub2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgcmFpc2UgW05vdF9mb3VuZF9zXSB3aXRoIGFuIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UufH1dXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gQmFzZS5Ob3RfZm91bmRfc1xuZW5kXG5cbmluY2x1ZGUgTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXhwYWJsZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXVxuXG4gICAgICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgICAgICB8IFNleHBsaWIuU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBsaWIuU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgOiBNLnQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBzdHJpbmdfc2V4cF9ncmFtbWFyXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVG9fc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFMpIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX3N0cmluZyB4ID0gU2V4cGxpYi5Db252Lm9mX3N0cmluZ19fb2ZfX29mX3NleHAgTS50X29mX3NleHAgeFxuICAgICAgbGV0IHRvX3N0cmluZyB4ID0gU2V4cGxpYi5Db252LnN0cmluZ19vZl9fb2ZfX3NleHBfb2YgTS5zZXhwX29mX3QgeFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVG9fc3RyaW5nYWJsZSA9IFN0YWJsZS5Ub19zdHJpbmdhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbl9wcm90LkJpbmFibGVcbm1vZHVsZSBTaGFwZSA9IEJpbl9wcm90LlNoYXBlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX2JpbmFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udl93aXRob3V0X3V1aWQgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udiB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMSlcbiAgICAgICAgKE0gOiBDb252MV93aXRob3V0X3V1aWQgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUzEpIChNIDogQ29udjEgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252Ml93aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU2V4cGFibGUuUykgPVxuICAgICAgT2ZfYmluYWJsZS5WMVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICBlbmQpXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3NleHBhYmxlKSA9XG4gICAgICBPZl9iaW5hYmxlLlYyXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3N0cmluZ2FibGUpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4gQmlnYXJyYXlcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5cbnR5cGUgJ2EgbSA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG5sZXQgb2ZfYmlnc3RyaW5nICh0eXBlIGEpIG0gYmlnc3RyaW5nID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IHQgPSBNLmJpbl9yZWFkX3QgYmlnc3RyaW5nIH5wb3NfcmVmIGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID0gQXJyYXkxLmRpbSBiaWdzdHJpbmcgaW5cbiAgKG1hdGNoICFwb3NfcmVmID0gYmlnc3RyaW5nX2xlbmd0aCB3aXRoXG4gICB8IHRydWUgLT4gKClcbiAgIHwgZmFsc2UgLT5cbiAgICAgcmFpc2Vfc1xuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJiaW5fcmVhZF90IGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIGJ1ZmZlclwiXG4gICAgICAgICAgIH5jb25zdW1lZDooIXBvc19yZWYgOiBpbnQpXG4gICAgICAgICAgIChiaWdzdHJpbmdfbGVuZ3RoIDogaW50KV0pO1xuICB0XG47O1xuXG4oKiBVc2luZyB0aGUgW0JpZ3N0cmluZ10gbW9kdWxlIHdvdWxkIGludHJvZHVjZSBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IGNyZWF0ZV9iaWdzdHJpbmcgc2l6ZSA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBzaXplXG5cbmxldCB0b19iaWdzdHJpbmcgPyhwcmVmaXhfd2l0aF9sZW5ndGggPSBmYWxzZSkgKHR5cGUgYSkgbSB0ID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCB0X2xlbmd0aCA9IE0uYmluX3NpemVfdCB0IGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGggdGhlbiB0X2xlbmd0aCArIDggKCogdGhlIHNpemUgb2YgYSA2NC1iaXQgaW50ICopIGVsc2UgdF9sZW5ndGhcbiAgaW5cbiAgbGV0IGJpZ3N0cmluZyA9IGNyZWF0ZV9iaWdzdHJpbmcgYmlnc3RyaW5nX2xlbmd0aCBpblxuICBsZXQgcG9zID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGhcbiAgICB0aGVuIEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgYmlnc3RyaW5nIH5wb3M6MCB0X2xlbmd0aFxuICAgIGVsc2UgMFxuICBpblxuICBsZXQgcG9zID0gTS5iaW5fd3JpdGVfdCBiaWdzdHJpbmcgfnBvcyB0IGluXG4gIGFzc2VydCAocG9zID0gYmlnc3RyaW5nX2xlbmd0aCk7XG4gIGJpZ3N0cmluZ1xuOztcblxubW9kdWxlIE9mX2JpbmFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjJcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjJcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjJcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMVxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMVxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMVxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMVxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMVxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjFcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlID0gc2lnXG4gICAgICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnNcblxuICAgICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIGVuZFxuXG4gICAgKCogQ2hlY2sgdGhhdCBvbmx5IHRoZSBmdW5jdGlvbnMgJiBzaGFwZSBhcmUgc3VmZmljaWVudCBmb3IgW0BAZGVyaXZpbmcgYmluX2lvXS4gVGhlXG4gICAgICAgZmFjdCB0aGF0IHRoaXMgZnVuY3RvciB0eXBlY2hlY2tzIGlzLCBpdHNlbGYsIHRoZSB0ZXN0LiAqKVxuICAgIG1vZHVsZSBfIChYIDogU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUpIDogUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gWC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuUHJpbnRmfVtCYXNlLlByaW50Zl19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZSBCYXNlLlByaW50ZiAoKiogQG9wZW4gKilcblxubGV0IGVwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmZwcmludGZcbmxldCBrZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmtmcHJpbnRmXG5sZXQgcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwucHJpbnRmXG5cblxuKCoqIHByaW50IHRvIHN0ZGVycjsgZXhpdCAxICopXG5sZXQgZXhpdGYgZm10ID1cbiAga3NwcmludGZcbiAgICAoZnVuIHMgKCkgLT5cbiAgICAgICBlcHJpbnRmIFwiJXNcXG4lIVwiIHM7XG4gICAgICAgZXhpdCAxKVxuICAgIGZtdFxuOztcblxudHlwZSBwcmludGYgPSB7IHByaW50ZiA6ICdhLiAoJ2EsIEJ1ZmZlci50LCB1bml0KSBmb3JtYXQgLT4gJ2EgfVxuXG5sZXQgY29sbGVjdF90b19zdHJpbmcgZiA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBkb25lXyA9IHJlZiBmYWxzZSBpblxuICBsZXQgcHJpbnRmIGZtdCA9XG4gICAga2JwcmludGZcbiAgICAgIChmdW4gYnVmIC0+XG4gICAgICAgICBpZiAhZG9uZV9cbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBCdWZmZXIucmVzZXQgYnVmO1xuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIltwcmludGZdIHVzZWQgYWZ0ZXIgW2NvbGxlY3RfdG9fc3RyaW5nXSByZXR1cm5lZFwiXSkpXG4gICAgICBidWZcbiAgICAgIGZtdFxuICBpblxuICBmIHsgcHJpbnRmIH07XG4gIGRvbmVfIDo9IHRydWU7XG4gIGxldCBvdXRwdXQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIG91dHB1dFxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG4oKiBBbGwgdGhlIHR5cGVzIGFzIGV4cG9zZWQgaW4gdGhlIG1saSBhcmUgZGVmaW5lZCBpbiB0aGlzIFtUeXBlc10gbW9kdWxlLiAgVGhlIHJlc3Qgb2ZcbiAgIHRoaXMgZmlsZSBpcyBzaW1wbHkgb3ZlcnJpZGluZyBhbGwgdGhlIGJpbl9pbywgY29tcGFyZSwgYW5kIHNleHAgZnVuY3Rpb25zIHRvIHJhaXNlXG4gICBleGNlcHRpb25zLiAqKVxubW9kdWxlIFR5cGVzID0gc3RydWN0XG4gIG1vZHVsZSBOb2JvZHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk5vYm9keVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBNZSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTWVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFJlYWQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBXcml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFdob19jYW5fd3JpdGUgb2YgTWUudCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJXcml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbW11dGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgTm9ib2R5LnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiSW1tdXRhYmxlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgV3JpdGUudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkX3dyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mICdhXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlVwcGVyX2JvdW5kXCJcbiAgZW5kXG5lbmRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuKCogVGhpcyBpcyBhbiBleHBsaWNpdCBtb2R1bGUgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgZ2l2ZW4gaW5saW5lIGFzIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mXG4gICBbT25seV91c2VkX2FzX3BoYW50b21fdHlwZTFdIHRvIGF2b2lkIGFuIHVudXNlZCB2YWx1ZSB3YXJuaW5nIHdpdGggYmluX2lvIHZhbHVlcy4gKilcbm1vZHVsZSB0eXBlIFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cbmVuZFxuXG4oKiBPdmVycmlkZSBhbGwgYmluX2lvLCBzZXhwLCBjb21wYXJlIGZ1bmN0aW9ucyB0byByYWlzZSBleGNlcHRpb25zICopXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKE5hbWUgOiBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHNleHBfb2ZfdCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5zZXhwX29mX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X29mX3NleHAgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMudF9vZl9zZXhwXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgY29tcGFyZSBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmNvbXBhcmVdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBoYXNoX2ZvbGRfdCBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmhhc2hfZm9sZF90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLk5vdGhpbmcudF9zZXhwX2dyYW1tYXJcbiAgbGV0IHN0YWJsZV93aXRuZXNzIF8gPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGxldCBnbG9iYWxpemUgXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmdsb2JhbGl6ZV1cIiBOYW1lLm5hbWUgKClcblxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgZW5kKVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIGRlc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogc2lnXG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cF9wb2x5LCBzdGFibGVfd2l0bmVzc11cbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUKVxuXG4gIHR5cGUgdCA9IFQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG4gIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgbGV0IGdsb2JhbGl6ZSBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuZ2xvYmFsaXplXVwiIFQubmFtZSAoKVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE5vYm9keSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Ob2JvZHkpXG4gICAgbW9kdWxlIE1lID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk1lKVxuICAgIG1vZHVsZSBSZWFkID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWQpXG4gICAgbW9kdWxlIFdyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLldyaXRlKVxuICAgIG1vZHVsZSBSZWFkX3dyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWRfd3JpdGUpXG4gICAgbW9kdWxlIEltbXV0YWJsZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5JbW11dGFibGUpXG5cbiAgICB0eXBlIG5vYm9keSA9IE5vYm9keS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgdHlwZSBtZSA9IE1lLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVHlwZXMuVXBwZXJfYm91bmQpXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFR5cGVzLlVwcGVyX2JvdW5kLnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIF8gPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuXG4gICAgICBsZXQgZ2xvYmFsaXplIF8gPVxuICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5nbG9iYWxpemVdXCIgVHlwZXMuVXBwZXJfYm91bmQubmFtZSAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgcmVhZCA9IFYxLlJlYWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgd3JpdGUgPSBWMS5Xcml0ZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlIGltbXV0YWJsZSA9IFYxLkltbXV0YWJsZS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSByZWFkX3dyaXRlID0gVjEuUmVhZF93cml0ZS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSAnYSBwZXJtcyA9ICdhIFYxLlVwcGVyX2JvdW5kLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5tb2R1bGUgRXhwb3J0ID0gU3RhYmxlLkV4cG9ydFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ29tcGFyYXRvciA9IEJhc2UuQ29tcGFyYXRvclxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSBDb21wYXJhdG9yLnQgPSBwcml2YXRlXG4gIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gIH1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQ29tcGFyYXRvciB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbmluY2x1ZGUgKENvbXBhcmF0b3IgOiBCYXNlX21hc2spXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIHQgPSBwcml2YXRlXG4gICAgICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgY29tcGFyYXRvciA9ICgnYSwgJ2IpIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuXG4gICAgbGV0IG1ha2UgPSBtYWtlXG5cbiAgICBtb2R1bGUgTWFrZSA9IE1ha2VcbiAgICBtb2R1bGUgTWFrZTEgPSBNYWtlMVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnZiwgJ3MpIHQgPSAoJ2YsICdzKSBCYXNlLkVpdGhlci50ID1cbiAgICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICAgIHwgU2Vjb25kIG9mICdzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBGaXJzdCB4MSAtPiBGaXJzdCAoZjEgeDEpXG4gICAgICB8IFNlY29uZCB4MiAtPiBTZWNvbmQgKGYyIHgyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuRWl0aGVyXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5laXRoZXJcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTMF93aXRob3V0X2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICBpbmNsdWRlIFMwX3dpdGhvdXRfY29tcGFyYXRvclxuICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbigqKiBUaGUgcG9seW1vcnBoaWMgc2lnbmF0dXJlcyByZXF1aXJlIGEgbWFwcGluZyBmdW5jdGlvbiBzbyBwZW9wbGUgY2FuIHdyaXRlIGNvbnZlcnNpb25cbiAgICBmdW5jdGlvbnMgd2l0aG91dCBlaXRoZXIgKDEpIHJlLWltcGxlbWVudGluZyB0aGUgbWFwcGluZyBmdW5jdGlvbiBpbmxpbmUgb3IgKDIpXG4gICAgcmVhY2hpbmcgaW50byB0aGUgdW5zdGFibGUgcGFydCBvZiB0aGUgbW9kdWxlLiAqKVxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwXG4gICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyLCAnYTMsICdhNCkgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcFxuICAgIDogICgnYTEsICdhMiwgJ2EzLCAnYTQpIHRcbiAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAtPiBmNDooJ2E0IC0+ICdiNClcbiAgICAtPiAoJ2IxLCAnYjIsICdiMywgJ2I0KSB0XG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUzBfd2l0aG91dF9jb21wYXJhdG9yID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5cbiAgICB0eXBlIHQgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgPVxuICAgICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICAgIDsgcG9zX2JvbCA6IGludFxuICAgICAgOyBwb3NfY251bSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IHRvX3N0cmluZyA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGlzIG1hbnkgcGxhY2VzIHBsYWNlcyBhcyBwb3NzaWJsZS5cbiAgIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuISBJbmZvX2ludGZcblxubW9kdWxlIHR5cGUgUyA9IEJhc2UuSW5mby5TXG5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlX2V4biA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBleG4gW0BAZGVyaXZpbmcgc2V4cF9vZiwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSB0IHw+IFslc2V4cF9vZjogdF1cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gRXhuLmNyZWF0ZV9zXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIFNleHAuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kIChJbmZvIDogQmFzZS5JbmZvLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgSW5mb1xuXG4gIG1vZHVsZSBJbnRlcm5hbF9yZXByID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJpbmFibGVfZXhuID0gQmluYWJsZV9leG4uU3RhYmxlXG5cbiAgICAgIG1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgICAgKCogW3NleHBfb2ZfdF0gYXMgZGVmaW5lZCBoZXJlIGlzIHVuc3RhYmxlOyB0aGlzIGlzIE9LIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgICBbdF9vZl9zZXhwXS4gIFtzZXhwX29mX3RdIGlzIG9ubHkgdXNlZCB0byBwcm9kdWNlIGEgc2V4cCB0aGF0IGlzIG5ldmVyXG4gICAgICAgICAgICAgZGVzZXJpYWxpemVkIGFzIGEgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uXS4gKilcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLkludGVybmFsX3JlcHIudCA9XG4gICAgICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgICAgICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgICAgICAgIHwgRXhuIG9mIEJpbmFibGVfZXhuLlYxLnRcbiAgICAgICAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgICAgICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi5WMS50IG9wdGlvblxuICAgICAgICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgICAgICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgICAgICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICAgICAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZiwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgU3RhYmxlLlYyXG5cbiAgICBsZXQgdG9faW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG4gICAgbGV0IG9mX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnRlcm5hbF9yZXByLlN0YWJsZS5WMilcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgSW50ZXJuYWxfcmVwci5TdGFibGUuVjIuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgICAgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgICAgKFNleHApXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gSW5mby5zZXhwX29mX3RcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gSW5mby50X29mX3NleHBcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBzZXhwX29mX3RcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gdF9vZl9zZXhwXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgU2V4cC5zdGFibGVfd2l0bmVzcyBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5pbmNsdWRlIEV4dGVuZCAoQmFzZS5JbmZvKVxuXG4iLCJpbmNsdWRlIEJhc2UuRXJyb3JcbmluY2x1ZGUgSW5mby5FeHRlbmQgKEJhc2UuRXJyb3IpXG5cbmxldCBmYWlsd2l0aHMgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZmFpbHdpdGhwID9zdHJpY3QgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUmVzdWx0ID0gQmFzZS5SZXN1bHRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCA9XG4gICAgICB8IE9rIG9mICdhXG4gICAgICB8IEVycm9yIG9mICdiXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mMSB+ZjIgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPiBFcnJvciAoZjIgZXJyKVxuICAgICAgfCBPayB4IC0+IE9rIChmMSB4KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMV9zdGFibGVfdW5pdF90ZXN0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKHN0cmluZywgaW50KSBWMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICAgIGxldCB0ZXN0cyA9XG4gICAgICBbIFYxLk9rIFwiZm9vXCIsIFwiKE9rIGZvbylcIiwgXCJcXDAwMFxcMDAzZm9vXCI7IFYxLkVycm9yIDcsIFwiKEVycm9yIDcpXCIsIFwiXFwwMDFcXDAwN1wiIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBSZXN1bHRcbiIsIigqKiBBbiBpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIHVuaXQgdGVzdHMgdG8gY2hlY2sgc3RhYmlsaXR5IG9mIHNleHAgYW5kIGJpbi1pb1xuICAgIHNlcmlhbGl6YXRpb25zICopXG5cbm9wZW4hIEltcG9ydFxuXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG5cblxuICAoKiogW3Rlc3RzXSBpcyBhIGxpc3Qgb2YgKHZhbHVlLCBzZXhwLXJlcHJlc2VudGF0aW9uLCBiaW4taW8tcmVwcmVzZW50YXRpb24pIHRyaXBsZXMuXG4gICAgICBUaGUgdW5pdCB0ZXN0cyBjaGVjayB0aGF0IHRoZSB0eXBlIHByb3Blcmx5IHNlcmlhbGl6ZXMgYW5kXG4gICAgICBkZS1zZXJpYWxpemVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcmVwcmVzZW50YXRpb25zLiAqKVxuICB2YWwgdGVzdHMgOiAodCAqIHN0cmluZyAqIHN0cmluZykgbGlzdFxuZW5kXG5cbigqKiBVbm9yZGVyZWQgY29udGFpbmVyIHRlc3RzIGFyZSBmb3IgdHlwZXMgd2l0aCBzZXJpYWxpemF0aW9ucyB0aGF0IHdpbGwgY29udGFpbiBhXG4gICAgY2VydGFpbiBzZXQgb2YgZWxlbWVudHMgKGVhY2ggcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgc2V4cCBvciBiaW4taW8gc3RyaW5nKSB3aGljaCBtYXlcbiAgICBhcHBlYXIgaW4gYW55IG9yZGVyLCBzdWNoIGFzIGhhc2ggdGFibGVzIGFuZCBoYXNoIHNldHMuICopXG5tb2R1bGUgVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzZXhwcyA6IHN0cmluZyBsaXN0XG4gICAgOyBiaW5faW9faGVhZGVyIDogc3RyaW5nXG4gICAgOyBiaW5faW9fZWxlbWVudHMgOiBzdHJpbmcgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBVbm9yZGVyZWRfY29udGFpbmVyX2FyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCB0ZXN0cyA6ICh0ICogVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0LnQpIGxpc3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3JfZXJyb3JcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPID0gQmFzZS5Pcl9lcnJvclxuXG4gIGxldCBydW4gZiA9IG9rX2V4biAoZiAoKSlcbiAgbGV0IHNhbml0aXplIHMgPSBzXG4gIGxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEV4cGVjdF90ZXN0X2NvbmZpZy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuZW5kXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWdfd2l0aF91bml0X2V4cGVjdCA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYxLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYgPSBSZXN1bHQuU3RhYmxlLlYxLm1hcCB4IH5mMTpmIH5mMjpGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMi50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNlcXVlbmNlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuU2VxdWVuY2UudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLm9mX2xpc3RcbiAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuU2VxdWVuY2UudG9fbGlzdFxuICBlbmQpXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RlcFxuXG4gIHR5cGUgKCdhLCAncykgdCA9ICgnYSwgJ3MpIFN0ZXAudCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mIHsgc3RhdGUgOiAncyB9XG4gICAgfCBZaWVsZCBvZlxuICAgICAgICB7IHZhbHVlIDogJ2FcbiAgICAgICAgOyBzdGF0ZSA6ICdzXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgdHlwZSBIZWFwID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgcG9wX21pbiA6ICdhIHQgLT4gKCdhICogJ2EgdCkgb3B0aW9uXG5lbmRcblxubGV0IG1lcmdlX2FsbCAobW9kdWxlIEhlYXAgOiBIZWFwKSBzZXFzIH5jb21wYXJlID1cbiAgbGV0IG1vZHVsZSBNZXJnZV9hbGxfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBoZWFwIDogKCdhICogJ2EgQmFzZS5TZXF1ZW5jZS50KSBIZWFwLnRcbiAgICAgIDsgbm90X3lldF9pbl9oZWFwIDogJ2EgQmFzZS5TZXF1ZW5jZS50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgY3JlYXRlID0gRmllbGRzLmNyZWF0ZVxuICBlbmRcbiAgaW5cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDpcbiAgICAgIChNZXJnZV9hbGxfc3RhdGUuY3JlYXRlXG4gICAgICAgICB+aGVhcDooSGVhcC5jcmVhdGUgfmNvbXBhcmU6KGZ1biBhIGIgLT4gQmFzZS5Db21wYXJhYmxlLmxpZnQgY29tcGFyZSB+Zjpmc3QgYSBiKSlcbiAgICAgICAgIH5ub3RfeWV0X2luX2hlYXA6c2VxcylcbiAgICB+ZjooZnVuIHsgaGVhcDsgbm90X3lldF9pbl9oZWFwIH0gLT5cbiAgICAgIG1hdGNoIG5vdF95ZXRfaW5faGVhcCB3aXRoXG4gICAgICB8IHNlcSA6OiBub3RfeWV0X2luX2hlYXAgLT5cbiAgICAgICAgKG1hdGNoIEV4cGVydC5uZXh0X3N0ZXAgc2VxIHdpdGhcbiAgICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgc3RhdGUgPSB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9IH1cbiAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VxIH0gLT5cbiAgICAgICAgICAgU2tpcCB7IHN0YXRlID0geyBub3RfeWV0X2luX2hlYXAgPSBzZXEgOjogbm90X3lldF9pbl9oZWFwOyBoZWFwIH0gfVxuICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gZWx0OyBzdGF0ZSA9IHNlcSB9IC0+XG4gICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IHsgbm90X3lldF9pbl9oZWFwOyBoZWFwID0gSGVhcC5hZGQgaGVhcCAoZWx0LCBzZXEpIH0gfSlcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIEhlYXAucG9wX21pbiBoZWFwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBEb25lXG4gICAgICAgICB8IFNvbWUgKChlbHQsIHNlcSksIGhlYXApIC0+XG4gICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBlbHQ7IHN0YXRlID0geyBoZWFwOyBub3RfeWV0X2luX2hlYXAgPSBbIHNlcSBdIH0gfSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2tfaW50Zlxub3BlbiBCYXNlX3F1aWNrY2hlY2tcbm1vZHVsZSBGbG9hdCA9IEJhc2UuRmxvYXRcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBPcHRpb24gPSBCYXNlLk9wdGlvblxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgU2V4cCA9IEJhc2UuU2V4cFxuXG5tb2R1bGUgUG9seW1vcnBoaWNfdHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB2YXJpYW50MiA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdmFyaWFudDMgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdmFyaWFudDQgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB2YXJpYW50NSA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIHwgYEUgb2YgJ2VcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdmFyaWFudDYgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgfCBgRiBvZiAnZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IpIHR1cGxlMiA9ICdhICogJ2IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYykgdHVwbGUzID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0dXBsZTQgPSAnYSAqICdiICogJ2MgKiAnZCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHR1cGxlNSA9ICdhICogJ2IgKiAnYyAqICdkICogJ2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSB0dXBsZTYgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlICogJ2ZcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgJ3IpIGZuMiA9ICdhIC0+ICdiIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsICdyKSBmbjMgPSAnYSAtPiAnYiAtPiAnYyAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsICdyKSBmbjQgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgLSdlLCAncikgZm41ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgLSdmLCAncikgZm42ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ2YgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbmVuZFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuXG4gIGxldCBvZl9oYXNoICh0eXBlIGEpIChtb2R1bGUgTSA6IERlcml2aW5nX2hhc2ggd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgb2ZfaGFzaF9mb2xkIE0uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNlxuICBsZXQgb2ZfcHJlZGljYXRlIGEgYiB+ZiA9IHVubWFwICh2YXJpYW50MiBhIGIpIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBgQSB4IGVsc2UgYEIgeClcbiAgbGV0IHNpbmdsZXRvbiAoKSA9IG9wYXF1ZVxuICBsZXQgZG91YmxldG9uIGYgPSBvZl9wcmVkaWNhdGUgKHNpbmdsZXRvbiAoKSkgKHNpbmdsZXRvbiAoKSkgfmZcbiAgbGV0IGVudW0gXyB+ZiA9IHVubWFwIGludCB+ZlxuXG4gIGxldCBvZl9saXN0IGxpc3QgfmVxdWFsID1cbiAgICBsZXQgZiB4ID1cbiAgICAgIG1hdGNoIExpc3QuZmluZGkgbGlzdCB+ZjooZnVuIF8geSAtPiBlcXVhbCB4IHkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfbGlzdDogdmFsdWUgbm90IGZvdW5kXCJcbiAgICAgIHwgU29tZSAoaSwgXykgLT4gaVxuICAgIGluXG4gICAgZW51bSAoTGlzdC5sZW5ndGggbGlzdCkgfmZcbiAgOztcblxuICBsZXQgb2ZfZnVuIGYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgKGYgKCkpIHggfnNpemUgfmhhc2gpXG5cbiAgbGV0IGNvbXBhcmlzb24gfmNvbXBhcmUgfmVxIH5sdCB+Z3QgPVxuICAgIHVubWFwXG4gICAgICAodmFyaWFudDMgbHQgKHNpbmdsZXRvbiAoKSkgZ3QpXG4gICAgICB+ZjooZnVuIHggLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlIHggZXEgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBgQSB4IGVsc2UgaWYgYyA+IDAgdGhlbiBgQyB4IGVsc2UgYEIgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJhdG9yXG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBzaW5nbGV0b24gPSByZXR1cm5cblxuICBsZXQgZG91YmxldG9uIHggeSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGlmIFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tIHRoZW4geCBlbHNlIHkpXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZiAoKSkgfnNpemUgfnJhbmRvbSlcblxuICBsZXQgb2Zfc2VxdWVuY2UgfnAgc2VxID1cbiAgICBpZiBGbG9hdC4oIDw9ICkgcCAwLiB8fCBGbG9hdC4oID4gKSBwIDEuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiR2VuZXJhdG9yLm9mX3NlcXVlbmNlOiBwcm9iYWJpbGl0eSBbJWZdIG91dCBvZiBib3VuZHNcIiBwKTtcbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5maW5pc2g6KGZ1biAoKSAtPiBmYWlsd2l0aCBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcmFuIG91dCBvZiB2YWx1ZXNcIilcbiAgICAgIH5mOihmdW4gKCkgeCB+ayAtPiB3ZWlnaHRlZF91bmlvbiBbIHAsIHNpbmdsZXRvbiB4OyAxLiAtLiBwLCBvZl9mdW4gayBdKVxuICA7O1xuXG4gIGxldCBnZW9tZXRyaWMgPSBHZW5lcmF0b3IuaW50X2dlb21ldHJpY1xuICBsZXQgc21hbGxfbm9uX25lZ2F0aXZlX2ludCA9IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50XG4gIGxldCBzbWFsbF9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnRcbiAgbGV0IGxpc3Rfd2l0aF9sZW5ndGggbGVuZ3RoIHQgPSBsaXN0X3dpdGhfbGVuZ3RoIHQgfmxlbmd0aFxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTZcbiAgbGV0IGZuMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMlxuICBsZXQgZm4zID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4zXG4gIGxldCBmbjQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjRcbiAgbGV0IGZuNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNVxuICBsZXQgZm42ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm42XG5cbiAgbGV0IGNvbXBhcmVfZm4gZG9tID1cbiAgICBmbiBkb20gaW50ID4+fCBmdW4gZ2V0X2luZGV4IHggeSAtPiBbJWNvbXBhcmU6IGludF0gKGdldF9pbmRleCB4KSAoZ2V0X2luZGV4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsX2ZuIGRvbSA9IGNvbXBhcmVfZm4gZG9tID4+fCBmdW4gY21wIHggeSAtPiBJbnQuKCA9ICkgKGNtcCB4IHkpIDBcbmVuZFxuXG5tb2R1bGUgU2hyaW5rZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaHJpbmtlclxuXG4gIGxldCBlbXB0eSAoKSA9IGF0b21pY1xuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNlxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBHZW5lcmF0b3JcbiAgZW5kXG5cbiAgaW5jbHVkZSBHZW5lcmF0b3IuTW9uYWRfaW5maXhcblxuICBsZXQgcmV0dXJuID0gR2VuZXJhdG9yLnJldHVyblxuZW5kXG5cbm1vZHVsZSBDb25maWd1cmUgKENvbmZpZyA6IFF1aWNrY2hlY2tfY29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIGxldCBub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG4gIGxldCByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2Ugbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0ciAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFslaGFzaDogc3RyaW5nXSBzdHIpXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2VlZCBzZWVkIDogVGVzdC5Db25maWcuU2VlZC50ID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IE5vbmRldGVybWluaXN0aWNcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBEZXRlcm1pbmlzdGljIHN0cmluZ1xuICA7O1xuXG4gIGxldCBtYWtlX3Nocmlua19jb3VudCA9IGZ1bmN0aW9uXG4gICAgfCBgRXhoYXVzdGl2ZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBgTGltaXQgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgOiBUZXN0LkNvbmZpZy50ID1cbiAgICB7IHNlZWQgPSBtYWtlX3NlZWQgKE9wdGlvbi52YWx1ZSBzZWVkIH5kZWZhdWx0OmRlZmF1bHRfc2VlZClcbiAgICA7IHNpemVzID0gT3B0aW9uLnZhbHVlIHNpemVzIH5kZWZhdWx0OmRlZmF1bHRfc2l6ZXNcbiAgICA7IHRlc3RfY291bnQgPSBPcHRpb24udmFsdWUgdHJpYWxzIH5kZWZhdWx0OmRlZmF1bHRfdHJpYWxfY291bnRcbiAgICA7IHNocmlua19jb3VudCA9XG4gICAgICAgIG1ha2Vfc2hyaW5rX2NvdW50IChPcHRpb24udmFsdWUgc2hyaW5rX2F0dGVtcHRzIH5kZWZhdWx0OmRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzKVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV90ZXN0X20gKHR5cGUgYSkgfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgOiAobW9kdWxlIFRlc3QuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IE9wdGlvbi52YWx1ZSBzaHJpbmtlciB+ZGVmYXVsdDpTaHJpbmtlci5hdG9taWNcbiAgICAgIGxldCBzZXhwX29mX3QgPSBPcHRpb24udmFsdWUgc2V4cF9vZiB+ZGVmYXVsdDpbJXNleHBfb2Y6IF9dXG4gICAgZW5kXG4gICAgaW5cbiAgICAobW9kdWxlIE0pXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV92YWx1ZSA/KHNlZWQgPSBkZWZhdWx0X3NlZWQpID8oc2l6ZSA9IDMwKSBnZW4gPVxuICAgIGxldCByYW5kb20gPSByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkIGluXG4gICAgR2VuZXJhdG9yLmdlbmVyYXRlIGdlbiB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV9zZXF1ZW5jZSA/c2VlZCA/c2l6ZXMgZ2VuID1cbiAgICBsZXQgY29uZmlnID1cbiAgICAgIG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzOihTb21lIEludC5tYXhfdmFsdWUpIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZVxuICAgIGluXG4gICAgbGV0IHJldHVybiA9IHJlZiBTZXF1ZW5jZS5lbXB0eSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gcmV0dXJuIDo9IHNlcXVlbmNlKTtcbiAgICAhcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGl0ZXIgP3NlZWQgP3NpemVzID90cmlhbHMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0czpOb25lIGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiBTZXF1ZW5jZS5pdGVyIHNlcXVlbmNlIH5mKVxuICA7O1xuXG4gIGxldCB0ZXN0ID9zZWVkID9zaXplcyA/dHJpYWxzID9zaHJpbmtlciA/c2hyaW5rX2F0dGVtcHRzID9zZXhwX29mID9leGFtcGxlcyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW5fZXhuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X29yX2Vycm9yXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/dHJpYWxzXG4gICAgICAgID9zaHJpbmtlclxuICAgICAgICA/c2hyaW5rX2F0dGVtcHRzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgID9leGFtcGxlc1xuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH50cmlhbHNcbiAgICAgICAgfmRpc3RpbmN0X3ZhbHVlc1xuICAgICAgICB+Y29tcGFyZVxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGtleVxuXG4gICAgICBsZXQgKGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KSA9IGNvbXBhcmVcblxuICAgICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IFNvbWUgc2V4cF9vZiAtPiBzZXhwX29mXG4gICAgICAgIHwgTm9uZSAtPiBzZXhwX29mX29wYXF1ZVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuICAgIGluXG4gICAgbGV0IGZhaWwgc2V0ID1cbiAgICAgIGxldCBleHBlY3RfY291bnQgPSBkaXN0aW5jdF92YWx1ZXMgaW5cbiAgICAgIGxldCBhY3R1YWxfY291bnQgPSBTZXQubGVuZ3RoIHNldCBpblxuICAgICAgbGV0IHZhbHVlcyA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgc2V4cF9vZl9lbHQgLT4gU29tZSBbJXNleHAgKFNldC50b19saXN0IHNldCA6IGVsdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW5zdWZmaWNpZW50IGRpc3RpbmN0IHZhbHVlc1wiXG4gICAgICAgICAgICAodHJpYWxzIDogaW50KVxuICAgICAgICAgICAgKGV4cGVjdF9jb3VudCA6IGludClcbiAgICAgICAgICAgIChhY3R1YWxfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAodmFsdWVzIDogKFNleHAudCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICAgIGluXG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBsZXQgc2V0ID0gcmVmIChTZXQuZW1wdHkgKG1vZHVsZSBNKSkgaW5cbiAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIHNldCA6PSBTZXQuYWRkICFzZXQgZWx0O1xuICAgICAgICBpZiBTZXQubGVuZ3RoICFzZXQgPj0gZGlzdGluY3RfdmFsdWVzIHRoZW4gci5yZXR1cm4gKCkpO1xuICAgICAgZmFpbCAhc2V0KVxuICA7O1xuXG4gIGxldCB0ZXN0X2Nhbl9nZW5lcmF0ZVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgPyh0cmlhbHMgPSBkZWZhdWx0X2Nhbl9nZW5lcmF0ZV90cmlhbF9jb3VudClcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCByID0gcmVmIFtdIGluXG4gICAgbGV0IGZfYW5kX2VucXVldWUgcmV0dXJuIHggPSBpZiBmIHggdGhlbiByZXR1cm4gYENhbl9nZW5lcmF0ZSBlbHNlIHIgOj0geCA6OiAhciBpblxuICAgIG1hdGNoXG4gICAgICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZl9hbmRfZW5xdWV1ZSByZXR1cm4ucmV0dXJuKTtcbiAgICAgICAgYENhbm5vdF9nZW5lcmF0ZSlcbiAgICB3aXRoXG4gICAgfCBgQ2FuX2dlbmVyYXRlIC0+ICgpXG4gICAgfCBgQ2Fubm90X2dlbmVyYXRlIC0+XG4gICAgICAobWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2Fubm90IGdlbmVyYXRlXCJcbiAgICAgICB8IFNvbWUgc2V4cF9vZl92YWx1ZSAtPlxuICAgICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJjYW5ub3QgZ2VuZXJhdGVcIiB+YXR0ZW1wdHM6KCFyIDogdmFsdWUgbGlzdCldKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29uZmlndXJlIChzdHJ1Y3RcbiAgICBsZXQgZGVmYXVsdF9zZWVkID0gYERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcblxuICAgIGxldCBkZWZhdWx0X3RyaWFsX2NvdW50ID1cbiAgICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICB8IFczMiAtPiAxXzAwMFxuICAgIDs7XG5cbiAgICBsZXQgZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQgPSAxMF8wMDBcbiAgICBsZXQgZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMgPSBgTGltaXQgMTAwMFxuXG4gICAgbGV0IGRlZmF1bHRfc2l6ZXMgPVxuICAgICAgU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFMxID0gUzFcbm1vZHVsZSB0eXBlIFMyID0gUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gU19pbnRcbm1vZHVsZSB0eXBlIFNfcmFuZ2UgPSBTX3JhbmdlXG5cbnR5cGUgbm9ucmVjIHNlZWQgPSBzZWVkXG50eXBlIG5vbnJlYyBzaHJpbmtfYXR0ZW1wdHMgPSBzaHJpbmtfYXR0ZW1wdHNcblxubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWcgPSBRdWlja2NoZWNrX2NvbmZpZ1xubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWd1cmVkID0gUXVpY2tjaGVja19jb25maWd1cmVkXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja2FibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udlxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZCA9IENvbnZfZmlsdGVyZWRcbm1vZHVsZSB0eXBlIENvbnYxID0gQ29udjFcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQxID0gQ29udl9maWx0ZXJlZDFcbm1vZHVsZSB0eXBlIFMgPSBRdWlja2NoZWNrLlNcbm1vZHVsZSB0eXBlIFMxID0gUXVpY2tjaGVjay5TMVxubW9kdWxlIHR5cGUgUzIgPSBRdWlja2NoZWNrLlMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFF1aWNrY2hlY2suU19pbnRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnYgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDogUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPVxuc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZTFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnYxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZDFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuIiwiaW5jbHVkZSBCYXNlLk9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cblxubGV0IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IGkgPSBpZiBpIDwgMCB0aGVuIGkgKyBsZW5ndGhfZnVuIHQgZWxzZSBpXG5cbmxldCBzbGljZSB+bGVuZ3RoX2Z1biB+c3ViX2Z1biB0IHN0YXJ0IHN0b3AgPVxuICBsZXQgc3RvcCA9IGlmIHN0b3AgPSAwIHRoZW4gbGVuZ3RoX2Z1biB0IGVsc2Ugc3RvcCBpblxuICBsZXQgcG9zID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RhcnQgaW5cbiAgbGV0IGxlbiA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0b3AgLSBwb3MgaW5cbiAgc3ViX2Z1biB0IH5wb3MgfmxlblxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5vcGVuIFBlcm1zLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQmFzZS5BcnJheVxubW9kdWxlIENvcmVfc2VxdWVuY2UgPSBTZXF1ZW5jZVxuXG5pbmNsdWRlIChcbiAgQmFzZS5BcnJheSA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGdsb2JhbGl6ZSwgc2V4cF9ncmFtbWFyXVxuICBlbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxubW9kdWxlIFByaXZhdGUgPSBCYXNlLkFycmF5LlByaXZhdGVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkFycmF5XG5cbiAgbGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbiAgbGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIHQgc3RhcnQgc3RvcFxuICA7O1xuXG4gIGxldCBuZ2V0IHQgaSA9IHQuKG5vcm1hbGl6ZSB0IGkpXG4gIGxldCBuc2V0IHQgaSB2ID0gdC4obm9ybWFsaXplIHQgaSkgPC0gdlxuXG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIG9wZW4gQmFzZS5BcnJheVxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgc2V0ID0gc2V0XG4gIGVuZFxuXG4gICgqIFNlZSBPQ2FtbCBwZXJmIG5vdGVzIGZvciB3aHkgdGhlc2UgYXJyYXkgYmxpdHMgYXJlIHNwZWNpYWwgY2FzZWQgLS0gaW4gcGFydGljdWxhcixcbiAgICAgdGhlIHNlY3Rpb24gZW50aXRsZWQgXCJGYXN0LCBTbG93IGFuZCBJbmNvcnJlY3QgQXJyYXkgYmxpdHNcIiBvZlxuICAgICBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMzAyMjAwMDAyMjkvaHR0cDovL2phbmVzdHJlZXQuZ2l0aHViLmNvbS9vY2FtbC1wZXJmLW5vdGVzLmh0bWwgKilcbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIHR5cGUgdF8gPSBpbnQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSAoID0gKVxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDBcblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgICAgW0BAbm9hbGxvY11cbiAgICBlbmRcblxuICAgIGV4dGVybmFsIGdldCA6ICh0X1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldFxuICAgICAgOiAgKHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgICA6ICAodF9bQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICAgIDogICh0X1tAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgICAgIGxldCBlcXVhbCA9IEJhc2UuRmxvYXQuZXF1YWxcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEuIGVsc2UgMC5cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDAuXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUGVybWlzc2lvbmVkID0gc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0XG5cbiAgaW5jbHVkZVxuICAgIEluZGV4ZWRfY29udGFpbmVyLlMxX3dpdGhfY3JlYXRvcnNfcGVybWlzc2lvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcblxuICBpbmNsdWRlIEJsaXQuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gIGV4dGVybmFsIGdldFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKCgnYSwgWz4gd3JpdGUgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgoJ2EsIFs+IHdyaXRlIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gKGZsb2F0LCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZV9sb2NhbCA6IGxlbjppbnQgLT4gJ2EgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0W0Bsb2NhbF0pXG4gIHZhbCBpbml0IDogaW50IC0+IGY6KChpbnQgLT4gJ2EpW0Bsb2NhbF0pIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvcHlfbWF0cml4XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBhcHBlbmQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29uY2F0IDogKCdhLCBbPiByZWFkIF0pIHQgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29weSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWxsIDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkaW5nX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG1hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgaXRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZm9sZGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZGluZ19tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYWNjICogKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiAnYWNjXG5cbiAgdmFsIHNvcnRcbiAgICA6ICA/cG9zOmludFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gKCdhLCBbPiByZWFkX3dyaXRlIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICB2YWwgc3RhYmxlX3NvcnQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cblxuICB2YWwgdHJhbnNwb3NlX2V4blxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbm9ybWFsaXplIDogKCdhLCBfKSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbmdldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICgnYSBvcHRpb24sIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgaXRlcjJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGQyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYiAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9yX2FsbDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgZXhpc3RzMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gYm9vbFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHN3YXAgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gZjooKCdhIC0+ICdhKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcbiAgdmFsIGZpbmRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSAqICdhKSBvcHRpb25cblxuICB2YWwgcmVkdWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhXG5cbiAgdmFsIHBlcm11dGVcbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50XG4gICAgLT4gP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gdW5pdFxuXG4gIHZhbCByYW5kb21fZWxlbWVudCA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuICB2YWwgemlwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHNvcnRlZF9jb3B5XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGxhc3QgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gYm9vbFxuICB2YWwgdG9fc2VxdWVuY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSBQZXJtaXNzaW9uZWQgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIG1vZHVsZSBJbnQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoaW50LCAncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBCbGl0LlNfcGVybWlzc2lvbnMgd2l0aCB0eXBlICdwZXJtcyB0IDo9ICdwZXJtcyB0XG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOihbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6KFs+IHdyaXRlIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChmbG9hdCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgZ2V0XG4gICAgICA6ICAoWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXRcbiAgICAgIDogIChbPiB3cml0ZSBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICAgIDogIChbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBmbG9hdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgICAgOiAgKFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6KFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDooWz4gd3JpdGUgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICB2YWwgb2ZfYXJyYXlfaWQgOiAnYSBhcnJheSAtPiAoJ2EsIFs8IHJlYWRfd3JpdGUgXSkgdFxuICB2YWwgdG9fYXJyYXlfaWQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiAnYSBhcnJheVxuICB2YWwgdG9fc2VxdWVuY2VfaW1tdXRhYmxlIDogKCdhLCBbPiBpbW11dGFibGUgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgaW5jbHVkZSBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHR5cGVyZXBdXG5cbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVC5JbnRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuRmxvYXRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBsZXQgdG9fYXJyYXlfaWQgPSBGbi5pZFxuICBsZXQgb2ZfYXJyYXlfaWQgPSBGbi5pZFxuXG4gIGluY2x1ZGUgKFQgOiBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICBsZXQgdG9fYXJyYXkgPSBjb3B5XG4gIGxldCB0b19zZXF1ZW5jZV9pbW11dGFibGUgPSB0b19zZXF1ZW5jZV9tdXRhYmxlXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5TMV93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKCdhIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgnYSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfbG9jYWwgOiBsZW46aW50IC0+ICdhIC0+ICgnYSB0W0Bsb2NhbF0pXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gZmxvYXQgdFxuICB2YWwgaW5pdCA6IGludCAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICdhIHQgdFxuICB2YWwgY29weV9tYXRyaXggOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBhcHBlbmQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgY29uY2F0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbGwgOiAnYSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG5cbiAgaW5jbHVkZSBCbGl0LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZvbGRpbmdfbWFwIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmb2xkX21hcCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSkgLT4gJ2FjYyAqICdiIHRcbiAgdmFsIG1hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KChpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZvbGRpbmdfbWFwaVxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdiIHRcblxuICB2YWwgZm9sZF9tYXBpXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICdiIHRcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gaW5pdDonYWNjIC0+ICdhY2NcbiAgdmFsIHNvcnQgOiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIHN0YWJsZV9zb3J0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgY29uY2F0X21hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbmlfdGYgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0IDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0cmFuc3Bvc2UgOiAnYSB0IHQgLT4gJ2EgdCB0IG9wdGlvblxuICB2YWwgdHJhbnNwb3NlX2V4biA6ICdhIHQgdCAtPiAnYSB0IHRcbiAgdmFsIG5vcm1hbGl6ZSA6ICdhIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgbmdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICdhIG9wdGlvbiB0IC0+ICdhIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBpdGVyMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIG1hcDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSkgLT4gJ2MgdFxuXG4gIHZhbCBmb2xkMl9leG5cbiAgICA6ICAnYSB0XG4gICAgLT4gJ2IgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdiIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBmb3JfYWxsMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0czJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHRcbiAgdmFsIHN3YXAgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgcmV2X2lucGxhY2UgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9yZXYgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICdhIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAnYSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIHBlcm11dGUgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ID9wb3M6aW50IC0+ID9sZW46aW50IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIHppcCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IpIHQgLT4gJ2EgdCAqICdiIHRcbiAgdmFsIHNvcnRlZF9jb3B5IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBsYXN0IDogJ2EgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuZW5kXG5cbmluY2x1ZGUgKFQgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIGFycmF5KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuSW50XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuRmxvYXRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIF8gKE0gOiBTKSA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtKSB0X1xuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtKSB0IDo9ICgnYSwgJ3Blcm0pIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF8gPSAnYSB0XG5lbmRcblxubW9kdWxlIF8gKE0gOiBQZXJtaXNzaW9uZWQpIDogc2lnXG4gIHR5cGUgJ2EgdF9cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICdhIHRfID0gKCdhLCByZWFkX3dyaXRlKSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVHlwZXJlcF9saWIuU3RkXG5pbmNsdWRlIEJhc2UuTGlzdFxuXG50eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzc29jXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhICogJ2IpIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCBjb21wYXJlICh0eXBlIGEgYikgY29tcGFyZV9hIGNvbXBhcmVfYiA9IFslY29tcGFyZTogKGEgKiBiKSBsaXN0XVxuZW5kXG5cbmxldCB0b19zdHJpbmcgfmYgdCA9XG4gIFNleHBsaWIuU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIHggLT4gU2V4cGxpYi5TZXhwLkF0b20geCkgKG1hcCB0IH5mKSlcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdFxubGV0IGdlbl9ub25fZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3Rfbm9uX2VtcHR5XG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3dpdGhfbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5sZW5ndGhcbjs7XG5cbmxldCBnZW5fZmlsdGVyZWQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RfZmlsdGVyZWRcbmxldCBnZW5fcGVybXV0YXRpb25zID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3Blcm11dGF0aW9uc1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubGlzdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubGlzdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2h0YmxfaW50ZlxubW9kdWxlIEhhc2hhYmxlID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBIYXNodGJsX2ludGYuTWVyZ2VfaW50b19hY3Rpb25cbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgQ3JlYXRvcnMgPSBIYXNodGJsLkNyZWF0b3JzXG5cbmluY2x1ZGUgKFxuICBIYXNodGJsIDpcbiAgc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEJhc2UuSGFzaHRibC5TX3dpdGhvdXRfc3VibW9kdWxlcyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXBcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIH5jb21iaW5lXG4gICAgICBsXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfc3RhYmxlID0gU19zdGFibGUgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X3N0YWJsZSA9IEtleV9zdGFibGVcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsLlBvbHlcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZjNlNDQ1Yy00OTkyLTExZTYtYTI3OS0zNzAzYmUzMTFlN2JcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJDb3JlX2hhc2h0YmwuYmluX3JlYWRfdF86IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5cbiAgdHlwZSBrZXkgPSBULktleS50XG4gIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSB0ID0gKFQuS2V5LnQsICdhKSBoYXNodGJsXG4gIHR5cGUgJ2Ega2V5XyA9IFQuS2V5LnRcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuS2V5LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoXG4gICAgSGFzaHRibCA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBoYXNodGJsXG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCA9IEhhc2h0YmwuZXF1YWxcbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IHQgPSBpbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9rZXkgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gUG9seS5zZXhwX29mX3QgVC5LZXkuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuS2V5XG4gICAgICAgIGluY2x1ZGUgS2V5J1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gS2V5LnQgKiAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjhmYWJhYjBhLTQ5OTItMTFlNi04Y2NhLTliYTJjNDY4NmQ5ZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNodGJsXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBrZXksIGRhdGEgPSBuZXh0ICgpIGluXG4gICAgICAgICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJIYXNodGJsLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBLZXkudF1cbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgaGFzaHRibCBpcyByZWxpZWQgb24gYnkgc3RhYmxlIG1vZHVsZXNcbiAgICAgICAoZS5nLiBIYXNodGFibGUuU3RhYmxlKSBhbmQgaXMgdGhlcmVmb3JlIGFzc3VtZWQgdG8gYmUgc3RhYmxlLiAgU28sIGlmIHRoZSBrZXkgYW5kXG4gICAgICAgZGF0YSBjYW4gcHJvdmlkZSBhIHN0YWJsZSB3aXRuZXNzZXMsIHRoZW4gd2UgY2FuIHNhZmVseSB0aGUgaGFzaHRibCBpcyBhbHNvXG4gICAgICAgc3RhYmxlLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBkYXRhKSAoX2RhdGFfc3RhYmxlX3dpdG5lc3MgOiBkYXRhIFN0YWJsZV93aXRuZXNzLnQpXG4gICAgICA6IGRhdGEgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICA9XG4gICAgICBsZXQgKF8gOiBrZXkgU3RhYmxlX3dpdG5lc3MudCkgPSBLZXknLnN0YWJsZV93aXRuZXNzIGluXG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9zdGFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgbGV0IGhhc2hhYmxlID1cbiAgICAgIHsgSGFzaGFibGUuaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlIChLZXkgOiBLZXlfc3RhYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSlcbmVuZFxuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTVxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIEZvcl9kZXJpdmluZyA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ID0gc3RydWN0XG4gIGluY2x1ZGUgKEhhc2h0YmwgOiBIYXNodGJsLkZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuXG4gIG1vZHVsZSB0eXBlIE1fcXVpY2tjaGVjayA9IE1fcXVpY2tjaGVja1xuXG4gIGxldCBvZl9hbGlzdF9vcHRpb24gbSBhbGlzdCA9IFJlc3VsdC5vayAob2ZfYWxpc3Rfb3JfZXJyb3IgbSBhbGlzdClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19vYnNlcnZlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5vYnNlcnZlcjogKEtleS50ICogZGF0YSkgTGlzdC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2FsaXN0XG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX3Nocmlua2VyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLnNocmlua2VyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAgICB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgICAgICAgIH5mX2ludmVyc2U6dG9fYWxpc3RcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5pbmNsdWRlIEJhc2UuSGFzaF9zZXRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFNfc3RhYmxlID0gU19zdGFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEhhc2h0YmwuS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBFbHQgPSBIYXNodGJsLktleVxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBIYXNodGJsLktleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBFbHRfc3RhYmxlID0gSGFzaHRibC5LZXlfc3RhYmxlXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3BsYWluXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBULkVsdC50XG4gIHR5cGUgbm9ucmVjIHQgPSBlbHQgdFxuXG4gIGxldCBlcXVhbCA9IGVxdWFsXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULkVsdC50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gUG9seS5zZXhwX29mX3QgVC5FbHQuc2V4cF9vZl90IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULkVsdFxuICAgICAgICBpbmNsdWRlIFhcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYWQzODE2NzItNDk5Mi0xMWU2LTllMzYtYjc2ZGM4Y2Q0NjZmXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2hfc2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCB2ID0gbmV4dCAoKSBpblxuICAgICAgICAgIGFkZCB0IHZcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgaGFzaF9zZXQgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGVsdCBpcyBzdGFibGUpIC4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgbGV0IChfIDogZWx0IFN0YWJsZV93aXRuZXNzLnQpID0gWC5zdGFibGVfd2l0bmVzcyBpblxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0XG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3N0YWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBFbHRcblxuICAgIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEVsdCA6IEVsdF9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZSAoRWx0IDogRWx0X3N0YWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGUgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHQpXG5lbmRcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5lbmRcblxubGV0IGhhc2hhYmxlID0gUHJpdmF0ZS5oYXNoYWJsZVxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiBLZXkudCBMaXN0MC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2xpc3Rcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSkgfmZfaW52ZXJzZTp0b19saXN0XG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IU1hcH1bTWFwXX0uIFNlZSB0aG9zZSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uXG4gICAgb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezEsMiwzLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW01hcF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMzXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgTWFwID0gQmFzZS5NYXBcbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBNYXAuT3JfZHVwbGljYXRlXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gTWFwLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gTWFwLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFRyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXkgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGVfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcbiAgZW5kXG5cbiAgdHlwZSAoJ3QsICdjKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ3QgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2MpXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcblxuICB2YWwga2V5X3NldFxuICAgIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAndiBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAoJ2sga2V5ICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sga2V5IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnayBrZXkgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaHRibF9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YpIEhhc2h0YmwudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbU2V0LnRdLiAqKVxuICB2YWwgb2Zfa2V5X3NldFxuICAgIDogICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50XG4gICAgLT4gZjooKCdrIGtleSAtPiAndilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdhIGNtcFxuICB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEtleSA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gJ2IgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICdiIHRcbiAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gS2V5LnRcbiAgICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChLIDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICAgIHR5cGUgXyB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSArJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICdiIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSBLZXkudFxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXkgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogIEtleS50IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBLZXkudCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIFNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5NYXAuRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSBNID0gQmFzZS5NYXAuTVxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFsqYmluKl0gZnVuY3Rpb25zIHN1cHBvcnQgYmluLWlvIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2MpIEtleV9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50IC0+IEJpbl9wcm90LlNoYXBlLnRcblxuICB2YWwgYmluX3NpemVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlNpemUuc2l6ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5TaXplLnNpemVyXG5cbiAgdmFsIGJpbl93cml0ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuV3JpdGUud3JpdGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuV3JpdGUud3JpdGVyXG5cbiAgdmFsIGJpbl9yZWFkX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIHZhbCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgOiAgKG1vZHVsZSBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBTdGFibGVfd2l0bmVzcy50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTdGFibGVfd2l0bmVzcy50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBNYXBfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IChpbnQsIHN0cmluZykgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDAwNjc0YmU5ZmU4ZGZlOWU5YWQ0NzYwNjdkN2Q4MTAxIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IG1hcCAoaywgZGlmZikgfmYxIH5mMiA9XG4gICAgICAgIGxldCBrID0gZjEgayBpblxuICAgICAgICBsZXQgZGlmZiA9XG4gICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgfCBgTGVmdCB2IC0+IGBMZWZ0IChmMiB2KVxuICAgICAgICAgIHwgYFJpZ2h0IHYgLT4gYFJpZ2h0IChmMiB2KVxuICAgICAgICAgIHwgYFVuZXF1YWwgKHYxLCB2MikgLT4gYFVuZXF1YWwgKGYyIHYxLCBmMiB2MilcbiAgICAgICAgaW5cbiAgICAgICAgaywgZGlmZlxuICAgICAgOztcblxuICAgICAgbGV0IG1hcF9kYXRhIHQgfmYgPSBtYXAgdCB+ZjE6Rm4uaWQgfmYyOmZcblxuICAgICAgbGV0IGxlZnQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYExlZnQgeCB8IGBVbmVxdWFsICh4LCBfKSAtPiBTb21lIHhcbiAgICAgICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmlnaHQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gQmFzZS5NYXAuTWVyZ2VfZWxlbWVudFxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgb2JzX3RyZWUga19vYnMgdl9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RyZWUga19vYnMgdl9vYnNcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXAuVXNpbmdfY29tcGFyYXRvclxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaTooSGFzaHRibC5pdGVyaSBoYXNodGJsKSB3aXRoXG4gICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5mYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIk1hcC5vZl9oYXNodGJsX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGtleVxuICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCB0cmVlX29mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIHRvX3RyZWUgKG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXQgfmNvbXBhcmF0b3IgdCA9XG4gICAgQmFzZS5TZXQuVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKExpc3QudG9fYXJyYXkgKGtleXMgdCkpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0ID0ga2V5X3NldCB+Y29tcGFyYXRvciAob2ZfdHJlZSB+Y29tcGFyYXRvciB0KVxuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPVxuICAgIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yOihCYXNlLlNldC5jb21wYXJhdG9yIGtleV9zZXQpXG4gICAgICAoQXJyYXkubWFwIChCYXNlLlNldC50b19hcnJheSBrZXlfc2V0KSB+ZjooZnVuIGtleSAtPiBrZXksIGYga2V5KSlcbiAgOztcblxuICBsZXQgdHJlZV9vZl9rZXlfc2V0IGtleV9zZXQgfmYgPSB0b190cmVlIChvZl9rZXlfc2V0IGtleV9zZXQgfmYpXG5lbmRcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBNYXAuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTWFwLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjKVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2XG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgdCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpXG5lbmRcblxubGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpIHRcbmxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBjb21wYXJhdG9yX3MgPSBCYXNlLk1hcC5jb21wYXJhdG9yX3NcblxudHlwZSAnayBrZXkgPSAna1xudHlwZSAnYyBjbXAgPSAnY1xuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIE1hcFxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl90cmVlIG0gPSBNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbiAgaW5jbHVkZVxuICAgIE1hcC5DcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2EsICdiLCAnYykgTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBNYXAuV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2sga2V5XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBjbXBcblxuICB2YWwgdmFsaWRhdGVcbiAgICA6ICBuYW1lOignayAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcbmVuZClcblxubW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cblxubGV0IGZpbmRfb3JfZXJyb3IgdCBrZXkgPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBTb21lIGRhdGEgLT4gT2sgZGF0YVxuICB8IE5vbmUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwia2V5IG5vdCBmb3VuZFwiIH5fOihrZXkgOiBrZXkpXVxuOztcblxubGV0IG1lcmdlX3NrZXdlZCA9IE1hcC5tZXJnZV9za2V3ZWRcbmxldCBvZl9oYXNodGJsX2V4biBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIHZhbCB0X29mX3NleHBcbiAgICA6ICAoQmFzZS5TZXhwLnQgLT4gJ2EgS2V5LnQpXG4gICAgLT4gKEJhc2UuU2V4cC50IC0+ICdiKVxuICAgIC0+IEJhc2UuU2V4cC50XG4gICAgLT4gKCdhLCAnYiwgXykgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcblxuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoS2V5KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBzaW5nbGV0b24gayB2ID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmZcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfaGFzaHRibF9leG4gaGFzaHRibCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibFxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZlxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmlcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmlcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXQga2V5X3NldCB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gVXNpbmdfY29tcGFyYXRvci50cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvciB0XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbl9rIGdlbl92ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGdlbl9rIGdlbl92XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoS2V5IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgb3BlbiBUcmVlXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgYSBiIGMgPSB0X29mX3NleHBfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBhID0gc2luZ2xldG9uIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBvZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBvZl9zZXF1ZW5jZV9leG4gcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IG9mX3NlcXVlbmNlX211bHRpIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3QgYSA9IG9mX2FsaXN0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBvZl9hbGlzdF9vcl9lcnJvciBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IG9mX2FsaXN0X2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2V4biBhID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBvZl9hbGlzdF9tdWx0aSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gb2ZfYWxpc3RfcmVkdWNlIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGwgfmdldF9rZXkgPVxuICAgIG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBvZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IGludmFyaWFudHMgYSA9IGludmFyaWFudHMgYSB+Y29tcGFyYXRvclxuICBsZXQgaXNfZW1wdHkgYSA9IGlzX2VtcHR5IGFcbiAgbGV0IGxlbmd0aCBhID0gbGVuZ3RoIGFcbiAgbGV0IHNldCBhIH5rZXkgfmRhdGEgPSBzZXQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGQgYSB+a2V5IH5kYXRhID0gYWRkIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX2V4biBhIH5rZXkgfmRhdGEgPSBhZGRfZXhuIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX211bHRpIGEgfmtleSB+ZGF0YSA9IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZV9tdWx0aSBhIGIgPSByZW1vdmVfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX211bHRpIGEgYiA9IGZpbmRfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBjaGFuZ2UgYSBiIH5mID0gY2hhbmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdXBkYXRlIGEgYiB+ZiA9IHVwZGF0ZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfZXhuIGEgYiA9IGZpbmRfZXhuIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZCBhIGIgPSBmaW5kIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlIGEgYiA9IHJlbW92ZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSBhIGIgPSBtZW0gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBpdGVyaV91bnRpbCA9IGl0ZXJpX3VudGlsXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBpdGVyMiBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBmb2xkX3VudGlsID0gZm9sZF91bnRpbFxuICBsZXQgZm9sZF9yaWdodCA9IGZvbGRfcmlnaHRcbiAgbGV0IGZvbGQyIGEgYiB+aW5pdCB+ZiA9IGZvbGQyIGEgYiB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX2tleXMgYSB+ZiA9IGZpbHRlcl9rZXlzIGEgfmZcbiAgbGV0IGZpbHRlciBhIH5mID0gZmlsdGVyIGEgfmZcbiAgbGV0IGZpbHRlcmkgYSB+ZiA9IGZpbHRlcmkgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gZmlsdGVyX21hcCBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwaSBhIH5mID0gZmlsdGVyX21hcGkgYSB+ZlxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXAgdCB+ZlxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbl90ZiB0IH5mXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID0gY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyYXRvclxuICBsZXQgY29tcGFyZV9kaXJlY3QgYSBiIGMgPSBjb21wYXJlX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZXF1YWwgYSBiIGMgPSBlcXVhbCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgPSBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmNvbXBhcmF0b3JcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5mIH5pbml0IH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG1lcmdlIGEgYiB+ZiA9IG1lcmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSA9IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgfmNvbXBhcmF0b3JcbiAgbGV0IG1pbl9lbHQgPSBtaW5fZWx0XG4gIGxldCBtaW5fZWx0X2V4biA9IG1pbl9lbHRfZXhuXG4gIGxldCBtYXhfZWx0ID0gbWF4X2VsdFxuICBsZXQgbWF4X2VsdF9leG4gPSBtYXhfZWx0X2V4blxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgc3BsaXQgYSBiID0gc3BsaXQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdF9sZV9ndCBhIGIgPSBzcGxpdF9sZV9ndCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHNwbGl0X2x0X2dlIGEgYiA9IHNwbGl0X2x0X2dlIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID0gYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJhdG9yXG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJhdG9yXG4gIGxldCBjbG9zZXN0X2tleSBhIGIgYyA9IGNsb3Nlc3Rfa2V5IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBudGggPSBudGhcbiAgbGV0IG50aF9leG4gPSBudGhfZXhuXG4gIGxldCByYW5rIGEgYiA9IHJhbmsgYSBiIH5jb21wYXJhdG9yXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3IgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyYXZlcnNhbHMgPSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSA9IFRyYXZlcnNhbHMubWFwaVxuICAgIGxldCBmaWx0ZXJfbWFwaSA9IFRyYXZlcnNhbHMuZmlsdGVyX21hcGlcbiAgZW5kXG5cbiAgbGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHRcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3IgfmNvbXBhcmF0b3IgdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoS2V5X1MxKVxuXG4gIHR5cGUgKyd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IG1hcCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvciBpblxuICBpZiBpbnZhcmlhbnRzIG1hcFxuICB0aGVuIG1hcFxuICBlbHNlIChcbiAgICAoKiBUaGUgaW52YXJpYW50cyBhcmUgYnJva2VuLCBidXQgd2UgY2FuIHN0aWxsIHRyYXZlcnNlIHRoZSBzdHJ1Y3R1cmUuICopXG4gICAgbWF0Y2ggVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmk6KGl0ZXJpIG1hcCkgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF9rZXkgLT4gZmFpbHdpdGggXCJNYXAuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCIpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIENyZWF0b3JzIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjdkN2IxYTAtNDk5Mi0xMWU2LThhMzItYmJiMjIxZmEwMjVjXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICgnaywgKyd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBLZXlfaGFzaGFibGVcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gS2V5X2JpbmFibGVfaGFzaGFibGVcbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gS2V5X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEtleSA6IEtleV9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgJ3YgZWwgPSBLZXkudCAqICd2IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZGZiMzAwZjgtNDk5Mi0xMWU2LTljMTUtNzNhMmFjNmI4MTVjXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOktleS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIG1hcCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGtleSBhbmQgZGF0YSBhcmUgc3RhYmxlKSAuICopXG4gIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBkYXRhKSAoX2RhdGFfc3RhYmxlX3dpdG5lc3MgOiBkYXRhIFN0YWJsZV93aXRuZXNzLnQpXG4gICAgOiAoS2V5LnQsIGRhdGEsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgID1cbiAgICBsZXQgKF8gOiBLZXkudCBTdGFibGVfd2l0bmVzcy50KSA9IEtleS5zdGFibGVfd2l0bmVzcyBpblxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEtleV9TMSlcblxuICB0eXBlIGtleSA9IEtleS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgJ3YgdCA9IChrZXksICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleScgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3QgKHR5cGUgYSkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgKHQgOiBhIHQpID1cbiAgICAgIFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBLZXknLmhhc2hfZm9sZF90IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5cbiAgbW9kdWxlIF8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWVcbiAgICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFwLk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X2dlbmVyYXRvclxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEtleSkgS2V5LnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHZfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9vYnNlcnZlclxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEtleS5xdWlja2NoZWNrX29ic2VydmVyIHZfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X3Nocmlua2VyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgS2V5LnF1aWNrY2hlY2tfc2hyaW5rZXIgdl9zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IE1hcC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChNYXAgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0KVxuZW5kXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIGxldCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFN0YWJsZV93aXRuZXNzX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5KSBpblxuICAgIE0uc3RhYmxlX3dpdG5lc3NcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfaGFzaHRibF9leG4gPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2ZfaGFzaHRibF9leG5cbiAgbGV0IGtleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZVxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSB+Y29tcGFyYXRvciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIH5jb21wYXJhdG9yIGsgdlxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUga2V5XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IChrZXksICdhLCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAgICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdfc3RhYmxlXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleSlcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgU1xuXG4gICAgICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6ICdhIFN0YWJsZV93aXRuZXNzLnQgLT4gJ2EgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEtleV9zdGFibGUgOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTWFrZSAoS2V5X3N0YWJsZSlcbiAgICAgICAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXlfc3RhYmxlKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gU3ltbWV0cmljX2RpZmZfZWxlbWVudC5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgQmFzZS5NYXliZV9ib3VuZC50ID1cbiAgICAgIHwgSW5jbCBvZiAnYVxuICAgICAgfCBFeGNsIG9mICdhXG4gICAgICB8IFVuYm91bmRlZFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBJbmNsIHggLT4gSW5jbCAoZiB4KVxuICAgICAgfCBFeGNsIHggLT4gRXhjbCAoZiB4KVxuICAgICAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBCYXNlLk1heWJlX2JvdW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5WMS50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cF1cblxubGV0IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgVW5ib3VuZGVkLCBVbmJvdW5kZWQgLT4gMFxuICB8IFVuYm91bmRlZCwgXyAtPlxuICAgIChtYXRjaCBzaWRlIHdpdGhcbiAgICAgfCBgTG93ZXIgLT4gLTFcbiAgICAgfCBgVXBwZXIgLT4gMSlcbiAgfCBfLCBVbmJvdW5kZWQgLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IDFcbiAgICAgfCBgVXBwZXIgLT4gLTEpXG4gIHwgSW5jbCBhMSwgSW5jbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBFeGNsIGExLCBFeGNsIGEyIC0+IGNvbXBhcmVfYSBhMSBhMlxuICB8IEluY2wgYTEsIEV4Y2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IC0xXG4gICAgICB8IGBVcHBlciAtPiAxKVxuICAgIGVsc2UgY1xuICB8IEV4Y2wgYTEsIEluY2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IDFcbiAgICAgIHwgYFVwcGVyIC0+IC0xKVxuICAgIGVsc2UgY1xuOztcblxubW9kdWxlIEFzX2xvd2VyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBMb3dlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuXG5tb2R1bGUgQXNfdXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID0gY29tcGFyZV9vbmVfc2lkZWQgfnNpZGU6YFVwcGVyIGNvbXBhcmVfYSB0MSB0MlxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shQ29yZS5TZXR9W1NldF19LiBTZWUgdGhlXG4gICAgeyFNYXB9IGRvY3MgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezAsMSwyLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW1NldF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMyXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cbigqXG4gICBDUnMgYW5kIGNvbW1lbnRzIGFib3V0IFtTZXRdIGZ1bmN0aW9ucyBkbyBub3QgYmVsb25nIGluIHRoaXMgZmlsZS4gIFRoZXkgYmVsb25nIG5leHRcbiAgIHRvIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBpbiBzZXQubWxpLlxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgU2V0ID0gQmFzZS5TZXRcbm1vZHVsZSBUcmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxubW9kdWxlIENvbnRhaW5lciA9IEJhc2UuQ29udGFpbmVyXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IFNldC5FbHRfcGxhaW5cblxubW9kdWxlIHR5cGUgRWx0ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEVsdF9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuU2V0LkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuU2V0Lk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5TaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYikgRWx0X2Jpbl9pby50XG4gICAgLT4gKGludCAtPiAoJ2EsICdiKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlXG4gICAgICBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIHZhbCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgOiAgKG1vZHVsZSBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgU3RhYmxlX3dpdG5lc3MudFxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBTZXQuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gU2V0LldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIHRvX21hcFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2EgZWx0LCAnYiwgJ2NtcCBjbXApIEJhc2UuTWFwLnRcbiAgICAgIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdhIGVsdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCAnY21wLCAoJ2EgZWx0LCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbTWFwLnRdLiAqKVxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EgZWx0LCBfLCAnY21wIGNtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdlbHQsICdjbXApIHRcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZVxuICB0eXBlICdlbHQgZWx0XG4gIHR5cGUgJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChFbHQgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSBTZXQudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gRWx0LnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogRWx0LnQgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogRWx0LnQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxub3BlbiBTZXRfaW50ZlxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gRWx0XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEVsdF9iaW5hYmxlXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikgZWx0X2dlblxuICA7O1xuXG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3QgZWx0X29ic1xuICBsZXQgb2JzX3RyZWUgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdHJlZSBlbHRfb2JzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGVsdF9zaHIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3QgZWx0X3NoclxuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBlbHRfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIG0gZWx0X2dlbiA9XG4gIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGVsdF9nZW5cbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB0b19tYXAgfmNvbXBhcmF0b3IgdCA9IE1hcC5vZl9rZXlfc2V0IChTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIHQgfmNvbXBhcmF0b3IpXG4gIGxldCBvZl9tYXBfa2V5cyBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZSAoTWFwLmtleV9zZXQgbSlcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgSGFzaF9zZXQuZm9sZCBoc2V0IH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIEhhc2h0YmwuZm9sZCBoYXNodGJsIH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB+a2V5OnggfmRhdGE6XyB0IC0+XG4gICAgICBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgU2V0LkFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50KVxuZW5kXG5cbnR5cGUgJ2EgY21wID0gJ2FcbnR5cGUgJ2EgZWx0ID0gJ2FcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBTZXRcblxuICBsZXQgb2ZfdHJlZSBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgbGV0IHNleHBfb2ZfdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdFxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdhLCAnYiwgJ2MpIFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgU2V0LldpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIG1vZHVsZSBOYW1lZCA9IFNldC5OYW1lZFxuZW5kKVxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIFNldC5Vc2luZ19jb21wYXJhdG9yXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgVHJlZSA6PSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlKVxuXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2hfc2V0IGhzZXQgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsIH5jb21wYXJhdG9yKVxuICA7O1xuZW5kXG5cbmxldCB0b19tYXAgPSBNYXAub2Zfa2V5X3NldFxubGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvcl9zID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yX3NcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgb2ZfaGFzaF9zZXQgbSBoc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNoX3NldCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBoc2V0XG5cbmxldCBvZl9oYXNodGJsX2tleXMgbSBoYXNodGJsID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaGFzaHRibFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlIG5vbnJlYyAoJ2EsICdjb21wYXJhdG9yKSB0XyA9ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWUgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlICdhIGVsdF8gPSAnYSBFbHQudFxuICB0eXBlICdhIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChCYXNlLlNleHAudCAtPiAnYSBFbHQudCkgLT4gQmFzZS5TZXhwLnQgLT4gKCdhLCAnY29tcGFyYXRvcikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBfXG5lbmQgPSBzdHJ1Y3RcbiAgb3BlbiBVc2luZ19jb21wYXJhdG9yXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnY21wIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0gb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBlID0gc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2ZfbGlzdCBsID0gb2ZfbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2FycmF5IGEgPSBvZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlIChUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gVHJlZS5lbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gZSA9IFRyZWUuc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IG1hcCB0IH5mID0gVHJlZS5tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZS5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZS5jb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MlxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlLmVxdWFsIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0IGwgPSBUcmVlLm9mX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFRyZWUub2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IFRyZWUub2ZfaGFzaF9zZXQgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGggPSBUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hcnJheSBhID0gVHJlZS5vZl9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBUcmVlLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCB1bmlvbl9saXN0IGwgPSBUcmVlLnVuaW9uX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBUcmVlLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHQgPSB0XG4gIGxldCBvZl9tYXBfa2V5cyA9IFRyZWUub2ZfbWFwX2tleXNcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIGVsdCB+Y29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfcGxhaW4gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChFbHQpXG4gIGluY2x1ZGUgTWFrZV90cmVlX1MxIChFbHRfUzEpXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IFRyZWUuc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgWC50X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpFbHRfUzEuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiBpblxuICBpZiBpbnZhcmlhbnRzIHNldFxuICB0aGVuIHNldFxuICBlbHNlXG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKGZvbGQgc2V0IH5pbml0OihUcmVlLmVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICAgICAgIGlmIFRyZWUubWVtIGFjYyBlbHQgfmNvbXBhcmF0b3JcbiAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJTZXQuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCJcbiAgICAgICAgIGVsc2UgVHJlZS5hZGQgYWNjIGVsdCB+Y29tcGFyYXRvcikpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gQ29tcGFyYXRvci5Qb2x5XG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEVsdClcblxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgdCA9IHNleHBfb2ZfdCBzZXhwX29mX2sgWyVzZXhwX29mOiBfXSB0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OGJjYzQ3OC00OTkyLTExZTYtYTk1ZC1mZjQ4MzFhY2Y0MTBcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuU2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gVHJlZS5zZXhwX29mX3Qgc2V4cF9vZl9lbHQgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IGVsdF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGVcblxubW9kdWxlIEVsdF9iaW5faW8gPSBFbHRfYmluX2lvXG5cbm1vZHVsZSBQcm92aWRlX2Jpbl9pbyAoRWx0IDogRWx0X2Jpbl9pby5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjg5ODkyNzhlLTQ5OTItMTFlNi04ZjRhLTZiODk3NzZiMWU1M1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHNldCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGVsdCBpcyBzdGFibGUpLiAqKVxuICBsZXQgc3RhYmxlX3dpdG5lc3MgOiAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgbGV0IChfIDogRWx0LnQgU3RhYmxlX3dpdG5lc3MudCkgPSBFbHQuc3RhYmxlX3dpdG5lc3MgaW5cbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBFbHRcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHRfUzEpXG5cbiAgdHlwZSAoJ2EsICdiKSBzZXQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgc2V0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBFbHQudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlIHRcblxuICAgIGxldCBoYXNoIHQgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChoYXNoX2ZvbGRfdCAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSkgdClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEVsdCcgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICAgIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBxdWlja2NoZWNrX3Nocmlua2VyXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChFbHRfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHApXG4gIG1vZHVsZSBFbHQgPSBFbHRfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHRfYmluX3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X2Jpbl9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBTZXQuTVxuXG4gIGxldCBiaW5fc2hhcGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NoYXBlX3RcbiAgOztcblxuICBsZXQgYmluX3NpemVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NpemVfdFxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3dyaXRlX3RcbiAgOztcblxuICBsZXQgYmluX3JlYWRfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3JlYWRfdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX21fX3RfXyAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uX19iaW5fcmVhZF90X19cbiAgOztcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgRWx0KSBFbHQucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEVsdC5xdWlja2NoZWNrX29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19zaHJpbmtlciBFbHQucXVpY2tjaGVja19zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IFNldC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChTZXQgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcbmVuZFxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdCkgaW5cbiAgICBNLnN0YWJsZV93aXRuZXNzXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPSAoJ2EsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgZWx0XG4gICAgICB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSAoZWx0LCBlbHRfY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ19zdGFibGVcbiAgICBtb2R1bGUgTWFrZSAoRWx0IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0KVxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBTXG5cbiAgICAgICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEVsdF9zdGFibGUgOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zdGFibGUpXG4gICAgICAgIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0X3N0YWJsZSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxubW9kdWxlIEluZml4ID0gQmFzZS5Db21wYXJhYmxlLkluZml4XG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmFibGUuQ29tcGFyaXNvbnNcblxubW9kdWxlIFZhbGlkYXRlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgOiBWYWxpZGF0ZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZVxuICBvcGVuIE1heWJlX2JvdW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gQmFzZS5TZXhwLnRvX3N0cmluZyAoVC5zZXhwX29mX3QgdClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFYuYm91bmRlZCB+bmFtZTp0b19zdHJpbmcgfmxvd2VyOm1pbiB+dXBwZXI6bWF4IH5jb21wYXJlOlQuY29tcGFyZSB0XG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXg6VW5ib3VuZGVkIHRcbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWF4IH5taW46VW5ib3VuZGVkIHRcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVfd2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZSAoVClcbiAgaW5jbHVkZSBWXG5cbiAgKCogUHJlYWxsb2NhdGUgdGhlIGludGVyZXN0aW5nIGJvdW5kcyB0byBtaW5pbWl6ZSBhbGxvY2F0aW9uIGluIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgW3ZhbGlkYXRlXypdLiAqKVxuICBsZXQgZXhjbF96ZXJvID0gTWF5YmVfYm91bmQuRXhjbCBULnplcm9cbiAgbGV0IGluY2xfemVybyA9IE1heWJlX2JvdW5kLkluY2wgVC56ZXJvXG4gIGxldCB2YWxpZGF0ZV9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46aW5jbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25lZ2F0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDpleGNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbm9uX3Bvc2l0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDppbmNsX3plcm8gdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlX3dpdGhfemVybyAoVClcbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuV2l0aF96ZXJvIChUKVxuZW5kXG5cbm1vZHVsZSBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgPVxuICBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuUG9seSAoVClcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgVmFsaWRhdGUgKEMpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gQ1xuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpID1cbiAgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBjb21wYXJlID0gVC5jb21wYXJhdG9yLmNvbXBhcmVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBNXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEV4dGVuZF9iaW5hYmxlXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoVClcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG5pbmNsdWRlIChCYXNlLkNvbXBhcmFibGUgOiBXaXRoX2NvbXBhcmUpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgTWFwIDpcbiAgICAgICAgTWFwLlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBrZXkgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgU2V0IDpcbiAgICAgICAgU2V0LlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBlbHQgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChYIDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLk1ha2UgKFgpXG4gICAgICBtb2R1bGUgU2V0ID0gU2V0LlN0YWJsZS5WMS5NYWtlIChYKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgICAgTWFwLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIG1vZHVsZSBTZXQgOlxuICAgICAgICAgIFNldC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICAgICAgd2l0aCB0eXBlIGVsdCA6PSBjb21wYXJhYmxlXG4gICAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKFggOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoWClcbiAgICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChYKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJpbmNsdWRlIExpc3QwICgqKiBAaW5saW5lICopXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgc3RhZ2VkIHRvIGluZGljYXRlIHRoYXQgcmVhbCB3b3JrICh0aGUgZnVuY3RvciBhcHBsaWNhdGlvbikgdGFrZXNcbiAgIHBsYWNlIGFmdGVyIGEgcGFydGlhbCBhcHBsaWNhdGlvbi4gKilcbmxldCBzdGFibGVfZGVkdXBfc3RhZ2VkICh0eXBlIGEpIH4oY29tcGFyZSA6IGEgLT4gYSAtPiBpbnQpXG4gIDogKGEgbGlzdCAtPiBhIGxpc3QpIEJhc2UuU3RhZ2VkLnRcbiAgPVxuICBsZXQgbW9kdWxlIFNldCA9XG4gICAgU2V0Lk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcblxuICAgICAgKCogW3N0YWJsZV9kZWR1cF9saXN0XSBuZXZlciBjYWxscyB0aGVzZSAqKVxuICAgICAgbGV0IHRfb2Zfc2V4cCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBhc3NlcnQgZmFsc2VcbiAgICBlbmQpXG4gIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIFNldC5zdGFibGVfZGVkdXBfbGlzdFxuOztcblxubGV0IHppcF93aXRoX3JlbWFpbmRlciA9XG4gIGxldCByZWMgemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgYWNjIHhzIHlzID1cbiAgICBtYXRjaCB4cywgeXMgd2l0aFxuICAgIHwgW10sIFtdIC0+IHJldiBhY2MsIE5vbmVcbiAgICB8IGZzdCwgW10gLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLkZpcnN0IGZzdClcbiAgICB8IFtdLCBzbmQgLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLlNlY29uZCBzbmQpXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyICgoeCwgeSkgOjogYWNjKSB4cyB5c1xuICBpblxuICBmdW4geHMgeXMgLT4gemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgW10geHMgeXNcbjs7XG5cbnR5cGUgc2V4cF90aHVuayA9IHVuaXQgLT4gQmFzZS5TZXhwLnRcblxubGV0IHNleHBfb2Zfc2V4cF90aHVuayB4ID0geCAoKVxuXG5leGNlcHRpb24gRHVwbGljYXRlX2ZvdW5kIG9mIHNleHBfdGh1bmsgKiBCYXNlLlN0cmluZy50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBleG5faWZfZHVwIH5jb21wYXJlID8oY29udGV4dCA9IFwiZXhuX2lmX2R1cFwiKSB0IH50b19zZXhwID1cbiAgbWF0Y2ggZmluZF9hX2R1cCB+Y29tcGFyZSB0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkdXAgLT4gcmFpc2UgKER1cGxpY2F0ZV9mb3VuZCAoKGZ1biAoKSAtPiB0b19zZXhwIGR1cCksIGNvbnRleHQpKVxuOztcblxubGV0IHNsaWNlIGEgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiBhIHN0YXJ0IHN0b3Bcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPSBMaXN0MC5zdGFibGVfd2l0bmVzcyBbQEBhbGVydCBcIi1mb3JfaW50ZXJuYWxfdXNlX29ubHlcIl1cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvblxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5ub25lIH5zb21lIHQgPVxuICBsZXQgbW9kdWxlIFYgPSBWYWxpZGF0ZSBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFYubmFtZSBcIm5vbmVcIiAoVi5wcm90ZWN0IG5vbmUgKCkpXG4gIHwgU29tZSB4IC0+IFYubmFtZSBcInNvbWVcIiAoVi5wcm90ZWN0IHNvbWUgeClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub3B0aW9uXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vcHRpb25cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm9wdGlvblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG5cbiAgICAoKiBbdW5zYWZlX3ZhbHVlXSBpcyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIFtpc19ub25lXSByZXR1cm5zIFtmYWxzZV0uIFRvIGF2b2lkXG4gICAgICAgcmVwZWF0aW5nIHRoZSBbaXNfbm9uZV0gY2hlY2ssIHdlIGRlY2xhcmUgW1VuY2hlY2tlZF9zb21lXS4gW1VuY2hlY2tlZF9zb21lIHhdXG4gICAgICAgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIFtTb21lIHhdLCBidXQgdGhlIHR5cGUgaGFzIG5vIFtOb25lXSBjbGF1c2UuXG5cbiAgICAgICBXZSBtYWtlIHN1cmUgYWxsIHRoaXMgd29ya3Mgd2l0aCB0ZXN0cyBvZiBbdW5zYWZlX3ZhbHVlXSBpbiB0ZXN0X29wdGlvbi5tbC5cblxuICAgICAgIFdlIHRyaWVkIHVzaW5nIFtPYmouZmllbGRdIGluc3RlYWQuIEl0IGdlbmVyYXRlcyBtdWNoIHdvcnNlIG5hdGl2ZSBjb2RlIGR1ZSB0b1xuICAgICAgIGZsb2F0IGFycmF5IHJlcHJlc2VudGF0aW9ucy4gKilcblxuICAgIG1vZHVsZSBVbmNoZWNrZWRfc29tZSA9IHN0cnVjdFxuICAgICAgKCogV2FybmluZyAzNyB0ZWxscyB1cyBbVW5jaGVja2VkX3NvbWVdIGlzIG5ldmVyIHVzZWQgYXMgYSBjb25zdHJ1Y3Rvci4gVGhpcyBpc1xuICAgICAgICAgaW50ZW50aW9uYWwsIHNvIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcuICopXG4gICAgICB0eXBlICdhIHQgPSBVbmNoZWNrZWRfc29tZSBvZiAnYSBbQEBvY2FtbC5ib3hlZF0gW0BAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuICAgIGVuZFxuXG4gICAgbGV0IHVuc2FmZV92YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgOiBhID1cbiAgICAgIGxldCAoVW5jaGVja2VkX3NvbWUgdmFsdWUpID0gKE9iai5tYWdpYyB0IDogYSBVbmNoZWNrZWRfc29tZS50KSBpblxuICAgICAgdmFsdWVcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBNTHRvbiBsaWJyYXJ5IHNldC9kaXNqb2ludC5mdW4sIHdoaWNoIGhhcyB0aGVcbiAgIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlLlxuKilcbigqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IEhlbnJ5IENlanRpbiwgTWF0dGhldyBGbHVldCwgU3VyZXNoXG4gKiAgICBKYWdhbm5hdGhhbiwgYW5kIFN0ZXBoZW4gV2Vla3MuXG4gKlxuICogTUx0b24gaXMgcmVsZWFzZWQgdW5kZXIgYSBCU0Qtc3R5bGUgbGljZW5zZS5cbiAqIFNlZSB0aGUgZmlsZSBNTHRvbi1MSUNFTlNFIGZvciBkZXRhaWxzLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbigqXG4gICB7dlxuICAgICAgICAgICBSb290XG4gICAgICAgICAgICAgfFxuICAgICAgICAgICBJbm5lclxuICAgICAgICAvIC4uIHwgLi4gXFxcbiAgICAgSW5uZXIgSW5uZXIgSW5uZXJcbiAgICAgIC98XFwgICAvfFxcICAgL3xcXFxuICAgICAgLi4uICAgLi4uICAgLi4uXG4gICB2fVxuXG4gICBXZSBjb25zdHJ1Y3QgdGhlIGBpbnZlcnRlZCcgdHJlZSBpbiB0aGUgTUwgcmVwcmVzZW50YXRpb24uXG4gICBUaGUgZGlyZWN0aW9uIG9mIHRoZSBlZGdlcyBpcyBVUFdBUkRTLlxuICAgU3RhcnRpbmcgd2l0aCBhbnkgWydhIHRdIHdlIGNhbiBzdGVwIGRpcmVjdGx5IHRvIGl0cyBwYXJlbnQuXG4gICBCdXQgd2UgY2FuJ3QgKGFuZCBkb24ndCBuZWVkIHRvKSBzdGFydCBmcm9tIHRoZSByb290IGFuZCBzdGVwIHRvIGl0cyBjaGlsZHJlbi5cbiopXG5cbigqXG4gICBbcmFua10gaXMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGRlcHRoIG9mIGFueSBub2RlIGluIHRoZSB1cC10cmVlLlxuXG4gICBJbWFnaW5lIGFuIHVubHVja3kgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBpbiB3aGljaCB5b3UgY3JlYXRlIE5cbiAgIGluZGl2aWR1YWwgW3RdLXZhbHVlcyBhbmQgdGhlbiB1bmlvbiB0aGVtIHRvZ2V0aGVyIGluIHN1Y2ggYSB3YXlcbiAgIHRoYXQgeW91IGFsd2F5cyBwaWNrIHRoZSByb290IG9mIGVhY2ggdHJlZSB0byB1bmlvbiB0b2dldGhlciwgc28gdGhhdFxuICAgbm8gcGF0aCBjb21wcmVzc2lvbiB0YWtlcyBwbGFjZS4gIElmIHlvdSBkb24ndCB0YWtlIGNhcmUgdG8gc29tZWhvd1xuICAgYmFsYW5jZSB0aGUgcmVzdWx0aW5nIHVwLXRyZWUsIGl0IGlzIHBvc3NpYmxlIHRoYXQgeW91IGVuZCB1cCB3aXRoIG9uZVxuICAgYmlnIGxvbmcgY2hhaW4gb2YgTiBsaW5rcywgYW5kIHRoZW4gY2FsbGluZyBbcmVwcmVzZW50YXRpdmVdIG9uIHRoZVxuICAgZGVlcGVzdCBub2RlIHRha2VzIFRoZXRhKE4pIHRpbWUuICBXaXRoIHRoZSBiYWxhbmNpbmcgc2NoZW1lIG9mIG5ldmVyXG4gICBpbmNyZWFzaW5nIHRoZSByYW5rIG9mIGEgbm9kZSB1bm5lY2Vzc2FyaWx5LCBpdCB3b3VsZCB0YWtlIE8obG9nIE4pLlxuKilcbnR5cGUgJ2Egcm9vdCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgbXV0YWJsZSByYW5rIDogaW50XG4gIH1cblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIG5vZGUgOiAnYSBub2RlIH1cblxuYW5kICdhIG5vZGUgPVxuICB8IElubmVyIG9mICdhIHRcbiAgKCogW0lubmVyIHhdIGlzIGEgbm9kZSB3aG9zZSBwYXJlbnQgaXMgW3hdLiAqKVxuICB8IFJvb3Qgb2YgJ2Egcm9vdFxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0IGRlcHRoID1cbiAgICBtYXRjaCB0Lm5vZGUgd2l0aFxuICAgIHwgSW5uZXIgdCAtPiBsb29wIHQgKGRlcHRoICsgMSlcbiAgICB8IFJvb3QgciAtPiBhc3NlcnQgKGRlcHRoIDw9IHIucmFuaylcbiAgaW5cbiAgbG9vcCB0IDBcbjs7XG5cbmxldCBjcmVhdGUgdiA9IHsgbm9kZSA9IFJvb3QgeyB2YWx1ZSA9IHY7IHJhbmsgPSAwIH0gfVxuXG4oKiBpbnZhcmlhbnRzOlxuICAgW2lubmVyLm5vZGVdID0gW2lubmVyX25vZGVdID0gW0lubmVyIHRdLlxuICAgW2Rlc2NlbmRhbnRzXSBhcmUgdGhlIHByb3BlciBkZXNjZW5kYW50cyBvZiBbaW5uZXJdIHdlJ3ZlIHZpc2l0ZWQuXG4qKVxubGV0IHJlYyBjb21wcmVzcyB0IH5pbm5lcl9ub2RlIH5pbm5lciB+ZGVzY2VuZGFudHMgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIHQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAgICAgUmUtcG9pbnQgYWxsIGRlc2NlbmRhbnRzIGRpcmVjdGx5IHRvIGl0IGJ5IHNldHRpbmcgdGhlbSB0byBbSW5uZXIgdF0uXG4gICAgICAgTm90ZTogd2UgZG9uJ3QgcmUtcG9pbnQgW2lubmVyXSBhcyBpdCBhbHJlYWR5IHBvaW50cyB0aGVyZS4gKilcbiAgICBMaXN0Lml0ZXIgZGVzY2VuZGFudHMgfmY6KGZ1biB0IC0+IHQubm9kZSA8LSBpbm5lcl9ub2RlKTtcbiAgICB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPlxuICAgIGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOihpbm5lciA6OiBkZXNjZW5kYW50cylcbjs7XG5cbmxldCByZXByZXNlbnRhdGl2ZSB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT4gdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT4gY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6W11cbjs7XG5cbmxldCByb290IHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIGF2b2lkIHR1cGxlIGFsbG9jYXRpb24gaW4gdGhlIGZhc3QgcGF0aCAqKVxuICAgIHJcbiAgfCBfIC0+IHNuZCAocmVwcmVzZW50YXRpdmUgdClcbjs7XG5cbmxldCByYW5rIHQgPSAocm9vdCB0KS5yYW5rXG5sZXQgZ2V0IHQgPSAocm9vdCB0KS52YWx1ZVxubGV0IHNldCB0IHYgPSAocm9vdCB0KS52YWx1ZSA8LSB2XG5sZXQgc2FtZV9jbGFzcyB0MSB0MiA9IHBoeXNfZXF1YWwgKHJvb3QgdDEpIChyb290IHQyKVxuXG5sZXQgdW5pb24gdDEgdDIgPVxuICBsZXQgdDEsIHIxID0gcmVwcmVzZW50YXRpdmUgdDEgaW5cbiAgbGV0IHQyLCByMiA9IHJlcHJlc2VudGF0aXZlIHQyIGluXG4gIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSByMS5yYW5rIGluXG4gICAgbGV0IG4yID0gcjIucmFuayBpblxuICAgIGlmIG4xIDwgbjJcbiAgICB0aGVuIHQxLm5vZGUgPC0gSW5uZXIgdDJcbiAgICBlbHNlIChcbiAgICAgIHQyLm5vZGUgPC0gSW5uZXIgdDE7XG4gICAgICBpZiBuMSA9IG4yIHRoZW4gcjEucmFuayA8LSByMS5yYW5rICsgMSkpXG47O1xuXG5sZXQgaXNfY29tcHJlc3NlZCB0ID1cbiAgaW52YXJpYW50IGlnbm9yZSB0O1xuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgXyAtPiB0cnVlXG4gIHwgSW5uZXIgdCAtPlxuICAgIChtYXRjaCB0Lm5vZGUgd2l0aFxuICAgICB8IFJvb3QgXyAtPiB0cnVlXG4gICAgIHwgSW5uZXIgXyAtPiBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpc19jb21wcmVzc2VkID0gaXNfY29tcHJlc3NlZFxuICBsZXQgcmFuayA9IHJhbmtcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERvdWJseV9saW5rZWRfaW50ZlxuXG4oKiBJTlZBUklBTlQ6IFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhIGxpc3QgaXMgbXV0YXRlZCBkdXJpbmcgYSBwZW5kaW5nIGl0ZXJhdGlvbi5cblxuICAgVGhpcyBpbnZhcmlhbnQgaXMgZ3VhcmFudGVlZCBieSB0aGUgSGVhZGVyIGFuZCBFbHQgbW9kdWxlcyBpbiBjb25qdW5jdGlvbi4gIEFsbFxuICAgZG93bnN0cmVhbSBjb2RlIGluIHRoaXMgbW9kdWxlIG5lZWQgbm90IGJlIGNvbmNlcm5lZCB3aXRoIHRoaXMgaW52YXJpYW50LiAqKVxuZXhjZXB0aW9uIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvblxuXG5sZXQgcGh5c19lcXVhbCA9ICggPT0gKVxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpbmNyX2xlbmd0aCA6IGJ5OmludCAtPiB0IC0+IHVuaXRcbiAgdmFsIGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyA6IHQgLT4gdW5pdFxuXG4gICgqIFVuZm9ydHVuYXRlLCBidXQgYnkgc3BlY2lhbGl6aW5nIFt3aXRoX2l0ZXJhdGlvbl0gZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhIGxhcmdlXG4gICAgIGFtb3VudCBvZiBhbGxvY2F0aW9uIGR1cmluZyBmb2xkcyBhbmQgaXRlcmF0aW9ucyBpcyBhdm9pZGVkLlxuXG4gICAgIFRoZSBvcmlnaW5hbCB0eXBlIG9mIFt3aXRoX2l0ZXJhdGlvbl0gd2FzXG4gICAgIFt2YWwgd2l0aF9pdGVyYXRpb24gOiB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYV1cblxuICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgKCkgPSBnIHggaW5cbiAgICAgICBmICgpXG4gICAgIF19XG4gICAgIGFuZFxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmIHggPSBnIHggaW5cbiAgICAgICBmIHhcbiAgICAgXX1cbiAgICAgaXMgdGhhdCBpbiB0aGUgZmlyc3QgY2FzZSB0aGUgY2xvc3VyZSBmb3IgW2ZdIGNvbnRhaW5zIGEgcG9pbnRlciB0byBbeF0sXG4gICAgIGFuZCBpbiB0aGUgc2Vjb25kIGNhc2UgaXQgZG9lc24ndC4gQSBjbG9zdXJlIHdpdGhvdXQgcG9pbnRlcnMgdG8gZW5jbG9zaW5nXG4gICAgIGVudmlyb25tZW50IGlzIGltcGxlbWVudGVkIGFzIGEgbmFrZWQgZnVuY3Rpb24gcG9pbnRlciwgc28gd2UgZG9uJ3RcbiAgICAgYWxsb2NhdGUgYXQgYWxsLlxuXG4gICAgIEZvciB0aGUgc2FtZSByZWFzb24gd2UgbWFrZSBzdXJlIG5vdCB0byBjYWxsIFtSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiAuLi4pXVxuICAgICBpbnNpZGUgW3dpdGhfaXRlcmF0aW9uXSBhbmQgZG8gYW4gZXhwbGljaXQgbWF0Y2ggc3RhdGVtZW50IGluc3RlYWQuICopXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzJsXG4gICAgOiAgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdiW0Bsb2NhbF0pXG4gICAgLT4gKCgnYSAtPiAoJ2JbQGxvY2FsXSkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fMyA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkKSAtPiAnZFxuICB2YWwgd2l0aF9pdGVyYXRpb25fNCA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlKSAtPiAnZVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl80bFxuICAgIDogIHRcbiAgICAtPiAoJ2FbQGxvY2FsXSlcbiAgICAtPiAoJ2JbQGxvY2FsXSlcbiAgICAtPiAnY1xuICAgIC0+ICdkXG4gICAgLT4gKCgoJ2FbQGxvY2FsXSkgLT4gKCdiW0Bsb2NhbF0pIC0+ICdjIC0+ICdkIC0+ICdlKVtAbG9jYWxdKVxuICAgIC0+ICdlXG5cbiAgdmFsIG1lcmdlIDogdCAtPiB0IC0+IFsgYFNhbWVfYWxyZWFkeSB8IGBNZXJnZWQgXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgcyA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGVuZGluZ19pdGVyYXRpb25zIDogaW50XG4gICAgfVxuXG4gIHR5cGUgdCA9IHMgVW5pb25fZmluZC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA9IFVuaW9uX2ZpbmQuY3JlYXRlIHsgbGVuZ3RoID0gMTsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9XG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICBsZXQgbGVuZ3RoIHQgPSAoVW5pb25fZmluZC5nZXQgdCkubGVuZ3RoXG5cbiAgbGV0IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaWYgcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPiAwIHRoZW4gcmFpc2UgQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uIGVsc2Ugc1xuICA7O1xuXG4gIGxldCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgaWdub3JlICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgOiBzKVxuICA7O1xuXG4gIGxldCBpbmNyX2xlbmd0aCB+Ynk6biB0ID1cbiAgICBsZXQgcyA9IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCBpblxuICAgIHMubGVuZ3RoIDwtIHMubGVuZ3RoICsgblxuICA7O1xuXG4gICgqIENhcmUgaXMgdGFrZW4gbm90IHRvIGFsbG9jYXRlIGluIFt3aXRoX2l0ZXJhdGlvbl8qXSwgc2luY2UgaXQgaXMgY2FsbGVkIGV2ZXJ5IHNlY29uZFxuICAgICBieSBbZXZlcnlfc2Vjb25kXSBpbiBbd3JpdGVyMC5tbF0gKilcblxuICBsZXQgaW5jcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyArIDFcbiAgbGV0IGRlY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgLSAxXG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzJsIHQgYSAoYiBbQGxvY2FsXSkgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8zIHQgYSBiIGMgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzQgdCBhIGIgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzRsIHQgKGEgW0Bsb2NhbF0pIChiIFtAbG9jYWxdKSBjIGQgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyBkIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgbWVyZ2UgKHQxIDogdCkgdDIgPVxuICAgIGlmIFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICAgIHRoZW4gYFNhbWVfYWxyZWFkeVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG4xID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEpLmxlbmd0aCBpblxuICAgICAgbGV0IG4yID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIpLmxlbmd0aCBpblxuICAgICAgd2l0aF9pdGVyYXRpb25fNCB0MSB0MSB0MiBuMSBuMiAoZnVuIHQxIHQyIG4xIG4yIC0+XG4gICAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDIgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICAgIFVuaW9uX2ZpbmQudW5pb24gdDEgdDI7XG4gICAgICAgICAgVW5pb25fZmluZC5zZXQgdDEgeyBsZW5ndGggPSBuMSArIG4yOyBwZW5kaW5nX2l0ZXJhdGlvbnMgPSAwIH0pKTtcbiAgICAgIGBNZXJnZWQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEVsdCA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgaGVhZGVyIDogJ2EgdCAtPiBIZWFkZXIudFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgY3JlYXRlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVubGluayA6ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgaW5zZXJ0X2FmdGVyIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBpbnNlcnRfYmVmb3JlIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCB1bmxpbmtfYmVmb3JlIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBuZXh0IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBwcmV2IDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBoZWFkZXIgOiBIZWFkZXIudFxuICAgIH1cblxuICBsZXQgZXF1YWwgPSBwaHlzX2VxdWFsXG4gIGxldCBuZXh0IHQgPSB0Lm5leHRcbiAgbGV0IHByZXYgdCA9IHQucHJldlxuICBsZXQgaGVhZGVyIHQgPSB0LmhlYWRlclxuXG4gIGxldCBjcmVhdGVfYXV4IHYgaGVhZGVyID1cbiAgICBsZXQgcmVjIHQgPSB7IHZhbHVlID0gdjsgcHJldiA9IHQ7IG5leHQgPSB0OyBoZWFkZXIgfSBpblxuICAgIHRcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBlcXVhbCB0IHQucHJldlxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9hIHQudmFsdWVcbiAgbGV0IGNyZWF0ZSB2ID0gY3JlYXRlX2F1eCB2IChIZWFkZXIuY3JlYXRlICgpKVxuICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgbGV0IHNldCB0IHYgPSB0LnZhbHVlIDwtIHZcblxuICAoKlxuICAgICBbc3BsaXRfb3Jfc3BsaWNlXSBpcyBzdWZmaWNpZW50IGFzIHRoZSBsb25lIHByaW1pdGl2ZSBmb3JcbiAgICAgYWNjb21wbGlzaGluZyBhbGwgcG9pbnRlciB1cGRhdGVzIG9uIGN5Y2xpYyBsb29wcyBvZiBsaXN0IG5vZGVzLlxuICAgICBJdCB0YWtlcyB0d28gXCJnYXBzXCIgYmV0d2VlbiBhZGphY2VudCBsaW5rZWQgbGlzdCBub2Rlcy4gIElmIHRoZSBnYXBzXG4gICAgIHBvaW50IGludG8gdGhlIHNhbWUgbGlzdCwgdGhlIHJlc3VsdCBpcyB0aGF0IGl0IHdpbGwgYmUgc3BsaXQgaW50b1xuICAgICB0d28gbGlzdHMgYWZ0ZXJ3YXJkcy4gIElmIHRoZSBnYXBzIHBvaW50IGludG8gZGlmZmVyZW50IGxpc3RzLCB0aGVcbiAgICAgcmVzdWx0IGlzIHRoYXQgdGhleSB3aWxsIGJlIHNwbGljZWQgdG9nZXRoZXIgaW50byBvbmUgbGlzdCBhZnRlcndhcmRzLlxuXG4gICAgIHt2XG4gICAgICAgQmVmb3JlICAgICAgICAgICAgICAgICAgICAgIEFmdGVyXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgIEEgfCAgPC0tPiAgfCBCICAgICAgICAgICAgICAgQSB8ICA8LS0tICAgLS0tPiAgfCBCXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgXFwgLyAgICAgICstLS0tLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgLyBcXCAgICAgICstLS0tLVxuICAgICAgICAgICAgICBDIHwgIDwtLT4gIHwgRCAgICAgICAgICAgICAgIEMgfCAgPC0tLSAgIC0tLT4gIHwgRFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICB2fSAqKVxuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlIH5wcmV2MTphIH5uZXh0MTpiIH5wcmV2MjpjIH5uZXh0MjpkID1cbiAgICBhLm5leHQgPC0gZDtcbiAgICBkLnByZXYgPC0gYTtcbiAgICBjLm5leHQgPC0gYjtcbiAgICBiLnByZXYgPC0gY1xuICA7O1xuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+bmV4dDE6dDEubmV4dFxuICAgICAgfnByZXYxOnQxLm5leHQucHJldlxuICAgICAgfm5leHQyOnQyLm5leHRcbiAgICAgIH5wcmV2Mjp0Mi5uZXh0LnByZXZcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VcbiAgICAgIH5wcmV2MTp0MS5wcmV2XG4gICAgICB+bmV4dDE6dDEucHJldi5uZXh0XG4gICAgICB+cHJldjI6dDIucHJldlxuICAgICAgfm5leHQyOnQyLnByZXYubmV4dFxuICA7O1xuXG4gIGxldCBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyID1cbiAgICBIZWFkZXIuY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxLmhlYWRlcjtcbiAgICBpZiBub3QgKEhlYWRlci5lcXVhbCB0MS5oZWFkZXIgdDIuaGVhZGVyKVxuICAgIHRoZW4gSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0Mi5oZWFkZXJcbiAgOztcblxuICAoKiBXZSByZWRlZmluZSBzYWZlIHZlcnNpb25zIGZvciBleHBvcnQgKilcbiAgbGV0IHNwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MjtcbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDJcbiAgOztcblxuICBsZXQgaW5zZXJ0X2JlZm9yZSB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGluc2VydF9hZnRlciB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdCBub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgZHVtbXlfaGVhZGVyID0gSGVhZGVyLmNyZWF0ZSAoKVxuXG4gIGxldCB1bmxpbmtfYmVmb3JlIHQgPVxuICAgIGxldCBub2RlID0gdC5wcmV2IGluXG4gICAgaWYgaXNfc2luZ2xldG9uIG5vZGVcbiAgICB0aGVuIG5vZGVcbiAgICBlbHNlIChcbiAgICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6KC0xKTtcbiAgICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGlua19hZnRlciB0ID1cbiAgICBsZXQgbm9kZSA9IHQubmV4dCBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID0gaWdub3JlICh1bmxpbmtfYWZ0ZXIgdC5wcmV2IDogXyB0KVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIEVsdC50IG9wdGlvbiByZWZcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGhlYWQgLT5cbiAgICBsZXQgaGVhZGVyID0gRWx0LmhlYWRlciBoZWFkIGluXG4gICAgbGV0IHJlYyBsb29wIG4gZWx0ID1cbiAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbGV0IHByZXZfZWx0ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5wcmV2IG5leHRfZWx0KSk7XG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5uZXh0IHByZXZfZWx0KSk7XG4gICAgICBhc3NlcnQgKEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBlbHQpIGhlYWRlcik7XG4gICAgICBpbnZhcmlhbnRfYSAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBpZiBFbHQuZXF1YWwgbmV4dF9lbHQgaGVhZCB0aGVuIG4gZWxzZSBsb29wIChuICsgMSkgbmV4dF9lbHRcbiAgICBpblxuICAgIGxldCBsZW4gPSBsb29wIDEgaGVhZCBpblxuICAgIGFzc2VydCAobGVuID0gSGVhZGVyLmxlbmd0aCBoZWFkZXIpXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0gcmVmIE5vbmVcbmxldCBlcXVhbCAodCA6IF8gdCkgdCcgPSBwaHlzX2VxdWFsIHQgdCdcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGNyZWF0ZSAoKVxuICB8IHggOjogeHMgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIHggaW5cbiAgICBsZXQgX2xhc3QgPSBMaXN0LmZvbGQgeHMgfmluaXQ6Zmlyc3QgfmY6KGZ1biBhIGIgLT4gRWx0Lmluc2VydF9hZnRlciBhIGIpIGluXG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG9mX2FycmF5ID0gZnVuY3Rpb25cbiAgfCBbfHxdIC0+IGNyZWF0ZSAoKVxuICB8IGFyciAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgYXJyLigwKSBpblxuICAgIGxldCByZWMgbG9vcCBhcnIgZWx0IGkgPVxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBsb29wIGFyciAoRWx0Lmluc2VydF9hZnRlciBlbHQgYXJyLihpKSkgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCBhcnIgZmlyc3QgMTtcbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIDAgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiBpIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgMSBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzRsIChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgYSBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgYSBpbml0IGZpcnN0IChmdW4gZiBhIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBpdGVyX2VsdCB0IH5mID0gZm9sZF9lbHRfMSB0IH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT4gZiBlbHQpIGZcbmxldCBpdGVyaV9lbHQgdCB+ZiA9IGZvbGRpX2VsdCB0IH5pbml0OigpIH5mOihmdW4gaSAoKSBlbHQgLT4gZiBpIGVsdClcblxub3BlbiBXaXRoX3JldHVyblxuXG5sZXQgZmluZF9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRfZWx0XzEgdCBmIH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgZWx0KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCBmaW5kaV9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRpX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGkgZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiByLnJldHVybiAoU29tZSAoaSwgZWx0KSkpO1xuICAgIE5vbmUpXG47O1xuXG4oKiB0aGlzIGZ1bmN0aW9uIGlzIGxhbWJkYSBsaWZ0ZWQgZm9yIHBlcmZvcm1hbmNlLCB0byBtYWtlIGRpcmVjdCByZWN1cnNpdmUgY2FsbHMgaW5zdGVhZFxuICAgb2YgY2FsbHMgdGhyb3VnaCBpdHMgY2xvc3VyZS4gSXQgYWxzbyBhdm9pZHMgdGhlIGluaXRpYWwgY2xvc3VyZSBhbGxvY2F0aW9uLiAqKVxubGV0IHJlYyBpdGVyX2xvb3AgZmlyc3QgZiBlbHQgPVxuICBmIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcl9sb29wIGZpcnN0IGYgbmV4dFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8ybCAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJfbG9vcCBmaXJzdCBmIGZpcnN0KVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmxlbmd0aCAoRWx0LmhlYWRlciBmaXJzdClcbjs7XG5cbmxldCByZWMgaXRlcmlfbG9vcCBmaXJzdCBmIGkgZWx0ID1cbiAgZiBpIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcmlfbG9vcCBmaXJzdCBmIChpICsgMSkgbmV4dFxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMmwgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyaV9sb29wIGZpcnN0IGYgMCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgZm9sZGlfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gaSBmIGFjYyBlbHQgLT4gZiBpIGFjYyAoRWx0LnZhbHVlIGVsdCkpXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgciA9IGZvbGRfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gZiBhY2MgZWx0IC0+IGYgYWNjIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgIHJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCB1bmNoZWNrZWRfaXRlciB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgZiBlbHQgPVxuICAgICAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgKCogdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGJhZyBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQgYnkgW2ZdICopXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZmlyc3QgbmV4dCkgdGhlbiBsb29wIHQgZiBuZXh0XG4gICAgaW5cbiAgICBsb29wIHQgZiBmaXJzdFxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBPcHRpb24uaXNfbm9uZSAhdFxuXG4oKiBtb3JlIGVmZmljaWVudCB0aGFuIHdoYXQgQ29udGFpbmVyLk1ha2UgcmV0dXJucyAqKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZWx0ID1cbiAgICAgICAgbGV0IHByZXYgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgICAgbGV0IGFjYyA9IGYgKEVsdC52YWx1ZSBwcmV2KSBhY2MgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBwcmV2IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBwcmV2XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9yaWdodF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIHByZXYgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IHRvX2xpc3QgdCA9IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIHggdGwgLT4geCA6OiB0bClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHMgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgcylcblxubGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChCYXNlLkxpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG5sZXQgY29weSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxubGV0IGNsZWFyIHQgPSB0IDo9IE5vbmVcblxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgdDEgdDIgPVxuICBtYXRjaCAhdDEsICF0MiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgZjEsIFNvbWUgZjIgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmMSkgY29tcGFyZV9lbHQgZjEgZjIgKGZ1biBjb21wYXJlX2VsdCBmMSBmMiAtPlxuICAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjIpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGNvbXBhcmVfZWx0IGVsdDEgZjEgZWx0MiBmMiA9XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgKEVsdC52YWx1ZSBlbHQxKSAoRWx0LnZhbHVlIGVsdDIpIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPD4gMFxuICAgICAgICAgIHRoZW4gY29tcGFyZV9yZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0MSA9IEVsdC5uZXh0IGVsdDEgaW5cbiAgICAgICAgICAgIGxldCBuZXh0MiA9IEVsdC5uZXh0IGVsdDIgaW5cbiAgICAgICAgICAgIG1hdGNoIHBoeXNfZXF1YWwgbmV4dDEgZjEsIHBoeXNfZXF1YWwgbmV4dDIgZjIgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICAgICAgICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gbG9vcCBjb21wYXJlX2VsdCBuZXh0MSBmMSBuZXh0MiBmMilcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBjb21wYXJlX2VsdCBmMSBmMSBmMiBmMikpXG47O1xuXG5leGNlcHRpb24gVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID1cbiAgaWYgcGh5c19lcXVhbCBzcmMgZHN0IHRoZW4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdDtcbiAgbWF0Y2ggIXNyYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc3JjX2hlYWQgLT5cbiAgICAobWF0Y2ggIWRzdCB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGRzdCA6PSBTb21lIHNyY19oZWFkO1xuICAgICAgIGNsZWFyIHNyY1xuICAgICB8IFNvbWUgZHN0X2hlYWQgLT5cbiAgICAgICAobWF0Y2ggSGVhZGVyLm1lcmdlIChFbHQuaGVhZGVyIHNyY19oZWFkKSAoRWx0LmhlYWRlciBkc3RfaGVhZCkgd2l0aFxuICAgICAgICB8IGBTYW1lX2FscmVhZHkgLT4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuICAgICAgICB8IGBNZXJnZWQgLT5cbiAgICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBkc3RfaGVhZCBzcmNfaGVhZDtcbiAgICAgICAgICBjbGVhciBzcmMpKVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBpdGVyX2VsdCB0IH5mOihmdW4gZWx0IC0+IEVsdC5zZXQgZWx0IChmIChFbHQudmFsdWUgZWx0KSkpXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPSBpdGVyaV9lbHQgdCB+ZjooZnVuIGkgZWx0IC0+IEVsdC5zZXQgZWx0IChmIGkgKEVsdC52YWx1ZSBlbHQpKSlcblxubGV0IHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlID1cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGVsdCAtPlxuICAgIChtYXRjaCAhdCB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgaGVhZCAtPlxuICAgICAgIGlmIEVsdC5lcXVhbCBoZWFkIGVsdFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IG5leHRfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICB0IDo9IGlmIEVsdC5lcXVhbCBoZWFkIG5leHRfZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgbmV4dF9lbHQpKTtcbiAgICBFbHQudW5saW5rIGVsdClcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gZWx0cyBlbHQgLT5cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZWx0IDo6IGVsdHNcbiAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICBFbHQuc2V0IGVsdCB2YWx1ZTtcbiAgICAgICAgICAgZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkaV9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGkgZWx0cyBlbHQgLT5cbiAgICAgICAgIG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxuZXhjZXB0aW9uIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuXG5sZXQgZmlyc3RfZWx0IHQgPSAhdFxubGV0IGxhc3RfZWx0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC5wcmV2ICF0XG5sZXQgZmlyc3QgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnZhbHVlIChmaXJzdF9lbHQgdClcbmxldCBsYXN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAobGFzdF9lbHQgdClcbmxldCBmaXJzdF9leG4gKHQgOiAnYSB0KSA9IE9wdGlvbi52YWx1ZV9leG4gIXQgfD4gRWx0LnZhbHVlXG5sZXQgbGFzdF9leG4gKHQgOiAnYSB0KSA9IE9wdGlvbi52YWx1ZV9leG4gIXQgfD4gRWx0LnByZXYgfD4gRWx0LnZhbHVlXG5cbmxldCBpc19maXJzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGlzX2xhc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgICBFbHQuZXF1YWwgZWx0IGxhc3QpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtZW1fZWx0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuOztcblxubGV0IHByZXYgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQucHJldiBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBuZXh0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGxhc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0Lm5leHQgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2FmdGVyIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2FmdGVyIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYmVmb3JlIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICAgIG5ld19lbHQpXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYmVmb3JlIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfZW1wdHkgdCB2ID1cbiAgbGV0IG5ld19lbHQgPSBFbHQuY3JlYXRlIHYgaW5cbiAgdCA6PSBTb21lIG5ld19lbHQ7XG4gIG5ld19lbHRcbjs7XG5cbmxldCBpbnNlcnRfbGFzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPiBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2XG47O1xuXG5sZXQgaW5zZXJ0X2ZpcnN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgbmV3X2VsdFxuOztcblxubGV0IHJlbW92ZV9sYXN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnVubGlua19iZWZvcmUgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZmlyc3QgbGFzdCB0aGVuIHQgOj0gTm9uZTtcbiAgICBTb21lIChFbHQudmFsdWUgbGFzdClcbjs7XG5cbmxldCByZW1vdmVfZmlyc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHNlY29uZCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgRWx0LnVubGluayBmaXJzdDtcbiAgICB0IDo9IGlmIEVsdC5lcXVhbCBmaXJzdCBzZWNvbmQgdGhlbiBOb25lIGVsc2UgU29tZSBzZWNvbmQ7XG4gICAgU29tZSAoRWx0LnZhbHVlIGZpcnN0KVxuOztcblxubGV0IHJlbW92ZSB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBpZ25vcmUgKHJlbW92ZV9maXJzdCB0IDogXyBvcHRpb24pXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC51bmxpbmsgZWx0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgaSAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxuZXhjZXB0aW9uIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3JcblxubGV0IG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgICAgIGFmdGVyX2VsdClcbiAgICAgICAgICBlbHNlIGZpcnN0XG4gICAgICAgIGluXG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBiZWZvcmUgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgYW5jaG9yIGVsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGFuY2hvciB0aGVuIHQgOj0gU29tZSBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2Zyb250IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKEVsdC5lcXVhbCBlbHQgZmlyc3QpIHRoZW4gbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvcjpmaXJzdFxuOztcblxubGV0IG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdCB0aGVuIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBhZnRlciBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIGFuY2hvciBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2JhY2sgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBsYXN0KSB0aGVuIG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvcjpsYXN0XG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX2xpc3QgdCB8PiBTZXF1ZW5jZS5vZl9saXN0XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHAudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgdF9vZl9zZXhwID0gU2V4cGxpYi5TZXhwLnRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgPSBTZXhwbGliLlNleHAuc2V4cF9vZl90XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmluY2x1ZGUgKFxuICBCYXNlLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgdHlwZSBzZXhwID0gQmFzZS5TZXhwLnQgPVxuICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICB8IExpc3Qgb2YgdCBsaXN0XG5lbmRcblxubW9kdWxlIFNleHBfbWF5YmUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgdCAqIEVycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFJlc3VsdC5PayBhIC0+IHNleHBfb2ZfYSBhXG4gICAgfCBSZXN1bHQuRXJyb3IgKHNleHAsIGVycikgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBFcnJvci5zZXhwX29mX3QgZXJyIF1cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBfIF0gfCBzZXhwIC0+XG4gICAgICAodHJ5IFJlc3VsdC5PayAoYV9vZl9zZXhwIHNleHApIHdpdGhcbiAgICAgICB8IGV4biAtPiBSZXN1bHQuRXJyb3IgKHNleHAsIEVycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciAoZ3JhbW1hciA6IF8gU2V4cGxpYi5TZXhwX2dyYW1tYXIudCkgOiBfIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgeyB1bnR5cGVkID0gVW5pb24gWyBncmFtbWFyLnVudHlwZWQ7IEJhc2UuU2V4cC50X3NleHBfZ3JhbW1hci51bnR5cGVkIF0gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBXaXRoX3RleHQgPSBzdHJ1Y3RcbiAgb3BlbiBSZXN1bHQuRXhwb3J0XG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHZhbHVlIDogJ2FcbiAgICA7IHRleHQgOiBzdHJpbmdcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IEF0b20gdC50ZXh0XG5cbiAgbGV0IG9mX3RleHQgdmFsdWVfb2Zfc2V4cCA/KGZpbGVuYW1lID0gXCJcIikgdGV4dCA9XG4gICAgbWF0Y2ggT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBvZl9zdHJpbmdfY29udiB0ZXh0IHZhbHVlX29mX3NleHApIHdpdGhcbiAgICB8IE9rIChgUmVzdWx0IHZhbHVlKSAtPiBPayB7IHZhbHVlOyB0ZXh0IH1cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IGVyclxuICAgIHwgT2sgKGBFcnJvciAoZXhuLCBhbm5vdGF0ZWQpKSAtPlxuICAgICAgRXJyb3IgKEVycm9yLm9mX2V4biAoQW5ub3RhdGVkLmdldF9jb252X2V4biBhbm5vdGF0ZWQgfmZpbGU6ZmlsZW5hbWUgfmV4YzpleG4pKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiV2l0aF90ZXh0LnQgc2hvdWxkIGJlIHN0b3JlZCBhcyBhbiBhdG9tLCBidXQgaW5zdGVhZCBhIGxpc3Qgd2FzIGZvdW5kLlwiXG4gICAgICAgIHNleHBcbiAgICB8IEF0b20gdGV4dCAtPiBvZl90ZXh0IGFfb2Zfc2V4cCB0ZXh0IHw+IE9yX2Vycm9yLm9rX2V4blxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBfID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIEJhc2UuU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGxldCB0ZXh0IHQgPSB0LnRleHRcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgbGV0IG9mX3ZhbHVlIHNleHBfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIGxldCB0ZXh0ID0gc2V4cF9vZl92YWx1ZSB2YWx1ZSB8PiB0b19zdHJpbmdfaHVtIGluXG4gICAgeyB2YWx1ZTsgdGV4dCB9XG4gIDs7XG5lbmRcblxudHlwZSAnYSBub19yYWlzZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IHNleHBfb2Zfbm9fcmFpc2Ugc2V4cF9vZl9hIGEgPVxuICB0cnkgc2V4cF9vZl9hIGEgd2l0aFxuICB8IGV4biAtPlxuICAgICh0cnkgTGlzdCBbIEF0b20gXCJmYWlsdXJlIGJ1aWxkaW5nIHNleHBcIjsgc2V4cF9vZl9leG4gZXhuIF0gd2l0aFxuICAgICB8IF8gLT4gQXRvbSBcImNvdWxkIG5vdCBidWlsZCBzZXhwIGZvciBleG4gcmFpc2VkIHdoZW4gYnVpbGRpbmcgc2V4cCBmb3IgdmFsdWVcIilcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU2V4cCkgKEJhc2UuU2V4cClcblxubGV0IG9mX3NleHBfYWxsb3dfZXh0cmFfZmllbGRzX3JlY3Vyc2l2ZWx5IG9mX3NleHAgc2V4cCA9XG4gIGxldCByID0gU2V4cGxpYi5Db252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHMgaW5cbiAgbGV0IHByZXYgPSAhciBpblxuICBFeG4ucHJvdGVjdFxuICAgIH5maW5hbGx5OihmdW4gKCkgLT4gciA6PSBwcmV2KVxuICAgIH5mOihmdW4gKCkgLT5cbiAgICAgIHIgOj0gZmFsc2U7XG4gICAgICBvZl9zZXhwIHNleHApXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNleHBcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNleHBcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNleHBcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNoX3F1ZXVlX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBTX2JhY2tlbmQgPSBTX2JhY2tlbmRcblxubW9kdWxlIE1ha2VfYmFja2VuZCAoVGFibGUgOiBIYXNodGJsX2ludGYuSGFzaHRibCkgOiBTX2JhY2tlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQmFja2VuZCA9XG4gICAgUzFcbiAgICB3aXRoIHR5cGUgJ2tleSBjcmVhdGVfYXJnIDo9ICdrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2tleSA6PSAna2V5XG5cbiAgbW9kdWxlIEJhY2tlbmQgOiBCYWNrZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleV92YWx1ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2tleSwgJ3ZhbHVlKSB0ID1cbiAgICAgICAgICB7IGtleSA6ICdrZXlcbiAgICAgICAgICA7IG11dGFibGUgdmFsdWUgOiAndmFsdWVcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBrZXkgdCA9IHQua2V5XG4gICAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgeyBrZXk7IHZhbHVlIH0gPVxuICAgICAgICBbJXNleHBfb2Y6IGtleSAqIGRhdGFdIChrZXksIHZhbHVlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG9wZW4gS2V5X3ZhbHVlLlRcbiAgICBtb2R1bGUgRWx0ID0gRG91Ymx5X2xpbmtlZC5FbHRcblxuICAgIHR5cGUgKCdrZXksICdkYXRhKSB0ID1cbiAgICAgIHsgbXV0YWJsZSBudW1fcmVhZGVycyA6IGludFxuICAgICAgOyBxdWV1ZSA6ICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XG4gICAgICA7IHRhYmxlIDogKCdrZXksICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRWx0LnQpIFRhYmxlLnRcbiAgICAgIH1cblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICAgICAgWyVzZXhwX29mOiAoa2V5LCBkYXRhKSBLZXlfdmFsdWUudCBEb3VibHlfbGlua2VkLnRdIHQucXVldWVcbiAgICA7O1xuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIGFzc2VydCAoRG91Ymx5X2xpbmtlZC5sZW5ndGggdC5xdWV1ZSA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlKTtcbiAgICAgICgqIExvb2sgYXQgZWFjaCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgY2hlY2tpbmc6XG4gICAgICAgKiAgIC0gZXZlcnkgZWxlbWVudCBpbiB0aGUgcXVldWUgaXMgaW4gdGhlIGhhc2ggdGFibGVcbiAgICAgICAqICAgLSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXNcbiAgICAgICopXG4gICAgICBsZXQga2V5cyA9IFRhYmxlLmNyZWF0ZSB+c2l6ZTooVGFibGUubGVuZ3RoIHQudGFibGUpIChUYWJsZS5oYXNoYWJsZV9zIHQudGFibGUpIGluXG4gICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+XG4gICAgICAgIGxldCBrZXkgPSBrdi5rZXkgaW5cbiAgICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICBhc3NlcnQgKG5vdCAoVGFibGUubWVtIGtleXMga2V5KSk7XG4gICAgICAgICAgVGFibGUuc2V0IGtleXMgfmtleSB+ZGF0YTooKSlcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMTYpIGhhc2hhYmxlID1cbiAgICAgIHsgbnVtX3JlYWRlcnMgPSAwXG4gICAgICA7IHF1ZXVlID0gRG91Ymx5X2xpbmtlZC5jcmVhdGUgKClcbiAgICAgIDsgdGFibGUgPSBUYWJsZS5jcmVhdGUgfmdyb3d0aF9hbGxvd2VkIH5zaXplIChUYWJsZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCByZWFkIHQgZiA9XG4gICAgICB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgKyAxO1xuICAgICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgLSAxKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBlbnN1cmVfY2FuX21vZGlmeSB0ID1cbiAgICAgIGlmIHQubnVtX3JlYWRlcnMgPiAwXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiSXQgaXMgYW4gZXJyb3IgdG8gbW9kaWZ5IGEgSGFzaF9xdWV1ZS50IHdoaWxlIGl0ZXJhdGluZyBvdmVyIGl0LlwiXG4gICAgOztcblxuICAgIGxldCBjbGVhciB0ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBEb3VibHlfbGlua2VkLmNsZWFyIHQucXVldWU7XG4gICAgICBUYWJsZS5jbGVhciB0LnRhYmxlXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggdCA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlXG4gICAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuICAgIGxldCBsb29rdXAgdCBrID1cbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZWx0IC0+IFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfZXhuIHQgayA9IChFbHQudmFsdWUgKFRhYmxlLmZpbmRfZXhuIHQudGFibGUgaykpLnZhbHVlXG4gICAgbGV0IG1lbSB0IGsgPSBUYWJsZS5tZW0gdC50YWJsZSBrXG5cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgdGFpbC1yZWN1cnNpdmUgQ29yZV9saXN0Lm1hcCAqKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuICAgIGxldCB0b19hcnJheSB0ID0gQXJyYXkubWFwIChEb3VibHlfbGlua2VkLnRvX2FycmF5IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuXG4gICAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZvcl9hbGwgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZXhpc3RzIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSBbQG5vbnRhaWxdKSBcbiAgICAgIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5maW5kX21hcCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAoRG91Ymx5X2xpbmtlZC5maW5kIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICAgICAgICB+ZjpLZXlfdmFsdWUudmFsdWUpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgbGV0IGNvbnRlbnRzID0geyBLZXlfdmFsdWUua2V5OyB2YWx1ZSB9IGluXG4gICAgICBsZXQgZWx0ID1cbiAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5pbnNlcnRfbGFzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2ZpcnN0IHQucXVldWUgY29udGVudHNcbiAgICAgIGluXG4gICAgICBUYWJsZS5zZXQgdC50YWJsZSB+a2V5IH5kYXRhOmVsdFxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBpZiBUYWJsZS5tZW0gdC50YWJsZSBrZXlcbiAgICAgIHRoZW4gYEtleV9hbHJlYWR5X3ByZXNlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2sgdCA9IGVucXVldWUgdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250IHQgPSBlbnF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLmVucXVldWVfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIG1hdGNoIGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSB3aXRoXG4gICAgICB8IGBLZXlfYWxyZWFkeV9wcmVzZW50IC0+IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleVxuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFja19leG4gdCA9IGVucXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udF9leG4gdCA9IGVucXVldWVfZXhuIHQgYGZyb250XG5cbiAgICAoKiBQZXJmb3JtYW5jZSBoYWNrOiB3ZSBpbXBsZW1lbnQgdGhpcyB2ZXJzaW9uIHNlcGFyYXRlbHkgdG8gYXZvaWQgYWxsb2NhdGlvbiBmcm9tIHRoZVxuICAgICAgIG9wdGlvbi4gKilcbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250X2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgbWF5YmVfa3YgPVxuICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9sYXN0IHQucXVldWVcbiAgICAgICAgfCBgZnJvbnQgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfZmlyc3QgdC5xdWV1ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIG1heWJlX2t2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT5cbiAgICAgICAgVGFibGUucmVtb3ZlIHQudGFibGUga3Yua2V5O1xuICAgICAgICBTb21lIChrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKSA9XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV93aXRoX2tleTogZW1wdHkgcXVldWVcIl1cbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKVxuICAgICAgfCBTb21lIChrLCB2KSAtPiBrLCB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgZnJvbnRcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGZyb250XG5cbiAgICBsZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoXywgdikgLT4gU29tZSB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2sgdCA9IGRlcXVldWUgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250IHQgPSBkZXF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgbGFzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGxhc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX2V4bjogZW1wdHkgcXVldWVcIl1cblxuICAgIGxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfZW1wdHkgKClcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja19leG4gdCA9IGRlcXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IGRlcXVldWVfZXhuIHQgYGZyb250XG5cbiAgICBsZXQga2V5cyB0ID1cbiAgICAgICgqIFJldHVybiB0aGUga2V5cyBpbiB0aGUgb3JkZXIgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUua2V5XG4gICAgOztcblxuICAgIGxldCB0b19hbGlzdCB0ID1cbiAgICAgIExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6KGZ1biBrdiAtPiBrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpIFtAbm9udGFpbF0pIFxuICAgICAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICAgIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZm9sZCB0LnF1ZXVlIH5pbml0IH5mOihmdW4gYWMga3YgLT4gZiBhYyB+a2V5Omt2LmtleSB+ZGF0YTprdi52YWx1ZSkgXG4gICAgICAgIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBhYyB+a2V5Ol8gfmRhdGEgLT4gZiBhYyBkYXRhKSBbQG5vbnRhaWxdXG4gICAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICAgIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSBtIH5mb2xkIHQgfmZcbiAgICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICAgIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuXG4gICAgbGV0IGRlcXVldWVfYWxsIHQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbWF0Y2ggZGVxdWV1ZV9mcm9udCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgZiB2O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgIGluXG4gICAgICBsb29wICgpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVtb3ZlX2V4bjogdW5rbm93biBrZXlcIiB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlX2V4biB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlbW92ZSB0IGsgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2UgdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHY7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWVcbiAgICAgIHwgU29tZSBlbHQgLT4gKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX29yX2VucXVldWVfZnJvbnQgdCBrZXkgdmFsdWUgPSByZXBsYWNlX29yX2VucXVldWUgdCBgZnJvbnQga2V5IHZhbHVlXG4gICAgbGV0IHJlcGxhY2Vfb3JfZW5xdWV1ZV9iYWNrIHQga2V5IHZhbHVlID0gcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYGJhY2sga2V5IHZhbHVlXG5cbiAgICBsZXQgcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZXBsYWNlX2V4bjogdW5rbm93biBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2VfZXhuIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZXBsYWNlIHQgayB2IHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcCA/KG4gPSAxKSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgaWYgbiA+PSBsZW5ndGggdFxuICAgICAgdGhlbiBjbGVhciB0XG4gICAgICBlbHNlXG4gICAgICAgIGZvciBfID0gMSB0byBuIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA6IF8gb3B0aW9uKVxuICAgICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3AgP24gdCBgYmFja1xuICAgIGxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wID9uIHQgYGZyb250XG5cbiAgICBsZXQgY29weSB0ID1cbiAgICAgIGxldCBjb3BpZWQgPSBjcmVhdGUgfnNpemU6KGxlbmd0aCB0KSAoVGFibGUuaGFzaGFibGUgdC50YWJsZSkgaW5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGVucXVldWVfYmFja19leG4gY29waWVkIGtleSBkYXRhKTtcbiAgICAgIGNvcGllZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTMCB3aXRoIHR5cGUgKCdrZXksICdkYXRhKSBoYXNoX3F1ZXVlIDo9ICgna2V5LCAnZGF0YSkgQmFja2VuZC50XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5ID0gVC5LZXkudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKEJhY2tlbmQgOiBCYWNrZW5kIHdpdGggdHlwZSAoJ2ssICdkKSB0IDo9ICgnaywgJ2QpIEJhY2tlbmQudClcblxuICAgIHR5cGUga2V5ID0gVC5LZXkudFxuICAgIHR5cGUgJ2RhdGEgdCA9IChULktleS50LCAnZGF0YSkgQmFja2VuZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChLZXkgOiBLZXkpIDogUyB3aXRoIHR5cGUga2V5ID0gS2V5LnQgPSBNYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLZXkpXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQmFja2VuZFxuZW5kXG5cbmluY2x1ZGUgTWFrZV9iYWNrZW5kIChIYXNodGJsKVxuIiwiKCoqIEZ1bmN0b3JzIGFuZCBpbnRlcmZhY2VzIHVzZWQgdG8gbWFrZSBtb2R1bGVzIGhhc2hhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaGFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9wbGFpbikgOlxuICBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfcGxhaW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXkpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuICBpbmNsdWRlIFRcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBULktleVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6XG4gIFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuXG4gICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0IDogc2lnXG4gICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChLZXkpXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKEtleSlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGVcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgdHlwZSBrZXlcblxuICAgICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgICB0eXBlICdhIHQgPSAoa2V5LCAnYSkgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHZhbCBoYXNoYWJsZSA6IGtleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfc3RhYmxlKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBLZXkudCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfc3RhYmxlIChLZXkpXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfc3RhYmxlIChLZXkpXG5cbiAgICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X3N0YWJsZVxuXG4gICAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2hhciA9IEJhc2UuQ2hhclxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcbmluY2x1ZGUgSGV4ZHVtcF9pbnRmXG5cbmxldCBieXRlc19wZXJfbGluZSA9IDE2XG5cbigqIEluaXRpYWxpemUgdG8gZW5vdWdoIGxpbmVzIHRvIGRpc3BsYXkgNDA5NiBieXRlcyAtLSBsYXJnZSBlbm91Z2ggdGhhdCwgZm9yIGV4YW1wbGUsIGFcbiAgIGNvbXBsZXRlIEV0aGVybmV0IHBhY2tldCBjYW4gYWx3YXlzIGJlIGRpc3BsYXllZCAtLSBpbmNsdWRpbmcgdGhlIGxpbmUgY29udGFpbmluZyB0aGVcbiAgIGZpbmFsIGluZGV4LiAqKVxubGV0IGRlZmF1bHRfbWF4X2xpbmVzID0gcmVmICgoNDA5NiAvIGJ5dGVzX3Blcl9saW5lKSArIDEpXG5cbm1vZHVsZSBPZl9pbmRleGFibGUyIChUIDogSW5kZXhhYmxlMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoZXhfb2ZfcG9zIHBvcyA9IFByaW50Zi5zcHJpbnRmIFwiJTA4eFwiIHBvc1xuXG4gICAgbGV0IGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCBvZmZzZXQgPVxuICAgICAgbGV0IHBvcyA9IHN0YXJ0ICsgb2Zmc2V0IGluXG4gICAgICBpZiBwb3MgPj0gdW50aWwgdGhlbiBcIiAgXCIgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUwMnhcIiAoQ2hhci50b19pbnQgKGdldCB0IHBvcykpXG4gICAgOztcblxuICAgIGxldCBoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAlcyAlcyAlcyAlcyAlcyAlcyAlcyAgJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXNcIlxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA1KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDYpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA4KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDkpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTUpXG4gICAgOztcblxuICAgIGxldCBwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBTdHJpbmcuaW5pdCAodW50aWwgLSBzdGFydCkgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBjaGFyID0gZ2V0IHQgKHN0YXJ0ICsgaSkgaW5cbiAgICAgICAgaWYgQ2hhci5pc19wcmludCBjaGFyIHRoZW4gY2hhciBlbHNlICcuJylcbiAgICA7O1xuXG4gICAgbGV0IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXggPVxuICAgICAgbGV0IHN0YXJ0ID0gcG9zICsgKGxpbmVfaW5kZXggKiBieXRlc19wZXJfbGluZSkgaW5cbiAgICAgIGxldCB1bnRpbCA9IG1pbiAoc3RhcnQgKyBieXRlc19wZXJfbGluZSkgKHBvcyArIGxlbikgaW5cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgICVzICB8JXN8XCJcbiAgICAgICAgKGhleF9vZl9wb3Mgc3RhcnQpXG4gICAgICAgIChoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwpXG4gICAgICAgIChwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbClcbiAgICA7O1xuXG4gICAgbGV0IHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgbGV0IHBvcywgbGVuID1cbiAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgaW5cbiAgICAgIGxldCBtYXhfbGluZXMgPVxuICAgICAgICBtYXRjaCBtYXhfbGluZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbWF4X2xpbmVzIC0+IG1heF9saW5lc1xuICAgICAgICB8IE5vbmUgLT4gIWRlZmF1bHRfbWF4X2xpbmVzXG4gICAgICBpblxuICAgICAgKCogYWx3YXlzIHByb2R1Y2UgYXQgbGVhc3QgMyBsaW5lczogZmlyc3QgbGluZSBvZiBoZXgsIGVsbGlwc2lzLCBsYXN0IGxpbmUgb2YgaGV4ICopXG4gICAgICBsZXQgbWF4X2xpbmVzID0gbWF4IG1heF9saW5lcyAzIGluXG4gICAgICAoKiB1bmFicmlkZ2VkIGxpbmVzID0gbGluZXMgb2YgaGV4ICsgbGluZSB3aXRoIGZpbmFsIGluZGV4ICopXG4gICAgICBsZXQgdW5hYnJpZGdlZF9saW5lcyA9XG4gICAgICAgIEludC5yb3VuZF91cCBsZW4gfnRvX211bHRpcGxlX29mOmJ5dGVzX3Blcl9saW5lIC8gYnl0ZXNfcGVyX2xpbmVcbiAgICAgIGluXG4gICAgICAoKiBGaWd1cmUgb3V0IHdoZXJlIHdlIG5lZWQgdG8gc2tpcCBmcm9tIGFuZCB0byBpZiBbbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc10uXG4gICAgICAgICBTa2lwIGFmdGVyIGhhbGYgdGhlIGFjdHVhbCBoZXggbGluZXMgKHN1YnRyYWN0aW5nIG9uZSBsaW5lIGZvciB0aGUgZWxsaXBzaXMpLlxuICAgICAgICAgU2tpcCB0byBuZWFyIHRoZSBlbmQsIGxlc3MgdGhlIG51bWJlciBvZiBsaW5lcyByZW1haW5pbmcgdG8gcHJvZHVjZSwgcGx1cyB0aGVcbiAgICAgICAgIGVsbGlwc2lzIGxpbmUuICopXG4gICAgICBsZXQgc2tpcF9mcm9tID0gKG1heF9saW5lcyAtIDEpIC8gMiBpblxuICAgICAgbGV0IHNraXBfdG8gPSB1bmFicmlkZ2VkX2xpbmVzIC0gKG1heF9saW5lcyAtIHNraXBfZnJvbSkgKyAxIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gbGluZV9pbmRleCAtPlxuICAgICAgICBpZiBsaW5lX2luZGV4ID49IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgaWYgbGluZV9pbmRleCA9IHNraXBfZnJvbSAmJiBtYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IFwiLi4uXCI7IHN0YXRlID0gc2tpcF90byB9XG4gICAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXg7IHN0YXRlID0gbGluZV9pbmRleCArIDEgfSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ19odW0gP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBfIF8gdCA9IHRvX3NlcXVlbmNlIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBwcmludGFibGUgPVxuICAgICAgICBsZXQgcmVjIHByaW50YWJsZV9mcm9tIHQgfnBvcyB+bGVuZ3RoID1cbiAgICAgICAgICBwb3MgPj0gbGVuZ3RoXG4gICAgICAgICAgfHwgKENoYXIuaXNfcHJpbnQgKGdldCB0IHBvcykgJiYgcHJpbnRhYmxlX2Zyb20gdCB+cG9zOihwb3MgKyAxKSB+bGVuZ3RoKVxuICAgICAgICBpblxuICAgICAgICBmdW4gdCAtPiBwcmludGFibGVfZnJvbSB0IH5wb3M6MCB+bGVuZ3RoOihsZW5ndGggdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBwb3MgLT4gZ2V0IHQgcG9zKVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIGlmIHByaW50YWJsZSB0IHRoZW4gWyVzZXhwICh0b19zdHJpbmcgdCA6IHN0cmluZyldIGVsc2UgWyVzZXhwICh0IDogKGEsIGIpIHQpXVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZTEgKFQgOiBJbmRleGFibGUxKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgeCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCB4IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0IDogKGEsIF8pIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUgKFQgOiBJbmRleGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IDogXyBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3NleHBfZ3JhbW1hciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3JfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBFeHRlbmQgKE0gOiBCYXNlLklkZW50aWZpYWJsZS5TKSAoQiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSBNLnQpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG4gICAgaW5jbHVkZSAoQiA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZF9iaW5hYmxlIChNKSAoVClcblxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBUXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IE0uaGFzaGFibGVcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFYxID0gc2lnXG4gIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuXG4gIGluY2x1ZGVcbiAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5TXG4gICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVjEgPSBzaWdcbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3RyaW5nXG5cbigqIFRoZXNlIHR3byBhcmUgbmVlZGVkIGJlY2F1c2UgW2luY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZF0gKHByZXNlbnQgbGF0ZXIgaW4gdGhlIGZpbGUpXG4gICBiaW5kcyBuZXcgW01hcF0gYW5kIFtTZXRdIG1vZHVsZXMuICopXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgIGxldCBvZl9zdHJpbmcgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4gICAgICBsZXQgaGFzaGFibGUgPSBTdGFibGUuVjEuaGFzaGFibGVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5TdHJpbmcpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zdHJpbmdcbmxldCBnZW5fbm9uZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19ub25fZW1wdHlcbmxldCBnZW4nID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfb2ZcbmxldCBnZW5fbm9uZW1wdHknID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5X29mXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIGNoYXJzID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcnMgfmxlbmd0aFxuOztcblxubGV0IHRha2Vfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIGxmaW5kaSB0IH5mOihmdW4gXyBlbHQgLT4gbm90IChmIGVsdCkpIHdpdGhcbiAgfCBOb25lIC0+IHRcbiAgfCBTb21lIGkgLT4gc3ViIHQgfnBvczowIH5sZW46aVxuOztcblxubGV0IHJ0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCByZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKVxuOztcblxuKCoqIFNlZSB7IUFycmF5Lm5vcm1hbGl6ZX0gZm9yIHRoZSBmb2xsb3dpbmcgNCBmdW5jdGlvbnMuICopXG5sZXQgbm9ybWFsaXplIHQgaSA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubm9ybWFsaXplIH5sZW5ndGhfZnVuOmxlbmd0aCB0IGlcblxubGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3Bcbjs7XG5cbmxldCBuZ2V0IHggaSA9XG4gIGxldCBtb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmcgaW5cbiAgeC5bbm9ybWFsaXplIHggaV1cbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlN0cmluZ31bQmFzZS5TdHJpbmddfS4gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5TdHJpbmdcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogW0Nhc2VsZXNzXSBjb21wYXJlcyBhbmQgaGFzaGVzIHN0cmluZ3MgaWdub3JpbmcgY2FzZSwgc28gdGhhdCBmb3IgZXhhbXBsZVxuICAgIFtDYXNlbGVzcy5lcXVhbCBcIk9DYW1sXCIgXCJvY2FtbFwiXSBhbmQgW0Nhc2VsZXNzLihcImFwcGxlXCIgPCBcIkJhbmFuYVwiKV0gYXJlIFt0cnVlXSwgYW5kXG4gICAgW0Nhc2VsZXNzLk1hcF0sIFtDYXNlbGVzcy5UYWJsZV0gbG9va3VwIGFuZCBbQ2FzZWxlc3MuU2V0XSBtZW1iZXJzaGlwIGlzXG4gICAgY2FzZS1pbnNlbnNpdGl2ZS5cblxuICAgIFtDYXNlbGVzc10gYWxzbyBwcm92aWRlcyBjYXNlLWluc2Vuc2l0aXZlIFtpc19zdWZmaXhdIGFuZCBbaXNfcHJlZml4XSBmdW5jdGlvbnMsIHNvXG4gICAgdGhhdCBmb3IgZXhhbXBsZSBbQ2FzZWxlc3MuaXNfc3VmZml4IFwiT0NhbWxcIiB+c3VmZml4OlwiQW1MXCJdIGFuZCBbQ2FzZWxlc3MuaXNfcHJlZml4XG4gICAgXCJPQ2FtbFwiIH5wcmVmaXg6XCJvY1wiXSBhcmUgW3RydWVdLiAqKVxubW9kdWxlIENhc2VsZXNzIDogc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuICBlbmRcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHNleHBdXG5cblxuICBpbmNsdWRlIENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cblxuKCoqIFtzbGljZSB0IHN0YXJ0IHN0b3BdIHJldHVybnMgYSBuZXcgc3RyaW5nIGluY2x1ZGluZyBlbGVtZW50cyBbdC4oc3RhcnQpXSB0aHJvdWdoXG4gICAgW3QuKHN0b3AtMSldLCBub3JtYWxpemVkIFB5dGhvbi1zdHlsZSB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBbc3RvcCA9IDBdIGlzIHRyZWF0ZWQgYXNcbiAgICBbc3RvcCA9IGxlbmd0aCB0XS4gKilcbnZhbCBzbGljZSA6IHQgLT4gaW50IC0+IGludCAtPiB0XG5cbigqKiBbbmdldCBzIGldIGdldHMgdGhlIGNoYXIgYXQgbm9ybWFsaXplZCBwb3NpdGlvbiBbaV0gaW4gW3NdLiAqKVxudmFsIG5nZXQgOiB0IC0+IGludCAtPiBjaGFyXG5cbigqKiBbdGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHByZWZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBwcmVmaXggfmZdXG4gICAgKFNlZSBbbHN0cmlwXSB0byBkcm9wIHN1Y2ggYSBwcmVmaXgpICopXG52YWwgdGFrZV93aGlsZSA6IHQgLT4gZjooKGNoYXIgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG4oKiogW3J0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3Qgc3VmZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHN1ZmZpeCB+Zl1cbiAgICAoU2VlIFtyc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHN1ZmZpeCkgKilcbnZhbCBydGFrZV93aGlsZSA6IHQgLT4gZjooKGNoYXIgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHkgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG9mXG4gICAgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5JyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbc3RyaW5nXSBpcyBhbHJlYWR5IHN0YWJsZSBieSBpdHNlbGYsIHNpbmNlIGFzIGEgcHJpbWl0aXZlIHR5cGUgaXQgaXMgYW5cbiAgICBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBzZXhwIC8gYmluX2lvIHByb3RvY29sLiBbU3RyaW5nLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gaW50cm9kdWNlXG4gICAgW1N0cmluZy5TdGFibGUuU2V0XSwgW1N0cmluZy5TdGFibGUuTWFwXSwgW1N0cmluZy5TdGFibGUuVGFibGVdLCBhbmQgcHJvdmlkZSBpbnRlcmZhY2VcbiAgICB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBTdGFibGVfY29tcGFyYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlYxXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Cb29sKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkJvb2xcblxuaW5jbHVkZSAoXG4gIEJhc2UuQm9vbCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkJvb2xcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5Cb29sKVxuXG5sZXQgb2Zfc3RyaW5nX2h1bSA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCB0YWJsZSA9IFN0cmluZy5DYXNlbGVzcy5UYWJsZS5jcmVhdGUgKCkgaW5cbiAgICAgICBbIGZhbHNlLCBbIFwiZmFsc2VcIjsgXCJub1wiOyBcIjBcIiBdOyB0cnVlLCBbIFwidHJ1ZVwiOyBcInllc1wiOyBcIjFcIiBdIF1cbiAgICAgICB8PiBMaXN0Lml0ZXIgfmY6KGZ1biAoYm9vbCwgc3RyaW5ncykgLT5cbiAgICAgICAgIExpc3QuaXRlciBzdHJpbmdzIH5mOihmdW4gc3RyaW5nIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6c3RyaW5nIH5kYXRhOmJvb2w7XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5wcmVmaXggc3RyaW5nIDEpIH5kYXRhOmJvb2wpKTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgbGV0IHJhaXNlX2ludmFsaWQgaW5wdXQgPVxuICAgIGxldCBleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlID0gU3RyaW5nLlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgKGZvcmNlIHRhYmxlKSkgaW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCb29sLm9mX3N0cmluZ19odW06IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgIChpbnB1dCA6IHN0cmluZylcbiAgICAgICAgICAoZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA6IFN0cmluZy5TZXQudCldXG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBIYXNodGJsLmZpbmRfYW5kX2NhbGwgKGZvcmNlIHRhYmxlKSBzdHJpbmcgfmlmX2ZvdW5kOkZuLmlkIH5pZl9ub3RfZm91bmQ6cmFpc2VfaW52YWxpZFxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5ib29sXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5ib29sXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5ib29sXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5CeXRlc1xuXG4gICAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5CeXRlcylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IGdlbicgY2hhcl9nZW4gPSBTdHJpbmcuZ2VuJyBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuID1cbiAgU3RyaW5nLmdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkNoYXIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG4oKiBpbmNsdWRlIFtCYXNlLkNoYXJdIGFmdGVyIHRoZSBhcHBsaWNhdGlvbiBvZiBbSWRlbnRpZmlhYmxlLkV4dGVuZF0gdG8gcmVwbGFjZSB0aGVcbiAgIFtDb21wYXJhYmxlXSBmdW5jdGlvbnMgd2l0aCB0aGUgcGVydmFzaXZlIHZlcnNpb25zICopXG5pbmNsdWRlIChcbiAgQmFzZS5DaGFyIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQ2hhclxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkNoYXJcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5jaGFyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5jaGFyXG5sZXQgZ2VuX2RpZ2l0ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2RpZ2l0XG5sZXQgZ2VuX2xvd2VyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9sb3dlcmNhc2VcbmxldCBnZW5fdXBwZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VwcGVyY2FzZVxubGV0IGdlbl9hbHBoYSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYVxubGV0IGdlbl9hbHBoYW51bSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYW51bVxubGV0IGdlbl9wcmludCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9wcmludFxubGV0IGdlbl93aGl0ZXNwYWNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3doaXRlc3BhY2VcbmxldCBnZW5fdW5pZm9ybV9pbmNsdXNpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ24gPSBCYXNlLlNpZ25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduKSAoU3RhYmxlLlYxKVxuIiwiZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XSAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0XG5cbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3MsIHR5cGVyZXBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQxKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IFN0YWJsZS5WMVxuaW5jbHVkZSBUXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IFRcblxubGV0IHZhbGlkYXRlX29yZGluYXJ5IHQgPVxuICBWYWxpZGF0ZS5vZl9lcnJvcl9vcHRcbiAgICAobGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgICAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBOb25lXG4gICAgIHwgQy5JbmZpbml0ZSAtPiBTb21lIFwidmFsdWUgaXMgaW5maW5pdGVcIlxuICAgICB8IEMuTmFuIC0+IFNvbWUgXCJ2YWx1ZSBpcyBOYU5cIilcbjs7XG5cbm1vZHVsZSBWID0gc3RydWN0XG4gIG1vZHVsZSBaWiA9IENvbXBhcmFibGUuVmFsaWRhdGUgKFQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfYm91bmQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9sYm91bmQgdCB+bWluKVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfdWJvdW5kIHQgfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFZcblxubW9kdWxlIFJvYnVzdF9jb21wYXJlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAoKiBpbnRlbmRlZCB0byBiZSBhIHRvbGVyYW5jZSBvbiBodW1hbi1lbnRlcmVkIGZsb2F0cyAqKVxuXG4gICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG5cbiAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSBmbG9hdFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG4gICAgZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgICAoKiBXZSBoYXZlIHRlc3QgaW4gdGhlIHRyZWUgdGhhdCByZWx5IG9uIHRoZXNlIGZ1bmN0aW9ucyBub3QgYWxsb2NhdGluZywgZXZlbiB3aXRob3V0XG4gICAgICAgWF9MSUJSQVJZX0lOTElORy4gVGhlIG9ubHkgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZXNlIGRvbid0IGNyZWF0ZSB0ZW1wb3JhcnkgYm94ZWRcbiAgICAgICBmbG9hdHMgd2l0aG91dCBYX0xJQlJBUllfSU5MSU5HIGlzIGZvciB0aGlzIGNvZGUgdG8gc2VlIHRoZSBmbG9hdCBvcGVyYXRpb25zIGFzXG4gICAgICAgZXh0ZXJuYWxzLCBhcyBkZWZpbmVkIGluIFtQZXJ2YXNpdmVzXS4gVGhhdCdzIHdoeSB3ZSB1c2UgW1BvbHldIGFuZCBmbG9hdFxuICAgICAgIGFyaXRobWV0aWMgZnJvbSBbQ2FtbF0uICopXG4gICAgb3BlbiBQb2x5XG5cbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gVC5yb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA+PS4gKSB4IHkgPSB4ID49IFN0ZGxpYi4oIC0uICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8PS4gKSB4IHkgPSB5ID49LiB4XG4gICAgbGV0ICggPS4gKSB4IHkgPSB4ID49LiB5ICYmIHkgPj0uIHhcbiAgICBsZXQgKCA+LiApIHggeSA9IHggPiBTdGRsaWIuKCArLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPC4gKSB4IHkgPSB5ID4uIHhcbiAgICBsZXQgKCA8Pi4gKSB4IHkgPSBub3QgKHggPS4geSlcblxuICAgIGxldCByb2J1c3RseV9jb21wYXJlIHggeSA9XG4gICAgICBsZXQgZCA9IFN0ZGxpYi4oIC0uICkgeCB5IGluXG4gICAgICBpZiBkIDwgU3RkbGliLiggfi0uICkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIC0xXG4gICAgICBlbHNlIGlmIGQgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAwXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtN1xuICBlbmQpXG5cbmluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXQuT1xuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcbmVuZFxuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGluY2x1ZGUgKFxuICAgIEJhc2UuRmxvYXQuVGVyc2UgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuRmxvYXQuVGVyc2VcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmxldCByb2J1c3Rfc2lnbiB0IDogU2lnbi50ID0gaWYgdCA+LiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPC4gMC4gdGhlbiBOZWcgZWxzZSBaZXJvXG5cbigqIFRoZXJlIGFyZSB0d28gaXNzdWVzOlxuICAgLSBGbG9hdC5zaWduIHVzZWQgdG8gdXNlIHJvYnVzdCBjb21wYXJpc29uLCBhbmQgdXNlcnMgb2YgW0NvcmVdIG1pZ2h0IGhhdmUgY29tZSB0b1xuICAgICBkZXBlbmQgb24gdGhpcy5cbiAgIC0gUm9idXN0bmVzcyBhc2lkZSwgd2hhdCB3ZSBnZXQgZnJvbSBDb21wYXJhYmxlLldpdGhfemVybyB3b3VsZCBtYXAgbmFuIHRvIE5lZy5cbiopXG5sZXQgc2lnbiA9IHJvYnVzdF9zaWduXG5cbigqIFN0YW5kYXJkIDEyIHNpZ25pZmljYW50IGRpZ2l0cywgZXhwb25lbnRpYWwgbm90YXRpb24gdXNlZCBhcyBuZWNlc3NhcnksIGd1YXJhbnRlZWQgdG9cbiAgIGJlIGEgdmFsaWQgT0NhbWwgZmxvYXQgbGV4ZW0sIG5vdCB0byBsb29rIGxpa2UgYW4gaW50LiAqKVxubGV0IHRvX3N0cmluZ18xMiB4ID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgeClcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmZsb2F0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5mbG9hdFxubGV0IGdlbl91bmlmb3JtX2V4Y2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2luY2x1c2l2ZVxubGV0IGdlbl93aXRob3V0X25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfd2l0aG91dF9uYW5cbmxldCBnZW5fZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9maW5pdGVcbmxldCBnZW5fcG9zaXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlXG5sZXQgZ2VuX25lZ2F0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9uZWdhdGl2ZVxubGV0IGdlbl96ZXJvID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBaZXJvXG5sZXQgZ2VuX25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTmFuXG5sZXQgZ2VuX3N1Ym5vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgU3Vibm9ybWFsXG5sZXQgZ2VuX25vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTm9ybWFsXG5sZXQgZ2VuX2luZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBJbmZpbml0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5JbnRcblxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5JbnRcbmluY2x1ZGUgQmFzZS5JbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50KVxuXG4oKiBUaGlzIGlzIGFscmVhZHkgZGVmaW5lZCBieSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybywgYnV0IFNpZ24ub2ZfaW50IGlzXG4gICBtb3JlIGRpcmVjdC4gKilcbmxldCBzaWduID0gU2lnbi5vZl9pbnRcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50X2ludGZ9W0Jhc2UuSW50X2ludGZdfS4gKilcblxubW9kdWxlIHR5cGUgUm91bmQgPSBCYXNlLkludC5Sb3VuZFxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RhYmxlX2NvbXBhcmFibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5WMSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhleGFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEhleCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nX2h1bSA6ID9kZWxpbWl0ZXI6Y2hhciAtPiB0IC0+IHN0cmluZ1xuICBlbmRcblxuICAoKl8gRW5zdXJlIHRoYXQgdGhpcyBtb2R1bGUgaXMgYW4gZXh0ZW5zaW9uIG9mIFtCYXNlLkludC5IZXhhYmxlXS4gKilcbiAgaW5jbHVkZSBCYXNlLkludC5IZXhhYmxlIHdpdGggdHlwZSB0IDo9IHQgYW5kIG1vZHVsZSBIZXggOj0gSGV4XG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbiAgaW5jbHVkZSBIZXhhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIFF1aWNrY2hlY2thYmxlLlNfaW50IHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3VuYm91bmRlZCA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNfdW5ib3VuZGVkXG4gIGluY2x1ZGUgRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5JbnQuU1xuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uX3dpdGhfc3RhYmxlID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5zaW9uXG5cbiAgbW9kdWxlIFN0YWJsZSA6XG4gICAgU3RhYmxlIHdpdGggdHlwZSBWMS50ID0gdCBhbmQgdHlwZSBWMS5jb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDMyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQzMlxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQzMilcblxudHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50MzJcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLkludDY0XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDY0KVxuXG50eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDY0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2NFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50NjR9W0Jhc2UuSW50NjRdfS4gKilcblxuKCoqIHsyIEludGVyZmFjZSBmcm9tIEJhc2V9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuSW50NjRcbmVuZFxuXG4oKiogezIgRXh0ZW5zaW9uc30gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGVcbiAgSW50X2ludGYuRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBCaW4gOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0IDo9IEJhc2UuSW50NjMudCA9IHN0cnVjdFxuICBtb2R1bGUgQmluX2VtdWxhdGVkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDY0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy53cmFwX2V4blxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy51bndyYXBcbiAgICAgICAgZW5kKVxuICBlbmRcblxuICB0eXBlICdhIGJpbmFibGUgPSAobW9kdWxlIEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgYmluYWJsZV9vZl9yZXByIDogdHlwZSBhIGIuIChhLCBiKSBCYXNlLkludDYzLlByaXZhdGUuUmVwci50IC0+IGIgYmluYWJsZSA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQgLT4gKG1vZHVsZSBJbnQpXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQ2NCAtPiAobW9kdWxlIEJpbl9lbXVsYXRlZClcbiAgOztcblxuICBsZXQgYmluYWJsZSA6IEJhc2UuSW50NjMudCBiaW5hYmxlID0gYmluYWJsZV9vZl9yZXByIEJhc2UuSW50NjMuUHJpdmF0ZS5yZXByXG5cbiAgaW5jbHVkZSAodmFsIGJpbmFibGUpXG5cbiAgbGV0IGJpbl9zaGFwZV90ID0gQmluX3Byb3QuU2hhcGUuYmluX3NoYXBlX2ludDYzXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICAgaW5jbHVkZSBCaW5cblxuICAgICAgaW5jbHVkZSAoXG4gICAgICAgIEJhc2UuSW50NjMgOlxuICAgICAgICAgIEJhc2UuQ29tcGFyYWJsZS5TXG4gICAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IEJhc2UuSW50NjMuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgICAoKiBUaGlzIHNlcmlhbGl6YXRpb24gaXMgc3RhYmxlLCBzaW5jZSBpdCBlaXRoZXIgZGVsZWdhdGVzIHRvIFtpbnRdIG9yXG4gICAgICAgICBbSW50NjNfZW11bF0uICopXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuKCogVGhpcyBbaW5jbHVkZSBzdHJ1Y3RdIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQgbGV0cyB1cyBzaGFkb3cgW3RdIHdoZW4gd2UgaW5jbHVkZVxuICAgW0Jhc2UuSW50NjNdIGxhdGVyIG9uLiAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfaW50NjNcbmxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfaW50NjNcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjMpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBCaW5cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJhYmxlLkNvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBCYXNlLkludDYzXG5pbmNsdWRlIEJhc2UuSW50NjNcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjMpXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5cbiAgKCoqIFt0b19pbnQ2M10gYW5kIFtvZl9pbnQ2M19leG5dIGVuY29kZSBbdF0gZm9yIHVzZSBpbiB3aXJlIHByb3RvY29sczsgdGhleSBhcmVcbiAgICAgIGludGVuZGVkIHRvIGF2b2lkIGFsbG9jYXRpb24gb24gNjQtYml0IG1hY2hpbmVzIGFuZCBzaG91bGQgYmUgaW1wbGVtZW50ZWRcbiAgICAgIGVmZmljaWVudGx5LiAgW29mX2ludDYzX2V4biAodG9faW50NjMgdCkgPSB0XSBmb3IgYWxsIFt0XTsgW29mX2ludDYzX2V4bl0gcmFpc2VzIGZvclxuICAgICAgaW5wdXRzIG5vdCBwcm9kdWNlZCBieSBbdG9faW50NjNdLiAqKVxuICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcblxuICB2YWwgb2ZfaW50NjNfZXhuIDogSW50NjMudCAtPiB0XG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG5cbiAgICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogSW50NjMudCAtPiB0XG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbiAgb3BlbiBCYXNlLkV4cG9ydFxuICBvcGVuIEJpbl9wcm90LlN0ZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFYxLmNvbXBhcmF0b3JcbiAgICBsZXQgYmluX25hbWUgPSBcInVuaXRfdjJcIlxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIChfIDogQmluX3Byb3QuQ29tbW9uLmJ1ZikgfnBvc19yZWYgKF8gOiBpbnQpID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgYmluX25hbWUgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkX3QgKF8gOiBCaW5fcHJvdC5Db21tb24uYnVmKSB+cG9zX3JlZjooXyA6IGludCByZWYpID0gKClcblxuICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgYmluX25hbWUpKSBbXVxuICAgIGxldCBiaW5fc2l6ZV90ICgpID0gMFxuICAgIGxldCBiaW5fd3JpdGVfdCAoXyA6IEJpbl9wcm90LkNvbW1vbi5idWYpIH5wb3MgKCkgPSBwb3NcbiAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgIGxldCBiaW5fdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IGZmYmQxYTMwN2E0ZjdlYmU4MDIzMDQwZmVjZWJmNjk3IHx9XVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Vbml0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLlVuaXRcblxudHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnVuaXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVuaXRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnVuaXRcblxubW9kdWxlIHR5cGUgUyA9IHNpZyBlbmRcblxudHlwZSBtID0gKG1vZHVsZSBTKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBvcGVuIFNleHBsaWIuU3RkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3RcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwID0gQmFzZS5MYXp5Lm1hcFxuICAgIGxldCBjb21wYXJlID0gQmFzZS5MYXp5LmNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIFN0YWJsZS5WMS50XG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIChCYXNlLkxhenkgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuTmF0aXZlaW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuTmF0aXZlaW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLk5hdGl2ZWludClcblxudHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubmF0aXZlaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuTm90aGluZy50ID0gfFxuXG4gICAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX3NoYXBlXVxuICAgIGVuZFxuXG4gICAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBCYXNlLk5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fc2hhcGVfdCA9IFNoYXBlLmJpbl9zaGFwZV90XG4gICAgbGV0IHRwX2xvYyA9IFslaGVyZV0ucG9zX2ZuYW1lIF4gXCIuU3RhYmxlLlYxLnRcIlxuICAgIGxldCBhbGwgPSBbXVxuICAgIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgICBsZXQgYmluX3NpemVfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3dyaXRlX3QgX2J1ZiB+cG9zOl8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgXyA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIHRwX2xvYyAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRfdCBfYnVmIH5wb3NfcmVmID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV9yZWFkX2Vycm9yIChFbXB0eV90eXBlIHRwX2xvYykgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliLkNvbnZfZXJyb3IuZW1wdHlfdHlwZSB0cF9sb2Mgc2V4cFxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQmFzZS5Ob3RoaW5nXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKEJhc2UuTm90aGluZykgKFN0YWJsZS5WMSlcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBCYXNlLk9yZGVyaW5nLnQgPVxuICB8IExlc3NcbiAgfCBFcXVhbFxuICB8IEdyZWF0ZXJcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5PcmRlcmluZyB3aXRoIHR5cGUgdCA6PSB0XG5cbmluY2x1ZGUgKEJhc2UuT3JkZXJpbmcgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuUmVmXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgVC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICBsZXQgcmVhZF9vbmx5ID0gRm4uaWRcbiAgbGV0IG9mX3JlZiA9IEZuLmlkXG4gIGxldCB0b19yZWYgPSBGbi5pZFxuICBsZXQgc2V0ID0gKCA6PSApXG4gIGxldCBnZXQgPSAoICEgKVxuZW5kXG4iLCIoKiBXZSBkb24ndCBqdXN0IGluY2x1ZGUgU2V4cGxpYi5TdGQgYmVjYXVzZSBvbmUgY2FuIG9ubHkgZGVmaW5lIEhhc2h0Ymwgb25jZSBpbiB0aGlzXG4gICBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogW2luY2x1ZGVdZCBmaXJzdCBzbyB0aGF0IGV2ZXJ5dGhpbmcgZWxzZSBzaGFkb3dzIGl0ICopXG5pbmNsdWRlIENvcmVfcGVydmFzaXZlc1xuXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuaW5jbHVkZSBEZXByZWNhdGVfcGlwZV9iYW5nXG5pbmNsdWRlIEVpdGhlci5FeHBvcnRcbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5pbmNsdWRlIEludGVyZmFjZXNcbmluY2x1ZGUgTGlzdC5JbmZpeFxuaW5jbHVkZSBOZXZlcl9yZXR1cm5zXG5pbmNsdWRlIE9yZGVyaW5nLkV4cG9ydFxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcbmluY2x1ZGUgUmVzdWx0LkV4cG9ydFxuXG50eXBlIC0nYSByZXR1cm4gPSAnYSBXaXRoX3JldHVybi5yZXR1cm4gPSBwcml2YXRlIHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxuXG4oKiogUmFpc2VkIGlmIG1hbGxvYyBpbiBDIGJpbmRpbmdzIGZhaWwgKGVycm5vICogc2l6ZSkuICopXG5leGNlcHRpb24gQ19tYWxsb2NfZXhuIG9mIGludCAqIGludFxuXG4oKiBlcnJubywgc2l6ZSAqKVxubGV0ICgpID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiQ19tYWxsb2NfZXhuXCIgKENfbWFsbG9jX2V4biAoMCwgMCkpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5ID0gRXhuLkZpbmFsbHlcblxubGV0IGZzdDMgKHgsIF8sIF8pID0geFxubGV0IHNuZDMgKF8sIHksIF8pID0geVxubGV0IHRyZDMgKF8sIF8sIHopID0gelxuXG4oKiogW3BoeXNfc2FtZV0gaXMgbGlrZSBbcGh5c19lcXVhbF0sIGJ1dCB3aXRoIGEgbW9yZSBnZW5lcmFsIHR5cGUuICBbcGh5c19zYW1lXSBpcyB1c2VmdWxcbiAgICB3aGVuIGRlYWxpbmcgd2l0aCBleGlzdGVudGlhbCB0eXBlcywgd2hlbiBvbmUgaGFzIGEgcGFja2VkIHZhbHVlIGFuZCBhbiB1bnBhY2tlZCB2YWx1ZVxuICAgIHRoYXQgb25lIHdhbnRzIHRvIGNoZWNrIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAgT25lIGNhbid0IHVzZSBbcGh5c19lcXVhbF0gaW4gc3VjaCBhXG4gICAgc2l0dWF0aW9uIGJlY2F1c2UgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQuICopXG5leHRlcm5hbCBwaHlzX3NhbWUgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYltAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcblxubGV0ICggJSApID0gSW50LiggJSApXG5sZXQgKCAvJSApID0gSW50LiggLyUgKVxubGV0ICggLy8gKSA9IEludC4oIC8vIClcbmxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxubGV0IGJwcmludGYgPSBQcmludGYuYnByaW50ZlxubGV0IGNvbnN0ID0gRm4uY29uc3RcbmxldCBlcHJpbnRmID0gUHJpbnRmLmVwcmludGZcbmxldCBlcnJvciA9IE9yX2Vycm9yLmVycm9yXG5sZXQgZXJyb3JfcyA9IE9yX2Vycm9yLmVycm9yX3NcbmxldCBmYWlsd2l0aGYgPSBCYXNlLlByaW50Zi5mYWlsd2l0aGZcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcbmxldCBmb3JjZSA9IEJhc2UuTGF6eS5mb3JjZVxubGV0IGZwcmludGYgPSBQcmludGYuZnByaW50ZlxubGV0IGludmFsaWRfYXJnZiA9IEJhc2UuUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IGlmcHJpbnRmID0gUHJpbnRmLmlmcHJpbnRmXG5sZXQgaXNfbm9uZSA9IE9wdGlvbi5pc19ub25lXG5sZXQgaXNfc29tZSA9IE9wdGlvbi5pc19zb21lXG5sZXQga3NwcmludGYgPSBQcmludGYua3NwcmludGZcbmxldCBva19leG4gPSBPcl9lcnJvci5va19leG5cbmxldCBwaHlzX2VxdWFsID0gQmFzZS5waHlzX2VxdWFsXG5sZXQgcHJpbnRfcyA9IFN0ZGlvLnByaW50X3NcbmxldCBlcHJpbnRfcyA9IFN0ZGlvLmVwcmludF9zXG5sZXQgcHJpbnRmID0gUHJpbnRmLnByaW50ZlxubGV0IHByb3RlY3QgPSBFeG4ucHJvdGVjdFxubGV0IHByb3RlY3R4ID0gRXhuLnByb3RlY3R4XG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCByb3VuZCA9IEZsb2F0LnJvdW5kXG5sZXQgKCAqKi4gKSA9IEJhc2UuKCAqKi4gKVxubGV0ICggJS4gKSA9IEJhc2UuKCAlLiApXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxubGV0IHVuc3RhZ2UgPSBTdGFnZWQudW5zdGFnZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gPSBXaXRoX3JldHVybi53aXRoX3JldHVybl9vcHRpb25cblxuKCogV2l0aCB0aGUgZm9sbG93aW5nIGFsaWFzZXMsIHdlIGFyZSBqdXN0IG1ha2luZyBleHRyYSBzdXJlIHRoYXQgdGhlIHRvcGxldmVsIHNleHBcbiAgIGNvbnZlcnRlcnMgbGluZSB1cCB3aXRoIHRoZSBvbmVzIGluIG91ciBtb2R1bGVzLiAqKVxuXG5cbmluY2x1ZGUgVHlwZXJlcF9saWIuU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldLCBbYnl0ZXNdLCBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlXG4gICAgIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQgPSBJbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxhenlfdCA9ICdhIExhenkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgKCogQmluX3Byb3QgaGFzIG9wdGltaXplZCBmdW5jdGlvbnMgZm9yIGZsb2F0IGFycmF5cyAqKVxuICBpbmNsdWRlIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IEZsb2F0LnQgYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIGZsb2F0X2FycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSBmbG9hdF9hcnJheSA6PSBmbG9hdF9hcnJheSlcbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBhcnJheVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2xcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBjaGFyXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQzMlxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGF6eV90IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGlzdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvblxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZ1xuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJ5dGVzXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgdW5pdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG53aXRoIHR5cGUgYm9vbCA6PSBib29sXG53aXRoIHR5cGUgY2hhciA6PSBjaGFyXG53aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbndpdGggdHlwZSBpbnQgOj0gaW50XG53aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbndpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxud2l0aCB0eXBlICdhIGxpc3QgOj0gJ2EgbGlzdFxud2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbndpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG53aXRoIHR5cGUgc3RyaW5nIDo9IHN0cmluZ1xud2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG53aXRoIHR5cGUgJ2EgbGF6eV90IDo9ICdhIGxhenlfdFxud2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbndpdGggdHlwZSB1bml0IDo9IHVuaXQpXG5cbmxldCBzZXhwX29mX2V4biA9IEV4bi5zZXhwX29mX3RcblxuXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXSBbQEBpbW1lZGlhdGU2NF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3JlcHIgOiBSZXByLnQgLT4gdFxuICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwci50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IG9mX3JlcHIgPSBGbi5pZFxuICBsZXQgdG9fcmVwciA9IEZuLmlkXG5cbiAgbGV0IHRvX3N0cmluZyBuID1cbiAgICBsZXQgb3BlbiBSZXByIGluXG4gICAgbGV0IGtpYiA9IG9mX2ludCAxMDI0IGluXG4gICAgbGV0IG1pYiA9IGtpYiAqIGtpYiBpblxuICAgIGxldCBnaWIgPSBraWIgKiBtaWIgaW5cbiAgICBsZXQgbl9hYnMgPSBhYnMgbiBpblxuICAgIGlmIG5fYWJzIDwga2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWRCXCIgKHRvX2ludF9leG4gbilcbiAgICBlbHNlIGlmIG5fYWJzIDwgbWliXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdLXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQga2liKVxuICAgIGVsc2UgaWYgbl9hYnMgPCBnaWJcbiAgICB0aGVuIHNwcmludGYgXCIlZ01cIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBtaWIpXG4gICAgZWxzZSBzcHJpbnRmIFwiJWdHXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgZ2liKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIG4pXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBieXRlc19pbnRfZXhuIHQgPSBSZXByLnRvX2ludF9leG4gKHRvX3JlcHIgdClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gQmlnYXJyYXlcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2VfYmlnc3RyaW5nXG5cbiAgICBtb2R1bGUgWiA6IHNpZ1xuICAgICAgdHlwZSB0ID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBiaWdzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAoKiBiaWdzdHJpbmcncyBzZXJpYWxpemF0aW9uIGlzIGludGVuZGVkIHRvIGJlIHN0YWJsZS4gIFdlIGFzc2VydCBpdCBoZXJlIHJhdGhlclxuICAgICAgICAgdGhhbiBhc3NlcnRpbmcgaXQgaW4gdHdvIHNlcGFyYXRlIHBsYWNlcyBmb3IgdGhlIGJpbl9pbyBhbmQgc2V4cCBkZWZpbml0aW9ucy4gKilcbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgWlxuXG4gICAgdHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxubW9kdWxlIFVuc3RhYmxlID0gVFxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2Mgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi5tYXAgbWF4X21lbV93YWl0aW5nX2djIH5mOkJ5dGVfdW5pdHMwLmJ5dGVzX2ludF9leG5cbiAgaW5cbiAgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZVxuOztcblxubGV0IHN1Yl9zaGFyZWQgPyhwb3MgPSAwKSA/bGVuIChic3RyIDogdCkgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBBcnJheTEuc3ViIGJzdHIgcG9zIGxlblxuOztcblxuKCogRGVzdHJ1Y3Rpb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3kgOiB0IC0+IHVuaXQgPSBcImJpZ3N0cmluZ19kZXN0cm95X3N0dWJcIlxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveV9hbmRfcmVzaXplIDogdCAtPiBsZW46aW50IC0+IHQgPSBcImJpZ3N0cmluZ19yZWFsbG9jXCJcblxuKCogUmVhZGluZyAvIHdyaXRpbmcgYmluLXByb3QgKilcblxubGV0IHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/KHBvcyA9IDApID9sZW4gcmVhZGVyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIHQgbGVuIH5wb3MgaW5cbiAgbGV0IGxpbWl0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnNcIiB0IH5wb3MgfmxlbjtcbiAgbGV0IGludmFsaWRfZGF0YSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgICBgSW52YWxpZF9kYXRhIChFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbiAgaW5cbiAgbGV0IHJlYWQgYmluX3JlYWRlciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IGxpbWl0IC0gcG9zXG4gICAgdGhlbiBgTm90X2Vub3VnaF9kYXRhXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeSBgT2sgKGJpbl9yZWFkZXIgdCB+cG9zX3JlZikgd2l0aFxuICAgICAgICB8IGV4biAtPiBgSW52YWxpZF9kYXRhIChFcnJvci5vZl9leG4gZXhuKVxuICAgICAgd2l0aFxuICAgICAgfCBgSW52YWxpZF9kYXRhIF8gYXMgeCAtPiB4XG4gICAgICB8IGBPayByZXN1bHQgLT5cbiAgICAgICAgbGV0IGV4cGVjdGVkX3BvcyA9IHBvcyArIGxlbiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA9IGV4cGVjdGVkX3Bvc1xuICAgICAgICB0aGVuIGBPayAocmVzdWx0LCBleHBlY3RlZF9wb3MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX2RhdGFcbiAgICAgICAgICAgIFwicG9zX3JlZiA8PiBleHBlY3RlZF9wb3NcIlxuICAgICAgICAgICAgKCFwb3NfcmVmLCBleHBlY3RlZF9wb3MpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludCAqIGludF0pXG4gIGluXG4gIG1hdGNoXG4gICAgcmVhZCBCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciB+cG9zIH5sZW46QmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gIHdpdGhcbiAgfCAoYE5vdF9lbm91Z2hfZGF0YSB8IGBJbnZhbGlkX2RhdGEgXykgYXMgeCAtPiB4XG4gIHwgYE9rIChlbGVtZW50X2xlbmd0aCwgcG9zKSAtPlxuICAgIGlmIGVsZW1lbnRfbGVuZ3RoIDwgMFxuICAgIHRoZW4gaW52YWxpZF9kYXRhIFwibmVnYXRpdmUgZWxlbWVudCBsZW5ndGggJWRcIiBlbGVtZW50X2xlbmd0aCBbJXNleHBfb2Y6IGludF1cbiAgICBlbHNlIHJlYWQgcmVhZGVyLkJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCB+cG9zIH5sZW46ZWxlbWVudF9sZW5ndGhcbjs7XG5cbmxldCByZWFkX2Jpbl9wcm90IHQgP3BvcyA/bGVuIHJlYWRlciA9XG4gIG1hdGNoIHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/cG9zID9sZW4gcmVhZGVyIHdpdGhcbiAgfCBgT2sgeCAtPiBPayB4XG4gIHwgYEludmFsaWRfZGF0YSBlIC0+IEVycm9yIChFcnJvci50YWcgZSB+dGFnOlwiSW52YWxpZCBkYXRhXCIpXG4gIHwgYE5vdF9lbm91Z2hfZGF0YSAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJub3QgZW5vdWdoIGRhdGFcIlxuOztcblxubGV0IHdyaXRlX2Jpbl9wcm90X2tub3duX3NpemUgdCA/KHBvcyA9IDApIHdyaXRlIH5zaXplOmRhdGFfbGVuIHYgPVxuICBsZXQgdG90YWxfbGVuID0gZGF0YV9sZW4gKyBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgaWYgcG9zIDwgMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5lZ2F0aXZlIHBvc1wiIHBvcyBbJXNleHBfb2Y6IGludF07XG4gIGlmIHBvcyArIHRvdGFsX2xlbiA+IGxlbmd0aCB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBub3QgZW5vdWdoIHJvb21cIlxuICAgICAgKGBwb3MgcG9zLCBgcG9zX2FmdGVyX3dyaXRpbmcgKHBvcyArIHRvdGFsX2xlbiksIGBiaWdzdHJpbmdfbGVuZ3RoIChsZW5ndGggdCkpXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvcyBvZiBpbnQgXSAqIFsgYHBvc19hZnRlcl93cml0aW5nIG9mIGludCBdICogWyBgYmlnc3RyaW5nX2xlbmd0aCBvZiBpbnQgXV07XG4gIGxldCBwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgPSBCaW5fcHJvdC5VdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgdCB+cG9zIGRhdGFfbGVuIGluXG4gIGxldCBwb3NfYWZ0ZXJfZGF0YSA9IHdyaXRlIHQgfnBvczpwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgdiBpblxuICBpZiBwb3NfYWZ0ZXJfZGF0YSAtIHBvcyA8PiB0b3RhbF9sZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3QgYnVnIVwiXG4gICAgICAoIGBwb3NfYWZ0ZXJfZGF0YSBwb3NfYWZ0ZXJfZGF0YVxuICAgICAgLCBgc3RhcnRfcG9zIHBvc1xuICAgICAgLCBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICAgICAgLCBgZGF0YV9sZW4gZGF0YV9sZW5cbiAgICAgICwgYHRvdGFsX2xlbiB0b3RhbF9sZW4gKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3NfYWZ0ZXJfZGF0YSBvZiBpbnQgXVxuICAgICAgICAqIFsgYHN0YXJ0X3BvcyBvZiBpbnQgXVxuICAgICAgICAqIFsgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBvZiBpbnQgXVxuICAgICAgICAqIFsgYGRhdGFfbGVuIG9mIGludCBdXG4gICAgICAgICogWyBgdG90YWxfbGVuIG9mIGludCBdXTtcbiAgcG9zX2FmdGVyX2RhdGFcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdCB0ID9wb3MgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHYgPVxuICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHYgaW5cbiAgd3JpdGVfYmluX3Byb3Rfa25vd25fc2l6ZSB0ID9wb3Mgd3JpdGVyLndyaXRlIH5zaXplIHZcbjs7XG5cbigqIEhleCBkdW1wICopXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCByZWMgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3MgfmNoYXIgPVxuICBsZXQgcG9zJyA9IHBvcyAtIDEgaW5cbiAgaWYgcG9zJyA+PSBtaW5fcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zJykgY2hhclxuICB0aGVuIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zOnBvcycgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfZW5kID1cbiAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gIGluXG4gIHRvX3N0cmluZyB0IH5wb3MgfmxlbjooZGF0YV9lbmQgLSBwb3MpXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sb2NhbCB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIFxuICAgIChsZXQgZGF0YV9lbmQgPVxuICAgICAgIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1Zjp0IH5taW5fcG9zOnBvcyB+cG9zOihwb3MgKyBsZW4pIH5jaGFyOnBhZGRpbmdcbiAgICAgaW5cbiAgICAgbGV0IGxlbiA9IGRhdGFfZW5kIC0gcG9zIGluXG4gICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGVfbG9jYWwgbGVuIGluXG4gICAgIFRvX2J5dGVzLmJsaXQgfnNyYzp0IH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXRbQGNvbGRdIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsIH52YWx1ZSB+bGVuID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiQmlnc3RyaW5nLnNldF8lc19wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgaGVhZF9vcl90YWlsXG4gICAgKFslZ2xvYmFsaXplOiBzdHJpbmddIHZhbHVlKVxuICAgIGxlblxuICAgICgpXG47O1xuXG5sZXQgc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAodmFsdWUgW0Bsb2NhbF0pID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW4gdGhlbiBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbDpcInRhaWxcIiB+dmFsdWUgfmxlbjtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOnBvcyB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zICsgc2xlbiB0byBwb3MgKyBsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCByZWMgZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zIH5tYXhfcG9zIH5jaGFyID1cbiAgaWYgcG9zIDw9IG1heF9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MpIGNoYXJcbiAgdGhlbiBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3M6KEludC5zdWNjIHBvcykgfm1heF9wb3MgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICh2YWx1ZSBbQGxvY2FsXSkgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggdmFsdWUgaW5cbiAgaWYgc2xlbiA+IGxlbiB0aGVuIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsOlwiaGVhZFwiIH52YWx1ZSB+bGVuO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6KHBvcyArIGxlbiAtIHNsZW4pIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgdG8gcG9zICsgbGVuIC0gc2xlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gIHRvX3N0cmluZyB0IH5wb3M6ZGF0YV9iZWdpbiB+bGVuOihsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykpXG47O1xuXG5sZXQgZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZ19sb2NhbCB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIFxuICAgIChsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gICAgIGxldCBsZW4gPSBsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykgaW5cbiAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZV9sb2NhbCBsZW4gaW5cbiAgICAgVG9fYnl0ZXMuYmxpdCB+c3JjOnQgfnNyY19wb3M6ZGF0YV9iZWdpbiB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5iaWdzdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gICAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICAgIH1cblxuICBsZXQgdG9fc3RyaW5nIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcblxuICBsZXQgdG9fYnl0ZXMgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9XG4gICAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gICAgfVxuXG4gIGxldCBvZl9zdHJpbmcgdCBzdHJpbmcgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuXG4gIGxldCBvZl9ieXRlcyB0IGJ5dGVzID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX2J5dGVzIGJ5dGVzIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmluX3Byb3QuTWQ1XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gU3RyaW5nLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IFN0cmluZy50X29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IGhhc2hfZm9sZF90IGFjY3VtIHQgPSBTdHJpbmcuaGFzaF9mb2xkX3QgYWNjdW0gKFQudG9fYmluYXJ5IHQpXG5sZXQgaGFzaCB0ID0gU3RyaW5nLmhhc2ggKFQudG9fYmluYXJ5IHQpXG5cbm1vZHVsZSBBc19iaW5hcnlfc3RyaW5nID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBTdHJpbmcuc2V4cF9vZl90IChULnRvX2JpbmFyeSB4KVxuICAgICAgbGV0IHRfb2Zfc2V4cCB4ID0gVC5vZl9iaW5hcnlfZXhuIChTdHJpbmcudF9vZl9zZXhwIHgpXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IFQudG9fYmluYXJ5XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IFQub2ZfYmluYXJ5X2V4blxuXG4gICAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBCaW5hYmxlID0gU3RyaW5nLlN0YWJsZS5WMVxuXG4gICAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0cmluZy5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgICAgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgbGV0IG9mX2JpbmFibGUgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5fcHJvdC5NZDUuU3RhYmxlLlYxXG5cbiAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICBlbmQpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgIEJpbl9wcm90Lk1kNS5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICB0b19iaW5hYmxlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGRpZ2VzdF9zdHJpbmcgcyA9IE1kNV9saWIuc3RyaW5nIHNcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgZGlnZXN0X251bV9ieXRlcyA9IDE2XG5sZXQgdG9faGV4ID0gVC50b19oZXhcbmxldCBmcm9tX2hleCA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2hleF9leG4gPSBULm9mX2hleF9leG5cbmxldCBvZl9iaW5hcnlfZXhuID0gVC5vZl9iaW5hcnlfZXhuXG5sZXQgdG9fYmluYXJ5ID0gVC50b19iaW5hcnlcbmxldCBkaWdlc3Rfc3RyaW5nID0gU3RhYmxlLmRpZ2VzdF9zdHJpbmdcbmxldCBkaWdlc3RfYnl0ZXMgPSBNZDVfbGliLmJ5dGVzXG5cbmV4dGVybmFsIGNhbWxfc3lzX29wZW5cbiAgOiAgc3RyaW5nXG4gIC0+IFN0ZGxpYi5vcGVuX2ZsYWcgbGlzdFxuICAtPiBwZXJtOmludFxuICAtPiBpbnRcbiAgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBjYW1sX3N5c19jbG9zZSA6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5leHRlcm5hbCBkaWdlc3RfZmRfYmxvY2tpbmcgOiBpbnQgLT4gc3RyaW5nID0gXCJjb3JlX21kNV9mZFwiXG5cbmxldCBkaWdlc3RfZmlsZV9ibG9ja2luZyBwYXRoID1cbiAgb2ZfYmluYXJ5X2V4blxuICAgIChCYXNlLkV4bi5wcm90ZWN0eFxuICAgICAgIChjYW1sX3N5c19vcGVuIHBhdGggWyBPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnkgXSB+cGVybTowbzAwMClcbiAgICAgICB+ZjpkaWdlc3RfZmRfYmxvY2tpbmdcbiAgICAgICB+ZmluYWxseTpjYW1sX3N5c19jbG9zZSlcbjs7XG5cbmxldCBmaWxlID0gZGlnZXN0X2ZpbGVfYmxvY2tpbmdcblxubGV0IGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW4gPVxuICBvZl9iaW5hcnlfZXhuIChTdGRsaWIuRGlnZXN0LmNoYW5uZWwgY2hhbm5lbCBsZW4pXG47O1xuXG5sZXQgY2hhbm5lbCBjaGFubmVsIGxlbiA9XG4gIGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW5cbjs7XG5cbmxldCBvdXRwdXRfYmxvY2tpbmcgdCBvYyA9IFN0ZGxpYi5EaWdlc3Qub3V0cHV0IG9jICh0b19iaW5hcnkgdClcbmxldCBvdXRwdXQgb2MgdCA9IG91dHB1dF9ibG9ja2luZyB0IG9jXG5sZXQgaW5wdXRfYmxvY2tpbmcgaWMgPSBvZl9iaW5hcnlfZXhuIChTdGRsaWIuRGlnZXN0LmlucHV0IGljKVxubGV0IGlucHV0ID0gaW5wdXRfYmxvY2tpbmdcbmxldCBkaWdlc3Rfc3ViYnl0ZXMgPSBNZDVfbGliLnN1YmJ5dGVzXG5sZXQgc3RyaW5nID0gZGlnZXN0X3N0cmluZ1xubGV0IGJ5dGVzID0gZGlnZXN0X2J5dGVzXG5sZXQgc3ViYnl0ZXMgcyBwb3MgbGVuID0gZGlnZXN0X3N1YmJ5dGVzIHMgfnBvcyB+bGVuXG5cbmxldCBkaWdlc3RfYmluX3Byb3Qgd3JpdGVyIHZhbHVlID1cbiAgZGlnZXN0X3N0cmluZyAoQ29yZV9iaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nIHdyaXRlciB2YWx1ZSlcbjs7XG5cbmV4dGVybmFsIGNfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuICA6ICBCaWdzdHJpbmcudFxuICAtPiBwb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gcmVzOkJ5dGVzLnRcbiAgLT4gdW5pdFxuICA9IFwiY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1wiXG5cbmxldCB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgKCogSXQncyBtb3JlIGVmZmljaWVudCB0byBhbGxvY2F0ZSB0aGUgcmVzdWx0IG9uIHRoZSBPQ2FtbCBzaWRlIGFuZCBkZWNsYXJlIHRoZSBDXG4gICAgIGZ1bmN0aW9uIGFzIG5vYWxsb2MgdGhhbiB0byBsZXQgdGhlIEMgZnVuY3Rpb24gYWxsb2NhdGUuICopXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgY19kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gfnJlcztcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5XG4gICAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IGRpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuOztcblxubGV0IGRpZ2VzdF9iaWdzdHJpbmcgYnVmID1cbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3M6MCB+bGVuOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zilcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbmFibGUwXG5cbigqIFtvZl9zdHJpbmddIGFuZCBbdG9fc3RyaW5nXSBjYW4ndCBnbyBpbiBiaW5hYmxlMC5tbCBkdWUgdG8gYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBvZl9zdHJpbmcgbSBzdHJpbmcgPSBvZl9iaWdzdHJpbmcgbSAoQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nIG0gdCA9IEJpZ3N0cmluZy50b19zdHJpbmcgKHRvX2JpZ3N0cmluZyBtIHQpXG4iLCIoKiBGdW5jdGlvbnMgZm9yIHBhcnNpbmcgdGltZSB6b25lIGRhdGFiYXNlIGZpbGVzICh6aWMgZmlsZXMpLlxuXG4gICBBIHRpbWUgem9uZSBmaWxlIGNvbnNpc3RzIChjb25jZXB0dWFsbHkgLSB0aGUgcmVwcmVzZW50YXRpb24gaXMgbW9yZVxuICAgY29tcGFjdCkgb2YgYW4gb3JkZXJlZCBsaXN0IG9mIChUaW1lLnQgKiBbbG9jYWxfdGltZV90eXBlXSkgdGhhdCBtYXJrXG4gICB0aGUgYm91bmRhcmllcyAobWFya2VkIGZyb20gdGhlIGVwb2NoKSBhdCB3aGljaCB2YXJpb3VzIHRpbWUgYWRqdXN0bWVudFxuICAgcmVnaW1lcyBhcmUgaW4gZWZmZWN0LiAgVGhpcyBjYW4gYWxzbyBiZSB0aG91Z2h0IG9mIGFzIGJyZWFraW5nIGRvd24gYWxsXG4gICB0aW1lIHBhc3QgdGhlIGVwb2NoIGludG8gcmFuZ2VzIHdpdGggYSBbbG9jYWxfdGltZV90eXBlXSB0aGF0IGRlc2NyaWJlcyB0aGVcbiAgIG9mZnNldCBmcm9tIEdNVCB0byBhcHBseSB0byBlYWNoIHJhbmdlIHRvIGdldCBsb2NhbCB0aW1lLlxuKilcblxub3BlbiBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFpvbmVfaW50ZlxuXG5leGNlcHRpb24gSW52YWxpZF9maWxlX2Zvcm1hdCBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRnVsbF9kYXRhID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgSW5kZXggPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgbGV0IG5leHQgPSBJbnQuc3VjY1xuICAgICAgICBsZXQgcHJldiA9IEludC5wcmVkXG4gICAgICAgIGxldCBiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiA9IC0xXG5cbiAgICAgICAgKCogU29tZSBleGlzdGluZyBjbGllbnRzIGV4cGVjdCBbaW5kZXggPj0gMF0sIHNvIHdlIG5ldmVyIHNlcmlhbGl6ZSBhIG5lZ2F0aXZlXG4gICAgICAgICAgIGluZGV4LiBUaGlzIGNvbnZlcnNpb24gY2FuIGJlIHJlbW92ZWQgaWYgbmV3IHN0YWJsZSB2ZXJzaW9ucyBhcmUgbWludGVkLiAqKVxuICAgICAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IG1heCAwIHRcblxuICAgICAgICAoKiBXaGVuIHRoZSBpbmRleCBvZiBhIHRpbWUgem9uZSB3aXRoIG5vIHRyYW5zaXRpb25zIGlzIGNvbnZlcnRlZCB2aWEgdG9fZXh0ZXJuYWwsXG4gICAgICAgICAgIGl0cyB2YWx1ZSBiZWNvbWVzIDAgZXZlbiB0aG91Z2ggaXRzIHRyYW5zaXRpb24gYXJyYXkgaXMgZW1wdHkgKGFuZCBpdCBzaG91bGRcbiAgICAgICAgICAgaGF2ZSBiZWVuIC0xKS4gV2hlbiB0aGUgY29udmVydGVkIHZhbHVlIGlzIGNoYW5nZWQgYmFjayB0byBhIFpvbmUudCB0aHJvdWdoXG4gICAgICAgICAgIG9mX2V4dGVybmFsLCByZXR1cm5pbmcgdGhpcyB2YWx1ZSBmb3IgaXRzIGluZGV4IGNvdWxkIHJlc3VsdCBpbiB1bnNhZmUgYXJyYXlcbiAgICAgICAgICAgYWNjZXNzZXMgdG8gdGhlIHRyYW5zaXRpb24gYXJyYXkgb2YgdGhlIHpvbmUgKHNpbmNlIHRoZXJlIGlzIG5vIHRyYW5zaXRpb24gYXRcbiAgICAgICAgICAgaW5kZXggMCkuIEFsc28sIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8ga2VlcCB0aGUgY29udmVydGVkIGluZGV4IGJlY2F1c2UgaXRcbiAgICAgICAgICAgaXMgaW50ZW5kZWQgdG8gYmUgYSBtdXRhYmxlIHZhbHVlIHVzZWQgZm9yIGNhY2hpbmcuIFNvIG9mX2V4dGVybmFsIGFsd2F5cyBzZXRzXG4gICAgICAgICAgIHRoZSBpbmRleCB0byAtMSwgd2hpY2ggaXMgYSBzYWZlIHZhbHVlLiAqKVxuICAgICAgICBsZXQgb2ZfZXh0ZXJuYWwgKF8gOiB0KSA9IC0xXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgSW50LlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIHRvX2V4dGVybmFsXG4gICAgICAgIDs7XG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9leHRlcm5hbFxuICAgICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpbWUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBpc19kc3QgOiBib29sXG4gICAgICAgICAgOyBhYmJydiA6IHN0cmluZ1xuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZFxuXG4gICAgICAoKiBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVuIGxlYXAgc2Vjb25kcyBzaG91bGQgYmUgYXBwbGllZCAtIHVudXNlZFxuICAgICAgICAgYmVjYXVzZSB3ZSBhcmUgdHJhbnNsYXRpbmcgYmFzZWQgb24gYSBlcG9jaCBzeXN0ZW0gY2xvY2sgKHNlZSB0aGUgQ29yZV96b25lXG4gICAgICAgICBkb2N1bWVudGF0aW9uKS4gKilcbiAgICAgIG1vZHVsZSBMZWFwX3NlY29uZCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IHNlY29uZHMgOiBpbnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRyYW5zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBuZXdfcmVnaW1lIDogUmVnaW1lLnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDtcbiAgICAgICAgICBkaWdlc3QgOiBNZDUuQXNfYmluYXJ5X3N0cmluZy5TdGFibGUuVjEudCBvcHRpb25cbiAgICAgICAgOyB0cmFuc2l0aW9ucyA6IFRyYW5zaXRpb24udCBhcnJheVxuICAgICAgICA7ICgqIGNhY2hlcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJhbnNpdGlvbiB3ZSB1c2VkIHRvIG1ha2UgbG9va3VwcyBmYXN0ZXIgKilcbiAgICAgICAgICBtdXRhYmxlIGxhc3RfcmVnaW1lX2luZGV4IDogSW5kZXgudFxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlIDogUmVnaW1lLnRcbiAgICAgICAgOyBsZWFwX3NlY29uZHMgOiBMZWFwX3NlY29uZC50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgKCogdGhpcyByZWxpZXMgb24gem9uZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGhhdmluZyB0aGUgc2FtZSB0cmFuc2l0aW9ucyAqKVxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBTdHJpbmcuY29tcGFyZSB0MS5uYW1lIHQyLm5hbWVcbiAgICAgIGxldCBvcmlnaW5hbF9maWxlbmFtZSB6b25lID0gem9uZS5vcmlnaW5hbF9maWxlbmFtZVxuICAgICAgbGV0IGRpZ2VzdCB6b25lID0gem9uZS5kaWdlc3RcblxuICAgICAgbW9kdWxlIFpvbmVfZmlsZSA6IHNpZ1xuICAgICAgICB2YWwgaW5wdXRfdHpfZmlsZSA6IHpvbmVuYW1lOnN0cmluZyAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIGxldCBib29sX29mX2ludCBpID0gaSA8PiAwXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50MzIgPVxuICAgICAgICAgIGxldCBsb25nID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICBsZXQgaW50MzJfb2ZfY2hhciBjaHIgPSBJbnQzMi5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgZnVuIGljIC0+XG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBsZXQgc2IxID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMCkpIDI0IGluXG4gICAgICAgICAgICBsZXQgc2IyID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMSkpIDE2IGluXG4gICAgICAgICAgICBsZXQgc2IzID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMikpIDggaW5cbiAgICAgICAgICAgIGxldCBzYjQgPSBpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAzKSBpblxuICAgICAgICAgICAgSW50MzIuYml0X29yIChJbnQzMi5iaXRfb3Igc2IxIHNiMikgKEludDMyLmJpdF9vciBzYjMgc2I0KVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugb24gbnVtYmVycyB0aGF0IHdpbGwgZml0IGludG8gYSAzMS1iaXRcbiAgICAgICAgICAgaW50LiBVTklYIHRpbWVzdGFtcHMgd29uJ3QsIGZvciBleGFtcGxlLiAgSW4gb3VyIGNhc2UgdGhpcyBpcyBvbmx5IHVzZWRcbiAgICAgICAgICAgdG8gaG9sZCBzbWFsbCBudW1iZXJzIHRoYXQgYXJlIG5ldmVyIGludGVycHJldGVkIGFzIHRpbWVzdGFtcHMuICopXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludCBpYyA9IEludDMyLnRvX2ludF9leG4gKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDYzIGljID0gSW50NjMub2ZfaW50MzIgKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfbG9uZ19hc19pbnQ2MyBpYyA9XG4gICAgICAgICAgbGV0IGludDYzX29mX2NoYXIgY2hyID0gSW50NjMub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGxldCBzaGlmdCBjIGJpdHMgPSBJbnQ2My5zaGlmdF9sZWZ0IChpbnQ2M19vZl9jaGFyIGMpIGJpdHMgaW5cbiAgICAgICAgICBsZXQgbG9uZ19sb25nID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nX2xvbmcgfnBvczowIH5sZW46ODtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMCkgNTYgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMSkgNDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDIpIDQwKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAzKSAzMikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNCkgMjQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDUpIDE2KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA2KSA4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChpbnQ2M19vZl9jaGFyIChCeXRlcy5nZXQgbG9uZ19sb25nIDcpKSBpblxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9saXN0IGljIH5sZW4gfmYgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBjIGxzdCA9XG4gICAgICAgICAgICBpZiBjID4gMCB0aGVuIGxvb3AgKGMgLSAxKSAoZiBpYyA6OiBsc3QpIGVsc2UgTGlzdC5yZXYgbHN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIGxlbiBbXVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hcnJheSBpYyB+bGVuIH5mID0gQXJyYXkub2ZfbGlzdCAoaW5wdXRfbGlzdCBpYyB+bGVuIH5mKVxuXG4gICAgICAgIGxldCBpbnB1dF9yZWdpbWUgaWMgPVxuICAgICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludDYzIGljIGluXG4gICAgICAgICAgbGV0IGlzX2RzdCA9IGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSBpblxuICAgICAgICAgIGxldCBhYmJydl9pbmRleCA9IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykgaW5cbiAgICAgICAgICBsZXQgbHQgYWJicnYgPSB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdDsgYWJicnYgfSBpblxuICAgICAgICAgIGx0LCBhYmJydl9pbmRleFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW4gPVxuICAgICAgICAgIGxldCByYXdfYWJicnZzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmxlbiB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBsZXQgXywgaW5kZXhlZF9hYmJydnMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkIHJhd19hYmJydnMgfmluaXQ6KDAsIE1hcC5Qb2x5LmVtcHR5KSB+ZjooZnVuIChpbmRleCwgYWJicnZzKSBjIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICB8ICdcXDAwMCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dF9pbmRleCA9IGluZGV4ICsgU3RyaW5nLmxlbmd0aCBkYXRhICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBhYmJydnMgPSBNYXAuc2V0IGFiYnJ2cyB+a2V5OmluZGV4IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICAgICAgICBuZXh0X2luZGV4LCBhYmJydnNcbiAgICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICAgICAgICAgIGluZGV4LCBhYmJydnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA8PiAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEludmFsaWRfZmlsZV9mb3JtYXRcbiAgICAgICAgICAgICAgICAgXCJtaXNzaW5nIFxcMDAwIHRlcm1pbmF0aW5nIGNoYXJhY3RlciBpbiBpbnB1dF9hYmJyZXZpYXRpb25zXCIpO1xuICAgICAgICAgIGluZGV4ZWRfYWJicnZzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19sb2NhbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHN0ZF93YWxsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgbGVhcF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0eXBlX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgYWJicnZfY2hhcl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fdGltZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF90cmFuc2l0aW9uIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25faW5kaWNlcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0XG4gICAgICAgICAgICAgIGljXG4gICAgICAgICAgICAgIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSlcbiAgICAgICAgICAgICAgfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfcmVnaW1lIH5sZW46dHlwZV9jb3VudCBpblxuICAgICAgICAgIGxldCBhYmJyZXZpYXRpb25zID0gaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuOmFiYnJ2X2NoYXJfY291bnQgaW5cbiAgICAgICAgICBsZXQgbGVhcF9zZWNvbmRzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9sZWFwX3NlY29uZCB+bGVuOmxlYXBfY291bnQgaW5cbiAgICAgICAgICAoKiBUaGUgZm9sbG93aW5nIHR3byBhcnJheXMgaW5kaWNhdGUgdHdvIGJvb2xlYW4gdmFsdWVzIHBlciByZWdpbWUgdGhhdFxuICAgICAgICAgICAgIHJlcHJlc2VudCBhIHRocmVlLXZhbHVlIHR5cGUgdGhhdCB3b3VsZCB0cmFuc2xhdGUgdG86XG5cbiAgICAgICAgICAgICB0eXBlIHRyYW5zaXRpb25fdHlwZSA9IFVUQyB8IFN0YW5kYXJkIHwgV2FsbF9jbG9ja1xuXG4gICAgICAgICAgICAgSG93ZXZlciwgdGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgc3lzdGVtIGxpYnJhcnkgd2hlbiBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSB0aGVcbiAgICAgICAgICAgICBUWiB2YXJpYWJsZSBpcyBzZXQsIG5vdCB0byBhIHRpbWUgem9uZSBuYW1lLCBidXQgaW5zdGVhZCBpcyBvZiB0aGUgZm9ybTpcblxuICAgICAgICAgICAgIFRaID0gXCJzdGQgb2Zmc2V0IGRzdCBvZmZzZXQsIHJ1bGVcIlxuXG4gICAgICAgICAgICAgV2hpY2ggaXMgZGVlcGx5IG9ic2N1cmUsIGFuZCBhbG1vc3QgY2VydGFpbmx5IGEgbWlzdGFrZSB0byB1c2UuICBUaGlzIGxpYnJhcnkgbWFrZXNcbiAgICAgICAgICAgICBubyBwcmV0ZW5zZSBhYm91dCBoYW5kbGluZyB0aGlzIGNhc2UuICBXZSBjb250aW51ZSB0byByZWFkIHRoZW0gaW4gZm9yXG4gICAgICAgICAgICAgY29tcGxldGVuZXNzLCBhbmQgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBsYXRlciBkaXNjb3ZlciBhIGNhc2Ugd2hlcmVcbiAgICAgICAgICAgICB0aGV5IGFyZSB1c2VkLiAqKVxuICAgICAgICAgIGxldCBfc3RkX3dhbGxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnN0ZF93YWxsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF91dGNfbG9jYWxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnV0Y19sb2NhbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID1cbiAgICAgICAgICAgIEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgKExpc3QubWFwIHJlZ2ltZXMgfmY6KGZ1biAobHQsIGFiYnJ2X2luZGV4KSAtPlxuICAgICAgICAgICAgICAgICBsZXQgYWJicnYgPSBNYXAuZmluZF9leG4gYWJicmV2aWF0aW9ucyBhYmJydl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBsdCBhYmJydikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmF3X3RyYW5zaXRpb25zID1cbiAgICAgICAgICAgIExpc3QubWFwMl9leG4gdHJhbnNpdGlvbl90aW1lcyB0cmFuc2l0aW9uX2luZGljZXMgfmY6KGZ1biB0aW1lIGluZGV4IC0+XG4gICAgICAgICAgICAgIGxldCByZWdpbWUgPSByZWdpbWVzLihpbmRleCkgaW5cbiAgICAgICAgICAgICAgdGltZSwgcmVnaW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25zID1cbiAgICAgICAgICAgIGxldCByZWMgbWFrZV90cmFuc2l0aW9ucyBhY2MgbCA9XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGFjYylcbiAgICAgICAgICAgICAgfCAoc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoLCBuZXdfcmVnaW1lKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgICAgKHsgVHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IG5ld19yZWdpbWUgfSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9ucyBbXSByYXdfdHJhbnNpdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICBtYXRjaCBBcnJheS5maW5kIHJlZ2ltZXMgfmY6KGZ1biByIC0+IG5vdCByLlJlZ2ltZS5pc19kc3QpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByZWdpbWVzLigwKVxuICAgICAgICAgICAgfCBTb21lIGx0dCAtPiBsdHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBuYW1lIH5vcmlnaW5hbF9maWxlbmFtZSB+ZGlnZXN0IC0+XG4gICAgICAgICAgICB7IG5hbWVcbiAgICAgICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBTb21lIG9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICAgICAgICA7IGRpZ2VzdCA9IFNvbWUgZGlnZXN0XG4gICAgICAgICAgICA7IHRyYW5zaXRpb25zXG4gICAgICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVcbiAgICAgICAgICAgIDsgbGVhcF9zZWNvbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggPSBpbnB1dF9sZWFwX3NlY29uZCBpYyBpblxuICAgICAgICAgIGxldCBzZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICB7IExlYXBfc2Vjb25kLnRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgc2Vjb25kcyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYWRfaGVhZGVyIGljID1cbiAgICAgICAgICBsZXQgbWFnaWMgPVxuICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZiB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmVxdWFsIG1hZ2ljIFwiVFppZlwiKVxuICAgICAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJtYWdpYyBjaGFyYWN0ZXJzIFRaaWYgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPVxuICAgICAgICAgICAgbWF0Y2ggSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAnXFwwMDAnIC0+IGBWMVxuICAgICAgICAgICAgfCBTb21lICcyJyAtPiBgVjJcbiAgICAgICAgICAgIHwgU29tZSAnMycgLT4gYFYzXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJleHBlY3RlZCB2ZXJzaW9uLCBmb3VuZCBub3RoaW5nXCIpXG4gICAgICAgICAgICB8IFNvbWUgYmFkX3ZlcnNpb24gLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCJ2ZXJzaW9uICglYykgaXMgaW52YWxpZFwiIGJhZF92ZXJzaW9uKSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHNwYWNlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGluIHRoZSBmb3JtYXQgKilcbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZjooQnl0ZXMuY3JlYXRlIDE1KSB+cG9zOjAgfmxlbjoxNTtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjEgaWMgPVxuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfYXNfaW50NjMgfmlucHV0X2xlYXBfc2Vjb25kIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCpcbiAgICAgICAgICAgdmVyc2lvbiAyIHRpbWV6b25lIGZpbGVzIGhhdmUgdGhlIGZvcm1hdDpcblxuICAgICAgICAgICBwYXJ0IDEgLSBleGFjdGx5IHRoZSBzYW1lIGFzIHYxXG5cbiAgICAgICAgICAgcGFydCAyIC0gc2FtZSBmb3JtYXQgYXMgdjEsIGV4Y2VwdCB0aGF0IDggYnl0ZXMgYXJlIHVzZWQgdG8gc3RvcmVcbiAgICAgICAgICAgdHJhbnNpdGlvbiB0aW1lcyBhbmQgbGVhcCBzZWNvbmRzXG5cbiAgICAgICAgICAgcGFydCAzIC0gYSBuZXdsaW5lLWVuY2xvZGVkLCBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZVxuICAgICAgICAgICBzdHJpbmcgZm9yIHVzZSBpbiBoYW5kbGluZyBpbnN0YW50cyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHRpbWVcbiAgICAgICAgICAgc3RvcmVkIGluIHRoZSBmaWxlICh3aXRoIG5vdGhpbmcgYmV0d2VlbiB0aGUgbmV3bGluZXMgaWYgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgUE9TSVggcmVwcmVzZW50YXRpb24gZm9yIHN1Y2ggaW5zdGFudHMpXG5cbiAgICAgICAgICAgV2UgaGFuZGxlIGZpbGVzIGluIHRoaXMgZm9ybWF0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0IHBhcnQgZXhhY3RseSBhcyBhIHYxXG4gICAgICAgICAgIHRpbWV6b25lIGZpbGUgYW5kIHRoZW4gY29udGludWluZyB0byBwYXJzZSB3aXRoIDY0Yml0IHJlYWRpbmcgZnVuY3Rpb25zIGluIHRoZVxuICAgICAgICAgICByaWdodCBwbGFjZXMuXG5cbiAgICAgICAgICAgVmVyc2lvbiAzIHRpbWV6b25lIGZpbGVzIGFyZSB0aGUgc2FtZSBhcyB2ZXJzaW9uIDIsIGV4Y2VwdCB0aGVcbiAgICAgICAgICAgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RyaW5nIGluIHBhcnQgMyBtYXkgdXNlIHR3byBtaW5vclxuICAgICAgICAgICBleHRlbnNpb25zIHRvIHRoZSBQT1NJWCBUWiBmb3JtYXQgKHRoZSBob3VycyBwYXJ0IG9mIGl0cyB0cmFuc2l0aW9uXG4gICAgICAgICAgIHRpbWVzIG1heSBiZSBzaWduZWQgYW5kIHJhbmdlIGZyb20gLTE2NyB0aHJvdWdoIDE2NyBpbnN0ZWFkIG9mIHRoZVxuICAgICAgICAgICBQT1NJWC1yZXF1aXJlZCB1bnNpZ25lZCB2YWx1ZXMgZnJvbSAwIHRocm91Z2ggMjQ7IGFuZCBEU1QgaXMgaW4gZWZmZWN0IGFsbFxuICAgICAgICAgICB5ZWFyIGlmIGl0IHN0YXJ0cyBKYW51YXJ5IDEgYXQgMDA6MDAgYW5kIGVuZHMgRGVjZW1iZXIgMzEgYXQgMjQ6MDAgcGx1cyB0aGVcbiAgICAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIGRheWxpZ2h0IHNhdmluZyBhbmQgc3RhbmRhcmQgdGltZSkuXG5cbiAgICAgICAgICAgQXMgd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgd2l0aCBwYXJ0IDMgYW55d2F5LCB3ZSBjYW4ganVzdCByZWFkIHYzXG4gICAgICAgICAgIGZpbGVzIGFzIHYyLlxuICAgICAgICAqKVxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpYyA9XG4gICAgICAgICAgbGV0IChfIDogc3RyaW5nIC0+IG9yaWdpbmFsX2ZpbGVuYW1lOnN0cmluZyAtPiBkaWdlc3Q6TWQ1X2xpYi50IC0+IHQpID1cbiAgICAgICAgICAgIGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHRoZSBoZWFkZXIgaXMgZnVsbHkgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogWyBgVjEgfCBgVjIgfCBgVjMgXV0gKHJlYWRfaGVhZGVyIGljKSB2ZXJzaW9uKTtcbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuXG4gICAgICAgICAgICB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICAgIH5pbnB1dF9sZWFwX3NlY29uZFxuICAgICAgICAgICAgaWNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZSB+em9uZW5hbWUgfmZpbGVuYW1lID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHByb3RlY3R4IChJbl9jaGFubmVsLmNyZWF0ZSBmaWxlbmFtZSkgfmZpbmFsbHk6SW5fY2hhbm5lbC5jbG9zZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGxldCBtYWtlX3pvbmUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlYWRfaGVhZGVyIGljIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBWMSAtPiBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgICAgICAgfCAoYFYyIHwgYFYzKSBhcyB2ZXJzaW9uIC0+IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2VzdCA9IE1kNS5kaWdlc3RfZmlsZV9ibG9ja2luZyBmaWxlbmFtZSBpblxuICAgICAgICAgICAgICBsZXQgciA9IG1ha2Vfem9uZSB6b25lbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWU6ZmlsZW5hbWUgfmRpZ2VzdCBpblxuICAgICAgICAgICAgICByKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IEludmFsaWRfZmlsZV9mb3JtYXQgcmVhc29uIC0+XG4gICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcIiVzIC0gJXNcIiBmaWxlbmFtZSByZWFzb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGFzc2VydCAob2Zmc2V0ID49IC0yNCAmJiBvZmZzZXQgPD0gMjQpO1xuICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gSW50NjMub2ZfaW50IChvZmZzZXQgKiA2MCAqIDYwKSBpblxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IE5vbmVcbiAgICAgICAgOyBkaWdlc3QgPSBOb25lXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgPSBbfHxdXG4gICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0ID0gZmFsc2U7IGFiYnJ2ID0gbmFtZSB9XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXQgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSAwXG4gICAgICAgICAgdGhlbiBcIlVUQ1wiXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiVVRDJXMlZFwiIChpZiBvZmZzZXQgPCAwIHRoZW4gXCItXCIgZWxzZSBcIitcIikgKGFicyBvZmZzZXQpXG4gICAgICAgIGluXG4gICAgICAgIG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5GdWxsX2RhdGEuVjFcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIHQubmFtZVxuXG5sZXQgbGlrZWx5X21hY2hpbmVfem9uZXMgPVxuICByZWYgWyBcIkFtZXJpY2EvTmV3X1lvcmtcIjsgXCJFdXJvcGUvTG9uZG9uXCI7IFwiQXNpYS9Ib25nX0tvbmdcIjsgXCJBbWVyaWNhL0NoaWNhZ29cIiBdXG47O1xuXG5sZXQgaW5wdXRfdHpfZmlsZSA9IFpvbmVfZmlsZS5pbnB1dF90el9maWxlXG5sZXQgdXRjID0gb2ZfdXRjX29mZnNldCB+aG91cnM6MFxubGV0IG5hbWUgem9uZSA9IHpvbmUubmFtZVxubGV0IHJlc2V0X3RyYW5zaXRpb25fY2FjaGUgdCA9IHQubGFzdF9yZWdpbWVfaW5kZXggPC0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cblxuKCogUmFpc2VzIGlmIFtpbmRleCA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc10gKilcbmxldCBnZXRfcmVnaW1lX2V4biB0IGluZGV4ID1cbiAgaWYgaW5kZXggPCAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4KS5uZXdfcmVnaW1lXG47O1xuXG4oKiBJbiBcImFic29sdXRlIG1vZGVcIiwgYSBudW1iZXIgb2Ygc2Vjb25kcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgb2YgdGhhdCBtYW55XG4gICBzZWNvbmRzIGZyb20gdGhlIFVOSVggZXBvY2gsIGlnbm9yaW5nIGxlYXAgc2Vjb25kcy5cblxuICAgSW4gXCJkYXRlIGFuZCBvZmRheSBtb2RlXCIsIHlvdSBpbnRlcnByZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgbnVtYmVyIG9mIGRheXMgaW5cbiAgIGNvbWJpbmF0aW9uIHdpdGggYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodCwgd2hpY2ggZ2l2ZXMgeW91IGEgY2FsZW5kYXIgZGF5IGFuZFxuICAgYSBjbG9jayBmYWNlIHRpbWUuIFRoZW4geW91IHRha2UgdGhlIHRpbWUgdGhhdCB0aG9zZSByZXByZXNlbnQgaW4gc29tZSByZWxldmFudFxuICAgdGltZXpvbmUuXG5cbiAgIE9mIGNvdXJzZSwgaWYgdGhlIHRpbWV6b25lIGluIHF1ZXN0aW9uIGhhcyBEU1Qgc2hpZnRzLCB0aGUgZGF0ZSBhbmQgb2ZkYXkgbWlnaHRcbiAgIHJlcHJlc2VudCB0d28gb3IgemVybyB0aW1lcy4gVGhlc2UgdGltZXMgd2lsbCBiZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZWl0aGVyIHRoZVxuICAgcHJldmlvdXMgVVRDIG9mZnNldCBvciB0aGUgbmV4dCBvbmUsIGluIGEgd2F5IHdob3NlIHByZWNpc2UgZGV0YWlscyB5b3UgcHJvYmFibHlcbiAgIHNob3VsZG4ndCBkZXBlbmQgb24uXG5cbiAgIChGb3IgdGhlIGN1cmlvdXMsIHdoYXQgd2UgZG8gaXM6IGNvbXB1dGUgdGhlIFwicmVsYXRpdmUgdGltZVwiIG9mIHRoZSBzaGlmdCBhY2NvcmRpbmcgdG9cbiAgIHRoZSBuZXcgcmVnaW1lLCBhbmQgYXNzaWduIHJlbGF0aXZlIHRpbWVzIHRvIHRoZSBvbGQgcmVnaW1lIG9yIG5ldyByZWdpbWUgZGVwZW5kaW5nIG9uXG4gICB3aGljaCBzaWRlIG9mIHRoZSBzaGlmdCB0aW1lIHRoZXkgb2NjdXIuIFNpbmNlIHRoaXMgYW1vdW50cyB0byB1c2luZyB0aGUgb2xkIHJlZ2ltZVxuICAgd2hlbiB0aGUgY2xvY2tzIG1vdmUgZm9yd2FyZCBhbmQgdGhlIG5ldyByZWdpbWUgd2hlbiB0aGUgY2xvY2tzIG1vdmUgYmFjaywgaXQnc1xuICAgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgY29ycmVzcG9uZGluZyBUaW1lLnQncyByZWxhdGl2ZSB0byBib3RoIHRoZSBvbGQgYW5kIHRoZVxuICAgbmV3IHJlZ2ltZSBhbmQgcGlja2luZyB0aGUgb25lIHRoYXQgb2NjdXJzIGxhdGVyLiBZZXMsIGxhdGVyLiBJIGhhZCB0byBkcmF3IGEgZGlhZ3JhbVxuICAgdG8gcGVyc3VhZGUgbXlzZWxmIHRoYXQgaXQncyB0aGF0IHdheSByb3VuZCwgYnV0IGl0IGlzLilcbiopXG5tb2R1bGUgTW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWJzb2x1dGVcbiAgICB8IERhdGVfYW5kX29mZGF5XG5lbmRcblxubGV0IGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlICh4IDogVHJhbnNpdGlvbi50KSA9XG4gIGxldCBvcGVuIEludDYzLk8gaW5cbiAgbWF0Y2ggKG1vZGUgOiBNb2RlLnQpIHdpdGhcbiAgfCBBYnNvbHV0ZSAtPiB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8IERhdGVfYW5kX29mZGF5IC0+XG4gICAgeC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggKyB4Lm5ld19yZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCA8IDAgfHwgSW50NjMuKCA+PSApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4KSlcbjs7XG5cbmxldCBpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4ICsgMSA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xuICB8fCBJbnQ2My4oIDwgKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCArIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgOiBJbmRleC50ID1cbiAgQXJyYXkuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmFuc2l0aW9ucyBgTGFzdF9vbl9sZWZ0IH5zZWdtZW50X29mOihmdW4gdHJhbnNpdGlvbiAtPlxuICAgIGlmIEludDYzLiggPD0gKSAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgdHJhbnNpdGlvbiB+bW9kZSkgc2Vjb25kcyB0aGVuIGBMZWZ0IGVsc2UgYFJpZ2h0KVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbjs7XG5cbmxldCBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kcyA9XG4gIGxldCBpbmRleCA9XG4gICAgbGV0IGluZGV4ID0gdC5sYXN0X3JlZ2ltZV9pbmRleCBpblxuICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBiZWZvcmUgY2FjaGVkIGluZGV4OyB0cnkgcHJldmlvdXMgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4IC0gMSBpblxuICAgICAgaWYgbm90IChpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYmVmb3JlIHByZXZpb3VzIGluZGV4OyBmYWxsIGJhY2sgb24gYmluYXJ5IHNlYXJjaCAqKVxuICAgICAgdGhlblxuICAgICAgICBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzXG4gICAgICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleCBhbmQgbm90IGJlZm9yZSBwcmV2aW91cywgc28gd2l0aGluIHByZXZpb3VzICopXG4gICAgICBlbHNlIGluZGV4KVxuICAgIGVsc2UgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleDsgdHJ5IG5leHQgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4ICsgMSBpblxuICAgICAgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYWZ0ZXIgbmV4dCBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleCBhbmQgbm90IGFmdGVyIG5leHQsIHNvIHdpdGhpbiBuZXh0ICopXG4gICAgICBlbHNlIGluZGV4ICgqIHRpbWUgaXMgd2l0aGluIGNhY2hlZCBpbmRleCAqKSlcbiAgICBlbHNlIGluZGV4XG4gIGluXG4gIHQubGFzdF9yZWdpbWVfaW5kZXggPC0gaW5kZXg7XG4gIGluZGV4XG47O1xuXG5tb2R1bGUgVGltZV9pbl9zZWNvbmRzIDogc2lnXG4gIGluY2x1ZGUgWm9uZV9pbnRmLlRpbWVfaW5fc2Vjb25kc1xuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX2ludDYzX3NlY29uZHMgPSBGbi5pZFxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICAgIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICBlbmRcblxuICBpbmNsdWRlIEFic29sdXRlXG5lbmRcblxubGV0IGluZGV4IHQgdGltZSA9XG4gIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6QWJzb2x1dGVcbjs7XG5cbmxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gIHw+IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZTpEYXRlX2FuZF9vZmRheVxuOztcblxubGV0IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleCA+PSAwICYmIGluZGV4IDwgQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbmxldCBpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgdHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBsZXQgdHJhbnNpdGlvbiA9IHQudHJhbnNpdGlvbnMuKGluZGV4KSBpblxuICBsZXQgYWZ0ZXIgPSB0cmFuc2l0aW9uLm5ld19yZWdpbWUgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaW5kZXggPSAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4IC0gMSkubmV3X3JlZ2ltZVxuICBpblxuICBJbnQ2My4oIC0gKSBhZnRlci51dGNfb2Zmc2V0X2luX3NlY29uZHMgYmVmb3JlLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCAoaW5kZXggKyAxKVxuOztcblxubGV0IGluZGV4X2FiYnJldmlhdGlvbl9leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIHJlZ2ltZS5hYmJydlxuOztcblxubGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHMgcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5pbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbikgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuIiwiaW5jbHVkZSBCYXNlLlR5cGVfZXF1YWxcblxubW9kdWxlIElkID0gc3RydWN0XG4gIGluY2x1ZGUgSWRcblxuICBtb2R1bGUgVWlkID0gc3RydWN0XG4gICAgbW9kdWxlIFVwc3RyZWFtID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuICAgIGluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5FeHRlbmRcbiAgICAgICAgKFVwc3RyZWFtKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZC50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoVXBzdHJlYW0pXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFZhbGlkYXRlZF9pbnRmXG5cbm1vZHVsZSB0eXBlIFJhdyA9IFJhd1xuXG50eXBlICgncmF3LCAnd2l0bmVzcykgdCA9ICdyYXdcblxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYWxsb3dpbmdfc3Vic3RpdHV0aW9uID1cbiAgU19hbGxvd2luZ19zdWJzdGl0dXRpb24gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvID0gU19iaW5faW8gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwID1cbiAgU19iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbmxldCByYXcgdCA9IHRcblxubW9kdWxlIE1ha2UgKFJhdyA6IFJhdykgPSBzdHJ1Y3RcbiAgdHlwZSB3aXRuZXNzXG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IgPVxuICAgIEVycm9yLmNyZWF0ZVxuICAgICAgXCJ2YWxpZGF0aW9uIGZhaWxlZFwiXG4gICAgICAodCwgZXJyb3IsIFJhdy5oZXJlKVxuICAgICAgWyVzZXhwX29mOiBSYXcudCAqIEVycm9yLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yLnJhaXNlICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdCA9XG4gICAgbWF0Y2ggVmFsaWRhdGUucmVzdWx0IChSYXcudmFsaWRhdGUgdCkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgdFxuICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gY3JlYXRlX2V4biAoUmF3LnRfb2Zfc2V4cCBzZXhwKVxuICBsZXQgcmF3IHQgPSB0XG5cbiAgbGV0IGNyZWF0ZV9zdGFibGVfd2l0bmVzcyByYXdfc3RhYmxlX3dpdG5lc3MgPVxuICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSByYXdfc3RhYmxlX3dpdG5lc3MgY3JlYXRlX2V4biByYXdcbiAgOztcblxuICBsZXQgdHlwZV9lcXVhbCA9IFR5cGVfZXF1YWwuVFxuZW5kXG5cbm1vZHVsZSBBZGRfYmluX2lvIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKFJhdylcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gUmF3LnRcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSByYXcgPVxuICAgICAgICAgIGlmIFJhdy52YWxpZGF0ZV9iaW5pb19kZXNlcmlhbGl6YXRpb24gdGhlbiBWYWxpZGF0ZWQuY3JlYXRlX2V4biByYXcgZWxzZSByYXdcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIEFkZF9jb21wYXJlIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBbJWNvbXBhcmU6IFJhdy50XSAocmF3IHQxKSAocmF3IHQyKVxuZW5kXG5cbm1vZHVsZSBBZGRfaGFzaCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSYXcuaGFzaF9mb2xkX3Qgc3RhdGUgKFZhbGlkYXRlZC5yYXcgdClcbiAgbGV0IGhhc2ggdCA9IFJhdy5oYXNoIChWYWxpZGF0ZWQucmF3IHQpXG5lbmRcblxubW9kdWxlIEFkZF90eXBlcmVwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChSYXcgOiBSYXdfYmluX2lvKSA9IHN0cnVjdFxuICBtb2R1bGUgVDAgPSBNYWtlIChSYXcpXG4gIGluY2x1ZGUgVDBcbiAgaW5jbHVkZSBBZGRfYmluX2lvIChSYXcpIChUMClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBNYWtlX2JpbmFibGUgKFJhdylcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQWRkX2NvbXBhcmUgKFJhdykgKFQpXG5cbiAgaW5jbHVkZSAoXG4gICAgQWRkX2hhc2ggKFJhdykgKFQpIDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kXG4gIHwgTWludXRlXG4gIHwgSG91clxuICB8IERheVxuW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoXVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBVbmlxdWVfaWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBJZCA9IElkXG5cbigqIE9ubHkgXCJtYWtlXCIgY2FuIGNhdXNlIGEgY29udGV4dC1zd2l0Y2ggdGhhdCBtaWdodCBsZWFkIHRvIGEgcmFjZS5cbiAgIFRodXMgd2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbCByZW1haW5lZFxuICAgdW5jaGFuZ2VkIGFjcm9zcyB0aGlzIGNhbGwuICBUaGUgc3Vic2VxdWVudCBjb21wYXJpc29uLCBkZXJlZmVyZW5jaW5nXG4gICBhbmQgYXNzaWdubWVudCBjYW5ub3QgY2F1c2UgY29udGV4dCBzd2l0Y2hlcy4gIElmIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgIGNlbGwgaGFkIGNoYW5nZWQsIHdlIHdpbGwgaGF2ZSB0byB0cnkgYWdhaW4gdG8gb2J0YWluIGEgdW5pcXVlIGlkLlxuICAgVGhpcyBpcyBlc3NlbnRpYWxseSBsaWtlIGEgc3Bpbi1sb2NrIGFuZCBpcyB2aXJ0dWFsbHkgZ3VhcmFudGVlZCB0b1xuICAgc3VjY2VlZCBxdWlja2x5LiAqKVxubGV0IHJlYyByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlID1cbiAgbGV0IHggPSAhY2VsbCBpblxuICBsZXQgbmV3X3ggPSBtYWtlIHggaW5cbiAgaWYgcGh5c19lcXVhbCAhY2VsbCB4XG4gIHRoZW4gKFxuICAgIGNlbGwgOj0gbmV3X3g7XG4gICAgeClcbiAgZWxzZSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlXG47O1xuXG5tb2R1bGUgSW50ICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG5cbm1vZHVsZSBJbnQ2MyAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludDYzXG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB2ZXJ5IG11Y2ggZGVwZW5kZW50IG9uIHRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcy4gIFNob3VsZCB0aGVcbiAgIHdheSB0aGUgY29tcGlsZXIgcmVwcmVzZW50cyB2YXJpb3VzIHR5cGVzIGNoYW5nZSwgaXQgbmVlZHMgdG8gYmUgcmVmbGVjdGVkIGluIHRoaXNcbiAgIG1vZHVsZSwgb3RoZXJ3aXNlIGJhZCB0aGluZ3MgY291bGQgaGFwcGVuLiAgVGhlcmVmb3JlIHRoZSBjb252ZXJzaW9ucyBhbmRcbiAgIHJlcHJlc2VudGF0aW9ucyBhcmUgdGVzdGVkIHRob3JvdWdobHkgaW4gWy4uL3Rlc3QvdGVzdF93aXRuZXNzLm1sXSBhbmRcbiAgIFsuLi90ZXN0L3Rlc3RfY29udmVyc2lvbnMubWxdXG4qKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgSGFzaF9zZXQgPSBCYXNlLkhhc2hfc2V0XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAoKiBUaGUgaW50ZWdlcnMgaGVyZSBhcmUgdGhlIHZhbHVlcyB1bmRlcmx5aW5nIHRoZSBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhleSBhbHJlYWR5XG4gICAgIGFyZSBoYXNoZXMgb2YgY29uc3RydWN0b3IgbmFtZXMsIGFuZCBoZW5jZSBhcmUgZXhwZWN0ZWQgdG8gYmUgdW5pZm9ybWx5XG4gICAgIGRpc3RyaWJ1dGVkLiAqKVxuICBsZXQgaGFzaCB4ID0geFxuZW5kXG5cbm1vZHVsZSBBbGxvd2VkX2ludHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vbmVcbiAgICB8IEFsbFxuICAgIHwgSGFzaF9zZXQgb2YgSGFzaF9zZXQuTShLZXkpLnRcbiAgICB8IEZyb21femVyb190byBvZiBpbnRcblxuICBsZXQgX2ludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIHwgQWxsIHwgSGFzaF9zZXQgXyAtPiAoKVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gYXNzZXJ0IChuID49IDApXG4gIDs7XG5cbiAgbGV0IGludF9pc192YWx1ZSB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgQWxsIC0+IHRydWVcbiAgICB8IEhhc2hfc2V0IGhhc2hfc2V0IC0+IEhhc2hfc2V0Lm1lbSBoYXNoX3NldCBpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiAwIDw9IGkgJiYgaSA8PSBuXG4gIDs7XG5lbmRcblxubW9kdWxlIEltbWVkaWFjeSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWx3YXlzXG4gICAgfCBTb21ldGltZXNcbiAgICB8IE5ldmVyXG4gICAgfCBVbmtub3duXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQWx3YXlzIC0+IFwiQWx3YXlzXCJcbiAgICB8IFNvbWV0aW1lcyAtPiBcIlNvbWV0aW1lc1wiXG4gICAgfCBOZXZlciAtPiBcIk5ldmVyXCJcbiAgICB8IFVua25vd24gLT4gXCJVbmtub3duXCJcbiAgOztcbmVuZFxuXG5vcGVuIEltbWVkaWFjeVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogJ2EgVHlwZW5hbWUudCAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfd2l0aF9uYW1lIDogc3RyaW5nIC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+IF8gdFxuICB2YWwgaW1tZWRpYWN5IDogXyB0IC0+IEltbWVkaWFjeS50XG4gIHZhbCBhbGxvd2VkX2ludHMgOiBfIHQgLT4gQWxsb3dlZF9pbnRzLnRcbiAgdmFsIHR5cGVuYW1lIDogXyB0IC0+IHN0cmluZ1xuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgOiBzaWdcbiAgICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gICAgdmFsIGludDY0IDogaW50NjQgdFxuICAgIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gICAgdmFsIGFycmF5IDogXyBhcnJheSB0XG4gICAgdmFsIHJlZl8gOiBfIHJlZiB0XG4gICAgdmFsIHR1cGxlMiA6IChfICogXykgdFxuICAgIHZhbCB0dXBsZTMgOiAoXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNCA6IChfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNSA6IChfICogXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCBmdW5jdGlvbl8gOiAoXyAtPiBfKSB0XG4gIGVuZFxuXG4gIHZhbCBuZXZlciA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgdW5rbm93biA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgb3B0aW9uIDogXyB0XG4gIHZhbCBsaXN0IDogXyB0XG4gIHZhbCBtYWdpYyA6IF8gdCAtPiBfIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRfID1cbiAgICB7IGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gICAgOyBhbGxvd2VkX2ludHMgOiBBbGxvd2VkX2ludHMudFxuICAgIDsgdHlwZW5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gdF9cblxuICBsZXQgY3JlYXRlX3dpdGhfbmFtZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICB7IGltbWVkaWFjeTsgYWxsb3dlZF9pbnRzOyB0eXBlbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICBjcmVhdGVfd2l0aF9uYW1lIChUeXBlbmFtZS5uYW1lIHR5cGVuYW1lKSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IGltbWVkaWFjeSB0ID0gdC5pbW1lZGlhY3lcbiAgbGV0IGFsbG93ZWRfaW50cyB0ID0gdC5hbGxvd2VkX2ludHNcbiAgbGV0IHR5cGVuYW1lIHQgPSB0LnR5cGVuYW1lXG4gIGxldCBtYWdpYyB0ID0gdFxuICBsZXQgbmV2ZXJfd2l0aF9uYW1lIG5hbWUgPSBjcmVhdGVfd2l0aF9uYW1lIG5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgbmV2ZXIgdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgdW5rbm93biB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBVbmtub3duIE5vbmVcblxuICBsZXQgb3B0aW9uID0gY3JlYXRlX3dpdGhfbmFtZSBcIm9wdGlvblwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuICBsZXQgbGlzdCA9IGNyZWF0ZV93aXRoX25hbWUgXCJsaXN0XCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA9IHN0cnVjdFxuICAgICgqIGludDMyIGlzIGJveGVkIGV2ZW4gb24gNjRiIHBsYXRmb3JtIGF0IHRoZSBtb21lbnQuICopXG4gICAgbGV0IGludDMyID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50MzJcbiAgICBsZXQgaW50NjQgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQ2NFxuICAgIGxldCBuYXRpdmVpbnQgPSBuZXZlciB0eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICBsZXQgZmxvYXQgPSBuZXZlciB0eXBlbmFtZV9vZl9mbG9hdFxuICAgIGxldCBzdHJpbmcgPSBuZXZlciB0eXBlbmFtZV9vZl9zdHJpbmdcbiAgICBsZXQgYnl0ZXMgPSBuZXZlciB0eXBlbmFtZV9vZl9ieXRlc1xuICAgIGxldCBhcnJheSA9IG5ldmVyX3dpdGhfbmFtZSBcImFycmF5XCJcbiAgICBsZXQgcmVmXyA9IG5ldmVyX3dpdGhfbmFtZSBcInJlZlwiXG4gICAgbGV0IHR1cGxlMiA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlMlwiXG4gICAgbGV0IHR1cGxlMyA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlM1wiXG4gICAgbGV0IHR1cGxlNCA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNFwiXG4gICAgbGV0IHR1cGxlNSA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNVwiXG5cbiAgICBsZXQgZnVuY3Rpb25fID0gbmV2ZXJfd2l0aF9uYW1lIFwiZnVuY3Rpb25cIlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9pbnQgQWx3YXlzIEFsbG93ZWRfaW50cy5BbGxcbmxldCB1bml0ID0gY3JlYXRlIHR5cGVuYW1lX29mX3VuaXQgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5sZXQgYm9vbCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9ib29sIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAxKVxubGV0IGNoYXIgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfY2hhciBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMjU1KVxuXG5tb2R1bGUgQ29tcHV0YXRpb25faW1wbCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljLlZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcblxuICBsZXQgcmVmXyBfID0gcmVmX1xuICBsZXQgYXJyYXkgXyA9IGFycmF5XG4gIGxldCB0dXBsZTIgXyBfID0gdHVwbGUyXG4gIGxldCB0dXBsZTMgXyBfIF8gPSB0dXBsZTNcbiAgbGV0IHR1cGxlNCBfIF8gXyBfID0gdHVwbGU0XG4gIGxldCB0dXBsZTUgXyBfIF8gXyBfID0gdHVwbGU1XG4gIGxldCBmdW5jdGlvbl8gXyBfID0gZnVuY3Rpb25fXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbiAgbGV0IG9wdGlvbiBfID0gb3B0aW9uXG4gIGxldCBsaXN0IF8gPSBsaXN0XG5cbiAgKCogQW4gW2EgTGF6eS50XSBtaWdodCBiZSBhIGJveGVkIGNsb3N1cmUsIHNvIG11c3QgaGF2ZSBpbW1lZGlhY3kgZWl0aGVyIFtOZXZlcl0gb3JcbiAgICAgW1NvbWV0aW1lc10uICBBbiBbYSBMYXp5LnRdIHZhbHVlIGNvdWxkIGJlIGltbWVkaWF0ZSBpZiBbYV0gaXMgaW1tZWRpYXRlLiAgQnV0IGlmIFthXVxuICAgICBpcyBuZXZlciBpbW1lZGlhdGUsIHRoZW4gW2EgTGF6eS50XSBjYW5ub3QgYmUuICopXG4gIGxldCBsYXp5X3QgdCA9XG4gICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgICB8IE5ldmVyIC0+IE5ldmVyXG4gICAgICB8IFVua25vd24gLT4gVW5rbm93blxuICAgICAgfCBTb21ldGltZXMgfCBBbHdheXMgLT4gU29tZXRpbWVzXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9uYW1lIFwibGF6eV90XCIgaW1tZWRpYWN5IChhbGxvd2VkX2ludHMgdClcbiAgOztcblxuICBsZXQgcG9zc2libHlfdW5ib3hlZCB0eXBlbmFtZSBjaGlsZF90eXBlID1cbiAgICBtYXRjaCBpbW1lZGlhY3kgY2hpbGRfdHlwZSB3aXRoXG4gICAgfCBOZXZlciAtPiBuZXZlciB0eXBlbmFtZVxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiB1bmtub3duIHR5cGVuYW1lXG4gIDs7XG5cbiAgbGV0IHJlY29yZCByID1cbiAgICBpZiBSZWNvcmQubGVuZ3RoIHIgPiAxXG4gICAgdGhlbiBuZXZlciAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcilcbiAgICBlbHNlIChcbiAgICAgIGxldCAoRmllbGQgdGhlX29ubHlfZmllbGQpID0gUmVjb3JkLmZpZWxkIHIgMCBpblxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcikgKEZpZWxkLnRyYXZlcnNlIHRoZV9vbmx5X2ZpZWxkKSlcbiAgOztcblxuICAoKiBWYXJpYW50cyB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIG5vIGFyZ3VtZW50cyBhcmUgYWx3YXlzIGltbWVkaWF0ZTsgdmFyaWFudHNcbiAgICAgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBzb21lIGFyZ3VtZW50cyBhcmUgbmV2ZXIgaW1tZWRpYXRlOyBtaXhlZCB2YXJpYW50cyBhcmVcbiAgICAgc29tZXRpbWVzIGltbWVkaWF0ZS5cblxuICAgICBJZiBhIHZhcmlhbnQgaGFzIGEgc2luZ2xlIGNvbnN0cnVjdG9yLCBhbmQgdGhlIGNvbnN0cnVjdG9yIGhhcyBhbiBhcmd1bWVudCwgdGhlXG4gICAgIHZhcmlhbnQgY2FuIGJlIHVuYm94ZWQuIElmIHVuYm94ZWQsIGVpdGhlciBleHBsaWNpdGx5IG9yIGJ5IGRlZmF1bHQgKGRlcGVuZGluZyBvblxuICAgICBjb21waWxlciBzZXR0aW5ncyksIHRoZSByZXByZXNlbnRhdGlvbiBpcyBzaW1wbHkgdGhlIGFyZ3VtZW50LiBPdGhlcndpc2UsIHRoZSBydWxlc1xuICAgICBhYm92ZSBhcHBseSBub3JtYWxseS4gKilcbiAgbGV0IHZhcmlhbnQgdmFyaWFudCA9XG4gICAgbGV0IG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3QgPVxuICAgICAgVmFyaWFudC5mb2xkIHZhcmlhbnQgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKG5vLCBvbmUsIG1vcmUpIChUYWcgdCBhcyB0YWcpIC0+XG4gICAgICAgIG1hdGNoIFRhZy5hcml0eSB0IHdpdGhcbiAgICAgICAgfCAwIC0+IHRhZyA6OiBubywgb25lLCBtb3JlXG4gICAgICAgIHwgMSAtPiBubywgdGFnIDo6IG9uZSwgbW9yZVxuICAgICAgICB8IF8gLT4gbm8sIG9uZSwgdGFnIDo6IG1vcmUpXG4gICAgaW5cbiAgICBtYXRjaCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0IHdpdGhcbiAgICB8IFtdLCBbIFRhZyB0YWcgXSwgW10gd2hlbiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCkgLT5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSAoVGFnLnRyYXZlcnNlIHRhZylcbiAgICB8IFtdLCBbXSwgW10gLT5cbiAgICAgICgqIFdlIGRvbid0IGhhdmUgYW4gZXhwbGljdCB3YXkgb2Ygc2F5aW5nIGEgdHlwZSBpcyB1bmluaGFiaXRlZC4gKilcbiAgICAgIHVua25vd24gKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgW10sIF8gOjogXywgXyB8IFtdLCBfLCBfIDo6IF8gLT4gbmV2ZXIgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgXyA6OiBfLCBfLCBfIC0+XG4gICAgICBsZXQgbm9fYXJnX2NvdW50ID0gTGlzdC5sZW5ndGggbm9fYXJnX2xpc3QgaW5cbiAgICAgIGxldCBhbGxvd2VkX2ludHMgPVxuICAgICAgICBpZiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudClcbiAgICAgICAgdGhlbiBBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIChub19hcmdfY291bnQgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaGFzaF9zZXQgPSBIYXNoX3NldC5jcmVhdGUgKG1vZHVsZSBLZXkpIH5zaXplOihub19hcmdfY291bnQgKiAyKSBpblxuICAgICAgICAgIExpc3QuaXRlciBub19hcmdfbGlzdCB+ZjooZnVuIChUYWcgdGFnKSAtPlxuICAgICAgICAgICAgbWF0Y2ggVGFnLmNyZWF0ZSB0YWcgd2l0aFxuICAgICAgICAgICAgfCBUYWcuQ29uc3QgXyAtPiBIYXNoX3NldC5hZGQgaGFzaF9zZXQgKFRhZy5vY2FtbF9yZXByIHRhZylcbiAgICAgICAgICAgIHwgVGFnLkFyZ3MgXyAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgIEFsbG93ZWRfaW50cy5IYXNoX3NldCBoYXNoX3NldClcbiAgICAgIGluXG4gICAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBvbmVfYXJnX2xpc3QgJiYgTGlzdC5pc19lbXB0eSBtb3JlX2FyZ19saXN0XG4gICAgICAgIHRoZW4gQWx3YXlzXG4gICAgICAgIGVsc2UgU29tZXRpbWVzXG4gICAgICBpblxuICAgICAgY3JlYXRlIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBuYW1lID0gXCJpc19pbW1lZGlhdGVcIlxuICBsZXQgcmVxdWlyZWQgPSBbXVxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgcmVmXG5cbiAgICAoKiBUaGUgZGVmYXVsdCB3aXRuZXNzIC0gd2hpY2ggaXMgY3JlYXRlZCBieSBjYWxsaW5nIFtpbml0XSBhbmQgcmVjb3ZlcmVkIGF0IGFueSBsYXRlclxuICAgICAgIHBvaW50IGJ5IGNhbGxpbmcgW2dldF93aXBfY29tcHV0YXRpb25dIC0gY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHJlY3Vyc2l2ZSB0eXBlLlxuICAgICAgIE90aGVyIHR5cGVzIHRoYXQgZG9uJ3QgdXNlIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSB3aWxsIGp1c3QgZXZhbHVhdGUgdG8gdGhlIGFjdHVhbFxuICAgICAgIHdpdG5lc3Mgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBpbml0aWFsIGR1bW15IG9uZS4gKilcbiAgICBsZXQgaW5pdCBfIG5hbWUgPSByZWYgKGNyZWF0ZSBuYW1lIFNvbWV0aW1lcyBBbGxvd2VkX2ludHMuTm9uZSlcbiAgICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBjb21wID0gIWNvbXBcblxuICAgIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gciB0ID1cbiAgICAgIHIgOj0gdDtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IHNoYXJlIF8gPSB0cnVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gVHlwZV9nZW5lcmljLk1ha2UgKENvbXB1dGF0aW9uX2ltcGwpXG5cbmxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICBsZXQgKGBnZW5lcmljIHQpID0gR2VuZXJpYy5vZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgdFxuOztcblxubW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVycyAoTSA6IHNpZ1xuICAgIHZhbCBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgd2l0bmVzcyB0eXBlcmVwMSB0eXBlcmVwMiA9XG4gICAgbGV0IHQxID0gb2ZfdHlwZXJlcCB0eXBlcmVwMSBpblxuICAgIGxldCB0MiA9IG9mX3R5cGVyZXAgdHlwZXJlcDIgaW5cbiAgICBsZXQgaTEgPSBpbW1lZGlhY3kgdDEgaW5cbiAgICBsZXQgaTIgPSBpbW1lZGlhY3kgdDIgaW5cbiAgICBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBpMilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgaXMgbm90IGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSkpXG4gICAgZWxzZSBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBNLmltbWVkaWFjeSlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgZG9lcyBub3QgaGF2ZSBkZXNpcmVkIGltbWVkaWFjeTogd2FudGVkICVzIGJ1dCBnb3QgJXNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgTS5pbW1lZGlhY3kpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIGkxKSlcbiAgICBlbHNlIHQxXG4gIDs7XG5cbiAgKCogYWx3YXlzIGltbWVkaWF0ZSAqKVxuICBsZXQgcmEgPSBUeXBlcmVwLkludFxuXG4gICgqIG5ldmVyIGltbWVkaWF0ZSAqKVxuICBsZXQgcm4gPSBUeXBlcmVwLlN0cmluZ1xuXG4gICgqIEVhY2ggb2YgdGhlIFtGb3JfYWxsX3BhcmFtZXRlcnNfKl0gZnVuY3RvcnMgd29ya3MgYnkgaW5zdGFudGlhdGluZyB0aGUgbi1hcnkgdHlwZVxuICAgICB3aXRoIGFsbCBbQWx3YXlzXSB0eXBlcywgYW5kIHRoZW4gd2l0aCBhbGwgW05ldmVyXSB0eXBlcy4gIElmIHRob3NlIHByb2R1Y2UgdGhlIHNhbWVcbiAgICAgaW1tZWRpYWN5LCB0aGVuIHdlIGNvbmNsdWRlIHRoYXQgdGhlIG4tYXJ5IHR5cGUgaXMgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50cy4gKilcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MxIChYIDogVHlwZXJlcGFibGUuUzEpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSkgKFgudHlwZXJlcF9vZl90IHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MyIChYIDogVHlwZXJlcGFibGUuUzIpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MzIChYIDogVHlwZXJlcGFibGUuUzMpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M0IChYIDogVHlwZXJlcGFibGUuUzQpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M1IChYIDogVHlwZXJlcGFibGUuUzUpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcbmVuZFxuXG5sZXQgaW50X2lzX3ZhbHVlIHQgaW50ID0gQWxsb3dlZF9pbnRzLmludF9pc192YWx1ZSAoYWxsb3dlZF9pbnRzIHQpIGludFxuXG5sZXQgaW50X2FzX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnQgdGhlbiBTb21lIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfYXNfdmFsdWVfZXhuICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnRcbiAgdGhlbiAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLmludF9hc192YWx1ZV9leG46IHR5cGVuYW1lOiVTIGludDolZFwiIChULnR5cGVuYW1lIHQpIGludClcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnRfZXhuICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcbiAgdGhlbiAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpXG4gIGVsc2UgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUudmFsdWVfYXNfaW50X2V4bjogdHlwZW5hbWU6JVNcIiAoVC50eXBlbmFtZSB0KSlcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKSB0aGVuIFNvbWUgKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KSBlbHNlIE5vbmVcbjs7XG5cbmxldCB2YWx1ZV9pc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPSBPYmouaXNfaW50IChPYmoucmVwciBhKVxuXG5tb2R1bGUgQWx3YXlzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IEFsd2F5c1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IEFsd2F5cyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBOZXZlciB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXRbQGlubGluZSBhbHdheXNdIHZhbHVlX2FzX2ludCAodHlwZSBhKSBfIGEgPSBhIHw+IChPYmoubWFnaWMgOiBhIC0+IGludClcbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuZW5kXG5cbm1vZHVsZSBTb21ldGltZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gU29tZXRpbWVzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgU29tZXRpbWVzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IE5ldmVyIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldCB2YWx1ZV9hc19pbnQgPSB2YWx1ZV9hc19pbnRcbiAgbGV0IHZhbHVlX2FzX2ludF9leG4gPSB2YWx1ZV9hc19pbnRfZXhuXG4gIGxldCB2YWx1ZV9pc19pbnQgPSB2YWx1ZV9pc19pbnRcbiAgbGV0IG9wdGlvbiA9IG9wdGlvblxuICBsZXQgbGlzdCA9IGxpc3RcbmVuZFxuXG5tb2R1bGUgTmV2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gTmV2ZXJcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBOZXZlciAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcbmVuZFxuXG50eXBlICdhIGRlc3QgPVxuICB8IEFsd2F5cyBvZiAnYSBBbHdheXMudFxuICB8IFNvbWV0aW1lcyBvZiAnYSBTb21ldGltZXMudFxuICB8IE5ldmVyIG9mICdhIE5ldmVyLnRcbiAgfCBVbmtub3duXG5cbmxldCBkZXN0IHQgPVxuICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gIHwgQWx3YXlzIC0+IEFsd2F5cyB0XG4gIHwgU29tZXRpbWVzIC0+IFNvbWV0aW1lcyB0XG4gIHwgTmV2ZXIgLT4gTmV2ZXIgdFxuICB8IFVua25vd24gLT4gVW5rbm93blxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUMSA6IFQpIChUMiA6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IFQxLnQgKiBUMi50XG5lbmRcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiA9IGEsIGJcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiAtPiBmIChhLCBiKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYikgLT4gZiBhIGJcbiAgOztcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSkgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICBsZXQgbWFwICh4LCB5KSB+ZiA9IGYgeCwgZiB5XG4gIGxldCBtYXBfZnN0ICh4LCB5KSB+ZiA9IGYgeCwgeVxuICBsZXQgbWFwX3NuZCAoeCwgeSkgfmYgPSB4LCBmIHlcbiAgbGV0IG1hcF9ib3RoICh4LCB5KSB+ZjEgfmYyID0gZjEgeCwgZjIgeVxuICBsZXQgbWFwMiAoeDEsIHkxKSAoeDIsIHkyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTJcblxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiAoeCwgeSkgKHgnLCB5JykgPVxuICAgIG1hdGNoIGNtcDEgeCB4JyB3aXRoXG4gICAgfCAwIC0+IGNtcDIgeSB5J1xuICAgIHwgaSAtPiBpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiAoeCwgeSkgKHgnLCB5JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5J1xuICBsZXQgc3dhcCAoYSwgYikgPSBiLCBhXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21wYXJlIGNtcDEgY21wMiA9IGNvbXBhcmUgfmNtcDEgfmNtcDJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFQzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiBjID0gYSwgYiwgY1xuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIGMgLT4gZiAoYSwgYiwgYylcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIsIGMpIC0+IGYgYSBiIGNcbiAgOztcblxuICBsZXQgbWFwICh4LCB5LCB6KSB+ZiA9IGYgeCwgZiB5LCBmIHpcbiAgbGV0IG1hcF9mc3QgKHgsIHksIHopIH5mID0gZiB4LCB5LCB6XG4gIGxldCBtYXBfc25kICh4LCB5LCB6KSB+ZiA9IHgsIGYgeSwgelxuICBsZXQgbWFwX3RyZCAoeCwgeSwgeikgfmYgPSB4LCB5LCBmIHpcbiAgbGV0IG1hcF9hbGwgKHgsIHksIHopIH5mMSB+ZjIgfmYzID0gZjEgeCwgZjIgeSwgZjMgelxuICBsZXQgbWFwMiAoeDEsIHkxLCB6MSkgKHgyLCB5MiwgejIpIH5mID0gZiB4MSB4MiwgZiB5MSB5MiwgZiB6MSB6MlxuXG4gIFslJWlmIGZsYW1iZGFfYmFja2VuZF1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXywgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFRoZXJlJ3Mgbm8gJWZpZWxkMi4uLi4qKVxuICBsZXQgZ2V0MyAoXywgXywgYSkgPSBhXG5cbiAgKCogbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uICAqKVxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiB+Y21wMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID1cbiAgICBsZXQgYzEgPSBjbXAxIHggeCcgaW5cbiAgICBpZiBjMSA8PiAwXG4gICAgdGhlbiBjMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMyID0gY21wMiB5IHknIGluXG4gICAgICBpZiBjMiA8PiAwIHRoZW4gYzIgZWxzZSBjbXAzIHogeicpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiB+ZXEzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5JyAmJiBlcTMgeiB6J1xuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGVyX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSAoUzEgOiBTZXhwYWJsZS5TKSAoUzIgOiBTZXhwYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTMS50ICogUzIudCBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlIChCMSA6IEJpbmFibGUuUykgKEIyIDogQmluYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCMS50ICogQjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIENvbXBhcmF0b3IgKFMxIDogQ29tcGFyYXRvci5TKSAoUzIgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoUzEpIChTMilcblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9XG4gICAgKFMxLmNvbXBhcmF0b3Jfd2l0bmVzcywgUzIuY29tcGFyYXRvcl93aXRuZXNzKSBUMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQyLmNvbXBhcmF0b3IgUzEuY29tcGFyYXRvciBTMi5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGVfcGxhaW4gKFMxIDogQ29tcGFyYWJsZS5TX3BsYWluKSAoUzIgOiBDb21wYXJhYmxlLlNfcGxhaW4pID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yIChTMSkgKFMyKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlIChTMSA6IENvbXBhcmFibGVfc2V4cGFibGUpIChTMiA6IENvbXBhcmFibGVfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwYWJsZSAoUzEpIChTMilcblxuICAgIGxldCBjb21wYXJlIChzMSwgczIpIChzMScsIHMyJykgPVxuICAgICAgbWF0Y2ggUzEuY29tcGFyZSBzMSBzMScgd2l0aFxuICAgICAgfCAwIC0+IFMyLmNvbXBhcmUgczIgczInXG4gICAgICB8IHggLT4geFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyIChIMSA6IEhhc2hlcl9zZXhwYWJsZSkgKEgyIDogSGFzaGVyX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUyA6IEhhc2hhYmxlX3NleHBhYmxlKSA6XG4gIEhhc2hlcl9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGVfdCAoUzEgOiBIYXNoYWJsZV9zZXhwYWJsZSkgKFMyIDogSGFzaGFibGVfc2V4cGFibGUpID1cbiAgSGFzaGVyXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZVxuICAgICAgIChTMSkpXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUzIpKVxuXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZV90XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBTdW5cbiAgICAgICAgfCBNb25cbiAgICAgICAgfCBUdWVcbiAgICAgICAgfCBXZWRcbiAgICAgICAgfCBUaHVcbiAgICAgICAgfCBGcmlcbiAgICAgICAgfCBTYXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoLCBxdWlja2NoZWNrLCBzdGFibGVfd2l0bmVzcywgdHlwZXJlcF1cblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU1VOXCJcbiAgICAgICAgfCBNb24gLT4gXCJNT05cIlxuICAgICAgICB8IFR1ZSAtPiBcIlRVRVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV0VEXCJcbiAgICAgICAgfCBUaHUgLT4gXCJUSFVcIlxuICAgICAgICB8IEZyaSAtPiBcIkZSSVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU0FUXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmdfbG9uZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU3VuZGF5XCJcbiAgICAgICAgfCBNb24gLT4gXCJNb25kYXlcIlxuICAgICAgICB8IFR1ZSAtPiBcIlR1ZXNkYXlcIlxuICAgICAgICB8IFdlZCAtPiBcIldlZG5lc2RheVwiXG4gICAgICAgIHwgVGh1IC0+IFwiVGh1cnNkYXlcIlxuICAgICAgICB8IEZyaSAtPiBcIkZyaWRheVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU2F0dXJkYXlcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19pbnRlcm5hbCBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVwcGVyY2FzZSBzIHdpdGhcbiAgICAgICAgfCBcIlNVTlwiIHwgXCJTVU5EQVlcIiAtPiBTdW5cbiAgICAgICAgfCBcIk1PTlwiIHwgXCJNT05EQVlcIiAtPiBNb25cbiAgICAgICAgfCBcIlRVRVwiIHwgXCJUVUVTREFZXCIgLT4gVHVlXG4gICAgICAgIHwgXCJXRURcIiB8IFwiV0VETkVTREFZXCIgLT4gV2VkXG4gICAgICAgIHwgXCJUSFVcIiB8IFwiVEhVUlNEQVlcIiAtPiBUaHVcbiAgICAgICAgfCBcIkZSSVwiIHwgXCJGUklEQVlcIiAtPiBGcmlcbiAgICAgICAgfCBcIlNBVFwiIHwgXCJTQVRVUkRBWVwiIC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIGkgPVxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgfCAwIC0+IFN1blxuICAgICAgICB8IDEgLT4gTW9uXG4gICAgICAgIHwgMiAtPiBUdWVcbiAgICAgICAgfCAzIC0+IFdlZFxuICAgICAgICB8IDQgLT4gVGh1XG4gICAgICAgIHwgNSAtPiBGcmlcbiAgICAgICAgfCA2IC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2ZfaW50X2V4bjogJWRcIiBpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBTdW4gLT4gMFxuICAgICAgICB8IE1vbiAtPiAxXG4gICAgICAgIHwgVHVlIC0+IDJcbiAgICAgICAgfCBXZWQgLT4gM1xuICAgICAgICB8IFRodSAtPiA0XG4gICAgICAgIHwgRnJpIC0+IDVcbiAgICAgICAgfCBTYXQgLT4gNlxuICAgICAgOztcblxuICAgICAgKCogQmUgdmVyeSBnZW5lcm91cyB3aXRoIG9mX3N0cmluZy4gIFdlIGFjY2VwdCBhbGwgcG9zc2libGUgY2FwaXRhbGl6YXRpb25zIGFuZCB0aGVcbiAgICAgICAgIGludGVnZXIgcmVwcmVzZW50YXRpb25zIGFzIHdlbGwuICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nX2ludGVybmFsIHMgd2l0aFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAodHJ5IG9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgcykgd2l0aFxuICAgICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKCkpXG4gICAgICA7O1xuXG4gICAgICAoKiB0aGlzIGlzIGluIFQgcmF0aGVyIHRoYW4gb3V0c2lkZSBzbyB0aGF0IHRoZSBsYXRlciBmdW5jdG9yIGFwcGxpY2F0aW9uIHRvIGJ1aWxkIG1hcHNcbiAgICAgICAgIHVzZXMgdGhpcyBzZXhwIHJlcHJlc2VudGF0aW9uICopXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBsZXQgb3BlbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIgaW5cbiAgICAgICAgbGV0IGF0b20gbmFtZSA9IE5vX3RhZyB7IG5hbWU7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfSBpblxuICAgICAgICBsZXQgdW5zdWdnZXN0ZWQgZ3JhbW1hciA9XG4gICAgICAgICAgVGFnIHsga2V5ID0gY29tcGxldGlvbl9zdWdnZXN0ZWQ7IHZhbHVlID0gQXRvbSBcImZhbHNlXCI7IGdyYW1tYXIgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgaW50X2NsYXVzZSB0ID0gdW5zdWdnZXN0ZWQgKGF0b20gKEludC50b19zdHJpbmcgKHRvX2ludCB0KSkpIGluXG4gICAgICAgIGxldCBzaG9ydF9jbGF1c2UgdCA9IGF0b20gKHRvX3N0cmluZyB0KSBpblxuICAgICAgICBsZXQgbG9uZ19jbGF1c2UgdCA9IHVuc3VnZ2VzdGVkIChhdG9tICh0b19zdHJpbmdfbG9uZyB0KSkgaW5cbiAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgIExhenlcbiAgICAgICAgICAgICAgKGxhenlcbiAgICAgICAgICAgICAgICAoVmFyaWFudFxuICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2VfaW5zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIFsgTGlzdC5tYXAgYWxsIH5mOmludF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICA7IExpc3QubWFwIGFsbCB+ZjpzaG9ydF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICA7IExpc3QubWFwIGFsbCB+Zjpsb25nX2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgKENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKSA6IENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChVbnN0YWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFVuc3RhYmxlKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5VbnN0YWJsZVxuXG5sZXQgd2Vla2RheXMgPSBbIE1vbjsgVHVlOyBXZWQ7IFRodTsgRnJpIF1cbmxldCB3ZWVrZW5kcyA9IFsgU2F0OyBTdW4gXVxuXG5sZXQgb2ZfaW50IGkgPVxuICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE1vbiAtPiAxXG4gIHwgVHVlIC0+IDJcbiAgfCBXZWQgLT4gM1xuICB8IFRodSAtPiA0XG4gIHwgRnJpIC0+IDVcbiAgfCBTYXQgLT4gNlxuICB8IFN1biAtPiA3XG47O1xuXG5sZXQgbnVtX2RheXNfaW5fd2VlayA9IDdcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuIChJbnQuKCAlICkgKHRvX2ludCB0ICsgaSkgbnVtX2RheXNfaW5fd2VlaylcblxubGV0IG51bV9kYXlzIH5mcm9tIH50b18gPVxuICBsZXQgZCA9IHRvX2ludCB0b18gLSB0b19pbnQgZnJvbSBpblxuICBpZiBJbnQuKGQgPCAwKSB0aGVuIGQgKyBudW1fZGF5c19pbl93ZWVrIGVsc2UgZFxuOztcblxubGV0IGlzX3N1bl9vcl9zYXQgdCA9IHQgPSBTdW4gfHwgdCA9IFNhdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBSb3VuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgfCBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkRpZ2l0X3N0cmluZ19oZWxwZXJzXCJcbmxldCBpbnQ2M190d28gPSBJbnQ2My5vZl9pbnQgMlxubGV0IGludDYzX3RlbiA9IEludDYzLm9mX2ludCAxMFxubGV0IGludDYzX3R3ZW50eSA9IEludDYzLm9mX2ludCAyMFxubGV0IGludDYzX2JpbGxpb24gPSBJbnQ2My5vZl9pbnQgMV8wMDBfMDAwXzAwMFxubGV0IG1heF9iaWxsaW9ucyA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M19iaWxsaW9uXG5cbmxldCByZWMgZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIG4gPVxuICBpZiBJbnQ2My4oIDwgKSBuIGludDYzX3RlblxuICB0aGVuIDFcbiAgZWxzZSBJbnQuc3VjYyAoZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIChJbnQ2My4oIC8gKSBuIGludDYzX3RlbikpXG47O1xuXG5sZXQgZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSA9IGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBJbnQ2My5tYXhfdmFsdWVcblxubGV0IHJlYyBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzID1cbiAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgfCAxIC0+IEludDYzLm9mX2ludCA5XG4gIHwgMiAtPiBJbnQ2My5vZl9pbnQgOTlcbiAgfCAzIC0+IEludDYzLm9mX2ludCA5OTlcbiAgfCA0IC0+IEludDYzLm9mX2ludCA5Xzk5OVxuICB8IDUgLT4gSW50NjMub2ZfaW50IDk5Xzk5OVxuICB8IDYgLT4gSW50NjMub2ZfaW50IDk5OV85OTlcbiAgfCA3IC0+IEludDYzLm9mX2ludCA5Xzk5OV85OTlcbiAgfCA4IC0+IEludDYzLm9mX2ludCA5OV85OTlfOTk5XG4gIHwgOSAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OV85OTlcbiAgfCBfIC0+XG4gICAgaWYgZGlnaXRzID49IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWVcbiAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbGxpb25zID0gSW50NjMuc3VjYyAobWF4X2ludDYzX3dpdGggfmRpZ2l0czooZGlnaXRzIC0gOSkpIGluXG4gICAgICBJbnQ2My5wcmVkIChJbnQ2My4oICogKSBpbnQ2M19iaWxsaW9uIGJpbGxpb25zKSlcbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHVuc2FmZV9jaGFyX29mX2RpZ2l0IG4gPSBDaGFyLnVuc2FmZV9vZl9pbnQgKENoYXIudG9faW50ICcwJyArIG4pXG4gIGxldCBkaWdpdF9vZl9jaGFyIGNoYXIgPSBDaGFyLmdldF9kaWdpdF9leG4gY2hhclxuXG4gIGxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgQnl0ZXMudW5zYWZlX3NldCBieXRlcyBwb3MgKHVuc2FmZV9jaGFyX29mX2RpZ2l0IGludClcbiAgOztcblxuICBsZXQgcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gaW50IC8gMTAgaW5cbiAgICBsZXQgb25lcyA9IGludCAtICh0ZW5zICogMTApIGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBvbmVzO1xuICAgIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMSkgaW50IGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDIpIGludCBpblxuICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAzKSBpbnQgaW5cbiAgICB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNCkgaW50IGluXG4gICAgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDUpIGludCBpblxuICAgIHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA2KSBpbnQgaW5cbiAgICB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNykgaW50IGluXG4gICAgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDgpIGludCBpblxuICAgIHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zIGludDYzID1cbiAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBpbnQ2MyBpbnQ2M19iaWxsaW9uIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDYzLiggLSApIGludDYzIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSBpblxuICAgIHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gcmVtYWluZGVyKTtcbiAgICBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWMgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMiAtPiB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMyAtPiB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNCAtPiB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNSAtPiB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNiAtPiB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNyAtPiB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOCAtPiB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOSAtPiB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9XG4gICAgICAgIHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykgaW50NjNcbiAgICAgIGluXG4gICAgICB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPSBkaWdpdF9vZl9jaGFyIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgcG9zKVxuXG4gIGxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDEpXG4gIDs7XG5cbiAgbGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMilcbiAgOztcblxuICBsZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAzKVxuICA7O1xuXG4gIGxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDQpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNSlcbiAgOztcblxuICBsZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA2KVxuICA7O1xuXG4gIGxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDcpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgOClcbiAgOztcblxuICBsZXQgcmFpc2VfaW50NjNfb3ZlcmZsb3cgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IG92ZXJmbG93IHJlYWRpbmcgaW50NjNcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgbGV0IHJlYyByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IEludDYzLm9mX2ludCAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDIgLT4gSW50NjMub2ZfaW50IChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA0IC0+IEludDYzLm9mX2ludCAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDUgLT4gSW50NjMub2ZfaW50IChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA3IC0+IEludDYzLm9mX2ludCAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDggLT4gSW50NjMub2ZfaW50IChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID0gcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9XG4gICAgICAgIEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQ2My4oID4gKSBiaWxsaW9ucyBtYXhfYmlsbGlvbnMgdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIGxldCBzdW0gPSBJbnQ2My4oICsgKSAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgcmVtYWluZGVyIGluXG4gICAgICBpZiBJbnQ2My4oIDwgKSBzdW0gSW50NjMuemVybyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgc3VtXG4gIDs7XG5cbiAgbGV0IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAobnVtZXJhdG9yICsgZGVub21pbmF0b3IgLSBJbnQ2My5vbmUpIC8lIGRlbm9taW5hdG9yXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogaW52YWxpZCBkZWNpbWFsIGNoYXJhY3RlclwiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICAoKiBSZWFkcyB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgYmV0d2VlbiBbcG9zXSBhbmQgW3BvcytkZWNpbWFscy0xXSwgaW5jbHVzaXZlLCBhbmRcbiAgICAgaW50ZXJwZXJldHMgaXQgYXMgYSBwb3NpdGl2ZSBkZWNpbWFsIHBhcnQgb2YgYSBudW1iZXIsIHdoaWNoIHdlIGNhbGwgW3hdLlxuXG4gICAgIExldCBbaV0gYW5kIFtyXSBiZSB0aGUgaW50ZWdlciBwYXJ0IGFuZCByZW1haW5pbmcgZnJhY3Rpb25hbCBwYXJ0IG9mXG4gICAgIFt4ICogc2NhbGUgLyBkaXZpc29yXS5cblxuICAgICBJZiBbciA8IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXS5cbiAgICAgSWYgW3IgPSByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0gb3IgW2krMV0gYmFzZWQgb24gW3JvdW5kX2V4YWN0XS5cbiAgICAgSWYgW3IgPiByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaSsxXS5cblxuICAgICBBc3N1bWVzIHdpdGhvdXQgY2hlY2tpbmcgdGhhdCBbc2NhbGVdIGFuZCBbZGl2aXNvcl0gYXJlIGJvdGggcG9zaXRpdmUgYW5kXG4gICAgIGxlc3MgdGhhbiBbSW50NjMubWF4X3ZhbHVlIC8gMTBdICh0byBhdm9pZCBpbnRlcm5hbCBvdmVyZmxvdyBkdXJpbmcgdGhlIGFsZ29yaXRobVxuICAgICB3aGVuIG11bHRpcGx5aW5nIGJ5IDEwKSwgYW5kIHRoYXQgW3JvdW5kX2F0ID49IDBdIGFuZCBbcm91bmRfYXQgPCBkaXZpc29yXS4gKilcbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cG9zOnN0YXJ0XG4gICAgICAgIH5kZWNpbWFsc1xuICAgICAgICB+c2NhbGVcbiAgICAgICAgfmRpdmlzb3JcbiAgICAgICAgfnJvdW5kX2F0XG4gICAgICAgIH5yb3VuZF9leGFjdFxuICAgICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICAgID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IHVudGlsID0gSW50LiggKyApIHN0YXJ0IGRlY2ltYWxzIGluXG4gICAgKCogVGhlIGxvb3AgaW52YXJpYW50IGlzIHRoYXQgZWFjaCBpdGVyYXRpb24sIHdlIHN0cmlwIG9mZiB0aGUgbmV4dCBkZWNpbWFsIGRpZ2l0IGFuZFxuICAgICAgIHVwZGF0ZSBbc3VtXSwgW3JvdW5kX2F0XSwgYW5kIFtkaXZpc29yXSBzdWNoIHRoYXQgdGhlIGRlc2lyZWQgcmVzdWx0IGlzOlxuXG4gICAgICAgWyBzdW0gKyByb3VuZChyZW1haW5pbmdfZGlnaXRzX29mX3hfcGFyc2VkX2FzX2RlY2ltYWwgKiBzY2FsZSAvIGRpdmlzb3IpIF1cbiAgICAgICB3aGVyZSBcInJvdW5kXCIgcm91bmRzIGJhc2VkIG9uIHRoZSBuZXcgdmFsdWUgb2YgW3JvdW5kX2F0XS5cbiAgICAqKVxuICAgIGxldCBkaXZpc29yID0gcmVmIGRpdmlzb3IgaW5cbiAgICBsZXQgcm91bmRfYXQgPSByZWYgcm91bmRfYXQgaW5cbiAgICBsZXQgc3VtID0gcmVmIEludDYzLnplcm8gaW5cbiAgICBsZXQgcG9zID0gcmVmIHN0YXJ0IGluXG4gICAgKCogU3RvcCBpZiB3ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMsIG9yIGlmIGZ1cnRoZXIgZGlnaXRzIGNhbm5vdCBpbmNyZWFzZSBvdXIgc3VtLiAqKVxuICAgIHdoaWxlIEludC4oIDw+ICkgIXBvcyB1bnRpbCAmJiAhcm91bmRfYXQgPCBzY2FsZSBkb1xuICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICB8ICcwJyAuLiAnOScgYXMgY2hhciAtPlxuICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChkaWdpdF9vZl9jaGFyIGNoYXIpIGluXG4gICAgICAgICAoKiBFdmVyeSBuZXcgZGVjaW1hbCBwbGFjZSBpbXBsaWNpdGx5IHNjYWxlcyBvdXIgbnVtZXJhdG9yIGJ5IGEgZmFjdG9yIG9mIHRlbixcbiAgICAgICAgICAgIHNvIG11c3QgYWxzbyBlZmZlY3RpdmVseSBzY2FsZSBvdXIgZGVub21pbmF0b3IuXG5cbiAgICAgICAgICAgIDAuYWJjZGVmICogc2NhbGUvZGl2aXNvciAgICAgICAgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvKGRpdmlzb3IqMTApICBbcm91bmQgYXQgcm91bmRfYXQqMTBdXG5cbiAgICAgICAgICAgIFRoZW4gcmVkZWZpbmUgZGl2aXNvciA6PSBkaXZpc29yKjEwIGFuZCByb3VuZF9hdCA6PSByb3VuZF9hdCoxMCwgc28gd2UgaGF2ZTpcbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF0gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gIWRpdmlzb3IgKiBpbnQ2M190ZW47XG4gICAgICAgICByb3VuZF9hdCA6PSAhcm91bmRfYXQgKiBpbnQ2M190ZW47XG4gICAgICAgICAoKiBOZXh0IHdlIHdvcmsgb3V0IHRoZSBwYXJ0IG9mIHRoZSBzdW0gYmFzZWQgb24gb3VyIGN1cnJlbnQgZGlnaXQ6XG5cbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgLSByb3VuZF9hdCAvIGRpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSAoYSpzY2FsZS1yb3VuZF9hdCkgLyBkaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuXG4gICAgICAgICAgICBEZWNvbXBvc2UgdGhlIGZpcnN0IHRlcm0gaW50byBpbnRlZ2VyIGFuZCByZW1haW5kZXIgcGFydHMuXG4gICAgICAgICAgICBTaW5jZSB3ZSBoYXZlIGFscmVhZHkgc3VidHJhY3RlZCBbcm91bmRfYXRdLCB3ZSBkZWNvbXBvc2UgYmFzZWRcbiAgICAgICAgICAgIG9uIHRoZSBjZWlsaW5nIHJhdGhlciB0aGFuIHRoZSBmbG9vciBvZiB0aGUgZGl2aXNpb24sXG4gICAgICAgICAgICBlLmcuIDUvMyB3b3VsZCBkZWNvbXBvc2UgYXMgMiArICgtMSkvMywgcmF0aGVyIHRoYW4gMSArICgyLzMpLlxuXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIHJlbWFpbmRlci9kaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdXG4gICAgICAgICAqKVxuICAgICAgICAgbGV0IG51bWVyYXRvciA9IChkaWdpdCAqIHNjYWxlKSAtICFyb3VuZF9hdCBpblxuICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gIWRpdmlzb3IgaW5cbiAgICAgICAgIGxldCBpbmNyZW1lbnQgPSBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICBsZXQgcmVtYWluZGVyID0gbnVtZXJhdG9yIC0gKGluY3JlbWVudCAqIGRlbm9taW5hdG9yKSBpblxuICAgICAgICAgKCogTm93IGp1c3QgYWNjdW11bGF0ZSB0aGUgbmV3IGluY3JlbWVudCBhbmQgaXRlcmF0ZSBvbiB0aGUgcmVtYWluaW5nIHBhcnQ6XG4gICAgICAgICAgICAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdLlxuXG4gICAgICAgICAgICBTaW5jZSBbcmVtYWluZGVyXSBpcyBiZXR3ZWVuIFstKGRpdmlzb3ItMSldIGFuZCBbMF0gaW5jbHVzaXZlLCB0aGUgbmV3XG4gICAgICAgICAgICBbcm91bmRfYXRdIHdpbGwgYmUgd2l0aGluIFswXSBhbmQgW2Rpdmlzb3ItMV0gaW5jbHVzaXZlLiAqKVxuICAgICAgICAgcm91bmRfYXQgOj0gLXJlbWFpbmRlcjtcbiAgICAgICAgIHN1bSA6PSAhc3VtICsgaW5jcmVtZW50O1xuICAgICAgICAgKCogVGhpcyBsaW5lIHByZXZlbnRzIHRoZSBkaXZpc29yIGZyb20gZ3Jvd2luZyB3aXRob3V0IGJvdW5kIGFuZCBvdmVyZmxvd2luZy4gSWZcbiAgICAgICAgICAgIHRoaXMgbGluZSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBkaXZpc29yLCB0aGVuIHRoZSBkaXZpc29yIGlzIGxhcmdlciB0aGFuIHRoZVxuICAgICAgICAgICAgc2NhbGUsIHNvIHRoZSBzdW0gd2lsbCBpbmNyZWFzZSBpZiBhbmQgb25seSBpZiBbcGFyc2VkX3JlbWFpbmluZ19kaWdpdHMgKlxuICAgICAgICAgICAgc2NhbGUgKD4gb3IgPj0pIHJvdW5kX2F0XSwgd2hpY2ggZG9lc24ndCBkZXBlbmQgb24gaG93IG11Y2ggbGFyZ2VyIHRoZVxuICAgICAgICAgICAgZGl2aXNvciBpcy4gU28gdGhpcyBjaGFuZ2UgaXMgc2FmZS4gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gSW50NjMubWluIGRlbm9taW5hdG9yIHNjYWxlXG4gICAgICAgfCAnXycgd2hlbiBhbGxvd191bmRlcnNjb3JlIC0+ICgpXG4gICAgICAgfCBfIC0+IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiKTtcbiAgICAgIHBvcyA6PSBJbnQuc3VjYyAhcG9zXG4gICAgZG9uZTtcbiAgICBpZiAhcm91bmRfYXQgPSB6ZXJvXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByb3VuZF9leGFjdCB3aXRoXG4gICAgICB8IFJvdW5kLlRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eSAtPiAoKVxuICAgICAgfCBSb3VuZC5Ub3dhcmRfcG9zaXRpdmVfaW5maW5pdHkgLT4gc3VtIDo9ICFzdW0gKyBJbnQ2My5vbmUpO1xuICAgICFzdW1cbiAgOztcblxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICAgIHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICBzdHJpbmdcbiAgICAgIH5wb3NcbiAgICAgIH5kZWNpbWFsc1xuICAgICAgfnNjYWxlOihJbnQ2My4oICogKSBzY2FsZSBpbnQ2M190d28pXG4gICAgICB+ZGl2aXNvcjppbnQ2M190d29cbiAgICAgIH5yb3VuZF9hdDpJbnQ2My5vbmVcbiAgICAgIH5yb3VuZF9leGFjdDpyb3VuZF90aWVzXG4gICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICA7O1xuZW5kXG5cbmxldCBtaW5fc2NhbGUgPSBJbnQ2My5vbmVcbmxldCBtYXhfc2NhbGUgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfdHdlbnR5XG5cbmxldCByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkZWNpbWFscz0lZCBpcyBuZWdhdGl2ZVwiIG1vZHVsZV9uYW1lIG5hbWUgZGVjaW1hbHMgKClcbjs7XG5cbmxldCByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkaWdpdHM9JWQgaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyXCIgbW9kdWxlX25hbWUgbmFtZSBkaWdpdHMgKClcbjs7XG5cbmxldCByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlID1cbiAgaW52YWxpZF9hcmdmXG4gICAgXCIlcy4lczogc2NhbGU9JUxkIG91dCBvZiByYW5nZSBbJUxkLCAlTGRdXCJcbiAgICBtb2R1bGVfbmFtZVxuICAgIG5hbWVcbiAgICAoSW50NjMudG9faW50NjQgc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1pbl9zY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWF4X3NjYWxlKVxuICAgICgpXG47O1xuXG5sZXQgcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiBwb3M9JWQgb3V0IG9mIHJhbmdlIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogJWQgZGlnaXRzIGRvIG5vdCBmaXQgYXQgcG9zICVkIGluIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIGRpZ2l0c1xuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG47O1xuXG5sZXQgcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludCA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50IG1heCAoKVxuOztcblxubGV0IHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzID1cbiAgaW52YWxpZF9hcmdmICFcIiVzLiVzOiAle0ludDYzfSBvdXQgb2YgcmFuZ2UgWzAsICV7SW50NjN9XVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50NjMgbWF4ICgpXG47O1xuXG5sZXQgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpZiBkZWNpbWFscyA8IDAgdGhlbiByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFsc1xuOztcblxubGV0IGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPSBpZiBkaWdpdHMgPCAxIHRoZW4gcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHNcblxubGV0IGNoZWNrX3BvcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgKyBkaWdpdHMgPiBsZW4gdGhlbiByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgY2hlY2tfaW50IG5hbWUgfm1heCBpbnQgPVxuICBpZiBpbnQgPCAwIHx8IGludCA+IG1heCB0aGVuIHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjMgPVxuICBpZiBJbnQ2My4oIDwgKSBpbnQ2MyBJbnQ2My56ZXJvIHx8IEludDYzLiggPiApIGludDYzIG1heFxuICB0aGVuIHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGUgPVxuICBpZiBJbnQ2My4oIDwgKSBzY2FsZSBtaW5fc2NhbGUgfHwgSW50NjMuKCA+ICkgc2NhbGUgbWF4X3NjYWxlXG4gIHRoZW4gcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZVxuOztcblxubGV0IGNoZWNrX3dyaXRlIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyB+bWF4IGludCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludCBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfd3JpdGU2MyBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbWF4ID0gbWF4X2ludDYzX3dpdGggfmRpZ2l0cyBpblxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjEgfm1heDo5IGludDtcbiAgVW5zYWZlLndyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzJfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoyIH5tYXg6OTkgaW50O1xuICBVbnNhZmUud3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfM19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjMgfm1heDo5OTkgaW50O1xuICBVbnNhZmUud3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjQgfm1heDo5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV81X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NSB+bWF4Ojk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV82X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NiB+bWF4Ojk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfN19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjcgfm1heDo5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjggfm1heDo5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzlfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo5IH5tYXg6OTk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja193cml0ZTYzIFwid3JpdGVfaW50NjNcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzO1xuICBVbnNhZmUud3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzXG47O1xuXG5sZXQgY2hlY2tfcmVhZCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjNfZGVjaW1hbCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzO1xuICBjaGVja19zY2FsZSBuYW1lIH5zY2FsZTtcbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0czpkZWNpbWFscyB+bGVuIH5wb3Ncbjs7XG5cbmxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoxO1xuICBVbnNhZmUucmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8yX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjI7XG4gIFVuc2FmZS5yZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzNfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MztcbiAgVW5zYWZlLnJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo0O1xuICBVbnNhZmUucmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF81X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjU7XG4gIFVuc2FmZS5yZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzZfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NjtcbiAgVW5zYWZlLnJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfN19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo3O1xuICBVbnNhZmUucmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF84X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjg7XG4gIFVuc2FmZS5yZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzlfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6OTtcbiAgVW5zYWZlLnJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19yZWFkNjMgXCJyZWFkX2ludDYzXCIgfnN0cmluZyB+cG9zIH5kaWdpdHM7XG4gIFVuc2FmZS5yZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gIGNoZWNrX3JlYWQ2M19kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGU7XG4gIFVuc2FmZS5yZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEphblxuICAgICAgfCBGZWJcbiAgICAgIHwgTWFyXG4gICAgICB8IEFwclxuICAgICAgfCBNYXlcbiAgICAgIHwgSnVuXG4gICAgICB8IEp1bFxuICAgICAgfCBBdWdcbiAgICAgIHwgU2VwXG4gICAgICB8IE9jdFxuICAgICAgfCBOb3ZcbiAgICAgIHwgRGVjXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgdmFyaWFudHNdXG5cbiAgICBsZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4gICAgbGV0IG9mX2ludF9leG4gaSA6IHQgPVxuICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICB8IDEgLT4gSmFuXG4gICAgICB8IDIgLT4gRmViXG4gICAgICB8IDMgLT4gTWFyXG4gICAgICB8IDQgLT4gQXByXG4gICAgICB8IDUgLT4gTWF5XG4gICAgICB8IDYgLT4gSnVuXG4gICAgICB8IDcgLT4gSnVsXG4gICAgICB8IDggLT4gQXVnXG4gICAgICB8IDkgLT4gU2VwXG4gICAgICB8IDEwIC0+IE9jdFxuICAgICAgfCAxMSAtPiBOb3ZcbiAgICAgIHwgMTIgLT4gRGVjXG4gICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiTW9udGgub2ZfaW50X2V4biAlZFwiIGkgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcblxuICAgIGxldCB0b19pbnQgKHQgOiB0KSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgSmFuIC0+IDFcbiAgICAgIHwgRmViIC0+IDJcbiAgICAgIHwgTWFyIC0+IDNcbiAgICAgIHwgQXByIC0+IDRcbiAgICAgIHwgTWF5IC0+IDVcbiAgICAgIHwgSnVuIC0+IDZcbiAgICAgIHwgSnVsIC0+IDdcbiAgICAgIHwgQXVnIC0+IDhcbiAgICAgIHwgU2VwIC0+IDlcbiAgICAgIHwgT2N0IC0+IDEwXG4gICAgICB8IE5vdiAtPiAxMVxuICAgICAgfCBEZWMgLT4gMTJcbiAgICA7O1xuXG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRvX2ludCB0IC0gMVxuICAgIGxldCBvZl9iaW5hYmxlIGkgPSBvZl9pbnRfZXhuIChpICsgMSlcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIEludC5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IG51bV9tb250aHMgPSAxMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIGxldCBhbGwgPSBbIEphbjsgRmViOyBNYXI7IEFwcjsgTWF5OyBKdW47IEp1bDsgQXVnOyBTZXA7IE9jdDsgTm92OyBEZWMgXVxuICBsZXQgaGFzaCA9IHRvX2ludFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIChcbiAgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBtb250aHMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBpbnRzLiAgRnJvbSAxMDguMDdcbiAgICAgICB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmRcbiAgICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzXG4gICAgICAgY2hhbmdlZCBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZVxuICAgICAgIG1vc3QgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICAgIHJhdy4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW50LnRfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICB8IFNvbWUgaSAtPiBvZl9pbnRfZXhuIChpICsgMSlcbiAgICAgIHwgTm9uZSAtPiBULnRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG4oKiBSZXBsYWNlIHRoZSBvdmVycmlkZW4gc2V4cCBjb252ZXJ0ZXJzIGZyb20gW0NvbXBhcmFibGUuTWFrZV9iaW5hYmxlXSB3aXRoIHRoZSBvcmRpbmFyeVxuICAgc3ltYm9saWMgY29udmVydGVycy4gKilcbmxldCBzZXhwX29mX3QgPSBULnNleHBfb2ZfdFxubGV0IHRfb2Zfc2V4cCA9IFQudF9vZl9zZXhwXG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoMSArIEludC4oICUgKSAodG9faW50IHQgLSAxICsgaSkgbnVtX21vbnRocylcblxubGV0IGFsbF9zdHJpbmdzID1cbiAgbGF6eVxuICAgIChBcnJheS5vZl9saXN0IChMaXN0Lm1hcCBhbGwgfmY6KGZ1biB2YXJpYW50IC0+IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdmFyaWFudCkpKSlcbjs7XG5cbmxldCB0b19zdHJpbmcgKHQgOiB0KSA9XG4gIGxldCBhbGxfc3RyaW5ncyA9IExhenkuZm9yY2UgYWxsX3N0cmluZ3MgaW5cbiAgYWxsX3N0cmluZ3MuKHRvX2ludCB0IC0gMSlcbjs7XG5cbmxldCBvZl9zdHJpbmcgPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgbW9kdWxlIFQgPSBTdHJpbmcuVGFibGUgaW5cbiAgICAgICBsZXQgdGFibGUgPSBULmNyZWF0ZSB+c2l6ZTpudW1fbW9udGhzICgpIGluXG4gICAgICAgQXJyYXkuaXRlcmkgKExhenkuZm9yY2UgYWxsX3N0cmluZ3MpIH5mOihmdW4gaSBzIC0+XG4gICAgICAgICBsZXQgdCA9IG9mX2ludF9leG4gKGkgKyAxKSBpblxuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcubG93ZXJjYXNlIHMpIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcudXBwZXJjYXNlIHMpIH5kYXRhOnQpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBmdW4gc3RyIC0+XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIChMYXp5LmZvcmNlIHRhYmxlKSBzdHIgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiSW52YWxpZCBtb250aDogJXNcIiBzdHIgKClcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBtb250aCA9IHQgPVxuICAgIHwgSmFuXG4gICAgfCBGZWJcbiAgICB8IE1hclxuICAgIHwgQXByXG4gICAgfCBNYXlcbiAgICB8IEp1blxuICAgIHwgSnVsXG4gICAgfCBBdWdcbiAgICB8IFNlcFxuICAgIHwgT2N0XG4gICAgfCBOb3ZcbiAgICB8IERlY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5cbmxldCBpc19sZWFwX3llYXIgfnllYXIgPSAoeWVhciBtb2QgNCA9IDAgJiYgbm90ICh5ZWFyIG1vZCAxMDAgPSAwKSkgfHwgeWVhciBtb2QgNDAwID0gMFxuXG4oKiBDcmVhdGUgYSBsb2NhbCBwcml2YXRlIGRhdGUgdHlwZSB0byBlbnN1cmUgdGhhdCBhbGwgZGF0ZXMgYXJlIGNyZWF0ZWQgdmlhXG4gICBEYXRlLmNyZWF0ZV9leG4uXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICB2YWwgY3JlYXRlX2V4biA6IHk6aW50IC0+IG06TW9udGguU3RhYmxlLlYxLnQgLT4gZDppbnQgLT4gdFxuICAgICAgICB2YWwgeWVhciA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBtb250aCA6IHQgLT4gTW9udGguU3RhYmxlLlYxLnRcbiAgICAgICAgdmFsIGRheSA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBkYXlzX2luX21vbnRoIDogeWVhcjppbnQgLT4gbW9udGg6TW9udGgudCAtPiBpbnRcbiAgICAgICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgICAgICAgdmFsIG9mX2ludF91bmNoZWNrZWQgOiBpbnQgLT4gdFxuICAgICAgICB2YWwgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5IDogdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgICgqIFdlIHVzZWQgdG8gc3RvcmUgZGF0ZXMgbGlrZSB0aGlzOlxuICAgICAgICAgICB0eXBlIHQgPSB7IHk6IGludDsgbTogTW9udGguU3RhYmxlLlYxLnQ7IGQ6IGludDsgfVxuICAgICAgICAgICBJbiB0aGUgYmVsb3cgd2UgbWFrZSBzdXJlIHRoYXQgdGhlIGJpbl9pbyByZXByZXNlbnRhdGlvbiBpc1xuICAgICAgICAgICBpZGVudGljYWwgKGFuZCB0aGUgc3RhYmxlIHVuaXQgdGVzdHMgY2hlY2sgdGhpcylcblxuICAgICAgICAgICBJbiBtZW1vcnkgd2UgdXNlIHRoZSBmb2xsb3dpbmcgbXVjaCBtb3JlIGNvbXBhY3QgcmVwcmVzZW50YXRpb246XG4gICAgICAgICAgIDIgYnl0ZXMgeWVhclxuICAgICAgICAgICAxIGJ5dGUgbW9udGhcbiAgICAgICAgICAgMSBieXRlIGRheVxuXG4gICAgICAgICAgIGFsbCBwYWNrZWQgaW50byBhIHNpbmdsZSBpbW1lZGlhdGUgaW50IChzbyBmcm9tIDQgd29yZHMgZG93biB0byAxKS5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZSB0ID0gaW50XG4gICAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgICAgY29tcGFyZVxuICAgICAgICAsIGVxdWFsXG4gICAgICAgICwgaGFzaFxuICAgICAgICAsIHR5cGVyZXBcbiAgICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZWUzZTAtNDkwYS0xMWU2LWExMGEtYTM3MzRmNzMzNTY2XCJcbiAgICAgICAgLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgKCogY3JlYXRlX2V4bidzIHZhbGlkYXRpb24gbWFrZSBzdXJlIHRoYXQgZWFjaCB2YWx1ZSBmaXRzICopXG4gICAgICAgICAgKHllYXIgbHNsIDE2KSBsb3IgKE1vbnRoLnRvX2ludCBtb250aCBsc2wgOCkgbG9yIGRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9pbnRfdW5jaGVja2VkIHQgPSB0XG4gICAgICAgIGxldCB5ZWFyIHQgPSB0IGxzciAxNlxuICAgICAgICBsZXQgbW9udGggdCA9IE1vbnRoLm9mX2ludF9leG4gKCh0IGxzciA4KSBsYW5kIDB4ZmYpXG4gICAgICAgIGxldCBkYXkgdCA9IHQgbGFuZCAweGZmXG5cbiAgICAgICAgbGV0IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoID1cbiAgICAgICAgICBtYXRjaCAobW9udGggOiBNb250aC50KSB3aXRoXG4gICAgICAgICAgfCBKYW4gfCBNYXIgfCBNYXkgfCBKdWwgfCBBdWcgfCBPY3QgfCBEZWMgLT4gMzFcbiAgICAgICAgICB8IEFwciB8IEp1biB8IFNlcCB8IE5vdiAtPiAzMFxuICAgICAgICAgIHwgRmViIC0+IGlmIGlzX2xlYXBfeWVhciB+eWVhciB0aGVuIDI5IGVsc2UgMjhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSA9XG4gICAgICAgICAgKCogeWVhciwgbW9udGgsIGFuZCBkYXkgbmVlZCB0byBiZSBwYXNzZWQgYXMgcGFyYW1ldGVycyB0byBhdm9pZCBhbGxvY2F0aW5nXG4gICAgICAgICAgICAgYSBjbG9zdXJlIChzZWUgdW5pdCB0ZXN0IGJlbG93KSAqKVxuICAgICAgICAgIGxldCBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IG1zZyA9XG4gICAgICAgICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgICAgICAgIVwiRGF0ZS5jcmVhdGVfZXhuIH55OiVkIH5tOiV7TW9udGh9IH5kOiVkIGVycm9yOiAlc1wiXG4gICAgICAgICAgICAgIHllYXJcbiAgICAgICAgICAgICAgbW9udGhcbiAgICAgICAgICAgICAgZGF5XG4gICAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgeWVhciA8IDAgfHwgeWVhciA+IDk5OTlcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgXCJ5ZWFyIG91dHNpZGUgb2YgWzAuLjk5OTldXCI7XG4gICAgICAgICAgaWYgZGF5IDw9IDAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwiZGF5IDw9IDBcIjtcbiAgICAgICAgICBsZXQgZGF5c19pbl9tb250aCA9IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoIGluXG4gICAgICAgICAgaWYgZGF5ID4gZGF5c19pbl9tb250aFxuICAgICAgICAgIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSAoc3ByaW50ZiBcIiVkIGRheSBtb250aCB2aW9sYXRpb25cIiBkYXlzX2luX21vbnRoKTtcbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgKCogV2UgZG9uJ3QgdXNlIE1ha2VfYmluYWJsZSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgZ28gdmlhIGFuIGltbWVkaWF0ZVxuICAgICAgICAgICB0dXBsZSBvciByZWNvcmQuICBUaGF0IGlzIGV4YWN0bHkgdGhlIDMyIGJ5dGVzIHdlIHdvcmtlZCBzbyBoYXJkIGFib3ZlIHRvXG4gICAgICAgICAgIGdldCByaWQgb2YuICBXZSBhbHNvIGRvbid0IHdhbnQgdG8ganVzdCBiaW5faW8gdGhlIGludGVnZXIgZGlyZWN0bHlcbiAgICAgICAgICAgYmVjYXVzZSB0aGF0IHdvdWxkIG1lYW4gYSBuZXcgYmluX2lvIGZvcm1hdC4gICopXG5cbiAgICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLlN0YWJsZS5WMS5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgPVxuICAgICAgICAgICgqIF9fYmluX3JlYWRfdCBpcyBvbmx5IG5lZWRlZCBmb3IgdmFyaWFudHMgKilcbiAgICAgICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiRGF0ZS50XCIgIXBvc19yZWZcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICAgICAgICBJbnQuYmluX3NpemVfdCAoeWVhciB0KSArIE1vbnRoLmJpbl9zaXplX3QgKG1vbnRoIHQpICsgSW50LmJpbl9zaXplX3QgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgICBsZXQgcG9zID0gSW50LmJpbl93cml0ZV90IGJ1ZiB+cG9zICh5ZWFyIHQpIGluXG4gICAgICAgICAgbGV0IHBvcyA9IE1vbnRoLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChtb250aCB0KSBpblxuICAgICAgICAgIEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoZGF5IHQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICAgICAgbGV0IGJpbl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgICAgICBsZXQgb2ZfaW50X2V4biBuID0gY3JlYXRlX2V4biB+eTooeWVhciBuKSB+bToobW9udGggbikgfmQ6KGRheSBuKVxuICAgICAgICBsZXQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5ID0gMFxuXG4gICAgICAgIGxldCV0ZXN0IFwiaW52YWxpZCB2YWx1ZVwiID1cbiAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIDogdCAtPiBvZl9pbnRfZXhuIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuXG4gICAgICAoKiogWVlZWS1NTS1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNCAnLSc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjUgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDcgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo4IChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWRcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgOCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo0IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgKCoqIE1NL0REL1lZWVkgKilcbiAgICAgIGxldCB0b19zdHJpbmdfYW1lcmljYW4gdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMTAgaW5cbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgMiAnLyc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICcvJztcbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoeWVhciB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV95ZWFyNCBzdHIgcG9zID0gcmVhZF80X2RpZ2l0X2ludCBzdHIgfnBvc1xuICAgICAgbGV0IHBhcnNlX21vbnRoIHN0ciBwb3MgPSBNb250aC5vZl9pbnRfZXhuIChyZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zKVxuICAgICAgbGV0IHBhcnNlX2RheSBzdHIgcG9zID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvc1xuXG4gICAgICAoKiogWVlZWU1NREQgKilcbiAgICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyBzdHIgfnBvcyA9XG4gICAgICAgIGlmIHBvcyArIDggPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgICB0aGVuIGludmFsaWRfYXJnIFwiRGF0ZS5vZl9zdHJpbmdfaXNvODYwMV9iYXNpYzogcG9zICsgOCA+IHN0cmluZyBsZW5ndGhcIjtcbiAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzdHIgcG9zKVxuICAgICAgICAgIH5tOihwYXJzZV9tb250aCBzdHIgKHBvcyArIDQpKVxuICAgICAgICAgIH5kOihwYXJzZV9kYXkgc3RyIChwb3MgKyA2KSlcbiAgICAgIDs7XG5cbiAgICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYSBtYXRlcmlhbCB3YXksIGJlIHN1cmUgeW91XG4gICAgICAgICB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2Ygd29ya2luZyBpbiBTdGFibGUgKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBpbnZhbGlkICgpID0gZmFpbHdpdGggKFwiaW52YWxpZCBkYXRlOiBcIiBeIHMpIGluXG4gICAgICAgIGxldCBlbnN1cmUgYiA9IGlmIG5vdCBiIHRoZW4gaW52YWxpZCAoKSBpblxuICAgICAgICBsZXQgbW9udGhfbnVtIH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OihwYXJzZV95ZWFyNCBzIHllYXIpIH5tOihwYXJzZV9tb250aCBzIG1vbnRoKSB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9udGhfYWJydiB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgICAgfnk6KHBhcnNlX3llYXI0IHMgeWVhcilcbiAgICAgICAgICAgIH5tOihNb250aC5vZl9zdHJpbmcgKFN0cmluZy5zdWIgcyB+cG9zOm1vbnRoIH5sZW46MykpXG4gICAgICAgICAgICB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnLydcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHksIG0sIGQgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicvJyB3aXRoXG4gICAgICAgICAgICB8IFsgYTsgYjsgYyBdIC0+XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggYSA9IDQgdGhlbiBhLCBiLCBjICgqIHkvbS9kICopIGVsc2UgYywgYSwgYiAoKiBtL2QveSAqKVxuICAgICAgICAgICAgfCBfIC0+IGludmFsaWQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB5ZWFyID0gSW50Lm9mX3N0cmluZyB5IGluXG4gICAgICAgICAgbGV0IHllYXIgPVxuICAgICAgICAgICAgaWYgeWVhciA+PSAxMDAgdGhlbiB5ZWFyIGVsc2UgaWYgeWVhciA8IDc1IHRoZW4gMjAwMCArIHllYXIgZWxzZSAxOTAwICsgeWVhclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vbnRoID0gTW9udGgub2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBtKSBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQub2Zfc3RyaW5nIGQgaW5cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OnllYXIgfm06bW9udGggfmQ6ZGF5KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICctJ1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiB5eXl5LW1tLWRkICopXG4gICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMCAmJiBDaGFyLiggPSApIHMuWzRdICctJyAmJiBDaGFyLiggPSApIHMuWzddICctJyk7XG4gICAgICAgICAgbW9udGhfbnVtIH55ZWFyOjAgfm1vbnRoOjUgfmRheTo4KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICcgJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLlsyXSAnICcgJiYgQ2hhci4oID0gKSBzLls2XSAnICdcbiAgICAgICAgICB0aGVuICgqIEREIE1NTSBZWVlZICopXG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MyB+eWVhcjo3XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBZWVlZIE1NTSBERCAqKVxuICAgICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMSAmJiBDaGFyLiggPSApIHMuWzRdICcgJyAmJiBDaGFyLiggPSApIHMuWzhdICcgJyk7XG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6OSB+bW9udGg6NSB+eWVhcjowKVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDlcbiAgICAgICAgdGhlbiAoKiBERE1NTVlZWVkgKilcbiAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MiB+eWVhcjo1XG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBzID0gOFxuICAgICAgICB0aGVuICgqIGFzc3VtZSBZWVlZTU1ERCAqKVxuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo0IH5kYXk6NlxuICAgICAgICBlbHNlIGludmFsaWQgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIkRhdGUub2Zfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9sZF9kYXRlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgIHsgeSA6IGludFxuICAgICAgICAgICAgOyBtIDogaW50XG4gICAgICAgICAgICA7IGQgOiBpbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgbGV0IHRvX2RhdGUgdCA9IFQuY3JlYXRlX2V4biB+eTp0Lnkgfm06KE1vbnRoLm9mX2ludF9leG4gdC5tKSB+ZDp0LmRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gYXMgc2V4cCAtPiBPbGRfZGF0ZS50b19kYXRlIChPbGRfZGF0ZS50X29mX3NleHAgc2V4cClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgICAgIHRyeSB0X29mX3NleHAgcyB3aXRoXG4gICAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZXhuIC0+IHJhaXNlIGV4blxuICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhIC0+IG9mX3NleHBfZXJyb3IgYSBzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgICAgICAoU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXIgOiB0IFNleHBfZ3JhbW1hci50KVxuICAgICAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5EYXRlLnRcIilcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgIGJpbl9pb1xuICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODI2YTNlNzktMzMyMS00NTFhLTk3MDctZWQ2YzAzYjg0ZTJmXCJcbiAgICAgICwgY29tcGFyZVxuICAgICAgLCBoYXNoXG4gICAgICAsIHR5cGVyZXBcbiAgICAgICwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBub25lID0gVjEuKHRvX2ludCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgXyA9IHRydWVcbiAgICAgIGxldCBzb21lIHQgPSBWMS50b19pbnQgdFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IFYxLm9mX2ludF91bmNoZWNrZWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIkRhdGUuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuY2hlY2tlZF92YWx1ZSB0KVxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cblxuICAgICAgbGV0IG9mX2ludF9leG4gdCA9XG4gICAgICAgICgqIERvbid0IGp1c3QgYmxpbmRseSBjb252ZXJ0IGZyb20gYW4gaW50ZWdlci4gVXNlIFtWMS5vZl9pbnRfZXhuXSB0byB2YWxpZGF0ZSB0aGVcbiAgICAgICAgICAgZGF0ZS4gKilcbiAgICAgICAgaWYgdCA9IG5vbmUgdGhlbiBub25lIGVsc2Ugc29tZSAoVjEub2ZfaW50X2V4biB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gU3RhYmxlLlYxLldpdGhvdXRfY29tcGFyYWJsZVxuaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbm1vZHVsZSBDID0gQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoV2l0aG91dF9jb21wYXJhYmxlKVxuaW5jbHVkZSBDXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgKEMgOiBDb21wYXJhYmxlLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZVxuICAgIGluY2x1ZGUgQmluYWJsZVxuXG4gICAgbGV0IGNvbXBhcmUgKGEgOiB0KSAoYiA6IHQpID0gY29tcGFyZSBhIGJcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuRGF0ZVwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbmxldCB1bml4X2Vwb2NoID0gY3JlYXRlX2V4biB+eToxOTcwIH5tOkphbiB+ZDoxXG5cbigqIFRoZSBEYXlzIG1vZHVsZSBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbnMgdGhhdCBpbnZvbHZlIGFkZGluZyBvciByZW1vdmluZyBhIGtub3duIG51bWJlclxuICAgb2YgZGF5cyBmcm9tIGEgZGF0ZS4gIEludGVybmFsbHkgdGhlIGRhdGUgaXMgdHJhbnNsYXRlZCB0byBhIGRheSBudW1iZXIsIHRoZSBkYXlzIGFyZVxuICAgYWRkZWQsIGFuZCB0aGUgbmV3IGRhdGUgaXMgcmV0dXJuZWQuICBUaG9zZSBpbnRlcmVzdGVkIGluIHRoZSBtYXRoIGNhbiByZWFkOlxuXG4gICBodHRwOi8vYWxjb3IuY29uY29yZGlhLmNhL35ncGthdGNoL2dkYXRlLW1ldGhvZC5odG1sXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgYXJlIGluIGxpYl90ZXN0L3RpbWVfdGVzdC5tbFxuKilcbm1vZHVsZSBEYXlzIDogc2lnXG4gIHR5cGUgZGF0ZSA9IHRcbiAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cblxuICB2YWwgb2ZfZGF0ZSA6IGRhdGUgLT4gdFxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gZGF0ZVxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGFkZF9kYXlzIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgdW5peF9lcG9jaCA6IHRcbmVuZFxud2l0aCB0eXBlIGRhdGUgOj0gdCA9IHN0cnVjdFxuICBvcGVuIEludFxuXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBvZl95ZWFyIHkgPSAoMzY1ICogeSkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApXG5cbiAgbGV0IG9mX2RhdGUgZGF0ZSA9XG4gICAgbGV0IG0gPSAoTW9udGgudG9faW50IChtb250aCBkYXRlKSArIDkpICUgMTIgaW5cbiAgICBsZXQgeSA9IHllYXIgZGF0ZSAtIChtIC8gMTApIGluXG4gICAgb2ZfeWVhciB5ICsgKCgobSAqIDMwNikgKyA1KSAvIDEwKSArIChkYXkgZGF0ZSAtIDEpXG4gIDs7XG5cbiAgbGV0IGNfMTBfMDAwID0gSW50NjMub2ZfaW50IDEwXzAwMFxuICBsZXQgY18xNF83ODAgPSBJbnQ2My5vZl9pbnQgMTRfNzgwXG4gIGxldCBjXzNfNjUyXzQyNSA9IEludDYzLm9mX2ludCAzXzY1Ml80MjVcblxuICBsZXQgdG9fZGF0ZSBkYXlzID1cbiAgICBsZXQgeSA9XG4gICAgICBsZXQgb3BlbiBJbnQ2MyBpblxuICAgICAgdG9faW50X2V4biAoKChjXzEwXzAwMCAqIG9mX2ludCBkYXlzKSArIGNfMTRfNzgwKSAvIGNfM182NTJfNDI1KVxuICAgIGluXG4gICAgbGV0IGRkZCA9IGRheXMgLSBvZl95ZWFyIHkgaW5cbiAgICBsZXQgeSwgZGRkID1cbiAgICAgIGlmIGRkZCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgeSA9IHkgLSAxIGluXG4gICAgICAgIHksIGRheXMgLSBvZl95ZWFyIHkpXG4gICAgICBlbHNlIHksIGRkZFxuICAgIGluXG4gICAgbGV0IG1pID0gKCgxMDAgKiBkZGQpICsgNTIpIC8gM18wNjAgaW5cbiAgICBsZXQgeSA9IHkgKyAoKG1pICsgMikgLyAxMikgaW5cbiAgICBsZXQgbSA9ICgobWkgKyAyKSAlIDEyKSArIDEgaW5cbiAgICBsZXQgZCA9IGRkZCAtICgoKG1pICogMzA2KSArIDUpIC8gMTApICsgMSBpblxuICAgIGNyZWF0ZV9leG4gfnkgfm06KE1vbnRoLm9mX2ludF9leG4gbSkgfmRcbiAgOztcblxuICBsZXQgdW5peF9lcG9jaCA9IG9mX2RhdGUgdW5peF9lcG9jaFxuICBsZXQgYWRkX2RheXMgdCBkYXlzID0gdCArIGRheXNcbiAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5lbmRcblxubGV0IGFkZF9kYXlzIHQgZGF5cyA9IERheXMudG9fZGF0ZSAoRGF5cy5hZGRfZGF5cyAoRGF5cy5vZl9kYXRlIHQpIGRheXMpXG5sZXQgZGlmZiB0MSB0MiA9IERheXMuZGlmZiAoRGF5cy5vZl9kYXRlIHQxKSAoRGF5cy5vZl9kYXRlIHQyKVxuXG5sZXQgYWRkX21vbnRocyB0IG4gPVxuICBsZXQgdG90YWxfbW9udGhzID0gTW9udGgudG9faW50IChtb250aCB0KSArIG4gaW5cbiAgbGV0IHkgPSB5ZWFyIHQgKyAodG90YWxfbW9udGhzIC8lIDEyKSBpblxuICBsZXQgbSA9IHRvdGFsX21vbnRocyAlIDEyIGluXG4gICgqIGNvcnJlY3QgZm9yIGRlY2VtYmVyICopXG4gIGxldCB5LCBtID0gaWYgSW50LiggPSApIG0gMCB0aGVuIHkgLSAxLCBtICsgMTIgZWxzZSB5LCBtIGluXG4gIGxldCBtID0gTW9udGgub2ZfaW50X2V4biBtIGluXG4gICgqIGhhbmRsZSBpbnZhbGlkIGRhdGVzIGZvciBtb250aHMgd2l0aCBmZXdlciBudW1iZXIgb2YgZGF5cyAqKVxuICBsZXQgcmVjIHRyeV9jcmVhdGUgZCA9XG4gICAgdHJ5IGNyZWF0ZV9leG4gfnkgfm0gfmQgd2l0aFxuICAgIHwgX2V4biAtPlxuICAgICAgYXNzZXJ0IChJbnQuKCA+PSApIGQgMSk7XG4gICAgICB0cnlfY3JlYXRlIChkIC0gMSlcbiAgaW5cbiAgdHJ5X2NyZWF0ZSAoZGF5IHQpXG47O1xuXG5sZXQgYWRkX3llYXJzIHQgbiA9IGFkZF9tb250aHMgdCAobiAqIDEyKVxuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RldGVybWluYXRpb25fb2ZfdGhlX2RheV9vZl90aGVfd2VlayNQdXJlbHlfbWF0aGVtYXRpY2FsX21ldGhvZHNcblxuICAgbm90ZTogdW5pdCB0ZXN0cyBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5sZXQgZGF5X29mX3dlZWsgPVxuICBsZXQgdGFibGUgPSBbfCAwOyAzOyAyOyA1OyAwOyAzOyA1OyAxOyA0OyA2OyAyOyA0IHxdIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG0gPSBNb250aC50b19pbnQgKG1vbnRoIHQpIGluXG4gICAgbGV0IHkgPSBpZiBJbnQuKCA8ICkgbSAzIHRoZW4geWVhciB0IC0gMSBlbHNlIHllYXIgdCBpblxuICAgIERheV9vZl93ZWVrLm9mX2ludF9leG5cbiAgICAgICgoeSArICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMCkgKyB0YWJsZS4obSAtIDEpICsgZGF5IHQpICUgNylcbjs7XG5cbigqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3JkaW5hbF9kYXRlICopXG5sZXQgbm9uX2xlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA1OTsgOTA7IDEyMDsgMTUxOyAxODE7IDIxMjsgMjQzOyAyNzM7IDMwNDsgMzM0IHxdXG5sZXQgbGVhcF95ZWFyX3RhYmxlID0gW3wgMDsgMzE7IDYwOyA5MTsgMTIxOyAxNTI7IDE4MjsgMjEzOyAyNDQ7IDI3NDsgMzA1OyAzMzUgfF1cblxubGV0IG9yZGluYWxfZGF0ZSB0ID1cbiAgbGV0IHRhYmxlID1cbiAgICBpZiBpc19sZWFwX3llYXIgfnllYXI6KHllYXIgdCkgdGhlbiBsZWFwX3llYXJfdGFibGUgZWxzZSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGluXG4gIGxldCBvZmZzZXQgPSB0YWJsZS4oTW9udGgudG9faW50IChtb250aCB0KSAtIDEpIGluXG4gIGRheSB0ICsgb2Zmc2V0XG47O1xuXG5sZXQgbGFzdF93ZWVrX29mX3llYXIgeSA9XG4gIGxldCBmaXJzdF9vZl95ZWFyID0gY3JlYXRlX2V4biB+eSB+bTpKYW4gfmQ6MSBpblxuICBsZXQgaXMgdCBkYXkgPSBEYXlfb2Zfd2Vlay5lcXVhbCAoZGF5X29mX3dlZWsgdCkgZGF5IGluXG4gIGlmIGlzIGZpcnN0X29mX3llYXIgVGh1IHx8IChpc19sZWFwX3llYXIgfnllYXI6eSAmJiBpcyBmaXJzdF9vZl95ZWFyIFdlZClcbiAgdGhlbiA1M1xuICBlbHNlIDUyXG47O1xuXG4oKiBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlIG9yIElTTyA4NjAxIGZvciB0aGUgZGV0YWlscyBvZiB0aGlzXG4gICBhbGdvcml0aG0uXG5cbiAgIFVzZXMgYSBbfmZdIGFyZ3VtZW50IHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNhbGxlZCBieSBbd2Vla19udW1iZXJdLlxuKilcbmxldCBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mID1cbiAgbGV0IG9yZGluYWwgPSBvcmRpbmFsX2RhdGUgdCBpblxuICBsZXQgd2Vla2RheSA9IERheV9vZl93ZWVrLmlzb184NjAxX3dlZWtkYXlfbnVtYmVyIChkYXlfb2Zfd2VlayB0KSBpblxuICAoKiBbb3JkaW5hbCAtIHdlZWtkYXkgKyA0XSBpcyB0aGUgb3JkaW5hbCBvZiB0aGlzIHdlZWsncyBUaHVyc2RheSwgdGhlbiAobiArIDYpIC8gNyBpc1xuICAgICBkaXZpc2lvbiBieSA3IHJvdW5kaW5nIHVwICopXG4gIGxldCB3ZWVrID0gKG9yZGluYWwgLSB3ZWVrZGF5ICsgMTApIC8gNyBpblxuICBsZXQgeWVhciA9IHllYXIgdCBpblxuICBpZiBJbnQuKCA8ICkgd2VlayAxXG4gIHRoZW4gZiB+d2VlazoobGFzdF93ZWVrX29mX3llYXIgKHllYXIgLSAxKSkgfnllYXI6KHllYXIgLSAxKVxuICBlbHNlIGlmIEludC4oID4gKSB3ZWVrIChsYXN0X3dlZWtfb2ZfeWVhciB5ZWFyKVxuICB0aGVuIGYgfndlZWs6MSB+eWVhcjooeWVhciArIDEpXG4gIGVsc2UgZiB+d2VlayB+eWVhclxuOztcblxubGV0IHdlZWtfbnVtYmVyX2FuZF95ZWFyIHQgPSBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mOihmdW4gfndlZWsgfnllYXIgLT4gd2VlaywgeWVhcilcbmxldCB3ZWVrX251bWJlciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyOl8gLT4gd2VlaylcbmxldCBpc193ZWVrZW5kIHQgPSBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IChkYXlfb2Zfd2VlayB0KVxubGV0IGlzX3dlZWtkYXkgdCA9IG5vdCAoaXNfd2Vla2VuZCB0KVxubGV0IGlzX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID0gaXNfd2Vla2RheSB0ICYmIG5vdCAoaXNfaG9saWRheSB0KVxuXG5sZXQgcmVjIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyID1cbiAgaWYgdDEgPCB0MlxuICB0aGVuIC1kaWZmX3dlZWtlbmRfZGF5cyB0MiB0MVxuICBlbHNlIChcbiAgICAoKiBCYXNpYyBkYXRlIGRpZmYgKilcbiAgICBsZXQgZGlmZiA9IGRpZmYgdDEgdDIgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgU2F0dXJkYXkgLT4gU3VuZGF5IGNyb3NzaW5ncyAqKVxuICAgIGxldCBkMSA9IGRheV9vZl93ZWVrIHQxIGluXG4gICAgbGV0IGQyID0gZGF5X29mX3dlZWsgdDIgaW5cbiAgICBsZXQgbnVtX3NhdHN1bl9jcm9zc2luZ3MgPVxuICAgICAgaWYgSW50LiggPCApIChEYXlfb2Zfd2Vlay50b19pbnQgZDEpIChEYXlfb2Zfd2Vlay50b19pbnQgZDIpXG4gICAgICB0aGVuIDEgKyAoZGlmZiAvIDcpXG4gICAgICBlbHNlIGRpZmYgLyA3XG4gICAgaW5cbiAgICAobnVtX3NhdHN1bl9jcm9zc2luZ3MgKiAyKVxuICAgICsgKGlmIERheV9vZl93ZWVrLiggPSApIGQyIERheV9vZl93ZWVrLlN1biB0aGVuIDEgZWxzZSAwKVxuICAgICsgaWYgRGF5X29mX3dlZWsuKCA9ICkgZDEgRGF5X29mX3dlZWsuU3VuIHRoZW4gLTEgZWxzZSAwKVxuOztcblxubGV0IGRpZmZfd2Vla2RheXMgdDEgdDIgPSBkaWZmIHQxIHQyIC0gZGlmZl93ZWVrZW5kX2RheXMgdDEgdDJcblxubGV0IGFkZF9kYXlzX3NraXBwaW5nIHQgfnNraXAgbiA9XG4gIGxldCBzdGVwID0gaWYgSW50LiggPj0gKSBuIDAgdGhlbiAxIGVsc2UgLTEgaW5cbiAgbGV0IHJlYyBsb29wIHQgayA9XG4gICAgbGV0IHRfbmV4dCA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICAgIGlmIHNraXAgdCB0aGVuIGxvb3AgdF9uZXh0IGsgZWxzZSBpZiBJbnQuKCA9ICkgayAwIHRoZW4gdCBlbHNlIGxvb3AgdF9uZXh0IChrIC0gMSlcbiAgaW5cbiAgbG9vcCB0IChhYnMgbilcbjs7XG5cbmxldCByZWMgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgaWYgY29uZGl0aW9uIHQgdGhlbiB0IGVsc2UgZmlyc3RfZGF5X3NhdGlzZnlpbmcgKGFkZF9kYXlzIHQgc3RlcCkgfnN0ZXAgfmNvbmRpdGlvblxuOztcblxubGV0IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgbGV0IG5leHRfZGF5ID0gYWRkX2RheXMgdCBzdGVwIGluXG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIG5leHRfZGF5IH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBmb2xsb3dpbmdfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcHJldmlvdXNfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfZm9yd2FyZF90b193ZWVrZGF5IHQgPSBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfYmFja3dhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxuXG5sZXQgcm91bmRfZm9yd2FyZF90b19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9XG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOihpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkpXG47O1xuXG5sZXQgcm91bmRfYmFja3dhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IGFkZF93ZWVrZGF5cyB0IG4gPSBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwOmlzX3dlZWtlbmQgblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF93ZWVrZGF5c1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0KSB+c2tpcDppc193ZWVrZW5kIG5cbjs7XG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXMgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgdCBuIH5za2lwOihmdW4gZCAtPiBpc193ZWVrZW5kIGQgfHwgaXNfaG9saWRheSBkKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2luX2RpcmVjdGlvbl9vZl9zdGVwID0gYWRkX2J1c2luZXNzX2RheXNcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IHQpIG4gfnNraXA6KGZ1biBkIC0+XG4gICAgbm90IChpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGRhdGVzX2JldHdlZW4gfm1pbjp0MSB+bWF4OnQyID1cbiAgbGV0IHJlYyBsb29wIHQgbCA9IGlmIHQgPCB0MSB0aGVuIGwgZWxzZSBsb29wIChhZGRfZGF5cyB0ICgtMSkpICh0IDo6IGwpIGluXG4gIGxvb3AgdDIgW11cbjs7XG5cbmxldCB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCA9XG4gIGxldCBhbGxfZGF0ZXMgPSBkYXRlc19iZXR3ZWVuIH5taW4gfm1heCBpblxuICBPcHRpb24udmFsdWVfbWFwIChMaXN0LmhkIGFsbF9kYXRlcykgfmRlZmF1bHQ6W10gfmY6KGZ1biBmaXJzdF9kYXRlIC0+XG4gICAgKCogdG8gYXZvaWQgYSBzeXN0ZW0gY2FsbCBvbiBldmVyeSBkYXRlLCB3ZSBqdXN0IGdldCB0aGUgd2Vla2RheSBmb3IgdGhlIGZpcnN0XG4gICAgICAgZGF0ZSBhbmQgdXNlIGl0IHRvIGdldCBhbGwgdGhlIG90aGVyIHdlZWtkYXlzICopXG4gICAgbGV0IGZpcnN0X3dlZWtkYXkgPSBkYXlfb2Zfd2VlayBmaXJzdF9kYXRlIGluXG4gICAgbGV0IGRhdGVfYW5kX3dlZWtkYXlzID1cbiAgICAgIExpc3QubWFwaSBhbGxfZGF0ZXMgfmY6KGZ1biBpIGRhdGUgLT4gZGF0ZSwgRGF5X29mX3dlZWsuc2hpZnQgZmlyc3Rfd2Vla2RheSBpKVxuICAgIGluXG4gICAgTGlzdC5maWx0ZXJfbWFwIGRhdGVfYW5kX3dlZWtkYXlzIH5mOihmdW4gKGRhdGUsIHdlZWtkYXkpIC0+XG4gICAgICBpZiBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IHdlZWtkYXkgdGhlbiBOb25lIGVsc2UgU29tZSBkYXRlKSlcbjs7XG5cbmxldCBidXNpbmVzc19kYXRlc19iZXR3ZWVuIH5taW4gfm1heCB+aXNfaG9saWRheSA9XG4gIHdlZWtkYXlzX2JldHdlZW4gfm1pbiB+bWF4IHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZCAtPiBub3QgKGlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIgdCB+b246ZG93ID1cbiAgbGV0IGRvdyA9IERheV9vZl93ZWVrLnRvX2ludCBkb3cgaW5cbiAgbGV0IHRwbHVzMSA9IGFkZF9kYXlzIHQgMSBpblxuICBsZXQgY3VyID0gRGF5X29mX3dlZWsudG9faW50IChkYXlfb2Zfd2VlayB0cGx1czEpIGluXG4gIGxldCBkaWZmID0gKGRvdyArIDcgLSBjdXIpIG1vZCA3IGluXG4gIGFkZF9kYXlzIHRwbHVzMSBkaWZmXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgb3BlbiBRdWlja2NoZWNrXG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgZDEgZDIgPVxuICAgIGlmIGQxID4gZDJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiRGF0ZS5nZW5fdW5pZm9ybV9pbmNsOiBib3VuZHMgYXJlIGNyb3NzZWRcIlxuICAgICAgICAgICAgfmxvd2VyX2JvdW5kOihkMSA6IHQpXG4gICAgICAgICAgICB+dXBwZXJfYm91bmQ6KGQyIDogdCldO1xuICAgIEdlbmVyYXRvci5tYXAgKEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGRpZmYgZDIgZDEpKSB+ZjooZnVuIGRheXMgLT4gYWRkX2RheXMgZDEgZGF5cylcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgZDEgZDIgPVxuICAgIEdlbmVyYXRvci53ZWlnaHRlZF91bmlvblxuICAgICAgWyAxLiwgR2VuZXJhdG9yLnJldHVybiBkMTsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDI7IDE4LiwgZ2VuX3VuaWZvcm1faW5jbCBkMSBkMiBdXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgKG9mX3N0cmluZyBcIjE5MDAtMDEtMDFcIikgKG9mX3N0cmluZyBcIjIxMDAtMDEtMDFcIilcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBPYnNlcnZlci5jcmVhdGUgKGZ1biB0IH5zaXplOl8gfmhhc2ggLT4gaGFzaF9mb2xkX3QgaGFzaCB0KVxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFNocmlua2VyLmVtcHR5ICgpXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JcbmxldCBnZW5faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBsZWFwX3llYXJfdGFibGUgPSBsZWFwX3llYXJfdGFibGVcbiAgbGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBvcmRpbmFsX2RhdGUgPSBvcmRpbmFsX2RhdGVcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX2dlbmVyYXRvciBxdWlja2NoZWNrX2dlbmVyYXRvcilcbiAgICAgIH5mOm9mX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX3Nocmlua2VyIHF1aWNrY2hlY2tfc2hyaW5rZXIpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgICAgIH5mX2ludmVyc2U6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfaGFzaFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIGVuZClcbiAgOztcblxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgc3VmZml4ZXMgY2hhciA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgWyBzcHJpbnRmIFwiJWNcIiBjaGFyOyBzcHJpbnRmIFwiJWNNXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk1cIiBjaGFyOyBzcHJpbnRmIFwiJWMuTS5cIiBjaGFyIF1cbiAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gc3VmZml4IC0+XG4gICAgWyBTdHJpbmcubG93ZXJjYXNlIHN1ZmZpeDsgU3RyaW5nLnVwcGVyY2FzZSBzdWZmaXggXSlcbjs7XG5cbmxldCBhbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdBJylcbmxldCBwbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdQJylcblxuKCogQXZvaWRzIHRoZSBhbGxvY2F0aW9uIHRoYXQgW0xpc3QuZmluZF0gd291bGQgZW50YWlsIGluIGJvdGggYm90aCB0aGUgY2xvc3VyZSBpbnB1dCBhbmRcbiAgIHRoZSBvcHRpb24gb3V0cHV0LiAqKVxubGV0IHJlYyBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXMgPVxuICBtYXRjaCBzdWZmaXhlcyB3aXRoXG4gIHwgc3VmZml4IDo6IHN1ZmZpeGVzIC0+XG4gICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeCB0aGVuIHN1ZmZpeCBlbHNlIGZpbmRfc3VmZml4IHN0cmluZyBzdWZmaXhlc1xuICB8IFtdIC0+IFwiXCJcbjs7XG5cbmxldCBoYXNfY29sb24gc3RyaW5nIHBvcyB+dW50aWwgPSBwb3MgPCB1bnRpbCAmJiBDaGFyLmVxdWFsICc6JyBzdHJpbmcuW3Bvc11cblxuKCogVGhpcyBmdW5jdGlvbiBkZWZpbmVzIHdoYXQgd2UgbWVhbnQgYnkgXCJkZWNpbWFsIHBvaW50XCIsIGJlY2F1c2UgaW4gc29tZSBzdHJpbmcgZm9ybWF0c1xuICAgaXQgbWVhbnMgJy4nIGFuZCBpbiBzb21lIGl0IGNhbiBiZSAnLicgb3IgJywnLiBUaGVyZSdzIG5vIHBhcnRpY3VsYXIgZGVtYW5kIGZvciBzdXBwb3J0XG4gICBmb3IgJywnLCBhbmQgdXNpbmcganVzdCAnLicgbGV0cyB1cyB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gZm9yIHRoZSBkZWNpbWFsIHN1YnN0cmluZ1xuICAgd2l0aG91dCBhbnkgc3Vic3RpdHV0aW9ucy4gKilcbmxldCBjaGFyX2lzX2RlY2ltYWxfcG9pbnQgc3RyaW5nIHBvcyA9IENoYXIuZXF1YWwgJy4nIHN0cmluZy5bcG9zXVxuXG5sZXQgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyBsZW4gPVxuICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgJyAnIHN0cmluZy5bbGVuIC0gMV0gdGhlbiBsZW4gLSAxIGVsc2UgbGVuXG47O1xuXG5sZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lLk9mZGF5OiBpbnZhbGlkIHN0cmluZ1wiIHN0cmluZyByZWFzb25dXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgfCAnXycgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhbmQvb3IgdW5kZXJzY29yZXMgYWZ0ZXIgZGVjaW1hbCBwb2ludFwiXG4gIGRvbmU7XG4gICFub256ZXJvXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IHBhcnNlIHN0cmluZyB+ZiA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBsZXQgYW1fb3JfcG0sIHVudGlsID1cbiAgICAoKiBkaXNjcmltaW5hdGUgYW1vbmcgQU0gKDE6MzBhbSksIFBNICgxMjozMDowMCBQLk0uKSwgb3IgMjQtaHIgKDEzOjAwKS4gKilcbiAgICBtYXRjaFxuICAgICAgKCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgYW1fc3VmZml4ZXMpXG4gICAgICAsIGZpbmRfc3VmZml4IHN0cmluZyAoTGF6eS5mb3JjZSBwbV9zdWZmaXhlcykgKVxuICAgIHdpdGhcbiAgICB8IFwiXCIsIFwiXCIgLT4gYGhyXzI0LCBsZW5cbiAgICB8IGFtLCBcIlwiIC0+IGBocl9BTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBhbSlcbiAgICB8IFwiXCIsIHBtIC0+IGBocl9QTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBwbSlcbiAgICB8IF8sIF8gLT4gYGhyXzI0LCBhc3NlcnQgZmFsc2VcbiAgICAoKiBJbW1lZGlhdGVseSBhYm92ZSwgaXQgbWF5IHNlZW0gbm9uc2Vuc2ljYWwgdG8gd3JpdGUgW2Bocl8yNCwgYXNzZXJ0IGZhbHNlXSB3aGVuIHRoZVxuICAgICAgIFtgaHJfMjRdIGNhbiBuZXZlciBiZSByZXR1cm5lZC4gV2UgZG8gdGhpcyB0byBoZWxwIHRoZSBjb21waWxlciBmaWd1cmUgb3V0IG5ldmVyIHRvXG4gICAgICAgYWxsb2NhdGUgYSB0dXBsZSBpbiB0aGlzIGNvZGU6IHRoZSBbbGV0XSBwYXR0ZXJuIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZSBhbmQgZXZlcnlcbiAgICAgICBtYXRjaCBjbGF1c2UgaXMgc3ludGFjdGljYWxseSBhIHR1cGxlLiAqKVxuICBpblxuICBsZXQgcG9zID0gMCBpblxuICBsZXQgcG9zLCBociwgZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgPVxuICAgICgqIGUuZy4gXCIxOjAwXCIgb3IgXCIxOjAwOjAwXCIgKilcbiAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAxKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyOjAwXCIgb3IgXCIxMjowMDowMFwiICopXG4gICAgZWxzZSBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAzLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjFhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAxID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAxLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMTJhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAyID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMDkzMFwiOyBtdXN0IG5vdCBoYXZlIHNlY29uZHMgKilcbiAgICBlbHNlIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kc1xuICBpblxuICBsZXQgcG9zLCBtaW4sIGV4cGVjdF9zZWNvbmRzID1cbiAgICBtYXRjaCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyB3aXRoXG4gICAgfCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiICopXG4gICAgICBwb3MsIDAsIGZhbHNlXG4gICAgfCAoYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMpIGFzIG1heWJlX3NlY29uZHMgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCBwb3MgKyAzXG4gICAgICAgICwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuICAgICAgICAsIG1hdGNoIG1heWJlX3NlY29uZHMgd2l0aFxuICAgICAgICB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+IHRydWVcbiAgICAgICAgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMgLT5cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGVuZCBvZiBzdHJpbmcgYWZ0ZXIgbWludXRlc1wiIClcbiAgICAgICAgKCogZS5nLiBcIjEyOjAwXCIgKilcbiAgICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgICB0aGVuIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGNvbG9uIG9yIGFtL3BtIHN1ZmZpeCB3aXRoIG9wdGlvbmFsIHNwYWNlIGFmdGVyIG1pbnV0ZXNcIlxuICBpblxuICBsZXQgc2VjLCBzdWJzZWNfcG9zLCBzdWJzZWNfbGVuLCBzdWJzZWNfbm9uemVybyA9XG4gICAgbWF0Y2ggZXhwZWN0X3NlY29uZHMgd2l0aFxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIGUuZy4gXCIxMmFtXCIgb3IgXCIxMjowMFwiICopXG4gICAgICBpZiBwb3MgPSB1bnRpbFxuICAgICAgdGhlbiAwLCBwb3MsIDAsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBhY3R1YWxseSB1bnJlYWNoYWJsZSwgYmFzZWQgb24gdGhlIHZhcmlvdXMgd2F5cyB0aGF0XG4gICAgICAgICAgIFtleHBlY3Rfc2Vjb25kc10gY2FuIGVuZCB1cCBmYWxzZS4gKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJCVUc6IGRpZCBub3QgZXhwZWN0IHNlY29uZHMsIGJ1dCBmb3VuZCB0aGVtXCJcbiAgICB8IHRydWUgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBwb3MgKyAyID4gdW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjBcIiAqKVxuICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIHR3byBkaWdpdHMgb2Ygc2Vjb25kc1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgaW5cbiAgICAgICAgbGV0IHBvcyA9IHBvcyArIDIgaW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgICAgdGhlbiBzZWMsIHBvcywgMCwgZmFsc2UgKCogZS5nLiBcIjEyOjAwOjAwLjEyM1wiICopXG4gICAgICAgIGVsc2UgaWYgcG9zIDwgdW50aWwgJiYgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3NcbiAgICAgICAgdGhlblxuICAgICAgICAgICggc2VjXG4gICAgICAgICAgLCBwb3NcbiAgICAgICAgICAsIHVudGlsIC0gcG9zXG4gICAgICAgICAgLCBjaGVja19kaWdpdHNfd2l0aF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgKHBvcyArIDEpIH51bnRpbCApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgZGVjaW1hbCBwb2ludCBvciBhbS9wbSBzdWZmaXggYWZ0ZXIgc2Vjb25kc1wiKVxuICBpblxuICBsZXQgaHIgPVxuICAgICgqIE5CLiBXZSBhbHJlYWR5IGtub3cgW2hyXSBpcyBub24tbmVnYXRpdmUsIGJlY2F1c2UgaXQncyB0aGUgcmVzdWx0IG9mXG4gICAgICAgW3JlYWRfMl9kaWdpdF9pbnRdLiAqKVxuICAgIG1hdGNoIGFtX29yX3BtIHdpdGhcbiAgICB8IGBocl9BTSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwYW1cIiAqKVxuICAgICAgaWYgaHIgPCAxIHx8IGhyID4gMTJcbiAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgIGVsc2UgaWYgaHIgPSAxMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIGhyXG4gICAgfCBgaHJfUE0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMHBtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMTJcbiAgICAgIGVsc2UgaHIgKyAxMlxuICAgIHwgYGhyXzI0IC0+XG4gICAgICAobWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyB3aXRob3V0IG1pbnV0ZXMgb3IgQU0vUE1cIlxuICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIHwgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgLT5cbiAgICAgICAgIGlmIGhyID4gMjRcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIGVsc2UgaWYgaHIgPSAyNCAmJiAobWluID4gMCB8fCBzZWMgPiAwIHx8IHN1YnNlY19ub256ZXJvKVxuICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInRpbWUgaXMgcGFzdCAyNDowMDowMFwiICgqIGUuZy4gXCIxMzowMDowMFwiICopXG4gICAgICAgICBlbHNlIGhyKVxuICBpblxuICBsZXQgbWluID1cbiAgICBpZiBtaW4gPiA1OSB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibWludXRlcyBvdXQgb2YgYm91bmRzXCIgZWxzZSBtaW5cbiAgaW5cbiAgbGV0IHNlYyA9XG4gICAgaWYgc2VjID4gNjAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNlY29uZHMgb3V0IG9mIGJvdW5kc1wiIGVsc2Ugc2VjXG4gIGluXG4gIGxldCBzdWJzZWNfbGVuID0gaWYgc2VjID0gNjAgfHwgbm90IHN1YnNlY19ub256ZXJvIHRoZW4gMCBlbHNlIHN1YnNlY19sZW4gaW5cbiAgZiBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuOztcblxubGV0IHBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZiA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgbWF0Y2hcbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3RyKVxuICAgIHdpdGhcbiAgICB8IFJlc3VsdC5PayB6IC0+IHpcbiAgICB8IFJlc3VsdC5FcnJvciBzIC0+XG4gICAgICBmYWlsd2l0aGYgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogJXNcIiAoRXJyb3IudG9fc3RyaW5nX21hY2ggcykgKClcbiAgaW5cbiAgaWYgbGVuIDwgMlxuICB0aGVuIGZhaWx3aXRoIFwibGVuIDwgMlwiXG4gIGVsc2UgKFxuICAgIGxldCBociA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3MgaW5cbiAgICBpZiBociA+IDI0IHRoZW4gZmFpbHdpdGggXCJob3VyID4gMjRcIjtcbiAgICBpZiBsZW4gPSAyXG4gICAgdGhlbiBmIHN0ciB+aHIgfm1pbjowIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgZWxzZSBpZiBsZW4gPCA1XG4gICAgdGhlbiBmYWlsd2l0aCBcIjIgPCBsZW4gPCA1XCJcbiAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDJdICc6JylcbiAgICB0aGVuIGZhaWx3aXRoIFwiZmlyc3QgY29sb24gbWlzc2luZ1wiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgMykgaW5cbiAgICAgIGlmIG1pbiA+PSA2MCB0aGVuIGZhaWx3aXRoIFwibWludXRlID4gNjBcIjtcbiAgICAgIGlmIGhyID0gMjQgJiYgbWluIDw+IDAgdGhlbiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBtaW51dGVcIjtcbiAgICAgIGlmIGxlbiA9IDVcbiAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYzowIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICAgIGVsc2UgaWYgbGVuIDwgOFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIjUgPCBsZW4gPCA4XCJcbiAgICAgIGVsc2UgaWYgbm90IChDaGFyLmVxdWFsIHN0ci5bcG9zICsgNV0gJzonKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcInNlY29uZCBjb2xvbiBtaXNzaW5nXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2VjID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgNikgaW5cbiAgICAgICAgKCogc2Vjb25kIGNhbiBiZSA2MCBpbiB0aGUgY2FzZSBvZiBhIGxlYXAgc2Vjb25kLiBVbmZvcnR1bmF0ZWx5LCB3aGF0IHdpdGhcbiAgICAgICAgICAgbm9uLWhvdXItbXVsdGlwbGUgdGltZXpvbmUgb2Zmc2V0cywgd2UgY2FuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoYXRcbiAgICAgICAgICAgdGhlIGhvdXIgb3IgbWludXRlIG11c3QgYmUgaW4gdGhhdCBjYXNlICopXG4gICAgICAgIGlmIHNlYyA+IDYwIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBzZWNvbmQ6ICVpXCIgc2VjICgpO1xuICAgICAgICBpZiBociA9IDI0ICYmIHNlYyA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc2Vjb25kc1wiO1xuICAgICAgICBpZiBsZW4gPSA4XG4gICAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICAgIGVsc2UgaWYgbGVuID0gOVxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwibGVuZ3RoID0gOVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHN0ci5bcG9zICsgOF0gd2l0aFxuICAgICAgICAgIHwgJy4nIHwgJywnIC0+XG4gICAgICAgICAgICBsZXQgc3Vic2VjX3BvcyA9IHBvcyArIDggaW5cbiAgICAgICAgICAgIGxldCBzdWJzZWNfbGVuID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBjaGVja19kaWdpdHNfd2l0aG91dF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVyb1xuICAgICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgICAgICAoc3Vic2VjX3BvcyArIDEpXG4gICAgICAgICAgICAgICAgICB+dW50aWw6KHBvcyArIGxlbilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBzZWMgPSA2MCAtPiAwXG4gICAgICAgICAgICAgIHwgdHJ1ZSB3aGVuIGhyID0gMjQgLT4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc3Vic2Vjb25kc1wiXG4gICAgICAgICAgICAgIHwgXyAtPiBsZW4gLSA4XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIm1pc3Npbmcgc3Vic2Vjb25kIHNlcGFyYXRvclwiKSkpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgSGFzaC5CdWlsdGluXG5pbmNsdWRlIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG5pbmNsdWRlIChcbiAgQmFzZSA6XG4gIHNpZ1xuICAgIHR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJvb2wgPSBib29sIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBjaGFyID0gY2hhciBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgZXhuID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50ID0gaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyB1bml0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbiAgd2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxuICB3aXRoIHR5cGUgY2hhciA6PSBjaGFyXG4gIHdpdGggdHlwZSBleG4gOj0gZXhuXG4gIHdpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxuICB3aXRoIHR5cGUgaW50IDo9IGludFxuICB3aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbiAgd2l0aCB0eXBlIGludDY0IDo9IGludDY0XG4gIHdpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbiAgd2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbiAgd2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbiAgd2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG4gIHdpdGggdHlwZSB1bml0IDo9IHVuaXQpXG4iLCJvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGV4Y2VwdGlvbiBOYW5fb3JfaW5mIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgdmVyaWZ5IHQgPVxuICAgICAgbWF0Y2ggU3RkbGliLmNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICAgICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+ICgpXG4gICAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IHJhaXNlIE5hbl9vcl9pbmZcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZClcblxuICAgIGxldCBzZXhwX29mX3QgPSBGbG9hdC5zZXhwX29mX3RcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyBhcyBzZXhwIC0+XG4gICAgICAgIGxldCB0ID0gRmxvYXQudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgKHRyeSB2ZXJpZnkgdCB3aXRoXG4gICAgICAgICB8IGUgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgKEltcG9ydC5FeG4udG9fc3RyaW5nIGUpIHNleHApO1xuICAgICAgICB0XG4gICAgICB8IHMgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgXCJEZWNpbWFsLnRfb2Zfc2V4cDogRXhwZWN0ZWQgQXRvbSwgZm91bmQgTGlzdFwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoZmxvYXRbQHF1aWNrY2hlY2suZ2VuZXJhdG9yIEZsb2F0Lmdlbl9maW5pdGVdKVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgKCogRm9yIFtzXSB3aGljaCBpcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGZpbml0ZSBmbG9hdCwgaW4gZWl0aGVyIGRlY2ltYWwgb3JcbiAgICAgICBzY2llbnRpZmljIG5vdGF0aW9uLCBzaGlmdCB0aGUgZGVjaW1hbCBwb2ludCBvciBhZGp1c3QgdGhlIHNjaWVudGlmaWMgbm90YXRpb25cbiAgICAgICBleHBvbmVudCBieSBbYnldLCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIG11bHRpcGx5aW5nIHRoZSBudW1iZXIgYnkgWzEwKipieV0uXG5cbiAgICAgICBUaGUgb3V0cHV0IHdpbGwgYmUgaW4gc2NpZW50aWZpYyBub3RhdGlvbiBpZmYgdGhlIGlucHV0IHdhcywgZXhjZXB0IHdoZW4gdGhlXG4gICAgICAgcmVzdWx0aW5nIGV4cG9uZW50IGFmdGVyIHRoZSBzaGlmdCBiZWNvbWVzIDAuXG5cbiAgICAgICBObyBlZmZvcnQgaXMgbWFkZSB0byBub3JtYWxpemUgdGhlIHNjaWVudGlmaWMgbm90YXRpb24gaWYgaXQgd2FzIG5vdCBub3JtYWxpemVkLCBvclxuICAgICAgIHRvIHN3aXRjaCB0by9mcm9tIHNjaWVudGlmaWMgbm90YXRpb24gdG8gaGVscCByZWFkYWJpbGl0eSAoZXhjZXB0IGZvciB0aGUgRTAgY2FzZVxuICAgICAgIG1lbnRpb25lZCBhYm92ZSkuICopXG4gICAgbGV0IHJlYyBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5ID1cbiAgICAgIGlmIGJ5ID0gMFxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHMgPSBTdHJpbmcubHN0cmlwIHMgaW5cbiAgICAgICAgbGV0IGQsIGUsIHplcm8sIHVuZGVyc2NvcmUgPVxuICAgICAgICAgICgqIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZWNpbWFsIHBvaW50IFtkXSwgdGhlIGV4cG9uZW50IHNpZ24gW2VdLCBhbmQgY2hlY2tcbiAgICAgICAgICAgICBpZiB0aGVyZSBhcmUgYW55IG5vbi16ZXJvIHNpZ25pZmljYW50IGRpZ2l0cyAob25seSBiZWZvcmUgdGhlIGV4cG9uZW50IHNpZ24pXG4gICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIHRoZSBudW1iZXIgaXMgZXF1YWwgdG8gMC4wICopXG4gICAgICAgICAgbGV0IGQgPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBlID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgbm90X3plcm8gPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgdW5kZXJzY29yZSA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSAhZFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmIFwiRXJyb3IgcGFyc2luZyBQZXJjZW50LnQ6IHRvbyBtYW55IGRlY2ltYWwgcG9pbnRzIGluICclcydcIiBzICgpO1xuICAgICAgICAgICAgICBkIDo9IFNvbWUgaVxuICAgICAgICAgICAgfCAnZScgfCAnRScgLT5cbiAgICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgIWVcbiAgICAgICAgICAgICAgdGhlbiBmYWlsd2l0aGYgXCJFcnJvciBwYXJzaW5nIFBlcmNlbnQudDogdG9vIG1hbnkgRXMgaW4gJyVzJ1wiIHMgKCk7XG4gICAgICAgICAgICAgIGUgOj0gU29tZSBpXG4gICAgICAgICAgICB8ICctJyB8ICcrJyB8ICcwJyAtPiAoKVxuICAgICAgICAgICAgfCAnXycgLT4gdW5kZXJzY29yZSA6PSB0cnVlXG4gICAgICAgICAgICB8ICcxJyAuLiAnOScgLT4gaWYgT3B0aW9uLmlzX25vbmUgIWUgdGhlbiBub3RfemVybyA6PSB0cnVlXG4gICAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgd2hlbiBwYXJzaW5nIFBlcmNlbnQudDogJyVjJyBpbiAnJXMnXCIgYyBzICgpXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAhZCwgIWUsIG5vdCAhbm90X3plcm8sICF1bmRlcnNjb3JlXG4gICAgICAgIGluXG4gICAgICAgIGlmIHVuZGVyc2NvcmVcbiAgICAgICAgdGhlbiBzaGlmdF9kZWNpbWFsX3BvaW50IChTdHJpbmcuZmlsdGVyIHMgfmY6KGZ1biBjIC0+IENoYXIuKGMgPD4gJ18nKSkpIH5ieVxuICAgICAgICBlbHNlIGlmIHplcm9cbiAgICAgICAgdGhlbiBzXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAoKiBbc10gaXMgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4gIFNpbXBseSBhZGp1c3QgdGhlIGV4cG9uZW50IGFmdGVyICdlJy4gKilcbiAgICAgICAgICAgIGxldCBleHAgPSBJbnQub2Zfc3RyaW5nIChTdHJpbmcuZHJvcF9wcmVmaXggcyAoZSArIDEpKSBpblxuICAgICAgICAgICAgbGV0IGV4cCA9IGV4cCArIGJ5IGluXG4gICAgICAgICAgICBpZiBleHAgPSAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFdlIGVuZCB1cCB3aXRoIGV4cG9uZW50IDAsIHNvIHdlIGp1c3Qgc2tpcCB0aGUgXCJlXCIgYWx0b2dldGhlciAqKVxuICAgICAgICAgICAgICBTdHJpbmcucHJlZml4IHMgZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgICAgWyBTdHJpbmcucHJlZml4IHMgKGUgKyAxKVxuICAgICAgICAgICAgICAgIDsgKGlmIGV4cCA+IDAgdGhlbiBcIitcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgICAgOyBJbnQudG9fc3RyaW5nIGV4cFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICgqIFtzXSBpcyBpbiBkZWNpbWFsIG5vdGF0aW9uLiAgU3RhcnQgYnkgZHJvcHBpbmcgdGhlIGxlYWRpbmcgc2lnbiBpZiB0aGVyZSBpc1xuICAgICAgICAgICAgICAgb25lLiAgV2UnbGwgcmUtYWRkIGl0IGF0IHRoZSBlbmQgdG8ga2VlcCB0aGUgcmVzdCBvZiB0aGUgY29kZSBzaW1wbGVyLiAqKVxuICAgICAgICAgICAgbGV0IG5lZyA9IENoYXIuKCA9ICkgcy5bMF0gJy0nIGluXG4gICAgICAgICAgICBsZXQgc2lnbmVkID0gbmVnIHx8IENoYXIuKCA9ICkgcy5bMF0gJysnIGluXG4gICAgICAgICAgICBsZXQgcyA9IGlmIHNpZ25lZCB0aGVuIFN0cmluZy5kcm9wX3ByZWZpeCBzIDEgZWxzZSBzIGluXG4gICAgICAgICAgICBsZXQgcywgYnkgPVxuICAgICAgICAgICAgICAoKiBOZXh0LCBzY3JhdGNoIHRoZSBkZWNpbWFsIHBvaW50IGlmIHRoZXJlIGlzIG9uZSwgc28gdGhhdCBbc10gYmVjb21lcyBhblxuICAgICAgICAgICAgICAgICBpbnRlZ2VyLCBhbmQgYWRqdXN0IFtieV0gYWNjb3JkaW5nbHkgdG8ga2VlcCB0aGUgcmVzdWx0IHVuY2hhbmdlZC4gIFdlXG4gICAgICAgICAgICAgICAgIGFsc28ga25vdyB0aGF0IFtzIDw+IDAuMF0gc28gd2UgcmVtb3ZlIGxlYWRpbmcgemVyb3MuICBXZSBtYXkgYmUgd2FzdGluZ1xuICAgICAgICAgICAgICAgICBzb21lIHdvcmsgYmVjYXVzZSB3ZSBtYXkgaGF2ZSB0byBhZGQgdGhlbSBiYWNrIGJlbG93LCBidXQgdGhlIGNvZGUgaXNcbiAgICAgICAgICAgICAgICAgc2ltcGxlciB0aGF0IHdheS4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzLCBieVxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgICAgICgqIFdlIGNhbGN1bGF0ZWQgW2RdIGJlZm9yZSByZW1vdmluZyB0aGUgXCItXCIgc2lnbiwgc28gd2UgbWF5IGhhdmUgdG9cbiAgICAgICAgICAgICAgICAgICAgIGFkanVzdCBpdCBub3cgKilcbiAgICAgICAgICAgICAgICAgIGQgLSBpZiBzaWduZWQgdGhlbiAxIGVsc2UgMFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHN1ZiA9IFN0cmluZy5kcm9wX3ByZWZpeCBzIChkICsgMSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgcHJlZiA9IFN0cmluZy5wcmVmaXggcyBkIGluXG4gICAgICAgICAgICAgICAgbGV0IHMgPSBwcmVmIF4gc3VmIHw+IFN0cmluZy5sc3RyaXAgfmRyb3A6KENoYXIuKCA9ICkgJzAnKSBpblxuICAgICAgICAgICAgICAgIGxldCBieSA9IGJ5IC0gU3RyaW5nLmxlbmd0aCBzdWYgaW5cbiAgICAgICAgICAgICAgICBzLCBieVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIFJlbW92ZSB0cmFpbGluZyB6ZXJvcyB0b28gKilcbiAgICAgICAgICAgIGxldCBzLCBieSA9XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgbGV0IHMgPSBzIHw+IFN0cmluZy5yc3RyaXAgfmRyb3A6KENoYXIuKCA9ICkgJzAnKSBpblxuICAgICAgICAgICAgICBsZXQgYnkgPSBieSArIGxlbiAtIFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBzLCBieVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBieSA9IDBcbiAgICAgICAgICAgICAgdGhlbiBzXG4gICAgICAgICAgICAgIGVsc2UgaWYgYnkgPiAwXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAoKiBDYXNlIDE6IFtzXSBpcyBhbiBpbnRlZ2VyIHdoaWNoIHdlIG5lZWQgdG8gZnVydGhlciBtdWx0aXBseSBieSBhXG4gICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgcG93ZXIgb2YgMTAsIHNvIHdlIGp1c3QgYWRkIDBzIGF0IHRoZSBlbmQuICopXG4gICAgICAgICAgICAgICAgcyBeIFN0cmluZy5tYWtlIGJ5ICcwJ1xuICAgICAgICAgICAgICBlbHNlIGlmIGJ5ID4gLWxlblxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAyOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGRpdmlkZSBieSBhIHBvc2l0aXZlIHBvd2VyXG4gICAgICAgICAgICAgICAgICAgb2YgMTAsIGFuZCBpdCBoYXMgZW5vdWdoIGRpZ2l0cyB0aGF0IHdlIGNhbiBqdXN0IGluc2VydCB0aGUgJy4nIGluXG4gICAgICAgICAgICAgICAgICAgYmV0d2VlbiB0aGVtLiAqKVxuICAgICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBTdHJpbmcuZHJvcF9zdWZmaXggcyAoLWJ5KTsgXCIuXCI7IFN0cmluZy5zdWZmaXggcyAoLWJ5KSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAoKiBDYXNlIDMgKGJ5IDw9IC1sZW4pOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGRpdmlkZSBieSBhXG4gICAgICAgICAgICAgICAgICAgbGFyZ2UgZW5vdWdoIHBvc2l0aXZlIHBvd2VyIG9mIDEwIHRoYXQgd2UgbmVlZCB0byBhZGQgbGVhZGluZyAwcy4gKilcbiAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgXCIwLlwiOyBTdHJpbmcubWFrZSAoLWJ5IC0gbGVuKSAnMCc7IHMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIEZpbmFsbHksIHJlc3RvcmUgdGhlIHNpZ24uICBXZSBjYW4ndCBqdXN0IGRyb3AgdGhlICcrJyBzaWduLCB3ZSBuZWVkIHRvXG4gICAgICAgICAgICAgICByZXN0b3JlIGl0IHRvbywgYmVjYXVzZSBpZiB3ZSBkaWRuJ3QsIHdlIHdvdWxkIHNpbGVudGx5IHBhcnNlIG51bWJlcnMgbGlrZVxuICAgICAgICAgICAgICAgXCIrLTEzJVwiIG9yIFwiKysxN2JwXCIgd2l0aG91dCByYWlzaW5nIGFuIGVycm9yLiAqKVxuICAgICAgICAgICAgaWYgc2lnbmVkIHRoZW4gKGlmIG5lZyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIF4gcyBlbHNlIHMpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzaGlmdF9kZWNpbWFsX3BvaW50IDFcIiA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgWyBcIjNcIlxuICAgICAgICA7IFwiNTEuMlwiXG4gICAgICAgIDsgXCItNTBcIlxuICAgICAgICA7IFwiMzEyNzAwMC4wMDBcIlxuICAgICAgICA7IFwiMS43OUUrMzA4XCJcbiAgICAgICAgOyBcIjQuOTQwNjU2RS0zMjRcIlxuICAgICAgICA7IFwiLTAuMDAwZTEzXCJcbiAgICAgICAgOyBcIjEuNDc2NTFFKzEwXCJcbiAgICAgICAgXVxuICAgICAgICB+ZjooZnVuIHMgLT5cbiAgICAgICAgICBwcmludGYgXCI9PSAlcyA9PVxcblwiIHM7XG4gICAgICAgICAgbGV0IHggPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIExpc3QuaXRlciBbIC00MDsgLTEwOyAtMjsgLTE7IDA7IDE7IDI7IDEwOyA0MCBdIH5mOihmdW4gYnkgLT5cbiAgICAgICAgICAgIGxldCBzMSA9IHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnkgaW5cbiAgICAgICAgICAgIHByaW50ZiBcIiVzXFxuXCIgczE7XG4gICAgICAgICAgICBsZXQgeDEgPSBGbG9hdC5vZl9zdHJpbmcgczEgaW5cbiAgICAgICAgICAgIGxldCB4MiA9IHggKi4gKDEwLiAqKiBmbG9hdCBieSkgaW5cbiAgICAgICAgICAgIGFzc2VydCAoRmxvYXQuKHgxID0geDIgfHwgYWJzICgoeDEgLSB4MikgLyB4MSkgPCAxZS02KSA6IGJvb2wpKTtcbiAgICAgICAgICBwcmludGYgXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblwiKTtcbiAgICAgICgqIE5vdGUgXCItMC4wMDBlMTNcIiBpcyBub3QgYWRqdXN0ZWQgKilcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICAgID09IDMgPT1cbiAgICAgICAgMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzXG4gICAgICAgIDAuMDAwMDAwMDAwM1xuICAgICAgICAwLjAzXG4gICAgICAgIDAuM1xuICAgICAgICAzXG4gICAgICAgIDMwXG4gICAgICAgIDMwMFxuICAgICAgICAzMDAwMDAwMDAwMFxuICAgICAgICAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSA1MS4yID09XG4gICAgICAgIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MTJcbiAgICAgICAgMC4wMDAwMDAwMDUxMlxuICAgICAgICAwLjUxMlxuICAgICAgICA1LjEyXG4gICAgICAgIDUxLjJcbiAgICAgICAgNTEyXG4gICAgICAgIDUxMjBcbiAgICAgICAgNTEyMDAwMDAwMDAwXG4gICAgICAgIDUxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAtNTAgPT1cbiAgICAgICAgLTAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1XG4gICAgICAgIC0wLjAwMDAwMDAwNVxuICAgICAgICAtMC41XG4gICAgICAgIC01XG4gICAgICAgIC01MFxuICAgICAgICAtNTAwXG4gICAgICAgIC01MDAwXG4gICAgICAgIC01MDAwMDAwMDAwMDBcbiAgICAgICAgLTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAzMTI3MDAwLjAwMCA9PVxuICAgICAgICAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMxMjdcbiAgICAgICAgMC4wMDAzMTI3XG4gICAgICAgIDMxMjcwXG4gICAgICAgIDMxMjcwMFxuICAgICAgICAzMTI3MDAwLjAwMFxuICAgICAgICAzMTI3MDAwMFxuICAgICAgICAzMTI3MDAwMDBcbiAgICAgICAgMzEyNzAwMDAwMDAwMDAwMDBcbiAgICAgICAgMzEyNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gMS43OUUrMzA4ID09XG4gICAgICAgIDEuNzlFKzI2OFxuICAgICAgICAxLjc5RSsyOThcbiAgICAgICAgMS43OUUrMzA2XG4gICAgICAgIDEuNzlFKzMwN1xuICAgICAgICAxLjc5RSszMDhcbiAgICAgICAgMS43OUUrMzA5XG4gICAgICAgIDEuNzlFKzMxMFxuICAgICAgICAxLjc5RSszMThcbiAgICAgICAgMS43OUUrMzQ4XG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDQuOTQwNjU2RS0zMjQgPT1cbiAgICAgICAgNC45NDA2NTZFLTM2NFxuICAgICAgICA0Ljk0MDY1NkUtMzM0XG4gICAgICAgIDQuOTQwNjU2RS0zMjZcbiAgICAgICAgNC45NDA2NTZFLTMyNVxuICAgICAgICA0Ljk0MDY1NkUtMzI0XG4gICAgICAgIDQuOTQwNjU2RS0zMjNcbiAgICAgICAgNC45NDA2NTZFLTMyMlxuICAgICAgICA0Ljk0MDY1NkUtMzE0XG4gICAgICAgIDQuOTQwNjU2RS0yODRcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gLTAuMDAwZTEzID09XG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDEuNDc2NTFFKzEwID09XG4gICAgICAgIDEuNDc2NTFFLTMwXG4gICAgICAgIDEuNDc2NTFcbiAgICAgICAgMS40NzY1MUUrOFxuICAgICAgICAxLjQ3NjUxRSs5XG4gICAgICAgIDEuNDc2NTFFKzEwXG4gICAgICAgIDEuNDc2NTFFKzExXG4gICAgICAgIDEuNDc2NTFFKzEyXG4gICAgICAgIDEuNDc2NTFFKzIwXG4gICAgICAgIDEuNDc2NTFFKzUwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHx9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4gICAgICAoKiBMb2dpYyBzdG9sZW4gZnJvbSBsaWIvYmFzZS9zcmMvZmxvYXQubWwsIGJ1dCB0aGlzIGRvZXMgbm90IGNhbGxcbiAgICAgICAgIFt2YWxpZF9mbG9hdF9sZXhlbV0gc28gbm90IGFkZGluZyBhIHRyYWlsaW5nIFwiLlwiIGFuZCBhbHNvLCB3ZSdyZSB1c2luZ1xuICAgICAgICAgdXBwZXJjYXNlICglRyB2cyAlZykgZm9yIGNvbnNpc3RlbmN5IHdpdGggW1BlcmNlbnQuU3RhYmxlLlYyXS4gKilcbiAgICAgIGxldCBmbG9hdF90b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIChmbG9hdF9vZl9zdHJpbmcgeSkgeCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3R1wiIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcnIGZsb2F0X3RvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHMgPSBmbG9hdF90b19zdHJpbmcgeCBpblxuICAgICAgICAgICgqIFVuaW1wb3J0YW50IG5vdGU6IFYzIHNlcmlhbGl6ZXMgbmFuIGFzIFwiTkFOeFwiLCB3aGlsZSBWMiBzZXJpYWxpemVzIGl0IGFzXG4gICAgICAgICAgICAgXCJOQU5icFwiICopXG4gICAgICAgICAgaWYgRmxvYXQuKGlzX25hbiB4IHx8IGlzX2luZiB4IHx8IHhfYWJzID49IDEuKVxuICAgICAgICAgIHRoZW4gcyBeIFwieFwiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICAgIHRoZW4gc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICAgICAgICBlbHNlIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6NCBeIFwiYnBcIilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IHRvX3N0cmluZycgZmxvYXRfdG9fc3RyaW5nIHhcblxuICAgICAgbGV0IHJlYWxseV9vZl9zdHJpbmcgc3RyIGZsb2F0X29mX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcInhcIiB3aXRoXG4gICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6MFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiJVwiIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTooLTIpXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJicFwiIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTooLTQpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJQZXJjZW50Lm9mX3N0cmluZzogbXVzdCBlbmQgaW4geCwgJSUsIG9yIGJwOiAlc1wiIHN0ciAoKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHggPVxuICAgICAgICByZWFsbHlfb2Zfc3RyaW5nIHggKGZ1biBzIH5ieSAtPlxuICAgICAgICAgIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnlcbiAgICAgICAgICB8PiBTZXhwLkF0b21cbiAgICAgICAgICB8PiBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24udF9vZl9zZXhwKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiB4ID1cbiAgICAgICAgcmVhbGx5X29mX3N0cmluZyB4IChmdW4gcyB+YnkgLT5cbiAgICAgICAgICBtYXRjaCBTdHJpbmcubG93ZXJjYXNlIHMgd2l0aFxuICAgICAgICAgIHwgXCJuYW5cIlxuICAgICAgICAgIHwgXCItbmFuXCJcbiAgICAgICAgICB8IFwiK25hblwiXG4gICAgICAgICAgfCBcImluZlwiXG4gICAgICAgICAgfCBcImluZmluaXR5XCJcbiAgICAgICAgICB8IFwiK2luZlwiXG4gICAgICAgICAgfCBcIitpbmZpbml0eVwiXG4gICAgICAgICAgfCBcIi1pbmZcIlxuICAgICAgICAgIHwgXCItaW5maW5pdHlcIiAtPlxuICAgICAgICAgICAgKCogV2UgcGFyc2UgdGhlc2UgbmFuIG9yIGluZiBzdHJpbmdzIGRpcmVjdGx5LCBiZWNhdXNlXG4gICAgICAgICAgICAgICBbc2hpZnRfZGVjaW1hbF9wb2ludF0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtICopXG4gICAgICAgICAgICBGbG9hdC5vZl9zdHJpbmcgc1xuICAgICAgICAgIHwgXyAtPiBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5IHw+IEZsb2F0Lm9mX3N0cmluZylcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA6IHN0cmluZyAtPiB0XG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAoKiBVc2UgYSBkaWZmZXJlbnQgYmluX3NoYXBlX3QgdGhhbiBQZXJjZW50LlN0YWJsZS5WMiwgZXZlbiB0aG91Z2ggdGhlc2UgdHdvIHZlcnNpb25zXG4gICAgICAgaGF2ZSBjb21wYXRpYmxlIGJpbl9pbyBzZXJpYWxpemF0aW9uLiAgU2luY2UgdGhleSBkbyBkaWZmZXIgaW4gc2V4cCBzZXJpYWxpemF0aW9uLFxuICAgICAgIHdlIGVyciBvbiB0aGUgc2lkZSBvZiBzYWZldHkgYW5kIGNoYW5nZSB0aGUgYmluIHNoYXBlIHRvIHdhcm4gdGhhdCBWMyBpcyBub3QgYWx3YXlzXG4gICAgICAgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBWMi4gKilcbiAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjMyZjJhMWUtNmI0My0xMWVkLWIzM2ItYWFjMmE1NjNmMTBhXCIpXG4gICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCBzID0gU3RyaW5nYWJsZS5mbG9hdF90b19zdHJpbmcgeCBpblxuICAgICAgICBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjIgXiBcIiVcIlxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG9mX211bHQgZiA9IGZcbiAgICBsZXQgdG9fbXVsdCB0ID0gdFxuICAgIGxldCBvZl9wZXJjZW50YWdlIGYgPSBmIC8uIDEwMC5cbiAgICBsZXQgdG9fcGVyY2VudGFnZSB0ID0gdCAqLiAxMDAuXG4gICAgbGV0IG9mX2JwIGYgPSBmIC8uIDEwXzAwMC5cbiAgICBsZXQgdG9fYnAgdCA9IHQgKi4gMTBfMDAwLlxuICAgIGxldCBvZl9icF9pbnQgaSA9IG9mX2JwIChGbG9hdC5vZl9pbnQgaSlcbiAgICBsZXQgdG9fYnBfaW50IHQgPSBGbG9hdC50b19pbnQgKHRvX2JwIHQpXG5cbiAgICAoKiBNdWx0aXBseSB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBmbG9hdCBbZl0gYnkgWzEwKipieV0sIGFuZCBjb252ZXJ0IGJhY2sgdG9cbiAgICAgICB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlIGZsb2F0LiAqKVxuICAgIGxldCBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5ID1cbiAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGYpXG4gICAgICB0aGVuIGZcbiAgICAgIGVsc2UgRmxvYXQudG9fc3RyaW5nIGYgfD4gVjMuc2hpZnRfZGVjaW1hbF9wb2ludCB+YnkgfD4gRmxvYXQub2Zfc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBvZl9wZXJjZW50YWdlX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTooLTIpXG4gICAgbGV0IHRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OjJcbiAgICBsZXQgb2ZfYnBfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OigtNClcbiAgICBsZXQgdG9fYnBfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OjRcblxuICAgIGxldCByb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX211bHQgcCB+ZGVjaW1hbF9kaWdpdHMgPSBGbG9hdC5yb3VuZF9kZWNpbWFsIHAgfmRlY2ltYWxfZGlnaXRzXG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMC5cbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfYnAgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAwMC5cbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBFeHBvbmVudCBvZiBpbnRcbiAgICAgICAgfCBFeHBvbmVudF9FIG9mIGludFxuICAgICAgICB8IERlY2ltYWwgb2YgaW50XG4gICAgICAgIHwgT2NhbWxcbiAgICAgICAgfCBDb21wYWN0IG9mIGludFxuICAgICAgICB8IENvbXBhY3RfRSBvZiBpbnRcbiAgICAgICAgfCBIZXggb2YgaW50XG4gICAgICAgIHwgSGV4X0Ugb2YgaW50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgZXhwb25lbnQgfnByZWNpc2lvbiA9IEV4cG9uZW50IHByZWNpc2lvblxuICAgICAgbGV0IGV4cG9uZW50X0UgfnByZWNpc2lvbiA9IEV4cG9uZW50X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgZGVjaW1hbCB+cHJlY2lzaW9uID0gRGVjaW1hbCBwcmVjaXNpb25cbiAgICAgIGxldCBvY2FtbCA9IE9jYW1sXG4gICAgICBsZXQgY29tcGFjdCB+cHJlY2lzaW9uID0gQ29tcGFjdCBwcmVjaXNpb25cbiAgICAgIGxldCBjb21wYWN0X0UgfnByZWNpc2lvbiA9IENvbXBhY3RfRSBwcmVjaXNpb25cbiAgICAgIGxldCBoZXggfnByZWNpc2lvbiA9IEhleCBwcmVjaXNpb25cbiAgICAgIGxldCBoZXhfRSB+cHJlY2lzaW9uID0gSGV4X0UgcHJlY2lzaW9uXG5cbiAgICAgIGxldCBmb3JtYXRfZmxvYXQgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEV4cG9uZW50IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZVwiIHByZWNpc2lvblxuICAgICAgICB8IEV4cG9uZW50X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipFXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRGVjaW1hbCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmZcIiBwcmVjaXNpb25cbiAgICAgICAgfCBPY2FtbCAtPiBzcHJpbnRmIFwiJUZcIlxuICAgICAgICB8IENvbXBhY3QgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipnXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgQ29tcGFjdF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qR1wiIHByZWNpc2lvblxuICAgICAgICB8IEhleCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmhcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXhfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkhcIiBwcmVjaXNpb25cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZm9ybWF0IHggZm9ybWF0ID1cbiAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgZmxvYXQgaW5cbiAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICB0aGVuIFwiMHhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgKCogV0FSTklORyAtIFBMRUFTRSBSRUFEIEJFRk9SRSBFRElUSU5HIFRIRVNFIEZVTkNUSU9OUzpcblxuICAgICAgICAgVGhlIHN0cmluZyBjb252ZXJ0ZXJzIGluIFN0YWJsZS5WMy9WMi9WMSBzaG91bGQgbmV2ZXIgY2hhbmdlLiBJZiB5b3UgYXJlIGNoYW5naW5nXG4gICAgICAgICB0aGUgc2VtYW50aWNzIG9mIGFueXRoaW5nIHRoYXQgYWZmZWN0cyB0aGUgc2V4cCBvciBiaW4taW8gcmVwcmVzZW50YXRpb24gb2ZcbiAgICAgICAgIHZhbHVlcyBvZiB0aGlzIHR5cGUgKHRoaXMgaW5jbHVkZXMgdG9fc3RyaW5nIGFuZCBvZl9zdHJpbmcpIG1ha2UgYSBTdGFibGUuVjQgYW5kXG4gICAgICAgICBtYWtlIHlvdXIgY2hhbmdlcyB0aGVyZS4gVGhhbmtzISAqKVxuICAgICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IHNwcmludGYgXCIlLjZHXCIgZmxvYXQgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMS4pIF4gXCJ4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICAgIGVsc2Ugc3RyaW5nICh4ICouIDEwXzAwMC4pIF4gXCJicFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVjMub2Zfc3RyaW5nXG4gICAgICBsZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mID0gVjMub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA6IHN0cmluZyAtPiB0XG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAoKiBNaW50IGEgdW5pcXVlIFtiaW5fc2hhcGVfdF0gdGhhdCdzIGRpc3RpbmN0IGZyb20gdGhlIGhpZGRlbiB1bmRlcmx5aW5nXG4gICAgICAgcmVwcmVzZW50YXRpb24gb2YgZmxvYXQuICopXG4gICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjFkMWU3NmJjLWVhNGItMTFlYi1hMTZhLWFhNWIyOGQxZjRkN1wiKVxuICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYzLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gVjMuY29tcGFyYXRvclxuICAgICAgZW5kKVxuXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMy5jb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFYyXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IEZsb2F0LmJpbl9zaGFwZV90XG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgYmluX2lvXVxuICAgICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjMuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IFYzLmNvbXBhcmF0b3JcblxuICAgICAgICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdFxuICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24gcmF0aGVyIHRoYW4gcGVyY2VudCBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmdcbiAgICAgICAgICAgICBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlciBzZXJpYWxpemF0aW9uLlxuICAgICAgICAgICopXG4gICAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgICAgICAgIHwgZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uX3JlcHIgPSBzdHJ1Y3RcbiAgICAgIGxldCBub25lID0gRmxvYXQubmFuXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gRmxvYXQuaXNfbmFuIHRcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgPSBpc19zb21lXG4gICAgICBsZXQgc29tZSA9IEZuLmlkXG4gICAgICBsZXQgdW5jaGVja2VkX3ZhbHVlID0gRm4uaWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcbiAgICAgIGxldCBhcHBseV93aXRoX25vbmVfYXNfbmFuID0gKCAqLiApXG4gICAgICBsZXQgb2ZfbXVsdF93aXRoX25hbl9hc19ub25lID0gRm4uaWRcbiAgICAgIGxldCB0b19tdWx0X3dpdGhfbm9uZV9hc19uYW4gPSBGbi5pZFxuXG4gICAgICBsZXQgb2Zfb3B0aW9uIG9wdCA9XG4gICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSB2IC0+IHNvbWUgdlxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgaWYgaXNfc29tZSB0XG4gICAgICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICAgICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiUGVyY2VudC5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5jaGVja2VkX3ZhbHVlIHQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJlOWI1MjAyOC02YjQ1LTExZWQtYTZiNi1hYWMyYTU2M2YxMGFcIilcbiAgICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgT3B0aW9uX3JlcHJcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMy5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYzLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjMudCBPcHRpb24udF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVjIudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImY3YWEwNGU4LWRhM2UtMTFlYy1iNTQ2LWFhNzMyODQzM2I3MFwiKVxuICAgICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSBPcHRpb25fcmVwclxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19vcHRpb24gdCB8PiBPcHRpb24uc2V4cF9vZl90IFYyLnNleHBfb2ZfdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gKE9wdGlvbi50X29mX3NleHAgVjIudF9vZl9zZXhwKSBzZXhwIHw+IG9mX29wdGlvblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFslc2V4cF9ncmFtbWFyOiBWMi50IE9wdGlvbi50XVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBWMlxuXG4gICAgICAgIGxldCBiaW5fc2hhcGVfdCA9IEZsb2F0LmJpbl9zaGFwZV90XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgaXNfemVybyB0ID0gdCA9IDAuXG5sZXQgYXBwbHkgdCBmID0gdCAqLiBmXG5sZXQgc2NhbGUgdCBmID0gdCAqLiBmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgRmxvYXRcblxuICBsZXQgb25lX2h1bmRyZWRfcGVyY2VudCA9IDEuXG4gIGxldCAoIC8vICkgeCB5ID0gb2ZfbXVsdCB4IC8uIG9mX211bHQgeVxuZW5kIDpcbnNpZ1xuICB2YWwgemVybyA6IHRcbiAgdmFsIG9uZV9odW5kcmVkX3BlcmNlbnQgOiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8vICkgOiB0IC0+IHQgLT4gZmxvYXRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBpc19uYW4gOiB0IC0+IGJvb2xcbiAgdmFsIGlzX2luZiA6IHQgLT4gYm9vbFxuICB2YWwgc2lnbl9leG4gOiB0IC0+IFNpZ24udFxuXG4gIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5lbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgPSBGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeVxubGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzID0gU3RyaW5nYWJsZS5vZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgc1xubGV0IHRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiBzZXhwID0gb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIChTZXhwLnRvX3N0cmluZyBzZXhwKVxuXG5tb2R1bGUgQWx3YXlzX3BlcmNlbnRhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZm9ybWF0IHggZm9ybWF0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgKHggKi4gMTAwLikgXiBcIiVcIlxuICBsZXQgdG9fc3RyaW5nIHggPSBzcHJpbnRmIFwiJS42RyUlXCIgKHggKiAxMDAuKVxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmxldCB0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlID0gU3RhYmxlLlYzLnRvX3N0cmluZ1xuXG5tb2R1bGUgQWxtb3N0X3JvdW5kX3RyaXBwYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gU3RhYmxlLlYzLlN0cmluZ2FibGUuKHRvX3N0cmluZycgKGZvcm1hdF9mbG9hdCBcIiUuMTRHXCIpIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IFN0YWJsZS5WMy5TdHJpbmdhYmxlLm9mX3N0cmluZyB4XG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gIGxldCB0X29mX3NleHAgPSBTdGFibGUuVjMudF9vZl9zZXhwXG5cbiAgbW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgIGxldCBvcGVuIFN0YWJsZS5WMyBpblxuICAgICAgbGV0IHMgPSBTdHJpbmdhYmxlLmZvcm1hdF9mbG9hdCBcIiUuMTRHXCIgeCBpblxuICAgICAgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IHJhbmRvbWl6ZSBzcGFuIHJhbmRvbV9zdGF0ZSB+cGVyY2VudCB+c2NhbGUgPVxuICBsZXQgbXVsdCA9IFBlcmNlbnQudG9fbXVsdCBwZXJjZW50IGluXG4gIGlmIEZsb2F0LiggPCApIG11bHQgMC4gfHwgRmxvYXQuKCA+ICkgbXVsdCAxLlxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiU3Bhbi5yYW5kb21pemU6IHBlcmNlbnQgaXMgb3V0IG9mIHJhbmdlIFsweCwgMXhdXCIgKHBlcmNlbnQgOiBQZXJjZW50LnQpXTtcbiAgbGV0IGZhY3RvciA9XG4gICAgUmFuZG9tLlN0YXRlLmZsb2F0X3JhbmdlIHJhbmRvbV9zdGF0ZSAoMS4gLS4gbXVsdCkgKEZsb2F0Lm9uZV91bHAgYFVwICgxLiArLiBtdWx0KSlcbiAgaW5cbiAgc2NhbGUgc3BhbiBmYWN0b3Jcbjs7XG5cbmxldCBmb3JtYXRfZGVjaW1hbCBuIHRlbnRocyB1bml0cyA9XG4gIGFzc2VydCAodGVudGhzID49IDAgJiYgdGVudGhzIDwgMTApO1xuICBpZiBuIDwgMTAgJiYgdGVudGhzIDw+IDBcbiAgdGhlbiBzcHJpbnRmIFwiJWQuJWQlc1wiIG4gdGVudGhzIHVuaXRzXG4gIGVsc2Ugc3ByaW50ZiBcIiVkJXNcIiBuIHVuaXRzXG47O1xuXG5sZXQgc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgPVxuICBsZXQgcyA9XG4gICAgaWYgaHIgPj0gMjRcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIChociAvIDI0KSAoSW50Lm9mX2Zsb2F0IChGbG9hdC5vZl9pbnQgKGhyICUgMjQpIC8uIDIuNCkpIFwiZFwiXG4gICAgZWxzZSBpZiBociA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIGhyIChtaW4gLyA2KSBcImhcIlxuICAgIGVsc2UgaWYgbWluID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbWluIChzZWMgLyA2KSBcIm1cIlxuICAgIGVsc2UgaWYgc2VjID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgc2VjIChtcyAvIDEwMCkgXCJzXCJcbiAgICBlbHNlIGlmIG1zID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbXMgKHVzIC8gMTAwKSBcIm1zXCJcbiAgICBlbHNlIGlmIHVzID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgdXMgKG5zIC8gMTAwKSBcInVzXCJcbiAgICBlbHNlIHNwcmludGYgXCIlaW5zXCIgbnNcbiAgaW5cbiAgbWF0Y2ggKHNpZ24gOiBTaWduLnQpIHdpdGhcbiAgfCBOZWcgLT4gXCItXCIgXiBzXG4gIHwgWmVybyB8IFBvcyAtPiBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBQYXJ0cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzaWduIDogU2lnbi50XG4gICAgICAgIDsgaHIgOiBpbnRcbiAgICAgICAgOyBtaW4gOiBpbnRcbiAgICAgICAgOyBzZWMgOiBpbnRcbiAgICAgICAgOyBtcyA6IGludFxuICAgICAgICA7IHVzIDogaW50XG4gICAgICAgIDsgbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgTGlrZV9hX2Zsb2F0ID0gc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsIHplcm8gOiB0XG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogdFxuICAgICAgdmFsIGFicyA6IHQgLT4gdFxuICAgICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBpbmNsdWRlIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgOiBzaWdcbiAgICAgICAgdmFsIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbmFub3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaW51dGUgOiB0XG4gICAgICAgIHZhbCBob3VyIDogdFxuICAgICAgICB2YWwgZGF5IDogdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCB0b19wYXJ0cyA6IHQgLT4gUGFydHMudFxuICAgICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gICAgICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLlNwYW4gdmVyc2lvbiB0byBzdGFibGUubWwgKilcbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG4gICAgICBlbmQgOlxuICAgICAgICBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgICgqIHRoaXMgcHJldmVudHMgYW55IHdvcnJ5IGFib3V0IGhhdmluZyB0aGVzZSB2ZXJ5IGNvbW1vbiBuYW1lcyByZWRlZmluZWQgYmVsb3cgYW5kXG4gICAgICAgICBtYWtlcyB0aGVpciB1c2FnZSB3aXRoaW4gdGhpcyBtb2R1bGUgc2FmZXIuICBDb25zdGFudCBpcyBpbmNsdWRlZCBhdCB0aGUgdmVyeVxuICAgICAgICAgYm90dG9tIHRvIHJlLWV4cG9ydCB0aGVzZSBjb25zdGFudHMgaW4gYSBtb3JlIGNvbnZlbmllbnQgd2F5ICopXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTlcbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kID0gMUU2XG4gICAgICAgIGxldCBtaWxsaXNlY29uZHNfcGVyX3NlY29uZCA9IDFFM1xuXG4gICAgICAgICgqIHNwYW5zIGFyZSBzdG9yZWQgYXMgYSBmbG9hdCBpbiBzZWNvbmRzICopXG4gICAgICAgIGxldCBuYW5vc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWNyb3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgc2Vjb25kID0gb2ZfZmxvYXQgMS5cbiAgICAgICAgbGV0IG1pbnV0ZSA9IG9mX2Zsb2F0IDYwLlxuICAgICAgICBsZXQgaG91ciA9IG9mX2Zsb2F0ICg2MC4gKi4gNjAuKVxuICAgICAgICBsZXQgZGF5ID0gb2ZfZmxvYXQgKDI0LiAqLiA2MC4gKi4gNjAuKVxuICAgICAgZW5kXG5cblxuICAgICAgbGV0IHRvX3BhcnRzIHQgOiBQYXJ0cy50ID1cbiAgICAgICAgbGV0IHNpZ24gPSBGbG9hdC5zaWduX2V4biB0IGluXG4gICAgICAgIGxldCB0ID0gYWJzIHQgaW5cbiAgICAgICAgbGV0IGludGVncmFsID0gRmxvYXQucm91bmRfZG93biB0IGluXG4gICAgICAgIGxldCBmcmFjdGlvbmFsID0gdCAtLiBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgc2Vjb25kcyA9IEZsb2F0Lmlyb3VuZF9kb3duX2V4biBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgbmFub3NlY29uZHMgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4gKGZyYWN0aW9uYWwgKi4gMUU5KSBpblxuICAgICAgICBsZXQgc2Vjb25kcywgbmFub3NlY29uZHMgPVxuICAgICAgICAgIGlmIEludC5lcXVhbCBuYW5vc2Vjb25kcyAxXzAwMF8wMDBfMDAwXG4gICAgICAgICAgdGhlbiBJbnQuc3VjYyBzZWNvbmRzLCAwXG4gICAgICAgICAgZWxzZSBzZWNvbmRzLCBuYW5vc2Vjb25kc1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2VjID0gc2Vjb25kcyBtb2QgNjAgaW5cbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWNvbmRzIC8gNjAgaW5cbiAgICAgICAgbGV0IG1pbiA9IG1pbnV0ZXMgbW9kIDYwIGluXG4gICAgICAgIGxldCBociA9IG1pbnV0ZXMgLyA2MCBpblxuICAgICAgICBsZXQgbnMgPSBuYW5vc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWljcm9zZWNvbmRzID0gbmFub3NlY29uZHMgLyAxMDAwIGluXG4gICAgICAgIGxldCB1cyA9IG1pY3Jvc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzID0gbWljcm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgbXMgPSBtaWxsaXNlY29uZHMgaW5cbiAgICAgICAgeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCAoIC8gKSB0IGYgPSBULm9mX2Zsb2F0ICgodCA6IFQudCA6PiBmbG9hdCkgLy4gZilcbiAgICBsZXQgKCAvLyApIChmIDogVC50KSAodCA6IFQudCkgPSAoZiA6PiBmbG9hdCkgLy4gKHQgOj4gZmxvYXQpXG5cbiAgICAoKiBNdWx0aXBseWluZyBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIGRpdmlzaW9uIGJ5IDFFLTMgKilcbiAgICBsZXQgdG9fbnMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b191cyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19tcyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19zZWMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpXG4gICAgbGV0IHRvX21pbiB4ID0geCAvLyBULkNvbnN0YW50Lm1pbnV0ZVxuICAgIGxldCB0b19ociB4ID0geCAvLyBULkNvbnN0YW50LmhvdXJcbiAgICBsZXQgdG9fZGF5IHggPSB4IC8vIFQuQ29uc3RhbnQuZGF5XG4gICAgbGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4geCA9IEZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuICh0b19zZWMgeClcbiAgICBsZXQgKCAqKiApIGYgKHQgOiBULnQpID0gVC5vZl9mbG9hdCAoZiAqLiAodCA6PiBmbG9hdCkpXG5cbiAgICAoKiBEaXZpc2lvbiBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIG11bHRpcGx5aW5nIGJ5IDFFLTMgKilcbiAgICBsZXQgb2ZfbnMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5uYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl91cyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9tcyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9zZWMgeCA9IFQub2ZfZmxvYXQgeFxuICAgIGxldCBvZl9pbnQzMl9zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50MzIudG9fZmxvYXQgc2VjKVxuXG4gICAgKCogTm90ZSB0aGF0IFtJbnQ2My50b19mbG9hdF0gY2FuIGxvc2UgcHJlY2lzaW9uLCBidXQgb25seSBvbiBpbnB1dHMgbGFyZ2UgZW5vdWdoIHRoYXRcbiAgICAgICBbb2Zfc2VjXSBpbiBlaXRoZXIgdGhlIFRpbWVfbnMgb3IgVGltZV9mbG9hdCBjYXNlIHdvdWxkIGxvc2UgcHJlY2lzaW9uIChvciBqdXN0IGJlXG4gICAgICAgcGxhaW4gb3V0IG9mIGJvdW5kcykgYW55d2F5LiAqKVxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50NjMudG9fZmxvYXQgc2VjKVxuICAgIGxldCBvZl9taW4geCA9IHggKiogVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgb2ZfaHIgeCA9IHggKiogVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IG9mX2RheSB4ID0geCAqKiBULkNvbnN0YW50LmRheVxuICAgIGxldCBvZl9pbnRfbnMgeCA9IG9mX25zIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X3VzIHggPSBvZl91cyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9tcyB4ID0gb2ZfbXMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfc2VjIHggPSBvZl9zZWMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfbWluIHggPSBvZl9taW4gKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfaHIgeCA9IG9mX2hyIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X2RheSB4ID0gb2ZfZGF5IChGbG9hdC5vZl9pbnQgeClcblxuICAgIGxldCBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0XG4gICAgICB8IFNlY29uZCAtPiB0b19zZWMgdFxuICAgICAgfCBNaW51dGUgLT4gdG9fbWluIHRcbiAgICAgIHwgSG91ciAtPiB0b19ociB0XG4gICAgICB8IERheSAtPiB0b19kYXkgdFxuICAgIDs7XG5cbiAgICBsZXQgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBvZl9ucyBmbG9hdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBvZl91cyBmbG9hdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBvZl9tcyBmbG9hdFxuICAgICAgfCBTZWNvbmQgLT4gb2Zfc2VjIGZsb2F0XG4gICAgICB8IE1pbnV0ZSAtPiBvZl9taW4gZmxvYXRcbiAgICAgIHwgSG91ciAtPiBvZl9ociBmbG9hdFxuICAgICAgfCBEYXkgLT4gb2ZfZGF5IGZsb2F0XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICA/KHNpZ24gPSBTaWduLlBvcylcbiAgICAgICAgICA/KGRheSA9IDApXG4gICAgICAgICAgPyhociA9IDApXG4gICAgICAgICAgPyhtaW4gPSAwKVxuICAgICAgICAgID8oc2VjID0gMClcbiAgICAgICAgICA/KG1zID0gMClcbiAgICAgICAgICA/KHVzID0gMClcbiAgICAgICAgICA/KG5zID0gMClcbiAgICAgICAgICAoKVxuICAgICAgPVxuICAgICAgbGV0ICggKyApID0gVC4oICsgKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICBvZl9kYXkgKEZsb2F0Lm9mX2ludCBkYXkpXG4gICAgICAgICsgb2ZfaHIgKEZsb2F0Lm9mX2ludCBocilcbiAgICAgICAgKyBvZl9taW4gKEZsb2F0Lm9mX2ludCBtaW4pXG4gICAgICAgICsgb2Zfc2VjIChGbG9hdC5vZl9pbnQgc2VjKVxuICAgICAgICArIG9mX21zIChGbG9hdC5vZl9pbnQgbXMpXG4gICAgICAgICsgb2ZfdXMgKEZsb2F0Lm9mX2ludCB1cylcbiAgICAgICAgKyBvZl9ucyAoRmxvYXQub2ZfaW50IG5zKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBOZWcgLT4gVC4oIC0gKSBULnplcm8gdFxuICAgICAgfCBQb3MgfCBaZXJvIC0+IHRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb25zdGFudFxuXG4gICAgbGV0IHJhbmRvbWl6ZSA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgfnBlcmNlbnQgPVxuICAgICAgU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IHN0YXRlIH5wZXJjZW50IH5zY2FsZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc2hvcnRfc3RyaW5nIHQgPVxuICAgICAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gICAgICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgIGxldCBvZl9zdHJpbmdfdjFfdjIgKHMgOiBzdHJpbmcpIH5pc192MiA9XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcImVtcHR5IHN0cmluZ1wiXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBmbG9hdCBuID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5kcm9wX3N1ZmZpeCBzIG4gd2l0aFxuICAgICAgICAgICAgfCBcIlwiIC0+IGZhaWx3aXRoIFwibm8gbnVtYmVyIGdpdmVuXCJcbiAgICAgICAgICAgIHwgcyAtPlxuICAgICAgICAgICAgICBsZXQgdiA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgICAgICAgICAgIFZhbGlkYXRlLm1heWJlX3JhaXNlIChGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeSB2KTtcbiAgICAgICAgICAgICAgdlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgIChtYXRjaCBzLltJbnQuKCAtICkgbGVuIDFdIHdpdGhcbiAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICBpZiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbSdcbiAgICAgICAgICAgICB0aGVuIG9mX21zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ3UnXG4gICAgICAgICAgICAgdGhlbiBvZl91cyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICduJ1xuICAgICAgICAgICAgIHRoZW4gb2ZfbnMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBULm9mX2Zsb2F0IChmbG9hdCAxKVxuICAgICAgICAgICB8ICdtJyAtPiBvZl9taW4gKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ2gnIC0+IG9mX2hyIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdkJyAtPiBvZl9kYXkgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIGlmIGlzX3YyXG4gICAgICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlRpbWUgc3BhbnMgbXVzdCBlbmQgaW4gbnMsIHVzLCBtcywgcywgbSwgaCwgb3IgZC5cIlxuICAgICAgICAgICAgIGVsc2UgZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG1zLCBzLCBtLCBoLCBvciBkLlwiKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmIFwiU3Bhbi5vZl9zdHJpbmcgY291bGQgbm90IHBhcnNlICclcyc6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cCA9IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwXG5cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwIG9mIFNleHAudCAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGV4Y2VwdGlvbiBUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgbGV0IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MiA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmdfdjFfdjIgeCB+aXNfdjIgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cCAoc2V4cCwgZXhuKSkgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cF9leHBlY3RlZF9hdG9tX2J1dF9nb3Qgc2V4cCkgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgc3RyaW5nIH5pc192MiBzdWZmaXggZmxvYXQgPVxuICAgICAgaWYgaXNfdjJcbiAgICAgICgqIFRoaXMgaXMgdGhlIHNhbWUgZmxvYXQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdXNlZCBpbiBbRmxvYXQuc2V4cF9vZl90XS4gIEl0J3MgbGlrZVxuICAgICAgICAgW0Zsb2F0LnRvX3N0cmluZ10sIGJ1dCBtYXkgbGVhdmUgb2ZmIHRyYWlsaW5nIHBlcmlvZC4gKilcbiAgICAgIHRoZW4gIVNleHBsaWIuQ29udi5kZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBmbG9hdCBeIHN1ZmZpeFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJWclc1wiIGZsb2F0IHN1ZmZpeFxuICAgIDs7XG5cbiAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGFueSBtYXRlcmlhbCB3YXksIG1ha2Ugc3VyZVxuICAgICAgIHlvdSB1cGRhdGUgU3RhYmxlIGFwcHJvcHJpYXRlbHkuICopXG4gICAgKCogSSdkIGxpa2UgaXQgdG8gYmUgdGhlIGNhc2UgdGhhdCB5b3UgY291bGQgbmV2ZXIgY29uc3RydWN0IGFuIGluZmluaXRlIHNwYW4sIGJ1dCBJXG4gICAgICAgY2FuJ3QgdGhpbmsgb2YgYSBnb29kIHdheSB0byBlbmZvcmNlIGl0LiAgU28gdGhpcyB0b19zdHJpbmcgZnVuY3Rpb24gY2FuIHByb2R1Y2VcbiAgICAgICBzdHJpbmdzIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGV5IGFyZSBmZWQgdG8gb2Zfc3RyaW5nICopXG4gICAgbGV0IHRvX3N0cmluZ192MV92MiAodCA6IFQudCkgfmlzX3YyID1cbiAgICAgICgqIHRoaXMgaXMgYSBzYWQgYnJva2VuIGFic3RyYWN0aW9uLi4uICopXG4gICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgKHQgOj4gZmxvYXQpIHdpdGhcbiAgICAgIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gXCIwc1wiXG4gICAgICB8IEMuSW5maW5pdGUgLT4gaWYgVC4oID4gKSB0IFQuemVybyB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICAgICAgfCBDLk5hbiAtPiBcIm5hblwiXG4gICAgICB8IEMuTm9ybWFsIC0+XG4gICAgICAgIGxldCAoIDwgKSA9IFQuKCA8ICkgaW5cbiAgICAgICAgbGV0IGFic190ID0gVC5vZl9mbG9hdCAoRmxvYXQuYWJzICh0IDo+IGZsb2F0KSkgaW5cbiAgICAgICAgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm5zXCIgKHRvX25zIHQpXG4gICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pbGxpc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInVzXCIgKHRvX3VzIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LnNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtc1wiICh0b19tcyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5taW51dGVcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwic1wiICh0b19zZWMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuaG91clxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtXCIgKHRvX21pbiB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5kYXlcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwiaFwiICh0b19ociB0KVxuICAgICAgICBlbHNlIHN0cmluZyB+aXNfdjIgXCJkXCIgKHRvX2RheSB0KVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyID0gU2V4cC5BdG9tICh0b19zdHJpbmdfdjFfdjIgdCB+aXNfdjIpXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjI6dHJ1ZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192Mjp0cnVlXG4gIGVuZFxuXG4gIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVjFcblxuICAgIGxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgIGxldCBvcGVuIFQgaW5cbiAgICAgIGxldCBvcGVuIENvbnN0YW50IGluXG4gICAgICBsZXQgYWJzX3QgPSBULmFicyB0IGluXG4gICAgICBpZiBhYnNfdCA+PSBkYXlcbiAgICAgIHRoZW4gRGF5XG4gICAgICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgICAgIHRoZW4gSG91clxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgICAgIHRoZW4gTWludXRlXG4gICAgICBlbHNlIGlmIGFic190ID49IHNlY29uZFxuICAgICAgdGhlbiBTZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgIGVsc2UgTmFub3NlY29uZFxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgLT4gVC50ID1cbiAgICAgIGxldCBvcGVuIFQuQ29uc3RhbnQgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaWxsaXNlY29uZFxuICAgICAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gICAgICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgICAgIHwgSG91ciAtPiBob3VyXG4gICAgICB8IERheSAtPiBkYXlcbiAgICA7O1xuXG4gICAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IFwibnNcIlxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBcInVzXCJcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gXCJtc1wiXG4gICAgICB8IFNlY29uZCAtPiBcInNcIlxuICAgICAgfCBNaW51dGUgLT4gXCJtXCJcbiAgICAgIHwgSG91ciAtPiBcImhcIlxuICAgICAgfCBEYXkgLT4gXCJkXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBcIlRpbWUuU3Bhbi5vZl9zdHJpbmc6IFwiIF4gcmVhc29uIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIG1lc3NhZ2Ugc3RyaW5nXVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCB1bml0X29mX3RpbWVfbGlzdCA9XG4gICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZV9saXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IHN1ZmZpeFwiXG4gICAgICAgIHwgdW5pdF9vZl90aW1lIDo6IHJlc3QgLT5cbiAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHN0cmluZyB+cG9zOmluZGV4IH5zdWJzdHJpbmc6c3VmZml4XG4gICAgICAgICAgdGhlbiB1bml0X29mX3RpbWVcbiAgICAgICAgICBlbHNlIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IHJlc3RcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleCA9XG4gICAgICAgICgqIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBcIm1zXCIgY29tZXMgYmVmb3JlIFwibVwiIGluIFtVbml0X29mX3RpbWUuYWxsXSB0byBnZXQgYVxuICAgICAgICAgICBjb3JyZWN0IG1hdGNoIG9uIG1pbGxpc2Vjb25kIHRpbWVzdGFtcHMuIFRoaXMgYXNzdW1wdGlvbiBpcyBkZW1vbnN0cmF0ZWQgaW4gdGhlXG4gICAgICAgICAgIGV4cGVjdCB0ZXN0IGJlbG93LiAqKVxuICAgICAgICBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCBVbml0X29mX3RpbWUuYWxsXG4gICAgICA7O1xuXG4gICAgICAoKiBXZSB2YWxpZGF0ZSBtYWduaXR1ZGUgc3RyaW5ncyBzbyB0aGF0IHdlIGtub3cgd2hlcmUgdGhlIHVuaXQtb2YtdGltZSBzdWZmaXhcbiAgICAgICAgIGJlZ2lucywgYW5kIHNvIHRoYXQgb25seSBzZW5zaWJsZSBzdHJpbmdzIGFyZSBhbGxvd2VkLiBXZSBkbyBub3Qgd2FudCB0byBiZSBhc1xuICAgICAgICAgcGVybWlzc2l2ZSBhcyBbRmxvYXQub2Zfc3RyaW5nXTsgZm9yIGV4YW1wbGUsIGhleGFkZWNpbWFsIHNwYW4gbWFnbml0dWRlcyBhcmUgbm90XG4gICAgICAgICBhbGxvd2VkLiBBZnRlciB2YWxpZGF0aW9uLCB3ZSBzdGlsbCB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gdG8gcHJvZHVjZSB0aGUgYWN0dWFsXG4gICAgICAgICB2YWx1ZS4gKilcbiAgICAgIG1vZHVsZSBGbG9hdF9wYXJzZXIgPSBzdHJ1Y3RcbiAgICAgICAgKCogW0luX2RlY2ltYWxfaGF2ZV9kaWdpdF0gaW5jbHVkZXMgaGF2aW5nIGEgZGlnaXQgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICB0eXBlIHN0YXRlID1cbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG5cbiAgICAgICAgdHlwZSB0b2tlbiA9XG4gICAgICAgICAgfCBEaWdpdFxuICAgICAgICAgIHwgUG9pbnRcbiAgICAgICAgICB8IFVuZGVyXG4gICAgICAgICAgfCBTaWduXG4gICAgICAgICAgfCBFeHB0XG5cbiAgICAgICAgbGV0IHN0YXRlX2lzX2ZpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCAtPiBmYWxzZVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b2tlbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gU29tZSBEaWdpdFxuICAgICAgICAgIHwgJy4nIC0+IFNvbWUgUG9pbnRcbiAgICAgICAgICB8ICdfJyAtPiBTb21lIFVuZGVyXG4gICAgICAgICAgfCAnLScgfCAnKycgLT4gU29tZSBTaWduXG4gICAgICAgICAgfCAnRScgfCAnZScgLT4gU29tZSBFeHB0XG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW52YWxpZF9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IG1hZ25pdHVkZVwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGUgPVxuICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBsZW5cbiAgICAgICAgICB0aGVuIGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHRva2VuX29mX2NoYXIgc3RyaW5nLltpbmRleF0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgIHwgU29tZSB0b2tlbiAtPlxuICAgICAgICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHN0YXRlLCB0b2tlbiB3aXRoXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgU2lnblxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgUG9pbnQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFNpZ24gLT5cbiAgICAgICAgICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBEaWdpdCAtPiBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFNpZ24gLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleDooaW5kZXggKyAxKSB+bGVuIH5zdGF0ZSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZmluZF9pbmRleF9hZnRlcl9mbG9hdCBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleCB+bGVuIH5zdGF0ZTpJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgcmVjIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleCB+bGVuID1cbiAgICAgICAgaWYgSW50LmVxdWFsIGluZGV4IGxlblxuICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc3VmZml4X2luZGV4ID0gRmxvYXRfcGFyc2VyLmZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHBhcnNlX3N1ZmZpeCBzdHJpbmcgfmluZGV4OnN1ZmZpeF9pbmRleCBpblxuICAgICAgICAgIGxldCB1bnRpbF9pbmRleCA9XG4gICAgICAgICAgICBJbnQuKCArICkgc3VmZml4X2luZGV4IChTdHJpbmcubGVuZ3RoIChzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID1cbiAgICAgICAgICAgIFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6aW5kZXggfmxlbjooSW50LiggLSApIHN1ZmZpeF9pbmRleCBpbmRleClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmbG9hdCA9IEZsb2F0Lm9mX3N0cmluZyBmbG9hdF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gbWFnbml0dWRlICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleDp1bnRpbF9pbmRleCB+bGVuKVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX21hZ25pdHVkZSBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZTpULnplcm8gfmluZGV4IH5sZW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbWF0Y2ggc3RyaW5nIHdpdGhcbiAgICAgICAgfCBcIk5BTnNcIiAtPiBvZl9zZWMgRmxvYXQubmFuXG4gICAgICAgIHwgXCItSU5Gc1wiIC0+IG9mX3NlYyBGbG9hdC5uZWdfaW5maW5pdHlcbiAgICAgICAgfCBcIklORnNcIiAtPiBvZl9zZWMgRmxvYXQuaW5maW5pdHlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbmVnYXRpdmUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHN0cmluZy5bMF0gd2l0aFxuICAgICAgICAgICAgfCAnLScgLT4gdHJ1ZSwgMVxuICAgICAgICAgICAgfCAnKycgLT4gZmFsc2UsIDFcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSwgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgaW5kZXggPj0gbGVuIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBpbnB1dFwiO1xuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgaWYgbmVnYXRpdmUgdGhlbiBULm5lZyBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuXG4gICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgZmxvYXQgPVxuICAgICAgICBsZXQgc3RyaW5nID0gRmxvYXQudG9fc3RyaW5nIGZsb2F0IGluXG4gICAgICAgIGxldCBzdWZmaXggPSBcIi5cIiBpblxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHN0cmluZyB+c3VmZml4XG4gICAgICAgIHRoZW4gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICBlbHNlIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgKCogQXMgd2UgYnVpbGQgdXAgYSBzdHJpbmcsIHdlIGtlZXAgYSBydW5uaW5nIHN1bSBvZiB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHJlYWRcbiAgICAgICAgIGJhY2sgaW4sIHNvIHRoYXQgd2UgY2FuIGNvbXB1dGUgdGhlIHJlbWFpbmRlciB0aGF0IG5lZWRzIHRvIGJlIGdlbmVyYXRlZC4gKilcbiAgICAgIGxldCBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSA9XG4gICAgICAgIHN1bV90ICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIG1hZ25pdHVkZSB1bml0X29mX3RpbWVcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBzb21lIHVuaXRzICh2ZXJ5IGxhcmdlIG51bWJlcnMgb2YgZGF5cywgb3Igc2Vjb25kcyBhbmQgc21hbGxlcikgd2UganVzdFxuICAgICAgICAgcmVuZGVyIGEgZmxvYXQgZGlyZWN0bHksIHdpdGggYSBmaXggZm9yIHJvdW5kb2ZmIGVycm9yLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lID1cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9IGRpdmlkZV9ieV91bml0X29mX3RpbWUgYWJzX3QgdW5pdF9vZl90aW1lIGluXG4gICAgICAgIGxldCBzdW1fdCA9IHN1bSB+c3VtX3Q6emVybyB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgaWYgc3VtX3QgPSBhYnNfdFxuICAgICAgICB0aGVuXG4gICAgICAgICAgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBtYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgICAgaWYgc3VtX3QgPCBhYnNfdFxuICAgICAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgICAgIGVsc2UgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSAocHJldiBhYnNfdCkgdW5pdF9vZl90aW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCBmaXh1cF9tYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHJlbV90IGZpeHVwX3VuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICgqIFtyZW1fdF0gaXMgYXQgVUxQIHNpemUgb2YgW2Fic190XSwgaXQgbmVlZHMganVzdCBvbmUgYml0IG9mIHByZWNpc2lvbiAqKVxuICAgICAgICAgIF4gc3ByaW50ZiBcIiUuMWdcIiBmaXh1cF9tYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgZml4dXBfdW5pdF9vZl90aW1lKVxuICAgICAgOztcblxuICAgICAgKCogRm9yIG5vbi1kZWNpbWFsIHVuaXRzIChtaW51dGVzIGFuZCBncmVhdGVyKSwgd2UgcmVuZGVyIGFuIGludGVnZXIgbWFnbml0dWRlLCBhbmRcbiAgICAgICAgIHJldHVybiB0aGF0IHdpdGggdGhlIHJ1bm5pbmcgc3VtIHNvIHRoZSByZW1haW5kZXIgY2FuIGJlIHJlbmRlcmVkIGF0IGEgc21hbGxlclxuICAgICAgICAgdW5pdC4gKilcbiAgICAgIGxldCB0b19pbnRfc3RyaW5nX2FuZF9zdW0gdW5pdF9vZl90aW1lIH5hYnNfdCB+c3VtX3QgPVxuICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICgqIFdlIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgbXVsdGlwbGUgb2YgW3VuaXRfb2ZfdGltZV0gdGhhdCBuZWVkcyB0byBiZVxuICAgICAgICAgICBhZGRlZCB0byBbc3VtX3RdLiBEdWUgdG8gcm91bmRpbmcsIHRoaXMgY2FuIGJlIG9mZiBieSBvbmUgKHdlJ3ZlIG5ldmVyIHNlZW4gYVxuICAgICAgICAgICBjYXNlIG9mZiBieSB0d28gb3IgbW9yZSksIHNvIHdlIHJlLWNvbXB1dGUgdGhlIHJlbWFpbmRlciBhbmQgY29ycmVjdCBpZlxuICAgICAgICAgICBuZWNlc3NhcnkuICopXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBGbG9hdC5yb3VuZF9kb3duIChyZW1fdCAvLyB1bml0X3NwYW4pIGluXG4gICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9XG4gICAgICAgICAgaWYgbmV3X3JlbV90ID0gemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgZWxzZSBpZiBuZXdfcmVtX3QgPCB6ZXJvXG4gICAgICAgICAgdGhlbiBtYWduaXR1ZGUgLS4gMS5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0X21hZ25pdHVkZSA9IG1hZ25pdHVkZSArLiAxLiBpblxuICAgICAgICAgICAgbGV0IG5leHRfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZTpuZXh0X21hZ25pdHVkZSBpblxuICAgICAgICAgICAgbGV0IG5leHRfcmVtX3QgPSBhYnNfdCAtIG5leHRfc3VtX3QgaW5cbiAgICAgICAgICAgIGlmIG5leHRfcmVtX3QgPCB6ZXJvIHRoZW4gbWFnbml0dWRlIGVsc2UgbmV4dF9tYWduaXR1ZGUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIEZsb2F0LiggPD0gKSBtYWduaXR1ZGUgMC5cbiAgICAgICAgdGhlbiBcIlwiLCBzdW1fdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICAgIEludDYzLnRvX3N0cmluZyAoSW50NjMub2ZfZmxvYXQgbWFnbml0dWRlKVxuICAgICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgc3RyaW5nLCBuZXdfc3VtX3QpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgdCA9IEZsb2F0LmxvZzEwICh0b19zZWMgdClcblxuICAgICAgKCogVGhlIGZpbmFsIHNlY29uZHMtb3Itc21hbGxlciB1bml0IG5lZWRzIHRvIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggZGlnaXRzIHRvXG4gICAgICAgICByb3VuZC10cmlwIHRoZSB3aG9sZSBzcGFuICh3aGljaCBpcyBtaW51dGVzIG9yIGdyZWF0ZXIpOyB0aGlzIGNhbiBiZVxuICAgICAgICAgc2lnbmlmaWNhbnRseSBmZXdlciBkaWdpdHMgdGhhbiB3b3VsZCBiZSBuZWVkZWQgZm9yIHRoZSBzZWNvbmRzLW9yLXNtYWxsZXJcbiAgICAgICAgIHJlbWFpbmRlciBpdHNlbGYuICopXG4gICAgICBsZXQgdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5zdW1fdCB+YWJzX3QgPVxuICAgICAgICBpZiBzdW1fdCA+PSBhYnNfdFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgcmVtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSByZW1fdCAvLyB1bml0X3NwYW4gaW5cbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgICBpZiBhYnMgcmVtX3QgPD0gYWJzIG5ld19yZW1fdFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCA9XG4gICAgICAgICAgICAgIEZsb2F0Lmlyb3VuZF9kb3duX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgcmVtX3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGhhbGZfdWxwID0gKGFic190IC0gcHJldiBhYnNfdCkgLyAyLiBpblxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdCA9XG4gICAgICAgICAgICAgICgqIFRoaXMgd29ya3Mgb3V0IHRvIHJvdW5kaW5nIGRvd24sIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBleGFjdCBpbnRlZ2VycyxcbiAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGRlY3JlbWVudGVkLiBUaGlzIG1ha2VzIHN1cmUgd2UgYWx3YXlzIHN0b3AgYXQgYSBkaWdpdCB3aXRoXG4gICAgICAgICAgICAgICAgIHN0cmljdGx5IG1vcmUgcHJlY2lzaW9uIHRoYW4gaGFsZiB0aGUgVUxQLiAqKVxuICAgICAgICAgICAgICBJbnQucHJlZCAoRmxvYXQuaXJvdW5kX3VwX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgaGFsZl91bHApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgMSArIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCAtIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgICAgc3ByaW50ZiBcIiUuKmdcIiBudW1iZXJfb2ZfZGlnaXRzIG1hZ25pdHVkZSBeIHN1ZmZpeCkpXG4gICAgICA7O1xuXG4gICAgICAoKiBUaGlzIGhlbHBlciBhdm9pZHMgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiwgYmVjYXVzZSBmb3Igb3VyIHVzZSBiZWxvdywgaXQgaXNcbiAgICAgICAgIGNvbW1vbiB0byBoYXZlIGVpdGhlciBvciBib3RoIGFyZ3VtZW50cyBiZSBlbXB0eS4gQ3VycmVudGx5ICgyMDE4LTAyKSwgdGhlXG4gICAgICAgICBidWlsdC1pbiBbXl0gYWxsb2NhdGVzIGV2ZW4gd2hlbiBhcHBlbmRpbmcgdG8gYW4gZW1wdHkgc3RyaW5nLiAqKVxuICAgICAgbGV0ICggXj8gKSB4IHkgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgeCB0aGVuIHkgZWxzZSBpZiBTdHJpbmcuaXNfZW1wdHkgeSB0aGVuIHggZWxzZSB4IF4geVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IGZsb2F0ID0gdG9fZmxvYXQgdCBpblxuICAgICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBmbG9hdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICgqIFdlIHByaW50IHNwZWNpZmljIHNwZWNpYWwgc3RyaW5ncyBmb3Igbm9uLWZpbml0ZSBmbG9hdHMgKilcbiAgICAgICAgICAgIEZsb2F0LmlzX25hbiBmbG9hdFxuICAgICAgICAgIHRoZW4gXCJOQU5zXCJcbiAgICAgICAgICBlbHNlIGlmIEZsb2F0LmlzX25lZ2F0aXZlIGZsb2F0XG4gICAgICAgICAgdGhlbiBcIi1JTkZzXCJcbiAgICAgICAgICBlbHNlIFwiSU5Gc1wiXG4gICAgICAgIGVsc2UgaWYgdCA9IHplcm9cbiAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHRvX3VuaXRfb2ZfdGltZSB0IGluXG4gICAgICAgICAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgICAgICAgICBsZXQgc2lnbiA9IGlmIHQgPCB6ZXJvIHRoZW4gXCItXCIgZWxzZSBcIlwiIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZV9zdHJpbmcgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdF9vZl90aW1lIHdpdGhcbiAgICAgICAgICAgICgqIFdlIGNhbiB1c2Ugbm9ybWFsIGZsb2F0IG5vdGF0aW9uIGZvciBzZWNvbmRzIGFuZCBzdWItc2Vjb25kIHVuaXRzLCB0aGV5IGFyZVxuICAgICAgICAgICAgICAgcmVhZGFibGUgd2l0aCBhIGRlY2ltYWwgcG9pbnQuICopXG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgfCBNaWNyb3NlY29uZCB8IE1pbGxpc2Vjb25kIHwgU2Vjb25kIC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOk5hbm9zZWNvbmRcbiAgICAgICAgICAgICgqIEZvciBsYXJnZSBlbm91Z2ggdmFsdWVzIHRoYXQgdGhlIFVMUCBpcyBhIGRheSBvciBtb3JlLCB3ZSBjYW4gdXNlIGZsb2F0XG4gICAgICAgICAgICAgICBub3RhdGlvbiBiZWNhdXNlIHdlIGFyZSBleHByZXNzaW5nIGEgc2luZ2xlLCB2ZXJ5IGxhcmdlIGludGVnZXIuICopXG4gICAgICAgICAgICB8IERheSB3aGVuIG5leHQgYWJzX3QgLSBhYnNfdCA+PSBkYXkgLT5cbiAgICAgICAgICAgICAgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWU6RGF5XG4gICAgICAgICAgICAoKiBGb3IgZXZlcnl0aGluZyBpbiBiZXR3ZWVuLCB3ZSBuZWVkIHRvIHVzZSBpbnRlZ2VyIHVuaXRzIG9mIGRheXMsIGhvdXJzLFxuICAgICAgICAgICAgICAgYW5kL29yIG1pbnV0ZXMsIGJlY2F1c2UgdGhvc2UgdW5pdHMgYXJlIG5vdCByZWFkYWJsZSBhcyBkZWNpbWFscywgYW5kIHdlXG4gICAgICAgICAgICAgICB0YWNrIG9uIGEgZGVjaW1hbCByZW1haW5kZXIgb2YgYSBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBpZiBuZWNlc3NhcnkuICopXG4gICAgICAgICAgICB8IE1pbnV0ZSB8IEhvdXIgfCBEYXkgLT5cbiAgICAgICAgICAgICAgbGV0IHN1bV90ID0gemVybyBpblxuICAgICAgICAgICAgICBsZXQgZGF5X3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBEYXkgaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IEhvdXIgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgTWludXRlIGluXG4gICAgICAgICAgICAgIGxldCBmbG9hdF9zdHJpbmcgPSB0b19mbG9hdF9zdHJpbmdfYWZ0ZXJfaW50X3N0cmluZ3MgfmFic190IH5zdW1fdCBpblxuICAgICAgICAgICAgICBkYXlfc3RyaW5nIF4/IGhvdXJfc3RyaW5nIF4/IG1pbnV0ZV9zdHJpbmcgXj8gZmxvYXRfc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzaWduIF4/IG1hZ25pdHVkZV9zdHJpbmcpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TcGFuLlN0YWJsZS5WMy50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc1xuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYzXG5cbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgPSB0b19mbG9hdFxuXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBnZW5faW5jbCBsbyBoaSA9XG4gIEZsb2F0Lmdlbl9pbmNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgKCogVGVjaG5pY2FsbHkgZXhjbHVzaXZlIHJhdGhlciB0aGFuIGluY2x1c2l2ZSwgYnV0IG90aGVyd2lzZSBzYXRpc2ZpZXMgdGhlIGNvbnRyYWN0IHRvXG4gICAgIHdpdGhpbiAxdWxwIG9mIHRoZSBnaXZlbiBib3VuZHMuICopXG4gIEZsb2F0Lmdlbl91bmlmb3JtX2V4Y2wgKHRvX3NlYyBsbykgKHRvX3NlYyBoaSkgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NlY1xuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgKCogV2UgZ2VuZXJhdGUgc3BhbnMgdXAgdG8gKHNsaWdodGx5IG1vcmUgdGhhbikgYSBtaWxsZW5pdW0sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLiBUaGlzXG4gICAgIGlzIGJhc2VkIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIGluIHdoaWNoIHllYXJzIGF2ZXJhZ2UgMzY1LjI0MjUgZGF5cyB3aGVuXG4gICAgIGFjY291bnRpbmcgZm9yIGxlYXAgZGF5cy4gQ292ZXJpbmcgYSB0d28tbWlsbGVuaXVtIHNwYW4gaXMgbW9yZSB0aGFuIGVub3VnaCBmb3IgbW9zdFxuICAgICBwcmFjdGljYWwgcHVycG9zZXMsIGNlcnRhaW5seSBtb3JlIHRoYW4gZW5vdWdoIHRvIGNvdmVyIHRoZSByZXByZXNlbnRhYmxlIHJhbmdlIG9mXG4gICAgIFtTcGFuX25zXSwgYW5kIHJlc3VsdHMgaW4gZmluaXRlIHNwYW5zIGFuZCB0aW1lcyB0aGF0IGNhbiBiZSBzZXJpYWxpemVkLlxuXG4gICAgIFdlIGdlbmVyYXRlIGJ5IGZpbHRlcmluZyB0aGUgZGVmYXVsdCBnZW5lcmF0b3Igc28gdGhhdCBzcGFucyBhcmUgc3RpbGwgc2tld2VkIHRvd2FyZFxuICAgICBzbWFsbCB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZSBib3VuZHMgYXJlIGxhcmdlLiAqKVxuICBsZXQgbWlsbGVuaXVtID0gb2ZfZGF5IChGbG9hdC5yb3VuZF91cCAoMzY1LjI0MjUgKi4gMTAwMC4pKSBpblxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgcXVpY2tjaGVja19nZW5lcmF0b3IgfmY6KGZ1biB0IC0+XG4gICAgbmVnIG1pbGxlbml1bSA8PSB0ICYmIHQgPD0gbWlsbGVuaXVtKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZS5TcGFuXCJcbiAgZW5kKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIHNwYW5zIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbSAxMDguMDdcbiAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kIHByZXR0eVxuICAgICBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZCBmcm9tXG4gICAgIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3VmZml4X29mX3VuaXRfb2ZfdGltZSA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWVcbiAgbGV0IHBhcnNlX3N1ZmZpeCA9IFN0YWJsZS5WMy5PZl9zdHJpbmcucGFyc2Vfc3VmZml4XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxuXG4oKiBDcmVhdGUgYW4gYWJzdHJhY3QgdHlwZSBmb3IgT2ZkYXkgdG8gcHJldmVudCB1cyBmcm9tIGNvbmZ1c2luZyBpdCB3aXRoXG4gICBvdGhlciBmbG9hdHMuXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXRcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGFkZCA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgc3ViIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHByZXYgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgOiBTcGFuLnQgLT4gYm9vbFxuICAgICAgdmFsIHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBzdGFydF9vZl9kYXkgOiB0XG4gICAgICB2YWwgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICAoKiBOdW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodC4gKilcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLkV4cG9ydC5zdGFibGVfd2l0bmVzc19mbG9hdFxuICAgICAgICA7O1xuICAgICAgZW5kIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGVuZClcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuT2ZkYXkgdmVyc2lvbiB0byBzdGFibGUubWwgKilcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gICAgICAoKiBBbm90aGVyIHJlYXNvbmFibGUgY2hvaWNlIHdvdWxkIGJlIG9ubHkgYWxsb3dpbmcgT2ZkYXkudCB0byBiZSA8IDI0aHIsIGJ1dCB0aGlzXG4gICAgICAgICBjaG9pY2Ugd2FzIG1hZGUgZWFybHkgb24gYW5kIHBlb3BsZSBiZWNhbWUgdXNlZCB0byBiZWluZyBhYmxlIHRvIGVhc2lseSBjYWxsIDI0aHJcbiAgICAgICAgIHRoZSBlbmQgb2YgdGhlIGRheS4gIEl0J3MgYSBiaXQgc2FkIGJlY2F1c2UgaXQgc2hhcmVzIHRoYXQgbW9tZW50IHdpdGggdGhlXG4gICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZGF5LCBhbmQgcm91bmQgdHJpcHMgb2RkbHkgaWYgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgIFRpbWUudG9fZGF0ZV9vZmRheS9UaW1lLm9mX2RhdGVfb2ZkYXkuXG5cbiAgICAgICAgIE5vdGU6IFtTY2hlZHVsZS50XSByZXF1aXJlcyB0aGF0IHRoZSBlbmQgb2YgZGF5IGJlIHJlcHJlc2VudGFibGUsIGFzIGl0J3MgdGhlXG4gICAgICAgICBvbmx5IHdheSB0byB3cml0ZSBhIHNjaGVkdWxlIGluIHRlcm1zIG9mIFtPZmRheS50XXMgdGhhdCBzcGFucyB0d28gd2Vla2RheXMuICopXG4gICAgICAoKiBvZmRheSBtdXN0IGJlID49IDAgYW5kIDw9IDI0aCAqKVxuICAgICAgbGV0IGlzX3ZhbGlkICh0IDogdCkgPVxuICAgICAgICBsZXQgdCA9IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgICAgU3Bhbi4oIDw9ICkgU3Bhbi56ZXJvIHQgJiYgU3Bhbi4oIDw9ICkgdCBTcGFuLmRheVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuXG4gICAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9XG4gICAgICAgIGlzX3ZhbGlkIChvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gICAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICAgIGxldCBzID0gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSBzIHdpdGhcbiAgICAgICAgfCBDLkluZmluaXRlIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbmZpbml0ZSB2YWx1ZVwiXG4gICAgICAgIHwgQy5OYW4gLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IE5hTiB2YWx1ZVwiXG4gICAgICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPlxuICAgICAgICAgIGlmIG5vdCAoaXNfdmFsaWQgcylcbiAgICAgICAgICB0aGVuIGludmFsaWRfYXJnZiAhXCJPZmRheSBvdXQgb2YgcmFuZ2U6ICV7U3Bhbn1cIiBzcGFuICgpXG4gICAgICAgICAgZWxzZSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gMC5cbiAgICAgIGxldCBzdGFydF9vZl9uZXh0X2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBTcGFuLmRheVxuXG4gICAgICBsZXQgYWRkICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0ICsuIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWIgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgLS4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBVcCB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHByZXYgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlmZiB0MSB0MiA9XG4gICAgICAgIFNwYW4uKCAtICkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQxKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPVxuICAgICAgT3B0aW9uLnZhbHVlX2V4biAoVC5zdWIgVC5zdGFydF9vZl9uZXh0X2RheSBTcGFuLm1pY3Jvc2Vjb25kKVxuICAgIDs7XG5cbiAgICAoKiBbY3JlYXRlXSBjaG9wcyBvZmYgYW55IHN1YnNlY29uZCBwYXJ0IHdoZW4gW3NlYyA9IDYwXSB0byBoYW5kbGUgbGVhcCBzZWNvbmRzLiBJblxuICAgICAgIHBhcnRpY3VsYXIgaXQncyB0cnlpbmcgdG8gYmUgZ2VuZXJvdXMgYWJvdXQgcmVhZGluZyBpbiB0aW1lcyBvbiB0aGluZ3MgbGlrZSBmaXhcbiAgICAgICBtZXNzYWdlcyB0aGF0IG1pZ2h0IGluY2x1ZGUgYW4gZXh0cmEgdW5saWtlbHkgc2Vjb25kLlxuXG4gICAgICAgT3RoZXIgd2F5cyBvZiB3cml0aW5nIGEgdGltZSwgbGlrZSAxMDAwbXMsIHdoaWxlIG1hdGhlbWF0aWNhbGx5IHZhbGlkLCBkb24ndCBtYXRjaFxuICAgICAgIHdheXMgdGhhdCBwZW9wbGUgYWN0dWFsbHkgd3JpdGUgdGltZXMgZG93biwgc28gd2UgZGlkbid0IHNlZSB0aGUgbmVlZCB0byBzdXBwb3J0XG4gICAgICAgdGhlbS4gVGhhdCBpcywgYSBjbG9jayBtaWdodCBsZWdpdGltYXRlbHkgcmVhZCAyMzo1OTo2MCAob3IsIHdpdGggNjAgc2Vjb25kcyBhdFxuICAgICAgIHRpbWVzIG9mIGRheSBvdGhlciB0aGFuIDIzOjU5LCBkZXBlbmRpbmcgb24gdGhlIHRpbWUgem9uZSksIGJ1dCBpdCBkb2Vzbid0IHNlZW1cbiAgICAgICByZWFzb25hYmxlIGZvciBhIGNsb2NrIHRvIHJlYWQgXCIyMzo1OTo1OSBhbmQgMTAwMG1zXCIuICopXG4gICAgbGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgICAgIGxldCBtcywgdXMsIG5zID1cbiAgICAgICAgbWF0Y2ggc2VjIHdpdGhcbiAgICAgICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICAgICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgICAgIGluXG4gICAgICBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpXG5cbiAgICBsZXQgdG9fc3RyaW5nX2dlbiB+ZHJvcF9tcyB+ZHJvcF91cyB+dHJpbSB0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGFzc2VydCAoaWYgZHJvcF9tcyB0aGVuIGRyb3BfdXMgZWxzZSB0cnVlKTtcbiAgICAgIGxldCBmbG9hdF9zZWMgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KSBpblxuICAgICAgbGV0IHVzID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG4gKGZsb2F0X3NlYyAqLiAxZTYpIGluXG4gICAgICBsZXQgbXMsIHVzID0gdXMgLyAhMTAwMCwgdXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBzZWMsIG1zID0gbXMgLyAhMTAwMCwgbXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBtaW4sIHNlYyA9IHNlYyAvICE2MCwgc2VjIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyLCBtaW4gPSBtaW4gLyAhNjAsIG1pbiBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociA9IGkgaHIgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3VzID0gZHJvcF91cyB8fCAodHJpbSAmJiB1cyA9IDApIGluXG4gICAgICBsZXQgZG9udF9wcmludF9tcyA9IGRyb3BfbXMgfHwgKHRyaW0gJiYgbXMgPSAwICYmIGRvbnRfcHJpbnRfdXMpIGluXG4gICAgICBsZXQgZG9udF9wcmludF9zID0gdHJpbSAmJiBzZWMgPSAwICYmIGRvbnRfcHJpbnRfbXMgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgICAgdGhlbiA1XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuIDhcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X3VzXG4gICAgICAgIHRoZW4gMTJcbiAgICAgICAgZWxzZSAxNVxuICAgICAgaW5cbiAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIGhyO1xuICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICc6JztcbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgbWluO1xuICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICc6JztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiBzZWM7XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBCeXRlcy5zZXQgYnVmIDggJy4nO1xuICAgICAgICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjkgbXM7XG4gICAgICAgICAgaWYgZG9udF9wcmludF91cyB0aGVuICgpIGVsc2Ugd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6MTIgdXMpKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTp0cnVlIHRcbiAgICBsZXQgdG9fc2VjX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczp0cnVlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuICAgIGxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBsZXQgc21hbGxfZGlmZiA9XG4gICAgICBsZXQgaG91ciA9IDM2MDAuIGluXG4gICAgICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgICAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgICAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgICAgICBsZXQgZGlmZiA9IG9mZGF5MSAtLiBvZmRheTIgaW5cbiAgICAgICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICAgICAgbGV0IGQxID0gRmxvYXQubW9kX2Zsb2F0IGRpZmYgaG91ciBpblxuICAgICAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICAgICAgbGV0IGQyID0gRmxvYXQubW9kX2Zsb2F0IChkMSArLiBob3VyKSBob3VyIGluXG4gICAgICAgIGxldCBkID0gaWYgRmxvYXQuKCA+ICkgZDIgKGhvdXIgLy4gMi4pIHRoZW4gZDIgLS4gaG91ciBlbHNlIGQyIGluXG4gICAgICAgIFNwYW4ub2Zfc2VjIGRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOmZhbHNlIHRcblxuICAgIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuT2ZkYXlcIlxuICAgICAgZW5kKVxuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgc3Vic2VjID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDAuXG4gICAgICAgIGVsc2UgRmxvYXQub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnN1YnNlY19wb3MgfmxlbjpzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIEZsb2F0Lm9mX2ludCAoKGhyICogMzYwMCkgKyAobWluICogNjApICsgc2VjKSArLiBzdWJzZWNcbiAgICAgIHw+IFNwYW4ub2Zfc2VjXG4gICAgICB8PiBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHMgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gb2Zfc2V4cF9lcnJvciAoXCJPZmRheS50X29mX3NleHA6IFwiIF4gcykgc2V4cClcbiAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiT2ZkYXkudF9vZl9zZXhwXCIgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHNleHBfb2ZfdCBzcGFuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgc3BhbilcblxuICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgICAgIHRyeSBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpjcmVhdGVfZnJvbV9wYXJzZWQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCglcyk6ICVzXCJcbiAgICAgICAgICAoU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbilcbiAgICAgICAgICAoRXhuLnRvX3N0cmluZyBleG4pXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgb2ZkYXlzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbVxuICAgICAxMDguMDcgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZFxuICAgICBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEMpXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xuIiwiKCogU2VlIHRpbWVfZmxvYXQubWwgZm9yIHRoZSBwcmltYXJ5IGluc3RhbnRpYXRpb24gb2YgdGhpcyBmdW5jdG9yIHRoYXQgaXMgdmlzaWJsZSBvdXRzaWRlXG4gICBvZiBDb3JlIGFzIFRpbWUgKHNlZSBjb3JlLm1sKS4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgVGltZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUaW1lMCA6IFRpbWUwX2ludGYuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRpbWUwID0gVGltZTBcbiAgaW5jbHVkZSBUaW1lMFxuXG4gIGxldCBlcG9jaCA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi56ZXJvXG4gIGxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPC4gdDJcbiAgbGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPi4gdDJcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgIGluY2x1ZGUgVGltZV9pbnRmLlpvbmUgd2l0aCBtb2R1bGUgVGltZSA6PSBUaW1lMFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICBUaW1lMC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGFiYnJldmlhdGlvbiB0IHRpbWUgPVxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgKGluZGV4IHQgdGltZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYWJzX2RpZmYgdDEgdDIgPSBTcGFuLmFicyAoZGlmZiB0MSB0MilcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgVGltZTAuKCA+PSApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgVGltZTAuKCA8ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIFRpbWUwLnN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IFRpbWUwLmFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgICAgfD4gVGltZTAubWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgICAgfD4gVGltZTAubWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgZW5kX29mX2RheSA9IE9mZGF5LnByZXYgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgfD4gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdXG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgbGV0IG9mX2RheSA9XG4gICAgICBUaW1lMC5kaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICBpblxuICAgIGlmIE9mZGF5LmVxdWFsIG9mX2RheSBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB0aGVuIGVuZF9vZl9kYXkgZWxzZSBvZl9kYXlcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50ciB+dGFyZ2V0Oic6JyB+cmVwbGFjZW1lbnQ6Jy0nIChPZmRheS50b19zdHJpbmcgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFNwYW4ucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgfmZfaW52ZXJzZTp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBTcGFuLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9mbG9hdFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gIGluY2x1ZGUgKFxuICAgIEZsb2F0IDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdC5PXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgcHJlY2lzaW9uICopXG4gIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgIGVuZClcblxuICBsZXQgZGlmZiB0MSB0MiA9IFNwYW4ub2Zfc2VjICh0MSAtIHQyKVxuICBsZXQgYWRkIHQgc3BhbiA9IHQgKy4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgc3ViIHQgc3BhbiA9IHQgLS4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG4gIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi5vZl9zZWNcbiAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLnRvX3NlY1xuZW5kXG5cbmluY2x1ZGUgQWJzb2x1dGVcblxubW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBkYXlzID1cbiAgICAgIEZsb2F0Lm9mX2ludCAoRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoKVxuICAgIGluXG4gICAgKGRheXMgKi4gODY0MDAuKSArLiBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPSBzdWIgcmVsYXRpdmUgb2Zmc2V0X2Zyb21fdXRjXG4gIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID0gYWRkIGFic29sdXRlIG9mZnNldF9mcm9tX3V0Y1xuXG4gICgqIFllYXJzIG91dCBvZiByYW5nZSBmb3IgW0RhdGUuY3JlYXRlX2V4bl0uICopXG4gIGxldFtAY29sZF0gYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoID1cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1ALTYyMTY3MjE5MjAwXG4gICAgICAgU2F0IEphbiAgMSAwMDowMDowMCBVVEMgMDAwMCAqKVxuICAgIGxldCBnbXRpbWVfbG93ZXJfYm91bmQgPSAtNjJfMTY3XzIxOV8yMDAuIGluXG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QDI1MzQwMjMwMDc5OVxuICAgICAgIEZyaSBEZWMgMzEgMjM6NTk6NTkgVVRDIDk5OTkgKilcbiAgICBsZXQgZ210aW1lX3VwcGVyX2JvdW5kID0gMjUzXzQwMl8zMDBfNzk5LiBpblxuICAgIGlmIEZsb2F0LiggPj0gKSBzZWNfc2luY2VfZXBvY2ggKGdtdGltZV91cHBlcl9ib3VuZCArLiAxLilcbiAgICB8fCBGbG9hdC4oIDwgKSBzZWNfc2luY2VfZXBvY2ggZ210aW1lX2xvd2VyX2JvdW5kXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJUaW1lLmdtdGltZTogb3V0IG9mIHJhbmdlICglZilcIiBzZWNfc2luY2VfZXBvY2ggKClcbiAgOztcblxuICBsZXQgc2VjX3Blcl9kYXkgPSBJbnQ2My5vZl9pbnQgODZfNDAwXG5cbiAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2g6dDtcbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSBJbnQ2My5vZl9mbG9hdCB0IC8gc2VjX3Blcl9kYXkgaW5cbiAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICBpZiBGbG9hdC4oIDwgKSB0IChJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIHNlY19wZXJfZGF5KSlcbiAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICA7O1xuXG4gIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgPSBJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoICogc2VjX3Blcl9kYXkpIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IHQgLS4gZGF5c19mcm9tX2Vwb2NoX2luX3NlYyBpblxuICAgIFNwYW4ub2Zfc2VjIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGxldCBkYXRlID0gZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBvZmRheSA9IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBkYXRlLCBvZmRheVxuICA7O1xuZW5kXG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWUubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogU3Bhbi50XTtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9XG4gICAgICBhZGRcbiAgICAgICAgYmFzZVxuICAgICAgICAoU3Bhbi5zY2FsZVxuICAgICAgICAgICBpbnRlcnZhbFxuICAgICAgICAgICAoRmxvYXQucm91bmQgfmRpcjpgRG93biAoU3Bhbi4oIC8vICkgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpKVxuICAgIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IG5vdyAoKSA9XG4gIGxldCBmbG9hdF9ucyA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gSW50NjMudG9fZmxvYXQgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9zZWMgKGZsb2F0X25zICouIDFFLTkpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTX2tlcm5lbF93aXRob3V0X3pvbmUgPSBUaW1lMF9pbnRmLlNcbm1vZHVsZSB0eXBlIFNfa2VybmVsID0gVGltZV9pbnRmLlNcblxubW9kdWxlIFpvbmVfc3RhYmxlID0gWm9uZS5TdGFibGVcbmluY2x1ZGUgVGltZS5NYWtlIChUaW1lX2Zsb2F0MClcbmluY2x1ZGUgVGltZV9mbG9hdDBcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfZmxvYXQwLlN0YWJsZVxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBXaXRoX3Rfb2Zfc2V4cF9hYnMgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBPZmRheVxuICAgIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFdpdGhfdXRjX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0b19zdHJpbmdfYWJzX3BhcnRzIHQgfnpvbmU6Wm9uZS51dGMgOiBzdHJpbmcgbGlzdCldXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGRhdGU7IFNleHAuQXRvbSBvZmRheV9hbmRfcG9zc2libHlfem9uZSBdIC0+XG4gICAgICAgICAgICBvZl9zdHJpbmdfZ2VuXG4gICAgICAgICAgICAgIH5kZWZhdWx0X3pvbmU6KGZ1biAoKSAtPiBab25lLnV0YylcbiAgICAgICAgICAgICAgfmZpbmRfem9uZTooZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiB1bmtub3duIHRpbWUgem9uZVwiIHNleHApXG4gICAgICAgICAgICAgIChkYXRlIF4gXCIgXCIgXiBvZmRheV9hbmRfcG9zc2libHlfem9uZSlcbiAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cFwiIHNleHBcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+IHJhaXNlIGVcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgKHNwcmludGYgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6ICVzXCIgKEV4bi50b19zdHJpbmcgZSkpXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG5cbiAgICAgIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gICAgICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgWm9uZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgICBpbmNsdWRlIFpvbmVfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICBpbmNsdWRlIE9mZGF5XG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG5vdyA9IGBVc2VfVGltZV91bml4XG5cbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuZW5kXG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG4gIGluY2x1ZGUgU3BhblxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBab25lXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxuICBsZXQgKCA8ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID49ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgX19iaW5fcmVhZF90X18gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJldHdlZW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NoYXBlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NpemVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXBfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZGVzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBlcXVhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmRfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2ggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaF9mb2xkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0aWFsaXplZF96b25lcyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBsb2NhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtYXggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWluID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG9mX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBwcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdG9fc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBFeHBvc2VkX2Zvcl90ZXN0cyA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5sZXQgZm9ybWF0ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV91bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG4iLCJpbmNsdWRlIERhdGUwXG5cbmxldCBvZl90aW1lIHRpbWUgfnpvbmUgPSBUaW1lX2Zsb2F0LnRvX2RhdGUgfnpvbmUgdGltZVxubGV0IHRvZGF5IH56b25lID0gb2ZfdGltZSAoVGltZV9mbG9hdC5ub3cgKCkpIH56b25lXG5sZXQgZm9ybWF0ID0gYFVzZV9EYXRlX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfRGF0ZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX0RhdGVfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50NjMuT1xuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuXCJcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBJbnQuZXF1YWwgU3lzLndvcmRfc2l6ZV9pbl9iaXRzIDY0XG5sZXQgcm91bmRfbmVhcmVzdCA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuXG5sZXQgZmxvYXQgeCA9IEludDYzLnRvX2Zsb2F0IHhcblxuKCogW1NwYW5dIGlzIGJhc2ljYWxseSBhIFtJbnQ2M10uICBJdCBldmVuIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3cuICopXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50ICgqIG5hbm9zZWNvbmRzICopIFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gSW50NjMuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHplcm8gPSBJbnQ2My56ZXJvXG5lbmRcblxuaW5jbHVkZSBUXG5vcGVuIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNpZ24gOiBTaWduLnRcbiAgICA7IGhyIDogaW50XG4gICAgOyBtaW4gOiBpbnRcbiAgICA7IHNlYyA6IGludFxuICAgIDsgbXMgOiBpbnRcbiAgICA7IHVzIDogaW50XG4gICAgOyBucyA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmxldCBuZXh0IHQgPSBJbnQ2My5zdWNjIHRcbmxldCBwcmV2IHQgPSBJbnQ2My5wcmVkIHRcbmxldCBuYW5vc2Vjb25kID0gSW50NjMub2ZfaW50IDFcbmxldCBtaWNyb3NlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG5hbm9zZWNvbmQpXG5sZXQgbWlsbGlzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWNyb3NlY29uZClcbmxldCBzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWxsaXNlY29uZClcbmxldCBtaW51dGUgPSBJbnQ2My4ob2ZfaW50IDYwICogc2Vjb25kKVxubGV0IGhvdXIgPSBJbnQ2My4ob2ZfaW50IDYwICogbWludXRlKVxubGV0IGRheSA9IEludDYzLihvZl9pbnQgMjQgKiBob3VyKVxuXG4oKiBCZXlvbmQgW21pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nLi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ10sIG5vdCBldmVyeSBtaWNyb3NlY29uZFxuICAgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgW2Zsb2F0XSBudW1iZXIgb2Ygc2Vjb25kcy4gKEluIGZhY3QsIGl0IGlzIGFyb3VuZCAxMzV5LCBidXQgd2VcbiAgIGxlYXZlIGEgc21hbGwgbWFyZ2luLilcblxuICAgSW4gdGhlIHByZXNlbmNlIG9mIHNpbGVudGx5IGlnbm9yZWQgb3ZlcmZsb3csIG5vdGUgdGhhdCBbdF0gaXMgbm90IGFjdHVhbGx5IGJvdW5kIHRvXG4gICBzdGF5IGJldHdlZW4gdGhlc2UgbGltaXRzLiAqKVxubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMuKG9mX2ludCAxMzUgKiBvZl9pbnQgMzY1ICogZGF5KVxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMubmVnIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5cbmxldCBjcmVhdGVcbiAgICAgID9zaWduOihzaWduXyA9IFNpZ24uUG9zICgqIHJlYmluZCBzbyBub3Qgc2hhZG93ZWQgYnkgW29wZW4gSW50NjNdIGJlbG93ICopKVxuICAgICAgP2RheTooZGF5cyA9IDApXG4gICAgICA/KGhyID0gMClcbiAgICAgID9taW46KG1pbnV0ZXMgPSAwKVxuICAgICAgPyhzZWMgPSAwKVxuICAgICAgPyhtcyA9IDApXG4gICAgICA/KHVzID0gMClcbiAgICAgID8obnMgPSAwKVxuICAgICAgKClcbiAgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgdCA9XG4gICAgKG9mX2ludCBkYXlzICogZGF5KVxuICAgICsgKG9mX2ludCBociAqIGhvdXIpXG4gICAgKyAob2ZfaW50IG1pbnV0ZXMgKiBtaW51dGUpXG4gICAgKyAob2ZfaW50IHNlYyAqIHNlY29uZClcbiAgICArIChvZl9pbnQgbXMgKiBtaWxsaXNlY29uZClcbiAgICArIChvZl9pbnQgdXMgKiBtaWNyb3NlY29uZClcbiAgICArIChvZl9pbnQgbnMgKiBuYW5vc2Vjb25kKVxuICBpblxuICBtYXRjaCBzaWduXyB3aXRoXG4gIHwgTmVnIC0+IG5lZyB0XG4gIHwgUG9zIHwgWmVybyAtPiB0XG47O1xuXG5sZXQgdG9fcGFydHMgdCA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCBtYWcgPSBhYnMgdCBpblxuICB7IFBhcnRzLnNpZ24gPSAoaWYgdCA8IHplcm8gdGhlbiBOZWcgZWxzZSBpZiB0ID4gemVybyB0aGVuIFBvcyBlbHNlIFplcm8pXG4gIDsgaHIgPSB0b19pbnRfZXhuIChtYWcgLyBob3VyKVxuICA7IG1pbiA9IHRvX2ludF9leG4gKHJlbSBtYWcgaG91ciAvIG1pbnV0ZSlcbiAgOyBzZWMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbnV0ZSAvIHNlY29uZClcbiAgOyBtcyA9IHRvX2ludF9leG4gKHJlbSBtYWcgc2Vjb25kIC8gbWlsbGlzZWNvbmQpXG4gIDsgdXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbGxpc2Vjb25kIC8gbWljcm9zZWNvbmQpXG4gIDsgbnMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pY3Jvc2Vjb25kIC8gbmFub3NlY29uZClcbiAgfVxuOztcblxubGV0IG9mX3BhcnRzIHsgUGFydHMuc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gPVxuICBjcmVhdGUgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyAoKVxuOztcblxubGV0IG9mX25zIGYgPSByb3VuZF9uZWFyZXN0IGZcbmxldCBvZl9pbnQ2M19ucyBpID0gaVxubGV0IG9mX2ludF91cyBpID0gSW50NjMuKG9mX2ludCBpICogbWljcm9zZWNvbmQpXG5sZXQgb2ZfaW50X21zIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWxsaXNlY29uZClcbmxldCBvZl9pbnRfc2VjIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBzZWNvbmQpXG5sZXQgb2ZfaW50X21pbiBpID0gSW50NjMuKG9mX2ludCBpICogbWludXRlKVxubGV0IG9mX2ludF9ociBpID0gSW50NjMuKG9mX2ludCBpICogaG91cilcbmxldCBvZl9pbnRfZGF5IGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBkYXkpXG5sZXQgb2ZfdXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWljcm9zZWNvbmQpXG5sZXQgb2ZfbXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWlsbGlzZWNvbmQpXG5sZXQgb2Zfc2VjIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IHNlY29uZClcbmxldCBvZl9taW4gZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWludXRlKVxubGV0IG9mX2hyIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGhvdXIpXG5sZXQgb2ZfZGF5IGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGRheSlcblxubGV0IG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiBzZWMgPVxuICBsZXQgdXMgPSByb3VuZF9uZWFyZXN0IChzZWMgKi4gMWU2KSBpblxuICBvZl9pbnQ2M19ucyBJbnQ2My4odXMgKiBvZl9pbnQgMTAwMClcbjs7XG5cbmxldCBvZl9pbnQ2M19zZWNvbmRzIHggPSB4ICogc2Vjb25kXG5sZXQgb2ZfaW50MzJfc2Vjb25kcyB4ID0gb2ZfaW50NjNfc2Vjb25kcyAoSW50NjMub2ZfaW50MzIgeClcblxubGV0IHRvX25zIHQgPSBmbG9hdCB0XG5sZXQgdG9faW50NjNfbnMgdCA9IHRcbmxldCB0b191cyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWNyb3NlY29uZFxubGV0IHRvX21zIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjIHQgPSBmbG9hdCB0IC8uIGZsb2F0IHNlY29uZFxubGV0IHRvX21pbiB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaW51dGVcbmxldCB0b19ociB0ID0gZmxvYXQgdCAvLiBmbG9hdCBob3VyXG5sZXQgdG9fZGF5IHQgPSBmbG9hdCB0IC8uIGZsb2F0IGRheVxubGV0IHRvX2ludF91cyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWNyb3NlY29uZCkpXG5sZXQgdG9faW50X21zIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pbGxpc2Vjb25kKSlcbmxldCB0b19pbnRfc2VjIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIHNlY29uZCkpXG5sZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB0ID0gdCAvJSBzZWNvbmRcbmxldCBvZl9pbnRfbnMgaSA9IG9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX2ludF9ucyA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnMgdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMuU3Bhbi50b19pbnRfbnM6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCAoICsgKSB0IHUgPSBJbnQ2My4oICsgKSB0IHVcbmxldCAoIC0gKSB0IHUgPSBJbnQ2My4oIC0gKSB0IHVcbmxldCBhYnMgPSBJbnQ2My5hYnNcbmxldCBuZWcgPSBJbnQ2My5uZWdcbmxldCBzY2FsZSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0ICouIGYpXG5sZXQgc2NhbGVfaW50NjMgdCBpID0gSW50NjMuKCAqICkgdCBpXG5sZXQgc2NhbGVfaW50IHQgaSA9IHNjYWxlX2ludDYzIHQgKEludDYzLm9mX2ludCBpKVxubGV0IGRpdiA9IEludDYzLiggLyUgKVxubGV0ICggLyApIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgLy4gZilcbmxldCAoIC8vICkgPSBJbnQ2My4oIC8vIClcbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgdCA9IEludDYzLnRvX2Zsb2F0IHRcblxubGV0IG9mX3VuaXRfb2ZfdGltZSB1ID1cbiAgbWF0Y2ggKHUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gIHwgTWludXRlIC0+IG1pbnV0ZVxuICB8IEhvdXIgLT4gaG91clxuICB8IERheSAtPiBkYXlcbjs7XG5cbmxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgaWYgYWJzX3QgPj0gZGF5XG4gIHRoZW4gRGF5XG4gIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICB0aGVuIEhvdXJcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgdGhlbiBNaW51dGVcbiAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgdGhlbiBTZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICB0aGVuIE1pbGxpc2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgdGhlbiBNaWNyb3NlY29uZFxuICBlbHNlIE5hbm9zZWNvbmRcbjs7XG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9IFNwYW5fZmxvYXQub2Zfc2VjICh0b19zZWMgdClcbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgcyA9IG9mX3NlYyAoU3Bhbl9mbG9hdC50b19zZWMgcylcblxubW9kdWxlIFN0YWJsZTAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgVGltZV9mbG9hdC5TdGFibGUuU3Bhbi5WMS5zZXhwX29mX3QgKHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LlN0YWJsZS5TcGFuLlYxLnRfb2Zfc2V4cCBzKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0b19pbnQ2M19ucyB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRvX2ludDYzX25zIHRcblxuICAgICAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGUgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXG4gICAgICAgICAgICB0aGVuIDFcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxXzAwMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXzAwMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGFzc2VydCBmYWxzZVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBzcGFuIHBhcnQgbWFnbml0dWRlcyBhcmUgYWx3YXlzIDwgMTAwXzAwMCAqKVxuXG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgYXNzZXJ0IChiaWxsaW9udGhzID49IDAgJiYgYmlsbGlvbnRocyA8PSA5OTlfOTk5Xzk5OSk7XG4gICAgICAgICAgICBpZiBiaWxsaW9udGhzID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDlcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDhcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gN1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNlxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfY2hhciBidWYgfnBvcyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjtcbiAgICAgICAgICAgIHBvcyArIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgY2hhcjEgY2hhcjIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyMTtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIChwb3MgKyAxKSBjaGFyMjtcbiAgICAgICAgICAgIHBvcyArIDJcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjMgYnVmIH5wb3MgfmRpZ2l0cyAoSW50NjMub2ZfaW50IGludCk7XG4gICAgICAgICAgICBwb3MgKyBkaWdpdHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5kZWNpbWFscyB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjNcbiAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgfmRpZ2l0czpkZWNpbWFsc1xuICAgICAgICAgICAgICAoSW50NjMub2ZfaW50IChiaWxsaW9udGhzIC8gSW50LnBvdyAxMCAoOSAtIGRlY2ltYWxzKSkpO1xuICAgICAgICAgICAgcG9zICsgZGVjaW1hbHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzIGludCBzdWZmaXggPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyBzdWZmaXggaW5cbiAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgPSB0b19pbnQ2M19ucyBtaWxsaXNlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pY3Jvc2Vjb25kID0gdG9faW50NjNfbnMgbWljcm9zZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBpbnQ2M182MCA9IEludDYzLm9mX2ludCA2MFxuICAgICAgICAgIGxldCBpbnQ2M18yNCA9IEludDYzLm9mX2ludCAyNFxuXG4gICAgICAgICAgKCogVW5pdHMgb2Ygc2Vjb25kcyBhbmQgc21hbGxlciBjYW4gYmUgd3JpdHRlbiBpbiBkZWNpbWFsIG5vdGF0aW9uIHdpdGhvdXRcbiAgICAgICAgICAgICB3b3JyeWluZyBhYm91dCBub24tcG93ZXItb2YtdGVuIGZhY3RvcnMuICopXG4gICAgICAgICAgbW9kdWxlIERlY2ltYWxfdW5pdCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBTZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZFxuICAgICAgICAgICAgICB8IE5vbmVcbiAgICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgICAgIGxldCBjcmVhdGUgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgcyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IDFcbiAgICAgICAgICAgICAgdGhlbiBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGludGVnZXIgdCB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAvIG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGJpbGxpb250aHMgdCB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAlIG5hbm9zX29mX21pbGxpc2Vjb25kICogMV8wMDBcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAlIG5hbm9zX29mX21pY3Jvc2Vjb25kICogMV8wMDBfMDAwXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiAwXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgbGVuZ3RoIHQgfmRpZ2l0cyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX2xlbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gZGlnaXRzICsgMVxuICAgICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgfCBNaWNyb3NlY29uZCB8IE5hbm9zZWNvbmQgLT4gZGlnaXRzICsgMlxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19sZW4gPSBpZiBkZWNpbWFscyA+IDAgdGhlbiBkZWNpbWFscyArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgIGRpZ2l0c19sZW4gKyBkZWNpbWFsc19sZW5cbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZV9zdWZmaXggdCBidWYgfnBvcyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICdzJ1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ20nICdzJ1xuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ3UnICdzJ1xuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbicgJ3MnXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZSB0IGJ1ZiB+cG9zIH5pbnRlZ2VyIH5kaWdpdHMgfmJpbGxpb250aHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIGludGVnZXIgfmRpZ2l0cyBpblxuICAgICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgICAgaWYgZGVjaW1hbHMgPSAwXG4gICAgICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zICcuJyBpblxuICAgICAgICAgICAgICAgICAgICB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9zdWZmaXggdCBidWYgfnBvcylcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kXG5cbiAgICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICAgICAgaWYgZXF1YWwgdCB6ZXJvXG4gICAgICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9IHQgPCB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuKCAvICkgKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIGluXG4gICAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgICAgSW50NjMucmVtICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuYWJzIHNlY29uZHMgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID0gSW50LmFicyBucyBpblxuICAgICAgICAgICAgICBsZXQgcyA9IEludDYzLnJlbSBzZWNvbmRzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZXMgPSBJbnQ2My4oIC8gKSBzZWNvbmRzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBtID0gSW50NjMucmVtIG1pbnV0ZXMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgaG91cnMgPSBJbnQ2My4oIC8gKSBtaW51dGVzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBoID0gSW50NjMucmVtIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGQgPSBJbnQ2My4oIC8gKSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2ggPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmggaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9tID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTptIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXQgPSBEZWNpbWFsX3VuaXQuY3JlYXRlIH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2ludGVnZXIgPSBEZWNpbWFsX3VuaXQuaW50ZWdlciBkZWNpbWFsX3VuaXQgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfYmlsbGlvbnRocyA9IERlY2ltYWxfdW5pdC5iaWxsaW9udGhzIGRlY2ltYWxfdW5pdCB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgICAgICAgICAgICBsZXQgc2lnbl9sZW4gPSBpZiBpc19uZWdhdGl2ZSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRfbGVuID0gaWYgZGlnaXRzX29mX2QgPiAwIHRoZW4gZGlnaXRzX29mX2QgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBoX2xlbiA9IGlmIGRpZ2l0c19vZl9oID4gMCB0aGVuIGRpZ2l0c19vZl9oICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbV9sZW4gPSBpZiBkaWdpdHNfb2ZfbSA+IDAgdGhlbiBkaWdpdHNfb2ZfbSArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9sZW4gPVxuICAgICAgICAgICAgICAgICAgRGVjaW1hbF91bml0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHNpZ25fbGVuICsgZF9sZW4gKyBoX2xlbiArIG1fbGVuICsgZGVjaW1hbF91bml0X2xlblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHN0cmluZ19sZW5ndGggPiAwKTtcbiAgICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBzdHJpbmdfbGVuZ3RoIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSBpZiBpc19uZWdhdGl2ZSB0aGVuIHdyaXRlX2NoYXIgYnVmIH5wb3MgJy0nIGVsc2UgcG9zIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfZCBkICdkJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2ggaCAnaCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9tIG0gJ20nIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC53cml0ZVxuICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgIH5pbnRlZ2VyOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAocG9zID0gc3RyaW5nX2xlbmd0aCk7XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmKVxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgICgqIFdlIGRvIGNvbXB1dGF0aW9ucyB1c2luZyBuZWdhdGl2ZSBudW1iZXJzIGV2ZXJ5d2hlcmUgYW5kIHRlc3QgYWdhaW5zdFxuICAgICAgICAgICAgIHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5taW5fdmFsdWVdIHJhdGhlciB0aGFuIHVzaW5nIHBvc2l0aXZlIG51bWJlcnNcbiAgICAgICAgICAgICBhbmQgdGVzdGluZyBhZ2FpbnN0IHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5tYXhfdmFsdWVdIGJlY2F1c2UgdGhlXG4gICAgICAgICAgICAgbmVnYXRpdmUgaW50ZWdlciByYW5nZSBpcyBvbmUgd2lkZXIgdGhhbiB0aGUgcG9zaXRpdmUgaW50ZWdlciByYW5nZVxuICAgICAgICAgICAgICgtMioqNjMgdnMgMioqNjMtMSksIGFuZCB3ZSBuZWVkIHRoYXQgdG8gYmUgYWJsZSB0byBoYW5kbGUgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgbmljZWx5LiAqKVxuXG4gICAgICAgICAgbGV0IGludDYzXzEwID0gSW50NjMub2ZfaW50IDEwXG4gICAgICAgICAgbGV0IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3cgPSBJbnQ2My4obWluX3ZhbHVlIC8gaW50NjNfMTApXG5cbiAgICAgICAgICBsZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4ub2Zfc3RyaW5nOiBpbnZhbGlkIHN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAoc3RyaW5nIDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgKHJlYXNvbiA6IHN0cmluZyldXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIEFzc3VtZXMgeCBhbmQgeSBhcmUgYm90aCBub25wb3NpdGl2ZSAqKVxuICAgICAgICAgIGxldCBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyB4IHkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IHN1bSA9IHggKyB5IGluXG4gICAgICAgICAgICBpZiBzdW0gPiB4XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBzdW1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IGFkZF9uZWdfZGlnaXQgfnN0cmluZyBpbnQ2MyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXIpIGluXG4gICAgICAgICAgICBpZiBpbnQ2MyA8IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIChpbnQ2MyAqIGludDYzXzEwKSAoLWRpZ2l0KVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbWluX2ZhY3Rvcl9vZiBzcGFuID0gSW50NjMuKCAvICkgSW50NjMubWluX3ZhbHVlICh0b19pbnQ2M19ucyBzcGFuKVxuICAgICAgICAgIGxldCBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgZGF5XG4gICAgICAgICAgbGV0IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgaG91clxuICAgICAgICAgIGxldCBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWludXRlXG4gICAgICAgICAgbGV0IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWlsbGlzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWljcm9zZWNvbmRcbiAgICAgICAgICBsZXQgbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBuYW5vc2Vjb25kXG5cbiAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICAgICAgICB8IERheSAtPiBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBIb3VyIC0+IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaW51dGUgLT4gbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgU2Vjb25kIC0+IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBzY2FsZSA9IHRvX2ludDYzX25zIChvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSBpblxuICAgICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvdyA9XG4gICAgICAgICAgICAgIG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgSW50NjMuKCA8ICkgbmVnX2ludGVnZXIgbWluX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBsZXQgbmVnX2ludGVnZXJfbnMgPSBJbnQ2My4oICogKSBuZWdfaW50ZWdlciBzY2FsZSBpblxuICAgICAgICAgICAgbGV0IGZyYWN0aW9uX3BvcyA9IGRlY2ltYWxfcG9zICsgMSBpblxuICAgICAgICAgICAgaWYgZnJhY3Rpb25fcG9zID49IGVuZF9wb3NcbiAgICAgICAgICAgIHRoZW4gbmVnX2ludGVnZXJfbnNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9ucyA9XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMucmVhZF9pbnQ2M19kZWNpbWFsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5wb3M6ZnJhY3Rpb25fcG9zXG4gICAgICAgICAgICAgICAgICB+c2NhbGVcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczooZW5kX3BvcyAtIGZyYWN0aW9uX3BvcylcbiAgICAgICAgICAgICAgICAgIH5hbGxvd191bmRlcnNjb3JlOnRydWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzOnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIG5lZ19pbnRlZ2VyX25zIChJbnQ2My4oIH4tICkgZGVjaW1hbF9ucykpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgbmVnX25zID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBzdHJpbmdcIjtcbiAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgJysnIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nIDogRGlnaXRfc3RyaW5nX2hlbHBlcnMuUm91bmQudCA9XG4gICAgICAgICAgICAgICgqIFVsdGltYXRlbHksIHdlIGFsd2F5cyByb3VuZCBwYXJzZWQgc3BhbnMgdG93YXJkcyBwb3NpdGl2ZSBpbmZpbml0eSB3aGVuXG4gICAgICAgICAgICAgICAgIHRoZSBuZWFyZXN0IHJvdW5kIG5zIGFyZSBlcXVpZGlzdGFudC4gRm9yIGV4YW1wbGUsIFwiMS41bnNcIiBpcyByZWFkIGFzXG4gICAgICAgICAgICAgICAgIDIuMG5zLCBhbmQgXCItMS41bnNcIiBpcyByZWFkIGFzIC0xbnMuIFNpbmNlIHdlIHJlYWQgYWJzb2x1dGUgdmFsdWVzIGJlZm9yZVxuICAgICAgICAgICAgICAgICBhcHBseWluZyB0aGUgc2lnbiwgd2UgbXVzdCBjaG9vc2Ugb3VyIHJvdW5kaW5nIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGVcbiAgICAgICAgICAgICAgICAgc2lnbi4gUm91bmRpbmcgZGVjaW1hbCB2YWx1ZXMgaGFwcGVucyBiZWZvcmUgbmVnYXRpbmcgdGhlaXIgbWFnbml0dWRlLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBpc19uZWdhdGl2ZSB3aXRoXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT4gVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgICAgICAgICAgIHwgdHJ1ZSAtPiBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBMb29wIG92ZXIgcGFydHMsIGxpa2UgXCI1bVwiIGluIFwiMWg1bTMwc1wiICopXG4gICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuIGRvXG4gICAgICAgICAgICAgIGxldCBoYXNfZGlnaXQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyID1cbiAgICAgICAgICAgICAgICBsZXQgaSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kaWdpdHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RpZ2l0cyBkb1xuICAgICAgICAgICAgICAgICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaSA6PSBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgIWkgYztcbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kaWdpdHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIWlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiAhcG9zIDwgbGVuICYmIENoYXIuZXF1YWwgJy4nIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcylcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kZWNpbWFscyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGVjaW1hbHMgZG9cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RlY2ltYWxzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAgICAgbGV0IGVuZF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmIG5vdCAhaGFzX2RpZ2l0XG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyBkaWdpdHMgYmVmb3JlIHVuaXQgc3VmZml4XCI7XG4gICAgICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICAgICAgICAgICAgaWYgIXBvcyArIDEgPCBsZW4gJiYgQ2hhci5lcXVhbCAncycgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAoIXBvcyArIDEpKVxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICAgICAgfCAndScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCAnbicgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgIXBvcyA8IGxlblxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnZCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIERheVxuICAgICAgICAgICAgICAgICAgfCAnaCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBNaW51dGVcbiAgICAgICAgICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBTZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIHVuaXQgc3VmZml4IGFmdGVyIGRpZ2l0c1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfbmFub3Nfb2ZfcGFydCA9XG4gICAgICAgICAgICAgICAgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBuZWdfbnMgOj0gYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgIW5lZ19ucyBuZWdfbmFub3Nfb2ZfcGFydFxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgIGlmIGlzX25lZ2F0aXZlXG4gICAgICAgICAgICAgIHRoZW4gIW5lZ19uc1xuICAgICAgICAgICAgICBlbHNlIGlmIEludDYzLiggPSApICFuZWdfbnMgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIlxuICAgICAgICAgICAgICBlbHNlIEludDYzLiggfi0gKSAhbmVnX25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb2ZfaW50NjNfbnMgbnNcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHApXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWVfbnMuU3Bhbi5TdGFibGUuVjIudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUMClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5vcGVuIHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlMFxuZW5kXG5cbmxldCB0b19zdHJpbmcgPSBTdGFibGUuVjIudG9fc3RyaW5nXG5sZXQgb2Zfc3RyaW5nID0gU3RhYmxlLlYyLm9mX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IFN0YWJsZS5WMi5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBTdGFibGUuVjIudF9vZl9zZXhwXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTdGFibGUuVjIudF9zZXhwX2dyYW1tYXJcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogRnVuY3Rpb25zIHJlcXVpcmVkIGJ5IFtSb2J1c3RseV9jb21wYXJhYmxlXTogYWxsb3dzIGZvciBbcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXVxuICAgZ3JhbnVsYXJpdHkuXG5cbiAgIEEgbWljcm9zZWNvbmQgaXMgYSByZWFzb25hYmxlIGdyYW51bGFyaXR5IGJlY2F1c2UgdGhlcmUgaXMgdmVyeSBsaXR0bGUgbmV0d29ya1xuICAgYWN0aXZpdHkgdGhhdCBjYW4gYmUgbWVhc3VyZWQgdG8gc3ViLW1pY3Jvc2Vjb25kIHJlc29sdXRpb24uICopXG5sZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gbWljcm9zZWNvbmRcbmxldCAoID49LiApIHQgdSA9IHQgPj0gSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8PS4gKSB0IHUgPSB0IDw9IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPS4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpIDw9IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxubGV0ICggPi4gKSB0IHUgPSB0ID4gSW50NjMuKHUgKyByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8LiApIHQgdSA9IHQgPCBJbnQ2My4odSAtIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDw+LiApIHQgdSA9IEludDYzLihhYnMgKHQgLSB1KSkgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCByb2J1c3RseV9jb21wYXJlIHQgdSA9IGlmIHQgPC4gdSB0aGVuIC0xIGVsc2UgaWYgdCA+LiB1IHRoZW4gMSBlbHNlIDBcblxuKCogV2UgZG9uJ3QganVzdCBjb252ZXJ0IHRvIFtUaW1lLlNwYW4udF0gYW5kIHVzZSB0aGUgY29udmVyc2lvbiB0aGVyZSBiZWNhdXNlIG91clxuICAgW3RvX3NwYW5dIGNvbnZlcnNpb24gaXMgbGltaXRlZCB0byBtaWNyb3NlY29uZCBwcmVjaXNpb24uICopXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBzaW5jZV91bml4X2Vwb2NoICgpID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSB8PiBvZl9pbnQ2M19uc1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9XG4gIEludDYzLnJhbmRvbSA/c3RhdGUgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICsgSW50NjMub25lKVxuICAtIEludDYzLnJhbmRvbSA/c3RhdGUgKG5lZyBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbjs7XG5cbmxldCByYW5kb21pemUgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0IH5wZXJjZW50ID1cbiAgU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IHN0YXRlIH5wZXJjZW50IH5zY2FsZVxuOztcblxubGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gIFNwYW5faGVscGVycy5zaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5uc1xuOztcblxubGV0IGdlbl9pbmNsID0gSW50NjMuZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gSW50NjMuZ2VuX3VuaWZvcm1faW5jbFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IG1vZHVsZV9uYW1lXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kKVxuXG50eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFN0YWJsZS5WMi5jb21wYXJhdG9yXG4gIGVuZClcblxuKCogcmUtaW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhbmQgaXRzIGNvbXBhcmlzb25zIHRvIHNoYWRvdyB0aGVcbiAgIHVuLWlubGluZWFibGUgb25lcyBmcm9tIFtDb21wYXJhYmxlXSAqKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaGFsZl9taWNyb3NlY29uZCA9IEludDYzLm9mX2ludCA1MDBcbmxldCBuZWFyZXN0X21pY3Jvc2Vjb25kIHQgPSBJbnQ2My4oKHRvX2ludDYzX25zIHQgKyBoYWxmX21pY3Jvc2Vjb25kKSAvJSBvZl9pbnQgMTAwMClcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiU3Bhbi50IGV4Y2VlZHMgbGltaXRzXCJcbiAgICAgICAgKHQgOiB0KVxuICAgICAgICAobWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KVxuICAgICAgICAobWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KV1cbjs7XG5cbmxldCBjaGVja19yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICBpZiB0IDwgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgfHwgdCA+IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW4gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHRcbiAgZWxzZSB0XG47O1xuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBTcGFuX2Zsb2F0Lm9mX3VzIChJbnQ2My50b19mbG9hdCAobmVhcmVzdF9taWNyb3NlY29uZCAoY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0KSkpXG47O1xuXG5sZXQgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgcyA9XG4gIGlmIFNwYW5fZmxvYXQuKCA+ICkgcyBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFNwYW5fZmxvYXQuKCA8ICkgcyBtaW5fc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucy5TcGFuIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBzcGFuXCJcbiAgICAgIHNcbiAgICAgIFslc2V4cF9vZjogU3Bhbl9mbG9hdC50XTtcbiAgKCogVXNpbmcgW1RpbWUuU3Bhbi50b19zZWNdIChiZWluZyB0aGUgaWRlbnRpdHkpIHNvIHRoYXRcbiAgICAgd2UgbWFrZSBkb24ndCBhcHBseSB0b28gbWFueSBjb252ZXJzaW9uXG4gICAgIC0gVG9vIG1hbnkgOiBgW1NwYW4udF0gLT4gW2FdIC0+IFt0XWBcbiAgICAgLSBPbmx5IE9uZSA6IGBbU3Bhbi50XT09W2FdIC0+IFt0XWAuICopXG4gIG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoU3Bhbl9mbG9hdC50b19zZWMgcylcbjs7XG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2ZfaW50NjNfbnMgSW50NjMubWF4X3ZhbHVlXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBvZl9wYXJ0cyA9IG9mX3BhcnRzXG4gIGxldCB0b19wYXJ0cyA9IHRvX3BhcnRzXG5lbmRcblxuKCogTGVnYWN5IGRlZmluaXRpb25zIGJhc2VkIG9uIHJvdW5kaW5nIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAqKVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgdG9fc3BhbiA9IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIHR5cGUgc3BhbiA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG4gICgqIG5hbm9zZWNvbmRzIG9yIG5vbmUgKilcblxuICBsZXQgbm9uZSA9IEludDYzLm1pbl92YWx1ZVxuICBsZXQgaXNfbm9uZSB0ID0gSW50NjMuKHQgPSBub25lKVxuICBsZXQgaXNfc29tZSB0ID0gSW50NjMuKHQgPD4gbm9uZSlcbiAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuID0gaXNfc29tZSAodG9faW50NjNfbnMgc3BhbilcblxuICBsZXRbQGNvbGRdIHJhaXNlX3NvbWVfZXJyb3Igc3BhbiA9XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlNwYW4uT3B0aW9uLnNvbWUgdmFsdWUgbm90IHJlcHJlc2VudGFibGVcIiAoc3BhbiA6IHNwYW4pXVxuICA7O1xuXG4gIGxldCBzb21lIHNwYW4gPVxuICAgIGlmIHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuIHRoZW4gdG9faW50NjNfbnMgc3BhbiBlbHNlIHJhaXNlX3NvbWVfZXJyb3Igc3BhblxuICA7O1xuXG4gIGxldCB1bmNoZWNrZWRfdmFsdWUgdCA9IG9mX2ludDYzX25zIHRcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bmNoZWNrZWRfdmFsdWUgdClcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX3NvbWUgdFxuICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJTcGFuLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICA7O1xuXG4gIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHQgLT4gc29tZSB0XG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG9mX2ludDYzX25zIHQpXG5cbiAgbW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gICAgbW9kdWxlIFNvbWUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHNwYW5cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOnNvbWVfaXNfcmVwcmVzZW50YWJsZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBxdWlja2NoZWNrX3Nocmlua2VyIH5mOnNvbWVfaXNfcmVwcmVzZW50YWJsZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFNvbWUudCBvcHRpb24gW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6b2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX29wdGlvblxuICAgICAgfmZfaW52ZXJzZTp0b19vcHRpb25cbiAgOztcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGJpbl9pb11cblxuICAgICAgICBsZXQgdjFfc29tZSBzcGFuID1cbiAgICAgICAgICBhc3NlcnQgKHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuKTtcbiAgICAgICAgICB0b19pbnQ2M19ucyBzcGFuXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwX29mOiBTdGFibGUuVjEudCBvcHRpb25dICh0b19vcHRpb24gdClcbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID0gb2Zfb3B0aW9uIChbJW9mX3NleHA6IFN0YWJsZS5WMS50IG9wdGlvbl0gcylcbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biBpID0gaWYgaXNfbm9uZSBpIHRoZW4gbm9uZSBlbHNlIHYxX3NvbWUgKG9mX2ludDYzX25zIGkpXG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2ludDYzX2V4blxuICAgICAgICAgICAgdG9faW50NjNcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgYmluX2lvXVxuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgICAgU2V4cC5MaXN0XG4gICAgICAgICAgICAoaWYgaXNfbm9uZSB0IHRoZW4gW10gZWxzZSBbIFN0YWJsZS5WMi5zZXhwX29mX3QgKHVuY2hlY2tlZF92YWx1ZSB0KSBdKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IGZhaWwgKCkgPVxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgICBcIlRpbWVfbnMuU3Bhbi5PcHRpb24uU3RhYmxlLlYyLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGEgTGlzdCBvZiAwLTEgQXRvbVwiXG4gICAgICAgICAgICAgIHNleHBcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIF8gLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICAgICAgICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICAgICB8IFtdIC0+IG5vbmVcbiAgICAgICAgICAgICB8IFsgU2V4cC5BdG9tIHggXSAtPlxuICAgICAgICAgICAgICAgc29tZVxuICAgICAgICAgICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gaSA9IGlcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICAgIEludDYzLlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfaW50NjNfZXhuXG4gICAgICAgICAgICB0b19pbnQ2M1xuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gU3RhYmxlLlYyLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvLCBoYXNoXVxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuLk9wdGlvblwiXG5cbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgZW5kKVxuICAgIGVuZClcblxuICBpbmNsdWRlIChJbnQ2MyA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlMFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBPcHRpb24uU3RhYmxlLlYxXG4gICAgbW9kdWxlIFYyID0gT3B0aW9uLlN0YWJsZS5WMlxuICBlbmRcbmVuZFxuXG5sZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB3YWxsLWNsb2NrIG1pZG5pZ2h0ICopIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGUgKFNwYW4gOiBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIHRcblxuXG5sZXQgc3RhcnRfb2ZfZGF5IDogdCA9IFNwYW4uemVyb1xubGV0IHN0YXJ0X29mX25leHRfZGF5IDogdCA9IFNwYW4uZGF5XG5sZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9IFNwYW4uKCAtICkgc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5uYW5vc2Vjb25kXG5sZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IHRcblxubGV0W0Bjb2xkXSBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbnB1dCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgfl86KHNwYW4gOiBTcGFuLnQpXVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBpc19pbnZhbGlkIHNwYW4gPVxuICAoKiBXaHkgd2UgdXNlIFtTcGFuLiggPiApXSByYXRoZXIgdGhhbiBbKCA+PSApXSBiZWxvdzpcblxuICAgICBXZSBhbGxvdyB0byByZXByZXNlbnQgdGhlIGVuZC1vZi1kYXkgc2VudGluZWwgdmFsdWUgKFsyNC4wMDAwMDAwMDBoXSksIHdoaWNoIGlzIG5vdFxuICAgICBpdHNlbGYgYSB2YWxpZCBjbG9jayBmYWNlIHRpbWUuICBIb3dldmVyLCBzaW5jZSB2YWxpZCBjbG9jayBmYWNlIHRpbWVzIHJlYWRpbHlcbiAgICAgcm91bmQgdXAgdG8gaXQsIGl0J3MgYmV0dGVyIHRvIGFsbG93IGl0IHRvIGJlIHJlcHJlc2VudGVkLiAqKVxuICBTcGFuLiggPCApIHNwYW4gc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA+ICkgc3BhbiBzdGFydF9vZl9uZXh0X2RheVxuOztcblxubGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPSBub3QgKGlzX2ludmFsaWQgc3BhbilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IHNwYW5cblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuIGVsc2Ugc3BhblxuOztcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCBzcGFuID0gaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3BhblxubGV0IGFkZF9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWJfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgYWRkIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgbmV4dCB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLm5leHQgdClcbmxldCBwcmV2IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ucHJldiB0KVxubGV0IGRpZmYgdCB1ID0gU3Bhbi4oIC0gKSB0IHVcblxubGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgKCogU2ltaWxhciB0byBbVGltZS5PZmRheS5jcmVhdGVdLCBpZiB3ZSBkZXRlY3QgYSBsZWFwIHNlY29uZCB3ZSBzdHJpcCBvZmYgYWxsXG4gICAgIHN1Yi1zZWNvbmQgZWxlbWVudHMgc28gdGhhdCBISDpNTTo2MC5YWFhYWFhYWFggaXMgYWxsIG1hcHBlZCB0byBISDpNTTo2MC4gKilcbiAgbGV0IG1zLCB1cywgbnMgPVxuICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICBpblxuICBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTcGFuLlN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTcGFuLlN0YWJsZS5WMiA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFNwYW4uU3RhYmxlLlYyLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIGxldCB0b19zdHJpbmdfd2l0aF91bml0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGZ1biB0IH51bml0IC0+XG4gICAgICAgIGlmIFNwYW4uKCA8ICkgdCBzdGFydF9vZl9kYXkgfHwgU3Bhbi4oIDwgKSBzdGFydF9vZl9uZXh0X2RheSB0XG4gICAgICAgIHRoZW4gXCJJbmNvcnJlY3QgZGF5XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHNpeHR5ID0gITYwIGluXG4gICAgICAgICAgbGV0IHRob3VzYW5kID0gITEwMDAgaW5cbiAgICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHQgaW5cbiAgICAgICAgICBsZXQgdXMgPSBucyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG5zID0gbnMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbXMgPSB1cyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IHVzID0gdXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgcyA9IG1zIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgbXMgPSBtcyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gcyAvIHNpeHR5IGluXG4gICAgICAgICAgbGV0IHMgPSBzIG1vZCBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IGggPSBtIC8gc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gbSBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCB1bml0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCAoYE5hbm9zZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgU2Vjb25kKSBhcyB1bml0IC0+IHVuaXRcbiAgICAgICAgICAgIHwgYE1pbnV0ZV9vcl9sZXNzIC0+XG4gICAgICAgICAgICAgIGlmIG5zIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHVzIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBtcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGBNaW51dGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICB8IGBNaW51dGUgLT4gNVxuICAgICAgICAgICAgfCBgU2Vjb25kIC0+IDhcbiAgICAgICAgICAgIHwgYE1pbGxpc2Vjb25kIC0+IDEyXG4gICAgICAgICAgICB8IGBNaWNyb3NlY29uZCAtPiAxNVxuICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiAxOFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczowIGg7XG4gICAgICAgICAgQnl0ZXMuc2V0IHN0ciAyICc6JztcbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczozIG07XG4gICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICB8IGBNaW51dGUgLT4gKClcbiAgICAgICAgICAgfCAoYFNlY29uZCB8IGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA1ICc6JztcbiAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczo2IHM7XG4gICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICB8IGBTZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgfCAoYE1pbGxpc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICBCeXRlcy5zZXQgc3RyIDggJy4nO1xuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjkgbXM7XG4gICAgICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAoKVxuICAgICAgICAgICAgICAgICB8IChgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjEyIHVzO1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxNSBucykpKSk7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzdHIpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9uYW5vc2Vjb25kcyBzdHJpbmcgfnBvcyB+dW50aWwgPVxuICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgIGxldCBkaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9kaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IHBvcyA9IHJlZiBwb3MgaW5cbiAgICAgICgqIHJlYWQgdXAgdG8gMTAgZGlnaXRzOyBzdG9yZSB0aGUgZmlyc3QgOSwgdXNlIHRoZSAxMHRoIHRvIHJvdW5kICopXG4gICAgICB3aGlsZSAhcG9zIDwgdW50aWwgJiYgIW51bV9kaWdpdHMgPCAxMCBkb1xuICAgICAgICBsZXQgYyA9IHN0cmluZy5bIXBvc10gaW5cbiAgICAgICAgaWYgQ2hhci5pc19kaWdpdCBjXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGluY3IgbnVtX2RpZ2l0cztcbiAgICAgICAgICBpZiAhbnVtX2RpZ2l0cyA8IDEwXG4gICAgICAgICAgdGhlbiBkaWdpdHMgOj0gKCFkaWdpdHMgKiAxMCkgKyBDaGFyLmdldF9kaWdpdF9leG4gY1xuICAgICAgICAgIGVsc2UgaWYgQ2hhci5nZXRfZGlnaXRfZXhuIGMgPj0gNVxuICAgICAgICAgIHRoZW4gaW5jciBkaWdpdHNcbiAgICAgICAgICBlbHNlICgpKTtcbiAgICAgICAgaW5jciBwb3NcbiAgICAgIGRvbmU7XG4gICAgICAoKiBpZiB0aGVyZSBhcmUgbWlzc2luZyBkaWdpdHMsIGFkZCB6ZXJvZXMgKilcbiAgICAgIGlmICFudW1fZGlnaXRzIDwgOSB0aGVuIGRpZ2l0cyA6PSAhZGlnaXRzICogSW50LnBvdyAxMCAoOSAtICFudW1fZGlnaXRzKTtcbiAgICAgICFkaWdpdHNcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgbmFub3NlY29uZHMgPVxuICAgICAgICBpZiBJbnQuZXF1YWwgc3Vic2VjX2xlbiAwXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlXG4gICAgICAgICAgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3M6KHN1YnNlY19wb3MgKyAxKSB+dW50aWw6KHN1YnNlY19wb3MgKyBzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCBuYW5vc2Vjb25kcylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uc2Vjb25kIHNlYylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4ubWludXRlIG1pbilcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uaG91ciBocilcbiAgICAgIHw+IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IE9mZGF5X2hlbHBlcnMucGFyc2Ugc3RyaW5nIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwIDogdCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImV4cGVjdGVkIGFuIGF0b21cIiBzZXhwXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgIChTZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hciA6IHQgU2V4cF9ncmFtbWFyLnQpXG4gICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5UaW1lX25zLk9mZGF5LnRcIilcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyAodCA6IHQpID0gdG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBOYW5vc2Vjb25kXG4gICAgbGV0IHNleHBfb2ZfdCAodCA6IHQpID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBsZXQgdG9faW50NjMgdCA9IFNwYW5fbnMuU3RhYmxlLlYyLnRvX2ludDYzIHRcbiAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW5fbnMuU3RhYmxlLlYyLm9mX2ludDYzX2V4biB0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChcbiAgU3RhYmxlLlYxIDpcbiAgICBDb21wYXJhdG9yLlNcbiAgd2l0aCB0eXBlIHQgOj0gdFxuICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0YWJsZS5WMSA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBpbmNsdWRlIChTdGFibGUuVjEgOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLk9mZGF5XCJcbiAgZW5kKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RhYmxlLlYxLnRfc2V4cF9ncmFtbWFyXG5sZXQgdG9fbWljcm9zZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWNyb3NlY29uZFxubGV0IHRvX21pbGxpc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWlsbGlzZWNvbmRcbmxldCB0b19zZWNfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBTZWNvbmRcbmxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWludXRlX29yX2xlc3NcblxubGV0IG9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgPVxuICB0cnlcbiAgICBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpTdGFibGUuVjEuY3JlYXRlX2Zyb21fcGFyc2VkXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiBjYW5ub3QgcGFyc2Ugc3RyaW5nXCJcbiAgICAgICAgICB+XzooU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbiA6IHN0cmluZylcbiAgICAgICAgICB+XzooZXhuIDogZXhuKV1cbjs7XG5cbmxldCBldmVyeSA9XG4gIGxldCByZWMgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjID1cbiAgICAoKiBBc3N1bWVzIFtzcGFuXSwgW3N0YXJ0XSwgYW5kIFtzdG9wXSBhcmUgdmFsaWQgb2ZkYXlzLiBBc3N1bWVzIFtzdGFydCA8IHN0b3BdLlxuICAgICAgIEFzc3VtZXMgW3NwYW4gPiAwXS4gKilcbiAgICBsZXQgYWNjID0gc3RhcnQgOjogYWNjIGluXG4gICAgbGV0IHN0YXJ0ID0gU3Bhbi4oICsgKSBzdGFydCBzcGFuIGluXG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wICgqIGNhbm5vdCBvdmVyZmxvdyAqKVxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2NcbiAgaW5cbiAgKCogaW50ZXJuYWwgW2V2ZXJ5XSBuYW1lZCB0byBzaG93IHVwIGluIHN0YWNrIHRyYWNlcyAqKVxuICBsZXQgZXZlcnkgc3BhbiB+c3RhcnQgfnN0b3AgPVxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggW3N0YXJ0XSA+IFtzdG9wXVwiIChzdGFydCA6IHQpIChzdG9wIDogdCldXG4gICAgZWxzZSBpZiBTcGFuLiggPD0gKSBzcGFuIFNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIHNwYW5cIiB+Xzooc3BhbiA6IFNwYW4udCldXG4gICAgZWxzZSBpZiBpc19pbnZhbGlkIHNwYW5cbiAgICB0aGVuIE9rIFsgc3RhcnQgXVxuICAgIGVsc2UgT2sgKGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYzpbXSlcbiAgaW5cbiAgZXZlcnlcbjs7XG5cbmxldCBzbWFsbF9kaWZmID1cbiAgbGV0IGhvdXIgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uaG91ciBpblxuICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgIGxldCBvZmRheTIgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTIpIGluXG4gICAgbGV0IGRpZmYgPSBvZmRheTEgLSBvZmRheTIgaW5cbiAgICAoKiAgZDEgaXMgaW4gKC1ob3VyOyBob3VyKSAqKVxuICAgIGxldCBkMSA9IEludDYzLnJlbSBkaWZmIGhvdXIgaW5cbiAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICBsZXQgZDIgPSBJbnQ2My5yZW0gKGQxICsgaG91cikgaG91ciBpblxuICAgIGxldCBkID0gaWYgZDIgPiBob3VyIC8gSW50NjMub2ZfaW50IDIgdGhlbiBkMiAtIGhvdXIgZWxzZSBkMiBpblxuICAgIFNwYW4ub2ZfaW50NjNfbnMgZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwic21hbGxfZGlmZlwiID1cbiAgbGV0IHRlc3QgeCB5ID1cbiAgICBsZXQgZGlmZiA9IHNtYWxsX2RpZmYgeCB5IGluXG4gICAgcHJpbnRmICFcInNtYWxsX2RpZmYgJXMgJXMgPSAlc1xcblwiICh0b19zdHJpbmcgeCkgKHRvX3N0cmluZyB5KSAoU3Bhbi50b19zdHJpbmcgZGlmZilcbiAgaW5cbiAgbGV0IGV4YW1wbGVzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biAoeCwgeSkgLT4gb2Zfc3RyaW5nIHgsIG9mX3N0cmluZyB5KVxuICAgICAgWyBcIjEyOjAwXCIsIFwiMTI6MDVcIjsgXCIxMjo1OFwiLCBcIjEzOjAyXCI7IFwiMDA6NTJcIiwgXCIyMzoxOVwiOyBcIjAwOjAwXCIsIFwiMjQ6MDBcIiBdXG4gIGluXG4gIExpc3QuaXRlciBleGFtcGxlcyB+ZjooZnVuICh4LCB5KSAtPlxuICAgIHRlc3QgeCB5O1xuICAgIHRlc3QgeSB4KTtcbiAgWyVleHBlY3RcbiAgICB7fFxuICAgIHNtYWxsX2RpZmYgMTI6MDA6MDAuMDAwMDAwMDAwIDEyOjA1OjAwLjAwMDAwMDAwMCA9IC01bVxuICAgIHNtYWxsX2RpZmYgMTI6MDU6MDAuMDAwMDAwMDAwIDEyOjAwOjAwLjAwMDAwMDAwMCA9IDVtXG4gICAgc21hbGxfZGlmZiAxMjo1ODowMC4wMDAwMDAwMDAgMTM6MDI6MDAuMDAwMDAwMDAwID0gLTRtXG4gICAgc21hbGxfZGlmZiAxMzowMjowMC4wMDAwMDAwMDAgMTI6NTg6MDAuMDAwMDAwMDAwID0gNG1cbiAgICBzbWFsbF9kaWZmIDAwOjUyOjAwLjAwMDAwMDAwMCAyMzoxOTowMC4wMDAwMDAwMDAgPSAtMjdtXG4gICAgc21hbGxfZGlmZiAyMzoxOTowMC4wMDAwMDAwMDAgMDA6NTI6MDAuMDAwMDAwMDAwID0gMjdtXG4gICAgc21hbGxfZGlmZiAwMDowMDowMC4wMDAwMDAwMDAgMjQ6MDA6MDAuMDAwMDAwMDAwID0gMHNcbiAgICBzbWFsbF9kaWZmIDI0OjAwOjAwLjAwMDAwMDAwMCAwMDowMDowMC4wMDAwMDAwMDAgPSAwcyB8fV1cbjs7XG5cbmxldCBnZW5faW5jbCA9IFNwYW4uZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gU3Bhbi5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCBzdGFydF9vZl9kYXkgc3RhcnRfb2ZfbmV4dF9kYXlcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSAoU3BhbiA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5ncyAqKVxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG5sZXQgdG9fbWlsbGlzZWNfc3RyaW5nID0gdG9fbWlsbGlzZWNvbmRfc3RyaW5nXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG5vdyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xubW9kdWxlIE9mZGF5ID0gT2ZkYXlfbnNcblxudHlwZSB0ID0gU3Bhbi50ICgqIHNpbmNlIHRoZSBVbml4IGVwb2NoICgxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQykgKilcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnQgPSBTcGFuLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSAoU3BhbiA6IFF1aWNrY2hlY2suU19yYW5nZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5sZXQgbm93ID0gU3Bhbi5zaW5jZV91bml4X2Vwb2NoXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgZXBvY2ggPSBTcGFuLnplcm9cbmxldCBhZGQgPSBTcGFuLiggKyApXG5sZXQgc3ViID0gU3Bhbi4oIC0gKVxubGV0IGRpZmYgPSBTcGFuLiggLSApXG5sZXQgYWJzX2RpZmYgdCB1ID0gU3Bhbi5hYnMgKGRpZmYgdCB1KVxubGV0IG1heCA9IFNwYW4ubWF4XG5sZXQgbWluID0gU3Bhbi5taW5cbmxldCBuZXh0ID0gU3Bhbi5uZXh0XG5sZXQgcHJldiA9IFNwYW4ucHJldlxubGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggdCA9IHRcbmxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoIHMgPSBzXG5sZXQgdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCA6IEludDYzLnQgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG5sZXRbQGlubGluZV0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggaSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2ZfaW50NjNfbnMgaSlcbmxldFtAY29sZF0gb3ZlcmZsb3cgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfbnM6IG92ZXJmbG93XCJdXG5sZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwgdDJcbmxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4gdDJcblxubGV0IGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA8ICkgc3VtIHggZWxzZSBTcGFuLiggPiApIHN1bSB4XG47O1xuXG5sZXQgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA+ICkgZGlmZiB4IGVsc2UgU3Bhbi4oIDwgKSBkaWZmIHhcbjs7XG5cbmxldCBhZGRfZXhuIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfZXhuIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgdGhlbiBvdmVyZmxvdyAoKSBlbHNlIGRpZmZcbjs7XG5cbmxldCBhZGRfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bVxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIGRpZmZcbjs7XG5cbmxldCB0b19pbnRfbnNfc2luY2VfZXBvY2ggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLnRvX2ludF9uc19zaW5jZV9lcG9jaDogdW5zdXBwb3J0ZWQgb24gMzJiaXQgbWFjaGluZXNcIlxuOztcblxubGV0IG9mX2ludF9uc19zaW5jZV9lcG9jaCBpID0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggKEludDYzLm9mX2ludCBpKVxuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWUgPVxuICBpZiBUaW1lX2Zsb2F0LiggPCApIHRpbWUgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBUaW1lX2Zsb2F0LiggPiApIHRpbWUgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHRpbWVcIlxuICAgICAgdGltZVxuICAgICAgWyVzZXhwX29mOiBUaW1lX2Zsb2F0LlN0YWJsZS5XaXRoX3V0Y19zZXhwLlYyLnRdXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHRpbWUgPVxuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHRpbWUgPVxuICBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWU7XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWwgPVxuICBmYWlsd2l0aHNcbiAgICB+aGVyZTpbJWhlcmVdXG4gICAgXCJUaW1lX25zLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICBpbnRlcnZhbFxuICAgIFslc2V4cF9vZjogU3Bhbi50XVxuOztcblxubGV0IG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsID1cbiAgaWYgU3Bhbi4oIDw9ICkgaW50ZXJ2YWwgU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWw7XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPSBhZGQgYmFzZSAoU3Bhbi5zY2FsZV9pbnQ2MyBpbnRlcnZhbCAoU3Bhbi5kaXYgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPSBTcGFuLnJhbmRvbSA/c3RhdGUgKClcblxubW9kdWxlIFV0YyA6IHNpZ1xuICB2YWwgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiB0IC0+IERhdGUwLnQgKiBTcGFuLnRcbiAgdmFsIG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogRGF0ZTAudCAtPiBTcGFuLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIGEgcmVjcmVhdGlvbiBvZiB0aGUgc3lzdGVtIGNhbGwgZ210aW1lIHNwZWNpYWxpemVkIHRvIHRoZSBmaWVsZHMgd2UgbmVlZCB0aGF0IGFsc29cbiAgICAgZG9lc24ndCByZWx5IG9uIFVuaXguICopXG4gIGxldCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0ICggITwgKSBpID0gSW50NjMub2ZfaW50X2V4biBpIGluXG4gICAgbGV0ICggIT4gKSB0ID0gSW50NjMudG9faW50X2V4biB0IGluXG4gICAgbGV0IG5zX3NpbmNlX2Vwb2NoID0gdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCBpblxuICAgIGxldCBuc19wZXJfZGF5ID0gITw4Nl80MDAgKiAhPDFfMDAwXzAwMF8wMDAgaW5cbiAgICBsZXQgYXBwcm94X2RheXNfZnJvbV9lcG9jaCA9IG5zX3NpbmNlX2Vwb2NoIC8gbnNfcGVyX2RheSBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgaWYgbnNfc2luY2VfZXBvY2ggPCAhPDAgJiYgYXBwcm94X2RheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgPD4gbnNfc2luY2VfZXBvY2hcbiAgICAgIHRoZW4gYXBwcm94X2RheXNfZnJvbV9lcG9jaCAtICE8MVxuICAgICAgZWxzZSBhcHByb3hfZGF5c19mcm9tX2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5ID0gbnNfc2luY2VfZXBvY2ggLSAobnNfcGVyX2RheSAqIGRheXNfZnJvbV9lcG9jaCkgaW5cbiAgICBsZXQgZGF0ZSA9XG4gICAgICBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaCAhPmRheXNfZnJvbV9lcG9jaCB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICBpblxuICAgIGxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFNwYW4ub2ZfaW50NjNfbnMgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9XG4gICAgYXNzZXJ0IChcbiAgICAgIFNwYW4uKCA+PSApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uemVyb1xuICAgICAgJiYgU3Bhbi4oIDwgKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLmRheSk7XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICBpblxuICAgIGxldCBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggPSBTcGFuLnNjYWxlX2ludCBTcGFuLmRheSBkYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4uKCArICkgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIG1vZHVsZSBPZmRheV9hc19zcGFuID0gc3RydWN0XG4gICAgICBvcGVuIEludC5PXG5cbiAgICAgIGxldCBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gPVxuICAgICAgICBsZXQgc2Vjb25kcyA9IFNwYW4udG9faW50X3NlYyBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgbGV0IGggPSBzZWNvbmRzIC8gMzYwMCBpblxuICAgICAgICBsZXQgbSA9IHNlY29uZHMgLyA2MCAlIDYwIGluXG4gICAgICAgIGxldCBzID0gc2Vjb25kcyAlIDYwIGluXG4gICAgICAgIHNwcmludGYgXCIlMDJkOiUwMmQ6JTAyZFwiIGggbSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHdvX2RpZ2l0X29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyaW5nID0gMiAmJiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgIEludC5vZl9zdHJpbmcgc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgc2Vjb25kc19zdHJpbmcgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBoX3N0cmluZzsgbV9zdHJpbmc7IHNfc3RyaW5nIF0gLT5cbiAgICAgICAgICBsZXQgaCA9IHR3b19kaWdpdF9vZl9zdHJpbmcgaF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbSA9IHR3b19kaWdpdF9vZl9zdHJpbmcgbV9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgcyA9IHR3b19kaWdpdF9vZl9zdHJpbmcgc19zdHJpbmcgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludF9zZWMgKCgoKGggKiA2MCkgKyBtKSAqIDYwKSArIHMpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuc19vZl8xMDBfbXMgPSAxMDBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX21zID0gMTBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfbXMgPSAxXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfdXMgPSAxMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfdXMgPSAxMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX3VzID0gMV8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfbnMgPSAxMDBcbiAgICAgIGxldCBuc19vZl8xMF9ucyA9IDEwXG4gICAgICBsZXQgbnNfb2ZfMV9ucyA9IDFcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhbiA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgc3ViX3NlY29uZF9zcGFuIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgaWYgbnMgPSAwXG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAxZFwiIChucyAvIG5zX29mXzEwMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAyZFwiIChucyAvIG5zX29mXzEwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwM2RcIiAobnMgLyBuc19vZl8xX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA0ZFwiIChucyAvIG5zX29mXzEwMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA1ZFwiIChucyAvIG5zX29mXzEwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNmRcIiAobnMgLyBuc19vZl8xX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA3ZFwiIChucyAvIG5zX29mXzEwMF9ucylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA4ZFwiIChucyAvIG5zX29mXzEwX25zKVxuICAgICAgICBlbHNlIHNwcmludGYgXCIuJTA5ZFwiIG5zXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViX3NlY29uZF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgICAgICB0aGVuIFNwYW4uemVyb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlnaXRzID0gU3RyaW5nLmNob3BfcHJlZml4X2V4biBzdHJpbmcgfnByZWZpeDpcIi5cIiBpblxuICAgICAgICAgIGFzc2VydCAoU3RyaW5nLmZvcl9hbGwgZGlnaXRzIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICAgIGxldCBtdWx0aXBsaWVyID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sZW5ndGggZGlnaXRzIHdpdGhcbiAgICAgICAgICAgIHwgMSAtPiBuc19vZl8xMDBfbXNcbiAgICAgICAgICAgIHwgMiAtPiBuc19vZl8xMF9tc1xuICAgICAgICAgICAgfCAzIC0+IG5zX29mXzFfbXNcbiAgICAgICAgICAgIHwgNCAtPiBuc19vZl8xMDBfdXNcbiAgICAgICAgICAgIHwgNSAtPiBuc19vZl8xMF91c1xuICAgICAgICAgICAgfCA2IC0+IG5zX29mXzFfdXNcbiAgICAgICAgICAgIHwgNyAtPiBuc19vZl8xMDBfbnNcbiAgICAgICAgICAgIHwgOCAtPiBuc19vZl8xMF9uc1xuICAgICAgICAgICAgfCA5IC0+IG5zX29mXzFfbnNcbiAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCAoSW50Lm9mX3N0cmluZyBkaWdpdHMgKiBtdWx0aXBsaWVyKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHNwYW4gPVxuICAgICAgICBhc3NlcnQgKFNwYW4uKCA+PSApIHNwYW4gU3Bhbi56ZXJvICYmIFNwYW4uKCA8ICkgc3BhbiBTcGFuLmRheSk7XG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzcGFuIHw+IFNwYW4udG9faW50X3NlYyB8PiBTcGFuLm9mX2ludF9zZWMgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IFNwYW4uKCAtICkgc3BhbiBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuIF4gc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICBsZXQgcHJlZml4X2xlbiA9IDggaW5cbiAgICAgICAgKCogXCJISDpNTTpERFwiICopXG4gICAgICAgIGxldCBzdWZmaXhfbGVuID0gbGVuIC0gcHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjpwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6cHJlZml4X2xlbiB+bGVuOnN1ZmZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBzdWJfc2Vjb25kX29mX3N0cmluZyBzdWJfc2Vjb25kX3N0cmluZyBpblxuICAgICAgICBTcGFuLiggKyApIHNlY29uZHNfc3BhbiBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgbGV0IGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gVXRjLnRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheV9hc19zcGFuLnRvX3N0cmluZyBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBeIFwiWlwiXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBkYXRlX3N0cmluZywgb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSA9IFN0cmluZy5sc3BsaXQyX2V4biBzdHJpbmcgfm9uOicgJyBpblxuICAgICAgbGV0IG9mZGF5X3N0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSB+c3VmZml4OlwiWlwiIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlX3N0cmluZyBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXlfYXNfc3Bhbi5vZl9zdHJpbmcgb2ZkYXlfc3RyaW5nIGluXG4gICAgICBVdGMub2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBvZmRheVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgZW5kKVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgIFNleHBfZ3JhbW1hci50YWdcbiAgICAgICAgdF9zZXhwX2dyYW1tYXJcbiAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICB+dmFsdWU6KEF0b20gXCJDb3JlLlRpbWVfbnMuQWx0ZXJuYXRlX3NleHAudFwiKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgKCogc2VlIHRlc3RzIGluIGxpYi9jb3JlL3Rlc3Qvc3JjL3Rlc3RfdGltZV9ucyB0aGF0IGVuc3VyZSBzdGFiaWxpdHkgb2YgdGhpc1xuICAgICAgICAgICByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IEFsdGVybmF0ZV9zZXhwLlN0YWJsZVxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG5cbigqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZS5tbCBmdW5jdG9yLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldCBUaW1lX25zXG4gICB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxubW9kdWxlIFRvX2FuZF9vZl9zdHJpbmcgOiBzaWdcbiAgdmFsIG9mX2RhdGVfb2ZkYXkgOiB6b25lOlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiB0XG5cbiAgdmFsIG9mX2RhdGVfb2ZkYXlfcHJlY2lzZVxuICAgIDogIERhdGUudFxuICAgIC0+IE9mZGF5LnRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IFsgYE9uY2Ugb2YgdCB8IGBUd2ljZSBvZiB0ICogdCB8IGBOZXZlciBvZiB0IF1cblxuICB2YWwgdG9fZGF0ZV9vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50ICogT2ZkYXkudFxuXG4gIHZhbCB0b19kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICB0XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBEYXRlLnQgKiBPZmRheS50ICogWyBgT25seSB8IGBBbHNvX2F0IG9mIHQgfCBgQWxzb19za2lwcGVkIG9mIERhdGUudCAqIE9mZGF5LnQgXVxuXG4gIHZhbCB0b19kYXRlIDogdCAtPiB6b25lOlpvbmUudCAtPiBEYXRlLnRcbiAgdmFsIHRvX29mZGF5IDogdCAtPiB6b25lOlpvbmUudCAtPiBPZmRheS50XG4gIHZhbCBjb252ZXJ0IDogZnJvbV90ejpab25lLnQgLT4gdG9fdHo6Wm9uZS50IC0+IERhdGUudCAtPiBPZmRheS50IC0+IERhdGUudCAqIE9mZGF5LnRcbiAgdmFsIHJlc2V0X2RhdGVfY2FjaGUgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHV0Y19vZmZzZXQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IFNwYW4udFxuXG4gIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldF1cIl1cblxuICB2YWwgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCA6IHN0cmluZyAtPiB0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbdG9fc3RyaW5nX3V0Y11cIl1cbiAgdmFsIHRvX3N0cmluZ191dGMgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fZmlsZW5hbWVfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2ZpbGVuYW1lX3N0cmluZyA6IHN0cmluZyAtPiB6b25lOlpvbmUudCAtPiB0XG4gIHZhbCB0b19zdHJpbmdfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3NlY19zdHJpbmdfd2l0aF96b25lIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2xvY2FsaXplZF9zdHJpbmcgOiB6b25lOlpvbmUudCAtPiBzdHJpbmcgLT4gdFxuXG4gIHZhbCBvZl9zdHJpbmdfZ2VuXG4gICAgOiAgZGVmYXVsdF96b25lOih1bml0IC0+IFpvbmUudClcbiAgICAtPiBmaW5kX3pvbmU6KHN0cmluZyAtPiBab25lLnQpXG4gICAgLT4gc3RyaW5nXG4gICAgLT4gdFxuXG4gIHZhbCB0b19zdHJpbmdfYWJzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19hYnNfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3BhcnRzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuXG4gIHZhbCBvY2N1cnJlbmNlXG4gICAgOiAgWyBgRmlyc3RfYWZ0ZXJfb3JfYXQgfCBgTGFzdF9iZWZvcmVfb3JfYXQgXVxuICAgIC0+IHRcbiAgICAtPiBvZmRheTpPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2Zsb2F0MC5tbCwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgVGltZV9ucyB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxuICBtb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2ZfaW50NjNfbnMgdFxuXG4gICAgbGV0IG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSA9XG4gICAgICBsZXQgZGF5cyA9XG4gICAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaCB8PiBJbnQ2My5vZl9pbnRcbiAgICAgIGluXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAoZGF5cyAqIFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXkpXG4gICAgICArIFNwYW4udG9faW50NjNfbnMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICAgIDs7XG5cbiAgICBsZXQgdG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0YyA9XG4gICAgICBzdWJfZXhuIChTcGFuLm9mX2ludDYzX25zIHJlbGF0aXZlKSBvZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IG9mX2Fic29sdXRlIGFic29sdXRlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgU3Bhbi50b19pbnQ2M19ucyAoYWRkX2V4biBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGMpXG4gICAgOztcblxuICAgIGxldCBuc19wZXJfZGF5ID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmRheVxuXG4gICAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICAgICgqIG5vdGUgVGltZV9ucyByZXByZXNlbnRzIGFib3V0IDE0NiB5ZWFycywgbm90IGVub3VnaCBmb3IgW0RhdGUuY3JlYXRlX2V4bl0gdG8gZXZlclxuICAgICAgICAgcmFpc2UgKilcbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gdCAvIG5zX3Blcl9kYXkgaW5cbiAgICAgICgqIHdoZW4gW3RdIGlzIG5lZ2F0aXZlIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIHRoYXQgY2FsY3VsYXRlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICAgIGlmIHQgPCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ICogbnNfcGVyX2RheVxuICAgICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIDs7XG5cbiAgICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2luX25zID0gZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9IHQgLSBkYXlzX2Zyb21fZXBvY2hfaW5fbnMgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgcmVtYWluZGVyIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBJbnQ2My50b19pbnRfZXhuIGRheXNfZnJvbV9lcG9jaFxuICAgICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZSB0ID1cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgICAgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgICgqIFRoaXMgaW50ZXJmYWNlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2ludGYuWm9uZSwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgICB0aGlzIHRvIHdvcmsuXG5cbiAgICAgICBUaGUgcHJvYmxlbSBpcyBoYXMgcmVmZXJlbmNlcyB0byBUaW1lMF9pbnRmLlMsIHdoaWNoIGlzIHRoZSBmdW5jdG9yIGlucHV0IGludGVyZmFjZVxuICAgICAgIHRoYXQgVGltZV9ucyBjdXJyZW50bHkgZG9lcyBub3Qgc2F0aXNmeS4gKilcblxuICAgIHR5cGUgdGltZSA9IHRcbiAgICB0eXBlIHQgPSBab25lLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIG1vZHVsZSBJbmRleCA9IFpvbmUuSW5kZXhcblxuICAgICgqIGNvcGllZCBmdW5jdGlvbnMgcmVleHBvcnRlZCBmcm9tIFpvbmUgKilcblxuICAgIHZhbCB1dGMgOiB0XG4gICAgdmFsIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcbiAgICB2YWwgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgOiB0IC0+IEluZGV4LnQgLT4gYm9vbFxuXG4gICAgKCogbmV3IGZ1bmN0aW9ucyBkZWZpbmVkIGJlbG93ICopXG5cbiAgICB2YWwgaW5kZXggOiB0IC0+IHRpbWUgLT4gSW5kZXgudFxuICAgIHZhbCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IDogdCAtPiBEYXRlX2FuZF9vZmRheS50IC0+IHRpbWVcbiAgICB2YWwgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSA6IHQgLT4gdGltZSAtPiBEYXRlX2FuZF9vZmRheS50XG4gICAgdmFsIG5leHRfY2xvY2tfc2hpZnQgOiB0IC0+IHN0cmljdGx5X2FmdGVyOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICAgIHZhbCBwcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBhdF9vcl9iZWZvcmU6dGltZSAtPiAodGltZSAqIFNwYW4udCkgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdGltZSA9IHRcblxuICAgIGluY2x1ZGUgWm9uZVxuXG4gICAgbGV0IG9mX3NwYW5faW5fc2Vjb25kcyBzcGFuX2luX3NlY29uZHMgPVxuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHNwYW5faW5fc2Vjb25kc1xuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgOztcblxuICAgIGxldCBvZl90aW1lX2luX3NlY29uZHMgdGltZV9pbl9zZWNvbmRzID1cbiAgICAgIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVfaW5fc2Vjb25kc1xuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBTcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lID1cbiAgICAgIHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSA9XG4gICAgICBEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCByZWxhdGl2ZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkub2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4IHQgdGltZSA9IGluZGV4IHQgKHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lKVxuXG4gICAgbGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCAodG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID1cbiAgICAgIHsgbXV0YWJsZSB6b25lIDogWm9uZS50XG4gICAgICA7IG11dGFibGUgY2FjaGVfc3RhcnRfaW5jbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV91bnRpbF9leGNsIDogdFxuICAgICAgOyBtdXRhYmxlIGVmZmVjdGl2ZV9kYXlfc3RhcnQgOiB0XG4gICAgICA7IG11dGFibGUgZGF0ZSA6IERhdGUwLnRcbiAgICAgIH1cbiAgZW5kXG5cbiAgbGV0IGRhdGVfY2FjaGUgOiBEYXRlX2NhY2hlLnQgPVxuICAgIHsgem9uZSA9IFpvbmUudXRjXG4gICAgOyBjYWNoZV9zdGFydF9pbmNsID0gZXBvY2hcbiAgICA7IGNhY2hlX3VudGlsX2V4Y2wgPSBlcG9jaFxuICAgIDsgZWZmZWN0aXZlX2RheV9zdGFydCA9IGVwb2NoXG4gICAgOyBkYXRlID0gRGF0ZTAudW5peF9lcG9jaFxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXRfZGF0ZV9jYWNoZSAoKSA9XG4gICAgZGF0ZV9jYWNoZS56b25lIDwtIFpvbmUudXRjO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBEYXRlMC51bml4X2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIHBoeXNfZXF1YWwgem9uZSBkYXRlX2NhY2hlLnpvbmVcbiAgICAmJiB0aW1lID49IGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIHRpbWUgPCBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIHN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IGFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IG1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbCB8PiBtaW4gKFpvbmUuaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGRhdGVfY2FjaGUuem9uZSA8LSB6b25lO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGNhY2hlX3N0YXJ0X2luY2w7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gY2FjaGVfdW50aWxfZXhjbDtcbiAgICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlZmZlY3RpdmVfZGF5X3N0YXJ0O1xuICAgICAgZGF0ZV9jYWNoZS5kYXRlIDwtIGRhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRhdGVfY2FjaGUuZGF0ZVxuICA7O1xuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRpZmYgdGltZSBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBpcyBhYm91dCB0byBzaGlmdCAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGZvcndhcmQ6IG5vIGVmZmVjdCAqKVxuICAgICAgICAgIGBPbmx5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGJhY2s6IHRoaXMgZGF0ZS9vZmRheSB3aWxsIGJlIHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKGFkZCB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXyAtPiBgT25seVxuICAgIGluXG4gICAgZGF0ZSwgb2ZkYXksIGFtYmlndWl0eVxuICA7O1xuXG4gIGxldCBjb252ZXJ0IH5mcm9tX3R6IH50b190eiBkYXRlIG9mZGF5ID1cbiAgICBsZXQgc3RhcnRfdGltZSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6ZnJvbV90eiBkYXRlIG9mZGF5IGluXG4gICAgdG9fZGF0ZV9vZmRheSB+em9uZTp0b190eiBzdGFydF90aW1lXG4gIDs7XG5cbiAgbGV0IHV0Y19vZmZzZXQgdCB+em9uZSA9XG4gICAgbGV0IHV0Y19lcG9jaCA9IFpvbmUuZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB6b25lIHQgaW5cbiAgICBTcGFuLiggLSApXG4gICAgICAoRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdXRjX2Vwb2NoKVxuICAgICAgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbiAgOztcblxuICBsZXQgb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lID1cbiAgICBsZXQgdXRjX29mZnNldCA9IHV0Y19vZmZzZXQgdGltZSB+em9uZSBpblxuICAgIGxldCBpc191dGMgPSBTcGFuLiggPSApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIGluXG4gICAgaWYgaXNfdXRjXG4gICAgdGhlbiBcIlpcIlxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyAoaWYgU3Bhbi4oIDwgKSB1dGNfb2Zmc2V0IFNwYW4uemVybyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpXG4gICAgICAgIDsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWRcbiAgICAgICAgICAgIChPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uYWJzIHV0Y19vZmZzZXQpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfcGFydHMgPVxuICAgIGxldCBhdHRlbXB0IHRpbWUgfnpvbmUgPVxuICAgICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgICAgOyBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIE9mZGF5LnRvX3N0cmluZyBvZmRheTsgb2Zmc2V0X3N0cmluZyBdXG4gICAgICBdXG4gICAgaW5cbiAgICBmdW4gdGltZSB+em9uZSAtPlxuICAgICAgdHJ5IGF0dGVtcHQgdGltZSB+em9uZSB3aXRoXG4gICAgICB8IChfIDogZXhuKSAtPlxuICAgICAgICAoKiBJZiB3ZSBvdmVyZmxvdyBhcHBseWluZyB0aGUgVVRDIG9mZnNldCwgdHJ5IGFnYWluIHdpdGggVVRDIHRpbWUuICopXG4gICAgICAgIGF0dGVtcHQgdGltZSB+em9uZTpab25lLnV0Y1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBTdHJpbmcuY29uY2F0XG4gICAgICB+c2VwOlwiIFwiXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBvZmRheSBeIG9mZnNldF9zdHJpbmcgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzIHRpbWUgfnpvbmUgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgbGV0IHRvX3N0cmluZ191dGMgdCA9IHRvX3N0cmluZ19hYnMgdCB+em9uZTpab25lLnV0Y1xuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX3V0Y1xuXG4gIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0aW1lIH56b25lID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJUXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3NlY19zdHJpbmcgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmdfd2l0aF96b25lIHQgfnpvbmUgPSB0b19zZWNfc3RyaW5nIHQgfnpvbmUgXiBvZmZzZXRfc3RyaW5nIHQgfnpvbmVcblxuICBsZXQgdG9fZmlsZW5hbWVfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgXiBcIl9cIlxuICAgIF4gU3RyaW5nLnRyXG4gICAgICAgIH50YXJnZXQ6JzonXG4gICAgICAgIH5yZXBsYWNlbWVudDonLSdcbiAgICAgICAgKFN0cmluZy5kcm9wX3N1ZmZpeCAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KSAzKVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX25zX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9uc19vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5lbmRcblxuaW5jbHVkZSBUb19hbmRfb2Zfc3RyaW5nXG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgdG9fdGltZSA9IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IG9mX3RpbWUgPSBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcblxubW9kdWxlIF8gPSBzdHJ1Y3RcbiAgb3BlbiBQcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWVcblxuICBsZXQgKCkgPVxuICAgIER1cmF0aW9uLmZvcm1hdFxuICAgIDo9IChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgZHVyYXRpb25fb2Zfc3BhbiBzID0gcyB8PiBTcGFuLnRvX2ludDYzX25zIHw+IER1cmF0aW9uLm9mX25hbm9zZWNvbmRzXG4gICAgICBsZXQgc3Bhbl9vZl9kdXJhdGlvbiBkID0gZCB8PiBEdXJhdGlvbi50b19uYW5vc2Vjb25kcyB8PiBTcGFuLm9mX2ludDYzX25zXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IHN0cmluZyB8PiBTcGFuLm9mX3N0cmluZyB8PiBkdXJhdGlvbl9vZl9zcGFuXG5cbiAgICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgZHVyYXRpb25zID1cbiAgICAgICAgbGV0IHNwYW5zID0gZHVyYXRpb25zIHw+IExpc3QubWFwIH5mOnNwYW5fb2ZfZHVyYXRpb24gaW5cbiAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgc3BhbnNcbiAgICAgICAgICB8PiBMaXN0Lm1heF9lbHQgfmNvbXBhcmU6U3Bhbi5jb21wYXJlXG4gICAgICAgICAgfD4gT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAgICAgICAgfmY6U3Bhbi50b191bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgIH5kZWZhdWx0OlVuaXRfb2ZfdGltZS5OYW5vc2Vjb25kXG4gICAgICAgIGluXG4gICAgICAgIHNwYW5zIHw+IExpc3QubWFwIH5mOihTcGFuLnRvX3N0cmluZ19odW0gfnVuaXRfb2ZfdGltZSB+YWxpZ25fZGVjaW1hbDp0cnVlKVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgTWFwID0gc3RydWN0IGVuZFxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZSA9IHN0cnVjdCBlbmRcblxubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBpbnRlcnJ1cHRpYmxlX3BhdXNlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV9uc191bml4X29yX1RpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmxldCBzZXhwX29mX3RfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfbnNfdW5peF9vcl9UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG4iLCIoKiBBIHN1YnN0cmluZyBpcyBhIGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4gIFdlIHVzZSBhXG4gICBmdW5jdG9yIGJlY2F1c2Ugd2Ugd2FudCBzdWJzdHJpbmdzIG9mIFtzdHJpbmddIGFuZCBbYmlnc3RyaW5nXS5cbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmdfaW50ZlxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZy50XG5cbm1vZHVsZSBCbGl0ID0gc3RydWN0XG4gIHR5cGUgKCdzcmMsICdkc3QpIHQgPSAoJ3NyYywgJ2RzdCkgQmxpdC5ibGl0b1xuXG4gIGxldCBzdHJpbmdfYnl0ZXMgfnNyYyA/c3JjX3BvcyA/c3JjX2xlbiB+ZHN0ID8oZHN0X3BvcyA9IDApICgpID1cbiAgICBsZXQgc3JjX3BvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3M6c3JjX3Bvc1xuICAgICAgICA/bGVuOnNyY19sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzcmMpXG4gICAgaW5cbiAgICBCeXRlcy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgbGV0IHN0cmluZ19zdHJpbmcgPSBzdHJpbmdfYnl0ZXNcbiAgbGV0IGJ5dGVzX2J5dGVzID0gQnl0ZXMuYmxpdG9cbiAgbGV0IHN0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG9cbiAgbGV0IGJ5dGVzX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfc3RyaW5nID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYnl0ZXMgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbmVuZFxuXG4oKiBXZSBjYW4ndCBjYWxsIHRoZSBiYXNlIG1vZHVsZSBbQmFzZV0gYmVjYXVzZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSB3YW50cyB0byBhY2Nlc3NcbiAgIHRoZSBbQmFzZV0gbGlicmFyeSBkaXJlY3RseSwgYW5kIHdlJ2QgYmUgc2hhZG93aW5nIGl0LiAqKVxubW9kdWxlIEYgKFVuZGVybHlpbmcgOiBCYXNlKSA6IFMgd2l0aCB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnQgPSBzdHJ1Y3RcbiAgdHlwZSBiYXNlID0gVW5kZXJseWluZy50XG5cbiAgdHlwZSB0ID1cbiAgICB7IGJhc2UgOiBVbmRlcmx5aW5nLnRcbiAgICA7IHBvcyA6IGludFxuICAgIDsgbGVuIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICgqIG5vdGUgd2Ugb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBbcXVpY2tjaGVja19nZW5lcmF0b3JdIGJlbG93LCBvbmNlIHdlJ3ZlIGRlZmluZWRcbiAgICAgW2NyZWF0ZV0gKilcblxuICAoKiB7W1xuICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5wb3MpO1xuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQubGVuKTtcbiAgICAgICAgIGFzc2VydCAodC5wb3MgKyB0LmxlbiA8PSBCYXNlLmxlbmd0aCB0LmJhc2UpO1xuICAgICAgIDs7IF19ICopXG5cbiAgbGV0IGJhc2UgdCA9IHQuYmFzZVxuICBsZXQgcG9zIHQgPSB0LnBvc1xuICBsZXQgbGVuZ3RoIHQgPSB0LmxlblxuICBsZXQgaXNfZW1wdHkgdCA9IEludC5lcXVhbCB0LmxlbiAwXG5cbiAgbGV0IGJhc2Vfb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgYmFzZV9vZl9iaWdzdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGUgP3BvcyA/bGVuIGJhc2UgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zXG4gICAgICAgID9sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooVW5kZXJseWluZy5sZW5ndGggYmFzZSlcbiAgICBpblxuICAgIHsgYmFzZTsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgbGV0IG9wZW4gUXVpY2tjaGVjay5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgYmFzZSA9IFVuZGVybHlpbmcucXVpY2tjaGVja19nZW5lcmF0b3IgaW5cbiAgICBsZXQgYmFzZV9sZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIGluXG4gICAgbGV0JWJpbmQgbGVuID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCBiYXNlX2xlbiBpblxuICAgIGxldCViaW5kIHBvcyA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGJhc2VfbGVuIC0gbGVuKSBpblxuICAgIHJldHVybiAoY3JlYXRlIH5wb3MgfmxlbiBiYXNlKVxuICA7O1xuXG4gIGxldCBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSA9IFVuZGVybHlpbmcuZ2V0IChiYXNlIHQpIChwb3MgdCArIGkpXG5cbiAgbGV0IGdldCB0IGkgPVxuICAgIGlmIGkgPj0gMCAmJiBpIDwgbGVuZ3RoIHRcbiAgICB0aGVuIGdldF9ub19ib3VuZHNfY2hlY2sgdCBpXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgOztcblxuICBsZXQgc3ViID9wb3MgP2xlbiB0ID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgIGluXG4gICAgeyBiYXNlID0gdC5iYXNlOyBwb3MgPSB0LnBvcyArIHBvczsgbGVuIH1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcmcgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbW9kdWxlIEVsdCA9IENoYXJcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9IGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBhY2MgKGdldCB0IGkpKSAoaSArIDEpIGluXG4gICAgICBnbyBpbml0IDAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiAoZ2V0IHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5pbml0IH5mIC0+XG4gICAgICAgICAgIGxldCByZWMgZ28gYWNjIGkgPVxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBpIGFjYyAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpKSAoaSArIDEpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGdvIGluaXQgMCBbQG5vbnRhaWxdKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgaSAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmRcblxuICBtb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UwIChNYWtlX2FyZylcblxuICBsZXQgZm9sZCA9IEMuZm9sZFxuICBsZXQgaXRlciA9IEMuaXRlclxuICBsZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG4gIGxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbiAgKCogW0MudG9fbGlzdF0gaGFzIHRvIGNvbnN0cnVjdCB0aGVuIHJldmVyc2UgdGhlIGxpc3QgKilcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihnZXQgdClcbiAgbGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxuICBsZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG4gIGxldCBmaW5kID0gQy5maW5kXG4gIGxldCBleGlzdHMgPSBDLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxuICBsZXQgbWVtID0gQy5tZW1cbiAgbGV0IGNvdW50ID0gQy5jb3VudFxuICBsZXQgc3VtID0gQy5zdW1cbiAgbGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbiAgbGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbiAgbGV0IGZvbGRpID0gQy5mb2xkaVxuICBsZXQgaXRlcmkgPSBDLml0ZXJpXG4gIGxldCBleGlzdHNpID0gQy5leGlzdHNpXG4gIGxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbiAgbGV0IGNvdW50aSA9IEMuY291bnRpXG4gIGxldCBmaW5kaSA9IEMuZmluZGlcbiAgbGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5cbiAgbGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICAgIGlmIG4gPCAwXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgICBlbHNlIChcbiAgICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgICAgfCBfIC0+IG9uX2Vycm9yKVxuICA7O1xuXG4gIGxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9wcmVmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczpuXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3N1ZmZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOjBcbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxuICBsZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxuICBsZXQgYmxpdF90byAodHlwZSBhKSAoYmxpdCA6IChVbmRlcmx5aW5nLnQsIGEpIEJsaXQudCkgdCB+ZHN0IH5kc3RfcG9zID1cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF90b19zdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19ieXRlcyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuICBsZXQgYmxpdF9iYXNlID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRcblxuICBsZXQgYmxpdF9mcm9tIH5uYW1lICh0eXBlIGEpIChibGl0IDogKGEsIGJhc2UpIEJsaXQudCkgdCB+c3JjIH5zcmNfcG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IHQubGVuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwiU3Vic3RyaW5nLmJsaXRfZnJvbV8lcyBsZW4gPiBzdWJzdHJpbmcgbGVuZ3RoIDogJWQgPiAlZFwiXG4gICAgICAgIG5hbWVcbiAgICAgICAgbGVuXG4gICAgICAgIHQubGVuXG4gICAgICAgICgpO1xuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+c3JjX2xlbjpsZW4gfmRzdDp0LmJhc2UgfmRzdF9wb3M6dC5wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcInN0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZ1xuICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcImJpZ3N0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX2JpZ3N0cmluZ1xuICBsZXQgb2ZfYmFzZSBiYXNlID0geyBiYXNlOyBwb3MgPSAwOyBsZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIH1cbiAgbGV0IG9mX3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9zdHJpbmcgeClcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9iaWdzdHJpbmcgeClcblxuICBsZXQgbWFrZSAodHlwZSBhKSBjcmVhdGUgKGJsaXQgOiAoYmFzZSwgYSkgQmxpdC50KSB0ID1cbiAgICBsZXQgZHN0ID0gY3JlYXRlIHQubGVuIGluXG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zOjAgKCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZToobWFrZSBCeXRlcy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzIHgpXG4gIDs7XG5cbiAgbGV0IHRvX2JpZ3N0cmluZyA9IG1ha2UgQmlnc3RyaW5nLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG5cbiAgbGV0IGNvbmNhdF9nZW4gY3JlYXRlX2RzdCBibGl0X2RzdCB0cyA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gbGVuIHQgLT4gbGVuICsgbGVuZ3RoIHQpIGluXG4gICAgbGV0IGRzdCA9IGNyZWF0ZV9kc3QgbGVuIGluXG4gICAgaWdub3JlXG4gICAgICAoTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBkc3RfcG9zIHQgLT5cbiAgICAgICAgIGJsaXRfZHN0IHQgfmRzdCB+ZHN0X3BvcztcbiAgICAgICAgIGRzdF9wb3MgKyBsZW5ndGggdClcbiAgICAgICA6IGludCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IGNvbmNhdCB0cyA9IG9mX2Jhc2UgKGNvbmNhdF9nZW4gVW5kZXJseWluZy5jcmVhdGUgYmxpdF9iYXNlIHRzKVxuXG4gIGxldCBjb25jYXRfc3RyaW5nIHRzID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooY29uY2F0X2dlbiBCeXRlcy5jcmVhdGUgYmxpdF90b19zdHJpbmcgdHMpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF9iaWdzdHJpbmcgdHMgPSBjb25jYXRfZ2VuIEJpZ3N0cmluZy5jcmVhdGUgYmxpdF90b19iaWdzdHJpbmcgdHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBNYWtlX3N1YnN0cmluZy5TXG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQnl0ZXMudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJ5dGVzLmNyZWF0ZVxuICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQnl0ZXMuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJ5dGVzX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RyaW5nX2lkX2ludGZcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyX3dpdGhfYmluX3NoYXBlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3Byb3QuU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IGNoZWNrX2Zvcl93aGl0ZXNwYWNlID1cbiAgICAgICAgICBsZXQgaW52YWxpZCBzIHJlYXNvbiA9XG4gICAgICAgICAgICBFcnJvciAoc3ByaW50ZiBcIiclcycgaXMgbm90IGEgdmFsaWQgJXMgYmVjYXVzZSAlc1wiIHMgTS5tb2R1bGVfbmFtZSByZWFzb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gcyAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgaWYgSW50LiggPSApIGxlbiAwXG4gICAgICAgICAgICB0aGVuIGludmFsaWQgcyBcIml0IGlzIGVtcHR5XCJcbiAgICAgICAgICAgIGVsc2UgaWYgQ2hhci5pc193aGl0ZXNwYWNlIHMuWzBdIHx8IENoYXIuaXNfd2hpdGVzcGFjZSBzLltsZW4gLSAxXVxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBoYXMgd2hpdGVzcGFjZSBvbiB0aGUgZWRnZVwiXG4gICAgICAgICAgICBlbHNlIE9rICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHZhbGlkYXRlIHMgPSBSZXN1bHQubWFwX2Vycm9yIChNLnZhbGlkYXRlIHMpIH5mOkVycm9yLnRvX3N0cmluZ19tYWNoXG5cbiAgICAgICAgbGV0IGNoZWNrIHMgPVxuICAgICAgICAgIGlmIE0uaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb25cbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGNoZWNrX2Zvcl93aGl0ZXNwYWNlIHMgd2l0aFxuICAgICAgICAgICAgfCBPayAoKSAtPiB2YWxpZGF0ZSBzXG4gICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIGVycm9yKVxuICAgICAgICAgIGVsc2UgdmFsaWRhdGUgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgICAgICBsZXQgcHAgPSBTdHJpbmcucHBcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGludmFsaWRfYXJnIGVyclxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuU3RhYmxlLlYxLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICAgbWF0Y2ggY2hlY2sgcyB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBzXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoU3RyaW5nKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdHJpbmdcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICAgIGxldCBvcGVuIEJpbl9wcm90LlNoYXBlIGluXG4gICAgICAgICAgbWF0Y2ggTS5jYWxsZXJfaWRlbnRpdHkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBiaW5fc2hhcGVfdFxuICAgICAgICAgIHwgU29tZSB1dWlkIC0+IGFubm90YXRlIHV1aWQgYmluX3NoYXBlX3RcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVF93aXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRfd2l0aF9jb21wYXJhdG9yXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVF93aXRoX2NvbXBhcmF0b3IpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlX2xhdGVzdCA9IFN0YWJsZS5WMVxuICBpbmNsdWRlIFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTdHJpbmcucXVpY2tjaGVja19vYnNlcnZlclxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgU3RyaW5nLmdlbl9ub25lbXB0eScgQ2hhci5nZW5fcHJpbnRcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgfmY6KGZ1biBzdHJpbmcgLT4gY2hlY2sgc3RyaW5nIHw+IFJlc3VsdC5pc19vaylcbiAgOztcblxuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZVxuICAgICAgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyXG4gICAgICAoc3RydWN0XG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gRm4uY29uc3QgKE9rICgpKVxuICAgICAgICBsZXQgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gPSB0cnVlXG4gICAgICBlbmQpXG4gICAgICAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfZGlzdGluY3RfYmluX3NoYXBlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9wcm90LlNoYXBlLlV1aWQudFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZVxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gU29tZSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICAgICAgKClcblxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZVxuICBNYWtlXG4gICAgKHN0cnVjdFxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlN0cmluZ19pZFwiXG4gICAgZW5kKVxuICAgICgpXG5cbm1vZHVsZSBTdHJpbmdfd2l0aG91dF92YWxpZGF0aW9uX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZ2xvYmFsaXplID0gZ2xvYmFsaXplX3N0cmluZ1xuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBGbi5pZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0YWJsZV91bml0X3Rlc3RfaW50ZlxuXG5tb2R1bGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcInNleHAgZGVzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHNleHBfYXNfc3RyaW5nIHw+IFNleHAub2Zfc3RyaW5nIHw+IFslb2Zfc2V4cDogVC50XSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPlxuICAgICAgICAgICBPcl9lcnJvci50YWdfYXJnXG4gICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICBcImNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBzZXhwXCJcbiAgICAgICAgICAgICAoc2V4cF9hc19zdHJpbmcsIGBFeHBlY3RlZCB0KVxuICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogWyBgRXhwZWN0ZWQgb2YgVC50IF1dXG4gICAgICAgICB8IE9rIHQnIC0+XG4gICAgICAgICAgIGlmIFQuZXF1YWwgdCB0J1xuICAgICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgICAgXCJzZXhwIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHNlcmlhbGl6YXRpb25cIiA9XG4gICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgKExpc3QubWFwIFQudGVzdHMgfmY6KGZ1biAodCwgc2V4cF9hc19zdHJpbmcsIF8pIC0+XG4gICAgICAgICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgc2V4cF9hc19zdHJpbmcgaW5cbiAgICAgICAgICAgbGV0IHNlcmlhbGl6ZWRfc2V4cCA9IFQuc2V4cF9vZl90IHQgaW5cbiAgICAgICAgICAgaWYgU2V4cC4oIDw+ICkgc2VyaWFsaXplZF9zZXhwIHNleHBcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCBzZXhwLCBgQnV0X2dvdCBzZXJpYWxpemVkX3NleHApXG4gICAgICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFNleHAudCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgXV0pKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgXywgZXhwZWN0ZWRfYmluX2lvKSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCB0b19iaW5fc3RyaW5nIHQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfYmluX2lvID0gdG9fYmluX3N0cmluZyB0IGluXG4gICAgICBpZiBTdHJpbmcuKCA8PiApIHNlcmlhbGl6ZWRfYmluX2lvIGV4cGVjdGVkX2Jpbl9pb1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKHQsIGBFeHBlY3RlZCBleHBlY3RlZF9iaW5faW8sIGBCdXRfZ290IHNlcmlhbGl6ZWRfYmluX2lvKVxuICAgICAgICAgIFslc2V4cF9vZjogVC50ICogWyBgRXhwZWN0ZWQgb2Ygc3RyaW5nIF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSBzZXJpYWxpemVkX2Jpbl9pbyBpblxuICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImJpbl9pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3NleHBfZGVzZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVClcbiAgaW5jbHVkZSBNYWtlX2Jpbl9pb190ZXN0IChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3Vub3JkZXJlZF9jb250YWluZXIgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVGVzdCA9IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5Vbm9yZGVyZWRfY29udGFpbmVyX3Rlc3RcblxuICBsZXQldGVzdF91bml0IFwic2V4cFwiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCB7IFRlc3Quc2V4cHM7IF8gfSkgLT5cbiAgICAgIGxldCBzZXhwcyA9IExpc3QubWFwIHNleHBzIH5mOlNleHAub2Zfc3RyaW5nIGluXG4gICAgICBsZXQgc2VyaWFsaXplZF9lbGVtZW50cyA9XG4gICAgICAgIG1hdGNoIFQuc2V4cF9vZl90IHQgd2l0aFxuICAgICAgICB8IFNleHAuTGlzdCBzZXhwcyAtPiBzZXhwc1xuICAgICAgICB8IFNleHAuQXRvbSBfIC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImV4cGVjdGVkIGxpc3Qgd2hlbiBzZXJpYWxpemluZyB1bm9yZGVyZWQgY29udGFpbmVyXCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFQuc2V4cF9vZl90XG4gICAgICBpblxuICAgICAgbGV0IHNvcnRlZF9zZXhwcyA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2V4cHMgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2VyaWFsaXplZCA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2VyaWFsaXplZF9lbGVtZW50cyBpblxuICAgICAgaWYgbm90IChMaXN0LmVxdWFsIFNleHAuKCA9ICkgc29ydGVkX3NleHBzIHNvcnRlZF9zZXJpYWxpemVkKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cHMsIGBCdXRfZ290IHNlcmlhbGl6ZWRfZWxlbWVudHMpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgbGlzdCBdXTtcbiAgICAgIGxldCBzZXhwX3Blcm11dGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIHNleHBzKSBpblxuICAgICAgTGlzdC5pdGVyIHNleHBfcGVybXV0YXRpb25zIH5mOihmdW4gc2V4cHMgLT5cbiAgICAgICAgbGV0IHQnID0gVC50X29mX3NleHAgKFNleHAuTGlzdCBzZXhwcykgaW5cbiAgICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbXNpbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBpc19jb25jYXRlbmF0aW9uIHN0cmluZyBzdHJpbmdzID1cbiAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgdGhlbiBMaXN0LmZvcl9hbGwgc3RyaW5ncyB+ZjpTdHJpbmcuaXNfZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCByZXZfc2tpcHBlZCBzdHJpbmdzID1cbiAgICAgICAgbWF0Y2ggc3RyaW5ncyB3aXRoXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgICAgfCBwcmVmaXggOjogc3RyaW5ncyAtPlxuICAgICAgICAgIGxldCBjb250aW51ZSAoKSA9IGxvb3AgKHByZWZpeCA6OiByZXZfc2tpcHBlZCkgc3RyaW5ncyBpblxuICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9wcmVmaXggfnByZWZpeCBzdHJpbmcgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY29udGludWUgKClcbiAgICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgIGlzX2NvbmNhdGVuYXRpb24gc3RyaW5nIChMaXN0LnJldl9hcHBlbmQgcmV2X3NraXBwZWQgc3RyaW5ncykgfHwgY29udGludWUgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBzdHJpbmdzKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LmJpbl9pb19oZWFkZXI7IGJpbl9pb19lbGVtZW50czsgXyB9KSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCBlbGVtZW50cyA9IGJpbl9pb19lbGVtZW50cyBpblxuICAgICAgbGV0IGJpbl9pb19vZl9lbGVtZW50cyBlbGVtZW50cyA9IGJpbl9pb19oZWFkZXIgXiBTdHJpbmcuY29uY2F0IGVsZW1lbnRzIGluXG4gICAgICBsZXQgc2VyaWFsaXplZCA9IEJpbmFibGUudG9fc3RyaW5nIGJpbmFibGVfbSB0IGluXG4gICAgICBsZXQgc2VyaWFsaXphdGlvbl9tYXRjaGVzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXg6YmluX2lvX2hlYWRlciBzZXJpYWxpemVkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBlbGVtZW50c19zdHJpbmcgLT4gaXNfY29uY2F0ZW5hdGlvbiBlbGVtZW50c19zdHJpbmcgZWxlbWVudHNcbiAgICAgIGluXG4gICAgICBpZiBub3Qgc2VyaWFsaXphdGlvbl9tYXRjaGVzXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcInNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgKGJpbl9pb19oZWFkZXIsIGVsZW1lbnRzKSwgYEJ1dF9nb3Qgc2VyaWFsaXplZClcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIHN0cmluZyAqIHN0cmluZyBsaXN0IF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCBwZXJtdXRhdGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIGVsZW1lbnRzKSBpblxuICAgICAgTGlzdC5pdGVyIHBlcm11dGF0YXRpb25zIH5mOihmdW4gZWxlbWVudHMgLT5cbiAgICAgICAgbGV0IHQnID0gQmluYWJsZS5vZl9zdHJpbmcgYmluYWJsZV9tIChiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImJpbi1pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG4oKiBUaGUgbW9kdWxlIFtUXSBzZXJ2ZXMgdG8gZW5mb3JjZSB0aGUgaW52YXJpYW50IHRoYXQgYWxsIEJsYW5nLnQgdmFsdWVzIGFyZSBpbiBhXG4gICBub3JtYWwgZm9ybSB3aGVyZWJ5IGJvb2xlYW4gY29uc3RhbnRzIFRydWUgYW5kIEZhbHNlIG9ubHkgYXBwZWFyIGFzIHRoZSB0b3Btb3N0XG4gICBjb25zdHJ1Y3RvciAtLSBpbiBhbnkgb3RoZXIgcG9zaXRpb24gdGhleSBhcmUgc2ltcGxpZmllZCBhd2F5IHVzaW5nIGxhd3Mgb2ZcbiAgIGJvb2xlYW4gYWxnZWJyYS5cblxuICAgV2UgYWxzbyBlbmZvcmNlIHRoYXQgbmVzdGVkIFtBbmRdcyBhbmQgW09yXXMgZWFjaCBsZWFuIHRvIHRoZSByaWdodCBzbyB0aGF0IFtldmFsXVxuICAgZG9lc24ndCBuZWVkIHNvIG11Y2ggc3RhY2sgc3BhY2UgYXMgaXQgd291bGQgaWYgdGhleSBsZWFuZWQgdG8gdGhlIGxlZnQuICBUaG91Z2h0XG4gICBleHBlcmltZW50OiBjb21wYXJlIGhvdyBbZXZhbF0gd29ya3Mgb24gcmlnaHQtbGVhbmluZyBbQW5kIChhLCBBbmQgKGIsIEFuZCAoYywgZCkpKV1cbiAgIHZlcnN1cyBsZWZ0LWxlYW5pbmcgW0FuZCAoQW5kIChBbmQgKGEsIGIpLCBjKSwgZCldLiAgVGhlIGZvcm1lciBpcyB0aGUgYmVzdCBjYXNlIGFuZCBpc1xuICAgZW5mb3JjZWQuXG5cbiAgIE5vdGU6IHRoaXMgZmlsZSBkZXZpYXRlcyBmcm9tIHRoZSB1c3VhbCBwYXR0ZXJuIG9mIG1vZHVsZXMgd2l0aCBTdGFibGUgaW50ZXJmYWNlcyBpblxuICAgdGhhdCB0aGUgU3RhYmxlIHN1Yi1tb2R1bGUgaXMgbm90IHRoZSBmaXJzdCB0aGluZyB0byBiZSBkZWZpbmVkIGluIHRoZSBtb2R1bGUuICBUaGVcbiAgIHJlYXNvbiBmb3IgdGhpcyBkZXZpYXRpb24gaXMgc28gdGhhdCBvbmUgY2FuIGNvbnZpbmNlIG9uZXNlbGYgb2YgdGhlIGFmb3JlbWVudGlvbmVkXG4gICBpbnZhcmlhbnQgYWZ0ZXIgcmVhZGluZyBvbmx5IHRoaXMgc21hbGwgYW1vdW50IG9mIGNvZGUuICBBZnRlciBkZWZpbmluZyBUIHdlIHRoZW5cbiAgIGltbWVkaWF0ZWx5IGRlZmluZSBpdHMgU3RhYmxlIGludGVyZmFjZS5cbiopXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICB2YWwgaW52YXJpYW50IDogJ2EgdCAtPiB1bml0XG4gIHZhbCB0cnVlXyA6ICdhIHRcbiAgdmFsIGZhbHNlXyA6ICdhIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZGFsc28gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgb3JlbHNlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGJhc2UgOiAnYSAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9XG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gIGxldCBpbnZhcmlhbnQgPVxuICAgIGxldCBzdWJ0ZXJtcyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSB8IEJhc2UgXyAtPiBbXVxuICAgICAgfCBOb3QgdDEgLT4gWyB0MSBdXG4gICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IFsgdDE7IHQyIF1cbiAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IFsgdDE7IHQyOyB0MyBdXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvbnRhaW5zX25vX2NvbnN0YW50cyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgdCAtPiBMaXN0Lml0ZXIgfmY6Y29udGFpbnNfbm9fY29uc3RhbnRzIChzdWJ0ZXJtcyB0KVxuICAgIGluXG4gICAgZnVuIHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgOztcblxuICBsZXQgdHJ1ZV8gPSBUcnVlXG4gIGxldCBmYWxzZV8gPSBGYWxzZVxuICBsZXQgYmFzZSB2ID0gQmFzZSB2XG5cbiAgbGV0IG5vdF8gPSBmdW5jdGlvblxuICAgIHwgVHJ1ZSAtPiBGYWxzZVxuICAgIHwgRmFsc2UgLT4gVHJ1ZVxuICAgIHwgTm90IHQgLT4gdFxuICAgIHwgdCAtPiBOb3QgdFxuICA7O1xuXG4gIGxldCByZWMgYW5kYWxzbyB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IF8sIEZhbHNlIHwgRmFsc2UsIF8gLT4gRmFsc2VcbiAgICB8IG90aGVyLCBUcnVlIHwgVHJ1ZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IEFuZCAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW0FuZF1zIGxlYW4gcmlnaHQgLS0gc2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIEFuZCAodDFhLCBhbmRhbHNvIHQxYiB0MilcbiAgICB8IF8gLT4gQW5kICh0MSwgdDIpXG4gIDs7XG5cbiAgbGV0IHJlYyBvcmVsc2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBUcnVlIHwgVHJ1ZSwgXyAtPiBUcnVlXG4gICAgfCBvdGhlciwgRmFsc2UgfCBGYWxzZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IE9yICh0MWEsIHQxYiksIF8gLT5cbiAgICAgICgqIG5lc3RlZCBbT3JdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBPciAodDFhLCBvcmVsc2UgdDFiIHQyKVxuICAgIHwgXyAtPiBPciAodDEsIHQyKVxuICA7O1xuXG4gIGxldCBpZl8gYSBiIGMgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgVHJ1ZSAtPiBiXG4gICAgfCBGYWxzZSAtPiBjXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggYiwgYyB3aXRoXG4gICAgICAgfCBUcnVlLCBfIC0+IG9yZWxzZSBhIGNcbiAgICAgICB8IF8sIEZhbHNlIC0+IGFuZGFsc28gYSBiXG4gICAgICAgfCBfLCBUcnVlIC0+IG9yZWxzZSAobm90XyBhKSBiXG4gICAgICAgfCBGYWxzZSwgXyAtPiBhbmRhbHNvIChub3RfIGEpIGNcbiAgICAgICB8IF8gLT4gSWYgKGEsIGIsIGMpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgOiBzaWdcbiAgICAoKiBUSElTIFRZUEUgQU5EIElUUyBTRVJJQUxJWkFUSU9OUyBTSE9VTEQgTkVWRVIgQkUgQ0hBTkdFRCAtIFBMRUFTRSBTUEVBSyBXSVRIXG4gICAgICAgQU5PVEhFUiBERVZFTE9QRVIgSUYgWU9VIE5FRUQgTU9SRSBERVRBSUwgKilcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgKCogdGhlIHJlbWFpbmRlciBvZiB0aGlzIHNpZ25hdHVyZSBjb25zaXN0cyBvZiBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnNcbiAgICAgICBvZiBzZXhwIGNvbnZlcnNpb25zIHRoYXQgYXJlIGFsc28gdXNlZnVsIG1vcmUgZ2VuZXJhbGx5ICopXG5cbiAgICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGdhdGhlcl9jb25qdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICAgIHZhbCBnYXRoZXJfZGlzanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuXG4gICAgKCogVGhpcyB0eXBlIGlzIGFzc3VtZWQgdG8gYmUgc3RhYmxlIGlmIHRoZSAnYSBpcyBzdGFibGUgKHNlZSBiaWcgY29tbWVudCBhYm92ZSkuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIChfIDogJ2EgU3RhYmxlX3dpdG5lc3MudCkgOiAnYSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFQgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4gICAgdHlwZSBzZXhwID0gU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiBzZXhwIGxpc3RcblxuICAgICgqIGNoZWFwIGltcG9ydCAqKVxuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIGFuZCdzICopXG4gICAgbGV0IGdhdGhlcl9jb25qdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIG9yJ3MgKilcbiAgICBsZXQgZ2F0aGVyX2Rpc2p1bmN0cyB0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgT3IgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCAodCA6OiBhY2MpIHRzXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBbIHQgXVxuICAgIDs7XG5cbiAgICAoKiBbYW5kX10gYW5kIFtvcl9dIHVzZSBbZm9sZF9yaWdodF0gaW5zdGVhZCBvZiBbZm9sZF9sZWZ0XSB0byBhdm9pZCBxdWFkcmF0aWNcbiAgICAgICBiZWhhdmlvciB3aXRoIFthbmRhbHNvXSBvciBbb3JlbHNlXSwgcmVzcGVjdGl2ZWx5LiAqKVxuICAgIGxldCBhbmRfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OnRydWVfIH5mOmFuZGFsc29cbiAgICBsZXQgb3JfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OmZhbHNlXyB+ZjpvcmVsc2VcblxuICAgIGxldCB1bmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4IF0gLT4geFxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyBvbmUgYXJndW1lbnQsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCB0ZXJuYXJ5IG5hbWUgYXJncyBzZXhwID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgfCBbIHg7IHk7IHogXSAtPiB4LCB5LCB6XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhcmdzIGluXG4gICAgICAgIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlcyBleHBlY3RzIHRocmVlIGFyZ3VtZW50cywgJWQgZm91bmRcIiBuYW1lIG4pIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgeCAtPiBzZXhwX29mX3ZhbHVlIHhcbiAgICAgICAgfCBUcnVlIC0+IEF0b20gXCJ0cnVlXCJcbiAgICAgICAgfCBGYWxzZSAtPiBBdG9tIFwiZmFsc2VcIlxuICAgICAgICB8IE5vdCB0IC0+IExpc3QgWyBBdG9tIFwibm90XCI7IGF1eCB0IF1cbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gTGlzdCBbIEF0b20gXCJpZlwiOyBhdXggdDE7IGF1eCB0MjsgYXV4IHQzIF1cbiAgICAgICAgfCBBbmQgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Nvbmp1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcImFuZFwiIDo6IExpc3QubWFwIH5mOmF1eCB0cylcbiAgICAgICAgfCBPciBfIGFzIHQgLT5cbiAgICAgICAgICBsZXQgdHMgPSBnYXRoZXJfZGlzanVuY3RzIHQgaW5cbiAgICAgICAgICBMaXN0IChBdG9tIFwib3JcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICBpblxuICAgICAgYXV4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBiYXNlX29mX3NleHAgc2V4cCA9XG4gICAgICBsZXQgYmFzZSBzZXhwID0gYmFzZSAoYmFzZV9vZl9zZXhwIHNleHApIGluXG4gICAgICBsZXQgcmVjIGF1eCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQXRvbSBrdyAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcInRydWVcIiAtPiB0cnVlX1xuICAgICAgICAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZV9cbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBMaXN0IChBdG9tIGt3IDo6IGFyZ3MpIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5sb3dlcmNhc2Uga3cgd2l0aFxuICAgICAgICAgICB8IFwiYW5kXCIgLT4gYW5kXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJvclwiIC0+IG9yXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJub3RcIiAtPiBub3RfIChhdXggKHVuYXJ5IFwibm90XCIgYXJncyBzZXhwKSlcbiAgICAgICAgICAgfCBcImlmXCIgLT5cbiAgICAgICAgICAgICBsZXQgeCwgeSwgeiA9IHRlcm5hcnkgXCJpZlwiIGFyZ3Mgc2V4cCBpblxuICAgICAgICAgICAgIGlmXyAoYXV4IHgpIChhdXggeSkgKGF1eCB6KVxuICAgICAgICAgICB8IF8gLT4gYmFzZSBzZXhwKVxuICAgICAgICB8IF8gLT4gYmFzZSBzZXhwXG4gICAgICBpblxuICAgICAgYXV4IHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICAgIGxldCBkZWZucyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmRlZm4gbGlzdCA9XG4gICAgICAgIGxldCBibGFuZyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmdyYW1tYXIgPSBSZWN1cnNpdmUgKFwiYmxhbmdcIiwgWyBUeXZhciBcImFcIiBdKSBpblxuICAgICAgICBbIHsgdHljb24gPSBcImJsYW5nXCJcbiAgICAgICAgICA7IHR5dmFycyA9IFsgXCJhXCIgXVxuICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyBUeXZhciBcImFcIlxuICAgICAgICAgICAgICAgIDsgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcInRydWVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcImZhbHNlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImlmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm5vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKGJsYW5nLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICBmdW4gYmFzZV9ncmFtbWFyIC0+IHsgdW50eXBlZCA9IFR5Y29uIChcImJsYW5nXCIsIFsgYmFzZV9ncmFtbWFyLnVudHlwZWQgXSwgZGVmbnMpIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubGV0IGNvbnN0YW50IGIgPSBpZiBiIHRoZW4gdHJ1ZV8gZWxzZSBmYWxzZV9cblxubW9kdWxlIHR5cGUgQ29uc3RydWN0b3JzID0gc2lnXG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdHJ1ZV8gOiBfIHRcbiAgdmFsIGZhbHNlXyA6IF8gdFxuICB2YWwgY29uc3RhbnQgOiBib29sIC0+IF8gdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIGxldCBub3QgPSBub3RfXG4gIGxldCBhbmRfID0gYW5kX1xuICBsZXQgb3JfID0gb3JfXG4gIGxldCBjb25zdGFudCA9IGNvbnN0YW50XG4gIGxldCAoICYmICkgPSBhbmRhbHNvXG4gIGxldCAoIHx8ICkgPSBvcmVsc2VcbiAgbGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5lbmRcblxubGV0IGNvbnN0YW50X3ZhbHVlID0gZnVuY3Rpb25cbiAgfCBUcnVlIC0+IFNvbWUgdHJ1ZVxuICB8IEZhbHNlIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbigqIFt2YWx1ZXMgdF0gbGlzdHMgdGhlIGJhc2UgcHJlZGljYXRlcyBpbiBbdF0gZnJvbSBsZWZ0IHRvIHJpZ2h0ICopXG5sZXQgdmFsdWVzIHQgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgdiA6OiB0cyAtPiBsb29wICh2IDo6IGFjYykgdHNcbiAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBOb3QgdDEgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHRzKVxuICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IElmICh0MSwgdDIsIHQzKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdDMgOjogdHMpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSBbIHQgXVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgdCBwZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSBhIC0+IG5leHQgKGYgYWNjIGEpIHBlbmRpbmdcbiAgICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gbmV4dCBhY2MgcGVuZGluZ1xuICAgICAgICB8IE5vdCB0IC0+IGxvb3AgYWNjIHQgcGVuZGluZ1xuICAgICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiBwZW5kaW5nKVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBsb29wIGFjYyB0MSAodDIgOjogdDMgOjogcGVuZGluZylcbiAgICAgIGFuZCBuZXh0IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wIGFjYyB0IHRzXG4gICAgICBpblxuICAgICAgbG9vcCBpbml0IHQgW10gW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBsZW5ndGggPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGlzX2VtcHR5ID0gQy5pc19lbXB0eVxubGV0IGl0ZXIgPSBDLml0ZXJcbmxldCBsZW5ndGggPSBDLmxlbmd0aFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgcmVjIGJpbmQgdCB+ZjprID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQmFzZSB2IC0+IGsgdlxuICB8IFRydWUgLT4gdHJ1ZV9cbiAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgfCBOb3QgdDEgLT4gbm90XyAoYmluZCB0MSB+ZjprKVxuICAoKiBVbmZvcnR1bmF0ZWx5IHdlIG5lZWQgdG8gZHVwbGljYXRlIHNvbWUgb2YgdGhlIHNob3J0LWNpcmN1aXRpbmcgZnJvbSBbYW5kYWxzb10gYW5kXG4gICAgIGZyaWVuZHMgaGVyZS4gSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBpbnZvbHZpbmcgW0xhenkudF0gYnV0IHRoZVxuICAgICBvdmVyaGVhZCBwcm9iYWJseSB3b3VsZG4ndCBiZSB3b3J0aCBpdC4gKilcbiAgfCBBbmQgKHQxLCB0MikgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgICAgfCBvdGhlciAtPiBhbmRhbHNvIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICB8IE9yICh0MSwgdDIpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgVHJ1ZSAtPiB0cnVlX1xuICAgICB8IG90aGVyIC0+IG9yZWxzZSBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgfCBJZiAodDEsIHQyLCB0MykgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBUcnVlIC0+IGJpbmQgdDIgfmY6a1xuICAgICB8IEZhbHNlIC0+IGJpbmQgdDMgfmY6a1xuICAgICB8IG90aGVyIC0+IGlmXyBvdGhlciAoYmluZCB0MiB+ZjprKSAoYmluZCB0MyB+ZjprKSlcbjs7XG5cbigqIHNlbWFudGljcyAqKVxuXG5sZXQgcmVjIGV2YWwgdCBiYXNlX2V2YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBUcnVlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IEFuZCAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCAmJiBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE9yICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsIHx8IGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgTm90IHQgLT4gbm90IChldmFsIHQgYmFzZV9ldmFsKVxuICB8IElmICh0MSwgdDIsIHQzKSAtPiBpZiBldmFsIHQxIGJhc2VfZXZhbCB0aGVuIGV2YWwgdDIgYmFzZV9ldmFsIGVsc2UgZXZhbCB0MyBiYXNlX2V2YWxcbiAgfCBCYXNlIHggLT4gYmFzZV9ldmFsIHhcbjs7XG5cbmxldCBzcGVjaWFsaXplIHQgZiA9XG4gIGJpbmQgdCB+ZjooZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgYEtub3duIGMgLT4gY29uc3RhbnQgY1xuICAgIHwgYFVua25vd24gLT4gYmFzZSB2KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXZhbF9zZXQgfnVuaXZlcnNlOmFsbCBzZXRfb2ZfYmFzZSB0ID1cbiAgbGV0IHJlYyBhdXggKGIgOiBfIHQpID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IFRydWUgLT4gZm9yY2UgYWxsXG4gICAgfCBGYWxzZSAtPiBTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooU2V0LmNvbXBhcmF0b3IgKGZvcmNlIGFsbCkpXG4gICAgfCBBbmQgKGEsIGIpIC0+IFNldC5pbnRlciAoYXV4IGEpIChhdXggYilcbiAgICB8IE9yIChhLCBiKSAtPiBTZXQudW5pb24gKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBOb3QgYSAtPiBTZXQuZGlmZiAoZm9yY2UgYWxsKSAoYXV4IGEpXG4gICAgfCBCYXNlIGEgLT4gc2V0X29mX2Jhc2UgYVxuICAgIHwgSWYgKGNvbmQsIGEsIGIpIC0+XG4gICAgICBsZXQgY29uZCA9IGF1eCBjb25kIGluXG4gICAgICBTZXQudW5pb24gKFNldC5pbnRlciBjb25kIChhdXggYSkpIChTZXQuaW50ZXIgKFNldC5kaWZmIChmb3JjZSBhbGwpIGNvbmQpIChhdXggYikpXG4gIGluXG4gIGF1eCB0IFtAbm9udGFpbF1cbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgcmV0dXJuID0gYmFzZVxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgZW5kKVxuXG5tb2R1bGUgdHlwZSBNb25hZGljID0gc2lnXG4gIG1vZHVsZSBNIDogTW9uYWQuU1xuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgZXZhbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBNLnQpIC0+IGJvb2wgTS50XG5lbmRcblxubW9kdWxlIEZvcl9tb25hZCAoTSA6IE1vbmFkLlMpIDogTW9uYWRpYyB3aXRoIG1vZHVsZSBNIDo9IE0gPSBzdHJ1Y3RcbiAgb3BlbiBNLk1vbmFkX2luZml4XG5cbiAgbGV0IHJlYyBiaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSB4IC0+IGYgeFxuICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgfCBBbmQgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBhbmRhbHNvIGEgYilcbiAgICB8IE9yIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBvcmVsc2UgYSBiKVxuICAgIHwgTm90IGEgLT4gYmluZCBhIH5mID4+fCBub3RfXG4gICAgfCBJZiAoYSwgYiwgYykgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBjIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj49IGZ1biBiIC0+IGJpbmQgYyB+ZiA+PnwgZnVuIGMgLT4gaWZfIGEgYiBjKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gZiB4ID4+fCBiYXNlKVxuXG4gIGxldCBldmFsIHQgfmYgPVxuICAgIGJpbmQgdCB+ZjooZnVuIHggLT5cbiAgICAgIGYgeFxuICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VfKVxuICAgID4+fCBmdW4gdCAtPiBldmFsIHQgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gIDs7XG5lbmRcblxuKCoqIFdlIGF2b2lkIGRlcml2aW5nIHF1aWNrY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGludmFyaWFudHMgZGVzY3JpYmVkIGluIFtUXSdzIGNvbW1lbnRzXG4gICAgYWJvdmUgYXJlIHByZXNlcnZlZC4gKilcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBhX2dlbmVyYXRvciA9XG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLnJlY3Vyc2l2ZV91bmlvblxuICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOmJhc2UgYV9nZW5lcmF0b3JcbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiB0cnVlX1xuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIGZhbHNlX1xuICAgIF1cbiAgICB+ZjooZnVuIHNlbGYgLT5cbiAgICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIHNlbGYgfmY6bm90X1xuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggfHwgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggJiYgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAzIHNlbGYgc2VsZiBzZWxmIH5mOmlmX1xuICAgICAgXSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyICh0eXBlIGEpIChhX3Nocmlua2VyIDogYSBRdWlja2NoZWNrLlNocmlua2VyLnQpID1cbiAgUXVpY2tjaGVjay5TaHJpbmtlci5maXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgYmlub3Agb3BlcmF0b3IgbGVmdCByaWdodCA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBsZWZ0XG4gICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHJpZ2h0XG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGxlZnQpIH5mOihmdW4gbGVmdCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgcmlnaHQpIH5mOihmdW4gcmlnaHQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIF1cbiAgICBpblxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuY3JlYXRlIChmdW4gdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBCYXNlIGEgLT4gU2VxdWVuY2UubWFwIH5mOmJhc2UgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIGFfc2hyaW5rZXIgYSlcbiAgICAgIHwgT3IgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggfHwgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IEFuZCAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCAmJiApIGxlZnQgcmlnaHRcbiAgICAgIHwgTm90IHQgLT5cbiAgICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiB0KVxuICAgICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6bm90XyAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0KSlcbiAgICAgIHwgSWYgKGlmXywgdGhlbl8sIGVsc2VfKSAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGlmX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHRoZW5fXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gZWxzZV9cbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBpZl8pIH5mOihmdW4gaWZfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0aGVuXykgfmY6KGZ1biB0aGVuXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgZWxzZV8pIH5mOihmdW4gZWxzZV8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgKHR5cGUgYSkgKGFfb2JzZXJ2ZXIgOiBhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCkgPVxuICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGhhc2hfZm9sZF90XG4gICAgICAoZnVuIGhhc2ggYSAtPiBRdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmUgYV9vYnNlcnZlciBhIH5zaXplIH5oYXNoKVxuICAgICAgaGFzaFxuICAgICAgdClcbjs7XG4iLCIoKiBDb252ZXJzaW9ucyBiZXR3ZWVuIHVuaXRzIG9mIG1lYXN1cmUgYmFzZWQgb24gYnl0ZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcbm1vZHVsZSBUID0gQnl0ZV91bml0czBcbmluY2x1ZGUgKFQgOiBtb2R1bGUgdHlwZSBvZiBUIHdpdGggbW9kdWxlIFJlcHIgOj0gUmVwcilcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggLSApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCAtICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoICsgKSBhIGIgPSBvZl9yZXByIChSZXByLiggKyApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCAvLyApIGEgYiA9IFJlcHIuKCAvLyApICh0b19yZXByIGEpICh0b19yZXByIGIpXG5cbiAgbGV0ICggLyApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgLy4gcykpXG4gIGxldCAoICogKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpICouIHMpKVxuZW5kXG5cbmluY2x1ZGUgSW5maXhcblxubGV0IGFicyB0ID0gb2ZfcmVwciAoUmVwci5hYnMgKHRvX3JlcHIgdCkpXG5sZXQgbmVnIHQgPSBvZl9yZXByIChSZXByLm5lZyAodG9fcmVwciB0KSlcbmxldCBzaWduIHQgPSBSZXByLnNpZ24gKHRvX3JlcHIgdClcbmxldCB6ZXJvID0gb2ZfcmVwciBSZXByLnplcm9cbmxldCBtaW5fdmFsdWUgPSBvZl9yZXByIFJlcHIubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlID0gb2ZfcmVwciBSZXByLm1heF92YWx1ZVxubGV0IHNjYWxlID0gSW5maXguKCAqIClcbmxldCBpc2NhbGUgdCBzID0gb2ZfcmVwciAoUmVwci4oICogKSAodG9fcmVwciB0KSAoUmVwci5vZl9pbnQgcykpXG5sZXQgYnl0ZXNfaW50X2V4biA9IFQuYnl0ZXNfaW50X2V4blxubGV0IGJ5dGVzX2ludDYzID0gdG9fcmVwclxubGV0IGJ5dGVzX2ludDY0IHQgPSBSZXByLnRvX2ludDY0ICh0b19yZXByIHQpXG5sZXQgYnl0ZXNfZmxvYXQgdCA9IFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdClcbmxldCBvZl9ieXRlc19pbnQgYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50IGIpXG5sZXQgb2ZfYnl0ZXNfaW50NjMgPSBvZl9yZXByXG5sZXQgb2ZfYnl0ZXNfaW50NjRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2ludDY0X2V4biBiKVxubGV0IG9mX2J5dGVzX2Zsb2F0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCBiKVxuXG5sZXQgKGJ5dGVzIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbYnl0ZXNfaW50X2V4bl0sIFtieXRlc19pbnQ2M10sIFtieXRlc19pbnQ2NF0gb3IgXFxcbiAgICAgICAgW2J5dGVzX2Zsb2F0XSBhcyBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgYnl0ZXNfZmxvYXRcbjs7XG5cbmxldCAob2ZfYnl0ZXMgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc19pbnRdLCBbb2ZfYnl0ZXNfaW50NjNdLCBcXFxuICAgICAgICBbb2ZfYnl0ZXNfaW50NjRfZXhuXSBvciBbb2ZfYnl0ZXNfZmxvYXRfZXhuXSBhcyBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgb2ZfYnl0ZXNfZmxvYXRfZXhuXG47O1xuXG5sZXQga2lsb2J5dGUgOiB0ID0gb2ZfYnl0ZXNfaW50IDEwMjRcbmxldCBtZWdhYnl0ZSA9IGlzY2FsZSBraWxvYnl0ZSAxMDI0XG5sZXQgZ2lnYWJ5dGUgPSBpc2NhbGUgbWVnYWJ5dGUgMTAyNFxubGV0IHRlcmFieXRlID0gaXNjYWxlIGdpZ2FieXRlIDEwMjRcbmxldCBwZXRhYnl0ZSA9IGlzY2FsZSB0ZXJhYnl0ZSAxMDI0XG5sZXQgZXhhYnl0ZSA9IGlzY2FsZSBwZXRhYnl0ZSAxMDI0XG5cbmxldCB3b3JkID1cbiAgbGV0IG1vZHVsZSBXID0gV29yZF9zaXplIGluXG4gIG1hdGNoIFcud29yZF9zaXplIHdpdGhcbiAgfCBXLlczMiAtPiBvZl9ieXRlc19pbnQgNFxuICB8IFcuVzY0IC0+IG9mX2J5dGVzX2ludCA4XG47O1xuXG5sZXQga2lsb2J5dGVzIHQgOiBmbG9hdCA9IEluZml4LiggLy8gKSB0IGtpbG9ieXRlXG5sZXQgbWVnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBtZWdhYnl0ZVxubGV0IGdpZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZ2lnYWJ5dGVcbmxldCB0ZXJhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHRlcmFieXRlXG5sZXQgcGV0YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBwZXRhYnl0ZVxubGV0IGV4YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBleGFieXRlXG5sZXQgd29yZHNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuIChSZXByLiggLyApICh0b19yZXByIHQpICh0b19yZXByIHdvcmQpKVxubGV0IHdvcmRzX2Zsb2F0IHQgPSBJbmZpeC4oIC8vICkgdCB3b3JkXG5sZXQgb2Zfa2lsb2J5dGVzIHQgOiB0ID0gSW5maXguKCAqICkga2lsb2J5dGUgdFxubGV0IG9mX21lZ2FieXRlcyB0ID0gSW5maXguKCAqICkgbWVnYWJ5dGUgdFxubGV0IG9mX2dpZ2FieXRlcyB0ID0gSW5maXguKCAqICkgZ2lnYWJ5dGUgdFxubGV0IG9mX3RlcmFieXRlcyB0ID0gSW5maXguKCAqICkgdGVyYWJ5dGUgdFxubGV0IG9mX3BldGFieXRlcyB0ID0gSW5maXguKCAqICkgcGV0YWJ5dGUgdFxubGV0IG9mX2V4YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBleGFieXRlIHRcbmxldCBvZl93b3Jkc19pbnQgdCA9IGlzY2FsZSB3b3JkIHRcbmxldCBvZl93b3Jkc19mbG9hdF9leG4gdCA9IEluZml4LiggKiApIHdvcmQgdFxuXG5sZXQgKHdvcmRzIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW3dvcmRzX2ludF9leG5dIG9yIFt3b3Jkc19mbG9hdF1cIl0pID1cbiAgd29yZHNfZmxvYXRcbjs7XG5cbmxldCAob2Zfd29yZHMgW0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2Zfd29yZHNfaW50XSBvciBbb2Zfd29yZHNfZmxvYXRfZXhuXVwiXSkgPVxuICBvZl93b3Jkc19mbG9hdF9leG5cbjs7XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgSW50LiggPCApIGxlbmd0aCAyXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSB0b28gc2hvcnRcIiBzICgpO1xuICBsZXQgYmFzZV9zdHIgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KEludC4oIC0gKSBsZW5ndGggMSkgaW5cbiAgbGV0IGV4dF9jaGFyID0gQ2hhci5sb3dlcmNhc2Ugcy5bSW50LiggLSApIGxlbmd0aCAxXSBpblxuICBsZXQgYmFzZSA9XG4gICAgdHJ5IEZsb2F0Lm9mX3N0cmluZyBiYXNlX3N0ciB3aXRoXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtICVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gZmxvYXQgXCJcbiAgICAgICAgc1xuICAgICAgICBiYXNlX3N0clxuICAgICAgICAoKVxuICBpblxuICBtYXRjaCBleHRfY2hhciB3aXRoXG4gIHwgJ2InIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biBiYXNlXG4gIHwgJ2snIC0+IG9mX2tpbG9ieXRlcyBiYXNlXG4gIHwgJ20nIC0+IG9mX21lZ2FieXRlcyBiYXNlXG4gIHwgJ2cnIC0+IG9mX2dpZ2FieXRlcyBiYXNlXG4gIHwgJ3QnIC0+IG9mX3RlcmFieXRlcyBiYXNlXG4gIHwgJ3AnIC0+IG9mX3BldGFieXRlcyBiYXNlXG4gIHwgJ2UnIC0+IG9mX2V4YWJ5dGVzIGJhc2VcbiAgfCAndycgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIGJhc2VcbiAgfCBleHQgLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtIGlsbGVnYWwgZXh0ZW5zaW9uICVjXCIgcyBleHQgKClcbjs7XG5cbmxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuXG5sZXQgbGFyZ2VzdF9tZWFzdXJlIHQgPVxuICBsZXQgdF9hYnMgPSBvZl9yZXByIChSZXByLmFicyAodG9fcmVwciB0KSkgaW5cbiAgaWYgdF9hYnMgPj0gZXhhYnl0ZVxuICB0aGVuIGBFeGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHBldGFieXRlXG4gIHRoZW4gYFBldGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHRlcmFieXRlXG4gIHRoZW4gYFRlcmFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGdpZ2FieXRlXG4gIHRoZW4gYEdpZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IG1lZ2FieXRlXG4gIHRoZW4gYE1lZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGtpbG9ieXRlXG4gIHRoZW4gYEtpbG9ieXRlc1xuICBlbHNlIGBCeXRlc1xuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAoKiBTaGFyZSB0aGUgY29tbW9uIFtvZl9zZXhwXSBjb2RlIGZvciBbVjFdIGFuZCBbVjJdLiAqKVxuICBtb2R1bGUgT2Zfc2V4cF92MV92MiA6IHNpZ1xuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fbWF0Y2ggKCkgPSBmYWlsd2l0aCBcIk5vdCBhIHJlY29nbml6ZWQgW0J5dGVfdW5pdHMudF0gcmVwcmVzZW50YXRpb25cIlxuXG4gICAgbGV0IG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWxfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiQnl0ZXNcIiAtPlxuICAgICAgICAodHJ5IG9mX2J5dGVzX2ludDYzIChJbnQ2My50X29mX3NleHAgdmFsX3NleHApIHdpdGhcbiAgICAgICAgIHwgXyAtPiBvZl9ieXRlc19mbG9hdF9leG4gKEZsb2F0LnRfb2Zfc2V4cCB2YWxfc2V4cCkpXG4gICAgICB8IFwiS2lsb2J5dGVzXCIgLT4gb2Zfa2lsb2J5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIk1lZ2FieXRlc1wiIC0+IG9mX21lZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJHaWdhYnl0ZXNcIiAtPiBvZl9naWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiVGVyYWJ5dGVzXCIgLT4gb2ZfdGVyYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlBldGFieXRlc1wiIC0+IG9mX3BldGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJFeGFieXRlc1wiIC0+IG9mX2V4YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIldvcmRzXCIgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIHVuaXRfbmFtZTsgdmFsdWUgXSAtPlxuICAgICAgICBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsdWUgdW5pdF9uYW1lXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIHRyeSB0X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGV4biAtPiByYWlzZSAoU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHNleHApKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2Zsb2F0XG4gICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19mbG9hdF9leG5cblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBzdGFibGVfd2l0bmVzc19mbG9hdCBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgKCogVjEgb25seSBnb2VzIHVwIHRvIGdpZ2FieXRlcyAqKVxuICAgICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgICAgfCBgQnl0ZXMgLT4gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfZmxvYXQgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEtpbG9ieXRlcyAtPiBbJXNleHAgYEtpbG9ieXRlcyAoa2lsb2J5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBNZWdhYnl0ZXMgLT4gWyVzZXhwIGBNZWdhYnl0ZXMgKG1lZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgR2lnYWJ5dGVzIHwgYFRlcmFieXRlcyB8IGBQZXRhYnl0ZXMgfCBgRXhhYnl0ZXMgLT5cbiAgICAgICAgWyVzZXhwIGBHaWdhYnl0ZXMgKGdpZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubG93ZXJjYXNlICh0b19zdHJpbmcgdClcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5cbiAgICAoKiBUaGlzIHRlc3QgZG9jdW1lbnRzIHRoZSBvcmlnaW5hbCB0by1zdHJpbmcgcmVwcmVzZW50YXRpb24gYW5kIGZhaWxzIHVuZGVyIGphdmFzY3JpcHRcbiAgICAgICBkdWUgdG8gZGlmZmVyZW5jZXMgaW4gdGhlIHJvdW5kaW5nLiAqKVxuICAgIGxldCVleHBlY3RfdGVzdCAoXyBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDAwYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjNiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMWsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjAwMDk4ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxNTAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEuNDY0ODRrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNzY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ny42NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3Ni41NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNTM2NzRtIHx9XVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2ludDYzXG4gICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19pbnQ2M1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDYzLlN0YWJsZS5WMSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfaW50NjMgdCA6IEludDYzLnQpXVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IFQudG9fc3RyaW5nXG5cbm1vZHVsZSBTaG9ydCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgbGV0IHRvX3VuaXRzX3N0ciB0b191bml0IGV4dCA9XG4gICAgICBsZXQgZiA9IHRvX3VuaXQgdCBpblxuICAgICAgbGV0IGZfYWJzID0gRmxvYXQuYWJzIGYgaW5cbiAgICAgIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMDAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjBmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjFmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJS4yZiVjXCIgZiBleHRcbiAgICBpblxuICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICB8IGBCeXRlcyAtPiBzcHJpbnRmIFwiJWRCXCIgKGJ5dGVzX2ludF9leG4gdClcbiAgICB8IGBLaWxvYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGtpbG9ieXRlcyAnSydcbiAgICB8IGBNZWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIG1lZ2FieXRlcyAnTSdcbiAgICB8IGBHaWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGdpZ2FieXRlcyAnRydcbiAgICB8IGBUZXJhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHRlcmFieXRlcyAnVCdcbiAgICB8IGBQZXRhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHBldGFieXRlcyAnUCdcbiAgICB8IGBFeGFieXRlcyAtPiB0b191bml0c19zdHIgZXhhYnl0ZXMgJ0UnXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgWyVleHBlY3Qge3wgMTAwMEIgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjMpO1xuICAgIFslZXhwZWN0IHt8IDEwMjNCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ljc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ny43SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNTRNIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkuMzFHIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTAuOVQgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDg4LjhQIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAzMDAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgMi42MEUgfH1dO1xuICAgICgpXG4gIDs7XG5lbmRcblxubGV0IHRvX3N0cmluZ19zaG9ydCA9IFNob3J0LnRvX3N0cmluZ1xuXG5sZXQgKGNyZWF0ZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX2J5dGVzXSwgW29mX2tpbG9ieXRlc10sIFtvZl9tZWdhYnl0ZXNdLCBldGMgYXMgXFxcbiAgICAgICAgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIGZ1biB1bml0cyB2YWx1ZSAtPlxuICBtYXRjaCB1bml0cyB3aXRoXG4gIHwgYEJ5dGVzIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biB2YWx1ZVxuICB8IGBLaWxvYnl0ZXMgLT4gb2Zfa2lsb2J5dGVzIHZhbHVlXG4gIHwgYE1lZ2FieXRlcyAtPiBvZl9tZWdhYnl0ZXMgdmFsdWVcbiAgfCBgR2lnYWJ5dGVzIC0+IG9mX2dpZ2FieXRlcyB2YWx1ZVxuICB8IGBXb3JkcyAtPiBvZl93b3Jkc19mbG9hdF9leG4gdmFsdWVcbjs7XG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUmVwcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgb2ZfcXVpY2tjaGVja2FibGUgPSBvZl9yZXByXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19yZXByXG4gICAgZW5kKVxuIiwiKCoqIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHBvbHltb3JwaGljIGZ1bmN0aW9uYWwgZG91YmxlLWVuZGVkIHF1ZXVlLiAqKVxuXG4oKiogSW52YXJpYW50czpcbiAgICAtIHF1ZXVlLmxlbmd0aCA9IExpc3QubGVuZ3RoIHF1ZXVlLmZyb250ICsgTGlzdC5sZW5ndGggcXVldWUuYmFja1xuICAgIC0gaWYgcXVldWUgaGFzID49IDIgZWxlbWVudHMsIG5laXRoZXIgZnJvbnQgbm9yIGJhY2sgYXJlIGVtcHR5XG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmV4Y2VwdGlvbiBFbXB0eSBbQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlICdhIHQgPVxuICB7IGZyb250IDogJ2EgbGlzdFxuICA7IGJhY2sgOiAnYSBsaXN0XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgZiB0ID1cbiAgbGV0IG5fZnJvbnQgPSBMaXN0Lmxlbmd0aCB0LmZyb250IGluXG4gIGxldCBuX2JhY2sgPSBMaXN0Lmxlbmd0aCB0LmJhY2sgaW5cbiAgYXNzZXJ0ICh0Lmxlbmd0aCA9IG5fZnJvbnQgKyBuX2JhY2spO1xuICBhc3NlcnQgKHQubGVuZ3RoIDwgMiB8fCAobl9mcm9udCA8PiAwICYmIG5fYmFjayA8PiAwKSk7XG4gIExpc3QuaXRlciB0LmZyb250IH5mO1xuICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG47O1xuXG5sZXQgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjayA9XG4gIG1hdGNoIGZyb250LCBiYWNrIHdpdGhcbiAgfCBbXSwgW10gfCBbIF8gXSwgW10gfCBbXSwgWyBfIF0gfCBfIDo6IF8sIF8gOjogXyAtPiB7IGZyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IFtdLCBfIDo6IF8gOjogXyAtPlxuICAgIGxldCBiYWNrLCByZXZfZnJvbnQgPSBMaXN0LnNwbGl0X24gYmFjayAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250ID0gTGlzdC5yZXYgcmV2X2Zyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IF8gOjogXyA6OiBfLCBbXSAtPlxuICAgIGxldCBmcm9udCwgcmV2X2JhY2sgPSBMaXN0LnNwbGl0X24gZnJvbnQgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udDsgYmFjayA9IExpc3QucmV2IHJldl9iYWNrOyBsZW5ndGggfVxuOztcblxubGV0IGVtcHR5ID0geyBmcm9udCA9IFtdOyBiYWNrID0gW107IGxlbmd0aCA9IDAgfVxubGV0IGVucXVldWVfZnJvbnQgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5mcm9udDooeCA6OiB0LmZyb250KSB+YmFjazp0LmJhY2tcbmxldCBlbnF1ZXVlX2JhY2sgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5iYWNrOih4IDo6IHQuYmFjaykgfmZyb250OnQuZnJvbnRcblxubGV0W0Bjb2xkXSByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8ZnJvbnR8ID0gMCwgfGJhY2t8ID49IDJcIl1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8YmFja3wgPSAwLCB8ZnJvbnR8ID49IDJcIl1cbjs7XG5cbmxldCBwZWVrX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBwZWVrX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5mcm9udDp4cyB+YmFjazp0LmJhY2tcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+YmFjazp4cyB+ZnJvbnQ6dC5mcm9udFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gcGVla19mcm9udF9leG4gdCwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFja19leG4gdCA9IHBlZWtfYmFja19leG4gdCwgZHJvcF9iYWNrX2V4biB0XG5cbmxldCBvcHRpb25hbCBmIHQgPVxuICBtYXRjaCBmIHQgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIEVtcHR5IC0+IE5vbmVcbjs7XG5cbmxldCBwZWVrX2Zyb250IHQgPSBvcHRpb25hbCBwZWVrX2Zyb250X2V4biB0XG5sZXQgcGVla19iYWNrIHQgPSBvcHRpb25hbCBwZWVrX2JhY2tfZXhuIHRcbmxldCBkcm9wX2Zyb250IHQgPSBvcHRpb25hbCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZHJvcF9iYWNrIHQgPSBvcHRpb25hbCBkcm9wX2JhY2tfZXhuIHRcbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBvcHRpb25hbCBkZXF1ZXVlX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrIHQgPSBvcHRpb25hbCBkZXF1ZXVlX2JhY2tfZXhuIHRcblxubGV0IGVucXVldWUgdCBzaWRlIHggPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZW5xdWV1ZV9mcm9udCB0IHhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB4XG47O1xuXG5sZXQgcGVlayB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbjs7XG5cbmxldCBwZWVrX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFja19leG4gdFxuOztcblxubGV0IGRyb3AgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkZXF1ZXVlIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2sgdFxuOztcblxubGV0IGRlcXVldWVfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgcmV2IHQgPSB7IHQgd2l0aCBmcm9udCA9IHQuYmFjazsgYmFjayA9IHQuZnJvbnQgfVxuXG5tb2R1bGUgQXJiaXRyYXJ5X29yZGVyID0gc3RydWN0XG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2X2FwcGVuZCB0LmZyb250IHQuYmFja1xuICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdClcbiAgbGV0IHRvX3NlcXVlbmNlIHQgPSBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKVxuXG4gIGxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gICAgbGV0IG9wZW4gTSBpblxuICAgIExpc3Quc3VtIChtb2R1bGUgTSkgdC5mcm9udCB+ZiArIExpc3Quc3VtIChtb2R1bGUgTSkgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBMaXN0LmNvdW50IHQuZnJvbnQgfmYgKyBMaXN0LmNvdW50IHQuYmFjayB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIHQuZnJvbnQgfmYgJiYgTGlzdC5mb3JfYWxsIHQuYmFjayB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyB0LmZyb250IH5mIHx8IExpc3QuZXhpc3RzIHQuYmFjayB+ZlxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgdC5mcm9udCB4IHx8IExpc3QubWVtIH5lcXVhbCB0LmJhY2sgeFxuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIExpc3QuaXRlciB0LmZyb250IH5mO1xuICAgIExpc3QuaXRlciB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAoTGlzdC5mb2xkIHQuZnJvbnQgfmluaXQgfmYgfD4gZnVuIGluaXQgLT4gTGlzdC5mb2xkIHQuYmFjayB+aW5pdCB+ZikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmQgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kX21hcCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kX21hcCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWF4X2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1heF9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA+PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5taW5fZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWluX2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5IDw9IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9jb250YWluZXIgKEYgOiBzaWdcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdG9fbGlzdCA9IEYudG9fbGlzdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCAodG9fbGlzdCB0KSB4XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAodG9fbGlzdCB0KSB+aW5pdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsICh0b19saXN0IHQpIH5mXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IExpc3Quc3VtIG0gKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHRvX2FycmF5IHQgPSBMaXN0LnRvX2FycmF5ICh0b19saXN0IHQpXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1pbl9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWF4X2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuZW5kXG5cbm1vZHVsZSBGcm9udF90b19iYWNrID0gc3RydWN0XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5mcm9udDpsaXN0IH5iYWNrOltdXG4gIGxldCB0b19saXN0IHQgPSB0LmZyb250IEAgTGlzdC5yZXYgdC5iYWNrXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5iYWNrKSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGJhY2sgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udDpbXSB+YmFja1xuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBCYWNrX3RvX2Zyb250ID0gc3RydWN0XG4gIGxldCB0b19saXN0IHQgPSB0LmJhY2sgQCBMaXN0LnJldiB0LmZyb250XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5iYWNrOmxpc3QgfmZyb250OltdXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmZyb250KSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGZyb250ID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2s6W11cbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIEZyb250X3RvX2JhY2tcblxubGV0IHNpbmdsZXRvbiB4ID0gb2ZfbGlzdCBbIHggXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgZWx0IC0+IGZvbGQgKGYgZWx0KSB+aW5pdDp0IH5mOmVucXVldWVfYmFjaylcbiAgICA7O1xuXG4gICAgbGV0IHJldHVybiA9IHNpbmdsZXRvblxuXG4gICAgbGV0IG1hcCA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICB7IGZyb250ID0gTGlzdC5tYXAgdC5mcm9udCB+ZjsgYmFjayA9IExpc3QubWFwIHQuYmFjayB+ZjsgbGVuZ3RoID0gdC5sZW5ndGggfSlcbiAgICA7O1xuICBlbmQpXG5cbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9IExpc3QuY29tcGFyZSBjbXAgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxubGV0IGVxdWFsIGVxIHQxIHQyID0gTGlzdC5lcXVhbCBlcSAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5cbmxldCBoYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfYSBzdGF0ZSB0ID1cbiAgZm9sZCB+ZjpoYXNoX2ZvbGRfYSB+aW5pdDooWyVoYXNoX2ZvbGQ6IGludF0gc3RhdGUgKGxlbmd0aCB0KSkgdFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gWyVzZXhwX29mOiBlbHQgbGlzdF0gKHRvX2xpc3QgdClcbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChbJW9mX3NleHA6IGVsdCBsaXN0XSBzZXhwKVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IExpc3QudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgbWFwID0gbWFwXG5cbiAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODNmOTY5ODItNDk5Mi0xMWU2LTkxOWQtZmJkZGNmZGNhNTc2XCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5GZGVxdWVcIlxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcblxuICAgICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgbmV4dCBhY2MgbiA9XG4gICAgICAgICAgICBpZiBsZW4gPSBuXG4gICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGFzc2VydCAobiA9IGxlbmd0aCBhY2MpO1xuICAgICAgICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgICAgICAgbG9vcCBuZXh0IChlbnF1ZXVlX2JhY2sgYWNjIHgpIChuICsgMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIG5leHQgZW1wdHkgMFxuICAgICAgICA7O1xuICAgICAgZW5kKVxuXG4gICAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBwcm9kdWNlZCBieSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIGlzXG4gICAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSAnYSBpcyBzdGFibGUpLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJ1aWxkIH5mcm9udCB+YmFjayA9XG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGZyb250ICsgTGlzdC5sZW5ndGggYmFjayBpblxuICAgIGxldCB0ID0geyBsZW5ndGg7IGZyb250OyBiYWNrIH0gaW5cbiAgICBpbnZhcmlhbnQgaWdub3JlIHQ7XG4gICAgdFxuICA7O1xuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nLlN0YWJsZS5WMSA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLlN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuXG4gICAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuUyB3aXRoIHR5cGUga2V5IDo9IHRcbiAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgRmlsZW5hbWVfYmFzZVxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBGZGVxdWVcblxubGV0IGVucXVldWUgPSBlbnF1ZXVlX2JhY2tcbmxldCBwZWVrX2V4biA9IHBlZWtfZnJvbnRfZXhuXG5sZXQgcGVlayA9IHBlZWtfZnJvbnRcbmxldCBkZXF1ZXVlX2V4biA9IGRlcXVldWVfZnJvbnRfZXhuXG5sZXQgZGVxdWV1ZSA9IGRlcXVldWVfZnJvbnRcbmxldCBkcm9wX2V4biA9IGRyb3BfZnJvbnRfZXhuXG5sZXQgdG9fc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLnRvX3NlcXVlbmNlXG5sZXQgb2Zfc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLm9mX3NlcXVlbmNlXG5cbigqIERlcHJlY2F0ZWQgYWxpYXNlcyAqKVxubGV0IHRvcCA9IHBlZWtcbmxldCB0b3BfZXhuID0gcGVla19leG5cbmxldCBkaXNjYXJkX2V4biA9IGRyb3BfZXhuXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgTmV4dF9maXRcbiAgICAgICAgfCBGaXJzdF9maXRcbiAgICAgICAgfCBCZXN0X2ZpdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnRyb2wgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGRsaWIuR2NcblxubW9kdWxlIFN0YXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgYmluX2lvLCBzZXhwLCBmaWVsZHNdXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZiwgZmllbGRzXVxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICBsZXQgY29tYmluZSBmaXJzdCBzZWNvbmQgfmZsb2F0X2YgfmludF9mID1cbiAgICB7IG1pbm9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5taW5vcl93b3JkcyBzZWNvbmQubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5wcm9tb3RlZF93b3JkcyBzZWNvbmQucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5tYWpvcl93b3JkcyBzZWNvbmQubWFqb3Jfd29yZHNcbiAgICA7IG1pbm9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWlub3JfY29sbGVjdGlvbnMgc2Vjb25kLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LmhlYXBfd29yZHMgc2Vjb25kLmhlYXBfd29yZHNcbiAgICA7IGhlYXBfY2h1bmtzID0gaW50X2YgZmlyc3QuaGVhcF9jaHVua3Mgc2Vjb25kLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gaW50X2YgZmlyc3QubGl2ZV93b3JkcyBzZWNvbmQubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5saXZlX2Jsb2NrcyBzZWNvbmQubGl2ZV9ibG9ja3NcbiAgICA7IGZyZWVfd29yZHMgPSBpbnRfZiBmaXJzdC5mcmVlX3dvcmRzIHNlY29uZC5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmZyZWVfYmxvY2tzIHNlY29uZC5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gaW50X2YgZmlyc3QubGFyZ2VzdF9mcmVlIHNlY29uZC5sYXJnZXN0X2ZyZWVcbiAgICA7IGZyYWdtZW50cyA9IGludF9mIGZpcnN0LmZyYWdtZW50cyBzZWNvbmQuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGludF9mIGZpcnN0LmNvbXBhY3Rpb25zIHNlY29uZC5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC50b3BfaGVhcF93b3JkcyBzZWNvbmQudG9wX2hlYXBfd29yZHNcbiAgICA7IHN0YWNrX3NpemUgPSBpbnRfZiBmaXJzdC5zdGFja19zaXplIHNlY29uZC5zdGFja19zaXplXG4gICAgfVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IGNvbWJpbmUgZmlyc3Qgc2Vjb25kIH5mbG9hdF9mIH5pbnRfZiA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWlub3Jfd29yZHMgc2Vjb25kLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGZsb2F0X2YgZmlyc3QucHJvbW90ZWRfd29yZHMgc2Vjb25kLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWFqb3Jfd29yZHMgc2Vjb25kLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1pbm9yX2NvbGxlY3Rpb25zIHNlY29uZC5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC5oZWFwX3dvcmRzIHNlY29uZC5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGludF9mIGZpcnN0LmhlYXBfY2h1bmtzIHNlY29uZC5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGludF9mIGZpcnN0LmxpdmVfd29yZHMgc2Vjb25kLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gaW50X2YgZmlyc3QubGl2ZV9ibG9ja3Mgc2Vjb25kLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gaW50X2YgZmlyc3QuZnJlZV93b3JkcyBzZWNvbmQuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5mcmVlX2Jsb2NrcyBzZWNvbmQuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGludF9mIGZpcnN0Lmxhcmdlc3RfZnJlZSBzZWNvbmQubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBpbnRfZiBmaXJzdC5mcmFnbWVudHMgc2Vjb25kLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBpbnRfZiBmaXJzdC5jb21wYWN0aW9ucyBzZWNvbmQuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gaW50X2YgZmlyc3QudG9wX2hlYXBfd29yZHMgc2Vjb25kLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gaW50X2YgZmlyc3Quc3RhY2tfc2l6ZSBzZWNvbmQuc3RhY2tfc2l6ZVxuICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgaW50X2YgZmlyc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNcbiAgICB9XG4gIDs7XG5cbiAgWyUlZW5kaWZdXG5cbiAgbGV0IGFkZCA9IGNvbWJpbmUgfmZsb2F0X2Y6RmxvYXQuKCArICkgfmludF9mOkludC4oICsgKVxuICBsZXQgZGlmZiA9IGNvbWJpbmUgfmZsb2F0X2Y6RmxvYXQuKCAtICkgfmludF9mOkludC4oIC0gKVxuZW5kXG5cbm1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICB7IG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgOyBtdXRhYmxlIHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgOyBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSVlbHNlXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJWVuZGlmXVxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmVuZFxuXG5tb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkFsbG9jYXRpb25fcG9saWN5LlYxLnQgPVxuICAgIHwgTmV4dF9maXRcbiAgICB8IEZpcnN0X2ZpdFxuICAgIHwgQmVzdF9maXRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gICAgfCBOZXh0X2ZpdCAtPiAwXG4gICAgfCBGaXJzdF9maXQgLT4gMVxuICAgIHwgQmVzdF9maXQgLT4gMlxuICA7O1xuZW5kXG5cbmxldCB0dW5lXG4gICAgICA/bG9nZ2VyXG4gICAgICA/bWlub3JfaGVhcF9zaXplXG4gICAgICA/bWFqb3JfaGVhcF9pbmNyZW1lbnRcbiAgICAgID9zcGFjZV9vdmVyaGVhZFxuICAgICAgP3ZlcmJvc2VcbiAgICAgID9tYXhfb3ZlcmhlYWRcbiAgICAgID9zdGFja19saW1pdFxuICAgICAgP2FsbG9jYXRpb25fcG9saWN5XG4gICAgICA/d2luZG93X3NpemVcbiAgICAgID9jdXN0b21fbWFqb3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfbWF4X3NpemVcbiAgICAgICgpXG4gID1cbiAgbGV0IG9sZF9jb250cm9sX3BhcmFtcyA9IGdldCAoKSBpblxuICBsZXQgZiBvcHQgdG9fc3RyaW5nIGZpZWxkID1cbiAgICBsZXQgb2xkX3ZhbHVlID0gRmllbGQuZ2V0IGZpZWxkIG9sZF9jb250cm9sX3BhcmFtcyBpblxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgIHwgU29tZSBuZXdfdmFsdWUgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGxvZ2dlciB+ZjooZnVuIGYgLT5cbiAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgZlxuICAgICAgICAgIFwiR2MuQ29udHJvbC4lczogJXMgLT4gJXNcIlxuICAgICAgICAgIChGaWVsZC5uYW1lIGZpZWxkKVxuICAgICAgICAgICh0b19zdHJpbmcgb2xkX3ZhbHVlKVxuICAgICAgICAgICh0b19zdHJpbmcgbmV3X3ZhbHVlKSk7XG4gICAgICBuZXdfdmFsdWVcbiAgaW5cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID0gT3B0aW9uLm1hcCBhbGxvY2F0aW9uX3BvbGljeSB+ZjpBbGxvY2F0aW9uX3BvbGljeS50b19pbnQgaW5cbiAgbGV0IG5ld19jb250cm9sX3BhcmFtcyA9XG4gICAgQ29udHJvbC5GaWVsZHMubWFwXG4gICAgICB+bWlub3JfaGVhcF9zaXplOihmIG1pbm9yX2hlYXBfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfm1ham9yX2hlYXBfaW5jcmVtZW50OihmIG1ham9yX2hlYXBfaW5jcmVtZW50IHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3BhY2Vfb3ZlcmhlYWQ6KGYgc3BhY2Vfb3ZlcmhlYWQgc3RyaW5nX29mX2ludClcbiAgICAgIH52ZXJib3NlOihmIHZlcmJvc2Ugc3RyaW5nX29mX2ludClcbiAgICAgIH5tYXhfb3ZlcmhlYWQ6KGYgbWF4X292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3RhY2tfbGltaXQ6KGYgc3RhY2tfbGltaXQgc3RyaW5nX29mX2ludClcbiAgICAgIH5hbGxvY2F0aW9uX3BvbGljeTooZiBhbGxvY2F0aW9uX3BvbGljeSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfndpbmRvd19zaXplOihmIHdpbmRvd19zaXplIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21ham9yX3JhdGlvOihmIGN1c3RvbV9tYWpvcl9yYXRpbyBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9taW5vcl9yYXRpbzooZiBjdXN0b21fbWlub3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfbWF4X3NpemU6KGYgY3VzdG9tX21pbm9yX21heF9zaXplIHN0cmluZ19vZl9pbnQpXG4gIGluXG4gIHNldCBuZXdfY29udHJvbF9wYXJhbXNcbjs7XG5cbmxldCBkaXNhYmxlX2NvbXBhY3Rpb24gP2xvZ2dlciB+YWxsb2NhdGlvbl9wb2xpY3kgKCkgPVxuICBsZXQgYWxsb2NhdGlvbl9wb2xpY3kgPVxuICAgIG1hdGNoIGFsbG9jYXRpb25fcG9saWN5IHdpdGhcbiAgICB8IGBEb24ndF9jaGFuZ2UgLT4gTm9uZVxuICAgIHwgYFNldF90byBwb2xpY3kgLT4gU29tZSBwb2xpY3lcbiAgaW5cbiAgKCogVGhlIHZhbHVlIDFfMDAwXzAwMCwgYWNjb3JkaW5nIHRvXG4gICAgIGh0dHA6Ly9jYW1sLmlucmlhLmZyL3B1Yi9kb2NzL21hbnVhbC1vY2FtbC00LjAyL2xpYnJlZi9HYy5odG1sXG4gICAgIHdpbGwgZGlzYWJsZSBjb21wYWN0aW9ucy5cbiAgKilcbiAgdHVuZSA/bG9nZ2VyID9hbGxvY2F0aW9uX3BvbGljeSB+bWF4X292ZXJoZWFkOjFfMDAwXzAwMCAoKVxuOztcblxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl93b3Jkc1wiXG5leHRlcm5hbCBtYWpvcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHByb21vdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfcHJvbW90ZWRfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWlub3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtYWpvcl9jb2xsZWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvbXBhY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfY29tcGFjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfcGx1c19taW5vcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgYWxsb2NhdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfYWxsb2NhdGVkX3dvcmRzXCJcbmV4dGVybmFsIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyA6IHVuaXQgLT4gdW5pdCA9IFwiY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3NcIlxuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG5leHRlcm5hbCBoZWFwX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfaGVhcF93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoZWFwX2NodW5rcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2hlYXBfY2h1bmtzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvcF9oZWFwX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcIiBbQEBub2FsbG9jXVxuXG5bJSVlbmRpZl1cblxubGV0IHN0YXRfc2l6ZV9sYXp5ID1cbiAgbGF6eSAoT2JqLnJlYWNoYWJsZV93b3JkcyAoT2JqLnJlcHIgKFN0ZGxpYi5HYy5xdWlja19zdGF0ICgpIDogU3RhdC50KSkpXG47O1xuXG5sZXQgc3RhdF9zaXplICgpID0gTGF6eS5mb3JjZSBzdGF0X3NpemVfbGF6eVxubGV0IHplcm8gPSBTeXMub3BhcXVlX2lkZW50aXR5IChpbnRfb2Zfc3RyaW5nIFwiMFwiKVxuXG4oKiBUaGUgY29tcGlsZXIgd29uJ3Qgb3B0aW1pemUgaW50X29mX3N0cmluZyBhd2F5IHNvIGl0IHdvbid0XG4gICBwZXJmb3JtIGNvbnN0YW50IGZvbGRpbmcgYmVsb3cuICopXG5sZXQgcmVjIGtlZXBfYWxpdmUgbyA9IGlmIHplcm8gPD4gMCB0aGVuIGtlZXBfYWxpdmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgbylcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICgqIFdlIGRpc2FibGUgaW5saW5pbmcgZm9yIHRoaXMgZnVuY3Rpb24gc28gdGhlIEdDIHN0YXRzIGFuZCB0aGUgY2FsbCB0byBbZl0gYXJlIG5ldmVyXG4gICAgIHJlYXJyYW5nZWQuICopXG4gIGxldFtAY29sZF0gbWVhc3VyZV9pbnRlcm5hbCB+b25fcmVzdWx0IGYgPVxuICAgIGxldCBtaW5vcl93b3Jkc19iZWZvcmUgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19iZWZvcmUgPSBtYWpvcl93b3JkcyAoKSBpblxuICAgICgqIFdlIHdyYXAgW2YgKCldIHdpdGggW1N5cy5vcGFxdWVfaWRlbnRpdHldIHRvIHByZXZlbnQgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGJlaW5nXG4gICAgICAgb3B0aW1pemVkIGF3YXkuICopXG4gICAgbGV0IHggPSBTeXMub3BhcXVlX2lkZW50aXR5IChmICgpKSBpblxuICAgIGxldCBtaW5vcl93b3Jkc19hZnRlciA9IG1pbm9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FmdGVyID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID0gbWFqb3Jfd29yZHNfYWZ0ZXIgLSBtYWpvcl93b3Jkc19iZWZvcmUgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWxsb2NhdGVkID0gbWlub3Jfd29yZHNfYWZ0ZXIgLSBtaW5vcl93b3Jkc19iZWZvcmUgaW5cbiAgICBvbl9yZXN1bHQgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHhcbiAgOztcblxuICBsZXQgaXNfemVyb19hbGxvYyAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICAgICgqIEluc3RlYWQgb2YgdXNpbmcgW0FsbG9jYXRpb25fcmVwb3J0Lm1lYXN1cmVdLCBhbmQgbWF0Y2hpbmcgb24gdGhlIHJlc3VsdCwgd2UgdXNlXG4gICAgICAgdGhpcyBjb25zdHJ1Y3Rpb24sIGluIG9yZGVyIHRvIGhhdmUgW2lzX3plcm9fYWxsb2NdIG5vdCBhbGxvY2F0ZSBpdHNlbGYuIFRoaXNcbiAgICAgICBlbmFibGVzIFtpc196ZXJvX2FsbG9jXSB0byBiZSB1c2VkIGluIGEgbmVzdGVkIHdheS4gKilcbiAgICBtZWFzdXJlX2ludGVybmFsXG4gICAgICBmXG4gICAgICB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHZhbHVlIC0+XG4gICAgICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2YWx1ZSA6IGEpO1xuICAgICAgICBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPT0gMCAmJiBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPT0gMClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9yZXBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgfVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZWFzdXJlX2FsbG9jYXRpb24gZiA9XG4gICAgbWVhc3VyZV9pbnRlcm5hbCBmIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeCAtPlxuICAgICAgeCwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9sb2cgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzaXplX2luX3dvcmRzIDogaW50XG4gICAgICA7IGlzX21ham9yIDogYm9vbFxuICAgICAgOyBiYWNrdHJhY2UgOiBzdHJpbmdcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMSwgMCldXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCBsb2cgOiBBbGxvY2F0aW9uX2xvZy50IGxpc3QgcmVmID0gcmVmIFtdXG4gICAgYW5kIG1ham9yX2FsbG9jcyA9IHJlZiAwXG4gICAgYW5kIG1pbm9yX2FsbG9jcyA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2FsbG9jIH5pc19tYWpvciAoaW5mbyA6IFN0ZGxpYi5HYy5NZW1wcm9mLmFsbG9jYXRpb24pID1cbiAgICAgIGlmIGlzX21ham9yXG4gICAgICB0aGVuIG1ham9yX2FsbG9jcyA6PSAhbWFqb3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXNcbiAgICAgIGVsc2UgbWlub3JfYWxsb2NzIDo9ICFtaW5vcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlcztcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgaW5mby5jYWxsc3RhY2sgaW5cbiAgICAgICgqIE1ha2UgYmFja3RyYWNlcyBlYXNpZXIgdG8gcmVhZCBieSBkZWxldGluZyBldmVyeXRoaW5nIGJlbG93IHRoaXMgZnVuY3Rpb24gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3Vic3RyX2luZGV4IGJhY2t0cmFjZSB+cGF0dGVybjpcIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uXCIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgcG9zc2libGU6IHdlIG1heSBoYXZlIGxvZ2dlZCBhbGxvY2F0aW9ucyBpbiBhbm90aGVyIHRocmVhZCAqKVxuICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgIFN0cmluZy5zdWIgfnBvczowIH5sZW46cCBiYWNrdHJhY2VcbiAgICAgICAgICB8PiBTdHJpbmcucnN0cmlwIH5kcm9wOihmdW5jdGlvblxuICAgICAgICAgICAgfCAnXFxuJyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICBpblxuICAgICAgbGV0IGluZm8gOiBBbGxvY2F0aW9uX2xvZy50ID1cbiAgICAgICAgeyBzaXplX2luX3dvcmRzID0gaW5mby5uX3NhbXBsZXM7IGlzX21ham9yOyBiYWNrdHJhY2UgfVxuICAgICAgaW5cbiAgICAgIGxvZyA6PSBpbmZvIDo6ICFsb2c7XG4gICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgdHJhY2tlciA9XG4gICAgICB7IFN0ZGxpYi5HYy5NZW1wcm9mLm51bGxfdHJhY2tlciB3aXRoXG4gICAgICAgIGFsbG9jX21pbm9yID0gb25fYWxsb2MgfmlzX21ham9yOmZhbHNlXG4gICAgICA7IGFsbG9jX21ham9yID0gb25fYWxsb2MgfmlzX21ham9yOnRydWVcbiAgICAgIH1cbiAgICBpblxuICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0YXJ0IH5zYW1wbGluZ19yYXRlOjEuMCB0cmFja2VyO1xuICAgICgqIEV4bi5wcm90ZWN0LCBtYW51YWxseSBpbmxpbmVkIHRvIGd1YXJhbnRlZSBubyBhbGxvY2F0aW9ucyAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgICB8IHggLT5cbiAgICAgICAgKCogTWVtcHJvZi5zdG9wIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFsbCBtZW1wcm9mIGNhbGxiYWNrcyBhcmUgcnVuIChzb21lIG1heSBiZVxuICAgICAgICAgICBkZWxheWVkIGlmIHRoZXkgaGFwcGVuZWQgZHVyaW5nIEMgY29kZSBhbmQgdGhlcmUgaGFzIGJlZW4gbm8gYWxsb2NhdGlvbiBzaW5jZSksXG4gICAgICAgICAgIHNvIHdlIGV4cGxpY3RseSBmbHVzaCB0aGVtICopXG4gICAgICAgIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKTtcbiAgICAgICAgU3RkbGliLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgeFxuICAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBydW5fbWVtcHJvZl9jYWxsYmFja3MgKCk7XG4gICAgICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICggcmVzdWx0XG4gICAgLCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGVcbiAgICAgICAgfm1ham9yX3dvcmRzX2FsbG9jYXRlZDohbWFqb3JfYWxsb2NzXG4gICAgICAgIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQ6IW1pbm9yX2FsbG9jc1xuICAgICwgTGlzdC5yZXYgIWxvZyApXG4gIDs7XG5cbiAgWyUlZWxzZV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IHgsIHJlcG9ydCA9IG1lYXN1cmVfYWxsb2NhdGlvbiBmIGluXG4gICAgeCwgcmVwb3J0LCBbXVxuICA7O1xuXG4gIFslJWVuZGlmXVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGFkZF9maW5hbGl6ZXIgeCBmID1cbiAgICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIChmdW4geCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB4KSkgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXIgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgKCogW2FkZF9maW5hbGl6ZXJfZXhuXSBpcyB0aGUgc2FtZSBhcyBbYWRkX2ZpbmFsaXplcl0uICBIb3dldmVyLCB0aGVpciB0eXBlcyBpblxuICAgICBjb3JlX2djLm1saSBhcmUgZGlmZmVyZW50LCBhbmQgdGhlIHR5cGUgb2YgW2FkZF9maW5hbGl6ZXJdIGd1YXJhbnRlZXMgdGhhdCBpdCBhbHdheXNcbiAgICAgcmVjZWl2ZXMgYSBoZWFwIGJsb2NrLCB3aGljaCBlbnN1cmVzIHRoYXQgaXQgd2lsbCBub3QgcmFpc2UsIHdoaWxlXG4gICAgIFthZGRfZmluYWxpemVyX2V4bl0gYWNjZXB0cyBhbnkgdHlwZSwgYW5kIHNvIG1heSByYWlzZS4gKilcbiAgbGV0IGFkZF9maW5hbGl6ZXJfZXhuIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplcl9sYXN0IGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplX3JlbGVhc2UgPSBTdGRsaWIuR2MuZmluYWxpc2VfcmVsZWFzZVxuXG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGFsYXJtXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gPSBcIjxnYyBhbGFybT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBsZXQgY3JlYXRlIGYgPSBjcmVhdGVfYWxhcm0gKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpXG4gICAgbGV0IGRlbGV0ZSA9IGRlbGV0ZV9hbGFybVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTZXJpYWxpemFibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGhvc3QgOiBTdHJpbmcudFxuICAgICAgICA7IHBvcnQgOiBJbnQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3NlcmlhbGl6YWJsZSB7IGhvc3Q7IHBvcnQgfSA9IGhvc3QsIHBvcnRcbiAgICAgIGxldCBvZl9zZXJpYWxpemFibGUgKGhvc3QsIHBvcnQpID0geyBob3N0OyBwb3J0IH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTZXJpYWxpemFibGUuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICB0b19zZXJpYWxpemFibGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogU2VyaWFsaXphYmxlLnRdO1xuICAgICAgICBbJWV4cGVjdFxuICAgICAgICAgIHt8XG4gICAgICAgICAgICAgICAgICA5NTc5OTBmMGZjNDE2MWZiODc0ZTY2ODcyNTUwZmI0MFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDAgfH1dXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChTZXJpYWxpemFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgb3BlbiEgSW1wb3J0XG4gICAgICBvcGVuISBTdGRfaW50ZXJuYWxcbiAgICAgIG9wZW4hIFQwXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeyBob3N0OyBwb3J0IH0gPSBzcHJpbnRmIFwiJXM6JWRcIiBob3N0IHBvcnRcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBob3N0OyBwb3J0IF0gLT5cbiAgICAgICAgICBsZXQgcG9ydCA9XG4gICAgICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyBwb3J0IHdpdGhcbiAgICAgICAgICAgIHwgX2V4biAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogYmFkIHBvcnQ6ICVzXCIgcyAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgeyBob3N0OyBwb3J0IH1cbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nOiAlc1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICB8IFNleHAuQXRvbSBzIGFzIHNleHAgLT5cbiAgICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICAgfCBGYWlsdXJlIGVyciAtPiBvZl9zZXhwX2Vycm9yIGVyciBzZXhwKVxuICAgICAgICB8IHNleHAgLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLlxuICAgICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyAoKiBoYW5kbGVzIHRoZSBob3N0OnBvcnQgc3RyaW5nIGNhc2UgKilcbiAgICAgICAgICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgICAgICAgOyAoKiBoYW5kbGVzIHRoZSBsaXN0IChob3N0IHBvcnQpIGNhc2UgICopXG4gICAgICAgICAgICAgICAgICBMaXN0IChDb25zIChTdHJpbmcsIENvbnMgKEludGVnZXIsIEVtcHR5KSkpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQxKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRfb2Zfc2V4cFwiID1cbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8KGxvY2FsaG9zdCA4MDgwKXx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9O1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3xsb2NhbGhvc3Q6ODA4MHx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9XG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHJvdW5kdHJpcFwiID1cbiAgICAgIFF1aWNrY2hlY2sudGVzdCBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgICAgWyV0ZXN0X3Jlc3VsdDogdF0gKHRfb2Zfc2V4cCAoc2V4cF9vZl90IHQpKSB+ZXhwZWN0OnQpXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbmluY2x1ZGUgTGF0ZXN0XG5cbmxldCBjcmVhdGUgfmhvc3QgfnBvcnQgPSB7IGhvc3Q7IHBvcnQgfVxubGV0IGhvc3QgdCA9IHQuaG9zdFxubGV0IHBvcnQgdCA9IHQucG9ydFxubGV0IHR1cGxlIHQgPSB0b19zZXJpYWxpemFibGUgdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5Ib3N0X2FuZF9wb3J0XCJcbiAgZW5kKVxuXG5pbmNsdWRlIChIYXNoYWJsZS5NYWtlX2JpbmFibGUgKExhdGVzdCkgOiBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoTGF0ZXN0KVxuXG5sZXQgdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiSG9zdF9hbmRfcG9ydFwiIHNleHBfb2ZfdFxuIiwib3BlbiBTdGFibGVfbW9kdWxlX3R5cGVzXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgZW5kKSA6IFMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQyXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlLlYxIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5WMS5NYWtlIChUMSlcbiAgZW5kXG5cbiAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjIgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MyA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTMuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMy5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTMuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMy5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDEuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgYSkgOiBhIFN0YWJsZV93aXRuZXNzLnQgLT4gYSBNLnQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIGZ1biB3aXRuZXNzIC0+XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUxIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDEuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgYSkgOiBhIFN0YWJsZV93aXRuZXNzLnQgLT4gYSBNLnQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIGZ1biB3aXRuZXNzIC0+XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUxIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0Mi5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTIgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0Mi5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTIgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9XG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQzLlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMyAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9XG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQzLlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMyAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb250YWluZXJzID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBleGNlcHRpb24gUGlkX211c3RfYmVfcG9zaXRpdmUgb2YgSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgIGxldCBlbnN1cmUgaSA9IGlmIGkgPD0gMCB0aGVuIHJhaXNlIChQaWRfbXVzdF9iZV9wb3NpdGl2ZSBpKSBlbHNlIGlcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPSBJbnQuU3RhYmxlLlYxLnRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gZW5zdXJlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29udGFpbmVycylcbiAgICBpbmNsdWRlIFdpdGhvdXRfY29udGFpbmVyc1xuICBlbmRcblxuICBtb2R1bGUgTGF0ZXN0ID0gVjFcbmVuZFxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhYmxlLkxhdGVzdC5XaXRob3V0X2NvbnRhaW5lcnNcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2hdXG5cbmxldCBvZl9pbnQgaSA9IGVuc3VyZSBpXG5sZXQgdG9faW50ID0gRm4uaWRcbmxldCBvZl9zdHJpbmcgc3RyaW5nID0gZW5zdXJlIChJbnQub2Zfc3RyaW5nIHN0cmluZylcbmxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG5sZXQgaW5pdCA9IG9mX2ludCAxXG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWRcbiAgICAoSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBvZl9xdWlja2NoZWNrYWJsZSBuID0gT3B0aW9uLnNvbWVfaWYgKG4gPiAwKSBuXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19pbnRcbiAgICBlbmQpXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuUGlkXCJcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuUXVldWVcblxuaW5jbHVkZSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5IGEgPVxuICAgICAgICBsZXQgciA9IGNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBXZSBlbnF1ZXVlIGV2ZXJ5dGhpbmcgdHdpY2UsIGFuZCBkZXF1ZXVlIGl0IG9uY2UgdG8gZW5zdXJlOlxuICAgICAgICAgICAtIHRoYXQgdGhlIHF1ZXVlIGhhcyB0aGUgc2FtZSBjb250ZW50IGFzIHRoZSBhcnJheS5cbiAgICAgICAgICAgLSB0aGF0IGl0IGhhcywgaW4gbW9zdCBjYXNlcywgYW4gaW50ZXJlc3RpbmcgaW50ZXJuYWwgc3RydWN0dXJlKilcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX2V4biByIDogYm9vbCk7XG4gICAgICAgICAgZW5xdWV1ZSByIGEuKGkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHJcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIFNlcmlhbGl6YXRpb25fdjEgPSBzdHJ1Y3RcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJiNGM4NDI1NC00OTkyLTExZTYtOWJhNy03MzRlMTU0MDI3YmRcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuUXVldWVcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID0gaW5pdCBsZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpXG4gICAgZW5kKVxuXG4gIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAoKiBTZXJpYWxpemF0aW9uX3YxIGRlZmluZXMgYSBzdGFibGUgc2VyaWFsaXphdGlvbiAqKVxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbiAgICAoKiBXZSBkb24ndCBoYXZlIGEgWyViaW5fZGlnZXN0XSBleHBlY3QgdGVzdCBoZXJlIGJlY2F1c2UgdGhlIGJpbl9pbyBpcyBtb3N0bHkgaGFuZFxuICAgICAgIHdyaXR0ZW4sIGFuZCBbY29yZV9xdWV1ZV91bml0X3Rlc3RzLm1sXSBoYXMgdW5pdCB0ZXN0cyBmb3Igc3BlY2lmaWMgdmFsdWVzLiAqKVxuXG4gICAgbGV0IG1hcCA9IG1hcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFVuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3QuTWFrZVxuXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3IgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIHR5cGUgU3RhYmxlMSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzFcbm1vZHVsZSB0eXBlIFN0YWJsZTIgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMyXG5tb2R1bGUgdHlwZSBTdGFibGUzID0gU3RhYmxlX21vZHVsZV90eXBlcy5TM1xubW9kdWxlIHR5cGUgU3RhYmxlNCA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzRcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV9pbnQ2M2FibGVfd2l0aF93aXRuZXNzID0gU3RhYmxlX2ludDYzYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcblxubW9kdWxlIHR5cGUgU3RhYmxlX3dpdGhvdXRfY29tcGFyYXRvcl93aXRoX3dpdG5lc3MgPVxuICBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBfd2l0aG91dF9jb21wYXJhdG9yXG5cbm1vZHVsZSB0eXBlIFN0YWJsZTFfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlM193aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTRfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlM0XG5cbm1vZHVsZSBNYWtlX3N0YWJsZSA9IE1ha2Vfc3RhYmxlXG5pbmNsdWRlIFN0YWJsZV9pbnRlcm5hbFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGUuU3RhYmxlXG5tb2R1bGUgQmlnc3RyaW5nID0gQmlnc3RyaW5nLlN0YWJsZVxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmcuU3RhYmxlXG5tb2R1bGUgQm9vbCA9IEJvb2wuU3RhYmxlXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHMuU3RhYmxlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlcy5TdGFibGVcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZS5TdGFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvci5TdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZS5TdGFibGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrLlN0YWJsZVxubW9kdWxlIE1kNSA9IE1kNS5TdGFibGVcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIuU3RhYmxlXG5tb2R1bGUgRXJyb3IgPSBFcnJvci5TdGFibGVcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWUuU3RhYmxlXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZS5TdGFibGVcbm1vZHVsZSBGbG9hdCA9IEZsb2F0LlN0YWJsZVxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5TdGFibGVcbm1vZHVsZSBGcXVldWUgPSBGcXVldWUuU3RhYmxlXG5tb2R1bGUgR2MgPSBHYy5TdGFibGVcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydC5TdGFibGVcbm1vZHVsZSBJbmZvID0gSW5mby5TdGFibGVcbm1vZHVsZSBJbnQgPSBJbnQuU3RhYmxlXG5tb2R1bGUgSW50NjMgPSBJbnQ2My5TdGFibGVcbm1vZHVsZSBMYXp5ID0gTGF6eS5TdGFibGVcbm1vZHVsZSBMaXN0ID0gTGlzdC5TdGFibGVcbm1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZC5TdGFibGVcbm1vZHVsZSBNb250aCA9IE1vbnRoLlN0YWJsZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nLlN0YWJsZVxubW9kdWxlIE9wdGlvbiA9IE9wdGlvbi5TdGFibGVcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yLlN0YWJsZVxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50LlN0YWJsZVxubW9kdWxlIFBlcm1zID0gUGVybXMuU3RhYmxlXG5tb2R1bGUgUGlkID0gUGlkLlN0YWJsZVxubW9kdWxlIFF1ZXVlID0gUXVldWUuU3RhYmxlXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0LlN0YWJsZVxubW9kdWxlIFNldCA9IFNldC5TdGFibGVcbm1vZHVsZSBTZXhwID0gU2V4cC5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nLlN0YWJsZVxubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZC5TdGFibGVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9ucy5TdGFibGVcblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0LlN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTExXSBVc2UgW1RpbWVfZmxvYXRdIG9yIFtUaW1lX2Zsb2F0X3VuaXhdIGluc3RlYWRcIl1cblxubW9kdWxlIFRpbWVfZmxvYXQgPSBUaW1lX2Zsb2F0LlN0YWJsZVxubW9kdWxlIFVuaXQgPSBVbml0LlN0YWJsZVxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDb3JlX3VuaXguU3RhYmxlXVwiXVxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcblxuaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuaW5jbHVkZSBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLkdsb2JhbGl6ZVxuaW5jbHVkZSBJbXBvcnQuTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG4gIEludCA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuXG5sZXQgb2ZfY2FtbF9pbnQgdCA9IHRcbmxldCB0b19jYW1sX2ludCB0ID0gdFxuXG50eXBlIHN5c19iZWhhdmlvciA9XG4gIFsgYENvbnRpbnVlICgqKiBDb250aW51ZSB0aGUgcHJvY2VzcyBpZiBpdCBpcyBjdXJyZW50bHkgc3RvcHBlZCAqKVxuICB8IGBEdW1wX2NvcmUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyBhbmQgZHVtcCBjb3JlICopXG4gIHwgYElnbm9yZSAoKiogSWdub3JlIHRoZSBzaWduYWwgKilcbiAgfCBgU3RvcCAoKiogU3RvcCB0aGUgcHJvY2VzcyAqKVxuICB8IGBUZXJtaW5hdGUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyAqKVxuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXF1YWwgKHQgOiB0KSB0JyA9IHQgPSB0J1xuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBQbGVhc2Uga2VlcCBpbiBzeW5jIHdpdGggdGhlIGxpc3QgZm9yIHRvX3N0cmluZy9zeXNfYmVoYXZpb3IgKilcbiAgb3BlbiBTdGRsaWIuU3lzXG5cbiAgbGV0IGFicnQgPSBzaWdhYnJ0XG4gIGxldCBhbHJtID0gc2lnYWxybVxuICBsZXQgYnVzID0gc2lnYnVzXG4gIGxldCBjaGxkID0gc2lnY2hsZFxuICBsZXQgY29udCA9IHNpZ2NvbnRcbiAgbGV0IGZwZSA9IHNpZ2ZwZVxuICBsZXQgaHVwID0gc2lnaHVwXG4gIGxldCBpbGwgPSBzaWdpbGxcbiAgbGV0IGludCA9IHNpZ2ludFxuICBsZXQga2lsbCA9IHNpZ2tpbGxcbiAgbGV0IHBpcGUgPSBzaWdwaXBlXG4gIGxldCBwb2xsID0gc2lncG9sbFxuICBsZXQgcHJvZiA9IHNpZ3Byb2ZcbiAgbGV0IHF1aXQgPSBzaWdxdWl0XG4gIGxldCBzZWd2ID0gc2lnc2VndlxuICBsZXQgc3RvcCA9IHNpZ3N0b3BcbiAgbGV0IHN5cyA9IHNpZ3N5c1xuICBsZXQgdGVybSA9IHNpZ3Rlcm1cbiAgbGV0IHRyYXAgPSBzaWd0cmFwXG4gIGxldCB0c3RwID0gc2lndHN0cFxuICBsZXQgdHRpbiA9IHNpZ3R0aW5cbiAgbGV0IHR0b3UgPSBzaWd0dG91XG4gIGxldCB1cmcgPSBzaWd1cmdcbiAgbGV0IHVzcjEgPSBzaWd1c3IxXG4gIGxldCB1c3IyID0gc2lndXNyMlxuICBsZXQgdnRhbHJtID0gc2lndnRhbHJtXG4gIGxldCB4Y3B1ID0gc2lneGNwdVxuICBsZXQgeGZzeiA9IHNpZ3hmc3pcbiAgbGV0IHplcm8gPSAwXG5lbmRcblxuZXhjZXB0aW9uIEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3IgPVxuICBsZXQga25vd24gPVxuICAgIFtcbiAgICAgIFwic2lnYWJydFwiLCBhYnJ0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2Fscm1cIiwgYWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdidXNcIiwgYnVzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ2NobGRcIiwgY2hsZCwgYElnbm9yZSwgMVxuICAgIDsgXCJzaWdjb250XCIsIGNvbnQsIGBDb250aW51ZSwgMVxuICAgIDsgXCJzaWdmcGVcIiwgZnBlLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2h1cFwiLCBodXAsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnaWxsXCIsIGlsbCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdpbnRcIiwgaW50LCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2tpbGxcIiwga2lsbCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwaXBlXCIsIHBpcGUsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncG9sbFwiLCBwb2xsLCBgVGVybWluYXRlLCAyXG4gICAgOyBcInNpZ3Byb2ZcIiwgcHJvZiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdxdWl0XCIsIHF1aXQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc2VndlwiLCBzZWd2LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3N0b3BcIiwgc3RvcCwgYFN0b3AsIDFcbiAgICA7IFwic2lnc3lzXCIsIHN5cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0ZXJtXCIsIHRlcm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndHJhcFwiLCB0cmFwLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3RzdHBcIiwgdHN0cCwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRpblwiLCB0dGluLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dG91XCIsIHR0b3UsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3VyZ1wiLCB1cmcsIGBJZ25vcmUsIDJcbiAgICA7IFwic2lndXNyMVwiLCB1c3IxLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3VzcjJcIiwgdXNyMiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd2dGFscm1cIiwgdnRhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3hjcHVcIiwgeGNwdSwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd4ZnN6XCIsIHhmc3osIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnemVyb1wiLCB6ZXJvLCBgSWdub3JlLCAxXG4gICAgXVxuICBpblxuICBsZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCB0X2J5X25hbWUgPSBTdHJpbmcuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IGJlaGF2aW9yX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgTGlzdC5pdGVyIGtub3duIH5mOihmdW4gKG5hbWUsIHQsIGJlaGF2aW9yLCBzdGFibGVfdmVyc2lvbikgLT5cbiAgICBIYXNodGJsLnNldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgfmtleTp0IH5kYXRhOihuYW1lLCBzdGFibGVfdmVyc2lvbik7XG4gICAgSGFzaHRibC5zZXQgdF9ieV9uYW1lIH5rZXk6bmFtZSB+ZGF0YTp0O1xuICAgIEhhc2h0Ymwuc2V0IGJlaGF2aW9yX2J5X3QgfmtleTp0IH5kYXRhOmJlaGF2aW9yKTtcbiAgKCogRm9yIHVua25vd24gc2lnbmFsIG51bWJlcnMsIFt0b19zdHJpbmddIHJldHVybnMgYSBtZWFuaW5nZnVsXG4gICAgIHN0cmluZywgd2hpbGUgW2RlZmF1bHRfc3lzX2JlaGF2aW9yXSBoYXMgdG8gcmFpc2UgYW4gZXhjZXB0aW9uXG4gICAgIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSByaWdodCBhbnN3ZXIgaXMuICopXG4gIGxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246cmVxdWVzdGVkX3ZlcnNpb24gPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgdCB3aXRoXG4gICAgfCBTb21lIChzdHJpbmcsIG5lZWRlZF92ZXJzaW9uKSB3aGVuIHJlcXVlc3RlZF92ZXJzaW9uID49IG5lZWRlZF92ZXJzaW9uIC0+IHN0cmluZ1xuICAgIHwgXyAtPiBcIjx1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCBeIFwiPlwiXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubG93ZXJjYXNlIChTdHJpbmcuc3RyaXAgcykgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdF9ieV9uYW1lIHMgd2l0aFxuICAgIHwgU29tZSBzbiAtPiBzblxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCI8dW5rbm93biBzaWduYWwgXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyAoU3RyaW5nLnNsaWNlIHMgMTYgfi0xKSB3aXRoXG4gICAgICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpKVxuICAgICAgZWxzZSByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpXG4gIGluXG4gIGxldCBkZWZhdWx0X3N5c19iZWhhdmlvciB0ID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgYmVoYXZpb3JfYnlfdCB0IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChJbnZhbGlkX2FyZ3VtZW50XG4gICAgICAgICAgIChcIlNpZ25hbC5kZWZhdWx0X3N5c19iZWhhdmlvcjogdW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQpKVxuICAgIHwgU29tZSBiZWhhdmlvciAtPiBiZWhhdmlvclxuICBpblxuICB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yXG47O1xuXG5leGNlcHRpb24gRXhwZWN0ZWRfYXRvbSBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uKVxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiBzIH52ZXJzaW9uOjJcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG5cbmxldCB0X29mX3NleHAgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gIHwgXyAtPiByYWlzZSAoRXhwZWN0ZWRfYXRvbSBzKVxuOztcblxudHlwZSBwaWRfc3BlYyA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG50eXBlIHNpZ3Byb2NtYXNrX2NvbW1hbmQgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxuXG5sZXQgY2FuX3NlbmRfdG8gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgb2Zfc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfZXhuID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfaSA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZXhwX29mX3BpZF9zcGVjID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3BlbmRpbmcgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncHJvY21hc2sgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lnc3VzcGVuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCB0b19zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIHR5cGUgYmVoYXZpb3IgPVxuICAgIFsgYERlZmF1bHRcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBIYW5kbGUgb2YgdCAtPiB1bml0XG4gICAgXVxuXG4gIG1vZHVsZSBCZWhhdmlvciA9IHN0cnVjdFxuICAgIGxldCBvZl9jYW1sID0gZnVuY3Rpb25cbiAgICAgIHwgU3RkbGliLlN5cy5TaWduYWxfZGVmYXVsdCAtPiBgRGVmYXVsdFxuICAgICAgfCBTaWduYWxfaWdub3JlIC0+IGBJZ25vcmVcbiAgICAgIHwgU2lnbmFsX2hhbmRsZSBmIC0+IGBIYW5kbGUgZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IGBEZWZhdWx0IC0+IFN0ZGxpYi5TeXMuU2lnbmFsX2RlZmF1bHRcbiAgICAgIHwgYElnbm9yZSAtPiBTaWduYWxfaWdub3JlXG4gICAgICB8IGBIYW5kbGUgZiAtPiBTaWduYWxfaGFuZGxlIChmdW4gdCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2lnbmFsIHQgYmVoYXZpb3IgPVxuICAgIEJlaGF2aW9yLm9mX2NhbWwgKFN0ZGxpYi5TeXMuc2lnbmFsIHQgKEJlaGF2aW9yLnRvX2NhbWwgYmVoYXZpb3IpKVxuICA7O1xuXG4gIGxldCBzZXQgdCBiZWhhdmlvciA9IGlnbm9yZSAoc2lnbmFsIHQgYmVoYXZpb3IgOiBiZWhhdmlvcilcbiAgbGV0IGhhbmRsZSB0IGYgPSBzZXQgdCAoYEhhbmRsZSBmKVxuZW5kXG5cbm9wZW4gRXhwZXJ0XG5cbmxldCBoYW5kbGVfZGVmYXVsdCB0ID0gc2V0IHQgYERlZmF1bHRcbmxldCBpZ25vcmUgdCA9IHNldCB0IGBJZ25vcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjJcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoxXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduX29yX25hbiA9IEJhc2UuU2lnbl9vcl9uYW5cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduX29yX25hbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgICB8IE5hblxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduX29yX25hblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduX29yX25hbikgKFN0YWJsZS5WMSlcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgW0Bjb21wYXJlLmlnbm9yZV0gW0BlcXVhbC5pZ25vcmVdXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGZpZWxkc11cbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBvZl9mb3JtYXQgKHYxIDogJ2EgRm9ybWF0LnQpIDogJ2EgdCA9IHsgdmFsdWUgPSAhdjE7IHNldF9hdCA9IFslaGVyZV0gfVxuICAgICAgbGV0IHRvX2Zvcm1hdCAodCA6ICdhIHQpIDogJ2EgRm9ybWF0LnQgPSByZWYgdC52YWx1ZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2Zvcm1hdFxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGVcbiAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlMVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19mb3JtYXRcbiAgICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBVbnN0YWJsZSA9IFN0YWJsZS5WMVxub3BlbiBTdGFibGUuVFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB7IHZhbHVlOyBzZXRfYXQgfSA9XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBOb25lIC0+IFslbWVzc2FnZSBcInVuc2V0XCJdXG4gIHwgU29tZSB2YWx1ZSAtPlxuICAgIFslbWVzc2FnZSBcIlwiICh2YWx1ZSA6IGEpIH5zZXRfYXQ6KHNldF9hdCB8PiBTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcpXVxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IE5vbmU7IHNldF9hdCA9IFslaGVyZV0gfVxuXG5sZXQgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZSA9XG4gIHQudmFsdWUgPC0gU29tZSB2YWx1ZTtcbiAgdC5zZXRfYXQgPC0gaGVyZVxuOztcblxubGV0IHNldF9pZl9ub25lIHQgaGVyZSB2YWx1ZSA9IGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWUgdGhlbiBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlXG5cbmxldCBzZXQgdCBoZXJlIHZhbHVlID1cbiAgaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxuICB0aGVuIChcbiAgICBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlO1xuICAgIE9rICgpKVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1NldF9vbmNlLnNldF9leG5dIGFscmVhZHkgc2V0XCJcbiAgICAgICAgICB+c2V0dGluZ19hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAgICAgfnByZXZpb3VzbHlfc2V0X2F0Oih0LnNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IHNldF9leG4gdCBoZXJlIHZhbHVlID0gT3JfZXJyb3Iub2tfZXhuIChzZXQgdCBoZXJlIHZhbHVlKVxubGV0IGdldCB0ID0gdC52YWx1ZVxuXG5sZXQgZ2V0X2V4biAodCA6IF8gdCkgaGVyZSA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1NldF9vbmNlLmdldF9leG5dIHVuc2V0XCIgfmF0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgaXNfbm9uZSB0ID0gT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxubGV0IGlzX3NvbWUgdCA9IE9wdGlvbi5pc19zb21lIHQudmFsdWVcbmxldCBpdGVyIHQgfmYgPSBPcHRpb24uaXRlciB0LnZhbHVlIH5mXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgdCA9IGdldF9leG4gdCBbJWhlcmVdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHRvX3N0cmluZyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IHByaW50IF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgY2F0Y2ggXyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl9oYW5kbGVfdW5jYXVnaHRfaW5zdGVhZFxubGV0IHByaW50X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5wcmludF9iYWNrdHJhY2VcbmxldCBnZXRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLmdldF9iYWNrdHJhY2VcbmxldCByZWNvcmRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbmxldCBiYWNrdHJhY2Vfc3RhdHVzID0gU3RkbGliLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXNcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvbl9hcnJheVxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19hcnJheVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuTGF6eX1bQmFzZS5MYXp5XX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBCYXNlLkxhenkudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgKCoqIEBpbmxpbmUgKilcblxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBjb21wYXJlID1cbiAgWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG4gIC0+IFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cblxubGV0IGNvbXBhcmUgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDwgKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPD0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA+PSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw+ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBlcXVhbCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1pbiBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1heCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICgnYSwgJ2IpIGZuID0gJ2EgLT4gJ2JcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUnZhbCBvZiAnYVxuICAgIHwgRXhwdCBvZiBleG5cblxuICBsZXQgcmV0dXJuID0gZnVuY3Rpb25cbiAgICB8IFJ2YWwgdiAtPiB2XG4gICAgfCBFeHB0IGUgLT4gcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjYXB0dXJlIGYgeCA9XG4gICAgdHJ5IFJ2YWwgKGYgeCkgd2l0aFxuICAgIHwgZSAtPiBFeHB0IGVcbiAgOztcbmVuZFxuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGwgPSBMYXp5LmZyb21fZnVuIGYgaW5cbiAgZnVuICgpIC0+IExhenkuZm9yY2UgbFxuOztcblxubGV0IHVuYm91bmRlZCAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSBmID1cbiAgbGV0IGNhY2hlID1cbiAgICBsZXQgbW9kdWxlIEEgPVxuICAgICAgSGFzaGFibGUuTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgQS5UYWJsZS5jcmVhdGUgKCkgfnNpemU6MFxuICBpblxuICAoKiBBbGxvY2F0ZSB0aGlzIGNsb3N1cmUgYXQgdGhlIGNhbGwgdG8gW3VuYm91bmRlZF0sIG5vdCBhdCBlYWNoIGNhbGwgdG8gdGhlIG1lbW9pemVkXG4gICAgIGZ1bmN0aW9uLiAqKVxuICBsZXQgcmVhbGx5X2NhbGxfZiBhcmcgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICBmdW4gYXJnIC0+IFJlc3VsdC5yZXR1cm4gKEhhc2h0YmwuZmluZGlfb3JfYWRkIGNhY2hlIGFyZyB+ZGVmYXVsdDpyZWFsbHlfY2FsbF9mKVxuOztcblxuKCogdGhlIHNhbWUgYnV0IHdpdGggYSBib3VuZCBvbiBjYWNoZSBzaXplICopXG5sZXQgbHJ1ICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIH5tYXhfY2FjaGVfc2l6ZSBmID1cbiAgaWYgbWF4X2NhY2hlX3NpemUgPD0gMFxuICB0aGVuIGZhaWx3aXRoZiBcIk1lbW8ubHJ1OiBtYXhfY2FjaGVfc2l6ZSBvZiAlaSA8PSAwXCIgbWF4X2NhY2hlX3NpemUgKCk7XG4gIGxldCBtb2R1bGUgQ2FjaGUgPVxuICAgIEhhc2hfcXVldWUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgIGVuZClcbiAgaW5cbiAgbGV0IGNhY2hlID0gQ2FjaGUuY3JlYXRlICgpIGluXG4gIGZ1biBhcmcgLT5cbiAgICBSZXN1bHQucmV0dXJuXG4gICAgICAobWF0Y2ggQ2FjaGUubG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgY2FjaGUgYXJnIHdpdGhcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHJlc3VsdCA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gICAgICAgICBDYWNoZS5lbnF1ZXVlX2JhY2tfZXhuIGNhY2hlIGFyZyByZXN1bHQ7XG4gICAgICAgICAoKiBlamVjdCBsZWFzdCByZWNlbnRseSB1c2VkIGNhY2hlIGVudHJ5ICopXG4gICAgICAgICBpZiBDYWNoZS5sZW5ndGggY2FjaGUgPiBtYXhfY2FjaGVfc2l6ZVxuICAgICAgICAgdGhlbiBpZ25vcmUgKENhY2hlLmRlcXVldWVfZnJvbnRfZXhuIGNhY2hlIDogXyBSZXN1bHQudCk7XG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgZ2VuZXJhbCA/aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZiA9XG4gIG1hdGNoIGNhY2hlX3NpemVfYm91bmQgd2l0aFxuICB8IE5vbmUgLT4gdW5ib3VuZGVkID9oYXNoYWJsZSBmXG4gIHwgU29tZSBuIC0+IGxydSA/aGFzaGFibGUgfm1heF9jYWNoZV9zaXplOm4gZlxuOztcblxuKCogV2UgZXhwZWN0IFtmX29uZXN0ZXBdIHRvIGJlIGEgb25lLXN0ZXAgdW5yb2xsZWQgcmVjdXJzaXZlIGZ1bmN0aW9uOyBzZWUgdGhlIG1saS4gSGVuY2UsXG4gICBoZXJlIHdlIGNyZWF0ZSB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gX2FuZF8gcGFzcyBpdCB0byBbZl9vbmVzdGVwXSB0byBiZSB1c2VkIGZvclxuICAgcmVjdXJzaXZlIGNhbGxzLlxuXG4gICBOb3RlIHRoYXQgd2UgaW1tZWRpYXRlbHkgYXBwbHkgW2Zfb25lc3RlcF0gdG8gaXRzIGZpcnN0IGFyZ3VtZW50IGhlcmUgc28gdGhhdCBhbnlcbiAgIHByZWNvbXB1dGF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSB1c2VyIGNhbGxzIFtyZWN1cnNpdmVdLlxuXG4gICBBcyBhbiBleGFtcGxlLCBpZiBzb21lb25lIHdyaXRlcyB0aGlzIG5vbi1tZW1vaXplZCBjb2RlOlxuXG4gICBbIGxldCByZWMgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIF1cblxuICAgYW5kIGNvbnZlcnRzIHRvIG1lbW9pemF0aW9uIGJ5IGRvaW5nOlxuXG4gICB7W1xuICAgICBsZXQgZiA9XG4gICAgICAgbGV0IGZfb25lc3RlcCBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gaW5cbiAgICAgICByZWN1cnNpdmUgZl9vbmVzdGVwXG4gICBdfVxuXG4gICB3ZSB3YW50IHRvIGNvbXB1dGUgW2RhdGFdIGltbWVkaWF0ZWx5LiBJZiB3ZSBoYWQgW2Z1biB4IC0+IGZfb25lc3RlcCAoZm9yY2UgbWVtb2l6ZWQpXG4gICB4XSBiZWxvdywgd2UnZCByZWNvbXB1dGUgW2RhdGFdIGVhY2ggdGltZSB0aGUgdXNlciBjYWxscyBbZl0gb24gYW4gYXJndW1lbnQgdGhhdCBoYWRuJ3RcbiAgIHlldCBiZWVuIG1lbW9pemVkLiAqKVxubGV0IHJlY3Vyc2l2ZSB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZl9vbmVzdGVwID1cbiAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgbGF6eSAoZ2VuZXJhbCB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgKGZfb25lc3RlcCAoZnVuIHggLT4gKGZvcmNlIG1lbW9pemVkKSB4KSkpXG4gIGluXG4gIGZvcmNlIG1lbW9pemVkXG47O1xuXG5sZXQgb2ZfY29tcGFyYWJsZSAodHlwZSBpbmRleCkgKG1vZHVsZSBNIDogQ29tcGFyYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gaW5kZXgpIGYgPVxuICBsZXQgbSA9IHJlZiBNLk1hcC5lbXB0eSBpblxuICBmdW4gKHggOiBNLnQpIC0+XG4gICAgbGV0IHYgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgIW0geCB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHYgPSBSZXN1bHQuY2FwdHVyZSBmIHggaW5cbiAgICAgICAgbSA6PSBNYXAuc2V0ICFtIH5rZXk6eCB+ZGF0YTp2O1xuICAgICAgICB2XG4gICAgaW5cbiAgICBSZXN1bHQucmV0dXJuIHZcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBRdWV1ZSA9IEJhc2UuTGlua2VkX3F1ZXVlXG5pbmNsdWRlIFF1ZXVlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgUXVldWUudFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODAwZGY5YTAtNDk5Mi0xMWU2LTg4MWQtZmZlMWE1YzhhY2VkXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTGlua2VkX3F1ZXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAoKiBCaW5fcHJvdCByZWFkcyB0aGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3ZXJlIHdyaXR0ZW4gb3V0LCBhcyBkZXRlcm1pbmVkXG4gICAgICAgYnkgW2l0ZXJdLiAgU28sIHdlIGNhbiBpZ25vcmUgdGhlIGluZGV4IGFuZCBqdXN0IGVucXVldWUgZWFjaCBlbGVtZW50IGFzIGl0IGlzIHJlYWRcbiAgICAgICBpbi4gKilcbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgIGVucXVldWUgdCAobmV4dCAoKSlcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERlcml2aW5nX2hhc2hfaW50ZlxuXG5tb2R1bGUgT2ZfZGVyaXZpbmdfaGFzaFxuICAgIChSZXByIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG4gICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSZXByLmhhc2hfZm9sZF90IHN0YXRlIChNLnRvX3JlcHIgdClcbiAgbGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogW2Fycl0gaXMgYSBjeWNsaWMgYnVmZmVyICopXG4gICAgbXV0YWJsZSBhcnIgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7ICgqIFtmcm9udF9pbmRleF0gYW5kIFtiYWNrX2luZGV4XSBhcmUgdGhlIHBvc2l0aW9ucyBpbiB3aGljaCBuZXcgZWxlbWVudHMgbWF5IGJlXG4gICAgICAgZW5xdWV1ZWQuICBUaGlzIG1ha2VzIHRoZSBhY3RpdmUgcGFydCBvZiBbYXJyXSB0aGUgcmFuZ2UgZnJvbSBbZnJvbnRfaW5kZXgrMV0gdG9cbiAgICAgICBbYmFja19pbmRleC0xXSAobW9kdWxvIHRoZSBsZW5ndGggb2YgW2Fycl0gYW5kIHdyYXBwaW5nIGFyb3VuZCBpZiBuZWNlc3NhcnkpLiAgTm90ZVxuICAgICAgIHRoYXQgdGhpcyBtZWFucyB0aGUgYWN0aXZlIHJhbmdlIGlzIG1heGltaXplZCB3aGVuIFtmcm9udF9pbmRleCA9IGJhY2tfaW5kZXhdLCB3aGljaFxuICAgICAgIG9jY3VycyB3aGVuIHRoZXJlIGFyZSBbQXJyYXkubGVuZ3RoIGFyciAtIDFdIGFjdGl2ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIGZyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBiYWNrX2luZGV4IDogaW50XG4gIDsgKCogYXBwYXJlbnRfZnJvbnRfaW5kZXggaXMgd2hhdCBpcyBleHBvc2VkIGFzIHRoZSBmcm9udCBpbmRleCBleHRlcm5hbGx5LiAgSXQgaGFzIG5vXG4gICAgICAgcmVhbCByZWxhdGlvbiB0byB0aGUgYXJyYXkgLS0gZXZlcnkgZW5xdWV1ZSB0byB0aGUgZnJvbnQgZGVjcmVtZW50cyBpdCBhbmQgZXZlcnlcbiAgICAgICBkZXF1ZXVlIGZyb20gdGhlIGZyb250IGluY3JlbWVudHMgaXQuICopXG4gICAgbXV0YWJsZSBhcHBhcmVudF9mcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgKCogV2Uga2VlcCBhcnJfbGVuZ3RoIGhlcmUgYXMgYSBzcGVlZCBoYWNrLiAgQ2FsbGluZyBBcnJheS5sZW5ndGggb24gYXJyIGlzIGFjdHVhbGx5XG4gICAgICAgbWVhbmluZ2Z1bGx5IHNsb3dlci4gKilcbiAgICBtdXRhYmxlIGFycl9sZW5ndGggOiBpbnRcbiAgOyBuZXZlcl9zaHJpbmsgOiBib29sXG4gIH1cblxubGV0IGNyZWF0ZSA/aW5pdGlhbF9sZW5ndGggP25ldmVyX3NocmluayAoKSA9XG4gIGxldCBuZXZlcl9zaHJpbmsgPVxuICAgIG1hdGNoIG5ldmVyX3NocmluayB3aXRoXG4gICAgfCBOb25lIC0+IE9wdGlvbi5pc19zb21lIGluaXRpYWxfbGVuZ3RoXG4gICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBsZXQgaW5pdGlhbF9sZW5ndGggPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6NyBpbml0aWFsX2xlbmd0aCBpblxuICBpZiBpbml0aWFsX2xlbmd0aCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwYXNzZWQgbmVnYXRpdmUgaW5pdGlhbF9sZW5ndGggdG8gRGVxdWUuY3JlYXRlOiAlaVwiIGluaXRpYWxfbGVuZ3RoICgpO1xuICAoKiBNYWtlIHRoZSBpbml0aWFsIGFycmF5IGxlbmd0aCBiZSBbaW5pdGlhbF9sZW5ndGggKyAxXSBzbyB3ZSBjYW4gZml0IFtpbml0aWFsX2xlbmd0aF1cbiAgICAgZWxlbWVudHMgd2l0aG91dCBncm93aW5nLiAgV2UgbmV2ZXIgcXVpdGUgdXNlIHRoZSB3aG9sZSBhcnJheS4gKilcbiAgbGV0IGFycl9sZW5ndGggPSBpbml0aWFsX2xlbmd0aCArIDEgaW5cbiAgeyBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46YXJyX2xlbmd0aFxuICA7IGZyb250X2luZGV4ID0gMFxuICA7IGJhY2tfaW5kZXggPSAxXG4gIDsgYXBwYXJlbnRfZnJvbnRfaW5kZXggPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGFycl9sZW5ndGhcbiAgOyBuZXZlcl9zaHJpbmtcbiAgfVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aCBpbiBhIG11dGFibGUgZmllbGQgZm9yIHNwZWVkLCBidXQgdGhpcyBjYWxjdWxhdGlvbiBzaG91bGRcbiAgIGJlIGNvcnJlY3QgYnkgY29uc3RydWN0aW9uLCBhbmQgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcuICopXG5sZXQgX2ludmFyaWFudF9sZW5ndGggdCA9XG4gIGxldCBjb25zdHJ1Y3RlZF9sZW5ndGggPVxuICAgIGlmIHQuZnJvbnRfaW5kZXggPCB0LmJhY2tfaW5kZXhcbiAgICB0aGVuIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxXG4gICAgZWxzZSB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMSArIHQuYXJyX2xlbmd0aFxuICBpblxuICBhc3NlcnQgKGxlbmd0aCB0ID0gY29uc3RydWN0ZWRfbGVuZ3RoKVxuOztcblxuKCogVGhlIHZhcmlvdXMgXCJ3aGVuX25vdF9lbXB0eVwiIGZ1bmN0aW9ucyByZXR1cm4gbWlzbGVhZGluZyBudW1iZXJzIHdoZW4gdGhlIGRlcXVldWUgaXNcbiAgIGVtcHR5LiAgVGhleSBhcmUgc2FmZSB0byBjYWxsIGlmIGl0IGlzIGtub3duIHRoYXQgdGhlIGRlcXVldWUgaXMgbm9uLWVtcHR5LiAqKVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIGxlbmd0aCB0IC0gMVxuXG5sZXQgYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmZyb250X2luZGV4ICsgMVxuOztcblxubGV0IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmJhY2tfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuYmFja19pbmRleCAtIDFcbjs7XG5cbmxldCBjaGVja2VkIHQgZiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB0KVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHlcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eVxuXG5sZXQgZm9sZGknIHQgZGlyIH5pbml0IH5mID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaSB+c3RvcF9wb3MgfnN0ZXAgPVxuICAgICAgaWYgcmVhbF9pID0gc3RvcF9wb3NcbiAgICAgIHRoZW4gYWNjLCBhcHBhcmVudF9pXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoZiBhcHBhcmVudF9pIGFjYyAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciByZWFsX2kpKVxuICAgICAgICAgIH5hcHBhcmVudF9pOihhcHBhcmVudF9pICsgc3RlcClcbiAgICAgICAgICB+cmVhbF9pOihyZWFsX2kgKyBzdGVwKVxuICAgICAgICAgIH5zdG9wX3Bvc1xuICAgICAgICAgIH5zdGVwXG4gICAgaW5cbiAgICAoKiBXZSB3YW50IHRvIGl0ZXJhdGUgZnJvbSBhY3R1YWxfZnJvbnQgdG8gYWN0dWFsX2JhY2sgKG9yIHZpY2UgdmVyc2EpLCBidXQgd2UgbWF5XG4gICAgICAgbmVlZCB0byB3cmFwIGFyb3VuZCB0aGUgYXJyYXkgdG8gZG8gc28uICBUaHVzIHdlIGRvIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgMS4gIElmIHRoZSBhY3RpdmUgcmFuZ2UgaXMgY29udGlndW91cyAoaS5lLiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2spLCB0aGVuIGxvb3BcbiAgICAgICBzdGFydGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdW50aWwgd2UgcmVhY2ggdGhlIGZpcnN0XG4gICAgICAgZWxlbWVudCBvdXRzaWRlIG9mIGl0LlxuICAgICAgIDIuICBJZiBpdCBpcyBub3QgY29udGlndW91cyAoYWN0dWFsX2Zyb250ID4gYWN0dWFsX2JhY2spLCB0aGVuIGZpcnN0IGxvb3AgZnJvbSB0aGVcbiAgICAgICBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZW4sIGxvb3AgZnJvbVxuICAgICAgIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFycmF5IHRvIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZS5cbiAgICAqKVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgZnJvbnRfdG9fYmFjayAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aFxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID0gbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSB+c3RlcDoxIGluXG4gICAgICAgIGFjYylcbiAgICB8IGBiYWNrX3RvX2Zyb250IC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KC0xKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIH5hcHBhcmVudF9pXG4gICAgICAgICAgICB+cmVhbF9pOih0LmFycl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpKVxuOztcblxubGV0IGZvbGQnIHQgZGlyIH5pbml0IH5mID0gZm9sZGknIHQgZGlyIH5pbml0IH5mOihmdW4gXyBhY2MgdiAtPiBmIGFjYyB2KSBbQG5vbnRhaWxdXG5sZXQgaXRlcmknIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gaSAoKSB2IC0+IGYgaSB2KVxubGV0IGl0ZXInIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gXyAoKSB2IC0+IGYgdilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IGZvbGRpJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgaXRlcmkgdCB+ZiA9IGl0ZXJpJyB0IGBmcm9udF90b19iYWNrIH5mXG5cbmxldCBpdGVyaV9pbnRlcm5hbCB0IH5mID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIChcbiAgICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IHJlYyBsb29wIH5yZWFsX2kgfnN0b3BfcG9zID1cbiAgICAgIGlmIHJlYWxfaSA8IHN0b3BfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgZiB0LmFyciByZWFsX2k7XG4gICAgICAgIGxvb3AgfnJlYWxfaToocmVhbF9pICsgMSkgfnN0b3BfcG9zKVxuICAgIGluXG4gICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgdGhlbiBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSBbQG5vbnRhaWxdXG4gICAgZWxzZSAoXG4gICAgICBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3Bvczp0LmFycl9sZW5ndGg7XG4gICAgICBsb29wIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgW0Bub250YWlsXSkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgaXRlcmlfaW50ZXJuYWwgdCB+ZjooZnVuIGFyciBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gYXJyIGkgfD4gZikgW0Bub250YWlsXVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lm5ldmVyX3Nocmlua1xuICB0aGVuXG4gICAgKCogY2xlYXIgdGhlIGFycmF5IHRvIGFsbG93IGVsZW1lbnRzIHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkICopXG4gICAgaXRlcmlfaW50ZXJuYWwgdCB+ZjpPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lXG4gIGVsc2UgdC5hcnIgPC0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjg7XG4gIHQuZnJvbnRfaW5kZXggPC0gMDtcbiAgdC5iYWNrX2luZGV4IDwtIDE7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuYXJyXG47O1xuXG4oKiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSwgaW1wb3J0aW5nIGFsbCBvZiBDb250YWluZXIuTWFrZSB3b3VsZCBjaGFuZ2UgdGhlIHJ1bnRpbWUgb2ZcbiAgIHNvbWUgZnVuY3Rpb25zIChbbGVuZ3RoXSBtaW5pbWFsbHkpIHNpbGVudGx5IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbWFudGljcy4gIFdlIGdldFxuICAgYXJvdW5kIHRoYXQgYnkgaW1wb3J0aW5nIHRoaW5ncyBleHBsaWNpdGx5LiAgKilcbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgbWVtID0gQy5tZW1cbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IGJsaXQgbmV3X2FyciB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IG9sZF9hcnIgPSB0LmFyciBpblxuICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgdGhlblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOihsZW5ndGggdClcbiAgZWxzZSAoXG4gICAgbGV0IGJyZWFrX3BvcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggb2xkX2FyciAtIGFjdHVhbF9mcm9udCBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOmJyZWFrX3BvcztcbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOmJyZWFrX3Bvc1xuICAgICAgfmxlbjooYWN0dWFsX2JhY2sgKyAxKSk7XG4gICgqIGxlbmd0aCBkZXBlbmRzIG9uIHQuYXJyIGFuZCB0LmZyb250X2luZGV4LCBzbyB0aGlzIG5lZWRzIHRvIGJlIGZpcnN0ICopXG4gIHQuYmFja19pbmRleCA8LSBsZW5ndGggdDtcbiAgdC5hcnIgPC0gbmV3X2FycjtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FycjtcbiAgdC5mcm9udF9pbmRleCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxO1xuICAoKiBTaW5jZSB0LmZyb250X2luZGV4ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMSwgdGhpcyBpcyBhc3NlcnRpbmcgdGhhdCB0LmJhY2tfaW5kZXhcbiAgICAgaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkgYW5kIHRoYXQgdGhlIGFycmF5IGNhbiBzdXBwb3J0IGF0IGxlYXN0IG9uZSBtb3JlXG4gICAgIGVsZW1lbnQgLS0gcmVjYWxsLCBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gdGhlIGFycmF5IGlzIGZ1bGwuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgPiBsZW5ndGggdCArIDEuXG4gICopXG4gIGFzc2VydCAodC5mcm9udF9pbmRleCA+IHQuYmFja19pbmRleClcbjs7XG5cbmxldCBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0ID1cbiAgaWYgKG5vdCB0Lm5ldmVyX3NocmluaykgJiYgdC5hcnJfbGVuZ3RoID4gMTAgJiYgdC5hcnJfbGVuZ3RoIC8gMyA+IGxlbmd0aCB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggLyAyKSBpblxuICAgIGJsaXQgbmV3X2FyciB0KVxuOztcblxubGV0IGdyb3dfdW5kZXJseWluZyB0ID1cbiAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAqIDIpIGluXG4gIGJsaXQgbmV3X2FyciB0XG47O1xuXG5sZXQgZW5xdWV1ZV9iYWNrIHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuYmFja19pbmRleCB2O1xuICB0LmJhY2tfaW5kZXggPC0gKGlmIHQuYmFja19pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5iYWNrX2luZGV4ICsgMSk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWVfZnJvbnQgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5mcm9udF9pbmRleCB2O1xuICB0LmZyb250X2luZGV4IDwtIChpZiB0LmZyb250X2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmZyb250X2luZGV4IC0gMSk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCAtIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IHYgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB2XG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB2XG47O1xuXG5sZXQgcGVla19mcm9udF9ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBwZWVrX2JhY2tfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgcGVlayB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuZnJvbnRfaW5kZXggPC0gaTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfYmFja19ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuYmFja19pbmRleCA8LSBpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2dlbiA/KG4gPSAxKSB+ZGVxdWV1ZSB0ID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJEZXF1ZS5kcm9wOiAgbmVnYXRpdmUgaW5wdXQgKCVkKVwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAobiAtIDEpKVxuICBpblxuICBsb29wIG5cbjs7XG5cbmxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2Zyb250IHRcbmxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfYmFjayB0XG5cbmxldCBkcm9wID9uIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayA/biB0XG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgP24gdFxuOztcblxubGV0IGFzc2VydF9ub3RfZW1wdHkgdCBuYW1lID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZhaWx3aXRoZiBcIiVzOiBEZXF1ZS50IGlzIGVtcHR5XCIgbmFtZSAoKVxuXG5sZXQgdHJ1ZV9pbmRleF9leG4gdCBpID1cbiAgbGV0IGlfZnJvbV96ZXJvID0gaSAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggaW5cbiAgaWYgaV9mcm9tX3plcm8gPCAwIHx8IGxlbmd0aCB0IDw9IGlfZnJvbV96ZXJvXG4gIHRoZW4gKFxuICAgIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLnRydWVfaW5kZXhfZXhuXCI7XG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImludmFsaWQgaW5kZXg6ICVpIGZvciBhcnJheSB3aXRoIGluZGljZXMgKCVpLCVpKVwiXG4gICAgICBpXG4gICAgICBhcHBhcmVudF9mcm9udFxuICAgICAgYXBwYXJlbnRfYmFja1xuICAgICAgKCkpO1xuICBsZXQgdHJ1ZV9pID0gdC5mcm9udF9pbmRleCArIDEgKyBpX2Zyb21femVybyBpblxuICBpZiB0cnVlX2kgPj0gdC5hcnJfbGVuZ3RoIHRoZW4gdHJ1ZV9pIC0gdC5hcnJfbGVuZ3RoIGVsc2UgdHJ1ZV9pXG47O1xuXG5sZXQgZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSlcblxubGV0IGdldF9vcHQgdCBpID1cbiAgdHJ5IFNvbWUgKGdldCB0IGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzZXRfZXhuIHQgaSB2ID0gT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpIHZcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBwZWVrX2Zyb250IHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgZnJvbnQgLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBmcm9udCBpblxuICAgIGlnbm9yZVxuICAgICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB2IC0+XG4gICAgICAgICBhcnIuKGkpIDwtIHY7XG4gICAgICAgICBpICsgMSlcbiAgICAgICA6IGludCk7XG4gICAgYXJyXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOihBcnJheS5sZW5ndGggYXJyICsgMSkgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGVucXVldWVfYmFjayB0IHYpO1xuICB0XG47O1xuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIzNGMxZTljYS00OTkyLTExZTYtYTY4Ni04YjRiZDRmODc3OTZcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5EZXF1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIHQgfmZcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOmxlbiAoKSBpblxuICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICBlbnF1ZXVlX2JhY2sgdCB4XG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcblxubGV0IHRfb2Zfc2V4cCBmIHNleHAgPSBvZl9hcnJheSAoQXJyYXkudF9vZl9zZXhwIGYgc2V4cClcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG4oKiByZS1leHBvc2UgdGhlc2UgaGVyZSB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHRvIGF2b2lkIGludGVybmFsIGNvbmZ1c2lvbiAqKVxubGV0IGJhY2tfaW5kZXggPSBhcHBhcmVudF9iYWNrX2luZGV4XG5sZXQgZnJvbnRfaW5kZXggPSBhcHBhcmVudF9mcm9udF9pbmRleFxuXG5sZXQgYmFja19pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmJhY2tfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubGV0IGZyb250X2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuZnJvbnRfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0IHQgaSA9IGdldCB0IChmcm9udF9pbmRleF9leG4gdCArIGkpXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZFxuICBlbmQpXG5cbigqIFRoZSBcInN0YWJsZVwiIGluZGljZXMgdXNlZCBpbiB0aGlzIG1vZHVsZSBtYWtlIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGVcbiAgIFtCaW5hcnlfc2VhcmNoYWJsZV0gZnVuY3RvciBhd2t3YXJkLiAgV2UgbmVlZCB0byBiZSBzdXJlIHRvIHRyYW5zbGF0ZSBpbmNvbWluZ1xuICAgcG9zaXRpb25zIGZyb20gc3RhYmxlIHNwYWNlIHRvIHRoZSBleHBlY3RlZCAwIC0+IGxlbmd0aCAtIDEgc3BhY2UgYW5kIHRoZW4gd2UgbmVlZCB0b1xuICAgdHJhbnNsYXRlIHRoZW0gYmFjayBvbiByZXR1cm4uICopXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5cbmxldCBlcHJpbnQgbWVzc2FnZSA9IFByaW50Zi5lcHJpbnRmIFwiJXNcXG4lIVwiIG1lc3NhZ2VcbmxldCBlcHJpbnRfcyBzZXhwID0gZXByaW50IChTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbmxldCBlcHJpbnRzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPSBlcHJpbnRfcyAoWyVzZXhwX29mOiBzdHJpbmcgKiBhXSAobWVzc2FnZSwgYSkpXG5sZXQgZXByaW50ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXByaW50IGZvcm1hdFxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgTWFrZSAoKSA9IHN0cnVjdFxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBpbnZhcmlhbnQgfm1vZHVsZV9uYW1lIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlbiBlcHJpbnRzIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHByZS1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwb3N0LWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIGVwcmludHNcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lOyBcIi1yZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5lbmRcblxubGV0IHNob3VsZF9wcmludF9iYWNrdHJhY2UgPSByZWYgZmFsc2VcblxubGV0IGFtX2ludGVybmFsIGhlcmUgbWVzc2FnZSA9XG4gICgqIEluIHRoaXMgZnVuY3Rpb24gd2UgdXNlIFtQcmludGYuZXByaW50Zl0gcmF0aGVyIHRoYW4gW0RlYnVnLmVwcmludGZdLCBiZWNhdXNlIHRoZVxuICAgICBmb3JtZXIgZG9lc24ndCBmbHVzaCwgd2hpbGUgdGhlIGxhdHRlciBkb2VzLiAgV2UnZCByYXRoZXIgZmx1c2ggb25jZSBhdCB0aGUgZW5kLFxuICAgICByYXRoZXIgdGhhbiB0aHJlZSB0aW1lcy4gKilcbiAgUHJpbnRmLmVwcmludGYgXCIlczpcXG5cIiAoU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nIGhlcmUpO1xuICBpZiAhc2hvdWxkX3ByaW50X2JhY2t0cmFjZVxuICB0aGVuXG4gICAgUHJpbnRmLmVwcmludGZcbiAgICAgIFwiJXNcXG5cIlxuICAgICAgKEJhY2t0cmFjZS5nZXQgKCkgfD4gWyVzZXhwX29mOiBCYWNrdHJhY2UudF0gfD4gU2V4cC50b19zdHJpbmdfaHVtKTtcbiAgKG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzXFxuXCIgbWVzc2FnZSk7XG4gIFByaW50Zi5lcHJpbnRmIFwiJSFcIlxuOztcblxubGV0IGFtIGhlcmUgPSBhbV9pbnRlcm5hbCBoZXJlIE5vbmVcbmxldCBhbWYgaGVyZSBmbXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHJpbmcgLT4gYW1faW50ZXJuYWwgaGVyZSAoU29tZSBzdHJpbmcpKSBmbXRcblxubGV0IGFtcyBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBhbV9pbnRlcm5hbCBoZXJlIChTb21lICgobWVzc2FnZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXSB8PiBTZXhwLnRvX3N0cmluZ19odW0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN5c1xuXG5sZXQgdW5peF9xdW90ZSB4ID1cbiAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHgpKVxuICAmJiBTdHJpbmcuZm9yX2FsbCB4IH5mOihmdW5jdGlvblxuICAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgIHwgJ18nIHwgJy0nIHwgJzonIHwgJy4nIHwgJy8nIHwgJywnIHwgJysnIHwgJz0nIHwgJyUnIHwgJ0AnIC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gKFxuICAgICgqIFNoZWxsIGtleXdvcmRzLCBhcyBvdXRwdXQgYnkgW2NvbXBnZW4gLWtdIGZvciBiYXNoLCBbbWFuIGRhc2hdIGZvciBkYXNoLCBhbmQgW1BBVEg9XG4gICAgICAgdHlwZSAtbSAnKicgfCBncmVwIHJlc2VydmVkXSBmb3IgenNoLCBleGNlcHQgZm9yIGtleXdvcmRzIHRoYXQgaGF2ZSBzcGVjaWFsXG4gICAgICAgY2hhcmFjdGVycyBsaWtlIFtbLiBOb3RlIHRoYXQgYnVpbHRpbnMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgJ2FsaWFzJyBhbmQgYWxpYXNcbiAgICAgICBiZWhhdmUgdGhlIHNhbWUsIHVubGlrZSAnaWYnIGFuZCBpZi4gKilcbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IFwiaWZcIlxuICAgIHwgXCJ0aGVuXCJcbiAgICB8IFwiZWxzZVwiXG4gICAgfCBcImVsaWZcIlxuICAgIHwgXCJmaVwiXG4gICAgfCBcImNhc2VcIlxuICAgIHwgXCJlc2FjXCJcbiAgICB8IFwiZm9yXCJcbiAgICB8IFwic2VsZWN0XCJcbiAgICB8IFwid2hpbGVcIlxuICAgIHwgXCJ1bnRpbFwiXG4gICAgfCBcImRvXCJcbiAgICB8IFwiZG9uZVwiXG4gICAgfCBcImluXCJcbiAgICB8IFwiZnVuY3Rpb25cIlxuICAgIHwgXCJ0aW1lXCJcbiAgICB8IFwiY29wcm9jXCJcbiAgICB8IFwiZm9yZWFjaFwiXG4gICAgfCBcInJlcGVhdFwiXG4gICAgfCBcIm5vY29ycmVjdFwiIC0+IEZpbGVuYW1lLnF1b3RlIHhcbiAgICB8IF8gLT4geClcbiAgZWxzZSBGaWxlbmFtZS5xdW90ZSB4XG47O1xuXG5sZXQgcXVvdGUgPVxuICBtYXRjaCBTdGRsaWIuU3lzLm9zX3R5cGUgd2l0aFxuICB8IFwiVW5peFwiIC0+IHVuaXhfcXVvdGVcbiAgfCBfIC0+IEZpbGVuYW1lLnF1b3RlXG47O1xuXG5sZXQgY29uY2F0X3F1b3RlZCBzcGxpdF9jb21tYW5kID1cbiAgTGlzdC5tYXAgfmY6cXVvdGUgc3BsaXRfY29tbWFuZCB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbjs7XG5cbmxldCBjX2ludF9zaXplID0gYFVzZV9TeXNfdW5peFxubGV0IGNhdGNoX2JyZWFrID0gYFVzZV9TeXNfdW5peFxubGV0IGNoZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmQgPSBgVXNlX1N5c191bml4XG5sZXQgY29tbWFuZF9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGlvbl9tb2RlID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBmb2xkX2RpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBnZXRjd2QgPSBgVXNlX1N5c191bml4XG5sZXQgaG9tZV9kaXJlY3RvcnkgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19maWxlX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBsc19kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgb3ZlcnJpZGVfYXJndiA9IGBVc2VfU3lzX3VuaXhcbmxldCByZWFkZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IHJlbW92ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW5hbWUgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudiA9IGBVc2VfU3lzX3VuaXhcbmxldCB1bnNhZmVfZ2V0ZW52X2V4biA9IGBVc2VfU3lzX3VuaXhcblxuZXhjZXB0aW9uIEJyZWFrID0gU3RkbGliLlN5cy5CcmVha1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgdW5peF9xdW90ZSA9IHVuaXhfcXVvdGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0ZGxpYi5BcmdcblxudHlwZSB0ID0ga2V5ICogc3BlYyAqIGRvY1xuXG5sZXQgc29ydF9hbmRfYWxpZ24gbHN0ID1cbiAgYWxpZ24gKEJhc2UuTGlzdC5zb3J0IGxzdCB+Y29tcGFyZTooZnVuIChhLCBfLCBfKSAoYiwgXywgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFnX2ludGZcbmluY2x1ZGUgKERvdWJseV9saW5rZWQgOiBEb3VibHlfbGlua2VkLlMpXG5cbmxldCBhZGQgPSBpbnNlcnRfZmlyc3RcbmxldCBhZGRfdW5pdCB0IHYgPSBhZGQgdCB2IHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG5sZXQgZWx0cyB0ID0gZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBlbHQgLT4gZWx0IDo6IGFjYylcbmxldCByZW1vdmVfb25lID0gcmVtb3ZlX2ZpcnN0XG5sZXQgY2hvb3NlID0gZmlyc3RfZWx0XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIE9wdGlvbi5pdGVyIChyZW1vdmVfb25lIHQpIH5mOihmdW4gdiAtPlxuICAgICAgZiB2O1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgYnN0ciA6IEJpZ3N0cmluZy50XG4gIDsgbXV0YWJsZSBwb3MgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludFxuICA7IGluaXQgOiBCaWdzdHJpbmcudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgcmVzaXplIGJ1ZiBtb3JlID1cbiAgbGV0IG1pbl9sZW4gPSBidWYubGVuICsgbW9yZSBpblxuICBsZXQgbmV3X2xlbiA9IG1pbl9sZW4gKyBtaW5fbGVuIGluXG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBuZXdfbGVuIGluXG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zi5ic3RyIH5zcmNfbGVuOmJ1Zi5wb3MgfmRzdDpuZXdfYnVmICgpO1xuICBidWYuYnN0ciA8LSBuZXdfYnVmO1xuICBidWYubGVuIDwtIG5ld19sZW5cbjs7XG4iLCIoKiBTb21lIGNvZGUgdGFrZW4gZnJvbSBJTlJJQSdzIGJ1ZmZlciBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBCaWdzdHJpbmdcbmluY2x1ZGUgQmlnYnVmZmVyX2ludGVybmFsXG5cbmxldCBfX2ludGVybmFsICh0IDogdCkgPSB0XG5sZXQgbGVuZ3RoIHQgPSB0LnBvc1xuXG4oKiB7WyBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQubGVuID09IEJpZ3N0cmluZy5sZW5ndGggdC5ic3RyKSBdfSAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9IG1heCAxIG4gaW5cbiAgbGV0IGJzdHIgPSBCaWdzdHJpbmcuY3JlYXRlIG4gaW5cbiAgeyBic3RyOyBwb3MgPSAwOyBsZW4gPSBuOyBpbml0ID0gYnN0ciB9XG47O1xuXG5sZXQgY29udGVudHMgYnVmID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBjb250ZW50c19ieXRlcyBidWYgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgYmlnX2NvbnRlbnRzIGJ1ZiA9IHN1Ym8gfmxlbjpidWYucG9zIGJ1Zi5ic3RyXG5sZXQgdm9sYXRpbGVfY29udGVudHMgYnVmID0gYnVmLmJzdHJcblxubGV0IGFkZF9jaGFyIGJ1ZiBjID1cbiAgbGV0IHBvcyA9IGJ1Zi5wb3MgaW5cbiAgaWYgcG9zID49IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIDE7XG4gIGJ1Zi5ic3RyLntwb3N9IDwtIGM7XG4gIGJ1Zi5wb3MgPC0gcG9zICsgMVxuOztcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgVGVzdF9ibGl0Lk1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgIGxldCBlcXVhbCA9IENoYXIuZXF1YWxcbiAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gJ2EnIGVsc2UgJ2InXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgICAgYWRkX2NoYXIgdCAnYSdcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHNldCB0IGkgYyA9IEJpZ3N0cmluZy5zZXQgdC5ic3RyIGkgY1xuICAgICAgbGV0IGdldCB0IGkgPSBCaWdzdHJpbmcuZ2V0IHQuYnN0ciBpXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQnl0ZXNcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBCaWdzdHJpbmcuVG9fYnl0ZXMudW5zYWZlX2JsaXQgfnNyYzpzcmMuYnN0ciB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnYnVmZmVyX2ludGVybmFsKSAoVG9fYnl0ZXMpXG5cbmxldCBudGggYnVmIHBvcyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGJ1Zi5wb3MgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5udGhcIiBlbHNlIGJ1Zi5ic3RyLntwb3N9XG47O1xuXG5sZXQgY2xlYXIgYnVmID0gYnVmLnBvcyA8LSAwXG5cbmxldCByZXNldCBidWYgPVxuICBidWYucG9zIDwtIDA7XG4gIGJ1Zi5ic3RyIDwtIGJ1Zi5pbml0O1xuICBidWYubGVuIDwtIEJpZ3N0cmluZy5sZW5ndGggYnVmLmJzdHJcbjs7XG5cbmxldCBhZGRfc3Vic3RyaW5nIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdWJieXRlcyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmlnc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J5dGVzIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnVmZmVyIGJ1Zl9kc3QgYnVmX3NyYyA9XG4gIGxldCBsZW4gPSBidWZfc3JjLnBvcyBpblxuICBsZXQgZHN0X3BvcyA9IGJ1Zl9kc3QucG9zIGluXG4gIGxldCBuZXdfcG9zID0gZHN0X3BvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmX2RzdC5sZW4gdGhlbiByZXNpemUgYnVmX2RzdCBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zl9zcmMuYnN0ciB+c3JjX2xlbjpsZW4gfmRzdDpidWZfZHN0LmJzdHIgfmRzdF9wb3MgKCk7XG4gIGJ1Zl9kc3QucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmluX3Byb3QgdCAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gIGxldCBuZXdfcG9zID1cbiAgICBtYXRjaCB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeCB3aXRoXG4gICAgfCBwb3MgLT4gcG9zXG4gICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgKCogSXQncyBsaWtla3kgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0IGN1c3RvbVxuICAgICAgICAgYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgZG8gcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgIGxldCBzaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgaWYgdC5wb3MgKyBzaXplID4gdC5sZW4gdGhlbiByZXNpemUgdCBzaXplO1xuICAgICAgd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHhcbiAgaW5cbiAgdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKE5vdF9mb3VuZF9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmlnYnVmZmVyLmFkZF9zdWJzdGl0dXRlOiBjYW5ub3QgZmluZCBjbG9zaW5nIGRlbGltaXRlclwiXG4gICAgICAgICAgICAgICAob3BlbmluZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoY2xvc2luZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoc3RhcnQgOiBpbnQpXG4gICAgICAgICAgICAgICBzXSlcbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gb3BlbmluZ1xuICAgIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIGNsb3NpbmdcbiAgICB0aGVuIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltXG4gIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlbiBsaW1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgfCAnQScgLi4gJ1onXG4gICAgICB8ICcwJyAuLiAnOSdcbiAgICAgIHwgJ18nXG4gICAgICB8ICfpJ1xuICAgICAgfCAn4CdcbiAgICAgIHwgJ+EnXG4gICAgICB8ICfoJ1xuICAgICAgfCAn+SdcbiAgICAgIHwgJ+InXG4gICAgICB8ICfqJ1xuICAgICAgfCAn7idcbiAgICAgIHwgJ/QnXG4gICAgICB8ICf7J1xuICAgICAgfCAn6ydcbiAgICAgIHwgJ+8nXG4gICAgICB8ICf8J1xuICAgICAgfCAn5ydcbiAgICAgIHwgJ8knXG4gICAgICB8ICfAJ1xuICAgICAgfCAnwSdcbiAgICAgIHwgJ8gnXG4gICAgICB8ICfZJ1xuICAgICAgfCAnwidcbiAgICAgIHwgJ8onXG4gICAgICB8ICfOJ1xuICAgICAgfCAn1CdcbiAgICAgIHwgJ9snXG4gICAgICB8ICfLJ1xuICAgICAgfCAnzydcbiAgICAgIHwgJ9wnXG4gICAgICB8ICfHJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgICB8IF8gLT4gaSlcbiAgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgPVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAoJygnIHwgJ3snKSBhcyBjIC0+XG4gICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOm5ld19zdGFydCB+bGVuOihzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpzdGFydCB+bGVuOihzdG9wIC0gc3RhcnQpLCBzdG9wXG47O1xuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBidWYgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW1cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyAoaSArIDEpIGluXG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIChmIGlkZW50KTtcbiAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpKVxuICBpblxuICBzdWJzdCAnICcgMFxuOztcblxubW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICBsZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgPVxuICAgIEZvcm1hdC5tYWtlX2Zvcm1hdHRlciAoZnVuIHMgcG9zIGxlbiAtPiBhZGRfc3Vic3RyaW5nIGJ1ZiBzIH5wb3MgfmxlbikgaWdub3JlXG4gIDs7XG5cbiAgbGV0IGJwcmludGYgYnVmID0gRm9ybWF0LmtmcHJpbnRmIGlnbm9yZSAoZm9ybWF0dGVyX29mX2J1ZmZlciBidWYpXG5lbmRcblxubW9kdWxlIFByaW50ZiA9IHN0cnVjdFxuICBsZXQgYnByaW50ZiBidWYgPSBQcmludGYua3NwcmludGYgKGFkZF9zdHJpbmcgYnVmKVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkJ5dGVzfVtCYXNlLkJ5dGVzXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQnl0ZXNcbmVuZFxud2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbZ2VuXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZiBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtieXRlc10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW0J5dGVzLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gcHJvdmlkZVxuICAgIGludGVyZmFjZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJpZ3N0cmluZy5jcmVhdGUgP21heF9tZW1fd2FpdGluZ19nYzpOb25lXG4gICAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQmlnc3RyaW5nLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGFibGVfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgICAgICB2YWwgbGFiZWwgOiBzdHJpbmdcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbmRleCA6IGludFxuICAgICAgICA7IG1pbl9pbmRleCA6IGludFxuICAgICAgICA7IG1heF9pbmRleCA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgY3JlYXRlIGluZGV4IH5taW4gfm1heCA9XG4gICAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgKGluZGV4IDogaW50KSAobWluIDogaW50KSAobWF4IDogaW50KV1cbiAgICAgICAgZWxzZSB7IGluZGV4OyBtaW5faW5kZXggPSBtaW47IG1heF9pbmRleCA9IG1heCB9XG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgRm9yX3NleHBhYmxlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEZvcl9zZXhwYWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgdCA9IE0ubGFiZWwsIHQuaW5kZXgsIFwib2ZcIiwgdC5taW5faW5kZXgsIFwidG9cIiwgdC5tYXhfaW5kZXhcblxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlIChsYWJlbCwgaW5kZXgsIG9mXywgbWluLCB0b18sIG1heCkgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgbGFiZWwgTS5sYWJlbFxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgb2ZfIFwib2ZcIlxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgdG9fIFwidG9cIlxuICAgICAgICAgICAgICB0aGVuIGNyZWF0ZSBpbmRleCB+bWluIH5tYXhcbiAgICAgICAgICAgICAgZWxzZSBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgc2V4cCBmb3IgaW5kZXhcIiB+bGFiZWw6TS5sYWJlbF1cbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgUyA9IEJvdW5kZWRfaW5kZXhfaW50Zi5TXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBTdGFibGUuVjEuTWFrZSAoTSlcbiAgZW5kXG5cbiAgb3BlbiBTdGFibGUuVjFcblxuICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjcmVhdGUgPSBTdGFibGUuVjEuY3JlYXRlXG5cbiAgbGV0IGNyZWF0ZV9hbGwgfm1pbiB+bWF4ID1cbiAgICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6bWluIH5mOihmdW4gaW5kZXggLT5cbiAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNyZWF0ZSBpbmRleCB+bWluIH5tYXgsIGluZGV4ICsgMSkpXG4gICAgfD4gU2VxdWVuY2UudG9fbGlzdFxuICA7O1xuXG4gIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICBsZXQgbWF4X2luZGV4IHQgPSB0Lm1heF9pbmRleFxuICBsZXQgbWluX2luZGV4IHQgPSB0Lm1pbl9pbmRleFxuICBsZXQgemVyb19iYXNlZF9pbmRleCB0ID0gaW5kZXggdCAtIG1pbl9pbmRleCB0XG4gIGxldCBudW1faW5kZXhlcyB0ID0gbWF4X2luZGV4IHQgLSBtaW5faW5kZXggdCArIDFcblxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIENvbW1hbmRcblxubW9kdWxlIEFyZ190eXBlID0gc3RydWN0XG4gIGluY2x1ZGUgQXJnX3R5cGVcblxuICBtb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcblxuICAgIGxldCBkYXRlID0gY3JlYXRlIERhdGUub2Zfc3RyaW5nXG4gICAgbGV0IHBlcmNlbnQgPSBjcmVhdGUgUGVyY2VudC5vZl9zdHJpbmdcbiAgICBsZXQgaG9zdF9hbmRfcG9ydCA9IGNyZWF0ZSBIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgUGFyYW0gOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBQYXJhbSB3aXRoIG1vZHVsZSBBcmdfdHlwZSA6PSBQYXJhbS5BcmdfdHlwZVxuICAgIGVuZClcblxuICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuZW5kXG5cbm1vZHVsZSBTcGVjID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNwZWMgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBTcGVjIHdpdGggbW9kdWxlIEFyZ190eXBlIDo9IFNwZWMuQXJnX3R5cGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIExldF9zeW50YXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG4iLCIoKiogQ29yZSBncmVhdGx5IGV4cGFuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIEJhc2Ugd2hpbGUgc3RpbGwgcmVtYWluaW5nXG4gICAgcGxhdGZvcm0tYWdub3N0aWMuICBDb3JlIGNoYW5nZXMgbW9yZSBmcmVxdWVudGx5IChpLmUuLCBpcyBsZXNzIHN0YWJsZSkgdGhhbiBCYXNlLlxuXG4gICAgU29tZSBtb2R1bGVzIGFyZSBtZXJlIGV4dGVuc2lvbnMgb2YgdGhlaXIgY291bnRlcnBhcnRzIGluIEJhc2UsIHVzdWFsbHkgYWRkaW5nIGdlbmVyaWNcbiAgICBmdW5jdGlvbmFsaXR5IGJ5IGluY2x1ZGluZyBmdW5jdG9ycyB0aGF0IG1ha2UgdGhlbSBiaW5hYmxlLCBjb21wYXJhYmxlLCBzZXhwYWJsZSxcbiAgICBibGl0YWJsZSwgZXRjLiAgVGhlIGJ1bGsgb2YgQ29yZSwgdGhvdWdoLCBpcyBtb2R1bGVzIHByb3ZpZGluZyBlbnRpcmVseSBuZXdcbiAgICBmdW5jdGlvbmFsaXR5LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFyZyA9IEFyZ1xubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJhZyA9IEJhZ1xubW9kdWxlIEJpZ2J1ZmZlciA9IEJpZ2J1ZmZlclxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xubW9kdWxlIEJpZ3N1YnN0cmluZyA9IEJpZ3N1YnN0cmluZ1xubW9kdWxlIEJpbl9wcm90ID0gQ29yZV9iaW5fcHJvdFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZ1xubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCb3VuZGVkX2luZGV4ID0gQm91bmRlZF9pbmRleFxubW9kdWxlIEJ1ZmZlciA9IEJhc2UuQnVmZmVyXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHNcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5tb2R1bGUgQ2FtbCA9IENhbWwgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTAxXSB1c2UgU3RkbGliIGluc3RlYWQgb2YgQ2FtbFwiXVxubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tbWFuZCA9IENvbW1hbmRfaW50ZXJuYWxcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIENvbnRhaW5lcl9pbnRmID0gQ29udGFpbmVyX2ludGZcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfc3RhYmxlID0gU3RhYmxlXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDVdIFVzZSBbQ29yZV9zdGFibGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG5cbm1vZHVsZSBDb3JlX3N0YWJsZSA9IFN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vla1xubW9kdWxlIERlYnVnID0gRGVidWdcbm1vZHVsZSBEZXF1ZSA9IERlcXVlXG5tb2R1bGUgRGVyaXZpbmdfaGFzaCA9IERlcml2aW5nX2hhc2hcbm1vZHVsZSBEaWdlc3QgPSBNZDUgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE3LTA1XSBVc2UgTWQ1IGluc3RlYWQuXCJdXG5tb2R1bGUgRG91Ymx5X2xpbmtlZCA9IERvdWJseV9saW5rZWRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gPSBTdGRsaWIuRXBoZW1lcm9uXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZVxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvblxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBGcXVldWUgPSBGcXVldWVcbm1vZHVsZSBHYyA9IEdjXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZVxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBIYXNodGJsX2ludGYgPSBIYXNodGJsX2ludGZcbm1vZHVsZSBIZWFwX2Jsb2NrID0gSGVhcF9ibG9ja1xubW9kdWxlIEhleGR1bXAgPSBIZXhkdW1wXG5tb2R1bGUgSGV4ZHVtcF9pbnRmID0gSGV4ZHVtcF9pbnRmXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnRcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uID0gSW1tZWRpYXRlX29wdGlvblxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb25faW50ZiA9IEltbWVkaWF0ZV9vcHRpb25faW50ZlxubW9kdWxlIEluX2NoYW5uZWwgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X2ludGYgPSBJbnRfaW50ZlxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludGVyZmFjZXMgPSBJbnRlcmZhY2VzXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1hcF9pbnRmID0gTWFwX2ludGZcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTWQ1ID0gTWQ1XG5tb2R1bGUgTWVtbyA9IE1lbW9cbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTW9udGggPSBNb250aFxuXG5tb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDJdIFVzZSBbRXJyb3JfY2hlY2tpbmdfbXV0ZXhdIG9yIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG5cbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb19wb2x5bW9ycGhpY19jb21wYXJlID0gTm9fcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT25seV9pbl90ZXN0ID0gT25seV9pbl90ZXN0XG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gT3B0aW9uYWxfc3ludGF4XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4X2ludGYgPSBPcHRpb25hbF9zeW50YXhfaW50ZlxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBPdXRfY2hhbm5lbCA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnRcbm1vZHVsZSBQZXJtcyA9IFBlcm1zXG5tb2R1bGUgUGlkID0gUGlkXG5tb2R1bGUgUG9seSA9IFBvbHlcblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRleGMgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBRdWlja2NoZWNrID0gUXVpY2tjaGVja1xubW9kdWxlIFF1aWNrY2hlY2tfaW50ZiA9IFF1aWNrY2hlY2tfaW50ZlxubW9kdWxlIFF1aWNrY2hlY2thYmxlID0gUXVpY2tjaGVja2FibGVcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RseV9jb21wYXJhYmxlXG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNldF9pbnRmID0gU2V0X2ludGZcbm1vZHVsZSBTZXRfb25jZSA9IFNldF9vbmNlXG5tb2R1bGUgU2V4cF9tYXliZSA9IFNleHAuU2V4cF9tYXliZVxuXG5tb2R1bGUgU2V4cCA9IFNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduYWwgPSBTaWduYWxcbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFNwbGl0dGFibGVfcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb21cbm1vZHVsZSBTdGFibGVfY29tcGFyYWJsZSA9IFN0YWJsZV9jb21wYXJhYmxlXG5tb2R1bGUgU3RhYmxlX3VuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3Rcbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN1YnN0cmluZyA9IFN1YnN0cmluZ1xubW9kdWxlIFN1YnN0cmluZ19pbnRmID0gU3Vic3RyaW5nX2ludGZcbm1vZHVsZSBTeXMgPSBDb3JlX3N5c1xuXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW0NvcmVfdGhyZWFkXSBvciBbQ2FtbF90aHJlYWRzLlRocmVhZF1cIl1cblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTFdIFVzZSBbVGltZV9mbG9hdF0gb3IgW1RpbWVfZmxvYXRfdW5peF0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgVGltZV9mbG9hdCA9IFRpbWVfZmxvYXRcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFR1cGxlID0gVHVwbGVcbm1vZHVsZSBUdXBsZTIgPSBUdXBsZS5UMlxubW9kdWxlIFR1cGxlMyA9IFR1cGxlLlQzXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IFR5cGVfaW1tZWRpYWN5XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pb25fZmluZCA9IFVuaW9uX2ZpbmRcbm1vZHVsZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWRcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVuaXRfb2ZfdGltZSA9IFVuaXRfb2ZfdGltZVxubW9kdWxlIFVuaXZfbWFwID0gVW5pdl9tYXBcblxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjAtMDNdIENvcmUgc2hhZG93cyBVbml4LiBVc2UgQ29yZV91bml4LCB3aGljaCBvdmVycmlkZXMgc29tZSBvZiBVbml4J3MgXFxcbiAgIGJlaGF2aW9yLiBJZiBuZWNlc3NhcnksIFVuaXggaXMgYXZhaWxhYmxlIGFuZCB1bnNoYWRvd2VkIGFzIENhbWxfdW5peC5cIl1cblxubW9kdWxlIFZhbGlkYXRlID0gVmFsaWRhdGVcbm1vZHVsZSBWYWxpZGF0ZWQgPSBWYWxpZGF0ZWRcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdlYWsgPSBXZWFrXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG5tb2R1bGUgdHlwZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWQuSWRcblxuaW5jbHVkZSBUICgqKiBAb3BlbiAqKVxuXG5pbmNsdWRlIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBOb3RfZm91bmRcblxuKCoqIHsyIFRvcC1sZXZlbCB2YWx1ZXN9ICopXG5cbmV4dGVybmFsIHBoeXNfZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcblxudHlwZSAnYSBfbWF5YmVfYm91bmQgPSAnYSBNYXliZV9ib3VuZC50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG5sZXQgZG9lc19yYWlzZSA9IEV4bi5kb2VzX3JhaXNlXG5sZXQgc2VjID0gVGltZV9mbG9hdC5TcGFuLm9mX3NlY1xubGV0ICggXi8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG4oKiogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgIFtDb3JlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQ29yZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gQ29yZTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgIFtDb3JlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBFeG4uaW5pdGlhbGl6ZV9tb2R1bGUgKClcblxuKCoqIFRvIGJlIHVzZWQgaW4gaW1wbGVtZW50aW5nIENvcmUsIGJ1dCBub3QgYnkgZW5kIHVzZXJzLiAqKVxubW9kdWxlIENvcmVfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGlnaXRfc3RyaW5nX2hlbHBlcnMgPSBEaWdpdF9zdHJpbmdfaGVscGVyc1xuICBtb2R1bGUgVGltZV96b25lID0gWm9uZVxuICBtb2R1bGUgT2ZkYXlfaGVscGVycyA9IE9mZGF5X2hlbHBlcnNcbiAgbW9kdWxlIFNwYW5fZmxvYXQgPSBTcGFuX2Zsb2F0XG5cbiAgbW9kdWxlIEJpZ2J1ZmZlcl9pbnRlcm5hbCA9IEJpZ2J1ZmZlcl9pbnRlcm5hbFxuICBtb2R1bGUgU3RhYmxlX2ludGVybmFsID0gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBTdGRfaW50ZXJuYWwgPSBTdGRfaW50ZXJuYWxcblxuICBtb2R1bGUgVGltZV9uc19hbHRlcm5hdGVfc2V4cCA9IFRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmVuZFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfcHJpdmF0ZSA9IENvcmVfcHJpdmF0ZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfcHJpdmF0ZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cbiIsImluY2x1ZGUgQ29tbWFuZC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIFN0YWJsZV9pbnRlcm5hbFxuICBvcGVuISBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5HcmFtbWFyLlYxXG5cbiAgICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuR3JhbW1hci5WMS50ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCBhMTdmZDM0ZWMyMTNlNTA4ZGI0NTBmNjQ2OWY3ZmU5OSB8fV1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLlYyXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLlYyLnQgPVxuICAgICAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgICAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci5WMS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwODFkOWVjMTY3OTAzZjhmOGM0OWNiZjhlM2ZiM2E2NiB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRmxhZ19pbmZvLlYxXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkZsYWdfaW5mby5WMS50ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGJkOGQ2ZmI3YTY2MmQyYzBiNWUwZDIwMjZjNmQyZDIxIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5CYXNlX2luZm8uVjJcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQmFzZV9pbmZvLlYyLnQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgYW5vbnMgOiBBbm9ucy5WMi50XG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDhmYWFjMWU4ZDlkZWIwYmFhYTU2YWM4ZWJmODViNDk4IHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkdyb3VwX2luZm8uVjJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgQ29tbWFuZC5TaGFwZS5TdGFibGUuR3JvdXBfaW5mby5WMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LlN0YWJsZS5WMS50IExhenkuU3RhYmxlLlYxLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBhIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAyY2MzZWViNThkMTJkOGZlNDQwMDAwOWU1OTJkNzgyNyB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRXhlY19pbmZvLlYzXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkV4ZWNfaW5mby5WMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgYzBjODI1NmU5MjM4Y2RkOGYyZWMxZjg3ODVlMDJhZTAgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkZ1bGx5X2ZvcmNlZC5WMVxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GdWxseV9mb3JjZWQuVjEudCA9XG4gICAgICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnQgKiB0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA5ODExNTRlZjM5MTk0MzdjNmM4MjI2MTk4ODI4NDFkNCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFRva2VuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJZGVudFxuICAgIHwgRnVuY3Rpb25cbiAgICB8IEF0a2V5d29yZFxuICAgIHwgSGFzaFxuICAgIHwgU3RyaW5nXG4gICAgfCBVcmlcbiAgICB8IERlbGltXG4gICAgfCBOdW1iZXJcbiAgICB8IFBlcmNlbnRhZ2VcbiAgICB8IERpbWVuc2lvblxuICAgIHwgV2hpdGVfc3BhY2VcbiAgICB8IENvbG9uXG4gICAgfCBTZW1pX2NvbG9uXG4gICAgfCBDb21tYVxuICAgIHwgTGJyYWNrZXRcbiAgICB8IFJicmFja2V0XG4gICAgfCBMcGFyZW5cbiAgICB8IFJwYXJlblxuICAgIHwgTGN1cmx5XG4gICAgfCBSY3VybHlcbiAgICB8IENvbW1lbnRcbiAgICB8IEVvZlxuICAgIHwgRXJyb3JcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyAoKiBzdGFydCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgbGVuIDogaW50XG4gIDsgKCogbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBjdXJyZW50IDogVG9rZW4udFxuICB9XG5cbnR5cGUgbWFyayA9IE1hcmsgb2YgaW50IFtAQHVuYm94ZWRdXG5cbmxldCBtYXJrIHQgPSBNYXJrIHQubGVuXG5sZXQgc291cmNlIHQgPSB0LnNcbmxldCBuZXh0X3BvcyB0ID0gdC5vZmYgKyB0LmxlblxubGV0IGlzX25leHRfZW9mIHQgPSBuZXh0X3BvcyB0ID49IFN0cmluZy5sZW5ndGggdC5zXG5sZXQgbmV4dF9jaGFyIHQgPSB0LnMuW25leHRfcG9zIHRdXG5sZXQgcmVzZXQgdCAoTWFyayB2KSA9IHQubGVuIDwtIHZcbmxldCBjb25zdW1lXzEgdCA9IHQubGVuIDwtIHQubGVuICsgMVxubGV0IGNvbnN1bWVfbiB0IG4gPSB0LmxlbiA8LSB0LmxlbiArIG5cblxubGV0IG9uZV9jaGFyX3Rva2VuIHQgdG9rID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBjb25zdW1lXzEgdDtcbiAgdC5jdXJyZW50IDwtIHRva1xuOztcblxuZXhjZXB0aW9uIEVycm9yX2hhcHBlbmVkXG5cbmxldCBlcnJvciB0ID1cbiAgdC5jdXJyZW50IDwtIEVycm9yO1xuICByYWlzZSBFcnJvcl9oYXBwZW5lZFxuOztcblxubGV0IGFjY2VwdCB0IGYgPVxuICBpZiAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpXG4gIHRoZW4gKFxuICAgIGNvbnN1bWVfMSB0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBhY2NlcHRfY2hhciB0IGNoID0gYWNjZXB0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBhY2NlcHRfc3RyaW5nIHQgc3RyID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPSAwXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgcG9zID0gbmV4dF9wb3MgdCBpblxuICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBwb3MgKyBzdHJfbGVuID4gU3RyaW5nLmxlbmd0aCB0LnNcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHQucyB+cG9zIH5zdWJzdHJpbmc6c3RyXG4gICAgdGhlbiAoXG4gICAgICBjb25zdW1lX24gdCBzdHJfbGVuO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKVxuOztcblxubGV0IGV4cGVjdCB0IGYgPSBpZiBhY2NlcHQgdCBmIHRoZW4gKCkgZWxzZSBlcnJvciB0XG5sZXQgZXhwZWN0X2NoYXIgdCBjaCA9IGV4cGVjdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgbWFueSB0IGYgPVxuICB3aGlsZSAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpIGRvXG4gICAgY29uc3VtZV8xIHRcbiAgZG9uZVxuOztcblxubGV0IG1hbnkxIHQgZiA9XG4gIGV4cGVjdCB0IGY7XG4gIG1hbnkgdCBmXG47O1xuXG5sZXQgcGx1c19vcl9taW51cyA9IGZ1bmN0aW9uXG4gIHwgJy0nIHwgJysnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1zdGFydCA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubWNoYXIgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyB8ICctJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlkZW50IHQgPVxuICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICB0aGVuXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgICB0aGVuIG1hbnkgdCBubWNoYXJcbiAgICBlbHNlIChcbiAgICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgICBtYW55IHQgbm1jaGFyKVxuICBlbHNlIChcbiAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgIG1hbnkgdCBubWNoYXIpXG47O1xuXG5sZXQgaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGlkZW50IHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJygnIHRoZW4gdC5jdXJyZW50IDwtIEZ1bmN0aW9uIGVsc2UgdC5jdXJyZW50IDwtIElkZW50XG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXG4nIHwgJ1xceDBjJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlID1cbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgcXVvdGUpO1xuICBjb25zdW1lXzEgdDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICB8ICdcXG4nIHwgJ1xccicgfCAnXFx4MGMnIHwgJ1xcXFwnIC0+IGZhbHNlXG4gICAgICB8IGMgd2hlbiBDaGFyLmVxdWFsIGMgcXVvdGUgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICdcXFxcJ1xuICAgIHRoZW5cbiAgICAgIGlmIGFjY2VwdF9jaGFyIHQgcXVvdGVcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICAgICAgfCAnXFxuJyB8ICdcXHgwYycgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJ1xcbicgOiBib29sKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgX2MgLT5cbiAgICAgICAgICAoKiBIYW5kbGUgdGhlIFwiZXNjYXBlXCIgcnVsZTpcbiAgICAgICAgICAgICB7dlxuICAgICAgICAgICAgICAgIHVuaWNvZGU6IFxcXFxbMC05YS1mXXsxLDZ9KFxcclxcbnxbIFxcblxcclxcdFxcZl0pP1xuICAgICAgICAgICAgICAgIGVzY2FwZSA6IHt1bmljb2RlfXxcXFxcW15cXG5cXHJcXGYwLTlhLWZdXG4gICAgICAgICAgICAgIHZ9XG4gICAgICAgICAgKilcbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpO1xuICBleHBlY3RfY2hhciB0IHF1b3RlXG47O1xuXG5sZXQgc3RhcnRfbnVtIHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJy4nIDogYm9vbCk7XG4gICAgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHN0YXJ0X2lkZW50IH5wcmVmaXggdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGFjY2VwdF9zdHJpbmcgdCBwcmVmaXhcbiAgICAmJlxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nIHRoZW4gYWNjZXB0X2NoYXIgdCAnLScgfHwgYWNjZXB0IHQgbm1zdGFydCBlbHNlIGFjY2VwdCB0IG5tc3RhcnRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZTtcbiAgdC5jdXJyZW50IDwtIFN0cmluZ1xuOztcblxubGV0IGV4cG9uZW50aWFsX3BhcnQgdCA9XG4gIGxldCBtYXJrID0gbWFyayB0IGluXG4gIGlmIGFjY2VwdCB0IChmdW5jdGlvblxuICAgIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW5cbiAgICBpZiBhY2NlcHQgdCBwbHVzX29yX21pbnVzXG4gICAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlIGlmIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgICB0aGVuIG1hbnkgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZVxuICAgICAgKCogQmFja3RyYWNrIGlmIHRoZXJlIGFyZSBubyBkaWdpdHMgb3Igc2lnbnMgYWZ0ZXIgdGhlICdlJyBiZWNhdXNlXG4gICAgICAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSAnZScgd2FzIGFjdHVhbGx5IGEgcGFydCBvZiBzb21ldGhpbmcgZWxzZS4gRm9yXG4gICAgICAgICBleGFtcGxlLCB0aGUgJ2UnIGNvdWxkIGJlIHBhcnQgb2YgYW4gJ2VtJyBvciAnZW4nIGRpbWVuc2lvbiBpbnN0ZWFkXG4gICAgICAgICBvZiBiZWdpbm5pbmcgdGhlIGV4cG9uZW50aWFsIHBhcnQgb2YgYSBzY2llbnRpZmljIG5vdGF0aW9uIG51bWJlci5cblxuICAgICAgICAgRXhhbXBsZTogMS4yZTMgaXMgc2NpZW50aWZpYyBub3RhdGlvbiwgYnV0IDEuMmVtIGlzIGEgbnVtYmVyIHdpdGggYVxuICAgICAgICAgZGltZW5zaW9uLiAqKVxuICAgICAgcmVzZXQgdCBtYXJrXG47O1xuXG5sZXQgbnVtIHQgPVxuICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnLidcbiAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgZWxzZSAoXG4gICAgbWFueTEgdCBDaGFyLmlzX2RpZ2l0O1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy4nIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0KTtcbiAgZXhwb25lbnRpYWxfcGFydCB0XG47O1xuXG5sZXQgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIG51bSB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICclJ1xuICB0aGVuIHQuY3VycmVudCA8LSBQZXJjZW50YWdlXG4gIGVsc2UgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgdGhlbiAoXG4gICAgaWRlbnQgdDtcbiAgICB0LmN1cnJlbnQgPC0gRGltZW5zaW9uKVxuICBlbHNlIHQuY3VycmVudCA8LSBOdW1iZXJcbjs7XG5cbmxldCBoYXNoX29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICcjJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZiBhY2NlcHQgdCBubWNoYXJcbiAgdGhlbiAoXG4gICAgbWFueTEgdCBubWNoYXI7XG4gICAgdC5jdXJyZW50IDwtIEhhc2gpXG4gIGVsc2UgdC5jdXJyZW50IDwtIERlbGltXG47O1xuXG5sZXQgYXRrZXl3b3JkIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdAJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZGVudCB0O1xuICB0LmN1cnJlbnQgPC0gQXRrZXl3b3JkXG47O1xuXG5sZXQgdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICd1Jyk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcInVybChcIlxuICB0aGVuIChcbiAgICBsZXQgbSA9IG1hcmsgdCBpblxuICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgIGlmIENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXCInIHx8IENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXFwnJ1xuICAgIHRoZW4gKFxuICAgICAgcmVzZXQgdCBtO1xuICAgICAgdC5jdXJyZW50IDwtIEZ1bmN0aW9uKVxuICAgIGVsc2UgKFxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcpJyB8ICcgJyAtPiBmYWxzZVxuICAgICAgICB8ICdcXCcnIHwgJ1wiJyB8ICcoJyAtPiBlcnJvciB0XG4gICAgICAgIHwgYyB3aGVuIENoYXIuaXNfcHJpbnQgYyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBlcnJvciB0KTtcbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgZXhwZWN0X2NoYXIgdCAnKSc7XG4gICAgICB0LmN1cnJlbnQgPC0gVXJpKSlcbiAgZWxzZSBpZGVudF9vcl9mdW5jdGlvbiB0XG47O1xuXG5sZXQgY29tbWVudF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIvKlwiXG4gIHRoZW4gKFxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyonIC0+IGZhbHNlXG4gICAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICAgIGlmIGFjY2VwdF9zdHJpbmcgdCBcIiovXCJcbiAgICAgIHRoZW4gdC5jdXJyZW50IDwtIENvbW1lbnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0X2NoYXIgdCAnKidcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSBlcnJvciB0XG4gICAgaW5cbiAgICBsb29wICgpKVxuICBlbHNlIChcbiAgICBleHBlY3RfY2hhciB0ICcvJztcbiAgICB0LmN1cnJlbnQgPC0gRGVsaW0pXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgbGV0IG5ld19vZmYgPSBuZXh0X3BvcyB0IGluXG4gIHQub2ZmIDwtIG5ld19vZmY7XG4gIHQubGVuIDwtIDA7XG4gIGlmIGlzX25leHRfZW9mIHRcbiAgdGhlbiB0LmN1cnJlbnQgPC0gRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICB8IGMgd2hlbiBpc193aGl0ZXNwYWNlIGMgLT5cbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgdC5jdXJyZW50IDwtIFdoaXRlX3NwYWNlXG4gICAgfCAnOicgLT4gb25lX2NoYXJfdG9rZW4gdCBDb2xvblxuICAgIHwgJzsnIC0+IG9uZV9jaGFyX3Rva2VuIHQgU2VtaV9jb2xvblxuICAgIHwgJ3snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGN1cmx5XG4gICAgfCAnfScgLT4gb25lX2NoYXJfdG9rZW4gdCBSY3VybHlcbiAgICB8ICdbJyAtPiBvbmVfY2hhcl90b2tlbiB0IExicmFja2V0XG4gICAgfCAnXScgLT4gb25lX2NoYXJfdG9rZW4gdCBSYnJhY2tldFxuICAgIHwgJygnIC0+IG9uZV9jaGFyX3Rva2VuIHQgTHBhcmVuXG4gICAgfCAnKScgLT4gb25lX2NoYXJfdG9rZW4gdCBScGFyZW5cbiAgICB8ICcsJyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbW1hXG4gICAgfCAoJ1xcJycgfCAnXCInKSBhcyBxdW90ZSAtPiBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlXG4gICAgfCAoJzAnIC4uICc5JyB8ICcuJyB8ICcrJyB8ICctJykgd2hlbiBzdGFydF9udW0gdCAtPlxuICAgICAgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHRcbiAgICB8ICcvJyAtPiBjb21tZW50X29yX2RlbGltIHRcbiAgICB8ICcjJyAtPiBoYXNoX29yX2RlbGltIHRcbiAgICB8ICdAJyB3aGVuIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJAXCIgdCAtPiBhdGtleXdvcmQgdFxuICAgIHwgJ3UnIC0+IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgfCBfIC0+XG4gICAgICBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICAgICAgdGhlbiBpZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICgqIHRoaXMgaXMgd2VpcmQgYnV0IHRoZSBzcGVjIGlzIHdlaXJkICopXG4gICAgICAgIHQuY3VycmVudCA8LSBEZWxpbSkpXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgKCogTWFrZSBzdXJlIHdlIGFyZSBpZGVtcG90ZW50IHdoZW4gd2UgZ2V0IGludG8gdGhlIGVycm9yIHN0YXRlICopXG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFcnJvclxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIHRyeSBuZXh0IHQgd2l0aFxuICAgIHwgRXJyb3JfaGFwcGVuZWQgLT4gKCkpXG47O1xuXG5sZXQgY3JlYXRlIHMgPVxuICAoKiBjdXJyZW50IGlzIGR1bW15IGFuZCB3aWxsIGJlIHNldCBieSBjYWxsIHRvIG5leHQgKilcbiAgbGV0IHQgPSB7IHM7IG9mZiA9IDA7IGxlbiA9IDA7IGN1cnJlbnQgPSBXaGl0ZV9zcGFjZSB9IGluXG4gIG5leHQgdDtcbiAgdFxuOztcblxubGV0IHNsaWNlIHQgPSB0Lm9mZiwgdC5sZW5cbmxldCBjdXJyZW50IHQgPSB0LmN1cnJlbnRcblxubGV0IGN1cnJlbnRfdGV4dCB0ID1cbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVvZlxuICB0aGVuIFwiXCJcbiAgZWxzZSAoXG4gICAgbGV0IHBvcywgbGVuID0gc2xpY2UgdCBpblxuICAgIFN0cmluZy5zdWIgdC5zIH5wb3Mgfmxlbilcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgdCA9IGNyZWF0ZSBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIGxldCBzdGFydCwgbGVuID0gc2xpY2UgdCBpblxuICAgIGxldCBhY2MgPSAoY3VycmVudCB0LCBzdGFydCwgbGVuKSA6OiBhY2MgaW5cbiAgICBpZiBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFb2YgfHwgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRXJyb3JcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbmV4dCB0O1xuICAgICAgbG9vcCBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCB0ZXN0IHMgPVxuICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAoU2V4cC50b19zdHJpbmdfbWFjaCAoWyVzZXhwX29mOiAoVG9rZW4udCAqIGludCAqIGludCkgbGlzdF0gKHRvX2xpc3QgcykpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlb2ZcIiA9XG4gICAgICB0ZXN0IFwiXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoRW9mIDAgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInNpbXBsZV90b2tlbnNcIiA9XG4gICAgICB0ZXN0IFwiKSh7fVtdOzpcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoUnBhcmVuIDAgMSkoTHBhcmVuIDEgMSkoTGN1cmx5IDIgMSkoUmN1cmx5IDMgMSkoTGJyYWNrZXQgNCAxKShSYnJhY2tldCA1IDEpKFNlbWlfY29sb24gNiAxKShDb2xvbiA3IDEpKEVvZiA4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaWRlbnRcIiA9XG4gICAgICB0ZXN0IFwiLWZvby1iYXI6IGJhelwiO1xuICAgICAgdGVzdCBcIi1mb28tYmFyKFwiO1xuICAgICAgdGVzdCBcIkBmb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC0tZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIi0tdmFyXCI7XG4gICAgICB0ZXN0IFwiUkdCQVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgOCkoQ29sb24gOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCA4KShFb2YgOCAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgMTApKEVvZiAxMCAwKSlcbiAgICAoKElkZW50IDAgNSkoRW9mIDUgMCkpXG4gICAgKChJZGVudCAwIDQpKEVvZiA0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwid2hpdGVzcGFjZVwiID1cbiAgICAgIHRlc3QgXCIgIFwiO1xuICAgICAgWyVleHBlY3Qge3woKFdoaXRlX3NwYWNlIDAgMikoRW9mIDIgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIm51bWJlcnNcIiA9XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW1cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWluXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDNjbVwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAxMjAlXCI7XG4gICAgICB0ZXN0IFwiZ3JpZDogMCAxIGZvb1wiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41LWluXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUyMFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKERpbWVuc2lvbiAxMyAzKShFb2YgMTYgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShQZXJjZW50YWdlIDEzIDQpKEVvZiAxNyAwKSlcbiAgICAoKElkZW50IDAgNCkoQ29sb24gNCAxKShXaGl0ZV9zcGFjZSA1IDEpKE51bWJlciA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJiYWRseV9xdW90ZWRcIiA9XG4gICAgICB0ZXN0IFwiJ2ZvbyBiYXJcIjtcbiAgICAgIHRlc3QgXCInXCI7XG4gICAgICB0ZXN0IFwiJ1xcXFwnXCI7XG4gICAgICBbJWV4cGVjdCB7fFxuICAgICgoRXJyb3IgMCA4KSlcbiAgICAoKEVycm9yIDAgMSkpXG4gICAgKChFcnJvciAwIDMpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicXVvdGVkXCIgPVxuICAgICAgdGVzdCB7fCdGb28gJ1wiQmFyXCInOycgJ1xcJycgXCJcXFwiXCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoU3RyaW5nIDAgNikoU3RyaW5nIDYgNSkoU3RyaW5nIDExIDMpKFdoaXRlX3NwYWNlIDE0IDEpKFN0cmluZyAxNSA0KShXaGl0ZV9zcGFjZSAxOSAxKShTdHJpbmcgMjAgNCkoRW9mIDI0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiY29sb3JzXCIgPVxuICAgICAgdGVzdCB7fGNvbG9yOiAjZjAwfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShIYXNoIDcgNCkoRW9mIDExIDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaW1wb3J0XCIgPVxuICAgICAgdGVzdCB7fEBpbXBvcnQgXCJmb28uYmFyXCI7fH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKEF0a2V5d29yZCAwIDcpKFdoaXRlX3NwYWNlIDcgMSkoU3RyaW5nIDggOSkoU2VtaV9jb2xvbiAxNyAxKShFb2YgMTggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJyZWQgZXhhbXBsZVwiID1cbiAgICAgIHRlc3QgXCJyZWQtLT5cIjtcbiAgICAgIFslZXhwZWN0IHt8ICgoSWRlbnQgMCA1KShEZWxpbSA1IDEpKEVvZiA2IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidXJsXCIgPVxuICAgICAgdGVzdCB7fHVybCggXCJodHRwOi8vd3d3dy5nb29nbGUuY29tXCIpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyl8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuY29tICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuXCJjb20gKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKEZ1bmN0aW9uIDAgNCkoV2hpdGVfc3BhY2UgNCAxKShTdHJpbmcgNSAyNCkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFJwYXJlbiAyOCAxKShFb2YgMjkgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShXaGl0ZV9zcGFjZSAyOCAxKShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoVXJpIDAgMzApKEVvZiAzMCAwKSlcbiAgICAoKEVycm9yIDAgMjUpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZXNjYXBlXCIgPVxuICAgICAgdGVzdCB7fFwidGVzdFxcMTlhYmYyXFwyXCJ8fTtcbiAgICAgIHRlc3Qge3xcIlxcMDEwXFx4RkZhXFxvMTIzXFxuXFxcXFxcdXsxMjM0NX1hYfCfkKrwn5Cq8J+QqvCfkKrwn5CqXCJ8fTtcbiAgICAgIHRlc3Qge3xcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChTdHJpbmcgMCAxNSkoRW9mIDE1IDApKVxuICAgICgoU3RyaW5nIDAgNTEpKEVvZiA1MSAwKSlcbiAgICAoKFN0cmluZyAwIDQ5KShFb2YgNDkgMCkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBSZWN1cnNpdmUgZGVzY2VudCBwYXJzZXJzLiAgQSBwYXJzZXIgcmV0dXJucyBmYWxzZSBpZiBiYXNlZCBvbiBhXG4gICBzaW5nbGUgdG9rZW4gbG9va2FoZWFkIGl0IGRlY2lkZXMgdGhhdCB0aGUgZ2l2ZW4gdGV4dCBjYW4gbm90IGJlXG4gICBwYXJzZWQuICBBbnkgb3RoZXIgcGFyc2UgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IHJhaXNpbmcgZXhjZXB0aW9ucy5cblxuICAgU29tZSBwYXJzZXJzIHJldHVybiB1bml0IGJlY2F1c2Ugd2Ugb25seSBjYWxsIHRoZW0gd2hlbiBhIGZhaWx1cmVcbiAgIHRvIHBhcnNlIGltcGxpZXMgYSBwYXJzZSBlcnJvciAoYW5kIG5vdCB0aGF0IHNvbWUgcGFyc2VyIGhpZ2hlciB1cFxuICAgaW4gdGhlIGNhbGwgY2hhaW4gc2hvdWxkIHRyeSB0byBwYXJzZSBzb21ldGhpbmcgZWxzZSkuXG5cbiAgIEZvciBzaW1wbGljaXR5IHRoZSBwYXJzZXJzIHRoZW1zZWx2ZXMganVzdCB2YWxpZGF0ZSBhbmQgZG9uJ3RcbiAgIHByb2R1Y2UgYW55IHZhbHVlcy4gIFRoYXQgbGVhZHMgdG8gYSBmZXcgdW5lbGVnYW50IGNvbnN0cnVjdHNcbiAgIChwcmltYXJpbHkgaW4gZGVjbGFyYXRpb24pLCBidXQgbWVhbnMgd2Ugb3RoZXJ3aXNlIGhhdmUgcmF0aGVyXG4gICBzaW1wbGUgY29kZSB0aGF0IGFsc28gYWxsb2NhdGVzIHZlcnkgbGl0dGxlLlxuKilcblxub3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCByZWMgbmV4dCBjdCA9XG4gIENzc190b2tlbml6ZXIubmV4dCBjdDtcbiAgaWYgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIHRoZW4gbmV4dCBjdCBlbHNlICgpXG47O1xuXG5sZXQgc2tpcF93aGl0ZV9zcGFjZSBjdCA9XG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBXaGl0ZV9zcGFjZSkgZG9cbiAgICBuZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCBhY2NlcHQgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gKFxuICAgIG5leHQgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGV4cGVjdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiBuZXh0IGN0XG4gIGVsc2VcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmV4cGVjdGVkIHRva2VuXCJcbiAgICAgICAgICAoZXhwZWN0ZWQgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXG4gICAgICAgICAgKGdvdCA6IENzc190b2tlbml6ZXIuVG9rZW4udCldXG47O1xuXG5sZXQgcmVjIG1hbnkgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID0gaWYgZiBjdCB0aGVuIG1hbnkgY3QgZiBlbHNlICgpXG5cbmxldCBtYW55MSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPVxuICBpZiBmIGN0XG4gIHRoZW4gKFxuICAgIG1hbnkgY3QgZjtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgcmVjIGFueSBjdCA6IGJvb2wgPVxuICBsZXQgcmVzID1cbiAgICBtYXRjaCBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3Qgd2l0aFxuICAgIHwgSWRlbnQgfCBOdW1iZXIgfCBQZXJjZW50YWdlIHwgRGltZW5zaW9uIHwgU3RyaW5nIHwgVXJpIHwgRGVsaW0gfCBIYXNoIHwgQ29tbWEgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICB0cnVlXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBtYW55IGN0IGFueTtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMcGFyZW4gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMYnJhY2tldCAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJicmFja2V0O1xuICAgICAgdHJ1ZVxuICAgIHwgUmN1cmx5IHwgUnBhcmVuIHwgUmJyYWNrZXQgLT4gZmFsc2VcbiAgICB8IExjdXJseSAtPiBmYWxzZVxuICAgIHwgQXRrZXl3b3JkIHwgQ29sb24gfCBTZW1pX2NvbG9uIC0+IGZhbHNlXG4gICAgfCBDb21tZW50IHwgV2hpdGVfc3BhY2UgfCBFb2YgfCBFcnJvciAtPiBmYWxzZVxuICBpblxuICBpZiByZXMgdGhlbiBza2lwX3doaXRlX3NwYWNlIGN0IGVsc2UgKCk7XG4gIHJlc1xuXG5hbmQgZXhwZWN0X2FueSBjdCA9IGlmIGFueSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8YW55PlwiXVxuXG5hbmQgdmFsdWUwIGN0ID1cbiAgYW55IGN0XG4gIHx8IGJsb2NrIGN0XG4gIHx8XG4gIGlmIGFjY2VwdCBjdCBBdGtleXdvcmRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCB2YWx1ZSBjdCA9IG1hbnkxIGN0IHZhbHVlMFxuXG5hbmQgYmxvY2sgY3QgOiBib29sID1cbiAgaWYgYWNjZXB0IGN0IExjdXJseVxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgICAgdmFsdWUwIGN0XG4gICAgICB8fFxuICAgICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICAgIHRoZW4gKFxuICAgICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgICB0cnVlKVxuICAgICAgZWxzZSBmYWxzZSk7XG4gICAgZXhwZWN0IGN0IFJjdXJseTtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIGV4cGVjdF92YWx1ZSBjdCA9IGlmIHZhbHVlIGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDx2YWx1ZT5cIl1cblxubGV0IGRlY2xhcmF0aW9uIGN0ID1cbiAgbGV0IGlkZW50X3N0YXJ0LCBpZGVudF9sZW4gPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IGluXG4gIGlmIGFjY2VwdCBjdCBJZGVudFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGV4cGVjdCBjdCBDb2xvbjtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGxldCB2YWx1ZV9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgZXhwZWN0X3ZhbHVlIGN0O1xuICAgIGxldCBuZXh0X3Rva2VuX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBsZXQgc291cmNlID0gQ3NzX3Rva2VuaXplci5zb3VyY2UgY3QgaW5cbiAgICBTb21lXG4gICAgICAoIFN0cmluZy5zdWIgc291cmNlIH5wb3M6aWRlbnRfc3RhcnQgfmxlbjppZGVudF9sZW5cbiAgICAgICwgU3RyaW5nLnJzdHJpcFxuICAgICAgICAgIChTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOnZhbHVlX3N0YXJ0IH5sZW46KG5leHRfdG9rZW5fc3RhcnQgLSB2YWx1ZV9zdGFydCkpICkpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbiBjdCA9XG4gIG1hdGNoIGRlY2xhcmF0aW9uIGN0IHdpdGhcbiAgfCBTb21lIChmaWVsZCwgdmFsdWUpIC0+IGZpZWxkLCB2YWx1ZVxuICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8ZGVjbGFyYXRpb24+XCJdXG47O1xuXG4oKiBBcyBwZXI6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3R5bGUtYXR0ci9cbiAgIGRlY2xhcmF0aW9uLWxpc3RcbiAgIDogUyogZGVjbGFyYXRpb24/IFsgJzsnIFMqIGRlY2xhcmF0aW9uPyBdKlxuICAgO1xuKilcbmxldCBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBjdCA9XG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgbGV0IGFkZCBrdiA9XG4gICAgbWF0Y2gga3Ygd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaywgdikgLT4gcmVzIDo9IChrLCB2KSA6OiAhcmVzXG4gIGluXG4gIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgIHRoZW4gKFxuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKTtcbiAgTGlzdC5yZXYgIXJlc1xuOztcblxubGV0IHBhcnNlIHBhcnNlcl9mIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSBkb1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lO1xuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgbGV0IHJlcyA9IHBhcnNlcl9mIGN0IGluXG4gICAgZXhwZWN0IGN0IEVvZjtcbiAgICByZXMpXG47O1xuXG5sZXQgcHJpbnRfdG9rZW5zIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKG5vdCAoVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIEVvZikpIGRvXG4gICAgcHJpbnRfcyAoQ3NzX3Rva2VuaXplci5Ub2tlbi5zZXhwX29mX3QgKENzc190b2tlbml6ZXIuY3VycmVudCBjdCkpO1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgdmFsaWRhdGVfdmFsdWUgPSBwYXJzZSBleHBlY3RfdmFsdWVcbmxldCBwYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgPSBwYXJzZSBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBzXG5cbmxldCB0ZXN0X3BhcnNlciBwIHNleHBfb2ZfYXJnIHMgPVxuICBsZXQgciA9IHBhcnNlIHAgcyBpblxuICBwcmludGYgIVwiJXMgLS0+ICV7c2V4cDphcmcgT3JfZXJyb3IudH1cXG5cIiBzIHJcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcIlwiID1cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIFwiMCA0cHggOHB4IDAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMTIpLCAwIDJweCA0cHggMCBcXFxuICAgICAgICAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMDgpXCJcbiAgICAgIGluXG4gICAgICBwcmludF90b2tlbnMgdmFsdWU7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW4gfH1dO1xuICAgICAgcHJpbnRfcyBbJW1lc3NhZ2UgKHZhbGlkYXRlX3ZhbHVlIHZhbHVlIDogdW5pdCBPcl9lcnJvci50KV07XG4gICAgICBbJWV4cGVjdCB7fFxuICAgIChcInZhbGlkYXRlX3ZhbHVlIHZhbHVlXCIgKE9rICgpKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInZhbHVlc1wiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X3ZhbHVlIFVuaXQuc2V4cF9vZl90IGluXG4gICAgICB0ZXN0IFwieFwiO1xuICAgICAgdGVzdCBcIjNcIjtcbiAgICAgIHRlc3QgXCIzaW5cIjtcbiAgICAgIHRlc3QgXCIzJVwiO1xuICAgICAgdGVzdCBcIiNmZmZcIjtcbiAgICAgIHRlc3QgXCIxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcIidIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJyZ2IoMCwwLDApXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgeCAtLT4gKE9rICgpKVxuICAgICAgMyAtLT4gKE9rICgpKVxuICAgICAgM2luIC0tPiAoT2sgKCkpXG4gICAgICAzJSAtLT4gKE9rICgpKVxuICAgICAgI2ZmZiAtLT4gKE9rICgpKVxuICAgICAgMSAwIGF1dG8gLS0+IChPayAoKSlcbiAgICAgICdIZWxsbyBXb3JsZCcgLS0+IChPayAoKSlcbiAgICAgIHJnYigwLDAsMCkgLS0+IChPayAoKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiAnSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogZm9vO1wiO1xuICAgICAgKCogU2VtaSdzIGFyZSBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIGxpc3QgKilcbiAgICAgIHRlc3QgXCJjb250ZW50OiBiYXIgXCI7XG4gICAgICAoKiBidXQgd2hpdGVzcGFjZSBpcyBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIChhbnkgcmVhbGx5KSAqKVxuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKGZsZXggXCIxIDAgYXV0b1wiKSlcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBXb3JsZCcgLS0+IChPayAoY29udGVudCBcIidIZWxsbyBXb3JsZCdcIikpXG4gICAgICBjb250ZW50OiBmb287IC0tPiAoRXJyb3IgKFwiVW5leHBlY3RlZCB0b2tlblwiIChleHBlY3RlZCBFb2YpIChnb3QgU2VtaV9jb2xvbikpKVxuICAgICAgY29udGVudDogYmFyICAtLT4gKE9rIChjb250ZW50IGJhcikpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1bmljb2RlXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2J1wiO1xuICAgICAgcHJpbnRfZW5kbGluZSAoU2V4cC50b19zdHJpbmcgKFNleHAuQXRvbSBcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCIpKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2JyAtLT4gKE9rXG4gICAgIChjb250ZW50XG4gICAgICBcIidcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MidcIikpXG4gICAgXCJcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MlwiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvbiBsaXN0XCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBbJXNleHBfb2Y6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RdIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0bztcIjtcbiAgICAgIHRlc3RcbiAgICAgICAgXCJiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweFwiO1xuICAgICAgdGVzdCBcIjs7Ozs7XCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgZmxleDogMSAwIGF1dG87IC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFwiaW1nX3RyZWUucG5nXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHggLS0+IChPa1xuICAgICAoKGJhY2tncm91bmQgXCIjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0XCIpXG4gICAgICAobWFyZ2luLWxlZnQgMjAwcHgpKSlcbiAgICA7Ozs7OyAtLT4gKE9rICgpKVxuICAgIGZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikgKG90aGVyIHNhKSkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQ29yZS5Db3JlX3N0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICgqKiAoZmllbGQgKiB2YWx1ZSkgbGlzdC4gIFdoZXJlIHZhbHVlIHNob3VsZCBiZSBlc2NhcGVkIC8gcXVvdGVkXG4gICAgICAgIGFzIG5lY2Vzc2FyeSBhcyBwZXIgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNydWxlLXNldHMuICopXG4gICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gIGVuZFxuZW5kXG5cbm9wZW4gQ29yZVxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSBjc3NfZ2xvYmFsX3ZhbHVlcyA9XG4gIFsgYEluaGVyaXRcbiAgfCBgSW5pdGlhbFxuICBdXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA9IHJlZiAoZnVuIGRpZ2l0cyBmIC0+IHNwcmludGYgXCIlLipmXCIgZGlnaXRzIGYpXG5lbmRcblxubGV0IGYycyBkaWdpdHMgZiA9ICFQcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIGRpZ2l0cyBmXG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSR0JBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHIgOiBpbnRcbiAgICAgICAgOyBnIDogaW50XG4gICAgICAgIDsgYiA6IGludFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5yIH5nIH5iID9hICgpID0geyByOyBnOyBiOyBhIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBIU0xBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGggOiBpbnRcbiAgICAgICAgOyBzIDogUGVyY2VudC50XG4gICAgICAgIDsgbCA6IFBlcmNlbnQudFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5oIH5zIH5sID9hICgpID0geyBoOyBzOyBsOyBhIH1cbiAgICBlbmRcblxuICAgIHR5cGUgdCA9XG4gICAgICBbIGBSR0JBIG9mIFJHQkEudFxuICAgICAgfCBgSFNMQSBvZiBIU0xBLnRcbiAgICAgIHwgYE5hbWUgb2Ygc3RyaW5nXG4gICAgICB8IGBIZXggb2Ygc3RyaW5nXG4gICAgICB8IGBWYXIgb2Ygc3RyaW5nXG4gICAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCB0b19zdHJpbmdfY3NzIDogWzwgdCBdIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBSR0JBIHsgUkdCQS5yOyBnOyBiOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gWyVzdHJpbmcgXCJyZ2IoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0pXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nIFwicmdiYSgle3IjSW50fSwle2cjSW50fSwle2IjSW50fSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBIU0xBIHsgSFNMQS5oOyBzOyBsOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2xhKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBOYW1lIG5hbWUgLT4gbmFtZVxuICAgIHwgYEhleCBoZXggLT4gaGV4XG4gICAgfCBgVmFyIHZhciAtPiBbJXN0cmluZyBcInZhcigle3Zhcn0pXCJdXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsaWdubWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExlZnRcbiAgICB8IGBSaWdodFxuICAgIHwgYENlbnRlciAoKiBob3Jpem9udGFsICopXG4gICAgfCBgVG9wXG4gICAgfCBgQm90dG9tXG4gICAgfCBgTWlkZGxlICgqIHZlcnRpY2FsICopXG4gICAgfCBgSnVzdGlmeSAoKiB0ZXh0LWFsaWduIChpbiBhZGRpdGlvbiB0byBbaG9yaXpvbnRhbF0pICopXG4gICAgfCBgU3VwZXIgKCogdmVydGljYWwgKilcbiAgICB8IGBTdWIgKCogdmVydGljYWwgKilcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEp1c3RpZnkgLT4gXCJqdXN0aWZ5XCJcbiAgICB8IGBUb3AgLT4gXCJ0b3BcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYEJvdHRvbSAtPiBcImJvdHRvbVwiXG4gICAgfCBgU3VwZXIgLT4gXCJzdXBlclwiXG4gICAgfCBgU3ViIC0+IFwic3ViXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYFJhdyBvZiBzdHJpbmdcbiAgICB8IGBDaCBvZiBmbG9hdFxuICAgIHwgYFJlbSBvZiBmbG9hdFxuICAgIHwgYEVtIG9mIGludFxuICAgIHwgYEVtX2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgUGVyY2VudCBvZiBQZXJjZW50LnRcbiAgICB8IGBQdCBvZiBmbG9hdFxuICAgIHwgYFB4IG9mIGludFxuICAgIHwgYFB4X2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgVmggb2YgUGVyY2VudC50XG4gICAgfCBgVncgb2YgUGVyY2VudC50XG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBSYXcgcyAtPiBzXG4gICAgfCBgQ2ggYyAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgY31jaFwiXVxuICAgIHwgYFJlbSBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXJlbVwiXVxuICAgIHwgYEVtIGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fWVtXCJdXG4gICAgfCBgRW1fZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1lbVwiXVxuICAgIHwgYFBlcmNlbnQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX0lXCJdXG4gICAgfCBgUHQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgcH1wdFwiXVxuICAgIHwgYFB4IGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fXB4XCJdXG4gICAgfCBgUHhfZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1weFwiXVxuICAgIHwgYFZoIHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dmhcIl1cbiAgICB8IGBWdyBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZ3XCJdXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcblxuICBsZXQgcGVyY2VudDEwMCA9IGBQZXJjZW50IChQZXJjZW50Lm9mX3BlcmNlbnRhZ2UgMTAwLilcbmVuZFxuXG5tb2R1bGUgQXV0b19vcl9sZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBBdXRvXG4gICAgfCBMZW5ndGgudFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCAjTGVuZ3RoLnQgYXMgbCAtPiBMZW5ndGgudG9fc3RyaW5nX2NzcyBsXG4gIDs7XG5lbmRcblxubGV0IHZhbHVlX21hcCBvIH5mID0gT3B0aW9uLnZhbHVlX21hcCBvIH5kZWZhdWx0OlwiXCIgfmZcbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0ICggQD4gKSA9IGNvbWJpbmVcbmxldCBjb25jYXQgbCA9IExpc3QuY29uY2F0IGxcbmxldCB0b19zdHJpbmdfbGlzdCA9IEZuLmlkXG5cbmxldCB0b19zdHJpbmdfY3NzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4gKGZpZWxkLCB2YWx1ZSkgLT4gWyVzdHJpbmcgXCIle2ZpZWxkfTogJXt2YWx1ZX1cIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIjtcIlxuOztcblxubGV0IG9mX3N0cmluZ19jc3NfZXhuIHMgPSBDc3NfcGFyc2VyLnBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyB8PiBPcl9lcnJvci5va19leG5cblxuKCoqIGNyZWF0ZV9yYXcgY3JlYXRlcyBhIHNpbmdsZSBmaWVsZCwgdmFsdWUgcGFpci4gIEl0IGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgaXMgYSB2YWxpZFxuICAgIGNzcyB2YWx1ZS4gIEFzIHN1Y2ggaXQgaXMgdW5zYWZlIHRvIHVzZSB3aXRoIGFyYml0cmFyeSB2YWx1ZSBzdHJpbmdzLiAgQnV0IGZvciB0aGVcbiAgICB2YXN0IG1ham9yaXR5IG9mIGNvbWJpbmF0b3JzIGluIHRoaXMgbW9kdWxlIGl0IGlzIHRoZSByaWdodCB0aGluZyB0byB1c2UsIGFzIHdlIGtub3dcbiAgICBieSBjb25zdHJ1Y3Rpb24gdGhhdCB0aGUgdmFsdWVzIGRvIG5vdCBuZWVkIHF1b3RpbmcgLyBlc2NhcGluZy4gKilcbmxldCBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWUgPSBbIGZpZWxkLCB2YWx1ZSBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHNob3VsZF92YWxpZGF0ZSA9IHJlZiBmYWxzZVxuZW5kXG5cbmxldCBjcmVhdGUgfmZpZWxkIH52YWx1ZSA9XG4gIGlmICFFeHBlcnQuc2hvdWxkX3ZhbGlkYXRlIHRoZW4gQ3NzX3BhcnNlci52YWxpZGF0ZV92YWx1ZSB2YWx1ZSB8PiBPcl9lcnJvci5va19leG47XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IGVtcHR5ID0gW11cbmxldCBpc19lbXB0eSA9IExpc3QuaXNfZW1wdHlcbmxldCBjcmVhdGVfcGxhY2VtZW50IG5hbWUgbGVuZ3RoID0gY3JlYXRlIH5maWVsZDpuYW1lIH52YWx1ZTooTGVuZ3RoLnRvX3N0cmluZ19jc3MgbGVuZ3RoKVxubGV0IGxlZnQgPSBjcmVhdGVfcGxhY2VtZW50IFwibGVmdFwiXG5sZXQgdG9wID0gY3JlYXRlX3BsYWNlbWVudCBcInRvcFwiXG5sZXQgYm90dG9tID0gY3JlYXRlX3BsYWNlbWVudCBcImJvdHRvbVwiXG5sZXQgcmlnaHQgPSBjcmVhdGVfcGxhY2VtZW50IFwicmlnaHRcIlxuXG5sZXQgcG9zaXRpb24gP3RvcDp0cCA/Ym90dG9tOmJ0ID9sZWZ0Omx0ID9yaWdodDpydCBwb3MgPVxuICBsZXQgcG9zID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbWF0Y2ggcG9zIHdpdGhcbiAgICAgIHwgYFN0YXRpYyAtPiBcInN0YXRpY1wiXG4gICAgICB8IGBBYnNvbHV0ZSAtPiBcImFic29sdXRlXCJcbiAgICAgIHwgYFN0aWNreSAtPiBcInN0aWNreVwiXG4gICAgICB8IGBSZWxhdGl2ZSAtPiBcInJlbGF0aXZlXCJcbiAgICAgIHwgYEZpeGVkIC0+IFwiZml4ZWRcIlxuICAgIGluXG4gICAgY3JlYXRlIH5maWVsZDpcInBvc2l0aW9uXCIgfnZhbHVlXG4gIGluXG4gIGxldCBjb252ZXJ0IG9wdF9sIGYgPSBPcHRpb24udmFsdWVfbWFwIG9wdF9sIH5kZWZhdWx0OmVtcHR5IH5mIGluXG4gIGNvbmNhdCBbIHBvczsgY29udmVydCB0cCB0b3A7IGNvbnZlcnQgbHQgbGVmdDsgY29udmVydCBydCByaWdodDsgY29udmVydCBidCBib3R0b20gXVxuOztcblxubGV0IGJveF9zaXppbmcgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgQ29udGVudF9ib3ggLT4gXCJjb250ZW50LWJveFwiXG4gICAgfCBgQm9yZGVyX2JveCAtPiBcImJvcmRlci1ib3hcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm94LXNpemluZ1wiIH52YWx1ZVxuOztcblxubGV0IGRpc3BsYXkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgSW5saW5lIC0+IFwiaW5saW5lXCJcbiAgICB8IGBCbG9jayAtPiBcImJsb2NrXCJcbiAgICB8IGBJbmxpbmVfYmxvY2sgLT4gXCJpbmxpbmUtYmxvY2tcIlxuICAgIHwgYExpc3RfaXRlbSAtPiBcImxpc3QtaXRlbVwiXG4gICAgfCBgVGFibGUgLT4gXCJ0YWJsZVwiXG4gICAgfCBgSW5saW5lX3RhYmxlIC0+IFwiaW5saW5lLXRhYmxlXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgRmxleCAtPiBcImZsZXhcIlxuICAgIHwgYElubGluZV9mbGV4IC0+IFwiaW5saW5lLWZsZXhcIlxuICAgIHwgYElubGluZV9ncmlkIC0+IFwiaW5saW5lLWdyaWRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZGlzcGxheVwiIH52YWx1ZVxuOztcblxubGV0IHZpc2liaWxpdHkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ2aXNpYmlsaXR5XCIgfnZhbHVlXG47O1xuXG50eXBlIG92ZXJmbG93ID1cbiAgWyBgVmlzaWJsZVxuICB8IGBIaWRkZW5cbiAgfCBgU2Nyb2xsXG4gIHwgYEF1dG9cbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBtYWtlX292ZXJmbG93IGZpZWxkIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYFNjcm9sbCAtPiBcInNjcm9sbFwiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IG92ZXJmbG93ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93XCJcbmxldCBvdmVyZmxvd194ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXhcIlxubGV0IG92ZXJmbG93X3kgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteVwiXG5sZXQgel9pbmRleCBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJ6LWluZGV4XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpXG5sZXQgb3BhY2l0eSBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcGFjaXR5XCIgfnZhbHVlOihmMnMgNiBpKVxuXG5sZXQgY3JlYXRlX2xlbmd0aF9maWVsZCBmaWVsZCBsID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGwpXG47O1xuXG5sZXQgd2hpdGVfc3BhY2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFByZSAtPiBcInByZVwiXG4gICAgfCBgUHJlX2xpbmUgLT4gXCJwcmUtbGluZVwiXG4gICAgfCBgUHJlX3dyYXAgLT4gXCJwcmUtd3JhcFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlIH5maWVsZDpcIndoaXRlLXNwYWNlXCIgfnZhbHVlXG47O1xuXG50eXBlIGZvbnRfc3R5bGUgPVxuICBbIGBOb3JtYWxcbiAgfCBgSXRhbGljXG4gIHwgYE9ibGlxdWVcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF93ZWlnaHQgPVxuICBbIGBOb3JtYWxcbiAgfCBgQm9sZFxuICB8IGBCb2xkZXJcbiAgfCBgTGlnaHRlclxuICB8IGBOdW1iZXIgb2YgaW50XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfdmFyaWFudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBTbWFsbF9jYXBzXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgZm9udF9zaXplID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImZvbnQtc2l6ZVwiXG5sZXQgZm9udF9mYW1pbHkgbCA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1mYW1pbHlcIiB+dmFsdWU6KFN0cmluZy5jb25jYXQgbCB+c2VwOlwiLFwiKVxuXG5sZXQgZm9udF9zdHlsZSBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYEl0YWxpYyAtPiBcIml0YWxpY1wiXG4gICAgfCBgT2JsaXF1ZSAtPiBcIm9ibGlxdWVcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1zdHlsZVwiIH52YWx1ZVxuOztcblxubGV0IGZvbnRfd2VpZ2h0IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE51bWJlciBpIC0+IEludC50b19zdHJpbmcgaVxuICAgIHwgYEJvbGQgLT4gXCJib2xkXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYExpZ2h0ZXIgLT4gXCJsaWdodGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgQm9sZGVyIC0+IFwiYm9sZGVyXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC13ZWlnaHRcIiB+dmFsdWVcbjs7XG5cbmxldCBib2xkID0gZm9udF93ZWlnaHQgYEJvbGRcblxubGV0IGZvbnRfdmFyaWFudCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYFNtYWxsX2NhcHMgLT4gXCJzbWFsbC1jYXBzXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtdmFyaWFudFwiIH52YWx1ZVxuOztcblxubGV0IGZvbnQgfnNpemUgfmZhbWlseSA/c3R5bGUgP3dlaWdodCA/dmFyaWFudCAoKSA9XG4gIFsgU29tZSAoZm9udF9zaXplIHNpemUpXG4gIDsgU29tZSAoZm9udF9mYW1pbHkgZmFtaWx5KVxuICA7IE9wdGlvbi5tYXAgc3R5bGUgfmY6Zm9udF9zdHlsZVxuICA7IE9wdGlvbi5tYXAgd2VpZ2h0IH5mOmZvbnRfd2VpZ2h0XG4gIDsgT3B0aW9uLm1hcCB2YXJpYW50IH5mOmZvbnRfdmFyaWFudFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQgfmNvbG9yID0gY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yKVxubGV0IGNvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiY29sb3JcIiB+Y29sb3JcbmxldCBiYWNrZ3JvdW5kX2NvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiYmFja2dyb3VuZC1jb2xvclwiIH5jb2xvclxubGV0IGZpbGwgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJmaWxsXCIgfmNvbG9yXG5cbnR5cGUgc3RvcHMgPSAoUGVyY2VudC50ICogQ29sb3IudCkgbGlzdFxuXG50eXBlIGxpbmVhcl9ncmFkaWVudCA9XG4gIHsgZGlyZWN0aW9uIDogWyBgRGVnIG9mIGludCBdXG4gIDsgc3RvcHMgOiBzdG9wc1xuICB9XG5cbnR5cGUgcmFkaWFsX2dyYWRpZW50ID0geyBzdG9wcyA6IHN0b3BzIH1cblxudHlwZSBiYWNrZ3JvdW5kX2ltYWdlID1cbiAgWyBgVXJsIG9mIHN0cmluZ1xuICB8IGBMaW5lYXJfZ3JhZGllbnQgb2YgbGluZWFyX2dyYWRpZW50XG4gIHwgYFJhZGlhbF9ncmFkaWVudCBvZiByYWRpYWxfZ3JhZGllbnRcbiAgXVxuXG50eXBlIHRleHRfYWxpZ24gPVxuICBbIGBMZWZ0XG4gIHwgYFJpZ2h0XG4gIHwgYENlbnRlclxuICB8IGBKdXN0aWZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgc3RvcHNfdG9fc3RyaW5nIHN0b3BzID1cbiAgTGlzdC5tYXAgc3RvcHMgfmY6KGZ1biAocGN0LCBjb2xvcikgLT5cbiAgICAoKiBOb3RlOiBQZXJjZW50LnRvX3N0cmluZyBwcm9kdWNlZCBlLmcuIFwiMHhcIiwgXCIxeFwiLCB3b24ndCB3b3JrIGhlcmUuICopXG4gICAgWyVzdHJpbmcgXCIle0NvbG9yLnRvX3N0cmluZ19jc3MgY29sb3J9ICV7ZjJzIDYgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwY3QpfSVcIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCBiYWNrZ3JvdW5kX2ltYWdlIHNwZWMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgYFVybCB1cmwgLT4gWyVzdHJpbmcgXCJ1cmwoJXt1cmx9KVwiXVxuICAgIHwgYExpbmVhcl9ncmFkaWVudCB7IGRpcmVjdGlvbiA9IGBEZWcgZGlyZWN0aW9uOyBzdG9wcyB9IC0+XG4gICAgICBbJXN0cmluZyBcImxpbmVhci1ncmFkaWVudCgle2RpcmVjdGlvbiNJbnR9ZGVnLCAle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gICAgfCBgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgfSAtPiBbJXN0cmluZyBcInJhZGlhbC1ncmFkaWVudCgle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYmFja2dyb3VuZC1pbWFnZVwiIH52YWx1ZVxuOztcblxubGV0IGNyZWF0ZV9hbGlnbm1lbnQgZmllbGQgYSA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQWxpZ25tZW50LnRvX3N0cmluZ19jc3MgKGEgOj4gQWxpZ25tZW50LnQpKVxuOztcblxubGV0IHRleHRfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidGV4dC1hbGlnblwiXG5sZXQgaG9yaXpvbnRhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJob3Jpem9udGFsLWFsaWduXCJcbmxldCB2ZXJ0aWNhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ2ZXJ0aWNhbC1hbGlnblwiXG5cbmxldCBmbG9hdCBmID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBmIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxvYXRcIiB+dmFsdWVcbjs7XG5cbmxldCBsaW5lX2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJsaW5lLWhlaWdodFwiXG5sZXQgd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwid2lkdGhcIlxubGV0IG1pbl93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtaW4td2lkdGhcIlxubGV0IG1heF93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtd2lkdGhcIlxubGV0IGhlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJoZWlnaHRcIlxubGV0IG1pbl9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLWhlaWdodFwiXG5sZXQgbWF4X2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtaGVpZ2h0XCJcbmxldCBwYWRkaW5nX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLXRvcFwiXG5sZXQgcGFkZGluZ19ib3R0b20gPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1ib3R0b21cIlxubGV0IHBhZGRpbmdfbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLWxlZnRcIlxubGV0IHBhZGRpbmdfcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1yaWdodFwiXG5cbmxldCBwYWRkaW5nID90b3AgP2JvdHRvbSA/bGVmdCA/cmlnaHQgKCkgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgWyBtIHRvcCB+ZjpwYWRkaW5nX3RvcFxuICA7IG0gYm90dG9tIH5mOnBhZGRpbmdfYm90dG9tXG4gIDsgbSBsZWZ0IH5mOnBhZGRpbmdfbGVmdFxuICA7IG0gcmlnaHQgfmY6cGFkZGluZ19yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX3BhZGRpbmcgbCA9IHBhZGRpbmcgfnRvcDpsIH5ib3R0b206bCB+bGVmdDpsIH5yaWdodDpsICgpXG5sZXQgbWFyZ2luX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tdG9wXCJcbmxldCBtYXJnaW5fYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1ib3R0b21cIlxubGV0IG1hcmdpbl9sZWZ0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1sZWZ0XCJcbmxldCBtYXJnaW5fcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXJpZ2h0XCJcblxubGV0IG1hcmdpbiA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6bWFyZ2luX3RvcFxuICA7IG0gYm90dG9tIH5mOm1hcmdpbl9ib3R0b21cbiAgOyBtIGxlZnQgfmY6bWFyZ2luX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOm1hcmdpbl9yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX21hcmdpbiBsID0gbWFyZ2luIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IHJvd19nYXAgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicm93LWdhcFwiXG5sZXQgY29sdW1uX2dhcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJjb2x1bW4tZ2FwXCJcblxudHlwZSBib3JkZXJfc3R5bGUgPVxuICBbIGBOb25lXG4gIHwgYEhpZGRlblxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBHcm9vdmVcbiAgfCBgUmlkZ2VcbiAgfCBgSW5zZXRcbiAgfCBgT3V0c2V0XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG4oKiogQ29uY2F0IDIgdmFsdWVzIHdpdGggYSBzcGFjZSBpbiBiZXR3ZWVuLiAgSWYgZWl0aGVyIGlzIHRoZSBlbXB0eSBzdHJpbmdcbiAgICBkb24ndCBwdXQgaW4gdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZS4gKilcbmxldCBjb25jYXQydiB2MSB2MiA9XG4gIG1hdGNoIHYxLCB2MiB3aXRoXG4gIHwgXCJcIiwgeCAtPiB4XG4gIHwgeCwgXCJcIiAtPiB4XG4gIHwgeCwgeSAtPiB4IF4gXCIgXCIgXiB5XG47O1xuXG4oKiogQ29uY2F0IHVwIHRvIDMgdmFsdWVzIHdpdGggc3BhY2VzIGluIGJldHdlZW4uICopXG5sZXQgY29uY2F0M3YgdjEgdjIgdjMgPSBjb25jYXQydiAoY29uY2F0MnYgdjEgdjIpIHYzXG5cbmxldCBib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+KHN0eWxlIDogYm9yZGVyX3N0eWxlKSAoKSA9XG4gIGxldCBzdHlsZSA9XG4gICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgIHwgYFJpZGdlIC0+IFwicmlkZ2VcIlxuICAgIHwgYE91dHNldCAtPiBcIm91dHNldFwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEdyb292ZSAtPiBcImdyb292ZVwiXG4gICAgfCBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5zZXQgLT4gXCJpbnNldFwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgIHwgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFNvbGlkIC0+IFwic29saWRcIlxuICBpblxuICBsZXQgd2lkdGggPSB2YWx1ZV9tYXAgd2lkdGggfmY6TGVuZ3RoLnRvX3N0cmluZ19jc3MgaW5cbiAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgY29uY2F0M3Ygd2lkdGggc3R5bGUgY29sb3Jcbjs7XG5cbmxldCBjcmVhdGVfYm9yZGVyID9zaWRlICgpID1cbiAgbGV0IGZpZWxkID1cbiAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICB8IFNvbWUgYFRvcCAtPiBcImJvcmRlci10b3BcIlxuICAgIHwgU29tZSBgQm90dG9tIC0+IFwiYm9yZGVyLWJvdHRvbVwiXG4gICAgfCBTb21lIGBSaWdodCAtPiBcImJvcmRlci1yaWdodFwiXG4gICAgfCBTb21lIGBMZWZ0IC0+IFwiYm9yZGVyLWxlZnRcIlxuICAgIHwgTm9uZSAtPiBcImJvcmRlclwiXG4gIGluXG4gIGZ1biA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAtPlxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl90b3AgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBUb3AgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfYm90dG9tID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgQm90dG9tICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2xlZnQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBMZWZ0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX3JpZ2h0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgUmlnaHQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXIgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPSBjcmVhdGVfYm9yZGVyID9zaWRlOk5vbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgKClcblxubGV0IG91dGxpbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfcmF3IH5maWVsZDpcIm91dGxpbmVcIiB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfY29sbGFwc2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgU2VwYXJhdGUgLT4gXCJzZXBhcmF0ZVwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3JkZXItY29sbGFwc2VcIiB+dmFsdWVcbjs7XG5cbmxldCBib3JkZXJfc3BhY2luZyA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJib3JkZXItc3BhY2luZ1wiXG5sZXQgYm9yZGVyX3JhZGl1cyBsID0gY3JlYXRlIH5maWVsZDpcImJvcmRlci1yYWRpdXNcIiB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGwpXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX2xpbmUgPVxuICBbIGBOb25lXG4gIHwgYFVuZGVybGluZVxuICB8IGBPdmVybGluZVxuICB8IGBMaW5lX3Rocm91Z2hcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9zdHlsZSA9XG4gIFsgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFdhdnlcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdGV4dF9kZWNvcmF0aW9uID9zdHlsZSA/Y29sb3IgfmxpbmUgKCkgPVxuICBsZXQgdmFsdWUgPVxuICAgIGxldCBsaW5lID1cbiAgICAgIExpc3QubWFwIGxpbmUgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICAgICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIilcbiAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICAgIGluXG4gICAgbGV0IHN0eWxlID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgYFNvbGlkIC0+IFwic29saWRcIlxuICAgICAgfCBTb21lIGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgICAgfCBTb21lIGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgICAgfCBTb21lIGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgICAgfCBTb21lIGBXYXZ5IC0+IFwid2F2eVwiXG4gICAgICB8IFNvbWUgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgIHwgU29tZSBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIGluXG4gICAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgICBjb25jYXQzdiBsaW5lIHN0eWxlIGNvbG9yXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidGV4dC1kZWNvcmF0aW9uXCIgfnZhbHVlXG47O1xuXG50eXBlIGNvbnRlbnRfYWxpZ25tZW50ID1cbiAgWyBgTm9ybWFsXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGNvbnRlbnRfYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBTcGFjZV9iZXR3ZWVuIC0+IFwic3BhY2UtYmV0d2VlblwiXG4gIHwgYFNwYWNlX2Fyb3VuZCAtPiBcInNwYWNlLWFyb3VuZFwiXG4gIHwgYFNwYWNlX2V2ZW5seSAtPiBcInNwYWNlLWV2ZW5seVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUgaXRlbV9hbGlnbm1lbnQgPVxuICBbIGBBdXRvXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYEJhc2VsaW5lXG4gIHwgYFN0cmV0Y2hcbiAgXVxuXG5sZXQgaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgQmFzZWxpbmUgLT4gXCJiYXNlbGluZVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUganVzdGlmeV9jb250ZW50ID1cbiAgWyBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgU3BhY2VfYmV0d2VlblxuICB8IGBTcGFjZV9hcm91bmRcbiAgfCBgU3BhY2VfZXZlbmx5XG4gIF1cblxubGV0IGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgU3BhY2VfYmV0d2VlbiAtPiBcInNwYWNlLWJldHdlZW5cIlxuICB8IGBTcGFjZV9hcm91bmQgLT4gXCJzcGFjZS1hcm91bmRcIlxuICB8IGBTcGFjZV9ldmVubHkgLT4gXCJzcGFjZS1ldmVubHlcIlxuOztcblxubGV0IGZsZXhfY29udGFpbmVyXG4gICAgICA/KGlubGluZSA9IGZhbHNlKVxuICAgICAgPyhkaXJlY3Rpb24gPSBgUm93KVxuICAgICAgPyh3cmFwID0gYE5vd3JhcClcbiAgICAgID9hbGlnbl9pdGVtc1xuICAgICAgP2FsaWduX2NvbnRlbnRcbiAgICAgID9qdXN0aWZ5X2NvbnRlbnRcbiAgICAgID9yb3dfZ2FwOnJnXG4gICAgICA/Y29sdW1uX2dhcDpjZ1xuICAgICAgKClcbiAgPVxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBsZXQgbWFrZV9kaXIgdiA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC1kaXJlY3Rpb25cIiB+dmFsdWU6diBpblxuICAgIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgUm93IC0+IG1ha2VfZGlyIFwicm93XCJcbiAgICB8IGBSb3dfcmV2ZXJzZSAtPiBtYWtlX2RpciBcInJvdy1yZXZlcnNlXCJcbiAgICB8IGBDb2x1bW4gLT4gbWFrZV9kaXIgXCJjb2x1bW5cIlxuICAgIHwgYENvbHVtbl9yZXZlcnNlIC0+IG1ha2VfZGlyIFwiY29sdW1uLXJldmVyc2VcIlxuICAgIHwgYERlZmF1bHQgLT4gZW1wdHlcbiAgaW5cbiAgbGV0IHdyYXAgPVxuICAgIGxldCBtYWtlX3dyYXAgdiA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC13cmFwXCIgfnZhbHVlOnYgaW5cbiAgICBtYXRjaCB3cmFwIHdpdGhcbiAgICB8IGBOb3dyYXAgLT4gbWFrZV93cmFwIFwibm93cmFwXCJcbiAgICB8IGBXcmFwIC0+IG1ha2Vfd3JhcCBcIndyYXBcIlxuICAgIHwgYFdyYXBfcmV2ZXJzZSAtPiBtYWtlX3dyYXAgXCJ3cmFwLXJldmVyc2VcIlxuICAgIHwgYERlZmF1bHQgLT4gZW1wdHlcbiAgaW5cbiAgbGV0IGFsaWduX2l0ZW1zID1cbiAgICBtYXRjaCBhbGlnbl9pdGVtcyB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1pdGVtc1wiIH52YWx1ZTooaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQgYWxpZ25fY29udGVudCA9XG4gICAgbWF0Y2ggYWxpZ25fY29udGVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tY29udGVudFwiIH52YWx1ZTooY29udGVudF9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQganVzdGlmeV9jb250ZW50ID1cbiAgICBtYXRjaCBqdXN0aWZ5X2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImp1c3RpZnktY29udGVudFwiIH52YWx1ZTooanVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IHJvd19nYXAgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OmVtcHR5IH5mOnJvd19nYXAgcmcgaW5cbiAgbGV0IGNvbHVtbl9nYXAgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OmVtcHR5IH5mOmNvbHVtbl9nYXAgY2cgaW5cbiAgY29uY2F0XG4gICAgWyBkaXNwbGF5IChpZiBpbmxpbmUgdGhlbiBgSW5saW5lX2ZsZXggZWxzZSBgRmxleClcbiAgICA7IGRpcmVjdGlvblxuICAgIDsgd3JhcFxuICAgIDsgYWxpZ25faXRlbXNcbiAgICA7IGFsaWduX2NvbnRlbnRcbiAgICA7IGp1c3RpZnlfY29udGVudFxuICAgIDsgY29sdW1uX2dhcFxuICAgIDsgcm93X2dhcFxuICAgIF1cbjs7XG5cbmxldCBmbGV4X2l0ZW0gP29yZGVyID8oYmFzaXMgPSBgQXV0bykgPyhzaHJpbmsgPSAxLikgfmdyb3cgKCkgPVxuICBsZXQgb3JkZXIgPVxuICAgIE9wdGlvbi5tYXAgb3JkZXIgfmY6KGZ1biBpIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3JkZXJcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICB8PiBMaXN0LmpvaW5cbiAgaW5cbiAgbGV0IGZsZXggPVxuICAgIGxldCBiYXNpcyA9IEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgYmFzaXMgaW5cbiAgICBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXhcIiB+dmFsdWU6WyVzdHJpbmcgXCIle2YycyA2IGdyb3d9ICV7ZjJzIDYgc2hyaW5rfSAle2Jhc2lzfVwiXVxuICBpblxuICBjb25jYXQgWyBmbGV4OyBvcmRlciBdXG47O1xuXG5sZXQgYWxpZ25fc2VsZiBhID1cbiAgbGV0IHZhbHVlID0gaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tc2VsZlwiIH52YWx1ZVxuOztcblxubGV0IHJlc2l6ZSAodmFsdWUgOiBbIGBOb25lIHwgYEJvdGggfCBgSG9yaXpvbnRhbCB8IGBWZXJ0aWNhbCB8IGNzc19nbG9iYWxfdmFsdWVzIF0pID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICB8IGBIb3Jpem9udGFsIC0+IFwiaG9yaXpvbnRhbFwiXG4gICAgfCBgVmVydGljYWwgLT4gXCJ2ZXJ0aWNhbFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJyZXNpemVcIiB+dmFsdWVcbjs7XG5cbmxldCBhbmltYXRpb24gfm5hbWUgfmR1cmF0aW9uID9kZWxheSA/ZGlyZWN0aW9uID9maWxsX21vZGUgP2l0ZXJfY291bnQgP3RpbWluZ19mdW5jdGlvbiAoKVxuICA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBsZXQgc3Bhbl90b19zdHJpbmcgcyA9IFslc3RyaW5nIFwiJXtmMnMgMiAoVGltZV9ucy5TcGFuLnRvX3NlYyBzKX1zXCJdIGluXG4gIGxldCBkaXJlY3Rpb24gPVxuICAgIG0gZGlyZWN0aW9uIH5mOihmdW4gZCAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgICAgIHwgYFJldmVyc2UgLT4gXCJyZXZlcnNlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlX3JldmVyc2UgLT4gXCJhbHRlcm5hdGUtcmV2ZXJzZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgICAgaW5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRpcmVjdGlvblwiIH52YWx1ZSlcbiAgaW5cbiAgbGV0IGZpbGxfbW9kZSA9XG4gICAgbSBmaWxsX21vZGUgfmY6KGZ1biBmIC0+XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgICAgICB8IGBGb3J3YXJkcyAtPiBcImZvcndhcmRzXCJcbiAgICAgICAgfCBgQmFja3dhcmRzIC0+IFwiYmFja3dhcmRzXCJcbiAgICAgICAgfCBgQm90aCAtPiBcImJvdGhcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1maWxsLW1vZGVcIiB+dmFsdWUpXG4gIGluXG4gIFsgU29tZSAoY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tbmFtZVwiIH52YWx1ZTpuYW1lKVxuICA7IFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBkdXJhdGlvbikpXG4gIDsgbSBkZWxheSB+ZjooZnVuIHMgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZGVsYXlcIiB+dmFsdWU6KHNwYW5fdG9fc3RyaW5nIHMpKVxuICA7IG0gaXRlcl9jb3VudCB+ZjooZnVuIGkgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKSlcbiAgOyBtIHRpbWluZ19mdW5jdGlvbiB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiB+dmFsdWUpXG4gIDsgZGlyZWN0aW9uXG4gIDsgZmlsbF9tb2RlXG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxudHlwZSB1c2VyX3NlbGVjdCA9XG4gIFsgYEFsbFxuICB8IGBBdXRvXG4gIHwgYE5vbmVcbiAgfCBgVGV4dFxuICBdXG5cbmxldCB1c2VyX3NlbGVjdF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgfCBgQXV0byAtPiBcImF1dG9cIlxuICB8IGBOb25lIC0+IFwibm9uZVwiXG4gIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbjs7XG5cbmxldCB1c2VyX3NlbGVjdCBzID1cbiAgbGV0IHZhbHVlID0gdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyBzIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidXNlci1zZWxlY3RcIiB+dmFsdWVcbjs7XG5cblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidG9fc3RyaW5nX2NzcyAtPiBvZl9zdHJpbmdfY3NzX2V4biAtPiB0b19zdHJpbmdfY3NzXCIgPVxuICAgICAgbGV0IHQgY3NzID1cbiAgICAgICAgbGV0IHMgPSB0b19zdHJpbmdfY3NzIGNzcyBpblxuICAgICAgICBsZXQgczIgPSB0b19zdHJpbmdfY3NzIChvZl9zdHJpbmdfY3NzX2V4biBzKSBpblxuICAgICAgICBwcmludF9lbmRsaW5lIHM7XG4gICAgICAgIHByaW50X2VuZGxpbmUgczJcbiAgICAgIGluXG4gICAgICB0IChmbGV4X2l0ZW0gfmdyb3c6MS4wICgpIEA+IG92ZXJmbG93IGBTY3JvbGwpO1xuICAgICAgdCAoZmxleF9jb250YWluZXIgfmlubGluZTp0cnVlIH5kaXJlY3Rpb246YENvbHVtbiAoKSBAPiBib3JkZXIgfnN0eWxlOmBEYXNoZWQgKCkpO1xuICAgICAgdCAoY29sb3IgKGBSR0JBIChDb2xvci5SR0JBLmNyZWF0ZSB+cjoxMDAgfmc6MTAwIH5iOjEwMCAoKSkpKTtcbiAgICAgIHRcbiAgICAgICAgKGNvbG9yXG4gICAgICAgICAgIChgSFNMQVxuICAgICAgICAgICAgICAoQ29sb3IuSFNMQS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgfmg6MTAwXG4gICAgICAgICAgICAgICAgIH5zOihQZXJjZW50Lm9mX211bHQgMC43NSlcbiAgICAgICAgICAgICAgICAgfmw6KFBlcmNlbnQub2ZfbXVsdCAwLjYwKVxuICAgICAgICAgICAgICAgICAoKSkpKTtcbiAgICAgIHQgKGNyZWF0ZSB+ZmllbGQ6XCJjb250ZW50XCIgfnZhbHVlOnt8XCI7XCJ8fSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ZmxleC13cmFwOiBub3dyYXA7Ym9yZGVyOiBkYXNoZWRcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogcmdiKDEwMCwxMDAsMTAwKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29sb3I6IGhzbCgxMDAsNzUlLDYwJSlcbiAgICBjb250ZW50OiBcIjtcIlxuICAgIGNvbnRlbnQ6IFwiO1wiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJncmFkaWVudHNcIiA9XG4gICAgICBsZXQgcCB4ID0gUGVyY2VudC5vZl9tdWx0IHggaW5cbiAgICAgIGxldCBjIHMgPSBgTmFtZSBzIGluXG4gICAgICBsZXQgdCBjc3MgPSBwcmludF9lbmRsaW5lICh0b19zdHJpbmdfY3NzIGNzcykgaW5cbiAgICAgIHRcbiAgICAgICAgKGJhY2tncm91bmRfaW1hZ2VcbiAgICAgICAgICAgKGBMaW5lYXJfZ3JhZGllbnRcbiAgICAgICAgICAgICAgeyBkaXJlY3Rpb24gPSBgRGVnIDkwXG4gICAgICAgICAgICAgIDsgc3RvcHMgPVxuICAgICAgICAgICAgICAgICAgWyBwIDAuLCBjIFwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuMiwgYyBcIiNmZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuNCwgYyBcInJlZFwiXG4gICAgICAgICAgICAgICAgICA7ICggcCAxLlxuICAgICAgICAgICAgICAgICAgICAsIGBSR0JBXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjUwIH5iOjMwIH5hOihQZXJjZW50Lm9mX211bHQgMC43NSkgKCkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCBibGFjayAwLjAwMDAwMCUsICNmZjAwMDAgMjAuMDAwMDAwJSwgcmVkIDQwLjAwMDAwMCUsIHJnYmEoMTAwLDUwLDMwLDAuNzUpIDEwMC4wMDAwMDAlKSB8fV07XG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgPSBbIHAgMC4sIGMgXCJibGFja1wiOyBwIDEuLCBjIFwicmVkXCIgXSB9KSk7XG4gICAgICBbJWV4cGVjdCB7fCBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoYmxhY2sgMC4wMDAwMDAlLCByZWQgMTAwLjAwMDAwMCUpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCB0b19qc19zdHJpbmcgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9TdHJpbmdcbmxldCB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRml4ZWQgZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9QcmVjaXNpb24gZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRXhwb25lbnRpYWxcbmxldCB0b19zdHJpbmcgdmFsdWUgPSB0b19qc19zdHJpbmcgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IHRvX2pzX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgPSB0b19qc19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG9wZW4gQ29yZSBpblxuICBsZXQgcHJpbnQgZiA9IHByaW50ZiBcIiVzXCIgKHRvX3N0cmluZyBmKSBpblxuICBwcmludCAxLjtcbiAgWyVleHBlY3Qge3wgMSB8fV07XG4gIHByaW50IEZsb2F0Lm5hbjtcbiAgWyVleHBlY3Qge3wgTmFOIHx9XTtcbiAgcHJpbnQgRmxvYXQuaW5maW5pdHk7XG4gIFslZXhwZWN0IHt8IEluZmluaXR5IHx9XTtcbiAgcHJpbnQgRmxvYXQubmVnX2luZmluaXR5O1xuICBbJWV4cGVjdCB7fCAtSW5maW5pdHkgfH1dO1xuICBwcmludCAwLjAwMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxZS04IHx9XTtcbiAgcHJpbnQgKC0xLik7XG4gIFslZXhwZWN0IHt8IC0xIHx9XTtcbiAgcHJpbnQgMS4wMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxLjAwMDAwMDEgfH1dXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5pbmNsdWRlIFVpX2VmZmVjdFxuXG4oKiBBbGwgdmlzaWJpbGl0eSBoYW5kbGVycyBzZWUgYWxsIGV2ZW50cywgc28gYSBzaW1wbGUgbGlzdCBpcyBlbm91Z2guICAqKVxubGV0IHZpc2liaWxpdHlfaGFuZGxlcnMgOiAodW5pdCAtPiB1bml0KSBsaXN0IHJlZiA9IHJlZiBbXVxuXG5tb2R1bGUgdHlwZSBWaXNpYmlsaXR5X2hhbmRsZXIgPSBzaWdcbiAgdmFsIGhhbmRsZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBEZWZpbmVfdmlzaWJpbGl0eSAoVkggOiBWaXNpYmlsaXR5X2hhbmRsZXIpID0gc3RydWN0XG4gIGxldCAoKSA9IHZpc2liaWxpdHlfaGFuZGxlcnMgOj0gVkguaGFuZGxlIDo6ICF2aXNpYmlsaXR5X2hhbmRsZXJzXG5lbmRcblxudHlwZSBfIHQgKz1cbiAgfCBWaWV3cG9ydF9jaGFuZ2VkXG4gIHwgU3RvcF9wcm9wYWdhdGlvblxuICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uXG4gIHwgUHJldmVudF9kZWZhdWx0XG5cbmxldCBzZXF1ZW5jZV9hc19zaWJsaW5nIGxlZnQgfnVubGVzc19zdG9wcGVkID1cbiAgbGV0IHJlYyBjb250YWluc19zdG9wID0gZnVuY3Rpb25cbiAgICB8IE1hbnkgZXMgLT4gTGlzdC5leGlzdHMgZXMgfmY6Y29udGFpbnNfc3RvcFxuICAgIHwgU3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBjb250YWluc19zdG9wIGxlZnQgdGhlbiBsZWZ0IGVsc2UgVWlfZWZmZWN0Lk1hbnkgWyBsZWZ0OyB1bmxlc3Nfc3RvcHBlZCAoKSBdXG47O1xuXG4oKiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZG9tIGV2ZW50IGhlcmUgc28gdGhhdFxuICAgbW92ZW1lbnQgYmV0d2VlbiBbVmRvbS5FZmZlY3QuRXhwZXJ0LmhhbmRsZV0gYW5kXG4gICBbVWlfY29uY3JldGUuRWZmZWN0LkV4cGVydC5oYW5kbGVdIGtlZXBzIHRoZSBvcmlnaW5hbFxuICAgZG9tIGV2ZW50IGFyb3VuZC4gKilcbmxldCBjdXJyZW50X2RvbV9ldmVudCA9IHJlZiBOb25lXG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6U3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgVmlld3BvcnRfY2hhbmdlZCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IExpc3QuaXRlciAhdmlzaWJpbGl0eV9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiAoKSkpXG47O1xuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OlN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFN0b3BfcHJvcGFnYXRpb24pKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBQcmV2ZW50X2RlZmF1bHQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tLnByZXZlbnREZWZhdWx0KVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuID0gRXhwZXJ0LmhhbmRsZVxuXG4gIGxldCBoYW5kbGUgZG9tX2V2ZW50IGV2ZW50ID1cbiAgICBsZXQgb2xkID0gIWN1cnJlbnRfZG9tX2V2ZW50IGluXG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gU29tZSAoZG9tX2V2ZW50IDo+IERvbV9odG1sLmVsZW1lbnQgRG9tLmV2ZW50IEpzLnQpO1xuICAgIEV4cGVydC5oYW5kbGUgZXZlbnQ7XG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gb2xkXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEpzX29mX29jYW1sXG5cbm1vZHVsZSB0eXBlIFMgPSBIb29rc19pbnRmLlNcbm1vZHVsZSB0eXBlIElucHV0ID0gSG9va3NfaW50Zi5JbnB1dFxuXG5sZXQgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBpZCA9IERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgaWRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGYgPVxuICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSAoSnMud3JhcF9jYWxsYmFjayBmKVxuOztcblxubW9kdWxlIEV4dHJhID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHsgdHlwZV9pZDsgdmFsdWUgfSkgPSBUeXBlX2VxdWFsLklkLnRvX3NleHAgdHlwZV9pZCB2YWx1ZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgVCA6XG4gICAgICB7IGlucHV0IDogJ2lucHV0XG4gICAgICA7IGlucHV0X2lkIDogJ2lucHV0IFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBjb21iaW5lX2lucHV0cyA6ICdpbnB1dCAtPiAnaW5wdXQgLT4gJ2lucHV0XG4gICAgICA7IGluaXQgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IHVwZGF0ZSA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyBkZXN0cm95IDpcbiAgICAgICAgICAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+IHVuaXRcbiAgICAgIDsgaWQgOiAoJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGUpIENvcmUuVHlwZV9lcXVhbC5JZC50XG4gICAgICB9XG4gICAgICAtPiB0XG5cbmxldCBnZW5lcmljX2hvb2sgPSBsYXp5IEpzLlVuc2FmZS4oZ2V0IGdsb2JhbCAoSnMuc3RyaW5nIFwiR2VuZXJpY0hvb2tcIikpXG5cbmxldCBtYWtlX2hvb2sgfmNvbWJpbmVfaW5wdXRzIH5pbml0IH5leHRyYTooaW5wdXQsIGlucHV0X2lkKSB+dXBkYXRlIH5kZXN0cm95IH5pZCA9XG4gIFQgeyBpbml0OyBjb21iaW5lX2lucHV0czsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkIH1cbjs7XG5cbmxldCBwYWNrIChUIHsgaW5pdDsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkOyBfIH0pID1cbiAgbGV0IHdyYXAgYSA9IGEgfD4gSnMud3JhcF9jYWxsYmFjayB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBpbml0ID0gd3JhcCAoaW5pdCBpbnB1dCkgaW5cbiAgbGV0IHVwZGF0ZSA9IHdyYXAgKHVwZGF0ZSBpbnB1dCkgaW5cbiAgbGV0IGRlc3Ryb3kgPSB3cmFwIGRlc3Ryb3kgaW5cbiAgbGV0IGdlbmVyaWNfaG9vayA9IExhenkuZm9yY2UgZ2VuZXJpY19ob29rIGluXG4gIGxldCBleHRyYSA9IEV4dHJhLlQgeyB0eXBlX2lkID0gaW5wdXRfaWQ7IHZhbHVlID0gaW5wdXQgfSBpblxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICBnZW5lcmljX2hvb2tcbiAgICBbfCBpbml0OyB1cGRhdGU7IGRlc3Ryb3k7IGlkIHw+IEpzLlVuc2FmZS5pbmplY3Q7IGV4dHJhIHw+IEpzLlVuc2FmZS5pbmplY3QgfF1cbjs7XG5cbmxldCBjb21iaW5lIChUIGxlZnQpIChUIHJpZ2h0KSA9XG4gIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzIGxlZnQuaW5wdXRfaWQgcmlnaHQuaW5wdXRfaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBlcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiaG9va3MgZG8gbm90IGhhdmUgdGhlIHNhbWUgdHlwZSwgc28gdGhleSBjYW5ub3QgYmUgY29tYmluZWQ7IHRha2luZyB0aGUgc2Vjb25kIFxcXG4gICAgICAgICBvZiB0aGUgdHdvXCJdO1xuICAgIFQgcmlnaHRcbiAgfCBTb21lIFQgLT4gVCB7IHJpZ2h0IHdpdGggaW5wdXQgPSByaWdodC5jb21iaW5lX2lucHV0cyBsZWZ0LmlucHV0IHJpZ2h0LmlucHV0IH1cbjs7XG5cbm1vZHVsZSBNYWtlIChTIDogUykgPSBzdHJ1Y3RcbiAgbGV0IGlucHV0X2FuZF9zdGF0ZV9pZCA9XG4gICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiAoZnVuIChpbnB1dCwgX2FuaW1hdGlvbl9pZCwgc3RhdGUpIC0+XG4gICAgICBbJXNleHBfb2Y6IFMuSW5wdXQudCAqIG9wYXF1ZV0gKGlucHV0LCBzdGF0ZSkpXG4gIDs7XG5cbiAgbGV0IGlucHV0X2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiBTLklucHV0LnNleHBfb2ZfdFxuXG4gIGxldCBpbml0IGlucHV0IGVsZW1lbnQgPVxuICAgIGxldCBzdGF0ZSA9IFMuaW5pdCBpbnB1dCBlbGVtZW50IGluXG4gICAgbGV0IGFuaW1hdGlvbl9pZCA9XG4gICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoZnVuIF8gLT4gUy5vbl9tb3VudCBpbnB1dCBzdGF0ZSBlbGVtZW50KVxuICAgIGluXG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgdXBkYXRlIGlucHV0IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIFMudXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDppbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IGRlc3Ryb3kgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBhbmltYXRpb25faWQ7XG4gICAgUy5kZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBpbnB1dCA9XG4gICAgbWFrZV9ob29rXG4gICAgICB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZClcbiAgICAgIH5jb21iaW5lX2lucHV0czpTLklucHV0LmNvbWJpbmVcbiAgICAgIH5pZDppbnB1dF9hbmRfc3RhdGVfaWRcbiAgICAgIH5pbml0XG4gICAgICB+dXBkYXRlXG4gICAgICB+ZGVzdHJveVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2lkID0gaW5wdXRfaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBFeHRyYSA9IEV4dHJhXG5lbmRcbiIsIm9wZW4hIEpzX29mX29jYW1sXG5vcGVuISBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIG1hcCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBzZXQgOiAnYSAtPiAnYiAtPiB1bml0IG1ldGhcbiAgbWV0aG9kIGdldCA6ICdhIC0+ICdiIE9wdGRlZi50IG1ldGhcbiAgbWV0aG9kIGRlbGV0ZSA6ICdhIC0+IHVuaXQgbWV0aFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIG1hcCBKcy50XG5cbmxldCBtYXAgOiB1bml0IC0+ICgnYSwgJ2IpIG1hcCBKcy50IEpzLmNvbnN0ciA9IGZ1biAoKSAtPiBVbnNhZmUuZ2xvYmFsIyMuX01hcFxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IG1hcCA9IG1hcCAoKSBpblxuICBuZXclanMgbWFwXG47O1xuXG5sZXQgc2V0IHQgYSBiID0gdCMjc2V0IGEgYlxubGV0IGdldCB0IGEgPSBKcy5PcHRkZWYudG9fb3B0aW9uICh0IyNnZXQgYSlcbmxldCBkZWxldGUgdCBhID0gdCMjZGVsZXRlIGFcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgSnNfb2JqZWN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEpzLlVuc2FmZS5hbnlcblxuICBsZXQgZW1wdHlfb2JqICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG4gIGxldCBzZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWUgPSBKcy5VbnNhZmUuc2V0IHQgKEpzLnN0cmluZyBuYW1lKSB2YWx1ZVxuICBsZXQgZ2V0X3Byb3BfYXNjaWkgdCBuYW1lID0gSnMuVW5zYWZlLmdldCB0IChKcy5zdHJpbmcgbmFtZSlcbiAgbGV0IGhhc19wcm9wZXJ0eSB0IG5hbWUgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmdldCB0IChKcy5zdHJpbmcgbmFtZSkpXG4gIGxldCBpc191bmRlZmluZWQgYSA9IG5vdCAoSnMuT3B0ZGVmLnRlc3QgYSlcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnNfb2JqZWN0LnRcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IEpzX29iamVjdC5lbXB0eV9vYmogKClcblxuICBsZXQgc2V0X3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+IEpzX29iamVjdC5zZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWVcbiAgOztcblxuICBsZXQgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbCA9IEpzX29iamVjdC5oYXNfcHJvcGVydHlcblxuICBsZXQgaGFzX2F0dHJpYnV0ZSB0IG5hbWUgPVxuICAgIEpzX29iamVjdC5oYXNfcHJvcGVydHkgdCBcImF0dHJpYnV0ZXNcIlxuICAgICYmIEpzX29iamVjdC5oYXNfcHJvcGVydHkgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lXG4gIDs7XG5cbiAgbGV0IHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT5cbiAgICAgIGlmIEpzX29iamVjdC5pc191bmRlZmluZWQgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKVxuICAgICAgdGhlbiBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIiAoSnNfb2JqZWN0LmVtcHR5X29iaiAoKSk7XG4gICAgICBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lIHZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSB2aXJ0dWFsX2RvbV9ub2RlXG50eXBlIHZpcnR1YWxfZG9tX3BhdGNoXG5cbm1vZHVsZSBWaXJ0dWFsX2RvbSA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIHZpcnR1YWxfZG9tID0gb2JqZWN0XG4gICAgbWV0aG9kIF9WTm9kZSA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnRcbiAgICAgICAtPiBBdHRycy50XG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpXG4gICAgICAgIEpzLmNvbnN0clxuICAgICAgICBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX1ZUZXh0IDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpIEpzLmNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIGRpZmYgOlxuICAgICAgdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBwYXRjaCA6XG4gICAgICBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHN2ZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnRcbiAgICAgICAtPiBBdHRycy50XG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpXG4gICAgICAgIEpzLmNvbnN0clxuICAgICAgICBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGxldCB2aXJ0dWFsX2RvbSA6IHZpcnR1YWxfZG9tIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsICMjLiBWaXJ0dWFsRG9tXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgb3BlbiBWaXJ0dWFsX2RvbVxuXG4gIHR5cGUgdCA9IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuXG4gIGxldCB0b19kb20gOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50ID1cbiAgICBmdW4gdm5vZGUgLT4gdmlydHVhbF9kb20jI2NyZWF0ZUVsZW1lbnQgdm5vZGVcbiAgOztcblxuICBsZXQgbm9kZVxuICAgIDogIHN0cmluZyAtPiBBdHRycy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHN0cmluZyBvcHRpb25cbiAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuICAgID1cbiAgICBmdW4gdGFnIGF0dHJzIGNoaWxkcmVuIGtleSAtPlxuICAgICAgbGV0IHRhZyA9IEpzLnN0cmluZyB0YWcgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnNfb2Zfb2NhbWwuSnMuc3RyaW5nIGtleSlcbiAgICAgIGluXG4gICAgICBsZXQgdm5vZGUgPSB2aXJ0dWFsX2RvbSMjLl9WTm9kZSBpblxuICAgICAgbmV3JWpzIHZub2RlIHRhZyBhdHRycyBjaGlsZHJlbiBrZXlcbiAgOztcblxuICBsZXQgc3ZnXG4gICAgOiAgc3RyaW5nIC0+IEF0dHJzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50XG4gICAgPVxuICAgIGZ1biB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5IC0+XG4gICAgICBsZXQgdGFnID0gSnMuc3RyaW5nIHRhZyBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgICAgICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKcy5zdHJpbmcga2V5KVxuICAgICAgaW5cbiAgICAgIGxldCB2c3ZnID0gdmlydHVhbF9kb20jIy5zdmcgaW5cbiAgICAgIG5ldyVqcyB2c3ZnIHRhZyBhdHRycyBjaGlsZHJlbiBrZXlcbiAgOztcblxuICBsZXQgdGV4dCBzID1cbiAgICBsZXQgdnRleHQgPSB2aXJ0dWFsX2RvbSMjLl9WVGV4dCBpblxuICAgIG5ldyVqcyB2dGV4dCAoSnMuc3RyaW5nIHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIFBhdGNoID0gc3RydWN0XG4gIG9wZW4gVmlydHVhbF9kb21cblxuICB0eXBlIHQgPSB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50XG5cbiAgbGV0IGRpZmYgOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgPVxuICAgIGZ1biBhIGIgLT4gdmlydHVhbF9kb20jI2RpZmYgYSBiXG4gIDs7XG5cbiAgbGV0IHBhdGNoIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50ID1cbiAgICBmdW4gZWxlbWVudCB2bm9kZSAtPiB2aXJ0dWFsX2RvbSMjcGF0Y2ggZWxlbWVudCB2bm9kZVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID0gZGlmZiBwcmV2aW91cyBjdXJyZW50XG4gIGxldCBhcHBseSA9IHBhdGNoXG5cbiAgbGV0IGlzX2VtcHR5IDogdCAtPiBib29sID1cbiAgICBsZXQgZiA9XG4gICAgICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAgICAgIHtqc3xcbiAgICAgICAgKGZ1bmN0aW9uIChwYXRjaCkge1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwYXRjaCkge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2EnKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgIHxqc31cbiAgICBpblxuICAgIGZ1biAodCA6IHQpIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCBmIFt8IEpzLlVuc2FmZS5pbmplY3QgdCB8XSB8PiBKcy50b19ib29sXG4gIDs7XG5lbmRcblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIFsncywgJ2VsZW1lbnRdIHdpZGdldCA9IG9iamVjdFxuICAgIGNvbnN0cmFpbnQgJ2VsZW1lbnQgPSAjRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgbWV0aG9kIHR5cGVfIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICgqIHZpcnR1YWwtZG9tIGNvbnNpZGVycyB0d28gd2lkZ2V0cyBvZiBiZWluZyBvZiB0aGUgc2FtZSBcImtpbmRcIiBpZiBlaXRoZXJcbiAgICAgICBvZiB0aGUgZm9sbG93aW5nIGhvbGRzOlxuXG4gICAgICAgMS4gVGhleSBib3RoIGhhdmUgYSBcIm5hbWVcIiBhdHRyaWJ1dGUgYW5kIHRoZWlyIFwiaWRcIiBmaWVsZHMgYXJlIGVxdWFsLlxuICAgICAgIChJIHRoaW5rIHRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdmlydHVhbC1kb20gYW5kIGhhdmUgZmllbGQgYW4gaXNzdWVcbiAgICAgICBvbiBnaXRodWI6IFtodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2lzc3Vlcy8zODBdKVxuXG4gICAgICAgMi4gVGhlaXIgW2luaXRdIG1ldGhvZHMgYXJlIFwiPT09XCIgZXF1YWwuIFRoaXMgaXMgdHJ1ZSB3aGVuIHVzaW5nIHZpcnR1YWwtZG9tXG4gICAgICAgd2lkZ2V0cyBpbiB0aGUgdXN1YWwgc3R5bGUgaW4gSmF2YXNjcmlwdCwgc2luY2UgdGhlIFtpbml0XSBtZXRob2Qgd2lsbCBiZSBkZWZpbmVkXG4gICAgICAgb24gYSBwcm90b3R5cGUsIGJ1dCBpcyBub3QgdHJ1ZSBpbiB0aGlzIGJpbmRpbmcgYXMgaXQgaXMgcmVkZWZpbmVkIGZvciBlYWNoXG4gICAgICAgY2FsbCB0byBbd2lkZ2V0XS5cblxuICAgICAgIFNvLCB3ZSBnbyB3aXRoIG9wdGlvbiAxIGFuZCBtdXN0IGhhdmUgYSB0cml2aWFsIGZpZWxkIGNhbGxlZCBbbmFtZV0uXG4gICAgKilcbiAgICBtZXRob2QgbmFtZSA6IHVuaXQgSnMud3JpdGVvbmx5X3Byb3BcbiAgICBtZXRob2QgaWQgOiAoJ3MgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhdGUgOiAncyBKcy5wcm9wXG4gICAgbWV0aG9kIHZkb21Gb3JUZXN0aW5nIDogTm9kZS50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgIG1ldGhvZCBpbmZvIDogU2V4cC50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgIG1ldGhvZCBkZXN0cm95IDogKCdlbGVtZW50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXBkYXRlIDpcbiAgICAgICgoJ290aGVyX3N0YXRlLCAnb3RoZXJfZWxlbWVudCkgd2lkZ2V0IEpzLnQgLT4gJ2VsZW1lbnQgLT4gJ2VsZW1lbnQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2QgaW5pdCA6ICh1bml0IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICBlbmRcblxuICAoKiBXZSBtb2RlbCBKUyBsZXZlbCBvYmplY3RzIGhlcmUgc28gdGhlcmUgaXMgYSBsb3Qgb2YgdGhyb3dpbmcgYXdheSBvZiB0eXBlXG4gICAgIGluZm9ybWF0aW9uLiAgV2UgY291bGQgcG9zc2libHkgdHJ5IHRvIHJlZGlzY292ZXIgbW9yZSBvZiBpdC4gIE9yIG1heWJlIHdlXG4gICAgIHNob3VsZCBzZWUgaWYgd2UgY2FuIGdldCByaWQgV2lkZ2V0IGNvbXBsZXRlbHkuXG4gICAgIHRoZSB1bml0IHR5cGUgcGFyYW1ldGVycyBoZXJlIGFyZSBub3QgYWN0dWFsbHkgdW5pdCwgYnV0IHBhcnQgb2ZcbiAgICAgdGhlIHR5cGUgaW5mbyB3ZSBoYXZlIHRocm93biBhd2F5IGludG8gb3VyIGRhbmNlXG4gICAgIHdpdGggSlMgKilcbiAgdHlwZSB0ID0gTm9kZS50XG5cbiAgKCogaGVyZSBpcyBob3cgd2UgdGhyb3cgYXdheSB0eXBlIGluZm9ybWF0aW9uLiAgT3VyIGdvb2Qgb2xkIGZyaWVuZCBPYmoubWFnaWMsXG4gICAgIGJ1dCBjb25zdHJhaW5lZCBhIGxpdHRsZSBiaXQgKilcbiAgbGV0IG5vZGVfb2Zfd2lkZ2V0IDogKF8sIF8pIHdpZGdldCBKcy50IC0+IE5vZGUudCA9IFN0ZGxpYi5PYmoubWFnaWNcblxuICBtb2R1bGUgU3RhdGVfa2VlcGVyID0gc3RydWN0XG4gICAgdHlwZSBib3ggPSBUIDogKCdhICogXykgVHlwZV9lcXVhbC5JZC50ICogJ2EgLT4gYm94XG5cbiAgICBsZXQgdCA6IChKcy5VbnNhZmUuYW55LCBib3gpIEpzX21hcC50ID0gSnNfbWFwLmNyZWF0ZSAoKVxuICAgIGxldCBzZXQgfmlkIGVsZW1lbnQgc3RhdGUgPSBKc19tYXAuc2V0IHQgKEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCkgKFQgKGlkLCBzdGF0ZSkpXG5cbiAgICBsZXQgZ2V0IDogdHlwZSBhIGIuIGlkOihhICogYikgVHlwZV9lcXVhbC5JZC50IC0+IF8gLT4gYSA9XG4gICAgICBmdW4gfmlkIGVsZW1lbnQgLT5cbiAgICAgIGxldCBlbGVtZW50ID0gSnMuVW5zYWZlLmluamVjdCBlbGVtZW50IGluXG4gICAgICBtYXRjaCBKc19tYXAuZ2V0IHQgZWxlbWVudCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGlkX3NleHAgPSBUeXBlX2VxdWFsLklkLnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIikgaWQgaW5cbiAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IGVsZW1lbnQgc3RhdGUgbm90IGZvdW5kXCIgKGlkX3NleHAgOiBTZXhwLnQpXVxuICAgICAgfCBTb21lIChUIChmX2lkLCBzdGF0ZSkpIC0+XG4gICAgICAgIGxldCBUID0gVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGlkIGZfaWQgaW5cbiAgICAgICAgc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGRlbGV0ZSBlbGVtZW50ID0gSnNfbWFwLmRlbGV0ZSB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgKHR5cGUgcylcbiAgICAgICAgPyh2ZG9tX2Zvcl90ZXN0aW5nIDogTm9kZS50IExhenkudCBvcHRpb24pXG4gICAgICAgID8oZGVzdHJveSA6IHMgLT4gJ2VsZW1lbnQgLT4gdW5pdCA9IGZ1biBfIF8gLT4gKCkpXG4gICAgICAgID8odXBkYXRlIDogcyAtPiAnZWxlbWVudCAtPiBzICogJ2VsZW1lbnQgPSBmdW4gcyBlbHQgLT4gcywgZWx0KVxuICAgICAgICB+KGlkIDogKHMgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICB+KGluaXQgOiB1bml0IC0+IHMgKiAnZWxlbWVudClcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9iaiA6IChzLCBfKSB3aWRnZXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIG9iaiMjLnR5cGVfIDo9IEpzLnN0cmluZyBcIldpZGdldFwiO1xuICAgIG9iaiMjLm5hbWUgOj0gKCk7XG4gICAgb2JqIyMuaWQgOj0gaWQ7XG4gICAgb2JqIyMudmRvbUZvclRlc3RpbmcgOj0gdmRvbV9mb3JfdGVzdGluZztcbiAgICBvYmojIy5pbml0XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgczAsIGRvbV9ub2RlID0gaW5pdCAoKSBpblxuICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUgczA7XG4gICAgICBkb21fbm9kZSk7XG4gICAgb2JqIyMudXBkYXRlXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZXYgZG9tX25vZGUgLT5cbiAgICAgICgqIFRoZSBbdXBkYXRlXSBtZXRob2Qgb2YgW29ial0gaXMgb25seSBjYWxsZWQgYnkgdmlydHVhbC1kb20gYWZ0ZXIgaXQgaGFzIGNoZWNrZWRcbiAgICAgICAgIHRoYXQgdGhlIFtpZF1zIG9mIFtwcmV2XSBhbmQgW29ial0gYXJlIFwiPT09XCIgZXF1YWwuIFRodXMgW3NhbWVfd2l0bmVzc19leG5dIHdpbGxcbiAgICAgICAgIG5ldmVyIHJhaXNlLiAqKVxuICAgICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIHByZXYjIy5pZCBpZCB3aXRoXG4gICAgICB8IFR5cGVfZXF1YWwuVCAtPlxuICAgICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICAgIGxldCBzdGF0ZScsIGRvbV9ub2RlJyA9IHVwZGF0ZSBwcmV2X3N0YXRlIGRvbV9ub2RlIGluXG4gICAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGU7XG4gICAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlJyBzdGF0ZSc7XG4gICAgICAgIGRvbV9ub2RlJyk7XG4gICAgb2JqIyMuZGVzdHJveVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBkb21fbm9kZSAtPlxuICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgZGVzdHJveSBwcmV2X3N0YXRlIGRvbV9ub2RlO1xuICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZSk7XG4gICAgbm9kZV9vZl93aWRnZXQgb2JqXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBWZG9tX3JhdyA9IFJhd1xuXG5sZXQgKCkgPVxuICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG47O1xuXG4oKiogVGhpcyBoYXMgMyBraW5kcyBvZiBjb25zdHJ1Y3RvcnMuXG4gICAge3ZcbiAgICAgIC0gY29uc3RydWN0b3JzIGZvciBwcm9wZXJ0aWVzIC8gYXR0cmlidXRlcyBmb3Igd2hpY2ggd2VcbiAgICAgICAgaGF2ZSB3cml0dGVuIGZpcnN0IGNsYXNzIG9jYW1sIHJlcHJlc2VudGF0aW9ucyAoc28gZmFyIG9ubHkgU3R5bGUsXG4gICAgICAgIENsYXNzLCBhbmQgSGFuZGxlcilcblxuICAgICAgLSBUaG9zZSB3aGljaCB3ZSBpbW1lZGlhdGVseSBjb252ZXJ0IGludG8gSnMgY2FsbGVkIFJhdywgd2hpY2hcbiAgICAgICAgaW4gdHVybiBoYXMgdHdvIGNhc2VzOlxuICAgICAgICAtIFByb3BlcnR5IGZvciBwcm9wZXJ0aWVzIG9uIHRoZSBET01cbiAgICAgICAgLSBBdHRyaWJ1dGUgZm9yIGF0dHJpYnV0ZXMgb24gdGhlIERPTVxuXG4gICAgICAtIEhvb2tzLCB3aGljaCByZWdpc3RlciBjYWxsYmFja3Mgb24gcHJvcGVydHkgYWRkaXRpb24gYW5kIHJlbW92YWwuXG4gICAgdn1cblxuICAgIEdlbmVyYWxseSBzcGVha2luZyBvbmUgc2hvdWxkIGF2b2lkIGNyZWF0aW5nIGEgcHJvcGVydHkgb3IgYXR0cmlidXRlXG4gICAgZm9yIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZSBhIGZpcnN0IGNsYXNzIHJlcHJlc2VudGF0aW9uLlxuKilcblxubW9kdWxlIEV2ZW50X2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyBoYW5kbGVyIDogKCNEb21faHRtbC5ldmVudCBhcyAnYSkgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50XG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBjb21iaW5lXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IGx0aWQ7IGhhbmRsZXIgPSBsaGFuZGxlciB9KVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBydGlkOyBoYW5kbGVyID0gcmhhbmRsZXIgfSBhcyByaWdodClcbiAgICA9XG4gICAgKCogSWYgdGhleSBhcmUgbm90IHRoZSBzYW1lIHdpdG5lc3MsIHRoZW4gaXQgaXMgYSBidWcgaW4gdmlydHVhbF9kb20sIHNpbmNlXG4gICAgICAgd2UgZG8gbm90IGV4cG9zZSBbb25dIGFueW1vcmUgd2hpY2ggbWVhbnMgdGhpcyBsaWJyYXJ5IGNhbiBkZXRlcm1pbmVkIHRoZVxuICAgICAgIFtUeXBlX2VxdWFsLklkXSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZXZlbnQuIHZpcnR1YWxfZG9tIG1haW50YWlucyB0aGVcbiAgICAgICBpbnZhcmlhbnQgdGhhdCBhbnkgdHdvIGV2ZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUgd2lsbCBwcm9kdWNlIGhhbmRsZXJzXG4gICAgICAgdGhhdCBoYXZlIHRoZSBzYW1lIFtUeXBlX2VxdWFsLklkXS4gKilcbiAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsdGlkIHJ0aWQgd2l0aFxuICAgIHwgU29tZSBUIC0+XG4gICAgICBUXG4gICAgICAgIHsgdHlwZV9pZCA9IGx0aWRcbiAgICAgICAgOyBoYW5kbGVyID1cbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgIEVmZmVjdC5zZXF1ZW5jZV9hc19zaWJsaW5nIChsaGFuZGxlciB2YWx1ZSkgfnVubGVzc19zdG9wcGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgcmhhbmRsZXIgdmFsdWUpKVxuICAgICAgICB9XG4gICAgfCBOb25lIC0+XG4gICAgICBlcHJpbnRfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJVRyEgIFR5cGUtaWRzIGZvciBldmVudCBoYW5kbGVycyBkaWZmZXJcIlxuICAgICAgICAgICAgKGx0aWQgOiBfIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgICAgIChydGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXTtcbiAgICAgIHJpZ2h0XG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgfCBQcm9wZXJ0eSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBBdHRyaWJ1dGUgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgSGFuZGxlciBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhhbmRsZXIgOiBFdmVudF9oYW5kbGVyLnRcbiAgICAgIH1cbiAgfCBIb29rIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaG9vayA6IEhvb2tzLnRcbiAgICAgIH1cbiAgfCBTdHlsZSBvZiBDc3NfZ2VuLnRcbiAgfCBDbGFzcyBvZiBzdHJpbmcgbGlzdFxuICB8IE1hbnkgb2YgdCBsaXN0XG4gIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyBvZlxuICAgICAgdCBsaXN0ICogKENzc19nZW4udCAtPiBDc3NfZ2VuLnQpICogKHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0KVxuICB8IE1hbnlfd2l0aG91dF9tZXJnZSBvZiB0IGxpc3RcblxubGV0IGNyZWF0ZSBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdCBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlXG4gICAgOyBuYW1lXG4gICAgOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKERvbV9mbG9hdC50b19qc19zdHJpbmcgdmFsdWUpXG4gICAgfVxuOztcblxubGV0IHByb3BlcnR5IG5hbWUgdmFsdWUgPSBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlIH1cblxubGV0IHN0cmluZ19wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgYm9vbF9wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuYm9vbCB2YWx1ZSkgfVxuOztcblxubGV0IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZnVuY3Rpb25cbiAgfCBBdHRyaWJ1dGUgYXR0cmlidXRlIC0+IEF0dHJpYnV0ZSB7IGF0dHJpYnV0ZSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgUHJvcGVydHkgcHJvcGVydHkgLT4gUHJvcGVydHkgeyBwcm9wZXJ0eSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY3JlYXRlX2hvb2sgbmFtZSBob29rID0gSG9vayB7IG5hbWU7IGhvb2sgfVxubGV0IG1hbnkgYXR0cnMgPSBNYW55IGF0dHJzXG5sZXQgbWFueV93aXRob3V0X21lcmdlIGF0dHJzID0gTWFueV93aXRob3V0X21lcmdlIGF0dHJzXG5sZXQgZW1wdHkgPSBNYW55IFtdXG5sZXQgY29tYmluZSBsZWZ0IHJpZ2h0ID0gTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbmxldCAoIEAgKSA9IGNvbWJpbmVcblxubW9kdWxlIFVubWVyZ2VkX3dhcm5pbmdfbW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTm9fd2FybmluZ3NcbiAgICB8IEFsbF93YXJuaW5nc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBvZiBpbnRcblxuICBsZXQgd2FybmluZ19jb3VudCA9IHJlZiAwXG4gIGxldCBjdXJyZW50ID0gcmVmIChTdG9wX2FmdGVyX3F1b3RhIDEwMClcblxuICBsZXQgd2Fybl9zIHMgPVxuICAgIGluY3Igd2FybmluZ19jb3VudDtcbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb193YXJuaW5ncyAtPiAoKVxuICAgIHwgQWxsX3dhcm5pbmdzIC0+IGVwcmludF9zIHNcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgcXVvdGEgLT5cbiAgICAgIGxldCB3YXJuaW5nX2NvdW50ID0gIXdhcm5pbmdfY291bnQgaW5cbiAgICAgIGlmIHdhcm5pbmdfY291bnQgPD0gcXVvdGFcbiAgICAgIHRoZW4gKFxuICAgICAgICBlcHJpbnRfcyBzO1xuICAgICAgICBpZiB3YXJuaW5nX2NvdW50ID0gcXVvdGFcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVwcmludF9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJXQVJOSU5HOiByZWFjaGVkIHdhcm5pbmcgbWVzc2FnZSBxdW90YTsgbm8gbW9yZSBtZXNzYWdlcyB3aWxsIGJlIHByaW50ZWRcIlxuICAgICAgICAgICAgICAgIChxdW90YSA6IGludCldKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCByZXNldF93YXJuaW5nX2NvdW50ICgpID0gd2FybmluZ19jb3VudCA6PSAwXG4gIGVuZFxuZW5kXG5cbnR5cGUgbWVyZ2UgPVxuICB7IHN0eWxlcyA6IENzc19nZW4udFxuICA7IGNsYXNzZXMgOiBzdHJpbmcgbGlzdFxuICA7IGhhbmRsZXJzIDogRXZlbnRfaGFuZGxlci50IE1hcC5NKFN0cmluZykudFxuICA7IGhvb2tzIDogSG9va3MudCBNYXAuTShTdHJpbmcpLnRcbiAgfVxuXG5sZXQgY29tYmluaW5nX21hcF9hZGQgbWFwIGtleSB2YWx1ZSB+Y29tYmluZSA9XG4gIE1hcC51cGRhdGUgbWFwIGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IFNvbWUgZXhpc3RpbmdfdmFsdWUgLT4gY29tYmluZSB+a2V5IGV4aXN0aW5nX3ZhbHVlIHZhbHVlXG4gICAgfCBOb25lIC0+IHZhbHVlKVxuOztcblxubGV0IGVtcHR5X21lcmdlID1cbiAgeyBzdHlsZXMgPSBDc3NfZ2VuLmVtcHR5XG4gIDsgY2xhc3NlcyA9IFtdXG4gIDsgaGFuZGxlcnMgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIDsgaG9va3MgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIH1cbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIGxldCBhdHRycyA9IFsgYXR0ciBdIGluXG4gICgqIFdoZW4gaW5wdXQgZWxlbWVudHMgaGF2ZSB0aGVpciB2YWx1ZSBzZXQgdG8gd2hhdCBpdCBhbHJlYWR5IGlzXG4gICAgIHRoZSBjdXJzb3IgZ2V0cyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZCBldmVuIHdoZW4gdGhlIHVzZXJcbiAgICAgaXMgZWRpdGluZyBpbiB0aGUgbWlkZGxlLiBTb2Z0U2V0SG9vayAoZnJvbSAuL3NvZnQtc2V0LWhvb2suanMpXG4gICAgIGNvbXBhcmVzIGJlZm9yZSBzZXR0aW5nLCBhdm9pZGluZyB0aGUgcHJvYmxlbSBqdXN0IGxpa2UgaW5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9pbmRleC5qcyNMNDMtTDUxXG5cbiAgICAgbm90ZSB0aGF0IEVsbSdzIHZpcnR1YWwtZG9tIGluY2x1ZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhpcyBzb1xuICAgICBpZiB3ZSBzd2l0Y2ggdG8gdGhhdCB0aGUgd29ya2Fyb3VuZCBoZXJlIHdpbGwgYmUgdW5uZWNlc3NhcnkuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9lbG0tbGFuZy92aXJ0dWFsLWRvbS9ibG9iLzE3YjMwZmI3ZGU0ODY3MjU2NWQ2MjI3ZDMzYzAxNzZmMDc1Nzg2ZGIvc3JjL05hdGl2ZS9WaXJ0dWFsRG9tLmpzI0w0MzQtTDQzOVxuICAqKVxuICBsZXQgYXR0cnNfb2JqIDogVmRvbV9yYXcuQXR0cnMudCA9IFZkb21fcmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAoKiBbdGFrZV9zZWNvbmRfKl0gaXMgdGhlIHRyaXZpYWwgbWVyZ2UgZnVuY3Rpb24gKGkuZS4gbm8gbWVyZ2UgYXQgYWxsKTsgaXRcbiAgICAgdGFrZXMgdHdvIGF0dHJpYnV0ZXMgb2YgdGhlIHNhbWUga2luZCwgaWdub3JlcyBhIGZpcnN0LCBhbmQgZW1pdHNcbiAgICAgYSB3YXJuaW5nIGlmIFt3YXJuX2Fib3V0X3VubWVyZ2VkX2F0dHJpYnV0ZXNdIGlzIGVuYWJsZWQuICopXG4gIGxldCB0YWtlX3NlY29uZF9zdHlsZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgc3R5bGVzXCIgKGZpcnN0IDogQ3NzX2dlbi50KSAoc2Vjb25kIDogQ3NzX2dlbi50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9jbGFzc2VzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGZpcnN0ID0gTGlzdC5zb3J0IH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXSBmaXJzdCBpblxuICAgICAgbGV0IHNlY29uZCA9IExpc3Quc29ydCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ10gc2Vjb25kIGluXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBjbGFzc2VzXCIgKGZpcnN0IDogc3RyaW5nIGxpc3QpIChzZWNvbmQgOiBzdHJpbmcgbGlzdCldKTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hhbmRsZXIgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgaGFuZGxlcnNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfaG9vayB+a2V5Om5hbWUgX2ZpcnN0IHNlY29uZCA9XG4gICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fcyBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhvb2tzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgKCogV2UgbWVyZ2UgYXR0cmlidXRlcyB3aGVuIHRoZXkgYXJlIHdyaXR0ZW4gdG8gdGhlIHJhdyBhdHRyaWJ1dGUgb2JqZWN0LFxuICAgICByYXRoZXIgdGhhbiB3aGVuIHRoZSB1c2VyLWZhY2luZyBtZXJnZSBmdW5jdGlvbnMgKFttYW55XSwgW2NvbWJpbmVdLCBhbmRcbiAgICAgW0BdKSBhcmUgY2FsbGVkLiBUaGlzIHN0cmF0ZWd5IGlzIGJldHRlciBpbiBib3RoIHNwZWVkIGFuZCBtZW1vcnkgdXNhZ2UsXG4gICAgIHNpbmNlIGl0IG1lYW5zIHdlIGRvIG5vdCBuZWVkIHRvIGNvbmNhdGVuYXRlIHRoZSBsaXN0IG9mIFwidW5tZXJnZWFibGVcIlxuICAgICBhdHRyaWJ1dGVzIChQcm9wZXJ0eSBhbmQgQXR0cmlidXRlKTsgaW5zdGVhZCwgd2UgY2FuIGl0ZXJhdGUgdGhyb3VnaCB0aGVcbiAgICAgdHJlZSBvZiBhdHRyaWJ1dGVzIGFuZCBlYWdlcmx5IHdyaXRlIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgdG8gdGhlXG4gICAgIGF0dHJpYnV0ZSBvYmplY3QgYXMgd2UgZmluZCB0aGVtLiBJZiB0d28gdW5tZXJnZWFibGUgYXR0cmlidXRlcyBoYXZlIHRoZVxuICAgICBzYW1lIG5hbWUsIHRoZSBzZWNvbmQgd2lsbCBzaW1wbHkgb3ZlcndyaXRlIHRoZSBmaXJzdCwgYXMgZGVzaXJlZC5cblxuICAgICBJbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgdGhlIFtNdWx0aV0gbW9kdWxlICh0aGF0IGlzLFxuICAgICBpdCBtdXN0IGJlIHBvc3NpYmxlIHRvIG1lcmdlIGNsYXNzZXMgYW5kIHN0eWxlcywgYnV0IG5vdCBob29rcyBhbmRcbiAgICAgaGFuZGxlcnMpLCB3ZSBpbnRyb2R1Y2UgdGhlIHdvcmthcm91bmQgY29uc3RydWN0b3JcbiAgICAgW01hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNdLlxuXG4gICAgIFRoZXJlIGFyZSB0aHVzIHRocmVlIGNhc2VzIHRoYXQgZWFjaCBoYXZlIGRpZmZlcmVudCBtZXJnZSBiZWhhdmlvcnM6XG4gICAgIC0gU2ltcGxlIGxpc3RzIC0gbm8gbWVyZ2luZ1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV0gLSBtZXJnZXMgY2xhc3Nlcywgc3R5bGVzLCBob29rcywgYW5kIGhhbmRsZXJzXG4gICAgIC0gTGlzdHMgd3JhcHBlZCBpbiBhIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXSAtIG1lcmdlcyBjbGFzc2VzIGFuZCBzdHlsZXNcblxuICAgICBUbyBhdm9pZCBkdXBsaWNhdGluZyB0aGUgbWF0Y2ggZXhwcmVzc2lvbiBsb2dpYywgd2UgcGFyZW1ldGVyaXplIGl0IGJ5IHRoZVxuICAgICBtZXJnaW5nIGJlaGF2aW9yLCBzaW5jZSBcIm5vIG1lcmdlXCIgcmVhbGx5IG1lYW5zIFwibWVyZ2UgYnkgdGFraW5nIHRoZVxuICAgICBzZWNvbmQgb25lXCIuICopXG4gIGxldCByZWMgbWVyZ2UgfmNvbWJpbmVfaG9vayB+Y29tYmluZV9oYW5kbGVyIH5jb21iaW5lX3N0eWxlcyB+Y29tYmluZV9jbGFzc2VzIGFjYyA9XG4gICAgTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBhdHRyIC0+XG4gICAgICBtYXRjaCBhdHRyIHdpdGhcbiAgICAgIHwgUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBwcm9wZXJ0aWVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgKG1hdGNoIG5hbWUgd2l0aFxuICAgICAgICAgfCBcInZhbHVlXCIgLT5cbiAgICAgICAgICAgbGV0IHNvZnRTZXRIb29rIHggOiBKcy5VbnNhZmUuYW55ID0gSnMuVW5zYWZlLmdsb2JhbCAjIyBTb2Z0U2V0SG9vayB4IGluXG4gICAgICAgICAgIGxldCB2YWx1ZSA9IHNvZnRTZXRIb29rIHZhbHVlIGluXG4gICAgICAgICAgIFZkb21fcmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJ2YWx1ZVwiIHZhbHVlXG4gICAgICAgICB8IG5hbWUgLT4gUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSB2YWx1ZSk7XG4gICAgICAgIGFjY1xuICAgICAgfCBBdHRyaWJ1dGUgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgYXR0cmlidXRlc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lIHZhbHVlO1xuICAgICAgICBhY2NcbiAgICAgIHwgU3R5bGUgbmV3X3N0eWxlcyAtPiB7IGFjYyB3aXRoIHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgbmV3X3N0eWxlcyB9XG4gICAgICB8IENsYXNzIG5ld19jbGFzc2VzIC0+XG4gICAgICAgIHsgYWNjIHdpdGggY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBuZXdfY2xhc3NlcyB9XG4gICAgICB8IEhvb2sgeyBuYW1lOyBob29rIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBob29rcyA9IGNvbWJpbmluZ19tYXBfYWRkIGFjYy5ob29rcyBuYW1lIGhvb2sgfmNvbWJpbmU6Y29tYmluZV9ob29rIH1cbiAgICAgIHwgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoXG4gICAgICAgICAgaGFuZGxlcnMgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaGFuZGxlcnMgbmFtZSBoYW5kbGVyIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICB9XG4gICAgICB8IE1hbnkgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6KGZ1biB+a2V5Ol8gLT4gSG9va3MuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6KGZ1biB+a2V5Ol8gLT4gRXZlbnRfaGFuZGxlci5jb21iaW5lKVxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpDb3JlLiggQCApXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBtYXBfc3R5bGVzLCBtYXBfY2xhc3NlcykgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOkNvcmUuKCBAIClcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IG1hcF9zdHlsZXMgKGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlcylcbiAgICAgICAgOyBjbGFzc2VzID0gbWFwX2NsYXNzZXMgKGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3NlcylcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH1cbiAgICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9KVxuICBpblxuICBsZXQgbWVyZ2UgPVxuICAgIG1lcmdlXG4gICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICBlbXB0eV9tZXJnZVxuICAgICAgYXR0cnNcbiAgaW5cbiAgTWFwLml0ZXJpIG1lcmdlLmhvb2tzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOmhvb2sgLT5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIChIb29rcy5wYWNrIGhvb2spKTtcbiAgTWFwLml0ZXJpIG1lcmdlLmhhbmRsZXJzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOihFdmVudF9oYW5kbGVyLlQgeyBoYW5kbGVyOyBfIH0pIC0+XG4gICAgbGV0IGYgZSA9XG4gICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBlIChoYW5kbGVyIGUpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIChcIm9uXCIgXiBuYW1lKSAoSnMuVW5zYWZlLmluamVjdCAoRG9tLmhhbmRsZXIgZikpKTtcbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgbWVyZ2Uuc3R5bGVzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByb3BzID0gQ3NzX2dlbi50b19zdHJpbmdfbGlzdCBtZXJnZS5zdHlsZXMgaW5cbiAgICAgIGxldCBvYmogPSBSYXcuQXR0cnMuY3JlYXRlICgpIGluXG4gICAgICBMaXN0Lml0ZXIgcHJvcHMgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBvYmogayAoSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHYpKSk7XG4gICAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInN0eWxlXCIgKG9iaiA6PiBKcy5VbnNhZmUuYW55KSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG1lcmdlLmNsYXNzZXNcbiAgICB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGVcbiAgICAgICAgYXR0cnNfb2JqXG4gICAgICAgIFwiY2xhc3NcIlxuICAgICAgICAoSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IG1lcmdlLmNsYXNzZXMgfnNlcDpcIiBcIikpKVxuICBpblxuICBhdHRyc19vYmpcbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIG1hdGNoIGF0dHIgd2l0aFxuICB8IE1hbnkgW10gfCBNYW55X3dpdGhvdXRfbWVyZ2UgW10gLT4gUmF3LkF0dHJzLmNyZWF0ZSAoKVxuICB8IGF0dHIgLT4gdG9fcmF3IGF0dHJcbjs7XG5cbmxldCBzdHlsZSBjc3MgPSBTdHlsZSBjc3NcbmxldCBjbGFzc18gY2xhc3NuYW1lID0gQ2xhc3MgWyBjbGFzc25hbWUgXVxubGV0IGNsYXNzZXMnIGNsYXNzZXMgPSBDbGFzcyAoU2V0LnRvX2xpc3QgY2xhc3NlcylcbmxldCBjbGFzc2VzIGNsYXNzbmFtZXMgPSBDbGFzcyBjbGFzc25hbWVzXG5sZXQgaWQgcyA9IGNyZWF0ZSBcImlkXCIgc1xubGV0IG5hbWUgcyA9IGNyZWF0ZSBcIm5hbWVcIiBzXG5sZXQgaHJlZiByID0gY3JlYXRlIFwiaHJlZlwiIHJcbmxldCBsYWJlbCByID0gY3JlYXRlIFwibGFiZWxcIiByXG5sZXQgdGFyZ2V0IHMgPSBjcmVhdGUgXCJ0YXJnZXRcIiBzXG5sZXQgY2hlY2tlZCA9IGNyZWF0ZSBcImNoZWNrZWRcIiBcIlwiXG5sZXQgc2VsZWN0ZWQgPSBjcmVhdGUgXCJzZWxlY3RlZFwiIFwiXCJcbmxldCBoaWRkZW4gPSBjcmVhdGUgXCJoaWRkZW5cIiBcIlwiXG5sZXQgcmVhZG9ubHkgPSBjcmVhdGUgXCJyZWFkb25seVwiIFwiXCJcbmxldCBkaXNhYmxlZCA9IGNyZWF0ZSBcImRpc2FibGVkXCIgXCJcIlxubGV0IHBsYWNlaG9sZGVyIHggPSBjcmVhdGUgXCJwbGFjZWhvbGRlclwiIHhcblxubGV0IGF1dG9mb2N1cyA9IGZ1bmN0aW9uXG4gIHwgdHJ1ZSAtPiBjcmVhdGUgXCJhdXRvZm9jdXNcIiBcIlwiXG4gIHwgZmFsc2UgLT4gZW1wdHlcbjs7XG5cbmxldCBmb3JfIHggPSBjcmVhdGUgXCJmb3JcIiB4XG5sZXQgdHlwZV8geCA9IGNyZWF0ZSBcInR5cGVcIiB4XG5sZXQgdmFsdWUgeCA9IGNyZWF0ZSBcInZhbHVlXCIgeFxubGV0IHZhbHVlX3Byb3AgeCA9IHN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgeFxubGV0IHRhYmluZGV4IHggPSBjcmVhdGUgXCJ0YWJpbmRleFwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgdGl0bGUgeCA9IGNyZWF0ZSBcInRpdGxlXCIgeFxubGV0IGFsdCB4ID0gY3JlYXRlIFwiYWx0XCIgeFxubGV0IHNyYyB4ID0gY3JlYXRlIFwic3JjXCIgeFxubGV0IG9wZW5fID0gY3JlYXRlIFwib3BlblwiIFwiXCJcbmxldCBzdGFydCB4ID0gY3JlYXRlIFwic3RhcnRcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IG1pbiB4ID0gY3JlYXRlX2Zsb2F0IFwibWluXCIgeFxubGV0IG1heCB4ID0gY3JlYXRlX2Zsb2F0IFwibWF4XCIgeFxubGV0IG1pbl9kYXRlIHggPSBjcmVhdGUgXCJtaW5cIiAoRGF0ZS50b19zdHJpbmcgeClcbmxldCBtYXhfZGF0ZSB4ID0gY3JlYXRlIFwibWF4XCIgKERhdGUudG9fc3RyaW5nIHgpXG5sZXQgbWluX2RhdGVfdGltZSB4ID0gY3JlYXRlIFwibWluXCIgKERhdGUudG9fc3RyaW5nIHggXiBcIlQwMDowMFwiKVxubGV0IG1heF9kYXRlX3RpbWUgeCA9IGNyZWF0ZSBcIm1heFwiIChEYXRlLnRvX3N0cmluZyB4IF4gXCJUMjM6NTlcIilcbmxldCBjb2xzcGFuIHggPSBjcmVhdGUgXCJjb2xzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCByb3dzcGFuIHggPSBjcmVhdGUgXCJyb3dzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCBkcmFnZ2FibGUgYiA9IGNyZWF0ZSBcImRyYWdnYWJsZVwiIChCb29sLnRvX3N0cmluZyBiKVxuXG5tb2R1bGUgVHlwZV9pZCA9IHN0cnVjdFxuICAoKiBXZSBwcm92aWRlIGEgdHJpdmlhbCBbdG9fc2V4cF0gZnVuY3Rpb24gc2luY2Ugd2Ugb25seSB3YW50XG4gICAgIHRvIHVuaWZ5IHR5cGUgaWRzIGFuZCBub3QgY29udmVydCB0eXBlcyB0byBpZHMgKilcbiAgbGV0IGNyZWF0ZSBuYW1lID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biBfIC0+IFNleHBsaWIuU2V4cC5MaXN0IFtdKVxuICBsZXQgKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImV2ZW50XCJcbiAgbGV0IChmb2N1cyA6IERvbV9odG1sLmZvY3VzRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImZvY3VzRXZlbnRcIlxuICBsZXQgKG1vdXNlIDogRG9tX2h0bWwubW91c2VFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2VFdmVudFwiXG4gIGxldCAoa2V5Ym9hcmQgOiBEb21faHRtbC5rZXlib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJrZXlib2FyZEV2ZW50XCJcbiAgbGV0IChzdWJtaXQgOiBEb21faHRtbC5zdWJtaXRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwic3VibWl0RXZlbnRcIlxuICBsZXQgKG1vdXNld2hlZWwgOiBEb21faHRtbC5tb3VzZXdoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNld2hlZWxFdmVudFwiXG5cbiAgbGV0ICh3aGVlbCA6IEpzX29mX29jYW1sX3BhdGNoZXMuRG9tX2h0bWwud2hlZWxFdmVudCBUeXBlX2VxdWFsLklkLnQpID1cbiAgICBjcmVhdGUgXCJ3aGVlbHdoZWVsRXZlbnRcIlxuICA7O1xuXG4gIGxldCAoY2xpcGJvYXJkIDogRG9tX2h0bWwuY2xpcGJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImNsaXBib2FyZEV2ZW50XCJcbiAgbGV0IChkcmFnIDogRG9tX2h0bWwuZHJhZ0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJkcmFnRXZlbnRcIlxuICBsZXQgKHBvaW50ZXIgOiBEb21faHRtbC5wb2ludGVyRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInBvaW50ZXJFdmVudFwiXG4gIGxldCAoYW5pbWF0aW9uIDogRG9tX2h0bWwuYW5pbWF0aW9uRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImFuaW1hdGlvbkV2ZW50XCJcbmVuZFxuXG5sZXQgb24gdHlwZV9pZCBuYW1lIChoYW5kbGVyIDogI0RvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCkgOiB0ID1cbiAgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgPSBUIHsgaGFuZGxlcjsgdHlwZV9pZCB9IH1cbjs7XG5cbmxldCBvbl9mb2N1cyA9IG9uIFR5cGVfaWQuZm9jdXMgXCJmb2N1c1wiXG5sZXQgb25fYmx1ciA9IG9uIFR5cGVfaWQuZm9jdXMgXCJibHVyXCJcbmxldCBvbl9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJjbGlja1wiXG5sZXQgb25fY29udGV4dG1lbnUgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY29udGV4dG1lbnVcIlxubGV0IG9uX2RvdWJsZV9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJkYmxjbGlja1wiXG5sZXQgb25fZHJhZyA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdcIlxubGV0IG9uX2RyYWdzdGFydCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdzdGFydFwiXG5sZXQgb25fZHJhZ2VuZCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbmRcIlxubGV0IG9uX2RyYWdlbnRlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbnRlclwiXG5sZXQgb25fZHJhZ2xlYXZlID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2xlYXZlXCJcbmxldCBvbl9kcmFnb3ZlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdvdmVyXCJcbmxldCBvbl9kcm9wID0gb24gVHlwZV9pZC5kcmFnIFwiZHJvcFwiXG5sZXQgb25fbW91c2Vtb3ZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbW92ZVwiXG5sZXQgb25fbW91c2V1cCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZXVwXCJcbmxldCBvbl9tb3VzZWRvd24gPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vkb3duXCJcbmxldCBvbl9tb3VzZWVudGVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZW50ZXJcIlxubGV0IG9uX21vdXNlbGVhdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VsZWF2ZVwiXG5sZXQgb25fbW91c2VvdmVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3ZlclwiXG5sZXQgb25fbW91c2VvdXQgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdXRcIlxubGV0IG9uX2tleXVwID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXVwXCJcbmxldCBvbl9rZXlwcmVzcyA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlwcmVzc1wiXG5sZXQgb25fa2V5ZG93biA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlkb3duXCJcbmxldCBvbl9zY3JvbGwgPSBvbiBUeXBlX2lkLmV2ZW50IFwic2Nyb2xsXCJcbmxldCBvbl9sb2FkID0gb24gVHlwZV9pZC5ldmVudCBcImxvYWRcIlxubGV0IG9uX3N1Ym1pdCA9IG9uIFR5cGVfaWQuc3VibWl0IFwic3VibWl0XCJcbmxldCBvbl9wb2ludGVyZG93biA9IG9uIFR5cGVfaWQucG9pbnRlciBcInBvaW50ZXJkb3duXCJcbmxldCBvbl9wb2ludGVydXAgPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVydXBcIlxubGV0IG9uX21vdXNld2hlZWwgPSBvbiBUeXBlX2lkLm1vdXNld2hlZWwgXCJtb3VzZXdoZWVsXCJcbmxldCBvbl93aGVlbCA9IG9uIFR5cGVfaWQud2hlZWwgXCJ3aGVlbFwiXG5sZXQgb25fY29weSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY29weVwiXG5sZXQgb25fY3V0ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjdXRcIlxubGV0IG9uX3Bhc3RlID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJwYXN0ZVwiXG5sZXQgb25fcmVzZXQgPSBvbiBUeXBlX2lkLmV2ZW50IFwicmVzZXRcIlxubGV0IG9uX2FuaW1hdGlvbmVuZCA9IG9uIFR5cGVfaWQuYW5pbWF0aW9uIFwiYW5pbWF0aW9uZW5kXCJcbmxldCBjb25zdF9pZ25vcmUgXyA9IEVmZmVjdC5JZ25vcmVcblxuY2xhc3MgdHlwZSB2YWx1ZV9lbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZWxlbWVudFxuICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5lbmRcblxudHlwZSB2YWx1ZV9jb2VyY2lvbiA9IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2YWx1ZV9lbGVtZW50IEpzLnQgSnMub3B0XG5cbmxldCBydW5fY29lcmNpb24gY29lcmNpb24gdGFyZ2V0IHByZXYgPVxuICBtYXRjaCBwcmV2IHdpdGhcbiAgfCBTb21lIF8gLT4gcHJldlxuICB8IE5vbmUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNpb24gdGFyZ2V0KVxuOztcblxubGV0IGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldCA9XG4gIGxldCBvcGVuIERvbV9odG1sLkNvZXJjZVRvIGluXG4gIE5vbmVcbiAgfD4gcnVuX2NvZXJjaW9uIChpbnB1dCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAoc2VsZWN0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uICh0ZXh0YXJlYSA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG47O1xuXG5sZXQgb25faW5wdXRfZXZlbnQgdHlwZV9pZCBldmVudCBoYW5kbGVyID1cbiAgb24gdHlwZV9pZCBldmVudCAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIChjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQpXG4gICAgICAgIH5kZWZhdWx0OkVmZmVjdC5JZ25vcmVcbiAgICAgICAgfmY6KGZ1biB0YXJnZXQgLT5cbiAgICAgICAgICBsZXQgdGV4dCA9IEpzLnRvX3N0cmluZyB0YXJnZXQjIy52YWx1ZSBpblxuICAgICAgICAgIGhhbmRsZXIgZXYgdGV4dCkpKVxuOztcblxubGV0IG9uX2NoYW5nZSA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJjaGFuZ2VcIlxubGV0IG9uX2lucHV0ID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImlucHV0XCJcbmxldCB0b19yYXcgbCA9IHRvX3JhdyBsXG5cbmxldCBvbl9maWxlX2lucHV0IGhhbmRsZXIgPVxuICBvbiBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIiAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBKcy5PcHQuY2FzZSAoRG9tX2h0bWwuQ29lcmNlVG8uaW5wdXQgdGFyZ2V0KSBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgICAgSnMuT3B0ZGVmLmNhc2UgdGFyZ2V0IyMuZmlsZXMgY29uc3RfaWdub3JlIChmdW4gZmlsZXMgLT4gaGFuZGxlciBldiBmaWxlcykpKSlcbjs7XG5cbm1vZHVsZSBBbHdheXNfZm9jdXNfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml0XG5cbiAgICAgIGxldCBjb21iaW5lICgpICgpID0gKClcbiAgICBlbmRcblxuICAgIGxldCBpbml0ICgpIF8gPSAoKVxuICAgIGxldCBvbl9tb3VudCAoKSAoKSBlbGVtZW50ID0gZWxlbWVudCMjZm9jdXNcbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6KCkgfm5ld19pbnB1dDooKSAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSAoKSAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwiYWx3YXlzLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNpbmdsZV9mb2N1c19ob29rICgpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbGV0IGhhc19iZWVuX3VzZWQgPSByZWYgZmFsc2VcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHVuaXQgVWlfZWZmZWN0LnRbQHNleHAub3BhcXVlXSkgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgcmlnaHQgXVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgXyBfID0gKClcblxuICAgIGxldCBvbl9tb3VudCBldmVudCAoKSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAhaGFzX2JlZW5fdXNlZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGhhc19iZWVuX3VzZWQgOj0gdHJ1ZTtcbiAgICAgICAgZWxlbWVudCMjZm9jdXM7XG4gICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIGV2ZW50KVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6XyB+bmV3X2lucHV0Ol8gKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSB+YWZ0ZXIgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcInNpbmdsZS1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlIGFmdGVyKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb19vcF9ob29rIChNIDogc2lnXG4gICAgbW9kdWxlIElucHV0IDogSG9va3NfaW50Zi5JbnB1dFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcbiAgICAgIG1vZHVsZSBJbnB1dCA9IE0uSW5wdXRcblxuICAgICAgbGV0IGluaXQgXyBfID0gKClcbiAgICAgIGxldCBvbl9tb3VudCBfICgpIF8gPSAoKVxuICAgICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgICBlbmQpXG5cbiAgbGV0IGF0dHIgaW5wdXQgPSBjcmVhdGVfaG9vayBNLm5hbWUgKEhvb2suY3JlYXRlIGlucHV0KVxuICBsZXQgdHlwZV9pZCA9IEhvb2suRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IGxpc3RcblxuICBsZXQgbWFwX3N0eWxlIHQgfmYgPSBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIGYsIEZuLmlkKSBdXG4gIGxldCBhZGRfY2xhc3MgdCBjID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgZnVuIGNzIC0+IGMgOjogY3MpIF1cbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfc3R5bGUgdCB+ZjooZnVuIHNzIC0+IENzc19nZW4uY29tYmluZSBzcyBzKVxuXG4gIGxldCBtZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgdCA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgRm4uaWQpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ3NzX3Zhcl9ob29rID0gSG9va3MuTWFrZSAoc3RydWN0XG4gICAgb3BlbiBKc19vZl9vY2FtbFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tYmluZSA9IExpc3QuYXBwZW5kXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCBpbnB1dCAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgTGlzdC5pdGVyIGlucHV0IH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIGVsZW1lbnQjIy5zdHlsZSMjc2V0UHJvcGVydHkgKEpzLnN0cmluZyBrKSAoSnMuc3RyaW5nIHYpIEpzLnVuZGVmaW5lZFxuICAgICAgICB8PiAoaWdub3JlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkpXG4gICAgOztcblxuICAgIGxldCBvbl9tb3VudCBfICgpIF8gPSAoKVxuXG4gICAgbGV0IGRlc3Ryb3kgaW5wdXQgKCkgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIExpc3QuaXRlciBpbnB1dCB+ZjooZnVuIChrLCBfKSAtPlxuICAgICAgICBlbGVtZW50IyMuc3R5bGUjI3JlbW92ZVByb3BlcnR5IChKcy5zdHJpbmcgaylcbiAgICAgICAgfD4gKGlnbm9yZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpKVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCAoKSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgaWYgcGh5c19lcXVhbCBvbGRfaW5wdXQgbmV3X2lucHV0XG4gICAgICB8fCBbJWVxdWFsOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XSBvbGRfaW5wdXQgbmV3X2lucHV0XG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgKCkgZWxlbWVudDtcbiAgICAgICAgaW5pdCBuZXdfaW5wdXQgZWxlbWVudClcbiAgICA7O1xuICBlbmQpXG5cbmxldCBfX2Nzc192YXJzX25vX2tlYmFicyBhbGlzdCA9IGNyZWF0ZV9ob29rIFwiY3VzdG9tLWNzcy12YXJzXCIgKENzc192YXJfaG9vay5jcmVhdGUgYWxpc3QpXG5sZXQgY3NzX3ZhciB+bmFtZSB2ID0gX19jc3NfdmFyc19ub19rZWJhYnMgWyBcIi0tXCIgXiBuYW1lLCB2IF1cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcmVjIGZpbHRlcl9ieV9raW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUHJvcGVydHkgXyAtPiBpZiBmIGBQcm9wZXJ0eSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQXR0cmlidXRlIF8gLT4gaWYgZiBgQXR0cmlidXRlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIb29rIF8gLT4gaWYgZiBgSG9vayB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSGFuZGxlciBfIC0+IGlmIGYgYEhhbmRsZXIgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IFN0eWxlIF8gLT4gaWYgZiBgU3R5bGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IENsYXNzIF8gLT4gaWYgZiBgQ2xhc3MgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IE1hbnkgYXR0cnMgLT4gTWFueSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBhLCBiKSAtPlxuICAgICAgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSwgYSwgYilcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgTWFueV93aXRob3V0X21lcmdlIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICA7O1xuXG4gIGxldCByZWMgY29udGFpbnNfbmFtZSBsb29raW5nX2ZvciA9IGZ1bmN0aW9uXG4gICAgfCBQcm9wZXJ0eSB7IG5hbWU7IF8gfSB8IEF0dHJpYnV0ZSB7IG5hbWU7IF8gfSB8IEhvb2sgeyBuYW1lOyBfIH0gLT5cbiAgICAgIFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBuYW1lXG4gICAgfCBIYW5kbGVyIHsgbmFtZTsgXyB9IC0+IFN0cmluZy5lcXVhbCAoXCJvblwiIF4gbmFtZSkgbG9va2luZ19mb3JcbiAgICB8IFN0eWxlIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwic3R5bGVcIlxuICAgIHwgQ2xhc3MgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJjbGFzc1wiXG4gICAgfCBNYW55IGF0dHJzXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgXywgXylcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPiBMaXN0LmV4aXN0cyB+ZjooY29udGFpbnNfbmFtZSBsb29raW5nX2ZvcikgYXR0cnNcbiAgOztcbmVuZFxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgZXZlbnQgPSBwcml2YXRlICNEb21faHRtbC5ldmVudFxuXG4gICAgdmFsIGV2ZW50X2tpbmQgOiBldmVudCBKcy50IERvbS5FdmVudC50eXBcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBYLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCBjb21iaW5lIGYgZyBldmVudCA9IFVpX2VmZmVjdC5NYW55IFsgZiBldmVudDsgZyBldmVudCBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBsaXN0ZW5lciA6IChEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFtAc2V4cC5vcGFxdWVdKSB9XG4gICAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgbGV0IHNldCBmID1cbiAgICAgICAgbGV0IGhhbmRsZXIgPVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlIGV2IChmIGV2KTtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgICBpblxuICAgICAgICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIERvbV9odG1sLndpbmRvdyBYLmV2ZW50X2tpbmQgaGFuZGxlciBKcy5fdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0IGluaXQgZiBfZWxlbWVudCA9IHsgU3RhdGUubGlzdGVuZXIgPSBzZXQgZiB9XG4gICAgICBsZXQgZGVzdHJveSBfaW5wdXQgc3RhdGUgX2VsZW1lbnQgPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIHN0YXRlLlN0YXRlLmxpc3RlbmVyXG5cbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmYgc3RhdGUgZWxlbWVudCA9XG4gICAgICAgICgqIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjaGFuZ2VzLCBjYW5jZWwgdGhlIG9sZCBvbmUgYW5kIHJlLWluc3RhbGwgKilcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgICAgbGV0IG5ld19zdGF0ZSA9IGluaXQgZiBlbGVtZW50IGluXG4gICAgICAgIHN0YXRlLlN0YXRlLmxpc3RlbmVyIDwtIG5ld19zdGF0ZS5saXN0ZW5lclxuICAgICAgOztcblxuICAgICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTW91c2V1cCA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNldXBcbiAgZW5kKVxuXG5tb2R1bGUgTW91c2Vtb3ZlID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2Vtb3ZlXG4gIGVuZClcblxubW9kdWxlIENsaWNrID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQuY2xpY2tcbiAgZW5kKVxuXG5tb2R1bGUgQ29udGV4dG1lbnUgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwiY29udGV4dG1lbnVcIlxuICBlbmQpXG5cbm1vZHVsZSBLZXlkb3duID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmtleWJvYXJkRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQua2V5ZG93blxuICBlbmQpXG5cbm1vZHVsZSBWaXNpYmlsaXR5Y2hhbmdlID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ2aXNpYmlsaXR5Y2hhbmdlXCJcbiAgZW5kKVxuXG5tb2R1bGUgQmVmb3JldW5sb2FkID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuICBlbmQpXG5cbmxldCBtb3VzZXVwIGYgPSBNb3VzZXVwLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2V1cC1saXN0ZW5lclwiXG5sZXQgbW91c2Vtb3ZlIGYgPSBNb3VzZW1vdmUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZW1vdmUtbGlzdGVuZXJcIlxubGV0IGNsaWNrIGYgPSBDbGljay5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWNsaWNrLWxpc3RlbmVyXCJcbmxldCBjb250ZXh0bWVudSBmID0gQ29udGV4dG1lbnUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1jb250ZXh0bWVudS1saXN0ZW5lclwiXG5sZXQga2V5ZG93biBmID0gS2V5ZG93bi5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWtleWRvd24tbGlzdGVuZXJcIlxuXG5jbGFzcyB0eXBlIGV2ZW50X3dpdGhfc3RyaW5nX3JldHVybl92YWx1ZSA9IG9iamVjdFxuICAoKiBFdmVudHMgd2l0aCBbcmV0dXJuVmFsdWVdIGFyZSBpbXBvc3NpYmxlIHRvIHByb3Blcmx5IHR5cGUsIHNvIHdlIG1ha2Ugb25lIHRoYXRcbiAgICAgaXMgc3BlY2lhbGl6ZWQgZm9yIHN0cmluZywgYW5kIGNhc3Qgb3VyIGJlZm9yZV91bmxvYWQgdHlwZSB0byBpdC4gKilcbiAgbWV0aG9kIHJldHVyblZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYmVmb3JldW5sb2FkIGYgPVxuICBsZXQgZiBldmVudCA9XG4gICAgbWF0Y2glYmluZC5FZmZlY3QgZiBldmVudCB3aXRoXG4gICAgfCBgU2hvd193YXJuaW5nIC0+XG4gICAgICBsZXQgZXZlbnQgOiBldmVudF93aXRoX3N0cmluZ19yZXR1cm5fdmFsdWUgSnMudCA9IE9iai5tYWdpYyBldmVudCBpblxuICAgICAgZXZlbnQjIy5yZXR1cm5WYWx1ZSA6PSBKcy5zdHJpbmcgXCJ0aGlzIHN0cmluZyBjYW4gYmUgYW55dGhpbmdcIjtcbiAgICAgIEVmZmVjdC5JZ25vcmVcbiAgICB8IGBEb19ub3RoaW5nIC0+IEVmZmVjdC5JZ25vcmVcbiAgaW5cbiAgQmVmb3JldW5sb2FkLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtYmVmb3JldW5sb2FkLWxpc3RlbmVyXCJcbjs7XG5cbmxldCB2aXNpYmlsaXR5Y2hhbmdlIGYgPVxuICBWaXNpYmlsaXR5Y2hhbmdlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtdmlzaWJpbGl0eWNoYW5nZS1saXN0ZW5lclwiXG47O1xuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IG1vdXNldXBfdHlwZV9pZCA9IE1vdXNldXAuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgbW91c2Vtb3ZlX3R5cGVfaWQgPSBNb3VzZW1vdmUuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQga2V5ZG93bl90eXBlX2lkID0gS2V5ZG93bi5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBjbGlja190eXBlX2lkID0gQ2xpY2suRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgY29udGV4dG1lbnVfdHlwZV9pZCA9IENvbnRleHRtZW51LkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IHZpc2liaWxpdHljaGFuZ2VfdHlwZV9pZCA9IFZpc2liaWxpdHljaGFuZ2UuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgYmVmb3JldW5sb2FkX3R5cGVfaWQgPSBCZWZvcmV1bmxvYWQuRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG50eXBlIHQgPSBSYXcuTm9kZS50XG5cbmxldCB2ZG9tX3RodW5rID0gbGF6eSBKcy5VbnNhZmUuKGdldCBnbG9iYWwgKEpzLnN0cmluZyBcIlZkb21UaHVua1wiKSlcblxubGV0IGNyZWF0ZSB+a2V5IGFyZyB+ZiA9XG4gIGxldCBrZXkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKcy5zdHJpbmcga2V5KVxuICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgaW5cbiAgbGV0IGtleSA9IEpzLlVuc2FmZS5pbmplY3Qga2V5IGluXG4gIGxldCBmID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGEgLT4gZiBhKSB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBhcmcgPSBKcy5VbnNhZmUuaW5qZWN0IGFyZyBpblxuICAoT2JqLm1hZ2ljIDogXyAtPiBSYXcuTm9kZS50KVxuICAgIChKcy5VbnNhZmUuZnVuX2NhbGwgKExhenkuZm9yY2UgdmRvbV90aHVuaykgW3wgZjsgYXJnOyBrZXkgfF0pXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5cbnR5cGUgZWxlbWVudCA9XG4gIHsgdGFnIDogc3RyaW5nXG4gIDsga2V5IDogc3RyaW5nIG9wdGlvblxuICA7IGF0dHJzIDogQXR0ci50XG4gIDsgcmF3X2F0dHJzIDogUmF3LkF0dHJzLnQgTGF6eS50XG4gIDsgY2hpbGRyZW4gOiBSYXcuTm9kZS50IEpzLmpzX2FycmF5IEpzLnRcbiAgOyBraW5kIDogWyBgVm5vZGUgfCBgU3ZnIF1cbiAgfVxuXG5hbmQgd2lkZ2V0ID0gUmF3LldpZGdldC50XG5cbmFuZCB0ID1cbiAgfCBOb25lXG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbGVtZW50IG9mIGVsZW1lbnRcbiAgfCBXaWRnZXQgb2Ygd2lkZ2V0XG4gIHwgTGF6eSBvZlxuICAgICAgeyBrZXkgOiBzdHJpbmcgb3B0aW9uXG4gICAgICA7IHQgOiB0IExhenkudFxuICAgICAgfVxuXG5tb2R1bGUgQWxpYXNlcyA9IHN0cnVjdFxuICB0eXBlIG5vZGVfY3JlYXRvciA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyczpBdHRyLnQgbGlzdCAtPiB0IGxpc3QgLT4gdFxuICB0eXBlIG5vZGVfY3JlYXRvcl9jaGlsZGxlc3MgPSA/a2V5OnN0cmluZyAtPiA/YXR0cnM6QXR0ci50IGxpc3QgLT4gdW5pdCAtPiB0XG5lbmRcblxubW9kdWxlIEVsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZWxlbWVudFxuXG4gIGxldCB0YWcgdCA9IHQudGFnXG4gIGxldCBhdHRycyB0ID0gdC5hdHRyc1xuICBsZXQga2V5IHQgPSB0LmtleVxuICBsZXQgd2l0aF9rZXkgdCBrZXkgPSB7IHQgd2l0aCBrZXkgPSBTb21lIGtleSB9XG5cbiAgbGV0IG1hcF9hdHRycyB0IH5mID1cbiAgICBsZXQgYXR0cnMgPSBmIHQuYXR0cnMgaW5cbiAgICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gICAgeyB0IHdpdGggYXR0cnM7IHJhd19hdHRycyB9XG4gIDs7XG5cbiAgbGV0IGFkZF9jbGFzcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzXyBjKSlcbiAgbGV0IGFkZF9jbGFzc2VzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NlcyBjKSlcbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIHN0eWxlIHMpKVxuZW5kXG5cbmxldCByZWMgdF90b19qcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICgqIFdlIG5vcm1hbGx5IGZpbHRlciB0aGVzZSBvdXQsIGJ1dCBpZiBbdG9fanNdIGlzIGNhbGxlZCBkaXJlY3RseSBvbiBhIFtOb25lXSBub2RlLFxuICAgICAgIHdlIHVzZSB0aGlzIGhhY2suIEFzaWRlIGZyb20gaGF2aW5nIGEgW1RleHRdIG5vZGUgd2l0aG91dCBhbnkgdGV4dCBwcmVzZW50IGluIHRoZVxuICAgICAgIERvbSwgdGhlcmUgc2hvdWxkIGJlIG5vIHVud2FudGVkIHNpZGUtZWZmZWN0cy4gIEluIGFuIEluY3JfZG9tIGFwcGxpY2F0aW9uLCB0aGlzXG4gICAgICAgY2FuIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHJvb3QgdmlldyBJbmNyZW1lbnRhbCBpcyBpbmhhYml0ZWQgYnkgYSBbTm9uZV0uICopXG4gICAgUmF3Lk5vZGUudGV4dCBcIlwiXG4gIHwgVGV4dCBzIC0+IFJhdy5Ob2RlLnRleHQgc1xuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBWbm9kZSB9XG4gICAgLT4gUmF3Lk5vZGUubm9kZSB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBTdmcgfVxuICAgIC0+IFJhdy5Ob2RlLnN2ZyB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IFdpZGdldCB3IC0+IHdcbiAgfCBMYXp5IHsgdDsga2V5IH0gLT4gVGh1bmsuY3JlYXRlIH5rZXkgdCB+Zjp0X3RvX2pzX2xhenlcblxuYW5kIHRfdG9fanNfbGF6eSAobGF6eSB0KSA9IHRfdG9fanMgdFxuXG5sZXQgdGV4dCBzID0gVGV4dCBzXG5cbmxldCBlbGVtZW50IGtpbmQgfnRhZyB+a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IGNoaWxkcmVuX3JhdyA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICBMaXN0Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCAoVGV4dCBfIHwgRWxlbWVudCBfIHwgV2lkZ2V0IF8gfCBMYXp5IF8pIGFzIG90aGVyIC0+XG4gICAgICBsZXQgKF8gOiBpbnQpID0gY2hpbGRyZW5fcmF3IyNwdXNoICh0X3RvX2pzIG90aGVyKSBpblxuICAgICAgKCkpO1xuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuID0gY2hpbGRyZW5fcmF3IH1cbjs7XG5cbmxldCBjcmVhdGUgdGFnID9rZXkgPyhhdHRycyA9IFtdKSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFZub2RlIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbFxuXG4gIGxldCBjcmVhdGVfZWxlbWVudCA9IGNyZWF0ZVxuXG4gIHR5cGUgdmRvbV9ub2RlID0gdFxuXG4gIGluY2x1ZGUgUmF3LldpZGdldFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIGRvbSA9IHByaXZhdGUgI0RvbV9odG1sLmVsZW1lbnRcblxuICAgIG1vZHVsZSBJbnB1dCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgY3JlYXRlIDogSW5wdXQudCAtPiBTdGF0ZS50ICogZG9tIEpzLnRcblxuICAgIHZhbCB1cGRhdGVcbiAgICAgIDogIHByZXZfaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gc3RhdGU6U3RhdGUudFxuICAgICAgLT4gZWxlbWVudDpkb20gSnMudFxuICAgICAgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgZGVzdHJveSA6IHByZXZfaW5wdXQ6SW5wdXQudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IGVsZW1lbnQ6ZG9tIEpzLnQgLT4gdW5pdFxuICAgIHZhbCB0b192ZG9tX2Zvcl90ZXN0aW5nIDogWyBgQ3VzdG9tIG9mIElucHV0LnQgLT4gdmRvbV9ub2RlIHwgYFNleHBfb2ZfaW5wdXQgXVxuICBlbmRcblxuICBsZXQgb2ZfbW9kdWxlICh0eXBlIGlucHV0KSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSBJbnB1dC50ID0gaW5wdXQpID1cbiAgICBsZXQgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGlucHV0IDogTS5JbnB1dC50XG4gICAgICAgIDsgc3RhdGUgOiBNLlN0YXRlLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcbiAgICBpblxuICAgIGxldCBzZXhwX29mX2RvbSA6IE0uZG9tIEpzLnQgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIiBpblxuICAgIGxldCBpZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOk0ubmFtZSBbJXNleHBfb2Y6IFN0YXRlLnQgKiBkb21dIGluXG4gICAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpbnB1dCAtPlxuICAgICAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKHRfdG9fanNcbiAgICAgICAgICAgICAobWF0Y2ggTS50b192ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICAgICAgICAgfCBgQ3VzdG9tIGYgLT4gZiBpbnB1dFxuICAgICAgICAgICAgICB8IGBTZXhwX29mX2lucHV0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIE0uSW5wdXQuc2V4cF9vZl90IGlucHV0IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQXRvbSBcIjxvcGFxdWU+XCIgLT4gW11cbiAgICAgICAgICAgICAgICAgIHwgb3RoZXIgLT4gWyB0ZXh0IChTZXhwLnRvX3N0cmluZ19odW0gb3RoZXIpIF1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGNyZWF0ZV9lbGVtZW50IChNLm5hbWUgXiBcIi13aWRnZXRcIikgY2hpbGRyZW4pKVxuICAgICAgaW5cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+aWRcbiAgICAgICAgfnZkb21fZm9yX3Rlc3RpbmdcbiAgICAgICAgfmluaXQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBzdGF0ZSwgZWxlbWVudCA9IE0uY3JlYXRlIGlucHV0IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfnVwZGF0ZTooZnVuIHsgU3RhdGUuaW5wdXQgPSBwcmV2X2lucHV0OyBzdGF0ZSB9IGVsZW1lbnQgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLnVwZGF0ZSB+cHJldl9pbnB1dCB+aW5wdXQgfnN0YXRlIH5lbGVtZW50IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfmRlc3Ryb3k6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgTS5kZXN0cm95IH5wcmV2X2lucHV0IH5zdGF0ZSB+ZWxlbWVudClcbiAgICAgICAgKCkpXG4gIDs7XG5lbmRcblxubGV0IGxhenlfID9rZXkgdCA9IExhenkgeyBrZXk7IHQgfVxuXG5sZXQgZWxlbWVudF9leHBlcnQga2luZCB+dGFnID9rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuIH1cbjs7XG5cbmxldCB3aWRnZXQgP3Zkb21fZm9yX3Rlc3RpbmcgP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkgPVxuICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgbGF6eVxuICAgICAgKG1hdGNoIHZkb21fZm9yX3Rlc3Rpbmcgd2l0aFxuICAgICAgIHwgU29tZSB0IC0+IHRfdG9fanMgKExhenkuZm9yY2UgdClcbiAgICAgICB8IE5vbmUgLT4gdF90b19qcyAoY3JlYXRlIChUeXBlX2VxdWFsLklkLm5hbWUgaWQgXiBcIi13aWRnZXRcIikgW10pKVxuICBpblxuICBXaWRnZXQgKFdpZGdldC5jcmVhdGUgfnZkb21fZm9yX3Rlc3RpbmcgP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkpXG47O1xuXG5sZXQgY3JlYXRlX2NoaWxkbGVzcyB0YWcgP2tleSA/YXR0cnMgKCkgPSBjcmVhdGUgdGFnID9rZXkgP2F0dHJzIFtdXG5cbmxldCBjcmVhdGVfc3ZnIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgdGV4dGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIHRleHQgZm9ybWF0XG5cbmxldCB3aWRnZXRfb2ZfbW9kdWxlIG0gPVxuICBsZXQgZiA9IEJhc2UuU3RhZ2VkLnVuc3RhZ2UgKFdpZGdldC5vZl9tb2R1bGUgbSkgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpIC0+IFdpZGdldCAoZiBpKSlcbjs7XG5cbmxldCB0b19yYXcgPSB0X3RvX2pzXG5sZXQgdG9fZG9tIHQgPSBSYXcuTm9kZS50b19kb20gKHRvX3JhdyB0KVxuXG5tb2R1bGUgSW5uZXJfaHRtbCA9IHN0cnVjdFxuICBsZXQgd2lkZ2V0IH5uYW1lIGNyZWF0ZSA9XG4gICAgbGV0IGlkID1cbiAgICAgICgqIHN0YWdlIHRoZSBpZCBnZW5lcmF0aW9uICopXG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSAoZnVuICgoY29udGVudCwgXywgXyksIF8pIC0+IFNleHAuQXRvbSBjb250ZW50KVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlXG4gICAgICAoZnVuXG4gICAgICAgID9vdmVycmlkZV92ZG9tX2Zvcl90ZXN0aW5nXG4gICAgICAgIH50YWdcbiAgICAgICAgfmF0dHJzXG4gICAgICAgIH50aGlzX2h0bWxfaXNfc2FuaXRpemVkX2FuZF9pc190b3RhbGx5X3NhZmVfdHJ1c3RfbWU6Y29udGVudFxuICAgICAgICAoKVxuICAgICAgICAtPlxuICAgICAgICAgIGxldCBlbGVtZW50ID0gY3JlYXRlIHRhZyB+YXR0cnMgW10gaW5cbiAgICAgICAgICBsZXQgaW5pdCAoKSA9XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRvX2RvbSBlbGVtZW50IGluXG4gICAgICAgICAgICBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgICAgICAgKGNvbnRlbnQsIHRhZywgYXR0cnMpLCBlbGVtZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdXBkYXRlIChwcmV2X2NvbnRlbnQsIHByZXZfdGFnLCBwcmV2X2F0dHIpIGVsZW1lbnQgPVxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPVxuICAgICAgICAgICAgICAoKiBpZiB0aGUgdGFnIG9yIHRoZSBhdHRyaWJ1dGVzIGFyZSBkaWZmZXJlbnQsIGRvIGEgZGlmZi9wYXRjaCBjeWNsZSB0b1xuICAgICAgICAgICAgICAgICBnZXQgaXQgdXAgdG8gZGF0ZSAqKVxuICAgICAgICAgICAgICBpZiAobm90IChTdHJpbmcuZXF1YWwgcHJldl90YWcgdGFnKSkgfHwgbm90IChwaHlzX2VxdWFsIHByZXZfYXR0ciBhdHRycylcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFJhdy5QYXRjaC5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIH5wcmV2aW91czooY3JlYXRlIHByZXZfdGFnIH5hdHRyczpwcmV2X2F0dHIgW10gfD4gdG9fcmF3KVxuICAgICAgICAgICAgICAgICAgfmN1cnJlbnQ6KGNyZWF0ZSB0YWcgfmF0dHJzIFtdIHw+IHRvX3JhdylcbiAgICAgICAgICAgICAgICB8PiBSYXcuUGF0Y2guYXBwbHkgZWxlbWVudFxuICAgICAgICAgICAgICBlbHNlIGVsZW1lbnRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBpZiB0aGUgdGFnIGNoYW5nZWQsIHRoZW4gW2VsZW1lbnRdIHdpbGwgYmUgZW1wdHksIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZVxuICAgICAgICAgICAgICAgaW5uZXJIVE1MLiAgSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCwgdGhlbiB3ZSBuZWVkIHRvIHNldCB0aGUgaW5uZXJIVE1MIGZvclxuICAgICAgICAgICAgICAgb2J2aW91cyByZWFzb25zLiAqKVxuICAgICAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfdGFnIHRhZykpIHx8IG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfY29udGVudCBjb250ZW50KVxuICAgICAgICAgICAgdGhlbiBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgICAgICAgKGNvbnRlbnQsIHRhZywgYXR0cnMpLCBlbGVtZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSB1c2UgdGhlIFt3aWRnZXRdIGZ1bmN0aW9uIGRpcmVjdGx5LCByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZVxuICAgICAgICAgICAgIGVhc2llci10by11c2UgW3dpZGdldF9vZl9tb2R1bGVdIGZ1bmN0aW9uIGJlY2F1c2Ugd2Ugd2FudCB0b1xuICAgICAgICAgICAgIGV4cGxpY2l0bHkgY3JlYXRlIHRoZSBpZCBzdWNoIHRoYXQgaXQgaXMgZGlzdGluY3QgYmV0d2VlblxuICAgICAgICAgICAgIFtpbm5lcl9odG1sXSBhbmQgW2lubmVyX2h0bWxfc3ZnXS4gKilcbiAgICAgICAgICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgICAgICAgICBtYXRjaCBvdmVycmlkZV92ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBsYXp5IChjcmVhdGUgdGFnIH5hdHRycyBbIHRleHQgY29udGVudCBdKVxuICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgIGluXG4gICAgICAgICAgd2lkZ2V0IH5pZCB+dmRvbV9mb3JfdGVzdGluZyB+aW5pdCB+dXBkYXRlICgpKVxuICA7O1xuZW5kXG5cbmxldCBpbm5lcl9odG1sX3N2ZyA9XG4gIElubmVyX2h0bWwud2lkZ2V0IH5uYW1lOlwiaW5uZXItaHRtbC1zdmctbm9kZVwiIChmdW4gdGFnIH5hdHRycyAtPlxuICAgIGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5Ok5vbmUgfmF0dHJzKVxuICB8PiBTdGFnZWQudW5zdGFnZVxuOztcblxubGV0IGlubmVyX2h0bWwgPVxuICBJbm5lcl9odG1sLndpZGdldCB+bmFtZTpcImlubmVyLWh0bWwtbm9kZVwiIChmdW4gdGFnIH5hdHRycyAtPlxuICAgIGNyZWF0ZSB0YWcgP2tleTpOb25lIH5hdHRycylcbiAgfD4gU3RhZ2VkLnVuc3RhZ2Vcbjs7XG5cbmxldCBhID0gY3JlYXRlIFwiYVwiXG5sZXQgYWJiciA9IGNyZWF0ZSBcImFiYnJcIlxubGV0IGJvZHkgPSBjcmVhdGUgXCJib2R5XCJcbmxldCBidXR0b24gPSBjcmVhdGUgXCJidXR0b25cIlxubGV0IGNvZGUgPSBjcmVhdGUgXCJjb2RlXCJcbmxldCBkYXRhbGlzdCA9IGNyZWF0ZSBcImRhdGFsaXN0XCJcbmxldCBkZXRhaWxzID0gY3JlYXRlIFwiZGV0YWlsc1wiXG5sZXQgZGl2ID0gY3JlYXRlIFwiZGl2XCJcbmxldCBtYWluID0gY3JlYXRlIFwibWFpblwiXG5sZXQgZmllbGRzZXQgPSBjcmVhdGUgXCJmaWVsZHNldFwiXG5sZXQgbGVnZW5kID0gY3JlYXRlIFwibGVnZW5kXCJcbmxldCBmb290ZXIgPSBjcmVhdGUgXCJmb290ZXJcIlxubGV0IGgxID0gY3JlYXRlIFwiaDFcIlxubGV0IGgyID0gY3JlYXRlIFwiaDJcIlxubGV0IGgzID0gY3JlYXRlIFwiaDNcIlxubGV0IGg0ID0gY3JlYXRlIFwiaDRcIlxubGV0IGg1ID0gY3JlYXRlIFwiaDVcIlxubGV0IGg2ID0gY3JlYXRlIFwiaDZcIlxubGV0IGhlYWRlciA9IGNyZWF0ZSBcImhlYWRlclwiXG5sZXQgaHRtbCA9IGNyZWF0ZSBcImh0bWxcIlxubGV0IGlucHV0ID0gY3JlYXRlX2NoaWxkbGVzcyBcImlucHV0XCJcbmxldCBpbWcgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaW1nXCJcbmxldCBpbnB1dF9kZXByZWNhdGVkID0gY3JlYXRlIFwiaW5wdXRcIlxubGV0IHRleHRhcmVhID0gY3JlYXRlIFwidGV4dGFyZWFcIlxubGV0IHNlbGVjdCA9IGNyZWF0ZSBcInNlbGVjdFwiXG5sZXQgb3B0Z3JvdXAgPSBjcmVhdGUgXCJvcHRncm91cFwiXG5sZXQgb3B0aW9uID0gY3JlYXRlIFwib3B0aW9uXCJcbmxldCBsYWJlbCA9IGNyZWF0ZSBcImxhYmVsXCJcbmxldCBsaSA9IGNyZWF0ZSBcImxpXCJcbmxldCBwID0gY3JlYXRlIFwicFwiXG5sZXQgcHJlID0gY3JlYXRlIFwicHJlXCJcbmxldCBzZWN0aW9uID0gY3JlYXRlIFwic2VjdGlvblwiXG5sZXQgc3BhbiA9IGNyZWF0ZSBcInNwYW5cIlxubGV0IHN0cm9uZyA9IGNyZWF0ZSBcInN0cm9uZ1wiXG5sZXQgZW0gPSBjcmVhdGUgXCJlbVwiXG5sZXQgYmxvY2txdW90ZSA9IGNyZWF0ZSBcImJsb2NrcXVvdGVcIlxubGV0IHN1bW1hcnkgPSBjcmVhdGUgXCJzdW1tYXJ5XCJcbmxldCBpZnJhbWUgPSBjcmVhdGUgXCJpZnJhbWVcIlxubGV0IHRhYmxlID0gY3JlYXRlIFwidGFibGVcIlxubGV0IHRib2R5ID0gY3JlYXRlIFwidGJvZHlcIlxubGV0IHRkID0gY3JlYXRlIFwidGRcIlxubGV0IHRoID0gY3JlYXRlIFwidGhcIlxubGV0IHRoZWFkID0gY3JlYXRlIFwidGhlYWRcIlxubGV0IHRyID0gY3JlYXRlIFwidHJcIlxubGV0IHVsID0gY3JlYXRlIFwidWxcIlxubGV0IG9sID0gY3JlYXRlIFwib2xcIlxubGV0IGJyID0gY3JlYXRlX2NoaWxkbGVzcyBcImJyXCJcbmxldCBociA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJoclwiXG5sZXQgZGwgPSBjcmVhdGUgXCJkbFwiXG5sZXQgZHQgPSBjcmVhdGUgXCJkdFwiXG5sZXQgZGQgPSBjcmVhdGUgXCJkZFwiXG5cbmxldCBzZXhwX2Zvcl9kZWJ1Z2dpbmcgP2luZGVudCBzZXhwID1cbiAgc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0gP2luZGVudCB8PiB0ZXh0IHw+IExpc3QucmV0dXJuIHw+IHByZSB+YXR0cnM6W11cbjs7XG5cbm1vZHVsZSBQYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPSBSYXcuUGF0Y2gudFxuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID1cbiAgICBSYXcuUGF0Y2guY3JlYXRlIH5wcmV2aW91czoodF90b19qcyBwcmV2aW91cykgfmN1cnJlbnQ6KHRfdG9fanMgY3VycmVudClcbiAgOztcblxuICBsZXQgYXBwbHkgdCBlbHQgPSBSYXcuUGF0Y2guYXBwbHkgZWx0IHRcbiAgbGV0IGlzX2VtcHR5IHQgPSBSYXcuUGF0Y2guaXNfZW1wdHkgdFxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFZub2RlID9rZXkgfnRhZyBhdHRycyBjaGlsZHJlbilcbiAgOztcblxuICBsZXQgY3JlYXRlX3N2ZyA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFN2ZyA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGluY2x1ZGUgQXR0clxuICBtb2R1bGUgSG9va3MgPSBIb29rc1xuICBtb2R1bGUgR2xvYmFsX2xpc3RlbmVycyA9IEdsb2JhbF9saXN0ZW5lcnNcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBBdHRyLk11bHRpXG5tb2R1bGUgRWZmZWN0ID0gRWZmZWN0XG5tb2R1bGUgTm9kZSA9IE5vZGVcbiIsIm1vZHVsZSBWZG9tID0gVmRvbVxubW9kdWxlIERvbV9mbG9hdCA9IERvbV9mbG9hdFxubW9kdWxlIEpzX21hcCA9IEpzX21hcFxuXG5tb2R1bGUgVG9wX2xldmVsX2VmZmVjdHMgPSBzdHJ1Y3RcbiAgbGV0ICgpID1cbiAgICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgICAgbnVtYmVycyBhZnRlciB0aGUgZGVjaW1hbCBwbGFjZS4gKilcbiAgICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENwdXNldCA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludC5TZXQudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cblxuICAgICAgbGV0IHZhbGlkYXRlIHQgPVxuICAgICAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlXG4gICAgICAgICAgKEludC52YWxpZGF0ZV9sYm91bmQgfm1pbjooSW5jbCAxKSAoU2V0Lmxlbmd0aCB0KSlcbiAgICAgICAgICAoU2V0LnRvX2xpc3QgdFxuICAgICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpJbnQudmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gICAgICAgICAgIHw+IFZhbGlkYXRlLm5hbWVfbGlzdCBcIlRocmVhZF9wb29sX2NwdXNldFwiKVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gSW50LlNldC5lcXVhbCAodDEgfD4gcmF3KSAodDIgfD4gcmF3KVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgSW5oZXJpdFxuICB8IENwdXNldCBvZiBDcHVzZXQudFxuW0BAZGVyaXZpbmcgc2V4cF1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUdXBsZV90eXBlX2ludGZcblxubW9kdWxlIFNsb3RzID0gc3RydWN0XG4gIHR5cGUgdV8gPSB7IHNsb3RzX3Blcl90dXBsZSA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHUgPSB1XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHRfID0gWyBgU2xvdHMgb2YgdV8gXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2xvdHNfcGVyX3R1cGxlIChgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSBuIH0pID0gblxuXG4gIHR5cGUgJ2EwIHQxID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEpIHQyID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMikgdDMgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMpIHQ0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQpIHQ1ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSkgdDYgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYpIHQ3ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcpIHQ4ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCkgdDkgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTkpIHQxMCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwKSB0MTEgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSkgdDEyID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIpIHQxMyA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyLCAnYTEzKSB0MTQgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0MSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEgfVxuICBsZXQgdDIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAyIH1cbiAgbGV0IHQzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMyB9XG4gIGxldCB0NCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDQgfVxuICBsZXQgdDUgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA1IH1cbiAgbGV0IHQ2ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNiB9XG4gIGxldCB0NyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDcgfVxuICBsZXQgdDggPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA4IH1cbiAgbGV0IHQ5ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOSB9XG4gIGxldCB0MTAgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMCB9XG4gIGxldCB0MTEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMSB9XG4gIGxldCB0MTIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMiB9XG4gIGxldCB0MTMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMyB9XG4gIGxldCB0MTQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxNCB9XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUdXBsZV9wb29sX2ludGZcbm1vZHVsZSBUdXBsZV90eXBlID0gVHVwbGVfdHlwZVxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgcGh5c19lcXVhbCA9IFN0ZGxpYi4oID09IClcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG51bV9iaXRzID0gSW50Lm51bV9iaXRzXG4gIGxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBjb25jYXQgbCA9IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgbFxuXG5tb2R1bGUgdHlwZSBTID0gU1xuXG5tb2R1bGUgUG9vbCA9IHN0cnVjdFxuICBsZXQgZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiBpZiBvbGRfY2FwYWNpdHkgPSAwIHRoZW4gMSBlbHNlIG9sZF9jYXBhY2l0eSAqIDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDw9IG9sZF9jYXBhY2l0eVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb29sLmdyb3cgZ290IHRvbyBzbWFsbCBjYXBhY2l0eVwiXG4gICAgICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSwgYG9sZF9jYXBhY2l0eSBvbGRfY2FwYWNpdHkpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgXSAqIFsgYG9sZF9jYXBhY2l0eSBvZiBpbnQgXV07XG4gICAgICBjYXBhY2l0eVxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFR1cGxlX3R5cGUuU2xvdHNcblxuICBsZXQgbWF4X3Nsb3QgPSAxNFxuXG4gICgqIFRoZSBwb29sIGlzIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIFtVbmlmb3JtX2FycmF5LnRdLCB3aGVyZSBpbmRleCB6ZXJvIGhhcyB0aGVcbiAgICAgbWV0YWRhdGEgYWJvdXQgdGhlIHBvb2wgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBhcmUgdGhlIHR1cGxlcyBsYXllZCBvdXQgb25lIGFmdGVyXG4gICAgIHRoZSBvdGhlci4gIEVhY2ggdHVwbGUgdGFrZXMgWzEgKyBzbG90c19wZXJfdHVwbGVdIGluZGljZXMgaW4gdGhlIHBvb2wsIHdoZXJlIHRoZVxuICAgICBmaXJzdCBpbmRleCBob2xkcyBhIGhlYWRlciBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGhvbGQgdGhlIHR1cGxlJ3Mgc2xvdHM6XG5cbiAgICAge3ZcbiAgICAgfCBoZWFkZXIgfCBzMCB8IHMxIHwgLi4uIHwgczxOLTE+IHxcbiAgICAgdn1cblxuICAgICBBIFtQb2ludGVyLnRdIHRvIGEgdHVwbGUgY29udGFpbnMgdGhlIGludGVnZXIgaW5kZXggd2hlcmUgaXRzIGhlYWRlciBpcywgYXMgd2VsbCBhc1xuICAgICAoYSBtYXNrIG9mKSB0aGUgdHVwbGUncyB1bmlxdWUgaWQuXG5cbiAgICAgVGhlIGZyZWUgdHVwbGVzIGFyZSBzaW5nbHkgbGlua2VkIHZpYSB0aGUgaGVhZGVycy5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIG1hcmtlZCB0byBpbmRpY2F0ZSBzbywgYW5kIGFsc28gdG8gaW5jbHVkZSB0aGVcbiAgICAgdHVwbGUncyB1bmlxdWUgaWQuICBUaGlzIGFsbG93cyB1cyB0byBjaGVjayBpbiBjb25zdGFudCB0aW1lIHdoZXRoZXIgYSBwb2ludGVyIGlzXG4gICAgIHZhbGlkLCBieSBjb21wYXJpbmcgdGhlIGlkIGluIHRoZSBwb2ludGVyIHdpdGggdGhlIGlkIGluIHRoZSBoZWFkZXIuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIG5vdCBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgcGFydCBvZiB0aGUgZnJlZSBsaXN0LCBhbmQgaXRzIHR1cGxlIHNsb3RzXG4gICAgIGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlcywgZnJvbSB0aGUgW2R1bW15XSB0dXBsZSBzdXBwbGllZCB0b1xuICAgICBbY3JlYXRlXS4gIFdlIG11c3QgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGNvcnJlY3QgdHlwZSB0byBwcmV2ZW50IGEgc2VnZmF1bHQgaW5cbiAgICAgY29kZSB0aGF0IChtaXN0YWtlbmx5KSB1c2VzIGEgcG9pbnRlciB0byBhIGZyZWUgdHVwbGUuXG5cbiAgICAgRm9yIFtQb29sLlVuc2FmZV0sIGEgc2xvdCBpbiBhIGZyZWUgb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgYW4gaW50OyBpdCBtdXN0IG5vdCBiZVxuICAgICBwb2ludGVyIHRvIHByZXZlbnQgYSBzcGFjZSBsZWFrLiAgSG93ZXZlciwgdGhlIGludCBpbiB0aGUgc2xvdCBtYXkgbm90IHJlcHJlc2VudCBhXG4gICAgIHZhbGlkIHZhbHVlIG9mIHRoZSB0eXBlLlxuICAqKVxuXG4gIG1vZHVsZSBTbG90ID0gc3RydWN0XG4gICAgdHlwZSAoJ3Nsb3RzLCAnYSkgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsICh0MSA6IChfLCBfKSB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgdDAgPSAxXG4gICAgbGV0IHQxID0gMlxuICAgIGxldCB0MiA9IDNcbiAgICBsZXQgdDMgPSA0XG4gICAgbGV0IHQ0ID0gNVxuICAgIGxldCB0NSA9IDZcbiAgICBsZXQgdDYgPSA3XG4gICAgbGV0IHQ3ID0gOFxuICAgIGxldCB0OCA9IDlcbiAgICBsZXQgdDkgPSAxMFxuICAgIGxldCB0MTAgPSAxMVxuICAgIGxldCB0MTEgPSAxMlxuICAgIGxldCB0MTIgPSAxM1xuICAgIGxldCB0MTMgPSAxNFxuICAgIGxldCV0ZXN0IF8gPSB0MTMgPSBtYXhfc2xvdFxuICBlbmRcblxuICAoKiBXZSBvbmx5IGhhdmUgW0ludC5udW1fYml0c10gYml0cyBhdmFpbGFibGUgZm9yIHBvb2wgcG9pbnRlcnMuICBUaGUgYml0cyBvZiBhIHBvb2xcbiAgICAgcG9pbnRlciBlbmNvZGUgdHdvIHRoaW5nczpcblxuICAgICAtIHRoZSB0dXBsZSdzIGFycmF5IGluZGV4IGluIHRoZSBwb29sXG4gICAgIC0gdGhlIHR1cGxlJ3MgaWRlbnRpZmllciAobm90IG5lY2Vzc2FyaWx5IHVuaXF1ZSlcblxuICAgICBXZSBjaG9vc2UgW2FycmF5X2luZGV4X251bV9iaXRzXSBhcyBsYXJnZSBhcyBuZWVkZWQgZm9yIHRoZSBtYXhpbXVtIHBvb2wgY2FwYWNpdHlcbiAgICAgdGhhdCB3ZSB3YW50IHRvIHN1cHBvcnQsIGFuZCB1c2UgdGhlIHJlbWFpbmluZyBbbWFza2VkX3R1cGxlX2lkX251bV9iaXRzXSBiaXRzIGZvclxuICAgICB0aGUgaWRlbnRpZmllci4gIDY0LWJpdCBhbmQgMzItYml0IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGhhdmUgdmVyeSBkaWZmZXJlbnRcbiAgICAgYWRkcmVzcy1zcGFjZSBzaXplcywgc28gd2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gZGlmZmVyZW50bHkuICopXG5cbiAgbGV0IGFycmF5X2luZGV4X251bV9iaXRzID1cbiAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChJbnQubnVtX2JpdHMgPSA2Myk7XG4gICAgICAzMClcbiAgICBlbHNlIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gMzEgfHwgSW50Lm51bV9iaXRzID0gMzIpO1xuICAgICAgMjIpXG4gIDs7XG5cbiAgbGV0IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA9IEludC5udW1fYml0cyAtIGFycmF5X2luZGV4X251bV9iaXRzXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzICsgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzIDw9IEludC5udW1fYml0c1xuICBsZXQgbWF4X2FycmF5X2xlbmd0aCA9IDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzXG5cbiAgbW9kdWxlIFR1cGxlX2lkIDogc2lnXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaW5pdCA6IHRcbiAgICB2YWwgbmV4dCA6IHQgLT4gdFxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBleGFtcGxlcyA6IHQgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIFdlIGd1YXJhbnRlZSB0aGF0IHR1cGxlIGlkcyBhcmUgbm9ubmVnYXRpdmUgc28gdGhhdCB0aGV5IGNhbiBiZSBlbmNvZGVkIGluXG4gICAgICAgaGVhZGVycy4gKilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMClcbiAgICBsZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xuICAgIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgaW5pdCA9IDBcbiAgICBsZXQgbmV4dCB0ID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiB0ICsgMSBlbHNlIGlmIHQgPSBJbnQubWF4X3ZhbHVlIHRoZW4gMCBlbHNlIHQgKyAxXG4gICAgbGV0IHRvX2ludCB0ID0gdFxuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIGlmIGkgPCAwXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiVHVwbGVfaWQub2ZfaW50IGdvdCBuZWdhdGl2ZSBpbnRcIiBpIFslc2V4cF9vZjogaW50XTtcbiAgICAgIGlcbiAgICA7O1xuXG4gICAgbGV0IGV4YW1wbGVzID0gWyAwOyAxOyAweDFGRkZfRkZGRjsgSW50Lm1heF92YWx1ZSBdXG4gIGVuZFxuXG4gIGxldCB0dXBsZV9pZF9tYXNrID0gKDEgbHNsIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cykgLSAxXG5cbiAgbW9kdWxlIFBvaW50ZXIgOiBzaWdcbiAgICAoKiBbUG9pbnRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHN1bSB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBOb3JtYWwgb2YgeyBoZWFkZXJfaW5kZXggOiBpbnQ7IG1hc2tlZF90dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIFRoZSBlbmNvZGluZyBpcyBjaG9zZW4gdG8gb3B0aW1pemUgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbiwgbmFtZWx5IHR1cGxlLXNsb3RcbiAgICAgICBhY2Nlc3MsIHRoZSBbc2xvdF9pbmRleF0gZnVuY3Rpb24uICBUaGUgZW5jb2RpbmcgaXMgZGVzaWduZWQgc28gdGhhdCBbc2xvdF9pbmRleF1cbiAgICAgICBwcm9kdWNlcyBhIG5lZ2F0aXZlIG51bWJlciBmb3IgW051bGxdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzdWJzZXF1ZW50IGFycmF5IGJvdW5kc1xuICAgICAgIGNoZWNrIHRvIGZhaWwuICopXG5cbiAgICB0eXBlICdzbG90cyB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBwaHlzX2NvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHBoeXNfZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCogVGhlIG51bGwgcG9pbnRlci4gIFtudWxsXSBpcyBhIGZ1bmN0aW9uIGR1ZSB0byBpc3N1ZXMgd2l0aCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24uICopXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCogTm9ybWFsIHBvaW50ZXJzLiAqKVxuXG4gICAgdmFsIGNyZWF0ZSA6IGhlYWRlcl9pbmRleDppbnQgLT4gVHVwbGVfaWQudCAtPiBfIHRcbiAgICB2YWwgaGVhZGVyX2luZGV4IDogXyB0IC0+IGludFxuICAgIHZhbCBtYXNrZWRfdHVwbGVfaWQgOiBfIHQgLT4gaW50XG4gICAgdmFsIHNsb3RfaW5kZXggOiBfIHQgLT4gKF8sIF8pIFNsb3QudCAtPiBpbnRcbiAgICB2YWwgZmlyc3Rfc2xvdF9pbmRleCA6IF8gdCAtPiBpbnRcblxuICAgIG1vZHVsZSBJZCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgICB2YWwgb2ZfaW50NjMgOiBJbnQ2My50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCB0b19pZCA6IF8gdCAtPiBJZC50XG4gICAgdmFsIG9mX2lkX2V4biA6IElkLnQgLT4gXyB0XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIEEgcG9pbnRlciBpcyBlaXRoZXIgW251bGxdIG9yIHRoZSAocG9zaXRpdmUpIGluZGV4IGluIHRoZSBwb29sIG9mIHRoZSBuZXh0LWZyZWVcbiAgICAgICBmaWVsZCBwcmVjZWVkaW5nIHRoZSB0dXBsZSdzIHNsb3RzLiAqKVxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGxldCBzZXhwX29mX3QgXyB0ID0gU2V4cC5BdG9tIChzcHJpbnRmIFwiPFBvb2wuUG9pbnRlci50OiAweCUwOHg+XCIgdClcbiAgICBsZXQgcGh5c19lcXVhbCAodDEgOiBfIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxuICAgIGxldCBwaHlzX2NvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IG51bGwgKCkgPSAtbWF4X3Nsb3QgLSAxXG4gICAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcblxuICAgICgqIFtudWxsXSBtdXN0IGJlIHN1Y2ggdGhhdCBbbnVsbCArIHNsb3RdIGlzIGFuIGludmFsaWQgYXJyYXkgaW5kZXggZm9yIGFsbCBzbG90cy5cbiAgICAgICBPdGhlcndpc2UgZ2V0L3NldCBvbiB0aGUgbnVsbCBwb2ludGVyIG1heSBsZWFkIHRvIGEgc2VnZmF1bHQuICopXG4gICAgbGV0JXRlc3QgXyA9IG51bGwgKCkgKyBtYXhfc2xvdCA8IDBcblxuICAgIGxldCBjcmVhdGUgfmhlYWRlcl9pbmRleCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9XG4gICAgICBoZWFkZXJfaW5kZXhcbiAgICAgIGxvciAoKFR1cGxlX2lkLnRvX2ludCB0dXBsZV9pZCBsYW5kIHR1cGxlX2lkX21hc2spIGxzbCBhcnJheV9pbmRleF9udW1fYml0cylcbiAgICA7O1xuXG4gICAgbGV0IGhlYWRlcl9pbmRleF9tYXNrID0gKDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKSAtIDFcbiAgICBsZXQgbWFza2VkX3R1cGxlX2lkIHQgPSB0IGxzciBhcnJheV9pbmRleF9udW1fYml0c1xuICAgIGxldCBoZWFkZXJfaW5kZXggdCA9IHQgbGFuZCBoZWFkZXJfaW5kZXhfbWFza1xuICAgIGxldCBpbnZhcmlhbnQgXyB0ID0gaWYgbm90IChpc19udWxsIHQpIHRoZW4gYXNzZXJ0IChoZWFkZXJfaW5kZXggdCA+IDApXG4gICAgbGV0JXRlc3RfdW5pdCBfID0gaW52YXJpYW50IGlnbm9yZSAobnVsbCAoKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biB0dXBsZV9pZCAtPlxuICAgICAgICBpbnZhcmlhbnQgaWdub3JlIChjcmVhdGUgfmhlYWRlcl9pbmRleDoxIHR1cGxlX2lkKSlcbiAgICA7O1xuXG4gICAgbGV0IHNsb3RfaW5kZXggdCBzbG90ID0gaGVhZGVyX2luZGV4IHQgKyBzbG90XG4gICAgbGV0IGZpcnN0X3Nsb3RfaW5kZXggdCA9IHNsb3RfaW5kZXggdCBTbG90LnQwXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBlbmRcblxuICAgIGxldCB0b19pZCB0ID0gSWQub2ZfaW50IHRcblxuICAgIGxldCBvZl9pZF9leG4gaWQgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCB0ID0gSWQudG9faW50X2V4biBpZCBpblxuICAgICAgICBpZiBpc19udWxsIHRcbiAgICAgICAgdGhlbiB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaG91bGRfZXF1YWwgPVxuICAgICAgICAgICAgY3JlYXRlIH5oZWFkZXJfaW5kZXg6KGhlYWRlcl9pbmRleCB0KSAoVHVwbGVfaWQub2ZfaW50IChtYXNrZWRfdHVwbGVfaWQgdCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIHQgc2hvdWxkX2VxdWFsXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcInNob3VsZCBlcXVhbFwiIHNob3VsZF9lcXVhbCBbJXNleHBfb2Y6IF8gdF0pXG4gICAgICB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb2ludGVyLm9mX2lkX2V4biBnb3Qgc3RyYW5nZSBpZFwiXG4gICAgICAgICAgKGlkLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBJZC50ICogZXhuXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgICAoKiBBIFtIZWFkZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBGcmVlIG9mIHsgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IGludCB9XG4gICAgICAgICB8IFVzZWQgb2YgeyB0dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIElmIGEgdHVwbGUgaXMgZnJlZSwgaXRzIGhlYWRlciBpcyBzZXQgdG8gZWl0aGVyIFtOdWxsXSBvciBbRnJlZV0gd2l0aFxuICAgICAgIFtuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XSBpbmRpY2F0aW5nIHRoZSBoZWFkZXIgb2YgdGhlIG5leHQgdHVwbGUgb24gdGhlIGZyZWUgbGlzdC5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGluIHVzZSwgaXQgaGVhZGVyIGlzIHNldCB0byBbVXNlZF0uICopXG5cbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB0XG4gICAgdmFsIGlzX251bGwgOiB0IC0+IGJvb2xcbiAgICB2YWwgZnJlZSA6IG5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aW50IC0+IHRcbiAgICB2YWwgaXNfZnJlZSA6IHQgLT4gYm9vbFxuICAgIHZhbCBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IDogdCAtPiBpbnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX2ZyZWUgdF0gKilcblxuICAgIHZhbCB1c2VkIDogVHVwbGVfaWQudCAtPiB0XG4gICAgdmFsIGlzX3VzZWQgOiB0IC0+IGJvb2xcbiAgICB2YWwgdHVwbGVfaWQgOiB0IC0+IFR1cGxlX2lkLnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX3VzZWQgdF0gKilcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50XG5cbiAgICBsZXQgbnVsbCA9IDBcbiAgICBsZXQgaXNfbnVsbCB0ID0gdCA9IDBcblxuICAgICgqIFdlIGtub3cgdGhhdCBoZWFkZXIgaW5kaWNlcyBhcmUgWz4gMF0sIGJlY2F1c2UgaW5kZXggWzBdIGhvbGRzIHRoZSBtZXRhZGF0YS4gKilcbiAgICBsZXQgZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleCA9IG5leHRfZnJlZV9oZWFkZXJfaW5kZXhcbiAgICBsZXQgaXNfZnJlZSB0ID0gdCA+IDBcbiAgICBsZXQgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0ID0gdFxuICAgIGxldCB1c2VkICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID0gLTEgLSAodHVwbGVfaWQgOj4gaW50KVxuICAgIGxldCBpc191c2VkIHQgPSB0IDwgMFxuICAgIGxldCB0dXBsZV9pZCB0ID0gVHVwbGVfaWQub2ZfaW50ICgtKHQgKyAxKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biBpZCAtPlxuICAgICAgICBsZXQgdCA9IHVzZWQgaWQgaW5cbiAgICAgICAgYXNzZXJ0IChpc191c2VkIHQpO1xuICAgICAgICBhc3NlcnQgKFR1cGxlX2lkLmVxdWFsICh0dXBsZV9pZCB0KSBpZCkpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBpZiBpc19udWxsIHRcbiAgICAgIHRoZW4gU2V4cC5BdG9tIFwibnVsbFwiXG4gICAgICBlbHNlIGlmIGlzX2ZyZWUgdFxuICAgICAgdGhlbiBTZXhwLihMaXN0IFsgQXRvbSBcIkZyZWVcIjsgQXRvbSAoSW50LnRvX3N0cmluZyAobmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0KSkgXSlcbiAgICAgIGVsc2UgU2V4cC4oTGlzdCBbIEF0b20gXCJVc2VkXCI7IEF0b20gKFR1cGxlX2lkLnRvX3N0cmluZyAodHVwbGVfaWQgdCkpIF0pXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1ldGFkYXRhX2luZGV4ID0gMFxuICBsZXQgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ID0gMVxuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgKG1heF9hcnJheV9sZW5ndGggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gKDEgKyBzbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBmb3Igc2xvdHNfcGVyX3R1cGxlID0gMSB0byBtYXhfc2xvdCBkb1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKCgxICsgc2xvdHNfcGVyX3R1cGxlKSAqIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICA8PSBtYXhfYXJyYXlfbGVuZ3RoKVxuICAgIGRvbmVcbiAgOztcblxuICBtb2R1bGUgTWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgKCogW3Nsb3RzX3Blcl90dXBsZV0gaXMgbnVtYmVyIG9mIHNsb3RzIGluIGEgdHVwbGUgYXMgc2VlbiBieSB0aGUgdXNlcjsgaS5lLiBub3RcbiAgICAgICAgICAgY291bnRpbmcgdGhlIG5leHQtZnJlZSBwb2ludGVyLiAqKVxuICAgICAgICBzbG90c19wZXJfdHVwbGUgOiBpbnRcbiAgICAgIDsgY2FwYWNpdHkgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2lkIDogVHVwbGVfaWQudFxuICAgICAgOyBtdXRhYmxlIGZpcnN0X2ZyZWUgOiBIZWFkZXIudFxuICAgICAgKCogW2R1bW15XSBpcyBbTm9uZV0gaW4gYW4gdW5zYWZlIHBvb2wuICBJbiBhIHNhZmUgcG9vbCwgW2R1bW15XSBpcyBbU29tZSBhXSwgd2l0aFxuICAgICAgICAgW1VuaWZvcm1fYXJyYXkubGVuZ3RoIGEgPSBzbG90c19wZXJfdHVwbGVdLiAgW2R1bW15XSBpcyBhY3R1YWxseSBhIHR1cGxlIHZhbHVlXG4gICAgICAgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUgKGNvcnJlc3BvbmRpbmcgdG8gWydzbG90c10pLCBidXQgd2UgbWFrZSB0aGUgdHlwZSBvZlxuICAgICAgICAgW2R1bW15XSBiZSBbT2JqLnQgVW5pZm9ybV9hcnJheS50XSBiZWNhdXNlIHdlIGNhbid0IHdyaXRlIHRoYXQgdHlwZSBoZXJlLiAgQWxzbyxcbiAgICAgICAgIHRoZSBwdXJwb3NlIG9mIFtkdW1teV0gaXMgdG8gaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCwgbWFraW5nIFtkdW1teV0gYW4gW09iai50XG4gICAgICAgICBVbmlmb3JtX2FycmF5LnRdIGxldHMgdXMgaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCB1c2luZyBbVW5pZm9ybV9hcnJheS5ibGl0XVxuICAgICAgICAgZnJvbSBbZHVtbXldIHRvIHRoZSBwb29sLCB3aGljaCBpcyBhbiBbT2JqLnQgVW5pZm9ybV9hcnJheS50XS4gKilcbiAgICAgIDsgZHVtbXkgOiAoT2JqLnQgVW5pZm9ybV9hcnJheS50W0BzZXhwLm9wYXF1ZV0pIG9wdGlvblxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0ID0gMSArIHQuc2xvdHNfcGVyX3R1cGxlXG4gICAgbGV0IGFycmF5X2xlbmd0aCB0ID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHQuY2FwYWNpdHkgKiBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0KVxuXG4gICAgbGV0IGhlYWRlcl9pbmRleF90b190dXBsZV9udW0gdCB+aGVhZGVyX2luZGV4ID1cbiAgICAgIChoZWFkZXJfaW5kZXggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdFxuICAgIDs7XG5cbiAgICBsZXQgdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAodHVwbGVfbnVtICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IHQgdHVwbGVfbnVtID1cbiAgICAgIHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gKyAxXG4gICAgOztcblxuICAgIGxldCBpc19mdWxsIHQgPSB0Lmxlbmd0aCA9IHQuY2FwYWNpdHlcbiAgZW5kXG5cbiAgb3BlbiBNZXRhZGF0YVxuXG4gICgqIFdlIHVzZSB0eXBlIFtPYmoudF0gYmVjYXVzZSB0aGUgYXJyYXkgaG9sZHMgYSBtaXggb2YgaW50ZWdlcnMgYXMgd2VsbCBhcyBPQ2FtbCB2YWx1ZXNcbiAgICAgb2YgYXJiaXRyYXJ5IHR5cGUuICopXG4gIHR5cGUgJ3Nsb3RzIHQgPSBPYmoudCBVbmlmb3JtX2FycmF5LnRcblxuICBsZXQgbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IG1ldGFkYXRhX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBzbG90cyBNZXRhZGF0YS50KVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9IChtZXRhZGF0YSB0KS5sZW5ndGhcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3R5IHQgPSBNZXRhZGF0YS5zZXhwX29mX3Qgc2V4cF9vZl90eSAobWV0YWRhdGEgdClcblxuICAoKiBCZWNhdXNlIFt1bnNhZmVfaGVhZGVyXSBhbmQgW3Vuc2FmZV9zZXRfaGVhZGVyXSBkbyBub3QgZG8gYSBib3VuZHMgY2hlY2ssIG9uZSBtdXN0IGJlXG4gICAgIHN1cmUgdGhhdCBvbmUgaGFzIGEgdmFsaWQgW2hlYWRlcl9pbmRleF0gYmVmb3JlIGNhbGxpbmcgdGhlbS4gKilcbiAgbGV0IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBoZWFkZXJfaW5kZXggfD4gKE9iai5vYmogOiBfIC0+IEhlYWRlci50KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKGhlYWRlciA6IEhlYWRlci50KSA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaGVhZGVyX2luZGV4IChoZWFkZXIgOj4gaW50KVxuICA7O1xuXG4gIGxldCBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgaGVhZGVyX2luZGV4ID49IHN0YXJ0X29mX3R1cGxlc19pbmRleCAmJiBoZWFkZXJfaW5kZXggPCBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyID1cbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgIEhlYWRlci5pc191c2VkIGhlYWRlclxuICAgICYmIFR1cGxlX2lkLnRvX2ludCAoSGVhZGVyLnR1cGxlX2lkIGhlYWRlcikgbGFuZCB0dXBsZV9pZF9tYXNrXG4gICAgICAgPSBQb2ludGVyLm1hc2tlZF90dXBsZV9pZCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcilcbiAgICAoKiBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRoZSBwb2ludGVyIGlzbid0IFtudWxsXSBhbmQgaXMgaW4gYm91bmRzLCBzbyB3ZSBrbm93IGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIGEgaGVhZGVyLCBzaW5jZSB3ZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYWxsIHBvaW50ZXJzIG90aGVyIHRoYW5cbiAgICAgICBbbnVsbF0gYXJlLiAqKVxuICAgICYmIHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgX3QgcG9pbnRlciA9IFBvaW50ZXIudG9faWQgcG9pbnRlclxuXG4gIGxldCBpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXhcbiAgICAmJiAwXG4gICAgICAgPSAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KVxuICAgICAgICAgbW9kIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIHRyeVxuICAgICAgbGV0IHBvaW50ZXIgPSBQb2ludGVyLm9mX2lkX2V4biBpZCBpblxuICAgICAgaWYgbm90IChQb2ludGVyLmlzX251bGwgcG9pbnRlcilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgICAgICBpZiBub3QgKGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXgpXG4gICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJpbnZhbGlkIGhlYWRlciBpbmRleFwiIGhlYWRlcl9pbmRleCBbJXNleHBfb2Y6IGludF07XG4gICAgICAgIGlmIG5vdCAodW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXIpIHRoZW4gZmFpbHdpdGggXCJwb2ludGVyIG5vdCBsaXZlXCIpO1xuICAgICAgcG9pbnRlclxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLnBvaW50ZXJfb2ZfaWRfZXhuIGdvdCBpbnZhbGlkIGlkXCJcbiAgICAgICAgKGlkLCB0LCBleG4pXG4gICAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50ICogXyB0ICogZXhuXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIG1ldGFkYXRhKSBpblxuICAgICAgTWV0YWRhdGEuRmllbGRzLml0ZXJcbiAgICAgICAgfnNsb3RzX3Blcl90dXBsZTooY2hlY2sgKGZ1biBzbG90c19wZXJfdHVwbGUgLT4gYXNzZXJ0IChzbG90c19wZXJfdHVwbGUgPiAwKSkpXG4gICAgICAgIH5jYXBhY2l0eTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjYXBhY2l0eSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCB0ID0gTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSkpXG4gICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gbWV0YWRhdGEuY2FwYWNpdHkpKSlcbiAgICAgICAgfm5leHRfaWQ6KGNoZWNrIFR1cGxlX2lkLmludmFyaWFudClcbiAgICAgICAgfmZpcnN0X2ZyZWU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyc3RfZnJlZSAtPlxuICAgICAgICAgICAgIGxldCBmcmVlID0gQXJyYXkuY3JlYXRlIH5sZW46bWV0YWRhdGEuY2FwYWNpdHkgZmFsc2UgaW5cbiAgICAgICAgICAgICBsZXQgciA9IHJlZiBmaXJzdF9mcmVlIGluXG4gICAgICAgICAgICAgd2hpbGUgbm90IChIZWFkZXIuaXNfbnVsbCAhcikgZG9cbiAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSAhciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChIZWFkZXIuaXNfZnJlZSBoZWFkZXIpO1xuICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGhlYWRlciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KTtcbiAgICAgICAgICAgICAgIGxldCB0dXBsZV9udW0gPSBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgIGlmIGZyZWUuKHR1cGxlX251bSlcbiAgICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJjeWNsZSBpbiBmcmVlIGxpc3RcIiB0dXBsZV9udW0gWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICAgICAgICAgZnJlZS4odHVwbGVfbnVtKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgciA6PSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleFxuICAgICAgICAgICAgIGRvbmUpKVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgU29tZSBkdW1teSAtPiBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGR1bW15ID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgaWYgSGVhZGVyLmlzX2ZyZWUgaGVhZGVyXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdF9zbG90ID0gdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgICAgZm9yIHNsb3QgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoT2JqLmlzX2ludCAoVW5pZm9ybV9hcnJheS5nZXQgdCAoZmlyc3Rfc2xvdCArIHNsb3QpKSlcbiAgICAgICAgICAgICAgICAgICBkb25lKVxuICAgICAgICAgICAgICAgZG9uZSkpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuaW52YXJpYW50IGZhaWxlZFwiIChleG4sIHQpIFslc2V4cF9vZjogZXhuICogXyB0XVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID0gKG1ldGFkYXRhIHQpLmNhcGFjaXR5XG4gIGxldCBpc19mdWxsIHQgPSBNZXRhZGF0YS5pc19mdWxsIChtZXRhZGF0YSB0KVxuXG4gIGxldCB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggPVxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBtZXRhZGF0YS5maXJzdF9mcmVlO1xuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gSGVhZGVyLmZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aGVhZGVyX2luZGV4XG4gIDs7XG5cbiAgbGV0IHNldF9tZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSBtZXRhZGF0YSA9XG4gICAgVW5pZm9ybV9hcnJheS5zZXQgdCBtZXRhZGF0YV9pbmRleCAoT2JqLnJlcHIgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hcnJheSAodHlwZSBzbG90cykgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkgOiBzbG90cyB0ID1cbiAgICBsZXQgdCA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlX29ial9hcnJheSB+bGVuOihNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGE7XG4gICAgdFxuICA7O1xuXG4gICgqIEluaXRpYWxpemUgdHVwbGVzIG51bWJlcmVkIGZyb20gW2xvXSAoaW5jbHVzaXZlKSB1cCB0byBbaGldIChleGNsdXNpdmUpLiAgRm9yIGVhY2hcbiAgICAgdHVwbGUsIHRoaXMgcHV0cyBkdW1teSB2YWx1ZXMgaW4gdGhlIHR1cGxlJ3Mgc2xvdHMgYW5kIGFkZHMgdGhlIHR1cGxlIHRvIHRoZSBmcmVlXG4gICAgIGxpc3QuICopXG4gIGxldCB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbyB+aGkgPVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gbG8gdG8gaGkgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczoodHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGZvciB0dXBsZV9udW0gPSBoaSAtIDEgZG93bnRvIGxvIGRvXG4gICAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdFxuICAgICAgICB0XG4gICAgICAgIG1ldGFkYXRhXG4gICAgICAgIH5oZWFkZXJfaW5kZXg6KHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmNyZWF0ZSBnb3QgaW52YWxpZCBjYXBhY2l0eVwiIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgc2xvdHNfcGVyX3R1cGxlID0gU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzIGluXG4gICAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgY2FwYWNpdHkgPiBtYXhfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuY3JlYXRlIGdvdCB0b28gbGFyZ2UgY2FwYWNpdHlcIlxuICAgICAgICAoY2FwYWNpdHksIGBtYXggbWF4X2NhcGFjaXR5KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heCBvZiBpbnQgXV07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IFR1cGxlX2lkLmluaXRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvOjAgfmhpOmNhcGFjaXR5O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlICh0eXBlIHR1cGxlKSAoc2xvdHMgOiAodHVwbGUsIF8pIFNsb3RzLnQpIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGxldCBkdW1teSA9XG4gICAgICBpZiBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgPSAxXG4gICAgICB0aGVuIFVuaWZvcm1fYXJyYXkuc2luZ2xldG9uIChPYmoucmVwciAoZHVtbXkgOiB0dXBsZSkpXG4gICAgICBlbHNlIChPYmoubWFnaWMgKGR1bW15IDogdHVwbGUpIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTooU29tZSBkdW1teSlcbiAgOztcblxuICAoKiBQdXJnZSBhIHBvb2wgYW5kIG1ha2UgaXQgdW51c2FibGUuICopXG4gIGxldCBkZXN0cm95IHQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAoKiBXZSBjbGVhciBvdXQgYWxsIHRoZSBwb29sJ3MgZW50cmllcywgd2hpY2ggY2F1c2VzIGFsbCBwb2ludGVycyB0byBiZSBpbnZhbGlkLiAgVGhpc1xuICAgICAgIGFsc28gcHJldmVudHMgdGhlIGRlc3Ryb3llZCBwb29sIGZyb20gdW5uZWNlc3NhcmlseSBrZWVwaW5nIGhlYXAgYmxvY2tzIGFsaXZlLlxuICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBbZnJlZV1pbmcgYWxsIHRoZSBlbnRyaWVzIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB3ZSBtYWtlIHRoZVxuICAgICAgIGZyZWUgbGlzdCBlbXB0eSBhcyB3ZWxsLiAqKVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGZvciBpID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4IHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChPYmoucmVwciAwKVxuICAgICAgIGRvbmVcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBIZWFkZXIubnVsbDtcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOihoZWFkZXJfaW5kZXggKyAxKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eSA9IDBcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gbWV0YWRhdGEubmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXkgPSBtZXRhZGF0YS5kdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGFcbiAgOztcblxuICBsZXRbQGNvbGRdIGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGxldCB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICA7IGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgICAgIDsgbGVuZ3RoXG4gICAgICAgIDsgbmV4dF9pZFxuICAgICAgICA7IGZpcnN0X2ZyZWUgPSBfXG4gICAgICAgIDsgZHVtbXlcbiAgICAgICAgfVxuICAgICAgPVxuICAgICAgbWV0YWRhdGEgdFxuICAgIGluXG4gICAgbGV0IGNhcGFjaXR5ID1cbiAgICAgIG1pbiAobWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpIChncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5KVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZ3JvdyBjYW5ub3QgZ3JvdyBwb29sOyBjYXBhY2l0eSBhbHJlYWR5IGF0IG1heGltdW1cIlxuICAgICAgICBjYXBhY2l0eVxuICAgICAgICBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aFxuICAgICAgOyBuZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQnID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICB+c3JjOnRcbiAgICAgIH5zcmNfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmRzdDp0J1xuICAgICAgfmRzdF9wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+bGVuOihvbGRfY2FwYWNpdHkgKiBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YSk7XG4gICAgZGVzdHJveSB0O1xuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQnIG1ldGFkYXRhIH5sbzpvbGRfY2FwYWNpdHkgfmhpOmNhcGFjaXR5O1xuICAgIGZvciB0dXBsZV9udW0gPSBvbGRfY2FwYWNpdHkgLSAxIGRvd250byAwIGRvXG4gICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQnIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgIGlmIG5vdCAoSGVhZGVyLmlzX3VzZWQgaGVhZGVyKVxuICAgICAgdGhlbiB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0JyBtZXRhZGF0YSB+aGVhZGVyX2luZGV4XG4gICAgZG9uZTtcbiAgICB0J1xuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfbWFsbG9jX2Z1bGwgdCA9XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLm1hbGxvYyBvZiBmdWxsIHBvb2xcIiB0IFslc2V4cF9vZjogXyB0XVxuICA7O1xuXG4gIGxldCBtYWxsb2MgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgOiBzbG90cyBQb2ludGVyLnQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgZmlyc3RfZnJlZSA9IG1ldGFkYXRhLmZpcnN0X2ZyZWUgaW5cbiAgICBpZiBIZWFkZXIuaXNfbnVsbCBmaXJzdF9mcmVlIHRoZW4gcmFpc2VfbWFsbG9jX2Z1bGwgdDtcbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggZmlyc3RfZnJlZSBpblxuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXg7XG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCArIDE7XG4gICAgbGV0IHR1cGxlX2lkID0gbWV0YWRhdGEubmV4dF9pZCBpblxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoSGVhZGVyLnVzZWQgdHVwbGVfaWQpO1xuICAgIG1ldGFkYXRhLm5leHRfaWQgPC0gVHVwbGVfaWQubmV4dCB0dXBsZV9pZDtcbiAgICBQb2ludGVyLmNyZWF0ZSB+aGVhZGVyX2luZGV4IHR1cGxlX2lkXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggLSAxO1xuICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcik7XG4gICAgbWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHBvcyA9IFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgKHBvcyArIGkpXG4gICAgICBkb25lXG4gICAgfCBTb21lIGR1bW15IC0+XG4gICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICB+ZHN0OnRcbiAgICAgICAgfmRzdF9wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBmcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgKCogQ2hlY2sgW3BvaW50ZXJfaXNfdmFsaWRdIHRvOlxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIG51bGwgcG9pbnRlclxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIGZyZWUgcG9pbnRlciAodGhpcyB3b3VsZCBsZWFkIHRvIGEgcG9vbCBpbmNvbnNpc3RlbmN5KVxuICAgICAgIC0gYmUgYWJsZSB0byB1c2UgdW5zYWZlIGZ1bmN0aW9ucyBhZnRlci4gKilcbiAgICBpZiBub3QgKHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5mcmVlIG9mIGludmFsaWQgcG9pbnRlclwiXG4gICAgICAgIChwb2ludGVyLCB0KVxuICAgICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50ICogXyB0XTtcbiAgICB1bnNhZmVfZnJlZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzIgdCBhMCBhMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTQpIChPYmoucmVwciBhMTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgZ2V0IHQgcCBzbG90ID0gT2JqLm9iaiAoVW5pZm9ybV9hcnJheS5nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwIHNsb3QgPVxuICAgIE9iai5vYmogKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcbiAgOztcblxuICBsZXQgc2V0IHQgcCBzbG90IHggPSBVbmlmb3JtX2FycmF5LnNldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcblxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSAodHlwZSB0dXBsZSkgKHQgOiAodHVwbGUsIF8pIFNsb3RzLnQgdCkgcG9pbnRlciA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBsZW4gPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBsZW4gPSAxXG4gICAgdGhlbiBnZXQgdCBwb2ludGVyIFNsb3QudDBcbiAgICBlbHNlXG4gICAgICAoT2JqLm1hZ2ljXG4gICAgICAgICAoVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcikgfmxlblxuICAgICAgICAgIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgICAgIDogdHVwbGUpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb29sXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb29sXG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgPSBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15Ok5vbmVcbmVuZFxuXG5tb2R1bGUgRGVidWcgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcblxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBsZXQgcHJlZml4ID0gXCJQb29sLlwiIGluXG4gICAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciB0cyB+ZjooaW52YXJpYW50IGlnbm9yZSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXMgdGhlbiBEZWJ1Zy5lcHJpbnRzIChjb25jYXQgWyBwcmVmaXg7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIERlYnVnLmVwcmludHNcbiAgICAgICAgKGNvbmNhdCBbIHByZWZpeDsgbmFtZTsgXCIgcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgb3BlbiBQb2ludGVyXG5cbiAgICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2NvbXBhcmVcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19jb21wYXJlIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19lcXVhbFwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19lcXVhbCB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IGlzX251bGwgdCA9XG4gICAgICBkZWJ1ZyBcIlBvaW50ZXIuaXNfbnVsbFwiIFtdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19udWxsIHQpXG4gICAgOztcblxuICAgIGxldCBudWxsID0gbnVsbFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBvcGVuIElkXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgbGV0IG9mX2ludDYzIGkgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQub2ZfaW50NjNcIiBbXSBpIFslc2V4cF9vZjogSW50NjMudF0gWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgb2ZfaW50NjMgaSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLnRvX2ludDYzXCIgW10gdCBbJXNleHBfb2Y6IHRdIFslc2V4cF9vZjogSW50NjMudF0gKGZ1biAoKSAtPlxuICAgICAgICAgIHRvX2ludDYzIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJpZF9vZl9wb2ludGVyXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICAoZnVuICgpIC0+IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX29mX2lkX2V4blwiXG4gICAgICBbIHQgXVxuICAgICAgaWRcbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9vZl9pZF9leG4gdCBpZClcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfaXNfdmFsaWRcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgZGVidWcgXCJjcmVhdGVcIiBbXSBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15KVxuICA7O1xuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgZGVidWcgXCJtYXhfY2FwYWNpdHlcIiBbXSBzbG90c19wZXJfdHVwbGUgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+XG4gICAgICBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9XG4gICAgZGVidWcgXCJjYXBhY2l0eVwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+IGNhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGRlYnVnXG4gICAgICBcImdyb3dcIlxuICAgICAgWyB0IF1cbiAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHkpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBvcHRpb24gXV1cbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICAgICAgKGZ1biAoKSAtPiBncm93ID9jYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBpc19mdWxsIHQgPVxuICAgIGRlYnVnIFwiaXNfZnVsbFwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19mdWxsIHQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgZGVidWcgXCJ1bnNhZmVfZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICB1bnNhZmVfZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcImZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPiBmcmVlIHQgcClcbiAgOztcblxuICBsZXQgZGVidWdfbmV3IHQgZiA9IGRlYnVnIFwibmV3XCIgWyB0IF0gKCkgWyVzZXhwX29mOiB1bml0XSBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBmXG4gIGxldCBuZXcxIHQgYTAgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlIHQgcG9pbnRlciA9XG4gICAgZGVidWcgXCJnZXRfdHVwbGVcIiBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPlxuICAgICAgZ2V0X3R1cGxlIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZGVidWdfZ2V0IG5hbWUgZiB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT4gZiB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGdldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcImdldFwiIGdldCB0IHBvaW50ZXIgc2xvdFxuICBsZXQgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcInVuc2FmZV9nZXRcIiB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90XG5cbiAgbGV0IGRlYnVnX3NldCBuYW1lIGYgdCBwb2ludGVyIHNsb3QgYSA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgZiB0IHBvaW50ZXIgc2xvdCBhKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInNldFwiIHNldCB0IHBvaW50ZXIgc2xvdCBhXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJ1bnNhZmVfc2V0XCIgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhXG5lbmRcblxubW9kdWxlIEVycm9yX2NoZWNrIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7IG11dGFibGUgaXNfdmFsaWQgOiBib29sXG4gICAgICA7IHBvaW50ZXIgOiAnc2xvdHMgUG9pbnRlci50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBjcmVhdGUgcG9pbnRlciA9IHsgaXNfdmFsaWQgPSB0cnVlOyBwb2ludGVyIH1cbiAgICBsZXQgbnVsbCAoKSA9IHsgaXNfdmFsaWQgPSBmYWxzZTsgcG9pbnRlciA9IFBvaW50ZXIubnVsbCAoKSB9XG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9IFBvaW50ZXIucGh5c19jb21wYXJlIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBpc19udWxsIHQgPSBQb2ludGVyLmlzX251bGwgdC5wb2ludGVyXG5cbiAgICBsZXQgZm9sbG93IHQgPVxuICAgICAgaWYgbm90IHQuaXNfdmFsaWRcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHVzZSBpbnZhbGlkIHBvaW50ZXJcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICAgIHQucG9pbnRlclxuICAgIDs7XG5cbiAgICBsZXQgaW52YWxpZGF0ZSB0ID0gdC5pc192YWxpZCA8LSBmYWxzZVxuXG4gICAgbW9kdWxlIElkID0gUG9pbnRlci5JZFxuICBlbmRcblxuICB0eXBlICdzbG90cyB0ID0gJ3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH0gPVxuICAgIGlzX3ZhbGlkICYmIHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyXG4gIDs7XG5cbiAgKCogV2UgZG9uJ3QgZG8gW1BvaW50ZXIuZm9sbG93IHBvaW50ZXJdLCBiZWNhdXNlIHRoYXQgd291bGQgZGlzYWxsb3cgW2lkX29mX3BvaW50ZXIgdFxuICAgICAoUG9pbnRlci5udWxsICgpKV0uICopXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyLlBvaW50ZXIucG9pbnRlclxuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBsZXQgcG9pbnRlciA9IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgaW5cbiAgICBsZXQgaXNfdmFsaWQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyIGluXG4gICAgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH1cbiAgOztcblxuICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5XG4gIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHlcbiAgbGV0IGdyb3cgPSBncm93XG4gIGxldCBpc19mdWxsID0gaXNfZnVsbFxuICBsZXQgZ2V0X3R1cGxlIHQgcCA9IGdldF90dXBsZSB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgZ2V0IHQgcCA9IGdldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgdW5zYWZlX2dldCB0IHAgPSB1bnNhZmVfZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBzZXQgdCBwIHNsb3QgdiA9IHNldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgdiA9IHVuc2FmZV9zZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgdW5zYWZlX2ZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcbmVuZFxuIiwiKCogQmUgc3VyZSBhbmQgZmlyc3QgcmVhZCB0aGUgaW1wbGVtZW50YXRpb24gb3ZlcnZpZXcgaW4gdGltaW5nX3doZWVsX2ludGYubWwuXG5cbiAgIEEgdGltaW5nIHdoZWVsIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIFwibGV2ZWxzXCIsIHdoZXJlIGVhY2ggbGV2ZWwgaXMgYW4gYXJyYXkgb2ZcbiAgIFwic2xvdHNcIi4gIEVhY2ggc2xvdCByZXByZXNlbnRzIGEgcmFuZ2Ugb2Yga2V5cywgYW5kIGhvbGRzIGVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aFxuICAgdGhvc2Uga2V5cy4gIEVhY2ggbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSB0d28gcGFyYW1ldGVyczogW2JpdHNdLCB0aGUgbnVtYmVyIG9mIGtleSBiaXRzXG4gICB0aGF0IHRoYXQgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yIGRpc3Rpbmd1aXNoaW5nLCBhbmQgW2JpdHNfcGVyX3Nsb3RdLCB0aGUgc2l6ZSBvZiB0aGVcbiAgIHJhbmdlIG9mIGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2luZ2xlIHNsb3QgaW4gdGhlIGFycmF5LiAgQ29uY2VwdHVhbGx5LCBlYWNoIGxldmVsXG4gICBicmVha3MgdXAgYWxsIHBvc3NpYmxlIGtleXMgaW50byByYW5nZXMgb2Ygc2l6ZSBbMl5iaXRzX3Blcl9zbG90XS4gIFRoZSBsZW5ndGggb2YgYVxuICAgbGV2ZWwgYXJyYXkgaXMgWzJeYml0c10sIGFuZCB0aGUgYXJyYXkgaXMgdXNlZCBsaWtlIGEgY2lyY3VsYXIgYnVmZmVyIHRvIHRyYXZlcnNlIHRoZVxuICAgcmFuZ2VzIGFzIHRoZSB0aW1pbmcgd2hlZWwncyBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMuICBBIGtleSBba10sIGlmIHN0b3JlZCBpbiB0aGVcbiAgIGxldmVsLCBpcyBzdG9yZWQgYXQgaW5kZXggWyhrIC8gMl5iaXRzX3Blcl9zbG90KSBtb2QgMl5iaXRzXS5cblxuICAgVGhlIHNldHRpbmdzIG9mIHRoZSBbYml0c10gdmFsdWVzIGFyZSBjb25maWd1cmFibGUgYnkgdXNlciBjb2RlIHVzaW5nIFtMZXZlbF9iaXRzXSxcbiAgIGFsdGhvdWdoIHRoZXJlIGlzIGEgcmVhc29uYWJsZSBkZWZhdWx0IHNldHRpbmcuICBHaXZlbiB0aGUgW2JpdHNdIHZhbHVlcywgdGhlXG4gICBbYml0c19wZXJfc2xvdF0gYXJlIGNob3NlbiBzbyB0aGF0IFtiaXRzX3Blcl9zbG90XSBhdCBsZXZlbCBbaV0gaXMgdGhlIHN1bSBvZiB0aGVcbiAgIFtiaXRzXSBhdCBhbGwgbG93ZXIgbGV2ZWxzLiAgVGh1cywgYSBzbG90J3MgcmFuZ2UgYXQgbGV2ZWwgW2ldIGlzIGFzIGxhcmdlIGFzIHRoZVxuICAgZW50aXJlIHJhbmdlIG9mIHRoZSBhcnJheSBhdCBsZXZlbCBbaSAtIDFdLlxuXG4gICBFYWNoIGxldmVsIGhhcyBhIFttaW5fYWxsb3dlZF9rZXldIGFuZCBhIFttYXhfYWxsb3dlZF9rZXldIHRoYXQgZGV0ZXJtaW5lIHRoZSByYW5nZSBvZlxuICAga2V5cyB0aGF0IGl0IGN1cnJlbnRseSByZXByZXNlbnRzLiAgVGhlIGNydWNpYWwgaW52YXJpYW50IG9mIHRoZSB0aW1pbmcgd2hlZWwgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRoYXQgdGhlIFttaW5fYWxsb3dlZF9rZXldIGF0IGxldmVsIFtpXSBpcyBubyBtb3JlIHRoYW4gdGhlXG4gICBbbWF4X2FsbG93ZWRfa2V5ICsgMV0gb2YgbGV2ZWwgW2kgLSAxXS4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBsZXZlbHMgY2FuIHJlcHJlc2VudCBhbGxcbiAgIGtleXMgZnJvbSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGxvd2VzdCBsZXZlbCB0byB0aGUgW21heF9hbGxvd2VkX2tleV0gb2YgdGhlXG4gICBoaWdoZXN0IGxldmVsLiAgVGhlIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZXN0b3JpbmdcbiAgIHRoaXMgaW52YXJpYW50LlxuXG4gICBBdCBsZXZlbCAwLCBbYml0c19wZXJfc2xvdCA9IDBdLCBhbmQgc28gdGhlIHNpemUgb2YgZWFjaCBzbG90IGlzIFsxXS4gIFRoYXQgaXMsIGxldmVsIDBcbiAgIHByZWNpc2VseSBkaXN0aW5ndWlzaGVzIGFsbCB0aGUga2V5cyBiZXR3ZWVuIGl0cyBbbWluX2FsbG93ZWRfa2V5XSAod2hpY2ggaXMgdGhlIHNhbWVcbiAgIGFzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgZW50aXJlIHRpbWluZyB3aGVlbCkgYW5kIFttYXhfYWxsb3dlZF9rZXldLiAgQXMgdGhlXG4gICBsZXZlbHMgaW5jcmVhc2UsIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHRoZSBbYml0c19wZXJfc2xvdF0gaW5jcmVhc2VzLCBhbmRcbiAgIHRoZSByYW5nZSBvZiBrZXlzIHN0b3JlZCBpbiB0aGUgbGV2ZWwgaW5jcmVhc2VzIChkcmFtYXRpY2FsbHkpLlxuXG4gICBUaGUgaWRlYSBvZiB0aGUgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byB0aGUgaGllcmFyY2hpY2FsIGFwcHJvYWNoIGRlc2NyaWJlZCBpbjpcblxuICAge3ZcbiAgICAgSGFzaGVkIGFuZCBIaWVyYXJjaGljYWwgVGltaW5nIFdoZWVsczpcbiAgICAgRWZmaWNpZW50IERhdGEgU3RydWN0dXJlcyBmb3IgSW1wbGVtZW50aW5nIGEgVGltZXIgRmFjaWxpdHlcblxuICAgICBWYXJnaGVzZSAmIExhdWNrLCAxOTk2XG4gICB2fVxuXG4gICBIb3dldmVyLCB0aGUgY29kZSBpcyBjb21wbGV0ZWx5IG5ldy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBUaW1pbmdfd2hlZWxfaW50ZlxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbmxldCBzZXhwX29mX3Rfc3R5bGUgOiBbIGBQcmV0dHkgfCBgSW50ZXJuYWwgXSByZWYgPSByZWYgYFByZXR0eVxuXG4oKiBbe21heCxtaW59X3RpbWVdIGFyZSBib3VuZHMgb24gdGhlIHRpbWVzIHN1cHBvcnRlZCBieSBhIHRpbWluZyB3aGVlbC4gKilcblxubGV0IG1heF90aW1lID0gVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1pbl90aW1lID0gVGltZV9ucy5lcG9jaFxuXG5tb2R1bGUgTnVtX2tleV9iaXRzIDogc2lnXG4gIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHplcm8gOiB0XG5cbiAgKCogdmFsIG1pbl92YWx1ZSA6IHQgKilcblxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cyIDogdCAtPiBJbnQ2My50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRcblxuICBsZXQgbWluX3ZhbHVlID0gMFxuXG4gICgqKiBXZSBzdXBwb3J0IGFsbCBub24tbmVnYXRpdmUgW1RpbWVfbnMudF0gdmFsdWVzLiAqKVxuICBsZXQgbWF4X3ZhbHVlID0gSW50NjMubnVtX2JpdHMgLSAxXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQgPj0gbWluX3ZhbHVlKTtcbiAgICBhc3NlcnQgKHQgPD0gbWF4X3ZhbHVlKVxuICA7O1xuXG4gIGxldCBvZl9pbnQgaSA9XG4gICAgaW52YXJpYW50IGk7XG4gICAgaVxuICA7O1xuXG4gIGxldCAoICsgKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSArIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCAoIC0gKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSAtIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBwb3cyIHQgPSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSB0XG5lbmRcblxubW9kdWxlIExldmVsX2JpdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTnVtX2tleV9iaXRzLnQgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtYXhfbnVtX2JpdHMgPSAoTnVtX2tleV9iaXRzLm1heF92YWx1ZSA6PiBpbnQpXG4gIGxldCBudW1fYml0c19pbnRlcm5hbCB0ID0gTGlzdC5mb2xkIHQgfmluaXQ6TnVtX2tleV9iaXRzLnplcm8gfmY6TnVtX2tleV9iaXRzLiggKyApXG4gIGxldCBudW1fYml0cyB0ID0gKG51bV9iaXRzX2ludGVybmFsIHQgOj4gaW50KVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0IChub3QgKExpc3QuaXNfZW1wdHkgdCkpO1xuICAgIExpc3QuaXRlciB0IH5mOihmdW4gbnVtX2tleV9iaXRzIC0+XG4gICAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IG51bV9rZXlfYml0cztcbiAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIG51bV9rZXlfYml0cyBOdW1fa2V5X2JpdHMuemVybykpO1xuICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgKG51bV9iaXRzX2ludGVybmFsIHQpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgdCA9IHNleHAgfD4gWyVvZl9zZXhwOiB0XSBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biA/KGV4dGVuZF90b19tYXhfbnVtX2JpdHMgPSBmYWxzZSkgaW50cyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRzIHRoZW4gZmFpbHdpdGggXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gcmVxdWlyZXMgYSBub25lbXB0eSBsaXN0XCI7XG4gICAgaWYgTGlzdC5leGlzdHMgaW50cyB+ZjooZnVuIGJpdHMgLT4gYml0cyA8PSAwKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCBub25wb3NpdGl2ZSBudW0gYml0c1wiIH5fOihpbnRzIDogaW50IGxpc3QpXTtcbiAgICBsZXQgbnVtX2JpdHMgPSBMaXN0LmZvbGQgaW50cyB+aW5pdDowIH5mOiggKyApIGluXG4gICAgaWYgbnVtX2JpdHMgPiBtYXhfbnVtX2JpdHNcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCB0b28gbWFueSBiaXRzXCJcbiAgICAgICAgICAgIH5fOihpbnRzIDogaW50IGxpc3QpXG4gICAgICAgICAgICB+Z290OihudW1fYml0cyA6IGludClcbiAgICAgICAgICAgIChtYXhfbnVtX2JpdHMgOiBpbnQpXTtcbiAgICBsZXQgaW50cyA9XG4gICAgICBpZiBleHRlbmRfdG9fbWF4X251bV9iaXRzXG4gICAgICB0aGVuIGludHMgQCBMaXN0LmluaXQgKG1heF9udW1fYml0cyAtIG51bV9iaXRzKSB+ZjooY29uc3QgMSlcbiAgICAgIGVsc2UgaW50c1xuICAgIGluXG4gICAgTGlzdC5tYXAgaW50cyB+ZjpOdW1fa2V5X2JpdHMub2ZfaW50XG4gIDs7XG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuIFsgMTE7IDEwOyAxMDsgMTA7IDEwOyAxMDsgMSBdXG5cbiAgbGV0IHRyaW0gdCB+bWF4X251bV9iaXRzID1cbiAgICBpZiBOdW1fa2V5X2JpdHMuKCA8PSApIChudW1fYml0c19pbnRlcm5hbCB0KSBtYXhfbnVtX2JpdHNcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCB0IH5yZW1haW5pbmcgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IGIgOjogdCAtPlxuICAgICAgICAgIGlmIE51bV9rZXlfYml0cy4oID49ICkgYiByZW1haW5pbmdcbiAgICAgICAgICB0aGVuIFsgcmVtYWluaW5nIF1cbiAgICAgICAgICBlbHNlIGIgOjogbG9vcCB0IH5yZW1haW5pbmc6KE51bV9rZXlfYml0cy4oIC0gKSByZW1haW5pbmcgYilcbiAgICAgIGluXG4gICAgICBsb29wIHQgfnJlbWFpbmluZzptYXhfbnVtX2JpdHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA6IHNpZ1xuICBpbmNsdWRlIEFsYXJtX3ByZWNpc2lvblxuXG4gIHZhbCBudW1fa2V5X2JpdHMgOiB0IC0+IE51bV9rZXlfYml0cy50XG4gIHZhbCBpbnRlcnZhbF9udW0gOiB0IC0+IFRpbWVfbnMudCAtPiBJbnQ2My50XG4gIHZhbCBpbnRlcnZhbF9udW1fc3RhcnQgOiB0IC0+IEludDYzLnQgLT4gVGltZV9ucy50XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIFt0XSBpcyByZXByZXNlbnRlZCBhcyB0aGUgbG9nMiBvZiBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKilcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBsZXQgbnVtX2tleV9iaXRzIHQgPSB0IHw+IE51bV9rZXlfYml0cy5vZl9pbnRcblxuICBsZXQgdG9fc3BhbiB0ID1cbiAgICBpZiB0IDwgMFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW5dIG9mIG5lZ2F0aXZlIHBvd2VyIG9mIHR3byBuYW5vc2Vjb25kc1wiIH5fOih0IDogaW50KV07XG4gICAgSW50NjMuKHNoaWZ0X2xlZnQgb25lKSB0IHw+IFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCB8PiB0b19zcGFuIDogVGltZV9ucy5TcGFuLnQpXVxuICBsZXQgb25lX25hbm9zZWNvbmQgPSAwXG4gIGxldCBhYm91dF9vbmVfbWljcm9zZWNvbmQgPSAxMFxuICBsZXQgYWJvdXRfb25lX21pbGxpc2Vjb25kID0gMjBcbiAgbGV0IGFib3V0X29uZV9zZWNvbmQgPSAzMFxuICBsZXQgYWJvdXRfb25lX2RheSA9IDQ2XG4gIGxldCBtdWwgdCB+cG93MiA9IHQgKyBwb3cyXG4gIGxldCBkaXYgdCB+cG93MiA9IHQgLSBwb3cyXG4gIGxldCBpbnRlcnZhbF9udW0gdCB0aW1lID0gSW50NjMuc2hpZnRfcmlnaHQgKHRpbWUgfD4gVGltZV9ucy50b19pbnQ2M19uc19zaW5jZV9lcG9jaCkgdFxuXG4gIGxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICAgIEludDYzLnNoaWZ0X2xlZnQgaW50ZXJ2YWxfbnVtIHQgfD4gVGltZV9ucy5vZl9pbnQ2M19uc19zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBvZl9zcGFuX2Zsb29yX3BvdzJfbnMgc3BhbiA9XG4gICAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24ub2Zfc3Bhbl9mbG9vcl9wb3cyX25zXSBnb3Qgbm9uLXBvc2l0aXZlIHNwYW5cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udCldO1xuICAgIHNwYW4gfD4gVGltZV9ucy5TcGFuLnRvX2ludDYzX25zIHw+IEludDYzLmZsb29yX2xvZzJcbiAgOztcblxuICBsZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuXG4gIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zcGFuXG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NwYW5cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoVGltZV9ucy5TcGFuKSAoVClcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlIChUaW1lX25zLlNwYW4pIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBsZXZlbF9iaXRzX2RlZmF1bHQgPSBMZXZlbF9iaXRzLmRlZmF1bHRcblxuICB0eXBlIHQgPVxuICAgIHsgYWxhcm1fcHJlY2lzaW9uIDogQWxhcm1fcHJlY2lzaW9uLlVuc3RhYmxlLnRcbiAgICA7IGxldmVsX2JpdHMgOiBMZXZlbF9iaXRzLnQgW0BkZWZhdWx0IGxldmVsX2JpdHNfZGVmYXVsdF1cbiAgICA7IGNhcGFjaXR5IDogaW50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IEFsYXJtX3ByZWNpc2lvbi50b19zcGFuIHQuYWxhcm1fcHJlY2lzaW9uXG5cbiAgKCogW21heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb25dIHJldHVybnMgdGhlIG51bWJlciBvZiBsZXZlbCBiaXRzIG5lZWRlZCBmb3IgYVxuICAgICB0aW1pbmcgd2hlZWwgd2l0aCB0aGUgc3BlY2lmaWVkIFthbGFybV9wcmVjaXNpb25dIHRvIGJlIGFibGUgdG8gcmVwcmVzZW50IGFsbFxuICAgICBwb3NzaWJsZSB0aW1lcyBmcm9tIFtUaW1lX25zLmVwb2NoXSBvbndhcmQuICBTaW5jZSBub24tbmVnYXRpdmUgdGltZXMgaGF2ZSA2MiBiaXRzLFxuICAgICB3ZSByZXF1aXJlIFtMIDw9IDYyIC0gQV0sIHdoZXJlIFtBXSBpcyB0aGUgbnVtYmVyIG9mIGFsYXJtIGJpdHMgYW5kIFtMXSBpcyB0aGVcbiAgICAgbnVtYmVyIG9mIGxldmVsIGJpdHMuICopXG4gIGxldCBtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uID1cbiAgICBOdW1fa2V5X2JpdHMuKCAtIClcbiAgICAgIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICAgIChBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgTnVtX2tleV9iaXRzLiggPD0gKVxuICAgICAgICAgIChMZXZlbF9iaXRzLm51bV9iaXRzX2ludGVybmFsIHQubGV2ZWxfYml0cylcbiAgICAgICAgICAobWF4X251bV9sZXZlbF9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uKSk7XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb246aWdub3JlXG4gICAgICAgIH5jYXBhY2l0eTppZ25vcmVcbiAgICAgICAgfmxldmVsX2JpdHM6KGNoZWNrIExldmVsX2JpdHMuaW52YXJpYW50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/KGxldmVsX2JpdHMgPSBsZXZlbF9iaXRzX2RlZmF1bHQpIH5hbGFybV9wcmVjaXNpb24gKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIExldmVsX2JpdHMudHJpbSBsZXZlbF9iaXRzIH5tYXhfbnVtX2JpdHM6KG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gICAgaW5cbiAgICB7IGFsYXJtX3ByZWNpc2lvbjsgbGV2ZWxfYml0czsgY2FwYWNpdHkgfVxuICA7O1xuXG4gIGxldCBtaWNyb3NlY29uZF9wcmVjaXNpb24gKCkgPVxuICAgIGNyZWF0ZVxuICAgICAgKClcbiAgICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWNyb3NlY29uZFxuICAgICAgfmxldmVsX2JpdHM6KExldmVsX2JpdHMuY3JlYXRlX2V4biBbIDEwOyAxMDsgNjsgNjsgNSBdKVxuICA7O1xuXG4gIGxldCBkdXJhdGlvbnMgdCA9XG4gICAgTGlzdC5mb2xkaW5nX21hcFxuICAgICAgdC5sZXZlbF9iaXRzXG4gICAgICB+aW5pdDooQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyB0LmFsYXJtX3ByZWNpc2lvbiB8PiBOdW1fa2V5X2JpdHMudG9faW50KVxuICAgICAgfmY6KGZ1biBudW1fYml0c19hY2N1bSBsZXZlbF9udW1fYml0cyAtPlxuICAgICAgICBsZXQgbnVtX2JpdHNfYWNjdW0gPSBudW1fYml0c19hY2N1bSArIChsZXZlbF9udW1fYml0cyB8PiBOdW1fa2V5X2JpdHMudG9faW50KSBpblxuICAgICAgICBsZXQgZHVyYXRpb24gPVxuICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgICAgICAgKGlmIG51bV9iaXRzX2FjY3VtID0gSW50NjMubnVtX2JpdHMgLSAxXG4gICAgICAgICAgICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICAgICAgICAgICBlbHNlIEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzX2FjY3VtKVxuICAgICAgICBpblxuICAgICAgICBudW1fYml0c19hY2N1bSwgZHVyYXRpb24pXG4gIDs7XG5lbmRcblxuXG4oKiogVGltaW5nIHdoZWVsIGlzIGltcGxlbWVudGVkIGFzIGEgcHJpb3JpdHkgcXVldWUgaW4gd2hpY2ggdGhlIGtleXMgYXJlXG4gICAgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVydmFscyBvZiB0aW1lLiAgVGhlIHByaW9yaXR5IHF1ZXVlIGlzXG4gICAgdW5saWtlIGEgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZSBpbiB0aGF0IHJhdGhlciB0aGFuIGhhdmluZyBhIFwiZGVsZXRlIG1pblwiIG9wZXJhdGlvbixcbiAgICBpdCBoYXMgYSBub25kZWNyZWFzaW5nIG1pbmltdW0gYWxsb3dlZCBrZXksIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHRpbWUsXG4gICAgYW5kIGFuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIG9wZXJhdGlvbiwgd2hpY2ggaW1wbGVtZW50cyBbYWR2YW5jZV9jbG9ja10uXG4gICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gYXMgYSBzaWRlIGVmZmVjdCByZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSB0aW1pbmdcbiAgICB3aGVlbCB3aG9zZSBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBuZXcgbWluaW11bSwgd2hpY2ggaW1wbGVtZW50cyBmaXJpbmcgdGhlIGFsYXJtc1xuICAgIHdob3NlIHRpbWUgaGFzIGV4cGlyZWQuXG5cbiAgICBBZGRpbmcgZWxlbWVudHMgdG8gYW5kIHJlbW92aW5nIGVsZW1lbnRzIGZyb20gYSB0aW1pbmcgd2hlZWwgdGFrZXMgY29uc3RhbnQgdGltZSxcbiAgICB1bmxpa2UgYSBoZWFwLWJhc2VkIHByaW9yaXR5IHF1ZXVlIHdoaWNoIHRha2VzIGxvZyhOKSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgZWxlbWVudHMgaW4gdGhlIGhlYXAuICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGVcbiAgICBhbW91bnQgb2YgaW5jcmVhc2UgaW4gdGhlIG1pbi1hbGxvd2VkIGtleSwgYXMgY29tcGFyZWQgdG8gbG9nKE4pIGZvciBhIGhlYXAuICBJdCBpc1xuICAgIHRoZXNlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VzIHRoYXQgbW90aXZhdGUgdGhlIGV4aXN0ZW5jZSBvZiB0aW1pbmcgd2hlZWxzIGFuZCBtYWtlXG4gICAgdGhlbSBhIGdvb2QgY2hvaWNlIGZvciBtYWludGFpbmcgYSBzZXQgb2YgYWxhcm1zLiAgV2l0aCBhIHRpbWluZyB3aGVlbCwgb25lIGNhblxuICAgIHN1cHBvcnQgYW55IG51bWJlciBvZiBhbGFybXMgcGF5aW5nIGNvbnN0YW50IG92ZXJoZWFkIHBlciBhbGFybSwgd2hpbGUgcGF5aW5nIGFcbiAgICBzbWFsbCBjb25zdGFudCBvdmVyaGVhZCBwZXIgdW5pdCBvZiB0aW1lIHBhc3NlZC5cblxuICAgIEFzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGhlIHRpbWluZyB3aGVlbCBkb2VzIGEgbGF6eSByYWRpeCBzb3J0IG9mIHRoZVxuICAgIGVsZW1lbnQga2V5cywgd2l0aCBsZXZlbCAwIGhhbmRsaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudCBbYl8wXSBiaXRzIGluIGEga2V5LCBhbmRcbiAgICBlYWNoIHN1YnNlcXVlbnQgbGV2ZWwgW2ldIGhhbmRsaW5nIHRoZSBuZXh0IG1vc3Qgc2lnbmlmaWNhbnQgW2JfaV0gYml0cy4gIFRoZSBsZXZlbHNcbiAgICBob2xkIGluY3JlYXNpbmdseSBsYXJnZXIgcmFuZ2VzIG9mIGtleXMsIHdoZXJlIHRoZSB1bmlvbiBvZiBhbGwgdGhlIGxldmVscyBjYW4gaG9sZFxuICAgIGFueSBrZXkgZnJvbSBbbWluX2FsbG93ZWRfa2V5IHRdIHRvIFttYXhfYWxsb3dlZF9rZXkgdF0uICBXaGVuIGEga2V5IGlzIGFkZGVkIHRvIHRoZVxuICAgIHRpbWluZyB3aGVlbCwgaXQgaXMgYWRkZWQgYXQgdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCB0aGF0IGNhbiBzdG9yZSB0aGUga2V5LiAgQXNcbiAgICB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRpbWluZy13aGVlbCBlbGVtZW50cyBtb3ZlIGRvd24gbGV2ZWxzIHVudGlsIHRoZXlcbiAgICByZWFjaCBsZXZlbCAwLCBhbmQgdGhlbiBhcmUgZXZlbnR1YWxseSByZW1vdmVkLiAgKilcbm1vZHVsZSBQcmlvcml0eV9xdWV1ZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgS2V5IDogSW50ZXJ2YWxfbnVtXG5cbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgICgqKiBBbiBbRWx0LnRdIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IHdhcyBhZGRlZCB0byBhIHRpbWluZyB3aGVlbC4gKilcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBhdCA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGtleSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgdmFsdWUgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIG51bGwgOiB1bml0IC0+ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRWx0LnRcbiAgZW5kXG5cbiAgdmFsIHBvb2wgOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC5Qb29sLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtjcmVhdGUgP2xldmVsX2JpdHMgKCldIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdGltaW5nIHdoZWVsLCBbdF0sIHdpdGggW2xlbmd0aCB0ID0gMF1cbiAgICAgIGFuZCBbbWluX2FsbG93ZWRfa2V5IHQgPSAwXS4gKilcbiAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gP2xldmVsX2JpdHM6TGV2ZWxfYml0cy50IC0+IHVuaXQgLT4gJ2EgdFxuXG4gICgqKiBbbGVuZ3RoIHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuXG4gICgqKiBbbWluX2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtaW5pbXVtIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgVGhpcyBvbmx5XG4gICAgICBpbmRpY2F0ZXMgdGhlIHBvc3NpYmlsaXR5OyB0aGVyZSBuZWVkIG5vdCBiZSBhbiBlbGVtZW50IFtlbHRdIGluIFt0XSB3aXRoIFtFbHQua2V5XG4gICAgICBlbHQgPSBtaW5fYWxsb3dlZF9rZXkgdF0uICBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgXCJtaW5fa2V5XCIgb3BlcmF0aW9uIGluIGFcbiAgICAgIHR5cGljYWwgcHJpb3JpdHkgcXVldWUuXG5cbiAgICAgIFttaW5fYWxsb3dlZF9rZXkgdF0gY2FuIGluY3JlYXNlIG92ZXIgdGltZSwgdmlhIGNhbGxzIHRvXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XS4gKilcbiAgdmFsIG1pbl9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gICgqKiBbbWF4X2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBBc1xuICAgICAgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCBzbyBkb2VzIFttYXhfYWxsb3dlZF9rZXldOyBob3dldmVyIGl0IGlzIG5vdCB0aGUgY2FzZVxuICAgICAgdGhhdCBbbWF4X2FsbG93ZWRfa2V5IHQgLSBtaW5fYWxsb3dlZF9rZXkgdF0gaXMgYSBjb25zdGFudC4gIEl0IGlzIGd1YXJhbnRlZWQgdGhhdFxuICAgICAgW21heF9hbGxvd2VkX2tleSB0ID49IG1pbl9hbGxvd2VkX2tleSB0ICsgMl5CIC0gMV0sXG4gICAgICB3aGVyZSBbQl0gaXMgdGhlIHN1bSBvZiB0aGUgYl9pIGluIFtsZXZlbF9iaXRzXS4gKilcbiAgdmFsIG1heF9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gIHZhbCBtaW5fZWx0XyA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcbiAgdmFsIGludGVybmFsX2FkZCA6ICdhIHQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiAnYSAtPiAnYSBJbnRlcm5hbF9lbHQudFxuXG4gICgqKiBbcmVtb3ZlIHQgZWx0XSByZW1vdmVzIFtlbHRdIGZyb20gW3RdLiAgSXQgaXMgYW4gZXJyb3IgaWYgW2VsdF0gaXMgbm90IGN1cnJlbnRseVxuICAgICAgaW4gW3RdLCBhbmQgdGhpcyBlcnJvciBtYXkgb3IgbWF5IG5vdCBiZSBkZXRlY3RlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuXG4gIHZhbCBjaGFuZ2UgOiAnYSB0IC0+ICdhIEVsdC50IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gdW5pdFxuXG4gICgqKiBbY2xlYXIgdF0gcmVtb3ZlcyBhbGwgZWx0cyBmcm9tIFt0XS4gKilcbiAgdmFsIGNsZWFyIDogXyB0IC0+IHVuaXRcblxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBib29sXG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgKCoqIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZF0gaW5jcmVhc2VzIHRoZSBtaW5pbXVtIGFsbG93ZWRcbiAgICAgIGtleSBpbiBbdF0gdG8gW2tleV0sIGFuZCByZW1vdmVzIGFsbCBlbGVtZW50cyB3aXRoIGtleXMgbGVzcyB0aGFuIFtrZXldLCBhcHBseWluZ1xuICAgICAgW2hhbmRsZV9yZW1vdmVkXSB0byBlYWNoIGVsZW1lbnQgdGhhdCBpcyByZW1vdmVkLiAgSWYgW2tleSA8PSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICB0aGVuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGRvZXMgbm90aGluZy4gIE90aGVyd2lzZSwgaWZcbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCBbbWluX2FsbG93ZWRfa2V5IHQgPSBrZXldLlxuXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byBba2V5IC0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgYWx0aG91Z2ggcG9zc2libHkgbGVzcyB0aW1lLlxuXG4gICAgICBCZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbaGFuZGxlX3JlbW92ZWRdIGFjY2Vzc2VzIFt0XSBpbiBhbnkgd2F5IG90aGVyIHRoYW5cbiAgICAgIFtFbHRdIGZ1bmN0aW9ucy4gKilcbiAgdmFsIGluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgIDogICdhIHRcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBoYW5kbGVfcmVtb3ZlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnRcblxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgRWx0LnQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBmaXJlX3Bhc3RfYWxhcm1zXG4gICAgOiAgJ2EgdFxuICAgIC0+IGhhbmRsZV9maXJlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBub3c6VGltZV9ucy50XG4gICAgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gICgqKiBFYWNoIHNsb3QgaW4gYSBsZXZlbCBpcyBhIChwb3NzaWJseSBudWxsKSBwb2ludGVyIHRvIGEgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBvZiBlbGVtZW50cy4gIFdlIHBvb2wgdGhlIGVsZW1lbnRzIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZW0gYWZ0ZXIgdGhleSBhcmUgcmVtb3ZlZFxuICAgICAgZnJvbSB0aGUgdGltaW5nIHdoZWVsIChlaXRoZXIgdmlhIFtyZW1vdmVdIG9yIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldKS4gIEluXG4gICAgICBhZGRpdGlvbiB0byBzdG9yaW5nIHRoZSBba2V5XSwgW2F0XSwgYW5kIFt2YWx1ZV0gaW4gdGhlIGVsZW1lbnQsIHdlIHN0b3JlIHRoZVxuICAgICAgW2xldmVsX2luZGV4XSBzbyB0aGF0IHdlIGNhbiBxdWlja2x5IGdldCB0byB0aGUgbGV2ZWwgaG9sZGluZyBhbiBlbGVtZW50IHdoZW4gd2VcbiAgICAgIFtyZW1vdmVdIGl0LlxuXG4gICAgICBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIFtFeHRlcm5hbF9lbHRdIGFuZCBbSW50ZXJuYWxfZWx0XSwgd2hpY2ggYXJlIHRoZSBzYW1lXG4gICAgICB1bmRlcm5lYXRoLiAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFuIFtJbnRlcm5hbF9lbHRdIGlzIGVpdGhlciBbbnVsbF0gb3IgYVxuICAgICAgdmFsaWQgcG9pbnRlci4gIE9uIHRoZSBvdGhlciBoYW5kLCBbRXh0ZXJuYWxfZWx0XXMgYXJlIHJldHVybmVkIHRvIHVzZXIgY29kZSwgc29cbiAgICAgIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvZiB2YWxpZGl0eSAtLSB3ZSBhbHdheXMgdmFsaWRhdGUgYW4gW0V4dGVybmFsX2VsdF0gYmVmb3JlXG4gICAgICBkb2luZyBhbnl0aGluZyB3aXRoIGl0LlxuXG4gICAgICBJdCBpcyB0aGVyZWZvcmUgT0sgdG8gdXNlIFtQb29sLlVuc2FmZV0sIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciBhdHRlbXB0IHRvIGFjY2VzcyBhXG4gICAgICBzbG90IG9mIGFuIGludmFsaWQgcG9pbnRlci4gKilcbiAgbW9kdWxlIFBvb2wgPSBQb29sLlVuc2FmZVxuXG4gIG1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICgqKiBbSW50ZXJ2YWxfbnVtXSBpcyB0aGUgcHVibGljIEFQSS4gIEV2ZXJ5dGhpbmcgZm9sbG93aW5nIGluIHRoZSBzaWduYXR1cmUgaXNcbiAgICAgICAgZm9yIGludGVybmFsIHVzZS4gKilcbiAgICBpbmNsdWRlIFRpbWluZ193aGVlbF9pbnRmLkludGVydmFsX251bVxuXG4gICAgKCoqIFthZGRfY2xhbXBfdG9fbWF4XSBkb2Vzbid0IHdvcmsgYXQgYWxsIHdpdGggbmVnYXRpdmUgc3BhbnMgKilcbiAgICB2YWwgYWRkX2NsYW1wX3RvX21heCA6IHQgLT4gU3Bhbi50IC0+IHRcblxuICAgIHZhbCBzdWNjX2NsYW1wX3RvX21heCA6IHQgLT4gdFxuXG4gICAgKCoqIFtTbG90c19tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGEga2V5J3Mgc2xvdCBpbiBhIGdpdmVuIGxldmVsLiAqKVxuICAgIG1vZHVsZSBTbG90c19tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgdmFsIGNyZWF0ZSA6IGxldmVsX2JpdHM6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgICAgdmFsIG5leHRfc2xvdCA6IHQgLT4gaW50IC0+IGludFxuICAgIGVuZFxuXG4gICAgKCoqIFtNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGtleSBpbiB0aGVcbiAgICAgICAgc2FtZSBzbG90IGFzIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBFcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGNyZWF0ZSA6IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIG51bV9rZXlzIDogTnVtX2tleV9iaXRzLnQgLT4gU3Bhbi50XG4gICAgdmFsIG1pbl9rZXlfaW5fc2FtZV9zbG90IDogdCAtPiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnQgLT4gdFxuICAgIHZhbCBzbG90IDogdCAtPiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHNsb3RzX21hc2s6U2xvdHNfbWFzay50IC0+IGludFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZXZlbF9iaXRzID0gSW50NjMuKCAtICkgKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpIEludDYzLm9uZVxuICAgICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSAoc2xvdCArIDEpIGxhbmQgSW50NjMudG9faW50X2V4biB0XG4gICAgZW5kXG5cbiAgICBsZXQgbnVtX2tleXMgbnVtX2JpdHMgPSBOdW1fa2V5X2JpdHMucG93MiBudW1fYml0c1xuXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IGNyZWF0ZSB+Yml0c19wZXJfc2xvdCA9IGJpdF9ub3QgKE51bV9rZXlfYml0cy5wb3cyIGJpdHNfcGVyX3Nsb3QgLSBvbmUpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgICAgbGV0IHNjYWxlX2ludCB0IGkgPSB0ICogb2ZfaW50IGlcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgIGxldCBhZGQgdCBpID0gdCArIGlcbiAgICBsZXQgYWRkX2NsYW1wX3RvX21heCB0IGkgPSBpZiB0ID4gbWF4X3ZhbHVlIC0gaSB0aGVuIG1heF92YWx1ZSBlbHNlIHQgKyBpXG4gICAgbGV0IHN1Y2NfY2xhbXBfdG9fbWF4IHQgPSBpZiB0ID0gbWF4X3ZhbHVlIHRoZW4gbWF4X3ZhbHVlIGVsc2Ugc3VjYyB0XG4gICAgbGV0IHN1YiB0IGkgPSB0IC0gaVxuICAgIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuXG4gICAgbGV0IHNsb3QgdCB+KGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudCkgfnNsb3RzX21hc2sgPVxuICAgICAgdG9faW50X2V4biAoYml0X2FuZCAoc2hpZnRfcmlnaHQgdCAoYml0c19wZXJfc2xvdCA6PiBpbnQpKSBzbG90c19tYXNrKVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgIGJpdF9hbmQgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBLZXkuTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICBtb2R1bGUgU2xvdHNfbWFzayA9IEtleS5TbG90c19tYXNrXG5cbiAgbW9kdWxlIEV4dGVybmFsX2VsdCA9IHN0cnVjdFxuXG4gICAgKCoqIFRoZSBbcG9vbF9zbG90c10gaGVyZSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBzbG90cyBpbiBhIGxldmVsIGFycmF5LiAgVGhpcyBpc1xuICAgICAgICBmb3IgdGhlIHNsb3RzIGluIHRoZSBwb29sIHR1cGxlIHJlcHJlc2VudGluZyBhIGxldmVsIGVsZW1lbnQuICopXG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID1cbiAgICAgICggS2V5LnRcbiAgICAgICwgVGltZV9ucy50XG4gICAgICAsICdhXG4gICAgICAsIGludFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCApXG4gICAgICAgIFBvb2wuU2xvdHMudDZcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgICAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gdW5pdCAtPiBfIHRcbiAgICAgIHZhbCBpc19mdWxsIDogXyB0IC0+IGJvb2xcbiAgICAgIHZhbCBncm93IDogP2NhcGFjaXR5OmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHByaXZhdGUgJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCoqIERlYWxpbmcgd2l0aCBbRXh0ZXJuYWxfZWx0XXMuICopXG5cbiAgICB2YWwgZXh0ZXJuYWxfaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnRcbiAgICB2YWwgb2ZfZXh0ZXJuYWxfZXhuIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+ICdhIHRcbiAgICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBQb29sLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtjcmVhdGVdIHJldHVybnMgYW4gZWxlbWVudCB3aG9zZSBbbmV4dF0gYW5kIFtwcmV2XSBhcmUgW251bGxdLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogICdhIFBvb2wudFxuICAgICAgLT4ga2V5OktleS50XG4gICAgICAoKiogW2F0XSBpcyB1c2VkIHdoZW4gdGhlIHByaW9yaXR5IHF1ZXVlIGlzIHVzZWQgdG8gaW1wbGVtZW50IGEgdGltaW5nIHdoZWVsLiAgSWZcbiAgICAgICAgICB1bnVzZWQsIGl0IHdpbGwgYmUgW1RpbWVfbnMuZXBvY2hdLiAqKVxuICAgICAgLT4gYXQ6VGltZV9ucy50XG4gICAgICAtPiB2YWx1ZTonYVxuICAgICAgLT4gbGV2ZWxfaW5kZXg6aW50XG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZnJlZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBhY2Nlc3NvcnMgKilcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBhdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBsZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBuZXh0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB2YWx1ZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhXG5cbiAgICAoKiogbXV0YXRvcnMgKilcblxuICAgIHZhbCBzZXRfa2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnQgLT4gdW5pdFxuXG4gICAgKCoqIFtpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkXSB0cmVhdHMgW3RdIGFzIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGFuZCBhZGRzIFt0b19hZGRdXG4gICAgICAgIHRvIHRoZSBlbmQgb2YgaXQuICopXG4gICAgdmFsIGluc2VydF9hdF9lbmQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB0b19hZGQ6J2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2xpbmtfdG9fc2VsZiBwb29sIHRdIG1ha2VzIFt0XSBiZSBhIHNpbmdsZXRvbiBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3QuICopXG4gICAgdmFsIGxpbmtfdG9fc2VsZiA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbdW5saW5rIHAgdF0gdW5saW5rcyBbdF0gZnJvbSB0aGUgY2lyY3VsYXJseSBkb3VibHktbGlua2VkIGxpc3QgdGhhdCBpdCBpcyBpbi4gIEl0XG4gICAgICAgIGNoYW5nZXMgdGhlIHBvaW50ZXJzIG9mIFt0XSdzIFtwcmV2XSBhbmQgW25leHRdIGVsdHMsIGJ1dCBub3QgW3RdJ3MgW3ByZXZdIGFuZFxuICAgICAgICBbbmV4dF0gcG9pbnRlcnMuICBbdW5saW5rXSBpcyBtZWFuaW5nbGVzcyBpZiBbdF0gaXMgYSBzaW5nbGV0b24uICopXG4gICAgdmFsIHVubGluayA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBJdGVyYXRvcnMuICBbaXRlciBwIHQgfmluaXQgfmZdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgICBjb250YWluaW5nIFt0XSwgc3RhcnRpbmcgYXQgW3RdLCBhbmQgZm9sbG93aW5nIFtuZXh0XSBwb2ludGVycy4gIFtsZW5ndGhdIGNvdW50c1xuICAgICAgICBieSB2aXNpdGluZyBlYWNoIGVsZW1lbnQgaW4gdGhlIGxpc3QuICopXG4gICAgdmFsIGl0ZXIgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBmOignYSB0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBsZW5ndGggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcblxuICAgICgqKiBbbWF4X2FsYXJtX3RpbWUgdCBlbHQgfndpdGhfa2V5XSBmaW5kcyB0aGUgbWF4IFthdF0gaW4gW2VsdF0ncyBsaXN0IGFtb25nIHRoZSBlbHRzXG4gICAgICAgIHdob3NlIGtleSBpcyBbd2l0aF9rZXldLCByZXR1cm5pbmcgW1RpbWVfbnMuZXBvY2hdIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAqKVxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuXG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9ICdhIEV4dGVybmFsX2VsdC5wb29sX3Nsb3RzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gICAgbGV0IGlzX251bGwgPSBQb2ludGVyLmlzX251bGxcbiAgICBsZXQgZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEgdDJcblxuICAgIGxldCBjcmVhdGUgcG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4ID1cbiAgICAgIFBvb2wubmV3NiBwb29sIGtleSBhdCB2YWx1ZSBsZXZlbF9pbmRleCAobnVsbCAoKSkgKG51bGwgKCkpXG4gICAgOztcblxuICAgIGxldCBmcmVlID0gUG9vbC5mcmVlXG4gICAgbGV0IGtleSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQwXG4gICAgbGV0IHNldF9rZXkgcCB0IGsgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQwIGtcbiAgICBsZXQgYXQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MVxuICAgIGxldCBzZXRfYXQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQxIHhcbiAgICBsZXQgdmFsdWUgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MlxuICAgIGxldCBsZXZlbF9pbmRleCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQzXG4gICAgbGV0IHNldF9sZXZlbF9pbmRleCBwIHQgaSA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDMgaVxuICAgIGxldCBwcmV2IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDRcbiAgICBsZXQgc2V0X3ByZXYgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ0IHhcbiAgICBsZXQgbmV4dCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ1XG4gICAgbGV0IHNldF9uZXh0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NSB4XG4gICAgbGV0IGlzX3ZhbGlkIHAgdCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCBwIHRcbiAgICBsZXQgZXh0ZXJuYWxfaXNfdmFsaWQgPSBpc192YWxpZFxuXG4gICAgbGV0IGludmFyaWFudCBwb29sIGludmFyaWFudF9hIHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgICAgYXNzZXJ0IChpc192YWxpZCBwb29sIHQpO1xuICAgICAgICBpbnZhcmlhbnRfYSAodmFsdWUgcG9vbCB0KTtcbiAgICAgICAgbGV0IG4gPSBuZXh0IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgbiB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAocHJldiBwb29sIG4pKTtcbiAgICAgICAgbGV0IHAgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgcCB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAobmV4dCBwb29sIHApKSlcbiAgICA7O1xuXG4gICAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPSBQb29sLmludmFyaWFudCBpZ25vcmUgdFxuICAgICAgbGV0IGNyZWF0ZSA/KGNhcGFjaXR5ID0gMSkgKCkgPSBQb29sLmNyZWF0ZSBQb29sLlNsb3RzLnQ2IH5jYXBhY2l0eVxuICAgICAgbGV0IGdyb3cgPSBQb29sLmdyb3dcbiAgICAgIGxldCBpc19mdWxsID0gUG9vbC5pc19mdWxsXG4gICAgZW5kXG5cbiAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IHRcblxuICAgIGxldCBvZl9leHRlcm5hbF9leG4gcG9vbCB0ID1cbiAgICAgIGlmIGlzX3ZhbGlkIHBvb2wgdCB0aGVuIHQgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbCBnb3QgaW52YWxpZCBhbGFybVwiXVxuICAgIDs7XG5cbiAgICBsZXQgdW5saW5rIHBvb2wgdCA9XG4gICAgICBzZXRfbmV4dCBwb29sIChwcmV2IHBvb2wgdCkgKG5leHQgcG9vbCB0KTtcbiAgICAgIHNldF9wcmV2IHBvb2wgKG5leHQgcG9vbCB0KSAocHJldiBwb29sIHQpXG4gICAgOztcblxuICAgIGxldCBsaW5rIHBvb2wgcHJldiBuZXh0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgcHJldiBuZXh0O1xuICAgICAgc2V0X3ByZXYgcG9vbCBuZXh0IHByZXZcbiAgICA7O1xuXG4gICAgbGV0IGxpbmtfdG9fc2VsZiBwb29sIHQgPSBsaW5rIHBvb2wgdCB0XG5cbiAgICBsZXQgaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZCA9XG4gICAgICBsZXQgcHJldiA9IHByZXYgcG9vbCB0IGluXG4gICAgICBsaW5rIHBvb2wgcHJldiB0b19hZGQ7XG4gICAgICBsaW5rIHBvb2wgdG9fYWRkIHRcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgcG9vbCBmaXJzdCB+ZiA9XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAoKiBXZSBnZXQgW25leHRdIGJlZm9yZSBjYWxsaW5nIFtmXSBzbyB0aGF0IFtmXSBjYW4gbW9kaWZ5IG9yIFtmcmVlXSBbIWN1cnJlbnRdLiAqKVxuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBmICFjdXJyZW50O1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHBvb2wgZmlyc3QgPVxuICAgICAgbGV0IHIgPSByZWYgMCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgaW5jciByO1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgOztcblxuICAgIGxldCBtYXhfYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWF4X2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5lcG9jaCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtYXhfYWxhcm1fdGltZSA6PSBUaW1lX25zLm1heCAoYXQgcG9vbCAhY3VycmVudCkgIW1heF9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtYXhfYWxhcm1fdGltZVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICgqIFRoZSBba2V5XSBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSBmb3IgW21heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0gYmVjYXVzZVxuICAgICAgICAgICBtYXggdGltZSBwZXIgaW50ZXJ2YWwgaXMgbm90IHRoZSBzYW1lIGFzIG1heCB0aW1lIGdsb2JhbGx5LlxuXG4gICAgICAgICAgIFRoaXMgaXMgbm90IHNvIGZvciBbbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSwgc28gdGhpcyBjYW4gcG90ZW50aWFsbHlcbiAgICAgICAgICAgYmUgc2ltcGxpZmllZC5cblxuICAgICAgICAgICBQcm9iYWJseSBhIGJldHRlciBjaGFuZ2Ugd291bGQgYmUgdG8gc2ltcGx5IHRyYW5zZmVyIHRoZSBldmVudHMgdG8gdGhlXG4gICAgICAgICAgIFwiZmlyZWRcIiBjb2xsZWN0aW9uIChhbmQgcmVuYW1lIGl0IHRvIFwiYWJvdXQgdG8gZmlyZVwiKSwgd2hpY2ggaXMgc29ydGVkIGJ5IHRpbWUsXG4gICAgICAgICAgIHNvIGdldHRpbmcgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gaXMgZWZmaWNpZW50LlxuICAgICAgICAqKVxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1pbl9hbGFybV90aW1lIDo9IFRpbWVfbnMubWluIChhdCBwb29sICFjdXJyZW50KSAhbWluX2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1pbl9hbGFybV90aW1lXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIExldmVsID0gc3RydWN0XG4gICAgKCoqIEZvciBnaXZlbiBsZXZlbCwgb25lIGNhbiBicmVhayB0aGUgYml0cyBpbnRvIGEga2V5IGludG8gdGhyZWUgcmVnaW9uczpcblxuICAgICAgICB7dlxuICAgICAgICAgfCBoaWdoZXIgbGV2ZWxzIHwgdGhpcyBsZXZlbCB8IGxvd2VyIGxldmVscyB8XG4gICAgICAgIHZ9XG5cbiAgICAgICAgXCJMb3dlciBsZXZlbHNcIiBpcyBbYml0c19wZXJfc2xvdF0gYml0cyB3aWRlLiAgXCJUaGlzIGxldmVsXCIgaXMgW2JpdHNdIHdpZGUuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogVGhlIFtpbmRleF0gaW4gdGhlIHRpbWluZyB3aGVlbCdzIGFycmF5IG9mIGxldmVscyB3aGVyZSB0aGlzIGxldmVsIGlzLiAqKVxuICAgICAgICBpbmRleCA6IGludFxuICAgICAgOyAoKiBIb3cgbWFueSBbYml0c10gdGhpcyBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IuICopXG4gICAgICAgIGJpdHMgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyAoKiBbc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOnQuYml0c10uICopXG4gICAgICAgIHNsb3RzX21hc2sgOiBTbG90c19tYXNrLnRcbiAgICAgIDsgKCogW2JpdHNfcGVyX3Nsb3RdIGlzIGhvdyBtYW55IGJpdHMgZWFjaCBzbG90IGRpc3Rpbmd1aXNoZXMsIGFuZCBpcyB0aGUgc3VtIG9mIG9mXG4gICAgICAgICAgIHRoZSBbYml0c10gb2YgYWxsIHRoZSBsb3dlciBsZXZlbHMuICopXG4gICAgICAgIGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyBrZXlzX3Blcl9zbG90IDogS2V5LlNwYW4udFxuICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50XG4gICAgICA7ICgqIFtkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPSBrZXlzX3Blcl9zbG90ICogQXJyYXkubGVuZ3RoIHNsb3RzIC0gMV0gKilcbiAgICAgICAgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IDogS2V5LlNwYW4udFxuICAgICAgOyAoKiBbbGVuZ3RoXSBpcyB0aGUgbnVtYmVyIG9mIGVsdHMgY3VycmVudGx5IGluIHRoaXMgbGV2ZWwuICopXG4gICAgICAgIG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7ICgqIEFsbCBlbGVtZW50cyBhdCB0aGlzIGxldmVsIGhhdmUgdGhlaXIgW2tleV0gc2F0aXNmeSBbbWluX2FsbG93ZWRfa2V5IDw9IGtleSA8PVxuICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXldLiAgQWxzbywgW21pbl9hbGxvd2VkX2tleV0gaXMgYSBtdWx0aXBsZSBvZiBba2V5c19wZXJfc2xvdF0uICopXG4gICAgICAgIG11dGFibGUgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyAoKiBbc2xvdHNdIGhvbGRzIHRoZSAocG9zc2libHkgbnVsbCkgcG9pbnRlcnMgdG8gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdHNcbiAgICAgICAgICAgb2YgZWx0cy4gIFtBcnJheS5sZW5ndGggc2xvdHMgPSAxIGxzbCBiaXRzXS4gKilcbiAgICAgICAgc2xvdHMgOiAoJ2EgSW50ZXJuYWxfZWx0LnQgYXJyYXlbQHNleHAub3BhcXVlXSlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2xvdCB0IH5rZXkgPSBLZXkuc2xvdCBrZXkgfmJpdHNfcGVyX3Nsb3Q6dC5iaXRzX3Blcl9zbG90IH5zbG90c19tYXNrOnQuc2xvdHNfbWFza1xuICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gU2xvdHNfbWFzay5uZXh0X3Nsb3QgdC5zbG90c19tYXNrIHNsb3RcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXkgPVxuICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IGtleSB0Lm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuXG4gICAgbGV0IGNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IHQgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICgqIFRoaXMgY29tcHV0YXRpb24gZW5zdXJlcyB0aGF0IFt0XSdzIFttaW5fYWxsb3dlZF9rZXldIGlzIGFzIGxhcmdlIGFzIHBvc3NpYmxlXG4gICAgICAgICBzdWJqZWN0IHRvIHRoZSBjb25zdHJhaW50IHRoYXQgdGhlcmUgaXMgbm8gaW50ZXItbGV2ZWwgZ2FwLiAqKVxuICAgICAgaWYgS2V5LmVxdWFsIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgIHRoZW4gS2V5Lm1heF92YWx1ZVxuICAgICAgZWxzZSBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXk6KEtleS5zdWNjIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBwb29sIDogJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuICAgIDsgKCogW21pbl9lbHRdIGlzIGVpdGhlciBudWxsIG9yIGFuIGVsZW1lbnQgd2hvc2Uga2V5IGlzIFtlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgbWluX2VsdCA6ICdhIEludGVybmFsX2VsdC50XG4gICAgOyAoKiBBbGwgZWxlbWVudHMgaW4gdGhlIHByaW9yaXR5IHF1ZXVlIGhhdmUgdGhlaXIga2V5IFs+PSBlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgZWx0X2tleV9sb3dlcl9ib3VuZCA6IEtleS50XG4gICAgOyBsZXZlbHMgOiAnYSBMZXZlbC50IGFycmF5XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gRXh0ZXJuYWxfZWx0Lm51bGxcbiAgICBsZXQgYXQgcCB0ID0gSW50ZXJuYWxfZWx0LmF0IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQga2V5IHAgdCA9IEludGVybmFsX2VsdC5rZXkgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCB2YWx1ZSBwIHQgPSBJbnRlcm5hbF9lbHQudmFsdWUgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG4gIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBudW1fbGV2ZWxzIHQgPSBBcnJheS5sZW5ndGggdC5sZXZlbHNcbiAgbGV0IG1pbl9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWluX2FsbG93ZWRfa2V5IHQubGV2ZWxzLigwKVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKG51bV9sZXZlbHMgdCAtIDEpXG5cbiAgbGV0IGludGVybmFsX2l0ZXIgdCB+ZiA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpIHRoZW4gSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmZcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID0gaW50ZXJuYWxfaXRlciB0IH5mOihmIDogXyBFbHQudCAtPiB1bml0IDo+IF8gSW50ZXJuYWxfZWx0LnQgLT4gdW5pdClcblxuICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBrZXkgOiBLZXkudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IGVsdHMgOiAnYSBFbHQudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHByZXR0eSB0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIHsgUHJldHR5Lm1pbl9hbGxvd2VkX2tleSA9IG1pbl9hbGxvd2VkX2tleSB0XG4gICAgOyBtYXhfYWxsb3dlZF9rZXkgPSBtYXhfYWxsb3dlZF9rZXkgdFxuICAgIDsgZWx0cyA9XG4gICAgICAgIChsZXQgciA9IHJlZiBbXSBpblxuICAgICAgICAgaW50ZXJuYWxfaXRlciB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIHJcbiAgICAgICAgICAgOj0geyBQcmV0dHkuRWx0LmtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHRcbiAgICAgICAgICAgICAgOyB2YWx1ZSA9IEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6ICFyKTtcbiAgICAgICAgIExpc3QucmV2ICFyKVxuICAgIH1cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgICB8IGBJbnRlcm5hbCAtPiBbJXNleHAgKHQgOiBhIHRfaW50ZXJuYWwpXVxuICAgIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG4gIDs7XG5cbiAgbGV0IGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IH5sZXZlbF9iaXRzIH5iaXRzX3Blcl9zbG90ID1cbiAgICBsZXQgYml0cyA9IE51bV9rZXlfYml0cy4oICsgKSBsZXZlbF9iaXRzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICBpZiBOdW1fa2V5X2JpdHMuZXF1YWwgYml0cyBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgdGhlbiBLZXkuU3Bhbi5tYXhfdmFsdWVcbiAgICBlbHNlIEtleS5TcGFuLnByZWQgKEtleS5udW1fa2V5cyBiaXRzKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGxldmVsX2ludmFyaWFudCBsZXZlbCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gbGV2ZWwgWyVzZXhwX29mOiBfIExldmVsLnRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgbGV2ZWwgZiBpblxuICAgICAgICBMZXZlbC5GaWVsZHMuaXRlclxuICAgICAgICAgIH5pbmRleDooY2hlY2sgKGZ1biBpbmRleCAtPiBhc3NlcnQgKGluZGV4ID49IDApKSlcbiAgICAgICAgICB+Yml0czooY2hlY2sgKGZ1biBiaXRzIC0+IGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIGJpdHMgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+c2xvdHNfbWFzazpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IFNsb3RzX21hc2sudF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOmxldmVsLmJpdHMpKSlcbiAgICAgICAgICB+Yml0c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGJpdHNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPj0gKSBiaXRzX3Blcl9zbG90IE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfmtleXNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBrZXlzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5udW1fa2V5cyBsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2s6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgICAgIChNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZSB+Yml0c19wZXJfc2xvdDpsZXZlbC5iaXRzX3Blcl9zbG90KSkpKVxuICAgICAgICAgIH5kaWZmX21heF9taW5fYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgKGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgIH5sZXZlbF9iaXRzOmxldmVsLmJpdHNcbiAgICAgICAgICAgICAgICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIGxlbmd0aFxuICAgICAgICAgICAgICAgICA9IEFycmF5LmZvbGQgbGV2ZWwuc2xvdHMgfmluaXQ6MCB+ZjooZnVuIG4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gICAgICAgICAgICAgICAgICAgdGhlbiBuXG4gICAgICAgICAgICAgICAgICAgZWxzZSBuICsgSW50ZXJuYWxfZWx0Lmxlbmd0aCBwb29sIGVsdCkpKSlcbiAgICAgICAgICB+bWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2FsbG93ZWRfa2V5IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgbWluX2FsbG93ZWRfa2V5IEtleS56ZXJvKTtcbiAgICAgICAgICAgICAgIGlmIEtleS4oIDwgKSBtaW5fYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChLZXkucmVtIG1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90KVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6S2V5LlNwYW4uemVybykpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgIG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChLZXkuYWRkX2NsYW1wX3RvX21heFxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSkpKVxuICAgICAgICAgIH5zbG90czpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHNsb3RzIC0+XG4gICAgICAgICAgICAgICBBcnJheS5pdGVyIHNsb3RzIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgZWx0O1xuICAgICAgICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGxldmVsLm1pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGxldmVsLm1heF9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIHQuZWx0X2tleV9sb3dlcl9ib3VuZCk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCA9IGxldmVsLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgIGludmFyaWFudF9hIChJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHQpKSkpKSkpXG4gICAgaW5cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF9pbnRlcm5hbF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1pbl9hbGxvd2VkX2tleSB0KSBLZXkuemVybyk7XG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1heF9hbGxvd2VkX2tleSB0KSAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgICAgfnBvb2w6KGNoZWNrIChJbnRlcm5hbF9lbHQuUG9vbC5pbnZhcmlhbnQgaWdub3JlKSlcbiAgICAgICAgfm1pbl9lbHQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZWx0XyAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XylcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGFzc2VydCAoSW50ZXJuYWxfZWx0LmlzX3ZhbGlkIHQucG9vbCBlbHRfKTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LmVxdWFsIHQuZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0XykpKSkpXG4gICAgICAgIH5lbHRfa2V5X2xvd2VyX2JvdW5kOlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF9rZXlfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWF4X2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCBlbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCB0Lm1pbl9lbHQpKSkpXG4gICAgICAgIH5sZXZlbHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGV2ZWxzIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChudW1fbGV2ZWxzIHQgPiAwKTtcbiAgICAgICAgICAgICBBcnJheS5pdGVyaSBsZXZlbHMgfmY6KGZ1biBsZXZlbF9pbmRleCBsZXZlbCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChsZXZlbF9pbmRleCA9IExldmVsLmluZGV4IGxldmVsKTtcbiAgICAgICAgICAgICAgIGxldmVsX2ludmFyaWFudCBsZXZlbDtcbiAgICAgICAgICAgICAgIGlmIGxldmVsX2luZGV4ID4gMFxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwcmV2X2xldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCAtIDEpIGluXG4gICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgTCA9IExldmVsIGluXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEwua2V5c19wZXJfc2xvdCBsZXZlbClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkuU3Bhbi5zdWNjIHByZXZfbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgIChMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTpwcmV2X2xldmVsLm1heF9hbGxvd2VkX2tleSkpKSkpKVxuICA7O1xuXG4gICgqKiBbbWluX2VsdF9dIHJldHVybnMgW251bGxdIGlmIGl0IGNhbid0IGZpbmQgdGhlIGRlc2lyZWQgZWxlbWVudC4gIFdlIHdyYXAgaXQgdXBcbiAgICAgIGFmdGVyd2FyZHMgdG8gcmV0dXJuIGFuIFtvcHRpb25dLiAqKVxuICBsZXQgbWluX2VsdF8gdCA9XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgIHRoZW4gdC5taW5fZWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA9IHJlZiAoSW50ZXJuYWxfZWx0Lm51bGwgKCkpIGluXG4gICAgICBsZXQgbWluX2tleV9hbHJlYWR5X2ZvdW5kID0gcmVmIEtleS5tYXhfdmFsdWUgaW5cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBLZXkuKCA+ICkgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBhbnkgbW9yZSBsZXZlbHMuICBRdWl0IHRoZSBsb29wLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHNcbiAgICAgICAgZWxzZSBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICAgIHRoZW4gaW5jciBsZXZlbF9pbmRleFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMb29rIGluIFtsZXZlbF0uICopXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBsZXQgc2xvdF9taW5fa2V5ID1cbiAgICAgICAgICAgIHJlZlxuICAgICAgICAgICAgICAoTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgfmtleTooS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IXNsb3RfbWluX2tleSkgaW5cbiAgICAgICAgICAoKiBGaW5kIHRoZSBmaXJzdCBub25lbXB0eSBzbG90IHdpdGggYSBzbWFsbCBlbm91Z2ggW3Nsb3RfbWluX2tleV0uICopXG4gICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5pc19udWxsIHNsb3RzLighc2xvdClcbiAgICAgICAgICAgICYmIEtleS4oIDwgKSAhc2xvdF9taW5fa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICBkb1xuICAgICAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgICAgICBzbG90X21pbl9rZXkgOj0gS2V5LmFkZCAhc2xvdF9taW5fa2V5IGxldmVsLmtleXNfcGVyX3Nsb3RcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVmlzaXQgYWxsIG9mIHRoZSBlbHRzIGluIHRoaXMgc2xvdCBhbmQgZmluZCBvbmUgd2l0aCBtaW5pbXVtIGtleS4gKilcbiAgICAgICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgICAgIGxldCBjdXJyZW50X2tleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICBpZiBLZXkuKCA8PSApIGN1cnJlbnRfa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWluX2VsdF9hbHJlYWR5X2ZvdW5kIDo9ICFjdXJyZW50O1xuICAgICAgICAgICAgICAgIG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA6PSBjdXJyZW50X2tleSk7XG4gICAgICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICAoKiBJZiBbIWxldmVsX2luZGV4ID0gMF0gdGhlbiBhbGwgZWx0cyBpbiB0aGlzIHNsb3QgaGF2ZSB0aGUgc2FtZSBba2V5XSxcbiAgICAgICAgICAgICAgICAgaS5lLiBbIXNsb3RfbWluX2tleV0uICBTbywgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnkgZWxlbWVudHMgYWZ0ZXJcbiAgICAgICAgICAgICAgICAgW2ZpcnN0XS4gIFRoaXMgaXMgYSB1c2VmdWwgc2hvcnQgY3V0IGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZXJlIGFyZVxuICAgICAgICAgICAgICAgICBtdWx0aXBsZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBtaW4gc2xvdCBpbiBsZXZlbCAwLiAqKVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgfHwgIWxldmVsX2luZGV4ID0gMFxuICAgICAgICAgICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICAgICAgICAgIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAoKiBGaW5pc2hlZCBsb29raW5nIGluIFtsZXZlbF0uICBNb3ZlIHVwIHRvIHRoZSBuZXh0IGxldmVsLiAqKVxuICAgICAgICAgIGluY3IgbGV2ZWxfaW5kZXgpXG4gICAgICBkb25lO1xuICAgICAgdC5taW5fZWx0IDwtICFtaW5fZWx0X2FscmVhZHlfZm91bmQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gIW1pbl9rZXlfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQubWluX2VsdClcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgIChrZXkgOiBLZXkudClcbiAgICAgICAgICAobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICAobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+cHJpb3JpdHlfcXVldWU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWwgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBsZXZlbCBib3VuZHNcIiAoa2V5IDogS2V5LnQpIChsZXZlbCA6IF8gTGV2ZWwudCldXG4gIDs7XG5cbiAgbGV0IGFkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgJiYgS2V5LiggPD0gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXk7XG4gICAgKCogRmluZCB0aGUgbG93ZXN0IGxldmVsIHRoYXQgd2lsbCBob2xkIFtlbHRdLiAqKVxuICAgIGxldCBsZXZlbF9pbmRleCA9XG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgd2hpbGUgS2V5LiggPiApIGtleSAoTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpKSBkb1xuICAgICAgICBpbmNyIGxldmVsX2luZGV4XG4gICAgICBkb25lO1xuICAgICAgIWxldmVsX2luZGV4XG4gICAgaW5cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgJiYgS2V5LiggPD0gKSBrZXkgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWw7XG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCArIDE7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9sZXZlbF9pbmRleCBwb29sIGVsdCBsZXZlbF9pbmRleDtcbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICB0aGVuIEludGVybmFsX2VsdC5pbnNlcnRfYXRfZW5kIHBvb2wgZmlyc3QgfnRvX2FkZDplbHRcbiAgICBlbHNlIChcbiAgICAgIHNsb3RzLihzbG90KSA8LSBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQubGlua190b19zZWxmIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0IGluXG4gICAgaWYgS2V5LiggPCApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICB0aGVuIChcbiAgICAgIHQubWluX2VsdCA8LSBlbHQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0ga2V5KTtcbiAgICBhZGRfZWx0IHQgZWx0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuYWRkX2F0X2ludGVydmFsX251bSBnb3QgaW52YWxpZCBpbnRlcnZhbCBudW1cIlxuICAgICAgICAgIH5pbnRlcnZhbF9udW06KGtleSA6IEtleS50KVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudCldXG4gIDs7XG5cbiAgbGV0IGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5ID1cbiAgICBpZiBLZXkuKCA8ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgfHwgS2V5LiggPiApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXlcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkIHQgfmtleSB+YXQgdmFsdWUgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGlmIEludGVybmFsX2VsdC5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIEludGVybmFsX2VsdC5Qb29sLmdyb3cgdC5wb29sO1xuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQuY3JlYXRlIHQucG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4OigtMSkgaW5cbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0O1xuICAgIGVsdFxuICA7O1xuXG4gICgqKiBbcmVtb3ZlX29yX3JlX2FkZF9lbHRzXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIFtmaXJzdF0uICBJZiB0aGUgZWxlbWVudCdzIGtleSBpcyBbPj0gdF9taW5fYWxsb3dlZF9rZXldLCB0aGVuIGl0IGFkZHMgdGhlIGVsZW1lbnRcbiAgICAgIGJhY2sgYXQgYSBsb3dlciBsZXZlbC4gIElmIG5vdCwgdGhlbiBpdCBjYWxscyBbaGFuZGxlX3JlbW92ZWRdIGFuZCBbZnJlZV1zIHRoZVxuICAgICAgZWxlbWVudC4gKilcbiAgbGV0IHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IChsZXZlbCA6IF8gTGV2ZWwudCkgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICgqIFdlIGV4dHJhY3QgW25leHRdIGZyb20gW2N1cnJlbnRdIGZpcnN0LCBiZWNhdXNlIHdlIHdpbGwgbW9kaWZ5IG9yIFtmcmVlXVxuICAgICAgICAgW2N1cnJlbnRdIGJlZm9yZSBjb250aW51aW5nIHRoZSBsb29wLiAqKVxuICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICAgIGlmIEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCkgdF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIHRoZW4gYWRkX2VsdCB0ICFjdXJyZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgICAgICBoYW5kbGVfcmVtb3ZlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsICFjdXJyZW50KTtcbiAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCAhY3VycmVudCk7XG4gICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgIGRvbmVcbiAgOztcblxuICAoKiogW2luY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBbbGV2ZWxdIHRvIGFzXG4gICAgICBsYXJnZSBhIHZhbHVlIGFzIHBvc3NpYmxlLCBidXQgbm8gbW9yZSB0aGFuIFttYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XS5cbiAgICAgIFt0X21pbl9hbGxvd2VkX2tleV0gaXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgZm9yIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsLiAgQXNcbiAgICAgIGVsZW1lbnRzIGFyZSBlbmNvdW50ZXJlZCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgaWYgdGhlaXIga2V5IGlzXG4gICAgICBzbWFsbGVyIHRoYW4gW3RfbWluX2FsbG93ZWRfa2V5XSwgb3IgYWRkZWQgYXQgYSBsb3dlciBsZXZlbCBpZiBub3QuICopXG4gIGxldCBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdFxuICAgICAgICAobGV2ZWwgOiBfIExldmVsLnQpXG4gICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleSBsZXZlbCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICBpblxuICAgICgqIFdlIHJlcXVpcmUgdGhhdCBbbW9kIGxldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90ID0gMF0uICBTbyxcbiAgICAgICB3ZSBzdGFydCBbbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSB3aGVyZSB0aGF0IGlzIHRydWUsIGFuZCB0aGVuIGluY3JlYXNlIGl0IGJ5XG4gICAgICAgW2tleXNfcGVyX3Nsb3RdIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLiAqKVxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgbGV2ZWxcbiAgICAgICAgfmtleTpcbiAgICAgICAgICAoS2V5Lm1pblxuICAgICAgICAgICAgIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgKEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgaW5cbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID0gcmVmIGxldmVsX21pbl9hbGxvd2VkX2tleSBpblxuICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IWxldmVsX21pbl9hbGxvd2VkX2tleSkgaW5cbiAgICBsZXQga2V5c19wZXJfc2xvdCA9IGxldmVsLmtleXNfcGVyX3Nsb3QgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIHdoaWxlIEtleS4oIDwgKSAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGRvXG4gICAgICBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICB0aGVuXG4gICAgICAgICgqIElmIG5vIGVsZW1lbnRzIHJlbWFpbiBhdCB0aGlzIGxldmVsLCB3ZSBjYW4ganVzdCBzZXQgW21pbl9hbGxvd2VkX2tleV0gdG8gdGhlXG4gICAgICAgICAgIGRlc2lyZWQgdmFsdWUuICopXG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc2xvdHMuKCFzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgICByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCBsZXZlbCBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkKTtcbiAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBLZXkuYWRkX2NsYW1wX3RvX21heCAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGtleXNfcGVyX3Nsb3QpXG4gICAgZG9uZTtcbiAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXkgPC0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXk7XG4gICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5XG4gICAgPC0gS2V5LmFkZF9jbGFtcF90b19tYXggZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgbGV0IGluY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkIDogSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50ID1cbiAgICBpZiBLZXkuKCA8PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICBlbHNlIChcbiAgICAgICgqIFdlIGluY3JlYXNlIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBsZXZlbHMgaW4gb3JkZXIgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50XG4gICAgICAgICB0aGF0IHRoZXkgaGF2ZSBhcyBsYXJnZSBhcyBwb3NzaWJsZSBhIFttaW5fYWxsb3dlZF9rZXldLCB3aGlsZSBsZWF2aW5nIG5vIGdhcHNcbiAgICAgICAgIGluIGtleXMuICopXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0Lk1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIGluXG4gICAgICBsZXQgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPSByZWYgKEtleS5wcmVkIGtleSkgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlID0gbGV2ZWwubWluX2FsbG93ZWRfa2V5IGluXG4gICAgICAgIGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgIHRcbiAgICAgICAgICBsZXZlbFxuICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTohcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXk6a2V5XG4gICAgICAgICAgfmhhbmRsZV9yZW1vdmVkO1xuICAgICAgICBpZiBLZXkuZXF1YWwgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgbWluX2FsbG93ZWRfa2V5X2JlZm9yZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBUaGlzIGxldmVsIGRpZCBub3Qgc2hpZnQuICBEb24ndCBzaGlmdCBhbnkgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzO1xuICAgICAgICAgIHJlc3VsdCA6PSBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExldmVsIFtsZXZlbF9pbmRleF0gc2hpZnRlZC4gIENvbnNpZGVyIHNoaWZ0aW5nIGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gIWxldmVsX2luZGV4ICsgMTtcbiAgICAgICAgICBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA6PSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgbGV2ZWwpXG4gICAgICBkb25lO1xuICAgICAgaWYgS2V5LiggPiApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBXZSBoYXZlIHJlbW92ZWQgW3QubWluX2VsdF0gb3IgaXQgd2FzIGFscmVhZHkgbnVsbCwgc28ganVzdCBzZXQgaXQgdG9cbiAgICAgICAgICAgbnVsbC4gKilcbiAgICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gbWluX2FsbG93ZWRfa2V5IHQpO1xuICAgICAgIXJlc3VsdClcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/bGV2ZWxfYml0cyAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgbWF0Y2ggbGV2ZWxfYml0cyB3aXRoXG4gICAgICB8IFNvbWUgbCAtPiBsXG4gICAgICB8IE5vbmUgLT4gTGV2ZWxfYml0cy5kZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgXywgXywgbGV2ZWxzID1cbiAgICAgIExpc3QuZm9sZGlcbiAgICAgICAgbGV2ZWxfYml0c1xuICAgICAgICB+aW5pdDooTnVtX2tleV9iaXRzLnplcm8sIEtleS56ZXJvLCBbXSlcbiAgICAgICAgfmY6XG4gICAgICAgICAgKGZ1blxuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgIChiaXRzX3Blcl9zbG90LCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5LCBsZXZlbHMpXG4gICAgICAgICAgICAobGV2ZWxfYml0cyA6IE51bV9rZXlfYml0cy50KVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBLZXkubnVtX2tleXMgYml0c19wZXJfc2xvdCBpblxuICAgICAgICAgICAgICBsZXQgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlIH5iaXRzX3Blcl9zbG90IGluXG4gICAgICAgICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1heF9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgS2V5LmFkZF9jbGFtcF90b19tYXggbWluX2FsbG93ZWRfa2V5IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbGV2ZWwgPVxuICAgICAgICAgICAgICAgIHsgTGV2ZWwuaW5kZXhcbiAgICAgICAgICAgICAgICA7IGJpdHMgPSBsZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgOyBzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHNcbiAgICAgICAgICAgICAgICA7IGJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICA7IGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICA7IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgICAgICAgICAgIDsgbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgOyBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICA7IHNsb3RzID1cbiAgICAgICAgICAgICAgICAgICAgQXJyYXkuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjooSW50NjMudG9faW50X2V4biAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykpXG4gICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICwgS2V5LnN1Y2NfY2xhbXBfdG9fbWF4IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAsIGxldmVsIDo6IGxldmVscyApKVxuICAgIGluXG4gICAgeyBsZW5ndGggPSAwXG4gICAgOyBwb29sID0gSW50ZXJuYWxfZWx0LlBvb2wuY3JlYXRlID9jYXBhY2l0eSAoKVxuICAgIDsgbWluX2VsdCA9IEludGVybmFsX2VsdC5udWxsICgpXG4gICAgOyBlbHRfa2V5X2xvd2VyX2JvdW5kID0gS2V5Lnplcm9cbiAgICA7IGxldmVscyA9IEFycmF5Lm9mX2xpc3RfcmV2IGxldmVsc1xuICAgIH1cbiAgOztcblxuICBsZXQgbWVtIHQgZWx0ID0gSW50ZXJuYWxfZWx0LmV4dGVybmFsX2lzX3ZhbGlkIHQucG9vbCBlbHRcblxuICBsZXQgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGlmIEludGVybmFsX2VsdC5lcXVhbCBlbHQgdC5taW5fZWx0XG4gICAgdGhlblxuICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgKCogV2Uga2VlcCBbdC5lbHRfbG93ZXJfYm91bmRdIHNpbmNlIGl0IGlzIHZhbGlkIGV2ZW4gdGhvdWdoIFt0Lm1pbl9lbHRdIGlzIGJlaW5nXG4gICAgICAgcmVtb3ZlZC4gKik7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQpIGluXG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBwaHlzX2VxdWFsIGVsdCAoSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQpXG4gICAgdGhlbiAoKiBbZWx0XSBpcyB0aGUgb25seSBlbGVtZW50IGluIHRoZSBzbG90ICopXG4gICAgICBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIChcbiAgICAgIGlmIHBoeXNfZXF1YWwgZWx0IGZpcnN0IHRoZW4gc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LnVubGluayBwb29sIGVsdClcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0XG4gIDs7XG5cbiAgbGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkIH5rZXkgfm5vdyA9XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKDApIGluXG4gICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZpcnN0ID0gcmVmIHNsb3RzLihzbG90KSBpblxuICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCAhZmlyc3QpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgIWZpcnN0IGluXG4gICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgIGxldCBlbHQgPSAhY3VycmVudCBpblxuICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgIWZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHQ7XG4gICAgICAgICAgaWYgVGltZV9ucy4oIDw9ICkgKEludGVybmFsX2VsdC5hdCBwb29sIGVsdCkgbm93XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBoYW5kbGVfZmlyZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCBlbHQpO1xuICAgICAgICAgICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQ7XG4gICAgICAgICAgICAoKiBXZSByZWNvbXB1dGUgW2ZpcnN0XSBiZWNhdXNlIFtpbnRlcm5hbF9yZW1vdmVdIG1heSBoYXZlIGNoYW5nZWQgaXQuICopXG4gICAgICAgICAgICBmaXJzdCA6PSBzbG90cy4oc2xvdCkpXG4gICAgICAgIGRvbmUpKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBlbHQgfmtleSB+YXQgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9rZXkgcG9vbCBlbHQga2V5O1xuICAgIEludGVybmFsX2VsdC5zZXRfYXQgcG9vbCBlbHQgYXQ7XG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdFxuICA7O1xuXG4gIGxldCBjbGVhciB0ID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmcmVlX2VsdCBlbHQgPSBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV2ZWwubGVuZ3RoIDwtIDA7XG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6ZnJlZV9lbHQ7XG4gICAgICAgICAgICAgIHNsb3RzLihzbG90X2luZGV4KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxfZWx0ID0gUHJpb3JpdHlfcXVldWUuSW50ZXJuYWxfZWx0XG5tb2R1bGUgS2V5ID0gUHJpb3JpdHlfcXVldWUuS2V5XG5tb2R1bGUgSW50ZXJ2YWxfbnVtID0gS2V5XG5cbmxldCBtaW5faW50ZXJ2YWxfbnVtID0gSW50ZXJ2YWxfbnVtLnplcm9cblxuKCogQWxsIHRpbWUgZnJvbSB0aGUgZXBvY2ggb253YXJkcyBpcyBicm9rZW4gaW50byBoYWxmLW9wZW4gaW50ZXJ2YWxzIG9mIHNpemVcbiAgIFtDb25maWcuYWxhcm1fcHJlY2lzaW9uIGNvbmZpZ10uICBUaGUgaW50ZXJ2YWxzIGFyZSBudW1iZXJlZCBzdGFydGluZyBhdCB6ZXJvLCBhbmQgYVxuICAgdGltZSdzIGludGVydmFsIG51bWJlciBzZXJ2ZXMgYXMgaXRzIGtleSBpbiBbcHJpb3JpdHlfcXVldWVdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBjb25maWcgOiBDb25maWcudFxuICA7IHN0YXJ0IDogVGltZV9ucy50XG4gIDsgKCogW21heF9pbnRlcnZhbF9udW1dIGlzIHRoZSBpbnRlcnZhbCBudW1iZXIgb2YgW21heF90aW1lXS4gKilcbiAgICBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgOyBtdXRhYmxlIG5vdyA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudFxuICA7IHByaW9yaXR5X3F1ZXVlIDogJ2EgUHJpb3JpdHlfcXVldWUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdGltaW5nX3doZWVsID0gJ2EgdFxudHlwZSAnYSB0X25vdyA9ICdhIHRcblxubGV0IHNleHBfb2ZfdF9ub3cgXyB0ID0gWyVzZXhwICh0Lm5vdyA6IFRpbWVfbnMudCldXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBDb25maWcuYWxhcm1fcHJlY2lzaW9uIHQuY29uZmlnXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmlvcml0eV9xdWV1ZS5FbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBudWxsID0gUHJpb3JpdHlfcXVldWUuRWx0Lm51bGxcbiAgbGV0IGF0IHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQuYXQgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgdmFsdWUgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC52YWx1ZSB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCBpbnRlcnZhbF9udW0gdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5rZXkgdHcucHJpb3JpdHlfcXVldWUgdFxuZW5kXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBpdGVyIHQgfmYgPSBQcmlvcml0eV9xdWV1ZS5pdGVyIHQucHJpb3JpdHlfcXVldWUgfmZcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBhdCA6IFRpbWVfbnMudFxuICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB0IGFsYXJtID0geyBhdCA9IEFsYXJtLmF0IHQgYWxhcm07IHZhbHVlID0gQWxhcm0udmFsdWUgdCBhbGFybSB9XG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBUaW1lX25zLmNvbXBhcmUgKGF0IHQxKSAoYXQgdDIpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBjb25maWcgOiBDb25maWcudFxuICAgIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICAgIDsgbm93IDogVGltZV9ucy50XG4gICAgOyBhbGFybXMgOiAnYSBBbGFybS50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IHByZXR0eVxuICAgICAgKHsgY29uZmlnXG4gICAgICAgOyBzdGFydFxuICAgICAgIDsgbWF4X2ludGVydmFsX251bVxuICAgICAgIDsgbm93XG4gICAgICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID0gX1xuICAgICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IF9cbiAgICAgICA7IHByaW9yaXR5X3F1ZXVlID0gX1xuICAgICAgIH0gYXMgdClcbiAgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IHIgOj0gUHJldHR5LkFsYXJtLmNyZWF0ZSB0IGEgOjogIXIpO1xuICBsZXQgYWxhcm1zID0gTGlzdC5zb3J0ICFyIH5jb21wYXJlOlByZXR0eS5BbGFybS5jb21wYXJlIGluXG4gIHsgUHJldHR5LmNvbmZpZzsgc3RhcnQ7IG1heF9pbnRlcnZhbF9udW07IG5vdzsgYWxhcm1zIH1cbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgfCBgSW50ZXJuYWwgLT4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2ZfYSB0XG4gIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBQcmlvcml0eV9xdWV1ZS5sZW5ndGggdC5wcmlvcml0eV9xdWV1ZVxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdpdGggYWxsIGFsYXJtcyBpbiBtYXggaW50ZXJ2YWxcIlxuICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldCBwb29sIHQgPSBQcmlvcml0eV9xdWV1ZS5wb29sIHQucHJpb3JpdHlfcXVldWVcblxubGV0IGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uID1cbiAgSW50ZXJ2YWxfbnVtLm9mX2ludDYzIChBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtIGFsYXJtX3ByZWNpc2lvbiB0aW1lKVxuOztcblxubGV0IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lID1cbiAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb246dC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgdGltZSBtaW5fdGltZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bSBnb3QgdGltZSB0b28gZmFyIGluIHRoZSBwYXN0XCIgKHRpbWUgOiBUaW1lX25zLnQpXTtcbiAgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWVcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtID1cbiAgQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bV9zdGFydFxuICAgIHQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIChpbnRlcnZhbF9udW0gfD4gSW50ZXJ2YWxfbnVtLnRvX2ludDYzKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBzbWFsbCBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgIChtaW5faW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIGxhcmdlIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKHQubWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICBpZiBJbnRlcnZhbF9udW0uKCA8ICkgaW50ZXJ2YWxfbnVtIG1pbl9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW07XG4gIGlmIEludGVydmFsX251bS4oID4gKSBpbnRlcnZhbF9udW0gdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW07XG4gIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW1cbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5ID1cbiAgKCogW2ludGVydmFsX251bV9zdGFydCB0IGtleV0gaXMgdGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgdGltZSBpbnRlcnZhbFxuICAgICBob2xkaW5nIHRoZSBmaXJzdCBhbGFybSBpbiBbdF0uICBBZHZhbmNpbmcgdG8gdGhhdCB3b3VsZCBub3QgYmUgZW5vdWdoLCBzaW5jZSB0aGVcbiAgICAgYWxhcm1zIGluIHRoYXQgaW50ZXJ2YWwgZG9uJ3QgZmlyZSB1bnRpbCB0aGUgY2xvY2sgaXMgYWR2YW5jZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZVxuICAgICBuZXh0IGludGVydmFsLiAgU28sIHdlIHVzZSBbc3VjYyBrZXldIHRvIGFkdmFuY2UgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgIGludGVydmFsLiAqKVxuICBpbnRlcnZhbF9udW1fc3RhcnQgdCAoS2V5LnN1Y2Mga2V5KVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gICAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkpKVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdDtcbiAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQ7XG4gIG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXlcbjs7XG5cbmxldCBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9XG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgPSBQcmlvcml0eV9xdWV1ZS5tYXhfYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcnZhbF9udW0uKCA+PSApIG1heF9hbGxvd2VkX2tleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiBtYXhfdGltZVxuICBlbHNlXG4gICAgVGltZV9ucy5hZGRcbiAgICAgIChpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgbWF4X2FsbG93ZWRfa2V5KVxuICAgICAgKFRpbWVfbnMuU3Bhbi4oIC0gKSAoYWxhcm1fcHJlY2lzaW9uIHQpIFRpbWVfbnMuU3Bhbi5uYW5vc2Vjb25kKVxuOztcblxubGV0IG5vd19pbnRlcnZhbF9udW0gdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtID0gbm93X2ludGVydmFsX251bVxubGV0IG1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSB0ID0gaW50ZXJ2YWxfbnVtIHQgKG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbmxldCBpbnRlcnZhbF9zdGFydCB0IHRpbWUgPSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgKGludGVydmFsX251bSB0IHRpbWUpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb25maWc6KGNoZWNrIENvbmZpZy5pbnZhcmlhbnQpXG4gICAgICB+c3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIHN0YXJ0IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgc3RhcnQgbWluX3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIHN0YXJ0IG1heF90aW1lKSkpXG4gICAgICB+bWF4X2ludGVydmFsX251bTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2ludGVydmFsX251bSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgbWF4X3RpbWUpO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKGludGVydmFsX251bV9zdGFydCB0IG1heF9pbnRlcnZhbF9udW0pKSkpXG4gICAgICB+bm93OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3cgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBub3cgdC5zdGFydCk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgbm93IG1heF90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCB0Lm5vdylcbiAgICAgICAgICAgICAgIChQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSkpKSlcbiAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgICAgICAgICAgfmV4cGVjdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKG5vd19pbnRlcnZhbF9udW0gdCkpKSlcbiAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9hbGFybV90aW1lIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBtYXhfYWxsb3dlZF9hbGFybV90aW1lXG4gICAgICAgICAgICAgfmV4cGVjdDooY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKSlcbiAgICAgIH5wcmlvcml0eV9xdWV1ZTooY2hlY2sgKFByaW9yaXR5X3F1ZXVlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpO1xuICAgIGl0ZXIgdCB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAoQWxhcm0uaW50ZXJ2YWxfbnVtIHQgYWxhcm0pXG4gICAgICAgICAgKGludGVydmFsX251bSB0IChBbGFybS5hdCB0IGFsYXJtKSkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgVGltZV9ucy4oID49ICkgKGludGVydmFsX3N0YXJ0IHQgKEFsYXJtLmF0IHQgYWxhcm0pKSAoaW50ZXJ2YWxfc3RhcnQgdCAobm93IHQpKSk7XG4gICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgKEFsYXJtLmF0IHQgYWxhcm0pIChUaW1lX25zLnN1YiAobm93IHQpIChhbGFybV9wcmVjaXNpb24gdCkpKSkpXG47O1xuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfmhhbmRsZV9maXJlZCA9XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgdClcbiAgdGhlbiAoXG4gICAgdC5ub3cgPC0gdG9fO1xuICAgIGxldCBrZXkgPSBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdG9fIGluXG4gICAgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDwtIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBrZXk7XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5X3F1ZXVlLmluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgIH5rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkOmhhbmRsZV9maXJlZFxuICAgIHdpdGhcbiAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSAtPlxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPSApIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSAoY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKVxuICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgLT5cbiAgICAgIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbjs7XG5cbmxldCBjcmVhdGUgfmNvbmZpZyB+c3RhcnQgPVxuICBpZiBUaW1lX25zLiggPCApIHN0YXJ0IFRpbWVfbnMuZXBvY2hcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbC5jcmVhdGUgZ290IHN0YXJ0IGJlZm9yZSB0aGUgZXBvY2hcIiAoc3RhcnQgOiBUaW1lX25zLnQpXTtcbiAgbGV0IHQgPVxuICAgIHsgY29uZmlnXG4gICAgOyBzdGFydFxuICAgIDsgbWF4X2ludGVydmFsX251bSA9XG4gICAgICAgIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZTptYXhfdGltZSB+YWxhcm1fcHJlY2lzaW9uOmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICA7IG5vdyA9IFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9XG4gICAgICAgIFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IG1heF90aW1lICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IHByaW9yaXR5X3F1ZXVlID1cbiAgICAgICAgUHJpb3JpdHlfcXVldWUuY3JlYXRlID9jYXBhY2l0eTpjb25maWcuY2FwYWNpdHkgfmxldmVsX2JpdHM6Y29uZmlnLmxldmVsX2JpdHMgKClcbiAgICB9XG4gIGluXG4gIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdDtcbiAgYWR2YW5jZV9jbG9jayB0IH50b186c3RhcnQgfmhhbmRsZV9maXJlZDooZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgdFxuOztcblxubGV0IGFkZF9hdF9pbnRlcnZhbF9udW0gdCB+YXQgdmFsdWUgPVxuICBJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWxcbiAgICAoUHJpb3JpdHlfcXVldWUuaW50ZXJuYWxfYWRkXG4gICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgIH5rZXk6YXRcbiAgICAgICB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuICAgICAgIHZhbHVlKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gdGhhdCBmYXIgaW4gdGhlIGZ1dHVyZVwiXG4gICAgICAgIChhdCA6IFRpbWVfbnMudClcbiAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6KHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JlZm9yZV9zdGFydF9vZl9jdXJyZW50X2ludGVydmFsIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gYmVmb3JlIHN0YXJ0IG9mIGN1cnJlbnQgaW50ZXJ2YWxcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Oih0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnQpXVxuOztcblxubGV0IGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQgPVxuICBpZiBUaW1lX25zLiggPiApIGF0IHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0aGVuIHJhaXNlX3RoYXRfZmFyX2luX3RoZV9mdXR1cmUgdCBhdDtcbiAgaWYgVGltZV9ucy4oIDwgKSBhdCB0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgdGhlbiByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0XG47O1xuXG5sZXQgYWRkIHQgfmF0IHZhbHVlID1cbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpXG4gICAgICAgfmF0XG4gICAgICAgdmFsdWUpXG47O1xuXG5sZXQgcmVtb3ZlIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5yZW1vdmUgdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxubGV0IGNsZWFyIHQgPSBQcmlvcml0eV9xdWV1ZS5jbGVhciB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWVtIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5tZW0gdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxuXG5sZXQgcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5IH5hdCA9XG4gIGlmIG5vdCAobWVtIHQgYWxhcm0pXG4gIHRoZW4gZmFpbHdpdGggXCJUaW1pbmdfd2hlZWwgY2Fubm90IHJlc2NoZWR1bGUgYWxhcm0gbm90IGluIHRpbWluZyB3aGVlbFwiO1xuICBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0O1xuICBQcmlvcml0eV9xdWV1ZS5jaGFuZ2UgdC5wcmlvcml0eV9xdWV1ZSBhbGFybSB+a2V5IH5hdFxuOztcblxubGV0IHJlc2NoZWR1bGUgdCBhbGFybSB+YXQgPSByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6KGludGVydmFsX251bV91bmNoZWNrZWQgdCBhdCkgfmF0XG5cbmxldCByZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSB0IGFsYXJtIH5hdCA9XG4gIHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleTphdCB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuOztcblxubGV0IG1pbl9hbGFybV9pbnRlcnZhbF9udW0gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWluX2FsYXJtX2ludGVydmFsX251bV9leG4gb2YgZW1wdHkgdGltaW5nX3doZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbiAgZWxzZSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdFxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWF4X2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWluX2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAobWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldO1xuICBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0XG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkID1cbiAgUHJpb3JpdHlfcXVldWUuZmlyZV9wYXN0X2FsYXJtc1xuICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICB+aGFuZGxlX2ZpcmVkXG4gICAgfmtleToobm93X2ludGVydmFsX251bSB0KVxuICAgIH5ub3c6dC5ub3dcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fa2V5X2JpdHMgPSBOdW1fa2V5X2JpdHNcblxuICBsZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsID0gaW50ZXJ2YWxfbnVtX2ludGVybmFsXG4gIGxldCBtYXhfdGltZSA9IG1heF90aW1lXG5lbmRcbiIsIm1vZHVsZSBJbnJpYV9zeXMgPSBTeXNcbm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxub3BlbiBQb2x5XG5cbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxuXG5tb2R1bGUgRXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50XG5cbiAgICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gICAgZW5kKVxuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biAoMSBsc2wgMTYpXG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbmVuZFxuXG5tb2R1bGUgTWF4X251bV90aHJlYWRzID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBEdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gc3RydWN0XG4gIG1vZHVsZSBIb3dfdG9fZHVtcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IERlZmF1bHRcbiAgICAgIHwgQ2FsbF9hYm9ydFxuICAgICAgfCBDYWxsX2djb3JlXG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgdHlwZSB3YXRjaCA9XG4gICAgeyBkdW1wX2lmX2RlbGF5ZWRfYnkgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgaG93X3RvX2R1bXAgOiBIb3dfdG9fZHVtcC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIHR5cGUgdCA9XG4gICAgfCBXYXRjaCBvZiB3YXRjaFxuICAgIHwgRG9fbm90X3dhdGNoXG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubW9kdWxlIERlYnVnX3RhZyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFsbFxuICAgICAgfCBDbG9ja1xuICAgICAgfCBGZFxuICAgICAgfCBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgIHwgRmluYWxpemVyc1xuICAgICAgfCBJbnRlcnJ1cHRvclxuICAgICAgfCBNb25pdG9yXG4gICAgICB8IE1vbml0b3Jfc2VuZF9leG5cbiAgICAgIHwgUGFyYWxsZWxcbiAgICAgIHwgUmVhZGVyXG4gICAgICB8IFNjaGVkdWxlclxuICAgICAgfCBTaHV0ZG93blxuICAgICAgfCBUaHJlYWRfcG9vbFxuICAgICAgfCBUaHJlYWRfc2FmZVxuICAgICAgfCBXcml0ZXJcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID1cbiAgICBbIEFsbFxuICAgIDsgQ2xvY2tcbiAgICA7IEZkXG4gICAgOyBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICA7IEZpbmFsaXplcnNcbiAgICA7IEludGVycnVwdG9yXG4gICAgOyBNb25pdG9yXG4gICAgOyBNb25pdG9yX3NlbmRfZXhuXG4gICAgOyBQYXJhbGxlbFxuICAgIDsgUmVhZGVyXG4gICAgOyBTY2hlZHVsZXJcbiAgICA7IFNodXRkb3duXG4gICAgOyBUaHJlYWRfcG9vbFxuICAgIDsgVGhyZWFkX3NhZmVcbiAgICA7IFdyaXRlclxuICAgIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9kZXNjcl93YXRjaGVyID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRXBvbGxfaWZfdGltZXJmZFxuICAgICAgfCBFcG9sbFxuICAgICAgfCBTZWxlY3RcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID0gWyBFcG9sbF9pZl90aW1lcmZkOyBFcG9sbDsgU2VsZWN0IF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGNoZWNrX2ludmFyaWFudHMgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA6IER1bXBfY29yZV9vbl9qb2JfZGVsYXkudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzIDogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA6IEZpbGVfZGVzY3Jfd2F0Y2hlci50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgOiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX3RocmVhZHMgOiBNYXhfbnVtX3RocmVhZHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnQgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgOiBEZWJ1Z190YWcudCBsaXN0IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IDogVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA6IFRpbWluZ193aGVlbC5Db25maWcudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG5sZXQgZW1wdHkgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IE5vbmVcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gTm9uZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IE5vbmVcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gTm9uZVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBOb25lXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gTm9uZVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IE5vbmVcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBOb25lXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBOb25lXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBOb25lXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gTm9uZVxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gTm9uZVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gTm9uZVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBOb25lXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVcbiAgICAgID9hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID9jaGVja19pbnZhcmlhbnRzXG4gICAgICA/ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gICAgICA/ZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICAgICAgP2Vwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgICAgID9maWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgID9tYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICAgICAgP21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICAgICAgP21heF9udW1fdGhyZWFkc1xuICAgICAgP21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gICAgICA/bWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9wcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgICAgID9yZWNvcmRfYmFja3RyYWNlc1xuICAgICAgP3JlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgICAgID90aW1pbmdfd2hlZWxfY29uZmlnXG4gICAgICAoKVxuICA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXNcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2Zvcl93b3JkX3NpemUgKHdvcmRfc2l6ZSA6IFdvcmRfc2l6ZS50KSA9XG4gIGxldCBtb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvbiBpblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uLCBsZXZlbF9iaXRzID1cbiAgICBtYXRjaCB3b3JkX3NpemUgd2l0aFxuICAgIHwgVzMyIC0+IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQsIFsgMTA7IDEwOyA5IF1cbiAgICB8IFc2NCAtPiBBbGFybV9wcmVjaXNpb24uKGRpdiBhYm91dF9vbmVfbWlsbGlzZWNvbmQgfnBvdzI6MyksIFsgMTQ7IDE1OyA5OyA2IF1cbiAgaW5cbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cylcbiAgICAoKVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplIFdvcmRfc2l6ZS53b3JkX3NpemVcbjs7XG5cbmxldCBkZWZhdWx0ID1cbiAgKCogRm9yIFtmaWxlX2Rlc2NyX3dhdGNoZXJdIGFuZCBbbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXSB3ZSBjaG9vc2UgdGhlIGRlZmF1bHQgZm9yIHRoZVxuICAgICBjb21tb24gY2FzZSB0aGF0IFtlcG9sbF0gaXMgYXZhaWxhYmxlLiAgVGhlcmUgaXMgc29tZSBhZGRpdGlvbmFsIGNvZGUgaW5cbiAgICAgW0FzeW5jX3VuaXguQ29uZmlnXSB0aGF0IGNoZWNrcyB3aGV0aGVyIFtlcG9sbF0gaXMgYWN0dWFsbHkgYXZhaWxhYmxlLCBhbmQgaWYgbm90LFxuICAgICB1c2VzIFtzZWxlY3RdIGFuZCBhIHNtYWxsZXIgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMuICopXG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDYwLilcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gU29tZSBmYWxzZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZmFsc2VcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gU29tZSBEb19ub3Rfd2F0Y2hcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gU29tZSAoRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy5jcmVhdGVfZXhuIDI1NilcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIEVwb2xsX2lmX3RpbWVyZmRcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgKE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LmNyZWF0ZV9leG4gKHNlYyAwLjA1KSlcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBTb21lIE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy5kZWZhdWx0XG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSAoTWF4X251bV90aHJlYWRzLmNyZWF0ZV9leG4gNTApXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICAgICAgU29tZSAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biA1MDApXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNaW5faW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4pKVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgW11cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IFNvbWUgZmFsc2VcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDEuKVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgSW5oZXJpdFxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZXhhbXBsZSA9XG4gIHsgZGVmYXVsdCB3aXRoXG4gICAgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gU29tZSBEZWJ1Z190YWcuWyBGZDsgU2NoZWR1bGVyIF1cbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPVxuICAgICAgU29tZVxuICAgICAgICAoQ3B1c2V0XG4gICAgICAgICAgIChbIDA7IDE7IDIgXSB8PiBJbnQuU2V0Lm9mX2xpc3QgfD4gVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LkNwdXNldC5jcmVhdGVfZXhuKSlcbiAgfVxuOztcblxubGV0IGVudmlyb25tZW50X3ZhcmlhYmxlID0gXCJBU1lOQ19DT05GSUdcIlxuXG5sZXQgZmllbGRfZGVzY3JpcHRpb25zICgpIDogc3RyaW5nID1cbiAgbGV0IGZpZWxkIHRvX3NleHAgZGVzY3JpcHRpb24gYWMgZmllbGQgPVxuICAgIChGaWVsZC5uYW1lIGZpZWxkLCB0b19zZXhwIChPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpLCBkZXNjcmlwdGlvbilcbiAgICA6OiBhY1xuICBpblxuICBsZXQgZmllbGRzID1cbiAgICBGaWVsZHMuZm9sZFxuICAgICAgfmluaXQ6W11cbiAgICAgIH5hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgc2VuZCBhbiBleGNlcHRpb24gdG8gdGhlIHRvcGxldmVsIG1vbml0b3JcbiAgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgdG8gcmVndWxhcmx5IGNoZWNrIGludmFyaWFudHMgb2YgaXRzIGludGVybmFsXG4gIGRhdGEgc3RydWN0dXJlcy4gIFRoaXMgY2FuIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIHlvdXIgcHJvZ3JhbS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIGNhdXNlcyBBc3luYyByb3V0aW5lcyB0byBjaGVjayBpZiB0aGV5IGFyZSBiZWluZyBhY2Nlc3NlZFxuICBmcm9tIHNvbWUgdGhyZWFkIG90aGVyIHRoYW4gdGhlIHRocmVhZCBjdXJyZW50bHkgaG9sZGluZyB0aGUgQXN5bmNcbiAgbG9jaywgd2hpY2ggaXMgbm90IGFsbG93ZWQgYW5kIGNhbiBsZWFkIHRvIHZlcnkgY29uZnVzaW5nIGJlaGF2aW9yLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5kdW1wX2NvcmVfb25fam9iX2RlbGF5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnRdXG4gICAgICAgICAgIFsge3xcbiAgQ2FuIGJlIHNldCB0byBbRG9fbm90X3dhdGNoXSBvcjpcblxuICAgIChXYXRjaCAoKGR1bXBfaWZfZGVsYXllZF9ieSBTUEFOKSAoaG93X3RvX2R1bXAgSE9XKSkpXG5cbiAgSWYgc2V0IHRvIFtXYXRjaF0sIHRoZW4gb24gcHJvZ3JhbSBzdGFydCB0aGlzIHdpbGwgc3RhcnQgYSByZWd1bGFyXG4gIEFzeW5jIGpvYiB0aGF0IGluY3JlbWVudHMgYSBjb3VudGVyLCBhbmQgYSBDIHRocmVhZCB0aGF0IHdpbGxcbiAgZGV0ZWN0IGlmIHRoYXQgam9iIGlzIGRlbGF5ZWQgYnkgW2R1bXBfaWZfZGVsYXllZF9ieV0sIGFuZCBpZiBzbyxcbiAgd2lsbCBjb3JlIGR1bXAgdGhlIHByb2dyYW0uICBJZiBhdmFpbGFibGUsIFsvdXNyL2Jpbi9nY29yZV0gaXNcbiAgdXNlZCBieSBkZWZhdWx0IHRvIGR1bXAgdGhlIGNvcmUsIHdoaWNoIHNob3VsZCBhbGxvdyB0aGUgcHJvZ3JhbVxuICB0byBjb250aW51ZSBydW5uaW5nLiAgT3RoZXJ3aXNlLCBbYWJvcnRdIHdpbGwgYmUgY2FsbGVkIGZyb20gQyxcbiAgd2hpY2ggd2lsbCBraWxsIHRoZSBwcm9ncmFtIHdoaWxlIGNhdXNpbmcgYSBjb3JlIGR1bXAuICBPbmUgY2FuXG4gIGZvcmNlIFthYm9ydF0gb3IgW2djb3JlXSB2aWEgW2hvd190b19kdW1wXSwgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZjpcbiAgW0NhbGxfYWJvcnRdLCBbQ2FsbF9nY29yZV0sIG9yIFtEZWZhdWx0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZXBvbGxfbWF4X3JlYWR5X2V2ZW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWFkeSBldmVudHMgdGhhdCBBc3luYydzIGNhbGwgdG8gW0Vwb2xsLndhaXRdXG4gIHdpbGwgaGFuZGxlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5maWxlX2Rlc2NyX3dhdGNoZXI6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEZpbGVfZGVzY3Jfd2F0Y2hlci50XVxuICAgICAgICAgICBbIHt8XG4gIFRoaXMgZGV0ZXJtaW5lcyB3aGF0IE9TIHN1YnN5c3RlbSBBc3luYyB1c2VzIHRvIHdhdGNoIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGJlaW5nIHJlYWR5LlxuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgW2Vwb2xsXSBpZiB0aW1lcmZkJ3MgYXJlIHN1cHBvcnRlZCBhbmQgaWYgbm90LCB1c2UgW3NlbGVjdF0uXG5cbiAgQWxsb3dlZCB2YWx1ZXMgYXJlOnx9XG4gICAgICAgICAgIDsgY29uY2F0XG4gICAgICAgICAgICAgICB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgKExpc3QubWFwIEZpbGVfZGVzY3Jfd2F0Y2hlci5saXN0IH5mOkZpbGVfZGVzY3Jfd2F0Y2hlci50b19zdHJpbmcpXG4gICAgICAgICAgIDsge3wuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fb3Blbl9maWxlX2Rlc2NyczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIChmdW4gZGVmYXVsdCAtPlxuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICB+XzpcbiAgICAgICAgICAgICAgICAgICAgKGNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICBbIFwibWluIFwiXG4gICAgICAgICAgICAgICAgICAgICAgIDsgZGVmYXVsdCB8PiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMucmF3IHw+IEludC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAgICAgICAgICAgIDsgXCIgW3VsaW1pdCAtbiAtSF1cIlxuICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICA6IHN0cmluZyldKVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgYWxsb3dlZCBhdCBhbnkgb25lIHRpbWUufH0gXSlcbiAgICAgIH5tYXhfbnVtX3RocmVhZHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fdGhyZWFkcy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgQXN5bmMgd2lsbCBjcmVhdGUgdG8gZG8gYmxvY2tpbmdcbiAgc3lzdGVtIGNhbGxzIGFuZCBoYW5kbGUgY2FsbHMgdG8gW0luX3RocmVhZC5ydW5dLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfaW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0aGUgc2NoZWR1bGVyIHdpbGwgcGF1c2UgYmV0d2VlbiBjeWNsZXNcbiAgd2hlbiBpdCBoYXMgbm8gam9icyBhbmQgaXMgZ29pbmcgdG8gd2FpdCBmb3IgSS9PLiAgSW4gcHJpbmNpcGxlIG9uZVxuICBkb2Vzbid0IG5lZWQgdGhpcywgYW5kIHdlIGNvdWxkIHVzZSBhbiBpbmZpbml0ZSB0aW1lb3V0LiAgV2UgaW5zdGVhZFxuICB1c2UgYSBzbWFsbCB0aW1lb3V0IChieSBkZWZhdWx0KSwgdG8gYmUgbW9yZSByb2J1c3QgdG8gYnVncyB0aGF0XG4gIGNvdWxkIHByZXZlbnQgQXN5bmMgZnJvbSB3YWtpbmcgdXAgYW5kIHNlcnZpY2luZyBldmVudHMuICBGb3JcbiAgZXhhbXBsZSwgYXMgb2YgMjAxMy0wMSwgdGhlIE9DYW1sIHJ1bnRpbWUgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIGl0XG4gIHRvIG5vdCBuZWNlc3NhcmlseSBydW4gYW4gT0NhbWwgc2lnbmFsIGhhbmRsZXIgaW4gYSB0aW1lbHkgbWFubmVyLlxuICBUaGlzIGluIHR1cm4gY2FuIGNhdXNlIGEgc2ltcGxlIEFzeW5jIHByb2dyYW0gdGhhdCBpcyB3YWl0aW5nIG9uIGFcbiAgc2lnbmFsIHRvIGhhbmcsIHdoZW4gaW4gZmFjdCBpdCBzaG91bGQgaGFuZGxlIHRoZSBzaWduYWwuXG5cbiAgV2UgdXNlIDUwbXMgYXMgdGhlIGRlZmF1bHQgdGltZW91dCwgYmVjYXVzZSBpdCBpcyBpbmZyZXF1ZW50IGVub3VnaFxuICB0byBoYXZlIGEgbmVnbGlnaWJsZSBwZXJmb3JtYW5jZSBpbXBhY3QsIGFuZCBmcmVxdWVudCBlbm91Z2ggdGhhdFxuICB0aGUgbGF0ZW5jeSB3b3VsZCB0eXBpY2FsbHkgYmUgbm90IG5vdGljZWFibGUuICBBbHNvLCA1MG1zIGlzIHdoYXRcbiAgdGhlIE9DYW1sIHRpY2tlciB0aHJlYWQgdXNlcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGpvYnMgdGhhdCB3aWxsIGJlIGRvbmUgYXQgZWFjaCBwcmlvcml0eSB3aXRoaW5cbiAgZWFjaCBBc3luYyBjeWNsZS4gIFRoaXMgbGltaXRzIGhvdyBtYW55IGpvYnMgdGhlIHNjaGVkdWxlciB3aWxsIHJ1blxuICBiZWZvcmUgcGF1c2luZyB0byBjaGVjayBmb3IgSS9PLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5taW5faW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWluaW11bSB0aW1lb3V0IHRoZSBzY2hlZHVsZXIgd2lsbCBwYXNzIHRvIHRoZSBPUyB3aGVuIGl0IGNoZWNrc1xuICBmb3IgSS9PIGJldHdlZW4gY3ljbGVzLiAgVGhpcyBpcyB6ZXJvIGJ5IGRlZmF1bHQuICBTZXR0aW5nIGl0IHRvIGFcbiAgbm9uemVybyB2YWx1ZSBpcyB1c2VkIHRvIGluY3JlYXNlIHRocmVhZCBmYWlybmVzcyBiZXR3ZWVuIHRoZSBzY2hlZHVsZXJcbiAgYW5kIG90aGVyIHRocmVhZHMuICBBIHBsYXVzaWJsZSBzZXR0aW5nIGlzIDF1cy4gIFRoaXMgaXMgYWxzb1xuICBjb25maWd1cmFibGUgaW4gT0NhbWwgdmlhIFtTY2hlZHVsZXIuc2V0X21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEZWJ1Z190YWcudCBsaXN0XVxuICAgICAgICAgICBbIHt8XG4gIEEgbGlzdCBvZiB0YWdzIHNwZWNpZnlpbmcgd2hpY2ggQXN5bmMgZnVuY3Rpb25zIHNob3VsZCBwcmludCBkZWJ1Z1xuICBtZXNzYWdlcyB0byBzdGRlcnIuICBFYWNoIHRhZyBpZGVudGlmaWVzIGEgZ3JvdXAgb2YgcmVsYXRlZCBBc3luY1xuICBmdW5jdGlvbnMuICBUaGUgdGFnIFthbGxdIG1lYW5zIHRvIHByaW50IGRlYnVnIG1lc3NhZ2VzIGZvciBhbGxcbiAgZnVuY3Rpb25zLiAgQWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG58fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgKExpc3QubWFwIERlYnVnX3RhZy5saXN0IH5mOihmdW4gZCAtPlxuICAgICAgICAgICAgICAgICAgY29uY2F0IFsgXCIgICAgXCI7IERlYnVnX3RhZy50b19zdHJpbmcgZDsgXCJcXG5cIiBdKSlcbiAgICAgICAgICAgOyB7fFxuICBUdXJuaW5nIG9uIGRlYnVnIG1lc3NhZ2VzIHdpbGwgc3Vic3RhbnRpYWxseSBzbG93IGRvd24gbW9zdCBwcm9ncmFtcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgdGhpcyB3aWxsIGNhdXNlIEFzeW5jIHRvIGtlZXAgaW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRoZVxuICBoaXN0b3J5IG9mIHN0YWNrIGJhY2t0cmFjZXMgKG9idGFpbmVkIHZpYSBbQmFja3RyYWNlLmdldF0pIHRoYXQgbGVkXG4gIHRvIHRoZSBjdXJyZW50IGpvYi4gIElmIGFuIEFzeW5jIGpvYiBoYXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbixcbiAgdGhpcyBiYWNrdHJhY2UgaGlzdG9yeSB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBleGNlcHRpb24uICBJblxuICBwYXJ0aWN1bGFyIHRoZSBoaXN0b3J5IHdpbGwgYXBwZWFyIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gdGhhdFxuICByZWFjaGVzIHRoZSBtYWluIG1vbml0b3IuICBUaGlzIGNhbiBoYXZlIGEgc3Vic3RhbnRpYWwgcGVyZm9ybWFuY2VcbiAgaW1wYWN0LCBib3RoIGluIHJ1bm5pbmcgdGltZSBhbmQgc3BhY2UgdXNhZ2UuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgcHJpbnQgYSBtZXNzYWdlIHRvIHN0ZGVyciBldmVyeSBzZWNvbmQgaWZcbiAgdGhlIHRocmVhZCBwb29sIGlzIHN0dWNrIGZvciBsb25nZXIgdGhhbiB0aGlzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHk6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50XVxuICAgICAgICAgICBbIHt8XG4gICBXaGV0aGVyIGFuZCBob3cgdGhyZWFkcyBpbiB0aGUgdGhyZWFkIHBvb2wgc2hvdWxkIGJlIGFmZmluaXRpemVkIHRvIENQVXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnRpbWluZ193aGVlbF9jb25maWc6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWluZ193aGVlbC5Db25maWcudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGlzIHVzZWQgdG8gYWRqdXN0IHRoZSB0aW1lL3NwYWNlIHRyYWRlb2ZmIGluIHRoZSB0aW1pbmcgd2hlZWxcbiAgdXNlZCB0byBpbXBsZW1lbnQgQXN5bmMncyBjbG9jay4gIFRpbWUgaXMgc3BsaXQgaW50byBpbnRlcnZhbHMgb2ZcbiAgc2l6ZSBbYWxhcm1fcHJlY2lzaW9uXSwgYW5kIGFsYXJtcyB3aXRoIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsXG4gIGZpcmUgaW4gdGhlIHNhbWUgY3ljbGUuICBMZXZlbCBbaV0gaW4gdGhlIHRpbWluZyB3aGVlbCBoYXMgYW5cbiAgYXJyYXkgb2Ygc2l6ZSBbMl5iXSwgd2hlcmUgW2JdIGlzIHRoZSBbaV0ndGggZW50cnkgaW4gW2xldmVsX2JpdHNdLlxufH1cbiAgICAgICAgICAgXSlcbiAgaW5cbiAgY29uY2F0XG4gICAgKExpc3QubWFwXG4gICAgICAgKExpc3Quc29ydCBmaWVsZHMgfmNvbXBhcmU6KGZ1biAobmFtZTEsIF8sIF8pIChuYW1lMiwgXywgXykgLT5cbiAgICAgICAgICBTdHJpbmcuY29tcGFyZSBuYW1lMSBuYW1lMikpXG4gICAgICAgfmY6KGZ1biAobmFtZSwgZGVmYXVsdCwgZGVzY3JpcHRpb24pIC0+XG4gICAgICAgICBjb25jYXRcbiAgICAgICAgICAgKFwiXFxuXCIgOjogbmFtZSA6OiBcIiAoZGVmYXVsdCBcIiA6OiBTZXhwLnRvX3N0cmluZyBkZWZhdWx0IDo6IFwiKVwiIDo6IGRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgaGVscF9tZXNzYWdlICgpID1cbiAgY29uY2F0XG4gICAgWyBcIlRoZSBcIlxuICAgIDsgZW52aXJvbm1lbnRfdmFyaWFibGVcbiAgICA7IHt8IGVudmlyb25tZW50IHZhcmlhYmxlIGFmZmVjdHMgQXN5bmNcbmluIHZhcmlvdXMgd2F5cy4gIEl0cyB2YWx1ZSBzaG91bGQgYmUgYSBzZXhwIG9mIHRoZSBmb2xsb3dpbmcgZm9ybSxcbndoZXJlIGFsbCBmaWVsZHMgYXJlIG9wdGlvbmFsOlxuXG58fVxuICAgIDsgU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgZXhhbXBsZSlcbiAgICA7IHt8XG5cbkhlcmUgaXMgYW4gZXhwbGFuYXRpb24gb2YgZWFjaCBmaWVsZC5cbnx9XG4gICAgOyBmaWVsZF9kZXNjcmlwdGlvbnMgKClcbiAgICBdXG47O1xuXG5sZXQgdXNhZ2UgKCkgPVxuICBlcHJpbnRmIFwiJXMlIVwiIChoZWxwX21lc3NhZ2UgKCkpO1xuICBleGl0IDFcbjs7XG5cbmxldCB0ID1cbiAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW5yaWFfc3lzLmdldGVudiBlbnZpcm9ubWVudF92YXJpYWJsZSkgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlcbiAgfCBTb21lIFwiXCIgLT4gdXNhZ2UgKClcbiAgfCBTb21lIHN0cmluZyAtPlxuICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiB0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHN0cmluZykpIHdpdGhcbiAgICAgfCBPayB0IC0+IHRcbiAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICBlcHJpbnRmXG4gICAgICAgICBcIiVzXFxuXFxuXCJcbiAgICAgICAgIChTZXhwLnRvX3N0cmluZ19odW1cbiAgICAgICAgICAgIChFcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgIChFcnJvci5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICBcImludmFsaWQgdmFsdWUgZm9yICVzIGVudmlyb25tZW50IHZhcmlhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50X3ZhcmlhYmxlKVxuICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICBbJXNleHBfb2Y6IGV4bl0pKSk7XG4gICAgICAgdXNhZ2UgKCkpXG47O1xuXG5tb2R1bGUgUHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gc3RydWN0XG4gIGxldCBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgdGFnID1cbiAgICBtYXRjaCB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gbCB0YWcgfmVxdWFsOkRlYnVnX3RhZy5lcXVhbFxuICA7O1xuXG4gIGxldCBhbGwgPSBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgQWxsXG4gIGxldCBkZWJ1ZyB0YWcgPSBhbGwgfHwgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZ1xuICBsZXQgY2xvY2sgPSBkZWJ1ZyBDbG9ja1xuICBsZXQgZmQgPSBkZWJ1ZyBGZFxuICBsZXQgZmlsZV9kZXNjcl93YXRjaGVyID0gZGVidWcgRmlsZV9kZXNjcl93YXRjaGVyXG4gIGxldCBmaW5hbGl6ZXJzID0gZGVidWcgRmluYWxpemVyc1xuICBsZXQgaW50ZXJydXB0b3IgPSBkZWJ1ZyBJbnRlcnJ1cHRvclxuICBsZXQgbW9uaXRvciA9IGRlYnVnIE1vbml0b3JcbiAgbGV0IG1vbml0b3Jfc2VuZF9leG4gPSBkZWJ1ZyBNb25pdG9yX3NlbmRfZXhuXG4gIGxldCBwYXJhbGxlbCA9IGRlYnVnIFBhcmFsbGVsXG4gIGxldCByZWFkZXIgPSBkZWJ1ZyBSZWFkZXJcbiAgbGV0IHNjaGVkdWxlciA9IGRlYnVnIFNjaGVkdWxlclxuICBsZXQgc2h1dGRvd24gPSBkZWJ1ZyBTaHV0ZG93blxuICBsZXQgdGhyZWFkX3Bvb2wgPSBkZWJ1ZyBUaHJlYWRfcG9vbFxuICBsZXQgdGhyZWFkX3NhZmUgPSBkZWJ1ZyBUaHJlYWRfc2FmZVxuICBsZXQgd3JpdGVyID0gZGVidWcgV3JpdGVyXG5lbmRcblxubGV0ICggISEgKSBmaWVsZCA9XG4gIE9wdGlvbi52YWx1ZSAoRmllbGQuZ2V0IGZpZWxkIHQpIH5kZWZhdWx0OihPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpXG47O1xuXG5sZXQgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMuYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG5sZXQgY2hlY2tfaW52YXJpYW50cyA9ICEhRmllbGRzLmNoZWNrX2ludmFyaWFudHNcbmxldCBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSAhIUZpZWxkcy5kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbmxldCBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gISFGaWVsZHMuZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xubGV0IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9ICEhRmllbGRzLnRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxubGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9ICEhRmllbGRzLmZpbGVfZGVzY3Jfd2F0Y2hlclxubGV0IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSAhIUZpZWxkcy5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbmxldCBtYXhfbnVtX3RocmVhZHMgPSAhIUZpZWxkcy5tYXhfbnVtX3RocmVhZHNcbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9ICEhRmllbGRzLm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5sZXQgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSAhIUZpZWxkcy5taW5faW50ZXJfY3ljbGVfdGltZW91dFxubGV0IHJlY29yZF9iYWNrdHJhY2VzID0gISFGaWVsZHMucmVjb3JkX2JhY2t0cmFjZXNcbmxldCByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMucmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IHRpbWluZ193aGVlbF9jb25maWcgPSAhIUZpZWxkcy50aW1pbmdfd2hlZWxfY29uZmlnXG5sZXQgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9ICEhRmllbGRzLmR1bXBfY29yZV9vbl9qb2JfZGVsYXlcblxubGV0IHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IFNvbWUgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBTb21lIG1heF9udW1fdGhyZWFkc1xuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gU29tZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHQucHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IHRhc2tfaWQgPSByZWYgKGZ1biAoKSAtPiBTZXhwLkF0b20gXCI8bm8gdGFzayBpZD5cIilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSByZWZcblxuKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE9wdGlvbl9hcnJheS5DaGVhcF9vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyXG4gICBwbGFjZSB3aGVyZSB3ZSB3YW50IGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG5sZXQgbm9uZSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgT2JqLmFic3RyYWN0X3RhZyAxKVxubGV0IGNyZWF0ZSAoKSA9IHJlZiBub25lXG5sZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCAheCBub25lXG5sZXQgaXNfc29tZSB4ID0gbm90IChpc19ub25lIHgpXG5sZXQgZ2V0X3NvbWVfZXhuIHggPSBpZiBpc19ub25lIHggdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk1vcHRpb24uZ2V0X3NvbWVfZXhuXCJdIGVsc2UgIXhcbmxldCBnZXQgdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICF0XG5sZXQgdW5zYWZlX2dldCB0ID0gIXRcbmxldCBzZXRfc29tZSB0IHYgPSB0IDo9IHZcbmxldCBzZXRfbm9uZSB0ID0gdCA6PSBub25lXG5cbmxldCBzZXQgdCB2ID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgTm9uZSAtPiBzZXRfbm9uZSB0XG4gIHwgU29tZSB2IC0+IHNldF9zb21lIHQgdlxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIG9wdGlvbildXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgT3B0aW9uLml0ZXIgKGdldCB0KSB+ZjppbnZhcmlhbnRfYSlcbjs7XG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfZ2V0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbigqIFRoaXMgcG9vbCBob2xkcyBub2RlcyB0aGF0IHdvdWxkIGJlIHJlcHJlc2VudGVkIG1vcmUgdHJhZGl0aW9uYWxseSBhczpcblxuICAge1tcbiAgICAgdHlwZSAnYSB0ID1cbiAgICAgICB8IEVtcHR5XG4gICAgICAgfCBIZWFwIG9mICdhICogJ2EgdCBsaXN0IF19XG5cbiAgIFdlIHdpbGwgcmVwcmVzZW50IHRoZW0gYXMgYSBsZWZ0LWNoaWxkLCByaWdodC1zaWJsaW5nIHRyZWUgaW4gYSB0cmlwbGV0XG4gICAodmFsdWUgKiBsZWZ0X2NoaWxkICogcmlnaHRfc2libGluZykuICBUaGUgbGVmdCBjaGlsZCBhbmQgYWxsIHJpZ2h0IHNpYmxpbmdzXG4gICBvZiB0aGUgbGVmdCBjaGlsZCBmb3JtIGEgbGlua2VkIGxpc3QgcmVwcmVzZW50aW5nIHRoZSBzdWJoZWFwcyBvZiBhIGdpdmVuIGhlYXA6XG5cbiAgIHt2XG4gICAgICAgICBBXG4gICAgICAgIC9cbiAgICAgICBCIC0+IEMgLT4gRCAtPiBFIC0+IEZcbiAgICAgIC8gICAgICAgICAvICAgICAgICAgL1xuICAgICBHICAgICAgICAgSC0+SS0+SiAgIEstPkxcbiAgIHZ9ICopXG5cbm1vZHVsZSBOb2RlIDogc2lnXG4gICgqIEV4cG9zaW5nIFtwcml2YXRlIGludF0gaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgYmVjYXVzZSBpdCBhbGxvd3NcbiAgICAgdGhlIGNvbXBpbGVyIHRvIHNraXAgdGhlIHdyaXRlIGJhcnJpZXIuICopXG5cbiAgdHlwZSAnYSB0ID0gcHJpdmF0ZSBpbnRcblxuICBtb2R1bGUgSWQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIG1vZHVsZSBQb29sIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IG1pbl9zaXplOmludCAtPiAnYSB0XG4gICAgdmFsIGlzX2Z1bGwgOiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgZ3JvdyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSBub2RlIC0+ICdhIG5vZGUgKiAnYSB0XG4gIGVuZFxuXG4gICgqKiBbYWxsb2NhdGUgdiB+cG9vbF0gYWxsb2NhdGVzIGEgbmV3IG5vZGUgZnJvbSB0aGUgcG9vbCB3aXRoIG5vIGNoaWxkIG9yIHNpYmxpbmcgKilcbiAgdmFsIGFsbG9jYXRlIDogJ2EgLT4gcG9vbDonYSBQb29sLnQgLT4gaWQ6SWQudCAtPiAnYSB0XG5cbiAgKCoqIFtmcmVlIHQgfnBvb2xdIGZyZWVzIFt0XSBmb3IgcmV1c2UuICBJdCBpcyBhbiBlcnJvciB0byBhY2Nlc3MgW3RdIGFmdGVyIHRoaXMuICopXG4gIHZhbCBmcmVlIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGEgc3BlY2lhbCBbdF0gdGhhdCByZXByZXNlbnRzIHRoZSBlbXB0eSBub2RlICopXG4gIHZhbCBlbXB0eSA6IHVuaXQgLT4gJ2EgdFxuXG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICgqKiBbdmFsdWVfZXhuIHQgfnBvb2xdIHJldHVybiB0aGUgdmFsdWUgb2YgW3RdLCByYWlzZSBpZiBbaXNfZW1wdHkgdF0gKilcbiAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2FcblxuICB2YWwgaWQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IElkLnRcbiAgdmFsIGNoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG4gIHZhbCBzaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtwcmV2IHRdIGlzIGVpdGhlciB0aGUgcGFyZW50IG9mIFt0XSBvciB0aGUgc2libGluZyBpbW1lZGlhdGVseSBsZWZ0IG9mIFt0XSAqKVxuICB2YWwgcHJldiA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbYWRkX2NoaWxkIHQgfmNoaWxkIH5wb29sXSBBZGQgYSBjaGlsZCB0byBbdF0sIHByZXNlcnZpbmcgZXhpc3RpbmcgY2hpbGRyZW4gYXNcbiAgICAgIHNpYmxpbmdzIG9mIFtjaGlsZF0uIFt0XSBhbmQgW2NoaWxkXSBzaG91bGQgbm90IGJlIGVtcHR5IGFuZCBbY2hpbGRdIHNob3VsZCBoYXZlIG5vXG4gICAgICBzaWJsaW5nIGFuZCBoYXZlIG5vIHByZXYgbm9kZS4gKilcbiAgdmFsIGFkZF9jaGlsZCA6ICdhIHQgLT4gY2hpbGQ6J2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgc2libGluZyAqKVxuICB2YWwgZGlzY29ubmVjdF9zaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgY2hpbGQgKilcbiAgdmFsIGRpc2Nvbm5lY3RfY2hpbGQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2RldGFjaCB0IH5wb29sXSByZW1vdmVzIFt0XSBmcm9tIHRoZSB0cmVlLCBhZGp1c3RpbmcgcG9pbnRlcnMgYXJvdW5kIGl0LiBBZnRlclxuICAgICAgW2RldGFjaF0sIFt0XSBpcyB0aGUgcm9vdCBvZiBhIHN0YW5kYWxvbmUgaGVhcCwgd2hpY2ggaXMgZGV0YWNoZWQgZnJvbSB0aGUgb3JpZ2luYWxcbiAgICAgIGhlYXAuICopXG4gIHZhbCBkZXRhY2ggOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSWQgPSBJbnRcblxuICBsZXQgZHVtbXlfaWQgOiBJZC50ID0gLTFcblxuICB0eXBlICdhIG5vZGUgPVxuICAgICgnYSwgJ2Egbm9kZSBQb2ludGVyLnQsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgSWQudCkgUG9vbC5TbG90cy50NVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgbGV0IGVtcHR5ID0gUG9pbnRlci5udWxsXG4gIGxldCBpc19lbXB0eSA9IFBvaW50ZXIuaXNfbnVsbFxuICBsZXQgZXF1YWwgPSBQb2ludGVyLnBoeXNfZXF1YWxcbiAgbGV0IHZhbHVlIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQwXG4gIGxldCBjaGlsZCB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MVxuICBsZXQgc2libGluZyB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MlxuICBsZXQgcHJldiB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50M1xuICBsZXQgaWQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDRcblxuICAoKiBsZXQgc2V0X3ZhbHVlICAgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MCB2ICopXG4gIGxldCBzZXRfY2hpbGQgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MSB2XG4gIGxldCBzZXRfc2libGluZyB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQyIHZcbiAgbGV0IHNldF9wcmV2IHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDMgdlxuXG4gIGxldCB2YWx1ZV9leG4gdCB+cG9vbCA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICB2YWx1ZSB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGFsbG9jYXRlIHZhbHVlIH5wb29sIH5pZCA9IFBvb2wubmV3NSBwb29sIHZhbHVlIChlbXB0eSAoKSkgKGVtcHR5ICgpKSAoZW1wdHkgKCkpIGlkXG4gIGxldCBmcmVlIHQgfnBvb2wgPSBQb29sLnVuc2FmZV9mcmVlIHBvb2wgdFxuXG4gIGxldCBkaXNjb25uZWN0X3NpYmxpbmcgdCB+cG9vbCA9XG4gICAgbGV0IHNpYmxpbmcgPSBzaWJsaW5nIHQgfnBvb2wgaW5cbiAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfc2libGluZyB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBzaWJsaW5nIChlbXB0eSAoKSkgfnBvb2wpO1xuICAgIHNpYmxpbmdcbiAgOztcblxuICBsZXQgZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sID1cbiAgICBsZXQgY2hpbGQgPSBjaGlsZCB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBjaGlsZClcbiAgICB0aGVuIChcbiAgICAgIHNldF9jaGlsZCB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBjaGlsZCAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBjaGlsZFxuICA7O1xuXG4gIGxldCBhZGRfY2hpbGQgdCB+Y2hpbGQ6bmV3X2NoaWxkIH5wb29sID1cbiAgICAoKiBhc3NlcnRpb25zIHdlIHdvdWxkIG1ha2UsIGJ1dCBmb3Igc3BlZWQ6XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgbmV3X2NoaWxkKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAoc2libGluZyBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAgICBhc3NlcnQgKGlzX2VtcHR5IChwcmV2IG5ld19jaGlsZCB+cG9vbCkpO1xuICAgICopXG4gICAgbGV0IGN1cnJlbnRfY2hpbGQgPSBkaXNjb25uZWN0X2NoaWxkIHQgfnBvb2wgaW5cbiAgICAoKiBhZGQgW25ld19jaGlsZF0gdG8gdGhlIGxpc3Qgb2YgW3RdJ3MgY2hpbGRyZW4gKHdoaWNoIG1heSBiZSBlbXB0eSkgKilcbiAgICBzZXRfc2libGluZyBuZXdfY2hpbGQgY3VycmVudF9jaGlsZCB+cG9vbDtcbiAgICBpZiBub3QgKGlzX2VtcHR5IGN1cnJlbnRfY2hpbGQpIHRoZW4gc2V0X3ByZXYgY3VycmVudF9jaGlsZCBuZXdfY2hpbGQgfnBvb2w7XG4gICAgc2V0X2NoaWxkIHQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9wcmV2IG5ld19jaGlsZCB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGRldGFjaCB0IH5wb29sID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcHJldiA9IHByZXYgdCB+cG9vbCBpblxuICAgICAgaWYgbm90IChpc19lbXB0eSBwcmV2KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCByZWxhdGlvbl90b19wcmV2ID0gaWYgZXF1YWwgdCAoY2hpbGQgcHJldiB+cG9vbCkgdGhlbiBgY2hpbGQgZWxzZSBgc2libGluZyBpblxuICAgICAgICBzZXRfcHJldiB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICAgIGxldCBzaWJsaW5nID0gZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgaW5cbiAgICAgICAgKG1hdGNoIHJlbGF0aW9uX3RvX3ByZXYgd2l0aFxuICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIHByZXYgc2libGluZyB+cG9vbFxuICAgICAgICAgfCBgc2libGluZyAtPiBzZXRfc2libGluZyBwcmV2IHNpYmxpbmcgfnBvb2wpO1xuICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpIHRoZW4gc2V0X3ByZXYgc2libGluZyBwcmV2IH5wb29sKSlcbiAgOztcblxuICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9vbC50XG4gICAgdHlwZSBub25yZWMgJ2Egbm9kZSA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIGEpIH5taW5fc2l6ZTpjYXBhY2l0eSA6IGEgdCA9XG4gICAgICBQb29sLmNyZWF0ZVxuICAgICAgICBQb29sLlNsb3RzLnQ1XG4gICAgICAgIH5jYXBhY2l0eVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKCAoT2JqLm1hZ2ljIE5vbmUgOiBhKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgZHVtbXlfaWQgKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gUG9vbC5pc19mdWxsIHRcbiAgICBsZXQgbGVuZ3RoIHQgPSBQb29sLmxlbmd0aCB0XG4gICAgbGV0IGdyb3cgdCA9IFBvb2wuZ3JvdyB0XG5cbiAgICBsZXQgY29weSB0IHN0YXJ0ID1cbiAgICAgIGxldCB0JyA9IGNyZWF0ZSB+bWluX3NpemU6KFBvb2wuY2FwYWNpdHkgdCkgaW5cbiAgICAgIGxldCBjb3B5X25vZGUgbm9kZSB0b192aXNpdCA9XG4gICAgICAgIGlmIGlzX2VtcHR5IG5vZGVcbiAgICAgICAgdGhlbiBlbXB0eSAoKSwgdG9fdmlzaXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogd2UgdXNlIHRoZSBzYW1lIGlkLCBidXQgdGhhdCdzIG9rIHNpbmNlIGlkcyBzaG91bGQgYmUgdW5pcXVlIHBlciBoZWFwICopXG4gICAgICAgICAgbGV0IG5ld19ub2RlID1cbiAgICAgICAgICAgIGFsbG9jYXRlICh2YWx1ZV9leG4gbm9kZSB+cG9vbDp0KSB+cG9vbDp0JyB+aWQ6KGlkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0b192aXNpdCA9XG4gICAgICAgICAgICAobmV3X25vZGUsIGBjaGlsZCwgY2hpbGQgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogKG5ld19ub2RlLCBgc2libGluZywgc2libGluZyBub2RlIH5wb29sOnQpXG4gICAgICAgICAgICA6OiB0b192aXNpdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbmV3X25vZGUsIHRvX3Zpc2l0KVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IChub2RlX3RvX3VwZGF0ZSwgc2xvdCwgbm9kZV90b19jb3B5KSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IG5ld19ub2RlLCB0b192aXNpdCA9IGNvcHlfbm9kZSBub2RlX3RvX2NvcHkgcmVzdCBpblxuICAgICAgICAgIChtYXRjaCBzbG90IHdpdGhcbiAgICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnXG4gICAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgbm9kZV90b191cGRhdGUgbmV3X25vZGUgfnBvb2w6dCcpO1xuICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgbmV3X25vZGUpIHRoZW4gc2V0X3ByZXYgbmV3X25vZGUgbm9kZV90b191cGRhdGUgfnBvb2w6dCc7XG4gICAgICAgICAgbG9vcCB0b192aXNpdFxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3RhcnQsIHRvX3Zpc2l0ID0gY29weV9ub2RlIHN0YXJ0IFtdIGluXG4gICAgICBsb29wIHRvX3Zpc2l0O1xuICAgICAgbmV3X3N0YXJ0LCB0J1xuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogY21wIGlzIHBsYWNlZCBmaXJzdCB0byBzaG9ydC1jaXJjdWl0IHBvbHltb3JwaGljIGNvbXBhcmUgKilcbiAgICBjbXAgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBtdXRhYmxlIHBvb2wgOiAnYSBOb2RlLlBvb2wudFxuICA7ICgqIGludmFyaWFudDogIFtyb290XSBuZXZlciBoYXMgYSBzaWJsaW5nICopXG4gICAgbXV0YWJsZSByb290IDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIDogaW50XG4gIH1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCAobm9kZSwgZXhwZWN0ZWRfcHJldiwgbWF5YmVfcGFyZW50X3ZhbHVlKSA6OiByZXN0IC0+XG4gICAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgbm9kZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGhpc192YWx1ZSA9IE5vZGUudmFsdWVfZXhuIG5vZGUgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGFzc2VydCAoTm9kZS5lcXVhbCAoTm9kZS5wcmV2IG5vZGUgfnBvb2w6dC5wb29sKSBleHBlY3RlZF9wcmV2KTtcbiAgICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfcGFyZW50X3ZhbHVlIH5mOihmdW4gcGFyZW50X3ZhbHVlIC0+XG4gICAgICAgICAgYXNzZXJ0ICh0LmNtcCBwYXJlbnRfdmFsdWUgdGhpc192YWx1ZSA8PSAwKSk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoKE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIFNvbWUgdGhpc192YWx1ZSlcbiAgICAgICAgICAgOjogKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCwgbm9kZSwgbWF5YmVfcGFyZW50X3ZhbHVlKVxuICAgICAgICAgICA6OiByZXN0KSlcbiAgICAgIGVsc2UgbG9vcCByZXN0XG4gIGluXG4gIGFzc2VydCAoTm9kZS5pc19lbXB0eSB0LnJvb3QgfHwgTm9kZS5pc19lbXB0eSAoTm9kZS5zaWJsaW5nIHQucm9vdCB+cG9vbDp0LnBvb2wpKTtcbiAgbG9vcCBbIHQucm9vdCwgTm9kZS5lbXB0eSAoKSwgTm9uZSBdXG47O1xuXG5sZXQgY3JlYXRlID8obWluX3NpemUgPSAxKSB+Y21wICgpID1cbiAgeyBjbXBcbiAgOyBwb29sID0gTm9kZS5Qb29sLmNyZWF0ZSB+bWluX3NpemVcbiAgOyByb290ID0gTm9kZS5lbXB0eSAoKVxuICA7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgPSAwXG4gIH1cbjs7XG5cbmxldCBjb3B5IHsgY21wOyBwb29sOyByb290OyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIH0gPVxuICBsZXQgcm9vdCwgcG9vbCA9IE5vZGUuUG9vbC5jb3B5IHBvb2wgcm9vdCBpblxuICB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9XG47O1xuXG5sZXQgYWxsb2NhdGUgdCB2ID1cbiAgaWYgTm9kZS5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIE5vZGUuUG9vbC5ncm93IHQucG9vbDtcbiAgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzIDwtIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyArIDE7XG4gIE5vZGUuYWxsb2NhdGUgdiB+cG9vbDp0LnBvb2wgfmlkOihOb2RlLklkLm9mX2ludCB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMpXG47O1xuXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIG1hdGNoIHJvb3QxLCByb290MiB3aXRoXG4gICAgIHwgTm9uZSwgaCB8IGgsIE5vbmUgLT4gaFxuICAgICB8IFNvbWUgKE5vZGUgKHYxLCBjaGlsZHJlbjEpKSwgU29tZSAoTm9kZSAodjIsIGNoaWxkcmVuMikpIC0+XG4gICAgICAgaWYgdjEgPCB2MlxuICAgICAgIHRoZW4gU29tZSAoTm9kZSAodjEsIHJvb3QyIDo6IGNoaWxkcmVuMSkpXG4gICAgICAgZWxzZSBTb21lIChOb2RlICh2Miwgcm9vdDEgOjogY2hpbGRyZW4yKSlcbiAgIF19XG5cbiAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBuZWl0aGVyIHJvb3QgaGFzIGEgcHJldiBub2RlICh1c3VhbGx5IGJlY2F1c2UgdGhlIGlucHV0cyBjb21lXG4gICBmcm9tIFtkaXNjb25uZWN0XypdIG9yIGFyZSB0aGUgdG9wIG9mIHRoZSBoZWFwIG9yIGFyZSB0aGUgb3V0cHV0IG9mIHRoaXMgZnVuY3Rpb24pLiAqKVxubGV0IG1lcmdlIHQgcm9vdDEgcm9vdDIgPVxuICBpZiBOb2RlLmlzX2VtcHR5IHJvb3QxXG4gIHRoZW4gcm9vdDJcbiAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IHJvb3QyXG4gIHRoZW4gcm9vdDFcbiAgZWxzZSAoXG4gICAgbGV0IGFkZF9jaGlsZCB0IG5vZGUgfmNoaWxkID1cbiAgICAgIE5vZGUuYWRkX2NoaWxkIG5vZGUgfnBvb2w6dC5wb29sIH5jaGlsZDtcbiAgICAgIG5vZGVcbiAgICBpblxuICAgIGxldCB2MSA9IE5vZGUudmFsdWVfZXhuIHJvb3QxIH5wb29sOnQucG9vbCBpblxuICAgIGxldCB2MiA9IE5vZGUudmFsdWVfZXhuIHJvb3QyIH5wb29sOnQucG9vbCBpblxuICAgIGlmIHQuY21wIHYxIHYyIDwgMFxuICAgIHRoZW4gYWRkX2NoaWxkIHQgcm9vdDEgfmNoaWxkOnJvb3QyXG4gICAgZWxzZSBhZGRfY2hpbGQgdCByb290MiB+Y2hpbGQ6cm9vdDEpXG47O1xuXG5sZXQgdG9wX2V4biB0ID1cbiAgaWYgTm9kZS5pc19lbXB0eSB0LnJvb3RcbiAgdGhlbiBmYWlsd2l0aCBcIkhlYXAudG9wX2V4biBjYWxsZWQgb24gYW4gZW1wdHkgaGVhcFwiXG4gIGVsc2UgTm9kZS52YWx1ZV9leG4gdC5yb290IH5wb29sOnQucG9vbFxuOztcblxubGV0IHRvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX2V4biB0KVxuXG5sZXQgYWRkX25vZGUgdCB2ID1cbiAgbGV0IG5vZGUgPSBhbGxvY2F0ZSB0IHYgaW5cbiAgdC5yb290IDwtIG1lcmdlIHQgdC5yb290IG5vZGU7XG4gIG5vZGVcbjs7XG5cbmxldCBhZGQgdCB2ID0gaWdub3JlIChhZGRfbm9kZSB0IHYgOiBfIE5vZGUudClcblxuKCogW21lcmdlX3BhaXJzXSB0YWtlcyBhIGxpc3Qgb2YgaGVhcCByb290cyBhbmQgbWVyZ2VzIGNvbnNlY3V0aXZlIHBhaXJzLCByZWR1Y2luZyB0aGVcbiAgIGxpc3Qgb2YgbGVuZ3RoIG4gdG8gbi8yLiAgVGhlbiBpdCBtZXJnZXMgdGhlIG1lcmdlZCBwYWlycyBpbnRvIGEgc2luZ2xlIGhlYXAuICBPbmVcbiAgIGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgc29tZXdoYXQgbGlrZSBidWlsZGluZyBhIHNpbmdsZSBsZXZlbCBvZiBhIGJpbmFyeSB0cmVlLlxuXG4gICBUaGUgb3V0cHV0IGhlYXAgZG9lcyBub3QgY29udGFpbiB0aGUgdmFsdWUgdGhhdCB3YXMgYXQgdGhlIHJvb3Qgb2YgdGhlIGlucHV0IGhlYXAuXG5cbiAgIFdlIGJyZWFrIHRoZSBmdW5jdGlvbiBpbnRvIHR3byBwYXJ0cy4gIEEgZmlyc3Qgc3RhZ2UgdGhhdCBpcyB3aWxsaW5nIHRvIHVzZSBsaW1pdGVkXG4gICBzdGFjayBpbnN0ZWFkIG9mIGhlYXAgYWxsb2NhdGlvbiBmb3IgYm9va2tlZXBpbmcsIGFuZCBhIHNlY29uZCBzdGFnZSB0aGF0IHNoaWZ0cyB0b1xuICAgdXNpbmcgYSBsaXN0IGFzIGFuIGFjY3VtdWxhdG9yIGlmIHdlIGdvIHRvbyBkZWVwLlxuXG4gICBUaGlzIGNhbiBiZSBtYWRlIHRhaWwgcmVjdXJzaXZlIGFuZCBub24tYWxsb2NhdGluZyBieSBzdGFydGluZyB3aXRoIGFuIGVtcHR5IGhlYXAgYW5kXG4gICBtZXJnaW5nIG1lcmdlZCBwYWlycyBpbnRvIGl0LiBVbmZvcnR1bmF0ZWx5IHRoaXMgXCJsZWZ0IGZvbGRcIiB2ZXJzaW9uIGlzIG5vdCB3aGF0IGlzXG4gICBkZXNjcmliZWQgaW4gdGhlIG9yaWdpbmFsIHBhcGVyIGJ5IEZyZWRtYW4gZXQgYWwuOyB0aGV5IHNwZWNpZmljYWxseSBzYXkgdGhhdFxuICAgY2hpbGRyZW4gc2hvdWxkIGJlIG1lcmdlZCB0b2dldGhlciBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgIGxpc3QuIChbbWVyZ2VdIGlzIG5vdCBhc3NvY2lhdGl2ZSwgc28gb3JkZXIgbWF0dGVycy4pXG4qKVxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgIHwgW2hlYWRdIC0+IGhlYWQgOjogYWNjXG4gICAgICAgfCBoZWFkIDo6IG5leHQxIDo6IG5leHQyIC0+IGxvb3AgKG1lcmdlIGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MlxuICAgICBpblxuICAgICBtYXRjaCBsb29wIFtdIGNoaWxkcmVuIHdpdGhcbiAgICAgfCBbXSAtPiBOb25lXG4gICAgIHwgW2hdIC0+IFNvbWUgaFxuICAgICB8IHggOjogeHMgLT4gU29tZSAoTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6bWVyZ2UpXG4gICBdfVxuKilcbmxldCBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZCA9XG4gIGxldCByZWMgbG9vcCBhY2MgaGVhZCA9XG4gICAgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWQgOjogYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGxvb3AgKG1lcmdlIHQgaGVhZCBuZXh0MSA6OiBhY2MpIG5leHQyKSlcbiAgaW5cbiAgbWF0Y2ggbG9vcCBbXSBoZWFkIHdpdGhcbiAgfCBbXSAtPiBOb2RlLmVtcHR5ICgpXG4gIHwgWyBoIF0gLT4gaFxuICB8IHggOjogeHMgLT4gTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6KGZ1biBhY2MgaGVhcCAtPiBtZXJnZSB0IGFjYyBoZWFwKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCB0LnJvb3Qgd2l0aFxuICAgICB8IE5vZGUgKF8sIGNoaWxkcmVuKSAtPlxuICAgICAgIGxldCByZWMgbG9vcCBkZXB0aCBjaGlsZHJlbiA9XG4gICAgICAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICAgICAgIHRoZW4gYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGNoaWxkZW5cbiAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgfCBbaGVhZF0gLT4gU29tZSBoZWFkXG4gICAgICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPlxuICAgICAgICAgICAgIG1lcmdlIChtZXJnZSBoZWFkIG5leHQxKSAobG9vcCAoZGVwdGggKyAxKSBuZXh0MilcbiAgICAgICAgIGVuZFxuICAgICAgIGluXG4gICAgICAgbG9vcCAwIGNoaWxkcmVuXG4gICBdfVxuKilcbmxldCBtZXJnZV9wYWlycyA9XG4gIGxldCBtYXhfc3RhY2tfZGVwdGggPSAxXzAwMCBpblxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCBoZWFkID1cbiAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBoZWFkXG4gICAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IGhlYWRcbiAgICB0aGVuIGhlYWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV4dDIgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBuZXh0MSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgKCogbWVyZ2UgdGhlIGZpcnN0IHR3byBub2RlcyBpbiBvdXIgbGlzdCwgYW5kIHRoZW4gbWVyZ2UgdGhlIHJlc3VsdCB3aXRoIHRoZVxuICAgICAgICAgICByZXN1bHQgb2YgcmVjdXJzaXZlbHkgY2FsbGluZyBtZXJnZV9wYWlycyBvbiB0aGUgdGFpbCAqKVxuICAgICAgICBtZXJnZSB0IChtZXJnZSB0IGhlYWQgbmV4dDEpIChsb29wIHQgKGRlcHRoICsgMSkgbmV4dDIpKSlcbiAgaW5cbiAgZnVuIHQgaGVhZCAtPiBsb29wIHQgMCBoZWFkXG47O1xuXG5sZXQgcmVtb3ZlX25vbl9lbXB0eSB0IG5vZGUgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICBsZXQgbWVyZ2VkX2NoaWxkcmVuID0gbWVyZ2VfcGFpcnMgdCAoTm9kZS5kaXNjb25uZWN0X2NoaWxkIG5vZGUgfnBvb2wpIGluXG4gIGxldCBuZXdfcm9vdCA9XG4gICAgaWYgTm9kZS5lcXVhbCB0LnJvb3Qgbm9kZSB0aGVuIG1lcmdlZF9jaGlsZHJlbiBlbHNlIG1lcmdlIHQgdC5yb290IG1lcmdlZF9jaGlsZHJlblxuICBpblxuICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgdC5yb290IDwtIG5ld19yb290XG47O1xuXG5sZXQgcmVtb3ZlX3RvcCB0ID0gaWYgbm90IChOb2RlLmlzX2VtcHR5IHQucm9vdCkgdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdC5yb290XG5cbigqIE5vdGUgdGhhdCB0aGlzIGlzIHRhaWwtcmVjdXJzaXZlIGFuZCB0aGF0IGVhY2ggbm9kZSBpcyB2aXNpdGVkIGF0IG1vc3QgMyB0aW1lcyAob25jZVxuICAgZm9yIGVhY2ggYnJhbmNoIG9mIHRoZSBcImlmXCIpLCBzbyBpdCB0YWtlcyBsaW5lYXIgdGltZSBhbmQgY29uc3RhbnQgc3BhY2UuICopXG5sZXQgcmVjIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IG5vZGUgfnBvb2wgPVxuICBsZXQgY2hpbGQgPSBOb2RlLmNoaWxkIG5vZGUgfnBvb2wgaW5cbiAgbGV0IHNpYmxpbmcgPSBOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbCBpblxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgY2hpbGQpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgY2hpbGQgfnBvb2xcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgc2libGluZylcbiAgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBzaWJsaW5nIH5wb29sXG4gIGVsc2UgKFxuICAgIGxldCBwcmV2ID0gTm9kZS5wcmV2IG5vZGUgfnBvb2wgaW5cbiAgICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICAgIE5vZGUuZnJlZSBub2RlIH5wb29sO1xuICAgIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBwcmV2KSB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHByZXYgfnBvb2wpXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpXG4gIHRoZW4gKFxuICAgIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHQucm9vdCB+cG9vbDp0LnBvb2w7XG4gICAgdC5yb290IDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgcG9wX2V4biB0ID1cbiAgbGV0IHIgPSB0b3BfZXhuIHQgaW5cbiAgcmVtb3ZlX3RvcCB0O1xuICByXG47O1xuXG5sZXQgcG9wIHQgPSBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3BfZXhuIHQpXG5cbmxldCBwb3BfaWYgdCBmID1cbiAgbWF0Y2ggdG9wIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdiAtPlxuICAgIGlmIGYgdlxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX3RvcCB0O1xuICAgICAgU29tZSB2KVxuICAgIGVsc2UgTm9uZVxuOztcblxuKCogcGFpcmluZyBoZWFwcyBhcmUgbm90IGJhbGFuY2VkIHRyZWVzLCBhbmQgdGhlcmVmb3JlIHdlIGNhbid0IHJlbHkgb24gYSBiYWxhbmNlXG4gICBwcm9wZXJ0eSB0byBzdG9wIG91cnNlbHZlcyBmcm9tIG92ZXJmbG93aW5nIHRoZSBzdGFjay4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgYWNjIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIChmIGFjYyAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSkpIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIGluaXQgWyB0LnJvb3QgXSBbQG5vbnRhaWxdXG47O1xuXG4oKiBhbG1vc3QgaWRlbnRpY2FsIHRvIGZvbGQsIGNvcGllZCBmb3Igc3BlZWQgcHVycG9zZXMgKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBmIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKTtcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBbIHQucm9vdCBdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsZW5ndGggdCA9IE5vZGUuUG9vbC5sZW5ndGggdC5wb29sXG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBpc19lbXB0eSB0ID0gTm9kZS5pc19lbXB0eSB0LnJvb3RcbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2FycmF5IGFyciB+Y21wID1cbiAgbGV0IHQgPSBjcmVhdGUgfm1pbl9zaXplOihBcnJheS5sZW5ndGggYXJyKSB+Y21wICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBhZGQgdCB2KTtcbiAgdFxuOztcblxubGV0IG9mX2xpc3QgbCB+Y21wID0gb2ZfYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkgfmNtcFxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdCB8PiBBcnJheS5zb3J0ZWRfY29weSB+Y29tcGFyZTp0LmNtcClcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICB7IG11dGFibGUgbm9kZSA6ICdhIE5vZGUudFxuICAgIDsgbm9kZV9pZCA6IE5vZGUuSWQudFxuICAgIDsgaGVhcCA6ICdhIHRcbiAgICB9XG5cbiAgKCogSWYgaWRzIGFyZSBkaWZmZXJlbnQsIGl0IG1lYW5zIHRoYXQgdGhlIG5vZGUgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVcbiAgICAgb3RoZXIgbWVhbnMgKGFuZCBwb3NzaWJseSByZXVzZWQpLiAqKVxuICBsZXQgaXNfbm9kZV92YWxpZCB0ID0gTm9kZS5JZC5lcXVhbCAoTm9kZS5pZCB+cG9vbDp0LmhlYXAucG9vbCB0Lm5vZGUpIHQubm9kZV9pZFxuXG4gIGxldCB2YWx1ZSB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHQgdGhlbiBTb21lIChOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2wpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0XG4gICAgdGhlbiBOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2xcbiAgICBlbHNlIGZhaWx3aXRoIFwiSGVhcC52YWx1ZV9leG46IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgaGVhcFwiXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodmFsdWUgdCA6IGEgb3B0aW9uKV1cbmVuZFxuXG5sZXQgcmVtb3ZlIHQgKHRva2VuIDogXyBFbHQudCkgPVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdCB0b2tlbi5oZWFwKVxuICB0aGVuIGZhaWx3aXRoIFwiY2Fubm90IHJlbW92ZSBmcm9tIGEgZGlmZmVyZW50IGhlYXBcIlxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0b2tlbi5ub2RlKVxuICB0aGVuIChcbiAgICBpZiBFbHQuaXNfbm9kZV92YWxpZCB0b2tlbiB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0b2tlbi5ub2RlO1xuICAgIHRva2VuLm5vZGUgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBhZGRfcmVtb3ZhYmxlIHQgdiA9XG4gIGxldCBub2RlID0gYWRkX25vZGUgdCB2IGluXG4gIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG47O1xuXG5sZXQgdXBkYXRlIHQgdG9rZW4gdiA9XG4gIHJlbW92ZSB0IHRva2VuO1xuICBhZGRfcmVtb3ZhYmxlIHQgdlxuOztcblxubGV0IGZpbmRfZWx0ID1cbiAgbGV0IHJlYyBsb29wIHQgZiBub2RlcyA9XG4gICAgbWF0Y2ggbm9kZXMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCB0IGYgcmVzdFxuICAgICAgZWxzZSBpZiBmIChOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbClcbiAgICAgIHRoZW4gU29tZSB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIHQgZiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sIDo6IE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgOjogcmVzdClcbiAgaW5cbiAgZnVuIHQgfmYgLT4gbG9vcCB0IGYgWyB0LnJvb3QgXVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSBoZWFwID0gJ2EgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE5vZGUudFxuXG4gICAgbGV0IHZhbHVlIHQgaGVhcCA9IE5vZGUudmFsdWVfZXhuIH5wb29sOmhlYXAucG9vbCB0XG4gIGVuZFxuXG4gIGxldCBhZGRfcmVtb3ZhYmxlID0gYWRkX25vZGVcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZV9ub25fZW1wdHlcblxuICBsZXQgdXBkYXRlIHQgZWx0IHYgPVxuICAgIHJlbW92ZSB0IGVsdDtcbiAgICBhZGRfcmVtb3ZhYmxlIHQgdlxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGFtX3J1bm5pbmdfdGVzdCA6IGJvb2xcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBhID1cbiAgICBpZiBNLmFtX3J1bm5pbmdfdGVzdCB0aGVuIFNleHAuQXRvbSBcIjxoaWRkZW5faW5fdGVzdD5cIiBlbHNlIHNleHBfb2ZfYSBhXG4gIDs7XG5cbiAgbW9kdWxlIFdpdGhfbm9uX3JvdW5kdHJpcHBpbmdfaW5fdGVzdF9vZl9zZXhwID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgZW5kXG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBUdXJuZWRfb2ZmID0gc3RydWN0XG4gICAgICBtb2R1bGUgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGZhbHNlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vZmYudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFR1cm5lZF9vbiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IHRydWVcbiAgICAgICAgZW5kKVxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gaW50IFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvblwiID1cbiAgICAgIHByaW50X3MgWyVzZXhwICgxMDI0IDogVHVybmVkX29uLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8IDxoaWRkZW5faW5fdGVzdD4gfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvZmZcIiA9XG4gICAgICBwcmludF9zIChbJXNleHBfb2Y6IFR1cm5lZF9vZmYudF0gMTAyNCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDI0IHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxuICBlbmQpXG4iLCJvcGVuIEJhc2VcblxudHlwZSArJ2EgdFxuXG4oKiBUaGlzIFtPYmoubWFnaWNdIGlzIE9LIGJlY2F1c2Ugd2UgbmV2ZXIgYWxsb3cgdXNlciBjb2RlIGFjY2VzcyB0byBbbm9uZV0gKGV4Y2VwdCB2aWFcbiAgIFt1bnNhZmVfdmFsdWVdKS4gIFdlIGRpc2FsbG93IFtfIFVvcHQudCBVb3B0LnRdLCBzbyB0aGVyZSBpcyBubyBjaGFuY2Ugb2YgY29uZnVzaW5nXG4gICBbbm9uZV0gd2l0aCBbc29tZSBub25lXS4gIEFuZCBbZmxvYXQgVW9wdC50IGFycmF5XSBpcyBzaW1pbGFybHkgZGlzYWxsb3dlZC4gKilcbmxldCBub25lIDogJ2EgdCA9IFN0ZGxpYi5PYmoubWFnaWMgXCJVb3B0Lm5vbmVcIlxuXG5sZXRbQGlubGluZV0gc29tZSAoeCA6ICdhKSA9XG4gIGxldCByIDogJ2EgdCA9IFN0ZGxpYi5PYmoubWFnaWMgeCBpblxuICBpZiBwaHlzX2VxdWFsIHIgbm9uZSB0aGVuIGZhaWx3aXRoIFwiVW9wdC5zb21lIFVvcHQubm9uZVwiO1xuICByXG47O1xuXG5sZXQgc29tZV9sb2NhbCA9IFN0ZGxpYi5PYmoubWFnaWMgc29tZVxubGV0IHNvbWVfbG9jYWwgOiAnYS4gKCdhW0Bsb2NhbF0pIC0+ICgnYSB0W0Bsb2NhbF0pID0gc29tZV9sb2NhbFxubGV0IHVuc2FmZV92YWx1ZSAoeCA6ICdhIHQpIDogJ2EgPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbmxldCB1bnNhZmVfdmFsdWVfbG9jYWwgPSBTdGRsaWIuT2JqLm1hZ2ljIHVuc2FmZV92YWx1ZVxubGV0IHVuc2FmZV92YWx1ZV9sb2NhbCA6ICdhLiAoJ2EgdFtAbG9jYWxdKSAtPiAoJ2FbQGxvY2FsXSkgPSB1bnNhZmVfdmFsdWVfbG9jYWxcbmxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxubGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaWYgaXNfc29tZSB0IHRoZW4gaW52YXJpYW50X2EgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgaWYgaXNfbm9uZSB0IHRoZW4gWyVzZXhwIE5vbmVdIGVsc2UgWyVzZXhwIFNvbWUgKHVuc2FmZV92YWx1ZSB0IDogYSldXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSBpZiBpc19ub25lIHQgdGhlbiBmYWlsd2l0aCBcIlVvcHQudmFsdWVfZXhuXCIgZWxzZSB1bnNhZmVfdmFsdWUgdFxubGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IG5vbmVcbiAgfCBTb21lIGEgLT4gc29tZSBhXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBMb2NhbCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlX2xvY2FsXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKFwidXNpbmcgdGhlIHNhbWUgc2VudGluZWwgdmFsdWVcIiBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgbWF0Y2ggc29tZSBcIlVvcHQubm9uZVwiIHdpdGhcbiAgICAgIHwgKF8gOiBzdHJpbmcgdCkgLT4gZmFpbHdpdGggXCJzaG91bGQgbm90IGhhdmUgZ290dGVuIHRvIHRoaXMgcG9pbnRcIlxuICAgICAgfCBleGNlcHRpb24gXyAtPiAoKVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IE9DYW1sIGRvZXMgbm90IHBlcmZvcm0gY29udGV4dC1zd2l0Y2hlcyB1bmRlclxuICAgY2VydGFpbiBjb25kaXRpb25zLiAgSXQgY2FuIHRoZXJlZm9yZSBhdm9pZCB1c2luZyBtdXRleGVzLlxuXG4gICBHaXZlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBjdXJyZW50IE9DYW1sIHJ1bnRpbWUgKGFuZCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZSksIGNvZGVcbiAgIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93IHdpbGwgbmV2ZXIgY29udGFpbiBhIGNvbnRleHQtc3dpdGNoLiAgVGhlIGRlY2lkaW5nXG4gICBjcml0ZXJpb24gaXMgd2hldGhlciB0aGV5IGNvbnRhaW4gYWxsb2NhdGlvbnMgb3IgY2FsbHMgdG8gZXh0ZXJuYWwvYnVpbHRpbiBmdW5jdGlvbnMuXG4gICBJZiB0aGVyZSBpcyBub25lLCBhIGNvbnRleHQtc3dpdGNoIGNhbm5vdCBoYXBwZW4uICBBc3NpZ25tZW50cyB3aXRob3V0IGFsbG9jYXRpb25zLFxuICAgZmllbGQgYWNjZXNzLCBwYXR0ZXJuLW1hdGNoaW5nLCBldGMuLCBkbyBub3QgdHJpZ2dlciBjb250ZXh0LXN3aXRjaGVzLlxuXG4gICBDb2RlIHJldmlld2VycyBzaG91bGQgdGhlcmVmb3JlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvd1xuICAgZG8gbm90IHZpb2xhdGUgdGhlIGFib3ZlIGFzc3VtcHRpb25zLiAgSXQgaXMgcHJ1ZGVudCB0byBkaXNhc3NlbWJsZSB0aGUgLm8gZmlsZSAodXNpbmdcbiAgIFtvYmpkdW1wIC1kcl0pIGFuZCBleGFtaW5lIGl0LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhIHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gVW9wdC5ub25lOyBuZXh0ID0gVW9wdC5ub25lIH1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtmcm9udF0gdG8gW2JhY2tdIGhhcyBbbGVuZ3RoICsgMV0gbGlua2VkIGVsZW1lbnRzLCB3aGVyZSB0aGUgZmlyc3QgW2xlbmd0aF0gaG9sZCB0aGVcbiAgICAgdmFsdWVzIGluIHRoZSBxdWV1ZSwgYW5kIHRoZSBsYXN0IGlzIFtiYWNrXSwgaG9sZGluZyBubyB2YWx1ZS4gKilcbiAgOyBtdXRhYmxlIGZyb250IDogJ2EgRWx0LnRcbiAgOyBtdXRhYmxlIGJhY2sgOiAnYSBFbHQudFxuICAoKiBbdW51c2VkX2VsdHNdIGlzIHNpbmdseSBsaW5rZWQgdmlhIFtuZXh0XSwgYW5kIGVuZHMgd2l0aCBbc2VudGluZWxdLiAgQWxsIGVsdHMgaW5cbiAgICAgW3VudXNlZF9lbHRzXSBoYXZlIFtVb3B0LmlzX25vbmUgZWx0LnZhbHVlXS4gKilcbiAgOyBtdXRhYmxlIHVudXNlZF9lbHRzIDogJ2EgRWx0LnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgbGV0IGkgPSByZWYgdC5sZW5ndGggaW5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgZnJvbnQgaW5cbiAgICAgICAgICAgd2hpbGUgIWkgPiAwIGRvXG4gICAgICAgICAgICAgZGVjciBpO1xuICAgICAgICAgICAgIGxldCBlbHQgPSAhciBpblxuICAgICAgICAgICAgIHIgOj0gVW9wdC52YWx1ZV9leG4gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsICFyIHQuYmFjaykpKVxuICAgICAgfmJhY2s6KGNoZWNrIChmdW4gYmFjayAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBiYWNrLkVsdC52YWx1ZSkpKVxuICAgICAgfnVudXNlZF9lbHRzOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bnVzZWRfZWx0cyAtPlxuICAgICAgICAgICBsZXQgciA9IHJlZiB1bnVzZWRfZWx0cyBpblxuICAgICAgICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgICAgICBsZXQgZWx0ID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICAgICAgICAgICByIDo9IGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmUpKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgZWx0ID0gRWx0LmNyZWF0ZSAoKSBpblxuICB7IGZyb250ID0gZWx0OyBiYWNrID0gZWx0OyBsZW5ndGggPSAwOyB1bnVzZWRfZWx0cyA9IFVvcHQubm9uZSB9XG47O1xuXG5sZXQgZ2V0X3VudXNlZF9lbHQgdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIFVvcHQuaXNfc29tZSB0LnVudXNlZF9lbHRzXG4gIHRoZW4gKFxuICAgIGxldCBlbHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnVudXNlZF9lbHRzIGluXG4gICAgdC51bnVzZWRfZWx0cyA8LSBlbHQubmV4dDtcbiAgICBlbHQgKCogRU5EIEFUT01JQyBTRUNUSU9OICopKVxuICBlbHNlIEVsdC5jcmVhdGUgKClcbjs7XG5cbmxldCBlbnF1ZXVlICh0eXBlIGEpICh0IDogYSB0KSAoYSA6IGEpID1cbiAgbGV0IG5ld19iYWNrID0gZ2V0X3VudXNlZF9lbHQgdCBpblxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gIHQuYmFjay52YWx1ZSA8LSBVb3B0LnNvbWUgYTtcbiAgdC5iYWNrLm5leHQgPC0gVW9wdC5zb21lIG5ld19iYWNrO1xuICB0LmJhY2sgPC0gbmV3X2JhY2tcbjs7XG5cbigqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuXG5sZXQgcmV0dXJuX3VudXNlZF9lbHQgdCAoZWx0IDogXyBFbHQudCkgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBlbHQudmFsdWUgPC0gVW9wdC5ub25lO1xuICBlbHQubmV4dCA8LSB0LnVudXNlZF9lbHRzO1xuICB0LnVudXNlZF9lbHRzIDwtIFVvcHQuc29tZSBlbHQ7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICAoKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9kZXF1ZXVlX2VtcHR5IHQgPVxuICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIG9mIGVtcHR5IHF1ZXVlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0O1xuICBsZXQgZWx0ID0gdC5mcm9udCBpblxuICBsZXQgYSA9IGVsdC52YWx1ZSBpblxuICB0LmZyb250IDwtIFVvcHQudW5zYWZlX3ZhbHVlIGVsdC5uZXh0O1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICByZXR1cm5fdW51c2VkX2VsdCB0IGVsdDtcbiAgVW9wdC51bnNhZmVfdmFsdWUgYVxuOztcblxubGV0IGNsZWFyX2ludGVybmFsX3Bvb2wgdCA9IHQudW51c2VkX2VsdHMgPC0gVW9wdC5ub25lXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBVb3B0ID0gVW9wdFxuZW5kXG4iLCJpbmNsdWRlIENvcmUuQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxuKCogW2FmdGVyXSBpcyBsaWtlIFthZGRdLCBidXQgZGVhbHMgbmljZWx5IHdpdGggdGhlIGNhc2Ugb2Ygb3ZlcmZsb3cgYnkgaW5zdGVhZCByZXR1cm5pbmdcbiAgIFttYXhfdmFsdWVdLiAgVGltZS1zb3VyY2UgZnVuY3Rpb25zIHVzZSBbYWZ0ZXJdIHRvIGF2b2lkIGltbWVkaWF0ZWx5IGZpcmluZyBldmVudHMgdGhhdFxuICAgc2hvdWxkIG5ldmVyIGZpcmUsIGR1ZSB0byB0aGUgb3ZlcmZsb3cgbGVhZGluZyB0byBhIG5lZ2F0aXZlIHRpbWUgdGhhdCBhcHBlYXJzIHRvIGJlIGluXG4gICB0aGUgcGFzdC4gIFdlIGRvbid0IGNoZWNrIHVuZGVyZmxvdyBiZWNhdXNlIHRoYXQgaXMgdmVyeSB1bmxpa2VseSwgcmVxdWlyaW5nIGJvdGggYVxuICAgbmVnYXRpdmUgdGltZSBhbmQgYSBuZWdhdGl2ZSBzcGFuLiAqKVxubGV0IGFmdGVyIHQgc3BhbiA9XG4gIGxldCByZXN1bHQgPSBhZGQgdCBzcGFuIGluXG4gIGlmIFNwYW4uKCA+ICkgc3BhbiBTcGFuLnplcm8gJiYgcmVzdWx0IDwgdCB0aGVuIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIGVsc2UgcmVzdWx0XG47O1xuIiwibW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxuaW5jbHVkZSBBc3luY19rZXJuZWxfY29uZmlnLlByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuXG5sZXQgbG9nIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBlcHJpbnRmXG4gICAgXCIlc1xcbiUhXCJcbiAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgKFslc2V4cF9vZjogU2V4cC50ICogVGltZV9ucy50ICogc3RyaW5nICogYV1cbiAgICAgICAgICAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSwgVGltZV9ucy5ub3cgKCksIG1lc3NhZ2UsIGEpKSlcbjs7XG5cbmxldCBsb2dfc3RyaW5nIG1lc3NhZ2UgPSBsb2cgbWVzc2FnZSAoKSBbJXNleHBfb2Y6IHVuaXRdXG4iLCJtb2R1bGUgRGVidWdfaW5fdGhpc19kaXJlY3RvcnkgPSBEZWJ1Z1xubW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuISBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICBBc3luY19rZXJuZWxfY29uZmlnLk1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgZXByaW50ID0gQ29yZS5EZWJ1Zy5lcHJpbnRcbmxldCBlcHJpbnRfcyA9IENvcmUuRGVidWcuZXByaW50X3NcbmxldCBlcHJpbnRzID0gQ29yZS5EZWJ1Zy5lcHJpbnRzXG5sZXQgcHJpbnRfcyBzZXhwID0gcHJpbnRmIFwiJXNcXG4lIVwiIChzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSlcbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5cbigqIFdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgaW4gQXN5bmNfa2VybmVsLCB0byBhdm9pZCBkaWZmaWN1bHRpZXMgd2l0aFxuICAgdXNpbmcgaXQgb24ganNfb2Zfb2NhbWwuICopXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOb3JtYWxcbiAgfCBMb3dcbltAQGRlcml2aW5nIHNleHBfb2YsIGVudW1lcmF0ZV1cblxubGV0IG5vcm1hbCA9IE5vcm1hbFxubGV0IGxvdyA9IExvd1xuIiwiKCogVGhpcyBmaWxlIGRlZmluZXMgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyBhdCB0aGUgaGVhcnQgb2YgQXN5bmMuICBUaGUgZnVuY3Rpb25zXG4gICBhc3NvY2lhdGVkIHdpdGggdGhlIHR5cGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUocykgZm9yIGVhY2ggbW9kdWxlLlxuICAgVGhpcyBmaWxlIHNob3VsZCBkZWZpbmUgb25seSB0eXBlcywgbm90IGZ1bmN0aW9ucywgc2luY2UgZnVuY3Rpb25zIGRlZmluZWQgaW5zaWRlIHRoZVxuICAgcmVjdXJzaXZlIG1vZHVsZXMgYXJlIG5vdCBpbmxpbmVkLlxuXG4gICBJZiB5b3UgbmVlZCB0byBhZGQgZnVuY3Rpb25hbGl0eSB0byBhIG1vZHVsZSBidXQgZG9pbmcgc28gd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeVxuICAgY3ljbGUsIHNwbGl0IHRoZSBmaWxlIGludG8gcGllY2VzIGFzIG5lZWRlZCB0byBicmVhayB0aGUgY3ljbGUsIGUuZy4gc2NoZWR1bGVyMC5tbCxcbiAgIHNjaGVkdWxlcjEubWwsIHNjaGVkdWxlci5tbC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSByZWMgQ2VsbCA6IHNpZ1xuICB0eXBlIGFueSA9XG4gICAgWyBgRW1wdHlcbiAgICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICAgIHwgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgfCBgRnVsbFxuICAgIHwgYEluZGlyXG4gICAgXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICAgIHsgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgSGFuZGxlci50XG4gICAgICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgSGFuZGxlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgdFxuICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgICAoJ2EgLT4gdW5pdCkgKiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIHRcbiAgICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgdFxuICAgIHwgRnVsbCA6ICdhIC0+ICgnYSwgWz4gYEZ1bGwgXSkgdFxuICAgIHwgSW5kaXIgOiAnYSBJdmFyLnQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgdFxuZW5kID1cbiAgQ2VsbFxuXG5hbmQgSGFuZGxlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIENlbGwudFxuZW5kID1cbiAgSGFuZGxlclxuXG5hbmQgSXZhciA6IHNpZ1xuICB0eXBlICdhIHQgPSB7IG11dGFibGUgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG5cbiAgbW9kdWxlIEltbXV0YWJsZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IHsgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG4gIGVuZFxuZW5kID1cbiAgSXZhclxuXG5hbmQgRGVmZXJyZWQgOiBzaWdcbiAgdHlwZSArISdhIHRcbmVuZCA9XG4gIERlZmVycmVkXG5cbmFuZCBFeGVjdXRpb25fY29udGV4dCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gICAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgRXhlY3V0aW9uX2NvbnRleHRcblxuYW5kIEZvcndhcmRpbmcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IERldGFjaGVkXG4gICAgfCBQYXJlbnQgb2YgTW9uaXRvci50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuXG5lbmQgPVxuICBGb3J3YXJkaW5nXG5cbmFuZCBNb25pdG9yIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogSW5mby50XG4gICAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgICA7IGlkIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gSXZhci50XG4gICAgOyBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICAgIDsgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUYWlsLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICAgIH1cbmVuZCA9XG4gIE1vbml0b3JcblxuYW5kIFRhaWwgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuZW5kID1cbiAgVGFpbFxuXG5hbmQgU3RyZWFtIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcbmVuZCA9XG4gIFN0cmVhbVxuXG4oKiBXZSBhdm9pZCB1c2luZyBbbW9kdWxlIHJlY10gdG8gZGVmaW5lIFtCdmFyXSwgc28gdGhhdCBbdG9fcmVwcl0gYW5kIFtvZl9yZXByXSBhcmVcbiAgIGlubGluZWQuICopXG5tb2R1bGUgQnZhciA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtaXNzaW9uKSB0XG5cbiAgKCoqIFtyZXByXSBleGlzdHMgc28gdGhhdCB3ZSBtYXkgaGlkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBbQnZhci50XSwgYW5kIHRoZW4gYWRkIGFcbiAgICAgIHBoYW50b20gdHlwZSB0byBpdCB1cHN0cmVhbS4gIFdpdGhvdXQgdGhpcywgdGhlIHBoYW50b20gdHlwZSB2YXJpYWJsZSB3b3VsZCBhbGxvd1xuICAgICAgZm9yIGFueXRoaW5nIHRvIGJlIGNvZXJjZWQgaW4gYW5kIG91dCwgc2luY2UgaXQgaXMgdW51c2VkLiAqKVxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdmFsIG9mX3JlcHIgOiAnYSByZXByIC0+ICgnYSwgJ3Blcm1pc3Npb24pIHRcbiAgdmFsIHRvX3JlcHIgOiAoJ2EsICdwZXJtaXNzaW9uKSB0IC0+ICdhIHJlcHJcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gJ2EgcmVwclxuXG4gIGxldCB0b19yZXByIHQgPSB0XG4gIGxldCBvZl9yZXByIHQgPSB0XG5lbmRcblxubW9kdWxlIHJlYyBFdmVudCA6IHNpZ1xuICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmlyZWRcbiAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XG4gICAgICB8IFNjaGVkdWxlZFxuICAgICAgfCBVbnNjaGVkdWxlZFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZCA9XG4gIEV2ZW50XG5cbmFuZCBFeHRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoJ2EgLT4gdW5pdCkgKiAnYSAtPiB0XG5lbmQgPVxuICBFeHRlcm5hbF9qb2JcblxuYW5kIEpvYiA6IHNpZ1xuICB0eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIE9iai50KSBQb29sLlNsb3RzLnQzXG4gIHR5cGUgdCA9IHNsb3RzIFBvb2wuUG9pbnRlci50XG5lbmQgPVxuICBKb2JcblxuYW5kIEpvYl9vcl9ldmVudCA6IHNpZ1xuICB0eXBlIHRcbmVuZCA9XG4gIEpvYl9vcl9ldmVudFxuXG5hbmQgSm9iX3Bvb2wgOiBzaWdcbiAgdHlwZSB0ID0gSm9iLnNsb3RzIFBvb2wudFxuZW5kID1cbiAgSm9iX3Bvb2xcblxuYW5kIEpvYl9xdWV1ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgICA7IG11dGFibGUgam9icyA6IE9iai50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gICAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIH1cbmVuZCA9XG4gIEpvYl9xdWV1ZVxuXG5hbmQgSm9icyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWwgOiBKb2JfcXVldWUudFxuICAgIDsgbG93IDogSm9iX3F1ZXVlLnRcbiAgICB9XG5lbmQgPVxuICBKb2JzXG5cbmFuZCBTY2hlZHVsZXIgOiBzaWdcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICAgIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICAgIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogQ3ljbGVfaG9vay50IGFycmF5XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IEN5Y2xlX2hvb2sudCBhcnJheVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gICAgOyBtdXRhYmxlIHRvdGFsX2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgVGltZV9zb3VyY2UudDFcbiAgICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgeWllbGQgOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gICAgOyBtdXRhYmxlIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gICAgfVxuZW5kID1cbiAgU2NoZWR1bGVyXG5cbmFuZCBDeWNsZV9ob29rIDogc2lnXG4gIHR5cGUgdCA9IHVuaXQgLT4gdW5pdFxuZW5kID1cbiAgQ3ljbGVfaG9va1xuXG5hbmQgQ3ljbGVfaG9va19oYW5kbGUgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcbmFuZCBUaW1lX3NvdXJjZV9pZCA6IFVuaXF1ZV9pZC5JZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5hbmQgVGltZV9zb3VyY2UgOiBzaWdcbiAgdHlwZSAtJ3J3IHQxID1cbiAgICB7IGlkIDogVGltZV9zb3VyY2VfaWQudFxuICAgIDsgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbXV0YWJsZSBmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udFxuICAgIDsgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50IC0+IHVuaXRcbiAgICA7IGlzX3dhbGxfY2xvY2sgOiBib29sXG4gICAgOyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIudFxuICAgIH1cbmVuZCA9XG4gIFRpbWVfc291cmNlXG5cbmFuZCBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgOiBzaWdcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgTm90X2ZpbmlzaGVkXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG5lbmQgPVxuICBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubGV0IGRlYnVnID0gRGVidWcubW9uaXRvclxuXG5tb2R1bGUgRm9yd2FyZGluZyA9IFR5cGVzLkZvcndhcmRpbmdcblxudHlwZSB0ID0gVHlwZXMuTW9uaXRvci50ID1cbiAgeyBuYW1lIDogSW5mby50XG4gIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gIDsgaWQgOiBpbnRcbiAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gVHlwZXMuSXZhci50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIHNjaGVkdWxlcyBhIGpvYiBmb3IgZWFjaCBlbGVtZW50IG9mIFtoYW5kbGVyc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgOyAoKiBbTW9uaXRvci5zZW5kX2V4bl0gZXh0ZW5kcyBlYWNoIHRhaWwgaW4gW3RhaWxzX2Zvcl9hbGxfZXJyb3JzXS4gKilcbiAgICBtdXRhYmxlIHRhaWxzX2Zvcl9hbGxfZXJyb3JzIDogZXhuIFR5cGVzLlRhaWwudCBsaXN0XG4gIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9XG4gIG1hdGNoIHQuaGVyZSB3aXRoXG4gIHwgTm9uZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCldXG4gIHwgU29tZSBoZXJlIC0+IFslc2V4cCAodC5uYW1lIDogSW5mby50KSwgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbnMgPVxuICBsZXQgcmVjIGxvb3AgdCBhYyA9XG4gICAgbGV0IGFjID0gZGVzY3JpcHRpb24gdCA6OiBhYyBpblxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTGlzdC5yZXYgYWNcbiAgICB8IFBhcmVudCB0IC0+IGxvb3AgdCBhY1xuICBpblxuICBmdW4gdCAtPiBsb29wIHQgW11cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAoZGVzY3JpcHRpb25zIHQgOiBTZXhwLnQgbGlzdCldXG5cbmxldCBuZXh0X2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgcGFyZW50ID1cbiAgbGV0IGlkID0gbmV4dF9pZCAoKSBpblxuICBsZXQgbmFtZSA9XG4gICAgbWF0Y2ggaW5mbywgbmFtZSB3aXRoXG4gICAgfCBTb21lIGksIE5vbmUgLT4gaVxuICAgIHwgU29tZSBpLCBTb21lIHMgLT4gSW5mby50YWcgaSB+dGFnOnNcbiAgICB8IE5vbmUsIFNvbWUgcyAtPiBJbmZvLm9mX3N0cmluZyBzXG4gICAgfCBOb25lLCBOb25lIC0+IEluZm8uY3JlYXRlIFwiaWRcIiBpZCBbJXNleHBfb2Y6IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0LnRdXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IG5hbWVcbiAgICA7IGhlcmVcbiAgICA7IGZvcndhcmRpbmcgPVxuICAgICAgICAobWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBSZXBvcnRfdW5jYXVnaHRfZXhuXG4gICAgICAgICB8IFNvbWUgcGFyZW50IC0+IFBhcmVudCBwYXJlbnQpXG4gICAgOyBpZFxuICAgIDsgbmV4dF9lcnJvciA9IHsgY2VsbCA9IEVtcHR5IH1cbiAgICA7IGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzID0gQmFnLmNyZWF0ZSAoKVxuICAgIDsgdGFpbHNfZm9yX2FsbF9lcnJvcnMgPSBbXVxuICAgIDsgaGFzX3NlZW5fZXJyb3IgPSBmYWxzZVxuICAgIH1cbiAgaW5cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJjcmVhdGVkIG1vbml0b3JcIiB0IFslc2V4cF9vZjogdF07XG4gIHRcbjs7XG5cbmxldCBtYWluID0gY3JlYXRlX3dpdGhfcGFyZW50IH5uYW1lOlwibWFpblwiIE5vbmVcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yMFxuXG50eXBlIHQgPSBUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ID1cbiAgeyBtb25pdG9yIDogTW9uaXRvci50XG4gIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgbWFpbiA9XG4gIHsgbW9uaXRvciA9IE1vbml0b3IubWFpblxuICA7IHByaW9yaXR5ID0gUHJpb3JpdHkubm9ybWFsXG4gIDsgbG9jYWxfc3RvcmFnZSA9IFVuaXZfbWFwLmVtcHR5XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgPSBbXVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX2xpa2UgP21vbml0b3IgP3ByaW9yaXR5ID9sb2NhbF9zdG9yYWdlIHQgPVxuICBtYXRjaCBtb25pdG9yLCBwcmlvcml0eSwgbG9jYWxfc3RvcmFnZSB3aXRoXG4gIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICgqIGF2b2lkIGFsbG9jYXRpbmcgaW4gdGhlIHRyaXZpYWwgY2FzZSwgd2hpY2ggZS5nLiBoYXBwZW5zIHdoZW4gY2FsbGluZ1xuICAgICAgIFtBc3luYy5zY2hlZHVsZV0gd2l0aG91dCBvcHRpb25hbCBhcmdzICopXG4gICAgdFxuICB8IF8gLT5cbiAgICBsZXQgbW9uaXRvciA9IE9wdGlvbi52YWx1ZSBtb25pdG9yIH5kZWZhdWx0OnQubW9uaXRvciBpblxuICAgIHsgbW9uaXRvclxuICAgIDsgcHJpb3JpdHkgPSBPcHRpb24udmFsdWUgcHJpb3JpdHkgfmRlZmF1bHQ6dC5wcmlvcml0eVxuICAgIDsgbG9jYWxfc3RvcmFnZSA9IE9wdGlvbi52YWx1ZSBsb2NhbF9zdG9yYWdlIH5kZWZhdWx0OnQubG9jYWxfc3RvcmFnZVxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgPSB0LmJhY2t0cmFjZV9oaXN0b3J5XG4gICAgfVxuOztcblxubGV0IGZpbmRfbG9jYWwgdCBrZXkgPSBVbml2X21hcC5maW5kIHQubG9jYWxfc3RvcmFnZSBrZXlcblxubGV0IHdpdGhfbG9jYWwgdCBrZXkgZGF0YSA9XG4gIHsgdCB3aXRoIGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5jaGFuZ2UgdC5sb2NhbF9zdG9yYWdlIGtleSB+ZjooZnVuIF8gLT4gZGF0YSkgfVxuOztcblxubGV0IHJlY29yZF9iYWNrdHJhY2UgdCA9XG4gIHsgdCB3aXRoIGJhY2t0cmFjZV9oaXN0b3J5ID0gQmFja3RyYWNlLmdldCAoKSA6OiB0LmJhY2t0cmFjZV9oaXN0b3J5IH1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuRXh0ZXJuYWxfam9iXG5cbmxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIjxqb2I+XCJcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBQb29sXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcblxudHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCAoT2JqLnRbQHNleHAub3BhcXVlXSkpIFNsb3RzLnQzXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPSBzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbmxldCBjcmVhdGUgKCkgPSBjcmVhdGUgU2xvdHMudDMgfmNhcGFjaXR5OjEgfmR1bW15OihkdW1teV9lLCBkdW1teV9mLCBkdW1teV9hKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEpvYl9wb29sLnNsb3RzIFBvb2wuUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBFdmVudCA9IFR5cGVzLkV2ZW50XG5tb2R1bGUgSm9iID0gVHlwZXMuSm9iXG5pbmNsdWRlIFR5cGVzLkpvYl9vcl9ldmVudFxuXG4oKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0IHRvXG4gICBbT2JqLm1hZ2ljXXMuICopXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlc1xuICBvcGVuIEV2ZW50XG5cbiAgdHlwZSBfdCA9IHQgPVxuICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBtb2R1bGUgRW5zdXJlX3ByaXZhdGVfaW50IChNIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIGludFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIF90ID0gTS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgRW5zdXJlX3ByaXZhdGVfaW50IChKb2IpXG5lbmRcblxubGV0IG9mX2V2ZW50IGV2ZW50IDogdCA9IE9iai5tYWdpYyAoZXZlbnQgOiBFdmVudC50KVxubGV0IG9mX2pvYiBqb2IgOiB0ID0gT2JqLm1hZ2ljIChqb2IgOiBKb2IudClcbmxldCBpc19ldmVudCAodCA6IHQpID0gT2JqLmlzX2Jsb2NrIChPYmoucmVwciB0KVxubGV0IGlzX2pvYiAodCA6IHQpID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgdClcblxubW9kdWxlIE1hdGNoID0gc3RydWN0XG4gIHR5cGUgXyBraW5kID1cbiAgICB8IEV2ZW50IDogRXZlbnQudCBraW5kXG4gICAgfCBKb2IgOiBKb2IudCBraW5kXG5cbiAgdHlwZSBwYWNrZWQgPSBLIDogXyBraW5kIC0+IHBhY2tlZCBbQEB1bmJveGVkXVxuXG4gIGxldCBraW5kIHQgPSBpZiBpc19ldmVudCB0IHRoZW4gSyBFdmVudCBlbHNlIEsgSm9iXG4gIGxldCBwcm9qZWN0ICh0eXBlIGEpIChfIDogYSBraW5kKSBqb2Jfb3JfZXZlbnQgPSAoT2JqLm1hZ2ljIDogdCAtPiBhKSBqb2Jfb3JfZXZlbnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLlNjaGVkdWxlclxuXG5sZXQgZXZlbnRzIHQgPSB0LnRpbWVfc291cmNlLmV2ZW50c1xuXG5sZXQgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAoKiBBdm9pZCBhIGNhbWxfbW9kaWZ5IGluIG1vc3QgY2FzZXMuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHRoZW4gdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDwtIGV4ZWN1dGlvbl9jb250ZXh0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5sZXQgc2xvdHNfcGVyX2VsdCA9IDNcblxubW9kdWxlIEEgPSBVbmlmb3JtX2FycmF5XG5cbigqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzcGVjaWFsaXplZCBbRmxhdF9xdWV1ZV0sIGRvbmUgZm9yIHJlYXNvbnMgb2Ygc3BlZWQuICopXG50eXBlIHQgPSBUeXBlcy5Kb2JfcXVldWUudCA9XG4gIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gIDsgKCogW2pvYnNdIGlzIGFuIGFycmF5IG9mIGxlbmd0aCBbY2FwYWNpdHkgdCAqIHNsb3RzX3Blcl9lbHRdLCB3aGVyZSBlYWNoIGVsdCBoYXMgdGhlXG4gICAgICAgdGhyZWUgY29tcG9uZW50cyBvZiBhIGpvYiAoW2V4ZWN1dGlvbl9jb250ZXh0XSwgW2ZdLCBbYV0pIGluIGNvbnNlY3V0aXZlIHNwb3RzIGluXG4gICAgICAgW2pvYnNdLiAgW2VucXVldWVdIGRvdWJsZXMgdGhlIGxlbmd0aCBvZiBbam9ic10gaWYgW2pvYnNdIGlzIGZ1bGwuICBbam9ic10gbmV2ZXJcbiAgICAgICBzaHJpbmtzLiAgW2pvYnNdIGlzIHNvbWV3aGF0IGxpa2UgYSBbQ29yZS5Qb29sXSBzcGVjaWFsaXplZCB0byAzLXR1cGxlczsgd2VcbiAgICAgICBkb24ndCB1c2UgW1Bvb2xdIGJlY2F1c2UgdGhhdCBpbXBsZW1lbnRzIGEgc2V0LCB3aGVyZSBbam9ic10gaXMgYSBxdWV1ZS4gKilcbiAgICBtdXRhYmxlIGpvYnMgOiAoT2JqLnQgQS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogW21hc2tdIGlzIFtjYXBhY2l0eSB0IC0gMV0sIGFuZCBpcyB1c2VkIGZvciBxdWlja2x5IGNvbXB1dGluZyBbaSBtb2QgKGNhcGFjaXR5XG4gICAgICAgdCldLiBBIHNwZWNpYWwgY2FzZSB3aGVuIHRoZSBqb2IgcXVldWUgaGFzIGNhcGFjaXR5IDAgaXMgcmVwcmVzZW50ZWRcbiAgICAgICB3aXRoIFttYXNrID0gLTFdLiBUaGlzIHZhbHVlIGlzIG5vdCB1c2VmdWwgYXMgYSBiaXQtbWFzaywgYnV0IHdlIG9ubHkgdXNlXG4gICAgICAgdGhlIGJpdC1tYXNrIHdoZW4gdGhlcmUncyBjYXBhY2l0eSBpbiB0aGUgYXJyYXksIHNvIHRoYXQgaXMgbm90IGEgcHJvYmxlbS5cbiAgICAqKVxuICAgIG11dGFibGUgbWFzayA6IGludFxuICA7ICgqIFtmcm9udF0gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBqb2IgaW4gdGhlIHF1ZXVlLiAgVGhlIGFycmF5IGluZGV4IG9mIHRoYXQgam9iJ3NcbiAgICAgICBleGVjdXRpb24gY29udGV4dCBpcyBbZnJvbnQgKiBzbG90c19wZXJfZWx0XS4gKilcbiAgICBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG9mZnNldCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICogc2xvdHNfcGVyX2VsdFxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm51bV9qb2JzX3J1bjooY2hlY2sgKGZ1biBudW1fam9ic19ydW4gLT4gYXNzZXJ0IChudW1fam9ic19ydW4gPj0gMCkpKVxuICAgICAgfmpvYnNfbGVmdF90aGlzX2N5Y2xlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzX2xlZnRfdGhpc19jeWNsZSAtPiBhc3NlcnQgKGpvYnNfbGVmdF90aGlzX2N5Y2xlID49IDApKSlcbiAgICAgIH5qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgIChPYmoub2JqIChBLmdldCBqb2JzIChvZmZzZXQgdCBpKSkgOiBFeGVjdXRpb25fY29udGV4dC50KVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXNrIC0+XG4gICAgICAgICAgIGxldCBjYXBhY2l0eSA9IG1hc2sgKyAxIGluXG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPSAwIHx8IEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQgPSBBLmxlbmd0aCB0LmpvYnMpKSlcbiAgICAgIH5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZTooZnVuIF8gLT4gKCkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPCBtYXggMSAoY2FwYWNpdHkgdCkpKSlcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkgdCkpKSlcbjs7XG5cbmxldCBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5ID0gQS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gICgqIFdlIHN0YXJ0IHdpdGggW2NhcGFjaXR5ICA9IDBdIHNvIHRoYXQgdGhlIGZpcnN0IGpvYiB0aGF0IGlzIGFkZGVkIGNhbGxzIFtncm93XSBhbmRcbiAgICAgZmlsbHMgaW4gdGhlIFtiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZV0uICopXG4gIGxldCBjYXBhY2l0eSA9IDAgaW5cbiAgeyBudW1fam9ic19ydW4gPSAwXG4gIDsgam9ic19sZWZ0X3RoaXNfY3ljbGUgPSAwXG4gIDsgam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHlcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgZnJvbnQgPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlID0gTm9uZVxuICB9XG47O1xuXG5sZXQgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgdCA9IHQuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWVcblxubGV0IGNsZWFyIHQgPVxuICB0LmZyb250IDwtIDA7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gMFxuOztcblxubGV0IGdyb3cgdCA9XG4gIChtYXRjaCB0LmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHdpdGhcbiAgIHwgU29tZSBfIC0+IGFzc2VydCAoY2FwYWNpdHkgdCA+IDApXG4gICB8IE5vbmUgLT4gdC5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA8LSBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSk7XG4gIGxldCBvbGRfY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBtYXggMSAob2xkX2NhcGFjaXR5ICogMikgaW5cbiAgbGV0IG9sZF9qb2JzID0gdC5qb2JzIGluXG4gIGxldCBvbGRfZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCBsZW4xID0gSW50Lm1pbiB0Lmxlbmd0aCAob2xkX2NhcGFjaXR5IC0gb2xkX2Zyb250KSAqIHNsb3RzX3Blcl9lbHQgaW5cbiAgbGV0IGxlbjIgPSAodC5sZW5ndGggKiBzbG90c19wZXJfZWx0KSAtIGxlbjEgaW5cbiAgbGV0IG5ld19qb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eTpuZXdfY2FwYWNpdHkgaW5cbiAgQS5ibGl0XG4gICAgfmxlbjpsZW4xXG4gICAgfnNyYzpvbGRfam9ic1xuICAgIH5zcmNfcG9zOihvbGRfZnJvbnQgKiBzbG90c19wZXJfZWx0KVxuICAgIH5kc3Q6bmV3X2pvYnNcbiAgICB+ZHN0X3BvczowO1xuICBBLmJsaXQgfmxlbjpsZW4yIH5zcmM6b2xkX2pvYnMgfnNyY19wb3M6MCB+ZHN0Om5ld19qb2JzIH5kc3RfcG9zOmxlbjE7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmpvYnMgPC0gbmV3X2pvYnM7XG4gIHQuZnJvbnQgPC0gMFxuOztcblxubGV0IHNldCAodHlwZSBhKSB0IGkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IG9mZnNldCA9IG9mZnNldCB0IGkgaW5cbiAgQS51bnNhZmVfc2V0IHQuam9icyBvZmZzZXQgKE9iai5yZXByIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMSkgKE9iai5yZXByIChmIDogYSAtPiB1bml0KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDIpIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBncm93IHQ7XG4gIHNldCB0IHQubGVuZ3RoIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJKb2JzLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSBnb3QgbmVnYXRpdmUgbnVtYmVyXCIgKG4gOiBpbnQpICh0IDogdCldO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIG5cbjs7XG5cbmxldCBjYW5fcnVuX2Ffam9iIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA+IDBcblxubGV0IHJ1bl9qb2IgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHQubnVtX2pvYnNfcnVuIDwtIHQubnVtX2pvYnNfcnVuICsgMTtcbiAgU2NoZWR1bGVyLnNldF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGYgYVxuOztcblxubGV0IHJ1bl9leHRlcm5hbF9qb2JzIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSA9XG4gIGxldCBleHRlcm5hbF9qb2JzID0gc2NoZWR1bGVyLmV4dGVybmFsX2pvYnMgaW5cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIGV4dGVybmFsX2pvYnMgPiAwIGRvXG4gICAgbGV0IChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKSA9XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBleHRlcm5hbF9qb2JzXG4gICAgaW5cbiAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBkb25lXG47O1xuXG5sZXQgcnVuX2pvYnMgKHR5cGUgYSkgdCBzY2hlZHVsZXIgPVxuICAoKiBXZSBkbyB0aGUgW3RyeS13aXRoXSBvdXRzaWRlIG9mIHRoZSBbd2hpbGVdIGJlY2F1c2UgaXQgaXMgY2hlYXBlciB0aGFuIGRvaW5nIGFcbiAgICAgW3RyeS13aXRoXSBmb3IgZWFjaCBqb2IuICopXG4gICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYmVmb3JlIGVudGVyaW5nIHRoZSBsb29wLCBzaW5jZSBpdCBtaWdodCBlbnF1ZXVlIGEgam9iLFxuICAgICBjaGFuZ2luZyBbdC5sZW5ndGhdLiAqKVxuICB0cnlcbiAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlcjtcbiAgICB3aGlsZSBjYW5fcnVuX2Ffam9iIHQgZG9cbiAgICAgIGxldCB0aGlzX2pvYiA9IG9mZnNldCB0IDAgaW5cbiAgICAgIGxldCBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICAgICAgICBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzIHRoaXNfam9iKVxuICAgICAgaW5cbiAgICAgIGxldCBmIDogYSAtPiB1bml0ID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAxKSkgaW5cbiAgICAgIGxldCBhIDogYSA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMikpIGluXG4gICAgICAoKiBXZSBjbGVhciBvdXQgdGhlIGpvYiByaWdodCBub3cgc28gdGhhdCBpdCBpc24ndCBsaXZlIGF0IHRoZSBuZXh0IG1pbm9yXG4gICAgICAgICBjb2xsZWN0aW9uLiAgV2UgdHJpZWQgbm90IGRvaW5nIHRoaXMgYW5kIHNhdyBzaWduaWZpY2FudCAoMTUlIG9yIHNvKSBwZXJmb3JtYW5jZVxuICAgICAgICAgaGl0cyBkdWUgdG8gc3B1cmlvdXMgcHJvbW90aW9uLiAqKVxuICAgICAgc2V0IHQgMCBkdW1teV9lIGR1bW15X2YgZHVtbXlfYTtcbiAgICAgIHQuZnJvbnQgPC0gKHQuZnJvbnQgKyAxKSBsYW5kIHQubWFzaztcbiAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gdC5qb2JzX2xlZnRfdGhpc19jeWNsZSAtIDE7XG4gICAgICAoKiBJdCBpcyBPSyBpZiBbcnVuX2pvYl0gb3IgW3J1bl9leHRlcm5hbF9qb2JzXSByYWlzZXMsIGluIHdoaWNoIGNhc2UgdGhlIGV4biBpc1xuICAgICAgICAgaGFuZGxlZCBieSB0aGUgb3V0ZXIgdHJ5LXdpdGguICBUaGUgb25seSBzaWRlIGVmZmVjdHMgd2UgaGF2ZSBkb25lIGFyZSB0byB0YWtlXG4gICAgICAgICB0aGUgam9iIG91dCBvZiB0aGUgcXVldWUgYW5kIGRlY3JlbWVudCBbam9ic19sZWZ0X3RoaXNfY3ljbGVdLiAgW3J1bl9qb2JdIG9yXG4gICAgICAgICBbcnVuX2V4dGVybmFsX2pvYnNdIG1heSBzaWRlIGVmZmVjdCBbdF0sIGVpdGhlciBieSBlbnF1ZXVlaW5nIGpvYnMsIG9yIGJ5XG4gICAgICAgICBjbGVhcmluZyBbdF0uICopXG4gICAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICAgICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYXQgZWFjaCBpdGVyYXRpb24gb2YgdGhlIFt3aGlsZV0gbG9vcCwgZm9yIGZhaXJuZXNzLiAqKVxuICAgICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXJcbiAgICBkb25lO1xuICAgIE9rICgpXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAoKiBXZSBjYWxsIFtFeG4uYmFja3RyYWNlXSBpbW1lZGlhdGVseSBhZnRlciBjYXRjaGluZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLCB0b1xuICAgICAgIGVuc3VyZSB0aGVyZSBpcyBubyBpbnRlcnZlbmluZyBjb2RlIHRoYXQgaW50ZXJmZXJlcyB3aXRoIHRoZSBnbG9iYWwgYmFja3RyYWNlXG4gICAgICAgc3RhdGUuICopXG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICBFcnJvciAoZXhuLCBiYWNrdHJhY2UpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGV4dGVybmFsIGZvcm1hdCA6IGZsb2F0IC0+IHN0cmluZyAtPiBzdHJpbmcgPSBcImNvcmVfdGltZV9uc19mb3JtYXRcIlxuXG4gICgqIFdlIHVzZSBhIG1vcmUgcGxlYXNhbnQgZm9ybWF0IHRoYW4gW0NvcmUuVGltZV9ucy5zZXhwX29mX3RdLFxuICAgICB3aGljaCBoYXMgdG8gYmUgbWVzc2llciBmb3Igcm91bmQgdHJpcHBhYmlsaXR5LiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIFslc2V4cFxuICAgICAgKGZvcm1hdCAodCB8PiB0b19zcGFuX3NpbmNlX2Vwb2NoIHw+IFNwYW4udG9fc2VjKSBcIiVZLSVtLSVkVCVIOiVNOiVTJXpcIiA6IHN0cmluZyldXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIGluY2x1ZGUgVGltaW5nX3doZWVsLkFsYXJtXG5cbiAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgKCogMS84dGggb2YgYSBtaWxsaXNlY29uZCBhbGFybV9wcmVjaXNpb24gc2VlbXMgc3VmZmljaWVudCB0byBhdm9pZCBoYXZpbmcgbWFueSBhbGFybXNcbiAgICAgaW4gdGhlIHNhbWUgaW50ZXJ2YWwsIHdoaWNoIGF2b2lkcyBxdWFkcmF0aWMgaW5zZXJ0aW9uIHNvcnQgd2hlbiBmaXJpbmcgYWxhcm1zLiAgQW5kXG4gICAgIHRoZSBsZXZlbCBiaXRzIGdpdmUgdXMgbGV2ZWxzIG9mID4xcywgPjFtLCA+MWgsID4xZC4gIFNlZSB0ZXN0IGluXG4gICAgIFsuLi90ZXN0L3Rlc3Rfc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWxdLiAqKVxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMzsgNjsgNjsgNSBdKVxuICAgICgpXG47O1xuXG50eXBlIGNhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBJZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5TdGF0dXMudCA9XG4gICAgICAgIHwgRmlyZWQgKCogaW4gW2ZpcmVkX2V2ZW50c10sIHJlYWR5IHRvIHJ1biAqKVxuICAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgICAoKiBjdXJyZW50bHkgcnVubmluZyB0aGUgY2FsbGJhY2sgKGZvciBhIHBlcmlvZGljIGV2ZW50KSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCAoKiBpbiB0aGUgdGltaW5nIHdoZWVsICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQgKCogbm90IGluIHRpbWluZyB3aGVlbCBvciBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICAgIGxldCB0cmFuc2l0aW9uX2lzX2FsbG93ZWQgfmZyb20gfnRvXyA9XG4gICAgICAgIG1hdGNoIGZyb20sIHRvXyB3aXRoXG4gICAgICAgIHwgKCBGaXJlZFxuICAgICAgICAgICwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50ICgqIHN0YXJ0ZWQgcnVubmluZyBjYWxsYmFjayAoZm9yIGEgcGVyaW9kaWMgZXZlbnQpICopXG4gICAgICAgICAgKVxuICAgICAgICB8ICggRmlyZWRcbiAgICAgICAgICAsIFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAoKiBhYm9ydGVkLCBvciBzdGFydGVkIHJ1bm5pbmcgY2FsbGJhY2sgKGZvciBhIG5vbi1wZXJpb2RpYyBldmVudCkgKikgKVxuICAgICAgICAoKiBbcmVzY2hlZHVsZV8qXSBnb2VzIHRocm91Z2ggYW4gaW50ZXJtZWRpYXRlIFtGaXJlZCwgVW5zY2hlZHVsZWRdIHN0YXRlLFxuICAgICAgICAgICBzbyB3ZSBuZXZlciB0cmFuc2l0aW9uIGZyb20gW0ZpcmVkXSBkaXJlY3RseSB0byBbU2NoZWR1bGVkXS4gKilcbiAgICAgICAgfCAoIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgICAgICwgU2NoZWR1bGVkICgqIHNjaGVkdWxlZCBuZXh0IGl0ZXJhdGlvbiBvZiBhIHBlcmlvZGljIGV2ZW50ICopIClcbiAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgfCBTY2hlZHVsZWQsIEZpcmVkICgqIG1vdmVkIGZyb20gdGltaW5nIHdoZWVsIHRvIFtmaXJlZF9ldmVudHNdICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQsIEZpcmVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgcGFzdCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBTY2hlZHVsZWQgKCogZXZlbnQgc2NoZWR1bGVkIGluIHRoZSBmdXR1cmUgKikgLT4gdHJ1ZVxuICAgICAgICB8IChGaXJlZCB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkKSwgXyAtPiBmYWxzZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgZXZlbnQgPSBUeXBlcy5FdmVudC50XG5cbiAgICBsZXQgc2V4cF9vZl9ldmVudFxuICAgICAgICAgICh7IGFsYXJtID0gX1xuICAgICAgICAgICA7IGF0XG4gICAgICAgICAgIDsgY2FsbGJhY2sgPSBfXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBfXG4gICAgICAgICAgIDsgaW50ZXJ2YWxcbiAgICAgICAgICAgOyBuZXh0X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHByZXZfZmlyZWQgPSBfXG4gICAgICAgICAgIDsgc3RhdHVzXG4gICAgICAgICAgIH0gOlxuICAgICAgICAgICAgIGV2ZW50KVxuICAgICAgPVxuICAgICAgWyVzZXhwXG4gICAgICAgIHsgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgOyBhdCA6IFRpbWVfbnMudFxuICAgICAgICA7IGludGVydmFsIDogKFRpbWVfbnMuU3Bhbi50IG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgICAoKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0XG4gICAgICAgICB0byBbT2JqLm1hZ2ljXXMuICopXG4gICAgICBtb2R1bGUgRXZlbnRfaXNfYmxvY2sgOiBzaWcgZW5kID0gc3RydWN0XG4gICAgICAgIG9wZW4gVHlwZXNcbiAgICAgICAgb3BlbiBFdmVudFxuXG4gICAgICAgIHR5cGUgX3QgPSB0ID1cbiAgICAgICAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICAgICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgICAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgICAgIH1cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5PcHRpb24udFxuXG4gICAgICAoKiBVc2luZyBhbiBpbW1lZGlhdGUgcmF0aGVyIHRoYW4gYSBzdGF0aWNhbGx5LWFsbG9jYXRlZCByZWNvcmQgaGVyZSBzZWVtcyB0b1xuICAgICAgICAgaW1wcm92ZSBwZXJmb3JtYW5jZSBub3RpY2VhYmx5IChbLi4vYmVuY2gvYmluL2JlbmNoX3RpbWVfc291cmNlLmV4ZV0gYmVuY2htYXJrXG4gICAgICAgICBpcyBmYXN0ZXIgYnkgfjEwbnMgcGVyIGFsYXJtKSwgcHJlc3VtYWJseSBiZWNhdXNlIGl0IGF2b2lkcyB0aGUgZXhwZW5zaXZlXG4gICAgICAgICBwYXJ0cyBvZiBjYW1sX21vZGlmeS4gKilcbiAgICAgIGxldCBub25lID0gKE9iai5tYWdpYyBOb25lIDogdCkgKCogYW4gYXJiaXRyYXJ5IGltbWVkaWF0ZSAqKVxuICAgICAgbGV0IHNvbWUgPSAoT2JqLm1hZ2ljIDogVHlwZXMuRXZlbnQudCAtPiB0KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgZmlyc3Rfc29tZSB0MSB0MiA9IGlmIGlzX3NvbWUgdDEgdGhlbiB0MSBlbHNlIHQyXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gKE9iai5tYWdpYyA6IHQgLT4gVHlwZXMuRXZlbnQudClcblxuICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBvcGVuIE9wdGlvbmFsX3N5bnRheFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFslc2V4cCAoKV1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBldmVudCldXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuc2FmZV92YWx1ZSB0KVxuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50Lk9wdGlvbi52YWx1ZV9leG4gTm9uZV1cIl1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFNvbWUgZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gc29tZSBldmVudFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50LnQgPVxuICAgICAgeyAoKiBbYWxhcm1dIGlzIG5vbi1udWxsIGlmZiB0aGUgZXZlbnQgaXMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW2ludGVydmFsXSBpcyB0aGUgcGVyaW9kIGZvciB0aGUgcGVyaW9kaWMgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICA7ICgqIFtuZXh0X2ZpcmVkXSBhbmQgW3ByZXZfZmlyZWRdIGNyZWF0ZSBhIGRvdWJseS1saW5rZWQgKG5vbi1jaXJjdWxhcikgbGlzdCBvZlxuICAgICAgICAgICBmaXJlZCBldmVudHMsIGxpbmtlZCB2aWEgdGhlc2UgZmllbGRzLiBBbiBldmVudCBpcyBhZGRlZCB0byB0aGUgbGlzdCB3aGVuXG4gICAgICAgICAgIGl0IGZpcmVzLCBlaXRoZXIgYmVjYXVzZSBpdCBpcyBhZGRlZCB3aXRoIGEgdGltZSBpbiB0aGUgcGFzdCwgb3JcbiAgICAgICAgICAgYmVjYXVzZSB0aW1lIGFkdmFuY2VzLiBbYWR2YW5jZV9ieV9hbGFybXNdIGl0ZXJhdGVzIG92ZXIgdGhlIGV2ZW50c1xuICAgICAgICAgICBpbiBbbmV4dF9maXJlZF0gYW5kIHJ1bnMgdGhlbSwgZW1wdHlpbmcgdGhlIGxpc3QuIFtub25lXSBpcyB1c2VkIHRvXG4gICAgICAgICAgIGluZGljYXRlIHRoZSBlbmQgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBzZXhwX29mX3QgPSBbJXNleHBfb2Y6IGV2ZW50XVxuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgICB+YWxhcm06XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAgICAgKEFsYXJtLmlzX251bGwgYWxhcm0pXG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBGaXJlZCB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFVuc2NoZWR1bGVkIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfCBTY2hlZHVsZWQgLT4gZmFsc2UpKSlcbiAgICAgICAgICB+YXQ6aWdub3JlXG4gICAgICAgICAgfmNhbGxiYWNrOmlnbm9yZVxuICAgICAgICAgIH5leGVjdXRpb25fY29udGV4dDppZ25vcmVcbiAgICAgICAgICB+aW50ZXJ2YWw6aWdub3JlXG4gICAgICAgICAgfm5leHRfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobmV4dF9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW25leHRfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBlbmQgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBuZXh0X2ZpcmVkLnByZXZfZmlyZWQpKSlcbiAgICAgICAgICB+cHJldl9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChwcmV2X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbcHJldl9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIHByZXZfZmlyZWQubmV4dF9maXJlZCkpKVxuICAgICAgICAgIH5zdGF0dXM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biAoc3RhdHVzIDogU3RhdHVzLnQpIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT4gYXNzZXJ0IChDb3JlLk9wdGlvbi5pc19zb21lIHQuaW50ZXJ2YWwpXG4gICAgICAgICAgICAgICB8IEZpcmVkIHwgVW5zY2hlZHVsZWQgfCBTY2hlZHVsZWQgLT4gKCkpKSlcbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXMgdCB0b18gPVxuICAgICAgbGV0IGZyb20gPSB0LnN0YXR1cyBpblxuICAgICAgaWYgbm90IChTdGF0dXMudHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18pXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFslaGVyZV1cbiAgICAgICAgICAgICAgXCJidWcgLS0gc2V0X3N0YXR1cyB0cmFuc2l0aW9uIG5vdCBhbGxvd2VkXCJcbiAgICAgICAgICAgICAgKGZyb20gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgKHRvXyA6IFN0YXR1cy50KVxuICAgICAgICAgICAgICB+ZXZlbnQ6KHQgOiB0KV07XG4gICAgICB0LnN0YXR1cyA8LSB0b19cbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXNfaWYgfmlzIHQgdG9fID0gaWYgU3RhdHVzLmVxdWFsIGlzIHQuc3RhdHVzIHRoZW4gc2V0X3N0YXR1cyB0IHRvX1xuICAgIGxldCBzY2hlZHVsZWRfYXQgPSBhdFxuICBlbmRcblxuICBtb2R1bGUgSm9iX29yX2V2ZW50ID0gc3RydWN0XG4gICAgaW5jbHVkZSBKb2Jfb3JfZXZlbnRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgIGxldCAoSyBrKSA9IGtpbmQgdCBpblxuICAgICAgbWF0Y2ggaywgcHJvamVjdCBrIHQgd2l0aFxuICAgICAgfCBFdmVudCwgZXZlbnQgLT4gWyVzZXhwIChldmVudCA6IEV2ZW50LnQpXVxuICAgICAgfCBKb2IsIF8gLT5cbiAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgIFslbWVzc2FnZSBcIjxKb2IudD5cIl1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlIC0ncncgdCA9ICdydyBUeXBlcy5UaW1lX3NvdXJjZS50MSA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7ICgqIFthZHZhbmNlX2Vycm9yc10gYWNjdW11bGF0ZXMgZXJyb3JzIHJhaXNlZCBieSBhbGFybXMgcnVuIGJ5XG4gICAgICAgICBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgKCogW2FtX2FkdmFuY2luZ10gaXMgdHJ1ZSBvbmx5IGR1cmluZyBbYWR2YW5jZV9ieV9hbGFybXNdLCBhbmQgaXMgdXNlZCB0byBjYXVzZVxuICAgICAgICAgY2FsbGJhY2tzIHRvIHJhaXNlIGlmIHRoZXkgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgKCogW2ZpcmVkX2V2ZW50c10gaXMgdGhlIGZyb250IG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLFxuICAgICAgICAgd2hpY2ggaXMgc3RvcmVkIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW0V2ZW50LmF0XS4gKilcbiAgICAgIG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFttb3N0X3JlY2VudGx5X2ZpcmVkXSBpcyB0aGUgZXZlbnQgdGhhdCB3YXMgbW9zdCByZWNlbnRseSBpbnNlcnRlZCBpbnRvXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gSXQgaXMgdXNlZCBhcyBhbiBvcHRpbWl6YXRpb24gdG8gYWxsb3cgaW5zZXJ0aW9uIG9mXG4gICAgICAgICBzdWJzZXF1ZW50IGV2ZW50cyB0byBzdGFydCBsYXRlciBpbiB0aGUgbGlzdCByYXRoZXIgdGhhbiBhdCB0aGUgYmVnaW5uaW5nLlxuICAgICAgICAgSXQgc3BlY2lmaWNhbGx5IGF2b2lkcyBxdWFkcmF0aWMgYmVoYXZpb3Igd2hlbiBpbnNlcnRpbmcgbXVsdGlwbGUgZXZlbnRzXG4gICAgICAgICB0aGF0IGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0aW1lIC0tIHRoZSB0aW1lIHNvdXJjZSBmaXJlcyBzdWNoIGV2ZW50cyBpblxuICAgICAgICAgdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBpbiB0aGF0IHNhbWUgb3JkZXIgaW5cbiAgICAgICAgIFtmaXJlZF9ldmVudHNdLiAqKVxuICAgICAgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFdlIHN0b3JlIFtoYW5kbGVfZmlyZWRdIGluIFt0XSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IGV2ZXJ5IHRpbWUgd2UgY2FsbFxuICAgICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgaGFuZGxlX2ZpcmVkIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgbGV0IG5vdyA9IFRpbWluZ193aGVlbC5ub3cgZXZlbnRzIGluXG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwid2FsbF9jbG9ja1wiIChub3cgOiBUaW1lX25zLnQpXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFsbF9ldmVudHMgPSByZWYgW10gaW5cbiAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgIGFsbF9ldmVudHMgOj0gKEFsYXJtLmF0IGV2ZW50cyBhbGFybSwgQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSA6OiAhYWxsX2V2ZW50cyk7XG4gICAgICBsZXQgZXZlbnRzID1cbiAgICAgICAgTGlzdC5zb3J0ICFhbGxfZXZlbnRzIH5jb21wYXJlOihmdW4gKGF0MSwgXykgKGF0MiwgXykgLT4gVGltZV9ucy5jb21wYXJlIGF0MSBhdDIpXG4gICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgaW5cbiAgICAgIFslbWVzc2FnZSBcIlwiIChub3cgOiBUaW1lX25zLnQpIChldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBsaXN0KV0pXG4gIDs7XG5cbiAgbGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcblxuICBsZXQgaXNfaW5fZmlyZWRfZXZlbnRzID1cbiAgICBsZXQgcmVjIHNlYXJjaCBjdXJyZW50IH50YXJnZXRfZXZlbnQgPVxuICAgICAgbWF0Y2glb3B0aW9uYWwgKGN1cnJlbnQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgY3VycmVudCAtPlxuICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnQgdGFyZ2V0X2V2ZW50IHx8IHNlYXJjaCBjdXJyZW50Lm5leHRfZmlyZWQgfnRhcmdldF9ldmVudFxuICAgIGluXG4gICAgZnVuIHQgdGFyZ2V0X2V2ZW50IC0+IHNlYXJjaCB0LmZpcmVkX2V2ZW50cyB+dGFyZ2V0X2V2ZW50XG4gIDs7XG5cbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgKHR5cGUgcncpIH5qb2I6KGpvYl9pbnZhcmlhbnQgOiBKb2IudCAtPiB1bml0KSAodCA6IHJ3IHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+aWQ6aWdub3JlXG4gICAgICAgIH5hZHZhbmNlX2Vycm9yczppZ25vcmVcbiAgICAgICAgfmFtX2FkdmFuY2luZzppZ25vcmVcbiAgICAgICAgfmV2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBldmVudHMgLT5cbiAgICAgICAgICAgICBUaW1pbmdfd2hlZWwuaW52YXJpYW50IGlnbm9yZSBldmVudHM7XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLml0ZXIgZXZlbnRzIH5mOihmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSBldmVudHMgYWxhcm0gaW5cbiAgICAgICAgICAgICAgIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgICAgICAgICAgICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBKb2IsIGpvYiAtPiBqb2JfaW52YXJpYW50IGpvYlxuICAgICAgICAgICAgICAgfCBFdmVudCwgZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGFsYXJtIGV2ZW50LmFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XSBldmVudC5hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgYWxhcm0pO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBFdmVudC5TdGF0dXMudF0gZXZlbnQuc3RhdHVzIH5leHBlY3Q6U2NoZWR1bGVkO1xuICAgICAgICAgICAgICAgICBFdmVudC5pbnZhcmlhbnQgZXZlbnQpKSlcbiAgICAgICAgfmZpcmVkX2V2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIC0+XG4gICAgICAgICAgICAgbGV0IHJlYyBjaGVja19ldmVudCAoY3VycmVudCA6IEV2ZW50LnQpID1cbiAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KSk7XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gY3VycmVudC5uZXh0X2ZpcmVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBjdXJyZW50LmF0IG5leHQuYXQpO1xuICAgICAgICAgICAgICAgICBjaGVja19ldmVudCBuZXh0XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gZmlyZWRfZXZlbnRzIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gY2hlY2tfZXZlbnQgZXZlbnQpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+aXNfd2FsbF9jbG9jazppZ25vcmVcbiAgICAgICAgfm1vc3RfcmVjZW50bHlfZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gYXNzZXJ0IChpc19pbl9maXJlZF9ldmVudHMgdCBldmVudCkpKVxuICAgICAgICB+c2NoZWR1bGVyOmlnbm9yZSlcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPSBpbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBfIC0+ICgpKSB0XG5lbmRcblxub3BlbiBUMVxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxubGV0IGlkIHQgPSB0LmlkXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbGVuZ3RoIHQgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIHQuZXZlbnRzXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID0gVGltaW5nX3doZWVsLm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdC5ldmVudHNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxuXG4oKiBbZmlyZSB0IGV2ZW50XSBzZXRzIFtldmVudC5zdGF0dXMgPSBGaXJlZF0gYW5kIGluc2VydHMgW2V2ZW50XSBpbnRvXG4gICBbdC5maXJlZF9ldmVudHNdIGluIHNvcnRlZCB0aW1lIG9yZGVyLiAqKVxubGV0IGZpcmUgdCAoZXZlbnQgOiBFdmVudC50KSA9XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgRmlyZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gIGxldCAoKSA9XG4gICAgKCogSWYgW2V2ZW50XSBiZWxvbmdzIGFmdGVyIFt0Lm1vc3RfcmVjZW50bHlfZmlyZWRdLCB0aGVuIHdlIHN0YXJ0IHRoZVxuICAgICAgIGluc2VydGlvbiB0aGVyZSByYXRoZXIgdGhhbiBhdCB0aGUgZnJvbnQgb2YgW3QuZmlyZWRfZXZlbnRzXS4gVGhpcyB3b3Jrc1xuICAgICAgIG5pY2VseSBpZiB3ZSdyZSBnZXR0aW5nIHRoZSBhbGFybXMgaW4gbm9uLWRlY3JlYXNpbmcgdGltZSBvcmRlciwgd2hpY2ggaXNcbiAgICAgICBjbG9zZSB0byB3aGF0IFtUaW1pbmdfd2hlZWxdIHByb3ZpZGVzIChhbHRob3VnaCBbVGltaW5nX3doZWVsXSBkb2Vzbid0XG4gICAgICAgZ3VhcmFudGVlIHRpbWUgb3JkZXJpbmcgZm9yIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsKS4gKilcbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCB3aGVuIFRpbWVfbnMuKCA8PSApIG1vc3RfcmVjZW50bHlfZmlyZWQuYXQgZXZlbnQuYXQgLT5cbiAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgbW9zdF9yZWNlbnRseV9maXJlZDtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbW9zdF9yZWNlbnRseV9maXJlZC5uZXh0X2ZpcmVkXG4gICAgfCBfIC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSB0LmZpcmVkX2V2ZW50c1xuICBpblxuICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnQ7XG4gICgqIFdlIHVzZSBbVGltZV9ucy4oIDw9ICldIHJhdGhlciB0aGFuIFs8XSBzbyB0aGF0IFtldmVudF0gaXMgYWRkZWQgYWZ0ZXIgb3RoZXJcbiAgICAgZXZlbnRzIGF0IHRoZSBzYW1lIHRpbWUuIFNpbmNlIFtUaW1pbmdfd2hlZWxdIGZpcmVzIGFsYXJtcyBpbiBhIGJ1Y2tldCBpblxuICAgICB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLCB1c2luZyBbPD1dIGtlZXBzIGV2ZW50cyBhdCB0aGUgc2FtZVxuICAgICB0aW1lIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuICopXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICBsZXQgY29udGludWUgPSBUaW1lX25zLiggPD0gKSBuZXh0LmF0IGV2ZW50LmF0IGluXG4gICAgICBpZiBjb250aW51ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZDtcbiAgICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSBuZXh0Lm5leHRfZmlyZWQpO1xuICAgICAgY29udGludWVcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgaW5cbiAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICB8IE5vbmUgLT4gdC5maXJlZF9ldmVudHMgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG47O1xuXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcblxubGV0IG5leHRfYWxhcm1fcnVuc19hdCB0ID1cbiAgaWYgRXZlbnQuT3B0aW9uLmlzX3NvbWUgdC5maXJlZF9ldmVudHNcbiAgdGhlbiBTb21lICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gIGVsc2UgVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbjs7XG5cbmxldCBub3cgdCA9IGlmIHQuaXNfd2FsbF9jbG9jayB0aGVuIFRpbWVfbnMubm93ICgpIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG5sZXQgdGltaW5nX3doZWVsX25vdyA9IHRpbWluZ193aGVlbF9ub3dcblxubGV0IHNjaGVkdWxlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFNjaGVkdWxlZDtcbiAgZXZlbnQuYWxhcm0gPC0gVGltaW5nX3doZWVsLmFkZCB0LmV2ZW50cyB+YXQ6ZXZlbnQuYXQgKGV2ZW50IHw+IEpvYl9vcl9ldmVudC5vZl9ldmVudClcbjs7XG5cbmxldCByZW1vdmVfZnJvbV9maXJlZCB0IChldmVudCA6IEV2ZW50LnQpIH5uZXdfc3RhdHVzID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBldmVudCBtb3N0X3JlY2VudGx5X2ZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIHQubW9zdF9yZWNlbnRseV9maXJlZCA8LSBFdmVudC5PcHRpb24uZmlyc3Rfc29tZSBldmVudC5uZXh0X2ZpcmVkIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQucHJldl9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgICB8IFNvbWUgcHJldiAtPiBwcmV2Lm5leHRfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gZXZlbnQucHJldl9maXJlZFxuICBpblxuICBldmVudC5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IG5ld19zdGF0dXNcbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIEV2ZW50XG5cbiAgbGV0IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgIDsgYXRcbiAgICA7IGNhbGxiYWNrXG4gICAgOyBleGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgICA7IGludGVydmFsXG4gICAgOyBuZXh0X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHByZXZfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc3RhdHVzID0gVW5zY2hlZHVsZWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGFkZCB0IGV2ZW50ID1cbiAgICBpZiBUaW1lX25zLiggPD0gKSBldmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgIHRoZW4gZmlyZSB0IGV2ZW50XG4gICAgZWxzZSBzY2hlZHVsZSB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgPVxuICAgIGxldCBldmVudCA9IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrIGluXG4gICAgYWRkIHQgZXZlbnQ7XG4gICAgZXZlbnRcbiAgOztcblxuICBsZXQgYXQgdCBhdCBjYWxsYmFjayA9IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuXG4gIGxldCBhZnRlciB0IHNwYW4gY2FsbGJhY2sgPVxuICAgIGNyZWF0ZV9hbmRfYWRkIHQgfmF0OihUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbikgfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuID1cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gYWxhcm1fcHJlY2lzaW9uIHQgaW5cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8ICkgc3BhbiBhbGFybV9wcmVjaXNpb25cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW50ZXJ2YWwgc3BhbiBzbWFsbGVyIHRoYW4gYWxhcm0gcHJlY2lzaW9uXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXG4gICAgICAgICAgICAoYWxhcm1fcHJlY2lzaW9uIDogVGltZV9ucy5TcGFuLnQpXVxuICA7O1xuXG4gIGxldCBhdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDoobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKSB+Y2FsbGJhY2tcbiAgOztcblxuICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IChldmVudCA6IHQpIDogQWJvcnRfcmVzdWx0LnQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgU29tZSAoXyA6IFRpbWVfbnMuU3Bhbi50KSAtPlxuICAgICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgICAgIGV2ZW50LnN0YXR1cyA8LSBVbnNjaGVkdWxlZDtcbiAgICAgICAgIE9rKVxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBPa1xuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFVuc2NoZWR1bGVkO1xuICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gICAgICBPa1xuICAgIHwgVW5zY2hlZHVsZWQgLT4gUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGV2ZW50ID0gaWdub3JlIChhYm9ydCB0IGV2ZW50IDogQWJvcnRfcmVzdWx0LnQpXG5cbiAgbGV0IGFib3J0X2V4biB0IGV2ZW50ID1cbiAgICBtYXRjaCBhYm9ydCB0IGV2ZW50IHdpdGhcbiAgICB8IE9rIC0+ICgpXG4gICAgfCByZWFzb24gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuYWJvcnRfZXhuXSBjYW5ub3QgYWJvcnQgZXZlbnRcIlxuICAgICAgICAgICAgKHJlYXNvbiA6IEFib3J0X3Jlc3VsdC50KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHQgY2FsbGJhY2sgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQ6VGltZV9ucy5lcG9jaCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgaXNfc2NoZWR1bGVkIChldmVudCA6IHQpID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgRmlyZWQgLT4gdHJ1ZVxuICAgIHwgVW5zY2hlZHVsZWQgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCAoZXZlbnQgOiB0KSBhdCB+aW50ZXJ2YWwgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCAoSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgRmlyZWQpIGFzIHN0YXR1cyAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJXNleHAgXCJjYW5ub3Qgc2NoZWR1bGUgYW4gZXZlbnQgd2l0aCBzdGF0dXNcIiwgKHN0YXR1cyA6IEV2ZW50LlN0YXR1cy50KV1cbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIGludGVydmFsO1xuICAgICAgYWRkIHQgZXZlbnQ7XG4gICAgICBPayAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV9hdCB0IGV2ZW50IGF0ID0gc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCBhdCB+aW50ZXJ2YWw6Tm9uZVxuICBsZXQgc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVydmFscyB0IGV2ZW50IHNwYW4gPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgKG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbilcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hdCB0IGV2ZW50IGF0IDogdW5pdCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+XG4gICAgICAoKiBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgZXZlbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBbZmlyZWRdLiAqKVxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGlmIFRpbWVfbnMuKCA+ICkgYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgIHRoZW4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgdC5ldmVudHMgZXZlbnQuYWxhcm0gfmF0XG4gICAgICBlbHNlIChcbiAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgICAgZmlyZSB0IGV2ZW50KVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgIGFkZCB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuZW5kXG5cbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hZnRlciB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxubGV0IHJ1bl9hdCB0IGF0IGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hdCB0IGF0IGNhbGxiYWNrIDogRXZlbnQudClcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgaWdub3JlIChFdmVudC5hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbjs7XG5cbnR5cGUgc2VuZF9leG4gPSBNb25pdG9yMC50IC0+ID9iYWNrdHJhY2U6WyBgR2V0IHwgYFRoaXMgb2YgQmFja3RyYWNlLnQgXSAtPiBleG4gLT4gdW5pdFxuXG5sZXQgcnVuX2ZpcmVkX2V2ZW50cyB0IH4oc2VuZF9leG4gOiBzZW5kX2V4biBvcHRpb24pID1cbiAgbGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGluXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBGaXJlZCAtPlxuICAgICAgICAgbGV0IG5ld19zdGF0dXMgPVxuICAgICAgICAgICBtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiAoVW5zY2hlZHVsZWQgOiBFdmVudC5TdGF0dXMudClcbiAgICAgICAgICAgfCBTb21lIF8gLT4gKEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCA6IEV2ZW50LlN0YXR1cy50KVxuICAgICAgICAgaW5cbiAgICAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM7XG4gICAgICAgICAoKiBXZSBzZXQgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgW2V2ZW50LmNhbGxiYWNrXSBydW5zIGluIHRoZSBzYW1lIGNvbnRleHRcbiAgICAgICAgICAgIHRoYXQgd2FzIGluIHBsYWNlIHdoZW4gW2V2ZW50XSB3YXMgY3JlYXRlZC4gKilcbiAgICAgICAgIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgICAgKCogQW55IG1vZGlmaWNhdGlvbiBvZiBbc3RhdHVzXSBiZWxvdyBuZWVkcyB0byBmaXJzdCBjaGVjayB0aGF0IHRoZSBldmVudCBpc1xuICAgICAgICAgICAgc3RpbGwgW0hhcHBlbmluZ19wZXJpb2RpY19ldmVudF0uIElmIHRoZSBldmVudCBzdGF0dXMgaXMgbm90XG4gICAgICAgICAgICBbSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XSB0aGVuIHRoZSBldmVudCdzIGNhbGxiYWNrIG11c3QgaGF2ZSByZXNjaGVkdWxlZCB0aGVcbiAgICAgICAgICAgIGV2ZW50LiBJbiB0aGF0IGNhc2UsIGRvIG5vdCBzZXQgdGhlIHN0YXR1cyBvciBhdHRlbXB0IHRvIHJlc2NoZWR1bGUgYVxuICAgICAgICAgICAgcmVwZWF0aW5nIGV2ZW50LlxuXG4gICAgICAgICAgICBUaGlzIGNvZGUgY291bGQgYmUgbXVjaCBzaW1wbGVyIGlmIHdlIGltbWVkaWF0ZWx5IHJlc2NoZWR1bGVkIHRoZSBldmVudCBiZWZvcmVcbiAgICAgICAgICAgIHJ1bm5pbmcgdGhlIGNhbGxiYWNrIChubyBuZWVkIGZvciB0aGUgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHN0YXRlIHRoZW4pLlxuICAgICAgICAgICAgT25lIHJlYXNvbiB3ZSBkb24ndCBkbyB0aGF0IGlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBhdXRvbWF0aWNhbGx5IHJlc2NoZWR1bGVcbiAgICAgICAgICAgIGEgcGVyaW9kaWMgZXZlbnQgaWYgaXRzIGNhbGxiYWNrIHJhaXNlcy4gKilcbiAgICAgICAgIChtYXRjaCBldmVudC5jYWxsYmFjayAoKSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAobWF0Y2ggc2VuZF9leG4gd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIEVycm9yLm9mX2V4biBleG4gOjogdC5hZHZhbmNlX2Vycm9yc1xuICAgICAgICAgICAgIHwgU29tZSBzZW5kX2V4biAtPlxuICAgICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgICAgICAgIHNlbmRfZXhuIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJhY2t0cmFjZSkpO1xuICAgICAgICAgICAgRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgfCAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGV2ZW50LmludGVydmFsIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAgfCBTb21lIGludGVydmFsIC0+XG4gICAgICAgICAgICAgICBpZiBFdmVudC5TdGF0dXMuZXF1YWwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50LnN0YXR1c1xuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICgqIFRoZSBldmVudCdzIGNhbGxiYWNrIGRpZCBub3QgcmVzY2hlZHVsZSB0aGUgZXZlbnQuIFNvIHJlc2NoZWR1bGUgdGhlXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdGluZyB0aW1lciBiYXNlZCBvbiB0aGUgbGFzdCBbYXRdIHRpbWUuICopXG4gICAgICAgICAgICAgICAgIGV2ZW50LmF0XG4gICAgICAgICAgICAgICAgIDwtIFRpbWVfbnMubmV4dF9tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgfmJhc2U6ZXZlbnQuYXRcbiAgICAgICAgICAgICAgICAgICAgICB+YWZ0ZXI6KHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgICAgICAgICAgICAgICAgICB+aW50ZXJ2YWw7XG4gICAgICAgICAgICAgICAgIHNjaGVkdWxlIHQgZXZlbnQpKSk7XG4gICAgICAgICB0cnVlKVxuICBkb1xuICAgICgpXG4gIGRvbmU7XG4gIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCBhbnlfZmlyZWRfZXZlbnRzX3RvX3J1biB0ID0gRXZlbnQuT3B0aW9uLmlzX3NvbWUgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG4gPVxuICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayB0LmV2ZW50cyB+dG9fIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgdC5ldmVudHMgfmhhbmRsZV9maXJlZDp0LmhhbmRsZV9maXJlZDtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4biA9XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxuOztcblxubGV0IHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4biA9XG4gIGlmIHQuYW1fYWR2YW5jaW5nXG4gIHRoZW5cbiAgICByYWlzZV9zIFslc2V4cCBcImNhbm5vdCBjYWxsIFthZHZhbmNlX2J5X2FsYXJtc10gb3IgW2FkdmFuY2VfZGlyZWN0bHldIGZyb20gY2FsbGJhY2tcIl07XG4gIHQuYW1fYWR2YW5jaW5nIDwtIHRydWU7XG4gIChtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgIHwgW10gLT4gKClcbiAgIHwgXyAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdKTtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGZpbmlzaF9hZHZhbmNpbmcgdCA9XG4gIHQuYW1fYWR2YW5jaW5nIDwtIGZhbHNlO1xuICBtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiBPayAoKVxuICB8IGVycm9ycyAtPlxuICAgIHQuYWR2YW5jZV9lcnJvcnMgPC0gW107XG4gICAgRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJyb3JzKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWUgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXzptaW5fYWxhcm1fdGltZSB+c2VuZF9leG4pXG4gIGRvbmU7XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXNfYnkgdCBieSA9IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dF9hbGFybV9maXJlc19hdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbmV4dF9hbGFybV9maXJlc19hdCB0b19cbiAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogV2UgdXNlIHRoZSBhY3R1YWwgYWxhcm0gdGltZSwgcmF0aGVyIHRoYW4gW25leHRfYWxhcm1fZmlyZXNfYXRdLCBzbyBhcyBub3QgdG9cbiAgICAgICAgICAgZXhwb3NlIChvciBhY2N1bXVsYXRlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGgpIHRoZSBwcmVjaXNpb24gb2ZcbiAgICAgICAgICAgW1RpbWluZ193aGVlbF0uICopXG4gICAgICAgIGFkdmFuY2VfaW50ZXJuYWxcbiAgICAgICAgICB0XG4gICAgICAgICAgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpXG4gICAgICAgICAgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gIGxldCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3doZWVsX2ludGVydmFsIHQgPVxuICBUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzXG47O1xuXG5sZXQgaGFzX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlcjBcbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxubW9kdWxlIEV2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIEpvYl9vcl9ldmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLkpvYl9vcl9ldmVudFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5zY2hlZHVsZXJcblxubW9kdWxlIEl2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5JdmFyXG5cbiAgbGV0IGNyZWF0ZV93aXRoX2NlbGwgY2VsbCA9IHsgY2VsbCB9XG4gIGxldCBjcmVhdGUgKCkgPSBjcmVhdGVfd2l0aF9jZWxsIEVtcHR5XG5cbiAgbGV0IGNyZWF0ZV9mdWxsICh0eXBlIGEpIChhIDogYSkgPVxuICAgICgqIFdlIGFsbG9jYXRlIGFuIGltbXV0YWJsZSBpdmFyIGFuZCB0aGVuIGNhc3QgaXQgdG8gYSBtdXRhYmxlIGl2YXIuICBUaGUgaW1tdXRhYmlsaXR5XG4gICAgICAgYWxsb3dzIE9DYW1sIHRvIHN0YXRpY2FsbHkgYWxsb2NhdGUgdGhlIGl2YXIgaWYgW2FdIGlzIGNvbnN0YW50LiAgVGhpcyBjYXN0IGlzIHNhZmVcbiAgICAgICBiZWNhdXNlIGEgZnVsbCBpdmFyIGlzIG5ldmVyIG11dGF0ZWQuICBXZSBhbHNvIGJlbGlldmUgdGhhdCB3ZSB3aWxsIG5vdCB0cmlnZ2VyXG4gICAgICAgZmxhbWJkYSB0byBzcHVyaW91c2x5IHJlcG9yIHdhcm5pbmcgNTksIG11dGF0aW9uIG9mIGtub3duIGltbXV0YWJsZSBkYXRhLiAgQWxsXG4gICAgICAgbXV0YXRpb25zIG9mIGFuIGl2YXIgY2VsbCwgaS5lLiBbZm9vLmNlbGwgPC0gLi4uXSwgYXJlIGRpcmVjdGx5IHByZWNlZGVkIGJ5IGFcbiAgICAgICBbbWF0Y2ggZm9vLmNlbGxdIHRoYXQgcHJldmVudHMgdGhlIFtGdWxsXSBjYXNlIGZyb20gcmVhY2hpbmcgdGhlIG1vZGlmaWNhdGlvbi4gIFNvXG4gICAgICAgZmxhbWJkYSBzaG91bGQgYWx3YXlzIGVsaW1pbmF0ZSB0aGUgW2Zvby5jZWxsIDwtIC4uLl0gb2YgYSBjb25zdGFudCBbRnVsbF0gaXZhcixcbiAgICAgICBhbmQgbm90IHdhcm4uICopXG4gICAgKE9iai5tYWdpYyA6IGEgSW1tdXRhYmxlLnQgLT4gYSB0KSB7IGNlbGwgPSBGdWxsIGEgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuQnZhclxuXG4gIGxldCBjcmVhdGUgKCkgPSBvZl9yZXByIHsgaGFzX2FueV93YWl0ZXJzID0gZmFsc2U7IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSB9XG5lbmRcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA9IHN0cnVjdFxuICBtb2R1bGUgRXhlY19yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyIH5leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KSB+ZXhlYzppZ25vcmUpXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gU2NoZWR1bGVyMC50ID1cbiAgeyAoKiBbY2hlY2tfYWNjZXNzXSBvcHRpb25hbGx5IGhvbGRzIGEgZnVuY3Rpb24gdG8gcnVuIHRvIGNoZWNrIHdoZXRoZXIgYWNjZXNzIHRvIFt0XSBpc1xuICAgICAgIGN1cnJlbnRseSBhbGxvd2VkLiAgSXQgaXMgdXNlZCB0byBkZXRlY3QgaW52YWxpZCBhY2Nlc3MgdG8gdGhlIHNjaGVkdWxlciBmcm9tIGFcbiAgICAgICB0aHJlYWQuICopXG4gICAgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAoKiBUaGUgc2NoZWR1bGVyIGNhbGxzIFtnb3RfdW5jYXVnaHRfZXhuXSB3aGVuIGFuIGV4Y2VwdGlvbiBidWJibGVzIHRvIHRoZSB0b3Agb2YgdGhlXG4gICAgIG1vbml0b3IgdHJlZSB3aXRob3V0IGJlaW5nIGhhbmRsZWQuICBUaGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdG8gbmV2ZXIgcnVuIGFub3RoZXJcbiAgICAgam9iIGFmdGVyIHRoaXMgYnkgY2FsbGluZyBbY2xlYXJdIGFuZCBiZWNhdXNlIFtlbnF1ZXVlX2pvYl0gd2lsbCBuZXZlciBhZGQgYW5vdGhlclxuICAgICBqb2IuICopXG4gIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgYXJyYXlcbiAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgYXJyYXlcbiAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIHRpbWVfc291cmNlIDogcmVhZF93cml0ZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50XG4gICgqIFtleHRlcm5hbF9qb2JzXSBpcyBhIHF1ZXVlIG9mIGFjdGlvbnMgc2VudCBmcm9tIG91dHNpZGUgb2YgYXN5bmMuICBUaGlzIGlzIGZvciB0aGVcbiAgICAgY2FzZSB3aGVyZSB3ZSB3YW50IHRvIHNjaGVkdWxlIGEgam9iIG9yIGZpbGwgYW4gaXZhciBmcm9tIGEgY29udGV4dCB3aGVyZSBpdCBpcyBub3RcbiAgICAgc2FmZSB0byBydW4gYXN5bmMgY29kZSwgYmVjYXVzZSB0aGUgYXN5bmMgbG9jayBpc24ndCBoZWxkLiAgRm9yIGluc3RhbmNlOiAtIGluIGFuXG4gICAgIE9DYW1sIGZpbmFsaXplciwgYXMgdGhleSBjYW4gcnVuIGF0IGFueSB0aW1lIGluIGFueSB0aHJlYWQuXG5cbiAgICAgVGhlIHdheSB0byBkbyBpdCBpcyB0byBxdWV1ZSBhIHRodW5rIGluIFtleHRlcm5hbF9qb2JzXSBhbmQgY2FsbFxuICAgICBbdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Igbm90aWZ5aW5nIHRoZSBzY2hlZHVsZXJcbiAgICAgdGhhdCBuZXcgYWN0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG4gICAgIFdoZW4gdXNpbmcgQXN5bmMgb24gdW5peCwgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBpcyBzZXQgaW4gW0FzeW5jX3VuaXhdXG4gICAgIHRvIGNhbGwgW0ludGVycnVwdG9yLnRocmVhZF9zYWZlX2ludGVycnVwdF0sIHdoaWNoIHdpbGwgd2FrZSB1cCB0aGVcbiAgICAgW0FzeW5jX3VuaXhdIHNjaGVkdWxlciBhbmQgcnVuIGEgY3ljbGUuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaG9vayBtaWdodCBiZSB1c2VkIGluIG90aGVyIGNvbnRleHQgKGpzX29mX29jYW1sLCBtaXJhZ2UpLlxuXG4gICAgIFdoZW4gcnVubmluZyBhIGN5Y2xlLCB3ZSBwdWxsIGV4dGVybmFsIGFjdGlvbnMgYXQgZXZlcnkgam9iIGFuZCBwZXJmb3JtIHRoZW1cbiAgICAgaW1tZWRpYXRlbHkuICopXG4gIDsgZXh0ZXJuYWxfam9icyA6IEV4dGVybmFsX2pvYi50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICgqIFtqb2JfcXVldWVkX2hvb2tdIGFuZCBbZXZlbnRfYWRkZWRfaG9va10gYWltIHRvIGJlIHVzZWQgYnkganNfb2Zfb2NhbWwuICopXG4gICgqIFdlIHVzZSBbXyBvcHRpb25dIGhlcmUgYmVjYXVzZSB0aG9zZSBob29rcyB3aWxsIG5vdCBiZSBzZXQgaW4gdGhlIGNvbW1vbiBjYXNlXG4gICAgIGFuZCB3ZSB3YW50IHRvIGF2b2lkIGV4dHJhIGZ1bmN0aW9uIGNhbGxzLiAqKVxuICA7IG11dGFibGUgam9iX3F1ZXVlZF9ob29rIDogKFByaW9yaXR5LnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIHlpZWxkIDogKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSlcbiAgOyBtdXRhYmxlXG4gICAgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOlxuICAgICAgKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSAoKiBjb25maWd1cmF0aW9uKikpXG4gIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuX3Vud3JhcHBlZCA9IHVuY2F1Z2h0X2V4blxuXG5sZXQgdW5jYXVnaHRfZXhuIHQgPVxuICBtYXRjaCB0LnVuY2F1Z2h0X2V4biB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoZXhuLCBzZXhwKSAtPlxuICAgIFNvbWUgKEVycm9yLmNyZWF0ZSBcInVuaGFuZGxlZCBleGNlcHRpb25cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XSlcbjs7XG5cbmxldCBudW1fcGVuZGluZ19qb2JzIHQgPVxuICBKb2JfcXVldWUubGVuZ3RoIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgKyBKb2JfcXVldWUubGVuZ3RoIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBudW1fam9ic19ydW4gdCA9XG4gIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICArIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgdCA9IHQubGFzdF9jeWNsZV9udW1fam9ic1xuXG5sZXQgdW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsIH5zdWJsaXN0OnNtYWxsIGxhcmdlID1cbiAgbGV0IGxhcmdlID0gQXJyYXkudG9fbGlzdCBsYXJnZSBpblxuICBsZXQgcmVtb3ZlIGEgeCA9XG4gICAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSBhIH5mOihmdW4geSAtPiBub3QgKGVxdWFsIHkgeCkpIHdpdGhcbiAgICB8IF8sIFtdIC0+IE5vbmVcbiAgICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbiAgaW5cbiAgT3B0aW9uLmlzX3NvbWVcbiAgICAoTGlzdC5mb2xkIHNtYWxsIH5pbml0OihTb21lIGxhcmdlKSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgT3B0aW9uLmJpbmQgYWNjIH5mOihmdW4gbCAtPiByZW1vdmUgbCB4KSkpXG47O1xuXG5sZXQgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgdGFibGUgYXJyYXkgPVxuICAoKiBZb3UgY2FuIGluIGZhY3QgaGF2ZSBob29rcyBpbiB0aGUgbGlzdCBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBlbnRyeSBpblxuICAgICB0aGUgdGFibGUuIFN1Y2ggaG9va3MgY2FuIG5ldmVyIGJlIHJlbW92ZWQuICopXG4gIGFzc2VydCAodW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsOnBoeXNfZXF1YWwgfnN1Ymxpc3Q6KEhhc2h0YmwuZGF0YSB0YWJsZSkgYXJyYXkpXG47O1xuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNoZWNrX2FjY2VzczppZ25vcmVcbiAgICAgIH5qb2JfcG9vbDooY2hlY2sgSm9iX3Bvb2wuaW52YXJpYW50KVxuICAgICAgfm5vcm1hbF9wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfmxvd19wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIHEgLT4gRGVxdWUuaXRlciBxIH5mOlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5pbnZhcmlhbnQpKVxuICAgICAgfm1haW5fZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudClcbiAgICAgIH5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+dW5jYXVnaHRfZXhuOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bmNhdWdodF9leG4gLT5cbiAgICAgICAgICAgaWYgaXNfc29tZSB1bmNhdWdodF9leG4gdGhlbiBhc3NlcnQgKG51bV9wZW5kaW5nX2pvYnMgdCA9IDApKSlcbiAgICAgIH5jeWNsZV9jb3VudDooY2hlY2sgKGZ1biBjeWNsZV9jb3VudCAtPiBhc3NlcnQgKGN5Y2xlX2NvdW50ID49IDApKSlcbiAgICAgIH5jeWNsZV9zdGFydDppZ25vcmVcbiAgICAgIH5pbl9jeWNsZTppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0KSlcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQpKVxuICAgICAgfmxhc3RfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH50b3RhbF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfmxhc3RfY3ljbGVfbnVtX2pvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGxhc3RfY3ljbGVfbnVtX2pvYnMgLT4gYXNzZXJ0IChsYXN0X2N5Y2xlX251bV9qb2JzID49IDApKSlcbiAgICAgIH50aW1lX3NvdXJjZTpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5SZWFkX3dyaXRlLmludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIGpvYiAtPlxuICAgICAgICAgICAgICBhc3NlcnQgKFBvb2wucG9pbnRlcl9pc192YWxpZCB0LmpvYl9wb29sIGpvYikpKSlcbiAgICAgIH5leHRlcm5hbF9qb2JzOmlnbm9yZVxuICAgICAgfnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rOmlnbm9yZVxuICAgICAgfmpvYl9xdWV1ZWRfaG9vazppZ25vcmVcbiAgICAgIH5ldmVudF9hZGRlZF9ob29rOmlnbm9yZVxuICAgICAgfnlpZWxkOmlnbm9yZVxuICAgICAgfnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluOmlnbm9yZVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6aWdub3JlXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6aWdub3JlXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pICh0IDogdCldXG47O1xuXG5sZXQgZnJlZV9qb2IgdCBqb2IgPSBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2JcblxubGV0IGVucXVldWUgdCAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSBmIGEgPVxuICAoKiBJZiB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLCB3ZSBkb24ndCBhZGQgdGhlIGpvYiwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBhbnkgam9ic1xuICAgICB0byBydW4gb25jZSB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLiAqKVxuICBpZiBpc19ub25lIHQudW5jYXVnaHRfZXhuXG4gIHRoZW4gKFxuICAgIGxldCBwcmlvcml0eSA9IGV4ZWN1dGlvbl9jb250ZXh0LnByaW9yaXR5IGluXG4gICAgbGV0IGpvYl9xdWV1ZSA9XG4gICAgICBtYXRjaCBwcmlvcml0eSB3aXRoXG4gICAgICB8IE5vcm1hbCAtPiB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICAgICB8IExvdyAtPiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgaW5cbiAgICBKb2JfcXVldWUuZW5xdWV1ZSBqb2JfcXVldWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIG1hdGNoIHQuam9iX3F1ZXVlZF9ob29rIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPiBmIHByaW9yaXR5KVxuOztcblxubGV0IGVucXVldWVfam9iIHQgam9iIH5mcmVlX2pvYiA9XG4gIGxldCBqb2JfcG9vbCA9IHQuam9iX3Bvb2wgaW5cbiAgZW5xdWV1ZVxuICAgIHRcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MClcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MSlcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50Mik7XG4gIGlmIGZyZWVfam9iIHRoZW4gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG47O1xuXG5sZXQgaGFuZGxlX2ZpcmVkICh0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCkgam9iX29yX2V2ZW50ID1cbiAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICB8IEpvYiwgam9iIC0+IGVucXVldWVfam9iIHRpbWVfc291cmNlLnNjaGVkdWxlciBqb2IgfmZyZWVfam9iOnRydWVcbiAgfCBFdmVudCwgZXZlbnQgLT4gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuZmlyZSB0aW1lX3NvdXJjZSBldmVudFxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICBsZXQgcmVjIHQgPVxuICAgIHsgY2hlY2tfYWNjZXNzID0gTm9uZVxuICAgIDsgam9iX3Bvb2wgPSBKb2JfcG9vbC5jcmVhdGUgKClcbiAgICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzID0gRGVxdWUuY3JlYXRlICgpXG4gICAgOyBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IHVuY2F1Z2h0X2V4biA9IE5vbmVcbiAgICA7IGN5Y2xlX3N0YXJ0ID0gbm93XG4gICAgOyBjeWNsZV9jb3VudCA9IDBcbiAgICA7IGluX2N5Y2xlID0gZmFsc2VcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA9IFt8fF1cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kID0gW3x8XVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBsYXN0X2N5Y2xlX3RpbWUgPSBzZWMgMC5cbiAgICA7IGxhc3RfY3ljbGVfbnVtX2pvYnMgPSAwXG4gICAgOyB0b3RhbF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgZXh0ZXJuYWxfam9icyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPSBpZ25vcmVcbiAgICA7IGpvYl9xdWV1ZWRfaG9vayA9IE5vbmVcbiAgICA7IGV2ZW50X2FkZGVkX2hvb2sgPSBOb25lXG4gICAgOyB5aWVsZCA9IEJ2YXIuY3JlYXRlICgpXG4gICAgOyB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA9IEJ2YXIuY3JlYXRlICgpICgqIGNvbmZpZ3VyYXRpb24gKilcbiAgICA7IGNoZWNrX2ludmFyaWFudHMgPSBBc3luY19rZXJuZWxfY29uZmlnLmNoZWNrX2ludmFyaWFudHNcbiAgICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgICAgQXN5bmNfa2VybmVsX2NvbmZpZy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBBc3luY19rZXJuZWxfY29uZmlnLnJlY29yZF9iYWNrdHJhY2VzXG4gICAgfVxuICBhbmQgZXZlbnRzID1cbiAgICBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6QXN5bmNfa2VybmVsX2NvbmZpZy50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydDpub3dcbiAgYW5kIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gdHJ1ZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgaXNfZGVhZCB0ID0gaXNfc29tZSB0LnVuY2F1Z2h0X2V4blxubGV0IHNldF9jaGVja19hY2Nlc3MgdCBmID0gdC5jaGVja19hY2Nlc3MgPC0gZlxuXG5sZXQgYmFja3RyYWNlX29mX2ZpcnN0X2pvYiB0ID1cbiAgT3B0aW9uLmZpcnN0X3NvbWVcbiAgICAoSm9iX3F1ZXVlLmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMpXG4gICAgKEpvYl9xdWV1ZS5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB0Lmxvd19wcmlvcml0eV9qb2JzKVxuOztcblxubGV0IHRfcmVmID1cbiAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGNyZWF0ZSB3aXRoXG4gIHwgT2sgdCAtPiByZWYgdFxuICB8IEVycm9yIGV4biAtPlxuICAgIERlYnVnLmxvZyBcIkFzeW5jIGNhbm5vdCBjcmVhdGUgaXRzIHJhdyBzY2hlZHVsZXJcIiBleG4gWyVzZXhwX29mOiBleG5dO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGNoZWNrX2FjY2VzcyB0ID1cbiAgbWF0Y2ggdC5jaGVja19hY2Nlc3Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiAoKVxuOztcblxubGV0IHQgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICBjaGVja19hY2Nlc3MgdDtcbiAgdFxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCA9XG4gIGlmIHQucmVjb3JkX2JhY2t0cmFjZXNcbiAgdGhlbiBFeGVjdXRpb25fY29udGV4dC5yZWNvcmRfYmFja3RyYWNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICBlbHNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgeCA9XG4gIGxldCBvbGRfY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dDtcbiAgcHJvdGVjdHggfmYgeCB+ZmluYWxseTooZnVuIF8gLT4gc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgb2xkX2NvbnRleHQpXG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0IH5mID0gd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiAoKVxuXG5sZXQgY3JlYXRlX2pvYiAodHlwZSBhKSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIFBvb2wuaXNfZnVsbCB0LmpvYl9wb29sIHRoZW4gdC5qb2JfcG9vbCA8LSBQb29sLmdyb3cgdC5qb2JfcG9vbDtcbiAgUG9vbC5uZXczXG4gICAgdC5qb2JfcG9vbFxuICAgIGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgKE9iai5tYWdpYyAoZiA6IGEgLT4gdW5pdCkgOiBPYmoudCAtPiB1bml0KVxuICAgIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGdvdF91bmNhdWdodF9leG4gdCBleG4gc2V4cCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiZ290X3VuY2F1Z2h0X2V4blwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdO1xuICBMaXN0Lml0ZXIgWyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzOyB0Lmxvd19wcmlvcml0eV9qb2JzIF0gfmY6Sm9iX3F1ZXVlLmNsZWFyO1xuICB0LnVuY2F1Z2h0X2V4biA8LSBTb21lIChleG4sIHNleHApXG47O1xuXG4oKiBbc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gZW5hYmxlcyBzdWJzZXF1ZW50IGNhbGxzIG9mIFtydW5fam9ic11cbiAgIHRvIHJ1biB1cCB0byBbbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gam9icyBvZiBlYWNoIHByaW9yaXR5IGxldmVsLiAqKVxubGV0IHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgPVxuICBsZXQgbiA9IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IGluXG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyBuO1xuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubG93X3ByaW9yaXR5X2pvYnMgblxuOztcblxuKCogW3J1bl9qb2JzIHRdIHJlbW92ZXMgam9icyBmcm9tIFt0XSBvbmUgYXQgYSB0aW1lIGFuZCBydW5zIHRoZW0sIHN0b3BwaW5nIGFzIHNvb25cbiAgIGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gaXMgcmFpc2VkLCBvciB3aGVuIG5vIG1vcmUgam9icyBjYW4gYmUgcnVuIGF0IGFueSBwcmlvcml0eSxcbiAgIGFzIHBlciBbfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldLiAqKVxubGV0IHJlYyBydW5fam9icyB0ID1cbiAgbWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgfCBPayAoKSAtPlxuICAgIChtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5sb3dfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICB8IE9rICgpIC0+XG4gICAgICAgaWYgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgIHx8IEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICAgICB0aGVuIHJ1bl9qb2JzIHRcbiAgICAgICBlbHNlIE9rICgpKVxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgc3RhcnRfY3ljbGVcbiAgICB0XG4gICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6XG4gICAgICAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBJbnQubWF4X3ZhbHVlKTtcbiAgbWF0Y2ggcnVuX2pvYnMgdCB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoZXhuLCBfYmFja3RyYWNlKSAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBjcmVhdGVfdGltZV9zb3VyY2VcbiAgICAgID8odGltaW5nX3doZWVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZylcbiAgICAgIH5ub3dcbiAgICAgICgpXG4gID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBldmVudHMgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93IGluXG4gIGxldCByZWMgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSBmYWxzZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0aW1lX3NvdXJjZVxuOztcblxubGV0IHdhbGxfY2xvY2sgKCkgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5yZWFkX29ubHkgKHQgKCkpLnRpbWVfc291cmNlXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgQ2VsbCA9IFR5cGVzLkNlbGxcblxudHlwZSBhbnkgPVxuICBbIGBFbXB0eVxuICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICB8IGBGdWxsXG4gIHwgYEluZGlyXG4gIF1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSXZhci50ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIGFueSkgY2VsbCB9XG5cbigqIFRoZSBbJ2JdIGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBjb25zdHJ1Y3Rvci4gIFRoaXMgYWxsb3dzIHVzIHRvIHdyaXRlIGZ1bmN0aW9ucyB0aGF0XG4gICB0YWtlIG9ubHkgb25lIG9mIHRoZSBjb25zdHJ1Y3RvcnMsIHdpdGggbm8gcnVudGltZSB0ZXN0LlxuXG4gICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGRpcmVjdGVkIGdyYXBoIHdpdGggaXZhcnMgYXMgbm9kZXMgYW5kIFtJbmRpcl1zIGFzXG4gICBlZGdlcyBpcyBhY3ljbGljLiAgVGhlIG9ubHkgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIGFuIFtJbmRpcl0gYXJlIFtzcXVhc2hdIGFuZFxuICAgW2Nvbm5lY3RdLCBhbmQgZm9yIHRob3NlLCB0aGUgdGFyZ2V0IG9mIHRoZSBbSW5kaXJdIGlzIGFsd2F5cyBhIG5vbi1bSW5kaXJdLiAgVGh1cywgdGhlXG4gICBuZXdseSBhZGRlZCBlZGdlcyBhcmUgbmV2ZXIgcGFydCBvZiBhIGN5Y2xlLiAqKVxuYW5kICgnYSwgJ2IpIGNlbGwgPSAoJ2EsICdiKSBUeXBlcy5DZWxsLnQgPVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgIHsgKCogW3J1bl0gaXMgbXV0YWJsZSBzbyB3ZSBjYW4gc2V0IGl0IHRvIFtpZ25vcmVdIHdoZW4gdGhlIGhhbmRsZXIgaXMgcmVtb3ZlZC5cbiAgICAgICAgICAgVGhpcyBpcyB1c2VkIHdoZW4gd2UgaW5zdGFsbCBhIGhhbmRsZXIgb24gYSBmdWxsIGl2YXIgc2luY2UgaXQgaXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgYWRkZWQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgICAgICAgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbcHJldl0gYW5kIFtuZXh0XSBjaXJjdWxhcmx5IGRvdWJseSBsaW5rIGFsbCBoYW5kbGVycyBvZiB0aGUgc2FtZSBpdmFyLiAqKVxuICAgICAgICBtdXRhYmxlIHByZXYgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICB9XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgY2VsbFxuICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgY2VsbFxuICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIGNlbGxcbiAgfCBJbmRpciA6ICdhIHQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgY2VsbFxuXG5tb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcblxuICBsZXQgcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucnVuXG4gIGxldCBleGVjdXRpb25fY29udGV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LmV4ZWN1dGlvbl9jb250ZXh0XG4gIGxldCBwcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucHJldlxuICBsZXQgbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0Lm5leHRcbiAgbGV0IHNldF9ydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnJ1biA8LSB4XG4gIGxldCBzZXRfcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucHJldiA8LSB4XG4gIGxldCBzZXRfbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQubmV4dCA8LSB4XG5cbiAgbGV0IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQgPVxuICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICAgICAgIHsgcnVuXG4gICAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dFxuICAgICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0XG4gICAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQgfVxuICAgICAgICAgaW5cbiAgICAgICAgIGgxIF19XG5cbiAgICAgICBIb3dldmVyIHRoZSBjb21waWxhdGlvbiBvZiByZWN1cnNpdmUgdmFsdWUgaW4gT0NhbWwgaXMgbm90IG9wdGltYWw6IHRoZSB2YWx1ZSBpc1xuICAgICAgIGFsbG9jYXRlZCB0d2ljZSBhbmQgY29waWVkIG9uY2UgKHdpdGggYSBsb29wIGNhbGxpbmcgY2FtbF9tb2RpZnkpLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWNlc3NhcnkgZm9yIHNpbXBsZSByZWN1cnNpdmUgZGVmaW5pdGlvbnMgbGlrZSB0aGlzIG9uZS5cblxuICAgICAgIEluc3RlYWQgd2UgYWxsb2NhdGUgdGhlIHZhbHVlIHdpdGggZHVtbXkgZmllbGRzIGFuZCB1cGRhdGUgdGhlbSBhZnRlci4gKilcbiAgICBsZXQgdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBPYmoubWFnaWMgTm9uZTsgbmV4dCA9IE9iai5tYWdpYyBOb25lIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0MSA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4xXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQyXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MiB9XG4gICAgICAgICBhbmQgdDIgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMlxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MVxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDEgfVxuICAgICAgICAgaW5cbiAgICAgICAgIHQxIF19ICopXG4gICAgbGV0IHQxID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMVxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgIDsgcHJldiA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIDsgbmV4dCA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCB0MiA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjI7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyOyBwcmV2ID0gdDE7IG5leHQgPSB0MSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0MSB0MjtcbiAgICBzZXRfbmV4dCB0MSB0MjtcbiAgICB0MVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0KTtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgbGV0IHQxID0gIXIgaW5cbiAgICAgIGFzc2VydCAocGh5c19lcXVhbCAocHJldiAobmV4dCB0MSkpIHQxKTtcbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdDEpO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IHBoeXNfZXF1YWwgdCAobmV4dCB0KVxuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IG4gPSByZWYgMSBpblxuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBpbmNyIG47XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lO1xuICAgICFuXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgdCBzY2hlZHVsZXIgdiA9IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciAoZXhlY3V0aW9uX2NvbnRleHQgdCkgKHJ1biB0KSB2XG5cbiAgbGV0IHNjaGVkdWxlX2pvYnMgdCB2ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBlbnF1ZXVlIHQgc2NoZWR1bGVyIHY7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGVucXVldWUgIXIgc2NoZWR1bGVyIHY7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID1cbiAgICBzZXRfcHJldiAobmV4dCB0KSAocHJldiB0KTtcbiAgICBzZXRfbmV4dCAocHJldiB0KSAobmV4dCB0KTtcbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0XG4gIDs7XG5cbiAgbGV0IGFkZCB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBwcmV2IHQ7IG5leHQgPSB0IH1cbiAgICBpblxuICAgIHNldF9uZXh0IChwcmV2IHQpIHJlc3VsdDtcbiAgICBzZXRfcHJldiB0IHJlc3VsdDtcbiAgICByZXN1bHRcbiAgOztcblxuICAoKiBbc3BsaWNlIHQxIHQyXSBjcmVhdGVzOlxuXG4gICAgIHt2XG4gICAgICAgLS0+IHQxIDwtLT4gLi4uIDwtLT4gbGFzdDEgPC0tPiB0MiA8LS0+IC4uLiA8LS0+IGxhc3QyIDwtLVxuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIHZ9ICopXG4gIGxldCBzcGxpY2UgdDEgdDIgPVxuICAgIGxldCBsYXN0MSA9IHByZXYgdDEgaW5cbiAgICBsZXQgbGFzdDIgPSBwcmV2IHQyIGluXG4gICAgc2V0X25leHQgbGFzdDEgdDI7XG4gICAgc2V0X25leHQgbGFzdDIgdDE7XG4gICAgc2V0X3ByZXYgdDEgbGFzdDI7XG4gICAgc2V0X3ByZXYgdDIgbGFzdDFcbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICBsZXQgZmlyc3QgPSBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgICBsZXQgcmVjIGxvb3AgcHJldiBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2V0X3ByZXYgZmlyc3QgcHJldlxuICAgICAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2OyBuZXh0ID0gZmlyc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgc2V0X25leHQgcHJldiB0O1xuICAgICAgICAgIGxvb3AgdCBsXG4gICAgICBpblxuICAgICAgbG9vcCBmaXJzdCBsO1xuICAgICAgU29tZSBmaXJzdFxuICA7O1xuXG4gIGxldCB0b19saXN0IGZpcnN0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IChydW4gdCwgZXhlY3V0aW9uX2NvbnRleHQgdCkgOjogYWNjIGluXG4gICAgICBpZiBwaHlzX2VxdWFsIHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIChwcmV2IHQpIGFjY1xuICAgIGluXG4gICAgbG9vcCAocHJldiBmaXJzdCkgW11cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IF8gKHQgOiBfIHQpID1cbiAgICBsZXQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuID0gXzsgZXhlY3V0aW9uX2NvbnRleHQ7IG5leHQgPSBfOyBwcmV2ID0gXyB9KSA9XG4gICAgICB0XG4gICAgaW5cbiAgICBbJW1lc3NhZ2UgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCldXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpdmFyID0gJ2EgdFxuXG4oKiBDb21waWxlZCBhcyB0aGUgaWRlbnRpdHkuICopXG5sZXQgY2VsbF9vZl9oYW5kbGVyIDogXyBIYW5kbGVyLnQgLT4gXyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyB4IC0+ICh4IDo+IChfLCBhbnkpIGNlbGwpXG47O1xuXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5sZXQgaW5kaXIgdCA9IHsgY2VsbCA9IEluZGlyIHQgfVxuXG5pbmNsdWRlIFNjaGVkdWxlci5JdmFyXG5cbigqIFtzcXVhc2ggdF0gcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gaXZhciBhdCB0aGUgZW5kIG9mIHRoZSAocG9zc2libHkgZW1wdHkpIGNoYWluIG9mXG4gICBbSW5kaXJdcyBzdGFydGluZyB3aXRoIFt0XSBhbmQgZW5zdXJlcyB0aGF0IGFsbCBbSW5kaXJdcyBhbG9uZyB0aGF0IGNoYWluIGFyZSByZXBsYWNlZFxuICAgd2l0aCBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGNoYWluLiAqKVxubGV0IHNxdWFzaCA9XG4gIGxldCByZWMgZm9sbG93IGluZGlyIHQgPVxuICAgICgqIFtpbmRpciA9IEluZGlyIHRdICopXG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIGFzIGluZGlyJyAtPiBmb2xsb3cgaW5kaXInIHQnXG4gICAgfCBfIC0+IGluZGlyXG4gIGluXG4gIGxldCByZWMgdXBkYXRlIHQgaW5kaXIgPVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgdC5jZWxsIDwtIGluZGlyO1xuICAgICAgdXBkYXRlIHQnIGluZGlyXG4gICAgfCBfIC0+IHRcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIChtYXRjaCB0Jy5jZWxsIHdpdGhcbiAgICAgICB8IEluZGlyIHQnJyBhcyBpbmRpciAtPiB1cGRhdGUgdCAoZm9sbG93IGluZGlyIHQnJylcbiAgICAgICB8IF8gLT4gdCcgKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzIGEgY2hhaW4gd2l0aCBhIHNpbmdsZSBbSW5kaXJdICopKVxuICAgIHwgXyAtPiB0XG47O1xuXG4oKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXNuJ3QgYW4gW0luZGlyXS4gKilcblxubGV0IGludmFyaWFudCBhX2ludmFyaWFudCB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhX2ludmFyaWFudCBhXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAoXywgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuaW52YXJpYW50IGhhbmRsZXJcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgOiBTZXhwLnQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IExpc3QgWyBBdG9tIFwiRnVsbFwiOyBzZXhwX29mX2EgYSBdXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBBdG9tIFwiRW1wdHlcIlxuOztcblxubGV0IHBlZWsgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gU29tZSBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBOb25lXG47O1xuXG5sZXQgdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICBmYWlsd2l0aCBpZl9lbXB0eV90aGVuX2ZhaWx3aXRoXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiSXZhci52YWx1ZV9leG4gY2FsbGVkIG9uIGVtcHR5IGl2YXJcIlxuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gZmFsc2VcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbjs7XG5cbmxldCBpc19mdWxsIHQgPSBub3QgKGlzX2VtcHR5IHQpXG5cbmxldCBmaWxsIHQgdiA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJdmFyLmZpbGwgb2YgZnVsbCBpdmFyXCIgKHQgOiBfIHQpXVxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBGdWxsIHZcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG47O1xuXG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCAoaGFuZGxlciA6IF8gSGFuZGxlci50KSA9XG4gIEhhbmRsZXIuc2V0X3J1biBoYW5kbGVyIGlnbm9yZTtcbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyAtPlxuICAgICgqIFRoZXNlIGFyZSBvbmx5IHBvc3NpYmxlIGlmIFtoYW5kbGVyXSB3YXMgYWxyZWFkeSByZW1vdmVkLiAgKilcbiAgICAoKVxuICB8IEZ1bGwgXyAtPlxuICAgICgqIFRoaXMgaXMgcG9zc2libGUgaWYgW3RdIHdhcyBmaWxsZWQgYmVmb3JlIHdlIHRyeSB0byByZW1vdmUgdGhlIGhhbmRsZXIuICBFLmcuXG4gICAgICAgW0RlZmVycmVkLmNob29zZV0gd2lsbCBkbyB0aGlzLiAqKVxuICAgICgpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBjZWxsIC0+XG4gICAgaWYgSGFuZGxlci5pc19zaW5nbGV0b24gaGFuZGxlclxuICAgIHRoZW4gdC5jZWxsIDwtIEVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGhhbmRsZXIgY2VsbCB0aGVuIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIubmV4dCBoYW5kbGVyKTtcbiAgICAgIEhhbmRsZXIudW5saW5rIGhhbmRsZXIpXG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dFxuICB8IEZ1bGwgdiAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgKCogW3J1bl0gY2FsbHMgW2hhbmRsZXIucnVuXSwgd2hpY2gsIGlmIFtoYW5kbGVyXSBoYXMgYmVlbiByZW1vdmVkLCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgdG8gW2lnbm9yZV0uICopXG4gICAgbGV0IHJ1biB2ID0gSGFuZGxlci5ydW4gaGFuZGxlciB2IGluXG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHY7XG4gICAgaGFuZGxlclxuOztcblxubGV0IGhhc19oYW5kbGVycyB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbiAgfCBFbXB0eSB8IEZ1bGwgXyAtPiBmYWxzZVxuOztcblxubGV0IHVwb24nIHQgcnVuID0gYWRkX2hhbmRsZXIgdCBydW4gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcblxuKCogW3Vwb25dIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBhczpcblxuICAge1tcbiAgICAgbGV0IHVwb24gdCBmID0gaWdub3JlICh1cG9uJyB0IHJ1bikgXX1cblxuICAgSG93ZXZlciwgYmVsb3cgaXMgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgd29ydGggZG9pbmcgYmVjYXVzZSBbdXBvbl1cbiAgIGlzIHZlcnkgd2lkZWx5IHVzZWQgYW5kIGlzIHNvIG11Y2ggbW9yZSBjb21tb24gdGhhbiBbdXBvbiddLiAgVGhlIGJlbG93IGltcGxlbWVudGF0aW9uXG4gICBhdm9pZHMgdGhlIHVzZSBvZiB0aGUgYmFnIG9mIGhhbmRsZXJzIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugb2Ygb25lIGhhbmRsZXIgZm9yXG4gICB0aGUgZGVmZXJyZWQuICopXG5sZXQgdXBvbiB0IHJ1biA9XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgdiAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICB0LmNlbGxcbiAgICA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dCA6IF8gSGFuZGxlci50KVxuOztcblxuKCogW2Nvbm5lY3RdIHRha2VzIGl2YXJzIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10sIGFuZCBtYWtlcyBbYmluZF9yaHNdXG4gICBiZSBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBub24taW5kaXIgY2VsbCByZWFjaGFibGUgZnJvbSBbYmluZF9yZXN1bHRdLiAgT24gZW50cnlcbiAgIHRvIFtjb25uZWN0XSwgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBtYXkgYmUgY2hhaW5zLCBzaW5jZSBbYmluZF9yaHNdIGlzIGFuXG4gICBhcmJpdHJhcnkgdXNlci1zdXBwbGllZCBkZWZlcnJlZCwgYW5kIFtiaW5kX3Jlc3VsdF0gaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgcHJpb3IgdG9cbiAgIGJlaW5nIFtjb25uZWN0XWVkLCBhbmQgbWF5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gYW4gaW5kaXJlY3Rpb24gaW4gdGhlIGNhc2Ugb2ZcbiAgIHJpZ2h0LW5lc3RlZCBiaW5kcy5cblxuICAgVGhlIHB1cnBvc2Ugb2YgW2Nvbm5lY3RdIGlzIHRvIG1ha2UgdGFpbC1yZWN1cnNpdmUgYmluZCBsb29wcyB1c2UgY29uc3RhbnQgc3BhY2UuXG4gICBFLmcuOlxuXG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgaWYgaSA9IDBcbiAgICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBhZnRlciAoc2VjIDEuKSBpblxuICAgICAgICAgbG9vcCAoaSAtIDEpKSBdfVxuXG4gICBbY29ubmVjdF0gbWFrZXMgaW50ZXJtZWRpYXRlIGJpbmQgcmVzdWx0cyBhbGwgYmUgW0luZGlyXXMgcG9pbnRpbmcgYXQgdGhlIG91dGVybW9zdFxuICAgYmluZCwgcmF0aGVyIHRoYW4gYmVpbmcgYSBsaW5lYXItbGVuZ3RoIGNoYWluLCB3aXRoIGVhY2ggcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIG9uZS5cbiAgIFRoZW4sIHNpbmNlIHRoZSBwcm9ncmFtIGlzIG9ubHkgaG9sZGluZyBvbiB0byB0aGUgaW5uZXJtb3N0IGFuZCBvdXRlcm1vc3QgYmluZHMgYWxsIHRoZVxuICAgaW50ZXJtZWRpYXRlIG9uZXMgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkLlxuXG4gICBbY29ubmVjdF0gd29ya3MgYnkgc3F1YXNoaW5nIGl0cyBhcmd1bWVudHMgc28gdGhhdCB0aGUgW2JpbmRfcmhzXSBhbHdheXMgcG9pbnRzIGF0IHRoZVxuICAgdWx0aW1hdGUgcmVzdWx0LiAqKVxubGV0IGNvbm5lY3QgPVxuICAoKiBbcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdF0gcmVwb2ludHMgdG8gW2luZGlyXSBhbGwgdGhlIGl2YXJzIGluIHRoZVxuICAgICBjaGFpbiByZWFjaGFibGUgZnJvbSBbaXZhcl0sIGFuZCByZXR1cm5zIHRoZSBub24tW0luZGlyXSBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgIGNoYWluLiAgQWZ0ZXIgcmVwb2ludGluZywgd2Ugd2lsbCBtZXJnZSB0aGUgaGFuZGxlcnMgaW4gdGhhdCBjZWxsIHdpdGggdGhlIGhhbmRsZXJzXG4gICAgIGluIFtiaW5kX3Jlc3VsdF0sIGFuZCBwdXQgdGhlIG1lcmdlZCBzZXQgb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XS4gKilcbiAgbGV0IHJlYyByZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0ID1cbiAgICBsZXQgY2VsbCA9IGl2YXIuY2VsbCBpblxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgSW5kaXIgaXZhcicgLT5cbiAgICAgIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHJlcG9pbnRfaW5kaXJzIH5pdmFyOml2YXInIH5pbmRpciB+YmluZF9yZXN1bHRcbiAgICB8IEZ1bGwgXyAtPiBjZWxsXG4gICAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgICAoKiBJdCBpcyBwb3NzaWJsZSB0aGF0IFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gYXJlIG5vdCBlcXVhbCwgYnV0IHRoZWlyIGNoYWluc1xuICAgICAgICAgb2YgaW5kaXJzIGxlYWQgdG8gdGhlIHNhbWUgbm9uLVtJbmRpcl0gY2VsbCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW5ub3Qgc2V0IHRoYXRcbiAgICAgICAgIGNlbGwgdG8gcG9pbnQgdG8gaXRzZWxmLCBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGEgY3ljbGUuICopXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgaXZhciBiaW5kX3Jlc3VsdCkgdGhlbiBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICBjZWxsXG4gIGluXG4gIGZ1biB+YmluZF9yZXN1bHQgfmJpbmRfcmhzIC0+XG4gICAgaWYgbm90IChwaHlzX2VxdWFsIGJpbmRfcmVzdWx0IGJpbmRfcmhzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJpbmRfcmVzdWx0ID0gc3F1YXNoIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgaW5kaXIgPSBJbmRpciBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGJpbmRfcmhzX2NvbnRlbnRzID0gcmVwb2ludF9pbmRpcnMgfml2YXI6YmluZF9yaHMgfmluZGlyIH5iaW5kX3Jlc3VsdCBpblxuICAgICAgKCogdXBkYXRlIFtiaW5kX3Jlc3VsdF0gd2l0aCB0aGUgdW5pb24gb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XSBhbmRcbiAgICAgICAgIFtiaW5kX3Joc10gKilcbiAgICAgIG1hdGNoIGJpbmRfcmVzdWx0LmNlbGwsIGJpbmRfcmhzX2NvbnRlbnRzIHdpdGhcbiAgICAgIHwgSW5kaXIgXywgXyB8IF8sIEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gYW5kIFtyZXBvaW50X2luZGlyc10gKilcbiAgICAgICgqIFtjb25uZWN0XSBpcyBvbmx5IHVzZWQgaW4gYmluZCwgd2hvc2UgaXZhciBpcyBvbmx5IGV2ZXIgZXhwb3J0ZWQgYXMgYSByZWFkLW9ubHlcbiAgICAgICAgIGRlZmVycmVkLiAgVGh1cywgW2JpbmRfcmVzdWx0XSBtdXN0IGJlIGVtcHR5LiAqKVxuICAgICAgfCBGdWxsIF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IF8sIEVtcHR5IC0+ICgpXG4gICAgICB8IEVtcHR5LCBfIC0+IGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHNcbiAgICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgICAgIHwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyMSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA6IF8gSGFuZGxlci50KVxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5hZGQgaGFuZGxlcjIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPiBIYW5kbGVyLnNwbGljZSBoYW5kbGVyMSBoYW5kbGVyMilcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBJdmFyID0gSXZhcjBcbm1vZHVsZSBIYW5kbGVyID0gSXZhci5IYW5kbGVyXG5cbigqIERlZmVycmVkcyBwcmVzZW50IGEgY292YXJpYW50IHZpZXcgb2YgaXZhcnMuICBXZSBjb3VsZCBhY3R1YWxseSBpbXBsZW1lbnQgZGVmZXJyZWRzXG4gICB1c2luZyBhIHJlY29yZCBvZiBjbG9zdXJlcywgYXMgaW4gdGhlIFtlc3NlbmNlX29mX2RlZmVycmVkXSByZWNvcmQgYmVsb3csIGZvciB3aGljaCB0aGVcbiAgIE9DYW1sIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgY292YXJpYW5jZS4gIEhvd2V2ZXIsIGRvaW5nIHNvIHdvdWxkIG1ha2UgW0l2YXIucmVhZF0gdmVyeVxuICAgY29zdGx5LCBiZWNhdXNlIGl0IHdvdWxkIGhhdmUgdG8gYWxsb2NhdGUgbG90cyBvZiBjbG9zdXJlcyBhbmQgYSByZWNvcmQuICBJbnN0ZWFkIG9mXG4gICBkb2luZyB0aGlzLCB3ZSBtYWtlIGRlZmVycmVkcyBhbiBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgd2hpY2ggY29uY3JldGVseSBpcyBqdXN0IHRoZVxuICAgaXZhciwgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYSBkZWZlcnJlZCBhbmQgaXRzIGNvbmNyZXRlXG4gICByZXByZXNlbnRhdGlvbiBhcyBhbiBpdmFyLiAgVGhpcyBbT2JqLm1hZ2ljXSBpcyBzYWZlIGJlY2F1c2UgdGhlIHJlcHJlc2VudGF0aW9uIGlzXG4gICBhbHdheXMganVzdCBhbiBpdmFyLCBhbmQgdGhlIGNvdmFyaWFuY2UgZm9sbG93cyBmcm9tIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSBkZWZlcnJlZFxuICAgb3BlcmF0aW9ucyBhcmUgZXF1aXZhbGVudCB0byB0aG9zZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBvbiB0b3Agb2YgdGhlXG4gICBbZXNzZW5jZV9vZl9kZWZlcnJlZF0uXG5cbiAgIHtbXG4gICAgIHR5cGUgKCsnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBlc3NlbmNlX29mX2RlZmVycmVkID1cbiAgICAgICB7IHBlZWsgICAgICAgICAgICAgICAgICAgICAgOiB1bml0IC0+ICdhIG9wdGlvblxuICAgICAgIDsgaXNfZGV0ZXJtaW5lZCAgICAgICAgICAgICA6IHVuaXQgLT4gYm9vbFxuICAgICAgIDsgdXBvbiAgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gICAgICAgOyB1cG9uJyAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IFVucmVnaXN0ZXIudFxuICAgICAgIDsgaW5zdGFsbF9yZW1vdmFibGVfaGFuZGxlciA6ICgnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBSYXdfaGFuZGxlci50IC0+IFVucmVnaXN0ZXIudDsgfSBdfSAqKVxuXG50eXBlICsnYSB0ID0gJ2EgVHlwZXMuRGVmZXJyZWQudFxuXG4oKiB0aGUgYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIGVxdWl2YWxlbnQgdG8gaXZhciAqKVxuXG5sZXQgb2ZfaXZhciAodHlwZSBhKSAoaXZhciA6IGEgSXZhci50KSA6IGEgdCA9IE9iai5tYWdpYyBpdmFyXG5sZXQgdG9faXZhciAodHlwZSBhKSB0IDogYSBJdmFyLnQgPSBPYmoubWFnaWMgKHQgOiBhIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSAodG9faXZhciB0KVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IEl2YXIuc2V4cF9vZl90IHNleHBfb2ZfYSAodG9faXZhciB0KVxubGV0IHBlZWsgdCA9IEl2YXIucGVlayAodG9faXZhciB0KVxubGV0IHJldHVybiBhID0gb2ZfaXZhciAoSXZhci5jcmVhdGVfZnVsbCBhKVxubGV0IGlzX2RldGVybWluZWQgdCA9IEl2YXIuaXNfZnVsbCAodG9faXZhciB0KVxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBJdmFyLnZhbHVlXG4gICAgKHRvX2l2YXIgdClcbiAgICB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkRlZmVycmVkLnZhbHVlX2V4biBjYWxsZWQgb24gdW5kZXRlcm1pbmVkIGRlZmVycmVkXCJcbjs7XG5cbmxldCB1cG9uIHQgZiA9IEl2YXIudXBvbiAodG9faXZhciB0KSBmXG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmIHJlc3VsdDtcbiAgb2ZfaXZhciByZXN1bHRcbjs7XG5cbigqIGRvbid0IHVzZSBbY3JlYXRlXSBoZXJlIGFzIGl0IHdvdWxkIGFsbG9jYXRlIG9uZSBtb3JlIGNsb3N1cmUgKilcbmxldCBiaW5kIHQgfmYgPVxuICBsZXQgYmluZF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuY29ubmVjdCB+YmluZF9yZXN1bHQgfmJpbmRfcmhzOih0b19pdmFyIChmIGEpKSk7XG4gIG9mX2l2YXIgYmluZF9yZXN1bHRcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IGYgZXhlY3V0aW9uX2NvbnRleHQgPSBJdmFyLmFkZF9oYW5kbGVyICh0b19pdmFyIHQpIGYgZXhlY3V0aW9uX2NvbnRleHRcbmxldCByZW1vdmVfaGFuZGxlciB0IGggPSBJdmFyLnJlbW92ZV9oYW5kbGVyICh0b19pdmFyIHQpIGhcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQwXG5pbmNsdWRlIEl2YXIwXG5cbmxldCByZWFkID0gRGVmZXJyZWQub2ZfaXZhclxubGV0IGZpbGxfaWZfZW1wdHkgdCB2ID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZpbGwgdCB2XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoT3B0aW9uKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSBwZWVrIHRcblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gICAgICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9mdWxsIGFcbiAgICAgIDs7XG4gICAgZW5kKVxuIiwiKCoqIFtNb25hZF9zZXF1ZW5jZS5TXSBpcyBhIGdlbmVyaWMgaW50ZXJmYWNlIHNwZWNpZnlpbmcgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGFcbiAgICBjb250YWluZXIgYW5kIGEgbW9uYWQuICBJdCBpcyBzcGVjaWFsaXplZCB0byB0aGUgW0RlZmVycmVkXSBtb25hZCBhbmQgdXNlZCB3aXRoXG4gICAgdmFyaW91cyBjb250YWluZXJzIGluIG1vZHVsZXMgW0RlZmVycmVkLkFycmF5XSwgW0RlZmVycmVkLkxpc3RdLCBbRGVmZXJyZWQuUXVldWVdLCBhbmRcbiAgICBbRGVmZXJyZWQuU2VxdWVuY2VdLiAgVGhlIFtNb25hZF9zZXF1ZW5jZS5ob3ddIHR5cGUgc3BlY2lmaWVzIHRoZSBwYXJhbGxlbGlzbSBvZlxuICAgIGNvbnRhaW5lciBpdGVyYXRvcnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIGhvdyA9XG4gIFsgYFBhcmFsbGVsICgqKiBsaWtlIFtgTWF4X2NvbmN1cnJlbnRfam9icyBJbnQubWF4X3ZhbHVlXSAqKVxuICB8IGBTZXF1ZW50aWFsXG4gICgqKiBbYFNlcXVlbnRpYWxdIGlzIG9mdGVuIGJ1dCBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIFtgTWF4X2NvbmN1cnJlbnRfam9icyAxXVxuICAgICAgKGZvciBleGFtcGxlLCB0aGV5IGRpZmZlciBpbiB0aGUgW09yX2Vycm9yXSBtb25hZCkuICopXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgb2YgaW50XG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSBtb25hZFxuICB0eXBlICdhIHRcblxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAoaW50ICogJ2EpIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBhbGwgOiAnYSBtb25hZCB0IC0+ICdhIHQgbW9uYWRcbiAgdmFsIGFsbF91bml0IDogdW5pdCBtb25hZCB0IC0+IHVuaXQgbW9uYWRcblxuICAoKiogezIgRGVmZXJyZWQgaXRlcmF0b3JzfVxuXG4gICAgICBJbiB0aGUgZm9sbG93aW5nLCB0aGUgZGVmYXVsdCBbaG93XSBpcyBbYFNlcXVlbnRpYWxdICopXG5cbiAgdmFsIGluaXQgOiBob3c6aG93IC0+IGludCAtPiBmOihpbnQgLT4gJ2EgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGl0ZXIgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCBtb25hZCkgLT4gdW5pdCBtb25hZFxuICB2YWwgaXRlcmkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIG1hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlciA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBjb25jYXRfbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuZW5kXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5pbmNsdWRlIERlZmVycmVkMFxuXG4oKiBUbyBhdm9pZCBhIHNwYWNlIGxlYWssIGl0IGlzIG5lY2Vzc2FyeSB0aGF0IFtuZXZlcl0gYWxsb2NhdGVzIGEgbmV3IGl2YXIgd2hlbmV2ZXIgaXQgaXNcbiAgIGNhbGxlZC4gIENvZGUgY2FuIGJpbmQgb24gW25ldmVyICgpXSwgc28gaWYgd2UgcmUtdXNlZCB0aGUgaXZhciwgd2UgY291bGQgZW5kbGVzc2x5XG4gICBhY2N1bXVsYXRlIGhhbmRsZXJzLiAqKVxubGV0IG5ldmVyICgpID0gSXZhci5yZWFkIChJdmFyLmNyZWF0ZSAoKSlcblxubW9kdWxlIE0gPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmVycmVkMFxuXG4gICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICgqIFdlIG1hbnVhbGx5IGlubGluZSBbRGVmZXJyZWQuY3JlYXRlXSBoZXJlLCBiZWNhdXNlIHRoZSBub24tZmxhbWJkYSBjb21waWxlciBpc24ndFxuICAgICAgICAgYWJsZSB0byBvcHRpbWl6ZSBhd2F5IHRoZSBjbG9zdXJlIHRoYXQgd291bGQgYmUgYmUgY3JlYXRlZC4gKilcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmZpbGwgcmVzdWx0IChmIGEpKTtcbiAgICAgIG9mX2l2YXIgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmluY2x1ZGUgTVxuXG4oKiBXZSByZWJpbmQgYWxsIHRoZSB2YXJpb3VzIFtyZXR1cm5dcyBiZWNhdXNlIHRoZSB1c2Ugb2YgdGhlIFtNb25hZC5NYWtlXSBmdW5jdG9yXG4gICBjYXVzZXMgdGhlIGNvbXBpbGVyIHRvIG5vdCBpbmxpbmUgW3JldHVybl0sIGFuZCBoZW5jZSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvXG4gICBzdGF0aWNhbGx5IGFsbG9jYXRlIGNvbnN0YW50cyBsaWtlIFtyZXR1cm4gKCldLiAgQnkgcmViaW5kaW5nIFtyZXR1cm5dIGFzXG4gICBbRGVmZXJyZWQwLnJldHVybl0sIHRoZSBjb21waWxlciBjYW4gc2VlIHRoYXQ6XG5cbiAgIHtbXG4gICAgIHJldHVybiBhID0geyBJdmFyLkltbXV0YWJsZS4gY2VsbCA9IEZ1bGwgYSB9IF19XG5cbiAgIEFuZCBoZW5jZSwgaWYgW2FdIGlzIGNvbnN0YW50LCB0aGVuIHRoZSByZXR1cm4gaXMgY29uc3RhbnQgYW5kIGNhbiBiZSBzdGF0aWNhbGx5XG4gICBhbGxvY2F0ZWQuICBXaGVuIGNvbXBpbGluZyB3aXRoIGZsYW1iZGEsIHRoZSBjb21waWxlciBpbmxpbmVzIFtyZXR1cm5dIGFuZCB0aGlzIG1hbnVhbFxuICAgcmViaW5kaW5nIHdvdWxkIG5vdCBoZWxwOyB3ZSd2ZSBkZWNpZGVkIHRvIGRvIGl0IGFueXdheSBzbyB0aGF0IG5vbi1mbGFtYmRhIGJ1aWxkc1xuICAgZ2V0IHRoZSBvcHRpbWl6YXRpb24uICopXG5sZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIE0uTGV0X3N5bnRheFxuXG4gIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE0uTGV0X3N5bnRheC5MZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxuKCogV2Ugc2hhZG93IFthbGxdIG9uLXB1cnBvc2UgaGVyZSwgc2luY2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBpbnRyb2R1Y2VzIGEgY2hhaW4gb2ZcbiAgIGJpbmRzIGFzIGxvbmcgYXMgdGhlIGxpc3QuICopXG5sZXQgYWxsID0gYE1ha2Vfc3VyZV90b19kZWZpbmVfYWxsX2Vsc2V3aGVyZVxubGV0IF8gPSBhbGxcbmxldCB1bml0ID0gcmV0dXJuICgpXG5cbmxldCBib3RoIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+IHVwb24gdDEgKGZ1biBhMSAtPiB1cG9uIHQyIChmdW4gYTIgLT4gSXZhci5maWxsIHJlc3VsdCAoYTEsIGEyKSkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBsZXQgKCA+Pj4gKSA9IHVwb25cbiAgbGV0IHBweF9ib3RoID0gYm90aFxuZW5kXG5cbm9wZW4gSW5maXhcblxubGV0IGRvbid0X3dhaXRfZm9yIChfIDogdW5pdCB0KSA9ICgpXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9IFQgOiAnYiBEZWZlcnJlZDAudCAqICgnYiAtPiAnYSkgLT4gJ2EgdFxuXG4gIGxldCBtYXAgKFQgKHQsIGYxKSkgfmY6ZjIgPSBUICh0LCBmdW4geCAtPiBmMiAoZjEgeCkpXG5lbmRcblxubW9kdWxlIFVucmVnaXN0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhpcyByZXByZXNlbnRhdGlvbiBzYXZlcyAybiB3b3JkcyBmb3IgYSBsaXN0IG9mIG4gY2hvaWNlcy4gKilcbiAgdHlwZSAnciB0ID1cbiAgICB8IE5pbCA6ICdyIHRcbiAgICB8IENvbnMgOiAnYSBEZWZlcnJlZDAudCAqICgnYSAtPiAncikgKiAnYSBEZWZlcnJlZDAuSGFuZGxlci50ICogJ3IgdCAtPiAnciB0XG5cbiAgbGV0IHJlYyBwcm9jZXNzID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodCwgX2YsIGhhbmRsZXIsIHJlc3QpIC0+XG4gICAgICByZW1vdmVfaGFuZGxlciB0IGhhbmRsZXI7XG4gICAgICBwcm9jZXNzIHJlc3RcbiAgOztcbmVuZFxuXG5sZXQgY2hvaWNlIHQgZiA9IENob2ljZS5UICh0LCBmKVxuXG5sZXQgZW5hYmxlZCBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB1bnJlZ2lzdGVycyA9IHJlZiBVbnJlZ2lzdGVyLk5pbCBpblxuICBsZXQgcmVhZHkgXyA9XG4gICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICB0aGVuIChcbiAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyAhdW5yZWdpc3RlcnM7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0IChmdW4gKCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6W10gfmY6KGZ1biBhYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgICAgICAgICAgIG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IGFjXG4gICAgICAgICAgICAgfCBTb21lIHYgLT4gZiB2IDo6IGFjKSkpKVxuICBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICB1bnJlZ2lzdGVyc1xuICA6PSBMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIGFjYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgIENvbnMgKHQsIGYsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKTtcbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IHJlYyBjaG9vc2VfcmVzdWx0IGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBVbnJlZ2lzdGVyLk5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBVbnJlZ2lzdGVyLkNvbnMgKHQsIGYsIF8sIHJlc3QpIC0+XG4gICAgKG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgIHwgTm9uZSAtPiBjaG9vc2VfcmVzdWx0IHJlc3RcbiAgICAgfCBTb21lIHYgLT4gZiB2KVxuOztcblxubGV0IGdlbmVyaWNfY2hvb3NlIGNob2ljZXMgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgKCogQSBiYWNrLXBhdGNoZWQgcmVmIGNvdWxkIGJlIHVzZWQgaGVyZSwgYnV0IHVzaW5nIGxhenkgc2F2ZXMgc29tZSBtZW1vcnlcbiAgICAgYmVjYXVzZSB0aGUgR0MgZXZlbnR1YWxseSByZW1vdmVzIHRoZSBleHRyYSBpbmRpcmVjdGlvbi4gKilcbiAgbGV0IHJlYyB1bnJlZ2lzdGVycyA9XG4gICAgbGF6eVxuICAgICAgKExpc3QuZm9sZF9yaWdodCBjaG9pY2VzIH5pbml0OlVucmVnaXN0ZXIuTmlsIH5mOihmdW4gKENob2ljZS5UICh0LCBmKSkgYWNjIC0+XG4gICAgICAgICBVbnJlZ2lzdGVyLkNvbnMgKHQsIGYsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKSlcbiAgYW5kIHJlYWR5IDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biBfIC0+XG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB1bnJlZ2lzdGVycyA9IExhenkuZm9yY2UgdW5yZWdpc3RlcnMgaW5cbiAgICAgICAgVW5yZWdpc3Rlci5wcm9jZXNzIHVucmVnaXN0ZXJzO1xuICAgICAgICBJdmFyLmZpbGwgcmVzdWx0IChjaG9vc2VfcmVzdWx0IHVucmVnaXN0ZXJzKSlcbiAgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIHVucmVnaXN0ZXJzIGluXG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbigqIFtjaG9vc2UyXSBpcyBhIHNwZWNpYWxpemF0aW9uIG9mIFtjaG9vc2VdIHRoYXQgaGFzIGJldHRlciBtZW1vcnkgdXNhZ2UuXG4gICBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCBbY2hvb3NlMl0ga2VlcHMgMjIgZXh0cmEgd29yZHMgYWxpdmVcbiAgIGZvciB0aGUgZHVyYXRpb24gb2YgY2hvaWNlIHN0YXlpbmcgdW5kZXRlcm1pbmVkLCB3aGlsZSB0aGUgZXF1aXZhbGVudCBnZW5lcmljXG4gICBbY2hvb3NlXSBrZWVwcyAyNyAoc2VlIHRoZSBiZW5jaG1hcmsgaW4gLi4vYmVuY2gvYmluL2JlbmNoX2Nob29zZV9tZW1vcnlfdXNhZ2UubWwpLiAqKVxubGV0IGNob29zZTIgYSBmYSBiIGZiID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gIGxldCByZWMgYV9oYW5kbGVyID0gbGF6eSAoRGVmZXJyZWQwLmFkZF9oYW5kbGVyIGEgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQpXG4gIGFuZCBiX2hhbmRsZXIgPSBsYXp5IChEZWZlcnJlZDAuYWRkX2hhbmRsZXIgYiByZWFkeSBleGVjdXRpb25fY29udGV4dClcbiAgYW5kIHJlYWR5IDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biBfIC0+XG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFRoZSBvcmRlciBvZiB0aGVzZSBvcGVyYXRpb25zIG1hdHRlcnM6XG4gICAgICAgICAgIGlmIHdlIGNhbGwgW2ZiXSBvciBbZmFdIGZpcnN0IGFuZCBbcmVtb3ZlX2hhbmRsZXJdIGFmdGVyLCB0aGVuXG4gICAgICAgICAgIGFueSBleGNlcHRpb25zIHJhaXNlZCB3aWxsIGNhdXNlIHRoZSBoYW5kbGVycyB0byByZW1haW4gYW5kIHRoZW5cbiAgICAgICAgICAgdGhlIFwic2Vjb25kIGNob2ljZVwiIGdldHMgYSBjaGFuY2UgdG8gcnVuLlxuICAgICAgICAqKVxuICAgICAgICByZW1vdmVfaGFuZGxlciBhIChMYXp5LmZvcmNlIGFfaGFuZGxlcik7XG4gICAgICAgIHJlbW92ZV9oYW5kbGVyIGIgKExhenkuZm9yY2UgYl9oYW5kbGVyKTtcbiAgICAgICAgbWF0Y2ggcGVlayBhIHdpdGhcbiAgICAgICAgfCBTb21lIGF2IC0+IEl2YXIuZmlsbCByZXN1bHQgKGZhIGF2KVxuICAgICAgICB8IE5vbmUgLT4gSXZhci5maWxsIHJlc3VsdCAoZmIgKHZhbHVlX2V4biBiKSkpXG4gIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSBhX2hhbmRsZXIgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIGJfaGFuZGxlciBpblxuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG5sZXQgY2hvb3NlIGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBbIENob2ljZS5UIChhLCBmYSk7IENob2ljZS5UIChiLCBmYikgXSAtPiBjaG9vc2UyIGEgZmEgYiBmYlxuICB8IGNob2ljZXMgLT4gZ2VuZXJpY19jaG9vc2UgY2hvaWNlc1xuOztcblxubGV0IGFueV9mIHRzIGYgPSBjaG9vc2UgKExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBjaG9pY2UgdCBmKSlcbmxldCBhbnkgdHMgPSBhbnlfZiB0cyBGbi5pZFxubGV0IGFueV91bml0IHRzID0gYW55X2YgdHMgKEZuLmlnbm9yZSA6IHVuaXQgLT4gdW5pdClcblxubGV0IGZvcl8gc3RhcnQgfnRvXyB+ZG9fID1cbiAgaWYgc3RhcnQgPiB0b19cbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgbGV0JWJpbmQgKCkgPSBkb18gaSBpblxuICAgICAgaWYgaSA+PSB0b18gdGhlbiByZXR1cm4gKCkgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3Agc3RhcnQpXG47O1xuXG5sZXQgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBjcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgICBmIHN0YXRlXG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgYFJlcGVhdCBzdGF0ZSAtPiBsb29wIHN0YXRlXG4gICAgICB8IGBGaW5pc2hlZCByZXN1bHQgLT4gSXZhci5maWxsIGZpbmlzaGVkIHJlc3VsdFxuICAgIGluXG4gICAgbG9vcCBzdGF0ZSlcbjs7XG5cbmxldCBmb3JldmVyIHN0YXRlIGYgPVxuICByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgKGZ1biBzdGF0ZSAtPlxuICAgIGxldCVtYXAgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgYFJlcGVhdCBzdGF0ZSlcbiAgPj4+IG5ldmVyX3JldHVybnNcbjs7XG5cbnR5cGUgaG93ID0gTW9uYWRfc2VxdWVuY2UuaG93IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2UuUyB3aXRoIHR5cGUgJ2EgbW9uYWQgOj0gJ2EgdFxuXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgeCA6OiB4cyAtPiBmIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyBiXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbmxldCBzZXFtYXAgdCB+ZiA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGJzIGEgLT4gZiBhID4+fCBmdW4gYiAtPiBiIDo6IGJzKSA+PnwgTGlzdC5yZXZcbmxldCBhbGwgZHMgPSBzZXFtYXAgZHMgfmY6Rm4uaWRcbmxldCBhbGxfdW5pdCBkcyA9IGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpXG5sZXQgb2sgeCA9IHggPj58IGZ1biB4IC0+IE9rIHhcblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgZ2VuZXJpY19jaG9vc2UgPSBnZW5lcmljX2Nob29zZVxuZW5kXG4iLCJvcGVuIERlZmVycmVkMVxuaW5jbHVkZSBJbmZpeFxuaW5jbHVkZSBMZXRfc3ludGF4XG5cbmxldCBjaG9pY2UgPSBjaG9pY2VcbmxldCBjaG9vc2UgPSBjaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IGRvbid0X3dhaXRfZm9yXG5sZXQgbmV2ZXIgPSBuZXZlclxubGV0IHJldHVybiA9IHJldHVyblxubGV0IHVwb24gPSB1cG9uXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB1ID1cbiAgfCBFbXB0eSBvZiAnYSBJdmFyLnRcbiAgfCBGdWxsXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSB1IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgRnVsbCAtPiAoKVxuICAgIHwgRW1wdHkgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdCA9IHJlZiAoRW1wdHkgaXZhcikgaW5cbiAgdCwgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IF8gLT4gdHJ1ZVxuICB8IEZ1bGwgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaWxsIHQgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBpIC0+XG4gICAgdCA6PSBGdWxsO1xuICAgIEl2YXIuZmlsbCBpIGFcbiAgfCBGdWxsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBmaWxsIGZ1bGwgaXZhclwiXVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBTdHJlYW0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPSAnYSBUeXBlcy5TdHJlYW0ubmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbGV0IHJlYyBsb29wIGQgYWMgOiBTZXhwLnQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMaXN0IChMaXN0LnJldiAoU2V4cC5BdG9tIFwiLi4uXCIgOjogYWMpKVxuICAgICAgfCBTb21lIE5pbCAtPiBMaXN0IChMaXN0LnJldiBhYylcbiAgICAgIHwgU29tZSAoQ29ucyAoYSwgdCkpIC0+IGxvb3AgdCAoc2V4cF9vZl9hIGEgOjogYWMpXG4gICAgaW5cbiAgICBsb29wIHQgW11cbiAgOztcblxuICBsZXQgbmV4dCB0ID0gdFxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlRhaWwudCA9XG4gIHsgKCogW25leHRdIHBvaW50cyBhdCB0aGUgdGFpbCBvZiB0aGUgc3RyZWFtICopIG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3QgXyB0IDogU2V4cC50ID1cbiAgQXRvbSAoaWYgSXZhci5pc19lbXB0eSB0Lm5leHQgdGhlbiBcIjxvcGVuIHRhaWw+XCIgZWxzZSBcIjxjbG9zZWQgdGFpbD5cIilcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSB9XG5sZXQgY29sbGVjdCB0ID0gSXZhci5yZWFkIChuZXh0IHQpXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgKG5leHQgdClcblxubGV0IGZpbGxfZXhuIHQgdiA9XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJzdHJlYW0gaXMgY2xvc2VkXCJdIGVsc2UgSXZhci5maWxsIChuZXh0IHQpIHZcbjs7XG5cbmxldCBjbG9zZV9leG4gdCA9IGZpbGxfZXhuIHQgTmlsXG5sZXQgY2xvc2VfaWZfb3BlbiB0ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiBJdmFyLmZpbGwgKG5leHQgdCkgTmlsXG5cbmxldCBleHRlbmQgdCB2ID1cbiAgbGV0IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmaWxsX2V4biB0IChDb25zICh2LCBJdmFyLnJlYWQgbmV4dCkpO1xuICB0Lm5leHQgPC0gbmV4dFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gVGFpbC5TdHJlYW1cbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcbmluY2x1ZGUgTW9uaXRvclxuXG50eXBlIG1vbml0b3IgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bmFtZTppZ25vcmVcbiAgICAgIH5oZXJlOmlnbm9yZVxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmZvcndhcmRpbmc6aWdub3JlXG4gICAgICB+bmV4dF9lcnJvcjooY2hlY2sgKGZ1biBuZXh0X2Vycm9yIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBuZXh0X2Vycm9yKSkpXG4gICAgICB+aGFuZGxlcnNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+dGFpbHNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+aGFzX3NlZW5fZXJyb3I6aWdub3JlKVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxubGV0IGN1cnJlbnQgKCkgPSBFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKVxubGV0IGRldGFjaCB0ID0gdC5mb3J3YXJkaW5nIDwtIERldGFjaGVkXG5cbnR5cGUgaGFuZGxlcl9zdGF0ZSA9XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFJ1bm5pbmcgb2YgKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcuRWx0LnRcbiAgfCBUZXJtaW5hdGVkXG5cbmxldCBkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIHQgfmYgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICBsZXQgaGFuZGxlcl9zdGF0ZV9yZWYgPSByZWYgVW5pbml0aWFsaXplZCBpblxuICBsZXQgcnVuX2YgZXhuID1cbiAgICBtYXRjaCAhaGFuZGxlcl9zdGF0ZV9yZWYgd2l0aFxuICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFRlcm1pbmF0ZWQgLT4gKClcbiAgICB8IFJ1bm5pbmcgYmFnX2VsdCAtPlxuICAgICAgKHRyeSBmIGV4biB3aXRoXG4gICAgICAgfCBpbm5lcl9leG4gLT5cbiAgICAgICAgIGhhbmRsZXJfc3RhdGVfcmVmIDo9IFRlcm1pbmF0ZWQ7XG4gICAgICAgICBCYWcucmVtb3ZlIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgYmFnX2VsdDtcbiAgICAgICAgICgqIFtydW5fZl0gYWx3YXlzIHJ1bnMgaW4gW2V4ZWN1dGlvbl9jb250ZXh0XS4gIEhlbmNlLCBbcmFpc2UgaW5uZXJfZXhuXSBzZW5kc1xuICAgICAgICAgICAgW2lubmVyX2V4bl0gdG8gW2V4ZWN1dGlvbl9jb250ZXh0XSdzIG1vbml0b3IsIGkuZS4gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgICAgICAgIFtkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXSB3YXMgY2FsbGVkLiAqKVxuICAgICAgICAgcmFpc2UgaW5uZXJfZXhuKVxuICBpblxuICBoYW5kbGVyX3N0YXRlX3JlZlxuICA6PSBSdW5uaW5nIChCYWcuYWRkIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgKGV4ZWN1dGlvbl9jb250ZXh0LCBydW5fZikpXG47O1xuXG5sZXQgZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIHQgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIDwtIHRhaWwgOjogdC50YWlsc19mb3JfYWxsX2Vycm9ycztcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBnZXRfbmV4dF9lcnJvciB0ID0gSXZhci5yZWFkIHQubmV4dF9lcnJvclxuXG5sZXQgZGV0YWNoX2FuZF9nZXRfbmV4dF9lcnJvciB0ID1cbiAgZGV0YWNoIHQ7XG4gIGdldF9uZXh0X2Vycm9yIHRcbjs7XG5cbmxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgKCkgPVxuICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgKFNvbWUgcGFyZW50KVxuOztcblxubW9kdWxlIE1vbml0b3JfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleG4gOiBleG5cbiAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgfVxuXG4gIGxldCBiYWNrdHJhY2UgdCA9IHQuYmFja3RyYWNlXG4gIGxldCBleHRyYWN0X2V4biB0ID0gdC5leG5cblxuICBsZXQgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyA9XG4gICAgbGV0IGpvYl9xdWV1ZSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiam9iX3F1ZXVlLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMCA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQxLm1sXFxcIlwiIGluXG4gICAgbGV0IG1vbml0b3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcIm1vbml0b3IubWxcXFwiXCIgaW5cbiAgICBsZXQgaW1wb3J0MCA9IFwiUmFpc2VkIGF0IGZpbGUgXFxcImltcG9ydDAubWxcXFwiXCIgaW5cbiAgICBsZXQgZXJyb3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImVycm9yLm1sXFxcIlwiIGluXG4gICAgZnVuIHRyYWNlcyAtPlxuICAgICAgKCogLi4vdGVzdC90ZXN0X3RyeV93aXRoX2Vycm9yX2Rpc3BsYXkubWwgbWFrZXMgc3VyZSB0aGlzIHN0YXlzIHVwLXRvLWRhdGUuICopXG4gICAgICBsZXQgdHJhY2VzID1cbiAgICAgICAgbWF0Y2ggdHJhY2VzIHdpdGhcbiAgICAgICAgfCB0MSA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MSB+cHJlZml4OmltcG9ydDAgLT5cbiAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDplcnJvciAtPlxuICAgICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0MyA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MyB+cHJlZml4OmVycm9yIC0+IHJlc3RcbiAgICAgICAgICAgICAgfCBfIC0+IHJlc3QpXG4gICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICB8IF8gLT4gdHJhY2VzXG4gICAgICBpblxuICAgICAgbWF0Y2ggTGlzdC5yZXYgdHJhY2VzIHdpdGhcbiAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgfCB0MiA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmpvYl9xdWV1ZSAtPlxuICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICB8IHQyIDo6IHJlc3RcbiAgICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQwXG4gICAgICAgICAgICAgICAgKCogYmluZCAqKVxuICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpkZWZlcnJlZDFcbiAgICAgICAgICAgICAgICAoKiBtYXAgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6bW9uaXRvclxuICAgICAgICAgICAgICAoKiB0cnlfd2l0aCAqKSAtPiBMaXN0LnJldiByZXN0XG4gICAgICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgICAgIHwgXyAtPiBMaXN0LnJldiByZXN0KVxuICAgICAgfCBfIC0+IHRyYWNlc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgeyBleG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgfSA9XG4gICAgbGV0IG1vbml0b3IgPVxuICAgICAgbGV0IG5hbWUgPVxuICAgICAgICBtYXRjaCBJbmZvLnRvX3N0cmluZ19odW0gbW9uaXRvci5uYW1lIHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgICAgfCBzIC0+IFNvbWUgc1xuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBtb25pdG9yLmhlcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaGVyZSAtPlxuICAgICAgICAgICgqIFdlIGRpc3BsYXkgdGhlIGZ1bGwgZmlsZW5hbWUsIHdoZXJlYXMgYmFja3RyYWNlcyBvbmx5IGhhdmUgYmFzZW5hbWVzLCBidXRcbiAgICAgICAgICAgICBwZXJoYXBzIHRoYXQncyB3aGF0IHNob3VsZCBjaGFuZ2UuICopXG4gICAgICAgICAgbGV0IGNvbHVtbiA9IGhlcmUucG9zX2NudW0gLSBoZXJlLnBvc19ib2wgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoKiBXZSBoaWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIHdoZW4gW2FtX3J1bm5pbmdfdGVzdF0gdG8gbWFrZSB0ZXN0IG91dHB1dFxuICAgICAgICAgICAgICAgbW9yZSByb2J1c3QuICBUaGlzIHNhdmVzIHBlb3BsZSBtYW51YWxseSBoaWRpbmcgdGhlIG51bWJlcnMgb3IgZXZlbiB3b3JzZSxcbiAgICAgICAgICAgICAgIGxlYXZpbmcgdGhlbSBpbiB0ZXN0IG91dHB1dC4gIEhpZGluZyBpbiB0ZXN0IGlzIGRpZmZlcmVudCBjaG9pY2UgZm9yXG4gICAgICAgICAgICAgICBiZWhhdmlvciB0aGFuIG91ciBjb2RlYmFzZSBtYWtlcyBmb3IgW0JhY2t0cmFjZS5lbGlkZV0sIHdoaWNoIGhhcyBkZWZhdWx0XG4gICAgICAgICAgICAgICBbZmFsc2VdLCBhbmQgdGh1cyBzaG93cyBiYWNrdHJhY2VzIGluIHRlc3QuICBUaGVyZSBhcmUgYSBjb3VwbGUgcmVhc29ucyBmb3JcbiAgICAgICAgICAgICAgIHRoaXMgZGlmZmVyZW50IGNob2ljZS4gIEZpcnN0LCBleHBlY3QtdGVzdCBtYWNoaW5lcnkgaGFzIGNoZWNrIHRvIHByZXZlbnRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgZnJvbSBhcHBlYXJpbmcgaW4gdGVzdCBvdXRwdXQuICBJdCBoYXMgbm8gc3VjaCBjaGVja3MgZm9yIGxpbmVcbiAgICAgICAgICAgICAgIGFuZCBjb2x1bW4gbnVtYmVycy4gIFNlY29uZCwgd2hlbiB0aGVyZSBpcyBhIHJlYWwgZXJyb3IgYW5kIHlvdSB3YW50IHRvIHNlZVxuICAgICAgICAgICAgICAgdGhlIGJhY2t0cmFjZSwgdGhyb3dpbmcgYXdheSB0aGUgd2hvbGUgYmFja3RyYWNlIGxvc2VzIGEgbG90IG9mIHBvdGVudGlhbGx5XG4gICAgICAgICAgICAgICB1c2VmdWwgaW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgaGFyZCB0byByZWNvdmVyLiAgV2hlcmVhcyB3ZSdyZSBqdXN0XG4gICAgICAgICAgICAgICB0aHJvd2luZyBhIHdheSBhIGxpbmUgbnVtYmVyIGFuZCBjb2x1bW4sIHdoaWNoIGFyZSBhIG1pbm9yIGNvbnZlbmllbmNlXG4gICAgICAgICAgICAgICBnaXZlbiB0aGF0IHRoZSBmaWxlbmFtZSBoYXMgbW9zdCBvZiB0aGUgaW5mb3JtYXRpb24uICopXG4gICAgICAgICAgICAoaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICAgICAgICAgdGhlbiBzcHJpbnRmIFwiZmlsZSAlUywgbGluZSBMSU5FLCBjaGFyYWN0ZXJzIEMxLUMyXCIgaGVyZS5wb3NfZm5hbWVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiZmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2xudW1cbiAgICAgICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgIGNvbHVtbilcbiAgICAgIGluXG4gICAgICBtYXRjaCBwb3MsIG5hbWUgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgcG9zLCBOb25lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yIGF0ICVzXCIgcG9zIF1cbiAgICAgIHwgTm9uZSwgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzXCIgbmFtZSBdXG4gICAgICB8IFNvbWUgcG9zLCBTb21lIG5hbWUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgJXMgYXQgJXNcIiBuYW1lIHBvcyBdXG4gICAgaW5cbiAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIGJhY2t0cmFjZSAtPiBCYWNrdHJhY2UudG9fc3RyaW5nX2xpc3QgYmFja3RyYWNlXG4gICAgICBpblxuICAgICAgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyBiYWNrdHJhY2UgQCBtb25pdG9yXG4gICAgaW5cbiAgICBsZXQgbGlzdF9pZl9ub3RfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gOjogXyBhcyBsIC0+IFNvbWUgbFxuICAgIGluXG4gICAgWyVzZXhwXG4gICAgICAoZXhuIDogZXhuKVxuICAgICwgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZSA6IChzdHJpbmcgbGlzdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgLCBgYmFja3RyYWNlX2hpc3RvcnlcbiAgICAgICAgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZV9oaXN0b3J5IDogKEJhY2t0cmFjZS50IGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgOztcbmVuZFxuXG5leGNlcHRpb24gTW9uaXRvcl9leG4gb2YgTW9uaXRvcl9leG4udFxuXG5sZXQgKCkgPVxuICBTZXhwbGliLkNvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTW9uaXRvcl9leG5dIChmdW5jdGlvblxuICAgIHwgTW9uaXRvcl9leG4gdCAtPiBbJXNleHAgXCJtb25pdG9yLm1sLkVycm9yXCIgOjogKHQgOiBNb25pdG9yX2V4bi50KV1cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGV4dHJhY3RfZXhuIGV4biA9XG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgTW9uaXRvcl9leG4gZXJyb3IgLT4gZXJyb3IuZXhuXG4gIHwgZXhuIC0+IGV4blxuOztcblxubGV0IHNlbmRfZXhuIHQgPyhiYWNrdHJhY2UgPSBgR2V0KSBleG4gPVxuICBsZXQgZXhuID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgTW9uaXRvcl9leG4gXyAtPiBleG5cbiAgICB8IF8gLT5cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IGBHZXQgLT4gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudF9mb3JfZXhuIGV4blxuICAgICAgICB8IGBUaGlzIGIgLT4gU29tZSBiXG4gICAgICBpblxuICAgICAgbGV0IGJhY2t0cmFjZV9oaXN0b3J5ID0gKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpLmJhY2t0cmFjZV9oaXN0b3J5IGluXG4gICAgICBNb25pdG9yX2V4biB7IE1vbml0b3JfZXhuLmV4bjsgYmFja3RyYWNlOyBiYWNrdHJhY2VfaGlzdG9yeTsgbW9uaXRvciA9IHQgfVxuICBpblxuICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuIHRoZW4gRGVidWcubG9nIFwiTW9uaXRvci5zZW5kX2V4blwiICh0LCBleG4pIFslc2V4cF9vZjogdCAqIGV4bl07XG4gIHQuaGFzX3NlZW5fZXJyb3IgPC0gdHJ1ZTtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBJdmFyLmZpbGwgdC5uZXh0X2Vycm9yIGV4bjtcbiAgICB0Lm5leHRfZXJyb3IgPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IERldGFjaGVkIC0+XG4gICAgICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuXG4gICAgICB0aGVuXG4gICAgICAgIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG4gZm91bmQgbGlzdGVuaW5nIG1vbml0b3JcIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICAgICAgQmFnLml0ZXIgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIChleGVjdXRpb25fY29udGV4dCwgZikgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgZXhuKTtcbiAgICAgIExpc3QuaXRlciB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIH5mOihmdW4gdGFpbCAtPiBUYWlsLmV4dGVuZCB0YWlsIGV4bilcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gbG9vcCBwYXJlbnRcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT5cbiAgICAgICgqIERvIG5vdCBjaGFuZ2UgdGhpcyBicmFuY2ggdG8gcHJpbnQgdGhlIGV4Y2VwdGlvbiBvciB0byBleGl0LiAgSGF2aW5nIHRoZVxuICAgICAgICAgc2NoZWR1bGVyIHJhaXNlIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpcyB0aGUgbmVjZXNzYXJ5IGJlaGF2aW9yIGZvciBwcm9ncmFtc1xuICAgICAgICAgdGhhdCBjYWxsIFtTY2hlZHVsZXIuZ29dIGFuZCB3YW50IHRvIGhhbmRsZSBpdC4gKilcbiAgICAgIFNjaGVkdWxlci4oZ290X3VuY2F1Z2h0X2V4biAodCAoKSkpIGV4biAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSlcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NjaGVkdWxlciA9IHN0cnVjdFxuICBsZXQgd2l0aGluX2NvbnRleHQgY29udGV4dCBmID1cbiAgICBTY2hlZHVsZXIuKHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBjb250ZXh0IH5mOihmdW4gKCkgLT5cbiAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBmIHdpdGhcbiAgICAgIHwgT2sgeCAtPiBPayB4XG4gICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICBzZW5kX2V4biAoRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciBjb250ZXh0KSBleG4gfmJhY2t0cmFjZTpgR2V0O1xuICAgICAgICBFcnJvciAoKSlcbiAgOztcblxuICBsZXQgd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbGV0IHRtcF9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKSA/bW9uaXRvciA/cHJpb3JpdHlcbiAgICBpblxuICAgIHdpdGhpbl9jb250ZXh0IHRtcF9jb250ZXh0IGZcbiAgOztcblxuICBsZXQgd2l0aGluJyA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgT2sgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IHdpdGhpbl92ID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+IE5vbmVcbiAgICB8IE9rIHggLT4gU29tZSB4XG4gIDs7XG5cbiAgbGV0IHdpdGhpbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiAoKVxuICAgIHwgT2sgKCkgLT4gKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrIHggPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIFNjaGVkdWxlci5lbnF1ZXVlXG4gICAgICBzY2hlZHVsZXJcbiAgICAgIChFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgICAgKFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlcilcbiAgICAgICAgID9tb25pdG9yXG4gICAgICAgICA/cHJpb3JpdHkpXG4gICAgICB3b3JrXG4gICAgICB4XG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlID9tb25pdG9yID9wcmlvcml0eSB3b3JrID0gc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrICgpXG5cbiAgbGV0IHNjaGVkdWxlJyA9XG4gICAgKCogRm9yIHBlcmZvcm1hbmNlLCB3ZSB1c2UgW3NjaGVkdWxlX3dpdGhfZGF0YV0gd2l0aCBhIGNsb3NlZCBmdW5jdGlvbiwgYW5kIGlubGluZVxuICAgICAgIFtEZWZlcnJlZC5jcmVhdGVdLiAqKVxuICAgIGxldCB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKSA9IHVwb24gKHdvcmsgKCkpIChmdW4gYSAtPiBJdmFyLmZpbGwgaSBhKSBpblxuICAgIGZ1biA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAtPlxuICAgICAgbGV0IGkgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKTtcbiAgICAgIEl2YXIucmVhZCBpXG4gIDs7XG5cbiAgbGV0IHByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIHN0YWdlIChmdW4gYSAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gICAgbGV0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpID0gdXBvbiAoZiBhKSAoZnVuIHIgLT4gSXZhci5maWxsIGkgcikgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGkgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpKSlcbiAgOztcbmVuZFxuXG5vcGVuIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IHN0cmVhbV9pdGVyIHN0cmVhbSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzdHJlYW0gPVxuICAgIFN0cmVhbS5uZXh0IHN0cmVhbVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh2LCBzdHJlYW0pIC0+XG4gICAgICBsb29wIHN0cmVhbTtcbiAgICAgIGYgdlxuICBpblxuICBsb29wIHN0cmVhbVxuOztcblxuKCogQW4gWydhIE9rX2FuZF9leG5zLnRdIHJlcHJlc2VudHMgdGhlIG91dHB1dCBvZiBhIGNvbXB1dGF0aW9uIHJ1bm5pbmcgaW4gYSBkZXRhY2hlZFxuICAgbW9uaXRvci4gKilcbm1vZHVsZSBPa19hbmRfZXhucyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgb2sgOiAnYSBEZWZlcnJlZC50XG4gICAgOyBleG5zIDogZXhuIFN0cmVhbS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuIGYgPVxuICAgICgqIFdlIGNhbGwgW2NyZWF0ZV93aXRoX3BhcmVudCBOb25lXSBiZWNhdXNlIFttb25pdG9yXSBkb2VzIG5vdCBuZWVkIGEgcGFyZW50LiAgSXRcbiAgICAgICBkb2VzIG5vdCBiZWNhdXNlIHdlIGNhbGwgW2RldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yXSBhbmQgZGVhbCB3aXRoIHRoZVxuICAgICAgIGVycm9ycyBleHBsaWNpdGx5LCB0aHVzIFtzZW5kX2V4bl0gd291bGQgbmV2ZXIgcHJvcGFnYXRlIGFuIGV4biBwYXN0IFttb25pdG9yXS4gKilcbiAgICBsZXQgbW9uaXRvciA9IGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSBOb25lIGluXG4gICAgbGV0IGV4bnMgPSBkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvciBpblxuICAgIGxldCBvayA9XG4gICAgICBtYXRjaCBydW4gd2l0aFxuICAgICAgfCBgTm93IC0+IHdpdGhpbicgfm1vbml0b3IgZlxuICAgICAgfCBgU2NoZWR1bGUgLT4gc2NoZWR1bGUnIH5tb25pdG9yIGZcbiAgICBpblxuICAgIHsgb2s7IGV4bnMgfVxuICA7O1xuZW5kXG5cbmxldCBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICByZXN1bHRfZmlsbGVyXG4gICAgICByZXN1bHRcbiAgICAgIGV4bnNcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdFxuICA9XG4gIGlmIEl2YXJfZmlsbGVyLmlzX2VtcHR5IHJlc3VsdF9maWxsZXJcbiAgdGhlbiAoXG4gICAgSXZhcl9maWxsZXIuZmlsbCByZXN1bHRfZmlsbGVyIHJlc3VsdDtcbiAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucylcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoX2xvZ19leG4gOiAoZXhuIC0+IHVuaXQpIHJlZiA9XG4gICAgcmVmIChmdW4gZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImZhaWxlZCB0byBzZXQgW01vbml0b3IuRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5dXCIgKGV4biA6IEV4bi50KV0pXG4gIDs7XG5lbmRcblxubGV0IG1ha2VfaGFuZGxlX2V4biByZXN0ID1cbiAgbWF0Y2ggcmVzdCB3aXRoXG4gIHwgYExvZyAtPlxuICAgICgqIFdlIGFyZSBjYXJlZnVsIHRvIG5vdCBjbG9zZSBvdmVyIGN1cnJlbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IG5lZWRlZC4gKilcbiAgICAhRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5cbiAgfCBgUmFpc2UgLT5cbiAgICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICAgIGZ1biBleG4gLT4gc2VuZF9leG4gcGFyZW50IGV4biA/YmFja3RyYWNlOk5vbmVcbiAgfCBgQ2FsbCBmIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHdpdGhpbiB+bW9uaXRvcjpwYXJlbnQgKGZ1biAoKSAtPiBmIGV4bilcbjs7XG5cbmxldCB0cnlfd2l0aFxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICA/KG5hbWUgPSBcIlwiKVxuICAgICAgP2V4dHJhY3RfZXhuOihkb19leHRyYWN0X2V4biA9IGZhbHNlKVxuICAgICAgPyhydW4gPSBgTm93KVxuICAgICAgPyhyZXN0ID0gYFJhaXNlKVxuICAgICAgZlxuICA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gfm5hbWUgfnJ1biBmIGluXG4gIGxldCBoYW5kbGVfZXhuID0gbWFrZV9oYW5kbGVfZXhuIHJlc3QgaW5cbiAgbGV0IGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zID0gc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVfZXhuIGluXG4gICgqIFdlIHJ1biBbd2l0aGluJyB+bW9uaXRvcjptYWluXSB0byBhdm9pZCBob2xkaW5nIG9uIHRvIHJlZmVyZW5jZXMgdG8gdGhlIGV2YWx1YXRpb25cbiAgICAgY29udGV4dCBpbiB3aGljaCBbdHJ5X3dpdGhdIHdhcyBjYWxsZWQuICBUaGlzIGF2b2lkcyBhIHNwYWNlIGxlYWsgd2hlbiBhIGNoYWluIG9mXG4gICAgIFt0cnlfd2l0aF0ncyBhcmUgcnVuIGVhY2ggbmVzdGVkIHdpdGhpbiB0aGUgcHJldmlvdXMgb25lLiAgV2l0aG91dCB0aGUgW3dpdGhpbiddLCB0aGVcbiAgICAgZXJyb3IgaGFuZGxpbmcgZm9yIHRoZSBpbm5lcm1vc3QgW3RyeV93aXRoXSB3b3VsZCBrZWVwIGFsaXZlIHRoZSBlbnRpcmUgY2hhaW4uICopXG4gIHdpdGhpbicgfm1vbml0b3I6bWFpbiAoZnVuICgpIC0+XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBva1xuICAgIHRoZW4gKFxuICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnM7XG4gICAgICByZXR1cm4gKE9rIChEZWZlcnJlZC52YWx1ZV9leG4gb2spKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHRfZmlsbGVyLCByZXN1bHQgPSBJdmFyX2ZpbGxlci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gb2sgKGZ1biByZXMgLT5cbiAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgICAgICAoT2sgcmVzKVxuICAgICAgICAgIGV4bnNcbiAgICAgICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQpO1xuICAgICAgdXBvbiAoU3RyZWFtLm5leHQgZXhucykgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IENvbnMgKGV4biwgZXhucykgLT5cbiAgICAgICAgICBsZXQgZXhuID0gaWYgZG9fZXh0cmFjdF9leG4gdGhlbiBleHRyYWN0X2V4biBleG4gZWxzZSBleG4gaW5cbiAgICAgICAgICBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgICAoRXJyb3IgZXhuKVxuICAgICAgICAgICAgZXhuc1xuICAgICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHJlc3VsdCkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfb3JfZXJyb3IgP2hlcmUgP2luZm8gPyhuYW1lID0gXCJ0cnlfd2l0aF9vcl9lcnJvclwiKSA/ZXh0cmFjdF9leG4gP3Jlc3QgZiA9XG4gIHRyeV93aXRoIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuIH5ydW46YE5vdyA/cmVzdCA+PnwgT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxuOztcblxubGV0IHRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yXCIpXG4gICAgICA/ZXh0cmFjdF9leG5cbiAgICAgID9yZXN0XG4gICAgICBmXG4gID1cbiAgdHJ5X3dpdGhfb3JfZXJyb3IgZiA/aGVyZSA/aW5mbyB+bmFtZSA/ZXh0cmFjdF9leG4gP3Jlc3QgPj58IE9yX2Vycm9yLmpvaW5cbjs7XG5cbmxldCBwcm90ZWN0ID9oZXJlID9pbmZvID8obmFtZSA9IFwiTW9uaXRvci5wcm90ZWN0XCIpID9leHRyYWN0X2V4biA/cnVuID9yZXN0IGYgfmZpbmFsbHkgPVxuICBsZXQlYmluZCByID0gdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9oZXJlID9pbmZvID9ydW4gP3Jlc3Qgfm5hbWUgZiBpblxuICBsZXQlbWFwIGZyID1cbiAgICB0cnlfd2l0aFxuICAgICAgfmV4dHJhY3RfZXhuOmZhbHNlXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgIH5ydW46YFNjaGVkdWxlICgqIGNvbnNpZGVyIFt+cnVuOmBOb3ddICopXG4gICAgICA/cmVzdFxuICAgICAgfm5hbWU6XCJmaW5hbGx5XCJcbiAgICAgIGZpbmFsbHlcbiAgaW5cbiAgbWF0Y2ggciwgZnIgd2l0aFxuICB8IEVycm9yIGV4biwgRXJyb3IgZmluYWxseV9leG4gLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIkFzeW5jIGZpbmFsbHlcIiAoZXhuIDogZXhuKSAoZmluYWxseV9leG4gOiBleG4pXVxuICB8IEVycm9yIGUsIE9rICgpIHwgT2sgXywgRXJyb3IgZSAtPiByYWlzZSBlXG4gIHwgT2sgciwgT2sgKCkgLT4gclxuOztcblxubGV0IGhhbmRsZV9lcnJvcnMgP2hlcmUgP2luZm8gP25hbWUgZiBoYW5kbGVyID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMub2s7IGV4bnMgfSA9IE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgZiBpblxuICBzdHJlYW1faXRlciBleG5zIH5mOmhhbmRsZXI7XG4gIG9rXG47O1xuXG5sZXQgY2F0Y2hfc3RyZWFtID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBsZXQgeyBPa19hbmRfZXhucy5leG5zOyBfIH0gPVxuICAgIE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgZiAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgZXhuc1xuOztcblxubGV0IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBtYXRjaCVtYXAgU3RyZWFtLm5leHQgKGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmKSB3aXRoXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIk1vbml0b3IuY2F0Y2ggZ290IHVuZXhwZWN0ZWQgZW1wdHkgc3RyZWFtXCJdXG47O1xuXG5sZXQgY2F0Y2hfZXJyb3IgP2hlcmUgP2luZm8gP25hbWUgZiA9IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPj58IEVycm9yLm9mX2V4blxuXG5tb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gIGxldCBwYXJlbnQgdCA9XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTm9uZVxuICAgIHwgUGFyZW50IHBhcmVudCAtPiBTb21lIHBhcmVudFxuICAgIHwgRGV0YWNoZWQgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBkZXB0aCB0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBuID1cbiAgICAgIG1hdGNoIHBhcmVudCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBuXG4gICAgICB8IFNvbWUgdCAtPiBsb29wIHQgKG4gKyAxKVxuICAgIGluXG4gICAgbG9vcCB0IDBcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5pbmNsdWRlIFRhaWwuU3RyZWFtXG5cbmxldCBmaXJzdF9leG4gdCA9XG4gIG1hdGNoJW1hcCBuZXh0IHQgd2l0aFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlN0cmVhbS5maXJzdCBvZiBlbXB0eSBzdHJlYW1cIl1cbiAgfCBDb25zICh4LCBfKSAtPiB4XG47O1xuXG5sZXQgZm9sZCcgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgdXBvbiAobmV4dCB0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICAgIHwgQ29ucyAodiwgdCkgLT4gdXBvbiAoZiBiIHYpIChsb29wIHQpKVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG4oKiBbZm9sZF0gaXMgaW1wbGVtZW50ZWQgdG8gYXZvaWQgcGVyLXN0cmVhbS1lbGVtZW50IGRlZmVycmVkIG92ZXJoZWFkIGluIHRoZSBjYXNlIHdoZW5cbiAgIG11bHRpcGxlIHN0cmVhbSBlbGVtZW50cyBhcmUgYXZhaWxhYmxlIHNpbXVsdGFuZW91c2x5LiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdXBvbiAobmV4dCB0KSAoZnVuIG5leHQgLT4gbG9vcF9uZXh0IG5leHQgYilcbiAgICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGJcbiAgICBhbmQgbG9vcF9uZXh0IG5leHQgYiA9XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCBDb25zICh2LCB0KSAtPiBsb29wIHQgKGYgYiB2KVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gXyAtPiBuICsgMSlcbmxldCBpdGVyJyB0IH5mID0gZm9sZCcgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gZiB2KVxuXG5sZXQgY2xvc2VkIHQgPVxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgfCBTb21lIE5pbCAtPiByZXR1cm4gKClcbiAgfCBfIC0+IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBkb24ndF93YWl0X2ZvclxuICAgIChpdGVyJyB0IH5mOihmdW4gYSAtPlxuICAgICAgIGYgYTtcbiAgICAgICByZXR1cm4gKCkpKVxuOztcblxubGV0IGNyZWF0ZSBmID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICAoKiBjb2xsZWN0IGJlZm9yZSBjYWxsaW5nIFtmXSwgaW4gY2FzZSBbZl0gaW1tZWRpYXRlbHkgZXh0ZW5kcy4gKilcbiAgbGV0IHQgPSBUYWlsLmNvbGxlY3QgdGFpbCBpblxuICBmIHRhaWw7XG4gIHRcbjs7XG5cbmxldCB1bmZvbGQgYiB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgYiA9XG4gICAgICB1cG9uIChmIGIpIChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICB8IFNvbWUgKGEsIGIpIC0+XG4gICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCBhO1xuICAgICAgICAgIGxvb3AgYilcbiAgICBpblxuICAgIGxvb3AgYilcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbmxldCB0b19saXN0IHMgPSBmb2xkJyBzIH5pbml0OltdIH5mOihmdW4gYiBhIC0+IHJldHVybiAoYSA6OiBiKSkgPj58IExpc3QucmV2XG5sZXQgY29weV90b190YWlsIHQgdGFpbCA9IGl0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoVGFpbC5leHRlbmQgdGFpbCBhKSlcblxubGV0IGFwcGVuZCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChjb3B5X3RvX3RhaWwgdDEgdGFpbCkgKGZ1biAoKSAtPlxuICAgICAgdXBvbiAoY29weV90b190YWlsIHQyIHRhaWwpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpKVxuOztcblxubGV0IGNvbmNhdCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGl0ZXInIHQgfmY6KGZ1biB0IC0+IGNvcHlfdG9fdGFpbCB0IHRhaWwpKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcicgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT5cbiAgICAgICAgIG1hdGNoJW1hcCBmIHYgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiAoKVxuICAgICAgICAgfCB0cnVlIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpbHRlcl9tYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHYgLT4gVGFpbC5leHRlbmQgdGFpbCB2KSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXJfbWFwJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBtYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoaXRlcicgdCB+ZjooZnVuIHYgLT4gZiB2ID4+fCBUYWlsLmV4dGVuZCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlyc3RfbiBzIG4gPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgbiA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICBlbHNlXG4gICAgICAgIHVwb24gKG5leHQgcykgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIG4pXG47O1xuXG5sZXQgYXZhaWxhYmxlX25vdyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgTmlsIC0+IExpc3QucmV2IGFjLCB0XG4gICAgfCBTb21lIChDb25zICh4LCB0KSkgLT4gbG9vcCB0ICh4IDo6IGFjKVxuICBpblxuICBsb29wIHQgW11cbjs7XG5cbmxldCBzcGxpdCA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgPyhmID0gZnVuIF8gLT4gYENvbnRpbnVlKSB0ID1cbiAgbGV0IHJlYXNvbl9mb3Jfc3RvcHBpbmcgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgcHJlZml4ID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IGZpbmlzaCB2ID1cbiAgICBUYWlsLmNsb3NlX2V4biBwcmVmaXg7XG4gICAgSXZhci5maWxsIHJlYXNvbl9mb3Jfc3RvcHBpbmcgdlxuICBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgY2hvb3NlIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcHBlZCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIG8gLT4gYE5leHQgbykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3BwZWQgLT4gZmluaXNoIChgU3RvcHBlZCB0KVxuICAgIHwgYE5leHQgbyAtPlxuICAgICAgKG1hdGNoIG8gd2l0aFxuICAgICAgIHwgTmlsIC0+IGZpbmlzaCBgRW5kX29mX3N0cmVhbVxuICAgICAgIHwgQ29ucyAoYSwgdCkgLT5cbiAgICAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgICAgIHwgYENvbnRpbnVlIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCBwcmVmaXggYTtcbiAgICAgICAgICAgIGxvb3AgdFxuICAgICAgICAgIHwgYEZvdW5kIGIgLT4gZmluaXNoIChgRm91bmQgKGIsIHQpKSkpXG4gIGluXG4gIGxvb3AgdDtcbiAgVGFpbC5jb2xsZWN0IHByZWZpeCwgSXZhci5yZWFkIHJlYXNvbl9mb3Jfc3RvcHBpbmdcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgXywgZm91bmQgPSBzcGxpdCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBgRm91bmQgYSBlbHNlIGBDb250aW51ZSkgaW5cbiAgbWF0Y2glbWFwIGZvdW5kIHdpdGhcbiAgfCBgU3RvcHBlZCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IChgRW5kX29mX3N0cmVhbSB8IGBGb3VuZCBfKSBhcyB4IC0+IHhcbjs7XG5cbmxldCB1bmdyb3VwIHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biBsIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICAgICAgIHJldHVybiAoKSkpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGludGVybGVhdmUgdHMgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgKCogVGhlIGludGVybGVhdmVkIHN0cmVhbSBzaG91bGQgYmUgY2xvc2VkIHdoZW4gdGhlIG91dGVyIHN0cmVhbSBhbmQgYWxsIG9mXG4gICAgICAgdGhlIGlubmVyIHN0cmVhbXMgaGF2ZSBiZWVuIGNsb3NlZC4gIEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIG9wZW5cbiAgICAgICBzdHJlYW1zIGFuZCBjbG9zZSB0aGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHdoZW4gdGhhdCBjb3VudCBiZWNvbWVzXG4gICAgICAgemVyby4gKilcbiAgICBsZXQgbnVtX29wZW4gPSByZWYgMSBpblxuICAgICgqIDEgZm9yIHRoZSBvdXRlciBzdHJlYW0gdGhhdCBpcyBvcGVuICopXG4gICAgbGV0IGNsb3NlICgpID1cbiAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiAtIDE7XG4gICAgICBpZiAhbnVtX29wZW4gPSAwIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIGluXG4gICAgbGV0IG91dGVyX2Nsb3NlZCA9XG4gICAgICBpdGVyJyB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuICsgMTtcbiAgICAgICAgdXBvbiAoY29weV90b190YWlsIHQgdGFpbCkgY2xvc2U7XG4gICAgICAgIHJldHVybiAoKSlcbiAgICBpblxuICAgIHVwb24gb3V0ZXJfY2xvc2VkIGNsb3NlKVxuOztcblxubGV0IHRha2VfdW50aWwgdCBkID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIHVwb25cbiAgICAgICAgKGNob29zZSBbIGNob2ljZSBkIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKG5leHQgdCkgKGZ1biB6IC0+IGBOZXh0IHopIF0pXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYFN0b3AgfCBgTmV4dCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgYE5leHQgKENvbnMgKHgsIHQpKSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0KVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseScgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgIH5yZXN0OmBSYWlzZVxuICAgICAgICAgIChmdW4gKCkgLT4gZiB4KVxuICAgICAgICA+Pj4gZnVuIHogLT5cbiAgICAgICAgbG9vcCB0O1xuICAgICAgICAobWF0Y2ggeiB3aXRoXG4gICAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgICB8IEVycm9yIGUgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlKVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICAoKiBXZSBpbW1lZGlhdGVseSBjYWxsIFtsb29wXSwgdGh1cyBtYWtpbmcgdGhlIGl0ZXIgZHVyYWJsZS4gIEFueSBleGNlcHRpb25zXG4gICAgICAgICAgIHJhaXNlZCBieSBbZl0gd2lsbCBub3QgcHJldmVudCB0aGUgbG9vcCBmcm9tIGNvbnRpbnVpbmcsIGFuZCB3aWxsIGdvIHRvIHRoZVxuICAgICAgICAgICBtb25pdG9yIG9mIHdob21ldmVyIGNhbGxlZCBbaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmRdLiAqKVxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIGYgeFxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseSB0IH5mID0gZG9uJ3Rfd2FpdF9mb3IgKGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYpXG5cbmxldCBvZl9mdW4gZiA9XG4gIHVuZm9sZCAoKSB+ZjooZnVuICgpIC0+XG4gICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgIFNvbWUgKGEsICgpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gKCdhLCAncGVybWlzc2lvbikgVHlwZXMuQnZhci50XG5cbnR5cGUgJ2EgcmVwciA9ICdhIFR5cGVzLkJ2YXIucmVwciA9XG4gIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSByZXByIFslc2V4cF9vZjogXyByZXByXSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgcmVwciBmIGluXG4gICAgRmllbGRzX29mX3JlcHIuaXRlclxuICAgICAgfmhhc19hbnlfd2FpdGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gaGFzX2FueV93YWl0ZXJzIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaGFzX2hhbmRsZXJzIHJlcHIuaXZhciB0aGVuIGFzc2VydCBoYXNfYW55X3dhaXRlcnMpKVxuICAgICAgfml2YXI6XG4gICAgICAgIChjaGVjayAoZnVuIGl2YXIgLT5cbiAgICAgICAgICAgSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgaXZhcjtcbiAgICAgICAgICAgYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSkpXG47O1xuXG5sZXQgc2V4cF9vZl90IF8gXyB0ID1cbiAgbGV0IHsgaGFzX2FueV93YWl0ZXJzOyBpdmFyID0gXyB9ID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgKCogV2UgZG9uJ3Qgc2hvdyBbaXZhcl0gYmVjYXVzZSBpdCdzIGFsd2F5cyBlbXB0eS4gKilcbiAgWyVtZXNzYWdlIChoYXNfYW55X3dhaXRlcnMgOiBib29sKV1cbjs7XG5cbmluY2x1ZGUgU2NoZWR1bGVyMS5CdmFyXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBpZiByZXByLmhhc19hbnlfd2FpdGVyc1xuICB0aGVuIChcbiAgICByZXByLmhhc19hbnlfd2FpdGVycyA8LSBmYWxzZTtcbiAgICBJdmFyLmZpbGwgcmVwci5pdmFyIGE7XG4gICAgcmVwci5pdmFyIDwtIEl2YXIuY3JlYXRlICgpKVxuOztcblxubGV0IHdhaXQgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gdHJ1ZTtcbiAgSXZhci5yZWFkIHJlcHIuaXZhclxuOztcblxubGV0IGhhc19hbnlfd2FpdGVycyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVyc1xuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbmxldCBkZWJ1ZyA9IERlYnVnLmNsb2NrXG5cbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCAoID4+PiApID0gdXBvblxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuVDFcblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCI8d2FsbF9jbG9jaz5cIl1cbiAgICBlbHNlXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgKGlzX3dhbGxfY2xvY2sgOiBib29sKVxuICAgICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgICAgKGV2ZW50cyA6IF8gVGltaW5nX3doZWVsLnQpXVxuICA7O1xuZW5kXG5cbm9wZW4gVDFcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcbmxldCBjcmVhdGUgPSBTY2hlZHVsZXIuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlci53YWxsX2Nsb2NrXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbmxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5sZXQgaWQgdCA9IHQuaWRcblxubW9kdWxlIElkID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLklkXG5cbmxldCBub3cgdCA9XG4gIGlmIHQuaXNfd2FsbF9jbG9ja1xuICB0aGVuXG4gICAgKCogRm9yIHRoZSB3YWxsLWNsb2NrIHRpbWUtc291cmNlLCB3ZSB1c2UgW1RpbWVfbnMubm93ICgpXSByYXRoZXIgdGhhblxuICAgICAgIFtUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXS4gIFRoZSBsYXR0ZXIgaXMgb25seSB1cGRhdGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoXG4gICAgICAgY3ljbGUuICBUaGVyZSBjYW4gYmUgc3Vic3RhbnRpYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gd2hlbiBwZW9wbGUgZG8gbG9uZ1xuICAgICAgIHJ1bm5pbmcgY29tcHV0YXRpb25zIG9yIG1peCBibG9ja2luZyBjb2RlIHdpdGggYXN5bmMuICBBbmQgaHVtYW5zIGV4cGVjdCB0aGF0XG4gICAgICAgd2FsbC1jbG9jayB0aW1lIGlzIGJhc2VkIG9uIFtUaW1lLm5vd10sIG5vdCBzb21lIGFydGlmYWN0IG9mIGFzeW5jXG4gICAgICAgaW1wbGVtZW50YXRpb24uICopXG4gICAgVGltZV9ucy5ub3cgKClcbiAgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbmxldCBhZHZhbmNlID0gYWR2YW5jZV9kaXJlY3RseVxubGV0IGFkdmFuY2VfYnkgPSBhZHZhbmNlX2RpcmVjdGx5X2J5XG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IChTY2hlZHVsZXIueWllbGQgdC5zY2hlZHVsZXIpXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gU2NoZWR1bGVyLm51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxuXG5tb2R1bGUgRWFnZXJfZGVmZXJyZWQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfdW5pdCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIGYgKClcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kICgpID0gdCBpblxuICAgICAgZiAoKSlcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdFxuICAgIHRoZW4gcmV0dXJuIChmIChEZWZlcnJlZC52YWx1ZV9leG4gdCkpXG4gICAgZWxzZSBEZWZlcnJlZC5tYXAgdCB+ZlxuICA7O1xuZW5kXG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fID1cbiAgbGV0IHJ1bl9xdWV1ZWRfYWxhcm1zICgpID1cbiAgICAoKiBFdmVyeSB0aW1lIHdlIHdhbnQgdG8gcnVuIHF1ZXVlZCBhbGFybXMgd2UgbmVlZCB0byB5aWVsZCBjb250cm9sIGJhY2sgdG8gdGhlXG4gICAgICAgW0FzeW5jLlNjaGVkdWxlcl0gYW5kIFt3YWl0X2Zvcl0gYW55IGxvZ2ljIHRoYXQgaXMgc3VwcG9zZWQgdG8gZmluaXNoIGF0IHRoaXMgdGltZVxuICAgICAgIGJlZm9yZSBhZHZhbmNpbmcuICBJZiBubyBbd2FpdF9mb3JdIGxvZ2ljIGlzIHNwZWNpZmllZCB3ZSBjYW4gc2ltcGx5IHlpZWxkIGNvbnRyb2xcbiAgICAgICBieSBpbnZva2luZyBbeWllbGQgdF0sIHdoaWNoIGVucXVldWVzIGFub3RoZXIgam9iIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVkdWxlciBqb2JcbiAgICAgICBxdWV1ZSBzbyBhbGFybSBqb2JzIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1biBiZWZvcmUgd2UgYWR2YW5jZS4gKilcbiAgICBtYXRjaCB3YWl0X2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IHlpZWxkIHRcbiAgICB8IFNvbWUgZiAtPiBmICgpXG4gIGluXG4gIGxldCBvbmVfc3RlcCAoKSA9XG4gICAgaWYgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFueV9maXJlZF9ldmVudHNfdG9fcnVuIHRcbiAgICB0aGVuIG5vdyB0LCBgY29udGludWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHMgd2l0aFxuICAgICAgfCBOb25lIC0+IHRvXywgYGZpbmlzaFxuICAgICAgfCBTb21lIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCAtPlxuICAgICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdG9fXG4gICAgICAgIHRoZW4gdG9fLCBgZmluaXNoXG4gICAgICAgIGVsc2UgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsLCBgY29udGludWUpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIGxldCBhZHZhbmNlX3RvLCBuZXh0ID0gb25lX3N0ZXAgKCkgaW5cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzphZHZhbmNlX3RvO1xuICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICBFYWdlcl9kZWZlcnJlZC5iaW5kX3VuaXQgKHJ1bl9xdWV1ZWRfYWxhcm1zICgpKSB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgYGZpbmlzaCAtPiByZXR1cm4gKClcbiAgICAgIHwgYGNvbnRpbnVlIC0+IHdhbGtfYWxhcm1zICgpKVxuICBpblxuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgKCogc28gdGhhdCBhbGFybXMgc2NoZWR1bGVkIGF0IG9yIGJlZm9yZSBbdG9fXSBmaXJlICopXG4gICAgcnVuX3F1ZXVlZF9hbGFybXMgKClcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbWF0Y2ggbmV4dF9hbGFybV9maXJlc19hdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG5leHRfYWxhcm1fZmlyZXNfYXQgLT5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyk7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgRWFnZXJfZGVmZXJyZWQuYmluZF91bml0IHF1ZXVlZF9hbGFybXNfcmFuIH5mOndhbGtfYWxhcm1zKVxuICBpblxuICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICgqIFRoaXMgZmlyc3QgW3J1bl9xdWV1ZWRfYWxhcm1zXSBjYWxsIGFsbG93cyBbQ2xvY2tfbnMuZXZlcnldIHRoZSBvcHBvcnR1bml0eSB0byBydW5cbiAgICAgaXRzIGNvbnRpbnVhdGlvbiBkZWZlcnJlZHMgc28gdGhhdCB0aGV5IGNhbiByZXNjaGVkdWxlIGFsYXJtcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5XG4gICAgIHVzZWZ1bCBpbiBvdXIgXCJhZHZhbmNlIGhpdHMgaW50ZXJtZWRpYXRlIGFsYXJtc1wiIHVuaXQgdGVzdCBiZWxvdywgYnV0IGxpa2VseSB1c2VmdWxcbiAgICAgaW4gb3RoZXIgY2FzZXMgd2hlcmUgW2V2ZXJ5XSBpcyBzeW5jaHJvbm91c2x5IGZvbGxvd2VkIGJ5IFthZHZhbmNlXS4gKilcbiAgbGV0JWJpbmQgKCkgPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICB3YWxrX2FsYXJtcyAoKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5ID93YWl0X2ZvciB0IGJ5ID1cbiAgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuOztcblxubGV0IHNwYW5fdG9fdGltZSB0IHNwYW4gPSBUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhblxuXG5sZXQgc2NoZWR1bGVfam9iIHQgfmF0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBhbGFybSA9XG4gICAgVGltaW5nX3doZWVsLmFkZFxuICAgICAgdC5ldmVudHNcbiAgICAgIH5hdFxuICAgICAgKEpvYl9vcl9ldmVudC5vZl9qb2IgKFNjaGVkdWxlci5jcmVhdGVfam9iIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSkpXG4gIGluXG4gIChtYXRjaCB0LnNjaGVkdWxlci5ldmVudF9hZGRlZF9ob29rIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGYgLT4gZiBhdCk7XG4gIGFsYXJtXG47O1xuXG5sZXQgcnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBpblxuICBpZiBUaW1lX25zLiggPiApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gIHRoZW4gc2NoZWR1bGVfam9iIHQgfmF0OnRpbWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG4gIGVsc2UgKFxuICAgIFNjaGVkdWxlci5lbnF1ZXVlIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBBbGFybS5udWxsICgpKVxuOztcblxubGV0IHJ1bl9hdCB0IHRpbWUgZiBhID0gaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA6IF8gQWxhcm0udClcbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGYgYSA9IHJ1bl9hdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKSBmIGFcblxubGV0IGF0ID1cbiAgbGV0IGZpbGwgcmVzdWx0ID0gSXZhci5maWxsIHJlc3VsdCAoKSBpblxuICBmdW4gdCB0aW1lIC0+XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgICB0aGVuIHJldHVybiAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZmlsbCByZXN1bHQgOiBfIEFsYXJtLnQpO1xuICAgICAgSXZhci5yZWFkIHJlc3VsdClcbjs7XG5cbmxldCBhZnRlciB0IHNwYW4gPSBhdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKVxuXG5sZXQgcmVtb3ZlX2FsYXJtIHQgYWxhcm0gOiB1bml0ID1cbiAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIHQuZXZlbnRzIGFsYXJtIGluXG4gIChsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgIHwgSm9iLCBqb2IgLT4gU2NoZWR1bGVyLmZyZWVfam9iIHQuc2NoZWR1bGVyIGpvYlxuICAgfCBFdmVudCwgXyAtPlxuICAgICAoKiBUaGlzIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgW2FsYXJtXSBvbmx5IGV2ZXIgY29tZXMgZnJvbSBbRXZlbnQuYWxhcm1dIHdoaWNoIG9ubHlcbiAgICAgICAgZXZlciBnZXRzIHBvcHVsYXRlZCBieSBhIGNhbGwgdG8gW3NjaGVkdWxlX2pvYl0uICopXG4gICAgIGFzc2VydCBmYWxzZSk7XG4gIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgYWxhcm1cbjs7XG5cbmxldCByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQgYWxhcm0gPVxuICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzIGFsYXJtIHRoZW4gcmVtb3ZlX2FsYXJtIHQgYWxhcm1cbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBtb2R1bGUgRmlyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICB7IG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgOyBtdXRhYmxlIGZpcmUgOiB1bml0IC0+IHVuaXRcbiAgICA7ICgqIEFzIGxvbmcgYXMgW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB3ZSBoYXZlIG5vdCB5ZXQgY29tbWl0dGVkIHRvIHdoZXRoZXIgdGhlIGV2ZW50XG4gICAgICAgICB3aWxsIGhhcHBlbiBvciBiZSBhYm9ydGVkLiAgV2hlbiBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHRoZSBhbGFybSBtYXkgb3IgbWF5IG5vdFxuICAgICAgICAgYmUgaW4gdGhlIHRpbWluZyB3aGVlbCAtLSBpZiBpdCBpc24ndCwgdGhlbiB0aGVyZSdzIGEgam9iIGluIEFzeW5jJ3Mgam9iIHF1ZXVlXG4gICAgICAgICB0aGF0IHdpbGwgZmlyZSB0aGUgZXZlbnQsIHVubGVzcyBpdCBpcyBhYm9ydGVkIGJlZm9yZSB0aGF0IGpvYiBjYW4gcnVuLiAqKVxuICAgICAgZmlyZWQgOiAoJ2EsICdoKSBGaXJlZC50IEl2YXIudFxuICAgIDsgKCogW251bV9maXJlc190b19za2lwXSBpcyB1c2VkIHRvIHJlc2NoZWR1bGUgZXZlbnRzIHRoYXQgaGF2ZSBmaXJlZCBhbmQgZW50ZXJlZCB0aGVcbiAgICAgICAgIEFzeW5jIGpvYiBxdWV1ZSwgYnV0IGhhdmUgbm90IHlldCBydW4uICBUaG9zZSBqb2JzIG9ubHkgcnVuIGlmIFtudW1fZmlyZXNfdG9fc2tpcFxuICAgICAgICAgPSAwXSwgYW5kIG90aGVyd2lzZSBqdXN0IGRlY3JlbWVudCBpdC4gIFNvLCB0byByZXNjaGVkdWxlIGFuIGV2ZW50IGluIHN1Y2ggYVxuICAgICAgICAgc3RhdGUsIHdlIGluY3JlbWVudCBbbnVtX2ZpcmVzX3RvX3NraXBdIGFuZCBhZGQgYSBuZXcgYWxhcm0gdG8gdGhlIHRpbWluZ1xuICAgICAgICAgd2hlZWwuICopXG4gICAgICBtdXRhYmxlIG51bV9maXJlc190b19za2lwIDogaW50XG4gICAgOyAoKiBbc2NoZWR1bGVkX2F0XSBpcyB0aGUgdGltZSBhdCB3aGljaCBbdF0gaGFzIG1vc3QgcmVjZW50bHkgYmVlbiBzY2hlZHVsZWQgdG8gZmlyZS5cbiAgICAgICAgIFdoaWxlIFt0LmFsYXJtXSBpcyBzdGlsbCBpbiB0aGUgdGltaW5nIHdoZWVsLCB0aGlzIGlzIHRoZSBzYW1lIGFzIFtBbGFybS5hdFxuICAgICAgICAgdC5hbGFybV0uICopXG4gICAgICBtdXRhYmxlIHNjaGVkdWxlZF9hdCA6IFRpbWVfbnMudFxuICAgIDsgdGltZV9zb3VyY2UgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZmlyZWQgdCA9IEl2YXIucmVhZCB0LmZpcmVkXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfaCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuZmlyZWRcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAobm90IChUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybSkpXG4gICAgICAgICAgICAgZWxzZSBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybVxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChKb2Jfb3JfZXZlbnQuaXNfam9iIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKSkpXG4gICAgICAgIH5maXJlOmlnbm9yZVxuICAgICAgICB+ZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkIDogXyBGaXJlZC50IEl2YXIudCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgZmlyZWQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gaW52YXJpYW50X2EgYVxuICAgICAgICAgICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gaW52YXJpYW50X2ggaCkpXG4gICAgICAgIH5udW1fZmlyZXNfdG9fc2tpcDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fZmlyZXNfdG9fc2tpcCAtPiBhc3NlcnQgKG51bV9maXJlc190b19za2lwID49IDApKSlcbiAgICAgICAgfnNjaGVkdWxlZF9hdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzY2hlZHVsZWRfYXQgLT5cbiAgICAgICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgICAgICAgdGhlbiBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdIHNjaGVkdWxlZF9hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgdC5hbGFybSkpKVxuICAgICAgICB+dGltZV9zb3VyY2U6aWdub3JlKVxuICA7O1xuXG4gIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lX25zLnRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgc3RhdHVzIHQgOiBfIFN0YXR1cy50ID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5maXJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTY2hlZHVsZWRfYXQgdC5zY2hlZHVsZWRfYXRcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gQWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBIYXBwZW5lZCBoXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQuYWJvcnRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgSXZhci5maWxsIHQuZmlyZWQgKEFib3J0ZWQgYSk7XG4gICAgICByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQudGltZV9zb3VyY2UgdC5hbGFybTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IGFib3J0X2V4biB0IGEgPVxuICAgIG1hdGNoIGFib3J0IHQgYSB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGhhcHBlbmVkXCJdXG4gICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBhYm9ydGVkXCJdXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudClcbiAgbGV0IHNjaGVkdWxlIHQgPSB0LmFsYXJtIDwtIHJ1bl9hdF9pbnRlcm5hbCB0LnRpbWVfc291cmNlIHQuc2NoZWR1bGVkX2F0IHQuZmlyZSAoKVxuXG4gIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBhdCA6IF8gUmVzY2hlZHVsZV9yZXN1bHQudCA9XG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5yZXNjaGVkdWxlX2F0XCIgKHQsIGF0KSBbJXNleHBfb2Y6IChfLCBfKSB0ICogVGltZV9ucy50XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGlzX2luX3RpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm0gaW5cbiAgICAgIGxldCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlID1cbiAgICAgICAgVGltZV9ucy4oID4gKSBhdCAoVGltaW5nX3doZWVsLm5vdyBldmVudHMpXG4gICAgICBpblxuICAgICAgdC5zY2hlZHVsZWRfYXQgPC0gYXQ7XG4gICAgICAobWF0Y2ggYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSwgaXNfaW5fdGltaW5nX3doZWVsIHdpdGhcbiAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiAoKVxuICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgIHQudGltZV9zb3VyY2UuaGFuZGxlX2ZpcmVkIHQuYWxhcm07XG4gICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwICsgMTtcbiAgICAgICAgIHNjaGVkdWxlIHRcbiAgICAgICB8IHRydWUsIHRydWUgLT4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgZXZlbnRzIHQuYWxhcm0gfmF0KTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IChzcGFuX3RvX3RpbWUgdC50aW1lX3NvdXJjZSBzcGFuKVxuXG4gIGxldCBydW5fYXQgdGltZV9zb3VyY2Ugc2NoZWR1bGVkX2F0IGYgeiA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5ydW5fYXRcIiBzY2hlZHVsZWRfYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdO1xuICAgIGxldCB0ID1cbiAgICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgICA7IGZpcmUgPSBpZ25vcmUgKCogc2V0IGJlbG93ICopXG4gICAgICA7IGZpcmVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgIDsgbnVtX2ZpcmVzX3RvX3NraXAgPSAwXG4gICAgICA7IHNjaGVkdWxlZF9hdFxuICAgICAgOyB0aW1lX3NvdXJjZSA9IHJlYWRfb25seSB0aW1lX3NvdXJjZVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IGZpcmUgKCkgPVxuICAgICAgKCogW2ZpcmVdIHJ1bnMgaW4gYW4gQXN5bmMgam9iLiAgVGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gYWJvcnRlZCBhZnRlciB0aGUgam9iXG4gICAgICAgICB3YXMgZW5xdWV1ZWQsIHNvIFtmaXJlXSBtdXN0IGNoZWNrIFtmaXJlZF0uICopXG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgdC5udW1fZmlyZXNfdG9fc2tpcCA+IDBcbiAgICAgICAgdGhlbiB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgLSAxXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXN1bHQgPSBmIHogaW5cbiAgICAgICAgICAoKiBbZiB6XSBtYXkgaGF2ZSBhYm9ydGVkIHRoZSBldmVudCwgc28gd2UgbXVzdCBjaGVjayBbZmlyZWRdIGFnYWluLiAqKVxuICAgICAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZCB0aGVuIEl2YXIuZmlsbCB0LmZpcmVkIChIYXBwZW5lZCByZXN1bHQpKVxuICAgIGluXG4gICAgdC5maXJlIDwtIGZpcmU7XG4gICAgc2NoZWR1bGUgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGF0IHRpbWVfc291cmNlIHRpbWUgPSBydW5fYXQgdGltZV9zb3VyY2UgdGltZSBpZ25vcmUgKClcblxuICBsZXQgcnVuX2FmdGVyIHRpbWVfc291cmNlIHNwYW4gZiBhID1cbiAgICBydW5fYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKSBmIGFcbiAgOztcblxuICBsZXQgYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiA9IGF0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbilcbmVuZFxuXG5sZXQgYXRfdGltZXMgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpIHQgbmV4dF90aW1lID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGNob29zZVxuICAgICAgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChhdCB0IChuZXh0X3RpbWUgKCkpKSAoZnVuICgpIC0+IGBUaWNrKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgfCBgVGljayAtPlxuICAgICAgVGFpbC5leHRlbmQgdGFpbCAoKTtcbiAgICAgIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCB0IGNvbXB1dGVfc3BhbiA9XG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPiBUaW1lX25zLmFmdGVyIChub3cgdCkgKGNvbXB1dGVfc3BhbiAoKSkpXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCB0IGludGVydmFsID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBub3cgdFxuICBpblxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT5cbiAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2U6c3RhcnQgfmFmdGVyOihub3cgdCkgfmludGVydmFsICgpKVxuOztcblxubW9kdWxlIENvbnRpbnVlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbW1lZGlhdGVseVxuICAgIHwgQWZ0ZXIgb2YgVGltZV9ucy5TcGFuLnRcbiAgICB8IE5leHRfbXVsdGlwbGUgb2YgVGltZV9ucy50ICogVGltZV9ucy5TcGFuLnRcblxuICBsZXQgaW1tZWRpYXRlbHkgPSBJbW1lZGlhdGVseVxuXG4gIGxldCBhdCB0IHRpbWVfc291cmNlID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltbWVkaWF0ZWx5IC0+IFRpbWluZ193aGVlbC5ub3cgdGltZV9zb3VyY2UuZXZlbnRzXG4gICAgfCBBZnRlciBzcGFuIC0+IHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuXG4gICAgfCBOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkgLT5cbiAgICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXI6KG5vdyB0aW1lX3NvdXJjZSkgfmludGVydmFsICgpXG4gIDs7XG5lbmRcblxubGV0IHJ1bl9yZXBlYXRlZGx5XG4gICAgICA/KHN0YXJ0ID0gcmV0dXJuICgpKVxuICAgICAgP3N0b3BcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSB0cnVlKVxuICAgICAgPyhmaW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpKVxuICAgICAgdFxuICAgICAgfmZcbiAgICAgIH5jb250aW51ZVxuICA9XG4gIHN0YXJ0XG4gID4+PiBmdW4gKCkgLT5cbiAgbGV0IGFsYXJtID0gcmVmIChBbGFybS5udWxsICgpKSBpblxuICBsZXQgc3RvcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBOb25lIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBTb21lIHN0b3AgLT5cbiAgICAgIHVwb24gc3RvcCAoZnVuICgpIC0+XG4gICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgIWFsYXJtXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9hbGFybSB0ICFhbGFybTtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKCkpKTtcbiAgICAgIHN0b3BcbiAgaW5cbiAgKCogW3J1bl9mXSwgW2NvbnRpbnVlX2ZdLCBhbmQgW2NvbnRpbnVlX3RyeV93aXRoXSBhcmUgZGVmaW5lZCBzbyB0aGF0IHdlIGFsbG9jYXRlIHRoZWlyXG4gICAgIGNsb3N1cmVzIG9uY2UsIG5vdCBvbmNlIHBlciBpdGVyYXRpb24uICopXG4gIGxldCByZWMgcnVuX2YgKCkgPVxuICAgICgqIEJlZm9yZSBjYWxsaW5nIFtmXSwgd2Ugc3luY2hyb25vdXNseSBjaGVjayB3aGV0aGVyIFtzdG9wXSBpcyBkZXRlcm1pbmVkLiAqKVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBpZiBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gTW9uaXRvci50cnlfd2l0aCBmIH5ydW46YE5vdyB+cmVzdDpgUmFpc2UgPj4+IGNvbnRpbnVlX3RyeV93aXRoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZCA9IGYgKCkgaW5cbiAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGNvbnRpbnVlX2YgKCkgZWxzZSBkID4+PiBjb250aW51ZV9mKVxuICBhbmQgY29udGludWVfZiAoKSA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGFsYXJtIDo9IHJ1bl9hdF9pbnRlcm5hbCB0IChDb250aW51ZS5hdCBjb250aW51ZSB0KSBydW5fZiAoKVxuICBhbmQgY29udGludWVfdHJ5X3dpdGggb3JfZXJyb3IgPVxuICAgIChtYXRjaCBvcl9lcnJvciB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBlcnJvciAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGVycm9yKTtcbiAgICBjb250aW51ZV9mICgpXG4gIGluXG4gIHJ1bl9mICgpXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHQgc3BhbiBmID1cbiAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS5ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgc3BhblwiIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgcnVuX3JlcGVhdGVkbHkgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB+ZiB+Y29udGludWU6KEFmdGVyIHNwYW4pXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IHNwYW4gZiA9XG4gIGV2ZXJ5JyB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkOk5vbmUgc3BhbiAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBsZXQgbm93ID0gbm93IHQgaW5cbiAgbGV0IGJhc2UsIHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBOb25lIC0+IG5vdywgTm9uZVxuICAgIHwgU29tZSBzdGFydCAtPlxuICAgICAgKCBzdGFydFxuICAgICAgLCBTb21lXG4gICAgICAgICAgKGF0XG4gICAgICAgICAgICAgdFxuICAgICAgICAgICAgIChUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgIH5iYXNlOnN0YXJ0XG4gICAgICAgICAgICAgICAgfmFmdGVyOm5vd1xuICAgICAgICAgICAgICAgIH5jYW5fZXF1YWxfYWZ0ZXI6dHJ1ZVxuICAgICAgICAgICAgICAgIH5pbnRlcnZhbCkpIClcbiAgaW5cbiAgcnVuX3JlcGVhdGVkbHlcbiAgICB0XG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICB+ZlxuICAgIH5jb250aW51ZTooTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHdpdGhfdGltZW91dCB0IHNwYW4gZCA9XG4gIGxldCB0aW1lb3V0ID0gRXZlbnQuYWZ0ZXIgdCBzcGFuIGluXG4gIGNob29zZVxuICAgICgqIFRoZSBjb2RlIGJlbG93IGRvZXMgZXhoYXVzdGl2ZSBjYXNlIGFuYWx5c2lzIGluIGJvdGggW2Nob2ljZV1zLiAgQmVjYXVzZSBbdGltZW91dF1cbiAgICAgICBkb2VzIG5vdCBlc2NhcGUgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIGNlcnRhaW4gY2FzZXMgc2hvdWxkIGJlIGltcG9zc2libGUsIGFuZFxuICAgICAgIGFyZSBtYXJrZWQgYXMgc3VjaCB3aXRoIGV4Y2VwdGlvbnMuICBXZSBkbyBub3QgZXhwZWN0IHRob3NlIGV4Y2VwdGlvbnMgdG8gb2NjdXIsXG4gICAgICAgYnV0IGlmIHRoZXkgZG8sIGl0IGxpa2VseSBpbmRpY2F0ZXMgYSBidWcgaW4gW2Nob29zZV0gcmF0aGVyIHRoYW5cbiAgICAgICBbd2l0aF90aW1lb3V0XS4gKilcbiAgICBbIGNob2ljZSBkIChmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggRXZlbnQuYWJvcnQgdGltZW91dCAoKSB3aXRoXG4gICAgICAgICAoKiBbUHJldmlvdXNseV9oYXBwZW5lZF0gY2FuIG9jY3VyIGlmIGJvdGggW2RdIGFuZCBbd2FpdF0gYmVjb21lIGRldGVybWluZWQgYXRcbiAgICAgICAgICAgIHRoZSBzYW1lIHRpbWUsIGUuZy4gW3dpdGhfdGltZW91dCAoc2VjIDAuKSAocmV0dXJuICgpKV0uICopXG4gICAgICAgICB8IE9rIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiAoKVxuICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT5cbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBzaG91bGQgb25seSBhYm9ydCBvbmNlXCJdKTtcbiAgICAgICAgYFJlc3VsdCB2KVxuICAgIDsgY2hvaWNlIChFdmVudC5maXJlZCB0aW1lb3V0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBgVGltZW91dFxuICAgICAgICB8IEFib3J0ZWQgKCkgLT5cbiAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLndpdGhfdGltZW91dCBidWc6IGJvdGggY29tcGxldGVkIGFuZCB0aW1lZCBvdXRcIl0pXG4gICAgXVxuOztcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gICgqIEVhZ2VyIG1hcCB0byBwcm92aWRlIG1vcmUgYWNjdXJhdGUgdGltaW5ncyB3aGVuIFtmXSBpcyBzeW5jaHJvbm91cy4gKilcbiAgRWFnZXJfZGVmZXJyZWQubWFwIChmICgpKSB+ZjooZnVuIHJlc3VsdCAtPlxuICAgIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gICAgcmVzdWx0LCBkdXJhdGlvbilcbjs7XG5cbmxldCBvZl9zeW5jaHJvbm91cyB0ID0gdFxubGV0IHRvX3N5bmNocm9ub3VzIHQgPSB0XG5cbmxldCB0aW1pbmdfd2hlZWxfaGFzX2V2ZW50X2F0X29yX2JlZm9yZSB3aGVlbCB0aW1lID1cbiAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHdoZWVsXG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgbGV0IG5leHRfYWxhcm0gPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gd2hlZWwgaW5cbiAgICBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5LihuZXh0X2FsYXJtIDw9IHRpbWUpKVxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IHQgfnRvXyA9XG4gIGxldCBpc19xdWVzY2VudCA9XG4gICAgKCogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBqdXN0IGEgZmFzdCBjYXNlIG9mIFthZHZhbmNlX2J5X2FsYXJtc10sXG4gICAgICAgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY2FsbCB0byBbU2NoZWR1bGVyLnlpZWxkICgpXSBjYW4gYmUgZWxpZGVkLFxuICAgICAgIGhlbmNlIHRoZSBbY2FuX3J1bl9hX2pvYl0gY2hlY2suXG5cbiAgICAgICBXZSdyZSBub3QgY2hlY2tpbmcgZXBvbGwsIGFuZCB3ZSdyZSBub3QgY2hlY2tpbmcgdGhlIFtleHRlcm5hbF9qb2JzXS4gIFRoYXQgaXMgYW5cbiAgICAgICBvYnNlcnZhYmxlIGRpZmZlcmVuY2UsIGJ1dCBzaW5jZSBbYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yOk5vbmVdIGlzIGFscmVhZHlcbiAgICAgICBwcmV0dHkgYnJva2VuIHdoZW4gd2FpdGluZyBmb3IgZXh0ZXJuYWwgZXZlbnRzLCBpdCdzIG5vdCBnb2luZyB0byBiZSBtZWFuaW5nZnVsLlxuICAgICopXG4gICAgY2FuX3J1bl9hX2pvYiB0LnNjaGVkdWxlclxuICAgIHx8IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5oYXNfZXZlbnRzX3RvX3J1biB0XG4gICAgfHwgdGltaW5nX3doZWVsX2hhc19ldmVudF9hdF9vcl9iZWZvcmUgdC5ldmVudHMgdG9fXG4gIGluXG4gIGlmIGlzX3F1ZXNjZW50XG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgdHJ1ZSlcbjs7XG4iLCJ0eXBlIHQgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIEhhbmRsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5pbmNsdWRlIChTY2hlZHVsZXIgOiBtb2R1bGUgdHlwZSBvZiBTY2hlZHVsZXIgd2l0aCBtb2R1bGUgQnZhciA6PSBTY2hlZHVsZXIuQnZhcilcblxubGV0IHQgPSBTY2hlZHVsZXIudFxuXG5pbmNsdWRlIE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlclxuXG5sZXQgZmluZF9sb2NhbCBrZXkgPSBFeGVjdXRpb25fY29udGV4dC5maW5kX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkga2V5XG5cbmxldCB3aXRoX2xvY2FsIGtleSB2YWx1ZSB+ZiA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LndpdGhfbG9jYWwgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkga2V5IHZhbHVlXG4gIGluXG4gIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCBleGVjdXRpb25fY29udGV4dCB+ZlxuOztcblxubGV0IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSAodCAoKSkubWFpbl9leGVjdXRpb25fY29udGV4dFxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IG51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxubGV0IGhhc191cGNvbWluZ19ldmVudCB0ID0gbm90IChUaW1pbmdfd2hlZWwuaXNfZW1wdHkgKGV2ZW50cyB0KSlcbmxldCBuZXh0X3VwY29taW5nX2V2ZW50IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCAoZXZlbnRzIHQpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudF9leG4gdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biAoZXZlbnRzIHQpXG5sZXQgZXZlbnRfcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIChldmVudHMgdClcbmxldCBjeWNsZV9zdGFydCB0ID0gdC5jeWNsZV9zdGFydFxuXG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmYgPVxuICAoKiBVc2luZyBhbiBhcnJheSByYXRoZXIgdGhhbiBhIGxpc3QgZm9yIGNhY2hlIGVmZmljaWVuY3kuIFRoaXMgYW5kXG4gICAgIFtydW5fZXZlcnlfY3ljbGVfZW5kXSBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIHByb2dyYW0gaW5pdGlhbGl6YXRpb24sIHNvIHRoZVxuICAgICBhbGxvY2F0aW9uIGFuZCBnYXJiYWdlIGNyZWF0aW9uIHNob3VsZCBub3QgYmUgYW4gaXNzdWUuXG5cbiAgICAgTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBOIHRpbWVzIHRha2VzIE8oTl4yKSB0aW1lLCBidXQgdGhpcyBzaG91bGQgYmUgZmluZVxuICAgICBiZWNhdXNlIE4gaXMgc21hbGwuIFNhbWUgZm9yIFtydW5fZXZlcnlfY3ljbGVfZW5kXS4gKilcbiAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRcbjs7XG5cbmxldCBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmYgPVxuICB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5ydW5fZXZlcnlfY3ljbGVfZW5kXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIH5rZXk6aGFuZGxlIH5kYXRhOmY7XG4gIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbmxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmY7XG4gIGhhbmRsZVxuOztcblxubGV0IGFycmF5X3JlbW92ZV9maXJzdCBhcnIgfmYgPVxuICBtYXRjaCBBcnJheS5maW5kaSBhcnIgfmYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGlkeCwgXykgLT5cbiAgICBTb21lXG4gICAgICAoQXJyYXkuaW5pdFxuICAgICAgICAgKEFycmF5Lmxlbmd0aCBhcnIgLSAxKVxuICAgICAgICAgfmY6KGZ1biBpIC0+IGlmIGkgPCBpZHggdGhlbiBhcnIuKGkpIGVsc2UgYXJyLihpICsgMSkpKVxuOztcblxubGV0IHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBhcnIgZiA9XG4gICgqIFJlbW92ZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiBbZl0gZnJvbSBbYXJyXS4gTW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBtYXkgYmUgcHJlc2VudCxcbiAgICAgYnV0IHJlbW92YWwgaXMgcmVmZXJlbmNlLWNvdW50ZWQgYnkgW3J1bl9ldmVyeV9jeWNsZV8oc3RhcnR8ZW5kKV9zdGF0ZV0gdGFibGVzLiAqKVxuICBtYXRjaCBhcnJheV9yZW1vdmVfZmlyc3QgfmY6KGZ1biBfIGcgLT4gcGh5c19lcXVhbCBmIGcpIGFyciB3aXRoXG4gIHwgU29tZSBhcnIgLT4gYXJyXG4gIHwgTm9uZSAtPlxuICAgICgqIFRoaXMgc2hvdWxkIGJlIHVucmVhY2hhYmxlLCBzZWUgdGhlIFtpbnZhcmlhbnRdIGluIFtzY2hlZHVsZXIxLm1sXS4gKilcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJTY2hlZHVsZXIucmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGNhbGxlZCB3aXRoIGEgaG9vayB0aGF0IGlzbid0IHJlZ2lzdGVyZWRcIl1cbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBzdGFydCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPlxuICAgIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBlbmQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgZlxuOztcblxubGV0IG1hcF9jeWNsZV90aW1lcyB0IH5mID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgKGYgdC5sYXN0X2N5Y2xlX3RpbWUpKSlcbjs7XG5cbmxldCBsb25nX2N5Y2xlcyB0IH5hdF9sZWFzdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPlxuICAgICAgaWYgVGltZV9ucy5TcGFuLiggPj0gKSB0Lmxhc3RfY3ljbGVfdGltZSBhdF9sZWFzdFxuICAgICAgdGhlbiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV90aW1lKSlcbjs7XG5cbmxldCBjeWNsZV9udW1fam9icyB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX251bV9qb2JzKSlcbjs7XG5cbmxldCBjeWNsZV9jb3VudCB0ID0gdC5jeWNsZV9jb3VudFxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgaW50ID1cbiAgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA8LSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIGludFxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgPVxuICBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuOztcblxubGV0IHNldF90aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayB0IGYgPSB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDwtIGZcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmV4dGVybmFsX2pvYnMgKEV4dGVybmFsX2pvYi5UIChleGVjdXRpb25fY29udGV4dCwgZiwgYSkpO1xuICB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rICgpXG47O1xuXG5sZXQgc2V0X2V2ZW50X2FkZGVkX2hvb2sgdCBmID0gdC5ldmVudF9hZGRlZF9ob29rIDwtIFNvbWUgZlxubGV0IHNldF9qb2JfcXVldWVkX2hvb2sgdCBmID0gdC5qb2JfcXVldWVkX2hvb2sgPC0gU29tZSBmXG5cbmxldCBjcmVhdGVfYWxhcm0gdCBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIEdjLkV4cGVydC5BbGFybS5jcmVhdGUgKGZ1biAoKSAtPlxuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiAoKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyIHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgaGVhcF9ibG9jayA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy5cblxuICAgICAgIEJ5IHB1dHRpbmcgW2hlYXBfYmxvY2tdIGluIFtleHRlcm5hbF9qb2JzXSwgd2UgYXJlIGtlZXBpbmcgaXQgYWxpdmUgdW50aWwgdGhlIG5leHRcbiAgICAgICB0aW1lIHRoZSBhc3luYyBzY2hlZHVsZXIgZ2V0cyBhcm91bmQgdG8gZGVxdWV1ZWluZyBpdC4gIENhbGxpbmdcbiAgICAgICBbdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gZW5zdXJlcyB0aGF0IHdpbGwgaGFwcGVuIGluIHNob3J0IG9yZGVyLiAgVGh1cyxcbiAgICAgICB3ZSBhcmUgbm90IGRyYW1hdGljYWxseSBpbmNyZWFzaW5nIHRoZSBsaWZldGltZSBvZiBbaGVhcF9ibG9ja10sIHNpbmNlIHRoZSBPQ2FtbFxuICAgICAgIHJ1bnRpbWUgYWxyZWFkeSByZXN1cnJlY3RlZCBbaGVhcF9ibG9ja10gc28gdGhhdCB3ZSBjb3VsZCByZWZlciB0byBpdCBoZXJlLiAgVGhlXG4gICAgICAgT0NhbWwgcnVudGltZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGZpbmFsaXplciBmdW5jdGlvbiB3aGVuIGl0IG5vdGljZWQgW2hlYXBfYmxvY2tdXG4gICAgICAgY291bGQgYmUgZmluYWxpemVkLCBzbyB0aGVyZSBpcyBubyBpbmZpbml0ZSBsb29wIGluIHdoaWNoIHdlIGFyZSBjYXVzaW5nIHRoZVxuICAgICAgIGZpbmFsaXplciB0byBydW4gYWdhaW4uICBBbHNvLCBPQ2FtbCBkb2VzIG5vdCBpbXBvc2UgYW55IHJlcXVpcmVtZW50IG9uIGZpbmFsaXplclxuICAgICAgIGZ1bmN0aW9ucyB0aGF0IHRoZXkgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBibG9jaywgc28gaXQncyBmaW5lIHRoYXQgd2Uga2VlcFxuICAgICAgIFtoZWFwX2Jsb2NrXSBhcm91bmQgdW50aWwgbGF0ZXIuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJlbnF1ZXVlaW5nIGZpbmFsaXplclwiO1xuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBoZWFwX2Jsb2NrXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplclwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VdIGluc3RlYWQgb2YgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gYmVjYXVzZSB0aGUgbGF0dGVyXG4gICAgIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlXSB0byBydW4gZmluYWxpemVycyBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIHQgeCBmID1cbiAgYWRkX2ZpbmFsaXplciB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgKGZ1biBoZWFwX2Jsb2NrIC0+XG4gICAgZiAoSGVhcF9ibG9jay52YWx1ZSBoZWFwX2Jsb2NrKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3QgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciAoKSA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzXG4gICAgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKClcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJfbGFzdF0gYmVjYXVzZVxuICAgICB0aGUgbGF0dGVyIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIHRvIHJ1biBmaW5hbGl6ZXJzXG4gICAgIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHQgeCBmID0gYWRkX2ZpbmFsaXplcl9sYXN0IHQgKEhlYXBfYmxvY2suY3JlYXRlX2V4biB4KSBmXG5cbigqKiBbZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmRdIHNldHMgdGhlIG51bWJlciBvZiBub3JtYWwgam9icyBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzXG4gICAgY3ljbGUgdG8gemVyby4gIFRodXMsIGFmdGVyIHRoZSBjdXJyZW50bHkgcnVubmluZyBqb2IgY29tcGxldGVzLCB0aGUgc2NoZWR1bGVyIHdpbGxcbiAgICBzd2l0Y2ggdG8gbG93IHByaW9yaXR5IGpvYnMgYW5kIHRoZW4gZW5kIHRoZSBjdXJyZW50IGN5Y2xlLiAqKVxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kIHQgPVxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgMFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+bm93ID1cbiAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB+dG9fOm5vdyB+c2VuZF9leG5cbjs7XG5cbmxldCBydW5fY3ljbGUgdCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwicnVuX2N5Y2xlIHN0YXJ0aW5nXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgdC5jeWNsZV9jb3VudCA8LSB0LmN5Y2xlX2NvdW50ICsgMTtcbiAgdC5jeWNsZV9zdGFydCA8LSBub3c7XG4gIHQuaW5fY3ljbGUgPC0gdHJ1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC55aWVsZCAoKTtcbiAgbGV0IG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSA9IG51bV9qb2JzX3J1biB0IGluXG4gIEFycmF5Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBhZHZhbmNlX2Nsb2NrIHQgfm5vdztcbiAgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTp0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlO1xuICBsZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICAgIG1hdGNoIFNjaGVkdWxlci5ydW5fam9icyB0IHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpO1xuICAgICAgKCogW3J1bl9qb2JzXSBzdG9wcGVkIGR1ZSB0byBhbiBleG4uICBUaGVyZSBtYXkgc3RpbGwgYmUgam9icyB0aGF0IGNvdWxkIGJlXG4gICAgICAgICBydW4gdGhpcyBjeWNsZSwgc28gW3J1bl9qb2JzXSBhZ2Fpbi4gKilcbiAgICAgIHJ1bl9qb2JzIHRcbiAgaW5cbiAgcnVuX2pvYnMgdDtcbiAgbGV0IGN5Y2xlX3RpbWUgPSBUaW1lX25zLmRpZmYgKFRpbWVfbnMubm93ICgpKSB0LmN5Y2xlX3N0YXJ0IGluXG4gIHQubGFzdF9jeWNsZV90aW1lIDwtIGN5Y2xlX3RpbWU7XG4gIHQubGFzdF9jeWNsZV9udW1fam9icyA8LSBudW1fam9ic19ydW4gdCAtIG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZTtcbiAgdC50b3RhbF9jeWNsZV90aW1lIDwtIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgY3ljbGVfdGltZSk7XG4gIGlmIEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIEJ2YXIuYnJvYWRjYXN0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gKCk7XG4gIEFycmF5Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgdC5pbl9jeWNsZSA8LSBmYWxzZTtcbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIERlYnVnLmxvZ1xuICAgICAgXCJydW5fY3ljbGUgZmluaXNoZWRcIlxuICAgICAgKHVuY2F1Z2h0X2V4biB0LCBpc19zb21lIChuZXh0X3VwY29taW5nX2V2ZW50IHQpKVxuICAgICAgWyVzZXhwX29mOiBFcnJvci50IG9wdGlvbiAqIGJvb2xdXG47O1xuXG5sZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gc3RhcnRpbmdcIjtcbiAgbGV0IHQgPSB0ICgpIGluXG4gIGlmIGlzX2RlYWQgdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBjYW5ub3QgcHJvY2VlZCAtLSBzY2hlZHVsZXIgaXMgZGVhZFwiXG4gICAgICAgICAgfnNjaGVkdWxlcjoodCA6IHQpXTtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBydW5fY3ljbGUgdDtcbiAgICBhZHZhbmNlX2Nsb2NrIHQgfm5vdzooVGltZV9ucy5ub3cgKCkpO1xuICAgIGlmIGNhbl9ydW5fYV9qb2IgdCB0aGVuIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgKCogUmVzZXQgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHdoZW4gd2UncmUgbm90IGluXG4gICAgIGEgam9iLCBbY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IG1haW5fZXhlY3V0aW9uX2NvbnRleHRdLiAqKVxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0Lm1haW5fZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gZmluaXNoZWRcIjtcbiAgT3B0aW9uLml0ZXIgKHVuY2F1Z2h0X2V4biB0KSB+ZjpFcnJvci5yYWlzZVxuOztcblxubGV0IG1ha2VfYXN5bmNfdW51c2FibGUgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICB0LmNoZWNrX2FjY2Vzc1xuICA8LSBTb21lXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIHJhaXNlX3MgWyVzZXhwIFwiQXN5bmMgc2NoZWR1bGVyIGlzIHVudXNhYmxlIGR1ZSB0byBbbWFrZV9hc3luY191bnVzYWJsZV1cIl0pXG47O1xuXG5sZXQgcmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3MgKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJyZXNldF9pbl9mb3JrZWRfcHJvY2Vzc1wiO1xuICAoKiBUaGVyZSBpcyBubyBuZWVkIHRvIGVtcHR5IFttYWluX21vbml0b3JfaG9sZV0uICopXG4gIFNjaGVkdWxlci4odF9yZWYgOj0gY3JlYXRlICgpKVxuOztcblxubGV0IGNoZWNrX2ludmFyaWFudHMgdCA9IHQuY2hlY2tfaW52YXJpYW50c1xubGV0IHNldF9jaGVja19pbnZhcmlhbnRzIHQgYiA9IHQuY2hlY2tfaW52YXJpYW50cyA8LSBiXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIHQgYiA9IHQucmVjb3JkX2JhY2t0cmFjZXMgPC0gYlxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgdC55aWVsZFxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPyhtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ID0gZmFsc2UpIHQgPVxuICBpZiBtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSBCdmFyLndhaXQgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpblxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIueWllbGRfZXZlcnkgZ290IG5vbnBvc2l0aXZlIGNvdW50XCIgKG4gOiBpbnQpXVxuICBlbHNlIGlmIG4gPSAxXG4gIHRoZW4gc3RhZ2UgKGZ1biB0IC0+IHlpZWxkIHQpXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF91bnRpbF95aWVsZCA9IHJlZiBuIGluXG4gICAgc3RhZ2UgKGZ1biB0IC0+XG4gICAgICBkZWNyIGNvdW50X3VudGlsX3lpZWxkO1xuICAgICAgaWYgIWNvdW50X3VudGlsX3lpZWxkID4gMFxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb3VudF91bnRpbF95aWVsZCA6PSBuO1xuICAgICAgICB5aWVsZCB0KSkpXG47O1xuXG5sZXQgdG90YWxfY3ljbGVfdGltZSB0ID1cbiAgKCogQWRqdXN0IGZvciB0aGUgZmFjdCB0aGUgY2FsbGVyJ3MgcHJvYmFibHkgYW4gQXN5bmMgam9iLiAqKVxuICBpZiB0LmluX2N5Y2xlXG4gIHRoZW4gKFxuICAgIGxldCB0aGlzX2N5Y2xlX3RpbWUgPSBUaW1lX25zLihkaWZmIChub3cgKCkpIHQuY3ljbGVfc3RhcnQpIGluXG4gICAgVGltZV9ucy5TcGFuLih0LnRvdGFsX2N5Y2xlX3RpbWUgKyB0aGlzX2N5Y2xlX3RpbWUpKVxuICBlbHNlIHQudG90YWxfY3ljbGVfdGltZVxuOztcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmsgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdvcmtlcl9yZXN1bHQgPSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHRcblxuXG4gIGxldCByZWMgcnVuIHQgPSBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nOjFfMDAwXG5cbiAgYW5kIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiB5aWVsZF90aGVuX3J1biB0XG4gICAgZWxzZSBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIChcbiAgICAgIGxldCB3b3JrZXIgPSBEZXF1ZS5kZXF1ZXVlX2Zyb250X2V4biB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICAgIHNldF9leGVjdXRpb25fY29udGV4dCB0IHdvcmtlci5leGVjdXRpb25fY29udGV4dDtcbiAgICAgIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG5cbiAgYW5kIHlpZWxkX3RoZW5fcnVuIHQgPVxuICAgIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gRGVmZXJyZWQudXBvbiAoeWllbGQgdCkgKGZ1biAoKSAtPiBydW4gdClcblxuICBhbmQgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgYXNzZXJ0IChwaHlzX2VxdWFsIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQpO1xuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiAoXG4gICAgICBEZXF1ZS5lbnF1ZXVlX2Zyb250IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyB3b3JrZXI7XG4gICAgICB5aWVsZF90aGVuX3J1biB0KVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nIC0gMSBpblxuICAgICAgbWF0Y2ggd29ya2VyLmV4ZWMgKCkgd2l0aFxuICAgICAgfCBGaW5pc2hlZCAtPiBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IE5vdF9maW5pc2hlZCAtPiBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBidCk7XG4gICAgICAgIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgfmYgPVxuICAgIGxldCB0ID0gdCAoKSBpblxuICAgIGxldCBxdWV1ZSA9IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgIGxldCBydW5uaW5nID0gbm90IChEZXF1ZS5pc19lbXB0eSBxdWV1ZSkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkgfnByaW9yaXR5Okxvd1xuICAgIGluXG4gICAgRGVxdWUuZW5xdWV1ZV9iYWNrIHF1ZXVlIHsgZXhlY3V0aW9uX2NvbnRleHQ7IGV4ZWMgPSBmIH07XG4gICAgaWYgbm90IHJ1bm5pbmcgdGhlbiBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2JlbmNoID0gc3RydWN0XG4gIGxldCBhZHZhbmNlX2Nsb2NrID0gYWR2YW5jZV9jbG9ja1xuZW5kXG5cbmxldCBpbl9jeWNsZSB0ID0gdC5pbl9jeWNsZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgQ291bnRpbmdfc2VtYXBob3JlIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB3YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIHJlbGVhc2Vfam9iX3Rva2VuIDogdCAtPiB1bml0XG4gIHZhbCBhYm9ydCA6IHQgLT4gdW5pdFxuICB2YWwgY3JlYXRlIDogbWF4X2NvbmN1cnJlbnRfam9iczppbnQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgICA7IG11dGFibGUgd2FpdGVyIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGFib3J0ZWQgOiBib29sXG4gICAgfVxuXG4gIGxldCB3YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuICh7IG1heF9jb25jdXJyZW50X2pvYnM7IHdhaXRlcjsgYWJvcnRlZCB9IGFzIHQpID1cbiAgICBtYXRjaCBhYm9ydGVkIHdpdGhcbiAgICB8IHRydWUgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBpZiBtYXhfY29uY3VycmVudF9qb2JzID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHQubWF4X2NvbmN1cnJlbnRfam9icyA8LSBtYXhfY29uY3VycmVudF9qb2JzIC0gMTtcbiAgICAgICAgRGVmZXJyZWQucmV0dXJuICgpKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgd2FpdGVyKTtcbiAgICAgICAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICB0LndhaXRlciA8LSBTb21lIGl2YXI7XG4gICAgICAgIEl2YXIucmVhZCBpdmFyKVxuICA7O1xuXG4gIGxldCByZWxlYXNlX2pvYl90b2tlbiAoeyBtYXhfY29uY3VycmVudF9qb2JzOyB3YWl0ZXI7IGFib3J0ZWQgPSBfIH0gYXMgdCkgPVxuICAgIG1hdGNoIHdhaXRlciB3aXRoXG4gICAgfCBTb21lIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC53YWl0ZXIgPC0gTm9uZVxuICAgIHwgTm9uZSAtPiB0Lm1heF9jb25jdXJyZW50X2pvYnMgPC0gbWF4X2NvbmN1cnJlbnRfam9icyArIDFcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9XG4gICAgdC5hYm9ydGVkIDwtIHRydWU7XG4gICAgdC53YWl0ZXIgPC0gTm9uZVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgIHsgbWF4X2NvbmN1cnJlbnRfam9iczsgd2FpdGVyID0gTm9uZTsgYWJvcnRlZCA9IGZhbHNlIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgY29tcHV0ZSA6XG4gICAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LnQgLT4gQ291bnRpbmdfc2VtYXBob3JlLnQgLT4gKCdhIERlZmVycmVkLnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cbiAgW0BAdW5ib3hlZF1cblxuICBsZXQgcmV0dXJuIHggPSB7IGNvbXB1dGUgPSAoZnVuIF8gXyBrIC0+IGsgKHJldHVybiB4KSkgfVxuXG4gIGxldCBtYXAgPVxuICAgIGBDdXN0b21cbiAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgeyBjb21wdXRlID1cbiAgICAgICAgICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgKGxldCVtYXAgcmVzdWx0ID0gZCBpblxuICAgICAgICAgICAgICAgICAgICAgZiByZXN1bHQpKSlcbiAgICAgICAgIH0pXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHRfZiB0ID1cbiAgICB7IGNvbXB1dGUgPVxuICAgICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICAgIHRfZi5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGRmIC0+XG4gICAgICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGR2IC0+XG4gICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgIChsZXQlYmluZCBmID0gZGYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgdiA9IGR2IGluXG4gICAgICAgICAgICAgICAgICBmIHYpKSkpXG4gICAgfVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChUKVxuXG5sZXQgZW5xdWV1ZScgc2NoZWR1bGVyIGN0eCBmID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgY3R4IChmdW4gKCkgLT4gdXBvbiAoZiAoKSkgKEl2YXIuZmlsbCBpdmFyKSkgKCk7XG4gIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgam9iIGYgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgRGVmZXJyZWQudXBvbiAoQ291bnRpbmdfc2VtYXBob3JlLndhaXRfdG9fYWNxdWlyZV9qb2JfdG9rZW4gc2VtYXBob3JlKSAoZnVuICgpIC0+XG4gICAgICAgICAgIGtcbiAgICAgICAgICAgICAoZW5xdWV1ZScgKFNjaGVkdWxlci50ICgpKSBleGVjX2N0eCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgICAgICAgICAgICAgIENvdW50aW5nX3NlbWFwaG9yZS5yZWxlYXNlX2pvYl90b2tlbiBzZW1hcGhvcmU7XG4gICAgICAgICAgICAgICAgYSkpKSlcbiAgfVxuOztcblxubGV0IHJ1biB0IH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgbGV0IHNlbWFwaG9yZSA9IENvdW50aW5nX3NlbWFwaG9yZS5jcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgKCogVGhlIG5hbWUgaXMgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgdG8gcHJldmVudCBbTW9uaXRvci5zZW5kX2V4bl1cbiAgICAgZnJvbSBhcHBlbmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBtb25pdG9yIHRvIHRoZSBleGNlcHRpb25zIHdlIGZvcndhcmQuXG4gICAgIFRoaXMgbWF0dGVycyBiZWNhdXNlIHdlIHdhbnQgc2ltbGlhciBiZWhhdmlvciB0byBbVGhyb3R0bGVdIGFuZCBub3QgYnJlYWtcbiAgICAgZXhpc3RpbmcgdGVzdHMuICopXG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJcIiAoKSBpblxuICBsZXQgcGFyZW50X21vbml0b3IgPSBNb25pdG9yLmN1cnJlbnQgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIG1vbml0b3IgfmY6KGZ1biBlcnIgLT5cbiAgICBDb3VudGluZ19zZW1hcGhvcmUuYWJvcnQgc2VtYXBob3JlO1xuICAgIE1vbml0b3Iuc2VuZF9leG4gcGFyZW50X21vbml0b3IgZXJyKTtcbiAgbGV0IGV4ZWNfY3R4ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgfm1vbml0b3JcbiAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoU2NoZWR1bGVyLnQgKCkpKVxuICBpblxuICBsZXQgaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biByIC0+IERlZmVycmVkLnVwb24gciAoSXZhci5maWxsIGl2YXIpKTtcbiAgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBvZl90aHVuayB0aHVuayA9XG4gIHsgY29tcHV0ZSA9XG4gICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICBsZXQgdCA9IHRodW5rICgpIGluXG4gICAgICAgICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIGspXG4gIH1cbjs7XG5cbmxldCAoICo+ICkgdDEgdDIgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgdDEuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkMSAtPlxuICAgICAgICAgICB0Mi5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQyIC0+XG4gICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgKGxldCViaW5kICgpID0gZDEgaW5cbiAgICAgICAgICAgICAgICBkMikpKSlcbiAgfVxuOztcblxubGV0IGJvdGhfdW5pdCA9ICggKj4gKVxuIiwib3BlbiEgQmFzZVxuXG50eXBlIF8gdCA9XG4gIHwgU3RhY2sgOiAnYSBTdGFjay50IC0+ICdhIHRcbiAgfCBDb3VudGVyIDogeyBtdXRhYmxlIGxlbmd0aCA6IGludCB9IC0+IHVuaXQgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG9mX2xpc3QgbGlzdCA9IFN0YWNrIChTdGFjay5vZl9saXN0IGxpc3QpXG5cbmxldCBjcmVhdGVfY291bnRlciB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXJdIGdvdCBuZWdhdGl2ZSBsZW5ndGhcIiAobGVuZ3RoIDogaW50KV07XG4gIENvdW50ZXIgeyBsZW5ndGggfVxuOztcblxubGV0IGxlbmd0aCAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLmxlbmd0aCBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoXG47O1xuXG5sZXQgY2xlYXIgKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5jbGVhciBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBwdXNoICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5wdXNoIHMgYVxuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSByLmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3BfZXhuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucG9wX2V4biBzXG4gIHwgQ291bnRlciByIC0+XG4gICAgaWYgci5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJbU3RhY2tfb3JfY291bnRlci5wb3BfZXhuXSBvZiBlbXB0eSBzdGFja1wiXTtcbiAgICByLmxlbmd0aCA8LSByLmxlbmd0aCAtIDFcbjs7XG5cbmxldCBpdGVyICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBhIC0+IHVuaXQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5pdGVyIHMgfmZcbiAgfCBDb3VudGVyIHIgLT5cbiAgICBmb3IgXyA9IDEgdG8gci5sZW5ndGggZG9cbiAgICAgIGYgKClcbiAgICBkb25lXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG50eXBlICdhIG91dGNvbWUgPVxuICBbIGBPayBvZiAnYVxuICB8IGBBYm9ydGVkXG4gIHwgYFJhaXNlZCBvZiBleG5cbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIEludGVybmFsX2pvYiA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdiIERlZmVycmVkLnQpIC0+ICdhIHQgKiAnYiBvdXRjb21lIERlZmVycmVkLnRcblxuICAoKiBFdmVyeSBpbnRlcm5hbCBqb2Igd2lsbCBldmVudHVhbGx5IGJlIGVpdGhlciBbcnVuXSBvciBbYWJvcnRdZWQsIGJ1dCBub3QgYm90aC4gKilcblxuICB2YWwgcnVuIDogJ2EgdCAtPiAnYSAtPiBbIGBPayB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gIHZhbCBhYm9ydCA6IF8gdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogWyBgQWJvcnQgfCBgU3RhcnQgb2YgJ2EgXSBJdmFyLnRcbiAgICA7IG91dGNvbWUgOiBbIGBPayB8IGBBYm9ydGVkIHwgYFJhaXNlZCBdIERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSB3b3JrID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2glYmluZCBJdmFyLnJlYWQgc3RhcnQgd2l0aFxuICAgICAgfCBgQWJvcnQgLT4gcmV0dXJuIGBBYm9ydGVkXG4gICAgICB8IGBTdGFydCBhIC0+XG4gICAgICAgIChtYXRjaCVtYXBcbiAgICAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICAgIChmdW4gKCkgLT4gd29yayBhKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBPayBhIC0+IGBPayBhXG4gICAgICAgICB8IEVycm9yIGV4biAtPiBgUmFpc2VkIGV4bilcbiAgICBpblxuICAgIGxldCBvdXRjb21lID1cbiAgICAgIG1hdGNoJW1hcCByZXN1bHQgd2l0aFxuICAgICAgfCBgT2sgXyAtPiBgT2tcbiAgICAgIHwgYEFib3J0ZWQgLT4gYEFib3J0ZWRcbiAgICAgIHwgYFJhaXNlZCBfIC0+IGBSYWlzZWRcbiAgICBpblxuICAgIGxldCB0ID0geyBzdGFydDsgb3V0Y29tZSB9IGluXG4gICAgdCwgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHJ1biB0IGEgPVxuICAgIEl2YXIuZmlsbCB0LnN0YXJ0IChgU3RhcnQgYSk7XG4gICAgbWF0Y2glbWFwIHQub3V0Y29tZSB3aXRoXG4gICAgfCBgQWJvcnRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChgT2sgfCBgUmFpc2VkKSBhcyB4IC0+IHhcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9IEl2YXIuZmlsbCB0LnN0YXJ0IGBBYm9ydFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgY29udGludWVfb25fZXJyb3IgOiBib29sXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9icyA6IGludFxuICA7ICgqIFtqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VdIGhvbGRzIHJlc291cmNlcyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZSBieSBhXG4gICAgICAgcnVubmluZyBqb2IuICopXG4gICAgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIDogJ2EgU3RhY2tfb3JfY291bnRlci50XG4gIDtcbiAgICAoKiBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyB0aGUgcXVldWUgb2Ygam9icyB0aGF0IGhhdmVuJ3QgeWV0IHN0YXJ0ZWQuICopXG4gICAgam9ic193YWl0aW5nX3RvX3N0YXJ0IDogJ2EgSW50ZXJuYWxfam9iLnQgUXVldWUudFxuICA7ICgqIFswIDw9IG51bV9qb2JzX3J1bm5pbmcgPD0gbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBudW1fam9ic19ydW5uaW5nIDogaW50XG4gIDsgKCogW2NhcGFjaXR5X2F2YWlsYWJsZV0gaXMgW1NvbWUgaXZhcl0gaWYgdXNlciBjb2RlIGhhcyBjYWxsZWQgW2NhcGFjaXR5X2F2YWlsYWJsZSB0XVxuICAgICAgIGFuZCBpcyB3YWl0aW5nIHRvIGJlIG5vdGlmaWVkIHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGluIHRoZSB0aHJvdHRsZS5cbiAgICAgICBbbWF5YmVfc3RhcnRfam9iXSB3aWxsIGZpbGwgW2l2YXJdIHdoZW4gY2FwYWNpdHkgYmVjb21lcyBhdmFpbGFibGUsIGkuZS4gd2hlblxuICAgICAgIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIGVtcHR5IGFuZCBbbnVtX2pvYnNfcnVubmluZyA8IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgY2FwYWNpdHlfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gIDsgKCogW2lzX2RlYWRdIGlzIHRydWUgaWYgW3RdIHdhcyBraWxsZWQgZHVlIHRvIGEgam9iIHJhaXNpbmcgYW4gZXhjZXB0aW9uIG9yIFtraWxsIHRdXG4gICAgICAgYmVpbmcgY2FsbGVkLiAqKVxuICAgIG11dGFibGUgaXNfZGVhZCA6IGJvb2xcbiAgOyAoKiBbY2xlYW5zXSBob2xkcyBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjbGVhbiBlYWNoIHJlc291cmNlIHdoZW4gW3RdIGlzXG4gICAgICAga2lsbGVkLiAqKVxuICAgIG11dGFibGUgY2xlYW5zIDogKCdhIC0+IHVuaXQgRGVmZXJyZWQudCkgbGlzdFxuICA7ICgqIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBpcyB0aGUgbnVtYmVyIG9mIHJlc291cmNlcyB3aG9zZSBjbGVhbiBmdW5jdGlvbnMgaGF2ZVxuICAgICAgIG5vdCB5ZXQgY29tcGxldGVkLiAgV2hpbGUgW3RdIGlzIGFsaXZlLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9XG4gICAgICAgbWF4X2NvbmN1cnJlbnRfam9ic10uICBPbmNlIFt0XSBpcyBraWxsZWQsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBkZWNyZWFzZXMgdG9cbiAgICAgICB6ZXJvIG92ZXIgdGltZSBhcyB0aGUgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIG11dGFibGUgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA6IGludFxuICA7ICgqIFtjbGVhbmVkXSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gcmVhY2hlcyB6ZXJvLFxuICAgICAgIGkuZS4gYWZ0ZXIgW3RdIGlzIGtpbGxlZCBhbmQgYWxsIGl0cyBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgY2xlYW5lZCA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb250aW51ZV9vbl9lcnJvcjppZ25vcmVcbiAgICAgIH5tYXhfY29uY3VycmVudF9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfY29uY3VycmVudF9qb2JzIC0+IGFzc2VydCAobWF4X2NvbmN1cnJlbnRfam9icyA+IDApKSlcbiAgICAgIH5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2U6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSAtPlxuICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOmludmFyaWFudF9hO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZVxuICAgICAgICAgICAgID0gaWYgdC5pc19kZWFkIHRoZW4gMCBlbHNlIHQubWF4X2NvbmN1cnJlbnRfam9icyAtIHQubnVtX2pvYnNfcnVubmluZykpKVxuICAgICAgfmpvYnNfd2FpdGluZ190b19zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvbiBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgLT5cbiAgICAgICAgICAgaWYgdC5pc19kZWFkIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBqb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5udW1fam9ic19ydW5uaW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fam9ic19ydW5uaW5nIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+Y2FwYWNpdHlfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgfmlzX2RlYWQ6aWdub3JlXG4gICAgICB+Y2xlYW5zOmlnbm9yZVxuICAgICAgfm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIGFzc2VydCB0LmlzX2RlYWQpKVxuICAgICAgfmNsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNsZWFuZWQgLT5cbiAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIGNsZWFuZWQgdGhlbiBhc3NlcnQgKHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDApKSlcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlRocm90dGxlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IF8gdCldXG47O1xuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAna2luZCkgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSB0XG5lbmRcblxubGV0IG51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQgdCA9IFF1ZXVlLmxlbmd0aCB0LmpvYnNfd2FpdGluZ190b19zdGFydFxuXG5sZXQgY2xlYW5fcmVzb3VyY2UgdCBhID1cbiAgRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHQuY2xlYW5zIH5mOihmdW4gZiAtPiBmIGEpKVxuICA+Pj4gZnVuICgpIC0+XG4gIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8LSB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLSAxO1xuICBpZiB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwIHRoZW4gSXZhci5maWxsIHQuY2xlYW5lZCAoKVxuOztcblxubGV0IGtpbGwgdCA9XG4gIGlmIG5vdCB0LmlzX2RlYWRcbiAgdGhlbiAoXG4gICAgdC5pc19kZWFkIDwtIHRydWU7XG4gICAgUXVldWUuaXRlciB0LmpvYnNfd2FpdGluZ190b19zdGFydCB+ZjpJbnRlcm5hbF9qb2IuYWJvcnQ7XG4gICAgUXVldWUuY2xlYXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ7XG4gICAgU3RhY2tfb3JfY291bnRlci5pdGVyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOihmdW4gYSAtPiBjbGVhbl9yZXNvdXJjZSB0IGEpO1xuICAgIFN0YWNrX29yX2NvdW50ZXIuY2xlYXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UpXG47O1xuXG5sZXQgYXRfa2lsbCB0IGYgPVxuICAoKiBXZSBwcmVzZXJ2ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBleGNlcHRpb25zIHJhaXNlZCBieSBbZl0gZ28gdG8gdGhlIG1vbml0b3JcbiAgICAgaW4gZWZmZWN0IHdoZW4gW2F0X2tpbGxdIHdhcyBjYWxsZWQuICopXG4gIGxldCBmID0gdW5zdGFnZSAoTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyLnByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmKSBpblxuICB0LmNsZWFucyA8LSBmIDo6IHQuY2xlYW5zXG47O1xuXG5sZXQgY2xlYW5lZCB0ID0gSXZhci5yZWFkIHQuY2xlYW5lZFxuXG5sZXQgcmVjIHN0YXJ0X2pvYiB0ID1cbiAgYXNzZXJ0IChub3QgdC5pc19kZWFkKTtcbiAgYXNzZXJ0ICh0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICBhc3NlcnQgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKTtcbiAgbGV0IGpvYiA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGluXG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgKyAxO1xuICBsZXQgam9iX3Jlc291cmNlID0gU3RhY2tfb3JfY291bnRlci5wb3BfZXhuIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGluXG4gIEludGVybmFsX2pvYi5ydW4gam9iIGpvYl9yZXNvdXJjZVxuICA+Pj4gZnVuIHJlcyAtPlxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nIC0gMTtcbiAgKG1hdGNoIHJlcyB3aXRoXG4gICB8IGBPayAtPiAoKVxuICAgfCBgUmFpc2VkIC0+IGlmIG5vdCB0LmNvbnRpbnVlX29uX2Vycm9yIHRoZW4ga2lsbCB0KTtcbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gY2xlYW5fcmVzb3VyY2UgdCBqb2JfcmVzb3VyY2VcbiAgZWxzZSAoXG4gICAgU3RhY2tfb3JfY291bnRlci5wdXNoIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGpvYl9yZXNvdXJjZTtcbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KVxuICAgIHRoZW4gc3RhcnRfam9iIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGl2YXIgLT5cbiAgICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICAgIHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIE5vbmUpKVxuOztcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGxldCBtYXhfY29uY3VycmVudF9qb2JzID0gU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlcyBpblxuICB7IGNvbnRpbnVlX29uX2Vycm9yXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA9IGpvYl9yZXNvdXJjZXNcbiAgOyBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgPSBRdWV1ZS5jcmVhdGUgKClcbiAgOyBudW1fam9ic19ydW5uaW5nID0gMFxuICA7IGNhcGFjaXR5X2F2YWlsYWJsZSA9IE5vbmVcbiAgOyBpc19kZWFkID0gZmFsc2VcbiAgOyBjbGVhbnMgPSBbXVxuICA7IG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgY2xlYW5lZCA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3IgKFN0YWNrX29yX2NvdW50ZXIub2ZfbGlzdCBqb2JfcmVzb3VyY2VzKVxuOztcblxubW9kdWxlIFNlcXVlbmNlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBhID0gY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIFsgYSBdXG5lbmRcblxubGV0IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3Igfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBpZiBtYXhfY29uY3VycmVudF9qb2JzIDw9IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRocm90dGxlLmNyZWF0ZSByZXF1aXJlcyBwb3NpdGl2ZSBtYXhfY29uY3VycmVudF9qb2JzLCBidXQgZ290XCJcbiAgICAgICAgICAobWF4X2NvbmN1cnJlbnRfam9icyA6IGludCldO1xuICBjcmVhdGVfaW50ZXJuYWxcbiAgICB+Y29udGludWVfb25fZXJyb3JcbiAgICAoU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlciB+bGVuZ3RoOm1heF9jb25jdXJyZW50X2pvYnMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBpbnRlcm5hbF9qb2IgOiAnYSBJbnRlcm5hbF9qb2IudFxuICAgIDsgcmVzdWx0IDogWyBgT2sgb2YgJ2IgfCBgQWJvcnRlZCB8IGBSYWlzZWQgb2YgZXhuIF0gRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgcmVzdWx0IHQgPSB0LnJlc3VsdFxuICBsZXQgYWJvcnQgdCA9IEludGVybmFsX2pvYi5hYm9ydCB0LmludGVybmFsX2pvYlxuXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGludGVybmFsX2pvYiwgcmVzdWx0ID0gSW50ZXJuYWxfam9iLmNyZWF0ZSBmIGluXG4gICAgeyBpbnRlcm5hbF9qb2I7IHJlc3VsdCB9XG4gIDs7XG5lbmRcblxubGV0IGVucXVldWUnIHQgZiA9XG4gIGxldCBqb2IgPSBKb2IuY3JlYXRlIGYgaW5cbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gSm9iLmFib3J0IGpvYlxuICBlbHNlIChcbiAgICBRdWV1ZS5lbnF1ZXVlIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGpvYi5pbnRlcm5hbF9qb2I7XG4gICAgaWYgdC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gc3RhcnRfam9iIHQpO1xuICBKb2IucmVzdWx0IGpvYlxuOztcblxubGV0IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHQgPVxuICBtYXRjaCByZXN1bHQgd2l0aFxuICB8IGBPayBhIC0+IGFcbiAgfCBgQWJvcnRlZCAtPiByYWlzZV9zIFslbWVzc2FnZSBcInRocm90dGxlIGFib3J0ZWQgam9iXCJdXG4gIHwgYFJhaXNlZCBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGYgPSBlbnF1ZXVlJyB0IGYgPj58IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdFxuXG5sZXQgZW5xdWV1ZV9leGNsdXNpdmUgdCBmID1cbiAgbGV0IG4gPSB0Lm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgaWYgSW50LiggPj0gKSBuIDFfMDAwXzAwMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiW2VucXVldWVfZXhjbHVzaXZlXSB3YXMgY2FsbGVkIHdpdGggYSB2ZXJ5IGxhcmdlIHZhbHVlIG9mIFxcXG4gICAgICAgICBbbWF4X2NvbmN1cnJlbnRfam9ic10uIFRoaXMgZG9lc24ndCB3b3JrLlwiXTtcbiAgbGV0IGRvbmVfID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgYXNzZXJ0IChuID4gMCk7XG4gIGxldCBmX3BsYWNlaG9sZGVyIF9zbG90ID0gSXZhci5yZWFkIGRvbmVfIGluXG4gIGZvciBfID0gMSB0byBuIC0gMSBkb1xuICAgIGRvbid0X3dhaXRfZm9yIChlbnF1ZXVlIHQgZl9wbGFjZWhvbGRlcilcbiAgZG9uZTtcbiAgbGV0JW1hcCByZXN1bHQgPSBlbnF1ZXVlJyB0IChmdW4gX3Nsb3QgLT4gZiAoKSkgaW5cbiAgSXZhci5maWxsIGRvbmVfICgpO1xuICBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0XG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93IH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYSkpXG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYTEgYTIgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhMSBhMikpXG47O1xuXG5sZXQgcHJpb3Jfam9ic19kb25lIHQgPVxuICAoKiBXZSBxdWV1ZSBbdC5tYXhfY29uY3VycmVudF9qb2JzXSBkdW1teSBqb2JzIGFuZCB3aGVuIHRoZXkgYXJlIGFsbCBzdGFydGVkIHdlIGtub3dcbiAgICAgdGhhdCBhbGwgcHJpb3Igam9icyBmaW5pc2hlZC4gIFdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBkdW1teSBqb2JzIHdhaXQgZm9yIHRoZSBsYXN0IG9uZVxuICAgICB0byBnZXQgc3RhcnRlZCBiZWZvcmUgZmluaXNoaW5nLiAqKVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBhbGxfZHVtbXlfam9ic19ydW5uaW5nIC0+XG4gICAgbGV0IGR1bW15X2pvYnNfcnVubmluZyA9IHJlZiAwIGluXG4gICAgZm9yIF8gPSAxIHRvIHQubWF4X2NvbmN1cnJlbnRfam9icyBkb1xuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKGVucXVldWUgdCAoZnVuIF8gLT5cbiAgICAgICAgICAgaW5jciBkdW1teV9qb2JzX3J1bm5pbmc7XG4gICAgICAgICAgIGlmICFkdW1teV9qb2JzX3J1bm5pbmcgPSB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBJdmFyLmZpbGwgYWxsX2R1bW15X2pvYnNfcnVubmluZyAoKTtcbiAgICAgICAgICAgSXZhci5yZWFkIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgY2FwYWNpdHlfYXZhaWxhYmxlIHQgPVxuICBpZiBudW1fam9ic19ydW5uaW5nIHQgPCBtYXhfY29uY3VycmVudF9qb2JzIHRcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+IEl2YXIucmVhZCBpdmFyXG4gICAgfCBOb25lIC0+IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gU29tZSBpdmFyKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxuXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyMS5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyMS53YWxsX2Nsb2NrXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2NoZWR1bGVyXG5cbmxldCBlbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPSBlbnF1ZXVlICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSlcbmxldCBjeWNsZV9jb3VudCAoKSA9IGN5Y2xlX2NvdW50ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0X25zICgpID0gY3ljbGVfc3RhcnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnQgKCkgPSBUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCAoY3ljbGVfc3RhcnRfbnMgKCkpXG5sZXQgY3ljbGVfdGltZXNfbnMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOkZuLmlkXG5sZXQgY3ljbGVfdGltZXMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOlRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RcbmxldCB0b3RhbF9jeWNsZV90aW1lICgpID0gdG90YWxfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsYXN0X2N5Y2xlX3RpbWUgKCkgPSBsYXN0X2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbG9uZ19jeWNsZXMgfmF0X2xlYXN0ID0gbG9uZ19jeWNsZXMgKHQgKCkpIH5hdF9sZWFzdFxubGV0IGV2ZW50X3ByZWNpc2lvbl9ucyAoKSA9IGV2ZW50X3ByZWNpc2lvbiAodCAoKSlcbmxldCBldmVudF9wcmVjaXNpb24gKCkgPSBUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChldmVudF9wcmVjaXNpb25fbnMgKCkpXG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgaSA9XG4gIHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSkgaVxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICgpID0gbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIGJvb2wgPSBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgKHQgKCkpIGJvb2xcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAoKSA9IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICh0ICgpKVxubGV0IHlpZWxkICgpID0geWllbGQgKHQgKCkpXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAoKSA9XG4gIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICh0ICgpKVxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgbGV0IHlpZWxkX2V2ZXJ5ID0gU3RhZ2VkLnVuc3RhZ2UgKHlpZWxkX2V2ZXJ5IH5uKSBpblxuICBsZXQgdCA9IHQgKCkgaW5cbiAgc3RhZ2UgKGZ1biAoKSAtPiB5aWVsZF9ldmVyeSB0KVxuOztcblxubGV0IG51bV9qb2JzX3J1biAoKSA9IG51bV9qb2JzX3J1biAodCAoKSlcbmxldCBudW1fcGVuZGluZ19qb2JzICgpID0gbnVtX3BlbmRpbmdfam9icyAodCAoKSlcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiA9IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW5cbiAgbGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgKCkgPSBsYXN0X2N5Y2xlX251bV9qb2JzICh0ICgpKVxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGYgPSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgKHQgKCkpIH5mXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfZW5kIGYgPSBydW5fZXZlcnlfY3ljbGVfZW5kICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayAodCAoKSkgfmZcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHggPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZiB4XG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBTY2hlZHVsZXJcbiIsIigqKiBTY2hlZHVsZSBqb2JzIHRvIHJ1biBhdCBhIHRpbWUgaW4gdGhlIGZ1dHVyZS5cblxuICAgIFRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIHVzZXMgYSBoZWFwIG9mIGV2ZW50cywgb25lIGZvciBlYWNoIGpvYiB0aGF0IG5lZWRzIHRvXG4gICAgcnVuIGluIHRoZSBmdXR1cmUuICBUaGUgQXN5bmMgc2NoZWR1bGVyIGlzIHJlc3BvbnNpYmxlIGZvciB3YWtpbmcgdXAgYXQgdGhlIHJpZ2h0IHRpbWVcbiAgICB0byBydW4gdGhlIGpvYnMuICopXG5cbm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgVGltZW91dFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICAoKiogW3J1bl9hdCB0aW1lIGYgYV0gcnVucyBbZiBhXSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIFt0aW1lXS4gIElmIFt0aW1lXSBpcyBpbiB0aGVcbiAgICAgIHBhc3QsIHRoZW4gW3J1bl9hdF0gd2lsbCBpbW1lZGlhdGVseSBzY2hlZHVsZSBhIGpvYiBbdF0gdGhhdCB3aWxsIHJ1biBbZiBhXS4gIEluIG5vXG4gICAgICBzaXR1YXRpb24gd2lsbCBbcnVuX2F0XSBhY3R1YWxseSBjYWxsIFtmXSBpdHNlbGYuICBUaGUgY2FsbCB0byBbZl0gd2lsbCBhbHdheXMgYmUgaW5cbiAgICAgIGFub3RoZXIgam9iLiAqKVxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFtydW5fYWZ0ZXJdIGlzIGxpa2UgW3J1bl9hdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW5cbiAgICAgIGFic29sdXRlIHRpbWUuICopXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbYXQgdGltZV0gcmV0dXJucyBhIGRlZmVycmVkIFtkXSB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYXMgc29vbiBhcyBwb3NzaWJsZVxuICAgICAgYWZ0ZXIgW3RpbWVdLiAqKVxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFthZnRlcl0gaXMgbGlrZSBbYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuIGFic29sdXRlXG4gICAgICB0aW1lLiAqKVxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3dpdGhfdGltZW91dCBzcGFuIGRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYWZ0ZXIgZWl0aGVyXG4gICAgICBbc3Bhbl0gZWxhcHNlcyBvciBbZF0gaXMgZGV0ZXJtaW5lZCwgcmV0dXJuaW5nIGVpdGhlciBbYFRpbWVvdXRdIG9yIFtgUmVzdWx0XVxuICAgICAgZGVwZW5kaW5nIG9uIHdoaWNoIG9uZSBzdWNjZWVkZWQgZmlyc3QuICBBdCB0aGUgdGltZSB0aGUgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCwgYm90aCB0aGluZ3MgbWF5IGhhdmUgaGFwcGVuZWQsIGluIHdoaWNoIGNhc2UgW2BSZXN1bHRdIGlzIGdpdmVuXG4gICAgICBwcmVmZXJlbmNlLiAqKVxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuXG4gICgqKiBFdmVudHMgcHJvdmlkZSB2YXJpYW50cyBvZiBbcnVuX2F0XSBhbmQgW3J1bl9hZnRlcl0gd2l0aCB0aGUgYWJpbGl0eSB0byBhYm9ydCBvclxuICAgICAgcmVzY2hlZHVsZSBhbiBldmVudCB0aGF0IGhhc24ndCB5ZXQgaGFwcGVuZWQuICBPbmNlIGFuIGV2ZW50IGhhcHBlbnMgb3IgaXMgYWJvcnRlZCxcbiAgICAgIEFzeW5jIGRvZXNuJ3QgdXNlIGFueSBzcGFjZSBmb3IgdHJhY2tpbmcgaXQuICopXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgICgqKiBJZiBbc3RhdHVzXSByZXR1cm5zIFtTY2hlZHVsZWRfYXQgdGltZV0sIGl0IGlzIHBvc3NpYmxlIHRoYXQgW3RpbWUgPCBUaW1lLm5vdyAoKV1cbiAgICAgICAgaWYgQXN5bmMncyBzY2hlZHVsZXIgaGFzbid0IHlldCBnb3R0ZW4gdGhlIGNoYW5jZSB0byB1cGRhdGUgaXRzIGNsb2NrLCBlLmcuLCBkdWVcbiAgICAgICAgdG8gdXNlciBqb2JzIHJ1bm5pbmcuICopXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcblxuICAgICgqKiBMZXQgW3QgPSBydW5fYXQgdGltZSBmIHpdLiAgQXQgW3RpbWVdLCB0aGlzIHJ1bnMgW2Ygel0gYW5kIHRyYW5zaXRpb25zIFtzdGF0dXMgdF1cbiAgICAgICAgdG8gW0hhcHBlbmVkIGhdLCB3aGVyZSBbaF0gaXMgcmVzdWx0IG9mIFtmIHpdLlxuXG4gICAgICAgIE1vcmUgcHJlY2lzZWx5LCBhdCBbdGltZV0sIHByb3ZpZGVkIFthYm9ydCB0IGFdIGhhcyBub3QgcHJldmlvdXNseSBiZWVuIGNhbGxlZCxcbiAgICAgICAgdGhpcyB3aWxsIGNhbGwgW2Ygel0sIHdpdGggdGhlIGd1YXJhbnRlZSB0aGF0IFtzdGF0dXMgdCA9IFNjaGVkdWxlZF9hdCB0aW1lXS4gIElmXG4gICAgICAgIFtmIHpdIHJldHVybnMgW2hdIGFuZCBkaWQgbm90IGNhbGwgW2Fib3J0IHQgYV0sIHRoZW4gW3N0YXR1cyB0XSBiZWNvbWVzIFtIYXBwZW5lZFxuICAgICAgICBoXS4gIElmIFtmIHpdIGNhbGxzIFthYm9ydCB0IGFdLCB0aGVuIHRoZSByZXN1bHQgb2YgW2ZdIGlzIGlnbm9yZWQsIGFuZCBbc3RhdHVzIHRdXG4gICAgICAgIGlzIFtBYm9ydGVkIGFdLlxuXG4gICAgICAgIElmIFtmIHpdIHJhaXNlcywgdGhlbiBbc3RhdHVzIHRdIGRvZXMgbm90IHRyYW5zaXRpb24gYW5kIHJlbWFpbnMgW1NjaGVkdWxlZF9hdFxuICAgICAgICB0aW1lXSwgYW5kIHRoZSBleGNlcHRpb24gaXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbcnVuX2F0XSB3YXNcbiAgICAgICAgY2FsbGVkLiAqKVxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgKCoqIFthYm9ydCB0XSBjaGFuZ2VzIFtzdGF0dXMgdF0gdG8gW0Fib3J0ZWRdIGFuZCByZXR1cm5zIFtPa10sIHVubGVzcyBbdF1cbiAgICAgICAgcHJldmlvdXNseSBoYXBwZW5lZCBvciB3YXMgcHJldmlvdXNseSBhYm9ydGVkLiAqKVxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcblxuICAgICgqKiBbYWJvcnRfZXhuIHQgYV0gcmV0dXJucyBbdW5pdF0gaWYgW2Fib3J0IHQgYSA9IGBPa10sIGFuZCBvdGhlcndpc2UgcmFpc2VzLiAqKVxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgICgqKiBbYWJvcnRfaWZfcG9zc2libGUgdCBhID0gaWdub3JlIChhYm9ydCB0IGEpXS4gKilcbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgKCoqIFtyZXNjaGVkdWxlX2F0IHRdIGFuZCBbcmVzY2hlZHVsZV9hZnRlciB0XSBjaGFuZ2UgdGhlIHRpbWUgdGhhdCBbdF0gd2lsbCBmaXJlLCBpZlxuICAgICAgICBwb3NzaWJsZSwgYW5kIGlmIG5vdCwgZ2l2ZSBhIHJlYXNvbiB3aHkuICBMaWtlIFtydW5fYXRdLCBpZiB0aGUgcmVxdWVzdGVkIHRpbWUgaXNcbiAgICAgICAgaW4gdGhlIHBhc3QsIHRoZSBldmVudCB3aWxsIGJlIHNjaGVkdWxlZCB0byBydW4gaW1tZWRpYXRlbHkuICBJZiBbcmVzY2hlZHVsZV9hdCB0XG4gICAgICAgIHRpbWUgPSBPa10sIHRoZW4gc3Vic2VxdWVudGx5IFtzY2hlZHVsZWRfYXQgdCA9IHRpbWVdLiAgKilcbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICAoKiogW2F0IHRpbWVdICAgIGlzIFtydW5fYXQgICAgdGltZSBpZ25vcmUgKCldLlxuICAgICAgICBbYWZ0ZXIgdGltZV0gaXMgW3J1bl9hZnRlciB0aW1lIGlnbm9yZSAoKV0uXG5cbiAgICAgICAgWW91IHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSB0aGUgW3J1bl8qXSBmdW5jdGlvbnMsIHdoaWNoIGFsbG93IHlvdSB0b1xuICAgICAgICBzeW5jaHJvbm91c2x5IHVwZGF0ZSBzdGF0ZSB2aWEgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHdoZW4gdGhlIGV2ZW50XG4gICAgICAgIHRyYW5zaXRpb25zIHRvIFtIYXBwZW5lZF0uICBUaGF0IGlzLCB0aGVyZSBpcyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBydW5fYXQgdGltZSBmICgpIF19XG5cbiAgICAgICAgYW5kOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBhdCB0aW1lIGluXG4gICAgICAgICAgZmlyZWQgdFxuICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gZiAoKVxuICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKSBdfVxuXG4gICAgICAgIFdpdGggW3J1bl9hdF0sIGlmIFtzdGF0dXMgdCA9IEhhcHBlbmVkXSwgb25lIGtub3dzIHRoYXQgW2ZdIGhhcyBydW4uICBXaXRoIFthdF1cbiAgICAgICAgYW5kIFtmaXJlZF0sIG9uZSBkb2VzIG5vdCBrbm93IHdoZXRoZXIgW2ZdIGhhcyB5ZXQgcnVuOyBpdCBtYXkgc3RpbGwgYmUgc2NoZWR1bGVkXG4gICAgICAgIHRvIHJ1bi4gIFRodXMsIHdpdGggW2F0XSBhbmQgW2ZpcmVkXSwgaXQgaXMgZWFzeSB0byBpbnRyb2R1Y2UgYSByYWNlLiAgRm9yXG4gICAgICAgIGV4YW1wbGUsIGNvbnNpZGVyIHRoZXNlIHR3byBjb2RlIHNuaXBwZXRzOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5hZnRlciAoc2VjIDIuKSBpblxuICAgICAgICAgIHVwb24gKEV2ZW50LmZpcmVkIHQpIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpXG4gICAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IHByaW50ZiBcIlRpbWVyIGZpcmVkXCIpO1xuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5ydW5fYWZ0ZXIgKHNlYyAyLikgcHJpbnRmIFwiVGltZXIgZmlyZWRcIiBpblxuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIEluIGJvdGggc25pcHBldHMsIGlmIFtFdmVudC5hYm9ydF0gcmV0dXJucyBbT2tdLCBcIlRpbWVyIGZpcmVkXCIgaXMgbmV2ZXIgcHJpbnRlZC5cbiAgICAgICAgSG93ZXZlciwgdGhlIGZpcnN0IHNuaXBwZXQgbWlnaHQgcHJpbnQgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiIGFuZCB0aGVuXG4gICAgICAgIFwiVGltZXIgZmlyZWRcIi4gIFRoaXMgY29uZnVzZWQgb3JkZXJpbmcgY2Fubm90IGhhcHBlbiB3aXRoIFtFdmVudC5ydW5fYWZ0ZXJdLiAqKVxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdFxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgZW5kXG5cbiAgKCoqIFthdF92YXJ5aW5nX2ludGVydmFscyBmID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIG5leHQgZWxlbWVudCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgW2YgKCldIGFuZCB3YWl0aW5nIGZvciB0aGF0IGFtb3VudCBvZiB0aW1lLCBhbmQgdGhlbiBsb29waW5nXG4gICAgICB0byBkZXRlcm1pbmUgc3Vic2VxdWVudCBlbGVtZW50cy4gIFRoZSBzdHJlYW0gd2lsbCBlbmQgYWZ0ZXIgW3N0b3BdIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQuICopXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2F0X2ludGVydmFscyBpbnRlcnZhbCA/c3RhcnQgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgZWxlbWVudHMgd2lsbCBiZWNvbWVcbiAgICAgIGRldGVybWluZWQgYXQgbm9ubmVnYXRpdmUgaW50ZWdlciBtdWx0aXBsZXMgb2YgW2ludGVydmFsXSBhZnRlciB0aGUgW3N0YXJ0XSB0aW1lLFxuICAgICAgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZDpcblxuICAgICAge3ZcbiAgICAgICAgc3RhcnQgKyAwICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAxICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAyICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAzICogaW50ZXJ2YWxcbiAgICAgICAgLi4uXG4gICAgICB2fVxuXG4gICAgICBOb3RlIHRoYXQgb25seSBlbGVtZW50cyB0aGF0IGFyZSBzdHJpY3RseSBpbiB0aGUgZnV0dXJlIGV2ZXIgYmVjb21lIGRldGVybWluZWQuXG4gICAgICBJbiBwYXJ0aWN1bGFyLCBpZiBbc3RhcnRdIGlzIG5vdCBpbiB0aGUgZnV0dXJlLCBvciBbc3RhcnRdIGlzIG5vdCBwcm92aWRlZCxcbiAgICAgIHRoZW4gdGhlcmUgd2lsbCBiZSBubyBlbGVtZW50IGJlZm9yZSB0aGUgW2ludGVydmFsXSBoYXMgcGFzc2VkLlxuXG4gICAgICBJZiB0aGUgaW50ZXJ2YWwgaXMgdG9vIHNtYWxsIG9yIHRoZSBDUFUgaXMgdG9vIGxvYWRlZCwgW2F0X2ludGVydmFsc10gd2lsbCBza2lwXG4gICAgICB1bnRpbCB0aGUgbmV4dCB1cGNvbWluZyBtdWx0aXBsZSBvZiBbaW50ZXJ2YWxdIGFmdGVyIFtzdGFydF0uICopXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZiAoKV0gZXZlcnkgW3NwYW5dIGFtb3VudCBvZiB0aW1lIHN0YXJ0aW5nIHdoZW5cbiAgICAgIFtzdGFydF0gYmVjb21lcyBkZXRlcm1pbmVkIGFuZCBzdG9wcGluZyB3aGVuIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuICBbZXZlcnknXVxuICAgICAgd2FpdHMgdW50aWwgdGhlIG91dGNvbWUgb2YgW2YgKCldIGJlY29tZXMgZGV0ZXJtaW5lZCBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIG5leHRcbiAgICAgIFtzcGFuXS5cblxuICAgICAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0IGlmIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQsIGV2ZW4gZHVyaW5nIGV2YWx1YXRpb24gb2YgW2ZdLFxuICAgICAgdGhlbiBbZl0gd2lsbCBub3QgYmUgY2FsbGVkIGFnYWluIGJ5IGEgc3Vic2VxdWVudCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuXG5cbiAgICAgIEl0IGlzIGFuIGVycm9yIGZvciBbc3Bhbl0gdG8gYmUgbm9ucG9zaXRpdmUuXG5cbiAgICAgIFtjb250aW51ZV9vbl9lcnJvcl0gY29udHJvbHMgd2hhdCBzaG91bGQgaGFwcGVuIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlXSwgaXRlcmF0aW9uIG9ubHkgY29udGludWVzIGlmIFtmXSBzdWNjZXNzZnVsbHlcbiAgICAgIHJldHVybnMgYSBkZWZlcnJlZCBhbmQgdGhhdCBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLCBpdGVyYXRpb24gYWxzbyBjb250aW51ZXMgaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBJZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbiBhc3luY2hyb25vdXNseSwgdGhpcyBtYXkgY2F1c2UgdXMgdG8gcHJvY2VlZCB3aXRoIHRoZVxuICAgICAgbmV4dCBpdGVyYXRpb24gd2hpbGUgdGhlIHByZXZpb3VzIGNhbGwgdG8gW2ZdIGlzIHN0aWxsIHJ1bm5pbmcuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW2V2ZXJ5J10gd2FzXG4gICAgICBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLlxuXG4gICAgICBJZiBbZmluaXNoZWRdIGlzIHN1cHBsaWVkLCBbZXZlcnknXSB3aWxsIGZpbGwgaXQgb25jZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBiZWNvbWVcbiAgICAgIGRldGVybWluZWQ6IFtzdGFydF0sIFtzdG9wXSwgYW5kIHRoZSBvdXRjb21lIG9mIHRoZSBmaW5hbCBjYWxsIHRvIFtmXS4gKilcbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2V2ZXJ5ID9zdGFydCA/c3RvcCBzcGFuIGZdIGlzXG4gICAgICBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKV0uICopXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmKCldIGF0IGluY3JlbWVudHMgb2YgW3N0YXJ0ICsgaSAqXG4gICAgICBzcGFuXSBmb3Igbm9ubmVnYXRpdmUgaW50ZWdlcnMgW2ldLCB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLlxuICAgICAgSWYgdGhlIHJlc3VsdCBvZiBbZl0gaXMgbm90IGRldGVybWluZWQgZmFzdCBlbm91Z2ggdGhlbiB0aGUgbmV4dCBpbnRlcnZhbChzKVxuICAgICAgYXJlIHNraXBwZWQgc28gdGhhdCB0aGVyZSBhcmUgbmV2ZXIgbXVsdGlwbGUgY29uY3VycmVudCBpbnZvY2F0aW9ucyBvZiBbZl0gaW5cbiAgICAgIGZsaWdodC5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICBbcnVuX2F0X2ludGVydmFscyddIHdhcyBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLiAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGZdIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhblxuICAgICAgICAgIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKSBdfSAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2R1cmF0aW9uX29mIGZdIGludm9rZXMgW2YgKCldIGFuZCBtZWFzdXJlcyBob3cgbG9uZyBpdCB0YWtlcyBmcm9tIHRoZSBpbnZvY2F0aW9uXG4gICAgICB0byBhZnRlciB0aGUgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cblxuICAgICAgTm90ZSB0aGF0IHRoZSBtZWFzdXJlbWVudCBpcyBub3QgZXhhY3Q7IGJlY2F1c2UgaXQgaW52b2x2ZXMgYW4gYWRkaXRpb25hbCBtYXAgb24gdGhlXG4gICAgICBkZWZlcnJlZCwgdGhlIHRpbWluZyBhbHNvIGluY2x1ZGVzIHRoZSBkdXJhdGlvbiBvZiBqb2JzIGluIHRoZSBqb2IgcXVldWUgd2hlbiBbZiAoKV1cbiAgICAgIGlzIGRldGVybWluZWQuICopXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG5lbmRcblxuKCoqIFtDbG9ja19kZXByZWNhdGVkXSBpcyB1c2VkIGluIFtSZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXSB0byBjcmVhdGUgYSBjbG9ja1xuICAgIG1vZHVsZSBpbiB3aGljaCBhbGwgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkLiAqKVxubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBJbnZhcmlhbnQudCAtPiAnYiBJbnZhcmlhbnQudCAtPiAoJ2EsICdiKSB0IEludmFyaWFudC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG4gIGVuZFxuXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5lbmRcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgKFxuc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBtb2R1bGUgXyAoQyA6IENsb2NrKSA6IENsb2NrX2RlcHJlY2F0ZWQgPSBDXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9ja19kZXByZWNhdGVkKSA6IENsb2NrID0gQ1xuZW5kIDpcbnNpZyBlbmQpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBDbG9ja19pbnRmLkNsb2NrXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gQ2xvY2tfaW50Zi5DbG9ja19kZXByZWNhdGVkXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gQ2xvY2tfaW50Zi5Pcl90aW1lb3V0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdGltZV9zb3VyY2UgKCkgPSAoU2NoZWR1bGVyLnQgKCkpLnRpbWVfc291cmNlIHw+IFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzXG5sZXQgYWZ0ZXIgc3BhbiA9IFRpbWVfc291cmNlLmFmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhblxubGV0IGF0IHRpbWUgPSBUaW1lX3NvdXJjZS5hdCAodGltZV9zb3VyY2UgKCkpIHRpbWVcblxubGV0IGF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wIGNvbXB1dGVfc3BhbiA9XG4gIFRpbWVfc291cmNlLmF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgY29tcHV0ZV9zcGFuXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCBpbnRlcnZhbCA9XG4gIFRpbWVfc291cmNlLmF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbFxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZiA9XG4gIFRpbWVfc291cmNlLmV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxubGV0IHJ1bl9hdCB0aW1lIGYgYSA9IFRpbWVfc291cmNlLnJ1bl9hdCAodGltZV9zb3VyY2UgKCkpIHRpbWUgZiBhXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgaW50ZXJ2YWwgZiA9XG4gIFRpbWVfc291cmNlLnJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciAodGltZV9zb3VyY2UgKCkpIGludGVydmFsIGZcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzJ1xuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgKHRpbWVfc291cmNlICgpKVxuICAgIGludGVydmFsXG4gICAgZlxuOztcblxubGV0IHdpdGhfdGltZW91dCBzcGFuIGQgPSBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgKHRpbWVfc291cmNlICgpKSBzcGFuIGRcbmxldCBkdXJhdGlvbl9vZiBmID0gVGltZV9zb3VyY2UuZHVyYXRpb25fb2YgKHRpbWVfc291cmNlICgpKSBmXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfc291cmNlLkV2ZW50XG5cbiAgbGV0IGFmdGVyIHNwYW4gPSBhZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbiAgbGV0IHJ1bl9hZnRlciBzcGFuIGYgYSA9IHJ1bl9hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZiBhXG4gIGxldCBhdCB0aW1lID0gYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG4gIGxldCBydW5fYXQgdGltZSBmIHogPSBydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgelxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSBiID1cbiAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgICAgdGhlbiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIGVsc2UgZiBpIGIgdC4oaSkgPj4+IGZ1biBiIC0+IGxvb3AgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIDAgaW5pdClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbmxldCBzZXFtYXBpIHQgfmYgPVxuICBsZXQlbWFwIGJzID0gZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPiBmIGkgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgaW5cbiAgQXJyYXkub2ZfbGlzdCAoQ29yZS5MaXN0LnJldiBicylcbjs7XG5cbmxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG5sZXQgYWxsX3VuaXQgZHMgPSBEZWZlcnJlZC5pZ25vcmVfbSAoZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZCkpXG5cbmxldCBpdGVyaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCB+aG93IH5mIGluXG4gIEFycmF5Lm9mX2xpc3RfcmV2XG4gICAgKEFycmF5LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBBcnJheS5maWx0ZXJfb3B0XG5cbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIHQgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBBcnJheS5jb25jYXQgKEFycmF5LnRvX2xpc3QgdClcbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgIHRoZW4gcmV0dXJuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoJWJpbmQgZiBpIHQuKGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgYXV4IDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKEFycmF5LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgdCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgYiA6OiBicylcbiAgPj58IExpc3QucmV2XG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgUGFyYWxsZWwgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBqb2JfY291bnQgLT5cbiAgICBsZXQgcmVjIGdlbl9jb21wdXRhdGlvbiBpZHggPSBmdW5jdGlvblxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgIFRocm90dGxlZC5vZl90aHVuayAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyb3R0bGVkLmJvdGhfdW5pdFxuICAgICAgICAgICAgKFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIGlkeCB4KSlcbiAgICAgICAgICAgIChnZW5fY29tcHV0YXRpb24gKGlkeCArIDEpIHhzKSlcbiAgICAgIHwgW10gLT4gVGhyb3R0bGVkLnJldHVybiAoKVxuICAgIGluXG4gICAgVGhyb3R0bGVkLnJ1biAoZ2VuX2NvbXB1dGF0aW9uIDAgdCkgfm1heF9jb25jdXJyZW50X2pvYnM6am9iX2NvdW50XG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFBhcmFsbGVsIGFzIGhvdyAtPlxuICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIGpvYl9jb3VudCAtPlxuICAgIGxldCByZWMgZ2VuX2NvbXB1dGF0aW9uIGlkeCA9IGZ1bmN0aW9uXG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgVGhyb3R0bGVkLm9mX3RodW5rIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJvdHRsZWQubWFwMlxuICAgICAgICAgICAgKFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIGlkeCB4KSlcbiAgICAgICAgICAgIChnZW5fY29tcHV0YXRpb24gKGlkeCArIDEpIHhzKVxuICAgICAgICAgICAgfmY6KGZ1biB5IHlzIC0+IHkgOjogeXMpKVxuICAgICAgfCBbXSAtPiBUaHJvdHRsZWQucmV0dXJuIFtdXG4gICAgaW5cbiAgICBUaHJvdHRsZWQucnVuIChnZW5fY29tcHV0YXRpb24gMCB0KSB+bWF4X2NvbmN1cnJlbnRfam9iczpqb2JfY291bnRcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBMaXN0LnJldiAoTGlzdC5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxubW9kdWxlIFRocm90dGxlZF9tYXAgPSBNYXAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChUaHJvdHRsZWQpXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTWFwLnRcblxubGV0IGNoYW5nZSB0IGsgfmYgPVxuICBsZXQlbWFwIG9wdCA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLmNoYW5nZSB0IGsgfmY6KGZ1biBfIC0+IG9wdClcbjs7XG5cbmxldCB1cGRhdGUgdCBrIH5mID1cbiAgbGV0JW1hcCBkYXRhID0gZiAoTWFwLmZpbmQgdCBrKSBpblxuICBNYXAuc2V0IHQgfmtleTprIH5kYXRhXG47O1xuXG5sZXQgaXRlcl9rZXlzIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAua2V5cyB0KSB+ZlxubGV0IGl0ZXIgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC5kYXRhIHQpIH5mXG5sZXQgaXRlcmkgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC50b19hbGlzdCB0KSB+ZjooZnVuIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSlcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciA9XG4gICAgTWFwLmZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWxpc3QgLT4gKGtleSwgZGF0YSkgOjogYWxpc3QpXG4gIGluXG4gIExpc3QuZm9sZCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciB+aW5pdCB+ZjooZnVuIGFjIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSBhYylcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHsga2V5IDogJ2FcbiAgICA7IGRhdGEgOiAnYlxuICAgIDsgbXV0YWJsZSByZXN1bHQgOiAnYyBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cbmVuZFxuXG5sZXQgZmlsdGVyX21hcGlfc2VxdWVudGlhbCB0IH5mID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciB0IGluXG4gIGxldCBzZXF1ZW5jZSA9IE1hcC50b19zZXF1ZW5jZSB+b3JkZXI6YEluY3JlYXNpbmdfa2V5IHQgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OkJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG4gICAgICB+ZjooZnVuIHMgKGtleSwgZGF0YSkgfmsgLT5cbiAgICAgICAgdXBvbiAoZiB+a2V5IH5kYXRhKSAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gayBzXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcuYWRkX2V4blxuICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGsgcykpXG4gICAgICB+ZmluaXNoOihmdW4geCAtPlxuICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIChCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy50b190cmVlIHgpKSkpXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGxldCBjb21wdXRhdGlvbiA9XG4gICAgVGhyb3R0bGVkX21hcC5maWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgfmtleSB+ZGF0YSkpXG4gIGluXG4gIFRocm90dGxlZC5ydW4gY29tcHV0YXRpb24gfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZlxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBmaWx0ZXJfbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzXG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IGpvYnMgPSByZWYgW10gaW5cbiAgICBsZXQgam9iX21hcCA9XG4gICAgICBNYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBsZXQgam9iID0geyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBOb25lIH0gaW5cbiAgICAgICAgam9icyA6PSBqb2IgOjogIWpvYnM7XG4gICAgICAgIGpvYilcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPVxuICAgICAgTGlzdC5pdGVyIH5ob3cgKEJhc2UuTGlzdC5yZXYgIWpvYnMpIH5mOihmdW5jdGlvblxuICAgICAgICB8IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gXyB9IGFzIGpvYiAtPlxuICAgICAgICAgIGxldCVtYXAgeCA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgIGpvYi5yZXN1bHQgPC0geClcbiAgICBpblxuICAgIE1hcC5maWx0ZXJfbWFwIGpvYl9tYXAgfmY6Sm9iLnJlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbHRlcl9rZXlzIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGtleSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBtYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBsZXQgY29tcHV0YXRpb24gPVxuICAgIFRocm90dGxlZF9tYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiB+a2V5IH5kYXRhKSlcbiAgaW5cbiAgVGhyb3R0bGVkLnJ1biBjb21wdXRhdGlvbiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCB8IGBQYXJhbGxlbCAtPlxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGxldCVtYXAgeiA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgU29tZSB6KVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBtYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWVyZ2UgfmhvdyB0MSB0MiB+ZiA9XG4gIGZpbHRlcl9tYXBcbiAgICB+aG93XG4gICAgKE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXkgeiAtPiBTb21lIChmdW4gKCkgLT4gZiB+a2V5IHopKSlcbiAgICB+ZjooZnVuIHRodW5rIC0+IHRodW5rICgpKVxuOztcblxubGV0IGFsbCB0ID0gbWFwIHQgfmY6Rm4uaWQgfmhvdzpgU2VxdWVudGlhbFxuIiwib3BlbiEgQ29yZVxub3BlbiEgRGVmZXJyZWRfc3RkXG5pbmNsdWRlIERlZmVycmVkX21lbW9faW50ZlxuXG5tb2R1bGUgTWFrZSAoTSA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0ID0gJ2EgRGVmZXJyZWQxLnQpIDpcbiAgUyB3aXRoIHR5cGUgJ2EgZGVmZXJyZWQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIG9wZW4hIE1cblxuICBsZXQgcmVyYWlzZSA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiBFeG4ucmVyYWlzZSBleG4gXCJjYXVnaHQgZXhjZXB0aW9uIGluIG1lbW9pemVkIGZ1bmN0aW9uXCJcbiAgOztcblxuICBsZXQgZ2VuZXJhbCcgKHR5cGUgYSkgfnJ1biAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZiA9XG4gICAgbGV0IG1vZHVsZSBIYXNoYWJsZSA9ICh2YWwgaGFzaGFibGUpIGluXG4gICAgbGV0IGYgPVxuICAgICAgTWVtby5nZW5lcmFsIH5oYXNoYWJsZTpIYXNoYWJsZS5oYXNoYWJsZSAoZnVuIGEgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICB+cnVuXG4gICAgICAgICAgKGZ1biAoKSAtPiBmIGEpKVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlIChmdW4gYSAtPiBmIGEgPj58IHJlcmFpc2UpXG4gIDs7XG5cbiAgbGV0IGdlbmVyYWwgaGFzaGFibGUgZiA9IGdlbmVyYWwnIH5ydW46YE5vdyBoYXNoYWJsZSBmXG5cbiAgbGV0IHJlY3Vyc2l2ZSAodHlwZSBhKSAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZl9vbmVzdGVwID1cbiAgICBsZXQgcmVjIG1lbW9pemVkID1cbiAgICAgIGxhenlcbiAgICAgICAgKGdlbmVyYWwnXG4gICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgIGhhc2hhYmxlXG4gICAgICAgICAgIChmX29uZXN0ZXAgKGZ1biB4IC0+ICh1bnN0YWdlIChmb3JjZSBtZW1vaXplZCkpIHgpKSlcbiAgICBpblxuICAgIGZvcmNlIG1lbW9pemVkXG4gIDs7XG5cbiAgbGV0IHVuaXQgZiA9XG4gICAgbGV0IGYgPVxuICAgICAgTWVtby51bml0IChmdW4gKCkgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICBmKVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT4gZiAoKSA+PnwgcmVyYWlzZSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKERlZmVycmVkMSlcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE9wdGlvbi50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoU29tZSBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSBhIC0+IGYgYVxuICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQucmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBPcHRpb24ubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmVuZFxuXG4oKiBDb3BpZWQgdG8gW2VhZ2VyX2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgdCA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci5vZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UpXG5sZXQgZXJyb3IgbXNnIHYgc2V4cF9vZiA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3IgbXNnIHYgc2V4cF9vZilcbmxldCBlcnJvcl9zIHNleHAgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgbXNnKVxubGV0IGVycm9yZiBmb3JtYXQgPSBrc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIERlZmVycmVkLm1hcCB0IH5mOihmdW4gdCAtPiBPcl9lcnJvci50YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IudW5pbXBsZW1lbnRlZCBtc2cpXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuZmlsdGVyX29rX2F0X2xlYXN0X29uZVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKGwsIFtdKSAoZnVuIChsLCBlcnJvcnMpIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IGVycm9ycyA9IEVycm9yLm9mX2xpc3QgKExpc3QucmV2IGVycm9ycykgaW5cbiAgICAgIERlZmVycmVkLnJldHVybiAoYEZpbmlzaGVkIChFcnJvciBlcnJvcnMpKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIERlZmVycmVkLm1hcCAoZiBoZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgY3VycmVudF9lcnJvciAtPiBgUmVwZWF0ICh0bCwgY3VycmVudF9lcnJvciA6OiBlcnJvcnMpXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+IGBGaW5pc2hlZCAoT2sgcmVzdWx0KSkpXG47O1xuXG5sZXQgb2tfdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAoTW9uaXRvci50cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjooZnVuY3Rpb25cbiAgICB8IEVycm9yIGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IE9rIF8gYXMgb2sgLT4gb2spXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwICh0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjpPcl9lcnJvci5qb2luXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgZm9sZGkgbGlzdCB+aW5pdDphY2MgfmYgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0JWJpbmQgYWNjID0gZiBpIGFjYyBoZCBpblxuICAgICAgICBsb29wIChpICsgMSkgYWNjIHRsXG4gICAgaW5cbiAgICBsb29wIDAgYWNjIGxpc3RcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgPSBhbGxcbiAgbGV0IGFsbF91bml0ID0gYWxsX3VuaXRcblxuICBsZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG4oKiBXZSBpbXBsZW1lbnQgYWxsIG9mIHRoZSBbUXVldWVdIG9wZXJhdGlvbnMgYnkgY29udmVydGluZyB0aGUgcXVldWUgdG8gYSBsaXN0IGFuZCB0aGVuXG4gICB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBbTGlzdF0gb3BlcmF0aW9uLiAgV2UgdXNlIGxpc3RzIHJhdGhlciB0aGFuIGFycmF5cyBiZWNhdXNlXG4gICBhcnJheXMgbG9uZ2VyIHRoYW4gYSBjZXJ0YWluIGxlbmd0aCBhcmUgYWxsb2NhdGVkIGluIHRoZSBtYWpvciBoZWFwLCB3aGljaCBjYW4gY2F1c2VcbiAgIHVubmVjZXNzYXJ5IHByb21vdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiAgQWxzbywgd2hlbiBvbmUgaXMgZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXksIHRoZSBlbnRpcmUgYXJyYXkgbXVzdCBiZSBrZXB0IGFsaXZlLiAgV2hlbiBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhIGxpc3QsIG9ubHkgdGhlIHJlbWFpbmluZyB0YWlsIG9mIHRoZSBsaXN0IGlzIGtlcHQgYWxpdmUuICBTbywgdXNpbmdcbiAgIGFycmF5cyByYXRoZXIgdGhhbiBsaXN0cyB3b3VsZCBpbmNyZWFzZSB0aGUgbGl2ZS1zcGFjZSBuZWVkZWQgYnkgdGhlIHByb2dyYW0uICopXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID0gTGlzdC5mb2xkaSAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGFsbCB0ID0gTGlzdC5hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBhbGxfdW5pdCB0ID0gTGlzdC5hbGxfdW5pdCAoUXVldWUudG9fbGlzdCB0KVxubGV0IGl0ZXIgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBpdGVyaSB+aG93IHQgfmYgPSBMaXN0Lml0ZXJpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBtYXAgfmhvdyB0IH5mID0gTGlzdC5tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IG1hcGkgfmhvdyB0IH5mID0gTGlzdC5tYXBpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBpbml0IH5ob3cgbiB+ZiA9IExpc3QuaW5pdCB+aG93IG4gfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXIgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5cbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4geCAtPiBmIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4gaSB4IC0+IGYgaSB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBMaXN0LmZpbmRfbWFwaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRpIHQgfmYgPSBMaXN0LmZpbmRpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IExpc3QuZm9yX2FsbGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gTGlzdC5leGlzdHNpIChRdWV1ZS50b19saXN0IHQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxuKCogW2ZvbGRfbWFwaSB+aG93IHQgfmluaXQgfm1hcGlfZiB+Zm9sZF9mXSBpcyBhIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gb2Y6XG5cbiAgIHtbXG4gICAgIGZvbGQgfmluaXQgfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChmb2xkX2YgYiBhKSkgKG1hcGkgdCB+aG93IH5mOm1hcGlfZikgXX1cblxuICAgSXQgYXZvaWRzIGNyZWF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2VxdWVuY2UgdGhhdCB3b3VsZCByZXN1bHQgZnJvbSBbbWFwaV0sIGFuZFxuICAgYWxsb3dzIHRoZSBbZm9sZF0gdG8gcHJvY2VlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgW21hcGldLCBzbyB0aGF0IG9uZSBjYW4gYWNjdW11bGF0ZVxuICAgdGhlIHJlc3VsdCBhcyBzb29uIGFzIHBvc3NpYmxlLCBwb3NzaWJseSBhdm9pZGluZyBjcmVhdGluZyBhbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlXG4gICAoZS5nLiBbaXRlcmldIGFuZCBbZmlsdGVyX21hcF0gdXNlcyBbZm9sZF9tYXBpXSB0byBkbyB0aGlzKS4gKilcbmxldCBmb2xkX21hcGlcbiAgICAgICh0eXBlIGEgYiBjKVxuICAgICAgPyhob3cgPSBgU2VxdWVudGlhbClcbiAgICAgICh0IDogYSBTZXF1ZW5jZS50KVxuICAgICAgfihpbml0IDogYylcbiAgICAgIH4obWFwaV9mIDogaW50IC0+IGEgLT4gYiBEZWZlcnJlZC50KVxuICAgICAgfihmb2xkX2YgOiBjIC0+IGIgLT4gYylcbiAgOiBjIERlZmVycmVkLnRcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+XG4gICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gSXZhci5maWxsIHJlc3VsdCBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+IHVwb24gKG1hcGlfZiBpIGEpIChmdW4gYiAtPiBsb29wIChpICsgMSkgdCAoZm9sZF9mIGMgYikpXG4gICAgaW5cbiAgICBsb29wIDAgdCBpbml0O1xuICAgIEl2YXIucmVhZCByZXN1bHRcbiAgfCBgUGFyYWxsZWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBtYXBpX2YgaSBhIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgbGV0IHRocm90dGxlID0gVGhyb3R0bGUuY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSBpblxuICAgICgqIFtsb29wXSBmb3JjZXMgdGhlIGlucHV0IHNlcXVlbmNlIGFuZCBlbnF1ZXVlcyBhIHRocm90dGxlIGpvYiBvbmx5IGlmIHRoZXJlIGlzXG4gICAgICAgY2FwYWNpdHkgYXZhaWxhYmxlLiAqKVxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjIERlZmVycmVkLnQpID1cbiAgICAgIGxldCViaW5kICgpID0gVGhyb3R0bGUuY2FwYWNpdHlfYXZhaWxhYmxlIHRocm90dGxlIGluXG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBUaHJvdHRsZS5lbnF1ZXVlIHRocm90dGxlIChmdW4gKCkgLT4gbWFwaV9mIGkgYSkgaW5cbiAgICAgICAgICAgbGV0JW1hcCBjID0gYyBpblxuICAgICAgICAgICBmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgKHJldHVybiBpbml0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICB0XG4gICAgfmluaXQ6KDAsIGluaXQpXG4gICAgfmY6KGZ1biAoaSwgYikgYSB+ayAtPlxuICAgICAgbGV0JWJpbmQgYiA9IGYgaSBiIGEgaW5cbiAgICAgIGsgKGkgKyAxLCBiKSlcbiAgICB+ZmluaXNoOihmdW4gKF8sIGIpIC0+IHJldHVybiBiKVxuOztcblxuKCogW2ZvbGRdIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBbZm9sZGldIHRvIHNhdmUgdGhlIGludGVybWVkaWF0ZSBjbG9zdXJlXG4gICBhbGxvY2F0aW9uLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZCB0IH5pbml0IH5mOihmdW4gYiBhIH5rIC0+IGYgYiBhID4+PSBrKSB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGFsbCB0ID1cbiAgbGV0JW1hcCByZXMgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjY3VtIGQgLT5cbiAgICAgIGxldCVtYXAgYSA9IGQgaW5cbiAgICAgIGEgOjogYWNjdW0pXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHJlcylcbjs7XG5cbmxldCBhbGxfdW5pdCB0ID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgdiAtPiB2KVxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJldHVybiBOb25lXG4gICAgfCBTb21lICh2LCByZXN0KSAtPlxuICAgICAgKG1hdGNoJWJpbmQgZiBpIHYgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgcmVzdCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyaSB+aG93IHQgfmYgOiB1bml0IERlZmVycmVkLnQgPVxuICBmb2xkX21hcGkgfmhvdyB0IH5tYXBpX2Y6ZiB+aW5pdDooKSB+Zm9sZF9mOihmdW4gKCkgKCkgLT4gKCkpXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGkgfmhvdyB0IH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpIH5pbml0OltdIH5mb2xkX2Y6KGZ1biBicyBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxuKCogW2ZpbHRlcl9tYXBpXSBpcyBpbXBsZW1lbnRlZCB1c2luZyBbZm9sZF9tYXBpXSByYXRoZXIgdGhhbiBbbWFwXSBzbyB0aGF0IHdlIG5ldmVyIG5lZWRcbiAgIHRvIGtlZXAgYSBsb25nIHN0cmVhbSBvZiBpbnRlcm1lZGlhdGUgW05vbmVdIHJlc3VsdHMgaW4gdGhlIGFjY3VtdWxhdG9yLCBvbmx5IHRvIGxhdGVyXG4gICBmaWx0ZXIgdGhlbSBhbGwgb3V0LiAqKVxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPVxuICAgIGZvbGRfbWFwaVxuICAgICAgdFxuICAgICAgfmhvd1xuICAgICAgfm1hcGlfZjooZnVuIGkgYSAtPiBmIGkgYSlcbiAgICAgIH5pbml0OltdXG4gICAgICB+Zm9sZF9mOihmdW4gYnMgbWF5YmVfdiAtPlxuICAgICAgICBtYXRjaCBtYXliZV92IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGJzXG4gICAgICAgIHwgU29tZSBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mID4+fCBTZXF1ZW5jZS5jb25jYXRcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2glbWFwIGYgaSBhIHdpdGhcbiAgICB8IHRydWUgLT4gU29tZSBhXG4gICAgfCBmYWxzZSAtPiBOb25lKVxuOztcblxubGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChTZXF1ZW5jZS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdFxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgRGF0ZSA9IERhdGVcblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cblxubGV0IHNob3dfZGVidWdfbWVzc2FnZXMgPSByZWYgZmFsc2VcbmxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgZmFsc2VcblxubW9kdWxlIEZsdXNoZWRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgT2tcbiAgICB8IGBSZWFkZXJfY2xvc2VkXG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgY29tYmluZSAobCA6IHQgRGVmZXJyZWQudCBsaXN0KSA9XG4gICAgbGV0JW1hcCBsID0gRGVmZXJyZWQuYWxsIGwgaW5cbiAgICBtYXRjaCBMaXN0Lm1lbSBsIGBSZWFkZXJfY2xvc2VkIH5lcXVhbCB3aXRoXG4gICAgfCB0cnVlIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgfCBmYWxzZSAtPiBgT2tcbiAgOztcbmVuZFxuXG4oKiBBIFtDb25zdW1lci50XSBhY3RzIGFzIHRoZSBtb25pdG9yIG9mIHNvbWUgcHJvY2VzcyB0aGF0IHJlYWRzIHZhbHVlcyBmcm9tIGEgcGlwZSBhbmRcbiAgIHByb2Nlc3NlcyB0aGVtLCBhbGxvd2luZyB0aGF0IHByb2Nlc3M6XG4gICAtIHRvIGNvbW11bmljYXRlIHRoYXQgaXQgaGFzIHRha2VuIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUgdmFsdWVzXG4gICAtIHRvIHNpZ25hbCB3aGVuIGl0IGhhcyBmaW5pc2hlZCB3aXRoIHRoZSB2YWx1ZXMgdG8gaW50ZXJlc3RlZCBwYXJ0aWVzICh2aWFcbiAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0pXG5cbiAgIEl0IGlzIHVzZWQgaW4gdHdvIHN0ZXBzOlxuXG4gICAxLiBjYWxsaW5nIFtDb25zdW1lci5zdGFydF0gYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBjb25zdW1lciB0YWtlcyB2YWx1ZXMgb3V0IG9mIHRoZVxuICAgUGlwZSB2aWEgW3JlYWRdIG9yIFtyZWFkJ10uXG5cbiAgIDIuIGNhbGxpbmcgW0NvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1dLlxuXG4gICBCeSBjYWxsaW5nIFt2YWx1ZXNfc2VudF9kb3duc3RyZWFtXSBvbmUgYXNzZXJ0cyB0aGF0IHRoZSBbZG93bnN0cmVhbV9mbHVzaGVkXSBmdW5jdGlvblxuICAgc3VwcGxpZWQgdG8gW2NyZWF0ZV0gd2lsbCBub3cgd2FpdCBmb3IgdGhpcyB2YWx1ZS5cblxuICAgSWYgbm8gW0NvbnN1bWVyLnRdIGlzIHN1cHBsaWVkIHdoZW4gYSB2YWx1ZSBpcyByZWFkIHRoZW4gdGhlIHZhbHVlIGlzIGRlZmluZWQgdG8gYmVcbiAgIGZsdXNoZWQgYXQgdGhhdCB0aW1lLiAqKVxubW9kdWxlIENvbnN1bWVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBwaXBlX2lkOmludFxuICAgIC0+IGRvd25zdHJlYW1fZmx1c2hlZDoodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpXG4gICAgLT4gdFxuXG4gIHZhbCBwaXBlX2lkIDogdCAtPiBpbnRcbiAgdmFsIHN0YXJ0IDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtIDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIDogdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGlwZV9pZCA6IGludFxuICAgIDsgKCogW3ZhbHVlc19yZWFkXSByZWZsZWN0cyB3aGV0aGVyIHZhbHVlcyB0aGUgY29uc3VtZXIgaGFzIHJlYWQgZnJvbSB0aGUgcGlwZSBoYXZlIGJlZW5cbiAgICAgICAgIHNlbnQgZG93bnN0cmVhbSBvciBpZiBub3QsIGhvbGRzIGFuIGl2YXIgdGhhdCBpcyB0byBiZSBmaWxsZWQgd2hlbiB0aGV5IGFyZS4gKilcbiAgICAgIG11dGFibGVcbiAgICAgICAgdmFsdWVzX3JlYWQgOlxuICAgICAgICBbIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIG9mIHVuaXQgSXZhci50IF1cbiAgICA7ICgqIFtkb3duc3RyZWFtX2ZsdXNoZWQgKCldIHJldHVybnMgd2hlbiBhbGwgcHJpb3IgdmFsdWVzIHRoYXQgdGhlIGNvbnN1bWVyIGhhc1xuICAgICAgICAgcGFzc2VkIGRvd25zdHJlYW0gaGF2ZSBiZWVuIGZsdXNoZWQgYWxsIHRoZSB3YXkgZG93biB0aGUgY2hhaW4gb2YgcGlwZXMuICopXG4gICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgOiB1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5waXBlX2lkOmlnbm9yZVxuICAgICAgICB+dmFsdWVzX3JlYWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gKClcbiAgICAgICAgICAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpXG4gICAgICAgIH5kb3duc3RyZWFtX2ZsdXNoZWQ6aWdub3JlXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5Db25zdW1lci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIH5waXBlX2lkIH5kb3duc3RyZWFtX2ZsdXNoZWQgPVxuICAgIHsgcGlwZV9pZDsgdmFsdWVzX3JlYWQgPSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbTsgZG93bnN0cmVhbV9mbHVzaGVkIH1cbiAgOztcblxuICBsZXQgc3RhcnQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gXyAtPiAoKVxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT5cbiAgICAgIHQudmFsdWVzX3JlYWQgPC0gYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIChJdmFyLmNyZWF0ZSAoKSlcbiAgOztcblxuICBsZXQgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiB0LmRvd25zdHJlYW1fZmx1c2hlZCAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIHdoZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB3aGVuX3NlbnRfZG93bnN0cmVhbSBpblxuICAgICAgdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9yZWFkID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfcmVhZC50XSByZXByZXNlbnRzIGEgYmxvY2tlZCByZWFkIGF0dGVtcHQuICBJZiBzb21lb25lIHJlYWRzIGZyb20gYW4gZW1wdHlcbiAgICAgcGlwZSwgdGhleSBlbnF1ZXVlIGEgW0Jsb2NrZWRfcmVhZC50XSBpbiB0aGUgcXVldWUgb2YgW2Jsb2NrZWRfcmVhZHNdLiAgTGF0ZXIsIHdoZW5cbiAgICAgdmFsdWVzIGFyZSB3cml0dGVuIHRvIGEgcGlwZSwgdGhhdCB3aWxsIGNhdXNlIHNvbWUgbnVtYmVyIG9mIGJsb2NrZWQgcmVhZHMgdG8gYmVcbiAgICAgZmlsbGVkLCBmaXJzdCBjb21lIGZpcnN0IHNlcnZlLiAgVGhlIGJsb2NrZWQtcmVhZCBjb25zdHJ1Y3RvciBzcGVjaWZpZXMgaG93IG1hbnlcbiAgICAgdmFsdWVzIGEgcmVhZCBzaG91bGQgY29uc3VtZSBmcm9tIHRoZSBwaXBlIHdoZW4gaXQgZ2V0cyBpdHMgdHVybi5cblxuICAgICBJZiBhIHBpcGUgaXMgY2xvc2VkLCB0aGVuIGFsbCBibG9ja2VkIHJlYWRzIHdpbGwgYmUgZmlsbGVkIHdpdGggW2BFb2ZdLiAqKVxuICB0eXBlICdhIHdhbnRzID1cbiAgICB8IFplcm8gb2YgWyBgRW9mIHwgYE9rIF0gSXZhci50XG4gICAgfCBPbmUgb2YgWyBgRW9mIHwgYE9rIG9mICdhIF0gSXZhci50XG4gICAgfCBBdF9tb3N0IG9mIGludCAqIFsgYEVvZiB8IGBPayBvZiAnYSBRdWV1ZS50IF0gSXZhci50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdhbnRzIDogJ2Egd2FudHNcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+d2FudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgWmVybyBfIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgICB8IEF0X21vc3QgKGksIF8pIC0+IGFzc2VydCAoaSA+IDApKSlcbiAgICAgICAgfmNvbnN1bWVyOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT4gQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5CbG9ja2VkX3JlYWQuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHdhbnRzIGNvbnN1bWVyID0geyB3YW50czsgY29uc3VtZXIgfVxuXG4gIGxldCBpc19lbXB0eSB0ID1cbiAgICBtYXRjaCB0LndhbnRzIHdpdGhcbiAgICB8IFplcm8gaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IE9uZSBpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5pc19lbXB0eSBpXG4gIDs7XG5cbiAgbGV0IGZpbGxfd2l0aF9lb2YgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgT25lIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5maWxsIGkgYEVvZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBCbG9ja2VkX2ZsdXNoID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfZmx1c2gudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgZmx1c2ggb3BlcmF0aW9uLCB3aGljaCBjYW4gYmUgZW5hYmxlZCBieSBhXG4gICAgIGZ1dHVyZSByZWFkLiAgSWYgc29tZW9uZSBkb2VzIFtmbHVzaGVkIHBdIG9uIGEgcGlwZSwgdGhhdCBibG9ja3MgdW50aWwgZXZlcnl0aGluZ1xuICAgICB0aGF0J3MgY3VycmVudGx5IGluIHRoZSBwaXBlIGF0IHRoYXQgcG9pbnQgaGFzIGRyYWluZWQgb3V0IG9mIHRoZSBwaXBlLiAgV2hlbiB3ZSBjYWxsXG4gICAgIFtmbHVzaGVkXSwgaXQgcmVjb3JkcyB0aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgdGhhdCBoYXMgYmVlbiB3cml0dGVuIHNvIGZhciBpblxuICAgICBbZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF0uICBXZSBmaWxsIHRoZSBbRmx1c2gudF0gd2l0aCBbYE9rXSB3aGVuIHRoaXMgYW1vdW50IG9mXG4gICAgIGRhdGEgaGFzIGJlZW4gcmVhZCBmcm9tIHRoZSBwaXBlLlxuXG4gICAgIEEgW0Jsb2NrZWRfZmx1c2gudF0gY2FuIGFsc28gYmUgZmlsbGVkIHdpdGggW2BSZWFkZXJfY2xvc2VkXSwgd2hpY2ggaGFwcGVucyB3aGVuIHRoZVxuICAgICByZWFkZXIgZW5kIG9mIHRoZSBwaXBlIGlzIGNsb3NlZCwgYW5kIHdlIGFyZSB0aHVzIHN1cmUgdGhhdCB0aGUgdW5yZWFkIGVsZW1lbnRzIHByZWNlZGluZyB0aGUgZmx1c2ggd2lsbCBuZXZlciBiZSByZWFkLiAqKVxuICB0eXBlIHQgPVxuICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA6IGludFxuICAgIDsgcmVhZHkgOiBbIGBPayB8IGBSZWFkZXJfY2xvc2VkIF0gSXZhci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGZpbGwgdCB2ID0gSXZhci5maWxsIHQucmVhZHkgdlxuZW5kXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgKCogW2lkXSBpcyBhbiBpbnRlZ2VyIHVzZWQgdG8gZGlzdGluZ3Vpc2ggcGlwZXMgd2hlbiBkZWJ1Z2dpbmcuICopXG4gICAgaWQgOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XG4gIDsgKCogW2luZm9dIGlzIHVzZXItcHJvdmlkZWQgYXJiaXRyYXJ5IHNleHAsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuICopXG4gICAgbXV0YWJsZSBpbmZvIDogU2V4cC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7ICgqIFtidWZmZXJdIGhvbGRzIHZhbHVlcyB3cml0dGVuIHRvIHRoZSBwaXBlIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gcmVhZC4gKilcbiAgICBtdXRhYmxlIGJ1ZmZlciA6ICdhIFF1ZXVlLnRcbiAgOyAoKiBbc2l6ZV9idWRnZXRdIGdvdmVybnMgcHVzaGJhY2sgb24gd3JpdGVycyB0byB0aGUgcGlwZS5cblxuICAgICAgIFRoZXJlIGlzICpubyogaW52YXJpYW50IHRoYXQgW1F1ZXVlLmxlbmd0aCBidWZmZXIgPD0gc2l6ZV9idWRnZXRdLlxuICAgICAgIFRoZXJlIGlzIG5vIGhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNhbiBiZSBzdHVmZmVkIGludG8gdGhlXG4gICAgICAgW2J1ZmZlcl0uIFRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgd2UgaGFuZGxlIHdyaXRlcy4gV2hlbiB3ZSBkbyBhIHdyaXRlLCBhbGwgb2YgdGhlXG4gICAgICAgdmFsdWVzIHdyaXR0ZW4gYXJlIGltbWVkaWF0ZWx5IGVucXVldWVkIGludG8gW2J1ZmZlcl0uIEFmdGVyIHRoZSB3cml0ZSwgaWZcbiAgICAgICBbUXVldWUubGVuZ3RoIGJ1ZmZlciA8PSB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGVyIHdpbGwgYmUgbm90aWZpZWQgdG9cbiAgICAgICBjb250aW51ZSB3cml0aW5nLiBBZnRlciB0aGUgd3JpdGUsIGlmIFtsZW5ndGggdCA+IHQuc2l6ZV9idWRnZXRdLCB0aGVuIHRoZSB3cml0ZVxuICAgICAgIHdpbGwgYmxvY2sgdW50aWwgdGhlIHBpcGUgaXMgdW5kZXIgYnVkZ2V0LiAqKVxuICAgIG11dGFibGUgc2l6ZV9idWRnZXQgOiBpbnRcbiAgOyAoKiBbcmVzZXJ2ZWRfc3BhY2VdIGNvdW50cyBhZ2FpbnN0IFtzaXplX2J1ZGdldF0gd2l0aG91dCBhY3R1YWxseSBidWZmZXJpbmcgYW55dGhpbmdcbiAgICAgICB5ZXQuIFdoZW4gaXQncyBwb3NpdGl2ZSwgd3JpdGVzIGRlY3JlbWVudCBpdC4gKilcbiAgICBtdXRhYmxlIHJlc2VydmVkX3NwYWNlIDogaW50XG4gIDsgKCogW3B1c2hiYWNrXSBpcyB1c2VkIHRvIGdpdmUgZmVlZGJhY2sgdG8gd3JpdGVycyBhYm91dCB3aGV0aGVyIHRoZXkgc2hvdWxkIHdyaXRlIHRvXG4gICAgICAgdGhlIHBpcGUuIFtwdXNoYmFja10gaXMgZnVsbCBpZmYgW2xlbmd0aCB0ICsgcmVzZXJ2ZWRfc3BhY2UgdCA8PSB0LnNpemVfYnVkZ2V0IHx8XG4gICAgICAgaXNfY2xvc2VkIHRdLiAqKVxuICAgIG11dGFibGUgcHVzaGJhY2sgOiB1bml0IEl2YXIudFxuICA7ICgqIFtudW1fdmFsdWVzX3JlYWRdIGtlZXBzIHRyYWNrIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuIHJlYWRcbiAgICAgICBmcm9tIHRoZSBwaXBlLiAgV2UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgb3ZlcmZsb3cgaW4gW251bV92YWx1ZXNfcmVhZF0uICBZb3UnZFxuICAgICAgIG5lZWQgdG8gd3JpdGUgMl42MiBlbGVtZW50cyB0byB0aGUgcGlwZSwgd2hpY2ggd291bGQgdGFrZSBhYm91dCAxNDYgeWVhcnMsIGF0IGFcbiAgICAgICBmbG93IHJhdGUgb2YgMSBzaXplLXVuaXQvbmFub3NlY29uZC4gKilcbiAgICBtdXRhYmxlIG51bV92YWx1ZXNfcmVhZCA6IGludFxuICAoKiBbYmxvY2tlZF9mbHVzaGVzXSBob2xkcyBmbHVzaGVzIHdob3NlIHByZWNlZGluZyBlbGVtZW50cyBoYXZlIG5vdCBiZWVuIGNvbXBsZXRlbHlcbiAgICAgcmVhZC4gIEZvciBlYWNoIGJsb2NrZWQgZmx1c2gsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgZnJvbSB0aGVcbiAgICAgcGlwZSBpbiBvcmRlciB0byBmaWxsIHRoZSBmbHVzaCBpcyAgICAgICAgICAgICAgICAgICAgICAgIDpcblxuICAgICBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIC0gbnVtX3ZhbHVlc19yZWFkXG5cbiAgICAgS2VlcGluZyB0aGUgZGF0YSBpbiB0aGlzIGZvcm0gYWxsb3dzIHVzIHRvIGNoYW5nZSBhIHNpbmdsZSBmaWVsZChudW1fdmFsdWVzX3JlYWQpXG4gICAgIHdoZW4gd2UgY29uc3VtZSB2YWx1ZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSBxdWV1ZSBvZlxuICAgICBmbHVzaGVzLiAqKVxuICA7IGJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCBRdWV1ZS50XG4gIDsgKCogW2Jsb2NrZWRfcmVhZHNdIGhvbGRzIHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgb24gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBwaXBlLiAqKVxuICAgIGJsb2NrZWRfcmVhZHMgOiAnYSBCbG9ja2VkX3JlYWQudCBRdWV1ZS50XG4gIDsgKCogW2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICBjbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtyZWFkX2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIHJlYWRfY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbY29uc3VtZXJzXSBpcyBhIGxpc3Qgb2YgYWxsIGNvbnN1bWVycyB0aGF0IG1heSBiZSBoYW5kbGluZyB2YWx1ZXMgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUuICopXG4gICAgbXV0YWJsZSBjb25zdW1lcnMgOiBDb25zdW1lci50IGxpc3RcbiAgOyAoKiBbdXBzdHJlYW1fZmx1c2hlZHNdIGhhcyBhIGZ1bmN0aW9uIGZvciBlYWNoIHBpcGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0gb2YgdGhpcyBvbmUuXG4gICAgICAgVGhhdCBmdW5jdGlvbiB3YWxrcyB0byB0aGUgaGVhZChzKSBvZiB0aGUgdXBzdHJlYW0gcGlwZSwgYW5kIGNhbGxzXG4gICAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0gb24gdGhlIGhlYWQocykuICBTZWUgdGhlIGRlZmluaXRpb24gb2YgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICAgICAgYmVsb3cuICopXG4gICAgdXBzdHJlYW1fZmx1c2hlZHMgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGVmZmVjdGl2ZV9zaXplX2J1ZGdldCB0ID0gdC5zaXplX2J1ZGdldCAtIHQucmVzZXJ2ZWRfc3BhY2VcblxudHlwZSAoJ2EsICdwaGFudG9tKSBwaXBlID0gKCdhLCAncGhhbnRvbSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIHQuaWRcbmxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgY29tcGFyZSB0MSB0MiA9IEludC5jb21wYXJlIHQxLmlkIHQyLmlkXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbmxldCBpc19yZWFkX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQucmVhZF9jbG9zZWRcbmxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxubGV0IHB1c2hiYWNrIHQgPSBJdmFyLnJlYWQgdC5wdXNoYmFja1xubGV0IGxlbmd0aCB0ID0gUXVldWUubGVuZ3RoIHQuYnVmZmVyXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGEgPSB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIGRlbHRhXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aWQ6aWdub3JlXG4gICAgICB+aW5mbzppZ25vcmVcbiAgICAgIH5idWZmZXI6aWdub3JlXG4gICAgICB+c2l6ZV9idWRnZXQ6KGNoZWNrIChmdW4gc2l6ZV9idWRnZXQgLT4gYXNzZXJ0IChzaXplX2J1ZGdldCA+PSAwKSkpXG4gICAgICB+cmVzZXJ2ZWRfc3BhY2U6KGNoZWNrIChmdW4gcmVzZXJ2ZWRfc3BhY2UgLT4gYXNzZXJ0IChyZXNlcnZlZF9zcGFjZSA+PSAwKSkpXG4gICAgICB+cHVzaGJhY2s6XG4gICAgICAgIChjaGVjayAoZnVuIHB1c2hiYWNrIC0+XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgQm9vbC5lcXVhbFxuICAgICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCBwdXNoYmFjaylcbiAgICAgICAgICAgICAgIChsZW5ndGggdCA8PSBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCB8fCBpc19jbG9zZWQgdCkpKSlcbiAgICAgIH5udW1fdmFsdWVzX3JlYWQ6aWdub3JlXG4gICAgICB+YmxvY2tlZF9mbHVzaGVzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX2ZsdXNoZXMgLT5cbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biAoZiA6IEJsb2NrZWRfZmx1c2gudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGYuZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA+IHQubnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgTGlzdC5pc19zb3J0ZWRcbiAgICAgICAgICAgICAgIH5jb21wYXJlOkludC5jb21wYXJlXG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChRdWV1ZS50b19saXN0IGJsb2NrZWRfZmx1c2hlcylcbiAgICAgICAgICAgICAgICAgIH5mOkJsb2NrZWRfZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBpZiBpc19lbXB0eSB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX2ZsdXNoZXMpKSlcbiAgICAgIH5ibG9ja2VkX3JlYWRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX3JlYWRzIC0+XG4gICAgICAgICAgICgqIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBubyBvbmUgaXMgd2FpdGluZyBmb3IgaXQuICBUaGlzIHdvdWxkIG5lZWQgdG8gY2hhbmdlIGlmXG4gICAgICAgICAgICAgIHdlIGV2ZXIgaW1wbGVtZW50IFtyZWFkX2V4YWN0bHldIGFzIGFuIGF0b21pYyBvcGVyYXRpb24uICopXG4gICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpO1xuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfcmVhZHMgfmY6KGZ1biByZWFkIC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9yZWFkLmludmFyaWFudCByZWFkO1xuICAgICAgICAgICAgIGFzc2VydCAoQmxvY2tlZF9yZWFkLmlzX2VtcHR5IHJlYWQpKTtcbiAgICAgICAgICAgKCogWW91IG5ldmVyIGJsb2NrIHRyeWluZyB0byByZWFkIGEgY2xvc2VkIHBpcGUuICopXG4gICAgICAgICAgIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKSkpXG4gICAgICB+Y2xvc2VkOmlnbm9yZVxuICAgICAgfnJlYWRfY2xvc2VkOmlnbm9yZVxuICAgICAgfmNvbnN1bWVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gbCAtPlxuICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGNvbnN1bWVyIC0+XG4gICAgICAgICAgICAgQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyO1xuICAgICAgICAgICAgIGFzc2VydCAoQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lciA9IHQuaWQpKSkpXG4gICAgICB+dXBzdHJlYW1fZmx1c2hlZHM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubGV0IGlkX3JlZiA9IHJlZiAwXG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlciA9XG4gIGluY3IgaWRfcmVmO1xuICBsZXQgdCA9XG4gICAgeyBpZCA9ICFpZF9yZWZcbiAgICA7IGluZm9cbiAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyByZWFkX2Nsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgO1xuICAgICAgc2l6ZV9idWRnZXRcbiAgICA7IHJlc2VydmVkX3NwYWNlID0gMFxuICAgIDsgcHVzaGJhY2sgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgYnVmZmVyID0gaW5pdGlhbF9idWZmZXJcbiAgICA7IG51bV92YWx1ZXNfcmVhZCA9IDBcbiAgICA7IGJsb2NrZWRfZmx1c2hlcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgYmxvY2tlZF9yZWFkcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgY29uc3VtZXJzID0gW11cbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzID0gQmFnLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0ID1cbiAgaWYgc2l6ZV9idWRnZXQgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJuZWdhdGl2ZSBzaXplX2J1ZGdldFwiIChzaXplX2J1ZGdldCA6IGludCldXG4gIGVsc2Ugc2l6ZV9idWRnZXRcbjs7XG5cbmxldCBjcmVhdGUgP3NpemVfYnVkZ2V0ID9pbmZvICgpID1cbiAgbGV0IHNpemVfYnVkZ2V0ID1cbiAgICBtYXRjaCBzaXplX2J1ZGdldCB3aXRoXG4gICAgfCBTb21lIHYgLT4gdmFsaWRhdGVfc2l6ZV9idWRnZXQgdlxuICAgIHwgTm9uZSAtPiAwXG4gIGluXG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXI6KFF1ZXVlLmNyZWF0ZSAoKSkgaW5cbiAgKCogaW5pdGlhbGx5LCB0aGUgcGlwZSBkb2VzIG5vdCBwdXNoYmFjayAqKVxuICBJdmFyLmZpbGwgdC5wdXNoYmFjayAoKTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICB0LCB0XG47O1xuXG5sZXQgdXBkYXRlX3B1c2hiYWNrIHQgPVxuICBpZiBsZW5ndGggdCA8PSBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCB8fCBpc19jbG9zZWQgdFxuICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnB1c2hiYWNrICgpXG4gIGVsc2UgaWYgSXZhci5pc19mdWxsIHQucHVzaGJhY2tcbiAgdGhlbiB0LnB1c2hiYWNrIDwtIEl2YXIuY3JlYXRlICgpXG47O1xuXG5sZXQgY2xvc2UgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gKFxuICAgICAgUXVldWUuaXRlciB0LmJsb2NrZWRfcmVhZHMgfmY6QmxvY2tlZF9yZWFkLmZpbGxfd2l0aF9lb2Y7XG4gICAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0KVxuOztcblxubGV0IGNsb3NlX3JlYWQgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlX3JlYWRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfcmVhZF9jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQucmVhZF9jbG9zZWQgKCk7XG4gICAgUXVldWUuaXRlciB0LmJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIGZsdXNoIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgUmVhZGVyX2Nsb3NlZCk7XG4gICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX2ZsdXNoZXM7XG4gICAgUXVldWUuY2xlYXIgdC5idWZmZXI7XG4gICAgdC5yZXNlcnZlZF9zcGFjZSA8LSAwO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgICgqIHdlIGp1c3QgY2xlYXJlZCB0aGUgYnVmZmVyLCBzbyBtYXkgbmVlZCB0byBmaWxsIFt0LnB1c2hiYWNrXSAqKVxuICAgIGNsb3NlIHQpXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIHVwb24gKGYgdykgKGZ1biAoKSAtPiBjbG9zZSB3KTtcbiAgclxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXIgP3NpemVfYnVkZ2V0IH5jbG9zZV9vbl9leGNlcHRpb24gZiA9XG4gIGlmIG5vdCBjbG9zZV9vbl9leGNlcHRpb25cbiAgdGhlbiBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGZcbiAgZWxzZSAoXG4gICAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICAgIChmdW4gKCkgLT4gZiB3KVxuICAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgICBjbG9zZSB3O1xuICAgICAgICAgICByZXR1cm4gKCkpKTtcbiAgICByKVxuOztcblxubGV0IGNyZWF0ZV93cml0ZXIgP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgKGZ1biAoKSAtPiBmIHIpXG4gICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgY2xvc2VfcmVhZCByO1xuICAgICAgICAgcmV0dXJuICgpKSk7XG4gIHdcbjs7XG5cbmxldCB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXIgPVxuICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci5zdGFydDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCBRdWV1ZS5wZWVrIHQuYmxvY2tlZF9mbHVzaGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZmx1c2ggLT5cbiAgICAgIGlmIHQubnVtX3ZhbHVlc19yZWFkID49IGZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZ25vcmUgKFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50KTtcbiAgICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYE9rXG4gICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICAgICAgICAgdXBvblxuICAgICAgICAgICAgIChDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIGNvbnN1bWVyKVxuICAgICAgICAgICAgIChmdW4gZmx1c2hfcmVzdWx0IC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBmbHVzaF9yZXN1bHQpKTtcbiAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcblxuKCogW2NvbnN1bWVfYWxsIHRdIHJlYWRzIGFsbCB0aGUgZWxlbWVudHMgaW4gW3RdLiAqKVxubGV0IGNvbnN1bWVfYWxsIHQgY29uc3VtZXIgPVxuICBsZXQgcmVzdWx0ID0gdC5idWZmZXIgaW5cbiAgdC5idWZmZXIgPC0gUXVldWUuY3JlYXRlICgpO1xuICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOihRdWV1ZS5sZW5ndGggcmVzdWx0KTtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZV9vbmUgdCBjb25zdW1lciA9XG4gIGFzc2VydCAobGVuZ3RoIHQgPj0gMSk7XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJ1ZmZlciBpblxuICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOjE7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lciA9XG4gIGFzc2VydCAobWF4X3F1ZXVlX2xlbmd0aCA+PSAwKTtcbiAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA+PSBsZW5ndGggdFxuICB0aGVuIGNvbnN1bWVfYWxsIHQgY29uc3VtZXJcbiAgZWxzZSAoXG4gICAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YTptYXhfcXVldWVfbGVuZ3RoO1xuICAgIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlIH5jYXBhY2l0eTptYXhfcXVldWVfbGVuZ3RoICgpIGluXG4gICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnQuYnVmZmVyIH5kc3Q6cmVzdWx0IH5sZW46bWF4X3F1ZXVlX2xlbmd0aCAoKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2V0X3NpemVfYnVkZ2V0IHQgc2l6ZV9idWRnZXQgPVxuICBsZXQgc2l6ZV9idWRnZXQgPSB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCBpblxuICB0LnNpemVfYnVkZ2V0IDwtIHNpemVfYnVkZ2V0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHJlc2VydmVfc3BhY2UgdCBuID1cbiAgaWYgbiA8IDAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcInJlc2VydmluZyBuZWdhdGl2ZSBzcGFjZVwiIChuIDogaW50KV07XG4gIGxldCByZXNlcnZlZF9zcGFjZSA9IHQucmVzZXJ2ZWRfc3BhY2UgKyBuIGluXG4gIGlmIHJlc2VydmVkX3NwYWNlIDwgMFxuICB0aGVuXG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJvdmVyZmxvdyB3aGVuIHJlc2VydmluZyBzcGFjZVwiICh0LnJlc2VydmVkX3NwYWNlIDogaW50KSAobiA6IGludCldO1xuICB0LnJlc2VydmVkX3NwYWNlIDwtIHJlc2VydmVkX3NwYWNlO1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IGZpbGxfYmxvY2tlZF9yZWFkcyB0ID1cbiAgd2hpbGUgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKSkgJiYgbm90IChpc19lbXB0eSB0KSBkb1xuICAgIGxldCBibG9ja2VkX3JlYWQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfcmVhZHMgaW5cbiAgICBsZXQgY29uc3VtZXIgPSBibG9ja2VkX3JlYWQuY29uc3VtZXIgaW5cbiAgICBtYXRjaCBibG9ja2VkX3JlYWQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGBPa1xuICAgIHwgT25lIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpXG4gICAgfCBBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKSlcbiAgZG9uZVxuOztcblxubGV0IGRlY3JlYXNlX3Jlc2VydmVkX3NwYWNlIHQgbiA9IHQucmVzZXJ2ZWRfc3BhY2UgPC0gSW50Lm1heCAwICh0LnJlc2VydmVkX3NwYWNlIC0gbilcblxuKCogY2hlY2tzIGFsbCBpbnZhcmlhbnRzLCBjYWxscyBhIHBhc3NlZCBpbiBmIHRvIGhhbmRsZSBhIHdyaXRlLCB0aGVuIHVwZGF0ZXMgcmVhZHMgYW5kXG4gICBwdXNoYmFjayAqKVxubGV0IHN0YXJ0X3dyaXRlIHQgfnNpemUgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJ3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIndyaXRlIHRvIGNsb3NlZCBwaXBlXCIgfnBpcGU6KHQgOiAoXywgXykgdCldO1xuICBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB0IHNpemVcbjs7XG5cbmxldCBmaW5pc2hfd3JpdGUgdCA9XG4gIGZpbGxfYmxvY2tlZF9yZWFkcyB0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6KFF1ZXVlLmxlbmd0aCBmcm9tKTtcbiAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOmZyb20gfmRzdDp0LmJ1ZmZlciAoKTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbiB0IH5mcm9tID1cbiAgdHJhbnNmZXJfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0IH5zaXplOihRdWV1ZS5sZW5ndGggZnJvbSk7XG4gIFF1ZXVlLml0ZXIgZnJvbSB+ZjooZnVuIHggLT4gUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB4KTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFt3cml0ZSddIGlzIHVzZWQgaW50ZXJuYWxseSAqKVxubGV0IHdyaXRlJyB0IHEgPSB0cmFuc2Zlcl9pbiB0IH5mcm9tOnFcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6MTtcbiAgUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB2YWx1ZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZSB0IHZhbHVlID1cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgd3JpdGVfd2hlbl9yZWFkeSB0IH5mID1cbiAgbGV0JW1hcCAoKSA9IHB1c2hiYWNrIHQgaW5cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiBgQ2xvc2VkIGVsc2UgYE9rIChmIChmdW4geCAtPiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCkpXG47O1xuXG5sZXQgd3JpdGVfaWZfb3BlbiB0IHggPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlIHQgeCBlbHNlIHJldHVybiAoKVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIHQgeCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHhcbjs7XG5cbmxldCBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjb25zdW1lciAtPlxuICAgIGlmIHQuaWQgPD4gQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lclxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJBdHRlbXB0IHRvIHVzZSBjb25zdW1lciB3aXRoIHdyb25nIHBpcGVcIlxuICAgICAgICAgICAgKGNvbnN1bWVyIDogQ29uc3VtZXIudClcbiAgICAgICAgICAgIH5waXBlOih0IDogXyBSZWFkZXIudCldXG47O1xuXG5sZXQgc3RhcnRfcmVhZCA/Y29uc3VtZXIgdCBsYWJlbCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBsYWJlbCB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyXG47O1xuXG5sZXQgZ2VuX3JlYWRfbm93ID9jb25zdW1lciB0IGNvbnN1bWUgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX25vd1wiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYEVvZiBlbHNlIGBOb3RoaW5nX2F2YWlsYWJsZVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgKCogZnJvbSBbaW52YXJpYW50XSBhbmQgW25vdCAoaXNfZW1wdHkgdCldICopXG4gICAgYE9rIChjb25zdW1lIHQgY29uc3VtZXIpKVxuOztcblxubGV0IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoID1cbiAgbWF0Y2ggbWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gIHwgU29tZSBtYXhfcXVldWVfbGVuZ3RoIC0+XG4gICAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA8PSAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm1heF9xdWV1ZV9sZW5ndGggPD0gMFwiIChtYXhfcXVldWVfbGVuZ3RoIDogaW50KV07XG4gICAgbWF4X3F1ZXVlX2xlbmd0aFxuOztcblxubGV0IHJlYWRfbm93JyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIChmdW4gdCBjb25zdW1lciAtPiBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpXG47O1xuXG5sZXQgcmVhZF9ub3cgP2NvbnN1bWVyIHQgPSBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgY29uc3VtZV9vbmVcbmxldCBwZWVrIHQgPSBRdWV1ZS5wZWVrIHQuYnVmZmVyXG5cbmxldCBjbGVhciB0ID1cbiAgbWF0Y2ggcmVhZF9ub3cnIHQgd2l0aFxuICB8IGBFb2YgfCBgTm90aGluZ19hdmFpbGFibGUgfCBgT2sgXyAtPiAoKVxuOztcblxubGV0IHJlYWQnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBzdGFydF9yZWFkIHQgXCJyZWFkJ1wiID9jb25zdW1lcjtcbiAgbWF0Y2ggcmVhZF9ub3cnIHQgP2NvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCAoYE9rIF8gfCBgRW9mKSBhcyByIC0+IHJldHVybiByXG4gIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfcmVhZHNcbiAgICAgICAgKEJsb2NrZWRfcmVhZC5jcmVhdGUgKEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpKSBjb25zdW1lcikpXG47O1xuXG5sZXQgcmVhZCA/Y29uc3VtZXIgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgdGhlbiByZXR1cm4gYEVvZlxuICAgIGVsc2VcbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChPbmUgaXZhcikpIGNvbnN1bWVyKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHJldHVybiAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSkpXG47O1xuXG5sZXQgcmVhZF9leG4gP2NvbnN1bWVyIHQgPVxuICBtYXRjaCVtYXAgcmVhZCA/Y29uc3VtZXIgdCB3aXRoXG4gIHwgYE9rIHZhbHVlIC0+IHZhbHVlXG4gIHwgYEVvZiAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leG46IHJlY2VpdmVkIEVPRlwiXVxuOztcblxubGV0IHZhbHVlc19hdmFpbGFibGUgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInZhbHVlc19hdmFpbGFibGVcIjtcbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiBgT2tcbiAgZWxzZSBpZiBpc19jbG9zZWQgdFxuICB0aGVuIHJldHVybiBgRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIFF1ZXVlLmxhc3QgdC5ibG9ja2VkX3JlYWRzIHdpdGhcbiAgICB8IFNvbWUgeyBjb25zdW1lciA9IE5vbmU7IHdhbnRzID0gWmVybyBpdmFyIH0gLT5cbiAgICAgICgqIFRoaXMgY2FzZSBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIG11bHRpcGxlIGNhbGxzIHRvIFt2YWx1ZXNfYXZhaWxhYmxlXSBpblxuICAgICAgICAgc2VxdWVuY2UuICBJdCBjYXVzZXMgdGhlbSB0byBhbGwgc2hhcmUgdGhlIHNhbWUgaXZhciwgcmF0aGVyIHRoYW4gYWxsb2NhdGVcbiAgICAgICAgIGFuIGl2YXIgcGVyIGNhbGwuICopXG4gICAgICBJdmFyLnJlYWQgaXZhclxuICAgIHwgXyAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKFplcm8gaXZhcikpIE5vbmUpKSlcbjs7XG5cbmxldCByZWFkX2Nob2ljZSB0ID0gY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIHQpIChmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT4gcmVhZF9ub3cgdClcblxubGV0IHJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG4gdCBoZXJlID1cbiAgRGVmZXJyZWQuQ2hvaWNlLm1hcCAocmVhZF9jaG9pY2UgdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCAoYE9rIF8gfCBgRW9mKSBhcyB4IC0+IHhcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIlBpcGUucmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4bjogY2hvaWNlIHdhcyBlbmFibGVkIGJ1dCBwaXBlIGlzIGVtcHR5OyBcXFxuICAgICAgICAgICB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbiB3aXRoIG9uZSBvciBtb3JlIG90aGVyIGNvbnN1bWVyc1wiXG4gICAgICAgICAgICAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXSlcbjs7XG5cbigqIFtyZWFkX2V4YWN0bHkgdCB+bnVtX3ZhbHVlc10gbG9vcHMsIGdldHRpbmcgeW91IGFsbCBbbnVtX3ZhbHVlc10gaXRlbXMsIHVwXG4gICB0byBFT0YuICopXG5sZXQgcmVhZF9leGFjdGx5ID9jb25zdW1lciB0IH5udW1fdmFsdWVzID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9leGFjdGx5XCIgP2NvbnN1bWVyO1xuICBpZiBudW1fdmFsdWVzIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leGFjdGx5IGdvdCBudW1fdmFsdWVzIDw9IDBcIiAobnVtX3ZhbHVlcyA6IGludCldO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2ggLT5cbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBRdWV1ZS5sZW5ndGggcmVzdWx0IGluXG4gICAgICBhc3NlcnQgKGFscmVhZHlfcmVhZCA8PSBudW1fdmFsdWVzKTtcbiAgICAgIGlmIGFscmVhZHlfcmVhZCA9IG51bV92YWx1ZXNcbiAgICAgIHRoZW4gSXZhci5maWxsIGZpbmlzaCAoYEV4YWN0bHkgcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICByZWFkJyA/Y29uc3VtZXIgdCB+bWF4X3F1ZXVlX2xlbmd0aDoobnVtX3ZhbHVlcyAtIGFscmVhZHlfcmVhZClcbiAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoIChpZiBhbHJlYWR5X3JlYWQgPSAwIHRoZW4gYEVvZiBlbHNlIGBGZXdlciByZXN1bHQpXG4gICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IGRvd25zdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgTGlzdC5pc19lbXB0eSB0LmNvbnN1bWVyc1xuICAgIHRoZW4gcmV0dXJuIGBPa1xuICAgIGVsc2VcbiAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgKExpc3QubWFwIHQuY29uc3VtZXJzIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQpXG4gIGVsc2VcbiAgICAoKiBbdF0gbWlnaHQgYmUgY2xvc2VkLiAgQnV0IHRoZSByZWFkIGVuZCBjYW4ndCBiZSBjbG9zZWQsIGJlY2F1c2UgaWYgaXQgd2VyZSwgdGhlblxuICAgICAgIFt0XSB3b3VsZCBiZSBlbXB0eS4gIElmIHRoZSB3cml0ZSBlbmQgaXMgY2xvc2VkIGJ1dCBub3QgdGhlIHJlYWQgZW5kLCB0aGVuIHdlIHdhbnRcbiAgICAgICB0byBlbnF1ZXVlIGEgYmxvY2tlZCBmbHVzaCBiZWNhdXNlIHRoZSBlbnF1ZXVlZCB2YWx1ZXMgbWF5IGdldCByZWFkLiAqKVxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlYWR5IC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9mbHVzaGVzXG4gICAgICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA9IHQubnVtX3ZhbHVlc19yZWFkICsgbGVuZ3RoIHQ7IHJlYWR5IH0pXG47O1xuXG4oKiBJbiBwcmFjdGljZSwgYWxvbmcgd2l0aCBbTGluay5jcmVhdGVdIGFuZCBbYWRkX3Vwc3RyZWFtX2ZsdXNoZWRdLCBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgIHRyYXZlcnNlcyB0aGUgZ3JhcGggb2YgbGlua2VkIHBpcGVzIHVwIHRvIHRoZSBoZWFkcyBhbmQgdGhlbiBjYWxscyBbZG93bnN0cmVhbV9mbHVzaGVkXVxuICAgb24gdGhlbS4gKilcbmxldCB1cHN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBCYWcuaXNfZW1wdHkgdC51cHN0cmVhbV9mbHVzaGVkc1xuICB0aGVuIGRvd25zdHJlYW1fZmx1c2hlZCB0XG4gIGVsc2VcbiAgICBCYWcudG9fbGlzdCB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBmIC0+IGYgKCkpXG4gICAgfD4gRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuOztcblxubGV0IGFkZF91cHN0cmVhbV9mbHVzaGVkIHQgdXBzdHJlYW1fZmx1c2hlZCA9IEJhZy5hZGQgdC51cHN0cmVhbV9mbHVzaGVkcyB1cHN0cmVhbV9mbHVzaGVkXG5cbmxldCBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgbGV0IGNvbnN1bWVyID0gQ29uc3VtZXIuY3JlYXRlIH5waXBlX2lkOnQuaWQgfmRvd25zdHJlYW1fZmx1c2hlZCBpblxuICB0LmNvbnN1bWVycyA8LSBjb25zdW1lciA6OiB0LmNvbnN1bWVycztcbiAgY29uc3VtZXJcbjs7XG5cbigqIEEgW0xpbmsudF0gbGlua3MgZmx1c2hpbmcgb2YgdHdvIHBpcGVzIHRvZ2V0aGVyLiAqKVxubW9kdWxlIExpbmsgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVwc3RyZWFtOihfLCBfKSBwaXBlIC0+IGRvd25zdHJlYW06KF8sIF8pIHBpcGUgLT4gdFxuICB2YWwgY29uc3VtZXIgOiB0IC0+IENvbnN1bWVyLnRcblxuICAoKiBbdW5saW5rX3Vwc3RyZWFtXSByZW1vdmVzIGRvd25zdHJlYW0ncyByZWZlcmVuY2UgdG8gdXBzdHJlYW0uICopXG5cbiAgdmFsIHVubGlua191cHN0cmVhbSA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdW5wYWNrZWQgPVxuICAgIHsgZG93bnN0cmVhbSA6ICgnYSwgJ2IpIHRcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudFxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLkVsdC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBjb25zdW1lciAoVCB0KSA9IHQuY29uc3VtZXJcblxuICBsZXQgY3JlYXRlIH51cHN0cmVhbSB+ZG93bnN0cmVhbSA9XG4gICAgVFxuICAgICAgeyBkb3duc3RyZWFtXG4gICAgICA7IGNvbnN1bWVyID1cbiAgICAgICAgICBhZGRfY29uc3VtZXIgdXBzdHJlYW0gfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSlcbiAgICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA9XG4gICAgICAgICAgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSAoZnVuICgpIC0+IHVwc3RyZWFtX2ZsdXNoZWQgdXBzdHJlYW0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IHVubGlua191cHN0cmVhbSAoVCB0KSA9XG4gICAgQmFnLnJlbW92ZSB0LmRvd25zdHJlYW0udXBzdHJlYW1fZmx1c2hlZHMgdC51cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZsdXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnN1bWVyIG9mIENvbnN1bWVyLnRcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgID8oZmx1c2hlZCA9IEZsdXNoZWQuV2hlbl92YWx1ZV9yZWFkKVxuICAgICAgdFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gID1cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBtYXRjaCBmbHVzaGVkIHdpdGhcbiAgICB8IFdoZW5fdmFsdWVfcmVhZCAtPiBOb25lXG4gICAgfCBDb25zdW1lciBjb25zdW1lciAtPiBTb21lIGNvbnN1bWVyXG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZCAtPlxuICAgICAgKCogVGhlIGZhY3QgdGhhdCBcIm5vIGNvbnN1bWVyXCIgYmVoYXZlcyBkaWZmZXJlbnQgZnJvbSBcInRyaXZpYWwgY29uc3VtZXJcIiBpcyB3ZWlyZCxcbiAgICAgICAgIGJ1dCB0aGF0J3MgaG93IHRoZSBjb25zdW1lciBtYWNoaW5lcnkgd29ya3MuICopXG4gICAgICBTb21lIChhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT4gcmV0dXJuIGBPaykpXG4gIGluXG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3ZhbHVlc19hdmFpbGFibGUgdCA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS5cbiAgICAgICBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgKCogWzFdIEZvciBuZXcgZW1wdHkgcGlwZXMgY3JlYXRlZCBhdCB0b3AtbGV2ZWwgd2Ugd2FudCB0byBhdm9pZCBpbW1lZGlhdGVseVxuICAgICAgIHNjaGVkdWxpbmcgYSBqb2Igb24gdGhlIHNjaGVkdWxlciAoc2VlIFtTY2hlZHVsZXIucmFpc2VfaWZfYW55X2pvYnNfd2VyZV9zY2hlZHVsZWRdKS5cbiAgICAgICBKdXN0IFtyZXR1cm4gKCkgPj4+XSBkb2Vzbid0IHdvcms6IFtyZXR1cm4gKCldIGNyZWF0ZXMgYSBmdWxsIGl2YXIgdGhhdCBjYXVzZXNcbiAgICAgICBbPj4+XSB0byBzY2hlZHVsZSBhIGpvYi4gKilcbiAgICB2YWx1ZXNfYXZhaWxhYmxlIHRcbiAgICA+Pj4gZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCBiXG4gICAgICB8IGBPayB2IC0+IGYgYiB2IGNvbnRpbnVlXG4gICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IGxvb3AgYlxuICAgIGFuZCBjb250aW51ZSBiID1cbiAgICAgIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW07XG4gICAgICBsb29wIGJcbiAgICBpblxuICAgIGxvb3AgaW5pdClcbjs7XG5cbmxldCBmb2xkJyA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgcSBsb29wIC0+XG4gICAgZiBiIHEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZCA/Zmx1c2hlZCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgYSBsb29wIC0+IGYgYiBhID4+PiBsb29wKVxuOztcblxubGV0IGZvbGRfd2l0aG91dF9wdXNoYmFjayA/Y29uc3VtZXIgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuXG4gICAgcmVhZF9ub3dcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGIgYSBsb29wIC0+IGxvb3AgKGYgYiBhKSlcbiAgICA/Zmx1c2hlZDpcbiAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgYyAtPiBTb21lIChDb25zdW1lciBjKSlcbjs7XG5cbmxldCB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGYgYSA9XG4gIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICB0aGVuIGYgYVxuICBlbHNlIChcbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAoZnVuICgpIC0+IGYgYSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgKE1vbml0b3IuZXh0cmFjdF9leG4gZXhuKSlcbjs7XG5cbmxldCBpdGVyJyA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+ZiA9XG4gIGZvbGQnID9tYXhfcXVldWVfbGVuZ3RoID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBxIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgcSlcbjs7XG5cbmxldCBpdGVyID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCB0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgbG9vcCAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIGEgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuOztcblxuKCogW2l0ZXJfd2l0aG91dF9wdXNoYmFja10gaXMgYSBjb21tb24gY2FzZSwgc28gd2UgaW1wbGVtZW50IGl0IGluIGFuIG9wdGltaXplZCBtYW5uZXIsXG4gICByYXRoZXIgdGhhbiB2aWEgW2l0ZXJdLiAgVGhlIGltcGxlbWVudGF0aW9uIHJlYWRzIG9ubHkgb25lIGVsZW1lbnQgYXQgYSB0aW1lLCBzbyB0aGF0XG4gICBpZiBbZl0gY2xvc2VzIFt0XSBvciByYWlzZXMsIG5vIG1vcmUgZWxlbWVudHMgd2lsbCBiZSByZWFkLiAqKVxubGV0IGl0ZXJfd2l0aG91dF9wdXNoYmFja1xuICAgICAgP2NvbnN1bWVyXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpXG4gICAgICA/bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgICAgdFxuICAgICAgfmZcbiAgPVxuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgbGV0IG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPVxuICAgIG1hdGNoIG1heF9pdGVyYXRpb25zX3Blcl9qb2Igd2l0aFxuICAgIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBTb21lIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgLT5cbiAgICAgIGlmIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPD0gMFxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIml0ZXJfd2l0aG91dF9wdXNoYmFjayBnb3Qgbm9uLXBvc2l0aXZlIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcIlxuICAgICAgICAgICAgICAobWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA6IGludCldO1xuICAgICAgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICBpblxuICBsZXQgZiA9XG4gICAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBmXG4gICAgZWxzZVxuICAgICAgZnVuIGEgLT5cbiAgICAgICAgdHJ5IGYgYSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuXG4gIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3ZhbHVlc19hdmFpbGFibGUgdCA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS5cbiAgICAgICBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgdmFsdWVzX2F2YWlsYWJsZSB0XG4gICAgPj4+IGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPlxuICAgIGxldCByZWMgc3RhcnQgKCkgPSBsb29wIH5yZW1haW5pbmc6bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgIGFuZCBsb29wIH5yZW1haW5pbmcgPVxuICAgICAgaWYgcmVtYWluaW5nID0gMFxuICAgICAgdGhlbiByZXR1cm4gKCkgPj4+IGZ1biAoKSAtPiBzdGFydCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCAoKVxuICAgICAgICB8IGBPayBhIC0+XG4gICAgICAgICAgZiBhO1xuICAgICAgICAgIGxvb3AgfnJlbWFpbmluZzoocmVtYWluaW5nIC0gMSlcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBzdGFydCAoKSlcbiAgICBpblxuICAgIHN0YXJ0ICgpKVxuOztcblxubGV0IGRyYWluIHQgPSBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG5sZXQgZHJhaW5fYW5kX2NvdW50IHQgPSBmb2xkJyB0IH5pbml0OjAgfmY6KGZ1biBzdW0gcSAtPiByZXR1cm4gKHN1bSArIFF1ZXVlLmxlbmd0aCBxKSlcblxubGV0IHJlYWRfYWxsIGlucHV0ID1cbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQlbWFwICgpID1cbiAgICBpdGVyJyBpbnB1dCB+ZjooZnVuIHEgLT5cbiAgICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpxIH5kc3Q6cmVzdWx0ICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICByZXN1bHRcbjs7XG5cbmxldCB0b19saXN0IHIgPSByZWFkX2FsbCByID4+fCBRdWV1ZS50b19saXN0XG5cbmxldCB0b19zdHJlYW1fZGVwcmVjYXRlZCB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KVxuICAgID4+PiBmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBbb2Zfc3RyZWFtX2RlcHJlY2F0ZWRdIGRvZXMgYXMgbXVjaCBiYXRjaGluZyBhcyBwb3NzaWJsZS4gIEl0XG4gICBncmFicyBhcyBtYW55IGl0ZW1zIGFzIGFyZSBhdmFpbGFibGUgaW50byBhbiBpbnRlcm5hbCBxdWV1ZS4gIE9uY2UgaXQgaGFzIGdyYWJiZWRcbiAgIGV2ZXJ5dGhpbmcsIGl0IHdyaXRlcyBpdCB0byB0aGUgcGlwZSBhbmQgdGhlbiBibG9ja3Mgd2FpdGluZyBmb3IgdGhlIG5leHQgZWxlbWVudCBmcm9tXG4gICB0aGUgc3RyZWFtLlxuXG4gICBUaGVyZSdzIG5vIHBvc3NpYmlsaXR5IHRoYXQgd2UnbGwgc3RhcnZlIHRoZSBwaXBlIHJlYWRpbmcgYW4gZW5kbGVzcyBzdHJlYW0sIGp1c3RcbiAgIGFjY3VtdWxhdGluZyB0aGUgZWxlbWVudHMgaW50byBvdXIgcHJpdmF0ZSBxdWV1ZSBmb3JldmVyIHdpdGhvdXQgZXZlciB3cml0aW5nIHRoZW1cbiAgIGRvd25zdHJlYW0gdG8gdGhlIHBpcGUuICBXaHk/IGJlY2F1c2Ugd2hpbGUgd2UncmUgcnVubmluZywgdGhlIHN0cmVhbS1wcm9kdWNlciAqaXNuJ3QqXG4gICBydW5uaW5nIC0tIHRoZXJlIGFyZSBubyBBc3luYyBibG9jayBwb2ludHMgaW4gdGhlIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3AuICBTbyB0aGVcbiAgIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3Agd2lsbCBldmVudHVhbGx5IGNhdGNoIHVwIHRvIHRoZSBjdXJyZW50IHN0cmVhbSB0YWlsLCBhdCB3aGljaFxuICAgcG9pbnQgd2UnbGwgZG8gdGhlIHBpcGUtd3JpdGUgYW5kIHRoZW4gYmxvY2sgb24gdGhlIHN0cmVhbS4uLiB0aHVzIGdpdmluZyB0aGVcbiAgIHN0cmVhbS1wcm9kdWNlciBhIGNoYW5jZSB0byBtYWtlIG1vcmUgZWxlbWVudHMuXG5cbiAgIE9uZSBjYW4ndCBpbXBsZW1lbnQgW29mX3N0cmVhbV0gdXNpbmcgW1N0cmVhbS5pdGVyXSBvciBbU3RyZWFtLml0ZXInXSBiZWNhdXNlIHlvdVxuICAgbmVlZCB0byBiZSBhYmxlIHRvIHN0b3AgZWFybHkgd2hlbiB0aGUgY29uc3VtZXIgY2xvc2VzIHRoZSBwaXBlLiAgQWxzbywgdXNpbmcgZWl0aGVyXG4gICBvZiB0aG9zZSB3b3VsZCBlbnRhaWwgc2lnbmlmaWNhbnRseSBtb3JlIGRlZmVycmVkIG92ZXJoZWFkLCB3aGVyZWFzIHRoZSBiZWxvd1xuICAgaW1wbGVtZW50YXRpb24gdXNlcyBhIGRlZmVycmVkIG9ubHkgd2hlbiBpdCBuZWVkcyB0byB3YWl0IGZvciBkYXRhIGZyb20gdGhlIHN0cmVhbS4gKilcbmxldCBvZl9zdHJlYW1fZGVwcmVjYXRlZCBzID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHEgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHRyYW5zZmVyICgpID1cbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHEpXG4gICAgdGhlblxuICAgICAgKCogQ2FuIG5vdCBwdXNoYmFjayBvbiB0aGUgc3RyZWFtLCBzbyBpZ25vcmUgdGhlIHB1c2hiYWNrIG9uIHRoZSBwaXBlLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKHdyaXRlJyB3IHEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfY2xvc2VkIHcpKTtcbiAgICBsZXQgbmV4dF9kZWZlcnJlZCA9IFN0cmVhbS5uZXh0IHMgaW5cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIG5leHRfZGVmZXJyZWQgd2l0aFxuICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0XG4gICAgfCBOb25lIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIHVwb24gbmV4dF9kZWZlcnJlZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0XG4gIGFuZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0IG5leHQgPSBpZiBub3QgKGlzX2Nsb3NlZCB3KSB0aGVuIGxvb3BfbmV4dCBuZXh0XG4gIGFuZCBsb29wX25leHQgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIGNsb3NlIHdcbiAgICB8IENvbnMgKHgsIHMpIC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlIHEgeDtcbiAgICAgIGxvb3Agc1xuICBpblxuICBsb29wIHM7XG4gIHJcbjs7XG5cbmxldCB0cmFuc2Zlcl9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgIHdyaXRlXG4gICAgICBpbnB1dFxuICAgICAgb3V0cHV0XG4gICAgICB+ZlxuICA9XG4gIGlmICFjaGVja19pbnZhcmlhbnRcbiAgdGhlbiAoXG4gICAgaW52YXJpYW50IGlucHV0O1xuICAgIGludmFyaWFudCBvdXRwdXQpO1xuICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dCB+ZG93bnN0cmVhbTpvdXRwdXQgaW5cbiAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICgqIFdoZW4gd2UncmUgZG9uZSB3aXRoIFtpbnB1dF0sIHdlIHVubGluayB0byByZW1vdmUgcG9pbnRlcnMgZnJvbVxuICAgICBbb3V0cHV0XSB0byBbaW5wdXRdLCB3aGljaCB3b3VsZCBjYXVzZSBhIHNwYWNlIGxlYWsgaWYgd2UgaGFkIHNpbmdsZSBsb25nLWxpdmVkXG4gICAgIG91dHB1dCBpbnRvIHdoaWNoIHdlIHRyYW5zZmVyIGxvdHMgb2Ygc2hvcnQtbGl2ZWQgaW5wdXRzLiAqKVxuICBsZXQgdW5saW5rICgpID0gTGluay51bmxpbmtfdXBzdHJlYW0gbGluayBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2hvb3NlIFsgY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIGlucHV0KSBpZ25vcmU7IGNob2ljZSAoY2xvc2VkIG91dHB1dCkgaWdub3JlIF1cbiAgICBpblxuICAgICgqIFdlIGRvIFtpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZFxuICAgICAgIGFzeW5jaHJvbm91c2x5LiBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IG91dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2xvc2VfcmVhZCBpbnB1dDtcbiAgICAgIHVubGluayAoKTtcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBpZiBpc19jbG9zZWQgb3V0cHV0XG4gICAgICB0aGVuIG91dHB1dF9jbG9zZWQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB+Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT5cbiAgICAgICAgICB1bmxpbmsgKCk7XG4gICAgICAgICAgSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgICB8IGBPayB4IC0+IGYgeCBjb250aW51ZVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgYW5kIGNvbnRpbnVlIHkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHB1c2hiYWNrID0gd3JpdGUgb3V0cHV0IHkgaW5cbiAgICAgICAgQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgcHVzaGJhY2sgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCB0cmFuc2ZlcicgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IHRyYW5zZmVyIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCBvdXRwdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcbjs7XG5cbmxldCB0cmFuc2Zlcl9pZCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBrIHEpXG47O1xuXG5sZXQgbWFwX2dlbiByZWFkIHdyaXRlIGlucHV0IH5mID1cbiAgbGV0IGluZm8gPSBPcHRpb24ubWFwIGlucHV0LmluZm8gfmY6KGZ1biBpbmZvIC0+IFslc2V4cCBNYXBwZWQgKGluZm8gOiBTZXhwLnQpXSkgaW5cbiAgbGV0IHJlc3VsdCwgb3V0cHV0ID0gY3JlYXRlID9pbmZvICgpIGluXG4gIHVwb24gKHRyYW5zZmVyX2dlbiByZWFkIHdyaXRlIGlucHV0IG91dHB1dCB+ZikgKGZ1biAoKSAtPiBjbG9zZSBvdXRwdXQpO1xuICByZXN1bHRcbjs7XG5cbmxldCBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcF9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcblxubGV0IGNvbmNhdF9tYXBfbGlzdCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuY29uY2F0X21hcCBxIH5mKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biBxIC0+XG4gICAgRGVmZXJyZWQuUXVldWUuZmlsdGVyX21hcCB+aG93OmBTZXF1ZW50aWFsIHEgfmYpXG47O1xuXG5sZXQgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuZmlsdGVyX21hcCBxIH5mOihmdW4geCAtPiBpZiBpc19yZWFkX2Nsb3NlZCBpbnB1dCB0aGVuIE5vbmUgZWxzZSBmIHgpKSlcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0JW1hcCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZjooZnVuIGFjY3VtIGEgLT5cbiAgICBsZXQgYWNjdW0sIGIgPSBmIGFjY3VtIGEgaW5cbiAgICBhY2N1bSwgU29tZSBiKVxuOztcblxubGV0IGZpbHRlciBpbnB1dCB+ZiA9IGZpbHRlcl9tYXAgaW5wdXQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5cbmxldCBvZl9xdWV1ZV9pbnRlcm5hbCBxdWV1ZSA9XG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldDowIH5pbmZvOk5vbmUgfmluaXRpYWxfYnVmZmVyOnF1ZXVlIGluXG4gIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9xdWV1ZSBxdWV1ZSA9IG9mX3F1ZXVlX2ludGVybmFsIChRdWV1ZS5jb3B5IHF1ZXVlKVxubGV0IG9mX2xpc3QgbCA9IG9mX3F1ZXVlX2ludGVybmFsIChRdWV1ZS5vZl9saXN0IGwpXG5sZXQgZW1wdHkgKCkgPSBvZl9saXN0IFtdXG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCByZWFkZXIsIHdyaXRlciA9IGNyZWF0ZSAoKSBpblxuICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciB4O1xuICBjbG9zZSB3cml0ZXI7XG4gIHJlYWRlclxuOztcblxubGV0IHVuZm9sZCB+aW5pdDpzIH5mID1cbiAgKCogVG8gZ2V0IHNvbWUgYmF0Y2hpbmcsIHdlIHJ1biB0aGUgY29udGludWF0aW9uIGltbWVkaWF0ZWx5IGlmIHRoZSBkZWZlcnJlZCBpc1xuICAgICBkZXRlcm1pbmVkLiAgSG93ZXZlciwgd2UgYWx3YXlzIGNoZWNrIGZvciBwdXNoYmFjay4gIEJlY2F1c2Ugc2l6ZSBidWRnZXQgY2FuJ3QgYmVcbiAgICAgaW5maW5pdGUsIHRoZSBiZWxvdyBsb29wIGlzIGd1YXJhbnRlZWQgdG8gZXZlbnR1YWxseSB5aWVsZCB0byB0aGUgc2NoZWR1bGVyLiAqKVxuICBsZXQgKCA+Pj1+ICkgZCBmID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgIGYgc1xuICAgICAgPj49fiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IHJldHVybiAoKVxuICAgICAgfCBTb21lIChhLCBzKSAtPlxuICAgICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHRoZW4gcmV0dXJuICgpIGVsc2Ugd3JpdGUgd3JpdGVyIGEgPj49fiBmdW4gKCkgLT4gbG9vcCBzXG4gICAgaW5cbiAgICBsb29wIHMpXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGVucXVldWVfbiBzZXF1ZW5jZSBpID1cbiAgICAgIGlmIGkgPD0gMFxuICAgICAgdGhlbiBzZXF1ZW5jZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgc2VxdWVuY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VxdWVuY2VcbiAgICAgICAgfCBTb21lIChhLCBzZXF1ZW5jZSkgLT5cbiAgICAgICAgICBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB3cml0ZXIgMTtcbiAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHdyaXRlci5idWZmZXIgYTtcbiAgICAgICAgICBlbnF1ZXVlX24gc2VxdWVuY2UgKGkgLSAxKSlcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBzZXF1ZW5jZSA9XG4gICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHx8IFNlcXVlbmNlLmlzX2VtcHR5IHNlcXVlbmNlXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtzaXplOjBdIGhlcmUgYXMgd2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc2VxdWVuY2Ugc3RhdGljYWxseS4gV2UnbGxcbiAgICAgICAgICAgY2FsbCBbZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2VdIGFzIHdlIGdvLlxuICAgICAgICAgICAoYWx0aG91Z2ggcmVhbGlzdGljYWxseSwgaXQncyBpbXBvc3NpYmxlIGZvciB0aGUgdXNlciB0byByZXNlcnZlIHNwYWNlIGluXG4gICAgICAgICAgIHRoaXMgcGlwZSBiZWNhdXNlIHlvdSBuZWVkIGEgcGlwZSB3cml0ZXIgZm9yIHRoYXQsIGJ1dCBbb2Zfc2VxdWVuY2VdIHJldHVybnNcbiAgICAgICAgICAgYSByZWFkZXIpICopXG4gICAgICAgIHN0YXJ0X3dyaXRlIHdyaXRlciB+c2l6ZTowO1xuICAgICAgICBsZXQgc2VxdWVuY2UgPSBlbnF1ZXVlX24gc2VxdWVuY2UgKDEgKyB3cml0ZXIuc2l6ZV9idWRnZXQgLSBsZW5ndGggd3JpdGVyKSBpblxuICAgICAgICBmaW5pc2hfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQlYmluZCAoKSA9IHB1c2hiYWNrIHdyaXRlciBpblxuICAgICAgICBsb29wIHNlcXVlbmNlKVxuICAgIGluXG4gICAgbG9vcCBzZXF1ZW5jZSlcbjs7XG5cbnR5cGUgJ2EgdG9fc2VxdWVuY2VfZWx0ID1cbiAgfCBWYWx1ZSBvZiAnYVxuICB8IFdhaXRfZm9yIDogXyBEZWZlcnJlZC50IC0+IF8gdG9fc2VxdWVuY2VfZWx0XG5cbmxldCB0b19zZXF1ZW5jZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0OigpIH5mOihmdW4gKCkgLT5cbiAgICBtYXRjaCByZWFkX25vdyB0IHdpdGhcbiAgICB8IGBFb2YgLT4gTm9uZVxuICAgIHwgYE9rIGEgLT4gU29tZSAoVmFsdWUgYSwgKCkpXG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gU29tZSAoV2FpdF9mb3IgKHZhbHVlc19hdmFpbGFibGUgdCksICgpKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlX3BpcGUgaW5wdXRzID1cbiAgbGV0IG91dHB1dCwgb3V0cHV0X3dyaXRlciA9IGNyZWF0ZSB+aW5mbzpbJXNleHAgXCJQaXBlLmludGVybGVhdmVcIl0gKCkgaW5cbiAgKCogV2Uga2VlcCBhIHJlZmVyZW5jZSBjb3VudCBvZiBhbGwgdGhlIHBpcGVzIHRoYXQgW2ludGVybGVhdmVfcGlwZV0gaXMgbWFuYWdpbmc7XG4gICAgIFtpbnB1dHNdIGNvdW50cyBhcyBvbmUuICBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywgd2Uga25vdyB0aGF0IGFsbFxuICAgICBwaXBlcyBhcmUgY2xvc2VkIGFuZCB3ZSBjYW4gY2xvc2UgW291dHB1dF93cml0ZXJdLiAqKVxuICBsZXQgbnVtX3BpcGVzX3JlbWFpbmluZyA9IHJlZiAxIGluXG4gIGxldCBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkgPVxuICAgIGRlY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICBpZiAhbnVtX3BpcGVzX3JlbWFpbmluZyA9IDAgdGhlbiBjbG9zZSBvdXRwdXRfd3JpdGVyXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCVtYXAgKCkgPVxuICAgICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICAgaW5jciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgKGxldCVtYXAgKCkgPSB0cmFuc2Zlcl9pZCBpbnB1dCBvdXRwdXRfd3JpdGVyIGluXG4gICAgICAgICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpKVxuICAgICBpblxuICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpO1xuICAoKiBmb3IgW2lucHV0c10gKilcbiAgb3V0cHV0XG47O1xuXG5sZXQgaW50ZXJsZWF2ZSBpbnB1dHMgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIGlucHV0cyB+ZjppbnZhcmlhbnQ7XG4gIGludGVybGVhdmVfcGlwZSAob2ZfbGlzdCBpbnB1dHMpXG47O1xuXG5sZXQgbWVyZ2UgaW5wdXRzIH5jb21wYXJlID1cbiAgbWF0Y2ggaW5wdXRzIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IFsgaW5wdXQgXSAtPiBpbnB1dFxuICB8IGlucHV0cyAtPlxuICAgIGxldCBtb2R1bGUgSGVhcCA9IFBhaXJpbmdfaGVhcCBpblxuICAgIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gICAgdXBvbiAoY2xvc2VkIHcpIChmdW4gKCkgLT4gTGlzdC5pdGVyIGlucHV0cyB+ZjpjbG9zZV9yZWFkKTtcbiAgICBsZXQgaGVhcCA9IEhlYXAuY3JlYXRlIH5jbXA6KGZ1biAoYTEsIF8pIChhMiwgXykgLT4gY29tcGFyZSBhMSBhMikgKCkgaW5cbiAgICBsZXQgaGFuZGxlX3JlYWQgaW5wdXQgZW9mX29yX29rID1cbiAgICAgIG1hdGNoIGVvZl9vcl9vayB3aXRoXG4gICAgICB8IGBFb2YgLT4gKClcbiAgICAgIHwgYE9rIHYgLT4gSGVhcC5hZGQgaGVhcCAodiwgaW5wdXQpXG4gICAgaW5cbiAgICBsZXQgcmVjIHBvcF9oZWFwX2FuZF9sb29wICgpID1cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIGFsbCBpbnB1dHMgbm90IGF0IEVvZiBvY2N1ciBpbiBbaGVhcF0gZXhhY3RseSBvbmNlLCBzbyB3ZSBrbm93XG4gICAgICAgICB3aGF0IHRoZSBuZXh0IG91dHB1dCBlbGVtZW50IGlzLiAgW3BvcF9oZWFwX2FuZF9sb29wXSByZXBlYXRlZGx5IHRha2VzIGVsZW1lbnRzXG4gICAgICAgICBmcm9tIHRoZSBpbnB1dHMgYXMgbG9uZyBhcyBpdCBoYXMgb25lIGZyb20gZWFjaCBpbnB1dC4gIFRoaXMgaXMgZG9uZVxuICAgICAgICAgc3luY2hyb25vdXNseSB0byBhdm9pZCB0aGUgY29zdCBvZiBhIGRlZmVycmVkIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIG91dHB1dCAtLVxuICAgICAgICAgdGhlcmUncyBubyBuZWVkIHRvIHB1c2hiYWNrIHNpbmNlIHRoYXQgaXMgb25seSBtb3ZpbmcgZWxlbWVudHMgZnJvbSBvbmUgcGlwZSB0b1xuICAgICAgICAgYW5vdGhlci4gIEFzIHNvb24gYXMgW3BvcF9oZWFwX2FuZF9sb29wXSBjYW4ndCBnZXQgYW4gZWxlbWVudCBmcm9tIHNvbWUgaW5wdXQsIGl0XG4gICAgICAgICB3YWl0cyBvbiBwdXNoYmFjayBmcm9tIHRoZSBvdXRwdXQsIHNpbmNlIGl0IGhhcyB0byB3YWl0IG9uIHRoZSBpbnB1dCBhbnl3YXkuXG4gICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgW21lcmdlXSBmcm9tIGNvbnN1bWluZyBpbnB1dHMgYXQgYSByYXRlIGZhc3RlciB0aGFuIGl0cyBvdXRwdXRcbiAgICAgICAgIGlzIGNvbnN1bWVkLiAqKVxuICAgICAgbWF0Y2ggSGVhcC5wb3AgaGVhcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2xvc2Ugd1xuICAgICAgfCBTb21lICh2LCBpbnB1dCkgLT5cbiAgICAgICAgaWYgbm90IChpc19jbG9zZWQgdylcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3IHY7XG4gICAgICAgICAgaWYgSGVhcC5sZW5ndGggaGVhcCA9IDBcbiAgICAgICAgICB0aGVuIHVwb24gKHRyYW5zZmVyX2lkIGlucHV0IHcpIChmdW4gKCkgLT4gY2xvc2UgdylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IHdpdGhcbiAgICAgICAgICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgeCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKVxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgcHVzaGJhY2sgd1xuICAgICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgICAgIHJlYWQgaW5wdXRcbiAgICAgICAgICAgICAgPj4+IGZ1biB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpKSlcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3B1c2ggPVxuICAgICAgRGVmZXJyZWQuTGlzdC5pdGVyIH5ob3c6YFNlcXVlbnRpYWwgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgbGV0JW1hcCB4ID0gcmVhZCBpbnB1dCBpblxuICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4KVxuICAgIGluXG4gICAgdXBvbiBpbml0aWFsX3B1c2ggcG9wX2hlYXBfYW5kX2xvb3A7XG4gICAgclxuOztcblxubGV0IGNvbmNhdF9waXBlIGlucHV0cyA9XG4gIGxldCByID1cbiAgICBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gKGZ1biB3IC0+XG4gICAgICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dHMgfmRvd25zdHJlYW06dyBpblxuICAgICAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICAgICBpdGVyIH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG4gIGluXG4gIHVwb24gKGNsb3NlZCByKSAoZnVuICgpIC0+IGNsb3NlIGlucHV0cyk7XG4gIHJcbjs7XG5cbmxldCBjb25jYXQgaW5wdXRzID1cbiAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgIERlZmVycmVkLkxpc3QuaXRlciB+aG93OmBTZXF1ZW50aWFsIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuOztcblxubGV0IGZvcmsgdCB+cHVzaGJhY2tfdXNlcyA9XG4gIGxldCByZWFkZXIwLCB3cml0ZXIwID0gY3JlYXRlICgpIGluXG4gIGxldCByZWFkZXIxLCB3cml0ZXIxID0gY3JlYXRlICgpIGluXG4gIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjb25zdW1lciA9XG4gICAgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9ICFzb21lX3JlYWRlcl93YXNfY2xvc2VkIGluXG4gICAgICBtYXRjaCVtYXBcbiAgICAgICAgRmx1c2hlZF9yZXN1bHQuY29tYmluZSBbIGRvd25zdHJlYW1fZmx1c2hlZCB3cml0ZXIwOyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMSBdXG4gICAgICB3aXRoXG4gICAgICB8IGBSZWFkZXJfY2xvc2VkIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgICB8IGBPayAtPlxuICAgICAgICAoKiBJbiB0aGlzIGNhc2UsIHRoZXJlIGNvdWxkIGhhdmUgYmVlbiBubyBwZW5kaW5nIGl0ZW1zIGluIFt3cml0ZXIwXSBub3IgaW5cbiAgICAgICAgICAgW3dyaXRlcjFdLCBpbiB3aGljaCBjYXNlIHdlIGNvdWxkIGhhdmUgaGFkIGEgY2xvc2VkIHBpcGUgdGhhdCBtaXNzZWQgc29tZVxuICAgICAgICAgICB3cml0ZXMsIGJ1dCBbRmx1c2hlZF9yZXN1bHQuY29tYmluZV0gd291bGQgc3RpbGwgaGF2ZSByZXR1cm5lZCBbYE9rXSAqKVxuICAgICAgICBpZiBzb21lX3JlYWRlcl93YXNfY2xvc2VkIHRoZW4gYFJlYWRlcl9jbG9zZWQgZWxzZSBgT2spXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCBzdGlsbF9vcGVuID0gWyB3cml0ZXIwOyB3cml0ZXIxIF0gaW5cbiAgICAgbGV0IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gPVxuICAgICAgICgqIE9ubHkgY2FsbCBbZmlsdGVyXSBhbmQgcmVhbGxvY2F0ZSBsaXN0IGlmIHNvbWV0aGluZyB3aWxsIGdldCBmaWx0ZXJlZCAqKVxuICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgc3RpbGxfb3BlbiB+Zjppc19jbG9zZWQpXG4gICAgICAgdGhlbiBzdGlsbF9vcGVuXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBzb21lX3JlYWRlcl93YXNfY2xvc2VkIDo9IHRydWU7XG4gICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IExpc3QuZmlsdGVyIHN0aWxsX29wZW4gfmY6KGZ1biB3IC0+IG5vdCAoaXNfY2xvc2VkIHcpKSBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuIHRoZW4gY2xvc2UgdDtcbiAgICAgICAgIHN0aWxsX29wZW4pXG4gICAgIGluXG4gICAgIGxldCViaW5kIHN0aWxsX29wZW4gPVxuICAgICAgIGZvbGQnIHQgfmZsdXNoZWQ6KENvbnN1bWVyIGNvbnN1bWVyKSB+aW5pdDpzdGlsbF9vcGVuIH5mOihmdW4gc3RpbGxfb3BlbiBxdWV1ZSAtPlxuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IHN0aWxsX29wZW5cbiAgICAgICAgIHRoZW4gcmV0dXJuIFtdXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICAgbWF0Y2ggcHVzaGJhY2tfdXNlcyB3aXRoXG4gICAgICAgICAgICAgfCBgRmFzdF9jb25zdW1lcl9vbmx5IC0+IERlZmVycmVkLmFueSAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgICB8IGBCb3RoX2NvbnN1bWVycyAtPiBEZWZlcnJlZC5hbGxfdW5pdCAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICAgIExpc3QuaXRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBjb3B5X2luX3dpdGhvdXRfcHVzaGJhY2sgdyB+ZnJvbTpxdWV1ZSk7XG4gICAgICAgICAgIHN0aWxsX29wZW4pKVxuICAgICBpblxuICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjpjbG9zZTtcbiAgICAgcmV0dXJuICgpKTtcbiAgcmVhZGVyMCwgcmVhZGVyMVxuOztcblxubGV0IHNldF9pbmZvIHQgaW5mbyA9IHNldF9pbmZvIHQgKFNvbWUgaW5mbylcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgY3VycmVudF92YWx1ZSA6ICdhIE1vcHRpb24udFxuICA7IHRha2VuIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICA7IG11dGFibGUgdmFsdWVfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdmFsdWVfYXZhaWxhYmxlIHQgPSBJdmFyLnJlYWQgdC52YWx1ZV9hdmFpbGFibGVcbmxldCBpc19lbXB0eSB0ID0gTW9wdGlvbi5pc19ub25lIHQuY3VycmVudF92YWx1ZVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gKHQgOiBfIHQpID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y3VycmVudF92YWx1ZTooY2hlY2sgKE1vcHRpb24uaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH50YWtlbjooY2hlY2sgKEJ2YXIuaW52YXJpYW50IFVuaXQuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICB+dmFsdWVfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9hdmFpbGFibGUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoSXZhci5pc19mdWxsIHZhbHVlX2F2YWlsYWJsZSlcbiAgICAgICAgICAgICB+ZXhwZWN0OihNb3B0aW9uLmlzX3NvbWUgdC5jdXJyZW50X3ZhbHVlKSkpKVxuOztcblxubGV0IHBlZWsgdCA9IE1vcHRpb24uZ2V0IHQuY3VycmVudF92YWx1ZVxuXG5sZXQgcGVla19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIucGVla19leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gWyVzZXhwIChwZWVrIHQgOiBhIG9wdGlvbildXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWRfd3JpdGUpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5tb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5sZXQgcmVhZF9vbmx5ICh0IDogKCdhLCBbPiByZWFkIF0pIHQpID0gKHQgOj4gKCdhLCByZWFkKSB0KVxubGV0IHdyaXRlX29ubHkgKHQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQpID0gKHQgOj4gKCdhLCB3cml0ZSkgdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gIHsgY3VycmVudF92YWx1ZSA9IE1vcHRpb24uY3JlYXRlICgpXG4gIDsgdGFrZW4gPSBCdmFyLmNyZWF0ZSAoKVxuICA7IHZhbHVlX2F2YWlsYWJsZSA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCB0YWtlX25vbmVtcHR5IHQgPVxuICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgciA9IE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZSBpblxuICBNb3B0aW9uLnNldF9ub25lIHQuY3VycmVudF92YWx1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC50YWtlbiAoKTtcbiAgdC52YWx1ZV9hdmFpbGFibGUgPC0gSXZhci5jcmVhdGUgKCk7XG4gIHJcbjs7XG5cbmxldCB0YWtlX25vd19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIudGFrZV9leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIHRha2Vfbm9uZW1wdHkgdFxuOztcblxubGV0IHRha2Vfbm93IHQgPSBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gU29tZSAodGFrZV9ub25lbXB0eSB0KSBlbHNlIE5vbmVcblxubGV0IHJlYyB0YWtlIHQgPVxuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gcmV0dXJuICh0YWtlX25vbmVtcHR5IHQpXG4gIGVsc2UgKFxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICB0YWtlIHQpXG47O1xuXG5sZXQgc2V0IHQgdiA9XG4gIE1vcHRpb24uc2V0X3NvbWUgdC5jdXJyZW50X3ZhbHVlIHY7XG4gIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnZhbHVlX2F2YWlsYWJsZSAoKVxuOztcblxubGV0IHVwZGF0ZSB0IH5mID0gc2V0IHQgKGYgKHBlZWsgdCkpXG5sZXQgdXBkYXRlX2V4biB0IH5mID0gc2V0IHQgKGYgKHBlZWtfZXhuIHQpKVxubGV0IHRha2VuIHQgPSBCdmFyLndhaXQgdC50YWtlblxuXG5sZXQgcmVjIHB1dCB0IHYgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gKFxuICAgIHNldCB0IHY7XG4gICAgcmV0dXJuICgpKVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHRha2VuIHQgaW5cbiAgICBwdXQgdCB2KVxuOztcblxubGV0IHBpcGVfd2hlbl9yZWFkeSB0ID1cbiAgbGV0IHIsIHcgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHcpXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0YWtlX25vdyB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wICgpXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IFBpcGUud3JpdGUgdyB4IGluXG4gICAgICAgIGxvb3AgKCkpXG4gICAgZWxzZSByZXR1cm4gKClcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3IgKGxvb3AgKCkpO1xuICByXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3RhcnQgOiB1bml0IEl2YXIudFxuICAgIDsgcmVzdWx0IDogJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgPyhyZXN0X2V4biA9IGBMb2cpIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OnJlc3RfZXhuXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfb3JfZXJyb3IgPyhyZXN0X2V4biA9IGBMb2cpIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgICAgICAgfnJlc3Q6cmVzdF9leG5cbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdhaXQgdCA9IHQucmVzdWx0XG4gIGxldCB3YWl0X2V4biB0ID0gd2FpdCB0ID4+fCBva19leG5cbiAgbGV0IHN0YXJ0IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC5zdGFydCAoKVxuXG4gIGxldCBmb3JjZSB0ID1cbiAgICBzdGFydCB0O1xuICAgIHdhaXQgdFxuICA7O1xuXG4gIGxldCBmb3JjZV9leG4gdCA9IGZvcmNlIHQgPj58IG9rX2V4blxuICBsZXQgcmV0dXJuIGEgPSBjcmVhdGUgKGZ1biAoKSAtPiByZXR1cm4gYSlcblxuICBsZXQgYmluZCB0IH5mID1cbiAgICBjcmVhdGUgKGZ1biAoKSAtPlxuICAgICAgbGV0JWJpbmQgYSA9IGZvcmNlX2V4biB0IGluXG4gICAgICBmb3JjZV9leG4gKGYgYSkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gKCkgLT4gZm9yY2VfZXhuIHQgPj58IGYpXG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBNb25hZC5NYWtlIChUKVxuXG5sZXQgYmluZCcgdCBmID0gYmluZCB0IH5mOihmdW4gYSAtPiBjcmVhdGUgKGZ1biAoKSAtPiBmIGEpKVxubGV0IGlzX2ZvcmNlZCB0ID0gSXZhci5pc19mdWxsIHQuc3RhcnRcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHQucmVzdWx0XG5sZXQgcGVlayB0ID0gRGVmZXJyZWQucGVlayB0LnJlc3VsdFxubGV0IHBlZWtfZXhuIHQgPSBPcHRpb24ubWFwIChwZWVrIHQpIH5mOm9rX2V4blxuIiwib3BlbiBDb3JlXG5cbnR5cGUgJ2EgdCA9IHsgd2FpdHMgOiAnYSBJdmFyLnQgUXVldWUudCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgKCkgPSB7IHdhaXRzID0gUXVldWUuY3JlYXRlICgpIH1cbmxldCB3YWl0IHQgPSBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IFF1ZXVlLmVucXVldWUgdC53YWl0cyBpdmFyKVxubGV0IHNpZ25hbCB0IGEgPSBPcHRpb24uaXRlciAoUXVldWUuZGVxdWV1ZSB0LndhaXRzKSB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSlcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBRdWV1ZS5pdGVyIHQud2FpdHMgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpO1xuICBRdWV1ZS5jbGVhciB0LndhaXRzXG47O1xuIiwib3BlbiBDb3JlXG5pbmNsdWRlIEdjXG5cbigqKiBbYWRkX2ZpbmFsaXplciBmIHhdIGlzIGxpa2UgW0djLmZpbmFsaXNlIGYgeF0sIGV4Y2VwdCB0aGF0IHRoZSBmaW5hbGl6ZXIgaXMgZ3VhcmFudGVlZFxuICAgIHRvIHJ1biBhcyBhbiBBc3luYyBqb2IgKGkuZS4gd2l0aG91dCBpbnRlcnJ1cHRpbmcgb3RoZXIgQXN5bmMgam9icykuICBVbnByb3RlY3RlZCB1c2VcbiAgICBvZiBbQ2FtbC5HYy5maW5hbGlzZV0gb3IgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gaW4gQXN5bmMgcHJvZ3JhbXMgaXMgd3JvbmcsIGJlY2F1c2VcbiAgICB0aGUgZmluYWxpemVycyB3b24ndCBob2xkIHRoZSBhc3luYyBsb2NrLCBhbmQgdGh1cyBjb3VsZCBpbnRlcmxlYXZlIGFyYml0cmFyaWx5IHdpdGhcbiAgICBhc3luYyBqb2JzLiAqKVxubGV0IGFkZF9maW5hbGl6ZXIgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2V4biBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0ICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIGhlYXBfYmxvY2sgZiA9XG4gIFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0X2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxuOztcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IEdjLkV4cGVydC5BbGFybVxuXG4gIHR5cGUgdCA9IEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIGYgPSBTY2hlZHVsZXIuKGNyZWF0ZV9hbGFybSAodCAoKSkpIGZcbiAgbGV0IGRlbGV0ZSA9IEFsYXJtLmRlbGV0ZVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBzaWduYXR1cmVzIHRoYXQgZXh0ZW5kIFtDb3JlLkludmFyaWFudF0gd2l0aCBhbiBbQXN5bmNdXG4gICAgc3VibW9kdWxlIGZvciBpbnZhcmlhbnRzIHRoYXQgdXNlIGFzeW5jIGNvbXB1dGF0aW9uIGFuZCByZXR1cm4gW3VuaXQgRGVmZXJyZWQudF0uICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHR5cGUgJ2EgaW52ID0gJ2EgdFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gKCdhLCAnYikgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAnYyBpbnYgLT4gKCdhLCAnYiwgJ2MpIHQgaW52XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFzeW5jX2ludmFyaWFudCA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIENvcmUuSW52YXJpYW50XG5cbiAgbW9kdWxlIEFzeW5jIDogc2lnXG4gICAgb3BlbiBBc3luY1xuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIEFzeW5jLnRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICAgIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgICBtb2R1bGUgdHlwZSBTMyA9IFMzXG5cbiAgICB2YWwgaW52YXJpYW50XG4gICAgICA6ICBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgICAtPiAnYVxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICAgKCoqIFtjaGVja19maWVsZF0gY2FuIGJlIHVzZWQgdG8gY2hlY2sgcmVjb3JkIGZpZWxkcyB3aGVuIHVzaW5nIFtbQEBkZXJpdmluZyBmaWVsZHNdXS5cbiAgICAgICAgSWRpb21hdGljIHVzYWdlIGxvb2tzIGxpa2U6XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286IChjaGVjayBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6IChjaGVjayBCYXIuaW52YXJpYW50KSBdfVxuXG4gICAgICAgIFdoZW4gc29tZSBmaWVsZHMgaGF2ZSBzeW5jaHJvbm91cyBpbnZhcmlhbnRzLCBvciBkbyBub3QgbmVlZCB0byBiZSBjaGVja2VkLCBpdFxuICAgICAgICBtYXkgYmUgdXNlZnVsIHRvIGRlZmluZSBhIHNlY29uZCB3cmFwcGVyIGFyb3VuZCBbY2hlY2tfZmllbGRdOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IDsgcXV1eCA6IFF1dXgudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2snIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gY2hlY2snIChmdW4geCAtPiBpbnYgeDsgcmV0dXJuICgpKSBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286ICAoY2hlY2snIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogIChjaGVjayAgQmFyLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+cXV1eDogKGNoZWNrICBpZ25vcmUpIF19ICopXG4gICAgdmFsIGNoZWNrX2ZpZWxkIDogJ2EgLT4gJ2IgdCAtPiB1bml0IERlZmVycmVkLnQgLT4gKCdhLCAnYikgRmllbGQudCAtPiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkLkxldF9zeW50YXhcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb3JlLkludmFyaWFudFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3luY19pbnZhcmlhbnRfaW50Zi5Bc3luY1xuXG4gIGxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICBmXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIiB+XzooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpIChleG4gOiBleG4pIH5fOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ZpZWxkIHQgZiB3YWl0X2Zvcl9wcmV2aW91cyBmaWVsZCA9XG4gICAgbGV0JWJpbmQgKCkgPSB3YWl0X2Zvcl9wcmV2aW91cyBpblxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgICAgIChmdW4gKCkgLT4gZiAoRmllbGQuZ2V0IGZpZWxkIHQpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwicHJvYmxlbSB3aXRoIGZpZWxkXCIgfmZpZWxkOihGaWVsZC5uYW1lIGZpZWxkIDogc3RyaW5nKSAoZXhuIDogZXhuKV1cbiAgOztcbmVuZFxuIiwiKCoqIENvbnRhaW5zIEFzeW5jJ3MgY29yZSBkYXRhIHN0cnVjdHVyZXMsIGxpa2Uge3shQXN5bmNfa2VybmVsLkRlZmVycmVkfVtEZWZlcnJlZF19LFxuICAgIHt7IUFzeW5jX2tlcm5lbC5JdmFyfVtJdmFyXX0sIGFuZCB7eyFBc3luY19rZXJuZWwuQ2xvY2tfaW50Zi5DbG9ja31bQ2xvY2tdfS5cblxuICAgIFtBc3luY19rZXJuZWxdIGlzIGRlc2lnbmVkIHRvIGRlcGVuZCBvbmx5IG9uIHt7IUNvcmV9W0NvcmVdfSBhbmQgc28gaXMgbW9yZVxuICAgIHBsYXRmb3JtLWluZGVwZW5kZW50LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBc3luY19rZXJuZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZ1xubW9kdWxlIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlID0gUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgQnZhciA9IEJ2YXJcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgQ29uZGl0aW9uID0gQXN5bmNfY29uZGl0aW9uXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZFxubW9kdWxlIEV4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHRcbm1vZHVsZSBHYyA9IEFzeW5jX2djXG5tb2R1bGUgSW52YXJpYW50ID0gQXN5bmNfaW52YXJpYW50XG5tb2R1bGUgSXZhciA9IEl2YXJcbm1vZHVsZSBMYXp5X2RlZmVycmVkID0gTGF6eV9kZWZlcnJlZFxubW9kdWxlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2Vcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvclxubW9kdWxlIE12YXIgPSBNdmFyXG5tb2R1bGUgUGlwZSA9IFBpcGVcbm1vZHVsZSBQcmlvcml0eSA9IFByaW9yaXR5XG5tb2R1bGUgU2VxdWVuY2VyID0gVGhyb3R0bGUuU2VxdWVuY2VyXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZVxubW9kdWxlIFRhaWwgPSBUYWlsXG5tb2R1bGUgVGhyb3R0bGUgPSBUaHJvdHRsZVxubW9kdWxlIFRocm90dGxlZCA9IFRocm90dGxlZFxubW9kdWxlIFRpbWVfc291cmNlID0gVGltZV9zb3VyY2VcblxuXG4oKiogezIgVG9wbGV2ZWwgZnVuY3Rpb25zIH1cblxuICAgIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGJyb2FkbHkgdXNlZnVsIHdoZW4gd3JpdGluZyBBc3luYyBwcm9ncmFtcywgYW5kIHNvIGFyZSBtYWRlXG4gICAgYXZhaWxhYmxlIGF0IHRoZSB0b3BsZXZlbC4gKilcblxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBjYXRjaCA9IE1vbml0b3IuY2F0Y2hcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBzY2hlZHVsZSA9IFNjaGVkdWxlci5zY2hlZHVsZVxubGV0IHNjaGVkdWxlJyA9IFNjaGVkdWxlci5zY2hlZHVsZSdcbmxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxubGV0IHdpdGhpbiA9IFNjaGVkdWxlci53aXRoaW5cbmxldCB3aXRoaW4nID0gU2NoZWR1bGVyLndpdGhpbidcblxuKCoqIHsyIEluZml4IG9wZXJhdG9ycyBhbmQgW0xldF9zeW50YXhdIHN1cHBvcnR9ICopXG5cbmluY2x1ZGUgKERlZmVycmVkIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgRGVmZXJyZWQudClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC51cG9ufS4gKilcbmxldCAoID4+PiApID0gRGVmZXJyZWQuSW5maXguKCA+Pj4gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5iaW5kfS4gKilcbmxldCAoID4+PT8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+PSApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0Lm1hcH0uICopXG5sZXQgKCA+Pnw/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+PnwgKVxuXG5pbmNsdWRlIERlZmVycmVkLkxldF9zeW50YXhcblxuKCoqLyoqKVxuXG4oKiogVGhlIG1vZHVsZXMgaW4gW0FzeW5jX2tlcm5lbF9wcml2YXRlXSBhcmUgdXNlZCBmb3IgY29uc3RydWN0aW5nIGFuZCB0ZXN0aW5nIEFzeW5jLCBhbmRcbiAgICBzaG91bGQgbm90IG90aGVyd2lzZSBiZSB1c2VkLiAqKVxubW9kdWxlIEFzeW5jX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEZWJ1ZyA9IERlYnVnXG4gIG1vZHVsZSBJdmFyMCA9IEl2YXIwXG4gIG1vZHVsZSBJdmFyX2ZpbGxlciA9IEl2YXJfZmlsbGVyXG4gIG1vZHVsZSBKb2IgPSBKb2JcbiAgbW9kdWxlIFN0YWNrX29yX2NvdW50ZXIgPSBTdGFja19vcl9jb3VudGVyXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBUaGlzIHRlc3QgbXVzdCBiZSBpbiB0aGlzIGxpYnJhcnksIGJlY2F1c2UgaXQgcmVxdWlyZXMgW3JldHVybl0gdG8gYmUgaW5saW5lZC4gIE1vdmluZ1xuICAgaXQgdG8gYW5vdGhlciBsaWJyYXJ5IHdpbGwgY2F1c2UgaXQgdG8gYnJlYWsgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlXS4gKilcbmxldCV0ZXN0X3VuaXQgXCJbcmV0dXJuICgpXSBkb2VzIG5vdCBhbGxvY2F0ZVwiID1cbiAgbGV0IHcxID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXguTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgbGV0IHcyID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgWyV0ZXN0X3Jlc3VsdDogaW50XSB3MiB+ZXhwZWN0OncxXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9ICdhIERlZmVycmVkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgcmV0dXJuID0gRGVmZXJyZWQucmV0dXJuXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0IHRoZW4gZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpIGVsc2UgRGVmZXJyZWQuYmluZCB0IH5mXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIHJldHVybiAoZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpKVxuICAgIGVsc2UgRGVmZXJyZWQubWFwIHQgfmZcbiAgOztcblxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGNyZWF0ZSA9IERlZmVycmVkLmNyZWF0ZVxubGV0IGRvbid0X3dhaXRfZm9yID0gRGVmZXJyZWQuZG9uJ3Rfd2FpdF9mb3JcbmxldCBpbnZhcmlhbnQgPSBEZWZlcnJlZC5pbnZhcmlhbnRcbmxldCBpc19kZXRlcm1pbmVkID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZFxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBwZWVrID0gRGVmZXJyZWQucGVla1xubGV0IHVuaXQgPSBEZWZlcnJlZC51bml0XG5sZXQgdmFsdWVfZXhuID0gRGVmZXJyZWQudmFsdWVfZXhuXG5sZXQgdXBvbiB0IGYgPSBpZiBpc19kZXRlcm1pbmVkIHQgdGhlbiBmICh2YWx1ZV9leG4gdCkgZWxzZSBEZWZlcnJlZC51cG9uIHQgZlxuXG5sZXQgYm90aCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPiB1cG9uIHQxIChmdW4gYTEgLT4gdXBvbiB0MiAoZnVuIGEyIC0+IEl2YXIuZmlsbCByZXN1bHQgKGExLCBhMikpKSlcbjs7XG5cbmxldCBvayB0ID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gcmV0dXJuIChPayAodmFsdWVfZXhuIHQpKSBlbHNlIERlZmVycmVkLm9rIHRcbmxldCBpZ25vcmVfbSB0ID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gdW5pdCBlbHNlIERlZmVycmVkLmlnbm9yZV9tIHRcblxubGV0IGFueSB0cyA9XG4gIG1hdGNoIExpc3QuZmluZCB0cyB+Zjppc19kZXRlcm1pbmVkIHdpdGhcbiAgfCBTb21lIHggLT4gcmV0dXJuICh2YWx1ZV9leG4geClcbiAgfCBOb25lIC0+IERlZmVycmVkLmFueSB0c1xuOztcblxubGV0IGFueV91bml0IHRzID1cbiAgaWYgTGlzdC5leGlzdHMgdHMgfmY6KGlzX2RldGVybWluZWQgOiB1bml0IHQgLT4gYm9vbClcbiAgdGhlbiB1bml0XG4gIGVsc2UgRGVmZXJyZWQuYW55X3VuaXQgdHNcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbGV0ICggPj4+ICkgPSB1cG9uXG5lbmRcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbGV0IG9wZW4gSW5maXggaW5cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBvcGVuIEluZml4XG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICAgIGluXG4gICAgICBsb29wIHQgMCBpbml0KVxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbiAgbGV0IGFsbF91bml0IGRzID0gaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpIDogdW5pdCBULnQpXG5cbiAgbGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgICBMaXN0LnJldlxuICAgICAgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT4gaWYlbWFwIGYgZWx0IHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgYWxsX3VuaXQgPSBMaXN0LmFsbF91bml0XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRWFnZXJfZGVmZXJyZWQwXG5vcGVuIERlZmVycmVkLkxldF9zeW50YXhcblxuKCogQ29waWVkIGZyb20gW2RlZmVycmVkX3Jlc3VsdC5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBFYWdlcl9kZWZlcnJlZDBcbm1vZHVsZSBEZWZlcnJlZF9yZXN1bHQgPSBFYWdlcl9kZWZlcnJlZF9yZXN1bHRcblxubW9kdWxlIE1vbml0b3IgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoID8ocnVuID0gYE5vdykgPSBNb25pdG9yLnRyeV93aXRoIH5ydW5cbmVuZFxuXG4oKiBDb3BpZWQgZnJvbSBbZGVmZXJyZWRfb3JfZXJyb3IubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxuaW5jbHVkZSAoRGVmZXJyZWRfcmVzdWx0IDogTW9uYWQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgRGVmZXJyZWRfcmVzdWx0LnQpXG5cbnR5cGUgJ2EgdCA9ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIERlZmVycmVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIGZcbiAgICAgICAgeFxuICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBmYWlsIGVycm9yID0gRGVmZXJyZWQucmV0dXJuIChSZXN1bHQuZmFpbCBlcnJvcilcbmxldCBva19leG4gdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9rX2V4blxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSB0ID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLm9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSlcbmxldCBlcnJvciBtc2cgdiBzZXhwX29mID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvciBtc2cgdiBzZXhwX29mKVxubGV0IGVycm9yX3Mgc2V4cCA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3JfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBtc2cpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IGtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRGVmZXJyZWQubWFwIHQgfmY6KGZ1biB0IC0+IE9yX2Vycm9yLnRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci51bmltcGxlbWVudGVkIG1zZylcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5maWx0ZXJfb2tfYXRfbGVhc3Rfb25lXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAobCwgW10pIChmdW4gKGwsIGVycm9ycykgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgZXJyb3JzID0gRXJyb3Iub2ZfbGlzdCAoTGlzdC5yZXYgZXJyb3JzKSBpblxuICAgICAgRGVmZXJyZWQucmV0dXJuIChgRmluaXNoZWQgKEVycm9yIGVycm9ycykpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgRGVmZXJyZWQubWFwIChmIGhkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBjdXJyZW50X2Vycm9yIC0+IGBSZXBlYXQgKHRsLCBjdXJyZW50X2Vycm9yIDo6IGVycm9ycylcbiAgICAgICAgfCBPayByZXN1bHQgLT4gYEZpbmlzaGVkIChPayByZXN1bHQpKSlcbjs7XG5cbmxldCBva191bml0ID0gcmV0dXJuICgpXG5cbmxldCB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwIChNb25pdG9yLnRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOihmdW5jdGlvblxuICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuICAgIHwgT2sgXyBhcyBvayAtPiBvaylcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOk9yX2Vycm9yLmpvaW5cbjs7XG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBmb2xkaSBsaXN0IH5pbml0OmFjYyB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQlYmluZCBhY2MgPSBmIGkgYWNjIGhkIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSBhY2MgdGxcbiAgICBpblxuICAgIGxvb3AgMCBhY2MgbGlzdFxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCA9IGFsbFxuICBsZXQgYWxsX3VuaXQgPSBhbGxfdW5pdFxuXG4gIGxldCBpdGVyaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIHggaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgZmluZF9tYXAgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuZW5kXG5cbmxldCByZWMgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBtYXRjaCViaW5kIGYgc3RhdGUgd2l0aFxuICB8IGBSZXBlYXQgc3RhdGUgLT4gcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGZcbiAgfCBgRmluaXNoZWQgc3RhdGUgLT4gcmV0dXJuIHN0YXRlXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IEVhZ2VyX2RlZmVycmVkX2ludGYuU1xuXG5pbmNsdWRlIEVhZ2VyX2RlZmVycmVkMVxuXG5tb2R1bGUgVXNlID0gc3RydWN0XG4gIG1vZHVsZSBEZWZlcnJlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxXG4gIGVuZFxuXG4gIGluY2x1ZGUgKEVhZ2VyX2RlZmVycmVkMSA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG4gIGluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxLkxldF9zeW50YXhcblxuICBsZXQgdXBvbiA9IEVhZ2VyX2RlZmVycmVkMS51cG9uXG4gIGxldCAoID4+PiApID0gRWFnZXJfZGVmZXJyZWQxLkluZml4LiggPj4+IClcblxuICBsZXQgKCA+Pj0/ICkgeCBmID1cbiAgICB4XG4gICAgPj49IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IHJldHVybiBlcnJvclxuICAgIHwgT2sgdiAtPiBmIHZcbiAgOztcblxuICBsZXQgKCA+Pnw/ICkgeCBmID1cbiAgICB4XG4gICAgPj58IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG4gICAgfCBPayB2IC0+IE9rIChmIHYpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDbG9zZWRcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzXG4gICAgfCBPa190b193cml0ZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpc19jbG9zZWQgPSBmdW5jdGlvblxuICAgIHwgQ2xvc2VkIC0+IHRydWVcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IGZhbHNlXG4gICAgfCBPa190b193cml0ZSAtPiBmYWxzZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYWxsYmFja19hcml0eSA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBBcml0eTEgOiAoJ2EgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkxX2xvY2FsIDogKCgnYVtAbG9jYWxdKSAtPiB1bml0KSB0XG4gICAgfCBBcml0eTIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5NCA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0XG4gICAgfCBBcml0eTUgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1c2VzX2xvY2FsX2FyZ3MgOiB0eXBlIGEuIGEgdCAtPiBib29sID0gZnVuY3Rpb25cbiAgICB8IEFyaXR5MSAtPiBmYWxzZVxuICAgIHwgQXJpdHkxX2xvY2FsIC0+IHRydWVcbiAgICB8IEFyaXR5MiAtPiBmYWxzZVxuICAgIHwgQXJpdHkzIC0+IGZhbHNlXG4gICAgfCBBcml0eTQgLT4gZmFsc2VcbiAgICB8IEFyaXR5NSAtPiBmYWxzZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBMYXN0X3ZhbHVlIDogc2lnXG4gIHR5cGUgJ2NhbGxiYWNrIHRcblxuICB2YWwgY3JlYXRlX2V4biA6ICdjYWxsYmFjayBDYWxsYmFja19hcml0eS50IC0+ICdjYWxsYmFjayB0XG4gIHZhbCBzZXQxIDogKCdhIC0+IHVuaXQpIHQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0MiA6ICgnYSAtPiAnYiAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+IHVuaXRcbiAgdmFsIHNldDMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0XG4gIHZhbCBzZXQ0IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdFxuICB2YWwgc2V0NSA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXRcbiAgdmFsIHNlbmQgOiAnY2FsbGJhY2sgdCAtPiAnY2FsbGJhY2sgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0dXBsZSA9XG4gICAgfCBUdXBsZTEgOiB7IG11dGFibGUgYXJnMSA6ICdhIH0gLT4gKCdhIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTIgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdHVwbGVcbiAgICB8IFR1cGxlMyA6XG4gICAgICAgIHsgbXV0YWJsZSBhcmcxIDogJ2FcbiAgICAgICAgOyBtdXRhYmxlIGFyZzIgOiAnYlxuICAgICAgICA7IG11dGFibGUgYXJnMyA6ICdjXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTQgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICA7IG11dGFibGUgYXJnNCA6ICdkXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTUgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICA7IG11dGFibGUgYXJnNCA6ICdkXG4gICAgICAgIDsgbXV0YWJsZSBhcmc1IDogJ2VcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdHVwbGVcblxuICB0eXBlICdjYWxsYmFjayB0ID0gJ2NhbGxiYWNrIHR1cGxlIG9wdGlvbiByZWZcblxuICBsZXQgY3JlYXRlX2V4biAodHlwZSBjYWxsYmFjaykgKGFyaXR5IDogY2FsbGJhY2sgQ2FsbGJhY2tfYXJpdHkudCkgOiBjYWxsYmFjayB0ID1cbiAgICBpZiBDYWxsYmFja19hcml0eS51c2VzX2xvY2FsX2FyZ3MgYXJpdHlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQ2Fubm90IHNhdmUgbGFzdCB2YWx1ZSB3aGVuIHVzaW5nIGxvY2FsIGFyZ3NcIiAoYXJpdHkgOiBfIENhbGxiYWNrX2FyaXR5LnQpXTtcbiAgICByZWYgTm9uZVxuICA7O1xuXG4gIGxldCBzZXQxIHQgYSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMSB7IGFyZzEgPSBhIH0pXG4gICAgfCBTb21lIChUdXBsZTEgYXJncykgLT4gYXJncy5hcmcxIDwtIGFcbiAgOztcblxuICBsZXQgc2V0MiB0IGEgYiA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMiB7IGFyZzEgPSBhOyBhcmcyID0gYiB9KVxuICAgIHwgU29tZSAoVHVwbGUyIGFyZ3MpIC0+XG4gICAgICBhcmdzLmFyZzEgPC0gYTtcbiAgICAgIGFyZ3MuYXJnMiA8LSBiXG4gIDs7XG5cbiAgbGV0IHNldDMgdCBhIGIgYyA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMyB7IGFyZzEgPSBhOyBhcmcyID0gYjsgYXJnMyA9IGMgfSlcbiAgICB8IFNvbWUgKFR1cGxlMyBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBjXG4gIDs7XG5cbiAgbGV0IHNldDQgdCBhIGIgYyBkID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHQgOj0gU29tZSAoVHVwbGU0IHsgYXJnMSA9IGE7IGFyZzIgPSBiOyBhcmczID0gYzsgYXJnNCA9IGQgfSlcbiAgICB8IFNvbWUgKFR1cGxlNCBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBjO1xuICAgICAgYXJncy5hcmc0IDwtIGRcbiAgOztcblxuICBsZXQgc2V0NSB0IGFyZzEgYXJnMiBhcmczIGFyZzQgYXJnNSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlNSB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQ7IGFyZzUgfSlcbiAgICB8IFNvbWUgKFR1cGxlNSBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGFyZzE7XG4gICAgICBhcmdzLmFyZzIgPC0gYXJnMjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBhcmczO1xuICAgICAgYXJncy5hcmc0IDwtIGFyZzQ7XG4gICAgICBhcmdzLmFyZzUgPC0gYXJnNVxuICA7O1xuXG4gIGxldCBzZW5kICh0eXBlIGNhbGxiYWNrKSAodCA6IGNhbGxiYWNrIHQpIChjYWxsYmFjayA6IGNhbGxiYWNrKSA6IHVuaXQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKFR1cGxlMSB7IGFyZzEgfSkgLT4gY2FsbGJhY2sgYXJnMVxuICAgIHwgU29tZSAoVHVwbGUyIHsgYXJnMTsgYXJnMiB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzJcbiAgICB8IFNvbWUgKFR1cGxlMyB7IGFyZzE7IGFyZzI7IGFyZzMgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzNcbiAgICB8IFNvbWUgKFR1cGxlNCB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzMgYXJnNFxuICAgIHwgU29tZSAoVHVwbGU1IHsgYXJnMTsgYXJnMjsgYXJnMzsgYXJnNDsgYXJnNSB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzIgYXJnMyBhcmc0IGFyZzVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBBbGxvd1xuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZVxuICAgIHwgUmFpc2VcbiAgW0BAZGVyaXZpbmcgZW51bWVyYXRlLCBzZXhwX29mXVxuXG4gIGxldCBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgPSBmdW5jdGlvblxuICAgIHwgQWxsb3cgLT4gdHJ1ZVxuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZSAtPiB0cnVlXG4gICAgfCBSYWlzZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBzYXZlX2xhc3RfdmFsdWVfZXhuIHQgY2FsbGJhY2tfYXJpdHkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZSAtPiBTb21lIChMYXN0X3ZhbHVlLmNyZWF0ZV9leG4gY2FsbGJhY2tfYXJpdHkpXG4gICAgfCBBbGxvdyAtPiBOb25lXG4gICAgfCBSYWlzZSAtPiBOb25lXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1c19pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgU3Vic2NyaWJlciA9IHN0cnVjdFxuICB0eXBlICdjYWxsYmFjayB0ID1cbiAgICB7IGJ1c19pZCA6IEJ1c19pZC50XG4gICAgOyBjYWxsYmFjayA6ICdjYWxsYmFja1xuICAgIDsgZXh0cmFjdF9leG4gOiBib29sXG4gICAgOyAoKiBbc3Vic2NyaWJlcnNfaW5kZXhdIGlzIHRoZSBpbmRleCBvZiB0aGlzIHN1YnNjcmliZXIgaW4gdGhlIGJ1cydzIFtzdWJzY3JpYmVyc11cbiAgICAgICAgIGFycmF5LiAgWy0xXSBpbmRpY2F0ZXMgdGhhdCB0aGlzIHN1YnNjcmliZXIgaXMgbm90IHN1YnNjcmliZWQuICopXG4gICAgICBtdXRhYmxlIHN1YnNjcmliZXJzX2luZGV4IDogaW50XG4gICAgOyBvbl9jYWxsYmFja19yYWlzZSA6IChFcnJvci50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgb25fY2xvc2UgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IHN1YnNjcmliZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgaXNfc3Vic2NyaWJlZCB0IH50b18gPSB0LnN1YnNjcmliZXJzX2luZGV4ID49IDAgJiYgQnVzX2lkLmVxdWFsIHQuYnVzX2lkIHRvX1xuXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGNhbGxiYWNrID0gX1xuICAgICAgICA7IGJ1c19pZCA9IF9cbiAgICAgICAgOyBleHRyYWN0X2V4blxuICAgICAgICA7IHN1YnNjcmliZXJzX2luZGV4XG4gICAgICAgIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgOyBvbl9jbG9zZSA9IF9cbiAgICAgICAgOyBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfVxuICAgIDogU2V4cC50XG4gICAgPVxuICAgIExpc3RcbiAgICAgIFsgQXRvbSBcIkJ1cy5TdWJzY3JpYmVyLnRcIlxuICAgICAgOyBbJW1lc3NhZ2VcbiAgICAgICAgXCJcIlxuICAgICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDpcbiAgICAgICAgICAgIChpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmcgdGhlbiBOb25lIGVsc2UgU29tZSBzdWJzY3JpYmVyc19pbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpbnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIChvbl9jYWxsYmFja19yYWlzZSA6ICgoRXJyb3IudCAtPiB1bml0KSBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgfmV4dHJhY3RfZXhuOlxuICAgICAgICAgICAgKGlmIGV4dHJhY3RfZXhuIHRoZW4gU29tZSB0cnVlIGVsc2UgTm9uZSA6IChib29sIG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICAoc3Vic2NyaWJlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YnVzX2lkOmlnbm9yZVxuICAgICAgICB+Y2FsbGJhY2s6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgICB+ZXh0cmFjdF9leG46aWdub3JlXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDppZ25vcmVcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOmlnbm9yZVxuICAgICAgICB+b25fY2xvc2U6aWdub3JlXG4gICAgICAgIH5zdWJzY3JpYmVkX2Zyb206aWdub3JlKVxuICA7O1xuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH5jYWxsYmFja1xuICAgICAgICB+YnVzX2lkXG4gICAgICAgIH5leHRyYWN0X2V4blxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXhcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIH5vbl9jbG9zZVxuICAgID1cbiAgICB7IGJ1c19pZFxuICAgIDsgY2FsbGJhY2tcbiAgICA7IGV4dHJhY3RfZXhuXG4gICAgOyBzdWJzY3JpYmVyc19pbmRleFxuICAgIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgICA7IG9uX2Nsb3NlXG4gICAgOyBzdWJzY3JpYmVkX2Zyb21cbiAgICB9XG4gIDs7XG5lbmRcblxudHlwZSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgdCA9XG4gIHsgYnVzX2lkIDogQnVzX2lkLnRcbiAgOyBuYW1lIDogSW5mby50IG9wdGlvblxuICA7IGNhbGxiYWNrX2FyaXR5IDogJ2NhbGxiYWNrIENhbGxiYWNrX2FyaXR5LnRcbiAgOyBjcmVhdGVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnRcbiAgOyBvbl9jYWxsYmFja19yYWlzZSA6IEVycm9yLnQgLT4gdW5pdFxuICA7IGxhc3RfdmFsdWUgOiAnY2FsbGJhY2sgTGFzdF92YWx1ZS50IG9wdGlvblxuICA7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gIDsgbXV0YWJsZSB3cml0ZV9ldmVyX2NhbGxlZCA6IGJvb2xcbiAgOyBtdXRhYmxlIG51bV9zdWJzY3JpYmVycyA6IGludFxuICA7ICgqIFtzdWJzY3JpYmVyc10gY29udGFpbnMgYWxsIHN1YnNjcmliZXJzIHRvIHRoZSBidXMsIGluIGEgY29udGlndW91cyBwcmVmaXggZnJvbVxuICAgICAgIGluZGV4IFswXSB0byBbbnVtX3N1YnNjcmliZXJzIC0gMV0uICopXG4gICAgbXV0YWJsZSBzdWJzY3JpYmVycyA6ICdjYWxsYmFjayBTdWJzY3JpYmVyLnQgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbY2FsbGJhY2tzXSBob2xkcyB0aGUgY2FsbGJhY2tzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVudHJpZXMgb2YgW3N1YnNjcmliZXJzXS4gKilcbiAgICBtdXRhYmxlIGNhbGxiYWNrcyA6ICdjYWxsYmFjayBPcHRpb25fYXJyYXkudFxuICA7IG11dGFibGUgdW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA6ICdjYWxsYmFjayBTdWJzY3JpYmVyLnQgbGlzdFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3RcbiAgICAgIF9cbiAgICAgIF9cbiAgICAgIHsgYnVzX2lkID0gX1xuICAgICAgOyBjYWxsYmFja19hcml0eVxuICAgICAgOyBjYWxsYmFja3MgPSBfXG4gICAgICA7IGNyZWF0ZWRfZnJvbVxuICAgICAgOyBsYXN0X3ZhbHVlID0gX1xuICAgICAgOyBuYW1lXG4gICAgICA7IG51bV9zdWJzY3JpYmVyc1xuICAgICAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICAgIDsgb25fY2FsbGJhY2tfcmFpc2UgPSBfXG4gICAgICA7IHN0YXRlXG4gICAgICA7IHN1YnNjcmliZXJzXG4gICAgICA7IHdyaXRlX2V2ZXJfY2FsbGVkXG4gICAgICA7IHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPSBfXG4gICAgICB9XG4gID1cbiAgbGV0IHN1YnNjcmliZXJzID1cbiAgICBBcnJheS5pbml0IG51bV9zdWJzY3JpYmVycyB+ZjooZnVuIGkgLT4gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBzdWJzY3JpYmVycyBpKVxuICBpblxuICBbJW1lc3NhZ2VcbiAgICBcIlwiXG4gICAgICAobmFtZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgKGNhbGxiYWNrX2FyaXR5IDogXyBDYWxsYmFja19hcml0eS50KVxuICAgICAgKGNyZWF0ZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAob25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnQpXG4gICAgICAoc3RhdGUgOiBTdGF0ZS50KVxuICAgICAgKHdyaXRlX2V2ZXJfY2FsbGVkIDogYm9vbClcbiAgICAgIChzdWJzY3JpYmVycyA6IF8gU3Vic2NyaWJlci50IEFycmF5LnQpXVxuOztcblxudHlwZSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgYnVzID0gKCdjYWxsYmFjaywgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlYWRfb25seSB0ID0gKHQgOj4gKF8sIHJlYWQpIHQpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+YnVzX2lkOmlnbm9yZVxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+Y2FsbGJhY2tzOlxuICAgICAgICAoY2hlY2sgKGZ1biBjYWxsYmFja3MgLT5cbiAgICAgICAgICAgYXNzZXJ0IChPcHRpb25fYXJyYXkubGVuZ3RoIGNhbGxiYWNrcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5zdWJzY3JpYmVycyk7XG4gICAgICAgICAgIGZvciBpID0gMCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGNhbGxiYWNrcyAtIDEgZG9cbiAgICAgICAgICAgICBpZiBpIDwgdC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgICAgICB0aGVuIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGNhbGxiYWNrcyBpKVxuICAgICAgICAgICAgIGVsc2UgYXNzZXJ0IChPcHRpb25fYXJyYXkuaXNfbm9uZSBjYWxsYmFja3MgaSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+Y2FsbGJhY2tfYXJpdHk6aWdub3JlXG4gICAgICB+Y3JlYXRlZF9mcm9tOmlnbm9yZVxuICAgICAgfm51bV9zdWJzY3JpYmVyczooY2hlY2sgKGZ1biBudW1fc3Vic2NyaWJlcnMgLT4gYXNzZXJ0IChudW1fc3Vic2NyaWJlcnMgPj0gMCkpKVxuICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTppZ25vcmVcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgIH5sYXN0X3ZhbHVlOmlnbm9yZVxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfndyaXRlX2V2ZXJfY2FsbGVkOmlnbm9yZVxuICAgICAgfnN1YnNjcmliZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBzdWJzY3JpYmVycyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBzdWJzY3JpYmVycyAtIDEgZG9cbiAgICAgICAgICAgICBpZiBpIDwgdC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBzdWJzY3JpYmVycyBpIGluXG4gICAgICAgICAgICAgICBTdWJzY3JpYmVyLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdWJzY3JpYmVyO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChpID0gc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCkpXG4gICAgICAgICAgICAgZWxzZSBhc3NlcnQgKE9wdGlvbl9hcnJheS5pc19ub25lIHN1YnNjcmliZXJzIGkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGU6aWdub3JlKVxuOztcblxubGV0IGlzX2Nsb3NlZCB0ID0gU3RhdGUuaXNfY2xvc2VkIHQuc3RhdGVcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICgnY2FsbGJhY2ssIHJlYWRfd3JpdGUpIGJ1cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbm1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICgnY2FsbGJhY2ssIHJlYWQpIGJ1cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbmxldFtAY29sZF0gc3RhcnRfd3JpdGVfZmFpbGluZyB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJbQnVzLndyaXRlXSBjYWxsZWQgb24gY2xvc2VkIGJ1c1wiIHQgWyVzZXhwX29mOiAoXywgXykgdF1cbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJbQnVzLndyaXRlXSBjYWxsZWQgZnJvbSBjYWxsYmFjayBvbiB0aGUgc2FtZSBidXNcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiAoXywgXykgdF1cbiAgfCBPa190b193cml0ZSAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCBjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LnN1YnNjcmliZXJzXG5cbmxldCBtYXliZV9zaHJpbmtfY2FwYWNpdHkgdCA9XG4gIGlmIHQubnVtX3N1YnNjcmliZXJzICogNCA8PSBjYXBhY2l0eSB0XG4gIHRoZW4gKFxuICAgIGxldCBkZXNpcmVkX2NhcGFjaXR5ID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgICBsZXQgY29weV9hbmRfc2hyaW5rIGFycmF5ID1cbiAgICAgIGxldCBuZXdfYXJyYXkgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46ZGVzaXJlZF9jYXBhY2l0eSBpblxuICAgICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgICAgfnNyYzphcnJheVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6bmV3X2FycmF5XG4gICAgICAgIH5kc3RfcG9zOjBcbiAgICAgICAgfmxlbjp0Lm51bV9zdWJzY3JpYmVycztcbiAgICAgIG5ld19hcnJheVxuICAgIGluXG4gICAgdC5zdWJzY3JpYmVycyA8LSBjb3B5X2FuZF9zaHJpbmsgdC5zdWJzY3JpYmVycztcbiAgICB0LmNhbGxiYWNrcyA8LSBjb3B5X2FuZF9zaHJpbmsgdC5jYWxsYmFja3MpXG47O1xuXG5sZXQgYWRkX3N1YnNjcmliZXIgdCAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KSB+YXRfc3Vic2NyaWJlcnNfaW5kZXggPVxuICBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IDwtIGF0X3N1YnNjcmliZXJzX2luZGV4O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5zdWJzY3JpYmVycyBhdF9zdWJzY3JpYmVyc19pbmRleCBzdWJzY3JpYmVyO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5jYWxsYmFja3MgYXRfc3Vic2NyaWJlcnNfaW5kZXggc3Vic2NyaWJlci5jYWxsYmFja1xuOztcblxubGV0IHJlbW92ZV9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgPVxuICBsZXQgc3Vic2NyaWJlcnNfaW5kZXggPSBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IGluXG4gIHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggPC0gLTE7XG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LnN1YnNjcmliZXJzIHN1YnNjcmliZXJzX2luZGV4O1xuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5jYWxsYmFja3Mgc3Vic2NyaWJlcnNfaW5kZXhcbjs7XG5cbmxldCB1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgPVxuICBsZXQgc3Vic2NyaWJlcl9pbmRleCA9IHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggaW5cbiAgbGV0IGxhc3Rfc3Vic2NyaWJlcl9pbmRleCA9IHQubnVtX3N1YnNjcmliZXJzIC0gMSBpblxuICByZW1vdmVfc3Vic2NyaWJlciB0IHN1YnNjcmliZXI7XG4gIGlmIHN1YnNjcmliZXJfaW5kZXggPCBsYXN0X3N1YnNjcmliZXJfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IGxhc3Rfc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyBsYXN0X3N1YnNjcmliZXJfaW5kZXggaW5cbiAgICByZW1vdmVfc3Vic2NyaWJlciB0IGxhc3Rfc3Vic2NyaWJlcjtcbiAgICBhZGRfc3Vic2NyaWJlciB0IGxhc3Rfc3Vic2NyaWJlciB+YXRfc3Vic2NyaWJlcnNfaW5kZXg6c3Vic2NyaWJlcl9pbmRleCk7XG4gIHQubnVtX3N1YnNjcmliZXJzIDwtIHQubnVtX3N1YnNjcmliZXJzIC0gMTtcbiAgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHRcbjs7XG5cbmxldCB1bnN1YnNjcmliZSB0IHN1YnNjcmliZXIgPVxuICBpZiBTdWJzY3JpYmVyLmlzX3N1YnNjcmliZWQgc3Vic2NyaWJlciB+dG9fOnQuYnVzX2lkXG4gIHRoZW4gKFxuICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT5cbiAgICAgIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA8LSBzdWJzY3JpYmVyIDo6IHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZVxuICAgIHwgQ2xvc2VkIC0+XG4gICAgICAoKiBUaGlzIGNhbiBoYXBwZW4gaWYgZHVyaW5nIFt3cml0ZV0sIFt1bnN1YnNjcmliZV0gaXMgY2FsbGVkIGFmdGVyIFtjbG9zZV0uICBXZVxuICAgICAgICAgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBiZWNhdXNlIGFsbCBzdWJzY3JpYmVycyB3aWxsIGJlIHVuc3Vic2NyaWJlZCBhZnRlciB0aGVcbiAgICAgICAgIFt3cml0ZV0gZmluaXNoZXMuICopXG4gICAgICAoKVxuICAgIHwgT2tfdG9fd3JpdGUgLT4gdW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0IHN1YnNjcmliZXIpXG47O1xuXG5sZXRbQGNvbGRdIHVuc3Vic2NyaWJlX2FmdGVyX2ZpbmlzaF93cml0ZSB0ID1cbiAgTGlzdC5pdGVyIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSB+ZjoodW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0KTtcbiAgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlIDwtIFtdXG47O1xuXG5sZXRbQGNvbGRdIHVuc3Vic2NyaWJlX2FsbCB0ID1cbiAgYXNzZXJ0IChpc19jbG9zZWQgdCk7XG4gIGZvciBpID0gMCB0byB0Lm51bV9zdWJzY3JpYmVycyAtIDEgZG9cbiAgICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyBpIGluXG4gICAgT3B0aW9uLml0ZXIgc3Vic2NyaWJlci5vbl9jbG9zZSB+ZjooZnVuIG9uX2Nsb3NlIC0+IG9uX2Nsb3NlICgpKTtcbiAgICByZW1vdmVfc3Vic2NyaWJlciB0IHN1YnNjcmliZXJcbiAgZG9uZTtcbiAgdC5udW1fc3Vic2NyaWJlcnMgPC0gMDtcbiAgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluaXNoX3dyaXRlIHQgPVxuICBpZiBub3QgKExpc3QuaXNfZW1wdHkgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlKSB0aGVuIHVuc3Vic2NyaWJlX2FmdGVyX2ZpbmlzaF93cml0ZSB0O1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT4gdW5zdWJzY3JpYmVfYWxsIHRcbiAgfCBPa190b193cml0ZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiB0LnN0YXRlIDwtIE9rX3RvX3dyaXRlXG47O1xuXG5sZXRbQGNvbGRdIGNsb3NlIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT4gKClcbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiB0LnN0YXRlIDwtIENsb3NlZFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgdC5zdGF0ZSA8LSBDbG9zZWQ7XG4gICAgdW5zdWJzY3JpYmVfYWxsIHRcbjs7XG5cbmxldCBjYWxsX29uX2NhbGxiYWNrX3JhaXNlIHQgZXJyb3IgPVxuICB0cnkgdC5vbl9jYWxsYmFja19yYWlzZSBlcnJvciB3aXRoXG4gIHwgZXhuIC0+XG4gICAgY2xvc2UgdDtcbiAgICByYWlzZSBleG5cbjs7XG5cbmxldCBjYWxsYmFja19yYWlzZWQgdCBpIGV4biA9XG4gICgqIFtpXSB3YXMgaW5jcmVtZW50ZWQgYmVmb3JlIHRoZSBjYWxsYmFjayB3YXMgY2FsbGVkLCBzbyB3ZSBoYXZlIHRvIHN1YnRyYWN0IG9uZVxuICAgICBoZXJlLiAgV2UgZG8gdGhpcyBoZXJlLCByYXRoZXIgdGhhbiBhdCB0aGUgY2FsbCBzaXRlLCBiZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgICBjYWxsIHNpdGVzIGR1ZSB0byB0aGUgb3B0aW1pemF0aW9ucyBuZWVkZWQgdG8ga2VlcCB0aGlzIHplcm8tYWxsb2MuICopXG4gIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LnN1YnNjcmliZXJzIChpIC0gMSkgaW5cbiAgbGV0IGVycm9yID1cbiAgICBtYXRjaCBzdWJzY3JpYmVyLmV4dHJhY3RfZXhuIHdpdGhcbiAgICB8IHRydWUgLT4gRXJyb3Iub2ZfZXhuIGV4blxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIFRoaXMgW0JhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCldIGlzIGludGVuZGVkIHRvIGdyYWIgdGhlIGJhY2t0cmFjZSBvZiB0aGUgW3RyeVxuICAgICAgICAgLi4uIHdpdGhdJ3MgdGhhdCBjYWxsIFtjYWxsYmFja19yYWlzZWRdLiAgVGhlIGNhbGwgaXMgaGVyZSByYXRoZXIgdGhhbiBlYXJsaWVyIHNvXG4gICAgICAgICB0aGF0IHdlIG9ubHkgZG8gaXQgd2hlbiBbc3Vic2NyaWJlci5leHRyYWN0X2V4biA9IGZhbHNlXS4gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCdXMgc3Vic2NyaWJlciByYWlzZWRcIlxuICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgKGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50KVxuICAgICAgICAgIChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpXVxuICAgICAgfD4gWyVvZl9zZXhwOiBFcnJvci50XVxuICBpblxuICBtYXRjaCBzdWJzY3JpYmVyLm9uX2NhbGxiYWNrX3JhaXNlIHdpdGhcbiAgfCBOb25lIC0+IGNhbGxfb25fY2FsbGJhY2tfcmFpc2UgdCBlcnJvclxuICB8IFNvbWUgZiAtPlxuICAgICh0cnkgZiBlcnJvciB3aXRoXG4gICAgIHwgZXhuIC0+XG4gICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICBjYWxsX29uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgICB0XG4gICAgICAgICAobGV0IG9yaWdpbmFsX2Vycm9yID0gZXJyb3IgaW5cbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiQnVzIHN1YnNjcmliZXIncyBbb25fY2FsbGJhY2tfcmFpc2VdIHJhaXNlZFwiXG4gICAgICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgICAgIChiYWNrdHJhY2UgOiBCYWNrdHJhY2UudClcbiAgICAgICAgICAgICAgKG9yaWdpbmFsX2Vycm9yIDogRXJyb3IudCldXG4gICAgICAgICAgfD4gWyVvZl9zZXhwOiBFcnJvci50XSkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXRfY2FsbGJhY2sgYSBpID1cbiAgKCogV2UgY29uc2lkZXJlZCB1c2luZyBbT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bl0gYW5kXG4gICAgIFtPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4bl0gaGVyZSwgYnV0IGJvdGggYXJlIHNpZ25pZmljYW50bHkgc2xvd2VyLiAgQ2hlY2tcbiAgICAgdGhlIHdyaXRlIGJlbmNobWFya3MgaW4gW2JlbmNoX2J1cy5tbF0gYmVmb3JlIGNoYW5naW5nIHRoaXMuICopXG4gIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSBhIGlcbjs7XG5cbmxldCB3cml0ZV9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZV9sb2NhbF9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIChhMSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlMl9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMlxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTNfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiBhMyA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTIgYTNcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGU0X25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyIGEzIGE0XG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlNV9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0IGE1ID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMiBhMyBhNCBhNVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFRoZSBbd3JpdGVfTl0gZnVuY3Rpb25zIGFyZSB3cml0dGVuIHRvIG1pbmltaXNlIHJlZ2lzdGVycyBsaXZlIGFjcm9zcyBmdW5jdGlvbiBjYWxsc1xuICAgKHRoZXNlIGhhdmUgdG8gYmUgc3BpbGxlZCkuICBUaGV5IGFyZSBhbHNvIGFubm90YXRlZCBmb3IgcGFydGlhbCBpbmxpbmluZyAodGhlXG4gICBvbmUtY2FsbGJhY2sgY2FzZSBiZWNvbWVzIGlubGluZWQgd2hlcmVhcyB0aGUgPjEtY2FsbGJhY2stY2FzZSByZXF1aXJlcyBhIGZ1cnRoZXJcbiAgIGRpcmVjdCBjYWxsKS4gKilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZSB0IGExID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGVfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDEgbGFzdF92YWx1ZSBhMSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGVfbG9jYWwgdCAoYTEgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGVfbG9jYWxfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUyIHQgYTEgYTIgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTJfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMik7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDIgbGFzdF92YWx1ZSBhMSBhMilcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUzIHQgYTEgYTIgYTMgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTNfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDMgbGFzdF92YWx1ZSBhMSBhMiBhMylcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGU0IHQgYTEgYTIgYTMgYTQgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIGE0IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTRfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDQgbGFzdF92YWx1ZSBhMSBhMiBhMyBhNClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGU1IHQgYTEgYTIgYTMgYTQgYTUgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIGE0IGE1IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTVfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCBhNSk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDUgbGFzdF92YWx1ZSBhMSBhMiBhMyBhNCBhNSlcbjs7XG5cbmxldCBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgdCA9XG4gIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS5hbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICB0Lm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZVxuOztcblxubGV0IGNyZWF0ZV9leG5cbiAgICAgID9uYW1lXG4gICAgICBjcmVhdGVkX2Zyb21cbiAgICAgIGNhbGxiYWNrX2FyaXR5XG4gICAgICB+KG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50KVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gID1cbiAgbGV0IGxhc3RfdmFsdWUgPVxuICAgIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS5zYXZlX2xhc3RfdmFsdWVfZXhuXG4gICAgICBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICAgIGNhbGxiYWNrX2FyaXR5XG4gIGluXG4gIHsgYnVzX2lkID0gQnVzX2lkLmNyZWF0ZSAoKVxuICA7IG5hbWVcbiAgOyBjYWxsYmFja19hcml0eVxuICA7IGNyZWF0ZWRfZnJvbVxuICA7IG51bV9zdWJzY3JpYmVycyA9IDBcbiAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgOyBvbl9jYWxsYmFja19yYWlzZVxuICA7IGxhc3RfdmFsdWVcbiAgOyBzdWJzY3JpYmVycyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjowXG4gIDsgY2FsbGJhY2tzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjBcbiAgOyBzdGF0ZSA9IE9rX3RvX3dyaXRlXG4gIDsgd3JpdGVfZXZlcl9jYWxsZWQgPSBmYWxzZVxuICA7IHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPSBbXVxuICB9XG47O1xuXG5sZXQgY2FuX3N1YnNjcmliZSB0ID0gYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIHQgfHwgbm90IHQud3JpdGVfZXZlcl9jYWxsZWRcblxubGV0IGVubGFyZ2VfY2FwYWNpdHkgdCA9XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5tYXggMSAoY2FwYWNpdHkgKiAyKSBpblxuICBsZXQgY29weV9hbmRfZG91YmxlIGFycmF5ID1cbiAgICBsZXQgbmV3X2FycmF5ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6YXJyYXkgfnNyY19wb3M6MCB+ZHN0Om5ld19hcnJheSB+ZHN0X3BvczowIH5sZW46Y2FwYWNpdHk7XG4gICAgbmV3X2FycmF5XG4gIGluXG4gIHQuc3Vic2NyaWJlcnMgPC0gY29weV9hbmRfZG91YmxlIHQuc3Vic2NyaWJlcnM7XG4gIHQuY2FsbGJhY2tzIDwtIGNvcHlfYW5kX2RvdWJsZSB0LmNhbGxiYWNrc1xuOztcblxubGV0IHN1YnNjcmliZV9leG5cbiAgICAgID8oZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID9vbl9jYWxsYmFja19yYWlzZVxuICAgICAgP29uX2Nsb3NlXG4gICAgICB0XG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIH5mOmNhbGxiYWNrXG4gID1cbiAgaWYgbm90IChjYW5fc3Vic2NyaWJlIHQpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQnVzLnN1YnNjcmliZV9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCJcbiAgICAgIFslc2V4cCB+fihzdWJzY3JpYmVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSwgeyBidXMgPSAodCA6IChfLCBfKSB0KSB9XVxuICAgICAgWyVzZXhwX29mOiBTZXhwLnRdO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT5cbiAgICAoKiBBbnl0aGluZyB0aGF0IHNhdGlzZmllcyB0aGUgcmV0dXJuIHR5cGUgd2lsbCBkby4gIFNpbmNlIHRoZSBzdWJzY3JpYmVyIGlzIG5ldmVyXG4gICAgICAgc3RvcmVkIGluIHRoZSBhcnJheXMsIHRoZSBbb25fY2xvc2VdIGNhbGxiYWNrIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiAqKVxuICAgIFN1YnNjcmliZXIuY3JlYXRlXG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIH5idXNfaWQ6dC5idXNfaWRcbiAgICAgIH5jYWxsYmFja1xuICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6KC0xKVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICB+b25fY2xvc2VcbiAgfCBPa190b193cml0ZSB8IFdyaXRlX2luX3Byb2dyZXNzIC0+XG4gICAgKCogVGhlIGNvZGUgYmVsb3cgc2lkZSBlZmZlY3RzIFt0XSwgd2hpY2ggcG90ZW50aWFsbHkgY291bGQgaW50ZXJmZXJlIHdpdGggYSB3cml0ZSBpblxuICAgICAgIHByb2dyZXNzLiAgSG93ZXZlciwgdGhlIHNpZGUgZWZmZWN0cyBkb24ndCBjaGFuZ2UgdGhlIHByZWZpeCBvZiBbdC5jYWxsYmFja3NdIHRoYXRcbiAgICAgICB3cml0ZSB1c2VzOyB0aGV5IG9ubHkgY2hhbmdlIFt0LmNhbGxiYWNrc10gYmV5b25kIHRoYXQgcHJlZml4LiAgQW5kIGFsbCB3cml0ZXNcbiAgICAgICBleHRyYWN0IFt0Lm51bV9zdWJzY3JpYmVyc10gYXQgdGhlIHN0YXJ0LCBzbyB0aGF0IHRoZXkgd2lsbCBub3Qgc2VlIGFueSBzdWJzZXF1ZW50XG4gICAgICAgY2hhbmdlcyB0byBpdC4gKilcbiAgICBsZXQgc3Vic2NyaWJlciA9XG4gICAgICBTdWJzY3JpYmVyLmNyZWF0ZVxuICAgICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfmJ1c19pZDp0LmJ1c19pZFxuICAgICAgICB+Y2FsbGJhY2tcbiAgICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDp0Lm51bV9zdWJzY3JpYmVyc1xuICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgfm9uX2Nsb3NlXG4gICAgaW5cbiAgICBpZiBjYXBhY2l0eSB0ID0gdC5udW1fc3Vic2NyaWJlcnMgdGhlbiBlbmxhcmdlX2NhcGFjaXR5IHQ7XG4gICAgYWRkX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyIH5hdF9zdWJzY3JpYmVyc19pbmRleDp0Lm51bV9zdWJzY3JpYmVycztcbiAgICB0Lm51bV9zdWJzY3JpYmVycyA8LSB0Lm51bV9zdWJzY3JpYmVycyArIDE7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNlbmQgbGFzdF92YWx1ZSBjYWxsYmFjayk7XG4gICAgc3Vic2NyaWJlclxuOztcblxubGV0IGl0ZXJfZXhuID9leHRyYWN0X2V4biB0IHN1YnNjcmliZWRfZnJvbSB+ZiA9XG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCdXMuaXRlcl9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWdub3JlIChzdWJzY3JpYmVfZXhuID9leHRyYWN0X2V4biB0IHN1YnNjcmliZWRfZnJvbSB+ZiA6IF8gU3Vic2NyaWJlci50KVxuOztcblxubW9kdWxlIEZvbGRfYXJpdHkgPSBzdHJ1Y3RcbiAgdHlwZSAoXywgXywgXykgdCA9XG4gICAgfCBBcml0eTEgOiAoJ2EgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTQgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTVcbiAgICAgIDogKCAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0XG4gICAgICAgICwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3NcbiAgICAgICAgLCAncyApXG4gICAgICAgICAgdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBmb2xkX2V4blxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICAodHlwZSBjIGYgcylcbiAgICAgICh0IDogKGMsIF8pIHQpXG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIChmb2xkX2FyaXR5IDogKGMsIGYsIHMpIEZvbGRfYXJpdHkudClcbiAgICAgIH4oaW5pdCA6IHMpXG4gICAgICB+KGYgOiBmKVxuICA9XG4gIGxldCBzdGF0ZSA9IHJlZiBpbml0IGluXG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCdXMuZm9sZF9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaXRlcl9leG5cbiAgICA/ZXh0cmFjdF9leG5cbiAgICB0XG4gICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgfmY6XG4gICAgICAobWF0Y2ggZm9sZF9hcml0eSB3aXRoXG4gICAgICAgfCBBcml0eTEgLT4gZnVuIGExIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExXG4gICAgICAgfCBBcml0eTIgLT4gZnVuIGExIGEyIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyXG4gICAgICAgfCBBcml0eTMgLT4gZnVuIGExIGEyIGEzIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzXG4gICAgICAgfCBBcml0eTQgLT4gZnVuIGExIGEyIGEzIGE0IC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzIGE0XG4gICAgICAgfCBBcml0eTUgLT4gZnVuIGExIGEyIGEzIGE0IGE1IC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzIGE0IGE1KVxuOztcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMgY2FsbGJhY2sgd3JpdGUgPVxuICAgICAgbGV0IGJ1c19yID0gcmVhZF9vbmx5IGJ1cyBpblxuICAgICAgaWdub3JlIChzdWJzY3JpYmVfZXhuIGJ1c19yIFslaGVyZV0gfmY6Y2FsbGJhY2sgOiBfIFN1YnNjcmliZXIudCk7XG4gICAgICBsZXQgc3RhcnRpbmdfbWlub3Jfd29yZHMgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICAgICAgbGV0IHN0YXJ0aW5nX21ham9yX3dvcmRzID0gR2MubWFqb3Jfd29yZHMgKCkgaW5cbiAgICAgIHdyaXRlICgpO1xuICAgICAgbGV0IGVuZGluZ19taW5vcl93b3JkcyA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gICAgICBsZXQgZW5kaW5nX21ham9yX3dvcmRzID0gR2MubWFqb3Jfd29yZHMgKCkgaW5cbiAgICAgIFsldGVzdF9yZXN1bHQ6IGludF0gKGVuZGluZ19taW5vcl93b3JkcyAtIHN0YXJ0aW5nX21pbm9yX3dvcmRzKSB+ZXhwZWN0OjA7XG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChlbmRpbmdfbWFqb3Jfd29yZHMgLSBzdGFydGluZ19tYWpvcl93b3JkcykgfmV4cGVjdDowXG4gICAgOztcblxuICAgICgqIFRoaXMgdGVzdCBvbmx5IHdvcmtzIHdoZW4gW3dyaXRlXSBpcyBwcm9wZXJseSBpbmxpbmVkLiAgSXQgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXRcbiAgICAgICBbd3JpdGVdIG5ldmVyIGFsbG9jYXRlcyBpbiBhbnkgc2l0dWF0aW9uLiAgRm9yIGV4YW1wbGUsIGlmIHRoaXMgdGVzdCBpcyBtb3ZlZCB0b1xuICAgICAgIGFub3RoZXIgbGlicmFyeSBhbmQgcnVuIHdpdGggWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlLCBpdCBmYWlscy4gKilcbiAgICBsZXQldGVzdF91bml0IFwid3JpdGUgZG9lc24ndCBhbGxvY2F0ZSB3aGVuIGlubGluZWRcIiA9XG4gICAgICBsZXQgY3JlYXRlIGNyZWF0ZWRfZnJvbSBhcml0eSA9XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICBjcmVhdGVkX2Zyb21cbiAgICAgICAgICBhcml0eVxuICAgICAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6UmFpc2VcbiAgICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2U6RXJyb3IucmFpc2VcbiAgICAgIGluXG4gICAgICBsZXQgYnVzMSA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5MSBpblxuICAgICAgbGV0IGJ1czIgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTIgaW5cbiAgICAgIGxldCBidXMzID0gY3JlYXRlIFslaGVyZV0gQXJpdHkzIGluXG4gICAgICBsZXQgYnVzNCA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5NCBpblxuICAgICAgbGV0IGJ1czUgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTUgaW5cbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czEgKGZ1biAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZSBidXMxICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czIgKGZ1biAoKSAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZTIgYnVzMiAoKSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMzIChmdW4gKCkgKCkgKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUzIGJ1czMgKCkgKCkgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb25cbiAgICAgICAgYnVzNFxuICAgICAgICAoZnVuICgpICgpICgpICgpIC0+ICgpKVxuICAgICAgICAoZnVuICgpIC0+IHdyaXRlNCBidXM0ICgpICgpICgpICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uXG4gICAgICAgIGJ1czVcbiAgICAgICAgKGZ1biAoKSAoKSAoKSAoKSAoKSAtPiAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiB3cml0ZTUgYnVzNSAoKSAoKSAoKSAoKSAoKSlcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsX2ludGZcblxuKCogVGhpcyBwb3NpdGlvbiBzaG93cyB1cCBpbiB0ZXN0cyBpbiBhIHdheSB0aGF0IGlzIGRpZmZpY3VsdCB0byBzdXBwcmVzcywgc28gd2UgZGVmaW5lIGl0XG4gICBoZXJlIGluIGEgcGxhY2UgdGhhdCBpcyB1bmxpa2VseSB0byBjaGFuZ2UgdmVyeSBvZnRlbiAqKVxubGV0IGR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbl90ZXN0cyA9IFslaGVyZV1cblxubW9kdWxlIE1ha2UgKENvbm4gOiBDbG9zYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm4gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbm5cblxuICAgIGxldCBzZXhwX29mX3QgKF8gOiB0KSA6IFNleHAudCA9IEF0b20gXCI8Q29ubi50PlwiXG4gIGVuZFxuXG4gIHR5cGUgY29ubiA9IENvbm4udFxuXG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIG9mICdhZGRyZXNzXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IG9mIEVycm9yLnRcbiAgICAgIHwgQ29ubmVjdGVkIG9mIChjb25uW0BzZXhwLm9wYXF1ZV0pXG4gICAgICB8IERpc2Nvbm5lY3RlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhZGRyZXNzIGV2ZW50ID0gJ2FkZHJlc3MgdFxuXG4gICAgbW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICAgIHsgc2VydmVyX25hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvbl9ldmVudCA6ICdhZGRyZXNzIGV2ZW50IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IGxvZ19sZXZlbCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCB8IENvbm5lY3RlZCBfIHwgRGlzY29ubmVjdGVkIHwgT2J0YWluZWRfYWRkcmVzcyBfIC0+IGBJbmZvXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IF8gLT4gYEVycm9yXG4gICAgOztcblxuICAgIGxldCBoYW5kbGUgdCB7IEhhbmRsZXIuc2VydmVyX25hbWUgPSBfOyBvbl9ldmVudCB9ID0gb25fZXZlbnQgdFxuICBlbmRcblxuICAoKiBBIHBlcnNpc3RlbnQgY29ubmVjdGlvbiB0aGF0IGlzIHBvbHltb3JwaGljIGluIHRoZSBhZGRyZXNzIHR5cGUuICBXZSBoaWRlIGF3YXkgdGhpc1xuICAgICB0eXBlIGxhdGVyIHNpbmNlIGl0IG9ubHkgYXBwZWFycyBpbiB0aGUgdHlwZSBvZiBbY3JlYXRlXS4gKilcbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgeyBnZXRfYWRkcmVzcyA6IHVuaXQgLT4gJ2FkZHJlc3MgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IGNvbm5lY3QgOiAnYWRkcmVzcyAtPiBDb25uLnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IHJldHJ5X2RlbGF5IDogdW5pdCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZSBjb25uIDogWyBgT2sgb2YgQ29ubi50IHwgYENsb3NlX3N0YXJ0ZWQgXSBJdmFyLnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2Nvbm5lY3RfcmVzdWx0IDogQ29ubi50IE9yX2Vycm9yLnQgSXZhci50XG4gICAgICA7IGV2ZW50X2hhbmRsZXIgOiAnYWRkcmVzcyBFdmVudC5IYW5kbGVyLnRcbiAgICAgIDsgZXZlbnRfYnVzIDogKHVuaXQgRXZlbnQudCAtPiB1bml0LCByZWFkX3dyaXRlKSBCdXMudFxuICAgICAgOyBjbG9zZV9zdGFydGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBkb24ndF9yZWNvbm5lY3QgOiB1bml0IEl2YXIudFxuICAgICAgOyBhZGRyZXNzX2VxdWFsIDogJ2FkZHJlc3MgLT4gJ2FkZHJlc3MgLT4gYm9vbFxuICAgICAgOyBzZXhwX29mX2FkZHJlc3MgOiAnYWRkcmVzcyAtPiBTZXhwLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2VydmVyX25hbWUgdCA9IHQuZXZlbnRfaGFuZGxlci5zZXJ2ZXJfbmFtZVxuXG4gICAgbGV0IGhhbmRsZV9ldmVudCAodHlwZSBhZGRyZXNzKSB0IChldmVudCA6IGFkZHJlc3MgRXZlbnQudCkgPVxuICAgICAgQnVzLndyaXRlXG4gICAgICAgIHQuZXZlbnRfYnVzXG4gICAgICAgIChtYXRjaCBldmVudCB3aXRoXG4gICAgICAgICB8IE9idGFpbmVkX2FkZHJlc3MgKF8gOiBhZGRyZXNzKSAtPiBPYnRhaW5lZF9hZGRyZXNzICgpXG4gICAgICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCAtPiBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgICAgIHwgRmFpbGVkX3RvX2Nvbm5lY3QgZSAtPiBGYWlsZWRfdG9fY29ubmVjdCBlXG4gICAgICAgICB8IENvbm5lY3RlZCBjb25uIC0+IENvbm5lY3RlZCBjb25uXG4gICAgICAgICB8IERpc2Nvbm5lY3RlZCAtPiBEaXNjb25uZWN0ZWQpO1xuICAgICAgRXZlbnQuaGFuZGxlIGV2ZW50IHQuZXZlbnRfaGFuZGxlclxuICAgIDs7XG5cbiAgICAoKiBUaGlzIGZ1bmN0aW9uIGZvY3VzZXMgaW4gb24gdGhlIHRoZSBlcnJvciBpdHNlbGYsIGRpc2NhcmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2hcbiAgICAgICBtb25pdG9yIGNhdWdodCB0aGUgZXJyb3IsIGlmIGFueS5cblxuICAgICAgIElmIHdlIGRvbid0IGRvIHRoaXMsIHdlIHNvbWV0aW1lcyBlbmQgdXAgd2l0aCBub2lzeSBsb2dzIHdoaWNoIHJlcG9ydCB0aGUgc2FtZSBlcnJvclxuICAgICAgIGFnYWluIGFuZCBhZ2FpbiwgZGlmZmVyaW5nIG9ubHkgYXMgdG8gd2hhdCBtb25pdG9yIGNhdWdodCB0aGVtLiAqKVxuICAgIGxldCBzYW1lX2Vycm9yIGUxIGUyID1cbiAgICAgIGxldCB0b19zZXhwIGUgPSBFeG4uc2V4cF9vZl90IChNb25pdG9yLmV4dHJhY3RfZXhuIChFcnJvci50b19leG4gZSkpIGluXG4gICAgICBTZXhwLmVxdWFsICh0b19zZXhwIGUxKSAodG9fc2V4cCBlMilcbiAgICA7O1xuXG4gICAgKCogQ29udGludWUgdHJ5aW5nIHRvIGNvbm5lY3QgdW50aWwgd2UgYXJlIGFibGUgdG8gZG8gc28sIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGJvdGhcbiAgICAgICB0aGUgbmV3IGNvbm5lY3Rpb24gYW5kIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIG9uY2Ugd2UgYXJlIHJlYWR5IGZvclxuICAgICAgIHRoZSBuZXh0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiAqKVxuICAgIGxldCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgPVxuICAgICAgKCogV2UgdGFrZSBjYXJlIG5vdCB0byBzcGFtIGxvZ3Mgd2l0aCB0aGUgc2FtZSBtZXNzYWdlIG92ZXIgYW5kIG92ZXIgYnkgY29tcGFyaW5nXG4gICAgICAgICBlYWNoIGxvZyBtZXNzYWdlIHRoZSB0aGUgcHJldmlvdXMgb25lIG9mIHRoZSBzYW1lIHR5cGUuICopXG4gICAgICBsZXQgcHJldmlvdXNfYWRkcmVzcyA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgcHJldmlvdXNfZXJyb3IgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICB0LmdldF9hZGRyZXNzICgpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIGFkZHIgLT5cbiAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzID1cbiAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2FkZHJlc3MgLT4gdC5hZGRyZXNzX2VxdWFsIGFkZHIgcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgcHJldmlvdXNfYWRkcmVzcyA6PSBTb21lIGFkZHI7XG4gICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoT2J0YWluZWRfYWRkcmVzcyBhZGRyKSlcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IHQuY29ubmVjdCBhZGRyXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICAoKiBDYXRjaCBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgdXNlci1wcm92aWRlZCBbdC5nZXRfYWRkcmVzc10gb3IgW3QuY29ubmVjdF0gKilcbiAgICAgICAgRGVmZXJyZWQuT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+ZXh0cmFjdF9leG46YW1fcnVubmluZ190ZXN0IGNvbm5lY3RcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgcmV0dXJuIGBDbG9zZV9zdGFydGVkKVxuICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICB0aGVuIHJldHVybiBgRG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nID0gdC5yZXRyeV9kZWxheSAoKSBpblxuICAgICAgICAgIGxldCViaW5kIGNvbm5lY3RfcmVzdWx0ID0gY29ubmVjdCAoKSBpblxuICAgICAgICAgIEl2YXIuZmlsbCB0Lm5leHRfY29ubmVjdF9yZXN1bHQgY29ubmVjdF9yZXN1bHQ7XG4gICAgICAgICAgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIG1hdGNoIGNvbm5lY3RfcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIGNvbm4gLT5cbiAgICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gKGBPayBjb25uKTtcbiAgICAgICAgICAgIHJldHVybiAoYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSlcbiAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfZXJyb3IgPVxuICAgICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfZXJyb3Igd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2VyciAtPiBzYW1lX2Vycm9yIGVyciBwcmV2aW91c19lcnJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcmV2aW91c19lcnJvciA6PSBTb21lIGVycjtcbiAgICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yXG4gICAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoRmFpbGVkX3RvX2Nvbm5lY3QgZXJyKSlcbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0ID1cbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWRcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgICh0eXBlIGFkZHJlc3MpXG4gICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICAgPyhvbl9ldmVudCA9IGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICAgPyhyYW5kb21fc3RhdGUgPSBgU3RhdGUgUmFuZG9tLlN0YXRlLmRlZmF1bHQpXG4gICAgICAgICAgPyh0aW1lX3NvdXJjZSA9IFRpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgICB+YWRkcmVzczoobW9kdWxlIEFkZHJlc3MgOiBBZGRyZXNzIHdpdGggdHlwZSB0ID0gYWRkcmVzcylcbiAgICAgICAgICBnZXRfYWRkcmVzc1xuICAgICAgPVxuICAgICAgbGV0IGV2ZW50X2hhbmRsZXIgPSB7IEV2ZW50LkhhbmRsZXIuc2VydmVyX25hbWU7IG9uX2V2ZW50IH0gaW5cbiAgICAgIGxldCBkZWZhdWx0X3JldHJ5X2RlbGF5ID1cbiAgICAgICAgRm4uY29uc3QgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgKGlmIGFtX3J1bm5pbmdfdGVzdCB0aGVuIDAuMSBlbHNlIDEwLikpXG4gICAgICBpblxuICAgICAgbGV0IG5vbl9yYW5kb21pemVkX2RlbGF5ID0gT3B0aW9uLnZhbHVlIHJldHJ5X2RlbGF5IH5kZWZhdWx0OmRlZmF1bHRfcmV0cnlfZGVsYXkgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheV9zcGFuID1cbiAgICAgICAgbWF0Y2ggcmFuZG9tX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgTm9uX3JhbmRvbSAtPiBub25fcmFuZG9taXplZF9kZWxheVxuICAgICAgICB8IGBTdGF0ZSByYW5kb21fc3RhdGUgLT5cbiAgICAgICAgICBmdW4gKCkgLT5cbiAgICAgICAgICAgIGxldCBzcGFuID0gbm9uX3JhbmRvbWl6ZWRfZGVsYXkgKCkgaW5cbiAgICAgICAgICAgIGxldCBzcGFuID0gVGltZV9ucy5TcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBSYW5kb20uU3RhdGUuZmxvYXQgcmFuZG9tX3N0YXRlIChzcGFuICouIDAuMykgaW5cbiAgICAgICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICAgICAgaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlXG4gICAgICAgICAgICAgIHRoZW4gc3BhbiArLiBkaXN0YW5jZVxuICAgICAgICAgICAgICBlbHNlIHNwYW4gLS4gZGlzdGFuY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBUaW1lX25zLlNwYW4ub2Zfc2VjIHdhaXRcbiAgICAgIGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXkgKCkgPSBUaW1lX3NvdXJjZS5hZnRlciB0aW1lX3NvdXJjZSAocmV0cnlfZGVsYXlfc3BhbiAoKSkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgeyBldmVudF9oYW5kbGVyXG4gICAgICAgIDsgZXZlbnRfYnVzID1cbiAgICAgICAgICAgIEJ1cy5jcmVhdGVfZXhuXG4gICAgICAgICAgICAgIChpZiBhbV9ydW5uaW5nX3Rlc3QgdGhlbiBkdW1teV9zcmNfcG9zX3RoYXRfc2hvd3NfdXBfaW5fdGVzdHMgZWxzZSBbJWhlcmVdKVxuICAgICAgICAgICAgICBBcml0eTFcbiAgICAgICAgICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTpBbGxvd19hbmRfc2VuZF9sYXN0X3ZhbHVlXG4gICAgICAgICAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgICAgOyBnZXRfYWRkcmVzc1xuICAgICAgICA7IGNvbm5lY3RcbiAgICAgICAgOyBuZXh0X2Nvbm5lY3RfcmVzdWx0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyByZXRyeV9kZWxheVxuICAgICAgICA7IGNvbm4gPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBkb24ndF9yZWNvbm5lY3QgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGFkZHJlc3NfZXF1YWwgPSBBZGRyZXNzLmVxdWFsXG4gICAgICAgIDsgc2V4cF9vZl9hZGRyZXNzID0gQWRkcmVzcy5zZXhwX29mX3RcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgICgqIHRoaXMgbG9vcCBmaW5pc2hlcyBvbmNlIFtjbG9zZSB0XSBoYXMgYmVlbiBjYWxsZWQsIGluIHdoaWNoIGNhc2UgaXQgbWFrZXMgc3VyZSB0b1xuICAgICAgICAgbGVhdmUgW3QuY29ubl0gZmlsbGVkIHdpdGggW2BDbG9zZV9zdGFydGVkXS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICBAQCBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKCkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IEF0dGVtcHRpbmdfdG9fY29ubmVjdCBpblxuICAgICAgICBtYXRjaCViaW5kIHRyeV9jb25uZWN0aW5nX3VudGlsX3N1Y2Nlc3NmdWwgdCB3aXRoXG4gICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYERvbid0X3JlY29ubmVjdCAtPlxuICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSAtPlxuICAgICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgKENvbm5lY3RlZCBjb25uKSBpblxuICAgICAgICAgIGxldCViaW5kICgpID0gQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uIGluXG4gICAgICAgICAgdC5jb25uIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgRGlzY29ubmVjdGVkIGluXG4gICAgICAgICAgKCogd2FpdHMgdW50aWwgW3JldHJ5X2RlbGF5ICgpXSB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIHRpbWUganVzdCBiZWZvcmUgd2UgbGFzdFxuICAgICAgICAgICAgIHRyaWVkIHRvIGNvbm5lY3QgcmF0aGVyIHRoYW4gdGhlIHRpbWUgd2Ugbm90aWNlZCBiZWluZyBkaXNjb25uZWN0ZWQsIHNvIHRoYXQgaWZcbiAgICAgICAgICAgICBhIGxvbmctbGl2ZWQgY29ubmVjdGlvbiBkaWVzLCB3ZSB3aWxsIGF0dGVtcHQgdG8gcmVjb25uZWN0IGltbWVkaWF0ZWx5LiAqKVxuICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGBSZXBlYXQgKCkpO1xuICAgICAgdFxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkIHQgPVxuICAgICAgKCogVGFrZSBjYXJlIG5vdCB0byByZXR1cm4gYSBjb25uZWN0aW9uIHRoYXQgaXMga25vd24gdG8gYmUgY2xvc2VkIGF0IHRoZSB0aW1lXG4gICAgICAgICBbY29ubmVjdGVkXSB3YXMgY2FsbGVkLiAgVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2xpZW50IGNvZGUgdGhhdCBiZWhhdmVzIGxpa2VcbiAgICAgICAgIHtbXG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgPj49IGZ1biBjMSAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgICAgICBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCBjMVxuICAgICAgICAgICAoKiBhdCB0aGlzIHBvaW50IHdlIGFyZSBpbiBhIHJhY2Ugd2l0aCB0aGUgc2FtZSBjYWxsIGluc2lkZVxuICAgICAgICAgICAgICBwZXJzaXN0ZW50X2NsaWVudC5tbCAqKVxuICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgKCogZGVwZW5kaW5nIG9uIGhvdyB0aGUgcmFjZSB0dXJucyBvdXQsIHdlIGRvbid0IHdhbnQgdG8gZ2V0IGEgY2xvc2VkIGNvbm5lY3Rpb25cbiAgICAgICAgICAgICAgaGVyZSAqKVxuICAgICAgICAgICA+Pj0gZnVuIGMyIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgXX1cbiAgICAgICAgIFRoaXMgZG9lc24ndCByZW1vdmUgdGhlIHJhY2UgY29uZGl0aW9uLCBidXQgaXQgbWFrZXMgaXQgbGVzcyBsaWtlbHkgdG8gaGFwcGVuLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGxldCBkID0gSXZhci5yZWFkIHQuY29ubiBpblxuICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBkXG4gICAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICAgICAgfCBgT2sgY29ubiAtPiByZXR1cm4gY29ubilcbiAgICAgICAgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+XG4gICAgICAgICAgaWYgQ29ubi5pc19jbG9zZWQgY29ublxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIGdpdmUgdGhlIHJlY29ubmVjdGlvbiBsb29wIGEgY2hhbmNlIHRvIG92ZXJ3cml0ZSB0aGUgaXZhciAqKVxuICAgICAgICAgICAgQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uID4+PSBsb29wXG4gICAgICAgICAgZWxzZSByZXR1cm4gY29ublxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiB0ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCB0LmNvbm4pIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gTm9uZVxuICAgICAgfCBTb21lIChgT2sgY29ubikgLT4gU29tZSBjb25uXG4gICAgOztcblxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbiAgICBsZXQgY2xvc2UgdCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICB0aGVuXG4gICAgICAgICgqIEFub3RoZXIgY2FsbCB0byBjbG9zZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLiAgV2FpdCBmb3IgaXQgdG8gZmluaXNoLiAqKVxuICAgICAgICBjbG9zZV9maW5pc2hlZCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgICAgSXZhci5yZWFkIHQuY29ublxuICAgICAgICA+Pj0gZnVuIGNvbm5fb3B0IC0+XG4gICAgICAgIChtYXRjaCBjb25uX29wdCB3aXRoXG4gICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgIHwgYE9rIGNvbm4gLT4gQ29ubi5jbG9zZSBjb25uKVxuICAgICAgICA+PnwgZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkID1cbiAgICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwiUGVyc2lzdGVudCBjb25uZWN0aW9uIGNsb3NlZFwiXVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHQgPVxuICAgICAgaWYgaXNfY2xvc2VkIHRcbiAgICAgIHRoZW4gcmV0dXJuIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGN1cnJlbnRfY29ubmVjdGlvbiB0IHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBub3QgKENvbm4uaXNfY2xvc2VkIHgpIC0+IHJldHVybiAoT2sgeClcbiAgICAgICAgfCBTb21lIChfIDogQ29ubi50KSB8IE5vbmUgLT5cbiAgICAgICAgICBEZWZlcnJlZC5jaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlIChJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkKVxuICAgICAgICAgICAgOyBjaG9pY2UgKEl2YXIucmVhZCB0Lm5leHRfY29ubmVjdF9yZXN1bHQpIEZuLmlkXG4gICAgICAgICAgICBdKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHQgPVxuICAgICAgSXZhci5maWxsX2lmX2VtcHR5IHQuZG9uJ3RfcmVjb25uZWN0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhZGRyZXNzIFBvbHkudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFBvbHkuc2V4cF9vZl90IHQuc2V4cF9vZl9hZGRyZXNzIHRcblxuICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIChUIHQpID1cbiAgICBQb2x5LmNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0XG4gIDs7XG5cbiAgbGV0IGNsb3NlX2ZpbmlzaGVkIChUIHQpID0gUG9seS5jbG9zZV9maW5pc2hlZCB0XG4gIGxldCBpc19jbG9zZWQgKFQgdCkgPSBQb2x5LmlzX2Nsb3NlZCB0XG4gIGxldCBldmVudF9idXMgKFQgdCkgPSBCdXMucmVhZF9vbmx5IHQuZXZlbnRfYnVzXG4gIGxldCBjbG9zZSAoVCB0KSA9IFBvbHkuY2xvc2UgdFxuICBsZXQgc2VydmVyX25hbWUgKFQgdCkgPSBQb2x5LnNlcnZlcl9uYW1lIHRcbiAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiAoVCB0KSA9IFBvbHkuY3VycmVudF9jb25uZWN0aW9uIHRcbiAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHRcbiAgbGV0IGNvbm5lY3RlZCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkIHRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgIH5jb25uZWN0XG4gICAgICAgIH5hZGRyZXNzXG4gICAgICAgIGdldF9hZGRyZXNzXG4gICAgPVxuICAgIFRcbiAgICAgIChQb2x5LmNyZWF0ZVxuICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgIGdldF9hZGRyZXNzKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgdCA9XG4gIHwgS3JiXG4gIHwgS3JiX3Rlc3RfbW9kZVxuICB8IFJwY1xuW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBiaW5faW9dXG5cbmxldCBtYWdpY193b3JkID0gZnVuY3Rpb25cbiAgfCBLcmIgLT4gXCJLUkIyXCJcbiAgfCBLcmJfdGVzdF9tb2RlIC0+IFwiS0JUXCJcbiAgfCBScGMgLT4gXCJSUENcIlxuOztcblxubGV0IGdlbl9tYWdpY19udW1iZXIgd29yZCA9XG4gIFN0cmluZy50b19saXN0X3JldiB3b3JkXG4gIHw+IExpc3QuZm9sZCB+aW5pdDowIH5mOihmdW4gYWNjIGMgLT4gKGFjYyAqIDI1NikgKyBDaGFyLnRvX2ludCBjKVxuOztcblxubGV0IG1hZ2ljX251bWJlciB0ID0gZ2VuX21hZ2ljX251bWJlciAobWFnaWNfd29yZCB0KVxubGV0IGJ5X21hZ2ljX251bWJlciA9IEludC5NYXAub2ZfYWxpc3RfZXhuIChMaXN0Lm1hcCBhbGwgfmY6KGZ1biBwIC0+IG1hZ2ljX251bWJlciBwLCBwKSlcblxuKCogV2Ugb25jZSBtaW50ZWQgYSBuZXcgbWFnaWMgbnVtYmVyIGZvciBLcmIgaW4gb3JkZXIgdG8gY2hhbmdlIHRoZSBwcm90b2NvbFxuICAgbmVnb3RpYXRpb24uICBMZXQncyBiZSBjYXJlZnVsIHRoYXQgd2UgZG9uJ3QgcmV1c2UgdGhlIG9sZCBtYWdpYyBudW1iZXIgKilcbmxldCByZXRpcmVkX2tyYl93b3JkID0gXCJLUkJcIlxuXG4oKiBFbnN1cmUgdGVzdHMgYnJlYWsgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlIGNoYW5nZWQgKilcbmxldCV0ZXN0X3VuaXQgXCJtYWdpYyBudW1iZXJzXCIgPVxuICBhc3NlcnQgKGdlbl9tYWdpY19udW1iZXIgcmV0aXJlZF9rcmJfd29yZCA9IDRfMzQ2XzQ0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYiA9IDg0M18yMDdfMjQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiX3Rlc3RfbW9kZSA9IDVfNTIxXzk5NSk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIFJwYyA9IDRfNDExXzQ3NClcbjs7XG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBsZXQgYWxsX21hZ2ljX251bWJlcnNfaW5jbHVkaW5nX3JldGlyZWQgPVxuICAgIGxhenkgKHJldGlyZWRfa3JiX3dvcmQgOjogTGlzdC5tYXAgYWxsIH5mOm1hZ2ljX3dvcmQgfD4gTGlzdC5tYXAgfmY6Z2VuX21hZ2ljX251bWJlcilcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBMaXN0X3dpdGhfbWF4X2xlbl9pbnRmXG5cbm1vZHVsZSBNYWtlIChDb25maWcgOiBDb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICBsZXQgX19iaW5fcmVhZF90X18gPSBMaXN0Ll9fYmluX3JlYWRfdF9fXG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgICB0cnkgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgd2l0aFxuICAgIHwgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biAoSW5mby50b19zdHJpbmdfaHVtIGNvbnRleHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCAoYmluX3JlYWRlcl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3QgYmluX3JlYWRlcl9hLnJlYWRcbiAgICA7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCAoYmluX2EgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdCBiaW5fYS5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IGJpbl9hLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IGJpbl9hLnJlYWRlclxuICAgIH1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF9leG4gbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBpZiBsZW4gPiBtYXhfbGVuXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMaXN0IGlzIHRvbyBsYXJnZVwiIChjb250ZXh0IDogSW5mby50KSAobGVuIDogaW50KSAobWF4X2xlbiA6IGludCldO1xuICAgIGxcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID0gTGlzdC5zZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHRfb2ZfYSBzZXhwID1cbiAgICBsZXQgdCA9IExpc3QudF9vZl9zZXhwIHRfb2ZfYSBzZXhwIGluXG4gICAgb2ZfbGlzdF9leG4gdFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgS25vd25fcHJvdG9jb2wgPSBLbm93bl9wcm90b2NvbFxuXG5sZXQgbWF4X3N1cHBvcnRlZF92ZXJzaW9uID0gMV8wMDBfMDAwXG5sZXQgb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UgbnVtID0gbnVtID4gbWF4X3N1cHBvcnRlZF92ZXJzaW9uXG5cbm1vZHVsZSBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUgPVxuICBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgbWF4X2xlbiA9IDEwMFxuICAgIGxldCBjb250ZXh0ID0gSW5mby5vZl9zdHJpbmcgXCJQcm90b2NvbF92ZXJzaW9uX2hlYWRlclwiXG4gIGVuZClcblxudHlwZSB0ID0gaW50IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS50XG5bQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzID0gbGF6eSAoTWFwLmtleV9zZXQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyKVxuXG5sZXQgY3JlYXRlX2V4biA/KGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA9IFtdKSB+cHJvdG9jb2wgfnN1cHBvcnRlZF92ZXJzaW9ucyAoKSA9XG4gIGxldCBwcm90b2NvbF9tYWdpY19udW1iZXIgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgaW5cbiAgaWYgTGlzdC5leGlzdHMgc3VwcG9ydGVkX3ZlcnNpb25zIH5mOm91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmFibGUgdG8gYWR2ZXJ0aXNlIHZlcnNpb25zIGxhcmdlciB0aGFuIG1heCBzdXBwb3J0ZWQgdmVyc2lvblwiXG4gICAgICAgICAgKG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA6IGludClcbiAgICAgICAgICAoc3VwcG9ydGVkX3ZlcnNpb25zIDogaW50IGxpc3QpXTtcbiAgaWYgTGlzdC5leGlzdHMgYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIH5mOihGbi5ub24gb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbYWRkaXRpb25hbF9tYWdpY19udW1iZXJzXSBzaG91bGRuJ3QgYmUgd2l0aGluIFttYXhfc3VwcG9ydGVkX3ZlcnNpb25dIHJhbmdlXCJcbiAgICAgICAgICAobWF4X3N1cHBvcnRlZF92ZXJzaW9uIDogaW50KVxuICAgICAgICAgIChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgOiBpbnQgbGlzdCldO1xuICBpZiBMaXN0LmV4aXN0c1xuICAgICAgIGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVyc1xuICAgICAgIH5mOihTZXQubWVtIChmb3JjZSBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlthZGRpdGlvbmFsX21hZ2ljX251bWJlcnNdIHNob3VsZG4ndCBiZSBvdmVybGFwcGluZyB3aXRoIHBvdGVudGlhbCBcXFxuICAgICAgICAgW3Byb3RvY29sX21hZ2ljX251bWJlcl1zXCJcbiAgICAgICAgICAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIDogaW50IGxpc3QpXG4gICAgICAgICAgfmtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnM6KGZvcmNlIGtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnMgOiBJbnQuU2V0LnQpXTtcbiAgcHJvdG9jb2xfbWFnaWNfbnVtYmVyIDo6IChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgQCBzdXBwb3J0ZWRfdmVyc2lvbnMpXG4gIHw+IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5vZl9saXN0X2V4blxuOztcblxubGV0IHJhd192ZXJzaW9uX2xpc3QgKHQgOiB0KSA9ICh0IDo+IGludCBsaXN0KVxuXG5sZXQgZ2V0X3Byb3RvY29sICh0IDogdCkgPVxuICBsZXQgcHJvdG9jb2xzLCB2ZXJzaW9ucywgX2FkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA9XG4gICAgTGlzdC5wYXJ0aXRpb24zX21hcFxuICAgICAgKHQgOj4gaW50IGxpc3QpXG4gICAgICB+ZjooZnVuIHYgLT5cbiAgICAgICAgbWF0Y2ggTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyIHYgd2l0aFxuICAgICAgICB8IFNvbWUgcCAtPiBgRnN0IHBcbiAgICAgICAgfCBOb25lIC0+IGlmIG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlIHYgdGhlbiBgVHJkIHYgZWxzZSBgU25kIHYpXG4gIGluXG4gIG1hdGNoIHByb3RvY29scyB3aXRoXG4gIHwgW10gLT4gT2sgKE5vbmUsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBbIHAgXSAtPiBPayAoU29tZSBwLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgXyAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBtdWx0aXBsZSBtYWdpYyBudW1iZXJzIHNlZW4uXCJcbiAgICAgICAgICAocHJvdG9jb2xzIDogS25vd25fcHJvdG9jb2wudCBsaXN0KVxuICAgICAgICAgICh2ZXJzaW9ucyA6IGludCBsaXN0KV1cbjs7XG5cbmxldCBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyIH4odXMgOiB0KSB+KHBlZXIgOiB0KSA9XG4gIGxldCBvcGVuIE9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wsIHVzX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHVzIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wsIHBlZXJfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgcGVlciBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCA9XG4gICAgbWF0Y2ggdXNfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiTm8gbWFnaWMgbnVtYmVycyBzZWVuXCIgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KV1cbiAgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCA9XG4gICAgbWF0Y2ggcGVlcl9wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGFzc3VtZSBwZWVyIGlzIHNwZWFraW5nIG91ciBwcm90b2NvbCBpZiBbYWxsb3dfbGVnYWN5X3BlZXJdICopXG4gICAgICBpZiBhbGxvd19sZWdhY3lfcGVlclxuICAgICAgdGhlbiByZXR1cm4gdXNfcHJvdG9jb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcGVlcl9wcm90b2NvbCA9IGBVbmtub3duIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IFsgYFVua25vd24gXSldKVxuICBpblxuICBpZiBub3QgKFslY29tcGFyZS5lcXVhbDogS25vd25fcHJvdG9jb2wudF0gdXNfcHJvdG9jb2wgcGVlcl9wcm90b2NvbClcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldXG4gIGVsc2UgKFxuICAgIGxldCBwcm90b2NvbCA9IHVzX3Byb3RvY29sIGluXG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciB1c192ZXJzaW9ucyBwZWVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBubyBzaGFyZWQgdmVyc2lvbiBudW1iZXJzXCJcbiAgICAgICAgICAgICh1c192ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwZWVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHByb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldKVxuOztcblxubGV0IG1hdGNoZXNfbWFnaWNfcHJlZml4ICh0IDogdCkgfnByb3RvY29sID1cbiAgbGV0IG1hZ2ljX251bWJlciA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlciBwcm90b2NvbCBpblxuICBMaXN0Lm1lbSB+ZXF1YWw6SW50LmVxdWFsIChyYXdfdmVyc2lvbl9saXN0IHQpIG1hZ2ljX251bWJlclxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgKG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCkgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeCA9XG4gIGxldCBmIHQgPVxuICAgIExpc3QuZmluZCBLbm93bl9wcm90b2NvbC5hbGwgfmY6KGZ1biBwcm90b2NvbCAtPiBtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgdClcbiAgaW5cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIGYgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gNVxuXG5tb2R1bGUgTWFnaWNfcHJlZml4X2Jpbl9yZXByID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICAoKiBUaGUgYmluIHByb3QgcmVwcmVzZW50YXRpb24gb2YgYSBwcm90b2NvbCB2ZXJzaW9uIGhlYWRlciBpcyB0aGUgc3RhbmRhcmRcbiAgICAgcmVwcmVzZW50YXRpb24gZm9yIGFuIGludCBsaXN0OlxuXG4gICAgIHwgbmF0MCBpbmRpY2F0aW5nIHNpemUgfCBlbGVtZW50IDAgfCBlbGVtZW50IDEgfCAuLi5cblxuICAgICBbY3JlYXRlX2V4bl0gd2lsbCBhbHdheXMgcHV0IHRoZSBrbm93biBwcm90b2NvbCBtYWdpYyBudW1iZXIgYXMgXCJlbGVtZW50IDBcIi5cblxuICAgICBUaGUgYmluIHNpemUgb2YgXCJuYXQwIGluZGljYXRpbmcgc2l6ZVwiIGFuZCBcImVsZW1lbnQgMFwiIGlzIGZpeGVkICh0aGVyZSBhcmUgZXhwZWN0XG4gICAgIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBjaGFuZ2UgdGhlbSkuICopXG4gIGxldCBiaW5fc2l6ZSA9XG4gICAgYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICsgbWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgKF9saXN0X2xlbmd0aCA6IEJpbl9wcm90Lk5hdDAudCkgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIGluXG4gICAgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBJbnQuX19iaW5fcmVhZF90X18gfVxuICA7O1xuZW5kXG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyXG4gICAgKGZ1biBtYWdpY19udW1iZXIgLT4gKE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcikgbWFnaWNfbnVtYmVyKVxuICAgIE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fcmVhZGVyX3Rcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplID0gTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9zaXplXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJhd192ZXJzaW9uX2xpc3QgPSByYXdfdmVyc2lvbl9saXN0XG5lbmRcblxubW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlX2xpc3Rfd2l0aF9tYXhfbGVuID0gTGlzdF93aXRoX21heF9sZW4uTWFrZVxuXG4gIGxldCBtYWdpY19udW1iZXJfYmluX3NpemUgPSBtYWdpY19udW1iZXJfYmluX3NpemVcbiAgbGV0IG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA9IG1heF9zdXBwb3J0ZWRfdmVyc2lvblxuZW5kXG5cbmxldCV0ZXN0X3VuaXQgXCJiaW4gc2l6ZXMgYXJlIG5vdCBjaGFuZ2VkIGJ5IGFjY2lkZW50XCIgPVxuICAoKiBFbnN1cmUgdGhlIGJpbl9zaXplIG9mIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gICAgIGlzIGFsd2F5cyAxLiBUaGlzIG1lYW5zIHRoYXQgcmVnYXJkbGVzcyBvZiBob3cgbG9uZyB0aGUgbGlzdCBvZiB2ZXJzaW9ucyBpbiB0aGVcbiAgICAgcHJvdG9jb2wgaGVhZGVyIGlzLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSB0aGUgc2FtZSBudW1iZXIgb2YgYnl0ZXMuIFRoZVxuICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnQganVtcHMgdG8gMyBieXRlcyBhdCB0aGUgdmFsdWUgMTI4LiAqKVxuICBsZXQgYm91bmRlZF9saXN0X2Jpbl9zaXplID1cbiAgICBJbnQuYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICBpblxuICBhc3NlcnQgKGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9IDEpO1xuICBhc3NlcnQgKDYgPSBtYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpO1xuICBhc3NlcnQgKFxuICAgIGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXNfYmluX3NpemVcbiAgICA9IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSArIGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSlcbjs7XG4iLCJ0eXBlIHQgPSBCaW5fcHJvdC5OYXQwLnRcbltAQGRlcml2aW5nIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4OTllMmY0YS00OTBhLTExZTYtYjY4Zi1iYmQ2MjQ3MjUxNmNcIl1cblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gIFslZXhwZWN0IHt8IDU5NWYyYTYwZjExODE2YjI5YTcyZGRhYjE3MDAyYjU2IHx9XVxuOztcblxubGV0IGJpbl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fbmF0MFxubGV0IGJpbl9zaXplX3QgPSBCaW5fcHJvdC5TaXplLmJpbl9zaXplX25hdDBcbmxldCBiaW5fd3JpdGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0MFxubGV0IGJpbl93cml0ZV90ID0gQmluX3Byb3QuV3JpdGUuYmluX3dyaXRlX25hdDBcbmxldCBiaW5fcmVhZGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0MFxubGV0IGJpbl9yZWFkX3QgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDBcblxubGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZuYXQwID1cbiAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuOztcblxubGV0IG9mX2ludF9leG4gPSBCaW5fcHJvdC5OYXQwLm9mX2ludFxuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcblxubGV0IG9mX3dyaXRlciB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9XG4gIGxldCB3cml0ZSBidWYgfnBvcyBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgbGVuIGluXG4gICAgd3JpdGUgYnVmIH5wb3MgYVxuICBpblxuICBsZXQgc2l6ZSBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgTmF0MC5iaW5fc2l6ZV90IGxlbiArICgobGVuIDogQmluX3Byb3QuTmF0MC50KSA6PiBpbnQpXG4gIGluXG4gIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9XG47O1xuXG5sZXQgb2ZfdHlwZV9jbGFzcyAoYmluX2EgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MudCkgPSBvZl93cml0ZXIgYmluX2Eud3JpdGVyXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgYmlnc3RyaW5nX2Jpbl9wcm90IHMgPVxuICAgICAgbGV0IGJpZ3N0cmluZyA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIEJ5dGVzLmJpbl93cml0ZXJfdCBzIGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCaWdzdHJpbmcuU3RhYmxlLlYxLmJpbl93cml0ZXJfdCBiaWdzdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgPVxuICAgICAgbGV0IHdyaXRlcl93aXRoX2xlbmd0aCA9IG9mX3dyaXRlciBCeXRlcy5iaW5fd3JpdGVyX3QgaW5cbiAgICAgIEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIHdyaXRlcl93aXRoX2xlbmd0aCBzXG4gICAgOztcblxuICAgIGxldCB0ZXN0IGxlbiA9XG4gICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBiaWdzdHJpbmdfdmVyc2lvbiA9IGJpZ3N0cmluZ19iaW5fcHJvdCBzIGluXG4gICAgICBsZXQgd2l0aF9sZW5ndGhfdmVyc2lvbiA9IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgaW5cbiAgICAgIGlmIEJpZ3N0cmluZy50b19zdHJpbmcgYmlnc3RyaW5nX3ZlcnNpb24gPD4gQmlnc3RyaW5nLnRvX3N0cmluZyB3aXRoX2xlbmd0aF92ZXJzaW9uXG4gICAgICB0aGVuIGZhaWx3aXRoZiBcIm1pc21hdGNoIGZvciBsZW5ndGggJWRcIiBsZW4gKClcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIGZvciBsZW4gPSAwIHRvIEludC5wb3cgMiAxMCBkb1xuICAgICAgICB0ZXN0IGxlblxuICAgICAgZG9uZTtcbiAgICAgIGZvciBwb3cgPSAxMCB0byAyMCBkb1xuICAgICAgICBsZXQgeCA9IEludC5wb3cgMiBwb3cgaW5cbiAgICAgICAgdGVzdCAoeCAtIDEpO1xuICAgICAgICB0ZXN0IHg7XG4gICAgICAgIHRlc3QgKHggKyAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZlcnNpb24gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGVxdWFsLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgNDUyMWY0NGRiYzYwOThjMGFmYzI3NzBjYzg0NTUyYjEgfH1dXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IHN1bW1hcml6ZSB0cyA9XG4gIExpc3QubWFwIHRzIH5mOihmdW4geyBuYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgfD4gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkIH5pbml0OkludC5TZXQuZW1wdHkgfmY6Q29yZS5TZXQuYWRkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBkZXNjcmlwdGlvbnMgPVxuICAgIFsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDEgfVxuICAgIDsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDIgfVxuICAgIDsgeyBuYW1lID0gXCJiYXJcIjsgdmVyc2lvbiA9IDUgfVxuICAgIF1cbiAgaW5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJpemUgZGVzY3JpcHRpb25zIGluXG4gIHByaW50X3MgWyVzZXhwIChzdW1tYXJ5IDogSW50LlNldC50IFN0cmluZy5NYXAudCldO1xuICBbJWV4cGVjdCB7fCAoKGJhciAoNSkpIChmb28gKDEgMikpKSB8fV1cbjs7XG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgJ2EgdCA9XG4gIHwgQXV0aG9yaXplZCBvZiAnYVxuICB8IE5vdF9hdXRob3JpemVkIG9mIEVycm9yLnRcblxubGV0IGJpbmQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF1dGhvcml6ZWQgYSAtPiBmIGFcbiAgfCBOb3RfYXV0aG9yaXplZCBfIGFzIHQgLT4gdFxuOztcblxubGV0IGJpbmRfZGVmZXJyZWQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF1dGhvcml6ZWQgYSAtPiBmIGFcbiAgfCBOb3RfYXV0aG9yaXplZCBfIGFzIHQgLT4gRWFnZXJfZGVmZXJyZWQucmV0dXJuIHRcbjs7XG5cbmxldCBtYXBfZGVmZXJyZWQgdCB+ZiA9XG4gIGJpbmRfZGVmZXJyZWQgdCB+ZjooZnVuIGEgLT4gRWFnZXJfZGVmZXJyZWQubWFwIChmIGEpIH5mOihmdW4gYSAtPiBBdXRob3JpemVkIGEpKVxuOztcblxubGV0IGxpZnRfZGVmZXJyZWQgPSBtYXBfZGVmZXJyZWQgfmY6Rm4uaWRcbiIsIigqKiBBc3luY19ycGMgcHJvdG9jb2wgdHlwZXMsIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqKVxuXG4oKiBXQVJOSU5HOiBkbyBub3QgY2hhbmdlIGFueSBvZiB0aGVzZSB0eXBlcyB3aXRob3V0IGdvb2QgcmVhc29uICopXG5cbm9wZW4gQmluX3Byb3QuU3RkXG5vcGVuIFNleHBsaWIuU3RkXG5tb2R1bGUgQ29yZV9mb3JfdGVzdGluZyA9IENvcmVcbm1vZHVsZSBScGNfdGFnIDogQ29yZS5JZGVudGlmaWFibGUgPSBDb3JlLlN0cmluZ1xubW9kdWxlIFF1ZXJ5X2lkID0gQ29yZS5VbmlxdWVfaWQuSW50NjMgKHN0cnVjdCBlbmQpXG5cbm1vZHVsZSBVbnVzZWRfcXVlcnlfaWQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdCA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBRdWVyeV9pZC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDJiNTI4ZjRiMjJmMDhlMjg4NzZmZmUwMjM5MzE1YWMyIHx9XVxuICA7O1xuXG4gIGxldCB0ID0gUXVlcnlfaWQuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIFJwY19lcnJvciA6IHNpZ1xuICBvcGVuIENvcmVcblxuICB0eXBlIHQgPVxuICAgIHwgQmluX2lvX2V4biBvZiBTZXhwLnRcbiAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgfCBXcml0ZV9lcnJvciBvZiBTZXhwLnRcbiAgICB8IFVuY2F1Z2h0X2V4biBvZiBTZXhwLnRcbiAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQmluX2lvX2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBXcml0ZV9lcnJvciBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmNhdWdodF9leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBDb3JlLkludC5TdGFibGUuVjEudCBdXG4gICAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDhjYzc2NmJlZmEyY2Y1NjVlYTE0N2Q5ZmNkNWVhYWFiIHx9XVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvcmUuQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBScGNfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIENvcmUuUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCB0XTtcbiAgICBbJWV4cGVjdCB7fCA1ODczNGE2M2E1YzgzYzFiN2NiZmMzZmVkZmEzYWU4MiB8fV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGVhZGVyID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcblxubW9kdWxlIFF1ZXJ5X3YxID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBiZTU4ODg2OTFkNzM0MjdiM2FjOGVhMzAwYzE2OTQyMiB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5lbmRcblxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBtZXRhZGF0YSA6IHN0cmluZyBvcHRpb25cbiAgICA7IGRhdGEgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGVmNzBlYTJkZDBiYjgxMmE2MDFkMjg4MTBlNjYzN2Q0IHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cblxuICBsZXQgdG9fdjEgeyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YSA9IChfIDogc3RyaW5nIG9wdGlvbik7IGRhdGEgfSA6IF8gUXVlcnlfdjEudCA9XG4gICAgeyB0YWc7IHZlcnNpb247IGlkOyBkYXRhIH1cbiAgOztcblxuICBsZXQgb2ZfdjEgP21ldGFkYXRhIHsgUXVlcnlfdjEudGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSB9ID1cbiAgICB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhOyBkYXRhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2EgUnBjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgYTIyYTc2ZjE5MmIzYTRlYzFjMzcxMTdjNmJiMjUyZjUgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYFF1ZXJ5IG9mICdhXG4gICAgfCBgQWJvcnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCAyYzM3ODY4NzYxOTcxYzc4Y2MzNTVkNDNmMDg1NDg2MCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1faW5pdGlhbF9tZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgKCdyZXNwb25zZSwgJ2Vycm9yKSB0ID1cbiAgICB7IHVudXNlZF9xdWVyeV9pZCA6IFVudXNlZF9xdWVyeV9pZC50XG4gICAgOyBpbml0aWFsIDogKCdyZXNwb25zZSwgJ2Vycm9yKSBDb3JlLlJlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiAodW5pdCwgdW5pdCkgdF07XG4gICAgWyVleHBlY3Qge3wgNDZmMjMxZGRiN2ZhNTlkYTljMjc3NTlkNTBhZTAxYTkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cmVhbV9yZXNwb25zZV9kYXRhID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYEVvZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGMxZGJjZGNmZTJiMTJlNzk3ZWM2NGYwZDc0ZGYxODExIHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHwgSGVhcnRiZWF0XG4gICAgfCBRdWVyeV92MSBvZiAnYSBRdWVyeV92MS5uZWVkc19sZW5ndGhcbiAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnkubmVlZHNfbGVuZ3RoXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBmNjBjZTJkMTA0ZTJmMGQ5MjcxZjYyMmVjZDk3Y2VhOCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIHNleHBfb2ZdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbmxldCV0ZXN0IFwidjEgbWVzc2FnZSBjb21wYXRpYmlsaXR5XCIgPVxuICBsZXQgbW9kdWxlIE1lc3NhZ2VfdjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgICB8IEhlYXJ0YmVhdFxuICAgICAgfCBRdWVyeSBvZiAnYSBRdWVyeV92MS5uZWVkc19sZW5ndGhcbiAgICAgIHwgUmVzcG9uc2Ugb2YgJ2EgUmVzcG9uc2UubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICAgIFslZXhwZWN0IHt8IDE0OTY1YjBkYjk4NDRlNmIzNzYxNTFkZDg5MDgwOGU4IHx9XVxuICAgIDs7XG4gIGVuZFxuICBpblxuICBsZXQgdGFnID0gUnBjX3RhZy5vZl9zdHJpbmcgXCJycGNcIiBpblxuICBsZXQgcXVlcnlfaWQgPSBRdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgbGV0IHYxX3F1ZXJ5ID0geyBRdWVyeV92MS50YWc7IHZlcnNpb24gPSAxOyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gKCkgfSBpblxuICBsZXQgcmVzcG9uc2UgPSB7IFJlc3BvbnNlLmlkID0gcXVlcnlfaWQ7IGRhdGEgPSBPayAoKSB9IGluXG4gIGxldCB2MSA9IE1lc3NhZ2VfdjEuWyBIZWFydGJlYXQ7IFF1ZXJ5IHYxX3F1ZXJ5OyBSZXNwb25zZSByZXNwb25zZSBdIGluXG4gIGxldCB2MiA9IE1lc3NhZ2UuWyBIZWFydGJlYXQ7IFF1ZXJ5X3YxIHYxX3F1ZXJ5OyBSZXNwb25zZSByZXNwb25zZSBdIGluXG4gIGxldCB2MV9zdHIgPVxuICAgIENvcmVfZm9yX3Rlc3RpbmcuQmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZ1xuICAgICAgWyViaW5fd3JpdGVyOiB1bml0IE1lc3NhZ2VfdjEubmVlZHNfbGVuZ3RoIGxpc3RdXG4gICAgICB2MVxuICBpblxuICBsZXQgdjJfc3RyID1cbiAgICBDb3JlX2Zvcl90ZXN0aW5nLkJpbl9wcm90LldyaXRlci50b19zdHJpbmdcbiAgICAgIFslYmluX3dyaXRlcjogdW5pdCBNZXNzYWdlLm5lZWRzX2xlbmd0aCBsaXN0XVxuICAgICAgdjJcbiAgaW5cbiAgU3RyaW5nLmVxdWFsIHYxX3N0ciB2Ml9zdHJcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIENvcmUuQ29yZV9zdGFibGVcblxuICAoKiBXZSBjYW4ndCBtYWtlIFtCaW5fcHJvdC5TaGFwZS50XSBiaW5hYmxlIGRpcmVjdGx5IGJlY2F1c2UgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYVxuICAgICBjaXJjdWxhciBkZXBlbmRlbmN5LCBzbyB3ZSBtYWtlIGl0IFtCaW5hYmxlLk9mX3NleHBhYmxlX3dpdGhfdXVpZF0gaGVyZSBpbnN0ZWFkLiBUaGlzXG4gICAgIGFsbG93cyB1cyB0byBzZW5kIHRoZSBzaGFwZSBvdmVyIHRoZSB3aXJlIGFzIHBhcnQgb2YgdGhlXG4gICAgIFtWZXJzaW9uZWRfcnBjLlNoYXBlX21lbnUudF0uIFtCaW5fcHJvdC5TaGFwZS5DYW5vbmljYWwudF0sIHRob3VnaCBleHBvc2VkIGFuZFxuICAgICB0aGVyZWZvcmUgYmluYWJsZSwgaXMgbm90IGEgc3VpdGFibGUgYWx0ZXJuYXRpdmUgYmVjYXVzZSBpdCBoYXMgYW4gZXhwb25lbnRpYWxcbiAgICAgZXhwYW5zaW9uLiAqKVxuICBtb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQmluX3Byb3QuU2hhcGUuU3RhYmxlLlYxXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIwYWE1MzU0OS1hZDg4LTRiNGYtYWJjNy0xZjg0NTNlN2FhMTFcIlxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX3NleHBhYmxlLlYyIChUKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBScGMgb2ZcbiAgICAgICAgICB7IHF1ZXJ5IDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgfVxuICAgICAgfCBPbmVfd2F5IG9mIHsgbXNnIDogU2hhcGUuVjEudCB9XG4gICAgICB8IFN0cmVhbWluZ19ycGMgb2ZcbiAgICAgICAgICB7IHF1ZXJ5IDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IHVwZGF0ZV9yZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IGVycm9yIDogU2hhcGUuVjEudFxuICAgICAgICAgIH1cbiAgICAgIHwgVW5rbm93blxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgZW5kXG5lbmRcblxub3BlbiEgQ29yZVxuXG5tb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmluX3Byb3QuU2hhcGUudFxuXG4gICgqIEFuIHVuc3RhYmxlIHNleHBlciB0aGF0J3MgdXNlZnVsIGZvciBleHBlY3QgdGVzdHMsIHByaW50aW5nIG91dCB0aGUgc2hhcGUgZGlnZXN0c1xuICAgICBpbnN0ZWFkIG9mIHRoZSBzaGFwZXMgdGhlbXNlbHZlcy4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIChCaW5fcHJvdC5TaGFwZS5ldmFsX3RvX2RpZ2VzdF9zdHJpbmcgdCA6IHN0cmluZyldXG5lbmRcblxudHlwZSB0ID0gU3RhYmxlLlYxLnQgPVxuICB8IFJwYyBvZlxuICAgICAgeyBxdWVyeSA6IFNoYXBlLnRcbiAgICAgIDsgcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICB9XG4gIHwgT25lX3dheSBvZiB7IG1zZyA6IFNoYXBlLnQgfVxuICB8IFN0cmVhbWluZ19ycGMgb2ZcbiAgICAgIHsgcXVlcnkgOiBTaGFwZS50XG4gICAgICA7IGluaXRpYWxfcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICA7IHVwZGF0ZV9yZXNwb25zZSA6IFNoYXBlLnRcbiAgICAgIDsgZXJyb3IgOiBTaGFwZS50XG4gICAgICB9XG4gIHwgVW5rbm93blxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSBtZXNzYWdlX2hhbmRsZXIgPSBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2FcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gc3RydWN0XG4gICgqKiBSZXN1bHQgb2YgYW4gW29uX21lc3NhZ2VdIGNhbGxiYWNrLiAgV2Ugc3BsaXQgdGhlIFtDb250aW51ZV0gYW5kIFtXYWl0IF9dIGNhc2VzIHRvXG4gICAgICBtYWtlIGl0IGNsZWFyIHRoYXQgW0NvbnRpbnVlXSBpcyB0aGUgZXhwZWN0ZWQgY2FzZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmVcbiAgICAgIG9wdGltaXplZCBmb3IgdGhpcyBjYXNlLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RvcCBvZiAnYVxuICAgIHwgQ29udGludWVcbiAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxuXG5tb2R1bGUgdHlwZSBSZWFkZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgYnl0ZXNfcmVhZCA6IHQgLT4gSW50NjMudFxuXG4gICgqKiBTdGFydCByZWFkaW5nIGluY29taW5nIG1lc3NhZ2VzIGFuZCBwYXNzIHRoZW0gdG8gW29uX21lc3NhZ2VdLCB1bnRpbCBpdCByZXR1cm5zXG4gICAgICBbU3RvcCBfXS5cblxuICAgICAgW29uX2VuZF9vZl9iYXRjaF0gaXMgY2FsbGVkIGFmdGVyIHByb2Nlc3NpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgYmVmb3JlIHdhaXRpbmcgZm9yXG4gICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIGJlY29tZSByZWFkYWJsZSBhZ2Fpbi4gKilcbiAgdmFsIHJlYWRfZm9yZXZlclxuICAgIDogIHRcbiAgICAtPiBvbl9tZXNzYWdlOihCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgSGFuZGxlcl9yZXN1bHQudClcbiAgICAtPiBvbl9lbmRfb2ZfYmF0Y2g6KHVuaXQgLT4gdW5pdClcbiAgICAtPiAoJ2EsIFsgYEVvZiB8IGBDbG9zZWQgXSkgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIG1lc3NhZ2VfdG9vX2JpZyA9XG4gICAgeyBzaXplIDogaW50XG4gICAgOyBtYXhfbWVzc2FnZV9zaXplIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTZW50IG9mICdhXG4gICAgfCBDbG9zZWRcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBvZiBtZXNzYWdlX3Rvb19iaWdcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBXcml0ZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgbW9uaXRvciA6IHQgLT4gTW9uaXRvci50XG4gIHZhbCBieXRlc190b193cml0ZSA6IHQgLT4gaW50XG4gIHZhbCBieXRlc193cml0dGVuIDogdCAtPiBJbnQ2My50XG5cbiAgKCoqIEJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzZW5kIG1lc3NhZ2UgdXNpbmcgdGhpcyB3cml0ZXIsXG4gICAgICBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgd3JpdGVyIGlzIGNsb3NlZCBvciB0aGUgY29uc3VtZXIgbGVhdmVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgY2FjaGVkIGJ5IFtScGMuVHJhbnNwb3J0XSAqKVxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtmbHVzaGVkIHRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IG11c3QgYmVjb21lIGRldGVybWluZWQgd2hlbiBhbGwgcHJpb3Igc2VudFxuICAgICAgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZC5cblxuICAgICAgSXQgbXVzdCBiZSBPSyB0byBjYWxsIFtmbHVzaGVkIHRdIGFmdGVyIFt0XSBoYXMgYmVlbiBjbG9zZWQuICopXG4gIHZhbCBmbHVzaGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3JlYWR5X3RvX3dyaXRlIHRdIGJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHNlbmQgbWVzc2FnZXNcbiAgICAgIGFnYWluLiBBc3luYyBSUEMgY2FsbHMgdGhpcyBmdW5jdGlvbiBhZnRlciBzZW5kaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIHRvIGF2b2lkXG4gICAgICBmbG9vZGluZyB0aGUgdHJhbnNwb3J0LlxuXG4gICAgICBVc2luZyBbbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZF0gaXMgYW4gYWNjZXB0YWJsZSBpbXBsZW1lbnRhdGlvbi4gKilcbiAgdmFsIHJlYWR5X3RvX3dyaXRlIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogQWxsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHNlbmQgZXhhY3RseSBvbmUgbWVzc2FnZS4gKilcblxuICB2YWwgc2VuZF9iaW5fcHJvdCA6IHQgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICAoKiogU2FtZSBhcyBbc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXSBidXQgdGhlIGJpZ3N0cmluZyBjYW4ndCBiZSBtb2RpZmllZCB1bnRpbCB0aGVcbiAgICAgIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyB0aGVcbiAgICAgIGJpZ3N0cmluZy4gKilcbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IERlZmVycmVkLnQgU2VuZF9yZXN1bHQudFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbm1vZHVsZSBIZWFkZXIgPSBzdHJ1Y3RcbiAgbGV0IGxlbmd0aCA9IDhcbiAgbGV0IHVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgPSBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gYnVmIH5wb3NcblxuICBsZXQgdW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyBwYXlsb2FkX2xlbiA9XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50NjRfbGUgYnVmIH5wb3MgcGF5bG9hZF9sZW5cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5IYW5kbGVyX3Jlc3VsdFxuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5SZWFkZXJcblxuICB0eXBlIHQgPSBUIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpICogJ2EgLT4gdFxuXG4gIGxldCBwYWNrIG0gdCA9IFQgKG0sIHQpXG5cbiAgKCogV2UgcHV0IHR5cGUgYW5ub3RhdGlvbnMgdG8gYmUgc3VyZSB0aGUgdHlwZSBpcyBub3QgYSBmdW5jdGlvbiB0eXBlLCBpLmUuIHRvIGF2b2lkXG4gICAgIGNyZWF0aW5nIGNsb3N1cmVzICopXG4gIGxldCBzZXhwX29mX3QgKFQgKChtb2R1bGUgTSksIHQpKSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUICgobW9kdWxlIE0pLCB0KSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IGJ5dGVzX3JlYWQgKFQgKChtb2R1bGUgTSksIHQpKSA6IEludDYzLnQgPSBNLmJ5dGVzX3JlYWQgdFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKFQgKChtb2R1bGUgTSksIHQpKSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogXyBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWRfZm9yZXZlciB0IH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgOztcblxuICBsZXQgcmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0IChiaW5fcmVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHJlYWRfZm9yZXZlclxuICAgICAgdFxuICAgICAgfm9uX21lc3NhZ2U6KGZ1biBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgICBsZXQgeCA9IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPD4gcG9zICsgbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgICAgICghcG9zX3JlZiAtIHBvcylcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgKClcbiAgICAgICAgZWxzZSBTdG9wIHgpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOmlnbm9yZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLlNlbmRfcmVzdWx0XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLldyaXRlclxuXG4gIHR5cGUgJ2Egd3JpdGVyID1cbiAgICB7IGltcGwgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICA7IHQgOiAnYVxuICAgICgqIFdlIGNhY2hlIHRoZSByZXN1bHQgb2YgW3N0b3BwZWRdIGJlY2F1c2UgaXQgaXMgb2Z0ZW4gdGhlIFtEZWZlcnJlZC5hbnldIG9mIHNldmVyYWxcbiAgICAgICBvdGhlciBkZWZlcnJlZHMgYW5kIHdlIHdhbnQgW2Nhbl9zZW5kXSB0byBiZSBzaW1wbGUuICopXG4gICAgOyBzdG9wcGVkIDogdW5pdCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAnYSB3cml0ZXIgLT4gdFxuXG4gIGxldCBwYWNrICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSB0ID1cbiAgICBUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgPSBNLnN0b3BwZWQgdCB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuICBsZXQgbW9uaXRvciAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogTW9uaXRvci50ID0gTS5tb25pdG9yIHRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBpbnQgPSBNLmJ5dGVzX3RvX3dyaXRlIHRcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IEludDYzLnQgPSBNLmJ5dGVzX3dyaXR0ZW4gdFxuICBsZXQgZmx1c2hlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID0gTS5mbHVzaGVkIHRcblxuICBsZXQgcmVhZHlfdG9fd3JpdGUgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkeV90b193cml0ZSB0XG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSBiaW5fd3JpdGVyIHggOiBfIFNlbmRfcmVzdWx0LnQgPVxuICAgIE0uc2VuZF9iaW5fcHJvdCB0IGJpbl93cml0ZXIgeFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzdG9wcGVkIChUIHsgc3RvcHBlZDsgXyB9KSA9IHN0b3BwZWRcblxuICBsZXQgY2FuX3NlbmQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgc3RvcHBlZCB9KSA9XG4gICAgbm90IChNLmlzX2Nsb3NlZCB0IHx8IERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcHBlZClcbiAgOztcblxuICBsZXQgdHJhbnNmZXIgdCA/KG1heF9udW1fdmFsdWVzX3Blcl9yZWFkID0gMV8wMDApIHBpcGUgZiA9XG4gICAgbGV0IGNvbnN1bWVyID1cbiAgICAgIFBpcGUuYWRkX2NvbnN1bWVyIHBpcGUgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgIGxldCVtYXAgKCkgPSBmbHVzaGVkIHQgaW5cbiAgICAgICAgYE9rKVxuICAgIGluXG4gICAgbGV0IGVuZF9vZl9waXBlID1cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgbGV0IHJlYyBpdGVyICgpID1cbiAgICAgICAgICBpZiBjYW5fc2VuZCB0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBQaXBlLnJlYWRfbm93JyBwaXBlIH5jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aDptYXhfbnVtX3ZhbHVlc19wZXJfcmVhZFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBgT2sgcSAtPlxuICAgICAgICAgICAgICBRdWV1ZS5pdGVyIHEgfmY7XG4gICAgICAgICAgICAgIFBpcGUuQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgICAgICAgcmVhZHlfdG9fd3JpdGUgdCA+Pj4gaXRlclxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHBpcGUgPj4+IGZ1biAoYE9rIHwgYEVvZikgLT4gaXRlciAoKVxuICAgICAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBpdmFyICgpKVxuICAgICAgICBpblxuICAgICAgICBpdGVyICgpKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9IERlZmVycmVkLmFueSBbIGVuZF9vZl9waXBlOyBzdG9wcGVkIHQgXSBpblxuICAgIFBpcGUuY2xvc2VfcmVhZCBwaXBlXG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgeyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFdyaXRlci50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZSB0ID1cbiAgbGV0JWJpbmQgKCkgPSBXcml0ZXIuY2xvc2UgdC53cml0ZXIgaW5cbiAgUmVhZGVyLmNsb3NlIHQucmVhZGVyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxuXG4oKiogVGhlIHR5cGVzIG9mIHRoZSBbSW1wbGVtZW50YXRpb25dIGFuZCBbSW1wbGVtZW50YXRpb25zXSBtb2R1bGVzLCB3aGljaCBoYXZlXG4gICAgYSBkZXBlbmRlbmN5IGN5bGU6IFtJbXBsZW1lbnRhdGlvbl0gLT4gW0RpcmVjdF9zdHJlYW1fd3JpdGVyXSAtPlxuICAgIFtJbXBsZW1lbnRhdGlvbnNdIC0+IFtJbXBsZW1lbnRhdGlvbl0uICopXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgcmVjIEltcGxlbWVudGF0aW9uIDogc2lnXG4gIG1vZHVsZSBFeHBlcnQgOiBzaWdcbiAgICBtb2R1bGUgUmVzcG9uZGVyIDogc2lnXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIEYgOiBzaWdcbiAgICB0eXBlIChfLCBfKSByZXN1bHRfbW9kZSA9XG4gICAgICB8IEJsb2NraW5nIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50KSByZXN1bHRfbW9kZVxuICAgICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gICAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudFxuICAgICAgICAgICAgICAgIERlZmVycmVkLnQpXG4gICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gJ3VwZGF0ZSBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjID1cbiAgICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgOyBiaW5faW5pdF93cml0ZXIgOiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgOyBiaW5fdXBkYXRlX3dyaXRlciA6ICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgICA7IGltcGwgOiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICB9XG5cbiAgICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgICAgfCBPbmVfd2F5IDpcbiAgICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+IHVuaXQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgUnBjIDpcbiAgICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAgICogKCdyZXNwb25zZSwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICAgKiAoRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwY1xuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgZW5kXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICAgIDsgc2hhcGVzIDogUnBjX3NoYXBlcy50IExhenkudFxuICAgIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgICB9XG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvblxuXG5hbmQgSW1wbGVtZW50YXRpb25zIDogc2lnXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICAgIFsgYFJhaXNlXG4gICAgfCBgQ29udGludWVcbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gICAgfCBgQ2FsbCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgICB8IGBFeHBlcnQgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgICBdXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICAgIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBtb2R1bGUgcmVjIEluc3RhbmNlIDogc2lnXG4gICAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2UgPVxuICAgICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgICAgfCBEaXJlY3QgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG5cbiAgICB0eXBlICdhIHVucGFja2VkID1cbiAgICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2EgaW1wbGVtZW50YXRpb25zXG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiAoUXVlcnlfaWQudCwgc3RyZWFtaW5nX3Jlc3BvbnNlKSBIYXNodGJsLnRcbiAgICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgICAgOyBtdXRhYmxlXG4gICAgICAgIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAnYSBJbXBsZW1lbnRhdGlvbi50KSBvcHRpb25cbiAgICAgIDsgcGFja2VkX3NlbGYgOiB0XG4gICAgICB9XG5cbiAgICBhbmQgdCA9IFQgOiBfIHVucGFja2VkIC0+IHRcbiAgZW5kXG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvbnNcblxuYW5kIERpcmVjdF9zdHJlYW1fd3JpdGVyIDogc2lnXG4gIG1vZHVsZSBQZW5kaW5nX3Jlc3BvbnNlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm9ybWFsIG9mICdhXG4gICAgICB8IEV4cGVydCBvZiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm90X3N0YXJ0ZWQgb2YgJ2EgUGVuZGluZ19yZXNwb25zZS50IFF1ZXVlLnRcbiAgICAgIHwgU3RhcnRlZFxuICBlbmRcblxuICBtb2R1bGUgSWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50XG4gICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgIDsgaW5zdGFuY2UgOiBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UudFxuICAgIDsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgOyBzdHJlYW1fd3JpdGVyIDogJ2EgQ2FjaGVkX2Jpbl93cml0ZXIudFxuICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICB9XG5cbiAgYW5kICdhIGdyb3VwX2VudHJ5ID1cbiAgICB7IGdyb3VwIDogJ2EgRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAudFxuICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgfVxuXG4gIG1vZHVsZSBHcm91cCA6IHNpZ1xuICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBbY29tcG9uZW50c10gaXMgb25seSB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSBbY29tcG9uZW50c19ieV9pZF0gc28gd2UgY2FuIGl0ZXJhdGVcbiAgICAgICAgICAgb3ZlciBpdHMgZWxlbWVudHMgbW9yZSBxdWlja2x5IHRoYW4gd2UgY291bGQgaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMgb2ZcbiAgICAgICAgICAgW2NvbXBvbmVudHNfYnlfaWRdLiAqKVxuICAgICAgICBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgIDsgYnVmZmVyIDogQmlnc3RyaW5nLnQgcmVmXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgY29tcG9uZW50ID1cbiAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBncm91cF9lbnRyeSBCYWcuRWx0LnRcbiAgICAgIH1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA6PSAnYSB0XG5lbmQgPVxuICBEaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5hbmQgQ2FjaGVkX2Jpbl93cml0ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhlYWRlcl9wcmVmaXggOiBzdHJpbmcgKCogQmluX3Byb3R0ZWQgY29uc3RhbnQgcHJlZml4IG9mIHRoZSBtZXNzYWdlICopXG4gICAgOyBtdXRhYmxlIGRhdGFfbGVuIDogTmF0MC50XG4gICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB9XG5lbmQgPVxuICBDYWNoZWRfYmluX3dyaXRlclxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5Pbl9leGNlcHRpb24udCA9XG4gIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZV9jb25uZWN0aW9uID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gdHJ1ZSB9XG5sZXQgY29udGludWUgPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSBmYWxzZSB9XG5cbmxldCBoYW5kbGVfZXhuXG4gICAgICB7IGNhbGxiYWNrOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSB9XG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICBleG5cbiAgPVxuICBPcHRpb24uaXRlciBjYWxsYmFjayB+ZjooZnVuIGNhbGxiYWNrIC0+IGNhbGxiYWNrIGV4bik7XG4gIGlmIGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gIHRoZW4gTW9uaXRvci5zZW5kX2V4biBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvblxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBFeHBlcnQuUmVzcG9uZGVyLnQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHF1ZXJ5X2lkIHdyaXRlciA9IHsgcXVlcnlfaWQ7IHdyaXRlcjsgcmVzcG9uZGVkID0gZmFsc2UgfVxuICBlbmRcblxuICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgIHwgUmVwbGllZFxuICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgRiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdF9tb2RlID0gKCdhLCAnYikgRi5yZXN1bHRfbW9kZSA9XG4gICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCkgcmVzdWx0X21vZGVcbiAgICB8IERlZmVycmVkIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpIHJlc3VsdF9tb2RlXG5cbiAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIEYuc3RyZWFtaW5nX2ltcGwgPVxuICAgIHwgUGlwZSBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAndXBkYXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcblxuICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwYyA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19ycGMgPVxuICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgIDsgYmluX2luaXRfd3JpdGVyIDogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IGJpbl91cGRhdGVfd3JpdGVyIDogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgOyBpbXBsIDogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBGLnQgPVxuICAgIHwgT25lX3dheSA6XG4gICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGNcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIGxldCBzZXhwX29mX3QgXyA9IGZ1bmN0aW9uXG4gICAgfCBPbmVfd2F5X2V4cGVydCBfIHwgT25lX3dheSBfIC0+IFslbWVzc2FnZSBcIm9uZS13YXlcIl1cbiAgICB8IFJwY19leHBlcnQgXyB8IFJwYyBfIC0+IFslbWVzc2FnZSBcInJwY1wiXVxuICAgIHwgU3RyZWFtaW5nX3JwYyBfIC0+IFslbWVzc2FnZSBcInN0cmVhbWluZy1ycGNcIl1cbiAgOztcblxuICBsZXQgbGlmdCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBzdHIgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgc3RyKVxuICAgICAgaW5cbiAgICAgIE9uZV93YXkgKGJpbl9tc2csIGltcGwpXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydFxuICAgICAgICAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBxID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpXG4gICAgICBpblxuICAgICAgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHEgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSlcbiAgICAgIGluXG4gICAgICBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZClcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgIGluXG4gICAgICBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZylcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIERlZmVycmVkKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgIGluXG4gICAgICBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZClcbiAgICB8IFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH0gLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+XG4gICAgICAgICAgUGlwZVxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpKVxuICAgICAgICB8IERpcmVjdCBpbXBsIC0+XG4gICAgICAgICAgRGlyZWN0XG4gICAgICAgICAgICAoZnVuIHN0YXRlIHEgdyAtPlxuICAgICAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxIHcpKVxuICAgICAgaW5cbiAgICAgIFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH1cbiAgOztcblxuICBsZXQgbGlmdF9kZWZlcnJlZCAodHlwZSBhIGIpICh0IDogYiB0KSB+KGYgOiBhIC0+IGIgRGVmZXJyZWQudCkgOiBhIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgT25lX3dheSAoYmluX21zZywgaW1wbCkgLT5cbiAgICAgIE9uZV93YXlcbiAgICAgICAgKCBiaW5fbXNnXG4gICAgICAgICwgZnVuIHN0YXRlIHN0ciAtPiBFYWdlcl9kZWZlcnJlZC5iaW5kIChmIHN0YXRlKSB+ZjooZnVuIHN0YXRlIC0+IGltcGwgc3RhdGUgc3RyKVxuICAgICAgICApXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydFxuICAgICAgICAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgRWFnZXJfZGVmZXJyZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBzdGF0ZSAtPiBpbXBsIHN0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBScGNcbiAgICAgICAgKCBiaW5fcXVlcnlcbiAgICAgICAgLCBiaW5fcmVzcG9uc2VcbiAgICAgICAgLCAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICBsZXQlbWFwLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIFJwY1xuICAgICAgICAoIGJpbl9xdWVyeVxuICAgICAgICAsIGJpbl9yZXNwb25zZVxuICAgICAgICAsIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKCAoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKCAoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICAgbGV0JW1hcC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgIGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuKVxuICAgICAgICAsIERlZmVycmVkIClcbiAgICB8IFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH0gLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+XG4gICAgICAgICAgUGlwZVxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgfCBEaXJlY3QgaW1wbCAtPlxuICAgICAgICAgIERpcmVjdFxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIHcgLT5cbiAgICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgICAgaW1wbCBzdGF0ZSBxIHcpXG4gICAgICBpblxuICAgICAgU3RyZWFtaW5nX3JwYyB7IGJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uLnQgPVxuICB7IHRhZyA6IFJwY190YWcudFxuICA7IHZlcnNpb24gOiBpbnRcbiAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gIDsgc2hhcGVzIDogUnBjX3NoYXBlcy50IExhenkudFxuICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxubGV0IHNoYXBlcyB0ID0gZm9yY2UgdC5zaGFwZXNcblxubGV0IGxpZnQgKHR5cGUgYSBiKSAodCA6IGEgdCkgfihmIDogYiAtPiBhKSA6IGIgdCA9XG4gIHsgdCB3aXRoIGYgPSBGLmxpZnQgdC5mIH5mOihmdW4gYiAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIGIpKSB9XG47O1xuXG5sZXQgd2l0aF9hdXRob3JpemF0aW9uIHQgfmYgPSB7IHQgd2l0aCBmID0gRi5saWZ0IHQuZiB+ZiB9XG5sZXQgbGlmdF9kZWZlcnJlZCB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdF9kZWZlcnJlZCB0LmYgfmYgfVxubGV0IHVwZGF0ZV9vbl9leGNlcHRpb24gdCB+ZiA9IHsgdCB3aXRoIG9uX2V4Y2VwdGlvbiA9IGYgdC5vbl9leGNlcHRpb24gfVxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQcm90b2NvbC5ScGNfZXJyb3JcbmluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoUHJvdG9jb2wuUnBjX2Vycm9yKVxuXG5leGNlcHRpb24gUnBjIG9mIHQgKiBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHJhaXNlIHQgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA9IHJhaXNlIChScGMgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pKVxuXG5sZXQgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IENvbm5lY3Rpb25fY2xvc2VkIC0+XG4gICAgWyVzZXhwIGBDb25uZWN0aW9uX2Nsb3NlZCAoZ2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uICgpIDogU2V4cC50KV1cbiAgfCBCaW5faW9fZXhuIF9cbiAgfCBXcml0ZV9lcnJvciBfXG4gIHwgVW5jYXVnaHRfZXhuIF9cbiAgfCBVbmltcGxlbWVudGVkX3JwYyBfXG4gIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IHNleHBfb2ZfdCB0XG47O1xuXG4oKiBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1c3QgdGFrZSBhIFtDb25uZWN0aW9uLnRdLCBidXQgd2UgdGFrZSBpdHMgcGllY2VzIGluc3RlYWQgdG9cbiAgIGF2b2lkIGEgZGVwZW5kZW5jeSBjeWNsZSAqKVxubGV0IHRvX2Vycm9yXG4gICAgICB0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgRGVzY3JpcHRpb24ubmFtZSA9IHJwY19uYW1lOyB2ZXJzaW9uID0gcnBjX3ZlcnNpb24gfVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgPVxuICBsZXQgcnBjX2Vycm9yID1cbiAgICBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgIGxldCBjbG9zZV9yZWFzb24gPVxuICAgICAgICAoKiBVc3VhbGx5IChhbHdheXM/KSBoZXJlIHdlIHdpbGwgaGF2ZSB0aGUgZGVmZXJyZWQgYWxyZWFkeSBmdWxsXG4gICAgICAgICAgIGJlY2F1c2UgQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeVxuICAgICAgICAgICBjbG9zZWQgKilcbiAgICAgICAgRGVmZXJyZWQucGVlayBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIGluXG4gICAgICBbJXNleHAgKGNsb3NlX3JlYXNvbiA6IEluZm8udCBvcHRpb24pXSlcbiAgaW5cbiAgRXJyb3IuY3JlYXRlX3NcbiAgICBbJXNleHBcbiAgICAgIHsgcnBjX2Vycm9yIDogU2V4cC50XG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgcnBjX25hbWUgOiBzdHJpbmdcbiAgICAgIDsgcnBjX3ZlcnNpb24gOiBpbnRcbiAgICAgIH1dXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbG9jYWxfc3RvcmFnZV9rZXkgPVxuICBVbml2X21hcC5LZXkuY3JlYXRlIH5uYW1lOlwiYXN5bmNfcnBjX2tlcm5lbF9tZXRhZGF0YVwiIFslc2V4cF9vZjogdF1cbjs7XG5cbmxldCBnZXQgKCkgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5maW5kX2xvY2FsIGxvY2FsX3N0b3JhZ2Vfa2V5XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCB3aXRoX21ldGFkYXRhIG1ldGFkYXRhIH5mID1cbiAgICBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoX2xvY2FsIGxvY2FsX3N0b3JhZ2Vfa2V5IG1ldGFkYXRhIH5mXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSB0ID0gKCdhLCBScGNfZXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IHRdO1xuICBbJWV4cGVjdCB7fCA1ODczNGE2M2E1YzgzYzFiN2NiZmMzZmVkZmEzYWU4MiB8fV1cbjs7XG5cbnR5cGUgbG9jYXRlZF9lcnJvciA9XG4gIHsgbG9jYXRpb24gOiBzdHJpbmdcbiAgOyBleG4gOiBFeG4udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCBiaW5faW9fZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLkJpbl9pb19leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgdHJ5X3dpdGggP29uX2JhY2tncm91bmRfZXhjZXB0aW9uID9ydW4gfmxvY2F0aW9uIGYgPVxuICBsZXQgeCA9XG4gICAgbGV0IHJlc3QgPVxuICAgICAgbWF0Y2ggb25fYmFja2dyb3VuZF9leGNlcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGBMb2dcbiAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgIGluXG4gICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgfnJlc3RcbiAgICAgIH5ydW46KE9wdGlvbi52YWx1ZSBydW4gfmRlZmF1bHQ6YFNjaGVkdWxlKVxuICAgICAgZlxuICBpblxuICBsZXQgam9pbiA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4blxuICBpblxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIHggd2l0aFxuICB8IE5vbmUgLT4geCA+Pnwgam9pblxuICB8IFNvbWUgeCAtPiByZXR1cm4gKGpvaW4geClcbjs7XG5cbmxldCBvcl9lcnJvciB+cnBjX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgPVxuICBSZXN1bHQubWFwX2Vycm9yXG4gICAgfmY6XG4gICAgICAoUnBjX2Vycm9yLnRvX2Vycm9yXG4gICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZClcbjs7XG4iLCJvcGVuIENvcmVcblxuKCogdXRpbGl0eSBmdW5jdGlvbiBmb3IgYmluLWlvJ2luZyBvdXQgb2YgYSBCaWdzdHJpbmcudCAqKVxubGV0IGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAoYmluX3JlYWRlcl90IDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcilcbiAgICAgID9hZGRfbGVuXG4gICAgICBidWZcbiAgICAgIH5wb3NfcmVmXG4gICAgICB+KGxlbiA6IE5hdDAudClcbiAgICAgIH5sb2NhdGlvblxuICA9XG4gIHRyeVxuICAgIGxldCBpbml0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGRhdGEgPSBiaW5fcmVhZGVyX3QucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgYWRkX2xlbiA9XG4gICAgICBtYXRjaCBhZGRfbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgYWRkX2xlbiAtPiBhZGRfbGVuIGRhdGFcbiAgICBpblxuICAgIGlmICFwb3NfcmVmIC0gaW5pdF9wb3MgKyBhZGRfbGVuIDw+IChsZW4gOj4gaW50KVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICghcG9zX3JlZiAtIGluaXRfcG9zKVxuICAgICAgICAobGVuIDogTmF0MC50IDo+IGludClcbiAgICAgICAgKCk7XG4gICAgT2sgZGF0YVxuICB3aXRoXG4gIHwgZSAtPiBScGNfcmVzdWx0LmJpbl9pb19leG4gfmxvY2F0aW9uIGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxuKCogQ29tbXV0ZSBSZXN1bHQgYW5kIERlZmVycmVkLiAqKVxubGV0IGRlZmVyX3Jlc3VsdCA6ICdhICdiLiAoJ2EgRGVmZXJyZWQudCwgJ2IpIFJlc3VsdC50IC0+ICgnYSwgJ2IpIFJlc3VsdC50IERlZmVycmVkLnRcbiAgPSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gcmV0dXJuIGVyclxuICAgIHwgT2sgZCAtPlxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQlbWFwIHggPSBkIGluXG4gICAgICAgICBPayB4XG4gICAgICAgfCBTb21lIGQgLT4gcmV0dXJuIChPayBkKSlcbjs7XG5cbm1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICBbIGBSYWlzZVxuICB8IGBDb250aW51ZVxuICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gIHwgYENhbGwgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgPVxuICBbICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gIHwgYEV4cGVydCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gUmVzcG9uZGVyLnRcbiAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnMudCA9XG4gIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydFxuICB9XG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG5sZXQgZGVzY3JpcHRpb25zIHQgPSBIYXNodGJsLmtleXMgdC5pbXBsZW1lbnRhdGlvbnNcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID0gSW5zdGFuY2Uuc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgfCBEaXJlY3QgOlxuICAgICAgICAoXyBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50W0BzZXhwLm9wYXF1ZV0pXG4gICAgICAgIC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IChQLlF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB1bnBhY2tlZCA9ICdhIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICgnYSBpbXBsZW1lbnRhdGlvbnNbQHNleHAub3BhcXVlXSlcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiBzdHJlYW1pbmdfcmVzcG9uc2VzXG4gICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgOyBtdXRhYmxlXG4gICAgICBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAoRGVzY3JpcHRpb24udCAqICgnYSBJbXBsZW1lbnRhdGlvbi50W0BzZXhwLm9wYXF1ZV0pKSBvcHRpb25cbiAgICAoKiBbcGFja2VkX3NlbGZdIGlzIGhlcmUgc28gd2UgY2FuIGVzc2VudGlhbGx5IHBhY2sgYW4gdW5wYWNrZWQgaW5zdGFuY2Ugd2l0aG91dCBkb2luZ1xuICAgICAgIGFueSBhZGRpdGlvbmFsIGFsbG9jYXRpb24uICopXG4gICAgOyBwYWNrZWRfc2VsZiA6ICh0W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGFuZCB0ID0gSW5zdGFuY2UudCA9IFQgOiBfIHVucGFja2VkIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gWyVzZXhwX29mOiBfIHVucGFja2VkXSB0XG5cbiAgbGV0IHNlbmRfd3JpdGVfZXJyb3IgdCBpZCBzZXhwID1cbiAgICBsZXQgZGF0YSA6IF8gUC5NZXNzYWdlLnQgPSBSZXNwb25zZSB7IGlkOyBkYXRhID0gRXJyb3IgKFdyaXRlX2Vycm9yIHNleHApIH0gaW5cbiAgICBtYXRjaCBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgZGF0YSB3aXRoXG4gICAgfCBTZW50ICgpIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIFwiRmFpbGVkIHRvIHNlbmQgd3JpdGUgZXJyb3IgdG8gY2xpZW50XCJcbiAgICAgICAgLCB7IGVycm9yID0gKHNleHAgOiBTZXhwLnQpOyByZWFzb24gPSAociA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpIH1dXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkIChyZXN1bHQgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gKClcbiAgICB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgc2VuZF93cml0ZV9lcnJvciB0IGlkIChbJXNleHBfb2Y6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdIHIpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2UgdCBiaW5fd3JpdGVyIHggfmlkID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlbiBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBiaW5fd3JpdGVyIHggfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gfmlkID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0LndyaXRlciBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl9kYXRhIGRhdGEgPVxuICAgIGxldCBiaW5fd3JpdGVyID1cbiAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2RhdGEpXG4gICAgaW5cbiAgICB3cml0ZV9tZXNzYWdlIHQgfmlkIGJpbl93cml0ZXIgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgfSlcbiAgOztcblxuICBtb2R1bGUgQ2FjaGVkX2Jpbl93cml0ZXIgOiBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfYmluX3dyaXRlci50XG5cbiAgICB2YWwgY3JlYXRlIDogaWQ6UC5RdWVyeV9pZC50IC0+IGJpbl93cml0ZXI6J2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgdFxuICAgIHZhbCBwcmVwX3dyaXRlIDogJ2EgdCAtPiAnYSAtPiAoJ2EgdCAqICdhKSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIHZhbCBwcmVwX3dyaXRlX2V4cGVydCA6ICdhIHQgLT4gbGVuOmludCAtPiAnYSB0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgdmFsIHByZXBfd3JpdGVfc3RyaW5nIDogJ2EgdCAtPiBzdHJpbmcgLT4gKCdhIHQgKiBzdHJpbmcpIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9iaW5fd3JpdGVyLnQgPVxuICAgICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgICAgOyAoKiBMZW5ndGggb2YgdGhlIHVzZXIgZGF0YSBwYXJ0LiBXZSBzZXQgdGhpcyBmaWVsZCB3aGVuIHNlbmRpbmcgYSBtZXNzYWdlLiBUaGlzXG4gICAgICAgICAgIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIHRoZVxuICAgICAgICAgICBvbmx5IGFjY2VwdGFibGUgc2VtYW50aWNzIGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGFueXdheSwgYXMgaXQgZG9lc24ndCBrbm93IGlmXG4gICAgICAgICAgIHRoZSB2YWx1ZSBpcyBtdXRhYmxlIG9yIG5vdCkuXG5cbiAgICAgICAgICAgW2RhdGFfbGVuXSBpcyBwYXNzZWQgdG8gYmluLXByb3Qgd3JpdGVycyBieSBtdXRhdGluZyBbZGF0YV9sZW5dIGluc3RlYWQgb2YgYnlcbiAgICAgICAgICAgcGFzc2luZyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGF2b2lkIHNvbWUgYWxsb2NhdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIH1cblxuXG4gICAgdHlwZSB2b2lkID0gVm9pZFxuXG4gICAgbGV0IGJpbl9zaXplX3ZvaWQgVm9pZCA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3ZvaWQgX2J1ZiB+cG9zIFZvaWQgPSBwb3NcblxuICAgIHR5cGUgdm9pZF9tZXNzYWdlID0gdm9pZCBQLk1lc3NhZ2UubmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgIHR5cGUgdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHZvaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5uZWVkc19sZW5ndGhcbiAgICBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICAoKiBUaGlzIGlzIG5vdCByZS1lbnRyYW50IGJ1dCBBc3luYyBjb2RlIGFsd2F5cyBydW5zIG9uIG9uZSB0aHJlYWQgYXQgYSB0aW1lICopXG4gICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMzJcblxuICAgIGxldCBjYWNoZV9iaW5fcHJvdHRlZCAoYmluX3dyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXIud3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICBCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWZmZXIgfnBvczowIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+aWQgfmJpbl93cml0ZXIgOiBhIHQgPVxuICAgICAgbGV0IGhlYWRlcl9wcmVmaXggPVxuICAgICAgICBjYWNoZV9iaW5fcHJvdHRlZCBiaW5fd3JpdGVyX3ZvaWRfbWVzc2FnZSAoUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIFZvaWQgfSlcbiAgICAgIGluXG4gICAgICB7IGhlYWRlcl9wcmVmaXg7IGJpbl93cml0ZXI7IGRhdGFfbGVuID0gTmF0MC5vZl9pbnRfZXhuIDAgfVxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIGlzIGEgY29uc3RhbnQsIG1ha2UgaXQgYSBsaXRlcmFsIHRvIG1ha2UgdGhlXG4gICAgICAgd3JpdGluZyBjb2RlIHNsaWdodGx5IGZhc3Rlci4gKilcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiA9IDRcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyID0gMHg4YTc5bFxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInN0cmVhbV9yZXNwb25zZV8qIGNvbnN0YW50cyBhcmUgY29ycmVjdFwiID1cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBiaW5fd3JpdGVyX3ZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEud3JpdGVcbiAgICAgICAgICBidWZmZXJcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICAoYE9rIFZvaWQgOiB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhKVxuICAgICAgaW5cbiAgICAgIGFzc2VydCAobGVuID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbik7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQzMl90X2xlIGJ1ZmZlciB+cG9zOjBcbiAgICAgICAgPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHIgPVxuICAgICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgICAgKCogVmVyeSBsb3ctbGV2ZWwgYmluX3Byb3Qgc3R1ZmYuLi4gKilcbiAgICAgIEJpbl9wcm90LkNvbW1vbi5hc3NlcnRfcG9zIHBvcztcbiAgICAgIGxldCBuZXh0ID0gcG9zICsgc3RyX2xlbiBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaW5fcHJvdC5Db21tb24udW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3Bvczpwb3MgYnVmIH5sZW46c3RyX2xlbjtcbiAgICAgIG5leHRcbiAgICA7O1xuXG4gICAgKCogVGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSAzIHZhcmlhbnRzIGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUuIFRoZXlcbiAgICAgICBzZXJpYWxpemUgYSBbUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIChgT2sgZGF0YV9sZW4pIH1dIHZhbHVlLCB0YWtpbmcgY2FyZSBvZlxuICAgICAgIHdyaXRpbmcgdGhlIFtOYXQwLnRdIGxlbmd0aCBwcmVmaXggd2hlcmUgYXBwcm9yaWF0ZS5cblxuICAgICAgIEJlYXIgaW4gbWluZCB0aGF0IHRoZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGxlbmd0aCBwcmVmaXhlcyBmb3Igc3RyZWFtIHJlc3BvbnNlIGRhdGFcbiAgICAgICBtZXNzYWdlOiBvbmUgZm9yIHRoZSB1c2VyIGRhdGEgKHVuZGVyIHRoZSBgT2ssIGJlZm9yZSB0aGUgYWN0dWFsIGRhdGEpLCBhbmQgb25lIGZvclxuICAgICAgIHRoZSByZXNwb25zZSBkYXRhICh1bmRlciB0aGUgLmRhdGEgZmllbGQsIGJlZm9yZSB0aGUgT2spLiAqKVxuICAgIGxldCBiaW5fc2l6ZV9uYXQwX2hlYWRlciB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgU3RyaW5nLmxlbmd0aCBoZWFkZXJfcHJlZml4XG4gICAgICArIE5hdDAuYmluX3NpemVfdCAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbilcbiAgICAgICsgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIGhlYWRlcl9wcmVmaXggaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuXG4gICAgICAgICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICAgICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbikgaW5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQzMl90X2xlIGJ1ZiB+cG9zIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMjtcbiAgICAgIE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3M6bmV4dCBkYXRhX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbmF0MF9oZWFkZXI7IHdyaXRlID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2UgKHQsIF8pID0gYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZSBidWYgfnBvcyAodCwgZGF0YSkgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICB0LmJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nICh0LCBfKSA9XG4gICAgICBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIGJ1ZiB+cG9zICh0LCBzdHIpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZzsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgfVxuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZSB0IGRhdGEgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKHQuYmluX3dyaXRlci5zaXplIGRhdGEpO1xuICAgICAgYmluX3dyaXRlcl9tZXNzYWdlXG4gICAgOztcblxuICAgIGxldCBwcmVwX3dyaXRlX3N0cmluZyB0IHN0ciA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAoU3RyaW5nLmxlbmd0aCBzdHIpO1xuICAgICAgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZV9leHBlcnQgdCB+bGVuID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIGxlbjtcbiAgICAgIGJpbl93cml0ZXJfbmF0MF9oZWFkZXJcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG4gICAgbW9kdWxlIFN0YXRlID0gVC5TdGF0ZVxuICAgIG1vZHVsZSBJZCA9IFQuSWRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9XG4gICAgICB7IGlkIDogSWQudFxuICAgICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBpbnN0YW5jZSA6IEluc3RhbmNlLnRcbiAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9iaW5fd3JpdGVyLnRcbiAgICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICAgIH1cblxuICAgIGFuZCAnYSBncm91cF9lbnRyeSA9ICdhIFQuZ3JvdXBfZW50cnkgPVxuICAgICAgeyBncm91cCA6ICdhIFQuR3JvdXAudFxuICAgICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICAgIH1cblxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgIGxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxuXG4gICAgbGV0IGZsdXNoZWQgdCA9XG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgVHJhbnNwb3J0LldyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlclxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlciB0ID0gdC5zdHJlYW1fd3JpdGVyLmJpbl93cml0ZXJcblxuICAgIGxldCB3cml0ZV9lb2YgeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gPVxuICAgICAgd3JpdGVfcmVzcG9uc2UgaW5zdGFuY2UgcXVlcnlfaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZilcbiAgICA7O1xuXG4gICAgKCogW3dyaXRlX21lc3NhZ2Vfc3RyaW5nXSBhbmQgW3dyaXRlX21lc3NhZ2VdIGJvdGggYWxsb2NhdGUgMyB3b3JkcyBmb3IgdGhlIHR1cGxlcy5cbiAgICAgICBbd3JpdGVfbWVzc2FnZV9leHBlcnRdIGRvZXMgbm90IGFsbG9jYXRlLiAqKVxuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA9XG4gICAgICAgIENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGVfc3RyaW5nIHQuc3RyZWFtX3dyaXRlciB4XG4gICAgICBpblxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIHdyaXRlX21lc3NhZ2VcbiAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgfmlkOnQucXVlcnlfaWRcbiAgICAgICAgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZ1xuICAgICAgICAodC5zdHJlYW1fd3JpdGVyLCB4KVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZSB0IHggPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA9IENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGUgdC5zdHJlYW1fd3JpdGVyIHggaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZDp0LnF1ZXJ5X2lkIGJpbl93cml0ZXJfbWVzc2FnZSAodC5zdHJlYW1fd3JpdGVyLCB4KVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlID0gQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZV9leHBlcnQgdC5zdHJlYW1fd3JpdGVyIH5sZW4gaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlX2V4cGVydFxuICAgICAgICBpbnN0YW5jZVxuICAgICAgICB+aWQ6dC5xdWVyeV9pZFxuICAgICAgICBiaW5fd3JpdGVyX21lc3NhZ2VcbiAgICAgICAgdC5zdHJlYW1fd3JpdGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdCA9XG4gICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCB0LmNsb3NlZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgICAgIGxldCBncm91cHMgPSB0Lmdyb3VwcyBpblxuICAgICAgICBpZiBub3QgKEJhZy5pc19lbXB0eSBncm91cHMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGUuVmVyeV9sb3dfcHJpb3JpdHlfd29yay5lbnF1ZXVlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJhZy5yZW1vdmVfb25lIGdyb3VwcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gRmluaXNoZWRcbiAgICAgICAgICAgIHwgU29tZSB7IGdyb3VwOyBlbGVtZW50X2luX2dyb3VwIH0gLT5cbiAgICAgICAgICAgICAgQmFnLnJlbW92ZSBncm91cC5jb21wb25lbnRzIGVsZW1lbnRfaW5fZ3JvdXA7XG4gICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHNfYnlfaWQgdC5pZDtcbiAgICAgICAgICAgICAgTm90X2ZpbmlzaGVkKTtcbiAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgIHwgTm90X3N0YXJ0ZWQgXyAtPiAoKVxuICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfZW9mIHQpXG4gICAgOztcblxuICAgIGxldCBjbG9zZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gYXMgdCkgPVxuICAgICAgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQ7XG4gICAgICBIYXNodGJsLnJlbW92ZSBpbnN0YW5jZS5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnlfaWRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+IFF1ZXVlLmVucXVldWUgcSAoTm9ybWFsIHgpXG4gICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZSB0IHgpO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB4ID1cbiAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4IHdpdGhcbiAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICAgICAgIFF1ZXVlLmVucXVldWUgcSAoRXhwZXJ0IChCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWYgfnBvcyB+bGVuKSlcbiAgICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4pO1xuICAgICAgICAgIGBPaylcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHN0YXJ0IHQgPVxuICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICB8IFN0YXJ0ZWQgLT4gZmFpbHdpdGggXCJhdHRlbXB0ZWQgdG8gc3RhcnQgd3JpdGVyIHdoaWNoIHdhcyBhbHJlYWR5IHN0YXJ0ZWRcIlxuICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgIHQuc3RhdGUgPC0gU3RhcnRlZDtcbiAgICAgICAgUXVldWUuaXRlciBxIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9ybWFsIHggLT4gd3JpdGVfbWVzc2FnZSB0IHhcbiAgICAgICAgICB8IEV4cGVydCB4IC0+IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCk7XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZCB0aGVuIHdyaXRlX2VvZiB0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvblxuICAgICAgICAocmVzdWx0IDogKF8sIFJwY19lcnJvci50KSBSZXN1bHQudClcbiAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChVbmNhdWdodF9leG4gc2V4cCkgLT5cbiAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICB8IEVycm9yIF8gfCBPayBfIC0+ICgpXG4gIDs7XG5cbiAgbGV0IGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kID1cbiAgICBsZXQgZXhuID0gRXJyb3IudG9fZXhuIGVycm9yIGluXG4gICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgIGV4blxuICAgICAgfmxvY2F0aW9uOlslc3RyaW5nIFwic2VydmVyLXNpZGUgJXtycGNfa2luZH0gYXV0aG9yaXphdGlvblwiXVxuICA7O1xuXG4gIGxldCBhcHBseV9zdHJlYW1pbmdfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICB7IEltcGxlbWVudGF0aW9uLkYuYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9XG4gICAgICAgIH5sZW5cbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5pZFxuICAgICAgICB+KG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50KVxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+bGVuXG4gICAgICAgIH5sb2NhdGlvbjpcInN0cmVhbWluZ19ycGMgc2VydmVyLXNpZGUgcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgaW5cbiAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5wYWNrZWRfc2VsZiBpblxuICAgIGxldCBzdHJlYW1fd3JpdGVyID0gQ2FjaGVkX2Jpbl93cml0ZXIuY3JlYXRlIH5pZCB+YmluX3dyaXRlcjpiaW5fdXBkYXRlX3dyaXRlciBpblxuICAgIGxldCBpbXBsX3dpdGhfc3RhdGUgPVxuICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICB8IFBpcGUgZiAtPiBgUGlwZSBmXG4gICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgIGxldCB3cml0ZXIgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgICAgIHsgaWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5JZC5jcmVhdGUgKClcbiAgICAgICAgICA7IHN0YXRlID0gTm90X3N0YXJ0ZWQgKFF1ZXVlLmNyZWF0ZSAoKSlcbiAgICAgICAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgICAgOyBpbnN0YW5jZSA9IHQucGFja2VkX3NlbGZcbiAgICAgICAgICA7IHF1ZXJ5X2lkID0gaWRcbiAgICAgICAgICA7IGdyb3VwcyA9IEJhZy5jcmVhdGUgKClcbiAgICAgICAgICA7IHN0cmVhbV93cml0ZXJcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6aWQgfmRhdGE6KERpcmVjdCB3cml0ZXIpO1xuICAgICAgICBgRGlyZWN0IChmLCB3cml0ZXIpXG4gICAgaW5cbiAgICBsZXQgcnVuX2ltcGwgaW1wbCBzcGxpdF9vayBoYW5kbGVfb2sgPVxuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIFJwY19yZXN1bHQudHJ5X3dpdGhcbiAgICAgICAgICA/b25fYmFja2dyb3VuZF9leGNlcHRpb246b25fZXhjZXB0aW9uLmNhbGxiYWNrXG4gICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKGRhdGEgPj58fiBpbXBsKSlcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBjb21wdXRhdGlvblwiXG4gICAgICBpblxuICAgICAgRWFnZXJfZGVmZXJyZWQudXBvbiByZXN1bHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gc2V4cCBhcyBlcnIpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycik7XG4gICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG5cbiAgICAgICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgICAgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpXG4gICAgICAgIHwgT2sgKE9yX25vdF9hdXRob3JpemVkLk5vdF9hdXRob3JpemVkIGVycm9yKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgYmluX2luaXRfd3JpdGVyXG4gICAgICAgICAgICAoYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJwaXBlX3JwY1wiKVxuICAgICAgICB8IE9rIChBdXRob3JpemVkIChFcnJvciBlcnJvcikpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKE9rIGVycm9yKVxuICAgICAgICB8IE9rIChBdXRob3JpemVkIChPayBvaykpIC0+XG4gICAgICAgICAgbGV0IGluaXRpYWwsIHJlc3QgPSBzcGxpdF9vayBvayBpblxuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBpbml0aWFsKTtcbiAgICAgICAgICBoYW5kbGVfb2sgcmVzdClcbiAgICBpblxuICAgIG1hdGNoIGltcGxfd2l0aF9zdGF0ZSB3aXRoXG4gICAgfCBgUGlwZSBmIC0+XG4gICAgICBydW5faW1wbFxuICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSlcbiAgICAgICAgRm4uaWRcbiAgICAgICAgKGZ1biBwaXBlX3IgLT5cbiAgICAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTppZCB+ZGF0YTooUGlwZSBwaXBlX3IpO1xuICAgICAgICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAgICAgIChXcml0ZXIudHJhbnNmZXIgdC53cml0ZXIgcGlwZV9yIChmdW4gZGF0YSAtPlxuICAgICAgICAgICAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgPSBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlIHN0cmVhbV93cml0ZXIgZGF0YSBpblxuICAgICAgICAgICAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbWVzc2FnZSAoc3RyZWFtX3dyaXRlciwgZGF0YSkpKTtcbiAgICAgICAgICAgUGlwZS5jbG9zZWQgcGlwZV9yXG4gICAgICAgICAgID4+PiBmdW4gKCkgLT5cbiAgICAgICAgICAgUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGVfclxuICAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICAgfCBgT2sgfCBgUmVhZGVyX2Nsb3NlZCAtPlxuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZik7XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQpXG4gICAgfCBgRGlyZWN0IChmLCB3cml0ZXIpIC0+XG4gICAgICBydW5faW1wbFxuICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSB3cml0ZXIpXG4gICAgICAgIChmdW4geCAtPiB4LCAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5zdGFydCB3cml0ZXIpXG4gIDs7XG5cbiAgbGV0IGFwcGx5X2ltcGxlbWVudGF0aW9uJ1xuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGxldCBpZCA9IHF1ZXJ5LmlkIGluXG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5IChiaW5fcXVlcnlfcmVhZGVyLCBmKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgbWVzc2FnZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcXVlcnlfY29udGVudHMgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gU3RvcCBlcnJcbiAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgICgqIFdlIGRvbid0IGNsb3NlIGNvbm5lY3Rpb25zIG9uIHVuYXV0aG9yaXplZCBSUENzLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG9cbiAgICAgICAgICAgICAgIGNvbW11bmljYXRlIGZhaWx1cmUgYmFjayB0byB0aGUgc2VuZGVyIGluIG9uZS13YXkgcnBjcywgd2UgZG8gbm90aGluZy4gVGhlXG4gICAgICAgICAgICAgICBkZWZlcnJlZCAoYW5kIGFueSBkZWZlcnJlZCBleGNlcHRpb25zKSBhcmUgZHJvcHBlZCBoZXJlIGFzIGEgY29uc2VxdWVuY2Ugb2ZcbiAgICAgICAgICAgICAgIFtsaWZ0X2RlZmVycmVkXSBleGlzdGluZyBmb3Igb25lLXdheSBycGNzLiBXZSB1c2UgW0VhZ2VyX2RlZmVycmVkXSBzbyBpblxuICAgICAgICAgICAgICAgdGhlIG5vbi1ibG9ja2luZyBjYXNlcyB0aGlzIHdpbGwgc3RpbGwgcnVuIHN5bmNocm9ub3VzbHkuICopXG4gICAgICAgICAgICBsZXQgKF8gOiBfIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgPSBmIHQuY29ubmVjdGlvbl9zdGF0ZSBxIGluXG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgICAgaWYgb25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFN0b3BcbiAgICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBjb21wdXRhdGlvblwiKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZSkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLk9uZV93YXlfZXhwZXJ0IGYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICBsZXQgKF8gOiBfIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgPVxuICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgIGluXG4gICAgICAgICByZWFkX2J1ZmZlcl9wb3NfcmVmIDo9ICFyZWFkX2J1ZmZlcl9wb3NfcmVmICsgbGVuO1xuICAgICAgICAgQ29udGludWVcbiAgICAgICB3aXRoXG4gICAgICAgfCBleG4gLT5cbiAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgdGhlblxuICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCIpXG4gICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGMgKGJpbl9xdWVyeV9yZWFkZXIsIGJpbl9yZXNwb25zZV93cml0ZXIsIGYsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIGxldCBvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIHJlc3VsdCAtPiBPayByZXN1bHRcbiAgICAgICAgfCBOb3RfYXV0aG9yaXplZCBlcnJvciAtPiBhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInJwY1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuQmxvY2tpbmcgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgIFJlc3VsdC5iaW5kIHF1ZXJ5X2NvbnRlbnRzIH5mOihmdW4gcXVlcnkgLT5cbiAgICAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcXVlcnkgfD4gb3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdClcbiAgICAgICAgICAgIHw+IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlclxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgKCogSW4gdGhlIFtEZWZlcnJlZF0gYnJhbmNoIHdlIHVzZSBbTW9uaXRvci50cnlfd2l0aF0sIHdoaWNoIGluY2x1ZGVzXG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIHdoZW4gaXQgY2F0Y2hlcyBhbiBleGNlcHRpb24uIEZvciBjb25zaXN0ZW5jeSwgd2UgYWxzbyBnZXRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgaGVyZS4gKilcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICBsZXQgc2V4cCA9XG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsgbG9jYXRpb24gPSBcInNlcnZlci1zaWRlIGJsb2NraW5nIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgICAgOyBleG4gOiBleG5cbiAgICAgICAgICAgICAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgKEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHApKTtcbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bilcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT5cbiAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgKCogV2UgZ2VuZXJhbGx5IHRyeSB0byB3cml0ZSBhIHJlc3BvbnNlIGJlZm9yZSBoYW5kbGluZyBbb25fZXhjZXB0aW9uXSBzbyBpZiB3ZVxuICAgICAgICAgICAgICBhcmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3ZSBzdGlsbCBhY3R1YWxseSBzZW5kIHRoZSByZXNwb25zZSBiYWNrLiBXaGVuIHdlXG4gICAgICAgICAgICAgIHBhc3MgW29uX2V4Y2VwdGlvbi5jYWxsYmFja10gaGVyZSwgd2UgYXJlIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgcmFpc2VkXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnMgbm90IHRvIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgY2xpZW50IChlLmcuIGlmIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgICByYWlzZXMgYm90aCBhc3luY2hyb25vdXNseSBhbmQgc3luY2hyb25vdXNseSkuIFRoaXMgd291bGQgYmUgaGFyZCB0byBoYW5kbGVcbiAgICAgICAgICAgICAgaW4gYSBtb3JlIHByaW5jaXBsZWQgd2F5LiAqKVxuICAgICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgICAgIH5ydW46YE5vd1xuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIGVycilcbiAgICAgICAgICAgICAgICB8IE9rIHF1ZXJ5IC0+XG4gICAgICAgICAgICAgICAgICBFYWdlcl9kZWZlcnJlZC5tYXBcbiAgICAgICAgICAgICAgICAgICAgKGYgdC5jb25uZWN0aW9uX3N0YXRlIHF1ZXJ5KVxuICAgICAgICAgICAgICAgICAgICB+Zjpvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0KVxuICAgICAgICAgaW5cbiAgICAgICAgICgqIEluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgdmFsdWUgaW1tZWRpYXRlbHksIHdlIHdpbGxcbiAgICAgICAgICAgIHdyaXRlIHRoZSByZXNwb25zZSBpbW1lZGlhdGVseSBhcyB3ZWxsICh0aGlzIGlzIGFsc28gd2h5IHRoZSBhYm92ZSBbdHJ5X3dpdGhdXG4gICAgICAgICAgICBoYXMgW35ydW46YE5vd10pLiAgVGhpcyBjYW4gYmUgYSBiaWcgcGVyZm9ybWFuY2Ugd2luIGZvciBzZXJ2ZXJzIHRoYXQgZ2V0IG1hbnlcbiAgICAgICAgICAgIHF1ZXJpZXMgaW4gYSBzaW5nbGUgQXN5bmMgY3ljbGUuICopXG4gICAgICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgID4+PiBmdW4gZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSk7XG4gICAgICBDb250aW51ZVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGNfZXhwZXJ0IChmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCByZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLmNyZWF0ZSBxdWVyeS5pZCB0LndyaXRlciBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICAoKiBXZSBuZWVkIHRoZSBbTW9uaXRvci50cnlfd2l0aF0gZXZlbiBmb3IgdGhlIGJsb2NraW5nIG1vZGUgYXMgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIG1pZ2h0IHJldHVybiBbRGVsYXllZF9yZXBvbnNlXSwgc28gd2UgZG9uJ3QgYm90aGVyIG9wdGltaXppbmcgdGhlIGJsb2NraW5nXG4gICAgICAgICAgIG1vZGUuICopXG4gICAgICAgIGxldCByZXN0ID1cbiAgICAgICAgICBtYXRjaCBvbl9leGNlcHRpb24uY2FsbGJhY2sgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYExvZ1xuICAgICAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgICAgICBpblxuICAgICAgICBNb25pdG9yLnRyeV93aXRoIH5yZXN0IH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlc3BvbmRlciByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT4gcmVzdWx0XG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+IERlZmVycmVkLnJldHVybiByZXN1bHQpXG4gICAgICBpblxuICAgICAgbGV0IGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IGV4biA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuIGV4biB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCJcbiAgICAgIGluXG4gICAgICBsZXQgaGFuZGxlX2V4biByZXN1bHQgPVxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgICAgdGhlbiByZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl91bml0IHJlc3VsdDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICBpblxuICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICBsZXQgY2hlY2tfcmVzcG9uZGVkICgpID1cbiAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBoYW5kbGVfZXhuXG4gICAgICAgICAgICAoY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgKEZhaWx1cmUgXCJFeHBlcnQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCByZXBseVwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgZCA9XG4gICAgICAgIGxldCBvcGVuIEVhZ2VyX2RlZmVycmVkLkxldF9zeW50YXggaW5cbiAgICAgICAgbWF0Y2glbWFwIGQgd2l0aFxuICAgICAgICB8IE9rIChBdXRob3JpemVkIHJlc3VsdCkgLT5cbiAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgfCBSZXBsaWVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBkIC0+IGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZFxuICAgICAgICAgIHRoZW4gY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB1cG9uIGQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICAgICAgfD4gUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgfD4gb2tfZXhuKTtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICB8IE9rIChOb3RfYXV0aG9yaXplZCBlcnJvcikgLT5cbiAgICAgICAgICBoYW5kbGVfZXhuIChhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInJwYyBleHBlcnRcIilcbiAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gaGFuZGxlX2V4biAoY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgZXhuKSBpblxuICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFdhaXRcbiAgICAgICAgICAgKGxldCVtYXAgciA9IGQgaW5cbiAgICAgICAgICAgIG9rX2V4blxuICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgICAgIHIpKVxuICAgICAgIHwgU29tZSByZXN1bHQgLT5cbiAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgICB8IEVycm9yIF8gLT4gU3RvcCByZXN1bHQpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5TdHJlYW1pbmdfcnBjIHN0cmVhbWluZ19ycGMgLT5cbiAgICAgIGxldCBzdHJlYW1fcXVlcnkgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIFAuU3RyZWFtX3F1ZXJ5LmJpbl9yZWFkZXJfbmF0MF90XG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgc3RyZWFtX3F1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgIH5hZGRfbGVuOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgQWJvcnQgLT4gMFxuICAgICAgICAgICAgfCBgUXVlcnkgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzdHJlYW1fcXVlcnkgd2l0aFxuICAgICAgIHwgRXJyb3IgX2VyciAtPiAoKVxuICAgICAgIHwgT2sgYEFib3J0IC0+XG4gICAgICAgICAoKiBOb3RlIHRoYXQgdGhlcmUncyBzb21lIGRlbGF5IGJldHdlZW4gd2hlbiB3ZSByZWNlaXZlIGEgcGlwZSBSUEMgcXVlcnkgYW5kXG4gICAgICAgICAgICB3aGVuIHdlIHB1dCBzb21ldGhpbmcgaW4gW29wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc10gKHdlIHdhaXQgZm9yXG4gICAgICAgICAgICBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gdG8gcmV0dXJuKS4gRHVyaW5nIHRoaXMgdGltZSwgYW4gYWJvcnQgbWVzc2FnZSB3b3VsZFxuICAgICAgICAgICAganVzdCBiZSBpZ25vcmVkLiBUaGUgZGlzcGF0Y2hlciBjYW4ndCBhYm9ydCB0aGUgcXVlcnkgd2hpbGUgdGhpcyBpc1xuICAgICAgICAgICAgaGFwcGVuaW5nLCB0aG91Z2gsIHNpbmNlIHRoZSBpbnRlcmZhY2UgZG9lc24ndCBleHBvc2UgdGhlIElEIHJlcXVpcmVkIHRvXG4gICAgICAgICAgICBhYm9ydCB0aGUgcXVlcnkgdW50aWwgYWZ0ZXIgYSByZXNwb25zZSBoYXMgYmVlbiByZXR1cm5lZC4gKilcbiAgICAgICAgIE9wdGlvbi5pdGVyIChIYXNodGJsLmZpbmQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnkuaWQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IFBpcGUgcGlwZSAtPiBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICAgICAgICAgICB8IERpcmVjdCB3IC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHcpXG4gICAgICAgfCBPayAoYFF1ZXJ5IGxlbikgLT5cbiAgICAgICAgIGFwcGx5X3N0cmVhbWluZ19pbXBsZW1lbnRhdGlvblxuICAgICAgICAgICB0XG4gICAgICAgICAgIHN0cmVhbWluZ19ycGNcbiAgICAgICAgICAgfmxlblxuICAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgfmlkXG4gICAgICAgICAgIH5vbl9leGNlcHRpb25cbiAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcik7XG4gICAgICBDb250aW51ZVxuICA7O1xuXG4gIGxldCBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uJ1xuICAgICAgdFxuICAgICAgaW1wbGVtZW50YXRpb25cbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfm9uX2V4Y2VwdGlvblxuICA7O1xuXG4gIGxldCBmbHVzaCAoVCB0KSA9XG4gICAgYXNzZXJ0IChub3QgdC5zdG9wcGVkKTtcbiAgICBsZXQgcHJvZHVjZXJzX2ZsdXNoZWQgPVxuICAgICAgSGFzaHRibC5mb2xkIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5pbml0OltdIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPlxuICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgfCBEaXJlY3QgXyAtPiBhY2NcbiAgICAgICAgfCBQaXBlIHBpcGUgLT4gRGVmZXJyZWQuaWdub3JlX20gKFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlKSA6OiBhY2MpXG4gICAgaW5cbiAgICBEZWZlcnJlZC5hbGxfdW5pdCBwcm9kdWNlcnNfZmx1c2hlZFxuICA7O1xuXG4gIGxldCBzdG9wIChUIHQpID1cbiAgICB0LnN0b3BwZWQgPC0gdHJ1ZTtcbiAgICBIYXNodGJsLml0ZXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IERpcmVjdCB3cml0ZXIgLT5cbiAgICAgICAgKCogRG9uJ3QgcmVtb3ZlIHRoZSB3cml0ZXIgZnJvbSB0aGUgaW5zdGFuY2UsIGFzIHRoYXQgd291bGQgbW9kaWZ5IHRoZSBoYXNodGFibGVcbiAgICAgICAgICAgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyBvdmVyLiAqKVxuICAgICAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2Ugd3JpdGVyXG4gICAgICB8IFBpcGUgXyAtPiAoKSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICA7O1xuXG4gIGxldCBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgYFJhaXNlIC0+IFJwY19lcnJvci5yYWlzZSBlcnJvciB0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgIHwgYENhbGwgZiAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBmXG4gICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS5QLlF1ZXJ5LnRhZylcbiAgICAgICAgICAgfnZlcnNpb246cXVlcnkudmVyc2lvblxuICAgICAgIHdpdGhcbiAgICAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgdFxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbGV0IHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9ID0gdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gOiBEZXNjcmlwdGlvbi50ID1cbiAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBTb21lIChsYXN0X2Rlc2MsIGltcGxlbWVudGF0aW9uKSB3aGVuIERlc2NyaXB0aW9uLmVxdWFsIGxhc3RfZGVzYyBkZXNjcmlwdGlvbiAtPlxuICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPlxuICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBpbXBsZW1lbnRhdGlvbnMgZGVzY3JpcHRpb24gd2l0aFxuICAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbiAtPlxuICAgICAgICAgdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPC0gU29tZSAoZGVzY3JpcHRpb24sIGltcGxlbWVudGF0aW9uKTtcbiAgICAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIHRcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgICAgICAgfCBgRXhwZXJ0IGltcGwgLT5cbiAgICAgICAgICAgIGxldCB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSAoXyA6IHN0cmluZyBvcHRpb24pOyBkYXRhID0gbGVuIH0gPVxuICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbmRlciA9IFJlc3BvbmRlci5jcmVhdGUgaWQgdC53cml0ZXIgaW5cbiAgICAgICAgICAgICAgaW1wbFxuICAgICAgICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHRhZylcbiAgICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICAgIHJlc3BvbmRlclxuICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgIH5sZW46KGxlbiA6PiBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gQ29udGludWUgZWxzZSBXYWl0IGRcbiAgICAgICAgICB8IChgQ29udGludWUgfCBgUmFpc2UgfCBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDYWxsIF8pIGFzIG9uX3Vua25vd25fcnBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBScGNfZXJyb3IuVW5pbXBsZW1lbnRlZF9ycGMgKHF1ZXJ5LnRhZywgYFZlcnNpb24gcXVlcnkudmVyc2lvbikgaW5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgcXVlcnkuaWQgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IChFcnJvciBlcnJvcik7XG4gICAgICAgICAgICBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeVxuICAgICAgICAoVCB0KVxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgaWYgdC5zdG9wcGVkIHx8IFdyaXRlci5pc19jbG9zZWQgdC53cml0ZXJcbiAgICB0aGVuIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC5TdG9wIChPayAoKSlcbiAgICBlbHNlXG4gICAgICBScGNfbWV0YWRhdGEuUHJpdmF0ZS53aXRoX21ldGFkYXRhIHF1ZXJ5Lm1ldGFkYXRhIH5mOihmdW4gKCkgLT5cbiAgICAgICAgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH5xdWVyeVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBJbnN0YW5jZS5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5sZXQgY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnM6aSdzIH5vbl91bmtub3duX3JwYyA9XG4gICgqIE1ha2Ugc3VyZSB0aGUgdGFncyBhcmUgdW5pcXVlLiAqKVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gRGVzY3JpcHRpb24uVGFibGUuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIGxldCBkdXBzID0gRGVzY3JpcHRpb24uSGFzaF9zZXQuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIExpc3QuaXRlciBpJ3MgfmY6KGZ1biAoaSA6IF8gSW1wbGVtZW50YXRpb24udCkgLT5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgeyBEZXNjcmlwdGlvbi5uYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBpLnRhZzsgdmVyc2lvbiA9IGkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCBIYXNodGJsLmFkZCBpbXBsZW1lbnRhdGlvbnMgfmtleTpkZXNjcmlwdGlvbiB+ZGF0YTppIHdpdGhcbiAgICB8IGBPayAtPiAoKVxuICAgIHwgYER1cGxpY2F0ZSAtPiBIYXNoX3NldC5hZGQgZHVwcyBkZXNjcmlwdGlvbik7XG4gIGlmIG5vdCAoSGFzaF9zZXQuaXNfZW1wdHkgZHVwcylcbiAgdGhlbiBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgKEhhc2hfc2V0LnRvX2xpc3QgZHVwcykpXG4gIGVsc2UgT2sgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIDo+IF8gb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgfVxuOztcblxubGV0IGluc3RhbnRpYXRlXG4gICAgICB0XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJcbiAgPVxuICBsZXQgcmVjIHVucGFja2VkIDogXyBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgPSB0XG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGVcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgIDsgc3RvcHBlZCA9IGZhbHNlXG4gICAgOyBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPSBOb25lXG4gICAgOyBwYWNrZWRfc2VsZiA9IEluc3RhbmNlLlQgdW5wYWNrZWRcbiAgICB9XG4gIGluXG4gIHVucGFja2VkLnBhY2tlZF9zZWxmXG47O1xuXG5leGNlcHRpb24gRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBvZiBEZXNjcmlwdGlvbi50IGxpc3QgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgPVxuICBtYXRjaCBjcmVhdGUgfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKVxuOztcblxubGV0IG51bGwgKCkgPSBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnM6W10gfm9uX3Vua25vd25fcnBjOmBSYWlzZVxuXG5sZXQgYWRkX2V4biB0IChpbXBsZW1lbnRhdGlvbiA6IF8gSW1wbGVtZW50YXRpb24udCkgPVxuICBsZXQgZGVzYyA6IERlc2NyaXB0aW9uLnQgPVxuICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaW1wbGVtZW50YXRpb24udGFnOyB2ZXJzaW9uID0gaW1wbGVtZW50YXRpb24udmVyc2lvbiB9XG4gIGluXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLmNvcHkgdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzYyB+ZGF0YTppbXBsZW1lbnRhdGlvbiB3aXRoXG4gIHwgYER1cGxpY2F0ZSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBbIGRlc2MgXSlcbiAgfCBgT2sgLT4geyB0IHdpdGggaW1wbGVtZW50YXRpb25zIH1cbjs7XG5cbmxldCBhZGQgdCBpbXBsZW1lbnRhdGlvbiA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gYWRkX2V4biB0IGltcGxlbWVudGF0aW9uKVxuXG5sZXQgbGlmdCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSB+ZiA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLm1hcCBpbXBsZW1lbnRhdGlvbnMgfmY6KEltcGxlbWVudGF0aW9uLmxpZnQgfmYpIGluXG4gIGxldCBvbl91bmtub3duX3JwYyA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgKGBSYWlzZSB8IGBDb250aW51ZSB8IGBDbG9zZV9jb25uZWN0aW9uKSBhcyB4IC0+IHhcbiAgICB8IGBDYWxsIGNhbGwgLT4gYENhbGwgKGZ1biBzdGF0ZSAtPiBjYWxsIChmIHN0YXRlKSlcbiAgICB8IGBFeHBlcnQgZXhwZXJ0IC0+IGBFeHBlcnQgKGZ1biBzdGF0ZSAtPiBleHBlcnQgKGYgc3RhdGUpKVxuICBpblxuICB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gUmVzcG9uZGVyXG5cbiAgbW9kdWxlIFJwY19yZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBSZXNwb25kZXIudFxuXG4gICAgbGV0IGNhbm5vdF9zZW5kIHIgPVxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICAgclxuICAgICAgICBbJXNleHBfb2Y6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdXG4gICAgOztcblxuICAgIGxldCBtYXJrX3Jlc3BvbmRlZCAodCA6IHQpID1cbiAgICAgIGlmIHQucmVzcG9uZGVkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWxyZWFkeSByZXNwb25kZWRcIiB0IFslc2V4cF9vZjogUmVzcG9uZGVyLnRdO1xuICAgICAgdC5yZXNwb25kZWQgPC0gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGUgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgIGhlYWRlclxuICAgICAgICAgIH5idWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgd2l0aFxuICAgICAgfCBTZW50IGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2JpZ3N0cmluZyAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgaGVhZGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Vycm9yICh0IDogdCkgZXJyb3IgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBkYXRhID1cbiAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSByYXcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAoRXJyb3IudG9fZXhuIGVycm9yKVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmluX3Byb3QgKHQgOiB0KSBiaW5fd3JpdGVyX2EgYSA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2EpKVxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayBhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY3JlYXRlX2V4biA9IGNyZWF0ZV9leG5cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFJlYWRlciA9IFRyYW5zcG9ydC5SZWFkZXJcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbm1vZHVsZSBIYW5kc2hha2VfZXJyb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBFb2ZcbiAgICAgIHwgVHJhbnNwb3J0X2Nsb3NlZFxuICAgICAgfCBUaW1lb3V0XG4gICAgICB8IFJlYWRpbmdfaGVhZGVyX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0aW9uX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0ZWRfdW5leHBlY3RlZF92ZXJzaW9uIG9mIGludFxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgZXhjZXB0aW9uIEhhbmRzaGFrZV9lcnJvciBvZiAodCAqIEluZm8udCkgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgdG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIHQgPSBIYW5kc2hha2VfZXJyb3IgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pXG5lbmRcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHZhbCB2MSA6IHRcbiAgdmFsIHYyIDogdFxuICB2YWwgbmVnb3RpYXRlIDogdXM6dCAtPiBwZWVyOnQgLT4gKGludCwgSGFuZHNoYWtlX2Vycm9yLnQpIHJlc3VsdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgUC5IZWFkZXJcblxuICBsZXQgY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNyZWF0ZV9leG4gKCkgfnByb3RvY29sOlJwYyB+c3VwcG9ydGVkX3ZlcnNpb25zXG4gIDs7XG5cbiAgbGV0IHYyID0gY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxOyAyIF1cbiAgbGV0IHYxID0gY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxIF1cblxuICBsZXQgbmVnb3RpYXRlIH51cyB+cGVlciA9XG4gICAgbWF0Y2ggbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlcjp0cnVlIH51cyB+cGVlciB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChIYW5kc2hha2VfZXJyb3IuTmVnb3RpYXRpb25fZmFpbGVkIGUpXG4gICAgfCBPayBpIC0+IE9rIGlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJvdG9jb2xfd3JpdGVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3dyaXRlciA6IHQgLT4gU2V4cC50XG4gIHZhbCBjcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIDogV3JpdGVyLnQgLT4gdFxuICB2YWwgc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IHQgLT4gaW50IC0+IHVuaXRcblxuICB2YWwgc2VuZF9xdWVyeVxuICAgIDogIHRcbiAgICAtPiAncXVlcnkgUC5RdWVyeS50XG4gICAgLT4gYmluX3dyaXRlcl9xdWVyeToncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfZXhwZXJ0X3F1ZXJ5XG4gICAgOiAgdFxuICAgIC0+IHVuaXQgUC5RdWVyeS50XG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmc6XG4gICAgICAgICAoV3JpdGVyLnRcbiAgICAgICAgICAtPiBQLk1lc3NhZ2UubmF0MF90IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgLT4gUC5NZXNzYWdlLm5hdDBfdFxuICAgICAgICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgLT4gJ3Jlc3VsdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudClcbiAgICAtPiAncmVzdWx0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfaGVhcnRiZWF0IDogdCAtPiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG4gIHZhbCBjYW5fc2VuZCA6IHQgLT4gYm9vbFxuICB2YWwgYnl0ZXNfdG9fd3JpdGUgOiB0IC0+IGludFxuICB2YWwgYnl0ZXNfd3JpdHRlbiA6IHQgLT4gSW50NjMudFxuICB2YWwgZmx1c2hlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBzdG9wcGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIDogaW50IFNldF9vbmNlLnRcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3dyaXRlciB0ID0gWyVzZXhwX29mOiBXcml0ZXIudF0gdC53cml0ZXJcblxuICBsZXQgY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiB3cml0ZXIgPVxuICAgIHsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID0gU2V0X29uY2UuY3JlYXRlICgpOyB3cml0ZXIgfVxuICA7O1xuXG4gIGxldCBzZXRfbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIHQgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID1cbiAgICBTZXRfb25jZS5zZXRfZXhuIHQubmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIFslaGVyZV0gbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gIDs7XG5cbiAgbGV0IHF1ZXJ5X21lc3NhZ2UgdCBxdWVyeSA6IF8gUC5NZXNzYWdlLnQgPVxuICAgIG1hdGNoIFNldF9vbmNlLmdldF9leG4gdC5uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gWyVoZXJlXSB3aXRoXG4gICAgfCAxIC0+IFF1ZXJ5X3YxIChQLlF1ZXJ5LnRvX3YxIHF1ZXJ5KVxuICAgIHwgXyAtPiBRdWVyeSBxdWVyeVxuICA7O1xuXG4gIGxldCBzZW5kX3F1ZXJ5IHQgcXVlcnkgfmJpbl93cml0ZXJfcXVlcnkgPVxuICAgIGxldCBtZXNzYWdlID0gcXVlcnlfbWVzc2FnZSB0IHF1ZXJ5IGluXG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgIHQud3JpdGVyXG4gICAgICAoUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfcXVlcnkpKVxuICAgICAgbWVzc2FnZVxuICA7O1xuXG4gIGxldCBzZW5kX2V4cGVydF9xdWVyeSB0IHF1ZXJ5IH5idWYgfnBvcyB+bGVuIH5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgPVxuICAgIGxldCBoZWFkZXIgPSBxdWVyeV9tZXNzYWdlIHQgeyBxdWVyeSB3aXRoIGRhdGEgPSBOYXQwLm9mX2ludF9leG4gbGVuIH0gaW5cbiAgICBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGhlYWRlciB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2hlYXJ0YmVhdCB0ID1cbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgSGVhcnRiZWF0XG4gIDs7XG5cbiAgbGV0IG9mX3dyaXRlciBmIHQgPSBmIHQud3JpdGVyXG4gIGxldCBjYW5fc2VuZCA9IG9mX3dyaXRlciBXcml0ZXIuY2FuX3NlbmRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlID0gb2Zfd3JpdGVyIFdyaXRlci5ieXRlc190b193cml0ZVxuICBsZXQgYnl0ZXNfd3JpdHRlbiA9IG9mX3dyaXRlciBXcml0ZXIuYnl0ZXNfd3JpdHRlblxuICBsZXQgZmx1c2hlZCA9IG9mX3dyaXRlciBXcml0ZXIuZmx1c2hlZFxuICBsZXQgc3RvcHBlZCA9IG9mX3dyaXRlciBXcml0ZXIuc3RvcHBlZFxuICBsZXQgY2xvc2UgPSBvZl93cml0ZXIgV3JpdGVyLmNsb3NlXG5lbmRcblxubW9kdWxlIEhlYXJ0YmVhdF9jb25maWcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGZpZWxkc11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDc0YTFmNDc1YmZiMmVlZDVhNTA5YmE3MWNkNzg5MWQyIHx9XVxuICA7O1xuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyh0aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC4pXG4gICAgICAgID8oc2VuZF9ldmVyeSA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMTAuKVxuICAgICAgICAoKVxuICAgID1cbiAgICB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuICA7O1xuXG4gIG1vZHVsZSBSdW50aW1lID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbXV0YWJsZSB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHRvX3J1bnRpbWUgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH0gPSB7IFJ1bnRpbWUudGltZW91dDsgc2VuZF9ldmVyeSB9XG5lbmRcblxudHlwZSByZXNwb25zZV9oYW5kbGVyID1cbiAgTmF0MC50IFAuUmVzcG9uc2UudFxuICAtPiByZWFkX2J1ZmZlcjpCaWdzdHJpbmcudFxuICAtPiByZWFkX2J1ZmZlcl9wb3NfcmVmOmludCByZWZcbiAgLT4gWyBga2VlcFxuICAgICB8IGB3YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICB8IGByZW1vdmUgb2YgdW5pdCBScGNfcmVzdWx0LnRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICBdXG5cbnR5cGUgdCA9XG4gIHsgZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgOyBoZWFydGJlYXRfY29uZmlnIDogSGVhcnRiZWF0X2NvbmZpZy5SdW50aW1lLnRcbiAgOyBtdXRhYmxlIGhlYXJ0YmVhdF9jYWxsYmFja3MgOiAodW5pdCAtPiB1bml0KSBhcnJheVxuICA7IG11dGFibGUgbGFzdF9zZWVuX2FsaXZlIDogVGltZV9ucy50XG4gIDsgbWF4X21ldGFkYXRhX3NpemUgOiBCeXRlX3VuaXRzLnRcbiAgOyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFByb3RvY29sX3dyaXRlci50XG4gIDsgb3Blbl9xdWVyaWVzIDogKFAuUXVlcnlfaWQudCwgKHJlc3BvbnNlX2hhbmRsZXJbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IGNsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgSXZhci50XG4gIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAoKiBUaGVyZSdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBpbnN0YW5jZXNcbiAgICAgKHRoZSBsYXR0ZXIgZGVwZW5kcyBvbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSwgd2hpY2ggaXMgZ2l2ZW4gYWNjZXNzIHRvIHRoZSBjb25uZWN0aW9uXG4gICAgIHdoZW4gaXQgaXMgY3JlYXRlZCkuICopXG4gIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnQgU2V0X29uY2UudFxuICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UudFxuICA7IGhlYXJ0YmVhdF9ldmVudCA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LnQgU2V0X29uY2UudFxuICA7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IGludCBTZXRfb25jZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3RfaHVtX3dyaXRlciB0ID1cbiAgWyVzZXhwXG4gICAgeyBkZXNjcmlwdGlvbiA6IEluZm8udCA9IHQuZGVzY3JpcHRpb247IHdyaXRlciA6IFByb3RvY29sX3dyaXRlci53cml0ZXIgPSB0LndyaXRlciB9XVxuOztcblxubGV0IGRlc2NyaXB0aW9uIHQgPSB0LmRlc2NyaXB0aW9uXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbmxldCB3cml0ZXIgdCA9XG4gIGlmIGlzX2Nsb3NlZCB0IHx8IG5vdCAoUHJvdG9jb2xfd3JpdGVyLmNhbl9zZW5kIHQud3JpdGVyKVxuICB0aGVuIEVycm9yIGBDbG9zZWRcbiAgZWxzZSBPayB0LndyaXRlclxuOztcblxubGV0IGJ5dGVzX3RvX3dyaXRlIHQgPSBQcm90b2NvbF93cml0ZXIuYnl0ZXNfdG9fd3JpdGUgdC53cml0ZXJcbmxldCBieXRlc193cml0dGVuIHQgPSBQcm90b2NvbF93cml0ZXIuYnl0ZXNfd3JpdHRlbiB0LndyaXRlclxubGV0IGJ5dGVzX3JlYWQgdCA9IFJlYWRlci5ieXRlc19yZWFkIHQucmVhZGVyXG5sZXQgZmx1c2hlZCB0ID0gUHJvdG9jb2xfd3JpdGVyLmZsdXNoZWQgdC53cml0ZXJcblxubGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHQgLT4gJ2EgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gJ2EgPVxuICBmdW4gdCByIC0+XG4gIG1hdGNoIHIgd2l0aFxuICB8IFNlbnQgeCAtPiB4XG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQWxsIG9mIHRoZSBwbGFjZXMgd2UgY2FsbCBbaGFuZGxlX3NlbmRfcmVzdWx0XSBjaGVjayB3aGV0aGVyIFt0XSBpcyBjbG9zZWRcbiAgICAgICAodXN1YWxseSB2aWEgdGhlIFt3cml0ZXJdIGZ1bmN0aW9uIGFib3ZlKS4gVGhpcyBjaGVja3Mgd2hldGhlciBbdC53cml0ZXJdIGlzXG4gICAgICAgY2xvc2VkLCB3aGljaCBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgW3RdIGlzIGNsb3NlZC4gKilcbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlJQQyBjb25uZWN0aW9uIGdvdCBjbG9zZWQgd3JpdGVyXCIgdCBzZXhwX29mX3RfaHVtX3dyaXRlclxuICB8IE1lc3NhZ2VfdG9vX2JpZyBfIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAsIHsgcmVhc29uID0gKHIgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KTsgY29ubmVjdGlvbiA9ICh0IDogdF9odW1fd3JpdGVyKSB9XVxuOztcblxubGV0IGRpc3BhdGNoIHQgfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfihxdWVyeSA6IF8gUC5RdWVyeS50KSA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIGFzIHIgLT4gclxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBxdWVyeSA9XG4gICAgICBtYXRjaCBxdWVyeS5tZXRhZGF0YSB3aXRoXG4gICAgICB8IFNvbWUgbWV0YWRhdGEgLT5cbiAgICAgICAgeyBxdWVyeSB3aXRoXG4gICAgICAgICAgbWV0YWRhdGEgPVxuICAgICAgICAgICAgU29tZSAoU3RyaW5nLnByZWZpeCBtZXRhZGF0YSAoQnl0ZV91bml0cy5ieXRlc19pbnRfZXhuIHQubWF4X21ldGFkYXRhX3NpemUpKVxuICAgICAgICB9XG4gICAgICB8IE5vbmUgLT4gcXVlcnlcbiAgICBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OnF1ZXJ5LmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIFByb3RvY29sX3dyaXRlci5zZW5kX3F1ZXJ5IHdyaXRlciBxdWVyeSB+YmluX3dyaXRlcl9xdWVyeSB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICBPayAoKVxuOztcblxubGV0IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICBkb19zZW5kXG4gICAgICA/bWV0YWRhdGFcbiAgICAgIHRcbiAgICAgIH50YWdcbiAgICAgIH52ZXJzaW9uXG4gICAgICBidWZcbiAgICAgIH5wb3NcbiAgICAgIH5sZW5cbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyXG4gID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgYENsb3NlZFxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBpZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgbGV0IHF1ZXJ5IDogdW5pdCBQLlF1ZXJ5LnQgPSB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhOyBkYXRhID0gKCkgfSBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIGxldCByZXN1bHQgPVxuICAgICAgUHJvdG9jb2xfd3JpdGVyLnNlbmRfZXhwZXJ0X3F1ZXJ5XG4gICAgICAgIHdyaXRlclxuICAgICAgICBxdWVyeVxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+c2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nOmRvX3NlbmRcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0XG4gICAgaW5cbiAgICBPayByZXN1bHRcbjs7XG5cbmxldCBkaXNwYXRjaF9iaWdzdHJpbmcgPSBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG5cbmxldCBzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmcgPVxuICBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG47O1xuXG5sZXQgaGFuZGxlX3Jlc3BvbnNlIHQgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQgd2l0aFxuICB8IE5vbmUgLT4gU3RvcCAoRXJyb3IgKFJwY19lcnJvci5Vbmtub3duX3F1ZXJ5X2lkIHJlc3BvbnNlLmlkKSlcbiAgfCBTb21lIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAobWF0Y2ggcmVzcG9uc2VfaGFuZGxlciByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgd2l0aFxuICAgICB8IGBrZWVwIC0+IENvbnRpbnVlXG4gICAgIHwgYHdhaXQgd2FpdCAtPiBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IHdhaXQgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIChtYXRjaCByZW1vdmFsX2NpcmN1bXN0YW5jZXMgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgfCBVbmltcGxlbWVudGVkX3JwYyBfIC0+IENvbnRpbnVlXG4gICAgICAgICAgIHwgQmluX2lvX2V4biBfXG4gICAgICAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgICAgICAgfCBXcml0ZV9lcnJvciBfXG4gICAgICAgICAgIHwgVW5jYXVnaHRfZXhuIF9cbiAgICAgICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gU3RvcCAoRXJyb3IgZSkpKSlcbjs7XG5cbmxldCBoYW5kbGVfbXNnXG4gICAgICB0XG4gICAgICAobXNnIDogXyBQLk1lc3NhZ2UudClcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggbXNnIHdpdGhcbiAgfCBIZWFydGJlYXQgLT5cbiAgICBBcnJheS5pdGVyIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gICAgQ29udGludWVcbiAgfCBSZXNwb25zZSByZXNwb25zZSAtPiBoYW5kbGVfcmVzcG9uc2UgdCByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5oYW5kbGVfcXVlcnlcbiAgICAgIGluc3RhbmNlXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeV92MSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIGxldCBxdWVyeSA9IFAuUXVlcnkub2ZfdjEgcXVlcnkgaW5cbiAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuaGFuZGxlX3F1ZXJ5XG4gICAgICBpbnN0YW5jZVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG47O1xuXG5sZXQgY2xvc2VfcmVhc29uIHQgfm9uX2Nsb3NlID1cbiAgbGV0IHJlYXNvbiA9IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQgaW5cbiAgbWF0Y2ggb25fY2xvc2Ugd2l0aFxuICB8IGBzdGFydGVkIC0+IHJlYXNvblxuICB8IGBmaW5pc2hlZCAtPlxuICAgIGxldCViaW5kICgpID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWQgaW5cbiAgICByZWFzb25cbjs7XG5cbmxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcblxubGV0IGFkZF9oZWFydGJlYXRfY2FsbGJhY2sgdCBmID1cbiAgKCogQWRkaW5nIGhlYXJ0YmVhdCBjYWxsYmFja3MgaXMgcmVsYXRpdmVseSByYXJlLCBidXQgdGhlIGNhbGxiYWNrcyBhcmUgdHJpZ2dlcmVkIGEgbG90LlxuICAgICBUaGUgYXJyYXkgcmVwcmVzZW50YXRpb24gbWFrZXMgdGhlIGFkZGl0aW9uIHF1YWRyYXRpYyBmb3IgdGhlIHNha2Ugb2Yga2VlcGluZyB0aGVcbiAgICAgdHJpZ2dlcmluZyBjaGVhcC4gKilcbiAgdC5oZWFydGJlYXRfY2FsbGJhY2tzIDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQuaGVhcnRiZWF0X2NhbGxiYWNrc1xuOztcblxubGV0IHJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IHQgdGltZW91dCA9XG4gIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0IDwtIHRpbWVvdXQ7XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlXG47O1xuXG5sZXQgbGFzdF9zZWVuX2FsaXZlIHQgPSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuXG5sZXQgYWJvcnRfaGVhcnRiZWF0aW5nIHQgPVxuICBPcHRpb24uaXRlciAoU2V0X29uY2UuZ2V0IHQuaGVhcnRiZWF0X2V2ZW50KSB+ZjooZnVuIGV2ZW50IC0+XG4gICAgbWF0Y2ggU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYWJvcnQgdC50aW1lX3NvdXJjZSBldmVudCB3aXRoXG4gICAgfCBPayB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWQgLT4gKCkpXG47O1xuXG5sZXQgY2xvc2UgPyhzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2ZfaW50X3NlYyA1KSB+cmVhc29uIHQgPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBhYm9ydF9oZWFydGJlYXRpbmcgdDtcbiAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkIHJlYXNvbjtcbiAgICAobWF0Y2ggU2V0X29uY2UuZ2V0IHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIHdpdGhcbiAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgfCBTb21lIGluc3RhbmNlIC0+XG4gICAgICAgbGV0IGZsdXNoZWQgPSBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuZmx1c2ggaW5zdGFuY2UgaW5cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGZsdXNoZWRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlO1xuICAgICAgICAgZmx1c2hlZClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdFxuICAgICAgICAgICAgIFsgZmx1c2hlZFxuICAgICAgICAgICAgIDsgUHJvdG9jb2xfd3JpdGVyLnN0b3BwZWQgdC53cml0ZXJcbiAgICAgICAgICAgICA7IFRpbWVfc291cmNlLmFmdGVyXG4gICAgICAgICAgICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICAgICAgICAgICBzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgICAgICAgICBdXG4gICAgICAgICBpblxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2UpKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBQcm90b2NvbF93cml0ZXIuY2xvc2UgdC53cml0ZXJcbiAgICA+Pj4gZnVuICgpIC0+IFJlYWRlci5jbG9zZSB0LnJlYWRlciA+Pj4gZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKTtcbiAgY2xvc2VfZmluaXNoZWQgdFxuOztcblxubGV0IG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID1cbiAgbGV0IGYgYnVmIH5wb3MgfmxlbjpfIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgbGV0IG5hdDBfbXNnID0gUC5NZXNzYWdlLmJpbl9yZWFkX25hdDBfdCBidWYgfnBvc19yZWYgaW5cbiAgICBtYXRjaFxuICAgICAgaGFuZGxlX21zZ1xuICAgICAgICB0XG4gICAgICAgIG5hdDBfbXNnXG4gICAgICAgIH5yZWFkX2J1ZmZlcjpidWZcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6cG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgd2l0aFxuICAgIHwgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IFdhaXQgXyBhcyByZXMgLT4gcmVzXG4gICAgfCBTdG9wIHJlc3VsdCAtPlxuICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgIGxldCBtc2cgPSBcIlJwYyBtZXNzYWdlIGhhbmRsaW5nIGxvb3Agc3RvcHBlZFwiIGluXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gSW5mby5vZl9zdHJpbmcgbXNnXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIEluZm8uY3JlYXRlXG4gICAgICAgICAgICBtc2dcbiAgICAgICAgICAgIGVcbiAgICAgICAgICAgIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgIFwiQ29ubmVjdGlvbi5vbl9tZXNzYWdlIHJlc3VsdGVkIGluIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yLiBUaGlzIGlzIFxcXG4gICAgICAgICAgICAgICAgICB3ZWlyZC5cIl0pKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb24pO1xuICAgICAgU3RvcCByZWFzb25cbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIGZcbjs7XG5cbmxldCBoZWFydGJlYXRfbm93IHQgPVxuICBsZXQgc2luY2VfbGFzdF9oZWFydGJlYXQgPVxuICAgIFRpbWVfbnMuZGlmZiAoU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2UpIHQubGFzdF9zZWVuX2FsaXZlXG4gIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oID4gKSBzaW5jZV9sYXN0X2hlYXJ0YmVhdCB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICB0aGVuIChcbiAgICBsZXQgcmVhc29uICgpID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgIVwiTm8gaGVhcnRiZWF0cyByZWNlaXZlZCBmb3IgJXtzZXhwOlRpbWVfbnMuU3Bhbi50fS5cIlxuICAgICAgICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl90aHVuayByZWFzb24pKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiAoKVxuICAgIHwgT2sgd3JpdGVyIC0+IFByb3RvY29sX3dyaXRlci5zZW5kX2hlYXJ0YmVhdCB3cml0ZXIgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQpXG47O1xuXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuXG5cbmxldCBjbGVhbnVwIHQgfnJlYXNvbiBleG4gPVxuICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KTtcbiAgaWYgbm90IChIYXNodGJsLmlzX2VtcHR5IHQub3Blbl9xdWVyaWVzKVxuICB0aGVuIChcbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIHwgUnBjX2Vycm9yLlJwYyAoZXJyb3IsIChfIDogSW5mby50KSkgLT4gZXJyb3JcbiAgICAgIHwgZXhuIC0+IFVuY2F1Z2h0X2V4biAoRXhuLnNleHBfb2ZfdCBleG4pXG4gICAgaW5cbiAgICAoKiBjbGVhbiB1cCBvcGVuIHN0cmVhbWluZyByZXNwb25zZXMgKilcbiAgICAoKiBhbiB1bmZvcnR1bmF0ZSBoYWNrOyBvayBiZWNhdXNlIHRoZSByZXNwb25zZSBoYW5kbGVyIHdpbGwgaGF2ZSBub3RoaW5nXG4gICAgICAgdG8gcmVhZCBmb2xsb3dpbmcgYSByZXNwb25zZSB3aGVyZSBbZGF0YV0gaXMgYW4gZXJyb3IgKilcbiAgICBsZXQgZHVtbXlfYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAxIGluXG4gICAgbGV0IGR1bW15X3JlZiA9IHJlZiAwIGluXG4gICAgSGFzaHRibC5pdGVyaSB0Lm9wZW5fcXVlcmllcyB+ZjooZnVuIH5rZXk6cXVlcnlfaWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChyZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcjpkdW1teV9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6ZHVtbXlfcmVmXG4gICAgICAgICAgIHsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9IEVycm9yIGVycm9yIH0pKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9xdWVyaWVzO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBkdW1teV9idWZmZXIpXG47O1xuXG5sZXQgc2NoZWR1bGVfaGVhcnRiZWF0cyB0ID1cbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2U7XG4gIGxldCBoZWFydGJlYXRfZnJvbV9ub3dfb24gPVxuICAgICgqIFthdF9pbnRlcnZhbHNdIHdpbGwgc2NoZWR1bGUgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0aGUgZmlyc3QgdGltZSB0aGUgdGltZV9zb3VyY2UgaXNcbiAgICAgICBhZHZhbmNlZCAqKVxuICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmF0X2ludGVydmFsc1xuICAgICAgdC50aW1lX3NvdXJjZVxuICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnNlbmRfZXZlcnlcbiAgICAgIChmdW4gKCkgLT4gaGVhcnRiZWF0X25vdyB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaGVhcnRiZWF0X2V2ZW50IFslaGVyZV0gaGVhcnRiZWF0X2Zyb21fbm93X29uXG47O1xuXG5sZXQgcnVuX2FmdGVyX2hhbmRzaGFrZVxuICAgICAgdFxuICAgICAgd3JpdGVyXG4gICAgICB+bmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlcl9tb25pdG9yX2V4bnNcbiAgPVxuICBQcm90b2NvbF93cml0ZXIuc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiB0LndyaXRlciBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb247XG4gIGxldCBpbnN0YW5jZSA9XG4gICAgSW1wbGVtZW50YXRpb25zLmluc3RhbnRpYXRlXG4gICAgICBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIH53cml0ZXJcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZTooY29ubmVjdGlvbl9zdGF0ZSB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5zdGFuY2U7XG4gIGxldCBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjbG9zZSBjb25uZWN0aW9uIG1vbml0b3JcIiAoKSBpblxuICBNb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnMgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIH5mOihmdW4gZXhuIC0+XG4gICAgbGV0IHJlYXNvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBpbXBsZW1lbnRhdGlvblwiIChleG4gOiBFeG4udCldXG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KSk7XG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY29ubmVjdGlvbiBsb29wXCIgKCkgaW5cbiAgbGV0IHJlYXNvbiBuYW1lIGV4biA9XG4gICAgZXhuLCBJbmZvLnRhZyAoSW5mby5vZl9leG4gZXhuKSB+dGFnOihcImV4biByYWlzZWQgaW4gUlBDIGNvbm5lY3Rpb24gXCIgXiBuYW1lKVxuICBpblxuICBTdHJlYW0uaXRlclxuICAgIChTdHJlYW0uaW50ZXJsZWF2ZVxuICAgICAgIChTdHJlYW0ub2ZfbGlzdFxuICAgICAgICAgIFsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwibG9vcFwiKSAoTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcilcbiAgICAgICAgICA7IFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcIldyaXRlci50XCIpIHdyaXRlcl9tb25pdG9yX2V4bnNcbiAgICAgICAgICBdKSlcbiAgICB+ZjooZnVuIChleG4sIHJlYXNvbikgLT4gY2xlYW51cCB0IGV4biB+cmVhc29uKTtcbiAgd2l0aGluIH5tb25pdG9yIChmdW4gKCkgLT5cbiAgICBzY2hlZHVsZV9oZWFydGJlYXRzIHQ7XG4gICAgUmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgdC5yZWFkZXJcbiAgICAgIH5vbl9tZXNzYWdlOihTdGFnZWQudW5zdGFnZSAob25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDooZnVuICgpIC0+XG4gICAgICAgIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgT2sgcmVhc29uIC0+IGNsZWFudXAgdCB+cmVhc29uIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpXG4gICAgKCogVGhlIHByb3RvY29sIGlzIHN1Y2ggdGhhdCByaWdodCBub3csIHRoZSBvbmx5IG91dGNvbWUgb2YgdGhlIG90aGVyIHNpZGUgY2xvc2luZyB0aGVcbiAgICAgICBjb25uZWN0aW9uIG5vcm1hbGx5IGlzIHRoYXQgd2UgZ2V0IGFuIGVvZi4gKilcbiAgICB8IEVycm9yIChgRW9mIHwgYENsb3NlZCkgLT5cbiAgICAgIGNsZWFudXBcbiAgICAgICAgdFxuICAgICAgICB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkVPRiBvciBjb25uZWN0aW9uIGNsb3NlZFwiKVxuICAgICAgICAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBkb19oYW5kc2hha2UgdCB3cml0ZXIgfmhhbmRzaGFrZV90aW1lb3V0IH5oZWFkZXIgPVxuICBpZiBub3QgKFdyaXRlci5jYW5fc2VuZCB3cml0ZXIpXG4gIHRoZW4gcmV0dXJuIChFcnJvciBIYW5kc2hha2VfZXJyb3IuVHJhbnNwb3J0X2Nsb3NlZClcbiAgZWxzZSAoXG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3Qgd3JpdGVyIEhlYWRlci5iaW5fdC53cml0ZXIgaGVhZGVyIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0O1xuICAgICgqIElmIHdlIHVzZSBbbWF4X2Nvbm5lY3Rpb25zXSBpbiB0aGUgc2VydmVyLCB0aGVuIHRoaXMgcmVhZCBtYXkganVzdCBoYW5nIHVudGlsIHRoZVxuICAgICAgIHNlcnZlciBzdGFydHMgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyAod2hpY2ggY291bGQgYmUgbmV2ZXIpLiAgVGhhdCBpcyB3aHkgYVxuICAgICAgIHRpbWVvdXQgaXMgdXNlZCAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICAoZnVuICgpIC0+IFJlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90IHQucmVhZGVyIEhlYWRlci5iaW5fdC5yZWFkZXIpXG4gICAgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIFRpbWVfc291cmNlLndpdGhfdGltZW91dFxuICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgaGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgICAgcmVzdWx0XG4gICAgd2l0aFxuICAgIHwgYFRpbWVvdXQgLT5cbiAgICAgICgqIFRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQsIHRoZSByZWFkZXIgaXMgYmFzaWNhbGx5IHVzZWxlc3Mgbm93LCBzbyB3ZSBjbGVhbiBpdFxuICAgICAgICAgdXAuICopXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkhhbmRzaGFrZSB0aW1lb3V0XCIpKTtcbiAgICAgIEVycm9yIEhhbmRzaGFrZV9lcnJvci5UaW1lb3V0XG4gICAgfCBgUmVzdWx0IChFcnJvciBleG4pIC0+XG4gICAgICBsZXQgcmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJbUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3RdIHJhaXNlZFwiIGluXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgIEVycm9yIChSZWFkaW5nX2hlYWRlcl9mYWlsZWQgKEVycm9yLm9mX2V4biBleG4pKVxuICAgIHwgYFJlc3VsdCAoT2sgKEVycm9yIGBFb2YpKSAtPiBFcnJvciBFb2ZcbiAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgQ2xvc2VkKSkgLT4gRXJyb3IgVHJhbnNwb3J0X2Nsb3NlZFxuICAgIHwgYFJlc3VsdCAoT2sgKE9rIHBlZXIpKSAtPiBIZWFkZXIubmVnb3RpYXRlIH51czpoZWFkZXIgfnBlZXIpXG47O1xuXG5sZXQgY29udGFpbnNfbWFnaWNfcHJlZml4ID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY29udGFpbnNfbWFnaWNfcHJlZml4IH5wcm90b2NvbDpScGNcbmxldCBkZWZhdWx0X2hhbmRzaGFrZV9oZWFkZXIgPSBIZWFkZXIudjJcblxubGV0IGhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5ID1cbiAgVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZTpcImFzeW5jIHJwYyBoYW5kc2hha2UgaGVhZGVyIG92ZXJyaWRlXCIgWyVzZXhwX29mOiBIZWFkZXIudF1cbjs7XG5cbmxldCBnZXRfaGFuZHNoYWtlX2hlYWRlciAoKSA9XG4gIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuZmluZF9sb2NhbCBoYW5kc2hha2VfaGVhZGVyX292ZXJyaWRlX2tleVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6ZGVmYXVsdF9oYW5kc2hha2VfaGVhZGVyXG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgPyhoYW5kc2hha2VfdGltZW91dCA9IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQpXG4gICAgICA/KGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLmNyZWF0ZSAoKSlcbiAgICAgID8obWF4X21ldGFkYXRhX3NpemUgPSBCeXRlX3VuaXRzLm9mX2tpbG9ieXRlcyAxLilcbiAgICAgID8oZGVzY3JpcHRpb24gPSBJbmZvLm9mX3N0cmluZyBcIjxjcmVhdGVkLWRpcmVjdGx5PlwiKVxuICAgICAgPyh0aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAoeyByZWFkZXI7IHdyaXRlciB9IDogVHJhbnNwb3J0LnQpXG4gID1cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9XG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICB8IE5vbmUgLT4gSW1wbGVtZW50YXRpb25zLm51bGwgKClcbiAgICB8IFNvbWUgcyAtPiBzXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IGRlc2NyaXB0aW9uXG4gICAgOyBoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy50b19ydW50aW1lIGhlYXJ0YmVhdF9jb25maWdcbiAgICA7IGhlYXJ0YmVhdF9jYWxsYmFja3MgPSBbfHxdXG4gICAgOyBsYXN0X3NlZW5fYWxpdmUgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdGltZV9zb3VyY2VcbiAgICA7IG1heF9tZXRhZGF0YV9zaXplXG4gICAgOyByZWFkZXJcbiAgICA7IHdyaXRlciA9IFByb3RvY29sX3dyaXRlci5jcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIHdyaXRlclxuICAgIDsgb3Blbl9xdWVyaWVzID0gSGFzaHRibC5Qb2x5LmNyZWF0ZSB+c2l6ZToxMCAoKVxuICAgIDsgY2xvc2Vfc3RhcnRlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBpbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IHRpbWVfc291cmNlXG4gICAgOyBoZWFydGJlYXRfZXZlbnQgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgbGV0IHdyaXRlcl9tb25pdG9yX2V4bnMgPSBNb25pdG9yLmRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSAoV3JpdGVyLm1vbml0b3Igd3JpdGVyKSBpblxuICB1cG9uIChXcml0ZXIuc3RvcHBlZCB3cml0ZXIpIChmdW4gKCkgLT5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJQQyB0cmFuc3BvcnQgc3RvcHBlZFwiKSkpO1xuICBsZXQgaGVhZGVyID0gZ2V0X2hhbmRzaGFrZV9oZWFkZXIgKCkgaW5cbiAgbWF0Y2glbWFwIGRvX2hhbmRzaGFrZSB0IHdyaXRlciB+aGFuZHNoYWtlX3RpbWVvdXQgfmhlYWRlciB3aXRoXG4gIHwgT2sgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIC0+XG4gICAgcnVuX2FmdGVyX2hhbmRzaGFrZVxuICAgICAgdFxuICAgICAgd3JpdGVyXG4gICAgICB+bmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlcl9tb25pdG9yX2V4bnM7XG4gICAgT2sgdFxuICB8IEVycm9yIGVycm9yIC0+XG4gICAgRXJyb3IgKEhhbmRzaGFrZV9lcnJvci50b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246ZGVzY3JpcHRpb24gZXJyb3IpXG47O1xuXG5sZXQgd2l0aF9jbG9zZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5kaXNwYXRjaF9xdWVyaWVzXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGZcbiAgICB8IGBSYWlzZSAtPiByYWlzZVxuICBpblxuICBsZXQlYmluZCB0ID1cbiAgICBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVycm9yIGUgLT5cbiAgICBsZXQlYmluZCAoKSA9IFRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIGVcbiAgfCBPayB0IC0+XG4gICAgTW9uaXRvci5wcm90ZWN0XG4gICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgfnJlc3Q6YExvZ1xuICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICBjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24ud2l0aF9jbG9zZSBmaW5pc2hlZFwiKSlcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIGxldCViaW5kIHJlc3VsdCA9IGRpc3BhdGNoX3F1ZXJpZXMgdCBpblxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIHwgU29tZSBfIC0+IGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgICAgIGluXG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgc2VydmVyX3dpdGhfY2xvc2VcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IG9uX2hhbmRzaGFrZV9lcnJvciA9XG4gICAgbWF0Y2ggb25faGFuZHNoYWtlX2Vycm9yIHdpdGhcbiAgICB8IGBDYWxsIGYgLT4gYENhbGwgZlxuICAgIHwgYFJhaXNlIC0+IGBSYWlzZVxuICAgIHwgYElnbm9yZSAtPiBgQ2FsbCAoZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgaW5cbiAgd2l0aF9jbG9zZVxuICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgP2Rlc2NyaXB0aW9uXG4gICAgP3RpbWVfc291cmNlXG4gICAgdHJhbnNwb3J0XG4gICAgfmltcGxlbWVudGF0aW9uc1xuICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICAgIH5kaXNwYXRjaF9xdWVyaWVzOihmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuOztcblxubGV0IGNsb3NlXG4gICAgICA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICA/KHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24uY2xvc2VcIilcbiAgICAgIHRcbiAgPVxuICBjbG9zZSA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0IH5yZWFzb24gdFxuOztcblxubW9kdWxlIENsaWVudF9pbXBsZW1lbnRhdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3MgdCA9XG4gICAgeyBjb25uZWN0aW9uX3N0YXRlIDogdCAtPiAnc1xuICAgIDsgaW1wbGVtZW50YXRpb25zIDogJ3MgSW1wbGVtZW50YXRpb25zLnRcbiAgICB9XG5cbiAgbGV0IG51bGwgKCkgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA9IChmdW4gXyAtPiAoKSk7IGltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9ucy5udWxsICgpIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuXG4gIGxldCB3aXRoX2FzeW5jX2V4ZWN1dGlvbl9jb250ZXh0IH5jb250ZXh0IH5mID1cbiAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhfbG9jYWwgaGFuZHNoYWtlX2hlYWRlcl9vdmVycmlkZV9rZXkgKFNvbWUgY29udGV4dCkgfmZcbiAgOztcbmVuZFxuIiwiXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uXG5tb2R1bGUgSW1wbGVtZW50YXRpb24gPSBJbXBsZW1lbnRhdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9uc1xubW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxubW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj49fiApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbm1vZHVsZSBScGNfY29tbW9uID0gc3RydWN0XG4gIGxldCBkaXNwYXRjaF9yYXcnXG4gICAgICAgID9tZXRhZGF0YVxuICAgICAgICBjb25uXG4gICAgICAgIH50YWdcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5xdWVyeV9pZFxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZCA9IHF1ZXJ5X2lkOyBtZXRhZGF0YTsgZGF0YSA9IHF1ZXJ5IH0gaW5cbiAgICBtYXRjaCBDb25uZWN0aW9uLmRpc3BhdGNoIGNvbm4gfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIFJwY19lcnJvci5Db25uZWN0aW9uX2Nsb3NlZFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9yYXcgP21ldGFkYXRhIGNvbm4gfnRhZyB+dmVyc2lvbiB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgfnF1ZXJ5X2lkIH5mID1cbiAgICBsZXQgcmVzcG9uc2VfaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgKG1hdGNoXG4gICAgICAgZGlzcGF0Y2hfcmF3J1xuICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICBjb25uXG4gICAgICAgICB+dGFnXG4gICAgICAgICB+dmVyc2lvblxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnF1ZXJ5X2lkXG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSAoZiByZXNwb25zZV9pdmFyKSlcbiAgICAgd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IEl2YXIuZmlsbCByZXNwb25zZV9pdmFyIGUpO1xuICAgIEl2YXIucmVhZCByZXNwb25zZV9pdmFyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3Jlc3BvbnNlIDogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWQgOiAncmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlID1cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCByZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpyZXNwb25zZVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX3Jlc3BvbnNlXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyByZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5xdWVyeV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LnJlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5iaW5fcmVzcG9uc2VcblxuICBsZXQgc2hhcGVzIHQgPVxuICAgIFJwY19zaGFwZXMuUnBjIHsgcXVlcnkgPSB0LmJpbl9xdWVyeS5zaGFwZTsgcmVzcG9uc2UgPSB0LmJpbl9yZXNwb25zZS5zaGFwZSB9XG4gIDs7XG5cbiAgbGV0IGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBxdWVyeSlcbiAgOztcblxuICBsZXQgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHF1ZXJ5ID1cbiAgICBFYWdlcl9kZWZlcnJlZC5tYXAgKGYgc3RhdGUgcXVlcnkpIH5mOihmdW4gYSAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIGEpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgUnBjXG4gICAgICAgICAgKCB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICAsIHQuYmluX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgICwgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmXG4gICAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgUnBjXG4gICAgICAgICAgKCB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICAsIHQuYmluX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgICwgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmXG4gICAgICAgICAgLCBCbG9ja2luZyApXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICA9XG4gICAgICBsZXQgcmVzcG9uc2UgPVxuICAgICAgICByZXNwb25zZS5kYXRhXG4gICAgICAgID4+PX4gZnVuIGxlbiAtPlxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIHQuYmluX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgSXZhci5maWxsIGl2YXIgcmVzcG9uc2U7XG4gICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICBpblxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXdcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9xdWVyeS53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+ZjpyZXNwb25zZV9oYW5kbGVyXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9ucy5FeHBlcnQuUnBjX3Jlc3BvbmRlclxuXG4gICAgbGV0IG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBkb19kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXIgPVxuICAgICAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICBoYW5kbGVfZXJyb3JcbiAgICAgICAgICAgICAgKEVycm9yLnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICAgICAgICAgICAgZSkpO1xuICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSAobGVuIDogTmF0MC50IDo+IGludCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gaGFuZGxlX3Jlc3BvbnNlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbiBpblxuICAgICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGByZW1vdmUgKE9rICgpKSBlbHNlIGByZW1vdmVfYW5kX3dhaXQgZFxuICAgICAgaW5cbiAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgID9tZXRhZGF0YVxuICAgICAgICBjb25uXG4gICAgICAgIH50YWc6KFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZylcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgYnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSByZXNwb25zZV9oYW5kbGVyKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcblxuICAgIGxldCBkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgRWFnZXJfZGVmZXJyZWQubWFwIChmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuKSB+ZjooZnVuIGEgLT5cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCBhKVxuICAgIDs7XG5cbiAgICBsZXQgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuID1cbiAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4pXG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgUnBjX3NoYXBlcy5Vbmtub3duXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24nXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgUnBjX3NoYXBlcy5Vbmtub3duXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gIHR5cGUgJ21zZyB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fbXNnIDogJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IG1zZ190eXBlX2lkIDogJ21zZyBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2cgPVxuICAgIGxldCBtc2dfdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTptc2dcIl0gc2V4cF9vZl9vcGFxdWUgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZTsgdmVyc2lvbjsgYmluX21zZzsgbXNnX3R5cGVfaWQgfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9IFJwY19zaGFwZXMuT25lX3dheSB7IG1zZyA9IHQuYmluX21zZy5zaGFwZSB9XG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IG1zZ190eXBlX2lkIHQgPSB0Lm1zZ190eXBlX2lkXG5cbiAgbGV0IG5vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgRWFnZXJfZGVmZXJyZWQucmV0dXJuIChPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIHF1ZXJ5KSlcbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IE9uZV93YXkgKHQuYmluX21zZy5yZWFkZXIsIG5vX2F1dGhvcml6YXRpb24gZilcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3JhdydcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9tc2cud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfD4gZnVuIHJlc3VsdCAtPiBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAoZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSlcbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbGV0IG5vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBidWYgfnBvcyB+bGVuID1cbiAgICAgIEVhZ2VyX2RlZmVycmVkLnJldHVybiAoT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBPbmVfd2F5X2V4cGVydCAobm9fYXV0aG9yaXphdGlvbiBmKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgeyB0YWc7IHZlcnNpb247IGJpbl9tc2cgPSBfOyBtc2dfdHlwZV9pZCA9IF8gfVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnRhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGZsdXNoZWQgLT4gYEZsdXNoZWQgZmx1c2hlZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgIHwgRXJyb3Igb2YgRXJyb3IudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCA3NDhjOGJmNDUwMmQwOTc4ZDAwN2JmN2Y5NmE3ZWY3ZiB8fV1cbiAgOztcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICAgICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICAgICAgfCBFcnJvciBvZiBFcnJvci5TdGFibGUuVjIudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNzQ4YzhiZjQ1MDJkMDk3OGQwMDdiZjdmOTZhN2VmN2YgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG4oKiB0aGUgYmFzaXMgb2YgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBQaXBlX3JwYyBhbmQgU3RhdGVfcnBjICopXG5tb2R1bGUgU3RyZWFtaW5nX3JwYyA9IHN0cnVjdFxuICBtb2R1bGUgSW5pdGlhbF9tZXNzYWdlID0gUC5TdHJlYW1faW5pdGlhbF9tZXNzYWdlXG5cbiAgdHlwZSAoJ3F1ZXJ5LCAnaW5pdGlhbF9yZXNwb25zZSwgJ3VwZGF0ZV9yZXNwb25zZSwgJ2Vycm9yX3Jlc3BvbnNlKSB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fcXVlcnkgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZSA6ICdpbml0aWFsX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZSA6ICd1cGRhdGVfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgOiAnZXJyb3JfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgOyBxdWVyeV90eXBlX2lkIDogJ3F1ZXJ5IFR5cGVfZXF1YWwuSWQudFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIDogJ2luaXRpYWxfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA6ICd1cGRhdGVfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkIDogJ2Vycm9yX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlXG4gICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayA9XG4gICAgICBtYXRjaCBjbGllbnRfcHVzaGVzX2JhY2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06ZXJyb3JcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgPSBiaW5fZXJyb3JcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFja1xuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV9pbml0aWFsX21lc3NhZ2UgeCA9XG4gICAgeyBJbml0aWFsX21lc3NhZ2UudW51c2VkX3F1ZXJ5X2lkID0gUC5VbnVzZWRfcXVlcnlfaWQudDsgaW5pdGlhbCA9IHggfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9XG4gICAgUnBjX3NoYXBlcy5TdHJlYW1pbmdfcnBjXG4gICAgICB7IHF1ZXJ5ID0gdC5iaW5fcXVlcnkuc2hhcGVcbiAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA9IHQuYmluX2luaXRpYWxfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgdXBkYXRlX3Jlc3BvbnNlID0gdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IGVycm9yID0gdC5iaW5fZXJyb3JfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2dlbiB0ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSBpbXBsID1cbiAgICBsZXQgYmluX2luaXRfd3JpdGVyID1cbiAgICAgIEluaXRpYWxfbWVzc2FnZS5iaW5fd3JpdGVyX3RcbiAgICAgICAgdC5iaW5faW5pdGlhbF9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgdC5iaW5fZXJyb3JfcmVzcG9uc2Uud3JpdGVyXG4gICAgaW5cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgU3RyZWFtaW5nX3JwY1xuICAgICAgICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA9IHQuYmluX3F1ZXJ5LnJlYWRlclxuICAgICAgICAgIDsgYmluX2luaXRfd3JpdGVyXG4gICAgICAgICAgOyBiaW5fdXBkYXRlX3dyaXRlciA9IHQuYmluX3VwZGF0ZV9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICA7IGltcGxcbiAgICAgICAgICB9XG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5ID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIChFcnJvciBlcnIpKSlcbiAgICAgIHwgT2sgKGluaXRpYWwsIHBpcGUpIC0+IEF1dGhvcml6ZWQgKE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoT2sgaW5pdGlhbCksIHBpcGUpKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiB0ID9vbl9leGNlcHRpb24gKFBpcGUgZilcbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSB3cml0ZXIgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3cml0ZXIgd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpKVxuICAgICAgfCBPayBfIGFzIHggLT4gQXV0aG9yaXplZCAoT2sgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiA/b25fZXhjZXB0aW9uIHQgKERpcmVjdCBmKVxuICA7O1xuXG4gIGxldCBhYm9ydCB0IGNvbm4gaWQgPVxuICAgIGxldCBxdWVyeSA9XG4gICAgICB7IFAuUXVlcnkudGFnID0gdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb247IGlkOyBtZXRhZGF0YSA9IE5vbmU7IGRhdGEgPSBgQWJvcnQgfVxuICAgIGluXG4gICAgaWdub3JlXG4gICAgICAoQ29ubmVjdGlvbi5kaXNwYXRjaFxuICAgICAgICAgY29ublxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnk6UC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgIDogKHVuaXQsIFsgYENsb3NlZCBdKSBSZXN1bHQudClcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVXBkYXRlIG9mICdhXG4gICAgICB8IENsb3NlZCBvZiBbIGBCeV9yZW1vdGVfc2lkZSB8IGBFcnJvciBvZiBFcnJvci50IF1cbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDb250aW51ZVxuICAgICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9tZXRhZGF0YSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IGNsb3NlX3JlYXNvbiA6IFBpcGVfY2xvc2VfcmVhc29uLnQgRGVmZXJyZWQudFxuICAgICAgfVxuXG4gICAgbGV0IGlkIHQgPSB0LnF1ZXJ5X2lkXG4gICAgbGV0IGNsb3NlX3JlYXNvbiB0ID0gdC5jbG9zZV9yZWFzb25cbiAgZW5kXG5cbiAgbW9kdWxlIFJlc3BvbnNlX3N0YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIFVwZGF0ZV9oYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBQaXBlX21lc3NhZ2UudCAtPiBQaXBlX3Jlc3BvbnNlLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbml0aWFsID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3EsICdpLCAndSwgJ2UsICdleHRyYSkgdCA9XG4gICAgICAgIHsgcnBjIDogKCdxLCAnaSwgJ3UsICdlKSB0XG4gICAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgICAgOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIDogdW5pdCAtPiAnZXh0cmEgKiAndSBVcGRhdGVfaGFuZGxlci50XG4gICAgICAgIDsgaXZhciA6IChQLlF1ZXJ5X2lkLnQgKiAnaSAqICdleHRyYSwgJ2UpIFJlc3VsdC50IFJwY19yZXN1bHQudCBJdmFyLnRcbiAgICAgICAgOyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIDogKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIEluaXRpYWwudCAtPiAndSB0XG4gICAgICAgIHwgV3JpdGluZ191cGRhdGVzIG9mICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogJ2EgVXBkYXRlX2hhbmRsZXIudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudCB9XG4gIGVuZFxuXG4gIGxldCByZWFkX2Vycm9yXG4gICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb25cbiAgICAgICAgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpXG4gICAgICAgIGVyclxuICAgID1cbiAgICBsZXQgY29yZV9lcnIgPVxuICAgICAgRXJyb3IudF9vZl9zZXhwIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gZXJyKVxuICAgIGluXG4gICAgaWdub3JlIChoYW5kbGVyIChDbG9zZWQgKGBFcnJvciBjb3JlX2VycikpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChFcnJvciBlcnIpXG4gIDs7XG5cbiAgbGV0IGVvZiAoaGFuZGxlciA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCkgPVxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIGBCeV9yZW1vdGVfc2lkZSkgOiBQaXBlX3Jlc3BvbnNlLnQpO1xuICAgIGByZW1vdmUgKE9rICgpKVxuICA7O1xuXG4gIGxldCByZXNwb25zZV9oYW5kbGVyIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaW5pdGlhbF9zdGF0ZVxuICAgIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyXG4gICAgPVxuICAgIGxldCBvcGVuIFJlc3BvbnNlX3N0YXRlIGluXG4gICAgbGV0IHN0YXRlID0geyBzdGF0ZSA9IFdhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9zdGF0ZSB9IGluXG4gICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgbWF0Y2ggc3RhdGUuc3RhdGUgd2l0aFxuICAgICAgfCBXcml0aW5nX3VwZGF0ZXMgKGJpbl9yZWFkZXJfdXBkYXRlLCBoYW5kbGVyKSAtPlxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgRW9mIC0+IDBcbiAgICAgICAgICAgICAgICAgfCBgT2sgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgIHwgT2sgYEVvZiAtPiBlb2YgaGFuZGxlclxuICAgICAgICAgICAgfCBPayAoYE9rIGxlbikgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICAgICBiaW5fcmVhZGVyX3VwZGF0ZVxuICAgICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgICAgICAgfCBPayBkYXRhIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBoYW5kbGVyIChVcGRhdGUgZGF0YSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDb250aW51ZSAtPiBga2VlcFxuICAgICAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gYHdhaXQgZCkpKSlcbiAgICAgIHwgU3RhdGUuV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSBpbml0aWFsX2hhbmRsZXIgLT5cbiAgICAgICAgKCogV2UgbmV2ZXIgdXNlIFtgcmVtb3ZlIChFcnJvciBfKV0gaGVyZSwgc2luY2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBzaG91bGQgYmUgY2xvc2VkLCBhbmQgdGhlc2UgYXJlIFwibm9ybWFsXCIgZXJyb3JzLiAoSW4gY29udHJhc3QsIHRoZVxuICAgICAgICAgICBlcnJvcnMgd2UgZ2V0IGluIHRoZSBbV3JpdGluZ191cGRhdGVzX3RvX3BpcGVdIGNhc2UgaW5kaWNhdGUgbW9yZSBzZXJpb3VzXG4gICAgICAgICAgIHByb2JsZW1zLikgSW5zdGVhZCwgd2UganVzdCBwdXQgZXJyb3JzIGluIFtpdmFyXS4gKilcbiAgICAgICAgbGV0IGVycm9yIGVyciA9XG4gICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChFcnJvciBlcnIpO1xuICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBpbml0aWFsID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgKEluaXRpYWxfbWVzc2FnZS5iaW5fcmVhZGVyX3RcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5ycGMuYmluX2luaXRpYWxfcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9lcnJvcl9yZXNwb25zZS5yZWFkZXIpXG4gICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyBpbml0aWFsX3Jlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggaW5pdGlhbCB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgICAgIHwgT2sgaW5pdGlhbF9tc2cgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGluaXRpYWxfbXNnLmluaXRpYWwgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChPayAoRXJyb3IgZXJyKSk7XG4gICAgICAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgICAgICAgfCBPayBpbml0aWFsIC0+XG4gICAgICAgICAgICAgICAgIGxldCBleHRyYSwgaGFuZGxlciA9IGluaXRpYWxfaGFuZGxlci5tYWtlX3VwZGF0ZV9oYW5kbGVyICgpIGluXG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbFxuICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5pdmFyXG4gICAgICAgICAgICAgICAgICAgKE9rIChPayAoaW5pdGlhbF9oYW5kbGVyLnF1ZXJ5X2lkLCBpbml0aWFsLCBleHRyYSkpKTtcbiAgICAgICAgICAgICAgICAgc3RhdGUuc3RhdGVcbiAgICAgICAgICAgICAgICAgPC0gV3JpdGluZ191cGRhdGVzXG4gICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWxfaGFuZGxlci5ycGMuYmluX3VwZGF0ZV9yZXNwb25zZS5yZWFkZXIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICBga2VlcCkpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9nZW4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSBtYWtlX3VwZGF0ZV9oYW5kbGVyID1cbiAgICBsZXQgYmluX3dyaXRlcl9xdWVyeSA9XG4gICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aFxuICAgICAgICAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3R5cGVfY2xhc3MgdC5iaW5fcXVlcnkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBgUXVlcnkgcXVlcnkgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgfnF1ZXJ5XG4gICAgICB+ZjooZnVuIGl2YXIgLT5cbiAgICAgICAgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgIDogSW5mby50IG9wdGlvbildKVxuICAgICAgICAgIHsgcnBjID0gdDsgcXVlcnlfaWQ7IGNvbm5lY3Rpb24gPSBjb25uOyBpdmFyOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIH0pXG4gICAgPj58IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbWF0Y2glbWFwIGRpc3BhdGNoX2dlbiA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT4gKCksIGYpIHdpdGhcbiAgICB8IChFcnJvciBfIHwgT2sgKEVycm9yIF8pKSBhcyBlIC0+IGVcbiAgICB8IE9rIChPayAoaWQsIGluaXQsICgpKSkgLT4gT2sgKE9rIChpZCwgaW5pdCkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZGlzcGF0Y2hfZ2VuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgcGlwZV9yLCBwaXBlX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBTZXQgYSBzbWFsbCBidWZmZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVzaGJhY2sgZXZlbnRzICopXG4gICAgICAgIFBpcGUuc2V0X3NpemVfYnVkZ2V0IHBpcGVfdyAxMDA7XG4gICAgICAgIGxldCBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCBmIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFVwZGF0ZSBkYXRhIC0+XG4gICAgICAgICAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHBpcGVfdylcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgcGlwZV93IGRhdGE7XG4gICAgICAgICAgICAgIGlmIHQuY2xpZW50X3B1c2hlc19iYWNrICYmIFBpcGUubGVuZ3RoIHBpcGVfdyA+PSBQaXBlLnNpemVfYnVkZ2V0IHBpcGVfd1xuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgV2FpdFxuICAgICAgICAgICAgICAgICAgKG1hdGNoJW1hcCBQaXBlLmRvd25zdHJlYW1fZmx1c2hlZCBwaXBlX3cgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT4gKCkpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlXG4gICAgICAgICAgfCBDbG9zZWQgcmVhc29uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHlcbiAgICAgICAgICAgICAgY2xvc2VfcmVhc29uXG4gICAgICAgICAgICAgIChtYXRjaCByZWFzb24gd2l0aFxuICAgICAgICAgICAgICAgfCBgQnlfcmVtb3RlX3NpZGUgLT4gQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgICAgICAgICB8IGBFcnJvciBlcnIgLT4gRXJyb3IgZXJyKTtcbiAgICAgICAgICAgIFBpcGUuY2xvc2UgcGlwZV93O1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgKHBpcGVfciwgY2xvc2VfcmVhc29uKSwgZilcbiAgICB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAocGlwZV9yLCBjbG9zZV9yZWFzb24pKSkgLT5cbiAgICAgIHVwb24gKFBpcGUuY2xvc2VkIHBpcGVfcikgKGZ1biAoKSAtPlxuICAgICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCBjbG9zZV9yZWFzb24pXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFib3J0IHQgY29ubiBpZDtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY2xvc2VfcmVhc29uIENsb3NlZF9sb2NhbGx5KSk7XG4gICAgICBsZXQgcGlwZV9tZXRhZGF0YSA6IFBpcGVfbWV0YWRhdGEudCA9XG4gICAgICAgIHsgcXVlcnlfaWQgPSBpZDsgY2xvc2VfcmVhc29uID0gSXZhci5yZWFkIGNsb3NlX3JlYXNvbiB9XG4gICAgICBpblxuICAgICAgT2sgKE9rIChwaXBlX21ldGFkYXRhLCBpbml0LCBwaXBlX3IpKVxuICA7O1xuZW5kXG5cbigqIEEgUGlwZV9ycGMgaXMgbGlrZSBhIFN0cmVhbWluZ19ycGMsIGV4Y2VwdCB3ZSBkb24ndCBjYXJlIGFib3V0IGluaXRpYWwgc3RhdGUgLSB0aHVzXG4gICBpdCBpcyByZXN0cmljdGVkIHRvIHVuaXQgYW5kIHVsdGltYXRlbHkgaWdub3JlZCAqKVxubW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPSAoJ3F1ZXJ5LCB1bml0LCAncmVzcG9uc2UsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlID9jbGllbnRfcHVzaGVzX2JhY2sgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIH5iaW5fZXJyb3IgKCkgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpVbml0LmJpbl90XG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fcmVzcG9uc2VcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgICgqIFtpbml0aWFsX3Jlc3BvbnNlXSBkb2Vzbid0IHNob3cgdXAgaW4gW1BpcGVfcnBjXSdzIHNpZ25hdHVyZSxcbiAgICAgICAgIHNvIHRoZSB0eXBlLWlkIGNyZWF0ZWQgdXNpbmcgW2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXSBpc1xuICAgICAgICAgdW5yZWFjaGFibGUuICopXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJyZXNwb25zZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IChmdW4gYSBxdWVyeSAtPlxuICAgICAgbGV0JW1hcCB4ID0gZiBhIHF1ZXJ5IGluXG4gICAgICB4ID4+fH4gZnVuIHggLT4gKCksIHgpXG4gIDs7XG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgIG1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCByZWZcblxuICAgICAgICBsZXQgY3JlYXRlID8oaW5pdGlhbF9zaXplID0gNDA5NikgKCkgPVxuICAgICAgICAgIGlmIGluaXRpYWxfc2l6ZSA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5CdWZmZXIuY3JlYXRlIGdvdCBuZWdhdGl2ZSBidWZmZXIgXFxcbiAgICAgICAgICAgICAgIHNpemVcIlxuICAgICAgICAgICAgICBpbml0aWFsX3NpemVcbiAgICAgICAgICAgICAgSW50LnNleHBfb2ZfdDtcbiAgICAgICAgICByZWYgKEJpZ3N0cmluZy5jcmVhdGUgaW5pdGlhbF9zaXplKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5Hcm91cC50ID1cbiAgICAgICAgeyBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgICB9XG5cbiAgICAgIGFuZCAnYSBjb21wb25lbnQgPSAnYSBULkdyb3VwLmNvbXBvbmVudCA9XG4gICAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIFQuZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSA/YnVmZmVyICgpID1cbiAgICAgICAgbGV0IGJ1ZmZlciA9XG4gICAgICAgICAgbWF0Y2ggYnVmZmVyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgaW5cbiAgICAgICAgeyBjb21wb25lbnRzID0gQmFnLmNyZWF0ZSAoKTsgY29tcG9uZW50c19ieV9pZCA9IElkLlRhYmxlLmNyZWF0ZSAoKTsgYnVmZmVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggdCA9IEJhZy5sZW5ndGggdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBhZGRfZXhuIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlclxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IGNhbm5vdCBhZGQgYSBjbG9zZWQgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlclwiO1xuICAgICAgICBpZiBIYXNodGJsLm1lbSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogdHJ5aW5nIHRvIGFkZCBhIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGdyb3VwXCI7XG4gICAgICAgIChtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAoYmluX3dyaXRlciBvbmUpIChiaW5fd3JpdGVyIHdyaXRlcikpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkOiBjYW5ub3QgYWRkIGEgZGlyZWN0IHN0cmVhbSBcXFxuICAgICAgICAgICAgICAgIHdyaXRlciB3aXRoIGEgZGlmZmVyZW50IGJpbl93cml0ZXJcIik7XG4gICAgICAgIGxldCB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA9IEJhZy5hZGQgdC5jb21wb25lbnRzIHdyaXRlciBpblxuICAgICAgICBsZXQgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgPVxuICAgICAgICAgIEJhZy5hZGQgd3JpdGVyLmdyb3VwcyB7IGdyb3VwID0gdDsgZWxlbWVudF9pbl9ncm91cCA9IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIH1cbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5hZGRfZXhuXG4gICAgICAgICAgdC5jb21wb25lbnRzX2J5X2lkXG4gICAgICAgICAgfmtleTp3cml0ZXIuaWRcbiAgICAgICAgICB+ZGF0YTp7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVtb3ZlIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfSAtPlxuICAgICAgICAgIEJhZy5yZW1vdmUgdC5jb21wb25lbnRzIHdyaXRlcl9lbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgIEJhZy5yZW1vdmUgd3JpdGVyLmdyb3VwcyBncm91cF9lbGVtZW50X2luX3dyaXRlclxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xpc3QgdCA9IEJhZy50b19saXN0IHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgZmx1c2hlZF9vcl9jbG9zZWQgdCA9XG4gICAgICAgIHRvX2xpc3QgdFxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHQgLT4gRGVmZXJyZWQuYW55X3VuaXQgWyBmbHVzaGVkIHQ7IGNsb3NlZCB0IF0pXG4gICAgICAgIHw+IERlZmVycmVkLmFsbF91bml0XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmx1c2hlZCB0ID0gZmx1c2hlZF9vcl9jbG9zZWQgdFxuXG4gICAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIEJhZy5pdGVyIHQuY29tcG9uZW50cyB+ZjooZnVuIGRpcmVjdF9zdHJlYW1fd3JpdGVyIC0+XG4gICAgICAgICAgICAoKiBXcml0ZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlaXIgZ3JvdXBzIHdoZW5cbiAgICAgICAgICAgICAgIGNsb3NlZCwgc28gW2BDbG9zZWRdIGhlcmUganVzdCBtZWFucyB0aGF0IHRoZSByZW1vdmFsIGRpZG4ndCBoYXBwZW4geWV0LiAqKVxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayBkaXJlY3Rfc3RyZWFtX3dyaXRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgICAgICAgICAgOiBbIGBPayB8IGBDbG9zZWQgXSkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyaXRlIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbjtcbiAgICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgICAgbWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgIGxldCB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9IGJpbl93cml0ZXIgb25lIGluXG4gICAgICAgICAgbGV0IGJ1ZmZlciA9ICEodC5idWZmZXIpIGluXG4gICAgICAgICAgKCogT3B0aW1pc3RpYyBmaXJzdCB0cnkgKilcbiAgICAgICAgICAobWF0Y2ggd3JpdGUgYnVmZmVyIH5wb3M6MCB4IHdpdGhcbiAgICAgICAgICAgfCBsZW4gLT4gRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlblxuICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgKCogSXQncyBsaWtlbHkgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXRcbiAgICAgICAgICAgICAgICBjdXN0b20gYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICAgICAgICAgbGV0IGxlbiA9IHNpemUgeCBpblxuICAgICAgICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgKEludC5jZWlsX3BvdzIgbGVuKSBpblxuICAgICAgICAgICAgIHQuYnVmZmVyIDo9IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgbGVuID0gd3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICAgICAgICAgRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSB0IHggPVxuICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeDtcbiAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZlxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChtZXRhZGF0YSwgKCksIHBpcGVfcikgLT4gcGlwZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBQaXBlX3JwY19mYWlsZWRcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBycGNfZXJyb3IgLT4gcmFpc2UgKEVycm9yLnRvX2V4biBycGNfZXJyb3IpXG4gICAgfCBPayAoRXJyb3IgXykgLT4gcmFpc2UgUGlwZV9ycGNfZmFpbGVkXG4gICAgfCBPayAoT2sgcGlwZV9hbmRfaWQpIC0+IHBpcGVfYW5kX2lkXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXNzYWdlXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5QaXBlX3Jlc3BvbnNlXG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2hfaXRlciA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IH5mIGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChpZCwgKCkpIC0+IGlkXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgdCA9XG4gICAgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICgpXG4gICAgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpiaW5fc3RhdGVcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl91cGRhdGVcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcInN0YXRlXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwidXBkYXRlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3N0YXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgbGV0IGJpbl91cGRhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGltcGxlbWVudCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50XG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRfZGlyZWN0XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICByZXNwb25zZVxuICAgID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsIHN0YXRlLCB1cGRhdGVfcikgLT4gc3RhdGUsIHVwZGF0ZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgc3RhdGVfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgdXBkYXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgQW55ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBScGMgOiAoJ3EsICdyKSBScGMudCAtPiB0XG4gICAgfCBQaXBlIDogKCdxLCAnciwgJ2UpIFBpcGVfcnBjLnQgLT4gdFxuICAgIHwgU3RhdGUgOiAoJ3EsICdzLCAndSwgJ2UpIFN0YXRlX3JwYy50IC0+IHRcbiAgICB8IE9uZV93YXkgOiAnbSBPbmVfd2F5LnQgLT4gdFxuXG4gIGxldCBkZXNjcmlwdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBScGMgcnBjIC0+IFJwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFBpcGUgcnBjIC0+IFBpcGVfcnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgU3RhdGUgcnBjIC0+IFN0YXRlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IE9uZV93YXkgcnBjIC0+IE9uZV93YXkuZGVzY3JpcHRpb24gcnBjXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbi5TdGFibGVcbiAgbW9kdWxlIFBpcGVfY2xvc2VfcmVhc29uID0gUGlwZV9jbG9zZV9yZWFzb24uU3RhYmxlXG4gIG1vZHVsZSBScGMgPSBScGNcbiAgbW9kdWxlIFBpcGVfcnBjID0gUGlwZV9ycGNcbiAgbW9kdWxlIFN0YXRlX3JwYyA9IFN0YXRlX3JwY1xuICBtb2R1bGUgT25lX3dheSA9IE9uZV93YXlcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBScGNcblxubW9kdWxlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBQaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gIHR5cGUgJ2lucHV0IHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgY29udmVydCA6ICdpbnB1dCAtPiAnb3V0cHV0XG4gICAgICAgIDsgd3JpdGVyIDogJ291dHB1dCBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gJ2lucHV0IHRcblxuICBsZXQgY3JlYXRlIH5jb252ZXJ0IH53cml0ZXIgPSBUIHsgY29udmVydDsgd3JpdGVyIH1cblxuICBsZXQgd3JpdGUgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlIHdyaXRlciAoY29udmVydCBpbnB1dClcbiAgOztcblxuICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayAoVCB7IGNvbnZlcnQ7IHdyaXRlciB9KSBpbnB1dCA9XG4gICAgRGlyZWN0X3N0cmVhbV93cml0ZXIud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IGNsb3NlIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHdyaXRlclxuICBsZXQgaXNfY2xvc2VkIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmlzX2Nsb3NlZCB3cml0ZXJcbiAgbGV0IGNsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZWQgd3JpdGVyXG5lbmRcblxubGV0IGZhaWxlZF9jb252ZXJzaW9uIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcInR5cGUgY29udmVyc2lvbiBmYWlsdXJlXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOlxuICAgICAgWyBgTXNnIHwgYFF1ZXJ5IHwgYFJlc3BvbnNlIHwgYEVycm9yIHwgYFN0YXRlIHwgYFVwZGF0ZSBdXG4gICAgICAqIFsgYFJwYyBvZiBzdHJpbmcgXVxuICAgICAgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgICAqIGV4bl1cbjs7XG5cbmxldCBtdWx0aXBsZV9yZWdpc3RyYXRpb25zIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcIm11bHRpcGxlIHJwYyByZWdpc3RyYXRpb25zXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOiBbIGBScGMgb2Ygc3RyaW5nIF0gKiBbIGBWZXJzaW9uIG9mIGludCBdXVxuOztcblxubGV0IHVua25vd25fdmVyc2lvbiB4ID0gRXJyb3IuY3JlYXRlIFwidW5rbm93biBycGMgdmVyc2lvblwiIHggWyVzZXhwX29mOiBzdHJpbmcgKiBpbnRdXG5cbm1vZHVsZSBDYWxsZWVfY29udmVydHMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaW1wbGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyID1cbiAgICAgICAgeyBhZGFwdCA6XG4gICAgICAgICAgICAnc3RhdGUuICgnc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXNwb25zZSBEZWZlcnJlZC50KSAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgYWRhcHRlcnMgOiAoJ3F1ZXJ5LCAncmVzcG9uc2UpIGFkYXB0ZXIgSW50Lk1hcC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+bmFtZSA9IHsgbmFtZTsgYWRhcHRlcnMgPSBJbnQuTWFwLmVtcHR5IH1cblxuICAgICAgbGV0IHdyYXBfZXJyb3IgZm4gc3RhdGUgcXVlcnkgPVxuICAgICAgICBtYXRjaCVtYXAgZm4gc3RhdGUgcXVlcnkgd2l0aFxuICAgICAgICB8IE9rIHZhbHVlIC0+IE9rIHZhbHVlXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkIHsgbmFtZTsgYWRhcHRlcnMgfSBycGMgYWRhcHRlciA9XG4gICAgICAgIGlmIFN0cmluZy4oIDw+ICkgbmFtZSAoUnBjLm5hbWUgcnBjKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgIFwiUnBjIG5hbWVzIGRvbid0IGFncmVlXCJcbiAgICAgICAgICAgIChuYW1lLCBScGMubmFtZSBycGMpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ11cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHZlcnNpb24gPSBScGMudmVyc2lvbiBycGMgaW5cbiAgICAgICAgICBtYXRjaCBNYXAuZmluZCBhZGFwdGVycyB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgXCJWZXJzaW9uIGFscmVhZHkgZXhpc3RzXCJcbiAgICAgICAgICAgICAgKG5hbWUsIHZlcnNpb24pXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGFkYXB0ZXJzID0gTWFwLnNldCBhZGFwdGVycyB+a2V5OnZlcnNpb24gfmRhdGE6YWRhcHRlciBpblxuICAgICAgICAgICAgT2sgeyBuYW1lOyBhZGFwdGVycyB9KVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbiB0IG9sZF9ycGMgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IGZuIHN0YXRlICh1cGdyYWRlIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGRvd25ncmFkZSByZXN1bHRcbiAgICAgICAgICBpblxuICAgICAgICAgIFJwYy5pbXBsZW1lbnQgb2xkX3JwYyBhZGFwdGVkXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IG9sZF9ycGMgdXBncmFkZV9vcl9lcnJvciBkb3duZ3JhZGVfb3JfZXJyb3IgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBEZWZlcnJlZC5SZXN1bHQuTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcXVlcnkgPSBEZWZlcnJlZC5yZXR1cm4gKHVwZ3JhZGVfb3JfZXJyb3Igb2xkX3F1ZXJ5KSBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcmVzcG9uc2UgPSBmbiBzdGF0ZSBxdWVyeSBpblxuICAgICAgICAgICAgRGVmZXJyZWQucmV0dXJuIChkb3duZ3JhZGVfb3JfZXJyb3IgcmVzcG9uc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgKHdyYXBfZXJyb3IgYWRhcHRlZClcbiAgICAgICAgaW5cbiAgICAgICAgYWRkIHQgb2xkX3JwYyB7IGFkYXB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfdmVyc2lvbiB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWU6dC5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSBpblxuICAgICAgICBhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50IHQgZm4gPSBNYXAuZGF0YSB0LmFkYXB0ZXJzIHw+IExpc3QubWFwIH5mOihmdW4geyBhZGFwdCB9IC0+IGFkYXB0IGZuKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBxdWVyeSAtPiByZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwucXVlcnkgLT4gTW9kZWwucmVzcG9uc2UgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoaW50LCBpbXBsZW1lbnRlciAqIEFueS50KSBIYXNodGJsLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgX3JwYykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2VcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgUnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgICBsZXQlbWFwIHIgPSBmIHMgfnZlcnNpb24gcSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWwgcikgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9rIHIgLT4gclxuICAgICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAocmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIGltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IChNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgIC0+ICh1bml0LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGltcGwgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKFBpcGUgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChEaXJlY3QgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChNb2RlbC5yZXNwb25zZSAtPiBWZXJzaW9uX2kucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICB8IHEgLT4gcVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuZXJyb3Jfb2ZfbW9kZWwgZXJyb3Igd2l0aFxuICAgICAgICAgIHwgZXJyb3IgLT4gRXJyb3IgZXJyb3JcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgICAgfCBQaXBlIGYgLT5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2glYmluZCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd2l0aFxuICAgICAgICAgICAgICB8IE9rIHBpcGUgLT5cbiAgICAgICAgICAgICAgICBNb25pdG9yLmhhbmRsZV9lcnJvcnNcbiAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gcmV0dXJuIChPayAoY29udmVydF9waXBlIHBpcGUpKSlcbiAgICAgICAgICAgICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiByZXR1cm4gKHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpKVxuICAgICAgICAgIHwgRGlyZWN0IGYgLT5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgICAgUGlwZV9ycGMuaW1wbGVtZW50X2RpcmVjdCBycGMgKGZ1biBzIHEgZHN3IC0+XG4gICAgICAgICAgICAgIGxldCB3cml0ZXIgPVxuICAgICAgICAgICAgICAgIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci5jcmVhdGUgfmNvbnZlcnQ6Y29udmVydF9lbHQgfndyaXRlcjpkc3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2glbWFwIGYgcyB+dmVyc2lvbiAod3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxKSB3cml0ZXIgd2l0aFxuICAgICAgICAgICAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvcilcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCAtPiByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID1cbiAgICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiY2Fubm90IHVzZSBkaXJlY3QgaW50ZXJmYWNlIHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcGlwZSA9IFBpcGUubWFwIHBpcGUgfmY6VmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAoc3RhdGUgKiB1cGRhdGUgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgJ3NcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgLT4gKE1vZGVsLnN0YXRlICogTW9kZWwudXBkYXRlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBzdGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFN0YXRlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiBxIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayAobW9kZWxfc3RhdGUsIHBpcGUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5zdGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE9rIChzdGF0ZSwgVmVyc2lvbl9pLnVwZGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsIDogTW9kZWwudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsIF9zdGF0ZSBwaXBlID0gUGlwZS5tYXAgfmY6dXBkYXRlX29mX21vZGVsIHBpcGVcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwubXNnIC0+IHVuaXRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX21zZyA6IG1zZyAtPiBNb2RlbC5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgT25lX3dheS5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9tc2cgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT4gZiBzIH52ZXJzaW9uIHEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWVudSA9IHN0cnVjdFxuICAoKioqKioqKioqKioqKioqKiogc29tZSBwcm9oaWJpdGlvbnMgZm9yIHRoaXMgbW9kdWxlICoqKioqKioqKioqKioqKioqKlxuXG4gICAgICAgICAgICAgICAgICAgICAoMSkgISEhIG5ldmVyIHBydW5lIG9sZCB2ZXJzaW9ucyBvZiB0aGlzIHJwYyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgSXQgaXMgdG9vIGZ1bmRhbWVudGFsIHRvIHRoZSB3b3JraW5ncyBvZiB2YXJpb3VzIHZlcnNpb25pbmdcbiAgICAgICAgICAgICAgICAgICAgIHNjaGVtZXMgYW5kIGl0IHByb2JhYmx5IHdvbid0IGNoYW5nZSB2ZXJ5IG11Y2ggYW55d2F5LlxuXG4gICAgICAgICAgICAgICAgICAgICAoMikgISEhIG9ubHkgZXZlciBzYXkgXCJ3aXRoIGJpbl9pb1wiIG9uIGJ1aWx0LWluIG9jYW1sIHR5cGVzICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiB0eXBlcyBhcmUgaW50LCBsaXN0LCBzdHJpbmcsIGV0Yy5cblxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0byBwcm90ZWN0IG91cnNlbHZlcyBhZ2FpbnN0IGNoYW5nZXMgdG8gQ29yZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZS5cblxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuTWVudVwiXG5cbiAgICB0eXBlIHF1ZXJ5ID0gdW5pdFxuICAgIHR5cGUgcmVzcG9uc2UgPSBEZXNjcmlwdGlvbi50IGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gIGxldCBycGNfbmFtZSA9IE1vZGVsLm5hbWVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcXVlcnldO1xuICAgICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoc3RyaW5nICogaW50KSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcmVzcG9uc2VdO1xuICAgICAgICBbJWV4cGVjdCB7fCA0YzFlNTBjOTNiMzhjMmFkMDU1NGNiZDkyOWJlZjNhYyB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSBxID0gcVxuXG4gICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPVxuICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgbGV0IGFkZCBpbXBscyA9XG4gICAgbGV0IG1lbnUgPSBMaXN0Lm1hcCBpbXBscyB+ZjpJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpblxuICAgIGxldCBtZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBtZW51KSBpblxuICAgIGltcGxzIEAgbWVudV9pbXBsc1xuICA7O1xuXG4gIHR5cGUgdCA9IEludC5TZXQudCBTdHJpbmcuVGFibGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzdXBwb3J0ZWRfcnBjcyB0ID1cbiAgICBsZXQgb3BlbiBMaXN0LkxldF9zeW50YXggaW5cbiAgICBsZXQlYmluZCBuYW1lLCB2ZXJzaW9ucyA9IEhhc2h0YmwudG9fYWxpc3QgdCBpblxuICAgIGxldCVtYXAgdmVyc2lvbiA9IFNldC50b19saXN0IHZlcnNpb25zIGluXG4gICAgeyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH1cbiAgOztcblxuICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zIHQgfnJwY19uYW1lID1cbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW50LlNldC5lbXB0eSAoSGFzaHRibC5maW5kIHQgcnBjX25hbWUpXG4gIDs7XG5cbiAgbGV0IG9mX2VudHJpZXMgZW50cmllcyA9XG4gICAgSGFzaHRibC5tYXAgfmY6SW50LlNldC5vZl9saXN0IChTdHJpbmcuVGFibGUub2ZfYWxpc3RfbXVsdGkgZW50cmllcylcbiAgOztcblxuICBsZXQgYXV4X3JlcXVlc3QgZGlzcGF0Y2ggY29ubiA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKCkgaW5cbiAgICBSZXN1bHQubWFwIHJlc3VsdCB+ZjpvZl9lbnRyaWVzXG4gIDs7XG5cbiAgbGV0IHJlcXVlc3QgY29ubiA9IGF1eF9yZXF1ZXN0IFJwYy5kaXNwYXRjaCBjb25uXG4gIGxldCByZXF1ZXN0JyBjb25uID0gYXV4X3JlcXVlc3QgUnBjLmRpc3BhdGNoJyBjb25uXG5cbiAgbGV0IGNyZWF0ZSBkZXNjcmlwdGlvbnMgPVxuICAgIExpc3QubWFwIGRlc2NyaXB0aW9ucyB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgfD4gb2ZfZW50cmllc1xuICA7O1xuXG4gIG1vZHVsZSBXaXRoX3NoYXBlcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcIl9fVmVyc2lvbmVkX3JwYy5TaGFwZV9tZW51XCJcblxuICAgICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoRGVzY3JpcHRpb24udCAqIFJwY19zaGFwZXMudCkgbGlzdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICBsZXQgdmVyc2lvbiA9IDFcblxuICAgICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBxdWVyeV07XG4gICAgICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgICAgIDs7XG5cbiAgICAgICAgdHlwZSByZXNwb25zZSA9IChEZXNjcmlwdGlvbi5TdGFibGUuVjEudCAqIFJwY19zaGFwZXMuU3RhYmxlLlYxLnQpIGxpc3RcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcmVzcG9uc2VdO1xuICAgICAgICAgIFslZXhwZWN0IHt8IGI0YmRjMDFiN2VhZDkwN2U2ZDBkM2YzZDg5NzAwZjFiIHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IEZuLmlkXG4gICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIFJlZ2lzdGVyIChUKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgICB0eXBlIHQgPSAoRGVzY3JpcHRpb24udCAqIFJwY19zaGFwZXMudCkgbGlzdFxuXG4gICAgbGV0IGFkZCBpbXBscyA9XG4gICAgICBsZXQgc2hhcGVfbWVudSA9XG4gICAgICAgIExpc3QubWFwIGltcGxzIH5mOihmdW4gaW1wbCAtPlxuICAgICAgICAgIEltcGxlbWVudGF0aW9uLmRlc2NyaXB0aW9uIGltcGwsIEltcGxlbWVudGF0aW9uLnNoYXBlcyBpbXBsKVxuICAgICAgaW5cbiAgICAgIGxldCBzaGFwZV9tZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBzaGFwZV9tZW51KSBpblxuICAgICAgYWRkIGltcGxzIEAgc2hhcGVfbWVudV9pbXBsc1xuICAgIDs7XG5cbiAgICBsZXQgcmVxdWVzdCBjb25uID0gUnBjLmRpc3BhdGNoIEN1cnJlbnRfdmVyc2lvbi5ycGMgY29ubiAoKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29ubmVjdGlvbl93aXRoX21lbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvbm5lY3Rpb24gOiBDb25uZWN0aW9uLnRcbiAgICA7IG1lbnUgOiBNZW51LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgY3JlYXRlIGNvbm5lY3Rpb24gPVxuICAgIGxldCBvcGVuIERlZmVycmVkLk9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgICBsZXQlbWFwIG1lbnUgPSBNZW51LnJlcXVlc3QgY29ubmVjdGlvbiBpblxuICAgIHsgY29ubmVjdGlvbjsgbWVudSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9kaXJlY3RseSBjb25uZWN0aW9uIG1lbnUgPSB7IGNvbm5lY3Rpb247IG1lbnUgfVxuZW5kXG5cbm1vZHVsZSBDYWxsZXJfY29udmVydHMgPSBzdHJ1Y3RcbiAgbGV0IG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIH5ycGNfbmFtZSB+Y2FsbGVyX3ZlcnNpb25zIH5jYWxsZWVfdmVyc2lvbnMgfmNhbGxlZV9tZW51ID1cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIGNhbGxlZV92ZXJzaW9ucyBjYWxsZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBlcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiY2FsbGVyIGFuZCBjYWxsZWUgc2hhcmUgbm8gY29tbW9uIHZlcnNpb25zIGZvciBycGNcIlxuICAgICAgICAgICAgKHJwY19uYW1lIDogc3RyaW5nKVxuICAgICAgICAgICAgKGNhbGxlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChjYWxsZWVfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX21lbnUgOiBNZW51LnQpXVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcImhpZ2hlc3QgdmVyc2lvbiBudW1iZXIgaXMgdGFrZW4gaW4gbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cIiA9XG4gICAgbGV0IHJwY19uYW1lID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIHJwY19uYW1lLCAyIF0gaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgIH5ycGNfbmFtZVxuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDIgXSlcbiAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICBpblxuICAgIHByaW50X3MgWyVzZXhwIChyZXN1bHQgOiBpbnQgT3JfZXJyb3IudCldO1xuICAgIFslZXhwZWN0IHt8IChPayAyKSB8fV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJlcnJvciBmcm9tIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIGxvb2tzIHJlYXNvbmFibGVcIiA9XG4gICAgbGV0IHRoZV9ycGMgPSBcInRoZS1ycGNcIiBpblxuICAgIGxldCBub3RfdGhlX3JwYyA9IFwib3RoZXItcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIG5vdF90aGVfcnBjLCAxOyBub3RfdGhlX3JwYywgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWU6dGhlX3JwY1xuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOnRoZV9ycGMpXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdFxuICAgICAge3xcbiAgICAgIChFcnJvclxuICAgICAgIChcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCIgKHJwY19uYW1lIHRoZS1ycGMpXG4gICAgICAgIChjYWxsZXJfdmVyc2lvbnMgKDEgMiAzKSkgKGNhbGxlZV92ZXJzaW9ucyAoKSlcbiAgICAgICAgKGNhbGxlZV9tZW51ICgob3RoZXItcnBjICgxIDIpKSkpKSl8fV1cbiAgOztcblxuICBtb2R1bGUgRGlzcGF0Y2ggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IE1vbmFkKSA9IHN0cnVjdFxuICAgICAgb3BlbiBNXG5cbiAgICAgIGxldCB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5kaXNwYXRjaGVyIH5yZWdpc3RyeSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoRXJyb3IgKHVua25vd25fdmVyc2lvbiAobmFtZSwgdmVyc2lvbikpKVxuICAgICAgICB8IFNvbWUgKGRpc3BhdGNoLCBfcnBjKSAtPiBkaXNwYXRjaGVyIGRpc3BhdGNoIGNvbm5lY3Rpb24gcXVlcnlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgICAgeyBDb25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uOyBtZW51IH1cbiAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICAgIH5kaXNwYXRjaGVyXG4gICAgICAgID1cbiAgICAgICAgbGV0IGNhbGxlZV92ZXJzaW9ucyA9IE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOm5hbWUgaW5cbiAgICAgICAgbGV0IGNhbGxlcl92ZXJzaW9ucyA9IHZlcnNpb25zICgpIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgICAgIH5ycGNfbmFtZTpuYW1lXG4gICAgICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgRXJyb3IgZSAtPiByZXR1cm4gKEVycm9yIGUpXG4gICAgICAgIHwgT2sgdmVyc2lvbiAtPlxuICAgICAgICAgIHdpdGhfc3BlY2lmaWNfdmVyc2lvbiB+dmVyc2lvbiB+Y29ubmVjdGlvbiB+bmFtZSB+cXVlcnkgfnJlZ2lzdHJ5IH5kaXNwYXRjaGVyXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIEFzeW5jID0gTWFrZSAoRGVmZXJyZWQpXG4gICAgbW9kdWxlIERpcmVjdCA9IE1ha2UgKE1vbmFkLklkZW50KVxuICBlbmRcblxuICBtb2R1bGUgUnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiByZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlcicgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IE1vZGVsLnF1ZXJ5IC0+IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBtcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgbXEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIFJlc3VsdC5iaW5kIHJlc3VsdCB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgbXEgcikgd2l0aFxuICAgICAgICAgICAgICAgIHwgT2sgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBSZWdpc3RlcicgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgXyByID0gbW9kZWxfb2ZfcmVzcG9uc2UgclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKHJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnQsIGVycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gZjoocmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpc3BhdGNoZXIgPVxuICAgICAgICB7IGFib3J0IDogQ29ubmVjdGlvbi50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdFxuICAgICAgICA7IGRpc3BhdGNoIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+ICggTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAgICAgLCBNb2RlbC5lcnJvciApXG4gICAgICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudFxuICAgICAgICA7IGRpc3BhdGNoX2l0ZXIgOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gZjooTW9kZWwucmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA6IChkaXNwYXRjaGVyICogQW55LnQpIEludC5UYWJsZS50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5IH5mID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2hfaXRlcjsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2hfaXRlciBjb25uIHF1ZXJ5IH5mKVxuICAgICAgOztcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2g7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoIGNvbm4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgY29ubl93aXRoX21lbnUgaWQgPVxuICAgICAgICBEaXNwYXRjaC5EaXJlY3Qud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIGlkXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgYWJvcnQ7IF8gfSBjb25uIGlkIC0+XG4gICAgICAgICAgICBhYm9ydCBjb25uIGlkO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKFZlcnNpb25faS5yZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIHJldHVybiAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBxIC0+IHJldHVybiAoT2sgcSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rID1cbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPiBPayAoT2sgKGNvbnZlcnRfb2sgb2spKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFBpcGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6KGZ1biAocGlwZSwgaWQpIC0+IGNvbnZlcnRfcGlwZSBwaXBlLCBpZClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2hfaXRlciBjb25uIHEgfmYgPVxuICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQgY29udmVydF9tZXNzYWdlIChtIDogXyBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCkgPVxuICAgICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICAgICB8IENsb3NlZCBfIGFzIGNsb3NlZCAtPiBjbG9zZWRcbiAgICAgICAgICAgIHwgVXBkYXRlIHUgLT4gVXBkYXRlIChjb252ZXJ0X2VsdCB1KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPVxuICAgICAgICAgICAgUGlwZV9ycGMuZGlzcGF0Y2hfaXRlciBycGMgY29ubiBxIH5mOihmdW4gbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBmIChjb252ZXJ0X21lc3NhZ2UgbWVzc2FnZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6Rm4uaWRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYWJvcnQgY29ubiBpZCA9IFBpcGVfcnBjLmFib3J0IHJwYyBjb25uIGlkXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldFxuICAgICAgICAgICAgICByZWdpc3RyeVxuICAgICAgICAgICAgICB+a2V5OnZlcnNpb25cbiAgICAgICAgICAgICAgfmRhdGE6KHsgYWJvcnQ7IGRpc3BhdGNoOyBkaXNwYXRjaF9pdGVyIH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIkNhbm5vdCB1c2UgRGlyZWN0IHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gVmVyc2lvbl9pLnZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiAoIHN0YXRlICogdXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFN0YXRlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9zdGF0ZSA6IHN0YXRlIC0+IE1vZGVsLnN0YXRlXG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgfCBxIC0+XG4gICAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gU3RhdGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPiBFcnJvciBleG5cbiAgICAgICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgIHwgT2sgKE9rIChzdGF0ZSwgcGlwZSwgaWQpKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3N0YXRlIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBPayAoT2sgKHN0YXRlLCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHBpcGUsIGlkKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZSA6IHVwZGF0ZSAtPiBNb2RlbC51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl91cGRhdGUgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBtc2cgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgbXNnID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBtc2dcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1zZ19vZl9tb2RlbCA6IE1vZGVsLm1zZyAtPiBtc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1zZ19vZl9tb2RlbCBxKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPiBPbmVfd2F5LmRpc3BhdGNoIHJwYyBjb25uIHFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCb3RoX2NvbnZlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBsYWluID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX3F1ZXJ5IC0+IGNhbGxlZV9yZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBDYWxsZWUucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IENhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gZjooY2FsbGVyX3Jlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGNhbGxlcl9lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfcmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gY2FsbGVlX3Jlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgIGxldCBhYm9ydF9tdWx0aSA9IENhbGxlci5hYm9ydF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVyX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3N0YXRlICogY2FsbGVyX3VwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9zdGF0ZSAqIGNhbGxlZV91cGRhdGUgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5DYWxsZXIuc3RhdGVcbiAgICAgICAgdmFsIHN0YXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZWUudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9tc2dcbiAgICAgIHR5cGUgY2FsbGVlX21zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IGNhbGxlcl9tc2cgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9tc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBtc2dfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLm1zZyAtPiBtc2dcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX21zZyA6IG1zZyAtPiBDYWxsZWUubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfbXNnID0gY2FsbGVlX21vZGVsX29mX21zZ1xuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1zZ19vZl9tb2RlbCA9IG1zZ19vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydFxuICBtb2R1bGUgSGVhZGVyID0gSGVhZGVyXG4gIG1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IEhhbmRsZXJfcmVzdWx0XG4gIG1vZHVsZSBTZW5kX3Jlc3VsdCA9IFNlbmRfcmVzdWx0XG4gIG1vZHVsZSBSZWFkZXIgPSBSZWFkZXJcbiAgbW9kdWxlIFdyaXRlciA9IFdyaXRlclxuZW5kXG5cbmxldCByZWMgcGlwZV9yZWFkIHQgZiA9XG4gIG1hdGNoJWJpbmQgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHQgd2l0aFxuICB8IGBFb2YgLT4gZiBgRW9mXG4gIHwgYE9rIC0+XG4gICAgKG1hdGNoIFBpcGUucmVhZF9ub3cnIHQgd2l0aFxuICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBwaXBlX3JlYWQgdCBmXG4gICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgcmVzIC0+IGYgcmVzKVxuOztcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGFkZF90b19iaWdidWZmZXIgOiBCaWdidWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX2JpZ3N0cmluZyA6IHQgLT4gQmlnc3RyaW5nLnRcbiAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfYnVmZmVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5SZWFkZXIudFxuICAgIDsgYnVmZmVyIDogQmlnYnVmZmVyLnRcbiAgICA7IG11dGFibGUgYnl0ZXNfcmVhZCA6IEludDYzLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID1cbiAgICB7IHBpcGU7IGJ1ZmZlciA9IEJpZ2J1ZmZlci5jcmVhdGUgSGVhZGVyLmxlbmd0aDsgYnl0ZXNfcmVhZCA9IEludDYzLnplcm8gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQaXBlX3JlYWRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9idWZmZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlX3JlYWQgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcbiAgbGV0IGJ5dGVzX3JlYWQgKHQgOiB0KSA9IHQuYnl0ZXNfcmVhZFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKHQgOiB0KSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogKF8sIF8pIERlZmVycmVkLlJlc3VsdC50ID1cbiAgICBsZXQgYnVmZmVyID0gdC5idWZmZXIgaW5cbiAgICAoKiBEZXF1ZXVlIHVudGlsIGVub3VnaCBkYXRhIChbbmVlZF0pIGlzIGF2YWlsYWJsZSBhbmQgdHJ5IHJlYWQgbWVzc2FnZXMgKilcbiAgICBsZXQgcmVjIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPVxuICAgICAgbWF0Y2ggUXVldWUuZGVxdWV1ZSBxdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogUXVldWUgaXMgZW1wdHkgLSB3ZSBuZWVkIHRvIHdhaXQgZm9yIG1vcmUgZGF0YSAqKVxuICAgICAgICByZXR1cm4gKFNlY29uZCBuZWVkKVxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgbGV0IGJ1ZmZfbGVuID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgbGV0IGRhdGFfbGVuID0gRGF0YS5sZW5ndGggZGF0YSBpblxuICAgICAgICBpZiBidWZmX2xlbiA9IDAgJiYgZGF0YV9sZW4gPj0gbmVlZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgaGF2ZSBlbm91Z2ggZGF0YSBhbmQgYnVmZmVyIGlzIGVtcHR5LlxuICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIGV2ZXJ5IGJpbl9wcm90IG1lc3NhZ2UgaXMgc2VudCBpbiBpdHMgb3duXG4gICAgICAgICAgICAgd2Vic29ja2V0IGZyYW1lICopXG4gICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YTooRGF0YS50b19iaWdzdHJpbmcgZGF0YSkgfmxlbmd0aDpkYXRhX2xlbiBxdWV1ZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBTbG93IHBhdGguIFdlIGhhdmUgdG8gYWNjdW11bGF0ZSBbQmlnc3RyaW5nLnRdcyAqKVxuICAgICAgICAgIERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YTtcbiAgICAgICAgICBpZiBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciA+PSBuZWVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGVyZSBpcyBlbm91Z2ggZGF0YSBpbiB0aGUgYnVmZmVyICopXG4gICAgICAgICAgICBsZXQgZGF0YSA9IEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIgaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIHF1ZXVlKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqIFdlIG5lZWQgbW9yZSBkYXRhIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSlcbiAgICAoKiBSZWFkIGFzIG1hbnkgbWVzc2FnZXMgYXMgcG9zc2libGUgZnJvbSB0aGUgY3VycmVudCBkYXRhICopXG4gICAgYW5kIHByb2Nlc3NfZGF0YSB+cG9zIH5kYXRhIH5sZW5ndGggcXVldWUgPVxuICAgICAgaWYgbGVuZ3RoID49IEhlYWRlci5sZW5ndGhcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcGF5bG9hZF9sZW4gPSBIZWFkZXIudW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3MgaW5cbiAgICAgICAgbGV0IHRvdGFsX2xlbiA9IEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX2xlbiBpblxuICAgICAgICBpZiBsZW5ndGggPj0gdG90YWxfbGVuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHQuYnl0ZXNfcmVhZCA8LSBJbnQ2My4odC5ieXRlc19yZWFkICsgb2ZfaW50IHBheWxvYWRfbGVuKTtcbiAgICAgICAgICBtYXRjaCBvbl9tZXNzYWdlIGRhdGEgfnBvczoocG9zICsgSGVhZGVyLmxlbmd0aCkgfmxlbjpwYXlsb2FkX2xlbiB3aXRoXG4gICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIHggLT5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgICgqIE1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIHdlJ3ZlIHJlYWQgKGFuZCBub3QgXCJjb25zdW1lZFwiKSBmcm9tIHRoZSBwaXBlXG4gICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZSBidWZmZXIuXG4gICAgICAgICAgICAgICBUaGF0IGlzIHRoZSByZW1haW5pbmcgYml0cyBpbiBbZGF0YV0gYW5kIGFsbCBjb250ZW50cyBpbiBbcXVldWVdLlxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgICAgICAgUXVldWUuaXRlciBxdWV1ZSB+ZjooZnVuIGRhdGEgLT4gRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiAoRmlyc3QgeClcbiAgICAgICAgICB8IChDb250aW51ZSB8IFdhaXQgXykgYXMgY29udGludWVfb3Jfd2FpdCAtPlxuICAgICAgICAgICAgbGV0JWJpbmQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCBjb250aW51ZV9vcl93YWl0IHdpdGhcbiAgICAgICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBJbXBvc3NpYmxlOiB0aGlzIGJyYW5jaCBkb2VzIG5vdCBjb250YWluIFtTdG9wIF9dICopXG4gICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgQ29udGludWUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICBpZiBsZW5ndGggPiAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4gICAgICAgICAgICAgICAgIE1vcmUgdGhhbiBvbmUgYmluX3Byb3QgbWVzc2FnZSB3YXMgc2VudCBpbnNpZGUgdGhlIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIGxlbmd0aCA9IDAgKilcbiAgICAgICAgICAgICAgKCogQWxsIGRhdGEgd2FzIHJlYWQgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICAgIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGg6MCB+cXVldWUgfmRhdGEpXG4gICAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDp0b3RhbF9sZW4gfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSlcbiAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGFcbiAgICBhbmQgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGEgPVxuICAgICAgaWYgbGVuZ3RoID0gMFxuICAgICAgdGhlbiBCaWdidWZmZXIuY2xlYXIgYnVmZmVyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuc3ViIGRhdGEgfnBvcyB+bGVuOmxlbmd0aCBpblxuICAgICAgICBCaWdidWZmZXIuY2xlYXIgYnVmZmVyO1xuICAgICAgICBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZyBidWZmZXIgZGF0YSlcbiAgICBhbmQgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhID1cbiAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZVxuICAgIGluXG4gICAgbGV0IHJlYyB3YWl0X2Zvcl9yZWFkIH5uZWVkID1cbiAgICAgIHBpcGVfcmVhZCB0LnBpcGUgKGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiByZXR1cm4gKEVycm9yIGBFb2YpXG4gICAgICAgIHwgYE9rIHF1ZXVlIC0+IHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUpXG4gICAgYW5kIGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUgbmV4dCA9XG4gICAgICBvbl9lbmRfb2ZfYmF0Y2ggKCk7XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgRmlyc3QgcmVzdWx0IC0+IHJldHVybiAoT2sgcmVzdWx0KVxuICAgICAgfCBTZWNvbmQgbmVlZCAtPiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5kYXRhIH5sZW5ndGggPVxuICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIChRdWV1ZS5jcmVhdGUgKCkpID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlXG4gICAgaW5cbiAgICAoKiBXZSBlaXRoZXIgc3RhcnQgYnlcbiAgICAgICAtIHByb2Nlc3NpbmcgcmVtYWluaW5nIGJpdHMgaW4gdGhlIGJ1ZmZlclxuICAgICAgIC0gb3Igd2FpdGluZyBmb3IgbW9yZSBkYXRhIGluIHRoZSBwaXBlICopXG4gICAgbGV0IG5lZWQgPSBIZWFkZXIubGVuZ3RoIGluXG4gICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgaWYgSW50LiggPCApIGxlbmd0aCBuZWVkXG4gICAgdGhlbiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgZWxzZSBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmxlbmd0aCB+ZGF0YTooQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlcilcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBEYXRhLnRcblxuICAgIGxldCBvZl9iaWdzdHJpbmcgPSBEYXRhLm9mX2JpZ3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfbW9uaXRvciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuV3JpdGVyLnRcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IG11dGFibGUgYnl0ZXNfd3JpdHRlbiA6IEludDYzLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgKCk7IGJ5dGVzX3dyaXR0ZW4gPSBJbnQ2My56ZXJvIH1cbmVuZFxuXG4oKiBXZSBkb24ndCBwZXJmb3JtIGFueSBidWZmZXJpbmcgaGVyZS5cbiAgIEEgbWVzc2FnZSBpcyBjb25zaWRlciB0byBiZSBmbHVzaGVkIGFzIHNvb24gYXMgaXQgZW50ZXJzIHRoZSBwaXBlLiAqKVxubW9kdWxlIFBpcGVfd3JpdGVyIChEYXRhIDogREFUQSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRGF0YS50IFBpcGVfYW5kX21vbml0b3IudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBtb25pdG9yICh0IDogdCkgPSB0Lm1vbml0b3JcblxuICAoKiBCZWNhdXNlIHdlIGRvbid0IG1haW50YWluIGFueSBidWZmZXIsIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdyaXRlcyAqKVxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgKF8gOiB0KSA9IDBcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gKHQgOiB0KSA9IHQuYnl0ZXNfd3JpdHRlblxuICBsZXQgc3RvcHBlZCAodCA6IHQpID0gUGlwZS5jbG9zZWQgdC5waXBlXG5cbiAgKCogV2UgY29uc2lkZXIgdGhhdCBhIG1lc3NhZ2UgaXMgZmx1c2hlZCBhcyBzb29uIGFzIGl0IHJlYWNoZXMgdGhlIHVuZGVybGluaW5nXG4gICAgIHRyYW5zcG9ydC4gKilcbiAgbGV0IGZsdXNoZWQgKF8gOiB0KSA9IERlZmVycmVkLnVuaXRcbiAgbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZFxuICBsZXQgc2VudF9yZXN1bHQgeCA6IF8gU2VuZF9yZXN1bHQudCA9IFNlbnQgeFxuXG4gIGxldCBjaGVja19jbG9zZWQgKHQgOiB0KSBmID1cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHQucGlwZSkgdGhlbiBmICgpIGVsc2UgU2VuZF9yZXN1bHQuQ2xvc2VkXG4gIDs7XG5cbiAgbGV0IGluY3JfYnl0ZXNfd3JpdHRlbiAodCA6IHQpIG51bV9ieXRlcyA9XG4gICAgdC5ieXRlc193cml0dGVuIDwtIEludDYzLih0LmJ5dGVzX3dyaXR0ZW4gKyBvZl9pbnQgbnVtX2J5dGVzKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IHQgd3JpdGVyIHggPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgIGxldCBidWYgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB+aGVhZGVyOnRydWUgd3JpdGVyIHggaW5cbiAgICAgIGxldCBkYXRhID0gRGF0YS5vZl9iaWdzdHJpbmcgYnVmIGluXG4gICAgICBpbmNyX2J5dGVzX3dyaXR0ZW4gdCAoRGF0YS5sZW5ndGggZGF0YSk7XG4gICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdC5waXBlIGRhdGE7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIHRcbiAgICAgICAgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW46cGF5bG9hZF9zaXplXG4gICAgPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgICgqIFdyaXRlIHRoZSBzaXplIGhlYWRlciBtYW51YWxseSBhbmQgY29uY2F0ZW5hdGUgdGhlIHR3byAqKVxuICAgICAgbGV0IGRhdGFfc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLmNyZWF0ZSAoZGF0YV9zaXplICsgSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfc2l6ZSkgaW5cbiAgICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvczowIChkYXRhX3NpemUgKyBwYXlsb2FkX3NpemUpO1xuICAgICAgbGV0IGRzdF9wb3MgPSB3cml0ZXIud3JpdGUgZGF0YSB+cG9zOkhlYWRlci5sZW5ndGggeCBpblxuICAgICAgQmlnc3RyaW5nLmJsaXQgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6ZGF0YSB+ZHN0X3BvcyB+bGVuOnBheWxvYWRfc2l6ZTtcbiAgICAgIGxldCBkYXRhID0gRGF0YS5vZl9iaWdzdHJpbmcgZGF0YSBpblxuICAgICAgaW5jcl9ieXRlc193cml0dGVuIHQgKERhdGEubGVuZ3RoIGRhdGEpO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSBkYXRhO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuID1cbiAgICBtYXRjaCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgfCBTZW50ICgpIC0+IHNlbnRfcmVzdWx0IERlZmVycmVkLnVuaXRcbiAgICB8IChDbG9zZWQgfCBNZXNzYWdlX3Rvb19iaWcgXykgYXMgciAtPiByXG4gIDs7XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IHhcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgeFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcudG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoU3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKFN0cmluZ19kYXRhKVxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJpZ3N0cmluZyA6IGJpZ3N0cmluZyB0XG5cbiAgbGV0IHN0cmluZyA9IFN0cmluZ1xuICBsZXQgYmlnc3RyaW5nID0gQmlnc3RyaW5nXG5lbmRcblxubGV0IG1ha2VfcmVhZGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpIChyZWFkZXIgOiBhIFBpcGUuUmVhZGVyLnQpID1cbiAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG47O1xuXG5sZXQgbWFrZV93cml0ZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHdyaXRlciA6IGEgUGlwZS5Xcml0ZXIudCkgPVxuICBsZXQgd3JpdGVyID0gUGlwZV9hbmRfbW9uaXRvci5jcmVhdGUgd3JpdGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG47O1xuXG5sZXQgY3JlYXRlIGtpbmQgcmVhZGVyIHdyaXRlciA9XG4gIHsgVHJhbnNwb3J0LnJlYWRlciA9IG1ha2VfcmVhZGVyIGtpbmQgcmVhZGVyOyB3cml0ZXIgPSBtYWtlX3dyaXRlciBraW5kIHdyaXRlciB9XG47O1xuXG4oKiBUZXN0aW5nICopXG5cbm1vZHVsZSB0eXBlIFRyYW5zcG9ydF9yZWFkZXIgPSBzaWdcbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfYmlnc3RyaW5nIDogQmlnc3RyaW5nLnQgLT4gdFxuICBlbmRcblxuICBpbmNsdWRlIFRyYW5zcG9ydC5SZWFkZXIuUyB3aXRoIHR5cGUgdCA9IEZvcl90ZXN0aW5nLnQgUGlwZV9hbmRfYnVmZmVyLnRcbmVuZFxuXG5tb2R1bGUgVGVzdF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuXG4gIGxldCBvbl9tZXNzYWdlID8obWVzc2FnZSA9IGRlZmF1bHRfbWVzc2FnZSkgb25fbWVzc2FnZV9jb3VudCBidWZmZXIgfnBvcyB+bGVuID1cbiAgICBvbl9tZXNzYWdlX2NvdW50IDo9ICFvbl9tZXNzYWdlX2NvdW50ICsgMTtcbiAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDptZXNzYWdlO1xuICAgIEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgKCkgPSBpbmNyIG9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuIHZlcmlmeSA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZV9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaF9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIG9uX21lc3NhZ2VfY291bnQgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpO1xuICAgIHdhaXQgKCk7XG4gICAgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnQgbWVzc2FnZV9jb3VudCBiYXRjaF9jb3VudCA9XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fbWVzc2FnZV9jb3VudCB+ZXhwZWN0Om1lc3NhZ2VfY291bnQ7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fZW5kX29mX2JhdGNoX2NvdW50IH5leHBlY3Q6YmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKSBpblxuICAgIGxldCBtZXNzYWdlX3JhdyA9IGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3YWl0ICgpO1xuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3JhdyBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgd3JpdGUgcGFydDE7XG4gICAgd2FpdCAoKTtcbiAgICB3cml0ZSBwYXJ0MlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICB3cml0ZSB0d29fbXNnXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21zZyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tc2cgfnBvczppIH5sZW46MSk7XG4gICAgICB3YWl0ICgpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmsgKHZlcmlmeSAxIDEpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDIgMSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rICh2ZXJpZnkgMSAzKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rICh2ZXJpZnkgMiAxKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgKHZlcmlmeSAyIDM0KVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSA3IDQwKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJjYW4gY2FsbCByZWFkX2ZvcmV2ZXIgbXVsdGlwbGUgdGltZXNcIiA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKCkgaW5cbiAgICBsZXQgd3JpdGUgeCA9IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSBpblxuICAgIGxldCBudW0gPSByZWYgMCBpblxuICAgIGxldCBzdG9wX2FmdGVyX29uX21lc3NhZ2UgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgICBpbmNyIG51bTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0OmRlZmF1bHRfbWVzc2FnZTtcbiAgICAgIEhhbmRsZXJfcmVzdWx0LlN0b3AgKClcbiAgICBpblxuICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgUGlwZS5jbG9zZSB3cml0ZXI7XG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgbGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIERlZmVycmVkLnVuaXQpO1xuICAgIHdhaXQgKCk7XG4gICAgWyV0ZXN0X3Jlc3VsdDogSW50LnRdIH5leHBlY3Q6MiAhbnVtXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuXG5tb2R1bGUgQmVuY2hfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcbiAgbGV0IG9uZV9tZXNzYWdlID0gY3JlYXRlX21lc3NhZ2UgKClcbiAgbGV0IHR3b19tZXNzYWdlcyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbWVzc2FnZTsgb25lX21lc3NhZ2UgXVxuXG4gIGxldCBvbmVfbWVzc2FnZV9wMSwgb25lX21lc3NhZ2VfcDIgPVxuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgcGFydDEsIHBhcnQyXG4gIDs7XG5cbiAgbGV0IG9uX21lc3NhZ2UgX2J1ZmZlciB+cG9zOl8gfmxlbjpfID0gSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpXG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgZm9yIF8gPSAwIHRvIDEwMCBkb1xuICAgICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpXG4gICAgZG9uZTtcbiAgICB3YWl0ICgpXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSBvbmVfbWVzc2FnZVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIilcblxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AxO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSB0d29fbWVzc2FnZXNcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbWVzc2FnZXMgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbWVzc2FnZXMgfnBvczppIH5sZW46MSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVua1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18zX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfb25lX2J5dGVcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVua1xuXG4gIGxldCViZW5jaCBcIm11bHRpXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcbmVuZFxuXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5pbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWxcblxubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LnRcblxuICAgIGxldCBycGNfY29ubmVjdGlvbiA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gIGVuZClcblxubW9kdWxlIFJwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFJwYy5Db25uZWN0aW9uLnRcblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgdFxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCB0XG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCB0XG4gIGVuZClcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gVmVyc2lvbmVkX3JwY1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxubW9kdWxlIFBpcGVfdHJhbnNwb3J0ID0gUGlwZV90cmFuc3BvcnRcbm1vZHVsZSBScGNfZXJyb3IgPSBScGNfZXJyb3Jcbm1vZHVsZSBScGNfcmVzdWx0ID0gUnBjX3Jlc3VsdFxubW9kdWxlIFJwY19zaGFwZXMgPSBScGNfc2hhcGVzXG5tb2R1bGUgT3Jfbm90X2F1dGhvcml6ZWQgPSBPcl9ub3RfYXV0aG9yaXplZFxuXG5tb2R1bGUgUnBjX21ldGFkYXRhIDpcbiAgbW9kdWxlIHR5cGUgb2YgUnBjX21ldGFkYXRhIHdpdGggbW9kdWxlIFByaXZhdGUgOj0gUnBjX21ldGFkYXRhLlByaXZhdGUgPVxuICBScGNfbWV0YWRhdGFcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBScGMuU3RhYmxlXG5lbmRcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29ubmVjdGlvbiA9IENvbm5lY3Rpb25cbiAgbW9kdWxlIFByb3RvY29sID0gUHJvdG9jb2xcbiAgbW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxuXG4gIGxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gQ29ubmVjdGlvbi5kZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0XG5lbmRcbiIsIm9wZW4gU3RyaW5nXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxuXG4oKiBOb3QgdGFpbCByZWN1cnNpdmUgZm9yIFwicGVyZm9ybWFuY2VcIiwgcGxlYXNlIGNob29zZSBsb3cgdmFsdWVzIGZvclxuICAgW21heF0uIFRoZSBpZGVhIGlzIHRoYXQgbWF4IGlzIGFsd2F5cyBzbWFsbCBiZWNhdXNlIGl0J3MgaGFyZFxuICAgY29kZSAqKVxubGV0IHNwbGl0X2NoYXJfYm91bmRlZCBzdHIgfm9uIH5tYXggPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW3N0cl1cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBvZmZzZXQgdG9rZW5zID1cbiAgICAgIGlmIHRva2VucyA9IG1heCAtIDFcbiAgICAgIHRoZW4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgICAgXCJcIjo6KGxvb3AgKG9mZnNldCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBTdHJpbmcuc3ViIHN0ciBvZmZzZXQgKGluZGV4IC0gb2Zmc2V0KSBpblxuICAgICAgICAgICAgdG9rZW46Oihsb29wIChpbmRleCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICBpbiBsb29wIDAgMFxuXG5sZXQgc3BsaXRfY2hhcl91bmJvdW5kZWQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKFwiXCI6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IChzdWIgc3RyIDAgKG9mZnNldCArIDEpKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmxldCBvZl9jaGFyID0gU3RyaW5nLm1ha2UgMVxuXG5sZXQgZnVsbF9zcGxpdCBzdHIgfm9uID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgc2VwID0gb2ZfY2hhciBvbiBpblxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChzZXA6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHNlcDo6dG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgICAgdGhlbiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgICAgICBlbHNlIGFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG4oKiBjb3B5aW5nIGNvcmUncyBjb252ZW50aW9uIGZvciBTdHJpbmcuc3BsaXQgYnV0IHdpdGggYW4gb3B0aW9uYWwgbWF4XG4gICBhcmd1bWVudCAqKVxubGV0IHNwbGl0ID9tYXggcyB+b24gPVxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gc3BsaXRfY2hhcl91bmJvdW5kZWQgcyB+b25cbiAgfCBTb21lIG1heCAtPiAgICAgICAgICAgICAgICAgKCogYXNzZXJ0IChtYXggPCAxMDApOyAqKVxuICAgIHNwbGl0X2NoYXJfYm91bmRlZCBzIH5vbiB+bWF4XG5cbmxldCByaW5kZXhfZnJvbV9vbiBzIH5vZmZzZXQgfm9uID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgb24gcy5baV0gdGhlbiBpXG4gICAgZWxzZSBsb29wIChpIC0gMSlcbiAgaW4gbG9vcCBvZmZzZXRcblxubGV0IHRyaW1fbGVmdF9zdWIgcyB+cG9zIH5sZW4gfmNoYXJzID1cbiAgbGV0IHN0YXJ0X3BvcyA9XG4gICAgbGV0IGZpbmFsID0gcG9zICsgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGxhc3RfY2hhciBpID1cbiAgICAgIGlmIGkgPSBmaW5hbCB0aGVuIGxhc3RfY2hhclxuICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgY2hhcnMgcy5baV0gdGhlbiBsb29wIChpICsgMSkgKGkgKyAxKVxuICAgICAgZWxzZSBsYXN0X2NoYXJcbiAgICBpbiBsb29wIHBvcyBwb3NcbiAgaW5cbiAgbGV0IG5ld19sZW4gPSBsZW4gLSAoc3RhcnRfcG9zIC0gcG9zKSBpblxuICBTdHJpbmcuc3ViIHMgc3RhcnRfcG9zIG5ld19sZW5cblxubGV0IHNwbGl0X3RyaW1fbGVmdCBzdHIgfm9uIH50cmltID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb21fb24gc3RyIH5vZmZzZXQgfm9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSB0cmltX2xlZnRfc3ViIHN0ciB+cG9zOihpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB+bGVuOihvZmZzZXQgLSBpbmRleCkgfmNoYXJzOnRyaW0gaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAodHJpbV9sZWZ0X3N1YiBzdHIgfnBvczowIH5sZW46KG9mZnNldCArIDEpIH5jaGFyczp0cmltKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmV4Y2VwdGlvbiBGb3VuZF9pbnQgb2YgaW50XG5cbmxldCBmaXJzdF9jaGFyX25lIHMgYyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgcy5bMF0gPD4gY1xuXG5sZXQgdHJpbV9sZWZ0IHMgPVxuICBpZiBmaXJzdF9jaGFyX25lIHMgJyAnIHRoZW4gc1xuICBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIHRyeVxuICAgICAgZm9yIGk9MCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGlmIHMuW2ldIDw+ICcgJyB0aGVuIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICAgIGRvbmU7XG4gICAgICBcIlwiXG4gICAgd2l0aCBGb3VuZF9pbnQgbm9uX3NwYWNlIC0+XG4gICAgICBzdWIgcyBub25fc3BhY2UgKGxlbiAtIG5vbl9zcGFjZSlcblxubGV0IHN1YnN0cl9lcSA/KHN0YXJ0PTApIHMgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIC0gMSBkb1xuICAgICAgaWYgcy5baSArIHN0YXJ0XSA8PiBwYXR0ZXJuLltpXSB0aGVuIHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBfIC0+IGZhbHNlXG5cbmxldCBmaW5kX2Zyb20gPyhzdGFydD0wKSBzdHIgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IHN0YXJ0IHRvIChTdHJpbmcubGVuZ3RoIHN0cikgLSAoU3RyaW5nLmxlbmd0aCBwYXR0ZXJuKSBkb1xuICAgICAgaWYgc3Vic3RyX2VxIH5zdGFydDppIHN0ciB+cGF0dGVybiB0aGVuXG4gICAgICAgIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICBkb25lO1xuICAgIE5vbmVcbiAgd2l0aFxuICB8IEZvdW5kX2ludCBpIC0+IFNvbWUgaVxuICB8ICBfIC0+IE5vbmVcblxubGV0IGZpbmRfbWluIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgeCBmeCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBTb21lICh4LCBmeClcbiAgICB8IHgnOjp4cyAtPlxuICAgICAgbGV0IGZ4JyA9IGYgeCcgaW5cbiAgICAgIGlmIGZ4JyA8IGZ4IHRoZW4gbG9vcCB4JyBmeCcgeHNcbiAgICAgIGVsc2UgbG9vcCB4IGZ4IHhzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4Ojp4cyAtPiBsb29wIHggKGYgeCkgeHNcblxubGV0IHJlcGxhY2VfYWxsIHN0ciB+cGF0dGVybiB+d2l0aF8gPVxuICBsZXQgKHNsZW4sIHBsZW4pID0gU3RyaW5nLihsZW5ndGggc3RyLCBsZW5ndGggcGF0dGVybikgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICB8IFNvbWUgaiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICBsb29wIChqICsgcGxlbilcbiAgaW4gbG9vcCAwXG5cbmV4Y2VwdGlvbiBGb3VuZF9yZXBsYWNlIG9mIGludCAqIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgcmVwbGFjZV9hbGxfYXNzb2Mgc3RyIHRibCA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBzbGVuIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgIGVsc2VcbiAgICAgIGxldCByID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IGUgPVxuICAgICAgICAgICAgZmluZF9taW4gdGJsIH5mOihmdW4gKHBhdHRlcm4sIHdpdGhfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBmaW5kX2Zyb20gfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lICAgLT4gbWF4X2ludFxuICAgICAgICAgICAgICB8IFNvbWUgaiB3aGVuIGogPSBpIC0+IHJhaXNlIChGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykpXG4gICAgICAgICAgICAgIHwgU29tZSBqIC0+IGZvdW5kIDo9IHRydWU7IGopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSAoKHBhdHRlcm4sIHdpdGhfKSwgaikgd2hlbiAhZm91bmQgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICB3aXRoIEZvdW5kX3JlcGxhY2UgKGosIHBhdHRlcm4sIHdpdGhfKSAtPiBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXylcbiAgICAgIGluXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgICAgfCBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiB3aXRoXztcbiAgICAgICAgbG9vcCAoaiArIFN0cmluZy5sZW5ndGggcGF0dGVybilcbiAgaW4gbG9vcCAwXG5cbmxldCBpdGVyaSBmIGwgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeDo6eHMgLT4gKGYgaSB4KTsgbG9vcCAoc3VjYyBpKSB4c1xuICBpbiBsb29wIDAgbFxuXG5sZXQgb2ZfbGlzdCB4cyA9XG4gIGxldCBsID0gTGlzdC5sZW5ndGggeHMgaW5cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBpdGVyaSAoZnVuIGkgYyAtPiBCeXRlcy5zZXQgcyBpIGMpIHhzO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA9IC0xIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbG9vcCAocy5baV0gOjogYWNjKSAocHJlZCBpKVxuICBpbiBsb29wIFtdIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IGJ5dGVzIGkgYS4oaSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBieXRlc1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKFN0cmluZy5sZW5ndGggcykgKFN0cmluZy5nZXQgcylcblxuKCogcmlwcGVkIG9mZiBmcm9tIG9uZSBvZiBkYnVlbnpsaSdzIGxpYnMgKilcbmxldCBjdXQgcyB+b24gPVxuICBsZXQgc2VwX21heCA9IGxlbmd0aCBvbiAtIDEgaW5cbiAgaWYgc2VwX21heCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZ2V4dC5jdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gZW5kIHdpdGggW2ldIHRyeWluZyB0byBtYXRjaCB0aGVcbiAgICAgICAgIGZpcnN0IGNoYXJhY3RlciBvZiBbb25dIGluIFtzXS4gSWYgdGhpcyBtYXRjaGVzLCB3ZSB2ZXJpZnkgdGhhdFxuICAgICAgICAgdGhlIHdob2xlIFtvbl0gaXMgbWF0Y2hlZCB1c2luZyBba10uIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2VcbiAgICAgICAgIGNvbnRpbnVlIHRvIGxvb2sgZm9yIFtvbl0gd2l0aCBbaV0uIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGVcbiAgICAgICAgIGxvb3AgYW5kIGV4dHJhY3QgYSBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZVxuICAgICAgICAgcG9zaXRpb24gYmVmb3JlIHRoZSBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uXG4gICAgICAgICBhZnRlciB0aGUgW29uXSB3ZSBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiBJZiBbaV0gaXMgc3VjaCB0aGF0IG5vXG4gICAgICAgICBzZXBhcmF0b3IgY2FuIGJlIGZvdW5kIHdlIGV4aXQgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUgbm8gbWF0Y2hcbiAgICAgICAgIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpICsgc2VwX21heCA8PSBzX21heCkgZG9cbiAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZSBzICghaSArICFrKSBpc1xuICAgICAgICAgICAgIGd1YXJhbnRlZWQgYnkgbG9vcCBpbnZhcmlhbnQuICopXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gMCB0aGVuIGluY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICBrIDo9IDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPD0gc2VwX21heCAmJiB1bnNhZmVfZ2V0IHMgKCFpICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGluY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPD0gc2VwX21heCB0aGVuICgqIG5vIG1hdGNoICopIGluY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gMSBpblxuICAgICAgICBsZXQgcmlnaHRfc3RhcnQgPSAhaSArIHNlcF9tYXggKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCByY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQucmN1dDogZW1wdHkgc2VwYXJhdG9yXCIgZWxzZVxuICAgIGxldCBzX21heCA9IGxlbmd0aCBzIC0gMSBpblxuICAgIGlmIHNfbWF4IDwgMCB0aGVuIE5vbmUgZWxzZVxuICAgICAgbGV0IGsgPSByZWYgMCBpblxuICAgICAgbGV0IGkgPSByZWYgc19tYXggaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBlbmQgb2YgW3NdIHRvIHRoZSBiZWdpbm5pbmcgd2l0aCBbaV0gdHJ5aW5nIHRvXG4gICAgICAgICBtYXRjaCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2VcbiAgICAgICAgIHZlcmlmeSB0aGF0IHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdICh3ZSBkbyB0aGF0XG4gICAgICAgICBiYWNrd2FyZHMpLiAgSWYgaXQgZG9lc24ndCBtYXRjaCB3ZSBjb250aW51ZSB0byBsb29rIGZvciBbb25dXG4gICAgICAgICB3aXRoIFtpXS4gIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGUgbG9vcCBhbmQgZXh0cmFjdCBhXG4gICAgICAgICBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlXG4gICAgICAgICBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBbb25dIHdlXG4gICAgICAgICBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiAgSWYgW2ldIGlzIHN1Y2ggdGhhdCBubyBzZXBhcmF0b3IgY2FuXG4gICAgICAgICBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpID49IHNlcF9tYXgpIGRvXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gc2VwX21heCB0aGVuIGRlY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgIHMgKHNlcF9zdGFydCArICFrKSBpcyBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgICAgbGV0IHNlcF9zdGFydCA9ICFpIC0gc2VwX21heCBpblxuICAgICAgICAgICAgayA6PSBzZXBfbWF4IC0gMTtcbiAgICAgICAgICAgIHdoaWxlICghayA+PSAwICYmIHVuc2FmZV9nZXQgcyAoc2VwX3N0YXJ0ICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGRlY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPj0gMCB0aGVuICgqIG5vIG1hdGNoICopIGRlY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gc2VwX21heCAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBsZXQgcHJlZml4X2wgPSBTdHJpbmcubGVuZ3RoIHByZWZpeCBpblxuICBsZXQgc3RyaW5nX2wgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgcHJlZml4X2wgPiBzdHJpbmdfbCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgIHRyeVxuICAgICAgZm9yIGkgPSAwIHRvIHByZWZpeF9sIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiBwcmVmaXguW2ldIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGRvbmU7XG4gICAgICBTb21lIChTdHJpbmcuc3ViIHMgcHJlZml4X2wgKHN0cmluZ19sIC0gcHJlZml4X2wpKVxuICAgIHdpdGggXyAtPiBOb25lXG5cbmxldCBkcm9wIHMgbiA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIG4gPj0gbFxuICB0aGVuIFwiXCJcbiAgZWxzZSBTdHJpbmcuc3ViIHMgbiAobCAtIG4pXG5cbmxldCB0YWtlIHMgbiA9XG4gIGlmIG4gPj0gU3RyaW5nLmxlbmd0aCBzXG4gIHRoZW4gc1xuICBlbHNlIFN0cmluZy5zdWIgcyAwIG5cbiIsInR5cGUgYmlnc3RyaW5nID1cbiAgKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxudHlwZSB0ID0gYmlnc3RyaW5nXG5cbmxldCBjcmVhdGUgc2l6ZSA9IEJpZ2FycmF5LihBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgc2l6ZSlcbmxldCBlbXB0eSAgICAgICA9IGNyZWF0ZSAwXG5cbm1vZHVsZSBCQTEgPSBCaWdhcnJheS5BcnJheTFcblxubGV0IGxlbmd0aCB0ID0gQkExLmRpbSB0XG5cbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gY2hhciAgICAgICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgICAgICAgICAgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gQnl0ZXMudCAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXNcIiAgICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyA6IEJ5dGVzLnQgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcCA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX3N0cmluZyA6IHQgLT4gaW50IC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jaHIgOiB0IC0+IGludCAtPiBjaGFyIC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNoclwiIFtAQG5vYWxsb2NdXG5cbmxldCBzdWIgdCB+b2ZmIH5sZW4gPVxuICBCQTEuc3ViIHQgb2ZmIGxlblxuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHMgb3AgYnVmZmVyX2xlbiBvZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWZmZXJfbGVuOiAlZCwgb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWZmZXJfbGVuIG9mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19ibGl0IG9wIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBzcmNfbGVuOiAlZCwgc3JjX29mZjogJWQsIGRzdF9sZW46ICVkLCBkc3Rfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzX21lbWNtcCBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IGJ1ZjFfbGVuOiAlZCwgYnVmMV9vZmY6ICVkLCBidWYyX2xlbjogJWQsIGJ1ZjJfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbigqIEEgbm90ZSBvbiBib3VuZHMgY2hlY2tpbmcuXG4gKlxuICogVGhlIGNvZGUgc2hvdWxkIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgYmxpdCBkb2Vzbid0XG4gKiBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlcjpcbiAqXG4gKiAgIHtbb2ZmICsgbGVuIDw9IGJ1ZmZlcl9sZW5dfVxuICpcbiAqIEhvd2V2ZXIsIHRoaXMgbWF5IGxlYWQgdG8gYW4gaW50ZWdlciBvdmVyZmxvdyBmb3IgbGFyZ2UgdmFsdWVzIG9mIFtvZmZdLFxuICogZS5nLiwgW21heF9pbnRdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBjb21wYXJpc29uIHRvIHJldHVybiBbdHJ1ZV0gd2hlbiBpdFxuICogc2hvdWxkIHJlYWxseSByZXR1cm4gW2ZhbHNlXS5cbiAqXG4gKiBBbiBlcXVpdmFsZW50IGNvbXBhcmlzb24gdGhhdCBkb2VzIG5vdCBydW4gaW50byB0aGlzIGludGVnZXIgb3ZlcmZsb3dcbiAqIHByb2JsZW0gaXM6XG4gKlxuICogICB7W2J1ZmZlcl9sZW4gLSBvZmYgPT4gbGVuXX1cbiAqXG4gKiBUaGlzIGlzIGNoZWNraW5nIHRoYXQgdGhlIGlucHV0IGJ1ZmZlciwgbGVzcyB0aGUgb2Zmc2V0LCBpcyBzdWZmaWNpZW50bHlcbiAqIGxvbmcgdG8gcGVyZm9ybSB0aGUgYmxpdC4gU2luY2UgdGhlIGV4cHJlc3Npb24gaXMgc3VidHJhY3RpbmcgW29mZl0gcmF0aGVyXG4gKiB0aGFuIGFkZGluZyBpdCwgaXQgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGUgb3ZlcmZsb3cgdGhhdCB0aGUgcHJldmlvdXNcbiAqIGluZXF1YWxpdHkgZGlkLiBBcyBsb25nIGFzIHRoZXJlIGlzIGEgY2hlY2sgdG8gZW5zdXJlIHRoYXQgW29mZl0gaXMgbm90XG4gKiBuZWdhdGl2ZSwgaXQgd29uJ3QgdW5kZXJmbG93IGVpdGhlci4gKilcblxubGV0IGNvcHkgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJjb3B5XCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCB0IH5zcmNfb2ZmOm9mZiBkc3QgfmRzdF9vZmY6MCB+bGVuO1xuICBkc3Rcbjs7XG5cbmxldCBzdWJzdHJpbmcgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJzdWJzdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHQgfnNyY19vZmY6MCBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgb2Zfc3RyaW5nIH5vZmYgfmxlbiBzID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm9mX3N0cmluZ1wiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6b2ZmIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBiXG47O1xuXG5sZXQgYmxpdCBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IFN0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X3RvX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IEJ5dGVzLmxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBtZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IGxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjFfb2ZmIDwgMCB8fCBidWYxX2xlbiAtIGJ1ZjFfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcCBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuXG47O1xuXG5sZXQgbWVtY21wX3N0cmluZyBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuID1cbiAgbGV0IGJ1ZjFfbGVuID0gbGVuZ3RoIGJ1ZjEgaW5cbiAgbGV0IGJ1ZjJfbGVuID0gU3RyaW5nLmxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjJfb2ZmIDwgMCB8fCBidWYyX2xlbiAtIGJ1ZjJfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNociBidWYgYnVmX29mZiBjaHIgbGVuID1cbiAgbGV0IGJ1Zl9sZW4gPSBsZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm1lbWNoclwiIGJ1Zl9sZW4gYnVmX29mZiBsZW47XG4gIGlmIGJ1Zl9vZmYgPCAwIHx8IGJ1Zl9sZW4gLSBidWZfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY2hyIGJ1ZiBidWZfb2ZmIGNociBsZW5cblxuKCogU2FmZSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMyXCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0XCJcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjRcIlxuXG5tb2R1bGUgU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF8xNiBicyBvZmYgKGJzd2FwMTYgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQ2NCAoY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZilcblxuICBsZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgeCBvZmYgPVxuICAgICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcbmVuZFxuXG5sZXQgc2V0X2ludDE2X2xlLCBzZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19zZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMTZcblxubGV0IHNldF9pbnQzMl9sZSwgc2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG5cbmxldCBzZXRfaW50NjRfbGUsIHNldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3NldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF82NFxuXG5sZXQgZ2V0X2ludDE2X2xlLCBnZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19nZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMTZcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCB4IG9mZiA9XG4gICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUsIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlICA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5nZXRfaW50MTZfc2lnbl9leHRlbmRlZCAgLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXBcbiAgZWxzZSBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAsIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRcblxubGV0IGdldF9pbnQzMl9sZSwgZ2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG5cbmxldCBnZXRfaW50NjRfbGUsIGdldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX2dldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF82NFxuXG4oKiBVbnNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcblxubW9kdWxlIFVTd2FwID0gc3RydWN0XG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiAoYnN3YXBfaW50NjQgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZiA9XG4gICAgYnN3YXBfaW50MzIgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgYnMgb2ZmKVxuZW5kXG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlLCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9sZSwgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfbGUsIHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlLCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlIHggb2ZmID1cbiAgKCh1bnNhZmVfZ2V0X2ludDE2X2xlIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9iZSB4IG9mZiApIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSwgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGUsIHVuc2FmZV9nZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4iLCJ0eXBlICdhIHN0YXRlID1cbiAgfCBQYXJ0aWFsIG9mICdhIHBhcnRpYWxcbiAgfCBEb25lICAgIG9mIGludCAqICdhXG4gIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG5hbmQgJ2EgcGFydGlhbCA9XG4gIHsgY29tbWl0dGVkIDogaW50XG4gIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHN0YXRlIH1cblxuXG5sZXQgc3RhdGVfdG9fb3B0aW9uIHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICB8IEZhaWwgXyAgICAgLT4gTm9uZVxuICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuXG5sZXQgZmFpbF90b19zdHJpbmcgbWFya3MgZXJyID1cbiAgU3RyaW5nLmNvbmNhdCBcIiA+IFwiIG1hcmtzIF4gXCI6IFwiIF4gZXJyXG5cbmxldCBzdGF0ZV90b19yZXN1bHQgeCA9IG1hdGNoIHggd2l0aFxuICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgfCBGYWlsKF8sIG1hcmtzLCBlcnIpIC0+IEVycm9yIChmYWlsX3RvX3N0cmluZyBtYXJrcyBlcnIpXG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbnR5cGUgdCA9XG4gIHsgbXV0YWJsZSBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDogaW50XG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyAgICAgICAgIDogaW50XG4gIDsgb2ZmICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgbGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDogQmlnc3RyaW5nYWYudFxuICB9XG5cbmxldCBjcmVhdGUgYnVmZmVyIH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzID1cbiAgeyBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gY29tbWl0dGVkX2J5dGVzXG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IG9mZlxuICA7IGxlblxuICA7IGJ1ZmZlciB9XG5cbmxldCBsZW5ndGggICAgICAgICAgICAgICAgIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgKyB0LmxlblxubGV0IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgdCA9IHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xubGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCA9IHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgY29tbWl0dGVkX2J5dGVzX2Rpc2NyZXBhbmN5IHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgLSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCAgdCA9IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0XG5cbmxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IHQubGVuIC0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCArIHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0ID0gbGVuZ3RoIHQpO1xuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCAtIGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICB0ID0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdCk7XG47O1xuXG5sZXQgb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyA9XG4gIHQub2ZmICsgcG9zIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5cbmxldCBhcHBseSB0IHBvcyBsZW4gfmYgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBmIHQuYnVmZmVyIH5vZmYgfmxlblxuXG5sZXQgdW5zYWZlX2dldF9jaGFyIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldCB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IGNvdW50X3doaWxlIHQgcG9zIH5mID1cbiAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gIGxldCBvZmYgICAgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIGxldCBpICAgICAgPSByZWYgb2ZmIGluXG4gIGxldCBsaW1pdCAgPSB0Lm9mZiArIHQubGVuIGluXG4gIHdoaWxlICFpIDwgbGltaXQgJiYgZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gICFpIC0gb2ZmXG47O1xuXG5sZXQgY29tbWl0IHQgcG9zID1cbiAgdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIDwtIHBvc1xuOztcbiIsIm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gICAgfCBMYXp5ICAgIG9mICdhIHQgTGF6eS50XG4gICAgfCBEb25lICAgIG9mIGludCAqICdhXG4gICAgfCBGYWlsICAgIG9mIGludCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgYW5kICdhIHBhcnRpYWwgPVxuICAgIHsgY29tbWl0dGVkIDogaW50XG4gICAgOyBjb250aW51ZSAgOiBCaWdzdHJpbmdhZi50IC0+IG9mZjppbnQgLT4gbGVuOmludCAtPiBNb3JlLnQgLT4gJ2EgdCB9XG5cbmVuZFxudHlwZSAnYSB3aXRoX3N0YXRlID0gSW5wdXQudCAtPiAgaW50IC0+IE1vcmUudCAtPiAnYVxuXG50eXBlICdhIGZhaWx1cmUgPSAoc3RyaW5nIGxpc3QgLT4gc3RyaW5nIC0+ICdhIFN0YXRlLnQpIHdpdGhfc3RhdGVcbnR5cGUgKCdhLCAncikgc3VjY2VzcyA9ICgnYSAtPiAnciBTdGF0ZS50KSB3aXRoX3N0YXRlXG5cbnR5cGUgJ2EgdCA9XG4gIHsgcnVuIDogJ3IuICgnciBmYWlsdXJlIC0+ICgnYSwgJ3IpIHN1Y2Nlc3MgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZSB9XG5cbmxldCBmYWlsX2sgICAgaW5wdXQgcG9zIF8gbWFya3MgbXNnID1cbiAgU3RhdGUuRmFpbChwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCBtYXJrcywgbXNnKVxubGV0IHN1Y2NlZWRfayBpbnB1dCBwb3MgXyAgICAgICB2ICAgPVxuICBTdGF0ZS5Eb25lKHBvcyAtIElucHV0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgaW5wdXQsIHYpXG5cbmxldCByZWMgdG9fZXhwb3J0ZWRfc3RhdGUgPSBmdW5jdGlvblxuICB8IFN0YXRlLlBhcnRpYWwge2NvbW1pdHRlZDtjb250aW51ZX0gLT5cbiAgICAgRXhwb3J0ZWRfc3RhdGUuUGFydGlhbFxuICAgICAgIHsgY29tbWl0dGVkXG4gICAgICAgOyBjb250aW51ZSA9XG4gICAgICAgICAgIGZ1biBicyB+b2ZmIH5sZW4gbW9yZSAtPlxuICAgICAgICAgICB0b19leHBvcnRlZF9zdGF0ZSAoY29udGludWUgYnMgfm9mZiB+bGVuIG1vcmUpfVxuICB8IFN0YXRlLkRvbmUgKGkseCkgLT4gRXhwb3J0ZWRfc3RhdGUuRG9uZSAoaSx4KVxuICB8IFN0YXRlLkZhaWwgKGksIHNsLCBzKSAtPiBFeHBvcnRlZF9zdGF0ZS5GYWlsIChpLCBzbCwgcylcbiAgfCBTdGF0ZS5MYXp5IHggLT4gdG9fZXhwb3J0ZWRfc3RhdGUgKExhenkuZm9yY2UgeClcblxubGV0IHBhcnNlIHAgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgQmlnc3RyaW5nYWYuZW1wdHkgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOjAgaW5cbiAgdG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgSW5jb21wbGV0ZSBmYWlsX2sgc3VjY2VlZF9rKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nIHAgaW5wdXQgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggaW5wdXQpIGluXG4gIEV4cG9ydGVkX3N0YXRlLnN0YXRlX3RvX3Jlc3VsdCAodG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgQ29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaykpXG5cbm1vZHVsZSBNb25hZCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuIHYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgdlxuICAgIH1cblxuICBsZXQgZmFpbCBtc2cgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgX3N1Y2MgLT5cbiAgICAgIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gbXNnXG4gICAgfVxuXG4gIGxldCAoPj49KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSAoZiB2KS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPj58KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIChmIHYpIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPCQ+KSBmIG0gPVxuICAgIG0gPj58IGZcblxuICBsZXQgKDwqPikgZiBtID1cbiAgICAoKiBmID4+PSBmdW4gZiAtPiBtID4+fCBmICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgZiA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSAoZiBtKSBpblxuICAgICAgICBtLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgZi5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5cbiAgbGV0IGxpZnQgZiBtID1cbiAgICBmIDwkPiBtXG5cbiAgbGV0IGxpZnQyIGYgbTEgbTIgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID0gc3VjYyBpbnB1dDIgcG9zMiBtb3JlMiAoZiBtMSBtMikgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgc3VjYyBpbnB1dDMgcG9zMyBtb3JlMyAoZiBtMSBtMiBtMykgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgbGlmdDQgZiBtMSBtMiBtMyBtNCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPVxuICAgICAgICAgIGxldCBzdWNjMyBpbnB1dDMgcG9zMyBtb3JlMyBtMyA9XG4gICAgICAgICAgICBsZXQgc3VjYzQgaW5wdXQ0IHBvczQgbW9yZTQgbTQgPVxuICAgICAgICAgICAgICBzdWNjIGlucHV0NCBwb3M0IG1vcmU0IChmIG0xIG0yIG0zIG00KSBpblxuICAgICAgICAgICAgbTQucnVuIGlucHV0MyBwb3MzIG1vcmUzIGZhaWwgc3VjYzQgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgKCAqPikgYSBiID1cbiAgICAoKiBhID4+PSBmdW4gXyAtPiBiICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9IGIucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwqICkgYSBiID1cbiAgICAoKiBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4ICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgeCA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBfID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSB4IGluXG4gICAgICAgIGIucnVuIGlucHV0MCBwb3MwIG1vcmUwIGZhaWwgc3VjYzFcbiAgICAgIGluXG4gICAgICBhLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MwIH1cbmVuZFxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIGxldCAoPD8+KSBwIG1hcmsgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgKG1hcms6Om1hcmtzKSBtc2cgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5cbiAgbGV0ICg8fD4pIHAgcSA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgbWFya3MgbXNnID1cbiAgICAgICAgKCogVGhlIG9ubHkgdHdvIGNvbnN0cnVjdG9ycyB0aGF0IGludHJvZHVjZSBuZXcgZmFpbHVyZSBjb250aW51YXRpb25zIGFyZVxuICAgICAgICAgKiBbPD8+XSBhbmQgWzx8Pl0uIElmIHRoZSBpbml0aWFsIGlucHV0IHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoXG4gICAgICAgICAqIG9mIHRoZSBjb21taXR0ZWQgaW5wdXQsIHRoZW4gY2FsbGluZyB0aGUgZmFpbHVyZSBjb250aW51YXRpb24gd2lsbFxuICAgICAgICAgKiBoYXZlIHRoZSBlZmZlY3Qgb2YgdW53aW5kaW5nIGFsbCBjaG9pY2VzIGFuZCBjb2xsZWN0aW5nIG1hcmtzIGFsb25nXG4gICAgICAgICAqIHRoZSB3YXkuICopXG4gICAgICAgIGlmIHBvcyA8IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnIHRoZW5cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUgbWFya3MgbXNnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBxLnJ1biBpbnB1dCcgcG9zIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCcgc3VjY1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTW9uYWRfdXNlX2Zvcl9kZWJ1Z2dpbmcgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IE1vbmFkLnJldHVyblxuICBsZXQgZmFpbCAgID0gTW9uYWQuZmFpbFxuICBsZXQgKD4+PSkgID0gTW9uYWQuKD4+PSlcblxuICBsZXQgKD4+fCkgbSBmID0gbSA+Pj0gZnVuIHggLT4gcmV0dXJuIChmIHgpXG5cbiAgbGV0ICg8JD4pIGYgbSA9IG0gPj58IGZcbiAgbGV0ICg8Kj4pIGYgbSA9IGYgPj49IGZ1biBmIC0+IG0gPj58IGZcblxuICBsZXQgbGlmdCAgPSAoPj58KVxuICBsZXQgbGlmdDIgZiBtMSBtMiAgICAgICA9IGYgPCQ+IG0xIDwqPiBtMlxuICBsZXQgbGlmdDMgZiBtMSBtMiBtMyAgICA9IGYgPCQ+IG0xIDwqPiBtMiA8Kj4gbTNcbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zIDwqPiBtNFxuXG4gIGxldCAoICo+KSBhIGIgPSBhID4+PSBmdW4gXyAtPiBiXG4gIGxldCAoPCogKSBhIGIgPSBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4XG5lbmRcbiIsInR5cGUgdCA9XG4gIHsgbXV0YWJsZSBidWYgOiBCaWdzdHJpbmdhZi50XG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludCB9XG5cbmxldCBvZl9iaWdzdHJpbmcgfm9mZiB+bGVuIGJ1ZiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBidWYgPj0gbGVuIC0gb2ZmKTtcbiAgeyBidWY7IG9mZjsgbGVuIH1cblxubGV0IGNyZWF0ZSBsZW4gPVxuICBvZl9iaWdzdHJpbmcgfm9mZjowIH5sZW46MCAoQmlnc3RyaW5nYWYuY3JlYXRlIGxlbilcblxubGV0IHdyaXRhYmxlX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSB0LmxlblxuXG5sZXQgdHJhaWxpbmdfc3BhY2UgdCA9XG4gIEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiAtICh0Lm9mZiArIHQubGVuKVxuXG5sZXQgY29tcHJlc3MgdCA9XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIHQuYnVmIH5kc3Rfb2ZmOjAgfmxlbjp0LmxlbjtcbiAgdC5vZmYgPC0gMFxuXG5sZXQgZ3JvdyB0IHRvX2NvcHkgPVxuICBsZXQgb2xkX2xlbiA9IEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIGxldCBzcGFjZSA9IHdyaXRhYmxlX3NwYWNlIHQgaW5cbiAgd2hpbGUgc3BhY2UgKyAhbmV3X2xlbiAtIG9sZF9sZW4gPCB0b19jb3B5IGRvXG4gICAgbmV3X2xlbiA6PSAoMyAqICFuZXdfbGVuKSAvIDJcbiAgZG9uZTtcbiAgbGV0IG5ld19idWYgPSBCaWdzdHJpbmdhZi5jcmVhdGUgIW5ld19sZW4gaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgdC5idWYgfnNyY19vZmY6dC5vZmYgbmV3X2J1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQuYnVmIDwtIG5ld19idWY7XG4gIHQub2ZmIDwtIDBcblxubGV0IGVuc3VyZSB0IHRvX2NvcHkgPVxuICBpZiB0cmFpbGluZ19zcGFjZSB0IDwgdG9fY29weSB0aGVuXG4gICAgaWYgd3JpdGFibGVfc3BhY2UgdCA+PSB0b19jb3B5XG4gICAgdGhlbiBjb21wcmVzcyB0XG4gICAgZWxzZSBncm93IHQgdG9fY29weVxuXG5sZXQgd3JpdGVfcG9zIHQgPVxuICB0Lm9mZiArIHQubGVuXG5cbmxldCBmZWVkX3N0cmluZyB0IH5vZmYgfmxlbiBzdHIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0ciA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHN0ciB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9iaWdzdHJpbmcgdCB+b2ZmIH5sZW4gYiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBiID49IGxlbiAtIG9mZik7XG4gIGVuc3VyZSB0IGxlbjtcbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgYiB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9pbnB1dCB0ID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nICAgIHMgLT4gZmVlZF9zdHJpbmcgICAgdCB+b2ZmOjAgfmxlbjooU3RyaW5nICAgICAubGVuZ3RoIHMpIHNcbiAgfCBgQmlnc3RyaW5nIGIgLT4gZmVlZF9iaWdzdHJpbmcgdCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGIpIGJcblxubGV0IHNoaWZ0IHQgbiA9XG4gIGFzc2VydCAodC5sZW4gPj0gbik7XG4gIHQub2ZmIDwtIHQub2ZmICsgbjtcbiAgdC5sZW4gPC0gdC5sZW4gLSBuXG5cbmxldCBmb3JfcmVhZGluZyB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIEJpZ3N0cmluZ2FmLnN1YiB+b2ZmIH5sZW4gYnVmXG5cbm1vZHVsZSBVbmNvbnN1bWVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBidWYgOiBCaWdzdHJpbmdhZi50XG4gICAgOyBvZmYgOiBpbnRcbiAgICA7IGxlbiA6IGludCB9XG5lbmRcblxubGV0IHVuY29uc3VtZWQgPyhzaGlmdD0wKSB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIGFzc2VydCAobGVuID49IHNoaWZ0KTtcbiAgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmID0gb2ZmICsgc2hpZnQ7IGxlbiA9IGxlbiAtIHNoaWZ0IH1cblxubGV0IG9mX3VuY29uc3VtZWQgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbnR5cGUgdW5jb25zdW1lZCA9IFVuY29uc3VtZWQudCA9XG4gIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG9mZiA6IGludFxuICA7IGxlbiA6IGludCB9XG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbm1vZHVsZSBCaWdhcnJheSA9IHN0cnVjdFxuICAoKiBEbyBub3QgYWNjZXNzIEJpZ2FycmF5IG9wZXJhdGlvbnMgZGlyZWN0bHkuIElmIGFueXRoaW5nJ3MgbmVlZGVkLCByZWZlciB0b1xuICAgKiB0aGUgaW50ZXJuYWwgQmlnc3RyaW5nIG1vZHVsZS4gKilcbmVuZFxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZ2FmLnRcblxuXG5tb2R1bGUgVW5idWZmZXJlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhcnNlclxuXG4gIGluY2x1ZGUgRXhwb3J0ZWRfc3RhdGVcblxuICB0eXBlIG1vcmUgPSBNb3JlLnQgPVxuICAgIHwgQ29tcGxldGVcbiAgICB8IEluY29tcGxldGVcbmVuZFxuXG5pbmNsdWRlIFVuYnVmZmVyZWRcbmluY2x1ZGUgUGFyc2VyLk1vbmFkXG5pbmNsdWRlIFBhcnNlci5DaG9pY2VcblxubW9kdWxlIEJ1ZmZlcmVkID0gc3RydWN0XG4gIHR5cGUgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkID1cbiAgICB7IGJ1ZiA6IGJpZ3N0cmluZ1xuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuXG4gIHR5cGUgaW5wdXQgPVxuICAgIFsgYEJpZ3N0cmluZyBvZiBiaWdzdHJpbmdcbiAgICB8IGBTdHJpbmcgICAgb2Ygc3RyaW5nIF1cblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFBhcnRpYWwgb2YgKFsgaW5wdXQgfCBgRW9mIF0gLT4gJ2Egc3RhdGUpXG4gICAgfCBEb25lICAgIG9mIHVuY29uc3VtZWQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiB1bmNvbnN1bWVkICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuICBsZXQgZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIH5mIGJ1ZmZlcmluZyA9IGZ1bmN0aW9uXG4gICAgfCBVbmJ1ZmZlcmVkLlBhcnRpYWwgcCAgICAgICAgIC0+IFBhcnRpYWwgKGYgcClcbiAgICB8IFVuYnVmZmVyZWQuRG9uZShjb25zdW1lZCwgdikgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRG9uZSh1bmNvbnN1bWVkLCB2KVxuICAgIHwgVW5idWZmZXJlZC5GYWlsKGNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgbGV0IHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCB+c2hpZnQ6Y29uc3VtZWQgYnVmZmVyaW5nIGluXG4gICAgICBGYWlsKHVuY29uc3VtZWQsIG1hcmtzLCBtc2cpXG5cbiAgbGV0IHBhcnNlID8oaW5pdGlhbF9idWZmZXJfc2l6ZT0weDEwMDApIHAgPVxuICAgIGlmIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicGFyc2U6IGludmFsaWQgYXJndW1lbnQsIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxXCI7XG4gICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCByZWMgZiBwIGlucHV0ID1cbiAgICAgIEJ1ZmZlcmluZy5zaGlmdCBidWZmZXJpbmcgcC5jb21taXR0ZWQ7XG4gICAgICBsZXQgbW9yZSA6IE1vcmUudCA9XG4gICAgICAgIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgfCBgRW9mICAgICAgICAgICAgLT4gQ29tcGxldGVcbiAgICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgICAgSW5jb21wbGV0ZVxuICAgICAgaW5cbiAgICAgIGxldCBmb3JfcmVhZGluZyA9IEJ1ZmZlcmluZy5mb3JfcmVhZGluZyBidWZmZXJpbmcgaW5cbiAgICAgIHAuY29udGludWUgZm9yX3JlYWRpbmcgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBmb3JfcmVhZGluZykgbW9yZVxuICAgICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuICAgIGluXG4gICAgVW5idWZmZXJlZC5wYXJzZSBwXG4gICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuXG4gIGxldCBmZWVkIHN0YXRlIGlucHV0ID1cbiAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgfCBQYXJ0aWFsIGsgLT4gayBpbnB1dFxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgfCBgRW9mICAgLT4gc3RhdGVcbiAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcub2ZfdW5jb25zdW1lZCB1bmNvbnN1bWVkIGluXG4gICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgRmFpbChCdWZmZXJpbmcudW5jb25zdW1lZCBidWZmZXJpbmcsIG1hcmtzLCBtc2cpXG4gICAgICBlbmRcbiAgICB8IERvbmUodW5jb25zdW1lZCwgdikgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIERvbmUoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCB2KVxuICAgICAgZW5kXG5cbiAgbGV0IHN0YXRlX3RvX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICAgIHwgUGFydGlhbCBfICAtPiBOb25lXG4gICAgfCBGYWlsIF8gICAgIC0+IE5vbmVcblxuICBsZXQgc3RhdGVfdG9fcmVzdWx0ID0gZnVuY3Rpb25cbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICAgIHwgRmFpbChfLCBtYXJrcywgbXNnKSAtPiBFcnJvciAoVW5idWZmZXJlZC5mYWlsX3RvX3N0cmluZyBtYXJrcyBtc2cpXG5cbiAgbGV0IHN0YXRlX3RvX3VuY29uc3VtZWQgPSBmdW5jdGlvblxuICAgIHwgRG9uZSh1bmNvbnN1bWVkLCBfKVxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBfLCBfKSAtPiBTb21lIHVuY29uc3VtZWRcbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgICAgLT4gTm9uZVxuXG5lbmRcblxuKCoqIEJFR0lOOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCByZWMgcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2MgPVxuICAoKiBbcHJvbXB0XSBzaG91bGQgb25seSBjYWxsIFtzdWNjXSBpZiBpdCBoYXMgcmVjZWl2ZWQgbW9yZSBpbnB1dC4gSWYgdGhlcmVcbiAgICogaXMgbm8gY2hhbmNlIHRoYXQgdGhlIGlucHV0IHdpbGwgZ3JvdywgaS5lLiwgW21vcmUgPSBDb21wbGV0ZV0sIHRoZW5cbiAgICogW3Byb21wdF0gc2hvdWxkIGNhbGwgW2ZhaWxdLiBPdGhlcndpc2UgKGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbnB1dFxuICAgKiBoYXNuJ3QgZ3Jvd24gYnV0IFttb3JlID0gSW5jb21wbGV0ZV0ganVzdCBwcm9tcHQgYWdhaW4uICopXG4gIGxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgaW5wdXQgaW5cbiAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICA9IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICBpbnB1dCBpblxuICAoKiBUaGUgY29udGludWF0aW9uIHNob3VsZCBub3QgaG9sZCBhbnkgcmVmZXJlbmNlcyB0byBpbnB1dCBhYm92ZS4gKilcbiAgbGV0IGNvbnRpbnVlIGlucHV0IH5vZmYgfmxlbiBtb3JlID1cbiAgICBpZiBsZW4gPCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgZmFpbHdpdGggXCJwcm9tcHQ6IGlucHV0IHNocnVuayFcIjtcbiAgICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfm9mZiB+bGVuIH5jb21taXR0ZWRfYnl0ZXM6cGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpblxuICAgIGlmIGxlbiA9IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0aGVuXG4gICAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgICAgfCBDb21wbGV0ZSAgIC0+IGZhaWwgaW5wdXQgcG9zIE1vcmUuQ29tcGxldGVcbiAgICAgIHwgSW5jb21wbGV0ZSAtPiBwcm9tcHQgaW5wdXQgcG9zIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmVcbiAgaW5cbiAgU3RhdGUuUGFydGlhbCB7IGNvbW1pdHRlZCA9IElucHV0LmJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IGlucHV0OyBjb250aW51ZSB9XG5cbmxldCBkZW1hbmRfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwibm90IGVub3VnaCBpbnB1dFwiXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwibm90IGVub3VnaCBpbnB1dFwiIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgPVxuICBsZXQgcmVjIGdvID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJyAtPlxuICAgICAgaWYgcG9zJyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0JyB0aGVuXG4gICAgICAgIHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBlbHNlXG4gICAgICAgIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJ1xuICAgIH1cbiAgaW5cbiAgKGRlbWFuZF9pbnB1dCAqPiBnbykucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuXG5sZXQgdW5zYWZlX2FwcGx5IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYpXG4gIH1cblxubGV0IHVuc2FmZV9hcHBseV9vcHQgbGVuIH5mID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+ZiB3aXRoXG4gICAgfCBFcnJvciBlIC0+IGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gZVxuICAgIHwgT2sgICAgeCAtPiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgeFxuICB9XG5cbmxldCBlbnN1cmUgbiBwID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zICsgbiA8PSBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9IHAucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCBuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG4oKiogRU5EOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCBhdF9lbmRfb2ZfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBmYWxzZVxuICAgIGVsc2UgbWF0Y2ggbW9yZSB3aXRoXG4gICAgfCBDb21wbGV0ZSAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHRydWVcbiAgICB8IEluY29tcGxldGUgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgZmFsc2VcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgdHJ1ZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbmRfb2ZfaW5wdXQgPVxuICBhdF9lbmRfb2ZfaW5wdXRcbiAgPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlICAtPiByZXR1cm4gKClcbiAgICB8IGZhbHNlIC0+IGZhaWwgXCJlbmRfb2ZfaW5wdXRcIlxuXG5sZXQgYWR2YW5jZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiYWR2YW5jZVwiXG4gIGVsc2VcbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+IHN1Y2MgaW5wdXQgKHBvcyArIG4pIG1vcmUgKCkgfVxuICAgIGluXG4gICAgZW5zdXJlIG4gcFxuXG5sZXQgcG9zID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHBvcyB9XG5cbmxldCBhdmFpbGFibGUgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQubGVuZ3RoIGlucHV0IC0gcG9zKVxuICB9XG5cbmxldCBjb21taXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgSW5wdXQuY29tbWl0IGlucHV0IHBvcztcbiAgICBzdWNjIGlucHV0IHBvcyBtb3JlICgpIH1cblxuKCogRG8gbm90IHVzZSB0aGlzIGlmIFtwXSBjb250YWlucyBhIFtjb21taXRdLiAqKVxubGV0IHVuc2FmZV9sb29rYWhlYWQgcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdWNjJyBpbnB1dCcgXyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zIG1vcmUnIHYgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IHBlZWtfY2hhciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykpXG4gICAgZWxzZSBpZiBtb3JlID0gQ29tcGxldGUgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0JyBwb3MnKSlcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgTm9uZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbigqIFRoaXMgcGFyc2VyIGlzIHRvbyBpbXBvcnRhbnQgdG8gbm90IGJlIG9wdGltaXplZC4gRG8gYSBjdXN0b20gam9iLiAqKVxubGV0IHJlYyBwZWVrX2NoYXJfZmFpbCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dFxuICAgIHRoZW4gc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBwZWVrX2NoYXJfZmFpbC5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIDEgaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBzYXRpc2Z5IGYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIFByaW50Zi5rc3ByaW50ZiAoZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSkgXCJzYXRpc2Z5OiAlQ1wiIGNcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJyBpblxuICAgICAgICBpZiBmIGNcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0JyAocG9zJyArIDEpIG1vcmUnIGNcbiAgICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgICBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgY2hhciBjID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyA9IGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgbm90X2NoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjJyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIGlmIGMgPD4gYydcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjJ1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcIm5vdCBjaGFyICVDXCIgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfY2hhciA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSAgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBpbnQ4IGkgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IENoYXIuY29kZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgaW5cbiAgICAgIGlmIGMgPSBpIGxhbmQgMHhmZlxuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJpbnQ4ICVkXCIgaSkgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfdWludDggPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChDaGFyLmNvZGUgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfaW50OCA9XG4gICgqIGh0dHBzOi8vZ3JhcGhpY3Muc3RhbmZvcmQuZWR1L35zZWFuZGVyL2JpdGhhY2tzLmh0bWwjVmFyaWFibGVTaWduRXh0ZW5kUmlza3kgKilcbiAgbGV0IHMgPSBTeXMuaW50X3NpemUgLSA4IGluXG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKChDaGFyLmNvZGUgYyBsc2wgcykgYXNyIHMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgc2tpcCBmID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgZiAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoKVxuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwic2tpcFwiIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgcmVjIGNvdW50X3doaWxlIH5pbml0IH5mIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBsZW4gICAgICAgICA9IElucHV0LmNvdW50X3doaWxlIGlucHV0IChwb3MgKyBpbml0KSB+ZiBpblxuICAgIGxldCBpbnB1dF9sZW4gICA9IElucHV0Lmxlbmd0aCBpbnB1dCBpblxuICAgIGxldCBpbml0JyAgICAgICA9IGluaXQgKyBsZW4gaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBwb3MgKyBpbml0JyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGluaXQnKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgaW5pdCcgfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmluaXQnIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgKHBvcycgKyBpbml0JykgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgcmVjIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCBwb3MgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBsZW4gPCAxXG4gICAgdGhlblxuICAgICAgaWYgcG9zIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgICAgdGhlbiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICAoY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb3VudF93aGlsZTFcIlxuICAgICAgICBpblxuICAgICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gICAgZWxzZSBpZiBwb3MgKyBsZW4gPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmxlbiB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgbGVuKSBtb3JlJyAoSW5wdXQuYXBwbHkgaW5wdXQnIHBvcycgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgc3RyaW5nXyBmIHMgPVxuICAoKiBYWFgoc2VsaW9wb3UpOiBJbmVmZmljaWVudC4gQ291bGQgY2hlY2sgcHJlZml4IGVxdWFsaXR5IHRvIHNob3J0LWNpcmN1aXRcbiAgICogdGhlIGlvLiAqKVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGVuc3VyZSAgbGVuICh1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZjooZnVuIGJ1ZmZlciB+b2ZmIH5sZW4gLT5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgQ2hhci5lcXVhbCAoZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgKG9mZiArICFpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZiAoU3RyaW5nLnVuc2FmZV9nZXQgcyAhaSkpXG4gICAgZG9cbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgbGVuID0gIWlcbiAgICB0aGVuIE9rIChCaWdzdHJpbmdhZi5zdWJzdHJpbmcgYnVmZmVyIH5vZmYgfmxlbilcbiAgICBlbHNlIEVycm9yIFwic3RyaW5nXCIpKVxuXG5sZXQgc3RyaW5nIHMgICAgPSBzdHJpbmdfIChmdW4geCAtPiB4KSBzXG5sZXQgc3RyaW5nX2NpIHMgPSBzdHJpbmdfIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IHNraXBfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOihmdW4gXyB+b2ZmOl8gfmxlbjpfIC0+ICgpKVxuXG5sZXQgdGFrZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZTogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLnN1YnN0cmluZylcblxubGV0IHRha2VfYmlnc3RyaW5nIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJ0YWtlX2JpZ3N0cmluZzogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLmNvcHkpXG5cbmxldCB0YWtlX2JpZ3N0cmluZ193aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuY29weVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUxIGYgPVxuICBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3RpbGwgZiA9XG4gIHRha2VfYmlnc3RyaW5nX3doaWxlIChmdW4gYyAtPiBub3QgKGYgYykpXG5cbmxldCBwZWVrX3N0cmluZyBuID1cbiAgdW5zYWZlX2xvb2thaGVhZCAodGFrZSBuKVxuXG5sZXQgdGFrZV93aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHRha2VfdGlsbCBmID1cbiAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgY2hvaWNlID8oZmFpbHVyZV9tc2c9XCJubyBtb3JlIGNob2ljZXNcIikgcHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgKDx8PikgcHMgKGZhaWwgZmFpbHVyZV9tc2cpXG5cbmxldCBmaXhfZGlyZWN0IGYgPVxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4X2xhenkgfm1heF9zdGVwcyBmID1cbiAgbGV0IHN0ZXBzID0gcmVmIG1heF9zdGVwcyBpblxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGRlY3Igc3RlcHM7XG4gICAgaWYgIXN0ZXBzIDwgMFxuICAgIHRoZW4gKFxuICAgICAgc3RlcHMgOj0gbWF4X3N0ZXBzO1xuICAgICAgU3RhdGUuTGF6eSAobGF6eSAoKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MpKSlcbiAgICBlbHNlXG4gICAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgICAgICAgIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4ID0gbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgTmF0aXZlIC0+IGZpeF9kaXJlY3RcbiAgfCBCeXRlY29kZSAtPiBmaXhfZGlyZWN0XG4gIHwgT3RoZXIgXyAtPiBmdW4gZiAtPiBmaXhfbGF6eSB+bWF4X3N0ZXBzOjIwIGZcblxubGV0IG9wdGlvbiB4IHAgPVxuICBwIDx8PiByZXR1cm4geFxuXG5sZXQgY29ucyB4IHhzID0geCA6OiB4c1xuXG5sZXQgcmVjIGxpc3QgcHMgPVxuICBtYXRjaCBwcyB3aXRoXG4gIHwgW10gICAgLT4gcmV0dXJuIFtdXG4gIHwgcDo6cHMgLT4gbGlmdDIgY29ucyBwIChsaXN0IHBzKVxuXG5sZXQgY291bnQgbiBwID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiY291bnQ6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gcmV0dXJuIFtdXG4gICAgICB8IG4gLT4gbGlmdDIgY29ucyBwIChsb29wIChuIC0gMSkpXG4gICAgaW5cbiAgICBsb29wIG5cblxubGV0IG1hbnkgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAobGlmdDIgY29ucyBwIG0pIDx8PiByZXR1cm4gW10pXG5cbmxldCBtYW55MSBwID1cbiAgbGlmdDIgY29ucyBwIChtYW55IHApXG5cbmxldCBtYW55X3RpbGwgcCB0ID1cbiAgZml4IChmdW4gbSAtPlxuICAgICh0ICo+IHJldHVybiBbXSkgPHw+IChsaWZ0MiBjb25zIHAgbSkpXG5cbmxldCBzZXBfYnkxIHMgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICBsaWZ0MiBjb25zIHAgKChzICo+IG0pIDx8PiByZXR1cm4gW10pKVxuXG5sZXQgc2VwX2J5IHMgcCA9XG4gIChsaWZ0MiBjb25zIHAgKChzICo+IHNlcF9ieTEgcyBwKSA8fD4gcmV0dXJuIFtdKSkgPHw+IHJldHVybiBbXVxuXG5sZXQgc2tpcF9tYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgICAoKHAgPj58IGZ1biBfIC0+IHRydWUpIDx8PiByZXR1cm4gZmFsc2UpID4+PSBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IG1cbiAgICAgIHwgZmFsc2UgLT4gcmV0dXJuICgpXG4gICAgKVxuXG5sZXQgc2tpcF9tYW55MSBwID1cbiAgcCAqPiBza2lwX21hbnkgcFxuXG5sZXQgZW5kX29mX2xpbmUgPVxuICAoY2hhciAnXFxuJyAqPiByZXR1cm4gKCkpIDx8PiAoc3RyaW5nIFwiXFxyXFxuXCIgKj4gcmV0dXJuICgpKSA8Pz4gXCJlbmRfb2ZfbGluZVwiXG5cbmxldCBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGF0ZSA9IHJlZiBzdGF0ZSBpblxuICAgIGxldCBwYXJzZXIgPVxuICAgICAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZjooZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggZiAhc3RhdGUgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgc3RhdGUnIC0+IHN0YXRlIDo9IHN0YXRlJzsgdHJ1ZSlcbiAgICAgIH53aXRoX2J1ZmZlclxuICAgICAgPj58IGZ1biB4IC0+IHgsICFzdGF0ZVxuICAgIGluXG4gICAgcGFyc2VyLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgfVxuXG5sZXQgc2NhbiBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCBzY2FuX3N0YXRlIHN0YXRlIGYgPVxuICBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcbiAgPj58IGZ1biAoKCksIHN0YXRlKSAtPiBzdGF0ZVxuXG5sZXQgc2Nhbl9zdHJpbmcgc3RhdGUgZiA9XG4gIHNjYW4gc3RhdGUgZiA+PnwgZnN0XG5cbmxldCBjb25zdW1lX3dpdGggcCBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN0YXJ0ID0gcG9zIGluXG4gICAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0ICBpblxuICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyBfID1cbiAgICAgIGlmIHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPD4gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCdcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcImNvbnN1bWVkOiBwYXJzZXIgY29tbWl0dGVkXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID0gcG9zJyAtIHN0YXJ0IGluXG4gICAgICAgIGxldCBjb25zdW1lZCA9IElucHV0LmFwcGx5IGlucHV0JyBzdGFydCBsZW4gfmYgaW5cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBjb25zdW1lZClcbiAgICBpblxuICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgfVxuXG5sZXQgY29uc3VtZWQgICAgICAgICAgIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5zdWJzdHJpbmdcbmxldCBjb25zdW1lZF9iaWdzdHJpbmcgcCA9IGNvbnN1bWVfd2l0aCBwIEJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IGJvdGggYSBiID0gbGlmdDIgKGZ1biBhIGIgLT4gYSwgYikgYSBiXG5sZXQgbWFwIHQgfmYgPSB0ID4+fCBmXG5sZXQgYmluZCB0IH5mID0gdCA+Pj0gZlxubGV0IG1hcDIgYSBiIH5mID0gbGlmdDIgZiBhIGJcbmxldCBtYXAzIGEgYiBjIH5mID0gbGlmdDMgZiBhIGIgY1xubGV0IG1hcDQgYSBiIGMgZCB+ZiA9IGxpZnQ0IGYgYSBiIGMgZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgbGV0IG1hcDMgPSBtYXAzXG4gICAgbGV0IG1hcDQgPSBtYXA0XG4gIGVuZFxuZW5kXG5cbmxldCAoIGxldCsgKSA9ICggPj58IClcbmxldCAoIGxldCogKSA9ICggPj49IClcbmxldCAoIGFuZCsgKSA9IGJvdGhcblxubW9kdWxlIEJFID0gc3RydWN0XG4gICgqIFhYWChzZWxpb3BvdSk6IFRoZSBwYXR0ZXJuIGluIGJvdGggdGhpcyBtb2R1bGUgYW5kIFtMRV0gYXJlIGEgY29tcHJvbWlzZVxuICAgKiBiZXR3ZWVuIGVmZmljaWVuY3kgYW5kIGNvZGUgcmV1c2UuIEJ5IGlubGluaW5nIFtlbnN1cmVdIHlvdSBjYW4gcmVjb3ZlclxuICAgKiBhYm91dCAyIG5hbm9zZWNvbmRzIG9uIGF2ZXJhZ2UuIFRoYXQgbWF5IGFkZCB1cCBpbiBjZXJ0YWluIGFwcGxpY2F0aW9ucy5cbiAgICpcbiAgICogVGhpcyBwYXR0ZXJuIGRvZXMgbm90IGFsbG9jYXRlIGluIHRoZSBmYXN0IChzdWNjZXNzKSBwYXRoLlxuICAgKiAqKVxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2JlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9iZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBMRSA9IHN0cnVjdFxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2xlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9sZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG5cbiAgbGV0IGFueV91aW50MTYgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDE2ICA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlICBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MzIgID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQ2NCA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfZmxvYXQgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDMyLmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgYnMgb2ZmKSkpXG5cbiAgbGV0IGFueV9kb3VibGUgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDY0LmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSkpXG5lbmRcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdGFrZSBuIGYgPVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZilcblxuICBsZXQgcGVlayBuIGYgPVxuICAgIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbiBmKVxuXG4gIGxldCB0YWtlX3doaWxlIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6Y2hlY2sgfndpdGhfYnVmZmVyOmZcblxuICBsZXQgdGFrZV93aGlsZTEgY2hlY2sgZiA9XG4gICAgY291bnRfd2hpbGUxIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2VfdGlsbCBjaGVjayBmID1cbiAgICB0YWtlX3doaWxlIChmdW4gYyAtPiBub3QgKGNoZWNrIGMpKSBmXG5lbmRcblxubW9kdWxlIENvbnN1bWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFByZWZpeFxuICAgIHwgQWxsXG5lbmRcblxubGV0IHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzID1cbiAgbGV0IHAgPVxuICAgIG1hdGNoIChjb25zdW1lIDogQ29uc3VtZS50KSB3aXRoXG4gICAgfCBQcmVmaXggLT4gcFxuICAgIHwgQWxsIC0+IHAgPCogZW5kX29mX2lucHV0XG4gIGluXG4gIFVuYnVmZmVyZWQucGFyc2VfYmlnc3RyaW5nIHAgYnNcblxubGV0IHBhcnNlX3N0cmluZyB+Y29uc3VtZSBwIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBicyAgPSBCaWdzdHJpbmdhZi5jcmVhdGUgbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6MCBicyB+ZHN0X29mZjowIH5sZW47XG4gIHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQW5pbCBNYWRoYXZhcGVkZHkgPGFuaWxAcmVjb2lsLm9yZz5cbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IERhdmlkIFNoZWV0cyA8c2hlZXRzQGFsdW0ubWl0LmVkdT5cbiAqXG4gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbiAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcbiAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbiAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SXG4gKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4gKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU5cbiAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GXG4gKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuICpcbiAqKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG50eXBlIGNvbXBvbmVudCA9IFtcbiAgfCBgU2NoZW1lXG4gIHwgYEF1dGhvcml0eVxuICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG4gIHwgYFBhdGhcbiAgfCBgUXVlcnlcbiAgfCBgUXVlcnlfa2V5XG4gIHwgYFF1ZXJ5X3ZhbHVlXG4gIHwgYEZyYWdtZW50XG4gIHwgYEdlbmVyaWNcbiAgfCBgQ3VzdG9tIG9mIChjb21wb25lbnQgKiBzdHJpbmcgKiBzdHJpbmcpICgqIChjb21wb25lbnQgKiBzYWZlIGNoYXJzICogdW5zYWZlIGNoYXJzKSAqKVxuXVxuXG50eXBlIHBjdF9lbmNvZGVyID0ge1xuICAgIHNjaGVtZTogY29tcG9uZW50O1xuICAgIHVzZXJpbmZvOiBjb21wb25lbnQ7XG4gICAgaG9zdDogY29tcG9uZW50O1xuICAgIHBhdGg6IGNvbXBvbmVudDtcbiAgICBxdWVyeV9rZXk6IGNvbXBvbmVudDtcbiAgICBxdWVyeV92YWx1ZTogY29tcG9uZW50O1xuICAgIGZyYWdtZW50OiBjb21wb25lbnQ7XG4gIH1cblxubGV0IHJlYyBpdGVyX2NvbmNhdCBmbiBzZXAgYnVmID0gZnVuY3Rpb25cbiAgfCBsYXN0OjpbXSAtPiBmbiBidWYgbGFzdFxuICB8IGVsOjpyZXN0IC0+XG4gICAgZm4gYnVmIGVsO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiByZXN0XG4gIHwgW10gLT4gKClcblxubGV0IHJldl9pbnRlcmplY3QgZSBsc3QgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gIC0+IGFjY1xuICAgIHwgeDo6eHMgLT4gYXV4ICh4OjplOjphY2MpIHhzXG4gIGluIG1hdGNoIGxzdCB3aXRoXG4gIHwgW10gIC0+IFtdXG4gIHwgaDo6dCAtPiBhdXggW2hdIHRcblxubGV0IGNvbXBhcmVfb3B0IGMgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCAgIE5vbmUgICAtPiAwXG4gIHwgU29tZSBfLCBOb25lICAgLT4gMVxuICB8IE5vbmUsICAgU29tZSBfIC0+IC0xXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gYyBhIGJcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgZiB0IHQnID0gbWF0Y2ggdCwgdCcgd2l0aFxuICB8IFtdLCAgICBbXSAgICAtPiAgMFxuICB8IF86Ol8sICBbXSAgICAtPiAgMVxuICB8IFtdLCAgICBfOjpfICAtPiAtMVxuICB8IHg6OnhzLCB5Ojp5cyAtPlxuICAgIG1hdGNoIGYgeCB5IHdpdGggMCAtPiBjb21wYXJlX2xpc3QgZiB4cyB5cyB8IGMgLT4gY1xuXG4oKiogU2FmZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsd2F5cyBhbGxvd2VkIGluIGEgVVJJXG4gICogVW5mb3J0dW5hdGVseSwgdGhpcyB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoaWNoIGJpdCBvZiB0aGUgVVJJXG4gICogaXMgYmVpbmcgcGFyc2VkLCBzbyB0aGVyZSBhcmUgbXVsdGlwbGUgdmFyaWFudHMgKGFuZCB0aGlzXG4gICogc2V0IGlzIHByb2JhYmx5IG5vdCBleGhhdXN0aXZlLiBUT0RPOiBjaGVjay5cbiopXG50eXBlIHNhZmVfY2hhcnMgPSBib29sIGFycmF5XG5cbm1vZHVsZSB0eXBlIFNjaGVtZSA9IHNpZ1xuICB2YWwgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IDogY29tcG9uZW50IC0+IHNhZmVfY2hhcnNcbiAgdmFsIG5vcm1hbGl6ZV9ob3N0IDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgY2Fub25pY2FsaXplX3BvcnQgOiBpbnQgb3B0aW9uIC0+IGludCBvcHRpb25cbiAgdmFsIGNhbm9uaWNhbGl6ZV9wYXRoIDogc3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3RcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSA9IHN0cnVjdFxuICBsZXQgc3ViX2RlbGltcyBhID1cbiAgICBsZXQgc3ViZCA9IFwiISQmJygpKissOz1cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN1YmQgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBzdWJkLltpXSBpblxuICAgICAgYS4oYykgPC0gdHJ1ZVxuICAgIGRvbmU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIDI1NiBmYWxzZSBpblxuICAgIGxldCBhbHdheXNfc2FmZSA9XG4gICAgICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Xy4tflwiIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggYWx3YXlzX3NhZmUgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBhbHdheXNfc2FmZS5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgcGNoYXIgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgc2FmZV9jaGFycykgaW5cbiAgICBhLihDaGFyLmNvZGUgJzonKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnQCcpIDwtIHRydWU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9zY2hlbWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgIGEuKENoYXIuY29kZSAnKycpIDwtIHRydWU7XG4gICAgYVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSBwYXRoIGNvbXBvbmVudCBvZiBhIFVSSSAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfcGF0aCA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gc3ViX2RlbGltcyAoQXJyYXkuY29weSBwY2hhcikgaW5cbiAgICAoKiBkZWxpbWl0ZXI6IG5vbi1zZWdtZW50IGRlbGltaXRpbmcgdXNlcyBzaG91bGQgYmUgcGN0IGVuY29kZWQgKilcbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IDogc2FmZV9jaGFycyA9XG4gICAgKCogVE9ETzogV2hhdCBhYm91dCB7XCIhXCIsXCIkXCIsXCIsXCJ9PyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9hdnNtL29jYW1sLXVyaS9jb21taXQvMWVmM2YxZGZiNDFiZGI0ZjMzZjIyM2ZmZTE2ZTYyYTMzOTc1NjYxYSNkaWZmLTc0MGYyZGU1M2M5ZWIzNmU5NjcwZGRmYmRiOWJhOTE0UjE3MT4gKilcbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgcGNoYXIgaW5cbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnPycpIDwtIHRydWU7XG4gICAgKCogJyYnIGlzIHNhZmUgYnV0IHdlIHNob3VsZCBlbmNvZGUgbGl0ZXJhbHMgdG8gYXZvaWQgYW1iaWd1aXR5XG4gICAgICAgd2l0aCB0aGUgYWxyZWFkeSBwYXJzZWQgcXMgcGFyYW1zICopXG4gICAgYS4oQ2hhci5jb2RlICcmJykgPC0gZmFsc2U7XG4gICAgKCogJzsnIGlzIHNhZmUgYnV0IHNvbWUgc3lzdGVtcyB0cmVhdCBpdCBsaWtlICcmJy4gKilcbiAgICBhLihDaGFyLmNvZGUgJzsnKSA8LSBmYWxzZTtcbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzX2Zvcl9xdWVyeSBpblxuICAgIGEuKENoYXIuY29kZSAnPScpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnlfdmFsdWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJywnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50IDogc2FmZV9jaGFycyA9IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG5cbiAgKCoqIFNhZmUgY2hhcmFjdGVycyBmb3IgdGhlIHVzZXJpbmZvIHN1YmNvbXBvbmVudCBvZiBhIFVSSS5cbiAgICAgIFRPRE86IHRoaXMgbmVlZHMgbW9yZSByZXNlcnZlZCBjaGFyYWN0ZXJzIGFkZGVkICopXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mbyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCByZWMgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50ID0gZnVuY3Rpb25cbiAgICB8IGBQYXRoIC0+IHNhZmVfY2hhcnNfZm9yX3BhdGhcbiAgICB8IGBVc2VyaW5mbyAtPiBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mb1xuICAgIHwgYFF1ZXJ5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG4gICAgfCBgUXVlcnlfa2V5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleVxuICAgIHwgYFF1ZXJ5X3ZhbHVlIC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlXG4gICAgfCBgRnJhZ21lbnQgLT4gc2FmZV9jaGFyc19mb3JfZnJhZ21lbnRcbiAgICB8IGBTY2hlbWUgLT4gc2FmZV9jaGFyc19mb3Jfc2NoZW1lXG4gICAgfCBgQ3VzdG9tICgoY29tcG9uZW50IDogY29tcG9uZW50KSwgc2FmZSwgdW5zYWZlKSAtPlxuICAgICAgIGxldCBzYWZlX2NoYXJzID0gQXJyYXkuY29weSAoc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCkgaW5cbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzYWZlIC0gMSBkb1xuICAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIHRydWVcbiAgICAgICBkb25lO1xuICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHVuc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHVuc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIGZhbHNlXG4gICAgICAgZG9uZTtcbiAgICAgICBzYWZlX2NoYXJzXG4gICAgfCBgR2VuZXJpY1xuICAgIHwgXyAtPiBzYWZlX2NoYXJzXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzbyA9IGhzb1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCBwb3J0ID0gcG9ydFxuICBsZXQgY2Fub25pY2FsaXplX3BhdGggcGF0aCA9IHBhdGhcbmVuZFxuXG5tb2R1bGUgSHR0cCA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhzXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA4MCAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSB4XG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtcIi9cIl1cbiAgICB8IHggIC0+IHhcbmVuZFxuXG5tb2R1bGUgSHR0cHMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIdHRwXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA0NDMgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuZW5kXG5cbm1vZHVsZSBGaWxlIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBocyA9XG4gICAgbGV0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBocyBpblxuICAgIGlmIGhzPVwibG9jYWxob3N0XCIgdGhlbiBcIlwiIGVsc2UgaHNcbmVuZFxuXG5tb2R1bGUgVXJuIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG5lbmRcblxubGV0IG1vZHVsZV9vZl9zY2hlbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgcyAtPiBiZWdpbiBtYXRjaCBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgd2l0aFxuICAgICAgfCBcImh0dHBcIiAtPiAobW9kdWxlIEh0dHAgOiBTY2hlbWUpXG4gICAgICB8IFwiaHR0cHNcIiAgLT4gKG1vZHVsZSBIdHRwcyA6IFNjaGVtZSlcbiAgICAgIHwgXCJmaWxlXCIgLT4gKG1vZHVsZSBGaWxlIDogU2NoZW1lKVxuICAgICAgfCBcInVyblwiICAtPiAobW9kdWxlIFVybiA6IFNjaGVtZSlcbiAgICAgIHwgXyAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG4gICAgZW5kXG4gIHwgTm9uZSAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG5cbigqKiBQb3J0aW9ucyBvZiB0aGUgVVJMIG11c3QgYmUgY29udmVydGVkIHRvLWFuZC1mcm9tIHBlcmNlbnQtZW5jb2RpbmdcbiAgKiBhbmQgdGhpcyByZWFsbHksIHJlYWxseSBzaG91bGRuJ3QgYmUgbWl4ZWQgdXAuIFNvIHRoaXMgUGN0IG1vZHVsZVxuICAqIGRlZmluZXMgYWJzdHJhY3QgUGN0LmVuY29kZWQgYW5kIFBjdC5kZWNvZGVkIHR5cGVzIHdoaWNoIHNldHMgdGhlXG4gICogc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgc3RyaW5nLiAgVGhlcmUgYXJlIGZ1bmN0aW9ucyB0byBcImNhc3RcIiB0b1xuICAqIGFuZCBmcm9tIHRoZXNlIGFuZCBub3JtYWwgc3RyaW5ncywgYW5kIHRoaXMgcHJvbW90ZXMgYSBiaXQgb2ZcbiAgKiBpbnRlcm5hbCBzYWZldHkuICBUaGVzZSB0eXBlcyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIGV4dGVybmFsXG4gICogaW50ZXJmYWNlLCBhcyBjYXN0aW5nIHRvLWFuZC1mcm9tIGlzIHF1aXRlIGEgYml0IG9mIGhhc3NsZSBhbmRcbiAgKiBwcm9iYWJseSBub3QgYSBsb3Qgb2YgdXNlIHRvIHRoZSBhdmVyYWdlIGNvbnN1bWVyIG9mIHRoaXMgbGlicmFyeVxuKilcbm1vZHVsZSBQY3QgOiBzaWdcbiAgdHlwZSBlbmNvZGVkXG4gIHR5cGUgZGVjb2RlZFxuXG4gIHZhbCBlbmNvZGUgOiA/c2NoZW1lOnN0cmluZyAtPiA/Y29tcG9uZW50OmNvbXBvbmVudCAtPiBkZWNvZGVkIC0+IGVuY29kZWRcbiAgdmFsIGRlY29kZSA6IGVuY29kZWQgLT4gZGVjb2RlZFxuXG4gICgqIFRoZSBlbXB0eSBkZWNvZGVkIHN0cmluZyAqKVxuICB2YWwgZW1wdHlfZGVjb2RlZCA6IGRlY29kZWRcbiAgKCogSWRlbnRpdHkgZnVuY3Rpb25zIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBjYXN0IHdoZW4gdXNpbmcgdGhlbSBiZWxvdyAqKVxuICB2YWwgY2FzdF9lbmNvZGVkIDogc3RyaW5nIC0+IGVuY29kZWRcbiAgdmFsIGNhc3RfZGVjb2RlZCA6IHN0cmluZyAtPiBkZWNvZGVkXG4gIHZhbCB1bmNhc3RfZW5jb2RlZCA6IGVuY29kZWQgLT4gc3RyaW5nXG4gIHZhbCB1bmNhc3RfZGVjb2RlZCA6IGRlY29kZWQgLT4gc3RyaW5nXG4gICgqIExpZnQgSE9GcyBmb3IgbWFwcyBvdmVyIGVuY29kaW5ncywgZGVjb2RpbmdzLCBhbmQgc3RyaW5ncyAqKVxuICB2YWwgbGlmdF9lbmNvZGVkIDogKGVuY29kZWQgLT4gZW5jb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgbGlmdF9kZWNvZGVkIDogKGRlY29kZWQgLT4gZGVjb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgdW5saWZ0X2VuY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZW5jb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZCA6IChzdHJpbmcgLT4gc3RyaW5nKSAtPiBkZWNvZGVkIC0+IGRlY29kZWRcbiAgdmFsIHVubGlmdF9kZWNvZGVkMiA6IChzdHJpbmcgLT4gc3RyaW5nIC0+ICdhKSAtPiBkZWNvZGVkIC0+IGRlY29kZWQgLT4gJ2FcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVuY29kZWQgPSBzdHJpbmdcbiAgdHlwZSBkZWNvZGVkID0gc3RyaW5nXG4gIGxldCBjYXN0X2VuY29kZWQgeCA9IHhcbiAgbGV0IGNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgZW1wdHlfZGVjb2RlZCA9IFwiXCJcbiAgbGV0IHVuY2FzdF9kZWNvZGVkIHggPSB4XG4gIGxldCB1bmNhc3RfZW5jb2RlZCB4ID0geFxuXG4gIGxldCBsaWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IGxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9kZWNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZDIgZiA9IGZcblxuICAoKiogU2NhbiBmb3IgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhbmQgcmVwbGFjZSB0aGVtIHdpdGhcbiAgICAgIHBlcmNlbnQtZW5jb2RlZCBlcXVpdmFsZW50cy5cbiAgICAgIEByZXR1cm4gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBlbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgYiA9XG4gICAgbGV0IG1vZHVsZSBTY2hlbWUgPSAodmFsIChtb2R1bGVfb2Zfc2NoZW1lIHNjaGVtZSkgOiBTY2hlbWUpIGluXG4gICAgbGV0IHNhZmVfY2hhcnMgPSBTY2hlbWUuc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBjID0gQ2hhci5jb2RlIGIuW2N1cl0gaW5cbiAgICAgICAgaWYgc2FmZV9jaGFycy4oYykgdGhlblxuICAgICAgICAgIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgaWYgY3VyID4gc3RhcnQgdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFByaW50Zi5zcHJpbnRmIFwiJSUlMDJYXCIgYyk7XG4gICAgICAgICAgc2NhbiAoY3VyKzEpIChjdXIrMSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgaW50X29mX2hleF9jaGFyIGMgPVxuICAgIGxldCBjID0gaW50X29mX2NoYXIgKENoYXIudXBwZXJjYXNlX2FzY2lpIGMpIC0gNDggaW5cbiAgICBpZiBjID4gOVxuICAgIHRoZW4gaWYgYyA+IDE2ICYmIGMgPCAyM1xuICAgICAgdGhlbiBjIC0gN1xuICAgICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG4gICAgZWxzZSBpZiBjID49IDBcbiAgICB0aGVuIGNcbiAgICBlbHNlIGZhaWx3aXRoIFwiaW50X29mX2hleF9jaGFyXCJcblxuICAoKiogU2NhbiBmb3IgcGVyY2VudC1lbmNvZGluZyBhbmQgY29udmVydCB0aGVtIGludG8gQVNDSUkuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1kZWNvZGVkIHN0cmluZyAqKVxuICBsZXQgZGVjb2RlIGIgPVxuICAgICgqIFRPRE86IFNob3VsZCBib3RoIHN0cmljdCBhbmQgbm9uLXN0cmljdCB2ZXJzaW9ucyBiZSBleHBvc2VkPyAqKVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KVxuICAgICAgZWxzZSBpZiBiLltjdXJdID0gJyUnIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICclJ1xuICAgICAgICBlbHNlIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgIHNjYW4gY3VyIGN1clxuICAgICAgICB8IGhpZ2hiaXRzIC0+IGJlZ2luXG4gICAgICAgICAgbGV0IGN1ciA9IGN1ciArIDEgaW5cbiAgICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBiLltjdXItMV1cbiAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgbGV0IHN0YXJ0X2F0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaW50X29mX2hleF9jaGFyIGIuW2N1cl0gd2l0aFxuICAgICAgICAgICAgICB8IGxvd2JpdHMgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociAoaGlnaGJpdHMgbHNsIDQgKyBsb3diaXRzKSk7XG4gICAgICAgICAgICAgICAgY3VyKzFcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdO1xuICAgICAgICAgICAgICAgIGN1clxuICAgICAgICAgICAgaW4gc2NhbiBzdGFydF9hdCBzdGFydF9hdFxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgIGluXG4gICAgc2NhbiAwIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuZW5kXG5cbigqIFBlcmNlbnQgZW5jb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2VuY29kZSA/c2NoZW1lID8oY29tcG9uZW50PWBQYXRoKSBzID1cbiAgUGN0Lih1bmNhc3RfZW5jb2RlZCAoZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCAoY2FzdF9kZWNvZGVkIHMpKSlcblxubGV0IHBjdF9lbmNvZGVyXG4gICAgICA/KHNjaGVtZT1gU2NoZW1lKVxuICAgICAgPyh1c2VyaW5mbz1gVXNlcmluZm8pXG4gICAgICA/KGhvc3Q9YEhvc3QpXG4gICAgICA/KHBhdGg9YFBhdGgpXG4gICAgICA/KHF1ZXJ5X2tleT1gUXVlcnlfa2V5KVxuICAgICAgPyhxdWVyeV92YWx1ZT1gUXVlcnlfdmFsdWUpXG4gICAgICA/KGZyYWdtZW50PWBGcmFnbWVudClcbiAgICAgICgpID1cbiAgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwYXRoOyBxdWVyeV9rZXk7IHF1ZXJ5X3ZhbHVlOyBmcmFnbWVudCB9XG5cbigqIFBlcmNlbnQgZGVjb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2RlY29kZSBzID0gUGN0Lih1bmNhc3RfZGVjb2RlZCAoZGVjb2RlIChjYXN0X2VuY29kZWQgcykpKVxuXG4oKiBVc2VyaW5mbyBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGlkICogY3JlZGVudGlhbCBwYWlyICopXG5tb2R1bGUgVXNlcmluZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG4gIGxldCBjb21wYXJlICh1LHApICh1JyxwJykgPVxuICAgIG1hdGNoIFN0cmluZy5jb21wYXJlIHUgdScgd2l0aFxuICAgIHwgMCAtPiBjb21wYXJlX29wdCBTdHJpbmcuY29tcGFyZSBwIHAnXG4gICAgfCBjIC0+IGNcblxuICBsZXQgdXNlcmluZm9fb2ZfZW5jb2RlZCB1cyA9XG4gICAgbWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5tYXg6MiB+b246JzonIHVzIHdpdGhcbiAgICB8IFtdIC0+IChcIlwiLE5vbmUpXG4gICAgfCBbdV0gLT4gKHBjdF9kZWNvZGUgdSxOb25lKVxuICAgIHwgdTo6cDo6XyAtPiAocGN0X2RlY29kZSB1LFNvbWUgKHBjdF9kZWNvZGUgcCkpXG5cbiAgbGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ICh1LHBvKSA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy4oXG4gICAgICAxICsgKGxlbmd0aCB1KSArIChtYXRjaCBwbyB3aXRoIE5vbmUgLT4gMCB8IFNvbWUgcCAtPiBsZW5ndGggcCkpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHUpO1xuICAgIGJlZ2luIG1hdGNoIHBvIHdpdGggTm9uZSAtPiAoKTtcbiAgICB8IFNvbWUgcCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHApXG4gICAgZW5kO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5lbmRcblxubGV0IHVzZXJpbmZvX29mX2VuY29kZWQgPSBVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQgPSBVc2VyaW5mby5lbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBQYXRoIHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYSBsaXN0IG9mIHBhdGggdG9rZW5zICopXG5tb2R1bGUgUGF0aCA9IHN0cnVjdFxuICAoKiBJbnZhcmlhbnQ6IGV2ZXJ5IGVsZW1lbnQgaXMgbm9uLXplcm8sIHNsYXNoZXMgKC8pIG9ubHkgb2NjdXIgYWxvbmUuICopXG4gICgqIFllcywgaXQncyBiZXR0ZXIgdGhpcyB3YXkuIFRoaXMgbWVhbnMgeW91IGNhbiByZXRhaW4gc2VwYXJhdG9yXG4gICAgIGNvbnRleHQgaW4gcmVjdXJzaW9uIChlLmcuIHJlbW92ZV9kb3Rfc2VnbWVudHMgZm9yIHJlbGF0aXZlIHJlc29sdXRpb24pLiAqKVxuXG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmVcblxuICAoKiBNYWtlIGEgcGF0aCB0b2tlbiBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBwYXRoX29mX2VuY29kZWQgcHMgPVxuICAgIGxldCB0b2tsID0gU3RyaW5nZXh0LmZ1bGxfc3BsaXQgcHMgfm9uOicvJyBpblxuICAgIExpc3QubWFwIHBjdF9kZWNvZGUgdG9rbFxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuND4gKilcbiAgbGV0IHJlbW92ZV9kb3Rfc2VnbWVudHMgcCA9XG4gICAgbGV0IHJldnAgPSBMaXN0LnJldiBwIGluXG4gICAgbGV0IHJlYyBsb29wIGFzY2Vuc2lvbiBvdXRwID0gZnVuY3Rpb25cbiAgICAgIHwgXCIvXCI6OlwiLi5cIjo6ciB8IFwiLi5cIjo6ciAtPiBsb29wIChhc2NlbnNpb24gKyAxKSBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OlwiLlwiOjpyICB8IFwiLlwiOjpyICAtPiBsb29wIGFzY2Vuc2lvbiBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OltdIHwgW10gd2hlbiBMaXN0LihsZW5ndGggcCA+IDAgJiYgaGQgcCA9IFwiL1wiKSAtPiBcIi9cIjo6b3V0cFxuICAgICAgfCBbXSB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gTGlzdC5yZXZfYXBwZW5kXG4gICAgICAgIChcIi9cIjo6KHJldl9pbnRlcmplY3QgXCIvXCIgQXJyYXkuKHRvX2xpc3QgKG1ha2UgYXNjZW5zaW9uIFwiLi5cIikpKSkgb3V0cFxuICAgICAgfCBbXSAtPiBMaXN0LihpZiBsZW5ndGggb3V0cCA+IDAgJiYgaGQgb3V0cCA9IFwiL1wiIHRoZW4gdGwgb3V0cCBlbHNlIG91dHApXG4gICAgICB8IFwiL1wiOjpcIi9cIjo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCAoXCIvXCI6OnIpXG4gICAgICB8IFwiL1wiOjpfOjpyIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBsb29wIChhc2NlbnNpb24gLSAxKSBvdXRwIHJcbiAgICAgIHwgczo6ciAtPiBsb29wIDAgKHM6Om91dHApIHJcbiAgICBpbiBsb29wIDAgW10gcmV2cFxuXG4gIGxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50IHAgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGMgdG9rIC0+IFN0cmluZy5sZW5ndGggdG9rICsgYykgMCBwIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgLT4gZnVuY3Rpb25cbiAgICB8IFwiL1wiIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgfCBzZWcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBzZWcpXG4gICAgKSBcIlwiIGJ1ZiBwO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5cbiAgKCogU3Vicm91dGluZSBmb3IgcmVzb2x2ZSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4zPiAqKVxuICBsZXQgbWVyZ2UgYmhvc3QgYnBhdGggcmVscGF0aCA9XG4gICAgbWF0Y2ggYmhvc3QsIExpc3QucmV2IGJwYXRoIHdpdGhcbiAgICB8IFNvbWUgXywgW10gLT4gXCIvXCI6OnJlbHBhdGhcbiAgICB8IF8sIChcIi9cIjo6cmJwYXRoIHwgXzo6XCIvXCI6OnJicGF0aCkgLT4gTGlzdC5yZXZfYXBwZW5kIChcIi9cIjo6cmJwYXRoKSByZWxwYXRoXG4gICAgfCBfLCBfIC0+IHJlbHBhdGhcbmVuZFxuXG5sZXQgcGF0aF9vZl9lbmNvZGVkID0gUGF0aC5wYXRoX29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50ID0gUGF0aC5lbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50XG5cbigqIFF1ZXJ5IHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYW4gYXNzb2MgbGlzdCBvZiBrZXkvdmFsdWVzICopXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcblxuICB0eXBlIGt2ID0gKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEtWIG9mIGt2XG4gICAgfCBSYXcgb2Ygc3RyaW5nIG9wdGlvbiAqIGt2IExhenkudFxuXG4gIGxldCBjb21wYXJlIHggeSA9IG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgS1Yga3ZsLCBLViBrdmwnXG4gICAgfCBSYXcgKF8sIGxhenkga3ZsKSwgS1Yga3ZsJ1xuICAgIHwgS1Yga3ZsLCBSYXcgKF8sIGxhenkga3ZsJykgLT5cbiAgICAgIGNvbXBhcmVfbGlzdCAoZnVuIChrLHZsKSAoaycsdmwnKSAtPlxuICAgICAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSBrIGsnIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbGlzdCBTdHJpbmcuY29tcGFyZSB2bCB2bCdcbiAgICAgICAgfCBjIC0+IGNcbiAgICAgICkga3ZsIGt2bCdcbiAgICB8IFJhdyAocmF3LF8pLCBSYXcgKHJhdycsXykgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcmF3IHJhdydcblxuICBsZXQgZmluZCBxIGsgPSB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIHEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgc3BsaXRfcXVlcnkgcXMgPVxuICAgIGxldCBlbHMgPSBTdHJpbmdleHQuc3BsaXQgfm9uOicmJyBxcyBpblxuICAgICgqIFJlcGxhY2UgYSArIGluIGEgcXVlcnkgc3RyaW5nIHdpdGggYSBzcGFjZSBpbi1wbGFjZSAqKVxuICAgIGxldCBwbHVzX3RvX3NwYWNlIHMgPVxuICAgICAgbGV0IHMgPSBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIGZvciBpID0gMCB0byBCeXRlcy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgaWYgQnl0ZXMuZ2V0IHMgaSA9ICcrJyB0aGVuIEJ5dGVzLnNldCBzIGkgJyAnXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgKGs6OnY6Ol8pOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgayxcbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5vbjonLCcgKHBsdXNfdG9fc3BhY2Ugdikgd2l0aFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IFtcIlwiXSB8IGwgLT4gbCkgaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBba106OnRsIC0+XG4gICAgICAgIGxldCBuID0gcGx1c190b19zcGFjZSBrLCBbXSBpblxuICAgICAgICBsb29wIChuOjphY2MpIHRsXG4gICAgICB8IFtdOjp0bCAtPiBsb29wICgoXCJcIiwgW10pOjphY2MpIHRsXG4gICAgICB8IFtdIC0+IGFjY1xuICAgIGluXG4gICAgbWF0Y2ggZWxzIHdpdGhcbiAgICB8IFtdICAtPiBbXCJcIixbXV1cbiAgICB8IGVscyAtPiBsb29wIFtdXG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4gZWwgLT4gU3RyaW5nZXh0LnNwbGl0IH5vbjonPScgZWwgfm1heDoyKSBlbHMpXG5cbiAgKCogTWFrZSBhIHF1ZXJ5IHR1cGxlIGxpc3QgZnJvbSBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IHF1ZXJ5X29mX2VuY29kZWQgcXMgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChrLCB2KSAtPiAocGN0X2RlY29kZSBrLCBMaXN0Lm1hcCBwY3RfZGVjb2RlIHYpKVxuICAgICAgKHNwbGl0X3F1ZXJ5IHFzKVxuXG4gICgqIEFzc2VtYmxlIGEgcXVlcnkgc3RyaW5nIHN1aXRhYmxlIGZvciBwdXR0aW5nIGludG8gYSBVUkkuXG4gICAqIFR1cGxlIGlucHV0cyBhcmUgcGVyY2VudCBkZWNvZGVkIGFuZCB3aWxsIGJlIGVuY29kZWQgYnlcbiAgICogdGhpcyBmdW5jdGlvbi5cbiAgKilcbiAgbGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhIChrLHYpIC0+XG4gICAgICAgIGEgKyAoU3RyaW5nLmxlbmd0aCBrKVxuICAgICAgICArIChMaXN0LmZvbGRfbGVmdCAoZnVuIGEgcyAtPiBhKyhTdHJpbmcubGVuZ3RoIHMpKzEpIDAgdikgKyAyKSAoLTEpIGwgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiAoayx2KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnF1ZXJ5X2tleSBrKTtcbiAgICAgICAgaWYgdiA8PiBbXSB0aGVuIChcbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc9JztcbiAgICAgICAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiBzIC0+XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgICAgICAgICAgIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV92YWx1ZSBzKVxuICAgICAgICAgICAgKSBcIixcIiBidWYgdilcbiAgICAgICkgXCImXCIgYnVmIGw7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCBvZl9yYXcgcXMgPVxuICAgIGxldCBsYXp5X3F1ZXJ5ID0gTGF6eS5mcm9tX2Z1biAoZnVuICgpIC0+IHF1ZXJ5X29mX2VuY29kZWQgcXMpIGluXG4gICAgUmF3IChTb21lIHFzLCBsYXp5X3F1ZXJ5KVxuXG4gIGxldCBrdiA9IGZ1bmN0aW9uIFJhdyAoXywgbGF6eSBrdikgfCBLViBrdiAtPiBrdlxuZW5kXG5cbmxldCBxdWVyeV9vZl9lbmNvZGVkID0gUXVlcnkucXVlcnlfb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA9IFF1ZXJ5LmVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZVxuXG4oKiBUeXBlIG9mIHRoZSBVUkksIHdpdGggbW9zdCBiaXRzIGJlaW5nIG9wdGlvbmFsICopXG50eXBlIHQgPSB7XG4gIHNjaGVtZTogUGN0LmRlY29kZWQgb3B0aW9uO1xuICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gIGhvc3Q6IFsgYElwdjRfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXSBvcHRpb24gO1xuICBwb3J0OiBpbnQgb3B0aW9uO1xuICBwYXRoOiBQYXRoLnQ7XG4gIHF1ZXJ5OiBRdWVyeS50O1xuICBmcmFnbWVudDogUGN0LmRlY29kZWQgb3B0aW9uO1xufVxuXG5sZXQgZW1wdHkgPSB7XG4gIHNjaGVtZSA9IE5vbmU7XG4gIHVzZXJpbmZvID0gTm9uZTtcbiAgaG9zdCA9IE5vbmU7XG4gIHBvcnQgPSBOb25lO1xuICBwYXRoID0gW107XG4gIHF1ZXJ5ID0gUXVlcnkuUmF3IChOb25lLCBMYXp5LmZyb21fdmFsIFtdKTtcbiAgZnJhZ21lbnQgPSBOb25lO1xufVxuXG5sZXQgY29tcGFyZV9kZWNvZGVkID0gUGN0LnVubGlmdF9kZWNvZGVkMiBTdHJpbmcuY29tcGFyZVxubGV0IGNvbXBhcmVfZGVjb2RlZF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2RlY29kZWRcbmxldCBjb21wYXJlX2hvc3QgaDEgaDIgPVxuICBtYXRjaCBoMSwgaDIgd2l0aFxuICB8IGBJcHY0X2xpdGVyYWwgaXAxLCBgSXB2NF9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYElwdjZfbGl0ZXJhbCBpcDEsIGBJcHY2X2xpdGVyYWwgaXAyIC0+IFN0cmluZy5jb21wYXJlIGlwMSBpcDJcbiAgfCBgSG9zdCBoMSwgYEhvc3QgaDIgLT4gY29tcGFyZV9kZWNvZGVkIGgxIGgyXG4gIHwgXyAtPiAtMVxubGV0IGNvbXBhcmVfaG9zdF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2hvc3RcblxubGV0IGNvbXBhcmUgdCB0JyA9XG4gIChtYXRjaCBjb21wYXJlX2hvc3Rfb3B0IHQuaG9zdCB0Jy5ob3N0IHdpdGhcbiAgfCAwIC0+IChtYXRjaCBjb21wYXJlX2RlY29kZWRfb3B0IHQuc2NoZW1lIHQnLnNjaGVtZSB3aXRoXG4gICAgfCAwIC0+IChtYXRjaCBjb21wYXJlX29wdCAoZnVuIHAgcCcgLT5cbiAgICAgIGlmIHAgPCBwJyB0aGVuIC0xIGVsc2UgaWYgcCA+IHAnIHRoZW4gMSBlbHNlIDBcbiAgICApIHQucG9ydCB0Jy5wb3J0IHdpdGhcbiAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgVXNlcmluZm8uY29tcGFyZSB0LnVzZXJpbmZvIHQnLnVzZXJpbmZvIHdpdGhcbiAgICAgICAgfCAwIC0+IChtYXRjaCBQYXRoLmNvbXBhcmUgdC5wYXRoIHQnLnBhdGggd2l0aFxuICAgICAgICAgIHwgMCAtPiAobWF0Y2ggUXVlcnkuY29tcGFyZSB0LnF1ZXJ5IHQnLnF1ZXJ5IHdpdGhcbiAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2RlY29kZWRfb3B0IHQuZnJhZ21lbnQgdCcuZnJhZ21lbnRcbiAgICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICB8IGMgLT4gYylcbiAgICAgIHwgYyAtPiBjKVxuICAgIHwgYyAtPiBjKVxuICB8IGMgLT4gYylcblxubGV0IGVxdWFsIHQgdCcgPSBjb21wYXJlIHQgdCcgPSAwXG5cbmxldCB1bmNhc3Rfb3B0ID0gZnVuY3Rpb25cbiAgfCBTb21lIGggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBub3JtYWxpemUgc2NoZW0gdXJpID1cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgc2NoZW0pKSA6IFNjaGVtZSkgaW5cbiAgbGV0IGRvYiBmID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBTb21lIChQY3QudW5saWZ0X2RlY29kZWQgZiB4KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluIHt1cmkgd2l0aFxuICAgICAgc2NoZW1lPWRvYiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHVyaS5zY2hlbWU7XG4gICAgICBob3N0PSBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgICAgfCBTb21lIChgSXB2NF9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2NF9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2Nl9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSG9zdCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfVxuXG4oKiogQ29udmVydCBhIFVSSSBzdHJ1Y3R1cmUgaW50byBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmdcbiAgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMz5cbiopXG5sZXQgdG9fc3RyaW5nID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9XG4gIGxldCBzY2hlbWUgPSBtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgcylcbiAgICB8IE5vbmUgLT4gTm9uZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgKCogUGVyY2VudCBlbmNvZGUgYSBkZWNvZGVkIHN0cmluZyBhbmQgYWRkIGl0IHRvIHRoZSBidWZmZXIgKilcbiAgbGV0IGFkZF9wY3Rfc3RyaW5nID8oY29tcG9uZW50PWBQYXRoKSB4ID1cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZCAoUGN0LmVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgeCkpXG4gIGluXG4gIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSB4IC0+XG4gICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuc2NoZW1lIHg7XG4gICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonXG4gICk7XG4gICgqIFVSSSBoYXMgYSBob3N0IGlmIGFueSBob3N0LXJlbGF0ZWQgY29tcG9uZW50IGlzIHNldC4gRGVmYXVsdHMgdG8gXCJcIi4gKilcbiAgaWYgKG1hdGNoIHVyaS51c2VyaW5mbywgdXJpLmhvc3QsIHVyaS5wb3J0IHdpdGhcbiAgfCBTb21lIF8sIF8sIF8gfCBfLCBTb21lIF8sIF8gfCBfLCBfLCBTb21lIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiLy9cIjtcbiAgKG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHVzZXJpbmZvIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAoUGN0LnVuY2FzdF9lbmNvZGVkIChlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ0AnXG4gICk7XG4gIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIChgSG9zdCBob3N0KSAtPlxuICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuaG9zdCBob3N0O1xuICB8U29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdFxuICB8U29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnWyc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ10nXG4gICk7XG4gIChtYXRjaCB1cmkucG9ydCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHBvcnQgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6JztcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHN0cmluZ19vZl9pbnQgcG9ydClcbiAgKTtcbiAgKG1hdGNoIHVyaS5wYXRoIHdpdGggKCogSGFuZGxlIHJlbGF0aXZlIHBhdGhzIGNvcnJlY3RseSAqKVxuICB8IFtdIC0+ICgpXG4gIHwgXCIvXCI6Ol8gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gIHwgZmlyc3Rfc2VnbWVudDo6XyAtPlxuICAgIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgIHwgU29tZSBfIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgIHwgTm9uZSAtPlxuICAgICAgICgqIGVuc3VyZSByb3VuZHRyaXAgYnkgZm9yY2luZyByZWxhdGl2ZSBwYXRoIGludGVycHJldGF0aW9uIG5vdCBzY2hlbWUgKilcbiAgICAgICBtYXRjaCBTdHJpbmdleHQuZmluZF9mcm9tIGZpcnN0X3NlZ21lbnQgfnBhdHRlcm46XCI6XCIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBfIC0+IG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi4vXCJcbiAgICApO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKSlcbiAgKTtcbiAgUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgfCBSYXcgKE5vbmUsXykgfCBLViBbXSAtPiAoKVxuICAgIHwgUmF3IChfLGxhenkgcSkgfCBLViBxIC0+ICgqIG5vcm1hbGl6ZSBlLmcuIHBlcmNlbnQgY2FwaXRhbGl6YXRpb24gKilcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJz8nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgfnBjdF9lbmNvZGVyIHEpXG4gICk7XG4gIChtYXRjaCB1cmkuZnJhZ21lbnQgd2l0aFxuICAgfE5vbmUgLT4gKClcbiAgIHxTb21lIGYgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnIyc7IGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuZnJhZ21lbnQgZlxuICApO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbigqIFZhcmlvdXMgYWNjZXNzb3IgZnVuY3Rpb25zLCBhcyB0aGUgZXh0ZXJuYWwgdXJpIHR5cGUgaXMgYWJzdHJhY3QgICopXG5sZXQgZ2V0X2RlY29kZWRfb3B0ID0gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHxTb21lIHggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHgpXG5sZXQgc2NoZW1lIHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuc2NoZW1lXG5sZXQgd2l0aF9zY2hlbWUgdXJpID1cbiAgZnVuY3Rpb25cbiAgfFNvbWUgc2NoZW1lIC0+IHsgdXJpIHdpdGggc2NoZW1lPVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgc2NoZW1lKSB9XG4gIHxOb25lIC0+IHsgdXJpIHdpdGggc2NoZW1lPU5vbmUgfVxuXG5sZXQgaG9zdCB1cmkgPVxuICBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBTb21lIGhcbiAgfCBTb21lIChgSG9zdCBoKSAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgaClcblxubGV0IGhvc3Rfd2l0aF9kZWZhdWx0ID8oZGVmYXVsdD1cImxvY2FsaG9zdFwiKSB1cmkgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHxOb25lIC0+IGRlZmF1bHRcbiAgfFNvbWUgaCAtPiBoXG5cbmxldCB1c2VyaW5mbyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdXNlcmluZm8gLT4gU29tZSAoUGN0LnVuY2FzdF9lbmNvZGVkIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IE5vbmUgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvXG4gICAgfCBTb21lIHMgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpXG5sZXQgd2l0aF91c2VyaW5mbyB1cmkgdXNlcmluZm8gPVxuICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG5cbmxldCB1c2VyIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAodXNlciwgXykgLT4gU29tZSB1c2VyXG5cbmxldCBwYXNzd29yZCB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgfCBTb21lIChfLCBOb25lKSAtPiBOb25lXG4gIHwgU29tZSAoXywgU29tZSBwYXNzKSAtPiBTb21lIHBhc3NcbmxldCB3aXRoX3Bhc3N3b3JkIHVyaSBwYXNzd29yZCA9XG4gIGxldCByZXN1bHQgdXNlcmluZm8gPSBtYXRjaCBob3N0IHVyaSB3aXRoXG4gICAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgaW5cbiAgbWF0Y2ggdXJpLnVzZXJpbmZvLCBwYXNzd29yZCB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB1cmlcbiAgfCBOb25lLCBTb21lIF8gLT4gcmVzdWx0IChTb21lIChcIlwiLHBhc3N3b3JkKSlcbiAgfCBTb21lICh1c2VyLF8pLCBfIC0+IHJlc3VsdCAoU29tZSAodXNlciwgcGFzc3dvcmQpKVxuXG5sZXQgcG9ydCB1cmkgPSB1cmkucG9ydFxubGV0IHdpdGhfcG9ydCB1cmkgcG9ydCA9XG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBwb3J0PXBvcnQgfVxuICB8IE5vbmUgLT4gYmVnaW5cbiAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9Tm9uZTsgcG9ydD1Ob25lIH1cbiAgICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgcG9ydD1wb3J0IH1cbiAgZW5kXG5cbigqIFJldHVybiB0aGUgcGF0aCBjb21wb25lbnQgKilcbmxldCBwYXRoID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gIHwgTm9uZSAtPiBlbmNvZGVkX29mX3BhdGggfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoXG4gIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfcGF0aCB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKVxubGV0IHdpdGhfcGF0aCB1cmkgcGF0aCA9XG4gIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHBhdGggaW5cbiAgbWF0Y2ggaG9zdCB1cmksIHBhdGggd2l0aFxuICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiB7IHVyaSB3aXRoIHBhdGg9cGF0aCB9XG4gIHwgU29tZSBfLCBfICAtPiB7IHVyaSB3aXRoIHBhdGg9XCIvXCI6OnBhdGggfVxuXG5sZXQgZnJhZ21lbnQgdXJpID0gZ2V0X2RlY29kZWRfb3B0IHVyaS5mcmFnbWVudFxubGV0IHdpdGhfZnJhZ21lbnQgdXJpID1cbiAgZnVuY3Rpb25cbiAgfE5vbmUgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Ob25lIH1cbiAgfFNvbWUgZnJhZyAtPiB7IHVyaSB3aXRoIGZyYWdtZW50PVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgZnJhZykgfVxuXG5sZXQgcXVlcnkgdXJpID0gUXVlcnkua3YgdXJpLnF1ZXJ5XG5sZXQgdmVyYmF0aW1fcXVlcnkgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gIHwgUmF3IChxcyxfKSAtPiBxc1xuICB8IEtWIFtdIC0+IE5vbmVcbiAgfCBLViBrdiAtPiBTb21lIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWU6KHNjaGVtZSB1cmkpIH5wY3RfZW5jb2RlciBrdilcbilcbmxldCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrID0gUXVlcnkuKGZpbmQgKGt2IHVyaS5xdWVyeSkgaylcbmxldCBnZXRfcXVlcnlfcGFyYW0gdXJpIGsgPVxuICBtYXRjaCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrIHdpdGhcbiAgfE5vbmUgLT4gTm9uZVxuICB8U29tZSB2IC0+IFNvbWUgKFN0cmluZy5jb25jYXQgXCIsXCIgdilcblxubGV0IHdpdGhfcXVlcnkgdXJpIHF1ZXJ5ID0geyB1cmkgd2l0aCBxdWVyeT1RdWVyeS5LViBxdWVyeSB9XG5sZXQgcV9zIHEgPSBMaXN0Lm1hcCAoZnVuIChrLHYpIC0+IGssW3ZdKSBxXG5sZXQgd2l0aF9xdWVyeScgdXJpIHF1ZXJ5ID0gd2l0aF9xdWVyeSB1cmkgKHFfcyBxdWVyeSlcbmxldCBhZGRfcXVlcnlfcGFyYW0gdXJpIHAgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocDo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtJyB1cmkgKGssdikgPVxuICBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAoKGssW3ZdKTo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcyB1cmkgcHMgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocHNAKGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcycgdXJpIHBzID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChxX3MgcHMpQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IHJlbW92ZV9xdWVyeV9wYXJhbSB1cmkgayA9IFF1ZXJ5LihcbiAgeyB1cmkgd2l0aCBxdWVyeT1LViAoTGlzdC5maWx0ZXIgKGZ1biAoaycsXykgLT4gazw+aycpIChrdiB1cmkucXVlcnkpKSB9XG4pXG5cbigqIENvbnN0cnVjdCBlbmNvZGVkIHBhdGggYW5kIHF1ZXJ5IGNvbXBvbmVudHMgKilcbmxldCBwYXRoX2FuZF9xdWVyeSB1cmkgPVxuICBtYXRjaCAocGF0aCB1cmkpLCAocXVlcnkgdXJpKSB3aXRoXG4gIHxcIlwiLCBbXSAtPiBcIi9cIiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICB8XCJcIiwgcSAtPiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIi8/JXNcIiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG4gIHxwLCBbXSAtPiBwXG4gIHxwLCBxIC0+XG4gICAgbGV0IHNjaGVtZSA9IHVuY2FzdF9vcHQgdXJpLnNjaGVtZSBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXM/JXNcIiBwIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgcSlcblxuKCogVE9ETzogZnVuY3Rpb25zIHRvIGFkZCBhbmQgcmVtb3ZlIGZyb20gYSBVUkkgKilcblxuKCogUmVzb2x2ZSBhIFVSSSB3cnQgYSBiYXNlIFVSSSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMj4gKilcbmxldCByZXNvbHZlIHNjaGVtIGJhc2UgdXJpID1cbiAgbGV0IHNjaGVtID0gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCAobWF0Y2ggc2NoZW1lIGJhc2Ugd2l0aFxuICAgICAgfCBOb25lIC0+ICBzY2hlbVxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICApKSBpblxuICBub3JtYWxpemUgc2NoZW1cbiAgICBQYXRoLihtYXRjaCBzY2hlbWUgdXJpLCB1c2VyaW5mbyB1cmksIGhvc3QgdXJpIHdpdGhcbiAgICB8IFNvbWUgXywgXywgXyAtPlxuICAgICAge3VyaSB3aXRoIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICB8IE5vbmUsIFNvbWUgXywgX1xuICAgIHwgTm9uZSwgXywgU29tZSBfIC0+XG4gICAgICB7dXJpIHdpdGggc2NoZW1lPWJhc2Uuc2NoZW1lOyBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBOb25lLCBOb25lIC0+XG4gICAgICBsZXQgdXJpID0ge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgdXNlcmluZm89YmFzZS51c2VyaW5mbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdD1iYXNlLmhvc3Q7IHBvcnQ9YmFzZS5wb3J0fSBpblxuICAgICAgbGV0IHBhdGhfc3RyID0gcGF0aCB1cmkgaW5cbiAgICAgIGlmIHBhdGhfc3RyPVwiXCJcbiAgICAgIHRoZW4geyB1cmkgd2l0aFxuICAgICAgICAgICAgIHBhdGg9YmFzZS5wYXRoO1xuICAgICAgICAgICAgIHF1ZXJ5PW1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgICAgICAgICAgICB8IFF1ZXJ5LlJhdyAoTm9uZSxfKSB8IFF1ZXJ5LktWIFtdIC0+IGJhc2UucXVlcnlcbiAgICAgICAgICAgICAgIHwgXyAtPiB1cmkucXVlcnlcbiAgICAgICAgICAgfVxuICAgICAgZWxzZSBpZiBwYXRoX3N0ci5bMF09Jy8nXG4gICAgICB0aGVuIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgICBlbHNlIHt1cmkgd2l0aFxuICAgICAgICBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgKG1lcmdlIGJhc2UuaG9zdCBiYXNlLnBhdGggdXJpLnBhdGgpO1xuICAgICAgfVxuICAgIClcblxubGV0IGNhbm9uaWNhbGl6ZSB1cmkgPVxuICBsZXQgdXJpID0gcmVzb2x2ZSBcIlwiIGVtcHR5IHVyaSBpblxuICBsZXQgbW9kdWxlIFNjaGVtZSA9XG4gICAgKHZhbCAobW9kdWxlX29mX3NjaGVtZSAodW5jYXN0X29wdCB1cmkuc2NoZW1lKSkgOiBTY2hlbWUpIGluXG4gIHsgdXJpIHdpdGhcbiAgICBwb3J0PVNjaGVtZS5jYW5vbmljYWxpemVfcG9ydCB1cmkucG9ydDtcbiAgICBwYXRoPVNjaGVtZS5jYW5vbmljYWxpemVfcGF0aCB1cmkucGF0aDtcbiAgfVxuXG5sZXQgcHAgcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxubGV0IHBwX2h1bSBwcGYgdXJpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZyB1cmkpXG5cbm1vZHVsZSBQYXJzZXIgPSBzdHJ1Y3RcbiAgb3BlbiBBbmdzdHJvbVxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxuICBsZXQgc3RyaW5nX29mX2NoYXJfbGlzdCBjaGFycyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfY2hhciBjaGFycylcblxuICBsZXQgc2NoZW1lID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAodGFrZV93aGlsZSAoZnVuIGMgLT4gYyA8PiAnOicgJiYgYyA8PiAnLycgJiYgYyA8PiAnPycgJiYgYyA8PiAnIycpXG4gICAgICA8KiBjaGFyICc6JylcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgaXNfZGlnaXQgPSBmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdCA9XG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCBoZXhhZGVjaW1hbCA9IGxpZnQgc3RyaW5nX29mX2NoYXJfbGlzdCAobWFueSBoZXhfZGlnaXQpXG5cbiAgbGV0IGNfZG90ID0gY2hhciAnLidcblxuICBsZXQgY19hdCA9IGNoYXIgJ0AnXG5cbiAgbGV0IGNfY29sb24gPSBjaGFyICc6J1xuXG4gIGxldCBkZWNfb2N0ZXQgPVxuICAgIHRha2Vfd2hpbGUxIChmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlKSA+Pj0gZnVuIG51bSAtPlxuICAgIGlmIGludF9vZl9zdHJpbmcgbnVtIDwgMjU2IHRoZW5cbiAgICAgIHJldHVybiBudW1cbiAgICBlbHNlXG4gICAgICBmYWlsIFwiaW52YWxpZCBvY3RlY3RcIlxuXG4gIGxldCBpcHY0X2FkZHJlc3MgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHRocmVlIG9uZSAtPiBTdHJpbmcuY29uY2F0IFwiLlwiIHRocmVlIF4gXCIuXCIgXiBvbmUpXG4gICAgICAoY291bnQgMyAoZGVjX29jdGV0IDwqIGNfZG90KSlcbiAgICAgIGRlY19vY3RldFxuXG4gICgqIC0tIGFmdGVyIGRvdWJsZSBjb2xvbiwgSVB2NCBkb3R0ZWQgbm90YXRpb24gY291bGQgYXBwZWFyIGFueXdoZXJlICopXG4gIGxldCBhZnRlcl9kb3VibGVfY29sb24gPVxuICAgIGZpeCAoZnVuIGYgLT5cbiAgICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdXG4gICAgICAgIDx8PiBsaWZ0MiAoZnVuIHggeSAtPiB4IDo6IHkpIGhleGFkZWNpbWFsIChjX2NvbG9uICo+IGYgPHw+IHJldHVybiBbXSkpXG5cbiAgbGV0IGRvdWJsZV9jb2xvbiBjb3VudCA9XG4gICAgYWZ0ZXJfZG91YmxlX2NvbG9uID4+PSAoZnVuIHJlc3QgLT5cbiAgICBsZXQgZmlsbGVyX2xlbmd0aCA9IDggLSBjb3VudCAtIExpc3QubGVuZ3RoIHJlc3QgaW5cbiAgICBpZiBmaWxsZXJfbGVuZ3RoIDw9IDAgdGhlblxuICAgICAgZmFpbCBcInRvbyBtYW55IHBhcnRzIGluIElQdjYgYWRkcmVzc1wiXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChcIlwiIDo6IHJlc3QpKVxuICAgIDx8PiByZXR1cm4gW1wiXCJdXG5cbiAgbGV0IHJlYyBwYXJ0ID0gZnVuY3Rpb25cbiAgICB8IDcgLT5cbiAgICAgICgqIG1heCA4IHBhcnRzIGluIGFuIElQdjYgYWRkcmVzcyAqKVxuICAgICAgbGlmdCAoZnVuIHggLT4gWyB4IF0pIGhleGFkZWNpbWFsXG4gICAgfCA2IC0+XG4gICAgICAoKiBhZnRlciA2IHBhcnRzIGl0IGNvdWxkIGVuZCBpbiBJUHY0IGRvdHRlZCBub3RhdGlvbiAqKVxuICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdIDx8PiBoZXhfcGFydCA2XG4gICAgfCBuIC0+XG4gICAgICBoZXhfcGFydCBuXG5cbiAgYW5kIGhleF9wYXJ0IG4gPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHggeSAtPiB4IDo6IHkpXG4gICAgICBoZXhhZGVjaW1hbFxuICAgICAgKGNfY29sb24gKj4gKGNfY29sb24gKj4gZG91YmxlX2NvbG9uIChuICsgMSkgPHw+IHBhcnQgKG4gKyAxKSkpXG5cbiAgbGV0IHJlYyBzcGxpdF93aXRoIGYgeHMgPVxuICAgIG1hdGNoIHhzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBbXSwgW11cbiAgICB8IHkgOjogeXMgLT5cbiAgICAgIGlmIGYgeSB0aGVuXG4gICAgICAgIGxldCB6cywgdHMgPSBzcGxpdF93aXRoIGYgeXMgaW5cbiAgICAgICAgeSA6OiB6cywgdHNcbiAgICAgIGVsc2VcbiAgICAgICAgW10sIHhzXG5cbiAgbGV0IGlwdjYgPVxuICAgIGxldCBmb3JtYXRfYWRkciBzZWdtZW50cyA9XG4gICAgICBsZXQgYmVmb3JlX2RvdWJsZV9jb2xvbiwgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICAgICAgc3BsaXRfd2l0aCAoZnVuIHNlZ21lbnQgLT4gc2VnbWVudCA8PiBcIlwiKSBzZWdtZW50c1xuICAgICAgaW5cbiAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuY29uY2F0IFwiOlwiIGJlZm9yZV9kb3VibGVfY29sb24gaW5cbiAgICAgIGxldCByZXMgPVxuICAgICAgICBtYXRjaCBhZnRlcl9kb3VibGVfY29sb24gd2l0aFxuICAgICAgICB8IFwiXCIgOjogeHMgLT5cbiAgICAgICAgICBiZWZvcmUgXiBcIjo6XCIgXiBTdHJpbmcuY29uY2F0IFwiOlwiIHhzXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGJlZm9yZVxuICAgICAgaW5cbiAgICAgIHJlc1xuICAgIGluXG4gICAgbGlmdCBmb3JtYXRfYWRkciAoY19jb2xvbiAqPiBjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAwIDx8PiBwYXJ0IDApXG5cbiAgbGV0IGlwdjZfYWRkcmVzcyA9XG4gICAgKGNoYXIgJ1snKSAqPiBpcHY2IDwqIChjaGFyICddJylcblxuICBsZXQgcGN0X2VuY29kZWQgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHBjdCBkaWdpdHMgLT4gc3RyaW5nX29mX2NoYXJfbGlzdCAocGN0IDo6IGRpZ2l0cykpXG4gICAgICAoY2hhciAnJScpXG4gICAgICAoY291bnQgMiBoZXhfZGlnaXQpXG5cbiAgbGV0IHN1Yl9kZWxpbXMgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyEnIHwgJyQnIHwgJyYnIHwgJ1xcJycgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnLCcgfCAnOycgfCAnPScgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCB1bnJlc2VydmVkID1cbiAgICAoKiBcIltBLVphLXowLTktLl9+XVwiICopXG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnLScgfCAnLicgfCAnXycgfCAnficgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCByZWdfbmFtZSA9XG4gICAgbGlmdFxuICAgICAgKFN0cmluZy5jb25jYXQgXCJcIilcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICBdKSlcblxuICBsZXQgaG9zdCA9XG4gICAgY2hvaWNlXG4gICAgICBbIGlwdjRfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY0X2xpdGVyYWwgaClcbiAgICAgIDsgaXB2Nl9hZGRyZXNzID4+fCAoZnVuIGggLT4gYElwdjZfbGl0ZXJhbCBoKVxuICAgICAgOyByZWdfbmFtZSA+PnwgKGZ1biBzIC0+IGBIb3N0IChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgICgqIFRPRE8oZGlub3NhdXJlKTogQWNjb3JkaW5nIHRvIFJGQzM5ODY6XG5cbiAgICAgICAgIGhvc3QgICAgICAgID0gSVAtbGl0ZXJhbCAvIElQdjRhZGRyZXNzIC8gcmVnLW5hbWVcbiAgICAgICAgIElQLWxpdGVyYWwgID0gXCJbXCIgKCBJUHY2YWRkcmVzcyAvIElQdkZ1dHVyZSAgKSBcIl1cIlxuICAgICAgICAgSVB2RnV0dXJlICAgPSBcInZcIiAxKkhFWERJRyBcIi5cIiAxKiggdW5yZXNlcnZlZCAvIHN1Yi1kZWxpbXMgLyBcIjpcIiApXG5cbiAgICAgICAgIElQdkZ1dHVyZSBpcyBub3QgaW1wbGVtZW50ZWQuIFdlIHNob3VsZCBoYW5kbGUgaXQ6XG5cbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuICAgICAgICopXG4gICAgICBdXG5cbiAgbGV0IHVzZXJpbmZvID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHMgPSBTdHJpbmcuY29uY2F0IFwiXCIgeCBpblxuICAgICAgICBTb21lIChVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkIHMpKVxuICAgICAgKG1hbnlcbiAgICAgICAgIChjaG9pY2VcbiAgICAgICAgICAgIFsgc3RyaW5nX29mX2NoYXIgPCQ+IHVucmVzZXJ2ZWRcbiAgICAgICAgICAgIDsgcGN0X2VuY29kZWRcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IHN1Yl9kZWxpbXNcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IGNfY29sb25cbiAgICAgICAgICAgIF0pXG4gICAgICA8KiBjX2F0KVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBwb3J0ID1cbiAgICBwZWVrX2NoYXIgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lICc6JyAtPlxuICAgICAgY19jb2xvbiAqPiB0YWtlX3doaWxlIGlzX2RpZ2l0ID4+fCBmdW4gcG9ydCAtPlxuICAgICAgbGV0IGRlY29kZWQgPSBQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHBvcnQpIGluXG4gICAgICAodHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKFBjdC51bmNhc3RfZGVjb2RlZCBkZWNvZGVkKSkgd2l0aCBfIC0+IE5vbmUpXG4gICAgfCBTb21lIF8gfCBOb25lIC0+XG4gICAgICByZXR1cm4gTm9uZVxuXG4gIGxldCBhdXRob3JpdHkgPVxuICAgIHN0cmluZyBcIi8vXCJcbiAgICAqPiBsaWZ0M1xuICAgICAgICAgKGZ1biB1c2VyaW5mbyBob3N0IHBvcnQgLT5cbiAgICAgICAgICAgdXNlcmluZm8sIFNvbWUgaG9zdCwgcG9ydClcbiAgICAgICAgIHVzZXJpbmZvXG4gICAgICAgICBob3N0XG4gICAgICAgICBwb3J0XG4gICAgPHw+IHJldHVybiAoTm9uZSwgTm9uZSwgTm9uZSlcblxuICBsZXQgcGF0aCA9XG4gICAgbGlmdFxuICAgICAgUGF0aC5wYXRoX29mX2VuY29kZWRcbiAgICAgICh0YWtlX3doaWxlIChmdW5jdGlvbiAnPycgfCAnIycgLT4gZmFsc2UgfCBfIC0+IHRydWUpKVxuXG4gIGxldCBxdWVyeSA9XG4gICAgbGlmdFxuICAgICAgUXVlcnkub2ZfcmF3XG4gICAgICAoY2hhciAnPycgKj4gdGFrZV90aWxsIChmdW5jdGlvbiAnIycgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpKVxuICAgIDx8PiByZXR1cm4gKFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSkpXG5cbiAgbGV0IGZyYWdtZW50ID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoY2hhciAnIycgKj4gdGFrZV93aGlsZSAoZnVuIF8gLT4gdHJ1ZSkpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IF91cmlfcmVmZXJlbmNlID1cbiAgICBsaWZ0NFxuICAgICAgKGZ1biBzY2hlbWUgKHVzZXJpbmZvLCBob3N0LCBwb3J0KSBwYXRoIHF1ZXJ5IGZyYWdtZW50IC0+XG4gICAgICAgIG5vcm1hbGl6ZSBzY2hlbWUgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSlcbiAgICAgIHNjaGVtZVxuICAgICAgYXV0aG9yaXR5XG4gICAgICBwYXRoXG4gICAgICBxdWVyeVxuICAgIDwqPiBmcmFnbWVudFxuXG4gICgqIFhYWChhbm1vbnRlaXJvKTogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3aXRoIHRoZSBvbGQgcmVnZXggcGFyc2VyLCB3ZVxuICAgKiBvbmx5IHBhcnNlIHVudGlsIHRoZSBmaXJzdCBuZXdsaW5lIGNoYXJhY3RlciBhbmQgZHJvcCBldmVyeXRoaW5nIGVsc2VcbiAgICogYWZ0ZXIgdGhhdCAqKVxuICBsZXQgdXJpX3JlZmVyZW5jZSA9XG4gICAgdGFrZV93aGlsZSAoZnVuY3Rpb24gfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSkgPj58IGZ1biBzIC0+XG4gICAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIF91cmlfcmVmZXJlbmNlIHMgd2l0aFxuICAgICAgfCBPayB0IC0+IHRcbiAgICAgIHwgRXJyb3IgXyAtPlxuICAgICAgICAoKiBTaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiBpZiB0aGUgcGFyc2VyIGlzIGZvcmdpdmluZy4gKilcbiAgICAgICAgZW1wdHlcbmVuZFxuXG5sZXQgZGVjb2RlX2hvc3QgaG9zdCA9XG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgUGFyc2VyLmhvc3QgaG9zdCB3aXRoXG4gIHwgT2sgcGFyc2VkIC0+IHBhcnNlZFxuICB8IEVycm9yIF8gLT5cbiAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5pcHY2IGhvc3Qgd2l0aFxuICAgIHwgT2sgcGFyc2VkIC0+IChgSXB2Nl9saXRlcmFsIHBhcnNlZClcbiAgICB8IEVycm9yIF8gLT4gKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIGhvc3QpKVxuXG4oKiBNYWtlIGEgVVJJIHJlY29yZC4gVGhpcyBpcyBhIGJpdCBtb3JlIGluZWZmaWNpZW50IHRoYW4gaXQgbmVlZHMgdG8gYmUgZHVlIHRvIHRoZVxuICogY2FzdGluZy91bmNhc3RpbmcgKHdoaWNoIGlzbid0IGZ1bGx5IGlkZW50aXR5IGR1ZSB0byB0aGUgb3B0aW9uIGJveCksIGJ1dCBpdCBpc1xuICogbm8gYmlnIGRlYWwgZm9yIG5vdy5cbiopXG5sZXQgbWFrZSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgbGV0IGRlY29kZSA9IGZ1bmN0aW9uXG4gICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGhvc3QgPSBtYXRjaCB1c2VyaW5mbywgaG9zdCwgcG9ydCB3aXRoXG4gICAgfCBfLCBTb21lIF8sIF8gfCBOb25lLCBOb25lLCBOb25lIC0+IGhvc3RcbiAgICB8IFNvbWUgXywgTm9uZSwgXyB8IF8sIE5vbmUsIFNvbWUgXyAtPiBTb21lIFwiXCJcbiAgaW5cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSkgaW5cbiAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcCBpblxuICAgICAgbWF0Y2ggaG9zdCwgcGF0aCB3aXRoXG4gICAgICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiBwYXRoXG4gICAgICB8IFNvbWUgXywgXyAgLT4gXCIvXCI6OnBhdGhcbiAgaW5cbiAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgIHwgU29tZSBwIC0+IFF1ZXJ5LktWIHBcbiAgaW5cbiAgbGV0IHNjaGVtZSA9IGRlY29kZSBzY2hlbWUgaW5cbiAgbm9ybWFsaXplIHNjaGVtZVxuICAgIHsgc2NoZW1lOyB1c2VyaW5mbztcbiAgICAgIGhvc3QgPVxuICAgICAgICAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgIHwgU29tZSBob3N0IC0+IFNvbWUgKGRlY29kZV9ob3N0IGhvc3QpXG4gICAgICAgIHwgTm9uZSAtPiBOb25lKTtcbiAgICAgIHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG5sZXQgd2l0aF9ob3N0IHVyaSBob3N0ID1cbiAgeyB1cmkgd2l0aFxuICAgIGhvc3QgPSAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIH1cblxubGV0IHdpdGhfdXJpID9zY2hlbWUgP3VzZXJpbmZvID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgdXJpID1cbiAgbGV0IHdpdGhfcGF0aF9vcHQgdSBvID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gd2l0aF9wYXRoIHUgXCJcIlxuICAgIHwgU29tZSBwIC0+IHdpdGhfcGF0aCB1IHBcbiAgaW5cbiAgbGV0IHdpdGhfcXVlcnlfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcXVlcnkgdSBbXVxuICAgIHwgU29tZSBxIC0+IHdpdGhfcXVlcnkgdSBxXG4gIGluXG4gIGxldCB3aXRoXyBmIG8gdSA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHVcbiAgICB8IFNvbWUgeCAtPiBmIHUgeFxuICBpblxuICB3aXRoXyB3aXRoX3NjaGVtZSBzY2hlbWUgdXJpXG4gIHw+IHdpdGhfIHdpdGhfdXNlcmluZm8gdXNlcmluZm9cbiAgfD4gd2l0aF8gd2l0aF9ob3N0IGhvc3RcbiAgfD4gd2l0aF8gd2l0aF9wb3J0IHBvcnRcbiAgfD4gd2l0aF8gd2l0aF9wYXRoX29wdCBwYXRoXG4gIHw+IHdpdGhfIHdpdGhfcXVlcnlfb3B0IHF1ZXJ5XG4gIHw+IHdpdGhfIHdpdGhfZnJhZ21lbnQgZnJhZ21lbnRcblxubGV0IG9mX3N0cmluZyBzID1cbiAgKCogVG8gcHJlc2VydmUgdGhlIG9sZCByZWdleCBwYXJzZXIncyBiZWhhdmlvciwgd2Ugb25seSBwYXJzZSBhIHByZWZpeCwgYW5kXG4gICAqIHN0b3Agd2hlbmV2ZXIgd2UgY2FuJ3QgcGFyc2UgbW9yZS4gKilcbiAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOlByZWZpeCBQYXJzZXIudXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgfCBPayB0IC0+IHRcbiAgfCBFcnJvciBfIC0+XG4gICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgZW1wdHlcblxubW9kdWxlIEFic29sdXRlX2h0dHAgPSBzdHJ1Y3RcbiAgdHlwZSB1cmkgPSB0XG4gIHR5cGUgdCA9XG4gICAgeyBzY2hlbWUgOiBbIGBIdHRwIHwgYEh0dHBzIF07XG4gICAgICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gICAgICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBJcHY2X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXTtcbiAgICAgIHBvcnQgOiBpbnQgb3B0aW9uO1xuICAgICAgcGF0aCA6IFBhdGgudDtcbiAgICAgIHF1ZXJ5IDogUXVlcnkudDtcbiAgICAgIGZyYWdtZW50IDogUGN0LmRlY29kZWQgb3B0aW9uXG4gICAgfVxuXG4gIGxldCAoIGxldCogKSA9IFJlc3VsdC5iaW5kXG5cbiAgbGV0IHRvX3VyaSB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9ID1cbiAgICBsZXQgc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IGBIdHRwIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwXCJcbiAgICAgIHwgYEh0dHBzIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwc1wiXG4gICAgaW5cbiAgICAoeyBzY2hlbWUgPSBTb21lIHNjaGVtZTtcbiAgICAgICB1c2VyaW5mbztcbiAgICAgICBob3N0ID0gU29tZSBob3N0O1xuICAgICAgIHBvcnQ7XG4gICAgICAgcGF0aDtcbiAgICAgICBxdWVyeTtcbiAgICAgICBmcmFnbWVudCB9IDogdXJpKVxuICA7O1xuXG4gIGxldCBvZl91cmkgKHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH06IHVyaSkgPVxuICAgIGxldCogc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRXJyb3IgKGBNc2cgXCJObyBzY2hlbWUgcHJlc2VudCBpbiBVUklcIilcbiAgICAgIHwgU29tZSBzY2hlbWUgLT5cbiAgICAgICAgKG1hdGNoIFBjdC51bmNhc3RfZGVjb2RlZCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBcImh0dHBcIiAtPiBPayBgSHR0cFxuICAgICAgICAgfCBcImh0dHBzXCIgLT4gT2sgYEh0dHBzXG4gICAgICAgICB8IHVuc3VwcG9ydGVkX3NjaGVtZSAtPlxuICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgIChgTXNnXG4gICAgICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJPbmx5IGh0dHAgYW5kIGh0dHBzIFVSSXMgYXJlIHN1cHBvcnRlZC4gJXMgaXMgaW52YWxpZC5cIlxuICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkX3NjaGVtZSkpKVxuICAgIGluXG4gICAgbGV0KiBob3N0ID0gT3B0aW9uLnRvX3Jlc3VsdCB+bm9uZTooYE1zZyBcImhvc3QgaXMgcmVxdWlyZWQgZm9yIEhUVFAoUykgdXJpc1wiKSBob3N0IGluXG4gICAgT2sgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9IG1hdGNoIG9mX3N0cmluZyBzIHw+IG9mX3VyaSB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIChgTXNnIGVycm9yKSAtPiBmYWlsd2l0aCBlcnJvclxuXG4gIGxldCB0b19zdHJpbmcgP3BjdF9lbmNvZGVyIHQgPSB0b191cmkgdCB8PiB0b19zdHJpbmcgP3BjdF9lbmNvZGVyXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID1cbiAgICB7IHQgd2l0aFxuICAgICAgaG9zdCA9IG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgICAgfCAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY0X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY2X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgfVxuXG4gIGxldCBtYWtlIH5zY2hlbWUgfmhvc3QgP3VzZXJpbmZvID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgKCkgPVxuICAgIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gICAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICAgIHxOb25lIC0+IFtdIHwgU29tZSBwIC0+XG4gICAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgIHwgIFwiL1wiOjpfIHwgIFtdIC0+IHBhdGhcbiAgICAgICAgfCBfICAtPiBcIi9cIjo6cGF0aFxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgICAgfCBOb25lIC0+IFF1ZXJ5LktWIFtdXG4gICAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gICAgaW5cbiAgICBub3JtYWxpemVcbiAgICAgIHsgc2NoZW1lO1xuICAgICAgICB1c2VyaW5mbztcbiAgICAgICAgaG9zdD0gZGVjb2RlX2hvc3QgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50PWRlY29kZSBmcmFnbWVudCB9XG5cbiAgbGV0IGhvc3QgdCA9XG4gICAgbWF0Y2ggdC5ob3N0IHdpdGhcbiAgICB8IChgSXB2NF9saXRlcmFsIGggfCBgSXB2Nl9saXRlcmFsIGgpIC0+IGhcbiAgICB8IChgSG9zdCBoKSAtPiAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbiAgbGV0IHNjaGVtZSB0ID0gdC5zY2hlbWVcbmVuZFxuIiwib3BlbiBVcmlcblxubW9kdWxlIERlcml2ZWQgPVxuc3RydWN0XG5cblx0b3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxuXHR0eXBlIGNvbXBvbmVudCA9IFtcblx0ICB8IGBTY2hlbWVcblx0ICB8IGBBdXRob3JpdHlcblx0ICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuXHQgIHwgYEhvc3QgKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBQYXRoXG5cdCAgfCBgUXVlcnlcblx0ICB8IGBRdWVyeV9rZXlcblx0ICB8IGBRdWVyeV92YWx1ZVxuXHQgIHwgYEZyYWdtZW50XG4gICAgICAgICAgfCBgR2VuZXJpY1xuICAgICAgICAgIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKVxuXHRdIFtAQGRlcml2aW5nIHNleHBdXG5cblx0dHlwZSB0ID0ge1xuICAgICAgICAgIHNjaGVtZTogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICB1c2VyaW5mbzogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBob3N0OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBvcnQ6IGludCBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcGF0aDogc3RyaW5nIFtAZGVmYXVsdCBcIlwiXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHF1ZXJ5OiAoc3RyaW5nICogc3RyaW5nIGxpc3QpIGxpc3QgW0BzZXhwLmxpc3RdO1xuICAgICAgICAgIGZyYWdtZW50OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdXG5cdH0gW0BAZGVyaXZpbmcgc2V4cF1cblxuZW5kXG5cbm9wZW4gRGVyaXZlZFxuXG5sZXQgY29tcG9uZW50X29mX3NleHAgPSBjb21wb25lbnRfb2Zfc2V4cFxubGV0IHNleHBfb2ZfY29tcG9uZW50ID0gc2V4cF9vZl9jb21wb25lbnRcblxubGV0IHRfb2Zfc2V4cCBzZXhwID1cblx0bGV0IHQgPSB0X29mX3NleHAgc2V4cCBpblxuXHRVcmkubWFrZVxuXHRcdD9zY2hlbWU6dC5zY2hlbWVcblx0XHQ/dXNlcmluZm86dC51c2VyaW5mb1xuXHRcdD9ob3N0OnQuaG9zdFxuXHRcdD9wb3J0OnQucG9ydFxuXHRcdH5wYXRoOnQucGF0aFxuXHRcdH5xdWVyeTp0LnF1ZXJ5XG5cdFx0P2ZyYWdtZW50OnQuZnJhZ21lbnRcblx0XHQoKVxuXG5sZXQgc2V4cF9vZl90IHQgPVxuXHRzZXhwX29mX3Qge1xuXHRcdHNjaGVtZSA9IHNjaGVtZSB0O1xuXHRcdHVzZXJpbmZvID0gdXNlcmluZm8gdDtcblx0XHRob3N0ID0gaG9zdCB0O1xuXHRcdHBvcnQgPSBwb3J0IHQ7XG5cdFx0cGF0aCA9IHBhdGggdDtcblx0XHRxdWVyeSA9IHF1ZXJ5IHQ7XG5cdFx0ZnJhZ21lbnQgPSBmcmFnbWVudCB0XG5cdH1cblxudHlwZSBjb21wb25lbnQgPSBVcmkuY29tcG9uZW50XG5sZXQgY29tcGFyZSBhIGIgPSBVcmkuY29tcGFyZSBhIGJcbmxldCBlcXVhbCBhIGIgPSBVcmkuZXF1YWwgYSBiXG50eXBlIHQgPSBVcmkudFxuIiwib3BlbiBKc19vZl9vY2FtbFxub3BlbiBDb3JlXG5cbmxldCBpc192YWxpZF9pZCBzID1cbiAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIlxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gZmFsc2VcbiAgICB8IF8gLT5cbiAgICAgIFN0cmluZy5mb3JfYWxsIHMgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSlcbjs7XG5cbmxldCBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgPSBpc192YWxpZF9pZCBuYW1lICYmIG5vdCAoU2V0Lm1lbSBzZWVuIG5hbWUpXG5cbmxldCByZWMga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIGxpc3QgPVxuICBtYXRjaCAobGlzdCA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gU29tZSAoTGlzdC5yZXYgcmV2X2FjYylcbiAgfCBBdG9tIG5hbWUgOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIE5vbmUpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBMaXN0IFsgQXRvbSBuYW1lOyB2IF0gOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIFNvbWUgdikgOjogcmV2X2FjYyBpblxuICAgIGxldCBzZWVuID0gU2V0LmFkZCBzZWVuIG5hbWUgaW5cbiAgICBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgcmVzdFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHJlYyBhbnlfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gIHwgU2V4cC5BdG9tIHMgLT4gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHMpXG4gIHwgU2V4cC5MaXN0IFsgQXRvbSBuYW1lOyB2IF0gLT4gSnMuVW5zYWZlLm9iaiBbfCBuYW1lLCBhbnlfb2Zfc2V4cCB2IHxdXG4gIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAobWF0Y2gga2V5X3ZhbHVlX3NoYXBlIH5zZWVuOlN0cmluZy5TZXQuZW1wdHkgfnJldl9hY2M6W10gbCB3aXRoXG4gICAgIHwgTm9uZSAtPiBMaXN0Lm1hcCBsIH5mOmFueV9vZl9zZXhwIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgW10gLT4gSnMuYXJyYXkgW3x8XSB8PiBKcy5VbnNhZmUuaW5qZWN0XG4gICAgIHwgU29tZSBsIC0+XG4gICAgICAgSnMuVW5zYWZlLm9ialxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IG5hbWUsIFNvbWUgdiAtPiBuYW1lLCBhbnlfb2Zfc2V4cCB2XG4gICAgICAgICAgICB8IG5hbWUsIE5vbmUgLT4gbmFtZSwgSnMuVW5zYWZlLmluamVjdCBKcy5udWxsKVxuICAgICAgICAgIHw+IEFycmF5Lm9mX2xpc3QpKVxuOztcblxubGV0IGxvZ19zIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoYW55X29mX3NleHAgc2V4cClcbmxldCBsb2dfc19hc19zdHJpbmcgc2V4cCA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKSlcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHUgPSB7IHNvbWVfbmFtZSA6IHN0cmluZyB9IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPVxuICAgICAgfCBGb29cbiAgICAgIHwgQmFyIG9mXG4gICAgICAgICAgeyBmaWVsZDEgOiB1XG4gICAgICAgICAgOyBmaWVsZDIgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuICBpblxuICBsZXQgdG9fc3RyaW5nIDogSnMuVW5zYWZlLmFueSAtPiBzdHJpbmcgPVxuICAgIGZ1biBhbnkgLT4gSnMudG9fc3RyaW5nIChKcy5fSlNPTiMjc3RyaW5naWZ5IGFueSA6IEpzLmpzX3N0cmluZyBKcy50KVxuICBpblxuICBsZXQgb3BlbiBNIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgKHNleHBfb2ZfdCBGb28pKSk7XG4gIFslZXhwZWN0IHt8IFwiRm9vXCIgfH1dO1xuICBwcmludF9lbmRsaW5lXG4gICAgKHRvX3N0cmluZ1xuICAgICAgIChhbnlfb2Zfc2V4cFxuICAgICAgICAgIChzZXhwX29mX3RcbiAgICAgICAgICAgICAoQmFyIHsgZmllbGQxID0geyBzb21lX25hbWUgPSBcImRlYnVnXCIgfTsgZmllbGQyID0gU29tZSBcIm90aGVyIHN0cmluZ1wiIH0pKSkpO1xuICBbJWV4cGVjdCB7fCB7XCJCYXJcIjpudWxsLFwiZmllbGQxXCI6e1wic29tZV9uYW1lXCI6XCJkZWJ1Z1wifSxcImZpZWxkMlwiOltcIm90aGVyIHN0cmluZ1wiXX0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJkdXBsaWNhdGUga2V5cyBhcmUgZGlzcGxheWVkIGNvcnJlY3RseVwiID1cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IHNleHBfd2l0aF9kdXBsaWNhdGVfa2V5cyA9IHt8ICgoQSBCKSAoQSBDKSkgfH0gfD4gU2V4cC5vZl9zdHJpbmcgaW5cbiAgcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nIChhbnlfb2Zfc2V4cCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMpKTtcbiAgWyVleHBlY3Qge3wgW3tcIkFcIjpcIkJcIn0se1wiQVwiOlwiQ1wifV0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJubyBzdGFjayBvdmVyZmxvd1wiID1cbiAgbGV0IGEgPSBBcnJheS5pbml0IDEwMDAwIH5mOihmdW4gaSAtPiBzcHJpbnRmIFwiZiVkXCIgaSwgaSkgaW5cbiAgbGV0IHNleHAgPSBbJXNleHBfb2Y6IChzdHJpbmcgKiBpbnQpIGFycmF5XSBhIGluXG4gIGxldCB4ID0gYW55X29mX3NleHAgc2V4cCBpblxuICBwcmludGYgXCIlZFwiIChKcy5VbnNhZmUuY29lcmNlIHgpIyMuZjk5OTtcbiAgWyVleHBlY3Qge3wgOTk5IHx9XVxuOztcbiIsIm1vZHVsZSBBc3luY19qc19kZWJ1ZyA9IERlYnVnXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVcmlcblxuICBsZXQgc2V4cF9vZl90ID0gVXJpX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIFdlYnNvY2tldF9jb25uZWN0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBUID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuQ29ubmVjdGlvblxuXG4gIHR5cGUgKCdyZXN0LCAnaW1wbGVtZW50YXRpb25zKSBjbGllbnRfdCA9XG4gICAgP3VyaTpVcmkudFxuICAgIC0+ID9oZWFydGJlYXRfY29uZmlnOlQuSGVhcnRiZWF0X2NvbmZpZy50XG4gICAgLT4gP2Rlc2NyaXB0aW9uOkluZm8udFxuICAgIC0+ID9pbXBsZW1lbnRhdGlvbnM6J2ltcGxlbWVudGF0aW9ucyBULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMudFxuICAgIC0+ICdyZXN0XG5cbiAgbW9kdWxlIENsb3NlX2NvZGUgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBvZl9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQgLT4gdFxuICAgIHZhbCBub3JtYWxfY2xvc3VyZSA6IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSBjbG9zZV9ldmVudF9jb2RlID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgYWxsX29mX2Nsb3NlX2V2ZW50X2NvZGUgPSBbXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgR29pbmdfYXdheVxuICAgICAgfCBQcm90b2NvbF9lcnJvclxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IE5vX3N0YXR1c19SZWNlaXZlZFxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IFBvbGljeV92aW9sYXRpb25cbiAgICAgIHwgTWVzc2FnZV90b29fYmlnXG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IEludGVybmFsX2Vycm9yXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgQmFkX2dhdGV3YXlcbiAgICAgIHwgVExTX2hhbmRzaGFrZVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgICAgfCBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF1cblxuICAgIGxldCBub3JtYWxfY2xvc3VyZSA9IE5vcm1hbF9jbG9zdXJlXG5cbiAgICBsZXQgb2ZfaW50ID0gZnVuY3Rpb25cbiAgICAgIHwgMTAwMCAtPiBOb3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDAxIC0+IEdvaW5nX2F3YXlcbiAgICAgIHwgMTAwMiAtPiBQcm90b2NvbF9lcnJvclxuICAgICAgfCAxMDAzIC0+IFVuc3VwcG9ydGVkX2RhdGFcbiAgICAgIHwgMTAwNSAtPiBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgMTAwNiAtPiBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IDEwMDcgLT4gSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGFcbiAgICAgIHwgMTAwOCAtPiBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IDEwMDkgLT4gTWVzc2FnZV90b29fYmlnXG4gICAgICB8IDEwMTAgLT4gTWlzc2luZ19leHRlbnNpb25cbiAgICAgIHwgMTAxMSAtPiBJbnRlcm5hbF9lcnJvclxuICAgICAgfCAxMDEyIC0+IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCAxMDEzIC0+IFRyeV9hZ2Fpbl9sYXRlclxuICAgICAgfCAxMDE0IC0+IEJhZF9nYXRld2F5XG4gICAgICB8IDEwMTUgLT4gVExTX2hhbmRzaGFrZVxuICAgICAgfCBjb2RlIC0+XG4gICAgICAgIGlmIGNvZGUgPj0gMzAwMCAmJiBjb2RlIDw9IDQ5OTlcbiAgICAgICAgdGhlbiBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgICAgICBlbHNlIEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlXG4gICAgOztcblxuICAgIGxldCBvZl9ldmVudCBjbG9zZV9ldmVudCA9IG9mX2ludCBjbG9zZV9ldmVudCMjLmNvZGVcblxuICAgIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgICAgfCBOb3JtYWxfY2xvc3VyZSAtPiAxMDAwXG4gICAgICB8IEdvaW5nX2F3YXkgLT4gMTAwMVxuICAgICAgfCBQcm90b2NvbF9lcnJvciAtPiAxMDAyXG4gICAgICB8IFVuc3VwcG9ydGVkX2RhdGEgLT4gMTAwM1xuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWQgLT4gMTAwNVxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlIC0+IDEwMDZcbiAgICAgIHwgSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGEgLT4gMTAwN1xuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uIC0+IDEwMDhcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIC0+IDEwMDlcbiAgICAgIHwgTWlzc2luZ19leHRlbnNpb24gLT4gMTAxMFxuICAgICAgfCBJbnRlcm5hbF9lcnJvciAtPiAxMDExXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydCAtPiAxMDEyXG4gICAgICB8IFRyeV9hZ2Fpbl9sYXRlciAtPiAxMDEzXG4gICAgICB8IEJhZF9nYXRld2F5IC0+IDEwMTRcbiAgICAgIHwgVExTX2hhbmRzaGFrZSAtPiAxMDE1XG4gICAgICB8IFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIGNvZGUgLT4gY29kZVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwidG9faW50IC0+IG9mX2ludCByb3VuZC10cmlwXCIgPVxuICAgICAgTGlzdC5pdGVyIGFsbCB+ZjooZnVuIHQgLT4gYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHRdIChvZl9pbnQgKHRvX2ludCB0KSkgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNsb3NlX3dlYnNvY2tldCAod2Vic29ja2V0IDogV2ViU29ja2V0cy53ZWJTb2NrZXQgSnMudCkgcmVhc29uID1cbiAgICAoKiBbY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25dIGRvZXMgbm90aGluZyBpZiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IENsb3NlZC4gKilcbiAgICBsZXQgY2xvc2UgcmVhc29uID1cbiAgICAgICgqIFRoZSBjb2RlIG11c3QgYmUgZWl0aGVyIDEwMDAgKE5vcm1hbF9jbG9zdXJlKSwgb3IgYmV0d2VlbiAzMDAwIGFuZCA0OTk5XG4gICAgICAgICAoVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlKS4gKilcbiAgICAgIHdlYnNvY2tldCMjY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25cbiAgICAgICAgQ2xvc2VfY29kZS4odG9faW50IG5vcm1hbF9jbG9zdXJlKVxuICAgICAgICAoSnMuc3RyaW5nIHJlYXNvbilcbiAgICBpblxuICAgIG1hdGNoIGNsb3NlIHJlYXNvbiB3aXRoXG4gICAgfCAoKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIChfIDogRXhuLnQpIC0+XG4gICAgICAoKiB0aGlzIGNhbiBmYWlsIGlmIFtyZWFzb25dIGlzIHRvbyBsb25nIG9yIGNvbnRhaW5zIGludmFsaWQgVVRGOCAqKVxuICAgICAgY2xvc2UgXCJjbG9zZS1yZWFzb24td2FzLXRvby1sb25nLW9yLWNvbnRhaW5zLWludmFsaWQtdXRmOFwiXG4gIDs7XG5cbiAgbGV0IGNvbm5lY3Rfd2Vic29ja2V0IHVybCB+ZnJvbV9zZXJ2ZXIgfnRvX3NlcnZlciA9XG4gICAgbWF0Y2ggbmV3JWpzIFdlYlNvY2tldHMud2ViU29ja2V0IChKcy5zdHJpbmcgKFVyaS50b19zdHJpbmcgdXJsKSkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEpzX2Vycm9yLkV4biBleG4gLT5cbiAgICAgICgqIGUuZy4gU0VDVVJJVFlfRVJSLCB0aG91Z2ggbm90ZSB0aGF0IGUuZy4gY29ubmVjdGluZyB0byB3czovLyBmcm9tIGEgaHR0cHM6Ly8gcGFnZVxuICAgICAgICAgaW4gY2hyb21lIHNlZW1zIHRvIG1hbmlmZXN0IGFzIHN1Y2Nlc3NmdWwgY29uc3RydWN0aW9uIGJ1dCBpbW1lZGlhdGUgY2xvc3VyZVxuICAgICAgICAgKHNlZSBiZWxvdykuICAqKVxuICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgKEpzX2Vycm9yLm1lc3NhZ2UgZXhuKSlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxuICAgIHwgd2Vic29ja2V0IC0+XG4gICAgICBsZXQgY29ubmVjdGVkX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGNsZWFudXAgfnJlYXNvbiA9XG4gICAgICAgICgqIElmIHdlIGhhdmVuJ3QgY29ubmVjdGVkIHlldCwgdGhlbiBjb25uZWN0aW5nIGp1c3QgZmFpbGVkLiBPdGhlcndpc2UgaXQgd2FzIHRoZVxuICAgICAgICAgICBjbG9zdXJlIG9mIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24uICopXG4gICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoRXJyb3IgcmVhc29uKTtcbiAgICAgICAgKCogW1BpcGUuY2xvc2VdIGFuZCBbV2ViU29ja2V0LmNsb3NlXSBhcmUgYWxsIGlkZW1wb3RlbnQuICopXG4gICAgICAgIFBpcGUuY2xvc2UgZnJvbV9zZXJ2ZXI7XG4gICAgICAgIFBpcGUuY2xvc2VfcmVhZCB0b19zZXJ2ZXI7XG4gICAgICAgIGNsb3NlX3dlYnNvY2tldCB3ZWJzb2NrZXQgKEVycm9yLnRvX3N0cmluZ19odW0gcmVhc29uKVxuICAgICAgaW5cbiAgICAgIGxldCBvbmNsb3NlIChjbG9zZV9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQpID1cbiAgICAgICAgKCogVGhlIFJQQyBBUEkgZG9lc24ndCBnaXZlIHVzIGEgZ29vZCBwbGFjZSB0byBwdXQgZGV0YWlscyBhYm91dCBfd2h5XyB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBjbG9zZWQuXG5cbiAgICAgICAgICAgTm90ZSB0aGF0IGluIENocm9tZSBbY2xvc2VfZXZlbnQjIy5yZWFzb25dIGlzIHR5cGljYWxseSBlbXB0eSBhbmRcbiAgICAgICAgICAgW2Nsb3NlX2V2ZW50IyMuY29kZV0gZG9lc24ndCBhY3R1YWxseSBwcm92aWRlIHRoYXQgbXVjaCBpbnNpZ2h0IGludG8gd2h5IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGZhaWxlZCAoaXQncyBhdmFpbGFibGUgaW4gdGhlIGluc3BlY3RvciBjb25zb2xlLCBidXQgYXMgZmFyIGFzIEkgY2FuXG4gICAgICAgICAgIHRlbGwsIG5vdCBhdmFpbGFibGUgdG8gdXMpLiBTbyBpdCdzIG5vdCBsaWtlIHdlJ3JlIGxvc2luZyBtdWNoIGFueXdheS4gKilcbiAgICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgICAgbGV0IHdoYXRfaGFwcGVuZWQgPVxuICAgICAgICAgICAgbWF0Y2ggSXZhci5pc19mdWxsIGNvbm5lY3RlZF9pdmFyIHdpdGhcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gXCJjb25uZWN0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgICB8IHRydWUgLT4gXCJjbG9zZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgIVwiV2ViU29ja2V0ICVzICgle3NleHA6Q2xvc2VfY29kZS50fSlcIlxuICAgICAgICAgICAgd2hhdF9oYXBwZW5lZFxuICAgICAgICAgICAgKENsb3NlX2NvZGUub2ZfZXZlbnQgY2xvc2VfZXZlbnQpXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIHJlYXNvbik7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBvbm1lc3NhZ2UgKGV2ZW50IDogXyBXZWJTb2NrZXRzLm1lc3NhZ2VFdmVudCBKcy50KSA9XG4gICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLm9mX2FycmF5QnVmZmVyIGV2ZW50IyMuZGF0YV9idWZmZXIgaW5cbiAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gZnJvbV9zZXJ2ZXIgZGF0YTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3RlZCAoKSA9IEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoT2sgKCkpIGluXG4gICAgICB3ZWJzb2NrZXQjIy5iaW5hcnlUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCI7XG4gICAgICAoKiBpZiB0aGUgd2Vic29ja2V0IGlzIGFscmVhZHkgY2xvc2VkLCBbb25jbG9zZV0gd29uJ3QgYmUgcmUtZmlyZWQgd2hlbiB3ZSBhZGQgb3VyXG4gICAgICAgICBoYW5kbGVyLiAqKVxuICAgICAgKG1hdGNoIHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgd2l0aFxuICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgd2Vic29ja2V0IyMub25vcGVuXG4gICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgY29ubmVjdGVkICgpO1xuICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgICAgfCBPUEVOIC0+IGNvbm5lY3RlZCAoKVxuICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPlxuICAgICAgICAgKCogZS5nLiwgUmVmdXNlZCB0byBjb25uZWN0IHRvIHdzOiBiZWNhdXNlIGl0IHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICopXG4gICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIldlYlNvY2tldCBmYWlsZWQgaW1tZWRpYXRlbHkgKGlsbGVnYWwgVVJJPylcIikpO1xuICAgICAgKCogVXBvbiBhbiBlcnJvciwgW29uZXJyb3JdIGZpcmVzIGFuZCB0aGVuIFtvbmNsb3NlXSBmaXJlcyAoaXQncyBwb3NzaWJsZSBmb3IgYVxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSB0byBjYWxsIFtvbmNsb3NlXSBvbmx5KS4gU2luY2UgQXN5bmNfUlBDIGhhcyBubyBub3Rpb24gb2ZcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUsIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgW29uY2xvc2VdIGFueXdheS4gRnVydGhlciwgdGhlIGV2ZW50XG4gICAgICAgICBwYXNzZWQgdG8gW29uZXJyb3JdIGNvbnRhaW5zIG5vIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4gIE5vdGUgdGhhdCB3ZVxuICAgICAgICAgc3RpbGwgbGlzdGVuIHRvIFtvbmVycm9yXSB0byBwcmV2ZW50IHRoZSBlcnJvciBmcm9tIGxlYWtpbmcgdG8gdW5jb250cm9sbGVkXG4gICAgICAgICBjb250ZXh0ICopXG4gICAgICB3ZWJzb2NrZXQjIy5vbmVycm9yXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgQXN5bmNfanNfZGVidWcubG9nX3MgWyVtZXNzYWdlIFwid2Vic29ja2V0IGVuY291bnRlcmVkIHVuZXhwZWN0ZWQgZXJyb3JcIl07XG4gICAgICAgIEpzLl9mYWxzZSk7XG4gICAgICB3ZWJzb2NrZXQjIy5vbm1lc3NhZ2UgOj0gRG9tLmhhbmRsZXIgb25tZXNzYWdlO1xuICAgICAgd2Vic29ja2V0IyMub25jbG9zZSA6PSBEb20uaGFuZGxlciBvbmNsb3NlO1xuICAgICAgbGV0IGNvbm5lY3RlZF9kZWZlcnJlZCA9IEl2YXIucmVhZCBjb25uZWN0ZWRfaXZhciBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKG1hdGNoJWJpbmQgY29ubmVjdGVkX2RlZmVycmVkIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgKF8gOiBFcnJvci50KSAtPiByZXR1cm4gKClcbiAgICAgICAgIHwgT2sgKCkgLT5cbiAgICAgICAgICAgUGlwZS5pdGVyX3dpdGhvdXRfcHVzaGJhY2sgdG9fc2VydmVyIH5mOihmdW4gZGF0YSAtPlxuICAgICAgICAgICAgIG1hdGNoICh3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIDogV2ViU29ja2V0cy5yZWFkeVN0YXRlKSB3aXRoXG4gICAgICAgICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogb25vcGVuIGNhbGxlZCBidXQgcmVhZHlTdGF0ZSBpcyBDT05ORUNUSU5HXCJdXG4gICAgICAgICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+ICgpXG4gICAgICAgICAgICAgfCBPUEVOIC0+XG4gICAgICAgICAgICAgICBsZXQgYnVmZmVyID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICh0cnkgd2Vic29ja2V0IyNzZW5kX2J1ZmZlciBidWZmZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoRXJyb3IudGFnIH50YWc6XCJ3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyXCIgKEVycm9yLm9mX2V4biBleG4pKSkpKTtcbiAgICAgIGxldCBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCA9XG4gICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgIERlZmVycmVkLmFueV91bml0IFsgUGlwZS5jbG9zZWQgdG9fc2VydmVyOyBQaXBlLmNsb3NlZCBmcm9tX3NlcnZlciBdXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiUlBDIGNvbm5lY3Rpb24gY2xvc2VkIGJ5IGNsaWVudFwiKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkO1xuICAgICAgY29ubmVjdGVkX2RlZmVycmVkXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdXJpICgpID1cbiAgICBsZXQgc2NoZW1lID0gaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCIgdGhlbiBcIndzc1wiIGVsc2UgXCJ3c1wiIGluXG4gICAgbGV0IHBvcnQgPVxuICAgICAgbWF0Y2ggVXJsLkN1cnJlbnQucG9ydCB3aXRoXG4gICAgICB8IFNvbWUgcG9ydCAtPiBwb3J0XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCJcbiAgICAgICAgdGhlbiBVcmwuZGVmYXVsdF9odHRwc19wb3J0XG4gICAgICAgIGVsc2UgVXJsLmRlZmF1bHRfaHR0cF9wb3J0XG4gICAgaW5cbiAgICBsZXQgaG9zdCA9IFVybC5DdXJyZW50Lmhvc3QgaW5cbiAgICBVcmkubWFrZSB+c2NoZW1lIH5ob3N0IH5wb3J0ICgpXG4gIDs7XG5cbiAgbGV0IGNsaWVudCA/KHVyaSA9IGRlZmF1bHRfdXJpICgpKSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIEluZm8uY3JlYXRlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwid2Vic29ja2V0XCIgKGRlc2NyaXB0aW9uIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpICh1cmkgOiBVcmkudCldXG4gICAgaW5cbiAgICBsZXQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCA9XG4gICAgICBsZXQgY3JlYXRlIHsgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLmNvbm5lY3Rpb25fc3RhdGU7IGltcGxlbWVudGF0aW9ucyB9ID1cbiAgICAgICAgVC5jcmVhdGVcbiAgICAgICAgICB0cmFuc3BvcnRcbiAgICAgICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY3JlYXRlIChULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMubnVsbCAoKSlcbiAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbnMgLT4gY3JlYXRlIGltcGxlbWVudGF0aW9uc1xuICAgIGluXG4gICAgbGV0IGZyb21fc2VydmVyX3IsIGZyb21fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCB0b19zZXJ2ZXJfciwgdG9fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIG1hdGNoJWJpbmRcbiAgICAgIGNvbm5lY3Rfd2Vic29ja2V0IHVyaSB+ZnJvbV9zZXJ2ZXI6ZnJvbV9zZXJ2ZXJfdyB+dG9fc2VydmVyOnRvX3NlcnZlcl9yXG4gICAgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rICgpIC0+XG4gICAgICBsZXQgdHJhbnNwb3J0ID1cbiAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5jcmVhdGVcbiAgICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LktpbmQuYmlnc3RyaW5nXG4gICAgICAgICAgZnJvbV9zZXJ2ZXJfclxuICAgICAgICAgIHRvX3NlcnZlcl93XG4gICAgICBpblxuICAgICAgKG1hdGNoJWJpbmQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCB3aXRoXG4gICAgICAgfCBPayBjb25uZWN0aW9uIC0+IHJldHVybiAoT2sgY29ubmVjdGlvbilcbiAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBBc3luY19ycGNfa2VybmVsLlJwYy5UcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgICAgICByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCBjbGllbnRfZXhuID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGNsaWVudCA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFzeW5jX3JwY19rZXJuZWwuUnBjXG5cbm1vZHVsZSBDb25uZWN0aW9uID0gc3RydWN0XG4gIGluY2x1ZGUgQ29ubmVjdGlvblxuICBpbmNsdWRlIFdlYnNvY2tldF9jb25uZWN0aW9uXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX3JwY19rZXJuZWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVXJpXG5cbiAgICBsZXQgdG9fc3RyaW5nIHMgPSBVcmkudG9fc3RyaW5nIHNcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIGluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwY1xuXG4gIGxldCBjcmVhdGVfZnJvbV91cmkgPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZSB+YWRkcmVzczoobW9kdWxlIFVyaSlcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpX29wdGlvbiA9XG4gICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGVcbiAgICAgIH5hZGRyZXNzOlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFVyaS50IG9wdGlvbiBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cF1cbiAgICAgICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gQXN5bmNfcnBjX2tlcm5lbC5QZXJzaXN0ZW50X2Nvbm5lY3Rpb24uVmVyc2lvbmVkX3JwY1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIE9wdCA9IEpzLk9wdFxubW9kdWxlIE9wdGRlZiA9IEpzLk9wdGRlZlxuXG5tb2R1bGUgUmVzcG9uc2VfdHlwZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYbWxIdHRwUmVxdWVzdC5yZXNwb25zZSA9XG4gICAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgT3B0LnQgdFxuICAgIHwgQmxvYiA6ICNGaWxlLmJsb2IgSnMudCBKcy5PcHQudCB0XG4gICAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50IE9wdC50IHRcbiAgICB8IEpTT04gOiAnYSBPcHQudCB0XG4gICAgfCBUZXh0IDogSnMuanNfc3RyaW5nIEpzLnQgdFxuICAgIHwgRGVmYXVsdCA6IHN0cmluZyB0XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ3Jlc3BvbnNlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgZ2V0X2hlYWRlciA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBQb3N0X2JvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEJsb2Igb2YgRmlsZS5ibG9iIEpzLnRcbiAgICB8IERvY3VtZW50IG9mIERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBGb3JtX2RhdGEgb2YgRm9ybS5mb3JtRGF0YSBKcy50XG5lbmRcblxubW9kdWxlIE1ldGhvZF93aXRoX2FyZ3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEdldCBvZiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgfCBQb3N0IG9mIFBvc3RfYm9keS50IG9wdGlvblxuZW5kXG5cbnR5cGUgJ2sgd2l0aF9yZXF1ZXN0X2FyZ3MgPVxuICA/aGVhZGVyczooc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIC0+ID9vbl9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gP29uX3VwbG9hZF9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gdXJsOnN0cmluZ1xuICAtPiAna1xuXG5sZXQgaGFzX2dldF9hcmdzIHVybCA9IE9wdGlvbi5pc19zb21lIChTdHJpbmcuaW5kZXggdXJsICc/JylcblxubGV0IHJlcXVlc3RcbiAgICAgID8oaGVhZGVycyA9IFtdKVxuICAgICAgP29uX3Byb2dyZXNzXG4gICAgICA/b25fdXBsb2FkX3Byb2dyZXNzXG4gICAgICB+dXJsXG4gICAgICAodHlwZSByZXNwKVxuICAgICAgfihyZXNwb25zZV90eXBlIDogcmVzcCBSZXNwb25zZV90eXBlLnQpXG4gICAgICAobWV0aG9kX3dpdGhfYXJncyA6IE1ldGhvZF93aXRoX2FyZ3MudClcbiAgPVxuICBsZXQgdXJsLCBtZXRob2Rfc3RyaW5nID1cbiAgICBtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgICB8IEdldCBhcmdzIC0+XG4gICAgICB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgYXJncywgXCJHRVRcIlxuICAgIHwgUG9zdCBfYm9keSAtPiB1cmwsIFwiUE9TVFwiXG4gIGluXG4gIGxldCByZXEgPSBYbWxIdHRwUmVxdWVzdC5jcmVhdGUgKCkgaW5cbiAgcmVxIyNfb3BlbiAoSnMuc3RyaW5nIG1ldGhvZF9zdHJpbmcpIChKcy5zdHJpbmcgdXJsKSBKcy5fdHJ1ZTtcbiAgKGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICAgfCBCbG9iIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJibG9iXCJcbiAgIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gICB8IFRleHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcInRleHRcIlxuICAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIExpc3QuaXRlciBoZWFkZXJzIH5mOihmdW4gKG5hbWUsIHZhbHVlKSAtPlxuICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgdmFsdWUpKTtcbiAgbGV0IHJlc3BvbnNlIDogcmVzcCBSZXNwb25zZS50IE9yX2Vycm9yLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgcmVxIyMub25lcnJvclxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIk5ldHdvcmsgZXJyb3JcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnRpbWVvdXRcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJUaW1lb3V0XCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlXG4gIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+XG4gICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgfCBET05FIC0+XG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgaWYgcmVxIyMuc3RhdHVzID49IDIwMCAmJiByZXEjIy5zdGF0dXMgPCAzMDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY29udGVudCA6IHJlc3AgT3JfZXJyb3IudCA9XG4gICAgICAgICAgICBsZXQgZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkgPVxuICAgICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAgIHJlcSMjLnJlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIG5vdCBiZSBlbnRlcmVkIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBvZlxuICAgICAgICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0IGF0IE1ETiB3ZWIgZG9jcywgYmVjYXVzZSBpZiBhIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCxcbiAgICAgICAgICAgICAgICAgICAgICBpbiBzdGF0ZSBbRE9ORV0gYW5kIHJlc3BvbnNlX3R5cGUgW1RleHRdIG9yIFtEZWZhdWx0XSxcbiAgICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2VUZXh0XSBzaG91bGQgbm90IGJlIFtudWxsXS5cbiAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc1xuICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgIFwiTm8gcmVzcG9uc2UgcmV0dXJuZWQgZGVzcGl0ZSBzdWNjZXNzZnVsIHJlcXVlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgICAgICAgICBSZXN1bHQucmV0dXJuXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgICAgICAgICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IE9rIChGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBCbG9iIC0+IE9rIChGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IERvY3VtZW50IC0+IE9rIChGaWxlLkNvZXJjZVRvLmRvY3VtZW50IHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBKU09OIC0+IE9rIChGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IFRleHQgLT4gZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKClcbiAgICAgICAgICAgIHwgRGVmYXVsdCAtPiBPcl9lcnJvci5tYXAgKGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpKSB+ZjpKcy50b19zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBnZXRfaGVhZGVyIHMgPVxuICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgUmVzcG9uc2UuY29udGVudDsgY29kZSA9IHJlcSMjLnN0YXR1czsgZ2V0X2hlYWRlciB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIFwiUmVxdWVzdCBmYWlsZWRcIlxuICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICB9XVxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNcbiAgICB8IF8gLT4gKCkpO1xuICBPcHRpb24uaXRlciBvbl9wcm9ncmVzcyB+ZjooZnVuIG9uX3Byb2dyZXNzIC0+XG4gICAgcmVxIyMub25wcm9ncmVzc1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgb25fcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICBKcy5fdHJ1ZSkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICBPcHRpb24uaXRlciBvbl91cGxvYWRfcHJvZ3Jlc3MgfmY6KGZ1biBvbl91cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgIHVwbG9hZCMjLm9ucHJvZ3Jlc3NcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICBvbl91cGxvYWRfcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICAgIEpzLl90cnVlKSkpO1xuICAobWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICB8IEdldCBfIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICB8IFBvc3QgYm9keSAtPlxuICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgICAgIHwgU29tZSBib2R5IC0+XG4gICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgIHwgQmxvYiBiIC0+IHJlcSMjc2VuZF9ibG9iIGJcbiAgICAgICAgIHwgRG9jdW1lbnQgZCAtPiByZXEjI3NlbmRfZG9jdW1lbnQgZFxuICAgICAgICAgfCBTdHJpbmcgcyAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKEpzLnN0cmluZyBzKSlcbiAgICAgICAgIHwgRm9ybV9kYXRhIGZkIC0+IHJlcSMjc2VuZF9mb3JtRGF0YSBmZCkpKTtcbiAgSXZhci5yZWFkIHJlc3BvbnNlXG47O1xuXG5sZXQgZ2V0ID8oYXJndW1lbnRzID0gW10pIHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChHZXQgYXJndW1lbnRzKSlcbjs7XG5cbmxldCBwb3N0ID9ib2R5IHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChQb3N0IGJvZHkpKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlLlRpbWVfbnNcbm1vZHVsZSBDbG9ja19ucyA9IEFzeW5jX2tlcm5lbC5DbG9ja19uc1xubW9kdWxlIFNjaGVkdWxlciA9IEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHNsZWVwIGQgPSBDbG9ja19ucy5hZnRlciAoVGltZV9ucy5TcGFuLm9mX3NlYyBkKVxubGV0IHlpZWxkICgpID0gU2NoZWR1bGVyLnlpZWxkIChTY2hlZHVsZXIudCAoKSlcblxubGV0IHJlYyBleHRyYWN0X2pzX2Vycm9yIChleG4gOiBleG4pIDogKHN0cmluZyBsaXN0ICogSnNfZXJyb3IudCkgb3B0aW9uID1cbiAgbWF0Y2ggZXhuIHdpdGhcbiAgfCBFeG4uUmVyYWlzZWQgKG1zZywgZXhuKSAtPlxuICAgIChtYXRjaCBleHRyYWN0X2pzX2Vycm9yIGV4biB3aXRoXG4gICAgIHwgU29tZSAobWVzc2FnZXMsIGpzX2Vycm9yKSAtPiBTb21lIChtc2cgOjogbWVzc2FnZXMsIGpzX2Vycm9yKVxuICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggSnNfZXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgIHwgU29tZSBqc19lcnJvciAtPiBTb21lIChbXSwganNfZXJyb3IpXG4gICAgIHwgTm9uZSAtPiBOb25lKVxuOztcblxubGV0IHByZXR0eV9wcmludF9leGNlcHRpb24gbmFtZSBleG4gPVxuICBsZXQgZXhuID0gQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIGluXG4gIGxldCBjbGFzc2lmaWNhdGlvbiA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEpzX2Vycm9yLkV4biBlcnIgLT4gYEpzIGVyclxuICAgIHwgZXhuIC0+XG4gICAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICAgIHwgTm9uZSAtPiBgRXhuIGV4blxuICAgICAgIHwgU29tZSBlcnIgLT4gYEpzX2FuZF9leG4gKGV4biwgZXJyKSlcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZmljYXRpb24gd2l0aFxuICB8IGBKcyBlcnIgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgZXJyXG4gIHwgYEV4biBleG4gLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKVxuICB8IGBKc19hbmRfZXhuIChleG4sIChtZXNzYWdlcywgZXJyKSkgLT5cbiAgICAobWF0Y2ggbWVzc2FnZXMgd2l0aFxuICAgICB8IFtdIC0+IEZpcmVidWcuY29uc29sZSMjZ3JvdXAgKEpzLnN0cmluZyBuYW1lKVxuICAgICB8IGhkIDo6IHJlc3QgLT5cbiAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwIChKcy5zdHJpbmcgaGQpO1xuICAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgbmFtZSk7XG4gICAgICAgTGlzdC5pdGVyIHJlc3QgfmY6KGZ1biBtZXNzYWdlIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBtZXNzYWdlKSkpO1xuICAgICgqIFdlIGZpcnN0IG91dHB1dCB0aGUgc3RyaW5naWZpZWQgb2NhbWwgZXhjZXB0aW9uICopXG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cENvbGxhcHNlZCAoSnMuc3RyaW5nIFwiT0NhbWwgRXhjZXB0aW9uXCIpO1xuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSk7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZDtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIGVycjtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kXG47O1xuXG5sZXQgcnVuID1cbiAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IElkbGVcbiAgICAgIHwgUnVubmluZ1xuICAgICAgfCBXaWxsX3J1bl9zb29uXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIE5leHRfd2FrZXVwID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgVGltZV9ucy50ICogZmxvYXRcbiAgICAgIHwgTm9fd2FrZXVwXG4gICAgICB8IFNvb25cbiAgZW5kXG4gIGluXG4gIGxldCBzdGF0ZSA9IHJlZiBTdGF0ZS5JZGxlIGluXG4gIGxldCB0aW1lb3V0cyA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBsZXQgcnVuX2FmdGVyIH5mIH5tcyA9IGlnbm9yZSAoRG9tX2h0bWwuc2V0VGltZW91dCBmIG1zIDogRG9tX2h0bWwudGltZW91dF9pZF9zYWZlKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBtYXRjaCAhc3RhdGUsIFNjaGVkdWxlci51bmNhdWdodF9leG4gdCB3aXRoXG4gICAgfCBfLCBTb21lIF8gfCBTdGF0ZS5SdW5uaW5nLCBOb25lIC0+ICgpXG4gICAgfCAoU3RhdGUuSWRsZSB8IFN0YXRlLldpbGxfcnVuX3Nvb24pLCBOb25lIC0+XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5SdW5uaW5nO1xuICAgICAgU2NoZWR1bGVyLnJ1bl9jeWNsZSB0O1xuICAgICAgbGV0IG5leHRfd2FrZXVwIDogTmV4dF93YWtldXAudCA9XG4gICAgICAgIGlmIFNjaGVkdWxlci5jYW5fcnVuX2Ffam9iIHRcbiAgICAgICAgdGhlbiBTb29uXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIFNjaGVkdWxlci5uZXh0X3VwY29taW5nX2V2ZW50IHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb193YWtldXBcbiAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gICAgICAgICAgICBsZXQgZCA9IFRpbWVfbnMuZGlmZiBuZXh0IG5vdyBpblxuICAgICAgICAgICAgbGV0IGRfbXMgPSBUaW1lX25zLlNwYW4udG9fbXMgZCBpblxuICAgICAgICAgICAgaWYgRmxvYXQuKCA8PSApIGRfbXMgMC4gdGhlbiBTb29uIGVsc2UgQXQgKG5leHQsIGRfbXMpKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChTY2hlZHVsZXIudW5jYXVnaHRfZXhuX3Vud3JhcHBlZCB0KSB+ZjooZnVuIChleG4sIF9zZXhwKSAtPlxuICAgICAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgICAgICB8IEpzX2Vycm9yLkV4biBlcnIgLT4gSnNfZXJyb3IucmFpc2VfIGVyclxuICAgICAgICB8IGV4biAtPlxuICAgICAgICAgIChtYXRjaCBKc19lcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgICAgICB8IFNvbWUgZXJyIC0+XG4gICAgICAgICAgICAgKCogSGFjayB0byBnZXQgYSBiZXR0ZXIgYmFja3RyYWNlICopXG4gICAgICAgICAgICAgcHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkVycm9yOlwiIGV4bjtcbiAgICAgICAgICAgICAoKiBBbmQgdGhlbiByYWlzZSB0aGUgZW1iZWRkZWQgamF2YXNjcmlwdCBlcnJvciB0aGF0IHByb3ZpZGVzIGEgcHJvcGVyXG4gICAgICAgICAgICAgICAgYmFja3RyYWNlIHdpdGggZ29vZCBzb3VyY2VtYXAgc3VwcG9ydC5cbiAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIGphdmFzY3JpcHQgZXJyb3IgaXMgcHJvYmFibHkgbm90IG1lYW5pbmdmdWwgd2hpY2ggaXMgd2h5XG4gICAgICAgICAgICAgICAgd2UgZmlyc3Qgb3V0cHV0IHRoZSBzZXJpYWxpemF0aW9uIG9mIG9jYW1sIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICBKc19lcnJvci5yYWlzZV8gZXJyKSk7XG4gICAgICAobWF0Y2ggbmV4dF93YWtldXAgd2l0aFxuICAgICAgIHwgTm9fd2FrZXVwIC0+IHN0YXRlIDo9IElkbGVcbiAgICAgICB8IFNvb24gLT5cbiAgICAgICAgIHN0YXRlIDo9IFdpbGxfcnVuX3Nvb247XG4gICAgICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC5cbiAgICAgICB8IEF0IChhdCwgZF9tcykgLT5cbiAgICAgICAgIHN0YXRlIDo9IElkbGU7XG4gICAgICAgICBpZiBTdGFjay5pc19lbXB0eSB0aW1lb3V0cyB8fCBUaW1lX25zLiggPCApIGF0IChTdGFjay50b3BfZXhuIHRpbWVvdXRzKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIFN0YWNrLnB1c2ggdGltZW91dHMgYXQ7XG4gICAgICAgICAgIHJ1bl9hZnRlciB+ZjpydW5fdGltZW91dCB+bXM6ZF9tcykpXG4gIGFuZCBydW5fdGltZW91dCAoKSA9XG4gICAgKCogRWFjaCBjYWxsIHRvIFtydW5fdGltZW91dF0gcmVtb3ZlcyBleGFjdGx5IG9uZSBlbGVtZW50IGZyb20gW3RpbWVvdXRzXS4gIFRoaXNcbiAgICAgICBtYWludGFpbnMgdGhlIGludmFyaWFudCB0aGF0IFtTdGFjay5sZW5ndGggdGltZW91dHNdIGlzIGV4YWN0bHkgdGhlIG51bWJlciBvZlxuICAgICAgIG91dHN0YW5kaW5nIHRpbWVvdXRzIHdlIGhhdmUgcmVnaXN0ZXJlZC4gKilcbiAgICBpZ25vcmUgKFN0YWNrLnBvcF9leG4gdGltZW91dHMgOiBUaW1lX25zLnQpO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IFN0YXRlLklkbGUgLT5cbiAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLjtcbiAgICAgIHN0YXRlIDo9IFN0YXRlLldpbGxfcnVuX3Nvb25cbiAgICB8IFN0YXRlLlJ1bm5pbmcgfCBTdGF0ZS5XaWxsX3J1bl9zb29uIC0+ICgpXG47O1xuXG5sZXQgaW5pdGlhbGl6ZWRfcmVmID0gcmVmIGZhbHNlXG5cbmxldCBpbml0aWFsaXphdGlvbiA9XG4gIGxhenlcbiAgICAobGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgICBpbml0aWFsaXplZF9yZWYgOj0gdHJ1ZTtcbiAgICAgU2NoZWR1bGVyLnNldF9qb2JfcXVldWVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF9ldmVudF9hZGRlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBydW47XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gICAgIDo9IHByZXR0eV9wcmludF9leGNlcHRpb24gXCJBc3luY19rZXJuZWw6IE1vbml0b3IudHJ5X3dpdGhcIjtcbiAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9yc1xuICAgICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLm1haW5cbiAgICAgICB+ZjoocHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkFzeW5jX2tlcm5lbDogVW5oYW5kbGVkIGV4Y2VwdGlvblwiKTtcbiAgICAgcnVuICgpKVxuOztcblxubGV0IGluaXQgKCkgPSBmb3JjZSBpbml0aWFsaXphdGlvblxubGV0IGluaXRpYWxpemVkICgpID0gIWluaXRpYWxpemVkX3JlZlxuXG5sZXQgZG9jdW1lbnRfbG9hZGVkID1cbiAgbGV0IGpzX3N0cmluZ19jb21wYXJlIHMgPVxuICAgIGxldCBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzID0gcGh5c19lcXVhbCBpblxuICAgIGNvbXBhcmVfdXNpbmdfamF2YXNjcmlwdF90cmlwbGVfZXF1YWxfZm9yX3N0cmluZ3MgKEpzLnN0cmluZyBzKVxuICBpblxuICBsZXQgcmVhZHlfc3RhdGVfY2hhbmdlID0gXCJyZWFkeXN0YXRlY2hhbmdlXCIgaW5cbiAgbGV0IGNvbXBsZXRlID0gXCJjb21wbGV0ZVwiIGluXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlX2V2ID0gRG9tLkV2ZW50Lm1ha2UgcmVhZHlfc3RhdGVfY2hhbmdlIGluXG4gIGxldCBhZGRfZXZlbnQgdGFyZ2V0IGV2dCBoYW5kbGVyID1cbiAgICBpZ25vcmVcbiAgICAgIChEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIHRhcmdldCBldnQgaGFuZGxlciBKcy5fZmFsc2UgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIGlmIGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgIHRoZW4gQXN5bmNfa2VybmVsLkRlZmVycmVkLnVuaXRcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2FkZWQgPSBBc3luY19rZXJuZWwuSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBoYW5kbGVyIGV2dCA9XG4gICAgICAgIGlmIChub3QgKGpzX3N0cmluZ19jb21wYXJlIHJlYWR5X3N0YXRlX2NoYW5nZSBldnQjIy5fdHlwZSkpXG4gICAgICAgIHx8IGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgICAgICB0aGVuIEFzeW5jX2tlcm5lbC5JdmFyLmZpbGxfaWZfZW1wdHkgbG9hZGVkICgpO1xuICAgICAgICBKcy5fdHJ1ZVxuICAgICAgaW5cbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCByZWFkeXN0YXRlY2hhbmdlX2V2IChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC53aW5kb3cgRG9tX2h0bWwuRXZlbnQubG9hZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBBc3luY19rZXJuZWwuSXZhci5yZWFkIGxvYWRlZClcbjs7XG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgSHR0cCA9IEh0dHBcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5pbmNsdWRlIEFzeW5jX2pzMFxuXG5sZXQgbG9nX3MgPSBEZWJ1Zy5sb2dfc1xubGV0IGxvZ19zX2FzX3N0cmluZyA9IERlYnVnLmxvZ19zX2FzX3N0cmluZ1xuIiwib3BlbiEgQmFzZVxuXG4oKiBUaGUgW2RhdGFdIGFycmF5IGlzIGFuIGltcGxpY2l0IGJpbmFyeSB0cmVlIHdpdGggW2NoaWxkcmVuX2xlbmd0aCAqIDIgLSAxXSBub2RlcyxcbiAgIHdpdGggZWFjaCBub2RlIGJlaW5nIHRoZSBzdW0gb2YgdGhlIHR3byBjaGlsZCBub2RlcyBhbmQgdGhlIHJvb3Qgbm9kZSBiZWluZyB0aGUgMHRoXG4gICBub2RlLiAgVGhlIGxlYXZlcyBvZiB0aGUgdHJlZSBhcmUgdGhlIGxhc3QgW251bV9sZWF2ZXNdIG5vZGVzLlxuXG4gICBUaGUgY2hpbGRyZW4gYXJlIG5vdCBuZWNlc3NhcmlseSBhbGwgYXQgdGhlIHNhbWUgbGV2ZWwgb2YgdGhlIHRyZWUuIEZvciBpbnN0YW5jZSBpZlxuICAgeW91IGhhdmUgMyBjaGlsZHJlbiBbfCBhOyBiOyBjIHxdOlxuXG4gICB7dlxuICAgICAgICAgIG9cbiAgICAgICAgIC8gXFxcbiAgICAgICAgbyAgIGNcbiAgICAgICAvIFxcXG4gICAgICBhICAgYlxuICAgdn1cblxuICAgV2Ugd2FudCB0aGlzIHRyZWUgdG8gYmUgcmVwcmVzZW50YXRlZCBhcyBbfCBvOyBvOyBjOyBhOyBiIHxdLCBpLmUuIHdlIG5lZWQgdG8gYXBwbHlcbiAgIGZpcnN0IGEgcm90YXRpb24gdGhlbiBhIHRyYW5zbGF0aW9uIHRvIGNvbnZlcnQgYW4gaW5kZXggaW4gW3wgYTsgYjsgYyB8XSB0byBhIChsZWFmKVxuICAgaW5kZXggaW4gW3wgbzsgbzsgYzsgYTsgYiB8XS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgZGF0YSA6ICdhIE9wdGlvbl9hcnJheS50XG4gIDsgbnVtX2xlYXZlcyA6IGludFxuICA7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA6IGludFxuICA7IHJlZHVjZSA6ICdhIC0+ICdhIC0+ICdhXG4gIDsgc2V4cF9vZl9hIDogJ2EgLT4gU2V4cC50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5udW1fbGVhdmVzXG5cbigqIHt2XG4gICAgIHBhcmVudDogICAgICAwICAxICAyICAzICA0ICA1ICA2ICA3ICA4ICA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IC4uLlxuICAgICBsZWZ0IGNoaWxkOiAgMSAgMyAgNSAgNyAgOSAxMSAxMyAxNSAxNyAxOSAyMSAyMyAyNSAyNyAyOSAzMSAzMyAzNSAzNyAzOSAuLi5cbiAgICAgcmlnaHQgY2hpbGQ6IDIgIDQgIDYgIDggMTAgMTIgMTQgMTYgMTggMjAgMjIgMjQgMjYgMjggMzAgMzIgMzQgMzYgMzggNDAgLi4uIHZ9ICopXG5sZXQgcGFyZW50X2luZGV4IH5jaGlsZF9pbmRleCA9IChjaGlsZF9pbmRleCAtIDEpIC8gMlxubGV0IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleCA9IChwYXJlbnRfaW5kZXggKiAyKSArIDFcbmxldCByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleCA9IGxlZnRfY2hpbGRfaW5kZXggKyAxXG5cbigqIFRoZSBmaXJzdCBbbnVtX2xlYXZlcy0xXSBlbGVtZW50cyBhcmUgaW50ZXJuYWwgbm9kZXMgb2YgdGhlIHRyZWUuICBUaGUgbmV4dFxuICAgW251bV9sZWF2ZXNdIGVsZW1lbnRzIGFyZSB0aGUgbGVhdmVzLiAqKVxubGV0IG51bV9icmFuY2hlcyB0ID0gdC5udW1fbGVhdmVzIC0gMVxubGV0IGluZGV4X2lzX2xlYWYgdCBpID0gaSA+PSBudW1fYnJhbmNoZXMgdFxuXG4oKiBUaGUgdHJlZSBpcyBjb21wbGV0ZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBwZXJmZWN0LCBzbyB3ZSBwZXJmb3JtIHNvbWUgcm90YXRpb24gb2YgdGhlXG4gICBsZWF2ZXMgdG8gZW5zdXJlIHRoYXQgb3VyIHJlZHVjdGlvbnMgcHJlc2VydmUgb3JkZXJpbmcuICopXG5sZXQgbGVhZl9pbmRleCB0IGkgPVxuICAoKiBUaGUgdHJlZSBsYXlvdXQgaXMgbGV2ZWwgb3JkZXIuICBBbnkgbGVhdmVzIGluIHRoZSBzZWNvbmQgdG8gbGFzdCBsZXZlbCBuZWVkIHRvIG9jY3VyXG4gICAgIGluIHRoZSBhcnJheSBiZWZvcmUgdGhlIGxlYXZlcyBpbiB0aGUgYm90dG9tIGxldmVsLiAqKVxuICBsZXQgcm90YXRlZF9pbmRleCA9XG4gICAgbGV0IG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA9IGkgKyB0Lm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCBpblxuICAgIGlmIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA8IHQubnVtX2xlYXZlc1xuICAgIHRoZW4gb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5XG4gICAgZWxzZSBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgLSB0Lm51bV9sZWF2ZXNcbiAgaW5cbiAgKCogVGhlIGxlYXZlcyBvY2N1ciBhZnRlciB0aGUgYnJhbmNoZXMgaW4gdGhlIGFycmF5LiAqKVxuICByb3RhdGVkX2luZGV4ICsgbnVtX2JyYW5jaGVzIHRcbjs7XG5cbmxldCBnZXRfbGVhZiB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0IHQuZGF0YSAobGVhZl9pbmRleCB0IGkpXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldF9sZWFmIHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHRvX2xpc3QgdCA6IGEgb3B0aW9uIGxpc3QpXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgZGF0YSA9IHQuZGF0YSBpblxuICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBkYXRhIC0gMSBkb1xuICAgIG1hdGNoIE9wdGlvbl9hcnJheS5nZXQgZGF0YSBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudW1fYnJhbmNoZXMgdCAtIDEgZG9cbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGxldCBsZWZ0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIGxlZnQgaW5cbiAgICBsZXQgcmlnaHRfaXNfbm9uZSA9IE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgcmlnaHQgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSBkYXRhIGlcbiAgICB0aGVuIGFzc2VydCAobm90IChsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSkpXG4gICAgZWxzZVxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgaW5kZXhfaXNfbGVhZiB0IGxlZnQgfHwgaW5kZXhfaXNfbGVhZiB0IHJpZ2h0IHx8IGxlZnRfaXNfbm9uZSB8fCByaWdodF9pc19ub25lKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlX2V4biA/KHNleHBfb2ZfYSA9IFslc2V4cF9vZjogX10pICgpIH5sZW46bnVtX2xlYXZlcyB+cmVkdWNlID1cbiAgaWYgbnVtX2xlYXZlcyA8IDFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIm5vbi1wb3NpdGl2ZSBudW1iZXIgb2YgbGVhdmVzIGluIGJhbGFuY2VkIHJlZHVjZXJcIiAobnVtX2xlYXZlcyA6IGludCldO1xuICBsZXQgbnVtX2JyYW5jaGVzID0gbnVtX2xlYXZlcyAtIDEgaW5cbiAgbGV0IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA9IEludC5jZWlsX3BvdzIgbnVtX2xlYXZlcyAtIG51bV9sZWF2ZXMgaW5cbiAgbGV0IGRhdGEgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KG51bV9icmFuY2hlcyArIG51bV9sZWF2ZXMpIGluXG4gIHsgZGF0YTsgbnVtX2xlYXZlczsgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsOyByZWR1Y2U7IHNleHBfb2ZfYSB9XG47O1xuXG5sZXQgdmFsaWRhdGVfaW5kZXggdCBpID1cbiAgaWYgaSA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gYWNjZXNzIG5lZ2F0aXZlIGluZGV4IGluIGJhbGFuY2VkIHJlZHVjZXJcIiB+aW5kZXg6KGkgOiBpbnQpXTtcbiAgbGV0IGxlbmd0aCA9IHQubnVtX2xlYXZlcyBpblxuICBpZiBpID49IGxlbmd0aFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCJcbiAgICAgICAgICB+aW5kZXg6KGkgOiBpbnQpXG4gICAgICAgICAgKGxlbmd0aCA6IGludCldXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgYSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgbGV0IGkgPSByZWYgKGxlYWZfaW5kZXggdCBpKSBpblxuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZGF0YSAhaSBhO1xuICB3aGlsZSAhaSA8PiAwIGRvXG4gICAgbGV0IHBhcmVudCA9IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXg6IWkgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHBhcmVudFxuICAgIHRoZW4gaSA6PSAwXG4gICAgZWxzZSAoXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIGRhdGEgcGFyZW50O1xuICAgICAgaSA6PSBwYXJlbnQpXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfZXhuIHQgaSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxuOztcblxubGV0IHJlYyBjb21wdXRlX2V4biB0IGkgPVxuICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSB0LmRhdGEgaVxuICB0aGVuIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZGF0YSBpXG4gIGVsc2UgKFxuICAgIGxldCBsZWZ0ID0gbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4OmkgaW5cbiAgICBsZXQgcmlnaHQgPSByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleDpsZWZ0IGluXG4gICAgaWYgbGVmdCA+PSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZGF0YVxuICAgIHRoZW4gKFxuICAgICAgKCogSWYgd2UgZ2V0IGhlcmUsIHRoZSBwYXJlbnQgd2FzIGFuIHVuc2V0IGxlYWYuICopXG4gICAgICBsZXQgc2V4cF9vZl9hID0gdC5zZXhwX29mX2EgaW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJhdHRlbXB0IHRvIGNvbXB1dGUgYmFsYW5jZWQgcmVkdWNlciB3aXRoIHVuc2V0IGVsZW1lbnRzXCJcbiAgICAgICAgICAgIH5iYWxhbmNlZF9yZWR1Y2VyOih0IDogYSB0KV0pO1xuICAgIGxldCBhID0gdC5yZWR1Y2UgKGNvbXB1dGVfZXhuIHQgbGVmdCkgKGNvbXB1dGVfZXhuIHQgcmlnaHQpIGluXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmRhdGEgaSBhO1xuICAgIGEpXG47O1xuXG5sZXQgY29tcHV0ZV9leG4gdCA9IGNvbXB1dGVfZXhuIHQgMFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGluaXQgOiAnYVxuICA7IHN0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB7IGluaXQ7IHN0ZXBzID0gXyB9ID0gaW52YXJpYW50X2EgaW5pdFxuXG5sZXQgcmVjIHZhbHVlX2ludGVybmFsIGluaXQgc3RlcHMgfmF0ID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSAoKHQsIGEpLCBzdGVwcykgLT5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IHQgdGhlbiBpbml0IGVsc2UgdmFsdWVfaW50ZXJuYWwgYSBzdGVwcyB+YXRcbjs7XG5cbmxldCB2YWx1ZSB0IH5hdCA9IHZhbHVlX2ludGVybmFsIHQuaW5pdCB0LnN0ZXBzIH5hdFxubGV0IGNvbnN0YW50IGluaXQgPSB7IGluaXQ7IHN0ZXBzID0gU2VxdWVuY2UuZW1wdHkgfVxuXG5sZXQgY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMgPVxuICBpZiBub3RcbiAgICAgICAoTGlzdC5pc19zb3J0ZWQgc3RlcHMgfmNvbXBhcmU6KGZ1biAodGltZTEsIF8pICh0aW1lMiwgXykgLT5cbiAgICAgICAgICBUaW1lX25zLmNvbXBhcmUgdGltZTEgdGltZTIpKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1N0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4bl0gZ290IHVuc29ydGVkIHRpbWVzXCJcbiAgICAgICAgICB+c3RlcHM6KHN0ZXBzIHw+IExpc3QubWFwIH5mOmZzdCA6IFRpbWVfbnMudCBsaXN0KV07XG4gIHsgaW5pdDsgc3RlcHMgPSBzdGVwcyB8PiBTZXF1ZW5jZS5vZl9saXN0IH1cbjs7XG5cbmxldCBjcmVhdGVfZnJvbV9zZXF1ZW5jZSB+aW5pdCB+c3RlcHMgPSB7IGluaXQ7IHN0ZXBzIH1cbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFdlYWsgPSBTdGRsaWIuV2Vha1xuXG50eXBlICdhIHQgPSAnYSBIZWFwX2Jsb2NrLnQgV2Vhay50XG5cbmxldCBjcmVhdGUgfmxlbiA9IFdlYWsuY3JlYXRlIGxlblxubGV0IGxlbmd0aCB0ID0gV2Vhay5sZW5ndGggdFxubGV0IHNldCA9IFdlYWsuc2V0XG5cbmxldCBzZXRfZXhuIHQgaSB4ID0gc2V0IHQgaSAoT3B0aW9uLm1hcCB4IH5mOkhlYXBfYmxvY2suY3JlYXRlX2V4bilcblxubGV0IGdldCA9IFdlYWsuZ2V0XG5sZXQgaXNfc29tZSB0IGkgPSBXZWFrLmNoZWNrIHQgaVxubGV0IGlzX25vbmUgdCBpID0gbm90IChpc19zb21lIHQgaSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXQgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cF9vZjogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uIGFycmF5XSAodG9fYXJyYXkgdClcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiBpIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBXZWFrLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4iLCIoKiBXZSBpbXBsZW1lbnQgYSB3ZWFrIHBvaW50ZXIgdXNpbmcgYSBbV2Vha19hcnJheS50XS4gKilcblxub3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSBXZWFrX2FycmF5LnRcblxubGV0IGNyZWF0ZSAoKSA9IFdlYWtfYXJyYXkuY3JlYXRlIH5sZW46MVxuXG4oKiBXZSB1c2UgYSB3ZWFrIGFycmF5IG9mIGxlbmd0aCAxLCBzbyB0aGUgd2VhayBwb2ludGVyIGlzIGF0IGluZGV4IDAuICopXG5sZXQgaW5kZXggPSAwXG5cbmxldCBnZXQgdCA9IFdlYWtfYXJyYXkuZ2V0IHQgaW5kZXhcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIEhlYXBfYmxvY2sudCBvcHRpb24pXVxuXG5sZXQgaXNfbm9uZSB0ID0gV2Vha19hcnJheS5pc19ub25lIHQgaW5kZXhcbmxldCBpc19zb21lIHQgPSBXZWFrX2FycmF5LmlzX3NvbWUgdCBpbmRleFxuXG5sZXQgc2V0IHQgYmxvY2sgPSBXZWFrX2FycmF5LnNldCB0IGluZGV4IChTb21lIGJsb2NrKVxuIiwib3BlbiEgQmFzZVxuXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgnYSwgJ2IgV2Vha19wb2ludGVyLnQpIEhhc2h0YmwudFxuICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgICAgICAgICAgOiAnYSBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA6IHVuaXQgLT4gdW5pdFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgaGFzaGFibGUgPVxuICAgIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgPVxuICAgICAgICBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemVcbiAgICAgICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG5cbiAgICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA9IGlnbm9yZVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgVXNpbmdfaGFzaGFibGUuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUub2Zfa2V5IG0pXG47O1xuXG5sZXQgc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHQgfnRocmVhZF9zYWZlX2YgPVxuICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDwtIHRocmVhZF9zYWZlX2Y7XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID0gSGFzaHRibC5yZW1vdmUgdC5lbnRyeV9ieV9rZXkga2V5XG5cbigqIEluIG9yZGVyIGZvciBhIGNhbGwgdG8gW3JlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YV0gdG8gcmVjbGFpbSBhIGtleSB0aGF0XG4gICB3YXMgcHJldmlvdXNseSBmaW5hbGl6ZWQsIHRoZSB3ZWFrIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gY2xlYXJlZC4gIFRoaXMgcmVsaWVzIG9uIHRoZVxuICAgZmFjdCB0aGF0IHRoZSBPQ2FtbCBnYXJiYWdlIGNvbGxlY3RvciBjbGVhcnMgd2Vha3MgYW5kIHRoZW4gcnVucyBmaW5hbGl6ZXJzLiAqKVxubGV0IHJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQua2V5c193aXRoX3VudXNlZF9kYXRhID4gMCBkb1xuICAgIGxldCBrZXkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlbnRyeSAtPiBpZiBXZWFrX3BvaW50ZXIuaXNfbm9uZSBlbnRyeSB0aGVuIHJlbW92ZSB0IGtleVxuICBkb25lO1xuOztcblxubGV0IGdldF9lbnRyeSB0IGtleSA9XG4gIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5lbnRyeV9ieV9rZXkga2V5XG4gICAgfmRlZmF1bHQ6KGZ1biAoKSAtPiBXZWFrX3BvaW50ZXIuY3JlYXRlICgpKTtcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuOztcblxubGV0IGtleV9pc191c2luZ19zcGFjZSB0IGtleSA9IEhhc2h0YmwubWVtIHQuZW50cnlfYnlfa2V5IGtleVxuXG5sZXQgc2V0X2RhdGEgdCBrZXkgZW50cnkgKGRhdGEgOiBfIEhlYXBfYmxvY2sudCkgPVxuICBXZWFrX3BvaW50ZXIuc2V0IGVudHJ5IGRhdGE7XG4gIGxldCBjbGVhbnVwICgpID1cbiAgICBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT5cbiAgICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEga2V5O1xuICAgICAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSAoKSlcbiAgaW5cbiAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IGNsZWFudXAgZGF0YSB3aXRoXG4gICgqIEluIHRoaXMgY2FzZSwgW3hdIGlzIGtub3duIHRvIGJlIHN0YXRpYyBkYXRhLCB3aGljaCB3aWxsXG4gICAgIG5ldmVyIGJlIGNvbGxlY3RlZCBieSB0aGUgR0MgYW55d2F5LCBzbyBpdCdzIHNhZmUgdG8gZHJvcCAqKVxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiAoKVxuXG47O1xuXG5sZXQgcmVwbGFjZSB0IH5rZXkgfmRhdGEgPSBzZXRfZGF0YSB0IGtleSAoZ2V0X2VudHJ5IHQga2V5KSBkYXRhXG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBpZiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiV2Vha19oYXNodGJsLmFkZF9leG4gb2Yga2V5IGluIHVzZVwiIH5fOih0IDogKF8sIF8pIHQpIFslaGVyZV1dO1xuICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuOztcblxubGV0IGZpbmQgdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGVudHJ5IC0+IFdlYWtfcG9pbnRlci5nZXQgZW50cnlcbjs7XG5cbmxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBtYXRjaCBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5IHdpdGhcbiAgfCBTb21lIHYgLT4gdlxuICB8IE5vbmUgLT5cbiAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuICAgIGRhdGFcbjs7XG4iLCJ0eXBlIHQgPVxuICB8IEJlZm9yZVxuICB8IEFmdGVyXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuIiwiWyUlaW1wb3J0IFwiZGVidWcubWxoXCJdXG5cbm9wZW4gQ29yZVxuXG4oKiBBbGwgW2Fzc2VydF1zIGFuZCBvdGhlciBjaGVja3MgdGhyb3VnaG91dCB0aGUgY29kZSBhcmUgZ3VhcmRlZCBieSBbaWYgZGVidWddLiAgVGhlXG4gICBERUJVRyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIGxpYiBbaW5jcmVtZW50YWxdIGFuZCB1bnNldCBpbiB0aGUgbGliXG4gICBbaW5jcmVtZW50YWxfZGVidWddLCBidXQgYXBhcnQgZnJvbSB0aGF0IHRoZXkgYXJlIGlkZW50aWNhbC4gIFRlc3RzIGFyZSBydW4gd2l0aCBib3RoXG4gICB0aGUgcHJvZHVjdGlvbiBhbmQgZGVidWcgbGliLCBhbmQgdXNlcnMgY2FuIGNob29zZSB0byBidWlsZCB3aXRoIHRoZSBkZWJ1ZyBsaWJyYXJ5LCBpZlxuICAgdGhleSBzdXNwZWN0IHRoZXkgZm91bmQgYSBidWcgaW4gaW5jcmVtZW50YWwuICopXG5cblslJWlmIEpTQ19ERUJVR11cblxubGV0IGRlYnVnID0gdHJ1ZVxuXG5bJSVlbHNlXVxuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5bJSVlbmRpZl1cblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCB0YWcgbmFtZSBhIHNleHBfb2ZfYSA9IChuYW1lLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdXG5cbm1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gSW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBcnJheVxuXG4gICgqIE5vdCBkZWZpbmluZyBhbGlhc2VzIGluIHByb2R1Y3Rpb24gbW9kZSwgc2luY2UgdGhleSBicmVhayB0eXBlIHNwZWNpYWxpemF0aW9uIG9mXG4gICAgIGFycmF5IGFjY2Vzc2VzLiAqKVxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuIGEgPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBBcnJheS5ibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgVW9wdCA9IHN0cnVjdFxuICBpbmNsdWRlIFVvcHRcblxuICBsZXQgdW5zYWZlX3ZhbHVlID0gaWYgZGVidWcgdGhlbiB2YWx1ZV9leG4gZWxzZSB1bnNhZmVfdmFsdWVcbmVuZFxuXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaWZvcm1fYXJyYXlcblxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVsc2VdXG5cbiAgKCogVW5pZm9ybV9hcnJheSBpcyBiZWluZyBcInNtYXJ0XCIgYnkgY2hlY2tpbmcgaWYgZWxlbWVudHMgYXJlIGludGVnZXJzLCBidXQgVW9wdC50XG4gICAgIGFsbW9zdCBuZXZlciBjb250YWluIGludGVnZXJzLCBzbyB0aGUgZXh0cmEgY2hlY2sgdG8gbWFrZSBnZW5lcmF0ZWQgY29kZSBoYXJkZXIgdG9cbiAgICAgcmVhZCBhbmQgcG90ZW50aWFsbHkgc2xvd2VyLiAqKVxuICBsZXQgdW5zYWZlX3NldCA9IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeVxuICBsZXQgc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBVb3B0Lm5vbmUgaW5cbiAgICBibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgKCogV2Ugc3BlY2lhbGl6ZSBzb21lIGN1dG9mZnMgdG8gYXZvaWQgYW4gaW5kaXJlY3QgZnVuY3Rpb24gY2FsbDsgaW4gcGFydGljdWxhciB3ZVxuICAgICBzcGVjaWFsaXplIHRoZSBkZWZhdWx0IChhbmQgaGVuY2Ugb3ZlcndoZWxtaW5nbHkgY29tbW9uKSBjYXNlIG9mIHBoeXNpY2FsXG4gICAgIGVxdWFsaXR5LiAqKVxuICB8IEFsd2F5c1xuICB8IE5ldmVyXG4gIHwgUGh5c19lcXVhbFxuICB8IENvbXBhcmUgb2YgKCdhIC0+ICdhIC0+IGludClcbiAgfCBFcXVhbCBvZiAoJ2EgLT4gJ2EgLT4gYm9vbClcbiAgfCBGIG9mIChvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+IGJvb2wpXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBbHdheXMgfCBOZXZlciB8IFBoeXNfZXF1YWwgfCBDb21wYXJlIF8gfCBFcXVhbCBfIHwgRiBfIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBmID0gRiBmXG5sZXQgb2ZfY29tcGFyZSBmID0gQ29tcGFyZSBmXG5sZXQgb2ZfZXF1YWwgZiA9IEVxdWFsIGZcbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgYWx3YXlzID0gQWx3YXlzXG5sZXQgcG9seV9lcXVhbCA9IEVxdWFsIFBvbHkuZXF1YWxcblxubGV0IHNob3VsZF9jdXRvZmYgdCB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQaHlzX2VxdWFsIC0+IHBoeXNfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IE5ldmVyIC0+IGZhbHNlXG4gIHwgQWx3YXlzIC0+IHRydWVcbiAgfCBDb21wYXJlIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlID0gMFxuICB8IEVxdWFsIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgRiBmIC0+IGYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG47O1xuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEFsd2F5cywgQWx3YXlzIC0+IHRydWVcbiAgfCBBbHdheXMsIF8gLT4gZmFsc2VcbiAgfCBOZXZlciwgTmV2ZXIgLT4gdHJ1ZVxuICB8IE5ldmVyLCBfIC0+IGZhbHNlXG4gIHwgUGh5c19lcXVhbCwgUGh5c19lcXVhbCAtPiB0cnVlXG4gIHwgUGh5c19lcXVhbCwgXyAtPiBmYWxzZVxuICB8IENvbXBhcmUgZjEsIENvbXBhcmUgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IENvbXBhcmUgXywgXyAtPiBmYWxzZVxuICB8IEVxdWFsIGYxLCBFcXVhbCBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRXF1YWwgXywgXyAtPiBmYWxzZVxuICB8IEYgZjEsIEYgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEYgXywgXyAtPiBmYWxzZVxuOztcblxubGV0IHBoeXNfZXF1YWwgPSBQaHlzX2VxdWFsXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RyaW5nX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5tYWtlIH5zZXhwX29mX3QgfmNvbXBhcmUpXG5lbmRcblxudHlwZSBkb3QgPVxuICB7IGxhYmVsIDogU2V0Lk0oU3RyaW5nX2xpc3QpLnRcbiAgOyBhdHRyaWJ1dGVzIDogc3RyaW5nIFN0cmluZy5NYXAudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPVxuICB8IERvdCBvZiBkb3RcbiAgfCBJbmZvIG9mIEluZm8udFxuICB8IEFwcGVuZCBvZlxuICAgICAgeyBwcmlvciA6IHRcbiAgICAgIDsgbmV3XyA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmZvIGluZm8gPSBJbmZvIGluZm9cbmxldCBhcHBlbmQgcHJpb3IgbmV3XyA9IEFwcGVuZCB7IHByaW9yOyBuZXdfIH1cblxubGV0IGRvdCB+bGFiZWwgfmF0dHJpYnV0ZXMgPVxuICBsZXQgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIGxhYmVsIGluXG4gIERvdCB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCByZWMgdG9fZG90ID0gZnVuY3Rpb25cbiAgfCBJbmZvIGkgLT5cbiAgICB7IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBbIEluZm8udG9fc3RyaW5nX2h1bSBpIF1cbiAgICA7IGF0dHJpYnV0ZXMgPSBTdHJpbmcuTWFwLmVtcHR5XG4gICAgfVxuICB8IERvdCBkb3QgLT4gZG90XG4gIHwgQXBwZW5kIHsgcHJpb3I7IG5ld18gfSAtPlxuICAgIGxldCBwcmlvciA9IHRvX2RvdCBwcmlvciBpblxuICAgIGxldCBuZXdfID0gdG9fZG90IG5ld18gaW5cbiAgICBsZXQgbGFiZWwgPSBTZXQudW5pb24gcHJpb3IubGFiZWwgbmV3Xy5sYWJlbCBpblxuICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgIE1hcC5tZXJnZV9za2V3ZWRcbiAgICAgICAgcHJpb3IuYXR0cmlidXRlc1xuICAgICAgICBuZXdfLmF0dHJpYnV0ZXNcbiAgICAgICAgfmNvbWJpbmU6KGZ1biB+a2V5Ol8gX2xlZnQgcmlnaHQgLT4gcmlnaHQpXG4gICAgaW5cbiAgICB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCBlc2NhcGVfZG90X3N0cmluZyBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vbGFuZy5odG1sICopXG4gIFwiXFxcIlwiIF4gU3RyaW5nLnN1YnN0cl9yZXBsYWNlX2FsbCBzIH5wYXR0ZXJuOlwiXFxcIlwiIH53aXRoXzpcIlxcXFxcXFwiXCIgXiBcIlxcXCJcIlxuOztcblxubGV0IGVzY2FwZV9yZWNvcmRfbGFiZWwgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL3NoYXBlcy5odG1sICopXG4gIFN0cmluZy5jb25jYXRfbWFwIHMgfmY6KGZ1bmN0aW9uXG4gICAgfCAoJzwnIHwgJz4nIHwgJ3snIHwgJ30nIHwgJ3wnIHwgJ1xcXFwnIHwgJyAnKSBhcyBjIC0+IFwiXFxcXFwiIF4gU3RyaW5nLm9mX2NoYXIgY1xuICAgIHwgYyAtPiBTdHJpbmcub2ZfY2hhciBjKVxuOztcblxubGV0IHRvX3N0cmluZyB+bmFtZSB7IGxhYmVsOyBhdHRyaWJ1dGVzIH0gPVxuICBsZXQgbGFiZWwgPVxuICAgIGxhYmVsXG4gICAgfD4gU2V0LnRvX2xpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGNvbHMgLT5cbiAgICAgIFwie1wiIF4gU3RyaW5nLmNvbmNhdCAoTGlzdC5tYXAgY29scyB+Zjplc2NhcGVfcmVjb3JkX2xhYmVsKSB+c2VwOlwifFwiIF4gXCJ9XCIpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwifFwiXG4gICAgfD4gZnVuIHMgLT4gXCJ7XCIgXiBzIF4gXCJ9XCJcbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGF0dHJpYnV0ZXNcbiAgICB8PiBNYXAudG9fYWxpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgc3ByaW50ZiB7fCAlcz0lc3x9IChlc2NhcGVfZG90X3N0cmluZyBrKSAoZXNjYXBlX2RvdF9zdHJpbmcgdikpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gIGluXG4gIHNwcmludGYge3wgICVzIFtzaGFwZT1NcmVjb3JkIGxhYmVsPSVzICVzXXx9IG5hbWUgKGVzY2FwZV9kb3Rfc3RyaW5nIGxhYmVsKSBhdHRyaWJ1dGVzXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAxKVxuXG5sZXQgbmV4dCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAtMSlcbmxldCBub25lID0gLTFcbmxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxubGV0IGlzX3NvbWUgdCA9IHQgPj0gMFxubGV0IGFkZDEgdCA9IHQgKyAxXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFByZXZpb3VzX3VwZGF0ZV9raW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWRcbiAgICB8IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIE5vZGVfdXBkYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBOZWNlc3Nhcnkgb2YgJ2FcbiAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBmIDogJ2EgTm9kZV91cGRhdGUudCAtPiB1bml0XG4gIDsgbXV0YWJsZSBwcmV2aW91c191cGRhdGVfa2luZCA6IFByZXZpb3VzX3VwZGF0ZV9raW5kLnRcbiAgOyBjcmVhdGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGYgfmF0OmNyZWF0ZWRfYXQgPSB7IGY7IHByZXZpb3VzX3VwZGF0ZV9raW5kID0gTmV2ZXJfYmVlbl91cGRhdGVkOyBjcmVhdGVkX2F0IH1cblxubGV0IHJlYWxseV9ydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpID1cbiAgdC5wcmV2aW91c191cGRhdGVfa2luZFxuICA8LSAobWF0Y2ggbm9kZV91cGRhdGUgd2l0aFxuICAgIHwgTmVjZXNzYXJ5IF8gLT4gTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkIF8gLT4gQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWQgLT4gSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5IC0+IFVubmVjZXNzYXJ5KTtcbiAgdC5mIG5vZGVfdXBkYXRlXG47O1xuXG5sZXQgcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSB+bm93ID1cbiAgKCogV2Ugb25seSBydW4gdGhlIGhhbmRsZXIgaWYgd2FzIGNyZWF0ZWQgaW4gYW4gZWFybGllciBzdGFiaWxpemF0aW9uIGN5Y2xlLiAgSWYgdGhlXG4gICAgIGhhbmRsZXIgd2FzIGNyZWF0ZWQgYnkgYW5vdGhlciBvbi11cGRhdGUgaGFuZGxlciBkdXJpbmcgdGhlIHJ1bm5pbmcgb2Ygb24tdXBkYXRlXG4gICAgIGhhbmRsZXJzIGluIHRoZSBjdXJyZW50IHN0YWJpbGl6YXRpb24sIHdlIHRyZWF0IHRoZSBhZGRlZCBoYW5kbGVyIGFzIGlmIGl0IHdlcmUgYWRkZWRcbiAgICAgYWZ0ZXIgdGhpcyBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgV2Ugd2lsbCBydW4gaXQgYXQgdGhlIG5leHQgc3RhYmlsaXphdGlvbiwgYmVjYXVzZVxuICAgICB0aGUgbm9kZSB3aXRoIHRoZSBoYW5kbGVyIHdhcyBwdXNoZWQgb24gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB0LmNyZWF0ZWRfYXQgbm93IDwgMFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnByZXZpb3VzX3VwZGF0ZV9raW5kLCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgKCogT25jZSBhIG5vZGUgaXMgaW52YWxpZGF0ZWQsIHRoZXJlIHdpbGwgbmV2ZXIgYmUgZnVydGhlciBpbmZvcm1hdGlvbiB0byBwcm92aWRlLFxuICAgICAgIHNpbmNlIGluY3JlbWVudGFsIGRvZXMgbm90IGFsbG93IGFuIGludmFsaWQgbm9kZSB0byBiZWNvbWUgdmFsaWQuICopXG4gICAgfCBJbnZhbGlkYXRlZCwgXyAtPiAoKVxuICAgICgqIFRoZXNlIGNhc2VzIGNhbiBoYXBwZW4gaWYgYSBub2RlIGlzIGhhbmRsZWQgYWZ0ZXIgc3RhYmlsaXphdGlvbiBkdWUgdG8gYW5vdGhlclxuICAgICAgIGhhbmRsZXIuICBCdXQgZm9yIHRoZSBjdXJyZW50IGhhbmRsZXIsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgIG5ldyBpbmZvcm1hdGlvbiB0byBwcm92aWRlLiAqKVxuICAgIHwgQ2hhbmdlZCwgTmVjZXNzYXJ5IF8gfCBOZWNlc3NhcnksIE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnksIFVubmVjZXNzYXJ5IC0+ICgpXG4gICAgKCogSWYgdGhpcyBoYW5kbGVyIGhhc24ndCBzZWVuIGEgbm9kZSB0aGF0IGlzIGNoYW5naW5nLCB3ZSB0cmVhdCB0aGUgdXBkYXRlIGFzIGFuXG4gICAgICAgaW5pdGlhbGl6YXRpb24uICopXG4gICAgfCAoTmV2ZXJfYmVlbl91cGRhdGVkIHwgVW5uZWNlc3NhcnkpLCBDaGFuZ2VkIChfLCBhKSAtPiByZWFsbHlfcnVuIHQgKE5lY2Vzc2FyeSBhKVxuICAgICgqIEFsbCBvdGhlciB1cGRhdGVzIGFyZSBydW4gYXMgaXMuICopXG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWQsIChOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBVbm5lY2Vzc2FyeSwgKE5lY2Vzc2FyeSBfIHwgSW52YWxpZGF0ZWQpXG4gICAgfCBOZWNlc3NhcnksIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgQ2hhbmdlZCwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpIC0+IHJlYWxseV9ydW4gdCBub2RlX3VwZGF0ZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IGV4biA6IGV4blxuICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZXhuID0geyBleG47IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgfVxuXG5sZXQgcmVyYWlzZV93aXRoX21lc3NhZ2UgeyBleG47IGJhY2t0cmFjZSB9IG1zZyA9XG4gIEV4bi5yYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRXhuLlJlcmFpc2VkIChtc2csIGV4bikpIGJhY2t0cmFjZVxuOztcblxubGV0IHJlcmFpc2UgeyBleG47IGJhY2t0cmFjZSB9ID0gRXhuLnJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBiYWNrdHJhY2VcbiIsIigqIFRoaXMgbW9kdWxlIGhhcyBhIGdpYW50IFttb2R1bGUgcmVjXSBkZWZpbmluZyBhbGwgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyB1c2VkXG4gICBpbiB0aGUgaW1wbGVtZW50YXRpb24uICBUaGUgZGVmaW5pdGlvbiBvZiBlYWNoIHR5cGUgaXMgdGhlbiByZXBlYXRlZCBpbiBpdHMgZmlsZTtcbiAgIGNvbW1lbnRzIGJlbG9uZyB0aGVyZSwgbm90IGhlcmUuXG5cbiAgIFdlIHB1dCBqdXN0IGVub3VnaCBzZXhwIGNvbnZlcnRlcnMgaGVyZSB0byBkaXNwbGF5IG5vZGUgaWRzLiAgVGhlIGRldGFpbGVkIHNleHBcbiAgIGNvbnZlcnRlcnMgYXJlIGdlbmVyYXRlZCB2aWEgW3dpdGggc2V4cF0gaW4gdGhlIGluZGl2aWR1YWwgZmlsZXMuICBEZWZpbmluZyB0aGUgc2V4cFxuICAgY29udmVydGVycyBvdXRzaWRlIG9mIHRoZSBbbW9kdWxlIHJlY10gbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFcbiAgIHNleHAgY29udmVydGVyIHRoYXQgd291bGQgdHJ5IHRvIHByb2R1Y2UgYW4gaW5maW5pdGUgc2V4cC5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIHJlYyBBZGp1c3RfaGVpZ2h0c19oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIEFkanVzdF9oZWlnaHRzX2hlYXBcblxuYW5kIEFsYXJtIDogc2lnXG4gIHR5cGUgdCA9IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbmVuZCA9XG4gIEFsYXJtXG5cbmFuZCBBbGFybV92YWx1ZSA6IHNpZ1xuICBtb2R1bGUgQWN0aW9uIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgQXQudFxuICAgICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogdCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBBbGFybV92YWx1ZVxuXG5hbmQgQXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICB9XG5lbmQgPVxuICBBcnJheV9mb2xkXG5cbmFuZCBBdCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdFxuXG5hbmQgQXRfaW50ZXJ2YWxzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdF9pbnRlcnZhbHNcblxuYW5kIEJpbmQgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgICA7IG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQmluZFxuXG5hbmQgQ2xvY2sgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQ2xvY2tcblxuYW5kIEV4cGVydCA6IHNpZ1xuICB0eXBlICdhIGVkZ2UgPVxuICAgIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9uX2NoYW5nZSA6ICdhIC0+IHVuaXRcbiAgICA7IG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgcGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZSBbQEB1bmJveGVkXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBmIDogdW5pdCAtPiAnYVxuICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgICA7IG11dGFibGUgY2hpbGRyZW4gOiBwYWNrZWRfZWRnZSBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSBmb3JjZV9zdGFsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgOiBib29sXG4gICAgfVxuZW5kID1cbiAgRXhwZXJ0XG5cbmFuZCBGcmVlemUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICAgIH1cbmVuZCA9XG4gIEZyZWV6ZVxuXG5hbmQgSWZfdGhlbl9lbHNlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICAgIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgICB9XG5lbmQgPVxuICBJZl90aGVuX2Vsc2VcblxuYW5kIEludGVybmFsX29ic2VydmVyIDogc2lnXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IENyZWF0ZWRcbiAgICAgIHwgSW5fdXNlXG4gICAgICB8IERpc2FsbG93ZWRcbiAgICAgIHwgVW5saW5rZWRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIH1cblxuICB0eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyBpbnRlcm5hbF9vYnNlcnZlciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXJcblxuYW5kIEpvaW4gOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgSm9pblxuXG5hbmQgS2luZCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gICAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gICAgfCBDb25zdCBvZiAnYVxuICAgIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gICAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICAgIHwgSW52YWxpZFxuICAgIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gICAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gICAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICAgIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICAgIHwgVW5pbml0aWFsaXplZFxuICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgVmFyIG9mICdhIFZhci50XG4gICAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwNCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA1IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNiA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNyA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA4IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTAgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEyIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMyA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNCA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE1IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhMTVcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG5lbmQgPVxuICBLaW5kXG5cbmFuZCBOb2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IE5vZGVfaWQudFxuICAgIDsgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gICAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gICAgOyBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBwYXJlbnQwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBvYnNlcnZlcnMgOiAnYSBJbnRlcm5hbF9vYnNlcnZlci50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICAgIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl0gW0BAdW5ib3hlZF1cbiAgZW5kXG5cbiAgdmFsIGlzX3ZhbGlkIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX25lY2Vzc2FyeSA6IF8gdCAtPiBib29sXG4gIHZhbCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTm9kZSA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFBhY2tlZCA6PSBOb2RlLlBhY2tlZClcblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IGNvbmNhdCBbIFwiblwiOyBOb2RlX2lkLnRvX3N0cmluZyB0LmlkIF0gfD4gWyVzZXhwX29mOiBzdHJpbmddXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAdW5ib3hlZF1cblxuICAgIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyBub2RlXVxuICBlbmRcblxuICBsZXQgaXNfdmFsaWQgdCA9XG4gICAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgICB8IEludmFsaWQgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICA7O1xuXG4gICgqIFtpc19uZWNlc3NhcnldIGlzIGRlZmluZWQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgaXQgYmVmb3JlIG5vZGUubWwgaXMgYXZhaWxhYmxlLiAgSXQgaXNcbiAgICAgdXNlZCBkdXJpbmcgZ3JhcGggbWFuaXB1bGF0aW9uLCBhbmQgc28gaXMgd3JpdHRlbiB3aXRoIHNvbWUgY2FyZSB0byBiZSBmYXN0LiAqKVxuICBsZXQgaXNfbmVjZXNzYXJ5IHQgPVxuICAgIHQubnVtX3BhcmVudHMgPiAwXG4gICAgfHwgVW9wdC5pc19zb21lIHQub2JzZXJ2ZXJzXG4gICAgfHwgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICB8IEZyZWV6ZSBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8fCB0LmZvcmNlX25lY2Vzc2FyeVxuICA7O1xuXG4gIGxldCB0X2lzX2luamVjdGl2ZSAodHlwZSBhIGIpIChUIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpIDogKGEsIGIpIFR5cGVfZXF1YWwudCA9IFRcblxuICBsZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgKHR5cGUgYSBiKSAodDEgOiBhIHQpICh0MiA6IGIgdCkgPVxuICAgICgqIFRoaXMgaXMgdHlwZS1zYWZlIGFzc3VtaW5nIG5vIG9uZSBjYW4gZ2l2ZSB0aGUgc2FtZSBpbmNyZW1lbnRhbCBub2RlIHR3byBkaWZmZXJlbnRcbiAgICAgICB0eXBlcy4gIFRoaXMgaXMgdHJ1ZSBiZWNhdXNlIHRoZSBmaWVsZCBbbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2Egb3B0aW9uXSBwcmV2ZW50c1xuICAgICAgIGJvdGggc3VidHlwaW5nIGFuZCBwYXJhbWV0ZXJpYyBwb2x5bW9ycGhpc20uICBCdXQgdGhpcyBhbGxvd3MgdG8gYnJlYWtcbiAgICAgICBhYnN0cmFjdGlvbnMsIGFzIGluIHNvbWVvbmUgY291bGQgd3JpdGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0XG4gICAgICAgICB0eXBlIHUgKCogPSB0IHVuZGVybmVhdGggKilcbiAgICAgICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHQgSW5jci50ICogdSBJbmNyLnQgKCogdGhlIHR3byBpbmNyZW1lbnRhbHMgYXJlIHBoeXNfZXF1YWwgKilcbiAgICAgICBdfVxuXG4gICAgICAgYW5kIHdlIHdvdWxkIGZpZ3VyZSBvdXQgdGhhdCB0eXBlIHQgPSB1LiAgSG93ZXZlciwgd2UgY291bGQgYWRkIGEgVHlwZV9lcXVhbC5JZCB0b1xuICAgICAgIG5vZGVzIGFuZCBkbyB0aGUgc2FtZSwgc28gaXQgc2VlbXMgdG8gYmUgYSBtb3JlIGdlbmVyYWwgaXNzdWUuICopXG4gICAgaWYgcGh5c19zYW1lIHQxIHQyXG4gICAgdGhlbiBTb21lICh0X2lzX2luamVjdGl2ZSAoT2JqLm1hZ2ljIChUIDogXyBUeXBlX2VxdWFsLnQpIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpKVxuICAgIGVsc2UgTm9uZVxuICA7O1xuZW5kXG5cbmFuZCBPYnNlcnZlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZlxuZW5kID1cbiAgT2JzZXJ2ZXJcblxuYW5kIE9ubHlfaW5fZGVidWcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIE9ubHlfaW5fZGVidWdcblxuYW5kIFBhY2tlZF93ZWFrX2hhc2h0YmwgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG5lbmQgPVxuICBQYWNrZWRfd2Vha19oYXNodGJsXG5cbmFuZCBSZWNvbXB1dGVfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIFJlY29tcHV0ZV9oZWFwXG5cbmFuZCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZS50IC0+IHRcbmVuZCA9XG4gIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnNcblxuYW5kIFNjb3BlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBUb3AgLT4gXCJUb3BcIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICB8IEJpbmQgYmluZCAtPiBiaW5kLm1haW4gfD4gWyVzZXhwX29mOiBfIE5vZGUudF1cbiAgOztcbmVuZFxuXG5hbmQgU25hcHNob3QgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBiZWZvcmUgOiAnYVxuICAgIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFNuYXBzaG90XG5cbmFuZCBTdGF0ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgICA7IG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gICAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgICA7IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gICAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBTdGF0dXMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFN0YWJpbGl6aW5nXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHwgTm90X3N0YWJpbGl6aW5nXG4gICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5lbmQgPVxuICBTdGF0dXNcblxuYW5kIFN0ZXBfZnVuY3Rpb25fbm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFN0ZXBfZnVuY3Rpb25fbm9kZVxuXG5hbmQgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gICAgOyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICAgIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICAgIH1cbmVuZCA9XG4gIFVub3JkZXJlZF9hcnJheV9mb2xkXG5cbmFuZCBWYXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgICB9XG5cbiAgdHlwZSAnYSB2YXIgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIFZhclxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5WYXIudCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgKCogW3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gaXMgb25seSBzZXQgdG8gW1VvcHQuc29tZV0gaWYgdGhlIHVzZXIgY2FsbHNcbiAgICAgICBbVmFyLnNldF0gZHVyaW5nIHN0YWJpbGl6YXRpb24sIGluIHdoaWNoIGNhc2UgaXQgaG9sZHMgdGhlIChsYXN0KSB2YWx1ZSBzZXQuICBBdFxuICAgICAgIHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgYWxsIHN1Y2ggdmFyaWFibGVzIGFyZSBwcm9jZXNzZWQgdG8gZG8gW3QudmFsdWUgPC1cbiAgICAgICB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgOyAoKiBbc2V0X2F0XSB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0IHJlY2VudCB0aW1lIFt0LnZhbHVlXSBjaGFuZ2VkLlxuICAgICAgIFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgdGltZSBbVmFyLnNldCB0XSB3YXMgY2FsbGVkLCBkdWUgdG8gdGhlIGVmZmVjdCBvZiBbVmFyLnNldF0gZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbiBiZWluZyBkZWxheWVkIHVudGlsIGFmdGVyIHRoZSBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnZhbHVlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+c2V0X2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+d2F0Y2g6XG4gICAgICAgIChjaGVjayAoZnVuICh3YXRjaCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB3YXRjaC5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIHBvc3NpYmxlIHdpdGggW351c2VfY3VycmVudF9zY29wZTp0cnVlXSAqKVxuICAgICAgICAgICB8IFZhciB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpKVxuOztcblxubGV0IGluY3Jfc3RhdGUgdCA9IHQud2F0Y2guc3RhdGVcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICdhIHZhciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0ID0gVHlwZXMuVmFyLlBhY2tlZC50ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbGF0ZXN0X3ZhbHVlIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICBlbHNlIHQudmFsdWVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG5tb2R1bGUgVXBkYXRlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBGX2ludmVyc2Ugb2YgKCdiIC0+ICdhIC0+ICdiKVxuICAgIHwgVXBkYXRlIG9mICgnYiAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdiKVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1cGRhdGUgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVcGRhdGUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgIHwgRl9pbnZlcnNlIGZfaW52ZXJzZSAtPlxuICAgICAgZnVuIGZvbGRfdmFsdWUgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+IGYgKGZfaW52ZXJzZSBmb2xkX3ZhbHVlIG9sZF92YWx1ZSkgbmV3X3ZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLlVub3JkZXJlZF9hcnJheV9mb2xkLnQgPVxuICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICA7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+dXBkYXRlOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0O1xuICAgICAgICAgICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIGNoaWxkLnZhbHVlX29wdCkpKSlcbiAgICAgIH5mb2xkX3ZhbHVlOlxuICAgICAgICAoY2hlY2sgKGZ1biBmb2xkX3ZhbHVlIC0+XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hY2MgZm9sZF92YWx1ZTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoVW9wdC5pc19zb21lIGZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICh0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+bnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGU6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPD0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczpcbiAgICAgICAgKGNoZWNrIChmdW4gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtPlxuICAgICAgICAgICBhc3NlcnQgKGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPiAwKSkpKVxuOztcblxubGV0IGNyZWF0ZSB+aW5pdCB+ZiB+dXBkYXRlIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIH5jaGlsZHJlbiB+bWFpbiA9XG4gIHsgaW5pdFxuICA7IGZcbiAgOyB1cGRhdGUgPSBVcGRhdGUudXBkYXRlIHVwZGF0ZSB+ZlxuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOyBjaGlsZHJlblxuICA7IG1haW5cbiAgOyBmb2xkX3ZhbHVlID1cbiAgICAgIFVvcHQubm9uZVxuICAoKiBXZSBtYWtlIFtudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNdXG4gICAgIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBhIGZ1bGwgY29tcHV0YXRpb24gdGhlIG5leHQgdGltZSB0aGUgbm9kZSBpcyBjb21wdXRlZC4gKilcbiAgOyBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgfVxuOztcblxubGV0IGZ1bGxfY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuOyBfIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBjb21wdXRlIHQgPVxuICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIHRoZW4gKFxuICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gMDtcbiAgICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5zb21lIChmdWxsX2NvbXB1dGUgdCkpO1xuICBVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWVcbjs7XG5cbmxldCBmb3JjZV9mdWxsX2NvbXB1dGUgdCA9XG4gIHQuZm9sZF92YWx1ZSA8LSBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgY2hpbGRfY2hhbmdlZFxuICAgICAgKHR5cGUgYSBiKVxuICAgICAgKHQgOiAoYSwgXykgdClcbiAgICAgIH4oY2hpbGQgOiBiIE5vZGUudClcbiAgICAgIH5jaGlsZF9pbmRleFxuICAgICAgfihvbGRfdmFsdWVfb3B0IDogYiBVb3B0LnQpXG4gICAgICB+KG5ld192YWx1ZSA6IGIpXG4gID1cbiAgbGV0IGNoaWxkX2F0X2luZGV4ID0gdC5jaGlsZHJlbi4oY2hpbGRfaW5kZXgpIGluXG4gIG1hdGNoIE5vZGUudHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgY2hpbGQgY2hpbGRfYXRfaW5kZXggd2l0aFxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZF0gbWlzbWF0Y2hcIlxuICAgICAgICAgIH51bm9yZGVyZWRfYXJyYXlfZm9sZDoodCA6IChfLCBfKSB0KVxuICAgICAgICAgIChjaGlsZF9pbmRleCA6IGludClcbiAgICAgICAgICAoY2hpbGQgOiBfIE5vZGUudCldXG4gIHwgU29tZSBUIC0+XG4gICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtIDFcbiAgICB0aGVuIChcbiAgICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSArIDE7XG4gICAgICAoKiBXZSBvbmx5IHJlYWNoIHRoaXMgY2FzZSBpZiB3ZSBoYXZlIGFscmVhZHkgZG9uZSBhIGZ1bGwgY29tcHV0ZSwgaW4gd2hpY2ggY2FzZVxuICAgICAgICAgW1VvcHQuaXNfc29tZSB0LmZvbGRfdmFsdWVdIGFuZCBbVW9wdC5pc19zb21lIG9sZF92YWx1ZV9vcHRdLiAqKVxuICAgICAgdC5mb2xkX3ZhbHVlXG4gICAgICA8LSBVb3B0LnNvbWVcbiAgICAgICAgICAgKHQudXBkYXRlXG4gICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudmFsdWVfZXhuIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgICAgIH5uZXdfdmFsdWUpKVxuICAgIGVsc2UgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgIHRoZW4gZm9yY2VfZnVsbF9jb21wdXRlIHRcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxuXG50eXBlIHQgPSAoVHlwZXMuQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVsbCA9IEFsYXJtLm51bGwgKClcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBBbGFybV92YWx1ZSA9IFR5cGVzLkFsYXJtX3ZhbHVlXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU3RlcF9mdW5jdGlvbl9ub2RlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiAoQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKVxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgcGh5c19zYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gW3VwY29taW5nX3N0ZXBzXSBiZWNvbWVzIGVtcHR5LiAqKVxuICAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQ6aWdub3JlXG4gICAgICB+dmFsdWU6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dXBjb21pbmdfc3RlcHM6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5hbGFybV92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQyIC0+IGFzc2VydCAocGh5c19zYW1lIHQgdDIpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG5cbmxldCByZWMgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTEgc3RlcHMgPVxuICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHN0ZXBzIHdpdGhcbiAgfCBTb21lICgoc3RlcF9hdCwgYTIpLCBzdGVwczIpIHdoZW4gVGltZV9ucy4oID49ICkgdG9fIHN0ZXBfYXQgLT5cbiAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyBhMiBzdGVwczJcbiAgfCBfIC0+XG4gICAgdC52YWx1ZSA8LSBVb3B0LnNvbWUgYTE7XG4gICAgdC51cGNvbWluZ19zdGVwcyA8LSBzdGVwc1xuOztcblxubGV0IGFkdmFuY2UgdCB+dG9fID0gYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gKFVvcHQudmFsdWVfZXhuIHQudmFsdWUpIHQudXBjb21pbmdfc3RlcHNcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLkFycmF5X2ZvbGQudCA9XG4gIHsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdCkpKSlcbjs7XG5cbmxldCBjb21wdXRlIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSA9XG4gIGxldCByZXN1bHQgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgIHJlc3VsdCA6PSBmICFyZXN1bHQgKFVvcHQudmFsdWVfZXhuIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpLnZhbHVlX29wdClcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlIHQgPSBUeXBlcy5BdC50ID1cbiAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gIDsgYXQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBDb25zdCBBZnRlciAtPiAoKSAoKiBoYXBwZW5zIG9uY2UgdGhlIGN1cnJlbnQgdGltZSBwYXNzZXMgW3QuYXRdLiAqKVxuICAgICAgICAgICB8IEF0IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXRfaW50ZXJ2YWxzLnQgPVxuICB7IG1haW4gOiB1bml0IE5vZGUudFxuICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBBdF9pbnRlcnZhbHMgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmJhc2U6aWdub3JlXG4gICAgICB+aW50ZXJ2YWw6KGNoZWNrIChmdW4gaW50ZXJ2YWwgLT4gYXNzZXJ0IChUaW1lX25zLlNwYW4uaXNfcG9zaXRpdmUgaW50ZXJ2YWwpKSlcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQmluZCA9IFR5cGVzLkJpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxubW9kdWxlIFNjb3BlID0gVHlwZXMuU2NvcGVcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmluZC50ID1cbiAgeyBtYWluIDogJ2IgTm9kZS50XG4gIDsgKCogW2ZdIGlzIHRoZSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRoYXQgd2UgcnVuIGVhY2ggdGltZSBbdC5saHNdIGNoYW5nZXMuICBJdCBpc1xuICAgICAgIG11dGFibGUgb25seSBzbyB3ZSBjYW4gY2xlYXIgaXQgd2hlbiBbdF0gaXMgaW52YWxpZGF0ZWQuICopXG4gICAgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50XG4gIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgKCogW3Joc10gaXMgaW5pdGlhbGx5IFtub25lXSwgYW5kIGFmdGVyIHRoYXQgaXMgW3NvbWVdIG9mIHRoZSByZXN1bHQgb2YgdGhlIG1vc3QgcmVjZW50XG4gICAgICAgY2FsbCB0byBbZl0uICopXG4gICAgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gIDsgKCogW3Joc19zY29wZV0gaXMgdGhlIHNjb3BlIGluIHdoaWNoIFt0LmZdIGlzIHJ1biwgaS5lLiBpdCBpcyBbU2NvcGUuQmluZCB0XS4gIEl0IGlzXG4gICAgICAgW211dGFibGVdIG9ubHkgdG8gYXZvaWQgYSBbbGV0IHJlY10gZHVyaW5nIGNyZWF0aW9uLiAqKVxuICAgIG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICA7ICgqIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIGlzIHRoZSBoZWFkIG9mIHRoZSBzaW5nbHktbGlua2VkIGxpc3Qgb2Ygbm9kZXMgY3JlYXRlZCBvblxuICAgICAgIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgW3RdLCBpLmUuIGluIFt0LnJoc19zY29wZV0uICopXG4gICAgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGlzX3ZhbGlkIHQgPVxuICBtYXRjaCB0Lm1haW4ua2luZCB3aXRoXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICB8IF8gLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+KGYgOiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBmIChUIG5vZGVfb25fcmhzKVxuICBkb25lXG47O1xuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSBfaW52YXJpYW50X2IgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5saHM6aWdub3JlXG4gICAgICB+bGhzX2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGxoc19jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGxoc19jaGFuZ2UuY3JlYXRlZF9pbiB0Lm1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZVxuICAgICAgfnJoc19zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IFNjb3BlLlRvcCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgfCBCaW5kIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKSkpXG4gICAgICB+YWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0LnJoc19zY29wZSk7XG4gICAgICAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSB0aGVuIGFzc2VydCAodC5saHNfY2hhbmdlLmhlaWdodCA8IG5vZGUuaGVpZ2h0KSkpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIGVkZ2UgPSAnYSBUeXBlcy5FeHBlcnQuZWRnZSA9XG4gIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gIDsgKCogW2luZGV4XSBpcyBkZWZpbmVkIHdoZW5ldmVyIHRoZSBbZWRnZV0gaXMgaW4gdGhlIFtjaGlsZHJlbl0gb2Ygc29tZSBbdF0uIFRoZW4gaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgdGhpcyBbZWRnZV0gaW4gdGhhdCBbY2hpbGRyZW5dIGFycmF5LiBJdCBtaWdodCBzZWVtIHJlZHVuZGFudCB3aXRoIGFsbFxuICAgICAgIHRoZSBvdGhlciBpbmRleGVzIHdlIGhhdmUsIGJ1dCBpdCBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIGNoaWxkcmVuLiAgVGhlIGluZGV4IG1heVxuICAgICAgIGNoYW5nZSBhcyBzaWJsaW5nIGNoaWxkcmVuIGFyZSByZW1vdmVkLiAqKVxuICAgIG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgcGFja2VkX2VkZ2UgPSBUeXBlcy5FeHBlcnQucGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZVxuW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRXhwZXJ0LnQgPVxuICB7IGYgOiB1bml0IC0+ICdhXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hlbiBzZXQsIG1ha2VzIHRoZSBub2RlIG9mIFt0XSBzdGFsZS4gIEl0IGlzIHNldCB3aGVuIHRoZSBzZXQgb2YgY2hpbGRyZW4gY2hhbmdlcy5cbiAgICAgICBPdGhlcndpc2UgdGhlIG5vcm1hbCBjaGVjayBvZiBzdGFsZW5lc3MgKGNvbXBhcmluZyB0aGUgW2NoYW5nZWRfYXRdIGZpZWxkIG9mXG4gICAgICAgY2hpbGRyZW4gYW5kIHRoZSBbcmVjb21wdXRlZF9hdF0gZmllbGQgZm9yIHRoZSBub2RlIG9mIFt0XSkgd291bGQgbm90IGJlIGVub3VnaC5cbiAgICAgICBUaGlzIHBsYXlzIGEgcm9sZSBzaW1pbGFyIHRvIHRoZSBjdXRvZmYgb2YgW05ldmVyXSBmb3IgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZHMsIGJ1dFxuICAgICAgIHdlIGRvbid0IGhhdmUgYSBzcGVjaWFsIGNoaWxkLiAqKVxuICAgIG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gIDsgKCogVGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgcG9pbnQgdG8gdXMuICBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBub2RlXG4gICAgICAgb2YgW3RdIG5lZWRzIHRvIGludmFsaWRhdGVkLCB3aXRob3V0IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4uICBUaGlzIGlzIG5vdFxuICAgICAgIG5lZWRlZCBmb3Igb3RoZXIgbm9kZXMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG90aGVyIG5vZGVzIHRoYXQgaGF2ZSBhIHBvdGVudGlhbGx5XG4gICAgICAgbGFyZ2UgYW5kIGR5bmFtaWMgc2V0IG9mIGNoaWxkcmVuLiAqKVxuICAgIG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGV0aGVyIHdlIHdpbGwgZmlyZSB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzIGZvciBhbGwgY2hpbGRyZW4gd2hlbiB0aGUgbm9kZSBvZiBbdF1cbiAgICAgICBpdHNlbGYgcnVucy4gIFVzZWQgdG8gbWFrZSBzdXJlIHdlIHJlcnVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgW3RdIHN3aXRjaGVzIGZyb21cbiAgICAgICB1bm9ic2VydmFibGUgYW5kIGJhY2sgdG8gb2JzZXJ2YWJsZS4gKilcbiAgICBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50XG4gICAgICBfaW52YXJpYW50X2FcbiAgICAgIHsgZiA9IF9cbiAgICAgIDsgY2hpbGRyZW5cbiAgICAgIDsgbnVtX2NoaWxkcmVuXG4gICAgICA7IGZvcmNlX3N0YWxlID0gX1xuICAgICAgOyBudW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IF9cbiAgICAgIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSBfXG4gICAgICB9XG4gID1cbiAgYXNzZXJ0IChudW1fY2hpbGRyZW4gPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggY2hpbGRyZW4pO1xuICBpZ25vcmUgbnVtX2ludmFsaWRfY2hpbGRyZW47XG4gICgqIGludmFyaWFudCBpcyBiZWxvdywgYmVjYXVzZSB3ZSBuZWVkIHNvbWUgY29udGV4dCAqKVxuICBVbmlmb3JtX2FycmF5Lml0ZXJpIGNoaWxkcmVuIH5mOihmdW4gaSB1b3B0IC0+XG4gICAgbWF0Y2ggaSA8IG51bV9jaGlsZHJlbiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biB1b3B0IGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChVb3B0LnZhbHVlX2V4biByLmluZGV4KSB+ZXhwZWN0OmlcbiAgICB8IGZhbHNlIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHVvcHQpKVxuOztcblxubGV0IGludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlbiB0IH5pc19uZWNlc3NhcnkgPVxuICBsZXQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBudW1faW52YWxpZF9jaGlsZHJlbjsgXyB9ID0gdCBpblxuICBpZiBub3QgaXNfbmVjZXNzYXJ5XG4gIHRoZW4gWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OjBcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X2ludmFsaWRfY2hpbGRyZW4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBudW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCByLmNoaWxkKSB0aGVuIGluY3IgY291bnRfaW52YWxpZF9jaGlsZHJlblxuICAgIGRvbmU7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OiFjb3VudF9pbnZhbGlkX2NoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPVxuICB7IGZcbiAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZVxuICA7IGNoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5lbXB0eVxuICA7IG51bV9jaGlsZHJlbiA9IDBcbiAgOyBmb3JjZV9zdGFsZSA9IGZhbHNlXG4gIDsgbnVtX2ludmFsaWRfY2hpbGRyZW4gPSAwXG4gIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0cnVlXG4gIH1cbjs7XG5cbmxldCBtYWtlX3N0YWxlIHQgPVxuICBpZiB0LmZvcmNlX3N0YWxlXG4gIHRoZW4gYEFscmVhZHlfc3RhbGVcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAgIGBPaylcbjs7XG5cbmxldCBpbmNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiArIDFcbmxldCBkZWNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiAtIDFcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fY2hpbGRyZW4gPj0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fY2hpbGRyZW4gPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heCA9IEludC5tYXggMiAoMiAqIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW4pIGluXG4gICAgdC5jaGlsZHJlbiA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5jaGlsZHJlbiB+bGVuOm5ld19tYXgpXG47O1xuXG5sZXQgYWRkX2NoaWxkX2VkZ2UgdCBwYWNrZWRfZWRnZSA9XG4gIGxldCAoRSBlZGdlKSA9IHBhY2tlZF9lZGdlIGluXG4gIGFzc2VydCAoVW9wdC5pc19ub25lIGVkZ2UuaW5kZXgpO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdDtcbiAgbGV0IG5ld19jaGlsZF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5zb21lIG5ld19jaGlsZF9pbmRleDtcbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5jaGlsZHJlbiBuZXdfY2hpbGRfaW5kZXggKFVvcHQuc29tZSBwYWNrZWRfZWRnZSk7XG4gIHQubnVtX2NoaWxkcmVuIDwtIHQubnVtX2NoaWxkcmVuICsgMTtcbiAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAoKiBXZSB3aWxsIGJ1bXAgdGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIGlmIG5lY2Vzc2FyeSB3aGVuIGNvbm5lY3RpbmcgY2hpbGQgYW5kXG4gICAgIHBhcmVudC4gIFNhbWUgdGhpbmcgZm9yIHJ1bm5pbmcgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcy4gKilcbiAgbmV3X2NoaWxkX2luZGV4XG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbiB0IH5jaGlsZF9pbmRleDEgfmNoaWxkX2luZGV4MiA9XG4gIGxldCAoRSBlZGdlMSkgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEpIGluXG4gIGxldCAoRSBlZGdlMikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDIpIGluXG4gIGVkZ2UxLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDI7XG4gIGVkZ2UyLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDE7XG4gIFVuaWZvcm1fYXJyYXkuc3dhcCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MSBjaGlsZF9pbmRleDJcbjs7XG5cbmxldCBsYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4KVxuOztcblxubGV0IHJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBsZXQgcGFja2VkX2VkZ2Vfb3B0ID0gVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4IGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoaWxkcmVuIDwtIGxhc3RfaW5kZXg7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgcGFja2VkX2VkZ2Vfb3B0KTtcbiAgbGV0IChFIGVkZ2UpID0gVW9wdC51bnNhZmVfdmFsdWUgcGFja2VkX2VkZ2Vfb3B0IGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5ub25lXG47O1xuXG5sZXQgYmVmb3JlX21haW5fY29tcHV0YXRpb24gdCA9XG4gIGlmIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPiAwXG4gIHRoZW4gYEludmFsaWRcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSBmYWxzZTtcbiAgICBsZXQgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIGluXG4gICAgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA8LSBmYWxzZTtcbiAgICBpZiB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICAgIHRoZW5cbiAgICAgIGZvciBpID0gMCB0byB0Lm51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gaSkgaW5cbiAgICAgICAgci5vbl9jaGFuZ2UgKFVvcHQudmFsdWVfZXhuIHIuY2hpbGQudmFsdWVfb3B0KVxuICAgICAgZG9uZTtcbiAgICBgT2spXG47O1xuXG5sZXQgb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgdCB+aXNfbm93X29ic2VydmFibGUgPVxuICB0Lm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIH5pc19ub3dfb2JzZXJ2YWJsZTtcbiAgaWYgbm90IGlzX25vd19vYnNlcnZhYmxlXG4gIHRoZW4gKFxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gdHJ1ZTtcbiAgICAoKiBJZiB3ZSBkb24ndCByZXNldCBudW1faW52YWxpZF9jaGlsZHJlbiwgd2Ugd291bGQgZG91YmxlIGNvdW50IHRoZW06IGp1c3QgaW1hZ2luZVxuICAgICAgIHdoYXQgaGFwcGVucyB3ZSBpZiByZWNvbm5lY3QvZGlzY29ubmVjdC9yZWNvbm5lY3QvZGlzY29ubmVjdCB3aXRoIGFuIGludmFsaWRcbiAgICAgICBjaGlsZC4gKilcbiAgICB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIDApXG47O1xuXG5sZXQgcnVuX2VkZ2VfY2FsbGJhY2sgdCB+Y2hpbGRfaW5kZXggPVxuICBpZiBub3QgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICB0aGVuIChcbiAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleCkgaW5cbiAgICAoKiBUaGlzIHZhbHVlIGlzIG5vdCBuZWNlc3NhcmlseSBzZXQsIGJlY2F1c2Ugd2UgdHJ5IHRvIHJ1biB0aGlzIHdoZW4gY29ubmVjdGluZyB0aGVcbiAgICAgICBub2RlIHRvIGl0cyBjaGlsZHJlbiwgd2hpY2ggY291bGQgYmUgYmVmb3JlIHRoZXkgaGF2ZSBydW4gZXZlbiBvbmNlLiAgQWxzbyB0aGUgbm9kZVxuICAgICAgIGNvdWxkIGJlIGludmFsaWQuICopXG4gICAgaWYgVW9wdC5pc19zb21lIHIuY2hpbGQudmFsdWVfb3B0XG4gICAgdGhlbiByLm9uX2NoYW5nZSAoVW9wdC51bnNhZmVfdmFsdWUgci5jaGlsZC52YWx1ZV9vcHQpKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbmluY2x1ZGUgVHlwZXMuU2NvcGVcblxubGV0IHRvcCA9IFRvcFxuXG5sZXQgaXNfdG9wID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuOztcblxuKCogVW5saWtlIGZvciBub2RlcywgdGhlcmUgaXMgbm8gaW52YXJpYW50IFtpc19uZWNlc3NhcnkgdCA8PT4gaGVpZ2h0ID4gLTFdIChkb2Vzbid0IHdvcmtcbiAgIGJlY2F1c2Ugb2YgW1RvcF0pLiAgVGhpcyBpcyBmaW5lIHNpbmNlIHRoZSBoZWlnaHQgb2YgYSBzY29wZSBpcyBvbmx5IHVzZWQgdG8gY29uc3RyYWluXG4gICBvdGhlciBoZWlnaHRzLCBub3QgdG8gc2NoZWR1bGUgaXQuICopXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gLTFcbiAgfCBCaW5kIGJpbmQgLT4gYmluZC5saHNfY2hhbmdlLmhlaWdodFxuOztcblxubGV0IGlzX3ZhbGlkID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmlzX3ZhbGlkIGJpbmRcbjs7XG5cbmxldCBpc19uZWNlc3NhcnkgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBiaW5kIC0+IE5vZGUuaXNfbmVjZXNzYXJ5IGJpbmQubWFpblxuOztcblxubGV0IGFkZF9ub2RlIHQgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBhc3NlcnQgKHBoeXNfZXF1YWwgbm9kZS5jcmVhdGVkX2luIHQpO1xuICBtYXRjaCB0IHdpdGhcbiAgfCBUb3AgLT4gKClcbiAgfCBCaW5kIGJpbmQgLT5cbiAgICBub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzO1xuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQuc29tZSAoVHlwZXMuTm9kZS5QYWNrZWQuVCBub2RlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5GcmVlemUudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gZnJlZXppbmcgYW4gaW52YWxpZCB2YWx1ZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBvbiBiZWNvbWluZyBmcm96ZW4gKilcbiAgICAgICAgICAgfCBGcmVlemUgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfm9ubHlfZnJlZXplX3doZW46aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JZl90aGVuX2Vsc2UudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IHRlc3QgOiBib29sIE5vZGUudFxuICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90aGVuX2Vsc2UgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiAoKSkpXG4gICAgICB+dGVzdDppZ25vcmVcbiAgICAgIH50ZXN0X2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKHRlc3RfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHRlc3RfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y3VycmVudF9icmFuY2g6XG4gICAgICAgIChjaGVjayAoZnVuIGN1cnJlbnRfYnJhbmNoIC0+XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgY3VycmVudF9icmFuY2ggPSBVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaCBpblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnRfYnJhbmNoIHQudGhlbl8gfHwgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LmVsc2VfKSkpKVxuICAgICAgfnRoZW5fOmlnbm9yZVxuICAgICAgfmVsc2VfOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSm9pbi50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU25hcHNob3QudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgYmVmb3JlIDogJ2FcbiAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChTY29wZS5pc190b3AgbWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBzbmFwc2hvdHRpbmcgYW4gaW52YWxpZCBub2RlICopXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIGFmdGVyIHRoZSBzbmFwc2hvdCAqKVxuICAgICAgICAgICB8IFNuYXBzaG90IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5iZWZvcmU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX2F0Omlnbm9yZVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuS2luZC50ID1cbiAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gIHwgQ29uc3Qgb2YgJ2FcbiAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gIHwgSW52YWxpZFxuICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXA0IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50ICogJ2E0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDUgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDYgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDcgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDggOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDkgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEwIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDExIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhMTEgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTIgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEzIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTQgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAqICdhMTQgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTUgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2ExNVxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5hbWUgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEFycmF5X2ZvbGQgXyAtPiBcIkFycmF5X2ZvbGRcIlxuICB8IEF0IF8gLT4gXCJBdFwiXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gXCJBdF9pbnRlcnZhbHNcIlxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IFwiQmluZF9saHNfY2hhbmdlXCJcbiAgfCBCaW5kX21haW4gXyAtPiBcIkJpbmRfbWFpblwiXG4gIHwgQ29uc3QgXyAtPiBcIkNvbnN0XCJcbiAgfCBFeHBlcnQgXyAtPiBcIkV4cGVydFwiXG4gIHwgRnJlZXplIF8gLT4gXCJGcmVlemVcIlxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gXCJJZl90ZXN0X2NoYW5nZVwiXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gXCJJZl90aGVuX2Vsc2VcIlxuICB8IEludmFsaWQgLT4gXCJJbnZhbGlkXCJcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBcIkpvaW5fbGhzX2NoYW5nZVwiXG4gIHwgSm9pbl9tYWluIF8gLT4gXCJKb2luX21haW5cIlxuICB8IE1hcCBfIC0+IFwiTWFwXCJcbiAgfCBNYXAyIF8gLT4gXCJNYXAyXCJcbiAgfCBNYXAzIF8gLT4gXCJNYXAzXCJcbiAgfCBNYXA0IF8gLT4gXCJNYXA0XCJcbiAgfCBNYXA1IF8gLT4gXCJNYXA1XCJcbiAgfCBNYXA2IF8gLT4gXCJNYXA2XCJcbiAgfCBNYXA3IF8gLT4gXCJNYXA3XCJcbiAgfCBNYXA4IF8gLT4gXCJNYXA4XCJcbiAgfCBNYXA5IF8gLT4gXCJNYXA5XCJcbiAgfCBNYXAxMCBfIC0+IFwiTWFwMTBcIlxuICB8IE1hcDExIF8gLT4gXCJNYXAxMVwiXG4gIHwgTWFwMTIgXyAtPiBcIk1hcDEyXCJcbiAgfCBNYXAxMyBfIC0+IFwiTWFwMTNcIlxuICB8IE1hcDE0IF8gLT4gXCJNYXAxNFwiXG4gIHwgTWFwMTUgXyAtPiBcIk1hcDE1XCJcbiAgfCBTbmFwc2hvdCBfIC0+IFwiU25hcHNob3RcIlxuICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBcIlN0ZXBfZnVuY3Rpb25cIlxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gXCJVbmluaXRpYWxpemVkXCJcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IFwiVW5vcmRlcmVkX2FycmF5X2ZvbGRcIlxuICB8IFZhciBfIC0+IFwiVmFyXCJcbjs7XG5cbmxldCBpbnZhcmlhbnQgOiB0eXBlIGEuIGEgSW52YXJpYW50LnQgLT4gYSB0IEludmFyaWFudC50ID1cbiAgZnVuIGludmFyaWFudF9hIHQgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IEFycmF5X2ZvbGQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBhcnJheV9mb2xkXG4gIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuICB8IEJpbmRfbWFpbiBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBiaW5kXG4gIHwgQ29uc3QgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LmludmFyaWFudCBpbnZhcmlhbnRfYSBlXG4gIHwgRnJlZXplIGZyZWV6ZSAtPiBGcmVlemUuaW52YXJpYW50IGludmFyaWFudF9hIGZyZWV6ZVxuICB8IElmX3Rlc3RfY2hhbmdlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGlnbm9yZSBpZl90aGVuX2Vsc2VcbiAgfCBJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlIC0+IElmX3RoZW5fZWxzZS5pbnZhcmlhbnQgaW52YXJpYW50X2EgaWZfdGhlbl9lbHNlXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSBqb2luIC0+IEpvaW4uaW52YXJpYW50IGlnbm9yZSBqb2luXG4gIHwgSm9pbl9tYWluIGpvaW4gLT4gSm9pbi5pbnZhcmlhbnQgaW52YXJpYW50X2Egam9pblxuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfIC0+ICgpXG4gIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGludmFyaWFudF9hIHNuYXBzaG90XG4gIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGludmFyaWFudF9hIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gKClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1bm9yZGVyZWRfYXJyYXlfZm9sZCAtPlxuICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgfCBWYXIgdmFyIC0+IFZhci5pbnZhcmlhbnQgaWdub3JlIHZhclxuOztcblxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF0IF8gLT4gMFxuICB8IEF0X2ludGVydmFscyBfIC0+IDBcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgQmluZF9tYWluIF8gLT4gMlxuICB8IENvbnN0IF8gLT4gMFxuICB8IEV4cGVydCBfIC0+IDBcbiAgfCBGcmVlemUgXyAtPiAxXG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiAxXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gMlxuICB8IEludmFsaWQgLT4gMFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IDFcbiAgfCBKb2luX21haW4gXyAtPiAyXG4gIHwgTWFwIF8gLT4gMVxuICB8IE1hcDIgXyAtPiAyXG4gIHwgTWFwMyBfIC0+IDNcbiAgfCBNYXA0IF8gLT4gNFxuICB8IE1hcDUgXyAtPiA1XG4gIHwgTWFwNiBfIC0+IDZcbiAgfCBNYXA3IF8gLT4gN1xuICB8IE1hcDggXyAtPiA4XG4gIHwgTWFwOSBfIC0+IDlcbiAgfCBNYXAxMCBfIC0+IDEwXG4gIHwgTWFwMTEgXyAtPiAxMVxuICB8IE1hcDEyIF8gLT4gMTJcbiAgfCBNYXAxMyBfIC0+IDEzXG4gIHwgTWFwMTQgXyAtPiAxNFxuICB8IE1hcDE1IF8gLT4gMTVcbiAgfCBTbmFwc2hvdCBfIC0+IDBcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gMVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gMFxuICB8IFZhciBfIC0+IDBcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBBcnJheS5sZW5ndGggY2hpbGRyZW5cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG47O1xuXG5sZXQgYmluZF9yaHNfY2hpbGRfaW5kZXggPSAxXG5sZXQgZnJlZXplX2NoaWxkX2luZGV4ID0gMFxubGV0IGlmX2JyYW5jaF9jaGlsZF9pbmRleCA9IDFcbmxldCBqb2luX3Joc19jaGlsZF9pbmRleCA9IDFcblxuKCogV2UgZG8gbm90IGltcGxlbWVudCB0aGUgdGltZS1iYXNlZCBub2RlcyAoW0F0XSwgW0F0X2ludGVydmFsc10sIFtTbmFwc2hvdF0sXG4gICBbU3RlcF9mdW5jdGlvbl0pIGFzIHBhcmVudHMgb2YgdGhlIGN1cnJlbnQtdGltZSBub2RlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgV2UgZG9uJ3RcbiAgIHdhbnQgYWxsIHN1Y2ggbm9kZXMgdG8gYmUgcmVjb21wdXRlZCB3aGVuZXZlciB0aGUgdGltZSBjaGFuZ2VzLCB3aGljaCB3b3VsZCBiZSBob3JyaWJseVxuICAgaW5uZWZpY2llbnQuICBJbnN0ZWFkLCB3ZSBvbmx5IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGF0IHRoZSBcInJpZ2h0XCIgdGltZSxcbiAgIGkuZS4gd2hlbiB0aW1lIHBhc3NlcyBzb21lIHRocmVzaG9sZCByZWxldmFudCB0byB0aGVtLiAgV2UgZG8gdGhpcyB2aWEgc2NoZWR1bGluZ1xuICAgYWxhcm1zIGF0IHRob3NlIHRocmVzaG9sZHMuICopXG5sZXQgaXRlcmlfY2hpbGRyZW4gKHR5cGUgYSkgKHQgOiBhIHQpIH4oZiA6IGludCAtPiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpIDogdW5pdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgQXQgXyAtPiAoKVxuICB8IEF0X2ludGVydmFscyBfIC0+ICgpXG4gIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT4gZiAwIChUIGJpbmQubGhzKVxuICB8IEJpbmRfbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgKCogVmFyaW91cyBjb2RlLCBlLmcuIFtzdGF0ZS5iZWNhbWVfbmVjZXNzYXJ5XSwgcmVsaWVzIG9uIHByb2Nlc3NpbmcgW2xoc19jaGFuZ2VdXG4gICAgICAgYmVmb3JlIFtyaHNdLiAqKVxuICAgIGYgMCAoVCBsaHNfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgcmhzIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSByaHMpKVxuICB8IENvbnN0IF8gLT4gKClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFeHBlcnQuRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGYgaSAoVCByLmNoaWxkKVxuICAgIGRvbmVcbiAgfCBGcmVlemUgeyBjaGlsZDsgXyB9IC0+IGYgMCAoVCBjaGlsZClcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBmIDAgKFQgdGVzdClcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGYgMCAoVCB0ZXN0X2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIGN1cnJlbnRfYnJhbmNoIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjdXJyZW50X2JyYW5jaCkpXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IGYgMCAoVCBsaHMpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgcmhzOyBfIH0gLT5cbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBTbmFwc2hvdCBfIC0+ICgpXG4gIHwgU3RlcF9mdW5jdGlvbiB7IGNoaWxkOyBfIH0gLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGQgdGhlbiBmIDAgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIGNoaWxkKSlcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgVmFyIF8gLT4gKClcbiAgfCBNYXAgKF8sIG5vZGUwKSAtPiBmIDAgKFQgbm9kZTApXG4gIHwgTWFwMiAoXywgbm9kZTAsIG5vZGUxKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKVxuICB8IE1hcDMgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMilcbiAgfCBNYXA0IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpXG4gIHwgTWFwNSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KVxuICB8IE1hcDYgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSlcbiAgfCBNYXA3IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNikgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpXG4gIHwgTWFwOCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KVxuICB8IE1hcDkgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOClcbiAgfCBNYXAxMCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTkpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KVxuICB8IE1hcDExIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4LCBub2RlOSwgbm9kZTEwKVxuICAgIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMClcbiAgfCBNYXAxMlxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTEgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKVxuICB8IE1hcDEzXG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTIgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMilcbiAgfCBNYXAxNFxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxMyApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKTtcbiAgICBmIDEzIChUIG5vZGUxMylcbiAgfCBNYXAxNVxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxM1xuICAgICAgLCBub2RlMTQgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpO1xuICAgIGYgMTQgKFQgbm9kZTE0KVxuOztcblxuKCogW3Nsb3dfZ2V0X2NoaWxkXSBpcyBvbmx5IHVzZWQgYnkgW05vZGUuaW52YXJpYW50XSwgc28gd2UgZG9uJ3QgbWluZCB1c2luZyBbd2l0aF9yZXR1cm5dXG4gICBhbmQgW2l0ZXJpX2NoaWxkcmVuXS4gIElmIHdlIGV2ZXIgbmVlZCBhIGZhc3QgW2dldF9jaGlsZF0sIHdlIGNvZGVkIGl0IGluIHJldlxuICAgNDhkYmZkMDNjOWM1LiAqKVxubGV0IHNsb3dfZ2V0X2NoaWxkIDogdHlwZSBhLiBhIHQgLT4gaW5kZXg6XyAtPiBOb2RlLlBhY2tlZC50ID1cbiAgZnVuIHQgfmluZGV4IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IFQgY2hpbGRyZW4uKGluZGV4KVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgbGV0IChFIGVkZ2UpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGluZGV4KSBpblxuICAgIFQgZWRnZS5jaGlsZFxuICB8IF8gLT5cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBpIGNoaWxkIC0+IGlmIGkgPSBpbmRleCB0aGVuIHIucmV0dXJuIGNoaWxkKTtcbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiS2luZC5zbG93X2dldF9jaGlsZCBnb3QgaW52YWxpZCBpbmRleFwiXG4gICAgICAgIChpbmRleCwgdClcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBfIHRdKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gS2luZFxubW9kdWxlIEludGVybmFsX29ic2VydmVyID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxub3BlbiBOb2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLk5vZGUudCA9XG4gIHsgKCogW2lkXSBpcyBhIHVuaXF1ZSBpZCBmb3IgdGhlIG5vZGUuICopXG4gICAgaWQgOiBOb2RlX2lkLnRcbiAgOyBzdGF0ZSA6IChUeXBlcy5TdGF0ZS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogVGhlIGZpZWxkcyBmcm9tIFtyZWNvbXB1dGVkX2F0XSB0byBbY3JlYXRlZF9pbl0gYXJlIGdyb3VwZWQgdG9nZXRoZXIgYW5kIGFyZSBpbiB0aGVcbiAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXJlIHVzZWQgYnkgW1N0YXRlLnJlY29tcHV0ZV0gVGhpcyBoYXMgYSBwb3NpdGl2ZSBwZXJmb3JtYW5jZVxuICAgICAgIGltcGFjdCBkdWUgdG8gY2FjaGUgZWZmZWN0cy4gIERvbid0IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlc2Ugbm9kZXMgd2l0aG91dFxuICAgICAgIHBlcmZvcm1hbmNlIHRlc3RpbmcuICopXG4gICAgKCogW3JlY29tcHV0ZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiBbdF0ncyB2YWx1ZSB3YXMgcmVjb21wdXRlZCwgZXZlbiBpZlxuICAgICAgIGl0IHdhcyBjdXQgb2ZmLiAqKVxuICAgIG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbdmFsdWVfb3B0XSBzdGFydHMgYXMgW25vbmVdLCBhbmQgdGhlIGZpcnN0IHRpbWUgW3RdIGlzIGNvbXB1dGVkIGl0IGlzIHNldCB0b1xuICAgICAgIFtzb21lXSwgYW5kIHJlbWFpbnMgW3NvbWVdIHRoZXJlYWZ0ZXIsIHVudGlsIFt0XSBpcyBpbnZhbGlkYXRlZCwgaWYgZXZlci4gKilcbiAgICBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtraW5kXSBpcyB0aGUga2luZCBvZiBEQUcgbm9kZSBbdF0gaXMuICBba2luZF0gaXMgbXV0YWJsZSBib3RoIGZvciBpbml0aWFsaXphdGlvblxuICAgICAgIGFuZCBiZWNhdXNlIGl0IGNhbiBjaGFuZ2UsIGUuZy4gaWYgW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgOyAoKiBbY2hhbmdlZF9hdF0gaXMgdGhlIGxhc3Qgc3RhYmlsaXphdGlvbiB3aGVuIHRoaXMgbm9kZSB3YXMgY29tcHV0ZWQgYW5kIG5vdCBjdXQgb2ZmLlxuICAgICAgIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IHdoZW4gW3RdJ3MgcGFyZW50cyBhcmUgc3RhbGUgYW5kIChiZWNhdXNlIGFsbCBwYXJlbnRzIGFyZVxuICAgICAgIG5lY2Vzc2FyeSkgbmVlZCB0byBiZSByZWNvbXB1dGVkLiAqKVxuICAgIG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbbnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgW0xpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXSBwbHVzIHRoZSBudW1iZXIgb2ZcbiAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgc3VtbWVkIG92ZXIgYWxsIG9ic2VydmVycyBpbiBbdC5vYnNlcnZlcnNdLiAgSXQgaXMgdXNlZCB0b1xuICAgICAgIHF1aWNrbHkgZGVjaWRlIHdoZXRoZXIgW3RdIG5lZWRzIHRvIGJlIGFkZGVkIHRvIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl1cbiAgICAgICB3aGVuIFt0XSBjaGFuZ2VzLiAgW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdpbGwgZGVjcmVhc2Ugd2hlbiBhbiBvYnNlcnZlciBpc1xuICAgICAgIHJlbW92ZWQgZnJvbSBbdC5vYnNlcnZlcnNdLCBpZiB0aGUgb2JzZXJ2ZXIgaGFzIG9uLXVwZGF0ZSBoYW5kbGVycy4gKilcbiAgICBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgOyAoKiBUaGUgcGFyZW50cyBvZiBbdF0gYXJlIHRoZSBub2RlcyB0aGF0IGRlcGVuZCBvbiBpdCwgYW5kIHNob3VsZCBiZSBjb21wdXRlZCB3aGVuIFt0XVxuICAgICAgIGNoYW5nZXMsIG9uY2UgYWxsIG9mIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSB1cCB0byBkYXRlLiAgW251bV9wYXJlbnRzXSBpcyB0aGVcbiAgICAgICBudW1iZXIgb2YgcGFyZW50cy4gIElmIFtudW1fcGFyZW50cyA+PSAxXSwgdGhlbiBbcGFyZW50MF0gaXMgdGhlIGZpcnN0IHBhcmVudC5cbiAgICAgICBbcGFyZW50MV9hbmRfYmV5b25kXSBob2xkcyB0aGUgcmVtYWluaW5nIHBhcmVudHMuICBUaGUgb3JkZXIgb2YgdGhlIHBhcmVudHMgZG9lc24ndFxuICAgICAgIG1hdHRlci4gIE9uZSBub2RlIG1heSBvY2N1ciBtdWx0aXBsZSB0aW1lcyBhcyBhIHBhcmVudCBvZiBhbm90aGVyIChlLmcuIGNvbnNpZGVyXG4gICAgICAgW21hcDIgbjEgbjEgfmZdKS5cblxuICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgb3B0aW1pemVkIGZvciB0aGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgdGhhdCBhIG5vZGUgaGFzXG4gICAgICAgb25seSBvbmUgcGFyZW50LiAqKVxuICAgIG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgOyBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IFBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIHBhcmVudDAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbY3JlYXRlZF9pbl0gaXMgaW5pdGlhbGx5IHRoZSBzY29wZSB0aGF0IHRoZSBub2RlIGlzIGNyZWF0ZWQgaW4uICBJZiBhIG5vZGUgaXNcbiAgICAgICBsYXRlciBcInJlc2NvcGVkXCIsIHRoZW4gY3JlYXRlZF9pbiB3aWxsIGJlIGFkanVzdGVkIHRvIHRoZSBuZXcgc2NvcGUgdGhhdCB0aGUgbm9kZVxuICAgICAgIGlzIHBhcnQgb2YuICopXG4gICAgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICA7ICgqIFtuZXh0X25vZGVfaW5fc2FtZV9zY29wZV0gc2luZ2x5IGxpbmtzIGFsbCBub2RlcyBjcmVhdGVkIGluIFt0LmNyZWF0ZWRfaW5dLiAqKVxuICAgIG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0XSBpcyB1c2VkIHRvIHZpc2l0IG5vZGVzIGluIHRvcG9sb2dpY2FsIG9yZGVyLiAgSWYgW2lzX25lY2Vzc2FyeSB0XSwgdGhlblxuICAgICAgIFtoZWlnaHQgPiBjLmhlaWdodF0gZm9yIGFsbCBjaGlsZHJlbiBbY10gb2YgW3RdLCBhbmQgW2hlaWdodCA+IFNjb3BlLmhlaWdodFxuICAgICAgIHQuY3JlYXRlZF9pbl0uICBJZiBbbm90IChpc19uZWNlc3NhcnkgdCldLCB0aGVuIFtoZWlnaHQgPSAtMV0uICopXG4gICAgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgOyAoKiBbaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSBpcyB0aGUgaGVpZ2h0IGF0IHdoaWNoIFt0XSBpcyBzdG9yZWQgaW4gdGhlIHJlY29tcHV0ZVxuICAgICAgIGhlYXAsIGFuZCBpcyBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBJZiBbdF0gaXMgdGhlXG4gICAgICAgcmVjb21wdXRlIGhlYXAsIHRoZW4gdHlwaWNhbGx5IFt0LmhlaWdodCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXTsgaG93ZXZlcixcbiAgICAgICB3aGlsZSBoZWlnaHQgaXMgYmVpbmcgYWRqdXN0ZWQsIG9uZSBjYW4gdGVtcG9yYXJpbHkgaGF2ZSBbdC5oZWlnaHQgPlxuICAgICAgIHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXS4gIFdoZW4gaGVpZ2h0IGFkanVzdG1lbnQgZmluaXNoZXMsIGVxdWFsaXR5IGlzIHJlc3RvcmVkXG4gICAgICAgYnkgaW5jcmVhc2luZyBbdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdIHRvIFt0LmhlaWdodF0gYW5kIHNoaWZ0aW5nIFt0XSdzXG4gICAgICAgcG9zaXRpb24gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gIDsgKCogW3ByZXZfaW5fcmVjb21wdXRlX2hlYXBdIGFuZCBbbmV4dF9pbl9yZWNvbXB1dGVfaGVhcF0gZG91Ymx5IGxpbmsgYWxsIG5vZGVzIG9mIHRoZVxuICAgICAgIHNhbWUgaGVpZ2h0IGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIGlzIHVzZWQgb25seSBkdXJpbmcgaGVpZ2h0IGFkanVzdG1lbnQsIGFuZCBpc1xuICAgICAgIG5vbi1uZWdhdGl2ZSBpZmYgW3RdIGlzIGluIHRoZSBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAgSXQgaG9sZHMgdGhlIHByZS1hZGp1c3RlZFxuICAgICAgIGhlaWdodCBvZiBbdF0uICopXG4gICAgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICA7ICgqIFtuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgb2YgdGhlIHNhbWUgaGVpZ2h0IGluIHRoZVxuICAgICAgIGFkanVzdC1oZWlnaHRzIGhlYXAuICopXG4gICAgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbb2xkX3ZhbHVlX29wdF0gaXMgdXNlZCBvbmx5IGR1cmluZyBzdGFiaWxpemF0aW9uLCBhbmQgb25seSBpZlxuICAgICAgIFt0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXS4gIEl0IGhvbGRzIHRoZSBwcmUtc3RhYmlsaXphdGlvbiB2YWx1ZSBvZiBbdF0uICBJdFxuICAgICAgIGlzIGNsZWFyZWQgd2hlbiBydW5uaW5nIFt0XSdzIG9uLXVwZGF0ZSBoYW5kbGVycywgYW5kIHNvIGlzIGFsd2F5cyBbVW9wdC5ub25lXVxuICAgICAgIGJldHdlZW4gc3RhYmlsaXphdGlvbnMuICopXG4gICAgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gIDsgKCogW29ic2VydmVyc10gaXMgdGhlIGhlYWQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBvYnNlcnZlcnMgb2YgW3RdLCBvclxuICAgICAgIFtVb3B0Lm5vbmVdIGlmIHRoZXJlIGFyZSBubyBvYnNlcnZlcnMuICopXG4gICAgbXV0YWJsZSBvYnNlcnZlcnMgOiAoJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyAoKiBbaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGlzIHVzZWQgdG8gYXZvaWQgcHVzaGluZyB0aGUgc2FtZSBub2RlIG11bHRpcGxlXG4gICAgICAgdGltZXMgb250byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gIDsgKCogW29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgdGhlIGZ1bmN0aW9ucyBzdXBwbGllZCB0byBbSW5jcmVtZW50YWwub25fdXBkYXRlXSB0byBiZSBydW5cbiAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZHVsZSBbT25fdXBkYXRlX2hhbmRsZXJdLiAgW29uX3VwZGF0ZV9oYW5kbGVyc10gZG9lcyBub3RcbiAgICAgICBjb250YWluIHRoZSBvbi11cGRhdGUgaGFuZGxlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIG9ubHkgZXZlclxuICAgICAgIGdldHMgbG9uZ2VyOyB0aGVyZSBpcyBubyB3YXkgdG8gcmVtb3ZlIGVsZW1lbnRzLiAqKVxuICAgIG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHBhY2tlZF9zYW1lIChQYWNrZWQuVCB0MSkgKFBhY2tlZC5UIHQyKSA9IHNhbWUgdDEgdDJcbmxldCBpc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeVxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuIHQgPSBLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIHQua2luZFxubGV0IGl0ZXJpX2NoaWxkcmVuIHQgfmYgPSBLaW5kLml0ZXJpX2NoaWxkcmVuIHQua2luZCB+ZlxubGV0IGlzX3ZhbGlkID0gTm9kZS5pc192YWxpZFxubGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lID0gdHlwZV9lcXVhbF9pZl9waHlzX3NhbWVcblxubGV0IHVzZXJfaW5mbyB0ID1cbiAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKEluZm8gaSkgLT4gU29tZSBpXG4gIHwgU29tZSBvdGhlciAtPiBTb21lIChJbmZvLmNyZWF0ZV9zIChEb3RfdXNlcl9pbmZvLnNleHBfb2ZfdCBvdGhlcikpXG47O1xuXG5sZXQgc2V0X3VzZXJfaW5mbyB0IGluZm8gPVxuICB0LnVzZXJfaW5mb1xuICA8LSAobWF0Y2ggaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPiBTb21lIChJbmZvIGkpKVxuOztcblxubGV0IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdCB+bGFiZWwgfmF0dHJzID1cbiAgbGV0IG5ld18gPSBEb3RfdXNlcl9pbmZvLmRvdCB+bGFiZWwgfmF0dHJpYnV0ZXM6YXR0cnMgaW5cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBuZXdfXG4gICAgfCBTb21lIG90aGVyIC0+IFNvbWUgKERvdF91c2VyX2luZm8uYXBwZW5kIG90aGVyIG5ld18pKVxuOztcblxubGV0IGVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQgPVxuICBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoaWxkLmNoYW5nZWRfYXQgcGFyZW50LnJlY29tcHV0ZWRfYXQgPiAwXG47O1xuXG5sZXQgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdCA9XG4gIGxldCBpc19zdGFsZSA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICBpZiBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50OnQgdGhlbiBpc19zdGFsZSA6PSB0cnVlKTtcbiAgIWlzX3N0YWxlXG47O1xuXG5sZXQgaXNfc3RhbGUgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuICh0IDogYSB0KSAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICgqIEEgY29uc3Qgbm9kZSBpcyBzdGFsZSBvbmx5IGF0IGluaXRpYWxpemF0aW9uLiAqKVxuICB8IENvbnN0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogVGltZS1iYXNlZCBub2RlcyBhcmUgY29uc2lkZXJlZCBzdGFsZSB3aGVuIFt0LnJlY29tcHV0ZWRfYXRdIGlzIG5vbmUsIHdoaWNoIGhhcHBlbnNcbiAgICAgYXQgaW5pdGlhbGl6YXRpb24gYW5kIHdoZW4gdGhlIGFsYXJtIG1lY2hhbmlzbSBtYWtlcyBhIG5vZGUgc3RhbGUgKGl0IHNldHMgdGhlXG4gICAgIFt0LnJlY29tcHV0ZWRfYXRdIHRvIFtTdGFiaWxpemF0aW9uX251bS5ub25lXSkuICopXG4gIHwgQXQgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IEF0X2ludGVydmFscyBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gIHwgU25hcHNob3QgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAoKiBXZSBuZXZlciBjb25zaWRlciBhbiBpbnZhbGlkYXRlZCBub2RlIHRvIGJlIHN0YWxlIC0tIHdoZW4gd2UgaW52YWxpZGF0ZSBhIG5vZGUsIHdlXG4gICAgIGltbWVkaWF0ZWx5IHByb3BhZ2F0ZSBpbnZhbGlkaXR5IHRvIGl0cyBhbmNlc3RvcnMuICopXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBBIFtWYXJdIG5vZGUgaXMgc3RhbGUgaWYgaXQgd2FzIHNldCBzaW5jZSBpdCB3YXMgcmVjb21wdXRlZC4gKilcbiAgfCBWYXIgeyBzZXRfYXQ7IF8gfSAtPiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHNldF9hdCB0LnJlY29tcHV0ZWRfYXQgPiAwXG4gICgqIE5vZGVzIHRoYXQgaGF2ZSBjaGlsZHJlbi4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEJpbmRfbWFpbiBfXG4gIHwgRnJlZXplIF9cbiAgfCBJZl90aGVuX2Vsc2UgX1xuICB8IEpvaW5fbWFpbiBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEV4cGVydCB7IGZvcmNlX3N0YWxlOyBfIH0gLT5cbiAgICBmb3JjZV9zdGFsZVxuICAgIHx8IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICAgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuOztcblxubGV0IG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQgPSBpc19uZWNlc3NhcnkgdCAmJiBpc19zdGFsZSB0XG5sZXQgaXNfaW5fcmVjb21wdXRlX2hlYXAgdCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IDBcbmxldCBpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIHQgPSB0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcblxubGV0IGdldF9wYXJlbnQgdCB+aW5kZXggPVxuICBVb3B0LnZhbHVlX2V4blxuICAgIChpZiBpbmRleCA9IDAgdGhlbiB0LnBhcmVudDAgZWxzZSBVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSlcbjs7XG5cbmxldCBpdGVyaV9wYXJlbnRzIHQgfmYgPVxuICBpZiB0Lm51bV9wYXJlbnRzID4gMFxuICB0aGVuIChcbiAgICBmIDAgKFVvcHQudmFsdWVfZXhuIHQucGFyZW50MCk7XG4gICAgZm9yIGluZGV4ID0gMSB0byB0Lm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgZiBpbmRleCAoVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQucGFyZW50MV9hbmRfYmV5b25kIChpbmRleCAtIDEpKSlcbiAgICBkb25lKVxuOztcblxubGV0IGhhc19jaGlsZCB0IH5jaGlsZCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIGNoaWxkIGNoaWxkJyk7XG4gICFoYXNcbjs7XG5cbmxldCBoYXNfaW52YWxpZF9jaGlsZCB0ID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT4gaGFzIDo9ICFoYXMgfHwgbm90IChpc192YWxpZCBjaGlsZCkpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX3BhcmVudCAodCA6IF8gdCkgfnBhcmVudCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIHBhcmVudCBwYXJlbnQnKTtcbiAgIWhhc1xuOztcblxubGV0IHNob3VsZF9iZV9pbnZhbGlkYXRlZCA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuICopXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBdCBfIC0+IGZhbHNlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gZmFsc2VcbiAgfCBDb25zdCBfIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGZhbHNlXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBOb2RlcyB3aXRoIGEgZml4ZWQgc2V0IG9mIGNoaWxkcmVuIGFyZSBpbnZhbGlkIGlmIGFueSBjaGlsZCBpcyBpbnZhbGlkLiAqKVxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEZyZWV6ZSBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IGhhc19pbnZhbGlkX2NoaWxkIHRcbiAgKCogQSAqX2NoYW5nZSBub2RlIGlzIGludmFsaWQgaWYgdGhlIG5vZGUgaXQgaXMgd2F0Y2hpbmcgZm9yIGNoYW5nZXMgaXMgaW52YWxpZCAoc2FtZVxuICAgICByZWFzb24gYXMgYWJvdmUpLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIFtoYXNfaW52YWxpZF9jaGlsZCB0XS4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxocylcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIHRlc3QpXG4gIHwgSm9pbl9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gICgqIFtCaW5kX21haW5dLCBbSWZfdGhlbl9lbHNlXSwgYW5kIFtKb2luX21haW5dIGFyZSBpbnZhbGlkIGlmIHRoZWlyICpfY2hhbmdlIGNoaWxkIGlzLFxuICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IGlmIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSAtLSB0aGUgZ3JhcGggbWF5IGJlIHJlc3RydWN0dXJlZCB0b1xuICAgICBhdm9pZCB0aGUgaW52YWxpZGl0eSBvZiB0aG9zZS4gKilcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IElmX3RoZW5fZWxzZSB7IHRlc3RfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0X2NoYW5nZSlcbiAgfCBKb2luX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IEV4cGVydCBfIC0+XG4gICAgKCogVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgd2UgZG8gZm9yIGJpbmQgYWJvdmUsIGV4Y2VwdCB0aGF0IGFueSBpbnZhbGlkIGNoaWxkIGNhbiBiZVxuICAgICAgIHJlbW92ZWQsIHNvIHdlIGNhbiBvbmx5IHRlbGwgaWYgYW4gZXhwZXJ0IG5vZGUgYmVjb21lcyBpbnZhbGlkIHdoZW4gYWxsIGl0c1xuICAgICAgIGRlcGVuZGVuY2llcyBoYXZlIGZpcmVkICh3aGljaCBpbiBwcmFjdGljZSBtZWFucyB3aGVuIHdlIGFyZSBhYm91dCB0byBydW4gaXQpLiAqKVxuICAgIGZhbHNlXG47O1xuXG5sZXQgZm9sZF9vYnNlcnZlcnMgKHQgOiBfIHQpIH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgbGV0IGFjID0gcmVmIGluaXQgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGFjIDo9IGYgIWFjIG9ic2VydmVyXG4gIGRvbmU7XG4gICFhY1xuOztcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPSBmb2xkX29ic2VydmVycyB0IH5pbml0OigpIH5mOihmdW4gKCkgb2JzZXJ2ZXIgLT4gZiBvYnNlcnZlcilcblxubGV0IGludmFyaWFudCAodHlwZSBhKSAoaW52YXJpYW50X2EgOiBhIC0+IHVuaXQpICh0IDogYSB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgWyV0ZXN0X2VxOiBib29sXSAobmVlZHNfdG9fYmVfY29tcHV0ZWQgdCkgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpO1xuICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKHQuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHQuY3JlYXRlZF9pbik7XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IGNoaWxkLmhlaWdodCk7XG4gICAgICAgIGFzc2VydCAoaGFzX3BhcmVudCBjaGlsZCB+cGFyZW50OnQpKTtcbiAgICAgIGFzc2VydCAobm90IChzaG91bGRfYmVfaW52YWxpZGF0ZWQgdCkpKTtcbiAgICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBfIChUIHBhcmVudCkgLT5cbiAgICAgIGFzc2VydCAoaGFzX2NoaWxkIHBhcmVudCB+Y2hpbGQ6dCk7XG4gICAgICBhc3NlcnQgKGlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA8IHBhcmVudC5oZWlnaHQpKTtcbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOihjaGVjayBOb2RlX2lkLmludmFyaWFudClcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5yZWNvbXB1dGVkX2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+dmFsdWVfb3B0OlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9vcHQgLT5cbiAgICAgICAgICAgaWYgaXNfdmFsaWQgdCAmJiBub3QgKGlzX3N0YWxlIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFsdWVfb3B0KTtcbiAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgdmFsdWVfb3B0KSlcbiAgICAgIH5raW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBraW5kIC0+XG4gICAgICAgICAgIEtpbmQuaW52YXJpYW50IGludmFyaWFudF9hIGtpbmQ7XG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICB8IEV4cGVydCBlIC0+XG4gICAgICAgICAgICAgRXhwZXJ0LmludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlbiBlIH5pc19uZWNlc3Nhcnk6KGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfmN1dG9mZjooY2hlY2sgKEN1dG9mZi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfmNoYW5nZWRfYXQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNoYW5nZWRfYXQgLT5cbiAgICAgICAgICAgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50IGNoYW5nZWRfYXQ7XG4gICAgICAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmlzX3NvbWUgdC5yZWNvbXB1dGVkX2F0XG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoYW5nZWRfYXQgdC5yZWNvbXB1dGVkX2F0IDw9IDApKSlcbiAgICAgIH5udW1fb25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAoTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgKyBmb2xkX29ic2VydmVycyB0IH5pbml0OjAgfmY6KGZ1biBuIHsgb25fdXBkYXRlX2hhbmRsZXJzOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgICBuICsgTGlzdC5sZW5ndGggb25fdXBkYXRlX2hhbmRsZXJzKSkpKVxuICAgICAgfm51bV9wYXJlbnRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcGFyZW50cyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzIDw9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCkpKVxuICAgICAgfnBhcmVudDFfYW5kX2JleW9uZDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MV9hbmRfYmV5b25kIC0+XG4gICAgICAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHBhcmVudDFfYW5kX2JleW9uZCBkb1xuICAgICAgICAgICAgIFsldGVzdF9lcTogYm9vbF1cbiAgICAgICAgICAgICAgIChwYXJlbnRfaW5kZXggPCB0Lm51bV9wYXJlbnRzKVxuICAgICAgICAgICAgICAgKFVvcHQuaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgcGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnBhcmVudDA6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDAgLT5cbiAgICAgICAgICAgWyV0ZXN0X2VxOiBib29sXSAodC5udW1fcGFyZW50cyA+IDApIChVb3B0LmlzX3NvbWUgcGFyZW50MCkpKVxuICAgICAgfmNyZWF0ZWRfaW46KGNoZWNrIFNjb3BlLmludmFyaWFudClcbiAgICAgIH5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgLT5cbiAgICAgICAgICAgaWYgU2NvcGUuaXNfdG9wIHQuY3JlYXRlZF9pbiB8fCBub3QgKGlzX3ZhbGlkIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUpKSlcbiAgICAgIH5oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodCAtPlxuICAgICAgICAgICBpZiBpc19uZWNlc3NhcnkgdCB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IDApIGVsc2UgYXNzZXJ0IChoZWlnaHQgPSAtMSkpKVxuICAgICAgfmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IC0xKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPD0gdC5oZWlnaHQpKSlcbiAgICAgIH5wcmV2X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAocHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgcHJldikgPSBVb3B0LnZhbHVlX2V4biBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gcHJldi5uZXh0X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IHByZXYuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfm5leHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHQpIChVb3B0LnZhbHVlX2V4biBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXApKTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbmV4dC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApKSkpXG4gICAgICB+aGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIC0+XG4gICAgICAgICAgIGlmIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwgdC5oZWlnaHQpKSlcbiAgICAgIH5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcClcbiAgICAgICAgICAgZWxzZSBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBuZXh0KTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICAgICAgfm9sZF92YWx1ZV9vcHQ6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b2JzZXJ2ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biB7IHN0YXRlOyBvYnNlcnZpbmc7IF8gfSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCB0IG9ic2VydmluZyk7XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgfmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOmlnbm9yZVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczppZ25vcmVcbiAgICAgIH51c2VyX2luZm86aWdub3JlXG4gICAgICB+bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgICAgICB8IEV4cGVydCBfIC0+ICgpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuICAgICAgICAgICAgICAgIH5leHBlY3Q6KGluaXRpYWxfbnVtX2NoaWxkcmVuIHQpKTtcbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgICAoZ2V0X3BhcmVudFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkXG4gICAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuIEFycmF5Lml0ZXIgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IH5mOihmdW4geCAtPiBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgfmV4cGVjdDooVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQgKyAxKTtcbiAgICAgICAgICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gcGFyZW50X2luZGV4IChUIHBhcmVudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgKEtpbmQuc2xvd19nZXRfY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmtpbmRcbiAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlbiBBcnJheS5pdGVyIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+ZjooZnVuIHggLT4gYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+Zm9yY2VfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgfmNyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmUpXG47O1xuXG5sZXQgdW5zYWZlX3ZhbHVlIHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9vcHRcbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBnZXRfY3V0b2ZmIHQgPSB0LmN1dG9mZlxubGV0IHNldF9jdXRvZmYgdCBjdXRvZmYgPSB0LmN1dG9mZiA8LSBjdXRvZmZcblxubGV0IGlzX2NvbnN0IHQgPVxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IENvbnN0IF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBvbl91cGRhdGUgdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMVxuOztcblxubGV0IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgdCBub2RlX3VwZGF0ZSB+bm93ID1cbiAgbGV0IHIgPSByZWYgdC5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgIG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgciA6PSByZXN0O1xuICAgICAgT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGxldCByID0gcmVmIG9ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgICAgciA6PSByZXN0O1xuICAgICAgICAoKiBXZSBoYXZlIHRvIHRlc3QgW3N0YXRlXSBiZWZvcmUgZWFjaCBvbi11cGRhdGUgaGFuZGxlciwgYmVjYXVzZSBhbiBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlciBtaWdodCBkaXNhYmxlIGl0cyBvd24gb2JzZXJ2ZXIsIHdoaWNoIHNob3VsZCBwcmV2ZW50IG90aGVyIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVycyBpbiB0aGUgc2FtZSBvYnNlcnZlciBmcm9tIHJ1bm5pbmcuICopXG4gICAgICAgIChtYXRjaCBvYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBJbl91c2UgLT4gT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3cpXG4gICAgZG9uZVxuICBkb25lXG47O1xuXG5sZXQgc2V0X2tpbmQgdCBraW5kID1cbiAgdC5raW5kIDwtIGtpbmQ7XG4gIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gIDwtIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbjs7XG5cbmxldCBjcmVhdGUgc3RhdGUgY3JlYXRlZF9pbiBraW5kID1cbiAgbGV0IHQgPVxuICAgIHsgaWQgPSBOb2RlX2lkLm5leHQgKClcbiAgICA7IHN0YXRlXG4gICAgOyByZWNvbXB1dGVkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBraW5kXG4gICAgOyBjdXRvZmYgPSBDdXRvZmYucGh5c19lcXVhbFxuICAgIDsgY2hhbmdlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IG51bV9vbl91cGRhdGVfaGFuZGxlcnMgPSAwXG4gICAgOyBudW1fcGFyZW50cyA9IDBcbiAgICA7IHBhcmVudDFfYW5kX2JleW9uZCA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgICA7IHBhcmVudDAgPSBVb3B0Lm5vbmVcbiAgICA7IGNyZWF0ZWRfaW5cbiAgICA7IG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHQgPSAtMVxuICAgIDsgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gLTFcbiAgICA7IHByZXZfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgICA7IG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgb2xkX3ZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsgb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IGZhbHNlXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4ID1cbiAgICAgICAgQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuICAgICgqIFtteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhdIGhhcyBvbmUgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGhvbGRcbiAgICAgICB0aGUgY2hpbGQgaW5kZXggb2YgW3BhcmVudDBdLiAqKVxuICAgIDsgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4ID0gW3wgLTEgfF1cbiAgICA7IGZvcmNlX25lY2Vzc2FyeSA9IGZhbHNlXG4gICAgOyB1c2VyX2luZm8gPSBOb25lXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgPVxuICAgICAgICAoaWYgc3RhdGUua2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSB0aGVuIFNvbWUgKEJhY2t0cmFjZS5nZXQgKCkpIGVsc2UgTm9uZSlcbiAgICB9XG4gIGluXG4gIFNjb3BlLmFkZF9ub2RlIGNyZWF0ZWRfaW4gdDtcbiAgKCogW2ludmFyaWFudF0gZG9lcyBub3QgeWV0IGhvbGQgaGVyZSBiZWNhdXNlIG1hbnkgdXNlcyBvZiBbTm9kZS5jcmVhdGVdIHVzZSBba2luZCA9XG4gICAgIFVuaW5pdGlhbGl6ZWRdLCBhbmQgdGhlbiBtdXRhdGUgW3Qua2luZF0gbGF0ZXIuICopXG4gIHRcbjs7XG5cbmxldCBtYXhfbnVtX3BhcmVudHMgdCA9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZFxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fcGFyZW50cyA9IG1heF9udW1fcGFyZW50cyB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfbWF4X251bV9wYXJlbnRzID0gMiAqIG1heF9udW1fcGFyZW50cyB0IGluXG4gICAgdC5wYXJlbnQxX2FuZF9iZXlvbmRcbiAgICA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5wYXJlbnQxX2FuZF9iZXlvbmQgfmxlbjoobmV3X21heF9udW1fcGFyZW50cyAtIDEpO1xuICAgIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX3BhcmVudHMgKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9wYXJlbnRzIDwgbWF4X251bV9wYXJlbnRzIHQpXG47O1xuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgfmNoaWxkX2luZGV4ID1cbiAgbGV0IG1heF9udW1fY2hpbGRyZW4gPSBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggaW5cbiAgaWYgY2hpbGRfaW5kZXggPj0gbWF4X251bV9jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPSBtYXhfbnVtX2NoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heF9udW1fY2hpbGRyZW4gPSBJbnQubWF4IDIgKDIgKiBtYXhfbnVtX2NoaWxkcmVuKSBpblxuICAgIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX2NoaWxkcmVuICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPCBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG47O1xuXG5sZXQgc2V0X3BhcmVudCA6IHR5cGUgYS4gY2hpbGQ6YSB0IC0+IHBhcmVudDpQYWNrZWQudCBVb3B0LnQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgaWYgcGFyZW50X2luZGV4ID0gMFxuICB0aGVuIGNoaWxkLnBhcmVudDAgPC0gcGFyZW50XG4gIGVsc2UgVW5pZm9ybV9hcnJheS5zZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSBwYXJlbnRcbjs7XG5cbmxldCBsaW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDooVW9wdC5zb21lIChQYWNrZWQuVCBwYXJlbnQpKSB+cGFyZW50X2luZGV4O1xuICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gY2hpbGRfaW5kZXg7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSBwYXJlbnRfaW5kZXhcbjs7XG5cbmxldCB1bmxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OlVvcHQubm9uZSB+cGFyZW50X2luZGV4O1xuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gLTE7XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIC0xKVxuOztcblxubGV0IGFkZF9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSBwYXJlbnQgfmNoaWxkX2luZGV4O1xuICBsaW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4OmNoaWxkLm51bV9wYXJlbnRzO1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyArIDFcbjs7XG5cbmxldCByZW1vdmVfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQubnVtX3BhcmVudHMgPj0gMSk7XG4gIGxldCBwYXJlbnRfaW5kZXggPSBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHBhcmVudCkgKGdldF9wYXJlbnQgY2hpbGQgfmluZGV4OnBhcmVudF9pbmRleCkpO1xuICBsZXQgbGFzdF9wYXJlbnRfaW5kZXggPSBjaGlsZC5udW1fcGFyZW50cyAtIDEgaW5cbiAgaWYgcGFyZW50X2luZGV4IDwgbGFzdF9wYXJlbnRfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAobGFzdF9wYXJlbnRfaW5kZXggLSAxKSlcbiAgICBpblxuICAgIGxpbmtcbiAgICAgIH5jaGlsZFxuICAgICAgfmNoaWxkX2luZGV4OmNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4obGFzdF9wYXJlbnRfaW5kZXgpXG4gICAgICB+cGFyZW50XG4gICAgICB+cGFyZW50X2luZGV4KTtcbiAgdW5saW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4Omxhc3RfcGFyZW50X2luZGV4O1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyAtIDFcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kIHBhcmVudCB+Y2hpbGQxIH5jaGlsZF9pbmRleDEgfmNoaWxkMiB+Y2hpbGRfaW5kZXgyID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDEpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDEpKTtcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMikgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MikpKTtcbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSlcbiAgaW5cbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MilcbiAgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpID0gY2hpbGRfaW5kZXgxKTtcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPSBjaGlsZF9pbmRleDIpKTtcbiAgKCogbm93IHN0YXJ0IHN3YXBwaW5nICopXG4gIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpIDwtIGNoaWxkX2luZGV4MjtcbiAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPC0gY2hpbGRfaW5kZXgxO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDI7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MikgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMVxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYWNrZWQudCA9IFQgOiBfIFR5cGVzLk5vZGUudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIHRdXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcblxuICBtb2R1bGUgQXNfbGlzdCAoTSA6IHNpZ1xuICAgICAgdmFsIG5leHQgOiBQYWNrZWQudCAtPiBQYWNrZWQudCBVb3B0LnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gUGFja2VkLnQgVW9wdC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCBhYyA9IHJlZiBpbml0IGluXG4gICAgICBsZXQgciA9IHJlZiB0IGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IHBhY2tlZF9ub2RlID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBNLm5leHQgcGFja2VkX25vZGU7XG4gICAgICAgIGFjIDo9IGYgIWFjIHBhY2tlZF9ub2RlXG4gICAgICBkb25lO1xuICAgICAgIWFjXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBuIC0+IGYgbilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBpdGVyIHQgfmY6aW52YXJpYW50XG4gICAgbGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2IChmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyBuIC0+IG4gOjogYWMpKVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX2xpc3QgdCB8PiBbJXNleHBfb2Y6IFBhY2tlZC50IGxpc3RdXG4gIGVuZFxuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mID1cbiAgICBsZXQgc2VlbiA9IE5vZGVfaWQuSGFzaF9zZXQuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBpdGVyX2Rlc2NlbmRhbnRzIChUIHQpID1cbiAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlZW4gdC5pZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBIYXNoX3NldC5hZGQgc2VlbiB0LmlkO1xuICAgICAgICBmIChUIHQpO1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyB0IC0+IGl0ZXJfZGVzY2VuZGFudHMgdCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgdHMgfmY6aXRlcl9kZXNjZW5kYW50cztcbiAgICBzZWVuXG4gIDs7XG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHMgdHMgfmYgPSBpZ25vcmUgKGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgOiBfIEhhc2hfc2V0LnQpXG5cbiAgbW9kdWxlIERvdF91c2VyX2luZm8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERvdF91c2VyX2luZm9cblxuICAgIGxldCBkZWZhdWx0IH5uYW1lIHQgPVxuICAgICAgRG90X3VzZXJfaW5mby5kb3RcbiAgICAgICAgfmxhYmVsOlsgbmFtZTsgS2luZC5uYW1lIHQua2luZDsgc3ByaW50ZiBcImhlaWdodD0lZFwiIHQuaGVpZ2h0IF1cbiAgICAgICAgfmF0dHJpYnV0ZXM6U3RyaW5nLk1hcC5lbXB0eVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IChUIHQpID0gYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0XG5cbiAgbGV0IHByaW50X25vZGUgb3V0IH5uYW1lIHQgPVxuICAgIGxldCBkZWZhdWx0ID0gRG90X3VzZXJfaW5mby5kZWZhdWx0IH5uYW1lIHQgaW5cbiAgICBsZXQgaW5mbyA9XG4gICAgICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIHVzZXJfaW5mbyAtPiBEb3RfdXNlcl9pbmZvLmFwcGVuZCBkZWZhdWx0IHVzZXJfaW5mb1xuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCIlc1xcblwiIChEb3RfdXNlcl9pbmZvLnRvX3N0cmluZyB+bmFtZSAoRG90X3VzZXJfaW5mby50b19kb3QgaW5mbykpXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90IG91dCB0cyA9XG4gICAgbGV0IG5vZGVfbmFtZSA9XG4gICAgICBpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgIHRoZW4gZnVuIF8gLT4gXCJuIyMjXCJcbiAgICAgIGVsc2UgZnVuIG5vZGUgLT4gXCJuXCIgXiBOb2RlX2lkLnRvX3N0cmluZyBub2RlLmlkXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcImRpZ3JhcGggRyB7XFxuXCI7XG4gICAgZnByaW50ZiBvdXQgXCIgIHJhbmtkaXIgPSBCVFxcblwiO1xuICAgIGxldCBiaW5kX2VkZ2VzID0gcmVmIFtdIGluXG4gICAgbGV0IHNlZW4gPVxuICAgICAgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIGxldCBuYW1lID0gbm9kZV9uYW1lIHQgaW5cbiAgICAgICAgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdDtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgZnJvbV8pIC0+XG4gICAgICAgICAgZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzXFxuXCIgKG5vZGVfbmFtZSBmcm9tXykgbmFtZSk7XG4gICAgICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT5cbiAgICAgICAgICBCaW5kLml0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZCB+ZjooZnVuIHRvXyAtPlxuICAgICAgICAgICAgYmluZF9lZGdlcyA6PSAoVCB0LCB0b18pIDo6ICFiaW5kX2VkZ2VzKVxuICAgICAgICB8IF8gLT4gKCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgIWJpbmRfZWRnZXMgfmY6KGZ1biAoVCBmcm9tLCBUIHRvXykgLT5cbiAgICAgIGlmIEhhc2hfc2V0Lm1lbSBzZWVuIHRvXy5pZFxuICAgICAgdGhlbiBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXMgW3N0eWxlPWRhc2hlZF1cXG5cIiAobm9kZV9uYW1lIGZyb20pIChub2RlX25hbWUgdG9fKSk7XG4gICAgZnByaW50ZiBvdXQgXCJ9XFxuJSFcIlxuICA7O1xuXG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgdHMgPVxuICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOihmdW4gb3V0IC0+IHNhdmVfZG90IG91dCB0cylcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgQXNfcmVjb21wdXRlX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfcmVjb21wdXRlX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAoKiBXZSBkaXNwbGF5IHRoZSBzbWFsbGVzdCBwcmVmaXggb2YgW25vZGVzX2J5X2hlaWdodF0gdGhhdCBpbmNsdWRlcyBhbGwgbm9kZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuUmVjb21wdXRlX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgbGV0IGFjdHVhbF9sZW5ndGggPSByZWYgMCBpblxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdC5ub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBub2RlIC0+XG4gICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA6PSAhYWN0dWFsX2xlbmd0aCArIEFzX3JlY29tcHV0ZV9saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAgICAgICAgWyV0ZXN0X2VxOiBpbnRdIGxlbmd0aCAhYWN0dWFsX2xlbmd0aCkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vZGVzX2J5X2hlaWdodCAtPlxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIG5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIGhlaWdodCBub2RlIC0+XG4gICAgICAgICAgICAgQXNfcmVjb21wdXRlX2xpc3QuaXRlciBub2RlIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKSkpKSlcbjs7XG5cbmxldCBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIGZvciBpID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDEgZG9cbiAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBpKSlcbiAgICBkb25lO1xuICBsZXQgc3JjID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IGRzdCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICB+c3JjXG4gICAgfnNyY19wb3M6MFxuICAgIH5kc3RcbiAgICB+ZHN0X3BvczowXG4gICAgfmxlbjoobWluIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBzcmMpIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpKTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gZHN0O1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBtaW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdClcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9uZXh0IChwcmV2IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXh0ID1cbiAgaWYgVW9wdC5pc19zb21lIHByZXZcbiAgdGhlbiAoXG4gICAgbGV0IChUIHByZXYpID0gVW9wdC51bnNhZmVfdmFsdWUgcHJldiBpblxuICAgIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0KVxuOztcblxubGV0IHNldF9wcmV2IChuZXh0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5wcmV2ID1cbiAgaWYgVW9wdC5pc19zb21lIG5leHRcbiAgdGhlbiAoXG4gICAgbGV0IChUIG5leHQpID0gVW9wdC51bnNhZmVfdmFsdWUgbmV4dCBpblxuICAgIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBwcmV2KVxuOztcblxubGV0IGxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gaGVpZ2h0O1xuICBsZXQgbmV4dCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBpblxuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjooVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKVxuOztcblxubGV0IHVubGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IHByZXYgPSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgaWYgcGh5c19zYW1lXG4gICAgICAgKFVvcHQuc29tZSBub2RlKVxuICAgICAgIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcClcbiAgdGhlbiBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjtcbiAgc2V0X25leHQgcHJldiB+bmV4dDtcbiAgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZVxuOztcblxuKCogV2UgZG9uJ3Qgc2V0IFtub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBdIGhlcmUsIGJ1dCByYXRoZXIgYWZ0ZXIgY2FsbGluZyBbdW5saW5rXS4gKilcblxubGV0IGFkZCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB8fCBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IGF0dGVtcHQgdG8gYWRkIG5vZGUgdG8gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBoZWlnaHQgPCB0LmhlaWdodF9sb3dlcl9ib3VuZCB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGluayB0IG5vZGU7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHJlbW92ZSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpIHx8IE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgW3JlbW92ZV0gb2Ygbm9kZSBmcm9tIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICB1bmxpbmsgdCBub2RlO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgaW5jcmVhc2VfaGVpZ2h0ICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIGFzc2VydCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIHVubGluayB0IG5vZGU7XG4gIGxpbmsgdCBub2RlXG47O1xuXG5sZXQgbWluX2hlaWdodCB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgZWxzZSAoXG4gICAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gICAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGRvXG4gICAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDFcbiAgICBkb25lKTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmRcbjs7XG5cbmxldCByZW1vdmVfbWluIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IG5vZGUgPSByZWYgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lICFub2RlIGRvXG4gICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxO1xuICAgIGlmIGRlYnVnICYmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHVuZXhwZWN0ZWRseSByZWFjaGVkIGVuZCBvZiBoZWFwXCJcbiAgICAgICAgdFxuICAgICAgICBbJXNleHBfb2Y6IHRdO1xuICAgIG5vZGUgOj0gVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG4gIGRvbmU7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFub2RlIGluXG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQubm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6VW9wdC5ub25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG5tb2R1bGUgQXNfYWRqdXN0X2hlaWdodHNfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX2FkanVzdF9oZWlnaHRzX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBoZWlnaHQgbm9kZXMgLT5cbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pbnZhcmlhbnQgbm9kZXM7XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaXRlciBub2RlcyB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCk7XG4gICAgICAgICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlXG4gICAgICAgICAgdGhlbiBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICAgIFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW46KG1heF9oZWlnaHRfYWxsb3dlZCArIDEpIFVvcHQubm9uZVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlciB0IH5mOihmdW4gbm9kZSAtPiByIDo9ICFyICsgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgIXJcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BZGp1c3RfaGVpZ2h0c19oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPSBOb2Rlc19ieV9oZWlnaHQubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KSkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXhfaGVpZ2h0X3NlZW46XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9oZWlnaHRfc2VlbiAtPlxuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6KGNoZWNrIE5vZGVzX2J5X2hlaWdodC5pbnZhcmlhbnQpKVxuOztcblxubGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgeyBsZW5ndGggPSAwXG4gIDsgaGVpZ2h0X2xvd2VyX2JvdW5kID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMVxuICA7IG1heF9oZWlnaHRfc2VlbiA9IDBcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBtYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBpZiBtYXhfaGVpZ2h0X2FsbG93ZWQgPCB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIGxlc3MgdGhhbiB0aGUgbWF4IGhlaWdodCBhbHJlYWR5IHNlZW5cIlxuICAgICAgKG1heF9oZWlnaHRfYWxsb3dlZCwgYG1heF9oZWlnaHRfc2VlbiB0Lm1heF9oZWlnaHRfc2VlbilcbiAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4X2hlaWdodF9zZWVuIG9mIGludCBdXTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICB0Lm5vZGVzX2J5X2hlaWdodCA8LSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbjs7XG5cbmxldCBhZGRfdW5sZXNzX21lbSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gIHRoZW4gKFxuICAgIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICAgICgqIFdlIHByb2Nlc3Mgbm9kZXMgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBwcmUtYWRqdXN0ZWQgaGVpZ2h0LCBzbyBpdCBpcyBhIGJ1ZyBpZiB3ZVxuICAgICAgIGV2ZXIgdHJ5IHRvIGFkZCBhIG5vZGUgdGhhdCB3b3VsZCB2aW9sYXRlIHRoYXQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSB0LmhlaWdodF9sb3dlcl9ib3VuZCk7XG4gICAgKCogV2hlbmV2ZXIgd2Ugc2V0IGEgbm9kZSdzIGhlaWdodCwgd2UgdXNlIFtzZXRfaGVpZ2h0XSwgd2hpY2ggZW5mb3JjZXMgdGhpcy4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIGhlaWdodDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0O1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSkpXG47O1xuXG5sZXQgcmVtb3ZlX21pbl9leG4gdCA6IE5vZGUuUGFja2VkLnQgPVxuICBpZiBkZWJ1ZyAmJiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFkanVzdF9oZWlnaHRzX2hlYXAucmVtb3ZlX21pbiBvZiBlbXB0eSBoZWFwXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgciA9IHJlZiB0LmhlaWdodF9sb3dlcl9ib3VuZCBpblxuICB3aGlsZSBVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0ICFyKSBkb1xuICAgIGluY3IgclxuICBkb25lO1xuICBsZXQgaGVpZ2h0ID0gIXIgaW5cbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gaGVpZ2h0O1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkgaW5cbiAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwO1xuICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcblxubGV0IHNldF9oZWlnaHQgdCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBpZiBoZWlnaHQgPiB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuIChcbiAgICB0Lm1heF9oZWlnaHRfc2VlbiA8LSBoZWlnaHQ7XG4gICAgaWYgaGVpZ2h0ID4gbWF4X2hlaWdodF9hbGxvd2VkIHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIm5vZGUgd2l0aCB0b28gbGFyZ2UgaGVpZ2h0XCJcbiAgICAgICAgKGBIZWlnaHQgaGVpZ2h0LCBgTWF4IChtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpXG4gICAgICAgIFslc2V4cF9vZjogWyBgSGVpZ2h0IG9mIGludCBdICogWyBgTWF4IG9mIGludCBdXSk7XG4gIG5vZGUuaGVpZ2h0IDwtIGhlaWdodFxuOztcblxubGV0IGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBpZiBOb2RlLnNhbWUgcGFyZW50IG9yaWdpbmFsX2NoaWxkXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYWRkaW5nIGVkZ2UgbWFkZSBncmFwaCBjeWNsaWNcIlxuICAgICAgKGBjaGlsZCBvcmlnaW5hbF9jaGlsZCwgYHBhcmVudCBvcmlnaW5hbF9wYXJlbnQpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNoaWxkIG9mIF8gTm9kZS50IF0gKiBbIGBwYXJlbnQgb2YgXyBOb2RlLnQgXV07XG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW4gKFxuICAgIGFkZF91bmxlc3NfbWVtIHQgcGFyZW50O1xuICAgICgqIFdlIHNldCBbcGFyZW50LmhlaWdodF0gYWZ0ZXIgYWRkaW5nIFtwYXJlbnRdIHRvIHRoZSBoZWFwLCBzbyB0aGF0IFtwYXJlbnRdIGdvZXNcbiAgICAgICBpbiB0aGUgaGVhcCB3aXRoIGl0cyBwcmUtYWRqdXN0ZWQgaGVpZ2h0LiAqKVxuICAgIHNldF9oZWlnaHQgdCBwYXJlbnQgKGNoaWxkLmhlaWdodCArIDEpKVxuOztcblxubGV0IGFkanVzdF9oZWlnaHRzXG4gICAgICAodHlwZSBhIGIpXG4gICAgICB0XG4gICAgICByZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkOihvcmlnaW5hbF9jaGlsZCA6IGEgTm9kZS50KVxuICAgICAgfnBhcmVudDoob3JpZ2luYWxfcGFyZW50IDogYiBOb2RlLnQpXG4gID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0ID49IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpO1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0O1xuICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgdFxuICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICB+Y2hpbGQ6b3JpZ2luYWxfY2hpbGRcbiAgICB+cGFyZW50Om9yaWdpbmFsX3BhcmVudDtcbiAgd2hpbGUgbGVuZ3RoIHQgPiAwIGRvXG4gICAgbGV0IChUIGNoaWxkKSA9IHJlbW92ZV9taW5fZXhuIHQgaW5cbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIGNoaWxkXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5pbmNyZWFzZV9oZWlnaHQgcmVjb21wdXRlX2hlYXAgY2hpbGQ7XG4gICAgaWYgY2hpbGQubnVtX3BhcmVudHMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIGNoaWxkLnBhcmVudDAgaW5cbiAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudDtcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIGNoaWxkLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudFxuICAgICAgZG9uZSk7XG4gICAgbWF0Y2ggY2hpbGQua2luZCB3aXRoXG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgeyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7IF8gfSAtPlxuICAgICAgbGV0IHIgPSByZWYgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVfb25fcmhzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICAgICAgICAgIH5jaGlsZFxuICAgICAgICAgICAgfnBhcmVudDpub2RlX29uX3Joc1xuICAgICAgZG9uZVxuICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPCBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUuQWN0aW9uLnQgPVxuICAgIHwgQXQgb2YgQXQudFxuICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpZ25vcmUgc25hcHNob3RcbiAgICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGlnbm9yZSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS50ID1cbiAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICA7ICgqIFtuZXh0X2ZpcmVkXSBzaW5nbHkgbGlua3MgYWxsIGFsYXJtIHZhbHVlcyB0aGF0IGZpcmUgZHVyaW5nIGEgc2luZ2xlIGNhbGwgdG9cbiAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogKHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXIgfmFjdGlvbjooY2hlY2sgQWN0aW9uLmludmFyaWFudCkgfm5leHRfZmlyZWQ6aWdub3JlKVxuOztcblxubGV0IGNyZWF0ZSBhY3Rpb24gPSB7IGFjdGlvbjsgbmV4dF9maXJlZCA9IFVvcHQubm9uZSB9XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29uZmlnX2ludGZcblxubW9kdWxlIERlZmF1bHQgKCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSB0cnVlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLkludGVybmFsX29ic2VydmVyXG5cbm1vZHVsZSBQYWNrZWRfID0gc3RydWN0XG4gIGluY2x1ZGUgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyB8PiBbJXNleHBfb2Y6IF8gVHlwZXMuTm9kZS50XVxuICA7O1xuXG4gIGxldCBwcmV2X2luX2FsbCAoVCB0KSA9IHQucHJldl9pbl9hbGxcbiAgbGV0IG5leHRfaW5fYWxsIChUIHQpID0gdC5uZXh0X2luX2FsbFxuICBsZXQgc2V0X3ByZXZfaW5fYWxsIChUIHQxKSB0MiA9IHQxLnByZXZfaW5fYWxsIDwtIHQyXG4gIGxldCBzZXRfbmV4dF9pbl9hbGwgKFQgdDEpIHQyID0gdDEubmV4dF9pbl9hbGwgPC0gdDJcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuU3RhdGUudCA9XG4gICAgfCBDcmVhdGVkXG4gICAgfCBJbl91c2VcbiAgICB8IERpc2FsbG93ZWRcbiAgICB8IFVubGlua2VkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gIHsgKCogU3RhdGUgdHJhbnNpdGlvbnM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ3JlYXRlZCAtLT4gSW5fdXNlIC0tPiBEaXNhbGxvd2VkIC0tPiBVbmxpbmtlZFxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgXFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL1xuICAgICAgIHZ9ICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9hbGxdIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgaW4gW3N0YXRlLmFsbF9vYnNlcnZlcnNdLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fb2JzZXJ2aW5nXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIG9mIFtvYnNlcnZpbmddLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGluY3Jfc3RhdGUgdCA9IHQub2JzZXJ2aW5nLnN0YXRlXG5cbmxldCB1c2VfaXNfYWxsb3dlZCB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPiB0cnVlXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGZhbHNlXG47O1xuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBzYW1lX2FzX3BhY2tlZCAodDEgOiBfIHQpIChQYWNrZWRfLlQgdDIpID0gc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+b2JzZXJ2aW5nOihjaGVjayAoTm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChMaXN0LmlzX2VtcHR5IG9uX3VwZGF0ZV9oYW5kbGVycykpKVxuICAgICAgfnByZXZfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLm5leHRfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX2FsbCkpKSkpKVxuICAgICAgfm5leHRfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLnByZXZfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FsbCkpKSkpKVxuICAgICAgfnByZXZfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKG5leHRfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX29ic2VydmluZykpKSkpKVxuICAgICAgfm5leHRfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKHByZXZfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX29ic2VydmluZykpKSkpKSlcbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCB3aXRob3V0IHN0YWJpbGl6aW5nXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIGRpc2FsbG93X2Z1dHVyZV91c2VcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgSW5fdXNlIC0+XG4gICAgbGV0IHVvcHQgPSB0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgVW9wdC51bnNhZmVfdmFsdWUgdW9wdFxuOztcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwib25fdXBkYXRlIGRpc2FsbG93ZWRcIiB0IFslc2V4cF9vZjogXyB0XVxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT5cbiAgICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IENyZWF0ZWQgLT5cbiAgICAgICAoKiBXZSdsbCBidW1wIFtvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2hlbiBbdF0gaXMgYWN0dWFsbHkgYWRkZWQgdG9cbiAgICAgICAgICBbb2JzZXJ2aW5nLm9ic2VydmVyc10gYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgKClcbiAgICAgfCBJbl91c2UgLT5cbiAgICAgICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDEpXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9vYnNlcnZpbmcgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fb2JzZXJ2aW5nIGluXG4gIHQucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkucHJldl9pbl9vYnNlcnZpbmcgPC0gcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikubmV4dF9pbl9vYnNlcnZpbmcgPC0gbmV4dDtcbiAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gIGlmIHBoeXNfZXF1YWwgdCAoVW9wdC52YWx1ZV9leG4gb2JzZXJ2aW5nLm9ic2VydmVycykgdGhlbiBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIG5leHQ7XG4gIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIC0gTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fYWxsIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9hbGwgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fYWxsIGluXG4gIHQucHJldl9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiBQYWNrZWRfLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkgcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiBQYWNrZWRfLnNldF9uZXh0X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikgbmV4dFxuOztcblxubGV0IHVubGluayB0ID1cbiAgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQ7XG4gIHVubGlua19mcm9tX2FsbCB0XG47O1xuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFja2VkX1xuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlciB8PiBbJXNleHBfb2Y6IF8gaW50ZXJuYWxfb2JzZXJ2ZXJdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAoVCB0KSA9IGludmFyaWFudCBpZ25vcmUgdFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaW52YXJpYW50X2EgIXRcbmxldCBvYnNlcnZpbmcgdCA9IEludGVybmFsX29ic2VydmVyLm9ic2VydmluZyAhdFxubGV0IHVzZV9pc19hbGxvd2VkIHQgPSBJbnRlcm5hbF9vYnNlcnZlci51c2VfaXNfYWxsb3dlZCAhdFxubGV0IHZhbHVlX2V4biB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudmFsdWVfZXhuICF0XG5sZXQgaW5jcl9zdGF0ZSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSAhdFxuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2V4biAhdCBvbl91cGRhdGVfaGFuZGxlclxuOztcbiIsIigqIFtTdGF0ZV0gZGVmaW5lcyB0aGUgZ2xvYmFsIHN0YXRlIG9mIHdoaWNoIHRoZXJlIGlzIG9uZSBpbnN0YW5jZSBmb3IgZWFjaCBjYWxsIHRvXG4gICBbSW5jcmVtZW50YWwuTWFrZV0uXG5cbiAgIFRoaXMgbW9kdWxlIGRvZXMgbm90IGhhdmUgYW4gbWxpIGJlY2F1c2UgaXQgd291bGQgZXNzZW50aWFsbHkgZHVwbGljYXRlXG4gICBbSW5jcmVtZW50YWwuU10sIGV4Y2VwdCBhZGRpbmcgYW4gZXh0cmEgW1N0YXRlLnRdIGFyZ3VtZW50IHRvIGZ1bmN0aW9ucy4gKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5cbnR5cGUgc3RhdHVzID0gVHlwZXMuU3RhdHVzLnQgPVxuICB8IFN0YWJpbGl6aW5nXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgTm9kZV91cGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG5tb2R1bGUgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5SdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgPSBUIDogJ2EgTm9kZS50ICogJ2EgTm9kZV91cGRhdGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCAoVCAobm9kZSwgX25vZGVfdXBkYXRlKSBhcyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+IE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPbmx5X2luX2RlYnVnID0gc3RydWN0XG4gICgqIEV4dHJhIHN0YXRlIGtlcHQgb25seSB3aGVuIFtkZWJ1Z10gZm9yIHRoZSBwdXJwb3NlIG9mIHdyaXRpbmcgYXNzZXJ0aW9ucy4gKilcbiAgdHlwZSB0ID0gVHlwZXMuT25seV9pbl9kZWJ1Zy50ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+Y3VycmVudGx5X3J1bm5pbmdfbm9kZTppZ25vcmVcbiAgICAgICAgfmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgeyBjdXJyZW50bHlfcnVubmluZ19ub2RlID0gTm9uZTsgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlID0gW10gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYWNrZWRfd2Vha19oYXNodGJsID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlBhY2tlZF93ZWFrX2hhc2h0YmwudCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlN0YXRlLnQgPVxuICB7IG11dGFibGUgc3RhdHVzIDogc3RhdHVzXG4gIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgOyAoKiBbc3RhYmlsaXphdGlvbl9udW1dIHN0YXJ0cyBhdCB6ZXJvLCBhbmQgaXMgaW5jcmVtZW50ZWQgYXQgdGhlIGVuZCBvZiBlYWNoXG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gIDsgKCogW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSBob2xkcyBub2RlcyB0aGF0IGhhdmUgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHNob3VsZCBiZVxuICAgICAgIGNvbnNpZGVyZWQgZm9yIGludmFsaWRhdGlvbi4gIEl0IGlzIG9ubHkgdXNlZCBkdXJpbmcgZ3JhcGggcmVzdHJ1Y3R1cmluZzpcbiAgICAgICBbaW52YWxpZGF0ZV9ub2RlXSBhbmQgW2FkZF9wYXJlbnRdLiAgT25jZSBhbiBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzdGFjaywgd2UgdGhlblxuICAgICAgIGl0ZXJhdGUgdW50aWwgaW52YWxpZGl0eSBoYXMgcHJvcGFnYXRlZCB0byBhbGwgYW5jZXN0b3JzIGFzIG5lY2Vzc2FyeSwgYWNjb3JkaW5nIHRvXG4gICAgICAgW05vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkXS4gKilcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtudW1fYWN0aXZlX29ic2VydmVyc10gaXMgdGhlIG51bWJlciBvZiBvYnNlcnZlcnMgd2hvc2Ugc3RhdGUgaXMgW0NyZWF0ZWRdIG9yXG4gICAgICAgW0luX3VzZV0uICopXG4gICAgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICA7ICgqIFthbGxfb2JzZXJ2ZXJzXSBpcyB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGFsbCBvYnNlcnZlcnMgaW4gZWZmZWN0LCBvciB0aGF0IGhhdmVcbiAgICAgICBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlXG4gICAgICAgW3N0YXRlXSBhcyBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gIDsgKCogV2UgZW5xdWV1ZSBmaW5hbGl6ZWQgb2JzZXJ2ZXJzIGluIGEgdGhyZWFkLXNhZmUgcXVldWUsIGZvciBoYW5kbGluZyBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uLiAgV2UgdXNlIGEgdGhyZWFkLXNhZmUgcXVldWUgYmVjYXVzZSBPQ2FtbCBmaW5hbGl6ZXJzIGNhbiBydW4gaW4gYW55XG4gICAgICAgdGhyZWFkLiAqKVxuICAgIGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgKCogW25ld19vYnNlcnZlcnNdIGhvbGRzIG9ic2VydmVycyBjcmVhdGVkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhXG4gICAgICAgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZV0gYXMgW0NyZWF0ZWRdIG9yIFtVbmxpbmtlZF0uICBBdCB0aGUgc3RhcnQgb2ZcbiAgICAgICBzdGFiaWxpemF0aW9uLCB3ZSBsaW5rIGludG8gW2FsbF9vYnNlcnZlcnNdIGFsbCBvYnNlcnZlcnMgaW4gW25ld19vYnNlcnZlcnNdIHdob3NlXG4gICAgICAgc3RhdGUgaXMgW0NyZWF0ZWRdIGFuZCBhZGQgdGhlbSB0byB0aGUgW29ic2VydmVyc10gb2YgdGhlIG5vZGUgdGhleSBhcmUgb2JzZXJ2aW5nLlxuICAgICAgIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgb2JzZXJ2ZXJzIHRvIGJlIGNyZWF0ZWQgZHVyaW5nIHN0YWJpbGl6YXRpb25cbiAgICAgICB3aGlsZSBydW5uaW5nIHVzZXIgY29kZSAoW21hcF0sIFtiaW5kXSwgZXRjKSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aCBub2Rlc1xuICAgICAgIGJlY29taW5nIG5lY2Vzc2FyeSBhbmQgdGhlIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzXSBob2xkcyBhbGwgb2JzZXJ2ZXJzIHRoYXQgaGF2ZSBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlID0gRGlzYWxsb3dlZF0uICBBdCB0aGUgc3RhcnRcbiAgICAgICBvZiBzdGFiaWxpemF0aW9uLCB0aGVzZSBhcmUgdW5saW5rZWQgZnJvbSBbYWxsX29ic2VydmVyc10gYW5kIHRoZWlyIHN0YXRlIGlzXG4gICAgICAgY2hhbmdlZCB0byBbVW5saW5rZWRdLiAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyB1c2VyIGNvZGUgcnVubmluZ1xuICAgICAgIGR1cmluZyBzdGFiaWxpemF0aW9uIHRvIGNhbGwgW2Rpc2FsbG93X2Z1dHVyZV91c2VdLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoXG4gICAgICAgbm9kZXMgYmVjb21pbmcgdW5uZWNlc3NhcnkgYW5kIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFdlIGRlbGF5IGFsbCBbVmFyLnNldF0gY2FsbHMgdGhhdCBoYXBwZW4gZHVyaW5nIHN0YWJpbGl6YXRpb24gc28gdGhhdCB0aGV5IHRha2VcbiAgICAgICBlZmZlY3QgYWZ0ZXIgc3RhYmlsaXphdGlvbi4gIEFsbCB2YXJpYWJsZXMgc2V0IGR1cmluZyBzdGFiaWxpemF0aW9uIGFyZSBwdXNoZWQgb25cbiAgICAgICBbc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZW0uICBUaGVuLCBhZnRlciB0aGUgZ3JhcGggaGFzXG4gICAgICAgc3RhYmlsaXplZCwgd2UgZG8gYWxsIHRoZSBzZXRzLCBzbyB0aGF0IHRoZXkgdGFrZSBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaGFzIGFsbCBub2RlcyB3aXRoIGhhbmRsZXJzIHRvIGNvbnNpZGVyIHJ1bm5pbmcgYXQgdGhlXG4gICAgICAgZW5kIG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICBBdCB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIHdlIGNvbnNpZGVyIGVhY2ggbm9kZVxuICAgICAgIGluIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIGFuZCBpZiB3ZSBkZWNpZGUgdG8gcnVuIGl0cyBvbi11cGRhdGUgaGFuZGxlcnMsXG4gICAgICAgcHVzaCBpdCBvbiBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICBUaGVuLCBvbmNlIHdlJ3ZlIGNvbnNpZGVyZWQgYWxsIG5vZGVzIGluXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgd2UgaXRlcmF0ZSB0aHJvdWdoIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXSBhbmRcbiAgICAgICBhY3R1YWxseSBydW4gdGhlIGhhbmRsZXJzLlxuXG4gICAgICAgVGhlc2UgdHdvIHBhc3NlcyBhcmUgZXNzZW50aWFsIGZvciBjb3JyZWN0bmVzcy4gIER1cmluZyB0aGUgZmlyc3QgcGFzcywgd2UgaGF2ZW4ndFxuICAgICAgIHJ1biBhbnkgdXNlciBoYW5kbGVycywgc28gd2Uga25vdyB0aGF0IHRoZSBzdGF0ZSBpcyBleGFjdGx5IGFzIGl0IHdhcyB3aGVuXG4gICAgICAgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIEluIHBhcnRpY3VsYXIsIHdlIGtub3cgdGhhdCBpZiBhIG5vZGUgaXMgbmVjZXNzYXJ5LCB0aGVuXG4gICAgICAgaXQgaGFzIGEgc3RhYmxlIHZhbHVlOyBvbmNlIHVzZXIgaGFuZGxlcnMgcnVuLCB3ZSBkb24ndCBrbm93IHRoaXMuICBEdXJpbmcgdGhlXG4gICAgICAgc2Vjb25kIHBhc3MsIHVzZXIgaGFuZGxlcnMgY2FuIG1ha2UgY2FsbHMgdG8gYW55IGluY3JlbWVudGFsIGZ1bmN0aW9uIGV4Y2VwdCBmb3JcbiAgICAgICBbc3RhYmlsaXplXS4gIEluIHBhcnRpY3VsYXIsIHNvbWUgZnVuY3Rpb25zIHB1c2ggbm9kZXMgb25cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAgQnV0IG5vIGZ1bmN0aW9ucyAoZXhjZXB0IGZvciBbc3RhYmlsaXplXSkgbW9kaWZ5XG4gICAgICAgW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAqKVxuICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICA7ICgqIFN0YXRzLiAgVGhlc2UgYXJlIGFsbCBpbmNyZW1lbnRlZCBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UsIGFuZCBuZXZlciBkZWNyZW1lbnRlZC4gKilcbiAgICBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DbG9jay50ID1cbiAgICB7ICgqIFdlIHVzZSBbdGltaW5nX3doZWVsXSBmb3IgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMuICBbbm93XSBpcyBhIHZhcmlhYmxlIGhvbGRpbmdcbiAgICAgICAgIHRoZSBjdXJyZW50IHRpbWUuICBbaGFuZGxlX2ZpcmVkXSBpcyB0aGUgY2xvc3VyZSBwYXNzZWQgdG9cbiAgICAgICAgIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICBJdCBsaW5rcyBhbGwgdGhlIGZpcmVkIGFsYXJtIHZhbHVlcyBpbnRvXG4gICAgICAgICBbZmlyZWRfYWxhcm1fdmFsdWVzXS4gIEFmdGVyIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10gcmV0dXJucywgaXQgdGhlblxuICAgICAgICAgd2Fsa3MgdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgYW5kIGFjdHVhbGx5IGZpcmVzIHRoZW0uICBUaGlzIHR3by1wYXNzIGFwcHJvYWNoIGlzXG4gICAgICAgICBuZWNlc3NhcnkgYmVjYXVzZSBvbmUgaXMgbm90IGFsbG93ZWQgdG8gY2FsbCBbVGltaW5nX3doZWVsXSBmdW5jdGlvbnMgZnJvbSB0aGVcbiAgICAgICAgIFtoYW5kbGVfZmlyZWRdIHRoYXQgb25lIHBhc3NlcyB0byBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bm93OlxuICAgICAgICAgIChjaGVjayAoZnVuIChub3cgOiBfIFZhci50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy5lcXVhbCBub3cudmFsdWUgKFRpbWluZ193aGVlbC5ub3cgdC50aW1pbmdfd2hlZWwpKSkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5maXJlZF9hbGFybV92YWx1ZXM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyZWRfYWxhcm1fdmFsdWVzIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIGZpcmVkX2FsYXJtX3ZhbHVlcykpKVxuICAgICAgICB+dGltaW5nX3doZWVsOihjaGVjayAoVGltaW5nX3doZWVsLmludmFyaWFudCBBbGFybV92YWx1ZS5pbnZhcmlhbnQpKSlcbiAgOztcblxuICBsZXQgaW5jcl9zdGF0ZSB0ID0gVmFyLmluY3Jfc3RhdGUgdC5ub3dcbmVuZFxuXG5sZXQgbm93IChjbG9jayA6IENsb2NrLnQpID0gY2xvY2subm93LnZhbHVlXG5sZXQgdGltaW5nX3doZWVsX2xlbmd0aCAoY2xvY2sgOiBDbG9jay50KSA9IFRpbWluZ193aGVlbC5sZW5ndGggY2xvY2sudGltaW5nX3doZWVsXG5sZXQgbnVtX3N0YWJpbGl6ZXMgdCA9IFN0YWJpbGl6YXRpb25fbnVtLnRvX2ludCB0LnN0YWJpbGl6YXRpb25fbnVtXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbmxldCBtYXhfaGVpZ2h0X3NlZW4gdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9XG4gIGxldCByID0gcmVmIHQuYWxsX29ic2VydmVycyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLm5leHRfaW5fYWxsIG9ic2VydmVyO1xuICAgIGYgb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IGRpcmVjdGx5X29ic2VydmVkIHQgPVxuICBsZXQgciA6IE5vZGUuUGFja2VkLnQgbGlzdCByZWYgPSByZWYgW10gaW5cbiAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIChUIGludGVybmFsX29ic2VydmVyKSAtPlxuICAgIHIgOj0gVCBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgOjogIXIpO1xuICAhclxuOztcblxubGV0IHNhdmVfZG90IHQgb3V0ID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3Qgb3V0IChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IHNhdmVfZG90X3RvX2ZpbGUgdCBmaWxlID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZiA9IE5vZGUuUGFja2VkLml0ZXJfZGVzY2VuZGFudHMgKGRpcmVjdGx5X29ic2VydmVkIHQpIH5mXG5cbm1vZHVsZSBTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWF4X251bV9wYXJlbnRzIDogaW50XG4gICAgOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIDogKGludCAqIFBlcmNlbnQudCkgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5sZXQgc3RhdHMgdCA9XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSByZWYgKC0xKSBpblxuICBsZXQgbnVtX25lY2Vzc2FyeV9ub2RlcyA9IHJlZiAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgaW5jciBudW1fbmVjZXNzYXJ5X25vZGVzO1xuICAgIG1heF9udW1fcGFyZW50cyA6PSBJbnQubWF4ICFtYXhfbnVtX3BhcmVudHMgbm9kZS5udW1fcGFyZW50cyk7XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSAhbWF4X251bV9wYXJlbnRzIGluXG4gIGxldCBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgPSBBcnJheS5jcmVhdGUgfmxlbjoobWF4X251bV9wYXJlbnRzICsgMSkgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGxldCBudW1fcGFyZW50cyA9IG5vZGUubnVtX3BhcmVudHMgaW5cbiAgICBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSA8LSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSArIDEpO1xuICBsZXQgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA9XG4gICAgQXJyYXkuZm9sZGkgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzIH5pbml0OltdIH5mOihmdW4gaSBhYyBudW1fbm9kZXMgLT5cbiAgICAgIGlmIG51bV9ub2RlcyA9IDBcbiAgICAgIHRoZW4gYWNcbiAgICAgIGVsc2UgKGksIFBlcmNlbnQub2ZfbXVsdCAoZmxvYXQgbnVtX25vZGVzIC8uIGZsb2F0ICFudW1fbmVjZXNzYXJ5X25vZGVzKSkgOjogYWMpXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgeyBTdGF0cy5tYXhfbnVtX3BhcmVudHM7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgfVxuOztcblxubGV0IGFtX3N0YWJpbGl6aW5nIHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyAtPiB0cnVlXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+IGZhbHNlXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcImNhbm5vdCBjYWxsIGFtX3N0YWJpbGl6aW5nIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG47O1xuXG5sZXQgaW52YXJpYW50IHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICAgICAgKG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT5cbiAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgIFwibWVtYmVyIG9mIGFsbF9vYnNlcnZlcnMgd2l0aCB1bmV4cGVjdGVkIHN0YXRlXCJcbiAgICAgICAgICAgICBpbnRlcm5hbF9vYnNlcnZlclxuICAgICAgICAgICAgIFslc2V4cF9vZjogXyBJbnRlcm5hbF9vYnNlcnZlci50XSk7XG4gICAgICAgIEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpZ25vcmUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoYW1fc3RhYmlsaXppbmcgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcCkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgID0gUmVjb21wdXRlX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXApO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnN0YXR1czppZ25vcmVcbiAgICAgICAgfmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHM6aWdub3JlXG4gICAgICAgIH5zdGFiaWxpemF0aW9uX251bTooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgICB+Y3VycmVudF9zY29wZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X3Njb3BlIC0+IGFzc2VydCAocGh5c19lcXVhbCBjdXJyZW50X3Njb3BlIFNjb3BlLnRvcCkpKVxuICAgICAgICB+cmVjb21wdXRlX2hlYXA6KGNoZWNrIFJlY29tcHV0ZV9oZWFwLmludmFyaWFudClcbiAgICAgICAgfmFkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoQWRqdXN0X2hlaWdodHNfaGVhcC5sZW5ndGggYWRqdXN0X2hlaWdodHNfaGVhcCA9IDApO1xuICAgICAgICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuaW52YXJpYW50IGFkanVzdF9oZWlnaHRzX2hlYXApKVxuICAgICAgICB+cHJvcGFnYXRlX2ludmFsaWRpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gcHJvcGFnYXRlX2ludmFsaWRpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHByb3BhZ2F0ZV9pbnZhbGlkaXR5KSkpXG4gICAgICAgIH5udW1fYWN0aXZlX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fYWN0aXZlX29ic2VydmVycyAtPiBhc3NlcnQgKG51bV9hY3RpdmVfb2JzZXJ2ZXJzID49IDApKSlcbiAgICAgICAgfmFsbF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5maW5hbGl6ZWRfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+bmV3X29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgICgqIFdoZW4gYW4gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gW25ld19vYnNlcnZlcnNdLCBpdCBoYXMgW3N0YXRlID0gQ3JlYXRlZF0uXG4gICAgICAgICAgICAgICAgICAgVGhlIG9ubHkgcG9zc2libGUgdHJhbnNpdGlvbnMgZnJvbSB0aGVyZSBhcmUgdG8gW1VubGlua2VkXSBvciB0b1xuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdLCB3aGljaCBhbHNvIHJlbW92ZXMgaXQgZnJvbSBbbmV3X29ic2VydmVyc10sIG5ldmVyIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgYWdhaW4uICBUaHVzIGl0IGlzIGltcG9zc2libGUgZm9yIGFuIG9ic2VydmVyIGluIFtuZXdfb2JzZXJ2ZXJzXSB0byBiZVxuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5kaXNhbGxvd2VkX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbjpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gLT5cbiAgICAgICAgICAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbilcbiAgICAgICAgICAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBTdGFjay5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoVmFyLlBhY2tlZC5UIHZhcikgLT5cbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgICAgICAgICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgIH5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjooY2hlY2sgKFN0YWNrLmludmFyaWFudCBOb2RlLlBhY2tlZC5pbnZhcmlhbnQpKVxuICAgICAgICB+cnVuX29uX3VwZGF0ZV9oYW5kbGVyczooY2hlY2sgKFN0YWNrLmludmFyaWFudCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLmludmFyaWFudCkpXG4gICAgICAgIH5vbmx5X2luX2RlYnVnOihjaGVjayBPbmx5X2luX2RlYnVnLmludmFyaWFudClcbiAgICAgICAgfndlYWtfaGFzaHRibHM6aWdub3JlXG4gICAgICAgIH5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NoYW5nZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY3JlYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19pbnZhbGlkYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQ6aWdub3JlXG4gICAgICAgIH5udW1fdmFyX3NldHM6aWdub3JlKVxuOztcblxubGV0IGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZSB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICBpZiBub3QgYWxsb3dfaW5fdXBkYXRlX2hhbmRsZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgb24tdXBkYXRlIGhhbmRsZXJzXCIgbmFtZSlcbiAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdKVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgLS0gc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCIgbmFtZSlcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgc3RhYmlsaXphdGlvblwiIG5hbWUpXG4gICAgICBiYWNrdHJhY2VcbiAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdXG47O1xuXG5sZXQgc2V0X2hlaWdodCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfaGVpZ2h0IHQuYWRqdXN0X2hlaWdodHNfaGVhcCBub2RlIGhlaWdodFxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBoZWlnaHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgaGVpZ2h0O1xuICBSZWNvbXB1dGVfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXAgaGVpZ2h0XG47O1xuXG5sZXQgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBub3Qgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvblxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIHRydWU7XG4gICAgU3RhY2sucHVzaCB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChUIG5vZGUpKVxuOztcblxubGV0IHJlYyByZW1vdmVfY2hpbGRyZW4gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gcGFyZW50IC0+XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gcGFyZW50IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgcmVtb3ZlX2NoaWxkIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleClcblxuYW5kIHJlbW92ZV9jaGlsZCA6IHR5cGUgYSBiLiBjaGlsZDpiIE5vZGUudCAtPiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGNoaWxkXG5cbmFuZCBjaGVja19pZl91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+IGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSkgdGhlbiBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZVxuXG5hbmQgYmVjYW1lX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgbm9kZS5oZWlnaHQgPC0gLTE7XG4gIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBVbm9yZGVyZWRfYXJyYXlfZm9sZC5mb3JjZV9mdWxsX2NvbXB1dGUgdVxuICAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6ZmFsc2VcbiAgIHwgXyAtPiAoKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtIChjbG9jayA6IENsb2NrLnQpIGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbiAgdGhlbiBUaW1pbmdfd2hlZWwucmVtb3ZlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuOztcblxuKCogQW4gaW52YWxpZCBub2RlIGlzIG5vZGUgd2hvc2Uga2luZCBpcyBbSW52YWxpZF0uICBBIG5vZGUncyBraW5kIGlzIHNldCB0byBbSW52YWxpZF1cbiAgIHdoZW4gdGhlIGxocyBvZiBpdHMgc2NvcGUgY2hhbmdlcywgb3Igb25lIGlmIGl0cyBjaGlsZHJlbiBwcm9wYWdhdGUgdGhlIGludmFsaWRpdHlcbiAgIHVwd2FyZCAoc2VlIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0gdG8gc2VlIGluIHdoaWNoIGNhc2UgaW52YWxpZGl0eSBwcm9wYWdhdGlvblxuICAgc3RvcHMpLiAgSW52YWxpZGF0aW5nIGEgbm9kZSBkaXNjb25uZWN0cyBpdCBmcm9tIGl0cyBjaGlsZHJlbiwgd2hpY2ggbWVhbnM6XG5cbiAgIDEuIGFuIGludmFsaWQgbm9kZSBjYW5ub3QgZW5kIHVwIG9uIHRoZSBzY2hlZHVsZXIgKGlmIGl0IGlzIG9uIHRoZSBzY2hlZHVsZXIgd2hlblxuICAgaXQgaXMgaW52YWxpZGF0ZWQsIGl0IGlzIHJlbW92ZWQpXG4gICAyLiBhbiBpbnZhbGlkIG5vZGUgZG9lc24ndCBtYWtlIGl0cyBjaGlsZHJlbiBuZWNlc3NhcnkgYW55bW9yZS5cblxuICAgSW52YWxpZCBub2RlcyB1c3VhbGx5IGhhdmUgbm8gcGFyZW50cywgYmVjYXVzZSB0aGUgdXB3YXJkIGludmFsaWRpdHkgcHJvcGFnYXRpb24gbWVhbnNcbiAgIHRoYXQgdGhlaXIgcGFyZW50cyB3aWxsIHRoZW1zZWx2ZXMgYmVjb21lIGludmFsaWQgYW5kIGRpc2Nvbm5lY3QgZnJvbSB0aGVpciBjaGlsZHJlbi5cbiAgIEhvd2V2ZXIsIFtpZl0sIFtqb2luXSBvciBbYmluZF0gYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgdXB3YXJkIHByb3BhZ2F0aW9uLCBzbyBhblxuICAgaW52YWxpZCBub2RlIGNhbiBzdGlsbCBoYXZlIHBhcmVudHMuICBJbnZhbGlkIG5vZGVzIGNhbiBiZSBuZWNlc3NhcnksIGluIHRoZSBjYXNlIHdoZXJlXG4gICB0aGV5IGhhdmUgcGFyZW50cywgYW5kIGFsc28gd2hlbiB0aGV5IGFyZSBvYnNlcnZlZC5cblxuICAgVGhlIHVwd2FyZCBwcm9wYWdhdGlvbiBvZiBpbnZhbGlkaXR5IGhhcHBlbnMgYm90aCB3aGVuIGEgbm9kZSBiZWNvbWVzIGludmFsaWQsIGFuZCB3aGVuXG4gICB0cnlpbmcgdG8gYWRkIGFuIGVkZ2UgZnJvbSBhbiBpbnZhbGlkIGNoaWxkIG5vZGUgdG8gYW5vdGhlciBub2RlLiAgQmVjYXVzZSBpbnZhbGlkaXR5XG4gICBpcyBvbmx5IHByb3BhZ2F0ZWQgdXB3YXJkLCBhbmQgYmVjYXVzZSB0aGUgcmhzIG9mIGEgYmluZCBpcyBpbnZhbGlkYXRlZCBiZWZvcmUgaXRcbiAgIGV4ZWN1dGVzLCBhIG5vZGUgY2Fubm90IGJlIGJvdGggY29tcHV0ZWQgYW5kIGludmFsaWRhdGVkIGluIHRoZSBzYW1lIHN0YWJpbGl6YXRpb24uXG5cbiAgIFdoZW4gaW52YWxpZGF0aW5nLCB3ZSBjYW4ndCBhc3N1bWUgbXVjaCBhYm91dCB0aGUgbm9kZXMgd2UgdmlzaXQuICBXZSBjYW5ub3QgYXNzdW1lXG4gICB0aGF0IG5vZGVzIGFyZSB2YWxpZCAodGhlIHJocyBjYW4gY29udGFpbiBwcmV2aW91c2x5IGludmFsaWRhdGVkIG5vZGVzKSwgb3IgdGhhdCBub2Rlc1xuICAgYXJlIHVubmVjZXNzYXJ5IChub2RlcyBjYW4gYmUgbWFkZSBuZWNlc3Nhcnkgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZWlyIGNvbnRhaW5pbmdcbiAgIGJpbmRzKS4gKilcblxubGV0IHJlYyBpbnZhbGlkYXRlX25vZGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCA8LSB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCArIDE7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAoKiBUaGUgbm9kZSBkb2Vzbid0IGhhdmUgY2hpbGRyZW4gYW55bW9yZSwgc28gd2UgY2FuIGxvd2VyIGl0cyBoZWlnaHQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUsIHRvIG9uZSBncmVhdGVyIHRoYW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgQWxzbywgYmVjYXVzZSB3ZVxuICAgICAgICAgYXJlIGxvd2VyaW5nIHRoZSBoZWlnaHQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IGFueSBvZiBpdHMgYW5jZXN0b3JzJyBoZWlnaHRzLlxuICAgICAgICAgV2UgY291bGQgbGVhdmUgdGhlIGhlaWdodCBhbG9uZSwgYnV0IHdlIG1heSBhcyB3ZWxsIGxvd2VyIGl0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlIHRvIGF2b2lkIG1ha2luZyB0aGUgaGVpZ2h0cyBvZiBhbnkgZnV0dXJlIGFuY2VzdG9ycyB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICBsYXJnZS4gKilcbiAgICAgIG5vZGUuaGVpZ2h0IDwtIFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgICAoKiBXZSBkb24ndCBzZXQgW25vZGUuY3JlYXRlZF9pbl0gb3IgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdOyB3ZSBsZWF2ZSBbbm9kZV1cbiAgICAgICBpbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBJZiB0aGF0IHNjb3BlIGlzIGV2ZXIgaW52YWxpZGF0ZWQsIHRoZW4gdGhhdFxuICAgICAgIHdpbGwgY2xlYXIgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdICopXG4gICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgIHwgQXQgYXQgLT4gcmVtb3ZlX2FsYXJtIGF0LmNsb2NrIGF0LmFsYXJtXG4gICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiByZW1vdmVfYWxhcm0gYXRfaW50ZXJ2YWxzLmNsb2NrIGF0X2ludGVydmFscy5hbGFybVxuICAgICB8IEJpbmRfbWFpbiBiaW5kIC0+IGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgYWxhcm07IGNsb2NrOyBfIH0gLT4gcmVtb3ZlX2FsYXJtIGNsb2NrIGFsYXJtXG4gICAgIHwgXyAtPiAoKSk7XG4gICAgTm9kZS5zZXRfa2luZCBub2RlIEludmFsaWQ7XG4gICAgKCogSWYgd2UgY2FsbGVkIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gcmlnaHQgYXdheSBvbiB0aGUgcGFyZW50cywgd2Ugd291bGQgZ2V0IGludG9cbiAgICAgICB0cm91YmxlLiAgVGhlIHBhcmVudCB3b3VsZCBkaXNjb25uZWN0IGl0c2VsZiBmcm9tIHRoZSBjdXJyZW50IG5vZGUsIHRodXNcbiAgICAgICBtb2RpZnlpbmcgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgRXZlbiBpZiB3ZSBtYWRlIGEgc3BlY2lhbCBjYXNlLCBpdFxuICAgICAgIHN0aWxsIHdvdWxkbid0IGJlIGVub3VnaCB0byBoYW5kbGUgb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGxpc3Qgb2YgcGFyZW50cyBpc1xuICAgICAgIG1vZGlmaWVkIChlLmcuIHdoZW4gW2xoc10gaXMgaW52YWxpZGF0ZWQgaW4gdGhlIGV4YW1wbGUgaW4gdGhlIGNvbW1lbnQgYWJvdXRcbiAgICAgICBbY2FuX3JlY29tcHV0ZV9ub3ddIGZhciBiZWxvdykuICopXG4gICAgZm9yIGluZGV4ID0gMCB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChOb2RlLmdldF9wYXJlbnQgbm9kZSB+aW5kZXgpXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuXG5hbmQgaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBub2RlID1cbiAgbGV0IHIgPSByZWYgbm9kZSBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxuKCogV2hlbiBbbm90IHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc10gYW5kIGEgYmluZCdzIGxocyBjaGFuZ2VzLCB3ZSBtb3ZlXG4gICBub2RlcyBjcmVhdGVkIG9uIHRoZSBiaW5kJ3MgcmhzIHVwIHRvIGl0cyBwYXJlbnQgYmluZCwgYXMgb3Bwb3NlZCB0byBbU2NvcGUuVG9wXS4gIFRoaXNcbiAgIG1haW50YWlucyB0aGVpciBkZXBlbmRlbmNlIG9uIHZhbGlkIGJpbmQgbGVmdC1oYW5kIHNpZGVzLCBhbmQga2VlcHMgdGhlbSBoaWdoZXIgaW4gdGhlXG4gICBncmFwaC4gIFRoaXMgaW4gdHVybiBtZWFucyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gY29tcHV0ZSB0aG9zZSBub2RlcyBhZnRlciB0aGVcbiAgIHBhcmVudCBiaW5kJ3MgbGhzLCB3aGljaCBnaXZlcyB0aGVtIG1vcmUgb2YgYSBjaGFuY2UgdG8gYmVjb21lIHVubmVjZXNzYXJ5IGFuZCBub3QgYmVcbiAgIGNvbXB1dGVkIHNob3VsZCB0aGUgcGFyZW50IGJpbmQncyBsaHMgY2hhbmdlLiAqKVxubGV0IHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgX3QgKGZpcnN0X25vZGVfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXdfc2NvcGUgPVxuICBsZXQgciA9IHJlZiBmaXJzdF9ub2RlX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBub2RlX29uX3Jocy5jcmVhdGVkX2luIDwtIG5ld19zY29wZTtcbiAgICBTY29wZS5hZGRfbm9kZSBuZXdfc2NvcGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxubGV0IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQgPVxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucHJvcGFnYXRlX2ludmFsaWRpdHkpIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IGluXG4gICAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gICAgdGhlblxuICAgICAgaWYgTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWQgbm9kZVxuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGUgbm9kZVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIG5vZGUgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGJlY2F1c2UgY2hpbGRyZW4gY2FuIG9ubHkgcG9pbnQgdG8gbmVjZXNzYXJ5XG4gICAgICAgICAgICAgcGFyZW50c1xuICAgICAgICAgICAtIG5vZGUgaXMgc3RhbGUuIFRoaXMgaXMgYmVjYXVzZTogRm9yIGJpbmQsIGlmLCBqb2luLCB0aGlzIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIGVpdGhlciB0aGUgaW52YWxpZGF0aW9uIGlzIGNhdXNlZCBieSB0aGUgbGhzIGNoYW5naW5nIChpbiB3aGljaCBjYXNlIHRoZVxuICAgICAgICAgICAgIGxocy1jaGFuZ2Ugbm9kZSBiZWluZyBuZXdlciBtYWtlcyB1cyBzdGFsZSkuXG4gICAgICAgICAgIC0gb3IgYSBjaGlsZCBiZWNhbWUgaW52YWxpZCB0aGlzIHN0YWJpbGl6YXRpb24gY3ljbGUsIGluIHdoaWNoIGNhc2UgaXQgaGFzXG4gICAgICAgICAgICAgdC5jaGFuZ2VkX2F0IG9mIFt0LnN0YWJpbGl6YXRpb25fbnVtXSwgYW5kIHNvIFtub2RlXSBpcyBzdGFsZVxuICAgICAgICAgICAtIG9yIFtub2RlXSBqdXN0IGJlY2FtZSBuZWNlc3NhcnkgYW5kIHRyaWVkIGNvbm5lY3RpbmcgdG8gYW4gYWxyZWFkeSBpbnZhbGlkXG4gICAgICAgICAgICAgY2hpbGQuIEluIHRoYXQgY2FzZSwgW2NoaWxkLmNoYW5nZWRfYXQgPiBub2RlLnJlY29tcHV0ZWRfYXRdIGZvciB0aGF0IGNoaWxkLFxuICAgICAgICAgICAgIGJlY2F1c2UgaWYgd2UgaGFkIGJlZW4gcmVjb21wdXRlZCB3aGVuIHRoYXQgY2hpbGQgY2hhbmdlZCwgd2Ugd291bGQgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgbWFkZSBpbnZhbGlkIGJhY2sgdGhlbi4gIEZvciBleHBlcnQgbm9kZXMsIHRoZSBhcmd1bWVudCBpcyB0aGUgc2FtZSwgZXhjZXB0XG4gICAgICAgICAgICAgdGhhdCBpbnN0ZWFkIG9mIGxocy1jaGFuZ2Ugbm9kZXMgbWFrZSB0aGUgZXhwZXJ0IG5vZGVzIHN0YWxlLCBpdCdzIG1hZGUgc3RhbGVcbiAgICAgICAgICAgICBleHBsaWNpdGVseSB3aGVuIGFkZGluZyBvciByZW1vdmluZyBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgICgqIElmIG11bHRpcGxlIGNoaWxkcmVuIGFyZSBpbnZhbGlkLCB0aGV5IHdpbGwgcHVzaCB1cyBhcyBtYW55IHRpbWVzIG9uIHRoZVxuICAgICAgICAgICAgICBwcm9wYWdhdGlvbiBzdGFjaywgc28gd2UgY291bnQgdGhlbSByaWdodC4gKilcbiAgICAgICAgICAgRXhwZXJ0LmluY3JfaW52YWxpZF9jaGlsZHJlbiBleHBlcnRcbiAgICAgICAgIHwga2luZCAtPlxuICAgICAgICAgICBpZiBkZWJ1Z1xuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICB8IEJpbmRfbWFpbiBfIHwgSWZfdGhlbl9lbHNlIF8gfCBKb2luX21haW4gXyAtPiAoKVxuICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gYXJlIG5ldmVyIHB1c2hlZCBvbiB0aGUgc3RhY2sgKikpKTtcbiAgICAgICAgKCogV2UgZG8gbm90IGNoZWNrIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGhlcmUsIGJlY2F1c2UgaXQgc2hvdWxkIGJlXG4gICAgICAgICAgIHRydWUsIGFuZCBiZWNhdXNlIGNvbXB1dGluZyBpdCB0YWtlcyBPKG51bWJlciBvZiBjaGlsZHJlbiksIG5vZGUgY2FuIGJlIHB1c2hlZFxuICAgICAgICAgICBvbiB0aGUgc3RhY2sgb25jZSBwZXIgY2hpbGQsIGFuZCBleHBlcnQgbm9kZXMgY2FuIGhhdmUgbG90cyBvZiBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgZG9uZVxuOztcblxuKCogW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB0IH5jaGlsZCB+cGFyZW50XSBhZGRzIFtwYXJlbnRdIGFzIGEgcGFyZW50IG9mXG4gICBbY2hpbGRdLCBhbmQgbWFrZXMgW2NoaWxkXSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBuZWNlc3NhcnksIGVuc3VyaW5nIHRoZWlyIGhlaWdodHNcbiAgIGFyZSBhY2N1cmF0ZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBbY2hpbGRdIGFuZCBbcGFyZW50XVxuICAgdGhvdWdoLiAqKVxubGV0IHJlYyBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSBOb2RlLnQgLT4gcGFyZW50OmIgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBjaGlsZC5zdGF0ZSBpblxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkIGluXG4gIE5vZGUuYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGlmIG5vdCAoTm9kZS5pc192YWxpZCBjaGlsZCkgdGhlbiBTdGFjay5wdXNoIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgKFQgcGFyZW50KTtcbiAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIGUgfmNoaWxkX2luZGV4XG4gIHwgXyAtPiAoKVxuXG5hbmQgYmVjYW1lX25lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gICgqIFtTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luXSBpcyB0cnVlIChhc3N1bWluZyB0aGUgc2NvcGUgaXRzZWxmIGlzIHZhbGlkKVxuICAgICBiZWNhdXNlIFtOb2RlLml0ZXJfY2hpbGRyZW5dIGJlbG93IGZpcnN0IHZpc2l0cyB0aGUgbGhzLWNoYW5nZSBvZiBiaW5kIG5vZGVzIGFuZFxuICAgICB0aGVuIHRoZSByaHMuICopXG4gIGlmIE5vZGUuaXNfdmFsaWQgbm9kZSAmJiBub3QgKFNjb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW4pXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVHJ5aW5nIHRvIG1ha2UgYSBub2RlIG5lY2Vzc2FyeSB3aG9zZSBkZWZpbmluZyBiaW5kIGlzIG5vdCBuZWNlc3NhcnlcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDwtIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgKCogU2luY2UgW25vZGVdIGJlY2FtZSBuZWNlc3NhcnksIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudCwgd2UgbmVlZCB0bzpcblxuICAgICAtIGFkZCBwYXJlbnQgcG9pbnRlcnMgdG8gW25vZGVdIGZyb20gaXRzIGNoaWxkcmVuLlxuICAgICAtIHNldCBbbm9kZV0ncyBoZWlnaHQuXG4gICAgIC0gYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAsIGlmIG5lY2Vzc2FyeS4gKilcbiAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gbm9kZSB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDtcbiAgICAoKiBOb3cgdGhhdCBjaGlsZCBpcyBuZWNlc3NhcnksIGl0IHNob3VsZCBoYXZlIGEgdmFsaWQgaGVpZ2h0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZC5oZWlnaHQgPj0gMCk7XG4gICAgaWYgY2hpbGQuaGVpZ2h0ID49IG5vZGUuaGVpZ2h0IHRoZW4gc2V0X2hlaWdodCBub2RlIChjaGlsZC5oZWlnaHQgKyAxKSk7XG4gICgqIE5vdyB0aGF0IHRoZSBoZWlnaHQgaXMgY29ycmVjdCwgbWF5YmUgYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAuICBbbm9kZV1cbiAgICAganVzdCBiZWNhbWUgbmVjZXNzYXJ5LCBzbyBpdCBjYW4ndCBoYXZlIGJlZW4gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgU2luY2UgW25vZGVdXG4gICAgIGlzIG5lY2Vzc2FyeSwgd2Ugc2hvdWxkIGFkZCBpdCB0byB0aGUgcmVjb21wdXRlIGhlYXAgaWZmIGl0IGlzIHN0YWxlLiAqKVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpO1xuICBpZiBOb2RlLmlzX3N0YWxlIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEV4cGVydCBwIC0+IEV4cGVydC5vYnNlcnZhYmlsaXR5X2NoYW5nZSBwIH5pc19ub3dfb2JzZXJ2YWJsZTp0cnVlXG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJlY2FtZV9uZWNlc3Nhcnkgbm9kZSA9XG4gIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZTtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgbm9kZS5zdGF0ZVxuOztcblxubGV0IGFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gcGFyZW50LnN0YXRlIGluXG4gICgqIEluIHRoZSBjYXNlIHdoZW4gdGhlIGVkZ2UgYmVpbmcgYWRkZWQgY3JlYXRlcyBhIGN5Y2xlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlXG4gICAgIHJlY3Vyc2lvbiBpbiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXSB0byByZWFjaCBbcGFyZW50XSBhcyBhIGRlc2NlbmRhbnRcbiAgICAgb2YgW2NoaWxkXS4gIEluIHRoYXQgY2FzZSwgdGhlIHJlY3Vyc2lvbiB0ZXJtaW5hdGVzLCBiZWNhdXNlIFtOb2RlLmlzX25lY2Vzc2FyeVxuICAgICBwYXJlbnRdLiAgV2UgdGhlbiByZXR1cm4gaGVyZSBhbmQgc3Vic2VxdWVudGx5IGRldGVjdCB0aGUgY3ljbGUgaW5cbiAgICAgW2FkanVzdF9oZWlnaHRzXS4gKilcbiAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgKCogV2UgYWRqdXN0IGhlaWdodHMgc28gdGhhdCB3ZSBlbnN1cmUgdGhlcmUgYXJlIG5vIGN5Y2xlcyBiZWZvcmUgY2FsbGluZ1xuICAgICBbcHJvcGFnYXRlX2ludmFsaWRpdHldLiAqKVxuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuXG4gICAgQWRqdXN0X2hlaWdodHNfaGVhcC5hZGp1c3RfaGVpZ2h0c1xuICAgICAgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGRcbiAgICAgIH5wYXJlbnQ7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQ7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAoKiB3ZSBvbmx5IGFkZCBuZWNlc3NhcnkgcGFyZW50cyAqKVxuICBpZiAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpXG4gICYmIChTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHBhcmVudC5yZWNvbXB1dGVkX2F0XG4gICAgICB8fCBOb2RlLmVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG47O1xuXG5sZXQgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGxldCBzYXZlZCA9IHQuY3VycmVudF9zY29wZSBpblxuICB0LmN1cnJlbnRfc2NvcGUgPC0gc2NvcGU7XG4gIHRyeVxuICAgIGxldCB2ID0gZiAoKSBpblxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICB2XG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBpZiBub3QgKFNjb3BlLmlzX3ZhbGlkIHNjb3BlKVxuICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBydW4gd2l0aGluIGFuIGludmFsaWQgc2NvcGVcIiB0IFslc2V4cF9vZjogdF07XG4gIHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmZcbjs7XG5cbmxldCBjaGFuZ2VfY2hpbGRcbiAgOiB0eXBlIGEgYi5cbiAgICBwYXJlbnQ6YSBOb2RlLnRcbiAgICAtPiBvbGRfY2hpbGQ6YiBOb2RlLnQgVW9wdC50XG4gICAgLT4gbmV3X2NoaWxkOmIgTm9kZS50XG4gICAgLT4gY2hpbGRfaW5kZXg6aW50XG4gICAgLT4gdW5pdFxuICA9XG4gIGZ1biB+cGFyZW50IH5vbGRfY2hpbGQgfm5ld19jaGlsZCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF9jaGlsZFxuICB0aGVuIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleFxuICBlbHNlIChcbiAgICBsZXQgb2xkX2NoaWxkID0gVW9wdC51bnNhZmVfdmFsdWUgb2xkX2NoaWxkIGluXG4gICAgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9jaGlsZCBuZXdfY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSByZW1vdmUgW29sZF9jaGlsZF0gYmVmb3JlIGFkZGluZyBbbmV3X2NoaWxkXSwgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZSBzYW1lXG4gICAgICAgICBjaGlsZCBpbmRleC4gKilcbiAgICAgIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQ6b2xkX2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgKCogV2UgZm9yY2UgW29sZF9jaGlsZF0gdG8gdGVtcG9yYXJpbHkgYmUgbmVjZXNzYXJ5IHNvIHRoYXQgW2FkZF9wYXJlbnRdIGNhbid0XG4gICAgICAgICBtaXN0YWtlbmx5IHRoaW5rIGl0IGlzIHVubmVjZXNzYXJ5IGFuZCB0cmFuc2l0aW9uIGl0IHRvIG5lY2Vzc2FyeSAod2hpY2ggd291bGRcbiAgICAgICAgIGFkZCBkdXBsaWNhdGUgZWRnZXMgYW5kIGJyZWFrIHRoaW5ncyBob3JyaWJseSkuICopXG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIHRydWU7XG4gICAgICBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIGZhbHNlO1xuICAgICAgKCogV2UgW2NoZWNrX2lmX3VubmVjZXNzYXJ5XSBhZnRlciBbYWRkX3BhcmVudF0sIHNvIHRoYXQgd2UgZG9uJ3QgdW5uZWNlc3NhcmlseVxuICAgICAgICAgdHJhbnNpdGlvbiBub2RlcyBmcm9tIG5lY2Vzc2FyeSB0byB1bm5lY2Vzc2FyeSBhbmQgdGhlbiBiYWNrIGFnYWluLiAqKVxuICAgICAgY2hlY2tfaWZfdW5uZWNlc3Nhcnkgb2xkX2NoaWxkKSlcbjs7XG5cbmxldCBhZGRfYWxhcm0gY2xvY2sgfmF0IGFsYXJtX3ZhbHVlID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICBUaW1pbmdfd2hlZWwuYWRkIGNsb2NrLnRpbWluZ193aGVlbCB+YXQgYWxhcm1fdmFsdWVcbjs7XG5cbmxldCByZWMgcmVjb21wdXRlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIFNvbWUgKFQgbm9kZSk7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZCArIDE7XG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoQXJyYXlfZm9sZC5jb21wdXRlIGFycmF5X2ZvbGQpXG4gIHwgQXQgeyBhdDsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGFuIFtBdF0gbm9kZSBhZnRlciBbYXRdLiAgW2FkdmFuY2VfY2xvY2tdIHdhc1xuICAgICAgIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbQ29uc3RdIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBCZWZvcmVcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZVxuICAgICAgKHsgbWFpblxuICAgICAgIDsgZlxuICAgICAgIDsgbGhzXG4gICAgICAgOyByaHNfc2NvcGVcbiAgICAgICA7IHJocyA9IG9sZF9yaHNcbiAgICAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICA7IF9cbiAgICAgICB9IGFzIGJpbmQpIC0+XG4gICAgKCogV2UgY2xlYXIgW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gc28gaXQgd2lsbCBob2xkIGp1c3QgdGhlIG5vZGVzIGNyZWF0ZWQgYnlcbiAgICAgICB0aGlzIGNhbGwgdG8gW2ZdLiAqKVxuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQubm9uZTtcbiAgICBsZXQgcmhzID0gcnVuX3dpdGhfc2NvcGUgdCByaHNfc2NvcGUgfmY6KGZ1biAoKSAtPiBmIChOb2RlLnZhbHVlX2V4biBsaHMpKSBpblxuICAgIGJpbmQucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogQW50aWNpcGF0ZSB3aGF0IFttYXliZV9jaGFuZ2VfdmFsdWVdIHdpbGwgZG8sIHRvIG1ha2Ugc3VyZSBCaW5kX21haW4gaXMgc3RhbGVcbiAgICAgICByaWdodCBhd2F5LiBUaGlzIHdheSwgaWYgdGhlIG5ldyBjaGlsZCBpcyBpbnZhbGlkLCB3ZSdsbCBzYXRpc2Z5IHRoZSBpbnZhcmlhbnRcbiAgICAgICBzYXlpbmcgdGhhdCBbbmVlZHNfdG9fYmVfY29tcHV0ZWQgYmluZF9tYWluXSBpbiBbcHJvcGFnYXRlX2ludmFsaWRpdHldICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmJpbmRfcmhzX2NoaWxkX2luZGV4O1xuICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfcmhzXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBpbnZhbGlkYXRlIGFmdGVyIFtjaGFuZ2VfY2hpbGRdLCBiZWNhdXNlIGludmFsaWRhdGlvbiBjaGFuZ2VzIHRoZSBba2luZF0gb2ZcbiAgICAgICAgIG5vZGVzIHRvIFtJbnZhbGlkXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyIHZpc2l0IHRoZWlyIGNoaWxkcmVuLlxuICAgICAgICAgQWxzbywgdGhlIFtvbGRfcmhzXSBub2RlcyBhcmUgdHlwaWNhbGx5IG1hZGUgdW5uZWNlc3NhcnkgYnkgW2NoYW5nZV9jaGlsZF0sIGFuZFxuICAgICAgICAgc28gYnkgaW52YWxpZGF0aW5nIGFmdGVyd2FyZHMsIHdlIHdpbGwgbm90IHdhc3RlIHRpbWUgYWRkaW5nIHRoZW0gdG8gdGhlXG4gICAgICAgICByZWNvbXB1dGUgaGVhcCBhbmQgdGhlbiByZW1vdmluZyB0aGVtLiAqKVxuICAgICAgaWYgdC5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgICB0aGVuIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgZWxzZVxuICAgICAgICByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgdFxuICAgICAgICAgIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB+bmV3X3Njb3BlOm1haW4uY3JlYXRlZF9pbjtcbiAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQpO1xuICAgICgqIFtub2RlXSB3YXMgdmFsaWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBbQmluZF9saHNfY2hhbmdlXSBicmFuY2gsIGFuZCBpbnZhbGlkYXRpb25cbiAgICAgICBvbmx5IHZpc2l0cyBoaWdoZXIgbm9kZXMsIHNvIFtub2RlXSBpcyBzdGlsbCB2YWxpZC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IENvbnN0IGEgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuOyBfIH0gLT5cbiAgICBsZXQgdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgIGlmIG9ubHlfZnJlZXplX3doZW4gdmFsdWVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCB2YWx1ZSk7XG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIHRoZW4gc2V0X2hlaWdodCBub2RlIDAgZWxzZSBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFsdWVcbiAgfCBJZl90ZXN0X2NoYW5nZSAoeyBtYWluOyBjdXJyZW50X2JyYW5jaDsgdGVzdDsgdGhlbl87IGVsc2VfOyBfIH0gYXMgaWZfdGhlbl9lbHNlKSAtPlxuICAgIGxldCBkZXNpcmVkX2JyYW5jaCA9IGlmIE5vZGUudmFsdWVfZXhuIHRlc3QgdGhlbiB0aGVuXyBlbHNlIGVsc2VfIGluXG4gICAgaWZfdGhlbl9lbHNlLmN1cnJlbnRfYnJhbmNoIDwtIFVvcHQuc29tZSBkZXNpcmVkX2JyYW5jaDtcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6Y3VycmVudF9icmFuY2hcbiAgICAgIH5uZXdfY2hpbGQ6ZGVzaXJlZF9icmFuY2hcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmlmX2JyYW5jaF9jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IElmX3RoZW5fZWxzZSB7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoKVxuICB8IEludmFsaWQgLT5cbiAgICAoKiBXZSBuZXZlciBoYXZlIGludmFsaWQgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwOyB0aGV5IGFyZSBuZXZlciBzdGFsZS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBKb2luX2xoc19jaGFuZ2UgKHsgbGhzOyBtYWluOyByaHMgPSBvbGRfcmhzOyBfIH0gYXMgam9pbikgLT5cbiAgICBsZXQgcmhzID0gTm9kZS52YWx1ZV9leG4gbGhzIGluXG4gICAgam9pbi5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmpvaW5fcmhzX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSm9pbl9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgTWFwIChmLCBuMSkgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSlcbiAgfCBTbmFwc2hvdCB7IGF0OyBiZWZvcmU7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhIFtTbmFwc2hvdF0gYW5kIHRoZSBhbGFybSBzaG91bGQgaGF2ZSBmaXJlZC5cbiAgICAgICBbYWR2YW5jZV9jbG9ja10gd2FzIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbRnJlZXplXSBhdCB0aGUgYXBwcm9wcmlhdGVcbiAgICAgICB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBiZWZvcmVcbiAgfCBTdGVwX2Z1bmN0aW9uICh7IGNoaWxkOyBjbG9jazsgXyB9IGFzIHN0ZXBfZnVuY3Rpb25fbm9kZSkgLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGlsZCA9IFVvcHQudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlXG4gICAgICAgICAgIGNoaWxkLmNoYW5nZWRfYXRcbiAgICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXRcbiAgICAgICAgID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDwtIGNoaWxkLmNoYW5nZWRfYXQ7XG4gICAgICAgIHJlbW92ZV9hbGFybSBjbG9jayBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm07XG4gICAgICAgIGxldCBzdGVwX2Z1bmN0aW9uID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIDwtIFVvcHQuc29tZSAoU3RlcF9mdW5jdGlvbi5pbml0IHN0ZXBfZnVuY3Rpb24pO1xuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgPC0gU3RlcF9mdW5jdGlvbi5zdGVwcyBzdGVwX2Z1bmN0aW9uO1xuICAgICAgICAoKiBJZiB0aGUgY2hpbGQgaXMgYSBjb25zdGFudCwgd2UgZHJvcCBvdXIgcmVmZXJlbmNlIHRvIGl0LCB0byBhdm9pZCBob2xkaW5nIG9uIHRvXG4gICAgICAgICAgIHRoZSBlbnRpcmUgc3RlcCBmdW5jdGlvbi4gKilcbiAgICAgICAgaWYgTm9kZS5pc19jb25zdCBjaGlsZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuY2hpbGQgPC0gVW9wdC5ub25lO1xuICAgICAgICAgIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpKSkpO1xuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5hZHZhbmNlIHN0ZXBfZnVuY3Rpb25fbm9kZSB+dG9fOihub3cgY2xvY2spO1xuICAgIGxldCBzdGVwX2Z1bmN0aW9uX3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIGluXG4gICAgKG1hdGNoIFNlcXVlbmNlLmhkIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyB3aXRoXG4gICAgIHwgTm9uZSAtPiBpZiBVb3B0LmlzX25vbmUgY2hpbGQgdGhlbiBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHN0ZXBfZnVuY3Rpb25fdmFsdWUpXG4gICAgIHwgU29tZSAoYXQsIF8pIC0+XG4gICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtIDwtIGFkZF9hbGFybSBjbG9jayB+YXQgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBzdGVwX2Z1bmN0aW9uX3ZhbHVlXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY29tcHV0ZSB1KVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVmFyIHZhciAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YXIudmFsdWVcbiAgfCBNYXAyIChmLCBuMSwgbjIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpKVxuICB8IE1hcDMgKGYsIG4xLCBuMiwgbjMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSlcbiAgfCBNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpIChOb2RlLnZhbHVlX2V4biBuNCkpXG4gIHwgTWFwNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSkpXG4gIHwgTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpKVxuICB8IE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNykpXG4gIHwgTWFwOCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOCkpXG4gIHwgTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpKVxuICB8IE1hcDEwIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTApIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMCkpXG4gIHwgTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKSlcbiAgfCBNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpKVxuICB8IE1hcDEzIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMykpXG4gIHwgTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KSlcbiAgfCBNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTUpKVxuICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAobWF0Y2ggRXhwZXJ0LmJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIGV4cGVydCB3aXRoXG4gICAgIHwgYEludmFsaWQgLT5cbiAgICAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0XG4gICAgIHwgYE9rIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChleHBlcnQuZiAoKSkpXG5cbmFuZCBjb3B5X2NoaWxkIDogdHlwZSBhLiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGQ6YSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biB+cGFyZW50IH5jaGlsZCAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIGNoaWxkXG4gIHRoZW4gbWF5YmVfY2hhbmdlX3ZhbHVlIHBhcmVudCAoTm9kZS52YWx1ZV9leG4gY2hpbGQpXG4gIGVsc2UgKFxuICAgIGludmFsaWRhdGVfbm9kZSBwYXJlbnQ7XG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgcGFyZW50LnN0YXRlKVxuXG5hbmQgbWF5YmVfY2hhbmdlX3ZhbHVlIDogdHlwZSBhLiBhIE5vZGUudCAtPiBhIC0+IHVuaXQgPVxuICBmdW4gbm9kZSBuZXdfdmFsdWUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGxldCBvbGRfdmFsdWVfb3B0ID0gbm9kZS52YWx1ZV9vcHQgaW5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZV9vcHRcbiAgfHwgbm90XG4gICAgICAgKEN1dG9mZi5zaG91bGRfY3V0b2ZmXG4gICAgICAgICAgbm9kZS5jdXRvZmZcbiAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgIH5uZXdfdmFsdWUpXG4gIHRoZW4gKFxuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQuc29tZSBuZXdfdmFsdWU7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfY2hhbmdlZCA8LSB0Lm51bV9ub2Rlc19jaGFuZ2VkICsgMTtcbiAgICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gb2xkX3ZhbHVlX29wdDtcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGUpO1xuICAgIGlmIG5vZGUubnVtX3BhcmVudHMgPj0gMVxuICAgIHRoZW4gKFxuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBub2RlLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgaW5cbiAgICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBleHBlcnRcbiAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgICAgdVxuICAgICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpXG4gICAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAoKiBXZSBkb24ndCBkbyB0aGUgW2Nhbl9yZWNvbXB1dGVfbm93XSBvcHRpbWl6YXRpb24uICBTaW5jZSBtb3N0IG5vZGVzIG9ubHkgaGF2ZVxuICAgICAgICAgICBvbmUgcGFyZW50LCBpdCBpcyBub3QgcHJvYmFibHkgbm90IGEgYmlnIGxvc3MuICBJZiB3ZSBkaWQgaXQgYW55d2F5LCB3ZSdkXG4gICAgICAgICAgIGhhdmUgdG8gYmUgY2FyZWZ1bCwgYmVjYXVzZSB3aGlsZSB3ZSBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcGFyZW50cywgd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGVtLCBhbmQgaW4gcGFydGljdWxhciB3ZSBjYW4gZXhlY3V0ZSBsaHMtY2hhbmdlIG5vZGVzIHdobyBjYW5cbiAgICAgICAgICAgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgVGhpbmsgYWJvdXQ6XG5cbiAgICAgICAgICAge1tcbiAgICAgICAgICAgICBsaHMgPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBsaHMgPj58IEZuLmlkIGVsc2UgY29uc3QgYlxuICAgICAgICAgICBdfVxuXG4gICAgICAgICAgIElmIHRoZSBvcHRpbWl6YXRpb24ga2lja3MgaW4gd2hlbiB3ZSBwcm9wYWdhdGUgY2hhbmdlIHRvIHRoZSBwYXJlbnRzIG9mIFtsaHNdXG4gICAgICAgICAgICh3aGljaCBjaGFuZ2VzIGZyb20gW3RydWVdIHRvIFtmYWxzZV0pLCB3ZSBjb3VsZCBleGVjdXRlIHRoZSBbbGhzLWNoYW5nZV1cbiAgICAgICAgICAgZmlyc3QsIHdoaWNoIHdvdWxkIG1ha2UgZGlzY29ubmVjdCB0aGUgW21hcF0gbm9kZSBmcm9tIFtsaHNdLiAgQW5kIHRoZW4gd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZSBbbGhzXSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnltb3JlIGFuZFxuICAgICAgICAgICBpbmNyZW1lbnRhbCB3b3VsZCBzZWdmYXVsdCAodGhlcmUgbWF5IGJlIGEgbGVzcyBuYWl2ZSB3YXkgb2YgbWFraW5nIHRoaXMgd29ya1xuICAgICAgICAgICB0aG91Z2gpLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuICAgICAgZG9uZTtcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gbm9kZS5wYXJlbnQwIGluXG4gICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgIHwgRXhwZXJ0IHAgLT5cbiAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKSBpblxuICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBwXG4gICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgIHVcbiAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKVxuICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgfCBfIC0+ICgpKTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjYW5fcmVjb21wdXRlX25vdyA9XG4gICAgICAgICAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBhcmVuJ3QgcGFyZW50cy4gKilcbiAgICAgICAgICB8IEF0IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBBdF9pbnRlcnZhbHMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IENvbnN0IF8gfCBJbnZhbGlkIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZC4gKilcbiAgICAgICAgICB8IEFycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgTWFwMiBfXG4gICAgICAgICAgfCBNYXAzIF9cbiAgICAgICAgICB8IE1hcDQgX1xuICAgICAgICAgIHwgTWFwNSBfXG4gICAgICAgICAgfCBNYXA2IF9cbiAgICAgICAgICB8IE1hcDcgX1xuICAgICAgICAgIHwgTWFwOCBfXG4gICAgICAgICAgfCBNYXA5IF9cbiAgICAgICAgICB8IE1hcDEwIF9cbiAgICAgICAgICB8IE1hcDExIF9cbiAgICAgICAgICB8IE1hcDEyIF9cbiAgICAgICAgICB8IE1hcDEzIF9cbiAgICAgICAgICB8IE1hcDE0IF9cbiAgICAgICAgICB8IE1hcDE1IF9cbiAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF9cbiAgICAgICAgICB8IEV4cGVydCBfIC0+IGZhbHNlXG4gICAgICAgICAgKCogV2UgY2FuIGltbWVkaWF0ZWx5IHJlY29tcHV0ZSBbcGFyZW50XSBpZiBubyBvdGhlciBub2RlIG5lZWRzIHRvIGJlIHN0YWJsZVxuICAgICAgICAgICAgIGJlZm9yZSBjb21wdXRpbmcgaXQuICBJZiBbcGFyZW50XSBoYXMgYSBzaW5nbGUgY2hpbGQgKGkuZS4gW25vZGVdKSwgdGhlblxuICAgICAgICAgICAgIHRoaXMgYW1vdW50cyB0byBjaGVja2luZyB0aGF0IFtwYXJlbnRdIHdvbid0IGJlIGludmFsaWRhdGVkLCBpLmUuIHRoYXRcbiAgICAgICAgICAgICBbcGFyZW50XSdzIHNjb3BlIGhhcyBhbHJlYWR5IHN0YWJpbGl6ZWQuICopXG4gICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgRnJlZXplIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBNYXAgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgKCogRm9yIHRoZXNlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIFwiX2NoYW5nZVwiIGNoaWxkIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgICAgICAgICBldmFsdWF0ZWQgKGlmIG5lZWRlZCkuICBJZiBzbywgdGhpcyBhbHNvIGltcGxpZXM6XG5cbiAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAgICBdfSAqKVxuICAgICAgICAgIHwgQmluZF9tYWluIGIgLT4gbm9kZS5oZWlnaHQgPiBiLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBJZl90aGVuX2Vsc2UgaSAtPiBub2RlLmhlaWdodCA+IGkudGVzdF9jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBKb2luX21haW4gaiAtPiBub2RlLmhlaWdodCA+IGoubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgaW5cbiAgICAgICAgaWYgY2FuX3JlY29tcHV0ZV9ub3dcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgaWYgcGFyZW50LmhlaWdodCA8PSBSZWNvbXB1dGVfaGVhcC5taW5faGVpZ2h0IHQucmVjb21wdXRlX2hlYXBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgW3BhcmVudC5oZWlnaHRdIGlzIFs8PV0gdGhlIGhlaWdodCBvZiBhbGwgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwXG4gICAgICAgICAgICAgKHBvc3NpYmx5IGJlY2F1c2UgdGhlIHJlY29tcHV0ZSBoZWFwIGlzIGVtcHR5KSwgdGhlbiB3ZSBjYW4gcmVjb21wdXRlXG4gICAgICAgICAgICAgW3BhcmVudF0gaW1tZWRpYXRlbHkgYW5kIHNhdmUgYWRkaW5nIGl0IHRvIGFuZCB0aGVuIHJlbW92aW5nIGl0IGZyb20gdGhlXG4gICAgICAgICAgICAgcmVjb21wdXRlIGhlYXAuICopXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpO1xuICAgICAgICAgIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudCkpKSk7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgciA9XG4gIGxldCAoVCBub2RlKSA9IFJlY29tcHV0ZV9oZWFwLnJlbW92ZV9taW4gciBpblxuICBpZiBkZWJ1ZyAmJiBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJub2RlIHVuZXhwZWN0ZWRseSBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbXB1dGVkXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICByZWNvbXB1dGUgbm9kZVxuOztcblxubGV0IHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5kaXNhbGxvd2VkX29ic2VydmVycyBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgfCBEaXNhbGxvd2VkIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBsZXQgKFQgYWxsX29ic2VydmVycykgPSBVb3B0LnZhbHVlX2V4biB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICBpZiBJbnRlcm5hbF9vYnNlcnZlci5zYW1lIGludGVybmFsX29ic2VydmVyIGFsbF9vYnNlcnZlcnNcbiAgICB0aGVuIHQuYWxsX29ic2VydmVycyA8LSBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbDtcbiAgICBJbnRlcm5hbF9vYnNlcnZlci51bmxpbmsgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgY2hlY2tfaWZfdW5uZWNlc3NhcnkgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyID1cbiAgbGV0IHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlIGludGVybmFsX29ic2VydmVyIGluXG4gIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gKClcbiAgfCBDcmVhdGVkIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbiAgfCBJbl91c2UgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIERpc2FsbG93ZWQ7XG4gICAgU3RhY2sucHVzaCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKVxuOztcblxubGV0IGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmZpbmFsaXplZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQuZmluYWxpemVkX29ic2VydmVycyBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgdGhlbiBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl9maW5hbGl6ZXIgdCA9XG4gIHN0YWdlIChmdW4gb2JzZXJ2ZXIgLT5cbiAgICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAhb2JzZXJ2ZXIgaW5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZmluYWxpemVkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcikpXG47O1xuXG5sZXQgY3JlYXRlX29ic2VydmVyID8oc2hvdWxkX2ZpbmFsaXplID0gdHJ1ZSkgKG9ic2VydmluZyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gb2JzZXJ2aW5nLnN0YXRlIGluXG4gIGxldCBpbnRlcm5hbF9vYnNlcnZlciA6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gICAgeyBzdGF0ZSA9IENyZWF0ZWRcbiAgICA7IG9ic2VydmluZ1xuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IHByZXZfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgcHJldl9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgfVxuICBpblxuICBTdGFjay5wdXNoIHQubmV3X29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcik7XG4gIGxldCBvYnNlcnZlciA9IHJlZiBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBpZiBzaG91bGRfZmluYWxpemVcbiAgdGhlbiBHYy5FeHBlcnQuYWRkX2ZpbmFsaXplcl9leG4gb2JzZXJ2ZXIgKHVuc3RhZ2UgKG9ic2VydmVyX2ZpbmFsaXplciB0KSk7XG4gIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyArIDE7XG4gIG9ic2VydmVyXG47O1xuXG5sZXQgYWRkX25ld19vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0Lm5ld19vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5uZXdfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IG1vZHVsZSBQYWNrZWQgPSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFVubGlua2VkIC0+ICgpXG4gICAgfCBDcmVhdGVkIC0+XG4gICAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBJbl91c2U7XG4gICAgICBsZXQgb2xkX2FsbF9vYnNlcnZlcnMgPSB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfYWxsX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsIDwtIG9sZF9hbGxfb2JzZXJ2ZXJzO1xuICAgICAgICBQYWNrZWQuc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfYWxsX29ic2VydmVycykgKFVvcHQuc29tZSBwYWNrZWQpKTtcbiAgICAgIHQuYWxsX29ic2VydmVycyA8LSBVb3B0LnNvbWUgcGFja2VkO1xuICAgICAgbGV0IG9ic2VydmluZyA9IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyBpblxuICAgICAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcgaW5cbiAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgICAgKyBMaXN0Lmxlbmd0aCBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgICBsZXQgb2xkX29ic2VydmVycyA9IG9ic2VydmluZy5vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmcgPC0gb2xkX29ic2VydmVycztcbiAgICAgICAgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9vYnNlcnZlcnMpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcik7XG4gICAgICBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICAgICgqIEJ5IGFkZGluZyBbaW50ZXJuYWxfb2JzZXJ2ZXJdIHRvIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSwgd2UgbWF5IGhhdmUgYWRkZWRcbiAgICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyB0byBbb2JzZXJ2aW5nXS4gIFdlIG5lZWQgdG8gaGFuZGxlIFtvYnNlcnZpbmddIGFmdGVyIHRoaXNcbiAgICAgICAgIHN0YWJpbGl6YXRpb24gdG8gZ2l2ZSB0aG9zZSBoYW5kbGVycyBhIGNoYW5jZSB0byBydW4uICopXG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBvYnNlcnZpbmc7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nKTtcbiAgICAgIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBvYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlciA9XG4gIGxldCB0ID0gT2JzZXJ2ZXIuaW5jcl9zdGF0ZSBvYnNlcnZlciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT4gT2JzZXJ2ZXIudmFsdWVfZXhuIG9ic2VydmVyXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXCJcbiAgICAgIG9ic2VydmVyXG4gICAgICBbJXNleHBfb2Y6IF8gT2JzZXJ2ZXIudF1cbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZSBvYnNlcnZlciA9XG4gIHRyeSBPayAob2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuOztcblxubGV0IG5vZGVfb25fdXBkYXRlICh0eXBlIGEpIChub2RlIDogYSBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIE5vZGUub25fdXBkYXRlIG5vZGUgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZVxuOztcblxubGV0IG9ic2VydmVyX29uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgfmYgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBvYnNlcnZlciAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoT2JzZXJ2ZXIub2JzZXJ2aW5nIG9ic2VydmVyKVxuOztcblxubGV0IHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIHQubnVtX3Zhcl9zZXRzIDwtIHQubnVtX3Zhcl9zZXRzICsgMTtcbiAgdmFyLnZhbHVlIDwtIHZhbHVlO1xuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHZhci5zZXRfYXQgdC5zdGFiaWxpemF0aW9uX251bSA8IDBcbiAgdGhlbiAoXG4gICAgdmFyLnNldF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGxldCB3YXRjaCA9IHZhci53YXRjaCBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIHdhdGNoKTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSB3YXRjaCAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgd2F0Y2gpXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCB3YXRjaClcbjs7XG5cbmxldCBzZXRfdmFyIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJjYW5ub3Qgc2V0IHZhciAtLSBzdGFiaWxpemF0aW9uIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGlmIFVvcHQuaXNfbm9uZSB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gICAgdGhlbiBTdGFjay5wdXNoIHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIChUIHZhcik7XG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0LnNvbWUgdmFsdWVcbjs7XG5cbmxldCByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LndlYWtfaGFzaHRibHMgPiAwIGRvXG4gICAgbGV0IChUIHdlYWtfaGFzaHRibCkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LndlYWtfaGFzaHRibHMgaW5cbiAgICBXZWFrX2hhc2h0YmwucmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhIHdlYWtfaGFzaHRibFxuICBkb25lXG47O1xuXG5sZXQgc3RhYmlsaXplX3N0YXJ0IHQgPVxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemluZztcbiAgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0O1xuICAoKiBKdXN0IGxpa2UgZm9yIGJpbmRzLCB3ZSBhZGQgbmV3IG9ic2VydmVycyBiZWZvcmUgcmVtb3ZpbmcgZGlzYWxsb3dlZCBvYnNlcnZlcnMgdG9cbiAgICAgcG90ZW50aWFsbHkgYXZvaWQgc3dpdGNoaW5nIHRoZSBvYnNlcnZhYmlsaXR5IG9mIHNvbWUgbm9kZXMgYmFjayBhbmQgZm9ydGguICopXG4gIGFkZF9uZXdfb2JzZXJ2ZXJzIHQ7XG4gIHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0O1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXQgc3RhYmlsaXplX2VuZCB0ID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gTm9uZTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgKCogV2UgaW5jcmVtZW50IFt0LnN0YWJpbGl6YXRpb25fbnVtXSBiZWZvcmUgaGFuZGxpbmcgdmFyaWFibGVzIHNldCBkdXJpbmdcbiAgICAgc3RhYmlsaXphdGlvbiwgc28gdGhhdCB0aGV5IGFyZSB0cmVhdGVkIGFzIHNldCBkdXJpbmcgdGhlIG5ldyBzdGFiaWxpemF0aW9uIGN5Y2xlLlxuICAgICBBbHNvLCB3ZSBpbmNyZW1lbnQgYmVmb3JlIHJ1bm5pbmcgb24tdXBkYXRlIGhhbmRsZXJzLCB0byBhdm9pZCBydW5uaW5nIG9uIHVwZGF0ZVxuICAgICBoYW5kbGVycyBjcmVhdGVkIGR1cmluZyBvbiB1cGRhdGUgaGFuZGxlcnMuICopXG4gIHQuc3RhYmlsaXphdGlvbl9udW0gPC0gU3RhYmlsaXphdGlvbl9udW0uYWRkMSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCB2YXIpID0gU3RhY2sucG9wX2V4biB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiBpblxuICAgIGxldCB2YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDwtIFVvcHQubm9uZTtcbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgZG9uZTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBpblxuICAgIG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPC0gZmFsc2U7XG4gICAgbGV0IG9sZF92YWx1ZSA9IG5vZGUub2xkX3ZhbHVlX29wdCBpblxuICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50ID1cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBub2RlKVxuICAgICAgdGhlbiBJbnZhbGlkYXRlZFxuICAgICAgZWxzZSBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpXG4gICAgICB0aGVuIFVubmVjZXNzYXJ5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld192YWx1ZSA9IFVvcHQudmFsdWVfZXhuIG5vZGUudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVcbiAgICAgICAgdGhlbiBOZWNlc3NhcnkgbmV3X3ZhbHVlXG4gICAgICAgIGVsc2UgQ2hhbmdlZCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpKVxuICAgIGluXG4gICAgU3RhY2sucHVzaCB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSlcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnM7XG4gIGxldCBub3cgPSB0LnN0YWJpbGl6YXRpb25fbnVtIGluXG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzKSBkb1xuICAgIGxldCAoVCAobm9kZSwgbm9kZV91cGRhdGUpKSA9IFN0YWNrLnBvcF9leG4gdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIGluXG4gICAgTm9kZS5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIG5vZGUgbm9kZV91cGRhdGUgfm5vd1xuICBkb25lO1xuICB0LnN0YXR1cyA8LSBOb3Rfc3RhYmlsaXppbmc7XG4gIHJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyB0XG47O1xuXG5sZXQgcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4gPVxuICBsZXQgcmFpc2VkID0gUmFpc2VkX2V4bi5jcmVhdGUgZXhuIGluXG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWQ7XG4gIFJhaXNlZF9leG4ucmVyYWlzZSByYWlzZWRcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0YWJpbGl6ZVwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgdHJ5XG4gICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgd2hpbGUgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwIGRvXG4gICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByXG4gICAgZG9uZTtcbiAgICBzdGFiaWxpemVfZW5kIHRcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4blxuOztcblxubW9kdWxlIFN0ZXBfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBLZWVwX2dvaW5nXG4gICAgfCBEb25lXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSB0IDogU3RlcF9yZXN1bHQudCA9XG4gIHRyeVxuICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgICBLZWVwX2dvaW5nXG4gICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgICBpZiBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByO1xuICAgICAgICBLZWVwX2dvaW5nKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YWJpbGl6ZV9lbmQgdDtcbiAgICAgICAgRG9uZSlcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0ZXBcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgICAoKiBJZiBzdGFiaWxpemF0aW9uIGhhcyBhbHJlYWR5IHJhaXNlZCwgdGhlbiBbZXhuXSBpcyBtZXJlbHkgYSBub3RpZmljYXRpb24gb2YgdGhpc1xuICAgICAgICAgIGZhY3QsIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXRzZWxmLiAgV2Ugc2hvdWxkIGp1c3QgcHJvcGFnYXRlIFtleG5dXG4gICAgICAgICAgZm9yd2FyZDsgY2FsbGluZyBbcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHdvdWxkIHN0b3JlIFtleG5dIGFzIHRoZSBleGNlcHRpb25cbiAgICAgICAgICB0aGF0IGluaXRpYWxseSByYWlzZWQgZHVyaW5nIHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgcmFpc2UgZXhuXG4gICAgIHwgXyAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4bilcbjs7XG5cbmxldCBjcmVhdGVfbm9kZV9pbiB0IGNyZWF0ZWRfaW4ga2luZCA9XG4gIHQubnVtX25vZGVzX2NyZWF0ZWQgPC0gdC5udW1fbm9kZXNfY3JlYXRlZCArIDE7XG4gIE5vZGUuY3JlYXRlIHQgY3JlYXRlZF9pbiBraW5kXG47O1xuXG5sZXQgY3JlYXRlX25vZGUgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCB0LmN1cnJlbnRfc2NvcGUga2luZFxubGV0IGNyZWF0ZV9ub2RlX3RvcCB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IFNjb3BlLnRvcCBraW5kXG5cbmxldCBjcmVhdGVfdmFyIHQgPyh1c2VfY3VycmVudF9zY29wZSA9IGZhbHNlKSB2YWx1ZSA9XG4gIGxldCBzY29wZSA9IGlmIHVzZV9jdXJyZW50X3Njb3BlIHRoZW4gdC5jdXJyZW50X3Njb3BlIGVsc2UgU2NvcGUudG9wIGluXG4gIGxldCB3YXRjaCA9IGNyZWF0ZV9ub2RlX2luIHQgc2NvcGUgVW5pbml0aWFsaXplZCBpblxuICBsZXQgdmFyID1cbiAgICB7IFZhci52YWx1ZVxuICAgIDsgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gVW9wdC5ub25lXG4gICAgOyBzZXRfYXQgPSB0LnN0YWJpbGl6YXRpb25fbnVtXG4gICAgOyB3YXRjaFxuICAgIH1cbiAgaW5cbiAgTm9kZS5zZXRfa2luZCB3YXRjaCAoVmFyIHZhcik7XG4gIHZhclxuOztcblxuKCogQSBbY29uc3RdIHZhbHVlIGNvdWxkIGNvbWUgZnJvbSB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG91dGVyIGJpbmQuICBTbywgd2UgY3JlYXRlIGFcbiAgIFtjb25zdF0gbm9kZSBpbiB0aGUgY3VycmVudCBzY29wZSwgbm90IGluIFtTY29wZS50b3BdLiAqKVxubGV0IGNvbnN0IHQgYSA9IGNyZWF0ZV9ub2RlIHQgKENvbnN0IGEpXG5sZXQgbWFwIChuIDogXyBOb2RlLnQpIH5mID0gY3JlYXRlX25vZGUgbi5zdGF0ZSAoTWFwIChmLCBuKSlcbmxldCBtYXAyIChuMSA6IF8gTm9kZS50KSBuMiB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAyIChmLCBuMSwgbjIpKVxuXG5sZXQgYm90aCAobjEgOiBfIE5vZGUudCkgKG4yIDogXyBOb2RlLnQpID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCB7IGtpbmQgPSBDb25zdCBhOyBfIH0sIHsga2luZCA9IENvbnN0IGI7IF8gfSAtPiBjb25zdCBuMS5zdGF0ZSAoYSwgYilcbiAgfCBfIC0+IG1hcDIgbjEgbjIgfmY6VHVwbGUyLmNyZWF0ZVxuOztcblxubGV0IG1hcDMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDMgKGYsIG4xLCBuMiwgbjMpKVxubGV0IG1hcDQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSlcblxubGV0IG1hcDUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkpXG47O1xuXG5sZXQgbWFwNiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikpXG47O1xuXG5sZXQgbWFwNyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpKVxuOztcblxubGV0IG1hcDggKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkpXG47O1xuXG5sZXQgbWFwOSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkpXG47O1xuXG5sZXQgbWFwMTAgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSlcbjs7XG5cbmxldCBtYXAxMSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpKVxuOztcblxubGV0IG1hcDEyIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikpXG47O1xuXG5sZXQgbWFwMTMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSlcbjs7XG5cbmxldCBtYXAxNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSlcbjs7XG5cbmxldCBtYXAxNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCBuMTUgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSlcbjs7XG5cbmxldCBwcmVzZXJ2ZV9jdXRvZmYgfihpbnB1dCA6IF8gTm9kZS50KSB+b3V0cHV0ID1cbiAgTm9kZS5zZXRfY3V0b2ZmXG4gICAgb3V0cHV0XG4gICAgKEN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlOl8gfm5ld192YWx1ZTpfIC0+XG4gICAgICAgU3RhYmlsaXphdGlvbl9udW0uZXF1YWwgaW5wdXQuY2hhbmdlZF9hdCBvdXRwdXQuY2hhbmdlZF9hdCkpXG47O1xuXG5sZXQgZGVwZW5kX29uIGlucHV0IH5kZXBlbmRfb24gPVxuICBsZXQgb3V0cHV0ID0gbWFwMiBpbnB1dCBkZXBlbmRfb24gfmY6KGZ1biBhIF8gLT4gYSkgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBuZWNlc3NhcnlfaWZfYWxpdmUgaW5wdXQgPVxuICAoKiBJZiBbb3V0cHV0XSBpcyBhbGl2ZSwgdGhlbiBbb2JzZXJ2ZXJdIGlzIGFsaXZlLCB0aGVuIFtpbnB1dF0gaXMgbmVjZXNzYXJ5LiAgSWZcbiAgICAgW291dHB1dF0gaXMgdW5uZWNlc3NhcnksIHRoZW4gW291dHB1dF0gaXMgbm90IGEgcGFyZW50IG9mIFtpbnB1dF0sIGFuZCB0aHVzXG4gICAgIFtvdXRwdXRdJ3MgbGl2ZW5lc3MgaXMgZGVwZW5kZW50IHNvbGVseSBvbiB1c2VyIGNvZGUuICBBbmQgaW4gcGFydGljdWxhciwgaWYgW291dHB1dF1cbiAgICAgZGllcywgdGhlbiBbb2JzZXJ2ZXJdIHdpbGwgYmUgZmluYWxpemVkLCBhbmQgdGhlbiB1cG9uIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sXG4gICAgIFtpbnB1dF0gd2lsbCBiZWNvbWUgdW5uZWNlc3NhcnkgKGF0IGxlYXN0IHdpdGggcmVzcGVjdCB0byBbb3V0cHV0XSkuICopXG4gIGxldCBvYnNlcnZlciA9IGNyZWF0ZV9vYnNlcnZlciBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBtYXAgaW5wdXQgfmY6KGZ1biBhIC0+XG4gICAgICBHYy5rZWVwX2FsaXZlIG9ic2VydmVyO1xuICAgICAgYSlcbiAgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBiaW5kIChsaHMgOiBfIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmluZCA9XG4gICAgeyBCaW5kLm1haW5cbiAgICA7IGZcbiAgICA7IGxoc1xuICAgIDsgbGhzX2NoYW5nZVxuICAgIDsgcmhzID0gVW9wdC5ub25lXG4gICAgOyByaHNfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgKCogV2Ugc2V0IFtsaHNfY2hhbmdlXSB0byBuZXZlciBjdXRvZmYgc28gdGhhdCB3aGVuZXZlciBbbGhzXSBjaGFuZ2VzLCBbbWFpbl0gaXNcbiAgICAgcmVjb21wdXRlZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBbZl0gcmV0dXJucyBhbiBleGlzdGluZyBzdGFibGVcbiAgICAgbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgW2xoc19jaGFuZ2VdIHdvdWxkIGJlIHRoZSBvbmx5IHRoaW5nIGNhdXNpbmcgW21haW5dIHRvIGJlXG4gICAgIHN0YWxlLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIGJpbmQucmhzX3Njb3BlIDwtIEJpbmQgYmluZDtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChCaW5kX2xoc19jaGFuZ2UgYmluZCk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQmluZF9tYWluIGJpbmQpO1xuICBtYWluXG47O1xuXG5sZXQgYmluZDIgbjEgbjIgfmYgPVxuICBiaW5kIChtYXAyIG4xIG4yIH5mOihmdW4gdjEgdjIgLT4gdjEsIHYyKSkgfmY6KGZ1biAodjEsIHYyKSAtPiBmIHYxIHYyKVxuOztcblxubGV0IGJpbmQzIG4xIG4yIG4zIH5mID1cbiAgYmluZCAobWFwMyBuMSBuMiBuMyB+ZjooZnVuIHYxIHYyIHYzIC0+IHYxLCB2MiwgdjMpKSB+ZjooZnVuICh2MSwgdjIsIHYzKSAtPiBmIHYxIHYyIHYzKVxuOztcblxubGV0IGJpbmQ0IG4xIG4yIG4zIG40IH5mID1cbiAgYmluZFxuICAgIChtYXA0IG4xIG4yIG4zIG40IH5mOihmdW4gdjEgdjIgdjMgdjQgLT4gdjEsIHYyLCB2MywgdjQpKVxuICAgIH5mOihmdW4gKHYxLCB2MiwgdjMsIHY0KSAtPiBmIHYxIHYyIHYzIHY0KVxuOztcblxubGV0IGpvaW4gKGxocyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBqb2luID0geyBKb2luLmxoczsgbGhzX2NoYW5nZTsgcmhzID0gVW9wdC5ub25lOyBtYWluIH0gaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEpvaW5fbGhzX2NoYW5nZSBqb2luKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChKb2luX21haW4gam9pbik7XG4gIG1haW5cbjs7XG5cbmxldCBpZl8gKHRlc3QgOiBfIE5vZGUudCkgfnRoZW5fIH5lbHNlXyA9XG4gIGxldCB0ID0gdGVzdC5zdGF0ZSBpblxuICBsZXQgdGVzdF9jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGlmX3RoZW5fZWxzZSA9XG4gICAgeyBJZl90aGVuX2Vsc2UudGVzdDsgdGhlbl87IGVsc2VfOyB0ZXN0X2NoYW5nZTsgbWFpbjsgY3VycmVudF9icmFuY2ggPSBVb3B0Lm5vbmUgfVxuICBpblxuICBOb2RlLnNldF9jdXRvZmYgdGVzdF9jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIHRlc3RfY2hhbmdlIChJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UpO1xuICBtYWluXG47O1xuXG5sZXQgbGF6eV9mcm9tX2Z1biB0IH5mID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiB3aXRoaW5fc2NvcGUgdCBzY29wZSB+Zilcbjs7XG5cbmxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gNFxuXG5sZXQgbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICAoKiBIZXJlJ3MgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHdlIGdldCBbdC5jdXJyZW50X3Njb3BlXSBoZXJlLCBhbmQgdGhlbiBjYWxsXG4gICAgIFt3aXRoaW5fc2NvcGVdIGJlbG93LiAgQ29uc2lkZXIgdGhpcyAoaW1wb3NzaWJsZSkgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgIFttZW1vaXplX2Z1bl9ieV9rZXldOlxuXG4gICAgIHtbXG4gICAgICAgbGV0IHRhYmxlID1cbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfZXhuIGhhc2hhYmxlXG4gICAgICAgICAgIChMaXN0Lm1hcCBhbGxfcG9zc2libGVfYV92YWx1ZXMgfmY6KGZ1biBhIC0+IChwcm9qZWN0X2tleSBhLCBmIGEpKVxuICAgICAgIGluXG4gICAgICAgc3RhZ2UgKGZ1biBrZXkgLT4gSGFzaHRibC5maW5kX2V4biB0YWJsZSAocHJvamVjdF9rZXkgYSkpXG4gICAgIF19XG5cbiAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHVzZSBbY3VycmVudF9zY29wZV0gb3IgW3dpdGhpbl9zY29wZV0uICBBbGwgY2FsbHMgdG8gW2ZdXG4gICAgIG5hdHVyYWxseSBvY2N1ciBpbiBbdC5jdXJyZW50X3Njb3BlXS5cblxuICAgICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIGlzIGltcG9zc2libGUgYmVjYXVzZSB3ZSBkbyBub3QgaGF2ZSBbYWxsX3Bvc3NpYmxlX2FfdmFsdWVzXS5cbiAgICAgVGhlIGltcGxlbWVudGF0aW9uIGJlbG93IHVzZXMgW3dpdGhpbl9zY29wZV0gdG8gY2FsbCBbZiBhXSBpbiB0aGUgc2NvcGUgdGhhdCB3YXNcbiAgICAgY3VycmVudCBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwgdG8gW21lbW9pemVfZnVuX2J5X2tleV0gc28gdGhhdCB3ZSBjYW4gdGhpbmsgb2YgdGhlXG4gICAgIFt0YWJsZV0gYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCB0aGVuLCB3aGVuIGl0IGluIHJlYWxpdHkgaXMgY3JlYXRlZCBvbi1kZW1hbmQuICopXG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBIYXNodGJsLmNyZWF0ZSBoYXNoYWJsZSB+c2l6ZTppbml0aWFsX3NpemUgaW5cbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgSGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5sZXQgYXJyYXlfZm9sZCB0IGNoaWxkcmVuIH5pbml0IH5mID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGNyZWF0ZV9ub2RlIHQgKEFycmF5X2ZvbGQgeyBpbml0OyBmOyBjaGlsZHJlbiB9KVxuOztcblxubGV0IGFsbCB0IHRzID0gYXJyYXlfZm9sZCB0IChBcnJheS5vZl9saXN0X3JldiB0cykgfmluaXQ6W10gfmY6KGZ1biBhYyBhIC0+IGEgOjogYWMpXG5cbm1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBVbm9yZGVyZWRfYXJyYXlfZm9sZC5VcGRhdGVcblxubGV0IHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICB0XG4gICAgICA/KGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPSBJbnQubWF4X3ZhbHVlKVxuICAgICAgY2hpbGRyZW5cbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfnVwZGF0ZVxuICA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBpZiBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDw9IDBcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCBnb3Qgbm9uLXBvc2l0aXZlIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcIlxuICAgICAgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgWyVzZXhwX29mOiBpbnRdXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgTm9kZS5zZXRfa2luZFxuICAgICAgbWFpblxuICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdFxuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICB+Y2hpbGRyZW5cbiAgICAgICAgICAgIH5tYWluKSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgbGV0IGYgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCArIDFcbiAgICB8IFNvbWUgeCAtPiBmIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIGxldCBmX2ludmVyc2UgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCAtIDFcbiAgICB8IFNvbWUgeCAtPiBmX2ludmVyc2UgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbWFwXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIHRzXG4gICAgICAgfmluaXQ6KGluaXQsIDApXG4gICAgICAgfmZcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgZl9pbnZlcnNlKVxuICAgICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKVxuICAgIH5mOihmdW4gKGFjY3VtLCBudW1faW52YWxpZCkgLT4gaWYgbnVtX2ludmFsaWQgPSAwIHRoZW4gU29tZSBhY2N1bSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rID1cbiAgbGV0IGJvb2xfdG9faW50IGIgPSBpZiBiIHRoZW4gMSBlbHNlIDAgaW5cbiAgbWFwXG4gICAgfmY6KGZ1biBpIC0+IGkgPj0gaylcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgbm9kZXNcbiAgICAgICB+aW5pdDowXG4gICAgICAgfmY6KGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlICsgYm9vbF90b19pbnQgYilcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgKGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlIC0gYm9vbF90b19pbnQgYikpKVxuOztcblxubGV0IGV4aXN0cyB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOjFcbmxldCBmb3JfYWxsIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6KEFycmF5Lmxlbmd0aCBub2RlcylcblxubGV0IHN1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH51cGRhdGU6KEZfaW52ZXJzZSBzdWIpXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBvcHRfc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH5mX2ludmVyc2U6c3ViXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBzdW1faW50IHQgbm9kZXMgPSBzdW0gdCBub2RlcyB+emVybzowIH5hZGQ6KCArICkgfnN1YjooIC0gKVxuXG5sZXQgc3VtX2Zsb2F0IHQgbm9kZXMgPVxuICBzdW1cbiAgICB0XG4gICAgbm9kZXNcbiAgICB+emVybzowLlxuICAgIH5hZGQ6KCArLiApXG4gICAgfnN1YjooIC0uIClcbiAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczooQXJyYXkubGVuZ3RoIG5vZGVzKVxuOztcblxubGV0IHNldF9mcmVlemUgKG5vZGUgOiBfIE5vZGUudCkgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFNjb3BlLmlzX3RvcCBub2RlLmNyZWF0ZWRfaW4pO1xuICAoKiBCeSBtYWtpbmcgW25vZGUua2luZF0gYmUgW0ZyZWV6ZV0sIHdlIGFyZSBtYWtpbmcgW05vZGUuaXNfbmVjZXNzYXJ5IG5vZGVdLiAqKVxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgaW5cbiAgTm9kZS5zZXRfa2luZCBub2RlIChGcmVlemUgeyBtYWluID0gbm9kZTsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW4gfSk7XG4gIGlmIHdhc19uZWNlc3NhcnlcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4OktpbmQuZnJlZXplX2NoaWxkX2luZGV4XG4gIGVsc2UgYmVjYW1lX25lY2Vzc2FyeSBub2RlXG47O1xuXG5sZXQgZnJlZXplIChjaGlsZCA6IF8gTm9kZS50KSB+b25seV9mcmVlemVfd2hlbiA9XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gIHNldF9mcmVlemUgbm9kZSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW47XG4gIG5vZGVcbjs7XG5cbmxldCBhdCBjbG9jayB0aW1lID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKG5vdyBjbG9jaylcbiAgdGhlbiBjb25zdCB0IEJlZm9yZV9vcl9hZnRlci5BZnRlclxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBhdCA9IHsgQXQuYXQgPSB0aW1lOyBtYWluOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKEF0IGF0KTtcbiAgICBhdC5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0OnRpbWUgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXQgYXQpKTtcbiAgICBtYWluKVxuOztcblxubGV0IGFmdGVyIGNsb2NrIHNwYW4gPSBhdCBjbG9jayAoVGltZV9ucy5hZGQgKG5vdyBjbG9jaykgc3BhbilcblxubGV0IG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IChjbG9jayA6IENsb2NrLnQpIH5iYXNlIH5pbnRlcnZhbCA9XG4gIGxldCBhZnRlciA9IG5vdyBjbG9jayBpblxuICBsZXQgYXQgPSBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCB+Y2FuX2VxdWFsX2FmdGVyOmZhbHNlICgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IGFmdGVyKTtcbiAgYXRcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgKGNsb2NrIDogQ2xvY2sudCkgaW50ZXJ2YWwgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPCApIGludGVydmFsIChUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIGNsb2NrLnRpbWluZ193aGVlbClcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhdF9pbnRlcnZhbHMgZ290IHRvbyBzbWFsbCBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF07XG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiYXNlID0gbm93IGNsb2NrIGluXG4gIGxldCBhdF9pbnRlcnZhbHMgPSB7IEF0X2ludGVydmFscy5tYWluOyBiYXNlOyBpbnRlcnZhbDsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyk7XG4gICgqIFttYWluIDogdW5pdCBOb2RlLnRdLCBzbyB3ZSBtYWtlIGl0IG5ldmVyIGN1dG9mZiBzbyBpdCBjaGFuZ2VzIGVhY2ggdGltZSBpdCBpc1xuICAgICByZWNvbXB1dGVkLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbWFpbiBDdXRvZmYubmV2ZXI7XG4gIGF0X2ludGVydmFscy5hbGFybVxuICA8LSBhZGRfYWxhcm1cbiAgICAgICBjbG9ja1xuICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpKTtcbiAgbWFpblxuOztcblxubGV0IHNuYXBzaG90IGNsb2NrIHZhbHVlX2F0IH5hdCB+YmVmb3JlID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIGF0IChub3cgY2xvY2spXG4gIHRoZW5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IChub3cgY2xvY2spXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvciBcImNhbm5vdCB0YWtlIHNuYXBzaG90IGluIHRoZSBwYXN0XCIgYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdXG4gICAgZWxzZSBPayAoZnJlZXplIHZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihGbi5jb25zdCB0cnVlKSlcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IHNuYXBzaG90ID0geyBTbmFwc2hvdC5tYWluOyBhdDsgYmVmb3JlOyB2YWx1ZV9hdDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoU25hcHNob3Qgc25hcHNob3QpO1xuICAgICgqIFVubGlrZSBvdGhlciB0aW1lLWJhc2VkIGluY3JlbWVudGFscywgYSBzbmFwc2hvdCBpcyBjcmVhdGVkIGluIFtTY29wZS50b3BdIGFuZFxuICAgICAgIGNhbm5vdCBiZSBpbnZhbGlkYXRlZCBieSBpdHMgc2NvcGUuICBUaHVzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgYWxhcm0gdGhhdCBpcyBhZGRlZCwgYmVjYXVzZSBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gYmUgcmVtb3ZlZCBlYXJseS4gKilcbiAgICBpZ25vcmUgKGFkZF9hbGFybSBjbG9jayB+YXQgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU25hcHNob3Qgc25hcHNob3QpKSA6IEFsYXJtLnQpO1xuICAgIE9rIG1haW4pXG47O1xuXG5sZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiBjbG9jayBjaGlsZCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgc3RlcF9mdW5jdGlvbl9ub2RlID1cbiAgICB7IFN0ZXBfZnVuY3Rpb25fbm9kZS5tYWluXG4gICAgOyB2YWx1ZSA9IFVvcHQubm9uZVxuICAgIDsgY2hpbGQgPSBVb3B0LnNvbWUgY2hpbGRcbiAgICA7IGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB1cGNvbWluZ19zdGVwcyA9IFNlcXVlbmNlLmVtcHR5XG4gICAgOyBhbGFybSA9IEFsYXJtLm51bGxcbiAgICA7IGFsYXJtX3ZhbHVlID0gT2JqLm1hZ2ljIE5vbmUgKCogc2V0IGJlbG93ICopXG4gICAgOyBjbG9ja1xuICAgIH1cbiAgaW5cbiAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlIDwtIEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgbWFpblxuOztcblxubGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIFN0YWJpbGl6YXRpb25fbnVtLm5vbmU7XG4gICgqIGZvcmNlIHRoZSBub2RlIHRvIGJlIHN0YWxlICopXG4gIGlmIE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayAoY2xvY2sgOiBDbG9jay50KSB+dG9fID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcImFkdmFuY2VfY2xvY2tcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyBjbG9jaylcbiAgdGhlbiAoXG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgY2xvY2subm93IHRvXztcbiAgICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayBjbG9jay50aW1pbmdfd2hlZWwgfnRvXyB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyBjbG9jay50aW1pbmdfd2hlZWwgfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgd2hpbGUgVW9wdC5pc19zb21lIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBkb1xuICAgICAgbGV0IGFsYXJtX3ZhbHVlID0gVW9wdC51bnNhZmVfdmFsdWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGluXG4gICAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gYWxhcm1fdmFsdWUubmV4dF9maXJlZDtcbiAgICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gVW9wdC5ub25lO1xuICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgIHwgQXQgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQ29uc3QgQWZ0ZXIpO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgQXRfaW50ZXJ2YWxzICh7IG1haW47IGJhc2U7IGludGVydmFsOyBfIH0gYXMgYXRfaW50ZXJ2YWxzKSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgICAgICAgPC0gYWRkX2FsYXJtXG4gICAgICAgICAgICAgICBjbG9ja1xuICAgICAgICAgICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgICAgICAgICBhbGFybV92YWx1ZTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IFNuYXBzaG90IHsgbWFpbjsgdmFsdWVfYXQ7IF8gfSAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBtYWluKTtcbiAgICAgICAgc2V0X2ZyZWV6ZSBtYWluIH5jaGlsZDp2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooZnVuIF8gLT4gdHJ1ZSk7XG4gICAgICAgIG1ha2Vfc3RhbGUgbWFpblxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgbWFpbjsgXyB9IC0+IGlmIE5vZGUuaXNfdmFsaWQgbWFpbiB0aGVuIG1ha2Vfc3RhbGUgbWFpblxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdClcbjs7XG5cbmxldCBjcmVhdGVfY2xvY2sgdCB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgPVxuICBsZXQgdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0IGluXG4gIGxldCByZWMgY2xvY2sgOiBDbG9jay50ID1cbiAgICB7IG5vdyA9IGNyZWF0ZV92YXIgdCBzdGFydFxuICAgIDsgaGFuZGxlX2ZpcmVkXG4gICAgOyBmaXJlZF9hbGFybV92YWx1ZXMgPSBVb3B0Lm5vbmVcbiAgICA7IHRpbWluZ193aGVlbFxuICAgIH1cbiAgYW5kIGhhbmRsZV9maXJlZCBhbGFybSA9XG4gICAgbGV0IGFsYXJtX3ZhbHVlID0gVGltaW5nX3doZWVsLkFsYXJtLnZhbHVlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybSBpblxuICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzO1xuICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBVb3B0LnNvbWUgYWxhcm1fdmFsdWVcbiAgaW5cbiAgY2xvY2tcbjs7XG5cbmxldCBjcmVhdGUgKG1vZHVsZSBDb25maWcgOiBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgbGV0IGFkanVzdF9oZWlnaHRzX2hlYXAgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCByZWNvbXB1dGVfaGVhcCA9IFJlY29tcHV0ZV9oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCB0ID1cbiAgICB7IHN0YXR1cyA9IE5vdF9zdGFiaWxpemluZ1xuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IENvbmZpZy5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgOyBzdGFiaWxpemF0aW9uX251bSA9IFN0YWJpbGl6YXRpb25fbnVtLnplcm9cbiAgICA7IGN1cnJlbnRfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICA7IHJlY29tcHV0ZV9oZWFwXG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgPSAwXG4gICAgOyBhbGxfb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbmV3X29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgb25seV9pbl9kZWJ1ZyA9IE9ubHlfaW5fZGVidWcuY3JlYXRlICgpXG4gICAgOyB3ZWFrX2hhc2h0YmxzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlID0gZmFsc2VcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19jaGFuZ2VkID0gMFxuICAgIDsgbnVtX25vZGVzX2ludmFsaWRhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX2NyZWF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ID0gMFxuICAgIDsgbnVtX3Zhcl9zZXRzID0gMFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gV2Vha19oYXNodGJsLmNyZWF0ZSB+c2l6ZTppbml0aWFsX3NpemUgaGFzaGFibGUgaW5cbiAgbGV0IHBhY2tlZCA9IFBhY2tlZF93ZWFrX2hhc2h0YmwuVCB0YWJsZSBpblxuICBXZWFrX2hhc2h0Ymwuc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHRhYmxlIH50aHJlYWRfc2FmZV9mOihmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQud2Vha19oYXNodGJscyBwYWNrZWQpO1xuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIFdlYWtfaGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIFdlYWtfaGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICgqIEdpdmVuIHRoYXQgaW52YWxpZCBub2RlIGFyZSBhdCBhdHRlbXB0IGF0IGF2b2lkaW5nIGJyZWFraW5nIHRoZSBlbnRpcmUgaW5jcmVtZW50YWxcbiAgICAgY29tcHV0YXRpb24gb24gcHJvYmxlbXMsIGxldCdzIGp1c3QgaWdub3JlIGFueSBvcGVyYXRpb24gb24gYW4gaW52YWxpZCBpbmNyZW1lbnRhbFxuICAgICByYXRoZXIgdGhhbiByYWlzaW5nLiAqKVxuICBsZXQgZXhwZXJ0X2tpbmRfb2Zfbm9kZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICB8IEV4cGVydCBlIC0+IFVvcHQuc29tZSBlXG4gICAgfCBJbnZhbGlkIC0+IFVvcHQubm9uZVxuICAgIHwga2luZCAtPiByYWlzZV9zIFslc2V4cCBcInVuZXhwZWN0ZWQga2luZCBmb3IgZXhwZXJ0IG5vZGVcIiwgKGtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9XG4gICAgbGV0IGUgPSBFeHBlcnQuY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBpblxuICAgIGxldCBub2RlID0gY3JlYXRlX25vZGUgc3RhdGUgKEV4cGVydCBlKSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlXG4gICAgICB0aGVuXG4gICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgIDwtIFQgbm9kZSA6OiBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgPVxuICAgIG1hdGNoIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiA6IHN0cmluZyldXG4gICAgfCBTb21lIGN1cnJlbnQgLT4gY3VycmVudFxuICA7O1xuXG4gICgqIE5vdGUgdGhhdCB0aGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBzeW1tZXRyaWMgb2Ygb25lIGFub3RoZXI6IGluIFtsZXQgeSA9XG4gICAgIG1hcCB4XSwgW3hdIGlzIGFsd2F5cyBhIGNoaWxkIG9mIFt5XSAoYXNzdW1pbmcgW3hdIGRvZXNuJ3QgYmVjb21lIGludmFsaWQpIGJ1dCBbeV0gaW5cbiAgICAgb25seSBhIHBhcmVudCBvZiBbeF0gaWYgeSBpcyBuZWNlc3NhcnkuICopXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX2NoaWxkIG5vZGUgfmNoaWxkOmN1cnJlbnQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIHBhcmVudCBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50IHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfcGFyZW50IH5wYXJlbnQ6Y3VycmVudCBub2RlKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBjaGlsZHJlbiBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwibWFrZV9zdGFsZVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbWF0Y2ggRXhwZXJ0Lm1ha2Vfc3RhbGUgZSB3aXRoXG4gICAgICB8IGBBbHJlYWR5X3N0YWxlIC0+ICgpXG4gICAgICB8IGBPayAtPlxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICA7O1xuXG4gIGxldCBpbnZhbGlkYXRlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiaW52YWxpZGF0ZVwiO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChkZXAgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgKExpc3QubWVtXG4gICAgICAgICAgICAgICAgfmVxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICAgICAgICAgIChUIG5vZGUpKVxuICAgICAgICB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJhZGRfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbGV0IG5ld19jaGlsZF9pbmRleCA9IEV4cGVydC5hZGRfY2hpbGRfZWRnZSBlIChFIGRlcCkgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGV2ZW4gaWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBvZlxuICAgICAgICAgW25vZGVdLCBiZWNhdXNlIHdlIGNvdWxkIGJlIHJ1bm5pbmcgZHVlIHRvIGEgcGFyZW50IG90aGVyIHRoYW4gW25vZGVdIG1ha2luZyB1c1xuICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOmRlcC5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Om5ld19jaGlsZF9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGVkZ2UgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwicmVtb3ZlX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGZvciB0aGUgcmVhc29uIHN0YXRlZCBpblxuICAgICAgICAgW2FkZF9kZXBlbmRlbmN5XSAqKVxuICAgICAgbGV0IGVkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBlZGdlLmluZGV4IGluXG4gICAgICBsZXQgKEUgbGFzdF9lZGdlKSA9IEV4cGVydC5sYXN0X2NoaWxkX2VkZ2VfZXhuIGUgaW5cbiAgICAgIGxldCBsYXN0X2VkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBsYXN0X2VkZ2UuaW5kZXggaW5cbiAgICAgIGlmIGVkZ2VfaW5kZXggPD4gbGFzdF9lZGdlX2luZGV4XG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9kZS5zd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB+Y2hpbGQxOmVkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleFxuICAgICAgICAgICAgfmNoaWxkMjpsYXN0X2VkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBFeHBlcnQuc3dhcF9jaGlsZHJlbiBlIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleCB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSk7XG4gICAgICBFeHBlcnQucmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gZTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIG5vZGUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQ6ZWRnZS5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Omxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBlZGdlLmNoaWxkKSB0aGVuIEV4cGVydC5kZWNyX2ludmFsaWRfY2hpbGRyZW4gZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBFeHBlcnQuZWRnZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhvbl9jaGFuZ2UgPSBpZ25vcmUpIGNoaWxkIDogXyB0ID0geyBjaGlsZDsgb25fY2hhbmdlOyBpbmRleCA9IFVvcHQubm9uZSB9XG5cbiAgbGV0IHZhbHVlICh0IDogXyB0KSA9XG4gICAgbGV0IHN0YXRlID0gdC5jaGlsZC5zdGF0ZSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgU3RhdGUuRXhwZXJ0LmFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudFxuICAgICAgICBzdGF0ZVxuICAgICAgICB0LmNoaWxkXG4gICAgICAgIFwiRGVwZW5kZW5jeS52YWx1ZVwiO1xuICAgICgqIE5vdCBleHBvc2luZyB0aGUgX2V4biwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFkdmVydGlzZWQgYXMgYmVpbmcgdXNhYmxlIG9ubHlcbiAgICAgICBpbnNpZGUgdGhlIGNhbGxiYWNrcyBvZiBwYXJlbnRzLCB3aGVyZSBpdCB3aWxsIG5vdCByYWlzZS4gKilcbiAgICBOb2RlLnZhbHVlX2V4biB0LmNoaWxkXG4gIDs7XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgc3RhdGUgPyhvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IGZ1biB+aXNfbm93X29ic2VydmFibGU6XyAtPiAoKSkgZiA9XG4gICAgU3RhdGUuRXhwZXJ0LmNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlID0gU3RhdGUuRXhwZXJ0Lm1ha2Vfc3RhbGVcbiAgbGV0IHdhdGNoID0gRm4uaWRcbiAgbGV0IGludmFsaWRhdGUgPSBTdGF0ZS5FeHBlcnQuaW52YWxpZGF0ZVxuICBsZXQgYWRkX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQuYWRkX2RlcGVuZGVuY3lcbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LnJlbW92ZV9kZXBlbmRlbmN5XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5sZXQgY3JlYXRlIHN0YXRlIGNoaWxkcmVuIH5mIH5yZWR1Y2UgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWR1Y2VyID0gQmFsYW5jZWRfcmVkdWNlci5jcmVhdGVfZXhuICgpIH5sZW4gfnJlZHVjZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgIGxldCBub2RlID1cbiAgICAgIEV4cGVydDEuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgYSA9IEJhbGFuY2VkX3JlZHVjZXIuY29tcHV0ZV9leG4gcmVkdWNlciBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICAgICAgYSlcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBFeHBlcnQxLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRXhwZXJ0MS5EZXBlbmRlbmN5LmNyZWF0ZSBjaGlsZHJlbi4oaSkgfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgQmFsYW5jZWRfcmVkdWNlci5zZXRfZXhuIHJlZHVjZXIgaSAoZiBhKTtcbiAgICAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXIpKVxuICAgIGRvbmU7XG4gICAgU29tZSAoRXhwZXJ0MS5Ob2RlLndhdGNoIG5vZGUpKVxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIG1vc3RseSBhIHdyYXBwZXIgYXJvdW5kIFtTdGF0ZV0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5jcmVtZW50YWxfaW50ZlxuXG5tb2R1bGUgdHlwZSBJbmNyZW1lbnRhbF9jb25maWcgPSBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnXG5cbm1vZHVsZSBDb25maWcgPSBDb25maWdcblxubGV0IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkID0gMTI4XG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIG1vZHVsZSBDdXRvZmYgPSBDdXRvZmZcbiAgbW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBTdGVwX2Z1bmN0aW9uXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIHZhbCB0IDogdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbCA9IGNyZWF0ZVxuXG4gICAgbGV0IGNyZWF0ZSA/KG1heF9oZWlnaHRfYWxsb3dlZCA9IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkKSAoKSA6IChtb2R1bGUgUykgPVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgKG1vZHVsZSBDb25maWcuRGVmYXVsdCAoKSkgfm1heF9oZWlnaHRfYWxsb3dlZFxuICAgICAgZW5kKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50IChzdGF0ZSA6IFN0YXRlLnQpICgpID0gc3RhdGUuY3VycmVudF9zY29wZVxuICAgIGxldCB3aXRoaW4gc3RhdGUgdCB+ZiA9IFN0YXRlLndpdGhpbl9zY29wZSBzdGF0ZSB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTm9kZVxuXG4gIGxldCBzdGF0ZSB0ID0gdC5zdGF0ZVxuICBsZXQgcGFjayB0ID0gUGFja2VkLlQgdFxuICBsZXQgY29uc3Qgc3RhdGUgYSA9IFN0YXRlLmNvbnN0IHN0YXRlIGFcbiAgbGV0IHJldHVybiA9IGNvbnN0XG4gIGxldCBvYnNlcnZlID0gU3RhdGUuY3JlYXRlX29ic2VydmVyXG4gIGxldCBtYXAgPSBTdGF0ZS5tYXBcbiAgbGV0IGJpbmQgPSBTdGF0ZS5iaW5kXG5cbiAgbW9kdWxlIE5fYXJ5X21hcF9hbmRfYmluZCA9IHN0cnVjdFxuICAgIGxldCBtYXAyID0gU3RhdGUubWFwMlxuICAgIGxldCBtYXAzID0gU3RhdGUubWFwM1xuICAgIGxldCBtYXA0ID0gU3RhdGUubWFwNFxuICAgIGxldCBtYXA1ID0gU3RhdGUubWFwNVxuICAgIGxldCBtYXA2ID0gU3RhdGUubWFwNlxuICAgIGxldCBtYXA3ID0gU3RhdGUubWFwN1xuICAgIGxldCBtYXA4ID0gU3RhdGUubWFwOFxuICAgIGxldCBtYXA5ID0gU3RhdGUubWFwOVxuICAgIGxldCBtYXAxMCA9IFN0YXRlLm1hcDEwXG4gICAgbGV0IG1hcDExID0gU3RhdGUubWFwMTFcbiAgICBsZXQgbWFwMTIgPSBTdGF0ZS5tYXAxMlxuICAgIGxldCBtYXAxMyA9IFN0YXRlLm1hcDEzXG4gICAgbGV0IG1hcDE0ID0gU3RhdGUubWFwMTRcbiAgICBsZXQgbWFwMTUgPSBTdGF0ZS5tYXAxNVxuICAgIGxldCBiaW5kMiA9IFN0YXRlLmJpbmQyXG4gICAgbGV0IGJpbmQzID0gU3RhdGUuYmluZDNcbiAgICBsZXQgYmluZDQgPSBTdGF0ZS5iaW5kNFxuICBlbmRcblxuICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gIG1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgSW5maXhcblxuICBsZXQgam9pbiA9IFN0YXRlLmpvaW5cbiAgbGV0IGlmXyA9IFN0YXRlLmlmX1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuICBsZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IFN0YXRlLmRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemVcbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLm1lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSBzdGF0ZSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcblxuICBsZXQgYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZiA9IFN0YXRlLmFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCBzdGF0ZSB0cyB+ZiB+cmVkdWNlID0gUmVkdWNlX2JhbGFuY2VkLmNyZWF0ZSBzdGF0ZSB0cyB+ZiB+cmVkdWNlXG5cbiAgbW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFN0YXRlLlVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLnVub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS5vcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IGFsbCA9IFN0YXRlLmFsbFxuICBsZXQgZXhpc3RzID0gU3RhdGUuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gU3RhdGUuZm9yX2FsbFxuICBsZXQgYm90aCA9IFN0YXRlLmJvdGhcbiAgbGV0IHN1bSA9IFN0YXRlLnN1bVxuICBsZXQgb3B0X3N1bSA9IFN0YXRlLm9wdF9zdW1cbiAgbGV0IHN1bV9pbnQgPSBTdGF0ZS5zdW1faW50XG4gIGxldCBzdW1fZmxvYXQgPSBTdGF0ZS5zdW1fZmxvYXRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgPSBTdGF0ZS5jcmVhdGVfdmFyXG4gICAgbGV0IHNldCA9IFN0YXRlLnNldF92YXJcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgd2F0Y2ggdCA9IHQud2F0Y2hcblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0LnZhbHVlIHw+IFslc2V4cF9vZjogYV1cbiAgICBsZXQgcmVwbGFjZSB0IH5mID0gc2V0IHQgKGYgKGxhdGVzdF92YWx1ZSB0KSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBPYnNlcnZlclxuXG4gICAgbW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBJbml0aWFsaXplZCBvZiAnYVxuICAgICAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgICAgICB8IEludmFsaWRhdGVkXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IG9uX3VwZGF0ZV9leG4gdCB+KGYgOiBfIFVwZGF0ZS50IC0+IHVuaXQpID1cbiAgICAgIFN0YXRlLm9ic2VydmVyX29uX3VwZGF0ZV9leG4gdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOZWNlc3NhcnkgYSAtPiBmIChJbml0aWFsaXplZCBhKVxuICAgICAgICB8IENoYW5nZWQgKGExLCBhMikgLT4gZiAoQ2hhbmdlZCAoYTEsIGEyKSlcbiAgICAgICAgfCBJbnZhbGlkYXRlZCAtPiBmIEludmFsaWRhdGVkXG4gICAgICAgIHwgVW5uZWNlc3NhcnkgLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiSW5jcmVtZW50YWwgYnVnIC0tIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gZ290IHVuZXhwZWN0ZWQgdXBkYXRlIFVubmVjZXNzYXJ5XCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFslc2V4cF9vZjogXyB0XSlcbiAgICA7O1xuXG4gICAgbGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgdCA9IFN0YXRlLmRpc2FsbG93X2Z1dHVyZV91c2UgIXRcbiAgICBsZXQgdmFsdWUgPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZVxuICAgIGxldCB2YWx1ZV9leG4gPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZV9leG5cblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hICh0IDogXyB0KSA9XG4gICAgICBtYXRjaCAhdC5zdGF0ZSB3aXRoXG4gICAgICB8IENyZWF0ZWQgLT4gWyVtZXNzYWdlIFwiPHVuc3RhYmlsaXplZD5cIl1cbiAgICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IFslbWVzc2FnZSBcIjxkaXNhbGxvd2VkPlwiXVxuICAgICAgfCBJbl91c2UgLT5cbiAgICAgICAgbGV0IHVvcHQgPSAhdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgICAgIHRoZW4gWyVtZXNzYWdlIFwiPGludmFsaWQ+XCJdXG4gICAgICAgIGVsc2UgWyVzZXhwIChVb3B0LnVuc2FmZV92YWx1ZSB1b3B0IDogYSldXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEJlZm9yZV9vcl9hZnRlciA9IEJlZm9yZV9vcl9hZnRlclxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGUuQ2xvY2tcblxuICAgIGxldCBzdGF0ZSA9IGluY3Jfc3RhdGVcblxuICAgIGxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICAgICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQgaW5cbiAgICAgIGxldCBsZXZlbF9iaXRzID0gWyAxNDsgMTM7IDUgXSBpblxuICAgICAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvblxuICAgICAgICB+bGV2ZWxfYml0czpcbiAgICAgICAgICAoVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzIH5leHRlbmRfdG9fbWF4X251bV9iaXRzOnRydWUpXG4gICAgICAgICgpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgc3RhdGUgPyh0aW1pbmdfd2hlZWxfY29uZmlnID0gZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnKSB+c3RhcnQgKCkgPVxuICAgICAgKCogTWFrZSBzdXJlIFtzdGFydF0gaXMgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gIE90aGVyd2lzZSwgaWYgeW91XG4gICAgICAgICBmZWVkIFtDbG9jay5ub3cgKCldIHRvIGEgdGltZSBmdW5jdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgZG93biB0byBhIHRpbWUgaW5cbiAgICAgICAgIHRoZSBwYXN0LCBjYXVzaW5nIGVycm9ycy4gKilcbiAgICAgIGxldCBzdGFydCA9XG4gICAgICAgIFRpbWVfbnMub2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG4gICAgICAgICAgKFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHN0YXJ0KVxuICAgICAgaW5cbiAgICAgIFN0YXRlLmNyZWF0ZV9jbG9jayBzdGF0ZSB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnRcbiAgICA7O1xuXG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LnRpbWluZ193aGVlbFxuICAgIGxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoID0gU3RhdGUudGltaW5nX3doZWVsX2xlbmd0aFxuICAgIGxldCBub3cgPSBTdGF0ZS5ub3dcbiAgICBsZXQgd2F0Y2hfbm93IHQgPSB0Lm5vdy53YXRjaFxuICAgIGxldCBhdCA9IFN0YXRlLmF0XG4gICAgbGV0IGFmdGVyID0gU3RhdGUuYWZ0ZXJcbiAgICBsZXQgYXRfaW50ZXJ2YWxzID0gU3RhdGUuYXRfaW50ZXJ2YWxzXG4gICAgbGV0IGFkdmFuY2VfY2xvY2sgPSBTdGF0ZS5hZHZhbmNlX2Nsb2NrXG4gICAgbGV0IGFkdmFuY2VfY2xvY2tfYnkgdCBzcGFuID0gYWR2YW5jZV9jbG9jayB0IH50b186KFRpbWVfbnMuYWRkIChub3cgdCkgc3BhbilcbiAgICBsZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiA9IFN0YXRlLmluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxuICAgIGxldCBzdGVwX2Z1bmN0aW9uIHQgfmluaXQgc3RlcHMgPVxuICAgICAgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuICAgICAgICB0XG4gICAgICAgIChjb25zdCAoaW5jcl9zdGF0ZSB0KSAoU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuIH5pbml0IH5zdGVwcykpXG4gICAgOztcblxuICAgIGxldCBzbmFwc2hvdCA9IFN0YXRlLnNuYXBzaG90XG4gIGVuZFxuXG4gIGxldCBmcmVlemUgPyh3aGVuXyA9IGZ1biBfIC0+IHRydWUpIHQgPSBTdGF0ZS5mcmVlemUgdCB+b25seV9mcmVlemVfd2hlbjp3aGVuX1xuICBsZXQgZGVwZW5kX29uIHQgfmRlcGVuZF9vbiA9IFN0YXRlLmRlcGVuZF9vbiB0IH5kZXBlbmRfb25cbiAgbGV0IG5lY2Vzc2FyeV9pZl9hbGl2ZSA9IFN0YXRlLm5lY2Vzc2FyeV9pZl9hbGl2ZVxuXG4gIG1vZHVsZSBVcGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG4gIGxldCBvbl91cGRhdGUgPSBTdGF0ZS5ub2RlX29uX3VwZGF0ZVxuICBsZXQgc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuc3RhYmlsaXplIHN0YXRlXG4gIGxldCBhbV9zdGFiaWxpemluZyBzdGF0ZSA9IFN0YXRlLmFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gIGxldCBzYXZlX2RvdCA9IFN0YXRlLnNhdmVfZG90XG4gIGxldCBzYXZlX2RvdF90b19maWxlID0gU3RhdGUuc2F2ZV9kb3RfdG9fZmlsZVxuXG4gIG1vZHVsZSBOb2RlX3ZhbHVlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgSW52YWxpZFxuICAgICAgfCBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgICB8IFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBub2RlX3ZhbHVlIHQgOiBfIE5vZGVfdmFsdWUudCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gSW52YWxpZFxuICAgIGVsc2UgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIE5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gICAgZWxzZSBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gIDs7XG5cbiAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8gc2hvdyBqdXN0IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgIHJlcHJlc2VudGF0aW9uLiAgV2Ugb25seSBzaG93IHRoZSB2YWx1ZSBpZiBpdCBpcyBuZWNlc3NhcnkgYW5kIHZhbGlkLiAqKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBcIjxpbnZhbGlkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICB0aGVuIFwiPHVubmVjZXNzYXJ5PlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgVW9wdC5pc19ub25lIHQudmFsdWVfb3B0XG4gICAgdGhlbiBcIjx1bmNvbXB1dGVkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgdW5zYWZlX3ZhbHVlIHQgfD4gWyVzZXhwX29mOiBhXVxuICA7O1xuXG4gIG1vZHVsZSBFeHBlcnQgPSBFeHBlcnQxXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCB0MSB0MiA9IG1hcDIgdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG5cbiAgICAgIGluY2x1ZGUgTl9hcnlfbWFwX2FuZF9iaW5kXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdFxuICAgICAgICBsZXQgd2F0Y2ggPSBWYXIud2F0Y2hcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS53ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jb25maWcgKEluY3JlbWVudGFsX2NvbmZpZyA6IEluY3JlbWVudGFsX2NvbmZpZykgKCkgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgKG1vZHVsZSBJbmNyZW1lbnRhbF9jb25maWcpIH5tYXhfaGVpZ2h0X2FsbG93ZWQ6MTI4XG4gIGVuZFxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2xvY2tcblxuICAgIGxldCBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ICgpID1cbiAgICAgIGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyBTdGF0ZS50IH5zdGFydCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVydFxuXG4gICAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICBsZXQgY3JlYXRlID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmID0gY3JlYXRlIFN0YXRlLnQgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplICgpID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIFN0YXRlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoKSA9IGN1cnJlbnQgU3RhdGUudCAoKVxuICAgIGxldCB3aXRoaW4gdCB+ZiA9IHdpdGhpbiBTdGF0ZS50IHQgfmZcbiAgZW5kXG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID91c2VfY3VycmVudF9zY29wZSB2YWx1ZSA9IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgU3RhdGUudCB2YWx1ZVxuICBlbmRcblxuICBsZXQgY29uc3QgYSA9IGNvbnN0IFN0YXRlLnQgYVxuICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG4gIGxldCBhbGwgdHMgPSBhbGwgU3RhdGUudCB0c1xuICBsZXQgZXhpc3RzIHRzID0gZXhpc3RzIFN0YXRlLnQgdHNcbiAgbGV0IGZvcl9hbGwgdHMgPSBmb3JfYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcblxuICBsZXQgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIGxldCBhcnJheV9mb2xkIHRzIH5pbml0IH5mID0gYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgdHMgfmYgfnJlZHVjZSA9IHJlZHVjZV9iYWxhbmNlZCBTdGF0ZS50IHRzIH5mIH5yZWR1Y2VcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfnVwZGF0ZSA9XG4gICAgdW5vcmRlcmVkX2FycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZiB+dXBkYXRlID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDs7XG5cbiAgbGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgICBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlXG4gIDs7XG5cbiAgbGV0IHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBzdW1faW50IHRzID0gc3VtX2ludCBTdGF0ZS50IHRzXG4gIGxldCBzdW1fZmxvYXQgdHMgPSBzdW1fZmxvYXQgU3RhdGUudCB0c1xuICBsZXQgc3RhYmlsaXplICgpID0gc3RhYmlsaXplIFN0YXRlLnRcbiAgbGV0IGFtX3N0YWJpbGl6aW5nICgpID0gYW1fc3RhYmlsaXppbmcgU3RhdGUudFxuICBsZXQgc2F2ZV9kb3Qgb3V0ID0gc2F2ZV9kb3QgU3RhdGUudCBvdXRcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgZmlsZSA9IE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOnNhdmVfZG90XG4gIGxldCBsYXp5X2Zyb21fZnVuIGYgPSBsYXp5X2Zyb21fZnVuIFN0YXRlLnQgZlxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKCkgPSBNYWtlX3dpdGhfY29uZmlnIChDb25maWcuRGVmYXVsdCAoKSkgKClcbmluY2x1ZGUgR2VuZXJpY1xuXG5tb2R1bGUgQWRkX3dpdG5lc3MwIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICd3IHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAndyB0ID0gTS50XG5cbiAgbGV0IGludmFyaWFudCBfIHQgPSBNLmludmFyaWFudCB0XG4gIGxldCBzZXhwX29mX3QgXyB0ID0gTS5zZXhwX29mX3QgdFxuZW5kXG5cbm1vZHVsZSBBZGRfd2l0bmVzczEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBNLmludmFyaWFudCBpbnZhcmlhbnRfYSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IE0uc2V4cF9vZl90IHNleHBfb2ZfYSB0XG5lbmRcblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIGluY2x1ZGUgQ2xvY2tcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKENsb2NrKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlcnRcblxuICBtb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgaW5jbHVkZSBOb2RlXG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBOb2RlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChOb2RlKVxuZW5kXG5cbnR5cGUgKCdhLCAndykgdCA9ICgnYSwgJ3cpIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxudHlwZSAoJ2EsICd3KSBpbmNyZW1lbnRhbCA9ICgnYSwgJ3cpIHRcblxubGV0IGludmFyaWFudCA9IE5vZGUuaW52YXJpYW50XG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChPYnNlcnZlcilcbmVuZFxuXG5tb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTY29wZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU2NvcGUpXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhdGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFN0YXRlKVxuZW5kXG5cbm1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKFZhcilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBpbmNyZW1lbnRhbFxuICAgIHdpdGggdHlwZSBCZWZvcmVfb3JfYWZ0ZXIudCA9IEJlZm9yZV9vcl9hZnRlci50XG4gICAgd2l0aCB0eXBlIENsb2NrLnQgPSBzdGF0ZV93aXRuZXNzIENsb2NrLnRcbiAgICB3aXRoIHR5cGUgJ2EgQ3V0b2ZmLnQgPSAnYSBDdXRvZmYudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuRGVwZW5kZW5jeS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuRGVwZW5kZW5jeS50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5Ob2RlLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5Ob2RlLnRcbiAgICB3aXRoIHR5cGUgRXhwZXJ0LlN0ZXBfcmVzdWx0LnQgPSBFeHBlcnQuU3RlcF9yZXN1bHQudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBPYnNlcnZlci50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLlVwZGF0ZS50ID0gJ2EgT2JzZXJ2ZXIuVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgUGFja2VkLnQgPSBQYWNrZWQudFxuICAgIHdpdGggdHlwZSBTY29wZS50ID0gc3RhdGVfd2l0bmVzcyBTY29wZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLnQgPSBzdGF0ZV93aXRuZXNzIFN0YXRlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUuU3RhdHMudCA9IFN0YXRlLlN0YXRzLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnQgPVxuICAgICAgICAgICAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBVcGRhdGUudCA9ICdhIFVwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFZhci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBWYXIudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBkZWJ1ZyA9IGRlYnVnXG5lbmRcbiIsIlxub3BlbiBCYXNlXG5cbm1vZHVsZSBDb21tdXRhdGl2ZV9ncm91cCA9IHN0cnVjdFxuICAoKiogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2Ugc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuXG4gICAgICArIGFzc29jaWF0aXZpdHk6IFsoYSArIGIpICsgYyA9IGEgKyAoYiArIGMpXVxuICAgICAgKyBpZGVudGl0eTogW3plcm8gKyBhID0gYSArIHplcm8gPSBhXVxuICAgICAgKyBpbnZlcnNlczogZ2l2ZW4gYW55IFthXSB0aGVyZSBleGlzdHMgYSAodW5pcXVlKSBlbHQgW2JdIHN1Y2ggdGhhdCBbYSArIGIgPSBiICsgYSA9XG4gICAgICB6ZXJvXVxuICAgICAgKyBjb21tdXRhdGl2aXR5OiBbYSArIGIgPSBiICsgYV1cbiAgKilcblxuICBtb2R1bGUgdHlwZSBXaXRob3V0X3NleHAgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoKykgIDogdCAtPiB0IC0+IHRcbiAgICB2YWwgKC0pICA6IHQgLT4gdCAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBpbmNsdWRlIFdpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZWN0b3Jfc3BhY2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIGluY2x1ZGUgQ29tbXV0YXRpdmVfZ3JvdXAuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBzdHJ1Y3RcbiAgKCoqIEFsbCBbSW5jcl9tYXBdIGZ1bmN0aW9ucyB0YWtlIGFuIG9wdGlvbmFsIFtpbnN0cnVtZW50YXRpb25dIHBhcmFtZXRlciB0aGF0IGhhcyB0eXBlXG4gICAgICBbSW5zdHJ1bWVudGF0aW9uLnRdLiAgQSB2YWx1ZSBvZiB0aGlzIHR5cGUgaXMgYSByZWNvcmQgY29udGFpbmluZyBhIGZ1bmN0aW9uIHdoaWNoXG4gICAgICBpcyBwb2x5bW9ycGhpYyBvdmVyIGEgdW5pdmVyc2FsbHktcXVhbnRpZmllZCB0eXBlIFsnYV0uIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkXG4gICAgICBhIFt1bml0IC0+ICdhXSBmdW5jdGlvbiwgd2hpY2ggbXVzdCBiZSBpbW1lZGlhdGVseSBleGVjdXRlZCwgYW5kIHRoZSByZXN1bHQgb2ZcbiAgICAgIHdoaWNoIG11c3QgYmUgcmV0dXJuZWQuXG5cbiAgICAgIFRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGluc3RydW1lbnRvciB3aWxsIGJlIGRvaW5nIHRoZSBidWxrIG9mIHRoZSB3b3JrIGZvciB0aGVcbiAgICAgIFtJbmNyX21hcF0gZnVuY3Rpb24gaW4gcXVlc3Rpb24gKHVzdWFsbHkgYSBbTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZdKS5cblxuICAgICAgWW91IG1heSB3YW50IHRvIHVzZSB0aGUgSW5zdHJ1bWVudGF0aW9uIEFQSSB0byBhc3Npc3QgaW4gcGVyZm9ybWFuY2UgcHJvZmlsaW5nIGxpa2VcbiAgICAgIHNvOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgcHJvZmlsZSBuYW1lID1cbiAgICAgICAgICB7IEluY3JfbWFwLkluc3RydW1lbnRhdGlvbi5mID0gZnVuIGYgLT5cbiAgICAgICAgICAgICAgbGV0IGJlZm9yZSA9IFRpbWUubm93ICgpIGluXG4gICAgICAgICAgICAgIGxldCByID0gZiAoKSBpblxuICAgICAgICAgICAgICBsZXQgYWZ0ZXIgPSBUaW1lLm5vdyAoKSBpblxuICAgICAgICAgICAgICBsZXQgZGVsdGEgPSBUaW1lLnN1YiBhZnRlciBiZWZvcmUgaW5cbiAgICAgICAgICAgICAgcHJpbnRmIFwiJXMgdG9vayAlc1wiIG5hbWUgKFRpbWUuU3Bhbi50b19zdHJpbmdfaHVtIGRlbHRhKTtcbiAgICAgICAgICAgICAgclxuICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBJbmNyX21hcC5tYXAgfmluc3RydW1lbnRhdGlvbjoocHJvZmlsZSBcImZvb1wiKSB+ZjptYXBfZm9vXG4gICAgICBdfSAqKVxuXG4gIHR5cGUgdCA9IHsgZiA6ICdhLiAodW5pdCAtPiAnYSkgLT4gJ2EgfSBbQEB1bmJveGVkXVxuZW5kXG5cbigqKiBbU19nZW5dIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUgcmV0dXJuZWQgYnkgW0luY3JfbWFwLk1ha2VdLiAgSXQgaXMgYSBzcGVjaWFsaXphdGlvblxuICAgIG9mIHRoZSBpbnRlcmZhY2Ugb2YgW0luY3JfbWFwXSwgd2l0aDpcblxuICAgIC0gdGhlIFsnd10gc3RhdGVfd2l0bmVzcyB0eXBlIHBhcmFtZXRlciByZW1vdmVkXG4gICAgLSB0aGUgW0luY3JlbWVudGFsLlN0YXRlLnRdIGFyZ3VtZW50IHJlbW92ZWRcblxuICAgIFRoZSBjb21tZW50cyBmb3IgY29tcG9uZW50cyBvZiBbU19nZW5dIGFyZSBpbiBbbW9kdWxlIHR5cGUgSW5jcl9tYXBdIGJlbG93LiAqKVxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgbW9kdWxlIEluY3IgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIG1vZHVsZSBDdXRvZmYgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gSW5zdHJ1bWVudGF0aW9uXG5cbiAgdmFsIG9mX3NldFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICdjbXApIFNldC50IEluY3IudFxuICAgIC0+ICgnaywgdW5pdCwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgSW5jci50IC0+ICd2MiBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSBJbmNyLnQgLT4gJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgSW5jci50IC0+ICd2MiBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIEluY3IudCAtPiAndjIgSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCkgSW5jci50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIEluY3IudCAtPiAoJ3YyLCAndjMpIEVpdGhlci50IEluY3IudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50KSBJbmNyLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ICdhY2MgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2V4dHJhX2VxdWFsOignZXh0cmEgLT4gJ2V4dHJhIC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgnaywgJ3YsICdlKSBNYXAudCBJbmNyLnRcbiAgICAtPiAnZXh0cmEgSW5jci50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiBleHRyYV9jaGFuZ2VkOlxuICAgICAgICAgKG9sZF9leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBuZXdfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gaW5wdXQ6KCdrLCAndiwgJ2UpIE1hcC50XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gJ2FjYyBJbmNyLnRcblxuICB2YWwgY3V0b2ZmXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGN1dG9mZjondiBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCdrMiwgaW50LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcF9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAnazIpXG4gICAgLT4gKCdrMiwgaW50LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGlfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gJ3Igb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBpX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWluX3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3Ygb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXhfdmFsdWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcGlfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCdyICogJ3IpIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciAqICdyKSBvcHRpb24gSW5jci50XG5cbiAgdmFsIHZhbHVlX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiAqICd2KSBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWVyZ2VfYm90aF9zb21lXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ID9vdXRfZXF1YWw6KCd2MyAtPiAndjMgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAndjEgLT4gJ3YyIC0+ICd2MylcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSAqICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudCAqICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgdW56aXBfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3YxICogJ3YyKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnQgKiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IEluY3IudCAtPiAndjEgSW5jci50ICogJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50ICogKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtZXJnZSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjooJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyLnQgLT4gJ3YzIG9wdGlvbiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjMsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmbGF0dGVuIDogKCdrLCAndiBJbmNyLnQsICdjbXApIE1hcC50IC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBqb2luXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YgSW5jci50LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgc2VwYXJhdGVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2IEluY3IudCwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGtleXNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2MpIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ2MpIFNldC50IEluY3IudFxuXG4gIHZhbCByYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIEJhc2UuTWFwLnQgSW5jci50XG4gICAgLT4gJ2sgSW5jci50XG4gICAgLT4gaW50IG9wdGlvbiBJbmNyLnRcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrIE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiAnayBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBvcHRpb24gSW5jci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHN1YnJhbmdlX2J5X3JhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKGludCBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIEluY3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCByZWtleVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIGluZGV4X2J5aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGluZGV4X2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OigndiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiA/dXBkYXRlOlxuICAgICAgICAgKG91dGVyX2tleTonb3V0ZXJfa2V5XG4gICAgICAgICAgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXlcbiAgICAgICAgICAtPiBvbGRfZGF0YTondlxuICAgICAgICAgIC0+IG5ld19kYXRhOid2XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDoob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAnYWNjIEluY3IudFxuXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMiwgJ2syX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICgnazIsICd2LCAnazJfY21wKSBNYXAudCwgJ2sxX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrMiwgKCdrMSwgJ3YsICdrMV9jbXApIE1hcC50LCAnazJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgY29sbGFwc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5XG4gICAgICAgLCAndlxuICAgICAgICwgKCdvdXRlcl9jbXAsICdpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3MgKVxuICAgICAgICAgTWFwLnRcbiAgICAgICAgIEluY3IudFxuXG4gIHZhbCBjb2xsYXBzZV9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gbWVyZ2Vfa2V5czooJ291dGVyX2tleSAtPiAnaW5uZXJfa2V5IC0+ICdjb21iaW5lZF9rZXkpXG4gICAgLT4gY29tcGFyYXRvcjooJ2NvbWJpbmVkX2tleSwgJ2NvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnY29tYmluZWRfa2V5LCAndiwgJ2NvbWJpbmVkX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGV4cGFuZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSAqICdpbm5lcl9rZXksICd2LCAndHVwbGVfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBvdXRlcl9jb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5uZXJfY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgY291bnRpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gaW50IEluY3IudFxuXG4gIHZhbCBjb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gaW50IEluY3IudFxuXG4gIHZhbCBmb3JfYWxsaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGZvcl9hbGxcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGV4aXN0c2lcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBleGlzdHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIHN1bVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IChtb2R1bGUgQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSAndSlcbiAgICAtPiBmOigndiAtPiAndSlcbiAgICAtPiAndSBJbmNyLnRcblxuICBtb2R1bGUgTG9va3VwIDogc2lnXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgdmFsIGZpbmQgOiAoJ2ssICd2LCBfKSB0IC0+ICdrIC0+ICd2IG9wdGlvbiBJbmNyLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA6IHNpZ1xuICAgICAgdmFsIHNleHBfb2ZfdCA6ICgnayAtPiBTZXhwLnQpIC0+ICgndiAtPiBTZXhwLnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gU2V4cC50XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgICAgIDogIGZyb206aW50XG4gICAgICAtPiB0b186aW50XG4gICAgICAtPiAoJ2EsICdiLCAnYykgQmFzZS5NYXAudFxuICAgICAgLT4gKCdhICogJ2Egb3B0aW9uKSBvcHRpb25cbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgSW5jcl9tYXAgPSBzaWdcbiAgKCoqIEZ1bmN0aW9ucyBmb3IgdXNpbmcgbWFwcyBlZmZpY2llbnRseSB3aXRoaW4gSW5jcmVtZW50YWwuICBUaGUgZ29hbCBvZiB0aGUgYWxnb3JpdGhtc1xuICAgICAgaGVyZSBpcyB0byBkbyB3b3JrIG9uIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXB1dGF0aW9uIHByb3BvcnRpb25hbCB0byB0aGUgYW1vdW50IG9mXG4gICAgICB3b3JrIGRvbmUgb24gdGhlIGlucHV0LiAgaS5lLiwgW2tdIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGlucHV0IG1hcCBmb3Igc29tZVxuICAgICAgY29tcHV0YXRpb24gd2lsbCByZXN1bHQgaW4gW2tdIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG91dHB1dCBtYXAuICBUaGUgY2hhbmdlcyB0byB0aGVcbiAgICAgIGlucHV0IG1hcCBhcmUgdHlwaWNhbGx5IGNvbXB1dGVkIHVzaW5nIFtNYXAuc3ltbWV0cmljX2RpZmZdLlxuXG4gICAgICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgdGhlIG5vbi1pbmNyZW1lbnRhbCBzZW1hbnRpY3Mgb2YgdGhlc2UgZnVuY3Rpb25zIChpLmUuLixcbiAgICAgIGlnbm9yaW5nIHBlcmZvcm1hbmNlKSBpcyB0aGUgc2FtZSBhcyB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBpbiBDb3JlJ3MgW01hcF1cbiAgICAgIG1vZHVsZS4gICopXG5cbiAgbW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IEluc3RydW1lbnRhdGlvblxuXG4gIHZhbCBvZl9zZXRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ2NtcCkgU2V0LnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgdW5pdCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YxIC0+ICd2MilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCgndjIsICd2MykgRWl0aGVyLnQsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bm9yZGVyZWRfZm9sZCBpIH5pbml0IH5hZGQgfnJlbW92ZV0gY29uc3RydWN0cyBhIG1vcmUgaW5jcmVtZW50YWwgdmVyc2lvbiBvZjpcblxuICAgICAge1tcbiAgICAgICAgbGV0JW1hcCBtID0gaSBpblxuICAgICAgICBNYXAuZm9sZCBtIH5pbml0IH5mOmFkZFxuICAgICAgXX1cblxuICAgICAgYXNzdW1pbmcgdGhhdCBbcmVtb3ZlXSBpcyB0aGUgaW52ZXJzZSBvZiBbYWRkXSwgYW5kIHRoYXQgdGhlIG9wZXJhdGlvbnMgZm9yXG4gICAgICBkaWZmZXJlbnQga2V5cyBjYW4gYmUgcGVyZm9ybWVkIGluIGFueSBvcmRlci4gTm90ZSB0aGF0IFtkYXRhX2VxdWFsXSBkZWZhdWx0c1xuICAgICAgdG8gW3BoeXNfZXF1YWxdLCBidXQgYSBtb3JlIHByZWNpc2UgZXF1YWxpdHkgY2FuIGJlIHByb3ZpZGVkIGluc3RlYWQuXG5cbiAgICAgIFdoZW4gdGhlIGRhdGEgZm9yIGEga2V5IHVwZGF0ZXMsIGJ5IGRlZmF1bHQgW3JlbW92ZV0gaXMgY2FsbGVkIG9uIHRoZSBvbGQgZGF0YVxuICAgICAgYW5kIHRoZW4gW2FkZF0gaXMgY2FsbGVkIG9uIHRoZSBuZXcgZGF0YS5cbiAgICAgIFt1cGRhdGVdIHByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHNpbmdsZSBmdW5jdGlvbiB0byBjYWxsIGVhY2ggdGltZSBhIGtleSdzIGRhdGFcbiAgICAgIHVwZGF0ZXMsIGFuZCBjYW4gYmUgdXNlZCB0byBpbXByb3ZlIGVmZmljaWVuY3kuXG5cbiAgICAgIEZvciB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiwgYnkgZGVmYXVsdCBbYWRkXSBpcyBjYWxsZWQgb24gYWxsIHRoZSBlbGVtZW50cyBpbiB0aGVcbiAgICAgIG1hcC4gQXMgdGhpcyBjYW4gYmUgaW5lZmZpY2llbnQsIFtzcGVjaWFsaXplZF9pbml0aWFsXSBjYW4gYmUgcHJvdmlkZWQgdG8gcGVyZm9ybVxuICAgICAgdGhlIGNvbXB1dGF0aW9uIGluIGEgbW9yZSBlZmZlY3RpdmUgd2F5LlxuXG4gICAgICBJZiBbcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eV0gaXMgdHJ1ZSwgdGhlbiBpZiB0aGUgaW5wdXQgbWFwIHRyYW5zaXRpb25zIGZyb21cbiAgICAgIGJlaW5nIGZ1bGwgdG8gZW1wdHksIHRoZW4gaW5zdGVhZCBvZiBjYWxsaW5nIFtyZW1vdmVdIG9uIGV2ZXJ5IGt2LXBhaXIsIGl0IHdpbGxcbiAgICAgIGluc3RlYWQganVzdCBzZXQgdGhlIG91dHB1dCB0byB3aGF0ZXZlciB5b3UndmUgcGFzc2VkIGFzIFtpbml0XS5cbiAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIFtyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XSBpcyBbZmFsc2VdLCBzbyB0aGlzIG9wdGltaXphdGlvblxuICAgICAgZG9lcyBub3QgYXBwbHkgYXV0b21hdGljYWxseS5cblxuICAgICAgW2ZpbmFsaXplXSBkZWZhdWx0cyB0byBbRm4uaWRdIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGFjY3VtdWxhdG9yIHZhbHVlXG4gICAgICBpcyBzdG9yZWQgYW5kIHJldHVybmVkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAgWW91IGNhbiB1c2UgaXQgdG8gZS5nLiBwcm9jZXNzIHRoZVxuICAgICAgZm9sZCBvcGVyYXRpb25zIGluIGEgZGlmZmVyZW50IG9yZGVyLiAqKVxuICB2YWwgdW5vcmRlcmVkX2ZvbGRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3Vub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFdIGlzIHNpbWlsYXIgdG8gW3Vub3JkZXJlZF9mb2xkXSwgYnV0IGl0IGFsc29cbiAgICAgIGRlcGVuZHMgb24gYW5vdGhlciBhcmJpdHJhcnkgaW5jcmVtZW50YWwgdmFsdWUgd2hpY2ggY2FuIGJlIGZhY3RvcmVkIGludG9cbiAgICAgIHRoZSBmb2xkaW5nIGNvbXB1dGF0aW9uLiAqKVxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfd2l0aF9leHRyYVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/ZXh0cmFfZXF1YWw6KCdleHRyYSAtPiAnZXh0cmEgLT4gYm9vbClcbiAgICAtPiA/dXBkYXRlOihrZXk6J2sgLT4gb2xkX2RhdGE6J3YgLT4gbmV3X2RhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdlKSBNYXAudCAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/ZmluYWxpemU6KCdhY2MgLT4gJ2FjYylcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gKCgnaywgJ3YsICdlKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoJ2V4dHJhLCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gZXh0cmFfY2hhbmdlZDpcbiAgICAgICAgIChvbGRfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gbmV3X2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IGlucHV0OignaywgJ3YsICdlKSBNYXAudFxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICgnYWNjLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbY3V0b2ZmXSBhcHBsaWVzIGEgY3V0b2ZmIHRvIHZhbHVlcyBpbiB0aGUgbWFwIGFzIHRoZXkgcGFzcyB0aHJvdWdoIHRoZVxuICAgICAgZnVuY3Rpb24uICBJdCBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgY2FsbGluZyBbSW5jcl9tYXAubWFwJ10gd2l0aCBhblxuICAgICAgW0luY3Iuc2V0X2N1dG9mZl0gaW5zaWRlLCBidXQgd2l0aCBjb25zaWRlcmFibHkgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZFxuICAgICAgbWVtb3J5IHVzYWdlLiAqKVxuICB2YWwgY3V0b2ZmXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIEdpdmVuIGFuIGlucHV0IG1hcCBhbmQgYSBmdW5jdGlvbiBtYXBwaW5nIGEga3YtcGFpciB0byBhIG5ld1xuICAgICAgdmFsdWUsIFttYXBpX2NvdW50XSB3aWxsIGNvbXB1dGUgYSBtdWx0aS1zZXQga2V5ZWQgb24gdGhhdFxuICAgICAgbmV3IHZhbHVlLlxuXG4gICAgICBBbnkgdmFsdWUgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBhIGNvdW50IG9mIFwiMFwiIGlzIGluc3RlYWRcbiAgICAgIHJlbW92ZWQgZnJvbSB0aGUgbWFwLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2ZdIGlzIHF1aXRlIGZhc3QgYXMgdGhlIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgIGNhbGxlZCBtb3JlIG9mdGVuIHRoYW4gc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgaXQgZG9lcyB0aGlzXG4gICAgICBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW5nIGFuIGV4dHJhIG1hcC4gIElmIFtmXSBpcyB2ZXJ5IHNsb3dcbiAgICAgIGFuZCB5b3UgZG9uJ3QgbWluZCB0aGUgZXh0cmEgYWxsb2NhdGlvbnMsIHVzZVxuICAgICAgW0luY3JfbWFwLmluZGV4X2J5aV0gY29tcG9zZWQgd2l0aCBbSW5jcl9tYXAubWFwIH5mOk1hcC5sZW5ndGhdICopXG4gIHZhbCBtYXBpX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2sxLCAndiwgJ2NtcDEpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCBpbnQsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhlIHNhbWUgYXMgW21hcGlfY291bnRdIGJ1dCB0aGUgW2ZdIGZ1bmN0aW9uIG9ubHkgZ2V0cyB0byBzZWUgdGhlXG4gICAgICBkYXRhIGluc3RlYWQgb2YgYm90aCB0aGUga2V5IGFuZCB0aGUgZGF0YS4gKilcbiAgdmFsIG1hcF9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrMSwgJ3YsICdjbXAxKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCBpbnQsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcGlfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcGlfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcF9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCdyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWluX3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWF4X3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIFttaW4gKiBtYXhdIHdoZXJlIHRoZSB2YWx1ZSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyXG4gICAgICBpbiB0aGUgaW5wdXQgbWFwICopXG4gIHZhbCBtYXBpX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoKCdyICogJ3IpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgW21pbiAqIG1heF0gd2hlcmUgdGhlIHZhbHVlIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXJcbiAgICAgIGluIHRoZSBpbnB1dCBtYXAgKilcbiAgdmFsIG1hcF9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCgnciAqICdyKSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBhbmQgbGFyZ2VzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIHZhbHVlX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoKCd2ICogJ3YpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuXG4gICgqKiBMaWtlIFttZXJnZV0gaW4gW0Jhc2UuTWFwLm1lcmdlXS4gTm90ZSB0aGF0IFtmXSBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlIHBlciBrZXkgaW5cbiAgICAgIGFueSBnaXZlbiBzdGFiaWxpemF0aW9uLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbbWVyZ2VfYm90aF9zYW1lXSBpcyBsaWtlIFttZXJnZV0sIGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvbmx5IGNhcmVcbiAgICAgIGFib3V0IHRoZSBjYXNlIHdoZXJlIGJvdGggbWFwcyBjb250YWluIGEgcGFydGljdWxhciBrZXkuICopXG4gIHZhbCBtZXJnZV9ib3RoX3NvbWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gP291dF9lcXVhbDooJ3YzIC0+ICd2MyAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gJ3YxIC0+ICd2MiAtPiAndjMpXG4gICAgLT4gKCgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogTGlrZSBbbWVyZ2VdLCBidXQgb3BlcmF0aW5nIHVzaW5nIGluY3JlbWVudGFsIG5vZGVzLiBUaGlzIGlzIGEgZ29vZCB1c2UgY2FzZSBmb3JcbiAgICAgIFtwcHhfcGF0dGVybl9iaW5kXS4gKilcbiAgdmFsIG1lcmdlJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOigndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOlxuICAgICAgICAgKGtleTona1xuICAgICAgICAgIC0+ICgoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCd2MyBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHVuemlwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICdhICogJ2IsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICdhLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnQgKiAoKCdrLCAnYiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bnppcF9tYXBpXSBpcyBzaW1pbGFyIHRvIFtMaXN0LnVuemlwXSwgYnV0IGZvciBpbmNyZW1lbnRhbCBtYXBzLiBOb3RlIHRoYXQgW2ZdIG1heVxuICAgICAgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIGEgc2luZ2xlIGVsZW1lbnQuICopXG4gIHZhbCB1bnppcF9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3YxICogJ3YyKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgKiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW56aXBfbWFwaSddIGlzIGxpa2UgW3VuemlwX21hcGldLCBidXQgYWxsb3dzIHlvdSB0byBkZWZpbmUgdGhlIG1hcHBpbmcgZnJvbSB0aGVcbiAgICAgIGlucHV0IG1hcCdzIGVsZW1lbnRzIHRvIHRoZSBvdXRwdXQgbWFwcycgZWxlbWVudHMgaW5jcmVtZW50YWxseS5cblxuICAgICAgVGhlIG5haXZlIGltcGxlbWVudGF0aW9uIChzZWUgYmVsb3cpIHByb2R1Y2VzIHdvcnNlIEluY3JlbWVudGFsIGdyYXBocy5cblxuICAgICAge1tcbiAgICAgICAgbGV0IHRlbXAgPVxuICAgICAgICAgIEluY3JfbWFwLm1hcGknIGlucHV0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgZiB+a2V5IH5kYXRhIHw+IFR1cGxlMi51bmN1cnJ5IEluY3IuYm90aClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBJbmNyX21hcC5tYXAgdGVtcCB+ZjpUdXBsZTIuZ2V0MSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBJbmNyX21hcC5tYXAgdGVtcCB+ZjpUdXBsZTIuZ2V0MiBpblxuICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgXX0gKilcbiAgdmFsIHVuemlwX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOigndiwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoJ3YxLCAndykgSW5jcmVtZW50YWwudCAqICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgKiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGlzIGlzIHRoZSBcImVhc3lcIiB2ZXJzaW9uIG9mIFtqb2luXSAqKVxuICB2YWwgZmxhdHRlblxuICAgIDogICd3IEluY3JlbWVudGFsLlN0YXRlLnRcbiAgICAtPiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGUgbm9uLWluY3JlbWVudGFsIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBmdW5jdGlvbi4gIEl0c1xuICAgICAgcHVycG9zZSBpcyB0byBjb2xsYXBzZSB0aGUgZXh0cmEgbGV2ZWwgb2YgaW5jcmVtZW50YWxpdHkgYXQgdGhlIGxldmVsIG9mIHRoZSBkYXRhIG9mXG4gICAgICB0aGUgbWFwLiopXG4gIHZhbCBqb2luXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgc2VwYXJhdGVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGtleXNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAnYykgU2V0LnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBbcmFua10gb2YgYSBrZXkgKGdpdmVuIGluY3JlbWVudGFsbHkpIGluc2lkZSBvZiBhIG1hcCAoYWxzb1xuICAgICAgaW5jcmVtZW50YWwpLiAgVGhlIHRyYWRpdGlvbmFsIFtNYXAucmFua10gZnVuY3Rpb24gaXMgTyhuKSwgYW5kIHRoaXMgaW5jcmVtZW50YWxcbiAgICAgIHJhbmsgZnVuY3Rpb24gaGFzIHRoZSBmb2xsb3dpbmcgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzOlxuXG4gICAgICBkZWZpbml0aW9uczpcbiAgICAgIG4gOiB0aGUgc2l6ZSBvZiB0aGUgbWFwXG4gICAgICByIDogdGhlIHRpbWUgdG8gY29tcHV0ZSBbTWFwLnN5bW1ldHJpY19kaWZmXSBiZXR3ZWVuIHRoZSB0d28gbWFwc1xuICAgICAgayA6IHRoZSBjaGFuZ2UgaW4gcmFuayBvZiB0aGUga2V5IGJldHdlZW4gdHdvIHN0YWJpbGl6YXRpb25zXG5cbiAgICAgIG5vdGUgdGhhdCBbcl0gYW5kIFtrXSBhcmUgX211Y2hfIHNtYWxsZXIgdGhhbiBbbl0gZm9yIG1vc3QgcHJhY3RpY2FsIHB1cnBvc2VzXG5cbiAgICAgIC0gTyhsb2cgbikgd2hlbiB0aGUga2V5IGlzIG5vdCBpbiB0aGUgbWFwLlxuICAgICAgICBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvdGhlciBldmVyeSBvdGhlciBzY2VuYXJpby5cbiAgICAgIC0gTyhuKSBvbiB0aGUgaW5pdGlhbCBzdGFiaWxpemF0aW9uXG4gICAgICAtIE8obikgd2hlbiB0aGUga2V5IHRyYW5zaXRpb25zIGZyb20gbm90IGJlaW5nIGluIHRoZSBtYXAgdG8gYmVpbmcgaW4gdGhlIG1hcFxuICAgICAgLSBPKGxvZyBuICsgcikgd2hlbiB0aGUgbWFwIGNoYW5nZXNcbiAgICAgIC0gTyhsb2cgbiArIGspIHdoZW4gdGhlIGtleSBjaGFuZ2VzXG4gICAgICAtIE8obG9nIG4gKyByICsgaykgd2hlbiBib3RoIGtleSBhbmQgbWFwIGNoYW5nZSAqKVxuICB2YWwgcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgQmFzZS5NYXAudCwgJ3N0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoJ2ssICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKGludCBvcHRpb24sICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtzdWJyYW5nZSBtYXAgKG1pbiwgbWF4KV0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBzdWJtYXAgdGhhdCBpbmNsdWRlcyBhbGwgb2YgdGhlXG4gICAgICBrZXlzIGFuZCBkYXRhIGZyb20gW21hcF0gYmV0d2VlbiBbbWluXSBhbmQgW21heF0sIGFuZCBub25lIG9mIHRoZSBrZXlzIG91dHNpZGUgdGhlXG4gICAgICByYW5nZS5cblxuICAgICAgW3N1YnJhbmdlIG1hcCBOb25lXSBpcyB0aGUgZW1wdHkgbWFwLiBbcmFuZ2VdIGJlaW5nIFtOb25lXSBtZWFucyBubyBlbGVtZW50cyBhcmVcbiAgICAgIGNob3Nlbi5cblxuICAgICAgTm90ZSB0aGF0IGluY3JlbWVudGFsIGNoYW5nZXMgaGF2ZSBhIHJ1bnRpbWUgb2YgTygoayArIG0pIGxvZyBuKSB3aGVyZSBrIGlzIHRoZSBzaXplXG4gICAgICBvZiB0aGUgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2YgdGhlIGNoYW5nZXMgdG8gdGhlXG4gICAgICBlbGVtZW50cyBjb250YWluZWQgYnkgdGhlIHJhbmdlLiBUaGUgY29tcGxleGl0eSBvZiB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiBpcyB0aGVcbiAgICAgIHNhbWUgYXMgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uLCB3aXRoIHNvbWUgc2ltcGxpZmljYXRpb24uIGsgPSAwIGJlY2F1c2Ugd2UgaGF2ZVxuICAgICAgbm90IG1hZGUgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgbWFwIHlldCwgYW5kIG0gZXF1YWxzIHRoZSBzaXplIG9mIHRoZSByYW5nZSxcbiAgICAgIGJlY2F1c2UgdGhlIGluaXRpYWwgcmFuZ2UgaXMgZW1wdHkuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCAoJ2sgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqICdrIE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIG9wdGlvblxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3N1YnJhbmdlX2J5X3JhbmsgbWFwIChzLCBlKV0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBzdWJtYXAgdGhhdCBpbmNsdWRlcyAoZS1zKzEpXG4gICAgICBrZXlzIGJldHdlZW4gcy10aCBhbmQgZS10aCwgaW5jbHVzaXZlLlxuXG4gICAgICBJZiBzIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gbWFwIGxlbmd0aCwgdGhlIHJlc3VsdCBpcyBlbXB0eS5cbiAgICAgIElmIGUgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBtYXAgbGVuZ3RoLCB0aGUgcmVzdWx0IGNvbnRhaW5zIGtleXMgZnJvbSBzLXRoIHRvIHRoZVxuICAgICAgbGFzdCBvbmUuXG5cbiAgICAgIFJhaXNlcyBmb3IgaW52YWxpZCBpbmRpY2VzIC0gcyA8IDAgb3IgZSA8IHMuXG5cbiAgICAgIFJ1bnRpbWUgb2YgdGhlIGluaXRpYWwgY29tcHV0YXRpb24gaXMgTyhtaW4oZSwgbi1zKSArIGxvZyhuKSksIGkuZS4gbGluZWFyLFxuICAgICAgYnV0IG9wdGltaXplZCBmb3IgcmFuZ2VzIGNsb3NlIHRvIGJlZ2lubmluZyBvciBlbmQuXG5cbiAgICAgIFJ1bnRpbWUgb2YgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uIGlzIE8obG9nKG4pICsgayArIChtK20nKSAqIGxvZyhuKSkgd2hlcmU6XG4gICAgICAtIGsgaXMgdGhlIHNpemUgb2YgdGhlIGRpZmZcbiAgICAgIC0gbSBpcyB0aGUgdG90YWwgaW1wYWN0IG9mIG1hcCBjaGFuZ2VzIG9uIHRoZSByYW5nZSwgYm91bmRlZCBieSBrIChlLmcuIGlmIHdlIGFkZFxuICAgICAgICAxMDAxIGtleXMgYW5kIHJlbW92ZSAxMDAwIGJlbG93IHMsIHRoZW4gbSA9IDEpXG4gICAgICAtIG0nID0gTyggfG5ldyBzIC0gb2xkIHN8ICsgfG5ldyBlIC0gb2xkIGV8ICkuXG4gICopXG4gIHZhbCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoIGludCBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtyZWtleV0gdHJhbnNmb3JtcyBhIG1hcCBieSBtb2RpZnlpbmcgdGhlIHR5cGUgb2YgdGhlIGtleS4gIFRoZSB1c2VyIGlzXG4gICAgICByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBbZl0gZG9lc24ndCByZXR1cm4gdGhlIHNhbWUgb3V0cHV0IGtleSBmb3JcbiAgICAgIG11bHRpcGxlIGlucHV0IGtleXMuXG5cbiAgICAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBbZl0gaXMgY2hlYXAgdG8gY29tcHV0ZSBhbmQgYWNjb3JkaW5nbHkgbWF5IGNhbGxcbiAgICAgIGl0IG11bHRpcGxlIHRpbWVzLiAqKVxuICB2YWwgcmVrZXlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnazEsICd2LCAnY21wMSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCgnazIsICd2LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleF0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBtYXAtb2YtbWFwcyB3aGVyZSBlYWNoXG4gICAgICBrZXktZGF0YSBwYWlyIG9mIHRoZSBpbnB1dCBtYXAgaXMgcHJlc2VudCBpbiBvbmUgKG9yIG5vbmUpIG9mIHRoZSBpbm5lciBtYXBzLlxuICAgICAgW2luZGV4XSBzcGVjaWZpZXMgdGhlIG91dGVyIG1hcCBrZXkgdW5kZXIgd2hpY2ggZWFjaCBvcmlnaW5hbCBrZXktZGF0YSBwYWlyIGlzXG4gICAgICBmb3VuZC5cblxuICAgICAgQWxsIG9mIHRoZSByZXN1bHRpbmcgaW5uZXIgbWFwcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBub24tZW1wdHk7IGlmIHRoZSBpbm5lciBtYXBcbiAgICAgIHdvdWxkIG90aGVyd2lzZSBiZSBlbXB0eSwgdGhlbiB0aGUga2V5IGZvciB0aGF0IG1hcCBpcyBpbnN0ZWFkIHJlbW92ZWQgZnJvbSB0aGVcbiAgICAgIG91dGVyIG1hcC5cblxuICAgICAgQW4gYWxsLWF0LW9uY2UgdmVyc2lvbiBvZiBbaW5kZXhfYnldIHdvdWxkIGxvb2sgbGlrZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGluZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICAgICAgICBNYXAudG9fYWxpc3QgbWFwXG4gICAgICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBpbmRleCAtPiBTb21lIChpbmRleCwgKGtleSwgZGF0YSkpKVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSBjb21wYXJhdG9yXG4gICAgICAgICAgfD4gTWFwLm1hcCB+ZjooTWFwLm9mX2FsaXN0X2V4biAoTWFwLmNvbXBhcmF0b3JfcyBtYXApKVxuICAgICAgICA7O1xuICAgICAgXX0gKilcbiAgdmFsIGluZGV4X2J5aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KGtleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICAoKiogW2luZGV4X2J5IG1hcCB+Y29tcGFyYXRvciB+aW5kZXhdIGlzIGxpa2UgW2luZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4XSwgYnV0XG4gICAgICB0aGUgW2luZGV4XSBmdW5jdGlvbiBkb2VzIG5vdCB0YWtlIHRoZSBpbm5lciBtYXAncyBba2V5XS4gKilcbiAgdmFsIGluZGV4X2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooJ3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ID91cGRhdGU6XG4gICAgICAgICAob3V0ZXJfa2V5OidvdXRlcl9rZXlcbiAgICAgICAgICAtPiBpbm5lcl9rZXk6J2lubmVyX2tleVxuICAgICAgICAgIC0+IG9sZF9kYXRhOid2XG4gICAgICAgICAgLT4gbmV3X2RhdGE6J3ZcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDoob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3RyYW5zcG9zZV0gZmxpcHMgdGhlIG9yZGVyIG9mIGEgZG91Ymx5IG5lc3RlZCBpbmNyZW1lbnRhbCBtYXAuXG5cbiAgICAgIEFsbCBpbm5lciBtYXAgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudC4gKilcbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2syLCAnazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCgnazEsICgnazIsICd2LCAnazJfY21wKSBNYXAudCwgJ2sxX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnazIsICgnazEsICd2LCAnazFfY21wKSBNYXAudCwgJ2syX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvbGxhcHNlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggKCAnb3V0ZXJfa2V5ICogJ2lubmVyX2tleVxuICAgICAgICAgLCAndlxuICAgICAgICAgLCAoJ291dGVyX2NtcCwgJ2lubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzcyApXG4gICAgICAgICAgIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtjb2xsYXBzZV9ieV0gaXMgc2ltaWxhciB0byBbY29sbGFwc2VdLCBidXQgaXQgYWxsb3dzIHRoZSB1c2VyIHRvXG4gICAgICBjaG9vc2UgaG93IHRvIGNvbWJpbmUgdGhlIHR3byBrZXlzIGZyb20gdGhlIG91dGVyIGFuZCBpbm5lciBtYXBzLlxuICAgICAgVGhpcyBkb2VzIG1lYW4gdGhhdCBpdCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgaW1wbGVtZW50b3Igb2YgdGhlXG4gICAgICBbbWVyZ2Vfa2V5c10gZnVuY3Rpb24gdG8gdXBob2xkIHRoaXMgaW52YXJpYW50OlxuXG4gICAgICA+IGEgbWVyZ2VkLWtleSBiZWluZyBlcXVhbCB0byBhbm90aGVyIG1lcmdlZC1rZXkgaW1wbGllcyB0aGF0IHRoZVxuICAgICAgPiBvdXRlci1rZXlzIGFuZCBpbm5lci1rZXlzIHdoaWNoIHdlcmUgdXNlZCB0byBidWlsZCB0aGUgbWVyZ2VkIGtleXMgYWxzb1xuICAgICAgPiBjb21wYXJlIHRvIGJlIGVxdWFsIHRvIG9uZSBhbm90aGVyXG5cbiAgICAgIFRoZSBbfmNvbXBhcmF0b3JdIGFyZ3VtZW50IHRoZSBmaXJzdC1jbGFzcyBtb2R1bGUgb2YgdGhlIG91dHB1dCBrZXksIGl0XG4gICAgICB1c3VhbGx5IGxvb2tzIGxpa2UgdGhpczpcbiAgICAgIFsgfmNvbXBhcmF0b3I6KG1vZHVsZSBDb21iaW5lZF9rZXkpIF1cbiAgICAgIGJ1dCBtYWtlIHN1cmUgdGhhdCB0aGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFtDb21wYXJhdG9yLlNdIHNpZ25hdHVyZS4gKilcbiAgdmFsIGNvbGxhcHNlX2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gbWVyZ2Vfa2V5czooJ291dGVyX2tleSAtPiAnaW5uZXJfa2V5IC0+ICdjb21iaW5lZF9rZXkpXG4gICAgLT4gY29tcGFyYXRvcjooJ2NvbWJpbmVkX2tleSwgJ2NvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgoJ2NvbWJpbmVkX2tleSwgJ3YsICdjb21iaW5lZF9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb252ZXJ0IGEgbWFwIHdpdGggdHVwbGVzIGZvciBrZXlzIGludG8gYSBuZXN0ZWQgbWFwLiBUaGlzIG9wZXJhdGlvbiBpcyByb3VnaGx5IHRoZVxuICAgICAgaW52ZXJzZSBvZiBbY29sbGFwc2VdLCB0aG91Z2ggaWYgdGhlcmUgYXJlIG91dGVyIGtleXMgaW4gdGhlIHVuY29sbGFwc2VkIG1hcCB0aGF0XG4gICAgICBjb3JyZXNwb25kIHRvIGVtcHR5IGlubmVyIG1hcHMsIHRoZSBvdXRlciBrZXlzIHdpbGwgYmUgZHJvcHBlZCBmcm9tIHRoZSBleHBhbmRlZFxuICAgICAgbWFwLiAqKVxuICB2YWwgZXhwYW5kXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ291dGVyX2tleSAqICdpbm5lcl9rZXksICd2LCAndHVwbGVfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBvdXRlcl9jb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5uZXJfY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvdW50aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoaW50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChpbnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZvcl9hbGxpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmb3JfYWxsXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGV4aXN0c2lcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGV4aXN0c1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBJbmNyZW1lbnRhbGx5IGNvbXB1dGUgdGhlIHN1bSBvZiBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGUgbWFwLlxuXG4gICAgICBCZXdhcmUgb2YgZmxvYXQncyBuZWdhdGl2ZSBpbmZpbml0aWVzLiBUaGV5IGFyZW4ndCBjb21tdXRhdGl2ZSBhbmQgd2lsbCBtaXNiZWhhdmVcbiAgICAgIGhlcmUuXG4gICopXG4gIHZhbCBzdW1cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKG1vZHVsZSBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9ICd1KVxuICAgIC0+IGY6KCd2IC0+ICd1KVxuICAgIC0+ICgndSwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogWygnaywgJ3YpIExvb2t1cC50XSBwcm92aWRlcyBhIHdheSB0byBsb29rdXAga2V5cyBpbiBhIG1hcCB3aGljaCB1c2VzIHN5bW1ldHJpY1xuICAgICAgZGlmZnMgdG8gdHJpZ2dlciB1cGRhdGVzIG9mIHRoZSBsb29rdXBzLlxuXG4gICAgICBUaGUgY29tcGxleGl0eSBvZiBhbiB1cGRhdGUgZGVwZW5kcyBvbjpcbiAgICAgIC0gW25dOiB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIGxhcmdlciBvZiB0aGUgb2xkL3VwZGF0ZWQgaW5wdXQgbWFwXG4gICAgICAtIFtrXTogdGhlIG51bWJlciBvZiBsb29rdXAgbm9kZXMgY3JlYXRlZCB1c2luZyBbZmluZF1cbiAgICAgIC0gW21dOiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzeW1kaWZmIG9mIHRoZSBtYXBzXG4gICAgICAtIFtzeW1kaWZmKG4pXTogdGhlIGNvc3Qgb2YgcGVyZm9ybWluZyB0aGUgc3ltZGlmZiBvbiB0aGUgbWFwIChtIDw9IHN5bWRpZmYobikgPD0gbilcblxuICAgICAgRWFjaCB1cGRhdGUgc2hvdWxkIGNvc3QgW08oc3ltZGlmZihuKSArIG0gKiBsb2cgayldLCBzbyB0aGlzIHdpbGwgYmUgZWZmaWNpZW50IHdoZW5cbiAgICAgIHRoZXJlIGFyZSBhIGxvdCBvZiBsb29rdXBzIChjbG9zZSB0byBuKSBpbnRvIGEgbWFwIHdoaWNoIGNhbiBiZSBlZmZpY2llbnRseVxuICAgICAgc3ltZGlmZmVkIChhbmQgdGhlcmVmb3JlIGhhcyBhIHNtYWxsIG51bWJlciBvZiBjaGFuZ2VzIGFsc28pLiBUaGUgY29zdCBvZiB1cGRhdGluZ1xuICAgICAgd2hlbiBwZXJmb3JtaW5nIHRoZSBzYW1lIGxvb2t1cHMgYnkgbWVhbnMgb2YgW0luY3IubWFwIH5mOihmdW4gbSAtPiBNYXAuZmluZCBtIGtleSldXG4gICAgICBpcyBbTyhrICogbG9nIG4pXS5cbiAgKilcbiAgbW9kdWxlIExvb2t1cCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHRcblxuICAgICgqKiBDcmVhdGUgdGhlIGxvb2t1cCBzdHJ1Y3R1cmUgb24gYW4gaW5jcmVtZW50YWwgbWFwLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCwgJ3cpIHRcblxuICAgICgqKiBDcmVhdGUgYSBub2RlIHdoaWNoIHBlcmZvcm1zIFtNYXAuZmluZF0gb24gdGhlIGlucHV0IG1hcC5cblxuICAgICAgICBbZmluZCAoY3JlYXRlIGluY3JfbWFwKSBrZXldIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIFtJbmNyLm1hcCB+ZjooZnVuIG0gLT5cbiAgICAgICAgTWFwLmZpbmQgbSBrZXkpIGluY3JfbWFwXSwgYnV0IHdoZW4geW91IGNhbGwgW2ZpbmRdIG1hbnkgdGltZXMgZm9yIGEgc2luZ2xlXG4gICAgICAgIFtjcmVhdGVdIHRoZSBub2RlcyBzaG91bGQgdXBkYXRlIG1vcmUgZWZmaWNpZW50bHkgaW4gc3RhYmlsaXNhdGlvbiB3aGVuIFtpbmNyX21hcF1cbiAgICAgICAgY2hhbmdlcyBpbiBhIHdheSB3aGljaCBjYW4gYmUgZWZmaWNpZW50bHkgZGlmZmVkLlxuXG4gICAgICAgIFRoaXMgd2lsbCByZS11c2UgZXhpc3Rpbmcgbm9kZXMgd2hlbiBpdCBjYW4sIGJ1dCB3aWxsIG5vdCBhbHdheXMgZG8gc28uXG4gICAgKilcbiAgICB2YWwgZmluZCA6ICgnaywgJ3YsIF8sICd3KSB0IC0+ICdrIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgICAoKiogQSBjb252ZW5pZW50IHdheSB0byByZWZlciB0byB0aGUgdHlwZSBmb3IgYSBnaXZlbiBrZXkuICopXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAoJ3YsICd3KSB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzLCAndykgdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA6IHNpZ1xuICAgICAgdmFsIHNleHBfb2ZfdCA6ICgnayAtPiBTZXhwLnQpIC0+ICgndiAtPiBTZXhwLnQpIC0+ICgnaywgJ3YsICdjbXAsIF8pIHQgLT4gU2V4cC50XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgICAgIDogIGZyb206aW50XG4gICAgICAtPiB0b186aW50XG4gICAgICAtPiAoJ2EsICdiLCAnYykgQmFzZS5NYXAudFxuICAgICAgLT4gKCdhICogJ2Egb3B0aW9uKSBvcHRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgU19nZW4gPSBTX2dlblxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHN0YXRlX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFNfZ2VuXG4gICAgICB3aXRoIHR5cGUgJ2EgSW5jci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgICAgYW5kIHR5cGUgKCdrLCAndiwgJ2NtcCkgTG9va3VwLnQgPSAoJ2ssICd2LCAnY21wLCBzdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlMpIDpcbiAgICBTIHdpdGggdHlwZSBzdGF0ZV93aXRuZXNzIDo9IEluY3Iuc3RhdGVfd2l0bmVzcyBhbmQgbW9kdWxlIEluY3IgOj0gSW5jclxuZW5kXG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIEluY3JfbWFwX2ludGZcblxubGV0IG5vX2luc3RydW1lbnRhdGlvbiA9IHsgSW5zdHJ1bWVudGF0aW9uLmYgPSAoZnVuIGYgLT4gZiAoKSkgfVxuXG4oKiogVGhpcyB0eXBlIGxldHMgdXMgY2FwdHVyZSB0aGUga2luZCBvZiBtYXAgZnVuY3Rpb24gYmVpbmcgcGVyZm9ybWVkLCBzbyB3ZSBjYW4gd2l0aFxuICAgIG9uZSBpbXBsZW1lbnRhdGlvbiBwZXJmb3JtIG1hcCBhbmQgZmlsdGVyLW1hcCBvcGVyYXRpb25zLlxuXG4gICAgSGVyZSwgWydpbnB1dF9kYXRhXSBpcyB0aGUgdHlwZSBvZiBkYXRhIGluIHRoZSBpbnB1dCBtYXAsIFsnb3V0cHV0X2RhdGFdIGlzIHRoZSB0eXBlXG4gICAgb2YgZGF0YSBpbiB0aGUgb3V0cHV0IG1hcCwgYW5kIFsnZl9vdXRwdXRdIGlzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgW35mXSBmdW5jdGlvblxuICAgIHBhc3NlZCB0byB0aGUgbWFwcGluZyBmdW5jdGlvbi4gKilcbm1vZHVsZSBNYXBfdHlwZSA9IHN0cnVjdFxuICB0eXBlICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnZl9vdXRwdXQpIHQgPVxuICAgIHwgTWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSkgdFxuICAgIHwgRmlsdGVyX21hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEgb3B0aW9uKSB0XG5cbiAgKCogVGhlIGV4dHJhIHR5cGUgdmFyaWFibGUgJ2EgaXMgdG8gYWxsb3cgaW4gZnV0dXJlOlxuICAgICB8IEZpbHRlciA6ICgnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgYm9vbCkgdCAqKVxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIGxldCB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIGkgfmYgPVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQlbWFwIGEgPSBpIGluXG4gICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYSBpblxuICAgICAgb2xkIDo9IFNvbWUgKGEsIGIpO1xuICAgICAgYilcbiAgOztcblxuICBsZXQgY3V0b2ZmID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgfmN1dG9mZiA9XG4gICAgbGV0IGRhdGFfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZSA9XG4gICAgICBJbmNyZW1lbnRhbC5DdXRvZmYuc2hvdWxkX2N1dG9mZiBjdXRvZmYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG4gICAgaW5cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgY3VyIC0+XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+IGN1clxuICAgICAgfCBTb21lIChfb2xkX2luLCBvbGQpIC0+XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsIH5pbml0Om9sZCBvbGQgY3VyIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgIHwgYExlZnQgX29sZCAtPiBNYXAucmVtb3ZlIGFjYyBrZXlcbiAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IE1hcC5hZGRfZXhuIGFjYyB+a2V5IH5kYXRhOm5ld19cbiAgICAgICAgICB8IGBVbmVxdWFsIChfb2xkLCBuZXdfdmFsdWUpIC0+IE1hcC5zZXQgYWNjIH5rZXkgfmRhdGE6bmV3X3ZhbHVlKSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8oZmluYWxpemUgPSBGbi5pZClcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYylcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgbmV3X2luIC0+XG4gICAgICBsZXQgYWNjID1cbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNwZWNpYWxpemVkX2luaXRpYWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTWFwLmZvbGQgfmluaXQgfmY6YWRkIG5ld19pblxuICAgICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbilcbiAgICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9vdXQpIC0+XG4gICAgICAgICAgaWYgcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSAmJiBNYXAubGVuZ3RoIG5ld19pbiA9IDBcbiAgICAgICAgICB0aGVuIGluaXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+aW5pdDpvbGRfb3V0XG4gICAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjY1xuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld18gLT4gYWRkIH5rZXkgfmRhdGE6bmV3XyBhY2NcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+IHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjKVxuICAgICAgaW5cbiAgICAgIGZpbmFsaXplIGFjYylcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgIGluY3JfbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIG1hdGNoIHVwZGF0ZSB3aXRoXG4gICAgICB8IFNvbWUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGRcbiAgICAgICAgICAgIH5vdXRlcl9rZXlcbiAgICAgICAgICAgIH5pbm5lcl9rZXlcbiAgICAgICAgICAgIH5kYXRhOm5ld19kYXRhXG4gICAgICAgICAgICAocmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgaW5jcl9tYXBcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5vbGRfZGF0YTpvbGRfaW5uZXJfbWFwIH5uZXdfZGF0YTpuZXdfaW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICAoTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgb2xkX2lubmVyX21hcCBuZXdfaW5uZXJfbWFwIH5kYXRhX2VxdWFsKVxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gYWNjIChpbm5lcl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgZGF0YV9yZW1vdmVkIC0+IHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9yZW1vdmVkIGFjY1xuICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9hZGRlZCAtPiBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfYWRkZWQgYWNjXG4gICAgICAgICAgICB8IGBVbmVxdWFsIChvbGRfZGF0YSwgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIHVwZGF0ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MpIFtAbm9udGFpbF0pXG4gICAgICB+YWRkOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICBNYXAuZm9sZCBpbm5lcl9tYXAgfmluaXQ6YWNjIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgOztcblxuICBsZXQgd2l0aF9jb21wYXJhdG9yJyBnZXRfY29tcGFyYXRvciB4IGYgPVxuICAgIEluY3JlbWVudGFsLmJpbmQgKEluY3JlbWVudGFsLmZyZWV6ZSAoSW5jcmVtZW50YWwubWFwIHggfmY6Z2V0X2NvbXBhcmF0b3IpKSB+ZlxuICA7O1xuXG4gICgqKiBDYXB0dXJlcyB0aGUgY29tcGFyYXRvciAod2hpY2ggY2FuJ3QgY2hhbmdlIGFueXdheSwgc2luY2UgdGhlIHR5cGUgZGV0ZXJtaW5lcyB0aGVcbiAgICAgIGNvbXBhcmF0b3IpIGJ5IGZyZWV6aW5nIHRoZSBjb3JyZXNwb25kaW5nIG1hcC4gIE5vdGUgdGhhdCBieSBmaXJzdCB1c2luZyBJbmNyZW1lbnRhbC5tYXAgdG9cbiAgICAgIGdldCB0aGUgY29tcGFyYXRvciBvdXQgb2YgdGhlIG1hcCwgd2UgYWxsb3cgdGhlIGluaXRpYWwgbWFwIGl0c2VsZiB0byBiZSBnYXJiYWdlXG4gICAgICBjb2xsZWN0ZWQgKilcbiAgbGV0IHdpdGhfY29tcGFyYXRvciBtYXAgZiA9IHdpdGhfY29tcGFyYXRvcicgTWFwLmNvbXBhcmF0b3IgbWFwIGZcblxuICBsZXQgb2Zfc2V0ID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBzZXQgPVxuICAgIHdpdGhfY29tcGFyYXRvcicgU2V0LmNvbXBhcmF0b3Igc2V0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG9sZF9pbnB1dCA9IHJlZiAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBsZXQgb2xkX291dHB1dCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBJbmNyZW1lbnRhbC5tYXAgc2V0IH5mOihmdW4gbmV3X2lucHV0IC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IG5ld19vdXRwdXQgPVxuICAgICAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgICAgICAoU2V0LnN5bW1ldHJpY19kaWZmICFvbGRfaW5wdXQgbmV3X2lucHV0KVxuICAgICAgICAgICAgICB+aW5pdDohb2xkX291dHB1dFxuICAgICAgICAgICAgICB+ZjooZnVuIG91dHB1dCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRmlyc3QgayAtPiBNYXAucmVtb3ZlIG91dHB1dCBrXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgayAtPiBNYXAuYWRkX2V4biBvdXRwdXQgfmtleTprIH5kYXRhOigpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgb2xkX2lucHV0IDo9IG5ld19pbnB1dDtcbiAgICAgICAgICBvbGRfb3V0cHV0IDo9IG5ld19vdXRwdXQ7XG4gICAgICAgICAgbmV3X291dHB1dCkpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKG1hcCA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6aW5wdXRfZGF0YSAtPiBmX291dHB1dClcbiAgICA9XG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIGlucHV0IC0+XG4gICAgICBtYXRjaCBvbGQsIE1hcC5sZW5ndGggaW5wdXQgd2l0aFxuICAgICAgfCBfLCAwIHwgTm9uZSwgXyAtPlxuICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiAoTWFwLm1hcGkgaW5wdXQgfmYgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50KVxuICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+IE1hcC5maWx0ZXJfbWFwaSBpbnB1dCB+ZilcbiAgICAgIHwgU29tZSAob2xkX2lucHV0LCBvbGRfb3V0cHV0KSwgXyAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgIG9sZF9pbnB1dFxuICAgICAgICAgIGlucHV0XG4gICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICB+aW5pdDpvbGRfb3V0cHV0XG4gICAgICAgICAgfmY6KGZ1biBvdXRwdXQgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgYFJpZ2h0IG5ld19kYXRhIHwgYFVuZXF1YWwgKF8sIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6cmVzXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3V0cHV0X2RhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpvdXRwdXRfZGF0YSkpKSlcbiAgOztcblxuICBsZXQgbWFwaSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBnZW5lcmljX21hcGkgTWFwIH5pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGdlbmVyaWNfbWFwaSBGaWx0ZXJfbWFwIH5pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mXG4gIDs7XG5cbiAgbGV0IG1hcCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gaTEgaTIgfmYgPVxuICAgIGxldCBvbGQgPSByZWYgTm9uZSBpblxuICAgIEluY3JlbWVudGFsLm1hcDIgaTEgaTIgfmY6KGZ1biBhMSBhMiAtPlxuICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhMSBhMiBpblxuICAgICAgICBvbGQgOj0gU29tZSAoYTEsIGEyLCBiKTtcbiAgICAgICAgYikpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZXh0cmFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8oZmluYWxpemUgPSBGbi5pZClcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICBleHRyYVxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICAgICAgfmV4dHJhX2NoYW5nZWRcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIGV4dHJhID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYyBleHRyYSkgZXh0cmFcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBtYXAgZXh0cmEgfmY6KGZ1biB+b2xkIG5ld19pbiBuZXdfZXh0cmEgLT5cbiAgICAgIGxldCBhY2MgPVxuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc3BlY2lhbGl6ZWRfaW5pdGlhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIE1hcC5mb2xkIG5ld19pbiB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCB+a2V5IH5kYXRhIGFjYyBuZXdfZXh0cmEpXG4gICAgICAgICAgIHwgU29tZSBpbml0aWFsIC0+IGluaXRpYWwgfmluaXQgbmV3X2luIG5ld19leHRyYSlcbiAgICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9leHRyYSwgb2xkX291dCkgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIGlmIGV4dHJhX2VxdWFsIG9sZF9leHRyYSBuZXdfZXh0cmFcbiAgICAgICAgICAgIHRoZW4gb2xkX291dFxuICAgICAgICAgICAgZWxzZSBleHRyYV9jaGFuZ2VkIH5vbGRfZXh0cmEgfm5ld19leHRyYSB+aW5wdXQ6b2xkX2luIG9sZF9vdXRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHJldmVydF90b19pbml0X3doZW5fZW1wdHkgJiYgTWFwLmxlbmd0aCBuZXdfaW4gPSAwXG4gICAgICAgICAgdGhlbiBpbml0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjYyBuZXdfZXh0cmFcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjIG5ld19leHRyYVxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZCwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjIG5ld19leHRyYSlcbiAgICAgIGluXG4gICAgICBmaW5hbGl6ZSBhY2MpXG4gIDs7XG5cbiAgbGV0IG1hcGlfY291bnRcbiAgICAgICAgKHR5cGUgYSBjbXApXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBpbnB1dFxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gKHZhbCBjb21wYXJhdG9yKSBpblxuICAgIGxldCBhZGQgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLnVwZGF0ZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIG4gLT4gbiArIDEpXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC5jaGFuZ2UgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAxIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIG4gLT4gU29tZSAobiAtIDEpKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICBpbnB1dFxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiBNLmNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIGFjY1xuICAgICAgICBlbHNlIGFjYyB8PiByZW1vdmUgcHJldl9rZXkgfD4gYWRkIG5ld19rZXkpXG4gIDs7XG5cbiAgbGV0IG1hcF9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXykgLT4gU29tZSBtaW5cbiAgOztcblxuICBsZXQgbWF4X2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1heCwgXykgLT4gU29tZSBtYXhcbiAgOztcblxuICBsZXQgYm91bmRzX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCwgTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSwgU29tZSAobWF4LCBfKSAtPiBTb21lIChtaW4sIG1heClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgfmY6bWluX2hlbHBlclxuICAgICAgKG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICB+ZjptYXhfaGVscGVyXG4gICAgICAobWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIH5mOmJvdW5kc19oZWxwZXJcbiAgICAgIChtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcF9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtYXBfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX3ZhbHVlID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXhfdmFsdWUgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1hcF9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCB2YWx1ZV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgIH5vbGRcbiAgICAgICAgfm5ld19sZWZ0X21hcFxuICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICB+ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICAgIH5kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbmV3X2xlZnRfbWFwIGluXG4gICAgbGV0IG9sZF9sZWZ0X21hcCwgb2xkX3JpZ2h0X21hcCwgb2xkX291dHB1dCA9XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZWZ0X2RpZmYgPVxuICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9sZWZ0X21hcCBuZXdfbGVmdF9tYXAgfmRhdGFfZXF1YWw6ZGF0YV9lcXVhbF9sZWZ0XG4gICAgaW5cbiAgICBsZXQgcmlnaHRfZGlmZiA9XG4gICAgICBNYXAuc3ltbWV0cmljX2RpZmYgb2xkX3JpZ2h0X21hcCBuZXdfcmlnaHRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfcmlnaHRcbiAgICBpblxuICAgICgqIFdlIG1lcmdlIHRoZSB0d28gc2lkZXMgb2YgdGhlIGRpZmZzIHRvZ2V0aGVyIHNvIHdlIGNhbiBtYWtlIHN1cmUgdG8gaGFuZGxlIGVhY2hcbiAgICAgICBrZXkgZXhhY3RseSBvbmNlLiBUaGlzIHJlbGllcyBvbiBzeW1tZXRyaWMgZGlmZiBnaXZpbmcgc29ydGVkIG91dHB1dC4gKilcbiAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgIGxlZnRfZGlmZlxuICAgICAgcmlnaHRfZGlmZlxuICAgICAgfmNvbXBhcmU6KGZ1biAobGVmdF9rZXksIF8pIChyaWdodF9rZXksIF8pIC0+IGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkpXG4gICAgfD4gU2VxdWVuY2UuZm9sZCB+aW5pdDpvbGRfb3V0cHV0IH5mOihmdW4gb3V0cHV0IGRpZmZfZWxlbWVudCAtPlxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgIHwgTGVmdCAoa2V5LCBfKSB8IFJpZ2h0IChrZXksIF8pIC0+IGtleVxuICAgICAgICB8IEJvdGggKChsZWZ0X2tleSwgXyksIChfcmlnaHRfa2V5LCBfKSkgLT5cbiAgICAgICAgICAoKiBjb21wYXJpc29uIGZ1bmN0aW9ucyBjYW4gYmUgZXhwZW5zaXZlISAqKVxuICAgICAgICAgICgqIGFzc2VydCAoY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSA9IDApOyAqKVxuICAgICAgICAgIGxlZnRfa2V5XG4gICAgICBpblxuICAgICAgZiB+b2xkX291dHB1dCB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudClcbiAgOztcblxuICBsZXQgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgPSBmdW5jdGlvblxuICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgOztcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMlxuICAgICAgbGVmdF9tYXBcbiAgICAgIHJpZ2h0X21hcFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICAgIG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgICAgfm9sZFxuICAgICAgICAgIH5uZXdfbGVmdF9tYXBcbiAgICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICAgIH5kYXRhX2VxdWFsX2xlZnRcbiAgICAgICAgICB+ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgICAgIH5mOihmdW4gfm9sZF9vdXRwdXQ6XyB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudCAtPlxuICAgICAgICAgICAgKCogVGhlc2UgdmFsdWVzIHJlcHJlc2VudCB3aGV0aGVyIHRoZXJlIGlzIGRhdGEgZm9yIHRoZSBnaXZlbiBrZXkgaW4gdGhlIG5ld1xuICAgICAgICAgICAgICAgaW5wdXQgaW4gdGhlIGxlZnQgYW5kIHJpZ2h0IG1hcC4gKilcbiAgICAgICAgICAgIGxldCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgIHwgQm90aCAoKF8sIGxlZnRfZGlmZiksIChfLCByaWdodF9kaWZmKSkgLT5cbiAgICAgICAgICAgICAgICBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYsIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmZcbiAgICAgICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmLCBNYXAuZmluZCBuZXdfcmlnaHRfbWFwIGtleVxuICAgICAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgIE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXksIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3V0cHV0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgeCwgTm9uZSAtPiBmIH5rZXkgKGBMZWZ0IHgpXG4gICAgICAgICAgICAgIHwgTm9uZSwgU29tZSB5IC0+IGYgfmtleSAoYFJpZ2h0IHkpXG4gICAgICAgICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZiB+a2V5IChgQm90aCAoeCwgeSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggb3V0cHV0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGEpKVxuICA7O1xuXG4gIGxldCBtZXJnZV9ib3RoX3NvbWVcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhvdXRfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBsZWZ0X21hcFxuICAgICAgICByaWdodF9tYXBcbiAgICAgICAgfmZcbiAgICA9XG4gICAgd2l0aF9vbGQyXG4gICAgICBsZWZ0X21hcFxuICAgICAgcmlnaHRfbWFwXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+ZjooZnVuIH5vbGQgbmV3X2xlZnRfbWFwIG5ld19yaWdodF9tYXAgLT5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBuZXdfbGVmdF9tYXAgaW5cbiAgICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgbWF0Y2ggTWFwLmxlbmd0aCBuZXdfbGVmdF9tYXAsIE1hcC5sZW5ndGggbmV3X3JpZ2h0X21hcCB3aXRoXG4gICAgICAgICgqIEJlY2F1c2Ugd2Ugb25seSBjYXJlIGFib3V0IGtleXMgdGhhdCBhcmUgaW4gYm90aCBtYXBzLCBpZiBlaXRoZXIgbWFwIGlzXG4gICAgICAgICAgIGVtcHR5LCBiYWlsIGVhcmx5LiAqKVxuICAgICAgICB8IDAsIF8gfCBfLCAwIC0+IGVtcHR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgICAgICB+b2xkXG4gICAgICAgICAgICB+bmV3X2xlZnRfbWFwXG4gICAgICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICAgICAgfmRhdGFfZXF1YWxfbGVmdFxuICAgICAgICAgICAgfmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgICAgICAgIH5mOihmdW4gfm9sZF9vdXRwdXQgfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgICAgICAgbGV0IGxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgICAgfCBCb3RoICgoXywgbGVmdF9kaWZmKSwgKF8sIHJpZ2h0X2RpZmYpKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgbGVmdF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIHJpZ2h0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZWZ0X2RhdGEsIHJpZ2h0X2RhdGFcbiAgICAgICAgICAgICAgICB8IExlZnQgKF8sIGxlZnRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIGxlZnRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCByaWdodF9kYXRhID0gTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXkgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnRfZGF0YSwgcmlnaHRfZGF0YVxuICAgICAgICAgICAgICAgIHwgUmlnaHQgKF8sIHJpZ2h0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIG1hdGNoIGFybSBiaW5kcyBbcmlnaHRfZGF0YV0gZmlyc3QgYmVjYXVzZSB0aGUgbWFwIGxvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgaXMgc2xvd2VyIHRoYW4gY2FsbGluZyBbbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnRdLiAqKVxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgcmlnaHRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgbGVmdF9kYXRhID0gTWFwLmZpbmQgbmV3X2xlZnRfbWFwIGtleSBpblxuICAgICAgICAgICAgICAgICAgbGVmdF9kYXRhLCByaWdodF9kYXRhXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIGxvb2sgZm9yIHRoZSBwcmV2aW91c2x5IGNvbXB1dGVkIHZhbHVlIHRvIHNlZSBpZiB3ZSBhY3R1YWxseSBuZWVkIHRvXG4gICAgICAgICAgICAgICAgIGFkZCBvciByZW1vdmUgdGhlIGtleS4gKilcbiAgICAgICAgICAgICAgbGV0IHByZXZfb3V0ID0gTWFwLmZpbmQgb2xkX291dHB1dCBrZXkgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbGVmdF9hbmRfcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBmIH5rZXkgeCB5IGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIHByZXZfb3V0IHdpdGhcbiAgICAgICAgICAgICAgICAgKCogaWYgdGhlIG5ldyByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCwgZG9uJ3QgY2hhbmdlIHRoZSBtYXAgKilcbiAgICAgICAgICAgICAgICAgfCBTb21lIHByZXZfb3V0IHdoZW4gb3V0X2VxdWFsIGRhdGEgcHJldl9vdXQgLT4gb3V0cHV0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggcHJldl9vdXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gb3V0cHV0XG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleSkpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSBpbnB1dF9kYXRhIG91dHB1dF9kYXRhIGZfb3V0cHV0IHN0YXRlX3dpdG5lc3MpXG4gICAgICAgICh3aXRuZXNzIDogKGlucHV0X2RhdGEsIG91dHB1dF9kYXRhLCBmX291dHB1dCkgTWFwX3R5cGUudClcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChsaHMgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOihpbnB1dF9kYXRhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKGZfb3V0cHV0LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbGhzIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBhY2MgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFhY2MpIGluXG4gICAgbGV0IChvbl9pbm5lcl9jaGFuZ2UgOiBrZXk6J2tleSAtPiBmX291dHB1dCAtPiB1bml0KSA9XG4gICAgICBtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IGZ1biB+a2V5IGRhdGEgLT4gYWNjIDo9IE1hcC5zZXQgIWFjYyB+a2V5IH5kYXRhXG4gICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgZnVuIH5rZXkgb3B0IC0+XG4gICAgICAgICAgbGV0IG9sZCA9ICFhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgICAgICA6PSAobWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG9sZCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb2xkIH5rZXkgfmRhdGEpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxoc19jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGxocyB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGRlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSBNYXAucmVtb3ZlICFhY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmludmFsaWRhdGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KG9uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc2V0IG5vZGVzIH5rZXkgfmRhdGE6KG5vZGUsIHVzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGknID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgIE1hcF90eXBlLkZpbHRlcl9tYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwaScgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgTWFwX3R5cGUuTWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcCcgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWVyZ2UnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbF9sZWZ0ID9kYXRhX2VxdWFsX3JpZ2h0IG1hcDEgbWFwMiB+ZiA9XG4gICAgbWVyZ2VcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsX2xlZnRcbiAgICAgID9kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICBtYXAxXG4gICAgICBtYXAyXG4gICAgICB+ZjooZnVuIH5rZXk6XyBkaWZmIC0+IFNvbWUgZGlmZilcbiAgICB8PiBmaWx0ZXJfbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmIH5mOihmdW4gfmtleSB+ZGF0YTpkaWZmIC0+IGYgfmtleSBkaWZmKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsIDogdiAtPiB2IC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGxlZnRfcmVzdWx0X2VxdWFsIDogdjEgLT4gdjEgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8ocmlnaHRfcmVzdWx0X2VxdWFsIDogdjIgLT4gdjIgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChpbnB1dCA6ICgoJ2tleSwgdiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6diAtPiB2MSAqIHYyKVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgbGVmdF9hY2MgOiAoJ2tleSwgdjEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWxlZnRfYWNjKSBpblxuICAgIGxldCByaWdodF9hY2MgOiAoJ2tleSwgdjIsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmlnaHRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyaWdodF9hY2MpIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBpbnB1dF9jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICAgIG1hdGNoIE1hcC5pc19lbXB0eSAhcHJldl9tYXAsIE1hcC5pc19lbXB0eSBtYXAgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIHwgZmFsc2UsIHRydWUgLT4gZW1wdHlfbWFwLCBlbXB0eV9tYXBcbiAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgKCogTWFwcGluZyBvbiBhIG1hcCBpcyB3YXkgZmFzdGVyIHRoYW4gc3ltbWV0cmljIGRpZmZpbmcgYW5kIHRoZW5cbiAgICAgICAgICAgICAgICAgYnVpbGRpbmcgdGhlIG1hcHMgdXAgcGllY2UgYnkgcGllY2UsIHNvIHdlIGRvIHRoaXMgd2hlbmV2ZXIgd2VcbiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbiBmcm9tIFwiZW1wdHlcIiB0byBcInNvbWV0aGluZ1wiLCB3aGljaCB3aWxsIGFsbW9zdCBhbHdheXNcbiAgICAgICAgICAgICAgICAgaGFwcGVuIG9uIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGwsIF8gPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgfmluaXQ6KCFsZWZ0X2FjYywgIXJpZ2h0X2FjYylcbiAgICAgICAgICAgICAgICB+ZjooZnVuIChsZWZ0LCByaWdodCkgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAocHJldiwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfYSwgcHJldl9iID0gZiB+a2V5IH5kYXRhOnByZXYgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19hLCBuZXdfYiA9IGYgfmtleSB+ZGF0YTpuZXdfIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBsZWZ0X3Jlc3VsdF9lcXVhbCBwcmV2X2EgbmV3X2FcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOm5ld19hXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgcmlnaHRfcmVzdWx0X2VxdWFsIHByZXZfYiBuZXdfYlxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpuZXdfYlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE1hcC5yZW1vdmUgbGVmdCBrZXksIE1hcC5yZW1vdmUgcmlnaHQga2V5XG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCBlbGVtZW50IC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gZiB+a2V5IH5kYXRhOmVsZW1lbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6YSwgTWFwLnNldCByaWdodCB+a2V5IH5kYXRhOmIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIWxlZnRfYWNjIGxlZnQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgbGVmdF9yZXN1bHQ7XG4gICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFyaWdodF9hY2MgcmlnaHQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgcmlnaHRfcmVzdWx0O1xuICAgICAgICAgIGxlZnRfYWNjIDo9IGxlZnQ7XG4gICAgICAgICAgcmlnaHRfYWNjIDo9IHJpZ2h0O1xuICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgIGlucHV0XG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgaW5wdXRcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQgdW56aXAgP2luc3RydW1lbnRhdGlvbiA/bGVmdF9yZXN1bHRfZXF1YWwgP3JpZ2h0X3Jlc3VsdF9lcXVhbCBpbnB1dCA9XG4gICAgbGV0IGRhdGFfZXF1YWwgPVxuICAgICAgT3B0aW9uLm1hcDIgbGVmdF9yZXN1bHRfZXF1YWwgcmlnaHRfcmVzdWx0X2VxdWFsIH5mOihmdW4gbCByIC0+XG4gICAgICAgIFR1cGxlMi5lcXVhbCB+ZXExOmwgfmVxMjpyKVxuICAgIGluXG4gICAgdW56aXBfbWFwaVxuICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOih2LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKHYxLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50ICogKHYyLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBsZWZ0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSBsZWZ0X2FjYyA6PSBNYXAuc2V0ICFsZWZ0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSByaWdodF9hY2MgOj0gTWFwLnNldCAhcmlnaHRfYWNjIH5rZXkgfmRhdGEgaW5cbiAgICBsZXQgcmVjIGlucHV0X2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXQgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9sZWZ0X2RlcCwgX3JpZ2h0X2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGxlZnRfZGVwLCByaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfZGVwO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBsZWZ0X2FjYyA6PSBNYXAucmVtb3ZlICFsZWZ0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgICByaWdodF9hY2MgOj0gTWFwLnJlbW92ZSAhcmlnaHRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF9pbmNyLCByaWdodF9pbmNyID0gZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZSBsZWZ0X2luY3Igfm9uX2NoYW5nZToobGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRfaW5jclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zZXRcbiAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICB+ZGF0YToobm9kZSwgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCwgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpJyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIG1hcFxuICAgICAgICB8PiB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcicgfmluc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIH5jb21wYXJhdG9yIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCBrZXlzID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgYWRkIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQuYWRkIGFjYyBrZXkgaW5cbiAgICAgIGxldCByZW1vdmUgfmtleSB+ZGF0YTpfIGFjYyA9IFNldC5yZW1vdmUgYWNjIGtleSBpblxuICAgICAgbGV0IGRhdGFfZXF1YWwgXyBfID0gdHJ1ZSBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgfmluaXQ6KFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICB+aW5pdDooZW1wdHksIGVtcHR5KVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YTpkYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5zZXQgZmlyc3QgfmtleSB+ZGF0YSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5XG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnNldCBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLmFkZF9leG4gZmlyc3QgfmtleSB+ZGF0YSwgc2Vjb25kXG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBmaXJzdCwgTWFwLmFkZF9leG4gc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhOl8gKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5yZW1vdmUgc2Vjb25kIGtleSkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBtYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mXG4gICAgfD4gcGFydGl0aW9uX21hcGkgP2luc3RydW1lbnRhdGlvbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCBmbGF0dGVuIHN0YXRlIG1hcCA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IHJlc3VsdCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcCkpIGluXG4gICAgbGV0IG5vZGUgPSBFLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gIXJlc3VsdCkgaW5cbiAgICBNYXAuaXRlcmkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YTppbmNyIC0+XG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbmNyIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIHJlc3VsdCA6PSBNYXAuc2V0ICFyZXN1bHQgfmtleSB+ZGF0YTphKSkpO1xuICAgIEUuTm9kZS53YXRjaCBub2RlXG4gIDs7XG5cbiAgbGV0IGpvaW5fd2l0aF9jb21wYXJhdG9yIH5pbnN0cnVtZW50YXRpb24gbWFwX2luY3IgfmNvbXBhcmF0b3IgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIG1hcF9pbmNyIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHJlc3VsdF9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IG9sZF9tYXBfb2ZfaW5jcnMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGN1cnJlbnRfZGVwZW5kZW5jaWVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJlc3VsdF9tYXApIGluXG4gICAgbGV0IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZSA9XG4gICAgICBsZXQgbmV3X2RlcCA9XG4gICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgZGF0YV9ub2RlIH5vbl9jaGFuZ2U6KGZ1biBkYXRhIC0+XG4gICAgICAgICAgcmVzdWx0X21hcCA6PSBNYXAuc2V0ICFyZXN1bHRfbWFwIH5rZXkgfmRhdGEpXG4gICAgICBpblxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCBuZXdfZGVwO1xuICAgICAgTWFwLnNldCBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhOm5ld19kZXBcbiAgICBpblxuICAgIGxldCByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5ID1cbiAgICAgIGxldCBkZXAgPSBNYXAuZmluZF9leG4gY3VycmVudF9kZXBlbmRlbmNpZXMga2V5IGluXG4gICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnJlbW92ZSAhcmVzdWx0X21hcCBrZXk7XG4gICAgICBNYXAucmVtb3ZlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleVxuICAgIGluXG4gICAgbGV0IGxoc19jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIG1hcF9pbmNyIH5mOihmdW4gbWFwX29mX2luY3JzIC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IG5ld19kZXBlbmRlbmN5X21hcCA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICFvbGRfbWFwX29mX2luY3JzXG4gICAgICAgICAgICAgIG1hcF9vZl9pbmNyc1xuICAgICAgICAgICAgICB+aW5pdDohY3VycmVudF9kZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgfmY6KGZ1biBjdXJyZW50X2RlcGVuZGVuY2llcyAoa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5XG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9ub2RlIC0+IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZVxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF8sIGRhdGFfbm9kZSkgLT5cbiAgICAgICAgICAgICAgICAgIHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfD4gYWRkX3N1Ym5vZGUgfmtleSB+ZGF0YV9ub2RlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY3VycmVudF9kZXBlbmRlbmNpZXMgOj0gbmV3X2RlcGVuZGVuY3lfbWFwO1xuICAgICAgICAgIG9sZF9tYXBfb2ZfaW5jcnMgOj0gbWFwX29mX2luY3JzKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgbGhzX2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBqb2luID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBqb2luX3dpdGhfY29tcGFyYXRvciB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgU2VwYXJhdGVfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBpbnB1dF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIGV4cGVydF9ub2RlcyA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBvdXRwdXRfbWFwIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSBjb21wYXJhdG9yID1cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB7IGlucHV0X21hcCA9IGVtcHR5OyBleHBlcnRfbm9kZXMgPSBlbXB0eTsgb3V0cHV0X21hcCA9IGVtcHR5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9sb29rdXBfbm9kZSBzdGF0ZSB0IGtleSA9XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiBNYXAuZmluZF9leG4gdC5pbnB1dF9tYXAga2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXBhcmF0ZSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgaW5wdXRfbWFwIH5kYXRhX2VxdWFsID1cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXAgaW5cbiAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXRfbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IHN0YXRlID0gU2VwYXJhdGVfc3RhdGUuY3JlYXRlIGNvbXBhcmF0b3IgaW5cbiAgICAgIGxldCBvdXRwdXRfbWFwX25vZGUgPVxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgPVxuICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSAoTGF6eS5mb3JjZV92YWwgaW5wdXRfbWFwX2NoYW5nZWQpXG4gICAgICAgIGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgZGVwZW5kZW5jeVxuICAgICAgaW5cbiAgICAgICgqIFdlIHdhbnQgdG8gbWFrZSBub2RlcyBkZXBlbmQgb24gW2lucHV0X21hcF9jaGFuZ2VkXSBzbyB0aGF0IFtpbnB1dF9tYXBfY2hhbmdlZF1cbiAgICAgICAgIGlzIGFsbG93ZWQgdG8gbWFrZSB0aGVtIHN0YWxlLCBidXQgd2UgZG8gbm90IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGZvciBhbnlcbiAgICAgICAgIG90aGVyIHJlYXNvbi4gU28gd2UgbWFrZSBbaW5wdXRfbWFwX2NoYW5nZWRdIGEgdW5pdCBpbmNyZW1lbnRhbCAodGhhdCB0aGVyZWZvcmVcbiAgICAgICAgIG5ldmVyIGNoYW5nZXMpIGFuZCB0aGlzIHdheSBbb3V0cHV0X21hcF9ub2RlXSBhbmQgdGhlIGxvb2t1cCBub2RlcyB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlY29tcHV0ZWQgd2hlbiB0aGV5IGFyZSBleHBsaWNpdGx5IG1hZGUgc3RhbGUuXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBpbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgcHJldl9pbnB1dF9tYXAgPSBzdGF0ZS5pbnB1dF9tYXAgaW5cbiAgICAgICAgICAgICAgIGxldCBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXAgPVxuICAgICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICAgIHByZXZfaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgICB+aW5pdDooc3RhdGUuZXhwZXJ0X25vZGVzLCBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCkgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgX29sZF92YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2xkX25vZGUgPSBNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5pbnZhbGlkYXRlIG9sZF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLnJlbW92ZSBleHBlcnRfbm9kZXMga2V5LCBNYXAucmVtb3ZlIG91dHB1dF9tYXAga2V5XG4gICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfbmV3X3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGVfbG9va3VwX25vZGUgaW5jcmVtZW50YWxfc3RhdGUgc3RhdGUga2V5XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAoIE1hcC5hZGRfZXhuIGV4cGVydF9ub2RlcyB+a2V5IH5kYXRhOm5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgLCBNYXAuYWRkX2V4blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG5vZGUpIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF9vbGRfdmFsdWUsIF9uZXdfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgKE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHN0YXRlLmlucHV0X21hcCA8LSBpbnB1dF9tYXA7XG4gICAgICAgICAgICAgICBzdGF0ZS5leHBlcnRfbm9kZXMgPC0gZXhwZXJ0X25vZGVzO1xuICAgICAgICAgICAgICAgc3RhdGUub3V0cHV0X21hcCA8LSBvdXRwdXRfbWFwKSkpXG4gICAgICBpblxuICAgICAgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBvdXRwdXRfbWFwX25vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggb3V0cHV0X21hcF9ub2RlKVxuICA7O1xuXG4gICgqIEp1c3QgZm9yIGRlcml2aW5nIHN0cnVjdHVyYWwgZXF1YWxpdHkuICopXG4gIHR5cGUgJ2EgbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5ID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gICAgfCBJbmNsIG9mICdhXG4gICAgfCBFeGNsIG9mICdhXG4gICAgfCBVbmJvdW5kZWRcbiAgW0BAZGVyaXZpbmcgZXF1YWxdXG5cbiAgbGV0IHN1YnJhbmdlXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXBfaW5jciA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgcmFuZ2VcbiAgICA9XG4gICAgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gbWFwX2luY3IgcmFuZ2UgfmY6KGZ1biB+b2xkIG1hcCByYW5nZSAtPlxuICAgICAgbGV0IGNvbXBhcmUgPSAoTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICBsZXQgZXF1YWwgbCByID0gY29tcGFyZSBsIHIgPSAwIGluXG4gICAgICBsZXQgKCA+ICkgYSBiID0gY29tcGFyZSBhIGIgPiAwXG4gICAgICBhbmQgKCA+PSApIGEgYiA9IGNvbXBhcmUgYSBiID49IDAgaW5cbiAgICAgIGxldCBtYXliZV9ib3VuZF9lcXVhbCBhIGIgOiBib29sID0gZXF1YWxfbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5IGVxdWFsIGEgYiBpblxuICAgICAgbGV0IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heCA6IGJvb2wgPVxuICAgICAgICBtYXRjaCBtaW4sIG1heCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkLCAoVW5ib3VuZGVkIHwgRXhjbCBfIHwgSW5jbCBfKSB8IChFeGNsIF8gfCBJbmNsIF8pLCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgICAgfCBJbmNsIG1pbiwgSW5jbCBtYXggLT4gbWluID4gbWF4XG4gICAgICAgIHwgRXhjbCBtaW4sIEV4Y2wgbWF4IHwgSW5jbCBtaW4sIEV4Y2wgbWF4IHwgRXhjbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+PSBtYXhcbiAgICAgIGluXG4gICAgICBsZXQgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleSA6IGJvb2wgPVxuICAgICAgICBNYXliZV9ib3VuZC5pc19sb3dlcl9ib3VuZCBtaW4gfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgICAgJiYgTWF5YmVfYm91bmQuaXNfdXBwZXJfYm91bmQgbWF4IH5vZl86a2V5IH5jb21wYXJlXG4gICAgICBpblxuICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIEVtcHR5IG5ldyByYW5nZSBtZWFucyBlbXB0eSBtYXAgKilcbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgIHwgU29tZSAoKG1pbiwgbWF4KSBhcyByYW5nZSkgLT5cbiAgICAgICAgbGV0IGZyb21fc2NyYXRjaCAoKSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6bWF4IGluXG4gICAgICAgIChtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgfCBOb25lIHwgU29tZSAoXywgTm9uZSwgXykgLT5cbiAgICAgICAgICAgKCogbm8gb2xkIHJhbmdlICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChfLCBTb21lIChvbGRfbWluLCBvbGRfbWF4KSwgXylcbiAgICAgICAgICAgd2hlbiByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heCAtPlxuICAgICAgICAgICAoKiBlbXB0eSBvbGQgcmFuZ2Ugb3Igb2xkIHJhbmdlIGRpc2pvaW50IHdpdGggbmV3ICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBTb21lICgob2xkX21pbiwgb2xkX21heCkgYXMgb2xkX3JhbmdlKSwgb2xkX3JlcykgLT5cbiAgICAgICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgICAgICAgKCogUmV0dXJucyB0cnVlIGlmZiB0aGUga2V5IGlzIGluIGJvdGggbmV3IGFuZCBvbGQgcmFuZ2VzICopXG4gICAgICAgICAgICAgbGV0IGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXkgPVxuICAgICAgICAgICAgICAgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleVxuICAgICAgICAgICAgICAgJiYgcmFuZ2VfaW5jbHVkZXMgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heCBrZXlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEFwcGx5IGNoYW5nZXMgdG8ga2V5cyB3aGljaCBhcmUgaW4gdGhlIGludGVyc2VjdGlvbiBvZiBib3RoIHJhbmdlcy5cblxuICAgICAgICAgICAgICAgIFtvdXRzaWRlXSBpcyB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgb3V0c2lkZSB0aGUgcmFuZ2UgaW50ZXJzZWN0aW9uIHRoYXQgd2VcbiAgICAgICAgICAgICAgICB0b2xlcmF0ZSBiZWZvcmUgZ2l2aW5nIHVwIGFuZCByZWNvbnN0cnVjdGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlLiBUaGlzXG4gICAgICAgICAgICAgICAgaXMgYW4gb3B0aW1pc2F0aW9uIGluIHRoZSBjYXNlIHRoYXQgdGhlIG1hcCBjaGFuZ2VzIGluIGEgdmVyeSBiaWcgd2F5LCBhdFxuICAgICAgICAgICAgICAgIHdoaWNoIHBvaW50IGNvbXB1dGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlIGlzIGNoZWFwZXIuICAqKVxuICAgICAgICAgICAgIGxldCBhcHBseV9kaWZmX2luX2ludGVyc2VjdGlvbiAob3V0c2lkZSwgbWFwKSAoa2V5LCBkYXRhKSA9XG4gICAgICAgICAgICAgICBpZiBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5XG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXlcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YSB8IGBVbmVxdWFsIChfLCBkYXRhKSAtPiBvdXRzaWRlLCBNYXAuc2V0IG1hcCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBvdXRzaWRlID0gb3V0c2lkZSAtIDEgaW5cbiAgICAgICAgICAgICAgICAgaWYgSW50Lk8uKG91dHNpZGUgPCAwKVxuICAgICAgICAgICAgICAgICB0aGVuIHJldHVybiAoZnJvbV9zY3JhdGNoICgpKVxuICAgICAgICAgICAgICAgICBlbHNlIG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEZpcnN0IHVwZGF0ZSB0aGUga2V5cyBpbiAvYm90aC8gdGhlIG9sZCBhbmQgdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICBsZXQgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb24gPVxuICAgICAgICAgICAgICAgKCogQ3V0b2ZmIHRoZSBiaWcgZGlmZiBjb21wdXRhdGlvbiBpZiB3ZSByZWFjaCBPKHxzdWJtYXB8KSBudW1iZXIgb2ZcbiAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgcmFuZ2UgKilcbiAgICAgICAgICAgICAgIGxldCBvdXRzaWRlX2N1dG9mZiA9IE1hcC5sZW5ndGggb2xkX3JlcyAvIDQgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OihvdXRzaWRlX2N1dG9mZiwgb2xkX3JlcylcbiAgICAgICAgICAgICAgICAgfmY6YXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgIHw+IHNuZFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgVHVwbGUyLmVxdWFsIH5lcTE6bWF5YmVfYm91bmRfZXF1YWwgfmVxMjptYXliZV9ib3VuZF9lcXVhbCBvbGRfcmFuZ2UgcmFuZ2VcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBUaGVyZSBhcmUgbm8ga2V5cyB0byByZW1vdmUgYW5kIGV2ZXJ5dGhpbmcgaW4gcmFuZ2UgaXMgdXBkYXRlZC4gKilcbiAgICAgICAgICAgICAgIHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAoKiBSZW1vdmUgYW55IGtleXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IHJhbmdlLiAqKVxuICAgICAgICAgICAgICAgbGV0IHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2VcbiAgICAgICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgICAgICAgIH5sb3dlcl9ib3VuZDptaW5cbiAgICAgICAgICAgICAgICAgICB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCogQWRkIGluIGFueSBrZXlzIHdoaWNoIGFyZSBpbiB0aGUgbmV3IHJhbmdlIGJ1dCBub3QgdGhlIG9sZCByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSA9XG4gICAgICAgICAgICAgICAgIGxldCBtYXBfYXBwZW5kX2V4biBsb3dlcl9wYXJ0IHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgICAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImltcG9zc2libGUgY2FzZTogQlVHIGluIGluY3JfbWFwLm1sIHN1YnJhbmdlXCJcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbGV0IGxvd2VyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihJbmNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9taW4gLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6KEV4Y2wgb2xkX21pbilcbiAgICAgICAgICAgICAgICAgYW5kIHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9tYXggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooSW5jbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9tYXggLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOihFeGNsIG9sZF9tYXgpIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbWFwX2FwcGVuZF9leG5cbiAgICAgICAgICAgICAgICAgICBsb3dlcl9wYXJ0XG4gICAgICAgICAgICAgICAgICAgKG1hcF9hcHBlbmRfZXhuIHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgdXBwZXJfcGFydClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSkpKSlcbiAgOztcblxuICBsZXQgcmVrZXlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3JcbiAgICAgICAgfmZcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIG1hcF9pbmNyXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yLCBbXSlcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIChvdXRwdXQsIGFkZHMpIC0+XG4gICAgICAgIGxldCBuZXdfZW50cnkgPSBmIH5rZXkgfmRhdGEsIGRhdGEgaW5cbiAgICAgICAgb3V0cHV0LCBuZXdfZW50cnkgOjogYWRkcylcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIChvdXRwdXQsIGFkZHMpIC0+IE1hcC5yZW1vdmUgb3V0cHV0IChmIH5rZXkgfmRhdGEpLCBhZGRzKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgKE1hcC5jb21wYXJhdG9yIG91dHB1dCkuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIE1hcC5zZXQgb3V0cHV0IH5rZXk6bmV3X2tleSB+ZGF0YTpuZXdfZGF0YSwgYWRkc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgb3V0cHV0ID0gTWFwLnJlbW92ZSBvdXRwdXQgcHJldl9rZXkgaW5cbiAgICAgICAgICBvdXRwdXQsIChuZXdfa2V5LCBuZXdfZGF0YSkgOjogYWRkcykpXG4gICAgICB+ZmluYWxpemU6KGZ1biAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICBMaXN0LmZvbGQgYWRkcyB+aW5pdDpvdXRwdXQgfmY6KGZ1biBvdXRwdXQgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIE1hcC5hZGRfZXhuIG91dHB1dCB+a2V5IH5kYXRhKVxuICAgICAgICBpblxuICAgICAgICBvdXRwdXQsIFtdKVxuICAgIHw+IEluY3JlbWVudGFsLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgaW5kZXhfYnlpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yXG4gICAgICAgIH5pbmRleFxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBpbm5lcl9jb21wYXJhdG9yIC0+XG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+YWRkOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAudXBkYXRlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiBpbm5lcl9rZXkgZGF0YSB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT4gTWFwLmFkZF9leG4gaW5uZXJfbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLmNoYW5nZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcIkJVRzogSGl0IHN1cHBvc2VkbHkgaW1wb3NzaWJsZSBjYXNlIGluIEluY3JfbWFwLmluZGV4X2J5XCJcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbm5lcl9tYXAgPSBNYXAucmVtb3ZlIGlubmVyX21hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgaW5uZXJfbWFwIHRoZW4gTm9uZSBlbHNlIFNvbWUgaW5uZXJfbWFwKSkpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICBpbmRleF9ieWlcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIH5pbmRleDooZnVuIH5rZXk6XyB+ZGF0YSAtPiBpbmRleCBkYXRhKVxuICA7O1xuXG5cbiAgKCoqIEZpbmQgdHdvIGtleXMgaW4gbWFwIGJ5IGluZGV4LCBPKG4pLiBXZSB1c2UganVzdCBvbmUgZm9sZCAodHdvIE1hcC5udGggd291bGQgdXNlIHR3bylcbiAgICAgIGFuZCBvcHRpbWl6ZSBmb3Iga2V5cyBjbG9zZSB0byBlaXRoZXIgYmVnaW5uaW5nIG9yIGVuZCBieSB1c2luZyBlaXRoZXIgZm9sZCBvclxuICAgICAgZm9sZF9yaWdodC5cbiAgKilcbiAgbW9kdWxlIEtleV9zdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIHQgPVxuICAgICAgfCBLbm93biBvZiAna1xuICAgICAgfCBLbm93bl9ub25lXG4gICAgICB8IFVua25vd25cblxuICAgIGxldCBpc19rbm93biA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlXG4gICAgOztcblxuICAgIGxldCB0b19vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIHwgS25vd25fbm9uZSAtPiBOb25lXG4gICAgICB8IEtub3duIGsgLT4gU29tZSBrXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciAodHlwZSBrKSB+ZnJvbSB+dG9fIChtYXAgOiAoaywgXywgXykgTWFwLnQpXG4gICAgOiAoayAqIGsgb3B0aW9uKSBvcHRpb25cbiAgICA9XG4gICAgbGV0IG9wZW4gS2V5X3N0YXR1cyBpblxuICAgIGxldCBsZW4gPSBNYXAubGVuZ3RoIG1hcCBpblxuICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA+PSApIGZyb20gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID49ICkgdG9fIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGZpbmRfa2V5cyBmb2xkIH5zdGFydF9wb3MgfmFkdmFuY2VfcG9zID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgbWFwXG4gICAgICAgICAgfmluaXQ6KGJlZ2luX2tleSwgZW5kX2tleSwgc3RhcnRfcG9zKVxuICAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YTpfIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcykgLT5cbiAgICAgICAgICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIGZyb20gdGhlbiBLbm93biBrZXkgZWxzZSBiZWdpbl9rZXkgaW5cbiAgICAgICAgICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPSApIHBvcyB0b18gdGhlbiBLbm93biBrZXkgZWxzZSBlbmRfa2V5IGluXG4gICAgICAgICAgICBpZiBpc19rbm93biBiZWdpbl9rZXkgJiYgaXNfa25vd24gZW5kX2tleVxuICAgICAgICAgICAgdGhlbiByZXR1cm4gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKVxuICAgICAgICAgICAgZWxzZSBiZWdpbl9rZXksIGVuZF9rZXksIGFkdmFuY2VfcG9zIHBvcykpXG4gICAgaW5cbiAgICBsZXQgYmVnaW5fa2V5LCBlbmRfa2V5LCBfID1cbiAgICAgICgqIFNlYXJjaGluZyBmcm9tIGxlZnQgdGFrZXMgTyh0b18pLCBmcm9tIHJpZ2h0IC0gTyhsZW4gLSBmcm9tKSwgc28gc2VsZWN0IHRoZVxuICAgICAgICAgc21hbGxlciBvbmUuICopXG4gICAgICBpZiB0b18gPCBsZW4gLSBmcm9tXG4gICAgICB0aGVuIGZpbmRfa2V5cyBNYXAuZm9sZCB+c3RhcnRfcG9zOjAgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyArIDEpXG4gICAgICBlbHNlIGZpbmRfa2V5cyBNYXAuZm9sZF9yaWdodCB+c3RhcnRfcG9zOihsZW4gLSAxKSB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zIC0gMSlcbiAgICBpblxuICAgIE9wdGlvbi5tYXAgKEtleV9zdGF0dXMudG9fb3B0aW9uIGJlZ2luX2tleSkgfmY6KGZ1biBiZWdpbl9rZXkgLT5cbiAgICAgIGJlZ2luX2tleSwgS2V5X3N0YXR1cy50b19vcHRpb24gZW5kX2tleSlcbiAgOztcblxuICBsZXQgbnRoX2Zyb21fZWl0aGVyX3NpZGUgKHR5cGUgaykgbiAobWFwIDogKGssIF8sIF8pIE1hcC50KSA6IGsgb3B0aW9uID1cbiAgICBPcHRpb24ubWFwIH5mOmZzdCAoZmluZF9rZXlfcmFuZ2VfbGluZWFyIH5mcm9tOm4gfnRvXzpuIG1hcClcbiAgOztcblxuICAoKiogRmluZCBrZXkgW2J5XSBwb3NpdGlvbnMgZWFybGllci9sYXRlciBpbiBhIG1hcC4gUmV0dXJucyBub25lIGlmIG91dCBvZiBib3VuZHMuICopXG4gIGxldCByZWMgb2Zmc2V0IChrZXkgOiAnaykgKG1hcCA6ICgnaywgXywgXykgTWFwLnQpIH5ieSA6ICdrIG9wdGlvbiA9XG4gICAgaWYgSW50LiggPSApIGJ5IDBcbiAgICB0aGVuIFNvbWUga2V5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2xvc2VzdF9kaXIsIGFkZCA9XG4gICAgICAgIGlmIEludC4oIDwgKSBieSAwIHRoZW4gYExlc3NfdGhhbiwgMSBlbHNlIGBHcmVhdGVyX3RoYW4sIC0xXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLmNsb3Nlc3Rfa2V5IG1hcCBjbG9zZXN0X2RpciBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBvZmZzZXQga2V5IG1hcCB+Ynk6KGJ5ICsgYWRkKSlcbiAgOztcblxuICAoKiogRmluZCBob3cgd2UgbmVlZCB0byBtb3ZlIFtrZXldIGlmIFtjaGFuZ2VkX2tleV0gY2hhbmdlZCBpbiB0aGUgZ2l2ZW5cbiAgICAgIHdheSAqKVxuICBsZXQgZmluZF9vZmZzZXQgfmNvbXBhcmUgfmtleSB+Y2hhbmdlZF9rZXkgY2hhbmdlID1cbiAgICBpZiBJbnQuKCA8ICkgKGNvbXBhcmUgY2hhbmdlZF9rZXkga2V5KSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgfCBgTGVmdCBfIC0+IDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gLTFcbiAgICAgIHwgXyAtPiAwKVxuICAgIGVsc2UgMFxuICA7O1xuXG4gIGxldCByYW5rXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgIChtYXAgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChrZXkgOiAoaywgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IHNhbWVfa2V5IGEgYiA9IGNvbXBhcmVfa2V5IGEgYiA9IDAgaW5cbiAgICAgIGxldCB3aGVuX2tleV9jaGFuZ2VkIH5tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgbmV3X2tleSBvbGRfa2V5IDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiB0aGUgbmV3IGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG9sZCBrZXksIGZpbmQgdGhlIHNpemUgb2YgdGhlIG1hcCBzdWJyYW5nZVxuICAgICAgICAgICAgIGJldHdlZW4gdGhlbSBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG5ld19rZXksIEV4Y2wgb2xkX2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rIC0gTWFwLmxlbmd0aCBzdWJyYW5nZSAtIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIE90aGVyd2lzZSwgdGhlIG5ldyBrZXkgaXMgbGFyZ2VyIHRoYW4gdGhlIG9sZCBrZXksIHNvIGZpbmQgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgICAgICAgbWFwIHN1YnJhbmdlIGJldHdlZW4gdGhlbSBhbmQgYWRkIGl0IHRvIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgb2xkX2tleSwgRXhjbCBuZXdfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgKyBNYXAubGVuZ3RoIHN1YnJhbmdlICsgMSlcbiAgICAgIGluXG4gICAgICBsZXQgd2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5IH5vbGRfcmFuayA9XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgKCogV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZGF0YSwgc28gb3B0aW1pemUgdGhlc2UgY2hlY2tzICopXG4gICAgICAgICAgfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgbmV3X21hcFxuICAgICAgICAgIH5pbml0Om9sZF9yYW5rXG4gICAgICAgICAgfmY6KGZ1biBhY2MgKGRpZmZfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyAtIDFcbiAgICAgICAgICAgIHwgYFJpZ2h0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyArIDFcbiAgICAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwcm9jZXNzIH4ob2xkIDogKChrLCB2LCBfKSBNYXAudCAqIF8gKiBfKSBvcHRpb24pIG5ld19tYXAgKG5ld19rZXkgOiBrKSA9XG4gICAgICAgIGlmIG5vdCAoTWFwLm1lbSBuZXdfbWFwIG5ld19rZXkpXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgICgqIElmIHRoZSBtYXAgYW5kIGtleSBhcmUgdGhlIHNhbWUsIGp1c3QgcmV1c2UgdGhlIG9sZCByYW5rICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaylcbiAgICAgICAgICAgIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgJiYgc2FtZV9rZXkgb2xkX2tleSBuZXdfa2V5IC0+IG9sZF9yYW5rXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBpcyB0aGUgc2FtZSBidXQgdGhlIGtleSBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwIC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX2tleV9jaGFuZ2VkIH5tYXA6bmV3X21hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgdGhlIGtleSBpcyB0aGUgc2FtZSBidXQgdGhlIG1hcCBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHNhbWVfa2V5IG5ld19rZXkgb2xkX2tleSAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5Om5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIGJvdGggdGhlIG1hcCBhbmQgdGhlIGtleSBjaGFuZ2VkLCB0aGlzIGNhbiBiZSBzaW11bGF0ZWQgYXMgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5naW5nIGZvbGxvd2VkIGJ5IHRoZSBrZXkgY2hhbmdpbmcgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIC0+XG4gICAgICAgICAgICAoKiBXZSBjYWxsIFtwcm9jZXNzXSByZWN1cnNpdmVseSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmdcbiAgICAgICAgICAgICAgIFt3aGVuX21hcF9jaGFuZ2VkXSBmb2xsb3dlZCBieSBbd2hlbl9rZXlfY2hhbmdlZF0gc2luY2UgaXQgbWlnaHQgYmUgdGhlXG4gICAgICAgICAgICAgICBjYXNlIHRoYXQgW29sZF9rZXldIGlzIGluIFtvbGRfbWFwXSBhbmQgW25ld19rZXldIGlzIGluIFtuZXdfbWFwXSwgYnV0XG4gICAgICAgICAgICAgICBbb2xkX2tleV0gaXMgbm90IGluIFtuZXdfbWFwXS4gKilcbiAgICAgICAgICAgIGxldCBvbGRfcmFuayA9XG4gICAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykpIG5ld19tYXAgb2xkX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAobmV3X21hcCwgb2xkX2tleSwgb2xkX3JhbmspKSBuZXdfbWFwIG5ld19rZXlcbiAgICAgICAgICAoKiBJZiB0aGUgcHJldmlvdXMga2V5IHdhcyBub3QgaW4gdGhlIG1hcCBvciB0aGlzIGlzIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLFxuICAgICAgICAgICAgIGNvbXB1dGUgdGhlIHJhbmsgZnJvbSBzY3JhdGNoICopXG4gICAgICAgICAgfCBTb21lIChfLCBfLCBOb25lKSB8IE5vbmUgLT4gTWFwLnJhbmsgbmV3X21hcCBuZXdfa2V5KVxuICAgICAgaW5cbiAgICAgIHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIG1hcCBrZXkgfmY6cHJvY2VzcylcbiAgOztcblxuICAoKiogUmFuZ2UgbWFwIGJ5IGluZGljZXMgKilcbiAgbGV0IHN1YnJhbmdlX2J5X3JhbmtcbiAgICAgICAgKHR5cGUgayBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcCA6ICgoaywgXywgXykgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChyYW5nZSA6IChpbnQgTWF5YmVfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICBsZXQgZmluZF9rZXlfcmFuZ2UgKHJhbmdlIDogKGludCAqIGludCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgIDogKChrICogayBvcHRpb24pIG9wdGlvbiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgPVxuICAgICAgd2l0aF9vbGQyIG1hcCByYW5nZSB+aW5zdHJ1bWVudGF0aW9uIH5mOihmdW4gfm9sZCBtYXAgKGZyb20sIHRvXykgLT5cbiAgICAgICAgKCogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vIGtleXMsIG9ubHkgYmVnaW4ga2V5LCBvciBiZWdpbiBhbmQgZW5kIGtleXMuXG4gICAgICAgICAgIFRoZXNlIGFyZSB0aGUga2V5cyBhdCBbZnJvbV0gYW5kIFt0b19dIHBvc2l0aW9ucyBpbiB0aGUgbWFwLCBvciBOb25lIGlmIHRoZVxuICAgICAgICAgICBpbmRpY2VzIGFyZSB0b28gYmlnLiBBcyBhbHdheXMgWzAgPD0gZnJvbSAmJiBmcm9tIDw9IHRvX10sIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIHBvc3NpYmlsaXR5IG9mIG9ubHkgW3RvX10gYmVpbmcgYSB2YWxpZCBwb3NpdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgaWYgSW50LiggPCApIHRvXyBmcm9tIHx8IEludC4oIDwgKSBmcm9tIDBcbiAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkludmFsaWQgaW5kaWNlc1wiIChmcm9tIDogaW50KSAodG9fIDogaW50KV07XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgU29tZSAob2xkX21hcCwgKG9sZF9mcm9tLCBvbGRfdG8pLCBTb21lIChiZWdpbl9rZXksIGVuZF9rZXlfb3B0KSkgLT5cbiAgICAgICAgICBsZXQgZmluZF9vZmZzZXQgPSBmaW5kX29mZnNldCB+Y29tcGFyZTooTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9iZWdpbiA9IGZyb20gLSBvbGRfZnJvbSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfZW5kID0gdG9fIC0gb2xkX3RvIGluXG4gICAgICAgICAgbGV0IGFkanVzdF9hbmRfb2Zmc2V0IH5ieSBrZXkgPVxuICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBpZiBieSA+PSAwICYmIG5vdCAoTWFwLm1lbSBtYXAga2V5KSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBvZmZzZXQga2V5IG1hcCB+YnlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUga2V5cyBjaGFuZ2luZyBhbmQgbm90IHRoZSBkYXRhLCBzbyBbZGF0YV9lcXVhbF0gaGVyZVxuICAgICAgICAgICAgIGNhbiBiZSBhbHdheXMgdHJ1ZSAqKVxuICAgICAgICAgIGxldCBkaWZmIH5pbml0IH5mID1cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpIG9sZF9tYXAgbWFwIH5pbml0IH5mXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmVnaW5fa2V5X29wdCwgZW5kX2tleV9vcHQgPVxuICAgICAgICAgICAgbWF0Y2ggZW5kX2tleV9vcHQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGVuZF9rZXkgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4sIG1hcF9vZmZzZXRfZW5kID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OigwLCAwKSB+ZjooZnVuIChvZmZzZXRfYmVnaW4sIG9mZnNldF9lbmQpIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICggb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICwgb2Zmc2V0X2VuZCArIGZpbmRfb2Zmc2V0IH5rZXk6ZW5kX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSApKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgYWRqdXN0X2FuZF9vZmZzZXQgZW5kX2tleSB+Ynk6KG1hcF9vZmZzZXRfZW5kICsgcmFuZ2Vfb2Zmc2V0X2VuZCkgKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OjAgfmY6KGZ1biBvZmZzZXRfYmVnaW4gKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBudGhfZnJvbV9laXRoZXJfc2lkZSB0b18gbWFwIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBiZWdpbl9rZXlfb3B0KTtcbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgZW5kX2tleV9vcHQpO1xuICAgICAgICAgIE9wdGlvbi5tYXAgYmVnaW5fa2V5X29wdCB+ZjooZnVuIGJlZ2luX2tleSAtPiBiZWdpbl9rZXksIGVuZF9rZXlfb3B0KVxuICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBfLCBOb25lKSAtPlxuICAgICAgICAgICgqIE9uIGZpcnN0IHJ1biAod2hlbiB3ZSBoYXZlIHRvKSBvciB3aGVuIGJvdGggdGhlIGtleXMgYXJlIG5vbmUsIHJ1biBPKG4pXG4gICAgICAgICAgICAgc2Nhbi4gVGhpcyBpcyBmaW5lIGZvciBrZXlzLWFyZS1ub25lIGNhc2UgYXMgaXQgaGFwcGVucyB3aGVuIHRoZSBwb3NpdGlvbnNcbiAgICAgICAgICAgICBhcmUgcGFzdCBlbmQgb2YgdGhlIG1hcCwgc28gdGhleSBzaG91bGRuJ3QgYmUgdG9vIGZhciBmcm9tIGVuZCBhZnRlciB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdlcywgYW5kIFtmaW5kX2tleV9yYW5nZV9saW5lYXJdIGlzIGZhc3QgaW4gc3VjaCBjYXNlLiAqKVxuICAgICAgICAgIGZpbmRfa2V5X3JhbmdlX2xpbmVhciBtYXAgfmZyb20gfnRvXylcbiAgICBpblxuICAgICgqIEhhbmRsZSBkaWZmZXJlbnQgTWF5YmVfYm91bmQgY2FzZXMgYW5kIGNhbGwgZmluZF9rZXlfcmFuZ2UgaWYgbmVjZXNzYXJ5LiBJdCdzXG4gICAgICAgbmljZXIgdG8gZG8gdGhpcyBoZXJlIGFzIG9wcG9zZWQgdG8gbWFraW5nIGZpbmRfa2V5X3JhbmdlIGV2ZW4gbW9yZSBjb21wbGljYXRlZCAqKVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgKCA+Pj4gKSBuZXdfIGJvdW5kID0gTWF5YmVfYm91bmQubWFwIH5mOihmdW4gXyAtPiBuZXdfKSBib3VuZCBpblxuICAgIGxldCByZXR1cm4gPSBJbmNyZW1lbnRhbC5yZXR1cm4gKEluY3JlbWVudGFsLnN0YXRlIG1hcCkgaW5cbiAgICBsZXQga2V5X3JhbmdlID1cbiAgICAgIG1hdGNoJXBhdHRlcm5fYmluZCByYW5nZSB3aXRoXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIHJldHVybiAoU29tZSAoTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQpKVxuICAgICAgfCAoICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYilcbiAgICAgICAgLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpICkgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIHUpXG4gICAgICAgIGFuZCBsYiA9IGxiXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIFNvbWUgZW5kX2tleSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgZW5kX2tleSA+Pj4gdWIpXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgTm9uZSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8ICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYiksIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgbClcbiAgICAgICAgYW5kIGxiID0gbGIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIHUgdSlcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoVW5ib3VuZGVkLCBrZXkgPj4+IHViKVxuICAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGUgdXBwZXIgYm91bmQgd2FzIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlXG4gICAgICAgICAgICBtYXAsIHNvIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIGtleSByYW5nZSBpcyBbVW5ib3VuZGVkXS5cbiAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgZGVtb25zdHJhdGVkIGluIGEgdGVzdCBpbiBbLi4vdGVzdC90ZXN0X3N1YnJhbmdlLm1sXS4gKilcbiAgICAgICAgIHwgTm9uZSAtPiBTb21lIChVbmJvdW5kZWQsIFVuYm91bmRlZCkpXG4gICAgaW5cbiAgICBzdWJyYW5nZSA/ZGF0YV9lcXVhbCBtYXAga2V5X3JhbmdlXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZVxuICAgIDogdHlwZSBrMSBrMiB2IGsxX2NtcCBrMl9jbXAgc3RhdGVfd2l0bmVzcy5cbiAgICAgID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOih2IC0+IHYgLT4gYm9vbClcbiAgICAgIC0+IChrMiwgazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgICAtPiAoKGsxLCAoazIsIHYsIGsyX2NtcCkgTWFwLnQsIGsxX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgIC0+ICgoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBmdW4gPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGsyX2NvbXBhcmF0b3IgbSAtPlxuICAgICAgd2l0aF9jb21wYXJhdG9yIG0gKGZ1biBrMV9jb21wYXJhdG9yIC0+XG4gICAgICAgIGxldCB1cGRhdGVcbiAgICAgICAgICA6ICBrZXk6azEgLT4gb2xkX2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50IC0+IG5ld19kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgPVxuICAgICAgICAgIGZ1biB+a2V5OmsxIH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICBvbGRfZGF0YVxuICAgICAgICAgICAgICBuZXdfZGF0YVxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGsyLCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTWFwLmNoYW5nZSBhY2MgazIgfmY6KGZ1biBhY2NfaW5uZXIgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2NfaW5uZXIgPVxuICAgICAgICAgICAgICAgICAgICBNYXAuY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19pbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kZWZhdWx0OihNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjprMV9jb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICAgICAgICBrMVxuICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gXyAtPiB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgYWNjX2lubmVyIHRoZW4gTm9uZSBlbHNlIFNvbWUgYWNjX2lubmVyKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKSB+bmV3X2RhdGE6ZGF0YVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpkYXRhIH5uZXdfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgIGluXG4gICAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgICAgbVxuICAgICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICB+YWRkXG4gICAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VfYnlcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wIGNvbWJpbmVkX2tleSBjb21iaW5lZF9jbXApXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihtZXJnZV9rZXlzIDogb3V0ZXJfa2V5IC0+IGlubmVyX2tleSAtPiBjb21iaW5lZF9rZXkpXG4gICAgICAgIH4oY29tcGFyYXRvciA6IChjb21iaW5lZF9rZXksIGNvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudClcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBjb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5zZXQgYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGE6bmV3X2RhdGEpXG4gICAgICB+YWRkOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuYWRkX2V4biBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLnJlbW92ZSBhY2MgKG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlXG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcClcbiAgICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfmNvbXBhcmF0b3I6KGlubmVyX2NvbXBhcmF0b3IgOiAoaW5uZXJfa2V5LCBpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIG91dGVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBtb2R1bGUgQ21wID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG91dGVyX2tleSAqIGlubmVyX2tleVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IChvdXRlcl9jbXAsIGlubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID1cbiAgICAgICAgICBsZXQgaW5uZXJfY29tcGFyYXRvciA9XG4gICAgICAgICAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGlubmVyX2NvbXBhcmF0b3IpIGluXG4gICAgICAgICAgICBNLmNvbXBhcmF0b3JcbiAgICAgICAgICBpblxuICAgICAgICAgIFR1cGxlMi5jb21wYXJhdG9yIG91dGVyX2NvbXBhcmF0b3IgaW5uZXJfY29tcGFyYXRvclxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgY29sbGFwc2VfYnlcbiAgICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+bWVyZ2Vfa2V5czpUdXBsZTIuY3JlYXRlXG4gICAgICAgIH5jb21wYXJhdG9yOihtb2R1bGUgQ21wKSlcbiAgOztcblxuICBsZXQgZXhwYW5kXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+b3V0ZXJfY29tcGFyYXRvclxuICAgICAgICB+aW5uZXJfY29tcGFyYXRvclxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IG5ld19kYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuc2V0IG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YTpuZXdfZGF0YSkpXG4gICAgICB+YWRkOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLmFkZF9leG4gbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLmNoYW5nZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIG1hcCAtPlxuICAgICAgICAgICAgbGV0IG1hcCA9IE1hcC5yZW1vdmUgbWFwIGlubmVyX2tleSBpblxuICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKG5vdCAoTWFwLmlzX2VtcHR5IG1hcCkpIG1hcCkpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OjBcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgY291bnQgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gY291bnQgLSAxIGVsc2UgY291bnQpXG4gIDs7XG5cbiAgbGV0IGNvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgKGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mKSB+ZjooZnVuIGNvdW50IC0+XG4gICAgICBjb3VudCA8PiAwKVxuICA7O1xuXG4gIGxldCBleGlzdHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZXhpc3RzaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgc3VtXG4gICAgICAgICh0eXBlIHUpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOiAoKF8sIF8sIF8pIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAobW9kdWxlIEdyb3VwIDogQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSB1KVxuICAgICAgICB+ZlxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDpHcm91cC56ZXJvXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggKyApIGFjYyAoZiB2KSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCAtICkgYWNjIChmIHYpKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIChjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgIG5vdCAoZiB+a2V5IH5kYXRhKSkpXG4gICAgICB+ZjooZnVuIGNvdW50IC0+IGNvdW50ID0gMClcbiAgOztcblxuICBsZXQgZm9yX2FsbCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBmb3JfYWxsaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID91cGRhdGVcbiAgICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgICAgP2ZpbmFsaXplXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/dXBkYXRlXG4gICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgP2ZpbmFsaXplXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgbWFwXG4gICAgICB+aW5pdFxuICAgICAgfmFkZFxuICAgICAgfnJlbW92ZVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgID91cGRhdGVcbiAgICAgIG1hcFxuICAgICAgfmluaXRcbiAgICAgIH5hZGRcbiAgICAgIH5yZW1vdmVcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgZmluZF9rZXlfcmFuZ2VfbGluZWFyID0gZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICB0eXBlICgndiwgJ3cpIGVudHJ5ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF92YWx1ZSA6ICd2IG9wdGlvblxuICAgICAgOyBub2RlIDogKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHQgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX21hcCA6ICgnaywgJ3YsICdjbXApIE1hcC50XG4gICAgICAoKiBXZSBtYXkgaGF2ZSBtdWx0aXBsZSBlbnRyaWVzIHBlciBrZXkgaWYgbm9kZXMgYmVjb21lIG5lY2Vzc2FyeSBhZ2FpbiBhZnRlciBiZWluZ1xuICAgICAgICAgcmVtb3ZlZC4gKilcbiAgICAgIDsgbXV0YWJsZSBsb29rdXBfZW50cmllcyA6ICgnaywgKCd2LCAndykgZW50cnkgbGlzdCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgdXBkYXRlcl9ub2RlIDogKHVuaXQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICA7IHNjb3BlIDogJ3cgSW5jcmVtZW50YWwuU2NvcGUudFxuICAgICAgfVxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgndiwgJ3cpIHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MsICd3KSB0XG4gICAgZW5kXG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgPVxuICAgICAgbGV0IHJlYyBzZWxmID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChsZXQgdXBkYXRlcl9ub2RlID1cbiAgICAgICAgICAgICBJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGxhenkgc2VsZikgPSBzZWxmIGluXG4gICAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXBcbiAgICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAgIH5pbml0OigpXG4gICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoKSAoa2V5LCBjaGFuZ2VkX3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBNYXAuZmluZF9tdWx0aSBzZWxmLmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGVudHJpZXMgfmY6KGZ1biBlbnRyeSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICA8LSAobWF0Y2ggY2hhbmdlZF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfdmFsdWUgfCBgVW5lcXVhbCAoXywgbmV3X3ZhbHVlKSAtPiBTb21lIG5ld192YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgZW50cnkubm9kZSkpO1xuICAgICAgICAgICAgICAgICBzZWxmLnNhdmVkX21hcCA8LSBpbnB1dF9tYXApKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgICAgeyBzYXZlZF9tYXAgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyBsb29rdXBfZW50cmllcyA9IGVtcHR5X21hcFxuICAgICAgICAgICA7IHVwZGF0ZXJfbm9kZVxuICAgICAgICAgICA7IHNjb3BlID0gSW5jcmVtZW50YWwuU2NvcGUuY3VycmVudCAoSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwKSAoKVxuICAgICAgICAgICB9KVxuICAgICAgaW5cbiAgICAgIExhenkuZm9yY2Ugc2VsZlxuICAgIDs7XG5cbiAgICBsZXRbQGNvbGRdIHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSB+aXNfbm93X29ic2VydmFibGUgPVxuICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICBsZXQgY3VycmVudF9lbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgIGxldCBpc19saW5rZWQgPSBMaXN0LmV4aXN0cyBjdXJyZW50X2VudHJpZXMgfmY6KHBoeXNfZXF1YWwgZW50cnkpIGluXG4gICAgICBpZiBCb29sLmVxdWFsIGlzX2xpbmtlZCBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpZiBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlblxuICAgICAgICB0Lmxvb2t1cF9lbnRyaWVzXG4gICAgICAgIDwtIE1hcC51cGRhdGUgdC5sb29rdXBfZW50cmllcyBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIChvdGhlcl9lbnRyeSA6OiBfIGFzIG90aGVyX2VudHJpZXMpIC0+XG4gICAgICAgICAgICAoKiBVcGRhdGUgdGhpcyBlbnRyeSdzIHZhbHVlIHRvIGJlIGN1cnJlbnQuICopXG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBvdGhlcl9lbnRyeS5zYXZlZF92YWx1ZTtcbiAgICAgICAgICAgIGVudHJ5IDo6IG90aGVyX2VudHJpZXNcbiAgICAgICAgICB8IE5vbmUgfCBTb21lIFtdIC0+XG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXk7XG4gICAgICAgICAgICBbIGVudHJ5IF0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld19lbnRyaWVzID1cbiAgICAgICAgICBMaXN0LmZpbHRlciBjdXJyZW50X2VudHJpZXMgfmY6KGZ1biB4IC0+IG5vdCAocGh5c19lcXVhbCBlbnRyeSB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSAoaWYgTGlzdC5pc19lbXB0eSBuZXdfZW50cmllc1xuICAgICAgICAgICAgdGhlbiBNYXAucmVtb3ZlIHQubG9va3VwX2VudHJpZXMga2V5XG4gICAgICAgICAgICBlbHNlIE1hcC5zZXQgdC5sb29rdXBfZW50cmllcyB+a2V5IH5kYXRhOm5ld19lbnRyaWVzKSlcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXkgPVxuICAgICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgdC51cGRhdGVyX25vZGUgaW5cbiAgICAgIEluY3JlbWVudGFsLlNjb3BlLndpdGhpbiBpbmNyZW1lbnRhbF9zdGF0ZSB0LnNjb3BlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbGV0IHJlYyBlbnRyeSA9XG4gICAgICAgICAgbGF6eVxuICAgICAgICAgICAgeyBzYXZlZF92YWx1ZSA9IE1hcC5maW5kIHQuc2F2ZWRfbWFwIGtleVxuICAgICAgICAgICAgOyBub2RlID1cbiAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IChmb3JjZSBlbnRyeSkuc2F2ZWRfdmFsdWUpXG4gICAgICAgICAgICAgICAgICB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2U6KHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgICAgZW50cnkubm9kZVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgdC51cGRhdGVyX25vZGUpO1xuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBlbnRyeS5ub2RlKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IGtleSA9XG4gICAgICBtYXRjaCBNYXAuZmluZF9tdWx0aSB0Lmxvb2t1cF9lbnRyaWVzIGtleSB3aXRoXG4gICAgICB8IGVudHJ5IDo6IF8gLT4gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZVxuICAgICAgfCBbXSAtPiBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXlcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA9IHN0cnVjdFxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX2VudHJ5IHNleHBfb2ZfdmFsdWUgZW50cnkgPVxuICAgICAgICBsZXQgeyBzYXZlZF92YWx1ZTsgbm9kZSB9ID0gZW50cnkgaW5cbiAgICAgICAgbGV0IG5vZGUgPSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlIGluXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgOiB2YWx1ZSBvcHRpb25cbiAgICAgICAgICA7IG5vZGVfaW5mbyA9IChJbmNyZW1lbnRhbC51c2VyX2luZm8gbm9kZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19jb25zdCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAoSW5jcmVtZW50YWwuaXNfY29uc3Qgbm9kZSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19pbnZhbGlkID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX3ZhbGlkIG5vZGUpKSAoKVxuICAgICAgICAgICAgICAgOiAodW5pdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX3VubmVjZXNzYXJ5ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX25lY2Vzc2FyeSBub2RlKSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH1dXG4gICAgICA7O1xuXG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgICBsZXQgaW5mb19wZXJfa2V5ID1cbiAgICAgICAgICBNYXAubWVyZ2UgdC5zYXZlZF9tYXAgdC5sb29rdXBfZW50cmllcyB+ZjooZnVuIH5rZXkgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGFjdHVhbF92YWx1ZSwgZW50cmllcyA9XG4gICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSB4LCBbXVxuICAgICAgICAgICAgICB8IGBSaWdodCB5IC0+IE5vbmUsIHlcbiAgICAgICAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gU29tZSB4LCB5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGtleSA6IGtleVxuICAgICAgICAgICAgICAgIDsgYWN0dWFsX3ZhbHVlIDogKHZhbHVlIG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICAgICAgICAgIDsgZW50cmllcyA6IHZhbHVlIGVudHJ5IGxpc3RcbiAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgaW5cbiAgICAgICAgU2V4cC5MaXN0IChNYXAuZGF0YSBpbmZvX3Blcl9rZXkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSBJbmNyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgR2VuZXJpYy5Mb29rdXAudFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG4gIG1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBJbnN0cnVtZW50YXRpb25cblxuICBsZXQgZmxhdHRlbiB4ID0gZmxhdHRlbiBJbmNyLlN0YXRlLnQgeFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExvb2t1cFxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCwgSW5jci5zdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgR2VuZXJpY1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuU19nZW4pID0gc3RydWN0XG4gIG1vZHVsZSBFID0gSW5jci5FeHBlcnRcblxuICAoKiBIYXNodGJsIHN0YXJ0cyBvdXQgYXQgYSByaWRpY3Vsb3VzIHNpemUgb2YgMTI4LiBUaGlzIGlzIGEgbW9yZSByZWFzb25hYmxlIG51bWJlclxuICAgICBvZiBiaW5zIHRvIGhhdmUuICopXG4gIGxldCBoYXNodGJsX3NpemUgPSAxMFxuXG4gICgqKiBbc2V0dXBfZ2VuZXJhdG9yXSBzZXRzIHVwIHRoZSBzdGFnZWQgY29udmVyc2lvbi5cblxuICAgICAgW2hhc2hhYmxlXSBpcyB1c2VkIHRvIGJ1aWxkIGEgdGFibGUgb2YgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcy4gV2UgZHJvcCB1bm5lY2Vzc2FyeVxuICAgICAgZGVwZW5kZW5jaWVzIHRvIGFsbG93IHRoZW0gdG8gYmUgY29sbGVjdGVkLlxuXG4gICAgICBbY29tcHV0ZV9vdXRwdXQga2V5XSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IG5vZGUgY29ycmVzcG9uZGluZyB0byBba2V5XS5cbiAgICAgIFtjb21wdXRlX291dHB1dF0gaXMgY2xvc2VkIG92ZXIgdGhlIG11dGFibGUgc3RhdGUgZGV0ZXJtaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIHRoZSBzZWxlY3RvcidzIGlucHV0LlxuXG4gICAgICBbbWFrZV9pbnB1dF9ub2RlXSBtYWtlcyBzdXJlIHRoYXQgd2hlbiB0aGUgbXV0YWJsZSBzdGF0ZSBpbnNpZGUgW2NvbXB1dGVfb3V0cHV0XSBpc1xuICAgICAgdXBkYXRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIFtuZWNlc3NhcnlfZGVwZW5kZW5jaWVzXSB0YWJsZSBhcmUgbWFkZVxuICAgICAgc3RhbGUuICAqKVxuICBsZXQgc2V0dXBfZ2VuZXJhdG9yXG4gICAgICAgIChoYXNoYWJsZSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KVxuICAgICAgICB+KGNvbXB1dGVfb3V0cHV0IDogJ2EgLT4gJ2IpXG4gICAgICAgIH4obWFrZV9pbnB1dF9ub2RlIDogbWFrZV9rZXlfc3RhbGU6KCdhIC0+IHVuaXQpIC0+IHVuaXQgSW5jci50KVxuICAgIDogKCdhIC0+ICdiIEluY3IudCkgU3RhZ2VkLnRcbiAgICA9XG4gICAgbGV0IG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IChpbnB1dF9ub2RlIDogdW5pdCBJbmNyLnQpID1cbiAgICAgIGxldCBtYWtlX2tleV9zdGFsZSBrZXkgPVxuICAgICAgICBIYXNodGJsLmZpbmQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdXG4gICAgICAgIHw+IExpc3QuaXRlciB+ZjpFLk5vZGUubWFrZV9zdGFsZVxuICAgICAgaW5cbiAgICAgIG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgICgqIFNldCB0aGUgY3V0b2ZmIHNvIHRoYXQgd2UgbmV2ZXIgcGFzcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHVwZGF0ZSB0byB0aGUgbm9kZXMuIFdlXG4gICAgICAgd2FudCBldmVyeXRoaW5nIHRvIGdvIHRocm91Z2ggW21ha2Vfa2V5X3N0YWxlXSAqKVxuICAgIEluY3Iuc2V0X2N1dG9mZiBpbnB1dF9ub2RlIEluY3IuQ3V0b2ZmLmFsd2F5cztcbiAgICBzdGFnZSAoZnVuIGtleSAtPlxuICAgICAgbGV0IGlucHV0X2RlcCA9IEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfbm9kZSBpblxuICAgICAgbGV0IHJlYyBvdXRwdXRfbm9kZSA9IGxhenkgKFxuICAgICAgICBFLk5vZGUuY3JlYXRlXG4gICAgICAgICAgKGZ1biAoKSAtPiBjb21wdXRlX291dHB1dCBrZXkpXG4gICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihmdW4gfmlzX25vd19vYnNlcnZhYmxlIC0+XG4gICAgICAgICAgICBpZiBpc19ub3dfb2JzZXJ2YWJsZSB0aGVuXG4gICAgICAgICAgICAgIEhhc2h0YmwuYWRkX211bHRpIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTooZm9yY2Ugb3V0cHV0X25vZGUpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEhhc2h0YmwuY2hhbmdlIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIGwgfmY6KEZuLm5vbiAocGh5c19lcXVhbCAoZm9yY2Ugb3V0cHV0X25vZGUpKSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGwnIC0+IFNvbWUgbCdcbiAgICAgICAgICAgICAgKSkpXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9ub2RlID0gZm9yY2Ugb3V0cHV0X25vZGUgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBvdXRwdXRfbm9kZSBpbnB1dF9kZXA7XG4gICAgICBFLk5vZGUud2F0Y2ggb3V0cHV0X25vZGVcbiAgICApXG5cbiAgKCoqIFRoaXMgY3JlYXRlcyBhIHVuaXQgaW5jcmVtZW50YWwgdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgaW5wdXQgaW5jcmVtZW50YWxcbiAgICAgIGZpcmVzLiBXaGVuIHRoYXQgb2NjdXJzLCBpdCB1cGRhdGVzIFtzZWxlY3RlZF0gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIFtpbnB1dF0sIGFuZCBjYWxscyBbbWFrZV9rZXlfc3RhbGVdIGZvciBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZSBvZiB0aGVcbiAgICAgIGluY3JlbWVudGFsLiAqKVxuICBsZXQgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlID1cbiAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgT3B0aW9uLml0ZXIgaW5wIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBPcHRpb24uaXRlciAhc2VsZWN0ZWQgfmY6bWFrZV9zdGFsZTtcbiAgICAgIHNlbGVjdGVkIDo9IGlucFxuICAgIClcblxuICBsZXQgc2VsZWN0X29uZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgKGlucHV0IDogYSBvcHRpb24gSW5jci50KVxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGtleScgLT4gSC5jb21wYXJlIGtleSBrZXknID0gMFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlOm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lIGggaW5wdXQgPVxuICAgIHNlbGVjdF9vbmUnIGggKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgKGtleScsIGRhdGEpIC0+IGlmIEguY29tcGFyZSBrZXkga2V5JyA9IDAgdGhlbiBkYXRhIGVsc2UgZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+c2VsZWN0ZWQgfmlucHV0IH5tYWtlX3N0YWxlOihmdW4gKGtleSwgXykgLT4gbWFrZV9rZXlfc3RhbGUga2V5KVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSBoIH5kZWZhdWx0IGlucHV0ID1cbiAgICBzZWxlY3Rfb25lX3ZhbHVlJyBoIH5kZWZhdWx0IChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X21hbnlfdmFsdWVzXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBIYXNodGJsLmZpbmQgc2VsZWN0ZWQga2V5IHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgSGFzaHRibC5pdGVyX2tleXMgc2VsZWN0ZWQgfmY6bWFrZV9rZXlfc3RhbGU7XG4gICAgICAgIEhhc2h0YmwuY2xlYXIgc2VsZWN0ZWQ7XG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNodGJsLnNldCBzZWxlY3RlZCB+a2V5IH5kYXRhXG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X21hbnlcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2hfc2V0LlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9IEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBsZXQgb2xkX3NldCA9IEhhc2hfc2V0LmNvcHkgc2VsZWN0ZWQgaW5cbiAgICAgICAgSGFzaF9zZXQuY2xlYXIgc2VsZWN0ZWQ7XG5cbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIG9sZF9zZXQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaF9zZXQuYWRkIHNlbGVjdGVkIGtleVxuICAgICAgICApO1xuXG4gICAgICAgIEhhc2hfc2V0Lml0ZXIgb2xkX3NldCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5lbmRcblxuIiwiZXh0ZXJuYWwganNfcHJvZl9tYXJrIDogc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWFya1wiXG5leHRlcm5hbCBqc19wcm9mX21lYXN1cmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21lYXN1cmVcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tYXJrcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tYXJrc1wiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21lYXN1cmVzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21lYXN1cmVzXCJcblxubGV0IG1hcmsgbmFtZSA9IGpzX3Byb2ZfbWFyayBuYW1lXG5sZXQgbWVhc3VyZSB+bmFtZSB+c3RhcnQgfmVuZF8gPSBqc19wcm9mX21lYXN1cmUgbmFtZSBzdGFydCBlbmRfXG5cbmxldCByZWNvcmQgbmFtZSB+ZiA9XG4gIGxldCBiZWZvcmVfbmFtZSA9IG5hbWUgXiBcIl9iZWZvcmVcIiBpblxuICBsZXQgYWZ0ZXJfbmFtZSA9IG5hbWUgXiBcIl9hZnRlclwiIGluXG4gIGxldCAoKSA9IG1hcmsgYmVmb3JlX25hbWUgaW5cbiAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgbGV0ICgpID0gbWFyayBhZnRlcl9uYW1lIGluXG4gIG1lYXN1cmUgfm5hbWUgfnN0YXJ0OmJlZm9yZV9uYW1lIH5lbmRfOmFmdGVyX25hbWU7XG4gIHJlc1xuOztcblxubGV0IGNsZWFyX21hcmtzICgpID0ganNfcHJvZl9jbGVhcl9tYXJrcyAoKVxubGV0IGNsZWFyX21lYXN1cmVzICgpID0ganNfcHJvZl9jbGVhcl9tZWFzdXJlcyAoKVxuXG5tb2R1bGUgTWFudWFsID0gc3RydWN0XG4gIGxldCBtYXJrID0gbWFya1xuICBsZXQgbWVhc3VyZSA9IG1lYXN1cmVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5cbnR5cGUgdCA9XG4gIHsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgOyBtaW1ldHlwZSA6IHN0cmluZ1xuICA7IGNvbnRlbnRzIDogc3RyaW5nXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxkb3dubG9hZGVyOiAlcz5cIiB0LmZpbGVuYW1lKVxuXG5sZXQgdHJpZ2dlciB7IGZpbGVuYW1lOyBtaW1ldHlwZTsgY29udGVudHMgfSA9XG4gIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gIGlmIFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZ1xuICB0aGVuXG4gICAgcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlIFwiRG93bmxvYWQgdHJpZ2dlcmVkXCIgKGZpbGVuYW1lIDogc3RyaW5nKSAobWltZXR5cGUgOiBzdHJpbmcpIGNvbnRlbnRzXVxuICBlbHNlIChcbiAgICAoKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTkzMjg4OTEvNTU4NTkyICopXG4gICAgbGV0IGEgPSBEb21faHRtbC5jcmVhdGVBIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgbGV0IGNvbnRlbnRzX2JpZ3N0ciA9XG4gICAgICBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgKEJpZ3N0cmluZy5vZl9zdHJpbmcgY29udGVudHMpXG4gICAgaW5cbiAgICBsZXQgYmxvYiA9XG4gICAgICAoKiBEb24ndCB1c2UgW2Jsb2JfZnJvbV9zdHJpbmddLiBUaGF0IGhhcyBhbiBhdHRyYWN0aXZlIHR5cGUgYnV0IHdvcmtzIGJ5IGZpcnN0XG4gICAgICAgICBjb252ZXJ0aW5nIG91ciBPQ2FtbCBzdHJpbmcgdG8gYSBKYXZhc2NyaXB0IHN0cmluZywgd2hpY2ggY29udmVydHMgdG9cbiAgICAgICAgIFVURi0xNi4gSWYgdGhlIHN0cmluZyBjb250YWlucyByYW5kb20gYmluYXJ5IGRhdGEgdGhhdCB3aWxsIGRpc3RvcnQgaXQuICopXG4gICAgICBGaWxlLmJsb2JfZnJvbV9hbnkgWyBgYXJyYXlCdWZmZXIgY29udGVudHNfYmlnc3RyIF0gfmNvbnRlbnRUeXBlOm1pbWV0eXBlXG4gICAgaW5cbiAgICBsZXQgdXJsID0gRG9tX2h0bWwud2luZG93IyMuX1VSTCMjY3JlYXRlT2JqZWN0VVJMIGJsb2IgaW5cbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImhyZWZcIikgdXJsO1xuICAgIGEjI3NldEF0dHJpYnV0ZSAoSnMuc3RyaW5nIFwiZG93bmxvYWRcIikgKEpzLnN0cmluZyBmaWxlbmFtZSk7XG4gICAgYSMjY2xpY2s7XG4gICAgRG9tX2h0bWwud2luZG93IyMuX1VSTCMjcmV2b2tlT2JqZWN0VVJMIHVybClcbjs7XG5cbm1vZHVsZSBCdXR0b24gPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KGVuYWJsZWQgPSB0cnVlKVxuICAgICAgICA/KG9uX2NsaWNrID0gZnVuIF8gLT4gVmRvbS5FZmZlY3QuSWdub3JlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgIH5nZXRfZG93bmxvYWRcbiAgICAgICAgfmJ1dHRvbl90ZXh0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvcGVuIFZkb20gaW5cbiAgICBsZXQgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgZXYgPVxuICAgICAgdHJpZ2dlciAoZ2V0X2Rvd25sb2FkICgpKTtcbiAgICAgIG9uX2NsaWNrIGV2XG4gICAgaW5cbiAgICBsZXQgZW5hYmxlZF9kaXNhYmxlZCA9XG4gICAgICBpZiBlbmFibGVkIHRoZW4gW10gZWxzZSBbIEF0dHIuZGlzYWJsZWQ7IEF0dHIuc3R5bGUgKENzc19nZW4uY29sb3IgKGBOYW1lIFwiZ3JleVwiKSkgXVxuICAgIGluXG4gICAgbGV0IGF0dHJzID1cbiAgICAgIFsgZXh0cmFfYXR0cnM7IGVuYWJsZWRfZGlzYWJsZWQ7IFsgQXR0ci5vbl9jbGljayB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBdIF1cbiAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBOb2RlLmJ1dHRvbiB+YXR0cnM6WyBBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyBdIFsgTm9kZS50ZXh0IGJ1dHRvbl90ZXh0IF1cbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEluY3IgPSBJbmNyZW1lbnRhbC5NYWtlICgpXG5cbigqIFRoaXMgaXMgdGhlIGRlZmF1bHQgY2xvY2sgZm9yIHJ1bm5pbmcgY2xpZW50cywgYnV0IGJvbnNhaSB0ZXN0cyBoYXZlIHRoZWlyXG4gICBvd24gc2VwYXJhdGUgY2xvY2tzICopXG5sZXQgY2xvY2sgPSBJbmNyLkNsb2NrLmNyZWF0ZSB+c3RhcnQ6KFRpbWVfbnMubm93ICgpKSAoKVxuXG5pbmNsdWRlIEluY3Jcbm1vZHVsZSBNYXAgPSBJbmNyX21hcC5NYWtlIChJbmNyKVxubW9kdWxlIFNlbGVjdCA9IEluY3Jfc2VsZWN0Lk1ha2UgKEluY3IpXG4iLCJvcGVuIFZpcnR1YWxfZG9tXG5vcGVuIENvcmVcblxudHlwZSAoJ2FjdGlvbiwgJ21vZGVsLCAnc3RhdGUsICdleHRyYSkgd2l0aF9leHRyYSA9XG4gIHsgYXBwbHlfYWN0aW9uIDogJ2FjdGlvbiAtPiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHZpZXcgOiBWZG9tLk5vZGUudFxuICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+IHVuaXRcbiAgOyBleHRyYSA6ICdleHRyYVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbnR5cGUgKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsKSB0ID0gKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsLCB1bml0KSB3aXRoX2V4dHJhXG5cbmxldCBjcmVhdGVfd2l0aF9leHRyYSA/YXBwbHlfYWN0aW9uID91cGRhdGVfdmlzaWJpbGl0eSA/b25fZGlzcGxheSB+ZXh0cmEgbW9kZWwgdmlldyA9XG4gIGxldCBhcHBseV9hY3Rpb24gPVxuICAgIE9wdGlvbi52YWx1ZSBhcHBseV9hY3Rpb24gfmRlZmF1bHQ6KGZ1biBfIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+IG1vZGVsKVxuICBpblxuICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgPVxuICAgIE9wdGlvbi52YWx1ZSB1cGRhdGVfdmlzaWJpbGl0eSB+ZGVmYXVsdDooZnVuIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IG9uX2Rpc3BsYXkgPSBPcHRpb24udmFsdWUgb25fZGlzcGxheSB+ZGVmYXVsdDooZnVuIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+ICgpKSBpblxuICB7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXk7IGV4dHJhOyB2aWV3IH1cbjs7XG5cbmxldCBjcmVhdGUgPSBjcmVhdGVfd2l0aF9leHRyYSB+ZXh0cmE6KClcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5cbigqKiBDb21tb24gbW9kdWxlIHR5cGVzICopXG5tb2R1bGUgdHlwZSBNb2RlbCA9IHNpZ1xuICB0eXBlIHRcblxuXG4gICgqKiBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIHdoZXRoZXIgdGhlIG1vZGVsIGhhcyBjaGFuZ2VkIGVub3VnaCB0byByZXF1aXJlIHJlZmlyaW5nXG4gICAgICB0aGUgaW5jcmVtZW50YWwgZ3JhcGguXG5cbiAgICAgIEl0J3MgYmVzdCBpZiB0aGUgdmFsdWVzIGluIHRoZSBtb2RlbCBzdXBwb3J0IGEgc2VtYW50aWNhbGx5IHJlYXNvbmFibGUgY3V0b2ZmXG4gICAgICBmdW5jdGlvbiB3aGljaCBsZXRzIHlvdSBhdm9pZCBpbmZpbml0ZSByZWNvbXB1dGF0aW9uIGxvb3BzIHRoYXQgY2FuIG90aGVyd2lzZSBiZVxuICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSB2aXNpYmlsaXR5IGNoZWNrcy4gRm9yIHRoaXMgcmVhc29uLCBpdCdzIHR5cGljYWxseSBhIGdvb2QgaWRlYSB0b1xuICAgICAgYXZvaWQgaGF2aW5nIHNpbXBsZSBjbG9zdXJlcyBzdG9yZWQgaW4gdGhlIG1vZGVsLlxuXG4gICAgICBUaGF0IHNhaWQsIGl0IGRvZXMgd29yayBpZiB5b3UgcHV0IHBoeXNfZXF1YWwgaW4gZm9yIHRoZSBjdXRvZmYuICopXG4gIHZhbCBjdXRvZmYgOiB0IC0+IHQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjdGlvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTdGF0ZSA9IHNpZ1xuICAoKiogUmVwcmVzZW50cyB0aGUgaW1wZXJhdGl2ZSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggYW4gYXBwbGljYXRpb24sIHR5cGljYWxseSB1c2VkIGZvclxuICAgICAgaG91c2luZyB0aGluZ3MgbGlrZSBjb21tdW5pY2F0aW9uIEFzeW5jLVJQQyBjb25uZWN0aW9ucy4gKilcbiAgdHlwZSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICBtb2R1bGUgQWN0aW9uIDogQWN0aW9uXG4gIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgKCoqIFtvbl9zdGFydHVwXSBpcyBjYWxsZWQgb25jZSwgcmlnaHQgYWZ0ZXIgdGhlIGluaXRpYWwgRE9NIGlzIHNldCB0byB0aGUgdmlldyB0aGF0XG4gICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRvaW5nIHRoaW5ncyBsaWtlIHN0YXJ0aW5nIHVwXG4gICAgICBhc3luYyBwcm9jZXNzZXMuICBOb3RlIHRoYXQgdGhpcyBwYXJ0IG9mIHRoZSBjb21wdXRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGFueVxuICAgICAgaW5jcmVtZW50YWxpdHksIHNpbmNlIGl0J3Mgb25seSBydW4gb25jZS4gKilcbiAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgKCoqIFtjcmVhdGVdIGlzIGEgZnVuY3Rpb24gdGhhdCBpbmNyZW1lbnRhbGx5IGNvbnN0cnVjdHMgYSB7IUNvbXBvbmVudH0uIE5vdGUgdGhhdCBhXG4gICAgICBbQ29tcG9uZW50XSBzdXBwb3J0cyBmdW5jdGlvbnMgbGlrZSBbYXBwbHlfYWN0aW9uXSwgd2hpY2ggcmV0dXJuIGEgbmV3IFtNb2RlbC50XSxcbiAgICAgIHdpdGhvdXQgdGFraW5nIGEgbW9kZWwgYXMgYW4gZXhwbGljaXQgaW5wdXQuICBUaGUgaW50ZW50IGlzIGZvciBbYXBwbHlfYWN0aW9uXSB0b1xuICAgICAgaGF2ZSBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgbW9kZWwgdmlhIGl0cyBjb25zdHJ1Y3Rpb25cblxuICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgbWlnaHQgbG9vayBpbiBwcmFjdGljZS5cblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIE1vZGVsID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0geyBjb3VudGVyIDogaW50IH0gW0BAZGVyaXZpbmcgZmllbGRzLCBjb21wYXJlXVxuXG4gICAgICAgICAgbGV0IGN1dG9mZiB0MSB0MiA9IGNvbXBhcmUgdDEgdDIgPSAwXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHVuaXRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEluY3JlbWVudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgbGV0IHNob3VsZF9sb2cgXyA9IGZhbHNlXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBpbml0aWFsX21vZGVsID0geyBNb2RlbC5jb3VudGVyID0gMCB9XG5cbiAgICAgICAgbGV0IG9uX3N0YXJ0dXAgfnNjaGVkdWxlX2FjdGlvbnMgX21vZGVsID1cbiAgICAgICAgICBldmVyeSAoVGltZV9ucy5TcGFuLm9mX3NlYyAxLikgKGZ1biAoKSAtPlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9ucyBbIEFjdGlvbi5JbmNyZW1lbnQgXSk7XG4gICAgICAgICAgRGVmZXJyZWQudW5pdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDpfIH5pbmplY3Q6XyA9XG4gICAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgICAgbGV0JW1hcCBhcHBseV9hY3Rpb24gPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgIGZ1biAoSW5jcmVtZW50IDogQWN0aW9uLnQpIF8gfnNjaGVkdWxlX2FjdGlvbnM6XyAtPlxuICAgICAgICAgICAgICB7IE1vZGVsLmNvdW50ZXIgPSBjb3VudGVyICsgMSB9XG4gICAgICAgICAgYW5kIHZpZXcgPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID1cbiAgICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgVmRvbS5Ob2RlLmRpdiBbXSBbIFZkb20uTm9kZS50ZXh0IChJbnQudG9fc3RyaW5nIGNvdW50ZXIpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBWZG9tLk5vZGUuYm9keSBbXSBbIGNvdW50ZXIgXVxuICAgICAgICAgIGFuZCBtb2RlbCA9IG1vZGVsIGluXG4gICAgICAgICAgKCogTm90ZSB0aGF0IHdlIGRvbid0IGluY2x1ZGUgW29uX2Rpc3BsYXldIG9yIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHNpbmNlXG4gICAgICAgICAgICAgdGhlc2UgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cyAqKVxuICAgICAgICAgIENvbXBvbmVudC5jcmVhdGUgfmFwcGx5X2FjdGlvbiBtb2RlbCB2aWV3XG4gICAgICAgIDs7IF19XG5cbiAgICAgIFRoZSBmdWxsIGNvZGUgZm9yIHRoaXMgZXhhbXBsZSBjYW4gYmUgZm91bmQgaW4gZXhhbXBsZXMvY291bnRlci5cbiAgKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogIE1vZGVsLnQgSW5jci50XG4gICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgKCoqIFtvbGRfbW9kZWxdIGNvbnRhaW5zIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBtb2RlbCAqKVxuICAgIC0+IGluamVjdDooQWN0aW9uLnQgLT4gdW5pdCBWZG9tLkVmZmVjdC50KVxuICAgICgqKiBbaW5qZWN0XSBnaXZlcyB5b3UgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGV2ZW50IGhhbmRsZXJzIGluIHRoZSB2aXJ0dWFsIERPTS4gSW5cbiAgICAgICAgeW91ciBldmVudCBoYW5kbGVyLCBjYWxsIHRoaXMgZnVuY3Rpb24gb24gdGhlIGFjdGlvbiB5b3Ugd291bGQgbGlrZSB0b1xuICAgICAgICBzY2hlZHVsZS4gVmlydHVhbCBET00gd2lsbCBhdXRvbWF0aWNhbGx5IGRlbGVnYXRlIHRoYXQgYWN0aW9uIGJhY2sgdG8gdGhlXG4gICAgICAgIFtTdGFydF9hcHBdIG1haW4gbG9vcC4gKilcbiAgICAtPiAoQWN0aW9uLnQsIE1vZGVsLnQsIFN0YXRlLnQpIENvbXBvbmVudC50IEluY3IudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIHR5cGUgKCdzdGF0ZSwgJ21vZGVsLCAnYWN0aW9uKSBzbmFwc2hvdCA9XG4gICAgeyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgICA7IGFwcGx5X2FjdGlvbiA6XG4gICAgICAgICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWwgLT4gJ2FjdGlvbiAtPiAnbW9kZWxcbiAgICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogJ21vZGVsIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+ICdtb2RlbFxuICAgIDsgb25fZGlzcGxheSA6ICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiB1bml0XG4gICAgfVxuXG4gIG1vZHVsZSB0eXBlIFNfZm9yX2JvbnNhaSA9IHNpZ1xuICAgIG1vZHVsZSBNb2RlbCA6IE1vZGVsXG4gICAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICAgIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgICB2YWwgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gOiBBY3Rpb24udCAtPiBib29sXG4gICAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICBNb2RlbC50IEluY3IudFxuICAgICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAgIC0+IChTdGF0ZS50LCBNb2RlbC50LCBBY3Rpb24udCkgc25hcHNob3QgSW5jci50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBSZWN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0b3AgOiAnYVxuICAgIDsgbGVmdCA6ICdhXG4gICAgOyBib3R0b20gOiAnYVxuICAgIDsgcmlnaHQgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICB7IHRvcCA9IGYgdC50b3A7IGxlZnQgPSBmIHQubGVmdDsgYm90dG9tID0gZiB0LmJvdHRvbTsgcmlnaHQgPSBmIHQucmlnaHQgfVxuICA7O1xuXG4gIGxldCBpbnRfaGVpZ2h0IHQgPSB0LmJvdHRvbSAtIHQudG9wXG4gIGxldCBpbnRfd2lkdGggdCA9IHQucmlnaHQgLSB0LmxlZnRcbiAgbGV0IGZsb2F0X2hlaWdodCB0ID0gdC5ib3R0b20gLS4gdC50b3BcbiAgbGV0IGZsb2F0X3dpZHRoIHQgPSB0LnJpZ2h0IC0uIHQubGVmdFxuZW5kXG5cbmxldCByb3VuZF9mbG9hdF9yZWN0ID8ocm91bmQgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4pID0gUmVjdC5tYXAgfmY6cm91bmRcblxudHlwZSByb3dzX29yX2NvbHVtbnMgPVxuICB8IFJvd3NcbiAgfCBDb2x1bW5zXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHZhcmlhbnRzLCBjb21wYXJlXVxuXG5sZXQgaW5uZXJIZWlnaHQgKCkgPSBEb21faHRtbC53aW5kb3cjIy5pbm5lckhlaWdodFxubGV0IGlubmVyV2lkdGggKCkgPSBEb21faHRtbC53aW5kb3cjIy5pbm5lcldpZHRoXG5cbmxldCBlbGVtZW50X2lzX2luX3ZpZXdwb3J0IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBGbG9hdC4oID49ICkgcmVjdCMjLnRvcCAwLlxuICAmJiBGbG9hdC4oID49ICkgcmVjdCMjLmxlZnQgMC5cbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5ib3R0b20gKEZsb2F0Lm9mX2ludCAoaW5uZXJIZWlnaHQgKCkpKVxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLnJpZ2h0IChGbG9hdC5vZl9pbnQgKGlubmVyV2lkdGggKCkpKVxuOztcblxuKCoqIFNjcm9sbHMgdG8gdGhlIGl0ZW0gbWFya2VkIGFzIFwia2VlcC1pbi12aWV3XCIgKilcbmxldCBzY3JvbGwgPyhpZCA9IFwia2VlcC1pbi12aWV3XCIpICgpID1cbiAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBlbHQgLT4gaWYgbm90IChlbGVtZW50X2lzX2luX3ZpZXdwb3J0IGVsdCkgdGhlbiBlbHQjI3Njcm9sbEludG9WaWV3IEpzLl90cnVlXG47O1xuXG4oKiBOb3QgeWV0IHN1cHBvcnRlZCBvbiBDaHJvbWUuICBNYXliZSB3ZSBzaG91bGQgdXNlIGpRdWVyeT9cbiAgIHtbXG4gICAgIGxldCBzY3JvbGxfaW50b192aWV3IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogdW5pdCA9XG4gICAgICAgZWx0IyNzY3JvbGxJbnRvVmlldyAob2JqZWN0JWpzXG4gICAgICAgICB2YWwgYmxvY2sgPSBKcy5zdHJpbmcgXCJzdGFydFwiXG4gICAgICAgICB2YWwgYmVoYXZpb3IgPSBKcy5zdHJpbmcgXCJzbW9vdGhcIlxuICAgICAgIGVuZClcbiAgIF19XG4qKVxuKCogW3ZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbF0gZ2V0cyBib3VuZGluZyByZWN0IG9mIFtlbHRdLiBUaGUgYm91bmRpbmcgcmVjdCBpc1xuICAgcmVsYXRpdmUgdG8gdGhlIHZpZXcgcG9ydCAqKVxubGV0IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgeyBSZWN0LnRvcCA9IHJlY3QjIy50b3BcbiAgOyBsZWZ0ID0gcmVjdCMjLmxlZnRcbiAgOyBib3R0b20gPSByZWN0IyMuYm90dG9tXG4gIDsgcmlnaHQgPSByZWN0IyMucmlnaHRcbiAgfVxuOztcblxubGV0IHZpZXdwb3J0X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMDsgbGVmdCA9IDA7IGJvdHRvbSA9IGlubmVySGVpZ2h0ICgpOyByaWdodCA9IGlubmVyV2lkdGggKCkgfVxuOztcblxubGV0IGNsaWVudF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgYm91bmRpbmdfcmVjdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbHQgaW5cbiAgeyBib3VuZGluZ19yZWN0IHdpdGhcbiAgICBib3R0b20gPSBib3VuZGluZ19yZWN0LnRvcCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBib3VuZGluZ19yZWN0LmxlZnQgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwXG4gIDsgbGVmdCA9IDBcbiAgOyBib3R0b20gPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5cbigqKiBTaW1wbGUgd3JhcHBlciBmb3IgdGhlIGJpbmFyeS1zZWFyY2ggZnVuY3RvciAgICopXG5sZXQgYmluYXJ5X3NlYXJjaCAodHlwZSBlbHQpIH5sZW5ndGggfmdldCB+Y29tcGFyZSBtb2RlIHggPVxuICBsZXQgbW9kdWxlIEJzID1cbiAgICBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIGVsdCA9IGVsdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHVuaXRcblxuICAgICAgbGV0IGdldCAoKSBuID0gZ2V0IG5cbiAgICAgIGxldCBsZW5ndGggKCkgPSBsZW5ndGhcbiAgICBlbmQpXG4gIGluXG4gIEJzLmJpbmFyeV9zZWFyY2ggKCkgfmNvbXBhcmUgbW9kZSB4XG47O1xuXG4oKiogU2VhcmNoZXMgdGhyb3VnaCBlbGVtZW50cyBpbmRleGVkIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXS4gKilcbmxldCBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCB+c2VhcmNoX2J5IG1vZGUgbGF5b3V0IHggPVxuICBsZXQgZ2V0ID1cbiAgICBsZXQgbnRoX2VsZW1lbnQgbiA9XG4gICAgICBsZXQgaWQgPSBudGhfZWxlbWVudF9pZCBuIGluXG4gICAgICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkVsZW1lbnQgJXMgbm90IGZvdW5kXCIgaWQgKClcbiAgICAgIHwgU29tZSBlbHQgLT4gZWx0XG4gICAgaW5cbiAgICBsZXQgZmlyc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IDApIGluXG4gICAgbGV0IGxhc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IChsZW5ndGggLSAxKSkgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBuJ3RoIGVsZW1lbnQgaW4gYSBub3JtYWxpemVkIHdheSwgYXMgaWYgdGhlIGluZGV4aW5nIGFsd2F5cyBnb2VzIGluXG4gICAgICAgaW5jcmVhc2luZyBvcmRlciBmcm9tIHRvcCB0b3AgYm90dG9tICopXG4gICAgbGV0IG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbiA9XG4gICAgICBsZXQgaXNfYXNjZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IEZsb2F0LiggPD0gKSBmaXJzdC50b3AgbGFzdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IEZsb2F0LiggPD0gKSBmaXJzdC5sZWZ0IGxhc3QubGVmdFxuICAgICAgaW5cbiAgICAgIG50aF9lbGVtZW50IChpZiBpc19hc2NlbmRpbmcgdGhlbiBuIGVsc2UgbGVuZ3RoIC0gbiAtIDEpXG4gICAgaW5cbiAgICBmdW4gbiAtPiBzZWFyY2hfYnkgKHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuKSlcbiAgaW5cbiAgYmluYXJ5X3NlYXJjaCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmU6RmxvYXQuY29tcGFyZSBtb2RlIHhcbjs7XG5cbmxldCBmaW5kX3Zpc2libGVfcmFuZ2Ugfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgbGF5b3V0ID1cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGVsZW1lbnRfc2VhcmNoID0gZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgaW5cbiAgICBsZXQgdmlld3BvcnRfcmVjdCA9IHZpZXdwb3J0X3JlY3QgKCkgaW5cbiAgICBsZXQgZmlyc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QuYm90dG9tLCB2aWV3cG9ydF9yZWN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5yaWdodCwgdmlld3BvcnRfcmVjdC5sZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgIGxldCBsYXN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LnRvcCwgdmlld3BvcnRfcmVjdC5ib3R0b21cbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QubGVmdCwgdmlld3BvcnRfcmVjdC5yaWdodFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgICgqIEJvdGggW2ZpcnN0XSBhbmQgW2xhc3RdIG5lZWQgdG8gYmUgW1NvbWVdLiBPdGhlcndpc2UsIGZvciBleGFtcGxlIGlmIHRoZSB3aG9sZVxuICAgICAgIHRhYmxlIGlzIGJlbG93IHZpZXcgcG9ydCwgdGhlbiBbZmlyc3RdIHdpbGwgYmUgW1NvbWVdLCBbbGFzdF0gd2lsbCBiZSBbTm9uZV0gKilcbiAgICBPcHRpb24uYm90aCBmaXJzdCBsYXN0KVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAge2pzfFxuICAgICAgKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG4gICAgICAgIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgICAgICB2YXIgcmUgPSAvKGF1dG98c2Nyb2xsKS87XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGRvYykge1xuICAgICAgICAgIHJldHVybiBkb2M7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY3VyID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXG4gICAgICAgIHdoaWxlIChjdXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgIHZhciBzdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKGN1cik7XG5cbiAgICAgICAgICBpZiAocmUudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgfSlcbiAgICB8anN9XG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXIgKGVsIDogI0RvbS5ub2RlIEpzLnQpIDogRG9tLm5vZGUgSnMudCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIFt8IEpzLlVuc2FmZS5pbmplY3QgZWwgfF1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFBlcmZvcm1hbmNlID0gSmF2YXNjcmlwdF9wcm9maWxpbmdcblxubGV0IHRpbWVyX3N0YXJ0IHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZSB0aGVuIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIChzIF4gXCJiZWZvcmVcIik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCB0aW1lcl9zdG9wIHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZVxuICB0aGVuIChcbiAgICBsZXQgYmVmb3JlID0gcyBeIFwiYmVmb3JlXCIgaW5cbiAgICBsZXQgYWZ0ZXIgPSBzIF4gXCJhZnRlclwiIGluXG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgYWZ0ZXI7XG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1lYXN1cmUgfm5hbWU6cyB+c3RhcnQ6YmVmb3JlIH5lbmRfOmFmdGVyKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWVFbmQgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHByaW50X2Vycm9yZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpKSBmbXRcblxubW9kdWxlIFJlcXVlc3RfaWRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcblxuICB2YWwgc2V0X29uY2VfZXhuXG4gICAgOiAgdFxuICAgIC0+IGFuaW1hdGlvbl9mcmFtZV9pZDpEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgIC0+IHNldF90aW1lb3V0X2lkOkRvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAtPiB1bml0XG5cbiAgdmFsIGNhbmNlbGxlZCA6IHQgLT4gYm9vbFxuICB2YWwgY2FuY2VsIDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBpZHMgPVxuICAgIHwgRW1wdHlcbiAgICB8IENhbmNlbGxlZFxuICAgIHwgSWRzIG9mXG4gICAgICAgIHsgYW5pbWF0aW9uX2ZyYW1lX2lkIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAgICAgOyBzZXRfdGltZW91dF9pZCA6IERvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAgICAgfVxuXG4gIHR5cGUgdCA9IGlkcyByZWZcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IHJlZiBFbXB0eVxuXG4gIGxldCBzZXRfb25jZV9leG4gKHQgOiB0KSB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+XG4gICAgICAoKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgbGV0J3MgYmUgZGVmZW5zaXZlLiAqKVxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZFxuICAgIHwgRW1wdHkgLT4gdCA6PSBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH1cbiAgICB8IElkcyBfIC0+IGludmFsaWRfYXJnIFwicmVxdWVzdF9pZHMgYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCBjYW5jZWxsZWQgeCA9XG4gICAgbWF0Y2ggIXggd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+IHRydWVcbiAgICB8IEVtcHR5IHwgSWRzIF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgY2FuY2VsICh0IDogdCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiAoKVxuICAgIHwgRW1wdHkgLT4gdCA6PSBDYW5jZWxsZWRcbiAgICB8IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfSAtPlxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZDtcbiAgICAgIHQgOj0gQ2FuY2VsbGVkXG4gIDs7XG5lbmRcblxuKCoqIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gbm90aWZpZXMgdGhlIGJyb3dzZXIgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBkbyBzb21lXG4gICAgY29tcHV0YXRpb24gYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQuIEJlY2F1c2UgdGhpcyBuZWVkcyB0byBvY2N1ciBpbiB0aGUgc2FtZVxuICAgIHN5bmNocm9ub3VzIGNhbGwgKGNhbGxlZCBiZWZvcmUgdGhlIG5leHQgcmVwYWludCksIHJldHVybmluZyBhIERlZmVycmVkLnQgd2lsbCBub3RcbiAgICB3b3JrLiBJbnN0ZWFkLCB5b3UgcGFzcyBpbiBhIGpvYiB0byBiZSBydW4gYmVmb3JlIHRoZSByZXBhaW50LlxuXG4gICAgTm90ZSB0aGF0IGlmIFtjYWxsYmFja10gY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyB3b3JrIGJlZm9yZSBkb2luZyBET00gY2hhbmdlcywgdGhvc2VcbiAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXBhaW50IGFuZCB3aWxsIGJlIHNhdmVkIHVudGlsIHRoZSBmb2xsb3dpbmcgb25lLlxuXG4gICAgV2hlbiB0aGUgdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kLCB0aGUgYnJvd3NlcnMgbmF0aXZlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmdW5jdGlvblxuICAgIHdpbGwgbmV2ZXIgY2FsbCB0aGUgY2FsbGJhY2ssIHNvIGluIG9yZGVyIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgZXZlbnRzLCB3ZSBzZXQgYW5cbiAgICBhbHRlcm5hdGUgc2V0VGltZW91dCBhdCAxIHNlY29uZC5cbiopXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2sgPVxuICAoKiBXZSBjYXB0dXJlIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdXNlIGl0IGxhdGVyIHdoZW4gaGFuZGxpbmcgY2FsbGJhY2tzIGZyb21cbiAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBzaW5jZSBleGNlcHRpb25zIHJhaXNlZCB0byB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgZ28gdGhyb3VnaFxuICAgICBvdXIgb3JkaW5hcnkgQXN5bmMgbW9uaXRvci4gKilcbiAgbGV0IGN1cnJlbnRfY29udGV4dCA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSBpblxuICBsZXQgcmVxdWVzdF9pZHMgPSBSZXF1ZXN0X2lkcy5jcmVhdGUgKCkgaW5cbiAgbGV0IGNhbGxiYWNrICgpID1cbiAgICBpZiBSZXF1ZXN0X2lkcy5jYW5jZWxsZWQgcmVxdWVzdF9pZHNcbiAgICB0aGVuICgpXG4gICAgZWxzZSAoXG4gICAgICBSZXF1ZXN0X2lkcy5jYW5jZWwgcmVxdWVzdF9pZHM7XG4gICAgICBsZXQgY2FsbGJhY2tfcmVzdWx0ID1cbiAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoaW5fY29udGV4dCBjdXJyZW50X2NvbnRleHQgY2FsbGJhY2tcbiAgICAgIGluXG4gICAgICBpZ25vcmUgKGNhbGxiYWNrX3Jlc3VsdCA6ICh1bml0LCB1bml0KSBSZXN1bHQudCkpXG4gIGluXG4gIGxldCBhbmltYXRpb25fZnJhbWVfaWQgPVxuICAgIGxldCBhbmltYXRpb25fY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSBhbmltYXRpb25fY2FsbGJhY2tcbiAgaW5cbiAgbGV0IHNldF90aW1lb3V0X2lkID1cbiAgICBsZXQgdGltZW91dF9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgICgqIDEwMDAgbXMgPSAxczsgIENob3NlbiBiZWNhdXNlIGJhY2tncm91bmRlZCB0YW5nbGUgc2VuZHMgcmVxdWVzdHNcbiAgICAgICBhdCBhcHByb3hpbWF0ZWx5IHRoaXMgcmF0ZS4gKilcbiAgICBsZXQgdGltZW91dCA9IDEwMDAuMCBpblxuICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCB0aW1lb3V0X2NhbGxiYWNrIHRpbWVvdXRcbiAgaW5cbiAgUmVxdWVzdF9pZHMuc2V0X29uY2VfZXhuIHJlcXVlc3RfaWRzIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkXG47O1xuXG4oKiogVGhlIEpzX29mX29jYW1sIHR5cGUgRG9tX2h0bWwuZWxlbWVudCBkb2Vzbid0IGhhdmUgdGhlIGNvcnJlY3Qgb3B0aW9ucyBmb3JcbiAgICB0aGVpciBgZm9jdXNgIG1ldGhvZC4gQ2FzdCB0byB0aGlzIGluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLiAgKilcbnR5cGUgZm9jdXNhYmxlID1cbiAgPCBmb2N1cyA6IDwgcHJldmVudFNjcm9sbCA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wID4gSnMudCAtPiB1bml0IEpzLm1ldGggPlxuXG5sZXQgYXNfZm9jdXNhYmxlIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IGZvY3VzYWJsZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG4oKiogW1Zpc2liaWxpdHldIGVuY2Fwc3VsYXRlcyB0aGUgZGlydHlpbmcgYW5kIGNsZWFuaW5nIG9mIHRoZSB2aXNpYmlsaXR5IGZsYWdcblxuICAgIFRoZSB2aWV3cG9ydCBzdGFydHMgb3V0IGRpcnR5LiBXaGVuIHdlIGxvb2sgYXQgdGhlIERPTSB0byBjb21wdXRlIHdoYXQgaXMgdmlzaWJsZSBieVxuICAgIGNhbGxpbmcgW3VwZGF0ZV92aXNpYmlsaXR5XSwgdGhlIHZpZXdwb3J0IHRoZW4gYmVjb21lcyBjbGVhbi4gQW55IHRpbWUgdGhlIHVzZXJcbiAgICBzY3JvbGxzIG91ciBwYWdlIG9yIHJlc2l6ZXMgdGhlIHdpbmRvdywgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4uIElmIHdlIHVwZGF0ZVxuICAgIHRoZSBET00sIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluIGJlY2F1c2UgYSBET00gdXBkYXRlIGNvdWxkIGNhdXNlIGEgcmVmbG93LFxuICAgIG1vdmluZyB0aGUgZWxlbWVudHMgdGhhdCBhcmUgdmlzaWJsZS5cblxuICAgIFdlIGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBhcyBhIGZsYWcgaW5zdGVhZCBvZiByZXF1aXJpbmcgdGhlIHVzZXJzIHRvIHNlbmQgYW4gYWN0aW9uIG9uXG4gICAgc2Nyb2xsIGJlY2F1c2UgaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjb21wdXRlIHRoZSB2aXNpYmlsaXR5IG9uIHRoZSB2aXJ0dWFsLWRvbVxuICAgIHdoZW4gdGhlIHZpcnR1YWwtZG9tIGRvZXMgbm90IG1hdGNoIHRoZSBhY3R1YWwgZG9tIChhcyBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAgW2FwcGx5X2FjdGlvbnNdKS4gKilcbm1vZHVsZSBWaXNpYmlsaXR5IDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGVfYXNfZGlydHkgOiB1bml0IC0+IHRcbiAgdmFsIG1hcmtfY2xlYW4gOiB0IC0+IHVuaXRcbiAgdmFsIG1hcmtfZGlydHkgOiB0IC0+IHVuaXRcbiAgdmFsIGlzX2RpcnR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBtdXRhYmxlIHdoZW5fZGlydHkgOiB1bml0IEl2YXIudCB9XG5cbiAgbGV0IGNyZWF0ZV9hc19kaXJ0eSAoKSA9IHsgd2hlbl9kaXJ0eSA9IEl2YXIuY3JlYXRlX2Z1bGwgKCkgfVxuICBsZXQgbWFya19kaXJ0eSB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQud2hlbl9kaXJ0eSAoKVxuICBsZXQgaXNfZGlydHkgdCA9IEl2YXIuaXNfZnVsbCB0LndoZW5fZGlydHlcbiAgbGV0IG1hcmtfY2xlYW4gdCA9IGlmIGlzX2RpcnR5IHQgdGhlbiB0LndoZW5fZGlydHkgPC0gSXZhci5jcmVhdGUgKClcbmVuZFxuXG5tb2R1bGUgTG9nZ2luZ19maWx0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0cmluZ19ibGFuZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgQmxhbmcudCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbGxcbiAgICB8IE5vbmVcbiAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBvZiBTdHJpbmdfYmxhbmcudFxuICAgIHwgQ3VzdG9tX2ZpbHRlciBvZiAoU2V4cC50IC0+IGJvb2wpXG5lbmRcblxubW9kdWxlIERlYnVnX2ZsYWdzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICB2YWwgaW5pdF9hcHBcbiAgICA6ICBhcHBfaWQ6c3RyaW5nXG4gICAgLT4gZmlsdGVyX25hbWVzOlN0cmluZy5TZXQudFxuICAgIC0+IGRlYnVnOmJvb2xcbiAgICAtPiBzdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgbW9kdWxlIEFwcF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbHRlcl9uYW1lcyA6IFN0cmluZy5TZXQudFxuICAgICAgOyBsb2dnaW5nX2ZpbHRlciA6IExvZ2dpbmdfZmlsdGVyLnQgcmVmXG4gICAgICA7IHNob3VsZF9wcm9maWxlIDogYm9vbCByZWZcbiAgICAgIDsgc2hvdWxkX2RlYnVnIDogYm9vbCByZWZcbiAgICAgIH1cblxuICAgIGxldCBzZXRfbG9nZ2luZ19maWx0ZXIgdCB+bG9nZ2luZ19maWx0ZXIgPSB0LmxvZ2dpbmdfZmlsdGVyIDo9IGxvZ2dpbmdfZmlsdGVyXG4gICAgbGV0IHNldF9zaG91bGRfcHJvZmlsZSB0IH5zaG91bGRfcHJvZmlsZSA9IHQuc2hvdWxkX3Byb2ZpbGUgOj0gc2hvdWxkX3Byb2ZpbGVcbiAgICBsZXQgc2V0X3Nob3VsZF9kZWJ1ZyB0IH5zaG91bGRfZGVidWcgPSB0LnNob3VsZF9kZWJ1ZyA6PSBzaG91bGRfZGVidWdcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBnbG9iYWwgPSBvYmplY3RcbiAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQWxsIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydExvZ2dpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0N1c3RvbSA6XG4gICAgICAoKEpzLmpzX3N0cmluZyBKcy50IC0+IGJvb2wgSnMudCkgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RvcExvZ2dpbmcgOiAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnRQcm9maWxpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0b3BQcm9maWxpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0RGVidWdnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdG9wRGVidWdnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzYXZlSW5jcmVtZW50YWxHcmFwaCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG4gIGVuZFxuXG4gIGxldCBnbG9iYWwgOiBnbG9iYWwgSnMudCA9IEpzLlVuc2FmZS5nbG9iYWxcbiAgbGV0IGdsb2JhbF9pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuICBsZXQgYXBwX3N0YXRlcyA6IEFwcF9zdGF0ZS50IFN0cmluZy5UYWJsZS50ID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSAoKVxuXG4gIGxldCBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiXFxcIlwiIF4gc3RyIF4gXCJcXFwiXCIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgOztcblxuICBsZXQgbXVsdGlfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0cikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgaW5pdF9nbG9iYWwgfmFwcF9maWx0ZXJzICgpID1cbiAgICBsZXQgd2l0aF9hcHBfaWRfb3B0IHVwZGF0ZV9zdGF0ZSBhcHBfaWRfb3B0ID1cbiAgICAgIGxldCBhcHBfaWRfb3B0ID0gSnMuT3B0LnRvX29wdGlvbiBhcHBfaWRfb3B0IHw+IE9wdGlvbi5tYXAgfmY6SnMudG9fc3RyaW5nIGluXG4gICAgICBtYXRjaCBhcHBfaWRfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBIYXNodGJsLml0ZXIgYXBwX3N0YXRlcyB+Zjp1cGRhdGVfc3RhdGVcbiAgICAgIHwgU29tZSBhcHBfaWQgLT5cbiAgICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBhcHBfc3RhdGVzIGFwcF9pZCB3aXRoXG4gICAgICAgICB8IFNvbWUgc3RhdGUgLT4gdXBkYXRlX3N0YXRlIHN0YXRlXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBhcHAgd2l0aCBpZCBcXFwiJXNcXFwiLiBWYWxpZCBhcHAgaWRzIGFyZTogJXNcIlxuICAgICAgICAgICAgIGFwcF9pZFxuICAgICAgICAgICAgIChIYXNodGJsLmtleXMgYXBwX3N0YXRlcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIGxvZ2dpbmdfZmlsdGVyID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlciB+bG9nZ2luZ19maWx0ZXIpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9wcm9maWxlIHNob3VsZF9wcm9maWxlID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfcHJvZmlsZSB+c2hvdWxkX3Byb2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9kZWJ1ZyBzaG91bGRfZGVidWcgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9kZWJ1ZyB+c2hvdWxkX2RlYnVnKVxuICAgIGluXG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQWxsIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBBbGwpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ1xuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBibGFuZ19zdHIgLT5cbiAgICAgIGxldCBibGFuZ19zdHIgPSBKcy50b19zdHJpbmcgYmxhbmdfc3RyIGluXG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKGZ1biBhcHBfc3RhdGUgLT5cbiAgICAgICAgbGV0IGJsYW5nID0gQmxhbmcudF9vZl9zZXhwIFN0cmluZy50X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIGJsYW5nX3N0cikgaW5cbiAgICAgICAgbGV0IGludmFsaWRfbmFtZXMgPVxuICAgICAgICAgIEJsYW5nLmZvbGQgYmxhbmcgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGludmFsaWRfbmFtZXMgbmFtZSAtPlxuICAgICAgICAgICAgaWYgU2V0Lm1lbSBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIG5hbWVcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9uYW1lc1xuICAgICAgICAgICAgZWxzZSBTZXQuYWRkIGludmFsaWRfbmFtZXMgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU2V0LmlzX2VtcHR5IGludmFsaWRfbmFtZXNcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXJcbiAgICAgICAgICAgIGFwcF9zdGF0ZVxuICAgICAgICAgICAgfmxvZ2dpbmdfZmlsdGVyOihOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgbmFtZWQgZmlsdGVyKHMpOiAlcy4gVmFsaWQgbmFtZXMgYXJlOlxcbiVzXCJcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBpbnZhbGlkX25hbWVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KVxuICAgICAgICAgICAgKFNldC50b19saXN0IGFwcF9zdGF0ZS5maWx0ZXJfbmFtZXMgfD4gbXVsdGlfbGluZV9zdHJpbmdfbGlzdCkpKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdDdXN0b21cbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZmlsdGVyIC0+XG4gICAgICBsZXQgZmlsdGVyIGFjdGlvbl9zZXhwID1cbiAgICAgICAgYWN0aW9uX3NleHAgfD4gU2V4cC50b19zdHJpbmcgfD4gSnMuc3RyaW5nIHw+IGZpbHRlciB8PiBKcy50b19ib29sXG4gICAgICBpblxuICAgICAgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIChDdXN0b21fZmlsdGVyIGZpbHRlcikpO1xuICAgIGdsb2JhbCMjLnN0b3BMb2dnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBOb25lKTtcbiAgICBnbG9iYWwjIy5zdGFydFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgZmFsc2UpO1xuICAgIGdsb2JhbCMjLnN0YXJ0RGVidWdnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfZGVidWcgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zYXZlSW5jcmVtZW50YWxHcmFwaFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IGZpbGVuYW1lID0gXCJjdXJyZW50X2luY3JfZG9tX2RvdF9ncmFwaC5kb3RcIiBpblxuICAgICAgVWlfaW5jci5zYXZlX2RvdF90b19maWxlIGZpbGVuYW1lO1xuICAgICAgbGV0IGNvbnRlbnRzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmaWxlbmFtZSBpblxuICAgICAgVmRvbV9maWxlX2Rvd25sb2FkLmNyZWF0ZSB+ZmlsZW5hbWUgfm1pbWV0eXBlOlwicGxhaW4vdGV4dFwiIH5jb250ZW50c1xuICAgICAgfD4gVmRvbV9maWxlX2Rvd25sb2FkLnRyaWdnZXIpO1xuICAgIGxldCBncm91cCBzIH5mID1cbiAgICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBDb2xsYXBzZWQgKEpzLnN0cmluZyBzKTtcbiAgICAgIGYgKCk7XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kXG4gICAgaW5cbiAgICBsZXQgbG9nIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpIGluXG4gICAgZ3JvdXAgXCJJbmNyX2RvbSAvIEJvbnNhaSBDb25zb2xlXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgZ3JvdXAgXCJBY3Rpb24gTG9nZ2luZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xMb2dnaW5nIHByaW50cyBhY3Rpb24gaW5mbyB0byB0aGUgY29uc29sZS4gSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gVG8gc3RhcnQgbG9nZ2luZywgdHlwZSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbnN0YXJ0TG9nZ2luZ0FsbChbYXBwX2lkXSkgLSBsb2cgYWxsIGFjdGlvbnNcbnN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZSBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgcHJlLWRlZmluZWQgbmFtZWQgZmlsdGVyIFtmaWx0ZXJfbmFtZV1cbnN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZV9ibGFuZyBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgYmxhbmcgb2YgbmFtZWQgZmlsdGVycyBbZmlsdGVyX25hbWVfYmxhbmddXG5zdGFydExvZ2dpbmdDdXN0b20oZmlsdGVyIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBjdXN0b20gZnVuY3Rpb24gW2ZpbHRlcl0gZnJvbSBhIHN0cmluZyAodGhlIGFjdGlvbiBzZXhwKSB0byBhIGJvb2xcblRvIHN0b3AgbG9nZ2luZywgdHlwZTogc3RvcExvZ2dpbmcoW2FwcF9pZF0pfH0pO1xuICAgICAgZ3JvdXAgXCJBY3Rpb24gUHJvZmlsaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fFByb2ZpbGluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxuVG8gc3RhcnQgcHJvZmlsaW5nLCB0eXBlOiBzdGFydFByb2ZpbGluZyhbYXBwX2lkXSlcblRvIHN0b3AgcHJvZmlsaW5nLCB0eXBlOiBzdG9wUHJvZmlsaW5nKFthcHBfaWRdKXx9KTtcbiAgICAgIGdyb3VwIFwiRGVidWdnaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fERlYnVnZ2luZyBwcmludHMgdGltaW5nIGluZm8gdG8gdGhlIGNvbnNvbGUuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgYnkgdGhlIGFwcC5cblRvIHN0YXJ0IGRlYnVnZ2luZywgdHlwZTogc3RhcnREZWJ1Z2dpbmcoW2FwcF9pZF0pXG5UbyBzdG9wIGRlYnVnZ2luZywgdHlwZTogc3RvcERlYnVnZ2luZyhbYXBwX2lkXSlcblxuW2FwcF9pZF0gaXMgZXF1YWwgdG8gdGhlIGlkIG9mIHRoZSBlbGVtZW50IHRoYXQgdGhlIGluY3ItZG9tIGFwcCBpcyBib3VuZCB0by4gSWYgdGhlIHBhZ2Ugb25seSBoYXMgb25lIGFwcCBvciB5b3Ugd2FudCB0byBhcHBseSB0aGUgYWN0aW9uIHRvIGFsbCBhcHBzLCB5b3UgY2FuIHBhc3MgaW4gW251bGxdIChvciBmb3Igc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucywgb21pdCBpdCBhbHRvZ2V0aGVyKS58fSk7XG4gICAgICBsb2cgYXBwX2ZpbHRlcnMpXG4gIDs7XG5cbiAgbGV0IGluaXRfYXBwIH5hcHBfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3AgPVxuICAgIGxldCBhcHBfaW5pdF9tZXNzYWdlID1cbiAgICAgIHNwcmludGZcbiAgICAgICAge3xBdmFpbGFibGUgbG9nZ2luZyBmaWx0ZXJzIGZvciBcIiVzXCI6XG4lc3x9XG4gICAgICAgIGFwcF9pZFxuICAgICAgICAoU2V0LnRvX2xpc3QgZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpXG4gICAgaW5cbiAgICBpZiBub3QgIWdsb2JhbF9pc19pbml0aWFsaXplZFxuICAgIHRoZW4gKFxuICAgICAgaW5pdF9nbG9iYWwgfmFwcF9maWx0ZXJzOmFwcF9pbml0X21lc3NhZ2UgKCk7XG4gICAgICBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgOj0gdHJ1ZSlcbiAgICBlbHNlIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgYXBwX2luaXRfbWVzc2FnZSk7XG4gICAgbGV0IGxvZ2dpbmdfZmlsdGVyID0gcmVmIExvZ2dpbmdfZmlsdGVyLk5vbmUgaW5cbiAgICBsZXQgc2hvdWxkX3Byb2ZpbGUgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2hvdWxkX2RlYnVnID0gcmVmIGRlYnVnIGluXG4gICAgSGFzaHRibC5zZXRcbiAgICAgIGFwcF9zdGF0ZXNcbiAgICAgIH5rZXk6YXBwX2lkXG4gICAgICB+ZGF0YTp7IGZpbHRlcl9uYW1lczsgbG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfTtcbiAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPiBIYXNodGJsLnJlbW92ZSBhcHBfc3RhdGVzIGFwcF9pZCk7XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA9IChmdW4gKCkgLT4gIWxvZ2dpbmdfZmlsdGVyKVxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgPSAoZnVuICgpIC0+ICFzaG91bGRfcHJvZmlsZSlcbiAgICA7IHNob3VsZF9kZWJ1ZyA9IChmdW4gKCkgLT4gIXNob3VsZF9kZWJ1ZylcbiAgICB9XG4gIDs7XG5lbmRcblxuKCogQWRkcyB0aGUgbmVjZXNzYXJ5IGF0dHJpYnV0ZSB0byB0aGUgcm9vdCBub2RlIHNvIHRoYXQgaXQgY2FuIGludGVyY2VwdFxuICAga2V5Ym9hcmQgZXZlbnRzLlxuICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleCAqKVxubGV0IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCByb290ID1cbiAgbGV0IG9wZW4gVmRvbSBpblxuICBsZXQgc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCA9XG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQuYXR0cnMgfD4gQXR0ci5FeHBlcnQuY29udGFpbnNfbmFtZSBcImRpc2FibGVfdGFiX2luZGV4XCIgfD4gbm90XG4gIGluXG4gIG1hdGNoIChyb290IDogTm9kZS50KSB3aXRoXG4gIHwgRWxlbWVudCBlbGVtZW50IHdoZW4gc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCAtPlxuICAgIGxldCBhZGRfbmV3X2F0dHJzIGF0dHJzID1cbiAgICAgIFZkb20uQXR0ci4oc3R5bGUgKENzc19nZW4ub3V0bGluZSB+c3R5bGU6YE5vbmUgKCkpIEAgdGFiaW5kZXggMCBAIGF0dHJzKVxuICAgIGluXG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQubWFwX2F0dHJzIH5mOmFkZF9uZXdfYXR0cnMgfD4gTm9kZS5FbGVtZW50XG4gIHwgXyAtPiByb290XG47O1xuXG5sZXQgcmVjIGdldF90YWdfbmFtZSAobm9kZSA6IFZkb20uTm9kZS50KSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IEVsZW1lbnQgZSAtPiBTb21lIChWZG9tLk5vZGUuRWxlbWVudC50YWcgZSlcbiAgfCBMYXp5IHsgdDsgXyB9IC0+IGdldF90YWdfbmFtZSAoTGF6eS5mb3JjZSB0KVxuICB8IE5vbmUgfCBUZXh0IF8gfCBXaWRnZXQgXyAtPiBOb25lXG47O1xuXG5sZXQgc3RhcnRfYm9uc2FpXG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlByaXZhdGUuU19mb3JfYm9uc2FpXG4gICAgICAgIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWxcbiAgICAgICAgIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gICgqIFRoaXMgaXMgaWRlbXBvdGVudCBhbmQgc28gZmluZSB0byBkby4gKilcbiAgQXN5bmNfanMuaW5pdCAoKTtcbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0JWJpbmQgKCkgPSBBc3luY19qcy5kb2N1bWVudF9sb2FkZWQgKCkgaW5cbiAgICAgbGV0IG1vZGVsX3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWwgPSBJbmNyLlZhci53YXRjaCBtb2RlbF92IGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5ID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiBpblxuICAgICBsZXQgY3V0b2ZmID1cbiAgICAgICBJbmNyLkN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT5cbiAgICAgICAgIEFwcC5Nb2RlbC5jdXRvZmYgb2xkX3ZhbHVlIG5ld192YWx1ZSlcbiAgICAgaW5cbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsIGN1dG9mZjtcbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IGN1dG9mZjtcbiAgICAgbGV0IGFjdGlvbl9xdWV1ZSA9IERlcXVlLmNyZWF0ZSAoKSBpblxuICAgICBsZXQgbW9kdWxlIEV2ZW50ID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmUgKHN0cnVjdFxuICAgICAgICAgbW9kdWxlIEFjdGlvbiA9IEFwcC5BY3Rpb25cblxuICAgICAgICAgbGV0IGhhbmRsZSBhY3Rpb24gPSBEZXF1ZS5lbnF1ZXVlX2JhY2sgYWN0aW9uX3F1ZXVlIGFjdGlvblxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5LmNyZWF0ZV9hc19kaXJ0eSAoKSBpblxuICAgICBsZXQgdmlld3BvcnRfY2hhbmdlZCAoKSA9IFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5IGluXG4gICAgICgqIFRoaXMgcmVnaXN0ZXJzIHRoZSBbdmlld3BvcnRfY2hhbmdlZF0gaGFuZGxlciB3aXRoIFZpcnR1YWxfZG9tLiBJZiBldmVudCBoYW5kbGVyc1xuICAgICAgICB1c2UgdGhlIFtWZG9tLkVmZmVjdC5WaWV3cG9ydF9jaGFuZ2VkXSBldmVudCwgd2UgYXJlIG5vdGlmaWVkLiAqKVxuICAgICBsZXQgbW9kdWxlIF8gPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZV92aXNpYmlsaXR5IChzdHJ1Y3RcbiAgICAgICAgIGxldCBoYW5kbGUgPSB2aWV3cG9ydF9jaGFuZ2VkXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgZ2V0X3ZpZXcsIGdldF9hcHBseV9hY3Rpb24sIGdldF91cGRhdGVfdmlzaWJpbGl0eSwgZ2V0X29uX2Rpc3BsYXkgPVxuICAgICAgIGxldCBvYnMgPVxuICAgICAgICAgSW5jci5vYnNlcnZlXG4gICAgICAgICAgIChBcHAuY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6bW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgfmluamVjdDpFdmVudC5pbmplY3QpXG4gICAgICAgaW5cbiAgICAgICBsZXQgZmV0Y2ggKGYgOiBfIEFwcF9pbnRmLlByaXZhdGUuc25hcHNob3QgLT4gXykgKCkgPVxuICAgICAgICAgZiAoSW5jci5PYnNlcnZlci52YWx1ZV9leG4gb2JzKVxuICAgICAgIGluXG4gICAgICAgKCBmZXRjaCAoZnVuIHsgdmlldzsgXyB9IC0+IHZpZXcpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgYXBwbHlfYWN0aW9uOyBfIH0gLT4gYXBwbHlfYWN0aW9uKVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IHVwZGF0ZV92aXNpYmlsaXR5OyBfIH0gLT4gdXBkYXRlX3Zpc2liaWxpdHkpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgb25fZGlzcGxheTsgXyB9IC0+IG9uX2Rpc3BsYXkpIClcbiAgICAgaW5cbiAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgIGxldCBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPVxuICAgICAgIChcImFsbFwiLCBGbi5jb25zdCB0cnVlKSA6OiAoXCJub25lXCIsIEZuLmNvbnN0IGZhbHNlKSA6OiBuYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICAgICB8PiBTdHJpbmcuVGFibGUub2ZfYWxpc3RfZXhuXG4gICAgIGluXG4gICAgIGxldCB7IERlYnVnX2ZsYWdzLmxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH0gPVxuICAgICAgIGxldCBmaWx0ZXJfbmFtZXMgPSBIYXNodGJsLmtleXMgbmFtZWRfbG9nZ2luZ19maWx0ZXJzIHw+IFN0cmluZy5TZXQub2ZfbGlzdCBpblxuICAgICAgIERlYnVnX2ZsYWdzLmluaXRfYXBwIH5hcHBfaWQ6YmluZF90b19lbGVtZW50X3dpdGhfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3BcbiAgICAgaW5cbiAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICBsZXQgaHRtbF9kb20gPSBWZG9tLk5vZGUudG9fZG9tIGh0bWwgaW5cbiAgICAgbGV0IGVsZW0gPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9leG4gYmluZF90b19lbGVtZW50X3dpdGhfaWQgaW5cbiAgICAgbGV0IHBhcmVudCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXSAoSnMuT3B0LnRvX29wdGlvbiBlbGVtIyMucGFyZW50Tm9kZSkgaW5cbiAgICAgRG9tLnJlcGxhY2VDaGlsZCBwYXJlbnQgaHRtbF9kb20gZWxlbTtcbiAgICAgKCogd2UgbWFrZSBzdXJlIHRvIGNhbGwgW3ZpZXdwb3J0X2NoYW5nZWRdIHdoZW5ldmVyIHRoZSB3aW5kb3cgcmVzaXplcyBvciB0aGUgc2Nyb2xsXG4gICAgICAgIGNvbnRhaW5lciBpbiB3aGljaCBvdXIgSFRNTCBpcyBsb2NhdGVkIGlzIHNjcm9sbGVkLiAqKVxuICAgICBsZXQgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IGV2ZW50X25hbWUgd2hlcmUgPVxuICAgICAgIGlnbm9yZVxuICAgICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgICB3aGVyZVxuICAgICAgICAgICAgKERvbS5FdmVudC5tYWtlIGV2ZW50X25hbWUpXG4gICAgICAgICAgICAoRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICB2aWV3cG9ydF9jaGFuZ2VkICgpO1xuICAgICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgICAgSnMuX2ZhbHNlXG4gICAgICAgICAgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gICAgIGluXG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInNjcm9sbFwiIChKc19taXNjLmdldF9zY3JvbGxfY29udGFpbmVyIGh0bWxfZG9tKTtcbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwicmVzaXplXCIgRG9tX2h0bWwud2luZG93O1xuICAgICBsZXQlYmluZCBzdGF0ZSA9XG4gICAgICAgQXBwLm9uX3N0YXJ0dXBcbiAgICAgICAgIH5zY2hlZHVsZV9hY3Rpb246KGZ1biBhIC0+IFVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlIChFdmVudC5pbmplY3QgYSkpXG4gICAgICAgICAoSW5jci5WYXIudmFsdWUgbW9kZWxfdilcbiAgICAgaW5cbiAgICAgbGV0IHByZXZfaHRtbCA9IHJlZiBodG1sIGluXG4gICAgIGxldCBwcmV2X2VsdCA9IHJlZiBodG1sX2RvbSBpblxuICAgICBsZXQgcmVmb2N1c19yb290X2VsZW1lbnQgKCkgPVxuICAgICAgIGxldCBlbGVtZW50ID0gIXByZXZfZWx0IGluXG4gICAgICAgKCogSWYgdGhlIGVsZW1lbnQgdG8gZm9jdXMgaXMgYW4gZWxlbWVudCwgY2FzdCBpdCBpbnRvIHRoZVxuICAgICAgICAgIG1vcmUgcGVybWlzc2l2ZSBcImZvY3VzYWJsZVwiIHR5cGUgZGVmaW5lZCBhdCB0aGUgdG9wIG9mXG4gICAgICAgICAgdGhpcyBmaWxlLCBhbmQgdGhlbiBmb2N1cyB0aGF0LiAqKVxuICAgICAgIERvbV9odG1sLkNvZXJjZVRvLmVsZW1lbnQgZWxlbWVudFxuICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICB8PiBPcHRpb24ubWFwIH5mOmFzX2ZvY3VzYWJsZVxuICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4gZWxlbWVudCAtPlxuICAgICAgICAgZWxlbWVudCMjZm9jdXNcbiAgICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgIHZhbCBwcmV2ZW50U2Nyb2xsID0gSnMuX3RydWVcbiAgICAgICAgICAgZW5kKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0YXJ0IHMgPVxuICAgICAgIHRpbWVyX3N0YXJ0IHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0b3AgcyA9XG4gICAgICAgdGltZXJfc3RvcCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgICgqXG4gICAgICAgIFRha2UgYWN0aW9uIG9uIGFueSBibHVyIGV2ZW50LCByZWZvY3VzaW5nIHRvIHRoZSByb290IG5vZGUgaWYgdGhlIHJlbGF0ZWRUYXJnZXQgaXNcbiAgICAgICAgbnVsbCBvciB1bmRlZmluZWQsIHNpZ25pZnlpbmcgdGhhdCBmb2N1cyB3YXMgbG9zdCBhbmQgd291bGQgb3RoZXJ3aXNlIGJlIHJlc2V0IHRvXG4gICAgICAgIHRoZSBib2R5IG5vZGUuXG5cbiAgICAgICAgVGhlIEpzLl90cnVlIHBhcmFtZXRlciBwcm92aWRlZCB0byBEb20uYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgdXNlQ2FwdHVyZVxuICAgICAgICBwYXJhbWV0ZXIgZGVzY3JpYmVkIGhlcmU6XG4gICAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyXG4gICAgICopXG4gICAgIGlnbm9yZVxuICAgICBAQCBEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgIERvbV9odG1sLndpbmRvd1xuICAgICAgICAgIERvbV9odG1sLkV2ZW50LmJsdXJcbiAgICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAoKiBbSnMuVW5zYWZlLipdIGlzIGxpa2UgW09iai5tYWdpY10uIFdlIHNob3VsZCBiZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlXG4gICAgICAgICAgICAgICAgZXhwZWN0LiAqKVxuICAgICAgICAgICAgIGxldCBlXG4gICAgICAgICAgICAgICA6IDwgcmVsYXRlZFRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcCA+IEpzLnRcbiAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHJlbGF0ZWRfdGFyZ2V0ID0gZSMjLnJlbGF0ZWRUYXJnZXQgaW5cbiAgICAgICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IHJlbGF0ZWRfdGFyZ2V0KSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpO1xuICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICBKcy5fdHJ1ZTtcbiAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ICgpID1cbiAgICAgICBWaXNpYmlsaXR5Lm1hcmtfY2xlYW4gdmlzaWJpbGl0eTtcbiAgICAgICBsZXQgbmV3X21vZGVsID1cbiAgICAgICAgIChnZXRfdXBkYXRlX3Zpc2liaWxpdHkgKCkpXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWw7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCJcbiAgICAgaW5cbiAgICAgbGV0IG1heWJlX2xvZ19hY3Rpb24gPVxuICAgICAgIGxldCBzYWZlX2ZpbHRlciB+bmFtZSBmaWx0ZXIgYWN0aW9uID1cbiAgICAgICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gZmlsdGVyIGFjdGlvbikgd2l0aFxuICAgICAgICAgfCBPayBzaG91bGRfbG9nIC0+IHNob3VsZF9sb2dcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZiAhXCJFeGNlcHRpb24gcmFpc2VkIGJ5ICVzOiAle0Vycm9yI2h1bX1cIiBuYW1lIGVycjtcbiAgICAgICAgICAgZmFsc2VcbiAgICAgICBpblxuICAgICAgIGxldCBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgPVxuICAgICAgICAgQ29yZS5NZW1vLm9mX2NvbXBhcmFibGVcbiAgICAgICAgICAgKG1vZHVsZSBMb2dnaW5nX2ZpbHRlci5TdHJpbmdfYmxhbmcpXG4gICAgICAgICAgIChmdW4gYmxhbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IEhhc2h0YmwuZmluZF9leG4gbmFtZWRfbG9nZ2luZ19maWx0ZXJzIGluXG4gICAgICAgICAgICAgIHNhZmVfZmlsdGVyXG4gICAgICAgICAgICAgICAgfm5hbWU6KHNwcmludGYgIVwibmFtZWQgZmlsdGVyIGJsYW5nIFxcXCIle3NleHA6c3RyaW5nIEJsYW5nLnR9XFxcIlwiIGJsYW5nKVxuICAgICAgICAgICAgICAgIChtYXRjaCBibGFuZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQmFzZSBuYW1lIC0+IGZpbHRlciBuYW1lXG4gICAgICAgICAgICAgICAgIHwgXyAtPiBmdW4gYWN0aW9uIC0+IEJsYW5nLmV2YWwgYmxhbmcgKGZ1biBuYW1lIC0+IGZpbHRlciBuYW1lIGFjdGlvbikpKVxuICAgICAgIGluXG4gICAgICAgZnVuIGFjdGlvbiAtPlxuICAgICAgICAgbGV0IHNob3VsZF9sb2dfYWN0aW9uID1cbiAgICAgICAgICAgbWF0Y2ggbG9nZ2luZ19maWx0ZXIgKCkgd2l0aFxuICAgICAgICAgICB8IEFsbCAtPiB0cnVlXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBibGFuZyAtPiBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgYmxhbmcgYWN0aW9uXG4gICAgICAgICAgIHwgQ3VzdG9tX2ZpbHRlciBmaWx0ZXIgLT5cbiAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgfm5hbWU6XCJjdXN0b20gZmlsdGVyXCJcbiAgICAgICAgICAgICAgIChmdW4gYWN0aW9uIC0+IGZpbHRlciAoQXBwLkFjdGlvbi5zZXhwX29mX3QgYWN0aW9uKSlcbiAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHNob3VsZF9sb2dfYWN0aW9uXG4gICAgICAgICB0aGVuIEFzeW5jX2pzLmxvZ19zX2FzX3N0cmluZyBbJW1lc3NhZ2UgXCJBY3Rpb25cIiAoYWN0aW9uIDogQXBwLkFjdGlvbi50KV1cbiAgICAgaW5cbiAgICAgbGV0IGFwcGx5X2FjdGlvbiBhY3Rpb24gPVxuICAgICAgIG1heWJlX2xvZ19hY3Rpb24gYWN0aW9uO1xuICAgICAgIGlmIEFwcC5hY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiBhY3Rpb25cbiAgICAgICB0aGVuIChcbiAgICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplLWZvci1hY3Rpb25cIjtcbiAgICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCIpXG4gICAgICAgZWxzZSBpZiBzaG91bGRfZGVidWcgKClcbiAgICAgICB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcImFjdGlvbiBhcHBsaWVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIik7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X2FwcGx5X2FjdGlvbiAoKSlcbiAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlXG4gICAgICAgICAgIChJbmNyLlZhci5sYXRlc3RfdmFsdWUgbW9kZWxfdilcbiAgICAgICAgICAgYWN0aW9uXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWxcbiAgICAgaW5cbiAgICAgbGV0IHJlYyBhcHBseV9hY3Rpb25zICgpID1cbiAgICAgICBtYXRjaCBEZXF1ZS5kZXF1ZXVlX2Zyb250IGFjdGlvbl9xdWV1ZSB3aXRoXG4gICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgfCBTb21lIGFjdGlvbiAtPlxuICAgICAgICAgYXBwbHlfYWN0aW9uIGFjdGlvbjtcbiAgICAgICAgIGFwcGx5X2FjdGlvbnMgKClcbiAgICAgaW5cbiAgICAgbGV0IHBlcmZvcm1fdXBkYXRlICgpID1cbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgICgqIFRoZSBjbG9jayBpcyBzZXQgb25seSBvbmNlIHBlciBjYWxsIHRvIHBlcmZvcm1fdXBkYXRlLCBzbyB0aGF0IGFsbCBhY3Rpb25zIHRoYXRcbiAgICAgICAgICBvY2N1ciBiZWZvcmUgZWFjaCBkaXNwbGF5IHVwZGF0ZSBvY2N1ciBcImF0IHRoZSBzYW1lIHRpbWUuXCIgKilcbiAgICAgICBsZXQgbm93ID1cbiAgICAgICAgIGxldCBkYXRlID0gbmV3JWpzIEpzLmRhdGVfbm93IGluXG4gICAgICAgICBUaW1lX25zLlNwYW4ub2ZfbXMgZGF0ZSMjZ2V0VGltZSB8PiBUaW1lX25zLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgICBpblxuICAgICAgIEluY3IuQ2xvY2suYWR2YW5jZV9jbG9jayBJbmNyLmNsb2NrIH50b186bm93O1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInRvdGFsXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIGlmIFZpc2liaWxpdHkuaXNfZGlydHkgdmlzaWJpbGl0eSB0aGVuIHVwZGF0ZV92aXNpYmlsaXR5ICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwiYXBwbHkgYWN0aW9uc1wiO1xuICAgICAgIGFwcGx5X2FjdGlvbnMgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgICAgbGV0IGh0bWwgPSBvdmVycmlkZV9yb290X2VsZW1lbnQgaHRtbCBpblxuICAgICAgIHRpbWVyX3N0YXJ0IFwiZGlmZlwiO1xuICAgICAgIGxldCBwYXRjaCA9IFZkb20uTm9kZS5QYXRjaC5jcmVhdGUgfnByZXZpb3VzOiFwcmV2X2h0bWwgfmN1cnJlbnQ6aHRtbCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJkaWZmXCI7XG4gICAgICAgaWYgbm90IChWZG9tLk5vZGUuUGF0Y2guaXNfZW1wdHkgcGF0Y2gpIHRoZW4gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHk7XG4gICAgICAgdGltZXJfc3RhcnQgXCJwYXRjaFwiO1xuICAgICAgIGxldCBlbHQgPSBWZG9tLk5vZGUuUGF0Y2guYXBwbHkgcGF0Y2ggIXByZXZfZWx0IGluXG4gICAgICAgdGltZXJfc3RvcCBcInBhdGNoXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgKGdldF9vbl9kaXNwbGF5ICgpKSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGU7XG4gICAgICAgdGltZXJfc3RvcCBcIm9uX2Rpc3BsYXlcIjtcbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiAoSW5jci5WYXIudmFsdWUgbW9kZWxfdik7XG4gICAgICAgbGV0IG9sZF90YWdfbmFtZSA9IGdldF90YWdfbmFtZSAhcHJldl9odG1sIGluXG4gICAgICAgbGV0IG5ld190YWdfbmFtZSA9IGdldF90YWdfbmFtZSBodG1sIGluXG4gICAgICAgbGV0IHRhZ3NfdGhlX3NhbWUgPSBPcHRpb24uZXF1YWwgU3RyaW5nLmVxdWFsIG9sZF90YWdfbmFtZSBuZXdfdGFnX25hbWUgaW5cbiAgICAgICBwcmV2X2h0bWwgOj0gaHRtbDtcbiAgICAgICBwcmV2X2VsdCA6PSBlbHQ7XG4gICAgICAgdGltZXJfc3RvcCBcInRvdGFsXCI7XG4gICAgICAgaWYgc2hvdWxkX2RlYnVnICgpIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIFwiLS0tLS0tLVwiKTtcbiAgICAgICAoKiBDaGFuZ2luZyB0aGUgdGFnIG5hbWUgY2F1c2VzIGZvY3VzIHRvIGJlIGxvc3QuICBSZWZvY3VzIGluIHRoYXQgY2FzZS4gKilcbiAgICAgICBpZiBub3QgdGFnc190aGVfc2FtZSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgIGluXG4gICAgICgqIFdlIHVzZSBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIHNvIHRoYXQgYnJvd3NlciB0ZWxscyB1cyB3aGVyZSBpdCdzIHRpbWUgdG9cbiAgICAgICAgcmVmcmVzaCB0aGUgVUkuIEFsbCB0aGUgYWN0aW9ucyB3aWxsIGJlIHByb2Nlc3NlZCBhbmQgdGhlIGNoYW5nZXMgcHJvcGFnYXRlZFxuICAgICAgICB0byB0aGUgRE9NIGluIG9uZSBmcmFtZS4gKilcbiAgICAgbGV0IHJlYyBjYWxsYmFjayAoKSA9XG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgICAgdGhlbiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgcGVyZm9ybV91cGRhdGUgKCk7XG4gICAgICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaylcbiAgICAgaW5cbiAgICAgKCogV2Ugd2FudCB0aGUgcm9vdCBlbGVtZW50IHRvIHN0YXJ0IG91dCBmb2N1c2VkLCBzbyBwZXJmb3JtIGFuIGluaXRpYWxcbiAgICAgICAgdXBkYXRlL3JlbmRlciwgdGhlbiBpbW1lZGlhdGVseSBmb2N1cyB0aGUgcm9vdCAodW5sZXNzIGEgbm9uLWJvZHkgZWxlbWVudCBhbHJlYWR5XG4gICAgICAgIGhhcyBmb2N1cykuICBUaGlzIGZvY3VzaW5nIGNhbid0IGhhcHBlbiBpbnNpZGUgb2YgdGhlIGBjYWxsYmFja2AgYmVjYXVzZSB0aGVuIGl0XG4gICAgICAgIHdvdWxkIHJlZm9jdXMgcm9vdCBldmVyeSBmcmFtZS4gICopXG4gICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAobWF0Y2ggSnMuT3B0LnRvX29wdGlvbiBEb21faHRtbC5kb2N1bWVudCMjLmFjdGl2ZUVsZW1lbnQgd2l0aFxuICAgICAgfCBTb21lIGVsIC0+IGlmIEpzLk9wdC50ZXN0IChEb21faHRtbC5Db2VyY2VUby5ib2R5IGVsKSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgICB8IE5vbmUgLT4gcmVmb2N1c19yb290X2VsZW1lbnQgKCkpO1xuICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaztcbiAgICAgRGVmZXJyZWQubmV2ZXIgKCkpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3RhcnRfYm9uc2FpID0gc3RhcnRfYm9uc2FpXG5lbmRcblxubGV0IHN0YXJ0XG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlMgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbCBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICBzdGFydF9ib25zYWlcbiAgICB+ZGVidWdcbiAgICB+c3RvcFxuICAgIH5uYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICB+aW5pdGlhbF9tb2RlbFxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBpbmNsdWRlIEFwcFxuXG4gICAgICBsZXQgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gXyA9IHRydWVcblxuICAgICAgbGV0IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsIH5pbmplY3QgPVxuICAgICAgICBsZXQgb3BlbiBJbmNyLkxldF9zeW50YXggaW5cbiAgICAgICAgbGV0JW1hcCBjb21wb25lbnQgPSBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0IGluXG4gICAgICAgIGxldCB2aWV3ID0gQ29tcG9uZW50LnZpZXcgY29tcG9uZW50IGluXG4gICAgICAgIGxldCBhcHBseV9hY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2V2ZW50IF9tb2RlbCBhY3Rpb24gPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQuYXBwbHlfYWN0aW9uIGNvbXBvbmVudCBhY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgX21vZGVsIH5zY2hlZHVsZV9ldmVudCA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC51cGRhdGVfdmlzaWJpbGl0eSBjb21wb25lbnQgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgb25fZGlzcGxheSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQub25fZGlzcGxheSBjb21wb25lbnQgc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICB7IEFwcF9pbnRmLlByaXZhdGUudmlldzsgYXBwbHlfYWN0aW9uOyB1cGRhdGVfdmlzaWJpbGl0eTsgb25fZGlzcGxheSB9XG4gICAgICA7O1xuICAgIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gVmlydHVhbF9kb20uVmRvbVxuaW5jbHVkZSBWZG9tX2lucHV0X3dpZGdldHNfaW50ZlxuXG5tb2R1bGUgTWVyZ2VfYmVoYXZpb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE1lcmdlXG4gICAgfCBMZWdhY3lfZG9udF9tZXJnZVxuZW5kXG5cbm1vZHVsZSBEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB0KVxuICAgIHRoZW4gZmFpbHdpdGhmIFwiQ2Fubm90IHJlcHJlc2VudCBub24tZmluaXRlIGZsb2F0IGFzIGRlY2ltYWw6ICVmXCIgdCAoKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHQgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGludmFyaWFudCB0O1xuICAgIHNwcmludGYgXCIlLjEyZ1wiIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBJbml0aWFsXG4gICAgKCogVGhpcyBpcyB1c2VkIHRvIGF2b2lkIG1hcmtpbmcgYXMgaW52YWxpZCBhIGZpZWxkIHRoYXQgaGFzbid0IGV2ZXIgYmVlblxuICAgICAgIHRvdWNoZWQgYnkgdGhlIHVzZXIsIHRvIGltcHJvdmUgVVguICopXG4gICAgfCBWYWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgIHwgSW52YWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nXG4gICAgICAgIDsgbGFzdF92YWxpZCA6ICdhIG9wdGlvblxuICAgICAgICA7IGVycm9yIDogc3RyaW5nXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICB0eXBlICdhIHVwZGF0ZSA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgbGlmdCAodHlwZSBhKSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBhIHRcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgSW5pdGlhbCAtPiBcIlwiXG4gICAgICAgIHwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgPSBfIH0gLT4gaW5wdXRcbiAgICAgICAgfCBWYWxpZCB7IGlucHV0OyB2YWx1ZSB9IC0+XG4gICAgICAgICAgKG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIGlucHV0IC0+IGlucHV0XG4gICAgICAgICAgIHwgTm9uZSAtPiBNLnRvX3N0cmluZyB2YWx1ZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBWYWxpZCB7IGlucHV0ID0gU29tZSBzOyB2YWx1ZSA9IE0ub2Zfc3RyaW5nIHMgfSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IEludmFsaWQgeyBpbnB1dCA9IHM7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciA9IEV4bi50b19zdHJpbmcgZXhuIH1cbiAgICAgIDs7XG4gICAgZW5kIDogU3RyaW5nYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA9IGEgdClcbiAgOztcblxuICBsZXQgaW5pdGlhbF9lbXB0eSA9IEluaXRpYWxcbiAgbGV0IHJldHVybiB2YWx1ZSA9IFZhbGlkIHsgaW5wdXQgPSBOb25lOyB2YWx1ZSB9XG5cbiAgbGV0IGdldF9jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgXyB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfSAtPiBsYXN0X3ZhbGlkXG4gICAgfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgfCBWYWxpZCBfIC0+IE5vbmVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+IFNvbWUgZXJyb3JcbiAgOztcblxuICBsZXQgaXNfaW52YWxpZCA9IGZ1bmN0aW9uXG4gICAgfCBJbnZhbGlkIF8gLT4gdHJ1ZVxuICAgIHwgVmFsaWQgXyB8IEluaXRpYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfaW5pdGlhbF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgdXBkYXRlIG9sZCBuZXdfID1cbiAgICBtYXRjaCBvbGQsIG5ld18gd2l0aFxuICAgIHwgSW5pdGlhbCwgXyAtPiBuZXdfXG4gICAgfCBfLCBWYWxpZCBfIC0+IG5ld19cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSA9IG9sZCB9LCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBTb21lIG9sZDsgZXJyb3IgfVxuICAgIHwgKCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfVxuICAgICAgLCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciB9ICkgLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZDsgZXJyb3IgfVxuICAgIHwgSW52YWxpZCBfLCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gU29tZSBfOyBlcnJvciA9IF8gfSAtPiBuZXdfXG4gICAgfCBfLCBJbml0aWFsIC0+IG9sZFxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9pbnZhbGlkIHZhbGlkYXRlZCBhdHRycyA9XG4gIGlmIFZhbGlkYXRlZC5pc19pbnZhbGlkIHZhbGlkYXRlZFxuICB0aGVuIEF0dHIuY3JlYXRlIFwiYXJpYS1pbnZhbGlkXCIgXCJ0cnVlXCIgOjogYXR0cnNcbiAgZWxzZSBhdHRyc1xuOztcblxubW9kdWxlIFRpbWVfY29tcGF0ID0gc3RydWN0XG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFRpbWVfbnMuT2ZkYXkudFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nXG5cbiAgICAoKiBUaGUgYnJvd3NlciBleHBlY3RzIGEgSEg6bW0gZm9ybWF0IHdpdGggb3B0aW9uYWwgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIjtcbiAgICAgICBbVGltZV9ucy5PZmRheS50b19zdHJpbmddIHByb3ZpZGVzIHByZWNpc2lvbiBpbiBuYW5vc2Vjb25kcywgd2hpY2ggaXMgdG9vIG11Y2guICopXG4gICAgbGV0IHRvX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkudG9fbWlsbGlzZWNvbmRfc3RyaW5nXG4gIGVuZFxuXG4gIGxldCB6b25lZCB6b25lIDogKG1vZHVsZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBUaW1lX25zLnQpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVGltZV9ucy50XG5cbiAgICAgICgqIEZvcm1hdCBmcm9tIHRoZSBicm93c2VyOiB5eXl5LU1NLWRkVGhoOm1tICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgcGFydHMgPSBTdHJpbmcuc3BsaXRfb25fY2hhcnMgcyB+b246WyAnVCc7ICc6JyBdIGluXG4gICAgICAgIGxldCBkYXRlID0gTGlzdC5udGhfZXhuIHBhcnRzIDAgfD4gRGF0ZS5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IGhyID0gTGlzdC5udGhfZXhuIHBhcnRzIDEgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgbWluID0gTGlzdC5udGhfZXhuIHBhcnRzIDIgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBUaW1lX25zLk9mZGF5LmNyZWF0ZSB+aHIgfm1pbiAoKSBpblxuICAgICAgICBUaW1lX25zLm9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IHMgPSBUaW1lX25zLnRvX3N0cmluZ19pc284NjAxX2Jhc2ljIH56b25lIHQgaW5cbiAgICAgICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0IGEgeXl5eS1NTS1kZFRoaDptbSBmb3JtYXQgYW5kIGl0IGFsbG93c1xuICAgICAgICAgICB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiLlxuXG4gICAgICAgICAgIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIGZvcm1hdDogMjAxOS0wMS0zMFQwMTowMDowMC4wMDAwMDAwMDArMDE6MDBcblxuICAgICAgICAgICBkZXNpcmVkIGZvcm1hdCBhZnRlciBjdXR0aW5nOiAgIDIwMTktMDEtMzBUMDE6MDA6MDBcbiAgICAgICAgKilcbiAgICAgICAgU3RyaW5nLmxzcGxpdDJfZXhuIH5vbjonLicgcyB8PiBUdXBsZTIuZ2V0MVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCBhdHRycyA9IGlmIGRpc2FibGVkIHRoZW4gQXR0ci5kaXNhYmxlZCA6OiBhdHRycyBlbHNlIGF0dHJzXG5sZXQgYWRkX2F0dHJzIGF0dHJzJyBhdHRycyA9IGF0dHJzIEAgYXR0cnMnIHw+IEF0dHJzLm1lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc1xuXG5sZXQgbWVyZ2UgPSBmdW5jdGlvblxuICB8IE1lcmdlX2JlaGF2aW9yLk1lcmdlIC0+IEF0dHIubWFueVxuICB8IExlZ2FjeV9kb250X21lcmdlIC0+IEF0dHIubWFueV93aXRob3V0X21lcmdlXG47O1xuXG5sZXQgc3RydWN0dXJhbF9saXN0XG4gICAgICA/KG9yaWVudGF0aW9uID0gYFZlcnRpY2FsKVxuICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgYXR0cnNcbiAgICAgIGNoaWxkcmVuXG4gID1cbiAgbGV0IGxheW91dF9zdHlsZSA9XG4gICAgbWF0Y2ggb3JpZW50YXRpb24gd2l0aFxuICAgIHwgYFZlcnRpY2FsIC0+IENzc19nZW4uKGRpc3BsYXkgYEJsb2NrKVxuICAgIHwgYEhvcml6b250YWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgSW5saW5lX2Jsb2NrKVxuICBpblxuICBOb2RlLnVsXG4gICAgfmF0dHJzOlxuICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgKFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImxpc3Qtc3R5bGVcIiB+dmFsdWU6XCJub25lXCIgQD4gbWFyZ2luX2xlZnQgKGBQeCAwKSlcbiAgICAgICAgICAgXVxuICAgICAgICAgICB8PiBhZGRfYXR0cnMgYXR0cnMpXG4gICAgICBdXG4gICAgKExpc3QubWFwIGNoaWxkcmVuIH5mOihmdW4gY2hpbGQgLT5cbiAgICAgICBOb2RlLmxpIH5hdHRyczpbIEF0dHIuc3R5bGUgbGF5b3V0X3N0eWxlIF0gWyBjaGlsZCBdKSlcbjs7XG5cbm1vZHVsZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmUgPSBKc19vZl9vY2FtbC5Kcy5VbnNhZmVcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG5cbiAgbGV0IGlzX2FjdGl2ZSBlbGVtZW50ID1cbiAgICBsZXQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQgPSBVbnNhZmUuZ2V0IGRvY3VtZW50IChKcy5zdHJpbmcgXCJhY3RpdmVFbGVtZW50XCIpIGluXG4gICAgcGh5c19lcXVhbCBlbGVtZW50IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50XG4gIDs7XG5cbiAgbGV0IHZhbHVlX3Byb3BlcnR5ID0gSnMuc3RyaW5nIFwidmFsdWVcIlxuICBsZXQgZ2V0X3ZhbHVlIGVsZW1lbnQgOiAnYSBKcy50ID0gVW5zYWZlLmdldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5XG4gIGxldCBzZXRfdmFsdWUgZWxlbWVudCB2YWx1ZSA9IFVuc2FmZS5zZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eSB2YWx1ZVxuXG4gIGxldCBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiA9XG4gICAgKCogVGhpcyBldmVudCBoYW5kbGVyIG5vcm1hbGl6ZXMgdGhlIHZhbHVlIG9uIHRoZSBpbnB1dCBlbGVtZW50IG9uIHRoZSBbY2hhbmdlXSBldmVudC5cbiAgICAgICBGb3IgYSB0ZXh0IGVudHJ5LCB0aGlzIG1lYW5zIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlciwgYW5kIHdoZW4gdGhlIHVzZXIgYmx1cnNcbiAgICAgICB0aGUgZWxlbWVudC4gV2h5IGRvbid0IHdlIHNpbXBseSBbdG9fc3RyaW5nXSB0aGUgdmFsdWUgaW4gdGhlIG1vZGVsPyBCZWNhdXNlIGZvclxuICAgICAgIHNvbWUgaW5wdXQgZWxlbWVudHMsIHlvdSBjYW4gaGF2ZSBhIGNoYW5nZSBldmVudCB0aGF0IGZpcmVzIGFmdGVyIHRoZSB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgYnV0IGJlZm9yZSBbSW5jcl9kb21dIGNhbiB1cGRhdGUgdGhlIG1vZGVsLiBGb3IgZXhhbXBsZSwgdGhpcyBoYXBwZW5zIHdoZW4geW91XG4gICAgICAgcHJlc3MgdGhlIHVwIGFycm93IG9uIGEgbnVtYmVyIGlucHV0LiBUaGlzIGxlYWRzIHRvIGEgYnVnIHdoZXJlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgICAgICBtb2RlbCBzd2FwcyBiYWNrIGFuZCBmb3J0aCB3aXRoIHRoZSB2YWx1ZSBpbiB0aGUgZWxlbWVudC4gKilcbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgXyA9XG4gICAgICBsZXQgdmFsdWUgPSBKcy50b19zdHJpbmcgKGdldF92YWx1ZSBlbGVtZW50KSBpblxuICAgICAgT3B0aW9uLml0ZXIgKGYgdmFsdWUpIH5mOihmdW4gbm9ybWFsaXplZCAtPlxuICAgICAgICBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIG5vcm1hbGl6ZWQpKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgPSBEb20uaGFuZGxlciBjaGFuZ2VfaGFuZGxlciBpblxuICAgIGFkZEV2ZW50TGlzdGVuZXIgZWxlbWVudCBFdmVudC5jaGFuZ2UgY2hhbmdlX2hhbmRsZXIgSnMuX2ZhbHNlXG4gIDs7XG5cbiAgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBldmVudF9pZCA6IGV2ZW50X2xpc3RlbmVyX2lkIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyB2YWx1ZSA6IHN0cmluZ1xuICAgICAgICA7IGYgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgICB9XG5cbiAgICAgIGxldCBzZXhwX29mX3QgeyB2YWx1ZTsgXyB9ID0gU2V4cC5BdG9tIHZhbHVlXG4gICAgICBsZXQgY29tYmluZSBfbGVmdCByaWdodCA9IHJpZ2h0XG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCB7IElucHV0LnZhbHVlOyBmIH0gZWxlbWVudCA9XG4gICAgICBpZiBub3QgKGlzX2FjdGl2ZSBlbGVtZW50KSB0aGVuIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgdmFsdWUpO1xuICAgICAgbGV0IGV2ZW50X2lkID0gaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgaW5cbiAgICAgIHsgU3RhdGUuZXZlbnRfaWQgfVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG5cbiAgICBsZXQgZGVzdHJveSBfaW5wdXQgeyBTdGF0ZS5ldmVudF9pZCB9IF9lbGVtZW50ID0gcmVtb3ZlRXZlbnRMaXN0ZW5lciBldmVudF9pZFxuICAgIFtAQG9jYW1sLndhcm5pbmdcbiAgICAgICBcIi02OFwiXVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCBzdGF0ZSBlbGVtZW50ID1cbiAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICBsZXQgeyBTdGF0ZS5ldmVudF9pZCB9ID0gaW5pdCBuZXdfaW5wdXQgZWxlbWVudCBpblxuICAgICAgc3RhdGUuU3RhdGUuZXZlbnRfaWQgPC0gZXZlbnRfaWRcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIEF0dHIuSG9va3MuTWFrZSAoTSlcblxuICAoKiBbY3JlYXRlIHZhbHVlIH5mXSB3aWxsIHNldCB0aGUgXCJ2YWx1ZVwiIHByb3BlcnR5IHRvIFt2YWx1ZV0gaWYgdGhlIGVsZW1lbnQgaXMgbm90XG4gICAgIGZvY3VzZWQgYW5kIG9uIGVhY2ggY2hhbmdlLCBydW4gdGhlIGN1cnJlbnQgdmFsdWUgdGhyb3VnaCBbZl0gdG8gcmUtc2V0IGl0LiBBZ2FpbixcbiAgICAgdGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlIGVsZW1lbnQgaXMgbm90IGZvY3VzZWQuIElmIFtmXSByZXR1cm5zIFtOb25lXSwgbm8gY2hhbmdlXG4gICAgIHRha2VzIHBsYWNlLiAqKVxuICBsZXQgY3JlYXRlIHZhbHVlIH5mID0gQXR0ci5jcmVhdGVfaG9vayBcInZhbHVlOm5vcm1hbGl6ZWRcIiAoY3JlYXRlIHsgdmFsdWU7IGYgfSlcbmVuZFxuXG5tb2R1bGUgRHJvcGRvd24gPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGV4dHJhX29wdGlvbl9hdHRycyA9IEZuLmNvbnN0IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIE5vZGUuc2VsZWN0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci5jbGFzc18gXCJ3aWRnZXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBfIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgIG9uX2NoYW5nZSAoSW50Lm9mX3N0cmluZyB2YWx1ZSB8PiBMaXN0Lm50aF9leG4gdmFsdWVzKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoTGlzdC5tYXBpIHZhbHVlcyB+ZjooZnVuIGluZGV4IHZhbHVlIC0+XG4gICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgKFsgQXR0ci52YWx1ZSAoSW50LnRvX3N0cmluZyBpbmRleClcbiAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIChlcXVhbCB2YWx1ZSBzZWxlY3RlZClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBAIGV4dHJhX29wdGlvbl9hdHRycyB2YWx1ZSlcbiAgICAgICAgICAgWyBOb2RlLnRleHQgKHRvX3N0cmluZyB2YWx1ZSkgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuXG4gIGxldCBvZl92YWx1ZXNfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCB2YWx1ZXMgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpwbGFjZWhvbGRlciB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGxldCBleHRyYV9vcHRpb25fYXR0cnMgPVxuICAgICAgT3B0aW9uLm1hcCBleHRyYV9vcHRpb25fYXR0cnMgfmY6KGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgdmFsdWUgLT4gZiB2YWx1ZSlcbiAgICBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bV9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCBNLmFsbCB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OnBsYWNlaG9sZGVyIH5mOk0udG9fc3RyaW5nIGluXG4gICAgbGV0IGV4dHJhX29wdGlvbl9hdHRycyA9XG4gICAgICBPcHRpb24ubWFwIGV4dHJhX29wdGlvbl9hdHRycyB+ZjooZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSB2YWx1ZSAtPiBmIHZhbHVlKVxuICAgIGluXG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOlslZXF1YWw6IE0udCBvcHRpb25dXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZWxlY3RhYmxlX3N0eWxlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOYXRpdmVcbiAgICB8IEJ1dHRvbl9saWtlIG9mIHsgZXh0cmFfYXR0cnMgOiBjaGVja2VkOmJvb2wgLT4gQXR0ci50IGxpc3QgfVxuXG4gIGxldCBiYXJlYm9uZXNfYnV0dG9uX2xpa2UgPVxuICAgIEJ1dHRvbl9saWtlXG4gICAgICB7IGV4dHJhX2F0dHJzID1cbiAgICAgICAgICAoZnVuIH5jaGVja2VkIC0+XG4gICAgICAgICAgICAgaWYgY2hlY2tlZFxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgYm9yZGVyIH53aWR0aDooYFB4IDEpIH5jb2xvcjooYEhleCBcIiNEMEQwRDBcIikgfnN0eWxlOmBTb2xpZCAoKVxuICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiM0MDQwNDBcIilcbiAgICAgICAgICAgICAgICAgICAgIEA+IGNvbG9yIChgSGV4IFwiI0Y3RjdGN1wiKSlcbiAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjRUZFRkVGXCIpKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgIH1cbiAgOztcblxuICBsZXQgaGlkZV9uYXRpdmVfaW5wdXRzID1cbiAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwiYXBwZWFyYW5jZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiB1bmlmb3JtX21hcmdpbiAoYFB4IDApKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2JveCA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfmxhYmVsXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmxhYmVsXG4gICAgICB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIGV4dHJhX2F0dHJzIF1cbiAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJjaGVja2JveFwiXG4gICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSlcbiAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBpc19jaGVja2VkXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAoKVxuICAgICAgOyBOb2RlLnRleHQgbGFiZWxcbiAgICAgIF1cbiAgOztcblxuICBsZXQgc2ltcGxlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+bGFiZWxcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmRpdlxuICAgICAgfmF0dHJzOlsgQXR0ci5jbGFzc18gXCJjaGVja2JveC1jb250YWluZXJcIiBdXG4gICAgICBbIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSB+bWVyZ2VfYmVoYXZpb3IgKCkgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2xpc3QgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhzdHlsZSA9IFNlbGVjdGFibGVfc3R5bGUuTmF0aXZlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgP2xheW91dFxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgID1cbiAgICBsZXQgaW5wdXRfYXR0cnMsIGxhYmVsX2F0dHJzID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTmF0aXZlIC0+IFtdLCBmdW4gfmNoZWNrZWQ6XyAtPiBbXVxuICAgICAgfCBCdXR0b25fbGlrZSB7IGV4dHJhX2F0dHJzIH0gLT5cbiAgICAgICAgWyBBdHRyLnN0eWxlIFNlbGVjdGFibGVfc3R5bGUuaGlkZV9uYXRpdmVfaW5wdXRzIF0sIGV4dHJhX2F0dHJzXG4gICAgaW5cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgP29yaWVudGF0aW9uOmxheW91dFxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtY2hlY2tsaXN0XCI7IFwiY2hlY2tib3gtY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAgICAoZXh0cmFfYXR0cnMgQCBsYWJlbF9hdHRycyB+Y2hlY2tlZDooaXNfY2hlY2tlZCBpdGVtKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSBpdGVtKVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgKGlzX2NoZWNrZWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/c3R5bGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/bGF5b3V0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRGlzcGxheSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9zdHlsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9sYXlvdXRcbiAgICAgIHZhbHVlc1xuICAgICAgfmlzX2NoZWNrZWRcbiAgICAgIH5vbl90b2dnbGVcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP3N0eWxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgTS5hbGxcbiAgICAgIH5pc19jaGVja2VkXG4gICAgICB+b25fdG9nZ2xlXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGlfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vX2FjdGlvblxuICAgICAgfCBDbGVhcl9hbGxcbiAgICAgIHwgU2VsZWN0X2FsbFxuICBlbmRcblxuICBsZXQgaW1wbFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgPyhyZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yLk5vX2FjdGlvbilcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgPVxuICAgIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gICAgbGV0IHNpemUgPSBPcHRpb24udmFsdWUgc2l6ZSB+ZGVmYXVsdDooTGlzdC5sZW5ndGggdmFsdWVzKSBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICA7IEF0dHIuY3JlYXRlIFwic2l6ZVwiIChJbnQudG9fc3RyaW5nIHNpemUpXG4gICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gZXZ0IChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0LmJpbmQgZXZ0IyMudGFyZ2V0IERvbV9odG1sLkNvZXJjZVRvLnNlbGVjdClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB0YXJnZXQgLT4gdGFyZ2V0XG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICBcIk11bHRpX3NlbGVjdCBbb25fY2hhbmdlXSBldmVudCBmaXJlZCB3aXRoIGEgbWlzc2luZyB0YXJnZXQgb3IgdGFyZ2V0IFxcXG4gICAgICAgICAgICAgICAgIHRoYXQgd2FzIG5vdCBhIHNlbGVjdCBlbGVtZW50LlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgY29sbGVjdGlvbl90b19saXN0IGNvbGxlY3Rpb24gPVxuICAgICAgICAgICAgTGlzdC5pbml0IGNvbGxlY3Rpb24jIy5sZW5ndGggfmY6KGZ1biBpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5nZXQgKGNvbGxlY3Rpb24jI2l0ZW0gaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSBjb2xsZWN0aW9uX3RvX2xpc3QgdGFyZ2V0IyMub3B0aW9ucyBpblxuICAgICAgICAgIGxldCBzZWxlY3RlZF92YWx1ZXMgPVxuICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnppcF9leG4gdmFsdWVzIG9wdGlvbnMpIH5mOihmdW4gKHZhbHVlLCBvcHRpb24pIC0+XG4gICAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChKcy50b19ib29sIG9wdGlvbiMjLnNlbGVjdGVkKSB2YWx1ZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSBzZWxlY3RlZF92YWx1ZXMpKVxuICAgICAgXVxuICAgICAgQCBleHRyYV9hdHRyc1xuICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgaW5cbiAgICBsZXQgb3B0aW9ucyA9XG4gICAgICBMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgaXNfc2VsZWN0ZWQgPSBTZXQubWVtIHNlbGVjdGVkIHZhbHVlIGluXG4gICAgICAgIE5vZGUub3B0aW9uXG4gICAgICAgICAgKCogW0F0dHIuYm9vbF9wcm9wZXJ0eV0ga2VlcHMgdGhlIHN0YXRlIG9mIHRoZSBvcHRpb24gaW4gc3luYyBieSBzZXR0aW5nIHRoZSBKU1xuICAgICAgICAgICAgIHByb3BlcnR5LiBbQXR0ci5zZWxlY3RlZF0gbW9kaWZpZXMgdGhlIERPTSBhdHRyaWJ1dGUgc28gdGhhdCBzZWxlY3RlZCBvcHRpb25zXG4gICAgICAgICAgICAgY2FuIGJlIHN0eWxlZCB3aXRoIENTUy4gW0F0dHIuc2VsZWN0ZWRdIGFsb25lIGRvZXMgbm90IHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgICAgICAgICBwcm9wZXJseSBpZiB0aGUgbW9kZWwgY2hhbmdlcywgc28gYm90aCBhcmUgbmVlZGVkLiAqKVxuICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgIChbIFNvbWUgKEF0dHIuYm9vbF9wcm9wZXJ0eSBcInNlbGVjdGVkXCIgaXNfc2VsZWN0ZWQpXG4gICAgICAgICAgICAgOyBTb21lXG4gICAgICAgICAgICAgICAgIChBdHRyLm9uX2NsaWNrIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB3YXNfcmVwZWF0ZWRfY2xpY2sgPVxuICAgICAgICAgICAgICAgICAgICAgIChub3QgKEpzLnRvX2Jvb2wgZXZ0IyMuY3RybEtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgJiYgU2V0LmVxdWFsIHNlbGVjdGVkIChTZXQuc2luZ2xldG9uIChtb2R1bGUgTSkgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHdhc19yZXBlYXRlZF9jbGljaywgcmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGZhbHNlLCBfIHwgdHJ1ZSwgTm9fYWN0aW9uIC0+IEVmZmVjdC5JZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBDbGVhcl9hbGwgLT4gb25fY2hhbmdlIChTZXQuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBTZWxlY3RfYWxsIC0+IG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSB2YWx1ZXMpKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXJfb3B0KVxuICAgICAgICAgIFsgTm9kZS50ZXh0IChNLnRvX3N0cmluZyB2YWx1ZSkgXSlcbiAgICBpblxuICAgIE5vZGUuc2VsZWN0IH5hdHRyczpbIChtZXJnZSBtZXJnZV9iZWhhdmlvcikgYXR0cnMgXSBvcHRpb25zXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3NpemVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLkxlZ2FjeV9kb250X21lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB2YWx1ZXNcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bV9zZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIE0uYWxsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICBtb2R1bGUgQ2FsbF9vbl9pbnB1dF93aGVuID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgVGV4dF9jaGFuZ2VkXG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3RcblxuICAgIGxldCBsaXN0ZW5lciA9IGZ1bmN0aW9uXG4gICAgICB8IFRleHRfY2hhbmdlZCAtPiBBdHRyLm9uX2lucHV0XG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3QgLT4gQXR0ci5vbl9jaGFuZ2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbm9ybWFsaXplIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUykgcyA9XG4gICAgbWF0Y2ggTS50b19zdHJpbmcgKE0ub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBfIC0+IFNvbWUgXCJcIlxuICAgIHwgdiAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgbWF5YmVfb25fcmV0dXJuIG9uX3JldHVybiBhdHRycyA9XG4gICAgbWF0Y2ggb25fcmV0dXJuIHdpdGhcbiAgICB8IE5vbmUgLT4gYXR0cnNcbiAgICB8IFNvbWUgb25fcmV0dXJuIC0+XG4gICAgICBBdHRyLm9uX2tleWRvd24gKGZ1biBldiAtPlxuICAgICAgICBpZiBldiMjLmtleUNvZGUgPSAxMyB0aGVuIG9uX3JldHVybiAoKSBlbHNlIEVmZmVjdC5JZ25vcmUpXG4gICAgICA6OiBhdHRyc1xuICA7O1xuXG4gIGxldCBpbnB1dF9ub2RlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICBhdHRyc1xuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKGF0dHJzXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzXG4gICAgICAgICAgICAgICAgICBbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXI7IEF0dHIuY3JlYXRlIFwic3BlbGxjaGVja1wiIFwiZmFsc2VcIiBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCByYXdcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgWyBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgdmFsdWU7IEF0dHIub25faW5wdXQgKGZ1biBfZXYgLT4gb25faW5wdXQpIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KHNob3VsZF9ub3JtYWxpemUgPSB0cnVlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH50eXBlX2F0dHJzXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIGxldCB2YWx1ZSA9IE9wdGlvbi52YWx1ZV9tYXAgfmY6TS50b19zdHJpbmcgdmFsdWUgfmRlZmF1bHQ6XCJcIiBpblxuICAgICAgaWYgc2hvdWxkX25vcm1hbGl6ZVxuICAgICAgdGhlbiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+Zjoobm9ybWFsaXplIChtb2R1bGUgTSkpXG4gICAgICBlbHNlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihjb25zdCBOb25lKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBvbl9pbnB1dCBOb25lXG4gICAgICAgIHwgcyAtPiBvbl9pbnB1dCAoT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTS5vZl9zdHJpbmcgcykpKVxuICAgIDsgdmFsdWVcbiAgICBdXG4gICAgfD4gYWRkX2F0dHJzIHR5cGVfYXR0cnNcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0ZXh0XCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/b25fcmV0dXJuXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgKG1vZHVsZSBWKSA9IFZhbGlkYXRlZC5saWZ0IChtb2R1bGUgTSkgaW5cbiAgICBsZXQgdmFsdWVfYXR0ciA9XG4gICAgICBtYXRjaCAodmFsdWUgOiBWLnQpIHdpdGhcbiAgICAgIHwgSW5pdGlhbCAtPiBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgXCJcIlxuICAgICAgfCBfIC0+IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIChWLnRvX3N0cmluZyB2YWx1ZSkgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIFYpKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT5cbiAgICAgICAgb25faW5wdXQgKFYub2Zfc3RyaW5nIHMpKVxuICAgIDsgdmFsdWVfYXR0clxuICAgIDsgQXR0ci50eXBlXyBcInRleHRcIlxuICAgIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gbWF5YmVfaW52YWxpZCB2YWx1ZVxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHRleHRcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgb2Zfc3RyaW5nYWJsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHBhc3N3b3JkXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFN0cmluZylcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInBhc3N3b3JkXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBudW1iZXJcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcIm51bWJlclwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgcmFuZ2VcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInJhbmdlXCI7IEF0dHIuY3JlYXRlX2Zsb2F0IFwic3RlcFwiIHN0ZXAgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0aW1lXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFRpbWVfY29tcGF0Lk9mZGF5KVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRpbWVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IGRhdGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgRGF0ZSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRlXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBkYXRldGltZV9sb2NhbFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID91dGNfb2Zmc2V0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgaG91cnMgPVxuICAgICAgKCogSW4gdGVzdHMsIHdlIHVzZSBVVEMgYXMgdGhlIGxvY2FsIHRpbWV6b25lIChpLmUuIG9mZnNldCAwKS4gVGhpcyBwcmV2ZW50cyBjaGFuZ2VzXG4gICAgICAgICBiZXR3ZWVuIHRlc3Qgb3V0cHV0IGFyb3VuZCBkYXlsaWdodCBzYXZpbmdzIHRpbWUsIGFuZCBpZiBbdXRjX29mZnNldF0gaXNuJ3RcbiAgICAgICAgIHN1cHBsaWVkLCB0aGVuIGNhbGxlcnMgc2hvdWxkIGJlIGluZGlmZmVyZW50IHRvIHdoYXQgb2Zmc2V0IGdldHMgdXNlZCBoZXJlLiAqKVxuICAgICAgbWF0Y2ggQ29yZS5hbV9ydW5uaW5nX3Rlc3QgfHwgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiAwXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICB1dGNfb2Zmc2V0XG4gICAgICAgICAgKCogZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgdGltZSB6b25lIGRpZmZlcmVuY2UsIGluIG1pbnV0ZXMsIGZyb20gY3VycmVudFxuICAgICAgICAgICAgIGxvY2FsZSB0byBVVEMuIFV0YyBvZmZzZXQgaXMgdGhlIGRpZmZlcmVuY2UgZnJvbSBVVEMgdG8gY3VycmVudCBsb2NhbGUgd2hpY2hcbiAgICAgICAgICAgICBpcyB3aGVyZSB0aGUgbWludXMgY29tZXMgZnJvbS5cblxuICAgICAgICAgICAgIFRoZSBtaW51dGVzIGhhdmUgdG8gYmUgY29udmVydGVkIHRvIGhvdXJzIHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdFxuICAgICAgICAgICAgIFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IGV4cGVjdHMgZm9yIHRoZSB1dGNfb2Zmc2V0LiAqKVxuICAgICAgICAgIH5kZWZhdWx0OigobmV3JWpzIEpzX29mX29jYW1sLkpzLmRhdGVfbm93KSMjZ2V0VGltZXpvbmVPZmZzZXQgLyAtNjApXG4gICAgICAgICAgfmY6KGZ1biB1dGNfb2Zmc2V0IC0+IFRpbWVfbnMuU3Bhbi50b19ociB1dGNfb2Zmc2V0IHw+IEZsb2F0LnRvX2ludClcbiAgICBpblxuICAgIGxldCAobW9kdWxlIFpvbmVkX3RpbWUpID0gVGltZV9jb21wYXQuem9uZWQgKFRpbWVfZmxvYXQuWm9uZS5vZl91dGNfb2Zmc2V0IH5ob3VycykgaW5cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBab25lZF90aW1lKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZXRpbWUtbG9jYWxcIiBdXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0ZXh0X2FyZWFcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLnRleHRhcmVhXG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci5wbGFjZWhvbGRlciBwbGFjZWhvbGRlclxuICAgICAgICAgICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICBvbl9pbnB1dCB2YWx1ZSlcbiAgICAgICAgICAgICA7IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOk9wdGlvbi5yZXR1cm5cbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICBbXVxuICA7O1xuXG4gICgqIEFjY29yZGluZyB0b1xuICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQvY29sb3IjVmFsdWUgdGhlXG4gICAgIHZhbHVlIG11c3QgYmUgc2V0IGluIGhleCBmb3JtYXQgYW5kIHdpbGwgYWx3YXlzIGNvbWVzIGJhY2sgaW4gaGV4IGZvcm1hdC4gKilcbiAgbGV0IGNvbG9yX3BpY2tlclxuICAgICAgICA/KGV4dHJhX2F0dHIgPSBBdHRyLmVtcHR5KVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IChgSGV4IHZhbHVlXykgPSB2YWx1ZSBpblxuICAgIFsgQXR0ci4odHlwZV8gXCJjb2xvclwiIEAgdmFsdWVfcHJvcCB2YWx1ZV8gQCBleHRyYV9hdHRyKVxuICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+IG9uX2lucHV0IChgSGV4IHMpKVxuICAgIF1cbiAgICB8PiBpbnB1dF9ub2RlID9kaXNhYmxlZCB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCB3aXRoX3ZhbGlkYXRpb25cbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHRleHRcbiAgICAgICAgfnZhbGlkYXRpb25cbiAgICAgICAgfm9uX2NsaWNrXG4gICAgPVxuICAgIG1hdGNoIHZhbGlkYXRpb24gd2l0aFxuICAgIHwgT2sgcmVzdWx0IC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgIChbIEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgcmVzdWx0KTsgQXR0ci50eXBlXyBcImJ1dHRvblwiIF1cbiAgICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgICBdXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICAgIHwgRXJyb3IgcmVhc29uIC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgIChbIEF0dHIuZGlzYWJsZWRcbiAgICAgICAgICAgICAgIDsgQXR0ci50eXBlXyBcImJ1dHRvblwiXG4gICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcFwiIHJlYXNvblxuICAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXAtcG9zaXRpb25cIiBcInRvcFwiXG4gICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgICAgXVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcblxuICBsZXQgc2ltcGxlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHRleHRcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgPVxuICAgIE5vZGUuYnV0dG9uXG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImJ1dHRvblwiOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrICgpKSBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmFkaW9fYnV0dG9ucyA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhzdHlsZSA6IFNlbGVjdGFibGVfc3R5bGUudCA9IE5hdGl2ZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b3JpZW50YXRpb25cbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgbGV0IGlucHV0X2F0dHJzLCBsYWJlbF9hdHRycyA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5hdGl2ZSAtPiBbXSwgZnVuIH5jaGVja2VkOl8gLT4gW11cbiAgICAgIHwgQnV0dG9uX2xpa2UgeyBleHRyYV9hdHRycyB9IC0+XG4gICAgICAgIFsgQXR0ci5zdHlsZSBTZWxlY3RhYmxlX3N0eWxlLmhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgIH5vcmllbnRhdGlvblxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtcmFkaW8tYnV0dG9uc1wiOyBcInJhZGlvLWJ1dHRvbi1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgbGV0IGNoZWNrZWQgPSBPcHRpb24udmFsdWVfbWFwIHNlbGVjdGVkIH5kZWZhdWx0OmZhbHNlIH5mOihlcXVhbCBpdGVtKSBpblxuICAgICAgICAgTm9kZS5sYWJlbFxuICAgICAgICAgICB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIChsYWJlbF9hdHRycyB+Y2hlY2tlZCkgXVxuICAgICAgICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5uYW1lIG5hbWVcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5jbGFzc2VzIFsgXCJyYWRpby1idXR0b25cIiBdXG4gICAgICAgICAgICAgICAgICA7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgaXRlbSlcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIGNoZWNrZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBWZXJ0aWNhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB2YWx1ZXNcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzX2hvcml6b250YWxcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgSG9yaXpvbnRhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB2YWx1ZXNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnNcblxuICBsZXQgYWNjZXB0X2F0dHJzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQXR0ci5lbXB0eVxuICAgIHwgU29tZSBhY2NlcHRzIC0+XG4gICAgICBBdHRyLmNyZWF0ZVxuICAgICAgICBcImFjY2VwdFwiXG4gICAgICAgIChMaXN0Lm1hcCBhY2NlcHRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IGBFeHRlbnNpb24gcyAtPiBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIi5cIiB0aGVuIHMgZWxzZSBcIi5cIiBeIHNcbiAgICAgICAgICAgfCBgTWltZXR5cGUgcyAtPiBzKVxuICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiKVxuICA7O1xuXG4gIGxldCBsaXN0XG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgP2FjY2VwdFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJtdWx0aXBsZVwiIFwiXCJcbiAgICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGZpbGVzID1cbiAgICAgICAgICAgICAgICAgICBMaXN0LmluaXQgZmlsZV9saXN0IyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgZmlsZV9saXN0IyNpdGVtIGlcbiAgICAgICAgICAgICAgICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9leG4gfm1lc3NhZ2U6WyVzdHJpbmcgXCJjb3VsZG4ndCBnZXQgZmlsZSAle2kjSW50fVwiXSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZXMpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcblxuICBsZXQgc2luZ2xlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgP2FjY2VwdFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgIDsgQXR0ci5vbl9maWxlX2lucHV0IChmdW4gX2V2IGZpbGVfbGlzdCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGZpbGVfbGlzdCMjaXRlbSAwIHw+IEpzLk9wdC50b19vcHRpb24gaW5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IChDKSBKZWFuLUNocmlzdG9waGUgRmlsbGlhdHJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgICAgICopXG4oKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICopXG4oKiAgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyAgICAgICAgICAgICopXG4oKiAgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICopXG4oKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICopXG4oKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqcyBNYXBzIG9mIGludGVnZXJzIGltcGxlbWVudGVkIGFzIFBhdHJpY2lhIHRyZWVzLCBmb2xsb3dpbmcgQ2hyaXNcbiAgICBPa2FzYWtpIGFuZCBBbmRyZXcgR2lsbCdzIHBhcGVyIHtcXGVtIEZhc3QgTWVyZ2VhYmxlIEludGVnZXIgTWFwc31cbiAgICAoe1xcdHRcXHNtYWxsIGh0dHA6Ly93d3cuY3MuY29sdW1iaWEuZWR1L1xcfnt9Y2RvL3BhcGVycy5odG1sXFwjbWw5OG1hcHN9KS5cbiAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgbW9kdWxlIFtQdHNldF0gd2hpY2ggaXMgYWxzbyBiYXNlZCBvbiB0aGVcbiAgICBzYW1lIGRhdGEtc3RydWN0dXJlLiAqKVxuXG50eXBlIGtleSA9IGludFxuXG50eXBlICdhIHQgPVxuICB8IEVtcHR5XG4gIHwgTGVhZiBvZiBpbnQgKiAnYVxuICB8IEJyYW5jaCBvZiBpbnQgKiBpbnQgKiAnYSB0ICogJ2EgdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgdCA9IHQgPSBFbXB0eVxuXG5sZXQgemVyb19iaXQgayBtID0gKGsgbGFuZCBtKSA9PSAwXG5cbmxldCByZWMgbWVtIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaixfKSAtPiBrID09IGpcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IG1lbSBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IHJlYyBmaW5kIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgayA9PSBqIHRoZW4geCBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gZmluZCBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IGZpbmRfb3B0IGsgbSA9IHRyeSBTb21lIChmaW5kIGsgbSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG4oKiBOb3RlOiBmaW5kX2ZpcnN0L2xhc3QgaGF2ZSB0byBsb29rIGluIGJvdGggc3VidHJlZXNcbiAgIGFzIHRoZXNlIGFyZSBsaXR0bGUtZW5kaWFuIFBhdHJpY2lhIHRyZWVzICopXG5sZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA8IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPCByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPiByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrID4gcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBsb3dlc3RfYml0IHggPSB4IGxhbmQgKC14KVxuXG5sZXQgYnJhbmNoaW5nX2JpdCBwMCBwMSA9IGxvd2VzdF9iaXQgKHAwIGx4b3IgcDEpXG5cbmxldCBtYXNrIHAgbSA9IHAgbGFuZCAobS0xKVxuXG5sZXQgam9pbiAocDAsdDAscDEsdDEpID1cbiAgbGV0IG0gPSBicmFuY2hpbmdfYml0IHAwIHAxIGluXG4gIGlmIHplcm9fYml0IHAwIG0gdGhlblxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MCwgdDEpXG4gIGVsc2VcbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDEsIHQwKVxuXG5sZXQgbWF0Y2hfcHJlZml4IGsgcCBtID0gKG1hc2sgayBtKSA9PSBwXG5cbmxldCBhZGQgayB4IHQgPVxuICBsZXQgcmVjIGlucyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrLHgpXG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT5cbiAgICAgIGlmIGogPT0gayB0aGVuIExlYWYgKGsseCkgZWxzZSBqb2luIChrLCBMZWFmIChrLHgpLCBqLCB0KVxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgQnJhbmNoIChwLCBtLCBpbnMgdDAsIHQxKVxuXHRlbHNlXG5cdCAgQnJhbmNoIChwLCBtLCB0MCwgaW5zIHQxKVxuICAgICAgZWxzZVxuXHRqb2luIChrLCBMZWFmIChrLHgpLCBwLCB0KVxuICBpblxuICBpbnMgdFxuXG5sZXQgc2luZ2xldG9uIGsgdiA9XG4gIGFkZCBrIHYgZW1wdHlcblxubGV0IGJyYW5jaCA9IGZ1bmN0aW9uXG4gIHwgKF8sXyxFbXB0eSx0KSAtPiB0XG4gIHwgKF8sXyx0LEVtcHR5KSAtPiB0XG4gIHwgKHAsbSx0MCx0MSkgICAtPiBCcmFuY2ggKHAsbSx0MCx0MSlcblxubGV0IHJlbW92ZSBrIHQgPVxuICBsZXQgcmVjIHJtdiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+IGlmIGsgPT0gaiB0aGVuIEVtcHR5IGVsc2UgdFxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCBybXYgdDAsIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCB0MCwgcm12IHQxKVxuICAgICAgZWxzZVxuXHR0XG4gIGluXG4gIHJtdiB0XG5cbmxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBjYXJkaW5hbCB0MCArIGNhcmRpbmFsIHQxXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHhcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gaXRlciBmIHQwOyBpdGVyIGYgdDFcblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXAgZiB0MCwgbWFwIGYgdDEpXG5cbmxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiBrIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwaSBmIHQwLCBtYXBpIGYgdDEpXG5cbmxldCByZWMgZm9sZCBmIHMgYWNjdSA9IG1hdGNoIHMgd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4IGFjY3VcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9sZCBmIHQwIChmb2xkIGYgdDEgYWNjdSlcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIChrLCB2KSAgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9yX2FsbCBwIHQwICYmIGZvcl9hbGwgcCB0MVxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGssIHYpIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGV4aXN0cyBwIHQwIHx8IGV4aXN0cyBwIHQxXG5cbmxldCByZWMgZmlsdGVyIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIGFzIHQgLT4gaWYgcHIgayB2IHRoZW4gdCBlbHNlIEVtcHR5XG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyIHByIHQwLCBmaWx0ZXIgcHIgdDEpXG5cbmxldCByZWMgZmlsdGVyX21hcCBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSAtPiAobWF0Y2ggcHIgayB2IHdpdGggU29tZSB2JyAtPiBMZWFmIChrLCB2JykgfCBOb25lIC0+IEVtcHR5KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlcl9tYXAgcHIgdDAsIGZpbHRlcl9tYXAgcHIgdDEpXG5cbmxldCBwYXJ0aXRpb24gcCBzID1cbiAgbGV0IHJlYyBwYXJ0ICh0LGYgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIHAgayB2IHRoZW4gKGFkZCBrIHYgdCwgZikgZWxzZSAodCwgYWRkIGsgdiBmKVxuICAgIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IHBhcnQgKHBhcnQgYWNjIHQwKSB0MVxuICBpblxuICBwYXJ0IChFbXB0eSwgRW1wdHkpIHNcblxubGV0IHJlYyBjaG9vc2UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZSB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgcmVjIGNob29zZV9vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZV9vcHQgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHNwbGl0IHggbSA9XG4gIGxldCBjb2xsIGsgdiAobCwgYiwgcikgPVxuICAgIGlmIGsgPCB4IHRoZW4gYWRkIGsgdiBsLCBiLCByXG4gICAgZWxzZSBpZiBrID4geCB0aGVuIGwsIGIsIGFkZCBrIHYgclxuICAgIGVsc2UgbCwgU29tZSB2LCByXG4gIGluXG4gIGZvbGQgY29sbCBtIChlbXB0eSwgTm9uZSwgZW1wdHkpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1pbl9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1pbl9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIChtaW5fYmluZGluZ19vcHQgcywgbWluX2JpbmRpbmdfb3B0IHQpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1heF9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1heF9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIG1heF9iaW5kaW5nX29wdCBzLCBtYXhfYmluZGluZ19vcHQgdCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgYmluZGluZ3MgbSA9XG4gIGZvbGQgKGZ1biBrIHYgYWNjIC0+IChrLCB2KSA6OiBhY2MpIG0gW11cblxuKCogd2Ugb3JkZXIgY29uc3RydWN0b3JzIGFzIEVtcHR5IDwgTGVhZiA8IEJyYW5jaCAqKVxubGV0IGNvbXBhcmUgY21wIHQxIHQyID1cbiAgbGV0IHJlYyBjb21wYXJlX2F1eCB0MSB0MiA9IG1hdGNoIHQxLHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiAwXG4gICAgfCBFbXB0eSwgXyAtPiAtMVxuICAgIHwgXywgRW1wdHkgLT4gMVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrMSBrMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNtcCB4MSB4MlxuICAgIHwgTGVhZiBfLCBCcmFuY2ggXyAtPiAtMVxuICAgIHwgQnJhbmNoIF8sIExlYWYgXyAtPiAxXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBwMSBwMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG5cdGxldCBjID0gY29tcGFyZSBtMSBtMiBpblxuXHRpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYXV4IGwxIGwyIGluXG4gICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCByMSByMlxuICBpblxuICBjb21wYXJlX2F1eCB0MSB0MlxuXG5sZXQgZXF1YWwgZXEgdDEgdDIgPVxuICBsZXQgcmVjIGVxdWFsX2F1eCB0MSB0MiA9IG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT4gazEgPSBrMiAmJiBlcSB4MSB4MlxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBwMSA9IHAyICYmIG0xID0gbTIgJiYgZXF1YWxfYXV4IGwxIGwyICYmIGVxdWFsX2F1eCByMSByMlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBlcXVhbF9hdXggdDEgdDJcblxubGV0IG1lcmdlIGYgbTEgbTIgPVxuICBsZXQgYWRkIG0gayA9IGZ1bmN0aW9uIE5vbmUgLT4gbSB8IFNvbWUgdiAtPiBhZGQgayB2IG0gaW5cbiAgKCogZmlyc3QgY29uc2lkZXIgYWxsIGJpbmRpbmdzIGluIG0xICopXG4gIGxldCBtID0gZm9sZFxuICAgICAgKGZ1biBrMSB2MSBtIC0+IGFkZCBtIGsxIChmIGsxIChTb21lIHYxKSAoZmluZF9vcHQgazEgbTIpKSkgbTEgZW1wdHkgaW5cbiAgKCogdGhlbiBiaW5kaW5ncyBpbiBtMiB0aGF0IGFyZSBub3QgaW4gbTEgKilcbiAgZm9sZCAoZnVuIGsyIHYyIG0gLT4gaWYgbWVtIGsyIG0xIHRoZW4gbSBlbHNlIGFkZCBtIGsyIChmIGsyIE5vbmUgKFNvbWUgdjIpKSlcbiAgICBtMiBtXG5cbmxldCB1cGRhdGUgeCBmIG0gPVxuICBtYXRjaCBmIChmaW5kX29wdCB4IG0pIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB4IG1cbiAgfCBTb21lIHogLT4gYWRkIHggeiBtXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPSBuID49IDAgJiYgKG0gPCAwIHx8IG4gPCBtKVxuXG5sZXQgcmVjIHVuaW9uIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5LCB0ICAtPiB0XG4gIHwgdCwgRW1wdHkgIC0+IHRcbiAgfCBMZWFmIChrLHYxKSwgdCAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MSB8IFNvbWUgdjIgLT4gZiBrIHYxIHYyKSB0XG4gIHwgdCwgTGVhZiAoayx2MikgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjIgfCBTb21lIHYxIC0+IGYgayB2MSB2MikgdFxuICB8IChCcmFuY2ggKHAsbSxzMCxzMSkgYXMgcyksIChCcmFuY2ggKHEsbix0MCx0MSkgYXMgdCkgLT5cbiAgICAgIGlmIG0gPT0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBUaGUgdHJlZXMgaGF2ZSB0aGUgc2FtZSBwcmVmaXguIE1lcmdlIHRoZSBzdWJ0cmVlcy4gKilcblx0YnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0MCksIHVuaW9uIGYgKHMxLHQxKSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFtxXSBjb250YWlucyBbcF0uIE1lcmdlIFt0XSB3aXRoIGEgc3VidHJlZSBvZiBbc10uICopXG5cdGlmIHplcm9fYml0IHEgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0KSwgczEpXG4gICAgICAgIGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHMwLCB1bmlvbiBmIChzMSx0KSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbiBtICYmIG1hdGNoX3ByZWZpeCBwIHEgbiB0aGVuXG5cdCgqIFtwXSBjb250YWlucyBbcV0uIE1lcmdlIFtzXSB3aXRoIGEgc3VidHJlZSBvZiBbdF0uICopXG5cdGlmIHplcm9fYml0IHAgbiB0aGVuXG5cdCAgYnJhbmNoIChxLCBuLCB1bmlvbiBmIChzLHQwKSwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHEsIG4sIHQwLCB1bmlvbiBmIChzLHQxKSlcbiAgICAgIGVsc2Vcblx0KCogVGhlIHByZWZpeGVzIGRpc2FncmVlLiAqKVxuXHRqb2luIChwLCBzLCBxLCB0KVxuXG5sZXQgdW5pb24gZiBzIHQgPSB1bmlvbiBmIChzLHQpXG5cbmxldCB0b19zZXEgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrLCB2KSAtPiBmdW4gKCkgLT4gU2VxLkNvbnMoKGssdiksIHMpXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IHRvX3NlcV9mcm9tIGsgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrZXksIHYpIC0+IGlmIGtleSA+PSBrIHRoZW4gZnVuICgpIC0+IFNlcS5Db25zKChrZXksdiksIHMpIGVsc2Ugc1xuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCBhZGRfc2VxIHMgbSA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIG0gc1xuXG5sZXQgb2Zfc2VxIHMgPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBzXG4iLCJsZXQgdXRmOF9vZl9jb2RlIGJ1ZiB4ID1cbiAgbGV0IGFkZCA9IEJ1ZmZlci5hZGRfY2hhciBpblxuXG4gICgqIFN0cmFpZ2h0IDw9IGRvZXNuJ3Qgd29yayB3aXRoIHNpZ25lZCAzMS1iaXQgaW50cyAqKVxuICBsZXQgbWF4Yml0cyBuIHggPSB4IGxzciBuID0gMCBpblxuXG4gIGlmIG1heGJpdHMgNyB4IHRoZW4gKCogNyAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyIHgpXG4gIGVsc2UgaWYgbWF4Yml0cyAxMSB4IHRoZW4gKFxuICAgICgqIDUgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTEwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMDExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAxNiB4IHRoZW4gKFxuICAgICgqIDQgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAwMDExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyMSB4IHRoZW4gKFxuICAgICgqIDMgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMDAwMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyNiB4IHRoZW4gKFxuICAgICgqIDIgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTEwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDAwMDAxMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAobWF4Yml0cyAzMSB4KTtcbiAgICAoKiAxICsgNiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTEwMCBsb3IgKCh4IGxzciAzMCkgbGFuZCAwYjAwMDAwMDAxKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuXG5sZXQgY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGogPVxuICBsZXQgaGlnaDEwID0gaSAtIDB4RDgwMCBpblxuICBsZXQgbG93MTAgPSBqIC0gMHhEQzAwIGluXG4gIDB4MTAwMDAgKyAoKGhpZ2gxMCBsc2wgMTApIGxvciBsb3cxMClcblxubGV0IHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgYnVmIGkgaiA9XG4gIHV0Zjhfb2ZfY29kZSBidWYgKGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqKVxuIiwibGV0IHZlcnNpb24gPSBcIjIuMi4yXCJcblxuZXhjZXB0aW9uIEpzb25fZXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBqc29uX2Vycm9yIHMgPSByYWlzZSAoSnNvbl9lcnJvciBzKVxuXG5leGNlcHRpb24gRW5kX29mX2FycmF5XG5leGNlcHRpb24gRW5kX29mX29iamVjdFxuZXhjZXB0aW9uIEVuZF9vZl90dXBsZVxuZXhjZXB0aW9uIEVuZF9vZl9pbnB1dFxuXG50eXBlIGxleGVyX3N0YXRlID0ge1xuICBidWYgOiBCdWZmZXIudDsgKCogQnVmZmVyIHVzZWQgdG8gYWNjdW11bGF0ZSBzdWJzdHJpbmdzICopXG4gIG11dGFibGUgbG51bSA6IGludDsgKCogQ3VycmVudCBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxKSAqKVxuICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICAgICgqIEFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgKHN0YXJ0aW5nIGZyb20gMCkgKilcbiAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247ICgqIE5hbWUgZGVzY3JpYmluZyB0aGUgaW5wdXQgZmlsZSAqKVxufVxuXG5tb2R1bGUgTGV4ZXJfc3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV4ZXJfc3RhdGUgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5lbmRcblxubGV0IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgPyhsbnVtID0gMSkgKCkgPVxuICBsZXQgYnVmID0gbWF0Y2ggYnVmIHdpdGggTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDI1NiB8IFNvbWUgYnVmIC0+IGJ1ZiBpblxuICB7IGJ1ZjsgbG51bTsgYm9sID0gMDsgZm5hbWUgfVxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgICAgKCAoKSApXG4jIDk4IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IDEgLT5cbiMgMyBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgKFxuICAgICBpZiBuIDw9IDAgdGhlbiAoKVxuICAgICBlbHNlIGJlZ2luXG4gICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoTGV4aW5nLmxleGVtZV9jaGFyIGxleGJ1ZiAwKTtcbiAgICAgICByZWFkX2p1bmsgYnVmIChuIC0gMSkgbGV4YnVmXG4gICAgIGVuZFxuICAgICApXG4jIDEwOSBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTEgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiBcbmxldCByZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIG4gKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgbGV0IGxleF9hYnNfcG9zID0gbGV4YnVmLmxleF9hYnNfcG9zIGluXG4gIGxldCBsZXhfc3RhcnRfcG9zID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZjtcbiAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gbGV4X3N0YXJ0X3BvcyArIDE7XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhfYWJzX3Bvc1xuXG4jIDEyNSBcImxpYi9sZXhlcl91dGlscy5tbFwiXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCB4IC0+IHhcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gQ29tbW9uLkxleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBDb21tb24uanNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgYnVmX3NpemUgPSAzMiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0ICgpID0gTGV4ZXJfdXRpbHMucmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBidWZfc2l6ZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpICA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuICBsZXQgbmV3bGluZSB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG5cbiMgMTU0IFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIyMVxcMDAxXFwwMDBcXDAwMFxcMjUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyNDFcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMTk4XFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMjU1XFwyNTVcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwyNTVcXDI1NVxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMjU1XFwyNTVcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjIwXFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTk3XFwwMDFcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcbiMgMTAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcbiMgMTAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcbiMgMTAyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICApXG4jIDEwMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDE4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIClcbiMgMTA2OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIClcbiMgMTA4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDIxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTExNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDIzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyAyNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMTE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDI3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgMjg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgMjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDI4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOSAtPlxuIyAyOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDI5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG4jIDEyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDI5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAyOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDI5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcbiMgMTI0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuIyAxMjc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcbiMgMTI3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcbiMgMTI4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuIyAxMjg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAzMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuIyAxMzEwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzE1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzMjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzI1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cbiMgMzIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG5cbiAgICAgICAgIClcbiMgMTMzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuIyAxMzQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzcwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuIyAxMzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG4jIDE0MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAxNDIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG4jIDE0NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuIyAxNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDE0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcbiMgMTUzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcbiMgMTU0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDE1NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE1OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjEwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDE2MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcbiMgMTY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY2NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTcwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcbiMgMTg1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcbiMgMTg1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG4jIDE4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSApXG4jIDE4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDUwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG4jIDE4ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDUyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTg5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNTIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDUzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDUzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcbiMgMTk0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyMTMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjE0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjE4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIyMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjI4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjMxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzMzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMjM5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuIyAyNDAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0MjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQyOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNzQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI1NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDc0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA3NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDc4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgODAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA4MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgODE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgODE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI2NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjY3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI2NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjcwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjcyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjczMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjc0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI3NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjc4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDkxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDkzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA5MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA5MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyODcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgOTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjg3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG4jIDI5MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAyOTIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyOTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyOTQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjk1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDk4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAzMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5ODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5OTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDYzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzA3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwOTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzEyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuIyAzMTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTUzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDMxNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcbiMgMzE5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMzE5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBDb21tb24uaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQ6XyBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cbiMgMzM3NSBcImxpYi9yZWFkLm1sXCJcblxubW9kdWxlIFV0aWwgPSBzdHJ1Y3RcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGlcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gU29tZSBzXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYFN0cmluZyB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuZW5kXG5cbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICB8IHggLT4geFxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nbGl0IHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nbGl0IHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZ2xpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZ2xpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nbGl0IGEsIGBTdHJpbmdsaXQgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gQ29tbW9uLkxleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBDb21tb24uanNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgYnVmX3NpemUgPSAzMiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0ICgpID0gTGV4ZXJfdXRpbHMucmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBidWZfc2l6ZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpICA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgbmV3bGluZSB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG5cbiMgMTU0IFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIyMVxcMDAxXFwwMDBcXDAwMFxcMjUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyNDFcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMTk4XFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMjU1XFwyNTVcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwyNTVcXDI1NVxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMjU1XFwyNTVcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjIwXFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTk3XFwwMDFcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcbiMgMTAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcbiMgMTAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcbiMgMTAyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIk5hTlwiXG4gICAgICAgICAgICAgICAgKVxuIyAxMDM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAxODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIClcbiMgMTA0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIi1JbmZpbml0eVwiXG4gICAgICAgICAgICAgICAgKVxuIyAxMDU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZ2xpdCAoZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICApXG4jIDEwNjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDIwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICApXG4jIDEwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAyMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAyMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgMjUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYFR1cGxlIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyAyNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnMgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYFZhcmlhbnQgKGNvbnMsIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgICApXG4jIDExNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyAyODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyAyODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgMjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE5IC0+XG4jIDI5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcbiMgMTIxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDI5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuIyAxMjQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG4jIDEyNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuIyAxMjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuIyAxMjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG4jIDEyODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDMxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDMxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG4jIDEzMTAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzMTUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTMyMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzMjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuIyAzMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9jb2RlIHYuYnVmIHhcblxuICAgICAgICAgKVxuIyAxMzM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAzMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG4jIDEzNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzNzAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG4jIDEzODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcbiMgMTQxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDE0MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcbiMgMTQ0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG4jIDE0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzY5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMTQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuIyAxNTMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuIyAxNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTU1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMTU3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTU5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE1OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMTYzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuIyAxNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjY0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2OTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2OTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTgzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuIyAxODUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuIyAxODU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcbiMgMTg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcbiMgMTg4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNTIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA1MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTkyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgNTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuIyAxOTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjAwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgKVxuIyAyMTMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjE0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjE4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIyMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjI4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjMxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzMzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMjM5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuIyAyNDAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0MjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQyOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNzQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI1NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDc0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA3NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDc4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjYxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDgwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgODE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDgxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDgxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyNjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI2NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyNjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI3MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyNzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI3ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDkxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDkzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA5MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA5MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyODcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgOTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjg3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG4jIDI5MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAyOTIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyOTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyOTQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjk1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDk4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAzMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5ODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5OTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDYzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzA3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwOTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzEyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuIyAzMTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTUzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDMxNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcbiMgMzE5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMzE5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBDb21tb24uaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQ6XyBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cbiMgMzM3NSBcImxpYi9yZWFkLm1sXCJcblxubW9kdWxlIFV0aWwgPSBzdHJ1Y3RcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICB8IGBTdHJpbmdsaXQgXyAtPiBcInN0cmluZ2xpdFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG5lbmRcblxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50IG9mIGludFxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCByZWMgdG9fYmFzaWMgOiB0IC0+IEJhc2ljLnQgPSBmdW5jdGlvblxuICB8IChgTnVsbCB8IGBCb29sIF8gfCBgSW50IF8gfCBgRmxvYXQgXyB8IGBTdHJpbmcgXykgYXMgeCAtPiB4XG4gIHwgYEludGxpdCBzIC0+IGBTdHJpbmcgc1xuICB8IGBMaXN0IGwgfCBgVHVwbGUgbCAtPiBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCB0b19iYXNpYyBsKSlcbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgYEFzc29jIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCB0b19iYXNpYyB2KSkgbCkpXG4gIHwgYFZhcmlhbnQgKGssIE5vbmUpIC0+IGBTdHJpbmcga1xuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIC0+IGBMaXN0IFsgYFN0cmluZyBrOyB0b19iYXNpYyB2IF1cblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIHwgeCAtPiB4XG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IENvbW1vbi5MZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAgQ29tbW9uLmpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGJ1Zl9zaXplID0gMzIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCAoKSA9IExleGVyX3V0aWxzLnJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgYnVmX3NpemUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpICA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBuZXdsaW5lIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cblxuIyAxNTQgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDBcXDAwMFxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDEyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjIxXFwwMDFcXDAwMFxcMDAwXFwyNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDI0MVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwxOThcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDI1NVxcMjU1XFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMjBcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjM4XFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjM4XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuIyAxMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuIyAxMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuIyAxMDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5hblxuICAgICAgICAgICAgICAgIClcbiMgMTAzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMTgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBpbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgKGZpbmlzaF9zdHJpbmcgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgKVxuIyAxMDY4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAyMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgICAgICAgICAgICAgKVxuIyAxMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDI1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgMjc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgMjg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgMjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDI4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOSAtPlxuIyAyOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDI5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG4jIDEyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDI5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAyOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDI5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcbiMgMTI0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuIyAxMjc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcbiMgMTI3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcbiMgMTI4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuIyAxMjg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAzMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuIyAxMzEwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzE1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzMjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzI1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cbiMgMzIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG5cbiAgICAgICAgIClcbiMgMTMzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuIyAxMzQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzcwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuIyAxMzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG4jIDE0MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAxNDIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG4jIDE0NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuIyAxNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDE0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcbiMgMTUzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcbiMgMTU0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDE1NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE1OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjEwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDE2MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcbiMgMTY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY2NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTcwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcbiMgMTg1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcbiMgMTg1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG4jIDE4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSApXG4jIDE4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDUwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG4jIDE4ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDUyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTg5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNTIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDUzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDUzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcbiMgMTk0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgICAgIClcbiMgMjEzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIxNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjIxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMjI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIyODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjM1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG4jIDIzOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcbiMgMjQwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDczNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDczNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDc0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNTQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA3NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNzY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA3ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI2MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA4MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDgxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA4MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA4MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjY2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNjc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjY3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjcxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjczNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjc1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjc1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4ODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA5MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzwnO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjg0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA5MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgOTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgOTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjg3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDkzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI4NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuIyAyOTE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMjkyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjk0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjk0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjk1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA5ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMzAwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzAzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzA2MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDg1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMxMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcbiMgMzE0OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE1MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAzMTcwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG4jIDMxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDMxOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gQ29tbW9uLmluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkOl8gcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG4jIDMzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIHwgYEludCBfIC0+IFwiaW50XCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gZmxvYXQgaVxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgKGZsb2F0IGkpXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBpXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIGlcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgSW50IHggLT4gU29tZSAoZmxvYXQgeClcbiAgICAgIHwgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbmVuZFxuXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYFN0cmluZ2xpdCBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIHwgeCAtPiB4XG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZ2xpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZ2xpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdGxpdCBhLCBgRmxvYXRsaXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4iLCJvcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuISBZb2pzb25cblxudHlwZSB0ID0gWW9qc29uLlNhZmUudFxuXG5sZXQgeW9qc29uX29mX3VuaXQgKCkgOiB0ID0gYE51bGxcbmxldCB5b2pzb25fb2ZfYm9vbCBiIDogdCA9IGBCb29sIGJcbmxldCB5b2pzb25fb2Zfc3RyaW5nIHN0ciA6IHQgPSBgU3RyaW5nIHN0clxubGV0IHlvanNvbl9vZl9ieXRlcyBieXRlcyA6IHQgPSBgU3RyaW5nIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgeW9qc29uX29mX2NoYXIgYyA6IHQgPSBgU3RyaW5nIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgeW9qc29uX29mX2ludCBuIDogdCA9IGBJbnQgblxubGV0IHlvanNvbl9vZl9mbG9hdCBuIDogdCA9IGBGbG9hdCBuXG5sZXQgeW9qc29uX29mX2ludDMyIChuIDogSW50MzIudCkgOiB0ID0gYEludGxpdCAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX2ludDY0IChuIDogSW50NjQudCkgOiB0ID0gYEludGxpdCAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX25hdGl2ZWludCBuIDogdCA9IGBJbnRsaXQgKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfcmVmIHlvanNvbl9vZl9fYSByZiA9IHlvanNvbl9vZl9fYSAhcmZcbmxldCB5b2pzb25fb2ZfbGF6eV90IHlvanNvbl9vZl9fYSBsdiA9IHlvanNvbl9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHlvanNvbl9vZl9vcHRpb24geW9qc29uX29mX19hID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4geW9qc29uX29mX19hIHhcbiAgfCBOb25lIC0+IGBOdWxsXG47O1xuXG5sZXQgeW9qc29uX29mX3BhaXIgeW9qc29uX29mX19hIHlvanNvbl9vZl9fYiAoYSwgYikgPVxuICBgTGlzdCBbIHlvanNvbl9vZl9fYSBhOyB5b2pzb25fb2ZfX2IgYiBdXG47O1xuXG5sZXQgeW9qc29uX29mX3RyaXBsZSB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIHlvanNvbl9vZl9fYyAoYSwgYiwgYykgPVxuICBgTGlzdCBbIHlvanNvbl9vZl9fYSBhOyB5b2pzb25fb2ZfX2IgYjsgeW9qc29uX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHlvanNvbl9vZl9saXN0IHlvanNvbl9vZl9fYSBsc3QgPSBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCB+Zjp5b2pzb25fb2ZfX2EgbHN0KSlcblxubGV0IHlvanNvbl9vZl9hcnJheSB5b2pzb25fb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHlvanNvbl9vZl9fYSBhci4oaSkgOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgYExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCB5b2pzb25fb2ZfaGFzaHRibCB5b2pzb25fb2Zfa2V5IHlvanNvbl9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IGBMaXN0IFsgeW9qc29uX29mX2tleSBrOyB5b2pzb25fb2ZfdmFsIHYgXSA6OiBhY2MgaW5cbiAgYExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgeW9qc29uX29mX29wYXF1ZSBfID0gYFN0cmluZyBcIjxvcGFxdWU+XCJcbmxldCB5b2pzb25fb2ZfZnVuIF8gPSBgU3RyaW5nIFwiPGZ1bj5cIlxuXG5leGNlcHRpb24gT2ZfeW9qc29uX2Vycm9yIG9mIGV4biAqIHRcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3lvanNvbl9lcnJvcl9leG4gZXhjIHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKGV4YywgeW9qc29uKSlcbmxldCBvZl95b2pzb25fZXJyb3Igd2hhdCB5b2pzb24gPSByYWlzZSAoT2ZfeW9qc29uX2Vycm9yIChGYWlsdXJlIHdoYXQsIHlvanNvbikpXG5cbmxldCB1bml0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBOdWxsIC0+ICgpXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJ1bml0X29mX3lvanNvbjogYE51bGwgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYm9vbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgQm9vbCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJvb2xfb2ZfeW9qc29uOiB0cnVlL2ZhbHNlIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHN0cmluZ19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPiBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInN0cmluZ19vZl95b2pzb246IHN0cmluZyBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBieXRlc19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJieXRlc19vZl95b2pzb246IHN0cmluZyBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBjaGFyX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBtdXN0IGNvbnRhaW4gb25lIGNoYXJhY3RlciBvbmx5XCIgeW9qc29uO1xuICAgIHN0ci5bMF1cbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImNoYXJfb2ZfeW9qc29uOiBzdHJpbmcgb2Ygc2l6ZSBvbmUgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnQgdiAtPiB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGZsb2F0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBGbG9hdCB2IC0+IHZcbiAgfCBgSW50IGkgLT4gZmxvYXRfb2ZfaW50IGlcbiAgfCBgSW50bGl0IHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJmbG9hdF9vZl95b2pzb246IGZsb2F0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDMyX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDMyLm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50MzIub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDMyX29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnQ2NF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBJbnQ2NC5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IEludDY0Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnQ2NF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IE5hdGl2ZWludC5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwibmF0aXZlaW50X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCByZWZfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSByZWYgKGFfX29mX3lvanNvbiB5b2pzb24pXG5sZXQgbGF6eV90X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2ZfeW9qc29uIHlvanNvbilcblxubGV0IG9wdGlvbl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGVsIC0+IFNvbWUgKGFfX29mX3lvanNvbiBlbClcbjs7XG5cbmxldCBwYWlyX29mX3lvanNvbiBhX19vZl95b2pzb24gYl9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgWyBhX3lvanNvbjsgYl95b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBhLCBiXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJwYWlyX29mX3lvanNvbjogaW52YWxpZCBmb3JtYXRcIiB5b2pzb25cbjs7XG5cbmxldCB0cmlwbGVfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24gY19fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgWyBhX3lvanNvbjsgYl95b2pzb247IGNfeW9qc29uIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3lvanNvbiBhX3lvanNvbiBpblxuICAgIGxldCBiID0gYl9fb2ZfeW9qc29uIGJfeW9qc29uIGluXG4gICAgbGV0IGMgPSBjX19vZl95b2pzb24gY195b2pzb24gaW5cbiAgICBhLCBiLCBjXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJ0cmlwbGVfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IGxpc3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl95b2pzb24gaW5cbiAgICBMaXN0LnJldiByZXZfbHN0XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJsaXN0X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBhcnJheV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgW10gLT4gW3x8XVxuICB8IGBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl95b2pzb24gaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl95b2pzb24gaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSB0XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJhcnJheV9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaGFzaHRibF9vZl95b2pzb24ga2V5X29mX3lvanNvbiB2YWxfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSAwIGluXG4gICAgbGV0IGFjdCA9IGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IFsga195b2pzb247IHZfeW9qc29uIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2ZfeW9qc29uIGtfeW9qc29uKSB+ZGF0YToodmFsX29mX3lvanNvbiB2X3lvanNvbilcbiAgICAgIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJoYXNodGJsX29mX3lvanNvbjogdHVwbGUgbGlzdCBuZWVkZWRcIiB5b2pzb25cbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IG9wYXF1ZV9vZl95b2pzb24geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIFwib3BhcXVlX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHlvanNvblxuOztcblxubGV0IGZ1bl9vZl95b2pzb24geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIFwiZnVuX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgZnVuY3Rpb24gdmFsdWVzXCIgeW9qc29uXG47O1xuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBsZXQgeW9qc29uX29mX2FycmF5ID0geW9qc29uX29mX2FycmF5XG4gIGxldCBhcnJheV9vZl95b2pzb24gPSBhcnJheV9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ib29sID0geW9qc29uX29mX2Jvb2xcbiAgbGV0IGJvb2xfb2ZfeW9qc29uID0gYm9vbF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9jaGFyID0geW9qc29uX29mX2NoYXJcbiAgbGV0IGNoYXJfb2ZfeW9qc29uID0gY2hhcl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9mbG9hdCA9IHlvanNvbl9vZl9mbG9hdFxuICBsZXQgZmxvYXRfb2ZfeW9qc29uID0gZmxvYXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50ID0geW9qc29uX29mX2ludFxuICBsZXQgaW50X29mX3lvanNvbiA9IGludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQzMiA9IHlvanNvbl9vZl9pbnQzMlxuICBsZXQgaW50MzJfb2ZfeW9qc29uID0gaW50MzJfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50NjQgPSB5b2pzb25fb2ZfaW50NjRcbiAgbGV0IGludDY0X29mX3lvanNvbiA9IGludDY0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2xpc3QgPSB5b2pzb25fb2ZfbGlzdFxuICBsZXQgbGlzdF9vZl95b2pzb24gPSBsaXN0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX25hdGl2ZWludCA9IHlvanNvbl9vZl9uYXRpdmVpbnRcbiAgbGV0IG5hdGl2ZWludF9vZl95b2pzb24gPSBuYXRpdmVpbnRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfb3B0aW9uID0geW9qc29uX29mX29wdGlvblxuICBsZXQgb3B0aW9uX29mX3lvanNvbiA9IG9wdGlvbl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9yZWYgPSB5b2pzb25fb2ZfcmVmXG4gIGxldCByZWZfb2ZfeW9qc29uID0gcmVmX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3N0cmluZyA9IHlvanNvbl9vZl9zdHJpbmdcbiAgbGV0IHN0cmluZ19vZl95b2pzb24gPSBzdHJpbmdfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfYnl0ZXMgPSB5b2pzb25fb2ZfYnl0ZXNcbiAgbGV0IGJ5dGVzX29mX3lvanNvbiA9IGJ5dGVzX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3VuaXQgPSB5b2pzb25fb2ZfdW5pdFxuICBsZXQgdW5pdF9vZl95b2pzb24gPSB1bml0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2xhenlfdCA9IHlvanNvbl9vZl9sYXp5X3RcbiAgbGV0IGxhenlfdF9vZl95b2pzb24gPSBsYXp5X3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaGFzaHRibCA9IHlvanNvbl9vZl9oYXNodGJsXG4gIGxldCBoYXNodGJsX29mX3lvanNvbiA9IGhhc2h0Ymxfb2ZfeW9qc29uXG5lbmRcbiIsIigqIENvbnZfZXJyb3I6IE1vZHVsZSBmb3IgSGFuZGxpbmcgRXJyb3JzIGR1cmluZyBBdXRvbWF0ZWQgWW9qc29uXG4gICBDb252ZXJzaW9ucyAqKVxuXG5vcGVuISBTdGRMYWJlbHNcbm9wZW4gWW9qc29uX2NvbnZcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBFcnJvcnMgY29uY2VybmluZyB0dXBsZXMgKilcblxubGV0IHR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBsb2MgbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKHNwcmludGYgXCIlc19vZl95b2pzb246IHR1cGxlIG9mIHNpemUgJWQgZXhwZWN0ZWRcIiBsb2MgbikgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYW4gZW1wdHkgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICBsZXQgZmxkX25hbWVzX3N0ciA9IFN0cmluZy5jb25jYXQgKExpc3QucmV2IHJldl9mbGRfbmFtZXMpIH5zZXA6XCIgXCIgaW5cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl95b2pzb246ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJleHRyYSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyB5b2pzb24gbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl95b2pzb246IHRoZSBmb2xsb3dpbmcgcmVjb3JkIGVsZW1lbnRzIHdlcmUgdW5kZWZpbmVkOiAlc1wiIGxvYyB1bmRlZmluZWRcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPSBsb2MgXiBcIl9vZl95b2pzb246IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIGxvYyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBcXFxuICAgICAgIGZpZWxkc1wiXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHlvanNvblxuOztcblxubGV0IHB0YWdfbm9fYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCJcbiAgICAgIGxvY1xuICAgICAgY25zdHJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKVxuICAgIHlvanNvblxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yXG4gICAgKGxvYyBeIFwiX29mX3lvanNvbjogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfdHlwZSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRyeWluZyB0byBjb252ZXJ0IGFuIGVtcHR5IHR5cGVcIikgeW9qc29uXG47O1xuIiwibW9kdWxlIFlvanNvbl9jb252X2Vycm9yID0gWW9qc29uX2NvbnZfZXJyb3Jcbm1vZHVsZSBZb2pzb25fY29udiA9IFlvanNvbl9jb252XG5tb2R1bGUgWW9qc29uYWJsZSA9IFlvanNvbmFibGVfaW50ZlxubW9kdWxlIFlvanNvbiA9IFlvanNvblxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gICAgfCBOb25lXG4gICAgfCBTb21lIG9mICdhXG5lbmRcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmV4dGVybmFsIHBvbHlfZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG5sZXQgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBmdW4geCAtPiAheFxuIiwiIyAxIFwicHB4X2Rlcml2aW5nX3J1bnRpbWUuY3Bwby5tbFwiXG50eXBlIG5vbnJlYyBpbnQgPSBpbnRcbnR5cGUgbm9ucmVjIGNoYXIgPSBjaGFyXG50eXBlIG5vbnJlYyBzdHJpbmcgPSBzdHJpbmdcbnR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXRcbnR5cGUgbm9ucmVjIGJvb2wgPSBib29sXG50eXBlIG5vbnJlYyB1bml0ID0gdW5pdFxudHlwZSBub25yZWMgZXhuID0gZXhuXG50eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5XG50eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdFxudHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uXG50eXBlIG5vbnJlYyBuYXRpdmVpbnQgPSBuYXRpdmVpbnRcbnR5cGUgbm9ucmVjIGludDMyID0gaW50MzJcbnR5cGUgbm9ucmVjIGludDY0ID0gaW50NjRcbnR5cGUgbm9ucmVjICdhIGxhenlfdCA9ICdhIGxhenlfdFxudHlwZSBub25yZWMgYnl0ZXMgPSBieXRlc1xuXG4jIDE4IFwicHB4X2Rlcml2aW5nX3J1bnRpbWUuY3Bwby5tbFwiXG4oKiBXZSByZXF1aXJlIDQuMDggd2hpbGUgNC4wNyBhbHJlYWR5IGhhcyBhIFN0ZGxpYiBtb2R1bGUuXG4gICBJbiA0LjA3LCB0aGUgdHlwZSBlcXVhbGl0aWVzIG9uIFN0ZGxpYi5QZXJ2YXNpdmVzXG4gICBhcmUgbm90IHN0cm9uZyBlbm91Z2ggZm9yIHRoZSAnaW5jbHVkZSBTdGRsaWInXG4gICBiZWxvdyB0byBzYXRpc2Z5IHRoZSBzaWduYXR1cmUgY29uc3RyYWludHMgb25cbiAgIFBweF9kZXJpdmluZ19ydW50aW1lLlBlcnZhc2l2ZXMuICopXG5tb2R1bGUgU3RkbGliID0gU3RkbGliXG5cbmluY2x1ZGUgU3RkbGliXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgcmVzdWx0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuXG4gIHR5cGUgKCdhLCAnYikgcmVzdWx0ID0gKCdhLCAnYikgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgRXJyb3Igb2YgJ2JcbmVuZFxuIiwiXG50eXBlIHQgPSBpbnRcbmxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbmxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxubGV0IHRvX2ludCB4ID0geFxubGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuXG5sZXQgaW50ZXJzZWN0IHggeSA9IHggbGFuZCB5IDw+IDBcbmxldCAoKyspIHggeSA9IHggbG9yIHlcblxubGV0IGR1bW15ID0gLTFcbmxldCBpbmV4aXN0YW50ID0gMVxubGV0IGxldHRlciA9IDJcbmxldCBub3RfbGV0dGVyID0gNFxubGV0IG5ld2xpbmUgPSA4XG5sZXQgbGFzdG5ld2xpbmUgPSAxNlxubGV0IHNlYXJjaF9ib3VuZGFyeSA9IDMyXG5cbmxldCBmcm9tX2NoYXIgPSBmdW5jdGlvblxuICAoKiBTaG91bGQgbWF0Y2ggW2N3b3JkXSBkZWZpbml0aW9uICopXG4gIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcMTcwJyB8ICdcXDE4MScgfCAnXFwxODYnXG4gIHwgJ1xcMTkyJy4uJ1xcMjE0JyB8ICdcXDIxNicuLidcXDI0NicgfCAnXFwyNDgnLi4nXFwyNTUnIC0+XG4gICAgbGV0dGVyXG4gIHwgJ1xcbicgLT5cbiAgICBub3RfbGV0dGVyICsrIG5ld2xpbmVcbiAgfCBfIC0+XG4gICAgbm90X2xldHRlclxuIiwiKCoqIFZlcnkgc21hbGwgdG9vbGluZyBmb3IgZm9ybWF0IHByaW50ZXJzLiAqKVxuXG5pbmNsdWRlIEZvcm1hdFxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGxpc3QgPSBwcF9wcmludF9saXN0XG5sZXQgc3RyID0gcHBfcHJpbnRfc3RyaW5nXG5sZXQgc2V4cCBmbXQgcyBwcCB4ID0gZnByaW50ZiBmbXQgXCJAWzwzPiglc0AgJWEpQF1cIiBzIHBwIHhcbmxldCBwYWlyIHBwMSBwcDIgZm10ICh2MSx2MikgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgOyBwcDIgZm10IHYyXG5sZXQgdHJpcGxlIHBwMSBwcDIgcHAzIGZtdCAodjEsIHYyLCB2MykgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDIgZm10IHYyOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDMgZm10IHYzXG5sZXQgaW50ID0gcHBfcHJpbnRfaW50XG5sZXQgb3B0aW50IGZtdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaSAtPiBmcHJpbnRmIGZtdCBcIkAgJWRcIiBpXG5cbmxldCBxdW90ZSBmbXQgcyA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiBzXG5cbmxldCBwcF9vbGlzdCBwcF9lbGVtIGZtdCA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDM+W0AgJWFAIF1AXVwiXG4gICAgKHBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGZwcmludGYgZm10IFwiO0AgXCIpXG4gICAgICAgcHBfZWxlbSlcblxubGV0IHBwX3N0cl9saXN0ID0gcHBfb2xpc3QgcXVvdGVcblxubGV0IHRvX3RvX3N0cmluZyBwcCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIHBwIGZtdCB4O1xuICBCdWZmZXIuY29udGVudHMgYlxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBjID0gaW50XG50eXBlIHQgPSAoYyAqIGMpIGxpc3RcblxubGV0IHJlYyB1bmlvbiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBsJ1xuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyICsgMSA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6dW5pb24gciBsJ1xuICAgIGVsc2UgaWYgYzInICsgMSA8IGMxIHRoZW5cbiAgICAgIChjMScsIGMyJyk6OnVuaW9uIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIHVuaW9uIHIgKChtaW4gYzEgYzEnLCBjMicpOjpyJylcbiAgICBlbHNlXG4gICAgICB1bmlvbiAoKG1pbiBjMSBjMScsIGMyKTo6cikgcidcblxubGV0IHJlYyBpbnRlciBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IFtdXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICBpbnRlciByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBpbnRlciBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICAobWF4IGMxIGMxJywgYzIpOjppbnRlciByIGwnXG4gICAgZWxzZVxuICAgICAgKG1heCBjMSBjMScsIGMyJyk6OmludGVyIGwgcidcblxubGV0IHJlYyBkaWZmIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OmRpZmYgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgZGlmZiBsIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHInJyA9IGlmIGMyJyA8IGMyIHRoZW4gKGMyJyArIDEsIGMyKSA6OiByIGVsc2UgciBpblxuICAgICAgaWYgYzEgPCBjMScgdGhlblxuICAgICAgICAoYzEsIGMxJyAtIDEpOjpkaWZmIHInJyByJ1xuICAgICAgZWxzZVxuICAgICAgICBkaWZmIHInJyByJ1xuXG5sZXQgc2luZ2xlIGMgPSBbYywgY11cblxubGV0IGFkZCBjIGwgPSB1bmlvbiAoc2luZ2xlIGMpIGxcblxubGV0IHNlcSBjIGMnID0gaWYgYyA8PSBjJyB0aGVuIFtjLCBjJ10gZWxzZSBbYycsIGNdXG5cbmxldCByZWMgb2Zmc2V0IG8gbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAgICAgICAgLT4gW11cbiAgfCAoYzEsIGMyKSA6OiByIC0+IChjMSArIG8sIGMyICsgbykgOjogb2Zmc2V0IG8gclxuXG5sZXQgZW1wdHkgPSBbXVxuXG5sZXQgcmVjIG1lbSAoYyA6IGludCkgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICAgIFtdICAgICAgICAgICAgICAtPiBmYWxzZVxuICB8IChjMSwgYzIpIDo6IHJlbSAtPiBpZiBjIDw9IGMyIHRoZW4gYyA+PSBjMSBlbHNlIG1lbSBjIHJlbVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG5cbmxldCByZWMgaGFzaF9yZWMgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAtPiAwXG4gIHwgKGksIGopOjpyIC0+IGkgKyAxMyAqIGogKyAyNTcgKiBoYXNoX3JlYyByXG5sZXQgaGFzaCBsID0gKGhhc2hfcmVjIGwpIGxhbmQgMHgzRkZGRkZGRlxuXG4oKioqKilcblxubGV0IHByaW50X29uZSBjaCAoYzEsIGMyKSA9XG4gIGlmIGMxID0gYzIgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWRcIiBjMVxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGMxIGMyXG5cbmxldCBwcCA9IEZtdC5saXN0IHByaW50X29uZVxuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKHgsIHkpOjp4cyAtPlxuICAgIGYgeCB5O1xuICAgIGl0ZXIgeHMgIH5mXG5cbmxldCBvbmVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgW2ksIGpdIHdoZW4gaSA9IGogLT4gU29tZSBpXG4gIHwgXyAtPiBOb25lXG5cblxubW9kdWxlIENTZXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50ICogKGludCAqIGludCkgbGlzdFxuICAgIGxldCBjb21wYXJlIChpLCB1KSAoaiwgdikgPVxuICAgICAgbGV0IGMgPSBjb21wYXJlIGkgaiBpblxuICAgICAgaWYgYyA8PiAwXG4gICAgICB0aGVuIGNcbiAgICAgIGVsc2UgY29tcGFyZSB1IHZcbiAgZW5kKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gTGlzdC5mb2xkX3JpZ2h0IGYgdCBpbml0XG5cbmxldCBjc2luZ2xlIGMgPSBzaW5nbGUgKENoYXIuY29kZSBjKVxuXG5sZXQgY2FueSA9IFswLCAyNTVdXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHJlYyBwcmVwZW5kIHMgeCBsID1cbiAgbWF0Y2ggcywgbCB3aXRoXG4gIHwgW10sIF8gLT4gbFxuICB8IF9yLCBbXSAtPiBbXVxuICB8IChfYywgYycpIDo6IHIsIChbZCwgX2QnXSwgX3gnKSA6OiBfcicgd2hlbiBjJyA8IGQgLT4gcHJlcGVuZCByIHggbFxuICB8IChjLCBjJykgOjogciwgKFtkLCBkJ10sIHgnKSA6OiByJyAtPlxuICAgIGlmIGMgPD0gZCB0aGVuIGJlZ2luXG4gICAgICBpZiBjJyA8IGQnXG4gICAgICB0aGVuIChbZCwgYyddLCB4IEAgeCcpIDo6IHByZXBlbmQgciB4ICgoW2MnICsgMSwgZCddLCB4JykgOjogcicpXG4gICAgICBlbHNlIChbZCwgZCddLCB4IEAgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGMgPiBkJ1xuICAgICAgdGhlbiAoW2QsIGQnXSwgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgICBlbHNlIChbZCwgYyAtIDFdLCB4JykgOjogcHJlcGVuZCBzIHggKChbYywgZCddLCB4JykgOjogcicpXG4gICAgZW5kXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHBpY2sgPSBmdW5jdGlvblxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiUmVfY3NldC5waWNrXCJcbiAgfCAoeCwgXyk6Ol8gLT4geFxuIiwiXG5tb2R1bGUgUG1hcmsgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG4gIGxldCByID0gcmVmIDBcbiAgbGV0IGdlbiAoKSA9IGluY3IgciA7ICFyXG5cbiAgbGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kXG5cbmluY2x1ZGUgUG1hcmtcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZShQbWFyaylcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgc2VtID0gWyBgTG9uZ2VzdCB8IGBTaG9ydGVzdCB8IGBGaXJzdCBdXG5cbnR5cGUgcmVwX2tpbmQgPSBbIGBHcmVlZHkgfCBgTm9uX2dyZWVkeSBdXG5cbnR5cGUgbWFyayA9IGludFxudHlwZSBpZHggPSBpbnRcblxudHlwZSBleHByID0geyBpZCA6IGludDsgZGVmIDogZGVmIH1cblxuYW5kIGRlZiA9XG4gICAgQ3N0IG9mIENzZXQudFxuICB8IEFsdCBvZiBleHByIGxpc3RcbiAgfCBTZXEgb2Ygc2VtICogZXhwciAqIGV4cHJcbiAgfCBFcHNcbiAgfCBSZXAgb2YgcmVwX2tpbmQgKiBzZW0gKiBleHByXG4gIHwgTWFyayBvZiBpbnRcbiAgfCBFcmFzZSBvZiBpbnQgKiBpbnRcbiAgfCBCZWZvcmUgb2YgQ2F0ZWdvcnkudFxuICB8IEFmdGVyIG9mIENhdGVnb3J5LnRcbiAgfCBQbWFyayBvZiBQbWFyay50XG5cbmxldCBoYXNoX2NvbWJpbmUgaCBhY2N1ID0gYWNjdSAqIDY1NTk5ICsgaFxuXG5tb2R1bGUgTWFya3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1hcmtzIDogKGludCAqIGludCkgbGlzdFxuICAgIDsgcG1hcmtzIDogUG1hcmsuU2V0LnQgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWFya3MgPSBbXSA7IHBtYXJrcyA9IFBtYXJrLlNldC5lbXB0eSB9XG5cbiAgbGV0IHJlYyBtZXJnZV9tYXJrc19vZmZzZXQgb2xkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBvbGRcbiAgICB8IChpLCB2KSA6OiByZW0gLT5cbiAgICAgIGxldCBudycgPSBtZXJnZV9tYXJrc19vZmZzZXQgKExpc3QucmVtb3ZlX2Fzc3EgaSBvbGQpIHJlbSBpblxuICAgICAgaWYgdiA9IC0yIHRoZW5cbiAgICAgICAgbncnXG4gICAgICBlbHNlXG4gICAgICAgIChpLCB2KSA6OiBudydcblxuICBsZXQgbWVyZ2Ugb2xkIG53ID1cbiAgICB7IG1hcmtzID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZC5tYXJrcyBudy5tYXJrc1xuICAgIDsgcG1hcmtzID0gUG1hcmsuU2V0LnVuaW9uIG9sZC5wbWFya3MgbncucG1hcmtzIH1cblxuICBsZXQgcmVjIGhhc2hfbWFya3Nfb2Zmc2V0IGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAgICAgICAgICAtPiBhY2N1XG4gICAgfCAoYSwgaSkgOjogciAtPiBoYXNoX21hcmtzX29mZnNldCByIChoYXNoX2NvbWJpbmUgYSAoaGFzaF9jb21iaW5lIGkgYWNjdSkpXG5cbiAgbGV0IGhhc2ggbSBhY2N1ID1cbiAgICBoYXNoX21hcmtzX29mZnNldCBtLm1hcmtzIChoYXNoX2NvbWJpbmUgKEhhc2h0YmwuaGFzaCBtLnBtYXJrcykgYWNjdSlcblxuICBsZXQgcmVjIG1hcmtzX3NldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgICB8IChhLCAtMSkgOjogcmVtIC0+XG4gICAgICAoYSwgaWR4KSA6OiBtYXJrc19zZXRfaWR4IGlkeCByZW1cbiAgICB8IG1hcmtzIC0+XG4gICAgICBtYXJrc1xuXG4gIGxldCBtYXJrc19zZXRfaWR4IG1hcmtzIGlkeCA9XG4gICAgeyBtYXJrcyB3aXRoIG1hcmtzID0gbWFya3Nfc2V0X2lkeCBpZHggbWFya3MubWFya3MgfVxuXG4gIGxldCBwcF9tYXJrcyBjaCB0ID1cbiAgICBtYXRjaCB0Lm1hcmtzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICAgIHwgKGEsIGkpIDo6IHIgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBhIGk7XG4gICAgICBMaXN0Lml0ZXIgKGZ1biAoYSwgaSkgLT4gRm9ybWF0LmZwcmludGYgY2ggXCIgJWQtJWRcIiBhIGkpIHJcbmVuZFxuXG4oKioqKilcblxubGV0IHBwX3NlbSBjaCBrID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBjaFxuICAgIChtYXRjaCBrIHdpdGhcbiAgICAgICBgU2hvcnRlc3QgLT4gXCJzaG9ydFwiXG4gICAgIHwgYExvbmdlc3QgIC0+IFwibG9uZ1wiXG4gICAgIHwgYEZpcnN0ICAgIC0+IFwiZmlyc3RcIilcblxuXG5sZXQgcHBfcmVwX2tpbmQgZm10ID0gZnVuY3Rpb25cbiAgfCBgR3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiR3JlZWR5XCJcbiAgfCBgTm9uX2dyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbl9ncmVlZHlcIlxuXG5sZXQgcmVjIHBwIGNoIGUgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbWF0Y2ggZS5kZWYgd2l0aFxuICAgIENzdCBsIC0+XG4gICAgc2V4cCBjaCBcImNzdFwiIENzZXQucHAgbDtcbiAgfCBBbHQgbCAtPlxuICAgIHNleHAgY2ggXCJhbHRcIiAobGlzdCBwcCkgbFxuICB8IFNlcSAoaywgZSwgZScpIC0+XG4gICAgc2V4cCBjaCBcInNlcVwiICh0cmlwbGUgcHBfc2VtIHBwIHBwKSAoaywgZSwgZScpXG4gIHwgRXBzIC0+XG4gICAgc3RyIGNoIFwiZXBzXCJcbiAgfCBSZXAgKF9yaywgaywgZSkgLT5cbiAgICBzZXhwIGNoIFwicmVwXCIgKHBhaXIgcHBfc2VtIHBwKSAoaywgZSlcbiAgfCBNYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwibWFya1wiIGludCBpXG4gIHwgUG1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJwbWFya1wiIGludCAoaSA6PiBpbnQpXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgc2V4cCBjaCBcImVyYXNlXCIgKHBhaXIgaW50IGludCkgKGIsIGUpXG4gIHwgQmVmb3JlIGMgLT5cbiAgICBzZXhwIGNoIFwiYmVmb3JlXCIgQ2F0ZWdvcnkucHAgY1xuICB8IEFmdGVyIGMgLT5cbiAgICBzZXhwIGNoIFwiYWZ0ZXJcIiBDYXRlZ29yeS5wcCBjXG5cblxuKCoqKiopXG5cbmxldCByZWMgZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBOb25lXG4gIHwgeCA6OiByIC0+XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIE5vbmUgICAgICAgICAgLT4gZmlyc3QgZiByXG4gICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlc1xuXG4oKioqKilcblxudHlwZSBpZHMgPSBpbnQgcmVmXG5sZXQgY3JlYXRlX2lkcyAoKSA9IHJlZiAwXG5cbmxldCBlcHNfZXhwciA9IHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuXG5sZXQgbWtfZXhwciBpZHMgZGVmID1cbiAgaW5jciBpZHM7XG4gIHsgaWQgPSAhaWRzOyBkZWYgPSBkZWYgfVxuXG5sZXQgZW1wdHkgaWRzID0gbWtfZXhwciBpZHMgKEFsdCBbXSlcblxubGV0IGNzdCBpZHMgcyA9XG4gIGlmIENzZXQuaXNfZW1wdHkgc1xuICB0aGVuIGVtcHR5IGlkc1xuICBlbHNlIG1rX2V4cHIgaWRzIChDc3QgcylcblxubGV0IGFsdCBpZHMgPSBmdW5jdGlvblxuICB8IFtdICAtPiBlbXB0eSBpZHNcbiAgfCBbY10gLT4gY1xuICB8IGwgICAtPiBta19leHByIGlkcyAoQWx0IGwpXG5cbmxldCBzZXEgaWRzIGtpbmQgeCB5ID1cbiAgbWF0Y2ggeC5kZWYsIHkuZGVmIHdpdGhcbiAgICBBbHQgW10sIF8gICAgICAgICAgICAgICAgIC0+IHhcbiAgfCBfLCBBbHQgW10gICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBFcHMsIF8gICAgICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBfLCBFcHMgd2hlbiBraW5kID0gYEZpcnN0IC0+IHhcbiAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgIC0+IG1rX2V4cHIgaWRzIChTZXEgKGtpbmQsIHgsIHkpKVxuXG5sZXQgaXNfZXBzIGV4cHIgPVxuICBtYXRjaCBleHByLmRlZiB3aXRoXG4gIHwgRXBzIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCBlcHMgaWRzID0gbWtfZXhwciBpZHMgRXBzXG5cbmxldCByZXAgaWRzIGtpbmQgc2VtIHggPSBta19leHByIGlkcyAoUmVwIChraW5kLCBzZW0sIHgpKVxuXG5sZXQgbWFyayBpZHMgbSA9IG1rX2V4cHIgaWRzIChNYXJrIG0pXG5cbmxldCBwbWFyayBpZHMgaSA9IG1rX2V4cHIgaWRzIChQbWFyayBpKVxuXG5sZXQgZXJhc2UgaWRzIG0gbScgPSBta19leHByIGlkcyAoRXJhc2UgKG0sIG0nKSlcblxubGV0IGJlZm9yZSBpZHMgYyA9IG1rX2V4cHIgaWRzIChCZWZvcmUgYylcblxubGV0IGFmdGVyIGlkcyBjID0gbWtfZXhwciBpZHMgKEFmdGVyIGMpXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlbmFtZSBpZHMgeCA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgXyB8IEVwcyB8IE1hcmsgXyB8IFBtYXJrIF8gfCBFcmFzZSBfIHwgQmVmb3JlIF8gfCBBZnRlciBfIC0+XG4gICAgbWtfZXhwciBpZHMgeC5kZWZcbiAgfCBBbHQgbCAtPlxuICAgIG1rX2V4cHIgaWRzIChBbHQgKExpc3QubWFwIChyZW5hbWUgaWRzKSBsKSlcbiAgfCBTZXEgKGssIHksIHopIC0+XG4gICAgbWtfZXhwciBpZHMgKFNlcSAoaywgcmVuYW1lIGlkcyB5LCByZW5hbWUgaWRzIHopKVxuICB8IFJlcCAoZywgaywgeSkgLT5cbiAgICBta19leHByIGlkcyAoUmVwIChnLCBrLCByZW5hbWUgaWRzIHkpKVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG50eXBlIG1hcmtfaW5mb3MgPSBpbnQgYXJyYXlcbnR5cGUgc3RhdHVzID0gRmFpbGVkIHwgTWF0Y2ggb2YgbWFya19pbmZvcyAqIFBtYXJrLlNldC50IHwgUnVubmluZ1xuXG5tb2R1bGUgRSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVFNlcSBvZiB0IGxpc3QgKiBleHByICogc2VtXG4gICAgfCBURXhwIG9mIE1hcmtzLnQgKiBleHByXG4gICAgfCBUTWF0Y2ggb2YgTWFya3MudFxuXG4gIGxldCByZWMgZXF1YWwgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IFRTZXEgKGwxJywgZTEsIF8pIDo6IHIxLCBUU2VxIChsMicsIGUyLCBfKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBlcXVhbCBsMScgbDInICYmIGVxdWFsIHIxIHIyXG4gICAgfCBURXhwIChtYXJrczEsIGUxKSA6OiByMSwgVEV4cCAobWFya3MyLCBlMikgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBUTWF0Y2ggbWFya3MxIDo6IHIxLCBUTWF0Y2ggbWFya3MyIDo6IHIyIC0+XG4gICAgICBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IHJlYyBoYXNoIGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYWNjdVxuICAgIHwgVFNlcSAobCcsIGUsIF8pIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MTcyYTFiY2UgKGhhc2hfY29tYmluZSBlLmlkIChoYXNoIGwnIGFjY3UpKSlcbiAgICB8IFRFeHAgKG1hcmtzLCBlKSA6OiByIC0+XG4gICAgICBoYXNoIHJcbiAgICAgICAgKGhhc2hfY29tYmluZSAweDJiNGMwZDc3IChoYXNoX2NvbWJpbmUgZS5pZCAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSkpXG4gICAgfCBUTWF0Y2ggbWFya3MgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxYzIwNWFkNSAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSlcblxuICBsZXQgdGV4cCBtYXJrcyB4ID0gVEV4cCAobWFya3MsIHgpXG5cbiAgbGV0IHRzZXEga2luZCB4IHkgcmVtID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gcmVtXG4gICAgfCBbVEV4cCAobWFya3MsIHtkZWYgPSBFcHMgOyBffSldIC0+IFRFeHAgKG1hcmtzLCB5KSA6OiByZW1cbiAgICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVFNlcSAoeCwgeSwga2luZCkgOjogcmVtXG5cbiAgbGV0IHJlYyBwcmludF9zdGF0ZV9yZWMgY2ggZSB5ID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IFRNYXRjaCBtYXJrcyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihNYXRjaEAgJWEpQF1cIiBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVFNlcSAobCcsIHgsIF9raW5kKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihTZXFAIFwiO1xuICAgICAgcHJpbnRfc3RhdGVfbHN0IGNoIGwnIHg7XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgJWEpQF1cIiBwcCB4XG4gICAgfCBURXhwIChtYXJrcywge2RlZiA9IEVwczsgX30pIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAIChlcHMpKUBdXCIgeS5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVEV4cCAobWFya3MsIHgpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAICVhKUBdXCIgeC5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrcyBwcCB4XG5cbiAgYW5kIHByaW50X3N0YXRlX2xzdCBjaCBsIHkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiKClcIlxuICAgIHwgZSA6OiByZW0gLT5cbiAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHk7XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCB8IFwiO1xuICAgICAgICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5KVxuICAgICAgICByZW1cblxuICBsZXQgcHAgY2ggdCA9IHByaW50X3N0YXRlX2xzdCBjaCBbdF0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBpZHg6IGlkeFxuICAgIDsgY2F0ZWdvcnk6IENhdGVnb3J5LnRcbiAgICA7IGRlc2M6IEUudCBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YXR1czogc3RhdHVzIG9wdGlvblxuICAgIDsgaGFzaDogaGFzaCB9XG5cbiAgbGV0IGR1bW15ID1cbiAgICB7IGlkeCA9IC0xXG4gICAgOyBjYXRlZ29yeSA9IENhdGVnb3J5LmR1bW15XG4gICAgOyBkZXNjID0gW11cbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSAtMSB9XG5cbiAgbGV0IGhhc2ggaWR4IGNhdCBkZXNjID1cbiAgICBFLmhhc2ggZGVzYyAoaGFzaF9jb21iaW5lIGlkeCAoaGFzaF9jb21iaW5lIChDYXRlZ29yeS50b19pbnQgY2F0KSAwKSkgbGFuZCAweDNGRkZGRkZGXG5cbiAgbGV0IG1rIGlkeCBjYXQgZGVzYyA9XG4gICAgeyBpZHhcbiAgICA7IGNhdGVnb3J5ID0gY2F0XG4gICAgOyBkZXNjXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gaGFzaCBpZHggY2F0IGRlc2N9XG5cbiAgbGV0IGNyZWF0ZSBjYXQgZSA9IG1rIDAgY2F0IFtFLlRFeHAgKE1hcmtzLmVtcHR5LCBlKV1cblxuICBsZXQgZXF1YWwgeCB5ID1cbiAgICAoeC5oYXNoIDogaW50KSA9IHkuaGFzaCAmJiAoeC5pZHggOiBpbnQpID0geS5pZHggJiZcbiAgICBDYXRlZ29yeS5lcXVhbCB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgJiYgRS5lcXVhbCB4LmRlc2MgeS5kZXNjXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICBsZXQgYyA9IGNvbXBhcmUgKHguaGFzaCA6IGludCkgeS5oYXNoIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICBsZXQgYyA9IENhdGVnb3J5LmNvbXBhcmUgeC5jYXRlZ29yeSB5LmNhdGVnb3J5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgY29tcGFyZSB4LmRlc2MgeS5kZXNjXG5cbiAgdHlwZSB0JyA9IHRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdCdcbiAgICAgIGxldCBlcXVhbCA9IGVxdWFsXG4gICAgICBsZXQgaGFzaCB0ID0gdC5oYXNoXG4gICAgZW5kKVxuZW5kXG5cbigqKioqIEZpbmQgYSBmcmVlIGluZGV4ICoqKiopXG5cbnR5cGUgd29ya2luZ19hcmVhID0gYm9vbCBhcnJheSByZWZcblxubGV0IGNyZWF0ZV93b3JraW5nX2FyZWEgKCkgPSByZWYgW3wgZmFsc2UgfF1cblxubGV0IGluZGV4X2NvdW50IHcgPSBBcnJheS5sZW5ndGggIXdcblxubGV0IHJlc2V0X3RhYmxlIGEgPSBBcnJheS5maWxsIGEgMCAoQXJyYXkubGVuZ3RoIGEpIGZhbHNlXG5cbmxldCByZWMgbWFya191c2VkX2luZGljZXMgdGJsID1cbiAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgfCBFLlRTZXEgKGwsIF8sIF8pIC0+IG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsXG4gICAgICB8IEUuVEV4cCAobWFya3MsIF8pXG4gICAgICB8IEUuVE1hdGNoIG1hcmtzIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIChfLCBpKSAtPiBpZiBpID49IDAgdGhlbiB0YmwuKGkpIDwtIHRydWUpXG4gICAgICAgICAgbWFya3MuTWFya3MubWFya3MpXG5cbmxldCByZWMgZmluZF9mcmVlIHRibCBpZHggbGVuID1cbiAgaWYgaWR4ID0gbGVuIHx8IG5vdCB0YmwuKGlkeCkgdGhlbiBpZHggZWxzZSBmaW5kX2ZyZWUgdGJsIChpZHggKyAxKSBsZW5cblxubGV0IGZyZWVfaW5kZXggdGJsX3JlZiBsID1cbiAgbGV0IHRibCA9ICF0YmxfcmVmIGluXG4gIHJlc2V0X3RhYmxlIHRibDtcbiAgbWFya191c2VkX2luZGljZXMgdGJsIGw7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdGJsIGluXG4gIGxldCBpZHggPSBmaW5kX2ZyZWUgdGJsIDAgbGVuIGluXG4gIGlmIGlkeCA9IGxlbiB0aGVuIHRibF9yZWYgOj0gQXJyYXkubWFrZSAoMiAqIGxlbikgZmFsc2U7XG4gIGlkeFxuXG4oKioqKiBDb21wdXRhdGlvbiBvZiB0aGUgbmV4dCBzdGF0ZSAqKioqKVxuXG5sZXQgcmVtb3ZlX21hdGNoZXMgPSBMaXN0LmZpbHRlciAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcblxubGV0IHJlYyBzcGxpdF9hdF9tYXRjaF9yZWMgbCcgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRS5UTWF0Y2ggXyA6OiByIC0+IChMaXN0LnJldiBsJywgcmVtb3ZlX21hdGNoZXMgcilcbiAgfCB4IDo6IHIgICAgICAgIC0+IHNwbGl0X2F0X21hdGNoX3JlYyAoeCA6OiBsJykgclxuXG5sZXQgc3BsaXRfYXRfbWF0Y2ggbCA9IHNwbGl0X2F0X21hdGNoX3JlYyBbXSBsXG5cbmxldCByZWMgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsIHkgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPlxuICAgIChbXSwgcHJldilcbiAgfCBFLlRNYXRjaCBfIGFzIHggOjogXyAtPiAoKiBUcnVuY2F0ZSBhZnRlciBmaXJzdCBtYXRjaCAqKVxuICAgIChbeF0sIHByZXYpXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIGxldCAobCcnLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwnIHggaW5cbiAgICBsZXQgKHInLCBwcmV2JycpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldicgciB5IGluXG4gICAgKEUudHNlcSBraW5kIGwnJyB4IHInLCBwcmV2JycpXG4gIHwgRS5URXhwIChfbWFya3MsIHtkZWYgPSBFcHM7IF99KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeS5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHkuaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG4gIHwgRS5URXhwIChfbWFya3MsIHgpIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB4LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeC5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcblxubGV0IHJlYyBzZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEUuVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICBFLlRNYXRjaCAoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgRS5UU2VxIChzZXRfaWR4IGlkeCBsJywgeCwga2luZCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVEV4cCAobWFya3MsIHgpIDo6IHIgLT5cbiAgICBFLlRFeHAgKChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCksIHgpIDo6IHNldF9pZHggaWR4IHJcblxubGV0IGZpbHRlcl9tYXJrcyBiIGUgbWFya3MgPVxuICB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IExpc3QuZmlsdGVyIChmdW4gKGksIF8pIC0+IGkgPCBiIHx8IGkgPiBlKSBtYXJrcy5NYXJrcy5tYXJrcyB9XG5cbmxldCByZWMgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICAoKkZvcm1hdC5lcHJpbnRmIFwiJWRALlwiIHguaWQ7KilcbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBzIC0+XG4gICAgaWYgQ3NldC5tZW0gYyBzIHRoZW4gRS50ZXhwIG1hcmtzIGVwc19leHByIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGxldCAoeScnLCBtYXJrcycpID1cbiAgICAgIG1hdGNoXG4gICAgICAgIGZpcnN0XG4gICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHknXG4gICAgICB3aXRoXG4gICAgICAgIE5vbmUgICAgICAgIC0+ICh5JywgbWFya3MpXG4gICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB5JywgbWFya3MnKVxuICAgIGluXG4gICAgYmVnaW4gbWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB5JycgeCAoRS5UTWF0Y2ggbWFya3MnIDo6IHJlbSlcbiAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeScnIHggcmVtXG4gICAgZW5kXG4gIHwgRXBzIC0+XG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IFBtYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MucG1hcmtzID0gUG1hcmsuU2V0LmFkZCBpIG1hcmtzLk1hcmtzLnBtYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgRS5UTWF0Y2ggKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpIDo6IHJlbVxuICB8IEJlZm9yZSBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBuZXh0X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFmdGVyIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IHByZXZfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG5cbmFuZCBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmFuZCBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeSB6IHJlbSA9XG4gIG1hdGNoXG4gICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHlcbiAgd2l0aFxuICAgIE5vbmUgLT5cbiAgICBFLnRzZXEga2luZCB5IHogcmVtXG4gIHwgU29tZSBtYXJrcyAtPlxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgYExvbmdlc3QgLT5cbiAgICAgIEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IHJlbSlcbiAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgelxuICAgICAgICAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogcmVtKVxuICAgIHwgYEZpcnN0IC0+XG4gICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgRS50c2VxIGtpbmQgeScgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiAoRS50c2VxIGtpbmQgeScnIHogcmVtKSlcblxubGV0IHJlYyBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICB4IDo6IHJlbVxuXG5hbmQgZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5sZXQgZGVsdGEgdGJsX3JlZiBuZXh0X2NhdCBjaGFyIHN0ID1cbiAgbGV0IHByZXZfY2F0ID0gc3QuU3RhdGUuY2F0ZWdvcnkgaW5cbiAgbGV0IChleHByJywgXykgPVxuICAgIHJlbW92ZV9kdXBsaWNhdGVzIFtdXG4gICAgICAoZGVsdGFfNCBjaGFyIH5uZXh0X2NhdCB+cHJldl9jYXQgc3QuU3RhdGUuZGVzYyBbXSlcbiAgICAgIGVwc19leHByIGluXG4gIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gIFN0YXRlLm1rIGlkeCBuZXh0X2NhdCBleHByJydcblxuKCoqKiopXG5cbmxldCByZWMgcmVkX3RyID0gZnVuY3Rpb25cbiAgfCBbXSB8IFtfXSBhcyBsIC0+XG4gICAgbFxuICB8ICgoczEsIHN0MSkgYXMgdHIxKSA6OiAoKHMyLCBzdDIpIGFzIHRyMikgOjogcmVtIC0+XG4gICAgaWYgU3RhdGUuZXF1YWwgc3QxIHN0MiB0aGVuXG4gICAgICByZWRfdHIgKChDc2V0LnVuaW9uIHMxIHMyLCBzdDEpIDo6IHJlbSlcbiAgICBlbHNlXG4gICAgICB0cjEgOjogcmVkX3RyICh0cjIgOjogcmVtKVxuXG5sZXQgc2ltcGxfdHIgbCA9XG4gIExpc3Quc29ydFxuICAgIChmdW4gKHMxLCBfKSAoczIsIF8pIC0+IGNvbXBhcmUgczEgczIpXG4gICAgKHJlZF90ciAoTGlzdC5zb3J0IChmdW4gKF8sIHN0MSkgKF8sIHN0MikgLT4gU3RhdGUuY29tcGFyZSBzdDEgc3QyKSBsKSlcblxuKCoqKiopXG5cbmxldCBwcmVwZW5kX2Rlcml2ID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIHgpIGwgLT4gQ3NldC5wcmVwZW5kIHMgeCBsKVxuXG5sZXQgcmVjIHJlc3RyaWN0IHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKHMnLCB4JykgOjogcmVtIC0+XG4gICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgdGhlbiByZXN0cmljdCBzIHJlbVxuICAgIGVsc2UgKHMnJywgeCcpIDo6IHJlc3RyaWN0IHMgcmVtXG5cbmxldCByZWMgcmVtb3ZlX21hcmtzIGIgZSByZW0gPVxuICBpZiBiID4gZSB0aGVuIHJlbSBlbHNlIHJlbW92ZV9tYXJrcyBiIChlIC0gMSkgKChlLCAtMikgOjogcmVtKVxuXG5sZXQgcmVjIHByZXBlbmRfbWFya3NfZXhwciBtID0gZnVuY3Rpb25cbiAgfCBFLlRTZXEgKGwsIGUnLCBzKSAtPiBFLlRTZXEgKHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsLCBlJywgcylcbiAgfCBFLlRFeHAgKG0nLCBlJykgICAtPiBFLlRFeHAgKE1hcmtzLm1lcmdlIG0gbScsIGUnKVxuICB8IEUuVE1hdGNoIG0nICAgICAgIC0+IEUuVE1hdGNoIChNYXJrcy5tZXJnZSBtIG0nKVxuXG5hbmQgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwgPVxuICBMaXN0Lm1hcCAocHJlcGVuZF9tYXJrc19leHByIG0pIGxcblxubGV0IHByZXBlbmRfbWFya3MgbSA9XG4gIExpc3QubWFwIChmdW4gKHMsIHgpIC0+IChzLCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0geCkpXG5cbmxldCByZWMgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gIHwgQ3N0IHMgLT5cbiAgICBDc2V0LnByZXBlbmQgcyBbRS50ZXhwIG1hcmtzIGVwc19leHByXSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHopIHJlbSAtPlxuICAgICAgICAgbGV0ICh6JywgbWFya3MnKSA9XG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgZmlyc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgICAgelxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgTm9uZSAgICAgICAgLT4gKHosIG1hcmtzKVxuICAgICAgICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB6LCBtYXJrcycpXG4gICAgICAgICBpblxuICAgICAgICAgQ3NldC5wcmVwZW5kIHNcbiAgICAgICAgICAgKG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeicgeCBbRS5UTWF0Y2ggbWFya3MnXVxuICAgICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB6JyB4IFtdKVxuICAgICAgICAgICByZW0pXG4gICAgICB5JyByZW1cbiAgfCBFcHMgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAoKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgUG1hcmsgXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzXG4gICAgICBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAocmVtb3ZlX21hcmtzIGIgZSAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgQmVmb3JlIGNhdCcgLT5cbiAgICBDc2V0LnByZXBlbmQgKExpc3QuYXNzcSBjYXQnIGNhdGVnb3JpZXMpIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgQWZ0ZXIgY2F0JyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBjYXQgY2F0JyB0aGVuIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW0gZWxzZSByZW1cblxuYW5kIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHIgcmVtKVxuXG5hbmQgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHkgeiByZW0gPVxuICBpZlxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIChfcywgeGwpIC0+XG4gICAgICAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgeGwpXG4gICAgICB5XG4gIHRoZW5cbiAgICBsZXQgeicgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIE1hcmtzLmVtcHR5IGNhdCB6IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB5KSByZW0gLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgIHlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgICAgTm9uZSAtPlxuICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeSB6IFtdKSByZW1cbiAgICAgICAgIHwgU29tZSBtYXJrcyAtPlxuICAgICAgICAgICBsZXQgeicnID0gcHJlcGVuZF9tYXJrcyBtYXJrcyB6JyBpblxuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICBgTG9uZ2VzdCAtPlxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIHJlbSlcbiAgICAgICAgICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSByZW0pXG4gICAgICAgICAgIHwgYEZpcnN0IC0+XG4gICAgICAgICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknJyB6IFtdKSByZW0pKSlcbiAgICAgIHkgcmVtXG4gIGVsc2VcbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHhsKSByZW0gLT4gQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHhsIHogW10pIHJlbSkgeSByZW1cblxubGV0IHJlYyBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFt4XSByZW1cblxuYW5kIGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHIgcmVtKVxuXG5sZXQgZGVyaXYgdGJsX3JlZiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdCA9XG4gIGxldCBkZXIgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0LlN0YXRlLmNhdGVnb3J5IHN0LlN0YXRlLmRlc2NcbiAgICAgIFsoYWxsX2NoYXJzLCBbXSldIGluXG4gIHNpbXBsX3RyIChcbiAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgZXhwcikgcmVtIC0+XG4gICAgICAgIGxldCAoZXhwcicsIF8pID0gcmVtb3ZlX2R1cGxpY2F0ZXMgW10gZXhwciBlcHNfZXhwciBpblxuKCpcbkZvcm1hdC5lcHJpbnRmIFwiQFs8Mz5AWyVhQF06ICVhIC8gJWFAXUAuXCIgQ3NldC5wcmludCBzIHByaW50X3N0YXRlIGV4cHIgcHJpbnRfc3RhdGUgZXhwcic7XG4qKVxuICAgICAgICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gICAgICAgIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAoY2F0JywgcycpIHJlbSAtPlxuICAgICAgICAgICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgICAgICAgICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICAgICAgICAgIHRoZW4gcmVtXG4gICAgICAgICAgICBlbHNlIChzJycsIFN0YXRlLm1rIGlkeCBjYXQnIGV4cHInJykgOjogcmVtKVxuICAgICAgICAgIGNhdGVnb3JpZXMgcmVtKSBkZXIgW10pXG5cbigqKioqKVxuXG5sZXQgZmxhdHRlbl9tYXRjaCBtID1cbiAgbGV0IG1hID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtYSAoaSwgXykgLT4gbWF4IG1hIGkpICgtMSkgbSBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobWEgKyAxKSAoLTEpIGluXG4gIExpc3QuaXRlciAoZnVuIChpLCB2KSAtPiByZXMuKGkpIDwtIHYpIG07XG4gIHJlc1xuXG5sZXQgc3RhdHVzIHMgPVxuICBtYXRjaCBzLlN0YXRlLnN0YXR1cyB3aXRoXG4gICAgU29tZSBzdCAtPlxuICAgIHN0XG4gIHwgTm9uZSAtPlxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBzLlN0YXRlLmRlc2Mgd2l0aFxuICAgICAgICBbXSAgICAgICAgICAgICAgLT4gRmFpbGVkXG4gICAgICB8IEUuVE1hdGNoIG0gOjogXyAtPiBNYXRjaCAoZmxhdHRlbl9tYXRjaCBtLk1hcmtzLm1hcmtzLCBtLk1hcmtzLnBtYXJrcylcbiAgICAgIHwgXyAgICAgICAgICAgICAgIC0+IFJ1bm5pbmdcbiAgICBpblxuICAgIHMuU3RhdGUuc3RhdHVzIDwtIFNvbWUgc3Q7XG4gICAgc3RcbiIsIigqIEluIHJlYWxpdHksIHRoaXMgY2FuIHJlYWxseSBiZSByZXByZXNlbnRlZCBhcyBhIGJvb2wgYXJyYXkuXG5cbiAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBiZXN0IHRob3VnaHQgb2YgYXMgYSBsaXN0IG9mIGFsbCBjaGFycyBhbG9uZyB3aXRoIGFcbiAgIGZsYWc6XG5cbiAgIChhLCAwKSwgKGIsIDEpLCAoYywgMCksIChkLCAwKSwgLi4uXG5cbiAgIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGNvbG9yIGFyZSByZXByZXNlbnRlZCBieSBzZXF1bmNlcyBvZlxuICAgY2hhcmFjdGVycyB3aXRoIHRoZSBmbGFnIHNldCB0byAwLlxuKilcblxudHlwZSB0ID0gQnl0ZXMudFxuXG5sZXQgbWFrZSAoKSA9IEJ5dGVzLm1ha2UgMjU3ICdcXDAwMCdcblxubGV0IGZsYXR0ZW4gY20gPVxuICBsZXQgYyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGNvbG9yX3JlcHIgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCB2ID0gcmVmIDAgaW5cbiAgQnl0ZXMuc2V0IGMgMCAnXFwwMDAnO1xuICBCeXRlcy5zZXQgY29sb3JfcmVwciAwICdcXDAwMCc7XG4gIGZvciBpID0gMSB0byAyNTUgZG9cbiAgICBpZiBCeXRlcy5nZXQgY20gaSA8PiAnXFwwMDAnIHRoZW4gaW5jciB2O1xuICAgIEJ5dGVzLnNldCBjIGkgKENoYXIuY2hyICF2KTtcbiAgICBCeXRlcy5zZXQgY29sb3JfcmVwciAhdiAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYywgQnl0ZXMuc3ViX3N0cmluZyBjb2xvcl9yZXByIDAgKCF2ICsgMSksICF2ICsgMSlcblxuKCogbWFyayBhbGwgdGhlIGVuZHBvaW50cyBvZiB0aGUgaW50ZXJ2YWxzIG9mIHRoZSBjaGFyIHNldCB3aXRoIHRoZSAxIGJ5dGUgKilcbmxldCBzcGxpdCBzIGNtID1cbiAgQ3NldC5pdGVyIHMgfmY6KGZ1biBpIGogLT5cbiAgICAgIEJ5dGVzLnNldCBjbSBpICdcXDAwMSc7XG4gICAgICBCeXRlcy5zZXQgY20gKGogKyAxKSAnXFwwMDEnO1xuICAgIClcbiIsIigqIFJlc3VsdCBvZiBhIHN1Y2Nlc3NmdWwgbWF0Y2guICopXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtYXJrcyA6IEF1dG9tYXRhLm1hcmtfaW5mb3NcbiAgOyBwbWFya3MgOiBQbWFyay5TZXQudFxuICA7IGdwb3MgOiBpbnQgYXJyYXlcbiAgOyBnY291bnQgOiBpbnRcbiAgfVxuXG5sZXQgb2Zmc2V0IHQgaSA9XG4gIGlmIDIgKiBpICsgMSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gIGlmIG0xID0gLTEgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgKHAxLCBwMilcblxubGV0IGdldCB0IGkgPVxuICBsZXQgKHAxLCBwMikgPSBvZmZzZXQgdCBpIGluXG4gIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuXG5sZXQgc3RhcnQgc3VicyBpID0gZnN0IChvZmZzZXQgc3VicyBpKVxuXG5sZXQgc3RvcCBzdWJzIGkgPSBzbmQgKG9mZnNldCBzdWJzIGkpXG5cbmxldCB0ZXN0IHQgaSA9XG4gIGlmIDIgKiBpID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW5cbiAgICBmYWxzZVxuICBlbHNlXG4gICAgbGV0IGlkeCA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlkeCA8PiAtMVxuXG5sZXQgZ2V0X29wdCB0IGkgPVxuICBpZiB0ZXN0IHQgaVxuICB0aGVuIFNvbWUgKGdldCB0IGkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZHVtbXlfb2Zmc2V0ID0gKC0xLCAtMSlcblxubGV0IGFsbF9vZmZzZXQgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X29mZnNldCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIChwMSwgcDIpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZHVtbXlfc3RyaW5nID0gXCJcIlxuXG5sZXQgYWxsIHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9zdHJpbmcgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBwcCBmbXQgdCA9XG4gIGxldCBtYXRjaGVzID1cbiAgICBsZXQgb2Zmc2V0cyA9IGFsbF9vZmZzZXQgdCBpblxuICAgIGxldCBzdHJzID0gYWxsIHQgaW5cbiAgICBBcnJheS50b19saXN0IChcbiAgICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBzdHJzKSAoZnVuIGkgLT4gc3Rycy4oaSksIG9mZnNldHMuKGkpKVxuICAgICkgaW5cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCBwcF9tYXRjaCBmbXQgKHN0ciwgKHN0YXJ0LCBzdG9wKSkgPVxuICAgIGZwcmludGYgZm10IFwiQFsoJXMgKCVkICVkKSlAXVwiIHN0ciBzdGFydCBzdG9wIGluXG4gIHNleHAgZm10IFwiR3JvdXBcIiAobGlzdCBwcF9tYXRjaCkgbWF0Y2hlc1xuXG5sZXQgbmJfZ3JvdXBzIHQgPSB0Lmdjb3VudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubGV0IHJlYyBpdGVyIG4gZiB2ID0gaWYgbiA9IDAgdGhlbiB2IGVsc2UgaXRlciAobiAtIDEpIGYgKGYgdilcblxuKCoqKiopXG5cbmxldCB1bmtub3duID0gLTJcbmxldCBicmVhayA9IC0zXG5cbnR5cGUgbWF0Y2hfaW5mbyA9XG4gIHwgTWF0Y2ggb2YgR3JvdXAudFxuICB8IEZhaWxlZFxuICB8IFJ1bm5pbmcgb2YgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIDogaW50IH1cblxudHlwZSBzdGF0ZSA9XG4gIHsgaWR4IDogaW50O1xuICAgICgqIEluZGV4IG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBwb3NpdGlvbiB0YWJsZS5cbiAgICAgICBOb3QgeWV0IGNvbXB1dGVkIHRyYW5zaXRpb25zIHBvaW50IHRvIGEgZHVtbXkgc3RhdGUgd2hlcmVcbiAgICAgICBbaWR4XSBpcyBzZXQgdG8gW3Vua25vd25dO1xuICAgICAgIElmIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdIGZvciBzdGF0ZXMgdGhhdCBlaXRoZXIgYWx3YXlzXG4gICAgICAgc3VjY2VlZCBvciBhbHdheXMgZmFpbC4gKilcbiAgICByZWFsX2lkeCA6IGludDtcbiAgICAoKiBUaGUgcmVhbCBpbmRleCwgaW4gY2FzZSBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSAqKVxuICAgIG5leHQgOiBzdGF0ZSBhcnJheTtcbiAgICAoKiBUcmFuc2l0aW9uIHRhYmxlLCBpbmRleGVkIGJ5IGNvbG9yICopXG4gICAgbXV0YWJsZSBmaW5hbCA6XG4gICAgICAoQ2F0ZWdvcnkudCAqXG4gICAgICAgKEF1dG9tYXRhLmlkeCAqIEF1dG9tYXRhLnN0YXR1cykpIGxpc3Q7XG4gICAgKCogTWFwcGluZyBmcm9tIHRoZSBjYXRlZ29yeSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9cbiAgICAgICAtIHRoZSBpbmRleCB3aGVyZSB0aGUgbmV4dCBwb3NpdGlvbiBzaG91bGQgYmUgc2F2ZWRcbiAgICAgICAtIHBvc3NpYmx5LCB0aGUgbGlzdCBvZiBtYXJrcyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMpXG4gICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBiZXN0IG1hdGNoICopXG4gICAgZGVzYyA6IEF1dG9tYXRhLlN0YXRlLnRcbiAgICAoKiBEZXNjcmlwdGlvbiBvZiB0aGlzIHN0YXRlIG9mIHRoZSBhdXRvbWF0YSAqKSB9XG5cbigqIEF1dG9tYXRhIChjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24pICopXG50eXBlIHJlID1cbiAgeyBpbml0aWFsIDogQXV0b21hdGEuZXhwcjtcbiAgICAoKiBUaGUgd2hvbGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3N0YXRlcyA6IChDYXRlZ29yeS50ICogc3RhdGUpIGxpc3Q7XG4gICAgKCogSW5pdGlhbCBzdGF0ZXMsIGluZGV4ZWQgYnkgaW5pdGlhbCBjYXRlZ29yeSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAqKVxuICAgIGNvbG9yX3JlcHIgOiBzdHJpbmc7XG4gICAgKCogVGFibGUgZnJvbSBjb2xvcnMgdG8gb25lIGNoYXJhY3RlciBvZiB0aGlzIGNvbG9yICopXG4gICAgbmNvbG9yIDogaW50O1xuICAgICgqIE51bWJlciBvZiBjb2xvcnMuICopXG4gICAgbG5sIDogaW50O1xuICAgICgqIENvbG9yIG9mIHRoZSBsYXN0IG5ld2xpbmUuIC0xIGlmIHVubmVjZXNzYXJ5ICopXG4gICAgdGJsIDogQXV0b21hdGEud29ya2luZ19hcmVhO1xuICAgICgqIFRlbXBvcmFyeSB0YWJsZSB1c2VkIHRvIGNvbXB1dGUgdGhlIGZpcnN0IGF2YWlsYWJsZSBpbmRleFxuICAgICAgIHdoZW4gY29tcHV0aW5nIGEgbmV3IHN0YXRlICopXG4gICAgc3RhdGVzIDogc3RhdGUgQXV0b21hdGEuU3RhdGUuVGFibGUudDtcbiAgICAoKiBTdGF0ZXMgb2YgdGhlIGRldGVybWluaXN0aWMgYXV0b21hdGEgKilcbiAgICBncm91cF9uYW1lcyA6IChzdHJpbmcgKiBpbnQpIGxpc3Q7XG4gICAgKCogTmFtZWQgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBncm91cF9jb3VudCA6IGludFxuICAgICgqIE51bWJlciBvZiBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKSB9XG5cbmxldCBwcF9yZSBjaCByZSA9IEF1dG9tYXRhLnBwIGNoIHJlLmluaXRpYWxcblxubGV0IHByaW50X3JlID0gcHBfcmVcblxubGV0IGdyb3VwX2NvdW50IHJlID0gcmUuZ3JvdXBfY291bnRcblxubGV0IGdyb3VwX25hbWVzIHJlID0gcmUuZ3JvdXBfbmFtZXNcblxuKCogSW5mb3JtYXRpb24gdXNlZCBkdXJpbmcgbWF0Y2hpbmcgKilcbnR5cGUgaW5mbyA9XG4gIHsgcmUgOiByZTtcbiAgICAoKiBUaGUgYXV0b21hdGEgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKFt4LmNvbG9ycyA9IHgucmUuY29sb3JzXSlcbiAgICAgICBTaG9ydGN1dCB1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgbXV0YWJsZSBwb3NpdGlvbnMgOiBpbnQgYXJyYXk7XG4gICAgKCogQXJyYXkgb2YgbWFyayBwb3NpdGlvbnNcbiAgICAgICBUaGUgbWFyayBhcmUgb2ZmIGJ5IG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIHBvcyA6IGludDtcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggaXMgc3RhcnRlZCAqKVxuICAgIGxhc3QgOiBpbnRcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggc2hvdWxkIHN0b3AgKikgfVxuXG5cbigqKioqKVxuXG5sZXQgY2F0ZWdvcnkgcmUgfmNvbG9yID1cbiAgaWYgY29sb3IgPSAtMSB0aGVuXG4gICAgQ2F0ZWdvcnkuaW5leGlzdGFudFxuICAgICgqIFNwZWNpYWwgY2F0ZWdvcnkgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgZWxzZSBpZiBjb2xvciA9IHJlLmxubCB0aGVuXG4gICAgQ2F0ZWdvcnkuKGxhc3RuZXdsaW5lICsrIG5ld2xpbmUgKysgbm90X2xldHRlcilcbiAgZWxzZVxuICAgIENhdGVnb3J5LmZyb21fY2hhciAocmUuY29sb3JfcmVwci5bY29sb3JdKVxuXG4oKioqKilcblxubGV0IGR1bW15X25leHQgPSBbfHxdXG5cbmxldCB1bmtub3duX3N0YXRlID1cbiAgeyBpZHggPSB1bmtub3duOyByZWFsX2lkeCA9IDA7XG4gICAgbmV4dCA9IGR1bW15X25leHQ7IGZpbmFsID0gW107XG4gICAgZGVzYyA9IEF1dG9tYXRhLlN0YXRlLmR1bW15IH1cblxubGV0IG1rX3N0YXRlIG5jb2wgZGVzYyA9XG4gIGxldCBicmVha19zdGF0ZSA9XG4gICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIGRlc2Mgd2l0aFxuICAgIHwgQXV0b21hdGEuUnVubmluZyAtPiBmYWxzZVxuICAgIHwgQXV0b21hdGEuRmFpbGVkXG4gICAgfCBBdXRvbWF0YS5NYXRjaCBfIC0+IHRydWVcbiAgaW5cbiAgeyBpZHggPSBpZiBicmVha19zdGF0ZSB0aGVuIGJyZWFrIGVsc2UgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgcmVhbF9pZHggPSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICBuZXh0ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBkdW1teV9uZXh0IGVsc2UgQXJyYXkubWFrZSBuY29sIHVua25vd25fc3RhdGU7XG4gICAgZmluYWwgPSBbXTtcbiAgICBkZXNjIH1cblxubGV0IGZpbmRfc3RhdGUgcmUgZGVzYyA9XG4gIHRyeVxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmZpbmQgcmUuc3RhdGVzIGRlc2NcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBta19zdGF0ZSByZS5uY29sb3IgZGVzYyBpblxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmFkZCByZS5zdGF0ZXMgZGVzYyBzdDtcbiAgICBzdFxuXG4oKioqKiBNYXRjaCB3aXRoIG1hcmtzICoqKiopXG5cbmxldCBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgPVxuICBsZXQgZGVzYyA9IEF1dG9tYXRhLmRlbHRhIGluZm8ucmUudGJsIGNhdCBjb2xvciBzdC5kZXNjIGluXG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaW5mby5wb3NpdGlvbnMgaW5cbiAgaWYgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHggPSBsZW4gJiYgbGVuID4gMCB0aGVuIGJlZ2luXG4gICAgbGV0IHBvcyA9IGluZm8ucG9zaXRpb25zIGluXG4gICAgaW5mby5wb3NpdGlvbnMgPC0gQXJyYXkubWFrZSAoMiAqIGxlbikgMDtcbiAgICBBcnJheS5ibGl0IHBvcyAwIGluZm8ucG9zaXRpb25zIDAgbGVuXG4gIGVuZDtcbiAgZGVzY1xuXG5sZXQgdmFsaWRhdGUgaW5mbyAoczpzdHJpbmcpIH5wb3Mgc3QgPVxuICBsZXQgY29sb3IgPSBDaGFyLmNvZGUgKGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgaW5cbiAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnXG5cbmxldCByZWMgbG9vcCBpbmZvIHMgfnBvcyBzdCA9XG4gIGlmIHBvcyA8IGluZm8ubGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGxldCBpZHggPSBzdCcuaWR4IGluXG4gICAgaWYgaWR4ID49IDAgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gcG9zO1xuICAgICAgbG9vcCBpbmZvIHMgfnBvczoocG9zICsgMSkgc3QnXG4gICAgZW5kIGVsc2UgaWYgaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgICAgc3QnXG4gICAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wIGluZm8gcyB+cG9zIHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgcmVjIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdCA9XG4gIGlmIHBvcyA8IGxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBpZiBzdCcuaWR4ID49IDAgdGhlblxuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zOihwb3MgKyAxKSB+bGFzdCBzdCdcbiAgICBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdCdcbiAgICBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgZmluYWwgaW5mbyBzdCBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHN0LmZpbmFsXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0JyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjooLTEpIHN0IGluXG4gICAgbGV0IHJlcyA9IChzdCcuQXV0b21hdGEuU3RhdGUuaWR4LCBBdXRvbWF0YS5zdGF0dXMgc3QnKSBpblxuICAgIHN0LmZpbmFsIDwtIChjYXQsIHJlcykgOjogc3QuZmluYWw7XG4gICAgcmVzXG5cbmxldCBmaW5kX2luaXRpYWxfc3RhdGUgcmUgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCByZS5pbml0aWFsX3N0YXRlc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IGZpbmRfc3RhdGUgcmUgKEF1dG9tYXRhLlN0YXRlLmNyZWF0ZSBjYXQgcmUuaW5pdGlhbCkgaW5cbiAgICByZS5pbml0aWFsX3N0YXRlcyA8LSAoY2F0LCBzdCkgOjogcmUuaW5pdGlhbF9zdGF0ZXM7XG4gICAgc3RcblxubGV0IGdldF9jb2xvciByZSAoczpzdHJpbmcpIHBvcyA9XG4gIGlmIHBvcyA8IDAgdGhlblxuICAgIC0xXG4gIGVsc2VcbiAgICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGlmIHBvcyA+PSBzbGVuIHRoZW5cbiAgICAgIC0xXG4gICAgZWxzZSBpZiBwb3MgPSBzbGVuIC0gMSAmJiByZS5sbmwgPD4gLTEgJiYgcy5bcG9zXSA9ICdcXG4nIHRoZW5cbiAgICAgICgqIFNwZWNpYWwgY2FzZSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICAgICAgcmUubG5sXG4gICAgZWxzZVxuICAgICAgQ2hhci5jb2RlIHJlLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dXG5cbmxldCByZWMgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3VwcyA9XG4gIGxldCBzdCcgPSBzdC5uZXh0LihpbmZvLnJlLmxubCkgaW5cbiAgaWYgc3QnLmlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLmlkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgIGxldCBjb2xvciA9IGluZm8ucmUubG5sIGluXG4gICAgbGV0IHJlYWxfYyA9IENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlICdcXG4nXSBpblxuICAgIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICAgIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjpyZWFsX2Mgc3QgaW5cbiAgICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gICAgc3QubmV4dC4oY29sb3IpIDwtIHN0JztcbiAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzXG4gIGVuZFxuXG5sZXQgcmVjIHNjYW5fc3RyIGluZm8gKHM6c3RyaW5nKSBpbml0aWFsX3N0YXRlIH5ncm91cHMgPVxuICBsZXQgcG9zID0gaW5mby5wb3MgaW5cbiAgbGV0IGxhc3QgPSBpbmZvLmxhc3QgaW5cbiAgaWYgKGxhc3QgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICYmIGluZm8ucmUubG5sIDw+IC0xXG4gICAgICAmJiBsYXN0ID4gcG9zXG4gICAgICAmJiBTdHJpbmcuZ2V0IHMgKGxhc3QgLSAxKSA9ICdcXG4nKVxuICB0aGVuIGJlZ2luXG4gICAgbGV0IGluZm8gPSB7IGluZm8gd2l0aCBsYXN0ID0gbGFzdCAtIDEgfSBpblxuICAgIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgICBpZiBzdC5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdFxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zOihsYXN0IC0gMSkgc3Qgfmdyb3Vwc1xuICBlbmQgZWxzZSBpZiBncm91cHMgdGhlblxuICAgIGxvb3AgaW5mbyBzIH5wb3MgaW5pdGlhbF9zdGF0ZVxuICBlbHNlXG4gICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IGluaXRpYWxfc3RhdGVcblxuKCogVGhpcyBmdW5jdGlvbiBhZGRzIGEgZmluYWwgYm91bmRhcnkgY2hlY2sgb24gdGhlIGlucHV0LlxuICAgVGhpcyBpcyB1c2VmdWwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGZhaWxlZCBiZWNhdXNlXG4gICBvZiBpbnN1ZmZpY2llbnQgaW5wdXQsIG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBvdXRwdXQgYWN0dWFsbHlcbiAgIG1hdGNoZXMgZm9yIHJlZ2V4IHRoYXQgaGF2ZSBib3VuZGFyeSBjb25kaXRpb25zIHdpdGggcmVzcGVjdFxuICAgdG8gdGhlIGlucHV0IHN0cmluZy5cbiAqKVxubGV0IGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgPVxuICBsZXQgZmluYWxfY2F0ID1cbiAgICBpZiBsYXN0ID0gc2xlbiB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIGxhc3QpKVxuICBpblxuICBsZXQgKGlkeCwgcmVzKSA9IGZpbmFsIGluZm8gc3QgZmluYWxfY2F0IGluXG4gIChtYXRjaCBncm91cHMsIHJlcyB3aXRoXG4gIHwgdHJ1ZSwgTWF0Y2ggXyAtPiBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBsYXN0XG4gIHwgXyAtPiAoKSk7XG4gIHJlc1xuXG5sZXQgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW4gPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGFzdCA9IGlmIGxlbiA9IC0xIHRoZW4gc2xlbiBlbHNlIHBvcyArIGxlbiBpblxuICBsZXQgaW5mbyA9XG4gICAgeyByZSA7IGNvbG9ycyA9IHJlLmNvbG9yczsgcG9zIDsgbGFzdFxuICAgIDsgcG9zaXRpb25zID1cbiAgICAgICAgaWYgZ3JvdXBzIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEF1dG9tYXRhLmluZGV4X2NvdW50IHJlLnRibCArIDEgaW5cbiAgICAgICAgICBpZiBuIDw9IDEwIHRoZW5cbiAgICAgICAgICAgIFt8MDswOzA7MDswOzA7MDswOzA7MHxdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkubWFrZSBuIDBcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBbfHxdIH1cbiAgaW5cbiAgbGV0IGluaXRpYWxfY2F0ID1cbiAgICBpZiBwb3MgPSAwIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyAocG9zIC0gMSkpKVxuICBpblxuICBsZXQgaW5pdGlhbF9zdGF0ZSA9IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBpbml0aWFsX2NhdCBpblxuICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gIGxldCByZXMgPVxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHx8IChwYXJ0aWFsICYmIG5vdCBncm91cHMpIHRoZW5cbiAgICAgIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjXG4gICAgZWxzZSBpZiBwYXJ0aWFsICYmIGdyb3VwcyB0aGVuXG4gICAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzYyB3aXRoXG4gICAgICB8IE1hdGNoIF8gfCBGYWlsZWQgYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgfCBSdW5uaW5nIC0+XG4gICAgICAgICgqIFRoaXMgY291bGQgYmUgYmVjYXVzZSBpdCdzIHN0aWxsIG5vdCBmdWxseSBtYXRjaGVkLCBvciBpdFxuICAgICAgICAgICBjb3VsZCBiZSB0aGF0IGJlY2F1c2Ugd2UgbmVlZCB0byBydW4gc3BlY2lhbCBlbmQgb2YgaW5wdXRcbiAgICAgICAgICAgY2hlY2tzLiAqKVxuICAgICAgICAobWF0Y2ggZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyB3aXRoXG4gICAgICAgICB8IE1hdGNoIF8gYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgICAgfCBGYWlsZWQgfCBSdW5uaW5nIC0+XG4gICAgICAgICAgICgqIEEgZmFpbHVyZSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB3ZSBuZWVkIG1vcmUgZGF0YSwgaS5lLlxuICAgICAgICAgICAgICBpdCdzIGEgcGFydGlhbCBtYXRjaC4gKilcbiAgICAgICAgICAgUnVubmluZylcbiAgICBlbHNlIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgICBBdXRvbWF0YS5NYXRjaCAobWFya3MsIHBtYXJrcykgLT5cbiAgICBNYXRjaCB7IHMgOyBtYXJrczsgcG1hcmtzIDsgZ3BvcyA9IGluZm8ucG9zaXRpb25zOyBnY291bnQgPSByZS5ncm91cF9jb3VudH1cbiAgfCBBdXRvbWF0YS5GYWlsZWQgLT4gRmFpbGVkXG4gIHwgQXV0b21hdGEuUnVubmluZyAtPlxuICAgIGxldCBub19tYXRjaF9zdGFydHNfYmVmb3JlID0gaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKDApIGVsc2UgMCBpblxuICAgIFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH1cblxubGV0IG1rX3JlIH5pbml0aWFsIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lcyB+Z3JvdXBfY291bnQgPVxuICB7IGluaXRpYWwgO1xuICAgIGluaXRpYWxfc3RhdGVzID0gW107XG4gICAgY29sb3JzO1xuICAgIGNvbG9yX3JlcHI7XG4gICAgbmNvbG9yO1xuICAgIGxubDtcbiAgICB0YmwgPSBBdXRvbWF0YS5jcmVhdGVfd29ya2luZ19hcmVhICgpO1xuICAgIHN0YXRlcyA9IEF1dG9tYXRhLlN0YXRlLlRhYmxlLmNyZWF0ZSA5NztcbiAgICBncm91cF9uYW1lcztcbiAgICBncm91cF9jb3VudCB9XG5cbigqKioqIENoYXJhY3RlciBzZXRzICoqKiopXG5cbmxldCBjc2VxIGMgYycgPSBDc2V0LnNlcSAoQ2hhci5jb2RlIGMpIChDaGFyLmNvZGUgYycpXG5sZXQgY2FkZCBjIHMgPSBDc2V0LmFkZCAoQ2hhci5jb2RlIGMpIHNcblxubGV0IHRyYW5zX3NldCBjYWNoZSBjbSBzID1cbiAgbWF0Y2ggQ3NldC5vbmVfY2hhciBzIHdpdGhcbiAgfCBTb21lIGkgLT4gQ3NldC5jc2luZ2xlIGNtLltpXVxuICB8IE5vbmUgLT5cbiAgICBsZXQgdiA9IChDc2V0Lmhhc2hfcmVjIHMsIHMpIGluXG4gICAgdHJ5XG4gICAgICBDc2V0LkNTZXRNYXAuZmluZCB2ICFjYWNoZVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgbCA9XG4gICAgICAgIENzZXQuZm9sZF9yaWdodFxuICAgICAgICAgIHNcbiAgICAgICAgICB+ZjooZnVuIChpLCBqKSBsIC0+IENzZXQudW5pb24gKGNzZXEgY20uW2ldIGNtLltqXSkgbClcbiAgICAgICAgICB+aW5pdDpDc2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgY2FjaGUgOj0gQ3NldC5DU2V0TWFwLmFkZCB2IGwgIWNhY2hlO1xuICAgICAgbFxuXG4oKioqKilcblxudHlwZSByZWdleHAgPVxuICAgIFNldCBvZiBDc2V0LnRcbiAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxubW9kdWxlIFZpZXcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVnZXhwID1cbiAgICAgIFNldCBvZiBDc2V0LnRcbiAgICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICAgIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gICAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gICAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gICAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICAgIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICAgIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxuICBsZXQgdmlldyB0ID0gdFxuZW5kXG5cbmxldCByZWMgcHAgZm10IHQgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHZhciBzIHJlID0gc2V4cCBmbXQgcyBwcCByZSBpblxuICBsZXQgc2VxIHMgcmVsID0gc2V4cCBmbXQgcyAobGlzdCBwcCkgcmVsIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNldCBzIC0+ICBzZXhwIGZtdCBcIlNldFwiIENzZXQucHAgc1xuICB8IFNlcXVlbmNlIHNxIC0+IHNlcSBcIlNlcXVlbmNlXCIgc3FcbiAgfCBBbHRlcm5hdGl2ZSBhbHQgLT4gc2VxIFwiQWx0ZXJuYXRpdmVcIiBhbHRcbiAgfCBSZXBlYXQgKHJlLCBzdGFydCwgc3RvcCkgLT5cbiAgICBsZXQgcHAnIGZtdCAoKSA9IGZwcmludGYgZm10IFwiJWFAICVkJWFcIiBwcCByZSAgIHN0YXJ0ICAgb3B0aW50IHN0b3AgaW5cbiAgICBzZXhwIGZtdCBcIlJlcGVhdFwiIHBwJyAoKVxuICB8IEJlZ19vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9saW5lXCJcbiAgfCBFbmRfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2ZfbGluZVwiXG4gIHwgQmVnX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3dvcmRcIlxuICB8IEVuZF9vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl93b3JkXCJcbiAgfCBOb3RfYm91bmQgICAgICAgIC0+IHN0ciBmbXQgXCJOb3RfYm91bmRcIlxuICB8IEJlZ19vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9zdHJcIlxuICB8IEVuZF9vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9zdHJcIlxuICB8IExhc3RfZW5kX29mX2xpbmUgLT4gc3RyIGZtdCBcIkxhc3RfZW5kX29mX2xpbmVcIlxuICB8IFN0YXJ0ICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0YXJ0XCJcbiAgfCBTdG9wICAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdG9wXCJcbiAgfCBTZW0gKHNlbSwgcmUpICAgIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1cIiAocGFpciBBdXRvbWF0YS5wcF9zZW0gcHApIChzZW0sIHJlKVxuICB8IFNlbV9ncmVlZHkgKGssIHJlKSAtPlxuICAgIHNleHAgZm10IFwiU2VtX2dyZWVkeVwiIChwYWlyIEF1dG9tYXRhLnBwX3JlcF9raW5kIHBwKSAoaywgcmUpXG4gIHwgR3JvdXAgKE5vbmUsIGMpICAgLT4gdmFyIFwiR3JvdXBcIiBjXG4gIHwgR3JvdXAgKFNvbWUgbiwgYykgLT4gc2V4cCBmbXQgXCJOYW1lZF9ncm91cFwiIChwYWlyIHN0ciBwcCkgKG4sIGMpXG4gIHwgTm9fZ3JvdXAgYyAgICAgLT4gdmFyIFwiTm9fZ3JvdXBcIiBjXG4gIHwgTmVzdCBjICAgICAgICAgLT4gdmFyIFwiTmVzdFwiIGNcbiAgfCBDYXNlIGMgICAgICAgICAtPiB2YXIgXCJDYXNlXCIgY1xuICB8IE5vX2Nhc2UgYyAgICAgIC0+IHZhciBcIk5vX2Nhc2VcIiBjXG4gIHwgSW50ZXJzZWN0aW9uIGMgLT4gc2VxIFwiSW50ZXJzZWN0aW9uXCIgY1xuICB8IENvbXBsZW1lbnQgYyAgIC0+IHNlcSBcIkNvbXBsZW1lbnRcIiBjXG4gIHwgRGlmZmVyZW5jZSAoYSwgYikgLT4gc2V4cCBmbXQgXCJEaWZmZXJlbmNlXCIgKHBhaXIgcHAgcHApIChhLCBiKVxuICB8IFBtYXJrIChtLCByKSAgICAgIC0+IHNleHAgZm10IFwiUG1hcmtcIiAocGFpciBQbWFyay5wcCBwcCkgKG0sIHIpXG5cbmxldCByZWMgaXNfY2hhcnNldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IF8gLT5cbiAgICB0cnVlXG4gIHwgQWx0ZXJuYXRpdmUgbCB8IEludGVyc2VjdGlvbiBsIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGlzX2NoYXJzZXQgbFxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIGlzX2NoYXJzZXQgciAmJiBpc19jaGFyc2V0IHInXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gIHwgTm9fZ3JvdXAgciB8IENhc2UgciB8IE5vX2Nhc2UgciAtPlxuICAgIGlzX2NoYXJzZXQgclxuICB8IFNlcXVlbmNlIF8gfCBSZXBlYXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBOb3RfYm91bmQgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgR3JvdXAgXyB8IE5lc3QgXyB8IFBtYXJrIChfLF8pLT5cbiAgICBmYWxzZVxuXG4oKlhYWCBVc2UgYSBiZXR0ZXIgYWxnb3JpdGhtIGFsbG93aW5nIG5vbi1jb250aWd1b3VzIHJlZ2lvbnM/ICopXG5cbmxldCBjdXBwZXIgPVxuICBDc2V0LnVuaW9uIChjc2VxICdBJyAnWicpXG4gICAgKENzZXQudW5pb24gKGNzZXEgJ1xcMTkyJyAnXFwyMTQnKSAoY3NlcSAnXFwyMTYnICdcXDIyMicpKVxubGV0IGNsb3dlciA9IENzZXQub2Zmc2V0IDMyIGN1cHBlclxubGV0IGNhbHBoYSA9XG4gIExpc3QuZm9sZF9yaWdodCBjYWRkIFsnXFwxNzAnOyAnXFwxODEnOyAnXFwxODYnOyAnXFwyMjMnOyAnXFwyNTUnXVxuICAgIChDc2V0LnVuaW9uIGNsb3dlciBjdXBwZXIpXG5sZXQgY2RpZ2l0ID0gY3NlcSAnMCcgJzknXG5sZXQgY2FsbnVtID0gQ3NldC51bmlvbiBjYWxwaGEgY2RpZ2l0XG5sZXQgY3dvcmQgPSBjYWRkICdfJyBjYWxudW1cblxubGV0IGNvbG9yaXplIGMgcmVnZXhwID1cbiAgbGV0IGxubCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGNvbG9yaXplIHJlZ2V4cCA9XG4gICAgbWF0Y2ggcmVnZXhwIHdpdGhcbiAgICAgIFNldCBzICAgICAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IHMgY1xuICAgIHwgU2VxdWVuY2UgbCAgICAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgQWx0ZXJuYXRpdmUgbCAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgUmVwZWF0IChyLCBfLCBfKSAgICAgICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIC0+IENvbG9yX21hcC5zcGxpdCAoQ3NldC5jc2luZ2xlICdcXG4nKSBjXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmQgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBjd29yZCBjXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgU3RhcnQgfCBTdG9wICAgICAgICAgICAgICAtPiAoKVxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSAgICAgICAgICAtPiBsbmwgOj0gdHJ1ZVxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgICB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgciB8IFBtYXJrIChfLHIpICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBDYXNlIF8gfCBOb19jYXNlIF9cbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgXyAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGNvbG9yaXplIHJlZ2V4cDtcbiAgIWxubFxuXG4oKioqKiBDb21waWxhdGlvbiAqKioqKVxuXG5sZXQgcmVjIGVxdWFsIHgxIHgyID1cbiAgbWF0Y2ggeDEsIHgyIHdpdGhcbiAgICBTZXQgczEsIFNldCBzMiAtPlxuICAgIHMxID0gczJcbiAgfCBTZXF1ZW5jZSBsMSwgU2VxdWVuY2UgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQWx0ZXJuYXRpdmUgbDEsIEFsdGVybmF0aXZlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IFJlcGVhdCAoeDEnLCBpMSwgajEpLCBSZXBlYXQgKHgyJywgaTIsIGoyKSAtPlxuICAgIGkxID0gaTIgJiYgajEgPSBqMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgQmVnX29mX2xpbmUsIEJlZ19vZl9saW5lXG4gIHwgRW5kX29mX2xpbmUsIEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQsIEJlZ19vZl93b3JkXG4gIHwgRW5kX29mX3dvcmQsIEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kLCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyLCBCZWdfb2Zfc3RyXG4gIHwgRW5kX29mX3N0ciwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUsIExhc3RfZW5kX29mX2xpbmVcbiAgfCBTdGFydCwgU3RhcnRcbiAgfCBTdG9wLCBTdG9wIC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoc2VtMSwgeDEnKSwgU2VtIChzZW0yLCB4MicpIC0+XG4gICAgc2VtMSA9IHNlbTIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IFNlbV9ncmVlZHkgKGsxLCB4MScpLCBTZW1fZ3JlZWR5IChrMiwgeDInKSAtPlxuICAgIGsxID0gazIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEdyb3VwIF8sIEdyb3VwIF8gLT4gKCogRG8gbm90IG1lcmdlIGdyb3VwcyEgKilcbiAgICBmYWxzZVxuICB8IE5vX2dyb3VwIHgxJywgTm9fZ3JvdXAgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5lc3QgeDEnLCBOZXN0IHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBDYXNlIHgxJywgQ2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTm9fY2FzZSB4MScsIE5vX2Nhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IEludGVyc2VjdGlvbiBsMSwgSW50ZXJzZWN0aW9uIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IENvbXBsZW1lbnQgbDEsIENvbXBsZW1lbnQgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgRGlmZmVyZW5jZSAoeDEnLCB4MScnKSwgRGlmZmVyZW5jZSAoeDInLCB4MicnKSAtPlxuICAgIGVxdWFsIHgxJyB4MicgJiYgZXF1YWwgeDEnJyB4MicnXG4gIHwgUG1hcmsgKG0xLCByMSksIFBtYXJrIChtMiwgcjIpIC0+XG4gICAgUG1hcmsuZXF1YWwgbTEgbTIgJiYgZXF1YWwgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxuYW5kIGVxX2xpc3QgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIFtdLCBbXSAtPlxuICAgIHRydWVcbiAgfCB4MSA6OiByMSwgeDIgOjogcjIgLT5cbiAgICBlcXVhbCB4MSB4MiAmJiBlcV9saXN0IHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBzZXF1ZW5jZSA9IGZ1bmN0aW9uXG4gIHwgW3hdIC0+IHhcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgcmVjIG1lcmdlX3NlcXVlbmNlcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEFsdGVybmF0aXZlIGwnIDo6IHIgLT5cbiAgICBtZXJnZV9zZXF1ZW5jZXMgKGwnIEAgcilcbiAgfCBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIHIgd2l0aFxuICAgICAgICBTZXF1ZW5jZSAoeCcgOjogeScpIDo6IHInIHdoZW4gZXF1YWwgeCB4JyAtPlxuICAgICAgICBTZXF1ZW5jZSBbeDsgQWx0ZXJuYXRpdmUgW3NlcXVlbmNlIHk7IHNlcXVlbmNlIHknXV0gOjogcidcbiAgICAgIHwgcicgLT5cbiAgICAgICAgU2VxdWVuY2UgKHggOjogeSkgOjogcidcbiAgICBlbmRcbiAgfCB4IDo6IHIgLT5cbiAgICB4IDo6IG1lcmdlX3NlcXVlbmNlcyByXG5cbm1vZHVsZSBBID0gQXV0b21hdGFcblxubGV0IGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciA9XG4gIG1hdGNoIGtpbmQsIGtpbmQnIHdpdGhcbiAgICBgRmlyc3QsIGBGaXJzdCAtPiBjclxuICB8IGBGaXJzdCwgayAgICAgICAtPiBBLnNlcSBpZHMgayBjciAoQS5lcHMgaWRzKVxuICB8ICBfICAgICAgICAgICAgICAgLT4gY3JcblxuKCogWFhYIHNob3VsZCBwcm9iYWJseSBjb21wdXRlIGEgY2F0ZWdvcnkgbWFzayAqKVxubGV0IHJlYyB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICAoQS5jc3QgaWRzICh0cmFuc19zZXQgY2FjaGUgYyBzKSwga2luZClcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgKHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIGwsIGtpbmQpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyBsIHdpdGhcbiAgICAgICAgW3InXSAtPlxuICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IsIGtpbmQpXG4gICAgICB8IG1lcmdlZF9zZXF1ZW5jZXMgLT5cbiAgICAgICAgKEEuYWx0IGlkc1xuICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgKGZ1biByJyAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5XG4gICAgICAgICAgICAgICAgICAgICBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAgICAgICAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IpXG4gICAgICAgICAgICAgIG1lcmdlZF9zZXF1ZW5jZXMpLFxuICAgICAgICAga2luZClcbiAgICBlbmRcbiAgfCBSZXBlYXQgKHInLCBpLCBqKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIGxldCByZW0gPVxuICAgICAgbWF0Y2ggaiB3aXRoXG4gICAgICAgIE5vbmUgLT5cbiAgICAgICAgQS5yZXAgaWRzIGdyZWVkeSBraW5kJyBjclxuICAgICAgfCBTb21lIGogLT5cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIGdyZWVkeSB3aXRoXG4gICAgICAgICAgICBgR3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtOyBBLmVwcyBpZHNdXG4gICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5lcHMgaWRzOyBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIChqIC0gaSkgZiAoQS5lcHMgaWRzKVxuICAgIGluXG4gICAgKGl0ZXIgaSAoZnVuIHJlbSAtPiBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtKSByZW0sIGtpbmQpXG4gIHwgQmVnX29mX2xpbmUgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgRW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEJlZ19vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpLFxuICAgICBraW5kKVxuICB8IEVuZF9vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpLFxuICAgICBraW5kKVxuICB8IE5vdF9ib3VuZCAtPlxuICAgIChBLmFsdCBpZHMgW0Euc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlcik7XG4gICAgICAgICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSldLFxuICAgICBraW5kKVxuICB8IEJlZ19vZl9zdHIgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBFbmRfb2Zfc3RyIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IExhc3RfZW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIGxhc3RuZXdsaW5lKSwga2luZClcbiAgfCBTdGFydCAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU3RvcCAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFNlbSAoa2luZCcsIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kJyBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCcga2luZCcnIGNyLFxuICAgICBraW5kJylcbiAgfCBTZW1fZ3JlZWR5IChncmVlZHknLCByJykgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeScgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBHcm91cCAobiwgcicpIC0+XG4gICAgaWYgaWduX2dyb3VwIHRoZW5cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHAgPSAhcG9zIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZXMgOj0gKG5hbWUsIHAgLyAyKSA6OiAhbmFtZXNcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICBpblxuICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLm1hcmsgaWRzIHApIChcbiAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0IGNyIChBLm1hcmsgaWRzIChwICsgMSkpKSxcbiAgICAgICBraW5kJylcbiAgfCBOb19ncm91cCByJyAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCB0cnVlIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IE5lc3QgcicgLT5cbiAgICBsZXQgYiA9ICFwb3MgaW5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBpblxuICAgIGxldCBlID0gIXBvcyAtIDEgaW5cbiAgICBpZiBlIDwgYiB0aGVuXG4gICAgICAoY3IsIGtpbmQnKVxuICAgIGVsc2VcbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLmVyYXNlIGlkcyBiIGUpIGNyLCBraW5kJylcbiAgfCBEaWZmZXJlbmNlIF8gfCBDb21wbGVtZW50IF8gfCBJbnRlcnNlY3Rpb24gXyB8IE5vX2Nhc2UgXyB8IENhc2UgXyAtPlxuICAgIGFzc2VydCBmYWxzZVxuICB8IFBtYXJrIChpLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5wbWFyayBpZHMgaSkgY3IsIGtpbmQnKVxuXG5hbmQgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgQS5lcHMgaWRzXG4gIHwgW3JdIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyJ1xuICB8IHIgOjogcmVtIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgbGV0IGNyJycgPVxuICAgICAgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcmVtIGluXG4gICAgaWYgQS5pc19lcHMgY3InJyB0aGVuXG4gICAgICBjcidcbiAgICBlbHNlIGlmIEEuaXNfZXBzIGNyJyB0aGVuXG4gICAgICBjcicnXG4gICAgZWxzZVxuICAgICAgQS5zZXEgaWRzIGtpbmQnIGNyJyBjcicnXG5cbigqKioqIENhc2UgKioqKilcblxubGV0IGNhc2VfaW5zZW5zIHMgPVxuICBDc2V0LnVuaW9uIHMgKENzZXQudW5pb24gKENzZXQub2Zmc2V0IDMyIChDc2V0LmludGVyIHMgY3VwcGVyKSlcbiAgICAgICAgICAgICAgICAgIChDc2V0Lm9mZnNldCAoLTMyKSAoQ3NldC5pbnRlciBzIGNsb3dlcikpKVxuXG5sZXQgYXNfc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPiBzXG4gIHwgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG5cbigqIFhYWCBTaG91bGQgc3BsaXQgYWx0ZXJuYXRpdmVzIGludG8gKDEpIGNoYXJzZXRzIGFuZCAoMikgbW9yZVxuICAgY29tcGxleCByZWd1bGFyIGV4cHJlc3Npb25zOyBhbHRlcm5hdGl2ZSBzaG91bGQgdGhlcmVmb3JlIHByb2JhYmx5XG4gICBiZSBmbGF0dGVuIGhlcmUgKilcbmxldCByZWMgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgU2V0IChpZiBpZ25fY2FzZSB0aGVuIGNhc2VfaW5zZW5zIHMgZWxzZSBzKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBTZXF1ZW5jZSAoTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwgaW5cbiAgICBpZiBpc19jaGFyc2V0IChBbHRlcm5hdGl2ZSBsJykgdGhlblxuICAgICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSkgQ3NldC5lbXB0eSBsJylcbiAgICBlbHNlXG4gICAgICBBbHRlcm5hdGl2ZSBsJ1xuICB8IFJlcGVhdCAociwgaSwgaikgLT5cbiAgICBSZXBlYXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIsIGksIGopXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3AgYXMgciAtPlxuICAgIHJcbiAgfCBTZW0gKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbSAoaywgcicpXG4gIHwgU2VtX2dyZWVkeSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtX2dyZWVkeSAoaywgcicpXG4gIHwgR3JvdXAgKG4sIHIpIC0+XG4gICAgR3JvdXAgKG4sIGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG4gIHwgTm9fZ3JvdXAgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOb19ncm91cCByJ1xuICB8IE5lc3QgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOZXN0IHInXG4gIHwgQ2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgZmFsc2UgclxuICB8IE5vX2Nhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIHRydWUgclxuICB8IEludGVyc2VjdGlvbiBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQuaW50ZXIgcyAoYXNfc2V0IHIpKSBDc2V0LmNhbnkgbCcpXG4gIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnlcbiAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKVxuICAgICAgICAgICAgICBDc2V0LmVtcHR5IGwnKSlcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBTZXQgKENzZXQuaW50ZXIgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikpXG4gICAgICAgICAgIChDc2V0LmRpZmYgQ3NldC5jYW55IChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHInKSkpKVxuICB8IFBtYXJrIChpLHIpIC0+IFBtYXJrIChpLGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZV8xIHJlZ2V4cCA9XG4gIGxldCByZWdleHAgPSBoYW5kbGVfY2FzZSBmYWxzZSByZWdleHAgaW5cbiAgbGV0IGMgPSBDb2xvcl9tYXAubWFrZSAoKSBpblxuICBsZXQgbmVlZF9sbmwgPSBjb2xvcml6ZSBjIHJlZ2V4cCBpblxuICBsZXQgKGNvbG9ycywgY29sb3JfcmVwciwgbmNvbG9yKSA9IENvbG9yX21hcC5mbGF0dGVuIGMgaW5cbiAgbGV0IGxubCA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yIGVsc2UgLTEgaW5cbiAgbGV0IG5jb2xvciA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yICsgMSBlbHNlIG5jb2xvciBpblxuICBsZXQgaWRzID0gQS5jcmVhdGVfaWRzICgpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBsZXQgbmFtZXMgPSByZWYgW10gaW5cbiAgbGV0IChyLCBraW5kKSA9XG4gICAgdHJhbnNsYXRlIGlkc1xuICAgICAgYEZpcnN0IGZhbHNlIGZhbHNlIGBHcmVlZHkgcG9zIG5hbWVzIChyZWYgQ3NldC5DU2V0TWFwLmVtcHR5KSBjb2xvcnMgcmVnZXhwIGluXG4gIGxldCByID0gZW5mb3JjZV9raW5kIGlkcyBgRmlyc3Qga2luZCByIGluXG4gICgqRm9ybWF0LmVwcmludGYgXCI8JWQgJWQ+QC5cIiAhaWRzIG5jb2w7KilcbiAgbWtfcmUgfmluaXRpYWw6ciB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXM6KExpc3QucmV2ICFuYW1lcykgfmdyb3VwX2NvdW50OighcG9zIC8gMilcblxuKCoqKiopXG5cbmxldCByZWMgYW5jaG9yZWQgPSBmdW5jdGlvblxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBMaXN0LmV4aXN0cyBhbmNob3JlZCBsXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBhbmNob3JlZCBsXG4gIHwgUmVwZWF0IChyLCBpLCBfKSAtPlxuICAgIGkgPiAwICYmIGFuY2hvcmVkIHJcbiAgfCBTZXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdG9wXG4gIHwgSW50ZXJzZWN0aW9uIF8gfCBDb21wbGVtZW50IF8gfCBEaWZmZXJlbmNlIF8gLT5cbiAgICBmYWxzZVxuICB8IEJlZ19vZl9zdHIgfCBTdGFydCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcikgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByIHwgTmVzdCByXG4gIHwgQ2FzZSByIHwgTm9fY2FzZSByIHwgUG1hcmsgKF8sIHIpIC0+XG4gICAgYW5jaG9yZWQgclxuXG4oKioqKilcblxudHlwZSB0ID0gcmVnZXhwXG5cbmxldCBzdHIgcyA9XG4gIGxldCBsID0gcmVmIFtdIGluXG4gIGZvciBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGwgOj0gU2V0IChDc2V0LmNzaW5nbGUgcy5baV0pIDo6ICFsXG4gIGRvbmU7XG4gIFNlcXVlbmNlICFsXG5sZXQgY2hhciBjID0gU2V0IChDc2V0LmNzaW5nbGUgYylcblxubGV0IGFsdCA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gQWx0ZXJuYXRpdmUgbFxubGV0IHNlcSA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgZW1wdHkgPSBhbHQgW11cbmxldCBlcHNpbG9uID0gc2VxIFtdXG5sZXQgcmVwbiByIGkgaiA9XG4gIGlmIGkgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCI7XG4gIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCJcbiAgICB8IF8gLT4gKClcbiAgZW5kO1xuICBSZXBlYXQgKHIsIGksIGopXG5sZXQgcmVwIHIgPSByZXBuIHIgMCBOb25lXG5sZXQgcmVwMSByID0gcmVwbiByIDEgTm9uZVxubGV0IG9wdCByID0gcmVwbiByIDAgKFNvbWUgMSlcbmxldCBib2wgPSBCZWdfb2ZfbGluZVxubGV0IGVvbCA9IEVuZF9vZl9saW5lXG5sZXQgYm93ID0gQmVnX29mX3dvcmRcbmxldCBlb3cgPSBFbmRfb2Zfd29yZFxubGV0IHdvcmQgciA9IHNlcSBbYm93OyByOyBlb3ddXG5sZXQgbm90X2JvdW5kYXJ5ID0gTm90X2JvdW5kXG5sZXQgYm9zID0gQmVnX29mX3N0clxubGV0IGVvcyA9IEVuZF9vZl9zdHJcbmxldCB3aG9sZV9zdHJpbmcgciA9IHNlcSBbYm9zOyByOyBlb3NdXG5sZXQgbGVvbCA9IExhc3RfZW5kX29mX2xpbmVcbmxldCBzdGFydCA9IFN0YXJ0XG5sZXQgc3RvcCA9IFN0b3BcbmxldCBsb25nZXN0IHIgPSBTZW0gKGBMb25nZXN0LCByKVxubGV0IHNob3J0ZXN0IHIgPSBTZW0gKGBTaG9ydGVzdCwgcilcbmxldCBmaXJzdCByID0gU2VtIChgRmlyc3QsIHIpXG5sZXQgZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgR3JlZWR5LCByKVxubGV0IG5vbl9ncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBOb25fZ3JlZWR5LCByKVxubGV0IGdyb3VwID9uYW1lIHIgPSBHcm91cCAobmFtZSwgcilcbmxldCBub19ncm91cCByID0gTm9fZ3JvdXAgclxubGV0IG5lc3QgciA9IE5lc3QgclxubGV0IG1hcmsgciA9IGxldCBpID0gUG1hcmsuZ2VuICgpIGluIChpLFBtYXJrIChpLHIpKVxuXG5sZXQgc2V0IHN0ciA9XG4gIGxldCBzID0gcmVmIENzZXQuZW1wdHkgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIHMgOj0gQ3NldC51bmlvbiAoQ3NldC5jc2luZ2xlIHN0ci5baV0pICFzXG4gIGRvbmU7XG4gIFNldCAhc1xuXG5sZXQgcmcgYyBjJyA9IFNldCAoY3NlcSBjIGMnKVxuXG5sZXQgaW50ZXIgbCA9XG4gIGxldCByID0gSW50ZXJzZWN0aW9uIGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmludGVyXCJcblxubGV0IGNvbXBsIGwgPVxuICBsZXQgciA9IENvbXBsZW1lbnQgbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuY29tcGxcIlxuXG5sZXQgZGlmZiByIHInID1cbiAgbGV0IHInJyA9IERpZmZlcmVuY2UgKHIsIHInKSBpblxuICBpZiBpc19jaGFyc2V0IHInJyB0aGVuXG4gICAgcicnXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmRpZmZcIlxuXG5sZXQgYW55ID0gU2V0IENzZXQuY2FueVxubGV0IG5vdG5sID0gU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55IChDc2V0LmNzaW5nbGUgJ1xcbicpKVxuXG5sZXQgbG93ZXIgPSBhbHQgW3JnICdhJyAneic7IGNoYXIgJ1xcMTgxJzsgcmcgJ1xcMjIzJyAnXFwyNDYnOyByZyAnXFwyNDgnICdcXDI1NSddXG5sZXQgdXBwZXIgPSBhbHQgW3JnICdBJyAnWic7IHJnICdcXDE5MicgJ1xcMjE0JzsgcmcgJ1xcMjE2JyAnXFwyMjInXVxubGV0IGFscGhhID0gYWx0IFtsb3dlcjsgdXBwZXI7IGNoYXIgJ1xcMTcwJzsgY2hhciAnXFwxODYnXVxubGV0IGRpZ2l0ID0gcmcgJzAnICc5J1xubGV0IGFsbnVtID0gYWx0IFthbHBoYTsgZGlnaXRdXG5sZXQgd29yZGMgPSBhbHQgW2FsbnVtOyBjaGFyICdfJ11cbmxldCBhc2NpaSA9IHJnICdcXDAwMCcgJ1xcMTI3J1xubGV0IGJsYW5rID0gc2V0IFwiXFx0IFwiXG5sZXQgY250cmwgPSBhbHQgW3JnICdcXDAwMCcgJ1xcMDMxJzsgcmcgJ1xcMTI3JyAnXFwxNTknXVxubGV0IGdyYXBoID0gYWx0IFtyZyAnXFwwMzMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwcmludCA9IGFsdCBbcmcgJ1xcMDMyJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHVuY3QgPVxuICBhbHQgW3JnICdcXDAzMycgJ1xcMDQ3JzsgcmcgJ1xcMDU4JyAnXFwwNjQnOyByZyAnXFwwOTEnICdcXDA5Nic7XG4gICAgICAgcmcgJ1xcMTIzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDE2OSc7IHJnICdcXDE3MScgJ1xcMTgwJztcbiAgICAgICByZyAnXFwxODInICdcXDE4NSc7IHJnICdcXDE4NycgJ1xcMTkxJzsgY2hhciAnXFwyMTUnOyBjaGFyICdcXDI0NyddXG5sZXQgc3BhY2UgPSBhbHQgW2NoYXIgJyAnOyByZyAnXFwwMDknICdcXDAxMyddXG5sZXQgeGRpZ2l0ID0gYWx0IFtkaWdpdDsgcmcgJ2EnICdmJzsgcmcgJ0EnICdGJ11cblxubGV0IGNhc2UgciA9IENhc2UgclxubGV0IG5vX2Nhc2UgciA9IE5vX2Nhc2UgclxuXG4oKioqKilcblxubGV0IGNvbXBpbGUgciA9XG4gIGNvbXBpbGVfMSAoXG4gICAgaWYgYW5jaG9yZWQgciB0aGVuXG4gICAgICBncm91cCByXG4gICAgZWxzZVxuICAgICAgc2VxIFtzaG9ydGVzdCAocmVwIGFueSk7IGdyb3VwIHJdXG4gIClcblxubGV0IGV4ZWNfaW50ZXJuYWwgbmFtZSA/KHBvcz0wKSA/KGxlbiA9IC0xKSB+cGFydGlhbCB+Z3JvdXBzIHJlIHMgPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IC0xIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgbmFtZTtcbiAgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW5cblxubGV0IGV4ZWMgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY1wiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGV4ZWNfb3B0ID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNfb3B0XCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZVxuICAgICAgICAgIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBTb21lIHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiBOb25lXG5cbmxldCBleGVjcCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDpmYWxzZSBcIlJlLmV4ZWNwXCIgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF9zdWJzdHIgLT4gdHJ1ZVxuICB8IF8gICAgICAgICAgICAgLT4gZmFsc2VcblxubGV0IGV4ZWNfcGFydGlhbCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggXyAtPiBgRnVsbFxuICB8IFJ1bm5pbmcgXyAtPiBgUGFydGlhbFxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbmxldCBleGVjX3BhcnRpYWxfZGV0YWlsZWQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsX2RldGFpbGVkXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggZ3JvdXAgLT4gYEZ1bGwgZ3JvdXBcbiAgfCBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9IC0+IGBQYXJ0aWFsIG5vX21hdGNoX3N0YXJ0c19iZWZvcmVcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5tb2R1bGUgTWFyayA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IFBtYXJrLnRcblxuICBsZXQgdGVzdCAoZyA6IEdyb3VwLnQpIHAgPVxuICAgIFBtYXJrLlNldC5tZW0gcCBnLnBtYXJrc1xuXG4gIGxldCBhbGwgKGcgOiBHcm91cC50KSA9IGcucG1hcmtzXG5cbiAgbW9kdWxlIFNldCA9IFBtYXJrLlNldFxuXG4gIGxldCBlcXVhbCA9IFBtYXJrLmVxdWFsXG5cbiAgbGV0IGNvbXBhcmUgPSBQbWFyay5jb21wYXJlXG5cbmVuZFxuXG50eXBlIHNwbGl0X3Rva2VuID1cbiAgWyBgVGV4dCBvZiBzdHJpbmdcbiAgfCBgRGVsaW0gb2YgR3JvdXAudFxuICBdXG5cbm1vZHVsZSBSc2VxID0gc3RydWN0XG4gIGxldCBhbGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgKCogaW5kZXggb2YgdGhlIGZpcnN0IHBvc2l0aW9uIHdlIGRvIG5vdCBjb25zaWRlci5cbiAgICAgICAhcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50ICopXG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpdGVyYXRlIG9uIG1hdGNoZXMuIFdoZW4gYSBtYXRjaCBpcyBmb3VuZCwgc2VhcmNoIGZvciB0aGUgbmV4dFxuICAgICAgIG9uZSBqdXN0IGFmdGVyIGl0cyBlbmQgKilcbiAgICBsZXQgcmVjIGF1eCBwb3MgKCkgPVxuICAgICAgaWYgcG9zID49IGxpbWl0XG4gICAgICB0aGVuIFNlcS5OaWwgKCogbm8gbW9yZSBtYXRjaGVzICopXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgc1xuICAgICAgICAgICAgICAgIH5wb3MgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgU2VxLkNvbnMgKHN1YnN0ciwgYXV4IHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF9cbiAgICAgICAgfCBGYWlsZWQgLT4gU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IHBvc1xuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgYWxsID9wb3MgP2xlbiByZSBzXG4gICAgfD4gU2VxLm1hcCAoZnVuIHN1YiAtPiBHcm91cC5nZXQgc3ViIDApXG5cbiAgbGV0IHNwbGl0X2Z1bGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaTogc3RhcnQgb2YgZGVsaW1pdGVkIHN0cmluZ1xuICAgICAgIHBvczogZmlyc3QgcG9zaXRpb24gYWZ0ZXIgbGFzdCBtYXRjaCBvZiBbcmVdXG4gICAgICAgbGltaXQ6IGZpcnN0IGluZGV4IHdlIGlnbm9yZSAoIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCkgKilcbiAgICBsZXQgcG9zMCA9IHBvcyBpblxuICAgIGxldCByZWMgYXV4IHN0YXRlIGkgcG9zICgpID0gbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBgSWRsZSB3aGVuIHBvcyA+PSBsaW1pdCAtPlxuICAgICAgICBpZiBpIDwgbGltaXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1YiA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHN1YiwgYXV4IHN0YXRlIChpKzEpIHBvcylcbiAgICAgICAgKSBlbHNlIFNlcS5OaWxcbiAgICAgIHwgYElkbGUgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBsZXQgb2xkX2kgPSBpIGluXG4gICAgICAgICAgbGV0IGkgPSBwMiBpblxuICAgICAgICAgIGlmIHAxID4gcG9zMCB0aGVuIChcbiAgICAgICAgICAgICgqIHN0cmluZyBkb2VzIG5vdCBzdGFydCBieSBhIGRlbGltaXRlciAqKVxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgb2xkX2kgKHAxIC0gb2xkX2kpIGluXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBgWWllbGQgKGBEZWxpbSBzdWJzdHIpIGluXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICAgICkgZWxzZSBTZXEuQ29ucyAoYERlbGltIHN1YnN0ciwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgXyAtPiBTZXEuTmlsXG4gICAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgICAgaWYgaSA8IGxpbWl0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgICAoKiB5aWVsZCBsYXN0IHN0cmluZyAqKVxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBsaW1pdCBwb3MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIGVuZFxuICAgICAgfCBgWWllbGQgeCAtPlxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IGBJZGxlIGkgcG9zKVxuICAgIGluXG4gICAgYXV4IGBJZGxlIHBvcyBwb3NcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBsZXQgc2VxID0gc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyBpblxuICAgIGxldCByZWMgZmlsdGVyIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSAgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFNlcS5OaWxcbiAgICAgIHwgU2VxLkNvbnMgKGBEZWxpbSBfLCB0bCkgLT4gZmlsdGVyIHRsICgpXG4gICAgICB8IFNlcS5Db25zIChgVGV4dCBzLHRsKSAtPiBTZXEuQ29ucyAocywgZmlsdGVyIHRsKVxuICAgIGluIGZpbHRlciBzZXFcbmVuZFxuXG5tb2R1bGUgUmxpc3QgPSBzdHJ1Y3RcbiAgbGV0IGxpc3Rfb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGxpc3QgPVxuICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBsIHggLT4geCA6OiBsKSBbXSBzIHw+IExpc3QucmV2XG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcbmVuZFxuXG5tb2R1bGUgR2VuID0gc3RydWN0XG4gIHR5cGUgJ2EgZ2VuID0gdW5pdCAtPiAnYSBvcHRpb25cbiAgbGV0IGdlbl9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgZ2VuID1cbiAgICBsZXQgciA9IHJlZiBzIGluXG4gICAgZnVuICgpIC0+IG1hdGNoICFyICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBOb25lXG4gICAgICB8IFNlcS5Db25zICh4LCB0bCkgLT5cbiAgICAgICAgciA6PSB0bDtcbiAgICAgICAgU29tZSB4XG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5lbmRcblxubGV0IHJlcGxhY2UgPyhwb3M9MCkgP2xlbiA/KGFsbD10cnVlKSByZSB+ZiBzID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICB8IFNvbWUgbCAtPlxuICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gICAgICBwb3MrbFxuICBpblxuICAoKiBidWZmZXIgaW50byB3aGljaCB3ZSB3cml0ZSB0aGUgcmVzdWx0ICopXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICgqIGl0ZXJhdGUgb24gbWF0Y2hlZCBzdWJzdHJpbmdzLiAqKVxuICBsZXQgcmVjIGl0ZXIgcG9zID1cbiAgICBpZiBwb3MgPCBsaW1pdFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zIH5sZW46KGxpbWl0LXBvcykgd2l0aFxuICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAoKiBhZGQgc3RyaW5nIGJldHdlZW4gcHJldmlvdXMgbWF0Y2ggYW5kIGN1cnJlbnQgbWF0Y2ggKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChwMS1wb3MpO1xuICAgICAgICAoKiB3aGF0IHNob3VsZCB3ZSByZXBsYWNlIHRoZSBtYXRjaGVkIGdyb3VwIHdpdGg/ICopXG4gICAgICAgIGxldCByZXBsYWNpbmcgPSBmIHN1YnN0ciBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgcmVwbGFjaW5nO1xuICAgICAgICBpZiBhbGwgdGhlblxuICAgICAgICAgICgqIGlmIHdlIG1hdGNoZWQgYSBub24tY2hhciBlLmcuIF4gd2UgbXVzdCBtYW51YWxseSBhZHZhbmNlIGJ5IDEgKilcbiAgICAgICAgICBpdGVyIChcbiAgICAgICAgICAgIGlmIHAxPXAyIHRoZW4gKFxuICAgICAgICAgICAgICAoKiBhIG5vbiBjaGFyIGNvdWxkIGJlIHBhc3QgdGhlIGVuZCBvZiBzdHJpbmcuIGUuZy4gJCAqKVxuICAgICAgICAgICAgICBpZiBwMiA8IGxpbWl0IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBzLltwMl07XG4gICAgICAgICAgICAgIHAyKzFcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBwMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHAyIChsaW1pdC1wMilcbiAgICAgIHwgUnVubmluZyBfIC0+ICgpXG4gICAgICB8IEZhaWxlZCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKGxpbWl0LXBvcylcbiAgaW5cbiAgaXRlciBwb3M7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHJlcGxhY2Vfc3RyaW5nID9wb3MgP2xlbiA/YWxsIHJlIH5ieSBzID1cbiAgcmVwbGFjZSA/cG9zID9sZW4gP2FsbCByZSBzIH5mOihmdW4gXyAtPiBieSlcblxubGV0IHdpdG5lc3MgdCA9XG4gIGxldCByZWMgd2l0bmVzcyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgYyAtPiBTdHJpbmcubWFrZSAxIChDaGFyLmNociAoQ3NldC5waWNrIGMpKVxuICAgIHwgU2VxdWVuY2UgeHMgLT4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCB3aXRuZXNzIHhzKVxuICAgIHwgQWx0ZXJuYXRpdmUgKHggOjogXykgLT4gd2l0bmVzcyB4XG4gICAgfCBBbHRlcm5hdGl2ZSBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFJlcGVhdCAociwgZnJvbSwgX3RvKSAtPlxuICAgICAgbGV0IHcgPSB3aXRuZXNzIHIgaW5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCB3ICogZnJvbSkgaW5cbiAgICAgIGZvciBfaT0xIHRvIGZyb20gZG9cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB3XG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IE5vX2Nhc2UgciAtPiB3aXRuZXNzIHJcbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgKF8sIF8pIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgR3JvdXAgKF8sIHIpXG4gICAgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHJcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFBtYXJrIChfLCByKVxuICAgIHwgQ2FzZSByXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKSAtPiB3aXRuZXNzIHJcbiAgICB8IEJlZ19vZl9saW5lXG4gICAgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmRcbiAgICB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmVcbiAgICB8IFN0YXJ0XG4gICAgfCBTdG9wXG4gICAgfCBFbmRfb2Zfc3RyIC0+IFwiXCIgaW5cbiAgd2l0bmVzcyAoaGFuZGxlX2Nhc2UgZmFsc2UgdClcblxubW9kdWxlIFNlcSA9IFJzZXFcbm1vZHVsZSBMaXN0ID0gUmxpc3Rcbm1vZHVsZSBHcm91cCA9IEdyb3VwXG5cbigqKiB7MiBEZXByZWNhdGVkIGZ1bmN0aW9uc30gKilcblxubGV0IHNwbGl0X2Z1bGxfc2VxID0gU2VxLnNwbGl0X2Z1bGxcbmxldCBzcGxpdF9zZXEgPSBTZXEuc3BsaXRcbmxldCBtYXRjaGVzX3NlcSA9IFNlcS5tYXRjaGVzXG5sZXQgYWxsX3NlcSA9IFNlcS5hbGxcblxudHlwZSAnYSBnZW4gICAgICAgID0gJ2EgR2VuLmdlblxubGV0IGFsbF9nZW4gICAgICAgID0gR2VuLmFsbFxubGV0IG1hdGNoZXNfZ2VuICAgID0gR2VuLm1hdGNoZXNcbmxldCBzcGxpdF9nZW4gICAgICA9IEdlbi5zcGxpdFxubGV0IHNwbGl0X2Z1bGxfZ2VuID0gR2VuLnNwbGl0X2Z1bGxcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG5cbmxldCBnZXQgPSBHcm91cC5nZXRcbmxldCBnZXRfb2ZzID0gR3JvdXAub2Zmc2V0XG5sZXQgZ2V0X2FsbCA9IEdyb3VwLmFsbFxubGV0IGdldF9hbGxfb2ZzID0gR3JvdXAuYWxsX29mZnNldFxubGV0IHRlc3QgPSBHcm91cC50ZXN0XG5cbnR5cGUgbWFya2lkID0gTWFyay50XG5cbmxldCBtYXJrZWQgPSBNYXJrLnRlc3RcbmxldCBtYXJrX3NldCA9IE1hcmsuYWxsXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKlxuSW5mb3JtYXRpb24gYWJvdXQgdGhlIHByZXZpb3VzIGNoYXJhY3Rlcjpcbi0gZG9lcyBub3QgZXhpc3RzXG4tIGlzIGEgbGV0dGVyXG4tIGlzIG5vdCBhIGxldHRlclxuLSBpcyBhIG5ld2xpbmVcbi0gaXMgbGFzdCBuZXdsaW5lXG5cbkJlZ2lubmluZyBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGxpbmU6XG4tIHByZXZpb3VzIGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgYnVmZmVyOlxuLSBwcmV2aW91cyBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgYnVmZmVyXG4tIGN1cnJlbnQgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGxpbmVcbi0gY3VycmVudCBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcbiopXG5cbigqXG5SZXA6IGUgPSBULGUgfCAoKVxuICAtIHNlbWFudGljcyBvZiB0aGUgY29tbWEgKHNob3J0ZXN0L2xvbmdlc3QvZmlyc3QpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSB1bmlvbiAoZ3JlZWR5L25vbi1ncmVlZHkpXG5cbkJvdW5kZWQgcmVwZXRpdGlvblxuICBhezAsM30gPSAoYSwoYSxhPyk/KT9cbiopXG5cbnR5cGUgZ3JvdXBzID0gR3JvdXAudFxuXG5pbmNsdWRlIFJsaXN0XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCB0ZXN0MiBjIGMnID0gIWkgKyAxIDwgbCAmJiBzLlshaV0gPSBjICYmIHMuWyFpICsgMV0gPSBjJyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHQyIGMgYycgPSBsZXQgciA9IHRlc3QyIGMgYycgaW4gaWYgciB0aGVuIGkgOj0gIWkgKyAyOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0MiAnXFxcXCcgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QyICdcXFxcJyAnfCcgfHwgdGVzdDIgJ1xcXFwnICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSByIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIFJlLmJvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgUmUuZW9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdDIgJ1xcXFwnICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdgJyB0aGVuXG4gICAgICAgIFJlLmJvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1xcJycgdGhlblxuICAgICAgICBSZS5lb3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc9JyB0aGVuXG4gICAgICAgIFJlLnN0YXJ0XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnYicgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ0InIHRoZW5cbiAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlblxuICAgICAgICBSZS5ib3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc+JyB0aGVuXG4gICAgICAgIFJlLmVvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ3cnIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnVycgdGhlblxuICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgICAnKicgfCAnKycgfCAnPycgfCAnWycgfCAnXScgfCAnLicgfCAnXicgfCAnJCcgfCAnXFxcXCcgYXMgYyAtPlxuICAgICAgICAgICAgUmUuY2hhciBjXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgIGMgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGdldCAoKVxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxubGV0IHJlID8oY2FzZSA9IHRydWUpIHMgPSBsZXQgciA9IHBhcnNlIHMgaW4gaWYgY2FzZSB0aGVuIHIgZWxzZSBSZS5ub19jYXNlIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhjYXNlID0gdHJ1ZSkgcyA9IGNvbXBpbGUgKHJlIH5jYXNlIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICopXG4oKiAgbGlua2luZyBleGNlcHRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZGlmaWVkIGJ5IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mciBmb3IgaW50ZWdyYXRpb24gaW4gUkUgKilcblxuKCogJElkOiByZV9zdHIubWwsdiAxLjMgMjAwMi8wNy8wMyAxNTo0Nzo1NCB2b3VpbGxvbiBFeHAgJCAqKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbnR5cGUgcmVnZXhwID1cbiAgeyByZTogUmUudFxuICA7IG10Y2g6IFJlLnJlIExhenkudFxuICA7IHNyY2g6IFJlLnJlIExhenkudCB9XG5cbmxldCBjb21waWxlX3JlZ2V4cCBzIGMgPVxuICBsZXQgcmUgPSBFbWFjcy5yZSB+Y2FzZToobm90IGMpIHMgaW5cbiAgeyByZVxuICA7IG10Y2ggPSBsYXp5IChSZS5jb21waWxlIChSZS5zZXEgW1JlLnN0YXJ0OyByZV0pKVxuICA7IHNyY2ggPSBsYXp5IChSZS5jb21waWxlIHJlKSB9XG5cbmxldCBzdGF0ZSA9IHJlZiBOb25lXG5cbmxldCBzdHJpbmdfbWF0Y2ggcmUgcyBwID1cbiAgdHJ5XG4gICAgc3RhdGUgOj0gU29tZSAoUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgZmFsc2VcblxubGV0IHN0cmluZ19wYXJ0aWFsX21hdGNoIHJlIHMgcCA9XG4gIG1hdGNoXG4gICAgUmUuZXhlY19wYXJ0aWFsIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzXG4gIHdpdGhcbiAgICBgRnVsbCAgICAgLT4gc3RyaW5nX21hdGNoIHJlIHMgcFxuICB8IGBQYXJ0aWFsICAtPiB0cnVlXG4gIHwgYE1pc21hdGNoIC0+IGZhbHNlXG5cbmxldCBzZWFyY2hfZm9yd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUuc3JjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIGZzdCAoUmUuR3JvdXAub2Zmc2V0IHJlcyAwKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgc2VhcmNoX2JhY2t3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgcFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgaWYgcCA9IDAgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZVxuICAgICAgc2VhcmNoX2JhY2t3YXJkIHJlIHMgKHAgLSAxKVxuXG5sZXQgdmFsaWRfZ3JvdXAgbiA9XG4gIG4gPj0gMCAmJiBuIDwgMTAgJiYgKFxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG0gLT4gbiA8IFJlLkdyb3VwLm5iX2dyb3VwcyBtXG4gIClcblxubGV0IG9mZnNldF9ncm91cCBpID1cbiAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgfCBTb21lIG0gLT4gUmUuR3JvdXAub2Zmc2V0IG0gaVxuICB8IE5vbmUgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGdyb3VwX2xlbiBpID1cbiAgdHJ5XG4gICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBpIGluXG4gICAgZSAtIGJcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAwXG5cbmxldCByZWMgcmVwbF9sZW5ndGggcmVwbCBwIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgaWYgcmVwbC5bcF0gPD4gJ1xcXFwnIHRoZW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSAocSArIDEpIGxlblxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBwID0gcCArIDEgaW5cbiAgICAgIGlmIHAgPSBsZW4gdGhlbiBmYWlsd2l0aCBcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiO1xuICAgICAgbGV0IHEgPVxuICAgICAgICBtYXRjaCByZXBsLltwXSB3aXRoXG4gICAgICAgIHwgJ1xcXFwnIC0+IHEgKyAxXG4gICAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IHEgKyBncm91cF9sZW4gKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJylcbiAgICAgICAgfCBfIC0+IHEgKyAyIGluXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgcSBsZW5cbiAgICBlbmRcbiAgZW5kIGVsc2VcbiAgICBxXG5cbmxldCByZWMgcmVwbGFjZSBvcmlnIHJlcGwgcCByZXMgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBsZXQgYyA9IHJlcGwuW3BdIGluXG4gICAgaWYgYyA8PiAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgQnl0ZXMuc2V0IHJlcyBxIGM7XG4gICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDEpIHJlcyAocSArIDEpIGxlblxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCByZXBsLltwICsgMV0gd2l0aFxuICAgICAgICAnXFxcXCcgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAxKSBsZW5cbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICAgIGxldCBkID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgICAgIGxldCBkID0gZSAtIGIgaW5cbiAgICAgICAgICAgIGlmIGQgPiAwIHRoZW4gU3RyaW5nLmJsaXQgb3JpZyBiIHJlcyBxIGQ7XG4gICAgICAgICAgICBkXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIDBcbiAgICAgICAgaW5cbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyBkKSBsZW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICBCeXRlcy5zZXQgcmVzIChxICsgMSkgYztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAyKSBsZW5cbiAgICBlbmRcbiAgZW5kXG5cbmxldCByZXBsYWNlbWVudF90ZXh0IHJlcGwgb3JpZyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHJlcGwgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocmVwbF9sZW5ndGggcmVwbCAwIDAgbGVuKSBpblxuICByZXBsYWNlIG9yaWcgcmVwbCAwIHJlcyAwIChTdHJpbmcubGVuZ3RoIHJlcGwpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBzdHJpbmdfYmVmb3JlIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IGZpcnN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IGxhc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIChTdHJpbmcubGVuZ3RoIHMgLSBuKSBuXG5cbmxldCByZWdleHAgZSA9IGNvbXBpbGVfcmVnZXhwIGUgZmFsc2VcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgZSA9IGNvbXBpbGVfcmVnZXhwIGUgdHJ1ZVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIGZhbHNlXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIHRydWVcblxubGV0IGdyb3VwX2JlZ2lubmluZyBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2JlZ2lubmluZ1wiO1xuICBsZXQgcG9zID0gZnN0IChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBncm91cF9lbmQgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9lbmRcIjtcbiAgbGV0IHBvcyA9IHNuZCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgbWF0Y2hlZF9ncm91cCBuIHR4dCA9XG4gIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgbiBpblxuICBTdHJpbmcuc3ViIHR4dCBiIChlIC0gYilcblxubGV0IHJlcGxhY2VfbWF0Y2hlZCByZXBsIG1hdGNoZWQgPSByZXBsYWNlbWVudF90ZXh0IHJlcGwgbWF0Y2hlZFxuXG5sZXQgbWF0Y2hfYmVnaW5uaW5nICgpID0gZ3JvdXBfYmVnaW5uaW5nIDBcbmFuZCBtYXRjaF9lbmQgKCkgPSBncm91cF9lbmQgMFxuYW5kIG1hdGNoZWRfc3RyaW5nIHR4dCA9IG1hdGNoZWRfZ3JvdXAgMCB0eHRcblxubGV0IHN1YnN0aXR1dGVfZmlyc3QgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCAwIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtzdHJpbmdfYmVmb3JlIHRleHQgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgIHJlcGxfZnVuIHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2FmdGVyIHRleHQgKG1hdGNoX2VuZCAoKSldXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdGV4dFxuXG5sZXQgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgbGV0IHJlYyByZXBsYWNlIGFjY3Ugc3RhcnQgbGFzdF93YXNfZW1wdHkgPVxuICAgIGxldCBzdGFydHBvcyA9IGlmIGxhc3Rfd2FzX2VtcHR5IHRoZW4gc3RhcnQgKyAxIGVsc2Ugc3RhcnQgaW5cbiAgICBpZiBzdGFydHBvcyA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgc3RhcnRwb3Mgd2l0aFxuICAgICAgfCBwb3MgLT5cbiAgICAgICAgbGV0IGVuZF9wb3MgPSBtYXRjaF9lbmQgKCkgaW5cbiAgICAgICAgbGV0IHJlcGxfdGV4dCA9IHJlcGxfZnVuIHRleHQgaW5cbiAgICAgICAgcmVwbGFjZSAocmVwbF90ZXh0IDo6IFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIGVuZF9wb3MgKGVuZF9wb3MgPSBwb3MpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gIGluXG4gIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgKHJlcGxhY2UgW10gMCBmYWxzZSkpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSBleHByIHJlcGwgdGV4dCA9XG4gIGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuYW5kIHJlcGxhY2VfZmlyc3QgZXhwciByZXBsIHRleHQgPVxuICBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuXG5sZXQgc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgcmUgcyBwID1cbiAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCBpblxuICBpZiBtYXRjaF9lbmQgKCkgPiBwIHRoZW5cbiAgICBwb3NcbiAgZWxzZSBpZiBwIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBzZWFyY2hfZm9yd2FyZCByZSBzIChwICsgMSlcbiAgZWxzZVxuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgYm91bmRlZF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBpZiBzdHJpbmdfbWF0Y2ggZXhwciB0ZXh0IDAgdGhlbiBtYXRjaF9lbmQgKCkgZWxzZSAwIGluXG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSBzdGFydCBudW0pXG5cbmxldCBzcGxpdCBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCAwXG5cbmxldCBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBpZiB0ZXh0ID0gXCJcIiB0aGVuXG4gICAgW11cbiAgZWxzZVxuICAgIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IHNwbGl0X2RlbGltIGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IDBcblxudHlwZSBzcGxpdF9yZXN1bHQgPSBUZXh0IG9mIHN0cmluZyB8IERlbGltIG9mIHN0cmluZ1xuXG5sZXQgYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgbGV0IHMgPSBtYXRjaGVkX3N0cmluZyB0ZXh0IGluXG4gICAgICAgIGlmIHBvcyA+IHN0YXJ0IHRoZW5cbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6XG4gICAgICAgICAgICAgICAgIFRleHQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zIC0gc3RhcnQpKSA6OlxuICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OiBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgZnVsbF9zcGxpdCBleHByIHRleHQgPSBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IDBcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgZW5jbG9zZWQgPVxuICB8IENoYXIgb2YgY2hhclxuICB8IFJhbmdlIG9mIGNoYXIgKiBjaGFyXG5cbnR5cGUgcGllY2UgPVxuICB8IEV4YWN0bHkgb2YgY2hhclxuICB8IEFueV9vZiBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgQW55X2J1dCBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgT25lXG4gIHwgTWFueVxuICB8IE1hbnlNYW55XG5cbnR5cGUgdCA9IHBpZWNlIGxpc3RcblxubGV0IG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMgOiB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCByZWFkIGMgPVxuICAgIGxldCByID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgICBpZiByIHRoZW4gaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICAoKipcbiAgIFtyZWFkX2FoZWFkIHBhdHRlcm5dIHdpbGwgYXR0ZW1wdCB0byByZWFkIFtwYXR0ZXJuXSBhbmQgd2lsbCByZXR1cm4gW3RydWVdIGlmIGl0IHdhcyBzdWNjZXNzZnVsLlxuICAgSWYgaXQgZmFpbHMsIGl0IHdpbGwgcmV0dXJuIFtmYWxzZV0gYW5kIG5vdCBpbmNyZW1lbnQgdGhlIHJlYWQgaW5kZXguXG4gICopXG4gIGxldCByZWFkX2FoZWFkIHBhdHRlcm4gPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggcGF0dGVybiBpblxuICAgICgqIGlmIHRoZSBwYXR0ZXJuIHdlIGFyZSBsb29raW5nIGZvciBleGVlZHMgdGhlIHJlbWFpbmluZyBsZW5ndGggb2YgcywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5ICopXG4gICAgaWYgIWkgKyBwYXR0ZXJuX2xlbiA+PSBsIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMCB0byBwYXR0ZXJuX2xlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgZm91bmQgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWkgKyBqXSA9IHBhdHRlcm4uW2pdIGluXG4gICAgICAgICAgaWYgbm90IGZvdW5kIHRoZW4gcmFpc2Vfbm90cmFjZSBFeGl0O1xuICAgICAgICBkb25lO1xuICAgICAgICBpIDo9ICFpICsgcGF0dGVybl9sZW47XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggfCBFeGl0ICAtPiBmYWxzZVxuICBpblxuXG4gIGxldCBjaGFyICgpID1cbiAgICBpZ25vcmUgKHJlYWQgJ1xcXFwnIDogYm9vbCk7XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IHIgPSBzLlshaV0gaW5cbiAgICBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gIGxldCBlbmNsb3NlZCAoKSA6IGVuY2xvc2VkIGxpc3QgPVxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgICgqIFRoaXMgcmV0dXJucyB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyLCBidXQgb3JkZXIgaXNuJ3QgaW1wb3J0YW50IGFueXdheSAqKVxuICAgICAgaWYgcyA8PiBbXSAmJiByZWFkICddJ1xuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgICBpZiBub3QgKHJlYWQgJy0nKVxuICAgICAgICB0aGVuIGxvb3AgKENoYXIgYyA6OiBzKVxuICAgICAgICBlbHNlIGlmIHJlYWQgJ10nXG4gICAgICAgIHRoZW4gQ2hhciBjIDo6IENoYXIgJy0nIDo6IHNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBsb29wIChSYW5nZSAoYywgYycpIDo6IHMpXG4gICAgaW5cbiAgICBsb29wIFtdXG4gIGluXG5cbiAgbGV0IHBpZWNlICgpID1cbiAgICBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZF9haGVhZCBcIi8qKlwiICYmIG5vdCAoZW9zICgpKVxuICAgIHRoZW4gTWFueU1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJyonXG4gICAgdGhlbiBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZCAnKidcbiAgICAgIHRoZW4gTWFueU1hbnlcbiAgICAgIGVsc2UgTWFueVxuICAgIGVsc2UgaWYgcmVhZCAnPydcbiAgICB0aGVuIE9uZVxuICAgIGVsc2UgaWYgbm90IChyZWFkICdbJylcbiAgICB0aGVuIEV4YWN0bHkgKGNoYXIgKCkpXG4gICAgZWxzZSBpZiByZWFkICdeJyB8fCByZWFkICchJ1xuICAgIHRoZW4gQW55X2J1dCAoZW5jbG9zZWQgKCkpXG4gICAgZWxzZSBBbnlfb2YgKGVuY2xvc2VkICgpKVxuICBpblxuXG4gIGxldCByZWMgbG9vcCBwaWVjZXMgPVxuICAgIGlmIGVvcyAoKVxuICAgIHRoZW4gTGlzdC5yZXYgcGllY2VzXG4gICAgZWxzZSBsb29wIChwaWVjZSAoKSA6OiBwaWVjZXMpXG4gIGluXG5cbiAgbG9vcCBbXVxuXG5sZXQgbXVsIGwgbCcgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gcyAtPiBMaXN0Lm1hcCAoZnVuIHMnIC0+IHMgXiBzJykgbCcpIGwpXG5cbmxldCBleHBsb2RlIHN0ciA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBleHBsIGlubmVyIHMgaSBhY2MgYmVnID1cbiAgICBpZiBpID49IGwgdGhlbiBiZWdpblxuICAgICAgaWYgaW5uZXIgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldLCBpKVxuICAgIGVuZCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXFwnIC0+IGV4cGwgaW5uZXIgcyAoaSArIDIpIGFjYyBiZWdcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIGxldCAodCwgaScpID0gZXhwbCB0cnVlIChpICsgMSkgKGkgKyAxKSBbXSBbXCJcIl0gaW5cbiAgICAgICAgZXhwbCBpbm5lciBpJyBpJyBhY2NcbiAgICAgICAgICAobXVsIGJlZyAobXVsIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIHQpKVxuICAgICAgfCAnLCcgd2hlbiBpbm5lciAtPlxuICAgICAgICBleHBsIGlubmVyIChpICsgMSkgKGkgKyAxKVxuICAgICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjKSBbXCJcIl1cbiAgICAgIHwgJ30nIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MsIGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgcyAoaSArIDEpIGFjYyBiZWdcbiAgaW5cbiAgTGlzdC5yZXYgKGZzdCAoZXhwbCBmYWxzZSAwIDAgW10gW1wiXCJdKSlcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZV9waWVjZXMgICAgICAgICAgICAgICAgOiBSZS50IGxpc3Q7ICAoKiBsYXN0IHBpZWNlIGF0IGhlYWQgb2YgbGlzdC4gKilcbiAgICByZW1haW5pbmcgICAgICAgICAgICAgICAgOiBwaWVjZSBsaXN0OyAoKiBsYXN0IHBpZWNlIGF0IHRhaWwgb2YgbGlzdC4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuICAgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gb3IgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciAnLycgKilcbiAgICBwYXRobmFtZSAgICAgICAgICAgICAgICAgOiBib29sO1xuICAgIG1hdGNoX2JhY2tzbGFzaGVzICAgICAgICA6IGJvb2w7XG4gICAgcGVyaW9kICAgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfnBlcmlvZCB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIHJlbWFpbmluZyA9XG4gICAge1xuICAgICAgcmVfcGllY2VzID0gW107XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gdHJ1ZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IHRydWU7XG4gICAgICBwYXRobmFtZTtcbiAgICAgIG1hdGNoX2JhY2tzbGFzaGVzO1xuICAgICAgcGVyaW9kO1xuICAgICAgcmVtYWluaW5nO1xuICAgIH1cblxuICBsZXQgZXhwbGljaXRfcGVyaW9kIHQgPVxuICAgIHQucGVyaW9kICYmIChcbiAgICAgIHQuYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiB8fFxuICAgICAgKHQuYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ICYmIHQucGF0aG5hbWUpXG4gICAgKVxuXG4gIGxldCBleHBsaWNpdF9zbGFzaCB0ID0gdC5wYXRobmFtZVxuXG4gIGxldCBzbGFzaGVzIHQgPVxuICAgIGlmIHQubWF0Y2hfYmFja3NsYXNoZXMgdGhlbiBbJy8nOyAnXFxcXCddIGVsc2UgWycvJ11cblxuICBsZXQgYXBwZW5kID8oYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50PWZhbHNlKSB0IHBpZWNlID1cbiAgICB7IHQgd2l0aFxuICAgICAgcmVfcGllY2VzID0gcGllY2UgOjogdC5yZV9waWVjZXM7XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gZmFsc2U7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ7XG4gICAgfVxuXG4gIGxldCB0b19yZSB0ID0gUmUuc2VxIChMaXN0LnJldiB0LnJlX3BpZWNlcylcblxuICBsZXQgbmV4dCB0ID1cbiAgICBtYXRjaCB0LnJlbWFpbmluZyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBwaWVjZSA6OiByZW1haW5pbmcgLT4gU29tZSAocGllY2UsIHsgdCB3aXRoIHJlbWFpbmluZyB9KVxuZW5kXG5cbmxldCBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgPVxuICBSZS5jb21wbCAoXG4gICAgTGlzdC5jb25jYXQgW1xuICAgICAgaWYgZXhwbGljaXRfc2xhc2ggIHRoZW4gTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzIGVsc2UgW107XG4gICAgICBpZiBleHBsaWNpdF9wZXJpb2QgdGhlbiBbUmUuY2hhciAnLiddIGVsc2UgW107XG4gICAgXVxuICApXG5cbmxldCBlbmNsb3NlZCBlbmNsb3NlZCA9XG4gIG1hdGNoIGVuY2xvc2VkIHdpdGhcbiAgfCBDaGFyIGMgLT4gUmUuY2hhciBjXG4gIHwgUmFuZ2UgKGxvdywgaGlnaCkgLT4gUmUucmcgbG93IGhpZ2hcblxubGV0IGVuY2xvc2VkX3NldCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBraW5kIHNldCA9XG4gIGxldCBzZXQgPSBMaXN0Lm1hcCBlbmNsb3NlZCBzZXQgaW5cbiAgbGV0IGVuY2xvc3VyZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQW55X29mIC0+IFJlLmFsdCBzZXRcbiAgICB8IGBBbnlfYnV0IC0+IFJlLmNvbXBsIHNldFxuICBpblxuICBSZS5pbnRlciBbZW5jbG9zdXJlOyBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2RdXG5cbmxldCBleGFjdGx5IHN0YXRlIGMgPVxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IExpc3QubWVtIGMgc2xhc2hlcyBpblxuICBsZXQgY2hhcnMgPSBpZiBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgdGhlbiBzbGFzaGVzIGVsc2UgW2NdIGluXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIGNoYXJzKSkgfmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudFxuXG5sZXQgbWFueV9tYW55IHN0YXRlID1cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IHN0YXRlLlN0YXRlLnBlcmlvZCAmJiBzdGF0ZS5TdGF0ZS5wYXRobmFtZSBpblxuICBsZXQgZmlyc3RfZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgbWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QgPVxuICAgIFJlLnNlcSBbXG4gICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgXVxuICBpblxuICAoKiBXZSBtdXN0IG1hdGNoIGNvbXBvbmVudHMgaW5kaXZpZHVhbGx5IHdoZW4gW3BlcmlvZF0gZmxhZyBpcyBzZXQsXG4gICAgIG1ha2luZyBzdXJlIHRvIG5vdCBtYXRjaCBbXCJmb28vLmJhclwiXS4gKilcbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChcbiAgICBSZS5zZXEgW1xuICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZDpmaXJzdF9leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgUmUucmVwIChcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyk7XG4gICAgICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCk7XG4gICAgICAgIF1cbiAgICAgICk7XG4gICAgXSlcblxubGV0IG1hbnkgKHN0YXRlIDogU3RhdGUudCkgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICAoKiBXaGV0aGVyIHdlIG11c3QgZXhwbGljaXRseSBtYXRjaCBwZXJpb2QgZGVwZW5kcyBvbiB0aGUgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgYnV0XG4gICAgIHNsYXNoZXMgYXJlIGVhc3kgdG8gZXhwbGljaXQgbWF0Y2guIFRoaXMgY29uZGl0aW9uYWwgc3BsaXRzIG91dCBzb21lIHNpbXBsZSBjYXNlcy5cbiAgKilcbiAgaWYgbm90IGV4cGxpY2l0X3BlcmlvZCB0aGVuIGJlZ2luXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCkpXG4gIGVuZCBlbHNlIGlmIG5vdCBleHBsaWNpdF9zbGFzaCB0aGVuIGJlZ2luXG4gICAgKCogSW4gdGhpcyBzdGF0ZSwgd2UgZXhwbGljaXRseSBtYXRjaCBwZXJpb2RzIG9ubHkgYXQgdGhlIHZlcnkgYmVnaW5uaW5nICopXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5vcHQgKFxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICApKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIGxldCBub3RfZW1wdHkgPVxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICBpblxuICAgICgqIFttYXliZV9lbXB0eV0gaXMgdGhlIGRlZmF1bHQgdHJhbnNsYXRpb24gb2YgTWFueSwgZXhjZXB0IGluIHNvbWUgc3BlY2lhbCBjYXNlcy5cbiAgICAqKVxuICAgIGxldCBtYXliZV9lbXB0eSA9IFJlLm9wdCBub3RfZW1wdHkgaW5cbiAgICBsZXQgZW5jbG9zZWRfc2V0IHN0YXRlIGtpbmQgc2V0ID1cbiAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IFtcbiAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBub3RfZW1wdHk7XG4gICAgICAgICAgKCogU2luY2UgW25vdF9lbXB0eV0gbWF0Y2hlZCwgc3Vic2VxdWVudCBkb3RzIGFyZSBub3QgbGVhZGluZy4gKilcbiAgICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZTtcbiAgICAgICAgXTtcbiAgICAgIF0pXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb2thaGVhZCBzdGF0ZSA9XG4gICAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbWF5YmVfZW1wdHlcbiAgICAgICgqIGdsb2IgKiogPT09IGdsb2IgKiAuICopXG4gICAgICB8IFNvbWUgKE1hbnksIHN0YXRlKSAtPiBsb29rYWhlYWQgc3RhdGVcbiAgICAgIHwgU29tZSAoRXhhY3RseSBjLCBzdGF0ZSkgLT5cbiAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICBTdGF0ZS5hcHBlbmQgc3RhdGVcbiAgICAgICAgICAgIChpZiBjID0gJy4nXG4gICAgICAgICAgICAgdGhlbiBub3RfZW1wdHlcbiAgICAgICAgICAgICBlbHNlIG1heWJlX2VtcHR5KVxuICAgICAgICBpblxuICAgICAgICBleGFjdGx5IHN0YXRlIGNcbiAgICAgICgqIGdsb2IgKj8gPT09IGdsb2IgPyogKilcbiAgICAgIHwgU29tZSAoT25lLCBzdGF0ZSkgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG5vdF9lbXB0eVxuICAgICAgfCBTb21lIChBbnlfb2YgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9vZiBlbmNsb3NlZFxuICAgICAgfCBTb21lIChBbnlfYnV0IGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfYnV0IGVuY2xvc2VkXG4gICAgICAoKiAqIHRoZW4gKiogPT09ICoqICopXG4gICAgICB8IFNvbWUgKE1hbnlNYW55LCBzdGF0ZSkgLT4gbWFueV9tYW55IHN0YXRlXG4gICAgaW5cbiAgICBsb29rYWhlYWQgc3RhdGVcbiAgZW5kXG5cbmxldCBwaWVjZSBzdGF0ZSBwaWVjZSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIG1hdGNoIHBpZWNlIHdpdGhcbiAgfCBPbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpXG4gIHwgTWFueSAtPiBtYW55IHN0YXRlXG4gIHwgQW55X29mIGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9vZiB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBBbnlfYnV0IGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9idXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgRXhhY3RseSBjIC0+IGV4YWN0bHkgc3RhdGUgY1xuICB8IE1hbnlNYW55IC0+IG1hbnlfbWFueSBzdGF0ZVxuXG5sZXQgZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYiA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IFN0YXRlLnRvX3JlIHN0YXRlXG4gICAgfCBTb21lIChwLCBzdGF0ZSkgLT4gbG9vcCAocGllY2Ugc3RhdGUgcClcbiAgaW5cbiAgbG9vcCAoU3RhdGUuY3JlYXRlIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iKVxuXG5sZXQgZ2xvYlxuICAgICAgPyhhbmNob3JlZCA9IGZhbHNlKVxuICAgICAgPyhwYXRobmFtZSA9IHRydWUpXG4gICAgICA/KG1hdGNoX2JhY2tzbGFzaGVzID0gZmFsc2UpXG4gICAgICA/KHBlcmlvZCA9IHRydWUpXG4gICAgICA/KGV4cGFuZF9icmFjZXMgPSBmYWxzZSlcbiAgICAgID8oZG91YmxlX2FzdGVyaXNrID0gdHJ1ZSlcbiAgICAgIHNcbiAgPVxuICBsZXQgdG9fcmUgcyA9XG4gICAgbGV0IHJlID0gZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgKG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMpIGluXG4gICAgaWYgYW5jaG9yZWRcbiAgICB0aGVuIFJlLndob2xlX3N0cmluZyByZVxuICAgIGVsc2UgcmVcbiAgaW5cbiAgaWYgZXhwYW5kX2JyYWNlc1xuICB0aGVuIFJlLmFsdCAoTGlzdC5tYXAgdG9fcmUgKGV4cGxvZGUgcykpXG4gIGVsc2UgdG9fcmUgc1xuXG5sZXQgZ2xvYicgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfnBlcmlvZCBzXG5cbmxldCBnbG9ieCA/YW5jaG9yZWQgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgc1xuXG5sZXQgZ2xvYngnID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgfnBlcmlvZCBzXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBvc2l4X2NsYXNzX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJhbHBoYVwiICAtPiBSZS5hbHBoYVxuICB8IFwiYWxudW1cIiAgLT4gUmUuYWxudW1cbiAgfCBcImFzY2lpXCIgIC0+IFJlLmFzY2lpXG4gIHwgXCJibGFua1wiICAtPiBSZS5ibGFua1xuICB8IFwiY250cmxcIiAgLT4gUmUuY250cmxcbiAgfCBcImRpZ2l0XCIgIC0+IFJlLmRpZ2l0XG4gIHwgXCJsb3dlclwiICAtPiBSZS5sb3dlclxuICB8IFwicHJpbnRcIiAgLT4gUmUucHJpbnRcbiAgfCBcInNwYWNlXCIgIC0+IFJlLnNwYWNlXG4gIHwgXCJ1cHBlclwiICAtPiBSZS51cHBlclxuICB8IFwid29yZFwiICAgLT4gUmUud29yZGNcbiAgfCBcInB1bmN0XCIgIC0+IFJlLnB1bmN0XG4gIHwgXCJncmFwaFwiICAtPiBSZS5ncmFwaFxuICB8IFwieGRpZ2l0XCIgLT4gUmUueGRpZ2l0XG4gIHwgY2xhc3NfICAgLT4gaW52YWxpZF9hcmcgKFwiSW52YWxpZCBwY3JlIGNsYXNzOiBcIiBeIGNsYXNzXylcblxubGV0IHBvc2l4X2NsYXNzX3N0cmluZ3MgPVxuICBbIFwiYWxwaGFcIiA7IFwiYWxudW1cIiA7IFwiYXNjaWlcIlxuICA7IFwiYmxhbmtcIiA7IFwiY250cmxcIiA7IFwiZGlnaXRcIlxuICA7IFwibG93ZXJcIiA7IFwicHJpbnRcIiA7IFwic3BhY2VcIlxuICA7IFwidXBwZXJcIiA7IFwid29yZFwiICA7IFwicHVuY3RcIlxuICA7IFwiZ3JhcGhcIiA7IFwieGRpZ2l0XCIgXVxuXG5sZXQgcGFyc2UgbXVsdGlsaW5lIGRvbGxhcl9lbmRvbmx5IGRvdGFsbCB1bmdyZWVkeSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHRfcyBzJyA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcycgaW5cbiAgICB0cnlcbiAgICAgIGZvciBqID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHRyeSBpZiBzJy5bal0gPD4gcy5bIWkgKyBqXSB0aGVuIHJhaXNlIEV4aXRcbiAgICAgICAgd2l0aCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBpIDo9ICFpICsgbGVuO1xuICAgICAgdHJ1ZVxuICAgIHdpdGggRXhpdCAtPiBmYWxzZSBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuICBsZXQgZ3JlZWR5X21vZCByID1cbiAgICBsZXQgZ3IgPSBhY2NlcHQgJz8nIGluXG4gICAgbGV0IGdyID0gaWYgdW5ncmVlZHkgdGhlbiBub3QgZ3IgZWxzZSBnciBpblxuICAgIGlmIGdyIHRoZW4gUmUubm9uX2dyZWVkeSByIGVsc2UgUmUuZ3JlZWR5IHJcbiAgaW5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAxIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gZ3JlZWR5X21vZCAoUmUub3B0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGdyZWVkeV9tb2QgKFJlLnJlcG4gciBpIGopXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgZG90YWxsIHRoZW4gUmUuYW55IGVsc2UgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPycgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICByXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnIycgdGhlbiBiZWdpblxuICAgICAgICAgIGNvbW1lbnQgKClcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lICgpIGluXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgUmUuZ3JvdXAgfm5hbWUgclxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmVvbCBlbHNlIGlmIGRvbGxhcl9lbmRvbmx5IHRoZW4gUmUubGVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4oKiBYWFhcbiAgIC0gQmFjay1yZWZlcmVuY2VzXG4gICAtIFxcY3ggKGNvbnRyb2wteCksIFxcZGRkXG4qKVxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAndycgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ1cnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgUmUuc3BhY2VcbiAgICAgIHwgJ1MnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLnNwYWNlXVxuICAgICAgfCAnZCcgLT5cbiAgICAgICAgICBSZS5kaWdpdFxuICAgICAgfCAnRCcgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuZGlnaXRdXG4gICAgICB8ICdiJyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICB8ICdCJyAtPlxuICAgICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgfCAnQScgLT5cbiAgICAgICAgICBSZS5ib3NcbiAgICAgIHwgJ1onIC0+XG4gICAgICAgICAgUmUubGVvbFxuICAgICAgfCAneicgLT5cbiAgICAgICAgICBSZS5lb3NcbiAgICAgIHwgJ0cnIC0+XG4gICAgICAgICAgUmUuc3RhcnRcbiAgICAgIHwgJ2UnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MWInXG4gICAgICB8ICdmJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDBjJ1xuICAgICAgfCAnbicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXG4nXG4gICAgICB8ICdyJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xccidcbiAgICAgIHwgJ3QnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx0J1xuICAgICAgfCAneCcgLT5cbiAgICAgICAgICBsZXQgYzEgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjMiA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGNvZGUgPSBjMSAqIDE2ICsgYzIgaW5cbiAgICAgICAgICBSZS5jaGFyIChjaGFyX29mX2ludCBjb2RlKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBSZS5jaGFyIGNcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGhleGRpZ2l0ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdhJy4uJ2YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8ICdBJy4uJ0YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIG5hbWUgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicpIGFzIGMgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAzMiBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIG5hbWUnIGIgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JykgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8ICc+JyAtPiBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgfCBgQ2hhciBjIC0+XG4gICAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgICAgICAgICAgYENoYXIgYycgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICAgICAgfCBgU2V0IHN0JyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogc3QnIDo6IHMpXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgICB8IGBTZXQgc3QgLT4gYnJhY2tldCAoc3QgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgIGlmIGFjY2VwdCAnOicgdGhlblxuICAgICAgICBsZXQgY29tcGwgPSBhY2NlcHQgJ14nIGluXG4gICAgICAgIGxldCBjbHMgPVxuICAgICAgICAgIHRyeSBMaXN0LmZpbmQgYWNjZXB0X3MgcG9zaXhfY2xhc3Nfc3RyaW5nc1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIFBhcnNlX2Vycm9yIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0X3MgXCI6XVwiKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgcmUgPVxuICAgICAgICAgIGxldCBwb3NpeF9jbGFzcyA9IHBvc2l4X2NsYXNzX29mX3N0cmluZyBjbHMgaW5cbiAgICAgICAgICBpZiBjb21wbCB0aGVuIFJlLmNvbXBsIFtwb3NpeF9jbGFzc10gZWxzZSBwb3NpeF9jbGFzcyBpblxuICAgICAgICBgU2V0IChyZSlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBgQ2hhciBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2UgaWYgYyA9ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4oKiBYWFhcbiAgIFxcMTI3LCAuLi5cbiopXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJ2InIC0+IGBDaGFyICdcXDAwOCdcbiAgICAgIHwgJ24nIC0+IGBDaGFyICdcXG4nICgqWFhYKilcbiAgICAgIHwgJ3InIC0+IGBDaGFyICdcXHInICgqWFhYKilcbiAgICAgIHwgJ3QnIC0+IGBDaGFyICdcXHQnICgqWFhYKilcbiAgICAgIHwgJ3cnIC0+IGBTZXQgKFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ1cnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAncycgLT4gYFNldCAoUmUuc3BhY2UpXG4gICAgICB8ICdTJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuc3BhY2VdKVxuICAgICAgfCAnZCcgLT4gYFNldCAoUmUuZGlnaXQpXG4gICAgICB8ICdEJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuZGlnaXRdKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGBDaGFyIGNcbiAgYW5kIGNvbW1lbnQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGlmIGFjY2VwdCAnKScgdGhlbiBSZS5lcHNpbG9uIGVsc2UgYmVnaW4gaW5jciBpOyBjb21tZW50ICgpIGVuZFxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPVxuICBbIGBVbmdyZWVkeSB8IGBEb3RhbGwgfCBgRG9sbGFyX2VuZG9ubHlcbiAgfCBgTXVsdGlsaW5lIHwgYEFuY2hvcmVkIHwgYENhc2VsZXNzIF1cblxubGV0IHJlICA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID1cbiAgICBwYXJzZVxuICAgICAgKExpc3QubWVtcSBgTXVsdGlsaW5lIG9wdHMpIChMaXN0Lm1lbXEgYERvbGxhcl9lbmRvbmx5IG9wdHMpXG4gICAgICAoTGlzdC5tZW1xIGBEb3RhbGwgb3B0cykgKExpc3QubWVtcSBgVW5ncmVlZHkgb3B0cylcbiAgICAgIHNcbiAgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYEFuY2hvcmVkIG9wdHMgdGhlbiBSZS5zZXEgW1JlLnN0YXJ0OyByXSBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYENhc2VsZXNzIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwibW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQZXJsLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZCA9IFBlcmwuTm90X3N1cHBvcnRlZFxuXG50eXBlIHJlZ2V4cCA9IFJlLnJlXG5cbnR5cGUgZmxhZyA9IFsgYENBU0VMRVNTIHwgYE1VTFRJTElORSB8IGBBTkNIT1JFRCB8IGBET1RBTEwgXVxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9XG4gIHwgVGV4dCAgb2Ygc3RyaW5nXG4gIHwgRGVsaW0gb2Ygc3RyaW5nXG4gIHwgR3JvdXAgb2YgaW50ICogc3RyaW5nXG4gIHwgTm9Hcm91cFxuXG50eXBlIGdyb3VwcyA9IENvcmUuR3JvdXAudFxuXG5sZXQgcmUgPyhmbGFncyA9IFtdKSBwYXQgPVxuICBsZXQgb3B0cyA9IExpc3QubWFwIChmdW5jdGlvblxuICAgIHwgYENBU0VMRVNTIC0+IGBDYXNlbGVzc1xuICAgIHwgYE1VTFRJTElORSAtPiBgTXVsdGlsaW5lXG4gICAgfCBgQU5DSE9SRUQgLT4gYEFuY2hvcmVkXG4gICAgfCBgRE9UQUxMIC0+IGBEb3RhbGxcbiAgKSBmbGFncyBpblxuICBQZXJsLnJlIH5vcHRzIHBhdFxuXG5sZXQgcmVnZXhwID9mbGFncyBwYXQgPSBSZS5jb21waWxlIChyZSA/ZmxhZ3MgcGF0KVxuXG5sZXQgZXh0cmFjdCB+cmV4IHMgPVxuICBSZS5Hcm91cC5hbGwgKFJlLmV4ZWMgcmV4IHMpXG5cbmxldCBleGVjIH5yZXggP3BvcyBzID1cbiAgUmUuZXhlYyByZXggP3BvcyBzXG5cbmxldCBnZXRfc3Vic3RyaW5nIHMgaSA9XG4gIFJlLkdyb3VwLmdldCBzIGlcblxubGV0IG5hbWVzIHJleCA9XG4gIFJlLmdyb3VwX25hbWVzIHJleFxuICB8PiBMaXN0Lm1hcCBmc3RcbiAgfD4gQXJyYXkub2ZfbGlzdFxuXG5sZXQgZ2V0X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgKG4sIGkpIDo6IHJlbSB3aGVuIG4gPSBuYW1lIC0+XG4gICAgICAgYmVnaW5cbiAgICAgICAgIHRyeSBnZXRfc3Vic3RyaW5nIHMgaVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gbG9vcCByZW1cbiAgICAgICBlbmRcbiAgICB8IF8gOjogcmVtIC0+IGxvb3AgcmVtXG4gIGluXG4gIGxvb3AgKFJlLmdyb3VwX25hbWVzIHJleClcblxubGV0IGdldF9zdWJzdHJpbmdfb2ZzIHMgaSA9XG4gIFJlLkdyb3VwLm9mZnNldCBzIGlcblxubGV0IHBtYXRjaCB+cmV4IHMgPVxuICBSZS5leGVjcCByZXggc1xuXG5sZXQgc3Vic3RpdHV0ZSB+cmV4IH5zdWJzdCBzdHIgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcGF0ID0gUmUuR3JvdXAuZ2V0IHNzIDAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3Vic3QgcGF0KTtcbiAgICAgIGxvb3AgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpO1xuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKVxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IH5yZXggc3RyID1cbiAgbGV0IHJlYyBsb29wIGFjY3UgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgTGlzdC5yZXYgYWNjdVxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChzdGFydCAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgICkgaW5cbiAgbG9vcCBbXSAwXG5cbigqIEZyb20gUENSRSAqKVxubGV0IHN0cmluZ191bnNhZmVfc3ViIHMgb2ZzIGxlbiA9XG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBCeXRlcy51bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKGxlbiBsc2wgMSkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICB8ICdcXFxcJyB8ICdeJyB8ICckJyB8ICcuJyB8ICdbJyB8ICd8J1xuICAgIHwgJygnICB8ICcpJyB8ICc/JyB8ICcqJyB8ICcrJyB8ICd7JyBhcyBjIC0+XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zICdcXFxcJztcbiAgICAgIGluY3IgcG9zO1xuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICAgIHwgYyAtPiBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gIGRvbmU7XG4gIHN0cmluZ191bnNhZmVfc3ViIGJ1ZiAwICFwb3NcblxubGV0IGZ1bGxfc3BsaXQgPyhtYXg9MCkgfnJleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMCB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtUZXh0IHNdXG4gIGVsc2VcbiAgICBsZXQgcmVzdWx0cyA9IFJlLnNwbGl0X2Z1bGwgcmV4IHMgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBgVGV4dCBzIC0+IFtUZXh0IHNdXG4gICAgICAgIHwgYERlbGltIGQgLT5cbiAgICAgICAgICBsZXQgbWF0Y2hlcyA9IFJlLkdyb3VwLmFsbF9vZmZzZXQgZCBpblxuICAgICAgICAgIGxldCBkZWxpbSA9IFJlLkdyb3VwLmdldCBkIDAgaW5cbiAgICAgICAgICAoRGVsaW0gZGVsaW0pOjooXG4gICAgICAgICAgICBsZXQgbCA9IHJlZiBbXSBpblxuICAgICAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBtYXRjaGVzIC0gMSBkb1xuICAgICAgICAgICAgICBsIDo9XG4gICAgICAgICAgICAgICAgKGlmIG1hdGNoZXMuKGkpID0gKC0xLCAtMSlcbiAgICAgICAgICAgICAgICAgdGhlbiBOb0dyb3VwXG4gICAgICAgICAgICAgICAgIGVsc2UgR3JvdXAgKGksIFJlLkdyb3VwLmdldCBkIGkpKVxuICAgICAgICAgICAgICAgIDo6KCFsKVxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIExpc3QucmV2ICFsKSkgcmVzdWx0cyBpblxuICAgIExpc3QuY29uY2F0IG1hdGNoZXNcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG4oKlxuV2hhdCB3ZSBjb3VsZCAoc2hvdWxkPykgZG86XG4tIGEqID09PiBsb25nZXN0ICgoc2hvcnRlc3QgKG5vX2dyb3VwIGEpKiApLCBhIHwgKCkpICAoISEhKVxuLSBhYmMgdW5kZXJzdG9vZCBhcyAoYWIpY1xuLSBcIigoYT8pfGIpXCIgYWdhaW5zdCBcImFiXCIgc2hvdWxkIG5vdCBiaW5kIHRoZSBmaXJzdCBzdWJwYXR0ZXJuIHRvIGFueXRoaW5nXG5cbk5vdGUgdGhhdCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaGFuZGxlIFwiKCgoYWIpYylkKWVcIiBlZmZpY2llbnRseVxuKilcbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgbmV3bGluZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgUmUucmVwbiAoUmUubmVzdCByKSBpIGpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUubm90bmwgZWxzZSBSZS5hbnlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBSZS5ncm91cCByXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5lb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5kaWZmIChSZS5jb21wbCAoYnJhY2tldCBbXSkpIChSZS5jaGFyICdcXG4nKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3wnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJz8nXG4gICAgICB8ICdbJyB8ICcuJyB8ICdeJyB8ICckJyB8ICd7JyB8ICdcXFxcJyBhcyBjIC0+IFJlLmNoYXIgY1xuICAgICAgfCAgICAgICAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWQgKCpYWFgqKVxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGNcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID0gW2BJQ2FzZSB8IGBOb1N1YiB8IGBOZXdsaW5lXVxuXG5sZXQgcmUgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9IHBhcnNlIChMaXN0Lm1lbXEgYE5ld2xpbmUgb3B0cykgcyBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgSUNhc2Ugb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYE5vU3ViIG9wdHMgdGhlbiBSZS5ub19ncm91cCByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlIHJlID0gUmUuY29tcGlsZSAoUmUubG9uZ2VzdCByZSlcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG5vcGVuIFN0b3JlXG5cbm1vZHVsZSBNYWtlIChTIDogU1RPUkUpID0gc3RydWN0XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBJbiB0aGlzIHZlcnNpb24gdGhlIGNvZGUsIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXN0IG5vdCBtdXRhYmxlLiBJbmRlZWQsXG4gICBldmVyeSBtdXRhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB2aWEgW1Muc2V0XS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiAnYSBycmVmXG58IFJvb3Qgb2YgcmFuayAqICdhXG5cbigqIFRoZSB0eXBlIFsnYSBycmVmXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgcnJlZiA9XG4gICdhIGNvbnRlbnQgUy5ycmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSB0eXBlIG9mIHN0b3JlcywgYW5kIHRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBuZXcgc3RvcmUsIGFyZSB0aG9zZVxuICAgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gW1NdLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgJ2EgY29udGVudCBTLnN0b3JlXG5cbmxldCBuZXdfc3RvcmUgOiB1bml0IC0+ICdhIHN0b3JlID1cbiAgUy5uZXdfc3RvcmVcblxubGV0IGNvcHkgOiAnYSBzdG9yZSAtPiAnYSBzdG9yZSA9XG4gIFMuY29weVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSBzIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIFMubWFrZSBzIChSb290ICgwLCB2KSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgcyB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCBfKSAtPlxuICAgICAgeFxuICB8IExpbmsgeSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHMgeSBpblxuICAgICAgaWYgUy5lcSBzIHkgeiB0aGVuXG4gICAgICAgIHpcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGxpbmtfdG9feiA9IFMuZ2V0IHMgeSBpblxuICAgICAgICBTLnNldCBzIHggbGlua190b196O1xuICAgICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgcyB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZSBzYW1lXG4gICBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYSBwaHlzaWNhbFxuICAgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF0gYW5kIFt5XSBhcmVcbiAgIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgUy5lcSBzIHggeSB8fCBTLmVxIHMgKGZpbmQgcyB4KSAoZmluZCBzIHkpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXRfIHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW2dldCBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChfLCB2KSAtPlxuICAgICAgICAgIHZcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgZ2V0XyBzIHhcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldF8gcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbc2V0IHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICAgICAgUy5zZXQgcyB5IChSb290IChyLCB2KSlcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgc2V0XyBzIHggdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24gcyB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgXykgLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpOyB5XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTsgeFxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4ICsgMSwgdngpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIHMgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIHZ5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpO1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiBTLnNldCBzIHkgKFJvb3QgKHJ5LCB2KSk7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIFMuc2V0IHMgeCAoUm9vdCAocngsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocngrMSwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBXZSBtYWtlIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXRhYmxlLCBhbmQgd2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXRcbiAgIGV2ZXJ5IHZlcnRleCB1bmlxdWVseSBvd25zIGl0cyBjb250ZW50LiBUaGlzIGFsbG93cyB1cyB0byB1cGRhdGUgYSBjb250ZW50XG4gICBpbiBwbGFjZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBuZXcgY29udGVudCBhbmQgdXBkYXRpbmcgdGhlIHZlcnRleCB3aXRoXG4gICB0aGlzIG5ldyBjb250ZW50LlxuXG4gICBXZSBvYnRhaW4gdGhlIHByb3BlcnR5IHRoYXQ6XG4gICAtIG9ubHkgW21ha2VdIGFsbG9jYXRlcyBhIG5ldyB2ZXJ0ZXggKGEgcmVmZXJlbmNlIGFuZCBhIFtSb290XSBjb250ZW50KTtcbiAgIC0gb25seSBbdW5pb25dIGFuZCBbbWVyZ2VdIGFsbG9jYXRlIGEgbmV3IGVkZ2UgKGEgW0xpbmtdIGNvbnRlbnQpLlxuICAgW2ZpbmRdLCBbZ2V0XSwgW3NldF0sIFtlcV0gYWxsb2NhdGUgbm8gbWVtb3J5LiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mIHsgbXV0YWJsZSBwYXJlbnQgOiAnYSBlbGVtIH1cbnwgUm9vdCBvZiB7IG11dGFibGUgcmFuayA6IHJhbms7IG11dGFibGUgdmFsdWUgOiAnYSB9XG5cbigqIFRoZSB0eXBlIFsnYSBlbGVtXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgZWxlbSA9XG4gICdhIGNvbnRlbnQgcmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlICh2IDogJ2EpIDogJ2EgZWxlbSA9XG4gIHJlZiAoUm9vdCB7IHJhbmsgPSAwOyB2YWx1ZSA9IHYgfSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBzbyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAoeCA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHhcbiAgfCBMaW5rICh7IHBhcmVudCA9IHkgfSBhcyBsaW5rKSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHkgaW5cbiAgICAgIGlmIHogIT0geSB0aGVuXG4gICAgICAgIGxpbmsucGFyZW50IDwtIHo7XG4gICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAoeCA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZVxuICAgc2FtZSBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYVxuICAgcGh5c2ljYWwgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF1cbiAgIGFuZCBbeV0gYXJlIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiBib29sID1cbiAgeCA9PSB5IHx8IGZpbmQgeCA9PSBmaW5kIHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldCB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0ICh4IDogJ2EgZWxlbSkgOiAnYSA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHsgdmFsdWUgPSB2OyBfIH0gLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0IHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXQgKHggOiAnYSBlbGVtKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCByb290IC0+XG4gICAgICByb290LnZhbHVlIDwtIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24geCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgXyB9IGFzIHJvb3R4KSwgUm9vdCB7IHJhbmsgPSByeTsgXyB9IC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyB2YWx1ZSA9IHZ4IH0gYXMgcm9vdHgpLFxuICAgICAgUm9vdCAoeyByYW5rID0gcnk7IHZhbHVlID0gdnkgfSBhcyByb290eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gcm9vdHkudmFsdWUgPC0gdjtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIElOVE1BUCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdmFsIGVtcHR5OiAnYSB0XG4gIHZhbCBmaW5kOiBpbnQgLT4gJ2EgdCAtPiAnYVxuICB2YWwgYWRkOiBpbnQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKEludE1hcCA6IElOVE1BUCkgPSBzdHJ1Y3RcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhIHBhaXIgb2YgYW4gaW50ZWdlciBhZGRyZXNzIGFuZCBhIG1hcCBvZlxuICAgaW50ZWdlciBhZGRyZXNzZXMgdG8gdmFsdWVzLiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlXG4gICBkb21haW4gb2YgdGhlIG1hcCBbY29udGVudF0gaXMgdGhlIHNlbWktb3BlbiBpbnRlcnZhbCBvZiB6ZXJvXG4gICAoaW5jbHVkZWQpIHVwIHRvIFtsaW1pdF0gKGV4Y2x1ZGVkKS4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgY29udGVudCBvZiB0aGUgc3RvcmUuICopXG4gIG11dGFibGUgY29udGVudDogJ2EgSW50TWFwLnRcbn1cblxubGV0IG5ld19zdG9yZSAoKSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gSW50TWFwLmVtcHR5XG59XG5cbigqIEJlY2F1c2UgYSBwZXJzaXN0ZW50IG1hcCBpcyB1c2VkLCBjb3B5aW5nIGEgc3RvcmUgYW1vdW50cyB0byBjb3B5aW5nXG4gICB0aGUgbXV0YWJsZSByZWNvcmQgYXQgdGhlIHJvb3QuICopXG5cbmxldCBjb3B5IHMgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGp1c3QgYW4gaW50ZWdlciBhZGRyZXNzLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxubGV0IG1ha2UgcyB2ID1cbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnQ7XG4gIHhcblxuKCogW2NoZWNrIHMgeF0gY2hlY2tzIHRoYXQgdGhlIGFkZHJlc3MgW3hdIGlzIGluIHJhbmdlIGZvciB0aGUgc3RvcmUgW3NdLiBJZlxuICAgdGhpcyBkeW5hbWljIGNoZWNrIGZhaWxzLCB0aGVuIHRoZSB1c2VyIGlzIGNvbmZ1c2VkIGFuZCBoYXMgcGFzc2VkIHVzIGFuXG4gICBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuIChJZiB0aGUgY2hlY2sgc3VjY2VlZHMsXG4gICB0aGUgdXNlciBtYXkgYmUgY29uZnVzZWQgdG9vISBidXQgd2UgY2Fubm90IGRldGVjdCBpdC4pICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgZ2V0IHMgeCA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBJbnRNYXAuZmluZCB4IHMuY29udGVudFxuXG5sZXQgc2V0IHMgeCB2ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnRcblxubGV0IGVxIHMgKHggOiBpbnQpICh5IDogaW50KSA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG5cbmVuZFxuXG4oKiBJbmNsdWRlIHRoZSBtb3N0IGNvbW1vbiBpbnN0YW5jZSBvZiB0aGUgYWJvdmUgZnVuY3Rvci4gKilcblxuaW5jbHVkZSBNYWtlKE1hcC5NYWtlKHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGNvbXBhcmUgPSAoLSkgKCogb2sgc2luY2UgdGhlIGFyZ3VtZW50cyBhcmUgbm9ubmVnYXRpdmUgaW50ZWdlcnMgKilcbmVuZCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogV2hlbiBPQ2FtbCdzIGJ1aWx0LWluIHN0b3JlIGlzIHVzZWQsIG5vIGV4cGxpY2l0IHN0b3JlIGlzIG5lZWRlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHVuaXRcblxubGV0IG5ld19zdG9yZSAoKSA9XG4gICgpXG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxuKCogQSByZWZlcmVuY2UgaXMgYSBwcmltaXRpdmUgcmVmZXJlbmNlLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICAnYSByZWZcblxubGV0IG1ha2UgKCkgdiA9XG4gIHJlZiB2XG5cbmxldCBnZXQgKCkgeCA9XG4gICF4XG5cbmxldCBzZXQgKCkgeCB2ID1cbiAgeCA6PSB2XG5cbmxldCBlcSAoKSB4IHkgPVxuICB4ID09IHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHJlZmVyZW5jZSBjZWxsIHJlY29yZHMgYm90aCBpdHMgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlIGFuZFxuICAgaXRzIGxhc3QgY29tbWl0dGVkIHZhbHVlLiBBIGNlbGwgaXMgY29uc2lkZXJlZCBzdGFibGUgd2hlbiB0aGVzZSB0d28gdmFsdWVzXG4gICBhcmUgKHBoeXNpY2FsbHkpIGVxdWFsLCBhbmQgdW5zdGFibGUgb3RoZXJ3aXNlLiAqKVxuXG4oKiBPbmUgY291bGQgcGVyaGFwcyBlbnJpY2ggZWFjaCBjZWxsIHdpdGggYSBwb2ludGVyIHRvIGl0cyBzdG9yZSwgc28gYXMgdG9cbiAgIGVuc3VyZSBhdCBydW50aW1lIHRoYXQgdGhlIHVzZXIgaXMgbm90IGNvbmZ1c2VkLiAqKVxuXG50eXBlICdhIHJyZWYgPSB7XG4gICgqIFRoZSBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUuICopXG4gIG11dGFibGUgY3VycmVudDogJ2E7XG4gICgqIFRoZSBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjb21taXR0ZWQ6ICdhXG59XG5cbigqIEEgdHJhbnNhY3Rpb24gY29udGFpbnMgYSBzdGFjayBvZiBhbGwgdW5zdGFibGUgY2VsbHMgKGFuZCBwb3NzaWJseSBzb21lXG4gICBzdGFibGUgY2VsbHMgdG9vLCBhbHRob3VnaCB0aGF0IGlzIHVubGlrZWx5KS4gKilcblxudHlwZSAnYSB0cmFuc2FjdGlvbiA9XG4gICdhIHJyZWYgU3RhY2sudFxuXG4oKiBBIHN0b3JlIGNvbnRhaW5zIGFuIG9wdGlvbmFsIHRyYW5zYWN0aW9uLiBUaGlzIGluZGljYXRlcyB3aGV0aGVyIGFcbiAgIHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBvbmdvaW5nLiBUcmFuc2FjdGlvbnMgY2Fubm90IGJlIG5lc3RlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHsgbXV0YWJsZSB0cmFuc2FjdGlvbjogJ2EgdHJhbnNhY3Rpb24gb3B0aW9uIH1cblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID1cbiAgeyB0cmFuc2FjdGlvbiA9IE5vbmUgfVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbmxldCBtYWtlIChfcyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICB7IGN1cnJlbnQgPSB2OyBjb21taXR0ZWQgPSB2IH1cblxubGV0IGdldCAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgeC5jdXJyZW50XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICAoKiBJZiB0aGUgbmV3IHZhbHVlIGhhcHBlbnMgdG8gYmUgdGhlIGN1cnJlbnQgdmFsdWUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uICopXG4gIGxldCBjdXJyZW50ID0geC5jdXJyZW50IGluXG4gIGlmIHYgPT0gY3VycmVudCB0aGVuXG4gICAgKClcbiAgZWxzZSBiZWdpbiBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKiBPdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24sIHR3byBub3JtYWwgd3JpdGUgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkLlxuICAgICAgICAgVGhlIGNlbGwgcmVtYWlucyBzdGFibGUuIE5vdGhpbmcgaXMgbG9nZ2VkLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHY7XG4gICAgICB4LmNvbW1pdHRlZCA8LSB2XG4gIHwgU29tZSBzdGFjayAtPlxuICAgICAgKCogV2UgYXJlIHdpdGhpbiBhIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgKCogSWYgdGhpcyBjZWxsIHdhcyBzdGFibGUgYW5kIG5vdyBiZWNvbWVzIHVuc3RhYmxlLCB0aGVuIGl0IG11c3QgYmVcbiAgICAgICAgIGluc2VydGVkIGludG8gdGhlIHNldCBvZiB1bnN0YWJsZSBjZWxscywgd2hpY2ggaXMgcmVjb3JkZWQgYXMgcGFydFxuICAgICAgICAgb2YgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgaWYgY3VycmVudCA9PSB4LmNvbW1pdHRlZCB0aGVuXG4gICAgICAgIFN0YWNrLnB1c2ggeCBzdGFjaztcbiAgICAgICgqIFRoZSBjZWxsIG11c3QgdGhlbiBiZSB1cGRhdGVkLiBJZiBbdl0gaGFwcGVucyB0byBiZSBlcXVhbCB0b1xuICAgICAgICAgW2NvbW1pdHRlZF0sIHRoaXMgY291bGQgbWFrZSB0aGUgY2VsbCBzdGFibGUgYWdhaW4uIFdlIGRvIG5vdFxuICAgICAgICAgY2hlY2sgZm9yIHRoaXMgdW5saWtlbHkgc2l0dWF0aW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNldCBvZlxuICAgICAgICAgdW5zdGFibGUgY2VsbHMgY291bGQgYWN0dWFsbHkgY29udGFpbiBzdGFibGUgY2VsbHMgdG9vLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHZcbiAgICBlbmRcblxubGV0IGVxIChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgeCA9PSB5XG5cbmV4Y2VwdGlvbiBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcblxubGV0IGNvbW1pdCB4ID1cbiAgeC5jb21taXR0ZWQgPC0geC5jdXJyZW50XG5cbmxldCByb2xsYmFjayB4ID1cbiAgeC5jdXJyZW50IDwtIHguY29tbWl0dGVkXG5cbmxldCB0ZW50YXRpdmVseSAocyA6ICdhIHN0b3JlKSAoZiA6IHVuaXQgLT4gJ2IpIDogJ2IgPVxuICBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAgIHJhaXNlIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuICB8IE5vbmUgLT5cbiAgICAgIGxldCBzdGFjayA9IFN0YWNrLmNyZWF0ZSgpIGluXG4gICAgICBzLnRyYW5zYWN0aW9uIDwtIFNvbWUgc3RhY2s7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGIgPSBmKCkgaW5cbiAgICAgICAgKCogQ29tbWl0IGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgY29tbWl0IHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBiXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgbGV0IGIgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSgpIGluXG4gICAgICAgICgqIFJvbGwgYmFjayBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIHJvbGxiYWNrIHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGFuIGV4dGVuc2libGUgYXJyYXksIHRoYXQgaXMsIGEgcGFpciBvZiBhblxuICAgaW50ZWdlciBhZGRyZXNzIGFuZCBhbiBhcnJheS4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBsZW5ndGggb2ZcbiAgIHRoZSBhcnJheSBpcyBhdCBsZWFzdCBbbGltaXRdLiBUaGUgYXJlYSBvZiB0aGUgYXJyYXkgYXQgaW5kZXggW2xpbWl0XSBhbmRcbiAgIGJleW9uZCBpcyBjb25zaWRlcmVkIHVuaW5pdGlhbGl6ZWQuICopXG5cbigqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGlzIGFyZWEgaXMgZmlsbGVkIHdpdGggYXJiaXRyYXJ5IHZhbHVlKHMpXG4gICBwcm92aWRlZCBieSB0aGUgdXNlciBpbiBjYWxscyB0byBbbWFrZV0gb3IgW3NldF0uIFRoaXMgaXMgbm90IGlkZWFsLCBhcyBpdFxuICAgY2FuIGNhdXNlIGEgbWVtb3J5IGxlYWsuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBsb2dpY2FsIHNpemUgb2YgdGhlIGFycmF5OyBhbHNvLCB0aGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBhcnJheSwgd2hvc2UgbGVuZ3RoIGlzIGF0IGxlYXN0IFtsaW1pdF0uICopXG4gIG11dGFibGUgY29udGVudDogJ2EgYXJyYXlcbn1cblxuKCogVGhlIGFycmF5IGlzIGNyZWF0ZWQgd2l0aCBhIHNpemUgYW5kIGxlbmd0aCBvZiB6ZXJvLiBXZSBoYXZlIG5vIG90aGVyXG4gICBjaG9pY2UsIHNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGF0IGhhbmQuICopXG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gW3x8XVxufVxuXG4oKiBDb3B5aW5nIGlzIHN1cHBvcnRlZCwgYnV0IGlzIG5vdCBjaGVhcC4gVXNlIGF0IHlvdXIgb3duIHJpc2suICopXG5cbmxldCBjb3B5IChzIDogJ2Egc3RvcmUpIDogJ2Egc3RvcmUgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IEFycmF5LmNvcHkgcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMgYW4gaW5kZXggaW50byB0aGUgYXJyYXkuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG4oKiBUaGUgYXJyYXkganVtcHMgZnJvbSBsZW5ndGggemVybyB0byBsZW5ndGggW2RlZmF1bHRfaW5pdGlhbF9sZW5ndGhdIGFzIHNvb25cbiAgIGFzIGEgY2FsbCB0byBbbWFrZV0gaXMgbWFkZS4gKilcblxubGV0IGRlZmF1bHRfaW5pdGlhbF9sZW5ndGggPVxuICAyNTZcblxuKCogW2VubGFyZ2UgcyB2XSBpbmNyZWFzZXMgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgKGlmIG5lY2Vzc2FyeSkgc28gYXMgdG9cbiAgIGVuc3VyZSB0aGF0IFtzLmxpbWl0XSBiZWNvbWVzIGEgdmFsaWQgaW5kZXguIFRoZSBhcmd1bWVudCBbdl0gaXMgdXNlZCBhcyBhXG4gICBkZWZhdWx0IHZhbHVlIHRvIGZpbGwgdGhlIHVuaW5pdGlhbGl6ZWQgYXJlYS4gKilcblxubGV0IGVubGFyZ2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IGNvbnRlbnQgPSBzLmNvbnRlbnQgaW5cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb250ZW50IGluXG4gIGlmIHMubGltaXQgPSBsZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBsZW5ndGgnID1cbiAgICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgICBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIDIgKiBsZW5ndGhcbiAgICBpblxuICAgIGFzc2VydCAocy5saW1pdCA8IGxlbmd0aCcpO1xuICAgIGxldCBjb250ZW50JyA9IEFycmF5Lm1ha2UgbGVuZ3RoJyB2IGluXG4gICAgQXJyYXkuYmxpdCBjb250ZW50IDAgY29udGVudCcgMCBsZW5ndGg7XG4gICAgcy5jb250ZW50IDwtIGNvbnRlbnQnXG4gIGVuZFxuXG4oKiBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBbQXJyYXkudW5zYWZlX3NldF0gYW5kIFtBcnJheS51bnNhZmVfZ2V0XSB3aXRob3V0XG4gICBhbnkgcHJlY2F1dGlvbnMsIHNpbmNlIHRoZSBPQ2FtbCB0eXBlLWNoZWNrZXIgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZVxuICAgaW5kaWNlcyBhcmUgaW4gcmFuZ2UuIEEgY29uZnVzZWQgdXNlciBjb3VsZCBwYXNzIHJlZmVyZW5jZXMgaW50byBzb21lXG4gICBvdGhlciBzdG9yZS4gV2UgY2hvb3NlIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdCB0aGUgaW5kZXggaXMgd2l0aGluIHRoZVxuICAgbG9naWNhbCBib3VuZHMgb2YgdGhlIGFycmF5IC0tIHRoaXMgaXMgYSBtb3JlIHByZWNpc2UgY2hlY2suICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogdW5pdCA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIGVubGFyZ2UgcyB2O1xuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2O1xuICB4XG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfZ2V0IHMuY29udGVudCB4XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdlxuXG5sZXQgZXEgIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcbiIsImxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7IC8vIFVURi04IGVuY29kaW5nIGZvciBVKzAwQTAgXCJOby1icmVhayBzcGFjZVwiXG5cbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwiLy8gTWFwcyBrZXllZCBieSBhbiBlbmQgcG9zaXRpb25cbi8vIEludmFyaWVudDoga2V5cyBhcmUgYXNjZW5kaW5nIGFuZCB1bmlxdWVcbnR5cGUga2V5ID0gaW50O1xudHlwZSB0KCdhKSA9IGxpc3QoKGtleSwgJ2EpKTtcbmxldCBlbXB0eTogJ2EuIHQoJ2EpID0gW107XG5sZXQgc2luZ2xldG9uOiAnYS4gKGtleSwgJ2EpID0+IHQoJ2EpID0gKHBvcywgeCkgPT4gWyhwb3MsIHgpXTtcbmxldCByZWMgdW5pb246ICdhLiAoKCdhLCAnYSkgPT4gJ2EsIHQoJ2EpLCB0KCdhKSkgPT4gdCgnYSkgPVxuICAoZiwgdDEsIHQyKSA9PlxuICAgIHN3aXRjaCAodDEsIHQyKSB7XG4gICAgfCAoW10sIHRfb3RoZXIpID0+IHRfb3RoZXJcbiAgICB8ICh0X290aGVyLCBbXSkgPT4gdF9vdGhlclxuICAgIHwgKFsocDEsIHgxKSwgLi4ueHMxXSwgWyhwMiwgeDIpLCAuLi54czJdKSA9PlxuICAgICAgaWYgKHAxIDwgcDIpIHtcbiAgICAgICAgWyhwMSwgeDEpLCAuLi51bmlvbihmLCB4czEsIFsocDIsIHgyKSwgLi4ueHMyXSldO1xuICAgICAgfSBlbHNlIGlmIChwMSA+IHAyKSB7XG4gICAgICAgIFsocDIsIHgyKSwgLi4udW5pb24oZiwgWyhwMSwgeDEpLCAuLi54czFdLCB4czIpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsocDEsIGYoeDEsIHgyKSksIC4uLnVuaW9uKGYsIHhzMSwgeHMyKV07XG4gICAgICB9XG4gICAgfTtcbmxldCByZWMgbWFwOiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZih4KSksIC4uLm1hcChmLCByZXN0KV07XG5sZXQgcmVjIG1hcGk6ICdhICdiLiAoKGtleSwgJ2EpID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZihwb3MsIHgpKSwgLi4ubWFwaShmLCByZXN0KV07XG5sZXQgcmVjIG1hcGs6ICdhICdiLiAoKGtleSwgJ2EpID0+IChrZXksICdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gW2YocG9zLCB4KSwgLi4ubWFwayhmLCByZXN0KV07XG5sZXQgcmVjIGZvbGRfbGVmdDogJ2EgJ2IuICgoa2V5LCAnYiwgJ2EpID0+ICdiLCAnYiwgdCgnYSkpID0+ICdiID1cbiAgKGYsIHopID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiB6XG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IGZvbGRfbGVmdChmLCBmKHBvcywgeiwgeCksIHJlc3QpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0ge1xuICByb3c6IGludCxcbiAgY29sOiBpbnQsXG59O1xuXG5sZXQgY29tcGFyZSA9IChwb3MxLCBwb3MyKSA9PlxuICBpZiAocG9zMS5yb3cgPCBwb3MyLnJvdykge1xuICAgICgtMSk7XG4gIH0gZWxzZSBpZiAocG9zMS5yb3cgPiBwb3MyLnJvdykge1xuICAgIDE7XG4gIH0gZWxzZSB7XG4gICAgSW50LmNvbXBhcmUocG9zMS5jb2wsIHBvczIuY29sKTtcbiAgfTtcblxubGV0IHplcm8gPSB7cm93OiAwLCBjb2w6IDB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gVE9ETzogcmVuYW1lIEFubm90IHRvIEFubj9cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gSW52YXJpYW50OiBjb250YWlucyBubyBuZXdsaW5lcy4gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIEFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTsgLy8gQW5ub3RhdGlvbnNcblxubGV0IGFsaWduID0gKGw6IHQoJ2Fubm90KSkgPT4gQWxpZ24obCk7XG5sZXQgYW5ub3QgPSAoYW5ub3Q6ICdhbm5vdCwgbDogdCgnYW5ub3QpKSA9PiBBbm5vdChhbm5vdCwgbCk7XG5cbmxldCByZWMgcmVtb3ZlX2Fubm90cyA9IChsYXlvdXQ6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gIHN3aXRjaCAobGF5b3V0KSB7XG4gIHwgQW5ub3QoXywgbCkgPT4gcmVtb3ZlX2Fubm90cyhsKVxuICB8IFRleHQoc3RyaW5nKSA9PiBUZXh0KHN0cmluZylcbiAgfCBDYXQobDEsIGwyKSA9PiBDYXQocmVtb3ZlX2Fubm90cyhsMSksIHJlbW92ZV9hbm5vdHMobDIpKVxuICB8IExpbmVicmVhayA9PiBMaW5lYnJlYWtcbiAgfCBBbGlnbihsKSA9PiBBbGlnbihyZW1vdmVfYW5ub3RzKGwpKVxuICB9O1xufTtcblxuLy8gVE9ETz9cbi8vbGV0IHRleHQgPSAoc3RyaW5nKSA9PiB0X29mX2xheW91dChUZXh0KHN0cmluZykpO1xuLy9sZXQgY2F0ID0gKHQxLCB0MikgPT4gdF9vZl9sYXlvdXQoQ2F0KHQxLCB0MikpO1xuLy9sZXQgbGluZWJyZWFrID0gdF9vZl9sYXlvdXQobGluZWJyZWFrKTtcblxuLy8gVE9ETzogbW92ZSB0byBvd24gbW9kdWxlXG50eXBlIHRleHQoJ2Fubm90LCAnaW1wLCAndCkgPSB7XG4gIC8vIFRPRE86IHJlbmFtZSBgaW1wYFxuICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gJ2ltcCxcbiAgaW1wX2FwcGVuZDogKCdpbXAsICdpbXApID0+ICdpbXAsXG4gIGltcF9uZXdsaW5lOiBpbnQgPT4gJ2ltcCxcbiAgaW1wX29mX2Fubm90OiAoJ2Fubm90LCAnaW1wKSA9PiAnaW1wLFxuICB0X29mX2ltcDogJ2ltcCA9PiAndCxcbn07XG5cbmxldCBta19vZl9sYXlvdXQ6ICh0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpLCB0KCdhbm5vdCkpID0+ICd0ID1cbiAgKHRleHQsIGxheW91dCkgPT4ge1xuICAgIGxldCBjb2x1bW46IHJlZihpbnQpID0gcmVmKDApO1xuICAgIGxldCByZWMgZ286IChpbnQsIHQoJ2Fubm90KSkgPT4gJ2ltcCA9XG4gICAgICAoaW5kZW50LCBsYXlvdXQpID0+IHtcbiAgICAgICAgc3dpdGNoIChsYXlvdXQpIHtcbiAgICAgICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgICAgICBjb2x1bW4gOj0gY29sdW1uXiArIFVuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICAgICAgdGV4dC5pbXBfb2Zfc3RyaW5nKHN0cmluZyk7XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgaW1wMSA9IGdvKGluZGVudCwgbDEpO1xuICAgICAgICAgIGxldCBpbXAyID0gZ28oaW5kZW50LCBsMik7XG4gICAgICAgICAgdGV4dC5pbXBfYXBwZW5kKGltcDEsIGltcDIpO1xuICAgICAgICB8IExpbmVicmVhayA9PlxuICAgICAgICAgIC8vIFRPRE86IG5vIGluZGVudCBpZiBvbiBmaW5hbCBsaW5lIGJyZWFrXG4gICAgICAgICAgY29sdW1uIDo9IGluZGVudDtcbiAgICAgICAgICB0ZXh0LmltcF9uZXdsaW5lKGluZGVudCk7XG4gICAgICAgIHwgQWxpZ24obCkgPT4gZ28oY29sdW1uXiwgbClcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT4gdGV4dC5pbXBfb2ZfYW5ub3QoYW5ub3QsIGdvKGluZGVudCwgbCkpXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIHRleHQudF9vZl9pbXAoZ28oMCwgbGF5b3V0KSk7XG4gIH07XG5cbmxldCBzdHJpbmdfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBzdHJpbmcgPVxuICBsYXlvdXQgPT4ge1xuICAgIGxldCByZWNvcmQ6ICdhbm5vdC4gdGV4dCgnYW5ub3QsIHN0cmluZywgc3RyaW5nKSA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBzdHJpbmcsXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiBzMSArKyBzMixcbiAgICAgIGltcF9uZXdsaW5lOiBpbmRlbnQgPT4gXCJcXG5cIiArKyBTdHJpbmcubWFrZShpbmRlbnQsICcgJyksXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBpbXAgPT4gaW1wLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcblxubGV0IHN0cmluZ3Nfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBsaXN0KChpbnQsIHN0cmluZykpID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOlxuICAgICAgJ2Fubm90LlxuICAgICAgdGV4dCgnYW5ub3QsIGxpc3QoKGludCwgc3RyaW5nKSksIGxpc3QoKGludCwgc3RyaW5nKSkpXG4gICAgID0ge1xuICAgICAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+IFsoMCwgc3RyaW5nKV0sXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoTGlzdC5yZXYoczEpLCBzMikge1xuICAgICAgICB8IChbXSwgXykgPT4gczJcbiAgICAgICAgfCAoXywgW10pID0+IHMxXG4gICAgICAgIHwgKFxuICAgICAgICAgICAgWyhsYXN0X2luZGVudF8xLCBsYXN0X3N0cmluZ18xKSwgLi4ucmVzdDFdLFxuICAgICAgICAgICAgWyhmaXJzdF9pbmRlbnRfMiwgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml0sXG4gICAgICAgICAgKSA9PlxuICAgICAgICAgIGFzc2VydChmaXJzdF9pbmRlbnRfMiA9PSAwKTtcbiAgICAgICAgICBMaXN0LnJldihyZXN0MSlcbiAgICAgICAgICBAIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSArKyBmaXJzdF9zdHJpbmdfMiksIC4uLnJlc3QyXTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFsoaW5kZW50LCBcIlwiKV0sXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBzID0+IHMsXG4gICAgfTtcbiAgICBta19vZl9sYXlvdXQocmVjb3JkLCBsYXlvdXQpO1xuICB9O1xuIiwibGV0IHNwbGl0X2ZpcnN0ID0gKHhzOiBsaXN0KCdhKSk6ICgnYSwgbGlzdCgnYSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IGxpc3RcIilcbiAgfCBbZmlyc3QsIC4uLnRyYWlsaW5nXSA9PiAoZmlyc3QsIHRyYWlsaW5nKVxuICB9O1xuXG5sZXQgc3BsaXRfbGFzdF9vcHQgPSAoeHM6IGxpc3QoJ2EpKTogb3B0aW9uKChsaXN0KCdhKSwgJ2EpKSA9PlxuICBzd2l0Y2ggKExpc3QucmV2KHhzKSkge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeSwgLi4ueXNdID0+IFNvbWUoKExpc3QucmV2KHlzKSwgeSkpXG4gIH07XG5sZXQgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgnYSkpOiAobGlzdCgnYSksICdhKSA9PlxuICBzd2l0Y2ggKHNwbGl0X2xhc3Rfb3B0KHhzKSkge1xuICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGJveCA9IHtcbiAgaGVpZ2h0OiBpbnQsXG4gIHdpZHRoOiBpbnQsXG59O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbGF5b3V0OiB0JygnYW5ub3QpLFxuICBtZXRyaWNzOiBsaXN0KGJveCksXG59XG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgTGluZWJyZWFrXG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbnR5cGUgd2l0aF9vZmZzZXQoJ2Fubm90KSA9IChpbnQsIHQoJ2Fubm90KSk7XG5cbmxldCBoZWlnaHQgPSAobTogdChfKSkgPT5cbiAgbS5tZXRyaWNzIHw+IExpc3QubWFwKGJveCA9PiBib3guaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApO1xuXG5sZXQgd2lkdGggPSAofm9mZnNldD0wLCBtOiB0KF8pKSA9PlxuICBMaXN0LnRsKG0ubWV0cmljcylcbiAgfD4gTGlzdC5tYXAoYm94ID0+IGJveC53aWR0aClcbiAgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCBvZmZzZXQgKyBMaXN0LmhkKG0ubWV0cmljcykud2lkdGgpO1xuXG5sZXQgZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogJ2FjYyxcbiAgICAgIH50ZXh0OiBzdHJpbmcgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogJ2FjYyA9PiAnYWNjLFxuICAgICAgfmNhdDogKCdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBhbGxvdyBjbGllbnQgdG8gY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKHQoJ2Fubm90KSA9PiAnYWNjLCAnYW5ub3QsIHQoJ2Fubm90KSkgPT4gJ2FjYyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWtcbiAgICB8IFRleHQocykgPT4gdGV4dChzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oZ28obSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IGFjYzEgPSBnbyhtMSk7XG4gICAgICBsZXQgYWNjMiA9IGdvKG0yKTtcbiAgICAgIGNhdChhY2MxLCBhY2MyKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QoZ28sIGFubiwgbSlcbiAgICB9O1xuICBnbyhtKTtcbn07XG5cbmxldCBuZXh0X3Bvc2l0aW9uID1cbiAgICAofmluZGVudDogaW50LCB7cm93LCBjb2x9OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpXG4gICAgOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4ge1xuICBsZXQgdXBkYXRlZF9yb3cgPSByb3cgKyBoZWlnaHQobSkgLSAxO1xuICBsZXQgdXBkYXRlZF9jb2wgPSB7XG4gICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobS5tZXRyaWNzKTtcbiAgICBsYXN0LndpZHRoXG4gICAgKyAoXG4gICAgICBzd2l0Y2ggKGxlYWRpbmcpIHtcbiAgICAgIHwgW10gPT4gY29sXG4gICAgICB8IFtfLCAuLi5fXSA9PiBpbmRlbnRcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICB7cm93OiB1cGRhdGVkX3JvdywgY29sOiB1cGRhdGVkX2NvbH07XG59O1xuXG5sZXQgcG9zX2ZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6IE1lYXN1cmVkUG9zaXRpb24udCA9PiAnYWNjLFxuICAgICAgfnRleHQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsIHN0cmluZykgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBsZXQgY2xpZW50IGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgIChcbiAgICAgICAgICAgfmdvOiB0KCdhbm5vdCkgPT4gJ2FjYyxcbiAgICAgICAgICAgfmluZGVudDogaW50LFxuICAgICAgICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgICAgICAgJ2Fubm90LFxuICAgICAgICAgICB0KCdhbm5vdClcbiAgICAgICAgICkgPT5cbiAgICAgICAgICdhY2MsXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udD1NZWFzdXJlZFBvc2l0aW9uLnplcm8sXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAoaW5kZW50OiBpbnQsIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVhayhzdGFydClcbiAgICB8IFRleHQocykgPT4gdGV4dChzdGFydCwgcylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKHN0YXJ0LCBnbyhzdGFydC5jb2wsIHN0YXJ0LCBtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgbWlkID0gbmV4dF9wb3NpdGlvbih+aW5kZW50LCBzdGFydCwgbTEpO1xuICAgICAgY2F0KHN0YXJ0LCBnbyhpbmRlbnQsIHN0YXJ0LCBtMSksIGdvKGluZGVudCwgbWlkLCBtMikpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdCh+Z289Z28oaW5kZW50LCBzdGFydCksIH5pbmRlbnQsIH5zdGFydCwgYW5uLCBtKVxuICAgIH07XG4gIGdvKGluZGVudCwgc3RhcnQsIG0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgfCBTb21lKG0pID0+IE9iai5tYWdpYyhtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IG0gPVxuICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICBsZXQgYm94ID0ge2hlaWdodDogMSwgd2lkdGg6IDB9O1xuICAgICAgICAgIHttZXRyaWNzOiBbYm94LCBib3hdLCBsYXlvdXQ6IExpbmVicmVha307XG4gICAgICAgIHwgVGV4dChzKSA9PiB7XG4gICAgICAgICAgICBtZXRyaWNzOiBbe2hlaWdodDogMSwgd2lkdGg6IFVuaWNvZGUubGVuZ3RoKHMpfV0sXG4gICAgICAgICAgICBsYXlvdXQ6IFRleHQocyksXG4gICAgICAgICAgfVxuICAgICAgICB8IEFsaWduKGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICBsZXQgYm91bmRpbmdfYm94ID1cbiAgICAgICAgICAgIG0ubWV0cmljc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICh7aGVpZ2h0OiBiaCwgd2lkdGg6IGJ3fSwge2hlaWdodCwgd2lkdGh9KSA9PlxuICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGJoICsgaGVpZ2h0LCB3aWR0aDogbWF4KGJ3LCB3aWR0aCl9LFxuICAgICAgICAgICAgICAgICB7aGVpZ2h0OiAwLCB3aWR0aDogMH0sXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgIHttZXRyaWNzOiBbYm91bmRpbmdfYm94XSwgbGF5b3V0OiBBbGlnbihtKX07XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgbTEgPSBtayhsMSk7XG4gICAgICAgICAgbGV0IG0yID0gbWsobDIpO1xuICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0xLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KG0yLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCBtaWRfYm94ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgobGFzdC5oZWlnaHQsIGZpcnN0LmhlaWdodCksXG4gICAgICAgICAgICB3aWR0aDogbGFzdC53aWR0aCArIGZpcnN0LndpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgICAge21ldHJpY3M6IGxlYWRpbmcgQCBbbWlkX2JveCwgLi4udHJhaWxpbmddLCBsYXlvdXQ6IENhdChtMSwgbTIpfTtcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIHsuLi5tLCBsYXlvdXQ6IEFubm90KGFubm90LCBtKX07XG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMobSkpO1xuICAgICAgbTtcbiAgICB9O1xuICB9O1xufTtcbiIsInR5cGUgdCA9IHtcbiAgLy8gU3VtIG9mIHRoZSBzcXVhcmUgb2YgaG93IG11Y2ggZWFjaCBsaW5lIGV4dGVuZHMgYmV5b25kIG1heCB3aWR0aC4gIFVzdWFsbHkgemVyby5cbiAgb3ZlcmZsb3dfY29zdDogaW50LFxuICAvLyBIZWlnaHQgbWludXMgb25lLiAgQS5rLmEuIG51bWJlciBvZiBsaW5lIGJyZWFrcy5cbiAgaGVpZ2h0X2Nvc3Q6IGludCxcbn07XG5cbmxldCBtayA9ICh+b3ZlcmZsb3dfY29zdDogaW50LCB+aGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdCxcbn07XG5cbmxldCBta19oZWlnaHQgPSAoaGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4gbWsofm92ZXJmbG93X2Nvc3Q9MCwgfmhlaWdodF9jb3N0KTtcblxubGV0IG1rX292ZXJmbG93ID0gKG92ZXJmbG93X2Nvc3Q6IGludCk6IHQgPT5cbiAgbWsofm92ZXJmbG93X2Nvc3QsIH5oZWlnaHRfY29zdD0wKTtcblxubGV0IHplcm86IHQgPSB7b3ZlcmZsb3dfY29zdDogMCwgaGVpZ2h0X2Nvc3Q6IDB9O1xuXG5sZXQgaW5mOiB0ID0ge292ZXJmbG93X2Nvc3Q6IG1heF9pbnQsIGhlaWdodF9jb3N0OiBtYXhfaW50fTtcblxubGV0IGFkZCA9IChjMTogdCwgYzI6IHQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdDogYzEub3ZlcmZsb3dfY29zdCArIGMyLm92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0OiBjMS5oZWlnaHRfY29zdCArIGMyLmhlaWdodF9jb3N0LFxufTtcblxubGV0IGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCAmJiBjMS5oZWlnaHRfY29zdCA9PT0gYzIuaGVpZ2h0X2Nvc3Q7XG5cbmxldCBsdCA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPCBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDwgYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcblxubGV0IGxlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPD0gYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8PSBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIFdpZHRoUG9zS2V5ID0ge1xuICB0eXBlIHQgPSAoaW50LCBpbnQpO1xuICBsZXQgaGFzaCA9ICgod2lkdGgsIHBvcykpID0+IDI1NiAqIDI1NiAqIHdpZHRoICsgcG9zO1xuICBsZXQgZXF1YWwgPSAoKHcxLCBwMSksICh3MiwgcDIpKSA9PiB3MSA9PSB3MiAmJiBwMSA9PSBwMjtcbn07XG5cbm1vZHVsZSBNID0gSGFzaHRibC5NYWtlKFdpZHRoUG9zS2V5KTtcblxuLy8gTk9URTogcG9zIGlzIHJlbGF0aXZlIHRvIG1vc3QgcmVjZW50IGBBbGlnbmBcbnR5cGUgbScoJ2EpID0gUG9zTWFwLnQoKENvc3QudCwgJ2EpKTtcbnR5cGUgbSgnYSkgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCkgPT4gbScoJ2EpO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbWVtOiBbQHNleHAub3BhcXVlXSBNLnQobScoTGF5b3V0LnQoJ2Fubm90KSkpLFxuICBkb2M6IHQnKCdhbm5vdCksXG59XG5bQGRlcml2aW5nIHNleHBdXG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBhc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSkgLy8gQW5ub3RhdGlvbnNcbiAgfCBGYWlsIC8vIGlkZW50aXR5IGZvciBgQ2hvaWNlYFxuICB8IENob2ljZSh0KCdhbm5vdCksIHQoJ2Fubm90KSk7XG5cbmxldCB0X29mX3QnID0gKHQnOiB0JygnYW5ub3QpKTogdCgnYW5ub3QpID0+IHttZW06IE0uY3JlYXRlKDApLCBkb2M6IHQnfTtcblxubGV0IHRleHQgPSAoczogc3RyaW5nKSA9PiB0X29mX3QnKFRleHQocykpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IHRfb2ZfdCcoTGluZWJyZWFrKTtcbmxldCBhbGlnbiA9IGRvYyA9PiB0X29mX3QnKEFsaWduKGRvYykpO1xubGV0IGFubm90ID0gKGFubm90LCBkb2MpID0+IHRfb2ZfdCcoQW5ub3QoYW5ub3QsIGRvYykpO1xubGV0IGZhaWwgPSAoKSA9PiB0X29mX3QnKEZhaWwpO1xuXG5sZXQgZW1wdHkgPSAoKSA9PiB0ZXh0KFwiXCIpO1xubGV0IHNwYWNlID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3ApOyAvLyBUT0RPOiBwYXJhbSB0byBoc2VwXG5cbmxldCBpbmRlbnQgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCArKyBVbmljb2RlLm5ic3ApO1xubGV0IGluZGVudF9hbmRfYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhDYXQoaW5kZW50KCksIGFsaWduKGRvYykpKTtcblxubGV0IGhjYXQgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgeSkpO1xubGV0IGhjYXRzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhjYXQsIGRvYywgZG9jcyk7XG5cbmxldCBoc2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KHNwYWNlKCksIHkpKSkpO1xubGV0IGhzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhzZXAsIGRvYywgZG9jcyk7XG5cbmxldCB2c2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KGxpbmVicmVhaygpLCB5KSkpKTtcbmxldCB2c2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWx3aXRoKF9fTE9DX18gKysgXCI6IHZzZXBzIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGxpc3RcIilcbiAgfCBbZG9jXSA9PiBkb2NcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdCh2c2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgY2hvaWNlID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2hvaWNlKHgsIHkpKTtcbmxldCBjaG9pY2VzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbCgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoY2hvaWNlLCBkb2MsIGRvY3MpO1xuXG5sZXQgbWFwX3QnOiAnYSAnYi4gKHQnKCdhKSA9PiB0JygnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PiB0X29mX3QnKGYoZC5kb2MpKTtcblxubGV0IHJlYyBtYXBfYW5ub3Q6ICdhICdiLiAoJ2EgPT4gJ2IsIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PlxuICAgIGRcbiAgICB8PiBtYXBfdCcoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgKFRleHQoXykgfCBMaW5lYnJlYWsgfCBGYWlsKSBhcyBkJyA9PiBkJ1xuICAgICAgICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gQW5ub3QoZihhbm5vdCksIG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQWxpZ24oZCkgPT4gQWxpZ24obWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBDYXQoZDEsIGQyKSA9PiBDYXQobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSlcbiAgICAgICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gQ2hvaWNlKG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpLFxuICAgICAgICk7XG4iLCIvLyBUT0RPOiBjb21wdXRlIGFjdHVhbCBsYXlvdXQgc2l6ZSBhbmQgdXNlIGluc3RlYWQgb2YgdF9vZl9sYXlvdXRcbmxldCByZWMgYWxsOiAnYW5ub3QuIERvYy50KCdhbm5vdCkgPT4gbGlzdChMYXlvdXQudCgnYW5ub3QpKSA9IHtcbiAgZG9jID0+IHtcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PiBbTGF5b3V0LlRleHQoc3RyaW5nKV1cbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbHMxID0gYWxsKGQxKTtcbiAgICAgIGxldCBsczIgPSBhbGwoZDIpO1xuICAgICAgTGlzdC5jb25jYXQoXG4gICAgICAgIExpc3QubWFwKGwxID0+IExpc3QubWFwKGwyID0+IExheW91dC5DYXQobDEsIGwyKSwgbHMyKSwgbHMxKSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT4gW0xheW91dC5MaW5lYnJlYWtdXG4gICAgfCBBbGlnbihkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5BbGlnbihsKSwgYWxsKGQpKVxuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFubm90KGFubm90LCBsKSwgYWxsKGQpKVxuICAgIHwgRmFpbCA9PiBbXVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gYWxsKGQxKSBAIGFsbChkMilcbiAgICB9O1xuICB9O1xufTtcblxuLy8gTm90ZTogVGhpcyB1bmlvbiBpcyBsZWZ0IGJpYXNlZFxubGV0IG0nX3VuaW9uOiAnYS4gKERvYy5tJygnYSksIERvYy5tJygnYSkpID0+IERvYy5tJygnYSkgPVxuICAocDEsIHAyKSA9PiB7XG4gICAgbGV0IGNvc3RfdW5pb24gPSAoKGNvc3QxOiBDb3N0LnQsIF8pIGFzIHQxLCAoY29zdDI6IENvc3QudCwgXykgYXMgdDIpID0+XG4gICAgICBpZiAoQ29zdC5sZXEoY29zdDEsIGNvc3QyKSkge1xuICAgICAgICB0MTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHQyO1xuICAgICAgfTtcbiAgICBQb3NNYXAudW5pb24oY29zdF91bmlvbiwgcDEsIHAyKTtcbiAgfTtcblxubGV0IHJlYyBsYXlvdXRfb2ZfZG9jJyA9IChkb2M6IERvYy50KHVuaXQpKTogRG9jLm0oTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgbGV0IGcgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIC8vIFRPRE86IGxpZnQgdGhlIHN3aXRjaChkb2MuZG9jKSBvdXRzaWRlIHRoZSBsYW1iZGFcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PlxuICAgICAgLy8gVE9ETzogY2FjaGUgdGV4dCBsZW5ndGggaW4gVGV4dD9cbiAgICAgIGxldCBwb3MnID0gcG9zICsgU3RyaW5nLmxlbmd0aChzdHJpbmcpOyAvL1VuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICBsZXQgY29zdCA9XG4gICAgICAgIGlmIChwb3MnIDw9IHdpZHRoKSB7XG4gICAgICAgICAgQ29zdC56ZXJvO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBvdmVyZmxvdyA9IHBvcycgLSB3aWR0aDtcbiAgICAgICAgICAvLyBvdmVyZmxvd19jb3N0ID0gc3VtIGkgZnJvbSAxIHRvIG92ZXJmbG93XG4gICAgICAgICAgbGV0IG92ZXJmbG93X2Nvc3QgPSBvdmVyZmxvdyAqIChvdmVyZmxvdyArIDEpIC8gMjtcbiAgICAgICAgICBDb3N0Lm1rX292ZXJmbG93KG92ZXJmbG93X2Nvc3QpO1xuICAgICAgICB9O1xuICAgICAgUG9zTWFwLnNpbmdsZXRvbihwb3MnLCAoY29zdCwgTGF5b3V0LlRleHQoc3RyaW5nKSkpO1xuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLmZvbGRfbGVmdChcbiAgICAgICAgKHBvcywgeiwgKGNvc3QxLCBsYXlvdXQxKSkgPT4ge1xuICAgICAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgICAgIGxldCBsYXlvdXRzID1cbiAgICAgICAgICAgIFBvc01hcC5tYXAoXG4gICAgICAgICAgICAgICgoY29zdDIsIGxheW91dDIpKSA9PlxuICAgICAgICAgICAgICAgIChDb3N0LmFkZChjb3N0MSwgY29zdDIpLCBMYXlvdXQuQ2F0KGxheW91dDEsIGxheW91dDIpKSxcbiAgICAgICAgICAgICAgbDIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIG0nX3VuaW9uKHosIGxheW91dHMpO1xuICAgICAgICB9LFxuICAgICAgICBQb3NNYXAuZW1wdHksXG4gICAgICAgIGwxLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PlxuICAgICAgUG9zTWFwLnNpbmdsZXRvbigwLCAoQ29zdC5ta19oZWlnaHQoMSksIExheW91dC5MaW5lYnJlYWspKVxuICAgIHwgQWxpZ24oZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGg9d2lkdGggLSBwb3MsIH5wb3M9MCk7XG4gICAgICBQb3NNYXAubWFwayhcbiAgICAgICAgKHAsIChjLCBsKSkgPT4gKHAgKyBwb3MsIChjLCBMYXlvdXQuQWxpZ24obCkpKSxcbiAgICAgICAgbGF5b3V0LFxuICAgICAgKTtcbiAgICB8IEFubm90KGFubm90LCBkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAubWFwKCgoYywgbCkpID0+IChjLCBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpKSwgbGF5b3V0KTtcbiAgICB8IEZhaWwgPT4gUG9zTWFwLmVtcHR5XG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgIG0nX3VuaW9uKGwxLCBsMik7XG4gICAgfTtcbiAgfTtcbiAgbGV0IGggPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIGxldCBrZXkgPSAod2lkdGgsIHBvcyk7XG4gICAgc3dpdGNoIChEb2MuTS5maW5kX29wdChkb2MubWVtLCBrZXkpKSB7XG4gICAgfCBTb21lKHZhbHVlKSA9PiB2YWx1ZVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHZhbHVlID0gZyh+d2lkdGgsIH5wb3MpO1xuICAgICAgRG9jLk0uYWRkKGRvYy5tZW0sIGtleSwgdmFsdWUpO1xuICAgICAgdmFsdWU7XG4gICAgfTtcbiAgfTtcbiAgaDtcbn07XG5cbmxldCBsYXlvdXRfb2ZfZG9jID1cbiAgICAoZG9jOiBEb2MudCgnYW5ub3QpLCB+d2lkdGg6IGludCwgfnBvczogaW50KTogb3B0aW9uKExheW91dC50KCdhbm5vdCkpID0+IHtcbiAgbGV0IHJlYyBtaW5pbXVtID1cbiAgICAgICAgICAoKHBvcywgKGNvc3QsIHQpKTogKGludCwgKENvc3QudCwgb3B0aW9uKCdhKSkpKVxuICAgICAgICAgIDogKGxpc3QoKGludCwgKENvc3QudCwgJ2EpKSkgPT4gb3B0aW9uKCdhKSkgPT4ge1xuICAgIGZ1blxuICAgIHwgW10gPT4gdFxuICAgIHwgWyh4X3BvcywgKHhfY29zdCwgeCkpLCAuLi5yZXN0XSA9PlxuICAgICAgLy8gUHJlZmVyIGxvd2VzdCBjb3N0LCBvciBpZiBzYW1lIGNvc3QsIHByZWZlciBlbmRpbmcgYXQgYW4gZWFybGllciBjb2x1bW5cbiAgICAgIC8vIChDb2x1bW5zIGFyZSB1bmlxdWUgYnkgY29uc3RydWN0aW9uIG9mIFBvc01hcC4pXG4gICAgICBpZiAoQ29zdC5sdCh4X2Nvc3QsIGNvc3QpIHx8IENvc3QuZXEoeF9jb3N0LCBjb3N0KSAmJiB4X3BvcyA8IHBvcykge1xuICAgICAgICBtaW5pbXVtKCh4X3BvcywgKHhfY29zdCwgU29tZSh4KSkpLCByZXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbmltdW0oKHBvcywgKGNvc3QsIHQpKSwgcmVzdCk7XG4gICAgICB9O1xuICB9O1xuICAvLyBUT0RPOiB1c2Ugb3B0aW9ucyBpbnN0ZWFkIG9mIG1heF9pbnRcbiAgLy8gbGV0IHN0YXJ0X3RpbWUgPSBTeXMudGltZSgpO1xuICBsZXQgbCA9XG4gICAgbWluaW11bShcbiAgICAgIChtYXhfaW50LCAoQ29zdC5pbmYsIE5vbmUpKSxcbiAgICAgIE9iai5tYWdpYyhsYXlvdXRfb2ZfZG9jJyhPYmoubWFnaWMoZG9jKSwgfndpZHRoLCB+cG9zKSksXG4gICAgKTtcbiAgLy8gbGV0IGVuZF90aW1lID0gU3lzLnRpbWUoKTtcbiAgLypcbiAgIFByaW50Zi5wcmludGYoXG4gICAgIFwibGF5b3V0X29mX2RvYzogJWQgXFx0JWZcXG5cIixcbiAgICAgLTEsIC8vZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpIyMuc2l6ZSxcbiAgICAgLy9NZW1vaXplLldlYWtQb2x5LlRhYmxlLmxlbmd0aChmc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkpLFxuICAgICAxMDAwLjAgKi4gKGVuZF90aW1lIC0uIHN0YXJ0X3RpbWUpLFxuICAgKTtcbiAgICovXG4gIGw7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKVxuICB8IEhCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IFZCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCBoZWlnaHRfdGJsOiBNZW1vVGJsLnQodCh1bml0KSwgaW50KSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBoZWlnaHQgPSAoYm94OiB0KCdhbm5vdCkpID0+XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldChoZWlnaHRfdGJsLCBPYmoubWFnaWMoYm94KSkpIHtcbiAgICB8IFNvbWUoaCkgPT4gaFxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IGggPVxuICAgICAgICBzd2l0Y2ggKGJveCkge1xuICAgICAgICB8IFRleHQoXykgPT4gMVxuICAgICAgICB8IEFubm90KF8sIGIpID0+IGhlaWdodChiKVxuICAgICAgICB8IEhCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCAxKSAvLyBOb3RlOiAxIGlzIEhCb3goW10pIGhlaWdodFxuICAgICAgICB8IFZCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKVxuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCksIGgpO1xuICAgICAgaDtcbiAgICB9O1xuXG4gIC8vIE5vdGU6IGFubm90cyBhcmUgaW5zaWRlLW91dCAoaS5lLiBMaXN0LmhkKGFubm90cykgaXMgdGhlIGlubmVyLW1vc3QgYW5ub3QpXG4gIGxldCByZWMgYW5ub3QgPSAoYW5ub3RzOiBsaXN0KCdhbm5vdCksIGJveDogdCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKGFubm90cykge1xuICAgIHwgW10gPT4gYm94XG4gICAgfCBbYW5uLCAuLi5hbm5zXSA9PiBhbm5vdChhbm5zLCBBbm5vdChhbm4sIGJveCkpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGFwcGVuZF9ib3ggPVxuICAgICAgICAgICh+YW5ub3RzOiBsaXN0KCdhbm5vdCk9W10sIGJveDE6IHQoJ2Fubm90KSwgYm94MjogdCgnYW5ub3QpKVxuICAgICAgICAgIDogdCgnYW5ub3QpID0+XG4gICAgaWYgKGhlaWdodChib3gxKSA8PSAxKSB7XG4gICAgICBIQm94KFthbm5vdChhbm5vdHMsIGJveDEpLCBib3gyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZWMgYXBwZW5kX2xhc3QgPSAoYnMxOiBsaXN0KHQoJ2Fubm90KSkpOiBsaXN0KHQoJ2Fubm90KSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGJzMSkge1xuICAgICAgICB8IFtdID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZSBkdWUgdG8gYGJveF9oZWlnaHRgIGd1YXJkXCIpXG4gICAgICAgIHwgW2IxXSA9PiBbYXBwZW5kX2JveCh+YW5ub3RzLCBiMSwgYm94MildXG4gICAgICAgIHwgW2IxLCAuLi5iczFdID0+IFthbm5vdChhbm5vdHMsIGIxKSwgLi4uYXBwZW5kX2xhc3QoYnMxKV1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKGJveDEpIHtcbiAgICAgIHwgVGV4dChfKSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgfCBIQm94KGJzMSkgPT4gSEJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBWQm94KGJzMSkgPT4gVkJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBBbm5vdChhbm5vdCwgYikgPT4gYXBwZW5kX2JveCh+YW5ub3RzPVthbm5vdCwgLi4uYW5ub3RzXSwgYiwgYm94MilcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgYXBwZW5kX2hib3ggPSAoYm94ZXMxOiBsaXN0KHQoJ2Fubm90KSksIGJveGVzMjogbGlzdCh0KCdhbm5vdCkpKSA9PiB7XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChib3hlczEpKSB7XG4gICAgfCBOb25lID0+IGJveGVzMlxuICAgIHwgU29tZSgobGVhZGluZywgbGFzdCkpID0+IGxlYWRpbmcgQCBbYXBwZW5kX2JveChsYXN0LCBIQm94KGJveGVzMikpXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRhYmxlOiBNZW1vVGJsLnQoTGF5b3V0LnQodW5pdCksIHQodW5pdCkpID0gTWVtb1RibC5taygpO1xuICBsZXQgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgbGV0IG1rID0gKGJveGVzOiBsaXN0KGxpc3QodChfKSkpKSA9PlxuICAgICAgVkJveChMaXN0Lm1hcChyb3cgPT4gSEJveChyb3cpLCBib3hlcykpO1xuICAgIGxldCByZWMgZ28gPSAobDogTGF5b3V0LnQoXykpID0+IHtcbiAgICAgIHN3aXRjaCAoTWVtb1RibC5nZXQodGFibGUsIE9iai5tYWdpYyhsKSkpIHtcbiAgICAgIHwgU29tZShib3gpID0+IE9iai5tYWdpYyhib3gpXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0IGJveCA9XG4gICAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgICAgfCBMaW5lYnJlYWsgPT4gW1tdLCBbXV1cbiAgICAgICAgICB8IFRleHQocykgPT4gW1tUZXh0KHMpXV1cbiAgICAgICAgICB8IEFsaWduKGwpID0+IFtbbWsoZ28obCkpXV1cbiAgICAgICAgICB8IEFubm90KGFubiwgbCkgPT5cbiAgICAgICAgICAgIGdvKGwpIHw+IExpc3QubWFwKHJvdyA9PiBbQW5ub3QoYW5uLCBIQm94KHJvdykpXSlcbiAgICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChnbyhsMSkpO1xuICAgICAgICAgICAgbGV0IChmaXJzdCwgdHJhaWxpbmcpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoZ28obDIpKTtcbiAgICAgICAgICAgIGxlYWRpbmcgQCBbYXBwZW5kX2hib3gobGFzdCwgZmlyc3QpLCAuLi50cmFpbGluZ107XG4gICAgICAgICAgfTtcbiAgICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKGJveCkpO1xuICAgICAgICBib3g7XG4gICAgICB9O1xuICAgIH07XG4gICAgbWsoZ28obCkpO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5QcmltaXRpdmVzO1xuXG4vKlxuICBUaGVzZSBhcmUgdGhlIHN5bnRheCB0ZXN0IGZ1bmN0aW9ucyB1c2VkIGZvciB0aGUgc3ludGF4IHZhbGlkYXRpb25cbiAgc2VjdGlvbiBvZiB0aGUgZXhlcmNpc2VzLiBUaGUgc3ludGF4IHRlc3RzIGFyZSBkZXNpZ25lZCB0b1xuICBlbnN1cmUgdGhhdCB0aGUgdXNlciBpbXBsZW1lbnRhdGlvbiBzYXRpc2ZpZXMgY2VydGFpbiBzeW50YXggcHJvcGVydGllc1xuICBlLmcuIHRhaWwgcmVjdXJzaXZlIGZ1bmN0aW9uIG9yIHZhcmlhYmxlIHVzYWdlLlxuICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3ludGF4X3Jlc3VsdCA9IHtcbiAgcmVzdWx0czogbGlzdChib29sKSxcbiAgcGVyY2VudGFnZTogZmxvYXQsXG59O1xuXG5sZXQgcmVjIGZpbmRfdmFyX3VwYXQgPSAobmFtZTogc3RyaW5nLCB1cGF0OiBUZXJtLlVQYXQudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IENvbnModXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1cCkgPT4ge2FjYyB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKX0sIGZhbHNlLCBsKVxuICB8IFBhcmVucyh1cCkgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cClcbiAgfCBBcCh1cDEsIHVwMikgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cDEpIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAyKVxuICB8IFR5cGVBbm4odXAsIF8pID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIH07XG59O1xuXG4vKlxuICBIZWxwZXIgZnVuY3Rpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24gZmluZF9mbiB3aGljaCB0YWtlcyB0aGVcbiAgcGF0dGVybiAodXBhdCkgYW5kIHRoZSBkZWZpbml0aW9uIChkZWYpIG9mIGEgbGV0IGV4cHJlc3Npb24gYW5kXG4gIGNvbGxlY3RzIGZ1bmN0aW9ucyBpbiBkZWYgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBpblxuICB1cGF0LiBFeGFtcGxlOiBmb3IgdGhlIGV4cHJlc3Npb24gXCJsZXQgKGEsYikgPSAoZnVuIHggLT4geCsxLCA0MSkgaW5cIlxuICBpZiBuYW1lPVwiYVwiLCB0aGVuIGw9W2Z1biB4IC0+IHgrMV1cbiAqL1xubGV0IHJlYyBmaW5kX2luX2xldCA9XG4gICAgICAgIChcbiAgICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgdXBhdDogVGVybS5VUGF0LnQsXG4gICAgICAgICAgZGVmOiBUZXJtLlVFeHAudCxcbiAgICAgICAgICBsOiBsaXN0KFRlcm0uVUV4cC50KSxcbiAgICAgICAgKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0sIGRlZi50ZXJtKSB7XG4gIHwgKFBhcmVucyh1cCksIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCB1ZSwgbClcbiAgfCAoUGFyZW5zKHVwKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoXywgUGFyZW5zKHVlKSkgPT4gZmluZF9pbl9sZXQobmFtZSwgdXBhdCwgdWUsIGwpXG4gIHwgKFR5cGVBbm4odXAsIF8pLCBfKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmLCBsKVxuICB8IChWYXIoeCksIEZ1bihfKSkgPT4geCA9PSBuYW1lID8gW2RlZiwgLi4ubF0gOiBsXG4gIHwgKFR1cGxlKHBsKSwgVHVwbGUodWwpKSA9PlxuICAgIGlmIChMaXN0Lmxlbmd0aChwbCkgIT0gTGlzdC5sZW5ndGgodWwpKSB7XG4gICAgICBsO1xuICAgIH0gZWxzZSB7XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgIChhY2MsIHVwLCB1ZSkgPT4ge2ZpbmRfaW5fbGV0KG5hbWUsIHVwLCB1ZSwgYWNjKX0sXG4gICAgICAgIGwsXG4gICAgICAgIHBsLFxuICAgICAgICB1bCxcbiAgICAgICk7XG4gICAgfVxuICB8IChWYXIoXyksIF8pXG4gIHwgKFR1cGxlKF8pLCBfKVxuICB8IChcbiAgICAgIEVtcHR5SG9sZSB8IFdpbGQgfCBUcml2IHwgSW52YWxpZChfKSB8IE11bHRpSG9sZShfKSB8IEludChfKSB8IEZsb2F0KF8pIHxcbiAgICAgIEJvb2woXykgfFxuICAgICAgU3RyaW5nKF8pIHxcbiAgICAgIExpc3RMaXQoXykgfFxuICAgICAgQ29uc3RydWN0b3IoXykgfFxuICAgICAgQ29ucyhfLCBfKSB8XG4gICAgICBBcChfLCBfKSxcbiAgICAgIF8sXG4gICAgKSA9PiBsXG4gIH07XG59O1xuXG4vKlxuIEZpbmQgYW55IGZ1bmN0aW9uIGV4cHJlc3Npb25zIGluIHVleHAgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZVxuICovXG5sZXQgcmVjIGZpbmRfZm4gPVxuICAgICAgICAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCwgbDogbGlzdChUZXJtLlVFeHAudCkpXG4gICAgICAgIDogbGlzdChUZXJtLlVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IExldCh1cCwgZGVmLCBib2R5KSA9PlxuICAgIGwgfD4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZikgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IExpc3RMaXQodWwpXG4gIHwgVHVwbGUodWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdTEpID0+IHtmaW5kX2ZuKG5hbWUsIHUxLCBhY2MpfSwgbCwgdWwpXG4gIHwgVHlwRnVuKF8sIGJvZHkpXG4gIHwgRnVuKF8sIGJvZHkpID0+IGwgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IFR5cEFwKHUxLCBfKVxuICB8IFBhcmVucyh1MSlcbiAgfCBVbk9wKF8sIHUxKVxuICB8IFR5QWxpYXMoXywgXywgdTEpXG4gIHwgVGVzdCh1MSlcbiAgfCBGaWx0ZXIoXywgXywgdTEpID0+IGwgfD4gZmluZF9mbihuYW1lLCB1MSlcbiAgfCBBcCh1MSwgdTIpXG4gIHwgUGlwZWxpbmUodTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpIHw+IGZpbmRfZm4obmFtZSwgdTMpXG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICBsXG4gICAgfD4gZmluZF9mbihuYW1lLCBmbilcbiAgICB8PiBMaXN0LmZvbGRfbGVmdCgobCwgdSkgPT4gZmluZF9mbihuYW1lLCB1LCBsKSwgXywgYXJncylcbiAgfCBNYXRjaCh1MSwgdWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCAoXywgdWUpKSA9PiB7ZmluZF9mbihuYW1lLCB1ZSwgYWNjKX0sXG4gICAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpLFxuICAgICAgdWwsXG4gICAgKVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBEZWZlcnJhbChfKVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKSA9PiBsXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBldmVyIG1lbnRpb25lZCBpbiB1cGF0LlxuICovXG5sZXQgcmVjIHZhcl9tZW50aW9uX3VwYXQgPSAobmFtZTogc3RyaW5nLCB1cGF0OiBUZXJtLlVQYXQudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IENvbnModXAxLCB1cDIpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cDEpIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAyKVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdXApID0+IHthY2MgfHwgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cCl9LFxuICAgICAgZmFsc2UsXG4gICAgICBsLFxuICAgIClcbiAgfCBQYXJlbnModXApID0+IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApXG4gIHwgQXAodXAxLCB1cDIpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cDEpIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAyKVxuICB8IFR5cGVBbm4odXAsIF8pID0+IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBldmVyIG1lbnRpb25lZCBpbiB1ZXhwLlxuICovXG5sZXQgcmVjIHZhcl9tZW50aW9uID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBkZWYpIHx8IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVHlwQXAodSwgXylcbiAgfCBUZXN0KHUpXG4gIHwgUGFyZW5zKHUpXG4gIHwgVW5PcChfLCB1KVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgXywgdSkgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBBcCh1MSwgdTIpXG4gIHwgUGlwZWxpbmUodTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpXG4gIHwgRGVmZXJyZWRBcCh1MSwgdXMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IExpc3QuZXhpc3RzKHZhcl9tZW50aW9uKG5hbWUpLCB1cylcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MikgfHwgdmFyX21lbnRpb24obmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCBnKVxuICAgIHx8IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgcGUpID0+IHtcbiAgICAgICAgICAgbGV0IChwLCBlKSA9IHBlO1xuICAgICAgICAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgfHwgdmFyX21lbnRpb24obmFtZSwgZSk7XG4gICAgICAgICB9LFxuICAgICAgICAgZmFsc2UsXG4gICAgICAgICBsLFxuICAgICAgIClcbiAgfTtcbn07XG5cbi8qXG4gRmluZHMgd2hldGhlciB2YXJpYWJsZSBuYW1lIGlzIGFwcGxpZWQgb24gYW5vdGhlciBleHByZXNzc2lvbi5cbiBpLmUuIEFwKFZhcihuYW1lKSwgdSkgb2NjdXJzIGFueXdoZXJlIGluIHRoZSB1ZXhwLlxuICovXG5sZXQgcmVjIHZhcl9hcHBsaWVkID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBWYXIoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXykgPT4gZmFsc2VcbiAgfCBGdW4oYXJncywgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKVxuICAgICAgPyBmYWxzZSA6IHZhcl9hcHBsaWVkKG5hbWUsIGRlZikgfHwgdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBUeXBGdW4oXywgdSlcbiAgfCBUZXN0KHUpXG4gIHwgUGFyZW5zKHUpXG4gIHwgVW5PcChfLCB1KVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgXywgdSkgPT4gdmFyX2FwcGxpZWQobmFtZSwgdSlcbiAgfCBUeXBBcCh1LCBfKSA9PlxuICAgIHN3aXRjaCAodS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IGZhbHNlXG4gICAgfCBfID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gICAgfVxuICB8IEFwKHUxLCB1MikgPT5cbiAgICBzd2l0Y2ggKHUxLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfCBfID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB9XG4gIHwgRGVmZXJyZWRBcCh1MSwgdXMpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IExpc3QuZXhpc3RzKHZhcl9hcHBsaWVkKG5hbWUpLCB1cylcbiAgICB8IF8gPT4gTGlzdC5leGlzdHModmFyX2FwcGxpZWQobmFtZSksIHVzKVxuICAgIH1cbiAgfCBQaXBlbGluZSh1MSwgdTIpID0+XG4gICAgc3dpdGNoICh1Mi50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IHZhcl9hcHBsaWVkKG5hbWUsIHUxKVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfVxuICB8IENvbnModTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIENoZWNrIHdoZXRoZXIgYWxsIGZ1bmN0aW9ucyBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGFyZSByZWN1cnNpdmUuXG4gKi9cbmxldCBpc19yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBsZXQgZm5fYm9kaWVzID0gW10gfD4gZmluZF9mbihuYW1lLCB1ZXhwKTtcbiAgaWYgKExpc3QubGVuZ3RoKGZuX2JvZGllcykgPT0gMCkge1xuICAgIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdWUpID0+IHthY2MgJiYgdmFyX21lbnRpb24obmFtZSwgdWUpfSxcbiAgICAgIHRydWUsXG4gICAgICBmbl9ib2RpZXMsXG4gICAgKTtcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgaWYgdmFyaWFibGUgbmFtZSBpcyBub3QgbWVudGlvbmVkIGFueXdoZXJlIG91dHNpZGUgb2ZcbiBhIHRhaWwgcG9zaXRpb24gaW4gdWV4cC4gTm90ZSB0aGF0IGlmIHRoZSB2YXJpYWJsZSBpcyBub3RcbiBtZW50aW9uZWQgYW55d2hlcmUgaW4gdGhlIGV4cHJlc3Npb24sIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuXG4gKi9cbmxldCByZWMgdGFpbF9jaGVjayA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IERlZmVycmFsKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgVmFyKF8pID0+IHRydWVcbiAgfCBGdW4oYXJncywgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApIHx8IHZhcl9tZW50aW9uKG5hbWUsIGRlZilcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgLy9JZiBsIGhhcyBubyByZWN1cnNpdmUgY2FsbHMgdGhlbiB0cnVlXG4gICAgIUxpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IFRlc3QoXykgPT4gZmFsc2VcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVHlwQXAodSwgXylcbiAgfCBQYXJlbnModSkgPT4gdGFpbF9jaGVjayhuYW1lLCB1KVxuICB8IFVuT3AoXywgdSkgPT4gIXZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MikgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTEpXG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICB0YWlsX2NoZWNrKFxuICAgICAgbmFtZSxcbiAgICAgIHtpZHM6IFtdLCB0ZXJtOiBBcChmbiwge2lkczogW10sIHRlcm06IFR1cGxlKGFyZ3MpfSl9LFxuICAgIClcbiAgfCBQaXBlbGluZSh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MilcbiAgfCBTZXEodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiAhKHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MikpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSlcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICAgID8gZmFsc2VcbiAgICAgIDogTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgKGFjYywgKHAsIGUpKSA9PiB7XG4gICAgICAgICAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgJiYgdGFpbF9jaGVjayhuYW1lLCBlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBsLFxuICAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIENoZWNrIHdoZXRoZXIgYWxsIGZ1bmN0aW9ucyBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGFyZSB0YWlsIHJlY3Vyc2l2ZS5cbiAqL1xubGV0IGlzX3RhaWxfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgY2hlY2sgPVxuICAgICh1ZXhwOiBUZXJtLlVFeHAudCwgcHJlZGljYXRlczogbGlzdChUZXJtLlVFeHAudCA9PiBib29sKSk6IHN5bnRheF9yZXN1bHQgPT4ge1xuICBsZXQgcmVzdWx0cyA9IExpc3QubWFwKHByZWQgPT4ge3VleHAgfD4gcHJlZH0sIHByZWRpY2F0ZXMpO1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgocHJlZGljYXRlcyk7XG4gIGxldCBwYXNzaW5nID0gVXRpbC5MaXN0VXRpbC5jb3VudF9wcmVkKHJlcyA9PiByZXMsIHJlc3VsdHMpO1xuXG4gIHtcbiAgICByZXN1bHRzLFxuICAgIHBlcmNlbnRhZ2U6XG4gICAgICAvL3ZhY3VvdXNseSBwYXNzZXMgaWYgdGhlcmUgYXJlIG5vIHRlc3RzXG4gICAgICBsZW5ndGggPT0gMCA/IDEuIDogZmxvYXRfb2ZfaW50KHBhc3NpbmcpIC8uIGZsb2F0X29mX2ludChsZW5ndGgpLFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwcmVkaWNhdGUgPVxuICB8IFZhckFwcGxpZWQoc3RyaW5nKVxuICB8IElzUmVjdXJzaXZlKHN0cmluZylcbiAgfCBJc05vdFJlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNUYWlsUmVjdXJzaXZlKHN0cmluZyk7XG5cbmxldCBwcmVkaWNhdGVfZm4gPSBwcmVkaWNhdGUgPT4ge1xuICBzd2l0Y2ggKHByZWRpY2F0ZSkge1xuICB8IFZhckFwcGxpZWQobmFtZSkgPT4gdmFyX2FwcGxpZWQobmFtZSlcbiAgfCBJc1JlY3Vyc2l2ZShuYW1lKSA9PiBpc19yZWN1cnNpdmUobmFtZSlcbiAgfCBJc05vdFJlY3Vyc2l2ZShuYW1lKSA9PiAodWV4cCA9PiAhaXNfcmVjdXJzaXZlKG5hbWUsIHVleHApKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShuYW1lKSA9PiBpc190YWlsX3JlY3Vyc2l2ZShuYW1lKVxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5QcmltaXRpdmVzO1xuXG5tb2R1bGUgdHlwZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlO1xuICBsZXQgZGVmYXVsdDogbm9kZTtcbiAgbGV0IG91dHB1dF9oZWFkZXI6IHN0cmluZyA9PiBzdHJpbmc7XG59O1xuXG5sZXQgb3V0cHV0X2hlYWRlcl9ncmFkaW5nID0gX21vZHVsZV9uYW1lID0+XG4gIFwibW9kdWxlIEV4ZXJjaXNlID0gR3JhZGVQcmVsdWRlLkV4ZXJjaXNlXFxuXCIgKysgXCJsZXQgcHJvbXB0ID0gKClcXG5cIjtcblxubW9kdWxlIEYgPSAoRXhlcmNpc2VFbnY6IEV4ZXJjaXNlRW52KSA9PiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB3cm9uZ19pbXBsKCdjb2RlKSA9IHtcbiAgICBpbXBsOiAnY29kZSxcbiAgICBoaW50OiBzdHJpbmcsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZGRlbl90ZXN0cygnY29kZSkgPSB7XG4gICAgdGVzdHM6ICdjb2RlLFxuICAgIGhpbnRzOiBsaXN0KHN0cmluZyksXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpbnQgPSBzdHJpbmc7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0ID0gKGhpbnQsIFN5bnRheFRlc3QucHJlZGljYXRlKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3ludGF4X3Rlc3RzID0gbGlzdChzeW50YXhfdGVzdCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHlvdXJfdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICByZXF1aXJlZDogaW50LFxuICAgIHByb3ZpZGVkOiBpbnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvaW50X2Rpc3RyaWJ1dGlvbiA9IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb246IGludCxcbiAgICBtdXRhdGlvbl90ZXN0aW5nOiBpbnQsXG4gICAgaW1wbF9ncmFkaW5nOiBpbnQsXG4gIH07XG5cbiAgbGV0IHZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiA9XG4gICAgICAoe3Rlc3RfdmFsaWRhdGlvbiwgbXV0YXRpb25fdGVzdGluZywgaW1wbF9ncmFkaW5nfTogcG9pbnRfZGlzdHJpYnV0aW9uKSA9PlxuICAgIHRlc3RfdmFsaWRhdGlvbiArIG11dGF0aW9uX3Rlc3RpbmcgKyBpbXBsX2dyYWRpbmcgPT0gMTAwXG4gICAgICA/ICgpIDogZmFpbHdpdGgoXCJJbnZhbGlkIHBvaW50IGRpc3RyaWJ1dGlvbiBpbiBleGVyY2lzZS5cIik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHAoJ2NvZGUpID0ge1xuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogaW50LFxuICAgIG1vZHVsZV9uYW1lOiBzdHJpbmcsXG4gICAgcHJvbXB0OlxuICAgICAgW0BwcmludGVyIChmbXQsIF8pID0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcInByb21wdFwiKV0gW0BvcGFxdWVdIEV4ZXJjaXNlRW52Lm5vZGUsXG4gICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgIHByZWx1ZGU6ICdjb2RlLFxuICAgIGNvcnJlY3RfaW1wbDogJ2NvZGUsXG4gICAgeW91cl90ZXN0czogeW91cl90ZXN0cygnY29kZSksXG4gICAgeW91cl9pbXBsOiAnY29kZSxcbiAgICBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKCdjb2RlKSksXG4gICAgaGlkZGVuX3Rlc3RzOiBoaWRkZW5fdGVzdHMoJ2NvZGUpLFxuICAgIHN5bnRheF90ZXN0cyxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUga2V5ID0gKHN0cmluZywgaW50KTtcblxuICBsZXQga2V5X29mID0gcCA9PiB7XG4gICAgKHAudGl0bGUsIHAudmVyc2lvbik7XG4gIH07XG5cbiAgbGV0IGZpbmRfa2V5X29wdCA9IChrZXksIHNwZWNzOiBsaXN0KHAoJ2NvZGUpKSkgPT4ge1xuICAgIHNwZWNzIHw+IFV0aWwuTGlzdFV0aWwuZmluZGlfb3B0KHNwZWMgPT4ga2V5X29mKHNwZWMpID09IGtleSk7XG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvcyA9XG4gICAgfCBQcmVsdWRlXG4gICAgfCBDb3JyZWN0SW1wbFxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZ1xuICAgIHwgWW91ckltcGxcbiAgICB8IEhpZGRlbkJ1Z3MoaW50KVxuICAgIHwgSGlkZGVuVGVzdHM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNwZWMgPSBwKFppcHBlci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHJhbnNpdGlvbmFyeV9zcGVjID0gcChDb2RlU3RyaW5nLnQpO1xuXG4gIGxldCBtYXAgPSAocDogcCgnYSksIGY6ICdhID0+ICdiKTogcCgnYikgPT4ge1xuICAgIHtcbiAgICAgIHRpdGxlOiBwLnRpdGxlLFxuICAgICAgdmVyc2lvbjogcC52ZXJzaW9uLFxuICAgICAgbW9kdWxlX25hbWU6IHAubW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQ6IHAucHJvbXB0LFxuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBwLnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGU6IGYocC5wcmVsdWRlKSxcbiAgICAgIGNvcnJlY3RfaW1wbDogZihwLmNvcnJlY3RfaW1wbCksXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBmKHAueW91cl90ZXN0cy50ZXN0cyksXG4gICAgICAgIHJlcXVpcmVkOiBwLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBwLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICB9LFxuICAgICAgeW91cl9pbXBsOiBmKHAueW91cl9pbXBsKSxcbiAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICBwLmhpZGRlbl9idWdzXG4gICAgICAgIHw+IExpc3QubWFwKHdyb25nX2ltcGwgPT4ge1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIGltcGw6IFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdCh3cm9uZ19pbXBsLmltcGwpLFxuICAgICAgICAgICAgICAgaGludDogd3JvbmdfaW1wbC5oaW50LFxuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgfSksXG4gICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChwLmhpZGRlbl90ZXN0cy50ZXN0cyksXG4gICAgICAgIGhpbnRzOiBwLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgIH0sXG4gICAgICBzeW50YXhfdGVzdHM6IHAuc3ludGF4X3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGVkcyA9IHAoRWRpdG9yLnQpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzdGF0ZSA9IHtcbiAgICBwb3MsXG4gICAgZWRzLFxuICB9O1xuXG4gIGxldCBrZXlfb2Zfc3RhdGUgPSAoe2VkcywgX30pID0+IGtleV9vZihlZHMpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50X3N0YXRlID0gKHBvcywgbGlzdCgocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnQpKSk7XG5cbiAgbGV0IGVkaXRvcl9vZl9zdGF0ZTogc3RhdGUgPT4gRWRpdG9yLnQgPVxuICAgICh7cG9zLCBlZHMsIF99KSA9PlxuICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgIHwgUHJlbHVkZSA9PiBlZHMucHJlbHVkZVxuICAgICAgfCBDb3JyZWN0SW1wbCA9PiBlZHMuY29ycmVjdF9pbXBsXG4gICAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBlZHMueW91cl90ZXN0cy50ZXN0c1xuICAgICAgfCBZb3VySW1wbCA9PiBlZHMueW91cl9pbXBsXG4gICAgICB8IEhpZGRlbkJ1Z3MoaSkgPT4gTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBpKS5pbXBsXG4gICAgICB8IEhpZGRlblRlc3RzID0+IGVkcy5oaWRkZW5fdGVzdHMudGVzdHNcbiAgICAgIH07XG5cbiAgbGV0IHB1dF9lZGl0b3IgPSAoe3BvcywgZWRzLCBffSBhcyBzdGF0ZTogc3RhdGUsIGVkaXRvcjogRWRpdG9yLnQpID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHByZWx1ZGU6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IENvcnJlY3RJbXBsID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBjb3JyZWN0X2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy55b3VyX3Rlc3RzLFxuICAgICAgICAgICAgdGVzdHM6IGVkaXRvcixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgWW91ckltcGwgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuQnVncyhuKSA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgICAgICBVdGlsLkxpc3RVdGlsLnB1dF9udGgoXG4gICAgICAgICAgICAgIG4sXG4gICAgICAgICAgICAgIHsuLi5MaXN0Lm50aChlZHMuaGlkZGVuX2J1Z3MsIG4pLCBpbXBsOiBlZGl0b3J9LFxuICAgICAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuVGVzdHMgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICAgICAgLi4uZWRzLmhpZGRlbl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBlZGl0b3JzID0gKHtlZHMsIF99OiBzdGF0ZSkgPT5cbiAgICBbXG4gICAgICBlZHMucHJlbHVkZSxcbiAgICAgIGVkcy5jb3JyZWN0X2ltcGwsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgZWRzLnlvdXJfaW1wbCxcbiAgICBdXG4gICAgQCBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHdyb25nX2ltcGwuaW1wbCwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW2Vkcy5oaWRkZW5fdGVzdHMudGVzdHNdO1xuXG4gIGxldCBlZGl0b3JfcG9zaXRpb25zID0gKHtlZHMsIF99OiBzdGF0ZSkgPT5cbiAgICBbUHJlbHVkZSwgQ29ycmVjdEltcGwsIFlvdXJUZXN0c1Rlc3RpbmcsIFlvdXJUZXN0c1ZhbGlkYXRpb24sIFlvdXJJbXBsXVxuICAgIEAgTGlzdC5tYXBpKChpLCBfKSA9PiBIaWRkZW5CdWdzKGkpLCBlZHMuaGlkZGVuX2J1Z3MpXG4gICAgQCBbSGlkZGVuVGVzdHNdO1xuXG4gIGxldCBwb3NpdGlvbmVkX2VkaXRvcnMgPSBzdGF0ZSA9PlxuICAgIExpc3QuY29tYmluZShlZGl0b3JfcG9zaXRpb25zKHN0YXRlKSwgZWRpdG9ycyhzdGF0ZSkpO1xuXG4gIGxldCBpZHhfb2ZfcG9zID0gKHBvcywgcDogcCgnY29kZSkpID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gMFxuICAgIHwgQ29ycmVjdEltcGwgPT4gMVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiAyXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IDNcbiAgICB8IFlvdXJJbXBsID0+IDRcbiAgICB8IEhpZGRlbkJ1Z3MoaSkgPT5cbiAgICAgIGlmIChpIDwgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgNSArIGk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmYWlsd2l0aChcImludmFsaWQgaGlkZGVuIGJ1ZyBpbmRleFwiKTtcbiAgICAgIH1cbiAgICB8IEhpZGRlblRlc3RzID0+IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKVxuICAgIH07XG5cbiAgbGV0IHBvc19vZl9pZHggPSAocDogcCgnY29kZSksIGlkeDogaW50KSA9PlxuICAgIHN3aXRjaCAoaWR4KSB7XG4gICAgfCAwID0+IFByZWx1ZGVcbiAgICB8IDEgPT4gQ29ycmVjdEltcGxcbiAgICB8IDIgPT4gWW91clRlc3RzVGVzdGluZ1xuICAgIHwgMyA9PiBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCA0ID0+IFlvdXJJbXBsXG4gICAgfCBfID0+XG4gICAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgICBmYWlsd2l0aChcIm5lZ2F0aXZlIGlkeFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoaWR4IDwgNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlbkJ1Z3MoaWR4IC0gNSk7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA9PSA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgSGlkZGVuVGVzdHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmYWlsd2l0aChcImVsZW1lbnQgaWR4XCIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IHN3aXRjaF9lZGl0b3IgPSAofnBvcywgaW5zdHJ1Y3Rvcl9tb2RlLCB+ZXhlcmNpc2UpID0+XG4gICAgaWYgKCFpbnN0cnVjdG9yX21vZGUpIHtcbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICB8IEhpZGRlblRlc3RzXG4gICAgICB8IEhpZGRlbkJ1Z3MoXykgPT4gZXhlcmNpc2VcbiAgICAgIHwgXyA9PiB7ZWRzOiBleGVyY2lzZS5lZHMsIHBvc31cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHtlZHM6IGV4ZXJjaXNlLmVkcywgcG9zfTtcbiAgICB9O1xuXG4gIGxldCB6aXBwZXJfb2ZfY29kZSA9IGNvZGUgPT4ge1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKGNvZGUpKSB7XG4gICAgfCBOb25lID0+IGZhaWx3aXRoKFwiVHJhbnNpdGlvbiBmYWlsZWQuXCIpXG4gICAgfCBTb21lKHppcHBlcikgPT4gemlwcGVyXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbjogdHJhbnNpdGlvbmFyeV9zcGVjID0+IHNwZWMgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH0sXG4gICAgKSA9PiB7XG4gICAgICBsZXQgcHJlbHVkZSA9IHppcHBlcl9vZl9jb2RlKHByZWx1ZGUpO1xuICAgICAgbGV0IGNvcnJlY3RfaW1wbCA9IHppcHBlcl9vZl9jb2RlKGNvcnJlY3RfaW1wbCk7XG4gICAgICBsZXQgeW91cl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHRlc3RzID0gemlwcGVyX29mX2NvZGUoeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICAgIH07XG4gICAgICBsZXQgeW91cl9pbXBsID0gemlwcGVyX29mX2NvZGUoeW91cl9pbXBsKTtcbiAgICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGltcGwgPSB6aXBwZXJfb2ZfY29kZShpbXBsKTtcbiAgICAgICAgICAgIGFjYyBAIFt7aW1wbCwgaGludH1dO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgICB9O1xuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBlZHNfb2Zfc3BlYyA9XG4gICAgICAoXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICAgIHByb21wdCxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgICAgfSxcbiAgICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgIClcbiAgICAgIDogZWRzID0+IHtcbiAgICBsZXQgZWRpdG9yX29mX3NlcmlhbGl6YXRpb24gPSBFZGl0b3IuaW5pdCh+c2V0dGluZ3MpO1xuICAgIGxldCBwcmVsdWRlID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24ocHJlbHVkZSk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGNvcnJlY3RfaW1wbCk7XG4gICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICBsZXQgdGVzdHMgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICB9O1xuICAgIGxldCB5b3VyX2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih5b3VyX2ltcGwpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXAoKHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICBsZXQgaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGltcGwpO1xuICAgICAgICAgICB7aW1wbCwgaGludH07XG4gICAgICAgICB9KTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24odGVzdHMpO1xuICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgfTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzLFxuICAgICAgeW91cl9pbXBsLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICBzeW50YXhfdGVzdHMsXG4gICAgfTtcbiAgfTtcblxuICAvL1xuICAvLyBPbGQgdmVyc2lvbiBvZiBhYm92ZSB0aGF0IGRpZCBzdHJpbmctYmFzZWQgcGFyc2luZywgbWF5IGJlIHVzZWZ1bFxuICAvLyBmb3IgdHJhbnNpdGlvbnMgYmV0d2VlbiB6aXBwZXIgZGF0YSBzdHJ1Y3R1cmUgdmVyc2lvbnMgKFRPRE8pXG4gIC8vXG4gIC8vIGxldCBlZGl0b3Jfb2ZfY29kZSA9IChpbml0X2lkLCBjb2RlKSA9PlxuICAvLyAgIHN3aXRjaCAoRWRpdG9yVXRpbC5lZGl0b3Jfb2ZfY29kZShpbml0X2lkLCBjb2RlKSkge1xuICAvLyAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIkV4ZXJjaXNlIGVycm9yOiBpbnZhbGlkIGNvZGVcIilcbiAgLy8gICB8IFNvbWUoeCkgPT4geFxuICAvLyAgIH07XG4gIC8vIGxldCBlZHNfb2Zfc3BlYzogc3BlYyA9PiBlZHMgPVxuICAvLyAgIChcbiAgLy8gICAgIHtcbiAgLy9cbiAgLy8gICAgICAgdGl0bGUsXG4gIC8vICAgICAgIHZlcnNpb24sXG4gIC8vICAgICAgIHByb21wdCxcbiAgLy8gICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAvLyAgICAgICBwcmVsdWRlLFxuICAvLyAgICAgICBjb3JyZWN0X2ltcGwsXG4gIC8vICAgICAgIHlvdXJfdGVzdHMsXG4gIC8vICAgICAgIHlvdXJfaW1wbCxcbiAgLy8gICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgLy8gICAgIH0sXG4gIC8vICAgKSA9PiB7XG4gIC8vICAgICBsZXQgaWQgPSBuZXh0X2lkO1xuICAvLyAgICAgbGV0IChpZCwgcHJlbHVkZSkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgcHJlbHVkZSk7XG4gIC8vICAgICBsZXQgKGlkLCBjb3JyZWN0X2ltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIGNvcnJlY3RfaW1wbCk7XG4gIC8vICAgICBsZXQgKGlkLCB5b3VyX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IChpZCwgdGVzdHMpID0gZWRpdG9yX29mX2NvZGUoaWQsIHlvdXJfdGVzdHMudGVzdHMpO1xuICAvLyAgICAgICAoXG4gIC8vICAgICAgICAgaWQsXG4gIC8vICAgICAgICAge1xuICAvLyAgICAgICAgICAgdGVzdHMsXG4gIC8vICAgICAgICAgICBudW1fcmVxdWlyZWQ6IHlvdXJfdGVzdHMubnVtX3JlcXVpcmVkLFxuICAvLyAgICAgICAgICAgbWluaW11bTogeW91cl90ZXN0cy5taW5pbXVtLFxuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9O1xuICAvLyAgICAgbGV0IChpZCwgeW91cl9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX2J1Z3MpID1cbiAgLy8gICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gIC8vICAgICAgICAgKChpZCwgYWNjKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gIC8vICAgICAgICAgICBsZXQgKGlkLCBpbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBpbXBsKTtcbiAgLy8gICAgICAgICAgIChpZCwgYWNjIEAgW3tpbXBsLCBoaW50fV0pO1xuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICAgKGlkLCBbXSksXG4gIC8vICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgICk7XG4gIC8vICAgICBsZXQgKGlkLCBoaWRkZW5fdGVzdHMpID0ge1xuICAvLyAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB0ZXN0cyk7XG4gIC8vICAgICAgIChpZCwge3Rlc3RzLCBoaW50c30pO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbmV4dF9pZDogaWQsXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9O1xuICAvLyAgIH07XG5cbiAgbGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoe2VkcywgX30gYXMgc3RhdGU6IHN0YXRlLCBuZXdfbW9kZTogYm9vbCkgPT4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkczoge1xuICAgICAgLi4uZWRzLFxuICAgICAgcHJlbHVkZTogRWRpdG9yLnNldF9yZWFkX29ubHkoZWRzLnByZWx1ZGUsICFuZXdfbW9kZSksXG4gICAgfSxcbiAgfTtcblxuICBsZXQgdmlzaWJsZV9pbiA9IChwb3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0cnVlXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGZhbHNlXG4gICAgfCBZb3VySW1wbCA9PiB0cnVlXG4gICAgfCBIaWRkZW5CdWdzKF8pID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGVfb2Zfc3BlYyA9XG4gICAgICAoc3BlYywgfmluc3RydWN0b3JfbW9kZTogYm9vbCwgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCk6IHN0YXRlID0+IHtcbiAgICBsZXQgZWRzID0gZWRzX29mX3NwZWMofnNldHRpbmdzLCBzcGVjKTtcbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKHtwb3M6IFlvdXJJbXBsLCBlZHN9LCBpbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlID1cbiAgICAgICh7cG9zLCBffSBhcyBzdGF0ZTogc3RhdGUsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpID0+IHtcbiAgICBsZXQgemlwcGVycyA9XG4gICAgICBwb3NpdGlvbmVkX2VkaXRvcnMoc3RhdGUpXG4gICAgICB8PiBMaXN0LmZpbHRlcigoKHBvcywgXykpID0+IHZpc2libGVfaW4ocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSlcbiAgICAgIHw+IExpc3QubWFwKCgocG9zLCBlZGl0b3IpKSA9PiB7XG4gICAgICAgICAgIChwb3MsIFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChFZGl0b3IuKGVkaXRvci5zdGF0ZS56aXBwZXIpKSlcbiAgICAgICAgIH0pO1xuICAgIChwb3MsIHppcHBlcnMpO1xuICB9O1xuXG4gIGxldCB1bnBlcnNpc3Rfc3RhdGUgPVxuICAgICAgKFxuICAgICAgICAocG9zLCBwb3NpdGlvbmVkX3ppcHBlcnMpOiBwZXJzaXN0ZW50X3N0YXRlLFxuICAgICAgICB+c3BlYzogc3BlYyxcbiAgICAgICAgfmluc3RydWN0b3JfbW9kZTogYm9vbCxcbiAgICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgIClcbiAgICAgIDogc3RhdGUgPT4ge1xuICAgIGxldCBsb29rdXAgPSAocG9zLCBkZWZhdWx0KSA9PlxuICAgICAgaWYgKHZpc2libGVfaW4ocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgICBsZXQgcGVyc2lzdGVkX3ppcHBlciA9IExpc3QuYXNzb2MocG9zLCBwb3NpdGlvbmVkX3ppcHBlcnMpO1xuICAgICAgICBsZXQgemlwcGVyID0gUGVyc2lzdGVudFppcHBlci51bnBlcnNpc3QocGVyc2lzdGVkX3ppcHBlcik7XG4gICAgICAgIEVkaXRvci5pbml0KHppcHBlciwgfnNldHRpbmdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEVkaXRvci5pbml0KGRlZmF1bHQsIH5zZXR0aW5ncyk7XG4gICAgICB9O1xuICAgIGxldCBwcmVsdWRlID0gbG9va3VwKFByZWx1ZGUsIHNwZWMucHJlbHVkZSk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IGxvb2t1cChDb3JyZWN0SW1wbCwgc3BlYy5jb3JyZWN0X2ltcGwpO1xuICAgIGxldCB5b3VyX3Rlc3RzX3Rlc3RzID0gbG9va3VwKFlvdXJUZXN0c1ZhbGlkYXRpb24sIHNwZWMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHlvdXJfaW1wbCA9IGxvb2t1cChZb3VySW1wbCwgc3BlYy55b3VyX2ltcGwpO1xuICAgIGxldCAoXywgaGlkZGVuX2J1Z3MpID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAoKGksIGhpZGRlbl9idWdzOiBsaXN0KHdyb25nX2ltcGwoRWRpdG9yLnQpKSksIHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgIGxldCBpbXBsID0gbG9va3VwKEhpZGRlbkJ1Z3MoaSksIGltcGwpO1xuICAgICAgICAgIChpICsgMSwgaGlkZGVuX2J1Z3MgQCBbe2ltcGwsIGhpbnR9XSk7XG4gICAgICAgIH0sXG4gICAgICAgICgwLCBbXSksXG4gICAgICAgIHNwZWMuaGlkZGVuX2J1Z3MsXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHNfdGVzdHMgPSBsb29rdXAoSGlkZGVuVGVzdHMsIHNwZWMuaGlkZGVuX3Rlc3RzLnRlc3RzKTtcblxuICAgIHNldF9pbnN0cnVjdG9yX21vZGUoXG4gICAgICB7XG4gICAgICAgIHBvcyxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgdGl0bGU6IHNwZWMudGl0bGUsXG4gICAgICAgICAgdmVyc2lvbjogc3BlYy52ZXJzaW9uLFxuICAgICAgICAgIG1vZHVsZV9uYW1lOiBzcGVjLm1vZHVsZV9uYW1lLFxuICAgICAgICAgIHByb21wdDogc3BlYy5wcm9tcHQsXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBzcGVjLnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICBwcmVsdWRlLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICB0ZXN0czogeW91cl90ZXN0c190ZXN0cyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBzcGVjLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgICAgICBwcm92aWRlZDogc3BlYy55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IGhpZGRlbl90ZXN0c190ZXN0cyxcbiAgICAgICAgICAgIGhpbnRzOiBzcGVjLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN5bnRheF90ZXN0czogc3BlYy5zeW50YXhfdGVzdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICk7XG4gIH07XG5cbiAgLy8gIyBTdGl0Y2hpbmdcblxuICB0eXBlIHN0aXRjaGVkKCdhKSA9IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb246ICdhLCAvLyBwcmVsdWRlICsgY29ycmVjdF9pbXBsICsgeW91cl90ZXN0c1xuICAgIHVzZXJfaW1wbDogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGxcbiAgICB1c2VyX3Rlc3RzOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbCArIHlvdXJfdGVzdHNcbiAgICBwcmVsdWRlOiAnYSwgLy8gcHJlbHVkZVxuICAgIGluc3RydWN0b3I6ICdhLCAvLyBwcmVsdWRlICsgY29ycmVjdF9pbXBsICsgaGlkZGVuX3Rlc3RzLnRlc3RzIC8vIFRPRE8gb25seSBuZWVkcyB0byBydW4gaW4gaW5zdHJ1Y3RvciBtb2RlXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3QoJ2EpLCAvLyBwcmVsdWRlICsgaGlkZGVuX2J1Z3NbaV0uaW1wbCArIHlvdXJfdGVzdHMsXG4gICAgaGlkZGVuX3Rlc3RzOiAnYSxcbiAgfTtcblxuICBsZXQgd3JhcF9maWx0ZXIgPSAoYWN0OiBGaWx0ZXJBY3Rpb24uYWN0aW9uLCB0ZXJtOiBUZXJtLlVFeHAudCk6IFRlcm0uVUV4cC50ID0+XG4gICAgVGVybUJhc2UuVUV4cC57XG4gICAgICB0ZXJtOlxuICAgICAgICBUZXJtQmFzZS5VRXhwLkZpbHRlcihcbiAgICAgICAgICBGaWx0ZXJBY3Rpb24uKGFjdCwgT25lKSxcbiAgICAgICAgICB7dGVybTogQ29uc3RydWN0b3IoXCIkZVwiKSwgaWRzOiBbSWQubWsoKV19LFxuICAgICAgICAgIHRlcm0sXG4gICAgICAgICksXG4gICAgICBpZHM6IFtJZC5taygpXSxcbiAgICB9O1xuXG4gIGxldCB0ZXJtX29mID0gKGVkaXRvcjogRWRpdG9yLnQpOiBUZXJtLlVFeHAudCA9PlxuICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuXG4gIGxldCBzdGl0Y2gzID0gKGVkMTogRWRpdG9yLnQsIGVkMjogRWRpdG9yLnQsIGVkMzogRWRpdG9yLnQpID0+XG4gICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKFxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHRlcm1fb2YoZWQxKSwgdGVybV9vZihlZDIpKSxcbiAgICAgIHRlcm1fb2YoZWQzKSxcbiAgICApO1xuXG4gIGxldCBzdGl0Y2hfdGVybSA9ICh7ZWRzLCBffTogc3RhdGUpOiBzdGl0Y2hlZChUZXJtQmFzZS5VRXhwLnQpID0+IHtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgdXNlcl9pbXBsX3Rlcm0gPSB7XG4gICAgICBsZXQgeW91cl9pbXBsX3Rlcm0gPVxuICAgICAgICBlZHMueW91cl9pbXBsIHw+IHRlcm1fb2YgfD4gd3JhcF9maWx0ZXIoRmlsdGVyQWN0aW9uLlN0ZXApO1xuICAgICAgbGV0IHByZWx1ZGVfdGVybSA9XG4gICAgICAgIGVkcy5wcmVsdWRlIHw+IHRlcm1fb2YgfD4gd3JhcF9maWx0ZXIoRmlsdGVyQWN0aW9uLkV2YWwpO1xuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHByZWx1ZGVfdGVybSwgeW91cl9pbXBsX3Rlcm0pO1xuICAgIH07XG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbl90ZXJtID1cbiAgICAgIHN0aXRjaDMoZWRzLnByZWx1ZGUsIGVkcy5jb3JyZWN0X2ltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgdXNlcl90ZXN0c190ZXJtID1cbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh1c2VyX2ltcGxfdGVybSwgdGVybV9vZihlZHMueW91cl90ZXN0cy50ZXN0cykpO1xuICAgIGxldCBoaWRkZW5fdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLmhpZGRlbl90ZXN0cy50ZXN0cykpO1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbjogdGVzdF92YWxpZGF0aW9uX3Rlcm0sXG4gICAgICB1c2VyX2ltcGw6IHVzZXJfaW1wbF90ZXJtLFxuICAgICAgdXNlcl90ZXN0czogdXNlcl90ZXN0c190ZXJtLFxuICAgICAgLy8gaW5zdHJ1Y3RvciB3b3JrcyBoZXJlIGFzIGxvbmcgYXMgeW91IGRvbid0IHNoYWRvdyBhbnl0aGluZyBpbiB0aGUgcHJlbHVkZVxuICAgICAgcHJlbHVkZTogaW5zdHJ1Y3RvcixcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHQpOiBUZXJtQmFzZS5VRXhwLnQgPT5cbiAgICAgICAgICAgIHN0aXRjaDMoZWRzLnByZWx1ZGUsIHQuaW1wbCwgZWRzLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICAgIGVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgKSxcbiAgICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzX3Rlcm0sXG4gICAgfTtcbiAgfTtcbiAgbGV0IHN0aXRjaF90ZXJtID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX3Rlcm0pO1xuXG4gIHR5cGUgc3RpdGNoZWRfc3RhdGljcyA9IHN0aXRjaGVkKEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpO1xuXG4gIC8qIE11bHRpcGxlIHN0aXRjaGluZ3MgYXJlIG5lZWRlZCBmb3IgZWFjaCBleGVyY2lzZVxuICAgICAoc2VlIGNvbW1lbnRzIGluIHRoZSBzdGl0Y2hlZCB0eXBlIGFib3ZlKVxuXG4gICAgIFN0aXRjaGluZyBpcyBuZWNlc3NhcnkgdG8gY29uY2F0ZW5hdGUgdGVybXNcbiAgICAgZnJvbSBkaWZmZXJlbnQgZWRpdG9ycywgd2hpY2ggYXJlIHRoZW4gdHlwZWNoZWNrZWQuICovXG4gIGxldCBzdGl0Y2hfc3RhdGljID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHQ6IHN0aXRjaGVkKFRlcm1CYXNlLlVFeHAudCkpXG4gICAgICA6IHN0aXRjaGVkX3N0YXRpY3MgPT4ge1xuICAgIGxldCBtayA9ICh0ZXJtOiBUZXJtQmFzZS5VRXhwLnQpOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50ID0+IHtcbiAgICAgIC8vTk9URTogdGhpcyBpcyBleHBlbnNpdmUgYW5kIF9hbG1vc3RfIHJlZHVuZGFudCB0byB0aGUgc3RhdGljcyBpbiBFZGl0b3JcbiAgICAgIGxldCBpbmZvX21hcCA9IFN0YXRpY3MubWsoc2V0dGluZ3MsIEJ1aWx0aW5zLmN0eF9pbml0LCB0ZXJtKTtcbiAgICAgIHt0ZXJtLCBlcnJvcl9pZHM6IFN0YXRpY3MuTWFwLmVycm9yX2lkcyhpbmZvX21hcCksIGluZm9fbWFwfTtcbiAgICB9O1xuICAgIGxldCBpbnN0cnVjdG9yID0gbWsodC5pbnN0cnVjdG9yKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IG1rKHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgIHVzZXJfaW1wbDogbWsodC51c2VyX2ltcGwpLFxuICAgICAgdXNlcl90ZXN0czogbWsodC51c2VyX3Rlc3RzKSxcbiAgICAgIHByZWx1ZGU6IGluc3RydWN0b3IsIC8vIHdvcmtzIGFzIGxvbmcgYXMgeW91IGRvbid0IHNoYWRvdyBhbnl0aGluZyBpbiB0aGUgcHJlbHVkZVxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzOiBMaXN0Lm1hcChtaywgdC5oaWRkZW5fYnVncyksXG4gICAgICBoaWRkZW5fdGVzdHM6IG1rKHQuaGlkZGVuX3Rlc3RzKSxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfc3RhdGljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX3N0YXRpYyk7XG5cbiAgbGV0IHByZWx1ZGVfa2V5ID0gXCJwcmVsdWRlXCI7XG4gIGxldCB0ZXN0X3ZhbGlkYXRpb25fa2V5ID0gXCJ0ZXN0X3ZhbGlkYXRpb25cIjtcbiAgbGV0IHVzZXJfaW1wbF9rZXkgPSBcInVzZXJfaW1wbFwiO1xuICBsZXQgdXNlcl90ZXN0c19rZXkgPSBcInVzZXJfdGVzdHNcIjtcbiAgbGV0IGluc3RydWN0b3Jfa2V5ID0gXCJpbnN0cnVjdG9yXCI7XG4gIGxldCBoaWRkZW5fYnVnc19rZXkgPSBuID0+IFwiaGlkZGVuX2J1Z3NfXCIgKysgc3RyaW5nX29mX2ludChuKTtcbiAgbGV0IGhpZGRlbl90ZXN0c19rZXkgPSBcImhpZGRlbl90ZXN0c1wiO1xuXG4gIGxldCBrZXlfZm9yX3N0YXRpY3MgPSAoc3RhdGU6IHN0YXRlKTogc3RyaW5nID0+XG4gICAgc3dpdGNoIChzdGF0ZS5wb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gcHJlbHVkZV9rZXlcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3Jfa2V5XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHRlc3RfdmFsaWRhdGlvbl9rZXlcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gdXNlcl90ZXN0c19rZXlcbiAgICB8IFlvdXJJbXBsID0+IHVzZXJfaW1wbF9rZXlcbiAgICB8IEhpZGRlbkJ1Z3MoaWR4KSA9PiBoaWRkZW5fYnVnc19rZXkoaWR4KVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaGlkZGVuX3Rlc3RzX2tleVxuICAgIH07XG5cbiAgbGV0IHNwbGljZWRfZWxhYnMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBESEV4cC50KSkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZTogXyxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IGVsYWIgPSAoczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCkgPT5cbiAgICAgIEludGVyZmFjZS5lbGFib3JhdGUofnNldHRpbmdzLCBzLmluZm9fbWFwLCBzLnRlcm0pO1xuICAgIFtcbiAgICAgICh0ZXN0X3ZhbGlkYXRpb25fa2V5LCBlbGFiKHRlc3RfdmFsaWRhdGlvbikpLFxuICAgICAgKHVzZXJfaW1wbF9rZXksIGVsYWIodXNlcl9pbXBsKSksXG4gICAgICAodXNlcl90ZXN0c19rZXksIGVsYWIodXNlcl90ZXN0cykpLFxuICAgICAgKGluc3RydWN0b3Jfa2V5LCBlbGFiKGluc3RydWN0b3IpKSxcbiAgICAgIChoaWRkZW5fdGVzdHNfa2V5LCBlbGFiKGhpZGRlbl90ZXN0cykpLFxuICAgIF1cbiAgICBAIChcbiAgICAgIGhpZGRlbl9idWdzXG4gICAgICB8PiBMaXN0Lm1hcGkoKG4sIGhpZGRlbl9idWc6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpID0+XG4gICAgICAgICAgIChoaWRkZW5fYnVnc19rZXkobiksIGVsYWIoaGlkZGVuX2J1ZykpXG4gICAgICAgICApXG4gICAgKTtcbiAgfTtcblxuICBtb2R1bGUgRHluYW1pY3NJdGVtID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQsXG4gICAgICByZXN1bHQ6IE1vZGVsUmVzdWx0LnQsXG4gICAgfTtcbiAgICBsZXQgZW1wdHk6IHQgPSB7c3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MuZW1wdHksIHJlc3VsdDogTm9FbGFifTtcbiAgICBsZXQgc3RhdGljc19vbmx5ID0gKHN0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpOiB0ID0+IHtcbiAgICAgIHN0YXRpY3MsXG4gICAgICByZXN1bHQ6IE5vRWxhYixcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGF0aWNzX29mX3N0aWNoZWRfZHluYW1pY3MgPVxuICAgICAgKHN0YXRlOiBzdGF0ZSwgczogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpKTogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCA9PlxuICAgIHN3aXRjaCAoc3RhdGUucG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHMucHJlbHVkZS5zdGF0aWNzXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBzLmluc3RydWN0b3Iuc3RhdGljc1xuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiBzLnRlc3RfdmFsaWRhdGlvbi5zdGF0aWNzXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHMudXNlcl90ZXN0cy5zdGF0aWNzXG4gICAgfCBZb3VySW1wbCA9PiBzLnVzZXJfaW1wbC5zdGF0aWNzXG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gTGlzdC5udGgocy5oaWRkZW5fYnVncywgaWR4KS5zdGF0aWNzXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBzLmhpZGRlbl90ZXN0cy5zdGF0aWNzXG4gICAgfTtcblxuICAvKiBHaXZlbiB0aGUgZXZhbHVhdGlvbiByZXN1bHRzLCBjb2xsZWN0cyB0aGVcbiAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIHByb2R1Y2luZyBkeW5hbWljXG4gICAgIGZlZWRiYWNrKi9cbiAgbGV0IHN0aXRjaF9keW5hbWljID1cbiAgICAgIChcbiAgICAgICAgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IG9wdGlvbihNb2RlbFJlc3VsdHMudCksXG4gICAgICApXG4gICAgICA6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgcmVzdWx0X29mID0ga2V5ID0+XG4gICAgICBzd2l0Y2ggKHJlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiBNb2RlbFJlc3VsdC5Ob0VsYWJcbiAgICAgIHwgU29tZShyZXN1bHRzKSA9PlxuICAgICAgICBNb2RlbFJlc3VsdHMubG9va3VwKHJlc3VsdHMsIGtleSlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PU1vZGVsUmVzdWx0Lk5vRWxhYilcbiAgICAgIH07XG5cbiAgICBsZXQgdGVzdF92YWxpZGF0aW9uID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHN0YXRpY3M6IHRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YodGVzdF92YWxpZGF0aW9uX2tleSksXG4gICAgICB9O1xuXG4gICAgbGV0IHVzZXJfaW1wbCA9XG4gICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3M6IHVzZXJfaW1wbCwgcmVzdWx0OiByZXN1bHRfb2YodXNlcl9pbXBsX2tleSl9O1xuXG4gICAgbGV0IHVzZXJfdGVzdHMgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiB1c2VyX3Rlc3RzLCByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX3Rlc3RzX2tleSl9O1xuICAgIGxldCBwcmVsdWRlID0gRHluYW1pY3NJdGVtLntzdGF0aWNzOiBwcmVsdWRlLCByZXN1bHQ6IE5vRWxhYn07XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiBpbnN0cnVjdG9yLCByZXN1bHQ6IHJlc3VsdF9vZihpbnN0cnVjdG9yX2tleSl9O1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChuLCBzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KSA9PlxuICAgICAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljcywgcmVzdWx0OiByZXN1bHRfb2YoaGlkZGVuX2J1Z3Nfa2V5KG4pKX0sXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHN0YXRpY3M6IGhpZGRlbl90ZXN0cyxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YoaGlkZGVuX3Rlc3RzX2tleSksXG4gICAgICB9O1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0aXRjaF9keW5hbWljID1cbiAgICAgIChcbiAgICAgICAgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IG9wdGlvbihNb2RlbFJlc3VsdHMudCksXG4gICAgICApXG4gICAgICA6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSA9PlxuICAgIGlmIChzZXR0aW5ncy5zdGF0aWNzICYmIHNldHRpbmdzLmR5bmFtaWNzKSB7XG4gICAgICBzdGl0Y2hfZHluYW1pYyhzZXR0aW5ncywgc3RhdGUsIHJlc3VsdHMpO1xuICAgIH0gZWxzZSBpZiAoc2V0dGluZ3Muc3RhdGljcykge1xuICAgICAgbGV0IHQgPSBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgICB1c2VyX2ltcGw6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC51c2VyX2ltcGwpLFxuICAgICAgICB1c2VyX3Rlc3RzOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl90ZXN0cyksXG4gICAgICAgIGluc3RydWN0b3I6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5pbnN0cnVjdG9yKSxcbiAgICAgICAgcHJlbHVkZTogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnByZWx1ZGUpLFxuICAgICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAoRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSwgdC5oaWRkZW5fYnVncyksXG4gICAgICAgIGhpZGRlbl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LmhpZGRlbl90ZXN0cyksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB7XG4gICAgICAgIHRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICB1c2VyX2ltcGw6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHN0YXRlLmVkcy5oaWRkZW5fYnVncyksIF8gPT5cbiAgICAgICAgICAgIER5bmFtaWNzSXRlbS5lbXB0eVxuICAgICAgICAgICksXG4gICAgICAgIGhpZGRlbl90ZXN0czogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgfTtcbiAgICB9O1xuICBsZXQgc3RpdGNoX2R5bmFtaWMgPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfZHluYW1pYyk7XG5cbiAgLy8gTW9kdWxlIEV4cG9ydFxuXG4gIGxldCBlZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IHNlcmlhbGl6YXRpb24gPSBaaXBwZXIuc2hvdyh6aXBwZXIpO1xuICAgIC8vIGxldCBzdHJpbmdfbGl0ZXJhbCA9IFwiXFxcIlwiICsrIFN0cmluZy5lc2NhcGVkKHNlcmlhbGl6YXRpb24pICsrIFwiXFxcIlwiO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBzZXJpYWxpemF0aW9uKTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKGVkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IHByZWZpeCArKyByZWNvcmQgKysgXCJcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCB0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCA9IChmbXQsIGVkaXRvcjogRWRpdG9yLnQpID0+IHtcbiAgICBsZXQgemlwcGVyID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBsZXQgY29kZSA9IFByaW50ZXIudG9fc3RyaW5nX2Jhc2ljKHppcHBlcik7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIFwiXFxcIlwiICsrIFN0cmluZy5lc2NhcGVkKGNvZGUpICsrIFwiXFxcIlwiKTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgcHJlZml4ID1cbiAgICAgIFwibGV0IHByb21wdCA9IFwiXG4gICAgICArKyBtb2R1bGVfbmFtZVxuICAgICAgKysgXCJfcHJvbXB0LnByb21wdFxcblwiXG4gICAgICArKyBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IEV4ZXJjaXNlLnRyYW5zaXRpb24oXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcCh0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IHByZWZpeCArKyByZWNvcmQgKysgXCIpXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X2dyYWRpbmdfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgaGVhZGVyID0gb3V0cHV0X2hlYWRlcl9ncmFkaW5nKG1vZHVsZV9uYW1lKTtcbiAgICBsZXQgcHJlZml4ID0gXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKGVkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IGhlYWRlciArKyBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgYmxhbmtfc3BlYyA9XG4gICAgICAoXG4gICAgICAgIH50aXRsZSxcbiAgICAgICAgfm1vZHVsZV9uYW1lLFxuICAgICAgICB+cG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICB+cmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIH5wcm92aWRlZF90ZXN0cyxcbiAgICAgICAgfm51bV93cm9uZ19pbXBscyxcbiAgICAgICkgPT4ge1xuICAgIGxldCBwcmVsdWRlID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgY29ycmVjdF9pbXBsID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgIExpc3QuaW5pdChcbiAgICAgICAgbnVtX3dyb25nX2ltcGxzLFxuICAgICAgICBpID0+IHtcbiAgICAgICAgICBsZXQgemlwcGVyID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICAgICAgICB7aW1wbDogemlwcGVyLCBoaW50OiBcIlRPRE86IGhpbnQgXCIgKysgc3RyaW5nX29mX2ludChpKX07XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIHtcbiAgICAgIHRpdGxlLFxuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBFeGVyY2lzZUVudi5kZWZhdWx0LFxuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZF90ZXN0cyxcbiAgICAgICAgcHJvdmlkZWQ6IHByb3ZpZGVkX3Rlc3RzLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbCxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgIGhpbnRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBzeW50YXhfdGVzdHM6IFtdLFxuICAgIH07XG4gIH07XG5cbiAgLy8gRnJvbSBTdG9yZVxuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBleGVyY2lzZV9leHBvcnQgPSB7XG4gICAgY3VyX2V4ZXJjaXNlOiBrZXksXG4gICAgZXhlcmNpc2VfZGF0YTogbGlzdCgoa2V5LCBwZXJzaXN0ZW50X3N0YXRlKSksXG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZV9leGVyY2lzZSA9IChleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfD4gc2V4cF9vZl9wZXJzaXN0ZW50X3N0YXRlXG4gICAgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemVfZXhlcmNpc2UgPSAoZGF0YSwgfnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBkYXRhXG4gICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgIHw+IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cFxuICAgIHw+IHVucGVyc2lzdF9zdGF0ZSh+c3BlYywgfmluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCA9IGRhdGEgPT4ge1xuICAgIGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBleGVyY2lzZV9leHBvcnRfb2Zfc2V4cDtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuUHJpbWl0aXZlcztcblxubW9kdWxlIEYgPSAoRXhlcmNpc2VFbnY6IEV4ZXJjaXNlLkV4ZXJjaXNlRW52KSA9PiB7XG4gIG9wZW4gRXhlcmNpc2UuRihFeGVyY2lzZUVudik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcmNlbnRhZ2UgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvaW50cyA9IGZsb2F0O1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc2NvcmUgPSAocG9pbnRzLCBwb2ludHMpO1xuXG4gIGxldCBzY29yZV9vZl9wZXJjZW50ID0gKHBlcmNlbnQsIG1heF9wb2ludHMpID0+IHtcbiAgICBsZXQgbWF4X3BvaW50cyA9IGZsb2F0X29mX2ludChtYXhfcG9pbnRzKTtcbiAgICAocGVyY2VudCAqLiBtYXhfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgfTtcblxuICBtb2R1bGUgVGVzdFZhbGlkYXRpb25SZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICByZXF1aXJlZDogaW50LFxuICAgICAgcHJvdmlkZWQ6IGludCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSkgPT4ge1xuICAgICAge1xuICAgICAgICB0ZXN0X3Jlc3VsdHMsXG4gICAgICAgIHJlcXVpcmVkOiBlZHMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgcHJvdmlkZWQ6IGVkcy55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBzd2l0Y2ggKHJlcG9ydC50ZXN0X3Jlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiAwLjBcbiAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgIGxldCBudW1fdGVzdHMgPSBmbG9hdF9vZl9pbnQodGVzdF9yZXN1bHRzLnRvdGFsKTtcbiAgICAgICAgbGV0IHJlcXVpcmVkID0gZmxvYXRfb2ZfaW50KHJlcG9ydC5yZXF1aXJlZCk7XG4gICAgICAgIGxldCBwcm92aWRlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucHJvdmlkZWQpO1xuICAgICAgICBsZXQgbnVtX3Bhc3NpbmcgPSBmbG9hdF9vZl9pbnQodGVzdF9yZXN1bHRzLnBhc3NpbmcpO1xuXG4gICAgICAgIHJlcXVpcmVkIC0uIHByb3ZpZGVkIDw9IDAuMCB8fCBudW1fdGVzdHMgPD0gMC4wXG4gICAgICAgICAgPyAwLjBcbiAgICAgICAgICA6IG51bV9wYXNzaW5nXG4gICAgICAgICAgICAvLiBudW1fdGVzdHNcbiAgICAgICAgICAgICouIChcbiAgICAgICAgICAgICAgRmxvYXQubWF4KFxuICAgICAgICAgICAgICAgIDAuLFxuICAgICAgICAgICAgICAgIEZsb2F0Lm1pbihudW1fdGVzdHMgLS4gcHJvdmlkZWQsIHJlcXVpcmVkIC0uIHByb3ZpZGVkKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAvLiAocmVxdWlyZWQgLS4gcHJvdmlkZWQpXG4gICAgICAgICAgICApO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgTXV0YXRpb25UZXN0aW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtyZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpfTtcblxuICAgIGxldCBoaWRkZW5fYnVnX3N0YXR1cyA9XG4gICAgICAgIChcbiAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z19kYXRhOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgKVxuICAgICAgICA6IFRlc3RTdGF0dXMudCA9PiB7XG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHModGVzdF92YWxpZGF0aW9uX2RhdGEucmVzdWx0KSxcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKGhpZGRlbl9idWdfZGF0YS5yZXN1bHQpLFxuICAgICAgKSB7XG4gICAgICB8IChOb25lLCBfKVxuICAgICAgfCAoXywgTm9uZSkgPT4gSW5kZXRcbiAgICAgIHwgKFNvbWUodGVzdF92YWxpZGF0aW9uX2RhdGEpLCBTb21lKGhpZGRlbl9idWdfZGF0YSkpID0+XG4gICAgICAgIGxldCB2YWxpZGF0aW9uX3Rlc3RfbWFwID0gdGVzdF92YWxpZGF0aW9uX2RhdGEudGVzdF9tYXA7XG4gICAgICAgIGxldCBoaWRkZW5fYnVnX3Rlc3RfbWFwID0gaGlkZGVuX2J1Z19kYXRhLnRlc3RfbWFwO1xuXG4gICAgICAgIGxldCBmb3VuZCA9XG4gICAgICAgICAgaGlkZGVuX2J1Z190ZXN0X21hcFxuICAgICAgICAgIHw+IExpc3QuZmluZF9vcHQoKChpZCwgaW5zdGFuY2VfcmVwb3J0cykpID0+IHtcbiAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0TWFwLmpvaW50X3N0YXR1cyhpbnN0YW5jZV9yZXBvcnRzKTtcbiAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuUGFzc1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuRmFpbCA9PlxuICAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMgPVxuICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25fdGVzdF9tYXAgfD4gVGVzdE1hcC5sb29rdXAoaWQpO1xuICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzKSB7XG4gICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICB8IFNvbWUocmVwb3J0cykgPT5cbiAgICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMocmVwb3J0cyk7XG4gICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuUGFzcyA9PiB0cnVlXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWxcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuSW5kZXQgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgc3dpdGNoIChmb3VuZCkge1xuICAgICAgICB8IE5vbmUgPT4gRmFpbFxuICAgICAgICB8IFNvbWUoXykgPT4gUGFzc1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9OyAvLyBmb3IgZWFjaCBoaWRkZW4gYnVnXG4gICAgLy8gICBpbiB0aGUgdGVzdCByZXN1bHRzIGRhdGEsIGZpbmQgYSB0ZXN0IElEIHRoYXQgcGFzc2VzIHRlc3QgdmFsaWRhdGlvbiBidXQgZmFpbHMgYWdhaW5zdFxuXG4gICAgbGV0IG1rID1cbiAgICAgICAgKFxuICAgICAgICAgIH50ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIH5oaWRkZW5fYnVnc19zdGF0ZTogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSksXG4gICAgICAgICAgfmhpZGRlbl9idWdzOiBsaXN0KER5bmFtaWNzSXRlbS50KSxcbiAgICAgICAgKVxuICAgICAgICA6IHQgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPVxuICAgICAgICBMaXN0Lm1hcChoaWRkZW5fYnVnX3N0YXR1cyh0ZXN0X3ZhbGlkYXRpb24pLCBoaWRkZW5fYnVncyk7XG4gICAgICBsZXQgaGludHMgPVxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAod3JvbmdfaW1wbDogd3JvbmdfaW1wbChFZGl0b3IudCkpID0+IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICBoaWRkZW5fYnVnc19zdGF0ZSxcbiAgICAgICAgKTtcbiAgICAgIGxldCByZXN1bHRzID0gTGlzdC5jb21iaW5lKHJlc3VsdHMsIGhpbnRzKTtcbiAgICAgIHtyZXN1bHRzOiByZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBsZXQgcmVzdWx0cyA9IHJlcG9ydC5yZXN1bHRzO1xuICAgICAgbGV0IG51bV93cm9uZ19pbXBscyA9IExpc3QubGVuZ3RoKHJlc3VsdHMpO1xuICAgICAgbGV0IG51bV9wYXNzZWQgPVxuICAgICAgICByZXN1bHRzXG4gICAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICAgIHN3aXRjaCAobnVtX3dyb25nX2ltcGxzKSB7XG4gICAgICB8IDAgPT4gMS4wXG4gICAgICB8IF8gPT4gZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQpIC8uIGZsb2F0X29mX2ludChudW1fd3JvbmdfaW1wbHMpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICAvLyBUT0RPIG1vdmUgdG8gc2VwYXJhdGUgbW9kdWxlXG5cbiAgICBsZXQgc3VtbWFyeV9zdHIgPSAofnRvdGFsLCB+Zm91bmQpOiBzdHJpbmcgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10b3RhbCxcbiAgICAgICAgfnA9Zm91bmQsXG4gICAgICAgIH5xPTAsXG4gICAgICAgIH5uX3N0cj1cImJ1Z1wiLFxuICAgICAgICB+bnNfc3RyPVwiYnVnc1wiLFxuICAgICAgICB+cF9zdHI9XCJleHBvc2VkXCIsXG4gICAgICAgIH5xX3N0cj1cIlwiLFxuICAgICAgICB+cl9zdHI9XCJ1bnJldmVhbGVkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIFN5bnRheFJlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoYm9vbCwgaGludCkpLFxuICAgICAgcGVyY2VudGFnZSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH55b3VyX2ltcGw6IEVkaXRvci50LCB+dGVzdHM6IHN5bnRheF90ZXN0cyk6IHQgPT4ge1xuICAgICAgbGV0IHVzZXJfaW1wbF90ZXJtID1cbiAgICAgICAgTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbSh5b3VyX2ltcGwuc3RhdGUuemlwcGVyKSB8PiBmc3Q7XG5cbiAgICAgIGxldCBwcmVkaWNhdGVzID1cbiAgICAgICAgTGlzdC5tYXAoKChfLCBwKSkgPT4gU3ludGF4VGVzdC5wcmVkaWNhdGVfZm4ocCksIHRlc3RzKTtcbiAgICAgIGxldCBoaW50cyA9IExpc3QubWFwKCgoaCwgXykpID0+IGgsIHRlc3RzKTtcbiAgICAgIGxldCBzeW50YXhfcmVzdWx0cyA9IFN5bnRheFRlc3QuY2hlY2sodXNlcl9pbXBsX3Rlcm0sIHByZWRpY2F0ZXMpO1xuXG4gICAgICB7XG4gICAgICAgIGhpbnRlZF9yZXN1bHRzOlxuICAgICAgICAgIExpc3QubWFwMigociwgaCkgPT4gKHIsIGgpLCBzeW50YXhfcmVzdWx0cy5yZXN1bHRzLCBoaW50cyksXG4gICAgICAgIHBlcmNlbnRhZ2U6IHN5bnRheF9yZXN1bHRzLnBlcmNlbnRhZ2UsXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEltcGxHcmFkaW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRzOiBsaXN0KHN0cmluZyksXG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofmhpbnRzOiBsaXN0KHN0cmluZyksIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSk6IHQgPT4ge1xuICAgICAgbGV0IGhpbnRlZF9yZXN1bHRzID1cbiAgICAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbiAgICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgICBsZXQgc3RhdHVzZXMgPSB0ZXN0X3Jlc3VsdHMuc3RhdHVzZXM7XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBzdGF0dXNlcyxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIk5vIGhpbnQgYXZhaWxhYmxlLlwiLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIkV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3I6IEhpbnQgd2l0aG91dCBhIHRlc3QuXCIsXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAge2hpbnRzLCB0ZXN0X3Jlc3VsdHMsIGhpbnRlZF9yZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsID0gKHJlcG9ydDogdCkgPT4gTGlzdC5sZW5ndGgocmVwb3J0LmhpbnRlZF9yZXN1bHRzKTtcbiAgICBsZXQgbnVtX3Bhc3NlZCA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICAgIHJlcG9ydC5oaW50ZWRfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0LCBzeW50YXhfcmVwb3J0OiBTeW50YXhSZXBvcnQudCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3ludGF4X3JlcG9ydC5wZXJjZW50YWdlXG4gICAgICAqLiAoZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQocmVwb3J0KSkgLy4gZmxvYXRfb2ZfaW50KHRvdGFsKHJlcG9ydCkpKTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OiBUZXN0VmFsaWRhdGlvblJlcG9ydC50LFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6IE11dGF0aW9uVGVzdGluZ1JlcG9ydC50LFxuICAgICAgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQsXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OiBJbXBsR3JhZGluZ1JlcG9ydC50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIH5zdGl0Y2hlZF9keW5hbWljczogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpKSA9PiB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb246IGVkcy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OlxuICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5tayhcbiAgICAgICAgICBlZHMsXG4gICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbi5yZXN1bHQpLFxuICAgICAgICApLFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6XG4gICAgICAgIE11dGF0aW9uVGVzdGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uPXN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU9ZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgIH5oaWRkZW5fYnVncz1zdGl0Y2hlZF9keW5hbWljcy5oaWRkZW5fYnVncyxcbiAgICAgICAgKSxcbiAgICAgIHN5bnRheF9yZXBvcnQ6XG4gICAgICAgIFN5bnRheFJlcG9ydC5tayh+eW91cl9pbXBsPWVkcy55b3VyX2ltcGwsIH50ZXN0cz1lZHMuc3ludGF4X3Rlc3RzKSxcbiAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQ6XG4gICAgICAgIEltcGxHcmFkaW5nUmVwb3J0Lm1rKFxuICAgICAgICAgIH5oaW50cz1lZHMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH50ZXN0X3Jlc3VsdHM9XG4gICAgICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoc3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX3Rlc3RzLnJlc3VsdCksXG4gICAgICAgICksXG4gICAgfTtcblxuICAgIGxldCBvdmVyYWxsX3Njb3JlID1cbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQsXG4gICAgICAgICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCxcbiAgICAgICAgICAgIHN5bnRheF9yZXBvcnQsXG4gICAgICAgICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0LFxuICAgICAgICAgICAgXyxcbiAgICAgICAgICB9OiB0LFxuICAgICAgICApXG4gICAgICAgIDogc2NvcmUgPT4ge1xuICAgICAgbGV0ICh0dl9wb2ludHMsIHR2X21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIFRlc3RWYWxpZGF0aW9uUmVwb3J0LnBlcmNlbnRhZ2UodGVzdF92YWxpZGF0aW9uX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgKTtcbiAgICAgIGxldCAobXRfcG9pbnRzLCBtdF9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQucGVyY2VudGFnZShtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLm11dGF0aW9uX3Rlc3RpbmcsXG4gICAgICAgICk7XG4gICAgICBsZXQgKGlnX3BvaW50cywgaWdfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgSW1wbEdyYWRpbmdSZXBvcnQucGVyY2VudGFnZShpbXBsX2dyYWRpbmdfcmVwb3J0LCBzeW50YXhfcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24uaW1wbF9ncmFkaW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IHRvdGFsX3BvaW50cyA9IHR2X3BvaW50cyArLiBtdF9wb2ludHMgKy4gaWdfcG9pbnRzO1xuICAgICAgbGV0IG1heF9wb2ludHMgPSB0dl9tYXggKy4gbXRfbWF4ICsuIGlnX21heDtcbiAgICAgICh0b3RhbF9wb2ludHMsIG1heF9wb2ludHMpO1xuICAgIH07XG4gIH07XG59O1xuIiwibW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSB1bml0O1xuICBsZXQgZGVmYXVsdCA9ICgpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IEV4ZXJjaXNlLm91dHB1dF9oZWFkZXJfZ3JhZGluZztcbn07XG5cbm1vZHVsZSBFeGVyY2lzZSA9IEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG5tb2R1bGUgR3JhZGluZyA9IEdyYWRpbmcuRihFeGVyY2lzZUVudik7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy8yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBkZWJ1ZyA9XG4gIGxldCBfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBhbmQgX09NRF9ERUJVRyA9XG4gICAgdHJ5XG4gICAgICBTb21lKFN5cy5nZXRlbnYgXCJPTURfREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBfREVCVUcsIF9PTURfREVCVUcgd2l0aFxuICB8IF8sIFNvbWUgXCJmYWxzZVwiIC0+XG4gICAgIGZhbHNlXG4gIHwgU29tZSBfLCBOb25lIC0+XG4gICAgIGVwcmludGYgXCJvbWQ6IGRlYnVnIG1vZGUgYWN0aXZhdGVkIGJlY2F1c2UgREVCVUcgaXMgc2V0LCBcXFxuICAgICAgICAgICAgICB5b3UgY2FuIGRlYWN0aXZhdGUgdGhlIG1vZGUgYnkgdW5zZXR0aW5nIERFQlVHIFxcXG4gICAgICAgICAgICAgIG9yIGJ5IHNldHRpbmcgT01EX0RFQlVHIHRvIHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG4gIHwgTm9uZSwgTm9uZSAtPlxuICAgICBmYWxzZVxuICB8IF8sIFNvbWUgXyAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIE9NRF9ERUJVRyBpcyBzZXRcbiAgICAgICAgICAgICAgdG8gYSB2YWx1ZSB0aGF0IGlzbid0IHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IHdhcm4gPyh3ZT1mYWxzZSkgbXNnID1cbiAgaWYgd2UgdGhlblxuICAgIHJhaXNlIChFcnJvciBtc2cpXG4gIGVsc2VcbiAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogJXNcXG4lIVwiIG1zZ1xuXG5cbmxldCB0cmFja2ZpeCA9XG4gIHRyeVxuICAgIGlnbm9yZShTeXMuZ2V0ZW52IFwiT01EX0ZJWFwiKTtcbiAgICBlcHJpbnRmIFwib21kOiB0cmFja2luZyBtb2RlIGFjdGl2YXRlZDogdG9rZW4gbGlzdCBhcmUgdmVyeSBvZnRlbiBjaGVja2VkLCBcXFxuICAgICAgICAgICAgIGl0IG1pZ2h0IHRha2UgYSAqdmVyeSogbG9uZyB0aW1lIGlmIHlvdXIgaW5wdXQgaXMgbGFyZ2UuXFxuJSFcIjtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgZmFsc2VcblxubGV0IF8gPSBpZiBkZWJ1ZyB0aGVuIFByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2UgdHJ1ZVxuXG5sZXQgcmFpc2UgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgKGZ1biBlIC0+XG4gICAgICAgZXByaW50ZiBcIihPTUQpIEV4Y2VwdGlvbiByYWlzZWQ6ICVzXFxuJSFcIiAoUHJpbnRleGMudG9fc3RyaW5nIGUpO1xuICAgICAgIHJhaXNlIGUpXG4gIGVsc2VcbiAgICByYWlzZVxuXG5tb2R1bGUgU3RyaW5nU2V0IDogc2lnXG4gIGluY2x1ZGUgU2V0LlMgd2l0aCB0eXBlIGVsdCA9IHN0cmluZ1xuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFNldC5NYWtlKFN0cmluZylcbiAgbGV0IG9mX2xpc3QgbCA9IExpc3QuZm9sZF9sZWZ0IChmdW4gciBlIC0+IGFkZCBlIHIpIGVtcHR5IGxcbmVuZFxuXG5cbnR5cGUgJ2Egc3BsaXQgPSAnYSBsaXN0IC0+ICdhIHNwbGl0X2FjdGlvblxuYW5kICdhIHNwbGl0X2FjdGlvbiA9XG4gIHwgQ29udGludWVcbiAgfCBDb250aW51ZV93aXRoIG9mICdhIGxpc3QgKiAnYSBsaXN0XG4gIHwgU3BsaXQgb2YgJ2EgbGlzdCAqICdhIGxpc3RcblxuXG5sZXQgZnNwbGl0X3JldiA/KGV4Y2w9KGZ1biBfIC0+IGZhbHNlKSkgfihmOidhIHNwbGl0KSBsXG4gICAgOiAoJ2EgbGlzdCAqICdhIGxpc3QpIG9wdGlvbiA9XG4gIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZiBbXSB3aXRoXG4gICAgICAgICAgfCBTcGxpdChsZWZ0LCByaWdodCkgLT4gICAgICBTb21lKGxlZnRAYWNjdSwgcmlnaHQpXG4gICAgICAgICAgfCBDb250aW51ZV93aXRoKGxlZnQsIHRsKSAtPiBsb29wIChsZWZ0QGFjY3UpIHRsXG4gICAgICAgICAgfCBDb250aW51ZSAtPiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBleGNsIGwgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBtYXRjaCBmIGwgd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgaW4gbG9vcCBbXSBsXG5cbmxldCBmc3BsaXQgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH5mIGwgPVxuICBtYXRjaCBmc3BsaXRfcmV2IH5leGNsOmV4Y2wgfmY6ZiBsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShyZXYsIGwpIC0+IFNvbWUoTGlzdC5yZXYgcmV2LCBsKVxuXG5sZXQgaWRfb2Zfc3RyaW5nIGlkcyBzID1cbiAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG91dCA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICAoKiBQdXQgW3NdIGludG8gW2JdLCByZXBsYWNpbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggZGFzaGVzLiAqKVxuICBsZXQgcmVjIGxvb3Agc3RhcnRlZCBpID1cbiAgICBpZiBpID0gbiB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0IGMgO1xuICAgICAgICBsb29wIHRydWUgKGkgKyAxKVxuICAgICAgKCogRG9uJ3Qgd2FudCB0byBzdGFydCB3aXRoIGRhc2hlcy4gKilcbiAgICAgIHwgXyB3aGVuIG5vdCBzdGFydGVkIC0+XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvdXQgJy0nIDtcbiAgICAgICAgbG9vcCBmYWxzZSAoaSArIDEpXG4gIGluXG4gIGxvb3AgZmFsc2UgMCA7XG4gIGxldCBzJyA9IEJ1ZmZlci5jb250ZW50cyBvdXQgaW5cbiAgaWYgcycgPSBcIlwiIHRoZW4gXCJcIlxuICBlbHNlXG4gICAgKCogRmluZCBvdXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGNoYXJhY3RlciBpbiBbcyddIHRoYXQgaXNuJ3QgYSBkYXNoLiAqKVxuICAgIGxldCBsYXN0X3RyYWlsaW5nID0gXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPCAwIHx8IHMnLltpXSA8PiAnLScgdGhlbiBpXG4gICAgICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgICBpblxuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzJyAtIDEpXG4gICAgaW5cbiAgICAoKiBUcmltIHRyYWlsaW5nIGRhc2hlcy4gKilcbiAgICBpZHMjbWFuZ2xlIEBAIFN0cmluZy5zdWIgcycgMCAobGFzdF90cmFpbGluZyArIDEpXG5cbigqIG9ubHkgY29udmVydCB3aGVuIFwibmVjZXNzYXJ5XCIgKilcbmxldCBodG1sZW50aXRpZXMgPyhtZD1mYWxzZSkgcyA9XG4gIGxldCBtb2R1bGUgQnJlYWsgPSBzdHJ1Y3QgZXhjZXB0aW9uIEJyZWFrIGVuZCBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgKClcbiAgICBlbHNlXG4gICAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICggJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onICkgYXMgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgJ1wiJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJnF1b3Q7XCJcbiAgICAgICAgfCAnXFwnJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiMzOTtcIlxuICAgICAgICB8ICcmJyAtPlxuICAgICAgICAgICAgaWYgbWQgdGhlblxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbWF0Y2ggcy5baSsxXSB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcjJyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gZmYgKHN1Y2MgailcbiAgICAgICAgICAgICAgICAgICAgICB8ICc7JyAtPiAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBmZiAoaSsyKVxuICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImXCJcbiAgICAgICAgICAgICAgICB3aXRoIF8gLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgIHwgJzwnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImbHQ7XCJcbiAgICAgICAgfCAnPicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZndDtcIlxuICAgICAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgaW4gbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDA7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IG1pbmltYWxpemVfYmxhbmtzIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgbCBpblxuICBsZXQgcmVjIGxvb3AgZiBpID1cbiAgICBpZiBpID0gbCB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyAtPlxuICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIGYgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICBpbiBsb29wIGZhbHNlIDBcblxubGV0IHJlYyBlYXQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBlOjp0bCBhcyBsIC0+IGlmIGYgZSB0aGVuIGVhdCBmIHRsIGVsc2UgbFxuXG5cbmxldCByZWMgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZW1vdmVfcHJlZml4X3NwYWNlcyBzID0gXG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuWzBdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICcgJyAtPiBsb29wIChpKzEpXG4gICAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyBpIChTdHJpbmcubGVuZ3RoIHMgLSBpKVxuICAgICAgaW4gbG9vcCAxXG4gIGluXG4gIGxldCByZW1vdmVfc3VmZml4X3NwYWNlcyBzID1cbiAgICBpZiBzID0gXCJcIiB0aGVuXG4gICAgICBzIFxuICAgIGVsc2UgaWYgcy5bU3RyaW5nLmxlbmd0aCBzIC0gMV0gPD4gJyAnIHRoZW5cbiAgICAgIHNcbiAgICBlbHNlXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgLT4gbG9vcCAoaS0xKVxuICAgICAgICB8IF8gLT4gU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzIHJlcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgIHJlc1xuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeVxuICAgICAgICAgIFNvbWUgKHRha2VfYXR0cmlidXRlIHMgaSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBTb21lICgoKF8sXykgYXMgYSksIG5ld19zKSAtPlxuICAgICAgICBsb29wIG5ld19zIChhOjpyZXMpIDBcbiAgICAgIHwgTm9uZSAtPiByZXNcbiAgYW5kIHRha2VfYXR0cmlidXRlIHMgaSA9XG4gICAgICBsZXQgbmFtZSwgYWZ0ZXJfZXEgPSBjdXRfb25fY2hhcl9mcm9tIHMgaSAnPScgaW5cbiAgICAgIGxldCBuYW1lID0gcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgbmFtZSBpblxuICAgICAgbGV0IGFmdGVyX2VxID0gcmVtb3ZlX3ByZWZpeF9zcGFjZXMgYWZ0ZXJfZXEgaW5cbiAgICAgIGxldCB2YWx1ZSwgcmVzdCA9IGN1dF9vbl9jaGFyX2Zyb20gYWZ0ZXJfZXEgMSBhZnRlcl9lcS5bMF0gaW5cbiAgICAgIChuYW1lLHZhbHVlKSwgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcmVzdFxuICBpblxuICBpZiAoKiBIYXMgaXQgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZT8gKilcbiAgICB0cnkgU3RyaW5nLmluZGV4IGh0bWwgJz4nIDwgU3RyaW5nLmluZGV4IGh0bWwgJyAnXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZVxuICB0aGVuXG4gICAgW11cbiAgZWxzZVxuICBtYXRjaCBodG1sLlsxXSB3aXRoXG4gIHwgJzwnIHwgJyAnIC0+XG4gICAgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXNcbiAgICAgIChyZW1vdmVfcHJlZml4X3NwYWNlcyAoU3RyaW5nLnN1YiBodG1sIDEgKFN0cmluZy5sZW5ndGggaHRtbCAtIDEpKSlcbiAgfCBfIC0+XG4gICAgdHJ5XG4gICAgICBsZXQgaHRtbCA9IHNuZCAoY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJyAnKSBpblxuICAgICAgbG9vcCAoU3RyaW5nLnN1YiBodG1sIDAgKFN0cmluZy5pbmRleCBodG1sICc+JykpIFtdIDBcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuXG5sZXQgcmVjIGV4dHJhY3RfaW5uZXJfaHRtbCAoaHRtbDpzdHJpbmcpID1cbiAgbGV0IHJlYyBjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgaSAoai1pKSwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IHJlYyByY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLnJpbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyAwIGosIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCBfLCBwID0gY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJz4nIGluXG4gIGxldCByLCBfID0gcmN1dF9vbl9jaGFyX2Zyb20gcCAoU3RyaW5nLmxlbmd0aCBwIC0gMSkgJzwnIGluXG4gIHJcblxuXG5sZXQgaHRtbF92b2lkX2VsZW1lbnRzID0gU3RyaW5nU2V0Lm9mX2xpc3QgW1xuICBcImltZ1wiO1xuICBcImlucHV0XCI7XG4gIFwibGlua1wiO1xuICBcIm1ldGFcIjtcbiAgXCJiclwiO1xuICBcImhyXCI7XG4gIFwic291cmNlXCI7XG4gIFwid2JyXCI7XG4gIFwicGFyYW1cIjtcbiAgXCJlbWJlZFwiO1xuICBcImJhc2VcIjtcbiAgXCJhcmVhXCI7XG4gIFwiY29sXCI7XG4gIFwidHJhY2tcIjtcbiAgXCJrZXlnZW5cIjtcbl1cblxubGV0ICggQCApIGwxIGwyID1cbiAgTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBsMSkgbDJcbiIsIm9wZW4gT21kX3V0aWxzXG5vcGVuIFByaW50ZlxuXG4oKiogcmVmZXJlbmNlcywgaW5zdGFuY2VzIGNyZWF0ZWQgaW4gW09tZF9wYXJzZXIubWFpbl9wYXJzZV0gYW5kXG4gICAgYWNjZXNzZWQgaW4gdGhlIFtPbWRfYmFja2VuZF0gbW9kdWxlLiAqKVxubW9kdWxlIFIgPSBNYXAuTWFrZShTdHJpbmcpXG5jbGFzcyByZWZfY29udGFpbmVyIDogb2JqZWN0XG4gICAgdmFsIG11dGFibGUgYyA6IChzdHJpbmcgKiBzdHJpbmcpIFIudFxuICAgIG1ldGhvZCBhZGRfcmVmIDogUi5rZXkgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0XG4gICAgbWV0aG9kIGdldF9yZWYgOiBSLmtleSAtPiAoc3RyaW5nICogc3RyaW5nKSBvcHRpb25cbiAgICBtZXRob2QgZ2V0X2FsbCA6IChzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdFxuICBlbmQgPSBvYmplY3RcbiAgdmFsIG11dGFibGUgYyA9IFIuZW1wdHlcbiAgdmFsIG11dGFibGUgYzIgPSBSLmVtcHR5XG5cbiAgbWV0aG9kIGdldF9hbGwgPSBSLmJpbmRpbmdzIGNcblxuICBtZXRob2QgYWRkX3JlZiBuYW1lIHRpdGxlIHVybCA9XG4gICAgYyA8LSBSLmFkZCBuYW1lICh1cmwsIHRpdGxlKSBjO1xuICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgIGlmIGxuIDw+IG5hbWUgdGhlbiBjMiA8LSBSLmFkZCBsbiAodXJsLCB0aXRsZSkgYzJcblxuICBtZXRob2QgZ2V0X3JlZiBuYW1lID1cbiAgICB0cnlcbiAgICAgIGxldCAodXJsLCB0aXRsZSkgYXMgciA9XG4gICAgICAgIHRyeSBSLmZpbmQgbmFtZSBjXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgbGV0IGxuID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBuYW1lIGluXG4gICAgICAgICAgdHJ5IFIuZmluZCBsbiBjXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFIuZmluZCBsbiBjMlxuICAgICAgaW4gU29tZSByXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIE5vbmVcbmVuZFxuXG50eXBlIGVsZW1lbnQgPVxuICB8IEgxIG9mIHRcbiAgfCBIMiBvZiB0XG4gIHwgSDMgb2YgdFxuICB8IEg0IG9mIHRcbiAgfCBINSBvZiB0XG4gIHwgSDYgb2YgdFxuICB8IFBhcmFncmFwaCBvZiB0XG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbXBoIG9mIHRcbiAgfCBCb2xkIG9mIHRcbiAgfCBVbCBvZiB0IGxpc3RcbiAgfCBPbCBvZiB0IGxpc3RcbiAgfCBVbHAgb2YgdCBsaXN0XG4gIHwgT2xwIG9mIHQgbGlzdFxuICB8IENvZGUgb2YgbmFtZSAqIHN0cmluZ1xuICB8IENvZGVfYmxvY2sgb2YgbmFtZSAqIHN0cmluZ1xuICB8IEJyXG4gIHwgSHJcbiAgfCBOTFxuICB8IFVybCBvZiBocmVmICogdCAqIHRpdGxlXG4gIHwgUmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogc3RyaW5nICogZmFsbGJhY2tcbiAgfCBJbWdfcmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogYWx0ICogZmFsbGJhY2tcbiAgfCBIdG1sIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2Jsb2NrIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2NvbW1lbnQgb2Ygc3RyaW5nXG4gIHwgUmF3IG9mIHN0cmluZ1xuICB8IFJhd19ibG9jayBvZiBzdHJpbmdcbiAgfCBCbG9ja3F1b3RlIG9mIHRcbiAgfCBJbWcgb2YgYWx0ICogc3JjICogdGl0bGVcbiAgfCBYIG9mXG4gICAgICA8IG5hbWUgOiBzdHJpbmc7XG4gICAgICAgIHRvX2h0bWwgOiA/aW5kZW50OmludCAtPiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fc2V4cHIgOiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fdCA6IHQgLT4gdCBvcHRpb24gPlxuYW5kIGZhbGxiYWNrID0gPCB0b19zdHJpbmcgOiBzdHJpbmcgOyB0b190IDogdCA+XG5hbmQgbmFtZSA9IHN0cmluZ1xuYW5kIGFsdCA9IHN0cmluZ1xuYW5kIHNyYyA9IHN0cmluZ1xuYW5kIGhyZWYgPSBzdHJpbmdcbmFuZCB0aXRsZSA9IHN0cmluZ1xuYW5kIHQgPSBlbGVtZW50IGxpc3RcblxuXG5sZXQgcmVjIGxvb3NlX2NvbXBhcmUgdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gIHwgSDEgZTE6OnRsMSwgSDEgZTI6OnRsMlxuICB8IEgyIGUxOjp0bDEsIEgyIGUyOjp0bDJcbiAgfCBIMyBlMTo6dGwxLCBIMyBlMjo6dGwyXG4gIHwgSDQgZTE6OnRsMSwgSDQgZTI6OnRsMlxuICB8IEg1IGUxOjp0bDEsIEg1IGUyOjp0bDJcbiAgfCBINiBlMTo6dGwxLCBINiBlMjo6dGwyXG4gIHwgRW1waCBlMTo6dGwxLCBFbXBoIGUyOjp0bDJcbiAgfCBCb2xkIGUxOjp0bDEsIEJvbGQgZTI6OnRsMlxuICB8IEJsb2NrcXVvdGUgZTE6OnRsMSwgQmxvY2txdW90ZSBlMjo6dGwyXG4gIHwgUGFyYWdyYXBoIGUxOjp0bDEsIFBhcmFncmFwaCBlMjo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBVbCBlMTo6dGwxLCBVbCBlMjo6dGwyXG4gIHwgT2wgZTE6OnRsMSwgT2wgZTI6OnRsMlxuICB8IFVscCBlMTo6dGwxLCBVbHAgZTI6OnRsMlxuICB8IE9scCBlMTo6dGwxLCBPbHAgZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlX2xpc3RzIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgKENvZGUgXyBhcyBlMSk6OnRsMSwgKENvZGUgXyBhcyBlMik6OnRsMlxuICB8IChCciBhcyBlMSk6OnRsMSwgKEJyIGFzIGUyKTo6dGwyXG4gIHwgKEhyIGFzIGUxKTo6dGwxLCAoSHIgYXMgZTIpOjp0bDJcbiAgfCAoTkwgYXMgZTEpOjp0bDEsIChOTCBhcyBlMik6OnRsMlxuICB8IChIdG1sIF8gYXMgZTEpOjp0bDEsIChIdG1sIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9ibG9jayBfIGFzIGUxKTo6dGwxLCAoSHRtbF9ibG9jayBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhdyBfIGFzIGUxKTo6dGwxLCAoUmF3IF8gYXMgZTIpOjp0bDJcbiAgfCAoUmF3X2Jsb2NrIF8gYXMgZTEpOjp0bDEsIChSYXdfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChIdG1sX2NvbW1lbnQgXyBhcyBlMSk6OnRsMSwgKEh0bWxfY29tbWVudCBfIGFzIGUyKTo6dGwyXG4gIHwgKEltZyBfIGFzIGUxKTo6dGwxLCAoSW1nIF8gYXMgZTIpOjp0bDJcbiAgfCAoVGV4dCBfIGFzIGUxKTo6dGwxLCAoVGV4dCBfIGFzIGUyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBDb2RlX2Jsb2NrKGwxLGMxKTo6dGwxLCBDb2RlX2Jsb2NrKGwyLGMyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgbDEgbDIsIFN0cmluZy5sZW5ndGggYzEgLSBTdHJpbmcubGVuZ3RoIGMyIHdpdGhcbiAgICAgICAgIHwgMCwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIGMyIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAxIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgYzEgKGMyXlwiXFxuXCIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IDAsIC0xIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgKGMxXlwiXFxuXCIpIGMyIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGksIF8gLT4gaVxuICAgICAgKVxuXG4gIHwgVXJsIChocmVmMSwgdDEsIHRpdGxlMSk6OnRsMSwgVXJsIChocmVmMiwgdDIsIHRpdGxlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGhyZWYxIGhyZWYyIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggbG9vc2VfY29tcGFyZSB0MSB0MiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlIHRpdGxlMSB0aXRsZTIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBSZWYgKHJlZl9jb250YWluZXIxLCBuYW1lMSwgeDEsIGZhbGxiYWNrMSk6OnRsMSxcbiAgICAgICAgUmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgfCBJbWdfcmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIEltZ19yZWYgKHJlZl9jb250YWluZXIyLCBuYW1lMiwgeDIsIGZhbGxiYWNrMik6OnRsMlxuICAgICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKG5hbWUxLCB4MSkgKG5hbWUyLCB4Mikgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgbGV0IGNmZiA9XG4gICAgICAgICAgICAgICBpZiBmYWxsYmFjazEjdG9fc3RyaW5nID0gZmFsbGJhY2syI3RvX3N0cmluZyB0aGVuXG4gICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9vc2VfY29tcGFyZSAoZmFsbGJhY2sxI3RvX3QpIChmYWxsYmFjazIjdG9fdClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgaWYgY2ZmID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgY29tcGFyZSAocmVmX2NvbnRhaW5lcjEjZ2V0X2FsbCkgKHJlZl9jb250YWluZXIyI2dldF9hbGwpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgY2ZmXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFggZTE6OnRsMSwgWCBlMjo6dGwyIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSAoZTEjbmFtZSkgKGUyI25hbWUpIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSAoZTEjdG9fdCkgKGUyI3RvX3QpIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGkgLT4gaSlcbiAgfCBYIF86Ol8sIF8gLT4gMVxuICB8IF8sIFggXzo6XyAtPiAtMVxuICB8IF8gLT4gY29tcGFyZSB0MSB0MlxuXG5hbmQgbG9vc2VfY29tcGFyZV9saXN0cyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gMFxuICAgIHwgZTE6OnRsMSwgZTI6OnRsMiAtPlxuICAgICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlX2xpc3RzIHRsMSB0bDJcbiAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCBfIC0+IC0xXG5cblxudHlwZSB0b2sgPSAoKiBDcyhuKSBtZWFucyAobisyKSB0aW1lcyBDICopXG58IEFtcGVyc2FuZFxufCBBbXBlcnNhbmRzIG9mIGludFxufCBBdFxufCBBdHMgb2YgaW50XG58IEJhY2txdW90ZVxufCBCYWNrcXVvdGVzIG9mIGludFxufCBCYWNrc2xhc2hcbnwgQmFja3NsYXNocyBvZiBpbnRcbnwgQmFyXG58IEJhcnMgb2YgaW50XG58IENhcmV0XG58IENhcmV0cyBvZiBpbnRcbnwgQ2JyYWNlXG58IENicmFjZXMgb2YgaW50XG58IENvbG9uXG58IENvbG9ucyBvZiBpbnRcbnwgQ29tbWFcbnwgQ29tbWFzIG9mIGludFxufCBDcGFyZW50aGVzaXNcbnwgQ3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgQ2JyYWNrZXRcbnwgQ2JyYWNrZXRzIG9mIGludFxufCBEb2xsYXJcbnwgRG9sbGFycyBvZiBpbnRcbnwgRG90XG58IERvdHMgb2YgaW50XG58IERvdWJsZXF1b3RlXG58IERvdWJsZXF1b3RlcyBvZiBpbnRcbnwgRXhjbGFtYXRpb25cbnwgRXhjbGFtYXRpb25zIG9mIGludFxufCBFcXVhbFxufCBFcXVhbHMgb2YgaW50XG58IEdyZWF0ZXJ0aGFuXG58IEdyZWF0ZXJ0aGFucyBvZiBpbnRcbnwgSGFzaFxufCBIYXNocyBvZiBpbnRcbnwgTGVzc3RoYW5cbnwgTGVzc3RoYW5zIG9mIGludFxufCBNaW51c1xufCBNaW51c3Mgb2YgaW50XG58IE5ld2xpbmVcbnwgTmV3bGluZXMgb2YgaW50XG58IE51bWJlciBvZiBzdHJpbmdcbnwgT2JyYWNlXG58IE9icmFjZXMgb2YgaW50XG58IE9wYXJlbnRoZXNpc1xufCBPcGFyZW50aGVzaXNzIG9mIGludFxufCBPYnJhY2tldFxufCBPYnJhY2tldHMgb2YgaW50XG58IFBlcmNlbnRcbnwgUGVyY2VudHMgb2YgaW50XG58IFBsdXNcbnwgUGx1c3Mgb2YgaW50XG58IFF1ZXN0aW9uXG58IFF1ZXN0aW9ucyBvZiBpbnRcbnwgUXVvdGVcbnwgUXVvdGVzIG9mIGludFxufCBTZW1pY29sb25cbnwgU2VtaWNvbG9ucyBvZiBpbnRcbnwgU2xhc2hcbnwgU2xhc2hzIG9mIGludFxufCBTcGFjZVxufCBTcGFjZXMgb2YgaW50XG58IFN0YXJcbnwgU3RhcnMgb2YgaW50XG58IFRhYlxufCBUYWJzIG9mIGludFxufCBUaWxkZVxufCBUaWxkZXMgb2YgaW50XG58IFVuZGVyc2NvcmVcbnwgVW5kZXJzY29yZXMgb2YgaW50XG58IFdvcmQgb2Ygc3RyaW5nXG58IFRhZyBvZiBuYW1lICogZXh0ZW5zaW9uXG5cbmFuZCBleHRlbnNpb24gPSA8XG4gIHBhcnNlcl9leHRlbnNpb24gOlxuICAgIHQgLT4gdG9rIGxpc3QgLT4gdG9rIGxpc3QgLT4gKCh0ICogdG9rIGxpc3QgKiB0b2sgbGlzdCkgb3B0aW9uKTtcbiAgdG9fc3RyaW5nIDogc3RyaW5nXG4+XG5cbnR5cGUgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbiBsaXN0XG5cbmxldCBlbXB0eV9leHRlbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPSBOb25lXG4gIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG5lbmRcblxubGV0IHJlYyBub3JtYWxpc2VfbWQgbCA9XG4gIGlmIGRlYnVnIHRoZW5cbiAgICBlcHJpbnRmIFwiKE9NRCkgbm9ybWFsaXNlX21kXFxuJSFcIjtcbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MXVxuICAgIHwgW05MXSAtPiBbXVxuICAgIHwgW10gLT4gW11cbiAgICB8IE5MOjpOTDo6Tkw6OnRsIC0+IGxvb3AgKE5MOjpOTDo6dGwpXG4gICAgfCBUZXh0IHQxOjpUZXh0IHQyOjp0bCAtPiBsb29wIChUZXh0KHQxXnQyKTo6dGwpXG4gICAgfCBOTDo6KCgoUGFyYWdyYXBoIF98SDEgX3xIMiBffEgzIF98SDQgX3xINSBffEg2IF9cbiAgICAgICAgICAgIHxDb2RlX2Jsb2NrIF98T2wgX3xVbCBffE9scCBffFVscCBfKTo6XykgYXMgdGwpIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtUZXh0IFwiIFwiXTo6dGwgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoW106OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaChwKTo6dGwgLT4gUGFyYWdyYXBoKGxvb3AgcCk6Omxvb3AgdGxcbiAgICB8IEgxIHY6OnRsIC0+IEgxKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgyIHY6OnRsIC0+IEgyKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgzIHY6OnRsIC0+IEgzKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg0IHY6OnRsIC0+IEg0KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg1IHY6OnRsIC0+IEg1KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg2IHY6OnRsIC0+IEg2KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEVtcGggdjo6dGwgLT4gRW1waChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCb2xkIHY6OnRsIC0+IEJvbGQobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWwgdjo6dGwgLT4gVWwoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2wgdjo6dGwgLT4gT2woTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWxwIHY6OnRsIC0+IFVscChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBPbHAgdjo6dGwgLT4gT2xwKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgdjo6dGwgLT4gQmxvY2txdW90ZShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVcmwoaHJlZix2LHRpdGxlKTo6dGwgLT4gVXJsKGhyZWYsKGxvb3AgdiksdGl0bGUpOjpsb29wIHRsXG4gICAgfCBUZXh0IF9cbiAgICB8IENvZGUgX1xuICAgIHwgQ29kZV9ibG9jayBfXG4gICAgfCBCclxuICAgIHwgSHJcbiAgICB8IE5MXG4gICAgfCBSZWYgX1xuICAgIHwgSW1nX3JlZiBfXG4gICAgfCBIdG1sIF9cbiAgICB8IEh0bWxfYmxvY2sgX1xuICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICB8IFJhdyBfXG4gICAgfCBSYXdfYmxvY2sgX1xuICAgIHwgSW1nIF9cbiAgICB8IFggXyBhcyB2Ojp0bCAtPiB2Ojpsb29wIHRsXG4gIGluXG4gIGxldCBhID0gbG9vcCBsIGluXG4gIGxldCBiID0gbG9vcCBhIGluXG4gIGlmIGEgPSBiIHRoZW5cbiAgICBhXG4gIGVsc2VcbiAgICBub3JtYWxpc2VfbWQgYlxuXG5cblxubGV0IGR1bW15X1ggPVxuICBYIChvYmplY3RcbiAgICBtZXRob2QgbmFtZSA9IFwiZHVtbXlcIlxuICAgIG1ldGhvZCB0b19odG1sID8oaW5kZW50PTApIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fc2V4cHIgXyBfID0gTm9uZVxuICAgIG1ldGhvZCB0b190IF8gPSBOb25lXG4gIGVuZClcblxuXG5sZXQgcmVjIHZpc2l0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgUGFyYWdyYXBoIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFBhcmFncmFwaCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDEgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgxKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMiB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDIodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgzIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgzKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDQodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg1IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDYgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg2KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBFbXBoIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBFbXBoKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCb2xkIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCb2xkKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWxwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE9scCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbHAoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQmxvY2txdW90ZSB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCbG9ja3F1b3RlKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVcmwoaHJlZix2LHRpdGxlKSBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVXJsKGhyZWYsdmlzaXQgZiB2LHRpdGxlKTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFRleHQgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGUgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGVfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nX3JlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9jb21tZW50IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXcgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJhd19ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nICBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgWCAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEhyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE5MIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBOTDo6dmlzaXQgZiB0bFxuICAgIGVuZFxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjb2RlX3N0eWxpc3QgPSBsYW5nOnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcblxubGV0IGRlZmF1bHRfbGFuZ3VhZ2UgPSByZWYgXCJcIlxuXG5cblxubGV0IHRleHRfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIF8gOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgbmFtZSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgKFVsIGwgfCBPbCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBpdGVtIC0+IGxvb3AgaXRlbTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbicpIGw7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbHAgbCB8IE9scCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgbG9vcCBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBsb29wIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsXG4gICAgfCBIMiBtZCA6OiB0bFxuICAgIHwgSDMgbWQgOjogdGxcbiAgICB8IEg0IG1kIDo6IHRsXG4gICAgfCBINSBtZCA6OiB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGRlZmF1bHRfY29kZV9zdHlsaXN0IH5sYW5nIGNvZGUgPSBjb2RlXG5cbmxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGlmIGIgdGhlbiByIGVsc2UgbFxuICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICBsb29wIHRydWUgciB0bFxuICAgIHwgZTo6dGwgLT5cbiAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgaW5cbiAgbG9vcCBmYWxzZSBbXSBsXG5cbmxldCByZW1vdmVfbGlua3MgOiB0IC0+IHQgPVxuICBPbWRfcmVwcmVzZW50YXRpb24udmlzaXRcbiAgICAoZnVuIGUgLT5cbiAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IFVybChfLCB0LCBfKSAtPiBTb21lIHRcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKVxuXG5sZXQgcmVjIGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWRcbiAgICA/KHJlbW92ZV9oZWFkZXJfbGlua3M9ZmFsc2UpXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3M6KGNvZGVfc3R5bGU9ZGVmYXVsdF9jb2RlX3N0eWxpc3QpXG4gICAgbWRcbiAgPVxuICBsZXQgaWRzID0gb2JqZWN0KHRoaXMpXG4gICAgdmFsIG11dGFibGUgaWRzID0gU3RyaW5nU2V0LmFkZCBcIlwiIFN0cmluZ1NldC5lbXB0eVxuICAgIG1ldGhvZCBtYW5nbGUgaWQgPVxuICAgICAgbGV0IHJlYyBtIGkgPVxuICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkIGlkcyB0aGVuXG4gICAgICAgICAgbGV0IGlkeCA9IGlmIGkgPiAwIHRoZW4gaWReXCJfXCJec3RyaW5nX29mX2ludCBpIGVsc2UgaWQgaW5cbiAgICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkeCBpZHMgdGhlblxuICAgICAgICAgICAgbSAoaSsxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZHggaWRzO1xuICAgICAgICAgICAgIGlkeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZCBpZHM7XG4gICAgICAgICAgIGlkKVxuICAgICAgaW4gbSAwXG4gIGVuZCBpblxuICBsZXQgZW1wdHkgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFxuJyAtPiBsb29wIChpKzEpXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICB0cnVlXG4gICAgaW5cbiAgICBsb29wIDBcbiAgaW5cbiAgbGV0IHJlbW92ZV90cmFpbGluZ19ibGFua3MgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IDAgdGhlbiBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICd8J1xcdCd8J1xcbicgLT5cbiAgICAgICAgICBsb29wIChwcmVkIGkpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIHRoZW5cbiAgICAgICAgICAgIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTdHJpbmcuc3ViIHMgMCAoaSsxKVxuICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgaGVhZGVycyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIGxvb3AgaW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IFggeCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+IGxvb3AgaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6aW5kZW50XG4gICAgICAgICAgICAgICAoaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlKSBtZFxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJsb2NrcXVvdGUgcSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxibG9ja3F1b3RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHE7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmMjZ2V0X3JlZiBuYW1lIHdpdGhcbiAgICAgICAgICAgIHwgU29tZShocmVmLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoVXJsKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmLFxuICAgICAgICAgICAgICAgICAgICAgW1RleHQodGV4dCldLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKVxuICAgICAgICAgICAgICAgICA6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoc3JjLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoSW1nKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQsXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTo6dGwpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgKGZhbGxiYWNrI3RvX3QpO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBpbmRlbnQgdGxcbiAgICB8IFBhcmFncmFwaCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKGxldCBzID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgIGlmIGVtcHR5IHMgdGhlblxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwPlwiO1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAocmVtb3ZlX3RyYWlsaW5nX2JsYW5rcyBzKTtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3A+XFxuXCI7XG4gICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxpbWcgc3JjPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBhbHQ9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgXCIpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFRleHQgdCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogQnVmZmVyLmFkZF9zdHJpbmcgYiB0OyAqKVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBFbXBoIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGVtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2VtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJvbGQgbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8c3Ryb25nPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3N0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoVWwgbHxPbCBsfFVscCBsfE9scCBsIGFzIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjxvbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8dWw+XCIpO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGxpPlwiO1xuICAgICAgICAgICAgICAgIGxvb3AgKGluZGVudCsyKSBsaTtcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9saT5cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgbDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgICAgfCBPbCBffE9scCBfIC0+IFwiPC9vbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8L3VsPlwiKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsYW5nID0gXCJcIiAmJiAhZGVmYXVsdF9sYW5ndWFnZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwcmU+PGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiXG4gICAgICAgICAgICAgICFkZWZhdWx0X2xhbmd1YWdlICFkZWZhdWx0X2xhbmd1YWdlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPHByZSBjbGFzcz0nJXMnPjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZyBsYW5nO1xuICAgICAgICAgIGxldCBuZXdfYyA9IGNvZGVfc3R5bGUgfmxhbmc6bGFuZyBjIGluXG4gICAgICAgICAgaWYgYyA9IG5ld19jIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIG5ld19jO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2NvZGU+PC9wcmU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZShsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8Y29kZT5cIlxuICAgICAgICAgIGVsc2UgaWYgbGFuZyA9IFwiXCIgdGhlblxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPGNvZGUgY2xhc3M9JyVzJz5cIiAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJyIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoci8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3IHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSYXdfYmxvY2sgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSBhcyBlIDo6IHRsXG4gICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IEh0bWxfY29tbWVudCBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBzIGluXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxhIGhyZWY9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiB0aXRsZT0nXCI7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInXCI7XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDEgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDEgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDEgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDIgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDIgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDIgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDMgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDMgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDMgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDQgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDQgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDQgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oND5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDUgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDUgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDUgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDYgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDYgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDYgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBOTCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbmwyYnIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxiciAvPlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICBpblxuICBsb29wIDAgbWQ7XG4gIEJ1ZmZlci5jb250ZW50cyBiLCBMaXN0LnJldiAhaGVhZGVyc1xuXG5hbmQgc3RyaW5nX29mX2F0dHJzIGF0dHJzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICBlbHNlIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgIHwgYSwgTm9uZSAtPlxuICAgICAgICAoKiBpZiBodG1sNCB0aGVuICopXG4gICAgICAgICgqICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJXMnXCIgYSBhICopXG4gICAgICAgICgqIGVsc2UgKilcbiAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmFuZCBodG1sX29mX21kXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3NcbiAgICBtZFxuICA9XG4gIGZzdCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyID9jcyBtZClcbmFuZCBoZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kID1cbiAgc25kIChodG1sX2FuZF9oZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kKVxuXG5cbmxldCByZWMgc2V4cHJfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT5cbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICBsb29wIHQ7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHgjdG9fc2V4cHIgc2V4cHJfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCbG9ja3F1b3RlXCI7XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmVmICVTICVTKVwiIG5hbWUgdGV4dDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nX3JlZiAlUyAlUylcIiBuYW1lIGFsdDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoUGFyYWdyYXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihJbWcgJVMgJVMgJVMpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihUZXh0ICVTXCIgdDtcbiAgICAgICAgbGV0IHJlYyBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICAgICAgYnByaW50ZiBiIFwiICVTXCIgdDtcbiAgICAgICAgICAgIGYgdGxcbiAgICAgICAgICB8IHggLT4geFxuICAgICAgICBpblxuICAgICAgICBsZXQgdGwgPSBmIHRsIGluXG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEVtcGhcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJvbGRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoT2xcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTticHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2xwIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9scFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTsgYnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGUgJVMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoQ29kZV9ibG9jayAlcylcIiBjO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEhyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSYXdfYmxvY2sgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWwgJXMgJXMgXCIgdGFnbmFtZSAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sX2Jsb2NrICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9jb21tZW50ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVXJsICVTICVTICVTKVwiIGhyZWYgKGh0bWxfb2ZfbWQgcykgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDFcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIMlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgzXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg0IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINVwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg2XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoTkwpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCBtZDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKiAyKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcuJyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPiAwICYmXG4gICAgICAgICAgIG1hdGNoIHMuW2ktMV0gd2l0aFxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICdcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJy0nIGFzIGMgLT5cbiAgICAgICAgaWYgKGkgPSAwIHx8IG1hdGNoIHMuW2ktMV0gd2l0aCAnICd8ICdcXG4nIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICYmIChpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgKHMuW2krMV0gPSAnICd8fHMuW2krMV0gPSAnLScpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICcrJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyEnIGFzIGMgLT5cbiAgICAgICAgaWYgaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnWycgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPCcgYXMgYyAtPlxuICAgICAgICBpZiBpIDw+IFN0cmluZy5sZW5ndGggcyAtIDEgJiZcbiAgICAgICAgICAgICAobWF0Y2ggcy5baSsxXSB3aXRoICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICc+JyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPSAwIHx8XG4gICAgICAgICAgICAgKG1hdGNoIHMuW2ktMV0gd2l0aCAnICcgfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnIycgYXMgYyAtPlxuICAgICAgICAgaWYgaSA9IDAgfHwgcy5baS0xXSA9ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnXFxcXCcgfCAnWycgfCAnXScgfCAnKCcgfCAnKScgfCAnYCcgfCAnKicgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgZG9uZTtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmVjIG1hcmtkb3duX29mX21kIG1kID1cbiAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpXFxuJSFcIiAoc2V4cHJfb2ZfbWQgbWQpO1xuICBsZXQgcXVvdGUgPyhpbmRlbnQ9MCkgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgcmVjIGxvb3AgbmwgaSA9XG4gICAgICBpZiBpIDwgbCB0aGVuXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgbmwgJiYgaSA8IGwgLSAxIHRoZW5cbiAgICAgICAgICAgIChmb3IgaSA9IDEgdG8gaW5kZW50IGRvXG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICdcbiAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+IFwiKTtcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICAgICAgICBsb29wIGZhbHNlIChzdWNjIGkpXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGluIGxvb3AgdHJ1ZSAwXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgYWRkX3NwYWNlcyBuID0gZm9yIGkgPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJyAnIGRvbmUgaW5cbiAgbGV0IHJlZmVyZW5jZXMgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgPyhmc3RfcF9pbl9saT10cnVlKSA/KGlzX2luX2xpc3Q9ZmFsc2UpIGxpc3RfaW5kZW50IGwgPVxuICAgICgqIFtsaXN0X2luZGVudDogaW50XSBpcyB0aGUgaW5kZW50YXRpb24gbGV2ZWwgaW4gbnVtYmVyIG9mIHNwYWNlcy4gKilcbiAgICAoKiBbaXNfaW5fbGlzdDogYm9vbF0gaXMgbmVjZXNzYXJ5IHRvIGtub3cgaWYgd2UgYXJlIGluc2lkZSBhIHBhcmFncmFwaFxuICAgICAgIHdoaWNoIGlzIGluc2lkZSBhIGxpc3QgaXRlbSBiZWNhdXNlIHRob3NlIG5lZWQgdG8gYmUgaW5kZW50ZWQhICopXG4gICAgbGV0IGxvb3AgPyhmc3RfcF9pbl9saT1mc3RfcF9pbl9saSkgPyhpc19pbl9saXN0PWlzX2luX2xpc3QpIGxpc3RfaW5kZW50IGwgPVxuICAgICAgICBsb29wIH5mc3RfcF9pbl9saTpmc3RfcF9pbl9saSB+aXNfaW5fbGlzdDppc19pbl9saXN0IGxpc3RfaW5kZW50IGxcbiAgICBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgWCB4IDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGxpc3RfaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHF1b3RlIH5pbmRlbnQ6bGlzdF9pbmRlbnQgKG1hcmtkb3duX29mX21kIHEpKTtcbiAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBpZiAhcmVmZXJlbmNlcyA9IE5vbmUgdGhlbiByZWZlcmVuY2VzIDo9IFNvbWUgcmM7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgKFJhdyhmYWxsYmFjayN0b19zdHJpbmcpOjp0bClcbiAgICB8IFBhcmFncmFwaCBbXSA6OiB0bCAtPiBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgIGlmIGlzX2luX2xpc3QgdGhlblxuICAgICAgICBpZiBmc3RfcF9pbl9saSB0aGVuXG4gICAgICAgICAgYWRkX3NwYWNlcyAobGlzdF9pbmRlbnQtMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCBtZDtcbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCJcXG5cXG5cIjtcbiAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZhbHNlIGxpc3RfaW5kZW50IHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiFbJXNdKCVzIFxcXCIlc1xcXCIpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKGVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIHQpO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxldCBjID0gcmVmIDAgaW4gKCogZG9uJ3QgdXNlIExpc3QuaXRlcmkgYmVjYXVzZSBpdCdzIG5vdCBpbiAzLjEyICopXG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgYztcbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVkLiBcIiAhYztcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVsIGwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiLSBcIjtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgaW5jciBjO1xuICAgICAgICBicHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAoKiBQYXJhZ3JhcGhzID0+IE5vIG5lZWQgb2YgJ1xcbicgKilcbiAgICAgICkgbDtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJ1xuICAgICAgICB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICBicHJpbnRmIGIgXCIrIFwiO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF8pOjpfXG4gICAgICB8IE5MOjooSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6XyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJ1xuICAgICAgfCBfIC0+ICgpXG4gICAgICBlbmQ7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlKF9sYW5nLCBjKSA6OiB0bCAtPiAoKiBGSVhNRSAqKVxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciAobjppbnQpIChzOmludCBsaXN0KSA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHggYiBpID1cbiAgICAgICAgICBpZiBpID0gbCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBmaWx0ZXIgYiBzIHdpdGhcbiAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgIHwgW10gLT4geCsxXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIHggKHN1Y2MgYikgKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPiBsb29wIChmaWx0ZXIgYiBzKSAobWF4IGIgeCkgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzE7MjszOzQ7NTs2Ozc7ODs5OzEwXSAwIDAgMFxuICAgICAgaW5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGlmIGMuWzBdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIGM7XG4gICAgICAgICAgaWYgYy5bU3RyaW5nLmxlbmd0aCBjIC0gMV0gPSAnYCcgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgZW5kO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICBsZXQgbiA9ICgqIGNvbXB1dGUgaG93IG1hbnkgYmFja3F1b3RlcyB3ZSBuZWVkIHRvIHVzZSAqKVxuICAgICAgICBsZXQgZmlsdGVyIG4gcyA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgICAgfCBbXSAtPiAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzM7NDs1OzY7Nzs4Ozk7MTBdIDAgMFxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgbiBzID1cbiAgICAgICAgbGV0IHJlYyBsb29wIHAgaSA9XG4gICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICcgJyk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICBpbiBsb29wICdcXG4nIDBcbiAgICAgIGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gICgqIEZJWE1FICopXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICgqIGNhc2Ugd2hlcmUgd2UgY2FuJ3QgdXNlIGJhY2txdW90ZXMgKilcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgb3V0cHV0X2luZGVudGVkX2Jsb2NrICg0K2xpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgdGwgPD4gW10gdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCJcbiAgICAgICAgICBlbmRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXMlc1xcblwiIChTdHJpbmcubWFrZSBuICdgJylcbiAgICAgICAgICAgICAgKGlmIGxhbmcgPSBcIlwiIHRoZW4gIWRlZmF1bHRfbGFuZ3VhZ2UgZWxzZSBsYW5nKTtcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAobGlzdF9pbmRlbnQpIGM7XG4gICAgICAgICAgICBpZiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKiAqICpcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJhdyBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgbGV0IGEgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICBlbHNlXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgKEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpKTo6dGwgLT5cbiAgICAgIGxldCBuZWVkc19uZXdsaW5lcyA9XG4gICAgICAgIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgfCBOTCA6OiBQYXJhZ3JhcGggcCA6OiBfXG4gICAgICAgIHwgUGFyYWdyYXBoIHAgOjogXyAtPiBwIDw+IFtdXG4gICAgICAgIHwgKEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgX1xuICAgICAgICAgIHwgVWwgXyB8IE9sIF8gfCBVbHAgXyB8IE9scCBfIHwgQ29kZSAoXywgXykgfCBDb2RlX2Jsb2NrIChfLCBfKVxuICAgICAgICAgIHwgVGV4dCBfIHwgRW1waCBfIHwgQm9sZCBfIHwgQnIgfEhyIHwgVXJsIChfLCBfLCBfKVxuICAgICAgICAgIHwgUmVmIChfLCBfLCBfLCBfKSB8IEltZ19yZWYgKF8sIF8sIF8sIF8pXG4gICAgICAgICAgfCBIdG1sIChfLCBfLCBfKVxuICAgICAgICAgIHwgQmxvY2txdW90ZSBfIHwgSW1nIChfLCBfLCBfKSkgOjogXyAtPiB0cnVlXG4gICAgICAgIHwgKCBIdG1sX2Jsb2NrIChfLCBfLCBfKSB8IEh0bWxfY29tbWVudCBfXG4gICAgICAgICAgfCBSYXcgX3xSYXdfYmxvY2sgXykgOjogXy0+IGZhbHNlXG4gICAgICAgIHwgWCBfIDo6IF8gLT4gZmFsc2VcbiAgICAgICAgfCBOTCA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBib2R5ID0gW10gJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyB0aGVuXG4gICAgICAgIChcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICAgIGVsc2VcbiAgICAgICAgKFxuICAgICAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGlmIGEgPT0gYXR0cnMgdGhlblxuICAgICAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbF9vZl9tZCBib2R5KTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgIGlmIG5lZWRzX25ld2xpbmVzIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiO1xuICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICAgICAgKVxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcylcIiAobWFya2Rvd25fb2ZfbWQgcykgaHJlZlxuICAgICAgZWxzZVxuICAgICAgICBicHJpbnRmIGIgXCJbJXNdKCVzIFxcXCIlc1xcXCIpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWYgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID0gMVxuICAgICAgfHwgKEJ1ZmZlci5sZW5ndGggYiA+IDEgJiZcbiAgICAgICAgICBub3QoQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA9ICdcXG4nXG4gICAgICAgICAgICAgICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMikgPSAnXFxuJykpXG4gICAgICB0aGVuXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgMCBtZDtcbiAgICBiZWdpbiBtYXRjaCAhcmVmZXJlbmNlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSByIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChuYW1lLCAodXJsLCB0aXRsZSkpIC0+XG4gICAgICAgICAgICAgICBpZiB0aXRsZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXG5cIiBuYW1lIHVybFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXFwiJXNcXFwiXFxuXCIgbmFtZSB1cmwgdGl0bGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHIjZ2V0X2FsbFxuICAgIGVuZDtcbiAgICBsZXQgcmVzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpID0+ICVTXFxuJSFcIlxuICAgICAgICAoc2V4cHJfb2ZfbWQgbWQpIHJlcztcbiAgICByZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW1wbGVtZW50YXRpb24gbm90ZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgICogLSBUaGlzIG1vZHVsZSBzaG91bGQgZGVwZW5kIG9uIE9DYW1sJ3Mgc3RhbmRhcmQgbGlicmFyeSBvbmx5IGFuZFxuICAgKiBzaG91bGQgYmUgYXMgJ3B1cmUgT0NhbWwnIChpLmUuIGRlcGVuZCBhcyBsZWFzdCBhcyBwb3NzaWJsZSBvblxuICAgKiBleHRlcm5hbCB0b29scykgYXMgcG9zc2libGUuXG5cbiAgICogLSBgd2hpbGUnIGxvb3BzIGFyZSBzb21ldGltZXMgcHJlZmVycmVkIHRvIHJlY3Vyc2lvbiBiZWNhdXNlIHRoaXNcbiAgICogbWF5IGJlIHVzZWQgb24gc3lzdGVtcyB3aGVyZSB0YWlsIHJlY3Vyc2lvbiBpcyBub3Qgd2VsbFxuICAgKiBzdXBwb3J0ZWQuIChJIHRyaWVkIHRvIHdyaXRlIFwid2hpbGVcIiBhcyBvZnRlbiBhcyBwb3NzaWJsZSwgYnV0IGl0XG4gICAqIHR1cm5lZCBvdXQgdGhhdCBpdCB3YXMgcHJldHR5IGluY29udmVuaWVudCwgc28gSSBkbyB1c2VcbiAgICogcmVjdXJzaW9uLiAgV2hlbiBJIGhhdmUgdGltZSwgSSdsbCBkbyBzb21lIHRlc3RzIGFuZCBzZWUgaWYgSVxuICAgKiBuZWVkIHRvIGNvbnZlcnQgcmVjdXJzaXZlIGxvb3BzIGludG8gaXRlcmF0aXZlIGxvb3BzLiBTb3JyeSBpZiBpdFxuICAgKiBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZC4pXG5cbiopXG5cbigqIGNsYXNzIHR5cGUgdGFnID0gb2JqZWN0IG1ldGhvZCBpc19tZSA6ICdhLiAnYSAtPiBib29sIGVuZCAqKVxuXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxuXG50eXBlIHRva2VuID0gT21kX3JlcHJlc2VudGF0aW9uLnRva1xudHlwZSB0ID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG5cbmxldCBzdHJpbmdfb2ZfdG9rZW4gPSBmdW5jdGlvblxuICB8IFRhZyAobmFtZSwgbykgLT5cbiAgICBpZiBPbWRfdXRpbHMuZGVidWcgdGhlbiBcIlRBRyhcIl5uYW1lXlwiKVwiIF4gbyN0b19zdHJpbmcgZWxzZSBvI3RvX3N0cmluZ1xuICB8IEFtcGVyc2FuZCAtPiBcIiZcIlxuICB8IEFtcGVyc2FuZHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcmJ1xuICB8IEF0IC0+IFwiQFwiXG4gIHwgQXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnQCdcbiAgfCBCYWNrcXVvdGUgLT4gXCJgXCJcbiAgfCBCYWNrcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnYCdcbiAgfCBCYWNrc2xhc2ggLT4gXCJcXFxcXCJcbiAgfCBCYWNrc2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxcXCdcbiAgfCBCYXIgLT4gXCJ8XCJcbiAgfCBCYXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfCdcbiAgfCBDYXJldCAtPiBcIl5cIlxuICB8IENhcmV0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ14nXG4gIHwgQ2JyYWNlIC0+IFwifVwiXG4gIHwgQ2JyYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ30nXG4gIHwgQ29sb24gLT4gXCI6XCJcbiAgfCBDb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc6J1xuICB8IENvbW1hIC0+IFwiLFwiXG4gIHwgQ29tbWFzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLCdcbiAgfCBDcGFyZW50aGVzaXMgLT4gXCIpXCJcbiAgfCBDcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKSdcbiAgfCBDYnJhY2tldCAtPiBcIl1cIlxuICB8IENicmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ10nXG4gIHwgRG9sbGFyIC0+IFwiJFwiXG4gIHwgRG9sbGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyQnXG4gIHwgRG90IC0+IFwiLlwiXG4gIHwgRG90cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy4nXG4gIHwgRG91YmxlcXVvdGUgLT4gXCJcXFwiXCJcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcIidcbiAgfCBFeGNsYW1hdGlvbiAtPiBcIiFcIlxuICB8IEV4Y2xhbWF0aW9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyEnXG4gIHwgRXF1YWwgLT4gXCI9XCJcbiAgfCBFcXVhbHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc9J1xuICB8IEdyZWF0ZXJ0aGFuIC0+IFwiPlwiXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPidcbiAgfCBIYXNoIC0+IFwiI1wiXG4gIHwgSGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcjJ1xuICB8IExlc3N0aGFuIC0+IFwiPFwiXG4gIHwgTGVzc3RoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPCdcbiAgfCBNaW51cyAtPiBcIi1cIlxuICB8IE1pbnVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy0nXG4gIHwgTmV3bGluZSAtPiBcIlxcblwiXG4gIHwgTmV3bGluZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXG4nXG4gIHwgTnVtYmVyIHMgLT4gc1xuICB8IE9icmFjZSAtPiBcIntcIlxuICB8IE9icmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd7J1xuICB8IE9wYXJlbnRoZXNpcyAtPiBcIihcIlxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcoJ1xuICB8IE9icmFja2V0IC0+IFwiW1wiXG4gIHwgT2JyYWNrZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnWydcbiAgfCBQZXJjZW50IC0+IFwiJVwiXG4gIHwgUGVyY2VudHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICclJ1xuICB8IFBsdXMgLT4gXCIrXCJcbiAgfCBQbHVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJysnXG4gIHwgUXVlc3Rpb24gLT4gXCI/XCJcbiAgfCBRdWVzdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc/J1xuICB8IFF1b3RlIC0+IFwiJ1wiXG4gIHwgUXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFwnJ1xuICB8IFNlbWljb2xvbiAtPiBcIjtcIlxuICB8IFNlbWljb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc7J1xuICB8IFNsYXNoIC0+IFwiL1wiXG4gIHwgU2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLydcbiAgfCBTcGFjZSAtPiBcIiBcIlxuICB8IFNwYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyAnXG4gIHwgU3RhciAtPiBcIipcIlxuICB8IFN0YXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKidcbiAgfCBUYWIgLT4gXCIgICAgXCJcbiAgfCBUYWJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoKDIrbikqNCkgJyAnXG4gIHwgVGlsZGUgLT4gXCJ+XCJcbiAgfCBUaWxkZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd+J1xuICB8IFVuZGVyc2NvcmUgLT4gXCJfXCJcbiAgfCBVbmRlcnNjb3JlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ18nXG4gIHwgV29yZCBzIC0+IHNcblxuXG5sZXQgc2l6ZV9hbmRfbmV3bGluZXMgPSBmdW5jdGlvblxuICB8IFRhZyBfIC0+ICgwLCAwKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2VcbiAgfCBDb2xvbiB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3RcbiAgfCBEb3VibGVxdW90ZSB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhblxuICB8IE1pbnVzIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50IHwgUGx1c1xuICB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSAtPiAoMSwgMClcbiAgfCBBbXBlcnNhbmRzIHggfCBBdHMgeCB8IEJhY2txdW90ZXMgeCB8IEJhY2tzbGFzaHMgeCB8IEJhcnMgeCB8IENhcmV0cyB4XG4gIHwgQ2JyYWNlcyB4IHwgQ29sb25zIHggfCBDb21tYXMgeCB8IENwYXJlbnRoZXNpc3MgeCB8IENicmFja2V0cyB4XG4gIHwgRG9sbGFycyB4IHwgRG90cyB4XG4gIHwgRG91YmxlcXVvdGVzIHggfCBFeGNsYW1hdGlvbnMgeCB8IEVxdWFscyB4IHwgR3JlYXRlcnRoYW5zIHggfCBIYXNocyB4XG4gIHwgTGVzc3RoYW5zIHhcbiAgfCBNaW51c3MgeCB8IE9icmFjZXMgeCB8IE9wYXJlbnRoZXNpc3MgeCB8IE9icmFja2V0cyB4IHwgUGVyY2VudHMgeCB8IFBsdXNzIHhcbiAgfCBRdWVzdGlvbnMgeCB8IFF1b3RlcyB4IHwgU2VtaWNvbG9ucyB4IHwgU2xhc2hzIHggfCBTcGFjZXMgeCB8IFN0YXJzIHhcbiAgfCBUYWJzIHhcbiAgfCBUaWxkZXMgeCB8IFVuZGVyc2NvcmVzIHggLT4gKDIreCwgMClcbiAgfCBOZXdsaW5lIC0+ICgwLCAxKVxuICB8IE5ld2xpbmVzIHggLT4gKDAsIDIreClcbiAgfCBOdW1iZXIgcyB8IFdvcmQgcyAtPiAoU3RyaW5nLmxlbmd0aCBzLCAwKVxuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgYywgbmwgPSBzaXplX2FuZF9uZXdsaW5lcyB0IGluXG4gIGMgKyBubFxuXG5sZXQgc3BsaXRfZmlyc3QgPSBmdW5jdGlvblxuICB8IEFtcGVyc2FuZHMgbiAtPiBBbXBlcnNhbmQsIChpZiBuID4gMCB0aGVuIEFtcGVyc2FuZHMobi0xKSBlbHNlIEFtcGVyc2FuZClcbiAgfCBBdHMgbiAtPiBBdCwgKGlmIG4gPiAwIHRoZW4gQXRzKG4tMSkgZWxzZSBBdClcbiAgfCBCYWNrcXVvdGVzIG4gLT4gQmFja3F1b3RlLCAoaWYgbiA+IDAgdGhlbiBCYWNrcXVvdGVzKG4tMSkgZWxzZSBCYWNrcXVvdGUpXG4gIHwgQmFja3NsYXNocyBuIC0+IEJhY2tzbGFzaCwgKGlmIG4gPiAwIHRoZW4gQmFja3NsYXNocyhuLTEpIGVsc2UgQmFja3NsYXNoKVxuICB8IEJhcnMgbiAtPiBCYXIsIChpZiBuID4gMCB0aGVuIEJhcnMobi0xKSBlbHNlIEJhcilcbiAgfCBDYXJldHMgbiAtPiBDYXJldCwgKGlmIG4gPiAwIHRoZW4gQ2FyZXRzKG4tMSkgZWxzZSBDYXJldClcbiAgfCBDYnJhY2VzIG4gLT4gQ2JyYWNlLCAoaWYgbiA+IDAgdGhlbiBDYnJhY2VzKG4tMSkgZWxzZSBDYnJhY2UpXG4gIHwgQ29sb25zIG4gLT4gQ29sb24sIChpZiBuID4gMCB0aGVuIENvbG9ucyhuLTEpIGVsc2UgQ29sb24pXG4gIHwgQ29tbWFzIG4gLT4gQ29tbWEsIChpZiBuID4gMCB0aGVuIENvbW1hcyhuLTEpIGVsc2UgQ29tbWEpXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IENwYXJlbnRoZXNpcywgKGlmIG4gPiAwIHRoZW4gQ3BhcmVudGhlc2lzcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXMpXG4gIHwgQ2JyYWNrZXRzIG4gLT4gQ2JyYWNrZXQsIChpZiBuID4gMCB0aGVuIENicmFja2V0cyhuLTEpIGVsc2UgQ2JyYWNrZXQpXG4gIHwgRG9sbGFycyBuIC0+IERvbGxhciwgKGlmIG4gPiAwIHRoZW4gRG9sbGFycyhuLTEpIGVsc2UgRG9sbGFyKVxuICB8IERvdHMgbiAtPiBEb3QsIChpZiBuID4gMCB0aGVuIERvdHMobi0xKSBlbHNlIERvdClcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBEb3VibGVxdW90ZSwgKGlmIG4gPiAwIHRoZW4gRG91YmxlcXVvdGVzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZSlcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBFeGNsYW1hdGlvbiwgKGlmIG4gPiAwIHRoZW4gRXhjbGFtYXRpb25zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbilcbiAgfCBFcXVhbHMgbiAtPiBFcXVhbCwgKGlmIG4gPiAwIHRoZW4gRXF1YWxzKG4tMSkgZWxzZSBFcXVhbClcbiAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbiwgKGlmIG4gPiAwIHRoZW4gR3JlYXRlcnRoYW5zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBHcmVhdGVydGhhbilcbiAgfCBIYXNocyBuIC0+IEhhc2gsIChpZiBuID4gMCB0aGVuIEhhc2hzKG4tMSkgZWxzZSBIYXNoKVxuICB8IExlc3N0aGFucyBuIC0+IExlc3N0aGFuLCAoaWYgbiA+IDAgdGhlbiBMZXNzdGhhbnMobi0xKSBlbHNlIExlc3N0aGFuKVxuICB8IE1pbnVzcyBuIC0+IE1pbnVzLCAoaWYgbiA+IDAgdGhlbiBNaW51c3Mobi0xKSBlbHNlIE1pbnVzKVxuICB8IE5ld2xpbmVzIG4gLT4gTmV3bGluZSwgKGlmIG4gPiAwIHRoZW4gTmV3bGluZXMobi0xKSBlbHNlIE5ld2xpbmUpXG4gIHwgT2JyYWNlcyBuIC0+IE9icmFjZSwgKGlmIG4gPiAwIHRoZW4gT2JyYWNlcyhuLTEpIGVsc2UgT2JyYWNlKVxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBPcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIE9wYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT3BhcmVudGhlc2lzKVxuICB8IE9icmFja2V0cyBuIC0+IE9icmFja2V0LCAoaWYgbiA+IDAgdGhlbiBPYnJhY2tldHMobi0xKSBlbHNlIE9icmFja2V0KVxuICB8IFBlcmNlbnRzIG4gLT4gUGVyY2VudCwgKGlmIG4gPiAwIHRoZW4gUGVyY2VudHMobi0xKSBlbHNlIFBlcmNlbnQpXG4gIHwgUGx1c3MgbiAtPiBQbHVzLCAoaWYgbiA+IDAgdGhlbiBQbHVzcyhuLTEpIGVsc2UgUGx1cylcbiAgfCBRdWVzdGlvbnMgbiAtPiBRdWVzdGlvbiwgKGlmIG4gPiAwIHRoZW4gUXVlc3Rpb25zKG4tMSkgZWxzZSBRdWVzdGlvbilcbiAgfCBRdW90ZXMgbiAtPiBRdW90ZSwgKGlmIG4gPiAwIHRoZW4gUXVvdGVzKG4tMSkgZWxzZSBRdW90ZSlcbiAgfCBTZW1pY29sb25zIG4gLT4gU2VtaWNvbG9uLCAoaWYgbiA+IDAgdGhlbiBTZW1pY29sb25zKG4tMSkgZWxzZSBTZW1pY29sb24pXG4gIHwgU2xhc2hzIG4gLT4gU2xhc2gsIChpZiBuID4gMCB0aGVuIFNsYXNocyhuLTEpIGVsc2UgU2xhc2gpXG4gIHwgU3BhY2VzIG4gLT4gU3BhY2UsIChpZiBuID4gMCB0aGVuIFNwYWNlcyhuLTEpIGVsc2UgU3BhY2UpXG4gIHwgU3RhcnMgbiAtPiBTdGFyLCAoaWYgbiA+IDAgdGhlbiBTdGFycyhuLTEpIGVsc2UgU3RhcilcbiAgfCBUYWJzIG4gLT4gVGFiLCAoaWYgbiA+IDAgdGhlbiBUYWJzKG4tMSkgZWxzZSBUYWIpXG4gIHwgVGlsZGVzIG4gLT4gVGlsZGUsIChpZiBuID4gMCB0aGVuIFRpbGRlcyhuLTEpIGVsc2UgVGlsZGUpXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBVbmRlcnNjb3JlLCAoaWYgbiA+IDAgdGhlbiBVbmRlcnNjb3JlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVuZGVyc2NvcmUpXG4gIHwgQW1wZXJzYW5kIHwgQXQgfCBCYWNrcXVvdGUgfCBCYWNrc2xhc2ggfCBCYXIgfCBDYXJldCB8IENicmFjZSB8IENvbG9uXG4gIHwgQ29tbWEgfCBDcGFyZW50aGVzaXMgfCBDYnJhY2tldCB8IERvbGxhciB8IERvdCB8IERvdWJsZXF1b3RlXG4gIHwgRXhjbGFtYXRpb24gfCBFcXVhbCB8IEdyZWF0ZXJ0aGFuIHwgSGFzaCB8IExlc3N0aGFuIHwgTWludXNcbiAgfCBOZXdsaW5lIHwgTnVtYmVyIF8gfCBPYnJhY2UgfCBPcGFyZW50aGVzaXMgfCBPYnJhY2tldCB8IFBlcmNlbnRcbiAgfCBQbHVzIHwgUXVlc3Rpb24gfCBRdW90ZSB8IFNlbWljb2xvbiB8IFNsYXNoIHwgU3BhY2UgfCBTdGFyIHwgVGFiXG4gIHwgVGlsZGUgfCBVbmRlcnNjb3JlIHwgVGFnIF8gfCBXb3JkIF8gLT5cbiAgICAgaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIuc3BsaXRfZmlyc3RcIlxuXG5tb2R1bGUgdHlwZSBJbnB1dCA9XG5zaWdcbiAgdHlwZSB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuICB2YWwgc3ViIDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIExleChJIDogSW5wdXQpIDpcbnNpZ1xuICB2YWwgbGV4IDogSS50IC0+IHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IGxleCAocyA6IEkudCkgPVxuICAgIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGwgPSBJLmxlbmd0aCBzIGluXG4gICAgbGV0IHJjb3VudCBjID1cbiAgICAgICgqIFtyY291bnQgY10gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGltbWVkaWF0ZSBjb25zZWN1dGl2ZVxuICAgICAgICAgb2NjdXJyZW5jZXMgb2YgW2NdLiAgQnkgc2lkZS1lZmZlY3QsIGl0IGluY3JlYXNlcyB0aGUgcmVmZXJlbmNlXG4gICAgICAgICBjb3VudGVyIFtpXS4gKilcbiAgICAgIGxldCByZWMgbG9vcCByID1cbiAgICAgICAgaWYgIWkgPSBsIHRoZW4gclxuICAgICAgICBlbHNlIGlmIEkuZ2V0IHMgIWkgPSBjIHRoZW4gKGluY3IgaTsgbG9vcCAocisxKSlcbiAgICAgICAgZWxzZSByXG4gICAgICBpblxuICAgICAgbG9vcCAxXG4gICAgaW5cbiAgICBsZXQgd29yZCAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBpZiAhaSA9IGwgdGhlblxuICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgfCAnIycgfCAnKicgfCAnLScgfCAnKycgfCAnYCcgfCAnXFwnJ1xuICAgICAgICAgICAgfCAnXCInIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonXG4gICAgICAgICAgICB8ICc7JyB8ICc+JyB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJ1xuICAgICAgICAgICAgfCAnJCcgfCAnJScgfCAnIScgfCAnPycgfCAnPScgLT5cbiAgICAgICAgICAgICAgICBXb3JkKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgICB8IGMgLT4gaW5jciBpOyBsb29wKClcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgbG9vcCgpXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfbnVtYmVyICgpID1cbiAgICAgIGxldCBzdGFydCA9ICFpIGluXG4gICAgICB3aGlsZVxuICAgICAgICAhaSA8IGwgJiZcbiAgICAgICAgbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZG9cbiAgICAgICAgaW5jciBpXG4gICAgICBkb25lO1xuICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgTnVtYmVyKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJycgfCAnXCInXG4gICAgICAgICAgfCAnXFxcXCcgfCAnXycgfCAnWycgfCAnXScgfCAneycgfCAnfScgfCAnKCcgfCAnKScgfCAnOicgfCAnOycgfCAnPidcbiAgICAgICAgICB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJyB8ICckJyB8ICclJyB8ICchJ1xuICAgICAgICAgIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpIDo9IHN0YXJ0O1xuICAgICAgICAgICAgICB3b3JkKClcbiAgICAgICAgZW5kXG4gICAgaW5cblxuICAgIGxldCBuX29jYyBjID0gaW5jciBpOyByY291bnQgYyBpblxuXG4gICAgd2hpbGUgIWkgPCBsIGRvXG4gICAgICBsZXQgYyA9IEkuZ2V0IHMgIWkgaW5cbiAgICAgIGxldCB3ID0gbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZSBlbHNlIFNwYWNlcyAobi0yKVxuICAgICAgICB8ICdcXHQnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNwYWNlcygyKSBlbHNlIFNwYWNlcyg0Km4tMilcbiAgICAgICAgfCAnXFxuJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMgKG4tMilcbiAgICAgICAgfCAnXFxyJyAtPiAoKiBlbGltaW5hdGluZyBcXHIgYnkgY29udmVydGluZyBhbGwgc3R5bGVzIHRvIHVuaXggc3R5bGUgKilcbiAgICAgICAgICBpbmNyIGk7XG4gICAgICAgICAgbGV0IHJlYyBjb3VudF9ybiB4ID1cbiAgICAgICAgICAgIGlmICFpIDwgbCAmJiBJLmdldCBzICghaSkgPSAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIGlmICFpICsgMSA8IGwgJiYgSS5nZXQgcyAoIWkrMSkgPSAnXFxyJyB0aGVuXG4gICAgICAgICAgICAgICAgKGkgOj0gIWkgKyAyOyBjb3VudF9ybiAoeCsxKSlcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJuID0gMSArIGNvdW50X3JuIDAgaW5cbiAgICAgICAgICBpZiBybiA9IDEgdGhlblxuICAgICAgICAgICAgbWF0Y2ggbl9vY2MgYyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gTmV3bGluZVxuICAgICAgICAgICAgfCB4IC0+IGFzc2VydCh4Pj0yKTsgTmV3bGluZXMoeC0yKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChhc3NlcnQocm4+PTIpO05ld2xpbmVzKHJuLTIpKVxuICAgICAgICB8ICcjJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gSGFzaCBlbHNlIEhhc2hzIChuLTIpXG4gICAgICAgIHwgJyonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTdGFyIGVsc2UgU3RhcnMgKG4tMilcbiAgICAgICAgfCAnLScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE1pbnVzIGVsc2UgTWludXNzIChuLTIpXG4gICAgICAgIHwgJysnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQbHVzIGVsc2UgUGx1c3MgKG4tMilcbiAgICAgICAgfCAnYCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhY2txdW90ZSBlbHNlIEJhY2txdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFwnJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdW90ZSBlbHNlIFF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcIicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdWJsZXF1b3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIERvdWJsZXF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcXFxcJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrc2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQmFja3NsYXNocyAobi0yKVxuICAgICAgICB8ICdfJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVW5kZXJzY29yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlcyAobi0yKVxuICAgICAgICB8ICdbJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT2JyYWNrZXRzIChuLTIpXG4gICAgICAgIHwgJ10nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYnJhY2tldCBlbHNlIENicmFja2V0cyAobi0yKVxuICAgICAgICB8ICd7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNlIGVsc2UgT2JyYWNlcyAobi0yKVxuICAgICAgICB8ICd9JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNlIGVsc2UgQ2JyYWNlcyAobi0yKVxuICAgICAgICB8ICcoJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT3BhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpc3MgKG4tMilcbiAgICAgICAgfCAnKScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENwYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJzonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDb2xvbiBlbHNlIENvbG9ucyAobi0yKVxuICAgICAgICB8ICc7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU2VtaWNvbG9uIGVsc2UgU2VtaWNvbG9ucyAobi0yKVxuICAgICAgICB8ICc+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gR3JlYXRlcnRoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW5zIChuLTIpXG4gICAgICAgIHwgJ34nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBUaWxkZSBlbHNlIFRpbGRlcyAobi0yKVxuICAgICAgICB8ICc8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMgKG4tMilcbiAgICAgICAgfCAnQCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEF0IGVsc2UgQXRzIChuLTIpXG4gICAgICAgIHwgJyYnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBbXBlcnNhbmQgZWxzZSBBbXBlcnNhbmRzIChuLTIpXG4gICAgICAgIHwgJ3wnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYXIgZWxzZSBCYXJzIChuLTIpXG4gICAgICAgIHwgJ14nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYXJldCBlbHNlIENhcmV0cyAobi0yKVxuICAgICAgICB8ICcsJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29tbWEgZWxzZSBDb21tYXMgKG4tMilcbiAgICAgICAgfCAnLicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdCBlbHNlIERvdHMgKG4tMilcbiAgICAgICAgfCAnLycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNsYXNoIGVsc2UgU2xhc2hzIChuLTIpXG4gICAgICAgIHwgJyQnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb2xsYXIgZWxzZSBEb2xsYXJzIChuLTIpXG4gICAgICAgIHwgJyUnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQZXJjZW50IGVsc2UgUGVyY2VudHMgKG4tMilcbiAgICAgICAgfCAnPScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEVxdWFsIGVsc2UgRXF1YWxzIChuLTIpXG4gICAgICAgIHwgJyEnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFeGNsYW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbnMgKG4tMilcbiAgICAgICAgfCAnPycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFF1ZXN0aW9uIGVsc2UgUXVlc3Rpb25zIChuLTIpXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiBtYXliZV9udW1iZXIoKVxuICAgICAgICB8IGMgLT4gd29yZCgpIGluXG4gICAgICByZXN1bHQgOj0gdyA6OiAhcmVzdWx0XG4gICAgZG9uZTtcbiAgICBMaXN0LnJldiAhcmVzdWx0XG5lbmRcblxubW9kdWxlIExleF9zdHJpbmcgPSBMZXgoU3RyaW5nTGFiZWxzKVxubGV0IGxleCA9IExleF9zdHJpbmcubGV4XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCxcbiAgICAgICAgICAgICAgICAgIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG5tb2R1bGUgQmlnYXJyYXlfaW5wdXQgOiBJbnB1dCB3aXRoIHR5cGUgdCA9IGJpZ3N0cmluZyA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEJBID0gQmlnYXJyYXlcblxuICB0eXBlIHQgPSBiaWdzdHJpbmdcbiAgbGV0IGdldCA9IEJBLkFycmF5MS5nZXRcbiAgbGV0IGxlbmd0aCA9IEJBLkFycmF5MS5kaW1cbiAgbGV0IHN1YiBhcnIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IHBvcyA8IDAgfHwgcG9zICsgbGVuID4gQkEuQXJyYXkxLmRpbSBhcnJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYXJyYXlfaW5wdXQuc3ViXCI7XG4gICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcyBpIChCQS5BcnJheTEudW5zYWZlX2dldCBhcnIgKGkgKyBwb3MpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5lbmRcbm1vZHVsZSBMZXhfYmlnYXJyYXkgPSBMZXgoQmlnYXJyYXlfaW5wdXQpXG5sZXQgbGV4X2JpZ2FycmF5ID0gTGV4X2JpZ2FycmF5LmxleFxuXG5sZXQgbWFrZV9zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgMCAtPiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCJcbiAgfCAxIC0+IFNwYWNlXG4gIHwgbiAtPiBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiT21kX2xleGVyLm1ha2Vfc3BhY2VcIiBlbHNlIFNwYWNlcyAobi0yKVxuXG5cbigqXG4oKiogW3N0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbC5cbiAgICBbZXN0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsXG4gICAgKHNhbWUgc2VtYW50aWNzIGFzIFtTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3RsIGwpXSkuICopXG5sZXQgc3RyaW5nX29mX3RsLCBlc3RyaW5nX29mX3RsID1cbiAgbGV0IGcgZXNjYXBlZCB0bCA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDQyIGluXG4gICAgbGV0IHJlYyBsb29wIDogJ2EgdCBsaXN0IC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGlmIGVzY2FwZWQgdGhlbiBTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3QgZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHN0cmluZ19vZl90IGUpO1xuICAgICAgICAgIGxvb3AgdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG4gICAgICBCdWZmZXIuY29udGVudHMgKGxvb3AgdGw7IGIpXG4gIGluIGcgZmFsc2UsIGcgdHJ1ZVxuKilcblxubGV0IHN0cmluZ19vZl90b2tlbnMgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIExpc3QuaXRlciAoZnVuIGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX3Rva2VuIGUpKSB0bDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZGVzdHJpbmdfb2ZfdG9rZW5zID8obGltaXQ9bWF4X2ludCkgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgKGk6aW50KSAodGxpc3Q6dG9rIGxpc3QpIDogdW5pdCA9IG1hdGNoIHRsaXN0IHdpdGhcbiAgICB8IGU6OnRsIC0+XG4gICAgICAgIGlmIGxpbWl0ID0gaSB0aGVuXG4gICAgICAgICAgbG9vcCBpIFtdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90b2tlbiBlKSk7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiOjpcIjtcbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSkgdGxcbiAgICAgICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJbXVwiXG4gIGluXG4gICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIDAgdGw7IGIpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy0yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBzZGVidWcgPSB0cnVlXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcbm1vZHVsZSBMID0gT21kX2xleGVyXG5cbnR5cGUgciA9IE9tZF9yZXByZXNlbnRhdGlvbi50XG4oKiogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuXG5hbmQgcCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIGNvbnRleHQgaW5mb3JtYXRpb246IHByZXZpb3VzIGVsZW1lbnRzICopXG5cbmFuZCBsID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG4oKiogdG9rZW5zIHRvIHBhcnNlICopXG5cbmFuZCBtYWluX2xvb3AgPVxuICA/aHRtbDpib29sIC0+XG4gIHIgLT4gKCogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuICBwIC0+ICgqIGluZm86IHByZXZpb3VzIGVsZW1lbnRzICopXG4gIGwgLT4gKCogdG9rZW5zIHRvIHBhcnNlICopXG4gIE9tZF9yZXByZXNlbnRhdGlvbi50ICgqIGZpbmFsIHJlc3VsdCAqKVxuKCoqIG1vc3QgaW1wb3J0YW50IGxvb3AgKilcblxuXG4oKiogTi5CLiBQbGVhc2UgZG8gbm90IHVzZSB0YWJ1bGF0aW9ucyBpbiB5b3VyIE1hcmtkb3duIGZpbGUhICopXG5cbm1vZHVsZSB0eXBlIEVudiA9IHNpZ1xuICB2YWwgcmM6IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIHZhbCBleHRlbnNpb25zIDogT21kX3JlcHJlc2VudGF0aW9uLmV4dGVuc2lvbnNcbiAgdmFsIGRlZmF1bHRfbGFuZyA6IHN0cmluZ1xuICB2YWwgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSA6IGJvb2xcbiAgdmFsIGJsaW5kX2h0bWwgOiBib29sXG4gIHZhbCBzdHJpY3RfaHRtbCA6IGJvb2xcbiAgdmFsIHdhcm5pbmcgOiBib29sXG4gIHZhbCB3YXJuX2Vycm9yIDogYm9vbFxuZW5kXG5cbm1vZHVsZSBVbml0ID0gc3RydWN0IGVuZFxuXG5tb2R1bGUgRGVmYXVsdF9lbnYgKFVuaXQ6c2lnIGVuZCkgOiBFbnYgPSBzdHJ1Y3RcbiAgbGV0IHJjID0gbmV3IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIGxldCBleHRlbnNpb25zID0gW11cbiAgbGV0IGRlZmF1bHRfbGFuZyA9IFwiXCJcbiAgbGV0IGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgPSB0cnVlXG4gIGxldCBibGluZF9odG1sID0gZmFsc2VcbiAgbGV0IHN0cmljdF9odG1sID0gZmFsc2VcbiAgbGV0IHdhcm5pbmcgPSBmYWxzZVxuICBsZXQgd2Fybl9lcnJvciA9IGZhbHNlXG5lbmRcblxubW9kdWxlIE1ha2UgKEVudjpFbnYpID1cbnN0cnVjdFxuICBpbmNsdWRlIEVudlxuXG4gIGxldCB3YXJuID0gT21kX3V0aWxzLndhcm4gfndlOndhcm5fZXJyb3JcblxuICAoKiogc2V0IG9mIGtub3duIEhUTUwgY29kZXMgKilcbiAgbGV0IGh0bWxjb2Rlc19zZXQgPSBTdHJpbmdTZXQub2ZfbGlzdCAoKiBUaGlzIGxpc3Qgc2hvdWxkIGJlIGNoZWNrZWQuLi4gKilcbiAgICAgICgqIGxpc3QgZXh0cmFjdGVkIGZyb206IGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2NoYXJzZXQuaHRtbCAqKVxuICAgICAgWyBcIkFFbGlnXCI7ICBcIkFhY3V0ZVwiOyAgXCJBY2lyY1wiOyAgXCJBZ3JhdmVcIjsgXCJBbHBoYVwiOyAgXCJBcmluZ1wiOyAgXCJBdGlsZGVcIjtcbiAgICAgICAgXCJBdW1sXCI7IFwiQmV0YVwiOyAgXCJDY2VkaWxcIjsgXCJDaGlcIjsgXCJEYWdnZXJcIjsgIFwiRGVsdGFcIjsgXCJFVEhcIjsgXCJFYWN1dGVcIjtcbiAgICAgICAgXCJFY2lyY1wiOyAgXCJFZ3JhdmVcIjsgIFwiRXBzaWxvblwiOyAgIFwiRXRhXCI7ICBcIkV1bWxcIjsgIFwiR2FtbWFcIjsgIFwiSWFjdXRlXCI7XG4gICAgICAgIFwiSWNpcmNcIjsgXCJJZ3JhdmVcIjsgXCJJb3RhXCI7ICBcIkl1bWxcIjsgXCJLYXBwYVwiOyBcIkxhbWJkYVwiOyBcIk11XCI7IFwiTnRpbGRlXCI7XG4gICAgICAgIFwiTnVcIjsgIFwiT0VsaWdcIjsgIFwiT2FjdXRlXCI7ICAgXCJPY2lyY1wiOyAgXCJPZ3JhdmVcIjsgIFwiT21lZ2FcIjsgIFwiT21pY3JvblwiO1xuICAgICAgICBcIk9zbGFzaFwiOyAgXCJPdGlsZGVcIjsgIFwiT3VtbFwiOyAgXCJQaGlcIjsgIFwiUGlcIjsgIFwiUHJpbWVcIjsgIFwiUHNpXCI7ICBcIlJob1wiO1xuICAgICAgICBcIlNjYXJvblwiOyAgXCJTaWdtYVwiOyAgIFwiVEhPUk5cIjsgIFwiVGF1XCI7ICBcIlRoZXRhXCI7ICAgXCJVYWN1dGVcIjsgIFwiVWNpcmNcIjtcbiAgICAgICAgXCJVZ3JhdmVcIjsgXCJVcHNpbG9uXCI7IFwiVXVtbFwiOyBcIlhpXCI7IFwiWWFjdXRlXCI7IFwiWXVtbFwiOyBcIlpldGFcIjsgXCJhYWN1dGVcIjtcbiAgICAgICAgXCJhY2lyY1wiOyBcImFjdXRlXCI7IFwiYWVsaWdcIjsgXCJhZ3JhdmVcIjsgXCJhbGVmc3ltXCI7IFwiYWxwaGFcIjsgXCJhbXBcIjsgXCJhbmRcIjtcbiAgICAgICAgXCJhbmdcIjsgXCJhcmluZ1wiOyBcImFzeW1wXCI7ICBcImF0aWxkZVwiOyBcImF1bWxcIjsgXCJiZHF1b1wiOyBcImJldGFcIjsgXCJicnZiYXJcIjtcbiAgICAgICAgXCJidWxsXCI7ICBcImNhcFwiOyAgXCJjY2VkaWxcIjsgXCJjZWRpbFwiOyAgXCJjZW50XCI7ICBcImNoaVwiOyBcImNpcmNcIjsgIFwiY2x1YnNcIjtcbiAgICAgICAgXCJjb25nXCI7ICBcImNvcHlcIjsgXCJjcmFyclwiOyBcImN1cFwiOyAgXCJjdXJyZW5cIjsgXCJkQXJyXCI7ICBcImRhZ2dlclwiOyBcImRhcnJcIjtcbiAgICAgICAgXCJkZWdcIjsgIFwiZGVsdGFcIjsgIFwiZGlhbXNcIjsgICBcImRpdmlkZVwiOyAgXCJlYWN1dGVcIjsgIFwiZWNpcmNcIjsgIFwiZWdyYXZlXCI7XG4gICAgICAgIFwiZW1wdHlcIjsgIFwiZW1zcFwiOyBcImVuc3BcIjsgIFwiZXBzaWxvblwiOyBcImVxdWl2XCI7ICBcImV0YVwiOyAgXCJldGhcIjsgXCJldW1sXCI7XG4gICAgICAgIFwiZXVyb1wiOyAgXCJleGlzdFwiOyAgXCJmbm9mXCI7ICBcImZvcmFsbFwiOyAgXCJmcmFjMTJcIjsgIFwiZnJhYzE0XCI7ICBcImZyYWMzNFwiO1xuICAgICAgICBcImZyYXNsXCI7ICBcImdhbW1hXCI7ICBcImdlXCI7IFwiZ3RcIjsgIFwiaEFyclwiOyAgXCJoYXJyXCI7IFwiaGVhcnRzXCI7ICBcImhlbGxpcFwiO1xuICAgICAgICBcImlhY3V0ZVwiOyBcImljaXJjXCI7IFwiaWV4Y2xcIjsgXCJpZ3JhdmVcIjsgXCJpbWFnZVwiOyBcImluZmluXCI7IFwiaW50XCI7IFwiaW90YVwiO1xuICAgICAgICBcImlxdWVzdFwiOyBcImlzaW5cIjsgXCJpdW1sXCI7ICBcImthcHBhXCI7IFwibEFyclwiOyBcImxhbWJkYVwiOyBcImxhbmdcIjsgXCJsYXF1b1wiO1xuICAgICAgICBcImxhcnJcIjsgIFwibGNlaWxcIjsgIFwibGRxdW9cIjsgXCJsZVwiOyAgXCJsZmxvb3JcIjsgIFwibG93YXN0XCI7IFwibG96XCI7ICBcImxybVwiO1xuICAgICAgICBcImxzYXF1b1wiOyBcImxzcXVvXCI7IFwibHRcIjsgIFwibWFjclwiOyBcIm1kYXNoXCI7IFwibWljcm9cIjsgXCJtaWRkb3RcIjsgXCJtaW51c1wiO1xuICAgICAgICBcIm11XCI7IFwibmFibGFcIjsgIFwibmJzcFwiOyBcIm5kYXNoXCI7ICBcIm5lXCI7IFwibmlcIjsgXCJub3RcIjsgIFwibm90aW5cIjsgXCJuc3ViXCI7XG4gICAgICAgIFwibnRpbGRlXCI7ICBcIm51XCI7ICAgXCJvYWN1dGVcIjsgIFwib2NpcmNcIjsgIFwib2VsaWdcIjsgICBcIm9ncmF2ZVwiOyAgXCJvbGluZVwiO1xuICAgICAgICBcIm9tZWdhXCI7IFwib21pY3JvblwiOyBcIm9wbHVzXCI7IFwib3JcIjsgXCJvcmRmXCI7IFwib3JkbVwiOyBcIm9zbGFzaFwiOyBcIm90aWxkZVwiO1xuICAgICAgICBcIm90aW1lc1wiOyAgXCJvdW1sXCI7ICBcInBhcmFcIjsgIFwicGFydFwiOyAgXCJwZXJtaWxcIjsgXCJwZXJwXCI7ICBcInBoaVwiOyAgXCJwaVwiO1xuICAgICAgICBcInBpdlwiOyAgXCJwbHVzbW5cIjsgIFwicG91bmRcIjsgXCJwcmltZVwiOyAgXCJwcm9kXCI7ICBcInByb3BcIjsgXCJwc2lcIjsgIFwicXVvdFwiO1xuICAgICAgICBcInJBcnJcIjsgIFwicmFkaWNcIjsgXCJyYW5nXCI7IFwicmFxdW9cIjsgIFwicmFyclwiOyBcInJjZWlsXCI7ICBcInJkcXVvXCI7IFwicmVhbFwiO1xuICAgICAgICBcInJlZ1wiOyBcInJmbG9vclwiOyAgXCJyaG9cIjsgXCJybG1cIjsgXCJyc2FxdW9cIjsgIFwicnNxdW9cIjsgXCJzYnF1b1wiOyBcInNjYXJvblwiO1xuICAgICAgICBcInNkb3RcIjsgIFwic2VjdFwiOyAgXCJzaHlcIjsgXCJzaWdtYVwiOyAgXCJzaWdtYWZcIjsgIFwic2ltXCI7IFwic3BhZGVzXCI7ICBcInN1YlwiO1xuICAgICAgICBcInN1YmVcIjsgXCJzdW1cIjsgXCJzdXBcIjsgXCJzdXAxXCI7ICBcInN1cDJcIjsgXCJzdXAzXCI7IFwic3VwZVwiOyBcInN6bGlnXCI7IFwidGF1XCI7XG4gICAgICAgIFwidGhlcmU0XCI7ICBcInRoZXRhXCI7IFwidGhldGFzeW1cIjsgIFwidGhpbnNwXCI7IFwidGhvcm5cIjsgIFwidGlsZGVcIjsgXCJ0aW1lc1wiO1xuICAgICAgICBcInRyYWRlXCI7IFwidUFyclwiOyBcInVhY3V0ZVwiOyAgXCJ1YXJyXCI7IFwidWNpcmNcIjsgXCJ1Z3JhdmVcIjsgXCJ1bWxcIjsgXCJ1cHNpaFwiO1xuICAgICAgICBcInVwc2lsb25cIjsgIFwidXVtbFwiOyBcIndlaWVycFwiOyBcInhpXCI7ICBcInlhY3V0ZVwiOyBcInllblwiOyAgXCJ5dW1sXCI7IFwiemV0YVwiO1xuICAgICAgICBcInp3alwiOyBcInp3bmpcIjsgXVxuXG5cbiAgKCoqIHNldCBvZiBrbm93biBpbmxpbmUgSFRNTCB0YWdzICopXG4gIGxldCBpbmxpbmVfaHRtbHRhZ3Nfc2V0ID1cbiAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgKCogZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvSW5saW5lX2VsZW1lbnRzICopXG4gICAgICAgICBbIFwiYlwiO1wiYmlnXCI7XCJpXCI7XCJzbWFsbFwiO1widHRcIjtcbiAgICAgICAgICAgXCJhYmJyXCI7XCJhY3JvbnltXCI7XCJjaXRlXCI7XCJjb2RlXCI7XCJkZm5cIjtcImVtXCI7XCJrYmRcIjtcInN0cm9uZ1wiO1wic2FtcFwiO1widmFyXCI7XG4gICAgICAgICAgIFwiYVwiO1wiYmRvXCI7XCJiclwiO1wiaW1nXCI7XCJtYXBcIjtcIm9iamVjdFwiO1wicVwiO1wic3BhblwiO1wic3ViXCI7XCJzdXBcIjtcbiAgICAgICAgICAgXCJidXR0b25cIjtcImlucHV0XCI7XCJsYWJlbFwiO1wic2VsZWN0XCI7XCJ0ZXh0YXJlYVwiO10pXG5cbiAgKCoqIE4uQi4gaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBubyBjbGVhciBkaXN0aW5jdGlvbiBiZXR3ZWVuIGlubGluZVxuICAgICAgdGFncyBhbmQgYmxvY2stbGV2ZWwgdGFnczogaW4gSFRNTDQgaXQgd2FzIG5vdCBjbGVhciwgaW4gSFRNTDVcbiAgICAgIGl0J3MgZXZlbiBtb3JlIGNvbXBsaWNhdGVkLiBTbywgdGhlIGNob2ljZSAqaGVyZSogaXMgdG8gc3BlY2lmeVxuICAgICAgYSBzZXQgb2YgdGFncyBjb25zaWRlcmVkIGFzIFwiaW5saW5lXCIsIGNmLiBbaW5saW5lX2h0bWx0YWdzX3NldF0uXG4gICAgICBTbyB0aGVyZSB3aWxsIGJlIGlubGluZSB0YWdzLCBub24taW5saW5lIHRhZ3MsIGFuZCB1bmtub3duXG4gICAgICB0YWdzLiopXG5cbiAgKCoqIHNldCBvZiBIVE1MIHRhZ3MgdGhhdCBtYXkgYXBwZWFyIG91dCBvZiBhIGJvZHkgKilcbiAgbGV0IG5vdGluYm9keXRhZ3MgPSBTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgW1xuICAgICAgICBcInRpdGxlXCI7XG4gICAgICAgIFwibGlua1wiO1xuICAgICAgICBcIm1ldGFcIjtcbiAgICAgICAgXCJzdHlsZVwiO1xuICAgICAgICBcImh0bWxcIjtcbiAgICAgICAgXCJoZWFkXCI7XG4gICAgICAgIFwiYm9keVwiO1xuICAgICAgXVxuXG4gICgqKiBBbGwga25vd24gSFRNTCB0YWdzICopXG4gIGxldCBodG1sdGFnc19zZXQgPVxuICAgIFN0cmluZ1NldC51bmlvbiBub3RpbmJvZHl0YWdzXG4gICAgICAoU3RyaW5nU2V0LnVuaW9uIGlubGluZV9odG1sdGFnc19zZXRcbiAgICAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImFcIjtcImFiYnJcIjtcImFjcm9ueW1cIjtcImFkZHJlc3NcIjtcImFwcGxldFwiO1wiYXJlYVwiO1wiYXJ0aWNsZVwiO1wiYXNpZGVcIlxuICAgICAgICAgICAgICA7XCJhdWRpb1wiO1wiYlwiO1wiYmFzZVwiO1wiYmFzZWZvbnRcIjtcImJkaVwiO1wiYmRvXCI7XCJiaWdcIjtcImJsb2NrcXVvdGVcIlxuICAgICAgICAgICAgICA7XCJiclwiO1wiYnV0dG9uXCI7XCJjYW52YXNcIjtcImNhcHRpb25cIjtcImNlbnRlclwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiY29sXCJcbiAgICAgICAgICAgICAgO1wiY29sZ3JvdXBcIjtcImNvbW1hbmRcIjtcImRhdGFsaXN0XCI7XCJkZFwiO1wiZGVsXCI7XCJkZXRhaWxzXCI7XCJkZm5cIlxuICAgICAgICAgICAgICA7XCJkaWFsb2dcIjtcImRpclwiO1wiZGl2XCI7XCJkbFwiO1wiZHRcIjtcImVtXCI7XCJlbWJlZFwiO1wiZmllbGRzZXRcIlxuICAgICAgICAgICAgICA7XCJmaWdjYXB0aW9uXCI7XCJmaWd1cmVcIjtcImZvbnRcIjtcImZvb3RlclwiO1wiZm9ybVwiO1wiZnJhbWVcIjtcImZyYW1lc2V0XCJcbiAgICAgICAgICAgICAgO1wiaDJcIjtcImgzXCI7XCJoNFwiO1wiaDVcIjtcImg2XCJcbiAgICAgICAgICAgICAgO1wiaDFcIjtcImhlYWRlclwiO1wiaHJcIjtcImlcIjtcImlmcmFtZVwiO1wiaW1nXCI7XCJpbnB1dFwiO1wiaW5zXCI7XCJrYmRcIlxuICAgICAgICAgICAgICA7XCJrZXlnZW5cIjtcImxhYmVsXCI7XCJsZWdlbmRcIjtcImxpXCI7XCJtYXBcIjtcIm1hcmtcIjtcIm1lbnVcIjtcIm1ldGVyXCI7XCJuYXZcIlxuICAgICAgICAgICAgICA7XCJub2ZyYW1lc1wiO1wibm9zY3JpcHRcIjtcIm9iamVjdFwiO1wib2xcIjtcIm9wdGdyb3VwXCI7XCJvcHRpb25cIjtcIm91dHB1dFwiXG4gICAgICAgICAgICAgIDtcInBcIjtcInBhcmFtXCI7XCJwcmVcIjtcInByb2dyZXNzXCI7XCJxXCI7XCJycFwiO1wicnRcIjtcInJ1YnlcIjtcInNcIjtcInNhbXBcIlxuICAgICAgICAgICAgICA7XCJzY3JpcHRcIjtcInNlY3Rpb25cIjtcInNlbGVjdFwiO1wic21hbGxcIjtcInNvdXJjZVwiO1wic3BhblwiO1wic3RyaWtlXCJcbiAgICAgICAgICAgICAgO1wic3Ryb25nXCI7XCJzdHlsZVwiO1wic3ViXCI7XCJzdW1tYXJ5XCI7XCJzdXBcIjtcInRhYmxlXCI7XCJ0Ym9keVwiO1widGRcIlxuICAgICAgICAgICAgICA7XCJ0ZXh0YXJlYVwiO1widGZvb3RcIjtcInRoXCI7XCJ0aGVhZFwiO1widGltZVwiO1widHJcIjtcInRyYWNrXCI7XCJ0dFwiO1widVwiXG4gICAgICAgICAgICAgIDtcInVsXCI7XCJ2YXJcIjtcInZpZGVvXCI7XCJ3YnJcIlxuICAgICAgICAgICAgXSkpXG5cblxuICAoKiogVGhpcyBmdW5jdGlvbnMgZml4ZXMgYmFkIGxleGluZyB0cmVlcywgd2hpY2ggbWF5IGJlIGJ1aWx0IHdoZW5cbiAgICAgIGV4dHJhY3Rpb24gYSBwb3J0aW9uIG9mIGFub3RoZXIgbGV4aW5nIHRyZWUuICopXG4gIGxldCBmaXggbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgKCogY29kZSB0byBnZW5lcmF0ZSB3aGF0IGZvbGxvd3MuLi5cbiAgICAgICAgIExpc3QuaXRlciAoZnVuIGUgLT5cbiAgICAgICAgIFByaW50Zi5wcmludGYgXCJcbiAgICAgICAgIHwgJXM6OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAxXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyAwOjp0bClcbiAgICAgICAgIHwgJXNzIG46OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAyXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXM6OiVzcyBuOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAzXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXNzIGE6OiVzcyBiOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyA0XFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhhK2IrMik6OnRsKVwiXG4gICAgICAgICBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlKVxuICAgICAgICAgW1wiQW1wZXJzYW5kXCI7IFwiQXRcIjsgXCJCYWNrcXVvdGVcIjsgXCJCYWNrc2xhc2hcIjsgXCJCYXJcIjsgXCJDYXJldFwiOyBcIkNicmFjZVwiOyBcIkNvbG9uXCI7IFwiQ29tbWFcIjsgXCJDcGFyZW50aGVzaXNcIjsgXCJDYnJhY2tldFwiOyBcIkRvbGxhclwiOyBcIkRvdFwiOyBcIkRvdWJsZXF1b3RlXCI7IFwiRXhjbGFtYXRpb25cIjsgXCJFcXVhbFwiOyBcIkdyZWF0ZXJ0aGFuXCI7IFwiSGFzaFwiOyBcIkxlc3N0aGFuXCI7IFwiTWludXNcIjsgXCJOZXdsaW5lXCI7IFwiT2JyYWNlXCI7IFwiT3BhcmVudGhlc2lzXCI7IFwiT2JyYWNrZXRcIjsgXCJQZXJjZW50XCI7IFwiUGx1c1wiOyBcIlF1ZXN0aW9uXCI7IFwiUXVvdGVcIjsgXCJTZW1pY29sb25cIjsgXCJTbGFzaFwiOyBcIlNwYWNlXCI7IFwiU3RhclwiOyBcIlRhYlwiOyBcIlRpbGRlXCI7IFwiVW5kZXJzY29yZVwiXTtcbiAgICAgICAgIHByaW50X3N0cmluZyBcInwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcXG58IFtdIC0+IExpc3QucmV2IGFjY3VcXG5cIjsgKilcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyAwOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBuOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBhOjpBbXBlcnNhbmRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhhK2IrMik6OnRsKVxuICAgICAgfCBBdDo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMgMDo6dGwpXG4gICAgICB8IEF0cyBuOjpBdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXQ6OkF0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKG4rMSk6OnRsKVxuICAgICAgfCBBdHMgYTo6QXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyAwOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBuOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBhOjpCYWNrcXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzIDA6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIG46OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIGE6OkJhY2tzbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IEJhcjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMgMDo6dGwpXG4gICAgICB8IEJhcnMgbjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcjo6QmFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcnMgYTo6QmFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgQ2FyZXQ6OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzIDA6OnRsKVxuICAgICAgfCBDYXJldHMgbjo6Q2FyZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2FyZXRzIGE6OkNhcmV0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMgMDo6dGwpXG4gICAgICB8IENicmFjZXMgbjo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZXMgYTo6Q2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ29sb246OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zIDA6OnRsKVxuICAgICAgfCBDb2xvbnMgbjo6Q29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgQ29sb25zIGE6OkNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IENvbW1hOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyAwOjp0bClcbiAgICAgIHwgQ29tbWFzIG46OkNvbW1hOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWFzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMobisxKTo6dGwpXG4gICAgICB8IENvbW1hcyBhOjpDb21tYXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhhK2IrMik6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIG46OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIGE6OkNwYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFja2V0OjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyAwOjp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIG46OkNicmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IENicmFja2V0cyBhOjpDYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzIDA6OnRsKVxuICAgICAgfCBEb2xsYXJzIG46OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXJzIGE6OkRvbGxhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKGErYisyKTo6dGwpXG4gICAgICB8IERvdDo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMgMDo6dGwpXG4gICAgICB8IERvdHMgbjo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdDo6RG90cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdHMgYTo6RG90cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGU6OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzIDA6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgbjo6RG91YmxlcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIGE6OkRvdWJsZXF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9uOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyAwOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb25zIG46OkV4Y2xhbWF0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMobisxKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBhOjpFeGNsYW1hdGlvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBFcXVhbDo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMgMDo6dGwpXG4gICAgICB8IEVxdWFscyBuOjpFcXVhbDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFscyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKG4rMSk6OnRsKVxuICAgICAgfCBFcXVhbHMgYTo6RXF1YWxzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMoYStiKzIpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zIDA6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgbjo6R3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIGE6OkdyZWF0ZXJ0aGFucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKGErYisyKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzIDA6OnRsKVxuICAgICAgfCBIYXNocyBuOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhuKzEpOjp0bClcbiAgICAgIHwgSGFzaDo6SGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2hzIGE6Okhhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IExlc3N0aGFuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyAwOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIG46Okxlc3N0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMobisxKTo6dGwpXG4gICAgICB8IExlc3N0aGFucyBhOjpMZXNzdGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBNaW51czo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MgMDo6dGwpXG4gICAgICB8IE1pbnVzcyBuOjpNaW51czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKG4rMSk6OnRsKVxuICAgICAgfCBNaW51c3MgYTo6TWludXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MoYStiKzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMgMDo6dGwpXG4gICAgICB8IE5ld2xpbmVzIG46Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKG4rMSk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjpOZXdsaW5lcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgYTo6TmV3bGluZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyAwOjp0bClcbiAgICAgIHwgT2JyYWNlcyBuOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlcyBhOjpPYnJhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIG46Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIGE6Ok9wYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyAwOjp0bClcbiAgICAgIHwgT2JyYWNrZXRzIG46Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IE9icmFja2V0cyBhOjpPYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyAwOjp0bClcbiAgICAgIHwgUGVyY2VudHMgbjo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMobisxKTo6dGwpXG4gICAgICB8IFBlcmNlbnQ6OlBlcmNlbnRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50cyBhOjpQZXJjZW50cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhhK2IrMik6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyAwOjp0bClcbiAgICAgIHwgUGx1c3Mgbjo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MobisxKTo6dGwpXG4gICAgICB8IFBsdXM6OlBsdXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzcyBhOjpQbHVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhhK2IrMik6OnRsKVxuICAgICAgfCBRdWVzdGlvbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMgMDo6dGwpXG4gICAgICB8IFF1ZXN0aW9ucyBuOjpRdWVzdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKG4rMSk6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgYTo6UXVlc3Rpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgUXVvdGU6OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzIDA6OnRsKVxuICAgICAgfCBRdW90ZXMgbjo6UXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgUXVvdGVzIGE6OlF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMgMDo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgYTo6U2VtaWNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgU2xhc2g6OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzIDA6OnRsKVxuICAgICAgfCBTbGFzaHMgbjo6U2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgU2xhc2hzIGE6OlNsYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IFNwYWNlOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyAwOjp0bClcbiAgICAgIHwgU3BhY2VzIG46OlNwYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMobisxKTo6dGwpXG4gICAgICB8IFNwYWNlcyBhOjpTcGFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyAwOjp0bClcbiAgICAgIHwgU3RhcnMgbjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMobisxKTo6dGwpXG4gICAgICB8IFN0YXI6OlN0YXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFycyBhOjpTdGFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBUYWI6OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzIDA6OnRsKVxuICAgICAgfCBUYWJzIG46OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWI6OlRhYnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWJzIGE6OlRhYnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKGErYisyKTo6dGwpXG4gICAgICB8IFRpbGRlOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyAwOjp0bClcbiAgICAgIHwgVGlsZGVzIG46OlRpbGRlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMobisxKTo6dGwpXG4gICAgICB8IFRpbGRlcyBhOjpUaWxkZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhhK2IrMik6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyAwOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgbjo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMobisxKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmU6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlcyBhOjpVbmRlcnNjb3JlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhhK2IrMik6OnRsKXwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cblxuICAoKiBSZW1vdmUgYWxsIFtOTF0gYW5kIFtCcl0gYXQgdGhlIGJlZ2lubmluZy4gKilcbiAgbGV0IHJlYyByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKE5MIHwgQnIpIDo6IHRsIC0+IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsXG4gICAgfCBsIC0+IGxcblxuXG4gICgqKiAtIHJlY29nbml6ZXMgcGFyYWdyYXBoc1xuICAgICAgLSBnbHVlcyBmb2xsb3dpbmcgYmxvY2txdW90ZXMgICopXG4gIGxldCBtYWtlX3BhcmFncmFwaHMgbWQgPVxuICAgIGxldCByZWMgbG9vcCBjcCBhY2N1ID0gZnVuY3Rpb24gKCogY3AgbWVhbnMgY3VycmVudCBwYXJhZ3JhcGggKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gYWNjdVxuICAgICAgICAgIHwgKE5MfEJyKTo6Y3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICAgIHwgY3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICBpblxuICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICB8IEJsb2NrcXVvdGUgYjEgOjogQmxvY2txdW90ZSBiMiA6OiB0bCAtPlxuICAgICAgICBsb29wIGNwIGFjY3UgKEJsb2NrcXVvdGUoYjFAYjIpOjogdGwpXG4gICAgICB8IEJsb2NrcXVvdGUgYiA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IEJsb2NrcXVvdGUobG9vcCBbXSBbXSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChVbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBVbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChPbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBPbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IEh0bWxfY29tbWVudCBfIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gLT4gbG9vcCBbXSAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoZTo6Tkw6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGwpXG4gICAgICB8IChSYXdfYmxvY2sgXyB8IEh0bWxfYmxvY2sgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmNwQGFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChDb2RlX2Jsb2NrIF8gfCBIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgfCBPbCBfIHwgVWwgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IFRleHQgXCJcXG5cIiA6OiBfIHwgUGFyYWdyYXBoIF8gOjogXyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcIk9tZF9wYXJzZXIubWFrZV9wYXJhZ3JhcGhzXCJcbiAgICAgIHwgKE5MfEJyKSA6OiAoTkx8QnIpIDo6IHRsIC0+XG4gICAgICAgIGxldCB0bCA9IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoTkw6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgIHwgXyAtPiBsb29wIFtdIChQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bFxuICAgICAgICBlbmRcbiAgICAgIHwgWCh4KSBhcyBlIDo6IHRsIC0+XG4gICAgICAgICgqIElmIHRoZSBleHRlbnNpb24gcmV0dXJucyBhIGJsb2NrIGFzIGZpcnN0IGVsZW1lbnQsXG4gICAgICAgICAgIHRoZW4gY29uc2lkZXIgdGhlIGV4dGVuc2lvbiBhcyBhIGJsb2NrLiBIb3dldmVyXG4gICAgICAgICAgIGRvbid0IHRha2UgaXRzIGNvbnRlbnRzIGFzIGl0IGlzIHlldCwgdGhlIGNvbnRlbnRzXG4gICAgICAgICAgIG9mIHRoZSBleHRlbnNpb24gc2hhbGwgYmUgY29uc2lkZXJlZCBmaW5hbCBhcyBsYXRlXG4gICAgICAgICAgIGFzIHBvc3NpYmxlLiAqKVxuICAgICAgICBiZWdpbiBtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgICAgICAgIHwgU29tZSh0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8ICggSDEgX1xuICAgICAgICAgICAgICB8IEgyIF9cbiAgICAgICAgICAgICAgfCBIMyBfXG4gICAgICAgICAgICAgIHwgSDQgX1xuICAgICAgICAgICAgICB8IEg1ICBfXG4gICAgICAgICAgICAgIHwgSDYgIF9cbiAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggIF9cbiAgICAgICAgICAgICAgfCBVbCBfXG4gICAgICAgICAgICAgIHwgT2wgX1xuICAgICAgICAgICAgICB8IFVscCBfXG4gICAgICAgICAgICAgIHwgT2xwIF9cbiAgICAgICAgICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBIclxuICAgICAgICAgICAgICB8IEh0bWxfYmxvY2sgX1xuICAgICAgICAgICAgICB8IFJhd19ibG9jayBfXG4gICAgICAgICAgICAgIHwgQmxvY2txdW90ZSBfXG4gICAgICAgICAgICAgICkgOjogX1xuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3doaXRlX2NydW1icyBsID1cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBUZXh0IFwiIFwiIDo6IHRsXG4gICAgICAgIHwgTkw6OnRsXG4gICAgICAgIHwgQnI6OnRsXG4gICAgICAgICAgLT5cbiAgICAgICAgICBsb29wIHRsXG4gICAgICAgIHwgbCAtPiBsXG4gICAgICBpblxuICAgICAgTGlzdC5yZXYgKGxvb3AgKExpc3QucmV2IGwpKVxuICAgIGluXG4gICAgbGV0IHJlYyBjbGVhbl9wYXJhZ3JhcGhzID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHNcXG5cIjtcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFtdXG4gICAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiB0bFxuICAgICAgfCBQYXJhZ3JhcGgocCkgOjogdGwgLT5cbiAgICAgICAgUGFyYWdyYXBoKGNsZWFuX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZV9pbml0aWFsX25ld2xpbmVzXG4gICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmVfd2hpdGVfY3J1bWJzKG5vcm1hbGlzZV9tZCBwKSkpKVxuICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgxIHYgOjogdGwgLT4gSDEoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDIgdiA6OiB0bCAtPiBIMihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMyB2IDo6IHRsIC0+IEgzKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg0IHYgOjogdGwgLT4gSDQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDUgdiA6OiB0bCAtPiBINShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINiB2IDo6IHRsIC0+IEg2KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEVtcGggdiA6OiB0bCAtPiBFbXBoKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgQm9sZCB2IDo6IHRsIC0+IEJvbGQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVbCB2IDo6IHRsIC0+IFVsKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IE9sIHYgOjogdGwgLT4gT2woTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWxwIHYgOjogdGwgLT4gVWxwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbHAgdiA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJsb2NrcXVvdGUgdiA6OiB0bCAtPiBCbG9ja3F1b3RlKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVXJsKGhyZWYsdix0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsKGNsZWFuX3BhcmFncmFwaHMgdiksdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVGV4dCBfXG4gICAgICB8IENvZGUgX1xuICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgIHwgQnJcbiAgICAgIHwgSHJcbiAgICAgIHwgTkxcbiAgICAgIHwgUmVmIF9cbiAgICAgIHwgSW1nX3JlZiBfXG4gICAgICB8IFJhdyBfXG4gICAgICB8IFJhd19ibG9jayBfXG4gICAgICB8IEh0bWwgX1xuICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICAgIHwgSW1nIF9cbiAgICAgIHwgWCBfIGFzIHYgOjogdGwgLT4gdiA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgaW5cbiAgICBsZXQgciA9IGNsZWFuX3BhcmFncmFwaHMobG9vcCBbXSBbXSBtZClcbiAgICBpblxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHMgJVMgLS0+ICVTXFxuJSFcIlxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgbWQpXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCByKTtcbiAgICByXG5cblxuICAoKiogW2Fzc2VydF93ZWxsX2Zvcm1lZF0gaXMgYSBkZXZlbG9wZXIncyBmdW5jdGlvbiB0aGF0IGhlbHBzIHRvXG4gICAgICB0cmFjayBiYWRseSBjb25zdHJ1Y3RlZCB0b2tlbiBsaXN0cy4gIFRoaXMgZnVuY3Rpb24gaGFzIGFuXG4gICAgICBlZmZlY3Qgb25seSBpZiBbdHJhY2tmaXhdIGlzIFt0cnVlXS4gICopXG4gIGxldCBhc3NlcnRfd2VsbF9mb3JtZWQgKGw6dG9rIGxpc3QpIDogdW5pdCA9XG4gICAgaWYgdHJhY2tmaXggdGhlblxuICAgICAgbGV0IHJlYyBlcXVpdiBsMSBsMiA9IG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICAgICAgfCBUYWcgXzo6dGwxLCBUYWcgXzo6dGwyLT4gZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT4gZTEgPSBlMiAmJiBlcXVpdiB0bDEgdGwyXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGFzc2VydChlcXVpdiAoZml4IGwpIGwpO1xuICAgICAgKClcblxuICAoKiogR2VuZXJhdGUgZmFsbGJhY2sgZm9yIHJlZmVyZW5jZXMuICopXG4gIGxldCBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZXh0cmFjdF9mYWxsYmFja1xcbiUhXCI7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2N1XG4gICAgICB8IGU6OnRsIGFzIHIgLT5cbiAgICAgICAgaWYgciA9PSByZW1haW5zIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBlLCByZW1haW5zIHdpdGhcbiAgICAgICAgICB8IENicmFja2V0cyAwLCBDYnJhY2tldDo6ciB3aGVuIHRsID0gciAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBXb3JkIFwiXVwiIDo6IGFjY3UgaW5cbiAgICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgICB8IENicmFja2V0cyBuLCBDYnJhY2tldHMgbTo6ciB3aGVuIG0gKyAxID0gbiAmJiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsb29wIChlOjphY2N1KSB0bFxuICAgIGluXG4gICAgbGV0IGEgPSBsb29wIFtdIGwgaW5cbiAgICBvYmplY3RcbiAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBMLnN0cmluZ19vZl90b2tlbnMgYVxuICAgICAgbWV0aG9kIHRvX3QgPSBbVGV4dChMLnN0cmluZ19vZl90b2tlbnMgYSldXG4gICAgZW5kXG5cblxuICBsZXQgdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ0FMTDogT21kX3BhcnNlci51bmluZGVudF9yZXZcXG4lIVwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IGNsID0gZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcyh4K3krMik6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lcyB4OjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDApOjp0bClcblxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjooXG4gICAgICAgICAgKE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8pXG4gICAgICAgIHwgKChTdGFyfFBsdXN8TWludXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICAgIGFzIHRsKSBhcyBsIC0+XG4gICAgICAgIGlmIG4gPSBMLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBsb29wIChubDo6Y2xAYWNjdSkgW10gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICBsZXQgeCA9IEwubGVuZ3RoIHMgLSBuIGluXG4gICAgICAgIGxvb3AgKG5sOjpjbEBhY2N1KVxuICAgICAgICAgIChpZiB4ID4gMCB0aGVuIFtMLm1ha2Vfc3BhY2UgeF0gZWxzZSBbXSlcbiAgICAgICAgICB0bFxuICAgICAgfCBOZXdsaW5lcyhfKTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBOZXdsaW5lOjpfIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSAoZTo6Y2wpIHRsXG4gICAgICB8IFtdIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgW10sIHJpZ2h0IC0+IFtdLCByaWdodFxuICAgIHwgbCwgcmlnaHQgLT5cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgbCwgcmlnaHRcblxuICBsZXQgdW5pbmRlbnQgbiBsZXhlbWVzID1cbiAgICBsZXQgZnN0LCBzbmQgPSB1bmluZGVudF9yZXYgbiBsZXhlbWVzIGluXG4gICAgTGlzdC5yZXYgZnN0LCBzbmRcblxuICBsZXQgcmVjIGlzX2JsYW5rID0gZnVuY3Rpb25cbiAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+XG4gICAgICBpc19ibGFuayB0bFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBzZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3Rhcjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXJzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihTdGFycyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFycyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cbiAgbGV0IHNtX3VlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjooV29yZCBffE51bWJlciBfIGFzIHcpOjogdGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbdztzXSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG5cbiAgbGV0IHVlbXBoX29yX2JvbGQgbiBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgaWYgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSB0aGVuXG4gICAgICBnaF91ZW1waF9vcl9ib2xkIG4gbFxuICAgIGVsc2VcbiAgICAgIHNtX3VlbXBoX29yX2JvbGQgbiBsXG5cbiAgbGV0IGVhdF9ibGFuayA9XG4gICAgZWF0IChmdW5jdGlvbiB8U3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfIC0+IHRydWV8IF8gLT4gZmFsc2UpXG5cblxuICAoKiB1c2VkIGJ5IHRhZ19fbWF5YmVfaDEgYW5kIHRhZ19fbWF5YmVfaDIgKilcbiAgbGV0IHNldGV4dF90aXRsZSBtYWluX2xvb3AgKGw6bCkgOiAoT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0ICogbCkgb3B0aW9uID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGRldGVjdF9iYWxhbmNlZF9icXMgbiByIGwgPVxuICAgICAgKCogSWYgdGhlcmUncyBhIGJhbGFuY2VkIChjb21wbGV0ZSkgYmFja3F1b3RlLXN0YXJ0ZWQgY29kZSBibG9ja1xuICAgICAgICAgdGhlbiBpdCBzaG91bGQgYmUgXCJpZ25vcmVkXCIsIGVsc2UgaXQgbWVhbnMgdGhlIGxpbmUgdGhhdFxuICAgICAgICAgZm9sbG93cyBpcyBwYXJ0IG9mIGEgY29kZSBibG9jaywgc28gaXQncyBub3QgZGVmaW5pbmcgYVxuICAgICAgICAgc2V0ZXh0LXN0eWxlIHRpdGxlLiAqKVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuPSVkIHI9JVMgbD0lU1xcbiUhXCJcbiAgICAgICAgICBuIChMLnN0cmluZ19vZl90b2tlbnMgcikgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBOb25lXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIHg6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIDA6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChCYWNrcXVvdGUgYXMgYik6OnRsIHdoZW4gbiA9IDEgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCAoQmFja3F1b3RlcyB4IGFzIGIpOjp0bCB3aGVuIG4gPSB4KzIgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgciA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCBbXSlcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyB4Ojp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZGV0ZWN0X2JhbGFuY2VkX2JxcyAxIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IEJhY2txdW90ZXMoeCk6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgKHgrMikgW10gdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShibCx0bCkgLT4gbG9vcCAoYmxAcikgdGxcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICAgIHwgTmV3bGluZTo6KEVxdWFsfEVxdWFscyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT5cbiAgICAgICAgaWYgciA9IFtdIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTb21lKExpc3QucmV2IHIsIHRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuc2V0ZXh0X3RpdGxlIGlzIHdyb25nbHkgdXNlZCFcXG4lIVwiO1xuICAgICAgICBOb25lXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBpZiBtYXRjaCBsIHdpdGhcbiAgICAgIHwgTGVzc3RoYW46OldvcmQgXzo6XyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYWluX2xvb3AgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCAoSHRtbF9ibG9jayBfIHwgQ29kZV9ibG9jayBfIHwgUmF3X2Jsb2NrIF8pOjpfIC0+XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzdWx0ID0gbG9vcCBbXSBsIGluXG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBzZXRleHRfdGl0bGUgbD0lUyByZXN1bHQ9JVMsJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB4KVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB0bCk7XG4gICAgICByZXN1bHRcblxuICBsZXQgdGFnX19tYXliZV9oMSAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDFcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDEobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMSBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tYXliZV9oMiAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDJcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDIobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMiBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tZCBtZCA9ICgqIFttZF0gc2hvdWxkIGJlIGluIHJldmVyc2UgKilcbiAgICBUYWcoXCJ0YWdfX21kXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gU29tZShtZEByLCBbXSwgbClcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgICApXG5cbiAgKCogTGV0J3MgdGFnIHRoZSBsaW5lcyB0aGF0ICptaWdodCogYmUgdGl0bGVzIHVzaW5nIHNldGV4dC1zdHlsZS5cbiAgICAgXCJtaWdodFwiIGJlY2F1c2UgaWYgdGhleSBhcmUsIGZvciBpbnN0YW5jZSwgaW4gYSBjb2RlIHNlY3Rpb24sXG4gICAgIHRoZW4gdGhleSBhcmUgbm90IHRpdGxlcyBhdCBhbGwuICopXG4gIGxldCB0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgcGwgcmVzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gfCBbTmV3bGluZXxOZXdsaW5lcyBfXSAtPlxuICAgICAgICBwbEByZXNcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooRXF1YWx8RXF1YWxzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgxLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98RXF1YWx8RXF1YWxzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gxIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooTWludXN8TWludXNzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgyLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TWludXN8TWludXNzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gyIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgfCBOZXdsaW5lcyBfIGFzIGUxKTo6dGwgLT5cbiAgICAgICAgbG9vcCBbXSAoZTE6OnBsQHJlcykgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6cGwpIHJlcyB0bFxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgW10gW10gbGV4ZW1lcylcblxuXG4gIGxldCBocl9tIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lcyBffE5ld2xpbmUpOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBNaW51czo6dGwgLT5cbiAgICAgICAgbG9vcCAobisxKSB0bFxuICAgICAgfCBNaW51c3MgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyX3MgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIG4gPSBmdW5jdGlvblxuICAgICAgfCAoKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsKSB8IChbXSBhcyB0bCkgLT5cbiAgICAgICAgaWYgbiA+PSAzIHRoZW4gU29tZSB0bCBlbHNlIE5vbmVcbiAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgbG9vcCBuIHRsXG4gICAgICB8IFN0YXI6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgU3RhcnMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyIGwgPVxuICAgIG1hdGNoIGhyX20gbCB3aXRoXG4gICAgfCBOb25lIC0+IGhyX3MgbFxuICAgIHwgU29tZSBfIGFzIHRsIC0+IHRsXG5cbiAgKCoqIFtiY29kZV0gcGFyc2VzIGNvZGUgdGhhdCdzIGRlbGltaXRlZCBieSBiYWNrcXVvdGUocykgKilcbiAgbGV0IGJjb2RlID8oZGVmYXVsdF9sYW5nPWRlZmF1bHRfbGFuZykgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCBlLCB0bCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIC0+IGUsIHRsXG4gICAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLmJjb2RlIGlzIHdyb25nbHkgY2FsbGVkXCJcbiAgICBpblxuICAgIGxldCByZWMgY29kZV9ibG9jayBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBCYWNrcXVvdGUgdGhlblxuICAgICAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YWNjdSAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjb2RlX2Jsb2NrIChCYWNrcXVvdGU6OmFjY3UpIHRsXG4gICAgICB8IChCYWNrcXVvdGVzIG4gYXMgYik6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBiIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoYjo6YWNjdSkgdGxcbiAgICAgIHwgVGFnKF8sIF8pOjp0bCAtPlxuICAgICAgICBjb2RlX2Jsb2NrIGFjY3UgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIG1hdGNoIGNvZGVfYmxvY2sgW10gdGwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lKGNiLCBsKSAtPlxuICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIChOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBjYlxuICAgICAgJiYgKG1hdGNoIHAgd2l0aCBbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICYmIChtYXRjaCBlIHdpdGggQmFja3F1b3RlcyBuIHdoZW4gbiA+IDAgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICB0aGVuXG4gICAgICAgIG1hdGNoIGNiIHdpdGhcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0bCBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lcyAwIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyhOZXdsaW5lOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgbiA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgKE5ld2xpbmVzKG4tMSk6OnRsKSBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNsZWFuX2Jjb2RlIHMgPVxuICAgICAgICAgIGxldCByZWMgbG9vcDEgaSA9XG4gICAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICAgIHwgJyAnIC0+IGxvb3AxKGkrMSlcbiAgICAgICAgICAgICAgfCBfIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcDIgaSA9XG4gICAgICAgICAgICBpZiBpID0gLTEgdGhlbiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMihpLTEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpKzFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGxvb3AxIDAsIGxvb3AyIChTdHJpbmcubGVuZ3RoIHMgLSAxKSB3aXRoXG4gICAgICAgICAgfCAwLCBuIHdoZW4gbiA9IFN0cmluZy5sZW5ndGggcyAtIDEgLT4gc1xuICAgICAgICAgIHwgaSwgbiAtPiBTdHJpbmcuc3ViIHMgaSAobi1pKVxuICAgICAgICBpblxuICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyBjYiBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIGNsZWFuX2Jjb2RlICVTID0+ICVTXFxuJSFcIiBjb2RlIChjbGVhbl9iY29kZSBjb2RlKTtcbiAgICAgICAgU29tZShDb2RlKGRlZmF1bHRfbGFuZywgY2xlYW5fYmNvZGUgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG5cblxuICBleGNlcHRpb24gTkxfZXhjZXB0aW9uXG4gIGV4Y2VwdGlvbiBQcmVtYXR1cmVfZW5kaW5nXG5cbiAgKCogISFETyBOT1QgREVMRVRFIFRISVMhIVxuICAgICBUaGUgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyB0aGUgZ2VuZXJhdGVkIHBhcnQgdGhhdCBmb2xsb3dzIHJpZ2h0IGFmdGVyLlxuICAgICBMaXN0Lml0ZXIgKGZ1biAoYSxiLGMpIC0+XG4gICAgIHByaW50X2VuZGxpbmUgKFwibGV0IHJlYWRfdW50aWxfXCJeYV5cIiA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIG4gKFwiXmJeXCI6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFwiXG4gICAgICBeKGlmIGM8PlwiXCIgdGhlbiBcIlxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmNeXCI6OmFjY3UpIG4gKFwiXmNeXCI6OnRsKVxuICAgICAgfCBcIl5jXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgXCJeY15cInMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgXCIgZWxzZSBcIlwiKV5cbiAgICAgXCIgICAgfCBcIl5iXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBcIl5iXlwicyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwiOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoXCJeYl5cIjo6YWNjdSkgKG4tMSkgKFwiXmJeXCI6OnRsKVxuICAgICAgfCBcIl5iXlwicyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwicyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgXCJeYl5cIjo6YWNjdSAtPiBcIl5iXlwicygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgXCJeYl5cInMgeDo6YWNjdSAtPiBcIl5iXlwicyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFwiXmJeXCI6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFwiXmJeXCJzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcXFwiT21kX3BhcnNlci5yZWFkX3VudGlsX1wiXmFeXCIgJVMgYnE9JWIgbm9fbmw9JWJcXFxcbiUhXFxcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXCIpKVxuXG4gICAgIFsgXCJndFwiLCBcIkdyZWF0ZXJ0aGFuXCIsIFwiTGVzc3RoYW5cIjtcbiAgICAgXCJsdFwiLCBcIkxlc3N0aGFuXCIsIFwiXCI7XG4gICAgIFwiY3BhcmVudGhcIiwgXCJDcGFyZW50aGVzaXNcIiwgXCJPcGFyZW50aGVzaXNcIjtcbiAgICAgXCJvcGFyZW50aFwiLCBcIk9wYXJlbnRoZXNpc1wiLCBcIlwiO1xuICAgICBcImRxXCIsIFwiRG91YmxlcXVvdGVcIiwgXCJcIjtcbiAgICAgXCJxXCIsIFwiUXVvdGVcIiwgXCJcIjtcbiAgICAgXCJvYnJhY2tldFwiLCBcIk9icmFja2V0XCIsIFwiXCI7XG4gICAgIFwiY2JyYWNrZXRcIiwgXCJDYnJhY2tldFwiLCBcIk9icmFja2V0XCI7XG4gICAgIFwic3BhY2VcIiwgXCJTcGFjZVwiLCBcIlwiO1xuICAgICBdXG4gICopXG5cbiAgKCogYmVnaW4gZ2VuZXJhdGVkIHBhcnQgKilcblxubGV0IHJlYWRfdW50aWxfZ3QgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSBuIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgbiAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IExlc3N0aGFucyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBHcmVhdGVydGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgR3JlYXRlcnRoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoR3JlYXRlcnRoYW46OmFjY3UpIChuLTEpIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjphY2N1IC0+IEdyZWF0ZXJ0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIHg6OmFjY3UgLT4gR3JlYXRlcnRoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gR3JlYXRlcnRoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKEdyZWF0ZXJ0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9ndCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9sdCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgTGVzc3RoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIExlc3N0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIChuLTEpIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IExlc3N0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IExlc3N0aGFuOjphY2N1IC0+IExlc3N0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgTGVzc3RoYW5zIHg6OmFjY3UgLT4gTGVzc3RoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gTGVzc3RoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKExlc3N0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9sdCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jcGFyZW50aCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChDcGFyZW50aGVzaXM6OmFjY3UpIG4gKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoQ3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBDcGFyZW50aGVzaXM6OmFjY3UgLT4gQ3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IENwYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENwYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSBuIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXM6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIChuLTEpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9wYXJlbnRoZXNpc3MoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpczo6YWNjdSAtPiBPcGFyZW50aGVzaXNzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXNzIHg6OmFjY3UgLT4gT3BhcmVudGhlc2lzcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9wYXJlbnRoZXNpczo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoT3BhcmVudGhlc2lzcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vcGFyZW50aCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9kcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKERvdWJsZXF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIG4gKERvdWJsZXF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBEb3VibGVxdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIERvdWJsZXF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIChuLTEpIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjphY2N1IC0+IERvdWJsZXF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIHg6OmFjY3UgLT4gRG91YmxlcXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gRG91YmxlcXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKERvdWJsZXF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9kcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9xID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoUXVvdGUgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgbiAoUXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFF1b3RlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBRdW90ZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgUXVvdGU6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgKG4tMSkgKFF1b3RlOjp0bClcbiAgICAgIHwgUXVvdGVzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3Rlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgUXVvdGU6OmFjY3UgLT4gUXVvdGVzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBRdW90ZXMgeDo6YWNjdSAtPiBRdW90ZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBRdW90ZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoUXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9xICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9vYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIG4gKE9icmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9icmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIChuLTEpIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9icmFja2V0OjphY2N1IC0+IE9icmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT2JyYWNrZXRzIHg6OmFjY3UgLT4gT2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gT2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9icmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIG4gKENicmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IENicmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDYnJhY2tldHMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ2JyYWNrZXQ6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChDYnJhY2tldDo6YWNjdSkgKG4tMSkgKENicmFja2V0Ojp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0cyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ2JyYWNrZXQ6OmFjY3UgLT4gQ2JyYWNrZXRzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBDYnJhY2tldHMgeDo6YWNjdSAtPiBDYnJhY2tldHMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDYnJhY2tldDo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoQ2JyYWNrZXRzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NicmFja2V0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX3NwYWNlID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoU3BhY2UgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgbiAoU3BhY2U6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFNwYWNlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBTcGFjZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgU3BhY2U6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgKG4tMSkgKFNwYWNlOjp0bClcbiAgICAgIHwgU3BhY2VzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgU3BhY2U6OmFjY3UgLT4gU3BhY2VzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBTcGFjZXMgeDo6YWNjdSAtPiBTcGFjZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBTcGFjZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoU3BhY2VzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3NwYWNlICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG4gICgqIC9lbmQgZ2VuZXJhdGVkIHBhcnQgKilcblxuICBsZXQgcmVhZF91bnRpbF9uZXdsaW5lIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgKChCYWNrc2xhc2ggYXMgYSkpIDo6ICgoTmV3bGluZSBhcyBiKSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYiA6OiBhIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZSA6OiBCYWNrc2xhc2ggOjogYWNjdSkgbiAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgKChCYWNrc2xhc2hzIDAgYXMgZSkpIDo6IHRsIC0+IGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgfCAoKEJhY2tzbGFzaHMgeCBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgKHggbW9kIDIpID0gMFxuICAgICAgICB0aGVuIGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgICBlbHNlIGxvb3AgKChCYWNrc2xhc2hzICh4IC0gMSkpIDo6IGFjY3UpIG4gKEJhY2tzbGFzaCA6OiB0bClcbiAgICAgIHwgKChOZXdsaW5lIGFzIGUpKSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuICgoTGlzdC5yZXYgYWNjdSksIHRsKSBlbHNlIGxvb3AgKGUgOjogYWNjdSkgKG4gLSAxKSB0bFxuICAgICAgfCBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gKChMaXN0LnJldiBhY2N1KSwgKE5ld2xpbmUgOjogdGwpKVxuICAgICAgICBlbHNlIGxvb3AgKE5ld2xpbmUgOjogYWNjdSkgKG4gLSAxKSAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgTmV3bGluZXMgbiA6OiB0bCAtPiAoKExpc3QucmV2IGFjY3UpLCAoKE5ld2xpbmVzIChuIC0gMSkpIDo6IHRsKSlcbiAgICAgIHwgZSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluIGxvb3AgW10gMCBsXG5cbiAgKCogSDEsIEgyLCBIMywgLi4uICopXG4gIGxldCByZWFkX3RpdGxlIChtYWluX2xvb3A6bWFpbl9sb29wKSBuIHIgX3ByZXZpb3VzIGxleGVtZXMgPVxuICAgIGxldCB0aXRsZSwgcmVzdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFja3NsYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNoOjp0bCB3aGVuIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuLTEpOjphY2N1KSB0bFxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaHMoaCk6OnRsIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgICAgICAgfCBbXVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxOZXdsaW5lcyBfKTo6X1xuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNocyhoKTo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuKTo6YWNjdSlcbiAgICAgICAgICAgICAgICAoKGlmIGggPSAwIHRoZW4gSGFzaCBlbHNlIEhhc2hzKGgtMSkpOjp0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNocyhoKTo6QmFja3NsYXNocyhuKTo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChIYXNofEhhc2hzIF8pIDo6IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoW10gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChIYXNofEhhc2hzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKFtdIGFzIGwpIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgbFxuICAgICAgICB8IFtIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IEhhc2h8SGFzaHMgX11cbiAgICAgICAgfCBbKFNwYWNlfFNwYWNlcyBfKTsgKEhhc2h8SGFzaHMgXyk7IChTcGFjZXxTcGFjZXMgXyldIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgW11cbiAgICAgICAgfCB4Ojp0bCAtPlxuICAgICAgICAgIGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBsZXhlbWVzXG4gICAgaW5cbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDEgLT4gU29tZShIMSB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCAyIC0+IFNvbWUoSDIgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMyAtPiBTb21lKEgzIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDQgLT4gU29tZShINCB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA1IC0+IFNvbWUoSDUgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNiAtPiBTb21lKEg2IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHAgbCA9XG4gICAgbWF0Y2ggZXh0ZW5zaW9ucyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBfIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBmI3BhcnNlcl9leHRlbnNpb24gciBwIGwpXG4gICAgICAgICAgfCBTb21lKG5yLCBucCwgbmwpIGFzIGUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBtYXRjaCBmI3BhcnNlcl9leHRlbnNpb24gbnIgbnAgbmwgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGVcbiAgICAgICAgICAgICAgIHwgU29tZSBfIGFzIGsgLT4gaylcbiAgICAgICAgKVxuICAgICAgICBOb25lXG4gICAgICAgIGV4dGVuc2lvbnNcblxuICAoKiBibG9ja3F1b3RlcyAqKVxuICBsZXQgZW1haWxzdHlsZV9xdW90aW5nIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBibG9jayBjbCA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6KE5ld2xpbmU6Ol8gYXMgdGwpIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgICgqIG11bHRpIHBhcmFncmFwaCBibG9ja3F1b3RlcyB3aXRoIGVtcHR5IGxpbmVzICopXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZV0gdGxcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZXMobi0xKV0gdGxcblxuICAgICAgfCAoTmV3bGluZXMgXzo6XyBhcyBsKSB8IChbXSBhcyBsKSAtPiBmaXgoTGlzdC5yZXYoY2xAYmxvY2spKSwgbFxuICAgICAgfCBlOjp0bCAtPiBsb29wIGJsb2NrIChlOjpjbCkgdGxcbiAgICBpblxuICAgIG1hdGNoIGxvb3AgW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6YmxvY2ssIHRsIC0+XG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyAlU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGJsb2NrKTtcbiAgICAgIFNvbWUoKEJsb2NrcXVvdGUobWFpbl9sb29wIFtdIFtdIGJsb2NrKTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgfCBfIC0+XG4gICAgICBOb25lXG5cblxuICAoKiBtYXliZSBhIHJlZmVyZW5jZSAqKVxuICBsZXQgbWF5YmVfcmVmZXJlbmNlIChtYWluX2xvb3A6bWFpbl9sb29wKSByYyByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2Uga25vdyBpdCdzIG5vdCBhIGxpbmsgYWx0aG91Z2hcbiAgICAgICBpdCBzdGFydGVkIHdpdGggYSAnWycgKilcbiAgICAoKiBTbyBpdCBjb3VsZCBiZSBhIHJlZmVyZW5jZSBvciBhIGxpbmsgZGVmaW5pdGlvbi4gKilcbiAgICBsZXQgcmVjIG1heWJlX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGJsYW5rLCByZW1haW5zID0gcmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGFyZSBubyB1bndhbnRlZCBjaGFyYWN0ZXJzIGJldHdlZW4gQ0IgYW5kIE9CLiAqKVxuICAgICAgaWYgZWF0IChsZXQgZmxhZyA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICAgIGZ1bmN0aW9uICgqIGFsbG93IG9ubHkgYSBzcGFjZSwgbXVsdGlwbGUgc3BhY2VzLCBvciBhIG5ld2xpbmUgKilcbiAgICAgICAgICAgICAgfCBOZXdsaW5lIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgLT4gIWZsYWcgJiYgKGZsYWcgOj0gZmFsc2U7IHRydWUpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgYmxhbmsgPD4gW10gdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nICgqIDwtLSBub3QgYSByZWd1bGFyIHJlZmVyZW5jZSAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHJlbWFpbnMgd2l0aFxuICAgICAgICB8IFtdLCByZW1haW5zIC0+XG4gICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQgaW4gKCogaW1wbGljaXQgYW5jaG9yICopXG4gICAgICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICAgICAgfCBpZCwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIEwuc3RyaW5nX29mX3Rva2VucyBpZCxcbiAgICAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0LCBmYWxsYmFjaykpOjpyKSxcbiAgICAgICAgICAgICAgIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX25vbnJlZ3VsYXJfcmVmIGwgPVxuICAgICAgbGV0IHRleHQsIHJlbWFpbnMgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGlmICh0cnkgaWdub3JlKHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgdGV4dCk7IHRydWVcbiAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZzsgKCogPC0tIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICBpblxuICAgIGxldCByZWMgbWF5YmVfZGVmIGwgPVxuICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgIHwgXywgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgfCBpZCwgKENvbG9uOjooU3BhY2V8U3BhY2VzIF8pOjpyZW1haW5zKVxuICAgICAgfCBpZCwgKENvbG9uOjpyZW1haW5zKSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pOjogXyBhcyBsIC0+IFNwbGl0KFtdLCBsKVxuICAgICAgICAgICAgICAgICAgfCBlOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSkpXG4gICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZShbXSwgXykgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgIHwgU29tZSh1cmwsIHJlbWFpbnMpIC0+XG4gICAgICAgICAgICBsZXQgdGl0bGUsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIGVhdFxuICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIHwgKFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXykgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcygwKTo6dGwgLT4gW10sIHRsXG4gICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiByZWFkX3VudGlsX3EgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OnRsLT4gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IGwgLT4gW10sIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCB1cmwgPiAyICYmIHVybC5bMF0gPSAnPCdcbiAgICAgICAgICAgICAgICAgJiYgdXJsLltTdHJpbmcubGVuZ3RoIHVybCAtIDFdID0gJz4nIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHVybCAxIChTdHJpbmcubGVuZ3RoIHVybCAtIDIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB1cmxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYyNhZGRfcmVmIChMLnN0cmluZ19vZl90b2tlbnMgaWQpIChMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUpIHVybDtcbiAgICAgICAgICAgIFNvbWUociwgW05ld2xpbmVdLCByZW1haW5zKVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIG1heWJlX3JlZiBsXG4gICAgd2l0aCB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgIHRyeVxuICAgICAgICBtYXliZV9kZWYgbFxuICAgICAgd2l0aFxuICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1heWJlX25vbnJlZ3VsYXJfcmVmIGxcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgICBOb25lXG5cblxuICAoKiogbWF5YmUgYSBsaW5rICopXG4gIGxldCBtYXliZV9saW5rIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGlua1xcblwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWFkX3VybCBuYW1lIGwgPVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rPnJlYWRfdXJsICVTXFxuXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIHRyeVxuICAgICAgICBsZXQgbF9jcCwgcl9jcCA9XG4gICAgICAgICAgcmVhZF91bnRpbF9jcGFyZW50aCB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IGxfY3A9JVMgcl9jcD0lU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfY3ApXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2NwKTtcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGxfZHEsIHJfZHEgPVxuICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2RxPSVTIHJfZHE9JVNcXG4lIVwiXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHEpXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHJfZHEpO1xuICAgICAgICAgICgqIG1heWJlIHRpdGxlICopXG4gICAgICAgICAgaWYgTGlzdC5sZW5ndGggbF9jcCA+IExpc3QubGVuZ3RoIGxfZHEgdGhlbiAoKiB0aXRsZSAqKVxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgICAgIG1hdGNoIExpc3QucmV2IGxfZHEgd2l0aFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IHRsKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gcmVhZF91bnRpbF9kcSB+bm9fbmw6ZmFsc2UgfmJxOmZhbHNlIHJfZHEgaW5cbiAgICAgICAgICAgICAgbGV0IHJlc3QgPSBzbmQocmVhZF91bnRpbF9jcGFyZW50aCByZXN0KSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgU29tZShVcmwodXJsLCBuYW1lLCB0aXRsZSkgOjogciwgW0NwYXJlbnRoZXNpc10sIHJlc3QpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlICgqIG5vIHRpdGxlICopXG4gICAgICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPiAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IG5vIHRpdGxlXFxuJSFcIjtcbiAgICAgICAgICAgIGxldCB1cmwgPSBtYXRjaCBMaXN0LnJldiBsX2NwIHdpdGhcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGxcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IExpc3QucmV2IHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBsX2NwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gW10sIHJfY3AgaW5cbiAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgIGVuZFxuICAgICAgd2l0aCBOTF9leGNlcHRpb24gfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIGxldCByZWFkX25hbWUgbCA9XG4gICAgICAoKiBpdCdzIG5vdCByZWFsbHkgdGhlIFwibmFtZVwiIG9mIGEgVVJMIGJ1dCB3aGF0XG4gICAgICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5uZXIgSFRNTCBvZiBhbiBIVE1MICdBJyB0YWcgKilcbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz4gcmVhZF9uYW1lXFxuXCI7XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKGVhdF9ibGFuayB0bClcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzcyAwOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3Mgbjo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXNzKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBOb25lXG4gICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT4gTm9uZVxuICAgIGluXG4gICAgcmVhZF9uYW1lIGxcblxuXG4gIGxldCBoYXNfcGFyYWdyYXBocyBsID1cbiAgICAoKiBIYXMgYXQgbGVhc3QgMiBjb25zZWN1dGl2ZSBuZXdsaW5lcy4gKilcbiAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gTmV3bGluZXMgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbFxuXG4gIGxldCBwYXJzZV9saXN0IChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBwYXJzZV9saXN0IHI9KCVzKSBwPSglcykgbD0oJXMpXFxuJSFcIlxuICAgICAgICBcIlwiICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCAoTGlzdC5yZXYgcikpICopXG4gICAgICAgIFwiXCIgKCogKGRlc3RyaW5nX29mX3RsIHApICopXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB+bGltaXQ6NDAgbCk7XG4gICAgZW5kO1xuICAgIGxldCBtb2R1bGUgVU8gPSBzdHJ1Y3QgdHlwZSBvcmRlcmVkID0gTyB8IFUgZW5kIGluXG4gICAgbGV0IG9wZW4gVU8gaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdDogbD0oJXMpXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgbGV0IGVuZF9vZl9pdGVtIChpbmRlbnQ6aW50KSBsIDogdG9rIHNwbGl0X2FjdGlvbiAgPSBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgU3BsaXQoW10sW10pXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKChTcGFjZXMgbikgOjogR3JlYXRlcnRoYW4gOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRsXG4gICAgICAgICAgICAgICAgICAgICAgIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID0gaW5kZW50KzQgdGhlbiAoKiBibG9ja3F1b3RlICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKG4rMikgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzggdGhlbiAoKiBjb2RlIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKFNwYWNlcyBuIDo6IHRsIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDApOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzQgdGhlbiAoKiBuZXcgcGFyYWdyYXBoIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IChOZXdsaW5lcyBfKSA6OiBfIC0+ICgqIG4gPiAwICopXG4gICAgICAgICgqIEVuZCBvZiBpdGVtLCBzdG9wICopXG4gICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lIDo6XG4gICAgICAgIChcbiAgICAgICAgICAoKFNwYWNlfFNwYWNlcyBfKSA6OiAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoKFNwYWNlfFNwYWNlcyBfKSA6OiBOdW1iZXIgXyA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfKVxuICAgICAgICB8ICgoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgICBhcyB0bCkgLT5cbiAgICAgICAgU3BsaXQoW05ld2xpbmVdLCB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBleGFjdGx5IDIgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHJld3JpdGUgdGhlIGhlYWQgb2YgdGhlIGxleGluZyBzdHJlYW0uICopXG4gICAgICAgIENvbnRpbnVlX3dpdGgoW10sIE5ld2xpbmVzIDAgOjogdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IChOZXdsaW5lcyBfKSA6OiBfIC0+XG4gICAgICAgICgqIEEgbGluZSB3aXRoIHNwYWNlcyBzaG91bGRuJ3QgaW50ZXJmZXJlIGhlcmUsXG4gICAgICAgICAgIHdoaWNoIGlzIGFib3V0IGF0IGxlYXN0IDMgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHN0b3AuICopXG4gICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2VzIF8gYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VzXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBTcGFjZXMgXzo6dGwgLT4gU29tZShyLHAsU3BhY2U6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VcIixcbiAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCA9XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBDb250aW51ZVxuICAgIGluXG4gICAgbGV0IHJldl90b190IGwgPVxuICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgICAoKiBOZXdsaW5lcyBhdCB0aGUgZW5kIG9mIGl0ZW1zIGhhdmUgbm8gbWVhbmluZyAoZXhjZXB0IHRvIGVuZCB0aGVcbiAgICAgICAgIGl0ZW0gd2hpY2ggaXMgZXhwcmVzc2VkIGJ5IHRoZSBjb25zdHJ1Y3RvciBhbHJlYWR5KS4gKilcbiAgICAgIGxldCBsID0gbWF0Y2ggbCB3aXRoIChOZXdsaW5lIHwgTmV3bGluZXMgXykgOjogdGwgLT4gdGwgfCBfIC0+IGwgaW5cbiAgICAgIG1haW5fbG9vcCBbXSBbTmV3bGluZV0gKExpc3QucmV2IGwpXG4gICAgaW5cbiAgICBsZXQgYWRkIChzdWJsaXN0OmVsZW1lbnQpIGl0ZW1zID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGFkZFxcbiUhXCI7XG4gICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoTyxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoTyxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgICAgfCAoVSxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoVSxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgIGluXG4gICAgbGV0IG1ha2VfdXAgfnAgaXRlbXMgOiBPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWtlX3VwIHA9JWJcXG4lIVwiIHA7XG4gICAgICBsZXQgaXRlbXMgPSBMaXN0LnJldiBpdGVtcyBpblxuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCAoVSxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIFVscChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBVbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IChPLF8saXRlbSk6Ol8gLT5cbiAgICAgICAgaWYgcCB0aGVuXG4gICAgICAgICAgT2xwKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9sKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgIHwgW10gLT5cbiAgICAgICAgZmFpbHdpdGggXCJtYWtlX3VwIGNhbGxlZCB3aXRoIFtdXCIgKCogYXNzZXJ0IGZhbHNlICopXG4gICAgaW5cbiAgICBsZXQgcmVjIGxpc3RfaXRlbXMgfnAgaW5kZW50cyBpdGVtcyBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGxpc3RfaXRlbXM6IHA9JWIgbD0oJXMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAoKiBubyBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAoKiBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgICgqIG5ldyB1bm9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMCkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoMjM0NikgbmV3X2l0ZW09JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIG5ld19pdGVtKTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoVSxbMF0sIHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMDo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBfOjpfIC0+XG4gICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2U6OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKFUsWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2VzIG46OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIHNwYWNlc1tdIGw9KCVTKVxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChVLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSkgOjogaXRlbXMgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGlmIGkgPCBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoKG4rMik6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwobisyKTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldXG4gICAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiBuZXcgb3JkZXJlZCBpdGVtcyAqKVxuICAgICAgfCBOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIG5ld19pdGVtO1xuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMF0gKChPLFswXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKE8sWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMTo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGkgPiAxIHRoZW5cbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICAgICAgZWxzZSAoKiBpIDwgMSA6IG5ldyBzdWIgbGlzdCopXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoMTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLDE6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXSByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7ICgqIGHvZS4uLiBsaXN0ZXMgbWFsIGZvcm3pZXMgPyEgKilcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbbisyXSAoKE8sW24rMl0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlcyglZDo6Xykgbj0lZCBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICBpIG4gKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgaWYgaSA9IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcylcbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnBcbiAgICAgICAgICAgICAgICAgICAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKE8sKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6OlN0YXI6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgLT5cbiAgICAgICAgbGlzdF9pdGVtcyB+cDp0cnVlIGluZGVudHMgaXRlbXMgbFxuICAgICAgfCBfIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgbGV0IHJlYyBzdHJpbmdfb2ZfaXRlbXMgaXRlbXMgPVxuICAgICAgICAgICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICAgICAgICB8IChPLGluZGVudDo6XyxpdGVtKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgc3ByaW50ZiBcIihPLGk9JWQsJVMpXCIgKGluZGVudCkgKE9tZF9iYWNrZW5kLmh0bWxfb2ZfbWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaXRlbXMgdGxcbiAgICAgICAgICAgICAgfCAoVSxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoVSxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBcIih3ZWlyZClcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBOQUxJIHBhcnNlX2xpc3Q6IGw9KCVTKSBpdGVtcz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKSAoc3RyaW5nX29mX2l0ZW1zIGl0ZW1zKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgKCogbm90IGEgbGlzdCBpdGVtICopXG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgIGluXG4gICAgbWF0Y2ggbGlzdF9pdGVtcyB+cDpmYWxzZSBbXSBbXSBsIHdpdGhcbiAgICB8IHJwLCBsIC0+XG4gICAgICBycDo6ciwgW05ld2xpbmVdLCBsXG5cblxuXG4gIGxldCBpY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogaW5kZW50ZWQgY29kZTogcmV0dXJucyAocixwLGwpIHdoZXJlIHIgaXMgdGhlIHJlc3VsdCwgcCBpcyB0aGVcbiAgICAgICBsYXN0IHRoaW5nIHJlYWQsIGwgaXMgdGhlIHJlbWFpbnMgKilcbiAgICBsZXQgZHVtbXlfdGFnID0gVGFnKFwiZHVtbXlfdGFnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gPSBmdW4gciBwIGwgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSBpblxuICAgIGxldCBhY2N1ID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIGxldCByZWMgbG9vcCBzIHRsID0gbWF0Y2ggcywgdGwgd2l0aFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAoU3BhY2V8U3BhY2VzKDB8MSkpOjpfIC0+XG4gICAgICAgICgqIDEsIDIgb3IgMyBzcGFjZXMuICopXG4gICAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2Ugd2hhdCBmb2xsb3dzIGlzbid0LiAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgU3BhY2VzKG4pOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgKCogQXQgbGVhc3QgNCBzcGFjZXMsIGl0J3Mgc3RpbGwgY29kZS4gKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaWYgbiA+PSA0IHRoZW4gU3BhY2VzKG4tNCkgZWxzZSBpZiBuID0gMyB0aGVuIFNwYWNlIGVsc2UgZHVtbXlfdGFnKVxuICAgICAgICAgIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIChub3Rfc3BhY2VzOjpfIGFzIHRsKSAtPiAoKiBzdG9wICopXG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSkgOjogciwgW3BdLCB0bFxuICAgICAgKCogLT4gUmV0dXJuIHdoYXQncyBiZWVuIGZvdW5kIGFzIGNvZGUgYmVjYXVzZSBpdCdzIG5vIG1vcmUgY29kZS4gKilcbiAgICAgIHwgcCwgZTo6dGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgICgqIGh0bWwgZW50aXRpZXMgYXJlIHRvIGJlIGNvbnZlcnRlZCBsYXRlciEgKilcbiAgICAgICAgbG9vcCBlIHRsXG4gICAgICB8IHAsIFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpOjpyLCBbcF0sIFtdXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFNwYWNlcyBuOjp0bCAtPlxuICAgICAgaWYgbiA+PSA0IHRoZW5cbiAgICAgICAgU29tZShsb29wIChTcGFjZXMobi00KSkgdGwpXG4gICAgICBlbHNlIGlmIG4gPSAzIHRoZW5cbiAgICAgICAgU29tZShsb29wIFNwYWNlIHRsKVxuICAgICAgZWxzZSBTb21lKGxvb3AgZHVtbXlfdGFnIHRsKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4gICgqIFJldHVybnMgWyhyLHAsbCldIHdoZXJlIFtyXSBpcyB0aGUgcmVzdWx0LCBbcF0gaXMgdGhlIGxhc3QgdGhpbmdcbiAgICAgcmVhZCwgYW5kIFtsXSBpcyB3aGF0IHJlbWFpbnMuICopXG4gIGxldCBzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUgbWFpbl9sb29wIGRlZmF1bHRfbGFuZyBuIHIgcHJldmlvdXMgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA8PSAzIHRoZW4gKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgICAoKiB1bm9yZGVyZWQgbGlzdCAqKVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIChMLm1ha2Vfc3BhY2Ugbjo6bGV4ZW1lcylcbiAgICAgIHwgKE51bWJlciBfKTo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAoKiBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IFtdXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+ICgqIGJsYW5rIGxpbmUsIHNraXAgc3BhY2VzICopXG4gICAgICAgIHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8ICBfOjpfIC0+XG4gICAgICAgIFRleHQgKFwiIFwiKTo6ciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICApXG4gICAgZWxzZSAoICgqIG4+PTQsIGJsYW5rIGxpbmUgb3IgaW5kZW50ZWQgY29kZSAqKVxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IFtdIHwgKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyAgLT4gciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICAgIHwgXyAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGljb2RlIH5kZWZhdWx0X2xhbmcgciBbTmV3bGluZV0gKEwubWFrZV9zcGFjZSBuIDo6IGxleGVtZXMpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiByLHAsbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5pY29kZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICApXG5cbiAgbGV0IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgPyhodG1sPWZhbHNlKSBuIHIgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA9IDEgdGhlblxuICAgICAgKFRleHQgXCIgXCI6OnIpLCBbU3BhY2VdLCBsZXhlbWVzXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgTmV3bGluZSA6OiB0bCB3aGVuIG5vdCBodG1sIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIihPTUQpIDIgb3IgbW9yZSBzcGFjZXMgYmVmb3JlIGEgbmV3bGluZSwgZWF0IHRoZSBuZXdsaW5lXFxuJSFcIjtcbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIHRsXG4gICAgICB8IE5ld2xpbmVzIGsgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCAxIG5ld2xpbmVcIjtcbiAgICAgICAgbGV0IG5ld2xpbmVzID0gaWYgayA9IDAgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMoay0xKSBpblxuICAgICAgICBCcjo6ciwgW1NwYWNlcyhuLTIpXSwgbmV3bGluZXMgOjogdGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKG4+MSk7XG4gICAgICAgIChUZXh0IChTdHJpbmcubWFrZSBuICcgJyk6OnIpLCBbU3BhY2VzKG4tMildLCBsZXhlbWVzXG4gICAgKVxuXG5cbiAgbGV0IG1heWJlX2F1dG9lbWFpbCByIHAgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBMZXNzdGhhbjo6dGwgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZnNwbGl0IH5leGNsOihmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIH5mOihmdW5jdGlvbiBBdDo6dGwgLT4gU3BsaXQoW10sdGwpIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgIHRsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lKGxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF98U3BhY2V8U3BhY2VzIF8pIDo6IF8tPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uIEdyZWF0ZXJ0aGFuOjp0bCAtPiBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwOjp0bCAtPiBTcGxpdChbXSxHcmVhdGVydGhhbjo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbjo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgcmlnaHRcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUoZG9tYWluLCB0bCkgLT5cbiAgICAgICAgICAgIGxldCBlbWFpbCA9IEwuc3RyaW5nX29mX3Rva2VucyBsZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICBeIFwiQFwiIF4gTC5zdHJpbmdfb2ZfdG9rZW5zIGRvbWFpbiBpblxuICAgICAgICAgICAgU29tZShVcmwoXCJtYWlsdG86XCJeZW1haWwsW1RleHQgZW1haWxdLFwiXCIpOjpyLFtHcmVhdGVydGhhbl0sdGwpXG4gICAgICBlbmRcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLm1heWJlX2F1dG9lbWFpbDogd3JvbmcgdXNlIG9mIHRoZSBmdW5jdGlvbi5cIlxuXG4gIGxldCBpc19oZXggcyA9XG4gICAgU3RyaW5nLmxlbmd0aCBzID4gMVxuICAgICYmIChzLlswXSA9ICdYJyB8fCBzLlswXSA9ICd4JylcbiAgICAmJiAobGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgaSA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgfHxcbiAgICAgICAgIChtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSlcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIGluIGxvb3AgMSlcblxuICBsZXQgbWVkaWF0eXBldGV4dG9tZCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICAgIGxldCByZWMgbG9vcCBiIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICAgIGxvb3AgdHJ1ZSByIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgICBpblxuICAgIGxvb3AgZmFsc2UgW10gbFxuXG4gIGV4Y2VwdGlvbiBPcnBoYW5fY2xvc2luZyBvZiBzdHJpbmcgKiBsICogbFxuXG4gIGxldCByZWMgbWFpbl9pbXBsX3JldiB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYlxcbiUhXCIgaHRtbDsgKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsX3JldiBodG1sPSViIHI9JXMgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgaHRtbFxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgcHJldmlvdXMpXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBsZXhlbWVzKTtcbiAgICBtYXRjaCBwcmV2aW91cywgbGV4ZW1lcyB3aXRoXG4gICAgKCogbm8gbW9yZSB0byBwcm9jZXNzICopXG4gICAgfCBfLCBbXSAtPlxuICAgICAgKCogcmV0dXJuIHRoZSByZXN1bHQgKC8hXFwgaXQgaGFzIHRvIGJlIHJldmVyc2VkIGFzIHNvbWUgcG9pbnQpICopXG4gICAgICByXG5cbiAgICAoKiBUYWc6IHRhZyBzeXN0ZW0gJFxcY3VwJCBoaWdoLXByaW9yaXR5IGV4dGVuc2lvbiBtZWNoYW5pc20gKilcbiAgICB8IF8sIFRhZyhfbmFtZSwgZSkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGUjcGFyc2VyX2V4dGVuc2lvbiByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgdGxcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCBjb21tZW50cyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjooRXhjbGFtYXRpb246Ok1pbnVzcyAwOjpjIGFzIHRsKSAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgKE1pbnVzcyBfIGFzIG0pOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsIC0+XG4gICAgICAgICAgICBTcGxpdChbZzttXSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmc3BsaXQgfmY6ZiBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSAoY29tbWVudHMsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IEh0bWxfY29tbWVudChMLnN0cmluZ19vZl90b2tlbnMgY29tbWVudHMpIDo6IHIgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW05ld2xpbmVdIG5ld190bFxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nIC8gYmxvY2txdW90ZSAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgR3JlYXRlcnRoYW46OihTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCByIHByZXZpb3VzIChOZXdsaW5lOjpsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcblxuICAgICgqIGVtYWlsLXN0eWxlIHF1b3RpbmcsIHdpdGggbGluZXMgc3RhcnRpbmcgd2l0aCBzcGFjZXMhICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoU3BhY2V8U3BhY2VzKDB8MSkgYXMgcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgICgqIEl0J3MgMSwgMiBvciAzIHNwYWNlcywgbm90IG1vcmUgYmVjYXVzZSBpdCB3b3VsZG4ndCBtZWFuXG4gICAgICAgICBxdW90aW5nIGFueW1vcmUgYnV0IGNvZGUuICopXG4gICAgICBiZWdpblxuICAgICAgICBsZXQgbmV3X3IsIHAsIHJlc3QgPVxuICAgICAgICAgIGxldCBmb28sIHJlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKEwubGVuZ3RoIHMpIChOZXdsaW5lOjpsZXhlbWVzKSB3aXRoXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpmb28sIHJlc3QgLT4gZm9vLCByZXN0XG4gICAgICAgICAgICB8IHJlcyAtPiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBlbWFpbHN0eWxlX3F1b3RpbmcgbWFpbl9sb29wIFtdIHByZXZpb3VzIChOZXdsaW5lOjpmb28pXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShuZXdfciwgcCwgW10pIC0+IG5ld19yLCBwLCByZXN0XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKG5ld19yQHIpIFtOZXdsaW5lXSByZXN0XG4gICAgICBlbmRcblxuICAgICgqIG1pbnVzICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLFxuICAgICAgKE1pbnVzfE1pbnVzcyBfIGFzIHQpIDo6ICgoU3BhY2V8U3BhY2VzIF8pOjpfIGFzIHRsKSAtPlxuICAgICAgKCogbWF5YmUgaHIgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgc28gaXQgY291bGQgYmUgYSBsaXN0ICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IE1pbnVzIC0+ICgqIGl0J3MgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgICAgICAgfCBfIC0+ICgqIG5vdCBhIGxpc3QgKilcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE1pbnVzfE1pbnVzcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaHJfbSBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgqIG5vIGhyLCBhbmQgaXQncyBub3QgYSBsaXN0IGVpdGhlclxuICAgICAgICAgICAgICAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBmb2xsb3dlZCBieSBzcGFjZXMgKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuXG4gICAgKCogaGFzaGVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKSA6OiB0dGwgYXMgdGwpXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAodHRsIGFzIHRsKSAtPiAoKiBoYXNoIHRpdGxlcyAqKVxuICAgICAgaWYgbiA8PSA0IHRoZW5cbiAgICAgICAgbWF0Y2ggcmVhZF90aXRsZSBtYWluX2xvb3AgKG4rMikgciBwcmV2aW91cyB0dGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgSGFzaCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IHRsXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogdGwgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGJlZ2luIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIDEgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnJlYWRfdGl0bGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcbiAgICB8IF8sIChIYXNofEhhc2hzIF8gYXMgdCkgOjogdGwgLT4gKCogaGFzaCAtLSBubyB0aXRsZSAqKVxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYWZ0ZXIgYSBuZXdsaW5lOiBjb3VsZCBsZWFkIHRvIGhyICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoKFNwYWNlfFNwYWNlcyBfKSBhcyBzcCkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyIHRsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogTm8gW0hyXSwgYnV0IG1heWJlIFtVbF0sIFtPbF0sIGNvZGUsLi4uICopXG4gICAgICAgICAgbGV0IG4gPSBMLmxlbmd0aCBzcCBpblxuICAgICAgICAgIGxldCByLCBwLCBsID1cbiAgICAgICAgICAgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIHRsIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IFNvbWUgdGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIHRsXG4gICAgICBlbmRcblxuICAgICgqIHNwYWNlcyBhbnl3aGVyZSAqKVxuICAgIHwgXywgKChTcGFjZXxTcGFjZXMgXykgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIHRvbyBtYW55IGNhc2VzIHRvIGJlIGhhbmRsZWQgaGVyZSAqKVxuICAgICAgbGV0IG4gPSBMLmxlbmd0aCB0IGluXG4gICAgICBsZXQgciwgcCwgbCA9IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgfmh0bWwgbiByIHRsIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG5cbiAgICAoKiB1bmRlcnNjb3JlcyAqKVxuICAgIHwgXywgKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogb25lIFwib3JwaGFuXCIgdW5kZXJzY29yZSwgb3IgZW1waCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcbiAgICB8IF8sIChVbmRlcnNjb3JlcygoMHwxKSBhcyBuKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogMiBvciAzIFwib3JwaGFuXCIgdW5kZXJzY29yZXMsIG9yIGVtcGgvYm9sZCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgKG4rMikgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW4gKCogMSB1bmRlcnNjb3JlICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICBlbHNlICgqIDIgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgKVxuXG4gICAgKCogZW51bWVyYXRlZCBsaXN0cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE51bWJlciBfKSA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bCAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBwbHVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFBsdXMgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcblxuICAgICgqIHN0YXJzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXIgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICAoKiBtYXliZSBociBvciBuZXcgbGlzdCAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG4gICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgU3RhcnMgXyA6OiBfIHdoZW4gaHJfcyBsZXhlbWVzIDw+IE5vbmUgLT5cbiAgICAgICgqIGhyICopXG4gICAgICAobWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICB8IFNvbWUgbCAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICApXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICBlbmRcbiAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IF8sIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHN0YXIsIG9yIGVtcGggLy8gY2FuJ3QgYmUgaHIgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG4gICAgfCBfLCAoU3RhcnMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHN0YXJzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKFtCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCldKSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgICgqIGJhY2tzbGFzaGVzICopXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE5ld2xpbmUgYXMgdCkgOjogdGwgLT4gKCogXFxcXG4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT4gKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdIChOZXdsaW5lIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFxcblxcblxcblxcbi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW0JhY2tzbGFzaDsgTmV3bGluZV1cbiAgICAgICAgKE5ld2xpbmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChCYWNrcXVvdGUgYXMgdCkgOjogdGwgLT4gKCogXFxgICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyAwIDo6IHRsIC0+ICgqIFxcYGBgYC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEJhY2txdW90ZV0gKEJhY2txdW90ZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBCYWNrcXVvdGVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdXG4gICAgICAgIChCYWNrcXVvdGVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIFxcKiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIDAgOjogdGwgLT4gKCogXFwqKioqLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW0JhY2tzbGFzaDsgU3Rhcl0gKFN0YXIgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogU3RhcnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFycyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoVW5kZXJzY29yZSBhcyB0KSA6OiB0bCAtPiAoKiBcXF8gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBVbmRlcnNjb3JlcyAwIDo6IHRsIC0+ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV0gKFVuZGVyc2NvcmUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV1cbiAgICAgICAgKFVuZGVyc2NvcmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2UgYXMgdCkgOjogdGwgLT4gKCogXFx7ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNlcyAwIDo6IHRsIC0+ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFjZXMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcWyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyB0KSA6OiB0bCAtPiAoKiBcXCggKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPcGFyZW50aGVzaXNzIDAgOjogdGwgLT4gKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdIChPcGFyZW50aGVzaXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdXG4gICAgICAgIChPcGFyZW50aGVzaXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwpICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoUGx1cyBhcyB0KSA6OiB0bCAtPiAoKiBcXCsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBQbHVzcyAwIDo6IHRsIC0+ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChNaW51cyBhcyB0KSA6OiB0bCAtPiAoKiBcXC0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBNaW51c3MgMCA6OiB0bCAtPiAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChEb3QgYXMgdCkgOjogdGwgLT4gKCogXFwuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyAwIDo6IHRsIC0+ICgqIFxcLi4uLi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFtCYWNrc2xhc2g7IERvdF0gKERvdCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBEb3RzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3RzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChFeGNsYW1hdGlvbiBhcyB0KSA6OiB0bCAtPiAoKiBcXCEgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBFeGNsYW1hdGlvbnMgMCA6OiB0bCAtPiAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXSAoRXhjbGFtYXRpb24gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXVxuICAgICAgICAoRXhjbGFtYXRpb25zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChIYXNoIGFzIHQpIDo6IHRsIC0+ICgqIFxcIyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEhhc2hzIDAgOjogdGwgLT4gKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dIChHcmVhdGVydGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dXG4gICAgICAgIChHcmVhdGVydGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IExlc3N0aGFucyAwIDo6IHRsIC0+ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dIChMZXNzdGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dXG4gICAgICAgIChMZXNzdGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCAoQmFja3NsYXNocyAwIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIlxcXFxcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCAoQmFja3NsYXNocyBuIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBpZiBuIG1vZCAyID0gMCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIHRsXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIChCYWNrc2xhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2g6OltdIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtdIFtdXG4gICAgfCBfLCBCYWNrc2xhc2g6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtCYWNrc2xhc2hdIHRsXG5cbiAgICAoKiA8ICopXG4gICAgfCBfLCAoTGVzc3RoYW58TGVzc3RoYW5zIF8gYXMgdClcbiAgICAgICAgIDo6IChXb3JkKFwiaHR0cFwifFwiaHR0cHNcInxcImZ0cFwifFwiZnRwc1wifFwic3NoXCJ8XCJhZnBcInxcImltYXBcIikgYXMgdylcbiAgICAgICAgIDo6IENvbG9uOjpTbGFzaHMobik6OnRsIC0+XG4gICAgICAoKiBcInNlbWktYXV0b21hdGljXCIgVVJMcyAqKVxuICAgICAgbGV0IHJlYyByZWFkX3VybCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6dGwgLT5cbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgR3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW4gdykgXiBcIjovL1wiXG4gICAgICAgICAgICBeIChpZiBuID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcubWFrZSAobi0xKSAnLycpXG4gICAgICAgICAgICBeIEwuc3RyaW5nX29mX3Rva2VucyAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgICBpbiBTb21lKHVybCwgdGwpXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICByZWFkX3VybCAoeDo6YWNjdSkgdGxcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3VybCBbXSB0bCB3aXRoXG4gICAgICAgIHwgU29tZSh1cmwsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IFxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IExlc3N0aGFucyAwIC0+IFRleHQgXCI8XCIgOjogclxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICc8JykgOjogclxuICAgICAgICAgICAgfCBfIC0+IHJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFVybCh1cmwsW1RleHQgdXJsXSxcIlwiKTo6cikgW10gbmV3X3RsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cblxuICAgICgqIFdvcmQodykgKilcbiAgICB8IF8sIFdvcmQgdzo6dGwgLT5cbiAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHcgOjogcikgW1dvcmQgd10gdGxcblxuICAgICgqIG5ld2xpbmUgYXQgdGhlIGVuZCAqKVxuICAgIHwgXywgW05ld2xpbmVdIC0+XG4gICAgICBOTDo6clxuXG4gICAgKCogbmFtZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChXb3JkIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKSBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHcgaHRtbGNvZGVzX3NldCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogZGlnaXQtY29kZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChIYXNoOjpOdW1iZXIgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHcgPD0gNCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogbWF5YmUgaGV4IGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6V29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgIGFzIHRsMikgd2hlbiBpc19oZXggdyAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuXG4gICAgKCogQW1wZXJzYW5kICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW0FtcGVyc2FuZF0gdGxcblxuICAgICgqIDIgQW1wZXJzYW5kcyAqKVxuICAgIHwgXywgQW1wZXJzYW5kcygwKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kOjp0bClcblxuICAgICgqIFNldmVyYWwgQW1wZXJzYW5kcyAobW9yZSB0aGFuIDIpICopXG4gICAgfCBfLCBBbXBlcnNhbmRzKG4pOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIChBbXBlcnNhbmRzKG4tMSk6OnRsKVxuXG4gICAgKCogYmFja3F1b3RlcyAqKVxuICAgIHwgXywgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBiY29kZSB+ZGVmYXVsdF9sYW5nIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBIVE1MICopXG4gICAgKCogPGJyLz4gYW5kIDxoci8+IHdpdGggb3Igd2l0aG91dCBzcGFjZShzKSAqKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OihTcGFjZXxTcGFjZXMgXyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZyB3aXRoXG4gICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl1cbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMobi0xKTo6dGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dIHRsXG4gICAgICBlbmRcblxuICAgICgqIGF3YWl0ZWQgb3JwaGFuIGh0bWwgY2xvc2luZyB0YWcgKilcbiAgICB8IF8sIExlc3N0aGFuOjpTbGFzaDo6V29yZCh3KTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bFxuICAgICAgd2hlbiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSAtPlxuICAgICAgcmFpc2UgKE9ycGhhbl9jbG9zaW5nKHcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW46OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSk6OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0bCkpKVxuXG4gICAgKCogYmxvY2sgaHRtbCAqKVxuICAgIHwgKFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX3xUYWcoXCJIVE1MQkxPQ0tcIiwgXyldKSxcbiAgICAgIChMZXNzdGhhbiBhcyB0KVxuICAgICAgOjooKFdvcmQodGFnbmFtZXRvcCkgYXMgdylcbiAgICAgICAgIDo6KChTcGFjZXxTcGFjZXMgX3xHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXylcbiAgICAgICAgICAgIDo6XyBhcyBodG1sX3N0dWZmKSBhcyB0bHgpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBbV29yZCBcIlwiXSBsZXhlbWVzXG4gICAgICBlbHNlIGlmIG5vdCAoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KSB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bHhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHJlYWRfaHRtbCgpID1cbiAgICAgICAgICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgQXdhaXRpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgICAgIHwgT3BlbiBvZiBzdHJpbmdcbiAgICAgICAgICAgIHR5cGUgaW50ZXJtID1cbiAgICAgICAgICAgICAgfCBIVE1MIG9mIHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogaW50ZXJtIGxpc3RcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgTUQgb2YgT21kX3JlcHJlc2VudGF0aW9uLnRcbiAgICAgICAgICAgIGxldCByZWMgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsID1cbiAgICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0ID8oaHRtbD1odG1sKSBsID1cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCBodG1sIGxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIGxldCBmX2EgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGEgaW5cbiAgICAgICAgICAgICAgICAgIGlmIGZfYSAhPSBhIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICBmX2EsXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFyYWdyYXBoc1xuICAgICAgICAgICAgICAgICAgICAgICAgIChtZF9vZl9pbnRlcm1fbGlzdCB+aHRtbDpmYWxzZSAoTGlzdC5yZXYgYykpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBIdG1sX2Jsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgKHQsIGZfYSwgbWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6dHJ1ZSAoTGlzdC5yZXYgYykpXG4gICAgICAgICAgICAgICAgICAgIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kQG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6RlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQxOjpSVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0XG4gICAgICAgICAgICAgICAgICAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgKExpc3QucmV2IHQyKSk6OnRsKVxuICAgICAgICAgICAgICB8IEZUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlModDFAdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBpZiBodG1sIHRoZW5cbiAgICAgICAgICAgICAgICAgIFJhdyhMLnN0cmluZ19vZl90b2tlbnMgdCkgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYWluX2xvb3Agfmh0bWwgW10gW1dvcmQgXCJcIl0gdFxuICAgICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKExpc3QucmV2IHQpIDo6IHRsKVxuICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0IGwgPSBtZF9vZl9pbnRlcm1fbGlzdCB0cnVlIGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7Qi9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7Qi9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgIHwgVC5SVE9LRU5TIHIgOjogYm9keSAtPiBULlJUT0tFTlMoeDo6cik6OmJvZHlcbiAgICAgICAgICAgIHwgXyAtPiBULlJUT0tFTlNbeF0gOjogYm9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzMzMyBCSFRNTCBsb29wIGJvZHk9JVMgdGFnc3RhdHVzPSVTICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDAxIEJIVE1MIE5vdCBlbm91Z2ggdG8gcmVhZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpIDo6IHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQxOSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgU2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5KSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyBvcGVuZXIgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzUgQkhUTUwgcHJvcGVybHkgY2xvc2luZyAlU1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlJUT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzODMgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBpZiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKE9ycGhhbl9jbG9zaW5nKHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW46OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhbnMobi0xKTo6dG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSkpXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgM1xcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OihXb3JkKHRhZ25hbWUpIGFzIHdvcmQpOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIGJsaW5kX2h0bWxcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCA8V29yZCglcykuLi5cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCkgOjogX1xuICAgICAgICAgICAgICAgICAgd2hlbiB0IDw+IHRhZ25hbWUgJiYgU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgYXR0cnMgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDk2IEJIVE1MIHRhZyAlUyBidXQgYXR0cnMgPD4gW11cXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQyMSBCSFRNTCB0YWcgJVMsIHRhZ3N0YXR1cz0lUywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzPVtdLCB0b2tlbnM9JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWUgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQzMyBCSFRNTCB0YWdzdGF0dXM9JVMgdG9rZW5zPSVTXFxuJSFcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKSBhdHRycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICBtZWRpYXR5cGV0ZXh0b21kIDo9IHQgOjogIW1lZGlhdHlwZXRleHRvbWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUobWFpbl9pbXBsX3JldiB+aHRtbCBbXSBbXSB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUyNCBCSFRNTCBjbG9zaW5nIHRhZyBub3QgZm91bmQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gJVNcXG4lIVwiIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2FyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNsb3NpbmcgdGFnIGAlcycgbm90IGZvdW5kIGZvciB0ZXh0L29tZCB6b25lLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSBMaXN0LnRsICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGggT3JwaGFuX2Nsb3NpbmcodGFnbmFtZSwgZGVsaW1pdGVyLCBhZnRlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGYgciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExlc3N0aGFuOjpfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTGVzc3RoYW46OnRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuOjpyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFucyhuLTEpOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbCA9PSBkZWxpbWl0ZXIgfHwgbCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgdGwgPT0gZGVsaW1pdGVyIHx8IHRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgKGU6OnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGYgW10gdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU1MiBCSFRNTCB0b2tlbnM9JXMgZGVsaW1pdGVyPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyPSVzIGJlZm9yZT0lcyAodGFnbmFtZT10KT0lYlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgZGVsaW1pdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGFmdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWduYW1lID0gdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggIW1lZGlhdHlwZXRleHRvbWQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiB0bCAtPiBtZWRpYXR5cGV0ZXh0b21kIDo9IHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGFnbmFtZSA9IHQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuSFRNTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuTURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5faW1wbCB+aHRtbCBbXSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnX3NldGV4dCBtYWluX2xvb3AgYmVmb3JlKSldKV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM1NzEgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUxOSBCSFRNTCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShib2R5LCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5OCBCSFRNTCBGb3VuZCBhIGNsb3NpbmcgdGFnICVzXFxuJSFcIiB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0LCBhdHRycywgYm9keSldIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoW1QuSFRNTCh0LCBhdHRycywgYm9keSldLCBsKVxuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSAzNTkxIEJIVE1MIFNvbWUgYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSBHcmVhdGVydGhhbiBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU0MiBCSFRNTCB0YWdzdGF0dXM9W11cXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgKCogbWF5YmUgYXR0cmlidXRlICopXG4gICAgICAgICAgICB8IChDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpOjp0b2tlbnNcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICA6OihDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpXG4gICAgICAgICAgICAgIDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEF0dHJpYnV0ZV92YWx1ZSA9IHN0cnVjdFxuICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gRW1wdHkgb2YgbmFtZSB8IE5hbWVkIG9mIG5hbWUgfCBWb2lkXG4gICAgICAgICAgICAgICAgICBhbmQgbmFtZSA9IHN0cmluZ1xuICAgICAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgICAgIGxldCBvcGVuIEF0dHJpYnV0ZV92YWx1ZSBpblxuICAgICAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyaWJ1dGUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSkgOjogdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IChHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXykgOjogXyBhcyB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgRXF1YWwgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIE5hbWVkKEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBDb2xvbiB8IENvbG9ucyBfIHwgVW5kZXJzY29yZSB8IFVuZGVyc2NvcmVzIF8gfCBXb3JkIF9cbiAgICAgICAgICAgICAgICAgIHwgTnVtYmVyIF8gfCBNaW51cyB8IE1pbnVzcyBfIHwgRG90IHwgRG90cyBfIGFzIHQgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfYXR0cmlidXRlICh0OjphY2N1KSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgdG9rZW5zIC0+IFZvaWQsIHRva2Vuc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggZXh0cmFjdF9hdHRyaWJ1dGUgW3RdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFbXB0eSBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICgqIGF0dHJpYnV0ZSB3aXRoIG5vIGV4cGxpY2l0IHZhbHVlICopXG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjI4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjEgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY2OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjU0IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5MCBCSFRNTCBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjk4IEJIVE1MIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjIgQkhUTUwgJXM9JVMgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IHg6OnRva2VucyBhcyBkZ3RzXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjAgQkhUTUwgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBkZ3RzKTtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzczNyBCSFRNTCBzcGFjZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIGxvb3AgYm9keSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZXMgXyBhcyB4KSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzODI3IEJIVE1MIG5ld2xpbmVzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICB3YXJuIFwidGhlcmUgYXJlIGVtcHR5IGxpbmVzIGluIHdoYXQgbWF5IGJlIGFuIEhUTUwgYmxvY2tcIjtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzQyIEJIVE1MIGZhbGxiYWNrIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnM9JXMgYW5kIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFwiTm9uZVwiXG4gICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBcIkF3YWl0aW5nXCJcbiAgICAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT4gXCJPcGVuIChjYW4ndCBiZSlcIik7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gcmVhZCBhbiBvcGVuIEhUTUwgdGFnICglcyksIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgfCBULk9wZW4gdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIGZpbmQgdGhlIGNsb3NpbmcgSFRNTCB0YWcgZm9yICVzLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtUYWcoXCJIVE1MQkxPQ0tcIiwgZW1wdHlfZXh0ZW5zaW9uKV0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgYmxvY2sgSFRNTC4gKilcblxuXG4gICAgKCogaW5saW5lIEhUTUwgKilcbiAgICB8IF8sXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgKHN0cmljdF9odG1sICYmIG5vdChTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCkpXG4gICAgICB8fCBub3QoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KVxuICAgICAgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICB8IEhUTUwodCwgYSwgYyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgSHRtbCh0LCBhLCBtZF9vZl9pbnRlcm1fbGlzdChMaXN0LnJldiBjKSk6Om1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgTUQgbWQ6OnRsIC0+IG1kIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBUT0tFTlMgdDE6OlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGwgfmh0bWwgW10gW1dvcmQgXCJcIl0gKHQpXG4gICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgbGV0IHN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzID1cbiAgICAgICAgICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgICAgICAgICAgIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgT3BlbiB0IC0+IGJwcmludGYgYiBcIntJL09wZW4gJXN9XCIgdFxuICAgICAgICAgICAgICAgICAgfCBBd2FpdGluZyB0IC0+IGJwcmludGYgYiBcIntJL0F3YWl0aW5nICVzfVwiIHRcbiAgICAgICAgICAgICAgICApIHRhZ3N0YXR1cztcbiAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICBsZXQgYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5ID1cbiAgICAgICAgICAgIFQuVE9LRU5TW3hdOjpib2R5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgKGJvZHk6VC5pbnRlcm0gbGlzdCkgYXR0cnMgdGFnc3RhdHVzIHRva2VucyA9XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKCogZXByaW50ZiBcIihPTUQpIDM3MTggbG9vcCB0YWdzdGF0dXM9KCVzKSBib2R5PSglcykgJXNcXG4lIVwiICopXG4gICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgKCogKE9tZF9iYWNrZW5kLnNleHByX29mX21kKFQubWRfb2ZfaW50ZXJtX2xpc3QgYm9keSkpICopXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KTo6XyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTm90IGVub3VnaCB0byByZWFkIGZvciBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyhuLTEpKVxuICAgICAgICAgICAgICAgICAgICAgICBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgKExlc3N0aGFuOjp0b2tlbnMpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogc2VsZi1jbG9zaW5nIHRhZ3MgKilcbiAgICAgICAgICAgIHwgU2xhc2g6OkdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcodGFnbmFtZSk6OnRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbR3JlYXRlcnRoYW47U2xhc2hdOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogbXVsdGlwbGUgbmV3bGluZXMgYXJlIG5vdCB0byBiZSBzZWVuIGluIGlubGluZSBIVE1MICopXG4gICAgICAgICAgICB8IE5ld2xpbmVzIF8gOjogXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBNdWx0aXBsZSBsaW5lcyBpbiBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgXyAtPiB3YXJuIFwibXVsdGlwbGUgbmV3bGluZXMgaW4gaW5saW5lIEhUTUxcIjsgTm9uZSlcbiAgICAgICAgICAgICgqIG1heWJlIGNvZGUgKilcbiAgICAgICAgICAgIHwgKEJhY2txdW90ZSB8IEJhY2txdW90ZXMgXyBhcyBiKTo6dGwgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBubyBjb2RlXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBub25lXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IGxldCdzIHRyeVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBiY29kZSBbXSBbU3BhY2VdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChDb2RlIF86Ol8pIGFzIGMpLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULk1EIGM6OmJvZHkpIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBmYWlsZWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2JdOjpib2R5KSBbXSB0YWdzdGF0dXMgdGxcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6U2xhc2g6OihXb3JkKHRhZ25hbWUpIGFzIHcpXG4gICAgICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiB0ID0gdGFnbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDEzNiBwcm9wZXJseSBjbG9zaW5nICVTIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNTQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nIG5vdGhpbmcgd2l0aCAlUyAzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgKHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBpbmxpbmVfaHRtbHRhZ3Nfc2V0KVxuICAgICAgICAgICAgICAgIHx8IChub3Qgc3RyaWN0X2h0bWwgJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgPCVzLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc5NiB0YWcgJXMsIGF0dHJzPVtdXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gKFQuQXdhaXRpbmcgdGFnbmFtZTo6dGFnc3RhdHVzKSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t3b3JkO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShiLHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NSBlbmQgb2Ygb3BlbmluZyB0YWcgdG9rZW5zPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyk7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIGFzIHRzIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBsb29wIGJvZHkgW10gKFQuT3BlbiB0Ojp0YWdzdGF0dXMpIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTg2IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZShiLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIDQxOTIgRm91bmQgYSBjbG9zaW5nIHRhZyAlcyB0cz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vdGU6IHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cnNdIGhlcmUgYmVjYXVzZSBpbiB3ZSBoYXZlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWdzdGF0dXNdIG1hdGNoZXMgW1QuT3BlbiBfIDo6IF9dIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgZmlsdGVyIHRoYXQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSBjYXJlIG9mIGF0dHJzIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5IVE1MKHQsIGF0dHJzLCBiKTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIFR1cm5zIG91dCBhbiBgPmAgaXNuJ3QgZm9yIGFuIG9wZW5pbmcgdGFnXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuXTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQyMDIgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgbm9uIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDM5NTcpICVzPSVTICVzXFxuJSFcIiBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0JhY2tzbGFzaDt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjp4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAmJiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2hzKG4pO3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG5cbiAgICAgICAgICAgIHwgeDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0MTYxKSBnZW5lcmFsICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zICh4Ojp0b2tlbnMpKTtcbiAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmUgfCBTcGFjZSB8IFNwYWNlcyBfKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAoNDI4OSkgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0Mjk0KSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrIHdpdGggdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGh0bWwsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtHcmVhdGVydGhhbl0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgaW5saW5lIEhUTUwuICopXG5cbiAgICAoKiA8IDogZW1haWxzICopXG4gICAgfCBfLCAoTGVzc3RoYW4gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9hdXRvZW1haWwgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBsaW5lIGJyZWFrcyAqKVxuICAgIHwgXywgTmV3bGluZTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKE5MOjpyKSBbTmV3bGluZV0gdGxcbiAgICB8IF8sIE5ld2xpbmVzIF86OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6Tkw6OnIpIFtOZXdsaW5lXSB0bFxuXG4gICAgKCogWyAqKVxuICAgIHwgXywgKE9icmFja2V0IGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfbGluayBtYWluX2xvb3AgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIG1hdGNoIG1heWJlX3JlZmVyZW5jZSBtYWluX2xvb3AgcmMgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KVxuICAgICAgICAgOjpPYnJhY2tldDo6Q2JyYWNrZXQ6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICgqIGltYWdlIGluc2VydGlvbiB3aXRoIG5vIFwiYWx0XCIgKilcbiAgICAgICgqICFbXSgvcGF0aC90by9pbWcuanBnKSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgbGV0IGIsIHRsID0gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgdGwgaW5cbiAgICAgICAgICAgKCogbmV3IGxpbmVzIHRoZXJlIGFyZSBhbGxvd2VkICopXG4gICAgICAgICAgIGxldCByICgqIHVwZGF0ZWQgcmVzdWx0ICopID0gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICB0cnkgU29tZShyZWFkX3VudGlsX3NwYWNlIH5icTpmYWxzZSB+bm9fbmw6dHJ1ZSBiKVxuICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBOb25lXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHVybCwgdGxzKSAtPlxuICAgICAgICAgICAgIGxldCB0aXRsZSwgc2hvdWxkX2JlX2VtcHR5X2xpc3QgPVxuICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kIChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRscykpIGluXG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoXCJcIiwgdXJsLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyBiIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgXCJcIikgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBpbWcgcmVmICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb24gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICgqIHJlZiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW11bcmVmXSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGlkLCB0bCA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOnRydWUgdGwgaW5cbiAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHRsIGxleGVtZXMgaW5cbiAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIFwiXCIsIGZhbGxiYWNrKSA6OiByKSBbQ2JyYWNrZXRdIHRsXG4gICAgICAgd2l0aCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KTo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBcImFsdFwiICopXG4gICAgICAoKiAhW0FsdCB0ZXh0XSgvcGF0aC90by9pbWcuanBnIFwiT3B0aW9uYWwgdGl0bGVcIikgKilcbiAgICAgICh0cnlcbiAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgdGwgd2l0aFxuICAgICAgICAgfCBhbHQsIE9wYXJlbnRoZXNpczo6bnRsIC0+XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGhfdGl0bGUsIHJlc3QgPVxuICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCwgdGl0bGUgPVxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9zcGFjZSB+YnE6dHJ1ZSB+bm9fbmw6dHJ1ZSBwYXRoX3RpdGxlXG4gICAgICAgICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IHBhdGhfdGl0bGUsIFtdIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgbm90aGluZyA9XG4gICAgICAgICAgICAgICAgaWYgdGl0bGUgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kKHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGl0bGUpKVxuICAgICAgICAgICAgICAgIGVsc2UgW10sIFtdIGluXG4gICAgICAgICAgICAgIGlmIG5vdGhpbmcgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvbjsgKCogY2F1Z2h0IHJpZ2h0IGJlbG93ICopXG4gICAgICAgICAgICAgIGxldCByID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyAwIC0+IFRleHQgXCIhXCIgOjogclxuICAgICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnIScpIDo6IHJcbiAgICAgICAgICAgICAgICB8IF8gLT4gciBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCA9IEwuc3RyaW5nX29mX3Rva2VucyBwYXRoIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoYWx0LCBwYXRoLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOTF9leGNlcHRpb25cbiAgICAgICAgICAgICgqIGlmIE5MX2V4Y2VwdGlvbiB3YXMgcmFpc2VkLCB0aGVuIGZhbGwgYmFjayB0byBcInRleHRcIiAqKVxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgICA6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXyk6OkNicmFja2V0OjpudGwgLT5cbiAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgbnRsIGxleGVtZXMgaW5cbiAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKSBbQ2JyYWNrZXRdIG50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF98V29yZCBffE51bWJlciBfKTo6X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgbnRsKSAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCB3aXRoXG4gICAgICAgICAgICAgIHwgW10sIHJlc3QgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgICAgICB8IGlkLCByZXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVzdCBsZXhlbWVzIGluXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgYWx0LCBmYWxsYmFjayk6OnIpXG4gICAgICAgICAgICAgICAgICBbQ2JyYWNrZXRdXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgKVxuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgfCBfLFxuICAgICAgKEF0fEJhcnxDYXJldHxDYnJhY2V8Q29sb258Q29tbWF8Q3BhcmVudGhlc2lzfENicmFja2V0fERvbGxhclxuICAgICAgfERvdHxEb3VibGVxdW90ZXxFeGNsYW1hdGlvbnxFcXVhbHxNaW51c3xPYnJhY2V8T3BhcmVudGhlc2lzXG4gICAgICB8UGVyY2VudHxQbHVzfFF1ZXN0aW9ufFF1b3RlfFNlbWljb2xvbnxTbGFzaHxUYWJ8VGlsZGVcbiAgICAgIHxHcmVhdGVydGhhbiBhcyB0KTo6dGxcbiAgICAgIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcbiAgICB8IF8sIChOdW1iZXIgXyAgYXMgdCk6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICB8IF8sIChBdHMgXyB8IEJhcnMgXyB8IENhcmV0cyBfIHwgQ2JyYWNlcyBfIHwgQ2JyYWNrZXRzIF8gfCBDb2xvbnMgX1xuICAgICAgICAgfCBDb21tYXMgXyB8IENwYXJlbnRoZXNpc3MgXyB8IERvbGxhcnMgXyB8IERvdHMgXyB8IERvdWJsZXF1b3RlcyBfXG4gICAgICAgICB8IEVxdWFscyBfIHwgRXhjbGFtYXRpb25zIF8gfCBHcmVhdGVydGhhbnMgXyB8IExlc3N0aGFucyBfXG4gICAgICAgICB8IE1pbnVzcyBfIHwgT2JyYWNlcyBfIHwgT2JyYWNrZXRzIF8gfCBPcGFyZW50aGVzaXNzIF9cbiAgICAgICAgIHwgUGVyY2VudHMgXyB8IFBsdXNzIF8gfCBRdWVzdGlvbnMgXyB8IFF1b3RlcyBfIHwgU2VtaWNvbG9ucyBfXG4gICAgICAgICB8IFNsYXNocyBfIHwgU3RhcnMgXyB8IFRhYnMgXyB8IFRpbGRlcyBfIHwgVW5kZXJzY29yZXMgXyBhcyB0aylcbiAgICAgICAgIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgdGswLCB0a3MgPSBMLnNwbGl0X2ZpcnN0IHRrIGluXG4gICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0azAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHRleHQgOjogcikgW3RrMF0gKHRrcyA6OiB0bClcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cblxuICBhbmQgbWFpbl9pbXBsIH5odG1sIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgKCogaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsIGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgTGlzdC5yZXYgKG1haW5fbG9vcF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzKVxuXG4gIGFuZCBtYWluX2xvb3AgPyhodG1sPWZhbHNlKSAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICAgbWFpbl9pbXBsIH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG4gIGFuZCBtYWluX2xvb3BfcmV2ID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzXG5cblxuICBsZXQgbWFpbl9wYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX2xvb3AgW10gW10gKHRhZ19zZXRleHQgbWFpbl9sb29wIGxleGVtZXMpXG5cbiAgbGV0IHBhcnNlIGxleGVtZXMgPVxuICAgIG1haW5fcGFyc2UgbGV4ZW1lc1xuXG5lbmRcblxubGV0IGRlZmF1bHRfcGFyc2UgPyhleHRlbnNpb25zPVtdKSA/KGRlZmF1bHRfbGFuZz1cIlwiKSBsZXhlbWVzID1cbiAgbGV0IGUgPSBleHRlbnNpb25zIGFuZCBkID0gZGVmYXVsdF9sYW5nIGluXG4gIGxldCBtb2R1bGUgRSA9IERlZmF1bHRfZW52KFVuaXQpIGluXG4gIGxldCBtb2R1bGUgTSA9XG4gICAgTWFrZShzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBlXG4gICAgICBsZXQgZGVmYXVsdF9sYW5nID0gZFxuICAgIGVuZClcbiAgaW5cbiAgTS5tYWluX3BhcnNlIGxleGVtZXNcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogWW91IHNob3VsZCBlaXRoZXIgdXNlIHRoaXMgbW9kdWxlIG9yIE9tZF9sZXhlciwgbm90IGJvdGguXG4gICAgVGhpcyBtb2R1bGUgaW5jbHVkZXMgT21kX2xleGVyLlxuKilcblxuaW5jbHVkZSBPbWRfbGV4ZXJcblxubGV0IGxleF9mcm9tX2luY2hhbm5lbCBpYyA9XG4gICgqIE1haW50ZW5hbmNlLWVhc2luZXNzLWRyaXZlbiBpbXBsZW1lbnRhdGlvbi4gKilcbiAgbGV0IGljX2NvbnRlbnQgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgKGlucHV0X2NoYXIgaWMpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgbGV4IGljX2NvbnRlbnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIE9NRDogTWFya2Rvd24gdG9vbCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2U6ICBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBodG1sID0gaHRtbF9ub2RlIGxpc3RcblxuYW5kIGh0bWxfbm9kZSA9XG4gIHwgTm9kZSBvZiBub2RlbmFtZSAqIGF0dHJpYnV0ZXMgKiBodG1sXG4gIHwgRGF0YSBvZiBzdHJpbmdcbiAgfCBSYXdkYXRhIG9mIHN0cmluZ1xuICB8IENvbW1lbnQgb2Ygc3RyaW5nXG5cbmFuZCBub2RlbmFtZSA9IHN0cmluZ1xuXG5hbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmFuZCBhdHRyaWJ1dGUgPSBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG5cbmxldCB0b19zdHJpbmcgaHRtbCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCBwcCBmID0gUHJpbnRmLmJwcmludGYgYiBmIGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBOb2RlKG5vZGVuYW1lLCBhdHRyaWJ1dGVzLCBodG1sKSAtPlxuICAgICAgcHAgXCI8JXNcIiBub2RlbmFtZTtcbiAgICAgIHBwYSBhdHRyaWJ1dGVzO1xuICAgICAgcHAgXCI+XCI7XG4gICAgICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICAgICAgcHAgXCI8LyVzPlwiIG5vZGVuYW1lXG4gICAgfCBEYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IFJhd2RhdGEgcyAtPiBwcCBcIiVzXCIgc1xuICAgIHwgQ29tbWVudCBjIC0+IHBwIFwiPCEtLSAlcyAtLT5cIiBjXG4gIGFuZCBwcGEgYXR0cnMgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgKGEsIFNvbWUgdikgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcXCcnKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz0nJXMnXCIgYSB2XG4gICAgICAgICAgZWxzZSBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcIicpIHRoZW5cbiAgICAgICAgICAgIHBwIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHBwIFwiICVzPVxcXCJcIiBhO1xuICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB2IC0gMSBkb1xuICAgICAgICAgICAgICAgIG1hdGNoIHYuW2ldIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdcIicgLT4gcHAgXCImcXVvdDtcIlxuICAgICAgICAgICAgICAgIHwgYyAgICAtPiBwcCBcIiVjXCIgY1xuICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICBwcCBcIlxcXCJcIlxuICAgICAgICAgICAgKVxuICAgICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPScnXCIgYSAoKiBIVE1MNSAqKVxuICAgIClcbiAgICBhdHRyc1xuICBpblxuICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuaW5jbHVkZSBPbWRfcmVwcmVzZW50YXRpb25cbmluY2x1ZGUgT21kX2JhY2tlbmRcblxubGV0IG9mX2lucHV0IGxleCA/ZXh0ZW5zaW9uczplID9kZWZhdWx0X2xhbmc6ZCBzID1cbiAgbGV0IG1vZHVsZSBFID0gT21kX3BhcnNlci5EZWZhdWx0X2VudihzdHJ1Y3QgZW5kKSBpblxuICBsZXQgbW9kdWxlIFBhcnNlciA9IE9tZF9wYXJzZXIuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBtYXRjaCBlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZXh0ZW5zaW9uc1xuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IG1hdGNoIGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gRS5kZWZhdWx0X2xhbmdcbiAgICBlbmRcbiAgKSBpblxuICBsZXQgbWQgPVxuICAgIFBhcnNlci5wYXJzZSAobGV4IHMpXG4gIGluXG4gIFBhcnNlci5tYWtlX3BhcmFncmFwaHMgbWRcblxubGV0IG9mX3N0cmluZyA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhcbmxldCBvZl9iaWdhcnJheSA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhfYmlnYXJyYXlcblxubGV0IHRvX2h0bWwgOlxuICA/b3ZlcnJpZGU6KE9tZF9yZXByZXNlbnRhdGlvbi5lbGVtZW50IC0+IHN0cmluZyBvcHRpb24pIC0+XG4gID9waW5kZW50OmJvb2wgLT5cbiAgP25sMmJyOmJvb2wgLT5cbiAgP2NzOmNvZGVfc3R5bGlzdCAtPlxuICB0IC0+XG4gIHN0cmluZ1xuICA9XG4gIGh0bWxfb2ZfbWRcblxubGV0IHRvX3RleHQgOiB0IC0+IHN0cmluZyA9IHRleHRfb2ZfbWRcblxubGV0IHRvX21hcmtkb3duIDogdCAtPiBzdHJpbmcgPSBtYXJrZG93bl9vZl9tZFxuXG5sZXQgaHRtbF9vZl9zdHJpbmcgKGh0bWw6c3RyaW5nKSA6IHN0cmluZyA9XG4gIGh0bWxfb2ZfbWQgKE9tZF9wYXJzZXIuZGVmYXVsdF9wYXJzZSAoT21kX2xleGVyLmxleCBodG1sKSlcblxuXG5sZXQgcmVjIHNldF9kZWZhdWx0X2xhbmcgbGFuZyA9IGZ1bmN0aW9uXG4gIHwgQ29kZShcIlwiLCBjb2RlKSA6OiB0bCAtPiBDb2RlKGxhbmcsIGNvZGUpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IENvZGVfYmxvY2soXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZV9ibG9jayhsYW5nLCBjb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIFJlY3Vyc2Ugb24gYWxsIGVsZW1lbnRzIGV2ZW4gdGhvdWdoIGNvZGUgKGJsb2NrcykgYXJlIG5vdCBhbGxvd2VkXG4gICAgIGV2ZXJ5d2hlcmUuICopXG4gIHwgSDEgdCA6OiB0bCAtPiBIMShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDIgdCA6OiB0bCAtPiBIMihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDMgdCA6OiB0bCAtPiBIMyhzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDQgdCA6OiB0bCAtPiBINChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDUgdCA6OiB0bCAtPiBINShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDYgdCA6OiB0bCAtPiBINihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgUGFyYWdyYXBoIHQgOjogdGwgLT4gUGFyYWdyYXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgRW1waCB0IDo6IHRsIC0+IEVtcGgoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJvbGQgdCA6OiB0bCAtPiBCb2xkKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVbCB0IDo6IHRsIC0+IFVsKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IE9sIHQgOjogdGwgLT4gT2woTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWxwIHQgOjogdGwgLT4gVWxwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbHAgdCA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVybChocmVmLCB0LCB0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsIHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0LCB0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQmxvY2txdW90ZSB0IDo6IHRsIC0+IEJsb2NrcXVvdGUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIEVsZW1lbnRzIHRoYXQgZG8gbm90IGNvbnRhaW4gTWFya2Rvd24uICopXG4gIHwgKFRleHQgX3xDb2RlIF98Q29kZV9ibG9jayBffEJyfEhyfE5MfFJlZiBffEltZ19yZWYgX3xSYXcgX3xSYXdfYmxvY2sgX1xuICAgIHxIdG1sIF98SHRtbF9ibG9jayBffEh0bWxfY29tbWVudCBffEltZyBffFggXykgYXMgZSA6OiB0bCAtPlxuICAgICBlIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFtdIC0+IFtdXG5cblxuKCogVGFibGUgb2YgY29udGVudHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogR2l2ZW4gYSBsaXN0IG9mIGhlYWRlcnMg4oCUIGluIHRoZSBvcmRlciBvZiB0aGUgZG9jdW1lbnQg4oCUIGdvIHRvIHRoZVxuICAgcmVxdWVzdGVkIHN1YnNlY3Rpb24uICBXZSBmaXJzdCBzZWVrIGZvciB0aGUgW251bWJlcl10aCBoZWFkZXIgYXRcbiAgIFtsZXZlbF0uICAqKVxubGV0IHJlYyBmaW5kX3N0YXJ0IGhlYWRlcnMgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCAoSDEgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAxIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEgyIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMiBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMyBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDMgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDQgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA0IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg1IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDYgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmFuZCBkZWFsX3dpdGhfaGVhZGVyIGhfbGV2ZWwgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnMgPVxuICBpZiBoX2xldmVsID4gbGV2ZWwgdGhlbiAoKiBTa2lwLCByaWdodCBbbGV2ZWxdLWhlYWRlciBub3QgeWV0IHJlYWNoZWQuICopXG4gICAgaWYgbnVtYmVyID0gMCB0aGVuXG4gICAgICAoKiBBc3N1bWUgZW1wdHkgc2VjdGlvbiBhdCBbbGV2ZWxdLCBkbyBub3QgY29uc3VtZSB0b2tlbi4gKilcbiAgICAgIChtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICAgfCBbXSAtPiBoZWFkZXJzICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IGhlYWRlcnMgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9ucylcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIGVsc2UgaWYgaF9sZXZlbCA9IGxldmVsIHRoZW4gKFxuICAgICgqIEF0IHByb3BlciBbbGV2ZWxdLiAgSGF2ZSB3ZSByZWFjaGVkIHRoZSBbbnVtYmVyXSBvbmU/ICopXG4gICAgaWYgbnVtYmVyIDw9IDEgdGhlbiAoXG4gICAgICBtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICB8IFtdIC0+IHRsICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgfCBuIDo6IHN1YnNlY3Rpb25zIC0+IGZpbmRfc3RhcnQgdGwgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9uc1xuICAgIClcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgKG51bWJlciAtIDEpIHN1YnNlY3Rpb25zXG4gIClcbiAgZWxzZSAoKiBoX2xldmVsIDwgbGV2ZWwgKilcbiAgICBbXSAoKiBTb3VnaHQgW2xldmVsXSBoYXMgbm90IGJlZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbiAqKVxuXG4oKiBBc3N1bWUgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgaGVhZGVycyB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cbiAgIFJldHVybiB0aGUgbGlzdCBvZiBUT0MgZW50cmllcyBmb3IgW21pbl9sZXZlbF0gYW5kIHRoZSBbaGVhZGVyc11cbiAgIG5vdCB1c2VkIGZvciB0aGUgVE9DIGVudHJpZXMuICopXG5sZXQgcmVjIG1ha2VfdG9jIChoZWFkZXJzOihlbGVtZW50KnN0cmluZypzdHJpbmcpbGlzdCkgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgbWluX2xldmVsID4gbWF4X2xldmVsIHRoZW4gW10sIGhlYWRlcnNcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gICAgfCBbXSAtPiBbXSwgW11cbiAgICB8IChIMSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgyIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAyIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDMgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDMgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINCB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNCB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg1IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA1IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDYgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDYgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IF8gOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgKVxuYW5kIHRvY19lbnRyeSBoZWFkZXJzIGhfbGV2ZWwgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgPVxuICBpZiBoX2xldmVsID4gbWF4X2xldmVsIHRoZW4gKCogdG9vIGRlZXAsIHNraXAgKilcbiAgICBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgZWxzZSBpZiBoX2xldmVsIDwgbWluX2xldmVsIHRoZW5cbiAgICAoKiBzZWN0aW9uIHdlIHdhbnRlZCB0aGUgVE9DIGZvciBpcyBmaW5pc2hlZCwgZG8gbm90IGNvbXN1bWUgdGhlIHRva2VuICopXG4gICAgW10sIGhlYWRlcnNcbiAgZWxzZSBpZiBoX2xldmVsID0gbWluX2xldmVsIHRoZW4gKFxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWw6KG1pbl9sZXZlbCArIDEpIH5tYXhfbGV2ZWwgaW5cbiAgICBsZXQgdG9jX2VudHJ5ID0gbWF0Y2ggc3ViX3RvYyB3aXRoXG4gICAgICB8IFtdIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MXVxuICAgICAgfCBfIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MOyBVbCBzdWJfdG9jOyBOTF0gaW5cbiAgICBsZXQgdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCBpblxuICAgIHRvY19lbnRyeSA6OiB0b2MsIHRsXG4gICkgZWxzZSAoKiBoX2xldmVsID4gbWluX2xldmVsICopXG4gICAgbGV0IHN1Yl90b2MsIHRsID0gbWFrZV90b2MgaGVhZGVycyB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICBbVWwgc3ViX3RvY10gOjogdG9jLCB0bFxuXG5sZXQgdG9jID8oc3RhcnQ9W10pID8oZGVwdGg9MikgbWQgPVxuICBpZiBkZXB0aCA8IDEgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZC50b2M6IH5kZXB0aCBtdXN0IGJlID49IDFcIjtcbiAgbGV0IGhlYWRlcnMgPSBPbWRfYmFja2VuZC5oZWFkZXJzX29mX21kIH5yZW1vdmVfaGVhZGVyX2xpbmtzOnRydWUgbWQgaW5cbiAgbGV0IGhlYWRlcnMgPSBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBbXSAtPiBoZWFkZXJzXG4gICAgfCBudW1iZXIgOjogc3Vic2VjdGlvbnMgLT5cbiAgICAgICBpZiBudW1iZXIgPCAwIHRoZW4gaW52YWxpZF9hcmcoXCJPbWQudG9jOiBsZXZlbCAxIHN0YXJ0IG11c3QgYmUgPj0gMFwiKTtcbiAgICAgICBmaW5kX3N0YXJ0IGhlYWRlcnMgMSBudW1iZXIgc3Vic2VjdGlvbnMgaW5cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHN0YXJ0IGluXG4gIGxldCB0b2MsIF8gPSBtYWtlX3RvYyBoZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICB+bWluX2xldmVsOihsZW4gKyAxKSB+bWF4X2xldmVsOihsZW4gKyBkZXB0aCkgaW5cbiAgbWF0Y2ggdG9jIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IF8gLT4gW1VsKHRvYyldXG5cbmxldCBhZGRfdG9jID9zdGFydCA/ZGVwdGggP3RpdGxlIG1kID1cbiAgbGV0IHRvYyA9IHRvYyA/c3RhcnQgP2RlcHRoIG1kIGluXG4gICgqIFJlcGxhY2UgXCIqVGFibGUgb2YgY29udGVudHMqXCIgd2l0aCB0aGUgYWN0dWFsIFRPQy4gKilcbiAgdG9jXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEVuc3VyZSB0aGF0IFthdF9leGl0XSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHByb2dyYW0gKilcblxubGV0IF8gPSBkb19hdF9leGl0KClcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiVmRvbVRodW5rIiwiYXJncyIsIkdlbmVyaWNIb29rIiwiaW5pdCIsInVwZGF0ZSIsImRlc3Ryb3kiLCJleHRyYSIsImhvb2tfc3RhdGVfa2V5IiwiU3ltYm9sIiwic3RhdGUiLCJmcm9tIiwidG8iLCJCYXNlX2FtX3Rlc3RpbmciLCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9pbnQ2NF9sbzMyIiwidiIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJqc29vX2lzX2FzY2lpIiwiY2FtbF91dGYxNl9vZl91dGY4IiwiYzEiLCJjMiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImNvbnRlbnQiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfYmFfc2VyaWFsaXplIiwid3JpdGVyIiwiYmEiLCJzeiIsImNvbXBsZXgiLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmFpc2Vfd2l0aF9hcmciLCJhcmciLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQiLCJraW5kIiwiY2FtbF9iYV9jcmVhdGVfYnVmZmVyIiwic2l6ZSIsInZpZXciLCJGbG9hdDY0QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsInJlcyIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9iYV9jdXN0b21fbmFtZSIsIk1sX0JpZ2FycmF5IiwibGF5b3V0IiwiYnVmZmVyIiwib2ZzIiwiaW0iLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX2JhX2Rlc2VyaWFsaXplIiwicmVhZGVyIiwibnVtX2RpbXMiLCJzaXplX2RpbSIsInNpemVfZGltX2hpIiwic2l6ZV9kaW1fbG8iLCJzaXh0eSIsImludDY0IiwiY2FtbF9iYV9jb21wYXJlIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9tYXJzaGFsIiwic2l6ZXMiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9pc19tbF9zdHJpbmciLCJjYW1sX2lzX21sX2J5dGVzIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsIm51bSIsImhoIiwiQmFzZV9oYXNoX2RvdWJsZSIsIkJhc2VfaGFzaF9zdHJpbmciLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsIkJhc2VfaW50X21hdGhfaW50MzJfY3R6IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfaW50NjRfdG9faW50MzIiLCJCYXNlX2ludF9tYXRoX2ludDY0X2NseiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfaW50NjRfbXVsIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImJhc2UiLCJleHBvbmVudCIsIm9uZSIsIm11bCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmciLCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZSIsImNhbWxfY3JlYXRlX2J5dGVzIiwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzIiwidl9sZW4iLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfYmFfZ2V0XzEiLCJpMCIsIkJpZ1N0cmluZ1JlYWRlciIsImJzIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJwYXRoIiwiZXJybm8iLCJ2YXJpYW50IiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiTWxGYWtlRmQiLCJmaWxlIiwiTWxGYWtlRGV2aWNlIiwiY29tcCIsIm5hbWVfc2xhc2giLCJtb2RlIiwicmFpc2VfdW5peCIsInBhcmVudCIsInNlZW4iLCJtIiwiZW50cnkiLCJvayIsImJ5dGVzIiwiTWxGYWtlRmRfb3V0IiwiZmQiLCJzcmMiLCJNbE11dGV4IiwiTWxOYXQiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmciLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9ieXRlc19zZXQiLCJNbE5vZGVGZCIsImJ1Zl9vZmZzZXQiLCJyZWFkIiwiTWxOb2RlRGV2aWNlIiwiY29uc3RzIiwiaXNDaGFyYWN0ZXJEZXZpY2UiLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiTWxTdHJpbmdSZWFkZXIiLCJVSW50OEFycmF5UmVhZGVyIiwiaW5jcl9uYXQiLCJuYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibGVuMiIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImJpZ3N0cmluZ19hbGxvYyIsIl8iLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwicG9zMSIsImJ5dGVzMiIsInBvczIiLCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsInN0cjEiLCJiYTIiLCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImJpZ3N0cmluZ19ibGl0X3N0dWIiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX2ZpbmQiLCJjaHIiLCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJ2X3MxIiwidl9zMV9wb3MiLCJ2X3MyIiwidl9zMl9wb3MiLCJiaWdzdHJpbmdfbWVtY21wX3N0dWIiLCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlIiwiaGF5c3RhY2siLCJoYXlzdGFja19wb3MiLCJoYXlzdGFja19sZW4iLCJuZWVkbGVfcG9zIiwibmVlZGxlX2xlbiIsImxpbSIsIm1hdGNoZXMiLCJjYW1sX2JhX3NldF8xIiwiYmlnc3RyaW5nX21lbXNldF9zdHViIiwiYmlnc3RyaW5nIiwidl9wb3MiLCJ2X2NoYXIiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJ0YSIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImJpZ3N0cmluZ19yZWFsbG9jIiwibmV3X2RhdGEiLCJuZXdfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJpZ3N0cmluZ190b190eXBlZF9hcnJheSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzIiwiYmlnc3RyaW5nYWZfbWVtY2hyIiwiYmFfb2ZmIiwiY2FtbF9pbnRfY29tcGFyZSIsImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmciLCJiYTFfb2ZmIiwiYmEyX29mZiIsImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmciLCJzdHJfb2ZmIiwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJhcnJheSIsImNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nIiwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YiIsImJpbl9wcm90X2JsaXRfYnVmX3N0dWIiLCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJibGFrZTJiIiwiQURENjRBQSIsIm8wIiwibzEiLCJBREQ2NEFDIiwiYjAiLCJiMSIsIkIyQl9HRVQzMiIsIkIyQl9HIiwiaXgiLCJpeSIsIngwIiwieDEiLCJ5MCIsInkxIiwieG9yMCIsInhvcjEiLCJCTEFLRTJCX0lWMzIiLCJVaW50MzJBcnJheSIsIlNJR01BOCIsIlNJR01BODIiLCJibGFrZTJiQ29tcHJlc3MiLCJjdHgiLCJsYXN0IiwicGFyYW1ldGVyQmxvY2siLCJibGFrZTJiSW5pdCIsIm91dGxlbiIsImJsYWtlMmJVcGRhdGUiLCJpbnB1dCIsImJsYWtlMmJGaW5hbCIsIm91dCIsImJsaXRfbmF0IiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJjYW1sX01ENUZpbmFsIiwiaW5fYnVmIiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJiOCIsImNhbWxfTUQ1VXBkYXRlIiwiaW5wdXRfbGVuIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImNhbWxfYWxsb2NfZHVtbXlfaW5maXgiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJwIiwiYXJnczIiLCJjYW1sX2FycmF5X2FwcGVuZCIsImExIiwiYTIiLCJsMSIsImwyIiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX2FycmF5X2dldCIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2FycmF5X29mX3N0cmluZyIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2FzaW5oX2Zsb2F0IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfYXRvbWljX2NhcyIsInJlZiIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9iYV9ibGl0IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwibmV3X2RpbXMiLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfYmFfaW5pdCIsImNhbWxfYmFfa2luZCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJiMiIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJiMyIsImI0IiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImI1IiwiYjYiLCJiNyIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsIl91bml0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9ibGFrZTJfY3JlYXRlIiwiaGFzaGxlbiIsImNhbWxfYmxha2UyX2ZpbmFsIiwiY2FtbF9ibGFrZTJfdXBkYXRlIiwiY2FtbF9ibGFrZTJfc3RyaW5nIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnN3YXAxNiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9idWlsZF9zeW1ib2xzIiwic3ltYiIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0MTYiLCJpMTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiaTMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9jaGFubmVsX2dldCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2hhbmlkIiwiY2hhbiIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfY29tcGFyZSIsImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4YyIsImNvbnQiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfY29zaF9mbG9hdCIsImZzX25vZGVfc3VwcG9ydGVkIiwibWFrZV9wYXRoX2lzX2Fic29sdXRlIiwicG9zaXgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwibmNvbXAiLCJjYW1sX2dldF9yb290IiwiY2FtbF9yb290IiwianNvb19tb3VudF9wb2ludCIsInJlc29sdmVfZnNfZGV2aWNlIiwiY2FtbF9jcmVhdGVfZmlsZSIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfY3NlbF92YWx1ZSIsInZfY29uZCIsInZfdHJ1ZSIsInZfZmFsc2UiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsInpzdGRfZGVjb21wcmVzcyIsInU4IiwidTE2IiwidTMyIiwic2xjIiwiZmlsbCIsImNwdyIsImVjIiwiaW5kIiwibnQiLCJyYiIsInJ6ZmgiLCJkYXQiLCJuMyIsImZsZyIsInNzIiwiY2MiLCJkZiIsImZjZiIsImJ0IiwiZGIiLCJkaSIsImZzYiIsImZzcyIsIndzIiwid2IiLCJtc2IiLCJ2YWwiLCJiaXRzIiwicmZzZSIsIm1hbCIsInRwb3MiLCJhbCIsInByb2JzIiwic3ltIiwiaHQiLCJmcmVxIiwiZHN0YXRlIiwibnN0YXRlIiwiYmIxIiwic3ltcyIsIm5iaXRzIiwiY2J0IiwibXNrIiwibXNrMWZiIiwibXN2Iiwic3ZhbCIsInJidCIsInN5bXBvcyIsInNzdGVwIiwic21hc2siLCJzZiIsIm5iIiwicmh1Iiwid2MiLCJoYiIsImh3IiwicmMiLCJyaSIsIl9hIiwiZWJ0IiwiZmR0IiwiZXBvcyIsImxiIiwic3QxIiwic3QyIiwiYnRyMSIsImJ0cjIiLCJmcG9zIiwiYnl0ZSIsIndlcyIsInd0IiwibWIiLCJ0cyIsInJlbSIsImhidWYiLCJwdiIsImRsbHQiLCJkbWx0IiwiZG9jdCIsImIyYmwiLCJibCIsImxsYiIsImxsYmwiLCJtbGIiLCJtbGJsIiwiZGh1IiwiaHUiLCJlYiIsInN0IiwiYnRyIiwiZGh1NCIsInN6MSIsInN6MiIsInN6MyIsInJ6YiIsImJ0eXBlIiwibGJ0IiwibHNzIiwibGNzIiwiczQiLCJzcGwiLCJodWQiLCJzY20iLCJkdHMiLCJtZCIsInJidWYiLCJfYiIsIm1sdCIsIm9jdCIsImxsdCIsInNwb3MiLCJvdWJ0IiwibHN0Iiwib3N0IiwibXN0IiwibGxjIiwibGJ0ciIsIm1sYyIsIm1idHIiLCJvZmMiLCJvYnRyIiwib2ZwIiwibWwiLCJsbCIsImlkeCIsInN0aW4iLCJjY3QiLCJidWZzIiwib2wiLCJjaGsiLCJibGsiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2RpdiIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwidW5pdCIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwidGVybV9zeW5jIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2tleV9vZmZzZXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsInoiLCJjYW1sX2VwaGVfc2V0X2tleSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjYW1sX2VxdWFsIiwiY2FtbF9lcmZfZmxvYXQiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZXhwbTFfZmxvYXQiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0Iiwic3RhcnQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsImZzIiwiY2FtbF9wYXJzZV9mb3JtYXQiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJ0bXAiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9nY19nZXQiLCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQiLCJjYW1sX2djX21ham9yIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJjYW1sX2djX21pbm9yIiwiY2FtbF9nY19taW5vcl93b3JkcyIsImNhbWxfZ2NfcXVpY2tfc3RhdCIsImNhbWxfZ2Nfc2V0IiwiX2NvbnRyb2wiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJjYW52YXMiLCJpbWFnZSIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbG9yIiwiY29udmVydCIsImNfc3RyIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNvbnRleHQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwiZ2V0Iiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiY2FtbF9ncl9wbG90IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX2dyX3RleHRfc2l6ZSIsInR4dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwibnVtX2RpZ2l0c19uYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUiLCJjYW1sX3JlZmlsbCIsInN0cl9hIiwibnJlYWQiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsImludGVybl9vYmpfdGFibGUiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJvcHMiLCJleHBlY3RlZF9zaXplIiwib2xkX3BvcyIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSIsImNhbWxfaW50NjRfbmVnIiwiY2FtbF9pbnQ2NF9mb3JtYXQiLCJ3YmFzZSIsImN2dGJsIiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9pc19qcyIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9qc19jYWxsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImNhbWxfanNfZXhwciIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2dldF9jb25zb2xlIiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfbmV3IiwiRiIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3RvX3N0cmluZyIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc192YXIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3RhZyIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsImJhY2t0cmsiLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsImNhbWxfbWFrZV9mbG9hdF92ZWN0IiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21ha2VfbG9jYWxfdmVjdCIsInZfZWx0IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWQ1X2NoYW4iLCJ0b3JlYWQiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfbWVtcHJvZl9zZXQiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCIsImNhcHR1cmVkIiwiaW50byIsInRvX3Jlc3RvcmUiLCJuZXdfIiwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2JpZ2FycmF5IiwiY2FtbF9tbF9pbnB1dF9jaGFyIiwiY2FtbF9tbF9pbnB1dF9pbnQiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsInByZXZfbWF4IiwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZSIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX21sX211dGV4X2xvY2siLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2siLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZmQyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzIiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IiwiYnVmZmVyZWQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXRfNjQiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0IiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfbW9kIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsImNhbWxfbGV4X3J1bl9tZW0iLCJtZW0iLCJjdXJyX3BvcyIsImNhbWxfbGV4X3J1bl90YWciLCJjYW1sX25ld19sZXhfZW5naW5lIiwibGV4X21lbSIsImxleF9iYXNlX2NvZGUiLCJsZXhfYmFja3Rya19jb2RlIiwibGV4X2RlZmF1bHRfY29kZSIsImxleF90cmFuc19jb2RlIiwibGV4X2NoZWNrX2NvZGUiLCJsZXhfY29kZSIsInBjX29mZiIsInBzdGF0ZSIsImJhc2VfY29kZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfb2pzX25ld19hcnIiLCJjYW1sX291dF9jaGFubmVsX3Bvc19mZCIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJjbWQiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjdXJzb3IiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImNhbGxiYWNrcyIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfcnVudGltZV92YXJpYW50IiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2NvbmNhdCIsImNhbWxfc3RyaW5nX2VxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9zdHJpbmdfbGVzc2VxdWFsIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIm9zX3R5cGUiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX3N5c19leGl0IiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19nZXRlbnYiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImNhbWxfc3lzX21rZGlyIiwicGVybSIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9zeXNfdW5zYWZlX2dldGVudiIsImNhbWxfdGFuaF9mbG9hdCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF91bml4X2ZpbmRuZXh0IiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF9nZXR1aWQiLCJjYW1sX3VuaXhfZ210aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfdW5peF9ta2RpciIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfdW5peF90aW1lIiwiY2FtbF91bml4X3VubGluayIsImNhbWxfdW5tb3VudCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX3hkZ19kZWZhdWx0cyIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF96c3RkX2luaXRpYWxpemUiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjb21wYXJlX25hdCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjb21wbGVtZW50X25hdCIsImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvcmVfZ2NfY29tcGFjdGlvbnMiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY29yZV9nY19oZWFwX3dvcmRzIiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNvcmVfZ2NfbWFqb3Jfd29yZHMiLCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zIiwiY29yZV9nY19taW5vcl93b3JkcyIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyIsImNvcmVfZ2NfdG9wX2hlYXBfd29yZHMiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY29yZV9tZDVfZmQiLCJpYyIsImNvcmVfdGltZV9uc19mb3JtYXQiLCJ0aW1lIiwiZm9ybWF0anMiLCJqc3RyaW5nIiwiY3JlYXRlX25hdCIsImRlY3JfbmF0IiwiYm9ycm93IiwiZGVzZXJpYWxpemVfbmF0IiwiZGl2X2hlbHBlciIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJ3cmFwIiwic2hpZnRfcmlnaHRfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngyIiwieDMiLCJzdWJfbmF0IiwiZGl2X25hdCIsInF1byIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QiLCJ2c3Rkb3V0IiwidnN0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCIsInZvdXRwdXQiLCJzZXJpYWxpemVfbmF0IiwiaW5pdGlhbGl6ZV9uYXQiLCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmciLCJpc19kaWdpdF9pbnQiLCJpc19kaWdpdF9vZGQiLCJpc19kaWdpdF96ZXJvIiwianNfcGVyZm9ybWFuY2UiLCJwZXJmX2hvb2tzIiwiX2UiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImpzX3Byb2ZfbWFyayIsImpzX3Byb2ZfbWVhc3VyZSIsImVuZCIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImxhbmRfZGlnaXRfbmF0IiwibGVuZ3RoX25hdCIsImxvcl9kaWdpdF9uYXQiLCJseG9yX2RpZ2l0X25hdCIsIm11bHRfbmF0IiwibGVuMyIsIm50aF9kaWdpdF9uYXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfcGFydGlhbF9tYXRjaCIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwicmVfc3RyaW5nX21hdGNoIiwic2V0X2RpZ2l0X25hdCIsImRpZ2l0Iiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJzcXVhcmVfbmF0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0Iiwic3ltYm9sX2NvbmNhdCIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwiaSQwIiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN5bWJvbCIsImwxIiwibDIiLCJoMSIsImgyIiwidGwiLCJoMyIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiYSIsIm91dHB1dF9ieXRlcyIsIm9jIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dCIsIm9mcyIsImxlbiIsIm91dHB1dF9zdWJzdHJpbmciLCJvdXRwdXRfdmFsdWUiLCJjaGFuIiwidiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwiciIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiaGQiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQwIiwic3RyMiIsInN0cjEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4kMCIsIm9sZF9leGl0JDAiLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjEiLCJ2MiIsInYxJDAiLCJ2MiQwIiwiY29tcGFyZSIsIm9jYW1sX3ZlcnNpb24iLCJvY2FtbF9yZWxlYXNlIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsImJhY2tlbmRfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImdldGVudl9vcHQiLCJpbnRlcmFjdGl2ZSIsInNldF9zaWduYWwiLCJzaWdfbnVtIiwic2lnX2JlaCIsImNhdGNoX2JyZWFrIiwib24iLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsIm1ha2UiLCJ1aWQiLCJBIiwicHJvdmFibHlfZXF1YWwiLCJCIiwic2V0IiwiaW5jciIsImRlY3IiLCJmb3JjZV9nZW5fbGF6eV9ibG9jayIsIm9ubHlfdmFsIiwiYmxrIiwiY2xvc3VyZSQwIiwicmVzdWx0JDAiLCJjbG9zdXJlIiwicmVzdWx0IiwiZSQwIiwiZm9yY2VfbGF6eV9ibG9jayIsImZvcmNlX2dlbiIsImx6diIsInQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwieHMkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQiLCJiaW5kIiwiam9pbiIsIm5vbmUiLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJoYXNoIiwiZXNjYXBlZCIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImMxIiwiYzIiLCJlcnJfbm9fcHJlZCIsImVycl9ub19zdWNjIiwibG9fYm91bmQiLCJoaV9ib3VuZCIsInN1Y2MiLCJwcmVkIiwiaXNfdmFsaWQiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsInRvX2NoYXIiLCJ1bnNhZmVfdG9fY2hhciIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwibGFzdCIsImkkMSIsInIyIiwiZmxhdHRlbiIsImExIiwicjEkMCIsImEyIiwicmV2X21hcCIsImZvbGRfcmlnaHQiLCJiMiIsImIxIiwiYjEkMCIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwidDEiLCJzdGFibGVfc29ydCIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwic29ydF91bmlxIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiY29tcGFyZV9sZW5ndGhzIiwiY29tcGFyZV9sZW5ndGhfd2l0aCIsImF1eCIsInRhaWwiLCJvZl9zZXEiLCJzZXEkMSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwidXRmXzhfdWNoYXJfNCIsImIzIiwiZ2V0X3V0Zl84X3VjaGFyIiwiYjEkNCIsImIyJDMiLCJpJDQiLCJiMSQyIiwiaSQ1IiwiYjIkMSIsImkkNiIsImIzJDEiLCJpJDEwIiwiaSQxMSIsImkkMTIiLCJpJDciLCJiMSQxIiwiaSQ4IiwiYjIkMCIsImkkOSIsImIzJDAiLCJpJDEzIiwiYjEkNSIsImkkMTQiLCJiMiQ0IiwiaSQyIiwiYjEkMyIsImkkMyIsImIyJDIiLCJpJDE1Iiwic2V0X3V0Zl84X3VjaGFyIiwibGFzdCQxIiwibGFzdCQwIiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiZGF0YV9zaXplIiwidG90YWxfc2l6ZSIsImZyb21fYnl0ZXMiLCJmcm9tX3N0cmluZyIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImluaXRfbWF0cml4Iiwicm93IiwibWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJsYSIsImxiIiwicmVzJDAiLCJsaXN0X2xlbmd0aCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJhMCIsImJpIiwiYWkiLCJuYSIsIm5iIiwibWF4c29uIiwiaTMxIiwiZSQxIiwiaiQwIiwiZmF0aGVyIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIkMSIsInMxJDEiLCJpMSIsImkyIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsInNpZ25hbGluZ19uYW4iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1pbl9pbnQiLCJtYXhfaW50IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwicmVhZF9mdW4iLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwicmVtb3ZlIiwidW5pb24iLCJyMiQwIiwiaW50ZXIiLCJzcGxpdF9iaXMiLCJkaXNqb2ludCIsImNvbnNfZW51bSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInN1YnNldCIsInB2IiwibGYiLCJsdCIsInJmIiwicnQiLCJjYXJkaW5hbCIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiZmluZF9maXJzdCIsInYwJDEiLCJ2MCQwIiwiZmluZF9maXJzdF9vcHQiLCJmaW5kX2xhc3QiLCJmaW5kX2xhc3Rfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJ4MCIsImwkMyIsImwkNCIsIngwJDAiLCJsJDUiLCJ4MCQxIiwibmwiLCJtaWQiLCJsJDIiLCJ4NCIsImFkZF9zZXEiLCJzZXFfb2ZfZW51bSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsImxkIiwibHJkIiwicmQiLCJybGQiLCJkYXRhIiwiZDAkMSIsImQwIiwiZDAkMCIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJhZGRfdG9fbGlzdCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYnMiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJwcm90ZWN0IiwicmVsZWFzZSIsImFjcXVpcmUiLCJ0cnlfYWNxdWlyZSIsInJldCIsImdldF92YWx1ZSIsIm1ha2UkMCIsInJlbGVhc2UkMCIsImFjcXVpcmUkMCIsInRyeV9hY3F1aXJlJDAiLCJjcHVfcmVsYXgiLCJjcmVhdGVfZGxzIiwia2V5X2NvdW50ZXIiLCJwYXJlbnRfa2V5cyIsIm5ld19rZXkiLCJzcGxpdF9mcm9tX3BhcmVudCIsImluaXRfb3JwaGFuIiwiaWR4Iiwia2kiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJvbGR2YWwiLCJuZXdfb2JqIiwic3QkMCIsImN1cnZhbCIsInVwZGF0ZWRfb2JqIiwiZ2V0X2lkIiwiZG9tYWluIiwic2VsZiIsImlzX21haW5fZG9tYWluIiwiZmlyc3RfZG9tYWluX3NwYXduZWQiLCJmaXJzdF9zcGF3bl9mdW5jdGlvbiIsImJlZm9yZV9maXJzdF9zcGF3biIsIm9sZF9mIiwibmV3X2YiLCJhdF9leGl0X2tleSIsInNwYXduIiwicGsiLCJ0ZXJtX3N5bmMiLCJib2R5IiwibG9vcCIsImV4IiwicmVjb21tZW5kZWRfZG9tYWluX2NvdW50Iiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJ4JDkiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJ4JDE3IiwicmVzdCQyNiIsIngkMTgiLCJyZXN0JDI3IiwieCQxOSIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiZW5kX2luZCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImYkMCIsImludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24iLCJuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIiwibmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIiwibWlzc2luZ19lbGVtZW50IiwidW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IiwiY2hlY2tfc2FtZV9sZW5ndGgiLCJsZW5ndGhfYSIsImNoZWNrX3ZhbGlkX2xlbmd0aCIsImFyciIsImNhcGFjaXR5IiwidW5zYWZlX2dldCIsImdldF9sYXN0IiwicG9wX2xhc3QiLCJwb3BfbGFzdF9vcHQiLCJyZW1vdmVfbGFzdCIsImVuc3VyZV9jYXBhY2l0eSIsImNhcGFjaXR5X3JlcXVlc3QiLCJjdXJfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfYXJyIiwiZW5zdXJlX2V4dHJhX2NhcGFjaXR5IiwiZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCIsImZpdF9jYXBhY2l0eSIsInNldF9jYXBhY2l0eSIsImFkZF9sYXN0X2lmX3Jvb20iLCJlbGVtIiwiYWRkX2xhc3QiLCJhcHBlbmRfbGlzdCIsImxpIiwibGkkMCIsImFwcGVuZF9pdGVyIiwiYXBwZW5kX3NlcSIsImFwcGVuZF9hcnJheV9pZl9yb29tIiwibGVuZ3RoX2IiLCJhcHBlbmRfYXJyYXkiLCJhcHBlbmRfaWZfcm9vbSIsImFycl9hIiwiYXJyX2IiLCJpdGVyJDAiLCJvZl9hcnJheSIsInRvX2FycmF5IiwidG9fc2VxX3JlZW50cmFudCIsInRvX3NlcV9yZXYiLCJ0b19zZXFfcmV2X3JlZW50cmFudCIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwib3B0IiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJub19hcmckMCIsImdldF9hcmckMCIsImNvbnN1bWVfYXJnJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJyJDMiLCJhcmckNCIsInNwZWNzIiwidHJlYXRfYWN0aW9uJDAiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsIm1heF9hcmdfbGVuIiwiY3VyIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsInNlZW4iLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwic3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvIiwiY29uc3RydWN0b3IiLCJmaWVsZHNfb3B0IiwiY29uc3RydWN0b3IkMCIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImNvbXBvc2UiLCJmbGlwIiwibmVnYXRlIiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsImV2ZW50bG9nX3BhdXNlIiwiZXZlbnRsb2dfcmVzdW1lIiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJkZWxldGVfYWxhcm0iLCJjcmVhdGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpZ2FycmF5IiwicmVhbGx5X2lucHV0X2JpZ2FycmF5IiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQyIiwiYnVmJDAiLCJidWYkMSIsInJlbSIsImlucHV0X2xpbmVzIiwiZm9sZF9saW5lcyIsInNldF9iaW5hcnlfbW9kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaWdhcnJheSIsImhleF9vZl9zdHJpbmciLCJjaGFyX2hleCIsInN0cmluZ19vZl9oZXgiLCJkaWdpdCIsImhhc2hfbGVuZ3RoIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImNoYW5uZWwiLCJ0b3JlYWQiLCJidWZfc2l6ZSIsImN0eCIsInRvcmVhZCQwIiwidG9yZWFkJDEiLCJmaWxlbmFtZSIsImRpZ2VzdCIsInRvX2hleCIsIm9mX2hleCIsImtpbmRfc2l6ZV9pbl9ieXRlcyIsImNsb29wIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJiYSIsImNyZWF0ZSQxIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwic2VyaWFsaXphdGlvbl9wcmVmaXgiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiIsInRvX2JpbmFyeV9zdHJpbmciLCJvZl9iaW5hcnlfc3RyaW5nIiwicmVpbml0IiwibWFrZV9zZWxmX2luaXQiLCJtYXhfaW50MzEiLCJtYXhfaW50MzIiLCJiaXRzIiwiaW50X2F1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImludF9pbl9yYW5nZV9hdXgiLCJuYml0cyIsInNwYW4iLCJpbnRfaW5fcmFuZ2UiLCJiaXRzMzIiLCJpbnQzMmF1eCIsImludDMyIiwiaW50MzJfaW5fcmFuZ2UiLCJiaXRzNjQiLCJpbnQ2NGF1eCIsImludDY0IiwiaW50NjRfaW5fcmFuZ2UiLCJuYXRpdmViaXRzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X2luX3JhbmdlIiwiZmxvYXQkMCIsImJvb2wiLCJta19kZWZhdWx0IiwicmFuZG9tX2tleSIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludF9pbl9yYW5nZSQwIiwiaW50MzIkMCIsImludDMyX2luX3JhbmdlJDAiLCJuYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9pbl9yYW5nZSQwIiwiaW50NjQkMCIsImludDY0X2luX3JhbmdlJDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic3BsaXQkMCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZ19rZXkiLCJwb3dlcl8yX2Fib3ZlIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImhhc2hfcGFyYW0iLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4Iiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJjb3VudCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfYXV4IiwiZm91bmQiLCJub3Rmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwiZW5kX3dpdGhfbmV3bGluZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfcHJpbnRfbm90aGluZyIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJzdGRidWZfa2V5Iiwic3RyX2Zvcm1hdHRlcl9rZXkiLCJidWZmZXJlZF9vdXRfc3RyaW5nIiwiYnVmZmVyZWRfb3V0X2ZsdXNoIiwic3RkX2J1Zl9rZXkiLCJlcnJfYnVmX2tleSIsInN0ZF9mb3JtYXR0ZXJfa2V5IiwiZXJyX2Zvcm1hdHRlcl9rZXkiLCJnZXRfc3RkX2Zvcm1hdHRlciIsImdldF9lcnJfZm9ybWF0dGVyIiwiZ2V0X3N0cl9mb3JtYXR0ZXIiLCJnZXRfc3RkYnVmIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIiLCJvdXRwdXQkMCIsImZsdXNoJDAiLCJzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF8iLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2l0ZXIiLCJwcF92IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJwcF92JDAiLCJwcF9wcmludF9saXN0IiwicHBfcHJpbnRfYXJyYXkiLCJwcF9wcmludF9zZXEiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwiZnMiLCJmcyQwIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJjbG9zZV9pbiIsImljJDAiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsImlzX29jdGFsX2RpZ2l0IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwibG93ZXJjYXNlIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mX2dlbiIsImVmIiwiYXJncyQxIiwiZXhjJDAiLCJleGMiLCJhcmdzJDAiLCJrc2NhbmYiLCJrc2NhbmZfb3B0IiwiYnNjYW5mIiwiYnNjYW5mX29wdCIsImtzc2NhbmYiLCJzc2NhbmYiLCJzc2NhbmZfb3B0Iiwic2NhbmYiLCJzY2FuZl9vcHQiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsImFycmF5IiwibmV3X3NpemUiLCJvbGRfc2l6ZSIsIm5ld19idWNrIiwibWV0aG9kX2NvdW50IiwiaW5zdF92YXJfY291bnQiLCJuZXdfbWV0aG9kIiwidGFibGUiLCJnZXRfbWV0aG9kX2xhYmVsIiwibGFiZWwiLCJnZXRfbWV0aG9kX2xhYmVscyIsIm5hbWVzIiwic2V0X21ldGhvZCIsImVsZW1lbnQiLCJnZXRfbWV0aG9kIiwibmFycm93IiwidmFycyIsInZpcnRfbWV0aHMiLCJjb25jcl9tZXRocyIsInZhcnMkMCIsInZpcnRfbWV0aHMkMCIsImNvbmNyX21ldGhzJDAiLCJ2aXJ0X21ldGhfbGFicyIsImNvbmNyX21ldGhfbGFicyIsImxhYiIsInR2YXJzIiwiYnlfbmFtZSIsImJ5X2xhYmVsIiwibWV0IiwiaG0iLCJ3aWRlbiIsInNhdmVkX3ZhcnMiLCJzYXZlZF9oaWRkZW5fbWV0aHMiLCJuZXdfdmFyaWFibGUiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJvYmoiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSIsImJ1aWxkX3BhdGgiLCJrZXlzIiwibG9va3VwX3RhYmxlcyIsInJvb3QiLCJyb290X2RhdGEiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwidGFibGVzX2RhdGEiLCJuZXdfY2FjaGUiLCJzZXRfbWV0aG9kcyIsImNsbyIsIngkMjAiLCJjbG8kMCIsIm4kMzgiLCJlJDEwIiwibiQzNyIsIm4kMzYiLCJuJDIiLCJuJDM1IiwiZiQyMCIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ5JDAiLCJuJDYiLCJmJDE1IiwibiQzMSIsIm4kNyIsImYkMTQiLCJlJDgiLCJuJDMwIiwibiQ4IiwiZiQxMyIsIm4kMjkiLCJuJDkiLCJmJDEyIiwibiQyOCIsImYkOCIsImUkMiIsIm4kMTAiLCJmJDExIiwiZSQ3IiwibiQyNyIsImYkOSIsIm4kMTEiLCJmJDEwIiwibiQyNiIsIm4kMTIiLCJuJDI1IiwibiQxMyIsIm4kMjQiLCJtJDEyIiwibiQxNCIsImUkMyIsIm4kMjMiLCJlJDYiLCJtJDExIiwibiQxNSIsIm0kMSIsIm4kMjIiLCJtJDEwIiwibSQyIiwibSQ5IiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwicHJuZyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJmaW5kX2luX2J1Y2tldCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsInNldF9kYXRhIiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJ0ZXN0X2tleSIsInQkMCIsImdldF9rZXkxIiwic2V0X2tleTEiLCJnZXRfa2V5MiIsInNldF9rZXkyIiwiZ2V0X2RhdGEkMCIsInNldF9kYXRhJDAiLCJtYWtlJDEiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJzZWVkZWRfaGFzaCQwIiwibWFrZSQyIiwiYWRkJDAiLCJ0ZXN0X2tleXMiLCJyZW1vdmUkMCIsImZpbmQkMCIsImxlbmd0aCQwIiwiY2xlYXIkMCIsImxlbmd0aCQxIiwiZ2V0X2tleSQwIiwic2V0X2tleSQwIiwiZ2V0X2RhdGEkMSIsInNldF9kYXRhJDEiLCJtYWtlJDMiLCJxdWVyeSQxIiwibWFrZSQ0IiwiYWRkJDEiLCJ0ZXN0X2tleXMkMCIsInJlbW92ZSQxIiwiZmluZCQxIiwibGVuZ3RoJDIiLCJjbGVhciQxIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicmFuZG9tX3N0YXRlIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwicGVybXMiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93IiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwiY29lcmNlIiwidGFnIiwicGFyYW0iLCJrZXkiLCJ2YWx1ZSIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF90X3NleHBfZ3JhbW1hciIsImVtcHR5X3NleHBfZ3JhbW1hciIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ3MiLCJncmFtbWFyIiwidGFncyIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IiwicmVmX3NleHBfZ3JhbW1hciIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJoYW5kbGVyIiwiYXJnIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJhYnNlbnQiLCJjb21iaW5lIiwicGFyc2VfdmFsdWVfbWFsZm9ybWVkIiwibWFsZm9ybWVkIiwic3RhdGUiLCJwb3MiLCJwYXJzZV92YWx1ZXMiLCJtYWxmb3JtZWQkMCIsIm90aGVyIiwiY29udiIsImtpbmQiLCJzZXhwJDUiLCJkZWZhdWx0JDAiLCJzZXhwJDQiLCJzZXhwJDAiLCJzZXhwJDEiLCJzZXhwJDIiLCJzZXhwJDMiLCJwYXJzZV9zcGluZV9tYWxmb3JtZWQiLCJleHRyYSIsInNlZW4iLCJzZXhwcyIsInBhcnNlX3NwaW5lX3Nsb3ciLCJzZXhwcyQwIiwic2V4cHMkMiIsInNleHBzJDEiLCJwYXJzZV9yZWNvcmRfc2xvdyIsInVuc2VlbiIsInBhcnNlX3NwaW5lX2Zhc3QiLCJvdGhlcnMiLCJhcmdzIiwiYXRvbSIsInJlY29yZF9vZl9zZXhwcyIsImNhbGxlciIsImNvbnRleHQkMCIsImluZGV4X29mX2ZpZWxkIiwiYWxsb3dfZXh0cmFfZmllbGRzIiwiY3JlYXRlIiwiYWxsb3dfZXh0cmFfZmllbGRzJDAiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwibWF5YmVfY29udGV4dCIsImNvbnRleHQiLCJyZWNvcmRfb2Zfc2V4cCIsImdsb2JhbGl6ZV9ib29sIiwiYiIsImdsb2JhbGl6ZV9jaGFyIiwiYyIsImdsb2JhbGl6ZV91bml0IiwidSIsImdsb2JhbGl6ZV9hcnJheSIsImEiLCJnbG9iYWxpemVfbGlzdCIsImYiLCJ4cyIsIngiLCJnbG9iYWxpemVfb3B0aW9uIiwiZ2xvYmFsaXplX3Jlc3VsdCIsImdsb2JhbGl6ZV9hIiwiZ2xvYmFsaXplX2IiLCJ0IiwiZ2xvYmFsaXplX3JlZiIsInIiLCJkZXNjZW5kaW5nIiwieSIsIm1heCIsIm1pbiIsIm1heF9pbnQiLCJtaW5faW50IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImJvb2xfb2Zfc3RyaW5nX29wdCIsImJvb2xfb2Zfc3RyaW5nIiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2ludCIsInJlYWRfZmxvYXRfb3B0IiwicmVhZF9mbG9hdCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwib3Blbl9vdXRfZ2VuIiwiZmx1c2giLCJmbHVzaF9hbGwiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXQiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF92YWx1ZSIsInNlZWtfb3V0IiwicG9zX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvcGVuX2luIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luX2dlbiIsImlucHV0X2NoYXIiLCJpbnB1dF9saW5lIiwiaW5wdXQiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF92YWx1ZSIsInNlZWtfaW4iLCJwb3NfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsImNsb3NlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sIiwiZXhpdCIsImF0X2V4aXQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJkb19hdF9leGl0IiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJib29sX3RvX2ludCIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MCIsInN5bWJvbF9jb25jYXQkMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJmbG9hdF9vZl9zdHJpbmciLCJhbV90ZXN0aW5nIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwib2Zfc3RyaW5nX29wdCIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJzdWNjIiwicHJlZCIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsInJlcyIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJoZF9leG4iLCJsZW5ndGgiLCJyZXZfYXBwZW5kIiwidGxfZXhuIiwidW56aXAiLCJleGlzdHMiLCJ0JDAiLCJleGlzdHMyX29rIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwibDIkMSIsImEyIiwibDEkMSIsImExIiwiaW5pdCQwIiwibCIsImluaXQkMSIsImZvbGQyX29rIiwiZm9yX2FsbCIsImZvcl9hbGwyX29rIiwiaXRlcjJfb2siLCJub250YWlsX21hcCIsIm5vbnRhaWxfbWFwaSIsInBhcnRpdGlvbiIsInJldl9tYXAiLCJsJDAiLCJhY2N1IiwicmV2X21hcDJfb2siLCJhY2N1JDAiLCJzb3J0IiwicmV2IiwicmVzdCIsImZvbGRfcmlnaHQyX29rIiwiaGFzaF9mb2xkX3VuaXQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mb2xkX3N0cmluZyIsImFzX2ludCIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9mb2xkX2Jvb2wiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiaGFzaF9mb2xkX29wdGlvbiIsImhhc2hfZm9sZF9lbGVtIiwiaGFzaF9mb2xkX2xpc3QiLCJzJDEiLCJsaXN0JDEiLCJzJDIiLCJsaXN0IiwibGlzdCQwIiwicyQwIiwiaGFzaF9mb2xkX2xhenlfdCIsImhhc2hfZm9sZF9yZWZfZnJvemVuIiwiaGFzaF9mb2xkX2FycmF5X2Zyb3plbiIsImFycmF5IiwiZSIsImkkMCIsImhhc2hfbmF0aXZlaW50IiwiaGFzaF9pbnQ2NCIsImhhc2hfaW50MzIiLCJoYXNoX2NoYXIiLCJoYXNoX2ludCIsImhhc2hfYm9vbCIsImhhc2hfc3RyaW5nIiwiaGFzaF9mbG9hdCIsImhhc2hfdW5pdCIsInNlZWQiLCJvZl9mb2xkIiwiaGFzaF9mb2xkX3QiLCJydW4iLCJmb2xkZXIiLCJjb21wYXJlX3N0YXRlIiwic3RhdGVfdG9fc3RyaW5nIiwic3RhdGUiLCJ0JDEiLCJ0JDIiLCJ0JDMiLCJ0JDQiLCJ0JDUiLCJjb21wYXJlX2Fic3RyYWN0IiwidHlwZV9uYW1lIiwiZXF1YWxfYWJzdHJhY3QiLCJjb21wYXJlX2Jvb2wiLCJjb21wYXJlX2NoYXIiLCJjb21wYXJlX2Zsb2F0IiwiY29tcGFyZV9pbnQiLCJjb21wYXJlX2ludDMyIiwiY29tcGFyZV9pbnQ2NCIsImNvbXBhcmVfbmF0aXZlaW50IiwiY29tcGFyZV9zdHJpbmciLCJjb21wYXJlX3VuaXQiLCJjb21wYXJlX2FycmF5IiwiY29tcGFyZV9lbHQiLCJsZW5fYSIsImxlbl9iIiwicmV0IiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJjb21wYXJlX29wdGlvbiIsImNvbXBhcmVfcmVmIiwiZXF1YWxfYm9vbCIsImVxdWFsX2NoYXIiLCJlcXVhbF9pbnQiLCJlcXVhbF9pbnQzMiIsImVxdWFsX2ludDY0IiwiZXF1YWxfbmF0aXZlaW50IiwiZXF1YWxfc3RyaW5nIiwiZXF1YWxfdW5pdCIsImVxdWFsX2Zsb2F0IiwiZXF1YWxfYXJyYXkiLCJlcXVhbF9lbHQiLCJlcXVhbF9saXN0IiwiZXF1YWxfb3B0aW9uIiwiZXF1YWxfcmVmIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2IiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsImhhc2giLCJmdW5jIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJyYWlzZV93aXRob3V0X2JhY2t0cmFjZSIsImluaXRpYWxpemVfbW9kdWxlIiwiY2xlYXJfYmFja3RyYWNlIiwid2l0aF9yZXR1cm4iLCJpc19hbGl2ZSIsInJldHVybiQwIiwid2l0aF9yZXR1cm5fb3B0aW9uIiwicHJlcGVuZCIsInBhcmFtIiwiY29uc3QkMCIsIm5vbiIsImZvcmV2ZXIiLCJlJDAiLCJjb21wb3NlIiwiZyIsImZsaXAiLCJhcHBseV9uX3RpbWVzIiwibiIsIm4kMCIsIngkMCIsIngkMSIsIm4kMSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwidG9fbW9uYWQiLCJvZl9tb25hZCIsImRlcml2ZWRfbWFwIiwibWFwMiIsInRhIiwidGIiLCJtYXAzIiwidGMiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJtYXAkMCIsImFwcGx5IiwibWYiLCJteCIsInR4IiwiY3VzdG9tX21hcCIsInJldHVybiQxIiwiYXBwbHkkMCIsIm1ha2UiLCJjb21wYXJhdG9yIiwiZXJyb3Jfc291cmNlXzAxMSIsImNtcF9mIiwiY21wX3MiLCJoYXNoX2ZvbGRfZiIsImhhc2hfZm9sZF9zIiwidF9vZl9zZXhwIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsInNleHBfMDEzIiwidGFnXzAxNCIsInNleHBfYXJnc18wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJvZl9mXzAyNSIsIm9mX3NfMDI2IiwiYXJnMF8wMjciLCJyZXMwXzAyOCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJmX3NleHBfZ3JhbW1hciIsInNfc2V4cF9ncmFtbWFyIiwib3BhcXVlX2lkZW50aXR5IiwibmFtZSIsImdldCIsImZzZXQiLCJzZXR0ZXIiLCJ1cGRhdGVyIiwiZmllbGQiLCJzeW1ib2xfY29uY2F0IiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInVuc2FmZV9ibGl0Iiwic3BsaXRfb25fY2hhciIsInNlcCIsImhzdiQyIiwicG9zX2NudW1fMDEwIiwicG9zX2JvbF8wMDgiLCJwb3NfbG51bV8wMDYiLCJwb3NfZm5hbWVfMDA0IiwiYXJnXzAxMSIsImJuZHNfMDAzIiwiYXJnXzAwOSIsImJuZHNfMDAzJDAiLCJhcmdfMDA3IiwiYm5kc18wMDMkMSIsImFyZ18wMDUiLCJibmRzXzAwMyQyIiwiaGFzaF9mb2xkX3QkMCIsImhhc2gkMCIsIm1ha2VfbG9jYXRpb25fc3RyaW5nIiwicG9zX2ZuYW1lIiwicG9zX2xudW0iLCJwb3NfY251bSIsInBvc19ib2wiLCJpc19lbXB0eSIsInBhcnRpdGlvbl9tYXAiLCJmc3QkMCIsInkkMCIsInNuZCQwIiwiZXJyb3Jfc291cmNlXzAwNSIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwNyIsInRhZ18wMDgiLCJzZXhwX2FyZ3NfMDA5IiwiYXJnMF8wMTAiLCJyZXMwXzAxMSIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJhX3NleHBfZ3JhbW1hciIsImJfc2V4cF9ncmFtbWFyIiwiY21wX2EiLCJjbXBfYiIsImFfMDI3IiwiYl8wMjgiLCJhXzAyOSIsImJfMDMwIiwiYV8wMzEiLCJiXzAzMiIsImFfMDMzIiwiYl8wMzQiLCJhXzAzNSIsImJfMDM2IiwiYV8wMzciLCJiXzAzOCIsImhhc2hfZm9sZF9hIiwiaGFzaF9mb2xkX2IiLCJnbG9iYWxpemUiLCJjaGVja19vayIsImNoZWNrX2Vycm9yIiwib2siLCJlcnJvciIsImZhaWwiLCJmYWlsZiIsIm1hcF9lcnJvciIsImJpbmQkMSIsIm1hcCQxIiwicmV0dXJuJDIiLCJpc19vayIsImlzX2Vycm9yIiwib2Zfb3B0aW9uIiwib3B0IiwiaXRlcl9lcnJvciIsInRvX2VpdGhlciIsIm9mX2VpdGhlciIsIm9rX2lmX3RydWUiLCJib29sIiwidHJ5X3dpdGgiLCJva19leG4iLCJva19vcl9mYWlsd2l0aCIsImNvbWJpbmUiLCJlcnIiLCJvazEiLCJvazIiLCJlcnIxIiwiZXJyMiIsImNvbWJpbmVfZXJyb3JzIiwiZXJycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJjb3VudCIsInN1bSIsIk0iLCJmb2xkX3Jlc3VsdCIsImFjYyIsIml0ZW0iLCJmb2xkX3VudGlsIiwiZmluaXNoIiwibWluX2VsdCIsImVsdCIsIm1heF9lbHQiLCJtZW0iLCJmaW5kX21hcCIsImZpbmQiLCJ0b19hcnJheSIsIml0ZXIkMCIsIml0ZXIkMSIsImxlbmd0aCQwIiwibGVuZ3RoJDEiLCJpc19lbXB0eSQwIiwibWVtJDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJvZl9hcnJheSIsImNvbmNhdF9vZl9hcnJheSIsImNvbmNhdF9tYXAiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiZWl0aGVyIiwicGFydGl0aW9uX3RmIiwiZm9sZCQwIiwib2ZfbGlzdCQwIiwib2ZfYXJyYXkkMCIsImNvbmNhdCQwIiwiZm9sZGkiLCJhY2MkMCIsImNvdW50aSIsImV4aXN0c2kiLCJmb3JfYWxsaSIsImZpbmRfbWFwaSIsImZpbmRpIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImRlcml2ZWRfaW5pdCIsImRlcml2ZWRfaW5pdCQwIiwiZGVyaXZlZF9jb25jYXRfbWFwaSIsImNvbmNhdF9tYXBpIiwiY29uY2F0X21hcGkkMCIsImZpbHRlcl9tYXBpIiwiZmlsdGVyaSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJwZWVrIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJkc3QiLCJzcmMiLCJkc3QkMCIsInNyYyQwIiwibWFrZV9kZWZhdWx0IiwiZGVmYXVsdCQwIiwic3BsaXRfZnJvbV9wYXJlbnQiLCJnZXRfc3RhdGUiLCJyYW5kb21fa2V5IiwiZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIiwiYWxsb3dfaW5fdGVzdHMiLCJiaXRzIiwiaW50JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiY2hhciQwIiwiYXNjaWkiLCJtYWtlX3NlbGZfaW5pdCIsImludF9vbl82NGJpdHMiLCJib3VuZCIsImludF9vbl8zMmJpdHMiLCJpbnQkMSIsImJpdHMkMCIsImZ1bGxfcmFuZ2VfaW50NjQiLCJmdWxsX3JhbmdlX2ludDMyIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzJDAiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludCIsInJhaXNlX2Nyb3NzZWRfYm91bmRzIiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsInN0cmluZ19vZl9ib3VuZCIsImludF9pbmNsIiwibG8iLCJoaSIsImRpZmYiLCJpbnQzMl9pbmNsIiwibmF0aXZlaW50X2luY2wiLCJpbnQ2NF9pbmNsIiwiZmxvYXQkMCIsInNjYWxlIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQxIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMzIiLCJmb2xkX2xlZnQiLCJhXzAxMCIsImJfMDExIiwiYV8wMTIiLCJiXzAxMyIsIm9mX2FfMDE0IiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9sZF9yaWdodDIiLCJmb2xkX3JpZ2h0Ml9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsIm5vdF9mb3VuZCIsImZpbmRfbWFwX2V4biIsIm5vdF9mb3VuZCQwIiwiZmluZF9leG4iLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDMkMCIsImFjIiwibDMkMSIsImFjJDAiLCJyZXZfbWFwMyIsInJldl9tYXAzX2V4biIsIm1hcDNfb2siLCJtYXAzX2V4biIsInJldl9tYXBfYXBwZW5kIiwiaCIsImxpc3QkMiIsInVuemlwMyIsInoiLCJ6aXBfZXhuIiwiemlwIiwicmV2X21hcGkiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcGkiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicmVkdWNlX2JhbGFuY2VkIiwic3RlcF9hY2N1bSIsIm51bSIsIm51bSQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExJDAiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwicmV2X2ZpbHRlcl9tYXBpIiwiaSQxIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzMiLCJzZXhwXzAzMSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMzQiLCJvZl9iXzAzNSIsInhfMDQwIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwiZXF1YWxfbG9jYWwiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsInN0cmluZyQwIiwiaGVyZSIsImhlcmUkMCIsInRvX3NleHBfaHVtIiwic2V4cHMiLCJ0b19tZXNzYWdlIiwiaW5mbyIsIm9mX21lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtIiwibWVzc2FnZSIsInRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCIsIm9mX2xhenkiLCJvZl9sYXp5X3NleHAiLCJvZl9sYXp5X3QiLCJsYXp5X3QiLCJjcmVhdGVmIiwib2ZfdGh1bmsiLCJzdHJpY3QiLCJzZXhwX29mX3giLCJ0YWdfc19sYXp5IiwidGFnX3MiLCJ0YWdfYXJnIiwidG9fZXhuIiwib2ZfZXhuIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImJhY2t0cmFjZSQyIiwicmFpc2UiLCJyYWlzZV9zIiwidG9faW5mbyIsIm9mX2luZm8iLCJjaGVja19maWVsZCIsImFfMDA3IiwiYl8wMDgiLCJvZl9hXzAxMyIsInhfMDE1Iiwib2ZfYV8wMTYiLCJ4XzAxNyIsImludmFyaWFudF9hIiwiZTEiLCJlMiIsInRyeV93aXRoX2pvaW4iLCJvZl9leG5fcmVzdWx0IiwiZXJyb3JfcyIsImVycm9yX3N0cmluZyIsImVycm9yZiIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2ludGVybmFsIiwib25fb2siLCJvbl9lcnJvciIsImlnbm9yZV91bml0X2xpc3QiLCJlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImNvbXBhcmVfcmV2ZXJzZWQiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImhhc2hfcGFyYW0iLCJwb2x5Iiwib2Zfa2V5IiwiS2V5IiwidG9fa2V5IiwiaGFzaF9wYXJhbSQwIiwicG9seSQwIiwib2Zfa2V5JDAiLCJ0b19rZXkkMCIsImhhc2hhYmxlIiwiZ2V0X3Bvc19sZW4iLCJmaW5kX2ZpcnN0X3NhdGlzZnlpbmciLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsImJsaXRfc3RyaW5nIiwic3JjX3BvcyIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJ2YWx1ZV9tYXAiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZm9jdXMiLCJjb21iaW5lX2FsbCIsIm1hdGNoJDAiLCJtYXRjaCIsImNvbWJpbmVfYWxsX3VuaXQiLCJ0b19vcHRpb24iLCJmb2N1cyQwIiwiY29tYmluZSQwIiwiYmluZCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJlcnJvcl9zb3VyY2VfMDI3Iiwib2Zfc18wMDIiLCJzdGF0ZV8wMDQiLCJzdGF0ZV8wMDkiLCJ2YWx1ZV8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE3IiwiYl8wMTgiLCJhXzAyMSIsImFfMDE5IiwiYl8wMjIiLCJiXzAyMCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIzIiwib2ZfYl8wMjQiLCJzZXhwXzAyOSIsInRhZ18wMzAiLCJzZXhwX2FyZ3NfMDM2IiwiYXJnMF8wMzciLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wNDEiLCJhcmcxXzA0MyIsImFyZzBfMDQyIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsIm9mX2FfMDQ4Iiwib2ZfYl8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsImFfb2Zfc2V4cCIsImJfb2Zfc2V4cCIsInNleHBfb2ZfYiIsImNfb2Zfc2V4cCIsInNleHBfb2ZfYyIsInNldCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25fbWFwaSIsImZpcnN0cyIsInNlY29uZHMiLCJwYXJ0aXRpb25pX3RmIiwidG9fc2VxdWVuY2VfbXV0YWJsZSIsInRvX3NlcXVlbmNlIiwiaTEiLCJpMiIsInR0Iiwid2lkdGgiLCJkZXB0aCIsImQiLCJ3IiwidHQkMCIsImdldCQwIiwiemVyb19vYmoiLCJjcmVhdGVfemVybyIsInVuc2FmZV9nZXQiLCJ1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJvYmoiLCJzZXRfd2l0aF9jYW1sX21vZGlmeSIsInVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbiIsIm9sZF9vYmoiLCJ1bnNhZmVfc2V0IiwidW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlIiwidW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfIiwidW5zYWZlX3NldF9pbnQiLCJ1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciIsImkkMiIsInVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCIsImNyZWF0ZV9vYmpfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJ1bnNhZmVfc3ViIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwia21wX2FycmF5XzAxMiIsImNhc2Vfc2Vuc2l0aXZlXzAxMCIsInBhdHRlcm5fMDA4IiwiYXJnXzAxMyIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsImJuZHNfMDA3JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwibGZpbmRpIiwicmZpbmRpIiwibGFzdF9ub25fZHJvcCIsInJzdHJpcCIsImZpcnN0X25vbl9kcm9wIiwibHN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY29uY2F0X2FycmF5IiwiYXIiLCJjb25jYXRfbGluZXMiLCJsaW5lcyQzIiwiY3JsZiIsIm5ld2xpbmVfbGVuIiwibGluZXMiLCJsaW5lcyQwIiwiYnVmIiwibGluZXMkMSIsIndyaXR0ZW4iLCJsaW5lcyQyIiwibGluZSQwIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwicGFkX3JpZ2h0IiwicGFkX2xlZnQiLCJsb2NhbF9jb3B5X3ByZWZpeCIsImJ1ZmZlcl9sZW4iLCJsb2NhbF9jb3B5X3RvX3N0cmluZyIsInNyY19wb3MkMCIsImRzdF9wb3MkMCIsInBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSIsImZzdF9wb3MkMCIsInNuZF9wb3MkMCIsImZzdHMiLCJzbmRzIiwiYyQxIiwic25kX3BvcyQxIiwiZnN0X3BvcyQxIiwiYyQyIiwic25kX3BvcyQyIiwic3JjX3BvcyQxIiwiZnN0X3BvcyIsInNuZF9wb3MiLCJjMSQxIiwiZWl0aGVyJDEiLCJjMiQxIiwiYzIkMiIsImMxJDAiLCJlaXRoZXIkMCIsImMyJDAiLCJwb3MkMiIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJhYnMiLCJyZW0iLCJpbmNyIiwiZGVjciIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJzeW0iLCJ0cmFucyIsImNvbnYiLCJkZXR1cGxlMiIsInR1cGxlMiIsIndpdG5lc3MiLCJ2XzAwNSIsInRvX3NleHAiLCJ1aWQiLCJzYW1lX3dpdG5lc3MiLCJzYW1lIiwic2FtZV93aXRuZXNzX2V4biIsIm5vbmVfc3Vic3RpdHV0ZSIsIm5vbmUiLCJ2YWx1ZV91bnNhZmUiLCJvZl9zZXhwYWJsZSIsInRvX3NleHBhYmxlIiwieF8wMDMiLCJvZl9hXzAwNCIsInhfMDA1IiwiaW5pdF9zb21lIiwiZ2V0X3NvbWVfZXhuIiwiaXNfbm9uZSQwIiwiaXNfc29tZSQwIiwic2V0X3NvbWUiLCJzZXRfbm9uZSIsInVuc2FmZV9nZXRfc29tZV9leG4iLCJ1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSIsInVuc2FmZV9pc19zb21lIiwidW5zYWZlX3NldF9zb21lIiwidW5zYWZlX3NldF9ub25lIiwiY2xlYXIiLCJlbGVtIiwibWFwX3NvbWUiLCJvZl9hcnJheV9zb21lIiwiY2FwYWNpdHkiLCJlbHRzIiwibGVuZ3RoXzAwMyIsImVsdHNfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJyZXNpemUiLCJzaXplIiwic2V0X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5JDAiLCJwdXNoIiwicG9wX25vbmVtcHR5IiwicG9wX2Vycm9yIiwicG9wIiwicG9wX2V4biIsInRvcF9ub25lbXB0eSIsInRvcF9lcnJvciIsInRvcCIsInRvcF9leG4iLCJ1bnRpbF9lbXB0eSIsInRfcmVzdWx0IiwiZmlsdGVyX2lucGxhY2UiLCJ3cml0ZV9pbmRleCIsInJlYWRfaW5kZXgiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW0iLCJhbGxfb2ZfYSIsImVudW1lcmF0ZV8wMDIiLCJlbnVtZXJhdGVfMDAxIiwiYWNjJDIiLCJvZl9hXzAwMyIsInNleHBfMDA4IiwidGFnXzAwOSIsInNleHBfYXJnc18wMTAiLCJhcmcwXzAxMSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwiYV8wMTEiLCJiXzAxMiIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDE4IiwibGVmdF8wMTciLCJyaWdodF8wMjIiLCJsZWZ0XzAyMSIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwicmlnaHRfMDIwIiwibGVmdF8wMTkiLCJ0XzAzMCIsInRfMDI5IiwidF8wMzIiLCJ0XzAzMSIsInJpZ2h0XzAzNCIsImxlZnRfMDMzIiwicmlnaHRfMDM4IiwibGVmdF8wMzciLCJ0XzA0MCIsInRfMDM5IiwidF8wNDIiLCJ0XzA0MSIsInJpZ2h0XzAzNiIsImxlZnRfMDM1Iiwib2Zfa18wNDMiLCJvZl92XzA0NCIsInNleHBfMDcxIiwiYXJnMV8wNjgiLCJhcmcwXzA2NyIsInJlczBfMDY5IiwiYXRvbV8wNDciLCJzZXhwX2FyZ3NfMDUwIiwiYXRvbV8wNDckMCIsImFyZzBfMDU4IiwiYXJnMV8wNTMiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwicmVzMF8wNTkiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsInJlczFfMDcwIiwib2Zfa18wNzIiLCJvZl92XzA3MyIsImFyZzFfMDgyIiwiYXJnMF8wODEiLCJyZXMwXzA4MyIsInZfMDc0IiwicmVzMV8wODQiLCJ2XzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwidl8wNzUiLCJrX3NleHBfZ3JhbW1hciIsInZfc2V4cF9ncmFtbWFyIiwiY21wX2xlZnQiLCJjbXBfcmlnaHQiLCJhXzA4NSIsImJfMDg2IiwicmlnaHRfMDkyIiwibGVmdF8wOTEiLCJ0XzA5NCIsInRfMDkzIiwidF8wOTYiLCJ0XzA5NSIsInJpZ2h0XzA4OCIsImxlZnRfMDg3IiwicmlnaHRfMDkwIiwibGVmdF8wODkiLCJhXzA5NyIsImJfMDk4IiwicmlnaHRfMTA0IiwibGVmdF8xMDMiLCJ0XzEwNiIsInRfMTA1IiwidF8xMDgiLCJ0XzEwNyIsInJpZ2h0XzEwMCIsImxlZnRfMDk5IiwicmlnaHRfMTAyIiwibGVmdF8xMDEiLCJvZl9sZWZ0XzEwOSIsIm9mX3JpZ2h0XzExMCIsInZfMTEzIiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczBfMTE2IiwicmVzMV8xMTciLCJ2XzExMSIsInZfMTEyIiwic2V4cF9vZl90JDMiLCJoZWlnaHQiLCJpbl9yYW5nZSIsImhsIiwiaHIiLCJsb3dlciQxIiwiaW52YXJpYW50cyIsImgkMSIsImgkMCIsInNsIiwic3IiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2siLCJrbCIsImskMSIsImtsJDAiLCJrJDIiLCJrciIsImxlZnRfbGVuZ3RoIiwicmlnaHRfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCIsImFycmF5X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheSIsImluY3JlYXNpbmciLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYkMCIsImxybCIsImxydiIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiQwIiwicmxsIiwicmx2IiwiYXV4IiwiYWRkX21pbiIsImFkZF9tYXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsInNwbGl0X2xlX2d0Iiwic3BsaXRfbHRfZ2UiLCJlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW8iLCJyZW1vdmVfaW5kZXgiLCJsX3NpemUiLCJ1bmlvbiIsInYxJDAiLCJ2MiQwIiwicjIkMCIsInIxJDAiLCJ1bmlvbl9saXN0IiwidG9fdHJlZSIsImludGVyIiwib3RoZXJfc2V0IiwiZSQxIiwiY29uc19yaWdodCIsIm9mX3NldCIsImVudW0kMCIsInRyZWUiLCJzeW1tZXRyaWNfZGlmZiIsImVsdCQwIiwiZW51bTEiLCJ0cmVlMSIsImVudW0yIiwidHJlZTIiLCJjb21wYXJlX3Jlc3VsdCIsIm5leHRfc3RhdGUiLCJncmVhdGVyX29yX2VxdWFsX3RvIiwibGVzc19vcl9lcXVhbF90byIsImluY2x1c2l2ZV9ib3VuZCIsInNpZGUiLCJtYXliZSIsInYkMSIsInYkMiIsInYkMyIsInYkNCIsImUkMiIsIm1lcmdlX3RvX3NlcXVlbmNlIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwidDIkMiIsInQxJDIiLCJpc19zdWJzZXQiLCJhcmVfZGlzam9pbnQiLCJhY2N1JDEiLCJmaWx0Iiwia2VlcF92IiwibF9mIiwibF90Iiwia2VlcF92X3QiLCJyX2YiLCJyX3QiLCJtayIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiY2hvb3NlIiwiY2hvb3NlX2V4biIsInBvc19yZWYiLCJncm91cF9ieSIsImVxdWl2Iiwic2V0JDAiLCJlcXVpdl9jbGFzc2VzIiwibm90X2VxdWl2X3giLCJlcXVpdl94IiwiZXF1aXZfY2xhc3NlcyQwIiwic3RhYmxlX2RlZHVwX2xpc3QiLCJsZWZ0b3ZlcnMiLCJhbHJlYWR5X3NlZW4iLCJhbHJlYWR5X3NlZW4kMCIsImxlZnRvdmVycyQwIiwidF9vZl9zZXhwX2RpcmVjdCIsImVsdF9sc3QiLCJlbF9zZXhwIiwiaXNfc3Vic2V0JDAiLCJzdWJzZXQiLCJzdXBlcnNldCIsInNleHBfb2ZfZWx0IiwiaW52YWxpZF9lbGVtZW50cyIsImludmFsaWRfZWxlbWVudHNfc2V4cCIsImxpa2UiLCJsaWtlX21heWJlX25vX29wIiwib2xkX3QiLCJvbGRfdHJlZSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsIm5hbWVkIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsInNwbGl0X2xlX2d0JDAiLCJzcGxpdF9sdF9nZSQwIiwiZ3JvdXBfYnkkMCIsIm50aCQwIiwicmVtb3ZlX2luZGV4JDAiLCJ0b19zZXF1ZW5jZSQwIiwiYmluYXJ5X3NlYXJjaCQwIiwiYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQkMCIsIm1lcmdlX3RvX3NlcXVlbmNlJDAiLCJoYXNoX2ZvbGRfZGlyZWN0IiwidF9vZl9zZXhwX2RpcmVjdCQwIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImVsZW1lbnRzJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImNob29zZSQxIiwiY2hvb3NlX2V4biQxIiwidG9fYXJyYXkkMSIsIml0ZXIkMiIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiY291bnQkMSIsInN1bSQxIiwiZmluZCQxIiwiZmluZF9leG4kMSIsImZpbmRfbWFwJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmaWx0ZXIkMSIsImZpbHRlcl9tYXAkMCIsInBhcnRpdGlvbl90ZiQxIiwiaXRlcjIkMSIsIm1lbSQxIiwiYWRkJDEiLCJyZW1vdmUkMSIsInVuaW9uJDEiLCJpbnRlciQxIiwiZGlmZiQxIiwic3ltbWV0cmljX2RpZmYkMSIsImNvbXBhcmVfZGlyZWN0JDAiLCJpc19zdWJzZXQkMyIsImFyZV9kaXNqb2ludCQxIiwib2Zfc2VxdWVuY2UkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJzcGxpdF9sZV9ndCQxIiwic3BsaXRfbHRfZ2UkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsIm9mX3RyZWUkMSIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDIiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJhcmdfMDEyIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwic2V0X2NhcGFjaXR5X2ludGVybmFsIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9hbmRfaWdub3JlX2V4biIsImZyb250X25vbmVtcHR5IiwibGFzdF9ub25lbXB0eSIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsIm1pbnVzX29uZSIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsInRyZWUkMCIsInRyZWUkMSIsImxlbmd0aCQyIiwidHJlZSQyIiwiZCQwIiwidHJlZSQzIiwibGVuZ3RoJDMiLCJ0cmVlJDQiLCJsZW5ndGgkNCIsInRyZWUkNSIsInNldF9taW4iLCJzZXRfbWF4IiwiYWRkX2V4biIsImFkZF9leG5faW50ZXJuYWwiLCJzaW5nbGV0b25fdG9fdHJlZV9leG4iLCJjb2xsYXBzZSIsImdvIiwiYWRkX3VuY2hlY2tlZCIsImdvJDAiLCJ0b190cmVlX3VuY2hlY2tlZCIsIm1heF9rZXkiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIiwiYnVpbGRlciIsInByZXZfa2V5Iiwiam9pbiQwIiwibGQkMCIsImxrJDAiLCJyayIsInJkJDAiLCJyayQwIiwibGsiLCJjbXAkMCIsIm1heWJlJDAiLCJzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkiLCJpbnRvIiwiYm91bmRhcnlfb3B0Iiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwiY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkNSIsImxlbmd0aCQ2IiwidHJlZSQ2IiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwibmV3X2RhdGEiLCJuZXdfZGF0YSQwIiwibmV3X2RhdGEkMSIsImtlZXBfZGF0YSIsImZpbHRlcl9rZXlzIiwia2VlcF9kYXRhX3QiLCJzdGVwX2RlZXBlcl9leG4iLCJkcm9wX3BoeXNfZXF1YWxfcHJlZml4IiwiYWNjMSIsImFjYzIiLCJ0cmVlMSQwIiwiYWNjMSQwIiwidHJlZTIkMCIsImFjYzIkMCIsImFjYzEkMSIsInRyZWUxJDEiLCJhY2MyJDEiLCJ0cmVlMiQxIiwiYWNjMiQyIiwidHJlZTIkMiIsImFjYzEkMiIsInRyZWUxJDIiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMSIsImVudW0yJDAiLCJlbnVtMSQwIiwia2V5cyIsIm9mX2ZvbGRhYmxlIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9mb2xkIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwib2ZfZm9sZGFibGUkMCIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfZm9sZGFibGVfbXVsdGkiLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9saXN0X3dpdGhfa2V5IiwiZ2V0X2tleSIsIm5ld19sZW5ndGgiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwidG9fYWxpc3QiLCJrZXlfb3JkZXIiLCJtZXJnZV9sYXJnZV9maXJzdCIsImxlbmd0aF9sYXJnZSIsInRfbGFyZ2UiLCJ0X3NtYWxsIiwibWVyZ2Vfc2tld2VkIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJyZXBhY2thZ2UiLCJtYXJrZXIiLCJjbG9zZXN0X2tleSIsImZvdW5kX21hcmtlciIsImZvdW5kX2tleSIsImZvdW5kX3ZhbHVlIiwiZm91bmRfdmFsdWUkMCIsImZvdW5kX2tleSQwIiwicmFuayIsIm51bV90b19zZWFyY2giLCJwYWlyIiwicGFpciQwIiwiYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQiLCJtYXliZV9ib3VuZCIsImlmX2V4Y2x1c2l2ZSIsImlmX2luY2x1c2l2ZSIsImZpbmRfYm91bmQiLCJib3VuZCQwIiwiYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIiwibG93ZXJfYm91bmQkMCIsInVwcGVyX2JvdW5kJDAiLCJvZl9pdGVyaSIsIm9mX2l0ZXJpX2V4biIsImtleV9vZl9zZXhwIiwidmFsdWVfb2Zfc2V4cCIsImFsaXN0X3NleHBzIiwiZm91bmRfZmlyc3RfayIsImsyX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwiZXJyb3JzIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJ0cmFuc3Bvc2Vfa2V5cyIsIm91dGVyX2NvbXBhcmF0b3IiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfdCIsIm91dGVyX2tleSIsImlubmVyX3QiLCJpbm5lcl9rZXkiLCJhY2NfbGVuIiwiZWx0X2xlbiIsInRyZWVfZmlsdGVyX21hcGkiLCJyX2xlbiIsImxfbGVuIiwid2l0aF9zYW1lX2xlbmd0aCIsIm9mX2xpa2VfdHJlZSIsIm9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCIsImFkZF9leG4kMCIsImFkZF9tdWx0aSQwIiwicmVtb3ZlX211bHRpJDAiLCJmaW5kX211bHRpJDAiLCJjaGFuZ2UkMCIsInVwZGF0ZSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaV91bnRpbCQwIiwiZm9sZCQzIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDAiLCJmaWx0ZXJpJDAiLCJmaWx0ZXJfbWFwaSQwIiwib2ZfbGlrZV90cmVlMiIsIm9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSQwIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm5ld190cmVlIiwibmV3X3RyZWVfd2l0aF9sZW5ndGgiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsIm9mX2xpc3Rfd2l0aF9rZXkkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDAiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDAiLCJzZXQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiaXRlcl9rZXlzJDEiLCJpdGVyaV91bnRpbCQxIiwibWFwaSQxIiwiZm9sZCQ0IiwiZm9sZDIkMiIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXJpJDEiLCJmaWx0ZXJfbWFwaSQxIiwicGFydGl0aW9uX21hcGkkMSIsInBhcnRpdGlvbl9tYXAkMSIsInBhcnRpdGlvbmlfdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJrZXlzJDEiLCJkYXRhJDEiLCJ0b19hbGlzdCQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwiZm9yX2FsbGkkMSIsImV4aXN0c2kkMSIsImNvdW50aSQxIiwiYXBwZW5kJDEiLCJzdWJyYW5nZSQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMSIsInJhbmdlX3RvX2FsaXN0JDEiLCJjbG9zZXN0X2tleSQxIiwibnRoJDIiLCJudGhfZXhuJDAiLCJyYW5rJDEiLCJrX29mX3NleHAiLCJ2X29mX3NleHAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJtYXBfa2V5cyQwIiwiZHVwIiwibWFwX2tleXNfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwidHJhbnNwb3NlX2tleXMkMSIsIm9mX3RyZWUkMyIsIm9mX2FsaXN0JDIiLCJvZl9hbGlzdF9vcl9lcnJvciQyIiwib2ZfYWxpc3RfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQyIiwib2Zfc2VxdWVuY2VfZXhuJDIiLCJvZl9zZXF1ZW5jZV9tdWx0aSQyIiwib2Zfc2VxdWVuY2VfZm9sZCQyIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm9mX2xpc3Rfd2l0aF9rZXkkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDMiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDMiLCJtYXBfa2V5cyQzIiwibWFwX2tleXNfZXhuJDMiLCJ0cmFuc3Bvc2Vfa2V5cyQzIiwidHJhbnNmZXIiLCJjYW1sX2l0ZXIiLCJjYW1sX2ZvbGQiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsIm9mX3N0cmluZ19yYXciLCJzaWduZWRuZXNzIiwicG9zX3N0ciIsImludDYzIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsIm9mX2ludF90cnVuYyIsInJlcHIiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwib2Zfc3RyaW5nX29wdCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkiLCJzdGFydF9pZHgiLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfcmFuZG9tbHlfZXhuIiwiaW52YXJpYW50X2tleSIsImludmFyaWFudF9kYXRhIiwicmVhbF9sZW4iLCJuZXdfdCIsInQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhJDAiLCJhY3Rpb24iLCJkc3RfZGF0YSIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwiZXJyb3Jfc291cmNlXzAwNyIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsInBpIiwic3FydF9waSIsInNxcnRfMnBpIiwiZXVsZXIiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzcXVhcmUiLCJmcmFjdGlvbmFsIiwiaW50ZWdyYWwiLCJyb3VuZF9uZWFyZXN0X2lubGluZSIsInJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIiwiY2VpbF9vcl9zdWNjIiwiZGlmZl9mbG9vciIsImRpZmZfY2VpbCIsImludDYzX3JvdW5kX2xib3VuZCIsImludDYzX3JvdW5kX3Vib3VuZCIsImludDYzX3JvdW5kX3VwX2V4biIsImludDYzX3JvdW5kX2Rvd25fZXhuIiwiaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9leG4iLCJjbGFzc2lmeSIsInN0cmlwX3plcm8iLCJkZWNpbWFscyIsImV4cGxpY2l0X3BsdXMiLCJ0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG8iLCJraWxvIiwibWVnYSIsImdpZ2EiLCJ0ZXJhIiwicGV0YSIsIm1hZyIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaGlnaGVyIiwiZGlmZl9yaWdodCIsImRpZmZfbGVmdCIsInBldGEkMCIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyIsInJvdW5kX2dlbiIsInNkIiwiZGQiLCJkZCQwIiwic2QkMCIsImRkJDEiLCJzZCQxIiwiYWJzX2RkIiwicm91bmRfc2lnbmlmaWNhbnQiLCJzaWduaWZpY2FudF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsIiwiZGVjaW1hbF9kaWdpdHMiLCJzaWduX2V4biIsInNpZ25fb3JfbmFuIiwiaWVlZV9uZWdhdGl2ZSIsIm1hbnRpc3NhX2JpdHMiLCJleHBvbmVudF9tYXNrNjQiLCJleHBvbmVudF9tYXNrIiwibWFudGlzc2FfbWFzayIsIm1hbnRpc3NhX21hc2s2NCIsImllZWVfZXhwb25lbnQiLCJpZWVlX21hbnRpc3NhIiwiY3JlYXRlX2llZWVfZXhuIiwibmVnYXRpdmUiLCJtYW50aXNzYSIsInNpZ25fYml0cyIsImV4cHRfYml0cyIsIm1hbnRfYml0cyIsImNyZWF0ZV9pZWVlIiwic3BlY2lhbGl6ZWRfaGFzaCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJjYW1sX2J1ZmZlcl9sZW5ndGgiLCJjYW1sX2J1ZmZlcl9ibGl0IiwiZWxpZGVkX21lc3NhZ2UiLCJlbGlkZSIsImF0X21vc3RfbnVtX2ZyYW1lcyIsInRvX3N0cmluZ19saXN0Iiwic2V0X3JlY29yZGluZyIsImFtX3JlY29yZGluZyIsIm1vc3RfcmVjZW50IiwibW9zdF9yZWNlbnRfZm9yX2V4biIsIndpdGhfcmVjb3JkaW5nIiwic2F2ZWQiLCJvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmEiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImdsb2JhbGl6ZV9mbG9hdCIsImZ1bmMkMSIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludCIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludDMyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJnbG9iYWxpemVfaW50NjQiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX25hdGl2ZWludCIsImZ1bmMkNSIsIm5hdGl2ZWludF9vZl9zZXhwIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwib3B0aW9uX29mX3NleHAiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsImdsb2JhbGl6ZV9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwiZnVuYyQ2IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJmYWlsd2l0aCIsImludmFsaWRfYXJnIiwiY29tcGFyZV9hcnJheSQwIiwiZXF1YWxfYXJyYXkkMCIsImdsb2JhbGl6ZV9hcnJheSQwIiwiYXJyYXlfb2Zfc2V4cCQwIiwic2V4cF9vZl9hcnJheSQwIiwiYXJyYXlfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2Jvb2wkMCIsImVxdWFsX2Jvb2wkMCIsImdsb2JhbGl6ZV9ib29sJDAiLCJoYXNoX2ZvbGRfYm9vbCQwIiwiaGFzaF9ib29sJDAiLCJib29sX29mX3NleHAkMCIsInNleHBfb2ZfYm9vbCQwIiwiYm9vbF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfY2hhciQwIiwiZXF1YWxfY2hhciQwIiwiZ2xvYmFsaXplX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJnbG9iYWxpemVfZmxvYXQkMCIsImhhc2hfZm9sZF9mbG9hdCQwIiwiaGFzaF9mbG9hdCQwIiwiZmxvYXRfb2Zfc2V4cCQwIiwic2V4cF9vZl9mbG9hdCQwIiwiZmxvYXRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludCQwIiwiZXF1YWxfaW50JDAiLCJnbG9iYWxpemVfaW50JDAiLCJoYXNoX2ZvbGRfaW50JDAiLCJoYXNoX2ludCQwIiwiaW50X29mX3NleHAkMCIsInNleHBfb2ZfaW50JDAiLCJpbnRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDMyJDAiLCJlcXVhbF9pbnQzMiQwIiwiZ2xvYmFsaXplX2ludDMyJDAiLCJoYXNoX2ZvbGRfaW50MzIkMCIsImhhc2hfaW50MzIkMCIsImludDMyX29mX3NleHAkMCIsInNleHBfb2ZfaW50MzIkMCIsImludDMyX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQ2NCQwIiwiZXF1YWxfaW50NjQkMCIsImdsb2JhbGl6ZV9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiZ2xvYmFsaXplX2xpc3QkMCIsImhhc2hfZm9sZF9saXN0JDAiLCJsaXN0X29mX3NleHAkMCIsInNleHBfb2ZfbGlzdCQwIiwibGlzdF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbmF0aXZlaW50JDAiLCJlcXVhbF9uYXRpdmVpbnQkMCIsImdsb2JhbGl6ZV9uYXRpdmVpbnQkMCIsImhhc2hfZm9sZF9uYXRpdmVpbnQkMCIsImhhc2hfbmF0aXZlaW50JDAiLCJuYXRpdmVpbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfb3B0aW9uJDAiLCJlcXVhbF9vcHRpb24kMCIsImdsb2JhbGl6ZV9vcHRpb24kMCIsImhhc2hfZm9sZF9vcHRpb24kMCIsIm9wdGlvbl9vZl9zZXhwJDAiLCJzZXhwX29mX29wdGlvbiQwIiwib3B0aW9uX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9yZWYkMCIsImVxdWFsX3JlZiQwIiwiZ2xvYmFsaXplX3JlZiQwIiwicmVmX29mX3NleHAkMCIsInNleHBfb2ZfcmVmJDAiLCJyZWZfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3N0cmluZyQwIiwiZXF1YWxfc3RyaW5nJDAiLCJnbG9iYWxpemVfc3RyaW5nJDAiLCJoYXNoX2ZvbGRfc3RyaW5nJDAiLCJoYXNoX3N0cmluZyQwIiwic3RyaW5nX29mX3NleHAkMCIsInNleHBfb2Zfc3RyaW5nJDAiLCJzdHJpbmdfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2J5dGVzJDAiLCJlcXVhbF9ieXRlcyQwIiwiZ2xvYmFsaXplX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiZ2xvYmFsaXplX3VuaXQkMCIsImhhc2hfZm9sZF91bml0JDAiLCJoYXNoX3VuaXQkMCIsInVuaXRfb2Zfc2V4cCQwIiwic2V4cF9vZl91bml0JDAiLCJ1bml0X3NleHBfZ3JhbW1hciQwIiwicmFpc2VfcyQwIiwidG9fc3RyaW5nIiwibWFwIiwiZiIsIm8iLCJ2Iiwic2V0X2lucHV0X25hbWUiLCJuYW1lIiwic2V0X2lucHV0X2xleGJ1ZiIsImxleGJ1Zl9vcHQiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInByaW50X2xvbmdpZGVudCIsImxvbmdwcmVmaXgiLCJzJDAiLCJ5IiwibG9uZ2lkZW50X2xvYyIsImNvbnN0YW50IiwiaSIsIm0iLCJpJDAiLCJpJDEiLCJkZWxpbSIsImkkMiIsIm0kMCIsIm11dGFibGVfZmxhZyIsInZpcnR1YWxfZmxhZyIsInJlY19mbGFnIiwicmYiLCJub25yZWNfZmxhZyIsImRpcmVjdGlvbl9mbGFnIiwicHJpdmF0ZV9mbGFnIiwiY29uc3RhbnRfc3RyaW5nIiwidHl2YXIiLCJ0eXZhcl9sb2MiLCJzdHJpbmdfcXVvdCIsImNsYXNzX3BhcmFtc19kZWYiLCJsIiwidHlwZV9wYXJhbSIsInR5cGVfd2l0aF9sYWJlbCIsImxhYmVsIiwiY29yZV90eXBlMSIsImNvcmVfdHlwZSIsImF0dHJpYnV0ZXMiLCJjdDIiLCJjdDEiLCJjdCIsInNsIiwiY3QkMCIsImN0JDEiLCJsJDAiLCJsaSIsImwkMSIsImNvcmVfZmllbGRfdHlwZSIsImZpZWxkX3ZhciIsImwkMiIsImxpJDAiLCJsb3ciLCJjbG9zZWQiLCJsJDMiLCJmaXJzdF9pc19pbmhlcml0IiwidHlwZV92YXJpYW50X2hlbHBlciIsImN0bCIsImNzdHJzIiwibGlkIiwiYXV4IiwiZXh0ZW5zaW9uIiwicGF0dGVybiQxIiwicGF0dGVybiIsInAiLCJwMiIsInAxIiwib3JwYXRzIiwicGF0dGVybjEiLCJwYXR0ZXJuMSQwIiwicGF0dGVybl9saXN0X2hlbHBlciIsInBhdDIiLCJwYXQxIiwic2ltcGxlX3BhdHRlcm4iLCJzaW1wbGVfcGF0dGVybiQwIiwicG8iLCJ2bCIsImMyIiwiYzEiLCJsb25naWRlbnRfeF9wYXR0ZXJuIiwicCQwIiwicCQxIiwicCQyIiwid2l0aF9wYXJlbiIsImxhYmVsX2V4cCIsIm9wdCIsInJlc3QiLCJ0eHQkMCIsIm8kMCIsInN1Z2FyX2V4cHIiLCJhcmdzIiwiaWQiLCJsYWIiLCJwcmludF9pbmRleG9wIiwicGF0aF9wcmVmaXgiLCJhc3NpZ24iLCJsZWZ0IiwicHJpbnRfaW5kZXgiLCJpbmRpY2VzIiwicmVtX2FyZ3MiLCJwcmludF9wYXRoIiwic2ltcGxlX2V4cHIiLCJlJDAiLCJwYXRoIiwiZnVuYyIsIm90aGVyX2FyZ3MiLCJhJDAiLCJhc3NpZ24kMCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsIm1pZ3JhdGlvbl9lcnJvciIsIm1pc3NpbmdfZmVhdHVyZSIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwidGNvbnN0cmFpbnQiLCJwYXJhbXMiLCJhdHRyIiwiZXhwciQzIiwiY2FzZXMiLCJjb3B5X2Nhc2UiLCJjb3B5X2NvcmVfdHlwZSIsImMxJDAiLCJleHByJDEiLCJleHByJDIiLCJwYXJhbSIsInBwYXJhbV9sb2MiLCJleHAwIiwiY29weV9wYXR0ZXJuIiwiY29weV9hcmdfbGFiZWwiLCJwZXhwX2Rlc2MkMCIsIngxJDAiLCJ4MSQxIiwieDAkMyIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwieDEkMTIiLCJ4MCQxNiIsIngyJDMiLCJ4MSQxMyIsIngwJDE3IiwieDEkMTQiLCJ4MCQxOCIsImNvcHlfbGFiZWwiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJ4MCQyMSIsIngyJDQiLCJ4MSQxNiIsIngwJDIyIiwiY29weV9tb2R1bGVfZXhwciIsIngxJDE3IiwieDAkMjMiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsIngwJDI0IiwieDAkMjUiLCJ4MSQxOCIsIngwJDI2IiwieDAkMjciLCJjb3B5X2NsYXNzX3N0cnVjdHVyZSIsIngxJDE5IiwieDAkMjgiLCJ4MCQyOSIsIngxJDIwIiwieDAkMzAiLCJjb3B5X29wZW5faW5mb3MiLCJ4MCQzMSIsImNvcHlfbGV0b3AiLCJ4MCQzMiIsImNvcHlfZXh0ZW5zaW9uIiwiY29weV9iaW5kaW5nX29wIiwicGJvcF9sb2MiLCJwYm9wX2V4cCIsInBib3BfcGF0IiwicGJvcF9vcCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9jb25zdHJhaW50IiwicHZiX2V4cHIiLCJwdmJfcGF0IiwiY29weV92YWx1ZV9jb25zdHJhaW50IiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsImNvcHlfcGF0dGVybl9kZXNjIiwiY29weV9jbG9zZWRfZmxhZyIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsImNvZXJjaW9uIiwiZ3JvdW5kIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X2xvY2F0aW9uIiwiY29weV9vYmplY3RfZmllbGQiLCJjb3B5X3Jvd19maWVsZCIsImNvcHlfcGFja2FnZV90eXBlIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwiY29weV9yb3dfZmllbGRfZGVzYyIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsImNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZSIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiY29weV9wYXlsb2FkIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9leGNlcHRpb24iLCJjb3B5X21vZHVsZV9iaW5kaW5nIiwiY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2luY2x1ZGVfaW5mb3MiLCJjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX2luZm9zIiwiY29weV9jbGFzc19leHByIiwicGNsX2F0dHJpYnV0ZXMiLCJwY2xfbG9jIiwicGNsX2Rlc2MiLCJjb3B5X2NsYXNzX2V4cHJfZGVzYyIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfb3Blbl9kZXNjcmlwdGlvbiIsInBjc3RyX2ZpZWxkcyIsInBjc3RyX3NlbGYiLCJjb3B5X2NsYXNzX2ZpZWxkIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MiLCJjb3B5X292ZXJyaWRlX2ZsYWciLCJjb3B5X2NsYXNzX2ZpZWxkX2tpbmQiLCJjb3B5X211dGFibGVfZmxhZyIsImNvcHlfcHJpdmF0ZV9mbGFnIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwiY29weV9tb2R1bGVfZXhwcl9kZXNjIiwiY29weV9mdW5jdG9yX3BhcmFtZXRlciIsImNvcHlfbW9kdWxlX3R5cGUiLCJwbXR5X2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfZGVzYyIsImNvcHlfbW9kdWxlX3R5cGVfZGVzYyIsImNvcHlfd2l0aF9jb25zdHJhaW50IiwiY29weV9zaWduYXR1cmVfaXRlbSIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwiY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIiwiY29weV9tb2R1bGVfZGVjbGFyYXRpb24iLCJjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24iLCJjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZGVzYyIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwiY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MiLCJjb3B5X3ZpcnR1YWxfZmxhZyIsIngzJDAiLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsInBwYXJhbV9kZXNjIiwiYWNjJDEiLCJhcmdfbGlzdCIsImMyJDAiLCJ0eXBlX2NvbnN0cmFpbnQiLCJvcHRfZGVmYXVsdCQwIiwiYXJnX2xhYmVsJDAiLCJ4MCQzMyIsIngyJDUiLCJ4MSQyMSIsIngwJDM0IiwibWVyZ2VfbG9jIiwiZ2hvc3RfbG9jIiwiZ2hvc3RfY29uc3RyYWludCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiQwIiwicHR5cF9sb2MkMCIsInR5cCQzIiwicHZiX3BhdCQzIiwiZ3JvdW5kJDAiLCJwZXhwX2xvYyQwIiwicHZiX2V4cHIkMyIsInB2Yl9leHByJDEiLCJwdmJfcGF0JDEiLCJ0eXAkMiIsInR5cCQxIiwidHlwX3BvbHkiLCJwdmJfcGF0JDIiLCJwdmJfZXhwciQyIiwidmFyJDAiLCJsb2MkMCIsImVtcHR5X3N0cnVjdCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJjb3B5X3Bvc2l0aW9uIiwicG9zX2NudW0iLCJwb3NfYm9sIiwicG9zX2xudW0iLCJwb3NfZm5hbWUiLCJyZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIiwidHlfZXh0IiwicnQkMCIsInZhbHVlX3BhdHRlcm4iLCJ2YWx1ZV9leHAiLCJpbm5lcl9lIiwiZXh0ZXJuX2N0IiwiZXh0ZXJuX2N0JDAiLCJwdF90eXZhcnMkMCIsIndpdGhfY29uc3RyYWludCIsInR5X3ZhcnMiLCJwdmJfY29uc3RyYWludCQwIiwiY29lcmNlIiwiZ3IiLCJwdmJfY29uc3RyYWludCQxIiwiaXNfdW5pdCIsImNvcHlfZXhwciIsImNvcHlfY2FzZXMiLCJjb3B5X3BhdCIsImNvcHlfdHlwIiwibWFwX29wdGlvbiIsImNvcHlfb3B0aW9uIiwiY29weV9ib29sIiwiY29weV9sb25naWRlbnQiLCJ4MF9sb2MiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwid3JhcCIsImN0eSIsImxvYyQxIiwibm9sb2MiLCJmcm9tX2xvYyIsInBvcyIsImluamVjdF9wcmVkZWZfb3B0aW9uIiwiZCIsImlkZW50IiwidHlwZV9kZWNsYXJhdGlvbnMiLCJyZWNmbGFnIiwidHlwZXMiLCJleHRyYWN0X3ByZWRlZl9vcHRpb24iLCJpc19ub25yZWMiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImkkMCIsImludDMyIiwic3VmZml4JDAiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJjaGFyJDAiLCJjIiwic3RyaW5nIiwicXVvdGF0aW9uX2RlbGltaXRlciIsInMiLCJsb2MiLCJtayIsIm5hbWUiLCJwYXlsb2FkIiwibWskMCIsImQiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwidHJ5JDAiLCJ0dXBsZSQxIiwiY29uc3RydWN0JDAiLCJ2YXJpYW50JDEiLCJyZWNvcmQkMCIsInNldGZpZWxkIiwiYXJyYXkkMCIsImlmdGhlbmVsc2UiLCJzZXF1ZW5jZSIsIndoaWxlJDAiLCJmb3IkMCIsImNvbnN0cmFpbnQkMCIsImNvZXJjZSIsInNlbmQiLCJuZXckMCIsInNldGluc3R2YXIiLCJvdmVycmlkZSIsImxldG1vZHVsZSIsImxldGV4Y2VwdGlvbiIsImFzc2VydCIsImxhenkkMCIsInBvbHkkMCIsIm9iamVjdCQwIiwibmV3dHlwZSIsInBhY2siLCJvcGVuJDAiLCJsZXRvcCIsImFuZHMiLCJib2R5IiwiZXh0ZW5zaW9uJDEiLCJ1bnJlYWNoYWJsZSIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwibWskMyIsImF0dHIkMiIsImlkZW50JDAiLCJhbGlhcyQxIiwic2lnbmF0dXJlIiwiZnVuY3RvciIsIndpdGgkMCIsInR5cGVvZiQwIiwiZXh0ZW5zaW9uJDIiLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInByaW0iLCJtayQxMiIsIm1rJDEzIiwic3luIiwibWskMTQiLCJtayQxNSIsImV4cHIiLCJtayQxNiIsIm1rJDE3IiwibWV4cHIiLCJtayQxOCIsIm1rJDE5IiwidmlydCIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsImtpbmQiLCJwcml2IiwiY29uc3RydWN0b3IiLCJyZXMiLCJ2YXJzIiwiYXJncyIsImZpZWxkJDAiLCJtdXQiLCJtayQyMSIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJta19leGNlcHRpb24iLCJjb25zdHJ1Y3RvciQwIiwiZGVjbCIsInJlYmluZCIsImxpZCIsIm1rJDIyIiwic2VsZiIsImZpZWxkcyIsIm1rJDIzIiwibWskMjQiLCJ0YWciLCJjb25zdCQwIiwidHlzIiwiaW5oZXJpdCQxIiwidHkiLCJtayQyNSIsInRhZyQwIiwiaW5oZXJpdCQyIiwic3RyaW5nX3ZlcnNpb24iLCJzdHJpbmdfdmVyc2lvbiQwIiwic3RyaW5nX3ZlcnNpb24kMSIsInN0cmluZ192ZXJzaW9uJDIiLCJzdHJpbmdfdmVyc2lvbiQzIiwic3RyaW5nX3ZlcnNpb24kNCIsInN0cmluZ192ZXJzaW9uJDUiLCJzdHJpbmdfdmVyc2lvbiQ2Iiwic3RyaW5nX3ZlcnNpb24kNyIsInN0cmluZ192ZXJzaW9uJDgiLCJzdHJpbmdfdmVyc2lvbiQ5Iiwic3RyaW5nX3ZlcnNpb24kMTAiLCJzdHJpbmdfdmVyc2lvbiQxMSIsInN0cmluZ192ZXJzaW9uJDEyIiwic3RyaW5nX3ZlcnNpb24kMTMiLCJzdHJpbmdfdmVyc2lvbiQxNCIsIm1pZ3JhdGlvbl9pbmZvIiwiaWQiLCJtaWdyYXRpb25faWRlbnRpdHkiLCJjb21wb3NlIiwiZyIsIm1pZ3JhdGlvbl9mdW5jdGlvbnMiLCJpc191bmRlZmluZWQiLCJpbW1lZGlhdGVfbWlncmF0aW9uIiwiQSIsImRpcmVjdGlvbiIsInZlcnNpb24iLCJ0byIsImZ1bnMiLCJCIiwibSQxIiwiVG8iLCJhYiIsInRvMiIsImJjIiwibSQwIiwiY29weV9zdHJ1Y3R1cmVfaXRlbSIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJjb3B5X21vZHVsZV90eXBlIiwiY29weV9tb2R1bGVfZXhwciIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwiY29weV9jbGFzc190eXBlIiwiY29weV9jbGFzc19maWVsZCIsImNvcHlfY2xhc3NfZXhwciIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2FzZSIsImNvcHlfcGF0dGVybiIsImNvcHlfZXhwcmVzc2lvbiIsImNvcHlfY29yZV90eXBlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlIiwibWlncmF0aW9uX2luZm8kMCIsInZlcnNpb24kMCIsIm1pZ3JhdGlvbl9pbmZvJDEiLCJ2ZXJzaW9uJDEiLCJtaWdyYXRpb25faW5mbyQyIiwidmVyc2lvbiQyIiwibWlncmF0aW9uX2luZm8kMyIsInZlcnNpb24kMyIsIm1pZ3JhdGlvbl9pbmZvJDQiLCJ2ZXJzaW9uJDQiLCJtaWdyYXRpb25faW5mbyQ1IiwidmVyc2lvbiQ1IiwibWlncmF0aW9uX2luZm8kNiIsInZlcnNpb24kNiIsIm1pZ3JhdGlvbl9pbmZvJDciLCJ2ZXJzaW9uJDciLCJtaWdyYXRpb25faW5mbyQ4IiwidmVyc2lvbiQ4IiwibWlncmF0aW9uX2luZm8kOSIsInZlcnNpb24kOSIsIm1pZ3JhdGlvbl9pbmZvJDEwIiwidmVyc2lvbiQxMCIsIm1pZ3JhdGlvbl9pbmZvJDExIiwidmVyc2lvbiQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwidmVyc2lvbiQxMiIsIm1pZ3JhdGlvbl9pbmZvJDEzIiwidmVyc2lvbiQxMyIsIm1pZ3JhdGlvbl9pbmZvJDE0IiwidmVyc2lvbiQxNCIsImFsbF92ZXJzaW9ucyIsImZyb21fbWFnaWMiLCJtYWdpYyIsImFsbF92ZXJzaW9uc190b3BfZG93biIsInRhaWwiLCJWZXJzaW9uIiwib2Zfb2NhbWwiLCJub2RlIiwieSIsInRvX29jYW1sIiwib2Zfb2NhbWxfbWFwcGVyIiwiaXRlbSIsImN0eHQiLCJ0b19vY2FtbF9tYXBwZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxleGJ1ZiIsImludGVyZmFjZSQwIiwidG9wbGV2ZWxfcGhyYXNlIiwidXNlX2ZpbGUiLCJleHByZXNzaW9uIiwicGF0dGVybiIsImRlZmF1bHRfcHJpbnRfd2FybmluZyIsImFib3V0X2l0ZV9icmFuY2hfcmVmIiwiY2FyZV9hYm91dF9pdGVfYnJhbmNoIiwiYWJvdXRfaXRlX2JyYW5jaCIsInNlbGZfMSIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2ZuYW1lJDAiLCJwb3NfbG51bSQwIiwicG9zX2JvbCQwIiwicG9zX2NudW0kMCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJsb2Nfc3RhcnQkMCIsImxvY19lbmQkMCIsImxvY19naG9zdCQwIiwidHh0IiwidHh0JDAiLCJsb2MkMCIsImEkMCIsImEkMSIsImEkMiIsImIkMCIsImIkMSIsImEkMyIsImEkNCIsImIkMiIsImMkMCIsImIkMyIsImEkNSIsImEkNiIsImIkNCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwicHR5cF9kZXNjJDAiLCJwdHlwX2xvYyQwIiwicHR5cF9sb2Nfc3RhY2skMCIsInB0eXBfYXR0cmlidXRlcyQwIiwiYSQ3IiwiYSQ4IiwiYiQ1IiwiYSQ5IiwiYSQxMCIsImIkNiIsImIkNyIsImEkMTEiLCJhJDEyIiwiYiQ4IiwiYyQxIiwiYiQ5IiwiYSQxMyIsImEkMTQiLCJiJDEwIiwiYyQyIiwiYiQxMSIsImEkMTUiLCJhJDE2IiwiYiQxMiIsImEkMTciLCJhJDE4IiwiYSQxOSIsImEkMjAiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJwcmZfZGVzYyQwIiwicHJmX2xvYyQwIiwicHJmX2F0dHJpYnV0ZXMkMCIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsInBvZl9kZXNjJDAiLCJwb2ZfbG9jJDAiLCJwb2ZfYXR0cmlidXRlcyQwIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsInBwYXRfZGVzYyQwIiwicHBhdF9sb2MkMCIsInBwYXRfbG9jX3N0YWNrJDAiLCJwcGF0X2F0dHJpYnV0ZXMkMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImEkMjciLCJhJDI4IiwiYSQyOSIsImEkMzAiLCJiJDEzIiwiYSQzMSIsImEkMzIiLCJiJDE0IiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsImQkMCIsImIkMTUiLCJiJDE2IiwiYyQzIiwiYiQxNyIsImIkMTgiLCJjJDQiLCJjJDUiLCJiJDE5IiwiYiQyMCIsImMkNiIsImIkMjEiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImQkMSIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJkJDIiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImFuZHMkMCIsImJvZHkkMCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwYm9wX29wJDAiLCJwYm9wX3BhdCQwIiwicGJvcF9leHAkMCIsInBib3BfbG9jJDAiLCJwdmFsX2xvYyIsInB2YWxfYXR0cmlidXRlcyIsInB2YWxfcHJpbSIsInB2YWxfdHlwZSIsInB2YWxfbmFtZSIsInB2YWxfbmFtZSQwIiwicHZhbF90eXBlJDAiLCJwdmFsX3ByaW0kMCIsInB2YWxfYXR0cmlidXRlcyQwIiwicHZhbF9sb2MkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMiLCJwdHlleHRfbG9jIiwicHR5ZXh0X3ByaXZhdGUiLCJwdHlleHRfY29uc3RydWN0b3JzIiwicHR5ZXh0X3BhcmFtcyIsInB0eWV4dF9wYXRoIiwicHR5ZXh0X3BhdGgkMCIsInB0eWV4dF9wYXJhbXMkMCIsInB0eWV4dF9jb25zdHJ1Y3RvcnMkMCIsInB0eWV4dF9wcml2YXRlJDAiLCJwdHlleHRfbG9jJDAiLCJwdHlleHRfYXR0cmlidXRlcyQwIiwicGV4dF9hdHRyaWJ1dGVzIiwicGV4dF9sb2MiLCJwZXh0X2tpbmQiLCJwZXh0X25hbWUiLCJwZXh0X25hbWUkMCIsInBleHRfa2luZCQwIiwicGV4dF9sb2MkMCIsInBleHRfYXR0cmlidXRlcyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMiLCJwdHlleG5fbG9jIiwicHR5ZXhuX2NvbnN0cnVjdG9yIiwicHR5ZXhuX2NvbnN0cnVjdG9yJDAiLCJwdHlleG5fbG9jJDAiLCJwdHlleG5fYXR0cmlidXRlcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJwY3NpZ19zZWxmJDAiLCJwY3NpZ19maWVsZHMkMCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwicGN0Zl9kZXNjJDAiLCJwY3RmX2xvYyQwIiwicGN0Zl9hdHRyaWJ1dGVzJDAiLCJwY2lfYXR0cmlidXRlcyIsInBjaV9sb2MiLCJwY2lfZXhwciIsInBjaV9uYW1lIiwicGNpX3BhcmFtcyIsInBjaV92aXJ0IiwicGNpX3ZpcnQkMCIsInBjaV9wYXJhbXMkMCIsInBjaV9uYW1lJDAiLCJwY2lfZXhwciQwIiwicGNpX2xvYyQwIiwicGNpX2F0dHJpYnV0ZXMkMCIsInBjbF9hdHRyaWJ1dGVzIiwicGNsX2xvYyIsInBjbF9kZXNjIiwicGNsX2Rlc2MkMCIsInBjbF9sb2MkMCIsInBjbF9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsInBjZl9kZXNjJDAiLCJwY2ZfbG9jJDAiLCJwY2ZfYXR0cmlidXRlcyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInBtZF9uYW1lJDAiLCJwbWRfdHlwZSQwIiwicG1kX2F0dHJpYnV0ZXMkMCIsInBtZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwb3Blbl9leHByJDAiLCJwb3Blbl9vdmVycmlkZSQwIiwicG9wZW5fbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzJDAiLCJwaW5jbF9hdHRyaWJ1dGVzIiwicGluY2xfbG9jIiwicGluY2xfbW9kIiwicGluY2xfbW9kJDAiLCJwaW5jbF9sb2MkMCIsInBpbmNsX2F0dHJpYnV0ZXMkMCIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwicG1vZF9kZXNjJDAiLCJwbW9kX2xvYyQwIiwicG1vZF9hdHRyaWJ1dGVzJDAiLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsInBzdHJfZGVzYyQwIiwicHN0cl9sb2MkMCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtYl9uYW1lJDAiLCJwbWJfZXhwciQwIiwicG1iX2F0dHJpYnV0ZXMkMCIsInBtYl9sb2MkMCIsInBkaXJfbG9jIiwicGRpcl9hcmciLCJwZGlyX25hbWUiLCJwZGlyX25hbWUkMCIsInBkaXJfYXJnJDAiLCJwZGlyX2xvYyQwIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwic2VsZl8yIiwic2VsZl8zIiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImFjYyQ1IiwiYWNjJDYiLCJhY2MkNyIsImFjYyQ4IiwiYWNjJDkiLCJhY2MkMTAiLCJhY2MkMTEiLCJhY2MkMTIiLCJhY2MkMTMiLCJhY2MkMTQiLCJhY2MkMTUiLCJhY2MkMTYiLCJhY2MkMTciLCJhY2MkMTgiLCJhY2MkMTkiLCJhY2MkMjAiLCJhY2MkMjEiLCJhY2MkMjIiLCJhY2MkMjMiLCJhY2MkMjQiLCJhY2MkMjUiLCJhY2MkMjYiLCJhY2MkMjciLCJhY2MkMjgiLCJhY2MkMjkiLCJhY2MkMzAiLCJhY2MkMzEiLCJhY2MkMzIiLCJhY2MkMzMiLCJhY2MkMzQiLCJhY2MkMzUiLCJhY2MkMzYiLCJhY2MkMzciLCJhY2MkMzgiLCJhY2MkMzkiLCJhY2MkNDAiLCJhY2MkNDEiLCJhY2MkNDIiLCJhY2MkNDMiLCJhY2MkNDQiLCJhY2MkNDUiLCJhY2MkNDYiLCJhY2MkNDciLCJhY2MkNDgiLCJhY2MkNDkiLCJhY2MkNTAiLCJhY2MkNTEiLCJhY2MkNTIiLCJhY2MkNTMiLCJhY2MkNTQiLCJhY2MkNTUiLCJzZWxmXzQiLCJhY2MkNTYiLCJhY2MkNTciLCJhY2MkNTgiLCJhY2MkNTkiLCJhY2MkNjAiLCJhY2MkNjEiLCJhY2MkNjIiLCJhY2MkNjMiLCJhY2MkNjQiLCJhY2MkNjUiLCJhY2MkNjYiLCJhY2MkNjciLCJhY2MkNjgiLCJzZWxmXzUiLCJjdHgiLCJzZWxmXzYiLCJzZWxmXzciLCJ0b19leHRlbnNpb24iLCJlcnJvciIsInN1Yl9tc2dzIiwibWFpbl9tc2ciLCJta19zdHJpbmdfY29uc3RhbnQiLCJleHRlbnNpb25fb2Zfc3ViX21zZyIsInN1Yl9tc2ciLCJyZWdpc3Rlcl9lcnJvcl9vZl9leG4iLCJtZXNzYWdlIiwic2V0X21lc3NhZ2UiLCJtYWtlIiwic3ViIiwic3ViJDAiLCJ1cGRhdGVfbG9jIiwiZ2V0X2xvY2F0aW9uIiwib2ZfZXhuIiwicmFpc2UiLCJwcmludCIsImRpZmZfY29tbWFuZCIsImZpbGUxIiwiZmlsZTIiLCJleHRyYV9wYXRkaWZmX2FyZ3MiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwiZmlsZSIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsInJldl9tYXBpIiwibGlzdCIsImxpc3QkMCIsImkiLCJhY2MiLCJ0YWlsIiwiaGVhZCIsImFjYyQwIiwiaSQwIiwiZm9sZF9yaWdodDIiLCJsaXN0MSIsImxpc3QyIiwiaW5pdCIsIm1hcCQwIiwibWFwaSQwIiwiZm9sZF9yaWdodCQwIiwiYXBwZW5kIiwiY29uY2F0JDAiLCJyZXZfY29tYmluZSIsImNvbWJpbmUiLCJzcGxpdCIsInlzIiwieHMiLCJtYXAyIiwicGFydGl0aW9uX21hcCIsInAiLCJsIiwibGVmdCIsInJpZ2h0IiwibCQwIiwidiIsInYkMCIsImluaXQkMCIsInBvcyQwIiwiaXNfZW1wdHkiLCJyZXZfZmlsdGVyX29wdCIsIm9wdGlvbiIsImZpbHRlcl9vcHQiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwic29tZSIsImZpbmRfbWFwX2V4biIsImxhc3QiLCJyZXN0Iiwic3BsaXRfd2hpbGUiLCJmaW5kX2FfZHVwIiwic2V0JDEiLCJzZXQkMCIsImFzc29jX29wdCIsIml0ZXIkMiIsImlzX3NvbWUiLCJpdGVyJDMiLCJtYXAkMSIsInZhbHVlIiwidG9fbGlzdCIsImJpbmQiLCJhIiwiZSIsIm1hcCQyIiwibWFwX2Vycm9yIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiaGFuZGxlX2Vycm9yIiwic3ltYm9sJDM1IiwicTIiLCJ0MiIsInExIiwidDEiLCJoZCQwIiwidG9fbGlzdCQwIiwicSIsIm1hcCQzIiwiY3JlYXRlJDEiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsIndpdGhfZmlsZSQwIiwid3JpdGVfYWxsIiwiaXNfZW1wdHkkMCIsInByZWZpeCIsInN1ZmZpeCIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJpc19wcmVmaXgiLCJpc19zdWZmaXgiLCJzdWZmaXhfb2Zmc2V0IiwicG9zJDEiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImluZGV4X29wdCQwIiwicmluZGV4X29wdCQwIiwiaW5kZXhfZnJvbV9vcHQkMCIsInJpbmRleF9mcm9tX29wdCQwIiwibHNwbGl0MiIsIm9uIiwiY2FwaXRhbGl6ZV9hc2NpaSQwIiwibG93ZXJjYXNlX2FzY2lpJDEiLCJ1bmNhcGl0YWxpemVfYXNjaWkkMCIsInNwbGl0X29uX2NoYXIkMCIsInNlcCIsImNvbXBhcmUkNyIsImVxdWFsJDciLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJtaW4kNSIsIm1heCQ1IiwiZmluZF9vcHQkMSIsInN5bWJvbCQ0MiIsIm91dHB1dCIsIm9jIiwiYnl0ZXMiLCJvdXRwdXRfc3Vic3RyaW5nIiwic3RyaW5nIiwiaW5fZmlsZSIsIm5hbWUiLCJsb2MiLCJzZXRfZmlsZW5hbWUiLCJmbiIsImxvY19zdGFydCIsImxvY19lbmQiLCJub25lIiwiaW5pdCIsImxleGJ1ZiIsImZuYW1lIiwicmFpc2VfZXJyb3JmIiwiZm10IiwicmVwb3J0X2V4Y2VwdGlvbiIsIm9mX2xleGJ1ZiIsInByaW50IiwicHBmIiwidCIsImNvbXBhcmVfcG9zIiwicDEiLCJwMiIsImNvbHVtbiIsInAiLCJuIiwibWluX3BvcyIsIm1heF9wb3MiLCJjb21wYXJlIiwibG9jMSIsImxvYzIiLCJjcmVhdGVmIiwic3RyIiwiZXJyb3JfZXh0ZW5zaW9uZiIsImUiLCJmYWlsIiwiZXhwZWN0ZWQiLCJhdHRyaWJ1dGUiLCJwYXlsb2FkIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJwY2xfY29uc3RyIiwieDAiLCJ4MSIsInBjbF9zdHJ1Y3R1cmUiLCJwY2xfZnVuIiwieDIiLCJ4MyIsInBjbF9hcHBseSIsInBjbF9sZXQiLCJwY2xfY29uc3RyYWludCIsInBjbF9leHRlbnNpb24iLCJwY2xfb3BlbiIsInBjZl9pbmhlcml0IiwicGNmX3ZhbCIsInBjZl9tZXRob2QiLCJwY2ZfY29uc3RyYWludCIsInBjZl9pbml0aWFsaXplciIsInBjZl9hdHRyaWJ1dGUiLCJwY2ZfZXh0ZW5zaW9uIiwiY2xhc3NfaW5mb3MiLCJ2aXJ0IiwicGFyYW1zIiwiZXhwciIsImNsYXNzX3NpZ25hdHVyZSIsInNlbGYiLCJmaWVsZHMiLCJjbGFzc19zdHJ1Y3R1cmUiLCJwY3R5X2NvbnN0ciIsInBjdHlfc2lnbmF0dXJlIiwicGN0eV9hcnJvdyIsInBjdHlfZXh0ZW5zaW9uIiwicGN0eV9vcGVuIiwicGN0Zl9pbmhlcml0IiwicGN0Zl92YWwiLCJwY3RmX21ldGhvZCIsInBjdGZfY29uc3RyYWludCIsInBjdGZfYXR0cmlidXRlIiwicGN0Zl9leHRlbnNpb24iLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInZhcnMiLCJhcmdzIiwicmVzIiwicHR5cF9hbnkiLCJwdHlwX3ZhciIsInB0eXBfYXJyb3ciLCJwdHlwX3R1cGxlIiwicHR5cF9jb25zdHIiLCJwdHlwX29iamVjdCIsInB0eXBfY2xhc3MiLCJwdHlwX2FsaWFzIiwicHR5cF92YXJpYW50IiwicHR5cF9wb2x5IiwicHR5cF9wYWNrYWdlIiwicHR5cF9leHRlbnNpb24iLCJwZGlyX3N0cmluZyIsInBkaXJfaW50IiwicGRpcl9pZGVudCIsInBkaXJfYm9vbCIsInBleHBfaWRlbnQiLCJwZXhwX2NvbnN0YW50IiwicGV4cF9sZXQiLCJwZXhwX2Z1bmN0aW9uIiwicGV4cF9mdW4iLCJwZXhwX2FwcGx5IiwicGV4cF9tYXRjaCIsInBleHBfdHJ5IiwicGV4cF90dXBsZSIsInBleHBfY29uc3RydWN0IiwicGV4cF92YXJpYW50IiwicGV4cF9yZWNvcmQiLCJwZXhwX2ZpZWxkIiwicGV4cF9zZXRmaWVsZCIsInBleHBfYXJyYXkiLCJwZXhwX2lmdGhlbmVsc2UiLCJwZXhwX3NlcXVlbmNlIiwicGV4cF93aGlsZSIsInBleHBfZm9yIiwieDQiLCJwZXhwX2NvbnN0cmFpbnQiLCJwZXhwX2NvZXJjZSIsInBleHBfc2VuZCIsInBleHBfbmV3IiwicGV4cF9zZXRpbnN0dmFyIiwicGV4cF9vdmVycmlkZSIsInBleHBfbGV0bW9kdWxlIiwicGV4cF9sZXRleGNlcHRpb24iLCJwZXhwX2Fzc2VydCIsInBleHBfbGF6eSIsInBleHBfcG9seSIsInBleHBfb2JqZWN0IiwicGV4cF9uZXd0eXBlIiwicGV4cF9wYWNrIiwicGV4cF9vcGVuIiwicGV4cF9sZXRvcCIsInBleHBfZXh0ZW5zaW9uIiwicGV4cF91bnJlYWNoYWJsZSIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImtpbmQiLCJpbmNsdWRlX2luZm9zIiwibW9kIiwibGFiZWxfZGVjbGFyYXRpb24iLCJtdXRhYmxlIiwidHlwZSIsImxldG9wIiwibGV0JDAiLCJhbmRzIiwiYm9keSIsImxvY2F0aW9uIiwic3RhcnQiLCJlbmQiLCJnaG9zdCIsIm1vZHVsZV9iaW5kaW5nIiwibW9kdWxlX2RlY2xhcmF0aW9uIiwicG1vZF9pZGVudCIsInBtb2Rfc3RydWN0dXJlIiwicG1vZF9mdW5jdG9yIiwicG1vZF9hcHBseSIsInBtb2RfY29uc3RyYWludCIsInBtb2RfdW5wYWNrIiwicG1vZF9leHRlbnNpb24iLCJtb2R1bGVfc3Vic3RpdHV0aW9uIiwibWFuaWZlc3QiLCJwbXR5X2lkZW50IiwicG10eV9zaWduYXR1cmUiLCJwbXR5X2Z1bmN0b3IiLCJwbXR5X3dpdGgiLCJwbXR5X3R5cGVvZiIsInBtdHlfZXh0ZW5zaW9uIiwicG10eV9hbGlhcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwib3RhZyIsIm9pbmhlcml0Iiwib3Blbl9pbmZvcyIsIm92ZXJyaWRlIiwicHBhdF9hbnkiLCJwcGF0X3ZhciIsInBwYXRfYWxpYXMiLCJwcGF0X2NvbnN0YW50IiwicHBhdF9pbnRlcnZhbCIsInBwYXRfdHVwbGUiLCJwcGF0X2NvbnN0cnVjdCIsInBwYXRfdmFyaWFudCIsInBwYXRfcmVjb3JkIiwicHBhdF9hcnJheSIsInBwYXRfb3IiLCJwcGF0X2NvbnN0cmFpbnQiLCJwcGF0X3R5cGUiLCJwcGF0X2xhenkiLCJwcGF0X3VucGFjayIsInBwYXRfZXhjZXB0aW9uIiwicHBhdF9leHRlbnNpb24iLCJwcGF0X29wZW4iLCJwb3NpdGlvbiIsImxudW0iLCJib2wiLCJjbnVtIiwicnRhZyIsInJpbmhlcml0IiwicHNpZ192YWx1ZSIsInBzaWdfdHlwZSIsInBzaWdfdHlwZXN1YnN0IiwicHNpZ190eXBleHQiLCJwc2lnX2V4Y2VwdGlvbiIsInBzaWdfbW9kdWxlIiwicHNpZ19tb2RzdWJzdCIsInBzaWdfcmVjbW9kdWxlIiwicHNpZ19tb2R0eXBlIiwicHNpZ19tb2R0eXBlc3Vic3QiLCJwc2lnX29wZW4iLCJwc2lnX2luY2x1ZGUiLCJwc2lnX2NsYXNzIiwicHNpZ19jbGFzc190eXBlIiwicHNpZ19hdHRyaWJ1dGUiLCJwc2lnX2V4dGVuc2lvbiIsInBzdHJfZXZhbCIsInBzdHJfdmFsdWUiLCJwc3RyX3ByaW1pdGl2ZSIsInBzdHJfdHlwZSIsInBzdHJfdHlwZXh0IiwicHN0cl9leGNlcHRpb24iLCJwc3RyX21vZHVsZSIsInBzdHJfcmVjbW9kdWxlIiwicHN0cl9tb2R0eXBlIiwicHN0cl9vcGVuIiwicHN0cl9jbGFzcyIsInBzdHJfY2xhc3NfdHlwZSIsInBzdHJfaW5jbHVkZSIsInBzdHJfYXR0cmlidXRlIiwicHN0cl9leHRlbnNpb24iLCJ0b3BsZXZlbF9kaXJlY3RpdmUiLCJhcmciLCJ0eXBlX2RlY2xhcmF0aW9uIiwiY3N0cnMiLCJwcml2YXRlJDAiLCJ0eXBlX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yIiwidHlwZV9leHRlbnNpb24iLCJwYXRoIiwiY29uc3RydWN0b3JzIiwidmFsdWVfYmluZGluZyIsInZhbHVlX2Rlc2NyaXB0aW9uIiwicHJpbSIsInR4dCIsIm1ha2UiLCJtYXAiLCJmIiwiaXNfbm9ybWFsX2lkZW50X2NoYXIiLCJzaG9ydF9uYW1lIiwic3RyaW5nIiwicyIsImIiLCJhIiwiYiQwIiwiYSQwIiwic2V4cF9vZl90IiwiZmxhdHRlbl9leG4iLCJsaWQkMCIsImFjY3UiLCJzJDAiLCJsaWQiLCJsYXN0X2V4biIsInVuZmxhdHRlbiIsImwiLCJhY2MiLCJwYXJzZSIsImludmFsaWQiLCJvcGVuX3BhciIsImNsb3NlX3BhciIsInIiLCJsJDAiLCJncm91cCIsImJlZm9yZSIsImwkMSIsInMkMSIsIngiLCJtayIsIm1hcF9saWRlbnQiLCJsaWRlbnQiLCJ4JDAiLCJwcGF0X2NvbnN0cnVjdCQwIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBzdHJfdmFsdWVfbGlzdCIsInJlY19mbGFnIiwidmJzIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24iLCJlaW50IiwiZWNoYXIiLCJlc3RyaW5nIiwiZWZsb2F0IiwiZWludDMyIiwiZWludDY0IiwiZW5hdGl2ZWludCIsInBpbnQiLCJwY2hhciIsInBzdHJpbmciLCJwZmxvYXQiLCJwaW50MzIiLCJwaW50NjQiLCJwbmF0aXZlaW50IiwiZWJvb2wiLCJwYm9vbCIsImV2YXIiLCJ2IiwicHZhciIsImV1bml0IiwicHVuaXQiLCJwZXhwX3R1cGxlJDAiLCJwcGF0X3R1cGxlJDAiLCJwdHlwX3R1cGxlJDAiLCJwZXhwX3R1cGxlX29wdCIsInBwYXRfdHVwbGVfb3B0IiwicHR5cF9wb2x5JDAiLCJ0eSIsInBleHBfYXBwbHkkMCIsImVsIiwiZSQwIiwiZWFwcGx5IiwiZWFic3RyYWN0IiwicHMiLCJlc2VxdWVuY2UiLCJ0bCIsImhkIiwicGNvbnN0cnVjdCIsImNkIiwiZWNvbnN0cnVjdCIsImVsaXN0IiwicGxpc3QiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXQiLCJpZGVudCIsIm4kMCIsInR5cGVfY29uc3RyX2NvbnYiLCJhcHBseV9sb2MiLCJsb25naWRlbnQiLCJsb2MkMCIsIm1vZHVsZV9wYXRoIiwic3VmZml4X24iLCJmdW5jdG9yIiwiZnVuY3Rvcl9hcmdzIiwicmVzdCIsImZ1bmN0b3IkMCIsImZ1bmN0b3JfcGF0aCIsImlkZW50JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiIsImdhdGhlcl9hcmdzIiwiYXJncyQwIiwiYm9keSQwIiwiZXRhX3JlZHVjZSIsImV4cHIkMCIsInN1YnBhdCIsImxhYmVsIiwiYWNjJDAiLCJuYW1lJDAiLCJhY2MkMSIsImZfaWRlbnQiLCJwYXJhbV9sYWJlbCIsImFyZ19sYWJlbCIsInBhcmFtJDAiLCJ0eSQwIiwidHlfb3B0IiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSIsImV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbiIsIm5vbnJlY190eXBlX2RlY2xhcmF0aW9uJDAiLCJwZXhwX3R1cGxlX29wdCQwIiwicHBhdF90dXBsZV9vcHQkMCIsImVpbnQkMCIsImVjaGFyJDAiLCJlc3RyaW5nJDAiLCJlZmxvYXQkMCIsImVpbnQzMiQwIiwiZWludDY0JDAiLCJlbmF0aXZlaW50JDAiLCJlYm9vbCQwIiwiZXZhciQwIiwicGludCQwIiwicGNoYXIkMCIsInBzdHJpbmckMCIsInBmbG9hdCQwIiwicGludDMyJDAiLCJwaW50NjQkMCIsInBuYXRpdmVpbnQkMCIsInBib29sJDAiLCJwdmFyJDAiLCJldW5pdCQwIiwicHVuaXQkMCIsImVhcHBseSQwIiwiZWFic3RyYWN0JDAiLCJlc2VxdWVuY2UkMCIsImVsaXN0JDAiLCJwbGlzdCQwIiwidHlwZV9jb25zdHJfY29udiQwIiwidW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYkMCIsImdldCIsInNraXAiLCJza2lwJDAiLCJzdGFjayIsImxlbiIsInBvcyIsInBvcyQwIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwic3VnZ2VzdGlvbnMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJhbGxvd2xpc3QiLCJrZXkiLCJvdGhlcl9jb250ZXh0cyIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHIiLCJhdHRyaWJ1dGVzX2Vycm9ycyIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJnZXRfcHN0cl9ldmFsIiwic3QiLCJnZXRfcHN0cl9leHRlbnNpb24iLCJnZXRfcHNpZ19leHRlbnNpb24iLCJnZXRfYXR0cmlidXRlcyIsInNldF9hdHRyaWJ1dGVzIiwiYXR0cnMiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJwYXR0ZXJuIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRycyQwIiwiYXR0ciQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJtYWluX21vZHVsZV9uYW1lIiwiZW5jbG9zaW5nX21vZHVsZSIsImVuY2xvc2luZ192YWx1ZSIsInN1Ym1vZHVsZV9wYXRoIiwibG9jYXRlZCIsImZ1bGx5X3F1YWxpZmllZF9wYXRoIiwidmFsdWUkMCIsImVudGVyX2V4cHIiLCJlbnRlcl9tb2R1bGUiLCJtb2R1bGVfbmFtZSIsImVudGVyX3ZhbHVlIiwidmFsdWVfbmFtZSIsInRvX3N0cmluZ19wYXRoIiwid2l0aF9zdHJpbmdfcGF0aCIsInRvb2xfbmFtZSIsImlucHV0X25hbWUiLCJjb2RlX3BhdGgiLCJleHRlbnNpb25fcG9pbnRfbG9jIiwiYmFzZSIsImNvZGVfcGF0aCQwIiwiaW5wdXRfbmFtZSQwIiwidG9vbF9uYW1lJDAiLCJ3aXRoX2xvY19hbmRfcGF0aCIsImN0eHQiLCJtYWtlJDAiLCJkZXJpdmVkX2l0ZW1fbG9jIiwiaW5saW5lIiwiY29kZV9wYXRoJDEiLCJpbnB1dF9uYW1lJDEiLCJ0b29sX25hbWUkMSIsIndpdGhfbG9jX2FuZF9wYXRoJDAiLCJlbnRlciIsImVudGVyX29wdCIsIm5hbWVfb3B0IiwibWIiLCJtZCIsIm10ZCIsInZhcl9uYW1lc19vZiIsImVjX2VudGVyX21vZHVsZV9vcHQiLCJkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyIsImRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiIsImRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyIsImRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpbyIsImRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYSIsImRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIiwidGFnIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2Rlc2MiLCJ3aXRoX3ZhbHVlIiwiY3R4dCQwIiwibW9kdWxlX2V4cHIiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJhcmckMCIsInNoaWZ0IiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyIsInZhbHMkMCIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwid2l0aF9jb250ZXh0Iiwib3B0aW9uIiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwibW9kdWxlX3R5cGUiLCJzaWduYXR1cmVfaXRlbSIsInN0cnVjdHVyZV9pdGVtIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJwb3MkMSIsImxhc3RfaXNfdGV4dCQxIiwicG9zJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzIiwidG1wX2ZuIiwic2FuaXRpemUiLCJiaW5kaW5ncyIsIkFzdCIsInF1b3RlIiwicXVvdGVkX2V4cHIkMCIsImJpbmRpbmdfZXhwciQwIiwiYmluZGluZ19leHByIiwicXVvdGVkX2V4cHIiLCJiaW5kaW5nIiwibWtfYXR0cl9ub2xvYyIsImhpZGVfYXR0cmlidXRlIiwiZm9jdXNfYXR0cmlidXRlIiwiaGlkZV9wYXR0ZXJuIiwiZm9jdXNfcGF0dGVybiIsImhpZGVfZXhwcmVzc2lvbiIsImZvY3VzX2V4cHJlc3Npb24iLCJlbXB0eSIsInJhbmdlcyIsIm5vZGVfbG9jIiwibm9kZV9uYW1lIiwieF9sb2MiLCJ4X25hbWUiLCJwMiQwIiwicDEkMCIsImluc2VydCIsImFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IiwiZmlsZSIsInNhbWVfZmlsZV9zb19mYXIiLCJzaG91bGRfaWdub3JlIiwib3JpZ19mbmFtZSIsImV4dHJhY3RfY29uc3RyYWludCIsImRvX2NoZWNrIiwiY2hpbGRyZW5zX2xvY3MiLCJzaWJsaW5nc19sb2NzIiwibWF4X3BvcyQwIiwibWluX3BvcyQwIiwiY2hpbGRfbG9jIiwiY2hpbGRfbmFtZSIsImwyIiwibDEiLCJ5cyIsInlzJDAiLCJ4cyQwIiwiZW5mb3JjZV9pbnZhcmlhbnRzIiwic2libGluZ3MiLCJjdGUiLCJjdHAiLCJvdXRtb3N0X2xvYyIsImluaXRpYWxfcmVzJDAiLCJyZXMkMSIsImluaXRpYWxfcmVzIiwicmVzJDAiLCJjaGlsZHNfbG9jcyIsImF0dHJzX2xvY3MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImV4cHJfbyIsImxhYmVscyIsImFjYyQyIiwib3BuIiwiZV9sb2MiLCJjZSIsIm9kIiwiYWNjJDMiLCJhY2MkNCIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50IiwiYWxpYXNlcyIsInJ1bGVzJDAiLCJpbXBsJDAiLCJpbnRmJDAiLCJwcmVwcm9jZXNzX2ltcGwkMCIsInByZXByb2Nlc3NfaW50ZiQwIiwiY3QkMCIsImxvY19vZl9saXN0IiwibCQyIiwiZmlyc3QiLCJtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIiwiZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIiwid2hvbGVfbG9jIiwiZm9vdGVyIiwiaGVhZGVyIiwibG9jX2hlYWRlciIsImxvY19mb290ZXIiLCJtYXBfaW1wbCIsInN0X3dpdGhfYXR0cnMiLCJtYXBfaW50ZiIsInNnX3dpdGhfYXR0cnMiLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18iLCJhZGRfY3R4dF9hcmciLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiQwIiwibGludF9pbXBsJDAiLCJsaW50X2ludGYkMCIsImVuY2xvc2VfaW1wbCQwIiwiZW5jbG9zZV9pbnRmJDAiLCJyZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfJDAiLCJnZXRfd2hvbGVfYXN0X3Bhc3NlcyIsImN0cyIsImFmdF9pIiwiYmVmX2kiLCJyZWR1Y2VkX3QiLCJpbnN0ciIsInRyYW5zZiIsInRyYW5zZiQwIiwidHJhbnNmb3JtcyIsImFmdGVyX2luc3RycyIsImJlZm9yZV9pbnN0cnMiLCJwcmVwcm9jZXNzIiwibGludGVycyIsImdldF9lbmNsb3NlcnMiLCJpbXBsX2VuY2xvc2VycyIsImludGZfZW5jbG9zZXJzIiwibWVyZ2VfZW5jbG9zZXIiLCJlbmNsb3NlcnMiLCJmb290ZXJzIiwiaGVhZGVycyIsImhlYWRlcnMkMCIsImZvb3RlcnMkMCIsImFwcGx5X3RyYW5zZm9ybXMiLCJsaW50X2ZpZWxkIiwiZHJvcHBlZF9zb19mYXIiLCJsaW50X2Vycm9ycyIsIm9sZF9kcm9wcGVkIiwibGludF9lcnJvcnMkMCIsImVycm9ycyQxIiwibW9yZV9lcnJvcnMiLCJuZXdfZHJvcHBlZCIsInByaW50X2RpZmYiLCJ3aGF0IiwiZGlmZiIsImRyb3BwZWQiLCJlcnJvcl90b19leHRlbnNpb24iLCJleHQkMCIsInNvcnRfZXJyb3JzX2J5X2xvYyIsImVycm9yJDAiLCJtYXBfc3RydWN0dXJlX2dlbiIsIndpdGhfZXJyb3JzIiwic29ydGVkIiwic3QkMSIsInVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyIsInVudXNlZF9leHRlbnNpb25fZXJyb3JzIiwibm90X3NlZW5fZXJyb3JzIiwibWFwX3NpZ25hdHVyZV9nZW4iLCJzZyQxIiwibWFwX3NpZ25hdHVyZSIsInZlcnNpb25lZF9lcnJvcmYiLCJpbnB1dF9maWxlX25hbWUiLCJyZW1vdmVfbm9fZXJyb3IiLCJuZXdfZm4iLCJvbGRfZm4iLCJyZWxvY2F0ZV9tYXBwZXIiLCJzZXRfaW5wdXRfbmFtZSIsImV4dHJhY3RfY29va2llcyIsInByZWZpeCQxIiwicHJlZml4JDIiLCJjb3JyZWN0aW9ucyIsImFkZF90b19saXN0IiwicmVnaXN0ZXJfY29ycmVjdGlvbiIsInByb2Nlc3NfZmlsZV9ob29rcyIsInJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIiwiYWxsJDAiLCJwcm9jZXNzX2FzdCIsIm91dHB1dF9tb2RlIiwic2V0X2lucHV0Iiwic2V0X2tpbmQiLCJzZXRfb3V0cHV0X21vZGUiLCJtb2RlIiwibWF0Y2giLCJhcmdfb2Zfb3V0cHV0X21vZGUiLCJwYXJzZV9hcHBseV9saXN0IiwibWFzayIsImhhbmRsZV9hcHBseSIsImhhbmRsZV9kb250X2FwcGx5IiwiaW50ZXJwcmV0X21hc2siLCJzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSIsImlzX2NhbmRpZGF0ZSIsIm5hbWVzJDAiLCJpc19zZWxlY3RlZCIsInNldF9jb29raWUiLCJzaGFyZWRfYXJncyIsImFzX3BwIiwic3RhbmRhbG9uZV9hcmdzIiwiZ2V0X2FyZ3MiLCJzdGFuZGFsb25lX2FyZ3MkMCIsInN0YW5kYWxvbmVfbWFpbiIsInVzYWdlIiwicmVsb2NhdGUiLCJvdXRwdXQkMCIsImVtYmVkX2Vycm9ycyQwIiwib3V0cHV0X21vZGUkMCIsInJlcGxhY2VtZW50cyIsImhvb2skMCIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyJDAiLCJhc3RfaW5wdXRfbmFtZSIsImFzdF9raW5kIiwiZmFsbF9iYWNrX3ZlcnNpb24iLCJ1bmtub3duX21hZ2ljIiwiZmFsbF9iYWNrX3ZlcnNpb24kMCIsInRtcGZpbGUiLCJmYWlsZWRfY29tbWFuZCIsInByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIiwiaW5wdXRfZm5hbWUiLCJpbnB1dF92ZXJzaW9uJDAiLCJpbnB1dF92ZXJzaW9uJDEiLCJpbnB1dF92ZXJzaW9uJDIiLCJtZXRhZGF0YSIsImlucHV0X2NvbnRlbnRzIiwidGVzdCIsIm1hZ2ljX251bWJlciIsImNvcnJlY3RlZCIsImNvcnJlY3Rpb25zJDAiLCJtaXNtYXRjaGVzX2ZvdW5kIiwibnVsbF9hc3QiLCJwYXJzZV9pbnB1dCIsInBhc3NlZF9pbl9hcmdzIiwidmFsaWRfYXJncyIsImluY29ycmVjdF9pbnB1dF9tc2ciLCJtc2ckMCIsInJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiIsImZsYWdzX2FuZF9wcm9nX25hbWUiLCJpbnB1dF9mbiIsIm91dHB1dF9mbiIsInByb2dfbmFtZV9hbmRfZmxhZ3MiLCJhc3QkNCIsImFzdCQzIiwic3RhbmRhbG9uZSIsImFyZ3YiLCJydW5fYXNfcHB4X3Jld3JpdGVyIiwicHJldHR5JDAiLCJlbmFibGVfY2hlY2tzIiwiZW5hYmxlX2xvY2F0aW9uX2NoZWNrIiwiZGlzYWJsZV9sb2NhdGlvbl9jaGVjayIsIm1hcF9zdHJ1Y3R1cmUiLCJ2YXIkMCIsInZhcnNfb2YiLCJpZ24iLCJhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzIiwibXMiLCJmcCIsImJpbmRzX21vZHVsZV9uYW1lcyIsIndhcm5pbmdzIiwiZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpIiwia2VlcF93MzJfaW1wbCIsImtlZXBfdzMyX2ludGYiLCJrZWVwX3czMl9zcGVjIiwiY29udl93MzJfc3BlYyIsImtlZXBfdzMyX2ltcGwkMCIsImtlZXBfdzYwX2ltcGwiLCJrZWVwX3c2MF9pbnRmIiwia2VlcF93NjBfc3BlYyIsImFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJwYXJhbSIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJzcGVsbGNoZWNrX21zZyIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImxfZXJyIiwiYWN0dWFsX2Rlcml2ZXJfbmFtZSIsImR1cF9lcnJvciIsImRlcCIsImRlcF9uYW1lIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJkZWZhdWx0JDAiLCJ4IiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJ2YXJzIiwiaSIsImJpbmRpbmdzIiwidmFyJDAiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ2YXJzJDAiLCJ0eHQiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsImJvZHkkMCIsInRwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJpbnRlcm5hbCIsIm4iLCJhcmdzJDAiLCJhcmciLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJmaWVsZF9yZWZzIiwiaW5pdCIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9rZXlzIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwiZSIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJ0MSIsImFjYyQwIiwiaSQwIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJ0MTMiLCJjYXN0IiwidDE0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwibm9faGFuZGxlciIsImhhbmRsZXIiLCJyZXMiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJtYWtlIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwidDQ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwieCQxIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJhIiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwidWludDgiLCJvZl9hcnJheUJ1ZmZlciQwIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJiIiwiZmlsZW5hbWUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwibmFtZSQ1NiIsIm5hbWUkNTUiLCJuYW1lJDU0IiwibmFtZSQ1MyIsIm5hbWUkNTIiLCJuYW1lJDUxIiwibmFtZSQ1MCIsIm5hbWUkNDkiLCJuYW1lJDQ4IiwibmFtZSQ0NyIsIm5hbWUkNDYiLCJuYW1lJDQ1IiwibmFtZSQ0NCIsIm5hbWUkNDMiLCJuYW1lJDQyIiwibmFtZSQ0MSIsIm5hbWUkNDAiLCJuYW1lJDM5IiwibmFtZSQzOCIsIm5hbWUkMzciLCJuYW1lJDM2IiwibmFtZSQzNSIsIm5hbWUkMzQiLCJuYW1lJDMzIiwibmFtZSQzMiIsIm5hbWUkMzEiLCJuYW1lJDMwIiwibmFtZSQyOSIsIm5hbWUkMjgiLCJuYW1lJDI3IiwibmFtZSQyNiIsIm5hbWUkMjUiLCJuYW1lJDI0IiwibmFtZSQyMyIsIm5hbWUkMjIiLCJuYW1lJDIxIiwibmFtZSQyMCIsIm5hbWUkMTkiLCJuYW1lJDE4IiwibmFtZSQxNyIsIm5hbWUkMTYiLCJuYW1lJDE1IiwibmFtZSQxNCIsIm5hbWUkMTMiLCJuYW1lJDEyIiwibmFtZSQxMSIsIm5hbWUkMTAiLCJuYW1lJDkiLCJuYW1lJDgiLCJuYW1lJDciLCJuYW1lJDYiLCJuYW1lJDUiLCJuYW1lJDQiLCJuYW1lJDMiLCJuYW1lJDIiLCJuYW1lJDEiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm8iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZG9jIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJvZl9ldmVudCIsInZhbHVlIiwidmFsdWUkMyIsInZhbHVlJDIiLCJ2YWx1ZSQxIiwidmFsdWUkMCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVxIiwiYyIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZ2V0X2VsZW1lbnRfY29udGVudCIsImZpbGUiLCJmb3JtX2VsZW1lbnRzIiwiaSQxIiwidDMxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwibGlzdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsInRpbWVvdXQiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidDE2IiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwid2l0aF9wbHVzIiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsIm4iLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsInQzIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwYXRoX3N0ciIsInNzbCIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJvYnNlcnZlIiwiYm94IiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwidDEyIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDAiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsInRvX2FycmF5ZiIsImYiLCJhIiwib2ZfYXJyYXlmIiwidG9fbGlzdCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdGYiLCJvZl9saXN0ZiIsIm9wdGRlZiIsIngiLCJ0b19vcHRkZWYiLCJ4JDAiLCJ1bm9wdGRlZl9mIiwiZGVmIiwidW5vcHRkZWYiLCJjb252ZGVmIiwidG9fb3B0Iiwib3B0IiwiY29udm9wdCIsImpzX2xvZyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwiYXNzaWduIiwiYXNzaWduX2xpc3QiLCJyZW1vdmVfdW5kZWZpbmVkIiwibyIsImsiLCJjcmVhdGUiLCJhZGQiLCJ2IiwiYWRkX2xpc3QiLCJhZGRfbGlzdGYiLCJtYWtlIiwibWFrZWYiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwianRoZW4wIiwiZXJyb3IiLCJleG4kMCIsImVmIiwiZXJyb3IkMCIsImp0aGVuIiwianRoZW4wX29wdCIsInByb20iLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibG9nX3N0cjIiLCJzMSIsInMyIiwibG9nX3N0cjMiLCJzMyIsImRlYnVnIiwiZGVidWcyIiwiZGVidWczIiwiZGVidWdfc3RyIiwiZGVidWdfc3RyMiIsImRlYnVnX3N0cjMiLCJ3YXJuIiwid2FybjIiLCJ3YXJuMyIsIndhcm5fc3RyIiwid2Fybl9zdHIyIiwid2Fybl9zdHIzIiwiZXJyb3IyIiwiZXJyb3IzIiwiZXJyb3Jfc3RyIiwiZXJyb3Jfc3RyMiIsImVycm9yX3N0cjMiLCJiaWdJbnQiLCJvZl9zdHJpbmciLCJvZl9pbnQiLCJpIiwib2ZfaW50NjQiLCJvZl9uYXRpdmUiLCJvZl9mbG9hdCIsInRvX2xvY2FsZV9zdHJpbmciLCJvcHRpb25zIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsImxpc3RlbiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwiY3JlYXRlIiwic3RvcmUiLCJhZGQiLCJrZXkiLCJ4IiwicHV0IiwicmFuZ2UiLCJvbG93ZXIiLCJvdXBwZXIiLCJsb3dlciIsInVwcGVyIiwidXBwZXIkMSIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY291bnQiLCJrIiwiZ2V0Iiwib2ZfanMiLCJqcyIsImpzJDAiLCJnZXRfYWxsIiwiZ2V0X2tleSIsImdldF9hbGxfa2V5cyIsImRlbGV0ZSQwIiwiaXRlciIsImRpcmVjdGlvbiIsImMiLCJmb2xkIiwic3RhcnQiLCJhY2MiLCJjYWxsYmFjayQwIiwiaXRlcl9rZXlzIiwiZm9sZF9rZXlzIiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4IiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJmaWxlIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImJ1ZmZlciIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJhcHBlbmQiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMTk0IiwiZXJyb3Jfc291cmNlXzI2MyIsImVycm9yX3NvdXJjZV8yNzUiLCJlcnJvcl9zb3VyY2VfMzE3IiwiZXJyb3Jfc291cmNlXzQxNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVxdWFsIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXF1YWwkMCIsImV2YWxfZmFpbCIsImxvYyIsImZtdCIsInMiLCJjdXN0b21fcHJpbnRmXzAwMSIsImVxdWFsX29wdGlvbiIsImEiLCJiIiwieSIsIngiLCJjb21wYXJlJDAiLCJjbXBfYSIsImFfMDAyIiwiYl8wMDMiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJuIiwic2V4cF9vZl90JDEiLCJvZl9hXzAxOSIsInNvcnRlZF8wMjEiLCJhcmdfMDIyIiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJibmRzXzAyMCIsImNyZWF0ZSIsImVxIiwieHMkMSIsInNvcnRlZCIsInMyIiwiczEiLCJ4cyQwIiwibGFzdF92YWx1ZSQxIiwibGFzdF9rZXkkMSIsImFjYyIsImxhc3Rfa2V5IiwibGFzdF92YWx1ZSIsInhzIiwibGFzdF92YWx1ZSQwIiwibGFzdF9rZXkkMCIsInNvcnRlZCQwIiwiZXhwb3NlIiwidCIsIm1hcCIsImYiLCJ2IiwiayIsInRvX21kNSIsIm9mX21kNSIsInNleHBfb2ZfdCQyIiwidF9vZl9zZXhwJDEiLCJ1dWlkIiwidSIsImludCQwIiwicGFpciIsImxpc3QiLCJsIiwiY29uc3RydWN0b3IiLCJzZXhwX29mX3QkMyIsIm9mX2FfMDk2IiwiYXJnMV8wOTgiLCJhcmcwXzA5NyIsInJlczBfMDk5IiwicmVzMV8xMDAiLCJhcmcxXzEwMiIsImFyZzBfMTAxIiwicmVzMF8xMDMiLCJyZXMxXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJhcmcwXzExMSIsInJlczBfMTEyIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5IiwicmVzMV8xMTAiLCJhcmcwXzExNyIsInJlczBfMTE4IiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiYXJnMV8xMjIiLCJhcmcwXzEyMSIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJhcmcxXzEyNiIsImFyZzBfMTI1IiwicmVzMF8xMjciLCJyZXMxXzEyOCIsImFyZzBfMTI5IiwicmVzMF8xMzAiLCJjb21wYXJlJDIiLCJhXzEzMiIsImJfMTMzIiwiYV8xMzQiLCJiXzEzNyIsImJfMTM1IiwiYV8xMzYiLCJhXzE0MCIsImFfMTM4IiwiYl8xNDEiLCJiXzEzOSIsIm4kMCIsImFfMTQyIiwiYl8xNDMiLCJhXzE0NCIsImJfMTQ1IiwiYV8xNDYiLCJiXzE0NyIsImFfMTQ4IiwiYl8xNDkiLCJhXzE1MCIsImJfMTUxIiwidF8xNTMiLCJ0XzE1MiIsInRfMTU1IiwidF8xNTQiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsInRfMTYxIiwidF8xNjAiLCJ0XzE2MyIsInRfMTYyIiwiYV8xNjQiLCJiXzE2NSIsImFfMTY2IiwiYl8xNjciLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsImFfMTc0IiwiYV8xNzIiLCJiXzE3NSIsImJfMTczIiwibiQxIiwiYV8xNzYiLCJiXzE3NyIsImFfMTgwIiwiYV8xNzgiLCJiXzE4MSIsImJfMTc5IiwibiQyIiwiYV8xODIiLCJiXzE4MyIsImFfMTg0IiwiYl8xODUiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJ0b19kaWdlc3QiLCJ0b19kaWdlc3QkMCIsIngkMiIsImVxdWFsJDEiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTg2IiwiYl8xODciLCJiXzE4OSIsImFfMTg4IiwiYV8xOTAiLCJiXzE5MSIsInNleHBfb2ZfdDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkNCIsIm9mX3N0cmluZyQxIiwidG9fc3RyaW5nJDIiLCJzeW1ib2wiLCJjb21wYXJlJDMiLCJlcXVhbCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkNSIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDMiLCJjb21wYXJhdG9yIiwiZXF1YWwkMyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ2IiwiY3JlYXRlJDMiLCJ0cmlwcyIsImdpZCIsIm1lbWJlcnMiLCJ2cyIsImxvb2t1cCIsImciLCJjdXN0b21fcHJpbnRmXzM0NSIsInNjaGVtZSIsImVxdWFsJDUiLCJhXzM0NiIsImJfMzQ3IiwiYV8zNDYkMCIsImJfMzQ3JDAiLCJhXzM0OCIsImJfMzUxIiwiYl8zNDkiLCJhXzM1MCIsImFfMzU0IiwiYV8zNTIiLCJiXzM1NSIsImJfMzUzIiwiYV8zNTYiLCJiXzM1NyIsImFfMzU4IiwiYl8zNTkiLCJhXzM2MCIsImJfMzYxIiwidF8zNjMiLCJ0XzM2MiIsInRfMzY1IiwidF8zNjQiLCJhXzM2NiIsImJfMzY3IiwiYV8zNjgiLCJiXzM2OSIsInRfMzcxIiwidF8zNzAiLCJ0XzM3MyIsInRfMzcyIiwiYV8zNzQiLCJiXzM3NSIsImFfMzc2IiwiYl8zNzciLCJhXzM3OCIsImJfMzc5IiwiYV8zODAiLCJiXzM4MSIsInRfMzgzIiwidF8zODIiLCJ0XzM4NSIsInRfMzg0IiwiYV8zODYiLCJiXzM4NyIsInJpZ2h0XzIzOCIsImxlZnRfMjM3IiwidF8yNDAiLCJ0XzIzOSIsInRfMjQyIiwidF8yNDEiLCJhXzI0MyIsImJfMjQ0IiwicmlnaHRfMjQ2IiwibGVmdF8yNDUiLCJ0XzI0OCIsInRfMjQ3IiwidF8yNTAiLCJ0XzI0OSIsImFfMzkwIiwiYl8zOTEiLCJ0XzM5MyIsInRfMzkyIiwidF8zOTUiLCJ0XzM5NCIsImFfMzk4IiwiYV8zOTYiLCJiXzM5OSIsImJfMzk3IiwiYV80MDAiLCJiXzQwMSIsImFfNDA2IiwiYV80MDQiLCJhXzMwMSIsImJfNDA3IiwiYl80MDUiLCJiXzQwMyIsImFfMzAzIiwiYl8zMDQiLCJ0XzMwNiIsInRfMzA1IiwidF8zMDgiLCJ0XzMwNyIsInRfMzEwIiwidF8zMDkiLCJ0XzMxMiIsInRfMzExIiwiYV8zMTMiLCJiXzMxNCIsImFfNDEwIiwiYl80MTEiLCJ0X29mX3NleHAkNSIsInNleHBfNDE2IiwidGFnXzQxNyIsInNleHBfYXJnc180MTgiLCJhcmcxXzQyMCIsImFyZzBfNDE5IiwicmVzMF80MjEiLCJyZXMxXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcxXzQyNyIsImFyZzBfNDI2IiwicmVzMF80MjgiLCJyZXMxXzQyOSIsInNleHBfYXJnc180NTciLCJhcmcwXzQ2MyIsImFyZzFfNDU5IiwiYXJnMF80NTgiLCJyZXMwXzQ2MCIsInJlczFfNDYxIiwic2V4cF8yNTUiLCJhdG9tXzI1MyIsInNleHBfYXJnc18yNTYiLCJhdG9tXzI1MyQwIiwiYXJnMF8yNjQiLCJhcmcxXzI1OSIsImFyZzBfMjU4IiwicmVzMF8yNjAiLCJyZXMxXzI2MSIsInJlczBfMjY1IiwiYXJnMF8yNzIiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNjkiLCJyZXMxXzI3MCIsInJlczBfMjczIiwicmVzMF80NjQiLCJzZXhwX2FyZ3NfNDc3IiwiYXJnMV80NzkiLCJhcmcwXzQ3OCIsInJlczBfNDgwIiwicmVzMV80ODEiLCJzZXhwX2FyZ3NfNDMyIiwiYXJnMF80MzgiLCJyZXMwXzQzOSIsInNleHBfNDM3IiwiYXJnMV80MzQiLCJhcmcwXzQzMyIsInJlczBfNDM1IiwicmVzMV80MzYiLCJzZXhwX2FyZ3NfNDg0IiwiYXJnMl80ODciLCJhcmcxXzQ4NiIsImFyZzBfNDg1Iiwic2V4cF8zMjciLCJhcmcxXzMyNCIsImFyZzBfMzIzIiwicmVzMF8zMjUiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2IiwicmVzMF80ODgiLCJyZXMxXzQ4OSIsInJlczJfNDkwIiwic2V4cF9hcmdzXzQ1MiIsImFyZzBfNDUzIiwicmVzMF80NTQiLCJzZXhwX2FyZ3NfNDY3IiwiYXJnMF80NzMiLCJhcmcxXzQ2OSIsImFyZzBfNDY4IiwicmVzMF80NzAiLCJyZXMxXzQ3MSIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0MiIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwXzQ0NyIsImFyZzFfNDQ0IiwiYXJnMF80NDMiLCJyZXMwXzQ0NSIsInJlczFfNDQ2Iiwic2V4cF9vZl90JDciLCJhcmcxXzQ5MiIsImFyZzBfNDkxIiwicmVzMF80OTMiLCJyZXMxXzQ5NCIsImFyZzFfNDk2IiwiYXJnMF80OTUiLCJyZXMwXzQ5NyIsInJlczFfNDk4IiwiYXJnMF81MDMiLCJyZXMwXzUwNCIsImFyZzFfNTAwIiwiYXJnMF80OTkiLCJyZXMwXzUwMSIsInJlczFfNTAyIiwiYXJnMF81MDkiLCJyZXMwXzUxMCIsImFyZzFfNTA2IiwiYXJnMF81MDUiLCJyZXMwXzUwNyIsInJlczFfNTA4IiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsImFyZzBfNTE3IiwiYXJnMV81MTQiLCJhcmcwXzUxMyIsInJlczBfNTE1IiwicmVzMV81MTYiLCJ2XzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwidl8yODIiLCJhcmcxXzI4NCIsImFyZzBfMjgzIiwicmVzMF8yODUiLCJyZXMxXzI4NiIsInJlczBfNTE4IiwiYXJnMF81MjMiLCJhcmcxXzUyMCIsImFyZzBfNTE5IiwicmVzMF81MjEiLCJyZXMxXzUyMiIsInJlczBfNTI0IiwiYXJnMV81MjYiLCJhcmcwXzUyNSIsInJlczBfNTI3IiwicmVzMV81MjgiLCJhcmcyXzUzMSIsImFyZzFfNTMwIiwiYXJnMF81MjkiLCJtZW1iZXJzXzMzNSIsImxvY18zMzMiLCJnaWRfMzMxIiwiYXJnXzMzNiIsImFyZzFfMzQyIiwiYXJnMF8zNDEiLCJyZXMwXzM0MyIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzMzOSIsInJlczFfMzQwIiwicmVzMV8zNDQiLCJibmRzXzMzMCIsImFyZ18zMzQiLCJibmRzXzMzMCQwIiwiYXJnXzMzMiIsImJuZHNfMzMwJDEiLCJyZXMwXzUzMiIsInJlczFfNTMzIiwicmVzMl81MzQiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImlzX2N5Y2xpYyIsImlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nXyIsImxvb2t1cCQwIiwiYV81MzUiLCJiXzUzNiIsInRfNTM4IiwidF81MzciLCJ0XzU0MCIsInRfNTM5IiwiYXJnMV81NDIiLCJhcmcwXzU0MSIsInJlczBfNTQzIiwicmVzMV81NDQiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl81NDUiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJzdGFibGVfd2l0bmVzc19hcnJheSIsInN0YWJsZV93aXRuZXNzX2xhenlfdCIsInN0YWJsZV93aXRuZXNzX2xpc3QiLCJzdGFibGVfd2l0bmVzc19vcHRpb24iLCJzdGFibGVfd2l0bmVzc19yZWYiLCJvZl9zZXJpYWxpemFibGUiLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfYXJyYXkiLCJhciIsImVsc19wb3NfcmVmIiwiaSIsImJpbl93cml0ZV9oYXNodGJsIiwiYmluX3dyaXRlX2tleSIsImJpbl93cml0ZV92YWwiLCJwbGVuIiwiY250X3JlZiIsImNvbGxfaHRibCIsInJlc19wb3MiLCJiaW5fd3JpdGVfZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVfZmxvYXQ2NF92ZWMiLCJiaW5fd3JpdGVfZmxvYXQzMl9tYXQiLCJtIiwibGVuMSIsImxlbjIiLCJwb3MkMSIsImJpbl93cml0ZV9mbG9hdDY0X21hdCIsImJpbl93cml0ZV9iaWdzdHJpbmciLCJzIiwiYmluX3dyaXRlX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlX2ludF84Yml0IiwiYmluX3dyaXRlX2ludF8xNmJpdCIsImJpbl93cml0ZV9pbnRfMzJiaXQiLCJiaW5fd3JpdGVfaW50XzY0Yml0IiwiYmluX3dyaXRlX2ludDY0X2JpdHMiLCJiaW5fd3JpdGVfbmV0d29yazE2X2ludCIsImJpbl93cml0ZV9uZXR3b3JrMzJfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZV9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfYXJyYXkiLCJlbCQxIiwibWF5YmVfZmxvYXQiLCJlbCQwIiwiZmlyc3QiLCJyZXMiLCJiaW5fcmVhZF9oYXNodGJsIiwiYmluX3JlYWRfa2V5IiwiYmluX3JlYWRfdmFsIiwicmVhZF9rdl9wYWlyIiwiZWxzIiwiYmluX3JlYWRfZmxvYXQzMl92ZWMiLCJ2ZWMiLCJiaW5fcmVhZF9mbG9hdDY0X3ZlYyIsImJpbl9yZWFkX2Zsb2F0MzJfbWF0IiwibWF0IiwiYmluX3JlYWRfZmxvYXQ2NF9tYXQiLCJiaW5fcmVhZF9iaWdzdHJpbmciLCJiaW5fcmVhZF92YXJpYW50X2ludCIsImJpbl9yZWFkX2ludF84Yml0IiwiYmluX3JlYWRfaW50XzE2Yml0IiwiYmluX3JlYWRfaW50XzMyYml0IiwiYmluX3JlYWRfaW50XzY0Yml0IiwiYmluX3JlYWRfaW50NjRfYml0cyIsImJpbl9yZWFkX25ldHdvcmsxNl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRfbmV0d29yazY0X2ludCIsImJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkX21kNSIsImJpbl9zaGFwZV91bml0IiwiYmluX3NoYXBlX2Jvb2wiLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2hhcGVfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NoYXBlX2ludDYzIiwiYmluX3NoYXBlX2ludDY0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaGFwZV9uYXQwIiwiYmluX3NoYXBlX2RpZ2VzdCIsImJpbl9zaGFwZV9mbG9hdDMyX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDY0X3ZlYyIsImJpbl9zaGFwZV92ZWMiLCJiaW5fc2hhcGVfZmxvYXQzMl9tYXQiLCJiaW5fc2hhcGVfZmxvYXQ2NF9tYXQiLCJiaW5fc2hhcGVfbWF0IiwiYmluX3NoYXBlX2JpZ3N0cmluZyIsImJpbl9zaGFwZV9mbG9hdGFycmF5IiwiYmluX3NoYXBlX3ZhcmlhbnRfaW50IiwiYmluX3NoYXBlX2ludF84Yml0IiwiYmluX3NoYXBlX2ludF8xNmJpdCIsImJpbl9zaGFwZV9pbnRfMzJiaXQiLCJiaW5fc2hhcGVfaW50XzY0Yml0IiwiYmluX3NoYXBlX2ludDY0X2JpdHMiLCJiaW5fc2hhcGVfbmV0d29yazE2X2ludCIsImJpbl9zaGFwZV9uZXR3b3JrMzJfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaGFwZV9uZXR3b3JrNjRfaW50IiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2hhcGVfb3B0aW9uIiwiYmluX3NoYXBlX2xpc3QiLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2hhcGVfaGFzaHRibCIsInkiLCJiaW5fc2hhcGVfbGF6eSIsImJpbl9zaGFwZV9wYWlyIiwiYmluX3NoYXBlX3RyaXBsZSIsInoiLCJiaW5fc2l6ZV91bml0IiwiYmluX3NpemVfYm9vbCIsImJpbl9zaXplX2NoYXIiLCJiaW5fc2l6ZV9tZDUiLCJiaW5fc2l6ZV9pbnRfbmF0MCIsImJpbl9zaXplX2ludF9uZWdhdGl2ZSIsImJpbl9zaXplX2ludCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9pbnQkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfdW5pdCQwIiwiYmluX3NpemVfYm9vbCQwIiwiYmluX3NpemVfY2hhciQwIiwiYmluX3NpemVfaW50JDEiLCJiaW5fc2l6ZV9uYXQwJDAiLCJiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMiLCJzaXplX2xlbiIsImJpbl9zaXplX3N0cmluZyIsImJpbl9zaXplX2J5dGVzIiwiYmluX3NpemVfbWQ1JDEiLCJiaW5fc2l6ZV9mbG9hdCQwIiwiZiIsImJpbl9zaXplX2ludDMyIiwiYmluX3NpemVfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX3JlZiIsImJpbl9zaXplX2xhenlfdCIsImJpbl9zaXplX29wdGlvbiIsImJpbl9zaXplX2ludDMyJDAiLCJiaW5fc2l6ZV9pbnQ2NCQwIiwiYmluX3NpemVfbmF0aXZlaW50IiwiYmluX3NpemVfcmVmJDAiLCJiaW5fc2l6ZV9lbCIsImJpbl9zaXplX2xhenlfdCQwIiwiYmluX3NpemVfb3B0aW9uJDAiLCJiaW5fc2l6ZV9wYWlyJDAiLCJiaW5fc2l6ZV9hIiwiYmluX3NpemVfYiIsImJpbl9zaXplX3RyaXBsZSQwIiwiYmluX3NpemVfYyIsImJpbl9zaXplX2xpc3QiLCJzaXplX2FjYyIsImxlbl9hY2MiLCJsZW5fYWNjJDAiLCJzaXplX2FjYyQwIiwiYmluX3NpemVfZmxvYXRhcnJheSIsImJpbl9zaXplX2FycmF5IiwibGVuJDAiLCJ0b3RhbF9sZW4iLCJ0b3RhbF9sZW5fcmVmIiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfdmFyaWFudF9pbnQiLCJiaW5fcmVhZGVyX3ZhcmlhbnRfaW50IiwiYmluX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlcl9pbnRfOGJpdCIsImJpbl9yZWFkZXJfaW50XzhiaXQiLCJiaW5faW50XzhiaXQiLCJiaW5fd3JpdGVyX2ludF8xNmJpdCIsImJpbl9yZWFkZXJfaW50XzE2Yml0IiwiYmluX2ludF8xNmJpdCIsImJpbl93cml0ZXJfaW50XzMyYml0IiwiYmluX3JlYWRlcl9pbnRfMzJiaXQiLCJiaW5faW50XzMyYml0IiwiYmluX3dyaXRlcl9pbnRfNjRiaXQiLCJiaW5fcmVhZGVyX2ludF82NGJpdCIsImJpbl9pbnRfNjRiaXQiLCJiaW5fd3JpdGVyX2ludDY0X2JpdHMiLCJiaW5fcmVhZGVyX2ludDY0X2JpdHMiLCJiaW5faW50NjRfYml0cyIsImJpbl93cml0ZXJfbmV0d29yazE2X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazE2X2ludCIsImJpbl9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50IiwiYmluX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiIsImJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyIiwiYmluX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZXJfbmV0d29yazY0X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludCIsImJpbl9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQiLCJiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9uZXR3b3JrNjRfaW50NjQiLCJjbnZfd3JpdGVyIiwiY252IiwidHBfY2xhc3MiLCJjbnZfcmVhZGVyIiwidnRhZyIsImZvcl9zaGFwZSIsImZvcl93cml0ZXIiLCJmb3JfcmVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX3dyaXRlX3NpemVfaGVhZGVyIiwiYmluX3JlYWRfc2l6ZV9oZWFkZXIiLCJiaW5fZHVtcCIsIndyaXRlciIsImhlYWRlciIsInBvc19sZW4iLCJ0b3RfbGVuIiwicG9zX2xlbiQwIiwiYnVmJDAiLCJidWYkMSIsImJpbl9yZWFkX3N0cmVhbSIsIm1heF9zaXplIiwicmVhZCIsInJlYWRlciIsIm1heF9zaXplJDAiLCJtc2ciLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsIm1heWJlX2Fubm90YXRlX3NoYXBlIiwibWF5YmVfdXVpZCIsInNoYXBlIiwidXVpZCIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInQiLCJiaW5fd3JpdGVfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fc2l6ZV90JDAiLCJiaW5fd3JpdGVfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaGFwZV9lbCIsImJpbl93cml0ZXIiLCJiaW5fcmVhZGVyIiwidHlwZV9jbGFzcyIsImJpbl9zaGFwZV9lbDEiLCJiaW5fc2hhcGVfZWwyIiwiYmluX3NpemVfZWwxIiwiYmluX3NpemVfZWwyIiwiYmluX3dyaXRlX2VsMSIsImJpbl93cml0ZV9lbDIiLCJiaW5fcmVhZF9lbDEiLCJiaW5fcmVhZF9lbDIiLCJiaW5fd3JpdGVyMSIsImJpbl93cml0ZXIyIiwiYmluX3JlYWRlcjEiLCJiaW5fcmVhZGVyMiIsInR5cGVfY2xhc3MxIiwidHlwZV9jbGFzczIiLCJiaW5fc2hhcGVfZWwzIiwiYmluX3NpemVfZWwzIiwiYmluX3dyaXRlX2VsMyIsImJpbl9yZWFkX2VsMyIsImJpbl93cml0ZXIzIiwiYmluX3JlYWRlcjMiLCJ0eXBlX2NsYXNzMyIsIm1heWJlX2NhbGxlcl9pZGVudGl0eSIsIndpdGhfbW9kdWxlX25hbWUiLCJtb2R1bGVfbmFtZSIsImZ1bmN0aW9uX25hbWUiLCJtb2R1bGVfbmFtZSQwIiwic2l6ZV9yZWYiLCJpZHgiLCJyZXN1bHQiLCJ0MSIsInQyIiwidDMiLCJiaW5fcmVhZF91bml0JDAiLCJ2aW50IiwiYmluX3JlYWRfYm9vbCQwIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRfaW50JDAiLCJiaW5fcmVhZF9mbG9hdCQwIiwiYmluX3JlYWRfZmxvYXRhcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJzdGFibGVfd2l0bmVzcyIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJzZXhwX29mX3QiLCJvZl9hXzAwMyIsInN0YXJ0X2EiLCJlbmRfYSIsIndyaXR0ZW4iLCJleHBlY3RlZF9zaXplIiwib2ZfYmluYWJsZSIsInRvX2JpbmFibGUiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsInRvX29wYXF1ZSIsImJsb2IiLCJvZl9vcGFxdWVfZXhuIiwiY29tcGFyZSQwIiwic2V4cF9vZl90JDAiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwic3RyaW5nX29mX2JpZ3N0cmluZyIsImJpbl9yZWFkX3QkNyIsImJpbl9yZWFkX3QkOCIsInRvX29wYXF1ZSQwIiwiYmluX3dyaXRlcl92Iiwib2Zfb3BhcXVlX2V4biQwIiwiYmluX3JlYWRlcl92IiwiZXJyb3IiLCJjb21wYXJlJDEiLCJzZXhwX29mX3QkMSIsImJpbl9zaXplX3QkNSIsImJpbl9yZWFkX3QkMTEiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRlcl90JDIiLCJwcmVfdGVzdF9ob29rIiwibmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCIsInQiLCJpbml0aWFsIiwiYW1fcnVubmluZ19lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImRpZmZfcGF0aF9wcmVmaXgiLCJkaXNwbGF5ZWRfZGVzY3IiLCJkZXNjciIsImZpbGVuYW1lIiwibGluZSIsInN0YXJ0X3BvcyIsImVuZF9wb3MiLCJkZXNjciQwIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJsIiwiaSIsInRhZyIsInMiLCJzdHIiLCJmaWxlIiwiaW5kZXgiLCJpbmRleCQwIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nIiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiY29tcGxldGVfdGFncyIsInVzZWQiLCJsaW5lX251bWJlcl9vcHQiLCJwb3NpdGlvbl9zdGFydCIsImVuZF9vZl9kZWZfZmlsZW5hbWUiLCJsaW5lX251bWJlciIsImZvdW5kIiwicmVxIiwiZHJvcHBlZCIsImRlc2NyJDEiLCJzdWJzdHJpbmciLCJzaG91bGRfcnVuIiwiZGVzY3IkMiIsImNoIiwicmVzdWx0JDAiLCJjYW1sX3JhbmRvbV9zdGF0ZSIsImJhc2VfcmFuZG9tX3N0YXRlIiwicmVzdWx0IiwiYmFja3RyYWNlJDAiLCJleG5fc3RyIiwic2VwIiwic2V0X2xpYl9hbmRfcGFydGl0aW9uIiwic3RhdGljX2xpYiIsIndoaWNoX3Rlc3RzIiwicmVxdWlyZXNfcGFydGl0aW9uIiwidW5zZXRfbGliIiwidGVzdCIsImIiLCJ0ZXN0X3VuaXQiLCJ0ZXN0X21vZHVsZSIsInBhcnRpYWxfdGFncyIsInByZXYiLCJ4IiwiZSQwIiwiZSIsInN1bW1hcml6ZSIsImsiLCJhY2MiLCJjb3VudCIsImNvdW50X3Rlc3RfbW9kdWxlcyIsInVudXNlZF90ZXN0cyIsImVycm9ycyIsInVzZV9jb2xvciQwIiwiaW5fcGxhY2UkMCIsImRpZmZfY29tbWFuZCQwIiwiZGlmZl9wYXRoX3ByZWZpeCQwIiwic291cmNlX3RyZWVfcm9vdCQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJsaXN0JDAiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxlZnRfY29sdW1uX3dpZHRoIiwid2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwiY29udiIsIngiLCJsaWZ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJ1aWQiLCJuZXh0IiwibmFtZSIsImNvZGUiLCJoYXNoIiwic3RhdGljJDAiLCJjb21wYXJlJDAiLCJrMSIsImsyIiwiY21wIiwiYiQwIiwiYSQwIiwieXMiLCJ5IiwieHMiLCJuIiwiZXF1YWwkMCIsImhhc2gkMCIsInN0YXRpYyQxIiwia2V5IiwidCIsInVpZCQwIiwibmFtZSQwIiwiY3JlYXRlIiwic2FtZSIsIm5tMSIsIm5tMiIsInNhbWVfd2l0bmVzcyIsInNhbWVfd2l0bmVzc19leG4iLCJpbnQkMCIsIm1lbSIsInRhYmxlIiwic2V0IiwiZGF0YSIsImZpbmQiLCJkYXRhJDAiLCJmYWlsIiwidWlkX2EiLCJ1aWRfYiIsIm1zZyIsInQkMCIsIndpdG5lc3MiLCJ0eXBlbmFtZV9vZl90IiwiYyIsImQiLCJlIiwibGFiZWwiLCJhcml0eSIsImFyZ3NfbGFiZWxzIiwiaW5kZXgiLCJvY2FtbF9yZXByIiwidHlpZCIsInRyYXZlcnNlIiwiaW50ZXJuYWxfdXNlX29ubHkiLCJsZW5ndGgiLCJ0YWciLCJpc19wb2x5bW9ycGhpYyIsInZhbHVlIiwiZm9sZCIsImluaXQiLCJmIiwiaW50ZXJuYWxfdXNlX29ubHkkMCIsImxhYmVsJDAiLCJpbmRleCQwIiwiZ2V0IiwiaXNfbXV0YWJsZSIsInR5aWQkMCIsInRyYXZlcnNlJDAiLCJpbnRlcm5hbF91c2Vfb25seSQxIiwidHlwZW5hbWVfb2ZfdCQwIiwibGVuZ3RoJDAiLCJmaWVsZCIsImhhc19kb3VibGVfYXJyYXlfdGFnIiwiY3JlYXRlJDAiLCJmb2xkJDAiLCJpbnRlcm5hbF91c2Vfb25seSQyIiwibmFtZSQxIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwibmFtZSQ1IiwibmFtZSQ2IiwibmFtZSQ3IiwibmFtZSQ4IiwibmFtZSQ5IiwibmFtZSQxMCIsIm5hbWUkMTEiLCJuYW1lJDEyIiwibmFtZSQxMyIsIm5hbWUkMTQiLCJuYW1lJDE1IiwibmFtZSQxNiIsIm5hbWUkMTciLCJuYW1lJDE4IiwibmFtZSQxOSIsInR5cGVuYW1lX29mX2ludCIsInR5cGVuYW1lX29mX2ludDMyIiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9uYXRpdmVpbnQiLCJ0eXBlbmFtZV9vZl9jaGFyIiwidHlwZW5hbWVfb2ZfZmxvYXQiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl91bml0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfZnVuY3Rpb24iLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJyZXAiLCJyZXAkMCIsInJlcCQxIiwicmVwJDIiLCJyZXAkMyIsInJlcCQ0IiwibmFtZSQyMCIsImFyaXR5JDAiLCJjJDAiLCJiJDEiLCJhJDEiLCJkJDAiLCJjJDEiLCJiJDIiLCJhJDIiLCJ0eXBlbmFtZV9vZl90JDEiLCJybmciLCJkb20iLCJyZXAkNSIsInJlcCQ2IiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwicjEiLCJyMiQwIiwicjEkMCIsInIyJDEiLCJ4JDAiLCJyMSQxIiwicjIkMiIsIngkMSIsInIxJDIiLCJyMiQzIiwieCQyIiwicjEkMyIsInIyJDQiLCJ4JDMiLCJybmcxIiwiZG9tMSIsInJuZzIiLCJkb20yIiwidDEkMSIsInQyJDIiLCJiMiIsImEyIiwiYjEiLCJhMSIsImMyIiwiYjIkMCIsImEyJDAiLCJjMSIsImIxJDAiLCJhMSQwIiwiZDIiLCJjMiQwIiwiYjIkMSIsImEyJDEiLCJkMSIsImMxJDAiLCJiMSQxIiwiYTEkMSIsImUyIiwiZDIkMCIsImMyJDEiLCJiMiQyIiwiYTIkMiIsImUxIiwiZDEkMCIsImMxJDEiLCJiMSQyIiwiYTEkMiIsInIxJDQiLCJyMiQ1IiwicjEkNSIsInIyJDYiLCJuYW1lMSIsInIyJDciLCJuYW1lMiIsInIxJDciLCJ4JDQiLCJ0MSQzIiwidDIkMyIsInQyJDQiLCJyMSQ2IiwidDEkMiIsInIyIiwidDIkMSIsInByb29mIiwiaGVhZCIsInQkMSIsInR5cGVyZXBfb2ZfaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2Zfb3B0aW9uIiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9hcnJheSIsInR5cGVyZXBfb2ZfbGF6eV90IiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl90dXBsZTIiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTUiLCJ0eXBlcmVwX29mX2ludDMyIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl90dXBsZTAiLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfaW50NjMiLCJyZXByX29mX3BvbHlfdmFyaWFudCIsInZhcmlhbnQiLCJzaXplIiwicmVwciIsImhhc2hfdmFyaWFudCIsInMiLCJhY2N1IiwiaSIsImRvdWJsZV9hcnJheV92YWx1ZSIsImRvdWJsZSQwIiwic2ltcGxlIiwibWFwX3ZhcmlhbnQiLCJtYXAiLCJ0eXBlbmFtZSIsInBvbHltb3JwaGljIiwidGFncyIsInRhZyQwIiwiZmN0IiwiayIsImF0YWciLCJidGFnIiwibWFwX3JlY29yZCIsInJlY29yZCIsImZpZWxkcyIsImZpZWxkJDAiLCJnZXQkMCIsImFmaWVsZCIsImJmaWVsZCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwic2hhcmVkIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXB1dGF0aW9uIiwiY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UiLCJzaGFyZSIsInJlcXVpcmVkIiwidGFibGUkMCIsImNoZWNrX2RlcGVuZGVuY2llcyIsImltcGxlbWVudHMkMCIsIm1lc3NhZ2UiLCJyZXBsYWNlJDAiLCJtZW0kMCIsInRhYmxlMCIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInRhYmxlNSIsImlzX3JlZ2lzdGVyZWQiLCJpZGVudCIsInVuaXQiLCJyZWdpc3RlcjAiLCJjb21wdXRlIiwicmVnaXN0ZXIxIiwicmVnaXN0ZXIyIiwicmVnaXN0ZXIzIiwicmVnaXN0ZXI0IiwicmVnaXN0ZXI1IiwicmVnaXN0ZXIiLCJ0eXBlcmVwX29mX2EiLCJvZl90eXBlcmVwIiwiY29udGV4dCIsIm1lbW9fdGFibGUiLCJyZXAkMTEiLCJyZXAkMTIiLCJyZXAkMTMiLCJyZXAkMTQiLCJyZXAkMTUiLCJ0dXBsZSIsInJhIiwicmIiLCJyYSQwIiwicmIkMCIsInJjIiwicmEkMSIsInJiJDEiLCJyYyQwIiwicmQiLCJyYSQyIiwicmIkMiIsInJjJDEiLCJyZCQwIiwicmUiLCJjb250ZW50IiwibmFtZWQiLCJjdXN0b20iLCJjdXN0b20kMCIsImN1c3RvbSQxIiwicmVwJDciLCJjdXN0b20kMiIsImN1c3RvbSQzIiwicmVwJDgiLCJjdXN0b20kNCIsImN1c3RvbSQ1IiwicmVwJDkiLCJ0eXBlbmFtZV9vZl90JDIiLCJjdXN0b20kNiIsImN1c3RvbSQ3IiwicmVwJDEwIiwidHlwZW5hbWVfb2ZfdCQzIiwiY3VzdG9tJDgiLCJjdXN0b20kOSIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInR5cGVuYW1lX29mX25hbWVkIiwib2ZfcDEiLCJvZl9wMiIsIm9mX3AzIiwib2ZfcDQiLCJvZl9wNSIsInR5cGVyZXBfb2ZfdCIsImVycm9yX3NvdXJjZV8wMDIiLCJoYXNoX2ZvbGRfdCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiZXF1YWwiLCJyZWxhdGl2ZV90byIsImRpciIsInQiLCJ2IiwiZXhuJDAiLCJleG4iLCJkaXJfb3JfZXJyb3IiLCJpbml0aWFsX2RpciIsInRfb2Zfc2V4cCQwIiwieF8wMDMiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwibGluZV9zdGFydCIsImxpbmVfbnVtYmVyIiwiZmlsZW5hbWUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDEzIiwic3RhcnRfcG9zXzAxMSIsImxpbmVfc3RhcnRfMDA5IiwibGluZV9udW1iZXJfMDA3IiwiZmlsZW5hbWVfMDA1IiwiYXJnXzAxNCIsImJuZHNfMDA0IiwiYXJnXzAxMiIsImJuZHNfMDA0JDAiLCJhcmdfMDEwIiwiYm5kc18wMDQkMSIsImFyZ18wMDgiLCJibmRzXzAwNCQyIiwiYXJnXzAwNiIsImJuZHNfMDA0JDMiLCJjb21wYXJlJDAiLCJhXzAxNSIsImJfMDE2IiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwib2Zfc291cmNlX2NvZGVfcG9zaXRpb24iLCJwb3MiLCJzZXhwX29mX3QkMSIsImNvbXBhcmUkMiIsInRvX3N0cmluZyQwIiwib2Zfc3RyaW5nJDAiLCJzIiwiaSIsIm9mX2FfMDAxIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJjbXBfYSIsImFfMDA3IiwiYl8wMDgiLCJhXzAwOSIsImJfMDEwIiwiYV8wMTEiLCJiXzAxMiIsImFfMDEzIiwiYl8wMTQiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiYW1fcnVubmluZ19leHBlY3RfdGVzdCIsImdldF9jdXJyZW50Iiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0IiwibG9jYXRpb24iLCJwb3MiLCJwcmV2X3BvcyIsInByZXZfcG9zJDAiLCJsZW4iLCJmbHVzaCIsInNhdmVfYW5kX3JldHVybl9vdXRwdXQiLCJpbnN0YW5jZSIsInRlc3RzX3J1biQwIiwiZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIiwicyIsImdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIiwibGFzdF9vZnMiLCJuZXh0X29mcyIsImxvYyIsImFjYyIsIm9mcyIsIm91dHB1dHMiLCJ0cmFpbGluZ19vdXRwdXQiLCJzYXZlX291dHB1dCIsInRyYWlsaW5nIiwiYmxvY2tzIiwicnVuIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4Iiwic2FuaXRpemUiLCJzIiwicnVuIiwiZiIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzIiwidG9jcyQwIiwidG9jIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJnZXRfbWFueSIsInN0YWNrJDAiLCJzdGFjayIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImMkMSIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJjJDIiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsInl5dGFibGVzIiwic2V4cCIsImxleGZ1biIsImxleGJ1ZiIsInNleHBfb3B0Iiwic2V4cHMiLCJyZXZfc2V4cHMiLCJzZXhwc19hYnMiLCJvY2FtbF9sZXhfdGFibGVzIiwiYnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJzY2FuX3N0cmluZyIsImxvY3MiLCJsb2NzJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwibG9jcyQxIiwibG9jcyQyIiwic3RhcnQiLCJnZW5fbG9hZF9zZXhwX2xvYyIsInVuaXQiLCJvZl9pbnRfc3R5bGUiLCJvZl9mbG9hdF9zdHlsZSIsInRvX3N0cmluZyIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsInBwIiwicHBfbWFjaCIsInBwX2h1bV9pbmRlbnQiLCJwcF9odW0iLCJkZWZhdWx0X2luZGVudCIsIm1lc3NhZ2UiLCJjb21wYXJlIiwiZXF1YWwiLCJ0X3NleHBfZ3JhbW1hciIsIndpdGhfbmV3X2J1ZmZlciIsIm9jIiwib3V0cHV0X2h1bSIsIm91dHB1dF9odW1faW5kZW50IiwiaW5kZW50Iiwib3V0cHV0X21hY2giLCJwcm5nIiwidGVtcF9maWxlX25hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2IiwicmFuZF9zdGF0ZSIsInJldCIsInJuZCIsIm9wZW5fdGVtcF9maWxlIiwicGVybSIsImNvdW50ZXIiLCJuYW1lIiwiZSQwIiwiZSIsImNvdW50ZXIkMCIsInNhdmVfb2Zfb3V0cHV0Iiwib3V0cHV0X2Z1bmN0aW9uIiwiZmlsZSIsInRtcF9uYW1lIiwib3V0cHV0X3NleHBfbmwiLCJkb19vdXRwdXQiLCJzYXZlX2h1bSIsInNhdmVfbWFjaCIsIm91dHB1dF9zZXhwc19ubCIsInNhdmVfc2V4cHNfaHVtIiwic2F2ZV9zZXhwc19tYWNoIiwic2Nhbl9zZXhwIiwic2Nhbl9zZXhwX29wdCIsInNjYW5fc2V4cHMiLCJzY2FuX3Jldl9zZXhwcyIsImdldF9tYWluX2J1ZiIsImJ1ZiQwIiwiYnVmJDEiLCJzY2FuX2ZvbGRfc2V4cHMiLCJpbml0IiwibWFpbiIsImFjYyIsImFjYyQwIiwic2Nhbl9pdGVyX3NleHBzIiwic2Nhbl9zZXhwc19jb252IiwiY29sbCIsInNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlIiwiY29udGFpbmluZ19zZXhwIiwibG9jYXRpb24iLCJpbnZhbGlkX3NleHAiLCJleG4iLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJnZXRfc2V4cCIsImdldF9yYW5nZSIsInJhbmdlIiwic2V4cF9vZl9jb252Iiwic2V4cF9vZl9hIiwiYSIsImZpbmRfc2V4cCIsImFubm90X3NleHAiLCJsb29wIiwic3ViX3NleHAiLCJhbm5vdHMiLCJyZXMiLCJleG4kMCIsImludmFsaWRfc2V4cCQwIiwiY3JlYXRlIiwidGV4dF9saW5lIiwidGV4dF9jaGFyIiwiYnVmX3BvcyIsImdsb2JhbF9vZmZzZXQiLCJmYWlsIiwibXNnIiwid2l0aF9idWZfcG9zIiwicGUiLCJwcG9zIiwiYW5ub3RhdGVfc2V4cCIsIml0ZXIiLCJzdGFydF9wb3MkMCIsImFubm90IiwiZW5kX3BvcyQwIiwicmFpc2VfZm91bmQiLCJzdGF0ZSIsInJhaXNlX2ZvdW5kJDAiLCJwb3NpdGlvbnMiLCJwYXJzZV9wb3Nfb2Zfc3RhdGUiLCJydW5fZmVlZF9sb29wIiwic3RhY2siLCJsZW4iLCJzdHIiLCJzdHJfbGVuIiwicG9zX2xlbiIsIm1heF9wb3MiLCJwcmV2aW91c19vZmZzZXQiLCJzdGFjayQwIiwicmVzdWx0Iiwib2Zmc2V0IiwibmV4dF9wb3MiLCJlcnIiLCJwYXJzZV9zdGF0ZSIsInBhcnNlX2Vycm9yIiwidXNlZF9yZWYiLCJwYXJzZV9mdW4iLCJjb250X3N0YXRlIiwicGFyc2UiLCJwYXJzZV9wb3MiLCJsZW4kMCIsInJhaXNlX2ZvdW5kJDEiLCJsZW5ndGgiLCJ1bnNhZmVfZmVlZF9sb29wIiwic3RhY2skMSIsInBvcyQxIiwicGFyc2Vfc3RyIiwicmFpc2VfZm91bmQkMiIsImxlbmd0aCQwIiwidW5zYWZlX2ZlZWRfbG9vcCQwIiwicGFyc2Vfc3RyX2Fubm90IiwicmFpc2VfZm91bmQkMyIsImxlbmd0aCQxIiwidW5zYWZlX2ZlZWRfbG9vcCQxIiwicGFyc2VfYmlnc3RyaW5nIiwicmFpc2VfZm91bmQkNCIsImxlbmd0aCQyIiwidW5zYWZlX2ZlZWRfbG9vcCQyIiwicGFyc2VfYmlnc3RyaW5nX2Fubm90IiwibWtfdGhpc19wYXJzZSIsIm15X3BhcnNlIiwicGFyc2VfcG9zJDAiLCJwYXJzZV9wb3MkMSIsImZlZWRfZW5kX29mX2lucHV0IiwidGhpc19wYXJzZSIsIndzX2J1ZiIsImdlbl9pbnB1dF9zZXhwIiwiaWMiLCJ0aGlzX3BhcnNlJDEiLCJzZXhwJDAiLCJ0aGlzX3BhcnNlJDAiLCJpbnB1dF9zZXhwIiwiZ2VuX2lucHV0X3Jldl9zZXhwcyIsInJldl9zZXhwc19yZWYiLCJidWZfbGVuIiwibGVuJDIiLCJ0aGlzX3BhcnNlJDIiLCJuX3BhcnNlZCIsIm5ld19sZW4iLCJsZW4kMSIsImlucHV0X3Jldl9zZXhwcyIsImlucHV0X3NleHBzIiwib2Zfc3RyaW5nX2JpZ3N0cmluZyIsImxvYyIsImdldF9sZW4iLCJnZXRfc3ViIiwiY29udF9zdGF0ZV9zdHIiLCJvZl9zdHJpbmciLCJvZl9zdHJpbmdfbWFueSIsImdldF9ic3RyX3N1Yl9zdHIiLCJic3RyIiwiaSIsImJzdHJfd3NfYnVmIiwib2ZfYmlnc3RyaW5nIiwiZ2VuX2xvYWRfcmV2X3NleHBzIiwiZXhjJDAiLCJleGMiLCJsb2FkX3Jldl9zZXhwcyIsImxvYWRfc2V4cHMiLCJnZW5fbG9hZF9zZXhwIiwic3RyaWN0IiwidGhpc19wYXJzZSQ0Iiwic2V4cCQxIiwidGhpc19wYXJzZSQzIiwiY29udF9zdGF0ZSQwIiwibG9hZF9zZXhwIiwiZ2V0X3NleHAkMCIsImdldF9yYW5nZSQwIiwic2V4cF9vZl9jb252JDAiLCJmaW5kX3NleHAkMCIsImlucHV0X3Jldl9zZXhwcyQwIiwiaW5wdXRfc2V4cCQwIiwiaW5wdXRfc2V4cHMkMCIsIm9mX3N0cmluZyQwIiwib2ZfYmlnc3RyaW5nJDAiLCJsb2FkX3Jldl9zZXhwcyQwIiwibG9hZF9zZXhwcyQwIiwibG9hZF9zZXhwJDAiLCJjb252IiwiYmFkX3NleHAiLCJiYWRfYW5ub3Rfc2V4cCIsImdldF9jb252X2V4biIsImxpbmUiLCJsb2FkX3NleHBfY29udiIsInN0cmljdCQwIiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzJDAiLCJmb3JnZXRfdG9jcyIsImZvcmdldF90b2MkMCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfb2Zfc2V4cCIsImZsb2F0X3ZlY19vZl9zZXhwIiwiZW1wdHlfZmxvYXRfdmVjIiwiY3JlYXRlX2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdDMyX3ZlYyIsImNyZWF0ZV9mbG9hdDY0X3ZlYyIsImVtcHR5X2Zsb2F0MzJfdmVjIiwiZW1wdHlfZmxvYXQ2NF92ZWMiLCJmbG9hdDMyX3ZlY19vZl9zZXhwIiwiZmxvYXQ2NF92ZWNfb2Zfc2V4cCIsInZlY19vZl9zZXhwIiwiY2hlY2tfdG9vX211Y2hfZGF0YSIsImRhdGEiLCJmbG9hdF9tYXRfb2Zfc2V4cCIsImNyZWF0ZV9mbG9hdF9tYXQiLCJzbiIsInNtIiwiZGF0YSQwIiwiZGF0YSQxIiwiY29sJDAiLCJjcmVhdGVfZmxvYXQzMl9tYXQiLCJjcmVhdGVfZmxvYXQ2NF9tYXQiLCJmbG9hdDMyX21hdF9vZl9zZXhwIiwiZmxvYXQ2NF9tYXRfb2Zfc2V4cCIsIm1hdF9vZl9zZXhwIiwic3RyaW5nX29mX29mX3NleHBfb2YiLCJ0b19zZXhwIiwib2Zfc3RyaW5nX29mX29mX3NleHAiLCJvZl9zZXhwIiwidF9vZl9zZXhwIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdW5pdCIsInVuaXRfb2Zfc2V4cCIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9ib29sIiwiYm9vbF9vZl9zZXhwIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfY2hhciIsImNoYXJfb2Zfc2V4cCIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQiLCJpbnRfb2Zfc2V4cCIsImludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsImZsb2F0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X29mX3NleHAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9vZl9zZXhwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfcmVmIiwicmVmX29mX3NleHAiLCJyZWZfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfb2Zfc2V4cCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9hcnJheSIsImFycmF5X29mX3NleHAiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImV4bl9zZXhwX2dyYW1tYXIiLCJjb2VyY2UiLCJ0YWciLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwicmVwciIsInNleHAxIiwicmVnaXN0ZXIyIiwic2V4cF9vZl9hcmcyIiwic2V4cDIiLCJyZWdpc3RlcjMiLCJzZXhwX29mX2FyZzMiLCJzZXhwMyIsInJlZ2lzdGVyNCIsInNleHBfb2ZfYXJnNCIsInNleHA0IiwicmVnaXN0ZXI1Iiwic2V4cF9vZl9hcmc1Iiwic2V4cDUiLCJyZWdpc3RlcjYiLCJzZXhwX29mX2FyZzYiLCJzZXhwNiIsInJlZ2lzdGVyNyIsInNleHBfb2ZfYXJnNyIsInNleHA3IiwicmVnaXN0ZXI4Iiwic2V4cF9vZl9hcmc4Iiwic2V4cDgiLCJyZWdpc3RlcjkiLCJzZXhwX29mX2FyZzkiLCJzZXhwOSIsInJlZ2lzdGVyMTAiLCJzZXhwX29mX2FyZzEwIiwic2V4cDEwIiwiaW50NjQkMCIsImdvbGRlbl9nYW1tYSIsInBvcGNvdW50Iiwib2ZfaW50Iiwic2VlZCIsImNvcHkiLCJvZGRfZ2FtbWEiLCJtaXhfYml0cyIsInoiLCJuIiwibWl4NjQiLCJ6JDAiLCJ6JDEiLCJuZXh0X3NlZWQiLCJ0IiwibmV4dCIsIm9mX3NlZWRfYW5kX2dhbW1hIiwiZ2FtbWEiLCJzZWVkJDAiLCJyYW5kb21faW50NjQiLCJyYW5kb21fc3RhdGUiLCJjcmVhdGUiLCJzcGxpdCIsIm5leHRfaW50NjQiLCJwZXJ0dXJiIiwic2FsdCIsImJvb2wiLCJzdGF0ZSIsIngiLCJpbnQ2NCIsImxvIiwiaGkiLCJyZW1haW5kZXJfbWF4aW11bSIsImRyYXckMCIsInJlbWFpbmRlciIsImRyYXdfbWF4aW11bSIsImRyYXciLCJpbnQkMCIsImxvJDAiLCJoaSQwIiwiaW50MzIiLCJuYXRpdmVpbnQiLCJpbnQ2MyIsImRvdWJsZV91bHAiLCJ1bml0X2Zsb2F0X2Zyb21faW50NjQiLCJ1bml0X2Zsb2F0IiwiZmxvYXQkMCIsInJhbmdlIiwibWlkIiwiZiIsImJpdHNfdG9fcmVwcmVzZW50IiwidCQwIiwibG9nX3VuaWZvcm0iLCJtaW5fYml0cyIsIm1heF9iaXRzIiwiYml0cyIsInRfc2V4cF9ncmFtbWFyIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsIm9mX2ludF9leG4iLCJ0b19pbnRfZXhuIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwidF9vZl9zZXhwIiwic2V4cF9vZl90Iiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJpbnZhcmlhbnQiLCJvZl9zdHJpbmdfb3B0IiwidG9fc3RyaW5nX2h1bSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsImRlY3IiLCJpbmNyIiwib2ZfaW50MzJfZXhuIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50X2V4biIsIm9mX2Zsb2F0X3VuY2hlY2tlZCIsIm51bV9iaXRzIiwibWF4X3ZhbHVlIiwibWluX3ZhbHVlIiwic2hpZnRfcmlnaHRfbG9naWNhbCIsImNlaWxfcG93MiIsImZsb29yX3BvdzIiLCJjZWlsX2xvZzIiLCJmbG9vcl9sb2cyIiwiaXNfcG93MiIsImNseiIsImN0eiIsInN5bWJvbCIsImxub3QiLCJhYnMiLCJ6ZXJvIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDMiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzMyIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM0Iiwic3ltYm9sJDM1Iiwic3ltYm9sJDM2IiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5Iiwic3VtIiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwicmVjX2xpc3QiLCJ3IiwibiIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm1pbl9sZW5ndGgiLCJtYXhfbGVuZ3RoIiwidXBwZXJfYm91bmQiLCJtYXhfbGVuZ3RoJDAiLCJsZW4iLCJyZW1haW5pbmciLCJtYXhfaW5kZXgiLCJ1bml0IiwiYm9vbCIsIm9wdGlvbiIsInZhbHVlX3QiLCJlaXRoZXIiLCJmc3RfdCIsInNuZF90IiwicmVzdWx0Iiwib2tfdCIsImVycl90Iiwib2siLCJlcnIiLCJsaXN0X2dlbmVyaWMiLCJlbHRfZ2VuIiwibGlzdF9ub25fZW1wdHkiLCJsaXN0X3dpdGhfbGVuZ3RoIiwibGVuZ3RoIiwibGlzdF9maWx0ZXJlZCIsImVsdHMiLCJlbHRzJDAiLCJsZW5ndGhfb2ZfaW5wdXQiLCJsZW5ndGhfb2Zfb3V0cHV0IiwiaW5kaWNlcyIsImxpc3RfcGVybXV0YXRpb25zIiwicmVmIiwiY2hhcl91bmlmb3JtX2luY2x1c2l2ZSIsImNoYXJfdXBwZXJjYXNlIiwiY2hhcl9sb3dlcmNhc2UiLCJjaGFyX2RpZ2l0IiwiY2hhcl9wcmludF91bmlmb3JtIiwiY2hhcl91bmlmb3JtIiwiY2hhcl9hbHBoYSIsImNoYXJfYWxwaGFudW0iLCJjaGFyX3doaXRlc3BhY2UiLCJjaGFyX3ByaW50IiwiY2hhciQwIiwic21hbGxfaW50IiwiYWxsb3dfemVybyIsImxvd2VyX2JvdW5kIiwid2VpZ2h0ZWRfbG93Iiwid2VpZ2h0ZWRfaGlnaCIsInNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50Iiwic21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IiwiZ2VvbWV0cmljIiwicCIsImRlbm9taW5hdG9yIiwidW5pZm9ybSIsImV4cG9uZW50aWFsIiwiZmxvYXQkMCIsImludCQwIiwiaW50JDEiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsImxvZ191bmlmb3JtIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2dlb21ldHJpYyIsInVuaWZvcm0kMCIsImxvZ191bmlmb3JtJDAiLCJpbnQzMiIsImludDMyX3VuaWZvcm0iLCJpbnQzMl9pbmNsdXNpdmUiLCJpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSIsImludDMyX2xvZ19pbmNsdXNpdmUiLCJpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQzMl9nZW9tZXRyaWMiLCJ1bmlmb3JtJDEiLCJsb2dfdW5pZm9ybSQxIiwiaW50NjMiLCJpbnQ2M191bmlmb3JtIiwiaW50NjNfaW5jbHVzaXZlIiwiaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQ2M19sb2dfaW5jbHVzaXZlIiwiaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjNfZ2VvbWV0cmljIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDIiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzNiIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5IiwidW5pZm9ybSQyIiwibG9nX3VuaWZvcm0kMiIsImludDY0IiwiaW50NjRfdW5pZm9ybSIsImludDY0X2luY2x1c2l2ZSIsImludDY0X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjRfbG9nX2luY2x1c2l2ZSIsImludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2dlb21ldHJpYyIsInVuaWZvcm0kMyIsImxvZ191bmlmb3JtJDMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfdW5pZm9ybSIsIm5hdGl2ZWludF9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSIsIm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdiIsIm5hdGl2ZWludF9nZW9tZXRyaWMiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X25vcm1hbF9tYW50aXNzYSIsIm51bV9iaXRzIiwiYml0cyIsImZsb2F0X2V4cG9uZW50IiwiZmxvYXRfemVybyIsImxldF9zeW50YXhfMDEyIiwibGV0X3N5bnRheF8wMTMiLCJmbG9hdF9zdWJub3JtYWwiLCJtYW50aXNzYSIsImV4cG9uZW50IiwiZmxvYXRfbm9ybWFsIiwiZmxvYXRfaW5maW5pdGUiLCJsZXRfc3ludGF4XzAyMSIsImxldF9zeW50YXhfMDIyIiwiZmxvYXRfbmFuIiwiZmxvYXRfb2ZfY2xhc3MiLCJjIiwiZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyIsImZsb2F0X2Zpbml0ZSIsImZsb2F0X3dpdGhvdXRfbmFuIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiZWRpdF9pbnNlcnQiLCJwb3MiLCJzdHIiLCJlZGl0Iiwibl90aW1lcyIsInN0cmluZ19saWtlIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJiaWdhcnJheTJfZGltIiwibWF4X3RvdGFsX3NpemUiLCJhIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImIiLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsImRpbTIkMCIsInYiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImRyb3Bfa2V5cyIsImsiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsImhhbmRsZXJzIiwia2V5IiwiaW5wIiwiY2FsbGJhY2siLCJ2YWx1ZSIsImluamVjdCIsInYiLCJjYWxsZWQiLCJjYWxsYmFjayQwIiwiYSIsImhhbmRsZSIsInMiLCJwcmludF9zIiwiTmV2ZXIiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm9mX2Z1biIsImxhenkiLCJtYXAiLCJldmFsJDAiLCJ0JDAiLCJ0JDEiLCJsIiwiZiQwIiwidCQyIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDIiLCJoYW5kbGUkMCIsImhhbmRsZSQxIiwib25fcmVzcG9uc2UiLCJvZl9zeW5jX2Z1biIsIm1ha2UiLCJyZXF1ZXN0IiwicmVzcG9uZF90byIsInJlc3BvbnNlIiwibWFrZSQwIiwiZXZhbHVhdG9yIiwiY3JlYXRlIiwidXBvbiIsImhhbmRsZXIiLCJtYXRjaCIsIngiLCJmaWxsX2lmX2VtcHR5IiwicGVlayIsImhhbmRsZSQyIiwib2Zfc3Zhcl9mdW4iLCJjcmVhdGUkMCIsInF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSIsInF1ZXJ5IiwibWF5YmVfcmVzcG9uZCIsInJlc3AiLCJvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIiwicXJ0IiwibW9kX25hbWUiLCJtb2RfbmFtZSQwIiwibW9kX25hbWUkMSIsIm1vZF9uYW1lJDIiLCJtb2RfbmFtZSQzIiwibW9kX25hbWUkNCIsIm1vZF9uYW1lJDUiLCJtb2RfbmFtZSQ2IiwibW9kX25hbWUkNyIsIm1vZF9uYW1lJDgiLCJtb2RfbmFtZSQ5IiwibWF4X3ZhbHVlJDEyIiwibW9kX25hbWUkMTAiLCJyYWlzZV9jYW5ub3RfcmVwciIsInRvX3N0cmluZyIsIngiLCJ0cnVuY191bnNpZ25lZCIsImNvbnYiLCJsb2dhbmQiLCJtYXNrIiwiZXhuX3Vuc2lnbmVkIiwiZXF1YWwiLCJ5IiwidHJ1bmNfc2lnbmVkIiwic2hpZnRfbGVmdCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnQiLCJleG5fc2lnbmVkIiwiaWRlbnRpdHlfaWZfcG9zaXRpdmUiLCJncmVhdGVyX2VxdWFsIiwiemVybyIsIm9mX3NleHBfZXJyb3IiLCJ3aGF0Iiwic2V4cCIsInRvX2ludDMyIiwidG9faW50NjQiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJmdW5jIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsInR5cGVuYW1lX29mX3QiLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJ0cnVuYyIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwieCQwIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwibG9nYW5kNjQiLCJtYXNrNjQiLCJlcXVhbCQwIiwiZXF1YWw2NCIsInRvX3N0cmluZyQwIiwidG9fc3RyaW5nNjQiLCJ0cnVuYyQwIiwiZXhuIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50X2V4biQwIiwidG9fYmFzZV9pbnQkMCIsIm9mX3VpbnQxNl90cnVuYyIsIm9mX3VpbnQxNl9leG4iLCJvZl91aW50MzJfdHJ1bmMiLCJvZl91aW50MzJfZXhuIiwib2ZfdWludDYzX3RydW5jIiwib2ZfdWludDYzX2V4biIsIm9mX3VpbnQ2NF90cnVuYyIsIm9mX3VpbnQ2NF9leG4iLCJvZl9pbnQ4X3dyYXAiLCJvZl9pbnQ4X2V4biIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJxdWlja2NoZWNrX29ic2VydmVyJDAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJjb21wYXJlJDMiLCJoYXNoX2ZvbGRfdCQxIiwiZnVuYyQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwidHlwZW5hbWVfb2ZfdCQxIiwiemVybyQxIiwibWluX3ZhbHVlJDEiLCJtYXhfdmFsdWUkMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJ0cnVuYyQxIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50X2V4biQxIiwidG9fYmFzZV9pbnQkMSIsIm9mX2ludDgiLCJvZl9pbnQzMl90cnVuYyQwIiwib2ZfaW50MzJfZXhuJDAiLCJvZl9pbnQ2M190cnVuYyQwIiwib2ZfaW50NjNfZXhuJDAiLCJvZl9pbnQ2NF90cnVuYyQwIiwib2ZfaW50NjRfZXhuJDAiLCJvZl91aW50MTZfd3JhcCIsIm9mX3VpbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJjb21wYXJlJDUiLCJoYXNoX2ZvbGRfdCQyIiwiZnVuYyQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwidHlwZW5hbWVfb2ZfdCQyIiwiemVybyQyIiwibWluX3ZhbHVlJDIiLCJtYXhfdmFsdWUkMiIsImNvbnYkMCIsImxvZ2FuZCQwIiwibG9nYW5kNjQkMCIsIm1hc2skMCIsIm1hc2s2NCQwIiwiZXF1YWwkMiIsImVxdWFsNjQkMCIsInRvX3N0cmluZyQyIiwidG9fc3RyaW5nNjQkMCIsInRydW5jJDIiLCJleG4kMCIsIm9mX2Jhc2VfaW50X3RydW5jJDIiLCJvZl9iYXNlX2ludF9leG4kMiIsInRvX2Jhc2VfaW50JDIiLCJvZl91aW50OCIsIm9mX3VpbnQzMl90cnVuYyQwIiwib2ZfdWludDMyX2V4biQwIiwib2ZfdWludDYzX3RydW5jJDAiLCJvZl91aW50NjNfZXhuJDAiLCJvZl91aW50NjRfdHJ1bmMkMCIsIm9mX3VpbnQ2NF9leG4kMCIsIm9mX2ludDE2X3dyYXAiLCJvZl9pbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDIiLCJxdWlja2NoZWNrX3Nocmlua2VyJDIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJzeW1ib2wkNTUiLCJzeW1ib2wkNTYiLCJzeW1ib2wkNTciLCJzeW1ib2wkNTgiLCJzeW1ib2wkNTkiLCJzeW1ib2wkNjAiLCJzeW1ib2wkNjEiLCJzeW1ib2wkNjIiLCJjb21wYXJlJDciLCJoYXNoX2ZvbGRfdCQzIiwiZnVuYyQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsInR5cGVyZXBfb2ZfdCQzIiwidHlwZW5hbWVfb2ZfdCQzIiwiemVybyQzIiwibWluX3ZhbHVlJDMiLCJtYXhfdmFsdWUkMyIsInNoaWZ0X2xlZnQkMSIsInNoaWZ0X3JpZ2h0JDEiLCJzaGlmdCQxIiwidG9fc3RyaW5nJDMiLCJ0cnVuYyQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwibG9nYW5kJDEiLCJsb2dhbmQ2NCQxIiwibWFzayQxIiwibWFzazY0JDEiLCJlcXVhbCQ0IiwiZXF1YWw2NCQxIiwidG9fc3RyaW5nJDQiLCJ0b19zdHJpbmc2NCQxIiwidHJ1bmMkNCIsImV4biQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsIm9mX2Jhc2VfaW50X2V4biQzIiwidG9fYmFzZV9pbnRfZXhuIiwib2ZfdWludDgkMCIsIm9mX3VpbnQxNiIsIm9mX3VpbnQ2M190cnVuYyQxIiwib2ZfdWludDYzX2V4biQxIiwib2ZfdWludDY0X3RydW5jJDEiLCJvZl91aW50NjRfZXhuJDEiLCJvZl9pbnQzMl93cmFwIiwib2ZfaW50MzJfZXhuJDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ0IiwicXVpY2tjaGVja19vYnNlcnZlciQ0IiwicXVpY2tjaGVja19zaHJpbmtlciQ0Iiwic3ltYm9sJDg1Iiwic3ltYm9sJDg2Iiwic3ltYm9sJDg3Iiwic3ltYm9sJDg4Iiwic3ltYm9sJDg5Iiwic3ltYm9sJDkwIiwic3ltYm9sJDkxIiwic3ltYm9sJDkyIiwic3ltYm9sJDkzIiwic3ltYm9sJDk0IiwiY29tcGFyZSQxMSIsImhhc2hfZm9sZF90JDUiLCJmdW5jJDUiLCJoYXNoJDUiLCJ0X29mX3NleHAkNSIsInNleHBfb2ZfdCQ1IiwicXVpY2tjaGVja19nZW5lcmF0b3IkNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNSIsInR5cGVyZXBfb2ZfdCQ1IiwidHlwZW5hbWVfb2ZfdCQ1IiwiemVybyQ1IiwibWluX3ZhbHVlJDUiLCJtYXhfdmFsdWUkNSIsInRvX3N0cmluZyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2Iiwib2ZfYmFzZV9pbnQzMl90cnVuYyQwIiwib2ZfYmFzZV9pbnQzMl9leG4kMCIsInRvX2Jhc2VfaW50MzJfdHJ1bmMkMCIsInRvX2Jhc2VfaW50MzJfZXhuJDAiLCJvZl9iYXNlX2ludDY0X3RydW5jJDAiLCJvZl9iYXNlX2ludDY0X2V4biQwIiwidG9fYmFzZV9pbnQ2NCQwIiwib2ZfYmFzZV9pbnRfZXhuJDQiLCJ0b19iYXNlX2ludF9leG4kMCIsIm9mX3VpbnQ4JDEiLCJvZl91aW50MTYkMCIsIm9mX3VpbnQ2M190cnVuYyQyIiwib2ZfdWludDYzX2V4biQyIiwib2ZfdWludDY0X3RydW5jJDIiLCJvZl91aW50NjRfZXhuJDIiLCJvZl9pbnQzMl93cmFwJDAiLCJvZl9pbnQzMl9leG4kMiIsInNleHBfb2ZfdCQ2IiwidF9vZl9zZXhwJDYiLCJzIiwic3ltYm9sJDExMSIsInN5bWJvbCQxMTIiLCJzeW1ib2wkMTEzIiwic3ltYm9sJDExNCIsInN5bWJvbCQxMTUiLCJzeW1ib2wkMTE2Iiwic3ltYm9sJDExNyIsInN5bWJvbCQxMTgiLCJzeW1ib2wkMTE5Iiwic3ltYm9sJDEyMCIsInNpZ25lZCIsIm51bV9iaXRzIiwibnVtX2J5dGVzIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJzaWduZWQkMSIsIm51bV9iaXRzJDEiLCJudW1fYnl0ZXMkMSIsInNpZ25lZCQyIiwibnVtX2JpdHMkMiIsIm51bV9ieXRlcyQyIiwic2lnbmVkJDMiLCJudW1fYml0cyQzIiwibnVtX2J5dGVzJDMiLCJzaWduZWQkNCIsIm51bV9iaXRzJDQiLCJudW1fYnl0ZXMkNCIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsImltcGwiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ3IiwicXVpY2tjaGVja19vYnNlcnZlciQ3IiwicXVpY2tjaGVja19zaHJpbmtlciQ3IiwidF9vZl9zZXhwJDciLCJzZXhwX29mX3QkNyIsInR5cGVyZXBfb2ZfdCQ3IiwidHlwZW5hbWVfb2ZfdCQ3Iiwic2lnbmVkJDciLCJudW1fYml0cyQ3IiwibnVtX2J5dGVzJDciLCJ6ZXJvJDciLCJtaW5fdmFsdWUkNyIsIm1heF92YWx1ZSQ3IiwiaGFzaF9mb2xkX3QkNyIsImhhc2gkNyIsInN5bWJvbCQxMjciLCJzeW1ib2wkMTI4Iiwic3ltYm9sJDEyOSIsInN5bWJvbCQxMzAiLCJzeW1ib2wkMTMxIiwic3ltYm9sJDEzMiIsImVxdWFsJDciLCJjb21wYXJlJDE1IiwibWluJDciLCJtYXgkNyIsIm9mX2Jhc2VfaW50MzIkMSIsInRvX2Jhc2VfaW50MzIkMSIsIm9mX2ludDgkMiIsIm9mX2ludDE2JDEiLCJvZl9pbnQ2M190cnVuYyQzIiwib2ZfaW50NjNfZXhuJDMiLCJvZl9pbnQ2NF90cnVuYyQzIiwib2ZfaW50NjRfZXhuJDMiLCJvZl91aW50MzJfd3JhcCQxIiwib2ZfdWludDMyX2V4biQzIiwicXVpY2tjaGVja19nZW5lcmF0b3IkOCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF9vZl90JDgiLCJ0eXBlcmVwX29mX3QkOCIsInR5cGVuYW1lX29mX3QkOCIsInNpZ25lZCQ4IiwibnVtX2JpdHMkOCIsIm51bV9ieXRlcyQ4IiwiemVybyQ4IiwibWluX3ZhbHVlJDgiLCJtYXhfdmFsdWUkOCIsImhhc2hfZm9sZF90JDgiLCJoYXNoJDgiLCJzeW1ib2wkMTMzIiwic3ltYm9sJDEzNCIsInN5bWJvbCQxMzUiLCJzeW1ib2wkMTM2Iiwic3ltYm9sJDEzNyIsInN5bWJvbCQxMzgiLCJlcXVhbCQ4IiwiY29tcGFyZSQxNiIsIm1pbiQ4IiwibWF4JDgiLCJvZl9iYXNlX2ludDMyX3RydW5jJDEiLCJvZl9iYXNlX2ludDMyX2V4biQxIiwidG9fYmFzZV9pbnQzMl90cnVuYyQxIiwidG9fYmFzZV9pbnQzMl9leG4kMSIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50NjRfZXhuJDEiLCJ0b19iYXNlX2ludDY0JDEiLCJvZl9iYXNlX2ludF9leG4kNSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwib2ZfaW50OCQzIiwib2ZfaW50MTYkMiIsIm9mX2ludDMyIiwib2ZfaW50NjRfdHJ1bmMkNCIsIm9mX2ludDY0X2V4biQ0Iiwib2ZfdWludDYzX3dyYXAiLCJvZl91aW50NjNfZXhuJDQiLCJzeW1ib2wkMTQ1Iiwic3ltYm9sJDE0NiIsInN5bWJvbCQxNDciLCJzeW1ib2wkMTQ4Iiwic3ltYm9sJDE0OSIsInN5bWJvbCQxNTAiLCJzeW1ib2wkMTUxIiwic3ltYm9sJDE1MiIsInN5bWJvbCQxNTMiLCJzeW1ib2wkMTU0IiwiaGFzaF9mb2xkX3QkMTAiLCJmdW5jJDgiLCJoYXNoJDEwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTAiLCJxdWlja2NoZWNrX29ic2VydmVyJDEwIiwicXVpY2tjaGVja19zaHJpbmtlciQxMCIsImNvbXBhcmUkMTkiLCJ0eXBlcmVwX29mX3QkMTAiLCJ0eXBlbmFtZV9vZl90JDEwIiwiemVybyQxMCIsIm1pbl92YWx1ZSQxMCIsIm1heF92YWx1ZSQxMCIsImdyZWF0ZXJfZXF1YWwkMiIsInRvX3N0cmluZyQ4Iiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQyIiwib2ZfYmFzZV9pbnQ2NF9leG4kMiIsInRvX2Jhc2VfaW50NjQkMiIsIm9mX3VpbnQ4JDMiLCJvZl91aW50MTYkMiIsIm9mX3VpbnQzMiIsIm9mX3VpbnQ2NF90cnVuYyQ0Iiwib2ZfdWludDY0X2V4biQ0Iiwib2ZfaW50NjNfd3JhcCIsIm9mX2ludDYzX2V4biQ0Iiwic2V4cF9vZl90JDEwIiwidF9vZl9zZXhwJDEwIiwic3ltYm9sJDE1NSIsInN5bWJvbCQxNTYiLCJzeW1ib2wkMTU3Iiwic3ltYm9sJDE1OCIsInN5bWJvbCQxNTkiLCJzeW1ib2wkMTYwIiwic3ltYm9sJDE2MSIsInN5bWJvbCQxNjIiLCJzeW1ib2wkMTYzIiwic3ltYm9sJDE2NCIsImNvbXBhcmUkMjEiLCJoYXNoX2ZvbGRfdCQxMSIsImZ1bmMkOSIsImhhc2gkMTEiLCJ0X29mX3NleHAkMTEiLCJzZXhwX29mX3QkMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDExIiwidHlwZXJlcF9vZl90JDExIiwidHlwZW5hbWVfb2ZfdCQxMSIsInplcm8kMTEiLCJtaW5fdmFsdWUkMTEiLCJtYXhfdmFsdWUkMTEiLCJncmVhdGVyX2VxdWFsJDMiLCJ0b19zdHJpbmckOSIsIm9mX2ludDgkNCIsIm9mX2ludDE2JDMiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMyIsIm9mX2Jhc2VfaW50NjRfZXhuJDMiLCJ0b19iYXNlX2ludDY0X3RydW5jIiwidG9fYmFzZV9pbnQ2NF9leG4iLCJvZl91aW50OCQ0Iiwib2ZfdWludDE2JDMiLCJvZl91aW50MzIkMCIsIm9mX3VpbnQ2MyIsIm9mX2ludDY0X3dyYXAiLCJvZl9pbnQ2NF9leG4kNSIsInNleHBfb2ZfdCQxMiIsInRfb2Zfc2V4cCQxMiIsInN5bWJvbCQxODciLCJzeW1ib2wkMTg4Iiwic3ltYm9sJDE4OSIsInN5bWJvbCQxOTAiLCJzeW1ib2wkMTkxIiwic3ltYm9sJDE5MiIsInN5bWJvbCQxOTMiLCJzeW1ib2wkMTk0Iiwic3ltYm9sJDE5NSIsInN5bWJvbCQxOTYiLCJnZXRfaW50OCIsInQiLCJwb3MiLCJnZXRfdWludDgiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwiZ2V0X3VpbnQ2NF9sZSIsImdldF91aW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfaW50OCIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwieCQxIiwic2V0X2ludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF91aW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDY0X2xlIiwic2V0X3VpbnQ2NF9iZSIsImdldF9pbnQ4JDAiLCJnZXRfdWludDgkMCIsImdldF9pbnQxNl9sZSQwIiwiZ2V0X2ludDE2X2JlJDAiLCJnZXRfdWludDE2X2xlJDAiLCJnZXRfdWludDE2X2JlJDAiLCJnZXRfaW50MzJfbGUkMCIsImdldF9pbnQzMl9iZSQwIiwiZ2V0X3VpbnQzMl9sZSQwIiwiZ2V0X3VpbnQzMl9iZSQwIiwiZ2V0X2ludDY0X2xlJDAiLCJnZXRfaW50NjRfYmUkMCIsImdldF91aW50NjRfbGUkMCIsImdldF91aW50NjRfYmUkMCIsInNldF9pbnQ4JDAiLCJzZXRfdWludDgkMCIsInNldF9pbnQxNl9sZSQwIiwic2V0X2ludDE2X2JlJDAiLCJzZXRfdWludDE2X2xlJDAiLCJzZXRfdWludDE2X2JlJDAiLCJzZXRfaW50MzJfbGUkMCIsInNldF9pbnQzMl9iZSQwIiwic2V0X3VpbnQzMl9sZSQwIiwic2V0X3VpbnQzMl9iZSQwIiwic2V0X2ludDY0X2xlJDAiLCJzZXRfaW50NjRfYmUkMCIsInNldF91aW50NjRfbGUkMCIsInNldF91aW50NjRfYmUkMCIsImdldF9pbnQ4JDEiLCJnZXRfdWludDgkMSIsImdldF9pbnQxNl9sZSQxIiwiZ2V0X2ludDE2X2JlJDEiLCJnZXRfdWludDE2X2xlJDEiLCJnZXRfdWludDE2X2JlJDEiLCJnZXRfaW50MzJfbGUkMSIsImdldF9pbnQzMl9iZSQxIiwiZ2V0X3VpbnQzMl9sZSQxIiwiZ2V0X3VpbnQzMl9iZSQxIiwiZ2V0X2ludDY0X2xlJDEiLCJnZXRfaW50NjRfYmUkMSIsImdldF91aW50NjRfbGUkMSIsImdldF91aW50NjRfYmUkMSIsImdldF9pbnQ4JDIiLCJnZXRfdWludDgkMiIsImdldF9pbnQxNl9sZSQyIiwiZ2V0X2ludDE2X2JlJDIiLCJnZXRfdWludDE2X2xlJDIiLCJnZXRfdWludDE2X2JlJDIiLCJnZXRfaW50MzJfbGUkMiIsImdldF9pbnQzMl9iZSQyIiwiZ2V0X3VpbnQzMl9sZSQyIiwiZ2V0X3VpbnQzMl9iZSQyIiwiZ2V0X2ludDY0X2xlJDIiLCJnZXRfaW50NjRfYmUkMiIsImdldF91aW50NjRfbGUkMiIsImdldF91aW50NjRfYmUkMiIsImxvYyQwIiwibG9jIiwic3ByaW50ZiIsImFyY2hfc2l4dHlmb3VyIiwiYXJjaF9iaWdfZW5kaWFuIiwibm90X29uXzMyYml0IiwiY3JlYXRlIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic2l6ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyQwIiwibGVuZ3RoIiwiaW5pdCIsIm4iLCJmIiwidCIsImkiLCJjaGVja19hcmdzIiwicG9zIiwibGVuIiwiYnN0ciIsImJzdHJfbGVuJDAiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwiY2hyIiwibGVuJDAiLCJyZXMiLCJtZW1tZW0iLCJoYXlzdGFjayIsIm5lZWRsZSIsImhheXN0YWNrX2xlbiIsIm5lZWRsZV9sZW4iLCJoYXlzdGFja19wb3MiLCJuZWVkbGVfcG9zIiwiaGF5c3RhY2tfbGVuJDAiLCJuZWVkbGVfbGVuJDAiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsInVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCIsInJlYWRfaW50NjRfbG9jYWwiLCJyZWFkX2ludDY0X3N3YXBfbG9jYWwiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCQwIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCQwIiwicmVhZF9pbnQ2NF9sb2NhbCQwIiwiZ2V0X2ludDY0X3RfbGUiLCJnZXRfaW50NjRfdF9iZSIsInJlYWRfaW50NjRfc3dhcCQwIiwic2V0X2ludDY0X3RfYmUiLCJzZXRfaW50NjRfdF9sZSIsImludDY0X2NvbnZfZXJyb3IiLCJ1aW50NjRfY29udl9lcnJvciIsImludDY0X3RvX2ludF9leG4iLCJ1aW50NjRfdG9faW50X2V4biIsInVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9sZV9leG4iLCJnZXRfaW50NjRfYmVfZXhuIiwiZ2V0X2ludDY0X2xlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2JlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2xlX2V4biIsImdldF91aW50NjRfYmVfZXhuIiwiZ2V0X3VpbnQ2NF9sZV9leG4iLCJzZXRfdWludDY0X2JlX2V4biIsInNldF91aW50NjRfbGVfZXhuIiwidW5zYWZlX3NldF91aW50OCIsInVuc2FmZV9zZXRfaW50OCIsIm4kMCIsInVuc2FmZV9nZXRfdWludDgiLCJ1bnNhZmVfZ2V0X2ludDgiLCJzZXRfdWludDhfZXhuIiwic2V0X2ludDhfZXhuIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDgiLCJ1aW50MzJfb2ZfaW50MzJfdCIsInVuc2FmZV9zZXRfdWludDMyX2xlIiwidW5zYWZlX3NldF91aW50MzJfYmUiLCJ1bnNhZmVfZ2V0X3VpbnQzMl9sZSIsInVuc2FmZV9nZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZV9leG4iLCJzZXRfdWludDMyX2JlX2V4biIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQ4JDAiLCJzZXRfdWludDgiLCJnZXRfdWludDE2X25lIiwic2V0X3VpbnQxNl9uZSIsImdldF9pbnQzMl9uZSIsInNldF9pbnQzMl9uZSIsImdldF9pbnQ2NF9uZSIsInNldF9pbnQ2NF9uZSIsImdldF91aW50OCQyIiwic2V0X3VpbnQ4JDEiLCJnZXRfdWludDE2X25lJDAiLCJzZXRfdWludDE2X25lJDAiLCJnZXRfaW50MzJfbmUkMCIsInNldF9pbnQzMl9uZSQwIiwiZ2V0X2ludDY0X25lJDAiLCJzZXRfaW50NjRfbmUkMCIsImVsdDEiLCJlbHQyIiwiZXF1YWwiLCJvZl9ib29sIiwibGVuZ3RoIiwiY3JlYXRlX2Jvb2wiLCJnZXQiLCJzZXQiLCJvdmVybGFwcGluZ19zcmNfZHN0IiwibGVuZ3RoJDAiLCJnZXQkMCIsInNldCQwIiwiY3JlYXRlX2Jvb2wkMCIsInJvb3QiLCJjb21wYXJhdG9yIiwiY2xhbXAiLCJjbGFtcF9leG4iLCJiZXR3ZWVuIiwiZGVzY2VuZGluZyIsImFzY2VuZGluZyIsIm1heCIsIm1pbiIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJ0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfdCIsInRfb2Zfc2V4cCIsImhhc2giLCJoYXNoX2ZvbGRfdCIsImNoZWNrX3N1ZmZpeCIsImNob3BfZXh0ZW5zaW9uIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAiLCJjb25jYXQiLCJwMSIsInAyIiwicyQxIiwicyQyIiwicyIsInMkMCIsInRvX2Fic29sdXRlX2V4biIsInJlbGF0aXZlX3RvIiwic3BsaXQiLCJpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQiLCJzcGxpdF9leHRlbnNpb24iLCJmbiIsImZuJDAiLCJwYXRoIiwiZm4kMSIsImRpciIsImV4dCIsImJhc2VfZm4iLCJleHQkMCIsImZuJDIiLCJkaXIkMCIsImZuJDMiLCJwYXJ0cyIsImZpbGVuYW1lIiwiYWNjIiwiZmlsZW5hbWUkMCIsImZpbGVuYW1lJDEiLCJhY2MkMCIsIm9mX3BhcnRzIiwicmVzdCIsIm9mX2Fic29sdXRlX2V4biIsImEiLCJiIiwiYV9wYXJ0cyIsImJfcGFydHMiLCJhX3N1ZmZpeCIsImJfc3VmZml4IiwidDIiLCJoMiIsInQxIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJzZXhwX29mX3QiLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwieF8wMDMiLCJ0eXBlX2lkMSIsInR5cGVfaWQyIiwibmFtZV9vZl9rZXkiLCJrZXkiLCJ1aWRfb2Zfa2V5Iiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJkYXRhIiwidHlwZV9pZF9uYW1lIiwidHlwZV9pZF91aWQiLCJjb21wYXJlIiwidDEiLCJ0MiIsImMiLCJ0b19hbGlzdCIsInQiLCJzZXhwX29mX3QkMSIsInhfMDA4IiwicGFja2VkIiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsInNldCIsIm1lbV9ieV9pZCIsImlkIiwibWVtIiwicmVtb3ZlX2J5X2lkIiwicmVtb3ZlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJpc19lbXB0eSIsImZpbmQiLCJ2YWx1ZSIsImtleSQwIiwiZmluZF9leG4iLCJhZGQiLCJhZGRfZXhuIiwidCQwIiwiY2hhbmdlX2V4biIsInVwZGF0ZSIsImNoYW5nZSIsIm9yaWciLCJuZXh0IiwiZiIsIm9mX2FsaXN0X2V4biIsInAiLCJvZl9hXzAxMSIsIm9mX2FfMDEyIiwieF8wMTMiLCJ4XzAxNCIsIm9mX2FfMDE3IiwidHlwZV9lcXVhbCIsImNyZWF0ZSIsImRlZmF1bHQkMCIsIm5hbWUiLCJzZXhwX29mIiwiZmluZCQwIiwic2V0JDAiLCJjaGFuZ2UkMCIsImNyZWF0ZSQwIiwiaW5pdCIsImlkJDAiLCJmaW5kJDEiLCJzZXQkMSIsImNoYW5nZSQxIiwiYWRkJDAiLCJhY2MiLCJjcmVhdGUkMSIsInhzIiwieCIsImlkJDEiLCJtZXJnZSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsImRhdGEkMCIsImVwcmludGYiLCJwcmludGYiLCJwcmludF9zIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfZW5kbGluZSIsInByZXJyX2VuZGxpbmUiLCJzcHJpbnRmIiwiZmFpbHdpdGhmIiwia3NwcmludGYiLCJhbGwiLCJjb21wYXJlIiwic2V4cF9vZl90IiwidG9fc3RyaW5nIiwidCIsImZsYWdfbmFtZSIsImVycm9yX3NvdXJjZV8wMjIiLCJlcnJvcl9zb3VyY2VfMDY3IiwiZXJyb3Jfc291cmNlXzA4OCIsImVycm9yX3NvdXJjZV8xMDQiLCJlcnJvcl9zb3VyY2VfMTE4IiwiZXJyb3Jfc291cmNlXzE0NSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMjA2IiwiZXJyb3Jfc291cmNlXzIyMiIsImVycm9yX3NvdXJjZV8yMzYiLCJlcnJvcl9zb3VyY2VfMjYxIiwiZXJyb3Jfc291cmNlXzI5MCIsImVycm9yX3NvdXJjZV8zMjIiLCJlcnJvcl9zb3VyY2VfMzQ3IiwiZXJyb3Jfc291cmNlXzM3MiIsImVycm9yX3NvdXJjZV80MTEiLCJlcnJvcl9zb3VyY2VfNDU2IiwiZW51bWVyYXRlXzQ3NCIsImVudW1lcmF0ZV80NzUiLCJuYW1lcyIsIm1heWJlX21pc3NpbmdfcHJlZml4IiwibWF5YmVfbWlzc2luZ19zdWZmaXgiLCJtYXliZV9tb3JlX3N1ZmZpeCIsIm5hbWVzJDAiLCJlcnJvcl9zb3VyY2VfNDk5IiwiaW5kZW50YXRpb24iLCJzcGFjaW5nX2RvdCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfNTE3IiwibmFtZXMkMiIsImVycm9yX3NvdXJjZV81NDYiLCJuYW1lcyQzIiwiZXJyb3Jfc291cmNlXzU3NCIsImVycm9yX3NvdXJjZV82MDMiLCJ0X29mX3NleHAiLCJjb21wYXJlJDAiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDYkMCIsImJfMDA3JDAiLCJhXzAwOCIsImJfMDA5IiwiYV8wMTAiLCJiXzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsImFfMDE4IiwiYl8wMTkiLCJ0X29mX3NleHAkMCIsInNleHBfMDI0IiwidGFnXzAyNSIsInNleHBfYXJnc18wNDYiLCJhcmcwXzA0NyIsInJlczBfMDQ4Iiwic2V4cF9hcmdzXzA0MSIsImFyZzBfMDQyIiwicmVzMF8wNDMiLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQ5IiwicmVzMF8wNTAiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4Iiwic3RhYmxlX3dpdG5lc3MiLCJpbnZhcmlhbnQiLCJ0JDAiLCJ0JDEiLCJ0cyIsInRfb2Zfc2V4cCQxIiwic2V4cCIsInVzYWdlIiwidXNhZ2UkMCIsInVzYWdlJDEiLCJjb21wYXJlJDEiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImFfMDYzIiwiYl8wNjQiLCJ0X29mX3NleHAkMiIsInNleHBfMDY5IiwidGFnXzA3MCIsInNleHBfYXJnc18wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJzZXhwX29mX3QkMSIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJhcmcwXzA4MSIsInJlczBfMDgyIiwic3RhYmxlX3dpdG5lc3MkMCIsImNvbXBhcmUkMiIsImFfMDgzIiwiYl8wODQiLCJuIiwibiQwIiwiYV8wODUiLCJiXzA4NiIsInRfb2Zfc2V4cCQzIiwieF8wODkiLCJhbGlhc2VzIiwiZG9jIiwibmFtZSIsInNleHBfb2ZfdCQyIiwiYWxpYXNlc18wOTUiLCJkb2NfMDkzIiwibmFtZV8wOTEiLCJhcmdfMDk2IiwiYm5kc18wOTAiLCJhcmdfMDk0IiwiYm5kc18wOTAkMCIsImFyZ18wOTIiLCJibmRzXzA5MCQxIiwic3RhYmxlX3dpdG5lc3MkMSIsImNvbXBhcmUkMyIsImFfMDk3IiwiYl8wOTgiLCJhXzA5OSIsImJfMTAwIiwibiQxIiwiYV8xMDEiLCJiXzEwMiIsInRfb2Zfc2V4cCQ0IiwieF8xMDUiLCJmbGFncyIsImFub25zIiwicmVhZG1lIiwic3VtbWFyeSIsInNleHBfb2ZfdCQzIiwiZmxhZ3NfMTE1IiwiYW5vbnNfMTEzIiwicmVhZG1lXzEwOSIsInN1bW1hcnlfMTA3IiwiYXJnXzExNiIsImJuZHNfMTA2IiwiYXJnXzExNCIsImJuZHNfMTA2JDAiLCJ2XzExMCIsImFyZ18xMTIiLCJibmRfMTExIiwiYm5kc18xMDYkMSIsImFyZ18xMDgiLCJibmRzXzEwNiQyIiwic3RhYmxlX3dpdG5lc3MkMiIsInRfb2Zfc2V4cCQ1IiwieF8xMTkiLCJzZXhwX29mX3QkNCIsImZsYWdzXzEyOSIsInVzYWdlXzEyNyIsInJlYWRtZV8xMjMiLCJzdW1tYXJ5XzEyMSIsImFyZ18xMzAiLCJibmRzXzEyMCIsImFyZ18xMjgiLCJibmRzXzEyMCQwIiwidl8xMjQiLCJhcmdfMTI2IiwiYm5kXzEyNSIsImJuZHNfMTIwJDEiLCJhcmdfMTIyIiwiYm5kc18xMjAkMiIsInN0YWJsZV93aXRuZXNzJDMiLCJ0b19sYXRlc3QiLCJvZl9sYXRlc3QiLCJncmFtbWFyIiwiZ3JvdXAiLCJjb21wYXJlJDQiLCJjbXBfYSIsImFfMTMxIiwiYl8xMzIiLCJhXzEzMyIsImJfMTM0IiwiYV8xMzUiLCJiXzEzNiIsImFfMTM3IiwiYl8xMzgiLCJ0XzE0MCIsInRfMTM5IiwidF8xNDIiLCJ0XzE0MSIsInRfb2Zfc2V4cCQ2Iiwib2ZfYV8xNDMiLCJ4XzE1MSIsInNleHBfMTUwIiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJzdWJjb21tYW5kcyIsInNleHBfb2ZfdCQ1Iiwib2ZfYV8xNTIiLCJzdWJjb21tYW5kc18xNjAiLCJyZWFkbWVfMTU2Iiwic3VtbWFyeV8xNTQiLCJhcmdfMTYxIiwiYXJnMV8xNjMiLCJhcmcwXzE2MiIsInJlczBfMTY0IiwicmVzMV8xNjUiLCJibmRzXzE1MyIsInZfMTU3IiwiYXJnXzE1OSIsImJuZF8xNTgiLCJibmRzXzE1MyQwIiwiYXJnXzE1NSIsImJuZHNfMTUzJDEiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYV9zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYiLCJ0X29mX3NleHAkNyIsIm9mX2FfMTc2IiwieF8xODQiLCJzZXhwXzE4MyIsImFyZzFfMTgwIiwiYXJnMF8xNzkiLCJyZXMwXzE4MSIsInJlczFfMTgyIiwic2V4cF9vZl90JDYiLCJvZl9hXzE4NSIsInN1YmNvbW1hbmRzXzE5MyIsInJlYWRtZV8xODkiLCJzdW1tYXJ5XzE4NyIsImFyZ18xOTQiLCJhcmcxXzE5NiIsImFyZzBfMTk1IiwicmVzMF8xOTciLCJyZXMxXzE5OCIsImJuZHNfMTg2Iiwidl8xOTAiLCJhcmdfMTkyIiwiYm5kXzE5MSIsImJuZHNfMTg2JDAiLCJhcmdfMTg4IiwiYm5kc18xODYkMSIsIm1hcCQwIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImFic19wYXRoIiwiZGlyIiwicGF0aCIsImNvbXBhcmUkNSIsImFfMTk5IiwiYl8yMDAiLCJhXzIwMSIsImJfMjAyIiwibiQyIiwiYV8yMDMiLCJiXzIwNCIsInRfb2Zfc2V4cCQ4IiwieF8yMDciLCJjaGlsZF9zdWJjb21tYW5kIiwicGF0aF90b19leGUiLCJ3b3JraW5nX2RpciIsInNleHBfb2ZfdCQ3IiwiY2hpbGRfc3ViY29tbWFuZF8yMTkiLCJwYXRoX3RvX2V4ZV8yMTciLCJ3b3JraW5nX2Rpcl8yMTUiLCJyZWFkbWVfMjExIiwic3VtbWFyeV8yMDkiLCJhcmdfMjIwIiwiYm5kc18yMDgiLCJhcmdfMjE4IiwiYm5kc18yMDgkMCIsImFyZ18yMTYiLCJibmRzXzIwOCQxIiwidl8yMTIiLCJhcmdfMjE0IiwiYm5kXzIxMyIsImJuZHNfMjA4JDIiLCJhcmdfMjEwIiwiYm5kc18yMDgkMyIsInN0YWJsZV93aXRuZXNzJDUiLCJ0b19sYXRlc3QkMSIsIm9mX2xhdGVzdCQxIiwidF9vZl9zZXhwJDkiLCJ4XzIyMyIsInNleHBfb2ZfdCQ4IiwicGF0aF90b19leGVfMjMzIiwid29ya2luZ19kaXJfMjMxIiwicmVhZG1lXzIyNyIsInN1bW1hcnlfMjI1IiwiYXJnXzIzNCIsImJuZHNfMjI0IiwiYXJnXzIzMiIsImJuZHNfMjI0JDAiLCJ2XzIyOCIsImFyZ18yMzAiLCJibmRfMjI5IiwiYm5kc18yMjQkMSIsImFyZ18yMjYiLCJibmRzXzIyNCQyIiwic3RhYmxlX3dpdG5lc3MkNiIsInRvX3YzIiwib2ZfdjMiLCJ0b19sYXRlc3QkMiIsIm9mX2xhdGVzdCQyIiwidF9vZl9zZXhwJDEwIiwieF8yMzciLCJzZXhwX29mX3QkOSIsInBhdGhfdG9fZXhlXzI0NSIsInJlYWRtZV8yNDEiLCJzdW1tYXJ5XzIzOSIsImFyZ18yNDYiLCJibmRzXzIzOCIsInZfMjQyIiwiYXJnXzI0NCIsImJuZF8yNDMiLCJibmRzXzIzOCQwIiwiYXJnXzI0MCIsImJuZHNfMjM4JDEiLCJzdGFibGVfd2l0bmVzcyQ3IiwidG9fdjIiLCJvZl92MiIsInRvX2xhdGVzdCQzIiwib2ZfbGF0ZXN0JDMiLCJjb21wYXJlJDYiLCJhXzI0NyIsImJfMjQ4IiwiYV8yNDckMCIsImJfMjQ4JDAiLCJhXzI0OSIsImJfMjUwIiwiYV8yNTEiLCJiXzI1MiIsImFfMjUzIiwiYl8yNTQiLCJhXzI1NyIsImFfMjU1IiwiYl8yNTgiLCJiXzI1NiIsInRfb2Zfc2V4cCQxMSIsInNleHBfMjYzIiwidGFnXzI2NCIsInNleHBfYXJnc18yNzAiLCJhcmcwXzI3MSIsInJlczBfMjcyIiwic2V4cF9hcmdzXzI3NSIsImFyZzFfMjc3IiwiYXJnMF8yNzYiLCJyZXMwXzI3OCIsInJlczFfMjc5Iiwic2V4cF9hcmdzXzI2NSIsImFyZzBfMjY2IiwicmVzMF8yNjciLCJzZXhwX29mX3QkMTAiLCJhcmcwXzI4MCIsInJlczBfMjgxIiwiYXJnMF8yODIiLCJyZXMwXzI4MyIsImFyZzFfMjg1IiwiYXJnMF8yODQiLCJyZXMwXzI4NiIsInJlczFfMjg3Iiwic3RhYmxlX3dpdG5lc3MkOCIsInRfb2Zfc2V4cCQxMiIsInNleHBfMjkyIiwidGFnXzI5MyIsInNleHBfYXJnc18zMDkiLCJhcmcwXzMxMCIsInJlczBfMzExIiwic2V4cF9hcmdzXzI5OSIsImFyZzBfMzAwIiwicmVzMF8zMDEiLCJzZXhwX2FyZ3NfMzA0IiwiYXJnMF8zMDUiLCJyZXMwXzMwNiIsInNleHBfYXJnc18yOTQiLCJhcmcwXzI5NSIsInJlczBfMjk2Iiwic2V4cF9vZl90JDExIiwiYXJnMF8zMTIiLCJyZXMwXzMxMyIsImFyZzBfMzE0IiwicmVzMF8zMTUiLCJhcmcwXzMxNiIsInJlczBfMzE3IiwiYXJnMF8zMTgiLCJyZXMwXzMxOSIsInRfb2Zfc2V4cCQxMyIsInNleHBfMzI0IiwidGFnXzMyNSIsInNleHBfYXJnc18zMzEiLCJhcmcwXzMzMiIsInJlczBfMzMzIiwic2V4cF9hcmdzXzMzNiIsImFyZzBfMzM3IiwicmVzMF8zMzgiLCJzZXhwX2FyZ3NfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsInNleHBfb2ZfdCQxMiIsImFyZzBfMzM5IiwicmVzMF8zNDAiLCJhcmcwXzM0MSIsInJlczBfMzQyIiwiYXJnMF8zNDMiLCJyZXMwXzM0NCIsInRvX2xhdGVzdCQ0IiwiYiIsImciLCJlIiwib2ZfbGF0ZXN0JDQiLCJ0aHVuayIsInRfb2Zfc2V4cCQxNCIsInNleHBfMzQ5IiwidGFnXzM1MCIsInNleHBfYXJnc18zNTYiLCJhcmcwXzM1NyIsInJlczBfMzU4Iiwic2V4cF9hcmdzXzM2MSIsImFyZzBfMzYyIiwicmVzMF8zNjMiLCJzZXhwX2FyZ3NfMzUxIiwiYXJnMF8zNTIiLCJyZXMwXzM1MyIsInNleHBfb2ZfdCQxMyIsImFyZzBfMzY0IiwicmVzMF8zNjUiLCJhcmcwXzM2NiIsInJlczBfMzY3IiwiYXJnMF8zNjgiLCJyZXMwXzM2OSIsInRvX2xhdGVzdCQ1Iiwib2ZfbGF0ZXN0JDUiLCJ0X29mX3NleHAkMTUiLCJzZXhwXzM3NCIsInRhZ18zNzUiLCJzZXhwX2FyZ3NfMzg2IiwiYXJnMF8zODciLCJyZXMwXzM4OCIsInNleHBfYXJnc18zODEiLCJhcmcwXzM4MiIsInJlczBfMzgzIiwic2V4cF9hcmdzXzM3NiIsImFyZzBfMzc3IiwicmVzMF8zNzgiLCJzZXhwX29mX3QkMTQiLCJhcmcwXzM4OSIsInJlczBfMzkwIiwiYXJnMF8zOTEiLCJyZXMwXzM5MiIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJ2MSIsInYwIiwidjIiLCJ2MyIsInYxJDAiLCJ2MiQwIiwidjMkMCIsIm9mX3ZlcnNpb25lZCIsImNvbXBhcmUkNyIsImFfMzk1IiwiYl8zOTYiLCJhXzM5NSQwIiwiYl8zOTYkMCIsImFfMzk3IiwiYl8zOTgiLCJhXzM5OSIsImJfNDAwIiwiYV80MDEiLCJiXzQwMiIsImFfNDAzIiwiYl80MDQiLCJhXzQwNSIsImJfNDA2IiwiYV80MDciLCJiXzQwOCIsInRfb2Zfc2V4cCQxNiIsInNleHBfNDEzIiwidGFnXzQxNCIsInNleHBfYXJnc180MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3Iiwic2V4cF9hcmdzXzQzMCIsImFyZzBfNDMxIiwicmVzMF80MzIiLCJzZXhwX2FyZ3NfNDIwIiwiYXJnMF80MjEiLCJyZXMwXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcwXzQyNiIsInJlczBfNDI3Iiwic2V4cF9hcmdzXzQxNSIsImFyZzBfNDE2IiwicmVzMF80MTciLCJzZXhwX29mX3QkMTUiLCJhcmcwXzQzOCIsInJlczBfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsImFyZzBfNDQyIiwicmVzMF80NDMiLCJhcmcwXzQ0NCIsInJlczBfNDQ1IiwiYXJnMF80NDYiLCJyZXMwXzQ0NyIsImNvbXBhcmUkOCIsImFfNDQ4IiwiYl80NDkiLCJhXzQ1MCIsImJfNDUxIiwiYV80NTIiLCJiXzQ1MyIsInRfb2Zfc2V4cCQxNyIsInNleHBfNDU4IiwidGFnXzQ1OSIsInNleHBfYXJnc180NjAiLCJhcmcwXzQ2MSIsInJlczBfNDYyIiwic2V4cF9hcmdzXzQ2NSIsImFyZzBfNDY2IiwicmVzMF80NjciLCJzZXhwX29mX3QkMTYiLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImNvbXBhcmUkOSIsImFfNDcyIiwiYl80NzMiLCJhY2MiLCJlbnVtZXJhdGVfNDc4IiwiZW51bWVyYXRlXzQ3OSIsImVudW1lcmF0ZV80NzciLCJlbnVtZXJhdGVfNDgwIiwiZW51bWVyYXRlXzQ3NiIsImFjYyQwIiwiZW51bWVyYXRlXzQ4MCQwIiwiYXRfbW9zdF9vbmNlIiwiciIsImF0X2xlYXN0X29uY2UiLCJhdF9tb3N0X29uY2UkMCIsInYiLCJhdF9sZWFzdF9vbmNlJDAiLCJtYWtlX2NyZWF0b3IiLCJhdF9sZWFzdF9vbmNlX2Z1biIsImF0X21vc3Rfb25jZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJhdF9sZWFzdF9vbmNlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJhdF9tb3N0X29uY2VfZ2VuIiwiY3JlYXRlIiwibWFwJDEiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJzZXhwX29mX3QkMTciLCJhdF9tb3N0X29uY2VfNDg0IiwiYXRfbGVhc3Rfb25jZV80ODIiLCJhcmdfNDg1IiwiYm5kc180ODEiLCJhcmdfNDgzIiwiYm5kc180ODEkMCIsInRvX2hlbHBfc3RyaW5nIiwiZGVzY3JpcHRpb24iLCJvZl9oZWxwX3N0cmluZyIsIm5hbWUkMCIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsInhfNDg2IiwicyIsImZsYWdfbmFtZSQwIiwieF80ODciLCJjb21wYXJlJDEwIiwiYV80OTQiLCJiXzQ5NSIsImFfNDk2IiwiYl80OTciLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJjb21waWxlX2FjYyQyIiwiYWxpYXNlc19nZW4iLCJjcmVhdGUkMCIsIm1hcCQzIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxOCIsInhfNTAwIiwic2V4cF9vZl90JDE4IiwiYWxpYXNlc181MDYiLCJkb2NfNTA0IiwibmFtZV81MDIiLCJhcmdfNTA3IiwiYm5kc181MDEiLCJhcmdfNTA1IiwiYm5kc181MDEkMCIsImFyZ181MDMiLCJibmRzXzUwMSQxIiwicGFyc2VfbmFtZSIsIm51bV9vY2N1cnJlbmNlcyIsInJlcXVpcmVzX2FyZyIsImhlbHBfc2NyZWVuX2NvbXBhcmUiLCJhIiwic29ydCIsIndvcmRfd3JhcF9hbmRfc3RyaXAiLCJ0ZXh0Iiwid2lkdGgiLCJjaHVua3MiLCJ3b3JkcyIsIndvcmQiLCJsaW5lIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4IiwieCIsInNsYWNrIiwiaW5kZW50X2FuZF9uZXdsaW5lIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImxoc19wYWQiLCJmbGFnIiwiZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyIsImRvY3VtZW50YXRpb24iLCJmbGFnX3dpZHRoIiwiZmxhZ19vbl9pdHNfb3duX2xpbmUiLCJ3cmFwcGVkX2RvY3VtZW50YXRpb24iLCJkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIiwiZG9jX3dyYXBwZWRfZmlyc3RfbGluZSIsIndyYXBwZWRfZG9jX2xpbmVzIiwicHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfIiwidG9fc3RyaW5nJDAiLCJsb29rdXBfZXhwYW5kIiwiYWxpc3QiLCJwcmVmaXgiLCJrZXlfdHlwZSIsImlzX2Rhc2giLCJhbGlzdCQwIiwiZGF0YSIsImtleSIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzUwOCIsImRhdGEkMCIsImtleSQwIiwibWF0Y2hpbmdfa2V5cyIsImN1c3RvbV9wcmludGZfNTA5IiwiY29tcGFyZSQxMSIsImFfNTEwIiwiYl81MTEiLCJhXzUxMiIsImJfNTEzIiwiYV81MTQiLCJiXzUxNSIsImZsYWdzJDAiLCJhbm9ucyQwIiwicmVhZG1lJDAiLCJzdW1tYXJ5JDAiLCJtYWtlX2NyZWF0b3IkMSIsInN1bW1hcnlfZnVuIiwicmVhZG1lX2Z1biIsImFub25zX2Z1biIsImZsYWdzX2Z1biIsInN1bW1hcnlfZ2VuIiwicmVhZG1lX2dlbiIsImFub25zX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJmbGFnc19nZW4iLCJjcmVhdGUkMSIsIm1hcCQ1IiwiaXRlciQzIiwiZm9sZCQzIiwibWFwX3BvbHkkMSIsImZvcl9hbGwkMyIsImV4aXN0cyQzIiwidG9fbGlzdCQzIiwiaXRlciQ0IiwiZm9sZCQ0IiwiZm9yX2FsbCQ0IiwiZXhpc3RzJDQiLCJ0b19saXN0JDQiLCJtYXAkNiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMSIsInRfb2Zfc2V4cCQxOSIsInhfNTE4Iiwic2V4cF9vZl90JDE5IiwiZmxhZ3NfNTI4IiwiYW5vbnNfNTI2IiwicmVhZG1lXzUyMiIsInN1bW1hcnlfNTIwIiwiYXJnXzUyOSIsImJuZHNfNTE5IiwiYXJnXzUyNyIsImJuZHNfNTE5JDAiLCJ2XzUyMyIsImFyZ181MjUiLCJibmRfNTI0IiwiYm5kc181MTkkMSIsImFyZ181MjEiLCJibmRzXzUxOSQyIiwiZmluZF9mbGFnIiwiZmxhZ19pbmZvIiwiY2hvaWNlcyIsImdldF91c2FnZSIsImNvbXBhcmUkMTIiLCJhXzUzMiIsImJfNTMzIiwiYV81MzQiLCJiXzUzNSIsImFfNTM2IiwiYl81MzciLCJhXzUzOCIsImJfNTM5IiwidF81NDEiLCJ0XzU0MCIsInRfNTQzIiwidF81NDIiLCJyZWFkbWUkMSIsInN1bW1hcnkkMSIsInN1YmNvbW1hbmRzJDAiLCJyZWFkbWUkMiIsInN1bW1hcnkkMiIsIm1ha2VfY3JlYXRvciQyIiwic3ViY29tbWFuZHNfZnVuIiwic3ViY29tbWFuZHNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkNyIsIml0ZXIkNSIsImZvbGQkNSIsIm1hcF9wb2x5JDIiLCJmb3JfYWxsJDUiLCJleGlzdHMkNSIsInRvX2xpc3QkNSIsIml0ZXIkNiIsImZvbGQkNiIsImZvcl9hbGwkNiIsImV4aXN0cyQ2IiwidG9fbGlzdCQ2IiwibWFwJDgiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDIiLCJ0X29mX3NleHAkMjAiLCJvZl9hXzU0NCIsInhfNTUyIiwic2V4cF81NTEiLCJhcmcxXzU0OCIsImFyZzBfNTQ3IiwicmVzMF81NDkiLCJyZXMxXzU1MCIsInNleHBfb2ZfdCQyMCIsIm9mX2FfNTUzIiwic3ViY29tbWFuZHNfNTYxIiwicmVhZG1lXzU1NyIsInN1bW1hcnlfNTU1IiwiYXJnMV81NjQiLCJhcmcwXzU2MyIsInJlczBfNTY1IiwicmVzMV81NjYiLCJhcmdfNTYyIiwiYm5kc181NTQiLCJ2XzU1OCIsImFyZ181NjAiLCJibmRfNTU5IiwiYm5kc181NTQkMCIsImFyZ181NTYiLCJibmRzXzU1NCQxIiwiZmluZF9zdWJjb21tYW5kIiwiY29tcGFyZSQxMyIsImFfNTY3IiwiYl81NjgiLCJhXzU2OSIsImJfNTcwIiwiYV81NzEiLCJiXzU3MiIsInJlYWRtZSQzIiwic3VtbWFyeSQzIiwiY2hpbGRfc3ViY29tbWFuZCQwIiwicGF0aF90b19leGUkMCIsIndvcmtpbmdfZGlyJDAiLCJyZWFkbWUkNCIsInN1bW1hcnkkNCIsIm1ha2VfY3JlYXRvciQzIiwid29ya2luZ19kaXJfZnVuIiwicGF0aF90b19leGVfZnVuIiwiY2hpbGRfc3ViY29tbWFuZF9mdW4iLCJ3b3JraW5nX2Rpcl9nZW4iLCJwYXRoX3RvX2V4ZV9nZW4iLCJjb21waWxlX2FjYyQ0IiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMjEiLCJ4XzU3NSIsInNleHBfb2ZfdCQyMSIsImNoaWxkX3N1YmNvbW1hbmRfNTg3IiwicGF0aF90b19leGVfNTg1Iiwid29ya2luZ19kaXJfNTgzIiwicmVhZG1lXzU3OSIsInN1bW1hcnlfNTc3IiwiYXJnXzU4OCIsImJuZHNfNTc2IiwiYXJnXzU4NiIsImJuZHNfNTc2JDAiLCJhcmdfNTg0IiwiYm5kc181NzYkMSIsInZfNTgwIiwiYXJnXzU4MiIsImJuZF81ODEiLCJibmRzXzU3NiQyIiwiYXJnXzU3OCIsImJuZHNfNTc2JDMiLCJjb21wYXJlJDE0IiwiYV81ODkiLCJiXzU5MCIsImFfNTg5JDAiLCJiXzU5MCQwIiwiYV81OTEiLCJiXzU5MiIsImFfNTkzIiwiYl81OTQiLCJhXzU5NSIsImJfNTk2IiwiYV81OTkiLCJhXzU5NyIsImJfNjAwIiwiYl81OTgiLCJ0X29mX3NleHAkMjIiLCJzZXhwXzYwNSIsInRhZ182MDYiLCJzZXhwX2FyZ3NfNjEyIiwiYXJnMF82MTMiLCJyZXMwXzYxNCIsInNleHBfYXJnc182MTciLCJhcmcxXzYxOSIsImFyZzBfNjE4IiwicmVzMF82MjAiLCJyZXMxXzYyMSIsInNleHBfYXJnc182MDciLCJhcmcwXzYwOCIsInJlczBfNjA5Iiwic2V4cF9vZl90JDIyIiwiYXJnMF82MjIiLCJyZXMwXzYyMyIsImFyZzBfNjI0IiwicmVzMF82MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsImV4cGFuZGVkX3N1YmNvbW1hbmRzIiwiZXhwYW5kIiwic2V4cF9vZl90JDIzIiwiYXJnMF82MzAiLCJyZXMwXzYzMSIsImFyZzBfNjMyIiwicmVzMF82MzMiLCJhcmcwXzYzNCIsInJlczBfNjM1IiwiYXJnMF82MzYiLCJyZXMwXzYzNyIsImV4dHJhY3Rpb25fdmFyIiwiaSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsInhzIiwiZGllIiwiZm10IiwibXNnIiwia2V5X2NyZWF0ZSIsIm11bHRpX2FkZCIsInNldF93aXRoX2RlZmF1bHQiLCJhcHBseSIsImVycl8xIiwiaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhIiwicmV0dXJuX25vX2FyZyIsInJldHVybl93aXRoX2FyZyIsImVycm9yIiwiaGFzX2FyZyIsImVyciIsInJlc3VsdCIsInJ1bl9hbmRfZXhpdCIsImVudiIsInBhcnQiLCJjb21wbGV0aW9ucyIsImV4dHJhX2RvYyIsInBhcnNlIiwiY29tcGxldGUiLCJvZl9zdHJpbmciLCJvZl9sYXp5Iiwic3RyIiwiZXh0cmFfZG9jJDAiLCJzdHJpbmciLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJzZXhwX2NvbnYiLCJvZl9zZXhwIiwib2ZfYWxpc3RfZXhuIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJtYWtlIiwiY21wIiwiayIsImR1cGxpY2F0ZV9rZXlzIiwiUyIsInVuaXZfbWFwIiwic3VmZml4IiwidmFsdWVzIiwiYXJnIiwidiQwIiwidmFsaWRfYXJndW1lbnRzX2V4dHJhIiwiY29tcGxldGUkMCIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImJvb2wiLCJjb21tYV9zZXBhcmF0ZWQiLCJhbGxvd19lbXB0eSIsInN0cmlwX3doaXRlc3BhY2UiLCJ1bmlxdWVfdmFsdWVzIiwic3RyaXAiLCJjb21wbGV0ZV9lbHQiLCJ0bCIsImhkIiwicHJlZml4ZXMiLCJzZWVuX2FscmVhZHkiLCJpc19hbGxvd2VkIiwiY2hvaWNlIiwiY2hvaWNlcyQwIiwic3RyaW5nJDAiLCJlbnVtZXJhdGVfMDEyIiwiZW51bWVyYXRlXzAxMyIsImVudW1lcmF0ZV8wMTEiLCJlbnVtZXJhdGVfMDE0IiwiZW51bWVyYXRlXzAxMCIsImVudW1lcmF0ZV8wMTQkMCIsInBhcnNlJDAiLCJhY3Rpb24iLCJhcmdfZG9jIiwiZG9jJDEiLCJhcmdfZG9jJDAiLCJjb25jYXQiLCJ3cmFwX2lmX29wdGlvbmFsIiwiaGVscCIsImFsaWduIiwiYV8wMjAiLCJiXzAyMSIsImFyZ19mbGFnIiwiYXJnX3R5cGUiLCJyZWFkIiwid3JpdGUiLCJ1cGRhdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJpbnB1dCIsIndyaXRlX29wdGlvbiIsInJlcXVpcmVkX3ZhbHVlIiwiZGVmYXVsdCQwIiwicmVxdWlyZWQiLCJvcHRpb25hbF93aXRoX2RlZmF1bHQiLCJvcHRpb25hbCIsInZhbHVlIiwibm9fYXJnX2dlbmVyYWwiLCJpc19yZXF1aXJlZCIsImtleV92YWx1ZSIsImRlcHJlY2F0ZWRfaG9vayIsImFjdGlvbiQwIiwibm9fYXJnIiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3JlZ2lzdGVyIiwibm9fYXJnX3NvbWUiLCJsaXN0ZWQiLCJ4XzAyMiIsInZhbHVlX2xpc3QiLCJsaXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsInhfMDIzIiwicmVzdCIsImZpcnN0IiwicSIsIm9uZV9vcl9tb3JlX2FzX2xpc3QiLCJlc2NhcGVfZ2VuZXJhbCIsInhfMDI0IiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsImVtcHR5JDAiLCJhcHBlbmQiLCJzdWJjb21tYW5kIiwicGFydHMiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJsZW5ndGgiLCJyZXBsYWNlX2ZpcnN0IiwiZnJvbSIsInRvIiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJsYXN0IiwiaXNfZW1wdHkiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsInMkMCIsInplcm8iLCJjb25jYXQkMCIsImNkciIsImNhciIsInQyIiwidDEiLCJjZHIkMCIsImNhciQwIiwicGFyc2VfbW9yZSIsImZvcl9jb21wbGV0aW9uIiwidXBkYXRlX2VudiIsInBhcnNlciIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInN5bWJvbCQwIiwidF9sZWZ0IiwidF9yaWdodCIsImZfb3V0Y29tZSIsInhfb3V0Y29tZSIsIm1vcmUiLCJ0ciIsInRlc3QiLCJtb3JlJDAiLCJ0ZXN0JDAiLCJyZXR1cm4kMSIsInN5bWJvbF9tYXAiLCJmcm9tX2VudiIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQxIiwicmV0dXJuJDIiLCJyZXR1cm5fd2l0aF9hcmckMCIsIm9uZSIsImFub24iLCJzZXF1ZW5jZSIsImxvb3AiLCJjb25zdW1lIiwicGFja2VkIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsImExIiwiYTIiLCJ0MyIsImEzIiwidDQiLCJhNCIsIm5vcm1hbGl6ZSIsInN0cmxlbiIsInNwZWNpYWxfY2hhcnMiLCJoYXNfc3BlY2lhbF9jaGFycyIsInN5bWJvbCQyIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI5IiwiYV8wMjciLCJiXzAzMCIsImJfMDI4IiwiYV8wMzEiLCJiXzAzMiIsIm9mX2xpc3QiLCJhcmdzIiwieCQwIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiYyIsImN1c3RvbV9wcmludGZfMDMzIiwiY3VzdG9tX3ByaW50Zl8wMzQiLCJzdWJjb21tYW5kX2NtcF9mc3QiLCJzaGFwZSIsInBhdGhfa2V5IiwiYXJnc19rZXkiLCJoZWxwX2tleSIsInJ1bl9leG4iLCJleG4iLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwiZXhuX3N0ciIsInZlcmJvc2UiLCJlcnJvcl9tc2ciLCJydW4iLCJ3aGVuX3BhcnNpbmdfc3VjY2VlZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0Iiwib25fZmFpbHVyZSIsInBhcnNlciQxIiwiZW52JDEiLCJjbWRsaW5lJDAiLCJhcmdzJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwibmFtZV9tYXRjaGluZyIsImFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIiwiYWxpYXMiLCJzMiIsInMxIiwiZmxhZyQwIiwiZmxhZyQxIiwiZiQxIiwiaW5mbyIsImNvbXBsZXRpbmciLCJjb21wIiwiZiQyIiwiZSQwIiwiY29tcCQwIiwiZiQzIiwiYXJnX2xpc3QiLCJjbWRsaW5lJDIiLCJlbnYkMiIsInBhcnNlX2ZsYWdzMiIsImVudiQzIiwicGFyc2VfZmxhZ3MkMCIsInBhcnQkMCIsIm1haW4iLCJmJDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJ0JDciLCJ3cmFwX3ZhbHVlIiwiYXBwbHkkMSIsImVtcHR5X3NwZWMiLCJtYXBfb3V0Y29tZSIsImxvb2t1cCIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiZmxvYXQkMSIsImJvb2wkMCIsInNleHAkMCIsInNleHBfY29udiQwIiwic3BlYyIsIm91dGNvbWUiLCJlc2NhcGVfYW5vbiIsImZpbmFsX2Fub24iLCJmdWxsX2ZsYWdfcmVxdWlyZWQiLCJtb2RlIiwiY2hlY2tfYXZhaWxhYmxlIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJyZXR1cm4kMyIsIm9wdGlvbmFsX3RvX3JlcXVpcmVkIiwiYm90aCIsImFyZ19uYW1lcyIsImZsYWdfbmFtZXMiLCJhbm9uX25hbWVzIiwiYV8wMzYiLCJiXzAzNyIsImFfMDM4IiwiYl8wMzkiLCJhXzA0MCIsImJfMDQxIiwieF8wNDIiLCJjcmVhdGVfZXhuIiwicmVxdWlyZWRfYXJncyIsIm5hbWVzX3dpdGhfY29tbWFzIiwieF8wNDMiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsIiwiaWZfbm90aGluZ19jaG9zZW4iLCJuZXdfYmVoYXZpb3IiLCJuYW1lX29mX3RoZV9ncm91cCIsImZsYWdfaW50ZXJuYWwiLCJleGNlcHQiLCJsIiwidHMkMCIsImFyZ19jb3VudGVyIiwibW9yZV90aGFuX29uZV9lcnJvciIsInBhc3NlZCIsImN1c3RvbV9wcmludGZfMDQ0IiwiZXJyb3JfbGlzdCIsInN1Y2Nlc3NfbGlzdCIsInZhbHVlJDAiLCJjdXN0b21fcHJpbnRmXzA0NSIsImNob29zZV9vbmUiLCJjaG9vc2Vfb25lX25vbl9vcHRpb25hbCQwIiwibHN0IiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInBhcnNlJDEiLCJwYXJhbXMiLCJzeW1ib2wkNiIsImYxIiwiZjIiLCJzeW1ib2wkNyIsInAyIiwic3ltYm9sJDgiLCJzdGVwIiwiY29uc3QkMCIsIndyYXAiLCJvZl9wYXJhbSIsInAiLCJ0b19wYXJhbSIsIm0iLCJzdHJpbmckMSIsImludCQyIiwiY2hhciQyIiwiZmxvYXQkMiIsImJvb2wkMSIsInNleHAkMSIsInNleHBfY29udiQxIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJnZW4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0Iiwic2V0X2Jvb2wiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1Iiwic2hhcGUkMCIsInN1YmNvbW1hbmRfdG9fc2hhcGUiLCJjb21wX2N3b3JkIiwic2hhcGUkMSIsInNleHBhYmxlX3NoYXBlIiwiYmFzZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwibWVtIiwiYWRkIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljIiwiZmxhZ3MkMSIsImJhc2UkMCIsImJhc2ljX3NwZWMiLCJzdWJzX2tleSIsImxhenlfZ3JvdXAiLCJwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIiwiYm9keSIsInAkMCIsInAkMSIsInAkMiIsIm9mX2xhenkkMCIsInByb3h5X29mX3NleHBhYmxlIiwic2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQiLCJraW5kIiwia2luZF9vZl9zZXhwYWJsZSIsInBhdGhfdG9fc3ViY29tbWFuZCQwIiwicHJveHkiLCJwcmludF92ZXJzaW9uIiwidmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsImFkZCQwIiwidW52ZXJzaW9uZWQiLCJiYXNlJDEiLCJub3JtYWxpemVfdmVyc2lvbl9saW5lcyIsImRlZmF1bHRfdmVyc2lvbiIsImRlZmF1bHRfYnVpbGRfaW5mbyIsInJlcHJpbnRfYnVpbGRfaW5mbyIsInRvX3NleHAiLCJ4JDEiLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsImgiLCJwYXRoJDEiLCJiYXNpYyQwIiwicGFyYW0iLCJiYXNpY19vcl9lcnJvciIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsImdldHBpZCIsImNsb3NlIiwiaW5fY2hhbm5lbF9vZl9kZXNjciIsIndhaXQiLCJnZXRlbnZfYW5kX2NsZWFyIiwidmFyJDAiLCJvZl9leHRlcm5hbCIsImhlbHBfc2V4cCIsInByb2ciLCJjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHIiLCJlbnZfdmFyIiwiYXJndjAiLCJwcm9nX3NlYXJjaF9wYXRoIiwibGlzdCQwIiwibGlzdCQxIiwicHJvY2Vzc19pbmZvIiwic3RhcnRfcmVhZGluZyIsImRlc2NyIiwib3V0cHV0IiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsImV4biQwIiwic2hhcGVfb2ZfcHJveHkiLCJzaGFwZV9vZl9wcm94eV9raW5kIiwic2hhcGVfb2ZfZXhlIiwic2hhcGUkMiIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImxvb3AkMCIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsIm1heWJlX25ld19jb21wX2N3b3JkIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJhcmdzJDEiLCJkaWVfc2hvd2luZ19oZWxwIiwiYXJncyQyIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQkMCIsIm1heWJlX25ld19jb21wX2N3b3JkJDEiLCJyZXNvbHZlIiwic3ViIiwic3VicyQwIiwiYm9keSQwIiwidG9fb3V0cHV0IiwicmVzdF9vZl9yZXN0IiwiZmlyc3Rfb2ZfcmVzdCIsImFyZ3MkMyIsIm5ld192YWx1ZSQwIiwibmV3X3ZhbHVlIiwicnVuJDAiLCJhcmd2IiwiYnVpbGRfaW5mbyQwIiwidmVyc2lvbiQwIiwic3VwcG9ydGVkX3ZlcnNpb25zJDAiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMSIsInBhdGhfdG9fc3ViY29tbWFuZCQyIiwiZm5hbWUiLCJhcmd2XzAiLCJjb21wX2N3b3JkJDAiLCJkZXByZWNhdGVkX3J1biIsImlzX2hlbHAiLCJpc19oZWxwX3JlYyIsImlzX2hlbHBfcmVjX2ZsYWdzIiwiaXNfZXhwYW5kX2RvdHMiLCJwYXRoX3N0cmluZ3MiLCJhcmdzJDQiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsImNyZWF0ZSIsInYiLCJjcmVhdGVfZXhuIiwidmFsdWUiLCJ0IiwiYnl0ZXNfcGVyX3dvcmQiLCJieXRlcyIsInBhc3MiLCJmYWlscyIsIm1lc3NhZ2UiLCJhIiwic2V4cF9vZl9hIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwiZmFpbF9zIiwic2V4cCIsImNvbWJpbmUiLCJ0MSIsInQyIiwib2ZfbGlzdCIsIm5hbWUiLCJ0IiwiZXJyb3IiLCJwYXRoIiwibmFtZV9saXN0IiwibiIsImwiLCJmYWlsX2ZuIiwicGFzc19ib29sIiwicGFzc191bml0IiwicHJvdGVjdCIsImYiLCJ2IiwiZXhuJDAiLCJleG4iLCJ0cnlfd2l0aCIsInBhdGhfc3RyaW5nIiwiZXJyb3JzIiwicmVzdWx0IiwieF8wMDUiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsIm1heWJlX3JhaXNlIiwidmFsaWRfb3JfZXJyb3IiLCJjaGVjayIsIngiLCJmaWVsZF9kaXJlY3QiLCJmbGQiLCJyZWNvcmQiLCJmaWVsZCIsImZpZWxkX2ZvbGRlciIsImFjYyIsImZpZWxkX2RpcmVjdF9mb2xkZXIiLCJhbGwiLCJjaGVja3MiLCJjaGVja3MkMCIsImVycnMiLCJjaGVja3MkMSIsImVyciIsImVycnMkMCIsIm9mX3Jlc3VsdCIsIm9mX2Vycm9yIiwiYm9vbHRlc3QiLCJpZl9mYWxzZSIsInBhaXIiLCJmc3QiLCJzbmQiLCJzbmRfdmFsdWUiLCJmc3RfdmFsdWUiLCJsaXN0X2luZGV4ZWQiLCJsaXN0IiwiaSIsImVsIiwiZXh0cmFjdF9uYW1lIiwiYWxpc3QiLCJsaXN0JDAiLCJrZXkiLCJmaXJzdF9mYWlsdXJlIiwib2ZfZXJyb3Jfb3B0IiwiYm91bmRlZCIsImxvd2VyIiwidXBwZXIiLCJjb21wYXJlIiwiaW5jbCIsImV4Y2wiLCJpbmNsJDAiLCJleGNsJDAiLCJzeW1ib2wiLCJuYW1lIiwic2V4cF9vZl9iaWdzdHJpbmciLCJiaWdzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2ZfbWF0IiwibWF0X29mX3NleHAiLCJzZXhwX29mX3ZlYyIsInZlY19vZl9zZXhwIiwic2V4cF9vZl9vcGFxdWUiLCJvcGFxdWVfb2Zfc2V4cCIsInNleHBfb2ZfcGFpciIsInBhaXJfb2Zfc2V4cCIsIm9mX3NleHBfZXJyb3IiLCJvZl9zZXhwX2Vycm9yX2V4biIsImdyb3VwIiwiYmluX3NoYXBlX3NleHBfb3BhcXVlIiwiYSIsImJpbl9zaXplX3NleHBfb3BhcXVlIiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3NleHBfb3BhcXVlIiwid3JpdGVfYSIsImJpbl93cml0ZXJfc2V4cF9vcGFxdWUiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfc2V4cF9vcGFxdWUiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSQwIiwiYmluX3JlYWRlcl9zZXhwX29wYXF1ZSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fc2V4cF9vcGFxdWUiLCJiaW5fYSIsImNvbXBhcmVfc2V4cF9vcGFxdWUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJoYXNoX2ZvbGRfc2V4cF9vcGFxdWUiLCJoYXNoX2ZvbGRfYSIsImhzdiIsImFyZyIsInR5cGVuYW1lX29mX3NleHBfb3BhcXVlIiwidHlwZXJlcF9vZl9zZXhwX29wYXF1ZSIsIm5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl9mdW5jdGlvbiIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX3VuaXQiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9mbG9hdCIsInR5cGVuYW1lX29mX2NoYXIiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVuYW1lX29mX25hdGl2ZWludCIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfaW50MzIiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlcmVwX29mX3R1cGxlNSIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlMiIsInR5cGVyZXBfb2ZfdHVwbGUwIiwidHlwZXJlcF9vZl9mdW5jdGlvbiIsInR5cGVyZXBfb2ZfcmVmIiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlcmVwX29mX3VuaXQiLCJ0eXBlcmVwX29mX2Jvb2wiLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9jaGFyIiwidHlwZXJlcF9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfbmF0aXZlaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludCIsIndpdGhfcmV0dXJuIiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJ0X3NleHBfZ3JhbW1hciIsIm9mX3N0cmluZyIsIngiLCJ0b19zdHJpbmciLCJ0b19iaW5hYmxlIiwib2ZfYmluYWJsZSIsImNhbGxlcl9pZGVudGl0eSIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInYxIiwidjEkMCIsImJpbl93cml0ZV90IiwicG9zIiwicG9zJDAiLCJwb3MkMSIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJhcmdfMSIsImFyZ18xJDAiLCJ4JDAiLCJvZl9iaWdzdHJpbmciLCJtIiwiYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2xlbmd0aCIsInRvX2JpZ3N0cmluZyIsInByZWZpeF93aXRoX2xlbmd0aCIsInRfbGVuZ3RoIiwiZXByaW50ZiIsImZwcmludGYiLCJrZnByaW50ZiIsInByaW50ZiIsImV4aXRmIiwiZm10IiwiY29sbGVjdF90b19zdHJpbmciLCJmIiwiZG9uZSIsIm91dHB1dCIsImVyciQzIiwiZXJyJDIiLCJlcnIkMSIsImVyciQwIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNCIsImVycm9yX3NvdXJjZV8wMDkiLCJuYW1lJDAiLCJlcnJvcl9zb3VyY2VfMDE4IiwiZXJyb3Jfc291cmNlXzAyMCIsIm5hbWUkMSIsImVycm9yX3NvdXJjZV8wMzMiLCJlcnJvcl9zb3VyY2VfMDM1IiwibmFtZSQyIiwiZXJyb3Jfc291cmNlXzA1MSIsImVycm9yX3NvdXJjZV8wNTMiLCJuYW1lJDMiLCJlcnJvcl9zb3VyY2VfMDY0IiwibmFtZSQ0IiwiZXJyb3Jfc291cmNlXzA4MiIsImVycm9yX3NvdXJjZV8wODQiLCJuYW1lJDUiLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsImNvbXBhcmUiLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ4XzAwNSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInhfMDEwIiwic2V4cF9vZl90JDAiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsImJpbl9yZWFkZXJfdCQxIiwiYmluX3QkMSIsImNvbXBhcmUkMSIsImFfMDExIiwiYl8wMTIiLCJoYXNoX2ZvbGRfdCQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAxNiIsImF0b21fMDE0IiwiYXRvbV8wMTQkMCIsInRfb2Zfc2V4cCQyIiwic2V4cF8wMTkiLCJzZXhwX29mX3QkMSIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImJpbl93cml0ZV90JDIiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDIxIiwiYl8wMjIiLCJyaWdodF8wMjQiLCJsZWZ0XzAyMyIsImhhc2hfZm9sZF90JDIiLCJoc3YkMCIsImhhc2gkMiIsInRfb2Zfc2V4cCQzIiwic2V4cF8wMjgiLCJhdG9tXzAyNiIsInNleHBfYXJnc18wMjkiLCJhdG9tXzAyNiQwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInRfb2Zfc2V4cCQ0Iiwic2V4cF8wMzQiLCJzZXhwX29mX3QkMiIsInZfMDM2IiwiZ3JvdXAkMyIsImJpbl9zaGFwZV90JDMiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwiYmluX3dyaXRlcl90JDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImJpbl90JDMiLCJjb21wYXJlJDMiLCJhXzAzNyIsImJfMDM4IiwicmlnaHRfMDQyIiwibGVmdF8wNDEiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDUiLCJzZXhwXzA1MiIsImF0b21fMDQ0Iiwic2V4cF9hcmdzXzA0NyIsImF0b21fMDQ0JDAiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwic2V4cF9vZl90JDMiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsInN0YWJsZV93aXRuZXNzIiwiZ2xvYmFsaXplIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9ub2JvZHkiLCJiaW5fc2l6ZV9ub2JvZHkiLCJiaW5fd3JpdGVfbm9ib2R5IiwiYmluX3dyaXRlcl9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkkMCIsImJpbl9yZWFkZXJfbm9ib2R5IiwiYmluX25vYm9keSIsImNvbXBhcmVfbm9ib2R5IiwiaGFzaF9mb2xkX25vYm9keSIsImZ1bmMiLCJoYXNoX25vYm9keSIsIm5vYm9keV9vZl9zZXhwIiwic2V4cF9vZl9ub2JvZHkiLCJzdGFibGVfd2l0bmVzc19ub2JvZHkiLCJncm91cCQ3IiwiYmluX3NoYXBlX21lIiwiYmluX3NpemVfbWUiLCJiaW5fd3JpdGVfbWUiLCJiaW5fd3JpdGVyX21lIiwiYmluX3JlYWRfbWUiLCJiaW5fcmVhZF9tZSQwIiwiYmluX3JlYWRlcl9tZSIsImJpbl9tZSIsImNvbXBhcmVfbWUiLCJoYXNoX2ZvbGRfbWUiLCJmdW5jJDAiLCJoYXNoX21lIiwibWVfb2Zfc2V4cCIsInNleHBfb2ZfbWUiLCJzdGFibGVfd2l0bmVzc19tZSIsImdyb3VwJDgiLCJiaW5fc2hhcGVfdCQ1IiwiYmluX3NpemVfdCQ1IiwiYmluX3dyaXRlX3QkNSIsImJpbl93cml0ZXJfdCQ1IiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkX3QkMTMiLCJiaW5fcmVhZGVyX3QkNSIsImJpbl90JDUiLCJjb21wYXJlJDUiLCJhXzEwMSIsImJfMTAyIiwiYV8xMDMiLCJiXzEwNCIsInJpZ2h0XzA3MiIsImxlZnRfMDcxIiwiaGFzaF9mb2xkX3Blcm1zIiwicGVybXNfb2Zfc2V4cCIsIm9mX2FfMTA3IiwieF8xMDkiLCJzZXhwXzA3NCIsImF0b21fMDc1Iiwic2V4cF9hcmdzXzA3OCIsImF0b21fMDc1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9vZl9wZXJtcyIsIm9mX2FfMTEwIiwieF8xMTEiLCJ2XzA4NyIsImdsb2JhbGl6ZV9wZXJtcyIsImdyb3VwJDkiLCJiaW5fc2hhcGVfcmVhZCIsImJpbl9zaXplX3JlYWQiLCJiaW5fd3JpdGVfcmVhZCIsImJpbl93cml0ZXJfcmVhZCIsImJpbl9yZWFkX3JlYWQiLCJiaW5fcmVhZF9yZWFkJDAiLCJiaW5fcmVhZGVyX3JlYWQiLCJiaW5fcmVhZCIsImNvbXBhcmVfcmVhZCIsImdsb2JhbGl6ZV9yZWFkIiwiaGFzaF9mb2xkX3JlYWQiLCJmdW5jJDEiLCJoYXNoX3JlYWQiLCJyZWFkX29mX3NleHAiLCJzZXhwX29mX3JlYWQiLCJzdGFibGVfd2l0bmVzc19yZWFkIiwiY29tcGFyZV93cml0ZSIsImhhc2hfZm9sZF93cml0ZSIsImZ1bmMkMiIsImhhc2hfd3JpdGUiLCJnbG9iYWxpemVfd3JpdGUiLCJ3cml0ZV9vZl9zZXhwIiwic2V4cF9vZl93cml0ZSIsInN0YWJsZV93aXRuZXNzX3dyaXRlIiwiZ3JvdXAkMTAiLCJiaW5fc2hhcGVfaW1tdXRhYmxlIiwiYmluX3NpemVfaW1tdXRhYmxlIiwiYmluX3dyaXRlX2ltbXV0YWJsZSIsImJpbl93cml0ZXJfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlJDAiLCJiaW5fcmVhZGVyX2ltbXV0YWJsZSIsImJpbl9pbW11dGFibGUiLCJjb21wYXJlX2ltbXV0YWJsZSIsImdsb2JhbGl6ZV9pbW11dGFibGUiLCJoYXNoX2ZvbGRfaW1tdXRhYmxlIiwiZnVuYyQzIiwiaGFzaF9pbW11dGFibGUiLCJpbW11dGFibGVfb2Zfc2V4cCIsInNleHBfb2ZfaW1tdXRhYmxlIiwic3RhYmxlX3dpdG5lc3NfaW1tdXRhYmxlIiwiZ3JvdXAkMTEiLCJiaW5fc2hhcGVfcmVhZF93cml0ZSIsImJpbl9zaXplX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVfcmVhZF93cml0ZSIsImJpbl93cml0ZXJfcmVhZF93cml0ZSIsImJpbl9yZWFkX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlJDAiLCJiaW5fcmVhZGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF93cml0ZSIsImNvbXBhcmVfcmVhZF93cml0ZSIsImdsb2JhbGl6ZV9yZWFkX3dyaXRlIiwiaGFzaF9mb2xkX3JlYWRfd3JpdGUiLCJmdW5jJDQiLCJoYXNoX3JlYWRfd3JpdGUiLCJyZWFkX3dyaXRlX29mX3NleHAiLCJzZXhwX29mX3JlYWRfd3JpdGUiLCJzdGFibGVfd2l0bmVzc19yZWFkX3dyaXRlIiwiZ3JvdXAkMTIiLCJiaW5fc2hhcGVfcGVybXMiLCJiaW5fc2l6ZV9wZXJtcyIsImJpbl93cml0ZV9wZXJtcyIsImJpbl93cml0ZXJfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyIsImJpbl9yZWFkX3Blcm1zJDAiLCJiaW5fcmVhZGVyX3Blcm1zIiwiYmluX3Blcm1zIiwiY29tcGFyZV9wZXJtcyIsImFfMTI4IiwiYl8xMjkiLCJhXzEzMCIsImJfMTMxIiwic3RhYmxlX3dpdG5lc3NfcGVybXMiLCJhX3N0YWJsZV93aXRuZXNzIiwibWFrZSIsImVycm9yX3NvdXJjZV8wMTEiLCJzaXplX29mX2YiLCJzaXplX29mX3MiLCJ3cml0ZV9mIiwid3JpdGVfcyIsImJpbl93cml0ZXJfZiIsImJpbl93cml0ZXJfcyIsIm9mX2YiLCJvZl9zIiwiYmluX3JlYWRlcl9mIiwiYmluX3JlYWRlcl9zIiwiYmluX2YiLCJiaW5fcyIsImNtcF9mIiwiY21wX3MiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsInYwIiwidGFnMCIsInRhZzEiLCJ0eXBlbmFtZSIsInRhZ3MiLCJ2YWx1ZSIsInYwJDAiLCJmX3N0YWJsZV93aXRuZXNzIiwic19zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYxIiwiZjIiLCJ4MSIsIngyIiwiY21wX2IiLCJhXzAzNiIsImJfMDM3IiwiYV8wMzgiLCJiXzAzOSIsImFfMDQwIiwiYl8wNDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwibmFtZXMiLCJ2NCIsInYzIiwidjIiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwicG9zJDIiLCJ2X3Bvc19mbmFtZSIsInZfcG9zX2xudW0iLCJ2X3Bvc19ib2wiLCJ2X3Bvc19jbnVtIiwibiIsIm4kMCIsIm4kMSIsInBvc19jbnVtIiwiciIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19jbnVtJDAiLCJwb3NfYm9sJDAiLCJwb3NfbG51bSQwIiwicG9zX2ZuYW1lJDAiLCJtYWtlX2NyZWF0b3IiLCJwb3NfZm5hbWVfZnVuIiwicG9zX2xudW1fZnVuIiwicG9zX2JvbF9mdW4iLCJwb3NfY251bV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJwb3NfZm5hbWVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsInBvc19sbnVtX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJwb3NfYm9sX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJwb3NfY251bV9nZW4iLCJhY2MiLCJjcmVhdGUiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwicG9zX2NudW1fMDEzIiwicG9zX2JvbF8wMTEiLCJwb3NfbG51bV8wMDkiLCJwb3NfZm5hbWVfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiYTAiLCJhMCQwIiwic3RhYmxlX3dpdG5lc3MkMCIsInN0YWJsZV93aXRuZXNzX2NoZWNrc19mb3JfdCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYyJDAiLCJ2MSQ0IiwidjMkMCIsInYyJDEiLCJ2MSQ1Iiwic2l6ZSQyIiwic2l6ZSQzIiwidjIkMiIsInYxJDYiLCJzaXplJDQiLCJ2MiQzIiwidjEkNyIsInNpemUkNSIsInBvcyQzIiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMSIsImFyZ18xJDIiLCJhcmdfMSQzIiwiYXJnXzIiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInN0YWJsZV93aXRuZXNzJDEiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMCIsInN0YWJsZV93aXRuZXNzJDIiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMSIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJ0X3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl90JDYiLCJ0X3NleHBfZ3JhbW1hciQxIiwic3RhYmxlX3dpdG5lc3MkMyIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYmluX3NoYXBlX3QkNiIsImJpbl9zaXplX3QkNiIsImJpbl93cml0ZV90JDYiLCJmYWlsd2l0aHMiLCJzdHJpY3QiLCJoZXJlIiwibWVzc2FnZSIsImZhaWx3aXRocCIsInRlc3RzIiwiYiIsInNpemVfb2ZfYiIsIndyaXRlX2IiLCJiaW5fd3JpdGVyX2IiLCJvZl9iIiwiYmluX3JlYWRlcl9iIiwiYmluX2IiLCJvZl9hXzAxNCIsIm9mX2JfMDE1Iiwic2V4cF8wMjAiLCJ0YWdfMDIxIiwic2V4cF9hcmdzXzAyMiIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvZl9hXzAzMiIsIm9mX2JfMDMzIiwiYXJnMF8wMzQiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYl9zdGFibGVfd2l0bmVzcyIsInhfMDQ3IiwieF8wNDgiLCJlcXVhbCIsInhfMDQ5IiwieF8wNTAiLCJhXzA0MiIsImJfMDQzIiwiYV8wNDQiLCJiXzA0NSIsInJ1biIsInNhbml0aXplIiwidXBvbl91bnJlbGVhc2FibGVfaXNzdWUiLCJvZl9hXzAwNyIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsIm9mX2FfMDE4IiwieF8wMjAiLCJvZl9hXzAyMSIsInhfMDIyIiwibWFwJDEiLCJ2X3N0YXRlIiwidl92YWx1ZSIsInZfc3RhdGUkMCIsIm1lcmdlX2FsbCIsIkhlYXAiLCJub3RfeWV0X2luX2hlYXAiLCJoZWFwIiwiaGVhcCQwIiwic2VxJDIiLCJlbHQkMCIsIm5vdF95ZXRfaW5faGVhcCQwIiwic2VxIiwic2VxJDAiLCJzZXEkMSIsImVsdCIsImRlZmF1bHRfc2VlZCIsImRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDIiLCJnZW5lcmF0b3JfMDEyIiwiZ2VuZXJhdG9yXzAxMyIsInNpemVfMDE2IiwicmFuZG9tXzAxNyIsInNpemVfMDE0IiwicmFuZG9tXzAxNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDIiLCJvYnNlcnZlcl8wMDUiLCJvYnNlcnZlcl8wMDYiLCJ4XzAwNyIsInNpemVfMDA4IiwiaGFzaF8wMDkiLCJoYXNoXzAwOSQwIiwiaGFzaF8wMDkkMSIsImhhc2hfMDA5JDIiLCJoYXNoXzAwOSQzIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MiIsInNocmlua2VyXzAwMSIsInNocmlua2VyXzAwMiIsInhfMDA0IiwieF8wMDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MyIsImdlbmVyYXRvcl8wMzMiLCJnZW5lcmF0b3JfMDM0IiwiZ2VuZXJhdG9yXzAzNSIsInNpemVfMDQwIiwicmFuZG9tXzA0MSIsInNpemVfMDM4IiwicmFuZG9tXzAzOSIsInNpemVfMDM2IiwicmFuZG9tXzAzNyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDMiLCJvYnNlcnZlcl8wMjQiLCJvYnNlcnZlcl8wMjUiLCJvYnNlcnZlcl8wMjYiLCJ4XzAyNyIsInNpemVfMDI4IiwiaGFzaF8wMjkiLCJ4XzAzMCIsImhhc2hfMDI5JDAiLCJoYXNoXzAyOSQxIiwieF8wMzEiLCJoYXNoXzAyOSQyIiwiaGFzaF8wMjkkMyIsInhfMDMyIiwiaGFzaF8wMjkkNCIsImhhc2hfMDI5JDUiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzIiwic2hyaW5rZXJfMDE4Iiwic2hyaW5rZXJfMDE5Iiwic2hyaW5rZXJfMDIwIiwieF8wMjEiLCJ4XzAyMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0IiwiZ2VuZXJhdG9yXzA2MSIsImdlbmVyYXRvcl8wNjIiLCJnZW5lcmF0b3JfMDYzIiwiZ2VuZXJhdG9yXzA2NCIsInNpemVfMDcxIiwicmFuZG9tXzA3MiIsInNpemVfMDY5IiwicmFuZG9tXzA3MCIsInNpemVfMDY3IiwicmFuZG9tXzA2OCIsInNpemVfMDY1IiwicmFuZG9tXzA2NiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDQiLCJvYnNlcnZlcl8wNTAiLCJvYnNlcnZlcl8wNTEiLCJvYnNlcnZlcl8wNTIiLCJvYnNlcnZlcl8wNTMiLCJ4XzA1NCIsInNpemVfMDU1IiwiaGFzaF8wNTYiLCJ4XzA1NyIsImhhc2hfMDU2JDAiLCJoYXNoXzA1NiQxIiwieF8wNTgiLCJoYXNoXzA1NiQyIiwiaGFzaF8wNTYkMyIsInhfMDU5IiwiaGFzaF8wNTYkNCIsImhhc2hfMDU2JDUiLCJ4XzA2MCIsImhhc2hfMDU2JDYiLCJoYXNoXzA1NiQ3IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NCIsInNocmlua2VyXzA0MiIsInNocmlua2VyXzA0MyIsInNocmlua2VyXzA0NCIsInNocmlua2VyXzA0NSIsInhfMDQ2IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDUiLCJnZW5lcmF0b3JfMDk2IiwiZ2VuZXJhdG9yXzA5NyIsImdlbmVyYXRvcl8wOTgiLCJnZW5lcmF0b3JfMDk5IiwiZ2VuZXJhdG9yXzEwMCIsInNpemVfMTA5IiwicmFuZG9tXzExMCIsInNpemVfMTA3IiwicmFuZG9tXzEwOCIsInNpemVfMTA1IiwicmFuZG9tXzEwNiIsInNpemVfMTAzIiwicmFuZG9tXzEwNCIsInNpemVfMTAxIiwicmFuZG9tXzEwMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDUiLCJvYnNlcnZlcl8wODMiLCJvYnNlcnZlcl8wODQiLCJvYnNlcnZlcl8wODUiLCJvYnNlcnZlcl8wODYiLCJvYnNlcnZlcl8wODciLCJ4XzA4OCIsInNpemVfMDg5IiwiaGFzaF8wOTAiLCJ4XzA5MSIsImhhc2hfMDkwJDAiLCJoYXNoXzA5MCQxIiwieF8wOTIiLCJoYXNoXzA5MCQyIiwiaGFzaF8wOTAkMyIsImhhc2hfMDkwJDQiLCJoYXNoXzA5MCQ1IiwiaGFzaF8wOTAkNiIsImhhc2hfMDkwJDciLCJ4XzA5NSIsImhhc2hfMDkwJDgiLCJoYXNoXzA5MCQ5IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NSIsInNocmlua2VyXzA3MyIsInNocmlua2VyXzA3NCIsInNocmlua2VyXzA3NSIsInNocmlua2VyXzA3NiIsInNocmlua2VyXzA3NyIsInhfMDc4IiwieF8wNzkiLCJ4XzA4MCIsInhfMDgxIiwieF8wODIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NiIsImdlbmVyYXRvcl8xMzgiLCJnZW5lcmF0b3JfMTM5IiwiZ2VuZXJhdG9yXzE0MCIsImdlbmVyYXRvcl8xNDEiLCJnZW5lcmF0b3JfMTQyIiwiZ2VuZXJhdG9yXzE0MyIsInNpemVfMTU0IiwicmFuZG9tXzE1NSIsInNpemVfMTUyIiwicmFuZG9tXzE1MyIsInNpemVfMTUwIiwicmFuZG9tXzE1MSIsInNpemVfMTQ4IiwicmFuZG9tXzE0OSIsInNpemVfMTQ2IiwicmFuZG9tXzE0NyIsInNpemVfMTQ0IiwicmFuZG9tXzE0NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDYiLCJvYnNlcnZlcl8xMjMiLCJvYnNlcnZlcl8xMjQiLCJvYnNlcnZlcl8xMjUiLCJvYnNlcnZlcl8xMjYiLCJvYnNlcnZlcl8xMjciLCJvYnNlcnZlcl8xMjgiLCJ4XzEyOSIsInNpemVfMTMwIiwiaGFzaF8xMzEiLCJ4XzEzMiIsImhhc2hfMTMxJDAiLCJoYXNoXzEzMSQxIiwieF8xMzMiLCJoYXNoXzEzMSQyIiwiaGFzaF8xMzEkMyIsInhfMTM0IiwiaGFzaF8xMzEkNCIsImhhc2hfMTMxJDUiLCJ4XzEzNSIsImhhc2hfMTMxJDYiLCJoYXNoXzEzMSQ3IiwieF8xMzYiLCJoYXNoXzEzMSQ4IiwiaGFzaF8xMzEkOSIsInhfMTM3IiwiaGFzaF8xMzEkMTAiLCJoYXNoXzEzMSQxMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDYiLCJzaHJpbmtlcl8xMTEiLCJzaHJpbmtlcl8xMTIiLCJzaHJpbmtlcl8xMTMiLCJzaHJpbmtlcl8xMTQiLCJzaHJpbmtlcl8xMTUiLCJzaHJpbmtlcl8xMTYiLCJ4XzExNyIsInhfMTE4IiwieF8xMTkiLCJ4XzEyMCIsInhfMTIxIiwieF8xMjIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTIiLCJnZW5lcmF0b3JfMTY2IiwiZ2VuZXJhdG9yXzE2NyIsInNpemVfMTY4IiwicmFuZG9tXzE2OSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyIiwib2JzZXJ2ZXJfMTYwIiwib2JzZXJ2ZXJfMTYxIiwic2l6ZV8xNjQiLCJoYXNoXzE2NSIsInhfMTYzIiwieF8xNjIiLCJoYXNoXzE2NSQwIiwiaGFzaF8xNjUkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyIiwic2hyaW5rZXJfMTU2Iiwic2hyaW5rZXJfMTU3IiwieF8xNTkiLCJ4XzE1OCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMyIsImdlbmVyYXRvcl8xODQiLCJnZW5lcmF0b3JfMTg1IiwiZ2VuZXJhdG9yXzE4NiIsInNpemVfMTg3IiwicmFuZG9tXzE4OCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzIiwib2JzZXJ2ZXJfMTc2Iiwib2JzZXJ2ZXJfMTc3Iiwib2JzZXJ2ZXJfMTc4Iiwic2l6ZV8xODIiLCJoYXNoXzE4MyIsInhfMTgxIiwieF8xODAiLCJ4XzE3OSIsImhhc2hfMTgzJDAiLCJoYXNoXzE4MyQxIiwiaGFzaF8xODMkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzIiwic2hyaW5rZXJfMTcwIiwic2hyaW5rZXJfMTcxIiwic2hyaW5rZXJfMTcyIiwieF8xNzUiLCJ4XzE3NCIsInhfMTczIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0IiwiZ2VuZXJhdG9yXzIwNyIsImdlbmVyYXRvcl8yMDgiLCJnZW5lcmF0b3JfMjA5IiwiZ2VuZXJhdG9yXzIxMCIsInNpemVfMjExIiwicmFuZG9tXzIxMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0Iiwib2JzZXJ2ZXJfMTk3Iiwib2JzZXJ2ZXJfMTk4Iiwib2JzZXJ2ZXJfMTk5Iiwib2JzZXJ2ZXJfMjAwIiwic2l6ZV8yMDUiLCJoYXNoXzIwNiIsInhfMjA0IiwieF8yMDMiLCJ4XzIwMiIsInhfMjAxIiwiaGFzaF8yMDYkMCIsImhhc2hfMjA2JDEiLCJoYXNoXzIwNiQyIiwiaGFzaF8yMDYkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0Iiwic2hyaW5rZXJfMTg5Iiwic2hyaW5rZXJfMTkwIiwic2hyaW5rZXJfMTkxIiwic2hyaW5rZXJfMTkyIiwieF8xOTYiLCJ4XzE5NSIsInhfMTk0IiwieF8xOTMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTUiLCJnZW5lcmF0b3JfMjM1IiwiZ2VuZXJhdG9yXzIzNiIsImdlbmVyYXRvcl8yMzciLCJnZW5lcmF0b3JfMjM4IiwiZ2VuZXJhdG9yXzIzOSIsInNpemVfMjQwIiwicmFuZG9tXzI0MSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1Iiwib2JzZXJ2ZXJfMjIzIiwib2JzZXJ2ZXJfMjI0Iiwib2JzZXJ2ZXJfMjI1Iiwib2JzZXJ2ZXJfMjI2Iiwib2JzZXJ2ZXJfMjI3Iiwic2l6ZV8yMzMiLCJoYXNoXzIzNCIsInhfMjMyIiwieF8yMzEiLCJ4XzIzMCIsInhfMjI5IiwieF8yMjgiLCJoYXNoXzIzNCQwIiwiaGFzaF8yMzQkMSIsImhhc2hfMjM0JDIiLCJoYXNoXzIzNCQzIiwiaGFzaF8yMzQkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1Iiwic2hyaW5rZXJfMjEzIiwic2hyaW5rZXJfMjE0Iiwic2hyaW5rZXJfMjE1Iiwic2hyaW5rZXJfMjE2Iiwic2hyaW5rZXJfMjE3IiwieF8yMjIiLCJ4XzIyMSIsInhfMjIwIiwieF8yMTkiLCJ4XzIxOCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNiIsImdlbmVyYXRvcl8yNjgiLCJnZW5lcmF0b3JfMjY5IiwiZ2VuZXJhdG9yXzI3MCIsImdlbmVyYXRvcl8yNzEiLCJnZW5lcmF0b3JfMjcyIiwiZ2VuZXJhdG9yXzI3MyIsInNpemVfMjc0IiwicmFuZG9tXzI3NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2Iiwib2JzZXJ2ZXJfMjU0Iiwib2JzZXJ2ZXJfMjU1Iiwib2JzZXJ2ZXJfMjU2Iiwib2JzZXJ2ZXJfMjU3Iiwib2JzZXJ2ZXJfMjU4Iiwib2JzZXJ2ZXJfMjU5Iiwic2l6ZV8yNjYiLCJoYXNoXzI2NyIsInhfMjY1IiwieF8yNjQiLCJ4XzI2MyIsInhfMjYyIiwieF8yNjEiLCJ4XzI2MCIsImhhc2hfMjY3JDAiLCJoYXNoXzI2NyQxIiwiaGFzaF8yNjckMiIsImhhc2hfMjY3JDMiLCJoYXNoXzI2NyQ0IiwiaGFzaF8yNjckNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2Iiwic2hyaW5rZXJfMjQyIiwic2hyaW5rZXJfMjQzIiwic2hyaW5rZXJfMjQ0Iiwic2hyaW5rZXJfMjQ1Iiwic2hyaW5rZXJfMjQ2Iiwic2hyaW5rZXJfMjQ3IiwieF8yNTMiLCJ4XzI1MiIsInhfMjUxIiwieF8yNTAiLCJ4XzI0OSIsInhfMjQ4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4yIiwib2JzZXJ2ZXJfMjgyIiwib2JzZXJ2ZXJfMjgzIiwiZ2VuZXJhdG9yXzI4NCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMyIsIm9ic2VydmVyXzI5MyIsIm9ic2VydmVyXzI5NCIsIm9ic2VydmVyXzI5NSIsImdlbmVyYXRvcl8yOTYiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjQiLCJvYnNlcnZlcl8zMDciLCJvYnNlcnZlcl8zMDgiLCJvYnNlcnZlcl8zMDkiLCJvYnNlcnZlcl8zMTAiLCJnZW5lcmF0b3JfMzExIiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm41Iiwib2JzZXJ2ZXJfMzI0Iiwib2JzZXJ2ZXJfMzI1Iiwib2JzZXJ2ZXJfMzI2Iiwib2JzZXJ2ZXJfMzI3Iiwib2JzZXJ2ZXJfMzI4IiwiZ2VuZXJhdG9yXzMyOSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNiIsIm9ic2VydmVyXzM0NCIsIm9ic2VydmVyXzM0NSIsIm9ic2VydmVyXzM0NiIsIm9ic2VydmVyXzM0NyIsIm9ic2VydmVyXzM0OCIsIm9ic2VydmVyXzM0OSIsImdlbmVyYXRvcl8zNTAiLCJvZl9oYXNoIiwiTSIsIm9mX3ByZWRpY2F0ZSIsInNpbmdsZXRvbiIsImRvdWJsZXRvbiIsImVudW0kMCIsIm9mX2xpc3QiLCJsaXN0IiwieSIsImkiLCJvZl9mdW4iLCJjb21wYXJpc29uIiwiZXEiLCJsdCIsImd0IiwiYyIsInJldHVybiQwIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJzaW5nbGV0b24kMCIsImRvdWJsZXRvbiQwIiwicmFuZG9tIiwib2ZfZnVuJDAiLCJvZl9zZXF1ZW5jZSIsInAiLCJrIiwiZ2VvbWV0cmljIiwibGlzdF93aXRoX2xlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVfZm4iLCJkb20iLCJnZXRfaW5kZXgiLCJiXzM1MiIsImFfMzUxIiwiZXF1YWxfZm4iLCJjbXAiLCJlbXB0eSIsIm5vbmRldGVybWluaXN0aWNfc3RhdGUiLCJyYW5kb21fc3RhdGVfb2Zfc2VlZCIsInNlZWQiLCJzdHIiLCJtYWtlX3NlZWQiLCJzdHJpbmciLCJtYWtlX3Nocmlua19jb3VudCIsIm1ha2VfY29uZmlnIiwic2l6ZXMiLCJ0cmlhbHMiLCJzaHJpbmtfYXR0ZW1wdHMiLCJtYWtlX3Rlc3RfbSIsImdlbiIsInNocmlua2VyIiwic2V4cF9vZiIsInJhbmRvbV92YWx1ZSIsInJhbmRvbV9zZXF1ZW5jZSIsImNvbmZpZyIsInNlcXVlbmNlIiwidGVzdCIsImV4YW1wbGVzIiwidGVzdF9tIiwidGVzdF9vcl9lcnJvciIsInRlc3RfZGlzdGluY3RfdmFsdWVzIiwiZGlzdGluY3RfdmFsdWVzIiwic2V4cF9vZiQwIiwic2V0Iiwic2V0JDAiLCJhY3R1YWxfY291bnQiLCJzZXhwX29mX2VsdCIsInhfMzUzIiwidmFsdWVzIiwibWF0Y2giLCJyZXMiLCJoIiwidGVzdF9jYW5fZ2VuZXJhdGUiLCJzZXhwX29mX3ZhbHVlIiwieF8zNTQiLCJkZWZhdWx0X3RyaWFsX2NvdW50IiwiZGVmYXVsdF9zaXplcyIsImdlbmVyYXRlX2EiLCJvYnNlcnZlX2EiLCJzaHJpbmtfYSIsIm5vcm1hbGl6ZSIsImxlbmd0aF9mdW4iLCJzbGljZSIsInN1Yl9mdW4iLCJzdGFydCIsInN0b3AiLCJzdG9wJDAiLCJsZW4iLCJnZW5lcmF0b3JfMDAzIiwib2JzZXJ2ZXJfMDAyIiwiYmluYXJ5X3NlYXJjaCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwib2ZfYXJyYXkiLCJhcHBlbmQiLCJmaWx0ZXIiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsInBhcnRpdGlvbl90ZiIsInBhcnRpdGlvbl9tYXAiLCJtZW0iLCJpc19lbXB0eSIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRpIiwiaXRlcmkiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJjb3VudGkiLCJmaW5kaSIsImZpbmRfbWFwaSIsIm1hcGkiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwibWFrZV9tYXRyaXgiLCJjb3B5X21hdHJpeCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiYmxpdCIsImJsaXRvIiwidW5zYWZlX2JsaXQiLCJzdWIiLCJzdWJvIiwiZm9sZGluZ19tYXAiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcCIsImZvbGRfbWFwaSIsImZvbGRfcmlnaHQiLCJzb3J0Iiwic3RhYmxlX3NvcnQiLCJpc19zb3J0ZWQiLCJpc19zb3J0ZWRfc3RyaWN0bHkiLCJtZXJnZSIsInBhcnRpdGlvbmlfdGYiLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsInRyYW5zcG9zZSIsInRyYW5zcG9zZV9leG4iLCJmaWx0ZXJfb3B0IiwiaXRlcjJfZXhuIiwibWFwMl9leG4iLCJmb2xkMl9leG4iLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyX2V4biIsInN3YXAiLCJyZXZfaW5wbGFjZSIsInJldiIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kX2V4biIsImZpbmRfbWFwX2V4biIsImZpbmRpX2V4biIsImZpbmRfbWFwaV9leG4iLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJwZXJtdXRlIiwicmFuZG9tX2VsZW1lbnQiLCJyYW5kb21fZWxlbWVudF9leG4iLCJ6aXAiLCJ6aXBfZXhuIiwidW56aXAiLCJzb3J0ZWRfY29weSIsImxhc3QiLCJ0b19zZXF1ZW5jZSIsInRvX3NlcXVlbmNlX211dGFibGUiLCJuZ2V0IiwibnNldCIsImdldCIsImNvbXBhcmVfdCIsImFfMDA0IiwiYl8wMDUiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiY29tcGFyZV9hIiwiY29tcGFyZV9iIiwidF8wMDYiLCJ0XzAwNSIsInRfMDA4IiwidF8wMDciLCJnZW5fbm9uX2VtcHR5IiwiZ2VuX3dpdGhfbGVuZ3RoIiwiZ2VuX2ZpbHRlcmVkIiwiZ2VuX3Blcm11dGF0aW9ucyIsIm1vZHVsZV9uYW1lJDAiLCJtb2R1bGVfbmFtZSIsImhhc2hhYmxlX3MiLCJmaW5kX211bHRpIiwicmVtb3ZlX211bHRpIiwiYWRkX211bHRpIiwiZGVjciIsImluY3IiLCJ0b19hbGlzdCIsInNpbWlsYXIiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwibWFwaV9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwiZmlsdGVyX2lucGxhY2UiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZGF0YSIsImtleXMiLCJtZXJnZV9pbnRvIiwiZmluZF9hbmRfcmVtb3ZlIiwiZmluZGlfYW5kX2NhbGwyIiwiZmluZGlfYW5kX2NhbGwxIiwiZmluZGlfYW5kX2NhbGwiLCJmaW5kX2FuZF9jYWxsMiIsImZpbmRfYW5kX2NhbGwxIiwiZmluZF9hbmRfY2FsbCIsImZpbmRpX29yX2FkZCIsImZpbmRfb3JfYWRkIiwicGFydGl0aW9uX21hcGkiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9yYW5kb21seV9leG4iLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfZXhuIiwiY2hvb3NlIiwicmVtb3ZlIiwiaXRlcl9rZXlzIiwiY2xlYXIiLCJzZXhwX29mX2tleSIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfbWFwcGVkIiwib2ZfYWxpc3RfbXVsdGkiLCJvZl9hbGlzdF9leG4iLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsIm9mX2FsaXN0IiwiaGFzaF9wYXJhbSIsInZhbGlkYXRlIiwiZ3Jvd3RoX2FsbG93ZWQiLCJoYXNoYWJsZSIsIm9mX2FsaXN0JDAiLCJsIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwiY3JlYXRlX21hcHBlZCQwIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsImNvbWJpbmUiLCJiaW5fc2hhcGVfZWwiLCJiaW5fc2l6ZV9lbCIsImJpbl93cml0ZV9lbCIsImJpbl9yZWFkX2VsIiwiaXRlciQxIiwia2V5IiwibmV4dCIsImludmFyaWFudF9rZXkiLCJzZXhwX29mX3YiLCJ2X29mX3NleHAiLCJkYXRhX3N0YWJsZV93aXRuZXNzIiwiZXF1YWxfbV90IiwibV90X3NleHBfZ3JhbW1hciIsIm1fdF9vZl9zZXhwIiwic2V4cF9vZl9tX3QiLCJvZl9hbGlzdF9vcHRpb24iLCJhbGlzdCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fdCIsIktleSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGEiLCJzaXplXzAwNCIsInJhbmRvbV8wMDUiLCJxdWlja2NoZWNrX29ic2VydmVyX21fdCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YSIsInhfMDA2IiwicXVpY2tjaGVja19zaHJpbmtlcl9tX3QiLCJxdWlja2NoZWNrX3Nocmlua2VyX2RhdGEiLCJoYXNoYWJsZSQwIiwib2ZfbGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzMSIsInNpemVfb2ZfayIsInNpemVfb2ZfdiIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJ3cml0ZV9rIiwid3JpdGVfdiIsImJpbl93cml0ZXJfayIsImJpbl93cml0ZXJfdiIsIm9mX2siLCJvZl92IiwiYmluX3JlYWRlcl9rIiwiYmluX3JlYWRlcl92IiwiYmluX2siLCJiaW5fdiIsImNtcF9rIiwiY21wX3YiLCJ0XzAwNCIsInRfMDAzIiwicmlnaHRfMDA4IiwibGVmdF8wMDciLCJyaWdodF8wMTIiLCJsZWZ0XzAxMSIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDEwIiwibGVmdF8wMDkiLCJvZl9rXzAxNyIsIm9mX3ZfMDE4Iiwic2V4cF8wNDUiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDMiLCJhdG9tXzAyMSIsInNleHBfYXJnc18wMjQiLCJhdG9tXzAyMSQwIiwiYXJnMF8wMzIiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJyZXMwXzAzMyIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzOCIsInJlczFfMDQ0Iiwib2Zfa18wNDYiLCJvZl92XzA0NyIsImFyZzFfMDU2IiwiYXJnMF8wNTUiLCJyZXMwXzA1NyIsInZfMDQ4IiwicmVzMV8wNTgiLCJ2XzA1MCIsImFyZzFfMDUyIiwiYXJnMF8wNTEiLCJyZXMwXzA1MyIsInJlczFfMDU0Iiwidl8wNDkiLCJrX3N0YWJsZV93aXRuZXNzIiwidl9zdGFibGVfd2l0bmVzcyIsImRpZmYiLCJrJDAiLCJkaWZmJDAiLCJ2JDAiLCJtYXBfZGF0YSIsImxlZnQiLCJyaWdodCIsImdlbl90cmVlIiwiY29tcGFyYXRvciIsImtfZ2VuIiwidl9nZW4iLCJvYnNfdHJlZSIsImtfb2JzIiwidl9vYnMiLCJzaHJfdHJlZSIsImtfc2hyIiwidl9zaHIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsIm9mX2hhc2h0YmxfZXhuIiwiaGFzaHRibCIsInRyZWVfb2ZfaGFzaHRibF9leG4iLCJrZXlfc2V0Iiwia2V5X3NldF9vZl90cmVlIiwib2Zfa2V5X3NldCIsInRyZWVfb2Zfa2V5X3NldCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJ0b190cmVlJDAiLCJyYW5rIiwibnRoX2V4biIsIm50aCIsImNsb3Nlc3Rfa2V5IiwicmFuZ2VfdG9fYWxpc3QiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInN1YnJhbmdlIiwic3BsaXRfbHRfZ2UiLCJzcGxpdF9sZV9ndCIsInNwbGl0IiwibWF4X2VsdF9leG4iLCJtaW5fZWx0X2V4biIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJzeW1tZXRyaWNfZGlmZiIsIm1lcmdlX3NrZXdlZCIsImtleXMkMCIsImNvbXBhcmVfZGlyZWN0IiwiY29tYmluZV9lcnJvcnMiLCJmb2xkMiIsIml0ZXIyIiwiaXRlcmlfdW50aWwiLCJpbnZhcmlhbnRzIiwidmFsaWRhdGVpIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwia2V5X3NldCQwIiwia2V5X3NldCQxIiwiY29tcGFyYXRvcl9zIiwiaW52YXJpYW50cyQwIiwiZW1wdHkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDAiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMCIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQwIiwib2Zfc2VxdWVuY2VfZXhuJDAiLCJvZl9zZXF1ZW5jZV9tdWx0aSQwIiwib2Zfc2VxdWVuY2VfZm9sZCQwIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDAiLCJvZl9saXN0X3dpdGhfa2V5JDAiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDAiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQwIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiZm9yX2FsbGkkMCIsImV4aXN0c2kkMCIsImNvdW50JDAiLCJjb3VudGkkMCIsInNwbGl0JDAiLCJzcGxpdF9sZV9ndCQwIiwic3BsaXRfbHRfZ2UkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2xpc3Rfd2l0aF9rZXkiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJ0b190cmVlIiwiZGF0YV9lcXVhbCIsImxvd2VyX3BhcnQiLCJ1cHBlcl9wYXJ0IiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsIm1pbiIsIm1heCIsIm9yZGVyIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiaG93Iiwic2VnbWVudF9vZiIsIm1hcF9rZXlzIiwibWFwX2tleXNfZXhuIiwidHJhbnNwb3NlX2tleXMiLCJpbml0X2Zvcl9iaW5fcHJvdCIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsIm1hcF9rZXlzJDEiLCJtYXBfa2V5c19leG4kMSIsInRyYW5zcG9zZV9rZXlzJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMSIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQxIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2Zfa2V5X3NldCQxIiwidG9fdHJlZSQyIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImxlbmd0aCQxIiwic2V0JDEiLCJhZGQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiZmluZF9leG4kMSIsImZpbmQkMSIsInJlbW92ZSQxIiwibWVtJDEiLCJpdGVyX2tleXMkMSIsIml0ZXIkMiIsIml0ZXJpJDEiLCJpdGVyaV91bnRpbCQxIiwiaXRlcjIkMSIsIm1hcCQyIiwibWFwaSQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXIkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXAkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwicGFydGl0aW9uX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwiY29tcGFyZV9kaXJlY3QkMSIsImtleXMkMiIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGVpJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJmb3JfYWxsJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzJDEiLCJleGlzdHNpJDEiLCJjb3VudCQxIiwiY291bnRpJDEiLCJzcGxpdCQxIiwic3BsaXRfbGVfZ3QkMSIsInNwbGl0X2x0X2dlJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJzdGFibGVfd2l0bmVzc19tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxNiIsImVycm9yX3NvdXJjZV8wNjYiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsIm9mX2FfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5Iiwic2V4cF9hcmdzXzAyNSIsInJlczBfMDI3Iiwib2ZfYV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwieCQxIiwiYV8wNDEiLCJiXzA0MiIsImFfMDQzIiwiYl8wNDQiLCJhXzA0NSIsImJfMDQ2IiwiZ2VuZXJhdG9yXzA1NiIsInNpemVfMDYxIiwicmFuZG9tXzA2MiIsInNpemVfMDU5IiwicmFuZG9tXzA2MCIsInNpemVfMDU3IiwicmFuZG9tXzA1OCIsInhfMDUxIiwic2l6ZV8wNTIiLCJoYXNoXzA1MyIsImhhc2hfMDUzJDAiLCJoYXNoXzA1MyQxIiwiaGFzaF8wNTMkMiIsInhfMDU1IiwiaGFzaF8wNTMkMyIsImhhc2hfMDUzJDQiLCJzaHJpbmtlcl8wNDciLCJvZl9hXzA2MyIsInNleHBfMDY4IiwidGFnXzA2OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJvZl9hXzA3OSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImFfMDg1IiwiYl8wODYiLCJhXzA4NyIsImJfMDg4IiwiZXF1YWwkMiIsImFfMDg5IiwiYl8wOTAiLCJhXzA5MSIsImJfMDkyIiwiZWx0X2dlbiIsImVsdF9vYnMiLCJlbHRfc2hyIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwidG9fbWFwIiwib2ZfbWFwX2tleXMiLCJvZl9oYXNoX3NldCIsImhzZXQiLCJvZl9oYXNodGJsX2tleXMiLCJ1bmlvbiQwIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMCIsInN1bSQwIiwiZmluZF9tYXAkMCIsInJlbW92ZV9pbmRleCQwIiwiaXNfc3Vic2V0JDAiLCJhcmVfZGlzam9pbnQkMCIsIm9mX2FycmF5JDAiLCJ0b19hcnJheSQwIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDAiLCJlbGVtZW50cyQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJncm91cF9ieSQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQwIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwic3RhYmxlX2RlZHVwX2xpc3QiLCJ4cyIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl9saXN0JDMiLCJvZl9zZXF1ZW5jZSQzIiwib2ZfaGFzaF9zZXQkMyIsIm9mX2hhc2h0Ymxfa2V5cyQzIiwib2ZfYXJyYXkkMyIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMyIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQzIiwib2Zfc29ydGVkX2FycmF5JDMiLCJ1bmlvbl9saXN0JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwib2ZfdHJlZSQzIiwib2ZfbWFwX2tleXMkMyIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwidCQwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhX3NleHBfZ3JhbW1hciIsImFfMDEwIiwiYl8wMTEiLCJub25lIiwic29tZSIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInVuaW9uIiwicjEiLCJ0MSQwIiwicjIiLCJ0MiQwIiwibjEiLCJuMiIsImlzX2NvbXByZXNzZWQiLCJwaHlzX2VxdWFsIiwidW5pb25fZmluZF9nZXRfY2hlY2tfbm9fcGVuZGluIiwiY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIiwiaW5jcl9sZW5ndGgiLCJpbmNyX3BlbmRpbmdfaXRlcnMiLCJkZWNyX3BlbmRpbmdfaXRlcnMiLCJ3aXRoX2l0ZXJhdGlvbl8ybCIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiZmlyc3RfZXhuIiwibGFzdF9leG4iLCJpc19maXJzdCIsImlzX2xhc3QiLCJtZW1fZWx0IiwicHJldiQwIiwiaW5zZXJ0X2FmdGVyJDAiLCJpbnNlcnRfYmVmb3JlJDAiLCJuZXdfZWx0IiwiaW5zZXJ0X2VtcHR5IiwiaW5zZXJ0X2xhc3QiLCJpbnNlcnRfZmlyc3QiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9maXJzdCIsInNlY29uZCIsIm5ld190IiwidmFsdWUkMCIsIm1vdmVfYmVmb3JlIiwiYW5jaG9yIiwiYWZ0ZXJfZWx0IiwibW92ZV90b19mcm9udCIsIm1vdmVfYWZ0ZXIiLCJtb3ZlX3RvX2JhY2siLCJhXzAxNSIsImJfMDE2Iiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJhXzAxNyIsImJfMDE4IiwiYV8wMTkiLCJiXzAyMCIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdGV4dCIsIm9mX3RleHQiLCJ2YWx1ZV9vZl9zZXhwIiwidGV4dCIsImZpbGVuYW1lIiwiYW5ub3RhdGVkIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX3ZhbHVlIiwiYmluX3NoYXBlX25vX3JhaXNlIiwiYmluX3NpemVfbm9fcmFpc2UiLCJiaW5fd3JpdGVfbm9fcmFpc2UiLCJiaW5fd3JpdGVyX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UiLCJiaW5fcmVhZF9ub19yYWlzZSQwIiwiYmluX3JlYWRlcl9ub19yYWlzZSIsImJpbl9ub19yYWlzZSIsIm5vX3JhaXNlX29mX3NleHAiLCJvZl9hXzAyNyIsInNleHBfb2Zfbm9fcmFpc2UiLCJvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWMiLCJvZl9zZXhwIiwic2V4cF9vZl9kYXRhIiwiYXJnMV8wMDIiLCJyZXMwXzAwMyIsInJlczFfMDA0Iiwia3YiLCJyZWFkIiwiZW5zdXJlX2Nhbl9tb2RpZnkiLCJsb29rdXAiLCJsb29rdXBfZXhuIiwiZW5xdWV1ZV91bmNoZWNrZWQiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlIiwiZW5xdWV1ZV9iYWNrIiwiZW5xdWV1ZV9mcm9udCIsImVucXVldWVfZXhuIiwiZW5xdWV1ZV9iYWNrX2V4biIsImVucXVldWVfZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2siLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IiwiZGVxdWV1ZV93aXRoX2tleSIsIm1heWJlX2t2IiwiZGVxdWV1ZV93aXRoX2tleV9leG4iLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXkiLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleSIsImRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZSIsImRlcXVldWVfYmFjayIsImRlcXVldWVfZnJvbnQiLCJsYXN0X3dpdGhfa2V5IiwiZmlyc3Rfd2l0aF9rZXkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWVfYmFja19leG4iLCJkZXF1ZXVlX2Zyb250X2V4biIsImFjIiwiZmluaXNoIiwiZGVxdWV1ZV9hbGwiLCJyZW1vdmVfZXhuIiwibG9va3VwX2FuZF9yZW1vdmUiLCJyZXBsYWNlIiwicmVwbGFjZV9vcl9lbnF1ZXVlIiwicmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IiwicmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2siLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwidW5zYWZlX3N1YiIsInN5bWJvbF9jb25jYXQiLCJlc2NhcGVkIiwiY29udGFpbnMiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwiaW5kZXgiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXgiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbV9leG4iLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0IiwidG9fbGlzdF9yZXYiLCJpc19zdWZmaXgiLCJpc19wcmVmaXgiLCJsc3BsaXQyX2V4biIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsInJzcGxpdDIiLCJzcGxpdF9vbl9jaGFycyIsInNwbGl0X2xpbmVzIiwibGZpbmRpIiwicmZpbmRpIiwibHN0cmlwIiwicnN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY2hvcF9zdWZmaXhfZXhuIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3ByZWZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3BfcHJlZml4X2lmX2V4aXN0cyIsInN1ZmZpeCIsInByZWZpeCIsImRyb3Bfc3VmZml4IiwiZHJvcF9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeF9sZW5ndGgiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29uY2F0X2FycmF5IiwiY29uY2F0X2xpbmVzIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsInBhZF9sZWZ0IiwicGFkX3JpZ2h0IiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0JDAiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInNleHBfMDA0IiwidGFnMiIsInZhbGlkYXRlX29yZGluYXJ5Iiwicm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIiwicm9idXN0bHlfY29tcGFyZSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsInN5bWJvbCQxNyIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsInJvYnVzdGx5X2NvbXBhcmUkMCIsInJvYnVzdF9zaWduIiwidG9fc3RyaW5nXzEyIiwiZ2VuX3VuaWZvcm1fZXhjbCIsImdlbl9pbmNsIiwiZ2VuX3dpdGhvdXRfbmFuIiwiZ2VuX2Zpbml0ZSIsImdlbl9wb3NpdGl2ZSIsImdlbl9uZWdhdGl2ZSIsImdlbl96ZXJvIiwiZ2VuX25hbiIsImdlbl9zdWJub3JtYWwiLCJnZW5fbm9ybWFsIiwiZ2VuX2luZmluaXRlIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsInRvX2ludF9leG4iLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwib2Zfc3RyaW5nX29wdCIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwiYmluX25hbWUiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwicGVlayIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsImJwcmludGYiLCJjb25zdCQwIiwiZXJyb3IiLCJlcnJvcl9zIiwiZm9yY2UiLCJpbnZhbGlkX2FyZ2YiLCJpZnByaW50ZiIsImlzX25vbmUiLCJpc19zb21lIiwia3NwcmludGYiLCJva19leG4iLCJwcmludF9zIiwiZXByaW50X3MiLCJwcm90ZWN0IiwicHJvdGVjdHgiLCJyYWlzZV9zIiwic3ltYm9sJDExIiwic3ByaW50ZiIsInN0YWdlIiwidW5zdGFnZSIsIndpdGhfcmV0dXJuX29wdGlvbiIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaXplX2FycmF5IiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlcl9hcnJheSIsImJpbl9yZWFkX2FycmF5IiwiYmluX3JlYWRfYXJyYXkkMCIsImJpbl9yZWFkZXJfYXJyYXkiLCJiaW5fYXJyYXkiLCJjb21wYXJlX2FycmF5IiwiZXF1YWxfYXJyYXkiLCJnbG9iYWxpemVfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImdsb2JhbGl6ZV9ib29sIiwiYm9vbF9vZl9zZXhwIiwic2V4cF9vZl9ib29sIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Jvb2wiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaXplX2NoYXIiLCJiaW5fd3JpdGVfY2hhciIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkX2NoYXIiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZGVyX2NoYXIiLCJiaW5fY2hhciIsImNvbXBhcmVfY2hhciIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9jaGFyIiwiZXF1YWxfY2hhciIsImdsb2JhbGl6ZV9jaGFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2l6ZV9mbG9hdCIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZXJfZmxvYXQiLCJiaW5fcmVhZF9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZGVyX2Zsb2F0IiwiYmluX2Zsb2F0IiwiY29tcGFyZV9mbG9hdCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZmxvYXQiLCJlcXVhbF9mbG9hdCIsImdsb2JhbGl6ZV9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2l6ZV9pbnQiLCJiaW5fd3JpdGVfaW50IiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZF9pbnQiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkZXJfaW50IiwiYmluX2ludCIsImNvbXBhcmVfaW50IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfaW50IiwiZXF1YWxfaW50IiwiZ2xvYmFsaXplX2ludCIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDMyJDAiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiY29tcGFyZV9pbnQzMiIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfaW50MzIiLCJlcXVhbF9pbnQzMiIsImdsb2JhbGl6ZV9pbnQzMiIsImludDMyX29mX3NleHAiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQzMiIsImJpbl9zaGFwZV9pbnQ2NCIsImJpbl9zaXplX2ludDY0IiwiYmluX3dyaXRlX2ludDY0IiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfaW50NjQkMCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJjb21wYXJlX2ludDY0IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9pbnQ2NCIsImVxdWFsX2ludDY0IiwiZ2xvYmFsaXplX2ludDY0IiwiaW50NjRfb2Zfc2V4cCIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2ludDY0IiwiYmluX3NoYXBlX2xhenlfdCIsImJpbl9zaXplX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRlcl9sYXp5X3QiLCJiaW5fbGF6eV90IiwiY29tcGFyZV9sYXp5X3QiLCJhXzA1NCIsImJfMDU1IiwiaGFzaF9mb2xkX2xhenlfdCIsImxhenlfdF9vZl9zZXhwIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9sYXp5X3QiLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaXplX2xpc3QiLCJiaW5fd3JpdGVfbGlzdCIsImJpbl93cml0ZXJfbGlzdCIsImJpbl9yZWFkX2xpc3QiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZGVyX2xpc3QiLCJiaW5fbGlzdCIsImNvbXBhcmVfbGlzdCIsImFfMDYzIiwiYl8wNjQiLCJhXzA2NSIsImJfMDY2IiwiaGFzaF9mb2xkX2xpc3QiLCJlcXVhbF9saXN0IiwiYV8wNjciLCJiXzA2OCIsImFfMDY5IiwiYl8wNzAiLCJnbG9iYWxpemVfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJnbG9iYWxpemVfbmF0aXZlaW50IiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImZ1bmMkNSIsImhhc2hfbmF0aXZlaW50IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX25hdGl2ZWludCIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlcl9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24kMCIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImNvbXBhcmVfb3B0aW9uIiwiYV8wODYiLCJiXzA4NyIsImVxdWFsX29wdGlvbiIsImFfMDkyIiwiYl8wOTMiLCJnbG9iYWxpemVfb3B0aW9uIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImdsb2JhbGl6ZV9zdHJpbmciLCJoYXNoX2ZvbGRfc3RyaW5nIiwiZnVuYyQ2IiwiaGFzaF9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsIm5hbWVfb2Zfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fd3JpdGVfYnl0ZXMiLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ieXRlcyIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fcmVhZF9yZWYiLCJiaW5fcmVhZF9yZWYkMCIsImJpbl9yZWFkZXJfcmVmIiwiYmluX3JlZiIsImNvbXBhcmVfcmVmIiwiYV8xMTUiLCJiXzExNiIsImFfMTE3IiwiYl8xMTgiLCJlcXVhbF9yZWYiLCJhXzExOSIsImJfMTIwIiwiYV8xMjEiLCJiXzEyMiIsImdsb2JhbGl6ZV9yZWYiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfcmVmIiwiZ3JvdXAkMTMiLCJiaW5fc2hhcGVfdW5pdCIsImJpbl9zaXplX3VuaXQiLCJiaW5fd3JpdGVfdW5pdCIsImJpbl93cml0ZXJfdW5pdCIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF91bml0JDAiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImNvbXBhcmVfdW5pdCIsImVxdWFsX3VuaXQiLCJnbG9iYWxpemVfdW5pdCIsImhhc2hfZm9sZF91bml0IiwiZnVuYyQ3IiwiaGFzaF91bml0IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3VuaXQiLCJncm91cCQxNCIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwic3RhYmxlX3dpdG5lc3NfdF9mcm96ZW4iLCJtYXhfbWVtX3dhaXRpbmdfZ2MiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMiLCJzdWJfc2hhcmVkIiwiYnN0ciIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIiwid3JpdGUiLCJkYXRhX2xlbiIsInRvdGFsX2xlbiIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInZfMDA1IiwicmVzMF8wMTEiLCJ2XzAwNiIsInJlczFfMDEyIiwidl8wMDciLCJyZXMyXzAxMyIsInBvc19hZnRlcl9zaXplX2hlYWRlciIsInBvc19hZnRlcl9kYXRhIiwiYXJnNF8wMjMiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInZfMDE0Iiwidl8wMTUiLCJyZXMxXzAyNSIsInZfMDE2IiwicmVzMl8wMjYiLCJ2XzAxNyIsInJlczNfMDI3Iiwidl8wMTgiLCJyZXM0XzAyOCIsIndyaXRlX2Jpbl9wcm90Iiwid3JpdGVyIiwibGFzdF9ub25tYXRjaF9wbHVzX29uZSIsIm1pbl9wb3MiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsImRhdGFfZW5kIiwiZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sIiwic2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIiwiaGVhZF9vcl90YWlsIiwic2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyIsInNsZW4iLCJmaXJzdF9ub25tYXRjaCIsIm1heF9wb3MiLCJzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwiZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImRhdGFfYmVnaW4iLCJnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2wiLCJ0b19ieXRlcyIsIm9mX2J5dGVzIiwiYnl0ZXMiLCJ0b19oZXgiLCJvZl9oZXhfZXhuIiwib2ZfYmluYXJ5X2V4biIsImFjY3VtIiwidG9fYmluYWJsZSQwIiwiZGlnZXN0X3N0cmluZyIsImRpZ2VzdF9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAyMiIsImVycm9yX3NvdXJjZV8wMzAiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsImFiYnJ2IiwiaXNfZHN0IiwidXRjX29mZnNldF9pbl9zZWNvbmRzIiwiYWJicnZfMDExIiwiaXNfZHN0XzAwOSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDciLCJ2X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInZfc2Vjb25kcyIsInhfMDE1Iiwic2Vjb25kcyIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHNfMDE5IiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzAxIiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJuZXdfcmVnaW1lIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwIiwibmV3X3JlZ2ltZV8wMjciLCJhcmdfMDI4IiwiYm5kc18wMjQiLCJhcmdfMDI2IiwiYm5kc18wMjQkMCIsInY1IiwidjciLCJ2NiIsInZfbmFtZSIsInZfb3JpZ2luYWxfZmlsZW5hbWUiLCJ2X2RpZ2VzdCIsInZfdHJhbnNpdGlvbnMiLCJ2X2xhc3RfcmVnaW1lX2luZGV4Iiwidl9kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSIsInZfbGVhcF9zZWNvbmRzIiwibGVhcF9zZWNvbmRzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJsYXN0X3JlZ2ltZV9pbmRleCIsInRyYW5zaXRpb25zIiwiZGlnZXN0Iiwib3JpZ2luYWxfZmlsZW5hbWUiLCJ0cmFuc2l0aW9uc18wMzkiLCJkaWdlc3RfMDM3Iiwib3JpZ2luYWxfZmlsZW5hbWVfMDM1IiwibmFtZV8wMzMiLCJsYXN0X3JlZ2ltZV9pbmRleF8wNDEiLCJsZWFwX3NlY29uZHNfMDQ1IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDQzIiwiYXJnXzA0NiIsImJuZHNfMDMyIiwiYXJnXzA0NCIsImJuZHNfMDMyJDAiLCJhcmdfMDQyIiwiYm5kc18wMzIkMSIsImFyZ18wNDAiLCJibmRzXzAzMiQyIiwiYXJnXzAzOCIsImJuZHNfMDMyJDMiLCJhcmdfMDM2IiwiYm5kc18wMzIkNCIsImFyZ18wMzQiLCJibmRzXzAzMiQ1Iiwiem9uZSIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsImFiYnJ2X2luZGV4IiwiaW5wdXRfdHpfZmlsZV9nZW4iLCJpbnB1dF90cmFuc2l0aW9uIiwiaW5wdXRfbGVhcF9zZWNvbmQiLCJ1dGNfbG9jYWxfY291bnQiLCJzdGRfd2FsbF9jb3VudCIsImxlYXBfY291bnQiLCJ0cmFuc2l0aW9uX2NvdW50IiwidHlwZV9jb3VudCIsImFiYnJ2X2NoYXJfY291bnQiLCJ0cmFuc2l0aW9uX3RpbWVzIiwidHJhbnNpdGlvbl9pbmRpY2VzIiwicmVnaW1lcyIsInJhd19hYmJydnMiLCJpbmRleGVkX2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsInJlZ2ltZXMkMCIsInJhd190cmFuc2l0aW9ucyIsInRpbWUiLCJyZWdpbWUiLCJyZXN0IiwibHR0IiwiaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIiwicmVhZF9oZWFkZXIiLCJtYWdpYyIsImJhZF92ZXJzaW9uIiwidmVyc2lvbiIsImlucHV0X3R6X2ZpbGVfdjEiLCJpbnB1dF90el9maWxlIiwiem9uZW5hbWUiLCJtYWtlX3pvbmUiLCJyZWFzb24iLCJvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUiLCJvZl91dGNfb2Zmc2V0IiwibGlrZWx5X21hY2hpbmVfem9uZXMiLCJ1dGMiLCJyZXNldF90cmFuc2l0aW9uX2NhY2hlIiwiZ2V0X3JlZ2ltZV9leG4iLCJlZmZlY3RpdmVfc3RhcnRfdGltZSIsIm1vZGUiLCJpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWMiLCJpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWMiLCJiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHMiLCJ0cmFuc2l0aW9uIiwiaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCIsImluZGV4JDAiLCJpbmRleCQxIiwiaW5kZXgkMiIsImluZGV4JDMiLCJpbmRleCQ0Iiwib2ZfaW50NjNfc2Vjb25kcyIsInRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leCIsIm9mX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zcGFuX3NpbmNlX2Vwb2NoIiwib2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCIsImluZGV4X29mX2RhdGVfYW5kX29mZGF5IiwiaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQiLCJpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50XyIsImFmdGVyIiwiYmVmb3JlIiwiaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfIiwiaW5kZXhfYWJicmV2aWF0aW9uX2V4biIsImluZGV4X29mZnNldF9mcm9tX3V0Y19leG4iLCJyYXciLCJ2YWxpZGF0aW9uX2ZhaWxlZCIsImFyZzJfMDAzIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDA2IiwiY3JlYXRlX2V4biIsImNyZWF0ZV9zdGFibGVfd2l0bmVzcyIsInJhd19zdGFibGVfd2l0bmVzcyIsInR5cGVfZXF1YWwiLCJyYWNlX2ZyZWVfY3JlYXRlX2xvb3AiLCJjZWxsIiwibmV3X3giLCJjdXJyZW50IiwidHlwZW5hbWUkMSIsImFsbG93ZWRfaW50cyIsImFsbG93ZWRfaW50cyQwIiwidHlwZW5hbWUkMCIsImltbWVkaWFjeSIsIm5ldmVyX3dpdGhfbmFtZSIsIm5ldmVyIiwidW5rbm93biIsIm9wdGlvbiIsImxpc3QkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwicmVmIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGU0IiwidHVwbGU1IiwiZnVuY3Rpb24kMCIsImludCQwIiwicmVmJDAiLCJhcnJheSQwIiwidHVwbGUyJDAiLCJ0dXBsZTMkMCIsInR1cGxlNCQwIiwidHVwbGU1JDAiLCJmdW5jdGlvbiQxIiwib3B0aW9uJDAiLCJsYXp5X3QiLCJwb3NzaWJseV91bmJveGVkIiwiY2hpbGRfdHlwZSIsInRoZV9vbmx5X2ZpZWxkIiwidmFyaWFudCIsInRhZyIsIm1vcmUiLCJubyIsIm1vcmVfYXJnX2xpc3QiLCJvbmVfYXJnX2xpc3QiLCJub19hcmdfbGlzdCIsIm5vX2FyZ19jb3VudCIsImhhc2hfc2V0IiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9iXzAxMSIsImFyZzFfMDEzIiwiYXJnMF8wMTIiLCJyZXMxXzAxNSIsImN1cnJ5IiwidW5jdXJyeSIsIm1hcF9mc3QiLCJtYXBfc25kIiwibWFwX2JvdGgiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsIm9mX2NfMDIxIiwic2V4cF8wMjkiLCJhcmcyXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsIm9mX2FfMDMxIiwib2ZfYl8wMzIiLCJvZl9jXzAzMyIsImFyZzJfMDM2IiwiYXJnMV8wMzUiLCJyZXMxXzAzOCIsInJlczJfMDM5Iiwib2ZfYyIsImN1cnJ5JDAiLCJ1bmN1cnJ5JDAiLCJtYXBfZnN0JDAiLCJtYXBfc25kJDAiLCJtYXBfdHJkIiwibWFwX2FsbCIsImYzIiwibWFwMiQwIiwiejIiLCJ6MSIsImdldDMiLCJjbXAzIiwieiQwIiwiYzEiLCJjMiIsImVxMyIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMwXzA0OSIsInJlczFfMDUwIiwiYV8wNTEiLCJiXzA1MiIsInRfMDU0IiwidF8wNTMiLCJ0XzA1NiIsInRfMDU1Iiwic2V4cF8wNjIiLCJhcmcxXzA1OSIsImFyZzBfMDU4IiwicmVzMF8wNjAiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwiYXJnMF8wNjQiLCJyZXMwXzA2NiIsInJlczFfMDY3IiwiczIiLCJzMSIsInMyJDAiLCJzMSQwIiwid2Vla2RheXMiLCJ3ZWVrZW5kcyIsInNpemVfMDE4IiwicmFuZG9tXzAxOSIsInNpemVfMDEyIiwicmFuZG9tXzAxMyIsInNpemVfMDEwIiwicmFuZG9tXzAxMSIsInJhbmRvbV8wMDkiLCJzaXplXzAwNiIsInJhbmRvbV8wMDciLCJoYXNoXzAwNSIsImhhc2hfMDA1JDAiLCJoYXNoXzAwNSQxIiwiaGFzaF8wMDUkMiIsImhhc2hfMDA1JDMiLCJoYXNoXzAwNSQ0IiwiaGFzaF8wMDUkNSIsImhhc2hfMDA1JDYiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidG9fc3RyaW5nX2xvbmciLCJhdG9tIiwidW5zdWdnZXN0ZWQiLCJpbnRfY2xhdXNlIiwic2hvcnRfY2xhdXNlIiwibG9uZ19jbGF1c2UiLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwNCIsImN1c3RvbV9wcmludGZfMDAzIiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDA3IiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsIm9mX2ludF91bmNoZWNrZWQiLCJkYXlzX2luX21vbnRoIiwiaW52YWxpZCIsIm1zZyIsImN1c3RvbV9wcmludGZfMDA1IiwiZGF5c19pbl9tb250aCQwIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJ4XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsIm9wdCIsInZhbHVlX2V4biIsImRlZmF1bHQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludCQwIiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsInJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkiLCJyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwic2hpZnRfZGVjaW1hbF9wb2ludCIsImJ5IiwicyQwIiwicyQxIiwibm90X3plcm8iLCJ1bmRlcnNjb3JlIiwidW5kZXJzY29yZSQwIiwiZSQxIiwiZXhwIiwiZXhwJDAiLCJuZWciLCJzaWduZWQiLCJzJDMiLCJkJDIiLCJzdWYiLCJwcmVmIiwicyQ0IiwiYnkkMCIsImJ5JDEiLCJzJDUiLCJzJDYiLCJieSQyIiwicyQ3IiwicyQyIiwiZmxvYXRfdG9fc3RyaW5nIiwieF9hYnMiLCJ0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlIiwicmVhbGx5X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsInN0ciQwIiwic3RyJDEiLCJzdHIkMiIsIm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiIsIm9mX211bHQiLCJ0b19tdWx0Iiwib2ZfcGVyY2VudGFnZSIsInRvX3BlcmNlbnRhZ2UiLCJvZl9icCIsInRvX2JwIiwib2ZfYnBfaW50IiwidG9fYnBfaW50Iiwic2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCIsIm9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsInRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsIm9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInJvdW5kX3NpZ25pZmljYW50Iiwic2lnbmlmaWNhbnRfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9tdWx0IiwiZGVjaW1hbF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UiLCJyb3VuZF9kZWNpbWFsX2JwIiwiYXJnMF8wMTAiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxOCIsInJlczBfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJleHBvbmVudCIsInByZWNpc2lvbiIsImV4cG9uZW50X0UiLCJkZWNpbWFsIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwidG9fc3RyaW5nJDEiLCJiaW5fc2hhcGVfdCQ3IiwidW5jaGVja2VkX3ZhbHVlIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImJpbl9zaGFwZV90JDgiLCJiaW5fc2hhcGVfdCQ5IiwiYmluX3NoYXBlX3QkMTAiLCJiaW5fd3JpdGVyX3QkNiIsImJpbl9yZWFkZXJfdCQ2IiwiYmluX3QkNiIsInR5cGVuYW1lX29mX3QkMSIsIm5hbWVfb2ZfdCQxIiwidHlwZXJlcF9vZl90JDEiLCJiaW5fc2hhcGVfdCQxMSIsImJpbl9zaGFwZV90JDEyIiwiaXNfemVybyIsImFwcGx5IiwiaXNfbmFuIiwiaXNfaW5mIiwic2lnbl9leG4iLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYkMCIsInRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiIsImZvcm1hdCQwIiwidG9fc3RyaW5nJDIiLCJiaW5fc2hhcGVfdCQxMyIsInRvX3N0cmluZyQzIiwiYmluX3NoYXBlX3QkMTQiLCJiaW5fd3JpdGVyX3QkNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsInRvX3N0cmluZyQ0Iiwic2V4cF9vZl90JDciLCJyYW5kb21pemUiLCJzcGFuIiwicmFuZG9tX3N0YXRlIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJuJDIiLCJuJDMiLCJuJDQiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwiYXJnXzAxNiIsImJuZHNfMDA2JDMiLCJibmRzXzAwNiQ0IiwiYm5kc18wMDYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50MzJfc2Vjb25kcyIsIm9mX21pbiIsIm9mX2hyIiwib2ZfZGF5Iiwib2ZfaW50X25zIiwib2ZfaW50X3VzIiwib2ZfaW50X21zIiwib2ZfaW50X3NlYyIsIm9mX2ludF9taW4iLCJvZl9pbnRfaHIiLCJvZl9pbnRfZGF5IiwiZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSIsInVuaXRfb2ZfdGltZSIsInNjYWxlX2J5X3VuaXRfb2ZfdGltZSIsImRheSQwIiwieCQyIiwidG9fc2hvcnRfc3RyaW5nIiwidF9vZl9zZXhwX3YxX3YyIiwiaXNfdjIiLCJzZXhwX29mX3RfdjFfdjIiLCJhYnNfdCIsInRvX3VuaXRfb2ZfdGltZSIsIm9mX3VuaXRfb2ZfdGltZSIsInN1ZmZpeF9vZl91bml0X29mX3RpbWUiLCJwYXJzZV9zdWZmaXgiLCJ1bml0X29mX3RpbWVfbGlzdCQxIiwidW5pdF9vZl90aW1lX2xpc3QiLCJ1bml0X29mX3RpbWVfbGlzdCQwIiwic3RhdGVfaXNfZmluYWwiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfZGF5Iiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm9mX2ludDYzX2V4biQwIiwidG9faW50NjMkMCIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNleHBfb2Zfc3BhbiIsInNwYW5fb2Zfc2V4cCIsImZsb2F0JDIiLCJzaW5jZV91bml4X2Vwb2NoIiwiaGFsZl9taWNyb3NlY29uZCIsInRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIiwibWF4X3ZhbHVlX3JlcHJlc2VudGFibGUiLCJvZl9pbnQ2M19leG4kMSIsInRvX2ludDYzJDEiLCJmYWlsIiwib2ZfaW50NjNfZXhuJDIiLCJ0b19pbnQ2MyQyIiwiY29tcGFyZSQ2IiwiYXJnX3R5cGUiLCJpc19pbnZhbGlkIiwib2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0Iiwic3ViX2V4biIsInRvX3N0cmluZ193aXRoX3VuaXQiLCJzaXh0eSIsInRob3VzYW5kIiwidW5pdCQwIiwibnVtX2RpZ2l0cyIsInRvX21pY3Jvc2Vjb25kX3N0cmluZyIsImV2ZXJ5Iiwic3RhcnQkMSIsInRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50NjNfbnNfc2luY2VfZXBvY2giLCJvdmVyZmxvdyIsImFkZF9vdmVyZmxvd2VkIiwic3ViX292ZXJmbG93ZWQiLCJhZGRfc2F0dXJhdGluZyIsInN1Yl9zYXR1cmF0aW5nIiwidG9faW50X25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50X25zX3NpbmNlX2Vwb2NoIiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwibWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0Iiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwidG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwibnNfc2luY2VfZXBvY2giLCJuc19wZXJfZGF5IiwiYXBwcm94X2RheXNfZnJvbV9lcG9jaCIsIm5zX3NpbmNlX3N0YXJ0X29mX2RheSIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5Iiwib2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwic3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIiwic3Bhbl9zaW5jZV9lcG9jaCIsInR3b19kaWdpdF9vZl9zdHJpbmciLCJuc19vZl8xMDBfbXMiLCJuc19vZl8xMF9tcyIsIm5zX29mXzFfbXMiLCJuc19vZl8xMDBfdXMiLCJuc19vZl8xMF91cyIsIm5zX29mXzFfdXMiLCJuc19vZl8xMDBfbnMiLCJuc19vZl8xMF9ucyIsIm5zX29mXzFfbnMiLCJzZWNvbmRzX3NwYW4iLCJzdWJfc2Vjb25kX3NwYW4iLCJvZmRheV9zdHJpbmdfd2l0aF96b25lIiwiZGF0ZV9zdHJpbmciLCJvZmRheV9zdHJpbmciLCJwcmVmaXhfbGVuIiwic3VmZml4X2xlbiIsInNlY29uZHNfc3RyaW5nIiwic3ViX3NlY29uZF9zdHJpbmciLCJzX3N0cmluZyIsIm1fc3RyaW5nIiwiaF9zdHJpbmciLCJtdWx0aXBsaWVyIiwiZGF5c19mcm9tX2Vwb2NoJDAiLCJkYXlzX2Zyb21fZXBvY2hfaW5fbnMiLCJhdHRlbXB0Iiwic3Bhbl9vZl9kdXJhdGlvbiIsInRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCIsImR1cmF0aW9ucyIsInNwYW5zIiwic3RyaW5nX2J5dGVzIiwic3JjX3BvcyIsInNyY19sZW4iLCJkc3RfcG9zIiwic3JjX3BvcyQwIiwiYnl0ZXNfYnl0ZXMiLCJzdHJpbmdfYmlnc3RyaW5nIiwiYnl0ZXNfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19zdHJpbmciLCJiaWdzdHJpbmdfYnl0ZXMiLCJzaXplXzAwOSIsInJhbmRvbV8wMTAiLCJzaXplXzAwNyIsImhhc2hfMDA4IiwiaGFzaF8wMDgkMCIsImhhc2hfMDA4JDEiLCJoYXNoXzAwOCQyIiwiYmFzZV9sZW4iLCJnZXRfbm9fYm91bmRzX2NoZWNrIiwiZm9sZGkkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImJsaXRfdG8iLCJibGl0X3RvX3N0cmluZyIsImJsaXRfdG9fYnl0ZXMiLCJibGl0X3RvX2JpZ3N0cmluZyIsImJsaXRfYmFzZSIsImJsaXRfZnJvbSIsImJsaXRfZnJvbV9zdHJpbmciLCJibGl0X2Zyb21fYmlnc3RyaW5nIiwib2ZfYmFzZSIsImNvbmNhdF9nZW4iLCJjcmVhdGVfZHN0IiwiYmxpdF9kc3QiLCJ0cyIsImNvbmNhdF9zdHJpbmciLCJjb25jYXRfYmlnc3RyaW5nIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsInV1aWQiLCJnbG9iYWxpemUkMCIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsImdsb2JhbGl6ZSQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJnbG9iYWxpemUkMiIsInR5cGVuYW1lX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwiY2hlY2skMiIsInBwJDIiLCJvZl9zdHJpbmckMiIsImluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIiwiYXJnX3R5cGUkMCIsInNleHBfYXNfc3RyaW5nIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInZfMDAxIiwicmVzMV8wMTEiLCJzZXJpYWxpemVkX3NleHAiLCJhcmcxXzAxNSIsInZfMDEyIiwidl8wMTMiLCJyZXMxXzAxNyIsImV4cGVjdGVkX2Jpbl9pbyIsImJpbmFibGVfbSIsInNlcmlhbGl6ZWRfYmluX2lvIiwiYXJnMl8wMjIiLCJhcmcxXzAyMSIsInJlczFfMDI0Iiwidl8wMTkiLCJyZXMyXzAyNSIsImFyZzFfMDI5Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJsb29wIiwicmV2X3NraXBwZWQiLCJzdHJpbmdzJDAiLCJjb250aW51ZSQwIiwic3RyaW5nJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJ2XzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInBlcm11dGF0YXRpb25zIiwiZWxlbWVudHMiLCJhcmcxXzA1NyIsImFyZzBfMDU2Iiwidl8wNTQiLCJyZXMwXzA1OCIsInJlczFfMDU5IiwiYmxhbmciLCJjbXBfYSQwIiwiYV8wMDEkMCIsImJfMDAyJDAiLCJjbXBfYSQ1IiwiY21wX2EkMSIsImNtcF9hJDIiLCJjbXBfYSQzIiwiYV8wMjciLCJhXzAyNSIsImFfMDIzIiwiYl8wMjgiLCJiXzAyNiIsImJfMDI0IiwiYV8wMzEiLCJiXzAzMiIsImNtcF9hJDQiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3JDAiLCJiXzAzOCQwIiwiYV8wMzkiLCJiXzA0MCIsImFfMDQ5IiwiYV8wNDciLCJiXzA1MCIsImJfMDQ4IiwiYV8wNTMiLCJiXzA1NCIsImFfMDU1IiwiYl8wNTYiLCJhXzA1NyIsImJfMDU4IiwiYV8wNjEiLCJhXzA1OSIsImJfMDYyIiwiYl8wNjAiLCJhXzA3MSIsImJfMDcyIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ2MCQxIiwidjAkMiIsInYwJDMiLCJzdWJ0ZXJtcyIsInQzIiwidDEkMSIsImNvbnRhaW5zX25vX2NvbnN0YW50cyIsInRydWUkMCIsImZhbHNlJDAiLCJub3QiLCJhbmRhbHNvIiwib3RoZXIiLCJ0MWIiLCJ0MWEiLCJvcmVsc2UiLCJpZiQwIiwib2ZfYV8wNzMiLCJhcmcxXzA3NSIsImFyZzBfMDc0IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMl8wODYiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODciLCJyZXMxXzA4OCIsInJlczJfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsImdhdGhlcl9jb25qdW5jdHMiLCJ0cyQxIiwidHMkMCIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJ3b3JkIiwia2lsb2J5dGVzIiwibWVnYWJ5dGVzIiwiZ2lnYWJ5dGVzIiwidGVyYWJ5dGVzIiwicGV0YWJ5dGVzIiwiZXhhYnl0ZXMiLCJ3b3Jkc19pbnRfZXhuIiwid29yZHNfZmxvYXQiLCJvZl9raWxvYnl0ZXMiLCJvZl9tZWdhYnl0ZXMiLCJvZl9naWdhYnl0ZXMiLCJvZl90ZXJhYnl0ZXMiLCJvZl9wZXRhYnl0ZXMiLCJvZl9leGFieXRlcyIsIm9mX3dvcmRzX2ludCIsIm9mX3dvcmRzX2Zsb2F0X2V4biIsImJhc2Vfc3RyIiwiZXh0X2NoYXIiLCJsYXJnZXN0X21lYXN1cmUiLCJ0X2FicyIsIm5vX21hdGNoIiwidmFsX3NleHAiLCJ1bml0X25hbWUiLCJ0JDUiLCJ0JDQiLCJ0JDMiLCJ0JDIiLCJjdXN0b21fcHJpbnRmXzAwNiIsImN1c3RvbV9wcmludGZfMDA3IiwiY3VzdG9tX3ByaW50Zl8wMDgiLCJjdXN0b21fcHJpbnRmXzAwOSIsImN1c3RvbV9wcmludGZfMDEwIiwiY3VzdG9tX3ByaW50Zl8wMTEiLCJ0b19zdHJpbmdfc2hvcnQiLCJ0b191bml0c19zdHIiLCJ0b191bml0IiwiZXh0IiwiZl9hYnMiLCJjdXN0b21fcHJpbnRmXzAxNCIsImN1c3RvbV9wcmludGZfMDE1IiwiY3VzdG9tX3ByaW50Zl8wMTYiLCJjdXN0b21fcHJpbnRmXzAxNyIsImN1c3RvbV9wcmludGZfMDE4IiwiY3VzdG9tX3ByaW50Zl8wMTkiLCJjdXN0b21fcHJpbnRmXzAyMCIsImN1c3RvbV9wcmludGZfMDIxIiwiY3VzdG9tX3ByaW50Zl8wMjIiLCJjdXN0b21fcHJpbnRmXzAyMyIsImN1c3RvbV9wcmludGZfMDI0IiwiY3VzdG9tX3ByaW50Zl8wMjUiLCJjdXN0b21fcHJpbnRmXzAyNiIsIm5fZnJvbnQiLCJuX2JhY2siLCJmcm9udCIsImJhY2siLCJyZXZfYmFjayIsImZyb250JDAiLCJyZXZfZnJvbnQiLCJiYWNrJDAiLCJyYWlzZV9mcm9udF9pbnZhcmlhbnQiLCJyYWlzZV9iYWNrX2ludmFyaWFudCIsInBlZWtfZnJvbnRfZXhuIiwicGVla19iYWNrX2V4biIsImRyb3BfZnJvbnRfZXhuIiwiZHJvcF9iYWNrX2V4biIsIm9wdGlvbmFsIiwicGVla19mcm9udCIsInBlZWtfYmFjayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJ0b19saXN0JDEiLCJ0b19saXN0JDIiLCJ0b19saXN0JDMiLCJzdW0kMSIsImZpbmRfbWFwJDEiLCJ0b19hcnJheSQxIiwiZm9sZF9yZXN1bHQkMSIsImJ1aWxkIiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8wOTYiLCJuYW1lcyQwIiwidjE2IiwidjE1IiwidjE0IiwidjEzIiwidjEyIiwidjExIiwidjEwIiwidjkiLCJ2OCIsInNpemUkNiIsInNpemUkNyIsInNpemUkOCIsInNpemUkOSIsInNpemUkMTAiLCJzaXplJDExIiwic2l6ZSQxMiIsInNpemUkMTMiLCJ2X21pbm9yX3dvcmRzIiwidl9wcm9tb3RlZF93b3JkcyIsInZfbWFqb3Jfd29yZHMiLCJ2X21pbm9yX2NvbGxlY3Rpb25zIiwidl9tYWpvcl9jb2xsZWN0aW9ucyIsInZfaGVhcF93b3JkcyIsInZfaGVhcF9jaHVua3MiLCJ2X2xpdmVfd29yZHMiLCJ2X2xpdmVfYmxvY2tzIiwidl9mcmVlX3dvcmRzIiwidl9mcmVlX2Jsb2NrcyIsInZfbGFyZ2VzdF9mcmVlIiwidl9mcmFnbWVudHMiLCJ2X2NvbXBhY3Rpb25zIiwidl90b3BfaGVhcF93b3JkcyIsInZfc3RhY2tfc2l6ZSIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJoc3YkMTAiLCJoc3YkMTEiLCJoc3YkMTIiLCJoc3YkMTMiLCJoc3YkMTQiLCJzdGFja19zaXplIiwidG9wX2hlYXBfd29yZHMiLCJjb21wYWN0aW9ucyIsImZyYWdtZW50cyIsImxhcmdlc3RfZnJlZSIsImZyZWVfYmxvY2tzIiwiZnJlZV93b3JkcyIsImxpdmVfYmxvY2tzIiwibGl2ZV93b3JkcyIsImhlYXBfY2h1bmtzIiwiaGVhcF93b3JkcyIsIm1ham9yX2NvbGxlY3Rpb25zIiwibWlub3JfY29sbGVjdGlvbnMiLCJtYWpvcl93b3JkcyIsInByb21vdGVkX3dvcmRzIiwibWlub3Jfd29yZHMiLCJzdGFja19zaXplXzA0NyIsInRvcF9oZWFwX3dvcmRzXzA0NSIsImNvbXBhY3Rpb25zXzA0MyIsImZyYWdtZW50c18wNDEiLCJsYXJnZXN0X2ZyZWVfMDM5IiwiZnJlZV9ibG9ja3NfMDM3IiwiZnJlZV93b3Jkc18wMzUiLCJsaXZlX2Jsb2Nrc18wMzMiLCJsaXZlX3dvcmRzXzAzMSIsImhlYXBfY2h1bmtzXzAyOSIsImhlYXBfd29yZHNfMDI3IiwibWFqb3JfY29sbGVjdGlvbnNfMDI1IiwibWlub3JfY29sbGVjdGlvbnNfMDIzIiwibWFqb3Jfd29yZHNfMDIxIiwicHJvbW90ZWRfd29yZHNfMDE5IiwibWlub3Jfd29yZHNfMDE3IiwiYXJnXzA0OCIsImJuZHNfMDE2JDEiLCJibmRzXzAxNiQyIiwiYm5kc18wMTYkMyIsImJuZHNfMDE2JDQiLCJibmRzXzAxNiQ1IiwiYm5kc18wMTYkNiIsImFyZ18wMzIiLCJibmRzXzAxNiQ3IiwiYXJnXzAzMCIsImJuZHNfMDE2JDgiLCJibmRzXzAxNiQ5IiwiYm5kc18wMTYkMTAiLCJhcmdfMDI0IiwiYm5kc18wMTYkMTEiLCJhcmdfMDIyIiwiYm5kc18wMTYkMTIiLCJibmRzXzAxNiQxMyIsImJuZHNfMDE2JDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwibiQxNCIsImhzdiQxNSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18wODkiLCJzdGFja19zaXplXzA4NyIsInRvcF9oZWFwX3dvcmRzXzA4NSIsImNvbXBhY3Rpb25zXzA4MyIsImZyYWdtZW50c18wODEiLCJsYXJnZXN0X2ZyZWVfMDc5IiwiZnJlZV9ibG9ja3NfMDc3IiwiZnJlZV93b3Jkc18wNzUiLCJsaXZlX2Jsb2Nrc18wNzMiLCJsaXZlX3dvcmRzXzA3MSIsImhlYXBfY2h1bmtzXzA2OSIsImhlYXBfd29yZHNfMDY3IiwibWFqb3JfY29sbGVjdGlvbnNfMDY1IiwibWlub3JfY29sbGVjdGlvbnNfMDYzIiwibWFqb3Jfd29yZHNfMDYxIiwicHJvbW90ZWRfd29yZHNfMDU5IiwibWlub3Jfd29yZHNfMDU3IiwiYXJnXzA5MCIsImJuZHNfMDU2IiwiYXJnXzA4OCIsImJuZHNfMDU2JDAiLCJhcmdfMDg2IiwiYm5kc18wNTYkMSIsImFyZ18wODQiLCJibmRzXzA1NiQyIiwiYXJnXzA4MiIsImJuZHNfMDU2JDMiLCJhcmdfMDgwIiwiYm5kc18wNTYkNCIsImFyZ18wNzgiLCJibmRzXzA1NiQ1IiwiYXJnXzA3NiIsImJuZHNfMDU2JDYiLCJhcmdfMDc0IiwiYm5kc18wNTYkNyIsImFyZ18wNzIiLCJibmRzXzA1NiQ4IiwiYXJnXzA3MCIsImJuZHNfMDU2JDkiLCJhcmdfMDY4IiwiYm5kc18wNTYkMTAiLCJhcmdfMDY2IiwiYm5kc18wNTYkMTEiLCJhcmdfMDY0IiwiYm5kc18wNTYkMTIiLCJhcmdfMDYyIiwiYm5kc18wNTYkMTMiLCJhcmdfMDYwIiwiYm5kc18wNTYkMTQiLCJhcmdfMDU4IiwiYm5kc18wNTYkMTUiLCJ2X21pbm9yX2hlYXBfc2l6ZSIsInZfbWFqb3JfaGVhcF9pbmNyZW1lbnQiLCJ2X3NwYWNlX292ZXJoZWFkIiwidl92ZXJib3NlIiwidl9tYXhfb3ZlcmhlYWQiLCJ2X3N0YWNrX2xpbWl0Iiwidl9hbGxvY2F0aW9uX3BvbGljeSIsInZfd2luZG93X3NpemUiLCJ2X2N1c3RvbV9tYWpvcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX3JhdGlvIiwidl9jdXN0b21fbWlub3JfbWF4X3NpemUiLCJhXzA5MyIsImJfMDk0IiwieF8wOTciLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJ2ZXJib3NlIiwic3BhY2Vfb3ZlcmhlYWQiLCJtYWpvcl9oZWFwX2luY3JlbWVudCIsIm1pbm9yX2hlYXBfc2l6ZSIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8xMTkiLCJjdXN0b21fbWlub3JfcmF0aW9fMTE3IiwiY3VzdG9tX21ham9yX3JhdGlvXzExNSIsIndpbmRvd19zaXplXzExMyIsImFsbG9jYXRpb25fcG9saWN5XzExMSIsInN0YWNrX2xpbWl0XzEwOSIsIm1heF9vdmVyaGVhZF8xMDciLCJ2ZXJib3NlXzEwNSIsInNwYWNlX292ZXJoZWFkXzEwMyIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzEwMSIsIm1pbm9yX2hlYXBfc2l6ZV8wOTkiLCJhcmdfMTIwIiwiYm5kc18wOTgiLCJhcmdfMTE4IiwiYm5kc18wOTgkMCIsImFyZ18xMTYiLCJibmRzXzA5OCQxIiwiYXJnXzExNCIsImJuZHNfMDk4JDIiLCJhcmdfMTEyIiwiYm5kc18wOTgkMyIsImFyZ18xMTAiLCJibmRzXzA5OCQ0IiwiYXJnXzEwOCIsImJuZHNfMDk4JDUiLCJhcmdfMTA2IiwiYm5kc18wOTgkNiIsImFyZ18xMDQiLCJibmRzXzA5OCQ3IiwiYXJnXzEwMiIsImJuZHNfMDk4JDgiLCJhcmdfMTAwIiwiYm5kc18wOTgkOSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNTYiLCJzdGFja19zaXplXzE1NCIsInRvcF9oZWFwX3dvcmRzXzE1MiIsImNvbXBhY3Rpb25zXzE1MCIsImZyYWdtZW50c18xNDgiLCJsYXJnZXN0X2ZyZWVfMTQ2IiwiZnJlZV9ibG9ja3NfMTQ0IiwiZnJlZV93b3Jkc18xNDIiLCJsaXZlX2Jsb2Nrc18xNDAiLCJsaXZlX3dvcmRzXzEzOCIsImhlYXBfY2h1bmtzXzEzNiIsImhlYXBfd29yZHNfMTM0IiwibWFqb3JfY29sbGVjdGlvbnNfMTMyIiwibWlub3JfY29sbGVjdGlvbnNfMTMwIiwibWFqb3Jfd29yZHNfMTI4IiwicHJvbW90ZWRfd29yZHNfMTI2IiwibWlub3Jfd29yZHNfMTI0IiwiYXJnXzE1NyIsImJuZHNfMTIzIiwiYXJnXzE1NSIsImJuZHNfMTIzJDAiLCJhcmdfMTUzIiwiYm5kc18xMjMkMSIsImFyZ18xNTEiLCJibmRzXzEyMyQyIiwiYXJnXzE0OSIsImJuZHNfMTIzJDMiLCJhcmdfMTQ3IiwiYm5kc18xMjMkNCIsImFyZ18xNDUiLCJibmRzXzEyMyQ1IiwiYXJnXzE0MyIsImJuZHNfMTIzJDYiLCJhcmdfMTQxIiwiYm5kc18xMjMkNyIsImFyZ18xMzkiLCJibmRzXzEyMyQ4IiwiYXJnXzEzNyIsImJuZHNfMTIzJDkiLCJhcmdfMTM1IiwiYm5kc18xMjMkMTAiLCJhcmdfMTMzIiwiYm5kc18xMjMkMTEiLCJhcmdfMTMxIiwiYm5kc18xMjMkMTIiLCJhcmdfMTI5IiwiYm5kc18xMjMkMTMiLCJhcmdfMTI3IiwiYm5kc18xMjMkMTQiLCJhcmdfMTI1IiwiYm5kc18xMjMkMTUiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMkMCIsInN0YWNrX3NpemUkMCIsInRvcF9oZWFwX3dvcmRzJDAiLCJjb21wYWN0aW9ucyQwIiwiZnJhZ21lbnRzJDAiLCJsYXJnZXN0X2ZyZWUkMCIsImZyZWVfYmxvY2tzJDAiLCJmcmVlX3dvcmRzJDAiLCJsaXZlX2Jsb2NrcyQwIiwibGl2ZV93b3JkcyQwIiwiaGVhcF9jaHVua3MkMCIsImhlYXBfd29yZHMkMCIsIm1ham9yX2NvbGxlY3Rpb25zJDAiLCJtaW5vcl9jb2xsZWN0aW9ucyQwIiwibWFqb3Jfd29yZHMkMCIsInByb21vdGVkX3dvcmRzJDAiLCJtaW5vcl93b3JkcyQwIiwibWlub3Jfd29yZHNfZnVuIiwicHJvbW90ZWRfd29yZHNfZnVuIiwibWFqb3Jfd29yZHNfZnVuIiwibWlub3JfY29sbGVjdGlvbnNfZnVuIiwibWFqb3JfY29sbGVjdGlvbnNfZnVuIiwiaGVhcF93b3Jkc19mdW4iLCJoZWFwX2NodW5rc19mdW4iLCJsaXZlX3dvcmRzX2Z1biIsImxpdmVfYmxvY2tzX2Z1biIsImZyZWVfd29yZHNfZnVuIiwiZnJlZV9ibG9ja3NfZnVuIiwibGFyZ2VzdF9mcmVlX2Z1biIsImZyYWdtZW50c19mdW4iLCJjb21wYWN0aW9uc19mdW4iLCJ0b3BfaGVhcF93b3Jkc19mdW4iLCJzdGFja19zaXplX2Z1biIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19mdW4iLCJtaW5vcl93b3Jkc19nZW4iLCJwcm9tb3RlZF93b3Jkc19nZW4iLCJtYWpvcl93b3Jkc19nZW4iLCJtaW5vcl9jb2xsZWN0aW9uc19nZW4iLCJtYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJoZWFwX3dvcmRzX2dlbiIsImhlYXBfY2h1bmtzX2dlbiIsImxpdmVfd29yZHNfZ2VuIiwibGl2ZV9ibG9ja3NfZ2VuIiwiZnJlZV93b3Jkc19nZW4iLCJmcmVlX2Jsb2Nrc19nZW4iLCJsYXJnZXN0X2ZyZWVfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJmcmFnbWVudHNfZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJjb21wYWN0aW9uc19nZW4iLCJjb21waWxlX2FjYyQxNCIsInRvcF9oZWFwX3dvcmRzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwic3RhY2tfc2l6ZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJmbG9hdF9mIiwiaW50X2YiLCJhXzE1OCIsImJfMTU5IiwiY3VzdG9tX21pbm9yX21heF9zaXplXzE4MSIsImN1c3RvbV9taW5vcl9yYXRpb18xNzkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMTc3Iiwid2luZG93X3NpemVfMTc1IiwiYWxsb2NhdGlvbl9wb2xpY3lfMTczIiwic3RhY2tfbGltaXRfMTcxIiwibWF4X292ZXJoZWFkXzE2OSIsInZlcmJvc2VfMTY3Iiwic3BhY2Vfb3ZlcmhlYWRfMTY1IiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfMTYzIiwibWlub3JfaGVhcF9zaXplXzE2MSIsImFyZ18xODIiLCJibmRzXzE2MCIsImFyZ18xODAiLCJibmRzXzE2MCQwIiwiYXJnXzE3OCIsImJuZHNfMTYwJDEiLCJhcmdfMTc2IiwiYm5kc18xNjAkMiIsImFyZ18xNzQiLCJibmRzXzE2MCQzIiwiYXJnXzE3MiIsImJuZHNfMTYwJDQiLCJhcmdfMTcwIiwiYm5kc18xNjAkNSIsImFyZ18xNjgiLCJibmRzXzE2MCQ2IiwiYXJnXzE2NiIsImJuZHNfMTYwJDciLCJhcmdfMTY0IiwiYm5kc18xNjAkOCIsImFyZ18xNjIiLCJibmRzXzE2MCQ5IiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWFrZV9jcmVhdG9yJDAiLCJtaW5vcl9oZWFwX3NpemVfZnVuIiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfZnVuIiwic3BhY2Vfb3ZlcmhlYWRfZnVuIiwidmVyYm9zZV9mdW4iLCJtYXhfb3ZlcmhlYWRfZnVuIiwic3RhY2tfbGltaXRfZnVuIiwiYWxsb2NhdGlvbl9wb2xpY3lfZnVuIiwid2luZG93X3NpemVfZnVuIiwiY3VzdG9tX21ham9yX3JhdGlvX2Z1biIsImN1c3RvbV9taW5vcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfbWF4X3NpemVfZnVuIiwibWlub3JfaGVhcF9zaXplX2dlbiIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2dlbiIsInNwYWNlX292ZXJoZWFkX2dlbiIsInZlcmJvc2VfZ2VuIiwibWF4X292ZXJoZWFkX2dlbiIsInN0YWNrX2xpbWl0X2dlbiIsImFsbG9jYXRpb25fcG9saWN5X2dlbiIsIndpbmRvd19zaXplX2dlbiIsImN1c3RvbV9tYWpvcl9yYXRpb19nZW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2dlbiIsIm1hcF9wb2x5JDAiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsImNvbXBhcmUkNyIsImVxdWFsJDUiLCJ0dW5lIiwibG9nZ2VyIiwib2xkX2NvbnRyb2xfcGFyYW1zIiwiZmllbGQiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJuZXdfY29udHJvbF9wYXJhbXMiLCJkaXNhYmxlX2NvbXBhY3Rpb24iLCJwb2xpY3kiLCJzdGF0X3NpemVfbGF6eSIsInN0YXRfc2l6ZSIsImtlZXBfYWxpdmUiLCJvIiwiaXNfemVyb19hbGxvYyIsIm1pbm9yX3dvcmRzX2JlZm9yZSIsIm1ham9yX3dvcmRzX2JlZm9yZSIsIm1pbm9yX3dvcmRzX2FmdGVyIiwibWFqb3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMTkwIiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzE4OCIsImFyZ18xOTEiLCJibmRzXzE4NyIsImFyZ18xODkiLCJibmRzXzE4NyQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzE5NyIsImlzX21ham9yXzE5NSIsInNpemVfaW5fd29yZHNfMTkzIiwiYXJnXzE5OCIsImJuZHNfMTkyIiwiYXJnXzE5NiIsImJuZHNfMTkyJDAiLCJhcmdfMTk0IiwiYm5kc18xOTIkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImluZm8iLCJiYWNrdHJhY2UiLCJiYWNrdHJhY2UkMCIsImluZm8kMCIsInRyYWNrZXIiLCJhZGRfZmluYWxpemVyIiwiYWRkX2ZpbmFsaXplcl9leG4iLCJhZGRfZmluYWxpemVyX2xhc3QiLCJhZGRfZmluYWxpemVyX2xhc3RfZXhuIiwiZmluYWxpemVfcmVsZWFzZSIsInNleHBfb2ZfdCQ4IiwiZXhwZWN0IiwiZXhwZWN0JDAiLCJzZXhwXzAwNiIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwidHlwZV9pZCIsInRvX3N0YWJsZV9mb3JtYXQiLCJvZl9zdGFibGVfZm9ybWF0Iiwib2ZfcXVpY2tjaGVja2FibGUiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwic2lnbmFsIiwiZiQwIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJvZl9hXzAwOSIsIm9mX2FfMDEyIiwieF8wMTMiLCJvZl9mb3JtYXQiLCJ0b19mb3JtYXQiLCJzZXRfYXQiLCJzZXRfaW50ZXJuYWwiLCJzZXRfaWZfbm9uZSIsInNldF9leG4iLCJnZXRfZXhuIiwicHJpbnQiLCJjYXRjaCQwIiwicHJpbnRfYmFja3RyYWNlIiwiZ2V0X2JhY2t0cmFjZSIsInJlY29yZF9iYWNrdHJhY2UiLCJiYWNrdHJhY2Vfc3RhdHVzIiwiY2FwdHVyZSIsImdlbmVyYWwiLCJoYXNoYWJsZSQxIiwiY2FjaGVfc2l6ZV9ib3VuZCIsImNhY2hlIiwicmVhbGx5X2NhbGxfZiIsIm1heF9jYWNoZV9zaXplIiwiY2FjaGUkMCIsInJlY3Vyc2l2ZSIsImZfb25lc3RlcCIsIm1lbW9pemVkIiwib2ZfY29tcGFyYWJsZSIsInYkMSIsImluaXRpYWxfbGVuZ3RoIiwibmV2ZXJfc2hyaW5rIiwibmV2ZXJfc2hyaW5rJDAiLCJpbml0aWFsX2xlbmd0aCQwIiwiYXJyX2xlbmd0aCIsImFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90XyIsImFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZSIsImFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbSIsImFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcCIsImNoZWNrZWQiLCJhcHBhcmVudF9mcm9udF9pbmRleCIsImFwcGFyZW50X2JhY2tfaW5kZXgiLCJkaXIiLCJhcHBhcmVudF9mcm9udCIsImFwcGFyZW50X2JhY2siLCJhY3R1YWxfZnJvbnQiLCJhY3R1YWxfYmFjayIsImFwcGFyZW50X2kiLCJyZWFsX2kiLCJzdG9wX3BvcyIsImFwcGFyZW50X2kkMCIsInJlYWxfaSQwIiwicmVhbF9pJDEiLCJhcHBhcmVudF9pJDEiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsIml0ZXJpX2ludGVybmFsIiwibmV3X2FyciIsIm9sZF9hcnIiLCJicmVha19wb3MiLCJtYXliZV9zaHJpbmtfdW5kZXJseWluZyIsImdyb3dfdW5kZXJseWluZyIsInBlZWtfZnJvbnRfbm9uZW1wdHkiLCJwZWVrX2JhY2tfbm9uZW1wdHkiLCJkZXF1ZXVlX2Zyb250X25vbmVtcHR5IiwiZGVxdWV1ZV9iYWNrX25vbmVtcHR5IiwiZHJvcF9nZW4iLCJhc3NlcnRfbm90X2VtcHR5IiwidHJ1ZV9pbmRleF9leG4iLCJpX2Zyb21femVybyIsInRydWVfaSIsImdldF9vcHQiLCJiYWNrX2luZGV4X2V4biIsImZyb250X2luZGV4X2V4biIsImdldCQwIiwidW50cmFuc2xhdGVkX2kiLCJlcHJpbnQiLCJlcHJpbnRzIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwic2V4cF9vZl9hcmciLCJzZXhwX29mX3Jlc3VsdCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwibWVzc2FnZSQwIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsInF1b3RlIiwiY29uY2F0X3F1b3RlZCIsInNwbGl0X2NvbW1hbmQiLCJzb3J0X2FuZF9hbGlnbiIsImFkZF91bml0IiwidW50aWxfZW1wdHkiLCJic3RyXzAwMiIsInBvc18wMDQiLCJsZW5fMDA2IiwiaW5pdF8wMDgiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJyZXNpemUiLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19idWYiLCJpbnRlcm5hbCIsImNvbnRlbnRzX2J5dGVzIiwiYmlnX2NvbnRlbnRzIiwidm9sYXRpbGVfY29udGVudHMiLCJhZGRfY2hhciIsInJlc2V0IiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3MiLCJhZGRfc3ViYnl0ZXMiLCJhZGRfYmlnc3RyaW5nIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJidWZfZHN0IiwiYnVmX3NyYyIsImFkZF9iaW5fcHJvdCIsImFkZF9zdWJzdGl0dXRlIiwibGltIiwic3Vic3QiLCJwcmV2aW91cyIsImkkNCIsInByZXZpb3VzJDAiLCJpJDUiLCJwcmV2aW91cyQxIiwiaSQ2Iiwib3BlbmluZyIsImxpbSQxIiwiaSQyIiwiaSQzIiwibmV3X3N0YXJ0IiwiayQyIiwiY2xvc2luZyIsImxpbSQwIiwiaSQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJpJDkiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwiZXJyb3Jfc291cmNlXzAxNyIsInZfaW5kZXgiLCJ2X21pbl9pbmRleCIsInZfbWF4X2luZGV4IiwiYXJnNV8wMDkiLCJhcmc0XzAwOCIsImFyZzNfMDA3IiwiYXJnMl8wMDYiLCJyZXMyXzAxMiIsInJlczNfMDEzIiwicmVzNF8wMTQiLCJyZXM1XzAxNSIsImFyZzVfMDIzIiwiYXJnNF8wMjIiLCJhcmczXzAyMSIsImFyZzJfMDIwIiwiYXJnMV8wMTkiLCJyZXM1XzAyOSIsIm9mIiwibGFiZWwiLCJjcmVhdGVfYWxsIiwibWF4X2luZGV4IiwibWluX2luZGV4IiwiemVyb19iYXNlZF9pbmRleCIsIm51bV9pbmRleGVzIiwiaG9zdF9hbmRfcG9ydCIsInBhcnNlJDAiLCJtYXBfYW5vbnMiLCJ0NCIsIm1heWJlX3dpdGhfZGVmYXVsdCIsIm1heWJlIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciIsIm1hcF9mbGFnIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIiwiZXNjYXBlIiwibm9fYXJnX2Fib3J0Iiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3NvbWUiLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmciLCJvbmVfb3JfbW9yZV9hc19saXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsImxpc3RlZCIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsInJlcXVpcmVkIiwib3B0aW9uYWxfdG9fcmVxdWlyZWQiLCJhcmdfbmFtZXMiLCJhbmRfYXJnX25hbWUiLCJhbmRfYXJnX25hbWVzIiwiY2hvb3NlX29uZV9ub25fb3B0aW9uYWwiLCJjaG9vc2Vfb25lIiwiZXNjYXBlX2Fub24iLCJhbm9uIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwiZmxhZyIsImhlbHAiLCJtYXAzIiwiYm90aCIsInBlcmNlbnQkMCIsImhvc3RfYW5kX3BvcnQkMCIsIm9mX3BhcmFtIiwidG9fcGFyYW0iLCJtYXBfYW5vbnMkMCIsInQ0JDAiLCJ0MyQwIiwibWF5YmVfd2l0aF9kZWZhdWx0JDAiLCJtYXliZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QkMCIsIm5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyJDAiLCJzZXF1ZW5jZSQwIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJtYXBfZmxhZyQwIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlJDAiLCJlc2NhcGUkMCIsIm5vX2FyZ19hYm9ydCQwIiwibm9fYXJnX3JlcXVpcmVkJDAiLCJub19hcmdfc29tZSQwIiwibm9fYXJnX3JlZ2lzdGVyJDAiLCJub19hcmckMCIsIm9uZV9vcl9tb3JlX2FzX2xpc3QkMCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIkMCIsImxpc3RlZCQwIiwib3B0aW9uYWxfd2l0aF9kZWZhdWx0JDAiLCJvcHRpb25hbCQwIiwicmVxdWlyZWQkMCIsIndyYXAiLCJwYWlyIiwiYXJnX25hbWVzJDAiLCJhbmRfYXJnX25hbWUkMCIsImFuZF9hcmdfbmFtZXMkMCIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsJDAiLCJjaG9vc2Vfb25lJDAiLCJlc2NhcGVfYW5vbiQwIiwiYW5vbiQwIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jJDAiLCJmbGFnJDAiLCJwYXRoJDAiLCJoZWxwJDAiLCJhbGxfdW5pdCQwIiwiYWxsJDAiLCJtYXAzJDAiLCJhcHBseSQwIiwic3ltYm9sX21hcCQwIiwiYm90aCQwIiwicmV0dXJuJDEiLCJwZXJjZW50JDEiLCJob3N0X2FuZF9wb3J0JDEiLCJkb2VzX3JhaXNlIiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJ2X3N1bW1hcnkiLCJ2X3JlYWRtZSIsInZfYW5vbnMiLCJ2X2ZsYWdzIiwiYmluX3NoYXBlX2EiLCJ2X3N1YmNvbW1hbmRzIiwidl93b3JraW5nX2RpciIsInZfcGF0aF90b19leGUiLCJ2X2NoaWxkX3N1YmNvbW1hbmQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwidiQzIiwidiQ0IiwidiQ1IiwidiQwIiwidiQxIiwidiQyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzAzMyIsImVycm9yX3NvdXJjZV8wNDkiLCJlcnJvcl9zb3VyY2VfMDcyIiwiZXJyb3Jfc291cmNlXzA4NiIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTUxIiwiZXJyb3Jfc291cmNlXzE5OSIsImVycm9yX3NvdXJjZV8yMDEiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwieF8wMzQiLCJhIiwiZyIsInNleHBfb2ZfdCQwIiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJhcmdfMDQzIiwiYm5kc18wMzUiLCJhcmdfMDQxIiwiYm5kc18wMzUkMCIsImFyZ18wMzkiLCJibmRzXzAzNSQxIiwiYXJnXzAzNyIsImJuZHNfMDM1JDIiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsInY0IiwidjMiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwidl9yIiwidl9nIiwidl9iIiwidl9hIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wNDQiLCJiXzA0NSIsIm4kMCIsIm4kMSIsImFfMDQ2IiwiYl8wNDciLCJ0X29mX3NleHAkMSIsInhfMDUwIiwibCIsImgiLCJzZXhwX29mX3QkMSIsImFfMDU4IiwibF8wNTYiLCJzXzA1NCIsImhfMDUyIiwiYXJnXzA1OSIsImJuZHNfMDUxIiwiYXJnXzA1NyIsImJuZHNfMDUxJDAiLCJhcmdfMDU1IiwiYm5kc18wNTEkMSIsImFyZ18wNTMiLCJibmRzXzA1MSQyIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ2X2giLCJ2X3MiLCJ2X2wiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzA2MCIsImJfMDYxIiwiYV8wNjIiLCJiXzA2MyIsImNyZWF0ZSQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzA2NyIsImF0b21fMDY1Iiwic2V4cF9hcmdzXzA2OCIsImF0b21fMDY1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwiYXJnMF8wNzQiLCJyZXMwXzA3NSIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwiYXJnMF8wODMiLCJyZXMwXzA4NCIsInRfb2Zfc2V4cCQzIiwic2V4cF8wODUiLCJzZXhwX29mX3QkMiIsInZfMDkyIiwidl8wOTEiLCJ2XzA4NyIsInZfMDg5Iiwidl8wODgiLCJ2XzA5MCIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDkzIiwiYl8wOTQiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInJpZ2h0XzA5NiIsImxlZnRfMDk1IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8wOTgiLCJsZWZ0XzA5NyIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTE0IiwiYXRvbV8xMTIiLCJzZXhwX2FyZ3NfMTE1IiwiYXRvbV8xMTIkMCIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJhcmcwXzEyNCIsInJlczBfMTI1IiwiYXJnMF8xNDgiLCJyZXMwXzE0OSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiYXJnMF8xMTciLCJyZXMwXzExOCIsImFyZzBfMTQ1IiwicmVzMF8xNDYiLCJhcmcwXzEzOSIsInJlczBfMTQwIiwiYXJnMF8xMzYiLCJyZXMwXzEzNyIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE1MCIsInNleHBfb2ZfdCQzIiwidl8xNjMiLCJ2XzE2MSIsInZfMTU5Iiwidl8xNTYiLCJ2XzE1NCIsInZfMTUyIiwidl8xNjIiLCJ2XzE2MCIsInZfMTU4Iiwidl8xNTUiLCJ2XzE1MyIsInZfMTU3IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzE2NCIsImJfMTY1IiwicmlnaHRfMTc1IiwibGVmdF8xNzQiLCJyaWdodF8xNzEiLCJsZWZ0XzE3MCIsInJpZ2h0XzE2NyIsImxlZnRfMTY2IiwicmlnaHRfMTg3IiwibGVmdF8xODYiLCJyaWdodF8xODUiLCJsZWZ0XzE4NCIsInJpZ2h0XzE4MSIsImxlZnRfMTgwIiwicmlnaHRfMTgzIiwibGVmdF8xODIiLCJyaWdodF8xNzkiLCJsZWZ0XzE3OCIsInJpZ2h0XzE3MyIsImxlZnRfMTcyIiwicmlnaHRfMTY5IiwibGVmdF8xNjgiLCJyaWdodF8xNzciLCJsZWZ0XzE3NiIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMTkwIiwiYl8xOTEiLCJ0X29mX3NleHAkNiIsInNleHBfMTk3IiwiYXRvbV8xOTUiLCJhdG9tXzE5NSQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzIwMCIsInNleHBfb2ZfdCQ0Iiwidl8yMDIiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiZW1wdHkiLCJpc19lbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsImxpbmVfaGVpZ2h0Iiwid2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfd2lkdGgiLCJoZWlnaHQiLCJtaW5faGVpZ2h0IiwibWF4X2hlaWdodCIsInBhZGRpbmdfdG9wIiwicGFkZGluZ19ib3R0b20iLCJwYWRkaW5nX2xlZnQiLCJwYWRkaW5nX3JpZ2h0IiwicGFkZGluZyIsInVuaWZvcm1fcGFkZGluZyIsIm1hcmdpbl90b3AiLCJtYXJnaW5fYm90dG9tIiwibWFyZ2luX2xlZnQiLCJtYXJnaW5fcmlnaHQiLCJtYXJnaW4iLCJ1bmlmb3JtX21hcmdpbiIsInJvd19nYXAiLCJjb2x1bW5fZ2FwIiwiY29uY2F0MnYiLCJjb25jYXQzdiIsImJvcmRlcl92YWx1ZSIsInN0eWxlJDAiLCJ3aWR0aCQwIiwiY29sb3IkMCIsImNyZWF0ZV9ib3JkZXIiLCJzaWRlIiwiYm9yZGVyX3RvcCIsImJvcmRlcl9ib3R0b20iLCJib3JkZXJfbGVmdCIsImJvcmRlcl9yaWdodCIsImJvcmRlciIsIm91dGxpbmUiLCJib3JkZXJfY29sbGFwc2UiLCJib3JkZXJfc3BhY2luZyIsImJvcmRlcl9yYWRpdXMiLCJ0ZXh0X2RlY29yYXRpb24iLCJsaW5lIiwibGluZSQwIiwiaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyIsImZsZXhfY29udGFpbmVyIiwiYWxpZ25faXRlbXMiLCJhbGlnbl9jb250ZW50IiwianVzdGlmeV9jb250ZW50IiwicmciLCJjZyIsImlubGluZSIsIndyYXAiLCJkaXJlY3Rpb24kMCIsIndyYXAkMCIsImFsaWduX2l0ZW1zJDAiLCJhbGlnbl9jb250ZW50JDAiLCJhJDEiLCJqdXN0aWZ5X2NvbnRlbnQkMCIsInJvd19nYXAkMCIsImNvbHVtbl9nYXAkMCIsImZsZXhfaXRlbSIsIm9yZGVyIiwiZ3JvdyIsImJhc2lzIiwic2hyaW5rIiwib3JkZXIkMCIsImJhc2lzJDAiLCJmbGV4IiwiYWxpZ25fc2VsZiIsInJlc2l6ZSIsInZhbHVlJDAiLCJhbmltYXRpb24iLCJkdXJhdGlvbiIsImRlbGF5IiwiZmlsbF9tb2RlIiwiaXRlcl9jb3VudCIsInRpbWluZ19mdW5jdGlvbiIsInNwYW5fdG9fc3RyaW5nIiwiZCIsImZpbGxfbW9kZSQwIiwidXNlcl9zZWxlY3QiLCJjc3MiLCJzMiIsIngiLCJ0b19qc19zdHJpbmciLCJ0b19qc19zdHJpbmdfZml4ZWQiLCJ0b19qc19zdHJpbmdfcHJlY2lzaW9uIiwidG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX2ZpeGVkIiwidG9fc3RyaW5nX3ByZWNpc2lvbiIsInRvX3N0cmluZ19leHBvbmVudGlhbCIsInByaW50IiwiZiIsInZpc2liaWxpdHlfaGFuZGxlcnMiLCJzZXF1ZW5jZV9hc19zaWJsaW5nIiwibGVmdCIsInVubGVzc19zdG9wcGVkIiwiY29udGFpbnNfc3RvcCIsImVzIiwiY3VycmVudF9kb21fZXZlbnQiLCJoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4iLCJoYW5kbGUiLCJkb21fZXZlbnQiLCJldmVudCIsIm9sZCIsInNleHBfb2ZfdCIsInZhbHVlIiwidHlwZV9pZCIsImdlbmVyaWNfaG9vayIsInBhY2siLCJpZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJpbml0IiwiaW5wdXRfaWQiLCJpbnB1dCIsImEiLCJpbml0JDAiLCJhJDAiLCJ1cGRhdGUkMCIsImRlc3Ryb3kkMCIsImdlbmVyaWNfaG9vayQwIiwiZXh0cmEiLCJjb21iaW5lIiwicmlnaHQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImVsZW1lbnQiLCJzdGF0ZSIsImFuaW1hdGlvbl9pZCIsIm9sZF9pbnB1dCIsImNyZWF0ZSIsImNvbWJpbmVfaW5wdXRzIiwic2V0IiwiZ2V0IiwiZGVsZXRlJDAiLCJzZXRfcHJvcF9hc2NpaSIsInQiLCJuYW1lIiwiZ2V0X3Byb3BfYXNjaWkiLCJoYXNfcHJvcGVydHkiLCJzZXRfcHJvcGVydHkiLCJoYXNfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZSIsInRvX2RvbSIsIm5vZGUiLCJ0YWciLCJhdHRycyIsImNoaWxkcmVuIiwia2V5Iiwia2V5JDAiLCJzdmciLCJ0ZXh0IiwicyIsInBhdGNoIiwiY3JlYXRlJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpc19lbXB0eSIsImZfaWQiLCJpZF9zZXhwIiwiY3JlYXRlJDEiLCJ2ZG9tX2Zvcl90ZXN0aW5nIiwiZWx0IiwiZG9tX25vZGUiLCJzMCIsInByZXZfc3RhdGUiLCJkb21fbm9kZSQwIiwibmFtZSQyIiwibmFtZSQxIiwibmFtZSQwIiwiZW1wdHkiLCJyaGFuZGxlciIsInhfMDAyIiwibGhhbmRsZXIiLCJ4XzAwMSIsImNyZWF0ZV9mbG9hdCIsInByb3BlcnR5Iiwic3RyaW5nX3Byb3BlcnR5IiwiYm9vbF9wcm9wZXJ0eSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzIiwiY3JlYXRlX2hvb2siLCJob29rIiwibWFueSIsIm1hbnlfd2l0aG91dF9tZXJnZSIsImNvbWJpbmUkMCIsIndhcm5pbmdfY291bnQiLCJ3YXJuX3MiLCJxdW90YSIsIndhcm5pbmdfY291bnQkMCIsInJlc2V0X3dhcm5pbmdfY291bnQiLCJjb21iaW5pbmdfbWFwX2FkZCIsIm1hcCIsImV4aXN0aW5nX3ZhbHVlIiwiZW1wdHlfbWVyZ2UiLCJzdHlsZSIsImNzcyIsImNsYXNzJDAiLCJjbGFzc25hbWUiLCJjbGFzc2VzIiwiY2xhc3NlcyQwIiwiY2xhc3NuYW1lcyIsImhyZWYiLCJyIiwibGFiZWwiLCJ0YXJnZXQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJoaWRkZW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJ4IiwiYXV0b2ZvY3VzIiwiZm9yJDAiLCJ0eXBlIiwidmFsdWVfcHJvcCIsInRhYmluZGV4IiwidGl0bGUiLCJhbHQiLCJzcmMiLCJvcGVuIiwic3RhcnQiLCJtaW4iLCJtYXgiLCJtaW5fZGF0ZSIsIm1heF9kYXRlIiwibWluX2RhdGVfdGltZSIsIm1heF9kYXRlX3RpbWUiLCJjb2xzcGFuIiwicm93c3BhbiIsImRyYWdnYWJsZSIsImIiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJjbGlwYm9hcmQiLCJkcmFnIiwicG9pbnRlciIsImFuaW1hdGlvbiIsIm9uIiwiaGFuZGxlciIsIm9uX2ZvY3VzIiwib25fYmx1ciIsIm9uX2NsaWNrIiwib25fY29udGV4dG1lbnUiLCJvbl9kb3VibGVfY2xpY2siLCJvbl9kcmFnIiwib25fZHJhZ3N0YXJ0Iiwib25fZHJhZ2VuZCIsIm9uX2RyYWdlbnRlciIsIm9uX2RyYWdsZWF2ZSIsIm9uX2RyYWdvdmVyIiwib25fZHJvcCIsIm9uX21vdXNlbW92ZSIsIm9uX21vdXNldXAiLCJvbl9tb3VzZWRvd24iLCJvbl9tb3VzZWVudGVyIiwib25fbW91c2VsZWF2ZSIsIm9uX21vdXNlb3ZlciIsIm9uX21vdXNlb3V0Iiwib25fa2V5dXAiLCJvbl9rZXlwcmVzcyIsIm9uX2tleWRvd24iLCJvbl9zY3JvbGwiLCJvbl9sb2FkIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fd2hlZWwiLCJvbl9jb3B5Iiwib25fY3V0Iiwib25fcGFzdGUiLCJvbl9yZXNldCIsIm9uX2FuaW1hdGlvbmVuZCIsImNvbnN0X2lnbm9yZSIsInJ1bl9jb2VyY2lvbiIsImNvZXJjaW9uIiwicHJldiIsIm9uX2lucHV0X2V2ZW50Iiwib25fY2hhbmdlIiwib25faW5wdXQiLCJ0b19yYXciLCJhdHRyIiwiYXR0cnNfb2JqIiwidGFrZV9zZWNvbmRfc3R5bGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJ0YWtlX3NlY29uZF9jbGFzc2VzIiwiZmlyc3QkMCIsImFfMDAzIiwiYl8wMDQiLCJzZWNvbmQkMCIsImFfMDA1IiwiYl8wMDYiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwic2V4cF9vZl90JDAiLCJ4XzAxMyIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiY29tYmluZSQyIiwib25fbW91bnQkMCIsIm5ld19pbnB1dCIsImFfMDE2IiwiYl8wMTciLCJ0XzAxOSIsInRfMDE4IiwidF8wMjEiLCJ0XzAyMCIsImNzc192YXJzX25vX2tlYmFicyIsImFsaXN0IiwiY3NzX3ZhciIsImZpbHRlcl9ieV9raW5kIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsImV2ZW50X2tpbmQkMSIsImV2ZW50X2tpbmQkMiIsImV2ZW50X2tpbmQkMyIsImV2ZW50X2tpbmQkNCIsImV2ZW50X2tpbmQkNSIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJjbGljayIsImNvbnRleHRtZW51Iiwia2V5ZG93biIsImJlZm9yZXVubG9hZCIsImYkMCIsInZpc2liaWxpdHljaGFuZ2UiLCJtb3VzZXVwX3R5cGVfaWQiLCJtb3VzZW1vdmVfdHlwZV9pZCIsImtleWRvd25fdHlwZV9pZCIsImNsaWNrX3R5cGVfaWQiLCJjb250ZXh0bWVudV90eXBlX2lkIiwidmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkIiwiYmVmb3JldW5sb2FkX3R5cGVfaWQiLCJ2ZG9tX3RodW5rIiwiYXJnIiwia2V5JDEiLCJyZXMxXzAwOSIsIndpdGhfa2V5IiwibWFwX2F0dHJzIiwicmF3X2F0dHJzIiwiYWRkX2NsYXNzZXMiLCJ0X3RvX2pzIiwidyIsInRfdG9fanNfbGF6eSIsImtpbmQiLCJvdGhlciIsImxhenkiLCJlbGVtZW50X2V4cGVydCIsIndpZGdldCIsInZkb21fZm9yX3Rlc3RpbmckMCIsImNyZWF0ZV9jaGlsZGxlc3MiLCJjcmVhdGVfc3ZnIiwidGV4dGYiLCJmb3JtYXQiLCJ3aWRnZXRfb2ZfbW9kdWxlIiwibSIsImFyZzBfMDA2Iiwic3RhdGVfMDA0IiwiaW5wdXRfMDAyIiwiYXJnXzAwNSIsImJuZHNfMDAxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDAiLCJyZXMwXzAwOCIsInByZXZfaW5wdXQiLCJlbGVtZW50JDAiLCJzdGF0ZSQwIiwiaSIsIndpZGdldCQwIiwiY29udGVudCIsIm92ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmciLCJwcmV2X2F0dHIiLCJwcmV2X3RhZyIsInByZXZfY29udGVudCIsImlubmVyX2h0bWxfc3ZnIiwiaW5uZXJfaHRtbCIsImFiYnIiLCJib2R5IiwiYnV0dG9uIiwiY29kZSIsImRhdGFsaXN0IiwiZGV0YWlscyIsImRpdiIsIm1haW4iLCJmaWVsZHNldCIsImxlZ2VuZCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImh0bWwiLCJpbWciLCJpbnB1dF9kZXByZWNhdGVkIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJvcHRncm91cCIsIm9wdGlvbiIsImxpIiwicCIsInByZSIsInNlY3Rpb24iLCJzcGFuIiwic3Ryb25nIiwiZW0iLCJibG9ja3F1b3RlIiwic3VtbWFyeSIsImlmcmFtZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwiZGwiLCJkdCIsImRkIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsImFwcGx5IiwiY3JlYXRlJDIiLCJjcmVhdGVfc3ZnJDAiLCJoZXJlIiwiZXJyb3Jfc291cmNlXzAwNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInZhbGlkYXRlIiwidCIsImVxdWFsIiwidDEiLCJ0MiIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJzZXhwX29mX3QkMSIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJzZXhwX29mX3QiLCJ2XzAwNiIsInNsb3RzX3Blcl90dXBsZV8wMDIiLCJhcmdfMDAzIiwiYm5kc18wMDEiLCJzZXhwX29mX3QkMCIsIm9mX3R1cGxlXzAwNyIsIm9mX3ZhcmlhbnRfMDA4Iiwic2xvdHNfcGVyX3R1cGxlIiwibiIsInNleHBfb2ZfdDEiLCJvZl9hMF8wMDkiLCJzZXhwX29mX3QyIiwib2ZfYTBfMDEwIiwib2ZfYTFfMDExIiwic2V4cF9vZl90MyIsIm9mX2EwXzAxMiIsIm9mX2ExXzAxMyIsIm9mX2EyXzAxNCIsInNleHBfb2ZfdDQiLCJvZl9hMF8wMTUiLCJvZl9hMV8wMTYiLCJvZl9hMl8wMTciLCJvZl9hM18wMTgiLCJzZXhwX29mX3Q1Iiwib2ZfYTBfMDE5Iiwib2ZfYTFfMDIwIiwib2ZfYTJfMDIxIiwib2ZfYTNfMDIyIiwib2ZfYTRfMDIzIiwic2V4cF9vZl90NiIsIm9mX2EwXzAyNCIsIm9mX2ExXzAyNSIsIm9mX2EyXzAyNiIsIm9mX2EzXzAyNyIsIm9mX2E0XzAyOCIsIm9mX2E1XzAyOSIsInNleHBfb2ZfdDciLCJvZl9hMF8wMzAiLCJvZl9hMV8wMzEiLCJvZl9hMl8wMzIiLCJvZl9hM18wMzMiLCJvZl9hNF8wMzQiLCJvZl9hNV8wMzUiLCJvZl9hNl8wMzYiLCJzZXhwX29mX3Q4Iiwib2ZfYTBfMDM3Iiwib2ZfYTFfMDM4Iiwib2ZfYTJfMDM5Iiwib2ZfYTNfMDQwIiwib2ZfYTRfMDQxIiwib2ZfYTVfMDQyIiwib2ZfYTZfMDQzIiwib2ZfYTdfMDQ0Iiwic2V4cF9vZl90OSIsIm9mX2EwXzA0NSIsIm9mX2ExXzA0NiIsIm9mX2EyXzA0NyIsIm9mX2EzXzA0OCIsIm9mX2E0XzA0OSIsIm9mX2E1XzA1MCIsIm9mX2E2XzA1MSIsIm9mX2E3XzA1MiIsIm9mX2E4XzA1MyIsInNleHBfb2ZfdDEwIiwib2ZfYTBfMDU0Iiwib2ZfYTFfMDU1Iiwib2ZfYTJfMDU2Iiwib2ZfYTNfMDU3Iiwib2ZfYTRfMDU4Iiwib2ZfYTVfMDU5Iiwib2ZfYTZfMDYwIiwib2ZfYTdfMDYxIiwib2ZfYThfMDYyIiwib2ZfYTlfMDYzIiwic2V4cF9vZl90MTEiLCJvZl9hMF8wNjQiLCJvZl9hMV8wNjUiLCJvZl9hMl8wNjYiLCJvZl9hM18wNjciLCJvZl9hNF8wNjgiLCJvZl9hNV8wNjkiLCJvZl9hNl8wNzAiLCJvZl9hN18wNzEiLCJvZl9hOF8wNzIiLCJvZl9hOV8wNzMiLCJvZl9hMTBfMDc0Iiwic2V4cF9vZl90MTIiLCJvZl9hMF8wNzUiLCJvZl9hMV8wNzYiLCJvZl9hMl8wNzciLCJvZl9hM18wNzgiLCJvZl9hNF8wNzkiLCJvZl9hNV8wODAiLCJvZl9hNl8wODEiLCJvZl9hN18wODIiLCJvZl9hOF8wODMiLCJvZl9hOV8wODQiLCJvZl9hMTBfMDg1Iiwib2ZfYTExXzA4NiIsInNleHBfb2ZfdDEzIiwib2ZfYTBfMDg3Iiwib2ZfYTFfMDg4Iiwib2ZfYTJfMDg5Iiwib2ZfYTNfMDkwIiwib2ZfYTRfMDkxIiwib2ZfYTVfMDkyIiwib2ZfYTZfMDkzIiwib2ZfYTdfMDk0Iiwib2ZfYThfMDk1Iiwib2ZfYTlfMDk2Iiwib2ZfYTEwXzA5NyIsIm9mX2ExMV8wOTgiLCJvZl9hMTJfMDk5Iiwic2V4cF9vZl90MTQiLCJvZl9hMF8xMDAiLCJvZl9hMV8xMDEiLCJvZl9hMl8xMDIiLCJvZl9hM18xMDMiLCJvZl9hNF8xMDQiLCJvZl9hNV8xMDUiLCJvZl9hNl8xMDYiLCJvZl9hN18xMDciLCJvZl9hOF8xMDgiLCJvZl9hOV8xMDkiLCJvZl9hMTBfMTEwIiwib2ZfYTExXzExMSIsIm9mX2ExMl8xMTIiLCJvZl9hMTNfMTEzIiwibmFtZSQxIiwicHJlZml4IiwibmFtZSQwIiwibmFtZSIsImZhaWx3aXRocyIsImFyY2hfc2l4dHlmb3VyIiwibnVtX2JpdHMiLCJtYXhfdmFsdWUiLCJ0b19zdHJpbmciLCJzcHJpbnRmIiwiY29uY2F0IiwibCIsIm9mX3Nsb3RzXzAwNyIsIm9mX2FfMDA4IiwiZXF1YWwiLCJtYXhfc2xvdCIsImFycmF5X2luZGV4X251bV9iaXRzIiwibWFza2VkX3R1cGxlX2lkX251bV9iaXRzIiwibWF4X2FycmF5X2xlbmd0aCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInQiLCJwaHlzX2VxdWFsIiwicGh5c19jb21wYXJlIiwibnVsbCQwIiwiaXNfbnVsbCIsImNyZWF0ZSIsImhlYWRlcl9pbmRleCIsInR1cGxlX2lkIiwiaGVhZGVyX2luZGV4X21hc2siLCJpbnZhcmlhbnQiLCJzbG90X2luZGV4Iiwic2xvdCIsImZpcnN0X3Nsb3RfaW5kZXgiLCJ0b19pbnQ2MyIsIm9mX2ludDYzIiwibnVsbCQxIiwiaXNfbnVsbCQwIiwiaXNfZnJlZSIsImlzX3VzZWQiLCJ0dXBsZV9pZCQwIiwibWV0YWRhdGFfaW5kZXgiLCJzdGFydF9vZl90dXBsZXNfaW5kZXgiLCJtYXhfY2FwYWNpdHkiLCJkdW1teSIsInIiLCJmaXJzdF9mcmVlIiwic2V0X2ZpcnN0X2ZyZWUiLCJ2IiwibmV4dF9pZCIsInNldF9uZXh0X2lkIiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImNhcGFjaXR5IiwiZHVtbXkkMCIsImZpcnN0X2ZyZWUkMCIsIm5leHRfaWQkMCIsImxlbmd0aCQwIiwiY2FwYWNpdHkkMCIsInNsb3RzX3Blcl90dXBsZSQwIiwiaW5pdCIsImFycmF5X2luZGljZXNfcGVyX3R1cGxlIiwiYXJyYXlfbGVuZ3RoIiwidHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCIsInR1cGxlX251bSIsInR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IiwibWV0YWRhdGEiLCJsZW5ndGgkMSIsInNleHBfb2ZfdCQzIiwic2V4cF9vZl90eSIsImNhcGFjaXR5XzAxOCIsInNsb3RzX3Blcl90dXBsZV8wMTYiLCJsZW5ndGhfMDIwIiwibmV4dF9pZF8wMjIiLCJmaXJzdF9mcmVlXzAyNCIsImR1bW15XzAyNiIsImFyZ18wMjciLCJibmRzXzAxNSIsImFyZ18wMjUiLCJibmRzXzAxNSQwIiwiYXJnXzAyMyIsImJuZHNfMDE1JDEiLCJhcmdfMDIxIiwiYm5kc18wMTUkMiIsImFyZ18wMTkiLCJibmRzXzAxNSQzIiwiYXJnXzAxNyIsImJuZHNfMDE1JDQiLCJ1bnNhZmVfaGVhZGVyIiwidW5zYWZlX3NldF9oZWFkZXIiLCJoZWFkZXIiLCJoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIiwidW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSIsInBvaW50ZXIiLCJ0JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMSIsImlkIiwic2hvdWxkX2VxdWFsIiwieF8wMDkiLCJleG4kMCIsImV4biIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsImFyZzBfMDI4IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInJlczJfMDMzIiwiaW52YXJpYW50JDAiLCJpbnZhcmlhbnRfYSIsImZyZWUiLCJoZWFkZXJfaW5kZXgkMCIsInR1cGxlX251bSQwIiwiZmlyc3Rfc2xvdCIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiY2FwYWNpdHkkMSIsImlzX2Z1bGwiLCJ1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCIsIm5leHRfZnJlZV9oZWFkZXJfaW5kZXgiLCJzZXRfbWV0YWRhdGEiLCJjcmVhdGVfYXJyYXkiLCJ1bnNhZmVfaW5pdF9yYW5nZSIsImxvIiwiaGkiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJ0cyIsImFyZyIsInNleHBfb2ZfYXJnIiwic2V4cF9vZl9yZXN1bHQiLCJmIiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ2XzA2OCIsInhfMDY5IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2Iiwib2Zfc2xvdHNfMDc3IiwiaXNfdmFsaWRfMDc5IiwicG9pbnRlcl8wODEiLCJhcmdfMDgyIiwiYm5kc18wNzgiLCJhcmdfMDgwIiwiYm5kc18wNzgkMCIsImZpZWxkMCIsImZpZWxkMSIsInR5cGVuYW1lIiwiaGFzX2RvdWJsZV9hcnJheV90YWciLCJmaWVsZHMiLCJpc192YWxpZCIsImZvbGxvdyIsInhfMDgzIiwiaW52YWxpZGF0ZSIsInBvcyQ5IiwicG9zJDgiLCJwb3MkNyIsInBvcyQ2IiwiYXJnXzA4NyIsInBvcyQ1IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsImVycm9yX3NvdXJjZV8wMTkiLCJtYXhfdGltZSIsIm1pbl90aW1lIiwibWF4X251bV9iaXRzIiwibWluX3ZhbHVlIiwiaW52YXJpYW50IiwidCIsIm9mX2ludCIsImkiLCJzeW1ib2wkMiIsInQxIiwidDIiLCJzeW1ib2wkMyIsInBvdzIiLCJzZXhwX29mX3QkMCIsInhfMDA3IiwibnVtX2JpdHNfaW50ZXJuYWwiLCJudW1fYml0cyIsImludmFyaWFudCQwIiwibnVtX2tleV9iaXRzIiwidF9vZl9zZXhwJDAiLCJ4XzAwNiIsImNyZWF0ZV9leG4iLCJ4XzAwOCIsImV4dGVuZF90b19tYXhfbnVtX2JpdHMiLCJiaXRzIiwiaW50cyIsImxldmVsX2JpdHNfZGVmYXVsdCIsImNvbXBhcmUiLCJlcXVhbCQwIiwieF8wMTIiLCJ4XzAxMyIsInRvX3NleHBhYmxlIiwic2V4cF9vZl90JDEiLCJhYm91dF9vbmVfbWljcm9zZWNvbmQiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJsZXZlbF9iaXRzJDAiLCJ2IiwidF9vZl9zZXhwJDIiLCJ4XzAyMSIsImNhcGFjaXR5IiwiYWxhcm1fcHJlY2lzaW9uIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wMjciLCJsZXZlbF9iaXRzXzAyNSIsImFsYXJtX3ByZWNpc2lvbl8wMjMiLCJibmRzXzAyMiIsInZfMDI4IiwiYXJnXzAzMCIsImJuZF8wMjkiLCJibmRzXzAyMiQwIiwiYXJnXzAyNiIsImJuZHNfMDIyJDEiLCJhcmdfMDI0IiwiYm5kc18wMjIkMiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJsb29wIiwicmVtYWluaW5nIiwidCQwIiwiYiIsIm1pY3Jvc2Vjb25kX3ByZWNpc2lvbiIsImR1cmF0aW9ucyIsIm51bV9iaXRzX2FjY3VtIiwibGV2ZWxfbnVtX2JpdHMiLCJudW1fYml0c19hY2N1bSQwIiwiZHVyYXRpb24iLCJjb21wYXJlJDAiLCJzZXhwX29mX3QkNCIsImNyZWF0ZSQwIiwiY3JlYXRlJDEiLCJiaXRzX3Blcl9zbG90IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsInNjYWxlX2ludCIsInNleHBfb2ZfdCQ3Iiwib2ZfaW50NjMkMCIsInRvX2ludDYzJDAiLCJhZGQiLCJhZGRfY2xhbXBfdG9fbWF4Iiwic3ViIiwiZGlmZiIsInNleHBfb2ZfcG9vbF9zbG90cyIsIm9mX2FfMDMzIiwieF8wMzQiLCJzZXhwX29mX3QkOCIsIm9mX2FfMDM1IiwieF8wMzYiLCJudWxsJDAiLCJudWxsJDEiLCJpc19udWxsIiwiZnJlZSIsImtleSIsInAiLCJhdCIsInZhbHVlIiwibGV2ZWxfaW5kZXgiLCJwcmV2Iiwic2V0X3ByZXYiLCJ4IiwibmV4dCIsInNldF9uZXh0IiwiaXNfdmFsaWQiLCJncm93IiwiaXNfZnVsbCIsIm9mX2V4dGVybmFsX2V4biIsInBvb2wiLCJsaW5rIiwiaXRlciIsImZpcnN0IiwiZiIsImN1cnJlbnQiLCJjb250aW51ZSQwIiwibmV4dCQwIiwic2xvdHMiLCJtYXhfYWxsb3dlZF9rZXkiLCJzZXRfbWF4X2FsbG93ZWRfa2V5IiwibWluX2FsbG93ZWRfa2V5Iiwic2V0X21pbl9hbGxvd2VkX2tleSIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDQ0IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA1OCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDU2Iiwia2V5c19wZXJfc2xvdF8wNTQiLCJiaXRzX3Blcl9zbG90XzA1MiIsInNsb3RzX21hc2tfMDUwIiwiYml0c18wNDgiLCJpbmRleF8wNDYiLCJsZW5ndGhfMDYwIiwibWluX2FsbG93ZWRfa2V5XzA2MiIsIm1heF9hbGxvd2VkX2tleV8wNjQiLCJzbG90c18wNjYiLCJhcmdfMDY3IiwiYm5kc18wNDUiLCJhcmdfMDY1IiwiYm5kc18wNDUkMCIsImFyZ18wNjMiLCJibmRzXzA0NSQxIiwiYXJnXzA2MSIsImJuZHNfMDQ1JDIiLCJhcmdfMDU5IiwiYm5kc18wNDUkMyIsImFyZ18wNTciLCJibmRzXzA0NSQ0IiwiYXJnXzA1NSIsImJuZHNfMDQ1JDUiLCJhcmdfMDUzIiwiYm5kc18wNDUkNiIsImFyZ18wNTEiLCJibmRzXzA0NSQ3IiwiYXJnXzA0OSIsImJuZHNfMDQ1JDgiLCJhcmdfMDQ3IiwiYm5kc18wNDUkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsImNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkiLCJsZXZlbHMiLCJlbHRfa2V5X2xvd2VyX2JvdW5kIiwic2V0X2VsdF9rZXlfbG93ZXJfYm91bmQiLCJtaW5fZWx0Iiwic2V0X21pbl9lbHQiLCJzZXRfcG9vbCIsImxlbmd0aCQxIiwic2V0X2xlbmd0aCQwIiwibGV2ZWxzJDAiLCJlbHRfa2V5X2xvd2VyX2JvdW5kJDAiLCJtaW5fZWx0JDAiLCJwb29sJDAiLCJsZW5ndGgkMiIsImlzX2VtcHR5IiwibnVtX2xldmVscyIsIm1pbl9hbGxvd2VkX2tleSQxIiwibWF4X2FsbG93ZWRfa2V5JDEiLCJpbnRlcm5hbF9pdGVyIiwibGV2ZWwiLCJzbG90X2luZGV4IiwiZWx0IiwiY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rIiwibWluX2VsdCQxIiwibWluX2VsdF9hbHJlYWR5X2ZvdW5kIiwibWluX2tleV9hbHJlYWR5X2ZvdW5kIiwibnVtX2xldmVscyQwIiwic2xvdF9taW5fa2V5Iiwic2xvdCQwIiwiY3VycmVudF9rZXkiLCJhZGRfZWx0IiwieF8xMTQiLCJ0b19hZGQiLCJrZXkkMCIsImVsdHNfMDk0IiwibWF4X2FsbG93ZWRfa2V5XzA5MiIsIm1pbl9hbGxvd2VkX2tleV8wOTAiLCJhcmdfMDk1Iiwia2V5XzA4NCIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJyJDAiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTQ2Iiwic3RhcnRfMTQ0IiwiY29uZmlnXzE0MiIsIm5vd18xNDgiLCJhbGFybSIsImFsYXJtc18xNTAiLCJhcmdfMTUxIiwidmFsdWVfMTM4IiwiYXRfMTM2IiwiYXJnXzEzOSIsImJuZHNfMTM1IiwiYXJnXzEzNyIsImJuZHNfMTM1JDAiLCJibmRzXzE0MSIsImFyZ18xNDkiLCJibmRzXzE0MSQwIiwiYXJnXzE0NyIsImJuZHNfMTQxJDEiLCJhcmdfMTQ1IiwiYm5kc18xNDEkMiIsImFyZ18xNDMiLCJibmRzXzE0MSQzIiwibGVuZ3RoJDMiLCJpc19lbXB0eSQwIiwicG9vbCQxIiwiaW50ZXJ2YWxfbnVtX2ludGVybmFsIiwidGltZSIsImludGVydmFsX251bV91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW0kMCIsImludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW1fc3RhcnQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIiwibmV4dF9hbGFybV9maXJlc19hdCIsIm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIiwieF8xNTMiLCJjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtIiwibWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIiwiaW50ZXJ2YWxfc3RhcnQiLCJpbnZhcmlhbnQkMiIsImludmFyaWFudF9hIiwieF8xNTUiLCJjaGVjayIsInByaW9yaXR5X3F1ZXVlX2Z1biIsInhfMTA5Iiwib2ZfYV8wNjgiLCJsZW5ndGhfMDcwIiwicG9vbF8wNzIiLCJtaW5fZWx0XzA3NCIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDc2IiwibGV2ZWxzXzA3OCIsImFyZ18wNzkiLCJibmRzXzA2OSIsImFyZ18wNzciLCJibmRzXzA2OSQwIiwiYXJnXzA3NSIsImJuZHNfMDY5JDEiLCJhcmdfMDczIiwiYm5kc18wNjkkMiIsImFyZ18wNzEiLCJibmRzXzA2OSQzIiwibGV2ZWxzX2Z1biIsInhfMDk4Iiwic2xvdHNfZnVuIiwieF8wNDEiLCJuIiwibWF4X2FsbG93ZWRfa2V5X2Z1biIsImV4cGVjdCIsImNvbXBhcmF0b3IiLCJhXzEwNyIsImJfMTA4IiwibWluX2FsbG93ZWRfa2V5X2Z1biIsImdvdCIsInNleHBpZmllciIsImFfMTA1IiwiYl8xMDYiLCJsZW5ndGhfZnVuIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5X2Z1biIsImV0YSIsImFfMTAzIiwiYl8xMDQiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrX2Z1biIsImtleXNfcGVyX3Nsb3RfZnVuIiwiYV8xMDEiLCJiXzEwMiIsImJpdHNfcGVyX3Nsb3RfZnVuIiwiZXhwZWN0JDAiLCJzbG90c19tYXNrX2Z1biIsImFfMDk5IiwiYl8xMDAiLCJiaXRzX2Z1biIsImluZGV4X2Z1biIsInByZXZfbGV2ZWwiLCJnb3QkMCIsImFfMTEwIiwiYl8xMTEiLCJjb21wYXJhdG9yJDAiLCJhXzExMiIsImJfMTEzIiwiZWx0X2tleV9sb3dlcl9ib3VuZF9mdW4iLCJtaW5fZWx0X2Z1biIsInBvb2xfZnVuIiwibWF4X2FsbG93ZWRfYWxhcm1fdGltZV9mdW4iLCJhXzE2MiIsImJfMTYzIiwibm93X2ludGVydmFsX251bV9zdGFydF9mdW4iLCJhXzE2MCIsImJfMTYxIiwibm93X2Z1biIsIm1heF9pbnRlcnZhbF9udW1fZnVuIiwiYV8xNTYiLCJiXzE1NyIsInNleHBpZmllciQwIiwiYV8xNTgiLCJiXzE1OSIsInN0YXJ0X2Z1biIsImNvbmZpZ19mdW4iLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJ0JDEiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTY0IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTY1IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE2NiIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDE1IiwiZXJyb3Jfc291cmNlXzAyOCIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDM2IiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInhfMDA3IiwiaG93X3RvX2R1bXAiLCJkdW1wX2lmX2RlbGF5ZWRfYnkiLCJzZXhwX29mX3dhdGNoIiwiaG93X3RvX2R1bXBfMDExIiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOSIsImFyZ18wMTIiLCJibmRzXzAwOCIsImFyZ18wMTAiLCJibmRzXzAwOCQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzAxNyIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfb2ZfdCQ3IiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsInRfb2Zfc2V4cCQ4Iiwic2V4cF8wMjkiLCJzZXhwX29mX3QkOCIsImVxdWFsJDAiLCJ4XzAzMCIsInhfMDMxIiwidF9vZl9zZXhwJDkiLCJzZXhwXzAzNyIsInNleHBfb2ZfdCQ5IiwidF9vZl9zZXhwJDEwIiwic2V4cF9vZl90JDEwIiwidGltaW5nX3doZWVsX2NvbmZpZyIsInIiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyIsIm1heF9udW1fdGhyZWFkcyIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0IiwiZmlsZV9kZXNjcl93YXRjaGVyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIiLCJjaGVja19pbnZhcmlhbnRzIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfIiwidGltaW5nX3doZWVsX2NvbmZpZyQwIiwidiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eSQwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQwIiwicmVjb3JkX2JhY2t0cmFjZXMkMCIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQwIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQkMCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQwIiwibWF4X251bV90aHJlYWRzJDAiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMCIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMCIsImVwb2xsX21heF9yZWFkeV9ldmVudHMkMCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMCIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQwIiwiY2hlY2tfaW52YXJpYW50cyQwIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfJDAiLCJzZXhwX29mX3QkMTEiLCJ0aW1pbmdfd2hlZWxfY29uZmlnXzEwMiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eV8wOTgiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXzAiLCJyZWNvcmRfYmFja3RyYWNlc18wOTAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDg2IiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXRfMDgyIiwibWF4X251bV90aHJlYWRzXzA3NCIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc18wNzAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dF8wNjYiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNTgiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5XzA1NCIsImNoZWNrX2ludmFyaWFudHNfMDQ2IiwiYm5kc18wNDEiLCJ2XzEwMyIsImFyZ18xMDUiLCJibmRfMTA0IiwiYm5kc18wNDEkMCIsInZfMDk5IiwiYXJnXzEwMSIsImJuZF8xMDAiLCJibmRzXzA0MSQxIiwidl8wOTUiLCJhcmdfMDk3IiwiYm5kXzA5NiIsImJuZHNfMDQxJDIiLCJ2XzA5MSIsImFyZ18wOTMiLCJibmRfMDkyIiwiYm5kc18wNDEkMyIsInZfMDg3IiwiYXJnXzA4OSIsImJuZF8wODgiLCJibmRzXzA0MSQ0Iiwidl8wODMiLCJhcmdfMDg1IiwiYm5kXzA4NCIsImJuZHNfMDQxJDUiLCJ2XzA3OSIsImFyZ18wODEiLCJibmRfMDgwIiwiYm5kc18wNDEkNiIsInZfMDc1IiwiYXJnXzA3NyIsImJuZF8wNzYiLCJibmRzXzA0MSQ3Iiwidl8wNzEiLCJhcmdfMDczIiwiYm5kXzA3MiIsImJuZHNfMDQxJDgiLCJ2XzA2NyIsImFyZ18wNjkiLCJibmRfMDY4IiwiYm5kc18wNDEkOSIsInZfMDYzIiwiYXJnXzA2NSIsImJuZF8wNjQiLCJibmRzXzA0MSQxMCIsInZfMDU5IiwiYXJnXzA2MSIsImJuZF8wNjAiLCJibmRzXzA0MSQxMSIsInZfMDU1IiwiYXJnXzA1NyIsImJuZF8wNTYiLCJibmRzXzA0MSQxMiIsInZfMDUxIiwiYXJnXzA1MyIsImJuZF8wNTIiLCJibmRzXzA0MSQxMyIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MSQxNCIsInZfMDQzIiwiYXJnXzA0NSIsImJuZF8wNDQiLCJibmRzXzA0MSQxNSIsImNyZWF0ZSQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2ZvIiwid29yZF9zaXplIiwibGV2ZWxfYml0cyQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJkZWZhdWx0JDEiLCJleGFtcGxlIiwidXNhZ2UiLCJmaWVsZCIsInRvX3NleHAiLCJkZXNjcmlwdGlvbiIsImFjIiwiZCIsImZpZWxkcyIsInhfMTA2IiwibmFtZTIiLCJuYW1lMSIsIm5hbWUiLCJzdHJpbmciLCJ4XzA0MCIsInQiLCJ0JDAiLCJleG4iLCJ0JDEiLCJ0JDIiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMSIsInRhZyIsImwiLCJhbGwiLCJkZWJ1ZyIsImNsb2NrIiwiZmQiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMSIsImZpbmFsaXplcnMiLCJpbnRlcnJ1cHRvciIsIm1vbml0b3IiLCJtb25pdG9yX3NlbmRfZXhuIiwicGFyYWxsZWwiLCJyZWFkZXIiLCJzY2hlZHVsZXIiLCJzaHV0ZG93biIsInRocmVhZF9wb29sIiwidGhyZWFkX3NhZmUiLCJ3cml0ZXIiLCJzeW1ib2wiLCJhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja18kMSIsImNoZWNrX2ludmFyaWFudHMkMSIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQxIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyQxIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5JDEiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMiIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMSIsIm1heF9udW1fdGhyZWFkcyQxIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCQxIiwicmVjb3JkX2JhY2t0cmFjZXMkMSIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMSIsInRpbWluZ193aGVlbF9jb25maWckMSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMSIsInQkMyIsInRhc2tfaWQiLCJub25lIiwiY3JlYXRlIiwiaXNfbm9uZSIsIngiLCJpc19zb21lIiwiZ2V0X3NvbWVfZXhuIiwiZ2V0IiwidCIsInVuc2FmZV9nZXQiLCJzZXRfc29tZSIsInYiLCJzZXRfbm9uZSIsInNldCIsInYkMCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ4XzAwMiIsImVtcHR5IiwiaXNfZW1wdHkiLCJlcXVhbCIsImR1bW15X2lkIiwiY2hpbGQiLCJ0IiwicG9vbCIsInNpYmxpbmciLCJwcmV2IiwiaWQiLCJzZXRfY2hpbGQiLCJ2Iiwic2V0X3NpYmxpbmciLCJzZXRfcHJldiIsInZhbHVlX2V4biIsImFsbG9jYXRlIiwidmFsdWUiLCJmcmVlIiwiZGlzY29ubmVjdF9zaWJsaW5nIiwic2libGluZyQwIiwiZGlzY29ubmVjdF9jaGlsZCIsImNoaWxkJDAiLCJkZXRhY2giLCJwcmV2JDAiLCJyZWxhdGlvbl90b19wcmV2IiwiY3JlYXRlIiwiY2FwYWNpdHkiLCJpbnZhcmlhbnQiLCJ0b192aXNpdCQyIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwibWF5YmVfcGFyZW50X3ZhbHVlIiwiZXhwZWN0ZWRfcHJldiIsIm5vZGUiLCJ0aGlzX3ZhbHVlIiwidGhpc192YWx1ZSQwIiwicGFyZW50X3ZhbHVlIiwidG9fdmlzaXQkMSIsImNyZWF0ZSQwIiwiY21wIiwibWluX3NpemUiLCJjb3B5IiwicG9vbCQwIiwic3RhcnQiLCJudW1fb2ZfYWxsb2NhdGVkX25vZGVzIiwiY29weV9ub2RlIiwibmV3X25vZGUiLCJuZXdfc3RhcnQiLCJyZXN0Iiwibm9kZV90b19jb3B5Iiwic2xvdCIsIm5vZGVfdG9fdXBkYXRlIiwibWVyZ2UiLCJyb290MSIsInJvb3QyIiwiYWRkX2NoaWxkIiwibmV3X2NoaWxkIiwiY3VycmVudF9jaGlsZCIsInYxIiwidjIiLCJ0b3BfZXhuIiwidG9wIiwiYWRkX25vZGUiLCJ0JDEiLCJ0JDAiLCJhZGQiLCJtYXhfc3RhY2tfZGVwdGgiLCJsb29wIiwiZGVwdGgiLCJoZWFkJDAiLCJuZXh0MSQwIiwibmV4dDIkMCIsImFjYyIsImhlYWQiLCJuZXh0MSIsIm5leHQyIiwiYWNjJDAiLCJoIiwieHMiLCJoZWFwIiwicmVtb3ZlX25vbl9lbXB0eSIsIm1lcmdlZF9jaGlsZHJlbiIsIm5ld19yb290IiwicmVtb3ZlX3RvcCIsImNsZWFyIiwibm9kZSQwIiwicG9wX2V4biIsInIiLCJwb3AiLCJwb3BfaWYiLCJmIiwiZm9sZCIsImluaXQiLCJpdGVyIiwibGVuZ3RoIiwiaXRlciQwIiwibGVuZ3RoJDAiLCJpc19lbXB0eSQwIiwibWVtIiwiZXhpc3RzIiwiZm9yX2FsbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fbGlzdCIsInRvX2FycmF5IiwibWluX2VsdCIsIm1heF9lbHQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwic2V4cF9vZl90IiwiaXNfbm9kZV92YWxpZCIsInZhbHVlX2V4biQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJ4XzAwMSIsInJlbW92ZSIsInRva2VuIiwiYWRkX3JlbW92YWJsZSIsInVwZGF0ZSIsImZpbmRfZWx0Iiwibm9kZXMkMiIsIm5vZGVzIiwibm9kZXMkMCIsIm5vZGVzJDEiLCJ1cGRhdGUkMCIsImVsdCIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsImJ1ZiIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl90IiwiYmluX2EiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiZXF1YWwiLCJhXzAwMyIsImJfMDA0IiwidF9vZl9zZXhwIiwib2ZfYV8wMDUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJwb3MiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA4IiwiYl8wMDkiLCJlcXVhbCQwIiwiYV8wMTIiLCJiXzAxMyIsImFtX3J1bm5pbmdfdGVzdCIsIm5vbmUiLCJzb21lIiwieCIsInVuc2FmZV92YWx1ZSIsImlzX25vbmUiLCJ0IiwiaXNfc29tZSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwidmFsdWVfZXhuIiwidG9fb3B0aW9uIiwib2Zfb3B0aW9uIiwiYSIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwibmV4dF8wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImNyZWF0ZSIsInVudXNlZF9lbHRzIiwiciIsInNldF91bnVzZWRfZWx0cyIsInYiLCJiYWNrIiwic2V0X2JhY2siLCJmcm9udCIsInNldF9mcm9udCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJ1bnVzZWRfZWx0cyQwIiwiYmFjayQwIiwiZnJvbnQkMCIsImxlbmd0aCQwIiwic2V4cF9vZl90JDAiLCJvZl9hXzAwNyIsImxlbmd0aF8wMDkiLCJmcm9udF8wMTEiLCJiYWNrXzAxMyIsInVudXNlZF9lbHRzXzAxNSIsImFyZ18wMTYiLCJibmRzXzAwOCIsImFyZ18wMTQiLCJibmRzXzAwOCQwIiwiYXJnXzAxMiIsImJuZHNfMDA4JDEiLCJhcmdfMDEwIiwiYm5kc18wMDgkMiIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidCIsInhfMDE3IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsImNyZWF0ZSQwIiwiZW5xdWV1ZSIsImEiLCJuZXdfYmFjayIsImRlcXVldWVfZXhuIiwieF8wMTgiLCJjbGVhcl9pbnRlcm5hbF9wb29sIiwiYWZ0ZXIiLCJ0Iiwic3BhbiIsInJlc3VsdCIsImxvZyIsImFyZzJfMDAzIiwiYXJnM18wMDQiLCJzZXhwX29mX2EiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInJlczJfMDA3IiwicmVzM18wMDgiLCJsb2dfc3RyaW5nIiwibWVzc2FnZSIsImNvbmNhdCIsImVwcmludCIsImVwcmludF9zIiwiZXByaW50cyIsInByaW50X3MiLCJzZXhwIiwic2VjIiwiYWxsIiwic2V4cF9vZl90IiwidG9fcmVwciIsIm9mX3JlcHIiLCJuYW1lcyIsImRlYnVnIiwiZm9yd2FyZGluZyIsInIiLCJzZXRfZm9yd2FyZGluZyIsInYiLCJoYXNfc2Vlbl9lcnJvciIsInNldF9oYXNfc2Vlbl9lcnJvciIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzIiwic2V0X3RhaWxzX2Zvcl9hbGxfZXJyb3JzIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJuZXh0X2Vycm9yIiwic2V0X25leHRfZXJyb3IiLCJpZCIsImhlcmUiLCJuYW1lIiwiZm9yd2FyZGluZyQwIiwiaGFzX3NlZW5fZXJyb3IkMCIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzJDAiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyQwIiwibmV4dF9lcnJvciQwIiwiaWQkMCIsImhlcmUkMCIsIm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsIm5hbWVfZnVuIiwiaGVyZV9mdW4iLCJpZF9mdW4iLCJuZXh0X2Vycm9yX2Z1biIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsImhhc19zZWVuX2Vycm9yX2Z1biIsImZvcndhcmRpbmdfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwibmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwiaGVyZV9nZW4iLCJjb21waWxlX2FjYyQyIiwiaWRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsIm5leHRfZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJ0YWlsc19mb3JfYWxsX2Vycm9yc19nZW4iLCJjb21waWxlX2FjYyQ2IiwiaGFzX3NlZW5fZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNyIsImZvcndhcmRpbmdfZ2VuIiwiYWNjIiwiY3JlYXRlIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9ucyIsInQkMSIsImFjIiwiYWMkMCIsInQkMCIsInhfMDAxIiwibmV4dF9pZCIsImNyZWF0ZV93aXRoX3BhcmVudCIsImluZm8iLCJwYXJlbnQiLCJpIiwicyIsInMkMCIsInhfMDAyIiwicGFyZW50JDAiLCJtYWluIiwiYmFja3RyYWNlX2hpc3RvcnkiLCJsb2NhbF9zdG9yYWdlIiwicHJpb3JpdHkiLCJtb25pdG9yIiwiYmFja3RyYWNlX2hpc3RvcnkkMCIsImxvY2FsX3N0b3JhZ2UkMCIsInByaW9yaXR5JDAiLCJtb25pdG9yJDAiLCJtb25pdG9yX2Z1biIsInByaW9yaXR5X2Z1biIsImxvY2FsX3N0b3JhZ2VfZnVuIiwiYmFja3RyYWNlX2hpc3RvcnlfZnVuIiwibW9uaXRvcl9nZW4iLCJwcmlvcml0eV9nZW4iLCJsb2NhbF9zdG9yYWdlX2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5X2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5XzAwOCIsImxvY2FsX3N0b3JhZ2VfMDA2IiwicHJpb3JpdHlfMDA0IiwibW9uaXRvcl8wMDIiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJpbnZhcmlhbnQiLCJjcmVhdGVfbGlrZSIsImZpbmRfbG9jYWwiLCJrZXkiLCJ3aXRoX2xvY2FsIiwiZGF0YSIsInJlY29yZF9iYWNrdHJhY2UiLCJkdW1teV9lIiwiZHVtbXlfZiIsImR1bW15X2EiLCJzZXhwX29mX3Nsb3RzIiwib2ZfZXZlbnQiLCJldmVudCIsIm9mX2pvYiIsImpvYiIsImlzX2V2ZW50IiwiaXNfam9iIiwia2luZCIsInByb2plY3QiLCJqb2Jfb3JfZXZlbnQiLCJldmVudHMiLCJzZXRfZXhlY3V0aW9uX2NvbnRleHQiLCJleGVjdXRpb25fY29udGV4dCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJmcm9udCIsInNldF9mcm9udCIsIm1hc2siLCJzZXRfbWFzayIsImpvYnMiLCJzZXRfam9icyIsImpvYnNfbGVmdF90aGlzX2N5Y2xlIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIiwibnVtX2pvYnNfcnVuIiwic2V0X251bV9qb2JzX3J1biIsImxlbmd0aCQwIiwiZnJvbnQkMCIsIm1hc2skMCIsImpvYnMkMCIsImpvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJudW1fam9ic19ydW4kMCIsIm51bV9qb2JzX3J1bl8wMDIiLCJqb2JzX2xlZnRfdGhpc19jeWNsZV8wMDQiLCJqb2JzXzAwNiIsIm1hc2tfMDA4IiwiZnJvbnRfMDEwIiwibGVuZ3RoXzAxMiIsImJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXzAxNCIsImFyZ18wMTUiLCJhcmdfMDEzIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJibmRzXzAwMSQ0IiwiYm5kc18wMDEkNSIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUiLCJjbGVhciIsInNldCIsImEiLCJvZmZzZXQkMCIsImVucXVldWUiLCJvbGRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJvbGRfam9icyIsIm9sZF9mcm9udCIsImxlbjEiLCJsZW4yIiwibmV3X2pvYnMiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm4iLCJjYW5fcnVuX2Ffam9iIiwicnVuX2pvYiIsInNjaGVkdWxlciIsInJ1bl9leHRlcm5hbF9qb2JzIiwiZXh0ZXJuYWxfam9icyIsInJ1bl9qb2JzIiwidGhpc19qb2IiLCJleG4kMCIsImV4biIsImJhY2t0cmFjZSIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwibmFtZXMkMCIsImlzX251bGwiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic2V4cF9vZl90JDEiLCJ0cmFuc2l0aW9uX2lzX2FsbG93ZWQiLCJmcm9tIiwidG8iLCJzZXhwX29mX2V2ZW50IiwiYXQiLCJpbnRlcnZhbCIsInN0YXR1cyIsIm1hdGNoIiwibm9uZSIsInNvbWUiLCJpc19ub25lIiwiaXNfc29tZSIsImZpcnN0X3NvbWUiLCJ0MSIsInQyIiwidW5zYWZlX3ZhbHVlIiwic2V4cF9vZl90JDIiLCJwcHhfb3B0aW9uYWxfZV8wIiwidmFsdWUkMCIsImRlZmF1bHQkMCIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInNldF9zdGF0dXMiLCJwcmV2X2ZpcmVkIiwic2V0X3ByZXZfZmlyZWQiLCJuZXh0X2ZpcmVkIiwic2V0X25leHRfZmlyZWQiLCJzZXRfaW50ZXJ2YWwiLCJjYWxsYmFjayIsImF0JDAiLCJzZXRfYXQiLCJhbGFybSIsInNldF9hbGFybSIsInN0YXR1cyQwIiwicHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQwIiwiaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsYmFjayQwIiwiYXQkMSIsImFsYXJtJDAiLCJhbGFybV9mdW4iLCJhdF9mdW4iLCJjYWxsYmFja19mdW4iLCJleGVjdXRpb25fY29udGV4dF9mdW4iLCJpbnRlcnZhbF9mdW4iLCJuZXh0X2ZpcmVkX2Z1biIsInByZXZfZmlyZWRfZnVuIiwic3RhdHVzX2Z1biIsImFsYXJtX2dlbiIsImF0X2dlbiIsImNhbGxiYWNrX2dlbiIsImV4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImludGVydmFsX2dlbiIsIm5leHRfZmlyZWRfZ2VuIiwicHJldl9maXJlZF9nZW4iLCJzdGF0dXNfZ2VuIiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiZXhwZWN0IiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJ4XzAxNiIsInBweF9vcHRpb25hbF9lXzAkMCIsImFfMDE3IiwiYl8wMTgiLCJnb3QkMCIsInNleHBpZmllciQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsImludmFyaWFudCQwIiwic2V4cF9vZl90JDUiLCJ4XzAyMSIsImludmFyaWFudCQxIiwiaW52YXJpYW50X3dpdGhfam9icyQwIiwic2V4cF9vZl90JDYiLCJ4XzAyMiIsImlkJDEiLCJpc193YWxsX2Nsb2NrJDEiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwicmVhZF9vbmx5IiwiZmlyZSIsImNvbnRpbnVlJDAiLCJuZXh0JDAiLCJjb250aW51ZSQxIiwicHB4X29wdGlvbmFsX2VfMCQxIiwibmV4dCIsInBweF9vcHRpb25hbF9lXzAkMiIsInByZXYiLCJhbGFybV9wcmVjaXNpb24iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0IiwibmV4dF9hbGFybV9ydW5zX2F0Iiwibm93JDAiLCJ0aW1pbmdfd2hlZWxfbm93JDAiLCJzY2hlZHVsZSIsInJlbW92ZV9mcm9tX2ZpcmVkIiwibmV3X3N0YXR1cyIsInNleHBfb2ZfZXZlbnQkMCIsInN0YXR1cyQxIiwicHJldl9maXJlZCQxIiwic2V0X3ByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMSIsInNldF9uZXh0X2ZpcmVkJDAiLCJpbnRlcnZhbCQxIiwic2V0X2ludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQxIiwiY2FsbGJhY2skMSIsInNldF9hdCQwIiwiYWxhcm0kMSIsInNldF9hbGFybSQwIiwic2V4cF9vZl90JDciLCJpbnZhcmlhbnQkMiIsInNldF9zdGF0dXMkMSIsInNldF9zdGF0dXNfaWYkMCIsInNjaGVkdWxlZF9hdCIsImNyZWF0ZV9pbnRlcm5hbCIsImFkZCQwIiwiY3JlYXRlX2FuZF9hZGQiLCJhdCQyIiwiYWZ0ZXIkMCIsInJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wciIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXRfaW50ZXJ2YWxzIiwic2V4cF9vZl90JDgiLCJhYm9ydCIsImFib3J0X2lmX3Bvc3NpYmxlIiwiYWJvcnRfZXhuIiwicmVhc29uIiwiY3JlYXRlJDEiLCJpc19zY2hlZHVsZWQiLCJzY2hlZHVsZV9hdF9pbnRlcm5hbCIsInNjaGVkdWxlX2F0Iiwic2NoZWR1bGVfYWZ0ZXIiLCJzY2hlZHVsZV9hdF9pbnRlcnZhbHMiLCJyZXNjaGVkdWxlX2F0IiwicmVzY2hlZHVsZV9hZnRlciIsInJ1bl9hZnRlciIsInJ1bl9hdCIsInJ1bl9hdF9pbnRlcnZhbHMiLCJydW5fZmlyZWRfZXZlbnRzIiwic2VuZF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0Iiwic2VuZF9leG4kMCIsImFueV9maXJlZF9ldmVudHNfdG9fcnVuIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X2FsYXJtc19ieSIsImJ5IiwiYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfIiwiYWR2YW5jZV9kaXJlY3RseSIsImFkdmFuY2VfZGlyZWN0bHlfYnkiLCJkdXJhdGlvbl9vZiIsInN0YXJ0IiwiZHVyYXRpb24iLCJtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3ciLCJoYXNfZXZlbnRzX3RvX3J1biIsImNyZWF0ZV93aXRoX2NlbGwiLCJjZWxsIiwiY3JlYXRlX2Z1bGwiLCJleGVjIiwiZXhlYyQwIiwiZXhlY19mdW4iLCJleGVjX2dlbiIsInNleHBfb2ZfdCQwIiwiZXhlY3V0aW9uX2NvbnRleHRfMDAyIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJzZXRfcmVjb3JkX2JhY2t0cmFjZXMiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV8iLCJjaGVja19pbnZhcmlhbnRzIiwic2V0X2NoZWNrX2ludmFyaWFudHMiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInNldF95aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInlpZWxkJDAiLCJzZXRfeWllbGQiLCJldmVudF9hZGRlZF9ob29rIiwic2V0X2V2ZW50X2FkZGVkX2hvb2siLCJqb2JfcXVldWVkX2hvb2siLCJzZXRfam9iX3F1ZXVlZF9ob29rIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2siLCJzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2giLCJ0aW1lX3NvdXJjZSIsInNldF90aW1lX3NvdXJjZSIsInRvdGFsX2N5Y2xlX3RpbWUiLCJzZXRfdG90YWxfY3ljbGVfdGltZSIsImxhc3RfY3ljbGVfbnVtX2pvYnMiLCJzZXRfbGFzdF9jeWNsZV9udW1fam9icyIsImxhc3RfY3ljbGVfdGltZSIsInNldF9sYXN0X2N5Y2xlX3RpbWUiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInNldF9ydW5fZXZlcnlfY3ljbGVfZW5kIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Iiwic2V0X3J1bl9ldmVyeV9jeWNsZV9zdGFydCIsImluX2N5Y2xlIiwic2V0X2luX2N5Y2xlIiwiY3ljbGVfc3RhcnQiLCJzZXRfY3ljbGVfc3RhcnQiLCJjeWNsZV9jb3VudCIsInNldF9jeWNsZV9jb3VudCIsInVuY2F1Z2h0X2V4bl91bndyYXBwZWQiLCJzZXRfdW5jYXVnaHRfZXhuIiwic2V0X2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0Iiwic2V0X21haW5fZXhlY3V0aW9uX2NvbnRleHQiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIiwibG93X3ByaW9yaXR5X2pvYnMiLCJub3JtYWxfcHJpb3JpdHlfam9icyIsImpvYl9wb29sIiwic2V0X2pvYl9wb29sIiwiY2hlY2tfYWNjZXNzIiwic2V0X2NoZWNrX2FjY2VzcyIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsImNoZWNrX2ludmFyaWFudHMkMCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluJDAiLCJ5aWVsZCQxIiwiZXZlbnRfYWRkZWRfaG9vayQwIiwiam9iX3F1ZXVlZF9ob29rJDAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayQwIiwiZXh0ZXJuYWxfam9icyQwIiwidGltZV9zb3VyY2UkMCIsInRvdGFsX2N5Y2xlX3RpbWUkMCIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMCIsImxhc3RfY3ljbGVfdGltZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlJDAiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnQkMCIsImluX2N5Y2xlJDAiLCJjeWNsZV9zdGFydCQwIiwiY3ljbGVfY291bnQkMCIsInVuY2F1Z2h0X2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMCIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHQkMCIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMkMCIsImxvd19wcmlvcml0eV9qb2JzJDAiLCJub3JtYWxfcHJpb3JpdHlfam9icyQwIiwiam9iX3Bvb2wkMCIsImNoZWNrX2FjY2VzcyQwIiwiY2hlY2tfYWNjZXNzX2Z1biIsImpvYl9wb29sX2Z1biIsIm5vcm1hbF9wcmlvcml0eV9qb2JzX2Z1biIsImxvd19wcmlvcml0eV9qb2JzX2Z1biIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfZnVuIiwibWFpbl9leGVjdXRpb25fY29udGV4dF9mdW4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0X2Z1biIsInVuY2F1Z2h0X2V4bl9mdW4iLCJjeWNsZV9jb3VudF9mdW4iLCJjeWNsZV9zdGFydF9mdW4iLCJpbl9jeWNsZV9mdW4iLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2Z1IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9mdW4iLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2Z1biIsImxhc3RfY3ljbGVfdGltZV9mdW4iLCJsYXN0X2N5Y2xlX251bV9qb2JzX2Z1biIsInRvdGFsX2N5Y2xlX3RpbWVfZnVuIiwidGltZV9zb3VyY2VfZnVuIiwiZXh0ZXJuYWxfam9ic19mdW4iLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18iLCJqb2JfcXVldWVkX2hvb2tfZnVuIiwiZXZlbnRfYWRkZWRfaG9va19mdW4iLCJ5aWVsZF9mdW4iLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl9mdW4iLCJjaGVja19pbnZhcmlhbnRzX2Z1biIsInJlY29yZF9iYWNrdHJhY2VzX2Z1biIsImNoZWNrX2FjY2Vzc19nZW4iLCJqb2JfcG9vbF9nZW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19nZW4iLCJsb3dfcHJpb3JpdHlfam9ic19nZW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2dlbiIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9nZW4iLCJ1bmNhdWdodF9leG5fZ2VuIiwiY3ljbGVfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImN5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEwIiwiaW5fY3ljbGVfZ2VuIiwiY29tcGlsZV9hY2MkMTEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVfZ2UiLCJjb21waWxlX2FjYyQxMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2dlbiIsImNvbXBpbGVfYWNjJDE1IiwibGFzdF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE2IiwibGFzdF9jeWNsZV9udW1fam9ic19nZW4iLCJjb21waWxlX2FjYyQxNyIsInRvdGFsX2N5Y2xlX3RpbWVfZ2VuIiwiY29tcGlsZV9hY2MkMTgiLCJ0aW1lX3NvdXJjZV9nZW4iLCJjb21waWxlX2FjYyQxOSIsImV4dGVybmFsX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMjAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18kMCIsImNvbXBpbGVfYWNjJDIxIiwiam9iX3F1ZXVlZF9ob29rX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwiZXZlbnRfYWRkZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMyIsInlpZWxkX2dlbiIsImNvbXBpbGVfYWNjJDI0IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZ2VuIiwiY29tcGlsZV9hY2MkMjUiLCJjaGVja19pbnZhcmlhbnRzX2dlbiIsImNvbXBpbGVfYWNjJDI2IiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJjb21waWxlX2FjYyQyNyIsInJlY29yZF9iYWNrdHJhY2VzX2dlbiIsImNyZWF0ZSQyIiwiY2hlY2tfYWNjZXNzXzAwNyIsImpvYl9wb29sXzAwOSIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfMDE1IiwibG93X3ByaW9yaXR5X2pvYnNfMDEzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfMDExIiwibWFpbl9leGVjdXRpb25fY29udGV4dF8wMTciLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XzAxOSIsInVuY2F1Z2h0X2V4bl8wMjEiLCJjeWNsZV9jb3VudF8wMjciLCJjeWNsZV9zdGFydF8wMjkiLCJpbl9jeWNsZV8wMzEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfMDMzIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXzAzIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF8wMzciLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlXzAzOSIsImxhc3RfY3ljbGVfdGltZV8wNDEiLCJsYXN0X2N5Y2xlX251bV9qb2JzXzA0MyIsInRvdGFsX2N5Y2xlX3RpbWVfMDQ1IiwidGltZV9zb3VyY2VfMDQ3IiwiZXh0ZXJuYWxfam9ic18wNDkiLCJqb2JfcXVldWVkX2hvb2tfMDUzIiwiZXZlbnRfYWRkZWRfaG9va18wNTUiLCJ5aWVsZF8wNTciLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl8wNTkiLCJjaGVja19pbnZhcmlhbnRzXzA2MSIsInJlY29yZF9iYWNrdHJhY2VzXzA2NSIsImFyZ18wNjYiLCJibmRzXzAwNiIsImFyZ18wNjQiLCJibmRzXzAwNiQwIiwiYXJnXzA2MiIsImJuZHNfMDA2JDEiLCJhcmdfMDYwIiwiYm5kc18wMDYkMiIsImFyZ18wNTgiLCJibmRzXzAwNiQzIiwiYXJnXzA1NiIsImJuZHNfMDA2JDQiLCJhcmdfMDU0IiwiYm5kc18wMDYkNSIsImFyZ18wNTIiLCJibmRzXzAwNiQ2IiwiYXJnXzA1MCIsImJuZHNfMDA2JDciLCJhcmdfMDQ4IiwiYm5kc18wMDYkOCIsImFyZ18wNDYiLCJibmRzXzAwNiQ5IiwiYXJnXzA0NCIsImJuZHNfMDA2JDEwIiwiYXJnXzA0MiIsImJuZHNfMDA2JDExIiwiYXJnXzA0MCIsImJuZHNfMDA2JDEyIiwiYXJnXzAzOCIsImJuZHNfMDA2JDEzIiwiYXJnXzAzNiIsImJuZHNfMDA2JDE0IiwiYXJnXzAzNCIsImJuZHNfMDA2JDE1IiwiYXJnXzAzMiIsImJuZHNfMDA2JDE2IiwiYXJnXzAzMCIsImJuZHNfMDA2JDE3IiwiYXJnXzAyOCIsImJuZHNfMDA2JDE4IiwiYXJnXzAyMiIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYm5kc18wMDYkMTkiLCJhcmdfMDIwIiwiYm5kc18wMDYkMjAiLCJhcmdfMDE4IiwiYm5kc18wMDYkMjEiLCJhcmdfMDE2IiwiYm5kc18wMDYkMjIiLCJhcmdfMDE0IiwiYm5kc18wMDYkMjMiLCJhcmdfMDEyIiwiYm5kc18wMDYkMjQiLCJhcmdfMDEwIiwiYm5kc18wMDYkMjUiLCJhcmdfMDA4IiwiYm5kc18wMDYkMjYiLCJ1bmNhdWdodF9leG4kMCIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsInJlczFfMDcwIiwibnVtX3BlbmRpbmdfam9icyIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMSIsInVub3JkZXJlZF9pc19zdWJsaXN0IiwiZXF1YWwiLCJzbWFsbCIsImxhcmdlIiwibGFyZ2UkMCIsIngiLCJsJDAiLCJ5IiwibCIsImNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IiwidGFibGUiLCJhcnJheSIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIiwidF9yZWYiLCJjaGVja19hY2Nlc3MkMSIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMSIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQxIiwidG1wX2NvbnRleHQiLCJvbGRfY29udGV4dCIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQiLCJjcmVhdGVfam9iIiwiZ290X3VuY2F1Z2h0X2V4biIsImFyZzFfMDcyIiwiYXJnMF8wNzEiLCJyZXMwXzA3MyIsInJlczFfMDc0Iiwic3RhcnRfY3ljbGUiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IiwiZSIsImUkMCIsInN0YWJpbGl6ZSIsImNyZWF0ZV90aW1lX3NvdXJjZSIsInRpbWluZ193aGVlbF9jb25maWciLCJ3YWxsX2Nsb2NrIiwic2V0X3ByZXYiLCJwYXJhbSIsInNldF9uZXh0IiwicnVuIiwiY3JlYXRlMiIsInJ1bjEiLCJleGVjdXRpb25fY29udGV4dDEiLCJydW4yIiwiZXhlY3V0aW9uX2NvbnRleHQyIiwic2NoZWR1bGVfam9icyIsImFkZCIsIm9mX2xpc3QiLCJmaXJzdCIsImwkMSIsImwkMiIsInJ1biQwIiwicHJldiQwIiwiYWNjJDAiLCJjZWxsX29mX2hhbmRsZXIiLCJpbmRpciIsInNxdWFzaCIsInQkMyIsInQkNCIsImluZGlyJDEiLCJ0JDUiLCJpbmRpciQwIiwidCQyIiwiYV9pbnZhcmlhbnQiLCJoYW5kbGVyIiwicGVlayIsInZhbHVlIiwiaWZfZW1wdHlfdGhlbl9mYWlsd2l0aCIsImlzX2VtcHR5IiwiaXNfZnVsbCIsImZpbGwiLCJyZW1vdmVfaGFuZGxlciIsIngkMCIsImFkZF9oYW5kbGVyIiwiaGFuZGxlciQxIiwiaGFuZGxlciQyIiwicnVuJDEiLCJoYW5kbGVyJDAiLCJoYXNfaGFuZGxlcnMiLCJ1cG9uIiwidXBvbiQwIiwiY29ubmVjdCIsImJpbmRfcmVzdWx0IiwiYmluZF9yaHMiLCJiaW5kX3Jlc3VsdCQwIiwiaXZhciIsImJpbmRfcmhzX2NvbnRlbnRzIiwiaXZhciQwIiwibGFzdDEiLCJsYXN0MiIsImhhbmRsZXIxIiwiZXhlY3V0aW9uX2NvbnRleHQyJDAiLCJydW4yJDAiLCJoYW5kbGVyMSQwIiwidiQwIiwib2ZfaXZhciIsImludmFyaWFudF9hIiwicmV0dXJuJDAiLCJpc19kZXRlcm1pbmVkIiwiYmluZCIsImgiLCJyZWFkIiwiZmlsbF9pZl9lbXB0eSIsInRvX2JpbmFibGUiLCJvZl9iaW5hYmxlIiwic2V4cF9vZl9ob3ciLCJ2XzAwMSIsIm5ldmVyIiwicmV0dXJuJDEiLCJyZXR1cm4kMiIsInJldHVybiQzIiwidW5pdCIsImJvdGgkMCIsImExIiwiYTIiLCJkb25fdF93YWl0X2ZvciIsImYyIiwiZjEiLCJwcm9jZXNzIiwicmVzdCIsImNob2ljZSIsImVuYWJsZWQiLCJjaG9pY2VzIiwidW5yZWdpc3RlcnMiLCJyZWFkeSIsImNob29zZV9yZXN1bHQiLCJjaG9pY2VzJDAiLCJjaG9pY2VzJDEiLCJnZW5lcmljX2Nob29zZSIsInVucmVnaXN0ZXJzJDAiLCJjaG9vc2UyIiwiZmEiLCJiIiwiZmIiLCJhX2hhbmRsZXIiLCJiX2hhbmRsZXIiLCJhdiIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsInhzIiwic2VxbWFwIiwiYnMiLCJkcyIsImFsbF91bml0IiwiZCIsIm9rIiwib2ZfYV8wMDUiLCJ4XzAwNiIsImFyZzBfMDAyIiwicmVzMF8wMDMiLCJ4XzAwNyIsImNvbGxlY3QiLCJpc19jbG9zZWQiLCJmaWxsX2V4biIsImNsb3NlX2V4biIsImNsb3NlX2lmX29wZW4iLCJleHRlbmQiLCJkZWZlcnJlZDAiLCJkZWZlcnJlZDEiLCJpbXBvcnQwIiwiZXJyb3IiLCJkZXRhY2giLCJkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIiwiaGFuZGxlcl9zdGF0ZV9yZWYiLCJydW5fZiIsImJhZ19lbHQiLCJpbm5lcl9leG4kMCIsImlubmVyX2V4biIsImRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSIsInRhaWwiLCJnZXRfbmV4dF9lcnJvciIsImRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IiLCJleHRyYWN0X2V4biIsImNvbHVtbiIsIm1vbml0b3IkMSIsIm5hbWUkMSIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJ0MyIsInJlc3QkMiIsInJlc3QkMyIsInRyYWNlcyIsInJlc3QkNCIsInQxJDAiLCJyZXN0JDUiLCJ0MiQwIiwicmVzdCQ2IiwidDIkMSIsImJhY2t0cmFjZSQyIiwibGlzdF9pZl9ub3RfZW1wdHkiLCJtYXRjaCQyIiwibWF0Y2gkMyIsImV4dHJhY3RfZXhuJDAiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJ3aXRoaW5fY29udGV4dCIsImNvbnRleHQiLCJ3aXRoaW5fZ2VuIiwid2l0aGluIiwid2l0aGluX3YiLCJ3aXRoaW4kMCIsInNjaGVkdWxlX3dpdGhfZGF0YSIsIndvcmsiLCJ1cG9uX3dvcmtfZmlsbF9pIiwic2NoZWR1bGUkMCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IiwicHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQkMCIsImNhbGxfYW5kX2ZpbGwiLCJzdHJlYW1faXRlciIsInN0cmVhbSIsImV4bnMiLCJmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm8iLCJyZXN1bHRfZmlsbGVyIiwiaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IiwidHJ5X3dpdGhfbG9nX2V4biIsInRyeV93aXRoIiwiZG9fZXh0cmFjdF9leG4iLCJoYW5kbGVfZXhuIiwicmVzIiwidHJ5X3dpdGhfb3JfZXJyb3IiLCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsImZyIiwiciQwIiwiZmluYWxseV9leG4iLCJoYW5kbGVfZXJyb3JzIiwiY2F0Y2hfc3RyZWFtIiwiY2F0Y2gkMCIsImNhdGNoX2Vycm9yIiwiZGVwdGgiLCJuJDAiLCJmaXJzdF9leG4iLCJsb29wJDAiLCJsb29wX25leHQiLCJsb29wX25leHQkMCIsImNsb3NlZCIsInVuZm9sZCIsImNvcHlfdG9fdGFpbCIsImFwcGVuZCIsImZpbHRlcl9kZXByZWNhdGVkIiwiZmlsdGVyX21hcF9kZXByZWNhdGVkIiwiZmlyc3RfbiIsImF2YWlsYWJsZV9ub3ciLCJzcGxpdCIsInN0b3AiLCJyZWFzb25fZm9yX3N0b3BwaW5nIiwicHJlZml4IiwiZmluaXNoIiwibyIsImZpbmQiLCJmb3VuZCIsInVuZ3JvdXAiLCJpbnRlcmxlYXZlIiwibnVtX29wZW4iLCJjbG9zZSIsIm91dGVyX2Nsb3NlZCIsInRha2VfdW50aWwiLCJ6IiwiaXRlcl9kdXJhYmx5IiwiaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQiLCJpdGVyX2R1cmFibHkkMCIsIm9mX2Z1biIsInNldF9pdmFyIiwiaGFzX2FueV93YWl0ZXJzIiwic2V0X2hhc19hbnlfd2FpdGVycyIsImhhc19hbnlfd2FpdGVycyQwIiwicmVwciIsIm9mX2FfMDAxIiwiaGFzX2FueV93YWl0ZXJzXzAwMyIsIml2YXJfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJicm9hZGNhc3QiLCJ3YWl0IiwiaGFzX2FueV93YWl0ZXJzJDEiLCJ4XzAwMyIsImJpbmRfdW5pdCIsIndhaXRfZm9yIiwicnVuX3F1ZXVlZF9hbGFybXMiLCJ3YWxrX2FsYXJtcyIsIm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCIsImFkdmFuY2VfdG8iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0JDAiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsInNwYW5fdG9fdGltZSIsInJ1bl9hdF9pbnRlcm5hbCIsInRpbWUiLCJyZW1vdmVfYWxhcm0iLCJvZl9hXzAwNyIsIm9mX2hfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXRfc2NoZWR1bGVkX2F0IiwibnVtX2ZpcmVzX3RvX3NraXAiLCJzZXRfbnVtX2ZpcmVzX3RvX3NraXAiLCJmaXJlZCIsInNjaGVkdWxlZF9hdCQwIiwibnVtX2ZpcmVzX3RvX3NraXAkMCIsImZpcmVkJDAiLCJvZl9hXzAxNSIsIm9mX2hfMDE2IiwiYWxhcm1fMDE4IiwiZmlyZWRfMDIyIiwibnVtX2ZpcmVzX3RvX3NraXBfMDI0Iiwic2NoZWR1bGVkX2F0XzAyNiIsInRpbWVfc291cmNlXzAyOCIsImFyZ18wMjkiLCJibmRzXzAxNyIsImFyZ18wMjciLCJibmRzXzAxNyQwIiwiYXJnXzAyNSIsImJuZHNfMDE3JDEiLCJhcmdfMDIzIiwiYm5kc18wMTckMiIsImFyZ18wMjEiLCJibmRzXzAxNyQzIiwiYXJnXzAxOSIsImJuZHNfMDE3JDQiLCJzZXhwX29mX3RfdW5pdCIsInhfMDMwIiwiZmlyZWQkMSIsImludmFyaWFudF9oIiwieF8wMzEiLCJzY2hlZHVsZWRfYXRfZnVuIiwiYV8wMzIiLCJiXzAzMyIsIm51bV9maXJlc190b19za2lwX2Z1biIsImZpcmVkX2Z1biIsIm9mX2FfMDM0Iiwib2ZfaF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJvZl9hXzA0NCIsIm9mX2hfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJ4XzA1MiIsImEkMCIsIm9mX2FfMDUzIiwib2ZfaF8wNTQiLCJhcmcwXzA1NSIsInJlczBfMDU2IiwiYXJnMF8wNTciLCJyZXMwXzA1OCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0IiwiaXNfaW5fdGltaW5nX3doZWVsIiwiYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlIiwicnVuX2F0JDAiLCJydW5fYWZ0ZXIkMCIsImF0X3RpbWVzIiwibmV4dF90aW1lIiwiYXRfdmFyeWluZ19pbnRlcnZhbHMiLCJjb21wdXRlX3NwYW4iLCJzdGFydCQwIiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsImFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IiwiaXNfcXVlc2NlbnQiLCJ3aGVlbCIsIm5leHRfYWxhcm0iLCJoYXNfdXBjb21pbmdfZXZlbnQiLCJuZXh0X3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudF9leG4iLCJldmVudF9wcmVjaXNpb24iLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayIsImhhbmRsZSIsImFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayIsInJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayIsImFyciIsImciLCJpZHgiLCJhcnIkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJlbnF1ZXVlJDAiLCJxdWV1ZSIsInJ1bm5pbmciLCJleGVjX2N0eCIsInNlbWFwaG9yZSIsImFwcGx5IiwidF9mIiwiZGYiLCJkdiIsIm1heF9jb25jdXJyZW50X2pvYnMiLCJ3YWl0ZXIiLCJhYm9ydGVkIiwicGFyZW50X21vbml0b3IiLCJlcnIiLCJvZl90aHVuayIsInRodW5rIiwic3ltYm9sJDEiLCJkMSIsImQyIiwib2ZfYV8wMDIiLCJyZXMwXzAwNCIsImxlbmd0aF8wMDYiLCJibmRzXzAwNSIsImxpc3QiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwiY2xlYW5lZCQwIiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCQwIiwiY2FwYWNpdHlfYXZhaWxhYmxlJDAiLCJudW1fam9ic19ydW5uaW5nJDAiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnQkMCIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSQwIiwibWF4X2NvbmN1cnJlbnRfam9icyQwIiwib2ZfYV8wMTEiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnRfMDE5Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXzAxNyIsIm1heF9jb25jdXJyZW50X2pvYnNfMDE1IiwiY29udGludWVfb25fZXJyb3JfMDEzIiwibnVtX2pvYnNfcnVubmluZ18wMjEiLCJjYXBhY2l0eV9hdmFpbGFibGVfMDIzIiwiaXNfZGVhZF8wMjUiLCJjbGVhbnNfMDI3IiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF8wMjkiLCJjbGVhbmVkXzAzMSIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJhcmdfMDI2IiwiYm5kc18wMTIkMiIsImFyZ18wMjQiLCJibmRzXzAxMiQzIiwiYm5kc18wMTIkNCIsIm91dGNvbWVfMDA5Iiwic3RhcnRfMDA2Iiwidl8wMDgiLCJibmRzXzAwNSQwIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2Zfa2luZF8wMzUiLCJ4XzAzNiIsIm51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQiLCJjbGVhbl9yZXNvdXJjZSIsImtpbGwiLCJhdF9raWxsIiwiY2xlYW5lZCQxIiwic3RhcnRfam9iIiwiam9iX3Jlc291cmNlIiwiam9iX3Jlc291cmNlcyIsImNyZWF0ZV93aXRoIiwib3V0Y29tZSIsImludGVybmFsX2pvYiIsImhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCIsImVucXVldWVfZXhjbHVzaXZlIiwiZG9uZSIsImZfcGxhY2Vob2xkZXIiLCJzbG90IiwibW9uYWRfc2VxdWVuY2VfaG93IiwiaG93IiwibW9uYWRfc2VxdWVuY2VfaG93MiIsInByaW9yX2pvYnNfZG9uZSIsImFsbF9kdW1teV9qb2JzX3J1bm5pbmciLCJkdW1teV9qb2JzX3J1bm5pbmciLCJjYXBhY2l0eV9hdmFpbGFibGUkMSIsInRocmVhZF9zYWZlX2VucXVldWVfam9iIiwiY3ljbGVfc3RhcnRfbnMiLCJjeWNsZV90aW1lc19ucyIsImN5Y2xlX3RpbWVzIiwiZXZlbnRfcHJlY2lzaW9uX25zIiwiYm9vbCIsImFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rJDAiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2skMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyQwIiwicmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSQwIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsInJpZ2h0XzAwNCIsImxlZnRfMDAzIiwidl8wMDYiLCJmb2xkaSIsInNlcW1hcGkiLCJpdGVyaSIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJmaWx0ZXJfbWFwaSIsImNvbmNhdF9tYXBpIiwiZmluZF9tYXBpIiwiYXV4IiwiZmluZGkiLCJlbHQiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwiam9iX2NvdW50IiwiZ2VuX2NvbXB1dGF0aW9uIiwieXMiLCJ0bCIsImhkIiwiY2hhbmdlIiwib3B0IiwidXBkYXRlIiwiaXRlcl9rZXlzIiwiYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIiLCJhbGlzdCIsImZvbGRfcmlnaHQiLCJhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciIsImNvbXB1dGF0aW9uIiwiam9iX21hcCIsInNlcXVlbmNlIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInJlcmFpc2UiLCJnZW5lcmFsIiwiaGFzaGFibGUiLCJnZW5lcmFsJDAiLCJyZWN1cnNpdmUiLCJmX29uZXN0ZXAiLCJtZW1vaXplZCIsImNvbWJpbmUiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImUxIiwiZTIiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwib2tfZXhuIiwib2ZfZXhuIiwib2ZfZXhuX3Jlc3VsdCIsIm1zZyIsInNleHBfb2YiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2Vycm9ycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIiwiZmluZF9tYXBfb2siLCJjdXJyZW50X2Vycm9yIiwiZXJyb3JzJDAiLCJva191bml0IiwidHJ5X3dpdGgkMCIsInRyeV93aXRoX2pvaW4iLCJzdGF0ZSQwIiwiZm9sZF9tYXBpIiwibWFwaV9mIiwiZm9sZF9mIiwidGhyb3R0bGUiLCJjIiwiYyQxIiwiYyQwIiwiaSQwIiwiYWNjdW0iLCJtYXliZV92Iiwic2hvd19kZWJ1Z19tZXNzYWdlcyIsImNoZWNrX2ludmFyaWFudCIsInhfMDA0IiwidmFsdWVzX3JlYWQiLCJzZXRfdmFsdWVzX3JlYWQiLCJ2YWx1ZXNfcmVhZCQwIiwicGlwZV9pZF8wMDkiLCJ2YWx1ZXNfcmVhZF8wMTEiLCJibmRzXzAwOCIsInZfMDEzIiwiYm5kc18wMDgkMCIsImJuZHNfMDA4JDEiLCJ2YWx1ZXNfc2VudF9kb3duc3RyZWFtIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1Iiwid2hlbl9zZW50X2Rvd25zdHJlYW0iLCJjb25zdW1lciIsIndhbnRzIiwiY29uc3VtZXIkMCIsIndhbnRzJDAiLCJvZl9hXzAyOSIsImNvbnN1bWVyXzAzMyIsIndhbnRzXzAzMSIsImJuZHNfMDMwIiwiYXJnMF8wMTgiLCJyZXMwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJ2XzAyMCIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwidl8wMjMiLCJibmRzXzAzMCQwIiwiZmlsbF93aXRoX2VvZiIsImkkMSIsImZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQiLCJyZWFkeV8wMzkiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXzAzNyIsImJuZHNfMDM2IiwiYm5kc18wMzYkMCIsImNvbnN1bWVycyIsInNldF9jb25zdW1lcnMiLCJibG9ja2VkX3JlYWRzIiwiYmxvY2tlZF9mbHVzaGVzIiwicHVzaGJhY2siLCJzZXRfcHVzaGJhY2siLCJyZXNlcnZlZF9zcGFjZSIsInNldF9yZXNlcnZlZF9zcGFjZSIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJyZXNlcnZlZF9zcGFjZSQwIiwic2l6ZV9idWRnZXQkMCIsInNleHBfb2ZfcGlwZSIsIm9mX2FfMDQxIiwib2ZfcGhhbnRvbV8wNDIiLCJpZF8wNDQiLCJpbmZvXzA0NiIsImJ1ZmZlcl8wNTAiLCJzaXplX2J1ZGdldF8wNTIiLCJyZXNlcnZlZF9zcGFjZV8wNTQiLCJwdXNoYmFja18wNTYiLCJudW1fdmFsdWVzX3JlYWRfMDU4IiwicmVhZF9jbG9zZWRfMDY2IiwiY2xvc2VkXzA2NCIsImJsb2NrZWRfcmVhZHNfMDYyIiwiYmxvY2tlZF9mbHVzaGVzXzA2MCIsImNvbnN1bWVyc18wNjgiLCJ1cHN0cmVhbV9mbHVzaGVkc18wNzAiLCJhcmdfMDcxIiwiYm5kc18wNDMiLCJhcmdfMDY5IiwiYm5kc18wNDMkMCIsImFyZ18wNjciLCJibmRzXzA0MyQxIiwiYXJnXzA2NSIsImJuZHNfMDQzJDIiLCJhcmdfMDYzIiwiYm5kc18wNDMkMyIsImFyZ18wNjEiLCJibmRzXzA0MyQ0IiwiYXJnXzA1OSIsImJuZHNfMDQzJDUiLCJhcmdfMDU3IiwiYm5kc18wNDMkNiIsImFyZ18wNTUiLCJibmRzXzA0MyQ3IiwiYXJnXzA1MyIsImJuZHNfMDQzJDgiLCJhcmdfMDUxIiwiYm5kc18wNDMkOSIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MyQxMCIsImFyZ18wNDUiLCJibmRzXzA0MyQxMSIsImVmZmVjdGl2ZV9zaXplX2J1ZGdldCIsImhhc2giLCJpc19yZWFkX2Nsb3NlZCIsInB1c2hiYWNrJDEiLCJ1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIiwiZGVsdGEiLCJ4XzA3NSIsInhfMDM1IiwiaSQyIiwic2V4cF9vZl9waGFudG9tIiwib2ZfYV8wNzYiLCJ4XzA3NyIsInNleHBfb2ZfcGhhbnRvbSQwIiwib2ZfYV8wNzgiLCJ4XzA3OSIsImlkX3JlZiIsImluaXRpYWxfYnVmZmVyIiwidmFsaWRhdGVfc2l6ZV9idWRnZXQiLCJ1cGRhdGVfcHVzaGJhY2siLCJ4XzA4MCIsImNsb3NlX3JlYWQiLCJ4XzA4MSIsImZsdXNoIiwiY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjIiwidyIsImNyZWF0ZV9yZWFkZXIiLCJjbG9zZV9vbl9leGNlcHRpb24iLCJjcmVhdGVfd3JpdGVyIiwidmFsdWVzX3dlcmVfcmVhZCIsImZsdXNoJDAiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInJlc2VydmVfc3BhY2UiLCJkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSIsInN0YXJ0X3dyaXRlIiwieF8wODMiLCJzaXplIiwieF8wODIiLCJmaW5pc2hfd3JpdGUiLCJibG9ja2VkX3JlYWQiLCJpdmFyJDEiLCJ0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIiwidHJhbnNmZXJfaW4iLCJ3cml0ZSIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2siLCJ3cml0ZSQwIiwid3JpdGVfd2hlbl9yZWFkeSIsIndyaXRlX2lmX29wZW4iLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4iLCJlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyIsInhfMDg1Iiwic3RhcnRfcmVhZCIsImxhYmVsIiwieF8wODYiLCJnZW5fcmVhZF9ub3ciLCJnZXRfbWF4X3F1ZXVlX2xlbmd0aCIsIm1heF9xdWV1ZV9sZW5ndGgkMCIsInJlYWRfbm93IiwicmVhZF9ub3ckMCIsInJlYWQkMCIsInJlYWRfZXhuIiwidmFsdWVzX2F2YWlsYWJsZSIsInJlYWRfY2hvaWNlIiwicmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4IiwicmVhZF9leGFjdGx5IiwibnVtX3ZhbHVlcyIsImFscmVhZHlfcmVhZCIsImRvd25zdHJlYW1fZmx1c2hlZCIsInVwc3RyZWFtX2ZsdXNoZWQiLCJhZGRfY29uc3VtZXIiLCJwaXBlX2lkIiwiY29uc3VtZXIkMSIsInVwc3RyZWFtIiwiZG93bnN0cmVhbSIsInVwc3RyZWFtX2ZsdXNoZWQkMCIsImFyZzBfMDg3IiwicmVzMF8wODgiLCJmb2xkX2dlbiIsImZsdXNoZWQiLCJmb2xkX3dpdGhvdXRfcHVzaGJhY2siLCJ3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciIsIml0ZXJfd2l0aG91dF9wdXNoYmFjayIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDAiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDEiLCJyZW1haW5pbmciLCJyZW1haW5pbmckMCIsImRyYWluIiwiZHJhaW5fYW5kX2NvdW50Iiwic3VtIiwicmVhZF9hbGwiLCJpbnB1dCIsInRvX3N0cmVhbV9kZXByZWNhdGVkIiwib2Zfc3RyZWFtX2RlcHJlY2F0ZWQiLCJ0cmFuc2ZlciIsIm5leHRfZGVmZXJyZWQiLCJjaGVja19jbG9zZWRfbG9vcF9uZXh0IiwidHJhbnNmZXJfZ2VuIiwib3V0cHV0IiwibGluayIsInVubGluayIsImlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvcyIsIm91dHB1dF9jbG9zZWQiLCJ0cmFuc2ZlciQwIiwidHJhbnNmZXJfaWQiLCJtYXBfZ2VuIiwiY29uY2F0X21hcF9saXN0IiwiZmlsdGVyX21hcCQwIiwiZm9sZGluZ19maWx0ZXJfbWFwIiwiZm9sZGluZ19maWx0ZXJfbWFwJDAiLCJmb2xkaW5nX21hcCIsImFjY3VtJDAiLCJvZl9xdWV1ZV9pbnRlcm5hbCIsIm9mX3F1ZXVlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJ3cml0ZXIiLCJyZWFkZXIiLCJvZl9zZXF1ZW5jZSIsInNlcXVlbmNlJDEiLCJzZXF1ZW5jZSQwIiwidG9fc2VxdWVuY2UiLCJpbnRlcmxlYXZlX3BpcGUiLCJpbnB1dHMiLCJvdXRwdXRfd3JpdGVyIiwibnVtX3BpcGVzX3JlbWFpbmluZyIsImRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyIsImhlYXAiLCJoYW5kbGVfcmVhZCIsImVvZl9vcl9vayIsInBvcF9oZWFwX2FuZF9sb29wIiwiaW5pdGlhbF9wdXNoIiwiY29uY2F0X3BpcGUiLCJmb3JrIiwicHVzaGJhY2tfdXNlcyIsIndyaXRlcjAiLCJyZWFkZXIwIiwid3JpdGVyMSIsInJlYWRlcjEiLCJzb21lX3JlYWRlcl93YXNfY2xvc2VkIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCQwIiwic3RpbGxfb3BlbiIsImZpbHRlcl9vcGVuIiwic3RpbGxfb3BlbiQwIiwic2V0X2luZm8iLCJ2YWx1ZV9hdmFpbGFibGUiLCJzZXRfdmFsdWVfYXZhaWxhYmxlIiwidGFrZW4iLCJjdXJyZW50X3ZhbHVlIiwidmFsdWVfYXZhaWxhYmxlJDAiLCJ0YWtlbiQwIiwiY3VycmVudF92YWx1ZSQwIiwidmFsdWVfYXZhaWxhYmxlJDEiLCJ4XzAxMCIsInRha2VuXzAwNiIsImN1cnJlbnRfdmFsdWVfMDA0IiwidmFsdWVfYXZhaWxhYmxlXzAwOCIsImJuZHNfMDAzIiwiYm5kc18wMDMkMCIsImJuZHNfMDAzJDEiLCJ2YWx1ZV9hdmFpbGFibGVfZnVuIiwiYV8wMTEiLCJiXzAxMiIsInRha2VuX2Z1biIsImN1cnJlbnRfdmFsdWVfZnVuIiwicGVla19leG4iLCJ4XzAxMyIsIm9mX2FfMDE0IiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3Iiwid3JpdGVfb25seSIsInRha2Vfbm9uZW1wdHkiLCJ0YWtlX25vd19leG4iLCJ0YWtlX25vdyIsInRha2UiLCJ1cGRhdGVfZXhuIiwidGFrZW4kMSIsInB1dCIsInBpcGVfd2hlbl9yZWFkeSIsInJlc3RfZXhuIiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sIiwic3ltYm9sJDAiLCJzZXhwX29mX3QiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm1hcCIsInNleHBfb2ZfdCQwIiwiY3JlYXRlIiwiZG9uX3Rfd2FpdF9mb3IiLCJpbnZhcmlhbnQiLCJpc19kZXRlcm1pbmVkIiwibmV2ZXIiLCJwZWVrIiwidW5pdCIsInZhbHVlX2V4biIsInVwb24iLCJib3RoIiwidDEiLCJ0MiIsInJlc3VsdCIsImExIiwiYTIiLCJvayIsImlnbm9yZV9tIiwiYW55IiwidHMiLCJ4IiwiYW55X3VuaXQiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwibG9vcCIsImZvbGRpIiwiaW5pdCIsImkiLCJiIiwieHMiLCJmb2xkIiwiYSIsInNlcW1hcGkiLCJicyIsImFsbCQwIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJpdGVyaSIsImhvdyIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJhYyIsImZpbHRlcl9tYXBpIiwiY29uY2F0X21hcGkiLCJmaW5kX21hcGkiLCJ0bCIsImhkIiwic29tZSIsImZpbmRpIiwiZWx0IiwiZmluZCIsImV4aXN0c2kiLCJmb3JfYWxsaSIsIml0ZXIiLCJtYXAkMSIsImZpbHRlciIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJleGlzdHMiLCJmb3JfYWxsIiwibiIsImFsbF91bml0JDAiLCJjb21iaW5lIiwiZXJyIiwiZXJyb3IiLCJyIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwibWFwX2Vycm9yIiwiam9pbiIsInN5bWJvbF9iaW5kIiwiYXBwbHkiLCJlMSIsImUyIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsIm9rX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSIsImV4biIsIm9mX2V4bl9yZXN1bHQiLCJtc2ciLCJ2Iiwic2V4cF9vZiIsImVycm9yX3MiLCJzZXhwIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsIm1lc3NhZ2UiLCJzZXhwX29mX2EiLCJ1bmltcGxlbWVudGVkIiwiY29tYmluZV9lcnJvcnMiLCJsIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImVycm9ycyIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCIsImV4dHJhY3RfZXhuIiwicnVuJDAiLCJyZXN0IiwiaGVyZSIsIm5hbWUiLCJydW4iLCJ0cnlfd2l0aF9qb2luIiwibGlzdCIsImFjYyIsInN0YXRlJDAiLCJ1cG9uJDEiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwicG9zJDAiLCJwb3MiLCJhbGwiLCJzZXhwX29mX3QiLCJzZXhwX29mX3QkMCIsImNhbGxiYWNrIiwiciIsImNhbGxiYWNrJDAiLCJ2Iiwic2V4cF9vZl90JDEiLCJleHRyYWN0X2V4biIsInN1YnNjcmliZXJzX2luZGV4Iiwic3Vic2NyaWJlZF9mcm9tIiwib25fY2FsbGJhY2tfcmFpc2UiLCJtYXRjaCQxIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJyZXMiLCJoIiwiY2FsbGJhY2tzIiwic2V0X2NhbGxiYWNrcyIsInN1YnNjcmliZXJzIiwic2V0X3N1YnNjcmliZXJzIiwibnVtX3N1YnNjcmliZXJzIiwic2V0X251bV9zdWJzY3JpYmVycyIsImNhbGxiYWNrX2FyaXR5IiwiY2FsbGJhY2tzJDAiLCJzdWJzY3JpYmVycyQwIiwibnVtX3N1YnNjcmliZXJzJDAiLCJzZXhwX29mX2J1cyIsIm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93ciIsImNyZWF0ZWRfZnJvbSIsIm5hbWUiLCJzdGF0ZSIsIndyaXRlX2V2ZXJfY2FsbGVkIiwiaSIsIm1hdGNoIiwicmVhZF9vbmx5IiwidCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwieF8wMTEiLCJjaGVjayIsImYiLCJjYWxsYmFja3NfZnVuIiwic3Vic2NyaWJlcnNfZnVuIiwic3Vic2NyaWJlciIsInN1YnNjcmliZXIkMCIsInhfMDA1IiwiY2FsbGJhY2tfZnVuIiwibnVtX3N1YnNjcmliZXJzX2Z1biIsImlzX2Nsb3NlZCIsInNleHBfb2ZfdCQyIiwib2ZfY2FsbGJhY2tfMDEyIiwieF8wMTMiLCJpbnZhcmlhbnQkMCIsInNleHBfb2ZfdCQzIiwib2ZfY2FsbGJhY2tfMDE0IiwieF8wMTUiLCJpbnZhcmlhbnQkMSIsInN0YXJ0X3dyaXRlX2ZhaWxpbmciLCJ4XzAxNiIsInhfMDE3IiwiY2FwYWNpdHkiLCJtYXliZV9zaHJpbmtfY2FwYWNpdHkiLCJkZXNpcmVkX2NhcGFjaXR5IiwiY29weV9hbmRfc2hyaW5rIiwiYXJyYXkiLCJuZXdfYXJyYXkiLCJhZGRfc3Vic2NyaWJlciIsImF0X3N1YnNjcmliZXJzX2luZGV4IiwicmVtb3ZlX3N1YnNjcmliZXIiLCJ1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWIiLCJzdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyIiwidW5zdWJzY3JpYmUiLCJ0byIsInVuc3Vic2NyaWJlX2FsbCIsIm9uX2Nsb3NlIiwiZmluaXNoX3dyaXRlIiwiY2xvc2UiLCJjYWxsX29uX2NhbGxiYWNrX3JhaXNlIiwiZXJyb3IiLCJleG4kMCIsImV4biIsImNhbGxiYWNrX3JhaXNlZCIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlIiwidW5zYWZlX2dldF9jYWxsYmFjayIsImEiLCJ3cml0ZSIsImExIiwibGVuIiwibGFzdF92YWx1ZSIsIndyaXRlX2xvY2FsIiwid3JpdGUyIiwiYTIiLCJ3cml0ZTMiLCJhMyIsIndyaXRlNCIsImE0Iiwid3JpdGU1IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCJjcmVhdGVfZXhuIiwiY2FuX3N1YnNjcmliZSIsInN1YnNjcmliZV9leG4iLCJ4XzAxOSIsImJ1c19pZCQwIiwiYnVzX2lkIiwiY2FwYWNpdHkkMCIsIm5ld19jYXBhY2l0eSIsImNvcHlfYW5kX2RvdWJsZSIsImFyZzEkMCIsImFyZzEkMSIsImFyZzIkMCIsImFyZzEkMiIsImFyZzIkMSIsImFyZzMkMCIsImFyZzEkMyIsImFyZzIkMiIsImFyZzMkMSIsImFyZzQkMCIsIml0ZXJfZXhuIiwieF8wMjAiLCJzZXhwX29mX3QkNCIsImZvbGRfZXhuIiwiZm9sZF9hcml0eSIsImluaXQiLCJ4XzAzMCIsImE1IiwiYXNzZXJ0X25vX2FsbG9jYXRpb24iLCJidXNfciIsInN0YXJ0aW5nX21pbm9yX3dvcmRzIiwic3RhcnRpbmdfbWFqb3Jfd29yZHMiLCJlbmRpbmdfbWlub3Jfd29yZHMiLCJlbmRpbmdfbWFqb3Jfd29yZHMiLCJnb3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMzEiLCJiXzAzMiIsImdvdCQwIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJhXzAzMyIsImJfMDM0IiwiY3JlYXRlIiwiYXJpdHkiLCJidXMxIiwiYnVzMiIsImJ1czMiLCJidXM0IiwiYnVzNSIsImR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbiIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJlIiwiY29ubiIsIm9uX2V2ZW50IiwiYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0IiwiY3VycmVudF9jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsImlzX2Nsb3NlZCQwIiwiY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0Iiwic2V4cF9vZl90JDEiLCJwYXJhbSIsImNvbm5fMDIzIiwibmV4dF9jb25uZWN0X3Jlc3VsdF8wMjYiLCJkb25fdF9yZWNvbm5lY3RfMDM2IiwiY2xvc2VfZmluaXNoZWRfMDM0IiwiY2xvc2Vfc3RhcnRlZF8wMzIiLCJldmVudF9idXNfMDMwIiwiZXZlbnRfaGFuZGxlcl8wMjgiLCJhcmdfMDQxIiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYXJnXzAxNCIsImJuZHNfMDEwIiwiYXJnXzAxMiIsImJuZHNfMDEwJDAiLCJhcmdfMDI5IiwiYm5kc18wMTYkNSIsImFyZ18wMjciLCJibmRzXzAxNiQ2IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiZXZlbnRfYnVzIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwicmFuZG9tX3N0YXRlIiwidGltZV9zb3VyY2UiLCJldmVudF9oYW5kbGVyIiwiZGVmYXVsdF9yZXRyeV9kZWxheSIsIm5vbl9yYW5kb21pemVkX2RlbGF5IiwicmV0cnlfZGVsYXlfc3BhbiIsInJhbmRvbV9zdGF0ZSQwIiwic3BhbiIsInNwYW4kMCIsImRpc3RhbmNlIiwid2FpdCIsInJldHJ5X2RlbGF5IiwicHJldmlvdXNfYWRkcmVzcyIsInByZXZpb3VzX2Vycm9yIiwiYWRkciIsInByZXZpb3VzX2FkZHJlc3MkMCIsInNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJzYW1lX2FzX3ByZXZpb3VzX2Vycm9yIiwiYWxsIiwiZXJyb3Jfc291cmNlXzAwNSIsInJldGlyZWRfa3JiX3dvcmQiLCJjb21wYXJlIiwidF9vZl9zZXhwIiwic2V4cF8wMDYiLCJzZXhwX29mX3QiLCJncm91cCIsIm1hZ2ljX3dvcmQiLCJnZW5fbWFnaWNfbnVtYmVyIiwid29yZCIsImFjYyIsImMiLCJtYWdpY19udW1iZXIiLCJ0IiwicCIsImJ5X21hZ2ljX251bWJlciIsImFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZSIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJtYXhfc3VwcG9ydGVkX3ZlcnNpb24iLCJvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl8iLCJudW0iLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIiwiY3JlYXRlX2V4biIsInByb3RvY29sIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwiYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIiwicHJvdG9jb2xfbWFnaWNfbnVtYmVyIiwicmF3X3ZlcnNpb25fbGlzdCIsImdldF9wcm90b2NvbCIsInZlcnNpb25zIiwicHJvdG9jb2xzIiwibmVnb3RpYXRlIiwiYWxsb3dfbGVnYWN5X3BlZXIiLCJ1cyIsInBlZXIiLCJ1c192ZXJzaW9ucyIsInVzX3Byb3RvY29sIiwicGVlcl92ZXJzaW9ucyIsInBlZXJfcHJvdG9jb2wiLCJ2ZXJzaW9uIiwieCIsIm1hdGNoZXNfbWFnaWNfcHJlZml4IiwiY29udGFpbnNfbWFnaWNfcHJlZml4IiwiZiIsImFueV9tYWdpY19wcmVmaXgiLCJncm91cCQwIiwiYmluX3NpemVfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRlcl90JDAiLCJhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGUkMCIsImJvdW5kZWRfbGlzdF9iaW5fc2l6ZSIsImJpbl9zaGFwZV90IiwiYmluX3QiLCJiaW5fc2l6ZV90IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYnVmIiwicG9zX3JlZiIsInZuYXQwIiwib2ZfaW50X2V4biIsIm9mX3dyaXRlciIsIndyaXRlIiwic2l6ZSIsIndyaXRlJDAiLCJwb3MiLCJhIiwibGVuIiwicG9zJDAiLCJzaXplJDAiLCJvZl90eXBlX2NsYXNzIiwiYmluX2EiLCJ0ZXN0IiwicyIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ192ZXJzaW9uIiwid3JpdGVyX3dpdGhfbGVuZ3RoIiwid2l0aF9sZW5ndGhfdmVyc2lvbiIsInBvdyIsIngiLCJkZXNjcmlwdGlvbnMiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZ3JvdXAiLCJ2MiIsInYxIiwidmludCIsInZfbmFtZSIsInZfdmVyc2lvbiIsImVxdWFsIiwiYV8wMDEiLCJiXzAwMiIsImNvbXBhcmUiLCJhXzAwMyIsImJfMDA0IiwibiIsImhhc2hfZm9sZF90IiwiaHN2IiwiYXJnIiwiaHN2JDAiLCJoYXNoIiwidF9vZl9zZXhwIiwieF8wMDciLCJ2ZXJzaW9uIiwibmFtZSIsInNleHBfb2ZfdCIsInZlcnNpb25fMDExIiwibmFtZV8wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsInN1bW1hcml6ZSIsInRzIiwic3VtbWFyeSIsImJpbmQiLCJ0IiwiZiIsImJpbmRfZGVmZXJyZWQiLCJtYXBfZGVmZXJyZWQiLCJsaWZ0X2RlZmVycmVkIiwiZXJyJDAiLCJlcnIiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsInY1Iiwic2l6ZSQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQwIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQxIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDIiLCJ2X21ldGFkYXRhIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDkyIiwibWV0YWRhdGFfMDkwIiwiaWRfMDg4IiwidmVyc2lvbl8wODYiLCJ0YWdfMDg0IiwiYXJnXzA5MyIsImJuZHNfMDgzIiwiYXJnXzA5MSIsImJuZHNfMDgzJDAiLCJhcmdfMDg5IiwiYm5kc18wODMkMSIsImFyZ18wODciLCJibmRzXzA4MyQyIiwiYXJnXzA4NSIsImJuZHNfMDgzJDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsInRvX3YxIiwiZGF0YSIsImlkIiwidGFnIiwib2ZfdjEiLCJtZXRhZGF0YSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDEiLCJvZl9hXzA5NCIsImRhdGFfMDk4IiwiaWRfMDk2IiwiYXJnXzA5OSIsImJuZHNfMDk1IiwiYXJnXzA5NyIsImJuZHNfMDk1JDAiLCJiaW5fcmVhZF90JDkiLCJiaW5fcmVhZF90JDEwIiwiYmluX3JlYWRlcl90JDQiLCJncm91cCQ1IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQyIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDUiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkNiIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fbmVlZHNfbGVuZ3RoJDIiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3JlYWRfbmF0MF90IiwiYmluX3JlYWRfbmF0MF90JDAiLCJiaW5fcmVhZGVyX25hdDBfdCIsImJpbl9zaXplX25hdDBfdCIsImJpbl93cml0ZV9uYXQwX3QiLCJiaW5fd3JpdGVyX25hdDBfdCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfdCQyIiwicmVzcG9uc2UiLCJlcnJvciIsImJpbl9zaXplX3QkMiIsInNpemVfb2ZfcmVzcG9uc2UiLCJzaXplX29mX2Vycm9yIiwiYmluX3dyaXRlX3QkMiIsIndyaXRlX3Jlc3BvbnNlIiwid3JpdGVfZXJyb3IiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl93cml0ZXJfcmVzcG9uc2UiLCJiaW5fd3JpdGVyX2Vycm9yIiwiYmluX3JlYWRfdCQxMyIsIm9mX3Jlc3BvbnNlIiwib2ZfZXJyb3IiLCJiaW5fcmVhZF90JDE0Iiwidl91bnVzZWRfcXVlcnlfaWQiLCJ2X2luaXRpYWwiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkZXJfcmVzcG9uc2UiLCJiaW5fcmVhZGVyX2Vycm9yIiwiYmluX3QkMiIsImJpbl9yZXNwb25zZSIsImJpbl9lcnJvciIsInNleHBfb2ZfdCQyIiwib2ZfcmVzcG9uc2VfMTAwIiwib2ZfZXJyb3JfMTAxIiwiaW5pdGlhbF8xMDUiLCJ1bnVzZWRfcXVlcnlfaWRfMTAzIiwiYXJnXzEwNiIsImJuZHNfMTAyIiwiYXJnXzEwNCIsImJuZHNfMTAyJDAiLCJncm91cCQ3IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQzIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDciLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkOCIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fbmVlZHNfbGVuZ3RoJDMiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDEiLCJiaW5fcmVhZF9uYXQwX3QkMiIsImJpbl9yZWFkZXJfbmF0MF90JDAiLCJiaW5fc2l6ZV9uYXQwX3QkMCIsImJpbl93cml0ZV9uYXQwX3QkMCIsImJpbl93cml0ZXJfbmF0MF90JDAiLCJncm91cCQ4IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQ0IiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDkiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMTAiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX25lZWRzX2xlbmd0aCQ0Iiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMiIsIm9mX2FfMTA3IiwiYXJnMF8xMDgiLCJyZXMwXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZGVyX3QkOCIsImJpbl9yZWFkX25hdDBfdCQzIiwiYmluX3JlYWRfbmF0MF90JDQiLCJiaW5fcmVhZGVyX25hdDBfdCQxIiwiYmluX3NpemVfbmF0MF90JDEiLCJiaW5fd3JpdGVfbmF0MF90JDEiLCJiaW5fd3JpdGVyX25hdDBfdCQxIiwicXVlcnlfaWQiLCJ2MV9xdWVyeSIsInYxX3N0ciIsInYyX3N0ciIsImNhbGxlcl9pZGVudGl0eSIsInYyJDAiLCJ2X3F1ZXJ5Iiwidl9yZXNwb25zZSIsInZfbXNnIiwidl9xdWVyeSQwIiwidl9pbml0aWFsX3Jlc3BvbnNlIiwidl91cGRhdGVfcmVzcG9uc2UiLCJ2X2Vycm9yIiwidF9vZl9zZXhwJDAiLCJzZXhwc18wMTAiLCJ1cGRhdGVfcmVzcG9uc2UiLCJpbml0aWFsX3Jlc3BvbnNlIiwicXVlcnkiLCJzZXhwc18wMDYiLCJzZXhwc18wMDgiLCJtc2ciLCJyZXNwb25zZV8wMTQiLCJxdWVyeV8wMTIiLCJhcmdfMDE1IiwiYm5kc18wMTEiLCJhcmdfMDEzIiwiYm5kc18wMTEkMCIsIm1zZ18wMTciLCJhcmdfMDE4IiwiYm5kc18wMTYiLCJlcnJvcl8wMjYiLCJ1cGRhdGVfcmVzcG9uc2VfMDI0IiwiaW5pdGlhbF9yZXNwb25zZV8wMjIiLCJxdWVyeV8wMjAiLCJhcmdfMDI3IiwiYm5kc18wMTkiLCJhcmdfMDI1IiwiYm5kc18wMTkkMCIsImFyZ18wMjMiLCJibmRzXzAxOSQxIiwiYXJnXzAyMSIsImJuZHNfMDE5JDIiLCJyZXNwb25zZV8wMzEiLCJxdWVyeV8wMjkiLCJhcmdfMDMyIiwiYm5kc18wMjgiLCJhcmdfMDMwIiwiYm5kc18wMjgkMCIsIm1zZ18wMzQiLCJhcmdfMDM1IiwiYm5kc18wMzMiLCJlcnJvcl8wNDMiLCJ1cGRhdGVfcmVzcG9uc2VfMDQxIiwiaW5pdGlhbF9yZXNwb25zZV8wMzkiLCJxdWVyeV8wMzciLCJhcmdfMDQ0IiwiYm5kc18wMzYiLCJhcmdfMDQyIiwiYm5kc18wMzYkMCIsImFyZ18wNDAiLCJibmRzXzAzNiQxIiwiYXJnXzAzOCIsImJuZHNfMDM2JDIiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJieXRlc19yZWFkIiwicmVhZF9mb3JldmVyIiwib25fbWVzc2FnZSIsIm9uX2VuZF9vZl9iYXRjaCIsInJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QiLCJiaW5fcmVhZGVyIiwicGFjayQwIiwiY2xvc2UkMCIsImlzX2Nsb3NlZCQwIiwibW9uaXRvciIsImJ5dGVzX3RvX3dyaXRlIiwiYnl0ZXNfd3JpdHRlbiIsImZsdXNoZWQiLCJyZWFkeV90b193cml0ZSIsInNlbmRfYmluX3Byb3QiLCJiaW5fd3JpdGVyIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vIiwic3RvcHBlZCIsImNhbl9zZW5kIiwidHJhbnNmZXIiLCJwaXBlIiwibWF4X251bV92YWx1ZXNfcGVyX3JlYWQiLCJjb25zdW1lciIsImVuZF9vZl9waXBlIiwiaXZhciIsIml0ZXIiLCJxIiwid3JpdGVyXzAwNiIsInJlYWRlcl8wMDQiLCJhcmdfMDA3IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiY2xvc2UkMSIsImNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuXyIsImNhbGxiYWNrXzAwMiIsImNsb3NlX2Nvbm5lY3Rpb24iLCJjb250aW51ZSQwIiwiaGFuZGxlX2V4biIsImNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciIsImV4biIsImNhbGxiYWNrIiwid3JpdGVyXzAwNCIsInF1ZXJ5X2lkXzAwMiIsInJlc3BvbmRlZF8wMDYiLCJibmRzXzAwMSQxIiwiY3JlYXRlIiwid3JpdGVyIiwibGlmdCIsImltcGwiLCJiaW5fbXNnIiwiaW1wbCQwIiwic3RhdGUiLCJzdHIiLCJhdXRob3JpemVkX3N0YXRlIiwiaW1wbCQxIiwiaW1wbCQyIiwiYmluX3F1ZXJ5IiwiaW1wbCQzIiwiaW1wbCQ0IiwiaW1wbCQ1IiwiaW1wbCQ2IiwicmVzcCIsImltcGwkNyIsImltcGwkOCIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciIsImltcGwkOSIsImltcGwkMTAiLCJpbXBsJDExIiwidyIsIm9mX2Nvbm5lY3Rpb25fc3RhdGVfMDE0Iiwib25fZXhjZXB0aW9uXzAyNCIsInNoYXBlc18wMjIiLCJmXzAyMCIsInZlcnNpb25fMDE4IiwidGFnXzAxNiIsImJuZHNfMDE1IiwiYm5kc18wMTUkMCIsImJuZHNfMDE1JDEiLCJhcmdfMDE5IiwiYm5kc18wMTUkMiIsImFyZ18wMTciLCJibmRzXzAxNSQzIiwiZGVzY3JpcHRpb24iLCJzaGFwZXMiLCJsaWZ0JDAiLCJiIiwid2l0aF9hdXRob3JpemF0aW9uIiwibGlmdF9kZWZlcnJlZCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsImxvY2FsX3N0b3JhZ2Vfa2V5IiwiZ2V0Iiwid2l0aF9tZXRhZGF0YSIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiYWRkX2xlbiQwIiwiYWRkX2xlbiQxIiwiZSQwIiwiZSIsInN5bWJvbCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAyNCIsImFyZzFfMDI2IiwiYXJnMF8wMjUiLCJyZXMwXzAyNyIsInJlczFfMDI4IiwiYXJnXzAyMiIsImJuZHNfMDA4JDEiLCJhcmdfMDIwIiwiYm5kc18wMDgkMiIsImJuZHNfMDA4JDMiLCJhcmdfMDE2IiwiYm5kc18wMDgkNCIsImFyZ18wMTQiLCJibmRzXzAwOCQ1IiwiYm5kc18wMDgkNiIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJyZXN1bHQiLCJzZXhwIiwieF8wMzQiLCJ3cml0ZV9tZXNzYWdlIiwiYmluX3dyaXRlcl9kYXRhIiwiYmluX3dyaXRlX3ZvaWQiLCJidWZmZXIiLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXMiLCJiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCIsInN0cl9sZW4iLCJuZXh0IiwiYmluX3NpemVfbmF0MF9oZWFkZXIiLCJoZWFkZXJfcHJlZml4IiwiZGF0YV9sZW4iLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiIsImJpbl93cml0ZV9uYXQwX2hlYWRlciIsImJpbl93cml0ZXJfbmF0MF9oZWFkZXIiLCJiaW5fc2l6ZV9tZXNzYWdlIiwiYmluX3dyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX21lc3NhZ2UiLCJiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmciLCJwcmVwX3dyaXRlIiwiY2xvc2VkIiwiaW5zdGFuY2UiLCJ3cml0ZV9lb2YiLCJ3cml0ZV9tZXNzYWdlJDAiLCJjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW4iLCJncm91cHMiLCJlbGVtZW50X2luX2dyb3VwIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2skMCIsInQkMCIsIm1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiIsIm9uX2V4Y2VwdGlvbiIsImF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQiLCJycGNfa2luZCIsImFwcGx5X2ltcGxlbWVudGF0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJmJDMiLCJiaW5fcXVlcnlfcmVhZGVyJDAiLCJxdWVyeV9jb250ZW50cyIsImV4biQwIiwiZiQ0IiwibGVuJDAiLCJyZXN1bHRfbW9kZSIsImYkNSIsImJpbl9yZXNwb25zZV93cml0ZXIiLCJiaW5fcXVlcnlfcmVhZGVyJDEiLCJxdWVyeV9jb250ZW50cyQwIiwib3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsIiwiZGF0YSQwIiwiZGF0YSQxIiwiZXhuJDEiLCJiYWNrdHJhY2UiLCJyZXN1bHRfbW9kZSQwIiwiZiQ2IiwicmVzcG9uZGVyIiwiZCIsImNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IiwicmVzdWx0JDAiLCJjaGVja19yZXNwb25kZWQiLCJkJDAiLCJyIiwic3RyZWFtaW5nX3JwYyIsInN0cmVhbV9xdWVyeSIsImxlbiQxIiwic3RyZWFtX3dyaXRlciIsImltcGxfd2l0aF9zdGF0ZSIsImYkMiIsIndyaXRlciQwIiwicnVuX2ltcGwiLCJzcGxpdF9vayIsImhhbmRsZV9vayIsImVycm9yJDAiLCJvayIsImluaXRpYWwiLCJmJDAiLCJwaXBlX3IiLCJmJDEiLCJmbHVzaCIsInByb2R1Y2Vyc19mbHVzaGVkIiwiYWNjIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsImltcGxlbWVudGF0aW9uJDEiLCJvbl9leGNlcHRpb24kMCIsImltcGxlbWVudGF0aW9uJDIiLCJpX3MiLCJkdXBzIiwiaSIsImluc3RhbnRpYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsInVucGFja2VkIiwiY3JlYXRlX2V4biIsIm51bGwkMCIsImFkZF9leG4iLCJkZXNjIiwiYWRkIiwiaW1wbGVtZW50YXRpb25zJDAiLCJvbl91bmtub3duX3JwYyQwIiwiY2FsbCIsImV4cGVydCIsImNhbm5vdF9zZW5kIiwieF8wMzkiLCJtYXJrX3Jlc3BvbmRlZCIsInNjaGVkdWxlIiwiaGVhZGVyIiwiaGFuZGxlX3NlbmRfcmVzdWx0JDAiLCJ3cml0ZV9iaWdzdHJpbmciLCJ3cml0ZV9iaW5fcHJvdCIsImVycm9yX3NvdXJjZV8wMzgiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInN1cHBvcnRlZF92ZXJzaW9ucyIsImRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciIsInF1ZXJ5X21lc3NhZ2UiLCJzZW5kX2V2ZXJ5IiwidGltZW91dCIsInNlbmRfZXZlcnlfMDQzIiwidGltZW91dF8wNDEiLCJibmRzXzA0MCIsImJuZHNfMDQwJDAiLCJ2X3RpbWVvdXQiLCJ2X3NlbmRfZXZlcnkiLCJjcmVhdGUkMCIsInNleHBfb2ZfdCQzIiwiaGVhcnRiZWF0X2NvbmZpZ18wNTMiLCJkZXNjcmlwdGlvbl8wNTEiLCJoZWFydGJlYXRfY2FsbGJhY2tzXzA1NSIsImxhc3Rfc2Vlbl9hbGl2ZV8wNTciLCJuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25fMDciLCJoZWFydGJlYXRfZXZlbnRfMDc1IiwidGltZV9zb3VyY2VfMDczIiwiaW1wbGVtZW50YXRpb25zX2luc3RhbmNlXzA3MSIsImNsb3NlX2ZpbmlzaGVkXzA2OSIsImNsb3NlX3N0YXJ0ZWRfMDY3Iiwib3Blbl9xdWVyaWVzXzA2NSIsIndyaXRlcl8wNjMiLCJyZWFkZXJfMDYxIiwibWF4X21ldGFkYXRhX3NpemVfMDU5IiwiYXJnXzA3OCIsImJuZHNfMDUwIiwiYXJnXzA3NiIsImJuZHNfMDUwJDAiLCJhcmdfMDc0IiwiYm5kc18wNTAkMSIsImFyZ18wNzIiLCJibmRzXzA1MCQyIiwiYXJnXzA3MCIsImJuZHNfMDUwJDMiLCJhcmdfMDY4IiwiYm5kc18wNTAkNCIsImFyZ18wNjYiLCJibmRzXzA1MCQ1Iiwid3JpdGVyXzAzNSIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbl8wMyIsImFyZ18wMzYiLCJibmRzXzAzMiIsImFyZ18wMzQiLCJibmRzXzAzMiQwIiwiYXJnXzA2NCIsImJuZHNfMDUwJDYiLCJhcmdfMDYyIiwiYm5kc18wNTAkNyIsImFyZ18wNjAiLCJibmRzXzA1MCQ4IiwiYXJnXzA1OCIsImJuZHNfMDUwJDkiLCJhcmdfMDU2IiwiYm5kc18wNTAkMTAiLCJ0aW1lb3V0XzA0NiIsInNlbmRfZXZlcnlfMDQ4IiwiYXJnXzA0OSIsImJuZHNfMDQ1IiwiYXJnXzA0NyIsImJuZHNfMDQ1JDAiLCJhcmdfMDU0IiwiYm5kc18wNTAkMTEiLCJhcmdfMDUyIiwiYm5kc18wNTAkMTIiLCJzZXhwX29mX3RfaHVtX3dyaXRlciIsInhfMDc5IiwiZGlzcGF0Y2giLCJyZXNwb25zZV9oYW5kbGVyIiwiYmluX3dyaXRlcl9xdWVyeSIsInF1ZXJ5JDAiLCJtZXNzYWdlIiwibWFrZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImR1bW15X2J1ZmZlciIsImR1bW15X3JlZiIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IiwiY3JlYXRlJDEiLCJoYW5kc2hha2VfdGltZW91dCIsImhlYXJ0YmVhdF9jb25maWciLCJtYXhfbWV0YWRhdGFfc2l6ZSIsInRpbWVfc291cmNlIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiIsImhlYXJ0YmVhdF9mcm9tX25vd19vbiIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODIiLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJxdWVyeSQxIiwiaW5zdGFuY2UkMCIsInBlZXIiLCJ3aXRoX2Nsb3NlIiwidHJhbnNwb3J0IiwiZGlzcGF0Y2hfcXVlcmllcyIsIm9uX2hhbmRzaGFrZV9lcnJvciIsImhhbmRsZV9oYW5kc2hha2VfZXJyb3IiLCJzZXJ2ZXJfd2l0aF9jbG9zZSIsIm9uX2hhbmRzaGFrZV9lcnJvciQwIiwid2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCIsImNvbnRleHQiLCJlcnJvcl9zb3VyY2VfMDA5IiwiZXJyb3Jfc291cmNlXzAyNCIsInN5bWJvbCQwIiwiZGlzcGF0Y2hfcmF3IiwiY29ubiIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInF1ZXJ5X3R5cGVfaWQiLCJyZXNwb25zZV90eXBlX2lkIiwiaW1wbGVtZW50IiwiaW1wbGVtZW50JDAiLCJyZXNwb25zZSQwIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciIsImRpc3BhdGNoJDAiLCJkaXNwYXRjaF9leG4iLCJtYWtlX2Rpc3BhdGNoIiwiZG9fZGlzcGF0Y2giLCJycGNfdGFnIiwiaGFuZGxlX3Jlc3BvbnNlIiwiaGFuZGxlX2Vycm9yIiwieF8wMDIiLCJkaXNwYXRjaCQxIiwic2NoZWR1bGVfZGlzcGF0Y2giLCJkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIiwiYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiIsImltcGxlbWVudCQxIiwiaW1wbGVtZW50JDIiLCJpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJDAiLCJ2ZXJzaW9uJDAiLCJuYW1lJDAiLCJtc2dfdHlwZV9pZCIsInNoYXBlcyQwIiwiZGVzY3JpcHRpb24kMCIsImltcGxlbWVudCQzIiwiZGlzcGF0Y2gkMiIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IkMCIsImRpc3BhdGNoJDMiLCJkaXNwYXRjaF9leG4kMCIsImltcGxlbWVudCQ0IiwiZGlzcGF0Y2gkNCIsInNjaGVkdWxlX2Rpc3BhdGNoJDAiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNsaWVudF9wdXNoZXNfYmFjayIsImJpbl9pbml0aWFsX3Jlc3BvbnNlIiwiYmluX3VwZGF0ZV9yZXNwb25zZSIsImFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZSIsImNsaWVudF9wdXNoZXNfYmFjayQwIiwiaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIiwidXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQiLCJlcnJvcl9yZXNwb25zZV90eXBlX2lkIiwibWFrZV9pbml0aWFsX21lc3NhZ2UiLCJpbXBsZW1lbnRfZ2VuIiwiaW1wbGVtZW50JDUiLCJjIiwiaW1wbGVtZW50X2RpcmVjdCIsImFib3J0IiwicmVhZF9lcnJvciIsImhhbmRsZXIiLCJjb3JlX2VyciIsImRpc3BhdGNoX2dlbiIsIm1ha2VfdXBkYXRlX2hhbmRsZXIiLCJpbml0aWFsX3N0YXRlIiwiaW5pdGlhbF9oYW5kbGVyIiwiZXJyJDEiLCJpbml0aWFsX21zZyIsImluaXRpYWwkMCIsImV4dHJhIiwiaGFuZGxlciQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJlcnIkNCIsImVyciQzIiwiZXJyJDIiLCJkaXNwYXRjaCQ1IiwicGlwZV93IiwiaW5pdCIsInBpcGVfbWV0YWRhdGEiLCJjcmVhdGUkMiIsImJpbl9xdWVyeSQwIiwiYmluX3Jlc3BvbnNlJDAiLCJpbXBsZW1lbnQkNiIsImNyZWF0ZSQzIiwiaW5pdGlhbF9zaXplIiwiY3JlYXRlJDQiLCJidWZmZXIkMCIsImxlbmd0aCIsIm9uZSIsIm9uZSQwIiwid3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAiLCJncm91cF9lbGVtZW50X2luX3dyaXRlciIsInJlbW92ZSIsInRvX2xpc3QiLCJmbHVzaGVkX29yX2Nsb3NlZCIsImRpcmVjdF9zdHJlYW1fd3JpdGVyIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQxIiwid3JpdGUkMSIsImltcGxlbWVudF9kaXJlY3QkMCIsImRpc3BhdGNoJDYiLCJkaXNwYXRjaF9leG4kMSIsInBpcGVfYW5kX2lkIiwiZGlzcGF0Y2hfaXRlciIsIm5hbWUkMSIsInZlcnNpb24kMSIsImRlc2NyaXB0aW9uJDEiLCJxdWVyeV90eXBlX2lkJDAiLCJlcnJvcl90eXBlX2lkIiwicmVzcG9uc2VfdHlwZV9pZCQwIiwiY3JlYXRlJDUiLCJiaW5fc3RhdGUiLCJiaW5fdXBkYXRlIiwiYmluX3F1ZXJ5JDEiLCJiaW5fZXJyb3IkMCIsImRpc3BhdGNoJDciLCJ1cGRhdGVfciIsIm5hbWUkMiIsInZlcnNpb24kMiIsImRlc2NyaXB0aW9uJDIiLCJxdWVyeV90eXBlX2lkJDEiLCJzdGF0ZV90eXBlX2lkIiwidXBkYXRlX3R5cGVfaWQiLCJlcnJvcl90eXBlX2lkJDAiLCJkZXNjcmlwdGlvbiQzIiwicnBjIiwicnBjJDAiLCJycGMkMSIsInJwYyQyIiwidGhlX3JwYyIsIm5vdF90aGVfcnBjIiwicnBjX25hbWUkMCIsImlucHV0IiwiY29udmVydCIsImZhaWxlZF9jb252ZXJzaW9uIiwiYXJnM18wMDYiLCJhcmcyXzAwNSIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNyIsInZfMDAxIiwicmVzMV8wMDgiLCJ2XzAwMiIsInJlczJfMDA5IiwicmVzM18wMTAiLCJtdWx0aXBsZV9yZWdpc3RyYXRpb25zIiwiYXJnMV8wMTQiLCJ2XzAxMSIsInZfMDEyIiwicmVzMV8wMTYiLCJhZGFwdGVyIiwiYWRhcHRlcnMiLCJhcmcxXzAyMiIsImFyZzBfMDIxIiwicmVzMV8wMjQiLCJhZGFwdGVycyQwIiwiYWRkX3JwY192ZXJzaW9uIiwib2xkX3JwYyIsInVwZ3JhZGUiLCJkb3duZ3JhZGUiLCJhZGFwdCIsImZuIiwiYWRhcHRlZCIsIm9sZF9xdWVyeSIsImFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJ1cGdyYWRlX29yX2Vycm9yIiwiZG93bmdyYWRlX29yX2Vycm9yIiwidmFsdWUiLCJhZGRfdmVyc2lvbiIsImFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSIsInJlZ2lzdHJ5IiwiaW1wbGVtZW50X211bHRpIiwibG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvIiwibG9nX3ZlcnNpb24iLCJycGNzIiwidmVyc2lvbnMiLCJxJDAiLCJyJDAiLCJpbXBsZW1lbnRfbXVsdGlfZ2VuIiwiaW1wbGVtZW50X2RpcmVjdF9tdWx0aSIsIndyYXBwZWRfbW9kZWxfb2ZfcXVlcnkiLCJ3cmFwcGVkX2Vycm9yX29mX21vZGVsIiwiY29udmVydF9lbHQiLCJjb252ZXJ0X3BpcGUiLCJtb2RlbF9zdGF0ZSIsInN0YXRlJDAiLCJiaW5fc2hhcGVfcXVlcnkiLCJiaW5fc2l6ZV9xdWVyeSIsImJpbl93cml0ZV9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5IiwiYmluX3JlYWRfcXVlcnkkMCIsImJpbl9yZWFkZXJfcXVlcnkiLCJiaW5fc2hhcGVfc3RhdGUiLCJiaW5fc2l6ZV9zdGF0ZSIsImJpbl93cml0ZV9zdGF0ZSIsImJpbl93cml0ZXJfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSIsImJpbl9yZWFkX3N0YXRlJDAiLCJiaW5fcmVhZGVyX3N0YXRlIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3NoYXBlX2Vycm9yIiwiYmluX3NpemVfZXJyb3IiLCJiaW5fd3JpdGVfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciIsImJpbl9yZWFkX2Vycm9yJDAiLCJtb2RlbF9vZl9xdWVyeSIsInN0YXRlX29mX21vZGVsIiwiZXJyb3Jfb2ZfbW9kZWwiLCJ1cGRhdGVfb2ZfbW9kZWwiLCJiaW5fc2hhcGVfcmVzcG9uc2UiLCJiaW5fc2l6ZV9yZXNwb25zZSIsImJpbl93cml0ZV9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlIiwiYmluX3JlYWRfcmVzcG9uc2UkMCIsInJlc3BvbnNlX29mX21vZGVsIiwiYWRkJDAiLCJpbXBscyIsIm1lbnUiLCJtZW51X2ltcGxzIiwic3VwcG9ydGVkX3JwY3MiLCJvZl9lbnRyaWVzIiwiZW50cmllcyIsImF1eF9yZXF1ZXN0IiwicmVxdWVzdCIsInJlcXVlc3QkMCIsImltcGxlbWVudF9tdWx0aSQwIiwiYmluX3NoYXBlX3F1ZXJ5JDAiLCJiaW5fc2l6ZV9xdWVyeSQwIiwiYmluX3dyaXRlX3F1ZXJ5JDAiLCJiaW5fd3JpdGVyX3F1ZXJ5JDAiLCJiaW5fcmVhZF9xdWVyeSQxIiwiYmluX3JlYWRfcXVlcnkkMiIsImJpbl9yZWFkZXJfcXVlcnkkMCIsImJpbl9zaGFwZV9yZXNwb25zZSQwIiwiYmluX3NpemVfcmVzcG9uc2UkMCIsImJpbl93cml0ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlcl9yZXNwb25zZSQwIiwiYmluX3JlYWRfcmVzcG9uc2UkMSIsImJpbl9yZWFkX3Jlc3BvbnNlJDIiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlJDAiLCJtb2RlbF9vZl9xdWVyeSQwIiwicmVzcG9uc2Vfb2ZfbW9kZWwkMCIsImFkZCQxIiwic2hhcGVfbWVudSIsInNoYXBlX21lbnVfaW1wbHMiLCJyZXF1ZXN0JDEiLCJjb25uZWN0aW9uIiwiY3JlYXRlX2RpcmVjdGx5IiwibW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24iLCJjYWxsZXJfdmVyc2lvbnMiLCJjYWxsZWVfdmVyc2lvbnMiLCJjYWxsZWVfbWVudSIsIndpdGhfc3BlY2lmaWNfdmVyc2lvbiIsImRpc3BhdGNoZXIiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMV8wMjAiLCJ3aXRoX3ZlcnNpb25fbWVudSIsImRpc3BhdGNoX211bHRpIiwiY29ubl93aXRoX21lbnUiLCJtcSIsInF1ZXJ5X29mX21vZGVsIiwibW9kZWxfb2ZfcmVzcG9uc2UiLCJkaXNwYXRjaF9pdGVyX211bHRpIiwiYWJvcnRfbXVsdGkiLCJ3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIiwiY29udmVydF9yZXN1bHQiLCJjb252ZXJ0X29rIiwidSIsInJzIiwibW9kZWxfb2Zfc3RhdGUiLCJtb2RlbF9vZl9lcnJvciIsIm1vZGVsX29mX3VwZGF0ZSIsImNhbGxlZV9tb2RlbF9vZl9xdWVyeSIsInJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCIsInF1ZXJ5X29mX2NhbGxlcl9tb2RlbCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsImVycm9yX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJzdGF0ZV9vZl9jYWxsZWVfbW9kZWwiLCJ1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3N0YXRlJDAiLCJiaW5fc2l6ZV9zdGF0ZSQwIiwiYmluX3dyaXRlX3N0YXRlJDAiLCJiaW5fd3JpdGVyX3N0YXRlJDAiLCJiaW5fcmVhZF9zdGF0ZSQxIiwiYmluX3JlYWRfc3RhdGUkMiIsImJpbl9yZWFkZXJfc3RhdGUkMCIsImJpbl9zdGF0ZSQwIiwiYmluX3NoYXBlX3VwZGF0ZSQwIiwiYmluX3NpemVfdXBkYXRlJDAiLCJiaW5fd3JpdGVfdXBkYXRlJDAiLCJiaW5fd3JpdGVyX3VwZGF0ZSQwIiwiYmluX3JlYWRfdXBkYXRlJDEiLCJiaW5fcmVhZF91cGRhdGUkMiIsImJpbl9yZWFkZXJfdXBkYXRlJDAiLCJiaW5fdXBkYXRlJDAiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwicGlwZV9yZWFkIiwieF8wMDkiLCJvZl9hXzAwMSIsImJ1ZmZlcl8wMDUiLCJwaXBlXzAwMyIsImJ5dGVzX3JlYWRfMDA3IiwiYXJnXzAwOCIsImJuZHNfMDAyIiwiYXJnXzAwNiIsImJuZHNfMDAyJDAiLCJhcmdfMDA0IiwiYm5kc18wMDIkMSIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJwcm9jZXNzX3F1ZXVlIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSQwIiwidG90YWxfbGVuIiwiY29udGludWVfb3Jfd2FpdCIsImxlbmd0aCQwIiwic2V0X2J1ZmZlciIsInByb2Nlc3NfZGF0YSIsInNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE5Iiwib2ZfYV8wMTEiLCJtb25pdG9yXzAxNSIsInBpcGVfMDEzIiwiYnl0ZXNfd3JpdHRlbl8wMTciLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiaW5jcl9ieXRlc193cml0dGVuIiwibnVtX2J5dGVzIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJvbl9tZXNzYWdlX2NvdW50IiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJhXzAyMiIsImJfMDIzIiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImNvbXBhcmF0b3IkMCIsImFfMDI0IiwiYl8wMjUiLCJ3cml0ZV8xX21zZ18xX2NodW5rIiwid3JpdGVfMV9tc2dfM19jaHVuayIsIm1zZ19sZW4iLCJzcGxpdF9hdCIsInBhcnQxIiwicGFydDIiLCJ3cml0ZV8yX21zZ18xX2NodW5rIiwib25lX21zZyIsInR3b19tc2ciLCJ3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWUiLCJudW0iLCJzdG9wX2FmdGVyX29uX21lc3NhZ2UiLCJhXzAyNiIsImJfMDI3IiwiYV8wMzAiLCJiXzAzMSIsIm9uZV9tZXNzYWdlIiwidHdvX21lc3NhZ2VzIiwib25lX21lc3NhZ2VfcDEiLCJvbmVfbWVzc2FnZV9wMiIsInJwY19jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsInN0cmluZ19hZnRlciIsInMiLCJuIiwicXVvdGUiLCJsZW4iLCJidWYiLCJpIiwiYyIsIm9mX2NoYXIiLCJmdWxsX3NwbGl0Iiwic3RyIiwib24iLCJzZXAiLCJsb29wIiwiYWNjIiwib2Zmc2V0IiwiaW5kZXgiLCJ0b2tlbiIsInNwbGl0IiwibWF4IiwibWF4JDAiLCJ0b2tlbnMiLCJsb29wJDAiLCJ0cmltX2xlZnRfc3ViIiwibGFzdF9jaGFyIiwiY2hhcnMiLCJmaW5hbCQwIiwibGFzdF9jaGFyJDAiLCJpJDAiLCJsYXN0X2NoYXIkMSIsIm5ld19sZW4iLCJzcGxpdF90cmltX2xlZnQiLCJ0cmltIiwidHJpbV9sZWZ0Iiwibm9uX3NwYWNlIiwiZmluZF9mcm9tIiwicGF0dGVybiIsInN0YXJ0Iiwic3RhcnQkMCIsInJlcGxhY2VfYWxsIiwid2l0aCQwIiwicGxlbiIsInNsZW4iLCJqIiwicmVwbGFjZV9hbGxfYXNzb2MiLCJ0YmwiLCJmb3VuZCIsImZvdW5kJDAiLCJmIiwieHMkMCIsIngkMSIsIngiLCJmeCIsInhzIiwieCQwIiwiZngkMCIsImUiLCJqJDEiLCJ3aXRoJDIiLCJwYXR0ZXJuJDEiLCJyIiwid2l0aCQxIiwicGF0dGVybiQwIiwiaiQwIiwib2ZfbGlzdCIsImwiLCJ0b19saXN0IiwiaSQxIiwiYWNjJDAiLCJvZl9hcnJheSIsImEiLCJieXRlcyIsInRvX2FycmF5IiwiY3V0Iiwic2VwX21heCIsInNfbWF4IiwiayIsImxlZnRfZW5kIiwicmlnaHRfc3RhcnQiLCJyY3V0Iiwic2VwX3N0YXJ0IiwiY2hvcF9wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXhfbCIsInN0cmluZ19sIiwiZHJvcCIsInRha2UiLCJjcmVhdGUiLCJzaXplIiwiZW1wdHkiLCJsZW5ndGgiLCJzdWIiLCJpbnZhbGlkX2JvdW5kcyIsIm9wIiwiYnVmZmVyX2xlbiIsIm9mZiIsImxlbiIsIm1lc3NhZ2UiLCJpbnZhbGlkX2JvdW5kc19ibGl0Iiwic3JjX2xlbiIsInNyY19vZmYiLCJkc3RfbGVuIiwiZHN0X29mZiIsImludmFsaWRfYm91bmRzX21lbWNtcCIsImJ1ZjFfbGVuIiwiYnVmMV9vZmYiLCJidWYyX2xlbiIsImJ1ZjJfb2ZmIiwiY29weSIsInQiLCJkc3QiLCJzdWJzdHJpbmciLCJiIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicyIsImJsaXQiLCJzcmMiLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2J5dGVzIiwiYmxpdF90b19ieXRlcyIsIm1lbWNtcCIsImJ1ZjEiLCJidWYyIiwibWVtY21wX3N0cmluZyIsIm1lbWNociIsImJ1ZiIsImJ1Zl9vZmYiLCJjaHIiLCJidWZfbGVuIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzE2IiwiYnMiLCJpIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzY0IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQiLCJ4Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDY0X2JlIiwic2V0X2ludDY0X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwJDAiLCJnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQ2NF9iZSIsImdldF9pbnQ2NF9sZSIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCIsInVuc2FmZV9zZXRfaW50MTZfYmUiLCJ1bnNhZmVfc2V0X2ludDE2X2xlIiwidW5zYWZlX3NldF9pbnQzMl9iZSIsInVuc2FmZV9zZXRfaW50MzJfbGUiLCJ1bnNhZmVfc2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDE2X2xlIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQzMl9sZSIsInVuc2FmZV9nZXRfaW50NjRfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwic3RhdGVfdG9fb3B0aW9uIiwieCIsInYiLCJmYWlsX3RvX3N0cmluZyIsIm1hcmtzIiwiZXJyIiwic3RhdGVfdG9fcmVzdWx0IiwiY3JlYXRlIiwiYnVmZmVyIiwib2ZmIiwibGVuIiwiY29tbWl0dGVkX2J5dGVzIiwibGVuZ3RoIiwidCIsImNsaWVudF9jb21taXR0ZWRfYnl0ZXMiLCJwYXJzZXJfY29tbWl0dGVkX2J5dGVzIiwiYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQiLCJwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMiLCJpbnZhcmlhbnQiLCJvZmZzZXRfaW5fYnVmZmVyIiwicG9zIiwiYXBwbHkiLCJmIiwidW5zYWZlX2dldF9jaGFyIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwidW5zYWZlX2dldF9pbnQxNl9iZSIsInVuc2FmZV9nZXRfaW50MzJfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwiY291bnRfd2hpbGUiLCJpIiwibGltaXQiLCJjb21taXQiLCJmYWlsX2siLCJpbnB1dCIsIm1zZyIsInN1Y2NlZWRfayIsInRvX2V4cG9ydGVkX3N0YXRlIiwiY29udGludWUkMCIsImNvbW1pdHRlZCIsImJzIiwibW9yZSIsIngkMCIsInMiLCJzbCIsImkkMCIsInBhcnNlIiwicCIsInBhcnNlX2JpZ3N0cmluZyIsImlucHV0JDAiLCJyZXR1cm4kMCIsImZhaWwiLCJzdWNjIiwic3ltYm9sX2JpbmQiLCJzdWNjJDAiLCJzeW1ib2xfbWFwIiwic3ltYm9sIiwibSIsInN5bWJvbCQwIiwic3VjYzAiLCJpbnB1dDAiLCJwb3MwIiwibW9yZTAiLCJzdWNjMSIsImlucHV0MSIsInBvczEiLCJtb3JlMSIsImxpZnQiLCJsaWZ0MiIsIm0xIiwibTIiLCJzdWNjMiIsImlucHV0MiIsInBvczIiLCJtb3JlMiIsImxpZnQzIiwibTMiLCJzdWNjMyIsImlucHV0MyIsInBvczMiLCJtb3JlMyIsImxpZnQ0IiwibTQiLCJzdWNjNCIsImlucHV0NCIsInBvczQiLCJtb3JlNCIsInN5bWJvbCQxIiwiYSIsImIiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibWFyayIsImZhaWwkMCIsInN5bWJvbCQ0IiwicSIsInBvcyQwIiwibW9yZSQwIiwicmV0dXJuJDEiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsImxpZnQyJDAiLCJsaWZ0MyQwIiwibGlmdDQkMCIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJvZl9iaWdzdHJpbmciLCJidWYiLCJ3cml0YWJsZV9zcGFjZSIsImVuc3VyZSIsInRvX2NvcHkiLCJvbGRfbGVuIiwibmV3X2xlbiIsInNwYWNlIiwibmV3X2J1ZiIsIndyaXRlX3BvcyIsImZlZWRfc3RyaW5nIiwic3RyIiwiZmVlZF9iaWdzdHJpbmciLCJmZWVkX2lucHV0Iiwic2hpZnQiLCJuIiwiZm9yX3JlYWRpbmciLCJ1bmNvbnN1bWVkIiwib2ZfdW5jb25zdW1lZCIsImZyb21fdW5idWZmZXJlZF9zdGF0ZSIsImJ1ZmZlcmluZyIsImNvbnN1bWVkIiwiY29uc3VtZWQkMCIsInVuY29uc3VtZWQkMCIsInBhcnNlJDAiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwiZmVlZCIsInN0YXRlIiwiayIsImJ1ZmZlcmluZyQwIiwic3RhdGVfdG9fb3B0aW9uJDAiLCJzdGF0ZV90b19yZXN1bHQkMCIsInN0YXRlX3RvX3VuY29uc3VtZWQiLCJwcm9tcHQiLCJkZW1hbmRfaW5wdXQiLCJlbnN1cmVfc3VzcGVuZGVkIiwiZ28iLCJ1bnNhZmVfYXBwbHkiLCJhdF9lbmRfb2ZfaW5wdXQiLCJlbmRfb2ZfaW5wdXQiLCJhZHZhbmNlIiwiYXZhaWxhYmxlIiwidW5zYWZlX2xvb2thaGVhZCIsInBlZWtfY2hhciIsInBlZWtfY2hhcl9mYWlsIiwic2F0aXNmeSIsImMiLCJjaGFyJDAiLCJub3RfY2hhciIsImMkMCIsImFueV9jaGFyIiwiaW50OCIsInAkMCIsImFueV91aW50OCIsInAkMSIsImFueV9pbnQ4Iiwic2tpcCIsImluaXQiLCJ3aXRoX2J1ZmZlciIsImlucHV0X2xlbiIsImluaXQkMCIsImNvdW50X3doaWxlMSIsInN1Y2MkMSIsImZhaWwkMSIsInN0cmluZyIsImYkMCIsImUiLCJzdHJpbmckMCIsInN0cmluZ19jaSIsInNraXBfd2hpbGUiLCJ0YWtlIiwibiQwIiwidGFrZV9iaWdzdHJpbmciLCJ0YWtlX2JpZ3N0cmluZ193aGlsZSIsInRha2VfYmlnc3RyaW5nX3doaWxlMSIsInRha2VfYmlnc3RyaW5nX3RpbGwiLCJwZWVrX3N0cmluZyIsInRha2Vfd2hpbGUiLCJ0YWtlX3doaWxlMSIsInRha2VfdGlsbCIsImNob2ljZSIsInBzIiwiZmFpbHVyZV9tc2ciLCJmaXhfZGlyZWN0IiwiciIsImZpeF9sYXp5IiwibWF4X3N0ZXBzIiwic3RlcHMiLCJmaXgiLCJvcHRpb24iLCJjb25zIiwieHMiLCJsaXN0IiwicHMkMCIsImNvdW50IiwibG9vcCIsIm1hbnkiLCJtYW55MSIsIm1hbnlfdGlsbCIsInNlcF9ieTEiLCJzZXBfYnkiLCJza2lwX21hbnkiLCJza2lwX21hbnkxIiwiZW5kX29mX2xpbmUiLCJzY2FuIiwic3RhdGUkMCIsInBhcnNlciIsInNjYW4kMCIsInNjYW5fc3RhdGUiLCJzY2FuX3N0cmluZyIsImNvbnN1bWVfd2l0aCIsImNvbnN1bWVkX2JpZ3N0cmluZyIsImJvdGgiLCJtYXAiLCJiaW5kIiwibWFwMiIsIm1hcDMiLCJtYXA0IiwiZCIsImludDE2IiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJ4IiwieCQwIiwiY3N0JDE1IiwiY3N0JDEzIiwiY3N0JDEyIiwiY3N0JDAiLCJpdGVyX2NvbmNhdCIsImZuIiwic2VwIiwiYnVmIiwibGFzdCIsInJlc3QiLCJjb21wYXJlX29wdCIsImMiLCJ0JDAiLCJ0IiwiYSIsImIiLCJjb21wYXJlX2xpc3QiLCJmIiwidCQyIiwidCQxIiwieHMiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwidXNlcmluZm8iLCJob3N0IiwicXVlcnlfa2V5IiwicXVlcnlfdmFsdWUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJ4JDEiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfaG9zdCIsImgxIiwiaDIiLCJpcDIiLCJpcDEiLCJpcDIkMCIsImlwMSQwIiwiaDIkMCIsImgxJDAiLCJjb21wYXJlJDAiLCJjJDIiLCJjJDMiLCJjJDQiLCJrdmwkMCIsImt2bCIsInJhdyIsInJhdyQwIiwiYyQxIiwidmwiLCJ2bCQwIiwiayQwIiwiZXF1YWwiLCJ1bmNhc3Rfb3B0Iiwibm9ybWFsaXplIiwic2NoZW0iLCJpbml0IiwiaG9zdCQwIiwiaG9zdCQxIiwidG9fc3RyaW5nIiwidXJpIiwiYWRkX3BjdF9zdHJpbmciLCJmaXJzdF9zZWdtZW50IiwieCQyIiwicSIsImdldF9kZWNvZGVkX29wdCIsIndpdGhfc2NoZW1lIiwiaCQwIiwiaG9zdF93aXRoX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJ3aXRoX3VzZXJpbmZvIiwidXNlcmluZm8kMCIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ3aXRoX3Bhc3N3b3JkIiwicmVzdWx0Iiwid2l0aF9wb3J0Iiwid2l0aF9wYXRoIiwicGF0aCQwIiwid2l0aF9mcmFnbWVudCIsImZyYWciLCJxdWVyeSIsInZlcmJhdGltX3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtIiwiZ2V0X3F1ZXJ5X3BhcmFtJDAiLCJ3aXRoX3F1ZXJ5IiwicV9zIiwid2l0aF9xdWVyeSQwIiwiYWRkX3F1ZXJ5X3BhcmFtIiwiYWRkX3F1ZXJ5X3BhcmFtJDAiLCJhZGRfcXVlcnlfcGFyYW1zIiwiYWRkX3F1ZXJ5X3BhcmFtcyQwIiwicmVtb3ZlX3F1ZXJ5X3BhcmFtIiwicGF0aF9hbmRfcXVlcnkiLCJtYXRjaCIsInNjaGVtZSQwIiwicmVzb2x2ZSIsImJhc2UiLCJzY2hlbWUkMSIsInNjaGVtJDAiLCJwYXRoX3N0ciIsInJlbHBhdGgiLCJicGF0aCIsImJob3N0IiwicmJwYXRoIiwiY2Fub25pY2FsaXplIiwidXJpJDAiLCJwcCIsInBwZiIsInBwX2h1bSIsInN0cmluZ19vZl9jaGFyIiwic3RyaW5nX29mX2NoYXJfbGlzdCIsImNoYXJzIiwiaXNfZGlnaXQiLCJoZXhfZGlnaXQiLCJoZXhhZGVjaW1hbCIsImNfZG90IiwiY19hdCIsImNfY29sb24iLCJkZWNfb2N0ZXQiLCJudW0iLCJpcHY0X2FkZHJlc3MiLCJ0aHJlZSIsIm9uZSIsImFmdGVyX2RvdWJsZV9jb2xvbiIsImRvdWJsZV9jb2xvbiIsImNvdW50IiwiZmlsbGVyX2xlbmd0aCIsInBhcnQiLCJoZXhfcGFydCIsInNwbGl0X3dpdGgiLCJ0cyIsInpzIiwiZm9ybWF0X2FkZHIiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJiZWZvcmVfZG91YmxlX2NvbG9uIiwiYmVmb3JlIiwicmVzIiwiaXB2NiIsImlwdjZfYWRkcmVzcyIsInBjdF9lbmNvZGVkIiwicGN0IiwiZGlnaXRzIiwic3ViX2RlbGltcyQwIiwidW5yZXNlcnZlZCIsInJlZ19uYW1lIiwicG9ydCQwIiwiZGVjb2RlZCIsImF1dGhvcml0eSIsInF1ZXJ5JDAiLCJmcmFnbWVudCQwIiwidXJpX3JlZmVyZW5jZSIsInVyaV9yZWZlcmVuY2UkMCIsImRlY29kZV9ob3N0IiwicGFyc2VkIiwicGFyc2VkJDAiLCJtYWtlIiwicGF0aCQxIiwid2l0aF9ob3N0Iiwid2l0aF91cmkiLCJ3aXRoJDAiLCJvIiwib2Zfc3RyaW5nIiwibGV0JDAiLCJ0b191cmkiLCJvZl91cmkiLCJ1bnN1cHBvcnRlZF9zY2hlbWUiLCJvZl9zdHJpbmckMCIsImVycm9yIiwidG9fc3RyaW5nJDAiLCJtYWtlJDAiLCJob3N0JDIiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxOCIsImRlZmF1bHRfMDM0IiwiZXJyb3Jfc291cmNlXzAyNyIsImRlZmF1bHRfMDYyIiwiY29tcG9uZW50X29mX3NleHAiLCJzZXhwXzAxNyIsImF0b21fMDAyIiwic2V4cF9hcmdzXzAwNSIsImF0b21fMDAyJDAiLCJhcmcwXzAxNSIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJyZXMyXzAxMyIsInJlczBfMDE2Iiwic2V4cF9vZl9jb21wb25lbnQiLCJ2XzAxOSIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJyZXMyXzAyNSIsImRlZmF1bHRfMDI4IiwiZGVmYXVsdF8wMzUiLCJkZWZhdWx0XzAzNiIsImRlZmF1bHRfMDM3IiwiZGVmYXVsdF8wMzgiLCJkZWZhdWx0XzA0MiIsImRlZmF1bHRfMDQ3IiwiZGVmYXVsdF8wNTIiLCJkZWZhdWx0XzA1NyIsImRlZmF1bHRfMDc1IiwidF9vZl9zZXhwIiwieF8wMzkiLCJzZXhwXzAzMyIsImFyZzFfMDMwIiwiYXJnMF8wMjkiLCJyZXMwXzAzMSIsInJlczFfMDMyIiwidCIsImZyYWdtZW50IiwicXVlcnkiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJ1c2VyaW5mbyIsInNjaGVtZSIsInNleHBfb2ZfdCIsImZyYWdtZW50XzA3NiIsInF1ZXJ5XzA2NyIsInBhdGhfMDYzIiwicG9ydF8wNTgiLCJob3N0XzA1MyIsInVzZXJpbmZvXzA0OCIsInNjaGVtZV8wNDMiLCJibmRzXzA0MCIsImFyZ18wNzgiLCJibmRzXzA0MCQwIiwiYm5kXzA3NyIsImJuZHNfMDQwJDEiLCJhcmdfMDczIiwiYXJnMV8wNjkiLCJhcmcwXzA2OCIsInJlczBfMDcwIiwicmVzMV8wNzEiLCJibmRfMDcyIiwiYXJnXzA2NSIsImJuZHNfMDQwJDIiLCJibmRfMDY0IiwiYXJnXzA2MCIsImJuZHNfMDQwJDMiLCJibmRfMDU5IiwiYXJnXzA1NSIsImJuZHNfMDQwJDQiLCJibmRfMDU0IiwiYXJnXzA1MCIsImJuZHNfMDQwJDUiLCJibmRfMDQ5IiwiYXJnXzA0NSIsImJuZHNfMDQwJDYiLCJibmRfMDQ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJpc192YWxpZF9maWVsZF9uYW1lIiwic2VlbiIsIm5hbWUiLCJhbnlfb2Zfc2V4cCIsInMiLCJsaXN0JDAiLCJ2JDAiLCJuYW1lJDEiLCJzZWVuJDIiLCJyZXZfYWNjIiwibGlzdCIsInJlc3QiLCJyZXZfYWNjJDAiLCJzZWVuJDAiLCJyZXN0JDAiLCJ2IiwibmFtZSQwIiwicmV2X2FjYyQxIiwic2VlbiQxIiwibCIsImxvZ19zIiwic2V4cCIsImxvZ19zX2FzX3N0cmluZyIsInNleHBfb2ZfdCIsImZpZWxkMl8wMTYiLCJmaWVsZDFfMDE0IiwiYXJnXzAxNyIsImJuZHNfMDEzIiwic29tZV9uYW1lXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwNCIsImFyZ18wMTUiLCJibmRzXzAxMyQwIiwidG9fc3RyaW5nIiwic2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzIiwieF8wMjIiLCJpIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsInJlczBfMDIwIiwicmVzMV8wMjEiLCJjb21wYXJlX2Nsb3NlX2V2ZW50X2NvZGUiLCJzZXhwX29mX2Nsb3NlX2V2ZW50X2NvZGUiLCJhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImNvbXBhcmUiLCJhXzAwNCIsImJfMDA1IiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhY2MiLCJsJDAiLCJlbnVtZXJhdGVfMDExIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsImwkMiIsImVudW1lcmF0ZV8wMTAiLCJhY2MkMiIsImFsbCIsIm9mX2ludCIsImNvZGUiLCJ0b19pbnQiLCJjb2RlJDAiLCJ4XzAzMSIsInhfMDMwIiwibm9ybWFsX2Nsb3N1cmUiLCJjbGllbnQiLCJoZWFydGJlYXRfY29uZmlnIiwiZGVzY3JpcHRpb24iLCJpbXBsZW1lbnRhdGlvbnMiLCJ1cmkiLCJzY2hlbWUiLCJwb3J0IiwicG9ydCQwIiwiaG9zdCIsIm1hdGNoJDEiLCJyZXMiLCJoIiwiZGVzY3JpcHRpb24kMCIsImZyb21fc2VydmVyX3ciLCJmcm9tX3NlcnZlcl9yIiwidG9fc2VydmVyX3ciLCJ0b19zZXJ2ZXJfciIsImVycm9yIiwidHJhbnNwb3J0IiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImNvbm5lY3Rpb24iLCJleG4iLCJpbXBsZW1lbnRhdGlvbnMkMCIsImV4biQxIiwiZXhuJDAiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQiLCJjbGllbnRfZXhuIiwiY3JlYXRlX2Zyb21fdXJpIiwiZXF1YWwkMCIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0Iiwic2V4cF9vZl90JDEiLCJ4XzAwNyIsImNyZWF0ZV9mcm9tX3VyaV9vcHRpb24iLCJtZXRob2Rfc3RyaW5nJDAiLCJyZXF1ZXN0Iiwib25fcHJvZ3Jlc3MiLCJvbl91cGxvYWRfcHJvZ3Jlc3MiLCJ1cmwiLCJyZXNwb25zZV90eXBlIiwibWV0aG9kX3dpdGhfYXJncyIsImhlYWRlcnMiLCJhcmdzIiwibWV0aG9kX3N0cmluZyQxIiwidXJsJDAiLCJ2YWx1ZSIsInJlc3BvbnNlIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJjb250ZW50IiwiZ2V0X2hlYWRlciIsImJvZHkiLCJib2R5JDAiLCJnZXQiLCJhcmd1bWVudHMkMCIsInJlc3AiLCJwb3N0IiwicmVhZHlfc3RhdGVfY2hhbmdlIiwiY29tcGxldGUiLCJzbGVlcCIsImQiLCJ5aWVsZCQwIiwiZXh0cmFjdF9qc19lcnJvciIsIm1zZyIsImpzX2Vycm9yIiwibWVzc2FnZXMiLCJqc19lcnJvciQwIiwicHJldHR5X3ByaW50X2V4Y2VwdGlvbiIsImVyciIsImNsYXNzaWZpY2F0aW9uIiwiZXJyJDIiLCJlcnIkMCIsImV4biQyIiwiaGQiLCJtZXNzYWdlIiwic3RhdGUiLCJ0aW1lb3V0cyIsInJ1bl9hZnRlciIsImYiLCJtcyIsImxvb3AiLCJ0IiwibmV4dF93YWtldXAiLCJuZXh0Iiwibm93IiwiZF9tcyQwIiwiZF9tcyIsImF0IiwicnVuX3RpbWVvdXQiLCJydW4iLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0X2NoaWxkX2luZGV4JDAiLCJyaWdodCIsImxlZnRfaXNfbm9uZSIsInJpZ2h0X2lzX25vbmUiLCJjcmVhdGVfZXhuIiwibnVtX2xlYXZlcyIsInJlZHVjZSIsIm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCIsInZhbGlkYXRlX2luZGV4IiwibGVuZ3RoIiwic2V0X2V4biIsImNoaWxkX2luZGV4IiwicGFyZW50IiwiZ2V0X2V4biIsInhfMDAyIiwiY29tcHV0ZV9leG4iLCJzZXhwX29mX3QiLCJzdGVwcyIsInIiLCJpbml0Iiwic2V4cF9vZl90JDAiLCJvZl9hXzAwMSIsInN0ZXBzXzAwNSIsImluaXRfMDAzIiwiYXJnXzAwNiIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidmFsdWUiLCJ0JDAiLCJhdCIsInN0ZXBzJDEiLCJpbml0JDEiLCJzdGVwcyQwIiwiaW5pdCQwIiwidCIsImNvbnN0YW50IiwiY3JlYXRlX2V4biIsInRpbWUyIiwidGltZTEiLCJ4XzAxMSIsImNyZWF0ZV9mcm9tX3NlcXVlbmNlIiwiY3JlYXRlIiwibGVuIiwibGVuZ3RoIiwidCIsInNldCIsInNldF9leG4iLCJpIiwieCIsImdldCIsImlzX3NvbWUiLCJpc19ub25lIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpdGVyIiwiZiIsInYiLCJpdGVyaSIsImJsaXQiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNyZWF0ZSIsImluZGV4IiwiZ2V0IiwidCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJzZXQiLCJibG9jayIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJrZXlzX3dpdGhfdW51c2VkX2RhdGFfMDA2IiwiZW50cnlfYnlfa2V5XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYXJnXzAwNSIsImJuZHNfMDAzJDEiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJjbGVhbnVwIiwicmVwbGFjZSIsImFkZF9leG4iLCJ4XzAxMCIsImZpbmQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsInYiLCJzZXhwX29mX3QiLCJjb25jYXQiLCJ0YWciLCJhcmcwXzAwMSIsImFyZzFfMDAyIiwic2V4cF9vZl9hIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsInJlYWxsb2MiLCJ0IiwibGVuIiwiYSIsIm5ld190IiwicmVhbGxvYyQwIiwicmVzMF8wMDUiLCJyZXMwXzAwNyIsImludmFyaWFudCIsInhfMDA5IiwiY3JlYXRlIiwiZiIsIm9mX2NvbXBhcmUiLCJvZl9lcXVhbCIsInBvbHlfZXF1YWwiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwicmVyYWlzZV93aXRoX21lc3NhZ2UiLCJtc2ciLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsInhfMDExIiwiY2hlY2siLCJ3YXRjaF9mdW4iLCJ0JDAiLCJzZXRfYXRfZnVuIiwidmFsdWVfZnVuIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsInhfMDI4IiwiZm9sZF92YWx1ZV9mdW4iLCJnb3QiLCJleHBlY3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInVwZGF0ZSQwIiwiZl9pbnZlcnNlIiwidXBkYXRlIiwiY29tcHV0ZSIsInJlc3VsdCIsImZvcmNlX2Z1bGxfY29tcHV0ZSIsImNoaWxkX2NoYW5nZWQiLCJ4XzAzMSIsImNoaWxkX2luZGV4Iiwib2xkX3ZhbHVlX29wdCIsImNoaWxkX2F0X2luZGV4IiwieF8wMDEiLCJudWxsJDAiLCJhbGFybV92YWx1ZSIsInNldF9hbGFybV92YWx1ZSIsImFsYXJtIiwic2V0X2FsYXJtIiwiYWxhcm1fdmFsdWUkMCIsImFsYXJtJDAiLCJtYWluXzAwMyIsImNoaWxkXzAwNSIsImV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fYyIsInZhbHVlXzAwOSIsInVwY29taW5nX3N0ZXBzXzAxMSIsImFsYXJtXzAxNyIsImFsYXJtX3ZhbHVlXzAxOSIsImNsb2NrXzAyMSIsImFyZ18wMTgiLCJhcmdfMDEyIiwiYXJnMV8wMTQiLCJyZXMxXzAxNiIsImJuZHNfMDAyJDMiLCJibmRzXzAwMiQ0IiwiYm5kc18wMDIkNSIsImJuZHNfMDAyJDYiLCJ4XzAyMyIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsImFkdmFuY2UiLCJ0byIsInN0ZXBzJDAiLCJhMSQwIiwiYTEiLCJzdGVwcyIsInN0ZXBzMiIsImEyIiwic3RlcF9hdCIsIm9mX2FjY18wMDIiLCJjaGlsZHJlbl8wMDgiLCJpbml0XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInhfMDEwIiwiYXRfMDA0IiwibWFpbl8wMDIiLCJhbGFybV8wMDYiLCJjbG9ja18wMDgiLCJibmRzXzAwMSQxIiwiYm5kc18wMDEkMiIsImludGVydmFsIiwiaW50ZXJ2YWwkMCIsImludGVydmFsXzAwNiIsImJhc2VfMDA0IiwiYWxhcm1fMDA4IiwiY2xvY2tfMDEwIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJpbnRlcnZhbF9mdW4iLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJzZXRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwicmhzX3Njb3BlIiwic2V0X3Joc19zY29wZSIsImxoc19jaGFuZ2UiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMkMCIsInJoc19zY29wZSQwIiwibGhzX2NoYW5nZSQwIiwib2ZfYl8wMDIiLCJtYWluXzAwNCIsImxoc19jaGFuZ2VfMDEwIiwibGhzXzAwOCIsInJoc18wMTIiLCJyaHNfc2NvcGVfMDE0IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXzAxNiIsImJuZHNfMDAzJDIiLCJibmRzXzAwMyQzIiwiYm5kc18wMDMkNCIsImJuZHNfMDAzJDUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsInhfMDE4IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzX2Z1biIsIm5vZGUiLCJyaHNfc2NvcGVfZnVuIiwibGhzX2NoYW5nZV9mdW4iLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsInhfMDE1IiwiY3VycmVudF9icmFuY2hfZnVuIiwidGVzdF9jaGFuZ2VfZnVuIiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsInhfMDEzIiwiYmVmb3JlX2Z1biIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiaXRlcmlfY2hpbGRyZW4iLCJyaHMiLCJpJDAiLCJ0ZXN0IiwibGhzIiwicmhzJDAiLCJub2RlMCIsImNoaWxkJDAiLCJjaGlsZHJlbiQxIiwiaSQxIiwibm9kZTEiLCJub2RlMCQwIiwibm9kZTIiLCJub2RlMSQwIiwibm9kZTAkMSIsIm5vZGUzIiwibm9kZTIkMCIsIm5vZGUxJDEiLCJub2RlMCQyIiwibm9kZTQiLCJub2RlMyQwIiwibm9kZTIkMSIsIm5vZGUxJDIiLCJub2RlMCQzIiwibm9kZTUiLCJub2RlNCQwIiwibm9kZTMkMSIsIm5vZGUyJDIiLCJub2RlMSQzIiwibm9kZTAkNCIsIm5vZGU2Iiwibm9kZTUkMCIsIm5vZGU0JDEiLCJub2RlMyQyIiwibm9kZTIkMyIsIm5vZGUxJDQiLCJub2RlMCQ1Iiwibm9kZTciLCJub2RlNiQwIiwibm9kZTUkMSIsIm5vZGU0JDIiLCJub2RlMyQzIiwibm9kZTIkNCIsIm5vZGUxJDUiLCJub2RlMCQ2Iiwibm9kZTgiLCJub2RlNyQwIiwibm9kZTYkMSIsIm5vZGU1JDIiLCJub2RlNCQzIiwibm9kZTMkNCIsIm5vZGUyJDUiLCJub2RlMSQ2Iiwibm9kZTAkNyIsIm5vZGU5Iiwibm9kZTgkMCIsIm5vZGU3JDEiLCJub2RlNiQyIiwibm9kZTUkMyIsIm5vZGU0JDQiLCJub2RlMyQ1Iiwibm9kZTIkNiIsIm5vZGUxJDciLCJub2RlMCQ4Iiwibm9kZTEwIiwibm9kZTkkMCIsIm5vZGU4JDEiLCJub2RlNyQyIiwibm9kZTYkMyIsIm5vZGU1JDQiLCJub2RlNCQ1Iiwibm9kZTMkNiIsIm5vZGUyJDciLCJub2RlMSQ4Iiwibm9kZTAkOSIsIm5vZGUxMSIsIm5vZGUxMCQwIiwibm9kZTkkMSIsIm5vZGU4JDIiLCJub2RlNyQzIiwibm9kZTYkNCIsIm5vZGU1JDUiLCJub2RlNCQ2Iiwibm9kZTMkNyIsIm5vZGUyJDgiLCJub2RlMSQ5Iiwibm9kZTAkMTAiLCJub2RlMTIiLCJub2RlMTEkMCIsIm5vZGUxMCQxIiwibm9kZTkkMiIsIm5vZGU4JDMiLCJub2RlNyQ0Iiwibm9kZTYkNSIsIm5vZGU1JDYiLCJub2RlNCQ3Iiwibm9kZTMkOCIsIm5vZGUyJDkiLCJub2RlMSQxMCIsIm5vZGUwJDExIiwibm9kZTEzIiwibm9kZTEyJDAiLCJub2RlMTEkMSIsIm5vZGUxMCQyIiwibm9kZTkkMyIsIm5vZGU4JDQiLCJub2RlNyQ1Iiwibm9kZTYkNiIsIm5vZGU1JDciLCJub2RlNCQ4Iiwibm9kZTMkOSIsIm5vZGUyJDEwIiwibm9kZTEkMTEiLCJub2RlMCQxMiIsIm5vZGUxNCIsIm5vZGUxMyQwIiwibm9kZTEyJDEiLCJub2RlMTEkMiIsIm5vZGUxMCQzIiwibm9kZTkkNCIsIm5vZGU4JDUiLCJub2RlNyQ2Iiwibm9kZTYkNyIsIm5vZGU1JDgiLCJub2RlNCQ5Iiwibm9kZTMkMTAiLCJub2RlMiQxMSIsIm5vZGUxJDEyIiwibm9kZTAkMTMiLCJzbG93X2dldF9jaGlsZCIsImluZGV4IiwiYXJnMV8zMDYiLCJhcmcwXzMwNSIsInJlczBfMzA3IiwicmVzMV8zMDgiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW4iLCJzZXRfbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2EiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4iLCJzZXRfbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2EiLCJvYnNlcnZlcnMiLCJzZXRfb2JzZXJ2ZXJzIiwic2V0X29sZF92YWx1ZV9vcHQiLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWEiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsInNldF9oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfcHJldl9pbl9yZWNvbXB1dGVfaGVhcCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCIsInNldF9oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0IiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJzZXRfbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJjcmVhdGVkX2luIiwic2V0X2NyZWF0ZWRfaW4iLCJwYXJlbnQwIiwic2V0X3BhcmVudDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQiLCJzZXRfcGFyZW50MV9hbmRfYmV5b25kIiwibnVtX3BhcmVudHMiLCJzZXRfbnVtX3BhcmVudHMiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzIiwic2V0X251bV9vbl91cGRhdGVfaGFuZGxlcnMiLCJjaGFuZ2VkX2F0Iiwic2V0X2NoYW5nZWRfYXQiLCJjdXRvZmYiLCJzZXRfY3V0b2ZmIiwia2luZCIsInNldF9raW5kIiwidmFsdWVfb3B0Iiwic2V0X3ZhbHVlX29wdCIsInJlY29tcHV0ZWRfYXQiLCJzZXRfcmVjb21wdXRlZF9hdCIsImlkIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luJDAiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4kMCIsIm9ic2VydmVycyQwIiwib2xkX3ZhbHVlX29wdCQwIiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwJDAiLCJoZWlnaHQkMCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlJDAiLCJjcmVhdGVkX2luJDAiLCJwYXJlbnQwJDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQkMCIsIm51bV9wYXJlbnRzJDAiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJjaGFuZ2VkX2F0JDAiLCJjdXRvZmYkMCIsImtpbmQkMCIsInZhbHVlX29wdCQwIiwicmVjb21wdXRlZF9hdCQwIiwiaWQkMCIsInN0YXRlXzAwNSIsImlkXzAwMyIsInJlY29tcHV0ZWRfYXRfMDA3IiwidmFsdWVfb3B0XzAwOSIsImtpbmRfMDExIiwiY3V0b2ZmXzAxMyIsImNoYW5nZWRfYXRfMDE1IiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc18wMTciLCJudW1fcGFyZW50c18wMTkiLCJwYXJlbnQxX2FuZF9iZXlvbmRfMDIxIiwicGFyZW50MF8wMjMiLCJjcmVhdGVkX2luXzAyNSIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXzAyNyIsImhlaWdodF8wMjkiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBfMDMxIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF8wMzMiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwXzAzNSIsImhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXyIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8wMyIsIm9sZF92YWx1ZV9vcHRfMDQxIiwib2JzZXJ2ZXJzXzA0MyIsImlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aSIsIm9uX3VwZGF0ZV9oYW5kbGVyc18wNDciLCJmb3JjZV9uZWNlc3NhcnlfMDUzIiwidXNlcl9pbmZvXzA1NSIsImNyZWF0aW9uX2JhY2t0cmFjZV8wNTciLCJhcmdfMDU4IiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImFyZ18wNDgiLCJhcmdfMDQ2IiwiYXJnXzA0NCIsImFyZ18wNDIiLCJibmRzXzAwMiQ3IiwiYXJnXzA0MCIsImJuZHNfMDAyJDgiLCJhcmdfMDM4IiwiYm5kc18wMDIkOSIsImFyZ18wMzYiLCJibmRzXzAwMiQxMCIsImFyZ18wMzQiLCJibmRzXzAwMiQxMSIsImFyZ18wMzIiLCJibmRzXzAwMiQxMiIsImFyZ18wMzAiLCJibmRzXzAwMiQxMyIsImFyZ18wMjgiLCJibmRzXzAwMiQxNCIsImJuZHNfMDAyJDE1IiwiYm5kc18wMDIkMTYiLCJibmRzXzAwMiQxNyIsImJuZHNfMDAyJDE4IiwiYm5kc18wMDIkMTkiLCJibmRzXzAwMiQyMCIsImJuZHNfMDAyJDIxIiwiYm5kc18wMDIkMjIiLCJibmRzXzAwMiQyMyIsImJuZHNfMDAyJDI0IiwiYm5kc18wMDIkMjUiLCJibmRzXzAwMiQyNiIsInNhbWUiLCJ1c2VyX2luZm8iLCJvdGhlciIsInNldF91c2VyX2luZm8iLCJhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IiwiYXR0cnMiLCJlZGdlX2lzX3N0YWxlIiwicGFyZW50IiwiaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpIiwiaXNfc3RhbGUiLCJmb3JjZV9zdGFsZSIsImZvcmNlX3N0YWxlJDAiLCJuZWVkc190b19iZV9jb21wdXRlZCIsImlzX2luX3JlY29tcHV0ZV9oZWFwIiwiaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsImdldF9wYXJlbnQiLCJpdGVyaV9wYXJlbnRzIiwiaGFzX2NoaWxkIiwiaGFzIiwiaGFzX3BhcmVudCIsInBhcmVudCQwIiwic2hvdWxkX2JlX2ludmFsaWRhdGVkIiwibGhzJDAiLCJmb2xkX29ic2VydmVycyIsImFjIiwib2JzZXJ2ZXIiLCJ4XzA1OSIsInQxJDAiLCJhXzA2MCIsImJfMDYxIiwiYV8wNzAiLCJiXzA3MSIsInBhcmVudF9pbmRleCIsIngiLCJhXzA2OCIsImJfMDY5Iiwib2JzZXJ2ZXJzX2Z1biIsInN0YXRlIiwib2JzZXJ2aW5nIiwib2xkX3ZhbHVlX29wdF9mdW4iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfZnUiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldiIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJoZWlnaHRfZnVuIiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGVfZnVuIiwiY3JlYXRlZF9pbl9mdW4iLCJwYXJlbnQwX2Z1biIsImFfMDY2IiwiYl8wNjciLCJwYXJlbnQxX2FuZF9iZXlvbmRfZnVuIiwiYV8wNjQiLCJiXzA2NSIsIm51bV9wYXJlbnRzX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVycyIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwiZXRhIiwiYV8wNjIiLCJiXzA2MyIsImNoYW5nZWRfYXRfZnVuIiwiY3V0b2ZmX2Z1biIsImtpbmRfZnVuIiwidmFsdWVfb3B0X2Z1biIsInJlY29tcHV0ZWRfYXRfZnVuIiwiaWRfZnVuIiwidW5zYWZlX3ZhbHVlIiwidmFsdWVfZXhuIiwieF8wNzIiLCJnZXRfY3V0b2ZmIiwic2V0X2N1dG9mZiQwIiwiaXNfY29uc3QiLCJvbl91cGRhdGUiLCJvbl91cGRhdGVfaGFuZGxlciIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMiLCJyZXN0JDAiLCJvbl91cGRhdGVfaGFuZGxlciQwIiwiciQwIiwiciQxIiwicmVzdCIsInNldF9raW5kJDAiLCJtYXhfbnVtX3BhcmVudHMiLCJzZXRfcGFyZW50IiwibGluayIsImFkZF9wYXJlbnQiLCJuZXdfbWF4X251bV9wYXJlbnRzIiwibWF4X251bV9jaGlsZHJlbiIsIm5ld19tYXhfbnVtX2NoaWxkcmVuIiwicmVtb3ZlX3BhcmVudCIsImxhc3RfcGFyZW50X2luZGV4Iiwic3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCIsImNoaWxkMSIsImNoaWxkMiIsInQyJDAiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJ4XzAyMCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjIiLCJ4XzAyMSIsIm9uX3VwZGF0ZV9leG4iLCJ4XzAyNCIsInByZXYkMCIsIm5leHQkMCIsInhfMDI1IiwieF8wMDIiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwiZXJyb3Jfc291cmNlXzA3OSIsInNleHBfb2Zfc3RhdHVzIiwiYXJnMV8wMDQiLCJyZXMxXzAwNiIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiIsInNldF9leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdSIsImN1cnJlbnRseV9ydW5uaW5nX25vZGUiLCJzZXRfY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSQwIiwibWFrZV9jcmVhdG9yIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW4kMSIsImFjYyIsIm1hcCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsInJlY29yZCQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV8wMDgiLCJibmRzXzAwNyIsImJuZHNfMDA3JDAiLCJzZXhwX29mX3QkMSIsIm51bV92YXJfc2V0cyIsInNldF9udW1fdmFyX3NldHMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8iLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWQiLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWQiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJzZXRfbnVtX25vZGVzX2ludmFsaWRhdGVkIiwibnVtX25vZGVzX2NyZWF0ZWQiLCJzZXRfbnVtX25vZGVzX2NyZWF0ZWQiLCJudW1fbm9kZXNfY2hhbmdlZCIsInNldF9udW1fbm9kZXNfY2hhbmdlZCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkiLCJzZXRfbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2EiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UiLCJzZXRfa2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmEiLCJ3ZWFrX2hhc2h0YmxzIiwib25seV9pbl9kZWJ1ZyIsInNldF9vbmx5X2luX2RlYnVnIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24iLCJkaXNhbGxvd2VkX29ic2VydmVycyIsIm5ld19vYnNlcnZlcnMiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzIiwiYWxsX29ic2VydmVycyIsInNldF9hbGxfb2JzZXJ2ZXJzIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJzZXRfbnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSIsImFkanVzdF9oZWlnaHRzX2hlYXAiLCJjdXJyZW50X3Njb3BlIiwic2V0X2N1cnJlbnRfc2NvcGUiLCJzdGFiaWxpemF0aW9uX251bSIsInNldF9zdGFiaWxpemF0aW9uX251bSIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCIsInN0YXR1cyIsInNldF9zdGF0dXMiLCJudW1fdmFyX3NldHMkMCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQxIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDIiLCJudW1fbm9kZXNfcmVjb21wdXRlZCQwIiwibnVtX25vZGVzX2ludmFsaWRhdGVkJDAiLCJudW1fbm9kZXNfY3JlYXRlZCQwIiwibnVtX25vZGVzX2NoYW5nZWQkMCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkkMCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5JDAiLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlJDAiLCJ3ZWFrX2hhc2h0YmxzJDAiLCJvbmx5X2luX2RlYnVnJDAiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQwIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uJDAiLCJkaXNhbGxvd2VkX29ic2VydmVycyQwIiwibmV3X29ic2VydmVycyQwIiwiZmluYWxpemVkX29ic2VydmVycyQwIiwiYWxsX29ic2VydmVycyQwIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMkMCIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDAiLCJhZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJyZWNvbXB1dGVfaGVhcCQwIiwiY3VycmVudF9zY29wZSQwIiwic3RhYmlsaXphdGlvbl9udW0kMCIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQwIiwic3RhdHVzJDAiLCJtYWtlX2NyZWF0b3IkMCIsInN0YXR1c19mdW4iLCJzdGFiaWxpemF0aW9uX251bV9mdW4iLCJjdXJyZW50X3Njb3BlX2Z1biIsInJlY29tcHV0ZV9oZWFwX2Z1biIsImFkanVzdF9oZWlnaHRzX2hlYXBfZnVuIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZnVuIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZnVuIiwiYWxsX29ic2VydmVyc19mdW4iLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2Z1biIsIm5ld19vYnNlcnZlcnNfZnVuIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZnVuIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2Z1biIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uX2Z1biIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwib25seV9pbl9kZWJ1Z19mdW4iLCJ3ZWFrX2hhc2h0YmxzX2Z1biIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZiIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2Z1biIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnlfZiIsIm51bV9ub2Rlc19jaGFuZ2VkX2Z1biIsIm51bV9ub2Rlc19jcmVhdGVkX2Z1biIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZF9mdW4iLCJudW1fbm9kZXNfcmVjb21wdXRlZF9mdW4iLCJudW1fdmFyX3NldHNfZnVuIiwic3RhdHVzX2dlbiIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQxIiwiY29tcGlsZV9hY2MkMiIsInN0YWJpbGl6YXRpb25fbnVtX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJjdXJyZW50X3Njb3BlX2dlbiIsImNvbXBpbGVfYWNjJDQiLCJyZWNvbXB1dGVfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ1IiwiYWRqdXN0X2hlaWdodHNfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ2IiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZ2VuIiwiY29tcGlsZV9hY2MkNyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJhbGxfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDkiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEwIiwibmV3X29ic2VydmVyc19nZW4iLCJjb21waWxlX2FjYyQxMSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwib25seV9pbl9kZWJ1Z19nZW4iLCJjb21waWxlX2FjYyQxNiIsIndlYWtfaGFzaHRibHNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlX2ciLCJjb21waWxlX2FjYyQxOCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2dlbiIsImNvbXBpbGVfYWNjJDE5IiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9nIiwiY29tcGlsZV9hY2MkMjAiLCJudW1fbm9kZXNfY2hhbmdlZF9nZW4iLCJjb21waWxlX2FjYyQyMSIsIm51bV9ub2Rlc19jcmVhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIzIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjQiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMyIsImNvbXBpbGVfYWNjJDI1IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDQiLCJjb21waWxlX2FjYyQyNiIsIm51bV92YXJfc2V0c19nZW4iLCJjcmVhdGUkMSIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQyIiwic3RhdHVzXzAxNSIsInN0YWJpbGl6YXRpb25fbnVtXzAxOSIsImN1cnJlbnRfc2NvcGVfMDIxIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfMDI3IiwiYWRqdXN0X2hlaWdodHNfaGVhcF8wMjUiLCJyZWNvbXB1dGVfaGVhcF8wMjMiLCJudW1fYWN0aXZlX29ic2VydmVyc18wMjkiLCJhbGxfb2JzZXJ2ZXJzXzAzMSIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfMDQzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fMDQxIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXzAzOSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzXzAzNyIsIm5ld19vYnNlcnZlcnNfMDM1IiwiZmluYWxpemVkX29ic2VydmVyc18wMzMiLCJvbmx5X2luX2RlYnVnXzA0NSIsIndlYWtfaGFzaHRibHNfMDQ3Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV8wIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfMDUxIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV8wIiwibnVtX25vZGVzX2NoYW5nZWRfMDU1IiwibnVtX25vZGVzX2NyZWF0ZWRfMDU3IiwibnVtX25vZGVzX2ludmFsaWRhdGVkXzA1OSIsIm51bV9ub2Rlc19yZWNvbXB1dGVkXzA2MSIsIm51bV92YXJfc2V0c18wNjciLCJhcmdfMDY4IiwiYm5kc18wMTQiLCJhcmdfMDY2IiwiYm5kc18wMTQkMCIsImFyZ18wNjQiLCJibmRzXzAxNCQxIiwiYXJnXzA2MiIsImJuZHNfMDE0JDIiLCJhcmdfMDYwIiwiYm5kc18wMTQkMyIsImJuZHNfMDE0JDQiLCJibmRzXzAxNCQ1IiwiYm5kc18wMTQkNiIsImJuZHNfMDE0JDciLCJibmRzXzAxNCQ4IiwiYm5kc18wMTQkOSIsImJuZHNfMDE0JDEwIiwiYm5kc18wMTQkMTEiLCJibmRzXzAxNCQxMiIsImJuZHNfMDE0JDEzIiwiYm5kc18wMTQkMTQiLCJibmRzXzAxNCQxNSIsImJuZHNfMDE0JDE2IiwiYm5kc18wMTQkMTciLCJibmRzXzAxNCQxOCIsImJuZHNfMDE0JDE5IiwiYm5kc18wMTQkMjAiLCJibmRzXzAxNCQyMSIsImJuZHNfMDE0JDIyIiwiYm5kc18wMTQkMjMiLCJibmRzXzAxNCQyNCIsImJuZHNfMDE0JDI1IiwiZmlyZWRfYWxhcm1fdmFsdWVzIiwic2V0X2ZpcmVkX2FsYXJtX3ZhbHVlcyIsImhhbmRsZV9maXJlZCIsInRpbWluZ193aGVlbCIsImZpcmVkX2FsYXJtX3ZhbHVlcyQwIiwiaGFuZGxlX2ZpcmVkJDAiLCJub3ckMCIsInRpbWluZ193aGVlbCQwIiwibWFrZV9jcmVhdG9yJDEiLCJ0aW1pbmdfd2hlZWxfZnVuIiwibm93X2Z1biIsImhhbmRsZV9maXJlZF9mdW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZnVuIiwidGltaW5nX3doZWVsX2dlbiIsIm5vd19nZW4iLCJoYW5kbGVfZmlyZWRfZ2VuIiwiZmlyZWRfYWxhcm1fdmFsdWVzX2dlbiIsImNyZWF0ZSQyIiwibWFwJDMiLCJpdGVyJDMiLCJmb2xkJDMiLCJtYXBfcG9seSQxIiwiZm9yX2FsbCQzIiwiZXhpc3RzJDMiLCJ0b19saXN0JDMiLCJpdGVyJDQiLCJmb2xkJDQiLCJmb3JfYWxsJDQiLCJleGlzdHMkNCIsInRvX2xpc3QkNCIsIm1hcCQ0Iiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQxIiwic2V4cF9vZl90JDMiLCJub3dfMDcyIiwidGltaW5nX3doZWVsXzA3MCIsImZpcmVkX2FsYXJtX3ZhbHVlc18wNzYiLCJhcmdfMDc3IiwiYm5kc18wNjkiLCJhcmdfMDc1IiwiYm5kc18wNjkkMCIsImFyZ18wNzMiLCJibmRzXzA2OSQxIiwiYXJnXzA3MSIsImJuZHNfMDY5JDIiLCJpbnZhcmlhbnQkMSIsIm5vdyQxIiwiY2xvY2siLCJ0aW1pbmdfd2hlZWxfbGVuZ3RoIiwibnVtX3N0YWJpbGl6ZXMiLCJpdGVyX29ic2VydmVycyIsImRpcmVjdGx5X29ic2VydmVkIiwiaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyIsInRfb2Zfc2V4cCIsInhfMDg1Iiwic2V4cF8wODQiLCJhcmcxXzA4MSIsImFyZzBfMDgwIiwicmVzMF8wODIiLCJyZXMxXzA4MyIsInBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhciIsInNleHBfb2ZfdCQ0IiwibWF4X251bV9wYXJlbnRzXzA4NyIsImFyZ18wOTAiLCJhcmcxXzA5MiIsImFyZzBfMDkxIiwicmVzMF8wOTMiLCJyZXMxXzA5NCIsImJuZHNfMDg2IiwiYXJnXzA4OCIsImJuZHNfMDg2JDAiLCJzdGF0cyIsIm51bV9uZWNlc3Nhcnlfbm9kZXMiLCJtYXhfbnVtX3BhcmVudHMkMCIsIm51bV9ub2Rlc19ieV9udW1fcGFyZW50cyIsIm51bV9ub2RlcyIsImFtX3N0YWJpbGl6aW5nIiwicmFpc2VkX2V4biIsImludmFyaWFudCQyIiwiaW50ZXJuYWxfb2JzZXJ2ZXIiLCJ4XzA5NSIsInBhY2tlZCIsImVuc3VyZV9ub3Rfc3RhYmlsaXppbmciLCJhbGxvd19pbl91cGRhdGVfaGFuZGxlciIsImJhY2t0cmFjZSQwIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24kMSIsInJlbW92ZV9jaGlsZHJlbiIsInJlbW92ZV9jaGlsZCIsImNoZWNrX2lmX3VubmVjZXNzYXJ5IiwiYmVjYW1lX3VubmVjZXNzYXJ5IiwicCIsInUiLCJyZW1vdmVfYWxhcm0iLCJpbnZhbGlkYXRlX25vZGUiLCJpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmgiLCJyZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiZmlyc3Rfbm9kZV9vbl9yaHMiLCJuZXdfc2NvcGUiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSQxIiwiZXhwZXJ0IiwiYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oIiwid2FzX25lY2Vzc2FyeSIsInhfMDk2IiwiYmVjYW1lX25lY2Vzc2FyeSIsInJ1bl93aXRoX3Njb3BlIiwic2NvcGUiLCJzYXZlZCIsImV4biQwIiwid2l0aGluX3Njb3BlIiwiY2hhbmdlX2NoaWxkIiwib2xkX2NoaWxkIiwibmV3X2NoaWxkIiwib2xkX2NoaWxkJDAiLCJhZGRfYWxhcm0iLCJyZWNvbXB1dGUiLCJtYXliZV9jaGFuZ2VfdmFsdWUiLCJvbGRfcmhzIiwib2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsImNvcHlfY2hpbGQiLCJvbmx5X2ZyZWV6ZV93aGVuIiwiZWxzZSQwIiwidGhlbiIsImRlc2lyZWRfYnJhbmNoIiwibWFpbiQxIiwib2xkX3JocyQwIiwicmhzJDEiLCJyaHMkMiIsIm4xIiwiY2xvY2skMCIsImF0JDAiLCJjbG9jayQxIiwiY2hpbGQkMSIsInN0ZXBfZnVuY3Rpb24iLCJzdGVwX2Z1bmN0aW9uX3ZhbHVlIiwiYXQkMSIsIm4yIiwibjEkMCIsIm4zIiwibjIkMCIsIm4xJDEiLCJmJDIiLCJuNCIsIm4zJDAiLCJuMiQxIiwibjEkMiIsImYkMyIsIm41IiwibjQkMCIsIm4zJDEiLCJuMiQyIiwibjEkMyIsImYkNCIsIm42IiwibjUkMCIsIm40JDEiLCJuMyQyIiwibjIkMyIsIm4xJDQiLCJmJDUiLCJuNyIsIm42JDAiLCJuNSQxIiwibjQkMiIsIm4zJDMiLCJuMiQ0IiwibjEkNSIsImYkNiIsIm44IiwibjckMCIsIm42JDEiLCJuNSQyIiwibjQkMyIsIm4zJDQiLCJuMiQ1IiwibjEkNiIsImYkNyIsIm45IiwibjgkMCIsIm43JDEiLCJuNiQyIiwibjUkMyIsIm40JDQiLCJuMyQ1IiwibjIkNiIsIm4xJDciLCJmJDgiLCJuMTAiLCJuOSQwIiwibjgkMSIsIm43JDIiLCJuNiQzIiwibjUkNCIsIm40JDUiLCJuMyQ2IiwibjIkNyIsIm4xJDgiLCJmJDkiLCJuMTEiLCJuMTAkMCIsIm45JDEiLCJuOCQyIiwibjckMyIsIm42JDQiLCJuNSQ1IiwibjQkNiIsIm4zJDciLCJuMiQ4IiwibjEkOSIsImYkMTAiLCJuMTIiLCJuMTEkMCIsIm4xMCQxIiwibjkkMiIsIm44JDMiLCJuNyQ0IiwibjYkNSIsIm41JDYiLCJuNCQ3IiwibjMkOCIsIm4yJDkiLCJuMSQxMCIsImYkMTEiLCJuMTMiLCJuMTIkMCIsIm4xMSQxIiwibjEwJDIiLCJuOSQzIiwibjgkNCIsIm43JDUiLCJuNiQ2IiwibjUkNyIsIm40JDgiLCJuMyQ5IiwibjIkMTAiLCJuMSQxMSIsImYkMTIiLCJuMTQiLCJuMTMkMCIsIm4xMiQxIiwibjExJDIiLCJuMTAkMyIsIm45JDQiLCJuOCQ1IiwibjckNiIsIm42JDciLCJuNSQ4IiwibjQkOSIsIm4zJDEwIiwibjIkMTEiLCJuMSQxMiIsImYkMTMiLCJuMTUiLCJuMTQkMCIsIm4xMyQxIiwibjEyJDIiLCJuMTEkMyIsIm4xMCQ0IiwibjkkNSIsIm44JDYiLCJuNyQ3IiwibjYkOCIsIm41JDkiLCJuNCQxMCIsIm4zJDExIiwibjIkMTIiLCJuMSQxMyIsImYkMTQiLCJjaGlsZF9pbmRleCQwIiwidSQwIiwiY2FuX3JlY29tcHV0ZV9ub3ciLCJiIiwiaiIsInJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbiIsInhfMDk3IiwidW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSIsImRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMiLCJvYnNlcnZlcl9maW5hbGl6ZXIiLCJjcmVhdGVfb2JzZXJ2ZXIiLCJzaG91bGRfZmluYWxpemUiLCJhZGRfbmV3X29ic2VydmVycyIsIm9sZF9hbGxfb2JzZXJ2ZXJzIiwib2xkX29ic2VydmVycyIsIm9ic2VydmVyX3ZhbHVlX2V4biIsInhfMDk4Iiwib2JzZXJ2ZXJfdmFsdWUiLCJub2RlX29uX3VwZGF0ZSIsIm9ic2VydmVyX29uX3VwZGF0ZV9leG4iLCJzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyIsInNldF92YXIiLCJyZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMiLCJ3ZWFrX2hhc2h0YmwiLCJzdGFiaWxpemVfc3RhcnQiLCJzdGFiaWxpemVfZW5kIiwibWF0Y2gkMCIsIm5vZGVfdXBkYXRlJDAiLCJyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiIsInJhaXNlZCIsInN0YWJpbGl6ZSIsInNleHBfb2ZfdCQ1IiwiZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIiwiY3JlYXRlX25vZGVfaW4iLCJjcmVhdGVfbm9kZSIsImNyZWF0ZV9ub2RlX3RvcCIsImNyZWF0ZV92YXIiLCJ1c2VfY3VycmVudF9zY29wZSIsImNvbnN0JDAiLCJtYXAkNSIsIm1hcDIiLCJib3RoIiwibWFwMyIsIm1hcDQiLCJtYXA1IiwibWFwNiIsIm1hcDciLCJtYXA4IiwibWFwOSIsIm1hcDEwIiwibWFwMTEiLCJtYXAxMiIsIm1hcDEzIiwibWFwMTQiLCJtYXAxNSIsInByZXNlcnZlX2N1dG9mZiIsImlucHV0Iiwib3V0cHV0IiwiZGVwZW5kX29uIiwibmVjZXNzYXJ5X2lmX2FsaXZlIiwiYmluZDIiLCJ2MSIsInYyIiwiYmluZDMiLCJ2MyIsImJpbmQ0IiwidjQiLCJpZiQwIiwibGF6eV9mcm9tX2Z1biIsImRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpeiIsIm1lbW9pemVfZnVuX2J5X2tleSIsImhhc2hhYmxlIiwicHJvamVjdF9rZXkiLCJpbml0aWFsX3NpemUiLCJ0YWJsZSIsImtleSIsImIkMCIsImFsbCIsIm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCIsIm51bV9pbnZhbGlkIiwiYWNjdW0iLCJ4JDAiLCJmX2ludmVyc2UkMCIsImF0X2xlYXN0X2tfb2YiLCJib29sX3RvX2ludCIsIm51bV90cnVlIiwiZXhpc3RzJDUiLCJmb3JfYWxsJDUiLCJzdW0iLCJ6ZXJvIiwic3ViIiwib3B0X3N1bSIsInN1bV9pbnQiLCJzdW1fZmxvYXQiLCJzZXRfZnJlZXplIiwidGltZSIsImFmdGVyIiwic3BhbiIsIm5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IiwiYmFzZSIsInZhbHVlX2F0IiwiaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiIsImFkdmFuY2VfY2xvY2siLCJtYWluJDIiLCJjcmVhdGVfY2xvY2siLCJ0aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQiLCJjcmVhdGUkMyIsIkNvbmZpZyIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5IiwiZXhwZXJ0X2tpbmRfb2Zfbm9kZSIsInhfMDk5IiwiY3JlYXRlJDQiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biIsImN1cnJlbnQiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8iLCJ4XzEwMSIsInhfMTAwIiwiYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfJDAiLCJ4XzEwMyIsInhfMTAyIiwibWFrZV9zdGFsZSQwIiwiZV9vcHQiLCJpbnZhbGlkYXRlIiwiYWRkX2RlcGVuZGVuY3kiLCJkZXAiLCJyZW1vdmVfZGVwZW5kZW5jeSIsImVkZ2UiLCJlZGdlX2luZGV4IiwibGFzdF9lZGdlIiwibGFzdF9lZGdlX2luZGV4Iiwib25fY2hhbmdlIiwicmVkdWNlIiwicmVkdWNlciIsImxldmVsX2JpdHMiLCJjcmVhdGVfaW50ZXJuYWwiLCJkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCIsInNleHBfb2Zfc3RhdGVfd2l0bmVzcyIsIndpdGhpbiIsInBhY2siLCJyZXR1cm4kMCIsIm1hcDIkMCIsIm1hcDMkMCIsIm1hcDQkMCIsIm1hcDUkMCIsIm1hcDYkMCIsIm1hcDckMCIsIm1hcDgkMCIsIm1hcDkkMCIsIm1hcDEwJDAiLCJtYXAxMSQwIiwibWFwMTIkMCIsIm1hcDEzJDAiLCJtYXAxNCQwIiwibWFwMTUkMCIsImJpbmQyJDAiLCJiaW5kMyQwIiwiYmluZDQkMCIsInN5bWJvbF9tYXAiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDAiLCJsYXp5X2Zyb21fZnVuJDAiLCJtZW1vaXplX2Z1biIsImFycmF5X2ZvbGQkMCIsInJlZHVjZV9iYWxhbmNlZCIsInJlcGxhY2UiLCJ4XzAxNyIsImRpc2FsbG93X2Z1dHVyZV91c2UkMCIsImluY3Jfc3RhdGUkMSIsImFsYXJtX3ByZWNpc2lvbiIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyIsInN0YXJ0JDAiLCJhbGFybV9wcmVjaXNpb24kMCIsIndhdGNoX25vdyIsImFkdmFuY2VfY2xvY2tfYnkiLCJmcmVlemUkMCIsIndoZW4iLCJkZXBlbmRfb24kMCIsInN0YWJpbGl6ZSQwIiwiYW1fc3RhYmlsaXppbmckMCIsIm9mX2FfMDE4IiwiYXJnMF8wMTkiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwibm9kZV92YWx1ZSIsInNleHBfb2ZfdCQ2IiwiYm90aCQwIiwieDEiLCJ4MiIsIm1hcDIkMSIsIm1hcDMkMSIsIm1hcDQkMSIsIm1hcDUkMSIsIm1hcDYkMSIsIm1hcDckMSIsIm1hcDgkMSIsIm1hcDkkMSIsIm1hcDEwJDEiLCJtYXAxMSQxIiwibWFwMTIkMSIsIm1hcDEzJDEiLCJtYXAxNCQxIiwibWFwMTUkMSIsImJpbmQyJDEiLCJiaW5kMyQxIiwiYmluZDQkMSIsIndlYWtfbWVtb2l6ZV9mdW4iLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUkMCIsImNvbnN0JDEiLCJyZXR1cm4kMSIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1IiwiZGVidWciLCJub19pbnN0cnVtZW50YXRpb24iLCJmIiwid2l0aF9vbGQiLCJpbnN0cnVtZW50YXRpb24iLCJpIiwib2xkIiwiYSIsImIiLCJjdXRvZmYiLCJtYXAiLCJkYXRhX2VxdWFsIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiY3VyIiwib2xkJDAiLCJhY2MiLCJjaGFuZ2UiLCJrZXkiLCJuZXckMCIsInVub3JkZXJlZF9mb2xkIiwidXBkYXRlIiwic3BlY2lhbGl6ZWRfaW5pdGlhbCIsImluaXQiLCJhZGQiLCJyZW1vdmUiLCJmaW5hbGl6ZSIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJvbGRfb3V0Iiwib2xkX2luIiwiaW5pdCQwIiwibmV3JDEiLCJpbml0aWFsIiwidW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHMiLCJpbmNyX21hcCIsInVwZGF0ZSQxIiwib3V0ZXJfa2V5IiwiaW5uZXJfa2V5Iiwib2xkX2lubmVyX21hcCIsIm5ld19pbm5lcl9tYXAiLCJkaWZmIiwiZGF0YV9yZW1vdmVkIiwiZGF0YV9hZGRlZCIsImlubmVyX21hcCIsImRhdGEiLCJ3aXRoX2NvbXBhcmF0b3IiLCJnZXRfY29tcGFyYXRvciIsIngiLCJ3aXRoX2NvbXBhcmF0b3IkMCIsIm9mX3NldCIsInNldCIsImNvbXBhcmF0b3IiLCJvbGRfaW5wdXQiLCJvbGRfb3V0cHV0IiwibmV3X2lucHV0IiwibmV3X291dHB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJnZW5lcmljX21hcGkiLCJ3aXRuZXNzIiwiaW5wdXQiLCJyZXMiLCJvdXRwdXRfZGF0YSIsIm1hcGkiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9tYXAiLCJ3aXRoX29sZDIiLCJpMSIsImkyIiwiYTEiLCJhMiIsInVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmEiLCJleHRyYSIsImV4dHJhX2NoYW5nZWQiLCJleHRyYV9lcXVhbCIsIm5ld19leHRyYSIsIm9sZF9leHRyYSIsImFjYyQwIiwibWFwaV9jb3VudCIsIm5ld19rZXkiLCJuIiwicHJldl9rZXkiLCJtYXBfY291bnQiLCJtaW5faGVscGVyIiwibWluIiwibWF4X2hlbHBlciIsIm1heCIsImJvdW5kc19oZWxwZXIiLCJtYXBpX21pbiIsIm1hcGlfbWF4IiwibWFwaV9ib3VuZHMiLCJtYXBfbWluIiwibWFwX21heCIsIm1pbl92YWx1ZSIsIm1heF92YWx1ZSIsIm1hcF9ib3VuZHMiLCJ2YWx1ZV9ib3VuZHMiLCJtZXJnZV9zaGFyZWRfaW1wbCIsIm5ld19sZWZ0X21hcCIsIm5ld19yaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0Iiwib2xkX3JpZ2h0X21hcCIsIm9sZF9sZWZ0X21hcCIsIm9sZF9sZWZ0X21hcCQwIiwibGVmdF9kaWZmIiwicmlnaHRfZGlmZiIsInJpZ2h0X2tleSIsImxlZnRfa2V5IiwiZGlmZl9lbGVtZW50Iiwia2V5JDAiLCJuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJyaWdodF9kYXRhX29wdCQwIiwibGVmdF9kYXRhX29wdCIsInJpZ2h0X2RpZmYkMCIsImxlZnRfZGlmZiQwIiwicmlnaHRfZGF0YV9vcHQkMiIsImxlZnRfZGF0YV9vcHQkMCIsInkiLCJvdXRwdXRfZGF0YV9vcHQiLCJ5JDAiLCJtZXJnZV9ib3RoX3NvbWUiLCJvdXRfZXF1YWwiLCJlbXB0eSIsImxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IiwibGVmdF9kYXRhIiwicmlnaHRfZGF0YSIsInByZXZfb3V0IiwicHJldl9vdXQkMCIsImdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3IiLCJsaHMiLCJpbmNyZW1lbnRhbF9zdGF0ZSIsImVtcHR5X21hcCIsInByZXZfbWFwIiwicHJldl9ub2RlcyIsInJlc3VsdCIsIm9uX2lubmVyX2NoYW5nZSIsIm9wdCIsImxoc19jaGFuZ2UiLCJuZXdfbm9kZXMiLCJub2RlcyIsImNoYW5nZWQiLCJkZXAiLCJub2RlIiwibm9kZXMkMCIsIm5vZGUkMCIsIm5vZGUkMSIsImMiLCJ1c2VyX2Z1bmN0aW9uX2RlcCIsImZpbHRlcl9tYXBpJDAiLCJtYXBpJDAiLCJtYXAkMCIsImZpbHRlcl9tYXAkMCIsIm1lcmdlJDAiLCJtYXAxIiwibWFwMiIsInVuemlwX21hcGkiLCJsZWZ0X3Jlc3VsdF9lcXVhbCIsInJpZ2h0X3Jlc3VsdF9lcXVhbCIsInBhaXIiLCJkYXRhX2VxdWFsJDAiLCJsZWZ0X3Jlc3VsdF9lcXVhbCQwIiwicmlnaHRfcmVzdWx0X2VxdWFsJDAiLCJsZWZ0X2FjYyIsImxlZnRfcmVzdWx0IiwicmlnaHRfYWNjIiwicmlnaHRfcmVzdWx0IiwiaW5wdXRfY2hhbmdlIiwibGVmdCQwIiwibCIsInJpZ2h0JDAiLCJyIiwicmlnaHQiLCJsZWZ0IiwicHJldiIsInByZXZfYiIsInByZXZfYSIsIm5ld19iIiwibmV3X2EiLCJlbGVtZW50IiwidW56aXAiLCJ1bnppcF9tYXBpJDAiLCJyaWdodF9kZXAiLCJsZWZ0X2RlcCIsInJpZ2h0X2luY3IiLCJsZWZ0X2luY3IiLCJsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwIiwicmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAiLCJrZXlzIiwicGFydGl0aW9uX21hcGkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsInBhcnRpdGlvbl9tYXBpJDAiLCJmbGF0dGVuIiwic3RhdGUiLCJpbmNyIiwiam9pbiIsIm1hcF9pbmNyIiwicmVzdWx0X21hcCIsIm9sZF9tYXBfb2ZfaW5jcnMiLCJjdXJyZW50X2RlcGVuZGVuY2llcyIsImFkZF9zdWJub2RlIiwiZGF0YV9ub2RlIiwibmV3X2RlcCIsInJlbW92ZV9zdWJub2RlIiwibWFwX29mX2luY3JzIiwibmV3X2RlcGVuZGVuY3lfbWFwIiwiZGF0YV9ub2RlJDAiLCJzZXBhcmF0ZSIsImlucHV0X21hcCIsIm91dHB1dF9tYXBfbm9kZSIsIm1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwXyIsImlucHV0X21hcF9jaGFuZ2VkIiwiZGVwZW5kZW5jeSIsInByZXZfaW5wdXRfbWFwIiwib3V0cHV0X21hcCIsImV4cGVydF9ub2RlcyIsIm9sZF9ub2RlIiwic3VicmFuZ2UiLCJyYW5nZSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heWJlX2JvdW5kX2VxdWFsIiwiYV8wMDgiLCJiXzAwOSIsImFfMDEwIiwiYl8wMTEiLCJhXzAxMiIsImJfMDEzIiwicmFuZ2VfaXNfZW1wdHkiLCJtaW4kMCIsIm1heCQwIiwibWF4JDEiLCJtaW4kMSIsInJhbmdlX2luY2x1ZGVzIiwicmFuZ2UkMCIsImZyb21fc2NyYXRjaCIsIm9sZF9yYW5nZSIsIm9sZF9taW4iLCJvbGRfbWFwIiwib2xkX21heCIsIm9sZF9yZXMiLCJvbGRfbWF4JDAiLCJwYXJhbSIsImFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIiwib3V0c2lkZSIsIm91dHNpZGUkMCIsIm91dHNpZGVfY3V0b2ZmIiwid2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlIiwid2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSIsIm1hcF9hcHBlbmRfZXhuIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJvbGRfbWluJDAiLCJvbGRfbWluJDEiLCJvbGRfbWF4JDEiLCJ3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSIsInJla2V5Iiwib3V0ZXJfY29tcGFyYXRvciIsImFkZHMiLCJvdXRwdXQkMCIsIm5ld19lbnRyeSIsImluZGV4X2J5aSIsImluZGV4IiwiaW5uZXJfY29tcGFyYXRvciIsIm91dGVyX21hcCIsImlubmVyX21hcCQwIiwiaW5kZXhfYnkiLCJpc19rbm93biIsInRvX29wdGlvbiIsImZpbmRfa2V5X3JhbmdlX2xpbmVhciIsImZyb20iLCJ0byIsImxlbiIsImJlZ2luX2tleSIsImVuZF9rZXkiLCJmaW5kX2tleXMiLCJmb2xkIiwic3RhcnRfcG9zIiwiYWR2YW5jZV9wb3MiLCJwb3MiLCJiZWdpbl9rZXkkMCIsImVuZF9rZXkkMCIsImZpbmRfb2Zmc2V0IiwiY2hhbmdlZF9rZXkiLCJyYW5rIiwiY29tcGFyZV9rZXkiLCJzYW1lX2tleSIsInByb2Nlc3MiLCJuZXdfbWFwIiwib2xkX3JhbmsiLCJvbGRfa2V5Iiwib2xkX3JhbmskMCIsImRpZmZfa2V5Iiwib2xkX3JhbmskMSIsIm9sZCQxIiwidXBwZXJfYm91bmQiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kJDAiLCJsb3dlcl9ib3VuZCQwIiwic3VicmFuZ2UkMCIsInN1YnJhbmdlX2J5X3JhbmsiLCJmaW5kX2tleV9yYW5nZSIsImVuZF9rZXlfb3B0JDAiLCJvbGRfdG8iLCJvbGRfZnJvbSIsInJhbmdlX29mZnNldF9iZWdpbiIsInJhbmdlX29mZnNldF9lbmQiLCJhZGp1c3RfYW5kX29mZnNldCIsImJ5JDEiLCJrZXkkMSIsImJ5JDIiLCJieSIsImNsb3Nlc3RfZGlyIiwiYnkkMCIsIm9mZnNldF9lbmQiLCJvZmZzZXRfYmVnaW4iLCJtYXBfb2Zmc2V0X2VuZCIsIm1hcF9vZmZzZXRfYmVnaW4iLCJlbmRfa2V5X29wdCQyIiwiYmVnaW5fa2V5X29wdCIsIm1hcF9vZmZzZXRfYmVnaW4kMCIsImVuZF9rZXlfb3B0IiwiYmVnaW5fa2V5X29wdCQwIiwic3ltYm9sIiwiYm91bmQiLCJyZXR1cm4kMCIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxNCIsImxiIiwicGF0dGVybl9zeW50YXhfMDE1IiwidSIsInBhdHRlcm5fc3ludGF4XzAxNiIsInViIiwicGF0dGVybl9zeW50YXhfMDE3IiwibGV0X3N5bnRheF8wMjIiLCJsJDAiLCJwYXR0ZXJuX3N5bnRheF8wMTgiLCJsYiQwIiwicGF0dGVybl9zeW50YXhfMDE5IiwibGV0X3N5bnRheF8wMjYiLCJ1JDAiLCJwYXR0ZXJuX3N5bnRheF8wMjAiLCJ1YiQwIiwicGF0dGVybl9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjkiLCJ0cmFuc3Bvc2UiLCJrMl9jb21wYXJhdG9yIiwibSIsImsxX2NvbXBhcmF0b3IiLCJrMSIsImsyIiwidmFsdWUiLCJhY2NfaW5uZXIiLCJhY2NfaW5uZXIkMCIsImNvbGxhcHNlX2J5IiwibWVyZ2Vfa2V5cyIsImNvbGxhcHNlIiwiaW5uZXJfY29tcGFyYXRvciQwIiwiZXhwYW5kIiwiY291bnRpIiwiY291bnQiLCJleGlzdHNpIiwiZXhpc3RzIiwic3VtIiwiR3JvdXAiLCJ2IiwiZm9yX2FsbGkiLCJmb3JfYWxsIiwidW5vcmRlcmVkX2ZvbGQkMCIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzJDAiLCJjcmVhdGUiLCJzZWxmIiwidXBkYXRlcl9ub2RlIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJpbmZvX3Blcl9rZXkiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsIm1hdGNoJDAiLCJzYXZlZF92YWx1ZSIsIm1hdGNoJDIiLCJtYXRjaCQzIiwidiQwIiwibWF0Y2gkNCIsInYkMSIsIm1hdGNoJDUiLCJ2JDIiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJjb250ZW50c19iaWdzdHIiLCJjcmVhdGUkMCIsImdldF9kb3dubG9hZCIsImJ1dHRvbl90ZXh0IiwiZW5hYmxlZCIsIm9uX2NsaWNrIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMDMiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wMTkiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInhfMDA0IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwic2V4cF9vZl90Iiwib2ZfYV8wMDUiLCJyaWdodF8wMTMiLCJib3R0b21fMDExIiwibGVmdF8wMDkiLCJ0b3BfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwidjQiLCJ2MyIsInYyIiwidjEiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwicG9zJDAiLCJwb3MkMSIsInBvcyQyIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X3RvcCIsInZfbGVmdCIsInZfYm90dG9tIiwidl9yaWdodCIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMTUiLCJiXzAxNiIsIm4iLCJuJDAiLCJuJDEiLCJyaWdodCQwIiwiYm90dG9tJDAiLCJsZWZ0JDAiLCJ0b3AkMCIsIm1ha2VfY3JlYXRvciIsInRvcF9mdW4iLCJsZWZ0X2Z1biIsImJvdHRvbV9mdW4iLCJyaWdodF9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJ0b3BfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImxlZnRfZ2VuIiwiY29tcGlsZV9hY2MkMiIsImJvdHRvbV9nZW4iLCJjb21waWxlX2FjYyQzIiwicmlnaHRfZ2VuIiwiYWNjIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwibWFwJDEiLCJ0IiwiZiIsImludF9oZWlnaHQiLCJpbnRfd2lkdGgiLCJmbG9hdF9oZWlnaHQiLCJmbG9hdF93aWR0aCIsInJvdW5kX2Zsb2F0X3JlY3QiLCJyb3VuZCIsInJvd3Nfb3JfY29sdW1uc19vZl9zZXhwIiwic2V4cF8wMjAiLCJzZXhwX29mX3Jvd3Nfb3JfY29sdW1ucyIsImdyb3VwJDAiLCJiaW5fc2hhcGVfcm93c19vcl9jb2x1bW5zIiwiYmluX3NpemVfcm93c19vcl9jb2x1bW5zIiwiYmluX3dyaXRlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZXJfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zJDAiLCJiaW5fcmVhZGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yb3dzX29yX2NvbHVtbnMiLCJyb3dzIiwiY29sdW1ucyIsImlzX3Jvd3MiLCJpc19jb2x1bW5zIiwicm93c192YWwiLCJjb2x1bW5zX3ZhbCIsInJvd3MkMCIsImNvbHVtbnMkMCIsImZvbGQkMSIsInJvd3NfZnVuIiwiY29sdW1uc19mdW4iLCJpdGVyJDEiLCJtYXAkMiIsIm1ha2VfbWF0Y2hlciIsInJvd3NfZ2VuIiwiY29sdW1uc19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsImNvbXBhcmVfcm93c19vcl9jb2x1bW5zIiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZWxlbWVudF9pc19pbl92aWV3cG9ydCIsInNjcm9sbCIsImlkIiwidmlld3BvcnRfcmVjdF9vZl9lbGVtZW50Iiwidmlld3BvcnRfcmVjdCIsImNsaWVudF9yZWN0X29mX2VsZW1lbnQiLCJib3VuZGluZ19yZWN0IiwiY2xpZW50X3JlY3QiLCJmaW5kX3Zpc2libGVfcmFuZ2UiLCJsZW5ndGgiLCJudGhfZWxlbWVudF9pZCIsImxheW91dCIsImVsZW1lbnRfc2VhcmNoIiwic2VhcmNoX2J5IiwibW9kZSIsIngiLCJudGhfZWxlbWVudCIsImVsdCIsImZpcnN0IiwibGFzdCIsImdldCIsImlzX2FzY2VuZGluZyIsImxlbmd0aCQwIiwidmlld3BvcnRfcmVjdCQwIiwidGFyZ2V0IiwidGFyZ2V0JDAiLCJzZWFyY2hfYnkkMCIsImdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lciIsImVsIiwiZmlsZW5hbWUiLCJwcmludF9lcnJvcmYiLCJmbXQiLCJzIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYWxsYmFjayIsImN1cnJlbnRfY29udGV4dCIsInJlcXVlc3RfaWRzIiwiY2FsbGJhY2skMCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsInNldF90aW1lb3V0X2lkIiwiYXNfZm9jdXNhYmxlIiwibWFya19kaXJ0eSIsImlzX2RpcnR5IiwieF8wMDIiLCJ4XzAwMyIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3Iiwic2V0X2xvZ2dpbmdfZmlsdGVyIiwibG9nZ2luZ19maWx0ZXIiLCJnbG9iYWxfaXNfaW5pdGlhbGl6ZWQiLCJhcHBfc3RhdGVzIiwic2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QiLCJzdHJpbmdzIiwic3RyIiwibXVsdGlfbGluZV9zdHJpbmdfbGlzdCIsImdldF90YWdfbmFtZSIsIm5vZGUiLCJub2RlJDAiLCJlIiwibm9kZSQxIiwic3RhcnRfYm9uc2FpIiwiYmluZF90b19lbGVtZW50X3dpdGhfaWQiLCJpbml0aWFsX21vZGVsIiwiQXBwIiwiZGVidWciLCJzdG9wIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsImN1dG9mZiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJuYW1lZF9sb2dnaW5nX2ZpbHRlcnMkMCIsImZpbHRlcl9uYW1lcyIsImFwcF9pbml0X21lc3NhZ2UiLCJ3aXRoX2FwcF9pZF9vcHQiLCJ1cGRhdGVfc3RhdGUiLCJhcHBfaWRfb3B0IiwiYXBwX2lkX29wdCQwIiwiYXBwX2lkIiwic3RhdGUiLCJ1cGRhdGVfbG9nZ2luZ19maWx0ZXIiLCJ1cGRhdGVfc2hvdWxkX3Byb2ZpbGUiLCJzaG91bGRfcHJvZmlsZSIsInVwZGF0ZV9zaG91bGRfZGVidWciLCJzaG91bGRfZGVidWciLCJibGFuZ19zdHIiLCJibGFuZ19zdHIkMCIsImFwcF9zdGF0ZSIsImJsYW5nIiwiaW52YWxpZF9uYW1lcyIsIm5hbWUiLCJmaWx0ZXIiLCJmaWx0ZXIkMCIsImFjdGlvbl9zZXhwIiwiY29udGVudHMiLCJsb2ciLCJodG1sIiwiaHRtbF9kb20iLCJwYXJlbnQiLCJjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQiLCJldmVudF9uYW1lIiwid2hlcmUiLCJwcmV2X2h0bWwiLCJwcmV2X2VsdCIsInJlZm9jdXNfcm9vdF9lbGVtZW50IiwiZWxlbWVudCIsInRpbWVyX3N0YXJ0IiwicHJvZmlsZSIsInRpbWVyX3N0b3AiLCJiZWZvcmUiLCJhZnRlciIsInJlbGF0ZWRfdGFyZ2V0Iiwic2FmZV9maWx0ZXIiLCJzaG91bGRfbG9nIiwiZXJyIiwiY3VzdG9tX3ByaW50Zl8wMTAiLCJuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUiLCJjdXN0b21fcHJpbnRmXzAxMiIsInBlcmZvcm1fdXBkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsInJvb3QiLCJhZGRfbmV3X2F0dHJzIiwiYXR0cnMiLCJwYXRjaCIsIm9sZF90YWdfbmFtZSIsIm5ld190YWdfbmFtZSIsInRhZ3NfdGhlX3NhbWUiLCJzdGFydCIsImFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIiwib2xkX21vZGVsIiwiaW5qZWN0IiwiY29tcG9uZW50Iiwic2NoZWR1bGVfZXZlbnQiLCJzY2hlZHVsZV9hY3Rpb24iLCJlcnJvcl9zb3VyY2VfMDE0IiwiaW52YXJpYW50IiwidCIsIm9mX3N0cmluZyIsInMiLCJ0b19zdHJpbmciLCJlcXVhbCIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImFfMDA1IiwiYl8wMDYiLCJhXzAwOSIsImJfMDEwIiwidXBkYXRlX29mX3NleHAiLCJvZl9hXzAxMSIsInNleHBfMDE2Iiwic2V4cHNfMDE3IiwidmFsdWUiLCJpbnB1dCIsInNleHBzXzAxOSIsImVycm9yIiwibGFzdF92YWxpZCIsInNleHBfb2ZfdXBkYXRlIiwib2ZfYV8wMjEiLCJ2YWx1ZV8wMjUiLCJpbnB1dF8wMjMiLCJhcmdfMDI2IiwiYm5kc18wMjIiLCJhcmdfMDI0IiwiYm5kc18wMjIkMCIsImVycm9yXzAzMiIsImxhc3RfdmFsaWRfMDMwIiwiaW5wdXRfMDI4IiwiYXJnXzAzMyIsImJuZHNfMDI3IiwiYXJnXzAzMSIsImJuZHNfMDI3JDAiLCJhcmdfMDI5IiwiYm5kc18wMjckMSIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInYyIiwidjEiLCJzaXplIiwidjMiLCJ2MiQwIiwidjEkMCIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfdCIsIm9mX2EiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3QkMCIsInZfaW5wdXQiLCJ2X3ZhbHVlIiwidl9pbnB1dCQwIiwidl9sYXN0X3ZhbGlkIiwidl9lcnJvciIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImFfMDM1IiwiYl8wMzYiLCJuIiwiYV8wMzkiLCJiXzA0MCIsIm4kMCIsIm4kMSIsImFfMDQzIiwiYl8wNDQiLCJlcXVhbF91cGRhdGUiLCJhXzA0NSIsImJfMDQ2IiwiYV8wNDciLCJiXzA0OCIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdXBkYXRlIiwiYmluX3NpemVfdXBkYXRlIiwiYmluX3dyaXRlX3VwZGF0ZSIsImJpbl93cml0ZXJfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlJDAiLCJiaW5fcmVhZGVyX3VwZGF0ZSIsImJpbl91cGRhdGUiLCJjb21wYXJlX3VwZGF0ZSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1NiIsImJfMDU3IiwibGlmdCIsIk0iLCJpbnB1dCQxIiwiaW5wdXQkMCIsImV4biQwIiwiZXhuIiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwiZ2V0X2Vycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJtZXJnZSIsInN0cnVjdHVyYWxfbGlzdCIsImNoaWxkcmVuIiwib3JpZW50YXRpb24iLCJtZXJnZV9iZWhhdmlvciIsImxheW91dF9zdHlsZSIsImNoaWxkIiwic2V4cF9vZl90IiwiY29tYmluZSIsImxlZnQiLCJyaWdodCIsImluaXQiLCJlbGVtZW50IiwiZiIsImRvY3VtZW50X2FjdGl2ZV9lbGVtZW50IiwidmFsdWUkMCIsImNoYW5nZV9oYW5kbGVyIiwibm9ybWFsaXplZCIsImNoYW5nZV9oYW5kbGVyJDAiLCJldmVudF9pZCIsIm9uX21vdW50Iiwic3RhdGUiLCJkZXN0cm95IiwidXBkYXRlJDAiLCJvbGRfaW5wdXQiLCJuZXdfaW5wdXQiLCJjcmVhdGUiLCJpbXBsIiwidmFsdWVzIiwic2VsZWN0ZWQiLCJvbl9jaGFuZ2UiLCJleHRyYV9hdHRycyIsImV4dHJhX29wdGlvbl9hdHRycyIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInBsYWNlaG9sZGVyIiwidmFsdWVzJDAiLCJleHRyYV9vcHRpb25fYXR0cnMkMCIsImFfMDU4IiwiYl8wNTkiLCJhXzA2MCIsImJfMDYxIiwib2ZfZW51bSIsIm9mX2VudW1fb3B0IiwiYV8wNjIiLCJiXzA2MyIsImFfMDY0IiwiYl8wNjUiLCJiYXJlYm9uZXNfYnV0dG9uX2xpa2UiLCJjaGVja2VkIiwiaGlkZV9uYXRpdmVfaW5wdXRzIiwic2ltcGxlIiwiZXh0cmFfYXR0cnMkMCIsImRpc2FibGVkJDAiLCJpc19jaGVja2VkIiwibGFiZWwiLCJvbl90b2dnbGUiLCJldiIsImltcGwkMCIsImxheW91dCIsInN0eWxlIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJpdGVtIiwib2ZfdmFsdWVzJDAiLCJvZl9lbnVtJDAiLCJpbXBsJDEiLCJyZXBlYXRlZF9jbGlja19iZWhhdmlvciIsInRhcmdldCIsIm9wdGlvbnMiLCJzZWxlY3RlZF92YWx1ZXMiLCJpc19zZWxlY3RlZCIsIndhc19yZXBlYXRlZF9jbGljayIsIm9mX3ZhbHVlcyQxIiwib2ZfZW51bSQxIiwibGlzdGVuZXIiLCJub3JtYWxpemUiLCJtYXliZV9vbl9yZXR1cm4iLCJvbl9yZXR1cm4iLCJvbl9yZXR1cm4kMCIsImlucHV0X25vZGUiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwidHlwZV9hdHRycyIsImNhbGxfb25faW5wdXRfd2hlbiIsInNob3VsZF9ub3JtYWxpemUiLCJ2YWx1ZSQxIiwib2Zfc3RyaW5nYWJsZSIsInZhbGlkYXRlZCIsIlYiLCJ2YWx1ZV9hdHRyIiwidGV4dCIsInBhc3N3b3JkIiwibnVtYmVyIiwic3RlcCIsInJhbmdlIiwidGltZSIsImRhdGUiLCJkYXRldGltZV9sb2NhbCIsInV0Y19vZmZzZXQiLCJob3VycyIsInpvbmUiLCJwYXJ0cyIsImhyIiwibWluIiwib2ZkYXkiLCJab25lZF90aW1lIiwidGV4dF9hcmVhIiwiY29sb3JfcGlja2VyIiwiZXh0cmFfYXR0ciIsIndpdGhfdmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJvbl9jbGljayIsInJlc3VsdCIsInJlYXNvbiIsInNpbXBsZSQwIiwiaW1wbCQyIiwibmFtZSIsIm9mX3ZhbHVlcyQyIiwiRSIsIm9mX3ZhbHVlc19ob3Jpem9udGFsIiwiYWNjZXB0X2F0dHJzIiwiYWNjZXB0cyIsInMkMCIsImxpc3QiLCJhY2NlcHQiLCJmaWxlcyIsInNpbmdsZSIsImZpbGUiLCJlbXB0eSIsImlzX2VtcHR5IiwidCIsInplcm9fYml0IiwiayIsIm0iLCJtZW0iLCJqIiwiciIsImwiLCJsJDAiLCJmaW5kIiwieCIsImZpbmRfb3B0IiwiZmluZF9maXJzdF9vcHQiLCJmIiwicnYiLCJyayIsImx2IiwibGsiLCJ2JDAiLCJmaW5kX2ZpcnN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfbGFzdCIsIm1hc2siLCJwIiwiam9pbiIsInQxIiwicDEiLCJ0MCIsInAwIiwibWF0Y2hfcHJlZml4IiwiYWRkIiwiaW5zIiwic2luZ2xldG9uIiwidiIsImJyYW5jaCIsInQkMCIsInJlbW92ZSIsInJtdiIsImNhcmRpbmFsIiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwicyIsImFjY3UiLCJzJDAiLCJhY2N1JDAiLCJhY2N1JDEiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwicHIiLCJmaWx0ZXJfbWFwIiwicGFydGl0aW9uIiwicGFydCIsImFjYyQwIiwiY2hvb3NlIiwiY2hvb3NlX29wdCIsInNwbGl0IiwiY29sbCIsImIiLCJtaW5fYmluZGluZyIsImJzIiwia3MiLCJidCIsImt0IiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJiaW5kaW5ncyIsImFjYyIsImNvbXBhcmUiLCJjbXAiLCJ0MiIsImNvbXBhcmVfYXV4IiwidDEkMCIsInQyJDAiLCJ4MSIsImsxIiwieDIiLCJrMiIsImMiLCJyMSIsImwxIiwibTEiLCJyMiIsImwyIiwibTIiLCJwMiIsImMkMCIsImMkMSIsImMkMiIsImVxdWFsIiwiZXEiLCJlcXVhbF9hdXgiLCJtZXJnZSIsImFkZCQwIiwidjEiLCJ2MiIsInVwZGF0ZSIsInoiLCJ1bnNpZ25lZF9sdCIsIm4iLCJ0JDIiLCJzMSIsInMwIiwiayQwIiwicSIsInQkMSIsInVuaW9uIiwidG9fc2VxIiwicHJlcGVuZF9zZXEiLCJtJDAiLCJzJDEiLCJ0b19zZXFfZnJvbSIsImtleSIsImFkZF9zZXEiLCJvZl9zZXEiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsInZlcnNpb24iLCJqc29uX2Vycm9yIiwicyIsImluaXRfbGV4ZXIiLCJmbmFtZSIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwib2NhbWxfbGV4X3RhYmxlcyIsInJlYWRfanVuayQwIiwibGV4YnVmIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMkMCIsInJlYWRfanVuayIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJzcHJpbnRmIiwid3JpdGVfZmxvYXRfcHJlYyIsIndyaXRlX3N0ZF9mbG9hdCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjIiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwid3JpdGVfYXNzb2MiLCJ3cml0ZV9saXN0IiwiYiIsImYiLCJ3cml0ZV9zdGRfanNvbiIsInRvX2J1ZmZlciIsInN1ZiIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJsJDEiLCJhIiwicHBfbGlzdCIsInNlcCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwieCQyIiwicyQwIiwieCQwIiwieCQxIiwibmFtZSIsInBwIiwidG9fc3RyaW5nJDAiLCJwcCQwIiwiZm10IiwieHMiLCJ2YWx1ZSIsImtleSIsInhzJDAiLCJzaG93IiwiZXF1YWwiLCJiJDAiLCJhJDAiLCJ5cyIsInJlc3VsdCIsInlzJDAiLCJjb21wYXJlX2tleXMiLCJrZXkkMCIsInhzJDEiLCJ5cyQxIiwicmVzdWx0JDAiLCJ2YWx1ZSQwIiwiYiQxIiwiYSQxIiwiYiQyIiwiYSQyIiwiYiQzIiwiYSQzIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwid3JpdGVfaW50bGl0Iiwid3JpdGVfZmxvYXRsaXQiLCJ3cml0ZV9zdHJpbmdsaXQiLCJ3cml0ZV90dXBsZSIsIm8iLCJ3cml0ZV92YXJpYW50IiwicyQxIiwicyQyIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ2JDAiLCJsJDIiLCJ4JDMiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwieCQ0IiwicmVwcmVzZW50YXRpb24kMCIsInR1cCIsImIkNCIsImEkNCIsIm5hbWUkMCIsInRvX2Jhc2ljIiwieCQ2IiwieCQ1IiwiYiQ1IiwiYSQ1IiwicyQzIiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicyQ0IiwieW9qc29uX29mX3VuaXQiLCJ5b2pzb25fb2ZfYm9vbCIsImIiLCJ5b2pzb25fb2Zfc3RyaW5nIiwic3RyIiwieW9qc29uX29mX2J5dGVzIiwiYnl0ZXMiLCJ5b2pzb25fb2ZfY2hhciIsImMiLCJ5b2pzb25fb2ZfaW50IiwibiIsInlvanNvbl9vZl9mbG9hdCIsInlvanNvbl9vZl9pbnQzMiIsInlvanNvbl9vZl9pbnQ2NCIsInlvanNvbl9vZl9uYXRpdmVpbnQiLCJ5b2pzb25fb2ZfcmVmIiwieW9qc29uX29mX2EiLCJyZiIsInlvanNvbl9vZl9sYXp5X3QiLCJsdiIsInlvanNvbl9vZl9vcHRpb24iLCJ4IiwieW9qc29uX29mX3BhaXIiLCJ5b2pzb25fb2ZfYiIsImEiLCJ5b2pzb25fb2ZfdHJpcGxlIiwieW9qc29uX29mX2MiLCJ5b2pzb25fb2ZfbGlzdCIsImxzdCIsInlvanNvbl9vZl9hcnJheSIsImFyIiwibHN0X3JlZiIsImkiLCJ5b2pzb25fb2ZfaGFzaHRibCIsInlvanNvbl9vZl9rZXkiLCJ5b2pzb25fb2ZfdmFsIiwiaHRibCIsImNvbGwiLCJrIiwidiIsImFjYyIsInlvanNvbl9vZl9vcGFxdWUiLCJ5b2pzb25fb2ZfZnVuIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3lvanNvbl9lcnJvcl9leG4iLCJleGMiLCJ5b2pzb24iLCJvZl95b2pzb25fZXJyb3IiLCJ3aGF0IiwidW5pdF9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInN0cmluZ19vZl95b2pzb24iLCJieXRlc19vZl95b2pzb24iLCJjaGFyX29mX3lvanNvbiIsImludF9vZl95b2pzb24iLCJmbG9hdF9vZl95b2pzb24iLCJpbnQzMl9vZl95b2pzb24iLCJpbnQ2NF9vZl95b2pzb24iLCJuYXRpdmVpbnRfb2ZfeW9qc29uIiwicmVmX29mX3lvanNvbiIsImFfb2ZfeW9qc29uIiwibGF6eV90X29mX3lvanNvbiIsIm9wdGlvbl9vZl95b2pzb24iLCJwYWlyX29mX3lvanNvbiIsImJfb2ZfeW9qc29uIiwiYl95b2pzb24iLCJhX3lvanNvbiIsInRyaXBsZV9vZl95b2pzb24iLCJjX29mX3lvanNvbiIsImNfeW9qc29uIiwibGlzdF9vZl95b2pzb24iLCJyZXZfbHN0IiwiYXJyYXlfb2ZfeW9qc29uIiwidCIsImgiLCJsZW4iLCJyZXMiLCJ0JDAiLCJoJDAiLCJoYXNodGJsX29mX3lvanNvbiIsImtleV9vZl95b2pzb24iLCJ2YWxfb2ZfeW9qc29uIiwiYWN0Iiwidl95b2pzb24iLCJrX3lvanNvbiIsIm9wYXF1ZV9vZl95b2pzb24iLCJmdW5fb2ZfeW9qc29uIiwic3ByaW50ZiIsInR1cGxlX29mX3NpemVfbl9leHBlY3RlZCIsImxvYyIsInN0YWdfbm9fYXJncyIsInN0YWdfaW5jb3JyZWN0X25fYXJncyIsInRhZyIsIm1zZyIsInN0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSIsInVuZXhwZWN0ZWRfc3RhZyIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsInJlc3QiLCJmaWVsZCIsInJlc3QkMCIsInJlY29yZF91bmRlZmluZWRfZWxlbWVudHMiLCJ1bmRlZmluZWQkMCIsInJlY29yZF9saXN0X2luc3RlYWRfYXRvbSIsInJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIiwibm9fdmFyaWFudF9tYXRjaCIsIm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQiLCJwdGFnX25vX2FyZ3MiLCJwdGFnX2luY29ycmVjdF9uX2FyZ3MiLCJjbnN0ciIsInB0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV90eXBlIiwic3ltYm9sIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwiZW1wdHkiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJkdW1teSIsIm1rIiwiY2F0IiwiZGVzYyIsImNyZWF0ZSIsImVxdWFsJDAiLCJoYXNoJDEiLCJjcmVhdGVfd29ya2luZ19hcmVhIiwiaW5kZXhfY291bnQiLCJ3IiwibWFya191c2VkX2luZGljZXMiLCJ0YmwiLCJmcmVlX2luZGV4IiwidGJsX3JlZiIsImxlbiIsImlkeCQwIiwicmVtb3ZlX21hdGNoZXMiLCJzcGxpdF9hdF9tYXRjaCIsInJlbW92ZV9kdXBsaWNhdGVzIiwicHJldiIsInByZXYkMCIsInByZXYkMSIsInByZXYkMiIsInIkMiIsInIkMyIsIngkMSIsInByZXYkMyIsInIkNCIsInNldF9pZHgiLCJmaWx0ZXJfbWFya3MiLCJkZWx0YV8xJDAiLCJuZXh0X2NhdCIsInByZXZfY2F0IiwiZGVsdGFfMiQwIiwiZGVsdGFfMSIsImRlbHRhX3NlcSQwIiwieSQxIiwia2luZCQwIiwicmVwX2tpbmQiLCJ5JDIiLCJtYXJrcyQxIiwieSQzIiwibWFya3MkMiIsImNhdCQwIiwibWFya3MkMyIsImRlbHRhXzIiLCJkZWx0YV9zZXEiLCJkZWx0YV80IiwicmVtJDAiLCJkZWx0YSIsImNoYXIkMCIsInN0IiwiZXhwciQwIiwicmVkX3RyIiwidHIyIiwic3QyIiwiczIiLCJ0cjEiLCJzdDEiLCJzMSIsInByZXBlbmRfZGVyaXYiLCJyZXN0cmljdCIsInMkMSIsInByZXBlbmRfbWFya3NfZXhwcl9sc3QiLCJtJDEiLCJkZXJpdl8xJDAiLCJhbGxfY2hhcnMiLCJjYXRlZ29yaWVzIiwicmVtJDEiLCJkZXJpdl8yJDAiLCJkZXJpdl8xIiwiZGVyaXZfc2VxIiwieiQwIiwicmVtJDIiLCJjYXQkMSIsImRlcml2XzIiLCJ4bCIsInokMSIsImRlcml2XzQiLCJkZXJpdiIsImRlciIsImV4cHIkMSIsInN0YXR1cyIsIm1hIiwic3QkMCIsIm1ha2UiLCJmbGF0dGVuIiwiY20iLCJjb2xvcl9yZXByIiwic3BsaXQiLCJkdW1teV9vZmZzZXQiLCJtMSIsInAxIiwicDIiLCJnZXQiLCJzdGFydCIsInN1YnMiLCJzdG9wIiwidGVzdCIsImdldF9vcHQiLCJhbGxfb2Zmc2V0IiwiYWxsIiwib2Zmc2V0cyIsInN0cnMiLCJtYXRjaGVzIiwicHBfbWF0Y2giLCJzdHIiLCJuYl9ncm91cHMiLCJuIiwibiQwIiwidiQwIiwidiQxIiwibiQxIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJicmVhayQwIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvdyIsImVvdyIsIndvcmQiLCJib3MiLCJlb3MiLCJ3aG9sZV9zdHJpbmciLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwibWF0Y2hfYmFja3NsYXNoZXMiLCJwZXJpb2QiLCJleHBhbmRfYnJhY2VzIiwiZG91YmxlX2FzdGVyaXNrIiwidG9fcmUiLCJyZWFkIiwicGllY2VzIiwiZm91bmQiLCJwaWVjZXMkMCIsInN0YXRlJDgiLCJzdGF0ZSQ5IiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsImV4cGxpY2l0X3NsYXNoJDAiLCJub3RfZW1wdHkiLCJtYXliZV9lbXB0eSIsIm5vdF9lbXB0eSQxIiwiZW5jbG9zZWRfc2V0JDAiLCJzdGF0ZSQyIiwic3RhdGUkNCIsIm5vdF9lbXB0eSQwIiwic3RhdGUkNSIsInN0YXRlJDYiLCJlbmNsb3NlZCQwIiwic3RhdGUkNyIsImVuY2xvc2VkJDEiLCJzdGF0ZSQzIiwic3RhdGUkMSIsImVuY2xvc2VkJDIiLCJlbmNsb3NlZCQzIiwiZXhwbCIsImlubmVyIiwiYWNjIiwiYmVnJDAiLCJhY2MkMCIsImJlZyQxIiwiYWNjJDEiLCJpJDMiLCJiZWckMiIsImkkNCIsImkkMiIsImdsb2IkMCIsImdsb2J4IiwiZ2xvYngkMCIsInBvc2l4X2NsYXNzX3N0cmluZ3MiLCJvcHRzIiwidW5ncmVlZHkiLCJkb3RhbGwiLCJkb2xsYXJfZW5kb25seSIsIm11bHRpbGluZSIsImFjY2VwdF9zIiwidW5nZXQiLCJncmVlZHlfbW9kIiwiZ3IiLCJnciQwIiwiYXRvbSIsImludGVnZXIiLCJoZXhkaWdpdCIsImNvZGUiLCJzJDMiLCJzJDQiLCJjbGFzcyQwIiwicG9zaXhfY2xhc3MiLCJwYXQiLCJmbGFncyIsImV4dHJhY3QiLCJyZXgiLCJnZXRfc3Vic3RyaW5nIiwiZ2V0X25hbWVkX3N1YnN0cmluZyIsImdldF9zdWJzdHJpbmdfb2ZzIiwicG1hdGNoIiwic3Vic3RpdHV0ZSIsInN1YnN0Iiwic3MiLCJmaW4iLCJtYXgiLCJyZXN1bHRzIiwiZGVsaW0iLCJuZXdsaW5lIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInNpbmdsZXRvbiIsInBvcyIsIngiLCJ1bmlvbiIsImYiLCJ0MSIsInQyIiwieHMyIiwieDIiLCJwMiIsInhzMSIsIngxIiwicDEiLCJtYXAiLCJyZXN0IiwibWFwaSIsIm1hcGsiLCJmb2xkX2xlZnQiLCJ6JDAiLCJlcnJvcl9zb3VyY2VfMDAyIiwiemVybyIsInRfb2Zfc2V4cCIsInhfMDAzIiwiY29sIiwicm93Iiwic2V4cF9vZl90IiwiY29sXzAwNyIsInJvd18wMDUiLCJhcmdfMDA4IiwiYm5kc18wMDQiLCJhcmdfMDA2IiwiYm5kc18wMDQkMCIsImNvbXBhcmUiLCJwb3MxIiwicG9zMiIsImVycm9yX3NvdXJjZV8wMDQiLCJvZl9hbm5vdF8wMDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInNleHBfYXJnc18wMTMiLCJhcmcxXzAxNSIsImFyZzBfMDE0IiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInNleHBfYXJnc18wMDgiLCJhcmcwXzAwOSIsInJlczBfMDEwIiwib2ZfYW5ub3RfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwiYWxpZ24iLCJsIiwiYW5ub3QiLCJyZW1vdmVfYW5ub3RzIiwibGF5b3V0IiwibGF5b3V0JDAiLCJzdHJpbmciLCJsMiIsImwxIiwibGF5b3V0JDEiLCJta19vZl9sYXlvdXQiLCJ0ZXh0IiwiY29sdW1uIiwiZ28iLCJpbmRlbnQiLCJpbmRlbnQkMCIsImltcDEiLCJpbXAyIiwiaW5kZW50JDEiLCJzdHJpbmdfb2ZfbGF5b3V0IiwicmVjb3JkIiwiczEiLCJzMiIsImltcCIsInN0cmluZ3Nfb2ZfbGF5b3V0IiwicmVzdDIiLCJmaXJzdF9zdHJpbmdfMiIsImZpcnN0X2luZGVudF8yIiwicmVzdDEiLCJsYXN0X3N0cmluZ18xIiwibGFzdF9pbmRlbnRfMSIsInNwbGl0X2ZpcnN0IiwieHMiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfbGFzdF9vcHQiLCJ5cyIsInkiLCJzcGxpdF9sYXN0IiwiciIsImJveCIsImVycm9yX3NvdXJjZV8wMTEiLCJlcnJvcl9zb3VyY2VfMDE2IiwiYm94X29mX3NleHAiLCJ3aWR0aCIsImhlaWdodCIsInNleHBfb2ZfYm94Iiwid2lkdGhfMDA3IiwiaGVpZ2h0XzAwNSIsIm9mX2Fubm90XzAwOSIsInhfMDEyIiwidF9vZl9zZXhwJDAiLCJtZXRyaWNzIiwib2ZfYW5ub3RfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5IiwicmVzMF8wMjciLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMV8wMzkiLCJyZXMwXzA0MCIsInJlczFfMDQxIiwic2V4cF9hcmdzXzAzMCIsImFyZzFfMDMyIiwiYXJnMF8wMzEiLCJyZXMxXzAzNCIsIm9mX2Fubm90XzA0MyIsIm1ldHJpY3NfMDQ3IiwibGF5b3V0XzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImFyZ18wNDYiLCJzZXhwX29mX3QkMCIsImJuZHNfMDQ0JDAiLCJvZl9hbm5vdF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwiYXJnMV8wNTkiLCJhcmcwXzA1OCIsInJlczBfMDYwIiwicmVzMV8wNjEiLCJtIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsIm1pZCIsInRhYmxlIiwibWsiLCJtaWRfYm94IiwibCQwIiwiYm91bmRpbmdfYm94IiwiYnciLCJiaCIsImwkMSIsIm0kMiIsIm92ZXJmbG93X2Nvc3QiLCJoZWlnaHRfY29zdCIsIm1rX2hlaWdodCIsIm1rX292ZXJmbG93IiwiaW5mIiwiYWRkIiwiYzEiLCJjMiIsImVxIiwibHQiLCJsZXEiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAwOCIsImVycm9yX3NvdXJjZV8wNjgiLCJlcnJvcl9zb3VyY2VfMDczIiwiaGFzaCIsImVxdWFsIiwidzIiLCJ3MSIsIm9mX2Fubm90XzA2NiIsInhfMDY5IiwiZG9jIiwibWVtIiwib2ZfYW5ub3RfMDcwIiwic2V4cF8wNzUiLCJ0YWdfMDc2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJzZXhwX2FyZ3NfMDgyIiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDMiLCJhcmcwXzEwMiIsInJlczBfMTA0IiwicmVzMV8xMDUiLCJzZXhwX2FyZ3NfMDc3IiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsIm9mX2Fubm90XzEwNyIsImRvY18xMTEiLCJtZW1fMTA5IiwiYXJnXzExMiIsImJuZHNfMTA4IiwiYXJnXzExMCIsImJuZHNfMTA4JDAiLCJvZl9hbm5vdF8xMTMiLCJhcmcwXzExNCIsInJlczBfMTE1IiwiYXJnMV8xMTciLCJhcmcwXzExNiIsInJlczBfMTE4IiwicmVzMV8xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwiYXJnMV8xMjMiLCJhcmcwXzEyMiIsInJlczBfMTI0IiwicmVzMV8xMjUiLCJhcmcxXzEyNyIsImFyZzBfMTI2IiwicmVzMF8xMjgiLCJyZXMxXzEyOSIsInRfb2ZfdCIsInQiLCJmYWlsIiwiZW1wdHkiLCJzcGFjZSIsImluZGVudF9hbmRfYWxpZ24iLCJoY2F0IiwiaGNhdHMiLCJkb2NzIiwiaHNlcCIsImhzZXBzIiwidnNlcCIsInZzZXBzIiwiY2hvaWNlIiwiY2hvaWNlcyIsIm1hcF90IiwiZCIsIm1hcF9hbm5vdCIsImQyIiwiZDEiLCJkJDAiLCJkJDEiLCJkMiQwIiwiZDEkMCIsImFsbCIsImxzMSIsImxzMiIsIm1fdW5pb24iLCJjb3N0X3VuaW9uIiwiY29zdDIiLCJjb3N0MSIsImxheW91dF9vZl9kb2MiLCJoIiwicG9zJDAiLCJrZXkiLCJ2YWx1ZSIsInZhbHVlJDAiLCJjb3N0Iiwib3ZlcmZsb3ciLCJ6IiwibGF5b3V0MSIsImxheW91dHMiLCJsYXlvdXQyIiwicCIsImMiLCJsMSQwIiwibGF5b3V0X29mX2RvYyQwIiwieF9jb3N0IiwieF9wb3MiLCJzZXhwX2FyZ3NfMDE4IiwiYXJnMF8wMTkiLCJyZXMwXzAyMCIsInJlczBfMDE1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwib2ZfYW5ub3RfMDI5IiwiYXJnMF8wMzAiLCJyZXMwXzAzMSIsInJlczBfMDM1IiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJib3gxJDAiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhcHBlbmRfbGFzdCQwIiwiYm94MSQxIiwiYW5ub3QkMCIsImJveGVzIiwiYm94ZXMxIiwibGVhZGluZyQwIiwiYm94ZXMyIiwiZXJyb3Jfc291cmNlXzAwMiIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJ4XzAwMyIsInBlcmNlbnRhZ2UiLCJyZXN1bHRzIiwic2V4cF9vZl9zeW50YXhfcmVzdWx0IiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsImFyZ18wMDgiLCJibmRzXzAwNCIsImFyZ18wMDYiLCJibmRzXzAwNCQwIiwic3ludGF4X3Jlc3VsdF9vZl95b2pzb24iLCJ5b2pzb24iLCJmaWVsZF95b2pzb25zIiwicmVzdWx0c19maWVsZCIsInBlcmNlbnRhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwicGVyY2VudGFnZV92YWx1ZSIsInJlc3VsdHNfdmFsdWUiLCJ5b2pzb25fb2Zfc3ludGF4X3Jlc3VsdCIsInZfcGVyY2VudGFnZSIsInZfcmVzdWx0cyIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImZpbmRfdmFyX3VwYXQiLCJuYW1lIiwidXBhdCIsInVwYXQkMCIsInVwYXQkMSIsInVwMSIsInVwYXQkMiIsInVwYXQkMyIsInVwMSQwIiwidXBhdCQ0IiwibCIsImFjYyIsInVwIiwiZmluZF9pbl9sZXQiLCJkZWYiLCJkZWYkMCIsInBsIiwidWwiLCJ1ZSIsImRlZiQyIiwiZGVmJDEiLCJmaW5kX2ZuIiwidWV4cCIsInVleHAkMCIsImwkMCIsImJvZHkkMCIsImwkMSIsImFyZ3MiLCJmbiIsInUiLCJ1ZXhwJDMiLCJ1MiIsInUxJDAiLCJsJDIiLCJ1ZXhwJDEiLCJ1ZXhwJDIiLCJ1MSIsInVsJDAiLCJ1MSQxIiwiYm9keSIsImwkMyIsInZhcl9tZW50aW9uX3VwYXQiLCJ2YXJfbWVudGlvbiIsInAiLCJ1cyIsImciLCJwZSIsImUiLCJ2YXJfYXBwbGllZCIsIngkMSIsInVleHAkNCIsInVleHAkNSIsIngkMiIsInVleHAkNiIsInVleHAkNyIsInUxJDIiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwiYXJncyQwIiwidTIkMCIsInUyJDEiLCJpc190YWlsX3JlY3Vyc2l2ZSIsImNoZWNrIiwicHJlZGljYXRlcyIsInByZWQiLCJsZW5ndGgiLCJwYXNzaW5nIiwicmVzIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsInNleHBfYXJnc18wMzAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wMzMiLCJyZXMwXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAxMyIsImVycm9yX3NvdXJjZV8wMjgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMzgiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNjAiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wOTQiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8xMDEiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xMjAiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xMzMiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8xNDgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwid3JvbmdfaW1wbF9vZl9zZXhwIiwib2ZfY29kZV8wMDEiLCJ4XzAwNCIsImhpbnQiLCJpbXBsIiwic2V4cF9vZl93cm9uZ19pbXBsIiwib2ZfY29kZV8wMDUiLCJoaW50XzAwOSIsImltcGxfMDA3IiwiYXJnXzAxMCIsImJuZHNfMDA2IiwiYm5kc18wMDYkMCIsIndyb25nX2ltcGxfb2ZfeW9qc29uIiwib2ZfY29kZSIsImltcGxfZmllbGQiLCJoaW50X2ZpZWxkIiwiaGludF92YWx1ZSIsImltcGxfdmFsdWUiLCJ5b2pzb25fb2Zfd3JvbmdfaW1wbCIsInZfaGludCIsInZfaW1wbCIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMTEiLCJ4XzAxNCIsImhpbnRzIiwidGVzdHMiLCJzZXhwX29mX2hpZGRlbl90ZXN0cyIsIm9mX2NvZGVfMDE1IiwiaGludHNfMDE5IiwidGVzdHNfMDE3IiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJoaWRkZW5fdGVzdHNfb2ZfeW9qc29uIiwidGVzdHNfZmllbGQiLCJoaW50c19maWVsZCIsImhpbnRzX3ZhbHVlIiwidGVzdHNfdmFsdWUiLCJ5b2pzb25fb2ZfaGlkZGVuX3Rlc3RzIiwidl9oaW50cyIsInZfdGVzdHMiLCJoaW50X29mX3NleHAiLCJzZXhwX29mX2hpbnQiLCJoaW50X29mX3lvanNvbiIsInlvanNvbl9vZl9oaW50Iiwic3ludGF4X3Rlc3Rfb2Zfc2V4cCIsInNleHBfMDI3IiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJzZXhwX29mX3N5bnRheF90ZXN0IiwiYXJnMV8wMzAiLCJhcmcwXzAyOSIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzeW50YXhfdGVzdF9vZl95b2pzb24iLCJ2MSIsInYxJDAiLCJ5b2pzb25fb2Zfc3ludGF4X3Rlc3QiLCJzeW50YXhfdGVzdHNfb2Zfc2V4cCIsInhfMDM0Iiwic2V4cF9vZl9zeW50YXhfdGVzdHMiLCJ4XzAzNSIsInN5bnRheF90ZXN0c19vZl95b2pzb24iLCJ0IiwieW9qc29uX29mX3N5bnRheF90ZXN0cyIsInYiLCJ5b3VyX3Rlc3RzX29mX3NleHAiLCJvZl9jb2RlXzAzNiIsInhfMDM5IiwicHJvdmlkZWQiLCJyZXF1aXJlZCIsInNleHBfb2ZfeW91cl90ZXN0cyIsIm9mX2NvZGVfMDQwIiwicHJvdmlkZWRfMDQ2IiwicmVxdWlyZWRfMDQ0IiwidGVzdHNfMDQyIiwiYXJnXzA0NyIsImJuZHNfMDQxIiwiYXJnXzA0NSIsImJuZHNfMDQxJDAiLCJhcmdfMDQzIiwiYm5kc18wNDEkMSIsInlvdXJfdGVzdHNfb2ZfeW9qc29uIiwicmVxdWlyZWRfZmllbGQiLCJwcm92aWRlZF9maWVsZCIsImZ2YWx1ZSQxIiwicHJvdmlkZWRfdmFsdWUiLCJyZXF1aXJlZF92YWx1ZSIsInlvanNvbl9vZl95b3VyX3Rlc3RzIiwidl9wcm92aWRlZCIsInZfcmVxdWlyZWQiLCJhcmckMSIsImJuZHMkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwieF8wNTAiLCJpbXBsX2dyYWRpbmciLCJtdXRhdGlvbl90ZXN0aW5nIiwidGVzdF92YWxpZGF0aW9uIiwic2V4cF9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJpbXBsX2dyYWRpbmdfMDU2IiwibXV0YXRpb25fdGVzdGluZ18wNTQiLCJ0ZXN0X3ZhbGlkYXRpb25fMDUyIiwiYXJnXzA1NyIsImJuZHNfMDUxIiwiYXJnXzA1NSIsImJuZHNfMDUxJDAiLCJhcmdfMDUzIiwiYm5kc18wNTEkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl95b2pzb24iLCJ0ZXN0X3ZhbGlkYXRpb25fZmllbGQiLCJtdXRhdGlvbl90ZXN0aW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX3ZhbHVlIiwibXV0YXRpb25fdGVzdGluZ192YWx1ZSIsInRlc3RfdmFsaWRhdGlvbl92YWx1ZSIsInlvanNvbl9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X2ltcGxfZ3JhZGluZyIsInZfbXV0YXRpb25fdGVzdGluZyIsInZfdGVzdF92YWxpZGF0aW9uIiwidmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uIiwicF9vZl9zZXhwIiwib2ZfY29kZV8wNTgiLCJ4XzA2MSIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJzZXhwX29mX3AiLCJvZl9jb2RlXzA2MiIsInN5bnRheF90ZXN0c18wODYiLCJoaWRkZW5fdGVzdHNfMDg0IiwiaGlkZGVuX2J1Z3NfMDgyIiwieW91cl9pbXBsXzA4MCIsInlvdXJfdGVzdHNfMDc4IiwiY29ycmVjdF9pbXBsXzA3NiIsInByZWx1ZGVfMDc0IiwicG9pbnRfZGlzdHJpYnV0aW9uXzA3MiIsInByb21wdF8wNzAiLCJtb2R1bGVfbmFtZV8wNjgiLCJ2ZXJzaW9uXzA2NiIsInRpdGxlXzA2NCIsImFyZ18wODciLCJibmRzXzA2MyIsImFyZ18wODUiLCJibmRzXzA2MyQwIiwiYXJnXzA4MyIsImJuZHNfMDYzJDEiLCJhcmdfMDgxIiwiYm5kc18wNjMkMiIsImFyZ18wNzkiLCJibmRzXzA2MyQzIiwiYXJnXzA3NyIsImJuZHNfMDYzJDQiLCJhcmdfMDc1IiwiYm5kc18wNjMkNSIsImFyZ18wNzMiLCJibmRzXzA2MyQ2IiwiYXJnXzA3MSIsImJuZHNfMDYzJDciLCJhcmdfMDY5IiwiYm5kc18wNjMkOCIsImFyZ18wNjciLCJibmRzXzA2MyQ5IiwiYXJnXzA2NSIsImJuZHNfMDYzJDEwIiwicF9vZl95b2pzb24iLCJ0aXRsZV9maWVsZCIsInZlcnNpb25fZmllbGQiLCJtb2R1bGVfbmFtZV9maWVsZCIsInByb21wdF9maWVsZCIsInBvaW50X2Rpc3RyaWJ1dGlvbl9maWVsZCIsInByZWx1ZGVfZmllbGQiLCJjb3JyZWN0X2ltcGxfZmllbGQiLCJ5b3VyX3Rlc3RzX2ZpZWxkIiwieW91cl9pbXBsX2ZpZWxkIiwiaGlkZGVuX2J1Z3NfZmllbGQiLCJoaWRkZW5fdGVzdHNfZmllbGQiLCJzeW50YXhfdGVzdHNfZmllbGQiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJmdmFsdWUkOCIsImZ2YWx1ZSQ5IiwiZnZhbHVlJDEwIiwic3ludGF4X3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX2J1Z3NfdmFsdWUiLCJ5b3VyX2ltcGxfdmFsdWUiLCJ5b3VyX3Rlc3RzX3ZhbHVlIiwiY29ycmVjdF9pbXBsX3ZhbHVlIiwicHJlbHVkZV92YWx1ZSIsInBvaW50X2Rpc3RyaWJ1dGlvbl92YWx1ZSIsInByb21wdF92YWx1ZSIsIm1vZHVsZV9uYW1lX3ZhbHVlIiwidmVyc2lvbl92YWx1ZSIsInRpdGxlX3ZhbHVlIiwieW9qc29uX29mX3AiLCJ2X3N5bnRheF90ZXN0cyIsInZfaGlkZGVuX3Rlc3RzIiwidl9oaWRkZW5fYnVncyIsInZfeW91cl9pbXBsIiwidl95b3VyX3Rlc3RzIiwidl9jb3JyZWN0X2ltcGwiLCJ2X3ByZWx1ZGUiLCJ2X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInZfcHJvbXB0Iiwidl9tb2R1bGVfbmFtZSIsInZfdmVyc2lvbiIsInZfdGl0bGUiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImFyZyQ5IiwiYm5kcyQ5IiwiYXJnJDEwIiwiYm5kcyQxMCIsImtleV9vZl9zZXhwIiwic2V4cF8wOTMiLCJhcmcxXzA5MCIsImFyZzBfMDg5IiwicmVzMF8wOTEiLCJyZXMxXzA5MiIsInNleHBfb2Zfa2V5IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBvc19vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX29mX3BvcyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJwb3Nfb2ZfeW9qc29uIiwieW9qc29uX29mX3BvcyIsInNwZWNfb2Zfc2V4cCIsInhfMTExIiwic2V4cF9vZl9zcGVjIiwieF8xMTIiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwidHJhbnNpdGlvbmFyeV9zcGVjX29mX3NleHAiLCJ4XzExNCIsInNleHBfb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwieF8xMTUiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2ZfeW9qc29uIiwieW9qc29uX29mX3RyYW5zaXRpb25hcnlfc3BlYyIsIm1hcCIsImYiLCJ3cm9uZ19pbXBsIiwiZWRzX29mX3NleHAiLCJ4XzExNyIsInNleHBfb2ZfZWRzIiwieF8xMTgiLCJlZHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2VkcyIsInN0YXRlX29mX3NleHAiLCJ4XzEyMSIsImVkcyIsInBvcyIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMTI1IiwicG9zXzEyMyIsImFyZ18xMjYiLCJibmRzXzEyMiIsImFyZ18xMjQiLCJibmRzXzEyMiQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImExIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwic2V4cF8xMzgiLCJhcmcxXzEzNSIsImFyZzBfMTM0IiwicmVzMF8xMzYiLCJyZXMxXzEzNyIsInNleHBfMTMyIiwiYXJnMV8xMjkiLCJhcmcwXzEyOCIsInJlczBfMTMwIiwicmVzMV8xMzEiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJhcmcxXzE0NCIsImFyZzBfMTQzIiwicmVzMF8xNDUiLCJyZXMxXzE0NiIsImFyZzFfMTQwIiwiYXJnMF8xMzkiLCJyZXMwXzE0MSIsInJlczFfMTQyIiwicGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImVkaXRvcl9vZl9zdGF0ZSIsImkiLCJwdXRfZWRpdG9yIiwic3RhdGUiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJpZHhfb2ZfcG9zIiwicG9zX29mX2lkeCIsImlkeCIsInN3aXRjaF9lZGl0b3IiLCJpbnN0cnVjdG9yX21vZGUiLCJleGVyY2lzZSIsInppcHBlcl9vZl9jb2RlIiwiY29kZSIsInppcHBlciIsInRyYW5zaXRpb24iLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInlvdXJfdGVzdHMkMCIsInlvdXJfaW1wbCQwIiwiaGlkZGVuX2J1Z3MkMCIsImltcGwkMCIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZHNfb2Zfc3BlYyIsInNldHRpbmdzIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwidGVybV9vZiIsInN0aXRjaDMiLCJlZDEiLCJlZDIiLCJlZDMiLCJzdGl0Y2hfdGVybSIsImluc3RydWN0b3IiLCJ5b3VyX2ltcGxfdGVybSIsInByZWx1ZGVfdGVybSIsInVzZXJfaW1wbF90ZXJtIiwidGVzdF92YWxpZGF0aW9uX3Rlcm0iLCJ1c2VyX3Rlc3RzX3Rlcm0iLCJoaWRkZW5fdGVzdHNfdGVybSIsInN0aXRjaF90ZXJtJDAiLCJzdGl0Y2hfc3RhdGljIiwibWsiLCJpbmZvX21hcCIsInN0aXRjaF9zdGF0aWMkMCIsImhpZGRlbl9idWdzX2tleSIsImtleV9mb3Jfc3RhdGljcyIsInNwbGljZWRfZWxhYnMiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwiZWxhYiIsInMiLCJoaWRkZW5fYnVnIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGF0aWNzIiwic3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzIiwic3RpdGNoX2R5bmFtaWMiLCJyZXN1bHRfb2YiLCJyZXN1bHRzJDAiLCJ0ZXN0X3ZhbGlkYXRpb24kMCIsInVzZXJfaW1wbCQwIiwidXNlcl90ZXN0cyQwIiwiaW5zdHJ1Y3RvciQwIiwic3RpdGNoX2R5bmFtaWMkMCIsImVkaXRvcl9wcCIsInNlcmlhbGl6YXRpb24iLCJleHBvcnRfbW9kdWxlIiwicmVjb3JkIiwiZGF0YSIsInRyYW5zaXRpb25hcnlfZWRpdG9yX3BwIiwiZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlIiwiZXhwb3J0X2dyYWRpbmdfbW9kdWxlIiwiaGVhZGVyIiwiYmxhbmtfc3BlYyIsInJlcXVpcmVkX3Rlc3RzIiwicHJvdmlkZWRfdGVzdHMiLCJudW1fd3JvbmdfaW1wbHMiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInhfMTU0Iiwic2V4cF8xNTMiLCJhcmcxXzE1MCIsImFyZzBfMTQ5IiwicmVzMF8xNTEiLCJyZXMxXzE1MiIsImV4ZXJjaXNlX2RhdGEiLCJjdXJfZXhlcmNpc2UiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMTU4IiwiY3VyX2V4ZXJjaXNlXzE1NiIsImFyZ18xNTkiLCJhcmcxXzE2MSIsImFyZzBfMTYwIiwicmVzMF8xNjIiLCJyZXMxXzE2MyIsImJuZHNfMTU1IiwiYXJnXzE1NyIsImJuZHNfMTU1JDAiLCJleGVyY2lzZV9leHBvcnRfb2ZfeW9qc29uIiwiY3VyX2V4ZXJjaXNlX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfdmFsdWUiLCJjdXJfZXhlcmNpc2VfdmFsdWUiLCJ5b2pzb25fb2ZfZXhlcmNpc2VfZXhwb3J0Iiwidl9leGVyY2lzZV9kYXRhIiwidl9jdXJfZXhlcmNpc2UiLCJzZXJpYWxpemVfZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJudW1fcGFzc2luZyIsInRlc3Rfc3VtbWFyeV9zdHIiLCJoaWRkZW5fYnVnX3N0YXR1cyIsInRlc3RfdmFsaWRhdGlvbl9kYXRhIiwiaGlkZGVuX2J1Z19kYXRhIiwiaGlkZGVuX2J1Z19kYXRhJDAiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSQwIiwidmFsaWRhdGlvbl90ZXN0X21hcCIsImhpZGRlbl9idWdfdGVzdF9tYXAiLCJmb3VuZCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwibWskMCIsImhpZGRlbl9idWdzX3N0YXRlIiwicGVyY2VudGFnZSQwIiwibnVtX3Bhc3NlZCIsInN1bW1hcnlfc3RyIiwidG90YWwiLCJtayQxIiwiaCIsInN5bnRheF9yZXN1bHRzIiwiciIsIm1rJDIiLCJ0ZXN0X3Jlc3VsdHMkMCIsInN0YXR1c2VzIiwiaGludGVkX3Jlc3VsdHMiLCJwZXJjZW50YWdlJDEiLCJzeW50YXhfcmVwb3J0IiwidGVzdF9zdW1tYXJ5X3N0ciQwIiwibWskMyIsInN0aXRjaGVkX2R5bmFtaWNzIiwib3ZlcmFsbF9zY29yZSIsImltcGxfZ3JhZGluZ19yZXBvcnQiLCJtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCIsInRlc3RfdmFsaWRhdGlvbl9yZXBvcnQiLCJ0dl9tYXgiLCJ0dl9wb2ludHMiLCJtdF9tYXgiLCJtdF9wb2ludHMiLCJpZ19tYXgiLCJpZ19wb2ludHMiLCJ0b3RhbF9wb2ludHMiLCJvdXRwdXRfaGVhZGVyIiwiREVCVUciLCJPTURfREVCVUciLCJkZWJ1ZyIsIndhcm4iLCJtc2ciLCJ3ZSIsInRyYWNrZml4IiwicmFpc2UiLCJlIiwib2ZfbGlzdCIsImwiLCJyIiwiZnNwbGl0X3JldiIsImYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwicmV2IiwiaWRfb2Zfc3RyaW5nIiwiaWRzIiwicyIsIm4iLCJvdXQiLCJzdGFydGVkIiwiaSIsImMiLCJpJDIiLCJpJDAiLCJpJDEiLCJzJDAiLCJpJDQiLCJsYXN0X3RyYWlsaW5nIiwiaSQzIiwiaHRtbGVudGl0aWVzIiwibWQiLCJiIiwiaiQxIiwiaiIsImokMCIsImokNCIsImokMiIsImokMyIsIm1pbmltYWxpemVfYmxhbmtzIiwiZiQwIiwiZWF0IiwiZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMiLCJodG1sIiwiaHRtbCQwIiwiY3V0X29uX2NoYXJfZnJvbSIsInJlbW92ZV9wcmVmaXhfc3BhY2VzIiwiaHRtbCQyIiwicmVzIiwiYWZ0ZXJfZXEiLCJuYW1lIiwibmFtZSQwIiwiYWZ0ZXJfZXEkMCIsInJlc3QiLCJ2YWx1ZSIsIm5ld19zIiwiYSIsInJlcyQwIiwiaHRtbCQxIiwiZXh0cmFjdF9pbm5lcl9odG1sIiwicCIsImh0bWxfdm9pZF9lbGVtZW50cyIsInN5bWJvbCIsImwxIiwibDIiLCJzZWxmXzEiLCJ0aXRsZSIsInVybCIsImxuIiwibG9vc2VfY29tcGFyZSIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsImUxIiwidGwyJDAiLCJlMiQwIiwidGwxJDAiLCJlMSQwIiwidGwyIiwiZTIiLCJ0bDEiLCJ0bDIkMSIsImUyJDEiLCJ0bDEkMSIsImUxJDEiLCJ0bDEkMiIsImMxIiwidGwyJDIiLCJjMiIsImkkNSIsInRsMSQzIiwidGl0bGUxIiwidDEkMSIsImhyZWYxIiwidGwyJDMiLCJ0aXRsZTIiLCJ0MiQxIiwiaHJlZjIiLCJpJDYiLCJpJDciLCJpJDgiLCJ0bDIkNCIsImZhbGxiYWNrMiIsIngyIiwibmFtZTIiLCJyZWZfY29udGFpbmVyMiIsInRsMSQ0IiwiZmFsbGJhY2sxIiwieDEiLCJuYW1lMSIsInJlZl9jb250YWluZXIxIiwiZTEkMiIsInRsMiQ1IiwiZTIkMiIsInRsMSQ1IiwiaSQxMSIsImkkMTIiLCJpJDkiLCJjZmYiLCJpJDEwIiwibDEkMCIsImwyJDAiLCJ0bDIkNiIsImUyJDMiLCJ0bDEkNiIsImUxJDMiLCJpJDEzIiwic2VsZl8yIiwiZW1wdHlfZXh0ZW5zaW9uIiwibm9ybWFsaXNlX21kIiwibG9vcCIsInYiLCJ0bCQyIiwidiQwIiwibG9vcCQwIiwidGwkMyIsInYkMSIsInRsJDQiLCJ2JDIiLCJ0bCQ1IiwidiQzIiwidGwkNiIsInYkNCIsInRsJDciLCJ2JDUiLCJ0bCQxMCIsInRsJDkiLCJ0bCQ4IiwidGwkMTEiLCJ0bCQxMiIsInYkNiIsInRsJDEzIiwidiQ3IiwidGwkMTQiLCJ2JDgiLCJ0bCQxNSIsInYkOSIsInRsJDE2IiwidiQxMCIsInRsJDE3IiwidiQxMSIsInRsJDE4IiwidiQxMiIsImhyZWYiLCJ0bCQxOSIsInYkMTMiLCJzZWxmXzMiLCJ2aXNpdCIsImwkMSIsImwkMiIsImwkMyIsImwkNCIsImwkNSIsImwkNiIsImwkNyIsImwkOCIsImwkOSIsImwkMTAiLCJsJDExIiwibCQxMiIsImwkMTMiLCJsJDE0IiwibCQxNSIsImwkMTYiLCJsJDE3IiwibCQxOCIsImwkMTkiLCJ0bCQyMCIsImwkMjAiLCJ0bCQyMSIsImwkMjEiLCJ0bCQyMiIsImwkMjIiLCJ0bCQyMyIsImwkMjMiLCJ0bCQyNCIsImwkMjQiLCJ0bCQyNSIsImwkMjUiLCJ0bCQyNiIsImwkMjYiLCJ0bCQyNyIsImwkMjciLCJ0bCQyOCIsImwkMjgiLCJkZWZhdWx0X2xhbmd1YWdlIiwidGV4dF9vZl9tZCIsIm1kJDAiLCJ0IiwibWQkMSIsIm1kJDIiLCJjJDAiLCJib2R5IiwiYm9keSQwIiwidCQwIiwidCQxIiwicSIsImFsdCIsIml0ZW0iLCJkZWZhdWx0X2NvZGVfc3R5bGlzdCIsImxhbmciLCJjb2RlIiwiZmlsdGVyX3RleHRfb21kX3JldiIsInJlbW92ZV9saW5rcyIsImh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwib3ZlcnJpZGUiLCJwaW5kZW50IiwibmwyYnIiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJodG1sX29mX21kIiwibWQkMyIsIm1kJDQiLCJlJDIiLCJtZCQ1IiwiZSQzIiwicyQzIiwiaWgkMCIsImlkJDAiLCJtZCQ2IiwibWQkNyIsImUkNCIsIm1kJDgiLCJlJDUiLCJzJDQiLCJpaCQxIiwiaWQkMSIsIm1kJDkiLCJtZCQxMCIsImUkNiIsIm1kJDExIiwiZSQ3IiwicyQ1IiwiaWgkMiIsImlkJDIiLCJtZCQxMiIsIm1kJDEzIiwiZSQ4IiwibWQkMTQiLCJlJDkiLCJzJDYiLCJpaCQzIiwiaWQkMyIsIm1kJDE1IiwibWQkMTYiLCJlJDEwIiwibWQkMTciLCJlJDExIiwicyQ3IiwiaWgkNCIsImlkJDQiLCJtZCQxOCIsInMkOCIsInMkOSIsInMkMTAiLCJtZCQxOSIsInMkMTEiLCJtZCQyMCIsInMkMTIiLCJzJDE0IiwibmV3X2MiLCJsYW5nJDAiLCJzJDE1IiwibmV3X2MkMCIsInMkMTYiLCJzJDE3IiwicyQxOCIsImZhbGxiYWNrIiwidGV4dCIsInJjIiwicyQxOSIsInRpdGxlJDAiLCJocmVmJDAiLCJmYWxsYmFjayQwIiwicmMkMCIsInMkMjAiLCJ0aXRsZSQxIiwic3JjIiwidGFnbmFtZSIsImF0dHJzJDEiLCJhdHRycyQyIiwicyQyMiIsInN0cmluZ19vZl9hdHRycyIsImF0dHJzIiwiYXR0cnMkMCIsInMkMjEiLCJhdHRycyQzIiwidGFnbmFtZSQwIiwiYXR0cnMkNCIsInMkMjMiLCJzJDI0IiwicyQyNSIsInMkMjYiLCJzJDI3IiwicyQyOCIsInMkMjkiLCJzJDMwIiwidGl0bGUkMiIsInNyYyQwIiwiYWx0JDAiLCJzJDMxIiwieCIsInMkMzIiLCJzJDMzIiwicyQxMyIsImxpIiwiY3MiLCJoZWFkZXJzX29mX21kIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInN0cmluZ19vZl90YWdzdGF0dXMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsImFkZF90b2tlbl90b19ib2R5IiwidCQ2IiwiYWRkX3Rva2VuX3RvX2JvZHkkMCIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImZpbmRfc3RhcnQiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdGh1bmsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytibGFrZTIuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGVhcF9ibG9jay9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2R5bmFycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9yZWNvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9nbG9iYWxpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDJfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9wcHhfaW5saW5lX3Rlc3RfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbF9wYXRjaGVzL2pzX29mX29jYW1sX3BhdGNoZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZmlsZW5hbWVfYmFzZS9maWxlbmFtZV9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdl9tYXAvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZWFwX2Jsb2NrL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGVfbW9kdWxlX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2ludDYzYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS90aHVuay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9lYWdlcl9kZWZlcnJlZC9lYWdlcl9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZWFnZXJfZGVmZXJyZWQvZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2J1cy9idXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29yX25vdF9hdXRob3JpemVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfc2hhcGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX21ldGFkYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfbWFwL2luY3JfbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3B0bWFwL3B0bWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9jb2RlYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9sZXhlcl91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vYmFzaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vc2FmZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmluZy9ydW50aW1lL3BweF9kZXJpdmluZ19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtP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O09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BNkpFMnRHO09BQ0FDO09BRUFDO09BU0FDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BT0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSUFDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BVUFDO09BQ0FDO09BRUFDO09BT0FDO09BSUFDO09BSUFDO09BU0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSURDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRDFzRztPQVlBd1k7T0FDQUU7T0FPQTlYO09BQ0FFO09BQ0E2ckc7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7SSxVO0ksVTtJLFU7SSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSxNOzs7OztJO0ssSSxNOzs7Ozs7Ozs7Rzs7STs7OztJOzs7Szs7Ozs7Ozs7Ozs7O0ksaUIsc0I7SSxxQixzQjtJLHNCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7eUIsTzs7eUIsTzs7eUIsTzs7Ozs7O0ssTzs7STtJO0ksTztHOztJO0s7SyxRO2dCOztJOzs7OzJCO21DOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyw0QyxnQjtHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNOzs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssbUI7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7O0ksWTs7Ozs7O3dDOztLO007UTtrQjs7O0ksZ0I7STs7Tzs7Ozs7SSxXOzs7SSxVO0ksTzs7MkI7O0c7O0ksVTtJLE87OzJCOztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssTztJLE87OztjLE07YTs7O0c7NkIsTyxtQzs7OytDLE87b0QsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07Ozs7SSxTO0k7O0ksTTtHOztJLE87OztjOzs7YTs7RztHO0k7O087O3lCLGtCLG9COztJO0ksTzs0Qyx3QjtHOztJLFM7SSw0QjtJLFc7Rzs7STs7aUI7Szs7O00sYTs7OztHOztJLFk7SSxrQyxNO0k7OztJO0k7OztPOzs7OztRLE87TyxXOzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7OztxQjtLOztHOztJO0k7Z0IsVzs7O00sTTtLOzs7TSxJO007Ozs7O0c7O0k7STs7OztPOzs7Ozs7OzttQjtLLE07O0c7O0k7STtlLFc7O2lCO0ssOEI7Ozs7Rzs7STtJO21CLFc7O00sTTtLLDRCLHFCOzs7OztHOztJO0ssTTtJO0ssYzs7OztJO3lCLE87d0IsTztLO007Ozs7TTs7Ozs7Rzs7STtJOzs7Z0I7SyxrQyxPO0ssVzs7OztHOztJO0k7OztNLEc7Tzs7Ozs7OztLO2E7Ozs7Rzs7SSxRLE87O0ksTztHO0c7STs7O0k7O0s7O0k7aUI7SyxHLHFDO0s7OztHOztJO0k7aUI7SyxLLDRCO0s7OztHOztJO0s7OztTOzs7WSxZOztZO1c7O0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxlO007TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7OztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7O0ksVTtJOzs7TztPLE87TTs7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7Ozs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7O0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOzs7O0ksYztJO2lDLE8sZ0M7aUMsNkI7NkIsTyx1QjtHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLE87SyxTOztJLGM7SSxXO0ksTztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STsrQjtHOztJOytCO0c7O0k7O0c7O0k7K0I7Rzs7SSxHLGtCO0ksSTtJO2dDOzs7Ozs7Yzs7Ozs7O087USxZOzs7Ozs7OztHOztJLGM7Ozs7O0s7O007Ozs7Szs7Ozs7TyxxQjs7Ozs7Ozs7TTs7O0k7Rzs7SSxRO0ksVztJLE87Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1EsMEM7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7UTs7Ozs7TTtPO08sWTs7Ozs7Szs7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7Ryx5Qjs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7Ozs7Ozs7STs4QixxQjswQiw0Qjs7STs7Ozs7Ozs7dUIsTTs7STtHOztJOztJO0ksTztHOztJO0c7O0k7SyxZOzs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7O1M7VTtXOztVOzs7O2lDLE87Ozs7OztJO0k7STtHO0c7STtJOzs7O0c7STs7TyxJLEksTzs7Ozs7O087TztRO1M7UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHOztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7STs7Tzs7MEIsTyxzQzs7SSxPOzs7ZTsyQjtlLHFCOzs7Ozs7Ozs7OztHOztJO0ksYztrQjtJLEk7STtLLE87STtJOztLLE87SSxPOzs7Ozs7Ozs7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TyxJOzs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7TztPLEk7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7OztLLE87O0c7O0k7O0s7Tzs7O1U7VSxPLGdDO1M7OztLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STtJOzs7TztnQztxRDtPLE87Ozs7Ozs7O007O0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7O0ksTzs7O2MsZTtjOzs7O2UsTztlLE87YyxXO2E7OztHOztJLFk7STtHOztJOztPOztnQyxPLHFDOztJLE87RztHO0k7STtNOzt1QixpQjs7SSxNO0k7TTs7dUIsaUI7O0ksTTtJLFk7O0k7Ozs7Ozt5QjtxQztxQztxQztxQzs7OztxQzs7c0M7c0M7c0M7c0M7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTzs7O1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOzs7SyxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O2U7ZSxPO2M7OztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVO0s7Yzs7O2lCO2lCLFc7Z0I7O0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SyxPOztzQyxPLDZCOzs7STs7SyxVO0ssTywwQztJOztLLE87OztlLE8sbUI7Yzs7O0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNO1MsTzs7bUMsTyx3Qjs7O1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7O21CO2tCOzs7UTs7UyxRO1M7OztZO1ksTztXOztTO1E7MkIsaUQ7O1MsUSxtQjtTO3FDLE8sMkI7UztROztTO1UsSSxVLDRCOzs7O1csUTtXO1c7VztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7RztJOzs7Ozs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7Ozs7Ozs7STtXO2M7O0ksTztHO3dCLFM7Ozs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTO1UsTTtVO1k7YzsrQzs7VTtZOzs7ZTtnQjswQjs7Ozs7O2dCLEksWTs7O2lCLE07O2dCOztlLGE7OztpQixNOzs7OztnQjs7bUI7Z0IsSSxZOzs7aUIsTTs7O2dCOzttQjs7Ozs7Z0IsSSxjOzs7aUIsTTs7O2dCOztlLE07Yzs7Ozs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7OzRCLDBCOztJO0ssTzs7O2U7O3lCOzs7Ozs7Yzs7SSxNO0c7O3lCLE8seUI7SSxjO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Tzs7O1U7O1csZ0I7OztVO1M7OztJO0c7O0k7SyxNOztJOzs7Tzs7O007O0ksTzs7O2M7O2dDLGlDOzs7O2E7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7SSxzQjtJLGU7SSxxQjtvQixZO3FCLFk7c0IsWTs7SSxPO2tCOztHOztJLFc7O0ssTzttQjs7STtJLE87Rzs7STtLO007TSxNOzs7Ozs7OztJLGlCO0c7RztJLGU7SSxjOztJLE07RztHO0k7Ozs7OztJLG1CO0ssTTtJO0k7STtJOzs7OztHOztJO0c7O0ksVTtJLE87Rzs7SSxVO0ksVztHOztJLE87OztjO2UsSztlLFc7O3lCOzt3Qjs7eUI7O3dCOzthOztHOztJOzs7SztzQzs7O0s7c0M7STtJOzs7Rzs7SSxtQjtLLE07STtLO087O3FCLDRCOztLO087O3FCLDRCOztpQjs7O2lCOzs7Ozs7YztjOztHOztJLG1CO0ssTTs7SyxlO00sTztLLGM7O2U7O0k7STs7O08sUztPO08sWTtPO007Ozs7O0c7aUMsZ0M7O0ksbUI7SyxNO0k7Ozs7Z0I7Ozs7Z0I7O0c7O0ksTztHO0c7SSxTO0k7TTs7O1M7Ozs7bUI7K0IsbUI7O1E7Ozs7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJO0ssYztLOzs7OztNLFc7OztHOztJLG1CO0ssTTtJOzs7Ozs7O00sSSw4Qjs7Szs7Ozs7TSxPOzs7Rzs7SSxtQjtLLE07STs7Ozs7OztZOzs7TTtPOztRLFU7Ozs7Ozs7O2tCOzs7Szs7Ozs7SyxlO0s7YTs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7SSxzQjtJLFU7SSxPO0c7O0k7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJOzs7Ozs7Ozs7O0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtJO0k7STtJO0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7TTtROzt3Qjs7TTs7Ozs7OztHO0c7STtJO0k7STs7O1E7OztPOztROztXOztXO21COztPOzs7STtJOzs7UTs7O087dUIsMEM7OztJO3lCLE8sc0M7O0k7O087O087O087O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7O0c7O0k7O087O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7TztTOzs7WTs7YTthO1k7OztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztvQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0s7Tzs7dUI7O0s7OztHO0csSSxtQjs7STs7O0c7O0ksTzs7O2M7YztlO3VCO2U7ZTtlLFU7ZTs7Ozs7OzZCOztnQjs7O2E7O0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHO0k7STs7Ozs7O0k7OztHOztJOztLO0s7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7SSxPOzs7O2U7ZTtnQjtnQjs7ZSxPOzs7OztjOzs7OztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7STs7OztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO087Ozs7OztLO0k7STtHOztJO0s7Tzs7MkIseUI7OztLO087OztVOztTOzs7OztLLEksZ0I7Szs7O1EsbUI7OztPOzs7O1E7O0k7SSxPOzs7Yzs7Ozs7O2U7Ozs7O2UsUTs7O2U7O2M7YTs7Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjtLO2E7OztnQjs7OztnRDs7OzhDO2dCO2dCOzt1QztlOzs7STtJOzs7OzswQzs7O0ksVztJOztLOzs7UTtRLE87OztpQiw2QjtPOztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7O0s7OztROztTO1E7UyxnQztRO087O0ssTzs7STs7Szs7OztNO1E7VTs7O2E7WTs7TSxROzs7SyxHLHdDLFM7TSxVO007O0ssVTtLLE87NkM7O0ksTzs0QztHO0c7STtNO3VDO0ksTTtJO007Ozs7Ozs7O0k7TTt1Qzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxJLEksTTs7Ozs7O0ksd0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SztLOztJLFU7O0ssTTtJO0c7aUMsa0IsUzs7STtLO087c0MsNEI7SyxTO0ssSTs7O0s7Ozs7SztNLFE7OztLOzttQixPLHlDOztLO0s7O3VCLE8sbUM7SyxPOztJO0c7O0k7SztPO3NDLDRCO0s7Tzs7cUIsTyw4Qjs7STtHOztJLFk7O0ksTztHOzs7Ozs7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssTTtLLGlDO0ssTTtLLE07OztLOzs7OzhCOzs7Ozs7Ozs7UTs7OztJOzs7Uzs7Ozs7Ozs7Ozs7OztJO0ssUTtLO00sWTtNLGE7TztNO08sVTtPOzs7Z0IsMkI7O0k7OztJO0kscUI7SSxvQjs7SztLLGU7OztLLE07STtJO2E7O0c7O0ksTzs7Ozs7Yzs7Ozs7O21CO3FCOzs7d0IsSzt5Qjt3Qjt5Qjt5QjsyQjs7Ozs7eUIsTTt5QixVO3dCO3lCLFU7eUI7Ozs7K0M7Ozt1Qjs7O2U7Z0I7OztvQjtzQjs7O3lCOzt3QzswQjs7NkI7Ozs7OzBCLE87OytDLHlCOzs7eUI7d0I7O2dCLGtDO2dCLE07O2tCOzs7O2U7Z0I7Z0IsTTtnQixNO2dCLGlDO2dCLE07Ozs7Ozs7Ozs7Ozs7bUIsTTs7Ozs7a0I7Ozs7Ozs7Ozs7O2M7YTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztnQyxvQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTtHOzs7TTtNLE87OztnQixPO2U7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLE8sb0M7O0k7O0ssTTs7O08sdUIsNkM7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7STs7O1E7UTs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7cUI7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFM7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0ksSSx5QjtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TSxPOzs4Qjs7O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs4Qjs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007SztLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7Uzs7O1ksVztZLE87Vzs7O00sMEI7SztLO007UTs7OEIsc0IsVzs7TTtROzs7Ozs7VyxPOzs7cUI7OztnQzs7Z0M7Ozs7OztzQixPOzs7cUI7c0IsWTs7cUIsTzs7O1U7O0s7STtJOzs7O0s7Ozs7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0c7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7USxPOztROztROztROztROztROztROztROztRO2dCOzs7Ozt3QjtPLFc7TyxPOzs7O1EsTTs7UTtTLE87UyxPO1EsTzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87Ozs7aUI7OztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OzJCOztPOztRLE87TyxPOzs7TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VTs7YTtVLE87OztPOzs7O1E7USxPO1EsTztPOztVLE87O1UsTzs7O1UsTzs7Ozs7O1E7O1MsTztTLE87USxPOzs7USxNO087USxPO1EsTztRLE87USxPO08sTzs7OztROzs7O1M7Vzs7UyxPO1MsTztTLE87USxPOzs7O1EsTTtPOztRO1U7USxPO1EsTztPLE87O087O1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87OztPLE87O087O1EsTztRLGE7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztPLGtCO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxTO087USxNOzs7UTtTLFM7UyxPO1MsTzs0Qjs7UTtTLE87UyxPOzRCO08sTzs7Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7RztJOzs7OztJLG1CO0k7STtLO0s7SztLO087O3lCLG1EOzs7O0s7Ozs7a0M7Ozs7Z0I7O0k7Rzs7STs7Ozs7O2dCOzs7a0I7Ozs7Ozs7O1E7OztJO0ksYzs7Ozs7Ozs7Ozs7OztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCLHlCOztJOzs7SSxNO0c7O0k7OztPOzs7OztPO1E7O1MsTztnQjs7O08sTzs7Ozs7OztpQixPOzs7Ozs7Ozs7Z0I7O007O0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxVO1MsTzs7O21CO29COzJCO3FCO29COzs7OzBDOzs7a0I7OztROztTLE87OzttQjtvQjsyQjtxQixNO29COzs7OztxQixPOzs7a0I7OztROztTO1M7OztZO2EsVTs7O1c7O1MsTzs7O21CO29CLEs7b0I7O2tCOztROzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7VTtZLDJDO1U7VTtVOzs7O1csbUI7cUI7Vzs7Ozs7Uzs7VTtZOzs7O2U7ZSxPOzs7eUIsSSxJLE07Ozs7O2tDOzt5Qjt3Qjs7O2M7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7O2tCLFE7O1M7OztVLGE7Uzs7O1ksTzs7O3NCOztzQjtxQjs7Vzs7UztVLFc7VSxhO1U7O1U7b0I7VTs7VTtVO1UsTztTO1M7Ozs7Vzs7WTs7O1c7Ozs7O1M7O1UsOEI7VSxrQjtTOzs7WTs7Ozs7WTthO2E7WTthOzs7Z0I7Z0IsTztlOzs7WTtXOztTOztZO1MsTzs7O21CO29CLE07Ozs7b0I7OztvQjs7NkI7OztnQzsrQjs7OzttQjtvQjs7b0I7b0I7c0I7OzttQjtrQjs7UTs7UztTLE87a0Q7UTs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7OztLLE07Ozs7USxrRDtRLE87Tzs7d0IsUzt3QixTOztvQixjOzBCLE8sNEM7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixTOzBCLFM7c0IsYzs7SSxPO0c7Ozs7Ozs7O3NCOzJCOzJCOzs7Ozs7Ozs7OzsyQjsyQjsyQjs7MkI7MkI7MkI7c0I7O3NCO3NCO3NCOzs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksOEI7OztPOztRO1U7Ozs7YSxRO2EsTztZO1EsTTtPLE87OztPLE87OzJCLE87O0c7RztJOzs7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQjtLLE87O0c7O0k7STsyQjtLLFE7VztLOzs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7O0s7O0k7Rzs7O0s7O0k7STtHOzs7OzswQiw0Qjt5QixPLHVDOzs7Ozs7OztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O2M7YzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO087USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0I7aUI7O3dCOztZO29COztzQjtpQztXOzs4QjtPOzs7VyxPOzs7cUI7cUI7b0I7OztPOzs7OztNO007TztPLEk7Ozs7Ozs7Ozs7TyxVOzs7Ozs7Ozs7O1E7UztTO1M7UztTO1M7UztRLEc7OztTO1U7Z0M7VTtTOzs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7OzthOztjO2M7OztjO2M7O2M7Ozs7O2M7Ozs7O2E7Ozs7Ozs7O1k7VSxXO1M7OztVO1c7Ozs7O2M7Yzs7Ozs7Ozs7YTt3Qjs7UTs7OztVLE07Uzs7VTs7VztXO1c7OztjOztlOztlOztlO2M7YTs7cUI7Ozs7OztRO1M7O1k7d0I7WTs7OzthO2U7OztZLFc7O1M7O1k7WSxPOztROztPLE07MkM7O00sTTsyQzs7O0ksTTtHOztJO0s7TSxLO007UTs7MEIsTywyQjswQixhOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOztTLE87OzsrQix5QjtROztTLE87OzsrQix5QjtROztTO1E7O1M7UTs7UztROzBCLHVCOztTO1M7UztTO1E7O1M7Ozs7bUI7bUI7a0I7UTs7UztVO1U7O1U7Ozs7VyxzQjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVOzs7O1E7OztVOzs7b0I7Ozs4QjsrQjsrQixNOytCOzhCOzs7Ozt1Qzs7NkI7bUI7Uzs7VTs7O29COzs7OEI7K0I7K0IsTTsrQjs4Qjs7Ozs7dUM7OzZCO21CO1M7OztXLE87Ozs7cUI7OzsrQjsrQjt1Qzs7OEI7b0I7VTtVO1csa0QsYztXO1c7MEQsYztXO1c7YTs7OztnQixPOzs7OzBCLE87Ozs7b0MsWTs7O3FDOzs7b0M7bUM7eUI7ZTtXO1c7VTtXOzthOzs7Ozs7O2M7Z0I7OzthOzs7Ozs7VztVO1U7bUI7O29COzs7OztxQixRO29CO21CO1M7O1Usd0I7Ozs7O3NCO1U7Uzs7VTs7O1c7YTs7VzthOzs7OztXOztjOzs7Ozs7VTs7VTtXO1k7WTtZOztZOzs7O2Esa0I7Ozs7O2U7OztrQjs7Ozs7O2lCO2U7Ozs7O2E7Ozs7OztnRTs7Vzs7O2UsTzs7Ozt5QixPOzs7O21DO29DOzs7a0M7d0I7YztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7O2tCLFU7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7Ozs7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7OzttQjtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87OytCLDRCOztHOztJOzs7Ozs7O0k7SyxVO0s7SyxPOzs0QixPLHNDOzs7STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07Ozs7MEI7OzswQzs7OztzQjs7dUIsTTt1Qjs7OzswQjs7OzBDOzs7Ozs7c0I7Ozt1QixLO3VCLEs7dUI7eUI7Ozt1Qjs7OzBCOzs7MEM7Ozs7bUIsVzs7OztxQjs7Ozs7Ozs7O21COzs7OztzQixvQjs7O3NCOztzQjs7Ozt1QixLO3VCLEs7dUI7dUIsUTs7Ozs7O3lCOzs7Ozs7OzswQixVOzBCLFU7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7O2tCO2tCLE87aUI7Ozs7OztFOzs7Ozs7O0c7Ozs7SSx3Qjs7Z0MsTyxzQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLCtCOztJOzs7Rzs7STtLOzs7Vzs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxZO2dCLE87STs7SyxVOztrQjtjO0c7O0k7SztNLE87TSxjO0s7STtJLFk7Z0I7STs7SyxVO2tCO0ksYztnQjtJLE07Rzs7SSxHO0s7TSxPO1k7OztJO0k7SztLO007TyxPO08sTTtNLGU7TTtPO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7Szs7Ozs7SztJO0ssaUM7STs7SyxhO0ssTztJO0k7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0ksTzs7OztlLE87Yzs7OztHOztJLE87OztjOzs7ZSxPO2UsYztjO2E7O0c7O0k7Szs7a0IsTTtLLEk7Ozs7aUI7Tzs7Ozs7SyxXOzBCLE07SztLO0s7SztLLHVDOzs7O2tCOztPO1M7O3lCLG1DOztROztPO1M7O3lCLG1DOztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7OztJLE87K0MscUI7OztJOzs7Szs7SztNO007OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLO007TTtROzs7Vzs7WTtXO1U7O007UTs7O1c7Ozs7Ozs7VyxPOzs7VTs7TSxPO007UTtVOzs7YTthLG1CLDJCO2E7YSxPO1k7O007UTs7O1c7Ozs7O1c7O2E7O1k7OztZLE07OzZCOztXO1U7Ozs7O007SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7Ozs7Ozs7Ozs7OztRO1M7UyxxQix1Qjs7O1ksVztpQztZLFE7WTtZO1c7Ozs7OzsyQyxxQjtPO1E7Uzs0Qiw0Qjs7O1ksc0I7WSxRO1k7WTtXOzs7Ozs7OztLO007UTtVOzs7YTs7O3FDO2M7Z0I7OzttQjs7Ozs7OzttQjtxQixnQztvQjttQjtxQixnQztvQjttQjtrQjs7Ozs7O2E7WTs7TTtROzs7Vzs7Ozs7VyxXOzt3QjtXOztZO1c7VTs7Ozs7Ozs7Ozs7VTs7O2E7YTtZOzs7Ozs7Szs7UTtVOzs7YTs7Ozs7YTs7cUI7O1k7O0s7Ozs7Ozs7O1E7UTs7USx5RDs7Ozs7Ozs7O2E7OztnQjtnQixPO2U7O1c7VTtXOztXLFM7WTs7WTs7Ozs7YTs7O2dCO2dCLE87ZTs7VztVOzs7OztROzs7OztNOztTOzs7WTs7OzthO2U7OztrQjtpQjs7WTtXOztNLFc7OztLLE87STtJLE87O0c7RztJLE87Rzs7STtJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7Ozs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7RztJLE87OztjLFc7YyxPO2E7O0c7RztJOzs7SyxPO0ssTztJLE87O0c7STs7RztHLDhDLHdCO0c7STs7Ozs7Ozs7Ozs7OztLO0s7TTtROzswQixvQixXOztNO007UTtLO0ssTztJO0ksOEMsUztJO0s7O2U7O0k7STs7Ozs7Ozs7O0c7O0ksZ0M7Ozs7Szs7STtHOztJOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7OztJLE87OzRCOzs7O0k7Ozs7YyxPO2E7Ozs7SSx1QyxPLHVCOzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLHFCLE8sd0M7STtJO0ssTztLO0s7Tzs7O1U7VTtTOztJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO2dCOztJO0c7O0k7Rzs7O0k7OztJO0c7O0k7SyxNOzs7SyxNOzs7SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7O0s7OztROzs7STtHOztJO0ssTTs7SyxNOztLLE07SztPOzs7Ozs7Ozs7OztLOzs7UTs7O0k7RztHO3FDLGtDOzs7Ozs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7Ozs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7OztJLE87OztjLE07O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzJCLFk7dUIsWTtzQixZO3dCLE8saUM7Ozs7Ozs7Ozs7Ozs7O0ksZTs7O0ssSSxjOzs7Ozs7O2U7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOztvQjtLLFEsTzs7Ozs7STtHOztJO2M7SSxJLHFCLE07SSxPO0c7O0k7O0s7SztJLGtCO0k7OzZCLFk7d0IsWTt5QixZO3dCLE8sc0M7O0k7STtHOztJLGdCLE07STtHOztJLGdCLG1CLE07STtHO21CLCtCO21CLCtCO21CLCtCO21CLGtDO21CLCtCO29CLGdDO3FCLGlDOzZCLHlDOzZCLHdDOztJO0ssUzs7SyxNO0k7Rzs7SSx5QjtJLE87Rzs7SSxhO0ksTztHO3NCLE8sZ0Q7O0k7SyxXO0ssYTtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7USxvQzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxROztJO1k7OEMsaUI7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7O0ksVTtJLFU7SSxVO0ksTzs7O2M7O2lCLE87O2lCOztxQzs7YTs7RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOztJOzs7TTtNLE87OztJO0c7Rzs7STs7SztLO0s7STtHOztJO0s7Tzs7eUIsZ0M7O0ssTTtJLE87Rzs7STtJO2lCOzswRDs7OztHOztJOztpQixPOzs7Ozs7Ozs7TTs7Ozs7Rzs7SSxPOzswQiwrQzs7RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOztJLE87RzsrQixzQjs7SSxVO0k7Rzs7STs7SyxNO0s7STs7O0k7O0ssTTtLO0k7OztJOztLLE07SztJOzsrQixzQjtzQixjOzs7STs7OztJOztHOzs7STs7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO0c7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7STs7Tyx3QyxZOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7OztTOzt1QiwrQzs7Ozs7Ozs7Ozs7OztjOzs7aUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7OztJOzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQztxQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOzRDO0c7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0MsbUM7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOzs7STs7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzt1QyxpQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7OztJOzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7O0k7OzhCLDBCOztJOztPOztzQixPLDhDOztJLE87OztjLFc7YyxxQjthOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7OztJOztnQywwQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7Ozs7OztJLG1COzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7Rzs7SSxXO0k7Rzs7Ozs7O0ksbUI7OztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7O0k7O087O3NCLE8sOEM7O0ksTzs7O2MsVztjLHVCO2E7O0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7Ozs7OztJLDRCOztHOztJOzs7OztLLE87SSxzQjs7Rzs7STs7Ozs7SyxPO0ksc0I7O0c7O0k7Ozs7O0ssTztJLHNCOztHOztJOzs7OztLLE87SSx1Qjs7Rzs7Ozs7OztJLGdDOztHOzs7Ozs7SSx1Qjs7Rzs7STs7Ozs7SyxNO0k7Ozs7WTs7O0c7O0k7Ozs7Ozs7SyxNO0k7Ozs7OztZOztHLEk7O0k7Ozs7Ozs7OztLLE07STs7Ozs7OztZOzs7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7OztJLGdDOztHLEk7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7O0ksNkI7OztJOzs7OztLLE07SSw0Qjs7O0k7Ozs7Ozs7SyxNO0k7Ozs7WTs7O0k7Ozs7O0ssTTtJLGdDOztHO2dDLHlCO0c7Z0MseUI7Rzs7O0k7OztJO0c7K0IsOEI7Rzs7O0k7OztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DLG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7aUQsTztpRCxPOzs7STtJLE87OztJLFk7O0ksTzs7OztJLE87Ozs7STtJOztLLHNCLE87SyxPOzs7SSxPOzs7O0k7STs7O0ssTzs7O0ksTzs7OztJO0k7Ozs7O1E7USxPOztRLG1CLE87USxPOzs7UTtRLFc7USxPOzs7USxPOztnQzs7OztRO1EsVztRLE87O3lCLE87OztRLE87O2dDOzs7MkIsTzs7O1E7UTtTLE87UyxzQjtRLE87O2dDOzs7O1E7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJOztxQjs7STtLLEs7SyxLO0ssSztJOzs7O087TztPLE87OztJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJOztxQjs7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7O0s7dUM7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFU7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OzJCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGtDLE07TztPLE87OztPOzs7O1U7OztXLFM7VyxPOzs7VTs7Ozs7OztTOzs7O1MsUztTOzs7MEMsTzs7TztPO08sTzs7O087TyxVO08sTzsrQzs7O087TyxPOzs7TztPLE87O08sa0IsTTtPLE87OztPO08sZ0I7O3lCLGdCOztPOzs7USxNO1Esb0I7Tzs7dUI7O08sZ0I7OztPO087OztPO087TyxPOztPLG9CLE07TyxPOzs7TztPO08sZ0I7OztPO08sTzs7O087TyxPOzs7TztPO087TyxPOzs7TztPLE87OztPO08sUztPLE87OzBCLE87OzRCOzs7TztPLE87O087O1EsTTtRLG9CO08sTzs7OEI7Ozs7TztPO08sTzs7O087TyxPOzsyQixPOzsyQixPOzs7TztPLGdCOzswQixPOzsyQixPOzsyQixPOzs7TztPLE87Ozs7Ozs7TztPLFU7TztPLE87a0MsTzs7Ozs7Ozs7O0k7STtJO0ksTzs7OztJO0k7aUM7Ozt3Qjs7O087Tzs7Tzs7Tzs7TyxrQixNO08sTzs7O087aUI7O087d0M7TyxPOzswQixnQjs7Tzs7USxNO1Esb0I7TyxPOzs4Qjs7O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TyxVO08sTzsrQzs7TyxtQyxNO087TyxPOzs7TztPLE87O3dCLE87OztPO08sTzs7OztJLHFDLE87O0ksTzs7OztJO0k7Ozt5QixPOzs7TztPOzs7TztPOzs7TztPLE87O3dCLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7Ozs7Ozs7SyxNO0ksMEM7STtJO0k7SSxPOztHO0k7OztRO1E7O087O1EsVTtRLE87Tzs7O1E7UTtRLFM7USxPO087O1EsVTtRLE87Tzs7USxVO1EscUI7Tzs7USxVO1EscUI7Tzs7Ozs7OztRLFU7USxxQjtPOzs7UTs7Ozs7OztRO1E7O3dCOztRO1EsUztRO1EsTztPOzJCLDRDOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7O1E7O1EsUzs7Tzs7UTs7UyxPOzs7USxPO087Ozs7Ozs7OztROzs7Ozs7UTtRO1E7OztXOztZOzs0Qjs7WSxPOztXOzs7WSxNO1c7VyxPO1U7O1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7O0ksTztHOztJLFE7O0c7O0k7SyxPO0ssTztLLFM7SSxPOzs7YyxPO2E7O0c7RyxzQjtHOzs7TSxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEM7Ozs7UTtpQjs7Ozs7SSxXO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozt1Qjs7UTs7Ozs7STtHOztJO2dCOztJO0c7O0ksSTs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7VTs7Ozs7Yzs7dUIsTztzQjs7Ozs7Yzs7dUIsTztzQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MEIsTzt5Qjs7Ozs7O2E7O3NCLE87cUI7Ozs7TyxPOzs7Ozs7Ozs7SSxPO0c7O0ksdUI7STs7Ozs7Ozs7O00sVztNOzs7Ozs7STs7O0k7SztLO0k7Rzs7SSxPO0c7O0ksTzs7O2M7YzthOztHOztJLE87OztjO2M7YTs7Rzs7STtLO0s7OztTO1MsTztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7O0k7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7OztJO0c7O0ksZ0I7SSxVO0ksTztHOztJO0s7SSwwQztJO2dCOztJO0c7O0ksVTtJLE87OztjOztlOztnQzs7ZTtjO2MsTzthOzs7Rzs7STtJLE87OztjO2MsTzthOztHOztJLEksOEI7SSxPOzs7YyxjO3dCO2M7YyxPOzthOztHOztJO0k7bUI7O0s7TTs7OztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7SSxPO0c7Ozs7SztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLO0s7TTtLO007Szs7Ozs7Ozs7Ozs7OztVO1UsSSxVLDRCOzs7Ozs7Vzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztLLFU7Ozs7Ozs7Ozs7Ozs7UztTLE87Ozs7O0s7Szt3RTs7O0ksVztJO0s7TSxNO007SztLLFU7SztLOzs7O0s7SyxNOztHOztJLE87OztjO2E7O0c7O0ksTzs7O2MsTzs7O3dCOzs7eUI7eUI7O3VCOzthOztHOztJO0c7O0k7Rzs2QiwyQzsrQiw2QzsrQix5Qzs2Qix1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COzs7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7O0k7SyxhOztNLFk7bUI7bUI7TSxPO0s7SyxPLG9DO0c7O0k7O00sWTtNLE87SztLLE8sNEI7Rzs7STs2QixzQixhOzZCLHVCLGM7NkIscUIsWTs7Rzs7STsyQyxnQzs7RztHO0k7STtJO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7O0ssTTs7Syx3QixPO0ssTzs7STs7O0ssTztLLE87SSxPO0c7O0k7O0ssTTs7STtHOztJO0k7OzthLFk7YTthO1k7Rzs7STtJOzs7YTtjLFM7OzthO2E7WTtHOztJOzs7Szs7O0k7SyxXO0s7Ozs7K0I7Ozs7O0ksTzs0Qyx3QjtHOztJO0ssSTtLLEk7Ozs7STtnQixPO0ssSSxpQixJLDhCOzs7Ozs7O007TTs7Ozs7O0ssMEI7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ssSTs7STtnQixPO0ssSSxpQixJO0s7bUIsTTtNOzs7TztRLE07OztPOzs7dUIsTTtNO087UztXO08sTztNOzs7Ozs7TTs7Ozs7Rzs7STtJO0c7O0k7SyxJO0ssTztLLE87STtJLGE7STtHOztJOzs7Rzs7Ozs7Ozs7O0ksUyxPO0k7O0s7OztJLE87O29CLGMsNkI7O0ksVSxNO0ksa0I7OztLOztPLGM7Tzs7Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJOztLO087OztVOztXOzs7Ozs7Ozs7Ozs7O1UsTztTOzs7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7OztrQjs7STtHOztJLGdDOzs7O1E7Ozs7OzJCOztROzs7Ozs2Qjs7UTs7OztRLHFCOzs7Ozs7SyxNO0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7O087UTs7Ozs7Ozs7STtJLFc7STs7O087O007O0ksSSxlLHNCO0k7OztPOzs7UTs7Ozs7Ozs7O1k7Ozs7YyxNOzthO2EsSyxrQzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7OztROzs7TTs7STtHOzs7O0s7OztNOztLLE07O0ksTTs7O0k7OztLLFc7Ozs7STs7SztLO087Ozs7VTs7O1U7UztLOztLLE07STtLO0s7SztPOzs7O1U7Vzs7WTs7WTs7O2E7Ozs7WTs7Ozs7UztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTtVO1c7OztjOzs7Yzs7OztlLE87Ozs7Ozt5QixHLDhCO2tDOzs7OzBCOzt5QixNOzs7O3lCLFE7Ozs7Ozt5QiwyQjt5QixxQjsyQzt5Qjt5Qjs7O2MsTTs7VSxPO1M7O1U7VztZLFE7WTs7VyxnQztTOztVO1U7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsNEI7O1UsbUI7Ozs7Uzs7VTs7VztZLE87bUI7OztVO1M7O1U7Uzs7O1U7OztVLE87Ozt1QyxTO2lDLFM7O1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7Ozs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTs7WTtZOzs7OzRCOztZO1k7Ozs7O1M7O1Usb0IsVztVLE87Uzs7Ozs7OztVO1csUTtXLFU7OztXO1c7VyxPOztVO1M7O1U7O1M7O1UsbUMsTztVO1U7VSxpQjs7OzJDLGtDO3lDLGlDOztVO1UsWTs7Vzs7WSxPO1ksTztXO1c7VyxXO1csTzs7VTs7Uzs7VTtVOztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtrQztrQzs7OztVO1csTTs7VTtvQjtvQjtTOztVO1UsRyxXO1c7VSxNO1M7O1UsRyxXO1c7VSxNO1M7O1U7VTtTOztVO1U7Uzs7VTs7OzhCOztXOzs7K0I7O1U7UztvRCx5Qjs7Ozs7Ozs7VTs7O1U7VztXO1c7VTtTOztVO1UsTztTOztVO1UsTztTOzhCLHVDOztVO1c7VztVLE87Uzs7VTtXLE07O1M7O1U7VTtTOztVLEksYztVO1M7O1U7Ozs7OztVO1M7O1U7VTt5QjtXLEksUzs7OztTOztVO1U7Ozs7b0IsTyxjO21COztTOztVO1U7Ozs7b0I7OzhCLGM7bUI7O1M7O1UsTztTO29DLHVCO2dDLHVCOztVO1c7O1k7O1csTzs7Ozs7O3FCO3FCO29COzs7OztVOztXOztXLFE7c0I7VTs7VztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLFM7OztVO1U7dUI7VyxJLFM7Ozs7Uzs7VTtVLE07UztzQyx5QixTO3FDLHlCLFM7O1U7VTtvQjtvQjtTO2lDLDJCOztVOztXOztZOzs7VyxlLE87O1csTzs7O3NCLE87VSxNO1M7O1Usa0I7VTtTOztVO1M7O1Usa0I7VTtVLE07Uzs7O1U7VTtTOztVO1U7Vzs7cUI7Ozs7OztvRSxTO3dELCtCO2dELFM7O29COztVOztTOzs7VTtvQjs7Uzs7VTtvQjtVOztXO1UsTztTOztVO29CO1U7O1c7VSxPO1M7O1U7b0I7VTs7Vzs7VztVLE87Uzs7VSxlO1M7O1UsZTtTOztVO29COztTO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJOzs7Ozs7Ozs7O087Ozs7Ozs7Tzs7OztJOzRCOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7NEI7O0c7O0k7SSxPO0c7O0k7Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7SSwrQjs7STtHOztJO0c7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7RztJOzs7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7STs7Ozs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztJOztLO087O2dDLHNDOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO0ksTzs0Qyx3QjtHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7YyxPOztxQyx3Qjs7YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7Ozs7SztxQztJOzs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7OztJOztHOztJLHlCOztJOzs7SSxrQjtJOztLO087Yzs7Z0I7OztLOztNO007TTtxQjs7O0k7O087OztVOzs7VztVO1M7OztJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTOzs7OztTO1MsSTtRO087O1E7Ozs7Ozs7OztTLE87UyxPO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7O1MsTztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7OztTLE07UTtTLE87UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7O1M7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7UztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7OztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1MsSztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztROzs7UTs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTLE07UztRO087O1E7Ozs7Ozs7OztTO1MsTTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7O1M7Uzs7Uyw0QjtROzs7O1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1MsUztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1MsTztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLE87UztTO1c7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTtRO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7Ozs7O1MsSztTO1M7Uzs7UTtTO1U7Ozs7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7OztTO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztXLHlDLGM7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztROzs7UTs7Ozs7OztTO1M7Uzs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UyxPO1M7UztTO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7O1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7OztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO1MsTTtROztTO1c7O3lCLHdCOztROzs7UTs7Uzs7Ozs7UztTOzs7UztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UyxLO1M7UTs7O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7OztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLE87UztTO1c7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxtQjs7O2M7UyxXO1M7UztXOztROzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7UTs7O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7O1E7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztROzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROztTOzs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1M7O1M7UztTO1E7Ozs7Ozs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UyxPO1M7UyxPO1M7Vzs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UyxLO1E7UTtTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTOztTO1E7OztROzs7Ozs7Ozs7UyxJO1E7Tzs7UTs7Ozs7Ozs7Ozs7UyxJO1E7OztROzs7Ozs7Ozs7UztTO1MsTztTLEk7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsbUI7OztjO1MsTztTLFE7UztTO1c7Uzs7UztROzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztROzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTOztTO1M7O1E7USxNO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7Vzs7O2M7YzthOzs7UyxPO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7OztTO1E7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1c7OztjO2M7YTs7O1MsTztTO1E7OztROztTOzs7Ozs7OztTO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTLGU7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7OztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO1E7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UyxPO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7OztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7UztROzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTLE87UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7OztTO1U7OztRLEksdUI7UTtPOztROztTOzs7Ozs7Ozs7UztTOzs7O1M7VTs7O1EsSSx1QjtRO087O1E7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztVOzs7USxJLHVCO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7OztTO1U7Ozs7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTLE87UyxXO1M7Vzs7Ozs7Ozs7OztTO2U7UTs7O1E7O1M7Ozs7O1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLHlCO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7OztRO1MsTTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsTztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1MsUTtRO087O1E7O1M7Ozs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTLFc7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7Uzs7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1MsSztTLEs7UztTOzs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UyxPO1MsVztTO1c7O1M7ZTtROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1MsSztRO1E7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OzthOztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxPO1M7UyxRO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87UztXOztTO1M7UztROzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7O1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UyxLO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTLEs7UztTO1M7UyxLO1MsTztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7dUQsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7Rzs7STtJLGM7STtJLE87RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7SztLOzs7Ozs7STs7O0k7STs7OzBCO0ksYzs7O0k7STtHOztJLGdCOztJO0ksSSxVLDZCO0k7STtHOztJLE07MEI7Rzs7SSxNO0c7O0k7Ozs7TSxVOzs7Ozs7Ozs7O08sTTs7O08sTTs7TTs7Ozs7O0c7O0k7Ozs7Uzs7Uzs7Uzs7O3NCO0k7Rzs7SSxnQjtJLE07OEI7Rzs7STsyQixPO0k7O3FDO0c7O0k7MkIsTztJOztxQztHOztJO0ksTztHOztJLE87Rzs7STtJO0c7O0k7STs7Ozs7OztHO0c7STtJOzs7SSxXO0ksTzs7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztHOztJO0c7Rzs7O00sdUI7Ozs7bUI7O1E7UyxVO2dCOzs7O1U7O1csTztrQjs7Ozs7OzthOzs7Ozs7O2dCLGtCOztnQixPO2U7Ozs7Ozs7YTs7Ozs7OztnQixvQjs7Z0IsTztlOzs7cUI7O1U7O1csZTtrQjs7Ozs7a0I7Ozs7O2tCOzs7Ozs7O2E7Ozs7Ozs7Z0Isb0I7O2dCLE87ZTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxhO0k7STtLLE87O0k7RzswQjs7STtJO0s7O1E7Ozs7Ozs7VTs7VTs7VTs7VTs7YTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVLG1CO1U7Ozs7UyxTO3FDO1M7UztVLE87O1M7O1MsZ0M7O1M7VSxPOztTOztTOztTOztTOztTOztZOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1k7O1M7O1M7bUI7UztVLFc7VTs7OztpQzs7OztTO21CO1M7Uzs7UzttQjtTOztTO21CO1M7Uzs7UztnQjtTOztTO1U7WTs7VSxRO1M7O1M7a0I7Uzs7UztVO1k7O1UsVTtTOztTOztZO1M7O1M7VTs7O1M7O1M7VTtZOztVOzs2Qjs7O1M7O1M7VTtZOztVLFc7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1k7O1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTLGdDOztTLFE7Uzs7UyxVO1M7O1M7O1M7O1M7O1M7O1k7O1M7O1M7O1M7VTs7O1M7O1M7VTs7Ozt3Qjs0Qjs7UztVO1k7O1U7OztlLGE7ZTtjOzs7O1M7OztVLFc7VTs7UztVOzs7Uzs7Uzs7WTs7UztVLFc7VSxZOztTLHlCOztTLFk7Uzs7OztTOztTO1Msc0I7Uzt1Qjs7VTs7VTtXOztjOzs7Ozs7Vzs7O1U7VztXO1csTTtXO1c7VyxVO1c7VyxZOzs7VyxJLGU7Ozs7Ozs7a0I7Ozs7Vzs7O1U7Ozs7b0M7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7UztpQjs7O0s7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7bUM7UTs7Ozs7UyxNOzs7UyxPOzs7O1E7Ozs4QjtROzs7WTs7Ozs7O1csd0I7O1ksTTtXOztZLE87WSxROztXOzs7Ozs7O1E7OztROztTO1MsUTs4QjtROzs7WTs7Ozs7O1csNEI7O1ksTTtXOztZLE87WSxVOztXOzs7Ozs7O1E7UTtROzs7UTs7UTs7Vzs7UTtRO1E7UTs7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1E7Z0I7UTtROzs7UTtnQjs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7Ozs7UTtTO1MsSzs7UztTLFE7UTtRO1M7UztTOzs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7O1E7Z0I7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxTO1E7UTs7OzZCOztROztXOztRO1E7OztRLFE7UTs7O0c7O0k7STtLOztROzs7OztTOztTO2lCOztLOzs7Rzs7STtjOztJLE87Rzs7SSxlOztLO0s7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTtXLE07VyxNO1csVTtVO1UsRzs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjtJLEc7SztJLFc7SSxHO0s7SSxXO0ksRztLO0ksVSx1Qjs7Ozs7eUI7OzBCOzsyQjs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7OztJLFM7Ozs7O3dCOzswQjs7MkI7O1M7VSxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLO0ssYztJO0c7O0k7SztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPO08sVztPLFc7TyxPOzs7OztJO0c7O0k7STtHOztJOztPOzs7SSxPO0c7c0MsZ0M7NEIsMkI7O0k7Ozs7OzBCOzsyQjs4Qjs2Qjs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1ksbUM7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix5Qzs7STs7O2E7aUMsTztJOzs7O00sTTs7b0Isd0IsTzs7SztLOzs7Rzs7STs7SSxROztJO0k7SSxPO0c7O0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7OztPOzs7bUI7Ozs7Ozs7bUI7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7TyxPOzs7OztJLE87Rzs7STs7OztROzs7OzZCLE8sdUI7Ozs7Tzs7Ozs7aUI7aUIsTztnQjs7OzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7Ozs7NkIsTyx1Qjs7OztPOzs7OztpQjtpQixPO2dCOzs7OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO2M7Yzs7O2dCO0c7O0k7SSxPO0c7OEIsd0I7O0ksTztHOztJLFE7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7Ozs7bUM7Ozs7SSxPOzs7Ozs7a0M7Ozs7STtJOztNLE87Ozs7b0M7O29DOzs7Ozs7O1MsTzs7Ozs7bUI7Ozt1Qzs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsUTs7b0IsTzs7Ozs7OEI7OzttQjs7d0M7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7OztZLE87Ozs7OzswQzs7MEM7Ozs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOzs7WSxPOzs7Ozs7c0IsTzs7OztzQixRO3NCO3VCOzswQjtzQixPOzs7OztnQzs7O3FCOzswQzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7OztpQjs7OzttQixPOzs7Ozs2Qjs7Ozs7aUI7Z0I7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7OztPLE87Ozs7OztxQzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7SyxPOzs7O21DOzttQzs7Ozs7SyxPOzs7O21DOzs7Ozs7Ozs7O0s7Ozs7O00sZ0M7Ozs7OztJOzs7TSw0QjtNOztLLE87Ozs7O2U7Ozs7O0k7SyxPOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7OztxQzs7Ozs7OztLOzs7SztNLE87O0s7Ozs7Ozs7Ozs7Ozs7O1M7VSxPOztTOzs7USxHO1MsTztpQixPOzs7O1MsTzs7Ozs7OzttQjs7OzttQjs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7OztJO0s7TSxPOztLOzs7a0MsTzs7OzhCOzt5QixPOzs7TyxPOzs7O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxhLE87Ozs7VyxPOzs7Ozs7eUM7OztPOztRLE87Ozs7O2tCOzs7Ozs7TyxPOzs7OztpQjs7Ozs7OztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sZSxPOzs7SyxPOzs7Ozs7bUM7OztJLGlCOzs7OztLO2UsTzs7SyxPOzs7Ozs7bUM7Ozs7SyxPOzs7Ozs7bUM7OztJLE87Ozs7OztrQzs7a0M7Ozs7SSxlOzs7Ozs7OztNOztROzswQiw2Qzs7O007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O3FEO1k7Ozs7bUM7Ozs7OztlOzs7O21DOztZOzs7O21DO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7O087UywyQzs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7OztZOzs7YTthO1k7Ozs7Ozs7Ozs7Ozs7K0M7Ozs7Ozs7Ozs7Ozs7OzhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztLOzs7SSxPOzs7O2tDOztrQzs7Rzs7STs7SyxPOzs7O21DOzs7O0ksMEI7STtJLE87Ozs7O2M7OztrQzs7Rzs7O0k7SSwwQjtRO0k7Ozs7TTs7O0ssTzs7UTtJLE87Ozs7O2M7Ozs7Yzs7OztrQzs7Rzs7STs7TSxPOzs7O29DOztvQzs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlLE87Ozs7O3lCOzs7Ozt5Qjs7Ozs7OztZOztlOztZOzs7VyxPOzs7O3lDOzs7cUI7Ozs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7OztXOzs7O2EsTzs7Ozs7MkM7Ozs7O1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UyxPOzs7OzttQjttQjtvQjs7dUI7bUIsTzs7OztpRDs7OzZCOzs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87OztTLE87Ozs7Ozt1Qzs7Ozs7Ozs7YSxPOzs7Ozs7MkM7Ozs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7OztTLE87Ozs7dUM7O3VDOzs7OEI7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7O1U7VyxPOzs7OztxQjs7b0I7Ozs7VyxPOzs7OztxQjs7OztxQjs7OztVOztXO1c7a0M7OztVLE87Ozs7O29COzs7OztVLE87Ozs7d0M7O3dDOzs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O21COztvQjs7O3dDOzs7O1UsTzs7Ozs7b0I7Ozt3Qzs7OztVLE87Ozs7Ozt3Qzs7OztVLE87Ozs7O3dDOzt3Qzs7Ozs7Ozs7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7O3dDOzs7OztXOzs7O3lDOzs7Ozs7YTs7OztjO2M7cUM7YSxPOzs7Ozs7Ozs7dUIsUztzQzt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlLG9DOzs7Ozs7YTtjLE07YztjLDRCO2M7O2EsTzs7Ozs7dUI7Ozs7Ozs7TSxPOzs7O29DOztvQzs7Ozs7OztPLE87Ozs7O2lCOzs7O007TyxPOztNOzs7Rzs0Qjs7STs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7SztNLE87O0s7O0ksa0IsTzs7STtHOztJOzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7Ozs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7O3FDLE87cUMsTzs7O21DLE87b0MsTzs7Ozs7OztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7Ozs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7a0I7Ozs7Ozs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJLE87OztjLE87Ozs7OzRDOzs7O0c7O0ksTzs7O2MsTzs7Ozs7NEM7Ozs7Rzs7SSxPOzs7OztrQzs7Rzs7SSxPOzs7O2tDOzs7Yzs7O2MsTzs7Ozs7d0I7OzthOztHOzs7SSxPOzs7OztrQzs7Ozs7SSxPOzs7OztrQzs7OztJLE87Ozs7O2M7OztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7O3lCOzs7Tzs7O0c7O0k7Ozs7TyxPOzs7OztpQixRO2lCO2tCOztxQjtpQixPOzs7OzsyQjs7O2dCOzs7O3FDOzs7Ozs7O1E7K0I7UTs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7OztVOzs7Ozs7TyxPOzs7OztpQjs7O3FDOzs7O087Ozs7TyxPOzs7Ozs7O3FDOzs7Rzs7O0s7SyxPOzs7Ozs7O21DOzs7O21DOzttQzs7STtJLFE7O2U7O0k7Szs7UTtJLE87Ozs7O2M7Ozs7Yzs7O0c7O0k7OztPLGtEO08sTzs7Ozs7cUM7OztpQixTOztpQixPO2dCOzs7aUI7Ozs7Ozs7USxPOzs7Ozs7OztzQzs7O2tCOzs7O08sd0M7TyxPOzs7Ozs7Ozs7cUM7OztpQjs7Ozs7OztRLE87Ozs7Ozs7O3NDOzs7a0I7Ozs7Tzs7Ozs7Vzs7OztVO1E7TyxPOzs7Ozs7OztpQjs7Ozs7OzttQixPOzs7Ozs7aUQ7O2lEOzs7O2tCOzs7Z0I7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozt5Qjs7O087OztHOzs7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Yzs7Ozs7STtLLE87Ozs7bUM7O21DOzs7Ozs7TyxPOzs7OztpQjs7aUI7a0I7O3FCO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7OzBCOzs7TyxPOzs7O3FDOztxQzs7Ozs7O1E7O1c7O1E7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7OztPLE87Ozs7cUM7O3FDOzs7MkI7OztPLE87Ozs7Ozs7cUM7OztHOztJO0k7O00sTzs7OztvQzs7b0M7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7OztVOzthOzs7Z0IsTzs7Ozs4Qzs7Ozs7MEI7Ozs7O2dCLE87Ozs7Z0IsTzs7Ozs7OzhDOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7OzhDOzs7OzswQjs7Ozs7Z0IsTzs7OztVOztTLE87Ozs7dUM7OzttQjs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7OztJOzs7OzJCLE87Ozs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7O2tDOzs7Rzs7STs7OztPLE87Ozs7Ozs7O2lCOzs7O2lCOzs7OztPOzsyQjs7MEI7OzBCOzs7O1EscUI7USxPOzs7O2lCOzs7O2tCOzs7O08sSTtPLE87Ozs7Z0I7cUM7OztpQjs7Ozs7TyxPOzs7Ozs7OztpQjs7Ozs7OztRLFU7O1E7O1M7Ozs7VztnQzs7Z0M7Ozs7O1M7Ozs7VztnQzs7Z0M7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7aUIsUzs7aUI7aUIsTzs7OzsrQzs7Z0I7OztpQjs7Ozs7Ozs7O087USxNOztPLE87Ozs7O3FDOzs7aUI7Ozs7TyxtQjtPLE87Ozs7Ozs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7O1csTzs7Ozs7Ozs7cUI7Ozs7O3lDOzs7cUI7Ozs7TyxVOztvQjs7O1E7O1c7O1E7O08sTzs7Ozs7aUI7Ozs7aUI7Ozs7MkI7O3lCOzs7TztPOztHOztJO0ssTzs7OzttQzs7bUM7Ozs7OzBCLE87Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7O1EsTzs7OztpQjtzQzs7c0M7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7OztTLE87Ozs7Ozs7OztLLE87Ozs7bUM7O0k7Ozs7OztPOztRLE8sd0MsWTs7OztPLE87Ozs7cUM7OztpQjs7O3FDOztxQzs7OztNLE87Ozs7b0M7O29DOztvQzs7Ozs7O00sTzs7OztvQzs7b0M7O29DOztvQzs7OztLLE87Ozs7bUM7O21DOzttQzs7Ozs7OztLLE87Ozs7bUM7Ozs7O0ksTzs7OztrQzs7a0M7Ozs7OztLLE87Ozs7Ozs7bUM7O21DOztJO0ksUTs7ZTs7SSwwQjtRO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxpQixPOzs7OztJLE87Ozs7O2tDOztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7Ozs7OztpQjs7OztpQjs7Ozs7O1EsTTs7Tzs7MEI7OzBCOzs7TyxPOzs7O2dCOztpQjs7OztrQjs7Ozs7bUI7O29COzs7O3NCOzJDOzs7O29COzs7OztpQjs7OzttQixPOzs7O2lEOztpRDs7O2lCLE87Ozs7K0M7O2dCOzs7aUI7Ozs7Ozs7Ozs7WSxxQztZLE87Ozs7cUI7MEM7OzBDOzs7c0I7Ozs7VyxJO1csTzs7OztvQjt5Qzs7O3FCOzs7O087USxNOzs7Ozs7OztRLE87Ozs7aUI7c0M7O3NDOzs7a0I7Ozs7a0IsTzsyRDtpQjs7OztPLE87Ozs7Z0I7cUM7OztpQjs7OztpQixPOzBEO2dCOzs7Ozs7OztPLE87Ozs7OztpQixTOztpQjtpQixPOzs7OytDOztnQjs7O2lCOzs7O08sbUI7TyxPOzs7OztxQzs7O2lCOzs7Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7O1csMEI7ZTtXLE87Ozs7Ozs7O3FCOzs7Ozs7cUI7Ozs7cUI7Ozt5Qzs7O3FCOzs7O08sVTs7b0I7OztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOzs7TyxPOzs7O3FDOzs7aUI7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7SSxRO0ksMEI7SSxPOzs7OztjOzs7Ozs7O0s7Ozs7O0ssTzs7Ozs7OzttQzs7Ozs7bUM7O21DOztJO0ksUSxNOztlOztJLDBCO1E7SSxPOzs7O2tDOzs7Yzs7Ozs7O0ssTzs7Ozs7Ozs7bUM7O21DOztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0ssTzs7O2U7ZSxPOzs7OzZDOzs2Qzs7Yzs7STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7Ozs7YyxRO2MsMEI7YyxPOzs7Ozt3Qjs7O2E7Ozs7Ozs7Yzs7OztrQzs7Rzs7Ozs7Ozs7OztLLFM7O0ssTzs7Ozs7ZTs7O0k7STtLLE87Ozs7OztlOztnQixPOzs7OzswQjs7Ozs7dUI7ZSwwQjttQjtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs2Qzs7Ozs7YywwQjtrQjtjLE87Ozs7O3dCOzs7NEM7O2E7O2tDOzs7O0k7OztLOzs7SSxPOzs7Ozs7O2tDOztHOzs7Ozs7O007SywwQjtLO0ssTzs7OzttQzs7O2U7OzttQzs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7OztxQzs7OztJLE87YztjOzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7OztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TztPO08sTTs7Ozs7O08sVTtPLG9DO08sTTs7TTtPO08sTTs7Ozs7Rzs7Ryw2QjtHO0csMEI7RztHLDhCO0c7Ryx1QjtHO0csd0I7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDBCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHlCO0c7OztNLDhCOzs7O1M7Ozs7OztVOzs7Yzs7OztZOzs7Ozs7O1k7Ozs7Ozs7WTs7Ozs7OztZOzs7Ozs7Ozs7OztTOzs7O1UsTTs7WTs7Ozs7O2dCOzs7Ozs7Z0I7OztTOzs7VTs7YTs7Z0IsTzs7Z0IsTzs7Z0IsTzs7Z0IsTzs7O2dCLE87OztZO2dCOzs7Ozs7WTs7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7SSxJO0k7Ozs7MkI7OzJCOzs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7SSxPOzs7Yzs7YTs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7Ozs7UTtROzs7UTtROzs7UTtRO1EsTzs7O2tCOzs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7Ozs7OztRO1E7OztROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7aUI7O1E7O1E7UTtTLE87O1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7OzRCOzs7USxPOzs0Qjs7Ozs7OztRO1E7UyxPOztROzs7UTs7Ozs7Rzs7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztRLE87OztRO1E7Ozs7OztRO1E7OztTOzs7O1U7VTs7OztVO1U7VTs7OztTOzs7UztTO1M7OztROzs7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7OztRLE87OztROzs7Ozs7UTtROzs7UTtROzs7Ozs7UTtROzs7Ozs7UTs7Ozs7O1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7O0s7SztLO0s7OztJLE87OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJO0ksTzs7O2M7YztjO2E7O0c7O0k7O3lCOzsyQjs7O087USxPOztPOzs7OztRO1E7O1E7UyxPOztROztPO1EsTzs7Tzs7OztJOzs7STtJO0ksSTtJO0k7STtJO0k7OztHOztJO0k7STtJO0k7STtHOztJO0k7STtJLEk7STtJO0ksZ0I7OztLO0ssTzs7O0k7Z0I7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7UTs7OztRO1E7UTs7Ozs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7Ozs7UTtRO1E7OztRO1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztRO1E7Ozs7O1M7Uzs7Ozs7O1M7Ozs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7UTs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7STs7O087USxPO087Tzs7VTtPOztRO1E7UTs7Ozs7UTtROzs7Tzs7OztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7VTs7O2E7Ozs7YyxNO2MsUTthO2M7OztlLE87Ozs7OzBCO2EsTzs7O08sTzs7Tzs7O1EsTztRLE87UTtPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRO1U7OzthOzs7O2MsTTtjLFE7YTtjOzs7O2UsTztlLE87Ozs4QzthLE87OztPLE87OztPOzs7USxPO1E7VTs0QztPLE87OztPOzs7O1EsTztRLHNCO1E7VTs7MkI7O1E7TyxPOzs7Tzs7O1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7O1E7OztXOzs7O1ksTztZLE87VyxXOzs7SyxPO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0ssTztLOztROzt5Qjs7SSxPOzs7Ozs7Ozs7OztJOzs7O0ssTTtLLFE7SyxPO0ksTzs7O0k7Ozs7O0ssTTtLLFE7O0s7Ozs7TSxlO007OztTOzJDOzs7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87Ozs7O29DOztROzs7O1MsVTtTLFE7UyxlOztPO1E7OzthOztjLFc7O2EsNEIsTzthLG1COzs7UTtVOzs7YTs7O2MsUTthO2M7Ozs7ZSxPO3lDOzs7YTs7O08sTzs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRO1U7OzJCOztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRO1U7OzJCOztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YTtxQjs7c0M7OztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1E7VTs7MkI7O08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0s7O1E7MEM7SSxPOzs7Ozs7Ozs7OztHO0k7OztRO1MsTztTLE87UTtPOztRLFc7USxPO087OztROzs7O1MsTztTLGU7USxXO087O1EsVztRLE87Tzs7USxXO1Esc0I7Tzs7USxXO1Esc0I7Tzs7Ozs7OztRLFc7USxzQjtPOzs7O1E7Ozs7Ozs7UztTLGU7UztTOztZOzs2Qjs7UyxXO1MsVztRLE87O087O1EsVztRO087OztROzs7UyxPO1E7Tzs7O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Ozs7Ozs7TzsyQixTOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTO1M7UyxXO1MsVztRLE87Tzs7OztROzs7OztTO1MsZTtTLFc7UyxXO1EsTztPOztROzs7OztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7O1M7UyxXO1MsVztRLE87O087OztROzs2QixXOzs7VyxXOzs7VyxXOztXOzs7WSxlO1csVzs7Tzs7USxXO1EsTztPOzs7USxXO1EsTztPOzs7UTtTLE87O1MsZTtRO087O1E7O1MsVzs7O1EsVztPOzs7Ozs7O1E7Ozs7Ozs7UztVOzs7VyxPO1U7a0I7O21DOzs7O1M7OztVLE87VSxPO1MsVztRO1E7UyxPO1MsTztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Tzs7Ozs7Ozs7Ozs7SyxNOztJO0ssTztJO0k7SztPOzs7VTs7VztXLE87VyxlO1UsTzs7Ozs7Uzs7O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STs7O2dCO0ssVztJLE87OztxQixTO0k7Ozt3QjtTO0k7Rzs7STtLO0ssTztLLGU7STtHOztJO0ssUTs7OztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLOzt3Qjt3Qjs7O0s7O0s7O0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztROzs7OztJLE87Rzs7SSxPOzs7YzttQzs7O2U7Ozs7Ozs7Z0I7O2UsTztjOztlOzs7Ozs7Ozs7aUI7OztnQjs7ZSxPO2M7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7OztpQjs7O2tCO2lCLFc7Ozs7ZSxPOzs7Ozs7Ozs7OztnQixnQyxPO2dCLFc7O2UsTzs7Ozs7O2dCOzs7OztnQjs7Ozs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7Ozs7O2dCO2dCLGE7Ozs7O2dCO21DLFM7aUI7O29DOzs7aUI7OztvQjtvQixPO21COzs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7aUI7O29CO3FCLE07b0I7b0IsTzttQjtpQjs7bUM7bUM7Ozs7Z0IsTzs7O2dCOzs7OztjO2E7O0c7O0k7SztPOzs7VTt1RDtVO1M7O0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJOzs7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7STs7Ozs7Ozs7OztJO0s7SyxRO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7Ozs7Ozs7Ozs7STtJLGlCOztLLE87STtHOztJO0ksaUI7Ozs7OztRLE87OztRLE87OztrQjtrQjtpQjs7O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7USxPOzsyQjs7OztrQjs7O29CO29CO21COztrQjs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OztRLE87Ozs7UTs7Vzs7NkIsaUM7O1E7a0I7Ozs7USxPOzs7O1EsTzs7OztrQjs7O29CO29CO21COztrQjs7Ozs7Ozs7OztLOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7OzBCOzs7USxPOzs7STtHOztJOzt1Qjs7STtHO0c7SSxPO0c7O0k7a0I7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7b0IsTzs7OztRLE87OztJO0c7O0k7SSxpQjs7OztRLE87Ozs7USxPOzs7STtHOztJOzs7Ozs7O2dCO0c7O0k7Ozs7Ozs7Z0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7STtJOztJO0ksVztHO3lCLGtDOztJOzs7SztPOzZDO0ksVzs7OztJLE87OztjO2MsTzthOzs7OztJLFEsTTtJOzs7SyxROzs7SSxJLGlDOzs7MkI7OztHOztJOzt1QixPOzs7TyxPO2UsTTs7RztHOztJO0s7O0c7Ozs7Ozs7O1EsSSxJOzs7O29COztROztRLHNDOzs7Ozs7UTs7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJO2lEO0ksVTtJLE07Rzs7STtJOzttQzs7O1E7OztROzs7OztRLE87OytCOzs7O1E7USxPOzsrQjs7OztRLE87OztrQjtrQjs7bUI7OztrQjtpQjs7OztRO1EsTzs7K0I7Ozs7OztRLE87OztrQjtrQjs7bUIsTzs7MEM7Ozs7a0I7aUI7Ozs7OztRO1E7O1c7OEMsa0IsUztRLE87OytCOzs7UTs7O1M7Ozs7a0M7OztHOztJLFk7O0ksTzs7O0k7O0ssTzs2Qzs7O0ksTzswQywwQjs7O0k7OztPO087TztNOztJO0k7Ozs7SyxPOzs7ZTtlLE87O3NDOzs7Ozs7SSxPOzsyQiw0Qjs7Rzs7STs7O0s7SyxPOzhDOzs7STtHOztJO0ksTzs7MkI7O0c7O0k7RztHOztJO0k7O21DOzs7UTs7Ozs7USxPO2dEOzs7UTtrQjs7USxrQixPOztROzsyQjs7O1EsTzs7O2tCO2tCO2tCO2lCOzs7O1EsTztnRDs7O1E7Ozs7O1E7UTs7MkI7Ozs7O1EsTzs7O2tCO21COztpQjs7Ozs7MEI7O1Esb0M7Ozs7Z0I7OztHO3lCOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7OztROzs7O1MsTzs7Ozs7VTs7OztVO1U7OzsrQzs7Ozs7OztRO1EsTzs7aUMsa0IseUI7Ozs7UTtROzs7UTtROzs7USxPOzsrQjs7OztRO1E7OytCOzs7UTs7O1c7VztXO1U7O1E7OztRO1E7OztRO1E7Ozs7O1EsTzs7K0I7Ozs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7OztRLE87O2lDLGtCLHlCOzs7UTs7OztTO1M7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1EsTzs7K0I7Ozs7OztRO1MsTzs7UTs7USxxQzs7Ozs7UTs7Ozs7Uzs7UTs7Vzs7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOzhCOztJO3VCOztJO0k7Rzs7SSxPOzs7Yzs7OztlO2M7Yzs7O0c7O0k7SztPOzt5Qiw2Qjs7O0s7O0ssdUM7O0s7dUM7SztJOzs7SztLLE87O0k7STtHOztJOztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7OztRO1EsTzs7O2tCOzt3Qzs7eUM7O3lDOzsyQzs7O3FCOzsyQzs7aUI7Ozs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087O1E7VTs7O2E7eUI7O2EsTztZOztRLE87USxNO087O3VCLGlDOztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7O087O3VCOztPOzs7Tzs7eUI7O087O087O3lCLHFCOztPLGtCO3lDO087O0k7O29COztJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs7STs7O0k7STs7Ozs7UTtRLE87OytCOzs7O1E7USxPOzs7Ozs7eUM7OzJDOzs2Qzs7O3FCO3FCOztxQjsrQzs7Ozs7O1E7Ozs7MEI7O1Esb0M7Ozs7O0c7NkM7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOzs7Tzs7dUI7O087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtVOzs7YTt5Qjs7YSxPO1k7O1EsTztRLE07Tzs7cUIsbUM7O087O08sb0I7eUM7Tzs7MEI7OztPOzt3Qjs7Tzs7O087O3lCOztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USxPOzsrQjs7O1E7Ozs7UztRLE87OytCOzs7O1E7UTs7Ozs7O1E7USxPOztpQyxrQix5Qjs7O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1EsbUM7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0k7O0ssTzs7O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7Ozs7Ozs7O1M7Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7RztJOzs7Ozs7Ozs7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7Ozs7Ozs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7bUIsTTtLOzs7OztNLEk7SyxZOzs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7O00sSTtLLFkseUI7Ozs7OztJO0k7aUI7Szs7Ozs7TSxJO0s7O007OztlOztrQjs7Z0Msa0M7ZSxPOzs7Ozs7Rzs7Ozs7TTs7OztPLFM7Tzs7Ozs7O29COzs7Ozs7O0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7Szs7TSxPOzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7OztVLE87Ozs7O1U7Ozs7O1c7VSxVOzs7Ozs7OztVOzs7OztXO1UsVTs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztVLGlCOzs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7O1MsTzs7Ozs7O1ksa0M7WSxpQjs7Ozs7Ozs7WSxvQztZLGM7Ozs7Ozs7Ozs7Ozs7O1ksa0M7WSxjOzs7Ozs7TTs7Szs7Rzs7STs7YTs7SSxPO0c7Ozs7OztRLHFCLE07USxPOztRLHNDO2dCOzs7Ozs7Z0MscUM7O0k7STs7OzZCLE87O1E7OztTO1M7USxPOzs7RzswQixTOztJLE8sMEI7Rzs7Ozs7Ozs2QixvQjs7OztROzs7UztTLE07UyxNO1M7USxPOzs7O1M7Ozs7Ozs7SztLLEc7TTtPLE07YTs7Z0I7SztLLE87Ozs7Ozs7OzZCLE87Ozs7O1EsTzs7Ozs7O0ssTzs7OztJO0k7Ozs2Qjs7USxNOzs7Rzs7STs7OzsyQjs7OztROzs7Ozs7Szs7OztHOztJO0s7Szs7OzBCOztTLDhCOzs7Ozs7STtJO0c7O0k7STs7Ozs7OEIsTzs7Ozs7Ozs7Ozs7OztLOztHO3FDLDBCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3lCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0k7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O0k7TSx3Qyx1QjtLO0ksTTtHOztJO0s7SyxNO0s7SyxNO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOzJCLG9DO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SztLLG1COztHOztJOztPLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O0c7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7Ozs7Ozs7Ozs7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7Ozs2Qzs2QzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4QjtzQixXLDhCO3VCLFcsOEI7NEIsVyw4Qjs7SSxXO0c7d0IsVyw4QjsyQixXLDhCOztJOzs7SyxNO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7OztVO1M7OztLO00sVTtNLE87O0s7O1Esa0IsTTtRLE87OztROzs7Uzs7WTs7O2M7OztlOzs7Yzs7O1k7VztTOzs7Uzs7WSxtQjtZO2EsTztZO1ksTzs7Ozs7O1c7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7WSxPOzs7c0IsTzs7cUI7VztRLE87a0I7a0I7Ozs7Ozs7Ozs7USxPOzs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzt5QixPOzs7O2M7YztHOztJO0k7OztLOztHOztJOztLLFE7STs7RyxnQzsyQixpQztrQyxxQzswQiw2QjswQiwyQjtzQiwyQjtzQiwwQjs7STtrQzt1Qjs7SSxJLFUsa0M7OzsyQjs7O0c7NkIsZ0M7O0k7OztLOztJO0c7Rzs7O0s7Szs7OzhCLE87O1M7OztVO1M7O1Msc0M7Uzs7O1M7O1U7Ozs7O0k7STtHOztJO3VDOzs7Rzs7STtHOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7STtJLE87Rzs7SSxJLGlCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLHdCO0ksTztHOztJO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7dUIsbUM7NEIseUI7O0k7SSxzQjtHO0c7OztJO0k7Ozs7Ozs7Ozs7STtJO0c7O0ksSSxnQjtJO0c7O0k7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCOzs7OztJO0s7SztLO0s7STs7O0ssSSxrQjtJLEksa0I7STs7O0ssSSxrQjtJLE87OztjO2M7YTs7Ozs7Ozs7O0c7MEIsa0Q7eUIscUIsMkI7O0ksSSxpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7OztHO3FDLG1CLFU7RyxZLHlDOztJOzs7O0c7O0k7STs7Ozs7Ozs7Szs7Rzs7STs7RztpQyxjOzs7Ozs7Ozs7Ozs7OzZCLGM7Ozs7Ozs7Ozs7Uzs7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00saUI7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sVzs7Ozs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7SSxPOzBDLDBCO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0k7RztnQyxzQzs7STs7MkM7OytDOzs4Qzs7OEM7Ozs7Ozs7Ozs7O0c7RztJLGdCOzs7Ozs7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7Szs7Ozs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7TSxxQjs7Ozs7O0ksTzs7O2M7Ozs7Ozs7OztnQzs7O2M7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHFCO0cscUI7RywyQjs7SSxPOzs0QjtHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLDBCO3VCLDBCOzRCLDBCOztJLE87OzRCO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxPOzs0QjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXO0ksTzthOzs7Z0I7OztpQixPO2dCLE8sa0I7ZTs7RztHO0k7OztRLE07TztJOzs7Ozs7Ozs7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STtrRDtJO0c7O0k7MkU7STtHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxRO1U7SSxJLEssNEIsUTs7OzswQjs7UTs7O1EsTTs7STtHOzBCLE8sbUM7O0k7Rzs7SSxXO0ksVztJLFc7SSxPOzs7YyxrQixROzhEO2M7YTs7Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTs7STtHOztJLFk7Ozs7OztRLGdCLG1COzs7NEI7OztJO0c7O0k7Z0I7SSxtQixVOzs7SztNLFk7TSxPOzs7STtHOztJO0ssTztLO087OztVLG1CLFE7Ozs7WSxPOzs7NEMsTzs7VTtTOzs7SyxPO0ssUTs7Ozs7Ozs7USxNOztJO0ssTztLO087OztVO1UsTztTOztrQjs7STtHOztJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7O08sTzs7O2lCO2lCLE87Z0I7OztlLE07O0c7O0kseUMsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7O0k7O0ssTzs7O0ksTzswQyxPLG9COzs7STs7SyxXOzs7STtZOzs7ZTs7OztnQixPO2U7Yzs7OztJLDhCOzs7Tzs7O08sTzs7NEIsTyxvQjs7OztPLE87OztpQjtpQixPO2dCOzs7OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksaUIsTTtJO0k7SSxrQixPO0k7O0c7O0ksa0IsTTtJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxVO087TyxPOzs7TztPO087OztVO1UsTztTOztPLE87OztpQjtpQixPO2dCOzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztRLG9CLE07USxPOzs7a0I7a0IsTztpQjs7Ozs7OztLLE87O0k7Rzt1QixTOztJO0ssUTs7Ozs7SztPOzs7VSxpQyxROzs7O1c7O1ksTTtrQjs7Vzs7OztZO1k7WSxPO2tCO1U7Uzs7STs7Ozs7MkI7OztJO0ksTztHOzs7OztrQzs7Ozs7UTs7Ozs7UyxNLHFDO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1EsZ0I7O1Esb0IsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7UTs7Z0I7OzttQjttQixjO2tCOzs7Ozs7SSxXOztJLE87Rzs7SSxJLGdCLE07STs7O087TyxPO007O0k7RztHOzs7O3FDOzs7OztNLFUsNkI7Ozs7Ozs7RyxXOztJO3NDLHNCOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7OzsyQjs7O0c7Rzs7SSxZOzs7O0ksZ0Q7STtHOztJLDhCOztJO0c7O0ksOEI7OztLLE87OztJLE87Rzs7STs7aUI7O0s7TTswQztLOzs7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7STs7eUIsa0Isc0I7O0ksTzs7Z0Msa0Isc0I7O0c7O0ksTztHOztJLFk7c0U7SSxNO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7O2dCO2dCO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUzs7Ozs7Ozs7O0k7Rzs7STtjO2M7O2dCO2dCO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7Szs7O0c7O0ksVTtJO21CO0c7O0k7Ozs7SyxPOztJO0c7OztLOzs7Ozs7O29COzs7Ozs7O3NCOzs7b0I7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7UyxPOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07Ozs7USxPOzs7OztrQjs7Ozs7USxPOzswQzs7O1EsbUI7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7OztrQjs7OzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7Ozs7O2dCOzs7Ozs7O1EsTzs7OztzQzs7OztRO1M7O1UsVzs7O2U7O1M7VTs7VSxjOztXLG9CLFU7Ozs7OztVO1c7WTs7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7OztZLFE7O1ksK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2UsVzs7O2U7O2tCOzs7ZSxXOzs7O2M7Ozs7O3VCOztXOzs7Vzs7Ozt3QjtTOzs7OztVLE87Ozs7MkIsTzs7O1EsTzs7Ozs7a0I7Ozs7OztTLE87Ozs7SyxPOzs7O21DOzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7bUI7O3NCLE87O0s7Szs7OztxQixPLHlDO3dCLE8sNEM7RyxnQztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kscUI7SSxPO0c7cUIsTyx5QztHLDZCOztJLDRCOzs7SyxPOzs7SSxPO0c7O0k7Ozs7USxPOzs7Ozs7c0M7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SztLO0s7SztLO0ssTzs7STs7O0k7O0ssTzs7Ozs7ZTs7OztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7UTtRO1E7USxPOzs7USxPOzs7OztrQjs7OzswQjs7dUIsTzs7MEM7O1E7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtROzs7Vzs7OztXLE87O1U7O1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJLE87Ozs7Ozs7MkI7O2U7ZTs7Ozs7Rzs7Ozs7d0I7Ozs7TSxPOzs7Ozs7OztnQjs7Ozs7Szs7a0I7Ozs7Ozs7SztlOzs7aUI7aUI7STtJLE87Ozs7Ozs7O2M7Ozs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Yzs7Ozs7Ozs7OztLO0ksMEI7Ozs7Ozs7OztJLE87OztJLFU7dUIsTywwQztJLE87Ozs7O2M7Ozs7O0k7Ozs7Ozs7VyxVOztXLE87Ozs7O3FCOzs7O08sTzs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7TyxPOzs7Ozs7O2lCOzs7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7O0c7STs7STs7O1EsTztPOztJOzt1QixPLCtDOztJOzs7USxPO087O0k7OztRLE87Tzs7STs7O1EsTztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEO0c7O0k7OztNLG9DOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7Ozs7O2dCLE87ZTs7Ozs7aUI7Ozs7Ozs7c0I7Ozs7Ozs7VyxPOzs7OztxQjs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1csTzs7O3FCO3FCLE87Ozs7Ozs7O29COztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXOzs7Ozs7cUI7Ozs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQixPOzs7Ozs0Qjs7O2lCO2MsTzs7Ozs7Ozs7O2MsTzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1c7VyxPOzs7cUIsTztvQjs7O08sTzs7Ozs7Ozs7Ozs7O2lCLE87OzsyQixPOzBCO2dCOzs7OztJOzs7OztJOztlOzs7Ozs7aUI7Ozs7ZTs7STtjOzs7Ozs7Z0I7Ozs7OztjOzs7Ozs7O0c7OztLOzs7O00sTzs7Ozs7Z0I7Ozs7O3dCLE8sMEM7Ozs0Qjs7Ozs7O21DOzs7O0k7dUIsTywwQztJO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOzs7Szs7O007OztLOzs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNOzs7Z0I7Ozs7OztJOztLOzs7O0s7OztjOzs7O0k7OztPLE87Ozs7Ozs7Ozs7O2lCOzs7OztRLE87NkIsTzs7USxPO08sWTs7USxPOztPLE87OztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7STtZOzs7OztHOytCLG9DOztJO0k7WTs7Ozs7Rzs7STs7OztLLE87STtHO2lDLHNDOztJLDhCLE87STtHO21DLHdDOzBCLHNDO2dDLDZDOztJO2dDO2tDO0k7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7UztpQixPOzs7O0c7O0ksSSxVOzs7Ozs7Uzs7dUM7aUIsTzs7OztxQixPOztJO0c7O0ksSSxVOzs7Ozs7UTs7O1E7O1EsTzs7O1EsVTs7Ozs7Ozs4Qjs7UTs7OztLLE07O0k7Rzs7SSxJLFU7Ozs0Qjs7OztHO0c7SSxTOzs7Ozs7OztvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7O0ksVztJO0s7OztRLHVDOztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVO1k7OzZCOzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7Ozs7ZTs7O2tCOzs7cUIsTzs7b0I7Ozs7bUI7c0I7b0IsTTs7bUIsVzs7OzsyQzs7dUI7O3dCLE87d0IsTTt1Qjt1QixJLE8sNEI7MEI7d0IsTTs7dUIsWTs7O3dCOzs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7OzswQzs7MEIsTTs7Ozs7d0IsWTs7Ozs7MEIsSzsyQjs0QixVOzs7Ozs7OEI7Ozs7Ozs7d0I7Ozs7K0I7O3VCO3VCOzttQjtvQixPO29CLEk7bUI7bUIsYTttQjttQjtrQjtrQjtpQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZO2M7OytCOzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTtXO2E7OzhCOzs7OztXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7O1U7WTs7O2U7ZTtjOzs7Ozs7O1E7Ozt5Qjs7O0k7STtHOztJLE87O2tDLGlDO0c7O0k7O0s7SztLO0k7Rzs7STs7SzthOzs4Qjs7OztJO1k7OzZCOzs7O0k7Ozs7SztLOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7NkI7Ozs7Ozs7Ozs7WTs7O2U7O2dCO2dCO2dCO2tCOzttQzs7Z0I7ZTs7Ozs7O0k7WTs7NkI7Ozs7Ozs7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7STs7Tzs7OztRO1E7VTs7MkI7O1E7Tzs7Tzs7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtZOztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJLEksOEI7STtZOzs2Qjs7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOztJOztLO0s7O0s7SztLO0k7WTs7NkI7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7SSxPOztrQywrQjtHOztJOztLO0s7O0k7Rzs7SSxPOzs7YzthO0c7O0k7O0s7OztLO087O3dCOztLO0s7Tzs7d0I7O0k7Rzs7SSxPOzs7YzthO0c7O0ksTzs7O2MsVTtjLE87YTs7O0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7SSxrQixzQjtJO1k7OzRCOzs7OztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxNO1ksTTtXLE87VTs7Ozs7O1MsVTtTLE87UTs7Ozs7OztROzs7OztTLE87Uzs7Ozs7UTs7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxPO1M7Ozs7O1E7Ozs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7SSxPOzs7YztzQjs7O3lCOzs7O2E7OztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Ozs7OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7Rzs7SSxvQjt3QjtJOzs7Ozs7O0s7O3VCO0s7O3VCO0k7OztlOztnQjs7O2UsTzs7O3lCOzBCOzRCOzs0Qzs7MEI7eUI7d0I7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOzZCLE8sdUM7O0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOzs7Ozs7Ozs7OztJO0s7OztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzRDLFc7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTzs7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7SSwwQix1QjtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O2E7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2U7Yzs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7RztJO007O3FCLFcsK0I7O0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsVzs7OztNLE87O0k7STtJOzs7O0ksTztHOztJOzs7OztZLHdDLFk7STtLOztNLDRCO007TSxNO3FCOzs7STtHOztJO0s7OztJLHlDO0k7O0ssOEI7SyxjO0ssUTtLLE07OztLLE07Szs7Ozs7OztROzs7Ozs7Ozs7STs7OztHOztJOzs7OztJO0s7Ozs7Ozs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7Ozs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7O1U7Ozs7OztLOztHOztJOztLOzs7TTtNO007Szs7O1E7USxPOzs7Tzs7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0s7TTtNO007O0s7Szs7TSxNO0ssRztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7Tyx5QixNO08sTzs7Tzs7O1EsTTtPLE87OztPLDJCLE07TyxPOzs7Rzs7O00sdUI7O00sVztLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzt1QixNLGdEO0c7STs7O1E7O1M7VTtXLE07VyxNOzs7Ozs7OztTO1U7OzttQjs7O1UseUI7O1E7TztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SztLO0ksVztHOztJOzs7Ozs7STs7O0k7O0k7Rzs7STs7SztPOztnQyxzQzs7O0ssTTtJLE87Ozs7d0I7Ozs7OztLOzs7OztJLEksVTs7OzJCOzs7Yzs7STs7O0k7OztLLFc7O0s7SyxPOztJLE87RztnQyxrQjs2QywrQjs7STtLLE07SztPOzs7eUIsTyxpQjtJO0k7Rzs7O0ksTzs7O2MsVTs7YyxPO2E7Ozs7O0k7Ozs7SztLO0s7SztJLHNCO0k7OztPLDhCOzs7O007OztLLEk7Ozs7O007OztJO0k7Rzs7STtJLHVCLE07SSxJLFU7Ozs7NkIsTTtLLFk7OztNO007TyxLO087TTs7O007SyxNOztjLE07OztLLE07STtHOztJO0ssVTtLLFc7STtJO0ssTTtLO0ssSztJO0k7Rzs7STtHOztJOztLLFU7O0s7SyxVO0s7TSxPOzs7Z0I7aUI7aUI7aUI7Ozs7O2tCO2tCLE87OztrQjs7bUI7cUI7bUI7a0IsTzs7Ozs7aUI7O29COzs7Ozs7cUIsTTs7dUI7Ozs7Ozs7Ozs7O29CLE07Ozs7Ozt1Qjs7aUI7aUIsTzs7ZTs7Ozs7STtHOztJO0ksSSxXOzs7O00sTTs7O0ksVyxNOztJO0c7O0k7OztLLE07SSxPOzs7O0ksTzs7OztJLE87Ozs7SSxPOzs7STs7Ozs7SyxRO0s7STtHOztJO0ksTzs7O2lDLE8sK0I7O2M7Ozs7ZTtpQjs7Ozs7b0IsTzttQjtlOzs7Ozs7Ozs7ZTtjOzs7OztjOzs7aUI7OztnQjs7YztjO2E7Rzs7STtLOztROzs7Ozs7UyxNO1EsTzs7Ozs7Ozs7Ozs7UTs7Ozs7UyxNO1MsTTtRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7O007RztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7Ozs7OztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07Ozs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNO087Uzs7O1k7Ozs7O2lCLFcsTzs7aUIsTztnQjs7O1k7Vzs7Z0I7Ozs7OztJO0ssTztLO087O3lCLHFCLDBCOztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7UTs7O1c7VyxjO1U7O0k7SyxPO0s7Tzs7O1U7VTtTOztJLE87Rzs7STtLLE87SztPO1M7OzJCLG1CLGU7OztLO21DOzs7TSxPOzs7K0I7Ozs7SztJO0ksTztHOztJO0k7O0s7TTtROzs7VyxPLGM7VTs7O007bUM7Ozs7TTs7UztXOzs7YyxPO3VEO2E7Ozs7Ozs7Ozs7OztVO1UsTyw4QjtTOzs7Ozs7Rzs7STtJOztLOzswQixPLHNDOzs7bUM7Ozs7TTs7O1M7VSxhO1UsMkI7UyxPLGM7UTs7Ozs7Ozs7OztVO1UsTyw0QjtTOzs7OztHOztJO0k7SztNO1E7O21DLG9COzs7TTs7Ozs7O0ksTzs7O2MsSSx1QixjOzs7c0M7OzthOztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQzs7STs7Ozs7Ozs7RztHO0k7OztRLE07Tzs7STs7O1EsTTtPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLO007UTs7bUMsb0I7OztNOzs7Ozs7STtLO087OztVLEk7Ozs7O1k7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTOztLLE87SztJLE87Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7d0IsaUQ7O0k7SyxtQixPO0ssTzs7O0ksTzs7RztJOztpQyx1QjtnQyxpQztxQix1Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7SztPOzs7VSw4Qjs7VTtTOzs7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjs7Ozs7SSxPO0c7O0k7Rzs7SSxPO0c7O0k7STtLO0c7O0ksTzs7Rzs7SSxPO0c7O0ksTztHOztJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOztlLE07O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPO2UsTTs7Rzs7STtLO0ssTTtJLE87Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7Ozs7SyxNO0k7O0ssTztLO08sMkM7Szs7O0s7Szs7SSxNOzs7SSxJLFc7Ozs7Ozs0Qjs7UTs7O1M7USxPOztRLE07OztRO1M7O1U7VTs7VTs7VzthOzs4QiwrQjs7VTs7UyxNOzs7Ozs7Vzs7O1k7WSxRO1ksTzs7VyxNO21CLE07O1E7OztJO0kscUI7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTzs7OztPOzs7UTtRLFU7O2UsTTs7Rzs7SSxPOzs7Yzs7aUI7O2tCLE07O2lCOztpQjs7Ozs7aUI7aUIsTzs7aUIsSTs7O2tCOzt1QjttQixXO21CLE87Ozs7O2tCLFc7a0IsTzs7O2tCLE07OztpQjs7aUI7O2lCOztpQjt5Qjs7OztHOztJLFksTzs7STs7RztJLG1COzs7OzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7TztlLE07Ozs7STs7O00sc0I7OztPO1EsTztRLE87TztRO1MsTztvQjs7O2dCOzs7Ozs7O0s7Ozs7OztNOztxQzs7Ozs7TTs7OztHOztJLEksK0M7Ozs7O00sTTs7Szs7Rzs7STs7Tzs7Tyw4Qjs7O08sTTs7Tzs7O1E7OztHOztJO0k7Szs7O00sSTs7Ozs7Ozs7Ozs7Szs7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7TztlLE07O0c7O0k7Rzs7SSxJLDZCOzs7O0s7O1UsaUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7UTs7O0c7O0ksVztJO0ssbUI7Szs7TTs7Ozs7O0s7TTtPLE87TyxPOzs7Ozs7TTtPLEs7TyxPO007OztLO0s7STtJLEksZ0I7STtLOzs7Ozs7Ozs7Ozs7c0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO0ksd0MsTyxpQjtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLLG9DLHVCOzs7TyxZOzs7OztPLFk7Tzs0Qjs7Tzs7d0IsaUQ7O08sTzs7O2lCO2dCOztNOzs7SztLOzs7ZTtlO2dCO2lCLFU7aUI7bUI7NEI7O2dCOztlLG1COztlO2M7O0c7O0k7Ozs7Rzs7SSxPOzs7K0IsTyxxQzs7Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7TyxPOzs7aUI7aUIsK0Q7aUI7Z0I7OztPOzs7UTsrQixnQjtRO1U7OzthOzs7TyxPO2U7O0c7OzBCLGdCOzs7Ozs7eUM7OztPOzs7UTtRO1U7OzthOzs7ZTs7OztJLE8sMkM7Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO087OztVO1U7O2E7OztjLFM7Yzs7OzswQjs7Ozs7YTtjLE87YyxZO2M7YztjLE87b0I7OzthOzs7YyxhO2MsTzthOzs7Ozs7Ozs7aUI7O2tCLE87a0I7b0I7c0Q7aUI7OztvQjs7bUI7Ozs7O2lCOztrQjtvQjtrQjtvQjtzRDtpQjs7O29CO3FCLFk7cUI7OzttQjs7OzthO2MsTztjLFk7YztjO2MsTztvQjthOztjO2dDOzs7Yzs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7OztjLFE7YyxRO2M7YyxPO2MsWTtjO2M7K0I7OzthOzs7O2MsVztjLE87YTs7O2UsTTs7O3dCOzs7O2E7YyxTO2MsTztjLFE7Yzs7Ozs7Ozs7OztjO2M7YyxPO29COzs7OzthOzs7YyxXO2M7Z0I7YyxPO2MsVTtjO2M7YyxPO29COzs7O2E7OztjLFM7YztjLE87YyxVO2M7YztjLE87b0I7OzthOzs7YyxTO2MsTztjLFU7YztjO2MsTztvQjs7O1M7O087O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0s7SztrRCxzQjtLO0s7Ozs7cUI7OEI7OztNLE87OztnQjs7Z0IsVztnQixPO2U7Ozs7OztHOztJOztLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLGdEOzs7O2lCLDBCO087Ozs7Ozs7Ozs7Rzs7STtJLGlCO0k7STs7O087TTs7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0s7Ozs7bUIsZTs7SSxJLHFCOzs7Ozs7OztROztTLFM7UztXOzs7YztjOzs7OztpQjs7O2lDOzs7aUI7a0I7bUIsVTttQjttQjttQjttQjttQjttQixXOzttQjttQjs7Ozs7c0I7Ozs7Ozs7Ozs7OzttQjttQjs7OzttQzs0Qzs7O29CLE87Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7OzhCLE87Ozt3Qzs7a0Q7O3VDOzs2Qjs7Ozs7Ozs7OztnQjtjOytCO2M7Ozs7Ozs7Ozs7ZTtjOzs7Ozs7Ozs7Ozs7O2E7Ozs7OztZOzhDOzs7O1E7O1M7VztTO1c7OztjO2M7Ozs7O2lCOzs7aUM7OztpQjtrQjttQixVO21CO21CO21CO21CO21CO3lCOzttQjttQjs7OztvQzttQjtvQjtvQix1Qjs7O29CLE87Ozs4Qjs4QixPOzs7d0M7O2tEOzt1Qzs7NkI7Ozs7Ozs7Ozs7Z0I7YztjO2M7ZSxZOzs7Ozs7Ozs7OztlO2M7Ozs7Ozs7Ozs7Ozs7YTs7O1M7O1k7OEM7Ozs7O0k7STtJOzs7Szs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SztJO0k7STs7Ozs7Tzs7O3VCOzs7TztROztTLGU7UztTO1MsVzs7UztTOzs7OzBCO1MsTzs7O21CO21CLE87Ozs2Qjs7dUM7Ozs0Qjs7a0I7Ozs7OztPO007STs7O0s7Ozs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLHVDO0k7OztPO007O0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7Ozs7STtJO0s7OztLOzs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7Ozs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJOzs7STtLO0ssUTtLOzs7STtHOztJO0ksNEI7Rzs7SSxZO0k7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtHOztJO0k7Rzs7SSxvQixPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0I7SSxPO0c7O0k7SyxLO0s7SzswQztJO0c7O0k7SyxLO0ssZ0M7STtHOztJO0ssSztLO0ssUTtLO0k7Rzs7SSxTO0k7OztHOztJO0ssSztLLFE7Syw2QjtJO0c7O0k7SyxLO0s7SyxvQztJO0c7O0k7SyxLO0ssK0I7STtHOztJO0c7Ozs7O0ssVzs7Ozs7O1Msa0I7Uzs7VSxRO1MsVztRO0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7O0k7SyxPO0s7OztJO0c7O0k7Szs7O0k7RzsrRTtHOzs7O0s7O0c7RztJOztHO0c7STs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7O0c7STs7O0k7STtHOztJO0ssSzs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SyxLOzs7Szs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSTs7OzRCOzs7cUI7O3VCOzs7Szs7Ozs0QixPLGlCLHFCOzs7SztJOztLOzs7OzRCLE8saUIscUI7OztLO0k7STtLO3lCLHlCO0ssMkIsd0I7Syx5QiwwQjtLLHdCLHlCO0ssMkIseUI7SywwQiwwQjtLLDBCLHlCO0ssMEIsMEI7STs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7TSxNOzBCOztLLEcsOEI7SyxNO0k7SSxJOzs7NEI7Ozs7Szs7O00sRzs7TyxXOzs7SyxNO0k7O0s7OztNLEc7O08sVzs7O0ssTTtJO0k7Ozs7SztLO0s7SztLO0s7SztJOzs7Ozs7Ozs7Ozs7OztHOztJLHFCOztLLE07STtHOztJOzs7O0s7O2U7ZTtLLGM7SyxpQjtLLGlCOzs7O0s7TTs7O1M7O3NDOztRO0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztpQjs7Ozs7OztXOzs7Ozs7UTtLOztJOzs7STtLO087SyxLO0s7O0ssTTs7STtHOztJLEcsZ0Q7SSxjO0ksTztHOztJO0ssTztLLE87SztPLFc7SSxPO0c7O0k7STtJO0ssTztLLE87SyxPO0s7Tzs7UztLLFc7Szs7STtJO0c7O0k7MkIsVztHOzsrQiw0QztJO0c7Rzs7O0k7TTs7Ozs7VTs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOztJLE87Ozs7NkIsTywwQjtHOztJLGtCO0ksTTtHOztJLFU7O0k7SSxPOzs7YztlOzs7b0I7ZSxPO2UsTztjLE87YTs7Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVO0ksVztJLE87Rzs7SSxVO0ksb0I7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7SSxVOzs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJOzs7TSxZOzs7Tzs7O1EsSSxXOzs7Ozs7UTs7Tzs7Tzs7Ozs7TSxNOzs7O0k7Rzs7SSxVO0ksYztJOzs7SztNLFc7Ozs7Ozs7Szs7O0c7O0k7Rzs7STs7O1MsSTs7O007TyxJLFc7Ozs7Ozs7Ozs7Ozs7STtLLGtCOztLOzs7Ozs7Szs7SSxJOzs7O007OztJO0k7Rzs7STs7Yzs7O2dCOztpQjtpQixPO2dCO2dCO2U7OztHOztJOztPOztROzs7Tzs7Tzs7O1E7OztPOztPO1E7Ozs7UTtVOztPOztHOztJO0s7OztLOzs7O007O0s7OztrQjs7STtHOztJOzs7Szs7O007OztNOzs7O0k7SztPOzs7VTtVO1M7O0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCOztpQjs7O21COztvQjtvQixPO21CO21CO2tCOzs7Ozs7Ozs7O1EsSSxhOzs7Ozs7O1MsTzs7OztvQjttQjttQjtrQjs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7UyxPOzs7O29CO21CO21CO2tCOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFc7SSxtQjtJOztLLFE7O0ssTzs7STtZLDBDLGlCO0ksTyxXO0c7c0Msa0M7cUMsa0M7dUMsa0M7d0Msa0M7c0Msa0M7dUMsa0M7Ozs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Ozs7STs7OztJLGlCO0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7OztJOzs7O0ksSTs7Ozs7OztPOzs7OztJOzs7O0ksc0I7Ozs7SSxJOzs7NEI7Ozs7O0ssTzs7OztnQjtlO2U7Yzs7O0k7Ozs7SSxJOzs7Ozs7O087Ozs7O0k7Ozs7SSxzQjs7OztJLEk7Ozs0Qjs7Ozs7SyxPOzs7O2dCO2U7ZTtjOzs7STs7OztJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STs7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7Szs7O2U7ZSxPO2M7Yzs7STs7Szs7O0s7eUI7SSxvQixPO0ksTzs7O2MsTyw0QjthOzs7Rzs7STtLOzs7TTswQjtLLG9CLE87SyxPOzs7ZSxZOztlLE87Yzs7OztJLFk7NEIsTyx5Qjs7STtLO007UTs7O1cscUIsTztVOzs7TTtnQjtLOzs7O007UTtVOzsyQix3Qzs7Ozs7O0c7O0k7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7OztJOztLOzs7Szt5Qjs7SSxPOzs7YyxTO2MsTzthOzs7Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsd0M7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7OztLO087OztVLEksSztVLFc7Uzs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPOztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssVztLLE87STtJOzs7TyxPOytDLHFCOzs7TyxPOytDLDRCO2U7O0c7O0ksTzs7OztjLFc7YyxPO2E7Rzs7STsrQyxzQjs7Rzs7STsrQyxzQjs7Rzs7STs4QyxzQjs7OztHOztJLDZDLHlCOztHOztJLHVDLHlCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7Tzs7O1EsTztPO087a0I7cUM7TyxPOzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087TyxJOzs7O1M7OztPLFc7TyxPOzs7Ozs7OztPOztRLE87TztPLEk7Ozs7Uzs7O08sVztPLE87Ozs7Ozs7O087O1EsTztPO08sSTs7OztTOzs7TyxXO08sTzs7Ozs7Ozs7Tzs7USxPO087Tzs7O087Tzs7O087Tzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O087O1EsTztPLE87O087O1EsTztPLE87Ozs7TztRO1EsTztRLE87TyxPOzs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTzs7UyxPO1E7OztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O08sTzs7O087OztHOzs7TSx1QjtNOztPO087Uzs7WTtNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJLE87OztjOztpQzs7Ozs7a0IsbUI7Ozs7Yzs7O0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJOzswQixPLHlDOztJO0ssTTtJO0c7O0k7SyxNO0k7Rzs7STtLLE07STtHOzBDOztJO0ssTTtJO0c7O0ksTzs7K0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STtHOztJLDhCOzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TyxrQztPOzs7O2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7O1EsTzs7O2tCO2tCLE87aUI7Ozs7USxPOzs0QixPOzs0QixPOzs0QixPOzs7UTtRLE87O0k7OztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7O1E7Z0I7OzttQjttQixtQjtrQjs7Ozs7USxXOzt5QixXOztzQixXOzt3QixZOztRLHlDLE07USxZOztJO0c7O0k7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7O1MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O0ksTzs7NkIsbUIsVTs7Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtJOzttQixxQzs7O0c7O0k7SSxPO0c7O0k7RzsrQixPLHFDOztJOzs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1E7Ozs7O1M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7O0k7STs7d0I7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7O08sTTs7ZSxNOzs7OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TTs7Ozs7TSxJO007TztxQjtPOzs7O1E7O1E7Ozs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztVLFU7VSxPO1M7TTtNOzs7TyxVOztNOztTOzs7O0s7Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZLE87O0ksTzs7O0k7STs7OztRLE87Ozs7O1EsTzs7Ozs7Ozs7Ozs7OztLLE87O0c7O0ksTztHOztJOztxQixPOztxQixPOzs7O1EsTzs7TyxPOzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxlO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0ksTzs7O2M7O2E7O0c7O0k7STs7Rzs7STtJLE87OztjO2M7YyxPO2E7O0c7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTs7O1E7UTtRLE87OztrQjtrQjs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7OztXLE87OztxQixPO29CO1U7Ozs7Ozs7UTtROzs7UTs7Ozs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNOztNOzs7O1M7VTs7O2E7YTthOzs7YTthOzs7YTthOztTO1M7Ozs7O21DOzs7O1EsTzs7O1E7Ozs7OztRLE87OztRO1E7OztRO1E7a0I7O1E7UTs7OztTO1c7OztjOztlLE87ZSxPO2MsTzthOztTLE87UTtROzs7UTtROzs7UTtROzs7UTtROzs0Qjs7NEI7OzRCOzs7UTtROzs7OztHOztJOzs7TztPO087OztPO087TztPOzs7TztPO087OztPO087O0c7O0k7STs7SztLO0ssSSxtQjs7TTs7TTs7O1M7UztROzs7O21DOzs7O1EsTzs7O1EsTzs7O1E7O1E7OztXOzs7Ozs7Ozs7UTtROzs7Ozs7OztTOztTO1M7O3VCLGdEOztTOzs7UTs7Ozs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtROztTOztTOztTOzs7OytCOztZO1k7OztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7Vzs7Ozs7O1c7Ozs7OztXOzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7OztRO1E7OztRO1E7Ozs7OztRO1E7Ozs7OzRCOzs7UTs7Ozs7O1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7Ozs7Rzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7STtJOzs7O0s7Szs7O0k7STtJO0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7OztROzs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7Ozs7UTtRO1E7OztROztROzs7Vzs7OztROzs7Ozs7OztTO1M7Uzs7Ozs7OztROzs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7Ozs7Uzs7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOztPOzs7TztPO087OztPO087OztPO087O3lCOztHOztJO0k7STs7Rzs7STtJO0k7O0c7O0ksWTs7STs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7OztTO1M7UztVLE87O1M7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7aUI7Ozs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7O2dCOztrQyxtQixVOzs7O087Tzs7OztnQjs7a0MsbUIsVTs7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7O0k7SyxPOztJOzs7STs7O0k7O2MseUI7O0s7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7O0k7O08sTTs7TyxNO2UsTTs7RzswQyxrQztpQywwQztHOzs7eUIsb0I7NkIsaUM7O0ksTTtHOztJLE07RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLHNCOztNO08sTztNO007TyxhO08sVztNO2M7O0s7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7SyxROzs7cUI7Ozs7Rzs7STs7Rzs0QixPLHdDOztJO0k7STtvQyxPLHNCO0k7Rzs7SSwrQztHOztJO0ksSTtJO0k7Rzs7SSwrQztHOztJO0c7O0k7Rzs7STtJO0k7STtHOztJLHFDO0c7O0k7OztJO0k7b0MsTyxzQjtJO0c7O0k7OztJO0c7O0k7O0c7O0k7O0k7RztxQywrQjtHOztJOztLO00sTztNOzt5Qzs7OztJO0c7O0k7O0c7O0ksSSxxQyxJO0k7STtHO0csSTs7STtLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztrRTtHOztJOzs7O0k7RzsrQix3QjtHO0k7Ozs7Ozs7OztJLHVDOztJO0c7O0ksa0IsTzs7SSxPO0c7bUMsOEI7O0k7Yzs7Rzs7SSxXO1c7Rzs7SSxXO0ksUztzQjtJO0ksTztHOztJLG1COztJO0c7O0ksK0I7STtHOztJOzs7O00sTzs7O0ksTztHOztJLGtCOztJO0c7O0k7O0c7O0k7STs7O1E7OztnQjs7Rzs7STtrRDtJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxZOzs7TTs7Ozs7Tzs7Ozs7STtZOzs7ZTtlLE87Yzs7O0c7O0ksTzs7O2M7YyxPO2E7Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Ozs7YTtNOzs7OztNOzs7O087Ozs7O0c7O0k7STtLLFk7Ozs7Ozs7O0s7O0c7O0ksSSx1QixROzs0QztJO0c7O0ksSSx1QixRO29EO0k7Rzs7SSxjOzs7O1E7OztRO1MsWTs7OzthLE87Ozs7O1MsTTs7O0ksTztHOztJLFk7Ozs7UTs7MkIsTzs7SSxPO0c7Rzs7TTs7O1M7UyxPO1E7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPOzs7OztjO087Ozs7Vzs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7Rzs7O0s7SztNLEssNkI7TSxZOzs7O1U7Ozs7OztZLEksVTs7Ozs7Ozs7Ozs7O2U7Ozs7OztXLE87O3lDOzs7Ozs7OztVLG9DOzs7Ozs7OztVOzthOztvQzs7O1UsRyw0QjtVLFc7Ozs7OztNLE87O29DOzs7O0k7STtHOztJO0s7SyxLLDJDO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7Ozs7O1M7d0MseUI7Ozs7Uzs7O1k7WSxXOzs7YSxPOzs7WSxPOztpQyx5Qjs7Vzs7Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7STs7O0k7STtJO0s7OztROztRLEksNEI7Ozs7O1MsTTs7O087O0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztNO00sTzs7Ozs7OztHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTs7VSxPOzs7VTs7Ozs7VTtVLE87OztvQjtvQjttQjs7O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7Szs7O0c7O0k7STtLO00sYTtNLE87SyxXO2dCLDZCO0ssWTs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1UsVzs7Ozs7O0ssTzt3Qzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sTzs7OEI7Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7Ozs7YztpRCxvQjs7VTs7OztjOzs7aUI7a0IsTztrQjttQztpQjtnQjs7O1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csTzs7bUM7Ozs7Ozs7OztxQjtXOzs7Ozs7O3dDO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLE87O2lDOzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SyxPOzs2Qjs7O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJO0k7Syx1Qjs7OztPO1EsTztRLGM7Ozs7Ozs7O00sSTs7OztLLGlCO0ssVztLO0ssWTs7Ozt5Qjs7Ozs7Ozs7d0I7OztVO1csTTtXLE87Ozs7Ozs7Ozs7O2E7Z0Qsb0I7OztTO1c7OzRCOztVOzs7OzthLE87Ozt1QixPOztpQzs7OztzQjs7O1k7UyxtQjtTLEksVzs7O3FDOzs7Ozs7O1MsTzs7O21COztrQjs7O0ssTzs7O2U7Ozs7Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7UTs7O1c7VyxPO1U7O1EsTzs7O2tCO2tCLE87aUI7Ozs7UTs7Ozs7STtHOztJO0c7K0IsMEI7O0ksSSxRLDZCOztLLFk7OzttQjs7O0s7TSxROzs7Szs7O3FCO0s7SztLLE87d0M7STs7Szs7Ozs7bUI7O007TSxjLE87TTs7dUI7O00sWTs7Tzs7USxPO1EsSztRLE87UTs7cUI7Ozs7OztLO0k7STs7STs7cUI7O0ksTzs7O2M7ZTtlLE87O2E7O0c7O0k7NEI7Rzs7STtLLFk7Z0I7Ozs7Ozs7SztLO0s7SyxPOzs2Qjs7O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7Ozs7YztZOzs2Qjs7O007Ozs7O00sZTtNO00sTzs7OEI7OztJO0k7OztPLFc7TztNOztJO0s7TSxXO007Ozs7OztNO0c7O0k7SyxXO0ssVztLO1E7TSxNO0s7SyxPO0k7SSxJLFMsSTs7Ozs7O0k7STtHO0c7STs7Ozs7Ozs7OztJLG9CO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Ozs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjOztpQixrQixRO2lFO2lCOztjLFM7YTtlLGtDO2MsVztjO2dCO3FCO2U7Z0I7Z0IsTzt3Qjs7Ozs7Ozs7Ozs7VTt5Qjs7Ozs7a0I7O0k7STs7O0k7Ozs7SSxPOzs7YzthO0c7O0k7O0k7O0k7Rzs7SSxPOzs7YyxPOzttQyxtQzs7YTtHOzs7Szs7OztrQjtNO0ssTztJOztLLEksNkI7Ozs2Qjs7O0s7STtJLFk7STtHOzs7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTs7O0ksTzs7O2M7Yzs7Ozs7bUI7O29CO29CO29CLFE7Ozs7Ozs7Ozs7b0IsVztvQjs7O21CO29CLFM7b0I7b0I7c0I7OzttQjttQjtvQjtvQjttQixLO29CLE07O21CO21CO2tCOzs7Ozs7aUM7YztlLFE7ZTs7O2U7aUI7O2tDOztjO2E7Rzs7SSxPOzs7YztlO2lCOzsrQiw0Qzs7ZTtjO2E7Rzs7SSw4Qjs7O3lCOzs7TztlOzs7a0I7Ozs7bUIsTztrQjtpQjs7Ozs7TztlOzs7a0I7Ozs7bUIsTzttQixPO2tCO2lCOzs7Ozs7SSxPOzs7Yzs7Ozs7Ozs7Ozs7O2U7aUI7O2tDOzs7OztlOzs7b0I7Ozs7OztjO3NCOzt1Qzs7Ozs7Ozs7Ozs7Ozs7O2E7Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1M7Vzs7NEI7O1M7UTs7UTs7UztXOzs7YztjO2E7O1M7Vzs7O2M7YzthOztTO1E7O1E7Ozs7UztROzs7SSxPOzs7Yzs7O2U7aUI7O2tDOztlO2M7YTtHOzs7SyxZOzs7TTs7SyxNO0k7STtLLE87SyxVO0ssTztJO0ksSSw2Qjs7Szs7O1E7USxPO087OztJOztLOztVO00sZ0I7TSxJLFcsdUM7Ozs7TyxrQjtPO08sVzs7Ozs7O1k7Ozs7O2E7YTs2Qjs7O1k7O2EsTzthLE87WTs7O3FCOzs7WTthOzs7O2E7YTtjO2UsTztlLGtCOzs7YTs7YztnQjs7aUM7Ozs7Ozs7Ozs7Ozs7VzswQzs7TztPOzs7SztRLG9DO0ssZ0I7SztLO0k7STtJOztzQixPLHFCOztJO0c7OztJLE87OztjOzthOzs7SSxPOzs7YyxZOzs7Ozs7Ozs7Ozs7ZTtnQjs7OztjO2M7YTtHO0c7STs7O1EsTTtPOzs7SSxXO087SyxNOzs7STs7O0s7TSxpQixROztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOzs7OztJO0s7Szs7Ozs7TSxNOzs7O0c7STs7OztJLFk7OztZO007OztLO00sUTtNLFE7TTtNLFU7OztNOzhCO087TyxJOzs7OztPOzs7Ozs7O0ssdUM7SyxJLFU7Ozs7TSxhO00sRztPLE07TSxPOzs7SztNO087Ozs7Ozs7O0s7TSxPO00sVTtLO0s7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7Ozs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7O1MsSyw2QjtTLEk7OztxQzs7O1M7OztTOzs7OztTOzs7UyxNOztLOztHOztJO0c7O0ksWTs7SztJLE07Rzs7SSxXO0ksSSx5Qzs7OztLO0ssTTs7Rzs7SSxJLDBEOzs7O2dDOzs7Rzs7STtLLEksSTs7Ozs7OztXOztZO2E7O2E7Ozs7d0M7OztXOzs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7WTs7O2U7OztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SyxnQjtLLE87OztlOzs7O0k7RztHLEk7d0IsdUI7O0k7SztLO0s7STs7O2E7Tzs0QiwwQjs7Ozs7SztLLE07O0c7O0ksSSxxQjs7O3dCOzs7Rzs7SSxJLDRCLGM7Ozt3Qjs7O0c7O0k7SyxPO0ssVzs7SyxZOzs7OztTLEc7VSxNO1Msc0Q7UyxvQjtTO1U7Ozs7Ozs7OztVOzs7Ozs7VSxJLEksTzs7Ozs7O1UsTzs7O29CLDZCO29CO21COzs7Ozs7UyxhOztLOztNLEksZ0I7TSxPOzs7Z0I7Ozs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1MsTzs7O21CO21CLE87a0I7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0ksaUM7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLOzs7SyxZOzs7Ozt3Qjs7UztVO1csSztXO2E7OztnQjs7O3NCOzBCOztlOzs7VTs7Ozs7OztvQjs7b0M7Ozs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssTzt3QztJOztLOztJLE87O2lDLGlDOzs2QixrQzs7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHO0c7O007OztTO1MsTztROztJOzs7Szs7OzttQjs7UyxPOzs7b0I7b0IsTzttQjs7bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTtjOzs7aUIsZTs7Z0I7OztXOzs7OztZLE87Ozs7VSxXO1U7OztVO1k7OzBCLE8sb0M7O1c7Ozs7TSxPOztJO0k7Rzs7STs7SztPOzs7VTtVLE87Uzs7O0k7TTs7b0IsTywyQzs7SztJO007O29CLE8sMkM7O0s7STtLO08sd0Msc0I7SztPLHdDLHNCOztJLE87O2lDLHdDOzs2QixPLHNCO0c7O0k7SztLOzs7Ozs7Szs7RztHO0k7Ozs7Ozs7STtLO087O3dCOztLO087O3dCOztJLE87OztjO2U7aUI7OztvQixZOzs7d0I7c0I7c0I7c0I7OztvQjs7O2U7ZSxPO2UsTztlLE87ZSxXO2M7YTtHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7VSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtZOzs2Qjs7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7O0k7O0s7Z0M7OztLO007TTtNOztNLFE7OztNO00sSTtLO0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STs7SyxJLFc7Ozs7Ozs7O0k7Rzs7SSxJLDZCOztHOztJO0s7TSxPO00sTztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7Ozt3QjsyRCxTOztvQjtxQixPOzt1Qjs7OzBCOzBCO3lCOzs7OztvQjtxQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7Ozs7OzhCLEs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7OEI7OzhCOzs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7O2tDLE07Ozs7Ozs7OztvQzs7Ozs7Ozs7b0M7Ozs7a0MsTTs7aUMsVztpQyxHO2tDLE07Ozs7Ozs7K0IsTTs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07a0IsTzs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7OzttQzs7OztrQyxPOzswRDs7Ozs7Ozs7Ozs7Ozs7O2tDLE87OzBEOzs7Ozs7Ozs7Ozs7Ozs7OzZCLE07OzRCOzJCOzs7Ozs7OztpQjtrQjtrQjs7Ozs7bUIsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksTzs7a0M7OztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0s7Tzs7O1U7dUI7UztJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07SSxPOzs7Yzs7Ozs7ZSxPO2UsTzs7O2U7Ozs7Ozs7ZSxNOztjO2E7O0c7OztLO0s7Ozs7UTtRLFc7VztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJO0k7SztJLEkscUI7STs7Szs7c0I7O0ssSTs7Ozs7OztJLFc7STtLO0s7SyxPO0ssa0I7SSxJLFc7Ozs7TSxNOzs7STtLLGM7Szs7O0ksZ0I7SSxPO0c7O0ksVztJLFM7STtLO0s7SSxPO0c7RztJOzs7USxNO087O0k7OztRLE07TztJOzs7OztJO0s7OzBCOzs7UTs7O1E7TTtHOztJOztLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7Ozs7O1E7UyxTOzs7Ozs7VTs7Ozs7Ozs7OzRCLE07Ozs7UTs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7OztJO0s7SztLLE8sMkM7STs7TSwyQzs7OztLO087VTs7SyxNOztJO0c7RztJOzs7Ozs7Ozs7OztJLEs7SyxNO0k7STtJLEk7OztLLG9EOzs7STtLLGtCO0ssYTs7Ozs7O0s7O0k7STtHOztJO0ksSTs7O0s7TTtNO007TTs7Ozs7Ozs7SSxPO0c7O0ksMkI7STtJOztLLEksUSwwQixVOzs7Ozs7Ozs7Vzs7O1k7OztXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7O2lCO21COzs7OztrQixXO2tCO2tCLG9CO2tCOzs7O2dCO2dCLEs7Z0I7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7SSwyQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7TztTOzs7Ozs7Ozs7USxXO1E7USxvQjtROzs7TyxJLHFCOztROztROztNOztLLE07Ozs7Z0M7OztHOztJO0k7STtJO0s7SztLLE87SyxPO0ssSztLLE87SyxPO0ssUTtJO0k7STtJO0ksK0I7Ozs7Ozs7TSxZOzs7Ozs7TSxjOzs7Ozs7Ozs7OztJO0ssSSxzQzs7Ozs7TSwwQjs7STtHOztJO0ssTTtLO0ssSztLLFc7Ozs7SztNOztTOzs7OztZOzs7Ozs7Ozs7WTtZLE87Ozs7Ozs7TTs7STs7TTs7TTtNOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7O2tCO2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O2dCOztrQjs7a0I7a0I7OztpQjtrQjtrQjs7b0I7O3FDOzttQjtvQjtxQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7O3VCOzBELFM7O21CLFc7bUI7OztzQjtzQixNOzt1QixXO3VCLEksOEI7Ozs7O3dCO3dCO3dCOztzQjs7OztxQjs7Ozs7O2lCOzs7O2dCOzs7Ozs7Yzs7ZTtlO2M7ZTtnQjtnQjs7OztlLFc7eUI7Ozs7ZTtlOzs7O2E7OztjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7aUIsVztpQixJOzs7OztrQjtrQjtrQjtrQjttQjttQjs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7d0M7Ozs7Ozs7Ozs7OztpRDtpQixXO2lCOzs7b0I7b0I7bUI7Ozs7Ozs7Ozs7O1U7Ozs7OztXO1c7Vzs7Ozs7Ozs7UTtRO1E7UTtRO1E7Ozs7O1EsSztTO3NCO1MsWTs7O1E7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSxPOztrQzs7O0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxVO0ssaUI7Szs7O1E7Ozs7OztRO1E7Ozs7O1UsVztVO1Usb0I7O1M7Uzs7Ozs7O1M7eUI7O087O0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksNkI7STtLOzs7Ozs7O0s7TSxPO00sSztLOzs7USxrQixPO1EsTztPOztLOzs7UTtRO1MsVztTLE07OEI7Ozs7Z0M7OztPOzs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJO0ssTzs7O2U7OztnQixROzs7NkI7c0M7O2M7O0k7STtLLE87OztlOzRCO2M7O0k7STtLLEksa0I7O007TztPOzs7WTs7O2M7Ozs0QjtxQzs7YTs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTs7O1k7OEM7UTs7Ozs7OztxQjtNLFM7O0s7TSxLO007OztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7SztLOzs7UTtRO1M7O1M7Ozs7OztTOztPOztLLEc7TSxTO00sRztPO1EsTztRLE87Tzs7O0s7Ozs7SztLO0ssTTs7OztJO0s7Ozs7UyxZLE87UyxvQjtTOztNO007Ozs7OzttQjtLO00sUTtNLFU7O3NDOztPOztnQyxPLDhCO007Ozs7Ozs7Ozs7OzJDOzs7O1U7OztvQixRO29CO29CLFc7b0I7b0Isb0I7b0I7cUI7O3dCOzt5Qzs7cUI7Ozs7cUI7cUIsTTs7bUI7Ozs7OzsyQjs7O1U7O21DLE8sOEI7Ozs7OztTOztrQyxPLDhCOzs7OztTLEcsK0I7UyxJO1M7VSxXO2E7VyxRO1c7VztXLE87O3lDOzs7OztTOzs7Ozs7Ozs7O3lCO2tDOzs7OztVLGM7OztXLFc7Ozs7Yzs7OztpQixPOzt5Qzs7Z0I7Ozs7Ozs7O1M7UztVOzthLE87Ozt1QixXO3VCLFc7c0I7WTtVLFE7VSxRO1U7VTtZOzs2Qjs7OztVO1k7OzZCOzs7Ozs7VTs7O1ksc0IsTztZOzs2Qjs7Ozs7OztVOzs7OzthO2EsTzs7O3VCLHlCO3VCLDJCO3NCO1k7UztTO1M7VSxPO1UsTztTO1MsTzs7OztVOzttQyxPLDhCOzs7Ozs7VTs7O29CLFE7b0I7b0IsVztvQjtvQixvQjtvQjtxQjs7d0I7O3VDLDJCOztxQjs7OztxQjtxQixNOzttQjs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OztNOztLOzs7O0ksVztJLEksZ0M7Ozs7O0s7SyxNOzs7Rzs7STtJO0ssZ0I7SztLLDBDO0k7STtHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0ssSSxxQjtLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzt1QyxrQzs7STtJO0c7aUMscUM7O0k7Rzs7STtLO0s7STtJO0c7Rzs7Ozs7SztNO007TSxJO0s7STtJLEk7Ozs7NkM7SyxNOzs7Ozs7O0ksWTs7OztRO1Msd0I7Ozs7UTtROzs7O2E7UyxrQzs7UyxNOzs7UTs7SSxNO0c7Rzs7OztJO0k7Ozs7UztVO1U7VSxLO1M7UTtLLEk7Ozs7TTs7TyxROztNLE07Ozs7Ozs7O0ssWTs7OztTO1UsVTtVOzs7UztTOzs7UyxjLDRCOzs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7RztJOzs7O0ksSSw2QixROztLO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7RztJOzs7Ozs7UyxZOzs7O00sSTs7OztRLE07Ozs7TSxJOzs7OztPLE07Ozs7Ozs7O0s7O007Yzs7VTs7O1UsTTs7Ozs7Ozs7OztLO0ssSTs7Ozs7TSxNOzs7O0k7ZTs7OztHOzs7O0k7OztLLEksVTs7Ozs7OztLOzs7O007Szs7OztPLE07OztNLEk7Ozs7O08sTTs7Ozs7O0ksYTs7O0c7RztJOzs7Ozs7Ozs7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7STs7O087Tzs7USxTO1MsTTs7Ozs7TyxJOzs7OztRLHNCO1EsTTs7O087TTs7SSxPOzs7YztjO2U7Ozs7OztlLHNCO2UsTTs7O2M7YTs7Rzs7STtLO0s7OztLO087OztVOzs7Ozs7O1U7VztVLEksVTs7OztrQjs7YztlO2lCO2U7Ozs7O2M7ZSxVO2U7Ozs7Ozs7OztXOztVOzs7O1csUTs7VztZLFU7WTs7Ozs7VTtTOzs7Ozs7OztJO0c7O0k7Szs7SSxPOzs7YztxQjs7d0I7YTs7Rzs7STtLO0s7O0k7SyxJLDZCLFE7bUM7OztRO1MsUTtTLE87UTtROzs7USxxQjs7Ozs7USxNOzs7Rzs7STtJOzs0QixtQiw0Qjs7STs7Tzs7O1U7VTtTOztJOzs7TztPO007Ozs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCO2lCO21COzs7c0I7b0M7c0I7dUIsUTt1QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkI7NEI7NEI7Ozs7Ozs7NEI7Ozs7Ozt1RTs7eUI7O3dCOzs7Ozs7OzJCLE87Ozs7OzsyQjs0Qjs2Qjs2Qjs7Z0M7OzttQztrQzs7NkI7Ozs7Ozs7NkI7Ozs7eUI7Ozt3Qjt5QixlOzs7bUM7MEIsVzswQjswQixXOzZCOzs7OEI7OztpQzs7Ozs7Ozs7OEI7OztpQztnQzs7Ozs7Ozs7Ozt5Qjs7Ozs7Ozt5Qjs7O29DLE87O3NCO3FCOzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0I7Ozs7cUI7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJLE87OztjOzs7O0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3QjtJLE87OztjOzs7Ozs7ZSxRO2UsVTs7Ozs7a0M7Ozs7O3FCLE07Ozs7Ozs7ZSxNOztjO2U7ZTs7Ozs7OztlOytCOzthOztHOztJO0k7Rzs7STs7SSxJLG1DOztJO0ksTzs7aUMsdUM7OztjO2U7OztpQztlOzs7Ozs7OztlO2UsTTs7O2E7Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTO3FDO1MsZTtvQjtTLFc7Ozs7SyxPOzs2Qjs7O0c7O0k7STtJOztHOztJO0ksTzs7O2M7YyxPOzs7OzBCO3dCO2E7O0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0ksTzs7O2U7OztnQixTO2dCLFM7b0M7d0M7ZTtjOzs7Ozs7YztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7Ozs7Ozs7O1csSzs7Ozs7O007TztPO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2dCO2lCLDhCO2lCLFU7Ozs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7OztpQjs7OztrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7Ozs7Ozs7Ozs7OzsyQjs0Qjs0Qjs2QixPOzsrQjtrQzs7O29DOzs7O21DOzs7cUM7OztrQzs7O3FDO29DOzs0Qjs7Ozs7Ozs0Qjs7Ozs7Ozs7O3lDOzs7O3VCOzs7O3FCOztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQjs7OztxQjs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7Ozs7SSxXO08sMEM7SSxPOzs7Yzs7OztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7O00sTzs7O2dCOzs7Ozs7aUIsTztpQixPOzs7O2lCOztvQjs7OztpQjs7O2dCO2lCO2lCOzs7Ozs7O2lCO2lDOztlOzs7Szs7OztJO0ksVztJLE87O2lDLE8sNEI7OztjO2E7Rzs7STtHOztJO0k7Szs7O2tCO0s7Ozs7OztLLE07OztHOztJLEk7Ozs4Qjs7O0k7Rzs7STtJO0s7TSxXO00sYzs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7RztJOzs7Ozs7Ozs7O0k7SztPOzs7VTtVLEksVTs7O2tDOzs7O1U7Z0M7O3dCOzJCO1U7Uzs7O0s7Tzs7O1U7VSxHLDBDOztVO1M7OztLO087OztVO1UsSSxVOzs7a0M7Ozs7NkI7MkI7VTtTOzs7SSxPOzs7YztjLGlCO2U7YzthOzs7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7Ozs7Ozs7Ozs7Ozs7YSxHO2M7YyxJOzs7Ozs7ZSxNOzs7Ozs7Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STs7SyxRO0ssUTtLO0ksVzs7O0k7O0ssTzs7STs7SyxhO0ssVTtLLFU7SztLO0s7SztJO0k7OztLLEk7Ozs7OztNOzs7Ozs7O0k7Ozs7STtLLFE7SyxRO0s7SSxXO0k7SztNO00sYTtNO007TTtNO0s7SztLO00sSztNLEs7O00sTTtLOzs7USxJLG9EOzs7Ozs7UyxNOzs7Ozs7Ozs7OztPOzs7SztNOzs7UztTLEksVTs7OztXLE07Ozs7UyxJOzs7Ozs7VSxNOzs7Ozs7Ozs7OztTO1E7O007OztTO1MsSSxVOzs7O1csTTs7OztTLEk7Ozs7OztVLE07Ozs7Ozs7Ozs7O1M7UTs7Ozs7Ozs7SztNO1E7NkMsMEI7TSxPO007O3FCO0s7Ozs7OztLOzs7RztJOzs7Ozs7Ozs0Qix5Qzs7STs7aUM7O0s7O0k7Rzs7SSxPOzs7YztjO2E7OztHOztJO0k7ZTs7aUU7Ozs7Rzs7SSxPO0c7O0ksSSxVLDZCOztLLE07SSxtQixVOzs7OztNLEcsNkI7OztJLE07Rzs7STtJLE87Rzs7SSxZOztjLHNCOztLOzs7O2tCO087UTtTLE87UyxNOztRO1E7Ozs7K0I7Ozs7Tzs7OztRLEs7TywyQjtPO1E7UTs7O1E7OztRO087O08sc0IsTztPLDZCO087UTtRO1U7OzthOzs7UTtPOzs7O29CO3NEOzs7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YTtlOztnQzs7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztRO1M7Vzs7O2M7ZSxROzs7Yzs7Ozs7OzthOzs7UztTOzs7OztnQjtrRDs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCO1M7Vzs7O2MsOEIsUTs7Ozs7cUM7O2U7O2dCOzs7Ozs7OzJCOzs7MEI7O2U7O2MsTTthOztTOzhCO1M7UztXOzZDO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RztJLFc7Ozs7OztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCO2lCLE87OzsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7aUIsc0I7aUIsRztrQjtrQixHO21COzs7O2lCO2tCOzs7a0I7OztrQjs7OztpQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUI7c0M7Ozs7aUI7OztrQjs7bUI7Ozs7Ozt1QjtzQzs7O2lCLE87OzsyQjsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7OzsyQjs7OzhCOzs7K0IsUTsrQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7OzsrQjs7OEIsTTs2Qjs7Ozs7Ozs7Ozs7O3dCOzs7MkI7Ozs0QixROzRCLFU7eUQ7Ozs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7NkI7OzJCLE07MEI7Ozs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7O21CO3FCOzs7d0Isa0M7d0I7O2dDOzs7dUI7Ozs7bUI7b0IsYTs7O3FCO3NCOzs7eUI7eUI7d0I7Ozs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7Uzs7Ozs7Ozs7TztROzs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPO1c7YTs7O2dCOzs7aUIsUTs7O2dCOzs7Ozs7aUI7O2dCOztpQixPO2lCLE87aUIsTztnQjs7O3lCOzs7O2U7Ozs7VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTOzs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXO0ssTzs7O2U7Ozs7O2UsSSw0Qzs7OztpQjt1Qzs7O2M7b0I7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHOzs7OztLLEcseUM7SztNLFk7TSxROzs7O1M7WTtVLHNCOzs7UztVO1k7O21DOzs7OztVO1M7VTs7Ozs7O1U7Ozs7cUM7Ozs7O2tCOzs7Ozs7Ozs7Uzs7Ozs7Uzs7VTtZOzttQzs7Ozs7UyxHLDRCO1M7VSxPO1U7Ozs7O0ssTzs7bUM7Ozs7OztJO0k7Rzs7STtJLE87Rzs7STtHO0c7OztLOztJLE87Rzs7STs7SztPOzs7VTs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7O1M7OztVOzs7Ozs7OztROzs7Vzs7Ozs7SSxPO0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7OztVO1k7OztlOzs7Z0IsUTs7Ozs7Ozs7bUI7Ozs7b0I7c0I7Ozt5QixPOzs7b0M7bUM7Ozs7d0I7OztvQixPO3NCO29CO3FCLE87NEI7Ozs7Ozs7Ozs7ZTtjOztVO1k7OztlOzRCO2M7O1U7WTs7O2U7ZSxPO2M7O1U7Z0I7Uzs7OztJLE87OzRCOztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7SSx1QyxRO2tFO0ksSSxXLDJDOzs7O0ssSSxPLDJCLE87SztLO00sVzs7Ozs7OztXO1ksYzs7O2EsTTs7O1k7O2E7OztnQjs7O21COzs7Ozs7Ozs7O1k7YTtjLE87YyxJOzs7OztjOzs7Ozs7YyxNOzs7Ozs7O1csa0M7OztZLEc7Ozs7Ozs7OztrQjs7O3FCOzs7Ozs7Ozs7O1csbUIsTztXO1ksVTtZO1ksSTs7Ozs7WTtZO2EsVzthOztrQjs7O2E7ZTs7Z0M7Ozs7O2EsVTs7Ozs7YyxHOzhCOzs7Ozs7Ozs7Ozs7VyxHO1k7YTthLFU7OzthLE07Ozs7Ozs7Z0I7Ozt5Qjs7Ozs7Ozs7VTs7OzJCOzs7Ozs7TTtNLE07O0s7Szs7OztJO0s7SztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7O0k7Szs7TTtROzt5Qjs7OztNOztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOztPO1M7OzBCOzs7OztLOztNO1E7O3lCOzs7TTtROzt5Qjs7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7Ozs7VTtTOztpQjs7O29COzs7Ozs7OztROztTO1c7OztjO2M7YTs7UztXOzs7YztjO2E7O1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7O0s7O1E7O3lCOzs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7Szs7Szs7Szs7UTs7eUI7Ozs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7SyxvQixPO0s7OztRLG1CLFE7Ozs7Ozs7VyxPOzttQzs7Ozs7UTtPOztLLE87OzZCOzs7SSxPOzs0Qjs7Rzs7STtJLE87OzRCOztHOztJO0s7SztLLFE7SyxVOzs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7OztRLEc7UyxXO1M7O1c7OztjLGtCLFE7Ozs7Ozs7ZTs7YzthOztVOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGM7cUIsWTtHLEksK0I7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7SSxXO0ksTztHOztJLHVCO0c7RztJOzs7UTtRLHNCOztRO1Esc0I7O1E7USxzQjs7UTtRLHNCOztRO1Esc0I7O0ksdUIsTSwwQztHOztJO0k7Ozs7Ozs7cUM7O3FDOztxQzs7cUM7O3FDOzs7Ozs7OztLO0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtnQjtJOztLLG1DOztLOztHOztJLHFDLE87Ozs7Ozs7Ozs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7STtLLE87SztPO1MsMkM7SSxPLFc7Rzs7SSwwQiw0QztJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtJO0s7Tyx3Qyx1QjtLLG9CO0ssVTtJOzs7Tzs7UTtRO1E7TztPO007O0ksTzs7O2MsWTs7O2UsTzs7Ozs7Ozs7OztjO2U7aUI7bUQ7ZSxPO2MsTzs7Ozs7Ozs7Ozs7O0c7O0ksVztHO0c7c0IseUI7RztJO0k7OztJO0ssa0IsTztLLE87STtJO2U7SSxPO0c7O0k7Ozs7TTs7TyxPO2M7OztLO00sVztNLE87O0s7TTs7Uzs7WSxPOztZLE87O1ksTzs7WSxPOztZLE87b0I7O1E7TTtNLE87TSxROzs7TSxHOzs7TztRO3lDOztVOzZDOzs7Ozs7d0M7SyxjOztpQjs7TTtPO2tCO08sVztjO0s7TSxZO007TTs7ZTs7OztNO2E7OztRLEk7Ozs7Ozs7O1M7Ozs7O0ssTzs7SSxXO0ksTztHOztJLEksMEIsTztJLE87Rzs7STtJLE87RztHO0ksZTs7Ozs7Ozs7STtJOzRCO0ssVSxnQztNO0s7OztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7O087O0c7bUQ7Rzs7OztLO0k7STtJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2M7Ozs7Ozs7cUI7Ozs7OztPLFMsVzs7Tzs7Tzs7O1E7UTtPOzs7TyxZOztPOzs7O0k7Ozs7Rzs7STtJLE87Rzs7SSxPO0c7O0k7O0s7Tzs7d0I7O0ssTztJLE87Rzs7Ozs7Ozs7Ozs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOztJLE87Ozs7Ozs7YyxPOzs7d0IsTzt1Qjs7YTs7RztJOzs7O0k7STtxQzs7O007Ozs7O0c7O0ksWSxPOztJLE87OztJLDhCO3lDOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxJLEs7Ozs7TSxHO007Ozs7O0ssTzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7Rzs7O0s7SyxPOztJO0ksc0I7Rzs7STtLLE87Ozs7TyxPOztPOzs7OztRLE87UTtPLE87Ozs7Ozs7Ozs7OztPLE87O087Ozs7UTtPLE87Ozs7Ozs7O3FDOzs7O08sTzs7Ozs7OztpQjs0QixPOztpQixPOztnQjs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXO1csTztVO08sTzs7Ozs7cUM7Ozs7Ozs7Ozs7OztpQixhLE87O2lCLE87O2dCOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7SSxPOzs7YyxZLE87O2MsTzthOztjLE87YTs7YyxPOzs7Ozs7Ozs7d0IsUSxPOzt3QixPOzt1QjthOztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7Ozs7Ozs7SSxRLE07O0ksTztHOzs7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1k7Yzs7K0I7O1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7Ozs7STtJOzs7UTs7UyxTO1MsSTs7O1MseUI7OztROzs7O1E7OztTOzs7UTs7Ozs7O0ssSTtLOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7UTs7O1c7O1k7Ozs7O1c7WTthLEk7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O1U7Ozs7O0k7Rzs7STtJLE87O2lDLGdDOzs7Rzs7STtjLG1DOztHOztJO0k7Ozs2QixXOzs7O1Esd0M7UTs7Ozs7O0s7O0c7O0ksK0I7dUI7STtLOzs7O0ssUTtLOzsyQzs7YyxNOztNOzs7Uzs7VSxvQjtVLEcsa0Q7O1M7O1UsSTtVLE87VSxPOzs7VTs7OztZOzs7OzJCLDRDO2E7YTtlOzs7a0I7a0IsTztpQjs7WTs7O2E7YztjO2dCOzs4QixPLCtCOzthO2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7Uzs7UTs7O0k7Ozs7Ozs7Ozs7Ozs7O007TyxXOztRLDJDOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksTzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7SSxPOzs7YyxrQixROztlOzs7Z0IsTztlOztpQzs7Ozs7O2M7YTs7Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87O3FCO1EsTzs7O2tCOzs7Z0M7Z0M7aUI7Ozs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7Rzs7SSxlO0k7O0ssTztnQjswQjt3Qjs7RztHO0k7STtJO0k7STtJO0k7STs7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7O1E7OztXO1c7VTs7Szs7OztJO0c7O0k7SyxXO0s7SyxpQzs7Rzs7SSxjO0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw4Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZOzthOztnQixPOzs7MEI7MEI7eUI7O2U7WTs7O2E7OztpQixXO2lCLE87Z0I7YztnQjt3Qyw4Qjs7Ozs7OztrQjs7TTtNOzs7Rzs7SSxZOztLOzs7UTtRLFc7Tzs7O0c7O0ksNEI7OztJLE87Ozs7ZTs7O2M7OztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJLFc7SSx3QjtJOzs7Rzs7STtJLHNCO0c7O0ksWTs7OzswQjs7OztROztJO0c7O0k7STtLO0ssRztNO0s7TSxNO007TTs7Ozs7Uzs7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STs7O0c7MkIsVSwrQjs7STtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtNO1c7SztNLDZCO007O3lCO0s7OztLLEksTSw4Qjs7OztTO1U7VSwwQjtTOzs7OztVLDBCOzs7UyxHO1UsYzs7Ozs7OzthLEc7Ozs7Ozs7Ozs7OztTOzs2Qjs7Uzs7O1U7OztVOztVLDRCO1M7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7VTs7ZTs7O2lCOzhCO2dCOzs7VTtZOzs7ZSxrQixROytEO2U7Yzs7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDOzs7Ozs7aUI7bUQ7Vzs7O1M7VTtZOzs7ZTs7O2dCLFE7NkM7Ozs7Ozs7aUI7Ozs7Ozs7aUI7OztlOzs7VTs7OztlO2lEO1M7O1M7Ozt3Qjs7UyxnQjtTO1UsUTtVO1M7UztVO1k7OzZCOztVO1M7O1M7O1M7OztVO1k7OztlOzs7Z0I7Z0IsTztlLFc7Yzs7Uzs7SztJO0ksRzs7TTs7dUI7O0ksWTs7Ozs7O1Esc0I7UTs7O0k7SywrQjtLO0s7Ozt5QjtLOztJO0c7O0ksTzs7NEI7O0c7O0k7SztNLFU7OztNO1E7OztXO3dCO1U7OztNO1E7OztXO1csTztVOztNOzs7Szs7O2dCLE87STs7O0s7Szs7O0ksWTtJLE07Rzs7STtLOzs7OztNO007OztLOztJLGM7Ozs7Ozs7OzsrQjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7RzswQywwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0ksTzs7O2MsSSxPLDRCO3FDO2M7YzthOzs7Rzs7STs7Tzs7O1UsVztVLE87d0I7O1M7OztJLE87Rzs7STs7SyxPOzs7SSxPOzBDLDBCO0c7O0ksSTtJLFc7Rzs7SSxxQzs7SSxlO0c7O0k7SyxPOztLO087O3dCOztLO0k7Rzs7STs7K0Isc0M7O0c7O0ksSSxpQzs7SyxtQixPO0s7OztRLFcsVztRO1M7VSxPO2lCOzs7USxjO087OztJO0k7STs7cUI7Ozs7Syx1QixVOzs7O08sc0IsVTs7Ozs7OztVLEc7VztZLFc7bUI7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7Ozs7UTt1QywwQjs7OztROzs7Vzs7VTs7O0k7Rzs7STtLOzs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs0QywyQjs7O0k7SztPOzs7VSxhO1Usc0I7VSxXO1U7VyxXO1c7Ozs7O2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7OztVO1csVTs7O1c7O1U7Uzs7O0s7Tzs7O1U7OztXOztVO1M7OztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7OztpQjs7O1E7Ozs7O1M7OztjOzs7OztJOzs7OztZOzs7Rzs7STs7Rzs7STtJLE87Rzs7STtJO0k7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0c7O0k7SSxPO0c7cUQsd0I7Rzs7SSxJLHVCO0ksTztHOztJO0ksTztHOztJOztLO087O3dCOztLO0k7Rzs7STtJO0k7STs7Rzs7STtLLFU7Szs7Szs7c0I7O0ssTzs7O2U7bUY7ZTtjOztJO0k7O0ssTztLOzs7SztJOzs7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0k7STtLLE87Szs7O0ksTzs7Ozs7O0c7O0k7SyxPO0s7SztLOzs7OytCOzs7OztJO0c7O0k7SSxPO0c7O0ksWTs7O0s7O0k7Rzs7O0k7Ozs7Ozs7UTs7O1MsTTtTO1M7UTs7VTthO1MsVztTLEs7VSxPOzs7OztRLHVCO1EsRztTOzs7UTs7Z0MsbUIsd0I7Ozs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztZLE07OztTO1M7Ozs7O1E7O1M7Uzs7UztTO1c7OztjO2M7YTs7O1M7Vzs7O2M7YzthOzs7UyxhO1M7Vzs7O2M7Yzs7Ozs7OzthOzs7UztXOzs7YztjO2E7OztTLGM7UztXOzs7Yzs7Ozs7ZTs7O2U7YyxhOztjO2E7OztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssYztLOzs7Szs7STtHO0c7O007OztTO1U7VTtZO2U7O1M7UTs7STtJO0k7STtJLGU7STtJOztxQjs7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STs7cUI7O0k7STtLLE87SztPOzs7VTs7Uzs7O0s7Tzs7O1U7O1M7OztLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztpQixjO2tCLFc7a0IsTzs7aUI7Z0I7Z0IsTzs7OEI7O0c7O0ksVztJLE87Rzs7Ozs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7UTs7UTs7Z0M7TzttQzs7OztJOzJCLFc7O2M7YyxPOzs7d0I7d0IsTztpRTt1Qjs7YTs7Rzs7STtLLE87SyxhOztLOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7WTs7O2U7OytDOztlO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO0s7SztNLFE7TTs7TTs7Tzs7O007O087Uzs7O1k7OzthOzs7WTtXOztPOzs7O1ksTztXOzthOztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7O0ssTzs7OztlLG9COzs7O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7STs7O0ssTztLLE87SSxPOzs7STs7Tzs7d0I7SSxPO0c7OztJLEcsK0I7STtJOzs7STs7SyxPOztJOzs7SyxPO0ssTztJLE87OztJLFk7O2dCOztJLE87Ozs7Ozs7OztrQzs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7O0c7STtNOzs7O1UsTztTOzs7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OztJLFc7SSxPO0c7O0ksTztHO0c7SSxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87OztJO0k7STs7SyxPOztLLE87Ozs7Ozs7Ozs7Rzs7STs7Tzs7OztROztRLFE7USxVOzs7UTtTOztrQixPOztpQjs7OztRO1M7O2tCLE87O2lCOztPOzs7O1EsVzs7OztVLFc7O1U7OztXO2E7K0M7VTtrQjs7Ozs7Ozs7OytDOzs7OztpQjtnQzs7O1c7VztZLE87O2M7Ozs7Vzs7WTtjOzs7aUI7aUI7aUIsTzswQjs7Z0I7O2M7O1U7a0I7OztVOzs7O1csTztVO2tCOzs7Ozs7Ozs7O1Usa0IsTztVO2tCOzs7Ozs7Ozs7OztRLFc7OztRO2dCOzs7Ozs7Ozs7TyxXOzs7Ozs7UTtRO1MsTztlOzs7Ozs7Ozs7Ozs7O2lDOzs7Z0M7OztVLG1CLE87VSxXOzs7VTtVLFc7VSxXOztVLG1CLE87VSxXOzs7VTtVLFc7VTtrQjs7Ozs7Ozs7OztPOzs7TztPO08sYzs7Ozs7Vzs7b0I7b0I7b0I7b0I7cUIsTztxQixPO29CLE87O21COztPLDBCOzs7O0ksTzs7OytCLHdDO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSxXOzs7O00sVztNLE87O2lCO0ssYzs7TSxXO00sTzs7Szs7STtHOzs7OztnRSxTO0k7Ozs7YztjO2U7aUI7OztvQjtvQjttQjs7O2U7aUI7OztvQjs7O3FCLE87b0IsVzttQjs7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7Ozs7Ozs7b0I7Ozt1Qjs7O3dCLFE7Ozs7O3dDLG1COzt1Qjs7Ozs7ZTtnQixPO2dCLE87O2dCOztpQjttQjs7b0M7OzttQjs7Ozs7Ozs7OztnRDtlO2dCLE87Z0Isc0I7Ozs7Ozs7O2U7ZTs7Ozs7O3NDOzs7a0I7O2dCO2dCOztlOztrQjs7O3FCO3FCLEksVzs7OzZDOzs7cUIsWTttRDtxQjs7c0IsTztzQixTO3NCO3FCLE87b0I7OztlOzs7a0IsaUI7OzttQjs7O29CLE87b0IsTztvQixPO29CO3NCOzs7OzBCLE87eUI7O21CLE87Ozs7Ozs7Ozs7O2tCOzttQixPO2tCLE87Ozs7Ozs7O2lCOztlOzs7Ozs7OztlLE07O2E7Ozs7STtLOzs7Ozs7O0s7O0k7Szs7O2tCO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7SSxZOztJOzs7STs7O0ksbUI7eUI7STtZOzs2Qjs7Rzs7SSxxQjtJO1k7OzZCOztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2lCOzs7Ozs7Ozs7OztlLE87YztlOzttQjs7O2MsTzs7Ozs7d0I7Ozs7Ozs7Ozs7c0M7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7OztpQixPOzs7Ozs7Ozs7Z0I7OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7OztJLFk7OztLLE87OztlLE87Ozs7MkM7O2M7O0k7SSxPOzs7O2dDOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7SSxJLDRCLDhCOzs7OzRCOzs7Rzs7SSxpQjtJLGdCO0ksTztHOztJLE87Rzs7STs7O087O1EsTztRO08sVzs7Ozs7Ozs7VSxZO1U7Ozs7Ozs7O1U7VyxPO1csVTtVOzs7Ozs7OztJO0c7Ozs7Z0I7Ozs7O1E7Ozs7O1MscUIsTztTLEs7Ozs7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZO1U7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UyxRO1E7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7NEI7Ozs7O1EsWTtROzs7OztROzs7UTs7Ozs7STtxQjtrQjs7STtHOzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTOztZOzs2Qjs7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztROzs7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7Uzs7OzthOzs4Qjs7Ozs7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzJCOzs7aUM7STtLLE07SyxVO0ssTTtLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtZOzs7ZTs7Ozs7OztrQjs7O3dDOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7eUM7Ozs7OzswQjs7OztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRLFk7Ozs7OztROzs7O0c7cUMsdUM7Ozs7Ozs7UTtTLFk7cUIsTTtTLG9CO1M7Ozs7O1UsTTs7Ozs7USxPO2lCOzs7b0I7Ozs7Ozs7Ozs7Ozs7OytDOzs7O3FCLE07O29COzs7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7UTs7O1M7UztTLE07UztTLE07USxPOzs7Rzs7STtJO0ssSSxjLHVDOzs7Ozs7Uyw2QjtTLEcsK0I7Uzs7OztTLG1DO1MsRyxpQztTOzs7aUI7OztHOztJOzs7STtLO00sbUM7Ozs7Ozs7O0ksTztHOztJO0s7SyxROzs7Ozs7OztPO1EsUTtRO1U7Ozs7Ozs7O0c7O0ksUzs7Ozs7Ozs7Ozs7Ozs7OztTLEc7Ozs7Ozs7Ozs7OztPOzs7WTtPOzs7OztPOzs7aUI7O3dCOztHOzs7SyxJLDZCLGE7Ozs0Qjs7O0k7O0k7Rzs7STtLO007TTtNOzs7UyxvQjtvQjs7UTs7O1M7Ozs7OzthLE87Ozt1QixtQjt1Qjs7d0I7d0IsbUI7a0M7O3NCOzs7OzJCOzs7O1M7UTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO007UTs7O1c7VyxPO1U7OztNLDBCLE8sbUM7TSw4QixXOztLOzs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7WTs7O2U7Z0IsTTtnQixNO2UsTztjOzs7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7O0ksa0IsTTtJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXOzs7Ozs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7SSxZOztLO00sTztNLFU7O3dDO0s7O0k7Rzt1Qyw0Qjs7STtHOztJLDhCOzZCLGlCLGtCOztHOzt1QixPLHlDO0k7Z0M7OztLLE87Ozs7Ozs0QixPLHlDOzRCLE8seUM7OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNOztNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxPOzs7Ozs7MkIsTyx5QzsyQixPLHlDO0c7O0k7Ozs7USxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7O2lCOztrQjs7aUI7O2tCO2tCO2tCLE87aUIsTzs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O08sTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7Rzs7cUIsTyx5QztJLFU7STs7Ozs7SyxPO0ssYztJLE87Ozs7Ozs7Yzs7OztHOzt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztROztXOztjOztjOztjO3NCOztVO1E7UTtRLE87TyxPO2dCOzs7Ozs7O087Tzs7NkI7O087OzJCLE8seUM7UTs7VyxPO1U7TztROztXOzs7WTs7VyxPOztXLHFCLE87VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTztpQjs7O087OztPOztROzs7TyxvQjtPLE87Z0I7Ozs7OztPOzs7TyxzQjtPLE87OztPOztRLFU7TztpQjtpQjs7Rzs7STs7Szs7STtLLE07SyxNO0ksSTs7Ozs7Szs7STtHOztJOzs7OztJOzs7Tzs7Ozs7USxPO08sRyx3QztPLFc7Tzs7K0Q7TztRO1E7Ozs7Ozs7OzBCO0s7O0c7RztJOzs7Ozs7Ozs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7O0ksTztpRCxvQjtHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7VztZO2M7OztpQjtpQjtnQjs7WSxVOzs7VztZO2EsTzthLE87WTs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7OztTLGtCO1UsZTtVLEs7VyxNO1U7VyxPO1csTztXLFE7Ozs7VyxjO1csYzs7O1c7VyxjOzs7Ozs7Ozs7Ozs7O1c7O2M7OztpQixrQixRO2lFO2lCO2dCOztXOzs7O1c7O1k7O2E7Ozs7OztjLFU7YyxVOzs7Ozs7Ozs7OztnQixXO21CO2lCO2tCLFE7a0IsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7aUI7OztrQjtrQjs7Ozs7Ozs7Ozs7O2M7O2dCOzs7aUI7aUI7Ozs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7OztNLGM7Ozs7Ozs7O3NDOzs7OztzQzs7Ozs7Ozs7OztJOztNOztNO08sTztPLE87TTs7Ozs7OztLOztJO0c7OztJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7O1U7O2dDOzs7Vzs7WSxRO1ksVTs7OztlLHFCLE87ZSxHOzs7ZSxzQixPO2UsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7O2UsVztlLE87Yzs7Vzt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztVO1c7WTs7ZSxXO2UsTztjOztXO3dCOztVOzs7VyxPO1csTzs7O2dCOzs7a0I7bUIsTzttQixPO2tCO21CLFc7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7a0I7aUI7Ozs7VTs7O1c7WSxrQixtQztZOztlOzs7Ozs7Z0IsUTtnQixRO2U7Ozs7Ozs7Z0I7O2U7Ozs7MkI7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOzs7SSxnQjtJO0ssTztLO0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87SSxPOzs7ZTtlO2dCOztlO2U7Z0IsUTs7O2dCLFU7Ozs7O2dCLEksc0I7O2dCLG1COzs7OzswQjtlO2dCLFU7Ozs7Z0IsVTs7OztnQjtlO2dCLEksb0I7OztlO2M7Ozs7Ozs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksTzs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixPLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksTzs2QztHOztJOzs7SyxNO0k7SSxPOzs7STtJO0k7STs7c0IsbUIsTyw2Qjs7O0c7O0k7STtJO0k7SSxnQixNO0ksTztHOztJOzs7OztJO0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJO0k7Rzs7O0k7STtJLE87OztJO0ksd0I7Rzs7STtJLHdCO0c7OztJO0k7Ozs7TztPLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTTtPLE87OzRCLE87OzZCLE87OztPLE87OztpQjtpQixPO2dCOzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TywwQjt1QyxPOzs7O0k7STtJO0k7O0c7Ozs7Ozs7STtJO0k7STtJLE87OztJO0ssa0IsTTtLLE87OztJLE87OzJCOzs7O0k7OztLLE87OztlO2U7ZTtlO2U7OytCOztlO2UsZ0IsTTtlLE87Ozs7O0ksTzs7MkI7Ozs7STtJO0k7STtJOzs7TztPO087TyxPO007O0k7SSxnQixNO0k7SSxPOzs7YztjLE87YTs7Rzs7SSxxQixNO0ksTzs7O0k7STtJO0k7O3NCLGtCLE8sNEI7O0ksZ0IsTTtJLE87Rzs7Ozs7O0k7STtJLE87OztJOzs7OztJO0k7STtJOzs7SztzQztLO0ssVTtLLE87OztJO0c7Ozs7Ozs7O0k7STtJO0k7Ozs7TztPO2lDOzs7eUIsTzs7MEI7OztVO1UsTzs7OztxQzs7OzRCOzs7TztPOztPOztPLHFCLE07TyxPOzs7TztPLFU7TztPLE87OztpQjtpQjs7aUM7O2lCLE87Z0I7OztPLHNCLE07TyxPOzs7TyxPOzs7aUI7aUI7aUIsTztnQjs7O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7OztJOzsyQixPOztPLHNDLE07TztPLE87O08sb0IsTTtPLE87ZTs7Ozs7Ozs7OztJO0k7STs7O087TztPLE87TTs7STtxQzs7OzhCOztPOzs7TztPLE87OztPOzs7VTs7OztXLE87OztVO1UsTzs7Ozs7USxPOztPOzs7OztRLE07TztPO087eUM7TyxPOzs7TztPLE87OztpQixrQixNO2lCLE87Z0I7Ozs7TztPLFU7TyxPOzs7TztPLFU7TyxPOztPLDBCLE07TyxPOzs7TztPLFU7TyxPOztPLHdCLE07TyxPOzs7Tzs7O1U7NkI7O1U7VSxPO1M7O08sVTtPLE87OztPO08sTzs7O087TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztnQzs7NEI7OztPO08sTzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O2dDOzs7TztPLE87Ozs7O0k7OztPO087TyxPO007O0k7Ozs7STtJO0ksTzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08sMEI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJO0ksd0I7Rzs7SSxZOztJO0ksTzs7Ozs7Ozs7STtJO0k7Ozs4Qjs7NkIsTzs7O087TyxPOzs7TztPLE87OztpQjtpQjtpQixPO2dCOzs7Z0MsTzt3Qzs7OztJOzs0QixPOzsyQjs7MkIsTzs7OEIsTzs7NkI7cUMsTzs7Ozs7Ozs7O0k7STs7O0ksTzs7Ozs7Ozs7STtJO0k7SSxPOzs7SSw4Qjs7OztPOzs7VTtVLE87Uzs7TyxPOzs7aUI7aUIsTztnQjs7OztPO08sTzs7O087TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OzhCOzs2QixPOzs7TztPLE87OztPO087TyxPOztrQyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7Ozs7O0k7STtJO0k7SSxPOzs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87OytCLE87OztPO087OztVO1UsTztTOztPLE87OztPO08sTzs7O2lCLGtCLE07aUIsTztnQjs7Ozs7Ozs7TztPOzs7VTtVLE87Uzs7TyxPOzs7TztPLFU7TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO3VDLE87Ozs7Ozs7OztJO0k7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7O087TyxVO08sTzs7TywyQixNO08sTzs7O087TyxVO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzs7Z0MsTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7SztLLFU7SyxPOzs7SSxPOzs7O0k7STs7O0s7SyxPOzs7SSxPOzs7STs7SyxPOzs7SSxPOzs7O0k7STs7OzRCLE87OztPO087OztPO087OztPO08sTzs7NkIsTztzQyxPOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7Ozs7O0k7STtJO0k7SSxPOzs0QixTO3lDLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7a0IsUzs7SSxnQyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7Ozs7SSxnQjs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsTyw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SyxPO0k7OztJLE87NkM7Rzs7STs7OztLLE87SyxPO0ksVzs7O0k7SyxPO0ssTzs7O0ssTzs7OztLOztLLE87SztPOzt3Qjs7STs7Ozs7Ozs7Ozs7O0c7O0k7SyxVO0s7SztLLE87SyxXO0ssaUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SztLO0ssZ0I7STtHOztJO0ssVztLLGtCOztJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0ssWTtJOztPOzs7USxPO3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7Ozs7O1EsTzs7O1c7OzRCOzs7O087O1EsTztRLHNCOzs7Vzs7NEI7Ozs7Ozs2Qzs7Ozs7MEI7O0k7OztJO0ssVTtLO0ssVztLLGlCO0k7Rzs7STtLLFM7SztLLFU7SyxnQjtJO0c7O0k7SyxrQixPO0ssVzs7O0k7WTs7NkI7Ozs7STs7O0s7YTs7O2dCO2lCLFM7aUI7aUI7bUI7O29DOztpQjtpQjtpQixPO2lCLFM7aUIsZ0I7Z0I7Ozs7Ozs7Ozs7Ozs7STtZOzs2Qjs7OztJO0ssVTtLO0s7SyxPO0ssTztLLE87SztPOzt3Qjs7SyxXO0s7SyxPO0ssZTtLO0ssTztLO087O3dCOztLLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7STtLLFk7SztLO0ssTztLO087O3dCOztLO0ssTztLLHFCO0ssbUI7STs7Ozs7Ozs7Rzs7STtLLFk7SyxvQjtLLG1CO0k7Rzs7STtLLFU7SztLOztLOzs7O00sTztNLE87TTs7O1M7MkM7Ozs7Ozs7O0kscUI7STtHOztJO0ssVTtLLFU7SztLLE87STtLLDBCOzs7dUIsVzs7cUM7O1E7Ozs7UyxPO1E7OztJO0s7Tzs7d0I7O0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7VTt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7O1U7WTs7O2U7OztnQixPO2U7dUI7O3dDOzs7Yzs7VSxPO1UsTzs7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjs7O2E7OzhCOzs7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0kscUI7STtHOztJOzt1QixXOztPOzs7USxPO1EsTztPLFc7O08sZ0IsTztPLFc7ZTs7Ozt3QixxQjtJO0ssVTtLO0ssTztLO087O3dCOztLLFU7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7UztXOzs7Ozs7OzhCOztlOzs7Z0IsUTtnQixTOztjLGE7Yzs7Ozs0Qzs7Uzs7Ozs7OztVLFE7VSxPO1UsVTtVO1k7OzZCOztVLGU7Ozs7OztROzs7UyxPO1MsTztTO1c7OzRCOzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87UyxPOzs7O1E7OztTLE87MkI7OztROzs7O1M7Vzs7O2M7OztlOztjOzs7ZSxPO2M7YTs7UyxPOzs7OztZOzs7UTs7OztTO3lCOzs7UTs7Ozs7UyxPO1M7eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1MsTzs7OztROzs7UyxPO1Msc0I7Ozs7WTs7NkI7Ozs7UTs7Ozs7O1MsTztTLE87Ozs7UTs7O1MsTzt5Qjs7Ozs7O3lCOzs7MEM7Ozs7Ozt5Qjs7Ozs7eUI7OztROzs7Ozs7UyxPO1MsTztTLE87OztZOzs7Ozs7Ozs7Ozs7O1E7OztTLE87eUI7O0kscUI7STtHOztJO0s7SztLLE87SSxvQjtJOztPOzt3Qjs7STtHOztJO0ssVTtLO0ssTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJO0ssVTtLLFU7Szs7O3dDOztPOzs7USxVOzs7Ozs7OztpQjs7Ozt5Qzs7MEM7OzswQzs7OzBDOzs7Tzs7USxPO3VCOzs7MEM7OzswQzs7OzBDOzs7OzsyQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OzRDOztJO0c7O0ksd0I7Rzs7SSxZO0k7Ozs7SyxPO0k7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRO1U7OzJCOzt1Qjs7OzRDOzs7Ozs7OztJLHFCO0k7Rzs7STs7NEIsVzs7O087OzJCLFc7OzhCLFc7OztPOzs2QixXOzs7O0k7SyxPO0ssTztLLE87OztJO3NDOzs7Ozs7Rzs7STtLLE87SyxPO0ssTzs7O0ksVztHOztJLDhCOzs7Tzs7O1E7VTs7O2E7YSxjO1k7O1E7VTs7O2E7YSxrQjtZOztPOztPLGtDLE07TyxXOztPOztRLE07USxNO087O087Ozs7USxPO08sVzs7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxNOzs7O087Ozs7USxNO1EsTTt1Qjs7Ozs7dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0kscUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SyxTO0s7OztPOzs7O1EsTTtRLE07Ozs7MkM7OztPOzs7Ozs7USxNO1EsTTtRO1U7OzBCOzs2Qjs7O087OztRLE07USxNO1E7VTs7MEI7O3NCOzs7Tzs7Ozs7USxVOzs7USxNO1EsTTs7Ozs7Vzs7MkI7Ozs7O087Ozs7OztRLE07USxNO3NCOzs7Tzs7O1EsTTtzQjs7SSxvQjtJO0c7O0k7SyxZO0ssWTtLOzs7Tzs7OztRLE07USxNOzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJLHVCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFUsZ0M7Ozt5Qzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7MkM7O0kscUI7STtHOztJO0ssVztLLFc7Szs7Ozs7O1M7Ozs7VSxNO2lDOzs7Uzs7VSxNOzBCOzs7Uzs7OztVLE07VSxNOzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTtVLE07Ozs7Ozs7MEI7OztTOzs7O1UsTTs7Z0I7Ozs7Ozs4Qjs7OzBDOzs7Uzs7OztVLE07Ozs7OztJLHNCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFMsZ0M7O0s7Ozs7TSxNO00sTTs7O3NDO0ksb0I7STtHOztJLEksUyxnQzs7Szs7O00sTTs7O3dDO0ksb0I7STtHOztJOztLLFc7OztJLGdCOzs7SSxJLFMsZ0M7Ozs7Ozs7OzsyQjs7O087Ozs7OztROzs7O087Ozs7UTs7OztPOzs7USxNO3NCOzs7eUM7OzswQzs7SSxvQjtJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7OztJO0ssUztLLFM7SyxVO0ssZ0I7SztJO0c7d0IsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RztJO0k7Ozs7Ozs7Ozs7OztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLO007TTtROzt5QixpQzs7Ozs7O0s7Ozs7TTs7Ozs7O0s7OztROzs7Ozs7O1csRztZO1k7O1c7Ozs7Ozs7O1c7VztXOzs7VyxHO1k7WTs7Vzs7WTtZO1k7Ozs7WTtZO1k7WTtZOzs7O1k7WTtZO1k7WTs7VztXO21COztRLEc7UztTOztROzs7Ozs7O1M7OztRO1E7Ozs7O1csTztVO1E7USxRO1E7UTtROzs7O0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OzttQixPOztPLE87O0c7OzJCLDRCOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxNO0s7STs7Syx3QjtLOzhDO0k7OztLOzs7O0ssOEIsc0I7Syx3Qiw2Qjs7TTtNOzs7USwyQjs7OztPOztLOztNOztLO3FCOzttQzs7OztRLEksVTs7OztTLEksVTs7O2dDOzs7UyxPOzs7O2tCO1Esa0I7OztROzs7UztROztROzs7UztTOztTOzs7O1U7VTs7Ozs7Uzs7UTtROztROztTO1c7OzJCOztROzs0Qjs7UTs7O1M7aUMsa0M7Uzs7O1MsSSxXOzs7Z0M7OztTOztROztRLDBCLFU7c0I7O1E7a0M7Ozs7Szt3QztJOztLLGlCO0s7STs7O007TTtLO0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OzRCOzs7UTs7eUI7bUM7O0k7STs7SztPO3VDOztLO087dUM7O0s7TTtNO007Ozs7Ozs7O0k7O0s7Szs7b0M7OztTOztTOztTOztTOzs7O2lCOzs7STs7Szs7Ozs7O087O1E7Tzs7a0I7O3NCO0s7STs7SztNO007TTs7Ozs7OztNO0s7OztJO0k7O21DLFM7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOzt5QixPOzsyQixPOzt5QixPOzt5QixPOzswQixPOzsyQixPOzsyQixPO21DLE87Ozs7STs7Tzs7eUIsTzs7MkIsTzs7O08sTzs7OEI7Ozs7TyxPOzs4Qjs7Ozs7O0k7SSxJOzs7Ozs7O0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7MEIsTyxtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsVzs7MkIsVzs7eUIsVzs7O08scUI7OzBCLFc7OzJCLFc7OzJCLFc7OzJCLFc7O0c7RzswQixPLCtCOztJLFM7SSxPOztpQyxPLDJCOzs7YztjOzs7ZTtnQixNOztlLFk7ZTtnQjtnQjtpQixJOzs7Ozs7OztjO2E7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7STs7SyxVO0s7Ozs7O1E7Ozt5Qjs7O1EsaUI7O1M7VTtVOzthLDJCO2E7YyxJLGlCOzs7cUM7Ozs7OzsyRDs7YyxhOzs7Ozs7O1k7VTs7YSxZOzs7Yzs7YTtZOzs7Ozs7Yzs7OztjOztlLEs7Yzs7YTs7YzthLE87O3FDLDhCOzs7OzthOzs7YzthLE87O3FDLDhCOzs7O1M7Ozs7O2E7Ozs7YzthO2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthOzs7Yzs7O2lCOzs7O2lCOzs7O2lCOzs7b0I7OztvQixxQzs7Ozs7O29COzs7O3VCOzBCO3FCO3FCOztvQjttQjs7Ozs7aUI7OztpQjs7O2tCO2lCOzs7aUI7OztrQjtpQjs7OztpQjs7O29COzs7cUI7b0I7bUI7Ozs7O2lCOzs7OztpQjs7O2EsTztZOzs7Ozs7OzthO2E7O2M7O2EsTztZOzthO2E7OztnQjs7OztnQjs7OzttQjs7OztzQjs4Qjs7Ozs7OztnQjs7O2EsTztZOzs7O2E7OztjOzs7aUI7Ozs7aUI7OztvQjs7O3FCOzs7O3dCOzJCOzs7Ozs7OztvQjttQjs7OzthOzs7Z0I7Z0I7aUI7OztvQjs7O29COztnQjtlOzthLE87WTs7Ozs7YTs7Ozs7YTthLE87WTs7O2E7Ozs7Ozs7O2dCOzs7Ozs7aUI7Ozs7Ozs7OztnQjs7O2EsTztZOzs7YTs7Ozs7Ozs7Z0I7Ozs7OztpQjs7Ozs7YSxPO1k7O2E7OztjOzs7aUI7Ozs7aUI7Ozs7Ozs7aUI7Ozs7aUI7OzthLE87WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7Ozs7O21DOzs7Ozs7bUI7Ozs7OzttQjs7OztRLHNCO1E7UyxPO1E7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOztpQzs7ZTs7Z0IsZTtlLE87O3dDLG9CLG9COzs7ZTs7Z0IsTTtnQixVOzs7aUM7O2lDOztpQzs7aUM7O2lDOztpQzs7a0M7O21DO3lDOztXOztRO1M7VztTLE07UyxNOzs7Yzs7UyxNO1MsTTtTLE07O1MsTTs7Uzs7WTs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTztPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CLE8sOEI7Rzs7STtJLE8sd0MsZTtHOztJLE87OztjO2M7ZTs7Z0I7Ozs7YzthOztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7O1M7O1UsWTtVLG9CO1M7VTtXLE87Vzs7Ozs7Ozs7O1M7Ozs7O1U7Ozs7VTs7Ozs7Uzs7Ozs7O2E7OztZOzs7Ozs0Qjs7MkI7O1M7OztVO1UsTTtTOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7OzRCO1E7O3dCOzs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0M7OztJO0k7OztPO08sTzs7O087OztVOzs2QixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPO3VDLE87Ozs7TyxPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVOztJO0c7O0k7STs7OzZCLFc7Ozs7USxzQztROzs7Ozs7Szs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7Vzs7O2M7YyxPO2E7Ozs7Ozs7O1c7OztjO2MsTzthOzs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7Szs7UTs7O1c7Ozs7WSxPO1ksTztXLFc7VTs7Szs7UTs7eUI7O0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLO0s7O1E7O3lCOztJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7VzthOzs7Z0I7Z0IsVztlOzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2dCOzs7aUIsTztnQjtlOzs7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7OztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7dUI7O1M7Ozs7O1UsTztVLFU7Ozs7Ozs7Ozs7OEI7OztjOzs7ZSxPO2UsTzs4Qjs7Ozs7Ozs7Ozs7OztRO1M7Vzs7O2M7Ozs7ZTs7O2dCOzs7YztlLFE7ZSxPO2UsZ0I7ZTtpQjs7K0IseUI7O2U7YzthOzs7OztROzs7UztXOzs7YztjLFc7O2Msc0I7YTs7O29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzJCOzs7UTs7O1M7Vzs7O2M7aUM7O2Msb0I7YTs7O1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87MkI7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2U7OztnQixPO2U7Yzs7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJLFc7SSxPOzs7Yzs7OztlLFE7ZSxVO2M7Ozs7b0M7OztpQjs7O2tCLE87a0IsTzs7K0I7OztpQjs7a0IsTztvQzs7Ozs7OEI7O2MsTzs7Ozs7Rzs7STs7SyxXO0ssVztLO0k7Rzs7STs7Tzs7O1U7VSxjO1M7O0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE07Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixNO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7OzBDOzs7OztRLE07Tzs7USxNO21COzs4Qzs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7TyxNOzt3Qzs7O087Ozs7USxNOzZCOzs7Tzs7O1E7VTs7O2E7YSxXOzthLHNCO1k7OzttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7UztXOzt5QixPLGtDOzs0Qjs7O3dDOzs7Ozs7Z0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7Ozs7Ozs7Ozs7Ozs7O3lDOzs7OztLO3lEO0s7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7O1E7VTs7d0IsTyxrQzs7d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7UTs7O1M7O3lDOzs7O087OztRLE07dUI7OztPOztRO21COzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLE87Ozs7Ozs7MkI7OzhCLE87O2U7ZTs7Ozs7Rzs7cUIsTyx5QztJLDBCO0k7OztPLE87OztpQjs7OztpQjs7Ozs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7OztRLFc7O1Esa0M7Ozs7O1Esa0I7O1MsVzs7OztHOztJLE87K0MscUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7Uzs7Ozs7WTs7YTs7OzRCOztZOztZOzs7Ozs7OztZOzs7YTs7Ozs7O2EsVTs7Ozs7Ozs7O2E7YyxXOzs7YyxjOzs7WTs7Ozs7Ozs7Ozs7Ozs7OztxQjtlOzs7Ozs7Ozs7OztvQjtjOzs7Ozs7OztlOztnQjs7O2dCOzs7Z0I7Ozs7ZTs7Ozs7O2E7O1k7YTs7O2E7OzthOzs7O1k7Ozs7Ozs7O1UsRyxnQztVLFc7VTs7O1c7WSxPO1ksTztZLE87bUI7VTs7UyxJLFc7Ozs7Ozs7WTs7Ozs7UztzRDtTOztVOzs7Ozs7Ozs7Ozs7d0I7O1M7OztPOztRLE87USxPO1E7OzJCO087UTtRO087OztLO007TTtNO0s7Ozs7STs7TTs7Ozs7TyxTO087Ozs7OztNO087OztNOzs7c0I7STtHOztJOzs7TSxXO0ssb0IsTztLLFc7O2dCO0k7O0ssUTtLLE87SSxXO0c7OztJOztLLDRDOztJLGE7STtHOztJO0ssTztLLFU7O087OztXOzs7WTs7VztXO1U7Ozs7Ozs7Ozs7OztLOzs7O1E7Ozs7O007Tzs7O08sTTs7Ozs7Ozs7STtLO087OztVOzs7a0I7VztVO1M7Ozs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7Szs7d0I7O3dCOzt3Qjs7OztLOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztVO1k7OzhCLHFCOztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7O2E7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07Ozs7ZTs7NkIsdUI7Ozs7Ozs7Ozs7OztTO1U7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OztTOzs7O1M7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFE7VSxTOztVO1U7WTs7Ozs7Ozs7SyxNOzs7STtLOztNOzs7O0k7Ozs7STtLOzs7Ozs7Ozs7Ozs7O0ssTztLLE87OztJO1k7Ozs7Ozs7STtJOzs7SztNOztJOzs7Ozs7Tzs7O0s7Ozs7Ozs7OztLOzs7OzBDOztJO0c7O0k7STs7Ozs7Ozs7SyxzQjtLOztHO0c7STtJOztJO0s7Szs7O0ksTzthLDRDOztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STtJOzs7Ozs7O1U7Ozs7VyxRO1c7Ozs7VTs7Ozs7UTs7OztTOzs7Ozs7Ozs7VTs7O1csTTtXLE07VTs7OztLOztHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0c7STs7Ozs7OztJOztPOztPOztPOzs7UTtRO3FDLFk7Ozs7Uzs7O1UsTTtVLE07UyxHLHdDOztrQjs7TztlOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Yzs7O2lCO2tCLFE7a0IsUTtpQixPO2dCOztZLFE7Vzs7Ozs7O1M7OztVLFE7VSxRO1U7VSxNO1UsTTtTOzs7Ozs7Ozs7OztLOztJO0ssTTtLLE07STtHOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O0s7O0k7O0ssUztLLFc7SztLO0ksTztHOztJOzs7Szs7O0ksTTtHOztJOzZDOztJLE07Rzs7STs7OzZDOztJLE07Rzs7STs7dUI7OztLLE07O0ksTTs7Rzs7O0k7Ozs7O007OztLO00sTTs7O2dEOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TTs7O087Ozs7cUI7OztRLE07Tzs7O1EsbUI7Ozs7OztJLE07Rzs7SSxZLE87Ozs7O08sTzs7OztPLE87Ozs7Ozs7OztPLG9DO08sTzs7O08sc0M7TyxPOzs7OztJO0ssTztJOzs7STs7OztRLGdDO1EsTzs7O1Esb0M7USxPOzs7SSxPOzs7SSxZOztnQjs7SSxPO0c7O0ksYztJO007eUMsOEI7SztNO00sTztLLE87O0ksVztJLE87Rzs7SSxjO0k7TTt5Qyw4QjtLO007TSxPO0ssTzs7SSxXO0ksTztHOztJLDhCOzs7TyxzQzs7Ozs7Ozs7OzsyQjs7Ozs7OztPOzs7UTs7YTs7Ozs7ZSxNOztHOztJOzs7OzttQjs7O007OztPOztZOzs7Ozs7SyxvQjs7Ozs7O0k7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7OztJO0ksTztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7VyxxQzs7Ozs7Ozs7OztXLG9DOzs7Ozs7Ozs7UyxlLFU7dUIsTTs7Ozs7TSxNOzs7Ozs0QixPOzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7OztPO087O1E7O087Ozs7UTtPLE87O08sTztlLE87O0c7O0k7Ozs7UTtROztRLE87Z0IsTzs7O0kscUIsTyxnQztHOztJO3dDO0k7Rzs7O0s7OztNLE87TSxNO007TSxPO0ssTzs7Ozs7Ozs7O0k7SztPLDJDO0ssUyxXO0ksTztHOzs7Szs7UTs7Ozs7SztJO0k7Rzs7STtLLGE7Ozs7TTs7Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7OztRLE87O1EsTTs7SSxPO0c7O0k7OztLO0s7Tzs7Ozt5QixtRDs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7O007UTs7OzswQixPLDRDO0s7YTs7Ozs7aUI7OztLOztNOzs7O0k7O0s7SSxPOzs4Qix5Qzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7STtLLE87SztPOzs7MEIsTyxzQjtJLE87Rzs7STs7Tzs7UTtROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsSztRLEs7UTtRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztLLE87SyxPO0ksTzs7Ozs7Ozs7Yzs7O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7Ozs7OztHOztJO0ssTztJLGlCLE87SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLE87USxVO087OztPO1EsTzs7OztPOzs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87OztJLE87Ozs7O2M7O2U7ZTtnQixVOzs7Z0I7O2dCLE87Z0IsTztnQixPO2UsTzs7O2UsTTs7Yzs7O2lCOztpQjs7a0I7Ozs7O3VCOzs7d0IsTzs7d0IsTzt1QixPOzs7O2tCO2tCOzs7OztxQixNOzs7b0I7Ozs7bUQ7Ozs7b0I7O3FCLGU7b0I7Ozs7Ozs7O29COztxQixlO29COzs7Ozs7OztvQjs7Ozs7Ozs7OztpQjs7Ozs7Ozs7YTtHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO08sTzs7Ozs7K0I7O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7TyxPOzs7OzsrQjs7Rzs7O0k7SSxPOzs7OztjOztpQjs7a0I7b0I7Ozs7Ozs7Ozs7Ozs7OztvQjs7cUI7cUI7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0I7NkI7OztpQixtQjs7a0IsTTs7Ozs2Qjs7YyxhOzJCLHNCOztlLE87Ozt5QyxPLHNCOzs7YztjO2E7OztJLE87OztjO2U7O2dCO2dCLFc7ZSxXOzs4Qzs7Ozs7OztjO3NCOzs7Ozt5Qjs7O29DO3lCOzs7Ozs7NkIsaUI7NkIsTzs7Ozs0Qix1Qzs7OztxQzs0Qjs2Qjs2Qjs2QjsrQjs7Ozs7Z0Q7NEIsTzs7Ozt5Qjs7NEI7OzhDLGlDOzt5QjswQjs7OzhCOytCLE87OytCOztnQyxPOytCLE87OzhCOzsrQixPOzhCLE87OzZCOzJCOzs4QixlOzs4Qjs2QjsyQjsyQjsyQjsyQixNOzBCLE87Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7O3lCLE87d0I7YTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0k7SSxPO0c7RztJO0k7STs7O0k7TTs7d0Isa0IseUI7OztJLE07RztHO0k7Ozs7Ozs7STs7O0c7O0k7Rzs7STtLLE07O0s7O0c7O0ksNEIsSztJLE87OztjOzs7YTs7Rzs7SSxPOzs7YyxxQjthOztHOztJLE87OztjLFk7OztrQjtnQjtnQjs7O2M7YTs7O0c7O0k7TTs7d0Isa0IsTyw0Qjs7STs7TztTOzs7WTs7O2EsSTthLFE7OztnQjtjO2M7OztZLE07O1c7O0k7Szs7TTtRLDJDO0s7O0ksTztHOztJO0k7TTs7O1MsWTs7O1UsTzs7UyxNO1E7O0k7Rzs7O0k7Ozs7OztJO0s7TSxJO007O1MsTztRO1k7Ozs7Ozs7SyxXO0ssTzs7Rzs7STtLLE07O0s7O0c7O0ksZTtJO0ssTTs7Ozs7SSxTO0k7STtHOztJLGlEO0k7OztPOzs7OztPO1EsSSxJLDZCLE87USxJLG1DLEk7b0I7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO1U7VztZOztlOzs2QjtjO1k7YztXLE07Ozs7O3dCOzs7VSxTOztVOzs7Ozs7TztNOzs7STtLLE87OztlO2UsSSxXLG9DOzs7Ozs7O2dCLE07OztjO29COztHO0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087Ozs7aUMscUM7O0ksUTs7STtLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLO0sscUI7O0c7O0ksTzs7Ozs7YyxtQjs7ZTtlOzs7ZSxNOzs7ZSxnQjtlLE07OztjO2UsTTtjO2M7YzthO0c7RztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7OztjO2E7Ozs7O0s7STtJOzs7O00sTTtLO0s7Ozs7OztRLGdCO1EsTTs7TyxJLEk7Ozs7UTtROzs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087UTtVOzswQjs7UTs7VywyQyxlO1EsTztPOztPOzs7USxVOzs7OztROzs7OzthLDRDLFM7Ozs7OztPO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxTO1E7Ozs7O2dCOzs7O08sVztPOzs7VTtVO1csVztXOzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7OzthO2U7Ozs7O2tCOzs7OzsyQjtpQjthO1k7OztXOztRLGdCO1E7VTs7K0IsMEI7OztRLG1DO1E7VTs7O2E7YSxPO1k7OztPLG1DOztPOzs7USxVOzs7UTtRO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxPO1EsVTs7O1EsTztPOzs7VTtVLEksVyx3Qzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxPO1EsVTs7a0M7UTtROztPLE07OztPO1E7UztTO1EsSTs7OztTLGtCLFE7UyxNOzs7Ozs7OztRO1M7Vzs7O2M7YztjO2MsSTs7Ozs7ZSxrQixRO2UsTTs7O2M7YTs7YztjLE87YTs7O1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WTthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTtRO1E7UTtVOzs7YTs7YztjOzs7O2U7O2dCO2dCO2dCLFU7Ozs7Ozs7Ozs7OztlOzZCOztlO2dCLE87Z0IsVTs7Ozs7O29CLE07Ozs7OzttQixHO29CLFM7b0I7Ozt1Qjs7O3dCOzt5QixLOzBCLFk7O3FEOzs7MEIsTTs7Ozs7O3VCO3NCOzs7Ozs7O2UsTTs7Ozs7Yzs7aUI7Ozs7O29CLE87Ozs4Qjs7O21COzs7ZTs7Z0IsSztpQjtrQjtvQjtxRCxjO3NCOzs7OzsyQjs7O2dCLE07OztvQzs7d0I7O2M7OzthOzs7UTtVOztrQyxpQjs7O1EsVztPOztROzs7VyxlOztZLE07O1c7VTs7O087Ozs7VyxPOztVO1E7UTtVO2E7OztPLEksNEIsTztPOztPOzs7USxTLHdDLFk7UTtVOzs7NkIsb0IsNEI7O2E7K0IsOEM7YTs7MEI7YTs7Z0I7O2tDLG1DOzthO1k7OztRO1E7UTtVOzt3QixPLCtCOztRLE87UTtPO087O087Ozs7UTtRO1U7OzthO2EsRztjLE07O2EsTztZOztRLE07UTs7NEIsTyx3QztRO1U7OzthO2E7WTs7UTs7O2E7O1EsUztROzs7Vzs7O2M7YzthOztRLFE7Tzs7Tzs7O1EsVTs7O1E7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7TTtROzs7Vyx3QixROzs7WSxjOztXO1U7O007O1M7SztLLE87O0ksTztHOzJDO0c7O0k7SSxPO0c7O0k7STs7SztJO0k7STtHOztJOztJO0s7Tzs7OztVO1U7VTtTO0s7STtJOzs7O0ssTztLLE87STtHOztJO0k7SztPOzs7MEIsb0IsNEI7O1U7VTtVO1U7Uzs7O0ksZ0I7Rzs7STs7Szs7O00sUyx3QyxZO007UTs7OzJCLG9CLDRCOztXO1c7WTtZO1c7VTs7O0s7Szs7SSxPOzs7O2M7YzthO0c7O0ksTztHOztJOztlO2U7Ozs7TyxPOzs7Ozs7OztpQixPO2dCOztPLGtCLE07TyxPOztPOzs7O1EsTTtPLE87OztPLHVCLE07TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Tzs7USxNOzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOzs7UTs7VyxPO1U7TyxPOzs7OztpQjtpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7TyxxQixPO087TyxZOzs7OztTLE87Ozs7bUIsVztrQjs7O087O087OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7USxPO087TyxHO1E7ZTtROztRLFc7UTs7TyxPOztPLG9CLE87TyxPOzs7TyxPOzs7OztpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7O08sTzs7Ozs7aUIsWSxPO2lCOztrQixPO2lCLE87Z0I7OztPLHFCLE87TyxPOzs7Rzs7O007O087ZTs7OztvQzs7O3FDOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsa0M7O0k7O3FCLE87O3VCLE87O3FCLE87O3FCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STs7Szs7O007O0s7TSxPO0s7O1EsTzs7USxPOztRLE87Ozs7O0ssTzs7O08sb0IsTztPLE87OztPLE87OztPLG9CO08sTzs7O08sTzs7OztxQzs7Ozs7OztRLE87OztPOzs7O1E7Ozs7O1MsTzs7Ozs7Ozs7Ozs7USxPOzs7OztzQzs7OztRLE87Ozs7O3NDOztPO1E7VTs7d0IsbUM7O1EsTztPLE87Ozs7OztxQzs7OztxQixPOztPLE87O087O1E7VTs7NEIsK0M7O08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksTzs7Ozs7OztnQzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7STs7O08sTztNOztJLE87Rzs7STtXO0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7c0IsaUQ7O0ksTyw0QyxhO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7UTtVOzs0QixvQixXOztRO1U7OzRCLG9CLFc7Ozs7OzswQjs7Ozs7Ozs7Ozs7Ozs7OztVO1csTTtXLFE7bUY7VSxNO1M7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozt5Qjs7Tzs7eUIsTzs7K0I7aUM7O0c7O3NCLHlDO0k7Ozs7OztROztTOzs7Ozs7OztROztTO1c7OztjO2M7YTs7Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7Ozs7Ozs7SSxtQjs7O0k7RztHOzs7Ozs7O0ksTTtJO21COztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7UTs7O1c7a0Q7VztVOzs7Ozs0Qjs7O0ksTzs7NEI7O0c7O0ksTzs7NkIsd0IsWTs7Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7USxJLHVCOzs7Ozs7USxJLG9COzs7Ozs7USxJLG9COzs7Ozs7OztPLEksdUI7Ozs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCLG1DO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7MEI7O0s7OztPLGtCLE87O087OzttQjtLO0k7O0s7Szs7O1E7Ozs7O1M7USxXOzs7Ozs7c0I7TTs7STtJOzswQiwyQztHOzs7O0k7Ozs7Ozs7OztJO0s7O087O1U7SyxPO0ssUTt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7OztxRDs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07UztRLE87OztrQjtrQjttQjs7c0I7Ozt5Qjs7d0I7Ozs7Ozs7OztrQjtpQjs7O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7VztXO2E7OztnQixPOztzQywrQjs7OztlOzs7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7UTs7O21COzs7c0I7c0I7O2dDOztzQjtxQjs7Ozs7Ozs7UTs7Uzs7O1M7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7OztLLE87OztlO2U7Yzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7OztNO0s7TTs7Ozs7Szs7OztJO0ssWTtLO087SztPO1M7OztZO1ksa0I7Vzs7STtHO0c7STs7STtNOzs7UyxtQjtTLHVDOztVO1csTTs7eUIsVzs7VTtTOztxQixXOztTO1E7Ozs7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7O1U7WTs7O2Usa0I7bUY7ZSxNO2M7O1UsTTtTLGdCO1UsVztVLE87OztvQjs7O3FCLFE7Ozs7cUIsTzs7b0I7bUI7OztTLFc7UyxXO1MsVztTLE87OzttQjs7O2lDOzs7NkI7a0I7Ozs7O007OztNLE07O0k7Rzs7STs7Ozs7O0ssTztJO2dCOzs7Ozs7Rzs7STtLLE07O21CO0ksbUI7STtHOztJLFk7O0s7TTtPLE87TyxVOzs7Tzs7cUIsbUI7Ozs7O007Ozs7OztNLGM7Ozs7VTs7VzthOzs7Z0IsVztlOztVOzs7VTtnQjs7O2EseUMsYTs7VTtVLE87O2tDOzs7TTs7O0k7Rzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7O0ssUTs7Ozs7O08scUIsVTs7cUI7Ozs7bUI7O0k7SyxpQjtLO087OztVLFc7Uzs7SztPOzt5Qiw4Qjs7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7TTtROzs7Vzs2RTtXLE87VTs7TTtNLFM7SyxnQixNO0s7Yzs7K0I7OztJO0c7O0k7SztPOzt5QixrQixPLHVCOzs7STtLLEs7O00sZ0I7O0ssVTs7O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7VTttQjs7cUMsa0IsUzs7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTtPLE87OztpQjs7O2tCOzRCO2lCO2lCLHdCO2dCOzs7Ozs7OztPOzs7O1E7TyxTO087Ozs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTO1MsTztnRCxrQjtRO007Ozs7Ozs7O1M7O1k7OztlO2UscUI7ZTtnQjtnQjs7eUI7Z0IsTTtlLE87O3VDOztjOztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksTzs7NEI7O0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNOzs7VTs7OztZOzs7VTtTOztNOzs7OztNOzs7O087TSxTO007Ozs7TTtPO08sVTs7O087TyxPO087Ozs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPO0ksTzthOzs7Z0I7aUI7O2tCO2lCLE87O3dDLHFCOzs7Z0I7OztnQixPOzs7MEIsVzswQixPO3lCOztlOztHOztJO0ksd0M7STtLO0s7OztLOzs7O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOzs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COztzQzs7Ozs7a0I7bUI7cUI7Ozt3QixrQjs7OzhEOzt3QixNOzt1Qjs7bUIsTzs7Ozs7Ozs7eUM7a0I7Ozs7Ozs7bUI7O29COztzQixNO3FCLFM7cUIsSzs7OztvQixJOzs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7O3dCO3dCO29DO3VCOztzQzs7Ozs7Ozs7O3dCOzs7OzBCLE87Ozt3QixNOzt1QjttQyxlLDRCOzttQyxjOzs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsa0I7eUY7cUIsTTs7b0I7Ozs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCO2tCOzs7cUI7cUIsRyx3QztxQixZO21EOzs7c0I7OztxQjtvQjs7Ozs7Ozs7bUI7OztzQjtxQjs7Ozs7ZSxHOzs7O2dCO2lCLEs7aUIsWTs7Ozs7Ozs7ZTtnQjtrQjs7O3FCLGtCO3lGO3FCLE07O29COzs7ZTtnQixLO2dCOzs7Ozs7bUM7Ozs7Ozs7Ozs7NkIsTzs7O1MsTzs7aUMsc0I7O1E7TTtROzsrQix1Qjs7TSxPO00sTztLLE87Yzs7O2lCLFk7Ozs7O2lCLHFCO2lCO2tCO2tCOzs7O3VCO2tCLE07aUIsTzs7eUM7O2dCOzs7STtLO0ssTztJLE87OzJCLHNCOztHOztJO0ksTzthOzs7Z0IsMEM7Z0IsTTtlOztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VSxZO1U7OztXO1c7VztVO1M7O007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7UywyQixNOztjO1U7VyxROzs7Ozs7VzthOzs7Z0I7Ozs7aUIsUTs7Ozs0QjtnQjtlOzs7OztXO1c7O1c7O3lCLDBCO1ksVztZLE87Vzs7Ozs7Ozs7Tzs7Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix5Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OztRLEksd0MsaUI7USxPLDJDLGlCO2U7Ozs7O1UsNEMsUztNLE87OztnQixpQzs7Ozs7aUI7Ozs7Ozs7OztrQixNOzs7aUI7OztrQjtrQjtrQjtrQjtrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Z0M7Ozs7Ozs7OztvQixXOzsrQjs7O2tCOztpQjs7Z0IsTTtlOzs7OztLOzs7TSxPO00sTzs7TTtROzs7Vzs7WSxNO1c7O1ksTztZLE87NEQ7VztVOztPO1E7USxNOzs7OztPLEkseUI7Ozs7Ozs7OztRLEkseUI7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCLG9DO2dCLFc7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7VTs7Ozs7Ozs7Yzs7ZTs7O2M7Ozs7Ozs7Ozs7Yzs7ZSxPO2UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztHOztJO0k7O007Ozs7O087TSxXOzs7OztLOztHOzs7OztvQjs7O007UTt3QyxPLHdCOztXOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQixlOzs7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7b0IsUzs2Qjs7Ozs7Ozs7Ozs7OztxQjs7cUI7b0I7b0I7bUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLHFCLE87bUI7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLG9CO2dCOzs7Ozs7Ozs7UTs7Ozs7O1E7UyxPOztROztPOzs7O087USxPOztPOzs7SyxNOztHO3NCOztJO0s7SztNOzs7Ozs7Tzs7Ozs7Ozs7Szs7Ozs7SyxrQixPOztLOztHOztJO0s7Ozs7O007Szs7STtHOztJOztNO3FDLDZCO0k7Rzs7STtLLFk7O0s7STtJO0s7Tzs7O1U7OztXLFE7OztXO1U7Uzs7Ozs7STtJO0c7O0k7STttQjs7OztNOzs7OztHOztJO0k7bUI7Ozs7TTs7Ozs7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7VSxPOzs7b0I7b0I7bUI7Ozs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7STtLLE87SztlLHlDLGE7SSxXOzs7aUI7Szs7Ozs7O007Szs7TTtPLE87Ozs7VzthOzs7O087Tzs0Qjs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTO1U7WTs7O2UsMEM7ZSxNO2M7O1U7VTs7O1UsSztXOzs7Ozs7Ozs7OztnQjs7OztROztzQixPLGtDOzs7Ozs7Ozs7TSxNOzs7O1U7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7VyxPOzs7cUI7Ozs7O29COzs7VyxvQztXLFc7Ozs7O1c7OztRLE8sd0MsZTs7Ozs7TTs7STtJO0c7O0ksSSw2Qjs7Szs7TSx5QjtNLG1CLFc7TSxROzs7TSxHO087UTtTLE07UyxNO1E7UTtTO1E7VTs7O2E7Ozs7Yzs7YTtZOztTO1EsSSxPOzs7Tzs7Ozs7Ozs7SyxZO007Ozs7O21CO0k7Szs7UTs7eUIsdUM7Ozs7O007OztTOztxQztZLDBCO1MsZTtTLE87UTs7OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O0s7TywyQztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjtTO1U7O1cscUIsTztXLE87OztxQixTOztvQjs7O1UsTztTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxNO1UsTztVLE07Z0I7VTs7O2U7O2dDLHNCOzs7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SztPOzs7VTtVLE87Uzs7O0k7SztNO1E7OztXO1csZTtVOzs7TTtROzs7VztXLE87Ozs7O3FCLE87b0I7VTs7OztLO00sTTtNO1E7OztXOzs7O1ksVztXLE87VTs7O0ssRzs7O0k7OztPO08sTztNOzs7STtHOztJLFUsNEMsUztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SSxJLFcsMEM7Ozs7OztHOzs7SztLO007TSxHLDBDO00sYTttQjs7TTtPLDhCO08sUTs7Ozs7VSxxQjs7Ozs7O1UsTzs7O1UsZTtVO1c7WSxPO1k7Yzs7O2lCOzBCO2dCOzs7Vzs7Ozs7O1csTzs7bUM7Ozs7Ozs7Ozs7OztVLE07Ozs7VSxXO1U7OzthLGtCLFE7OztlOztnQixJO2UsTzs7dUM7Ozs7Ozs7OzthO1k7O1UsVzs7Ozs7OztVOztXLEk7VSxPOzs7b0I7b0I7bUI7OztNOztJO0k7Rzs7STtLLE07SyxNO0ksTztHO0csZ0I7O0k7OztLLG9CO0s7Tzs7O1U7Ozs7Vzt5QjtVO1M7O0s7SztJOzs7Tzs7OztPO007OztLOzs7USxLO1M7UyxLO1U7Vzs7O2M7YztlLEcsNEM7NEI7ZTtlLEcsbUM7ZSxZOzs7O21CLE07OzttQjtvQixVO29COzs7Ozs7O29CLFc7b0IsRztxQixNOzs7OztlLE87O2E7VTtXO1c7Vzs7OztpQzs7Ozs7UTtPOzs7Syx3QjtLOzs7UTtRO1E7UztTLFE7OztTLEs7UyxNO1E7Ozs7OztTLE07Ozs7Ozs7Tzs7O0s7TSxPO00sTTtNO1E7OztXLFU7VyxXO1U7O0s7TTtNOzs7UztTLEcsMkI7Ozs7O2U7UztROzs7TTtPOzs7VSxHLDBDO1UsZ0I7O1U7VztXLE87VzthOzs7Z0IsTzswQjs7ZTs7O1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1U7VyxNO1csVTt3QixPOzs7Ozs7Ozs7VTtVLE07Ozs7OztTO007O3dCLG1CLG1COzs7O0ksTzs7O2M7OztlO2U7ZSxZOzs7ZSxlOzs7YztlO2UsTTtjLGM7Ozs7O3FCO2UsTzs7YzthOzs7O0c7SSxZLHlDLGtCOzs7OztJLHFDLE87O0ksTzs7O2M7YzthOztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQyxROztLOztNLE07TSxNO0s7OztRO1E7UyxNO1EsaUM7O1M7VSxPO1UsUTs7OztXO1ksTTtZLE07a0I7Ozs7Ozs7OztRLFEsTTtRO087Ozs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7SztPO3dDLHFCO0ssYTs7Ozs7TSxPOzs7Z0I7Ozs7aUI7aUI7Z0I7ZTs7Ozs7STs7Ozs7O1M7O1U7WTs7O2U7ZTtjOzs7O3dDOzs7O1M7VzswQywwQjtVO1c7YTs0Qyx3QjtXLE07Ozt5Qzs7VTtXLE07VzthOzs7Z0IsVTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7VzthOzs7O2dCOzs7O1csVTs7VyxNO1U7OztXLE07aUI7Ozs7Ozs7SSwyQjtJLE87OztJLEksc0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7SSxPOzhDLG9CO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7STs7O0k7O087d0M7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7STtLO087OztVOzs7Ozs7VTs7O1M7Ozs7O0s7TztJLE87OztjOzs7O2U7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs4QixPLGlDOzs7OztLLGM7bUI7O0ssTzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7NEIsOEM7Rzs7STtNOztnQyxXLDhCOzs7O0k7STtLLFk7bUM7d0I7SyxzQzs7OztHOztJLFU7SSxPO2E7OztnQixZOzs7aUIsaUI7O2dCLE07ZTs7RztHOztJOzs7Ozs7STs7STtHOztJLE87OztjLEksbUI7YyxXO2E7OztHOzs7Ozs7O0k7OztJLEksVSxtQzs7Ozs7O0c7OztLO0s7TSxJLDZCLFU7O087O1EsTTtxQjs7O007Ozs7OztVO1UsTztTO00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7Ozs7YTtjOzs7a0IsbUIsUTs7OztvQixPOzs7b0Q7O2tCOztlLE07ZSxRO2UsUTtlLFU7Ozs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJLE8sNEMsUztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssTzs7K0I7Ozs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozs7Ozs7aUI7bUQsUzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTTtNLE87TSxVOzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Ozs7VTs7OztnQzs7O1E7OztROzs7OztRLE07O0k7Rzs7SSxJLDJCLEk7Ozs7K0I7Ozs7Ozs7Ozs7TyxHOzs7Vzs7Ozs7bUI7Ozs7YSxvQzs7STtHOzRCLHVDO29DLHVDOztJOzs7Ozs7O08sRztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxPOzs7OztjLE87YTtHOzs7STs7Ozs7OztNOzs7UztrQixNOztROzs7O0s7TSxPO2U7O0ksWTtJLGE7Ozs7Ozs7OzsyQjs7OztJOzs7O0ssTztLLE87O0s7O1E7OzBCLE8sMkI7Ozs7Ozs7Ozs7Ozs7OztJOzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHVDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STtJOzs7TztPLEc7USxNO3VCOztNOzs7Ozs7Ozs7SyxPOzs7OztlO2dCLFE7Z0IsTTtnQixPO2dCLE87ZTt1Qjs7Ozs7OztjOztJO0ssUztLO087OztVLG1CLFE7Ozs7OztVO1M7O0k7Rzs7STtLOztNLE87TSxNO0s7aUIsd0MsWTs7O0k7O0s7OztJOzs7O0k7O0ssTzs7O2U7O2dCO2tCOzs7O3FCO3FCO3NCO3dCO3VELFk7c0IsYztzQjtzQjs7OztzQjt3QjtzQjtzQixVOzs7c0IsRzt1Qjs7cUI7c0IsTztzQixZO3NCLGdCO3FCLE07O29COztxQjs7OztxQjtxQjtxQjtxQixzQixPLDhCO3FCO3FCO29COzs7OztlO2M7O0k7Szs7O0k7RztHO0k7TTs7O1M7UyxPO1E7O0k7TTs7O1M7Uzs7OztTO1UsaUI7VSxPO1MsTyxXO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7UyxPOzs7bUI7Ozs7Ozs7aUI7Ozs7SyxPOzs7ZTs7OztHOztJLE87OztjOzs7ZSxTOzs7O2dCLE07O2U7Z0I7OzthOztHOzs7Ozs7OztNLG1CLFU7OztPO1E7UyxTO1MsTzs7Vzs7O1MsSTs7Ozs7OztTO1UsTztVLE87VSxPOztZOzs7OztTLE07Ozs7Ozs7UyxNOzs7O00sTTs7O0k7Ozs7O0s7SztNLEs7O1EsVztRLEc7OztTLGdCO3NCOzs7Ozs7O3FCOzs7Z0I7TyxjOzs7Ozs7WTs7YTsyQjs7Ozs7Ozs7O08sVztPO1EsWTtRLFU7O1E7OztTLGE7UTs7Uzs7MEI7OztRLEksVzs7Ozs7O21COzs7cUI7Ozs7O1E7Ozs7OztPLE87OztpQjs7Ozs7TyxNOzs7OztROzs7UyxVOzs7O3FDOzs7Ozs7OzswQjs7Ozs7O3dCOzs7OztnQjtnQjtNLE07O0k7O0s7STtJLFc7STtLOzs7TTtROzs7eUI7O0s7Ozs7OEIsTzs7O0c7O0k7SztLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7O2dDO21CO1E7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VSxPOzs7b0I7Ozs7Ozs7O2tCOzs7O00sTzs7O2dCOzs7O0k7O0s7SztJO0ksTzs7O2M7ZSxROzs7OztjOzs7aUI7OztjO2E7O0c7O0k7Ozs7Ozs7SztLO00sTztNLE87TSxPO0ssSyxpQztLO007TSxPO00sTztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLHFCLE87OztJO0c7O0ksTzs7O2M7YzthOzs7O0c7O0k7STtLLGM7SztPOzs7VTs7VztXLE87VyxhO1c7VztVOzs7Ozs7Ozs7Uzs7SyxlO0ssUTtLO087OztVO1csTztXLE87VSxXO1M7O0s7Tzs7O1U7O1c7YTs7O2dCOzs7OztXO1csYzs7OztZLEksZSxLO1k7Ozs7ZTs7Ozs7O2UsVztlO2UsTztjO1k7O1c7Ozs7O1csTzs7Ozs7cUI7cUIsTzs7OzsrQjsrQjtnQztnQztrQzs7b0Qsb0IsYzs7Z0M7a0M7OztxQzs7OztzQyxPO3FDOzZDOzs7b0M7O2dDLFU7Z0MsUTsrQjs7aUMsTTs7Ozs7Ozs7Z0M7OztvQyxNOzttQztpQzs7O2tDOztrQzs7O2lDOzs7bUM7Ozs7OztpRDs7O3FDOzs7Ozs7O3NDO3NEOzs7cUM7Ozs7O2tDOzs7O2lDOzs7bUM7bUQ7OztrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7a0M7b0M7a0M7b0M7Ozs7Ozs7Ozs7Ozs7Ozs7a0M7O21ELDZCOzs7O2lDOztnQztnQzs7O21DO21DLEc7b0MsTTs7O29DOztrQzs7Z0M7aUM7aUM7bUM7O2tELE8sa0M7OzBDO2lDLE07O2dDO2lDOztvQyxPOzs7Ozs4QzsrQyxPOytDOzs7Ozs7Ozs7Ozs7OytDOzs7K0MsTzsrQyxPOytDOzs7Ozs7Ozs7OytDOzs4Qzs2QzttQztpQztpQyxPO2lDLFU7Ozs7Ozs7Z0M7O2lDOzs7aUM7OztzQzs7O3lDOzswQyxRO3FEO3lDLG1CLFU7OzswQyxPOzt5Qzt3Qzs7OztpQztpQzs7Ozs7Z0M7O2lDO2lDLE07Ozs7OytCO2dDLFE7Ozs7Z0MsTztnQyxPO2dDOzs7Ozs7Ozs7Ozs7Ozs7OytCOzs7a0M7Ozs7bUM7bUM7a0M7bUMsVzttQzs7Ozs7OzttQyxNOzs7aUM7OytCO2dDO2lDO2tDLE87a0MsVztrQyxVOzs7OztrQyxNOzs7OztnQzs7K0I7Z0M7Ozs7Ozs7Ozs7Ozs7Z0M7O2dEOztnQzs7aUMsTzs2Qzs7Z0M7O2lDLE87NkM7K0I7OEI7b0I7O1U7VyxPO1c7YTs7VzthOzs7Z0I7Z0I7ZTs7VyxROzs7O1U7VyxTO1csVTtVOzs7YTs7OztjLE87Ozt3Qjt5QjswQixPOzBCOzRCOzs7O3lCOzs7OzswQixPOzs7O3VCOzs7O2EsTzs7O3VCO3VCO3dCO3lCLE87eUI7MkI7Ozs7d0I7Ozs7O3lCLE87Ozs7c0I7O1k7O1U7VTs7a0I7b0Q7Uzs7Ozs7O0s7Tzs7Z0MsbUIseUI7OztLO087OztVOzs7OztJOzs7Tzs7O1E7USxNO3lCO087UTtVOzs0QixPLDRCOztRO1EsTztPOzs7OztnQjs7O007OztLLG1COztLLE87STtJOzs7TztPOzs7Z0I7Ozs7TTs7STs7O08sdUM7Tzs7O2dCOzs7O007O0k7OztPOztRO1EsUTttQjs7TyxNOztNOzs7STs7O08sdUI7Tzs7O1U7VTtTOzs7Ozs7OztXLGtCOzs7WTs7O1csTTs7VyxvQjs7WTs7YTs7Z0IsTztlO2E7ZTtZOzs7ZTtlO2dCO2lCLE87aUIsUTs7Ozs7aUIsTTs7Ozs7OztnQjs7OztrQjs7O3FCO29COzs7Ozs7Ozs7O2tCOzs7O2dCLE07Ozs7Z0I7O2U7Yzs7OztXLE07OztxQjtPLHFCOztRLE07O087Ozs7STtLO007UTs7O1c7VztVOzs7TTtRLFc7TSxPLFc7TSxVLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7OztPOzs7O0k7O087OztVO1U7Ozs7Ozs7Ozs7O1M7OztJO0c7O0ksSSxLOzs7O007O087TyxTO08sVTs7OztPO1EsUztRLE07USxpQjs7OztPO1EsUTs7O00sSTs7Ozs7TyxNOzs7O087USxPO1EsTztPOzs7VSxXLG1CO1U7VztZLE87bUI7OztVLGM7Uzs7O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztLO0s7Ozs7OztvQzs7Ozs7O0ksWTtJOzs7O0ksTzs7Ozs7Yzs7Ozs7Ozs7YTtHOzJCLCtCOztJLE87Ozs7O2M7O2UsUTs7OztlLE07Ozs7ZTtnQjs7bUI7O3FDLGlDOzs7Ozs7Ozs7ZSxNOzs7YztlO2lCOzs7b0I7cUIsUTs7O29CO21COztlLE87Ozs7ZTtnQixPO2dCO2tCOzs7c0I7Ozs7O3VCO3VCOzs7Ozs7cUI7Ozs7O2M7O2UsTTs7O2M7ZSxRO2U7aUI7Ozs7cUI7cUI7cUIsTzs7OytCOytCOzs4Qjs7b0I7O29CO29CO3FCO3FCO3VCOzt5QyxvQixjOztxQixPO3FCLE87b0I7b0I7OztxQjt1Qjs7OzBCOzs7O29CO21COzs7Yzs7O2lCLG9CLFE7NkI7O2lCLE07O2dCOztjOzs7aUI7aUI7a0I7O3FCOzs7Ozs7a0I7Ozs7Ozs7a0IsTTs7O2dCOztjO2U7aUI7OztvQjs7O3FCO29CLE87O21COzs7ZSxVOzs7ZTs7Ozs7Ozs7O2M7YTtHOztJO0ssUTtLO087Ozs7VztXOztVOztVO1U7O1M7OztLLFU7OztLLE07OztJO0s7SyxTO0k7Rzs7STtLO087Ozs7eUIsbUM7Ozs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7VSxPOztTLE07O1E7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7TTs7bUM7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7O0ksTzs7Ozs7YyxJLE0sMEM7O2U7Ozs7O2U7Z0I7Ozs7O2dCO2tCOzs7O2dCO2lCO2lCO21DOzs7O2dCLE07Ozs7Ozs7OztlO2dCLE07O2U7OzttQixXO21CO29CLFk7Ozs7c0I7O3VCLFM7MkM7Ozs7OztvQjs7OzsyQzs7O2tCO2dCO2tCO2U7OztrQixnQjtrQixPO2lCOzs7ZTtnQixPO2dCLE87Ozs7ZSxLO2dCLE07O2U7Z0IsTztnQixPOzs7YztlO2lCOzttQyxlOzs7Ozs7ZTs7Ozs7Ozs7O2M7YTtHOzs7STtJLE87O2dDLGdDOztjO2M7ZTtlO2U7aUI7O21DLG9CLGM7O2UsUTtlO2lCOzs7b0I7Ozs7cUIsTTtxQixRO29CO21COztlOzs7ZTs7Z0IsTTs7Ozs7Ozs7OztjO2UsYTs7YztlOzs7a0I7a0I7bUIsVzttQjs7Ozs7OzttQixNOzs7aUI7OztjOzs7aUI7aUI7a0IsVztrQjs7Ozs7OztrQixNOzs7Z0I7O2Msd0I7Ozs7O2U7Ozs7Yzs7Ozs7OztlOzs7Ozs7OztjO2UsTztlLE87OztlOzs7Ozs7OztrQjs7Ozs7Ozs7Yzs7O2lCO2dCOztjLGM7OztlLE07OztjO2U7ZSxXO2M7ZTs7a0I7Ozs7Ozs7Ozs7OztlLE07OztjOztpQjtjO2U7O2tCOzs7Ozs7O2UsTTs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7OztHOztJO0ssTztLLE87Szs7SyxxQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLFc7SztLLFc7STtJLE87Ozs7Yzs7OztlLE87ZSxPO2M7Ozs7Ozs7Ozs7Ozs7OzthO0c7O0ksWTtJLE87OztjOztlOzs4QjtjLFc7YTs7Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7TTtROzs7VyxXO1csTztVOztNLE07TSxXO0s7SztNLE87TSxPO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O0ksTyx3QyxZO0c7O0k7SztLO29COzs7Ozs7Ozs7Ozs7OztNOztJO0k7Rzs7SSxPOzs7YztjLE87O2E7O0c7O0k7SztNOzs7TyxPO08sTztNLE87O0s7OztNLE87TSxPO0ssTzs7STtLLE87STtJLE87YTs7O0c7O0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7USxPOztRLE87Ozs7OztPLE87OztPLE87O087Ozs7UTtPLE87Z0I7O2lCO2lCO2lCLE87Ozs7Ozs7O2dCOztPOzs7O1E7TyxPO2dCOztpQjtpQjtpQixPOzs7Ozs7OztnQjs7OztROztTO1c7Ozs7OztTLE87USxPOzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7O087Tzs7Ozs7O3VCLE8sMEM7dUIsTywwQztPLE87OztPO087Ozs7Ozt1QixPLDBDO3VCLE8sMEM7TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087Ozs7O1E7UTs7VyxPO1U7TztPO087USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7OztpQiw2Qiw4QjtpQixPOzsyQjs7MkI7Z0I7OztPOzs7Ozs7O1k7Ozs7Z0I7Ozs7cUMsUzs7eUMsVztlO2EsUTs7Ozs7O2lCOztrQixVOzs7aUIsRyxpQztpQjs7OzttQyxrQixTOzs7b0I7b0IsTzttQjs7O2lCLG9CLE87aUIsRyxtQztpQjs7O21COztvQixrQixROzs7OytEOztzQixPOzs7cUQ7O29CLE87bUI7OztvQjs7cUIsTztvQixPO21COzs7YTs7Ozs7OztXOzs7O3lCLFk7OztjLFc7YyxPO2E7Ozs7Vzs7Ozs7YztjLE87YTs7O2M7Ozs7Ozs7O2E7OztPLE87OztPLE87Ozs7Ozs7O08sdUIsTztPLE87Ozs7Ozs7OztPOzs7O1E7VTs7Ozs7O1EsTztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7aUIsVztpQixPO2dCOztpQixPO2dCOztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7O087Ozs7UTs7Vzs7OztZO1c7O3VCO3VCOzt1Qjs7O087USxnQixPO1E7Ozs7Ozs7Ozs7O1E7Ozs7VztXO1ksTztZLE87Vzs7Ozs7Ozs7OztXO1csVztXOzs7Ozs7Ozs7O1c7VyxXO1c7Ozs7Ozs7Ozs7VyxXO1c7Ozs7Ozs7Ozs7O1csVztXOzs7Ozs7Ozs7OztXLFc7Vzs7Ozs7Ozs7Ozs7Z0M7TyxJLHFCO08sTzs7TyxvQixPO08sTzs7O087TztPOzs7O3FCLFM7O3lCLGE7TyxPOzs7aUI7O2lCOzs7Ozs7Ozs7Ozs7O08scUI7TyxPOzs7TztpQjs7Ozs7Ozs7aUI7Ozs7Ozs7OztPOztROztXLFksTztXLG9CLE87VyxPOztPLE87Ozs7Ozs7Ozs7TyxPOztPOztROztXLE87VTtRLE87USxPO08sTzs7OztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozt1Qjs7O0k7RztxQyx3Qjs7STtJOzttQzs7OzZCOzs7O1E7OztZOzthLG1CO2EsTzs7WTtXO1M7Vzs7Ozs7UTs7O2lGLGU7O1EsTzs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UTs7OztTOzs7O1U7VSxROzs7Ozs7OztRLG9CLFU7OztpQzs7O1E7OztRO1MsTzs7O1E7Ozs7Ozs7OztROzs7OztRO2dCOzs7O0c7O0k7OztJLG1COztJLEksVywrQjs7OzRCOzs7OztJO0k7Ozs7NkI7O1E7O1E7O1E7O1E7OztRO1M7O1k7O1k7O1ksTzs7WSxPOzs7Ozs7UTtTLE87O1E7OztHOztJOzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHO0k7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7OztJLE87OztjLEkscUI7YyxPO2E7OztHOztJLE87Rzs7SSxPLGlDO0c7O0ksTzs7O2M7YzthOztHOzs7SSxPOzsrQixPLDBCOzs7Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7O0ksTzs7aUMsbUIsd0I7OztHOztJO2E7NEMsd0I7RzsyQixhOztJO0ssTywrQztHOztJO2tDOzs7MkI7O087O087Ozs7UTtPO1E7O087OztROztXO2tEOztXO1U7OztXOzhCOztXO1U7USxXO1EsVzs7Ozs7O1M7Vzs7K0IsMEI7O2lDO087UTtRLDBCO087UTtRLHFDOzs7Ozs7Ozs7OztRLGU7OztPOztROzs7OzBCOzs7YTs7O2M7OzthOzs7Ozs7Ozs7UTs7O1E7OztpQzs7OztpQzs7UTtPLHNCOzs7TztRO1M7VzswQyx1QjtTLFE7OztTLE87UztRLHVDOztPOzs7USwwQix1QjtROzs7OEI7TyxzQjs7O08sNkI7O08seUM7Ozs7Ozs7Ozs7O1E7Ozs7a0M7O08sc0I7OztPLDZCOzs7OztRO1M7Ozs7Ozs7O2lDOztROzs7O2MsTzs7O3dCO3dCOzs7O3dCO3VCOzs7Ozs7TyxzQjs7MkI7Ozs7OztRO08sc0I7O087O1EsVTs7TzsrQjs7Ozs7Ozs7Ozs4QjtRO08sc0I7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7Ozs7Ozs7O1E7TyxzQjs7NEI7TyxzQjs7NkI7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7O087OztRLDRDOztvQztRO08sc0I7O087Ozs7UTtRO087UTs7TywwQztPLG1CLE87OzJCOztPLG9CLFU7Ozs7OztPOztnQzs7O08sa0IsTzs7Tzs7Ozs7O1E7c0M7UTs7aUM7O08sc0I7OzZCOztPLG1DO087UTs7Rzs0Qjs7SSxzQztJLHFCO0c7O0k7SSxxQjtHOztJOzs7MEI7OzJCOzs2Qjs7Tzs7eUI7ZTs7Rzs7SSxpQjs7STtHOztJOzs7MkI7OztPO1EsTzs7O2tCOzs7cUIsa0I7cUI7OztxQjs7cUI7O3FCOztxQjs7c0I7d0I7OzBDLG1CLFU7O3NCO3FCOztxQjs7c0IsTTtxQjs7Ozs7O3FCOztxQjs7c0I7d0I7OzsyQjsyQjswQjs7c0I7d0I7eUQ7Ozs7eUI7MEI7OzJCOzJCOzs7O3lCOztzQjtxQjs7d0M7O3FCOztzQixpRDtzQixZOzs7O3lCOztzQjtxQjs7cUI7Ozs7c0IsZTtzQjtxQjs2Qjs7aUI7Ozs7eUI7Ozs7OztRO08scUI7OzJCOzs7OzswQixpQzs7O087c0M7OztXOzs7O2lDLDRCOzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7STs7OztRLHNCOzswQjs7Ozs7O1M7USxxQjs7O0c7O0k7O0s7O00sTTtNO007TTs7OztLO007OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7OzRCOzsyQjs7UTs7O1M7VywwQztTO1EsbUI7Ozs7Ozs7O1kscUI7OztvQztTO1EscUI7O1E7Ozs7UztRO1M7Ozs7OztHOztJO3VCOztJO0c7O0k7SztPLHlDLGE7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7Szs7TTs7O1U7OztxQjtTO08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7O0s7OzZCOztJO0ssMEI7Syx3QztHOztJO0s7SyxNO0s7TztTLHlDLHFCOztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7STtLO007Ozs7OztZOzs7ZTtlO2M7Ozs7Ozs7SztNOztJO0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7OztJOztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7O0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7Ozs7cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJO0ssTztLLFE7Ozs7O00sRyx1Qzs7O0ksTTtHOztJLE8sMkI7Rzs7STtJLE87Rzs7STs0Qzs7Ozs7TTs7O0k7Rzs7STs0Qzs7O3FDO2tEOztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7O0ksSSxXLHNDOzs7OztNLE07Ozs7SyxNOzs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7VztZO0s7Ozs7OztNLE07Ozs7O0ssTTs7O0c7O0k7STtHOztJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJLE87Ozs7ZTs2RDtlO2M7O0c7O0ksTzs7OztlOztnQjs7OztpQixPO2lCLFE7Ozs7aUI7a0IsSTtrQixVO2lEOzs7O21CLHFCO29CLFc7b0IsTzs7Ozs7OztvQixLO3FCLFc7cUI7O3NCLE07OztxQixPOzs2Qzs7Ozs7a0IsbUI7bUIsVzttQixPOzs7aUI7O2dCLE07O2U7Yzs7Rzs7STs7OztJO0c7Ozs7OztJOzs7O0k7TTs7O1Msc0I7UyxPO1E7O0ssTTs7Ozs7O08sTTtpQjs7O007OztPLE87TyxPO087OytCOzs7Ozs7OztjO0k7SyxPO0ssUzs7STs7O0ksTzs7O2MsK0IsTztjLE87dUI7YTs7Rzs7STs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7VTtXLE87O1U7O1U7O1c7YTs7OEI7O1UsTzs7Ozs7Ozs7Ozs7OztVO1U7VzthOzs4Qjs7VyxVOzs7VyxPO1U7OzthOzs7Yzs7YSxzQjtZOzs7VTs7VTs7O1c7YTs7OEI7O1csb0I7VyxPO1csVztVLE87O1U7O1csTztXLE07O1U7VyxPO1c7YTs7O2dCO2dCO2U7Ozs7YztlLFE7OztjOzs7O2UsVztlO2dCLGM7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE07OztnQjtlOzs7Ozs7YztlLFU7OztjO2M7YTtVO1U7OztVO1c7O1ksVTs7OztZLE87WSxXO1csTzs7VSxJLGdDO1U7VTs7Ozs7OztNLFM7TyxPO007TztPO1M7OzsyQixPLDZCO08sTztPLE87TTtNOzs7Ozs7O0k7OztJO0s7Tzs7eUIsTywyQjs7SyxLO0ssZ0I7STtJO0c7Ozs7Ozs7Ozs7STtLO00sTztNLE87TSxPO00sTztNLEs7Szs7O0s7Ozs7OztLOztJO0k7SztPOzs7VSxvQjs7Vzs7OztZO1ksVTs7OztZOztZO2M7OztpQjtrQixPO2tCO29COzs7O2lCO2lCO2dCOztZO2M7Ozs7a0I7a0IsTztpQjtnQyxPLHNDOzs7OztXO1ksTTtZLE07VztZLE07Ozs7YSxXO2E7YTtjLE87YyxVOzthLE07OztZOzs7O1k7YTtlLHdDLFk7YTtlOzs7a0IsWTs7Ozs7b0IsRztxQixPOzs7a0IsTTs7aUI7Ozs7YSxNOzs7VztZOzs7Ozs7O1c7WSxVOzs7WTs7Ozs7O1c7VTs7O1M7Ozs7O0s7OztLOztNOzs7UztTO1M7UztVLE87VSxjO1U7b0I7Uzs7WTs7UztTLE07UTs7Ozs7Ozs7STtHOzs7SSxPOzs7YztlLFE7OztjO2U7Ozs7O2lCOzs7Ozs7OztpQixNOzs7Ozs7O2M7YTs7Rzs7STtLLFM7SyxnQjtJO3dCO0k7Rzs7STtLLEs7SyxPO0kseUM7STtHOztJO2lDO0ssc0I7STtLLE87STtJO0ssZTtLLGdCO0k7Szt5QjtJLFc7SSw4QjtHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7SSxZO3NFO0ksTTtHOzs7Syw0QjtJOztLO00sUztNO3dCLE07O0s7TTs7Uzs7O1k7WSxPO1c7Ozs7OztNOztTOzsyQixtQixPLHdCOztNLE07Ozs7Ozs7O0s7SztJOzs7O29CLE87TSxzQyxPO00sRzs7Vzs7OztLO007TTtROzswQixvQiwwQjs7TTs7K0I7OzsrQjtLLE87Ozs7O2U7ZSxPO2M7STs7SyxrQixNOzs7TSxvQjtNOztLLE87STs7SyxHO007TTtPO08sWTs7Tzs7bUI7TyxPOzs7O0k7O0s7TSxPO00sTztNLFc7SyxPO0k7O0ssVztLLFc7SztNO1E7Ozs7MEIsTywrQjtNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7Ozs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTtVO1k7OztlOztnQjtnQjtlO2M7O1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7Ozs7SSxPOzs7YyxPO3lDLE8sMEI7YTs7O2MsTyxjO2E7O0c7OztJO0s7Tzs7O1U7VSxPO1M7O0s7SztLO0s7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0k7O0ssWTtLOztPLG9CLE87Tzs7dUIsTywrQzs7TyxXO08sTzs7O08sb0I7Tzs7Ozs7Z0I7Tzs7TSxhO21CO00sZTs7O0s7Ozs7Ozs7OztJO0k7SztPOzs7VTs7Uzs7SztPOzs7VTs2Qjs7VTtTOztLO087OztVOztXOztVLHNDOzs7Ozs7Ozs7Ozs7VTtTOzs7O0s7O0ssVTs7TTs7OztPO1M7OztZO1k7Vzs7TyxPO08seUM7TyxPO007UTs7eUI7O08sZ0I7Tzs7O087OztVO1UsTztTOzs7OztLLFc7Szs7STs7Tzs7O1U7O1M7O0ksTztHOzZCLGU7NkIsZTs7SSxRO1U7YyxnRDtJO0s7NEM7O0k7SSxPO0c7NEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7O1MsTzs7O21CO21CO2tCOzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7Rzs7SSxrQjtHOztJLHdCO0c7O0ksTzs7Ozs7Yzs7YTtHOzs7OztLO007O0k7O0ssVztLO0s7STs7SztnQjs7STtvQiw4QjtJOzs7Szs7Ozs7ZTs7Ozs7O087O1EsTztROzs7Tzs7Tzs7O1E7O1E7VTs7OzRCLG1DO1E7Ozs7Tzs7Ozs7Ozs7O087O1E7UTs7Tzs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7OztPLE07OztPLE87USxNO087UTs7UTtVOzs7Ozs7OztROztRLFcsd0MsWTtPO3FDOztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087USxhOzs7Ozs7UTs7Ozs7Ozs7O1E7O1EsOEI7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7O087UTs7Ozs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTtROzs7VztXO1U7OztPOztRO1U7Ozs7Ozs7O1E7O087Ozs7O2lCOzs7OztPO1EsTTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7OztPOzs7Vzs7OztZOzs7Vzs7O1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztROztTO1MsVTs7O1ksc0I7WTthLE07OztZO1k7O1E7Ozt1QjtRO1MsSSxpRDs7Ozs7Ozs7Vzs7Ozs7O1U7VyxPO1csSTtVOzs7Ozs7Tzs7Ozs7O21COzs7O087O1E7UTtVOzt3QixzQzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7UTtRO1E7VTs7Ozs7YzthO2E7YyxXO2MsUTtjLFE7YztjO2E7WTs7Ozs7UTtRO1EsWTtPOzs7VTtVO1M7O087OztVO1U7Uzs7Tzs7UTtROzs7VztXO1k7OztnQixPOzt5QyxzQixhOztlO1k7Ozs7Ozs7Ozs7YyxLO2U7Z0IsTztnQjtrQjtxQjs7O2UsTTs7OztjO2UsVztlO2U7Ozs7Ozs7ZSxNOzs7Yzs7OzsrQjtZLE07OztVO1E7O1EsTzs7OztPO1EsTztROztPOzs7OztpQjs7Ozs7Ozs7O1M7Ozs7O1UsUTs7OztTOzRCOztTLGM7O1U7Ozs7YTs7OztpQixPO2dCOztXOzs7VTs7Ozs7Ozs7O1MsTTs7OztPOzs7UTtVOzs7O2M7YyxPO2E7NEIsTyxzQzs7Ozs7TyxXO087MkI7TztRO1E7Tzs7OztTOzs7Ozs7Ozs7Ozs7O087O087OztRLFU7OztRO1U7OzRCLE8sNEI7O1EsTztRLE87USxVOzs7USxHO1M7VSxPO1U7WTs7O2U7Ozs7O2dCLFE7Ozs7aUI7O2tCLE07aUI7Ozs7Z0IsVTtnQjs7ZTtjOzs7OztVLFc7VTs7O2EsTztZO1Usb0I7VSxPO1U7VSxtQjtVO1k7OztlO2U7Yzs7UztVLE07O1M7OztVO1k7OztlO2M7OztVOzs7Ozs7Ozs7Ozs7O08sTTs7O087O1E7UTtROztPOzs7OztpQjs7OztPOztRLEk7UTs7UTs7Ozs7Ozs7Tzs7UTtROzs7Tzs7Ozs7Ozs7O087OztRO1E7b0I7TyxNOzs7TyxNO2tDOztPOzs7USxXOzs7TztPO1E7O1EsVzs7USxNOztPO087Ozs7Ozs7Ozs7SSxPOzs7YztjLE87YTtHOztJLE87OztjOzs7Ozs7O2U7YyxPOzs7Ozs7YTs7O0c7O0k7OztJLE87OztjOzs7OztjLE87Ozt3Qjt5QjsyQjt5QjsyQjt5QixPO3lCLFE7Ozs7eUI7d0IsTzs7dUI7YTs7O0c7O0k7SztHOztJO0s7SyxLO0ssa0I7SyxXO0s7STtLO0s7O0ksd0MsTyxpQjtJLEc7Syx1QztJO0s7Tzs7O1U7Ozs7Ozs7OztVLGtCLHFDO1U7VyxLO1csTztXLFU7VzthOzs7Ozs7VzthOzs7Ozs7VTtTOzs7Ozs7STtHOztJO0ssaUI7SyxTO0s7SyxLO0ssa0I7SyxXO0s7SSx3QyxPLGlCO0k7RztHO0k7STs7Ozs7OztJO0ksVztHOztJOztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOzs7O0s7TTs7SSxJOzs7Syx5Qjs7SSxnQyxPLGtDO0k7Ozs7Ozs7STs7Ozs0Qjs7UTs7UyxPO1M7UztTLE87UTtRLE87OztRLE87UyxNO1E7Uzs7UyxVO1E7O2tCLGdDO2tCOzs7aUI7OztrQjs7O3NCLHdDLFk7a0Isa0I7aUI7O1E7Ozs7Uzs7O1MsTTtRO1M7Ozs7O1E7O2tCLGdDO2tCOzs7aUI7aUI7O2tCOztpQjs7UTs7OztTOzs7Ozs7O1k7Vzs7O1MsNEMsbUI7O1E7O1E7OztTLFk7OztZOzs7O2E7OztZOzs7O3NCLE87cUI7O1E7OztrQyxzQzs7UTs7UztROztrQjtrQjs7O2lCOzs4QiwwQjs7UTs7UztRO3VDLDBCOztROzs7O1M7Ozs7YTthO1k7WTtXO1EsZTtROzs7WTthLE07WTtZO2E7OzsrQyxTOzs7O3lDO3VDOzs7WTtXO1Msc0I7UyxzQjs7O1M7Ozs7O2EsTTs7Ozs7Ozs7Ozs7O1U7VyxNO1U7Ozs7O1U7Ozs7USxPOzt3Qix3QjtxQjt5QixxQztJLGM7a0IsTTs7O3NCOzs7Szs7STtLLE07STs7Tzs7O1U7Ozs7Ozs7Uzs7O0k7OztJOztLLE87SztLO0k7SztNO007Ozs7Ozs7c0IsUztLO0s7Szs7Ozs7O0s7Szs7Ozs2Qjs7O0k7SSxPOzs7Yzs7Ozs7Ozs2QjtJLE87OztjOzs7ZTtnQixNOzs7YzthOzs7RztJOzs7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87STs7O087TztPLE87TTs7STtJO0ksTztHOztJO0k7Ozs7Ozs7O1U7OztXO2E7OzRCLDhCOztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7O2U7aUQ7WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLHNDO1U7b0I7OztzQjs7Ozt1QjtzQjt1Qjt3Qjt3Qjs7Ozs2Qjs7OztpQztnRjtpQztnQzs7Ozs7c0I7cUI7Ozs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7VzthOzs7Z0I7Z0Isd0I7OztlOztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7VztXO2E7OztnQjs7O21COzs7b0Q7O21CO21COzttQjs7bUI7O3VDOzJCOztlOztVO1c7WTtjOzs7aUI7aUI7OztnQjs7O1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7OztJO0k7Ozs7O1EsTzs7O2tCOzs7O3FCLE87OzJDLDhCOzs7O3FCLE87OzhDLGlDOzs7Ozs7OztxQixPOzs7K0I7K0I7OEI7OztxQjs7cUI7Ozs7NkI7O2tCO2lCOzs7Ozs7UTtTLE87O1E7OztRO2dCOzs7Rzs7STs7O0ksWTs7STtLLE87O0k7Rzs7STs7K0IsOEI7O0ksVTtJLE87OztjOzs7OztlLFE7O2UsTTs7O2M7YTs7Rzs7SSxPOzs7YyxlOztlLE07O2M7YTs7Rzs7STs7Ozs7TTs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VTs7YTs7OEI7O1MsTzs7Uzs7O1UsVTs7O1U7WTtVLE87Uzs7WTs7NkI7O1MsTzs7OztLLE87O0c7O0k7Szs7TTtLLEksOEM7Ozs7O00sTTs7Ozs7Ozs7MEI7STtJLEksZ0Q7Ozs7O0ssTTs7O0c7O0k7STtLLHFCOzs7Ozs7O1M7Ozs7Ozs7O1M7O1U7O2E7OzhCOztTLE87Ozs7OztTLGtDO1M7O1M7Ozs7VTtTOztLLE87O0c7O0k7Ozs7OztPOzs7UTtRLGM7ZTs7a0I7Ozt3Qjs7Szs7O3lCLE87STs7Ozs7Szs7Ozs7Ozs7Yzs7OztLOztNLHVCO007Ozs7OztJLE87Rzs7STtJLE87Ozs7O2M7ZSxTO2UsRztnQixXO2UsWTs7Z0I7OztpQjtpQixZOzs7Ozs7ZSxXO2UsVzs7OztHOzs7STtJO0k7STtLLE07SztPOzs7VSxZOztXOzs7aUI7WSxVOzs7VztXOztVLE07Uzs7OztLLFU7OztLO2U7STtLLGM7SyxXO0ssa0I7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Tzs7Ozs7Ozs7Ozs7OztLOztROzswQixpQzs7O0ssTztJOztLO00sTztNLEs7Szs7Ozs7Ozs7OztXO2E7OytCLGlDOztZOzs7Ozs7OztlLE87O3dDLHNCLG9COzs7O2U7ZSxPOzt3QyxzQixvQjs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7O0k7SztLO007Ozs7VTs7O2E7MkQ7YTtZOztpQjs7b0M7Ozs7O1M7O1Msa0M7UyxXOzs7aUI7OztJO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87OztTLE87O2tDLGtCLGU7Ozs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7O0k7O2M7NkQ7YzthOztHOztJO0k7Ozs0Qzs7OztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztJOzthLHdDLFk7Rzs7STtJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFk7Ozs7SyxnQyxVOzs7Ozs7TSxjOzs7O08sc0MsTztPO1EsVztRO1MsVztTO1UsVztVO1csVztXLFMsTzs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLGtCLE87O0ksSSxXLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7RzswQztHOztJLHlCOztHOzs7SSxTOzs7Szs7O007TTtLLE87Ozs7O0s7OztNO00sUztNLE07SyxPOzs0Qjs7OztJLHNCO2tEO0ksb0I7SSxPOzs7SSw4Qjs7Ozs7Ozs7O1E7O1MsVztTLEk7O1M7Z0I7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztJOzs7SSxTO0k7Rzs7STtLLHVCO0s7Tzs7Ozs7VTtTO0k7STtHOztJOztLOztLO0s7O0s7OztRLFc7UTtPO0s7STtJOztLOzZCOztJOztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7OztVO1c7WTs7OztXOzs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7VTs7MEIsbUM7O1EsYztRO1U7Ozs7YTtjO2UsUTs7OzthO2M7Ozs7Ozs7Ozs7O2M7Yzs7Ozs7OztjOzs7aUI7aUI7aUI7a0IsaUI7a0I7a0IsWTtpQjs7Z0I7O2E7WTs7YTthLG1DO1k7OztPOzs7Ozs7Ozs7Tzs7OztRO1E7Ozs7Ozs7O087O29COztTO1U7VSxPO1UsYztpQjtROztXOzs7YyxJLGlCLE87YyxPO2E7OztRLEk7Ozs7Uzs7VTtVLGtCO1U7UyxNOzs7O087Ozs7aUI7OztvQjtvQjttQjs7Ozs7OztPO1EsTTtPOzs7Vzs7WTtjOzs7OztpQjtrQixTO2tCLEcsc0M7a0IsWTs7O21CLEk7Ozs7cUIsTTs7OzttQixhOzs7OztrQjs7O1csTzs7O3FCO3NCO3dCOzswQyxnQzs7c0IsSztxQjtvQjs7VTtRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO1c7WTs7Ozs7Ozs7Ozs7Ozs7O1U7VztZOzs7Ozs7Ozs7O087UTs7VyxPOzs7cUI7cUIsTzs7b0I7OztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQjs0QztnQjtlO1k7Ozs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXO1k7YztnQjs7O21COzhCOzttQjtrQjs7O1k7WSxPO1k7OztlOzs7O1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7VTtZOzswQixXLHlCOztVLE87VSxPOztVOzthOzsrQix5Qzs7VTtXOztjOzZDLHVCO1c7WTthO2U7O2dDOzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRO1E7VTs7OzthOzs7ZSxzQjtlOztpQixXO2lCO2lCLEk7Ozs7Ozs7Ozs7ZTtnQjtpQixPO2lCLFU7OztpQjtnQjtnQjs7OzthOztjLFk7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzttQjtxQjs7O3dCO21DOzt3QixrQjt1Qjs7bUI7bUIsWTtrQjtpQjtjLGdCO2M7ZSxXO2UsUTtlLE87ZSxVOzs7Ozs7Ozs7Ozs7O2UsRztnQixTOztnQjs7O29COzs7Ozs7Ozs4Qzs7bUI7aUIsTztpQixXOzs7Ozs7Ozs7O29CLG1CO3FCO3FCO3NCO3NCOzs7eUY7O29CO3FCLG1EO21COzs7b0I7OztvQjtxQjtxQjttQyxzQzttQjs7OztrQixNOzs7Ozs7Ozs0Qjs7OzttQjs7cUI7Ozt3Qjt3QixpQjt1Qjs7O3NCOzs7eUI7d0I7O29CO3FCOzs7Ozs7a0IsTTs7O2lCO2tCOzs7OztpQixjOzs7Ozs7OztrQixhOzs7aUM7a0I7bUIsZ0I7bUI7O2tCO21COzs7Ozs7O21CLGU7Ozs7bUI7Ozs7Ozs7O2dCOzs7Ozs7OztjOztZOzs7Tzs7Tzs7O1E7VTs7OzRCOzRCLGdDO1E7Ozs7TztTOzt1Qiw0Qzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087UTtVOzs0QixPLDJCOztRLFc7Ozs7VTt1QztTO087UTtVOzsrQiw2Qzs7O1E7UTtjLHdDLFk7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxVO1UsTztVLFU7Ozs7Ozs7OztZOzthO2E7O1k7Ozs7UyxNOztRLE07Ozs7O1E7O1M7Vzs7NEI7O1M7VywyQyxjO1MsTztTLGtCO1MsTTtTO1E7Ozs7O2tCOzs7Ozs7TztRLE07O1E7O1M7Vzs7NkIsMEM7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7UTs7UyxPO1M7Vzs7OztjLFc7YyxPO2E7Ozs7Tzs7O1E7O1c7O1E7UTs7Ozs7YTs7Ozs7OztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7Ozs7TztjO1E7O1csTzs7O3FCOztvQjs7VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTs7OztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7UztXOzs7YyxJOzs7OztlO2dCO2tCOztvQyxvQixjOztnQjs7Z0IsTTtlOztnQjtrQjtpRCxZO2dCOzs7O2tDOztvQixLO3FCO29COzs7OztnQjtlLE07Ozs7YzthOzs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O1E7VTs7aUMsdUI7OztRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Ozs7VTt5QztTO087UTtVOzsyQiwrQzs7UTtPOzs7OztpQjs7OztPOzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087O1E7Tzs7Tzs7O1E7UTtPOztPOzs7O1E7UTs7OztpRzt5Qjs7TztPOztPOzs7Ozs7O1E7O1E7OztnQzs7O1MsTTtROztTLE87UyxPO1MsVzs7O3VDLGU7Ozs7OztPLEksaUQ7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztROztxQztRO1EsTztPOzs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7O087Ozs7Ozs7OztPOzs7UTtVOzs7YSxJOzs7Ozs7Ozs7Ozs7b0IsSSxTOzs7OztxQjs7d0I7O29ELHFCOzs7cUIsTTs7O29CO3FCLFE7Ozs7OztvQixJLFc7Ozs7OztxQjtzQixPO3NCLE87O3NCO3FCO3FCOzs7O29CO3FCLFE7Ozs7Ozs7Ozs7O21CLEksVzs7Ozs7b0I7O3VCOzttRCxxQjs7O29CLE07OzttQjtvQixRO29CLFc7Z0M7Ozs7OztjLEksVTs7Ozs7O2U7Z0I7aUIsTztpQixROzs7O2tCOzs4QjttQjs7O3NCLGE7Ozs7OztzQjs7Ozs7Ozs7Ozs7ZSxNOzs7YyxJOzthO1k7O2E7YSxPO1k7Ozs7USxXOzs7OztXO1ksTztZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087USxRO1E7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7O087OztVO1U7WTsyQyw4QjtXLE07O1U7Uzs7O087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2MsTztjO2E7Ozs7OzthOztnQjs7NkMsc0I7OzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxLO1E7VTs7OztjO2MsTzthOzthO2M7Z0I7OzttQjtvQixROzs7bUI7bUI7O29CLFE7b0IsTztvQixTO29CLGE7b0I7OztvQjs7cUI7dUI7Ozs7Ozs7O21CO2tCOzs7OztjO2E7WTs7Ozs7Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087OztRO1E7Ozs7OzswQjs7O3lCOzs7Ozs7O087Ozs7Ozs7Ozs7OztROzs7Tzs7USxRO1EsYTs7OztVO3lDO1M7TyxJLGlEO087Ozs7O2lCOzs7O087OztRO1U7OzthLFk7YTs7YyxRO2MsTTthO1k7O2E7YSxPO1k7Ozs7Ozs7VyxXO1c7OEI7VTtPO1EsTztRLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7OztZOzs7ZTs7OztvQjtvQjs7bUI7O21CO29CO3NCOzs7eUIsTzt3Qjs7eUI7eUIsTzt3Qjs7O29CO21CO2tCOzs7O2EsTzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7O087OztPOzs7UTs7Ozs7O2E7YTtZOzs7Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsSztRLFc7OztRO087Tzs7Tzs7Ozs7UTtVOzs7YTs7Yzs7O2MsVTtjLFc7Ozs7O2E7O2M7OztlLEs7O2U7ZTtpQjs7Ozs7ZSxTOzs7OzthO2MsaUI7YztnQjs7YyxZO2MsWTtjO2M7Ozs7aUI7O2MsUTthLEk7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7VztZO1c7Ozs7OztZO2M7OztpQjtrQjs7O2tCLFU7a0IsUztrQixVO2tCLFk7a0I7b0I7a0I7b0I7O2lCLEk7Ozs7OztrQixNOzs7aUI7OztnQjs7Ozs7Ozs7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7O1ksTTs7O1c7Vzs7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7OztJOzthO2E7WTs7YTsyQztZOzthOzs7NEQ7O2E7WTtHOzs7Ozs7STtLOztNO1E7OztXO1ksUTs7OztZLFU7Ozs7Vzs7O1U7Ozs7Ozs7O0s7TTtPLE87TyxPO08sVTtNO007TTs7Ozs7O00sTTs7SyxXO0s7YTs7OztJO0ssVTs7OztLLEs7SztPOzs7O1c7VyxPO1U7O1U7VyxROzs7VTtTOzs7O0s7SyxVOzs7Ozs7Ozs7TSxHLDRCLDBEOztLO2E7Z0I7TTtPO1EsTztlO087UTtRO1EsSTs7Ozs7UTs7Ozs7TTtPLGM7TztPOztnQjs7Ozs7OztPLE07OztLO00sVTs7O0s7SyxJOzs7O00sc0IsVztNLE07Ozs7O0k7OztJOztPOzsyQixxQzt5QixPLHdDO0k7Rzs7O0k7Szs7TTs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7SSxnQztJO0c7O0k7O087VTtVO0ksTzs7OztjO2UsTztlLFE7ZSxROzs7ZSxVOzs7ZSxPOztlLFc7ZSxHLDJDO2UsVztlO2UsWTs7Ozs7aUMsTzs7O2UsTztjO2MsVTtjO2M7YTtHOztJOztLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJOzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7O0k7Ozs7O0s7SyxtQjtJLE87Ozs7YztlO2dCLE87Z0IsUTs7Ozs7OztlOzs7Ozs7Ozs7Ozs7OztlLE07Ozs7YyxHO2UsUztlO2dCO2dCOzs7OztpQixNOzs7Ozs7OztjO2E7O0c7Ozs7Ozs7Ozs7STs7Ozs7O0k7OztNO087O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7O1k7YSxjOzs7Ozs7O1k7Vzs7WTs7Ozs7O1k7VzsyQixTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Tzs7Ozs7Ozs7Ozs7Szs7OztLOzs7TTs7Ozs7O1c7WTs7Ozs7O2dCOzs7Ozs7OztXO1U7Ozs7Ozs7Szs7O1E7dUM7TztLOzs7Ozs7O0k7Ozs7O0s7Ozs7OztLLEs7TSxNO0ssaUI7SztNO007Ozs7O08sTTs7Ozs7OztPOztRO1E7O1U7Ozs7O0s7TTs7Ozs7O0k7Szs7Ozs7Ozs7OztVO1c7Ozs7Ozs7Ozs7Ozs7VztVO1M7Ozs7Szs7Ozs7Ozs7TSxPO00sVztLOzs7UTtxQztPO0ssVztLO007Tzs7O087Uzs7MEI7O087Ozs7SyxTOzs7O2tCOzs7TTtPO087OztLOzs7Ozs7Ozs7SSxNOzs7STtLO087O3lCLG9DOztLO0s7OztNO00sTTs7Ozs7Ozs7O0k7SyxTOzs7O0s7Ozs7Ozs7OztJO0c7O0k7Ozs7SztLLG1CO0s7Tzs7OztVO1c7YTs7OztnQjtpQjttQjs7OztzQjt1QixJOzs7c0I7cUI7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7Ozs7OztpQixNOzs7Z0IsZTtnQjtlOzs7OztXO3dDO1k7O3lDO1c7OztXLE07O1UsTTs7Uzs7Ozs7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7Szs7SztNO007TztTOzs2QixPLG1DOzJCLDhCO087Uzs7OzthOztZOztZOzs7YSxPO2E7WSx1QjtZO1c7OztPLE87Tzs7Ozs7Ozs7USxNOztNLE07OztJOzs7OztLO007OztNO2dCOztLLE87OzZCOztJO0k7Ozs7UztVLEs7VSxROzs7O1Usd0IsTztVOztTO1E7SyxHO007TyxPOztTOzsrQixPLDRCOzs7Ozs7Ozs7STtLOztLO0s7O0k7Ozs7SztPOzt5Qiw4Qjs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7O1M7OzBCOzs7Ozs7O1E7TTs7O007O1M7OztZO1ksTztXOztLO2M7SztNOzs7Ozs7Ozs7OztNOzs7O1U7Ozs7OztNO007TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7STs7d0I7SztPOzs7O1U7VzthOzs7O2dCO2lCLFE7OztpQjs7Z0I7ZTs7Z0I7Z0I7Z0I7OzswQjsyQixPOzs7MkIsTzswQjs7Ozs7eUI7ZTs7OztVO1M7Ozs7O0ssVTs7SyxNO0k7OztLOztLLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0k7SyxPO0s7Tzs7O1U7VTtTOzs7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7O087dUMsOEI7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLLE87STtLO00sTztNLGM7Ozs7Ozs7Ozs7Ozs7OzthOztLLGtCO0s7O3VCLDZDO0s7O0k7STtJO0c7Ozs7Ozs7Ozs7O0k7SztPOzt5QixrQixZOztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXLFc7Vzs7O2Msa0IsUTs7ZSxNO2M7YTs7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7SztPO0s7TztLOzs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztJLGtCO0ksTzs7OztjO2UsTTtlO2U7ZTtpQjs7OztxQjtxQjtxQixPOzs7K0I7K0IsTzs7OEI7O29COztvQjtxQjtxQjt1Qjs7OzBCOzs7OzJCOzZCOzs7Z0M7aUM7bUM7Ozs7c0MsTzs7cUM7aUM7aUMsVztpQzs7aUM7Ozs7O2lDO2dDO2dDOzs7Ozs7Ozt3Qzs7Ozs0Qzt5SDs0QzsyQzs7K0I7O2dDO2dDLE87OytCOzBCOzBCOzs7Ozs7Ozs7OzsyQixPOzBCOzs7Ozs7Ozs7eUI7O3FCO3VCOzt5QywwQixpQjs7cUI7dUI7OzswQjswQjt5Qjs7Ozs7c0I7dUIsa0I7O2tDOzs7cUI7c0IsOEIsVzs7OztvQixhOztxQixPOzs7K0I7K0I7OEI7O29CO29CO29CLEc7cUI7O3dCOzt5Qzs7cUI7cUI7O29COztrQyxPLGlCOzs7cUIsVztvQjs7O3VCO3VCLE87NEQ7O3NCOztvQjs7Ozs7bUI7Ozs7O2UsVztlO2lCOzs7b0IsTzs7OzhCOzs7Ozs7OytCO2lEOytCOzttRCxlO21ELGU7OzsrQjs7OztrRDs7Ozs7OEIsTzs7Ozs7Ozs7NkI7O21CO2tDO2U7YztlO2dCLE87K0I7Ozs7ZTtnQjtrQjtnQjs7bUIsWTs7bUI7O2dCO2tCOzs7cUI7Ozs7O3NCO3NCLFE7OztzQixNOztxQixtQjtxQjtvQjs7Ozs7O2U7Z0I7a0I7OztxQjtxQjtvQjs7Ozs7YztlO2lCOztrQzs7ZTtpQjs7a0M7Ozs7O2UsTTs7Ozs7OztlOzs7a0I7OzttQjtrQixPOzJCOzs7OytCOztnQzs7OztpQztpQyxPOzs7O2tDOzs7cUM7OztzQztzQyxvQjs7b0M7O2lDOzttQzt3Qzs7Ozs7Z0Q7OztpQztrQzs7OztzQzs7a0MsTztrQyxRO2tDLE87OztrQyxPO2lDOzs7Ozs7Z0M7OytCOzhCOztpQjs7ZSxPOzs7Ozt5Qjt5Qjt3QjtjO2M7ZSxrQyx1Qjs7ZTs7O2U7ZTs7Yzs7O2M7eUM7YTs7OztJOzs7SztPOzs7VSxXO1M7O0k7OztlOztrQjs7O3FCO3FCO29COztlLE87Yzs7Ozs7Ozs7YztjOzs7Ozs7OztjOzs7O2M7Ozs7YTs7Rzs7O0ksTzs7Ozs7YztlOzs7O2U7Ozs7ZSxPO2UsUztjO2tDO2M7YTtHOzs7Ozs7Ozs7STtLLFE7SztPLDJDOztLO087Ozs7VztXOzs7YyxvQjtjLGM7YTs7O1c7VyxPOzs7cUI7cUI7O3FCLHlCO3FCOztvQjs7O1U7O1UsOEI7VTtXO2E7OztnQjtpQjttQjs7cUMsTyw0Qjs7aUI7aUIsa0I7aUIsVzs7OztpQixPOzs7OzsyQjs7OzBCOztnQjtpQjttQjtpQjs7O2lCOztnQjtpQjs7O29CLFk7Ozs7c0I7Ozs7O3VCLE87Ozs7OztvQjtvQjs7bUI7OztnQjs7O21CO21COzhCOzs7O2tCOztnQjtlOztnQjtnQjtnQixPOzt1QyxxQzs7ZTs7Ozs7O1c7VzthOzs7Z0I7OztpQixPO2dCO2U7O1U7eUMsTyxpQjs7O29ELGU7OzBELGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1c7VzthOzs7Z0IsTzs7Ozs7MEI7MkIsTzsyQixPOzBCOzs7MkI7NEIsTzs0QixPOzJCOzs7Ozs7OzBCO3lCO2U7O1U7VyxxQjt5RDtXOzs7O1c7OztnQjs7YSxNOzs7O2U7OztrQixzQixPO2tCLE87OzRCO2lCOzs7Ozs7O1U7VztXO1c7YTs7O2dCLE87Ozs7OzBCLGlDOzBCOzJCOzJCOzJCLE87MEI7Ozs2Qjs4QixLOzhCLE87OEI7OEI7NkI7Ozs7NkM7c0Q7OzhCOztpQzs7aUM7O2tDLE87aUMsTztnQzs2QixPOzs7O3VDOzs7Ozs7O3VDLFc7dUM7Ozs7c0M7NEI7OzBCO3lCO2U7OztXO2E7OztnQjtnQjtnQjs7aUI7aUIsUTs7aUI7OztrQjtvQjs7O3VCO3NCOzt1Qjt1QixPO3NCOzs7a0I7b0I7Ozs7O3VCO3NCO2lCOztnQjs7bUI7Ozs7O3NCO3NCO3FCO2dCO2U7Ozs7OztXO1ksVTs7O1c7Ozs7NkIsTyx5Qzs7VTs7YTs7O2dCO2dCO2U7OztVOzs7YTthLE87Ozs7O3VCO3dCO3dCLFM7dUI7dUI7c0I7WTs7O1U7Ozs7O2tCOzs7cUI7Ozs7O3NCLE87cUI7b0I7O1M7Ozs7O0ssSTtLO087OztVO1U7Uzs7O0k7Szs7O1Esb0I7Ozs7WTs7K0M7O1EsTTtPOztJOzs7TztPO007O0k7STs7O0k7Szs7eUIsZTt5QixlOzs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtLO087Ozt5Qjs7VTtVO1M7Szs7Szs7TTthO0s7O0k7Rzs7SSxPOzs7O2MsTzthO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7YyxtQjs7YzthO0c7O0ksWTtJLG1CLFE7Ozs7Ozs7SztNO1E7O1c7OzthOzs7ZTtNOzs7UyxPOzs7TTs7O08sTztNLFc7O0s7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJLE87Ozs7O2M7Ozs7Ozs7O2E7O0c7O0ksSztLLE87STtLLE87SyxPO0ksTztHOztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Ozs7Ozs7O1EsTzs7USxPOzs7USxPOzs7USxPOztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsVztpQixPOztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7Ozs7aUI7O2tCLE87aUI7Ozs7Ozs7O2lCO3lCO2lCLHVCO2dCOzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OzthLG9CLFE7OzhCOzs7Ozs7Ozs7Tzs7Ozs7OztrQjs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztRLE87UTtVOzs7YSxtQjs7YTtZOztPOzs7Ozs7Tzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7aUI7a0IsTztrQixPO2lCLE87O2dCOztPOzs7Ozs7USxVOztRLGM7Ozs7OzswQjs7Ozs7UTtTOztZO1c7Uzs7UztTO1M7O2tCOztTLFc7UyxNO1EsTzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROztXLFc7VyxPO1U7UTs7VzttQjtXLE87VTtPLE87OztPLHNCLE87TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7aUIsTzs7Ozs7MkI7MkIsRzs0QixXOzRCOzs7Ozs7Ozs7OzRCOzZCLE87Ozs2QixPOzZCLE87NEI7Ozs7Ozs7OytCOzs7Ozs7OzsyQjswQjtnQjs7O087Ozs7O1EsWTtRLFM7TyxPOzs7OztpQixPOzs7Ozs7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLE87OzBCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsVztpQjtpQjtnQjs7OztPLE87Ozs7O2lCLE87Ozs7OzJCOzs0QixPOzJCOzsrQzs7MkI7MEI7Z0I7Ozs7TyxPOzs7OztpQjtpQjtnQjs7O08sbUIsTztPLE87O08scUIsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87TyxPOzs7Ozs7Ozs7OztPLE87Ozs7O2lCO2lCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsTzs7Z0I7Ozs7TyxPOzs7TyxPOzs7OztpQjs7Ozs7OztvQjtxQixXO3FCLE87cUIsTztvQixPOzttQjs7b0IsTzttQjs7MkI7Ozs7Ozs7Z0I7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7OztROztXO1ksTzs7WSxXO1ksTzs7O1csVztXLE87Ozs7Ozs7TztRLDRCOzs7USxPO08sTzs7Ozs7Ozs7aUI7O3FDOzs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7TyxxQixPO08sTzs7O087OzJCOzs7O2E7OzsyQjs7MkI7OzJCOzsyQjttQzs7TyxPOzs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7UTs7O1csTzs7USxPO1EsTztPLE87Ozs7Tzs7Ozs7OztpQixPOztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztROztXLFc7VyxPO1U7UTs7Vzs7O1k7WTtjO1csTzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7OztpQjs7O08sc0IsTztPLE87Ozs7SSxPOzs7OzZCLDJCO0c7Rzs7O007O087O3FDOztNO0s7Ozs7STsyQjtHO3NDLGtDOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOzs7USxNO087SSxvQjs7Ozs7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxNO0ksTzs7Ozs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7O2U7YztjOzs7aUI7OztrQixVOzs7aUIsRztrQixNOztpQjtrQixVOzs7a0IsTztpQjtpQixXO29CO2tCO21CLE87bUIsTztrQixNOzs7aUI7a0I7b0I7Ozt1Qjt3QixNO3dCO3VCLEksc0M7Ozs7Ozt3QixNOzs7c0I7OztrQjtpQjtpQjs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsVztrQjtpQixJOzs7O21CLE07Ozs7aUI7O29COzs7Ozt1QixPOzs7O3NELDhCOztrQyxPOzs7OzJELGEsa0I7aUM7aUM7Ozs7b0M7OzhDOzhDOzhDOzhDOzZDOzs7Ozs7OztvQzs7OEM7K0MsTTsrQzs4Qzs4Qzs2Qzs7Ozs7Ozs7b0M7OzhDOytDLE07K0M7Ozs7K0M7O2dELGM7K0M7K0M7Z0QsTTtnRDtnRDs7O2lEOzs7b0QsSSxNLHFDO29ELEk7Ozs7OztxRCxNOzs7Ozs7bUQ7OytDOzs4QzsrQyxNOytDOzhDOzhDOzZDOzs7Ozs7b0M7OzhDOytDOzs7OEM7NkM7OztvQztvQzs7O29DLE07K0Q7Ozs7O3NCO2lCO2lCO2tCO2tCO2lCOztpQjs7OztrQixNO2tCO2tCO29CO3VCOztrQjtrQjtpQjs7O2lCLE07NEM7OztpQjs7O2tCLFU7OztrQjtpQjs7YTtHOztJO0k7SztLLE87STs7Ozs7Ozs7OztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7SztPOzs7VTs7OztXLE87VztXO1U7Uzs7Ozs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7O0s7Tzs7Ozs7VSxPOzs7b0I7Ozs7Ozs7OztxQjtxQjtvQjtxQixPO29CO29COzs7Ozs7O3VCOztpQzs7O2lDO2lDO2lDO2tDLGM7a0MscUI7a0Msb0I7a0M7b0M7a0M7b0M7aUM7Ozs2RDs7O3lDO21DOztxRDttQzs7eUM7bUM7MEQ7bUM7Ozs7a0M7bUMsTzttQyxjO2tDO21DLE07OztpQztrQztvQztrQztvQztrQztvQzs7O3VDOzs7Ozt3Qzt3Qzt3QyxLO3dDO3dDLFM7dUM7c0M7Ozs7Ozs7a0M7b0M7Ozt1QyxzQjtzQzs7OztrQzs7bUM7bUM7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7O2tDO2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7O2tDOztxQzs7O3dDLE87dUM7cUQscUM7a0M7Ozs7dUMsVzs7Ozs7b0M7O3FDO3FDO3FDLEs7cUMsUzs7Ozs7Ozs7Ozs7Ozs7O2tDO21DOzs7Ozs7Ozs7bUM7a0M7Ozs7Ozs7OztpQzs7O3VCOztpQyxHO2tDLE07Ozs7Ozs7aUMsRzs7bUM7OztrQyxNOzs7Ozs7O2lDOztvQzs7O3VDLE87c0M7O2lDOzs7O3NDLFc7Ozs7O21DOztvQztvQztvQyxLO29DLFM7Ozs7Ozs7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7OztrQztrQztvQztrQztvQztpQzs7Ozs7Ozs7O2dDOzs7Ozs7Ozs7d0I7O2tDO21DLFE7bUMsTTttQztrQztrQzttQzttQztrQzs7Ozs7Ozs7O2lDOzs7dUI7O2lDLEc7a0MsTTs7O2lDLEc7O21DOzs7a0MsTTs7Ozs7Ozs7O3FDOztpQzs7O2tDO21DOztvQyxRO29DLE07Ozs0QztrQzs7O21DLGM7Ozs7O3VDO3dDLE87d0MsTzt1Qzt1QyxXO3VDOzs7dUM7OztnRDt3QyxNO3VDOzs7Ozs7bUMsTTs7Ozs7Ozs7bUMsTTs7Ozs7Ozs7a0M7bUM7bUMsZ0I7bUM7Ozs7Ozs7OzttQzttQztxQzttQztxQztrQzs7Ozs7Ozs7OztpQyxNOztnQzs7Ozs7O3VCOztpQztrQzs7O2tDO2tDO2lDOzs7Ozs7Ozs7Z0M7Ozt1Qjs7aUM7a0M7a0MsZ0I7a0M7a0M7aUM7Ozs7Ozs7OztnQzs7O3VCO3VCO3dCO3dCO3VCOzs7Ozs7Ozs7Ozt1QixNO2tEOzs7Ozs7UztLO0ssUzs7STtJO0k7O087OztVLFc7VSxPO1M7Ozt3QjtLLE07O0k7STs7SztPOzs7VTs7Ozs7Ozs7NEIsZTs0QixlO1c7VyxPO1c7Ozs7OztjO1UsTztTOzs7O087OztXO1c7O2M7Ozs7Ozs7O2U7aUI7OztvQjtvQjs7bUI7OztjO2U7O2dCO2tCOzs7cUI7cUIsTztvQjs7O2dCLEs7Z0Isb0IsZTtnQjtnQixPO2dCLDZCOztrQjs7OztjO2U7Ozs7O2M7Ozs7Ozs7O2U7Ozs7O2U7ZTs7OztjOzs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7ZTtlOzs7O2M7Ozs7OztlO2U7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsSztxQjtxQixPO3FCLFk7cUI7dUI7OzswQixPOzt5QjtxQjtxQjtvQjttQjs7O2M7Ozs7O2U7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsWTtxQjtxQjt1Qjs7cUIsWTtxQjt1Qjs7OzBCLE87eUI7cUI7b0I7bUI7OztjOzs7O2U7Ozs7VztVOzs7O0ssVztJOzs7OztJOzs7SSxPOzs7OztjOzthO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPO1E7VTs7MEIsTyw0Qzs7USxVOzs7USxTO1EsTztPO08sVztVO1E7UyxPO1MsTztRLE07OztPOzs7VTtVO1csVztXOzs7Ozs7VyxNOzs7Uzs7O087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7O087OztRO1U7OzthLE87O1k7O2E7YTs7YyxPOzthLE87WTs7Ozs7UTtVOzs7YTs7O2M7YyxLO2MsTzs7YyxXO2E7OztnQzs7Ozs7O1k7O1EsTztRLFE7UTtVOzs7Ozs7O1E7VTs7O2E7O1k7USxPO087Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7TyxTO087OztRLGM7Tzs7Ozs7Ozs7O087USxNO087UTtVOzs7YTs7WTt5QixvQzs7Ozs7O1E7OztTLEc7O2M7O1E7UyxPO1MsTzs7Uzs7WTs7OEIseUM7O1M7VTs7YTs0Qyx1QjtVO1c7WTtjOzsrQjs7WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7Ozs7YTs7YyxtQjtlO2dCLEs7Z0IsTTtnQixNO3VCOzs7eUI7O2E7WTs7O2EsVztZOzs7O1csTTs7Ozs7OztxQjs7OztZOztjOzs7aUI7aUIsaUI7Z0I7Ozs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7UztXOzs7YztjO2E7OztTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1EsTztRO1U7OzthOzs7O2M7YyxLO2M7Z0I7OztrQyx1Qzs7YyxXO2M7OzJCOzs7Ozs7YztjLE87YyxPO2E7O3FCO1k7Ozs7O1E7O1Esb0I7Tzs7Ozs7Ozs7Tzs7O1E7VTs7OztjOzs7ZSxPO2M7YyxXO2MsTzthOzthO2M7Z0I7OzttQjs7OzttQjttQjtrQjtjO2dCOzs7bUI7bUI7bUI7a0I7YTtZOzs7USxROztRLE07O087UTs7OztRLE87USxPO087Tzs7Ozs7Ozs7O08sTTtrQzs7Tzs7O1E7UTtVOzs7O1U7UTs7Tzs7O0c7SSxNO0ksYTs7Ozs7STtJOzs7O1E7OztTO1c7YztjO1M7UztRLE87Ozs7O2dCLE87OztHOztJO3VCLE87STs7O0s7TztVO1U7SztLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1c7Ozs7WSxPO1c7VyxPO1U7O1U7OztXO1ksZTtZOzs7OzthLE07Ozs7VTtXLFk7VzthOzsrQixvQixjOztXO1U7OztXO1ksTTtZLE87Ozs7OztXLE07O1UsaUMsTztVO1M7Ozs7Ozs7SyxVOzs7SyxTO0ssTTtLLE87STtJO0ssVztLOzs7OztNLE07Ozs7O0ksUztJLEk7Ozs7SywyQjtLLE07O0ksVztJO0k7SyxVOzs7SyxPO0k7SyxXO0s7Ozs7O00sTTs7OztJLEk7Ozs7SyxrQjtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7O0s7OztROzs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7O0k7Ozs7STs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztPOzs7VTtXLE87VyxPO1csTztXLE87VTs7a0I7Ozs7Uzs7SztPOzs7O1U7VzthOzs7Z0I7Ozs7Ozs7O2lCLFE7aUI7Ozs7aUIsUTtpQjs7OztpQjttQjs7cUMsaUM7O2lCLGdCO2lCOzs7O2lCOzs7Ozs7Ozs7O2lCOztzQjs7aUI7bUI7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7Ozs7VTtTOzs7SztPOzs7VTs7Ozs7Ozs7Ozs7OztXO1UsSTs7Ozs7VyxNOzs7VTtVO1U7VTtVO1U7VTtVLFc7VTtZOzs7ZSxrQjtlLE07O2M7O1U7VyxPO1csUTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OEIsTyx3Qzs7O2dCLE87ZTtVLE07Ozs7SyxRO0ksSSxjOzs7Ozs7SyxNOztJO0ssUTtLO087Ozs7Ozs7Ozs7VTtXO1ksTzttQjs7O1U7VyxPO1csTztXLE87VSxPOzs7O0s7Tzs7O1U7Ozs7Ozs7Ozs7OztXOzs7VyxrQjs7WTs7O2EsVTs7O2EsVTs7O2EsTztZO1ksSTs7Ozs7O2EsTTs7O21CO2EsTTs7OztXLE07O1U7Ozs7Ozs7Ozs7Ozs7O0k7RztHOztJO0k7SyxhO0s7O1M7Ozs7OztJO0k7Rzs7STtLLGE7SztJO0k7Rzs7STtLOzs7SztPO3VDLDZCO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7O0k7WTs7O2U7Ozs7Ozs7O2M7OztHOztJO0k7O0s7O1M7Ozs7Ozs7O0k7SSxZO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7UTtROzs7USxPOzs7a0I7cUM7O2tCO2lCOzs7OztROzs7OztpQjs7Ozs7Rzs7STtLLE87SyxPO0ssTztJO0c7O0k7Szs7Yzs7O0k7O3NCOztJO0c7O0k7O087O087ZTs7Rzs7SSxPOzs7OztjO2U7Z0IsTztnQixTO2UsTztjO2M7dUI7d0IsTzs7OzswQjswQjs7Ozs7Ozs2QixPOzRCOzs2QixPOzRCOzBCLE87OzswQixPOzs7Ozs7O29DLE87O21DOztvQyxPO21DOzswQjs7OzsyQixPOzBCLE87OzswQjs7MkIsTzswQixPOzswQixPOzswQjs7MkI7OzhCOytCLE87OEIsVzs4QixPOzs7MEIsTzs7OzBCOzsyQixPOzBCLE87Ozs7Ozs7OzBCOzsyQixPOzBCLE87OzBCOzsyQixPOzBCLE87Ozs7OzswQjs7MEI7MkIsTzsyQixPOzJCLE87MkIsTzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsVztvQyxPOzttQzs7b0MsTzttQzs7MEI7Ozs7MkI7MkI7Ozs7MkIsTzsyQjs2Qjs7MEIsTzs7Ozs7Ozs7OzswQjs7OzJCOzJCOzZCOzswQixPOzs7MEI7Ozs7MkIsTzswQixPOzs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsTzttQzs7b0MsTzttQzs7MEI7Ozs7MkIsTzswQjswQixXOzBCLE87Ozs7Ozs7Ozs7OzBCOzs7OzJCOzs4QixPOzs2QjsyQixPOzBCOzBCLFc7MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87OzswQixPOzs7MEI7OzsyQjs7OEI7Ozs7K0I7OytCLG1COzhCOzhCOzhCOytCLE87OEI7OEI7K0IsTzsrQixPOzhCLE87Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7Ozs7OzswQjswQjs7MkIsTzsyQjs2Qjs7OztpQyxPO2dDOzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7MEI7Ozs7MkIsTzsyQixPOzBCLE87Ozs7Ozs7b0MsTzs7Ozs7Ozs4QyxPOzZDOzs4QyxPOzZDO21DOzs7MEIsTzs7Ozs7OztvQyxPO21DOztvQyxPO21DOzs7Ozs7OzBCLE87Ozs7OzJCLE87OzswQixPOzs7OzBCLE87OzswQjs7MkI7MkIsTzswQixPOztzQjs7YTtHO0c7OztNOztPO2U7Ozs7c0M7OztxQzs7TTtLOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7STs7d0Isc0I7O2lDOztPLE07OztPOztHOztJLFk7OzswQjs7O08sTTtlLE07O0c7O0ksWTs7OzBCOzs7TyxNOztPLE07O0c7O0k7SyxPO0s7Tzs2QztJLFM7STtJLE07Rzs7STs7SztNLFM7TSxPO0s7SyxVO0s7STtJO0ssTzs7O2UsVztlLE87Yzs7O0k7STtLLE87SyxROzs7Szs7O08sSztROzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7O0k7SztPOzs7OztVO1M7OztLO0k7RztHO0k7OztRLE07Tzs7OztJOztPLDJDO0ksTzs7O2M7OztlLE87YyxPOzs7d0IsVzt3QixPOzt1Qjs7YTs7Rzs7STtLLFc7SztLLE07O0s7O00sbUI7TSxROzs7OztJO0ssWTtLLFM7SyxPO0ssTztLLFE7STs7O2M7OztJLFk7STtJLE87OztJO0k7OztROzs7OztRO1E7USxPOztRLE07O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7Ozs7STtHOztJLEkseUI7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7OztjLGlCLE87Yyx1QztjOztlOzs7Ozs7Ozs7Ozs7Ozs7bUIsTzs7OztjOzs7YTs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OzJCLFM7O0ksTztHOzs7Ozs7Ozs7Ozs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEc7UTs7TSxxQjs7OztJOzs7OztNOztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjO2dCOzs7bUI7Ozs7Ozs7O21COzs7O29CLE87b0IsTzttQixPO2tCOztjOztpQjs7bUMsTywyQjs7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjLFk7YztnQjs7Ozs7Ozs7YztjOzs7O2E7Ozs7Ozs7O2E7Yzs7Ozs7Ozs7Ozs7Ozs7OztjO2M7Z0I7Ozs7YTs7Ozs7Ozs7Ozs7WSxHOzs7O2EsTTs7O1ksYztZOztZOzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7UyxHO1U7VyxVO1c7YTs7Vzs7Vzs7OztXLFc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7OztTLEc7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7Ozs7O1ksRzthO2MsWTtjOzs7Yzs7O2E7YztlLE87ZSxPO2U7Yzs7Ozs7YTs7OzthOzs7Ozs7O0s7OztLOztROzs7Vzs7OztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7OztjOzs7O2dCO2tCOzs7cUI7b0I7O2lCO2tCOzs7Ozs7Ozs7O2lCLE07Ozs7O2MsTzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7O3dCOzsyQjs7NEMsd0M7Ozs7eUI7Ozs7Ozs7OzswQjsyQixjOzJCLFU7MkIsUTs7Ozs0Qjs7NkI7K0I7Ozs7NkIsTTs7Ozs7Ozs7Ozs7OzBCLE07Ozs7O3dCO3VCO2E7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7Ozs7OztVO1csTTs7Ozs7Ozs7YTs7O2MsTztnQjthO2M7OztpQixrQjs7Ozs7O21CLGE7Ozs7O2lCLE07Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxJLGM7Ozs7YSxNOzs7Ozs7O2UsTztjOzs7VztZLE87O1c7WSxNOzs7OztlLE87Yzs7VTtXLE07VzthOztrQjs7O1U7O1csUTtXO2E7OztnQixPO2U7OztrQjs7O1U7O1cscUIsTyxvQztXLFE7VyxRO2tCOzs7Ozs7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJO0s7SztPOzs7VTs7OztVO1M7OztLLFE7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O08sOEM7Tzs7O1U7OzthO2E7OzthO2E7cUI7O1M7O087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7UztXOzs7YyxPOzs7d0I7d0IsVzt1Qjs7YTs7UztXOzs7YztjLE87YTs7O1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTs7O1M7Uzs7O2M7OzthOzs7USxPOzs7O0c7O0k7STtZOzs2Qjs7Ozs7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0k7SSxPOzs7YztlOzs7Ozs7YTs7Rzs7STs7OztJO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJLE87OztjO2UsTztlLE07ZTtpQjttRDtjLE87Ozt3Qjs7Ozs7d0I7dUI7Ozs7Rzs7STs7SztPOzs7VTtVLE87Uzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGlEOzs7O2E7TztRLG9CLGU7USxPO1E7VSx5QyxlO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOztJLE87Ozs7O2MsbUI7OztpQjs7a0I7aUI7OztpQixvQjtpQjs7OztrQjs7O21COzs7bUI7O29CLFE7b0IsTztvQixPO29CO29CO3NCOzs7Ozs7Ozs7Ozs7OztpQjtpQjs7O2lCOzs7a0I7a0I7a0I7O2tCO29COzs7Ozs7Ozs7Ozs7OzBCOzs7MkIsVTs7Ozs7OzswQjs7OzJCOzs7OzswQjs7OzJCOzs7Ozs7Ozs7Ozs7MEI7OzsyQixVOzs7MkI7Ozs7dUI7d0I7Ozs7Ozt3QixVO3VCOzs7Ozs7a0IsVTtrQjtrQixPO2lCO29DOzs7Ozs7aUI7O2tCLFE7a0I7b0I7OztpQjs7O2lCLE07NEM7OztpQjs7a0I7a0IsTztpQjs7YTtHOztJO0s7Ozs7SyxPO0k7Rzs7SSxpQzs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7O1E7O3VCLDBDOztRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7UTs7O1c7Ozs7Ozs7O1ksTTs7VztZLE07Vzs7WSxPO1ksUTtZO1c7VTs7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTs7d0IsOEM7O1E7Uzs7OztTOzsrQixrQzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTtRO1M7Ozs7UztROztROztTLFE7UztXOzs7OzZCLG1DOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7Uzs7OztROzs7Ozs7Ozs7OztROztTOzs7UztXOzs7YyxtQzswQjs7YzthOztROzs7VztXO1U7O1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O1E7Ozs7b0I7O3NDLG1CLFU7Ozs7Ozs7O1E7O1M7Ozs7UTtRO1M7Ozs7UztROztROztTOzs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztTO1c7Ozs7NkIsaUM7UztTLFU7UztTLFc7Ozs7O1E7O3lCOztRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7UTs7O1c7VztXOztVOztRO1M7Ozs7Uzs7O2M7Ozs7O2E7OztTLE87Uzs7OztlO2lELGdCOzs7O1E7O1E7O1MsVzs7O1E7OztXO1c7O1U7O1E7Uzs7OztTOzs7Yzs7O2E7OztTLE87Uzs7OztlO2lELGU7Ozs7UTs7O1E7USxpQzt1QjtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCO0ksTzs7Ozs7YztlLG1COzs7O2U7ZTtjO2M7YTs7O0ksTzs7Ozs7Yzs7Ozs7ZSxPO2U7aUI7O2tDOztlLE87ZSxPO2U7O2tCO2tELFk7Ozs7ZSxRO2UsUTs7O2U7O2M7YTtHOzs7SyxPOzs7ZTtlLE87Ozs7eUI7eUIsTzs7d0I7O2M7OztJOztLLE87OztlOzs7O2dCO2tCOzs7O29DLHFDO2dCO2U7Yzs7O0k7STtLLE87OztlO2UsTzs7d0MsbUIsbUI7O2M7O0k7STtLLFE7SztPOzs7VSxvQixPO1UsTztTOztLO087OztVLE87Ozs7b0IsVztvQixPO21CO1M7OztLO087OztVO1csTztXLFM7Ozs7Vzs7Yzs2Qyw2Qjs7OztXO2E7OzRCLGUsa0M7O1U7Uzs7O0s7SztPO3NDLDhCO0s7STtJLEksK0I7STtJOztPOzs7VTs7Ozs7Vzs7O1c7O2M7aUQ7Ozs7Ozs7VzthO2dEO1U7Uzs7O0k7RztHO0k7OztJO0k7Ozs7MEI7Ozs7UztTOzs7Ozs7SyxNOztHOztJLEksc0M7Ozs2Qjs7O0c7Ozs7OztROztRLHFCLFE7USxPOzs7a0I7O3FCOztzQixPO3FCLE87OEI7aUUsdUI7Ozt3Qzs2Qjs7Ozs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7OztnQjs7OztJO0ksTzthOzs7Z0I7OztpQixTO2lCO2dCLE07O2U7O0c7O0ksTzs7O2M7O2lCOztrQixPO2lCLE87MEI7Ozs2Qjs4QixTOzhCOzZCLE07OzRCOzs7O2lCO3lCOzs7O0c7RztJO00sMEMsZTs7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07OztPO2U7OztrQjs7OztzQjs7Ozt1QixXO3NCLEc7dUI7d0IsVzt3QixLO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3dCOzBCO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7O3NCOzt5Qjt5Qjt3Qzs7Ozs7OzRCLFE7NkI7Ozs7Ozt3Qjs7OztzQjtzQjs7Ozs7O3FCOztrQjtpQjs7ZSxNOztHOztJOzs7Ozs7Uzs7O1ksZ0MsTztZLFc7Vzs7SSxPO0c7OztLOztROzs7Vzt3QjtVOztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtnQjs7ZTtrQjs7STtHOzs7SSxPOzs7OztjOzthOzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7dUI7Ozs7Ozs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7O087OztROzs7UTtROzs7OztPOzs7O087O1E7VTs7NEIsTyxvQzs7USxPO1EsVTs7OztXLE07Ozs7VzthOzs7Z0I7NkI7ZTs7WSxNOzs7Ozs7cUI7O29CO1c7WTtZLG9CO1c7WSxNO1c7Ozs7TyxNOzs7O08sTTtrQzs7OztPOzs7O1c7OztZOzs7WTtZOzs7Ozs7b0I7WTs7Ozs7Vzs7WTtZOzs7Ozs7O087UTs7O2dDO1c7O1E7O2E7O1E7OztPLE87OztpQjs7O2tCLGM7Ozs7O3FCLGdDOzs7O3VCLE07O3NCO3dCOzt5QixPO3dCOzs7OzsyQjs7cUI7c0IsTTs7cUIsVztxQjs7OztvQjs7Ozs7O3dCO3lCOzJCO3lCO3lCOzs7Ozt3QixNOzs7dUI7cUI7OzsrQjs7Ozs7O29CO3FCO3NCO3dCOzs7Ozs7Ozs7b0I7cUIsd0IsUTtxQjs7OytCOzs7O2lDOzs7O3NCOzt1QixRO3NCOztzQjt1Qjt3QixPOzs7Ozs7Ozt1Qjt1QixNOzs7Ozs7OztzQjt1Qjs7MEI7Ozs7Ozs7dUI7Ozs7dUI7Ozs7b0I7O29COzs7Ozs7OzRCOzs7b0IsTTs7O29CO3FCO3VCO3FCO3FCOzs7OztvQixNOzs7Ozs7Ozs7O0ksTzs7Ozs7Yzs7ZTs7Z0I7Ozs7Z0I7Z0I7ZTs7YztlOzs7ZSxRO2U7ZTtpQjs7Ozs7Ozs7Ozs7Yzs7O2lCOzs7YztlO2lCOzs7b0I7Ozt1Qjs7O3VCOzs7dUI7Ozs7Ozs7dUI7Ozt1Qjs7O3VCOzs7dUI7O21COztlO2M7YTtHOztJLGlDOzs7Szs7UTs7O1M7Vzs7Ozs2QixPLHVDO1E7O1E7OztTLFE7OztTLG9CO1MsTztTO1c7OztjOzs7OztjO2MsUztjOztzQjthOzs7OztROztnQjs7OztROztTLFU7OztRO1E7Z0I7UTs7Ozs7O1E7OztTLFU7Ozs7UTs7dUIsMEM7O1E7Uzs7O2dDLG9DOzs7UztXOzs7YztjLE87YTs7Ozs7Ozs7WTs7O2U7OztnQixjO2dCLFM7ZSxPO2M7Ozs7O1E7O1E7O1MsVTs7OztTO1M7Vzs7O2M7YyxPO2E7Ozs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7O1M7UTtRO2dCO1E7Ozs7OztROzs7Ozs7UyxjO1MsVTtTO1c7Ozs7O2M7Ozs7Ozs7Ozs7OztjO2E7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7UztXOzs7Yzs7ZSxNOzs7Ozs7OztjO2E7O1M7OzthOzs7Z0I7Ozs7O2dCO2U7Ozs7UTs7O1c7VyxPOzs7cUI7OztVOztRO1M7Vzs7O2M7Ozs7Ozs7OztlO2lCOzs7OztvQjs7Ozs2Qjs7O21COzs7ZTtjO2E7OztTO1c7OztjOzs7Ozs7O2MsYTtjLG9CO2MsTzthOzs7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7O1k7OztlOzs7O2dCO2tCOzs7cUIsVztxQixlO29COztlO2M7OztTO1U7WTs7O2U7ZSxVO2U7Ozs7Z0I7Ozs7O2UsTzs7Yzs7O1U7WTs7O2U7ZSxVOztlLE87Yzs7Ozs7Ozs7O1E7OztZOzs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7Ozs7Ozs7OzthLE07OztZOzs7YTs7Ozs7OzthO1k7O1MsWTtTO1c7OztjO2MsTzs7b0MsK0I7O2E7O1M7Vzs7O2M7YyxPO2E7OztTOzs7YztjO2E7OztROztpQjs7bUMsbUIsVTs7Ozs7O1E7O1M7Ozs7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7UztXOzs7YztjO2M7YztjOzs7O2UsUTs7O2UsUTtlLEk7OztjLE87YTs7O1M7OztjOzs7OzthOzs7UyxPO1E7O2lCOztpQyw2Qjs7Ozs7O1E7O1MsVzs7O1M7Vzs7O2M7YztjO2M7Ozs7ZSxRO2UsSTs7O2MsTzthOzs7Uzs7O2M7OzthOzs7UyxPO1E7O2lCOztnQyxnQzs7Ozs7O1E7O1M7UztXOzs7OztjO2E7OztTLFU7UztTO1c7Ozs7O1E7O3lCOztRO1E7OztRO3lDO3VCO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7OztJO0k7Rzs7RztJOzs7RztJOztHO0k7Ozs7OztHO0k7OztJLE87Rzs7STs7OEIsTzs7O087Ozs4Qjs7O21COzs7ZTs7Rzs7STtLO0s7O0s7O00sVTs7Ozs7O0ksVTtJO0k7Rzs7STtLOzsyQjs7O1E7O1EsTTtNO0c7O0k7SztPOzs7VSxPOzs7O29COztxQixRO29CO21CO1M7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztRO1U7OzthOztnQjs7aUI7O2lCLE87aUIsVTtnQjs7Z0I7O2lCOztpQixPO2lCO21CO2dCO3dCOztZOzs7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNLEk7O0s7TTtROzs7VztXLEk7OzttQzs7O1csSSxXOzs7bUM7OzsyQjtXLFE7VztVOzs7Ozs7Ozs7O0k7OztPO087UTtTLE87UyxPO1E7Ozs7O1MsTTs7OztNOztJO0ssTztLLE87O0s7STtLO2lCOzs7Ozs7SyxNOzs7STs7O0k7Rzs7STtHOztJO0c7Ozs7Ozs7SztNOzs7OztLO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxRO0ssTztLLFc7SSxPO0c7O0ksaUI7STtLLFc7SztLO0k7STtJLE87Ozs7O2U7Z0IsTztnQixhO2U7Yzs7YztjOztlO2M7Ozs7Ozs7ZSxPO2UsSztlLE87ZSxVO2U7O2U7ZSxjO2U7Ozs7O2tCO21CLE87bUIsTztrQixPOzs7Ozs7aUI7ZTtlOztjLGtCO2MsNkI7ZTtnQixPO2dCLE87ZTtlO2dCO2tCOzs7Ozs7Ozs7OztlO2U7ZTtlLGM7O2dCO2lCLFM7aUIsTztpQixNO2lCO2dCOzs7ZTs7Ozs7O3FDOztlO2dCO2lCLE87Ozs7Ozs7Z0I7Z0IsTTs7O3lCOzs7OztjO2UsUztlO2lCOzs7Ozs7Ozs7OztjO2M7ZSxVO2U7YztjO2E7Rzs7SSxXO0ksTztHO3FDLHVDOztJO0c7O0k7O087OztVO1csVztXLE87VyxLO1csTztXLGtCOztXLE07O1UsVztTOztJO0k7SztPOzs7VTs7O1csUTtXLFE7VTtTOztLO087OztVO1UsTztTOzs7SztPOzs7VTs7O1csTztXLE87VyxPO1c7VTtTOztLLFM7SyxPO0ssVztLO087OztVOztXLEs7VyxPO1UsTztTOzs7SyxRLFc7SyxNO0ksRztZLHFCO007TSxNO3lCOztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Szs7STtLO08sMkM7SyxPO0s7Tzs7O1U7VSxXO1M7OztLO00sTTtNO00sTztLOztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87Ozs7TyxvQixPO08sTzs7Tzs7USxPO08sTzs7TyxzQixPO08sTzs7TyxzQixPO08sTzs7TyxvQixPO08sTzs7Ozs7Ozs7OztPOzs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7USxTO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7TztPO087O1EsTztRO1U7Ozs7YyxPO2E7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7TztPO087USxPO1E7VTtZOzs7O2dCLE87ZTs7O1EsTztROztXOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7TyxPOzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxvQixPO08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7UztXO1MsVztTLHVCOztTLE87UztXOzs7UyxPOztTLE87UztXOzs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztPOzs7Ozs7USxxQjtRLFk7O1EsTzs7USxPO1E7VTs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087O1E7USxPO08sTzs7Ozs7Ozs7OztPOzs7OztXLHlCLE87VyxPO1U7UTtRLE87TyxPOzs7Ozs7Ozs7Ozs7OztJLE87Ozs7NkIsMEI7RztHOzs7TTs7Tzs7cUM7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7Ozs7O0ssWTs7Ozs7Ozs7Ozs7TTtPLE07YTs7Ozs7OztJLGE7SSxxQixNO0ksTzs7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzs7Ozs7Ozs7Ozs7OzsyQixxQjs7SSxVO0k7SztPOzs7VTtTOztLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7O0c7O0ksTzs7O2MsTzthOzs7Rzs7STtJOzs7O1M7O1MsVTtTOzs7UTtLLFU7O2tCOztLO0s7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7RztJO0k7OzZCLDBDOztJO087SztJLE07Rzs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVO1U7WTs7O2U7ZTtjOzs7VTtZOzs7ZTtlO2M7O1U7Uzs7Uzs7OztVO1U7WTs7O2U7ZTtjOztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxPOzhDO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O00sc0I7Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7TztPLE87OztpQjtpQixPO2dCOzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPO087OztVO1UsTztTOztPOzs7VTtVLE87Uzs7Ozs7TztPOzt5QixvQixPLHNCOztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7UztXOzZDO1MsTztTO1EsTzs7Ozs7O1E7OztTO1c7OzZCLG9CLGdCOztTO1M7Vzs7NkIsbUIsVTs7UyxPO1EsTzs7O1E7O1E7OztTO1csMkM7UztXLDJDO1M7OztTO3NCO1EsNkI7USxPOztROzs7O1M7VywyQztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7UztXOzZDO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7O0ksTzs7O2M7YyxPO2E7OztHO0c7STs7Ozs7O29DLHdDOztJO0k7Ozs7Ozt5RDs7Ozs7Szs7Rzs7STs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7Tzs7SSxPOzs7STs7SyxPOzs7STs7O0ksSSxXOzs7O0s7TSxPO00sTztLLE87O0k7Rzs7STtHOztJO0c7a0Q7Rzs7STtHOztJO0ssTztLLE07SztJLEksVTs7OztLO00sTztNLE87SyxPOzs7STtHOztJOzttQixPO0ksb0IsTTtJOzs7O0k7SyxxQztLLGlCO0k7STtLLE87OztlOzs7OztnQjs7O2U7Yzs7O0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O3lCOztROzs7Ozs7Uzs7O1M7UTs7UTs7Ozs7Uzs7O1M7UTs7UTs7O1M7Vzs7O2M7OztlOzs7YzthOzs7OztTO1E7Z0I7OzttQjttQjs7Ozs7O1E7O1E7Ozs7UztTO1c7OzRCOzs7UztXOzs0Qjs7UztROztROzs7OztTO1M7Vzs7OztjOzs7UTs7O1E7O1E7Ozs7OztTOzs7UztROztROzs7O1M7OztTO1E7O1E7Ozs7UztTO1E7O1Esa0M7UTs7USxrQztROztROzs7Ozs7Uzs7O1M7UztROzs7USxHO1MsTTtRLEksSSxPOzs7Ozs7UTs7UTs7Ozs7O1M7UztROztROzs7UztTO3dCLE8sc0M7UztXOzs7Yzs7OzswQixJOzs7a0Q7OzswQixPOzs7O2MsTzs7Ozt5QixJOzs7aUQ7Ozt5QixPOzthOzs7UztXOzt1QyxPLHdCOzs7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssTzs2QztJOztLO007Ozs7O007SztJOzs7Szs7O0ssWTs7Szs7STswQixrQzsyQix3Qzs7O0k7Rzs7O0ssWTtLLE87STtJOztPLDBDLG1CO0k7RztHO0k7O21DLFc7Ozs7OztJOzs7Ozs7O0ssUztJOzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7OzBCOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPLGtDLE07TztlOzs7a0I7a0I7aUI7Ozs7O08sYzs7Tzs7OztRLE07UTtVOzs7YTthLGM7WTs7O1E7VTs7O2E7YSxjO1k7O1E7TyxXOztPOzs7OztRLE07UTtVOzs7YTthLGM7WTs7TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OzswQjs7O21COzttQyxnQjs7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7O1csTzs7O3FCLE87O29COztVO08sTzs7Ozs7Ozs7Ozs7cUIsTztPOzs7UTs7VyxPOzs7cUIsTztvQjs7VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtJLE87Rzs7STs7ZTtlOzs7O2lCO2lCOztxQixPOzs7TyxPOztHOztJOzs7O007UTs7eUI7O087OztPLGM7TztPOzs7VTtVLE87Uzs7TyxPOztNO00sTzs7O0k7Rzs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs2Qjs7NkI7OzZCOzs2Qjs7OEI7OzhCOzs7OztXOztXOztXOztXOztXO21COzs7O1E7OztROzs7USxPOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7O1E7a0I7a0I7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O087Ozs7UTtPLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7O1E7Ozs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0ksUzthOzs7OztROztROztROzsyQjs7O087O087Ozs7Tzs7Tzs7YTtzQjtHOztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7WSxPOzs7c0IsTztxQjs7VztRLE87Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O1E7OztTOztZO1ksTzs7O3NCOzt1Qjs7O3NCLE87Ozs7Ozs7O3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLE87OztzQixPO3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZO1k7OztlOztnQjs7O2UsTztjOztZOzs7ZTs7Z0I7OztlLE87Yzs7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZO1k7OztlOztnQjs7O2UsVztlLE87Yzs7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7O1ksTzs7O3NCLE87cUI7O1c7USxPOzs7Ozs7OztRLE87Ozs7Ozs7O2tCLE87Ozs0Qjs0QixPOzsyQjs7aUI7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7O1ksTzs7O3NCLE87cUI7O1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7OztROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7Ozs7Ozs7Ozs7SztNLE87OztnQjtnQixPOzs7Ozs7OztlOztLO0s7Szs7O1E7Ozs7UztRO1E7Tzs7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007O1M7OzJCLG9CLFc7O00sTztLOztNO087Uzs7O1k7WTtXOztPLE87TTs7O1M7UztTOzRCOztTO1M7UTs7TTtLO21CO0s7OztrQztrQztJO0k7Ozs7O3NCOzs7aUMsWTs7Ozs7O1M7UztRO1E7O1M7OztROzs7Ozs7Ozs7Uzs7O1M7OztROztTOztVO1k7UyxjO1E7O1M7Ozs7VTtZOztVLEs7OztTOzs7OztVOztXOzs7O1c7Ozs7VSxHO1c7WTtjOztZO1k7Ozs7YTthO2E7Ozs7OztZO2E7O2lCOzs7Ozs7bUI7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1cseUI7Ozs7YTs7YzthO2E7Ozs7Ozs7O3NCOztTOzs7aUI7OztRO1EsSSxJLHNDOztTLEksZTs7Ozs7OztZO1k7Ozs7Ozs7VyxHLHVCOzs7OztVLE87OztTOztVLFU7VTtXOzs7OztXO1c7O1U7VTtTO1M7O1U7Ozs7VTtVO1MsSSxXLHVDOzs7OztVO1csTTtVOztXO1c7Ozs7OztZOzthLEksdUIsTzthOzs7Ozs7Ozs7VTs7O1c7O1k7WTtZO1k7Ozs7YTtjOzs7YztjOzs7Ozs7O2E7YTthO2M7O2M7YTs7OzthOzs7Ozs7O1k7YTthO2E7YTthOzs7Ozs7OztnQjtpQjs7Ozs7Ozs7Ozs7O2lCOztpQjtnQjtnQjtnQjtpQjs7aUI7Z0I7Ozs7O2dCOzs7OztjOzs7Ozs7Ozs7Ozs7OztZO2E7YTthO2E7YTs7OztjO2U7Ozs7OztlOzs7Ozs7O2dCO2dCO2U7ZTtlO2dCOztnQjtlOzs7Ozs7Yzs7Ozs7Ozs7OztXLEksaUM7Vzs7Ozs7OztXOztZOzs7Ozs7OztZLEc7YTtjOzs7Ozs7Ozs7Ozs7Yzs7YzthO2E7YTtjOztjOzs7Ozs7O1k7YTs7O1c7WTs7Ozs7O1U7VTs7UTs7Uzs7O1U7OztVO1U7Ozs7Ozs7UztTO1MseUIsd0I7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEksb0I7WSxxQjs7VyxVO1csTzs7OztxQjtzQjtzQjtzQjtxQixxQjtvQjs7O3FDLHNDO3FDLHVDOzs7O1csSSxzQjtXLHNCOztVLFU7VSxPOzs7O29CO3FCO3FCO3FCO29COzZCO21COztTOztVOzs7Ozs7VTtVOzs7Ozs7O2E7YztjOztjLE07YSxPOzs7VztZO1k7O1ksTTtXLE87OztTO1U7VztXOzs7Ozs7O1M7VTtVOzs7Ozs7OztTOzs7VTtVLE07c0I7O29DO1M7O1UsZTtVLEk7UztVO1M7UyxJOzs7O1c7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7Ozs7O2dCO2U7OztXOzs7Vzs7Ozs7WSxNO1ksTTtZOzs7O2E7Yzs7OzthO2M7ZSxNOzs7Ozs7O2M7Yzs7Ozs7OztlO2U7Ozs7O2E7Ozs7O1c7WTtZLE87O1c7OztjO2M7YzthOzs7Ozs7ZTtnQixPO2U7c0I7ZSxPOzs7O3lCLE87d0I7Yzs7Vzs7VztXOzs7VSxJLG1COzs7O1M7O1k7OztlLE07YztTOzs7WTtZO1k7Vzs7UztTOzs7UztVLDJCLFM7VTtZOzs7ZTtnQjs7aUIsUTs7O2lCOzsrQixPLGMscUI7Z0IsTzs7O2U7Yzs7UztROztTO1UsTTtTO1UsWTtVOzs7UyxPO1E7O1M7VSxNO1M7VSxZO1U7OztVOztvQztTOzs7O2E7OzZCLHVCLFcsRTs7UyxPO1E7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtjO2M7Ozs7Ozs7Ozs7O0ksVyxPO0k7O0s7Tzs7O1U7VSxXO1M7O0k7OztPO087TztNOztJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksTzs2QztHOzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7UTs7O1M7UTs7UTs7OztTO1M7USxPOzs7O2dCOztJO0c7RztJOztvQixPLGlDOztJLE87MkMsNEI7Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFM7SyxROzs7d0IsTyxrQztJLG1CLE0sd0M7c0IsMEI7SSxJOztvQjtxQztpQjs7Ozs7Ozs7O1MsYTs7UTs7Ozs7OzRCOztROzs7Ozs7OztROzs7OztTLHNCLE87UyxhOztROzs7OztTOzs7VTtVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7OztJLE87Ozs7Ozs7Ozs7SSxXO0k7Rzs7O0k7SyxNOztJOzs7O0k7SyxNOztJOzs7O0ksVyxNOztJOzs7O0ksVyxNOztJLGU7Ozs7Ozs7O3FCLGtCLGdDOzRCLHFCOztJLE87O0c7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0ksTzs7O2M7OztlOzs7YyxtQjs7O0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sSTs7Ozs7OztNLGlCO007O0k7STtHOztJLE87OztjO2M7ZSxPOztjO2U7eUM7ZTs7Ozt3Qzs7O2E7O0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJLE87OztjOztlOztjLE87YTs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7SztLO29COzs0QjtNOzs7Tzs7VTtXLE07O1U7UztPLFE7OztVO1U7eUI7Vzs7Ozs7WSxNO1k7Ozs7OztjOztlO2UsTzs7Ozs7Ozs7O2E7YztjOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7O1c7VyxJLGtCOzs7Ozs7O1csVztjO1k7VyxNOztTO29DLHdDOztNOzs7OztJO0k7Rzs7STthO2tDOztHOztJLFk7O0k7Rzs7SSxPOzs7OztjO3dCO3dCOzs7OzBCOzBCLE87O3lCOzs7YTs7Rzs7STtjO2M7Ozs7Z0I7Z0IsTztlOzs7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOztJLE87OztjO2MsYzthOztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7SSxPOzs7Yzs7Ozs7ZSxRO2UsVTs7Ozs7Ozt3Qjs7Ozs7Yzs7O2U7Z0IsVzs7OzttQiw0QjtjO2E7Ozs7SSxvQjs7Ozs7Ozs7OztNOzs7VTs7OztTOzs7VTs7O1M7TztxQzs7OztROzs7O1M7MEI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7Ozs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHOzs7Ozs7Ozs7Ozs7Ozs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7STs7Tzs7O1U7VSxXO1M7O0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7O2E7Ozs7aUI7OztvQjtvQjttQjs7Ozs7YTtlOzs7a0Isb0IsTztrQixPO2lCOzs7YSxPO2E7ZTtpQjs7O29CO29CLE87bUI7O2E7ZTtpQjs7O29CO29CLGU7bUI7O2EsUzthLFc7YTtlOztnQzs7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCO3dCOzJDLE8sa0M7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Z0Q7Ozs7Ozs7Ozs7Ozs7OzsrQjs7OztrQzs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7dUI7d0I7d0IsTzt3Qjs7OzJCOzBELGM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7OztpQjs7OztlO2E7YTtlO2lCOzs7b0I7b0I7bUI7O2E7O2E7OztZO29COzs7VztZOzs7Vzs7Ozs7Ozs7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WTs7Ozs7Vzs7Ozs7Ozs7Ozs7OztROztXOzs7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YzthOztROzs7O1k7OztlO2UscUI7Yzs7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7O087Ozs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7UTs7Ozs7OztNO087Ozs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TTs7OztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087TztTOzs7WTtZO2EsTTtZLEk7OztXOztPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7UztPO1M7OztZOzs7YTtZLHNCO1c7OztPO087Uzs7O1k7WTtXOzs7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJOztPOzt5QixrQixPLDJCOzs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YyxPOzs7OztHOztJO3lFO0ksTTtHOztJOzs7SyxPOztJLE07Rzs7STs7Rzs7STtrQzs7SyxNOztJO0c7RztJLGU7Ozs7Ozs7Ozs7STs7YTtjLFk7YyxNO2MsUTs7O2EsSSxVOzs7O2UsTzs7OzthLE87O0c7RztJOztJOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOztHOztJOztNO08sVTtPO087O087TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNLFE7TTtNLE07OztTO1E7TTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJLDhCOzs7Ozs7OztJO0c7O0ksVztJOzs7TztPO087TTs7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7Ozs7Ozs7Ozs7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7O2MsTzs7O3dCO3dCOzs7Ozs7O3VCOzs7YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7STtLO087OztVO1UsZ0I7Uzs7SyxPO0s7OztLLFM7STs7OztJOztPOzs7VTtVO1M7O0k7Rzs7STtJOzs7OztPLFM7UTtPOzs7OztLOztHOztJOztPOzs7VTtVLE87Uzs7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsOEM7O0k7Rzs2QixXO3VDLCtCOztJO0ssVzs7Szs7OztNO087TztPO007TTs7Ozs7STtLLDRCLFc7O0s7Ozs7O087UTs7O087Ozs7c0IsYyxpQzs7TTs7Ozs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7SSxPOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7YztjLE87O3dCO2E7O0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7OztNLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0k7Z0I7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJOzs7Rzs7OztJOztLOztJOztLO007OztNO1E7TTs7UyxZO1M7Ozs7O1U7OztTOzs7Ozs7UyxNO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7Ozs7O007TyxNO087Uzs7O1k7OzthLE07WTtXOzs7Ozs7Szs7UTs7O1c7OztZLE07VztVOzs7Szs7STtLLFM7Ozs7OztLOztROzs7VztXO1U7Ozs7TSxNO0s7O00sbUMsbUI7TTs7UyxPOzs7Ozs7Ozs7UTtNLE87TSxPO00sWTtNO1E7TTtPO1M7O3lCLCtCOzs7OztNO087Ozs7Ozs7Ozs7TztRO1U7OzthO2EsTzs7O3VCO3VCLE87OzZDLE8sZ0M7O3NCOztZOzs7O087UTs7Ozs7YSwyQzs7Ozs7Ozs7O007TztTOzs7WTs7Ozs7YTthO2U7OztrQjtpQjs7O2E7O2EsVTs7YSxPOzt1Qjs7OztZO1k7WTtXOzs7OztPO1M7TTs7Ozs7Ozs7Ozs7OztNO087OztNOzs7OztTLGEsTzs7UyxPO1E7Ozs7Ozs7Ozs7O0k7SyxzQjtLOztTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7O1c7Ozs7Ozs7OztNOzs7Ozs7Ozs7TyxvQyxROzs2Qzs7O087UTtVOzs7YTthLGM7WTs7UTtVOzs7YTthLGM7WTs7USxPO1E7OztRLFM7Tzs7Ozs7O087UTtVOzs7YTthO1k7O1E7OztXOzs7YztjO2E7Ozs7Ozs7OztRO1MsSTs7O1ksa0I7d0I7O1ksSSxJLE87Ozs7Ozs7WSxPOztRO1E7USxJLGlCO1E7OztXOzs7O1U7OztTOztVO1k7OztlLG9COzJCOzs7YztVO1UsTzs7VSxPOzs7OztrQjs7Ozs7O0k7OztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTtnQixPOztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztpQjtLOzs7Ozs7O007O0s7OztTLE87OzttQjs7O29COzs7bUIsSSxZOzs7NkM7OzttQjsrQjs7O1E7TSxPO00sTTtLLEksVTs7OztvQjtNOzs7Ozs7bUI7SyxZOzs7Ozs7OztNO007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUI7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7c0I7Ozs7O3FCO087UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7O1EsTzs7K0IsOEI7Ozs7USxPOzsrQiw4Qjs7O0s7Ozs7STs7OztRO2tCOzs7Ozs7Ozs7UztVOzs7O1c7VTs7Ozs7Ozs7Ozs7O1M7VTs7VztVOzs7Ozs7Tzs7OztRO1E7UTtPOzs7USxXOztPLE87O0ksTztHOztJO2dCLE87O0k7Rzs7O0k7STs7TSxPOzs7O0ssSSxZOzs7O007Ozs7Ozs7Ozs7OztrQjs7TTtNO087OztNOzs7O08sSSxVOzs7O1E7Ozs7OztPOzs7UTtROzs7Ozs7O0c7O0k7Ozs7O00sRztPO1E7Ozs7OzhCOzs7O007OztTLFc7UyxjO1E7TTs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO087O3dCOztLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjs0Qzs7OEIsb0I7OEI7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7OztvQjs7OEIsb0I7Ozs7Ozt1Qzs7OEI7Ozs7Z0M7Ozs7OytCOytCOzhCO2lEOzs7Ozs7Ozs7OzhCOzZCOzs7Ozs7O29COzs7Ozs7O1U7O29COzs7OztvQjs7O3FCOzs7b0I7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozs7Ozs7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozt1Qjt3Qjt3QjswQjs7OzZCOzZCOzhCLE07Ozs2Qjs0Qjs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQyxNO3FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzttQztnQzs7OzhCLE07Ozs7OzsrQjsrQixPOzs7K0IsTTs7OEI7OytCOzhCLE87Ozs7Ozs7Ozs7Ozs7VTs7b0I7Ozs7OztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1Qjt1QixPO3NCLFMsNkI7c0IsVTtzQjt1Qjs7aUM7Ozs7OztzQjs7dUI7OzBCLG9COzBCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7O29COzs7b0I7OztxQjtvQixHO3FCLFc7cUI7Ozt3QixrQixROzs7Ozs7O3dCO3VCOzs7Ozs7cUI7b0I7b0I7cUI7cUI7dUI7cUI7OztxQjs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7Ozs7Ozs7O3VCOzs7Ozt1Qjs7Ozs7O3dCLE07dUI7Ozs7Ozs7Ozs7dUI7Ozs7dUI7Ozs7Ozs7Ozs7cUI7c0I7Ozs7Ozs7O3NCOzs7Ozs7b0I7Ozs7O1UsVztVOztvQjs7OztvQjs7OEIsb0I7OytCOztnQzs7O21DOzs7Ozs7O2tDOytCOzs4QixNOzs7a0Q7Ozs7Ozs7b0I7OztxQjs7O3FCLFM7cUI7OztxQjt1Qjs7Ozs7O29COzs7Ozs7Rzs7O0k7SyxROzs7Szs7O0k7Rzs7STtrRDtJO0c7d0IsTyx5Qzs7STs7O0ssTzs7OEIsMEM7OztJO0c7O0ksTztHOztJLFk7STs7OztPOzs7VTs7O1csTztVO1csVztXOzs7OztVO1M7O0s7STs7O0k7SztHOzs7O0s7SyxhO0s7SztJOztLO007TTs7O0ssd0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJOzs7O00sTTs7OztJLHNCOzs7O0s7TSxPO00sTztNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7O0k7SztLO0s7TzttQyxtQjtJOzs7Ozs7OztjOzthO0c7O0k7O0c7O0k7O0c7O0k7O0c7O0k7Ozs7O1E7OztROztzQzs7Ozs7O1E7Ozs7OztZLE87OztzQjtzQjtxQjs7VztTO1c7OzRCOztTOztTO1E7O1E7Ozs7O1M7Vzs7NEI7O1E7O2dCOzs7bUI7bUI7a0I7Ozs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7aUM7Ozs7Ozs7OztLO007TSxTO00sWTtNO1E7OztXO1csZTtVOztNO1E7OzBCLG1CLFU7O007Ozs7WTs7Ozs7Ozs7Ozs7MkMsa0M7aUIsTzs7Ozs7Ozs7O2lCLE87Ozs7O1k7YSxVO2E7ZTs7OEIsZSwyQjs7WTs7O3FCOzs7VztXO1k7WSxjO1c7O1ksTzs7Vzs7WSxPOztXO2tCO1csdUIsVyxnQztXOzs7O2U7OztZOztXLE87Ozs7Ozs7SSxRO0k7Rzs7STtLLE87OztTOzs7O0s7Tzt1Qyx1Qjs7Ozs7Ozs7O2M7Ozs7NkI7O2E7Rzs7STtrQyxPO3VCLE07O0k7Rzs7STs7SztPOzs7VTtVO1M7OztJO1k7OztlOztnQixPOzs7OEI7Ozs7Z0I7aUIsTzsyQjs7Z0IsTTs7O2U7Yzs7OztHOztJOztPOzs7O1E7VTs7OzthOzs7Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJO0ssVztLO087O3lCLGtCLGM7O0s7SyxPO0s7SztLO08sbUMsaUI7Ozs7Ozs7Ozs7VTs7O1c7O2M7OytCOzs7O1c7OztXLE87VzthOzs7Z0IsbUIsTzs7Z0I7ZTs7VzthOzZDLHVCO1c7VzthOzs7Z0I7Z0I7ZTs7Vzs7O2dCO2lCOzs7O2tCOzs7O2lCOzsyQjs7Ozs7Ozs7Z0I7Ozs7Ozs7O1csTztVO2tCOztTO0ksTztHOzs7STs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7OztLOztJO0c7O0ksVTs7SSxpQjtHOzs7Ozs7Ozs7Ozs7O0k7O087O1EsUTtROztRO1E7VTs7UTtPOzs7O087O1EsWTtRLGtCO1E7VTs7O2E7Ozs7Yzs7Ozs7YTs7cUI7O1k7Ozs7OztRO1U7O3NDLFc7Ozs7Ozs7OztRO1U7UTtROzs7Vzs7Tzs7Ozs7Ozs7Tzs7O2tCOzsrQiwyQzs7O087OztrQjs7K0Isd0M7O087OztRO1U7OzthO2EsTztZOzs7Tzs7K0IsMkI7OztvRDs7O087Ozs7UTtRO1E7VTs7O2E7Ozs7O1E7Ozs7VTs7Ozs7OztXOzs7WTs7Ozs7Vzs7O1M7Ozs7O1M7Ozs7O08sTzs7Tzs7Ozs7UTtRO1U7OzthOzs7Tzs7O1MsTztROzs7Ozs7Uzs7O087O087O087Ozs7OztRO1E7VTs7O2E7YSxPO1k7OztROztPOzs7a0I7Ozt5Qjs7Tzs7Tzs7OztRO1E7OztZOztPOzs7a0I7OzsyQjs7Tzs7Tzs7OztRO1E7Tzs7O2tCOzs7dUI7O087OztPOzs2QixvQjs7O087OzhCLHNCOztJLE87Rzs7SSxXO0k7Ozs7O0s7SztJOzs7ZTs7O2M7O0k7RztHO0ksYTtJO007SSxjOzs7Ozs7STtLO087OztVO1UsTztTOzs7SztPOzs7VTtVO1c7Ozs7O1c7Vzs7OztlLGtCLFE7MkI7O2UsTzs7O3lCO3lCO3dCOzs7ZTs7ZTs7ZTs7ZTs7ZTs7OztnQixNO2dCLFE7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsbUIsTTtxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7b0IsZTs7O29CO3FCLGlCOzs7cUIsTztvQjs7b0I7O29CLGlCLFM7b0I7Ozs7Ozs7b0IsTzs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOztlOztlLG1COzs7OztlOzs7O2U7Ozs7OztlOzs7ZTs7O2U7Ozs7ZTs7OztlOzs7O2U7O3VCOztVOztXLE87OztxQjs7b0I7OztVOztXLE87OztxQixPOzs7K0I7K0I7OzhCOzs7b0I7OztVO1U7OztXOzs7Ozs7Vzs7Yzs7MEMsVzs7OztXOzs7Ozs7O1c7Ozs7O1U7VyxTO1c7O1csTztVOzs7OztXO1c7O1U7Uzs7O0s7Tzs7O1U7OztXO1U7Uzs7O0s7O0s7TTtROzs7VztXO1U7Ozs7O0k7SztPOzs7VTtVO1M7OztLO087OztVOzs7Ozs7OztVOzs7O3NCOztVO1M7OztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFM7OztJOztLO00sSSxjLDJDOzs7OztPLFM7TztPOzs7STtHO0c7STtJO0k7STs7STtJO0k7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHO0ksaUI7Ozs7OztJO0ssUTs7O0s7Tzs7K0IsbUM7OztJO0k7Rzs7STtLLE07O0ssTTs7SSxXOzs7O0s7O007Ozs7Ozs7Ozs7O007OztJO0s7aUQsMkI7OztJO0c7O0ksc0I7O0ssTTtJLHNCOztJLEksUTs7Ozs7Ozs7Ozs7OztJOzZCLHlCO0c7RztJO0k7STtJOzs7STtJO0c7O0k7OztnQjtnQjs7O2lDLE8saUI7Yzs7OztnQjs7O2dCO2lCLFE7OztpQjttQjs7O3NCOzs7Ozs7Ozs7cUI7OztnQjtlO0c7O0k7O3lDLFcscUI7O0k7Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STtJOztJLHVCO0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8sb0Q7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7OytCOzs7Szs7STtHOztJOzs7OztNOzs7VTtTOzs7Ozs7Ozs7OztJLE87Rzs7O0s7TSxJO007UTtVO3lDLE87O00sTSxXO00sTSxXO0s7O0k7STt1Qjs7a0I7SSxxQixVO2tCOztJO0c7O0ksVzs7Ozs7OztJLEs7SztJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7OztNO29EOzs7OztPOztNOzs7Ozs7Ozs7OztNO007TTs7O0k7Rzs7STs7O007MEI7c0I7TTs7Ozs7Ozs7Ozs7TTs7O0k7Rzs7STs7O007cUI7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007OztJO0c7O0k7STtHOzs7SztNO007TTs7TSxtQjs7Ozs7Ozs7OztLO0k7STtHOztJO0k7Rzs7STtJLFc7STs7Ozs7O0s7O0s7Szs7O3dCO0k7Rzs7STtLO0s7Szs7Szs7TTtLO3NCO007O087Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O2U7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007Ozs7Ozs7Ozs7O007OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0ksTzs7d0Msc0I7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2E7ZTs7K0IseUI7O1k7OztZOzs7O2EsVTs7Ozt1Qjs7O1k7Ozs7Ozs7Ozs7OzttQjs7Ozs7O1k7Ozs7YSwrQjs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7Ozs7O1k7Ozs7O2EsVTs7OzJCO1k7Ozs7O1k7Ozs7O2EsVTs7OytCO1k7OztZLHVCLFU7Ozs7eUI7OztZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STtLO0s7Tzs7eUIsbUIsZTs7SztJO2M7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7OztJOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztLLE87OztJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7O1EsTTtPOztJOzs7USxNO087SSx1Qjs7O0k7SztPOzs7OztVLFc7VSxPO1M7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7RztJOzs7OztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7STs7Ozs7OztJO0ssTzs7Ozs2Qjs7STtLLE87OztJO0c7O0k7Ozs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7USxtQztROzs7OzthOzs7Ozs7Ozs7O2dCOztrQjs7b0MsaUM7Ozs7OztvQjs7Ozs7Ozs7YTs7WTs7Ozs7O1EsUztRO1U7Ozs7Ozs7O1E7VTs7O2E7YTt1Qjs7WTs7O08sTzs7Ozs7OztTOzs7OztVO1M7bUI7O1k7OzhCLDZDOztVO1c7OztXO2E7OztnQjs7aUIsTTs7O2dCO2U7O1c7Vzs7VyxPO1c7YTs7Ozs7Ozs7OztVLHFCO1U7VyxhO1csWTtXLGdCO1c7VTs7Ozs7Ozs7OztxQjs7Ozs7O087O1EsVztRLFU7USxjO1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7WTs7b0I7b0QsZTtXO1c7WSxXO1k7Yzs7Z0MsbUIsVTs7WTtjOzs7aUI7aUIsZTtnQjs7WSxPO1ksTztZLE87VztXO1k7Yzs7O2lDLHlDOzs7aUI7Z0I7WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7VztZO2M7Z0Q7WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7VzthOzs7Z0IsVztnQixXO2U7O1c7YTs7K0IsbUIsZTs7VzthOzs7O1csTTtVO1c7O2E7Ozs7OztTO1U7WTs4QztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7O08sTzs7O2lCOzs7O2lCO2dCOzs7O087OztRLEs7UTtVOzt3Qiw2Qjs7UTtVOzsyQjs7USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztnQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVO1E7VTs7O2E7YTtjOztlLGU7Yzs7YTs7O2MsYTs7O2M7ZTs7O2U7O2tCLE07Ozs7O29DOzs7a0M7O2E7Ozs7c0I7O1k7O1EsTztRLFU7OztRO1U7OzZCLGdEOzs7O087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVTs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtRO1U7OzthO2E7OztZOzs7Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7O1UsYTtVLGdCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7Ozs7UTs7OzBCO08sSSx3QztPOztPLG9CLFU7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1EsZTtRO1U7Ozs7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7OztXLFk7Vzs7O1ksVTtZLFc7Ozs7WTs7Z0I7Ozs7O1k7WTs7Ozs7Z0I7Ozs7WSxNO1k7VyxPOzs7Ozs7UTs7WTs7Ozs7UTtROzs7OzthLHdCO2E7Ozs7OztZOzs7Ozs7USxTO1E7VTs7Ozs7Ozs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7VTs7O2M7Yzs7Ozs7Ozs7d0I7OzthOzs7O087Ozs7ZTs7Ozs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLE87OzRCOztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJO0ksTzs7OzhCLDRDOzs7YzthOzs7Ozs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O087O2dCO2tEOzs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTtPO1M7OzJCLG9CLFc7Ozs7O087Ozs7OztjO2dEO1E7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtxQjs7c0M7OztZOztRLFM7UTs7Ozs7OztVOzs7Ozs7VyxPO2E7OztjOzs7Ozs7Ozs7Ozs7OztXOzs7TyxPOzs7aUI7aUI7Z0I7Ozs7TTs7OztPOzs7OztJOzs7YTs7O2dCOzs7aUIsTTtnQjt3Qjs7d0M7OztlOzs7O0k7OztpQjs7OzttQzs7Ozs7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsVTtXO1M7VTtXLE87VzthOzs7Z0I7Z0I7d0I7OztlOztVO1csTTtVOzs7VzthOzs2Qiw4Qzs7VzthOzs7Z0I7Z0IsTzs7OzBCLFU7MEIsTzt5Qjs7O2U7OztXO2E7OztnQixXO2U7O1c7YTs4QztXO2E7OytCLDRDOztXO2E7OztnQjtnQjtlOztXOzs7YztVOzs7OztXOzs7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7OztLO007OztPLE07O1M7OztZLG9CLE07WSxPO1c7Ozs7O0s7TTtROztzQiw2Qjs7TTtROzt3Qjs7TTtROztNOzs7O0k7SyxrQjtLO087OztVOzs7VztXO1c7O1c7O1ksTztZO2M7Ozs7Ozs7O1c7O1U7OztXOzs7VzthOzs7Ozs7OztVO1M7Ozs7O0ssTTtLLFU7O0s7OztNO1E7OztXOzs7WSxRO1k7Yzs7Ozs7Ozs7VztVOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOzs7STtLO007UTs7O1csb0I7Ozs7a0M7O3dFOzs7VyxNO1U7Ozs7Uzs7Ozs7O1U7VSxRO1M7O007UTtLO00sTyxpRDs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STs7O0k7SSxlO0c7O0k7YztjOztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7Ozs7O087USxPO1EsTztXO1EsVztRLE87Ozs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO0k7Ozs7USwwQyxnQjtJLE87Rzs7STs7Ozt5QjtJLGU7Rzs7SSxPOzs7Yzs7O2U7O2M7Ozs7aUM7O2E7OztHOzs7STs7Ozs7YTs7O2dCO2dCO2U7Ozs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjtTO1c7OztjOzs7O2U7OztpQjs7a0I7Ozs7Ozs7c0Msa0I7Ozs7aUI7Ozs7O2tCOzs7Ozs7O2lCOztjO2E7Ozs7OztTO1c7OztjO2M7O2E7OztRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7UztXOzs7Yzs7Ozs7ZTs7O2lCOzs7O2tCOztrQjs7Ozs7Ozt1Qjs7OzBCOzBCOzJCOzRCOzs7dUM7NEI7Ozs7OzJDOzsyQjs7OztrRDs7O3lCOzs7Ozs7Ozs7O2lCOztpQjs7OztrQjtpQjs7OztrQjs7bUIsVzttQjtxQjtrQzs7O21COzs4QjtvQjtxQixPO3FCLE07Ozs7Ozs7eUI7Ozs7Ozs7a0I7OzswQjs7a0I7OzswQjs7Ozs7aUI7O2tCOzs7cUI7a0M7aUI7Ozs7Z0M7Ozs7O2lCOztjO2E7Ozs7Ozs7Uzs7UztXOzttQyw2Qjs7O1MsTTtTLFE7Ozs7OzthOzs7Z0I7Z0I7Ozs7OzhCOzs7Ozs7Ozs7OztTLEksTSxnQzs7OztVO1c7OztnQjtrRDs7OztTO1UsTztVO1k7OztlO2U7ZTtjOzs7VTs7Ozs7Z0I7a0Q7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7UztXOzs7YyxXO2E7O1MsZ0I7OztTOzs7UTs7Ozs7Ozs7OztROzs7Ozs7Ozs7UyxLO1UsTTtTO1UsTTtVLE07OztVO1k7OztlO2U7Ozs7OztjOzs7VTtZOzs7ZTtlOzs7Ozs7Yzs7O1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLLHlDLG9CO0k7Ozs7Szs7O0k7OzthLEk7YTtxQjs7WTtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007O1M7OztZLFc7O1k7Ozs7YSxvQixLO2EsTzs7a0MsVyxnQzs7Ozs7Uzs7OztTLG9COzs7Ozs7Ozs7Ozs7OztnQixHO2lCOztnRDs7Ozs7Ozs7Ozs7OztnQixHO2lCOzs7Ozs7Ozs7YyxHO2U7Ozs7O1MsTTtROztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzsyQixtQjs7Ozs7Ozs7SztNLE87TSxPO007SztNOzs7O1MsTzs7O21CLFE7O2tCOzs7Ozs7OztTLE87OzttQjsyQjs7a0I7Ozs7UyxPOzs7bUI7MkI7O2tCOzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLOztLO0s7TSxPO00sTzs7SztNO1E7TSxPO00sTztvQjtLO0ssTzs7O2U7ZTtlLE87Yzs7O0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTtLO087OztVLFc7VSxPLHlCO1M7O0ssTztLLFU7STs7O087USxTO1E7TztRLE07O087TTs7OztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7O3NCOzs7Ozs7O0s7Ozs7WTs7Ozs7Ozs7OztNLEs7SztPOztzQixXLGlDOztNO087O3dCOztNOztPOzs7OztPOzs7O2E7Ozs7Ozs7Ozs7Ozs7OztLOzs7SztNOzs7O1M7OztLOztJO0ssUztLLFM7Ozs7OztJOzs7Ozs7VTswQyxlOzs7Ozs7Ozs7VzsyQyxlOztLLE07SztPOzs7VTtVO1M7OztLO0s7Ozs7d0I7O0k7STtLO087OztVLHFCLE87VSxPO1M7O0s7Tzs7O1U7VTtTOzs7SztJO0k7SztNO007Ozs7WTs7Ozs7OztLO007Ozs7TTttQjs7TTs7Ozs7O1M7OztLOztNOzs7OztVOzs7Ozs7Ozs7Ozs7STs7O0ssSTs7Ozs7Ozs7Ozs7OztJOzs7O0s7SztLOzs7Ozs7Ozs7YTs7O0k7OztJLE87Ozs7MkI7O0c7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNLFc7Szs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7SSxPOzs7YztlO2UsTTtjO2E7OztHOztJLDhCOzs7O08sTzs7Ozs7O2tCOzs7aUI7aUI7Ozs7cUI7Ozs7d0I7Ozs7aUI7Z0I7O087OztRLFE7UTtRO1E7Ozs7UTs7O1M7OztVLFU7VTtVO1U7Ozs7OztPLE87Ozs7O2lCOztrQjs7a0I7Ozs7Ozs7O3dCOzs7OztrQixPOztnQjs7Ozs7OztPLE87O087Ozs7USxNO08sTzs7OztnQyx1Qzs7Rzs7STtLLEs7SztPOzs7VTs7Ozs7OztVLEssa0M7VTtXLE87VyxPO1csZ0M7VyxTO1csTztVOztrQjs7Uzs7Ozs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLO2E7ZTs7O2tCO2tCLGE7a0I7bUI7OztrQjtpQjs7YSxPO1k7b0I7Ozt1QjttRTt1Qjs7d0I7Ozt1QjtzQjs7Ozs7Ozs7Ozs7O1k7OzthO1k7Ozs7O2dDOzs7TTs7O0ksTztHO0c7O0k7OztLOzs7O0k7RztHO0ksVztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO087OztVOzs7Ozs7ZSxZOzs7O2tCOztrQixNOzs7a0IsTTs7O2M7OztlO2U7MkI7Ozs7Ozs7Ozs7b0I7OztxQixPO3FCLFU7Ozs7O3FDOzs7d0IsSztxQzs7OztxQjs7b0I7b0IsTTs7OztvQixNOzs7Ozs7bUI7Ozs7b0IsUTs7Ozs7O21CLE07Ozs7O29COzs7cUI7O3lCO29COzs7O21COzs7b0IsUTs7Ozs7bUI7Ozs7b0IsUTs7Ozs7bUIscUI7bUIsVzs7OztjO1c7WTthOzthLFE7Ozs7d0I7YTs7Ozs7Ozs7d0I7Ozs7Ozs7Ozs7Ozs7VztZLFE7WTs7O1UsVztVO1M7O0s7Tzs7eUIsbUIsVTs7SyxLO0s7Tzs7eUIsb0IsVzs7SyxNO0s7Tzs7eUIscUIsWTs7SyxPO0s7Tzs7eUIsb0IsVzs7SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1M7Ozs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7O087O3lCLG1CLGE7O0k7O1k7OztlOzs7Ozs7Z0I7a0I7OztlO2M7O0c7O0k7STtLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRLE87Ozs7O2tCOzs7Ozs7a0I7bUI7O21COzs7b0IscUI7Ozs7Ozs7Ozs7Ozs7O21CLFk7Ozs7Ozs7OztxQjtzQixPOzs7OztrQzttQjs7c0I7OztvQixNO3VDO21COztvQjs7Ozs7Ozs7a0IsTzttQixNOztrQjttQjs7bUI7cUI7Ozt3Qjs7Ozs7O3lCLFU7eUI7eUI7eUI7d0I7dUI7Ozs7O2tCLE87Ozs7Ozs7O2lCOzs7UTs7OztTO1E7Ozs7UTs7O1E7OztTOzs7Ozs7UTttQzs7O0c7O0k7SyxvQjs7Szs7Ozs7Ozs7O0ksTzs7Ozs0Qjs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87Ozs7O1cseUMsZTs7O087OztRLE87USxJO1E7O1c7OztVO1EsUTtROzs7Vzs7O2M7YztlOzs7OztnQixPO2UsTzs7YzthOzs7UTtVOzs7YTthLFc7WTs7USxVO1E7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Syx5Qzs7O1E7O1M7Ozs7USxnQjs7UTs7O1M7VztTLE87UyxhO1M7Ozs7O1EsVzs7O1E7Ozs7OztROztTO1c7NEMsYztTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VTs7OztjOzs7K0I7O1U7WTs7Ozs7UztVOzs7O1M7VTs7Ozs7b0I7Ozs7Uzs7a0I7Ozs7Ozs7Ozs7UTs7UztXLHlDLGE7UyxlO1M7Ozs7O1M7Ozs7YyxTO2Msa0I7Yzt1QjthOzs7UTs7USxtQixPOztRO1MsUTtTLE07OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UTs7OztROztTOzs7Uzs7OzthOzs7Ozs7O1E7Z0I7OztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJOztLOzs7Ozs7TyxVO29COzs7O0s7STtJOzs7SyxnQix5QztLLE87STtJO0ssTzs7SztPOzs7VSxrQjtTOzs7SyxPO0ssYTtJO0k7STtHOzs7STs7STtJO0ssWTtLLFM7SztPOzs7VTtTOzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7UztXOzs2QixtQixhOztRLE87Ozs7UTs7UztTLE87USxPOzs7O0c7O0k7STttQjtLLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7Ozs7USxtQjs2QjtRLHdCO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO1M7Vzs7NkIsbUIsYTs7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VSxPO1UsTztTLE87O1EsSSx3QixPO1EsTzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRLFc7USxPOzs0QyxXOzs7Ozs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VzthOzhDLGM7VztXOztXOzs7VTtrQjs7O1U7OztXO1csTTtXLFE7Vzs7O1c7VTs7Ozs7bUI7Ozs7Ozs7Ozs7ZTs7O2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7Z0I7OzttQjttRCxlOztlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7Ozs7VTs7VzthOzZDLGE7Vzs7O1U7OztvQjtxQjs7c0I7OzswQjs7O29CLE87bUI7Ozs7OztXOztZOztZLFE7WTtZLFE7WSxPO1k7OztlOzs7ZTs7O2dCO2dCO2U7Ozs7Ozs7WTtXOzttQjs7VSxXOztVO1csUTtXLE07VyxROzs7Yzs7O2M7OztlO2M7Ozs7Ozs7VztXO1U7Ozs7a0I7OztVOztXOzs7VztXLFE7Vzs7O1U7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7WTtZO1k7MkI7WSxTOzs7ZTs7aUI7Ozs7O2tCO2tCOztpQzs7a0I7aUI7Ozs7eUI7Ozs7Ozs7Ozs7O2UsTTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxNOztZO2EsTzs7ZTtvRCxpQjs7Vzs7VTtXLFE7VztXLFE7Vzs7O2M7OztjOzs7ZTtlOzs4Qjs7Yzs7Ozs7Ozt1Qjs7O1c7VztVOzs7O2tCOzs7Ozs7O007TztRLFE7OztRO1E7Ozs7O087Ozs7O087USxPO1EsTztPLE87O0s7O00sTzs7OEI7O0s7O007TztRLFE7Ozs7OztXOzs7Ozs7O1MsTTs7O087Ozs7O1EsTTs7O0s7O00sTzs7b0M7OztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4QixPO3dCOztHOztJLEksVyw4Qzs7OzRCLE87OztHOztJO0k7Ozs7Ozs7Ozs7O0c7b0MscUM7O0k7STs7SSxPOzs7Yzs7aUI7OztxQjs7O3NCOzs7Ozs7Ozs7Ozs7O3lCOzswQixTOzBCLE07OzRCOzs7Ozt5Qjs7Ozt5Qjs7MEI7NEI7NkQsYzt5Qjs7eUI7MEIsTTs7Ozs7eUI7eUI7MEIsTTs7Ozs7Ozs7MkI7MkI7NEI7O2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7MEI7NEI7NEQsYTs7Ozs7K0IsUzs7K0I7d0M7Ozs7OEI7OzhCOzs7eUIsbUIsTzs7eUI7MEIsTTswQixNOzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7eUI7OzBCOzs7eUI7eUI7MEIsTzs7NEI7Ozt5Qjs7MEIsUTswQjswQixROzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7O2lDOztxQjtvQjs7ZSxNO2MsTzs7O3dCO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3VCOzs7OztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7Ozs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTs7TSxNO007UTtLLE87STtJOztPOztPOztPO2U7Ozs7STtLLE87STs7SztLLFU7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNO0s7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJO0s7SyxhLFc7STtHOzs7Ozs7Ozs7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7O0k7SztPO1M7OztZOzs7Ozs7WSxTO1k7YTtlO2EsSTtZO1c7O0ssUTs7O0ssTztJLE87OztjLGM7O2M7YTs7O0c7O0k7SztPOzs2Qix3Qjs7Ozs7OztJO0c7RywyQyxTOztJLDJCLE8sK0I7Rzs7STs7YSxjLE87Ozs7O3VCLFc7dUI7c0I7WTs7Rzs7STs7O2M7YTs7NEIsUzs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87OztJOzs7YyxXO2MsVzthOzs7YSxXO2EsVztZOzs7OztHO0ksbUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7YyxPLGM7YTs7NEIsTyxjLHFCOzs7O0c7d0IseUI7O0ksUSxxQyxTOztJOzs7YztjO2E7Rzs7SSxPOzs7YztjO2E7OztHOztJLHVEO0k7Rzs7SSxzQztnQjtJOztLLFE7SyxPO0ssTztLLFM7SztLO0ksVzs7O0k7O087Ozs7OztROzs7UTtPOztPOzs7UTs7O087O08sTzsyQzs7OztJO0s7Szs7Szs7TTs7UTs7O1c7VztVOzs7O0k7Rzs7STtLO087OztVO1U7Uzs7O0s7Tzs7Ozs7Vzs7O29COztxQzs7O1U7VSxPOzs7b0I7b0I7bUI7Ozs7STtHOztJLEksVTs7Szs7USxvQjs7Ozt1QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxVO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCOzs7YTs7O2M7Ozs7YTs7Ozs7Ozs7WTtVO1U7Ozs7Yyx3QztjOzthOzs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTtTOztpQyw2Qjs7Ozs7O1E7Ozs7OztTOzs7UTs7Z0MscUM7O1E7Ozs7O1M7UTs7Z0MscUM7O1E7OztTOzs7UTs7Z0MsNkI7Ozs7Ozs7Ozs7O3NCOztVOztnQyxnQzs7OztTOzs7O1U7VTtZOzs0Qjs7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjOzs7O1k7VTtZOzJDLHdCO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNOzs7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7WTs7O3NCLGU7Ozs7OztnQzs4Qzs7Ozs7OzBDOzs7Ozs7Ozs7MEMsTzt5QzsrQjtxQjs7Ozs7OztZOzs7YTs7O2dDLDZDOzs7Z0IsaUIsaUI7Z0I7Ozs7b0I7Z0IsTTs7O3lCOzs7ZTs7Ozs7WTs7O1E7UTs7UTs7OztTLFU7OztTLFU7OztTO1M7O1E7OztrQjs7Ozs7bUI7cUI7bUI7cUI7bUI7O2tCO2lCOztROzs7OztTLFU7OztTO1M7UTs7O2tCOzs7bUIsUTtrQjtpQjs7USwwQjtROztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UztROzs7a0I7a0I7aUI7O1EsOEI7UTs7OEIsc0I7OztROzsrQixzQjs7O1E7OytCLG9CO2dCLDRCOztJOztLO2M7OzhCOztJOztLOztROzBDO2UscUMsUzs7Syw0QixjO0k7OztLLFU7Szs7STs7Ozs7O0s7SztPO0s7SyxTO0ssUTtLOzs7Szs7SztPOzs7Ozs7OztLLFE7SztJO0c7O0ksTzs7MkI7O0c7dUIsNEIsd0I7Rzs7O00sdUI7OztPOztROztXLE87Ozs7OztVO1E7O1csVTtXLE87VTtRO1U7WSx3QyxZOztRLE07UTtVO1ksMkMsZTtRLFMsVztPO2U7OztNO08sTzs7Ozs7Ozs7OztNO007TyxVO08sTztNO007TztTO1csd0MsWTs7TyxNO08sVyxXO007Yzs7Szs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Z0MsTztJLEc7SyxNO0k7SyxPO0ssTztJLFMsTTtJO0c7O0k7OztPLEc7USxNO087O087Ozs7OztRO1U7OzJCOztPOzswQixpQzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOzs7Tzs7c0Isd0M7O087Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7Ozs7Tzs7ZTs7Z0M7Ozs7Tzs7OztRO1U7OzJCOztRO1U7OzthO2E7WTs7O1E7VTs7O2E7YTtZOztRO087O087Ozs7O1E7VTs7MkI7O1E7VTs7O2E7YTtZOztPOzs7Tzs7ZTs7Z0M7OztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7UTtVOzsyQjs7UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7O0ksTzs7O2M7YzthOzs7O0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7OztRO1MsTzs7O1E7Ozs7Ozs7O1E7OztXO1c7VTs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7USxPOztnQzs7OztRO1E7OztXO1c7VTs7USxPOztnQzs7OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztJOzs7SSxPOzt5QixnQyxrQjtHOztJLE87OzRCO0c7O0k7Ozs7O0c7O0k7Ozs7O0s7Ozs7Ozs7Ozs7OztXO2E7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7Szs7O1EsbUIsTztRLFMsTTtRO087O0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SztLO007UTs7MEIsa0IseUI7O007TTtRLDJDO00sZTtNLFU7TTtROzs7VyxPO1U7Ozs7TSxTO007USx5QyxrQjtNLFk7Szs7STtLO007Ozs7TTs7OztVOztLOzs7OztNOzs7ZTs7OztHOzhCO0c7STs7Ozs7Ozs7OztJO0ssUTtLLFk7SyxXO0s7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7Ozs7Ozs7OztXOzs7OzthOzs7OztZOzs7OztTLE87Ozs7eUIsa0I7Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7VTs7Ozs7SyxPO0k7MkIsNEI7O0s7OztLOzs7STs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7SyxPOzs7ZSxrQztlO2M7OztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1MsTzs7aUM7Ozs7Ozs7Ozs7Uzs7O1k7WTtXOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQiwyQjs7UyxPOzs7bUI7bUI7a0I7Ozs7UztTOzsyQixrQiwyQjs7aUI7OzZCOzs7OztTO1MsTzs7aUM7Ozs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7Ozs7UyxPOztpQzs7Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7O1U7WTs7NkI7O1M7Ozs7UztpQjs7a0M7OztTOzs7Ozs7VTtTOztTOzs7OztVO1M7O1M7OztVO1k7OztlOzs7Ozs7OztnQjtnQjtrQjs7ZTtjOztTOztTOzs7O1U7WTs7NkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1U7WTs7NkI7O1M7Ozs7O1M7Ozs7O1U7WTs7NkI7O1U7WTs7O2U7ZTtjOztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VTtZOzs2Qjs7UztVO1csUTs7O1c7YTs7O2dCO2dCLFc7ZTs7VzthOzs7Z0I7Z0IsTztlOzs7O1csTztXO2E7OztnQjtnQjtlOzs7O1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1U7WTs7NkI7O1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7OzthO2EsTzs7cUM7O1k7Uzs7VTtXO3lCOzs7Ozs7Uzs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1M7OzJCLG9CLDZCOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQix3Qjs7UyxPOztrQyxrQix3Qjs7OztTOztTOzsyQixrQixzQjs7aUI7OzZCOzs7OztTLE87O2lDOzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7OztTO1M7Ozs7Ozs7OztTLE87O2lDOzs7Ozs7Ozs7Ozs7O0k7SSxjO0k7Szs7TSxlLDZCOztLO0k7STtLOztNLGUsNkI7O0s7STs7Ozs7OztTLEksVSwyQzs7O2dDOzs7Ozs7Ozs7YTs7Ozs7YyxNO2E7WTtTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7WTs7O2UsVTtlO2M7O1M7OztTLGM7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1UsVztTOzs7OztTOzs7OztVLE07VTtZOzs7ZTtlO2M7O1M7OztTLGU7O1M7Ozs7OztVO1M7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOzs7O1UsbUI7VTs7O1M7VTtVOzs7OztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7eUM7O1M7Ozs7OztVLE07VTtTOzt3Qzs7O1MseUI7OztpQjs7O0k7SztLLFE7SztLLGE7SSxRO0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCO2E7SztJO0c7O0k7OztROztROztROztROztROztROztROztRO2dCOzs7STtHO0c7STs7Ozs7SSxVO0k7Rzs7SSxVO21CO0k7Ozs7Rzs7SSxvQjtJOzs7Tzs7O1EsUztnQjtRLE07TztPLE87TTs7SSxVO0k7SSxPO0c7Rzs7OztJLGtCO0k7STtLLGU7SyxTLDJCO0k7SyxNOztJO0ksSSw0Qjs7OztNO08sTTtPLE87TyxNOztNOzs7OztJO0s7Tzs7O1U7Ozs7O1c7VTtTOzs7OztJO0c7bUIsWTtpQyxZOztJO0k7aUIsTTs7Ozs7OztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksaUI7O0c7O0k7Szs7bUIsVyxxQzs7O0c7O0ksRztLLE87STs7UztLOztROztLLE87O0k7Rzs7SSxPOzs7YyxXO2M7ZTtnQixhO2dCO2tCO3FCOzs7Ozs7Ozs7OztjO3lCOzt1QzswQjs7O2UsWTs7Ozs7O2U7O2dCLE07Z0IsTTtnQixNO2UsTzs7YyxJLFU7Ozs7O2U7O2dCLE07Z0IsTTtlLE87O2M7Ozs7b0I7Ozs7O0c7O0k7OztPOzBCOztPLE87TTs7OztHOztJOztpQjs7OztNLEcsdUM7TTs7Ozs7TTs7O08sTztNOzttQztPOztNOzs7OztHO0c7STs7OztJOztJLGlCOztJLE07Rzs7STs7O0s7SztNO08sTTtPLEs7TTs7O3NCOzs7Ozs7Tzs7Ozs7Ozs7Ozs7SyxJLFE7Ozs7Ozs7ZTs7cUI7O0c7O0k7STtLLE07SyxNOztLO3NDLDRCOzs7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCOzZCLE87NEIsTztHOzs7OztJOzs7Ozs7STs7OzswQiw0Qzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTzs7O0ksVztJLE87O2M7RztHOzs7OztJOztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7OztJO0k7O0k7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7SSxJLHdEOzs7OztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7a0I7O0k7Rzs7SSxXO0k7OztPO087TTs7STtHOztJO0ksTztHOztJLEksK0IsTTtJLE87Rzs7SSxJLHFEOzs7O007TTtNOzs7OztJO0k7STtJO0k7SSwrQjs7OztNO007TTs7Ozs7STtJO0k7STtJO0ksK0I7Ozs7TTtNO007Ozs7O0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCOzs2QixvQyxTO087Tzs7Tzs7UTtVLCtCO087OztVLE8sK0I7Uzs7TzttQzs7Rzs7STs7O08sTztRO087UTtRO1E7Ozs7OztROzs7TTs7O0ssUztLLE87O2tDLE8sMkI7OztlLEksUSxlOzs7dUM7OztjO0k7Ozs7SyxPO0ksZTtJLE87O2lDLE8sK0I7OztjOztpQjs7Ozs7OztpQzt1QjtlLE07O2M7YTtHOztJO0k7STtJLE87Rzs7SSxPOzs7Yzs7O2lCOzs7a0I7O2lCOztpQixxQztpQjs7aUIscUM7aUI7O2lCLHVDO2lCOzs7aUI7O2E7O0c7O0ksVztJOzs7TztPO087TTs7O0k7Rzs7STtHO21DLHVCOztJO087SztJLFc7STs7O087TztPO007Ozs7Rzs7SSxXOzs7STtJOztHOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7STs7O0ssaUI7Szs7TTtNLFU7O2EsTTtLOztJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7STtJOzs7TztRLE07UTs7MEI7OztNOztJO0c7O0k7RzttRDtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Rzs7O00sdUI7O00sVztLOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksTzs7Ozs7Yzs7O0c7O0ksd0I7RztpQzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUztJLE87Ozs7ZTs7Yzs7O2M7ZTtlO2lCLDJCO2M7ZSxNO2MsVTs7YyxPO2E7Rzs7SSxTO0k7STtLLE07SztPOzs7VTtXO1csUztXLE07VyxNO1csTztzQjtVOztXO1csTTs7aUI7VyxNO1UsUztVO1c7WSxNOzs7Ozs7OztVO1UscUI7VTtVLE07Ozs7STtHOztJLGdDO2U7STs7O2tCLFc7SyxRLFc7STtJOzs7SSxnQztlO0k7OztrQixXO0ssUSxXO0k7STs7O0k7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFM7STtLO2U7Szs7O00sVTtNLEc7TyxNOzs7Ozs7Ozs7O1c7Ozs7STtHOztJLGMsK0I7Rzs7STtLLFM7SyxTOztJO0c7OztJO0s7Szs7O0kseUIsTywyQjtJO0s7O1E7VTs7VyxVOztXO1k7Ozs7Ozs7OztZLFU7WTs7VyxPO1U7OEI7Ozs7Szs7UTtVOztXO1c7VTtLOzs7UTs7OzswQixPLDhCOztJLE87Ozs7O2M7YTtHOztJOzs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOztHOzs7TSx1Qjs7TSxXO0s7OztJO0k7SSxPOztpQyxzQzs7O2MsTzt1Qjs7d0I7Ozs7Ozs7dUI7YTtHOztJO0k7OzsyQjs7O0c7O0k7STs7OzJCOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STs7Ozs7Ozs7SSxPO0c7O0k7STtJO0k7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJLE07Rzs7SSxZOztJO0c7O0ksWTs7STtHO0c7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87O0c7O0k7O3NCLE07Ozs7O0s7O1E7O3NCLE8sOEI7O0s7Ozs7O00sTzs7OEI7Ozs7OztHOztJLGdCOztLLE87OzZCOzs7OztHOztJOzs7aUI7O2lDOzs7Ozs7O0c7O0k7SyxTO0ssTztLLFE7a0MsTztJLFc7STs7cUI7Ozs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsTzs7aUM7Ozs7Ozs7OzBCOzs7O1U7O1U7O1U7O1U7O1M7OzBCOzs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2E7O3dCOzt3Qzs7OztZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O21COzttQzs7Ozs7Ozs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztROzs7TTtPO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOytCOztTLGM7dUI7UyxzQixPO1MsTzs7aUM7Ozs7OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOztVLE87O2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7OztTOzs7Ozs7Ozs7OztTOzs7O1UsYzs7VyxPOzttQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs4QixPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7OEI7Ozs7SSxlOzs7OztjOzsrQjs7OztHOztJOzs7O0k7O087O0ksRztLLEksUzs7TTs7TyxNO08sVztPLE87TSxXO00sTTs7SztNLE07Ozs7SztNO087O1U7Ozs7O2E7YTtZOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7UTs7O1c7O1U7Ozs7OztROzs7O1csYztXOztZLGE7WSxZO1c7OztJOzs7TztPO007O0k7SyxRO0s7OztPOzs7USxROzs7Ozs7Ozs7b0I7OztTO1UsTTtnQjs7Ozs7Tzs7Ozs7O1UsSSxjOzs7O1ksTTs7O3FCOzs7O1U7Vzs7Ozs7Vzs7Ozs7OztVO1csTTs7Ozs7OztPO1EsTTs7TztRLE07USxNOzs7Ozs7OztPOzs7Ozs7OztNOzs7UztTO1E7Ozs7Ozs7O0ksVzs7SSxXOzs7Rzs7STtJO0ssTTtLLE07SSxPO0c7RyxJOztJO0s7SyxNO0ssTTtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7UTs7MEIsNEI7O1k7TTs7O0s7Tzs7O1UsbUI7O1UsTztTOztNOzt1QztJLFU7STs7Ozs7Ozs7OztRO1E7UTtROztTLFU7OztPO087O2dDOzs7VTtVO1U7OztXOztZLFU7Ozs7Ozs7OztVOzs7Ozs7O21CO1csTTs7Ozs7VTs7WTtpQjs7YTs7Ozs7Vzs7YTtrQjtZOzs7aUI7Ozs7WSxjOzs7O2E7O1k7O2U7WSxNOzs7Ozs7Ozs7VTs7VyxNOzs7O1U7O1csTTs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7OztJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O08sNEMsUztJOzs7O0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7RztHOztJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7STs7OzJCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0ksTTs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJO0ksTzs7O2M7O2U7OzswQyxpQzs7NEM7ZTtnQjsyQjs7ZTsyQyxXLGM7ZTs7O2tCLHVCLGtCLGlCOzs7a0I7OzJCOzJCLHVCOzBCOzs7a0IsMkIsWSxpQjs7O2tCLDJCLFksaUI7OztrQjtzQyxvQiwwQjs7O2tCO3NDLFksMEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7Ozs4QjtrQjs7O21CO21CO3FCOztzQzs7a0I7OztrQjs7c0Msb0IsMEI7OztrQjs7MkI7b0U7MkI7MEI7OztrQjs7MkI7MkI7MkIsTzswQjs2Qzs7YztjO2E7O0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDZCO0c7Ryw0QjtHO0csNEI7RztHLDJCO0c7RyxpQztHO0csa0M7RztHLGdDO0c7Ryx3QjtHO0csd0I7RztHLHdCO0c7RyxxQjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDhCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO087Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLG9DO0c7RyxpQjtrQixrQzs7SSxlO0ksTztHO3FCLGdEO3dCLGtDOzs0Qix1Qzs0QixpQzs7Ryw4Qjt3QixtQzt3QixrQzs7RyxpQjtHO0csb0I7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7O0k7OztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csc0I7RztHLHdCOzs7Ozs7O0k7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7Ozs7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOzs7Ozs7RywwQjs7SSxPO0c7MEIsbUQ7cUIsTyxpRDt1QixTO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOzs7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7OztLO087Ozs7O0ssTTtLLFk7SyxNO0ssTTs7SyxZO0s7SyxNO0ssUztJO0ksTzs7O0k7STtJOztLLE07SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJLFU7STtLLFk7Ozs7Ozs7STtJO0k7Rzs7SSxHLG1DO0ksZTtJO0k7Rzs7STtLLFU7Szs7O2M7YyxPO2E7STs7O0s7O00sTSxXO0ssZTtLO00sTTtXOzs7Ozs7SztNLE07b0I7Ozs7SztNLDBCO007OztJLE87Ozs7NkIsTyx3QjtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7dUIsZ0M7a0MsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87TTtROzt3QixPLHFDOztNLFE7TSxPO007UTs7d0IsTyxtQzs7O0s7a0IsTTtNOzs7Ozs7O1UsVztVLHFCO1M7TyxVOzs7O0s7O007OztXOzs7OzRCOzs7STtLLFc7SyxXO0ssVztLO087OztVLE8scUI7Uzs7SztPOzs7VSxPLHFCO1M7O0k7Ozs7TTtPOzt1QjtLOzs7OztNLE87SyxXOzs7Ozs7Ozs7OztJOztZOzs7STtLO007OztXO3lDLHlCOzs7O0ksSztLLE87O0k7O0ssVTtNLEk7Ozs7VTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7Ozs7O00sMEI7TSxJOzs7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0s7TSxhO007UTtVOzs0QixPLGtDOztXO1k7Yzs7WSxPO1k7Yzs7O2lCO2tCLFM7a0IsTztpQjtpQixVO2lCLE87Z0I7OztZLEk7VztVO0s7Ozs7Szs7TTtNOzs7SztNO1E7O1M7O1MsYTtTO1M7VTs7VztZLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCO2lCLGM7O2lCOzs7Ozs7Ozs7OztjOzs7O2dCOztpQixPOzs7Ozs7Ozs7Ozs7Ozs7O1E7O3dEO0s7O0c7Ozs7Ozs7O0s7SztLOzs7UTs7UyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLDRCOztPOztLLE87OztLO00sYTs7O1E7O2dDOzs7O00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXO0k7TTs7O1MsTyxxQjtROzs7Ozs7Szs7TTs7O0k7O0s7Tzs7OEI7Ozs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0ssVztLLE87STs7Ozs7O0k7O0c7O0k7OztJOztHOztJOztJOztLLE87SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOztJLE87OztjOzs7ZSxJO2MsRztlLFc7ZSxPOzs7Ozs2Qzs7O2MsVztjLE87YTs7Rzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0ssYztLLEc7TTtjO007O0ssUzs7TTtjO007Ozs7O1MsVztTLE87UTs2Qjs7O0s7TSxPO00sTzs7TTs7Ozs7Szs7Ozs7TTs7O1M7Ozs7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STs7SyxxQztJOztJO0s7Szs7Ozt3QixjO3dCLG1CO3dCLG1COzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDOzs7OzttQzs7Ozs7OztxQzs7Ozs7c0M7Ozs7O3VDOzs7Ozs7O3VCOzs7Ozs7Ozt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEM7Ozs7OzRDLDZCOzs7Ozs2QyxrQzs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt3QixpQjtLOzs7O3NCOztLLGU7SztLOztNOztPLEk7TztPO1M7OztZOzs7OzthLFU7YTthO1k7WTtZO1c7O007OztTOzs7Ozs7VTtTO1M7OztZO2EsRztjO2EsVzthOztZLEc7YTtZLFc7WTtXOzs7O1UsVTtVLFE7Ozs7O1M7UTs7TTs7Ozs7OztPOzs7VTtXLFE7OztXOztVOzs7YSxVO2E7WTs7Ozs7O29CO29COztTOzs7O087YztPLFc7TztPOztvQyxzQzs7Tzs7VTs7O2E7YSxPO1k7O087OztVO1U7VTs7O2E7OztjO2EsTztZOztVO1UsTztTOztPOztNOzs7TSxVO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxTO0ssTTtJO0k7SyxNO0s7TztJLE87YTs7YyxPOzthO0c7O0k7SyxNO0ssTTtLO08sVztJLE87YTtHOztJLE87YTs7YztlLE0sVztlO2lCO21COztlOztlOzs7OztrQjttQixNO21CLE07a0IsTzsyQjs7OztpQjtjO2M7YztjO2M7YTtHOztJO0ssUztLLE07SyxLO0ksTztHOztJLFU7SSxPO2E7O2M7YyxHLDZCO2MsSTs7YTtHOztJO0ssYTtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVztJLE87YTs7Ozs7Z0I7Z0IsTztlOztHOztJLFU7SSxPO2E7OztlOzs7OztlLE87Ozt5QjswQixNOzBCLE07eUIsTzt3Qjs7YztjLE87Ozs7O3dCO3dCLEs7eUI7eUIsSzswQjs7d0I7d0IsTzt1QjthO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dtR3JvQk07Ozs7SUFBQTtJQThITTtJQU1abzZIO0lBRUFDO0lBcENPLGtCQWtDUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFaE5EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFiOztHQUF3QjtZQUM1RHlDO0lBQVUsT0FBQTtHQUEyQjtHQUp3QjtJQUFBLGFBRzdERCxTQUNBQzs7O09BalFGNUU7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCOztROzs7USxPOztRLHNDO1EsUTs7OztROzs7O1E7OztnQjs7O0c7O0k7STs7Ozs7Ozs7Ozs7NEI7OztRLHFDOzs7UTs7O1Esa0IsTzs7UTs7USxzQztROzs7Ozs7Ozs7Ozs7Rzt5Qjs7STtJOzs7Ozs7UyxtQztTOztTLG1DO1M7O1Msa0IsTzs7Uzs7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzs7O1Esa0IsUTt3Qjs7OztrRDt1QztRO1MsUTtTO1M7UztTOzs7Ozs7Ozs7dUI7Ozs7O1E7OztTO1M7UTsyQzs7O1E7dUI7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Uzs7Ozs7USxrQztRO1EsSSw2QjtROztRO1E7O1E7O1M7Uzt1QjtRO3VCO1E7O1E7O1E7O1M7UztRO3lCO1E7eUI7UTs7UTs7USxvQjtROztROzs7UTtRO1E7dUI7Ozs7UTt1Qjs7O0k7O0ssa0I7SztLO0k7STtJO0ksSSxtQjtJLEc7OztLLFE7SyxpQixPLHdCO2lDOztJLG1CO0k7OztPO087TTs7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7Ozs7VSxJLG1COzs7O2MsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O087Ozs7TTtNOzs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O00sb0QsVzs7SSxVO0k7O0c7O0ksVTtJOztHOztJLFU7STs2QixNO0k7Rzs7SSxVO0k7NkIsTTtJO0c7O0k7SztPOzs7SztLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0k7O087SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksa0I7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3JFRWdEOzs7Ozs7OztZQVBGQyxNQUFPQyxJQUFRQyxJQUFLLE9BQWJELE9BQVFDLFdBQXFCOztJQUNwQ0M7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUMsWUFBd0JDO0lBRTFCLElBRldDLDJCQUVQQyxVQUZPRCxnQkFDUFYsU0FBQUE7SUFFSixPQUFBLHVCQURJVyxZQUZzQkY7O09BTXhCRztZQUNBQyxVQUFXSCxRQUFPRCxNQUFNSztJQUFpQixVQVB6Q04sT0FPV0UsUUFBT0Q7b0NBQU1LLFFBRHhCRjtHQUNnRjtZQUVoRkcsUUFBUUQ7SUFDVixJQUFJLGNBQUssV0FEQ0EsUUFDTjs7OzRCQUNhOzs7R0FBSTtZQUduQkUsTUFBTUMsR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBZ0M7WUFDbkRDLGFBQWFILEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FOaENKOzZCQU1tRCxPQUFuQix1QkFBbkJFLEdBQUdDLEtBQUtiLEtBQUtjLEtBQTBEO0dBQUM7WUFDckZFLGlCQUFpQkosR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBdUM7WUFDckVH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O09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkVBUztPQTdFQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BRUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdEVBVDtPQXNFQVM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FHQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThGQVU7T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQTBEQU07T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0dBVztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVVBQztPQXBCQUY7T0FVQUM7T0FvQkFFO09BOUJBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQXdDQUk7T0FXQUM7T0FuREFMO09BQUFBO09BQUFBO09BQUFBO09BNkRBTTtPQVdBQztPQXhFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FtRkFRO09BbkZBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTRGQVM7T0E1RkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUdBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0JBRTtPQXBCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQTJCQUc7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXJOQXhCO09BcU5Bd0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FsQkFGO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FBQUE7T0ErREFPO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdFQVE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F4RUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUZBUztPQWpGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EwRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXpNQXZCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb09BMEI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwT0ExQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZPQTJCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BN09BM0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUxBb0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BU0FDO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUE0Mk5BaUI7O09BcnlOQVQ7T0FFQUM7T0FFQUM7T0FHQUM7T0FBQUE7T0FBQUE7T0FPQUM7T0FPQUM7T0FPQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUFzeU5BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQW55TkFGLGFBb3dOQUMsaUJBK0JBQzs7OztFOzs7Ozs7Ozs7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RW9CVSxPQUZWaEI7S0FDdkI7VUFDOENPO01BQy9DO09BQU07UUFEeUNDO1VBQ3pDOytCQXBYSkgsa0JBbVg2Q0UsaUJBRnZCUDtlQUV1QlE7T0ErSXhCLFdBakpDUixXQUFBQTtPQUV1Qk8sa0JBQUFDOzthQUFBQTs7UyxvQkFGakNGLEtBQVVOLFM7O1MscUJBQUFBO1MsY0FBQUE7UyxvQkFBVk0sS0FBVU47OztTLHVCQUFBQTtTLGNBQUFBO1Msb0JBQVZNLEtBQVVOOzs7U0FrQ3hCLFFBQUEsOEJBbEN3QkEsUUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FnRHhCO1VBQUEsS0FBQSw4QkFoRHdCQSxRQUFBQTtVQXFEeEIsS0FBQSw4QkFyRHdCQSxRQUFBQTtVQTBEeEIsS0FBQSw4QkExRHdCQSxRQUFBQTs7Ozs7O1U7VyxRLDhCQUFBQTs7OztXO2E7Ozs7Ozs7O1U7O1MsVTtTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBa0Z4QjtVQUFBLE9BQUEsOEJBbEZ3QkEsUUFBQUE7VUF1RnhCLE9BQUEsOEJBdkZ3QkEsUUFBQUE7VTs7OztVOzs7OztVLE07UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQXNHeEIsVUFBQSw4QkF0R3dCQSxRQUFBQTtTLG9CQUFWTTtTLG9CQUFBQTtTLG9CQUFBQSxLQUFVTjs7O1MsY0FBQUE7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OzttQkFBQUEsbUJBQUFBO1Msb0JBQVZNLEtBQVVOO1Msb0JBQVZNLEtBQVVOOzs7Uzs7WTtxQ0FFVWdCLFVBQUFBLFdBQUFBO1MsTzs7O0lBRGM7O0s7O007a0I7OztrQjtLLHFCO0k7STs7Ozs7OzttQyxTO3lCLFM7NkIsYzs7SSxXO0c7a0QsTztHOzZDLE87Rzs7Ozs7Ozs7SSxVO0ksVztHOztJLHFCO0c7OEIsTyx3Qzs7SSxPO0c7O0ksVTtJLE87Rzs7STs7RzsrQixzQjs7STs7O0ssbUI7SSxlOzs7O0ksZTs7Z0QseUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7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QUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7NkI7NkI7Ozt3Qjs7NkI7NkI7NkI7NkI7NkI7NkI7O3dCOzs7Ozs2Qjs2Qjs2Qjs7NkI7NkI7NkI7U0F4SU52Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQU1BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVlBRTtJQzlMSTBGO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFB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OzhCOzhCOzs7d0I7d0I7Ozs7Ozs4Qjs4Qjs4Qjs7OEI7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7OytCOytCOzs7eUI7OytCOytCOytCOytCOytCOytCOzt5Qjs7Ozs7K0I7K0I7K0I7OytCOytCOytCO1NBREFkO1NBQ0FjO0lBR0pYO0lBQ0FZO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lDcGFJQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBV05DO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lEOFlNQztJQUNBQzs7OztTQzFhQTdFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOzs7Ozs7O1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQXdCTjBDO1NBeEJNekM7U0FBQUM7Ozs7U0FXTnFDOzs7U0FlQUs7U0FEQUQ7O1NBekJNeEM7U0EyQk4wQzs7OztTQU5BTDs7O1NBckJNcEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FzQk5pQztTQXRCTWhDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NEeWFBUTtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUtFO1FBRUFFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0FFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0dFO1FBQVJDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFyRTtRQUFBZDtRQUFBVTtRQUFBVDtRQUFRdUY7OztTQTdCSHZJO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBQ0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUtLRTtVQUFSQztVQUFBQztVQUFBRztVQUFBRDtVQUFBRDtVQUFBRztVQUFBQztVQUFBQztVQXVCRk87VUFBQUM7VUFBQVM7VUFyQk01RDs7U0FVRGtFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0xDO1NBQUFDO1NBQUFFO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUtFO1NBRUFFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRCVnArRDtJQUNBbXFLO0lBQ0FsckQ7SUFDQWhzQztHQU9LO0dBR2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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R0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFBQUc7Z0JBQUFBO2dCQUFBQTs7SUFEQWlxQzs7dUJBQUEsU0FBcUI7O1dBQXJCcEM7T0FBQUQ7Z0JBQUE1bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFIO2dCQUFBRztnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQWtxQzs7dUJBQUEsU0FBaUI7O1dBQWpCbkM7T0FBQUQ7Z0JBQUE5bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUg7Z0JBQUFHO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQW1xQzs7dUJBQUEsU0FBaUI7O1dBQWpCbEM7T0FBQUQ7Z0JBQUFob0MsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFB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O1NBT2dCLE9BQUEsV0FBaEJzQyxLQUFXRDs7Ozs7bUJBUFR0QyxtQ0FBQUE7WUFLUzRDLE1BTFQ1QyxRQUtGNkMsTUFMQTVDO1FBS2dCLE9BQUEsV0FBaEI0QyxLQUFXRDs7O0tBOEJkOztHQUFLO1lBRVozQixhQUFjL0QsS0FBSU8sS0FBSTFFLEdBQUksT0E3SDFCdUcsR0E2SGNwQyxLQUFJTyxLQUFJMUUsR0FBd0I7WUFDOUNtSSxpQkFBa0JoRSxLQUFJbkUsR0FBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkUsR0FBMkI7WUFDakRvSSxrQkFBbUJqRSxLQUFJSyxJQUFHeEU7SUF4SGxCLElBQU4wRyxNQUFNLCtCQXdIZWxDO0lBdkh6QixPQUFBOzthQURJa0M7O2tDLE9BUEZILEdBK0htQnBDO2FBQU9uRTtHQUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sUTs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxROztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVLHVCOzs7O1E7UztTOzs7OztVLHVCOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sSSxjO087UTtRO2lCOzs7UztTO1M7a0I7Ozs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7aUI7UyxNOztpQixNO1M7aUI7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztpQjtTLE07O2lCLE07Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO1EsaUI7UTtRO1E7aUI7O1M7UztTO1MsbUI7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztROztROztROztRO1M7UztTO1M7UztTO1M7UztVO1U7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7O1E7Uzs7WTs7Uzs7Ozs7VztXO1c7O1c7WTs7ZTs7OztnQixPOztnQjs7Z0I7O1k7Ozs7O1csTzs7Vzs7Vzs7OztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7Ozs7STtJO0ssTTtJOztLOztNOztJOzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7OzZDLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7OztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs0QyxPOztLLG1COztLO007TztRLE87UTtROzs7O087Ozs7O2tCOztPO0k7STs7O0ksUztJLG9CLE8sMkI7STtJO0c7cUJBRHZDbUU7SSxJQUFJbkU7SUFBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkU7Rzs7SSxPQXRXdEJvRTtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7Ozs7OztHOztJO0k7YSxPOzs7TSxlLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7T0FtUElxQztPQTBFSk07T0FHSUM7T0F4b0JB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LEk7STtJO0k7O0s7SztLO0s7O0k7STtJO0k7STtLLEk7SztLO0s7SztLO0s7SztLO0s7Szs7Szs7Ozs7O087O1EsTTtjO2M7YztPO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7UTs7Uzs7Uzs7UztROzs7TztROzs7Ozs7OztPOzs7Ozs7Ozs7TTs7Ozs7SSxROztLO0s7SztLO0s7STtJO0k7STtJO0k7SSxPOzs7STtLLE0sbUI7SyxNO0ssSTtrQzsrQjtJLE87RztzQiwrQjtzQixpQzs7STtLLEk7ZTtnQjtJO0k7SSxPO0c7O0ksdUIsTyxvQztHO0csd0I7O0k7SyxLO0ssSztLLEs7SyxLO0ssSztLLEk7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO0ksdUIsb0M7Rzs7SSw4Qjs7O0s7OztJO0c7MEIsYSxvQzs7Ozt3QixTOztJLDRCLE07NkI7Z0M7SSxXOzs7STtLLFE7SyxxQjtLO0s7STtJLFE7STtJO0k7STtJLE87RztxQyxzQjs7STtnQjs7STtHOytCLFM7K0IsUzs7SSw0QixNO0k7OztjOztlOztnQjttQjtLO007TyxJO087TztPOztVLFcsTTtzQjtxQixNO3NCO3FCLE07c0IsTTtVO1M7Tzs7VSxlO3NCO1M7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztPO087Ozs7Ozs7USxjO1E7O087Tzs7Ozs7Ozs0Qjs7O0k7OztJLDhCO0ksdUIsNEM7STtLLEk7SztLOztLOzs7STs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7b0IsTztLLFU7Szs7Ozs7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NsVlU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUErdUZ1Qks7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBQUFDO0lBQUFDO0lBQUFDOzs7OztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7O0lBQUFDOzs7SUFBQUM7Ozs7Ozs7SUF2VlhDO0lBQUFDO0lBQUFDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lBbjVFcEJDOzs7Ozs7Ozs7Ozs7OztJQUxROztRQUdSMUw7SUFEb0MsV0FDcENBLE9BRUEwTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0dDdElJO0dBQUE7OztFIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIHN0cmZ0aW1lXG4vLyBnaXRodWIuY29tL3NhbXNvbmpzL3N0cmZ0aW1lXG4vLyBAX3Nqc1xuLy9cbi8vIENvcHlyaWdodCAyMDEwIC0gMjAxNSBTYW1pIFNhbWh1cmkgPHNhbWlAc2FtaHVyaS5uZXQ+XG4vL1xuLy8gTUlUIExpY2Vuc2Vcbi8vIGh0dHA6Ly9zanMubWl0LWxpY2Vuc2Uub3JnXG4vL1xuXG47KGZ1bmN0aW9uKCkge1xuXG4gICAgdmFyIERlZmF1bHRMb2NhbGUgPSB7XG4gICAgICAgICAgICBkYXlzOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J10sXG4gICAgICAgICAgICBzaG9ydERheXM6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gICAgICAgICAgICBtb250aHM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuICAgICAgICAgICAgc2hvcnRNb250aHM6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICAgICAgICAgIEFNOiAnQU0nLFxuICAgICAgICAgICAgUE06ICdQTScsXG4gICAgICAgICAgICBhbTogJ2FtJyxcbiAgICAgICAgICAgIHBtOiAncG0nLFxuICAgICAgICAgICAgZm9ybWF0czoge1xuICAgICAgICAgICAgICAgIEQ6ICclbS8lZC8leScsXG4gICAgICAgICAgICAgICAgRjogJyVZLSVtLSVkJyxcbiAgICAgICAgICAgICAgICBSOiAnJUg6JU0nLFxuICAgICAgICAgICAgICAgIFQ6ICclSDolTTolUycsXG4gICAgICAgICAgICAgICAgWDogJyVUJyxcbiAgICAgICAgICAgICAgICBjOiAnJWEgJWIgJWQgJVggJVknLFxuICAgICAgICAgICAgICAgIHI6ICclSTolTTolUyAlcCcsXG4gICAgICAgICAgICAgICAgdjogJyVlLSViLSVZJyxcbiAgICAgICAgICAgICAgICB4OiAnJUQnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRTdHJmdGltZSA9IG5ldyBTdHJmdGltZShEZWZhdWx0TG9jYWxlLCAwLCBmYWxzZSksXG4gICAgICAgIGlzQ29tbW9uSlMgPSB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICAgbmFtZXNwYWNlO1xuXG4gICAgLy8gQ29tbW9uSlMgLyBOb2RlIG1vZHVsZVxuICAgIGlmIChpc0NvbW1vbkpTKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IG1vZHVsZS5leHBvcnRzID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgICAgICBuYW1lc3BhY2Uuc3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWU7XG4gICAgICAgIGlmKGpvb19nbG9iYWxfb2JqZWN0KSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG4gICAgLy8gQnJvd3NlcnMgYW5kIG90aGVyIGVudmlyb25tZW50c1xuICAgIGVsc2Uge1xuICAgICAgICAvLyBHZXQgdGhlIGdsb2JhbCBvYmplY3QuIFdvcmtzIGluIEVTMywgRVM1LCBhbmQgRVM1IHN0cmljdCBtb2RlLlxuICAgICAgICBuYW1lc3BhY2UgPSBqb29fZ2xvYmFsX29iamVjdCB8fCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIHx8ICgxLGV2YWwpKCd0aGlzJyk7IH0oKSk7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG5cbiAgICAvLyBEZXByZWNhdGVkIEFQSSwgdG8gYmUgcmVtb3ZlZCBpbiB2MS4wXG4gICAgdmFyIF9yZXF1aXJlID0gaXNDb21tb25KUyA/IFwicmVxdWlyZSgnc3RyZnRpbWUnKVwiIDogXCJzdHJmdGltZVwiO1xuICAgIHZhciBfZGVwcmVjYXRpb25XYXJuaW5ncyA9IHt9O1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0aW9uV2FybmluZyhuYW1lLCBpbnN0ZWFkKSB7XG4gICAgICAgIGlmICghX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0pIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUud2FybiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIFwiICsgbmFtZSArIFwiIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEuMC4gSW5zdGVhZCwgdXNlIGBcIiArIGluc3RlYWQgKyBcImAuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmFtZXNwYWNlLnN0cmZ0aW1lVFogPSBkZXByZWNhdGVkU3RyZnRpbWVUWjtcbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVVVEMgPSBkZXByZWNhdGVkU3RyZnRpbWVVVEM7XG4gICAgbmFtZXNwYWNlLmxvY2FsaXplZFN0cmZ0aW1lID0gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkO1xuXG4gICAgLy8gQWRhcHQgdGhlIG9sZCBBUEkgd2hpbGUgcHJlc2VydmluZyB0aGUgbmV3IEFQSS5cbiAgICBmdW5jdGlvbiBhZGFwdEZvcndhcmRzKGZuKSB7XG4gICAgICAgIGZuLmxvY2FsaXplID0gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICAgICAgZm4udGltZXpvbmUgPSBkZWZhdWx0U3RyZnRpbWUudGltZXpvbmUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi51dGMgPSBkZWZhdWx0U3RyZnRpbWUudXRjLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGFkYXB0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gYWRhcHRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIGQgYW5kIGxvY2FsZSBhcmUgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgbG9jYWxlKVxuICAgICAgICBpZiAoZCAmJiBkLmRheXMpIHtcbiAgICAgICAgICAgIGxvY2FsZSA9IGQ7XG4gICAgICAgICAgICBkID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgYWRhcHRGb3J3YXJkcyhkZXByZWNhdGVkU3RyZnRpbWUpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZShmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdLCBbbG9jYWxlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdKWBcIiwgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVRaKGZtdCwgZCwgbG9jYWxlLCB0aW1lem9uZSkge1xuICAgICAgICAvLyBsb2NhbGUgaXMgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgZGF0ZSwgdGltZXpvbmUpXG4gICAgICAgIGlmICgodHlwZW9mIGxvY2FsZSA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgbG9jYWxlID09ICdzdHJpbmcnKSAmJiB0aW1lem9uZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aW1lem9uZSA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudGltZXpvbmUodHopOyBzKGZvcm1hdCwgW2RhdGVdKWAgb3IgYHZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIHR6KWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KShmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RyZnRpbWUgPSAobG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWUpLnRpbWV6b25lKHRpbWV6b25lKTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgdmFyIHV0Y1N0cmZ0aW1lID0gZGVmYXVsdFN0cmZ0aW1lLnV0YygpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVVUQyhmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVVRDKGZvcm1hdCwgZGF0ZSwgbG9jYWxlKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBbZGF0ZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyB1dGNTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogdXRjU3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZUxvY2FsaXplZChsb2NhbGUpIHtcbiAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZWRTdHJmdGltZShsb2NhbGUpYFwiLCBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSlcIik7XG4gICAgICAgIHJldHVybiBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKTtcbiAgICB9XG4gICAgLy8gRW5kIG9mIGRlcHJlY2F0ZWQgQVBJXG5cbiAgICAvLyBQb2x5ZmlsbCBEYXRlLm5vdyBmb3Igb2xkIGJyb3dzZXJzLlxuICAgIGlmICh0eXBlb2YgRGF0ZS5ub3cgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgRGF0ZS5ub3cgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gK25ldyBEYXRlKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gU3RyZnRpbWUobG9jYWxlLCBjdXN0b21UaW1lem9uZU9mZnNldCwgdXNlVXRjVGltZXpvbmUpIHtcbiAgICAgICAgdmFyIF9sb2NhbGUgPSBsb2NhbGUgfHwgRGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIF9jdXN0b21UaW1lem9uZU9mZnNldCA9IGN1c3RvbVRpbWV6b25lT2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBfdXNlVXRjQmFzZWREYXRlID0gdXNlVXRjVGltZXpvbmUgfHwgZmFsc2UsXG5cbiAgICAgICAgICAgIC8vIHdlIHN0b3JlIHVuaXggdGltZXN0YW1wIHZhbHVlIGhlcmUgdG8gbm90IGNyZWF0ZSBuZXcgRGF0ZSgpIGVhY2ggaXRlcmF0aW9uIChlYWNoIG1pbGxpc2Vjb25kKVxuICAgICAgICAgICAgLy8gRGF0ZS5ub3coKSBpcyAyIHRpbWVzIGZhc3RlciB0aGFuIG5ldyBEYXRlKClcbiAgICAgICAgICAgIC8vIHdoaWxlIG1pbGxpc2Vjb25kIHByZWNpc2UgaXMgZW5vdWdoIGhlcmVcbiAgICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgdmVyeSBoZWxwZnVsIHdoZW4gc3RyZnRpbWUgdHJpZ2dlcmVkIGEgbG90IG9mIHRpbWVzIG9uZSBieSBvbmVcbiAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gMCxcbiAgICAgICAgICAgIF9jYWNoZWREYXRlO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9zdHJmdGltZShmb3JtYXQsIGRhdGUpIHtcbiAgICAgICAgICAgIHZhciB0aW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWVzdGFtcCA+IF9jYWNoZWREYXRlVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gY3VycmVudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGUgPSBuZXcgRGF0ZShfY2FjaGVkRGF0ZVRpbWVzdGFtcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gX2NhY2hlZERhdGVUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvdyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiBkYXRlIGluc3RhbnRpYXRpb24gZm9yIHV0YyBoZXJlP1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgdGllZCB0byBnZXRUaW1lem9uZU9mZnNldCBvZiB0aGUgY3VycmVudCBkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoX2NhY2hlZERhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRlID0gX2NhY2hlZERhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKGRhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIF9sb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGwsXG4gICAgICAgICAgICAgICAgaXNJblNjb3BlID0gZmFsc2UsXG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gZm9ybWF0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBleHRlbmRlZFRaID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50Q2hhckNvZGUgPSBmb3JtYXQuY2hhckNvZGVBdChpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc0luU2NvcGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJy0nXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnXydcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA5NSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzonXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNTgpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kZWRUWikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIGRldGVjdGVkIHVzZSBvZiB1bnN1cHBvcnRlZCAlOjogb3IgJTo6OiBtb2RpZmllcnMgdG8gc3RyZnRpbWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjdXJyZW50Q2hhckNvZGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhhbXBsZXMgZm9yIG5ldyBEYXRlKDApIGluIEdNVFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1cnNkYXknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5kYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFudWFyeSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLm1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKE1hdGguZmxvb3IoZGF0ZS5nZXRGdWxsWWVhcigpIC8gMTAwKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMS8wMS83MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MC0wMS0wMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0SG91cnMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoTWF0aC5mbG9vcih0aW1lc3RhbXAgJSAxMDAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNaW51dGVzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnYW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdQJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0SG91cnMoKSA8IDEyID8gbG9jYWxlLmFtIDogbG9jYWxlLnBtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdSJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldFNlY29uZHMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuVCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdVJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ3N1bmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMih3ZWVrTnVtYmVyKGRhdGUsICdtb25kYXknKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxNjowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuWCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnR01UJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gXCJHTVRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpeG1lIG9wdGltaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0elN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5tYXRjaCgvXFwoKFtcXHdcXHNdKylcXCkvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHR6U3RyaW5nICYmIHR6U3RyaW5nWzFdIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1RodSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0RGF5c1tkYXRlLmdldERheSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0TW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdjJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLmMsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXREYXRlKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VGltZSgpIC0geS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoZGF5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnayc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNb250aCgpICsgMSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXG4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICduJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzFzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ28nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZyhkYXRlLmdldERhdGUoKSkgKyBvcmRpbmFsKGRhdGUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0FNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuQU0gOiBsb2NhbGUuUE07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMjowMDowMCBBTSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLnIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBNYXRoLmZsb29yKHRpbWVzdGFtcCAvIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnXFx0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gJ1xcdCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF5ID09PSAwID8gNyA6IGRheTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMSAtIDcsIE1vbmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAxLUphbi0xOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMudiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIDAgLSA2LCBTdW5kYXkgaXMgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMi8zMS82OSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLngsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gKCcnICsgZGF0ZS5nZXRGdWxsWWVhcigpKS5zbGljZSgyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyswMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSAmJiBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGV4dGVuZGVkVFogPyBcIiswMDowMFwiIDogXCIrMDAwMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9mZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jdXN0b21UaW1lem9uZU9mZnNldCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gX2N1c3RvbVRpbWV6b25lT2Zmc2V0IC8gKDYwICogMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gb2ZmIDwgMCA/ICctJyA6ICcrJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcCA9IGV4dGVuZGVkVFogPyAnOicgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihNYXRoLmFicyhvZmYgLyA2MCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWlucyA9IE1hdGguYWJzKG9mZiAlIDYwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHNpZ24gKyBwYWRUaWxsMihob3VycykgKyBzZXAgKyBwYWRUaWxsMihtaW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gJyUnXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gMzcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJblNjb3BlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IF9zdHJmdGltZTtcblxuICAgICAgICBzdHJmdGltZS5sb2NhbGl6ZSA9IGZ1bmN0aW9uKGxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShsb2NhbGUgfHwgX2xvY2FsZSwgX2N1c3RvbVRpbWV6b25lT2Zmc2V0LCBfdXNlVXRjQmFzZWREYXRlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdHJmdGltZS50aW1lem9uZSA9IGZ1bmN0aW9uKHRpbWV6b25lKSB7XG4gICAgICAgICAgICB2YXIgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQ7XG4gICAgICAgICAgICB2YXIgdXNlVXRjQmFzZWREYXRlID0gX3VzZVV0Y0Jhc2VkRGF0ZTtcblxuICAgICAgICAgICAgdmFyIHRpbWV6b25lVHlwZSA9IHR5cGVvZiB0aW1lem9uZTtcbiAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInIHx8IHRpbWV6b25lVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB1c2VVdGNCYXNlZERhdGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLy8gSVNPIDg2MDEgZm9ybWF0IHRpbWV6b25lIHN0cmluZywgWy0rXUhITU1cbiAgICAgICAgICAgICAgICBpZiAodGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IHRpbWV6b25lWzBdID09PSAnLScgPyAtMSA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VycyA9IHBhcnNlSW50KHRpbWV6b25lLnNsaWNlKDEsIDMpLCAxMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMywgNSksIDEwKTtcblxuICAgICAgICAgICAgICAgICAgICBjdXN0b21UaW1lem9uZU9mZnNldCA9IHNpZ24gKiAoKDYwICogaG91cnMpICsgbWludXRlcykgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluIG1pbnV0ZXM6IDQyMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gdGltZXpvbmUgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnV0YyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIHRydWUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzdHJmdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMihudW1iZXJUb1BhZCwgcGFkZGluZ0NoYXIpIHtcbiAgICAgICAgaWYgKHBhZGRpbmdDaGFyID09PSAnJyB8fCBudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcGFkZGluZ0NoYXIgPSAnMCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhZGRpbmdDaGFyICsgbnVtYmVyVG9QYWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFkVGlsbDMobnVtYmVyVG9QYWQpIHtcbiAgICAgICAgaWYgKG51bWJlclRvUGFkID4gOTkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gJzAnICsgbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcwMCcgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBob3VyczEyKGhvdXIpIHtcbiAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAxMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChob3VyID4gMTIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIC0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgLy8gZmlyc3RXZWVrZGF5OiAnc3VuZGF5JyBvciAnbW9uZGF5JywgZGVmYXVsdCBpcyAnc3VuZGF5J1xuICAgIC8vXG4gICAgLy8gUGlsZmVyZWQgJiBwb3J0ZWQgZnJvbSBSdWJ5J3Mgc3RyZnRpbWUgaW1wbGVtZW50YXRpb24uXG4gICAgZnVuY3Rpb24gd2Vla051bWJlcihkYXRlLCBmaXJzdFdlZWtkYXkpIHtcbiAgICAgICAgZmlyc3RXZWVrZGF5ID0gZmlyc3RXZWVrZGF5IHx8ICdzdW5kYXknO1xuXG4gICAgICAgIC8vIFRoaXMgd29ya3MgYnkgc2hpZnRpbmcgdGhlIHdlZWtkYXkgYmFjayBieSBvbmUgZGF5IGlmIHdlXG4gICAgICAgIC8vIGFyZSB0cmVhdGluZyBNb25kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgdmFyIHdlZWtkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICBpZiAoZmlyc3RXZWVrZGF5ID09PSAnbW9uZGF5Jykge1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPT09IDApIC8vIFN1bmRheVxuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSA2O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHdlZWtkYXktLTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmaXJzdERheU9mWWVhclV0YyA9IERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSksXG4gICAgICAgICAgICBkYXRlVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSxcbiAgICAgICAgICAgIHlkYXkgPSBNYXRoLmZsb29yKChkYXRlVXRjIC0gZmlyc3REYXlPZlllYXJVdGMpIC8gODY0MDAwMDApLFxuICAgICAgICAgICAgd2Vla051bSA9ICh5ZGF5ICsgNyAtIHdlZWtkYXkpIC8gNztcblxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih3ZWVrTnVtKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIG9yZGluYWwgc3VmZml4IGZvciBhIG51bWJlcjogc3QsIG5kLCByZCwgb3IgdGhcbiAgICBmdW5jdGlvbiBvcmRpbmFsKG51bWJlcikge1xuICAgICAgICB2YXIgaSA9IG51bWJlciAlIDEwO1xuICAgICAgICB2YXIgaWkgPSBudW1iZXIgJSAxMDA7XG5cbiAgICAgICAgaWYgKChpaSA+PSAxMSAmJiBpaSA8PSAxMykgfHwgaSA9PT0gMCB8fCBpID49IDQpIHtcbiAgICAgICAgICAgIHJldHVybiAndGgnO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gJ3N0JztcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuICduZCc7XG4gICAgICAgICAgICBjYXNlIDM6IHJldHVybiAncmQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkge1xuICAgICAgICByZXR1cm4gKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSB8fCAwKSAqIDYwMDAwO1xuICAgIH1cblxufSgpKTtcbiIsIihmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGUhPT1cInVuZGVmaW5lZFwiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09XCJ1bmRlZmluZWRcIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2VsZiE9PVwidW5kZWZpbmVkXCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlZpcnR1YWxEb20gPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoXCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbn0se1wiLi92ZG9tL2NyZWF0ZS1lbGVtZW50LmpzXCI6MjR9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkaWZmID0gcmVxdWlyZShcIi4vdnRyZWUvZGlmZi5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcblxufSx7XCIuL3Z0cmVlL2RpZmYuanNcIjo0N31dLDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLyohXG4gKiBDcm9zcy1Ccm93c2VyIFNwbGl0IDEuMS4xXG4gKiBDb3B5cmlnaHQgMjAwNy0yMDEyIFN0ZXZlbiBMZXZpdGhhbiA8c3RldmVubGV2aXRoYW4uY29tPlxuICogQXZhaWxhYmxlIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogRUNNQVNjcmlwdCBjb21wbGlhbnQsIHVuaWZvcm0gY3Jvc3MtYnJvd3NlciBzcGxpdCBtZXRob2RcbiAqL1xuXG4vKipcbiAqIFNwbGl0cyBhIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIHN0cmluZ3MgdXNpbmcgYSByZWdleCBvciBzdHJpbmcgc2VwYXJhdG9yLiBNYXRjaGVzIG9mIHRoZVxuICogc2VwYXJhdG9yIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBhcnJheS4gSG93ZXZlciwgaWYgYHNlcGFyYXRvcmAgaXMgYSByZWdleCB0aGF0IGNvbnRhaW5zXG4gKiBjYXB0dXJpbmcgZ3JvdXBzLCBiYWNrcmVmZXJlbmNlcyBhcmUgc3BsaWNlZCBpbnRvIHRoZSByZXN1bHQgZWFjaCB0aW1lIGBzZXBhcmF0b3JgIGlzIG1hdGNoZWQuXG4gKiBGaXhlcyBicm93c2VyIGJ1Z3MgY29tcGFyZWQgdG8gdGhlIG5hdGl2ZSBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgYW5kIGNhbiBiZSB1c2VkIHJlbGlhYmx5XG4gKiBjcm9zcy1icm93c2VyLlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBTdHJpbmcgdG8gc3BsaXQuXG4gKiBAcGFyYW0ge1JlZ0V4cHxTdHJpbmd9IHNlcGFyYXRvciBSZWdleCBvciBzdHJpbmcgdG8gdXNlIGZvciBzZXBhcmF0aW5nIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge051bWJlcn0gW2xpbWl0XSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlIGluIHRoZSByZXN1bHQgYXJyYXkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEFycmF5IG9mIHN1YnN0cmluZ3MuXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEJhc2ljIHVzZVxuICogc3BsaXQoJ2EgYiBjIGQnLCAnICcpO1xuICogLy8gLT4gWydhJywgJ2InLCAnYycsICdkJ11cbiAqXG4gKiAvLyBXaXRoIGxpbWl0XG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJywgMik7XG4gKiAvLyAtPiBbJ2EnLCAnYiddXG4gKlxuICogLy8gQmFja3JlZmVyZW5jZXMgaW4gcmVzdWx0IGFycmF5XG4gKiBzcGxpdCgnLi53b3JkMSB3b3JkMi4uJywgLyhbYS16XSspKFxcZCspL2kpO1xuICogLy8gLT4gWycuLicsICd3b3JkJywgJzEnLCAnICcsICd3b3JkJywgJzInLCAnLi4nXVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IChmdW5jdGlvbiBzcGxpdCh1bmRlZikge1xuXG4gIHZhciBuYXRpdmVTcGxpdCA9IFN0cmluZy5wcm90b3R5cGUuc3BsaXQsXG4gICAgY29tcGxpYW50RXhlY05wY2cgPSAvKCk/Py8uZXhlYyhcIlwiKVsxXSA9PT0gdW5kZWYsXG4gICAgLy8gTlBDRzogbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBcbiAgICBzZWxmO1xuXG4gIHNlbGYgPSBmdW5jdGlvbihzdHIsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAvLyBJZiBgc2VwYXJhdG9yYCBpcyBub3QgYSByZWdleCwgdXNlIGBuYXRpdmVTcGxpdGBcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHNlcGFyYXRvcikgIT09IFwiW29iamVjdCBSZWdFeHBdXCIpIHtcbiAgICAgIHJldHVybiBuYXRpdmVTcGxpdC5jYWxsKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuICAgIHZhciBvdXRwdXQgPSBbXSxcbiAgICAgIGZsYWdzID0gKHNlcGFyYXRvci5pZ25vcmVDYXNlID8gXCJpXCIgOiBcIlwiKSArIChzZXBhcmF0b3IubXVsdGlsaW5lID8gXCJtXCIgOiBcIlwiKSArIChzZXBhcmF0b3IuZXh0ZW5kZWQgPyBcInhcIiA6IFwiXCIpICsgLy8gUHJvcG9zZWQgZm9yIEVTNlxuICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyBcInlcIiA6IFwiXCIpLFxuICAgICAgLy8gRmlyZWZveCAzK1xuICAgICAgbGFzdExhc3RJbmRleCA9IDAsXG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgc2VwYXJhdG9yID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArIFwiZ1wiKSxcbiAgICAgIHNlcGFyYXRvcjIsIG1hdGNoLCBsYXN0SW5kZXgsIGxhc3RMZW5ndGg7XG4gICAgc3RyICs9IFwiXCI7IC8vIFR5cGUtY29udmVydFxuICAgIGlmICghY29tcGxpYW50RXhlY05wY2cpIHtcbiAgICAgIC8vIERvZXNuJ3QgbmVlZCBmbGFncyBneSwgYnV0IHRoZXkgZG9uJ3QgaHVydFxuICAgICAgc2VwYXJhdG9yMiA9IG5ldyBSZWdFeHAoXCJeXCIgKyBzZXBhcmF0b3Iuc291cmNlICsgXCIkKD8hXFxcXHMpXCIsIGZsYWdzKTtcbiAgICB9XG4gICAgLyogVmFsdWVzIGZvciBgbGltaXRgLCBwZXIgdGhlIHNwZWM6XG4gICAgICogSWYgdW5kZWZpbmVkOiA0Mjk0OTY3Mjk1IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICAgKiBJZiAwLCBJbmZpbml0eSwgb3IgTmFOOiAwXG4gICAgICogSWYgcG9zaXRpdmUgbnVtYmVyOiBsaW1pdCA9IE1hdGguZmxvb3IobGltaXQpOyBpZiAobGltaXQgPiA0Mjk0OTY3Mjk1KSBsaW1pdCAtPSA0Mjk0OTY3Mjk2O1xuICAgICAqIElmIG5lZ2F0aXZlIG51bWJlcjogNDI5NDk2NzI5NiAtIE1hdGguZmxvb3IoTWF0aC5hYnMobGltaXQpKVxuICAgICAqIElmIG90aGVyOiBUeXBlLWNvbnZlcnQsIHRoZW4gdXNlIHRoZSBhYm92ZSBydWxlc1xuICAgICAqL1xuICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmID8gLTEgPj4+IDAgOiAvLyBNYXRoLnBvdygyLCAzMikgLSAxXG4gICAgbGltaXQgPj4+IDA7IC8vIFRvVWludDMyKGxpbWl0KVxuICAgIHdoaWxlIChtYXRjaCA9IHNlcGFyYXRvci5leGVjKHN0cikpIHtcbiAgICAgIC8vIGBzZXBhcmF0b3IubGFzdEluZGV4YCBpcyBub3QgcmVsaWFibGUgY3Jvc3MtYnJvd3NlclxuICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGAgZm9yXG4gICAgICAgIC8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3Vwc1xuICAgICAgICBpZiAoIWNvbXBsaWFudEV4ZWNOcGNnICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBtYXRjaFswXS5yZXBsYWNlKHNlcGFyYXRvcjIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hbaV0gPSB1bmRlZjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIGxhc3RMYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgIGlmIChvdXRwdXQubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzZXBhcmF0b3IubGFzdEluZGV4ID09PSBtYXRjaC5pbmRleCkge1xuICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxhc3RMYXN0SW5kZXggPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3IudGVzdChcIlwiKSkge1xuICAgICAgICBvdXRwdXQucHVzaChcIlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goc3RyLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5sZW5ndGggPiBsaW1pdCA/IG91dHB1dC5zbGljZSgwLCBsaW1pdCkgOiBvdXRwdXQ7XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59KSgpO1xuXG59LHt9XSw0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIE9uZVZlcnNpb25Db25zdHJhaW50ID0gcmVxdWlyZSgnaW5kaXZpZHVhbC9vbmUtdmVyc2lvbicpO1xuXG52YXIgTVlfVkVSU0lPTiA9ICc3Jztcbk9uZVZlcnNpb25Db25zdHJhaW50KCdldi1zdG9yZScsIE1ZX1ZFUlNJT04pO1xuXG52YXIgaGFzaEtleSA9ICdfX0VWX1NUT1JFX0tFWUAnICsgTVlfVkVSU0lPTjtcblxubW9kdWxlLmV4cG9ydHMgPSBFdlN0b3JlO1xuXG5mdW5jdGlvbiBFdlN0b3JlKGVsZW0pIHtcbiAgICB2YXIgaGFzaCA9IGVsZW1baGFzaEtleV07XG5cbiAgICBpZiAoIWhhc2gpIHtcbiAgICAgICAgaGFzaCA9IGVsZW1baGFzaEtleV0gPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbn1cblxufSx7XCJpbmRpdmlkdWFsL29uZS12ZXJzaW9uXCI6Nn1dLDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xuJ3VzZSBzdHJpY3QnO1xuXG4vKmdsb2JhbCB3aW5kb3csIGdsb2JhbCovXG5cbnZhciByb290ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID9cbiAgICBnbG9iYWwgOiB7fTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbmRpdmlkdWFsO1xuXG5mdW5jdGlvbiBJbmRpdmlkdWFsKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIHJvb3QpIHtcbiAgICAgICAgcmV0dXJuIHJvb3Rba2V5XTtcbiAgICB9XG5cbiAgICByb290W2tleV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiB2YWx1ZTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHt9XSw2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIEluZGl2aWR1YWwgPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT25lVmVyc2lvbjtcblxuZnVuY3Rpb24gT25lVmVyc2lvbihtb2R1bGVOYW1lLCB2ZXJzaW9uLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIga2V5ID0gJ19fSU5ESVZJRFVBTF9PTkVfVkVSU0lPTl8nICsgbW9kdWxlTmFtZTtcbiAgICB2YXIgZW5mb3JjZUtleSA9IGtleSArICdfRU5GT1JDRV9TSU5HTEVUT04nO1xuXG4gICAgdmFyIHZlcnNpb25WYWx1ZSA9IEluZGl2aWR1YWwoZW5mb3JjZUtleSwgdmVyc2lvbik7XG5cbiAgICBpZiAodmVyc2lvblZhbHVlICE9PSB2ZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgaGF2ZSBvbmUgY29weSBvZiAnICtcbiAgICAgICAgICAgIG1vZHVsZU5hbWUgKyAnLlxcbicgK1xuICAgICAgICAgICAgJ1lvdSBhbHJlYWR5IGhhdmUgdmVyc2lvbiAnICsgdmVyc2lvblZhbHVlICtcbiAgICAgICAgICAgICcgaW5zdGFsbGVkLlxcbicgK1xuICAgICAgICAgICAgJ1RoaXMgbWVhbnMgeW91IGNhbm5vdCBpbnN0YWxsIHZlcnNpb24gJyArIHZlcnNpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBJbmRpdmlkdWFsKGtleSwgZGVmYXVsdFZhbHVlKTtcbn1cblxufSx7XCIuL2luZGV4LmpzXCI6NX1dLDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHRvcExldmVsID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge31cbnZhciBtaW5Eb2MgPSByZXF1aXJlKCdtaW4tZG9jdW1lbnQnKTtcblxuaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50O1xufSBlbHNlIHtcbiAgICB2YXIgZG9jY3kgPSB0b3BMZXZlbFsnX19HTE9CQUxfRE9DVU1FTlRfQ0FDSEVANCddO1xuXG4gICAgaWYgKCFkb2NjeSkge1xuICAgICAgICBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J10gPSBtaW5Eb2M7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBkb2NjeTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHtcIm1pbi1kb2N1bWVudFwiOjE3fV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9tV2FsayA9IHJlcXVpcmUoXCJkb20td2Fsa1wiKVxuXG52YXIgQ29tbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1jb21tZW50LmpzXCIpXG52YXIgRE9NVGV4dCA9IHJlcXVpcmUoXCIuL2RvbS10ZXh0LmpzXCIpXG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG52YXIgRG9jdW1lbnRGcmFnbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1mcmFnbWVudC5qc1wiKVxudmFyIEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQuanNcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50O1xuXG5mdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJoZWFkXCIpXG4gICAgdGhpcy5ib2R5ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiYm9keVwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiaHRtbFwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGVhZClcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJvZHkpXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW3RoaXMuZG9jdW1lbnRFbGVtZW50XVxuICAgIHRoaXMubm9kZVR5cGUgPSA5XG59XG5cbnZhciBwcm90byA9IERvY3VtZW50LnByb3RvdHlwZTtcbnByb3RvLmNyZWF0ZVRleHROb2RlID0gZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUodmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IERPTVRleHQodmFsdWUsIHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnROUyA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgICB2YXIgbnMgPSBuYW1lc3BhY2UgPT09IG51bGwgPyBudWxsIDogU3RyaW5nKG5hbWVzcGFjZSlcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcywgbnMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUpIHtcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSB7XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUV2ZW50ID0gZnVuY3Rpb24gY3JlYXRlRXZlbnQoZmFtaWx5KSB7XG4gICAgcmV0dXJuIG5ldyBFdmVudChmYW1pbHkpXG59XG5cbnByb3RvLmNyZWF0ZUNvbW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVDb21tZW50KGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgdGhpcylcbn1cblxucHJvdG8uZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgIGlkID0gU3RyaW5nKGlkKVxuXG4gICAgdmFyIHJlc3VsdCA9IGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAoU3RyaW5nKG5vZGUuaWQpID09PSBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzdWx0IHx8IG51bGxcbn1cblxucHJvdG8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IERPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWVcbnByb3RvLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVcbnByb3RvLmNvbnRhaW5zID0gRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnNcblxucHJvdG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbnByb3RvLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5wcm90by5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG59LHtcIi4vZG9tLWNvbW1lbnQuanNcIjo5LFwiLi9kb20tZWxlbWVudC5qc1wiOjEwLFwiLi9kb20tZnJhZ21lbnQuanNcIjoxMSxcIi4vZG9tLXRleHQuanNcIjoxMixcIi4vZXZlbnQuanNcIjoxMyxcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiZG9tLXdhbGtcIjoxOH1dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBDb21tZW50XG5cbmZ1bmN0aW9uIENvbW1lbnQoZGF0YSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tZW50KGRhdGEsIG93bmVyKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB0aGlzLm5vZGVWYWx1ZSA9IGRhdGFcbiAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Db21tZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDhcbkNvbW1lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjY29tbWVudFwiXG5cbkNvbW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0NvbW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBDb21tZW50XVwiXG59XG5cbn0se31dLDEwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG52YXIgZGlzcGF0Y2hFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCIpXG52YXIgYWRkRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciBzZXJpYWxpemVOb2RlID0gcmVxdWlyZShcIi4vc2VyaWFsaXplLmpzXCIpXG5cbnZhciBodG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuXG5tb2R1bGUuZXhwb3J0cyA9IERPTUVsZW1lbnRcblxuZnVuY3Rpb24gRE9NRWxlbWVudCh0YWdOYW1lLCBvd25lciwgbmFtZXNwYWNlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lKVxuICAgIH1cblxuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gaHRtbG5zIDogKG5hbWVzcGFjZSB8fCBudWxsKVxuXG4gICAgdGhpcy50YWdOYW1lID0gbnMgPT09IGh0bWxucyA/IFN0cmluZyh0YWdOYW1lKS50b1VwcGVyQ2FzZSgpIDogdGFnTmFtZVxuICAgIHRoaXMubm9kZU5hbWUgPSB0aGlzLnRhZ05hbWVcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCJcbiAgICB0aGlzLmRhdGFzZXQgPSB7fVxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFtdXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbFxuICAgIHRoaXMuc3R5bGUgPSB7fVxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbiAgICB0aGlzLm5hbWVzcGFjZVVSSSA9IG5zXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IHt9XG5cbiAgICBpZiAodGhpcy50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICB0aGlzLnR5cGUgPSAndGV4dCdcbiAgICB9XG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRPTUVsZW1lbnRcIlxuRE9NRWxlbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxXG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfYXBwZW5kQ2hpbGQoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQucGFyZW50Tm9kZSkge1xuICAgICAgICBjaGlsZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkKVxuICAgIH1cblxuICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKVxuICAgIGNoaWxkLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICByZXR1cm4gY2hpbGRcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZXBsYWNlQ2hpbGQoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgbmVlZGxlLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKG5lZWRsZSlcblxuICAgICAgICBuZWVkbGUucGFyZW50Tm9kZSA9IG51bGxcbiAgICAgICAgdGhpcy5jaGlsZE5vZGVzW2luZGV4XSA9IGVsZW1cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuXG4gICAgICAgIHJldHVybiBuZWVkbGVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQ2hpbGQoZWxlbSkge1xuICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgZWxlbS5wYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihlbGVtKVxuICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICBlbGVtLnBhcmVudE5vZGUgPSBudWxsXG4gICAgcmV0dXJuIGVsZW1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9pbnNlcnRCZWZvcmUoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgcmVmZXJlbmNlRWxlbWVudCBpcyBhIGRvbSBub2RlXG4gICAgICAgIC8vIGFuZCBwYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICAgICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW5kZXggPSBuZWVkbGUgPT09IG51bGwgfHwgbmVlZGxlID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAwLCBlbGVtKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZSA9IHRoaXNcbiAgICAgICAgcmV0dXJuIGVsZW1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciBwcmVmaXggPSBudWxsXG4gICAgICAgIHZhciBsb2NhbE5hbWUgPSBuYW1lXG4gICAgICAgIHZhciBjb2xvblBvc2l0aW9uID0gbmFtZS5pbmRleE9mKFwiOlwiKVxuICAgICAgICBpZiAoY29sb25Qb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cigwLCBjb2xvblBvc2l0aW9uKVxuICAgICAgICAgICAgbG9jYWxOYW1lID0gbmFtZS5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV0gfHwgKHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSA9IHt9KVxuICAgICAgICBhdHRyaWJ1dGVzW2xvY2FsTmFtZV0gPSB7dmFsdWU6IHZhbHVlLCBwcmVmaXg6IHByZWZpeH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlc1tuYW1lXSAmJiBhdHRyaWJ1dGVzW25hbWVdLnZhbHVlXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBkZWxldGUgYXR0cmlidXRlc1tuYW1lXVxuICAgICAgICB9XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfaGFzQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdXG4gICAgICAgIHJldHVybiAhIWF0dHJpYnV0ZXMgJiYgbmFtZSBpbiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSwgdmFsdWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lclxuRE9NRWxlbWVudC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCA9IGRpc3BhdGNoRXZlbnRcblxuLy8gVW4taW1wbGVtZW50ZWRcbkRPTUVsZW1lbnQucHJvdG90eXBlLmZvY3VzID0gZnVuY3Rpb24gX0VsZW1lbnRfZm9jdXMoKSB7XG4gICAgcmV0dXJuIHZvaWQgMFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9FbGVtZW50X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBzZXJpYWxpemVOb2RlKHRoaXMpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZXMpIHtcbiAgICB2YXIgY2xhc3NlcyA9IGNsYXNzTmFtZXMuc3BsaXQoXCIgXCIpO1xuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICB2YXIgbm9kZUNsYXNzTmFtZSA9IG5vZGUuY2xhc3NOYW1lIHx8IFwiXCJcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NlcyA9IG5vZGVDbGFzc05hbWUuc3BsaXQoXCIgXCIpXG5cbiAgICAgICAgICAgIGlmIChjbGFzc2VzLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVDbGFzc2VzLmluZGV4T2YoaXRlbSkgIT09IC0xXG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSB7XG4gICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMuY2hpbGROb2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKHRhZ05hbWUgPT09ICcqJyB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZSkpIHtcbiAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBfRWxlbWVudF9jb250YWlucyhlbGVtZW50KSB7XG4gICAgcmV0dXJuIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IG5vZGVcbiAgICB9KSB8fCBmYWxzZVxufVxuXG59LHtcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiLi9zZXJpYWxpemUuanNcIjoxOSxcImRvbS13YWxrXCI6MTh9XSwxMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnRGcmFnbWVudFxuXG5mdW5jdGlvbiBEb2N1bWVudEZyYWdtZW50KG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnRGcmFnbWVudCgpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50eXBlID0gXCJEb2N1bWVudEZyYWdtZW50XCJcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gMTFcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjZG9jdW1lbnQtZnJhZ21lbnRcIlxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZFxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID0gRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZFxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50b1N0cmluZyA9XG4gICAgZnVuY3Rpb24gX0RvY3VtZW50RnJhZ21lbnRfdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKG5vZGUpXG4gICAgICAgIH0pLmpvaW4oXCJcIilcbiAgICB9XG5cbn0se1wiLi9kb20tZWxlbWVudC5qc1wiOjEwfV0sMTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBET01UZXh0XG5cbmZ1bmN0aW9uIERPTVRleHQodmFsdWUsIG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTVRleHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSlcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgPSB2YWx1ZSB8fCBcIlwiXG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5ET01UZXh0LnByb3RvdHlwZS50eXBlID0gXCJET01UZXh0Tm9kZVwiXG5ET01UZXh0LnByb3RvdHlwZS5ub2RlVHlwZSA9IDNcbkRPTVRleHQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjdGV4dFwiXG5cbkRPTVRleHQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX1RleHRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVxufVxuXG5ET01UZXh0LnByb3RvdHlwZS5yZXBsYWNlRGF0YSA9IGZ1bmN0aW9uIHJlcGxhY2VEYXRhKGluZGV4LCBsZW5ndGgsIHZhbHVlKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmRhdGFcbiAgICB2YXIgbGVmdCA9IGN1cnJlbnQuc3Vic3RyaW5nKDAsIGluZGV4KVxuICAgIHZhciByaWdodCA9IGN1cnJlbnQuc3Vic3RyaW5nKGluZGV4ICsgbGVuZ3RoLCBjdXJyZW50Lmxlbmd0aClcbiAgICB0aGlzLmRhdGEgPSBsZWZ0ICsgdmFsdWUgKyByaWdodFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aFxufVxuXG59LHt9XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50XG5cbmZ1bmN0aW9uIEV2ZW50KGZhbWlseSkge31cblxuRXZlbnQucHJvdG90eXBlLmluaXRFdmVudCA9IGZ1bmN0aW9uIF9FdmVudF9pbml0RXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGVcbiAgICB0aGlzLmJ1YmJsZXMgPSBidWJibGVzXG4gICAgdGhpcy5jYW5jZWxhYmxlID0gY2FuY2VsYWJsZVxufVxuXG5FdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbiBfRXZlbnRfcHJldmVudERlZmF1bHQoKSB7XG4gICAgXG59XG5cbn0se31dLDE0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gYWRkRXZlbnRMaXN0ZW5lclxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzID0ge31cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdID0gW11cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5saXN0ZW5lcnNbdHlwZV0uaW5kZXhPZihsaXN0ZW5lcikgPT09IC0xKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpXG4gICAgfVxufVxuXG59LHt9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGRpc3BhdGNoRXZlbnRcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuICAgIHZhciB0eXBlID0gZXYudHlwZVxuXG4gICAgaWYgKCFldi50YXJnZXQpIHtcbiAgICAgICAgZXYudGFyZ2V0ID0gZWxlbVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBlbGVtLmxpc3RlbmVyc1t0eXBlXVxuXG4gICAgaWYgKGxpc3RlbmVycykge1xuICAgICAgICByZXR1cm4gbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBldi5jdXJyZW50VGFyZ2V0ID0gZWxlbVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyKGV2KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lci5oYW5kbGVFdmVudChldilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZS5kaXNwYXRjaEV2ZW50KGV2KVxuICAgIH1cbn1cblxufSx7fV0sMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgbGlzdCA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG4gICAgdmFyIGluZGV4ID0gbGlzdC5pbmRleE9mKGxpc3RlbmVyKVxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxufVxuXG59LHt9XSwxNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRG9jdW1lbnQgPSByZXF1aXJlKCcuL2RvY3VtZW50LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IERvY3VtZW50KCk7XG5cbn0se1wiLi9kb2N1bWVudC5qc1wiOjh9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcblxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRpdmVseVdhbGtcblxuZnVuY3Rpb24gaXRlcmF0aXZlbHlXYWxrKG5vZGVzLCBjYikge1xuICAgIGlmICghKCdsZW5ndGgnIGluIG5vZGVzKSkge1xuICAgICAgICBub2RlcyA9IFtub2Rlc11cbiAgICB9XG4gICAgXG4gICAgbm9kZXMgPSBzbGljZS5jYWxsKG5vZGVzKVxuXG4gICAgd2hpbGUobm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXMuc2hpZnQoKSxcbiAgICAgICAgICAgIHJldCA9IGNiKG5vZGUpXG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGROb2RlcyAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZS5jaGlsZE5vZGVzKS5jb25jYXQobm9kZXMpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbn0se31dLDE5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gc2VyaWFsaXplTm9kZVxuXG52YXIgdm9pZEVsZW1lbnRzID0gL2FyZWF8YmFzZXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGtleWdlbnxsaW5rfG1lbnVpdGVtfG1ldGF8cGFyYW18c291cmNlfHRyYWNrfHdici9pO1xuXG5mdW5jdGlvbiBzZXJpYWxpemVOb2RlKG5vZGUpIHtcbiAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUpIHtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIGVzY2FwZVRleHQobm9kZS5kYXRhKVxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gXCI8IS0tXCIgKyBub2RlLmRhdGEgKyBcIi0tPlwiXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplRWxlbWVudChub2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplRWxlbWVudChlbGVtKSB7XG4gICAgdmFyIHN0cmluZ3MgPSBbXVxuXG4gICAgdmFyIHRhZ25hbWUgPSBlbGVtLnRhZ05hbWVcblxuICAgIGlmIChlbGVtLm5hbWVzcGFjZVVSSSA9PT0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpIHtcbiAgICAgICAgdGFnbmFtZSA9IHRhZ25hbWUudG9Mb3dlckNhc2UoKVxuICAgIH1cblxuICAgIHN0cmluZ3MucHVzaChcIjxcIiArIHRhZ25hbWUgKyBwcm9wZXJ0aWVzKGVsZW0pICsgZGF0YXNldGlmeShlbGVtKSlcblxuICAgIGlmICh2b2lkRWxlbWVudHMudGVzdCh0YWduYW1lKSkge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCIgLz5cIilcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCI+XCIpXG5cbiAgICAgICAgaWYgKGVsZW0uY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaC5hcHBseShzdHJpbmdzLCBlbGVtLmNoaWxkTm9kZXMubWFwKHNlcmlhbGl6ZU5vZGUpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlc2NhcGVUZXh0KGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0uaW5uZXJIVE1MKSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2goZWxlbS5pbm5lckhUTUwpXG4gICAgICAgIH1cblxuICAgICAgICBzdHJpbmdzLnB1c2goXCI8L1wiICsgdGFnbmFtZSArIFwiPlwiKVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdzLmpvaW4oXCJcIilcbn1cblxuZnVuY3Rpb24gaXNQcm9wZXJ0eShlbGVtLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBlbGVtW2tleV1cblxuICAgIGlmIChrZXkgPT09IFwic3R5bGVcIiAmJiBPYmplY3Qua2V5cyhlbGVtLnN0eWxlKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgKHR5cGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgfHwgdHlwZSA9PT0gXCJudW1iZXJcIikgJiZcbiAgICAgICAga2V5ICE9PSBcIm5vZGVOYW1lXCIgJiYga2V5ICE9PSBcImNsYXNzTmFtZVwiICYmIGtleSAhPT0gXCJ0YWdOYW1lXCIgJiZcbiAgICAgICAga2V5ICE9PSBcInRleHRDb250ZW50XCIgJiYga2V5ICE9PSBcImlubmVyVGV4dFwiICYmIGtleSAhPT0gXCJuYW1lc3BhY2VVUklcIiAmJiAga2V5ICE9PSBcImlubmVySFRNTFwiXG59XG5cbmZ1bmN0aW9uIHN0eWxpZnkoc3R5bGVzKSB7XG4gICAgaWYgKHR5cGVvZiBzdHlsZXMgPT09ICdzdHJpbmcnKSByZXR1cm4gc3R5bGVzXG4gICAgdmFyIGF0dHIgPSBcIlwiXG4gICAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVzW2tleV1cbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoL1tBLVpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIi1cIiArIGMudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSlcbiAgICAgICAgYXR0ciArPSBrZXkgKyBcIjpcIiArIHZhbHVlICsgXCI7XCJcbiAgICB9KVxuICAgIHJldHVybiBhdHRyXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRpZnkoZWxlbSkge1xuICAgIHZhciBkcyA9IGVsZW0uZGF0YXNldFxuICAgIHZhciBwcm9wcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZHMpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiZGF0YS1cIiArIGtleSwgdmFsdWU6IGRzW2tleV0gfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubGVuZ3RoID8gc3RyaW5naWZ5KHByb3BzKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KGxpc3QpIHtcbiAgICB2YXIgYXR0cmlidXRlcyA9IFtdXG4gICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uICh0dXBsZSkge1xuICAgICAgICB2YXIgbmFtZSA9IHR1cGxlLm5hbWVcbiAgICAgICAgdmFyIHZhbHVlID0gdHVwbGUudmFsdWVcblxuICAgICAgICBpZiAobmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN0eWxpZnkodmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmFtZSArIFwiPVwiICsgXCJcXFwiXCIgKyBlc2NhcGVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSkgKyBcIlxcXCJcIilcbiAgICB9KVxuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZXMubGVuZ3RoID8gXCIgXCIgKyBhdHRyaWJ1dGVzLmpvaW4oXCIgXCIpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0aWVzKGVsZW0pIHtcbiAgICB2YXIgcHJvcHMgPSBbXVxuICAgIGZvciAodmFyIGtleSBpbiBlbGVtKSB7XG4gICAgICAgIGlmIChpc1Byb3BlcnR5KGVsZW0sIGtleSkpIHtcbiAgICAgICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBrZXksIHZhbHVlOiBlbGVtW2tleV0gfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIG5zIGluIGVsZW0uX2F0dHJpYnV0ZXMpIHtcbiAgICAgIGZvciAodmFyIGF0dHJpYnV0ZSBpbiBlbGVtLl9hdHRyaWJ1dGVzW25zXSkge1xuICAgICAgICB2YXIgcHJvcCA9IGVsZW0uX2F0dHJpYnV0ZXNbbnNdW2F0dHJpYnV0ZV1cbiAgICAgICAgdmFyIG5hbWUgPSAocHJvcC5wcmVmaXggPyBwcm9wLnByZWZpeCArIFwiOlwiIDogXCJcIikgKyBhdHRyaWJ1dGVcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiBwcm9wLnZhbHVlIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVsZW0uY2xhc3NOYW1lKSB7XG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBcImNsYXNzXCIsIHZhbHVlOiBlbGVtLmNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBlc2NhcGVUZXh0KHMpIHtcbiAgICB2YXIgc3RyID0gJyc7XG5cbiAgICBpZiAodHlwZW9mKHMpID09PSAnc3RyaW5nJykgeyBcbiAgICAgICAgc3RyID0gczsgXG4gICAgfSBlbHNlIGlmIChzKSB7XG4gICAgICAgIHN0ciA9IHMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIilcbiAgICAgICAgLnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKVxufVxuXG5mdW5jdGlvbiBlc2NhcGVBdHRyaWJ1dGVWYWx1ZShzdHIpIHtcbiAgICByZXR1cm4gZXNjYXBlVGV4dChzdHIpLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpXG59XG5cbn0se31dLDIwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzT2JqZWN0KHgpIHtcblx0cmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIHggIT09IG51bGw7XG59O1xuXG59LHt9XSwyMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgbmF0aXZlSXNBcnJheSA9IEFycmF5LmlzQXJyYXlcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJc0FycmF5IHx8IGlzQXJyYXlcblxuZnVuY3Rpb24gaXNBcnJheShvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSBcIltvYmplY3QgQXJyYXldXCJcbn1cblxufSx7fV0sMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHBhdGNoID0gcmVxdWlyZShcIi4vdmRvbS9wYXRjaC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbn0se1wiLi92ZG9tL3BhdGNoLmpzXCI6Mjd9XSwyMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHlQcm9wZXJ0aWVzXG5cbmZ1bmN0aW9uIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcywgcHJldmlvdXMpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wcykge1xuICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNIb29rKHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKVxuICAgICAgICAgICAgaWYgKHByb3BWYWx1ZS5ob29rKSB7XG4gICAgICAgICAgICAgICAgcHJvcFZhbHVlLmhvb2sobm9kZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cykge1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzW3Byb3BOYW1lXVxuXG4gICAgICAgIGlmICghaXNIb29rKHByZXZpb3VzVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAocHJvcE5hbWUgPT09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zdHlsZVtpXSA9IFwiXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcmV2aW91c1ZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBcIlwiXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzVmFsdWUudW5ob29rKSB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlLnVuaG9vayhub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkXG5cbiAgICAvLyBTZXQgYXR0cmlidXRlc1xuICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgYXR0clZhbHVlID0gcHJvcFZhbHVlW2F0dHJOYW1lXVxuXG4gICAgICAgICAgICBpZiAoYXR0clZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmKHByZXZpb3VzVmFsdWUgJiYgaXNPYmplY3QocHJldmlvdXNWYWx1ZSkgJiZcbiAgICAgICAgZ2V0UHJvdG90eXBlKHByZXZpb3VzVmFsdWUpICE9PSBnZXRQcm90b3R5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzT2JqZWN0KG5vZGVbcHJvcE5hbWVdKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHt9XG4gICAgfVxuXG4gICAgdmFyIHJlcGxhY2VyID0gcHJvcE5hbWUgPT09IFwic3R5bGVcIiA/IFwiXCIgOiB1bmRlZmluZWRcblxuICAgIGZvciAodmFyIGsgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BWYWx1ZVtrXVxuICAgICAgICBub2RlW3Byb3BOYW1lXVtrXSA9ICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IHJlcGxhY2VyIDogdmFsdWVcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgICAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rLmpzXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDI0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcblxudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdm5vZGUuanNcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZ0ZXh0LmpzXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRWxlbWVudFxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KHZub2RlLCBvcHRzKSB7XG4gICAgdmFyIGRvYyA9IG9wdHMgPyBvcHRzLmRvY3VtZW50IHx8IGRvY3VtZW50IDogZG9jdW1lbnRcbiAgICB2YXIgd2FybiA9IG9wdHMgPyBvcHRzLndhcm4gOiBudWxsXG5cbiAgICB2bm9kZSA9IGhhbmRsZVRodW5rKHZub2RlKS5hXG5cbiAgICBpZiAoaXNXaWRnZXQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiB2bm9kZS5pbml0KClcbiAgICB9IGVsc2UgaWYgKGlzVlRleHQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBkb2MuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dClcbiAgICB9IGVsc2UgaWYgKCFpc1ZOb2RlKHZub2RlKSkge1xuICAgICAgICBpZiAod2Fybikge1xuICAgICAgICAgICAgd2FybihcIkl0ZW0gaXMgbm90IGEgdmFsaWQgdmlydHVhbCBkb20gbm9kZVwiLCB2bm9kZSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHZhciBub2RlID0gKHZub2RlLm5hbWVzcGFjZSA9PT0gbnVsbCkgP1xuICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCh2bm9kZS50YWdOYW1lKSA6XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50TlModm5vZGUubmFtZXNwYWNlLCB2bm9kZS50YWdOYW1lKVxuXG4gICAgdmFyIHByb3BzID0gdm5vZGUucHJvcGVydGllc1xuICAgIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcylcblxuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZE5vZGUgPSBjcmVhdGVFbGVtZW50KGNoaWxkcmVuW2ldLCBvcHRzKVxuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKGNoaWxkTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlXG59XG5cbn0se1wiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCI6MzYsXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxLFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCJnbG9iYWwvZG9jdW1lbnRcIjo3fV0sMjU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLy8gTWFwcyBhIHZpcnR1YWwgRE9NIHRyZWUgb250byBhIHJlYWwgRE9NIHRyZWUgaW4gYW4gZWZmaWNpZW50IG1hbm5lci5cbi8vIFdlIGRvbid0IHdhbnQgdG8gcmVhZCBhbGwgb2YgdGhlIERPTSBub2RlcyBpbiB0aGUgdHJlZSBzbyB3ZSB1c2Vcbi8vIHRoZSBpbi1vcmRlciB0cmVlIGluZGV4aW5nIHRvIGVsaW1pbmF0ZSByZWN1cnNpb24gZG93biBjZXJ0YWluIGJyYW5jaGVzLlxuLy8gV2Ugb25seSByZWN1cnNlIGludG8gYSBET00gbm9kZSBpZiB3ZSBrbm93IHRoYXQgaXQgY29udGFpbnMgYSBjaGlsZCBvZlxuLy8gaW50ZXJlc3QuXG5cbnZhciBub0NoaWxkID0ge31cblxubW9kdWxlLmV4cG9ydHMgPSBkb21JbmRleFxuXG5mdW5jdGlvbiBkb21JbmRleChyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMpIHtcbiAgICBpZiAoIWluZGljZXMgfHwgaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW5kaWNlcy5zb3J0KGFzY2VuZGluZylcbiAgICAgICAgcmV0dXJuIHJlY3Vyc2Uocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzLCAwKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleCkge1xuICAgIG5vZGVzID0gbm9kZXMgfHwge31cblxuXG4gICAgaWYgKHJvb3ROb2RlKSB7XG4gICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCByb290SW5kZXgpKSB7XG4gICAgICAgICAgICBub2Rlc1tyb290SW5kZXhdID0gcm9vdE5vZGVcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2Q2hpbGRyZW4gPSB0cmVlLmNoaWxkcmVuXG5cbiAgICAgICAgaWYgKHZDaGlsZHJlbikge1xuXG4gICAgICAgICAgICB2YXIgY2hpbGROb2RlcyA9IHJvb3ROb2RlLmNoaWxkTm9kZXNcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcm9vdEluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHZhciB2Q2hpbGQgPSB2Q2hpbGRyZW5baV0gfHwgbm9DaGlsZFxuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSByb290SW5kZXggKyAodkNoaWxkLmNvdW50IHx8IDApXG5cbiAgICAgICAgICAgICAgICAvLyBza2lwIHJlY3Vyc2lvbiBkb3duIHRoZSB0cmVlIGlmIHRoZXJlIGFyZSBubyBub2RlcyBkb3duIGhlcmVcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhJblJhbmdlKGluZGljZXMsIHJvb3RJbmRleCwgbmV4dEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICByZWN1cnNlKGNoaWxkTm9kZXNbaV0sIHZDaGlsZCwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb290SW5kZXggPSBuZXh0SW5kZXhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2Rlc1xufVxuXG4vLyBCaW5hcnkgc2VhcmNoIGZvciBhbiBpbmRleCBpbiB0aGUgaW50ZXJ2YWwgW2xlZnQsIHJpZ2h0XVxuZnVuY3Rpb24gaW5kZXhJblJhbmdlKGluZGljZXMsIGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHZhciBtaW5JbmRleCA9IDBcbiAgICB2YXIgbWF4SW5kZXggPSBpbmRpY2VzLmxlbmd0aCAtIDFcbiAgICB2YXIgY3VycmVudEluZGV4XG4gICAgdmFyIGN1cnJlbnRJdGVtXG5cbiAgICB3aGlsZSAobWluSW5kZXggPD0gbWF4SW5kZXgpIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gKChtYXhJbmRleCArIG1pbkluZGV4KSAvIDIpID4+IDBcbiAgICAgICAgY3VycmVudEl0ZW0gPSBpbmRpY2VzW2N1cnJlbnRJbmRleF1cblxuICAgICAgICBpZiAobWluSW5kZXggPT09IG1heEluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEl0ZW0gPj0gbGVmdCAmJiBjdXJyZW50SXRlbSA8PSByaWdodFxuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRJdGVtIDwgbGVmdCkge1xuICAgICAgICAgICAgbWluSW5kZXggPSBjdXJyZW50SW5kZXggKyAxXG4gICAgICAgIH0gZWxzZSAgaWYgKGN1cnJlbnRJdGVtID4gcmlnaHQpIHtcbiAgICAgICAgICAgIG1heEluZGV4ID0gY3VycmVudEluZGV4IC0gMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nKGEsIGIpIHtcbiAgICByZXR1cm4gYSA+IGIgPyAxIDogLTFcbn1cblxufSx7fV0sMjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2guanNcIilcblxudmFyIHVwZGF0ZVdpZGdldCA9IHJlcXVpcmUoXCIuL3VwZGF0ZS13aWRnZXRcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVBhdGNoXG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2godnBhdGNoLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHR5cGUgPSB2cGF0Y2gudHlwZVxuICAgIHZhciB2Tm9kZSA9IHZwYXRjaC52Tm9kZVxuICAgIHZhciBwYXRjaCA9IHZwYXRjaC5wYXRjaFxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgVlBhdGNoLlJFTU9WRTpcbiAgICAgICAgICAgIHJldHVybiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKVxuICAgICAgICBjYXNlIFZQYXRjaC5JTlNFUlQ6XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZShkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guVlRFWFQ6XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5XSURHRVQ6XG4gICAgICAgICAgICByZXR1cm4gd2lkZ2V0UGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WTk9ERTpcbiAgICAgICAgICAgIHJldHVybiB2Tm9kZVBhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guT1JERVI6XG4gICAgICAgICAgICByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgcGF0Y2gpXG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgICAgICBjYXNlIFZQYXRjaC5QUk9QUzpcbiAgICAgICAgICAgIGFwcGx5UHJvcGVydGllcyhkb21Ob2RlLCBwYXRjaCwgdk5vZGUucHJvcGVydGllcylcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlRIVU5LOlxuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VSb290KGRvbU5vZGUsXG4gICAgICAgICAgICAgICAgcmVuZGVyT3B0aW9ucy5wYXRjaChkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucykpXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlTm9kZShkb21Ob2RlLCB2Tm9kZSkge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG5cbiAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRvbU5vZGUpXG4gICAgfVxuXG4gICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCB2Tm9kZSk7XG5cbiAgICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBpbnNlcnROb2RlKHBhcmVudE5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobmV3Tm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50Tm9kZVxufVxuXG5mdW5jdGlvbiBzdHJpbmdQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZUZXh0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmIChkb21Ob2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIGRvbU5vZGUucmVwbGFjZURhdGEoMCwgZG9tTm9kZS5sZW5ndGgsIHZUZXh0LnRleHQpXG4gICAgICAgIG5ld05vZGUgPSBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZUZXh0LCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiB3aWRnZXRQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHdpZGdldCwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciB1cGRhdGluZyA9IHVwZGF0ZVdpZGdldChsZWZ0Vk5vZGUsIHdpZGdldClcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKHVwZGF0aW5nKSB7XG4gICAgICAgIG5ld05vZGUgPSB3aWRnZXQudXBkYXRlKGxlZnRWTm9kZSwgZG9tTm9kZSkgfHwgZG9tTm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih3aWRnZXQsIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICBpZiAoIXVwZGF0aW5nKSB7XG4gICAgICAgIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgbGVmdFZOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHZOb2RlUGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB2Tm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHcpIHtcbiAgICBpZiAodHlwZW9mIHcuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiICYmIGlzV2lkZ2V0KHcpKSB7XG4gICAgICAgIHcuZGVzdHJveShkb21Ob2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVvcmRlckNoaWxkcmVuKGRvbU5vZGUsIG1vdmVzKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBkb21Ob2RlLmNoaWxkTm9kZXNcbiAgICB2YXIga2V5TWFwID0ge31cbiAgICB2YXIgbm9kZVxuICAgIHZhciByZW1vdmVcbiAgICB2YXIgaW5zZXJ0XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vdmVzLnJlbW92ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVtb3ZlID0gbW92ZXMucmVtb3Zlc1tpXVxuICAgICAgICBub2RlID0gY2hpbGROb2Rlc1tyZW1vdmUuZnJvbV1cbiAgICAgICAgaWYgKHJlbW92ZS5rZXkpIHtcbiAgICAgICAgICAgIGtleU1hcFtyZW1vdmUua2V5XSA9IG5vZGVcbiAgICAgICAgfVxuICAgICAgICBkb21Ob2RlLnJlbW92ZUNoaWxkKG5vZGUpXG4gICAgfVxuXG4gICAgdmFyIGxlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtb3Zlcy5pbnNlcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGluc2VydCA9IG1vdmVzLmluc2VydHNbal1cbiAgICAgICAgbm9kZSA9IGtleU1hcFtpbnNlcnQua2V5XVxuICAgICAgICAvLyB0aGlzIGlzIHRoZSB3ZWlyZGVzdCBidWcgaSd2ZSBldmVyIHNlZW4gaW4gd2Via2l0XG4gICAgICAgIGRvbU5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIGluc2VydC50byA+PSBsZW5ndGgrKyA/IG51bGwgOiBjaGlsZE5vZGVzW2luc2VydC50b10pXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlUm9vdChvbGRSb290LCBuZXdSb290KSB7XG4gICAgaWYgKG9sZFJvb3QgJiYgbmV3Um9vdCAmJiBvbGRSb290ICE9PSBuZXdSb290ICYmIG9sZFJvb3QucGFyZW50Tm9kZSkge1xuICAgICAgICBvbGRSb290LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld1Jvb3QsIG9sZFJvb3QpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1Jvb3Q7XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuLi92bm9kZS92cGF0Y2guanNcIjo0NCxcIi4vYXBwbHktcHJvcGVydGllc1wiOjIzLFwiLi91cGRhdGUtd2lkZ2V0XCI6Mjh9XSwyNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKFwiZ2xvYmFsL2RvY3VtZW50XCIpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciByZW5kZXIgPSByZXF1aXJlKFwiLi9jcmVhdGUtZWxlbWVudFwiKVxudmFyIGRvbUluZGV4ID0gcmVxdWlyZShcIi4vZG9tLWluZGV4XCIpXG52YXIgcGF0Y2hPcCA9IHJlcXVpcmUoXCIuL3BhdGNoLW9wXCIpXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbmZ1bmN0aW9uIHBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKSB7XG4gICAgcmVuZGVyT3B0aW9ucyA9IHJlbmRlck9wdGlvbnMgfHwge31cbiAgICByZW5kZXJPcHRpb25zLnBhdGNoID0gcmVuZGVyT3B0aW9ucy5wYXRjaCAmJiByZW5kZXJPcHRpb25zLnBhdGNoICE9PSBwYXRjaFxuICAgICAgICA/IHJlbmRlck9wdGlvbnMucGF0Y2hcbiAgICAgICAgOiBwYXRjaFJlY3Vyc2l2ZVxuICAgIHJlbmRlck9wdGlvbnMucmVuZGVyID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIgfHwgcmVuZGVyXG5cbiAgICByZXR1cm4gcmVuZGVyT3B0aW9ucy5wYXRjaChyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucylcbn1cblxuZnVuY3Rpb24gcGF0Y2hSZWN1cnNpdmUocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IHBhdGNoSW5kaWNlcyhwYXRjaGVzKVxuXG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGRvbUluZGV4KHJvb3ROb2RlLCBwYXRjaGVzLmEsIGluZGljZXMpXG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSByb290Tm9kZS5vd25lckRvY3VtZW50XG5cbiAgICBpZiAoIXJlbmRlck9wdGlvbnMuZG9jdW1lbnQgJiYgb3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQpIHtcbiAgICAgICAgcmVuZGVyT3B0aW9ucy5kb2N1bWVudCA9IG93bmVyRG9jdW1lbnRcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGVJbmRleCA9IGluZGljZXNbaV1cbiAgICAgICAgcm9vdE5vZGUgPSBhcHBseVBhdGNoKHJvb3ROb2RlLFxuICAgICAgICAgICAgaW5kZXhbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHBhdGNoZXNbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2gocm9vdE5vZGUsIGRvbU5vZGUsIHBhdGNoTGlzdCwgcmVuZGVyT3B0aW9ucykge1xuICAgIGlmICghZG9tTm9kZSkge1xuICAgICAgICByZXR1cm4gcm9vdE5vZGVcbiAgICB9XG5cbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGlzQXJyYXkocGF0Y2hMaXN0KSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGNoTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0W2ldLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgICAgICByb290Tm9kZSA9IG5ld05vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSBwYXRjaE9wKHBhdGNoTGlzdCwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIHBhdGNoSW5kaWNlcyhwYXRjaGVzKSB7XG4gICAgdmFyIGluZGljZXMgPSBbXVxuXG4gICAgZm9yICh2YXIga2V5IGluIHBhdGNoZXMpIHtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJhXCIpIHtcbiAgICAgICAgICAgIGluZGljZXMucHVzaChOdW1iZXIoa2V5KSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmRpY2VzXG59XG5cbn0se1wiLi9jcmVhdGUtZWxlbWVudFwiOjI0LFwiLi9kb20taW5kZXhcIjoyNSxcIi4vcGF0Y2gtb3BcIjoyNixcImdsb2JhbC9kb2N1bWVudFwiOjcsXCJ4LWlzLWFycmF5XCI6MjF9XSwyODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gdXBkYXRlV2lkZ2V0XG5cbmZ1bmN0aW9uIHVwZGF0ZVdpZGdldChhLCBiKSB7XG4gICAgaWYgKGlzV2lkZ2V0KGEpICYmIGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmIChcIm5hbWVcIiBpbiBhICYmIFwibmFtZVwiIGluIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmlkID09PSBiLmlkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbml0ID09PSBiLmluaXRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxfV0sMjk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF0dHJpYnV0ZUhvb2s7XG5cbmZ1bmN0aW9uIEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBBdHRyaWJ1dGVIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3AsIHByZXYpIHtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdBdHRyaWJ1dGVIb29rJyAmJlxuICAgICAgICBwcmV2LnZhbHVlID09PSB0aGlzLnZhbHVlICYmXG4gICAgICAgIHByZXYubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyh0aGlzLm5hbWVzcGFjZSwgcHJvcCwgdGhpcy52YWx1ZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgbmV4dCkge1xuICAgIGlmIChuZXh0ICYmIG5leHQudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIG5leHQubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvbG9uUG9zaXRpb24gPSBwcm9wLmluZGV4T2YoJzonKTtcbiAgICB2YXIgbG9jYWxOYW1lID0gY29sb25Qb3NpdGlvbiA+IC0xID8gcHJvcC5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpIDogcHJvcDtcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBsb2NhbE5hbWUpO1xufTtcblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUudHlwZSA9ICdBdHRyaWJ1dGVIb29rJztcblxufSx7fV0sMzA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZTdG9yZSA9IHJlcXVpcmUoJ2V2LXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRXZIb29rO1xuXG5mdW5jdGlvbiBFdkhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRXZIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEV2SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5Fdkhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdGhpcy52YWx1ZTtcbn07XG5cbkV2SG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24obm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdW5kZWZpbmVkO1xufTtcblxufSx7XCJldi1zdG9yZVwiOjR9XSwzMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gU29mdFNldEhvb2s7XG5cbmZ1bmN0aW9uIFNvZnRTZXRIb29rKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cblNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG59LHt9XSwzMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgneC1pcy1hcnJheScpO1xuXG52YXIgVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS92bm9kZS5qcycpO1xudmFyIFZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvdnRleHQuanMnKTtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdm5vZGUnKTtcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdnRleHQnKTtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXdpZGdldCcpO1xudmFyIGlzSG9vayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZob29rJyk7XG52YXIgaXNWVGh1bmsgPSByZXF1aXJlKCcuLi92bm9kZS9pcy10aHVuaycpO1xuXG52YXIgcGFyc2VUYWcgPSByZXF1aXJlKCcuL3BhcnNlLXRhZy5qcycpO1xudmFyIHNvZnRTZXRIb29rID0gcmVxdWlyZSgnLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzJyk7XG52YXIgZXZIb29rID0gcmVxdWlyZSgnLi9ob29rcy9ldi1ob29rLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaDtcblxuZnVuY3Rpb24gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbikge1xuICAgIHZhciBjaGlsZE5vZGVzID0gW107XG4gICAgdmFyIHRhZywgcHJvcHMsIGtleSwgbmFtZXNwYWNlO1xuXG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcHMgPSB7fTtcbiAgICB9XG5cbiAgICBwcm9wcyA9IHByb3BzIHx8IHByb3BlcnRpZXMgfHwge307XG4gICAgdGFnID0gcGFyc2VUYWcodGFnTmFtZSwgcHJvcHMpO1xuXG4gICAgLy8gc3VwcG9ydCBrZXlzXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCdrZXknKSkge1xuICAgICAgICBrZXkgPSBwcm9wcy5rZXk7XG4gICAgICAgIHByb3BzLmtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0IG5hbWVzcGFjZVxuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnbmFtZXNwYWNlJykpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gcHJvcHMubmFtZXNwYWNlO1xuICAgICAgICBwcm9wcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gZml4IGN1cnNvciBidWdcbiAgICBpZiAodGFnID09PSAnSU5QVVQnICYmXG4gICAgICAgICFuYW1lc3BhY2UgJiZcbiAgICAgICAgcHJvcHMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiZcbiAgICAgICAgcHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAhaXNIb29rKHByb3BzLnZhbHVlKVxuICAgICkge1xuICAgICAgICBwcm9wcy52YWx1ZSA9IHNvZnRTZXRIb29rKHByb3BzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKTtcblxuICAgIGlmIChjaGlsZHJlbiAhPT0gdW5kZWZpbmVkICYmIGNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICAgIGFkZENoaWxkKGNoaWxkcmVuLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICB9XG5cblxuICAgIHJldHVybiBuZXcgVk5vZGUodGFnLCBwcm9wcywgY2hpbGROb2Rlcywga2V5LCBuYW1lc3BhY2UpO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZChjLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKSB7XG4gICAgaWYgKHR5cGVvZiBjID09PSAnc3RyaW5nJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KGMpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjID09PSAnbnVtYmVyJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KFN0cmluZyhjKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNDaGlsZChjKSkge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2goYyk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGMpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWRkQ2hpbGQoY1tpXSwgY2hpbGROb2RlcywgdGFnLCBwcm9wcyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgfHwgYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoe1xuICAgICAgICAgICAgZm9yZWlnbk9iamVjdDogYyxcbiAgICAgICAgICAgIHBhcmVudFZub2RlOiB7XG4gICAgICAgICAgICAgICAgdGFnTmFtZTogdGFnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUHJvcGVydGllcyhwcm9wcykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblxuICAgICAgICAgICAgaWYgKGlzSG9vayh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb3BOYW1lLnN1YnN0cigwLCAzKSA9PT0gJ2V2LScpIHtcbiAgICAgICAgICAgICAgICAvLyBhZGQgZXYtZm9vIHN1cHBvcnRcbiAgICAgICAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBldkhvb2sodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NoaWxkKHgpIHtcbiAgICByZXR1cm4gaXNWTm9kZSh4KSB8fCBpc1ZUZXh0KHgpIHx8IGlzV2lkZ2V0KHgpIHx8IGlzVlRodW5rKHgpO1xufVxuXG5mdW5jdGlvbiBpc0NoaWxkcmVuKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8IGlzQXJyYXkoeCkgfHwgaXNDaGlsZCh4KTtcbn1cblxuZnVuY3Rpb24gVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50KGRhdGEpIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7XG5cbiAgICBlcnIudHlwZSA9ICd2aXJ0dWFsLWh5cGVyc2NyaXB0LnVuZXhwZWN0ZWQudmlydHVhbC1lbGVtZW50JztcbiAgICBlcnIubWVzc2FnZSA9ICdVbmV4cGVjdGVkIHZpcnR1YWwgY2hpbGQgcGFzc2VkIHRvIGgoKS5cXG4nICtcbiAgICAgICAgJ0V4cGVjdGVkIGEgVk5vZGUgLyBWdGh1bmsgLyBWV2lkZ2V0IC8gc3RyaW5nIGJ1dDpcXG4nICtcbiAgICAgICAgJ2dvdDpcXG4nICtcbiAgICAgICAgZXJyb3JTdHJpbmcoZGF0YS5mb3JlaWduT2JqZWN0KSArXG4gICAgICAgICcuXFxuJyArXG4gICAgICAgICdUaGUgcGFyZW50IHZub2RlIGlzOlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLnBhcmVudFZub2RlKVxuICAgICAgICAnXFxuJyArXG4gICAgICAgICdTdWdnZXN0ZWQgZml4OiBjaGFuZ2UgeW91ciBgaCguLi4sIFsgLi4uIF0pYCBjYWxsc2l0ZS4nO1xuICAgIGVyci5mb3JlaWduT2JqZWN0ID0gZGF0YS5mb3JlaWduT2JqZWN0O1xuICAgIGVyci5wYXJlbnRWbm9kZSA9IGRhdGEucGFyZW50Vm5vZGU7XG5cbiAgICByZXR1cm4gZXJyO1xufVxuXG5mdW5jdGlvbiBlcnJvclN0cmluZyhvYmopIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAnICAgICcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhvYmopO1xuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy10aHVua1wiOjM3LFwiLi4vdm5vZGUvaXMtdmhvb2tcIjozOCxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92bm9kZS5qc1wiOjQzLFwiLi4vdm5vZGUvdnRleHQuanNcIjo0NSxcIi4vaG9va3MvZXYtaG9vay5qc1wiOjMwLFwiLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzXCI6MzEsXCIuL3BhcnNlLXRhZy5qc1wiOjMzLFwieC1pcy1hcnJheVwiOjIxfV0sMzM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3BsaXQgPSByZXF1aXJlKCdicm93c2VyLXNwbGl0Jyk7XG5cbnZhciBjbGFzc0lkU3BsaXQgPSAvKFtcXC4jXT9bYS16QS1aMC05XFx1MDA3Ri1cXHVGRkZGXzotXSspLztcbnZhciBub3RDbGFzc0lkID0gL15cXC58Iy87XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VUYWc7XG5cbmZ1bmN0aW9uIHBhcnNlVGFnKHRhZywgcHJvcHMpIHtcbiAgICBpZiAoIXRhZykge1xuICAgICAgICByZXR1cm4gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIG5vSWQgPSAhKHByb3BzLmhhc093blByb3BlcnR5KCdpZCcpKTtcblxuICAgIHZhciB0YWdQYXJ0cyA9IHNwbGl0KHRhZywgY2xhc3NJZFNwbGl0KTtcbiAgICB2YXIgdGFnTmFtZSA9IG51bGw7XG5cbiAgICBpZiAobm90Q2xhc3NJZC50ZXN0KHRhZ1BhcnRzWzFdKSkge1xuICAgICAgICB0YWdOYW1lID0gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIGNsYXNzZXMsIHBhcnQsIHR5cGUsIGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgdGFnUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydCA9IHRhZ1BhcnRzW2ldO1xuXG4gICAgICAgIGlmICghcGFydCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlID0gcGFydC5jaGFyQXQoMCk7XG5cbiAgICAgICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgICAgICB0YWdOYW1lID0gcGFydDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnLicpIHtcbiAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzIHx8IFtdO1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHBhcnQuc3Vic3RyaW5nKDEsIHBhcnQubGVuZ3RoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJyMnICYmIG5vSWQpIHtcbiAgICAgICAgICAgIHByb3BzLmlkID0gcGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgICAgaWYgKHByb3BzLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHByb3BzLmNsYXNzTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubmFtZXNwYWNlID8gdGFnTmFtZSA6IHRhZ05hbWUudG9VcHBlckNhc2UoKTtcbn1cblxufSx7XCJicm93c2VyLXNwbGl0XCI6M31dLDM0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIERFRkFVTFRfTkFNRVNQQUNFID0gbnVsbDtcbnZhciBFVl9OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwtZXZlbnRzJztcbnZhciBYTElOS19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG52YXIgWE1MX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnO1xuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkdUaW55MTIvYXR0cmlidXRlVGFibGUuaHRtbFxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2F0dGluZGV4Lmh0bWxcbnZhciBTVkdfUFJPUEVSVElFUyA9IHtcbiAgICAnYWJvdXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWNjZW50LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2N1bXVsYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FkZGl0aXZlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FsaWdubWVudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbHBoYWJldGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FtcGxpdHVkZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhcmFiaWMtZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhc2NlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXR0cmlidXRlTmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F6aW11dGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFuZHdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VGcmVxdWVuY3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZVByb2ZpbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZWxpbmUtc2hpZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmJveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiZWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiaWFzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhbGNNb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhcC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xhc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXBhdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcC1ydWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXBQYXRoVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItaW50ZXJwb2xhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItcHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U2NyaXB0VHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U3R5bGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N1cnNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RhdGF0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RlZmF1bHRBY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaWZmdXNlQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlyZWN0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rpc3BsYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGl2aXNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkb21pbmFudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRnZU1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRpdGFibGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWxldmF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuYWJsZS1iYWNrZ3JvdW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdldjpldmVudCc6IEVWX05BTUVTUEFDRSxcbiAgICAnZXZlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclJlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzSGlnaGxpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzYWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LWZhbWlseSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zaXplLWFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0cmV0Y2gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zdHlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXZhcmlhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC13ZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9ybWF0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zyb20nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZngnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoUmVmJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGFuZGxlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1hZHYteCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbWFnZS1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luaXRpYWxWaXNpYmlsaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ludGVyY2VwdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2sxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2syJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2szJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2s0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbE1hdHJpeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuZWxVbml0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5pbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5UG9pbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVNwbGluZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5VGltZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGFuZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZW5ndGhBZGp1c3QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGV0dGVyLXNwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGlnaHRpbmctY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGltaXRpbmdDb25lQW5nbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbG9jYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLWVuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItbWlkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1zdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJIZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyV2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFzayc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrQ29udGVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWF4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhQ2hhcmFjdGVyRW5jb2RpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDb250ZW50RW5jb2RpbmdzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhU2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYVRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24tbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbmV4dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcHJldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdudW1PY3RhdmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29ic2VydmVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wZXJhdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmllbnRhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmlnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmZsb3cnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGFub3NlLTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoTGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Db250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVyblRyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGhhc2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGxheWJhY2tPcmRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludGVyLWV2ZW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFonOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJlc2VydmVBbHBoYSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByaW1pdGl2ZVVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BhZ2F0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcm9wZXJ0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JhZGl1cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWZYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlbmRlcmluZy1pbnRlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0Q291bnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0RHVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRXh0ZW5zaW9ucyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZlYXR1cmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRm9udHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb3JtYXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc291cmNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc3RhcnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyb2xlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvdGF0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzZWVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NoYXBlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbG9wZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbmFwc2hvdFRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGVjdWxhckNvbnN0YW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyRXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3ByZWFkTWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0YXJ0T2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZERldmlhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtdic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGl0Y2hUaWxlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdG9wLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3Atb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaG9mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWNhcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWpvaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW1pdGVybGltaXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLXdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N1cmZhY2VTY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY0JlaGF2aW9yRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jTWFzdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNUb2xlcmFuY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZURlZmF1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3lzdGVtTGFuZ3VhZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFibGVWYWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWFuY2hvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWRlY29yYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0aW1lbGluZUJlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpdGxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0cmFuc2Zvcm1CZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGVvZic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5kZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtYmlkaSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlLXJhbmdlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaXRzLXBlci1lbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWFscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1oYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtaWRlb2dyYXBoaWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1tYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmFsdWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnNpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1hZHYteSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlld0JveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3VGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Zpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGhzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dvcmQtc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3cml0aW5nLW1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFjdHVhdGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFyY3JvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmhyZWYnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnJvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnNob3cnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnRpdGxlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazp0eXBlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bWw6YmFzZSc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDppZCc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDpsYW5nJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOnNwYWNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3onOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnem9vbUFuZFBhbic6IERFRkFVTFRfTkFNRVNQQUNFXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZTtcblxuZnVuY3Rpb24gU1ZHQXR0cmlidXRlTmFtZXNwYWNlKHZhbHVlKSB7XG4gIGlmIChTVkdfUFJPUEVSVElFUy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU1ZHX1BST1BFUlRJRVNbdmFsdWVdO1xuICB9XG59XG5cbn0se31dLDM1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBoID0gcmVxdWlyZSgnLi9pbmRleC5qcycpO1xuXG5cbnZhciBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UgPSByZXF1aXJlKCcuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlJyk7XG52YXIgYXR0cmlidXRlSG9vayA9IHJlcXVpcmUoJy4vaG9va3MvYXR0cmlidXRlLWhvb2snKTtcblxudmFyIFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN2ZztcblxuZnVuY3Rpb24gc3ZnKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcGVydGllcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IHt9O1xuXG4gICAgLy8gc2V0IG5hbWVzcGFjZSBmb3Igc3ZnXG4gICAgcHJvcGVydGllcy5uYW1lc3BhY2UgPSBTVkdfTkFNRVNQQUNFO1xuXG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBwcm9wZXJ0aWVzLmF0dHJpYnV0ZXMgfHwgKHByb3BlcnRpZXMuYXR0cmlidXRlcyA9IHt9KTtcblxuICAgIGZvciAodmFyIGtleSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmICghcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBTVkdBdHRyaWJ1dGVOYW1lc3BhY2Uoa2V5KTtcblxuICAgICAgICBpZiAobmFtZXNwYWNlID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGEgc3ZnIGF0dHJpYnV0ZVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdmFsdWUgPSBwcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmFtZXNwYWNlICE9PSBudWxsKSB7IC8vIG5hbWVzcGFjZWQgYXR0cmlidXRlXG4gICAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSBhdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzW2tleV0gPSB2YWx1ZVxuICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbik7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KTtcbn1cblxufSx7XCIuL2hvb2tzL2F0dHJpYnV0ZS1ob29rXCI6MjksXCIuL2luZGV4LmpzXCI6MzIsXCIuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlXCI6MzQsXCJ4LWlzLWFycmF5XCI6MjF9XSwzNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuL2lzLXZ0ZXh0XCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcblxubW9kdWxlLmV4cG9ydHMgPSBoYW5kbGVUaHVua1xuXG5mdW5jdGlvbiBoYW5kbGVUaHVuayhhLCBiKSB7XG4gICAgdmFyIHJlbmRlcmVkQSA9IGFcbiAgICB2YXIgcmVuZGVyZWRCID0gYlxuXG4gICAgaWYgKGlzVGh1bmsoYikpIHtcbiAgICAgICAgcmVuZGVyZWRCID0gcmVuZGVyVGh1bmsoYiwgYSlcbiAgICB9XG5cbiAgICBpZiAoaXNUaHVuayhhKSkge1xuICAgICAgICByZW5kZXJlZEEgPSByZW5kZXJUaHVuayhhLCBudWxsKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGE6IHJlbmRlcmVkQSxcbiAgICAgICAgYjogcmVuZGVyZWRCXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJUaHVuayh0aHVuaywgcHJldmlvdXMpIHtcbiAgICB2YXIgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlXG5cbiAgICBpZiAoIXJlbmRlcmVkVGh1bmspIHtcbiAgICAgICAgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlID0gdGh1bmsucmVuZGVyKHByZXZpb3VzKVxuICAgIH1cblxuICAgIGlmICghKGlzVk5vZGUocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzVlRleHQocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzV2lkZ2V0KHJlbmRlcmVkVGh1bmspKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aHVuayBkaWQgbm90IHJldHVybiBhIHZhbGlkIG5vZGVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlcmVkVGh1bmtcbn1cblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXZ0ZXh0XCI6NDAsXCIuL2lzLXdpZGdldFwiOjQxfV0sMzc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1RodW5rXHJcblxyXG5mdW5jdGlvbiBpc1RodW5rKHQpIHtcclxuICAgIHJldHVybiB0ICYmIHQudHlwZSA9PT0gXCJUaHVua1wiXHJcbn1cclxuXG59LHt9XSwzODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzSG9va1xuXG5mdW5jdGlvbiBpc0hvb2soaG9vaykge1xuICAgIHJldHVybiBob29rICYmXG4gICAgICAodHlwZW9mIGhvb2suaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwiaG9va1wiKSB8fFxuICAgICAgIHR5cGVvZiBob29rLnVuaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwidW5ob29rXCIpKVxufVxuXG59LHt9XSwzOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxOb2RlXG5cbmZ1bmN0aW9uIGlzVmlydHVhbE5vZGUoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsTm9kZVwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaXNWaXJ0dWFsVGV4dFxuXG5mdW5jdGlvbiBpc1ZpcnR1YWxUZXh0KHgpIHtcbiAgICByZXR1cm4geCAmJiB4LnR5cGUgPT09IFwiVmlydHVhbFRleHRcIiAmJiB4LnZlcnNpb24gPT09IHZlcnNpb25cbn1cblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNXaWRnZXRcblxuZnVuY3Rpb24gaXNXaWRnZXQodykge1xuICAgIHJldHVybiB3ICYmIHcudHlwZSA9PT0gXCJXaWRnZXRcIlxufVxuXG59LHt9XSw0MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IFwiMlwiXG5cbn0se31dLDQzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi9pcy12bm9kZVwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4vaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuL2lzLXRodW5rXCIpXG52YXIgaXNWSG9vayA9IHJlcXVpcmUoXCIuL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbE5vZGVcblxudmFyIG5vUHJvcGVydGllcyA9IHt9XG52YXIgbm9DaGlsZHJlbiA9IFtdXG5cbmZ1bmN0aW9uIFZpcnR1YWxOb2RlKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuLCBrZXksIG5hbWVzcGFjZSkge1xuICAgIHRoaXMudGFnTmFtZSA9IHRhZ05hbWVcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IG5vUHJvcGVydGllc1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBub0NoaWxkcmVuXG4gICAgdGhpcy5rZXkgPSBrZXkgIT0gbnVsbCA/IFN0cmluZyhrZXkpIDogdW5kZWZpbmVkXG4gICAgdGhpcy5uYW1lc3BhY2UgPSAodHlwZW9mIG5hbWVzcGFjZSA9PT0gXCJzdHJpbmdcIikgPyBuYW1lc3BhY2UgOiBudWxsXG5cbiAgICB2YXIgY291bnQgPSAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB8fCAwXG4gICAgdmFyIGRlc2NlbmRhbnRzID0gMFxuICAgIHZhciBoYXNXaWRnZXRzID0gZmFsc2VcbiAgICB2YXIgaGFzVGh1bmtzID0gZmFsc2VcbiAgICB2YXIgZGVzY2VuZGFudEhvb2tzID0gZmFsc2VcbiAgICB2YXIgaG9va3NcblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW3Byb3BOYW1lXVxuICAgICAgICAgICAgaWYgKGlzVkhvb2socHJvcGVydHkpICYmIHByb3BlcnR5LnVuaG9vaykge1xuICAgICAgICAgICAgICAgIGlmICghaG9va3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MgPSB7fVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGhvb2tzW3Byb3BOYW1lXSA9IHByb3BlcnR5XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpKSB7XG4gICAgICAgICAgICBkZXNjZW5kYW50cyArPSBjaGlsZC5jb3VudCB8fCAwXG5cbiAgICAgICAgICAgIGlmICghaGFzV2lkZ2V0cyAmJiBjaGlsZC5oYXNXaWRnZXRzKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNUaHVua3MgJiYgY2hpbGQuaGFzVGh1bmtzKSB7XG4gICAgICAgICAgICAgICAgaGFzVGh1bmtzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWRlc2NlbmRhbnRIb29rcyAmJiAoY2hpbGQuaG9va3MgfHwgY2hpbGQuZGVzY2VuZGFudEhvb2tzKSkge1xuICAgICAgICAgICAgICAgIGRlc2NlbmRhbnRIb29rcyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzV2lkZ2V0cyAmJiBpc1dpZGdldChjaGlsZCkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGQuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzVGh1bmtzICYmIGlzVGh1bmsoY2hpbGQpKSB7XG4gICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudCA9IGNvdW50ICsgZGVzY2VuZGFudHNcbiAgICB0aGlzLmhhc1dpZGdldHMgPSBoYXNXaWRnZXRzXG4gICAgdGhpcy5oYXNUaHVua3MgPSBoYXNUaHVua3NcbiAgICB0aGlzLmhvb2tzID0gaG9va3NcbiAgICB0aGlzLmRlc2NlbmRhbnRIb29rcyA9IGRlc2NlbmRhbnRIb29rc1xufVxuXG5WaXJ0dWFsTm9kZS5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxOb2RlLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsTm9kZVwiXG5cbn0se1wiLi9pcy10aHVua1wiOjM3LFwiLi9pcy12aG9va1wiOjM4LFwiLi9pcy12bm9kZVwiOjM5LFwiLi9pcy13aWRnZXRcIjo0MSxcIi4vdmVyc2lvblwiOjQyfV0sNDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cblZpcnR1YWxQYXRjaC5OT05FID0gMFxuVmlydHVhbFBhdGNoLlZURVhUID0gMVxuVmlydHVhbFBhdGNoLlZOT0RFID0gMlxuVmlydHVhbFBhdGNoLldJREdFVCA9IDNcblZpcnR1YWxQYXRjaC5QUk9QUyA9IDRcblZpcnR1YWxQYXRjaC5PUkRFUiA9IDVcblZpcnR1YWxQYXRjaC5JTlNFUlQgPSA2XG5WaXJ0dWFsUGF0Y2guUkVNT1ZFID0gN1xuVmlydHVhbFBhdGNoLlRIVU5LID0gOFxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxQYXRjaFxuXG5mdW5jdGlvbiBWaXJ0dWFsUGF0Y2godHlwZSwgdk5vZGUsIHBhdGNoKSB7XG4gICAgdGhpcy50eXBlID0gTnVtYmVyKHR5cGUpXG4gICAgdGhpcy52Tm9kZSA9IHZOb2RlXG4gICAgdGhpcy5wYXRjaCA9IHBhdGNoXG59XG5cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFBhdGNoXCJcblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIFZpcnR1YWxUZXh0KHRleHQpIHtcbiAgICB0aGlzLnRleHQgPSBTdHJpbmcodGV4dClcbn1cblxuVmlydHVhbFRleHQucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFRleHRcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZShcImlzLW9iamVjdFwiKVxudmFyIGlzSG9vayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12aG9va1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZQcm9wc1xuXG5mdW5jdGlvbiBkaWZmUHJvcHMoYSwgYikge1xuICAgIHZhciBkaWZmXG5cbiAgICBmb3IgKHZhciBhS2V5IGluIGEpIHtcbiAgICAgICAgaWYgKCEoYUtleSBpbiBiKSkge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhVmFsdWUgPSBhW2FLZXldXG4gICAgICAgIHZhciBiVmFsdWUgPSBiW2FLZXldXG5cbiAgICAgICAgaWYgKGFWYWx1ZSA9PT0gYlZhbHVlKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGFWYWx1ZSkgJiYgaXNPYmplY3QoYlZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZShiVmFsdWUpICE9PSBnZXRQcm90b3R5cGUoYVZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hvb2soYlZhbHVlKSkge1xuICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBvYmplY3REaWZmID0gZGlmZlByb3BzKGFWYWx1ZSwgYlZhbHVlKVxuICAgICAgICAgICAgICAgIGlmIChvYmplY3REaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBvYmplY3REaWZmXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGJLZXkgaW4gYikge1xuICAgICAgICBpZiAoIShiS2V5IGluIGEpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZltiS2V5XSA9IGJbYktleV1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaWZmXG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgfSBlbHNlIGlmICh2YWx1ZS5fX3Byb3RvX18pIHtcbiAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gIH0gZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiaXMtb2JqZWN0XCI6MjB9XSw0NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciBWUGF0Y2ggPSByZXF1aXJlKFwiLi4vdm5vZGUvdnBhdGNoXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZVwiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXRodW5rXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rXCIpXG5cbnZhciBkaWZmUHJvcHMgPSByZXF1aXJlKFwiLi9kaWZmLXByb3BzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG5mdW5jdGlvbiBkaWZmKGEsIGIpIHtcbiAgICB2YXIgcGF0Y2ggPSB7IGE6IGEgfVxuICAgIHdhbGsoYSwgYiwgcGF0Y2gsIDApXG4gICAgcmV0dXJuIHBhdGNoXG59XG5cbmZ1bmN0aW9uIHdhbGsoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgdmFyIGFwcGx5Q2xlYXIgPSBmYWxzZVxuXG4gICAgaWYgKGlzVGh1bmsoYSkgfHwgaXNUaHVuayhiKSkge1xuICAgICAgICB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KVxuICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG5cbiAgICAgICAgLy8gSWYgYSBpcyBhIHdpZGdldCB3ZSB3aWxsIGFkZCBhIHJlbW92ZSBwYXRjaCBmb3IgaXRcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFueSBjaGlsZCB3aWRnZXRzL2hvb2tzIG11c3QgYmUgZGVzdHJveWVkLlxuICAgICAgICAvLyBUaGlzIHByZXZlbnRzIGFkZGluZyB0d28gcmVtb3ZlIHBhdGNoZXMgZm9yIGEgd2lkZ2V0LlxuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICAgICAgICAgIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIGEsIGIpKVxuICAgIH0gZWxzZSBpZiAoaXNWTm9kZShiKSkge1xuICAgICAgICBpZiAoaXNWTm9kZShhKSkge1xuICAgICAgICAgICAgaWYgKGEudGFnTmFtZSA9PT0gYi50YWdOYW1lICYmXG4gICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgPT09IGIubmFtZXNwYWNlICYmXG4gICAgICAgICAgICAgICAgYS5rZXkgPT09IGIua2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzUGF0Y2ggPSBkaWZmUHJvcHMoYS5wcm9wZXJ0aWVzLCBiLnByb3BlcnRpZXMpXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzUGF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlBST1BTLCBhLCBwcm9wc1BhdGNoKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBkaWZmQ2hpbGRyZW4oYSwgYiwgcGF0Y2gsIGFwcGx5LCBpbmRleClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVk5PREUsIGEsIGIpKVxuICAgICAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZUZXh0KGIpKSB7XG4gICAgICAgIGlmICghaXNWVGV4dChhKSkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChhLnRleHQgIT09IGIudGV4dCkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpZGdldChiKSkge1xuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guV0lER0VULCBhLCBiKSlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwbHlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHlDbGVhcikge1xuICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KSB7XG4gICAgdmFyIGFDaGlsZHJlbiA9IGEuY2hpbGRyZW5cbiAgICB2YXIgb3JkZXJlZFNldCA9IHJlb3JkZXIoYUNoaWxkcmVuLCBiLmNoaWxkcmVuKVxuICAgIHZhciBiQ2hpbGRyZW4gPSBvcmRlcmVkU2V0LmNoaWxkcmVuXG5cbiAgICB2YXIgYUxlbiA9IGFDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgYkxlbiA9IGJDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgbGVuID0gYUxlbiA+IGJMZW4gPyBhTGVuIDogYkxlblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgbGVmdE5vZGUgPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIHJpZ2h0Tm9kZSA9IGJDaGlsZHJlbltpXVxuICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgaWYgKCFsZWZ0Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHJpZ2h0Tm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIEV4Y2VzcyBub2RlcyBpbiBiIG5lZWQgdG8gYmUgYWRkZWRcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5JTlNFUlQsIG51bGwsIHJpZ2h0Tm9kZSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3YWxrKGxlZnROb2RlLCByaWdodE5vZGUsIHBhdGNoLCBpbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1ZOb2RlKGxlZnROb2RlKSAmJiBsZWZ0Tm9kZS5jb3VudCkge1xuICAgICAgICAgICAgaW5kZXggKz0gbGVmdE5vZGUuY291bnRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcmRlcmVkU2V0Lm1vdmVzKSB7XG4gICAgICAgIC8vIFJlb3JkZXIgbm9kZXMgbGFzdFxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFxuICAgICAgICAgICAgVlBhdGNoLk9SREVSLFxuICAgICAgICAgICAgYSxcbiAgICAgICAgICAgIG9yZGVyZWRTZXQubW92ZXNcbiAgICAgICAgKSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlcbn1cblxuZnVuY3Rpb24gY2xlYXJTdGF0ZSh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIGEgc2luZ2xlIHdhbGssIG5vdCB0d29cbiAgICB1bmhvb2sodk5vZGUsIHBhdGNoLCBpbmRleClcbiAgICBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxufVxuXG4vLyBQYXRjaCByZWNvcmRzIGZvciBhbGwgZGVzdHJveWVkIHdpZGdldHMgbXVzdCBiZSBhZGRlZCBiZWNhdXNlIHdlIG5lZWRcbi8vIGEgRE9NIG5vZGUgcmVmZXJlbmNlIGZvciB0aGUgZGVzdHJveSBmdW5jdGlvblxuZnVuY3Rpb24gZGVzdHJveVdpZGdldHModk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChpc1dpZGdldCh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2Tm9kZS5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGVuZFBhdGNoKFxuICAgICAgICAgICAgICAgIHBhdGNoW2luZGV4XSxcbiAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIHZOb2RlLCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKHZOb2RlKSAmJiAodk5vZGUuaGFzV2lkZ2V0cyB8fCB2Tm9kZS5oYXNUaHVua3MpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgZGVzdHJveVdpZGdldHMoY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgaW5kZXggKz0gY2hpbGQuY291bnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG4vLyBDcmVhdGUgYSBzdWItcGF0Y2ggZm9yIHRodW5rc1xuZnVuY3Rpb24gdGh1bmtzKGEsIGIsIHBhdGNoLCBpbmRleCkge1xuICAgIHZhciBub2RlcyA9IGhhbmRsZVRodW5rKGEsIGIpXG4gICAgdmFyIHRodW5rUGF0Y2ggPSBkaWZmKG5vZGVzLmEsIG5vZGVzLmIpXG4gICAgaWYgKGhhc1BhdGNoZXModGh1bmtQYXRjaCkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gbmV3IFZQYXRjaChWUGF0Y2guVEhVTkssIG51bGwsIHRodW5rUGF0Y2gpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBoYXNQYXRjaGVzKHBhdGNoKSB7XG4gICAgZm9yICh2YXIgaW5kZXggaW4gcGF0Y2gpIHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBcImFcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG4vLyBFeGVjdXRlIGhvb2tzIHdoZW4gdHdvIG5vZGVzIGFyZSBpZGVudGljYWxcbmZ1bmN0aW9uIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzVk5vZGUodk5vZGUpKSB7XG4gICAgICAgIGlmICh2Tm9kZS5ob29rcykge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICAgICAgICAgIFZQYXRjaC5QUk9QUyxcbiAgICAgICAgICAgICAgICAgICAgdk5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZEtleXModk5vZGUuaG9va3MpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZOb2RlLmRlc2NlbmRhbnRIb29rcyB8fCB2Tm9kZS5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgICAgICAgICB1bmhvb2soY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSAmJiBjaGlsZC5jb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiB1bmRlZmluZWRLZXlzKG9iaikge1xuICAgIHZhciByZXN1bHQgPSB7fVxuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICByZXN1bHRba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cblxuLy8gTGlzdCBkaWZmLCBuYWl2ZSBsZWZ0IHRvIHJpZ2h0IHJlb3JkZXJpbmdcbmZ1bmN0aW9uIHJlb3JkZXIoYUNoaWxkcmVuLCBiQ2hpbGRyZW4pIHtcbiAgICAvLyBPKE0pIHRpbWUsIE8oTSkgbWVtb3J5XG4gICAgdmFyIGJDaGlsZEluZGV4ID0ga2V5SW5kZXgoYkNoaWxkcmVuKVxuICAgIHZhciBiS2V5cyA9IGJDaGlsZEluZGV4LmtleXNcbiAgICB2YXIgYkZyZWUgPSBiQ2hpbGRJbmRleC5mcmVlXG5cbiAgICBpZiAoYkZyZWUubGVuZ3RoID09PSBiQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogYkNoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE8oTikgdGltZSwgTyhOKSBtZW1vcnlcbiAgICB2YXIgYUNoaWxkSW5kZXggPSBrZXlJbmRleChhQ2hpbGRyZW4pXG4gICAgdmFyIGFLZXlzID0gYUNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBhRnJlZSA9IGFDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChhRnJlZS5sZW5ndGggPT09IGFDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhNQVgoTiwgTSkpIG1lbW9yeVxuICAgIHZhciBuZXdDaGlsZHJlbiA9IFtdXG5cbiAgICB2YXIgZnJlZUluZGV4ID0gMFxuICAgIHZhciBmcmVlQ291bnQgPSBiRnJlZS5sZW5ndGhcbiAgICB2YXIgZGVsZXRlZEl0ZW1zID0gMFxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGEgYW5kIG1hdGNoIGEgbm9kZSBpbiBiXG4gICAgLy8gTyhOKSB0aW1lLFxuICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IGFDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYUl0ZW0gPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIGl0ZW1JbmRleFxuXG4gICAgICAgIGlmIChhSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmIChiS2V5cy5oYXNPd25Qcm9wZXJ0eShhSXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gTWF0Y2ggdXAgdGhlIG9sZCBrZXlzXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYktleXNbYUl0ZW0ua2V5XVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG9sZCBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGkgLSBkZWxldGVkSXRlbXMrK1xuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE1hdGNoIHRoZSBpdGVtIGluIGEgd2l0aCB0aGUgbmV4dCBmcmVlIGl0ZW0gaW4gYlxuICAgICAgICAgICAgaWYgKGZyZWVJbmRleCA8IGZyZWVDb3VudCkge1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGJGcmVlW2ZyZWVJbmRleCsrXVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBmcmVlIGl0ZW1zIGluIGIgdG8gbWF0Y2ggd2l0aFxuICAgICAgICAgICAgICAgIC8vIHRoZSBmcmVlIGl0ZW1zIGluIGEsIHNvIHRoZSBleHRyYSBmcmVlIG5vZGVzXG4gICAgICAgICAgICAgICAgLy8gYXJlIGRlbGV0ZWQuXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhc3RGcmVlSW5kZXggPSBmcmVlSW5kZXggPj0gYkZyZWUubGVuZ3RoID9cbiAgICAgICAgYkNoaWxkcmVuLmxlbmd0aCA6XG4gICAgICAgIGJGcmVlW2ZyZWVJbmRleF1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBiIGFuZCBhcHBlbmQgYW55IG5ldyBrZXlzXG4gICAgLy8gTyhNKSB0aW1lXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBiQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5ld0l0ZW0gPSBiQ2hpbGRyZW5bal1cblxuICAgICAgICBpZiAobmV3SXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmICghYUtleXMuaGFzT3duUHJvcGVydHkobmV3SXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gQWRkIGFueSBuZXcga2V5ZWQgaXRlbXNcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYWRkaW5nIG5ldyBpdGVtcyB0byB0aGUgZW5kIGFuZCB0aGVuIHNvcnRpbmcgdGhlbVxuICAgICAgICAgICAgICAgIC8vIGluIHBsYWNlLiBJbiBmdXR1cmUgd2Ugc2hvdWxkIGluc2VydCBuZXcgaXRlbXMgaW4gcGxhY2UuXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGogPj0gbGFzdEZyZWVJbmRleCkge1xuICAgICAgICAgICAgLy8gQWRkIGFueSBsZWZ0b3ZlciBub24ta2V5ZWQgaXRlbXNcbiAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobmV3SXRlbSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaW11bGF0ZSA9IG5ld0NoaWxkcmVuLnNsaWNlKClcbiAgICB2YXIgc2ltdWxhdGVJbmRleCA9IDBcbiAgICB2YXIgcmVtb3ZlcyA9IFtdXG4gICAgdmFyIGluc2VydHMgPSBbXVxuICAgIHZhciBzaW11bGF0ZUl0ZW1cblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYkNoaWxkcmVuLmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHdhbnRlZEl0ZW0gPSBiQ2hpbGRyZW5ba11cbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cblxuICAgICAgICAvLyByZW1vdmUgaXRlbXNcbiAgICAgICAgd2hpbGUgKHNpbXVsYXRlSXRlbSA9PT0gbnVsbCAmJiBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIG51bGwpKVxuICAgICAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAvLyBpZiB3ZSBuZWVkIGEga2V5IGluIHRoaXMgcG9zaXRpb24uLi5cbiAgICAgICAgICAgIGlmICh3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgIGlmIChzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBhbiBpbnNlcnQgZG9lc24ndCBwdXQgdGhpcyBrZXkgaW4gcGxhY2UsIGl0IG5lZWRzIHRvIG1vdmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJLZXlzW3NpbXVsYXRlSXRlbS5rZXldICE9PSBrICsgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHJlbW92ZSBkaWRuJ3QgcHV0IHRoZSB3YW50ZWQgaXRlbSBpbiBwbGFjZSwgd2UgbmVlZCB0byBpbnNlcnQgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpdGVtcyBhcmUgbWF0Y2hpbmcsIHNvIHNraXAgYWhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBrKytcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGEga2V5IGluIHNpbXVsYXRlIGhhcyBubyBtYXRjaGluZyB3YW50ZWQga2V5LCByZW1vdmUgaXRcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaW11bGF0ZUluZGV4KytcbiAgICAgICAgICAgIGsrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGFsbCB0aGUgcmVtYWluaW5nIG5vZGVzIGZyb20gc2ltdWxhdGVcbiAgICB3aGlsZShzaW11bGF0ZUluZGV4IDwgc2ltdWxhdGUubGVuZ3RoKSB7XG4gICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBtb3ZlcyB3ZSBoYXZlIGFyZSBkZWxldGVzIHRoZW4gd2UgY2FuIGp1c3RcbiAgICAvLyBsZXQgdGhlIGRlbGV0ZSBwYXRjaCByZW1vdmUgdGhlc2UgaXRlbXMuXG4gICAgaWYgKHJlbW92ZXMubGVuZ3RoID09PSBkZWxldGVkSXRlbXMgJiYgIWluc2VydHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2hpbGRyZW46IG5ld0NoaWxkcmVuLFxuICAgICAgICBtb3Zlczoge1xuICAgICAgICAgICAgcmVtb3ZlczogcmVtb3ZlcyxcbiAgICAgICAgICAgIGluc2VydHM6IGluc2VydHNcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlKGFyciwgaW5kZXgsIGtleSkge1xuICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBpbmRleCxcbiAgICAgICAga2V5OiBrZXlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGtleUluZGV4KGNoaWxkcmVuKSB7XG4gICAgdmFyIGtleXMgPSB7fVxuICAgIHZhciBmcmVlID0gW11cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG5cbiAgICAgICAgaWYgKGNoaWxkLmtleSkge1xuICAgICAgICAgICAga2V5c1tjaGlsZC5rZXldID0gaVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJlZS5wdXNoKGkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXlzOiBrZXlzLCAgICAgLy8gQSBoYXNoIG9mIGtleSBuYW1lIHRvIGluZGV4XG4gICAgICAgIGZyZWU6IGZyZWUgICAgICAvLyBBbiBhcnJheSBvZiB1bmtleWVkIGl0ZW0gaW5kaWNlc1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYXBwZW5kUGF0Y2goYXBwbHksIHBhdGNoKSB7XG4gICAgaWYgKGFwcGx5KSB7XG4gICAgICAgIGlmIChpc0FycmF5KGFwcGx5KSkge1xuICAgICAgICAgICAgYXBwbHkucHVzaChwYXRjaClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gW2FwcGx5LCBwYXRjaF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcHBseVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXRjaFxuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIjozNixcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12bm9kZVwiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHRcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldFwiOjQxLFwiLi4vdm5vZGUvdnBhdGNoXCI6NDQsXCIuL2RpZmYtcHJvcHNcIjo0NixcIngtaXMtYXJyYXlcIjoyMX1dLDQ4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbnZhciB2ZG9tID0ge1xuICBWTm9kZTogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdm5vZGUnKSxcbiAgVlRleHQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0JyksXG4gIGRpZmY6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2RpZmYnKSxcbiAgcGF0Y2g6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3BhdGNoJyksXG4gIGNyZWF0ZUVsZW1lbnQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2NyZWF0ZS1lbGVtZW50JyksXG4gIHN2ZzogcmVxdWlyZShcInZpcnR1YWwtZG9tL3ZpcnR1YWwtaHlwZXJzY3JpcHQvc3ZnXCIpLFxufTtcblxuZ2xvYmFsLlZpcnR1YWxEb20gPSB2ZG9tO1xubW9kdWxlLmV4cG9ydHMgPSB2ZG9tO1xuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1widmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnRcIjoxLFwidmlydHVhbC1kb20vZGlmZlwiOjIsXCJ2aXJ0dWFsLWRvbS9wYXRjaFwiOjIyLFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIjozNSxcInZpcnR1YWwtZG9tL3Zub2RlL3Zub2RlXCI6NDMsXCJ2aXJ0dWFsLWRvbS92bm9kZS92dGV4dFwiOjQ1fV19LHt9LFs0OF0pKDQ4KVxufSk7XG4iLCJmdW5jdGlvbiBWZG9tVGh1bmsoZm4sIGFyZ3MsIGtleSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBWZG9tVGh1bmspKSB7XG4gICAgICAgIHJldHVybiBuZXcgVmRvbVRodW5rKGZuLCBhcmdzLCBrZXkpO1xuICAgIH1cblxuICAgIGlmIChrZXkpIHtcbiAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIH1cblxuICAgIHRoaXMuZm4gPSBmbjtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xufTtcblxuam9vX2dsb2JhbF9vYmplY3QuVmRvbVRodW5rID0gVmRvbVRodW5rO1xuXG5WZG9tVGh1bmsucHJvdG90eXBlLnR5cGUgPSAnVGh1bmsnO1xuVmRvbVRodW5rLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAocHJldikge1xuICBpZiAocHJldiAmJiB0aGlzLmFyZ3MgPT09IHByZXYuYXJncyAmJiB0aGlzLmZuID09PSBwcmV2LmZuKSB7XG4gICAgcmV0dXJuIHByZXYudm5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5mbih0aGlzLmFyZ3MpO1xufTtcblxuXG4iLCIvLyBVc2VkIGJ5IHdvcmthcm91bmQgZm9yIGlucHV0IGVsZW1lbnQgdmFsdWUgZmllbGRcbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaG9va3Mvc29mdC1zZXQtaG9vay5qc1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vayA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICBpZiAobm9kZVtwcm9wZXJ0eU5hbWVdICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGVbcHJvcGVydHlOYW1lXSA9IHRoaXMudmFsdWU7XG4gICAgfVxufTtcblxuXG52YXIgR2VuZXJpY0hvb2sgPSBmdW5jdGlvbiAoaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR2VuZXJpY0hvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0hvb2soaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdCA9IGluaXQ7XG4gICAgdGhpcy51cGRhdGUgPSB1cGRhdGU7XG4gICAgdGhpcy5kZXN0cm95ID0gZGVzdHJveTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5leHRyYSA9IGV4dHJhO1xufTtcblxudmFyIGhvb2tfc3RhdGVfa2V5ID0gXCJ2ZG9tX2hvb2tfc3RhdGVfa2V5XCI7XG5cbmlmICh0aGlzLlN5bWJvbCkge1xuICAgIGhvb2tfc3RhdGVfa2V5ID0gU3ltYm9sKGhvb2tfc3RhdGVfa2V5KTtcbn1cblxuR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHN0YXRlKSB7XG4gICAgaWYgKCFub2RlW2hvb2tfc3RhdGVfa2V5XSkge1xuICAgICAgICBub2RlW2hvb2tfc3RhdGVfa2V5XSA9IHt9O1xuICAgIH1cbiAgICBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV0gPSBzdGF0ZTtcbn1cblxuR2VuZXJpY0hvb2sucmVhZF9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIHJldHVybiBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIGRlbGV0ZSBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24gPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICByZXR1cm4gZnJvbSBpbnN0YW5jZW9mIHRoaXMgJiYgdG8gaW5zdGFuY2VvZiB0aGlzICYmIGZyb20uaWQgPT09IHRvLmlkICYmIHRvLnVwZGF0ZTtcbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBwcmV2KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24ocHJldiwgdGhpcykpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHN0YXRlID0gdGhpcy51cGRhdGUoc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuaW5pdChub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUobm9kZSwgcHJvcE5hbWUsIHN0YXRlKTtcbiAgICB9XG59O1xuXG5HZW5lcmljSG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBuZXh0KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24odGhpcywgbmV4dCkpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZywgdGhlIGltcGVuZGluZyBbaG9va10gd2lsbCBoYW5kbGUgdGhlIGNhbGwgdG8gdXBkYXRlLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IEdlbmVyaWNIb29rLnJlYWRfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3koc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay5yZW1vdmVfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgIH1cbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LkdlbmVyaWNIb29rID0gR2VuZXJpY0hvb2s7XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQodikge1xuICB2ID0gdiAtICgodiA+Pj4gMSkgJiAweDU1NTU1NTU1KTtcbiAgdiA9ICh2ICYgMHgzMzMzMzMzMykgKyAoKHYgPj4+IDIpICYgMHgzMzMzMzMzMyk7XG4gIHJldHVybiAoKHYgKyAodiA+Pj4gNCkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+Pj4gMjQ7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvcyh4KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biBjb25zdFxuZnVuY3Rpb24gQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4oeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpIHtcbiAgdmFyIG4gPSAzMjtcbiAgdmFyIHk7XG4gIHkgPSB4ID4+MTY7IGlmICh5ICE9IDApIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0geCA+PiA4OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IHggPj4gNDsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDI7IGlmICh5ICE9IDApIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0geCA+PiAxOyBpZiAoeSAhPSAwKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0geDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2NseiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2Nseih4KSB7XG4gIHZhciBuID0gNjQ7XG4gIHZhciB5O1xuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0zMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDEpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIGNhbWxfaW50NjRfdG9faW50MzIoeCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KSB7XG4gIGlmICh4ID09PSAwKSB7IHJldHVybiAzMjsgfVxuICB2YXIgbiA9IDE7XG4gIGlmICggKHggJiAweDAwMDBGRkZGKSA9PT0gMCkgeyBuID0gbiArIDE2OyB4ID0geCA+PiAxNjsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDBGRikgPT09IDApIHsgbiA9IG4gKyAgODsgeCA9IHggPj4gIDg7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMEYpID09PSAwKSB7IG4gPSBuICsgIDQ7IHggPSB4ID4+ICA0OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDAzKSA9PT0gMCkgeyBuID0gbiArICAyOyB4ID0geCA+PiAgMjsgfVxuICByZXR1cm4gbiAtICh4ICYgMSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hbmQsIGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eih4KSB7XG4gIGlmIChjYW1sX2ludDY0X2lzX3plcm8oeCkpIHsgcmV0dXJuIDY0OyB9XG4gIHZhciBuID0gMTtcbiAgZnVuY3Rpb24gaXNfemVybyAoeCkgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9pc196ZXJvKHgpOyB9XG4gIGZ1bmN0aW9uIGxhbmQgKHgseSkgICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfYW5kKHgsIHkpOyB9XG4gIGZ1bmN0aW9uIHNtYWxsX2ludDY0KHgpIHsgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHgsMCwwKTsgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDB4RkZGRkZGLCAweDAwMDBGRiwgMHgwMDAwKSkpKSB7XG4gICAgbiA9IG4gKyAzMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMEZGRkYpKSkpIHtcbiAgICBuID0gbiArIDE2OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDBGRikpKSkge1xuICAgIG4gPSBuICsgIDg7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMEYpKSkpIHtcbiAgICBuID0gbiArICA0OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAzKSkpKSB7XG4gICAgbiA9IG4gKyAgMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIH1cbiAgcmV0dXJuIG4gLSAoY2FtbF9pbnQ2NF90b19pbnQzMihjYW1sX2ludDY0X2FuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMSkpKSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gMTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFleHBvbmVudD09MCkge1xuICAgIG11bFsxXSA9IChtdWxbMV0gKiBtdWxbM10pIHwgMDtcbiAgICBtdWxbMl0gPSAobXVsWzFdICogbXVsWzFdKSB8IDA7XG4gICAgbXVsWzNdID0gKG11bFsyXSAqIG11bFsxXSkgfCAwO1xuICAgIHJlcyA9IChyZXMgKiBtdWxbZXhwb25lbnQgJiAzXSkgfCAwO1xuICAgIGV4cG9uZW50ID0gZXhwb25lbnQgPj4gMjtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgxLDApO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWNhbWxfaW50NjRfaXNfemVybyhleHBvbmVudCkpIHtcbiAgICBtdWxbMV0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFszXSk7XG4gICAgbXVsWzJdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbMV0pO1xuICAgIG11bFszXSA9IGNhbWxfaW50NjRfbXVsKG11bFsyXSwgbXVsWzFdKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X211bChyZXMsIG11bFtjYW1sX2ludDY0X2xvMzIoZXhwb25lbnQpICYgM10pO1xuICAgIGV4cG9uZW50ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZChleHBvbmVudCwgMik7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9oYXNoX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLHMpXG59XG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfZG91YmxlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9kb3VibGUoZCkge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2FtX3Rlc3RpbmcgY29uc3Rcbi8vV2Vha2RlZlxuZnVuY3Rpb24gQmFzZV9hbV90ZXN0aW5nKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3NlbF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9jc2VsX3ZhbHVlKHZfY29uZCwgdl90cnVlLCB2X2ZhbHNlKSB7XG4gICAgaWYgKHZfY29uZClcbiAgICAgICAgcmV0dXJuIHZfdHJ1ZTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB2X2ZhbHNlO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzXG5mdW5jdGlvbiBCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXModl9sZW4pIHtcbiAgICAvLyBUaGlzIGRvZXMgYSByZWR1bmRhbnQgYm91bmRzIGNoZWNrIGFuZCAoc2luY2UgdGhpcyBpc1xuICAgIC8vIGphdmFzY3JpcHQpIGRvZXNuJ3QgYWxsb2NhdGUgbG9jYWxseSwgYnV0IHRoYXQncyBmaW5lLlxuICAgIHJldHVybiBjYW1sX2NyZWF0ZV9ieXRlcyh2X2xlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9sb2NhbF92ZWN0XG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfdmVjdFxuZnVuY3Rpb24gY2FtbF9tYWtlX2xvY2FsX3ZlY3Qodl9sZW4sIHZfZWx0KSB7XG4gICAgLy8gSW4gamF2YXNjcmlwdCB0aGVyZSdzIG5vIGxvY2FsIGFsbG9jYXRpb24uXG4gICAgcmV0dXJuIGNhbWxfbWFrZV92ZWN0ICh2X2xlbiwgdl9lbHQpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15ICh4LCB5KSB7XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIHZhciBpID0geS5sZW5ndGg7IHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmICh4KSB7IHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfYmxvY2sgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfYmxvY2sgKHgpIHsgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyAoeCkge1xuICBpZiAoKHggaW5zdGFuY2VvZiBBcnJheSkgJiYgeFswXSA9PSAoeFswXSA+Pj4gMCkpXG4gICAgcmV0dXJuIHhbMF1cbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoKHggaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgdHlwZW9mIHggPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAyNDdcbiAgZWxzZSBpZiAoeCAmJiB4LmNhbWxfY3VzdG9tKVxuICAgIHJldHVybiAyNTVcbiAgZWxzZVxuICAgIHJldHVybiAxMDAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF90YWcgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3RhZyAoeCwgdGFnKSB7IHhbMF0gPSB0YWc7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX29ial9ibG9jayBjb25zdCAoY29uc3QsY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9ibG9jayAodGFnLCBzaXplKSB7XG4gIHZhciBvID0gbmV3IEFycmF5KHNpemUrMSk7XG4gIG9bMF09dGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8PSBzaXplOyBpKyspIG9baV0gPSAwO1xuICByZXR1cm4gbztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfd2l0aF90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3dpdGhfdGFnKHRhZyx4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IodmFyIGkgPSAxOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LGksb2xkLG4pe1xuICBpZih4W2krMV0gPT0gb2xkKSB7XG4gICAgeFtpKzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19zaGFyZWRcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZCh4KXtcbiAgcmV0dXJuIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX29ial91cGRhdGVfdGFnKGIsbyxuKSB7XG4gICAgaWYoYlswXT09bykgeyBiWzBdID0gbjsgcmV0dXJuIDEgfVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nKG8pIHtcbiAgaWYgKChvIGluc3RhbmNlb2YgQXJyYXkpICYmIG9bMF0gPT0gKG9bMF0gPj4+IDApICYmXG4gICAgICBjYW1sX29ial91cGRhdGVfdGFnKG8sIDI0NiwgMjQ0KSkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuICBmdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI1MCk7XG4gIHJldHVybiAwOyAvLyB1bml0XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNDYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3JlYWRfcmVzdWx0XG4vL1JlcXVpcmVzOiBjYW1sX29ial90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiAoY2FtbF9vYmpfdGFnKG8pID09IDI1MCk/b1sxXTpvO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA8IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuICh0ID09IDI0NSkgPyAxIDogMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgIC8qIEFsbCBjb250aW51YXRpb25zIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsXG4gICAgICAgICAgICAgc2luY2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyB0byBkaXN0aW5ndWlzaCB0aGVtLiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfaGFzaChoLCB2KXtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7XG4gIGlmICh4ID49IDApIHtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IoeCk7XG4gICAgcmV0dXJuICh4IC0geSA+PSAwLjUpPyh5ICsgMSk6eVxuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiAoeSAtIHggPj0gMC41KT8oeSAtIDEpOnlcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBhcmcpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWcsIGFyZ10pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZ3MgKHRhZywgYXJncykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZ10uY29uY2F0KGFyZ3MpKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKVxuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciBnID0gZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSk7XG4gICAgaWYodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGc7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZyxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoK2V4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKSB7XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbiAtIDFdO1xuICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIG4pO1xuICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gayhnKTtcbiAgICAgIHZhciBhcmdzID0gcmVzdC5zbGljZSgpO1xuICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdID0gaztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3MpOyB9O1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3NMZW4tLTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSwgeil7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDJdID0gejtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIGV4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrIClcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQgKyAxO1xuICAgIHJldHVybiBrKGcpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLHYpIHtcbiAgY2FtbF9uYW1lZF92YWx1ZXNbY2FtbF9qc2J5dGVzX29mX3N0cmluZyhubSldID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG5mdW5jdGlvbiBjYW1sX25hbWVkX3ZhbHVlKG5tKSB7XG4gIHJldHVybiBjYW1sX25hbWVkX3ZhbHVlc1tubV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nbG9iYWxfZGF0YVxudmFyIGNhbWxfZ2xvYmFsX2RhdGEgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnVpbGRfc3ltYm9scyhzeW1iKSB7XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpIHtcbiAgICAgIGlmKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV1cbiAgICAgIGlmKG5pZCA+PSAwKVxuICAgICAgICBuID0gbmlkXG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfcmVnaXN0ZXJfZ2xvYmFsOiBjYW5ub3QgbG9jYXRlIFwiICsgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbWxfZ2xvYmFsX2RhdGFbbiArIDFdID0gdjtcbiAgaWYobmFtZV9vcHQpIGNhbWxfZ2xvYmFsX2RhdGFbbmFtZV9vcHRdID0gdjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfZ2xvYmFsX2RhdGEgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9nZXRfZ2xvYmFsX2RhdGEgKCkgeyByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3ByaW50YWJsZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2lzX3ByaW50YWJsZShjKSB7IHJldHVybiArKGMgPiAzMSAmJiBjIDwgMTI3KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX3ByaW50X3N0YXRzXG5mdW5jdGlvbiBjYW1sX21heWJlX3ByaW50X3N0YXRzKHVuaXQpIHsgcmV0dXJuIDAgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29uY2F0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChhLGIpIHsgcmV0dXJuIGEgKyBiIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29uY2F0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBNbEJ5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb25jYXQoczEsczIpe1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoczEudCxzMS5jK3MyLmMsczEubCtzMi5sKVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHgpIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkLCBBbmR5IFJheVxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuLy9cbi8vIEJpZ2FycmF5LlxuLy9cbi8vIC0gYWxsIGJpZ2FycmF5IHR5cGVzIGluY2x1ZGluZyBJbnQ2NCBhbmQgQ29tcGxleC5cbi8vIC0gZm9ydHJhbiArIGMgbGF5b3V0c1xuLy8gLSBzdWIvc2xpY2UvcmVzaGFwZVxuLy8gLSByZXRhaW4gZmFzdCBwYXRoIGZvciAxZCBhcnJheSBhY2Nlc3NcblxuLy9Qcm92aWRlczogY2FtbF9iYV9pbml0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhX2luaXQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemUoZGltcykge1xuICB2YXIgbl9kaW1zID0gZGltcy5sZW5ndGg7XG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuX2RpbXM7IGkrKykge1xuICAgIGlmIChkaW1zW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIHNpemUgPSBzaXplICogZGltc1tpXTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKXtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDc6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiAyO1xuICBkZWZhdWx0OiByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpe1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxOiAgdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMjogIHZpZXcgPSBJbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgNDogIHZpZXcgPSBJbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA1OiAgdmlldyA9IFVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDc6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgODogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDEwOiB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMTogdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgfVxuICBpZiAoIXZpZXcpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgdmFyIGRhdGEgPSBuZXcgdmlldyhzaXplICogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246IDwgNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnJheVwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPj0gNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnIwMlwiXG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2hpMzIsIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gTWxfQmlnYXJyYXkgKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG5cbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICB2YXIgb2ZzID0gMDtcbiAgaWYodHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIikgYXJnID0gW2FyZ107XG4gIGlmICghIChhcmcgaW5zdGFuY2VvZiBBcnJheSkpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYXJnLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5nZXQvc2V0OiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIGlmKHRoaXMubGF5b3V0ID09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFyZ1tpXSA8IDAgfHwgYXJnW2ldID49IHRoaXMuZGltc1tpXSlcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyBhcmdbaV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmRpbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSl7XG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgKGFyZ1tpXSAtIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2ZzO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBoID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobCxoKTtcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciByID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaSA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXVxuICB9XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSB2WzJdO1xuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMFxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBhID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHZhciBiID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGlmKGEgPT0gYil7XG4gICAgICB0aGlzLmRhdGEuZmlsbChhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBhIDogYjtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgaW0gPSB2WzFdO1xuICAgIHZhciByZSA9IHZbMl07XG4gICAgaWYoaW0gPT0gcmUpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoaW0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGltIDogcmU7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YS5maWxsKHYpO1xuICAgIGJyZWFrO1xuICB9XG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoYiwgdG90YWwpIHtcbiAgaWYgKHRoaXMubGF5b3V0ICE9IGIubGF5b3V0IHx8IHRoaXMua2luZCAhPSBiLmtpbmQpIHtcbiAgICB2YXIgazEgPSB0aGlzLmtpbmQgfCAodGhpcy5sYXlvdXQgPDwgOCk7XG4gICAgdmFyIGsyID0gICAgYi5raW5kIHwgKGIubGF5b3V0IDw8IDgpO1xuICAgIHJldHVybiBrMiAtIGsxO1xuICB9XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGIuZGltcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYi5kaW1zLmxlbmd0aCAtIHRoaXMuZGltcy5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHRoaXMuZGltc1tpXSAhPSBiLmRpbXNbaV0pXG4gICAgICByZXR1cm4gKHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSkgPyAtMSA6IDE7XG4gIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICBjYXNlIDEwOlxuICBjYXNlIDExOlxuICAgIC8vIEZsb2F0c1xuICAgIHZhciB4LCB5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgeSA9IGIuZGF0YVtpXTtcbiAgICAgIGlmICh4IDwgeSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHggPiB5KVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICh4ICE9IHkpIHtcbiAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgaWYgKHggPT0geCkgcmV0dXJuIDE7XG4gICAgICAgIGlmICh5ID09IHkpIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSs9Mikge1xuICAgICAgLy8gQ2hlY2sgaGlnaGVzdCBiaXRzIGZpcnN0XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPCBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdID4gYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApIDwgKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA+IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMjpcbiAgY2FzZSAzOlxuICBjYXNlIDQ6XG4gIGNhc2UgNTpcbiAgY2FzZSA2OlxuICBjYXNlIDg6XG4gIGNhc2UgOTpcbiAgY2FzZSAxMjpcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA8IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA+IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheV9jXzFfMVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhICAgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZSA9IG5ldyBNbF9CaWdhcnJheSgpXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICBpZih0eXBlb2YgYXJnICE9PSBcIm51bWJlclwiKXtcbiAgICBpZigoYXJnIGluc3RhbmNlb2YgQXJyYXkpICYmIGFyZy5sZW5ndGggPT0gMSlcbiAgICAgIGFyZyA9IGFyZ1swXTtcbiAgICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk1sX0JpZ2FycmF5X2NfMV8xLm9mZnNldFwiKTtcbiAgfVxuICBpZiAoYXJnIDwgMCB8fCBhcmcgPj0gdGhpcy5kaW1zWzBdKVxuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFyZztcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jb21wYXJlXG5mdW5jdGlvbiBjYW1sX2JhX2NvbXBhcmUoYSxiLHRvdGFsKXtcbiAgcmV0dXJuIGEuY29tcGFyZShiLHRvdGFsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBNbF9CaWdhcnJheV9jXzFfMSwgY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKXtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpO1xuICBpZihjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPSBkYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImxlbmd0aCBkb2Vzbid0IG1hdGNoIGRpbXNcIik7XG4gIH1cbiAgaWYobGF5b3V0ID09IDAgJiYgLy8gY19sYXlvdXRcbiAgICAgZGltcy5sZW5ndGggPT0gMSAmJiAvLyBBcnJheTFcbiAgICAgc2l6ZV9wZXJfZWxlbWVudCA9PSAxKSAvLyAxLXRvLTEgbWFwcGluZ1xuICAgIHJldHVybiBuZXcgTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmKGJhLmxheW91dCA9PSBsYXlvdXQpIHJldHVybiBiYTtcbiAgdmFyIG5ld19kaW1zID0gW11cbiAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZGltXCIpO1xuICByZXR1cm4gYmEuZGltc1tpXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMVxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzEoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMlxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzIoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fM1xuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzMoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9nZW5lcmljKGJhLCBpKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKTtcbiAgcmV0dXJuIGJhLmdldChvZnMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDE2KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICByZXR1cm4gKGIxIHwgKGIyIDw8IDgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgcmV0dXJuICggKGIxIDw8IDApICB8XG4gICAgICAgICAgIChiMiA8PCA4KSAgfFxuICAgICAgICAgICAoYjMgPDwgMTYpIHxcbiAgICAgICAgICAgKGI0IDw8IDI0KSApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzKzQpO1xuICB2YXIgYjYgPSBiYS5nZXQob2ZzKzUpO1xuICB2YXIgYjcgPSBiYS5nZXQob2ZzKzYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzKzcpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbYjgsYjcsYjYsYjUsYjQsYjMsYjIsYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMV0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMyhiYSwgaTAsIGkxLCBpMikge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDE2KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQzMihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzIsICh2ID4+PiAxNikgJiAweGZmKTtcbiAgYmEuc2V0KG9mcyszLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgdiA9IGNhbWxfaW50NjRfdG9fYnl0ZXModik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA4OyBpKyspIGJhLnNldChvZnMraSwgdls3LWldKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMShiYSwgaTAsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChpMCksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8yXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8yKGJhLCBpMCwgaTEsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxLGkyXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9maWxsXG5mdW5jdGlvbiBjYW1sX2JhX2ZpbGwoYmEsIHYpIHtcbiAgYmEuZmlsbCh2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2JsaXQoc3JjLCBkc3QpIHtcbiAgaWYgKGRzdC5kaW1zLmxlbmd0aCAhPSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPSBzcmMuZGltc1tpXSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZHN0LmRhdGEuc2V0KHNyYy5kYXRhKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc3ViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zdWIoYmEsIG9mcywgbGVuKSB7XG4gIHZhciBjaGFuZ2VkX2RpbTtcbiAgdmFyIG11bCA9IDE7XG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSAwO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgKGJhLmRpbXMubGVuZ3RoIC0gMSk7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSBiYS5kaW1zLmxlbmd0aCAtIDE7XG4gICAgb2ZzID0gb2ZzIC0gMTtcbiAgfVxuICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IChvZnMgKyBsZW4pID4gYmEuZGltc1tjaGFuZ2VkX2RpbV0pe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tpXTtcbiAgbmV3X2RpbXNbY2hhbmdlZF9kaW1dID0gbGVuO1xuICBtdWwgKj0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBtdWwsIChvZnMgKyBsZW4pICogbXVsKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2xpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc2xpY2UoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG51bV9pbmRzID0gdmluZC5sZW5ndGg7XG4gIHZhciBpbmRleCA9IFtdO1xuICB2YXIgc3ViX2RpbXMgPSBbXTtcbiAgdmFyIG9mcztcblxuICBpZiAobnVtX2luZHMgPiBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zbGljZTogdG9vIG1hbnkgaW5kaWNlc1wiKTtcblxuICAvLyBDb21wdXRlIG9mZnNldCBhbmQgY2hlY2sgYm91bmRzXG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gdmluZFtpXTtcbiAgICBmb3IgKDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAxO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZSgwLCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzKTtcbiAgfVxuICBvZnMgPSBiYS5vZmZzZXQoaW5kZXgpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoc3ViX2RpbXMpO1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogc2l6ZV9wZXJfZWxlbWVudCwgKG9mcyArIHNpemUpICogc2l6ZV9wZXJfZWxlbWVudCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgfVxuICB2YXIgbnVtX2VsdHMgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICBuZXdfZGltW2ldID0gdmluZFtpXTtcbiAgICBpZiAobmV3X2RpbVtpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgbnVtX2VsdHMgPSBudW1fZWx0cyAqIG5ld19kaW1baV07XG4gIH1cblxuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIC8vIENoZWNrIHRoYXQgc2l6ZXMgYWdyZWVcbiAgaWYgKG51bV9lbHRzICE9IHNpemUpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogc2l6ZSBtaXNtYXRjaFwiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW0sIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfc2VyaWFsaXplKHdyaXRlciwgYmEsIHN6KSB7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEuZGltcy5sZW5ndGgpO1xuICB3cml0ZXIud3JpdGUoMzIsIChiYS5raW5kIHwgKGJhLmxheW91dCA8PCA4KSkpO1xuICBpZihiYS5jYW1sX2N1c3RvbSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihiYS5kaW1zW2ldIDwgMHhmZmZmKVxuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRpbXNbaV0pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgMHhmZmZmKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCAwKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIGVsc2VcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLGJhLmRpbXNbaV0pXG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSg4LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHdyaXRlci53cml0ZSg4LDApO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsxXSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsyXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBjb21wbGV4ID0gYmEuZ2V0KGkpO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHN6WzBdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA0O1xuICBzelsxXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kZXNlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzLCBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2Rlc2VyaWFsaXplKHJlYWRlciwgc3osIG5hbWUpe1xuICB2YXIgbnVtX2RpbXMgPSByZWFkZXIucmVhZDMycygpO1xuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB3cm9uZyBudW1iZXIgb2YgYmlnYXJyYXkgZGltZW5zaW9uc1wiKTtcbiAgdmFyIHRhZyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBraW5kID0gdGFnICYgMHhmZlxuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW11cbiAgaWYobmFtZSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmKHNpemVfZGltID09IDB4ZmZmZil7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmKHNpemVfZGltX2hpICE9IDApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBiaWdhcnJheSBkaW1lbnNpb24gb3ZlcmZsb3cgaW4gMzJiaXRcIik7XG4gICAgICAgIHNpemVfZGltID0gc2l6ZV9kaW1fbG87XG4gICAgICB9XG4gICAgICBkaW1zLnB1c2goc2l6ZV9kaW0pO1xuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYoc2l4dHkpIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAvLyAoaW50NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGludDY0ID0gY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KTtcbiAgICAgIGJhLnNldChpLGludDY0KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL0RlcHJlY2F0ZWRcbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2Zyb21cbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9mcm9tKGRhdGExLCBkYXRhMiwganN0eXAsIGtpbmQsIGxheW91dCwgZGltcyl7XG4gIGlmKGRhdGEyIHx8IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkgPT0gMil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9jcmVhdGVfZnJvbTogdXNlIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcIik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKXtcbiAgdmFyIG51bV9lbHRzID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgdmFyIGggPSAwO1xuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDI1NikgbnVtX2VsdHMgPSAyNTY7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDQgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgOCkgfCAoYmEuZGF0YVtpKzJdIDw8IDE2KSB8IChiYS5kYXRhW2krM10gPDwgMjQpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIHcgPSAwO1xuICAgIHN3aXRjaCAobnVtX2VsdHMgJiAzKSB7XG4gICAgY2FzZSAzOiB3ICA9IGJhLmRhdGFbaSsyXSA8PCAxNjsgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDI6IHcgfD0gYmEuZGF0YVtpKzFdIDw8IDg7ICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMTogdyB8PSBiYS5kYXRhW2krMF07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAxMjgpIG51bV9lbHRzID0gMTI4O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyAyIDw9IGJhLmRhdGEubGVuZ3RoOyBpKz0yKXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDE2KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICBpZiAoKG51bV9lbHRzICYgMSkgIT0gMClcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBudW1fZWx0cyAqPSAyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKXtcbiAgcmV0dXJuIGJhLmRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kO1xuICBpZiAgICAgICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQgPSBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpO1xuICB2YXIgdGEgPVxuICAgICAgLyogTmVlZGVkIHRvIGF2b2lkIHVuc2lnbmVkIHNldHRlcnMgb3ZlcmZsb3dpbmdcbiAgICAgICAgIHRoZSByYW5nZSBvZiBPQ2FtbCBbaW50MzJdIHZhbHVlcy4gKi9cbiAgICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkgP1xuICAgICAgbmV3IEludDMyQXJyYXkodGEuYnVmZmVyICx0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpIDogdGE7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyk7XG4gICAgICBpZihlcnIuanNfZXJyb3IpIHRocm93IGVyci5qc19lcnJvcjtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuZnVuY3Rpb24ganNvb19zeXNfZ2V0ZW52KG4pIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIC8vbm9kZWpzIGVudlxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuZW52XG4gICAgICYmIHByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbbl07XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xuICBpZihyID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5hcmd2XG4gICAgICYmIHByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCIpe1xuICAgIHZhciBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuICAgIGlmKGNoaWxkX3Byb2Nlc3MgJiYgY2hpbGRfcHJvY2Vzcy5leGVjU3luYylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgdmFyIGEgPSBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoNCkpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMpIHtcbiAgICAgICB2YXIgYSA9IG5ldyBJbnQzMkFycmF5KGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS5idWZmZXIpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5pc0ZpbGUocm9vdC5yZXN0KTtcbn1cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIGlmKHByb2Nlc3MgJiYgcHJvY2Vzcy5vbikge1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbnZhciBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IEZMQUcoXCJ3aXRoLWpzLWVycm9yXCIpO1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihcIk9DQU1MUlVOUEFSQU1cIilcbiAgaWYociAhPT0gdW5kZWZpbmVkKXtcbiAgICB2YXIgbCA9IHIuc3BsaXQoXCIsXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmKGxbaV0gPT0gXCJiXCIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSAxOyBicmVhayB9XG4gICAgICBlbHNlIGlmIChsW2ldLnN0YXJ0c1dpdGgoXCJiPVwiKSkge1xuICAgICAgICBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9ICsobFtpXS5zbGljZSgyKSl9XG4gICAgICBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1c1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoX3VuaXQpIHsgcmV0dXJuIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlIChiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gYjsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFswXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICAgIHJldHVybiAtLWNhbWxfc3RhY2tfZGVwdGggPiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiAhZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX2NhbGxfZ2VuXG52YXIgY2FtbF9jYWxsYmFjayA9IGNhbWxfY2FsbF9nZW47XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aCwgY2FtbF9jYWxsX2dlbiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfd3JhcF9leGNlcHRpb24sIGNhbWxfcmVzdW1lX3N0YWNrLCBjYW1sX2ZyZXNoX29vX2lkLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX2NhbGxiYWNrKGYsYXJncykge1xuICBmdW5jdGlvbiB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcihlZmYsayxtcykge1xuICAgIC8vIFJlc3VtZXMgdGhlIGNvbnRpbnVhdGlvbiBrIGJ5IHJhaXNpbmcgZXhjZXB0aW9uIFVuaGFuZGxlZC5cbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhrWzFdLG1zKTtcbiAgICB2YXIgZXhuID0gY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5VbmhhbmRsZWRcIik7XG4gICAgaWYoZXhuKSBjYW1sX3JhaXNlX3dpdGhfYXJnKGV4biwgZWZmKTtcbiAgICBlbHNlIHtcbiAgICAgIGV4biA9IFsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksIGNhbWxfZnJlc2hfb29faWQoMCldO1xuICAgICAgY2FtbF9yYWlzZV9jb25zdGFudChleG4pO1xuICAgIH1cbiAgfVxuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2s7XG4gIHZhciBzYXZlZF9maWJlcl9zdGFjayA9IGNhbWxfZmliZXJfc3RhY2s7XG4gIHRyeSB7XG4gICAgY2FtbF9leG5fc3RhY2sgPSAwO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6WzAsIDAsIDAsIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyXSwgcjp7azowLCB4OjAsIGU6MH19O1xuICAgIHZhciByZXMgPSB7am9vX3RyYW1wOiBmLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KXtyZXR1cm4geDt9KX07XG4gICAgZG8ge1xuICAgICAgY2FtbF9zdGFja19kZXB0aCA9IDQwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gY2FtbF9jYWxsX2dlbihyZXMuam9vX3RyYW1wLCByZXMuam9vX2FyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiBIYW5kbGUgZXhjZXB0aW9uIGNvbWluZyBmcm9tIEphdmFTY3JpcHQgb3IgZnJvbSB0aGUgcnVudGltZS4gKi9cbiAgICAgICAgaWYgKCFjYW1sX2V4bl9zdGFjaykgdGhyb3cgZTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgICAgICAgY2FtbF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFja1syXTtcbiAgICAgICAgcmVzID0ge2pvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV19O1xuICAgICAgfVxuICAgIH0gd2hpbGUocmVzICYmIHJlcy5qb29fYXJncylcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzYXZlZF9leG5fc3RhY2s7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9IHNhdmVkX2ZpYmVyX3N0YWNrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmcodW5pdCl7XG4gIHJldHVybiBGTEFHKFwidXNlLWpzLXN0cmluZ1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHModW5pdCl7XG4gIHJldHVybiBGTEFHKFwiZWZmZWN0c1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgICB2YXIgZXhuO1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gICAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gICAgZWxzZSBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgICBlbHNlIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gICAgZWxzZVxuICAgICAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gICAgICBleG4gPSBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlcnJvciBhdCBoYW5kLCBsZXQncyB1c2UgaXQuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKVxuICAgICAgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2VcbiAgICByZXR1cm4gZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIGlmKGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnKVxuICAgIHJldHVybiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKTtcbiAgZWxzZSByZXR1cm4gZXhuXG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2ludDMyIGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfdG9fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX3RvX2ludDMyKHgpIHsgcmV0dXJuIHh8MDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikgLSAxO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIHJldHVybiAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICAvLyBGdW5jdGlvbnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNvbnRpbnVhdGlvbiBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkXG4gIC8vIG5vdCBiZSB2aXNpYmxlIHdoZW4gY2FsbGluZyB0aGVtIGZyb20gSmF2YVNjcmlwdFxuICByZXR1cm4gKChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCkpIC0gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc3RyaWN0X2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19ldmFsX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19ldmFsX3N0cmluZyAocykge3JldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXhwciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIgKHMpe1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS5cbiAgICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQyAvKmNzdC5DT0RFX0RPVUJMRV9MSVRUTEUqLyk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbNyAtIGldKX1cbiAgICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAzXG4gICAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMlxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0ID0gY2FtbF9oYXNoX21peF9pbnQ2NDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50ID0gY2FtbF9oYXNoX21peF9pbnQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCA9IGNhbWxfaGFzaF9taXhfZmxvYXQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZyA9IGNhbWxfaGFzaF9taXhfc3RyaW5nO1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbmZ1bmN0aW9uIEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlKHNlZWQpIHtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKHNlZWQpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGFydHVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fc3RhcnR1cFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xlYW51cCBjb25zdFxuLy9BbGlhczogd2luX2NsZWFudXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCBjb25zdFxuLy9BbGlhczogd2luX2hhbmRsZV9mZFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9BbGlhczogdW5peF9pc2F0dHlcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9zdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X3N0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X2xzdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xzdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X2xzdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9sc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X21rZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ta2Rpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcm1kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JtZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9zeW1saW5rKHRvX2Rpciwgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYoc3JjX3Jvb3QuZGV2aWNlICE9IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRsaW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9yZWFkbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdW5saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91bmxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF91bmxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnVubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHd1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaGFzX3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfb3BlbmRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfb3BlbmRpclxuZnVuY3Rpb24gY2FtbF91bml4X29wZW5kaXIocGF0aCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHBhdGgpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm9wZW5kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X29wZW5kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICB2YXIgZGlyX2hhbmRsZSA9IHJvb3QuZGV2aWNlLm9wZW5kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xuICByZXR1cm4geyBwb2ludGVyIDogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9yZWFkZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKSB7XG4gIHZhciBlbnRyeTtcbiAgdHJ5IHtcbiAgICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcInJlYWRkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbiAgaWYgKGVudHJ5ID09PSBudWxsKSB7XG4gICAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X2Nsb3NlZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSkge1xuICB0cnkge1xuICAgICAgZGlyX2hhbmRsZS5wb2ludGVyLmNsb3NlU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFxcXC9dKVxcKlxcLlxcKiQvLCBcIlwiKTtcbiAgcGF0aCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGhfanMpO1xuICAvLyAqLiogaXMgbm93IHN0cmlwcGVkXG4gIHZhciBkaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIocGF0aCk7XG4gIHZhciBmaXJzdF9lbnRyeSA9IGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xuICAvLyBUaGUgV2luZG93cyBiaW5kaW5ncyB0eXBlIGRpcl9oYW5kbGUgYXMgYW4gYGludGAgYnV0IGl0J3Mgbm90IGluIEpTXG4gIHJldHVybiBbMCwgZmlyc3RfZW50cnksIGRpcl9oYW5kbGVdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZG5leHRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZG5leHRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kbmV4dChkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRjbG9zZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL0FsaWFzOiB3aW5fZmluZGNsb3NlXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGNsb3NlKGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyBjb25zdFxuLy9BbGlhczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgY2FzZSBcIlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkgJiYgIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcblxuICB2YXIgYSA9IHRoaXMucmVhZGRpcihuYW1lKTtcbiAgdmFyIGMgPSBmYWxzZTtcbiAgdmFyIGkgPSAwO1xuICByZXR1cm4geyByZWFkU3luYyA6IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGMpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpID09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZW50cnkgPSBhW2ldO1xuICAgIGkrKztcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9XG4gIH0pXG4gICAgLCBjbG9zZVN5bmM6IChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjID0gdHJ1ZTtcbiAgICAgIGEgPSBbXTtcbiAgICB9KVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICB9XG4gIGlmKGxlbikge1xuICAgIHZhciBkYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICBidWYuc2V0KGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoZGF0YSksIHBvcyk7XG4gIH1cbiAgcmV0dXJuIGxlblxufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkX291dChmZCxmbGFncykge1xuICBNbEZha2VGaWxlLmNhbGwodGhpcywgY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICB0aGlzLmxvZyA9IChmdW5jdGlvbiAocykgeyByZXR1cm4gMCB9KTtcbiAgaWYoZmQgPT0gMSAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gIGVsc2UgaWYoZmQgPT0gMiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmVycm9yO1xuICBlbHNlIGlmKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZ1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCB9XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmxvZykge1xuICAgIGlmKGxlbiA+IDBcbiAgICAgICAmJiBwb3MgPj0gMFxuICAgICAgICYmIHBvcytsZW4gPD0gYnVmLmxlbmd0aFxuICAgICAgICYmIGJ1Zltwb3MrbGVuLTFdID09IDEwKVxuICAgICAgbGVuIC0tO1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgc3JjLCAwLCBsZW4pO1xuICAgIHRoaXMubG9nKHNyYy50b1V0ZjE2KCkpO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGlzIHdyaXRlIG9ubHlcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvZyA9IHVuZGVmaW5lZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkKG5hbWUsIGZpbGUsZmxhZ3MpIHtcbiAgdGhpcy5maWxlID0gZmlsZTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuXG5NbEZha2VGZC5wcm90b3R5cGUuZXJyX2Nsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5uYW1lICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGggKClcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS53cml0ZShvZmZzZXQsYnVmLHBvcyxsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZmlsZSA9IHVuZGVmaW5lZDtcbn1cbiIsIlxuLy9Qcm92aWRlczogTWxNdXRleFxuZnVuY3Rpb24gTWxNdXRleCgpIHtcbiAgdGhpcy5sb2NrZWQgPSBmYWxzZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcodW5pdCkge1xuICByZXR1cm4gbmV3IE1sTXV0ZXgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X2xvY2sodCkge1xuICBpZih0LmxvY2tlZClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYoIXQubG9ja2VkKSB7XG4gICAgdC5sb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF91bmxvY2sodCkge1xuICB0LmxvY2tlZCA9IGZhbHNlO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gIC8vIEZvciBudW0gPCAxLjVcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC5cbiAgLy8gV2UgYWRkICsyIHRvIHRoZSBhcnJheSBsZW5ndGg6XG4gIC8vIC0gKzEgZm9yIHRoZSB0YWdcbiAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBsZW5ndGhfbmF0XG5mdW5jdGlvbiBsZW5ndGhfbmF0KHgpIHtcbiAgcmV0dXJuIHguZGF0YS5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNGaWxlKCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgdmFyIGlzQ2hhcmFjdGVyRGV2aWNlID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNDaGFyYWN0ZXJEZXZpY2UoKTtcbiAgICBmLmlzQ2hhcmFjdGVyRGV2aWNlID0gaXNDaGFyYWN0ZXJEZXZpY2U7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmQoZmQsIGZsYWdzKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxOb2RlRmQucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sTm9kZUZkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZkO1xuXG5NbE5vZGVGZC5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGEsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICAgIHJldHVybiByZWFkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZkKCl7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxOb2RlRmRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgaWYoZmxhZ3MubmFtZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MubmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaChlKSB7ICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZmxhZ3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlXG5mdW5jdGlvbiBiaWdzdHJpbmdfYWxsb2MoXyxzaXplKXtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlKDEyLCAwLCBbMCxzaXplXSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIoeCl7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHViKHMxLCBpMSwgczIsIGkyLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzMSxpMSxzMixpMixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbXNldF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtc2V0X3N0dWIoYmlnc3RyaW5nLCB2X3Bvcywgdl9sZW4sIHZfY2hhcikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICBjYW1sX2JhX3NldF8xKGJpZ3N0cmluZywgdl9wb3MgKyBpLCB2X2NoYXIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1jbXBfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSx2X3MxX3BvcyArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMSh2X3MyLHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2J5dGVzX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHZfczEsIHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2J5dGVzX2dldCh2X3MyLCB2X3MyX3BvcyArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xudmFyIGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyA9IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19maW5kXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfZmluZChicywgY2hyLCBwb3MsIGxlbil7XG4gIHdoaWxlKGxlbiA+IDApe1xuICAgIGlmKGNhbWxfYmFfZ2V0XzEoYnMscG9zKSA9PSBjaHIpIHJldHVybiBwb3M7XG4gICAgcG9zKys7XG4gICAgbGVuLS07XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlKGhheXN0YWNrLCBuZWVkbGUsIGhheXN0YWNrX3BvcywgaGF5c3RhY2tfbGVuLCBuZWVkbGVfcG9zLCBuZWVkbGVfbGVuKXtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGltID0gaGF5c3RhY2tfbGVuIC0gbmVlZGxlX2xlbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8PSBsaW07ICsraSkge1xuICAgIHZhciBtYXRjaGVzID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5lZWRsZV9sZW47ICsraikge1xuICAgICAgaWYgKGNhbWxfYmFfZ2V0XzEoaGF5c3RhY2ssIGhheXN0YWNrX3BvcyArIGkgKyBqKSAhPSBjYW1sX2JhX2dldF8xKG5lZWRsZSxuZWVkbGVfcG9zICsgaikpIHtcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG1hdGNoZXMpIHJldHVybiAoaGF5c3RhY2tfcG9zICsgaSk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nKGgsIGJzKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGFcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIoYWIpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYmEuYnVmZmVyLCBiYS5ieXRlT2Zmc2V0LCBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX21lbWNtcFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfbWVtY21wKHMxLCBwb3MxLCBzMiwgcG9zMiwgbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSxwb3MxICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHMyLHBvczIgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoYmExLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc3ViYXJyYXkob2ZzMSxvZnMxK2xlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxwb3MyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoYmExLCBwb3MxLCBieXRlczIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKHBvczIgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChieXRlczIpKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc2xpY2Uob2ZzMSwgb2ZzMStsZW4pO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShzbGljZSksIDAsIGJ5dGVzMiwgcG9zMiwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbiIsIi8vLy8vLy8vLyBDT1JFXG5cbi8vUHJvdmlkZXM6IGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG52YXIgY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjb3JlX3RpbWVfbnNfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjb3JlX3RpbWVfbnNfZm9ybWF0KHRpbWUsZm9ybWF0KXtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0aW1lICogMTAwMCk7XG4gIHZhciBmb3JtYXRqcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm9ybWF0KTtcbiAgdmFyIGpzdHJpbmcgPSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZShmb3JtYXRqcywgZCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzdHJpbmcpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX2djX2NvbXBhY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX2NvbXBhY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX2NodW5rc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX2NodW5rcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19wcm9tb3RlZF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19wcm9tb3RlZF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfdG9wX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrc1xuZnVuY3Rpb24gY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3MgKCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNvcmVfbWQ1X2ZkXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiwgY2FtbF9tZDVfY2hhbiwgY2FtbF9tbF9jbG9zZV9jaGFubmVsXG5mdW5jdGlvbiBjb3JlX21kNV9mZChmZCl7XG4gICAgdmFyIGljID0gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZmQpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBjYW1sX21kNV9jaGFuKGljLCAtMSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY2FtbF9tbF9jbG9zZV9jaGFubmVsKGljKTtcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWQ1X3N0cmluZywgY2FtbF9ibGl0X3N0cmluZywgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZyhidWYsIG9mcywgbGVuLCByZXMpe1xuICAgIHZhciBieXRlcyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIoYnVmLCBvZnMsIGJ5dGVzLCAwLCBsZW4pO1xuICAgIHZhciByZXMyID0gY2FtbF9tZDVfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ5dGVzKSwgMCwgbGVuKTtcbiAgICBjYW1sX2JsaXRfc3RyaW5nKHJlczIsIDAsIHJlcywgMCwgMTYpO1xuICAgIHJldHVybiAwO1xufVxuXG4vL0JpZ3N0cmluZ1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfZGVzdHJveV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIodl9ic3RyKSB7XG4gIGlmICh2X2JzdHIuaGFzT3duUHJvcGVydHkoJ19faXNfZGVhbGxvY2F0ZWQnKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19kZXN0cm95OiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgfVxuICAvLyBNdXRhdGUgdGhlIG9yaWdpbmFsIGJpZ3N0cmluZyBpbi1wbGFjZSwgdG8gc2ltdWxhdGUgd2hhdCB0aGUgQyB2ZXJzaW9uIGRvZXNcbiAgdl9ic3RyLl9faXNfZGVhbGxvY2F0ZWQgPSB0cnVlO1xuICB2X2JzdHIuZGF0YSA9IG5ldyB2X2JzdHIuZGF0YS5fX3Byb3RvX18uY29uc3RydWN0b3IoMCk7XG4gIHZfYnN0ci5kaW1zID0gWyAwIF07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfcmVhbGxvY1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19yZWFsbG9jKGJpZ3N0cmluZywgc2l6ZSkge1xuICAgIGlmIChiaWdzdHJpbmcuaGFzT3duUHJvcGVydHkoJ19faXNfZGVhbGxvY2F0ZWQnKSkge1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdzdHJpbmdfcmVhbGxvYzogYmlnc3RyaW5nIGlzIGFscmVhZHkgZGVhbGxvY2F0ZWRcIik7XG4gICAgfVxuXG4gICAgdmFyIG5ld19kYXRhID0gbmV3IGJpZ3N0cmluZy5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcihzaXplKTtcbiAgICBuZXdfZGF0YS5zZXQoYmlnc3RyaW5nLmRhdGEuc2xpY2UoMCwgc2l6ZSkpO1xuICAgIHZhciBuZXdfYmlnc3RyaW5nID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJpZ3N0cmluZy5raW5kLCBiaWdzdHJpbmcubGF5b3V0LCBbc2l6ZV0sIG5ld19kYXRhKTtcbiAgICBiaWdzdHJpbmdfZGVzdHJveV9zdHViKGJpZ3N0cmluZyk7XG5cbiAgICByZXR1cm4gbmV3X2JpZ3N0cmluZztcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYyxzcmNfb2ZmLGRzdCxkc3Rfb2ZmLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmcoYmExLCBiYTFfb2ZmLCBiYTIsIGJhMl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmExLCBiYTFfb2ZmICsgaSksIGNhbWxfYmFfZ2V0XzEoYmEyLCBiYTJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmcoYmEsIGJhX29mZiwgc3RyLCBzdHJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzdHIsIHN0cl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY2hyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jaHIoYmEsIGJhX29mZiwgY2hyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSA9PSBjaHIpIHtcbiAgICAgIHJldHVybiAoYmFfb2ZmICsgaSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0b3RhbCkge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKCEodG90YWwgJiYgYSA9PT0gYikpIHtcbiAgICAgIHZhciB0YWdfYSA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGEpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2EgPT0gMjUwKSB7IGEgPSBhWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2IgPT0gMjUwKSB7IGIgPSBiWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIC8vIHRhZ3MgYXJlIGRpZmZlcmVudFxuICAgICAgaWYodGFnX2EgIT09IHRhZ19iKSB7XG4gICAgICAgIGlmKHRhZ19hID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYiA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGEsIGIsIC0xLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmKHRhZ19iID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYSA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGIsIGEsIDEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRhZ19hIDwgdGFnX2IpPy0xOjE7XG4gICAgICB9XG4gICAgICBzd2l0Y2godGFnX2Epe1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICBjYXNlIDI0NzogLy8gQ2xvc3VyZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNDg6IC8vIE9iamVjdFxuICAgICAgICB2YXIgeCA9IGNhbWxfaW50X2NvbXBhcmUoYVsyXSwgYlsyXSk7XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEZvcndhcmRfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MTogLy9BYnN0cmFjdFxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTI6IC8vIE9DYW1sIGJ5dGVzXG4gICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYik7XG4gICAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfYXJyYXlfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjU1OiAvLyBDdXN0b21fdGFnXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgQ3VzdG9tX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjQ3OiAvLyBGdW5jdGlvblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NTogLy8gQ3VzdG9tXG4gICAgICAgIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpO1xuICAgICAgICBpZihjb21wICE9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShiKSl7XG4gICAgICAgICAgcmV0dXJuIChhLmNhbWxfY3VzdG9tPGIuY2FtbF9jdXN0b20pPy0xOjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWNvbXApXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIHZhciB4ID0gY29tcChhLGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NjogLy8gY29tcGFyZSBmdW5jdGlvblxuICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KSB7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgYSA9ICthO1xuICAgICAgICBiID0gK2I7XG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDE6IC8vIFRoZSByZXN0XG4gICAgICAgIC8vIEhlcmUgd2UgY2FuIGJlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDIuIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDMuIEphdmFTY3JpcHQgb2JqZWN0IHRoYW4gY2Fubm90IGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vXG4gICAgICAgIC8vICgzKSB3aWxsIHJhaXNlIGEgW1R5cGVFcnJvcl1cbiAgICAgICAgLy8gKDIpIHdpbGwgY29lcmNlIHRvIHByaW1pdGl2ZSB0eXBlcyB1c2luZyBbdmFsdWVPZl0gb3IgW3RvU3RyaW5nXVxuICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgLy8gLSBpZiBhIGFuZCBiIGFyZSBzdHJpbmdzLCBhcHBseSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb25cbiAgICAgICAgLy8gLSBpZiBhIG9yIGIgYXJlIG5vdCBzdHJpbmdzLCBjb252ZXJ0IGEgYW5kIGIgdG8gbnVtYmVyXG4gICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRXhjZXB0aW9uOiBgIT1gIHdpbGwgbm90IGNvZXJjZS9jb252ZXJ0IGlmIGJvdGggYSBhbmQgYiBhcmUgb2JqZWN0c1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUxOiAvLyBKYXZhU2NyaXB0IFN5bWJvbCwgbm8gb3JkZXJpbmcuXG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyOiAvLyBvY2FtbCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGIpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTIwOiAvLyBqYXZhc2NyaXB0IHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBhLnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0NjogLy8gTGF6eV90YWdcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlcbiAgICAgIGRlZmF1bHQ6IC8vIEJsb2NrIHdpdGggb3RoZXIgdGFnXG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0YWdfYSkpIHtcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gKGEubGVuZ3RoIDwgYi5sZW5ndGgpPy0xOjE7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+IDEpIHN0YWNrLnB1c2goYSwgYiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhY2subGVuZ3RoID09IDApIHJldHVybiAwO1xuICAgIHZhciBpID0gc3RhY2sucG9wKCk7XG4gICAgYiA9IHN0YWNrLnBvcCgpO1xuICAgIGEgPSBzdGFjay5wb3AoKTtcbiAgICBpZiAoaSArIDEgPCBhLmxlbmd0aCkgc3RhY2sucHVzaChhLCBiLCBpICsgMSk7XG4gICAgYSA9IGFbaV07XG4gICAgYiA9IGJbaV07XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlIChhLCBiKSB7IHJldHVybiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0cnVlKTsgfVxuLy9Qcm92aWRlczogY2FtbF9pbnRfY29tcGFyZSBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlIChhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuICgtMSk7IGlmIChhID09IGIpIHJldHVybiAwOyByZXR1cm4gMTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9lcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgIT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcmVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVydGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3NlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPD0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc3RoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzdGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPCAwKTsgfVxuIiwiLy8vLy8vLy8vIEJJTl9QUk9UXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhiaWdzdHJpbmcsIGkpe1xuICBpZiAoaSA+Pj4gMCA+PSBiaWdzdHJpbmcuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbn1cblxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9jaGVja19ib3VuZCwgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgY2FtbF9jaGVja19ib3VuZChkc3QsZHN0X3Bvcyk7IC8vIGZpcnN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zK2xlbi0xKTsgLy8gbGFzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoc3JjLCBzcmNfcG9zKTsgIC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIHZhciB2aWV3ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LkZsb2F0NjRBcnJheShsZW4pO1xuICB2YXIgYnVmZmVyID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LlVpbnQ4QXJyYXkodmlldy5idWZmZXIpO1xuICBidWZmZXIuc2V0KHNyYy5kYXRhLnN1YmFycmF5KHNyY19wb3MsIHNyY19wb3MgKyAobGVuICogOCkpKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICAvLyBbKyAxXSBiZWNhdXNlIHRoZSB0YWcgaXMgYXQgcG9zIDAgXG4gICAgZHN0W2RzdF9wb3MraSsxXSA9IHZpZXdbaV07XG4gIH1cbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWIoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pO1xufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9jaGVja19ib3VuZCwgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWIoc3JjX3BvcyxzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwIFxuICBjYW1sX2NoZWNrX2JvdW5kIChzcmMsIHNyY19wb3MpOyAvLyBmaXJzdCBwb3MgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3BvcyArIGxlbiAtIDEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MpOyAvKiBmaXJzdCBwb3MgKi9cbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoZHN0LCBkc3RfcG9zICsgbGVuICogOCAtIDEpOyAvKiBsYXN0IHBvcyAqL1xuICAvLyBbKyAxXSBiZWNhdXNlIHRoZSB0YWcgaXMgYXQgcG9zIDBcbiAgc3JjX3BvcyA9IHNyY19wb3MgKyAxXG4gIHZhciBmbG9hdDY0ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LkZsb2F0NjRBcnJheShzcmMuc2xpY2Uoc3JjX3BvcyxzcmNfcG9zICsgbGVuKSk7XG4gIHZhciBmbG9hdDY0X3VpbnQ4ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LlVpbnQ4QXJyYXkoZmxvYXQ2NC5idWZmZXIpO1xuICB2YXIgdmlldyA9IGRzdC5kYXRhLnN1YmFycmF5KGRzdF9wb3MsIGRzdF9wb3MgKyAobGVuICogOCkpO1xuICB2aWV3LnNldChmbG9hdDY0X3VpbnQ4KTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsIGRzdCwgZHN0X3BvcyxsZW4pO1xufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsIGRzdCwgZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhLCBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICAvLyBbYmluX3Byb3RfYmxpdF9idWZfc3R1Yl0gaXMgdXNlZCB3aXRoIG1peGVkIGJpZ2FycmF5IGtpbmRzLlxuICAvLyBDb252ZXJ0ZXIgZXZlcnl0aGluZyB0byBiaWdhcnJheSBvZiBjaGFyIGJlZm9yZSB0aGUgYmxpdC5cbiAgaWYoc3JjLmtpbmQgIT0gMTIpIC8vIDEyIGlzIHRoZSBjaGFyIGtpbmRcbiAgICBzcmMgPSBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoc3JjLmRhdGEpO1xuICBpZihkc3Qua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIGRzdCA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShkc3QuZGF0YSk7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vUHJvdmlkZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG52YXIgYmxha2UyYiA9IChmdW5jdGlvbiAoKSB7XG4vLyBCbGFrZTJCIGluIHB1cmUgSmF2YXNjcmlwdFxuLy8gQWRhcHRlZCBmcm9tIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gUkZDNzY5M1xuLy8gUG9ydGVkIHRvIEphdmFzY3JpcHQgYnkgREMgLSBodHRwczovL2dpdGh1Yi5jb20vZGNwb3NjaFxuXG4vLyA2NC1iaXQgdW5zaWduZWQgYWRkaXRpb25cbi8vIFNldHMgdlthLGErMV0gKz0gdltiLGIrMV1cbi8vIHYgc2hvdWxkIGJlIGEgVWludDMyQXJyYXlcbmZ1bmN0aW9uIEFERDY0QUEgKHYsIGEsIGIpIHtcbiAgY29uc3QgbzAgPSB2W2FdICsgdltiXVxuICBsZXQgbzEgPSB2W2EgKyAxXSArIHZbYiArIDFdXG4gIGlmIChvMCA+PSAweDEwMDAwMDAwMCkge1xuICAgIG8xKytcbiAgfVxuICB2W2FdID0gbzBcbiAgdlthICsgMV0gPSBvMVxufVxuXG4vLyA2NC1iaXQgdW5zaWduZWQgYWRkaXRpb25cbi8vIFNldHMgdlthLGErMV0gKz0gYlxuLy8gYjAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIGIsIGIxIHJlcHJlc2VudHMgdGhlIGhpZ2ggMzIgYml0c1xuZnVuY3Rpb24gQURENjRBQyAodiwgYSwgYjAsIGIxKSB7XG4gIGxldCBvMCA9IHZbYV0gKyBiMFxuICBpZiAoYjAgPCAwKSB7XG4gICAgbzAgKz0gMHgxMDAwMDAwMDBcbiAgfVxuICBsZXQgbzEgPSB2W2EgKyAxXSArIGIxXG4gIGlmIChvMCA+PSAweDEwMDAwMDAwMCkge1xuICAgIG8xKytcbiAgfVxuICB2W2FdID0gbzBcbiAgdlthICsgMV0gPSBvMVxufVxuXG4vLyBMaXR0bGUtZW5kaWFuIGJ5dGUgYWNjZXNzXG5mdW5jdGlvbiBCMkJfR0VUMzIgKGFyciwgaSkge1xuICByZXR1cm4gYXJyW2ldIF4gKGFycltpICsgMV0gPDwgOCkgXiAoYXJyW2kgKyAyXSA8PCAxNikgXiAoYXJyW2kgKyAzXSA8PCAyNClcbn1cblxuLy8gRyBNaXhpbmcgZnVuY3Rpb25cbi8vIFRoZSBST1RScyBhcmUgaW5saW5lZCBmb3Igc3BlZWRcbmZ1bmN0aW9uIEIyQl9HIChhLCBiLCBjLCBkLCBpeCwgaXkpIHtcbiAgY29uc3QgeDAgPSBtW2l4XVxuICBjb25zdCB4MSA9IG1baXggKyAxXVxuICBjb25zdCB5MCA9IG1baXldXG4gIGNvbnN0IHkxID0gbVtpeSArIDFdXG5cbiAgQURENjRBQSh2LCBhLCBiKSAvLyB2W2EsYSsxXSArPSB2W2IsYisxXSAuLi4gaW4gSlMgd2UgbXVzdCBzdG9yZSBhIHVpbnQ2NCBhcyB0d28gdWludDMyc1xuICBBREQ2NEFDKHYsIGEsIHgwLCB4MSkgLy8gdlthLCBhKzFdICs9IHggLi4uIHgwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiB4LCB4MSBpcyB0aGUgaGlnaCAzMiBiaXRzXG5cbiAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHRvIHRoZSByaWdodCBieSAzMiBiaXRzXG4gIGxldCB4b3IwID0gdltkXSBeIHZbYV1cbiAgbGV0IHhvcjEgPSB2W2QgKyAxXSBeIHZbYSArIDFdXG4gIHZbZF0gPSB4b3IxXG4gIHZbZCArIDFdID0geG9yMFxuXG4gIEFERDY0QUEodiwgYywgZClcblxuICAvLyB2W2IsYisxXSA9ICh2W2IsYisxXSB4b3IgdltjLGMrMV0pIHJvdGF0ZWQgcmlnaHQgYnkgMjQgYml0c1xuICB4b3IwID0gdltiXSBeIHZbY11cbiAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV1cbiAgdltiXSA9ICh4b3IwID4+PiAyNCkgXiAoeG9yMSA8PCA4KVxuICB2W2IgKyAxXSA9ICh4b3IxID4+PiAyNCkgXiAoeG9yMCA8PCA4KVxuXG4gIEFERDY0QUEodiwgYSwgYilcbiAgQURENjRBQyh2LCBhLCB5MCwgeTEpXG5cbiAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDE2IGJpdHNcbiAgeG9yMCA9IHZbZF0gXiB2W2FdXG4gIHhvcjEgPSB2W2QgKyAxXSBeIHZbYSArIDFdXG4gIHZbZF0gPSAoeG9yMCA+Pj4gMTYpIF4gKHhvcjEgPDwgMTYpXG4gIHZbZCArIDFdID0gKHhvcjEgPj4+IDE2KSBeICh4b3IwIDw8IDE2KVxuXG4gIEFERDY0QUEodiwgYywgZClcblxuICAvLyB2W2IsYisxXSA9ICh2W2IsYisxXSB4b3IgdltjLGMrMV0pIHJvdGF0ZWQgcmlnaHQgYnkgNjMgYml0c1xuICB4b3IwID0gdltiXSBeIHZbY11cbiAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV1cbiAgdltiXSA9ICh4b3IxID4+PiAzMSkgXiAoeG9yMCA8PCAxKVxuICB2W2IgKyAxXSA9ICh4b3IwID4+PiAzMSkgXiAoeG9yMSA8PCAxKVxufVxuXG4vLyBJbml0aWFsaXphdGlvbiBWZWN0b3JcbmNvbnN0IEJMQUtFMkJfSVYzMiA9IG5ldyBVaW50MzJBcnJheShbXG4gIDB4ZjNiY2M5MDgsIDB4NmEwOWU2NjcsIDB4ODRjYWE3M2IsIDB4YmI2N2FlODUsIDB4ZmU5NGY4MmIsIDB4M2M2ZWYzNzIsXG4gIDB4NWYxZDM2ZjEsIDB4YTU0ZmY1M2EsIDB4YWRlNjgyZDEsIDB4NTEwZTUyN2YsIDB4MmIzZTZjMWYsIDB4OWIwNTY4OGMsXG4gIDB4ZmI0MWJkNmIsIDB4MWY4M2Q5YWIsIDB4MTM3ZTIxNzksIDB4NWJlMGNkMTlcbl0pXG5cbmNvbnN0IFNJR01BOCA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLCA0LCA4LCA5LCAxNSwgMTMsXG4gIDYsIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgMywgMTEsIDgsIDEyLCAwLCA1LCAyLCAxNSwgMTMsIDEwLCAxNCwgMywgNiwgNywgMSxcbiAgOSwgNCwgNywgOSwgMywgMSwgMTMsIDEyLCAxMSwgMTQsIDIsIDYsIDUsIDEwLCA0LCAwLCAxNSwgOCwgOSwgMCwgNSwgNywgMiwgNCxcbiAgMTAsIDE1LCAxNCwgMSwgMTEsIDEyLCA2LCA4LCAzLCAxMywgMiwgMTIsIDYsIDEwLCAwLCAxMSwgOCwgMywgNCwgMTMsIDcsIDUsXG4gIDE1LCAxNCwgMSwgOSwgMTIsIDUsIDEsIDE1LCAxNCwgMTMsIDQsIDEwLCAwLCA3LCA2LCAzLCA5LCAyLCA4LCAxMSwgMTMsIDExLCA3LFxuICAxNCwgMTIsIDEsIDMsIDksIDUsIDAsIDE1LCA0LCA4LCA2LCAyLCAxMCwgNiwgMTUsIDE0LCA5LCAxMSwgMywgMCwgOCwgMTIsIDIsXG4gIDEzLCA3LCAxLCA0LCAxMCwgNSwgMTAsIDIsIDgsIDQsIDcsIDYsIDEsIDUsIDE1LCAxMSwgOSwgMTQsIDMsIDEyLCAxMywgMCwgMCxcbiAgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLCA0LCA4LCA5LCAxNSwgMTMsIDYsXG4gIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgM1xuXVxuXG4vLyBUaGVzZSBhcmUgb2Zmc2V0cyBpbnRvIGEgdWludDY0IGJ1ZmZlci5cbi8vIE11bHRpcGx5IHRoZW0gYWxsIGJ5IDIgdG8gbWFrZSB0aGVtIG9mZnNldHMgaW50byBhIHVpbnQzMiBidWZmZXIsXG4vLyBiZWNhdXNlIHRoaXMgaXMgSmF2YXNjcmlwdCBhbmQgd2UgZG9uJ3QgaGF2ZSB1aW50NjRzXG5jb25zdCBTSUdNQTgyID0gbmV3IFVpbnQ4QXJyYXkoXG4gIFNJR01BOC5tYXAoZnVuY3Rpb24gKHgpIHtcbiAgICByZXR1cm4geCAqIDJcbiAgfSlcbilcblxuLy8gQ29tcHJlc3Npb24gZnVuY3Rpb24uICdsYXN0JyBmbGFnIGluZGljYXRlcyBsYXN0IGJsb2NrLlxuLy8gTm90ZSB3ZSdyZSByZXByZXNlbnRpbmcgMTYgdWludDY0cyBhcyAzMiB1aW50MzJzXG5jb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KDMyKVxuY29uc3QgbSA9IG5ldyBVaW50MzJBcnJheSgzMilcbmZ1bmN0aW9uIGJsYWtlMmJDb21wcmVzcyAoY3R4LCBsYXN0KSB7XG4gIGxldCBpID0gMFxuXG4gIC8vIGluaXQgd29yayB2YXJpYWJsZXNcbiAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICB2W2ldID0gY3R4LmhbaV1cbiAgICB2W2kgKyAxNl0gPSBCTEFLRTJCX0lWMzJbaV1cbiAgfVxuXG4gIC8vIGxvdyA2NCBiaXRzIG9mIG9mZnNldFxuICB2WzI0XSA9IHZbMjRdIF4gY3R4LnRcbiAgdlsyNV0gPSB2WzI1XSBeIChjdHgudCAvIDB4MTAwMDAwMDAwKVxuICAvLyBoaWdoIDY0IGJpdHMgbm90IHN1cHBvcnRlZCwgb2Zmc2V0IG1heSBub3QgYmUgaGlnaGVyIHRoYW4gMioqNTMtMVxuXG4gIC8vIGxhc3QgYmxvY2sgZmxhZyBzZXQgP1xuICBpZiAobGFzdCkge1xuICAgIHZbMjhdID0gfnZbMjhdXG4gICAgdlsyOV0gPSB+dlsyOV1cbiAgfVxuXG4gIC8vIGdldCBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgbVtpXSA9IEIyQl9HRVQzMihjdHguYiwgNCAqIGkpXG4gIH1cblxuICAvLyB0d2VsdmUgcm91bmRzIG9mIG1peGluZ1xuICAvLyB1bmNvbW1lbnQgdGhlIERlYnVnUHJpbnQgY2FsbHMgdG8gbG9nIHRoZSBjb21wdXRhdGlvblxuICAvLyBhbmQgbWF0Y2ggdGhlIFJGQyBzYW1wbGUgZG9jdW1lbnRhdGlvblxuICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgIEIyQl9HKDAsIDgsIDE2LCAyNCwgU0lHTUE4MltpICogMTYgKyAwXSwgU0lHTUE4MltpICogMTYgKyAxXSlcbiAgICBCMkJfRygyLCAxMCwgMTgsIDI2LCBTSUdNQTgyW2kgKiAxNiArIDJdLCBTSUdNQTgyW2kgKiAxNiArIDNdKVxuICAgIEIyQl9HKDQsIDEyLCAyMCwgMjgsIFNJR01BODJbaSAqIDE2ICsgNF0sIFNJR01BODJbaSAqIDE2ICsgNV0pXG4gICAgQjJCX0coNiwgMTQsIDIyLCAzMCwgU0lHTUE4MltpICogMTYgKyA2XSwgU0lHTUE4MltpICogMTYgKyA3XSlcbiAgICBCMkJfRygwLCAxMCwgMjAsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDhdLCBTSUdNQTgyW2kgKiAxNiArIDldKVxuICAgIEIyQl9HKDIsIDEyLCAyMiwgMjQsIFNJR01BODJbaSAqIDE2ICsgMTBdLCBTSUdNQTgyW2kgKiAxNiArIDExXSlcbiAgICBCMkJfRyg0LCAxNCwgMTYsIDI2LCBTSUdNQTgyW2kgKiAxNiArIDEyXSwgU0lHTUE4MltpICogMTYgKyAxM10pXG4gICAgQjJCX0coNiwgOCwgMTgsIDI4LCBTSUdNQTgyW2kgKiAxNiArIDE0XSwgU0lHTUE4MltpICogMTYgKyAxNV0pXG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIGN0eC5oW2ldID0gY3R4LmhbaV0gXiB2W2ldIF4gdltpICsgMTZdXG4gIH1cbn1cblxuLy8gcmV1c2FibGUgcGFyYW1ldGVyQmxvY2tcbmNvbnN0IHBhcmFtZXRlckJsb2NrID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgMDogb3V0bGVuLCBrZXlsZW4sIGZhbm91dCwgZGVwdGhcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gIDQ6IGxlYWYgbGVuZ3RoLCBzZXF1ZW50aWFsIG1vZGVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gIDg6IG5vZGUgb2Zmc2V0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDEyOiBub2RlIG9mZnNldFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAxNjogbm9kZSBkZXB0aCwgaW5uZXIgbGVuZ3RoLCByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMjA6IHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAyNDogcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDI4OiByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMzI6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMzY6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDA6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDQ6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDg6IHBlcnNvbmFsXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDUyOiBwZXJzb25hbFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA1NjogcGVyc29uYWxcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCAvLyA2MDogcGVyc29uYWxcbl0pXG5cbi8vIENyZWF0ZXMgYSBCTEFLRTJiIGhhc2hpbmcgY29udGV4dFxuLy8gUmVxdWlyZXMgYW4gb3V0cHV0IGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY0IGJ5dGVzXG4vLyBUYWtlcyBhbiBvcHRpb25hbCBVaW50OEFycmF5IGtleVxuZnVuY3Rpb24gYmxha2UyYkluaXQgKG91dGxlbiwga2V5KSB7XG4gIGlmIChvdXRsZW4gPT09IDAgfHwgb3V0bGVuID4gNjQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgb3V0cHV0IGxlbmd0aCwgZXhwZWN0ZWQgMCA8IGxlbmd0aCA8PSA2NCcpXG4gIH1cbiAgaWYgKGtleS5sZW5ndGggPiA2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBrZXksIGV4cGVjdGVkIFVpbnQ4QXJyYXkgd2l0aCAwIDwgbGVuZ3RoIDw9IDY0JylcbiAgfVxuXG4gIC8vIHN0YXRlLCAncGFyYW0gYmxvY2snXG4gIGNvbnN0IGN0eCA9IHtcbiAgICBiOiBuZXcgVWludDhBcnJheSgxMjgpLFxuICAgIGg6IG5ldyBVaW50MzJBcnJheSgxNiksXG4gICAgdDogMCwgLy8gaW5wdXQgY291bnRcbiAgICBjOiAwLCAvLyBwb2ludGVyIHdpdGhpbiBidWZmZXJcbiAgICBvdXRsZW46IG91dGxlbiAvLyBvdXRwdXQgbGVuZ3RoIGluIGJ5dGVzXG4gIH1cblxuICAvLyBpbml0aWFsaXplIHBhcmFtZXRlckJsb2NrIGJlZm9yZSB1c2FnZVxuICBwYXJhbWV0ZXJCbG9jay5maWxsKDApXG4gIHBhcmFtZXRlckJsb2NrWzBdID0gb3V0bGVuXG4gIHBhcmFtZXRlckJsb2NrWzFdID0ga2V5Lmxlbmd0aFxuICBwYXJhbWV0ZXJCbG9ja1syXSA9IDEgLy8gZmFub3V0XG4gIHBhcmFtZXRlckJsb2NrWzNdID0gMSAvLyBkZXB0aFxuXG4gIC8vIGluaXRpYWxpemUgaGFzaCBzdGF0ZVxuICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICBjdHguaFtpXSA9IEJMQUtFMkJfSVYzMltpXSBeIEIyQl9HRVQzMihwYXJhbWV0ZXJCbG9jaywgaSAqIDQpXG4gIH1cblxuXG5cbiAgaWYoa2V5Lmxlbmd0aCA+IDApe1xuICAgIGJsYWtlMmJVcGRhdGUoY3R4LCBrZXkpXG4gICAgLy8gYXQgdGhlIGVuZFxuICAgIGN0eC5jID0gMTI4XG4gIH1cblxuICByZXR1cm4gY3R4XG59XG5cbi8vIFVwZGF0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXF1aXJlcyBoYXNoIGNvbnRleHQgYW5kIFVpbnQ4QXJyYXkgKGJ5dGUgYXJyYXkpXG5mdW5jdGlvbiBibGFrZTJiVXBkYXRlIChjdHgsIGlucHV0KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY3R4LmMgPT09IDEyOCkge1xuICAgICAgLy8gYnVmZmVyIGZ1bGwgP1xuICAgICAgY3R4LnQgKz0gY3R4LmMgLy8gYWRkIGNvdW50ZXJzXG4gICAgICBibGFrZTJiQ29tcHJlc3MoY3R4LCBmYWxzZSkgLy8gY29tcHJlc3MgKG5vdCBsYXN0KVxuICAgICAgY3R4LmMgPSAwIC8vIGNvdW50ZXIgdG8gemVyb1xuICAgIH1cbiAgICBjdHguYltjdHguYysrXSA9IGlucHV0W2ldXG4gIH1cbn1cblxuLy8gQ29tcGxldGVzIGEgQkxBS0UyYiBzdHJlYW1pbmcgaGFzaFxuLy8gUmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSBkaWdlc3RcbmZ1bmN0aW9uIGJsYWtlMmJGaW5hbCAoY3R4KSB7XG4gIGN0eC50ICs9IGN0eC5jIC8vIG1hcmsgbGFzdCBibG9jayBvZmZzZXRcblxuICB3aGlsZSAoY3R4LmMgPCAxMjgpIHtcbiAgICAvLyBmaWxsIHVwIHdpdGggemVyb3NcbiAgICBjdHguYltjdHguYysrXSA9IDBcbiAgfVxuICBibGFrZTJiQ29tcHJlc3MoY3R4LCB0cnVlKSAvLyBmaW5hbCBibG9jayBmbGFnID0gMVxuXG4gIC8vIGxpdHRsZSBlbmRpYW4gY29udmVydCBhbmQgc3RvcmVcbiAgY29uc3Qgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoY3R4Lm91dGxlbilcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdHgub3V0bGVuOyBpKyspIHtcbiAgICBvdXRbaV0gPSBjdHguaFtpID4+IDJdID4+ICg4ICogKGkgJiAzKSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG4gIHJldHVybiB7SW5pdDpibGFrZTJiSW5pdCwgVXBkYXRlOmJsYWtlMmJVcGRhdGUsIEZpbmFsOmJsYWtlMmJGaW5hbH1cbn0pKClcblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2NyZWF0ZShoYXNobGVuLCBrZXkpe1xuICBrZXkgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhrZXkpO1xuICBpZihrZXkubGVuZ3RoID4gNjQpIHtcbiAgICBrZXkuc3ViYXJyYXkoMCw2NCk7XG4gIH1cbiAgcmV0dXJuIGJsYWtlMmIuSW5pdChoYXNobGVuLCBrZXkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9maW5hbChjdHgsIGhhc2hsZW4pIHtcbiAgdmFyIHIgPSBibGFrZTJiLkZpbmFsKGN0eCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfdXBkYXRlXG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pe1xuICB2YXIgaW5wdXQgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpbnB1dCA9IGlucHV0LnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKTtcbiAgYmxha2UyYi5VcGRhdGUoY3R4LCBpbnB1dCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX2ZpbmFsXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlIChoYXNobGVuLCBrZXkpO1xuICBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWYsIG9mcywgbGVuKTtcbiAgcmV0dXJuIGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLHRvcmVhZCl7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDQwOTYpO1xuICBpZih0b3JlYWQgPCAwKXtcbiAgICB3aGlsZSh0cnVlKXtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCk7XG4gICAgICBpZihyZWFkID09IDApIGJyZWFrO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsICh0b3JlYWQgPiBidWZmZXIubGVuZ3RoID8gYnVmZmVyLmxlbmd0aCA6IHRvcmVhZCkpO1xuICAgICAgaWYocmVhZCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICAgIHRvcmVhZCAtPSByZWFkXG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVUcmFuc2Zvcm1cbnZhciBjYW1sX01ENVRyYW5zZm9ybSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGFkZCAoeCwgeSkgeyByZXR1cm4gKHggKyB5KSB8IDA7IH1cbiAgZnVuY3Rpb24geHgocSxhLGIseCxzLHQpIHtcbiAgICBhID0gYWRkKGFkZChhLCBxKSwgYWRkKHgsIHQpKTtcbiAgICByZXR1cm4gYWRkKChhIDw8IHMpIHwgKGEgPj4+ICgzMiAtIHMpKSwgYik7XG4gIH1cbiAgZnVuY3Rpb24gZmYoYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gZ2coYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTsgfVxuICBmdW5jdGlvbiBpaShhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7IH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHcsIGJ1ZmZlcikge1xuICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA3LCAweEQ3NkFBNDc4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyAxXSwgMTIsIDB4RThDN0I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgM10sIDIyLCAweEMxQkRDRUVFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNywgMHhGNTdDMEZBRik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTcsIDB4QTgzMDQ2MTMpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDddLCAyMiwgMHhGRDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDldLCAxMiwgMHg4QjQ0RjdBRik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE3LCAweEZGRkY1QkIxKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA3LCAweDZCOTAxMTIyKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWzEzXSwgMTIsIDB4RkQ5ODcxOTMpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNV0sIDIyLCAweDQ5QjQwODIxKTtcblxuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA1LCAweEY2MUUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE0LCAweDI2NUU1QTUxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyAwXSwgMjAsIDB4RTlCNkM3QUEpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweEQ4QTFFNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA1LCAweDIxRTFDREU2KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzE0XSwgOSwgMHhDMzM3MDdENik7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA4XSwgMjAsIDB4NDU1QTE0RUQpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA1LCAweEE5RTNFOTA1KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE0LCAweDY3NkYwMkQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OEQyQTRDOEEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDhdLCAxMSwgMHg4NzcxRjY4MSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE2LCAweDZEOUQ2MTIyKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA0LCAweEE0QkVFQTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA0XSwgMTEsIDB4NEJERUNGQTkpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMF0sIDIzLCAweEJFQkZCQzcwKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNCwgMHgyODlCN0VDNik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTYsIDB4RDRFRjMwODUpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDZdLCAyMywgMHgwNDg4MUQwNSk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhFNkRCOTlFNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFGQTI3Q0Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDYsIDB4RjQyOTIyNDQpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDddLCAxMCwgMHg0MzJBRkY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA1XSwgMjEsIDB4RkM5M0EwMzkpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA2LCAweDY1NUI1OUMzKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNSwgMHhGRkVGRjQ3RCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMV0sIDIxLCAweDg1ODQ1REQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNV0sIDEwLCAweEZFMkNFNkUwKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTUsIDB4QTMwMTQzMTQpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDYsIDB4Rjc1MzdFODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhCRDNBRjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA5XSwgMjEsIDB4RUI4NkQzOTEpO1xuXG4gICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICB3WzFdID0gYWRkKGIsIHdbMV0pO1xuICAgIHdbMl0gPSBhZGQoYywgd1syXSk7XG4gICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgfX0pKClcblxuLy9Qcm92aWRlczogY2FtbF9NRDVJbml0XG5mdW5jdGlvbiBjYW1sX01ENUluaXQoKSB7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpO1xuICB2YXIgYjMyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gIHZhciBiOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gIHJldHVybiB7bGVuOjAsXG4gICAgICAgICAgdzpuZXcgVWludDMyQXJyYXkoWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzZdKSxcbiAgICAgICAgICBiMzI6YjMyLFxuICAgICAgICAgIGI4OmI4fVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbil7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgdmFyIGlucHV0X3BvcyA9IDA7XG4gIGN0eC5sZW4gKz0gaW5wdXRfbGVuO1xuICBpZihpbl9idWYpe1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYoaW5wdXRfbGVuIDwgbWlzc2luZykge1xuICAgICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLGlucHV0X2xlbiksaW5fYnVmKTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsbWlzc2luZyksaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUoaW5wdXRfbGVuID49IDY0KXtcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmKGlucHV0X2xlbilcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyBpbnB1dF9sZW4pLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVGaW5hbFxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1RmluYWwoY3R4KXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZiArKztcbiAgaWYoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA2NDsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MUZGRkZGRkY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKVxuICAgICAgdFtpICogNCArIGpdID0gKGN0eC53W2ldID4+ICg4ICogaikpICYgMHhGRjtcbiAgcmV0dXJuIHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LGEuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pLCBsZW4pO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cbiIsIi8qXG5UbyBkZWFsIHdpdGggZWZmZWN0cywgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGludHVpdGl2ZWx5IGNvbXBvc2VkIG9mXG5hIHN0YWNrIG9mIGZpYmVycy4gRWFjaCBmaWJlciBoYXMgYSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb25cbihvbmUtYXJndW1lbnQgSmF2YVNjcmlwdCBmdW5jdGlvbiksIGEgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZFxuYSB0cmlwbGUgb2YgaGFuZGxlcnMsIHdoaWNoIGFyZSBpbnZva2VkIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXNcbihlaXRoZXIgd2l0aCBhIHZhbHVlIG9yIGFuIGV4Y2VwdGlvbikgb3Igd2hlbiBhbiBlZmZlY3QgaXMgcGVyZm9ybWVkLlxuVGhlIGxvdy1sZXZlbCBjb250aW51YXRpb24gb2YgdGhlIHRvcG1vc3QgZmliZXIgKHdoaWNoIGlzIGN1cnJlbnRseVxuZXhlY3V0aW5nKSBpcyBwYXNzZWQgZnJvbSBmdW5jdGlvbiB0byBmdW5jdGlvbiBhcyBhbiBhZGRpdGlvbmFsXG5hcmd1bWVudC4gSXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBpcyBzdG9yZWQgaW5cbltjYW1sX2V4bl9zdGFja10uIEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFjayB3aGVuXG5lbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuIFRoZW4sIGhhbmRsZXJzIGFuZFxudGhlIHJlbWFpbmluZyBmaWJlcnMgYXJlIHN0b3JlZCBpbiBbY2FtbF9maWJlcl9zdGFja10uIFRvIGluc3RhbGwgYW5cbmVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBpcyBhbiBPQ2FtbCBsaXN0IG9mIGV4Y2VwdGlvbiBoYW5kbGVyc1xudmFyIGNhbWxfZXhuX3N0YWNrID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3B1c2hfdHJhcChoYW5kbGVyKSB7XG4gIGNhbWxfZXhuX3N0YWNrPVswLGhhbmRsZXIsY2FtbF9leG5fc3RhY2tdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfdHJhcCgpIHtcbiAgaWYgKCFjYW1sX2V4bl9zdGFjaykgcmV0dXJuIGZ1bmN0aW9uKHgpe3Rocm93IHg7fVxuICB2YXIgaCA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICBjYW1sX2V4bl9zdGFjaz1jYW1sX2V4bl9zdGFja1syXTtcbiAgcmV0dXJuIGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBoYXMgdGhlIHNoYXBlIHtoLCByOntrLCB4LCBlfX0gd2hlcmUgaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVyc1xuLy8gKHNlZSBlZmZlY3QuanMpIGFuZCBrLCB4IGFuZCBlIGFyZSB0aGUgc2F2ZWQgY29udGludWF0aW9uLFxuLy8gZXhjZXB0aW9uIHN0YWNrIGFuZCBmaWJlciBzdGFjayBvZiB0aGUgcGFyZW50IGZpYmVyLlxudmFyIGNhbWxfZmliZXJfc3RhY2s7XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgaykge1xuICBpZiAoIXN0YWNrKSBjYW1sX3JhaXNlX2NvbnN0YW50XG4gICAgICAgICAgICAgICAgIChjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIikpO1xuICAvLyBVcGRhdGUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggdGhlIHN0YWNrIG9mIGZpYmVycyBpbiBbc3RhY2tdIGluXG4gIC8vIG9yZGVyIHRvIHJlc3VtZSB0aGUgY29udGludWF0aW9uXG4gIGRvIHtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOnN0YWNrWzNdLCByOntrOmssIHg6Y2FtbF9leG5fc3RhY2ssIGU6Y2FtbF9maWJlcl9zdGFja319O1xuICAgIGsgPSBzdGFja1sxXTtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHN0YWNrWzJdO1xuICAgIHN0YWNrID0gc3RhY2tbNF07XG4gIH0gd2hpbGUgKHN0YWNrKVxuICByZXR1cm4gaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfZmliZXJcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIHJlbSA9IGNhbWxfZmliZXJfc3RhY2sucjtcbiAgY2FtbF9leG5fc3RhY2sgPSByZW0ueDtcbiAgY2FtbF9maWJlcl9zdGFjayA9IHJlbS5lO1xuICByZXR1cm4gcmVtLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGVyZm9ybV9lZmZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGNvbnQsIGswKSB7XG4gIC8vIEFsbG9jYXRlIGEgY29udGludWF0aW9uIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBvbmVcbiAgaWYgKCFjb250KSBjb250ID0gWzI0NSAvKmNvbnRpbnVhdGlvbiovLCAwXTtcbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2ZpYmVyX3N0YWNrLmhbM107XG4gIC8vIENvbnMgdGhlIGN1cnJlbnQgZmliZXIgb250byB0aGUgY29udGludWF0aW9uOlxuICAvLyAgIGNvbnQgOj0gQ29ucyAoaywgZXhuX3N0YWNrLCBoYW5kbGVycywgIWNvbnQpXG4gIGNvbnRbMV0gPSBbMCxrMCxjYW1sX2V4bl9zdGFjayxjYW1sX2ZpYmVyX3N0YWNrLmgsY29udFsxXV07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2hhbmRsZXIoZWZmLGNvbnQsazEsazEpXG4gICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLFtlZmYsY29udCxrMSxrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9maWJlcl9zdGFjaywgY2FtbF9jYWxsX2dlbiwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVyblxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIGZ1bmN0aW9uIGNhbGwoaSwgeCkge1xuICAgIHZhciBmPWNhbWxfZmliZXJfc3RhY2suaFtpXTtcbiAgICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2NhbWxfY2FsbF9nZW4oZixhcmdzKVxuICAgICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpO1xuICB9XG4gIGZ1bmN0aW9uIGh2YWwoeCkge1xuICAgIC8vIENhbGwgW2h2XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMSwgeCk7XG4gIH1cbiAgZnVuY3Rpb24gaGV4bihlKSB7XG4gICAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgyLCBlKTtcbiAgfVxuICByZXR1cm4gWzAsIGh2YWwsIFswLCBoZXhuLCAwXSwgWzAsIGh2LCBoeCwgaGZdLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCkge1xuICB2YXIgc3RhY2s9Y29udFsxXTtcbiAgY29udFsxXT0wO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Yyhjb250LCBodmFsLCBoZXhuLCBoZWZmKSB7XG4gIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgc3RhY2tbM10gPSBbMCwgaHZhbCwgaGV4biwgaGVmZl07XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1xuZnVuY3Rpb24gY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fbmV3XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcodW5pdCl7XG4gICAgcmV0dXJuIHtjb25kaXRpb246MX07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3dhaXQodCxtdXRleHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3RcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIUlmOiBlZmZlY3RzXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJFZmZlY3QgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX3NldChhKSB7XG4gIGNhbWxfZG9tYWluX2RscyA9IGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQob2xkLG4pIHtcbiAgaWYoY2FtbF9kb21haW5fZGxzICE9PSBvbGQpIHJldHVybiAwXG4gIGNhbWxfZG9tYWluX2RscyA9IG47XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZChhKSB7XG4gIHJldHVybiBbMCwgYV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyA9IFswXVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl9cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fc2V0X25hbWUoX25hbWUpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCh1bml0KSB7IHJldHVybiAxIH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9pZFxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZix0ZXJtX3N5bmMpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sodGVybV9zeW5jWzJdKTtcbiAgICAvL1RPRE86IGZpeCBleG4gY2FzZVxuICAgIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gICAgcmV0dXJuIGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsbXV0ZXgpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sobXV0ZXgpO1xuICAgIHJldHVybiBpZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2lkKHVuaXQpe1xuICAgIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCh1bml0KXtcbiAgICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCAoY2FwdHVyZWQsIGludG8pe1xuICB2YXIgdG9fcmVzdG9yZSA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2FwdHVyZWQpO1xuICB2YXIgbmV3XyA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoaW50byk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2FwdHVyZWRdID0gbmV3XzsgLy8gWFhYXG4gIHJldHVybiB0b19yZXN0b3JlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUgKGNhcHR1cmVkLCB0b19yZXN0b3JlKXtcbiAgY2FtbF9tbF9jaGFubmVsc1tjYXB0dXJlZF0gPSB0b19yZXN0b3JlOyAvLyBYWFhcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9nZXQoaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbaWRdOyAvLyBYWFhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCAoKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBjID0gMDsgYyA8IGNhbWxfbWxfY2hhbm5lbHMubGVuZ3RoOyBjKyspe1xuICAgIGlmKGNhbWxfbWxfY2hhbm5lbHNbY10gJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vcGVuZWQgJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vdXQpXG4gICAgICBsPVswLGNhbWxfbWxfY2hhbm5lbHNbY10uZmQsbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy5yZG9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgcmVhZG9ubHlcIik7XG4gIHZhciBidWZmZXJlZCA9IChmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQpID8gZmlsZS5mbGFncy5idWZmZXJlZCA6IDE7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICBidWZmZXJlZDpidWZmZXJlZFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3Mud3Jvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHdyaXRlb25seVwiKTtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXJfbWF4OjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICByZWZpbGw6cmVmaWxsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vQWxpYXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5maWxlLmZsYWdzLnRleHQgPSAhbW9kZVxuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYmluYXJ5X21vZGUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5maWxlLmZsYWdzLmJpbmFyeVxufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoY2hhbi5vcGVuZWQpIHtcbiAgICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICAgIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpO1xuICAgIGNoYW4uZmQgPSAtMTtcbiAgICBjaGFuLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkuYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydFxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmVcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IodGFyZ2V0KSB7XG4gIHJldHVybiB7fTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvcihjdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbChjdXJzb3IsIGNhbGxiYWNrcywgbnVtKSB7XG4gIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xXG52YXIgenN0ZF9kZWNvbXByZXNzID0gKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuLy8gYWxpYXNlcyBmb3Igc2hvcnRlciBjb21wcmVzc2VkIGNvZGUgKG1vc3QgbWluaWZlcnMgZG9uJ3QgZG8gdGhpcylcbnZhciBhYiA9IEFycmF5QnVmZmVyLCB1OCA9IFVpbnQ4QXJyYXksIHUxNiA9IFVpbnQxNkFycmF5LCBpMTYgPSBJbnQxNkFycmF5LCB1MzIgPSBVaW50MzJBcnJheSwgaTMyID0gSW50MzJBcnJheTtcbnZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbn07XG52YXIgZmlsbCA9IGZ1bmN0aW9uICh2LCBuLCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5maWxsKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmZpbGwuY2FsbCh2LCBuLCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIGZvciAoOyBzIDwgZTsgKytzKVxuICAgICAgICB2W3NdID0gbjtcbiAgICByZXR1cm4gdjtcbn07XG52YXIgY3B3ID0gZnVuY3Rpb24gKHYsIHQsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmNvcHlXaXRoaW4pXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICAgIHZbdCsrXSA9IHZbcysrXTtcbiAgICB9XG59O1xuLyoqXG4gKiBDb2RlcyBmb3IgZXJyb3JzIGdlbmVyYXRlZCB3aXRoaW4gdGhpcyBsaWJyYXJ5XG4gKi9cbi8vIGVycm9yIGNvZGVzXG52YXIgZWMgPSBbXG4gICAgJ2ludmFsaWQgenN0ZCBkYXRhJyxcbiAgICAnd2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKScsXG4gICAgJ2ludmFsaWQgYmxvY2sgdHlwZScsXG4gICAgJ0ZTRSBhY2N1cmFjeSB0b28gaGlnaCcsXG4gICAgJ21hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjaycsXG4gICAgJ3VuZXhwZWN0ZWQgRU9GJ1xuXTtcbjtcbnZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KVxuICAgICAgICB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xufTtcbnZhciByYiA9IGZ1bmN0aW9uIChkLCBiLCBuKSB7XG4gICAgdmFyIGkgPSAwLCBvID0gMDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSlcbiAgICAgICAgbyB8PSBkW2IrK10gPDwgKGkgPDwgMyk7XG4gICAgcmV0dXJuIG87XG59O1xudmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHsgcmV0dXJuIChkW2JdIHwgKGRbYiArIDFdIDw8IDgpIHwgKGRbYiArIDJdIDw8IDE2KSB8IChkW2IgKyAzXSA8PCAyNCkpID4+PiAwOyB9O1xuLy8gcmVhZCBac3RhbmRhcmQgZnJhbWUgaGVhZGVyXG52YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09IDB4MkZCNTI4ICYmIGRhdFszXSA9PSAyNTMpIHtcbiAgICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICAgIHZhciBmbGcgPSBkYXRbNF07XG4gICAgICAgIC8vICAgIHNpbmdsZSBzZWdtZW50ICAgICAgIGNoZWNrc3VtICAgICAgICAgICAgIGRpY3QgZmxhZyAgICAgZnJhbWUgY29udGVudCBmbGFnXG4gICAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLCBjYyA9IChmbGcgPj4gMikgJiAxLCBkZiA9IGZsZyAmIDMsIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgICBpZiAoZmxnICYgOClcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gYnl0ZVxuICAgICAgICB2YXIgYnQgPSA2IC0gc3M7XG4gICAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgICAgdmFyIGRiID0gZGYgPT0gMyA/IDQgOiBkZjtcbiAgICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgICB2YXIgZGkgPSByYihkYXQsIGJ0LCBkYik7XG4gICAgICAgIGJ0ICs9IGRiO1xuICAgICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICAgIHZhciBmc2IgPSBmY2YgPyAoMSA8PCBmY2YpIDogc3M7XG4gICAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICAgIHZhciBmc3MgPSByYihkYXQsIGJ0LCBmc2IpICsgKChmY2YgPT0gMSkgJiYgMjU2KTtcbiAgICAgICAgLy8gd2luZG93IHNpemVcbiAgICAgICAgdmFyIHdzID0gZnNzO1xuICAgICAgICBpZiAoIXNzKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgdmFyIHdiID0gMSA8PCAoMTAgKyAoZGF0WzVdID4+IDMpKTtcbiAgICAgICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdzID4gMjE0NTM4NjQ5NilcbiAgICAgICAgICAgIGVycigxKTtcbiAgICAgICAgdmFyIGJ1ZiA9IG5ldyB1OCgodyA9PSAxID8gKGZzcyB8fCB3cykgOiB3ID8gMCA6IHdzKSArIDEyKTtcbiAgICAgICAgYnVmWzBdID0gMSwgYnVmWzRdID0gNCwgYnVmWzhdID0gODtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IGJ0ICsgZnNiLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGw6IDAsXG4gICAgICAgICAgICBkOiBkaSxcbiAgICAgICAgICAgIHc6ICh3ICYmIHcgIT0gMSkgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgICAgIGU6IHdzLFxuICAgICAgICAgICAgbzogbmV3IGkzMihidWYuYnVmZmVyLCAwLCAzKSxcbiAgICAgICAgICAgIHU6IGZzcyxcbiAgICAgICAgICAgIGM6IGNjLFxuICAgICAgICAgICAgbTogTWF0aC5taW4oMTMxMDcyLCB3cylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKChuMyA+PiA0KSB8IChkYXRbM10gPDwgMjApKSA9PSAweDE4NEQyQTUpIHtcbiAgICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICAgIHJldHVybiBiNChkYXQsIDQpICsgODtcbiAgICB9XG4gICAgZXJyKDApO1xufTtcbi8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZvciBub256ZXJvXG52YXIgbXNiID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBiaXRzID0gMDtcbiAgICBmb3IgKDsgKDEgPDwgYml0cykgPD0gdmFsOyArK2JpdHMpXG4gICAgICAgIDtcbiAgICByZXR1cm4gYml0cyAtIDE7XG59O1xuLy8gcmVhZCBmaW5pdGUgc3RhdGUgZW50cm9weVxudmFyIHJmc2UgPSBmdW5jdGlvbiAoZGF0LCBidCwgbWFsKSB7XG4gICAgLy8gdGFibGUgcG9zXG4gICAgdmFyIHRwb3MgPSAoYnQgPDwgMykgKyA0O1xuICAgIC8vIGFjY3VyYWN5IGxvZ1xuICAgIHZhciBhbCA9IChkYXRbYnRdICYgMTUpICsgNTtcbiAgICBpZiAoYWwgPiBtYWwpXG4gICAgICAgIGVycigzKTtcbiAgICAvLyBzaXplXG4gICAgdmFyIHN6ID0gMSA8PCBhbDtcbiAgICAvLyBwcm9iYWJpbGl0aWVzIHN5bWJvbHMgIHJlcGVhdCAgIGluZGV4ICAgaGlnaCB0aHJlc2hvbGRcbiAgICB2YXIgcHJvYnMgPSBzeiwgc3ltID0gLTEsIHJlID0gLTEsIGkgPSAtMSwgaHQgPSBzejtcbiAgICAvLyBvcHRpbWl6YXRpb246IHNpbmdsZSBhbGxvY2F0aW9uIGlzIG11Y2ggZmFzdGVyXG4gICAgdmFyIGJ1ZiA9IG5ldyBhYig1MTIgKyAoc3ogPDwgMikpO1xuICAgIHZhciBmcmVxID0gbmV3IGkxNihidWYsIDAsIDI1Nik7XG4gICAgLy8gc2FtZSB2aWV3IGFzIGZyZXFcbiAgICB2YXIgZHN0YXRlID0gbmV3IHUxNihidWYsIDAsIDI1Nik7XG4gICAgdmFyIG5zdGF0ZSA9IG5ldyB1MTYoYnVmLCA1MTIsIHN6KTtcbiAgICB2YXIgYmIxID0gNTEyICsgKHN6IDw8IDEpO1xuICAgIHZhciBzeW1zID0gbmV3IHU4KGJ1ZiwgYmIxLCBzeik7XG4gICAgdmFyIG5iaXRzID0gbmV3IHU4KGJ1ZiwgYmIxICsgc3opO1xuICAgIHdoaWxlIChzeW0gPCAyNTUgJiYgcHJvYnMgPiAwKSB7XG4gICAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICAgIHZhciBjYnQgPSB0cG9zID4+IDM7XG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgICAgdmFyIHZhbCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+ICh0cG9zICYgNykpICYgbXNrO1xuICAgICAgICAvLyBtYXNrICgxIGZld2VyIGJpdClcbiAgICAgICAgdmFyIG1zazFmYiA9ICgxIDw8IGJpdHMpIC0gMTtcbiAgICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBtc3YgPSBtc2sgLSBwcm9icyAtIDE7XG4gICAgICAgIC8vIHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgICBpZiAoc3ZhbCA8IG1zdilcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cywgdmFsID0gc3ZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cG9zICs9IGJpdHMgKyAxO1xuICAgICAgICAgICAgaWYgKHZhbCA+IG1zazFmYilcbiAgICAgICAgICAgICAgICB2YWwgLT0gbXN2O1xuICAgICAgICB9XG4gICAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICAgIGlmICh2YWwgPT0gLTEpIHtcbiAgICAgICAgICAgIHByb2JzICs9IHZhbDtcbiAgICAgICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvYnMgLT0gdmFsO1xuICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJlID09IDMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzeW0gPiAyNTUgfHwgcHJvYnMpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3ltcG9zID0gMDtcbiAgICAvLyBzeW0gc3RlcCAoY29wcmltZSB3aXRoIHN6IC0gZm9ybXVsYSBmcm9tIHpzdGQgc291cmNlKVxuICAgIHZhciBzc3RlcCA9IChzeiA+PiAxKSArIChzeiA+PiAzKSArIDM7XG4gICAgLy8gc3ltIG1hc2tcbiAgICB2YXIgc21hc2sgPSBzeiAtIDE7XG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPD0gc3ltOyArK3MpIHtcbiAgICAgICAgdmFyIHNmID0gZnJlcVtzXTtcbiAgICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICAgICAgZHN0YXRlW3NdID0gLXNmO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZjsgKytpKSB7XG4gICAgICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHN5bXBvcyA9IChzeW1wb3MgKyBzc3RlcCkgJiBzbWFzaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHN5bXBvcyA+PSBodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgc3ByZWFkaW5nIHN5bWJvbHMsIHNob3VsZCBiZSB6ZXJvIGFnYWluXG4gICAgaWYgKHN5bXBvcylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzejsgKytpKSB7XG4gICAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgICAgdmFyIG5zID0gZHN0YXRlW3N5bXNbaV1dKys7XG4gICAgICAgIC8vIG51bSBiaXRzXG4gICAgICAgIHZhciBuYiA9IG5iaXRzW2ldID0gYWwgLSBtc2IobnMpO1xuICAgICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbKHRwb3MgKyA3KSA+PiAzLCB7XG4gICAgICAgICAgICBiOiBhbCxcbiAgICAgICAgICAgIHM6IHN5bXMsXG4gICAgICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgICAgIHQ6IG5zdGF0ZVxuICAgICAgICB9XTtcbn07XG4vLyByZWFkIGh1ZmZtYW5cbnZhciByaHUgPSBmdW5jdGlvbiAoZGF0LCBidCkge1xuICAgIC8vICBpbmRleCAgd2VpZ2h0IGNvdW50XG4gICAgdmFyIGkgPSAwLCB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSwgaGIgPSBkYXRbYnRdO1xuICAgIC8vIGh1ZmZtYW4gd2VpZ2h0c1xuICAgIHZhciBodyA9IGJ1Zi5zdWJhcnJheSgwLCAyNTYpO1xuICAgIC8vIHJhbmsgY291bnRcbiAgICB2YXIgcmMgPSBidWYuc3ViYXJyYXkoMjU2LCAyNjgpO1xuICAgIC8vIHJhbmsgaW5kZXhcbiAgICB2YXIgcmkgPSBuZXcgdTE2KGJ1Zi5idWZmZXIsIDI2OCk7XG4gICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCBidCBpcyAxIGxlc3MgdGhhbiBleHBlY3RlZFxuICAgIGlmIChoYiA8IDEyOCkge1xuICAgICAgICAvLyBlbmQgYnl0ZSwgZnNlIGRlY29kZSB0YWJsZVxuICAgICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSwgZWJ0ID0gX2FbMF0sIGZkdCA9IF9hWzFdO1xuICAgICAgICBidCArPSBoYjtcbiAgICAgICAgdmFyIGVwb3MgPSBlYnQgPDwgMztcbiAgICAgICAgLy8gbGFzdCBieXRlXG4gICAgICAgIHZhciBsYiA9IGRhdFtidF07XG4gICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vICBzdGF0ZTEgICBzdGF0ZTIgICBzdGF0ZTEgYml0cyAgIHN0YXRlMiBiaXRzXG4gICAgICAgIHZhciBzdDEgPSAwLCBzdDIgPSAwLCBidHIxID0gZmR0LmIsIGJ0cjIgPSBidHIxO1xuICAgICAgICAvLyBmc2UgcG9zXG4gICAgICAgIC8vIHByZS1pbmNyZW1lbnQgdG8gYWNjb3VudCBmb3Igb3JpZ2luYWwgZGVmaWNpdCBvZiAxXG4gICAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdmFyIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MSArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QxXTtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMjtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MiArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMikgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgICAgIGJ0cjEgPSBmZHQubltzdDFdO1xuICAgICAgICAgICAgc3QxID0gZmR0LnRbc3QxXTtcbiAgICAgICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICAgICAgc3QyID0gZmR0LnRbc3QyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKyt3YyA+IDI1NSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdjID0gaGIgLSAxMjc7XG4gICAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRbKytidF07XG4gICAgICAgICAgICBod1tpXSA9IGJ5dGUgPj4gNDtcbiAgICAgICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgIH1cbiAgICAvLyB3ZWlnaHQgZXhwb25lbnRpYWwgc3VtXG4gICAgdmFyIHdlcyA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgIC8vIGJpdHMgbXVzdCBiZSBhdCBtb3N0IDExLCBzYW1lIGFzIHdlaWdodFxuICAgICAgICBpZiAod3QgPiAxMSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgd2VzICs9IHd0ICYmICgxIDw8ICh3dCAtIDEpKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKVxuICAgICAgICBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgICsrcmNbaHdbaV0gPSB3dCAmJiAobWIgKyAxIC0gd3QpXTtcbiAgICB9XG4gICAgLy8gaHVmIGJ1ZlxuICAgIHZhciBoYnVmID0gbmV3IHU4KHRzIDw8IDEpO1xuICAgIC8vICAgIHN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgbnVtIGJpdHNcbiAgICB2YXIgc3ltcyA9IGhidWYuc3ViYXJyYXkoMCwgdHMpLCBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHB2ID0gcmlbaV07XG4gICAgICAgIGZpbGwobmIsIGksIHB2LCByaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKTtcbiAgICB9XG4gICAgaWYgKHJpWzBdICE9IHRzKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgICAgaWYgKGJpdHMpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgICAgICBmaWxsKHN5bXMsIGksIGNvZGUsIHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtidCwge1xuICAgICAgICAgICAgbjogbmIsXG4gICAgICAgICAgICBiOiBtYixcbiAgICAgICAgICAgIHM6IHN5bXNcbiAgICAgICAgfV07XG59O1xuLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTAxYXJyb3d6L2E5Nzk0NTJkNDM1NTk5MmNiZjhmMjU3Y2JmZmM5ZWRkXG4vLyBkZWZhdWx0IGxpdGVyYWwgbGVuZ3RoIHRhYmxlXG52YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgODEsIDE2LCA5OSwgMTQwLCA0OSwgMTk4LCAyNCwgOTksIDEyLCAzMywgMTk2LCAyNCwgOTksIDEwMiwgMTAyLCAxMzQsIDcwLCAxNDYsIDRcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgbWF0Y2ggbGVuZ3RoIHRhYmxlXG52YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzMsIDIwLCAxOTYsIDI0LCA5OSwgMTQwLCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDlcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgb2Zmc2V0IGNvZGUgdGFibGVcbnZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXG5dKSwgMCwgNSlbMV07XG4vLyBiaXRzIHRvIGJhc2VsaW5lXG52YXIgYjJibCA9IGZ1bmN0aW9uIChiLCBzKSB7XG4gICAgdmFyIGxlbiA9IGIubGVuZ3RoLCBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGJsW2ldID0gcztcbiAgICAgICAgcyArPSAxIDw8IGJbaV07XG4gICAgfVxuICAgIHJldHVybiBibDtcbn07XG4vLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG52YXIgbGxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTNcbl0pKS5idWZmZXIsIDAsIDM2KTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG52YXIgbGxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobGxiLCAwKTtcbi8vIG1hdGNoIGxlbmd0aCBiaXRzXG52YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDExNzc2OTIyMCwgMTg1MjA3MDQ4LCAyNTI1NzkwODQsIDE2XG5dKSkuYnVmZmVyLCAwLCA1Myk7XG4vLyBtYXRjaCBsZW5ndGggYmFzZWxpbmVcbnZhciBtbGJsID0gLyojX19QVVJFX18gKi8gYjJibChtbGIsIDMpO1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG52YXIgZGh1ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBsZW4gPSBkYXQubGVuZ3RoLCBzcyA9IG91dC5sZW5ndGgsIGxiID0gZGF0W2xlbiAtIDFdLCBtc2sgPSAoMSA8PCBodS5iKSAtIDEsIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYilcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsIGJ0ciA9IGh1LmIsIHBvcyA9IChsZW4gPDwgMykgLSA4ICsgbXNiKGxiKSAtIGJ0ciwgaSA9IC0xO1xuICAgIGZvciAoOyBwb3MgPiBlYiAmJiBpIDwgc3M7KSB7XG4gICAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgICAgdmFyIHZhbCA9IChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHBvcyAmIDcpO1xuICAgICAgICBzdCA9ICgoc3QgPDwgYnRyKSB8IHZhbCkgJiBtc2s7XG4gICAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICAgIHBvcyAtPSAoYnRyID0gaHUubltzdF0pO1xuICAgIH1cbiAgICBpZiAocG9zICE9IGViIHx8IGkgKyAxICE9IHNzKVxuICAgICAgICBlcnIoMCk7XG59O1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtIDR4XG4vLyBUT0RPOiB1c2Ugd29ya2VycyB0byBwYXJhbGxlbGl6ZVxudmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLCBzejEgPSAoc3MgKyAzKSA+PiAyLCBzejIgPSBzejEgPDwgMSwgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoMCwgc3oxKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFsyXSB8IChkYXRbM10gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzRdIHwgKGRhdFs1XSA8PCA4KSksIG91dC5zdWJhcnJheShzejIsIHN6MyksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbn07XG4vLyByZWFkIFpzdGFuZGFyZCBibG9ja1xudmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLCBidHlwZSA9IChiMCA+PiAxKSAmIDM7XG4gICAgc3QubCA9IGIwICYgMTtcbiAgICB2YXIgc3ogPSAoYjAgPj4gMykgfCAoZGF0W2J0ICsgMV0gPDwgNSkgfCAoZGF0W2J0ICsgMl0gPDwgMTMpO1xuICAgIC8vIGVuZCBieXRlIGZvciBibG9ja1xuICAgIHZhciBlYnQgPSAoYnQgKz0gMykgKyBzejtcbiAgICBpZiAoYnR5cGUgPT0gMSkge1xuICAgICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIHN0LnkgKz0gc3opO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT0gMCkge1xuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBvdXQuc2V0KGRhdC5zdWJhcnJheShidCwgZWJ0KSwgc3QueSk7XG4gICAgICAgICAgICBzdC55ICs9IHN6O1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xjKGRhdCwgYnQsIGVidCk7XG4gICAgfVxuICAgIGlmIChidHlwZSA9PSAyKSB7XG4gICAgICAgIC8vICAgIGJ5dGUgMyAgICAgICAgbGl0IGJ0eXBlICAgICBzaXplIGZvcm1hdFxuICAgICAgICB2YXIgYjMgPSBkYXRbYnRdLCBsYnQgPSBiMyAmIDMsIHNmID0gKGIzID4+IDIpICYgMztcbiAgICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgICB2YXIgbHNzID0gYjMgPj4gNCwgbGNzID0gMCwgczQgPSAwO1xuICAgICAgICBpZiAobGJ0IDwgMikge1xuICAgICAgICAgICAgaWYgKHNmICYgMSlcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoc2YgJiAyKSAmJiAoZGF0WysrYnRdIDw8IDEyKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzID0gYjMgPj4gMztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gc2Y7XG4gICAgICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2YgPT0gMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgMykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiAyKSB8IChkYXRbKytidF0gPDwgNik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDYzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKSB8IChkYXRbKytidF0gPDwgMTApO1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgICB2YXIgYnVmID0gb3V0ID8gb3V0LnN1YmFycmF5KHN0LnksIHN0LnkgKyBzdC5tKSA6IG5ldyB1OChzdC5tKTtcbiAgICAgICAgLy8gc3RhcnRpbmcgcG9pbnQgZm9yIGxpdGVyYWxzXG4gICAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgICBpZiAobGJ0ID09IDApXG4gICAgICAgICAgICBidWYuc2V0KGRhdC5zdWJhcnJheShidCwgYnQgKz0gbHNzKSwgc3BsKTtcbiAgICAgICAgZWxzZSBpZiAobGJ0ID09IDEpXG4gICAgICAgICAgICBmaWxsKGJ1ZiwgZGF0W2J0KytdLCBzcGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGh1ZmZtYW4gdGFibGVcbiAgICAgICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgICAgICBpZiAobGJ0ID09IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWh1KVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIChzNCA/IGRodTQgOiBkaHUpKGRhdC5zdWJhcnJheShidCwgYnQgKz0gbGNzKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBudW0gc2VxdWVuY2VzXG4gICAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgICBpZiAobnMgPT0gMjU1KVxuICAgICAgICAgICAgICAgIG5zID0gKGRhdFtidCsrXSB8IChkYXRbYnQrK10gPDwgOCkpICsgMHg3RjAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobnMgPiAxMjcpXG4gICAgICAgICAgICAgICAgbnMgPSAoKG5zIC0gMTI4KSA8PCA4KSB8IGRhdFtidCsrXTtcbiAgICAgICAgICAgIC8vIHN5bWJvbCBjb21wcmVzc2lvbiBtb2Rlc1xuICAgICAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgICAgIGlmIChzY20gJiAzKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBkdHMgPSBbZG1sdCwgZG9jdCwgZGxsdF07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMjsgaSA+IC0xOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWQgPSAoc2NtID4+ICgoaSA8PCAxKSArIDIpKSAmIDM7XG4gICAgICAgICAgICAgICAgaWYgKG1kID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgICAgICAgICB2YXIgcmJ1ZiA9IG5ldyB1OChbMCwgMCwgZGF0W2J0KytdXSk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM6IHJidWYuc3ViYXJyYXkoMiwgMyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdDogbmV3IHUxNihyYnVmLmJ1ZmZlciwgMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiOiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICBfYSA9IHJmc2UoZGF0LCBidCwgOSAtIChpICYgMSkpLCBidCA9IF9hWzBdLCBkdHNbaV0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0LnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHN0LnRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9iID0gc3QudCA9IGR0cywgbWx0ID0gX2JbMF0sIG9jdCA9IF9iWzFdLCBsbHQgPSBfYlsyXTtcbiAgICAgICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIHNwb3MgPSAoZWJ0IDw8IDMpIC0gOCArIG1zYihsYikgLSBsbHQuYiwgY2J0ID0gc3BvcyA+PiAzLCBvdWJ0ID0gMDtcbiAgICAgICAgICAgIHZhciBsc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGx0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBvc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2N0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBtc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWx0LmIpIC0gMSk7XG4gICAgICAgICAgICBmb3IgKCsrbnM7IC0tbnM7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGxsYyA9IGxsdC5zW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIGxidHIgPSBsbHQubltsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtbGMgPSBtbHQuc1ttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtYnRyID0gbWx0Lm5bbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2ZjID0gb2N0LnNbb3N0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2J0ciA9IG9jdC5uW29zdF07XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2ZjKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBvZnAgPSAxIDw8IG9mYztcbiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb2ZwICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikgfCAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+IChzcG9zICYgNykpICYgKG9mcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbWwgPSBtbGJsW21sY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWxiW21sY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxsYltsbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBsbCA9IGxsYmxbbGxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbGJbbGxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBsc3QgPSBsbHQudFtsc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG1zdCA9IG1sdC50W21zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgb3N0ID0gb2N0LnRbb3N0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2J0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZiA+IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmIC09IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9IDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBpZHggPT0gMyA/IHN0Lm9bMF0gLSAxIDogc3Qub1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbGwsIHNwbCArPSBsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RpbiA9IG91YnQgLSBvZmY7XG4gICAgICAgICAgICAgICAgaWYgKHN0aW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJzID0gc3QuZSArIHN0aW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IG1sO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gc3Qud1ticyArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91YnQgKz0gbGVuLCBtbCAtPSBsZW4sIHN0aW4gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzdGluICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3VidCAhPSBzcGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCsrXSA9IGJ1ZltzcGwrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICBzdC55ICs9IG91YnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzczsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcGwpXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgICAgfVxuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG59O1xuLy8gY29uY2F0XG52YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09IDEpXG4gICAgICAgIHJldHVybiBidWZzWzBdO1xuICAgIHZhciBidWYgPSBuZXcgdTgob2wpO1xuICAgIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoayA9IGJ1ZnNbaV07XG4gICAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgICAgYiArPSBjaGsubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufTtcbi8qKlxuICogRGVjb21wcmVzc2VzIFpzdGFuZGFyZCBkYXRhXG4gKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gKiBAcGFyYW0gYnVmIFRoZSBvdXRwdXQgYnVmZmVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGVcbiAqICAgICAgICAgICAgZXhhY3RseSBlbm91Z2ggbWVtb3J5IHRvIGZpdCB0aGUgZGVjb21wcmVzc2VkIGRhdGEuIElmIHlvdXJcbiAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAqICAgICAgICAgICAgaXQgd2lsbCB5aWVsZCBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGVjb21wcmVzc2VkIGRhdGFcbiAqL1xucmV0dXJuIGZ1bmN0aW9uIGRlY29tcHJlc3MoZGF0LCBidWYpIHtcbiAgICB2YXIgYnQgPSAwLCBidWZzID0gW10sIG5iID0gKyFidWYsIG9sID0gMDtcbiAgICBmb3IgKDsgZGF0Lmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHN0ID0gcnpmaChkYXQsIG5iIHx8IGJ1Zik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3QgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChuYikge1xuICAgICAgICAgICAgICAgIGJ1ZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHN0LncubGVuZ3RoID09IHN0LnUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1ZiA9IHN0LncpO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBzdC51O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIHN0LmUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7ICFzdC5sOykge1xuICAgICAgICAgICAgICAgIHZhciBibGsgPSByemIoZGF0LCBzdCwgYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWJsaylcbiAgICAgICAgICAgICAgICAgICAgZXJyKDUpO1xuICAgICAgICAgICAgICAgIGlmIChidWYpXG4gICAgICAgICAgICAgICAgICAgIHN0LmUgPSBzdC55O1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gYmxrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY3B3KHN0LncsIDAsIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnQgPSBzdC5iICsgKHN0LmMgKiA0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidCA9IHN0O1xuICAgICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbn1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMFxuLy9WZXJzaW9uOiA8IDUuMS4xXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMVxuLy9WZXJzaW9uOiA8IDUuMi4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUodW5pdCkge1xuICBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG4gIHJldHVybiAxXG59XG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmICh2IGluc3RhbmNlb2YgT2JqZWN0ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0ucmVnaXN0ZXIpIHhbMV0ucmVnaXN0ZXIodiwgdW5kZWZpbmVkLCB2KTtcbiAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBuZXcgZ2xvYmFsVGhpcy5XZWFrUmVmKHYpO1xuICB9XG4gIGVsc2UgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFsxXS51bnJlZ2lzdGVyKSB7XG4gICAgdmFyIG9sZCA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXS5kZXJlZigpO1xuICAgIGlmKG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgY291bnQgPSAwXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKXtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKVxuICAgICAgICAgIGlmKGtleSA9PT0gb2xkKSBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihjb3VudCA9PSAxKSB4WzFdLnVucmVnaXN0ZXIob2xkKTtcbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGUsIGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZSAobikge1xuICB2YXIgeCA9IGNhbWxfd2Vha19jcmVhdGUobik7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYodiA9PSAwKSBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsaSlcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2tleSh4LGksdlsxXSlcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgcmV0dXJuICh3ZWFrPT09dW5kZWZpbmVkKT8wOlswLCB3ZWFrXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfa2V5LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2NoZWNrXG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICBpZih3ZWFrPT09dW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX3NldF9kYXRhLCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIHZhciBuID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmKG4gPT09IHVuZGVmaW5lZCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoZHN0KTtcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2RhdGEoZHN0LCBuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoISAoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpKSB7XG4gICAgICB4WzFdID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKCkgeyBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB9KTtcbiAgICAgIC8vcmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0ucmVnaXN0ZXIoa2V5LCB1bmRlZmluZWQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSl7XG4gICAgICAvL3VucmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0udW5yZWdpc3RlcihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG4vL1ZlcnNpb246ID49IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbi8vUmVxdWlyZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICByZXR1cm4gY2FtbF9nY19xdWlja19zdGF0KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKVxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoY2IsIGEpIHtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgdmFyIHggPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoeCl7YWxsX2ZpbmFsaXplcnMuZGVsZXRlKHgpOyBjYigwKTsgcmV0dXJuO30pO1xuICAgIHgucmVnaXN0ZXIoYSx4KTtcbiAgICBhbGxfZmluYWxpemVycy5hZGQoeCk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9kaXNjYXJkXG5mdW5jdGlvbiBjYW1sX21lbXByb2ZfZGlzY2FyZCh0KSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcmVzdW1lKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19wYXVzZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvcl9zbGljZVxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcl9zbGljZSh3b3JrKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3Jfd29yZHModW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfYnVja2V0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9idWNrZXQobikgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9jcmVkaXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2NyZWRpdChuKSB7IHJldHVybiAwOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IGYudXBwZXJjYXNlP1wiMFhcIjpcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgKGdsb2JhbFRoaXMubmF2aWdhdG9yJiZnbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgICA/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBjb25zb2xlO1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2O1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSByZXR1cm4gLWJhc2UtMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIE5ldyBsZXhlciBlbmdpbmUsIHdpdGggbWVtb3J5IG9mIHBvc2l0aW9ucyAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3Bvcykge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gY3Vycl9wb3M7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBpLCBtZW0pIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybiA7XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSAtMTtcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfbWVtID0gMTA7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcbiAgdmFyIGxleF9iYXNlX2NvZGUgPSA2O1xuICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDc7XG4gIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gODtcbiAgdmFyIGxleF90cmFuc19jb2RlID0gOTtcbiAgdmFyIGxleF9jaGVja19jb2RlID0gMTA7XG4gIHZhciBsZXhfY29kZSA9IDExO1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG4gIGlmICghdGJsLmxleF9kZWZhdWx0X2NvZGUpIHtcbiAgICB0YmwubGV4X2Jhc2VfY29kZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VfY29kZV0pO1xuICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0X2NvZGVdKTtcbiAgfVxuICBpZiAodGJsLmxleF9jb2RlID09IG51bGwpIHRibC5sZXhfY29kZSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2Jhc2VfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgcmV0dXJuIC1iYXNlLTE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICB2YXIgcHN0YXRlID0gc3RhdGUgO1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSwgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PSBwc3RhdGUpXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTtcbiAgICAgIGlmIChwY19vZmYgPiAwKVxuICAgICAgICBjYW1sX2xleF9ydW5fbWVtXG4gICAgICAodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pO1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF94b3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmV3X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9seG1fbmV4dCh2KSB7XG4gIGZ1bmN0aW9uIHNoaWZ0X2woeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHhvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF94b3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfYWRkKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gbXVsKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHJvdGwoeCwgaykge1xuICAgIHJldHVybiBvcihzaGlmdF9sKHgsayksc2hpZnRfciAoeCwgNjQgLSBrKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KGEsIGkpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9nZXRfMShhLCBpKTtcbiAgfVxuICBmdW5jdGlvbiBzZXQoYSwgaSwgeCkge1xuICAgIHJldHVybiBjYW1sX2JhX3NldF8xKGEsIGksIHgpO1xuICB9XG4gIHZhciBNID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkMTM0MjU0M2RlODJlZjk1XCIpKTtcbiAgdmFyIGRhYmEgPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGRhYmEwYjZlYjA5MzIyZTNcIikpO1xuICB2YXIgeiwgcTAsIHExO1xuICB2YXIgc3QgPSB2O1xuICB2YXIgYSA9IGdldChzdCwwKTtcbiAgdmFyIHMgPSBnZXQoc3QsMSk7XG4gIHZhciB4MCA9IGdldChzdCwyKTtcbiAgdmFyIHgxID0gZ2V0KHN0LDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0geG9yKHosc2hpZnRfcih6LDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQgKG11bChzLE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDBcbiAgdmFyIHExID0geDFcbiAgcTEgPSB4b3IocTEscTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIChzaGlmdF9sKHExLDE2KSkpO1xuICBxMSA9IHJvdGwocTEsIDM3KTtcbiAgc2V0KHN0LCAyLCBxMCk7XG4gIHNldChzdCwgMywgcTEpO1xuICAvKiBSZXR1cm4gcmVzdWx0ICovXG4gIHJldHVybiB6O1xufVxuIiwiLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxudmFyIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyclxuXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIsIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbmZ1bmN0aW9uIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCAodm91dHB1dCwgdnN0ZG91dCwgdnN0ZGVycil7XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdO1xuICBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0ID0gY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XTtcbiAgdmFyIG91dHB1dCA9IGNhbWxfbWxfY2hhbm5lbHNbdm91dHB1dF07XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBvdXRwdXQ7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl0gPSBvdXRwdXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QgKHZzdGRvdXQsIHZzdGRlcnIpe1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX291dF9jaGFubmVsX3Bvc19mZChjaGFuKXtcbiAgdmFyIGluZm8gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5dO1xuICByZXR1cm4gaW5mby5vZmZzZXRcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqL1xuXG4vKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi9cblxuLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG52YXIgY2FtbF9wYXJzZXJfdHJhY2UgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXksIGNhbWxfcGFyc2VyX3RyYWNlLGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgdmFyIHRibF9uYW1lc19jb25zdCA9IDE1O1xuICB2YXIgdGJsX25hbWVzX2Jsb2NrID0gMTY7XG5cblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoMiwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcilcbiAge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PSAnXFx4MDAnKVxuICAgICAgcmV0dXJuIFwiPHVua25vd24gdG9rZW4+XCI7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnXFx4MDAnKVtudW1iZXJdO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRfdG9rZW4oc3RhdGUsIHRvaylcbiAge1xuICAgIHZhciB0b2tlbiwga2luZDtcbiAgICBpZiAodG9rIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2Jsb2NrXSwgdG9rWzBdKTtcbiAgICAgIGlmICh0eXBlb2YgdG9rWzFdID09IFwibnVtYmVyXCIpXG4gICAgICAgIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PSBcInN0cmluZ1wiKVxuICAgICAgICBraW5kID0gdG9rWzFdXG4gICAgICBlbHNlIGlmICh0b2tbMV0gaW5zdGFuY2VvZiBNbEJ5dGVzKVxuICAgICAgICBraW5kID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0b2tbMV0pXG4gICAgICBlbHNlXG4gICAgICAgIGtpbmQgPSBcIl9cIlxuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4gKyBcIihcIiArIGtpbmQgKyBcIilcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2NvbnN0XSwgdG9rKTtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgbmV4dDpzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4gKHN0YXRlLCBhcmcpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDc6Ly90ZXN0c2hpZnQ6XG4gICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgY21kID0gc2hpZnQ7IGJyZWFrO1xuICAgICAgfVxuICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBjbWQgPSByZWR1Y2U7IGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICByZXMgPSBDQUxMX0VSUk9SX0ZVTkNUSU9OO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICBjYXNlIDU6Ly9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgIGlmIChlcnJmbGFnIDwgMykge1xuICAgICAgICBlcnJmbGFnID0gMztcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3AgKyAxXTtcbiAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTtcbiAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhayBuZXh0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgICAgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKVxuICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjsgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIGxhc3QgdG9rZW4gcmVhZFwiKTtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiBzaGlmdCB0byBzdGF0ZSBcIiArIHRhYmxlcy50YWJsZVtuMl0pO1xuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWR1Y2UgYnkgcnVsZSBcIiArIG4pO1xuICAgICAgdmFyIG0gPSB0YWJsZXMubGVuW25dO1xuICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47XG4gICAgICBlbnZbZW52X3J1bGVfbGVuXSA9IG07XG4gICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICBtID0gdGFibGVzLmxoc1tuXTtcbiAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3BdO1xuICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgbjIgPSBuMSArIHN0YXRlMTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpXG4gICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzI7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMzovL1NUQUNLU19HUk9XTl8yOlxuICAgICAgcmVzID0gQ09NUFVURV9TRU1BTlRJQ19BQ1RJT047XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIHNlbWFudGljIGFjdGlvbiAqL1xuICAgIGNhc2UgNDovL1NFTUFOVElDX0FDVElPTl9DT01QVVRFRDpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gYXJnO1xuICAgICAgdmFyIGFzcCA9IGVudltlbnZfYXNwXTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIGlmIChzcCA+IGFzcCkge1xuICAgICAgICAvKiBUaGlzIGlzIGFuIGVwc2lsb24gcHJvZHVjdGlvbi4gVGFrZSBzeW1iX3N0YXJ0IGVxdWFsIHRvIHN5bWJfZW5kLiAqL1xuICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIH1cbiAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvLyBTQVZFXG4gIGVudltlbnZfc3BdID0gc3A7XG4gIGVudltlbnZfc3RhdGVdID0gc3RhdGU7XG4gIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9wYXJzZXJfdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG5mdW5jdGlvbiBjYW1sX3NldF9wYXJzZXJfdHJhY2UoYm9vbCkge1xuICB2YXIgb2xkZmxhZyA9IGNhbWxfcGFyc2VyX3RyYWNlO1xuICBjYW1sX3BhcnNlcl90cmFjZSA9IGJvb2w7XG4gIHJldHVybiBvbGRmbGFnO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJfaW5pdGlhbGl6ZVxuZnVuY3Rpb24gY2FtbF9zdHJfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcbmZ1bmN0aW9uIGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrKHgpe1xuICByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpO1xufVxuXG4iLCIvL1Byb3ZpZGVzOiBqc19wZXJmb3JtYW5jZVxudmFyIGpzX3BlcmZvcm1hbmNlID0ge21hcms6IChmdW5jdGlvbiAoKSB7fSksIG1lYXN1cmU6IChmdW5jdGlvbiAoKSB7fSkgfTtcbmlmICh0eXBlb2Ygam9vX2dsb2JhbF9vYmplY3QucGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAganNfcGVyZm9ybWFuY2UgPSBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZTtcbn0gZWxzZSB7XG4gIHRyeSB7XG4gICAgdmFyIHBlcmZfaG9va3MgPSByZXF1aXJlKCdwZXJmX2hvb2tzJyk7XG4gICAganNfcGVyZm9ybWFuY2UgPSBwZXJmX2hvb2tzLnBlcmZvcm1hbmNlO1xuICAgIGpvb19nbG9iYWxfb2JqZWN0LlBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBwZXJmX2hvb2tzLlBlcmZvcm1hbmNlT2JzZXJ2ZXI7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKFwiY291bGRuJ3QgbG9hZCBwZXJmb3JtYW5jZSBob29rc1wiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX21hcmtcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfbWFyayhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UubWFyayhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWVhc3VyZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tZWFzdXJlKG5hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tZWFzdXJlKFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSwgXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHN0YXJ0KSwgXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGVuZCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9jbGVhcl9tYXJrc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9jbGVhcl9tYXJrcygpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5jbGVhck1hcmtzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21lYXN1cmVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21lYXN1cmVzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbiIsIi8vLy8vLy8vLyBUSU1FX05PV1xuXG4vL1Byb3ZpZGVzOiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX2ludDY0X29mX2ludDMyXG52YXIgbXNfdG9fbmFubyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMTAwMCoxMDAwKTtcbmZ1bmN0aW9uIHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybygpe1xuICAgIHZhciBtcyA9IERhdGUubm93KCk7XG4gICAgLy8gbXVsdGlwbGUgYnkgdHdvIC0gaW50NjMgaW50ZWdlcnMgYXJlIHNoaWZ0ZWQgdG8gdGhlIGxlZnRcbiAgICB2YXIgbXNfaTYzID0gY2FtbF9pbnQ2NF9vZl9mbG9hdChtcyoyKTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwobXNfaTYzLG1zX3RvX25hbm8pO1xufVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogUGFkZGluZyBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpkXCIpICopXG4gIHwgQXJnX3BhZGRpbmcgOiBwYWR0eSAtPiAoaW50IC0+ICdhLCAnYSkgcGFkZGluZ1xuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9kLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHBhZGRpbmcgb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcGFkX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogUHJlY2lzaW9uIG9mIGZsb2F0cyBhbmQgJzAnLXBhZGRpbmcgb2YgaW50ZWdlcnMuICopXG50eXBlICgnYSwgJ2IpIHByZWNpc2lvbiA9XG4gICgqIE5vIHByZWNpc2lvbiAoZXg6IFwiJWZcIikgKilcbiAgfCBOb19wcmVjaXNpb24gOiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogTGl0ZXJhbCBwcmVjaXNpb24gKGV4OiBcIiUuM2ZcIikgKilcbiAgfCBMaXRfcHJlY2lzaW9uIDogaW50IC0+ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBQcmVjaXNpb24gYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikgKilcbiAgfCBBcmdfcHJlY2lzaW9uIDogKGludCAtPiAnYSwgJ2EpIHByZWNpc2lvblxuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9mLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHByZWNpc2lvbiBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwcmVjX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogc2VlIHRoZSBDdXN0b20gZm9ybWF0IGNvbWJpbmF0b3IgKilcbnR5cGUgKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSA9XG4gIHwgQ3VzdG9tX3plcm8gOiAoJ2EsIHN0cmluZywgJ2EpIGN1c3RvbV9hcml0eVxuICB8IEN1c3RvbV9zdWNjIDogKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSAtPlxuICAgICgnYSwgJ3ggLT4gJ2IsICd4IC0+ICdjKSBjdXN0b21fYXJpdHlcblxuKCoqKilcblxuKCogICAgICAgIFJlbGF0aW9uYWwgZm9ybWF0IHR5cGVzXG5cbkluIHRoZSBmaXJzdCBmb3JtYXQrZ2FkdHMgaW1wbGVtZW50YXRpb24sIHRoZSB0eXBlIGZvciAlKC4uJSkgaW4gdGhlXG5mbXQgR0FEVCB3YXMgYXMgZm9sbG93czpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqICgnZDEsICdxMSwgJ2QyLCAncTIpIHJlYWRlcl9uYl91bmlmaWVyICpcbiAgICAoJ3gsICdiLCAnYywgJ2QxLCAncTEsICd1KSBmbXR0eSAqXG4gICAgKCd1LCAnYiwgJ2MsICdxMSwgJ2UxLCAnZikgZm10IC0+XG4gICAgICAoKCd4LCAnYiwgJ2MsICdkMiwgJ3EyLCAndSkgZm9ybWF0NiAtPiAneCwgJ2IsICdjLCAnZDEsICdlMSwgJ2YpIGZtdFxuXG5Ob3RpY2UgdGhhdCB0aGUgJ3UgcGFyYW1ldGVyIGluICdmIHBvc2l0aW9uIGluIHRoZSBmb3JtYXQgYXJndW1lbnRcbigoJ3gsIC4uLCAndSkgZm9ybWF0NiAtPiAuLikgaXMgZXF1YWwgdG8gdGhlICd1IHBhcmFtZXRlciBpbiAnYVxucG9zaXRpb24gaW4gdGhlIGZvcm1hdCB0YWlsICgoJ3UsIC4uLCAnZikgZm10KS4gVGhpcyBtZWFucyB0aGF0IHRoZVxudHlwZSBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHBhcmFtZXRlciBkZXBlbmRzIG9mIHdoZXJlIHRoZSAlKC4uLiUpXG5hcmUgaW4gdGhlIGZvcm1hdCBzdHJpbmc6XG5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKVwiXG4gIC0gOiAodW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gdW5pdFxuICA9IDxmdW4+XG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSklZFwiXG4gIC0gOiAoaW50IC0+IHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgaW50IC0+IHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiBpbnQgLT4gdW5pdFxuICA9IDxmdW4+XG5cbk9uIHRoZSBjb250cmFyeSwgdGhlIGxlZ2FjeSB0eXBlciBnaXZlcyBhIGNsZXZlciB0eXBlIHRoYXQgZG9lcyBub3RcbmRlcGVuZCBvbiB0aGUgcG9zaXRpb24gb2YgJSguLiUpIGluIHRoZSBmb3JtYXQgc3RyaW5nLiBGb3IgZXhhbXBsZSxcbiUoJSkgd2lsbCBoYXZlIHRoZSBwb2x5bW9ycGhpYyB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKTogaXQgY2FuXG5iZSBjb25jYXRlbmF0ZWQgdG8gYW55IGZvcm1hdCB0eXBlLCBhbmQgb25seSBlbmZvcmNlcyB0aGUgY29uc3RyYWludFxudGhhdCBpdHMgJ2EgYW5kICdmIHBhcmFtZXRlcnMgYXJlIGVxdWFsIChubyBmb3JtYXQgYXJndW1lbnRzKSBhbmQgJ2RcbmFuZCAnZSBhcmUgZXF1YWwgKG5vIHJlYWRlciBhcmd1bWVudCkuXG5cblRoZSB3ZWFrZW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgdHlwZSBpbiB0aGUgR0FEVCB2ZXJzaW9uIGJyb2tlIHVzZXJcbmNvZGUgKGluIGZhY3QgaXQgZXNzZW50aWFsbHkgbWFkZSAlKC4uLiUpIHVudXNhYmxlIGV4Y2VwdCBhdCB0aGUgbGFzdFxucG9zaXRpb24gb2YgYSBmb3JtYXQpLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHdvdWxkIG5vdCB3b3JrXG5hbnltb3JlOlxuXG4gIGZ1biBzZXAgLT5cbiAgICBGb3JtYXQucHJpbnRmIFwiZm9vJSglKWJhciUoJSliYXpcIiBzZXAgc2VwXG5cbkFzIHRoZSB0eXBlLWNoZWNrZXIgd291bGQgcmVxdWlyZSB0d28gKmluY29tcGF0aWJsZSogdHlwZXMgZm9yIHRoZSAlKCUpXG5pbiBkaWZmZXJlbnQgcG9zaXRpb25zLlxuXG5UaGUgc29sdXRpb24gdG8gcmVnYWluIGEgZ2VuZXJhbCB0eXBlIGZvciAlKC4uJSkgaXMgdG8gZ2VuZXJhbGl6ZSB0aGlzXG50ZWNobmlxdWUsIG5vdCBvbmx5IG9uIHRoZSAnZCwgJ2UgcGFyYW1ldGVycywgYnV0IG9uIGFsbCBzaXhcbnBhcmFtZXRlcnMgb2YgYSBmb3JtYXQ6IHdlIGludHJvZHVjZSBhIFwicmVsYXRpb25hbFwiIHR5cGVcbiAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbndob3NlIHZhbHVlcyBhcmUgcHJvb2ZzIHRoYXQgKCdhMSwgLi4sICdmMSkgYW5kICgnYTIsIC4uLCAnZjIpIG1vcmFsbHlcbmNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9ybWF0IHR5cGU6ICdhMSBpcyBvYnRhaW5lZCBmcm9tICdmMSwnYjEsJ2MxXG5pbiB0aGUgZXhhY3Qgc2FtZSB3YXkgdGhhdCAnYTIgaXMgb2J0YWluZWQgZnJvbSAnZjIsJ2IyLCdjMiwgZXRjLlxuXG5Gb3IgZXhhbXBsZSwgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHdvIGZvcm1hdCB0eXBlcyBiZWdpbm5pbmcgd2l0aCBhIENoYXJcbnBhcmFtZXRlciBpcyBhcyBmb2xsb3dzOlxuXG58IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIHRlcm0gc3RydWN0dXJlIG9mIGZtdHR5X3JlbCBpcyAoYWxtb3N0WzFdKVxuaXNvbW9ycGhpYyB0byB0aGUgZm10dHkgb2YgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uOiBldmVyeVxuY29uc3RydWN0b3IgaXMgcmUtcmVhZCB3aXRoIGEgYmluYXJ5LCByZWxhdGlvbmFsIHR5cGUsIGluc3RlYWQgb2YgdGhlXG5wcmV2aW91cyB1bmFyeSB0eXBpbmcuIGZtdHR5IGNhbiB0aGVuIGJlIHJlLWRlZmluZWQgYXMgdGhlIGRpYWdvbmFsIG9mXG5mbXR0eV9yZWw6XG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcblxuT25jZSB3ZSBoYXZlIHRoaXMgZm10dHlfcmVsIHR5cGUgaW4gcGxhY2UsIHdlIGNhbiBnaXZlIHRoZSBtb3JlXG5nZW5lcmFsIHR5cGUgdG8gJSguLi4lKTpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbldlIGFjY2VwdCBhbnkgZm9ybWF0ICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NikgKHRoaXMgaXNcbmNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IGZvcm1hdCksIGJ1dCBhbHNvXG5yZXF1aXJlIGEgcHJvb2YgdGhhdCB0aGlzIGZvcm1hdCBpcyBpbiByZWxhdGlvbiB0byBhbm90aGVyIGZvcm1hdCB0aGF0XG5pcyBjb25jYXRlbmFibGUgdG8gdGhlIGZvcm1hdCB0YWlsLiBXaGVuIGV4ZWN1dGluZyBhICUoLi4uJSkgZm9ybWF0XG4oaW4gY2FtbGludGVybmFsRm9ybWF0Lm1sOm1ha2VfcHJpbnRmIG9yIHNjYW5mLm1sOm1ha2Vfc2NhbmYpLCB3ZVxudHJhbnN0eXBlIHRoZSBmb3JtYXQgYWxvbmcgdGhpcyByZWxhdGlvbiB1c2luZyB0aGUgJ3JlY2FzdCcgZnVuY3Rpb25cbnRvIHRyYW5zcG9zZSBiZXR3ZWVuIHJlbGF0ZWQgZm9ybWF0IHR5cGVzLlxuXG4gIHZhbCByZWNhc3QgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSkgZm10XG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXRcblxuTk9URSBbMV06IHRoZSB0eXBpbmcgb2YgRm9ybWF0X3N1YnN0X3R5IHJlcXVpcmVzIG5vdCBvbmUgZm9ybWF0IHR5cGUsIGJ1dFxudHdvLCBvbmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdCBhcmd1bWVudCBhbmQgdGhlXG5maXJzdCBzaXggcGFyYW1ldGVycywgYW5kIHRoZSBvdGhlciBmb3IgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0XG5hcmd1bWVudCBhbmQgdGhlIGxhc3Qgc2l4IHBhcmFtZXRlcnMuXG5cbnwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5XaGVuIHdlIGdlbmVyYXRlIGEgZm9ybWF0IEFTVCwgd2UgZ2VuZXJhdGUgZXhhY3RseSB0aGUgc2FtZSB3aXRuZXNzXG5mb3IgYm90aCByZWxhdGlvbnMsIGFuZCB0aGUgd2l0bmVzcy1jb252ZXJzaW9uIGZ1bmN0aW9ucyBpblxuY2FtbGludGVybmFsRm9ybWF0IGRvIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQuIEZvciBleGFtcGxlLCB0aGVcbmZ1bmN0aW9uIHRoYXQgcHJvdmVzIHRoYXQgdGhlIHJlbGF0aW9uIGlzIHRyYW5zaXRpdmVcblxuICB2YWwgdHJhbnMgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMixcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuXG5kb2VzIGFzc3VtZSB0aGF0IHRoZSB0d28gaW5wdXRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0ZXJtIHN0cnVjdHVyZVxuKGFuZCBpcyBvbmx5IGV2ZXJ5IHVzZWQgZm9yIGFyZ3VtZW50IHdpdG5lc3NlcyBvZiB0aGVcbkZvcm1hdF9zdWJzdF90eSBjb25zdHJ1Y3RvcikuXG4qKVxuXG4oKiBUeXBlIG9mIGEgYmxvY2sgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBibG9ja190eXBlID1cbiAgfCBQcF9oYm94ICAgKCogSG9yaXpvbnRhbCBibG9jayBubyBsaW5lIGJyZWFraW5nICopXG4gIHwgUHBfdmJveCAgICgqIFZlcnRpY2FsIGJsb2NrIGVhY2ggYnJlYWsgbGVhZHMgdG8gYSBuZXcgbGluZSAqKVxuICB8IFBwX2h2Ym94ICAoKiBIb3Jpem9udGFsLXZlcnRpY2FsIGJsb2NrOiBzYW1lIGFzIHZib3gsIGV4Y2VwdCBpZiB0aGlzIGJsb2NrXG4gICAgICAgICAgICAgICAgIGlzIHNtYWxsIGVub3VnaCB0byBmaXQgb24gYSBzaW5nbGUgbGluZSAqKVxuICB8IFBwX2hvdmJveCAoKiBIb3Jpem9udGFsIG9yIFZlcnRpY2FsIGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAqKVxuICB8IFBwX2JveCAgICAoKiBIb3Jpem9udGFsIG9yIEluZGVudCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2ssIG9yXG4gICAgICAgICAgICAgICAgIHdoZW4gaXQgbGVhZHMgdG8gYSBuZXcgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgbGluZSAqKVxuICB8IFBwX2ZpdHMgICAoKiBJbnRlcm5hbCB1c2FnZTogd2hlbiBhIGJsb2NrIGZpdHMgb24gYSBzaW5nbGUgbGluZSAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBmb3JtYXR0aW5nX2xpdCA9XG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBdICAgKilcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQH0gICAqKVxuICB8IEJyZWFrIG9mIHN0cmluZyAqIGludCAqIGludCAgICAgICAgICAoKiBALCB8IEAgIHwgQDsgfCBAOzw+ICopXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA/ICAgKilcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFxcbiAgKilcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQC4gICAqKVxuICB8IE1hZ2ljX3NpemUgb2Ygc3RyaW5nICogaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPG4+ICopXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBAICAgKilcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQCUlICAqKVxuICB8IFNjYW5faW5kaWMgb2YgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAWCAgICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlbiA9XG4gIHwgT3Blbl90YWcgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEB7ICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cbiAgfCBPcGVuX2JveCA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQFsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCB0eXBlIGVsZW1lbnRzLiAqKVxuKCogSW4gcGFydGljdWxhciB1c2VkIHRvIHJlcHJlc2VudCAlKC4uLiUpIGFuZCAley4uLiV9IGNvbnRlbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5hbmQgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCA9XG4gIHwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgU3RyaW5nX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoc3RyaW5nIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgc3RyaW5nIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQzMl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQzMiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDMyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IE5hdGl2ZWludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbmQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKG5hdGl2ZWludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIG5hdGl2ZWludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQ2NF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQ2NCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDY0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEZsb2F0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGZsb2F0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgZmxvYXQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQm9vbF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVCICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoYm9vbCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGJvb2wgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBGb3JtYXRfYXJnX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG4gIHwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnMuICopXG4gIHwgQWxwaGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAneCAtPiAnYzEpIC0+ICd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAneCAtPiAnYzIpIC0+ICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFRoZXRhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ2MxKSAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ2MyKSAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBBbnlfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFVzZWQgZm9yIGN1c3RvbSBmb3JtYXRzICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBFbmRfb2ZfZm10dHkgOlxuICAgICAgKCdmMSwgJ2IxLCAnYzEsICdkMSwgJ2QxLCAnZjEsXG4gICAgICAgJ2YyLCAnYjIsICdjMiwgJ2QyLCAnZDIsICdmMikgZm10dHlfcmVsXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IGVsZW1lbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgPVxuICB8IENoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVDICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFN0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVTICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDMyIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgTmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5bZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBuYXRpdmVpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDY0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgICAgIGZsb2F0X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBmbG9hdCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEJvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbYkJdICopXG4gICAgICAoJ3gsIGJvb2wgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbHVzaCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlISAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBhYmMgKilcbiAgICAgIHN0cmluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENoYXJfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKilcbiAgICAgIGNoYXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IEZvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBBbHBoYSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICd4IC0+ICdjKSAtPiAneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBUaGV0YSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICdjKSAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3I6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgIGZvcm1hdHRpbmdfbGl0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0dGluZ19nZW4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UxLCAnZjEpIGZvcm1hdHRpbmdfZ2VuICpcbiAgICAgICgnZjEsICdiLCAnYywgJ2UxLCAnZTIsICdmMikgZm10IC0+ICgnYTEsICdiLCAnYywgJ2QxLCAnZTIsICdmMikgZm10XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCAtPiAnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoc3RyaW5nIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChpbnQgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJTBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJZ25vcmVkX3BhcmFtIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGlnbm9yZWQgKiAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBDdXN0b20gcHJpbnRpbmcgZm9ybWF0IChQUiM2NDUyLCBHUFIjMTQwKVxuXG4gICAgIFdlIGluY2x1ZGUgYSB0eXBlIEN1c3RvbSBvZiBcImN1c3RvbSBjb252ZXJ0ZXJzXCIsIHdoZXJlIGFuXG4gICAgIGFyYml0cmFyeSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IG9uZSBvciBtb3JlXG4gICAgIGFyZ3VtZW50cy4gVGhlcmUgaXMgbm8gc3ludGF4IGZvciBjdXN0b20gY29udmVydGVycywgaXQgaXMgb25seVxuICAgICBpbnRlbmRlZCBmb3IgY3VzdG9tIHByb2Nlc3NvcnMgdGhhdCB3aXNoIHRvIHJlbHkgb24gdGhlXG4gICAgIHN0ZGxpYi1kZWZpbmVkIGZvcm1hdCBHQURUcy5cblxuICAgICBGb3IgaW5zdGFuY2UgYSBwcmUtcHJvY2Vzc29yIGNvdWxkIGNob29zZSB0byBpbnRlcnByZXQgc3RyaW5nc1xuICAgICBwcmVmaXhlZCB3aXRoIFtcIiFcIl0gYXMgZm9ybWF0IHN0cmluZ3Mgd2hlcmUgWyV7eyAuLi4gfX1dIGlzXG4gICAgIGEgc3BlY2lhbCBmb3JtIHRvIHBhc3MgYSB0b19zdHJpbmcgZnVuY3Rpb24sIHNvIHRoYXQgb25lIGNvdWxkXG4gICAgIHdyaXRlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50OyB5IDogaW50IH1cblxuICAgICAgIGxldCBzdHJpbmdfb2ZfdCB0ID0gUHJpbnRmLnNwcmludGYgXCJ7IHggPSAlZDsgeSA9ICVkIH1cIiB0LnggdC55XG5cbiAgICAgICBQcmludGYucHJpbnRmICFcInQgPSAle3tzdHJpbmdfb2ZfdH19XCIgeyB4ID0gNDI7IHkgPSA0MiB9XG4gICAgIF19XG4gICopXG4gIHwgQ3VzdG9tIDpcbiAgICAgICgnYSwgJ3gsICd5KSBjdXN0b21fYXJpdHkgKiAodW5pdCAtPiAneCkgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogZW5kIG9mIGEgZm9ybWF0IHNwZWNpZmljYXRpb24gKilcbiAgfCBFbmRfb2ZfZm9ybWF0IDpcbiAgICAgICAgKCdmLCAnYiwgJ2MsICdlLCAnZSwgJ2YpIGZtdFxuXG4oKioqKVxuXG4oKiBUeXBlIGZvciBpZ25vcmVkIHBhcmFtZXRlcnMgKHNlZSBcIiVfXCIpLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkID1cbiAgfCBJZ25vcmVkX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9DICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfcyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfUyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9sZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9uZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9MZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9mICopXG4gICAgICBwYWRfb3B0aW9uICogcHJlY19vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Jvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0IgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3suLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9yZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICopXG4gICAgICAoJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0IC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXzBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAqIHN0cmluZ1xuXG5sZXQgcmVjIGVyYXNlX3JlbCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAoYSwgYiwgYywgZCwgZSwgZixcbiAgIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIF90eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGUgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0IHR5cGVzLiAqKVxuKCogVXNlZCBieTpcbiAgICogcmVhZGVyX25iX3VuaWZpZXJfb2ZfZm10dHkgdG8gY291bnQgcmVhZGVycyBpbiBhbiBmbXR0eSxcbiAgICogU2NhbmYudGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyB0byBleHRyYWN0IHJlYWRlcnMgaW5zaWRlICUoLi4uJSksXG4gICAqIENhbWxpbnRlcm5hbEZvcm1hdC5mbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCB0byBleHRyYWN0IGZvcm1hdCB0eXBlLiAqKVxuXG4oKlxubGV0IHJlYyBjb25jYXRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdHR5ID1cbiopXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAgICAgIGcxIGoxIGcyIGoyXG4gIC5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGQxLCBhMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGQyLCBhMikgZm10dHlfcmVsIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZTEsIGYxLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZTIsIGYyKSBmbXR0eV9yZWwgPVxuZnVuIGZtdHR5MSBmbXR0eTIgLT4gbWF0Y2ggZm10dHkxIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEVuZF9vZl9mbXR0eSAtPiBmbXR0eTJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXRzLiAqKVxubGV0IHJlYyBjb25jYXRfZm10IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdCA9XG5mdW4gZm10MSBmbXQyIC0+IG1hdGNoIGZtdDEgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIFN0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIENhbWxfc3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBDaGFyIChyZXN0KSAtPlxuICAgIENoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgQm9vbCAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgQWxwaGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBUaGV0YSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBDdXN0b20gKGFyaXR5LCBmLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBSZWFkZXIgcmVzdCAtPlxuICAgIFJlYWRlciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIEZsdXNoIChjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nX2xpdGVyYWwgKHN0ciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgQ2hhcl9saXRlcmFsICAgKGNociwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmcgICAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgKHJlc3QpIC0+XG4gICAgU2Nhbl9uZXh0X2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4Y2VwdGlvbnMgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICAoKiBmb3IgcnVudGltZS9mYWlsX25hdC5jICopXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5hcnJheV9ib3VuZF9lcnJvclwiXG4gICAgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxuXG5sZXQgZmFpbHdpdGggcyA9IHJhaXNlKEZhaWx1cmUgcylcbmxldCBpbnZhbGlkX2FyZyBzID0gcmFpc2UoSW52YWxpZF9hcmd1bWVudCBzKVxuXG5leGNlcHRpb24gRXhpdFxuZXhjZXB0aW9uIE1hdGNoX2ZhaWx1cmUgPSBNYXRjaF9mYWlsdXJlXG5leGNlcHRpb24gQXNzZXJ0X2ZhaWx1cmUgPSBBc3NlcnRfZmFpbHVyZVxuZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgPSBJbnZhbGlkX2FyZ3VtZW50XG5leGNlcHRpb24gRmFpbHVyZSA9IEZhaWx1cmVcbmV4Y2VwdGlvbiBOb3RfZm91bmQgPSBOb3RfZm91bmRcbmV4Y2VwdGlvbiBPdXRfb2ZfbWVtb3J5ID0gT3V0X29mX21lbW9yeVxuZXhjZXB0aW9uIFN0YWNrX292ZXJmbG93ID0gU3RhY2tfb3ZlcmZsb3dcbmV4Y2VwdGlvbiBTeXNfZXJyb3IgPSBTeXNfZXJyb3JcbmV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSA9IEVuZF9vZl9maWxlXG5leGNlcHRpb24gRGl2aXNpb25fYnlfemVybyA9IERpdmlzaW9uX2J5X3plcm9cbmV4Y2VwdGlvbiBTeXNfYmxvY2tlZF9pbyA9IFN5c19ibG9ja2VkX2lvXG5leGNlcHRpb24gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuXG4oKiBDb21wb3NpdGlvbiBvcGVyYXRvcnMgKilcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbigqIERlYnVnZ2luZyAqKVxuXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19GVU5DVElPTl9fIDogc3RyaW5nID0gXCIlbG9jX0ZVTkNUSU9OXCJcblxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcblxuKCogQ29tcGFyaXNvbnMgKilcblxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbmxldCBtaW4geCB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5cbigqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5cbigqIEludGVnZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcblxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5cbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbmxldCBsbm90IHggPSB4IGx4b3IgKC0xKVxuXG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5cbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuXG4oKiBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBpbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuZWdfaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4RkZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmFuID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0Y4XzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IG1heF9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9FRl9GRl9GRl9GRl9GRl9GRl9GRkxcbmxldCBtaW5fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4MDBfMTBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgZXBzaWxvbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgzQ19CMF8wMF8wMF8wMF8wMF8wMF8wMExcblxudHlwZSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbigqIFN0cmluZyBhbmQgYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlcyBTdHJpbmcgYW5kIEJ5dGVzICopXG5cbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19sZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBzdHJpbmdfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc19ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc191bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0ICggXiApIHMxIHMyID1cbiAgbGV0IGwxID0gc3RyaW5nX2xlbmd0aCBzMSBhbmQgbDIgPSBzdHJpbmdfbGVuZ3RoIHMyIGluXG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIChsMSArIGwyKSBpblxuICBzdHJpbmdfYmxpdCBzMSAwIHMgMCBsMTtcbiAgc3RyaW5nX2JsaXQgczIgMCBzIGwxIGwyO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgQ2hhciAqKVxuXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NoYXJfb2ZfaW50IDogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcImNoYXJfb2ZfaW50XCIgZWxzZSB1bnNhZmVfY2hhcl9vZl9pbnQgblxuXG4oKiBVbml0IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxuXG4oKiBSZWZlcmVuY2VzICopXG5cbnR5cGUgJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxuXG4oKiBSZXN1bHQgdHlwZSAqKVxuXG50eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG4oKiBTdHJpbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG5sZXQgc3RyaW5nX29mX2Jvb2wgYiA9XG4gIGlmIGIgdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIlxubGV0IGJvb2xfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcImJvb2xfb2Zfc3RyaW5nXCJcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcblxubGV0IHN0cmluZ19vZl9pbnQgbiA9XG4gIGZvcm1hdF9pbnQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIHN0cmluZ19nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gc3RyaW5nX2xlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGwgdGhlbiBzIF4gXCIuXCIgZWxzZVxuICAgIG1hdGNoIHN0cmluZ19nZXQgcyBpIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgfCBfIC0+IHNcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzdHJpbmdfb2ZfZmxvYXQgZiA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIGYpXG5cbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuKCogTGlzdCBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIExpc3QgKilcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoMSA6OiBbXSAtPiBoMSA6OiBsMlxuICB8IGgxIDo6IGgyIDo6IFtdIC0+IGgxIDo6IGgyIDo6IGwyXG4gIHwgaDEgOjogaDIgOjogaDMgOjogdGwgLT4gaDEgOjogaDIgOjogaDMgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG4oKiBmb3IgYXRfZXhpdCAqKVxudHlwZSAnYSBhdG9taWNfdFxuZXh0ZXJuYWwgYXRvbWljX21ha2UgOiAnYSAtPiAnYSBhdG9taWNfdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsIGF0b21pY19nZXQgOiAnYSBhdG9taWNfdCAtPiAnYSA9IFwiJWF0b21pY19sb2FkXCJcbmV4dGVybmFsIGF0b21pY19jb21wYXJlX2FuZF9zZXQgOiAnYSBhdG9taWNfdCAtPiAnYSAtPiAnYSAtPiBib29sXG4gID0gXCIlYXRvbWljX2Nhc1wiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gYXRvbWljX21ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBhdG9taWNfbWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIGF0b21pY19jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IGF0b21pY19jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICAoIWRvX2RvbWFpbl9sb2NhbF9hdF9leGl0KSAoKTtcbiAgKGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgICAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICAgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgICAgPSBDb21wbGV4XG5tb2R1bGUgQ29uZGl0aW9uICAgICAgPSBDb25kaXRpb25cbm1vZHVsZSBEaWdlc3QgICAgICAgICA9IERpZ2VzdFxubW9kdWxlIERvbWFpbiAgICAgICAgID0gRG9tYWluXG5tb2R1bGUgRHluYXJyYXkgICAgICAgPSBEeW5hcnJheVxubW9kdWxlIEVmZmVjdCAgICAgICAgID0gRWZmZWN0XG5tb2R1bGUgRWl0aGVyICAgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICAgID0gR2Ncbm1vZHVsZSBIYXNodGJsICAgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbl9jaGFubmVsICAgICA9IEluX2NoYW5uZWxcbm1vZHVsZSBJbnQgICAgICAgICAgICA9IEludFxubW9kdWxlIEludDMyICAgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgICA9IEludDY0XG5tb2R1bGUgTGF6eSAgICAgICAgICAgPSBMYXp5XG5tb2R1bGUgTGV4aW5nICAgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgICA9IExpc3Rcbm1vZHVsZSBMaXN0TGFiZWxzICAgICA9IExpc3RMYWJlbHNcbm1vZHVsZSBNYXAgICAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICAgID0gTWFyc2hhbFxubW9kdWxlIE1vcmVMYWJlbHMgICAgID0gTW9yZUxhYmVsc1xubW9kdWxlIE11dGV4ICAgICAgICAgID0gTXV0ZXhcbm1vZHVsZSBOYXRpdmVpbnQgICAgICA9IE5hdGl2ZWludFxubW9kdWxlIE9iaiAgICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgICAgPSBPb1xubW9kdWxlIE9wdGlvbiAgICAgICAgID0gT3B0aW9uXG5tb2R1bGUgT3V0X2NoYW5uZWwgICAgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBhcnNpbmcgICAgICAgID0gUGFyc2luZ1xubW9kdWxlIFByaW50ZXhjICAgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICAgID0gUXVldWVcbm1vZHVsZSBSYW5kb20gICAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgICAgPSBTY2FuZlxubW9kdWxlIFNlbWFwaG9yZSAgICAgID0gU2VtYXBob3JlXG5tb2R1bGUgU2VxICAgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgICA9IFNldFxubW9kdWxlIFN0YWNrICAgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmluZyAgICAgICAgID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nTGFiZWxzICAgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgICA9IFN5c1xubW9kdWxlIFR5cGUgICAgICAgICAgID0gVHlwZVxubW9kdWxlIFVjaGFyICAgICAgICAgID0gVWNoYXJcbm1vZHVsZSBVbml0ICAgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqIEBjb25maWd1cmVfaW5wdXRAICopXG4jMyBcInN5cy5tbC5pblwiXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmFja2VuZF90eXBlID1cbiAgfCBOYXRpdmVcbiAgfCBCeXRlY29kZVxuICB8IE90aGVyIG9mIHN0cmluZ1xuKCogU3lzdGVtIGludGVyZmFjZSAqKVxuXG5leHRlcm5hbCBnZXRfY29uZmlnOiB1bml0IC0+IHN0cmluZyAqIGludCAqIGJvb2wgPSBcImNhbWxfc3lzX2dldF9jb25maWdcIlxuZXh0ZXJuYWwgZ2V0X2V4ZWN1dGFibGVfbmFtZSA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWVcIlxuZXh0ZXJuYWwgYXJndiA6IHN0cmluZyBhcnJheSA9IFwiJXN5c19hcmd2XCJcbmV4dGVybmFsIGJpZ19lbmRpYW4gOiB1bml0IC0+IGJvb2wgPSBcIiViaWdfZW5kaWFuXCJcbmV4dGVybmFsIHdvcmRfc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIld29yZF9zaXplXCJcbmV4dGVybmFsIGludF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiVpbnRfc2l6ZVwiXG5leHRlcm5hbCBtYXhfd29zaXplIDogdW5pdCAtPiBpbnQgPSBcIiVtYXhfd29zaXplXCJcbmV4dGVybmFsIHVuaXggOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfdW5peFwiXG5leHRlcm5hbCB3aW4zMiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV93aW4zMlwiXG5leHRlcm5hbCBjeWd3aW4gOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfY3lnd2luXCJcbmV4dGVybmFsIGdldF9iYWNrZW5kX3R5cGUgOiB1bml0IC0+IGJhY2tlbmRfdHlwZSA9IFwiJWJhY2tlbmRfdHlwZVwiXG5cbmxldCBleGVjdXRhYmxlX25hbWUgPSBnZXRfZXhlY3V0YWJsZV9uYW1lKClcbmxldCAob3NfdHlwZSwgXywgXykgPSBnZXRfY29uZmlnKClcbmxldCBiYWNrZW5kX3R5cGUgPSBnZXRfYmFja2VuZF90eXBlICgpXG5sZXQgYmlnX2VuZGlhbiA9IGJpZ19lbmRpYW4gKClcbmxldCB3b3JkX3NpemUgPSB3b3JkX3NpemUgKClcbmxldCBpbnRfc2l6ZSA9IGludF9zaXplICgpXG5sZXQgdW5peCA9IHVuaXggKClcbmxldCB3aW4zMiA9IHdpbjMyICgpXG5sZXQgY3lnd2luID0gY3lnd2luICgpXG5sZXQgbWF4X2FycmF5X2xlbmd0aCA9IG1heF93b3NpemUgKClcbmxldCBtYXhfZmxvYXRhcnJheV9sZW5ndGggPSBtYXhfYXJyYXlfbGVuZ3RoIC8gKDY0IC8gd29yZF9zaXplKVxubGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxXG5leHRlcm5hbCBydW50aW1lX3ZhcmlhbnQgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3ZhcmlhbnRcIlxuZXh0ZXJuYWwgcnVudGltZV9wYXJhbWV0ZXJzIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXCJcblxuZXh0ZXJuYWwgZmlsZV9leGlzdHM6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19maWxlX2V4aXN0c1wiXG5leHRlcm5hbCBpc19kaXJlY3RvcnkgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfZGlyZWN0b3J5XCJcbmV4dGVybmFsIGlzX3JlZ3VsYXJfZmlsZSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcIlxuZXh0ZXJuYWwgcmVtb3ZlOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVtb3ZlXCJcbmV4dGVybmFsIHJlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVuYW1lXCJcbmV4dGVybmFsIGdldGVudjogc3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0ZW52XCJcblxubGV0IGdldGVudl9vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKGdldGVudiBzKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5sZXQgaW50ZXJhY3RpdmUgPSByZWYgZmFsc2VcblxudHlwZSBzaWduYWxfYmVoYXZpb3IgPVxuICAgIFNpZ25hbF9kZWZhdWx0XG4gIHwgU2lnbmFsX2lnbm9yZVxuICB8IFNpZ25hbF9oYW5kbGUgb2YgKGludCAtPiB1bml0KVxuXG5leHRlcm5hbCBzaWduYWwgOiBpbnQgLT4gc2lnbmFsX2JlaGF2aW9yIC0+IHNpZ25hbF9iZWhhdmlvclxuICAgICAgICAgICAgICAgID0gXCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXJcIlxuXG5sZXQgc2V0X3NpZ25hbCBzaWdfbnVtIHNpZ19iZWggPSBpZ25vcmUoc2lnbmFsIHNpZ19udW0gc2lnX2JlaClcblxubGV0IHNpZ2FicnQgPSAtMVxubGV0IHNpZ2Fscm0gPSAtMlxubGV0IHNpZ2ZwZSA9IC0zXG5sZXQgc2lnaHVwID0gLTRcbmxldCBzaWdpbGwgPSAtNVxubGV0IHNpZ2ludCA9IC02XG5sZXQgc2lna2lsbCA9IC03XG5sZXQgc2lncGlwZSA9IC04XG5sZXQgc2lncXVpdCA9IC05XG5sZXQgc2lnc2VndiA9IC0xMFxubGV0IHNpZ3Rlcm0gPSAtMTFcbmxldCBzaWd1c3IxID0gLTEyXG5sZXQgc2lndXNyMiA9IC0xM1xubGV0IHNpZ2NobGQgPSAtMTRcbmxldCBzaWdjb250ID0gLTE1XG5sZXQgc2lnc3RvcCA9IC0xNlxubGV0IHNpZ3RzdHAgPSAtMTdcbmxldCBzaWd0dGluID0gLTE4XG5sZXQgc2lndHRvdSA9IC0xOVxubGV0IHNpZ3Z0YWxybSA9IC0yMFxubGV0IHNpZ3Byb2YgPSAtMjFcbmxldCBzaWdidXMgPSAtMjJcbmxldCBzaWdwb2xsID0gLTIzXG5sZXQgc2lnc3lzID0gLTI0XG5sZXQgc2lndHJhcCA9IC0yNVxubGV0IHNpZ3VyZyA9IC0yNlxubGV0IHNpZ3hjcHUgPSAtMjdcbmxldCBzaWd4ZnN6ID0gLTI4XG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0M1xuXG5sZXQgZm9yY2luZ190YWcgPSAyNDRcbmxldCBjb250X3RhZyA9IDI0NVxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiXG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUeXBlIGVxdWFsaXR5IHdpdG5lc3MgKilcblxudHlwZSAoXywgXykgZXEgPSBFcXVhbDogKCdhLCAnYSkgZXFcblxuKCogVHlwZSBpZGVudGlmaWVycyAqKVxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgdHlwZSBfIGlkID0gLi5cbiAgbW9kdWxlIHR5cGUgSUQgPSBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIF8gaWQgKz0gSWQgOiB0IGlkXG4gIGVuZFxuXG4gIHR5cGUgISdhIHQgPSAobW9kdWxlIElEIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IG1ha2UgKHR5cGUgYSkgKCkgOiBhIHQgPVxuICAgIChtb2R1bGUgc3RydWN0IHR5cGUgdCA9IGEgdHlwZSBfIGlkICs9IElkIDogdCBpZCBlbmQpXG5cbiAgbGV0W0BpbmxpbmVdIHVpZCAodHlwZSBhKSAoKG1vZHVsZSBBKSA6IGEgdCkgPVxuICAgIE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIEEuSWQpXG5cbiAgbGV0IHByb3ZhYmx5X2VxdWFsXG4gICAgICAodHlwZSBhIGIpICgobW9kdWxlIEEpIDogYSB0KSAoKG1vZHVsZSBCKSA6IGIgdCkgOiAoYSwgYikgZXEgb3B0aW9uXG4gICAgPVxuICAgIG1hdGNoIEEuSWQgd2l0aCBCLklkIC0+IFNvbWUgRXF1YWwgfCBfIC0+IE5vbmVcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFN0ZXBoZW4gRG9sYW4sIFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNy0yMDE4IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlLiAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIG1ha2UgOiAnYSAtPiAnYSB0ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgbWFrZV9jb250ZW5kZWQgOiAnYSAtPiAnYSB0ID0gXCJjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFwiXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlXCJcbmV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNcIlxuZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkXCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgc2V0IHIgeCA9IGlnbm9yZSAoZXhjaGFuZ2UgciB4KVxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgZm9sZF9sZWZ0IGYgYWNjIG5leHRcblxubGV0IHJlYyBpdGVyIGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBpdGVyIGYgbmV4dFxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuXG5sZXQgaXNfZW1wdHkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zIChfLCBfKSAtPlxuICAgICAgZmFsc2VcblxubGV0IHVuY29ucyB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgU29tZSAoeCwgeHMpXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG5cblxuXG5sZXQgcmVjIGxlbmd0aF9hdXggYWNjdSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGVuZ3RoX2F1eCAoYWNjdSArIDEpIHhzXG5cbmxldFtAaW5saW5lXSBsZW5ndGggeHMgPVxuICBsZW5ndGhfYXV4IDAgeHNcblxubGV0IHJlYyBpdGVyaV9hdXggZiBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgZiBpIHg7XG4gICAgICBpdGVyaV9hdXggZiAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gaXRlcmkgZiB4cyA9XG4gIGl0ZXJpX2F1eCBmIDAgeHNcblxubGV0IHJlYyBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgaSB4IGluXG4gICAgICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGZvbGRfbGVmdGkgZiBhY2N1IHhzID1cbiAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IDAgeHNcblxubGV0IHJlYyBmb3JfYWxsIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCAmJiBmb3JfYWxsIHAgeHNcblxubGV0IHJlYyBleGlzdHMgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCB8fCBleGlzdHMgcCB4c1xuXG5sZXQgcmVjIGZpbmQgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZCBwIHhzXG5cbmxldCBmaW5kX2luZGV4IHAgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIGlmIHAgeCB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSB4cyBpblxuICBhdXggMCB4c1xuXG5sZXQgcmVjIGZpbmRfbWFwIGYgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBmaW5kX21hcCBmIHhzXG4gICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXN1bHRcblxubGV0IGZpbmRfbWFwaSBmIHhzID1cbiAgbGV0IHJlYyBhdXggaSB4cyA9IG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYXV4IChpKzEpIHhzXG4gICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgICAgcmVzdWx0IGluXG4gIGF1eCAwIHhzXG5cbigqIFtpdGVyMl0sIFtmb2xkX2xlZnQyXSwgW2Zvcl9hbGwyXSwgW2V4aXN0czJdLCBbbWFwMl0sIFt6aXBdIHdvcmsgYWxzbyBpblxuICAgdGhlIGNhc2Ugd2hlcmUgdGhlIHR3byBzZXF1ZW5jZXMgaGF2ZSBkaWZmZXJlbnQgbGVuZ3Rocy4gVGhleSBzdG9wIGFzIHNvb25cbiAgIGFzIG9uZSBzZXF1ZW5jZSBpcyBleGhhdXN0ZWQuIFRoZWlyIGJlaGF2aW9yIGlzIHNsaWdodGx5IGFzeW1tZXRyaWM6IHdoZW5cbiAgIFt4c10gaXMgZW1wdHksIHRoZXkgZG8gbm90IGZvcmNlIFt5c107IGhvd2V2ZXIsIHdoZW4gW3lzXSBpcyBlbXB0eSwgW3hzXSBpc1xuICAgZm9yY2VkLCBldmVuIHRob3VnaCB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBhcHBsaWNhdGlvbiBbeHMoKV0gdHVybnMgb3V0XG4gICB0byBiZSB1c2VsZXNzLiAqKVxuXG5sZXQgcmVjIGl0ZXIyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHk7XG4gICAgICAgICAgaXRlcjIgZiB4cyB5c1xuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgYWNjdVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBsZXQgYWNjdSA9IGYgYWNjdSB4IHkgaW5cbiAgICAgICAgICBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5c1xuXG5sZXQgcmVjIGZvcl9hbGwyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5ICYmIGZvcl9hbGwyIGYgeHMgeXNcblxubGV0IHJlYyBleGlzdHMyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgfHwgZXhpc3RzMiBmIHhzIHlzXG5cbmxldCByZWMgZXF1YWwgZXEgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBlcSB4IHkgJiYgZXF1YWwgZXEgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgZmFsc2VcblxubGV0IHJlYyBjb21wYXJlIGNtcCB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICAwXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGxldCBjID0gY21wIHggeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNvbXBhcmUgY21wIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKSAtPlxuICAgICAgLTFcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICArMVxuXG5cblxuKCogW2luaXRfYXV4IGYgaSBqXSBpcyB0aGUgc2VxdWVuY2UgW2YgaSwgLi4uLCBmIChqLTEpXS4gKilcblxubGV0IHJlYyBpbml0X2F1eCBmIGkgaiAoKSA9XG4gIGlmIGkgPCBqIHRoZW4gYmVnaW5cbiAgICBDb25zIChmIGksIGluaXRfYXV4IGYgKGkgKyAxKSBqKVxuICBlbmRcbiAgZWxzZVxuICAgIE5pbFxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTZXEuaW5pdFwiXG4gIGVsc2VcbiAgICBpbml0X2F1eCBmIDAgblxuXG5sZXQgcmVjIHJlcGVhdCB4ICgpID1cbiAgQ29ucyAoeCwgcmVwZWF0IHgpXG5cbmxldCByZWMgZm9yZXZlciBmICgpID1cbiAgQ29ucyAoZigpLCBmb3JldmVyIGYpXG5cbigqIFRoaXMgcHJlbGltaW5hcnkgZGVmaW5pdGlvbiBvZiBbY3ljbGVdIHJlcXVpcmVzIHRoZSBzZXF1ZW5jZSBbeHNdXG4gICB0byBiZSBub25lbXB0eS4gQXBwbHlpbmcgaXQgdG8gYW4gZW1wdHkgc2VxdWVuY2Ugd291bGQgcHJvZHVjZSBhXG4gICBzZXF1ZW5jZSB0aGF0IGRpdmVyZ2VzIHdoZW4gaXQgaXMgZm9yY2VkLiAqKVxuXG5sZXQgcmVjIGN5Y2xlX25vbmVtcHR5IHhzICgpID1cbiAgYXBwZW5kIHhzIChjeWNsZV9ub25lbXB0eSB4cykgKClcblxuKCogW2N5Y2xlIHhzXSBjaGVja3Mgd2hldGhlciBbeHNdIGlzIGVtcHR5IGFuZCwgaWYgc28sIHJldHVybnMgYW4gZW1wdHlcbiAgIHNlcXVlbmNlLiBPdGhlcndpc2UsIFtjeWNsZSB4c10gcHJvZHVjZXMgb25lIGNvcHkgb2YgW3hzXSBmb2xsb3dlZFxuICAgd2l0aCB0aGUgaW5maW5pdGUgc2VxdWVuY2UgW2N5Y2xlX25vbmVtcHR5IHhzXS4gVGh1cywgdGhlIG5vbmVtcHRpbmVzc1xuICAgY2hlY2sgaXMgcGVyZm9ybWVkIGp1c3Qgb25jZS4gKilcblxubGV0IGN5Y2xlIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cycpIC0+XG4gICAgICBDb25zICh4LCBhcHBlbmQgeHMnIChjeWNsZV9ub25lbXB0eSB4cykpXG5cbigqIFtpdGVyYXRlMSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbZiB4LCBmIChmIHgpLCAuLi5dLlxuICAgSXQgaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoaXRlcmF0ZSBmIHgpXS5cbiAgIFtpdGVyYXRlMV0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyBpdGVyYXRlMSBmIHggKCkgPVxuICBsZXQgeSA9IGYgeCBpblxuICBDb25zICh5LCBpdGVyYXRlMSBmIHkpXG5cbigqIFtpdGVyYXRlIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFt4LCBmIHgsIC4uLl0uICopXG5cbigqIFRoZSByZWFzb24gd2h5IHdlIGdpdmUgdGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXSxcbiAgIGFzIG9wcG9zZWQgdG8gdGhlIG1vcmUgbmFpdmUgZGVmaW5pdGlvbiB0aGF0IG1heSBjb21lIHRvIG1pbmQsIGlzIHRoYXRcbiAgIHdlIGFyZSBjYXJlZnVsIHRvIGF2b2lkIGV2YWx1YXRpbmcgW2YgeF0gdW50aWwgdGhpcyBmdW5jdGlvbiBjYWxsIGlzXG4gICBhY3R1YWxseSBuZWNlc3NhcnkuIFRoZSBuYWl2ZSBkZWZpbml0aW9uIChub3Qgc2hvd24gaGVyZSkgY29tcHV0ZXMgdGhlXG4gICBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIHNlcXVlbmNlLCBbZiB4XSwgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgaXNcbiAgIHJlcXVlc3RlZCBieSB0aGUgdXNlci4gKilcblxubGV0IGl0ZXJhdGUgZiB4ID1cbiAgY29ucyB4IChpdGVyYXRlMSBmIHgpXG5cblxuXG5sZXQgcmVjIG1hcGlfYXV4IGYgaSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChmIGkgeCwgbWFwaV9hdXggZiAoaSsxKSB4cylcblxubGV0W0BpbmxpbmVdIG1hcGkgZiB4cyA9XG4gIG1hcGlfYXV4IGYgMCB4c1xuXG4oKiBbdGFpbF9zY2FuIGYgcyB4c10gaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoc2NhbiBmIHMgeHMpXS5cbiAgIFt0YWlsX3NjYW5dIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbc2Nhbl0uICopXG5cbigqIFRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbc2Nhbl0gaXMgbWVhbnQgdG8gYXZvaWQgY29tcHV0aW5nXG4gICBlbGVtZW50cyB0b28gZWFybHk7IHNlZSB0aGUgYWJvdmUgY29tbWVudCBhYm91dCBbaXRlcmF0ZTFdIGFuZCBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgdGFpbF9zY2FuIGYgcyB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgcyA9IGYgcyB4IGluXG4gICAgICBDb25zIChzLCB0YWlsX3NjYW4gZiBzIHhzKVxuXG5sZXQgc2NhbiBmIHMgeHMgPVxuICBjb25zIHMgKHRhaWxfc2NhbiBmIHMgeHMpXG5cbigqIFt0YWtlXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbdGFrZSAwIHhzXSByZXR1cm5zIFtlbXB0eV1cbiAgIGltbWVkaWF0ZWx5LCB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IHJlYyB0YWtlX2F1eCBuIHhzID1cbiAgaWYgbiA9IDAgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgQ29ucyAoeCwgdGFrZV9hdXggKG4tMSkgeHMpXG5cbmxldCB0YWtlIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLnRha2VcIjtcbiAgdGFrZV9hdXggbiB4c1xuXG4oKiBbZm9yY2VfZHJvcCBuIHhzXSBpcyBlcXVpdmFsZW50IHRvIFtkcm9wIG4geHMgKCldLlxuICAgW2ZvcmNlX2Ryb3AgbiB4c10gcmVxdWlyZXMgW24gPiAwXS5cbiAgIFtmb3JjZV9kcm9wXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2Ryb3BdLiAqKVxuXG5sZXQgcmVjIGZvcmNlX2Ryb3AgbiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZXQgbiA9IG4gLSAxIGluXG4gICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgIHhzKClcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbigqIFtkcm9wXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbZHJvcCAwIHhzXSByZXR1cm5zIFt4c10gaW1tZWRpYXRlbHksXG4gICB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IGRyb3AgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEuZHJvcFwiXG4gIGVsc2UgaWYgbiA9IDAgdGhlblxuICAgIHhzXG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG5sZXQgcmVjIHRha2Vfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBDb25zICh4LCB0YWtlX3doaWxlIHAgeHMpIGVsc2UgTmlsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgYXMgbm9kZSAtPlxuICAgICAgaWYgcCB4IHRoZW4gZHJvcF93aGlsZSBwIHhzICgpIGVsc2Ugbm9kZVxuXG5sZXQgcmVjIGdyb3VwIGVxIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGNvbnMgeCAodGFrZV93aGlsZSAoZXEgeCkgeHMpLCBncm91cCBlcSAoZHJvcF93aGlsZSAoZXEgeCkgeHMpKVxuXG5leGNlcHRpb24gRm9yY2VkX3R3aWNlXG5cbm1vZHVsZSBTdXNwZW5zaW9uID0gc3RydWN0XG5cbiAgdHlwZSAnYSBzdXNwZW5zaW9uID1cbiAgICB1bml0IC0+ICdhXG5cbiAgKCogQ29udmVyc2lvbnMuICopXG5cbiAgbGV0IHRvX2xhenkgOiAnYSBzdXNwZW5zaW9uIC0+ICdhIExhenkudCA9XG4gICAgTGF6eS5mcm9tX2Z1blxuICAgICgqIGZ1biBzIC0+IGxhenkgKHMoKSkgKilcblxuICBsZXQgZnJvbV9sYXp5IChzIDogJ2EgTGF6eS50KSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPiBMYXp5LmZvcmNlIHNcblxuICAoKiBbbWVtb2l6ZV0gdHVybnMgYW4gYXJiaXRyYXJ5IHN1c3BlbnNpb24gaW50byBhIHBlcnNpc3RlbnQgc3VzcGVuc2lvbi4gKilcblxuICBsZXQgbWVtb2l6ZSAocyA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnJvbV9sYXp5ICh0b19sYXp5IHMpXG5cbiAgKCogW2ZhaWx1cmVdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGZhaWxzIHdoZW4gZm9yY2VkLiAqKVxuXG4gIGxldCBmYWlsdXJlIDogXyBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEEgc3VzcGVuc2lvbiBjcmVhdGVkIGJ5IFtvbmNlXSBoYXMgYmVlbiBmb3JjZWQgdHdpY2UuICopXG4gICAgICByYWlzZSBGb3JjZWRfdHdpY2VcblxuICAoKiBJZiBbZl0gaXMgYSBzdXNwZW5zaW9uLCB0aGVuIFtvbmNlIGZdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGNhbiBiZSBmb3JjZWRcbiAgICAgYXQgbW9zdCBvbmNlLiBJZiBpdCBpcyBmb3JjZWQgbW9yZSB0aGFuIG9uY2UsIHRoZW4gW0ZvcmNlZF90d2ljZV0gaXNcbiAgICAgcmFpc2VkLiAqKVxuXG4gIGxldCBvbmNlIChmIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBsZXQgYWN0aW9uID0gQXRvbWljLm1ha2UgZiBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogR2V0IHRoZSBmdW5jdGlvbiBjdXJyZW50bHkgc3RvcmVkIGluIFthY3Rpb25dLCBhbmQgd3JpdGUgdGhlXG4gICAgICAgICBmdW5jdGlvbiBbZmFpbHVyZV0gaW4gaXRzIHBsYWNlLCBzbyB0aGUgbmV4dCBhY2Nlc3Mgd2lsbCByZXN1bHRcbiAgICAgICAgIGluIGEgY2FsbCB0byBbZmFpbHVyZSgpXS4gKilcbiAgICAgIGxldCBmID0gQXRvbWljLmV4Y2hhbmdlIGFjdGlvbiBmYWlsdXJlIGluXG4gICAgICBmKClcblxuZW5kICgqIFN1c3BlbnNpb24gKilcblxubGV0IHJlYyBtZW1vaXplIHhzID1cbiAgU3VzcGVuc2lvbi5tZW1vaXplIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBtZW1vaXplIHhzKVxuICApXG5cbmxldCByZWMgb25jZSB4cyA9XG4gIFN1c3BlbnNpb24ub25jZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgb25jZSB4cylcbiAgKVxuXG5cbmxldCByZWMgemlwIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoKHgsIHkpLCB6aXAgeHMgeXMpXG5cbmxldCByZWMgbWFwMiBmIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoZiB4IHksIG1hcDIgZiB4cyB5cylcblxubGV0IHJlYyBpbnRlcmxlYXZlIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB5cygpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zICh4LCBpbnRlcmxlYXZlIHlzIHhzKVxuXG4oKiBbc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgeXNdLlxuXG4gICBbc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgeHMgKGNvbnMgeSB5cyldLlxuXG4gICBbc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIChjb25zIHkgeXMpXS5cblxuICAgVGhlc2UgdGhyZWUgZnVuY3Rpb25zIGFyZSB1c2VkIGFzIGJ1aWxkaW5nIGJsb2NrcyBpbiB0aGUgZGVmaW5pdGlvblxuICAgb2YgW3NvcnRlZF9tZXJnZV0uICopXG5cbmxldCByZWMgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMgKCkgPVxuICBtYXRjaCB5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHgsIHhzKVxuICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeSwgeXMpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5cyA9XG4gIGlmIGNtcCB4IHkgPD0gMCB0aGVuXG4gICAgQ29ucyAoeCwgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMpXG4gIGVsc2VcbiAgICBDb25zICh5LCBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cylcblxubGV0IHNvcnRlZF9tZXJnZSBjbXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgICB8IE5pbCwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgTmlsLCBjXG4gICAgfCBjLCBOaWwgLT5cbiAgICAgICAgY1xuICAgIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cblxubGV0IHJlYyBtYXBfZnN0IHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKCh4LCBfKSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeCwgbWFwX2ZzdCB4eXMpXG5cbmxldCByZWMgbWFwX3NuZCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoXywgeSksIHh5cykgLT5cbiAgICAgIENvbnMgKHksIG1hcF9zbmQgeHlzKVxuXG5sZXQgdW56aXAgeHlzID1cbiAgbWFwX2ZzdCB4eXMsIG1hcF9zbmQgeHlzXG5cbmxldCBzcGxpdCA9XG4gIHVuemlwXG5cbigqIFtmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4c10gaXMgZXF1aXZhbGVudCB0b1xuICAgW2ZpbHRlcl9tYXAgRWl0aGVyLmZpbmRfbGVmdCAobWFwIGYgeHMpXS4gKilcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCB5IC0+XG4gICAgICAgICAgQ29ucyAoeSwgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMpXG4gICAgICB8IEVpdGhlci5SaWdodCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKClcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgeiAtPlxuICAgICAgICAgIENvbnMgKHosIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cylcblxubGV0IHBhcnRpdGlvbl9tYXAgZiB4cyA9XG4gIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzLFxuICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHNcblxubGV0IHBhcnRpdGlvbiBwIHhzID1cbiAgZmlsdGVyIHAgeHMsIGZpbHRlciAoZnVuIHggLT4gbm90IChwIHgpKSB4c1xuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbcGVlbCB4c3NdIGlzIGEgcGFpciBvZlxuICAgdGhlIGZpcnN0IGNvbHVtbiAoYSBzZXF1ZW5jZSBvZiBlbGVtZW50cykgYW5kIG9mIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygc2hvcnRlciByb3dzKS4gVGhlc2UgdHdvIHNlcXVlbmNlcyBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIEFuIGVtcHR5IHJvdyBpcyBpZ25vcmVkLiAqKVxuXG4oKiBCZWNhdXNlIFtwZWVsXSB1c2VzIFt1bnppcF0sIGl0cyBhcmd1bWVudCBtdXN0IGJlIHBlcnNpc3RlbnQuIFRoZSBzYW1lXG4gICByZW1hcmsgYXBwbGllcyB0byBbdHJhbnNwb3NlXSwgW2RpYWdvbmFsc10sIFtwcm9kdWN0XSwgZXRjLiAqKVxuXG5sZXQgcGVlbCB4c3MgPVxuICB1bnppcCAoZmlsdGVyX21hcCB1bmNvbnMgeHNzKVxuXG5sZXQgcmVjIHRyYW5zcG9zZSB4c3MgKCkgPVxuICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCB4c3MgaW5cbiAgaWYgaXNfZW1wdHkgaGVhZHMgdGhlbiBiZWdpblxuICAgIGFzc2VydCAoaXNfZW1wdHkgdGFpbHMpO1xuICAgIE5pbFxuICBlbmRcbiAgZWxzZVxuICAgIENvbnMgKGhlYWRzLCB0cmFuc3Bvc2UgdGFpbHMpXG5cbigqIFRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbZGlhZ29uYWxzXSB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCwgW3JlbWFpbmRlcnNdLFxuICAgd2hpY2ggY29udGFpbnMgdGhlIHJlbWFpbmRlcnMgb2YgdGhlIHJvd3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlblxuICAgZGlzY292ZXJlZC4gKilcblxubGV0IHJlYyBkaWFnb25hbHMgcmVtYWluZGVycyB4c3MgKCkgPVxuICBtYXRjaCB4c3MoKSB3aXRoXG4gIHwgQ29ucyAoeHMsIHhzcykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBub25lbXB0eSByb3cgW3ggOjogeHNdLiBUaHVzLCB0aGUgbmV4dCBkaWFnb25hbFxuICAgICAgICAgICAgIGlzIFt4IDo6IGhlYWRzXTogdGhpcyBkaWFnb25hbCBiZWdpbnMgd2l0aCBbeF0gYW5kIGNvbnRpbnVlcyB3aXRoXG4gICAgICAgICAgICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgZXZlcnkgcm93IGluIFtyZW1haW5kZXJzXS4gSW4gdGhlIHJlY3Vyc2l2ZVxuICAgICAgICAgICAgIGNhbGwsIHRoZSBhcmd1bWVudCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGggW3hzIDo6XG4gICAgICAgICAgICAgdGFpbHNdLCB3aGljaCBtZWFucyB0aGF0IHdlIGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdywgW3hzXSxcbiAgICAgICAgICAgICBhbmQgdGhhdCB3ZSBrZWVwIHRoZSB0YWlscyBvZiB0aGUgcHJlLWV4aXN0aW5nIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChjb25zIHggaGVhZHMsIGRpYWdvbmFscyAoY29ucyB4cyB0YWlscykgeHNzKVxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBlbXB0eSByb3cuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaWFnb25hbCBpc1xuICAgICAgICAgICAgIGp1c3QgW2hlYWRzXSwgYW5kIFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBqdXN0IFt0YWlsc10sXG4gICAgICAgICAgICAgYXMgd2UgZG8gbm90IGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoaGVhZHMsIGRpYWdvbmFscyB0YWlscyB4c3MpXG4gICAgICBlbmRcbiAgfCBOaWwgLT5cbiAgICAgICgqIFRoZXJlIGFyZSBubyBtb3JlIHJvd3MgdG8gYmUgZGlzY292ZXJlZC4gVGhlcmUgcmVtYWlucyB0byBleGhhdXN0XG4gICAgICAgICB0aGUgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICB0cmFuc3Bvc2UgcmVtYWluZGVycyAoKVxuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbZGlhZ29uYWxzIHhzc10gaXNcbiAgIHRoZSBzZXF1ZW5jZSBvZiBpdHMgZGlhZ29uYWxzLlxuXG4gICBUaGUgZmlyc3QgZGlhZ29uYWwgY29udGFpbnMganVzdCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIGZpcnN0IHJvdy4gVGhlIHNlY29uZCBkaWFnb25hbCBjb250YWlucyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIHNlY29uZCByb3cgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGUgZmlyc3Qgcm93OyBhbmQgc28gb24uXG4gICBUaGlzIGtpbmQgb2YgZGlhZ29uYWwgaXMgaW4gZmFjdCBzb21ldGltZXMga25vd24gYXMgYW4gYW50aWRpYWdvbmFsLlxuXG4gICAtIEV2ZXJ5IGRpYWdvbmFsIGlzIGEgZmluaXRlIHNlcXVlbmNlLlxuICAgLSBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG4gICAtIFRoZSBtYXRyaXggW3hzc10gaXMgbm90IHJlcXVpcmVkIHRvIGJlIGZpbml0ZSAoaW4gZWl0aGVyIGRpcmVjdGlvbikuXG4gICAtIFRoZSBtYXRyaXggW3hzc10gbXVzdCBiZSBwZXJzaXN0ZW50LiAqKVxuXG5sZXQgZGlhZ29uYWxzIHhzcyA9XG4gIGRpYWdvbmFscyBlbXB0eSB4c3NcblxubGV0IG1hcF9wcm9kdWN0IGYgeHMgeXMgPVxuICBjb25jYXQgKGRpYWdvbmFscyAoXG4gICAgbWFwIChmdW4geCAtPlxuICAgICAgbWFwIChmdW4geSAtPlxuICAgICAgICBmIHggeVxuICAgICAgKSB5c1xuICAgICkgeHNcbiAgKSlcblxubGV0IHByb2R1Y3QgeHMgeXMgPVxuICBtYXBfcHJvZHVjdCAoZnVuIHggeSAtPiAoeCwgeSkpIHhzIHlzXG5cbmxldCBvZl9kaXNwZW5zZXIgaXQgPVxuICBsZXQgcmVjIGMgKCkgPVxuICAgIG1hdGNoIGl0KCkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBOaWxcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBDb25zICh4LCBjKVxuICBpblxuICBjXG5cbmxldCB0b19kaXNwZW5zZXIgeHMgPVxuICBsZXQgcyA9IHJlZiB4cyBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAoIXMpKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBzIDo9IHhzO1xuICAgICAgICBTb21lIHhcblxuXG5cbmxldCByZWMgaW50cyBpICgpID1cbiAgQ29ucyAoaSwgaW50cyAoaSArIDEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPSBOb25lIHwgU29tZSBvZiAnYVxuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCBzb21lIHYgPSBTb21lIHZcbmxldCB2YWx1ZSBvIH5kZWZhdWx0ID0gbWF0Y2ggbyB3aXRoIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBkZWZhdWx0XG5sZXQgZ2V0ID0gZnVuY3Rpb24gU29tZSB2IC0+IHYgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxubGV0IGJpbmQgbyBmID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBmIHZcbmxldCBqb2luID0gZnVuY3Rpb24gU29tZSBvIC0+IG8gfCBOb25lIC0+IE5vbmVcbmxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5sZXQgZm9sZCB+bm9uZSB+c29tZSA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBzb21lIHYgfCBOb25lIC0+IG5vbmVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBTb21lIHYgLT4gZiB2IHwgTm9uZSAtPiAoKVxubGV0IGlzX25vbmUgPSBmdW5jdGlvbiBOb25lIC0+IHRydWUgfCBTb21lIF8gLT4gZmFsc2VcbmxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG5cbmxldCBlcXVhbCBlcSBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gZXEgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiB0cnVlXG58IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgY21wIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBjbXAgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiAwXG58IE5vbmUsIFNvbWUgXyAtPiAtMVxufCBTb21lIF8sIE5vbmUgLT4gMVxuXG5sZXQgdG9fcmVzdWx0IH5ub25lID0gZnVuY3Rpb24gTm9uZSAtPiBFcnJvciBub25lIHwgU29tZSB2IC0+IE9rIHZcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gTm9uZSAtPiBbXSB8IFNvbWUgdiAtPiBbdl1cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBOb25lIC0+IFNlcS5lbXB0eSB8IFNvbWUgdiAtPiBTZXEucmV0dXJuIHZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnZVxuXG5sZXQgb2sgdiA9IE9rIHZcbmxldCBlcnJvciBlID0gRXJyb3IgZVxubGV0IHZhbHVlIHIgfmRlZmF1bHQgPSBtYXRjaCByIHdpdGggT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBkZWZhdWx0XG5sZXQgZ2V0X29rID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBFcnJvciBfXCJcbmxldCBnZXRfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGUgfCBPayBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIE9rIF9cIlxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcF9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBFcnJvciAoZiBlKSB8IE9rIF8gYXMgdiAtPiB2XG5sZXQgZm9sZCB+b2sgfmVycm9yID0gZnVuY3Rpb24gT2sgdiAtPiBvayB2IHwgRXJyb3IgZSAtPiBlcnJvciBlXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGJvb2wgPSBmYWxzZSB8IHRydWVcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxubGV0IGVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmV4dGVybmFsIHRvX2ludCA6IGJvb2wgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb24gZmFsc2UgLT4gMC4gfCB0cnVlIC0+IDEuXG5cbigqXG5sZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbnwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbnwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG58IF8gLT4gTm9uZVxuKilcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uIGZhbHNlIC0+IFwiZmFsc2VcIiB8IHRydWUgLT4gXCJ0cnVlXCJcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGNociBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiQ2hhci5jaHJcIiBlbHNlIHVuc2FmZV9jaHIgblxuXG5leHRlcm5hbCBieXRlc19jcmVhdGU6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0IGVzY2FwZWQgPSBmdW5jdGlvblxuICB8ICdcXCcnIC0+IFwiXFxcXCdcIlxuICB8ICdcXFxcJyAtPiBcIlxcXFxcXFxcXCJcbiAgfCAnXFxuJyAtPiBcIlxcXFxuXCJcbiAgfCAnXFx0JyAtPiBcIlxcXFx0XCJcbiAgfCAnXFxyJyAtPiBcIlxcXFxyXCJcbiAgfCAnXFxiJyAtPiBcIlxcXFxiXCJcbiAgfCAnICcgLi4gJ34nIGFzIGMgLT5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDEgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwIGM7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcbiAgfCBjIC0+XG4gICAgICBsZXQgbiA9IGNvZGUgYyBpblxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgNCBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgJ1xcXFwnO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDEgKHVuc2FmZV9jaHIgKDQ4ICsgbiAvIDEwMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDIgKHVuc2FmZV9jaHIgKDQ4ICsgKG4gLyAxMCkgbW9kIDEwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMyAodW5zYWZlX2NociAoNDggKyBuIG1vZCAxMCkpO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCBsb3dlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcblxuKCogVVRGIGNvZGVjcyB0b29scyAqKVxuXG50eXBlIHV0Zl9kZWNvZGUgPSBpbnRcbigqIFRoaXMgaXMgYW4gaW50IFsweERVVVVVVVVdIGRlY29tcG9zZWQgYXMgZm9sbG93czpcbiAgIC0gW0RdIGlzIGZvdXIgYml0cyBmb3IgZGVjb2RlIGluZm9ybWF0aW9uLCB0aGUgaGlnaGVzdCBiaXQgaXMgc2V0IGlmIHRoZVxuICAgICBkZWNvZGUgaXMgdmFsaWQuIFRoZSB0aHJlZSBsb3dlciBiaXRzIGluZGljYXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgICAgZnJvbSB0aGUgc291cmNlIHRoYXQgd2VyZSBjb25zdW1lZCBieSB0aGUgZGVjb2RlLlxuICAgLSBbVVVVVVVVXSBpcyB0aGUgZGVjb2RlZCBVbmljb2RlIGNoYXJhY3RlciBvciB0aGUgVW5pY29kZSByZXBsYWNlbWVudFxuICAgICBjaGFyYWN0ZXIgVStGRkZEIGlmIGZvciBpbnZhbGlkIGRlY29kZXMuICopXG5cbmxldCB2YWxpZF9iaXQgPSAyN1xubGV0IGRlY29kZV9iaXRzID0gMjRcblxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaXNfdmFsaWQgZCA9IChkIGxzciB2YWxpZF9iaXQpID0gMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfbGVuZ3RoIGQgPSAoZCBsc3IgZGVjb2RlX2JpdHMpIGxhbmQgMGIxMTFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX3VjaGFyIGQgPSB1bnNhZmVfb2ZfaW50IChkIGxhbmQgMHhGRkZGRkYpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZSBuIHUgPSAoKDggbG9yIG4pIGxzbCBkZWNvZGVfYml0cykgbG9yICh0b19pbnQgdSlcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2ludmFsaWQgbiA9IChuIGxzbCBkZWNvZGVfYml0cykgbG9yIHJlcFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBpbml0IGkgbGFzdCBmID1cbiAgaWYgaSA+IGxhc3QgdGhlbiBbXVxuICBlbHNlIGlmIGkgPSBsYXN0IHRoZW4gW2YgaV1cbiAgZWxzZVxuICAgIGxldCByMSA9IGYgaSBpblxuICAgIGxldCByMiA9IGYgKGkrMSkgaW5cbiAgICByMSA6OiByMiA6OiBpbml0IChpKzIpIGxhc3QgZlxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaW5pdCAwIChsZW4gLSAxKSBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBhMSBpblxuICAgICAgW3IxXVxuICB8IGExOjphMjo6bCAtPlxuICAgICAgbGV0IHIxID0gZiBhMSBpblxuICAgICAgbGV0IHIyID0gZiBhMiBpblxuICAgICAgcjE6OnIyOjptYXAgZiBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IFthMV0gLT5cbiAgICAgIGxldCByMSA9IGYgaSBhMSBpblxuICAgICAgW3IxXVxuICB8IGExOjphMjo6bCAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBsZXQgcjIgPSBmIChpKzEpIGEyIGluXG4gICAgICByMTo6cjI6Om1hcGkgKGkrMikgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKFthMV0sIFtiMV0pIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGIxIGluXG4gICAgICBbcjFdXG4gIHwgKGExOjphMjo6bDEsIGIxOjpiMjo6bDIpIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGIxIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGIyIGluXG4gICAgICByMTo6cjI6Om1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgZmluZF9pbmRleCBwID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBwIGEgdGhlbiBTb21lIGkgZWxzZSBhdXggKGkrMSkgbCBpblxuICBhdXggMFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfbWFwaSBmID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBhdXggKGkrMSkgbFxuICAgICBlbmQgaW5cbiAgYXV4IDBcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9hbGwgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCA6OiBmaW5kX2FsbCBwIGwgZWxzZSBmaW5kX2FsbCBwIGxcblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbHRlcmkgcCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHg6OmwgLT5cbiAgICAgIGxldCBpJyA9IGkgKyAxIGluXG4gICAgICBpZiBwIGkgeCB0aGVuIHggOjogZmlsdGVyaSBwIGknIGwgZWxzZSBmaWx0ZXJpIHAgaScgbFxuXG5sZXQgZmlsdGVyaSBwIGwgPSBmaWx0ZXJpIHAgMCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IGwgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIGxcbiAgICAgIHwgU29tZSB2IC0+IHYgOjogZmlsdGVyX21hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgY29uY2F0X21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHg6OnhzIC0+IHByZXBlbmRfY29uY2F0X21hcCAoZiB4KSBmIHhzXG5hbmRbQHRhaWxfbW9kX2NvbnNdIHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzID1cbiAgbWF0Y2ggeXMgd2l0aFxuICB8IFtdIC0+IGNvbmNhdF9tYXAgZiB4c1xuICB8IHkgOjogeXMgLT4geSA6OiBwcmVwZW5kX2NvbmNhdF9tYXAgeXMgZiB4c1xuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIHZlcnkgbG9uZyBsaXN0IChsZW5ndGggb3ZlciBhYm91dCAxMDAwMDApLCBpdCB1c2VkIHRvIGJlXG4gICBmYXN0ZXIgdG8gY29udmVydCB0aGUgbGlzdCB0byBhbiBhcnJheSwgc29ydCB0aGUgYXJyYXksIGFuZCBjb252ZXJ0XG4gICBiYWNrLCB0cnVuY2F0aW5nIHRoZSBhcnJheSBvYmplY3QgYWZ0ZXIgcHJlcGVuZGluZyBlYWNoIHRob3VzYW5kXG4gICBlbnRyaWVzIHRvIHRoZSByZXN1bHRpbmcgbGlzdC4gSW1wb3NzaWJsZSBub3cgdGhhdCBPYmoudHJ1bmNhdGUgaGFzXG4gICBiZWVuIHJlbW92ZWQuICopXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT4gZmFsc2VcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG9mX3NlcSBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gW11cbiAgfCBTZXEuQ29ucyAoeDEsIHNlcSkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW3gxXVxuICAgICAgfCBTZXEuQ29ucyAoeDIsIHNlcSkgLT4geDEgOjogeDIgOjogb2Zfc2VxIHNlcVxuICAgICAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IHVuc2FmZV9lc2NhcGUgcyA9XG4gICgqIFdlIHBlcmZvcm0gdHdvIHBhc3NlcyBvbiB0aGUgaW5wdXQgc2VxdWVuY2UsIG9uZSB0byBjb21wdXRlIHRoZVxuICAgICByZXN1bHQgc2l6ZSBhbmQgb25lIHRvIHdyaXRlIHRoZSByZXN1bHQuXG5cbiAgICAgIzExNTA4LCAjMTE1MDk6IFRoaXMgbG9naWMgd291bGQgYmUgaW5jb3JyZWN0IGluIHByZXNlbmNlIG9mXG4gICAgIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIHRvIHRoZSBpbnB1dCwgbWFraW5nIHRoZSB1c2Ugb2ZcbiAgICAgW3Vuc2FmZV9zZXRdIGJlbG93IG1lbW9yeS11bnNhZmUuXG5cbiAgICAgUHJlY29uZGl0aW9uOiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBzYWZlbHkgY2FsbGVkIG9uOlxuICAgICAtIGFuIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlXG4gICAgIC0gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlICh0aGUgZnVuY3Rpb24gdGFrZXMgb3duZXJzaGlwKVxuXG4gICAgIEluIGVpdGhlciBjYXNlIHdlIHJldHVybiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UuXG4gICopXG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gc1xuICBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IGVzY2FwZWQgYiA9XG4gIGxldCBiID0gY29weSBiIGluXG4gICgqIFdlIGNvcHkgb3VyIGlucHV0IHRvIG9idGFpbiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgW2JdXG4gICAgIHRvIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uICopXG4gIHVuc2FmZV9lc2NhcGUgYlxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcbiAgZWxzZSBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHhcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeCBlbHNlXG4gIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuXG4oKiBVVEYgY29kZWNzIGFuZCB2YWxpZGF0aW9ucyAqKVxuXG5sZXQgZGVjX2ludmFsaWQgPSBVY2hhci51dGZfZGVjb2RlX2ludmFsaWRcbmxldFtAaW5saW5lXSBkZWNfcmV0IG4gdSA9IFVjaGFyLnV0Zl9kZWNvZGUgbiAoVWNoYXIudW5zYWZlX29mX2ludCB1KVxuXG4oKiBJbiBjYXNlIG9mIGRlY29kaW5nIGVycm9yLCBpZiB3ZSBlcnJvciBvbiB0aGUgZmlyc3QgYnl0ZSwgd2VcbiAgIGNvbnN1bWUgdGhlIGJ5dGUsIG90aGVyd2lzZSB3ZSBjb25zdW1lIHRoZSBbbl0gYnl0ZXMgcHJlY2VkaW5nXG4gICB0aGUgZXJyb3JpbmcgYnl0ZS5cblxuICAgVGhpcyBtZWFucyB0aGF0IGlmIGEgY2xpZW50IHVzZXMgZGVjb2RlcyB3aXRob3V0IGNhcmluZyBhYm91dFxuICAgdmFsaWRpdHkgaXQgbmF0dXJhbGx5IHJlcGxhY2UgYm9ndXMgZGF0YSB3aXRoIFVjaGFyLnJlcCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBXSEFUV0cgRW5jb2Rpbmcgc3RhbmRhcmQuIE90aGVyIHNjaGVtZXMgYXJlIHBvc3NpYmxlIGJ5XG4gICBjb25zdWx0aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBieXRlcyBvbiBpbnZhbGlkIGRlY29kZXMuIEZvciBtb3JlXG4gICBkZXRhaWxzIHNlZSBodHRwczovL2hzaXZvbmVuLmZpL2Jyb2tlbi11dGYtOC9cblxuICAgRm9yIHRoaXMgcmVhc29uIGluIFtnZXRfdXRmXzhfdWNoYXJdIHdlIGdyYWR1YWxseSBjaGVjayB0aGUgbmV4dFxuICAgYnl0ZSBpcyBhdmFpbGFibGUgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXG4gICBmaXJzdCBieXRlLiBDb250cmFzdCB3aXRoIFtpc192YWxpZF91dGZfOF0uICopXG5cbigqIFVURi04ICopXG5cbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3hCRiBiID0gYiBsc3IgNiA8PiAwYjEwXG5sZXRbQGlubGluZV0gbm90X2luX3hBMF90b194QkYgYiA9IGIgbHNyIDUgPD4gMGIxMDFcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g5RiBiID0gYiBsc3IgNSA8PiAwYjEwMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94OTBfdG9feEJGIGIgPSBiIDwgMHg5MCB8fCAweEJGIDwgYlxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDhGIGIgPSBiIGxzciA0IDw+IDB4OFxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMiBiMCBiMSA9XG4gICgoYjAgbGFuZCAweDFGKSBsc2wgNikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIgPVxuICAoKGIwIGxhbmQgMHgwRikgbHNsIDEyKSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMyA9XG4gICgoYjAgbGFuZCAweDA3KSBsc2wgMTgpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDEyKSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMyBsYW5kIDB4M0YpKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIGIgaSA9XG4gIGxldCBiMCA9IGdldF91aW50OCBiIGkgaW4gKCogcmFpc2VzIGlmIFtpXSBpcyBub3QgYSB2YWxpZCBpbmRleC4gKilcbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgYjAgd2l0aCAoKiBTZWUgVGhlIFVuaWNvZGUgU3RhbmRhcmQsIFRhYmxlIDMuNyAqKVxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBkZWNfcmV0IDEgYjBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgZGVjX3JldCAyICh1dGZfOF91Y2hhcl8yIGIwIGIxKVxuICB8ICdcXHhFMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feEEwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFRCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g5RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEYwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94OTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGNCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g4RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCBfIC0+IGRlY19pbnZhbGlkIDFcblxubGV0IHNldF91dGZfOF91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgIHNldF91aW50OCBiIGkgdTtcbiAgICAgIDFcbiAgfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEMwIGxvciAodSBsc3IgNikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDIpXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhFMCBsb3IgKHUgbHNyIDEyKSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAzKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhGMCBsb3IgKHUgbHNyIDE4KSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgKGkgKyAyKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICA0KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfOCBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICAgIG1hdGNoIENoYXIudW5zYWZlX2NociAoZ2V0IGIgaSkgd2l0aFxuICAgIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGxvb3AgbWF4IGIgKGkgKyAxKVxuICAgIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3hBMF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEVEJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OUYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDkwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGNCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDhGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2QkUgKilcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZiZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2TEUgKilcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZsZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBidHMgKEIudW5zYWZlX2VzY2FwZSBiKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3RyaW5nX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoIDAgeFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCogVVRGIGRlY29kZXJzIGFuZCB2YWxpZGF0b3JzICopXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzhfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzggcyA9IEIuaXNfdmFsaWRfdXRmXzggKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmJlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmJlIChib3MgcylcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZsZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZsZSBzID0gQi5pc192YWxpZF91dGZfMTZsZSAoYm9zIHMpXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuXG4oKiBub3RlOiB0aGlzIHR5cGUgZGVmaW5pdGlvbiBpcyB1c2VkIGluICdydW50aW1lL2RlYnVnZ2VyLmMnICopXG5cbmV4dGVybmFsIHRvX2NoYW5uZWw6IG91dF9jaGFubmVsIC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxuZXh0ZXJuYWwgdG9fYnl0ZXM6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGJ5dGVzXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzXCJcbmV4dGVybmFsIHRvX3N0cmluZzogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gc3RyaW5nXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB0b19idWZmZXJfdW5zYWZlOlxuICAgICAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXCJcblxubGV0IHRvX2J1ZmZlciBidWZmIG9mcyBsZW4gdiBmbGFncyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC50b19idWZmZXI6IHN1YnN0cmluZyBvdXQgb2YgYm91bmRzXCJcbiAgZWxzZSB0b19idWZmZXJfdW5zYWZlIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzXG5cbigqIFRoZSBmdW5jdGlvbnMgYmVsb3cgdXNlIGJ5dGUgc2VxdWVuY2VzIGFzIGlucHV0LCBuZXZlciB1c2luZyBhbnlcbiAgIG11dGF0aW9uLiBJdCBtYWtlcyBzZW5zZSB0byB1c2Ugbm9uLW11dGF0ZWQgW2J5dGVzXSByYXRoZXIgdGhhblxuICAgW3N0cmluZ10sIGJlY2F1c2Ugd2UgcmVhbGx5IHdvcmsgd2l0aCBzZXF1ZW5jZXMgb2YgYnl0ZXMsIG5vdFxuICAgYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuKilcblxuZXh0ZXJuYWwgZnJvbV9jaGFubmVsOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIGZyb21fYnl0ZXNfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlc1wiXG5leHRlcm5hbCBkYXRhX3NpemVfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX21hcnNoYWxfZGF0YV9zaXplXCJcblxubGV0IGhlYWRlcl9zaXplID0gMTZcbmxldCBkYXRhX3NpemUgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZGF0YV9zaXplXCJcbiAgZWxzZSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzXG5sZXQgdG90YWxfc2l6ZSBidWZmIG9mcyA9IGhlYWRlcl9zaXplICsgZGF0YV9zaXplIGJ1ZmYgb2ZzXG5cbmxldCBmcm9tX2J5dGVzIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGxlbiA9IGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnMgaW5cbiAgICBpZiBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIChoZWFkZXJfc2l6ZSArIGxlbilcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgICBlbHNlIGZyb21fYnl0ZXNfdW5zYWZlIGJ1ZmYgb2ZzXG4gIGVuZFxuXG5sZXQgZnJvbV9zdHJpbmcgYnVmZiBvZnMgPVxuICAoKiBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGlzIHNhZmUgaGVyZSwgYXMgdGhlIHByb2R1Y2VkIGJ5dGVcbiAgICAgc2VxdWVuY2UgaXMgbmV2ZXIgbXV0YXRlZCAqKVxuICBmcm9tX2J5dGVzIChCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGJ1ZmYpIG9mc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCBjcmVhdGU6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgdW5zYWZlX3N1YiA6ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfc3ViXCJcbmV4dGVybmFsIGFwcGVuZF9wcmltIDogJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfYXBwZW5kXCJcbmV4dGVybmFsIGNvbmNhdCA6ICdhIGFycmF5IGxpc3QgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfY29uY2F0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2ZpbGxcIlxuZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0OiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBtdXN0IG5vdCBldmFsdWF0ZSBbZiAwXSB3aGVuIFtsIDw9IDBdLlxuICAgICBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGlmIHN5ID4gMCB0aGVuIGJlZ2luXG4gICAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBpbml0X21hdHJpeCBzeCBzeSBmID1cbiAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gICgqIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIHggMF0gd2hlbiBbc3kgPD0gMF06ICopXG4gIGlmIHN5ID4gMCB0aGVuIGJlZ2luXG4gICAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICAgIGxldCByb3cgPSBjcmVhdGUgc3kgKGYgeCAwKSBpblxuICAgICAgZm9yIHkgPSAxIHRvIHByZWQgc3kgZG9cbiAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICBkb25lO1xuICAgICAgdW5zYWZlX3NldCByZXMgeCByb3dcbiAgICBkb25lO1xuICBlbmQ7XG4gIHJlc1xuXG5sZXQgY29weSBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpbiBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSB1bnNhZmVfc3ViIGEgMCBsXG5cbmxldCBhcHBlbmQgYTEgYTIgPVxuICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgaWYgbDEgPSAwIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgZWxzZSBhcHBlbmRfcHJpbSBhMSBhMlxuXG5sZXQgc3ViIGEgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuc3ViXCJcbiAgZWxzZSB1bnNhZmVfc3ViIGEgb2ZzIGxlblxuXG5sZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IGExIG9mczEgYTIgb2ZzMiBsZW5cblxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBpdGVyMiBmIGEgYiA9XG4gIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2VcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxubGV0IG1hcCBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZih1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZih1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwX2lucGxhY2UgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgYSBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcGlfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICBkb25lXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX2luZGV4IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcGkgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbmxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDEgZG9cbiAgICBsZXQgaiA9IHJhbmQgKGkgKyAxKSBpblxuICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICB1bnNhZmVfc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgdW5zYWZlX3NldCBhIGogdlxuICBkb25lXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgbXVsIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCBkaXYgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsIHJlbSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZm1hIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1hX2Zsb2F0XCIgXCJjYW1sX2ZtYVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcblxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IHF1aWV0X25hbiA9IG5hblxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBzaWduYWxpbmdfbmFuID0gZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IGlzX2Zpbml0ZSAoeDogZmxvYXQpID0geCAtLiB4ID0gMC5cbmxldCBpc19pbmZpbml0ZSAoeDogZmxvYXQpID0gMS4gLy4geCA9IDAuXG5sZXQgaXNfbmFuICh4OiBmbG9hdCkgPSB4IDw+IHhcblxubGV0IHBpID0gMHgxLjkyMWZiNTQ0NDJkMThwKzFcbmxldCBtYXhfZmxvYXQgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gU3RkbGliLm1pbl9mbG9hdFxubGV0IGVwc2lsb24gPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0b19pbnQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXRcbnR5cGUgZnBjbGFzcyA9IFN0ZGxpYi5mcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwb3cgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNicnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jYnJ0X2Zsb2F0XCIgXCJjYW1sX2NicnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cDJfZmxvYXRcIiBcImNhbWxfZXhwMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMl9mbG9hdFwiIFwiY2FtbF9sb2cyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmYgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZfZmxvYXRcIiBcImNhbWxfZXJmXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZjX2Zsb2F0XCIgXCJjYW1sX2VyZmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdHJ1bmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90cnVuY19mbG9hdFwiIFwiY2FtbF90cnVuY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCByb3VuZCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3JvdW5kX2Zsb2F0XCIgXCJjYW1sX3JvdW5kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbltAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBpc19pbnRlZ2VyIHggPSB4ID0gdHJ1bmMgeCAmJiBpc19maW5pdGUgeFxuXG5leHRlcm5hbCBuZXh0X2FmdGVyIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmV4dGFmdGVyX2Zsb2F0XCIgXCJjYW1sX25leHRhZnRlclwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBzdWNjIHggPSBuZXh0X2FmdGVyIHggaW5maW5pdHlcbmxldCBwcmVkIHggPSBuZXh0X2FmdGVyIHggbmVnX2luZmluaXR5XG5cbmV4dGVybmFsIGNvcHlfc2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2lnbl9iaXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gYm9vbFxuICA9IFwiY2FtbF9zaWduYml0X2Zsb2F0XCIgXCJjYW1sX3NpZ25iaXRcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxudHlwZSB0ID0gZmxvYXRcbmV4dGVybmFsIGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBlcXVhbCB4IHkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0W0BpbmxpbmVdIG1pbiAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHx8IGlzX25hbiB5IHRoZW4gKG5hbiwgbmFuKVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCwgeSkgZWxzZSAoeSwgeClcblxubGV0W0BpbmxpbmVdIG1pbl9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHRoZW4gKHkseSlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuICh4LHgpXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LHkpIGVsc2UgKHkseClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gZmxvYXRhcnJheVxuXG4gIGV4dGVybmFsIGxlbmd0aCA6IHQgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGxldCB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgZm9yIGkgPSBvZnMgdG8gb2ZzICsgbGVuIC0gMSBkbyB1bnNhZmVfc2V0IGEgaSB2IGRvbmVcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPVxuICAgIFwiY2FtbF9mbG9hdGFycmF5X2JsaXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjaGVjayBhIG9mcyBsZW4gbXNnID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzICsgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBsZW5ndGggYSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBsZXQgbWFrZSBuIHYgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbiBpblxuICAgIHVuc2FmZV9maWxsIHJlc3VsdCAwIG4gdjtcbiAgICByZXN1bHRcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IG1ha2VfbWF0cml4IHN4IHN5IHYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCAobWFrZSBzeSB2KVxuICAgICAgZG9uZTtcbiAgICBlbmQ7XG4gICAgcmVzXG5cbiAgbGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSBpblxuICAgICAgICBmb3IgeSA9IDAgdG8gc3kgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIHggcm93XG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcF9pbnBsYWNlIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtYXBpX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX29wdCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9pbmRleCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXAgZiBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfbWFwaSBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgICAgbGV0IGogPSByYW5kIChpICsgMSkgaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHVuc2FmZV9zZXQgYSBqIHZcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50MzJdOiAzMi1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX3RvX2Zsb2F0XCIgXCJjYW1sX2ludDMyX3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCB6ZXJvID0gMGxcbmxldCBvbmUgPSAxbFxubGV0IG1pbnVzX29uZSA9IC0xbFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFsXG5sZXQgcHJlZCBuID0gc3ViIG4gMWxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMGwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMGxcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRmxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMWwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgfCAzMiAtPlxuICAgICAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgICAgIGZ1biBuIC0+XG4gICAgICAgIGlmIG4gPj0gMGwgJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IHggPSB5XG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQ2NF06IDY0LWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5sZXQgemVybyA9IDBMXG5sZXQgb25lID0gMUxcbmxldCBtaW51c19vbmUgPSAtMUxcbmxldCBzdWNjIG4gPSBhZGQgbiAxTFxubGV0IHByZWQgbiA9IHN1YiBuIDFMXG5sZXQgYWJzIG4gPSBpZiBuID49IDBMIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDAwMDAwMDAwMExcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRkZGRkZGRkZGTFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xTClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMG4gJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXggKilcblxudHlwZSBwb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmxldCBkdW1teV9wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMDtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gLTE7XG59XG5cbnR5cGUgbGV4YnVmID1cbiAgeyByZWZpbGxfYnVmZiA6IGxleGJ1ZiAtPiB1bml0O1xuICAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzO1xuICAgIG11dGFibGUgbGV4X2J1ZmZlcl9sZW4gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfZW9mX3JlYWNoZWQgOiBib29sO1xuICAgIG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wIDogcG9zaXRpb247XG4gIH1cblxudHlwZSBsZXhfdGFibGVzID1cbiAgeyBsZXhfYmFzZTogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHQ6IHN0cmluZztcbiAgICBsZXhfdHJhbnM6IHN0cmluZztcbiAgICBsZXhfY2hlY2s6IHN0cmluZztcbiAgICBsZXhfYmFzZV9jb2RlIDogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZztcbiAgICBsZXhfdHJhbnNfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY29kZTogc3RyaW5nO31cblxuZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX25ld19sZXhfZW5naW5lXCJcblxubGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxuXG5sZXQgbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cbmxldCBsZXhfcmVmaWxsIHJlYWRfZnVuIGF1eF9idWZmZXIgbGV4YnVmID1cbiAgbGV0IHJlYWQgPVxuICAgIHJlYWRfZnVuIGF1eF9idWZmZXIgKEJ5dGVzLmxlbmd0aCBhdXhfYnVmZmVyKSBpblxuICBsZXQgbiA9XG4gICAgaWYgcmVhZCA+IDBcbiAgICB0aGVuIHJlYWRcbiAgICBlbHNlIChsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IDApIGluXG4gICgqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1ZmZlcjpcbiAgICAgICAgPC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tPlxuICAgICAgICB8ICBqdW5rIHwgICAgICB2YWxpZCBkYXRhICAgICB8ICAganVuayAgICB8XG4gICAgICAgIF4gICAgICAgXiAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF5cbiAgICAgICAgMCAgICBzdGFydF9wb3MgICAgICAgICAgICAgYnVmZmVyX2VuZCAgICBCeXRlcy5sZW5ndGggYnVmZmVyXG4gICopXG4gIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG4gPiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIgdGhlbiBiZWdpblxuICAgICgqIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuXG4gICAgICAgPD0gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgdGhlbiBiZWdpblxuICAgICAgKCogQnV0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpZiB3ZSByZWNsYWltIHRoZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgICAgIG9mIHRoZSBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcylcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogV2UgbXVzdCBncm93IHRoZSBidWZmZXIuICBEb3VibGluZyBpdHMgc2l6ZSB3aWxsIHByb3ZpZGUgZW5vdWdoXG4gICAgICAgICBzcGFjZSBzaW5jZSBuIDw9IFN0cmluZy5sZW5ndGggYXV4X2J1ZmZlciA8PSBTdHJpbmcubGVuZ3RoIGJ1ZmZlci5cbiAgICAgICAgIFdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aCBvdmVyZmxvdywgdGhvdWdoLiAqKVxuICAgICAgbGV0IG5ld2xlbiA9XG4gICAgICAgIEludC5taW4gKDIgKiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuID4gbmV3bGVuXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICAgICAgbGV0IG5ld2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgICgqIENvcHkgdGhlIHZhbGlkIGRhdGEgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV3IGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbmV3YnVmIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3Bvcyk7XG4gICAgICBsZXhidWYubGV4X2J1ZmZlciA8LSBuZXdidWZcbiAgICBlbmQ7XG4gICAgKCogUmVhbGxvY2F0aW9uIG9yIG5vdCwgd2UgaGF2ZSBzaGlmdGVkIHRoZSBkYXRhIGxlZnQgYnlcbiAgICAgICBzdGFydF9wb3MgY2hhcmFjdGVyczsgdXBkYXRlIHRoZSBwb3NpdGlvbnMgKilcbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIHM7XG4gICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2N1cnJfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSAwO1xuICAgIGxleGJ1Zi5sZXhfbGFzdF9wb3MgPC0gbGV4YnVmLmxleF9sYXN0X3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIHMgO1xuICAgIGxldCB0ID0gbGV4YnVmLmxleF9tZW0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQtMSBkb1xuICAgICAgbGV0IHYgPSB0LihpKSBpblxuICAgICAgaWYgdiA+PSAwIHRoZW5cbiAgICAgICAgdC4oaSkgPC0gdi1zXG4gICAgZG9uZVxuICBlbmQ7XG4gICgqIFRoZXJlIGlzIG5vdyBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gIEJ5dGVzLmJsaXQgYXV4X2J1ZmZlciAwIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiBuO1xuICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuICsgblxuXG5sZXQgemVyb19wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMTtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gMDtcbn1cblxubGV0IGZyb21fZnVuY3Rpb24gPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIGYgPVxuICB7IHJlZmlsbF9idWZmID0gbGV4X3JlZmlsbCBmIChCeXRlcy5jcmVhdGUgNTEyKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDEwMjQ7XG4gICAgbGV4X2J1ZmZlcl9sZW4gPSAwO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSBmYWxzZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IGZyb21fY2hhbm5lbCA/d2l0aF9wb3NpdGlvbnMgaWMgPVxuICBmcm9tX2Z1bmN0aW9uID93aXRoX3Bvc2l0aW9ucyAoZnVuIGJ1ZiBuIC0+IGlucHV0IGljIGJ1ZiAwIG4pXG5cbmxldCBmcm9tX3N0cmluZyA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgcyA9XG4gIHsgcmVmaWxsX2J1ZmYgPSAoZnVuIGxleGJ1ZiAtPiBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWUpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5vZl9zdHJpbmcgczsgKCogaGF2ZSB0byBtYWtlIGEgY29weSBmb3IgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnNhZmUtc3RyaW5nIG1vZGUgKilcbiAgICBsZXhfYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcztcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gdHJ1ZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IHNldF9wb3NpdGlvbiBsZXhidWYgcG9zaXRpb24gPVxuICBsZXhidWYubGV4X2N1cnJfcCAgPC0ge3Bvc2l0aW9uIHdpdGggcG9zX2ZuYW1lID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2ZuYW1lfTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIHBvc2l0aW9uLnBvc19jbnVtXG5cbmxldCBzZXRfZmlsZW5hbWUgbGV4YnVmIGZuYW1lID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZm5hbWV9XG5cbmxldCB3aXRoX3Bvc2l0aW9ucyBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3NcblxubGV0IGxleGVtZSBsZXhidWYgPVxuICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbmxldCBzdWJfbGV4ZW1lIGxleGJ1ZiBpMSBpMiA9XG4gIGxldCBsZW4gPSBpMi1pMSBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlblxuXG5sZXQgc3ViX2xleGVtZV9vcHQgbGV4YnVmIGkxIGkyID1cbiAgaWYgaTEgPj0gMCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbiA9IGkyLWkxIGluXG4gICAgU29tZSAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW4pXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTm9uZVxuICBlbmRcblxubGV0IHN1Yl9sZXhlbWVfY2hhciBsZXhidWYgaSA9IEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXJfb3B0IGxleGJ1ZiBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICBTb21lIChCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaSlcbiAgZWxzZVxuICAgIE5vbmVcblxuXG5sZXQgbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPVxuICBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgKGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgaSlcblxubGV0IGxleGVtZV9zdGFydCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3AucG9zX2NudW1cbmxldCBsZXhlbWVfZW5kIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19jbnVtXG5cbmxldCBsZXhlbWVfc3RhcnRfcCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3BcbmxldCBsZXhlbWVfZW5kX3AgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3BcblxubGV0IG5ld19saW5lIGxleGJ1ZiA9XG4gIGxldCBsY3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgeyBsY3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxjcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsY3AucG9zX2NudW07XG4gICAgICB9XG5cblxuXG4oKiBEaXNjYXJkIGRhdGEgbGVmdCBpbiBsZXhlciBidWZmZXIuICopXG5cbmxldCBmbHVzaF9pbnB1dCBsYiA9XG4gIGxiLmxleF9jdXJyX3BvcyA8LSAwO1xuICBsYi5sZXhfYWJzX3BvcyA8LSAwO1xuICBsZXQgbGNwID0gbGIubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsYi5sZXhfY3Vycl9wIDwtIHt6ZXJvX3BvcyB3aXRoIHBvc19mbmFtZSA9IGxjcC5wb3NfZm5hbWV9O1xuICBsYi5sZXhfYnVmZmVyX2xlbiA8LSAwO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgaXRlcjogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIHN1YnNldDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZm9yX2FsbDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCB0b19saXN0IDogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IHRvX2xpc3QgPSBlbGVtZW50c1xuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGFkZDoga2V5IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGRfdG9fbGlzdDoga2V5IC0+ICdhIC0+ICdhIGxpc3QgdCAtPiAnYSBsaXN0IHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgIChrZXkgLT4gJ2Egb3B0aW9uIC0+ICdiIG9wdGlvbiAtPiAnYyBvcHRpb24pIC0+XG4gICAgICAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kOiBrZXkgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDoga2V5IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgaXNfZW1wdHk6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG9mX2xpc3QgOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGtleSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPSBzdHJ1Y3RcblxuICAgIHR5cGUga2V5ID0gT3JkLnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUgb2Yge2w6J2EgdDsgdjprZXk7IGQ6J2E7IHI6J2EgdDsgaDppbnR9XG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gaGVpZ2h0IGwgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgc2luZ2xldG9uIHggZCA9IE5vZGV7bD1FbXB0eTsgdj14OyBkOyByPUVtcHR5OyBoPTF9XG5cbiAgICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyBkPWxyZDsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IGQ9cmxkOyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBhZGQgeCBkYXRhID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggZGF0YSBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IGRhdGEgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gZFxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZFxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge2x9IC0+IG1pbl9iaW5kaW5nIGxcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfS0+IG1pbl9iaW5kaW5nX29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZyByXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmdfb3B0IHJcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHYgZCByXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IChOb2RlIHtsOyB2OyBkOyByfSBhcyBtKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW4gaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSB4IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5XG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgICAgIGVuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBtZXJnZSBsIHJcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZW5kIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gdXBkYXRlIHggZiBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHVwZGF0ZSB4IGYgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCBhZGRfdG9fbGlzdCB4IGRhdGEgbSA9XG4gICAgICBsZXQgYWRkID0gZnVuY3Rpb24gTm9uZSAtPiBTb21lIFtkYXRhXSB8IFNvbWUgbCAtPiBTb21lIChkYXRhIDo6IGwpIGluXG4gICAgICB1cGRhdGUgeCBhZGQgbVxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgdG9fbGlzdCA9IGJpbmRpbmdzXG4gICAgbGV0IG9mX2xpc3QgYnMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgZW1wdHkgYnNcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IGRyb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgX2hkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMVxuICB8IFtdIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7IGxlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgbGVuO1xuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHMgMCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBidWZmZXIgcG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgaW5cbiAgICAgaWYgc3RvcCA9IHN0YXJ0IHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCBmaW5kX2lkZW50IHMgaiBsaW0gd2l0aFxuICAgICAgICAgfCBpZGVudCwgbmV4dF9pIC0+XG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiICckJztcbiAgICAgICAgICAgc3Vic3QgJyAnIGpcbiAgICAgICAgIGVuZFxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXM7XG4gICAgICAgICBpZiBjdXJyZW50IDw+ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIFBhc2NhbCBDdW9xLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0XG5leHRlcm5hbCBjcmVhdGU6IHVuaXQgLT4gdCA9IFwiY2FtbF9tbF9tdXRleF9uZXdcIlxuZXh0ZXJuYWwgbG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X2xvY2tcIlxuZXh0ZXJuYWwgdHJ5X2xvY2s6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9tdXRleF90cnlfbG9ja1wiXG5leHRlcm5hbCB1bmxvY2s6IHQgLT4gdW5pdCA9IFwiY2FtbF9tbF9tdXRleF91bmxvY2tcIlxuXG4oKiBwcml2YXRlIHJlLWV4cG9ydCAqKVxuZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4oKiBjYW5ub3QgaW5saW5lLCBvdGhlcndpc2UgZmxhbWJkYSBtaWdodCBtb3ZlIGNvZGUgYXJvdW5kLiAqKVxubGV0W0BpbmxpbmUgbmV2ZXJdIHByb3RlY3QgbSBmID1cbiAgbG9jayBtO1xuICBtYXRjaCBmKCkgd2l0aFxuICB8IHggLT5cbiAgICB1bmxvY2sgbTsgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgKCogTk9URTogW3VubG9ja10gZG9lcyBub3QgcG9sbCBmb3IgYXN5bmNocm9ub3VzIGV4Y2VwdGlvbnMgKilcbiAgICB1bmxvY2sgbTtcbiAgICByZXJhaXNlIGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgQ29sbMOoZ2UgZGUgRnJhbmNlIGFuZCBJTlJJQSBQYXJpcyAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBTZW1hcGhvcmVzICopXG5cbnR5cGUgc2VtID0ge1xuICBtdXQ6IE11dGV4LnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICgqIHByb3RlY3RzIFt2XSAqKVxuICBtdXRhYmxlIHY6IGludDsgICAgICAgICAgICAgICAgICAgICAgICgqIHRoZSBjdXJyZW50IHZhbHVlICopXG4gIG5vbnplcm86IENvbmRpdGlvbi50ICAgICAgICAgICAgICAgICAgKCogc2lnbmFsZWQgd2hlbiBbdiA+IDBdICopXG59XG5cbm1vZHVsZSBDb3VudGluZyA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgdiA9XG4gIGlmIHYgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZW1hcGhvcmUuQ291bnRpbmcuaW5pdDogd3JvbmcgaW5pdGlhbCB2YWx1ZVwiO1xuICB7IG11dCA9IE11dGV4LmNyZWF0ZSgpOyB2OyBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGlmIHMudiA8IG1heF9pbnQgdGhlbiBiZWdpblxuICAgIHMudiA8LSBzLnYgKyAxO1xuICAgIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICAgIE11dGV4LnVubG9jayBzLm11dFxuICBlbmQgZWxzZSBiZWdpblxuICAgIE11dGV4LnVubG9jayBzLm11dDtcbiAgICByYWlzZSAoU3lzX2Vycm9yIFwiU2VtYXBob3JlLkNvdW50aW5nLnJlbGVhc2U6IG92ZXJmbG93XCIpXG4gIGVuZFxuXG5sZXQgYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgd2hpbGUgcy52ID0gMCBkbyBDb25kaXRpb24ud2FpdCBzLm5vbnplcm8gcy5tdXQgZG9uZTtcbiAgcy52IDwtIHMudiAtIDE7XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgdHJ5X2FjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGxldCByZXQgPSBpZiBzLnYgPSAwIHRoZW4gZmFsc2UgZWxzZSAocy52IDwtIHMudiAtIDE7IHRydWUpIGluXG4gIE11dGV4LnVubG9jayBzLm11dDtcbiAgcmV0XG5cbmxldCBnZXRfdmFsdWUgcyA9IHMudlxuXG5lbmRcblxubW9kdWxlIEJpbmFyeSA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgYiA9XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7XG4gICAgdiA9IGlmIGIgdGhlbiAxIGVsc2UgMDtcbiAgICBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHMudiA8LSAxO1xuICBDb25kaXRpb24uc2lnbmFsIHMubm9uemVybztcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gMDtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gMDsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBUb20gS2VsbHksIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgTHRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgKCogTG93LWxldmVsIHByaW1pdGl2ZXMgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgKilcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcblxuICAoKiBUaGUgbGF5b3V0cyBvZiBbc3RhdGVdIGFuZCBbdGVybV9zeW5jXSBhcmUgaGFyZC1jb2RlZCBpblxuICAgICBbcnVudGltZS9kb21haW4uY10gKilcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFJ1bm5pbmdcbiAgICB8IEZpbmlzaGVkIG9mICgnYSwgZXhuKSByZXN1bHQgW0B3YXJuaW5nIFwiLXVudXNlZC1jb25zdHJ1Y3RvclwiXVxuXG4gIHR5cGUgJ2EgdGVybV9zeW5jID0ge1xuICAgICgqIHByb3RlY3RlZCBieSBbbXV0XSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiAnYSBzdGF0ZSBbQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdIDtcbiAgICBtdXQgOiBNdXRleC50IDtcbiAgICBjb25kIDogQ29uZGl0aW9uLnQgO1xuICB9XG5cbiAgZXh0ZXJuYWwgc3Bhd24gOiAodW5pdCAtPiAnYSkgLT4gJ2EgdGVybV9zeW5jIC0+IHRcbiAgICA9IFwiY2FtbF9kb21haW5fc3Bhd25cIlxuICBleHRlcm5hbCBzZWxmIDogdW5pdCAtPiB0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2lkXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgY3B1X3JlbGF4IDogdW5pdCAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFwiXG4gIGV4dGVybmFsIGdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQ6IHVuaXQgLT4gaW50XG4gICAgPSBcImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XCIgW0BAbm9hbGxvY11cbmVuZFxuXG5sZXQgY3B1X3JlbGF4ICgpID0gUmF3LmNwdV9yZWxheCAoKVxuXG50eXBlIGlkID0gUmF3LnRcblxudHlwZSAnYSB0ID0ge1xuICBkb21haW4gOiBSYXcudDtcbiAgdGVybV9zeW5jIDogJ2EgUmF3LnRlcm1fc3luYztcbn1cblxubW9kdWxlIERMUyA9IHN0cnVjdFxuXG4gIG1vZHVsZSBPYmpfb3B0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIG5vbmUgOiB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiB0XG4gICAgdmFsIGlzX3NvbWUgOiB0IC0+IGJvb2xcblxuICAgICgqKiBbdW5zYWZlX2dldCBvYmpdIG1heSBvbmx5IGJlIGNhbGxlZCBzYWZlbHlcbiAgICAgICAgaWYgW2lzX3NvbWVdIGlzIHRydWUuXG5cbiAgICAgICAgW3Vuc2FmZV9nZXQgKHNvbWUgdildIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgW09iai5vYmogKE9iai5yZXByIHYpXS4gKilcbiAgICB2YWwgdW5zYWZlX2dldCA6IHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gT2JqLnRcbiAgICBsZXQgbm9uZSA9IE9iai5yZXByIChyZWYgMClcbiAgICBsZXQgc29tZSB2ID0gT2JqLnJlcHIgdlxuICAgIGxldCBpc19zb21lIG9iaiA9IChvYmogIT0gbm9uZSlcbiAgICBsZXQgdW5zYWZlX2dldCBvYmogPSBPYmoub2JqIG9ialxuICBlbmRcblxuICB0eXBlIGRsc19zdGF0ZSA9IE9ial9vcHQudCBhcnJheVxuXG4gIGV4dGVybmFsIGdldF9kbHNfc3RhdGUgOiB1bml0IC0+IGRsc19zdGF0ZSA9IFwiJWRsc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2RvbWFpbl9kbHNfc2V0XCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjb21wYXJlX2FuZF9zZXRfZGxzX3N0YXRlIDogZGxzX3N0YXRlIC0+IGRsc19zdGF0ZSAtPiBib29sID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjcmVhdGVfZGxzICgpID1cbiAgICBsZXQgc3QgPSBBcnJheS5tYWtlIDggT2JqX29wdC5ub25lIGluXG4gICAgc2V0X2Rsc19zdGF0ZSBzdFxuXG4gIGxldCBfID0gY3JlYXRlX2RscyAoKVxuXG4gIHR5cGUgJ2Ega2V5ID0gaW50ICogKHVuaXQgLT4gJ2EpXG5cbiAgbGV0IGtleV9jb3VudGVyID0gQXRvbWljLm1ha2UgMFxuXG4gIHR5cGUga2V5X2luaXRpYWxpemVyID1cbiAgICBLSTogJ2Ega2V5ICogKCdhIC0+ICdhKSAtPiBrZXlfaW5pdGlhbGl6ZXJcblxuICBsZXQgcGFyZW50X2tleXMgPSBBdG9taWMubWFrZSAoW10gOiBrZXlfaW5pdGlhbGl6ZXIgbGlzdClcblxuICBsZXQgcmVjIGFkZF9wYXJlbnRfa2V5IGtpID1cbiAgICBsZXQgbCA9IEF0b21pYy5nZXQgcGFyZW50X2tleXMgaW5cbiAgICBpZiBub3QgKEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcGFyZW50X2tleXMgbCAoa2kgOjogbCkpXG4gICAgdGhlbiBhZGRfcGFyZW50X2tleSBraVxuXG4gIGxldCBuZXdfa2V5ID9zcGxpdF9mcm9tX3BhcmVudCBpbml0X29ycGhhbiA9XG4gICAgbGV0IGlkeCA9IEF0b21pYy5mZXRjaF9hbmRfYWRkIGtleV9jb3VudGVyIDEgaW5cbiAgICBsZXQgayA9IChpZHgsIGluaXRfb3JwaGFuKSBpblxuICAgIGJlZ2luIG1hdGNoIHNwbGl0X2Zyb21fcGFyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc3BsaXQgLT4gYWRkX3BhcmVudF9rZXkgKEtJKGssIHNwbGl0KSlcbiAgICBlbmQ7XG4gICAga1xuXG4gICgqIElmIG5lY2Vzc2FyeSwgZ3JvdyB0aGUgY3VycmVudCBkb21haW4ncyBsb2NhbCBzdGF0ZSBhcnJheSBzdWNoIHRoYXQgW2lkeF1cbiAgICogaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkuICopXG4gIGxldCByZWMgbWF5YmVfZ3JvdyBpZHggPVxuICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICBsZXQgc3ogPSBBcnJheS5sZW5ndGggc3QgaW5cbiAgICBpZiBpZHggPCBzeiB0aGVuIHN0XG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHJlYyBjb21wdXRlX25ld19zaXplIHMgPVxuICAgICAgICBpZiBpZHggPCBzIHRoZW4gcyBlbHNlIGNvbXB1dGVfbmV3X3NpemUgKDIgKiBzKVxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3ogPSBjb21wdXRlX25ld19zaXplIHN6IGluXG4gICAgICBsZXQgbmV3X3N0ID0gQXJyYXkubWFrZSBuZXdfc3ogT2JqX29wdC5ub25lIGluXG4gICAgICBBcnJheS5ibGl0IHN0IDAgbmV3X3N0IDAgc3o7XG4gICAgICAoKiBXZSB3YW50IGEgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBzYWZlIHdpdGggcmVzcGVjdCB0b1xuICAgICAgICAgc2luZ2xlLWRvbWFpbiBtdWx0aS10aHJlYWRpbmc6IHJldHJ5IGlmIHRoZSBETFMgc3RhdGUgaGFzXG4gICAgICAgICBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LlxuICAgICAgICAgTm90ZSB0aGF0IHRoZSBudW1iZXIgb2YgcmV0cmllcyB3aWxsIGJlIHZlcnkgc21hbGwgaW5cbiAgICAgICAgIGNvbnRlbmRlZCBzY2VuYXJpb3MsIGFzIHRoZSBhcnJheSBvbmx5IGdyb3dzLCB3aXRoXG4gICAgICAgICBleHBvbmVudGlhbCByZXNpemluZy4gKilcbiAgICAgIGlmIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgc3QgbmV3X3N0XG4gICAgICB0aGVuIG5ld19zdFxuICAgICAgZWxzZSBtYXliZV9ncm93IGlkeFxuICAgIGVuZFxuXG4gIGxldCBzZXQgKHR5cGUgYSkgKGlkeCwgX2luaXQpICh4IDogYSkgPVxuICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGVuc3VyZXMgdGhhdCBmbGFtYmRhIGRvZXMgbm90IGxvb2sgYXQgdGhlIHR5cGUgb2ZcbiAgICAgKiBbeF0sIHdoaWNoIG1heSBiZSBhIFtmbG9hdF0gYW5kIGNvbmNsdWRlIHRoYXQgdGhlIFtzdF0gaXMgYSBmbG9hdCBhcnJheS5cbiAgICAgKiBXZSBkbyBub3Qgd2FudCBPQ2FtbCdzIGZsb2F0IGFycmF5IG9wdGltaXNhdGlvbiBraWNraW5nIGluIGhlcmUuICopXG4gICAgc3QuKGlkeCkgPC0gT2JqX29wdC5zb21lIChTeXMub3BhcXVlX2lkZW50aXR5IHgpXG5cblxuICBsZXRbQGlubGluZSBuZXZlcl0gYXJyYXlfY29tcGFyZV9hbmRfc2V0IGEgaSBvbGR2YWwgbmV3dmFsID1cbiAgICAoKiBOb3RlOiB3ZSBjYW5ub3QgdXNlIFtAcG9sbCBlcnJvcl0gZHVlIHRvIHRoZVxuICAgICAgIGFsbG9jYXRpb25zIG9uIGEuKGkpIGluIHRoZSBEb3VibGVfYXJyYXkgY2FzZS4gKilcbiAgICBsZXQgY3VydmFsID0gYS4oaSkgaW5cbiAgICBpZiBjdXJ2YWwgPT0gb2xkdmFsIHRoZW4gKFxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgbmV3dmFsO1xuICAgICAgdHJ1ZVxuICAgICkgZWxzZSBmYWxzZVxuXG4gIGxldCBnZXQgKHR5cGUgYSkgKChpZHgsIGluaXQpIDogYSBrZXkpIDogYSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICBsZXQgb2JqID0gc3QuKGlkeCkgaW5cbiAgICBpZiBPYmpfb3B0LmlzX3NvbWUgb2JqXG4gICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IG9iaiA6IGEpXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgOiBhID0gaW5pdCAoKSBpblxuICAgICAgbGV0IG5ld19vYmogPSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgdikgaW5cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIFtzdF0gb3IgW3N0LihpZHgpXSBtYXkgaGF2ZSBiZWVuIGNoYW5nZWRcbiAgICAgICAgIGJ5IGFub3RoZXIgdGhyZWFkIG9uIHRoZSBzYW1lIGRvbWFpbi5cblxuICAgICAgICAgSWYgW3N0XSBjaGFuZ2VkLCBpdCB3YXMgcmVzaXplZCBpbnRvIGEgbGFyZ2VyIHZhbHVlLFxuICAgICAgICAgd2UgY2FuIGp1c3QgcmV1c2UgdGhlIG5ldyB2YWx1ZS5cblxuICAgICAgICAgSWYgW3N0LihpZHgpXSBjaGFuZ2VkLCB3ZSBkcm9wIHRoZSBjdXJyZW50IHZhbHVlIHRvIGF2b2lkXG4gICAgICAgICBsZXR0aW5nIG90aGVyIHRocmVhZHMgb2JzZXJ2ZSBhICdyZXZlcnQnIHRoYXQgZm9yZ2V0c1xuICAgICAgICAgcHJldmlvdXMgbW9kaWZpY2F0aW9ucy4gKilcbiAgICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICAgIGlmIGFycmF5X2NvbXBhcmVfYW5kX3NldCBzdCBpZHggb2JqIG5ld19vYmpcbiAgICAgIHRoZW4gdlxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICAoKiBpZiBzdC4oaWR4KSBjaGFuZ2VkLCBzb21lb25lIG11c3QgaGF2ZSBpbml0aWFsaXplZFxuICAgICAgICAgICB0aGUga2V5IGluIHRoZSBtZWFudGltZS4gKilcbiAgICAgICAgbGV0IHVwZGF0ZWRfb2JqID0gc3QuKGlkeCkgaW5cbiAgICAgICAgaWYgT2JqX29wdC5pc19zb21lIHVwZGF0ZWRfb2JqXG4gICAgICAgIHRoZW4gKE9ial9vcHQudW5zYWZlX2dldCB1cGRhdGVkX29iaiA6IGEpXG4gICAgICAgIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICB0eXBlIGtleV92YWx1ZSA9IEtWIDogJ2Ega2V5ICogJ2EgLT4ga2V5X3ZhbHVlXG5cbiAgbGV0IGdldF9pbml0aWFsX2tleXMgKCkgOiBrZXlfdmFsdWUgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKEtJIChrLCBzcGxpdCkpIC0+IEtWIChrLCAoc3BsaXQgKGdldCBrKSkpKVxuICAgICAgKEF0b21pYy5nZXQgcGFyZW50X2tleXMpXG5cbiAgbGV0IHNldF9pbml0aWFsX2tleXMgKGw6IGtleV92YWx1ZSBsaXN0KSA9XG4gICAgTGlzdC5pdGVyIChmdW4gKEtWIChrLCB2KSkgLT4gc2V0IGsgdikgbFxuZW5kXG5cbigqKioqKioqKiBJZGVudGl0eSAqKioqKioqKioqKVxuXG5sZXQgZ2V0X2lkIHsgZG9tYWluOyBfIH0gPSBkb21haW5cblxubGV0IHNlbGYgKCkgPSBSYXcuc2VsZiAoKVxuXG5sZXQgaXNfbWFpbl9kb21haW4gKCkgPSAoc2VsZiAoKSA6PiBpbnQpID0gMFxuXG4oKioqKioqKiogQ2FsbGJhY2tzICoqKioqKioqKiopXG5cbigqIGZpcnN0IHNwYXduLCBkb21haW4gc3RhcnR1cCBhbmQgYXQgZXhpdCBmdW5jdGlvbmFsaXR5ICopXG5sZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgPSBBdG9taWMubWFrZSBmYWxzZVxuXG5sZXQgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGJlZm9yZV9maXJzdF9zcGF3biBmID1cbiAgaWYgQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaXJzdCBkb21haW4gYWxyZWFkeSBzcGF3bmVkXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgb2xkX2YgPSAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24gaW5cbiAgICBsZXQgbmV3X2YgKCkgPSBvbGRfZiAoKTsgZiAoKSBpblxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IG5ld19mXG4gIGVuZFxuXG5sZXQgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpID1cbiAgaWYgbm90IChBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkKSB0aGVuIGJlZ2luXG4gICAgQXRvbWljLnNldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0cnVlO1xuICAgICFmaXJzdF9zcGF3bl9mdW5jdGlvbigpO1xuICAgICgqIFJlbGVhc2UgdGhlIG9sZCBmdW5jdGlvbiAqKVxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IChmdW4gKCkgLT4gKCkpXG4gIGVuZFxuXG5sZXQgYXRfZXhpdF9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+IChmdW4gKCkgLT4gKCkpKVxuXG5sZXQgYXRfZXhpdCBmID1cbiAgbGV0IG9sZF9leGl0IDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGYgKCk7IG9sZF9leGl0ICgpXG4gIGluXG4gIERMUy5zZXQgYXRfZXhpdF9rZXkgbmV3X2V4aXRcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICBsZXQgZiA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgZiAoKVxuXG5sZXQgXyA9IFN0ZGxpYi5kb19kb21haW5fbG9jYWxfYXRfZXhpdCA6PSBkb19hdF9leGl0XG5cbigqKioqKioqIENyZWF0aW9uIGFuZCBUZXJtaW5hdGlvbiAqKioqKioqKilcblxubGV0IHNwYXduIGYgPVxuICBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCk7XG4gIGxldCBwayA9IERMUy5nZXRfaW5pdGlhbF9rZXlzICgpIGluXG5cbiAgKCogW3Rlcm1fc3luY10gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBqb2luaW5nIGRvbWFpbnMgKilcbiAgbGV0IHRlcm1fc3luYyA9XG4gICAgUmF3Lnsgc3RhdGUgPSBSdW5uaW5nIDtcbiAgICAgICAgICBtdXQgPSBNdXRleC5jcmVhdGUgKCkgO1xuICAgICAgICAgIGNvbmQgPSBDb25kaXRpb24uY3JlYXRlICgpIH1cbiAgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbWF0Y2hcbiAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICBsZXQgcmVzID0gZiAoKSBpblxuICAgICAgcmVzXG4gICAgd2l0aFxuICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgdGVybWluYXRlcyBub3JtYWxseSBvciBleGNlcHRpb25hbGx5LiAqKVxuICAgIHwgcmVzIC0+XG4gICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgIGRvX2F0X2V4aXQgKCk7XG4gICAgICAgIHJlc1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAoKiBJZiBib3RoIHRoZSBkb21haW4gY29tcHV0YXRpb24gYW5kIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzXG4gICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICh0cnkgZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgICAgICByYWlzZSBleG5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fc3luYyBpblxuICB7IGRvbWFpbiA7IHRlcm1fc3luYyB9XG5cbmxldCBqb2luIHsgdGVybV9zeW5jIDsgXyB9ID1cbiAgbGV0IG9wZW4gUmF3IGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggdGVybV9zeW5jLnN0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9zeW5jLmNvbmQgdGVybV9zeW5jLm11dDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBNdXRleC5wcm90ZWN0IHRlcm1fc3luYy5tdXQgbG9vcCB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pZ25cbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdHMuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJ0b3V0LCBJTlJJQSBQYXJpcy1TYWNsYXkgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aCA6IGludDtcbiAgbXV0YWJsZSBhcnIgOiAnYSBzbG90IGFycmF5O1xufVxuKCogezIgVGhlIHR5cGUgWydhIHRdfVxuXG4gICBBIGR5bmFtaWMgYXJyYXkgaXMgcmVwcmVzZW50ZWQgdXNpbmcgYSBiYWNraW5nIGFycmF5IFthcnJdIGFuZFxuICAgYSBbbGVuZ3RoXS4gSXQgYmVoYXZlcyBhcyBhbiBhcnJheSBvZiBzaXplIFtsZW5ndGhdIC0tIHRoZSBpbmRpY2VzXG4gICBmcm9tIFswXSB0byBbbGVuZ3RoIC0gMV0gaW5jbHVkZWQgY29udGFpbiB1c2VyLXByb3ZpZGVkIHZhbHVlcyBhbmRcbiAgIGNhbiBiZSBbZ2V0XSBhbmQgW3NldF0gLS0gYnV0IHRoZSBsZW5ndGggbWF5IGFsc28gY2hhbmdlIGluIHRoZVxuICAgZnV0dXJlIGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cyBhdCB0aGUgZW5kLlxuXG4gICBXZSB1c2UgdGhlIGZvbGxvd2luZyBjb25jZXB0cztcbiAgIC0gY2FwYWNpdHk6IHRoZSBsZW5ndGggb2YgdGhlIGJhY2tpbmcgYXJyYXk6XG4gICAgIFtBcnJheS5sZW5ndGggIGFycl1cbiAgIC0gbGl2ZSBzcGFjZTogdGhlIHBvcnRpb24gb2YgdGhlIGJhY2tpbmcgYXJyYXkgd2l0aFxuICAgICBpbmRpY2VzIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXSBpbmNsdWRlZC5cbiAgIC0gZW1wdHkgc3BhY2U6IHRoZSBwb3J0aW9uIG9mIHRoZSBiYWNraW5nIGFycmF5XG4gICAgIGZyb20gW2xlbmd0aF0gdG8gdGhlIGVuZCBvZiB0aGUgYmFja2luZyBhcnJheS5cblxuICAgezIgVGhlIHR5cGUgWydhIHNsb3RdfVxuXG4gICBXZSBzaG91bGQgbm90IGtlZXAgYSB1c2VyLXByb3ZpZGVkIHZhbHVlIGluIHRoZSBlbXB0eSBzcGFjZSwgYXNcbiAgIHRoaXMgY291bGQgZXh0ZW5kIGl0cyBsaWZldGltZSBhbmQgbWF5IHJlc3VsdCBpbiBtZW1vcnkgbGVha3Mgb2ZcbiAgIGFyYml0cmFyeSBzaXplLiBGdW5jdGlvbnMgdGhhdCByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgZHluYW1pY1xuICAgYXJyYXksIHN1Y2ggYXMgW3BvcF9sYXN0XSBvciBbdHJ1bmNhdGVdLCBtdXN0IHJlYWxseSBlcmFzZSB0aGVcbiAgIGVsZW1lbnQgZnJvbSB0aGUgYmFja2luZyBhcnJheS5cblxuICAgVGhpcyBjb25zdHJhaW50IG1ha2VzIGl0IGRpZmZpY3VsdCB0byByZXByZXNlbnQgYW4gZHluYW1pYyBhcnJheSBvZlxuICAgZWxlbWVudHMgb2YgdHlwZSBbJ2FdIHdpdGggYSBiYWNraW5nIGFycmF5IG9mIHR5cGUgWydhIGFycmF5XTogd2hhdFxuICAgdmFsaWQgdmFsdWUgb2YgdHlwZSBbJ2FdIHdvdWxkIHdlIHVzZSBpbiB0aGUgZW1wdHkgc3BhY2U/IFR5cGljYWxcbiAgIGNob2ljZXMgaW5jbHVkZTpcbiAgIC0gYWNjZXB0aW5nIHNjZW5hcmlvcyB3aGVyZSB3ZSBhY3R1YWxseSBsZWFrIHVzZXItcHJvdmlkZWQgdmFsdWVzXG4gICAgIChidXQgdGhpcyBjYW4gYmxvd3VwIG1lbW9yeSB1c2FnZSBpbiBzb21lIGNhc2VzLCBhbmQgaXMgaGFyZCB0byBkZWJ1ZylcbiAgIC0gcmVxdWlyaW5nIGEgXCJkdW1teVwiIHZhbHVlIGF0IGNyZWF0aW9uIG9mIHRoZSBkeW5hbWljIGFycmF5XG4gICAgIG9yIGluIHRoZSBwYXJ0cyBvZiB0aGUgQVBJIHRoYXQgZ3JvdyB0aGUgZW1wdHkgc3BhY2VcbiAgICAgKGJ1dCB1c2VycyBmaW5kIHRoaXMgdmVyeSBpbmNvbnZlbmllbnQpXG4gICAtIHVzaW5nIGFyY2FuZSBPYmoubWFnaWMgdHJpY2tzXG4gICAgIChidXQgZXhwZXJ0cyBkb24ndCBhZ3JlZSBvbiB3aGljaCB0cmlja3MgYXJlIHNhZmUgdG8gdXNlIGFuZC9vclxuICAgICAgc2hvdWxkIGJlIHVzZWQgaGVyZSlcbiAgIC0gdXNpbmcgYSBiYWNraW5nIGFycmF5IG9mIFsnYSBvcHRpb25dIHZhbHVlcywgdXNpbmcgW05vbmVdXG4gICAgIGluIHRoZSBlbXB0eSBzcGFjZVxuICAgICAoYnV0IHRoaXMgZ2l2ZXMgYSBub3RpY2VhYmx5IGxlc3MgZWZmaWNpZW50IG1lbW9yeSByZXByZXNlbnRhdGlvbilcblxuICAgSW4gdGhlIHByZXNlbnQgaW1wbGVtZW50YXRpb24sIHdlIHVzZSB0aGUgWydhIG9wdGlvbl0gYXBwcm9hY2gsXG4gICB3aXRoIGEgdHdpc3QuIFdpdGggWydhIG9wdGlvbl0sIGNhbGxpbmcgW3NldCBhIGkgeF0gbXVzdCByZWFsbG9jYXRlXG4gICBhIG5ldyBbU29tZSB4XSBibG9jazpcbntbXG4gICBsZXQgc2V0IGEgaSB4ID1cbiAgICAgaWYgaSA8IDAgfHwgaSA+PSBhLmxlbmd0aCB0aGVuIGVycm9yIFwib3V0IG9mIGJvdW5kc1wiO1xuICAgICBhLmFyci4oaSkgPC0gU29tZSB4XG5dfVxuICAgSW5zdGVhZCB3ZSB1c2UgdGhlIHR5cGUgWydhIHNsb3RdIGJlbG93LFxuICAgd2hpY2ggYmVoYXZlcyBhcyBhbiBvcHRpb24gd2hvc2UgW1NvbWVdIGNvbnN0cnVjdG9yXG4gICAoY2FsbGVkIFtFbGVtXSBoZXJlKSBoYXMgYSBfbXV0YWJsZV8gYXJndW1lbnQuXG4qKVxuYW5kICdhIHNsb3QgPVxufCBFbXB0eVxufCBFbGVtIG9mIHsgbXV0YWJsZSB2OiAnYSB9XG4oKlxuICAgVGhpcyBnaXZlcyBhbiBhbGxvY2F0aW9uLWZyZWUgaW1wbGVtZW50YXRpb24gb2YgW3NldF0gdGhhdCBjYWxsc1xuICAgW0FycmF5LmdldF0gKGluc3RlYWQgb2YgW0FycmF5LnNldF0pIG9uIHRoZSBiYWNraW5nIGFycmF5IGFuZCB0aGVuXG4gICBtdXRhdGVzIHRoZSBbdl0gcGFyYW1ldGVyLiBJbiBwc2V1ZG8tY29kZTpcbntbXG4gICBsZXQgc2V0IGEgaSB4ID1cbiAgICAgaWYgaSA8IDAgfHwgaSA+PSBhLmxlbmd0aCB0aGVuIGVycm9yIFwib3V0IG9mIGJvdW5kc1wiO1xuICAgICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICAgICB8IEVtcHR5IC0+IGVycm9yIFwiaW52YWxpZCBzdGF0ZTogbWlzc2luZyBlbGVtZW50XCJcbiAgICAgfCBFbGVtIHMgLT4gcy52IDwtIHhcbl19XG4gICBXaXRoIHRoaXMgYXBwcm9hY2gsIGFjY2Vzc2luZyBhbiBlbGVtZW50IHN0aWxsIHBheXMgdGhlIGNvc3Qgb2YgYW5cbiAgIGV4dHJhIGluZGlyZWN0aW9uIChjb21wYXJlZCB0byBhcHByb2FjaGVzIHRoYXQgZG8gbm90IGJveCBlbGVtZW50c1xuICAgaW4gdGhlIGJhY2tpbmcgYXJyYXkpLCBidXQgb25seSBvcGVyYXRpb25zIHRoYXQgYWRkIG5ldyBlbGVtZW50cyBhdFxuICAgdGhlIGVuZCBvZiB0aGUgYXJyYXkgcGF5IGV4dHJhIGFsbG9jYXRpb25zLlxuXG4gICBUaGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIHdoZXJlIFsnYSBvcHRpb25dIGlzIGJldHRlcjogaXQgbWFrZXNcbiAgIFtwb3BfbGFzdF9vcHRdIG1vcmUgZWZmaWNpZW50IGFzIHRoZSB1bmRlcmx5aW5nIG9wdGlvbiBjYW4gYmVcbiAgIHJldHVybmVkIGRpcmVjdGx5LCBhbmQgaXQgYWxzbyBsZXRzIHVzIHVzZSBbQXJyYXkuYmxpdF0gdG9cbiAgIGltcGxlbWVudCBbYXBwZW5kXS4gV2UgYmVsaWV2ZSB0aGF0IG9wdGltaXppbmcgW2dldF0gYW5kIFtzZXRdIGlzXG4gICBtb3JlIGltcG9ydGFudCBmb3IgZHluYW1pYyBhcnJheXMuXG5cbiAgIHsyIEludmFyaWFudHMgYW5kIHZhbGlkIHN0YXRlc31cblxuICAgV2UgZW5mb3JjZSB0aGUgaW52YXJpYW50IHRoYXQgW2xlbmd0aCA+PSAwXSBhdCBhbGwgdGltZXMuXG4gICB3ZSByZWx5IG9uIHRoaXMgaW52YXJpYW50IGZvciBvcHRpbWl6YXRpb24uXG5cbiAgIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBkZWZpbmUgd2hhdCB3ZSBjYWxsIGEgXCJ2YWxpZFwiIGR5bmFycmF5OlxuICAgLSB2YWxpZCBsZW5ndGg6IFtsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl1cbiAgIC0gbm8gbWlzc2luZyBlbGVtZW50IGluIHRoZSBsaXZlIHNwYWNlOlxuICAgICBmb3JhbGwgaSwgWzAgPD0gaSA8IGxlbmd0aF0gaW1wbGllcyBbYXJyLihpKSA8PiBFbXB0eV1cbiAgIC0gbm8gZWxlbWVudCBpbiB0aGUgZW1wdHkgc3BhY2U6XG4gICAgIGZvcmFsbCBpLCBbbGVuZ3RoIDw9IGkgPCBBcnJheS5sZW5ndGggYXJyXSBpbXBsaWVzIFthcnIuKGkpID0gRW1wdHldXG5cbiAgIFVuZm9ydHVuYXRlbHksIHdlIGNhbm5vdCBlYXNpbHkgZW5mb3JjZSB2YWxpZGl0eSBhcyBhbiBpbnZhcmlhbnQgaW5cbiAgIHByZXNlbmNlIG9mIGNvbmN1cnJlbnQgdXBkYXRlcy4gV2UgY2FuIHRodXMgb2JzZXJ2ZSBkeW5hcnJheXMgaW5cbiAgIFwiaW52YWxpZCBzdGF0ZXNcIi4gT3VyIGltcGxlbWVudGF0aW9uIG1heSByYWlzZSBleGNlcHRpb25zIG9yIHJldHVyblxuICAgaW5jb3JyZWN0IHJlc3VsdHMgb24gb2JzZXJ2aW5nIGludmFsaWQgc3RhdGVzLCBidXQgb2YgY291cnNlIGl0XG4gICBtdXN0IHByZXNlcnZlIG1lbW9yeSBzYWZldHkuXG4qKVxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGluZGV4X291dF9vZl9ib3VuZHMgZiB+aSB+bGVuZ3RoID1cbiAgICBpZiBsZW5ndGggPSAwIHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkR5bmFycmF5LiVzOiBpbmRleCAlZCBvdXQgb2YgYm91bmRzIChlbXB0eSBkeW5hcnJheSlcIlxuICAgICAgICBmIGlcbiAgICBlbHNlXG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJEeW5hcnJheS4lczogaW5kZXggJWQgb3V0IG9mIGJvdW5kcyAoMC4uJWQpXCJcbiAgICAgICAgZiBpIChsZW5ndGggLSAxKVxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIGYgbiA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBuZWdhdGl2ZSBsZW5ndGggJWQgcmVxdWVzdGVkXCJcbiAgICAgIGYgblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBuZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgZiBuID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IG5lZ2F0aXZlIGNhcGFjaXR5ICVkIHJlcXVlc3RlZFwiXG4gICAgICBmIG5cblxuICBsZXRbQGlubGluZSBuZXZlcl0gcmVxdWVzdGVkX2xlbmd0aF9vdXRfb2ZfYm91bmRzIGYgcmVxdWVzdGVkX2xlbmd0aCA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBjYW5ub3QgZ3JvdyB0byByZXF1ZXN0ZWQgbGVuZ3RoICVkIChtYXhfYXJyYXlfbGVuZ3RoIGlzICVkKVwiXG4gICAgICBmIHJlcXVlc3RlZF9sZW5ndGggU3lzLm1heF9hcnJheV9sZW5ndGhcblxuICAoKiBXaGVuIG9ic2VydmluZyBhbiBpbnZhbGlkIHN0YXRlIChbbWlzc2luZ19lbGVtZW50XSxcbiAgICAgW2ludmFsaWRfbGVuZ3RoXSksIHdlIGRvIG5vdCBnaXZlIHRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uXG4gICAgIGluIHRoZSBlcnJvciBtZXNzYWdlLCBhcyB0aGUgZXJyb3IgaXMgcmVsYXRlZCB0byBpbnZhbGlkIG9wZXJhdGlvbnNcbiAgICAgcGVyZm9ybWVkIGVhcmxpZXIsIGFuZCBub3QgdG8gdGhlIGNhbGxzaXRlIG9mIHRoZSBmdW5jdGlvblxuICAgICBpdHNlbGYuICopXG5cbiAgbGV0IGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24gPVxuICAgIFwiSW52YWxpZCBkeW5hcnJheSAodW5zeW5jaHJvbml6ZWQgY29uY3VycmVudCBsZW5ndGggY2hhbmdlKVwiXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG1pc3NpbmdfZWxlbWVudCB+aSB+bGVuZ3RoID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiJXM6IG1pc3NpbmcgZWxlbWVudCBhdCBwb3NpdGlvbiAlZCA8IGxlbmd0aCAlZFwiXG4gICAgICBpbnZhbGlkX3N0YXRlX2Rlc2NyaXB0aW9uXG4gICAgICBpIGxlbmd0aFxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2xlbmd0aCB+bGVuZ3RoIH5jYXBhY2l0eSA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIiVzOiBsZW5ndGggJWQgPiBjYXBhY2l0eSAlZFwiXG4gICAgICBpbnZhbGlkX3N0YXRlX2Rlc2NyaXB0aW9uXG4gICAgICBsZW5ndGggY2FwYWNpdHlcblxuICBsZXRbQGlubGluZSBuZXZlcl0gbGVuZ3RoX2NoYW5nZV9kdXJpbmdfaXRlcmF0aW9uIGYgfmV4cGVjdGVkIH5vYnNlcnZlZCA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBhIGxlbmd0aCBjaGFuZ2UgZnJvbSAlZCB0byAlZCBvY2N1cnJlZCBkdXJpbmcgaXRlcmF0aW9uXCJcbiAgICAgIGYgZXhwZWN0ZWQgb2JzZXJ2ZWRcblxuICAoKiBXaGVuIGFuIFtFbXB0eV0gZWxlbWVudCBpcyBvYnNlcnZlZCB1bmV4cGVjdGVkbHkgYXQgaW5kZXggW2ldLFxuICAgICBpdCBtYXkgYmUgZWl0aGVyIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGFuIGludmFsaWQtc3RhdGUgc2l0dWF0aW9uXG4gICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIFtpIDw9IGxlbmd0aF0uICopXG4gIGxldFtAaW5saW5lIG5ldmVyXSB1bmV4cGVjdGVkX2VtcHR5X2VsZW1lbnQgZiB+aSB+bGVuZ3RoID1cbiAgICBpZiBpIDwgbGVuZ3RoIHRoZW5cbiAgICAgIG1pc3NpbmdfZWxlbWVudCB+aSB+bGVuZ3RoXG4gICAgZWxzZVxuICAgICAgaW5kZXhfb3V0X29mX2JvdW5kcyBmIH5pIH5sZW5ndGhcblxuICBsZXRbQGlubGluZSBuZXZlcl0gZW1wdHlfZHluYXJyYXkgZiA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBlbXB0eSBhcnJheVwiIGZcbmVuZFxuXG4oKiBEZXRlY3RpbmcgaXRlcmF0b3IgaW52YWxpZGF0aW9uLlxuXG4gICBTZWUgeyFpdGVyfSBiZWxvdyBmb3IgYSBkZXRhaWxlZCB1c2FnZSBleGFtcGxlLlxuKilcbmxldCBjaGVja19zYW1lX2xlbmd0aCBmIGEgfmxlbmd0aCA9XG4gIGxldCBsZW5ndGhfYSA9IGEubGVuZ3RoIGluXG4gIGlmIGxlbmd0aCA8PiBsZW5ndGhfYSB0aGVuXG4gICAgRXJyb3IubGVuZ3RoX2NoYW5nZV9kdXJpbmdfaXRlcmF0aW9uIGZcbiAgICAgIH5leHBlY3RlZDpsZW5ndGggfm9ic2VydmVkOmxlbmd0aF9hXG5cbigqKiBDYXJlZnVsIHVuc2FmZSBhY2Nlc3MuICopXG5cbigqIFBvc3Rjb25kaXRpb24gb24gbm9uLWV4Y2VwdGlvbmFsIHJldHVybjpcbiAgIFtsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl0gKilcbmxldFtAaW5saW5lIGFsd2F5c10gY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnIgPVxuICBsZXQgY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIGxlbmd0aCA+IGNhcGFjaXR5IHRoZW5cbiAgICBFcnJvci5pbnZhbGlkX2xlbmd0aCB+bGVuZ3RoIH5jYXBhY2l0eVxuXG4oKiBQcmVjb25kaXRpb246IFswIDw9IGkgPCBsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl1cblxuICAgVGhpcyBwcmVjb25kaXRpb24gaXMgdHlwaWNhbGx5IGd1YXJhbnRlZWQgYnkga25vd2luZ1xuICAgWzAgPD0gaSA8IGxlbmd0aF0gYW5kIGNhbGxpbmcgW2NoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyXS4qKVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoID1cbiAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCBhcnIgaSB3aXRoXG4gIHwgRW1wdHkgLT4gRXJyb3IubWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGhcbiAgfCBFbGVtIHt2fSAtPiB2XG5cblxuKCoqIHsxOmR5bmFycmF5cyBEeW5hbWljIGFycmF5c30gKilcblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgYXJyID0gW3wgfF07XG59XG5cbmxldCBtYWtlIG4geCA9XG4gIGlmIG4gPCAwIHRoZW4gRXJyb3IubmVnYXRpdmVfbGVuZ3RoX3JlcXVlc3RlZCBcIm1ha2VcIiBuO1xuICB7XG4gICAgbGVuZ3RoID0gbjtcbiAgICBhcnIgPSBBcnJheS5pbml0IG4gKGZ1biBfIC0+IEVsZW0ge3YgPSB4fSk7XG4gIH1cblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwiaW5pdFwiIG47XG4gIHtcbiAgICBsZW5ndGggPSBuO1xuICAgIGFyciA9IEFycmF5LmluaXQgbiAoZnVuIGkgLT4gRWxlbSB7diA9IGYgaX0pO1xuICB9XG5cbmxldCBnZXQgYSBpID1cbiAgKCogVGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb3BhZ2F0ZSBhbiBbSW52YWxpZF9hcmd1bWVudF0gZXhjZXB0aW9uXG4gICAgIGZyb20gYXJyYXkgbG9va3VwIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgdGhlIGJhY2tpbmcgYXJyYXksXG4gICAgIGluc3RlYWQgb2YgdXNpbmcgb3VyIG93biBbRXJyb3IuaW5kZXhfb3V0X29mX2JvdW5kc10uIFRoaXMgaXNcbiAgICAgYWxsb3dlZCBieSBvdXIgc3BlY2lmaWNhdGlvbiwgYW5kIG1vcmUgZWZmaWNpZW50IC0tIG5vIG5lZWQgdG9cbiAgICAgY2hlY2sgdGhhdCBbbGVuZ3RoIGEgPD0gY2FwYWNpdHkgYV0gaW4gdGhlIGZhc3QgcGF0aC4gKilcbiAgbWF0Y2ggYS5hcnIuKGkpIHdpdGhcbiAgfCBFbGVtIHMgLT4gcy52XG4gIHwgRW1wdHkgLT5cbiAgICAgIEVycm9yLnVuZXhwZWN0ZWRfZW1wdHlfZWxlbWVudCBcImdldFwiIH5pIH5sZW5ndGg6YS5sZW5ndGhcblxubGV0IHNldCBhIGkgeCA9XG4gICgqIFNlZSB7IWdldH0gY29tbWVudCBvbiB0aGUgdXNlIG9mIGNoZWNrZWQgYXJyYXlcbiAgICAgYWNjZXNzIHdpdGhvdXQgb3VyIG93biBib3VuZCBjaGVja2luZy4gKilcbiAgbWF0Y2ggYS5hcnIuKGkpIHdpdGhcbiAgfCBFbGVtIHMgLT4gcy52IDwtIHhcbiAgfCBFbXB0eSAtPlxuICAgICAgRXJyb3IudW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IFwic2V0XCIgfmkgfmxlbmd0aDphLmxlbmd0aFxuXG5sZXQgbGVuZ3RoIGEgPSBhLmxlbmd0aFxuXG5sZXQgaXNfZW1wdHkgYSA9IChhLmxlbmd0aCA9IDApXG5cbmxldCBjb3B5IHtsZW5ndGg7IGFycn0gPVxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogdXNlIFtsZW5ndGhdIGFzIHRoZSBuZXcgY2FwYWNpdHkgdG8gbWFrZVxuICAgICB0aGlzIGFuIE8obGVuZ3RoKSBvcGVyYXRpb24uICopXG4gIHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIEVsZW0ge3Z9XG4gICAgKTtcbiAgfVxuXG5sZXQgZ2V0X2xhc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogV2Uga25vdyBbbGVuZ3RoIDw9IGNhcGFjaXR5IGFdLiAqKVxuICBpZiBsZW5ndGggPSAwIHRoZW4gRXJyb3IuZW1wdHlfZHluYXJyYXkgXCJnZXRfbGFzdFwiO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXS4gKilcbiAgdW5zYWZlX2dldCBhcnIgfmk6KGxlbmd0aCAtIDEpIH5sZW5ndGhcblxubGV0IGZpbmRfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXS4gKilcbiAgICBTb21lICh1bnNhZmVfZ2V0IGFyciB+aToobGVuZ3RoIC0gMSkgfmxlbmd0aClcblxuKCoqIHsxOnJlbW92aW5nIFJlbW92aW5nIGVsZW1lbnRzfSAqKVxuXG5sZXQgcG9wX2xhc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogV2Uga25vdyBbbGVuZ3RoIDw9IGNhcGFjaXR5IGFdLiAqKVxuICBpZiBsZW5ndGggPSAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbGFzdCA9IGxlbmd0aCAtIDEgaW5cbiAgKCogV2Uga25vdyBbbGVuZ3RoID4gMF0gc28gW2xhc3QgPj0gMF0uICopXG4gIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgYXJyIGxhc3Qgd2l0aFxuICB8IEVtcHR5IC0+XG4gICAgICBFcnJvci5taXNzaW5nX2VsZW1lbnQgfmk6bGFzdCB+bGVuZ3RoXG4gIHwgRWxlbSBzIC0+XG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFyciBsYXN0IEVtcHR5O1xuICAgICAgYS5sZW5ndGggPC0gbGFzdDtcbiAgICAgIHMudlxuXG5sZXQgcG9wX2xhc3Rfb3B0IGEgPVxuICBtYXRjaCBwb3BfbGFzdCBhIHdpdGhcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcbiAgfCB4IC0+IFNvbWUgeFxuXG5sZXQgcmVtb3ZlX2xhc3QgYSA9XG4gIGxldCBsYXN0ID0gbGVuZ3RoIGEgLSAxIGluXG4gIGlmIGxhc3QgPj0gMCB0aGVuIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGFzdDtcbiAgICBhLmFyci4obGFzdCkgPC0gRW1wdHk7XG4gIGVuZFxuXG5sZXQgdHJ1bmNhdGUgYSBuID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwidHJ1bmNhdGVcIiBuO1xuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgaWYgbGVuZ3RoIDw9IG4gdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbjtcbiAgICBBcnJheS5maWxsIGFyciBuIChsZW5ndGggLSBuKSBFbXB0eTtcbiAgZW5kXG5cbmxldCBjbGVhciBhID0gdHJ1bmNhdGUgYSAwXG5cblxuKCoqIHsxOmNhcGFjaXR5IEJhY2tpbmcgYXJyYXkgYW5kIGNhcGFjaXR5fSAqKVxuXG5sZXQgY2FwYWNpdHkgYSA9IEFycmF5Lmxlbmd0aCBhLmFyclxuXG5sZXQgbmV4dF9jYXBhY2l0eSBuID1cbiAgbGV0IG4nID1cbiAgICAoKiBGb3IgbGFyZ2UgdmFsdWVzIG9mIG4sIHdlIHVzZSAxLjUgYXMgb3VyIGdyb3d0aCBmYWN0b3IuXG5cbiAgICAgICBGb3Igc21hbGxlciB2YWx1ZXMgb2Ygbiwgd2UgZ3JvdyBtb3JlIGFnZ3Jlc3NpdmVseSB0byBhdm9pZFxuICAgICAgIHJlYWxsb2NhdGluZyB0b28gbXVjaCB3aGVuIGFjY3VtdWxhdGluZyBlbGVtZW50cyBpbnRvIGFuIGVtcHR5XG4gICAgICAgYXJyYXkuXG5cbiAgICAgICBUaGUgY29uc3RhbnRzIFwiNTEyIHdvcmRzXCIgYW5kIFwiOCB3b3Jkc1wiIGJlbG93IGFyZSB0YWtlbiBmcm9tXG4gICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZm9sbHkvYmxvYi9cbiAgICAgICAgICAgYzA2YzBmNDFkOTFkYWYxYTZhNWYzZmMxY2Q0NjUzMDJhYzI2MDQ1OS9mb2xseS9GQlZlY3Rvci5oI0wxMTI4LUwxMTU3XG4gICAgKilcbiAgICBpZiBuIDw9IDUxMiB0aGVuIG4gKiAyXG4gICAgZWxzZSBuICsgbiAvIDJcbiAgaW5cbiAgKCoganVtcCBkaXJlY3RseSBmcm9tIDAgdG8gOCAqKVxuICBtaW4gKG1heCA4IG4nKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5sZXQgZW5zdXJlX2NhcGFjaXR5IGEgY2FwYWNpdHlfcmVxdWVzdCA9XG4gIGxldCBhcnIgPSBhLmFyciBpblxuICBsZXQgY3VyX2NhcGFjaXR5ID0gQXJyYXkubGVuZ3RoIGFyciBpblxuICBpZiBjYXBhY2l0eV9yZXF1ZXN0IDwgMCB0aGVuXG4gICAgRXJyb3IubmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIFwiZW5zdXJlX2NhcGFjaXR5XCIgY2FwYWNpdHlfcmVxdWVzdFxuICBlbHNlIGlmIGN1cl9jYXBhY2l0eSA+PSBjYXBhY2l0eV9yZXF1ZXN0IHRoZW5cbiAgICAoKiBUaGlzIGlzIHRoZSBmYXN0IHBhdGgsIHRoZSBjb2RlIHVwIHRvIGhlcmUgbXVzdCBkbyBhcyBsaXR0bGUgYXNcbiAgICAgICBwb3NzaWJsZS4gKFRoaXMgaXMgd2h5IHdlIGRvbid0IHVzZSBbbGV0IHthcnI7IGxlbmd0aH0gPSBhXSBhc1xuICAgICAgIHVzdWFsLCB0aGUgbGVuZ3RoIGlzIG5vdCBuZWVkZWQgaW4gdGhlIGZhc3QgcGF0aC4pKilcbiAgICAoKVxuICBlbHNlIGJlZ2luXG4gICAgaWYgY2FwYWNpdHlfcmVxdWVzdCA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW5cbiAgICAgIEVycm9yLnJlcXVlc3RlZF9sZW5ndGhfb3V0X29mX2JvdW5kcyBcImVuc3VyZV9jYXBhY2l0eVwiIGNhcGFjaXR5X3JlcXVlc3Q7XG4gICAgbGV0IG5ld19jYXBhY2l0eSA9XG4gICAgICAoKiBXZSB1c2UgZWl0aGVyIHRoZSBuZXh0IGV4cG9uZW50aWFsLWdyb3d0aCBzdHJhdGVneSxcbiAgICAgICAgIG9yIHRoZSByZXF1ZXN0ZWQgc3RyYXRlZ3ksIHdoaWNoZXZlciBpcyBiaWdnZXIuXG5cbiAgICAgICAgIENvbXBhcmVkIHRvIG9ubHkgdXNpbmcgdGhlIGV4cG9uZW50aWFsLWdyb3d0aCBzdHJhdGVneSwgdGhpc1xuICAgICAgICAgbGV0cyB1cyB1c2UgbGVzcyBtZW1vcnkgYnkgYXZvaWRpbmcgYW55IG92ZXJzaG9vdCB3aGVuZXZlclxuICAgICAgICAgdGhlIGNhcGFjaXR5IHJlcXVlc3QgaXMgbm90aWNlYWJseSBsYXJnZXIgdGhhbiB0aGUgY3VycmVudFxuICAgICAgICAgY2FwYWNpdHkuXG5cbiAgICAgICAgIENvbXBhcmVkIHRvIG9ubHkgdXNpbmcgdGhlIHJlcXVlc3RlZCBjYXBhY2l0eSwgdGhpcyBhdm9pZHNcbiAgICAgICAgIGxvc2luZyB0aGUgYW1vcnRpemVkIGd1YXJhbnRlZTogd2UgYWxsb2NhdGVkIFwiZXhwb25lbnRpYWxseVxuICAgICAgICAgb3IgbW9yZVwiLCBzbyB0aGUgYW1vcnRpemF0aW9uIGhvbGRzLiBJbiBwYXJ0aWN1bGFyLCBub3RpY2VcbiAgICAgICAgIHRoYXQgcmVwZWF0ZWQgY2FsbHMgdG8gW2Vuc3VyZV9jYXBhY2l0eSBhIChsZW5ndGggYSArIDEpXVxuICAgICAgICAgd2lsbCBoYXZlIGFtb3J0aXplZC1saW5lYXIgcmF0aGVyIHRoYW4gcXVhZHJhdGljIGNvbXBsZXhpdHkuXG4gICAgICAqKVxuICAgICAgbWF4IChuZXh0X2NhcGFjaXR5IGN1cl9jYXBhY2l0eSkgY2FwYWNpdHlfcmVxdWVzdCBpblxuICAgIGxldCBuZXdfYXJyID0gQXJyYXkubWFrZSBuZXdfY2FwYWNpdHkgRW1wdHkgaW5cbiAgICBBcnJheS5ibGl0IGFyciAwIG5ld19hcnIgMCBhLmxlbmd0aDtcbiAgICBhLmFyciA8LSBuZXdfYXJyO1xuICAgICgqIHBvc3Rjb25kaXRpb246ICopXG4gICAgYXNzZXJ0ICgwIDw9IGNhcGFjaXR5X3JlcXVlc3QpO1xuICAgIGFzc2VydCAoY2FwYWNpdHlfcmVxdWVzdCA8PSBBcnJheS5sZW5ndGggbmV3X2Fycik7XG4gIGVuZFxuXG5sZXQgZW5zdXJlX2V4dHJhX2NhcGFjaXR5IGEgZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCA9XG4gIGVuc3VyZV9jYXBhY2l0eSBhIChsZW5ndGggYSArIGV4dHJhX2NhcGFjaXR5X3JlcXVlc3QpXG5cbmxldCBmaXRfY2FwYWNpdHkgYSA9XG4gIGlmIGNhcGFjaXR5IGEgPSBhLmxlbmd0aFxuICB0aGVuICgpXG4gIGVsc2UgYS5hcnIgPC0gQXJyYXkuc3ViIGEuYXJyIDAgYS5sZW5ndGhcblxubGV0IHNldF9jYXBhY2l0eSBhIG4gPVxuICBpZiBuIDwgMCB0aGVuXG4gICAgRXJyb3IubmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIFwic2V0X2NhcGFjaXR5XCIgbjtcbiAgbGV0IGFyciA9IGEuYXJyIGluXG4gIGxldCBjdXJfY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIG4gPCBjdXJfY2FwYWNpdHkgdGhlbiBiZWdpblxuICAgIGEubGVuZ3RoIDwtIG1pbiBhLmxlbmd0aCBuO1xuICAgIGEuYXJyIDwtIEFycmF5LnN1YiBhcnIgMCBuO1xuICBlbmRcbiAgZWxzZSBpZiBuID4gY3VyX2NhcGFjaXR5IHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2FyciA9IEFycmF5Lm1ha2UgbiBFbXB0eSBpblxuICAgIEFycmF5LmJsaXQgYXJyIDAgbmV3X2FyciAwIGEubGVuZ3RoO1xuICAgIGEuYXJyIDwtIG5ld19hcnI7XG4gIGVuZFxuXG5sZXQgcmVzZXQgYSA9XG4gIGEubGVuZ3RoIDwtIDA7XG4gIGEuYXJyIDwtIFt8fF1cblxuKCoqIHsxOmFkZGluZyBBZGRpbmcgZWxlbWVudHN9ICopXG5cbigqIFdlIGNob3NlIGFuIGltcGxlbWVudGF0aW9uIG9mIFthZGRfbGFzdCBhIHhdIHRoYXQgYmVoYXZlcyBjb3JyZWN0bHlcbiAgIGluIHByZXNlbmNlIG9mIGFzeW5jaHJvbm91cyAvIHJlLWVudHJhbnQgY29kZSBleGVjdXRpb24gYXJvdW5kXG4gICBhbGxvY2F0aW9ucyBhbmQgcG9sbCBwb2ludHM6IGlmIGFub3RoZXIgdGhyZWFkIG9yIGEgY2FsbGJhY2sgZ2V0c1xuICAgZXhlY3V0ZWQgb24gYWxsb2NhdGlvbiwgd2UgYWRkIHRoZSBlbGVtZW50IGF0IHRoZSBuZXcgZW5kIG9mIHRoZVxuICAgZHluYW1pYyBhcnJheS5cblxuICAgKFdlIGRvIG5vdCBnaXZlIHRoZSBzYW1lIGd1YXJhbnRlZXMgaW4gcHJlc2VuY2Ugb2YgY29uY3VycmVudFxuICAgcGFyYWxsZWwgdXBkYXRlcywgd2hpY2ggYXJlIG11Y2ggbW9yZSBleHBlbnNpdmUgdG8gcHJvdGVjdFxuICAgYWdhaW5zdC4pXG4qKVxuXG4oKiBbYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW1dIG9ubHkgd3JpdGVzIHRoZSBzbG90IGlmIHRoZXJlIGlzIHJvb20sIGFuZFxuICAgcmV0dXJucyBbZmFsc2VdIG90aGVyd2lzZS4gKilcbmxldFtAaW5saW5lXSBhZGRfbGFzdF9pZl9yb29tIGEgZWxlbSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICAoKiB3ZSBrbm93IFswIDw9IGxlbmd0aF0gKilcbiAgaWYgbGVuZ3RoID49IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgKCogd2Uga25vdyBbMCA8PSBsZW5ndGggPCBBcnJheS5sZW5ndGggYXJyXSAqKVxuICAgIGEubGVuZ3RoIDwtIGxlbmd0aCArIDE7XG4gICAgQXJyYXkudW5zYWZlX3NldCBhcnIgbGVuZ3RoIGVsZW07XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFkZF9sYXN0IGEgeCA9XG4gIGxldCBlbGVtID0gRWxlbSB7diA9IHh9IGluXG4gIGlmIGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYWRkIGEgZWxlbSA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSAxO1xuICAgICAgaWYgbm90IChhZGRfbGFzdF9pZl9yb29tIGEgZWxlbSlcbiAgICAgIHRoZW4gZ3Jvd19hbmRfYWRkIGEgZWxlbVxuICAgIGluIGdyb3dfYW5kX2FkZCBhIGVsZW1cbiAgZW5kXG5cbmxldCByZWMgYXBwZW5kX2xpc3QgYSBsaSA9XG4gIG1hdGNoIGxpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IHggOjogeHMgLT4gYWRkX2xhc3QgYSB4OyBhcHBlbmRfbGlzdCBhIHhzXG5cbmxldCBhcHBlbmRfaXRlciBhIGl0ZXIgYiA9XG4gIGl0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgYlxuXG5sZXQgYXBwZW5kX3NlcSBhIHNlcSA9XG4gIFNlcS5pdGVyIChmdW4geCAtPiBhZGRfbGFzdCBhIHgpIHNlcVxuXG4oKiBhcHBlbmRfYXJyYXk6IHNhbWUgWy4uLl9pZl9yb29tXSBhbmQgbG9vcCBsb2dpYyBhcyBbYWRkX2xhc3RdLiAqKVxuXG5sZXQgYXBwZW5kX2FycmF5X2lmX3Jvb20gYSBiID1cbiAgbGV0IHthcnI7IGxlbmd0aCA9IGxlbmd0aF9hfSA9IGEgaW5cbiAgbGV0IGxlbmd0aF9iID0gQXJyYXkubGVuZ3RoIGIgaW5cbiAgaWYgbGVuZ3RoX2EgKyBsZW5ndGhfYiA+IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoX2EgKyBsZW5ndGhfYjtcbiAgICAoKiBOb3RlOiB3ZSBpbnRlbnRpb25hbGx5IHVwZGF0ZSB0aGUgbGVuZ3RoICpiZWZvcmUqIGZpbGxpbmcgdGhlXG4gICAgICAgZWxlbWVudHMuIFRoaXMgXCJyZXNlcnZlIGJlZm9yZSBmaWxsXCIgYXBwcm9hY2ggcHJvdmlkZXMgYmV0dGVyXG4gICAgICAgYmVoYXZpb3IgdGhhbiBcImZpbGwgdGhlbiBub3RpZnlcIiBpbiBwcmVzZW5jZSBvZiByZWVudHJhbnRcbiAgICAgICBtb2RpZmljYXRpb25zICh3aGljaCBtYXkgb2NjdXIgYmVsb3csIG9uIGEgcG9sbCBwb2ludCBpbiB0aGUgbG9vcCBvclxuICAgICAgIHRoZSBbRWxlbV0gYWxsb2NhdGlvbik6XG5cbiAgICAgICAtIElmIHNvbWUgY29kZSBhc3luY2hyb25vdXNseSBhZGRzIG5ldyBlbGVtZW50cyBhZnRlciB0aGlzXG4gICAgICAgICBsZW5ndGggdXBkYXRlLCB0aGV5IHdpbGwgZ28gYWZ0ZXIgdGhlIHNwYWNlIHdlIGp1c3QgcmVzZXJ2ZWQsXG4gICAgICAgICBhbmQgaW4gcGFydGljdWxhciBubyBhZGRpdGlvbiB3aWxsIGJlIGxvc3QuIElmIGluc3RlYWQgd2VcbiAgICAgICAgIHVwZGF0ZWQgdGhlIGxlbmd0aCBhZnRlciB0aGUgbG9vcCwgYW55IGFzeW5jaHJvbm91cyBhZGRpdGlvblxuICAgICAgICAgZHVyaW5nIHRoZSBsb29wIGNvdWxkIGJlIGVyYXNlZCBvciBlcmFzZSBvbmUgb2Ygb3VyIGFkZGl0aW9ucyxcbiAgICAgICAgIHNpbGVudGx5LCB3aXRob3V0IHdhcm5pbmcgdGhlIHVzZXIuXG5cbiAgICAgICAtIElmIHNvbWUgY29kZSBhc3luY2hyb25vdXNseSBpdGVyYXRlcyBvbiB0aGUgZHluYXJyYXksIG9yXG4gICAgICAgICByZW1vdmVzIGVsZW1lbnRzLCBvciBvdGhlcndpc2UgdHJpZXMgdG8gYWNjZXNzIHRoZVxuICAgICAgICAgcmVzZXJ2ZWQtYnV0LW5vdC15ZXQtZmlsbGVkIHNwYWNlLCBpdCB3aWxsIGdldCBhIGNsZWFuIFwibWlzc2luZ1xuICAgICAgICAgZWxlbWVudFwiIGVycm9yLiBUaGlzIGlzIHdvcnNlIHRoYW4gd2l0aCB0aGUgZmlsbC10aGVuLW5vdGlmeVxuICAgICAgICAgYXBwcm9hY2ggd2hlcmUgdGhlIG5ldyBlbGVtZW50cyB3b3VsZCBvbmx5IGJlY29tZSB2aXNpYmxlXG4gICAgICAgICAodG8gaXRlcmF0b3JzLCBmb3IgcmVtb3ZhbCwgZXRjLikgYWxsdG9nZXRoZXIgYXQgdGhlIGVuZCBvZlxuICAgICAgICAgbG9vcC5cblxuICAgICAgIFRvIHN1bW1hcmlzZSwgXCJyZXNlcnZlIGJlZm9yZSBmaWxsXCIgaXMgYmV0dGVyIG9uIGFkZC1hZGQgcmFjZXMsXG4gICAgICAgYW5kIFwiZmlsbCB0aGVuIG5vdGlmeVwiIGlzIGJldHRlciBvbiBhZGQtcmVtb3ZlIG9yIGFkZC1pdGVyYXRlXG4gICAgICAgcmFjZXMuIEJ1dCB0aGUga2V5IGRpZmZlcmVuY2UgaXMgdGhlIGZhaWx1cmUgbW9kZTpcbiAgICAgICByZXNlcnZlLWJlZm9yZSBmYWlscyBvbiBhZGQtcmVtb3ZlIG9yIGFkZC1pdGVyYXRlIHJhY2VzIHdpdGhcbiAgICAgICBhIGNsZWFuIGVycm9yLCB3aGlsZSBub3RpZnktYWZ0ZXIgZmFpbHMgb24gYWRkLWFkZCByYWNlcyB3aXRoXG4gICAgICAgc2lsZW50bHkgZGlzYXBwZWFyaW5nIGRhdGEuICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9iIC0gMSBkb1xuICAgICAgbGV0IHggPSBBcnJheS51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhcnIgKGxlbmd0aF9hICsgaSkgKEVsZW0ge3YgPSB4fSlcbiAgICBkb25lO1xuICAgIHRydWVcbiAgZW5kXG5cbmxldCBhcHBlbmRfYXJyYXkgYSBiID1cbiAgaWYgYXBwZW5kX2FycmF5X2lmX3Jvb20gYSBiIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYXBwZW5kIGEgYiA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSAoQXJyYXkubGVuZ3RoIGIpO1xuICAgICAgaWYgbm90IChhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIpXG4gICAgICB0aGVuIGdyb3dfYW5kX2FwcGVuZCBhIGJcbiAgICBpbiBncm93X2FuZF9hcHBlbmQgYSBiICBlbmRcblxuKCogYXBwZW5kOiBzYW1lIFsuLi5faWZfcm9vbV0gYW5kIGxvb3AgbG9naWMgYXMgW2FkZF9sYXN0XSxcbiAgIHNhbWUgcmVzZXJ2ZS1iZWZvcmUtZmlsbCBsb2dpYyBhcyBbYXBwZW5kX2FycmF5XS4gKilcblxuKCogSXQgaXMgYSBwcm9ncmFtbWluZyBlcnJvciB0byBtdXRhdGUgdGhlIGxlbmd0aCBvZiBbYl0gZHVyaW5nIGEgY2FsbFxuICAgdG8gW2FwcGVuZCBhIGJdLiBUbyBkZXRlY3QgdGhpcyBtaXN0YWtlIHdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aFxuICAgb2YgW2JdIHRocm91Z2hvdXQgdGhlIGNvbXB1dGF0aW9uIGFuZCBjaGVjayBpdCB0aGF0IGRvZXMgbm90XG4gICBjaGFuZ2UuXG4qKVxubGV0IGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IgPVxuICBsZXQge2FyciA9IGFycl9hOyBsZW5ndGggPSBsZW5ndGhfYX0gPSBhIGluXG4gIGlmIGxlbmd0aF9hICsgbGVuZ3RoX2IgPiBBcnJheS5sZW5ndGggYXJyX2EgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoX2EgKyBsZW5ndGhfYjtcbiAgICBsZXQgYXJyX2IgPSBiLmFyciBpblxuICAgIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGhfYiBhcnJfYjtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX2IgLSAxIGRvXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYXJyX2Igfmkgfmxlbmd0aDpsZW5ndGhfYiBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhcnJfYSAobGVuZ3RoX2EgKyBpKSAoRWxlbSB7diA9IHh9KVxuICAgIGRvbmU7XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJhcHBlbmRcIiBiIH5sZW5ndGg6bGVuZ3RoX2I7XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFwcGVuZCBhIGIgPVxuICBsZXQgbGVuZ3RoX2IgPSBsZW5ndGggYiBpblxuICBpZiBhcHBlbmRfaWZfcm9vbSBhIGIgfmxlbmd0aF9iIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYXBwZW5kIGEgYiB+bGVuZ3RoX2IgPVxuICAgICAgZW5zdXJlX2V4dHJhX2NhcGFjaXR5IGEgbGVuZ3RoX2I7XG4gICAgICAoKiBFbGlkaW5nIHRoZSBbY2hlY2tfc2FtZV9sZW5ndGhdIGNhbGwgYmVsb3cgd291bGQgYmUgd3JvbmcgaW5cbiAgICAgICAgIHRoZSBjYXNlIHdoZXJlIFthXSBhbmQgW2JdIGFyZSBhbGlhc2VzIG9mIGVhY2ggb3RoZXIsIHdlXG4gICAgICAgICB3b3VsZCBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29wIGluc3RlYWQgb2YgZmFpbGluZy5cblxuICAgICAgICAgV2UgY291bGQgcHVzaCB0aGUgY2FsbCB0byBbYXBwZW5kX2lmX3Jvb21dIGl0c2VsZiwgYnV0IHdlXG4gICAgICAgICBwcmVmZXIgdG8ga2VlcCBpdCBpbiB0aGUgc2xvdyBwYXRoLiAgKilcbiAgICAgIGNoZWNrX3NhbWVfbGVuZ3RoIFwiYXBwZW5kXCIgYiB+bGVuZ3RoOmxlbmd0aF9iO1xuICAgICAgaWYgbm90IChhcHBlbmRfaWZfcm9vbSBhIGIgfmxlbmd0aF9iKVxuICAgICAgdGhlbiBncm93X2FuZF9hcHBlbmQgYSBiIH5sZW5ndGhfYlxuICAgIGluIGdyb3dfYW5kX2FwcGVuZCBhIGIgfmxlbmd0aF9iXG4gIGVuZFxuXG5cblxuKCoqIHsxOml0ZXJhdGlvbiBJdGVyYXRpb259ICopXG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBjaG9pY2UgdGhhdCB3ZSBtYWRlIGZvciBpdGVyYXRvcnMgaXMgdGhlIG9uZVxuICAgdGhhdCBtYXhpbWl6ZXMgZWZmaWNpZW5jeSBieSBhdm9pZGluZyByZXBlYXRlZCBib3VuZCBjaGVja2luZzogd2VcbiAgIGNoZWNrIHRoZSBsZW5ndGggb2YgdGhlIGR5bmFtaWMgYXJyYXkgb25jZSBhdCB0aGUgYmVnaW5uaW5nLCBhbmRcbiAgIHRoZW4gb25seSBvcGVyYXRlIG9uIHRoYXQgcG9ydGlvbiBvZiB0aGUgZHluYXJyYXksIGlnbm9yaW5nXG4gICBlbGVtZW50cyBhZGRlZCBpbiB0aGUgbWVhbnRpbWUuXG5cbiAgIFRoZSBzcGVjaWZpY2F0aW9uIHN0YXRlcyB0aGF0IGl0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IgdG8gbXV0YXRlXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSBkdXJpbmcgaXRlcmF0aW9uLiBXZSBjaGVjayBmb3IgdGhpcyBhbmRcbiAgIHJhaXNlIGFuIGVycm9yIG9uIHNpemUgY2hhbmdlLlxuICAgTm90ZSB0aGF0IHdlIG1heSBzdGlsbCBtaXNzIHNvbWUgdHJhbnNpZW50IHN0YXRlIGNoYW5nZXMgdGhhdCBjYW5jZWxcbiAgIGVhY2ggb3RoZXIgYW5kIGxlYXZlIHRoZSBsZW5ndGggdW5jaGFuZ2VkIGF0IHRoZSBuZXh0IGNoZWNrLlxuKilcblxubGV0IGl0ZXJfIGYgayBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gICgqIFtjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycl0gaXMgdXNlZCBmb3IgbWVtb3J5IHNhZmV0eSwgaXRcbiAgICAgZ3VhcmFudGVlcyB0aGF0IHRoZSBiYWNraW5nIGFycmF5IGhhcyBjYXBhY2l0eSBhdCBsZWFzdCBbbGVuZ3RoXSxcbiAgICAgYWxsb3dpbmcgdW5zYWZlIGFycmF5IGFjY2Vzcy5cblxuICAgICBbY2hlY2tfc2FtZV9sZW5ndGhdIGlzIHVzZWQgZm9yIGNvcnJlY3RuZXNzLCBpdCBsZXRzIHRoZSBmdW5jdGlvblxuICAgICBmYWlsIG1vcmUgb2Z0ZW4gaWYgd2UgZGlzY292ZXIgdGhlIHByb2dyYW1taW5nIGVycm9yIG9mIG11dGF0aW5nXG4gICAgIHRoZSBsZW5ndGggZHVyaW5nIGl0ZXJhdGlvbi5cblxuICAgICBXZSBjb3VsZCwgbmFpdmVseSwgY2FsbCBbY2hlY2tfc2FtZV9sZW5ndGhdIGF0IGVhY2ggaXRlcmF0aW9uIG9mXG4gICAgIHRoZSBsb29wIChiZWZvcmUgb3IgYWZ0ZXIsIG9yIGJvdGgpLiBIb3dldmVyLCBub3RpY2UgdGhhdCB0aGlzIGlzXG4gICAgIG5vdCBuZWNlc3NhcnkgdG8gZGV0ZWN0IHRoZSByZW1vdmFsIG9mIGVsZW1lbnRzIGZyb20gW2FdOiBpZlxuICAgICBlbGVtZW50cyBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgdGltZSB0aGUgW2Zvcl0gbG9vcCByZWFjaGVzXG4gICAgIHRoZW0sIHRoZW4gW3Vuc2FmZV9nZXRdIHdpbGwgaXRzZWxmIGZhaWwgd2l0aCBhbiBbSW52YWxpZF9hcmd1bWVudF1cbiAgICAgZXhjZXB0aW9uLiBXZSBvbmx5IG5lZWQgdG8gZGV0ZWN0IHRoZSBhZGRpdGlvbiBvZiBuZXcgZWxlbWVudHMgdG9cbiAgICAgW2FdIGR1cmluZyBpdGVyYXRpb24sIGFuZCBmb3IgdGhpcyBpdCBpcyBlbm91Z2ggdG8gY2FsbFxuICAgICBbY2hlY2tfc2FtZV9sZW5ndGhdIG9uY2UgYXQgdGhlIGVuZC5cblxuICAgICBDYWxsaW5nIFtjaGVja19zYW1lX2xlbmd0aF0gbW9yZSBvZnRlbiBjb3VsZCBjYXRjaCBtb3JlXG4gICAgIHByb2dyYW1taW5nIGVycm9ycywgYnV0IHRoZSBvbmx5IGVycm9ycyB0aGF0IHdlIG1pc3Mgd2l0aCB0aGlzXG4gICAgIG9wdGltaXphdGlvbiBhcmUgdGhvc2UgdGhhdCBrZWVwIHRoZSBhcnJheSBzaXplIGNvbnN0YW50IC0tXG4gICAgIGFkZGl0aW9ucyBhbmQgZGVsZXRpb25zIHRoYXQgY2FuY2VsIGVhY2ggb3RoZXIuIFdlIGNvbnNpZGVyIHRoaXNcbiAgICAgYW4gYWNjZXB0YWJsZSB0cmFkZW9mZi5cbiAgKilcbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgayAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCk7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIGYgYSB+bGVuZ3RoXG5cbmxldCBpdGVyIGsgYSA9XG4gIGl0ZXJfIFwiaXRlclwiIGsgYVxuXG5sZXQgaXRlcmkgayBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGsgaSAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCk7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiaXRlcmlcIiBhIH5sZW5ndGhcblxubGV0IG1hcCBmIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZXMgPSB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgICAgRWxlbSB7diA9IGYgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpfSk7XG4gIH0gaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJtYXBcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBFbGVtIHt2ID0gZiBpICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKX0pO1xuICB9IGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwibWFwaVwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmb2xkX2xlZnQgZiBhY2MgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHIgPSByZWYgYWNjIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgciA6PSBmICFyIHY7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9sZF9sZWZ0XCIgYSB+bGVuZ3RoO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgYWNjID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgciA6PSBmIHYgIXI7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9sZF9yaWdodFwiIGEgfmxlbmd0aDtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgbG9vcCBwIGFyciBpIGxlbmd0aCA9XG4gICAgaWYgaSA9IGxlbmd0aCB0aGVuIGZhbHNlXG4gICAgZWxzZVxuICAgICAgcCAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aClcbiAgICAgIHx8IGxvb3AgcCBhcnIgKGkgKyAxKSBsZW5ndGhcbiAgaW5cbiAgbGV0IHJlcyA9IGxvb3AgcCBhcnIgMCBsZW5ndGggaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJleGlzdHNcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgbG9vcCBwIGFyciBpIGxlbmd0aCA9XG4gICAgaWYgaSA9IGxlbmd0aCB0aGVuIHRydWVcbiAgICBlbHNlXG4gICAgICBwICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICAgICAgJiYgbG9vcCBwIGFyciAoaSArIDEpIGxlbmd0aFxuICBpblxuICBsZXQgcmVzID0gbG9vcCBwIGFyciAwIGxlbmd0aCBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcImZvcl9hbGxcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgZmlsdGVyIGYgYSA9XG4gIGxldCBiID0gY3JlYXRlICgpIGluXG4gIGl0ZXJfIFwiZmlsdGVyXCIgKGZ1biB4IC0+IGlmIGYgeCB0aGVuIGFkZF9sYXN0IGIgeCkgYTtcbiAgYlxuXG5sZXQgZmlsdGVyX21hcCBmIGEgPVxuICBsZXQgYiA9IGNyZWF0ZSAoKSBpblxuICBpdGVyXyBcImZpbHRlcl9tYXBcIiAoZnVuIHggLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5IC0+IGFkZF9sYXN0IGIgeVxuICApIGE7XG4gIGJcblxuXG4oKiogezE6Y29udmVyc2lvbnMgQ29udmVyc2lvbnMgdG8gb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzfSAqKVxuXG4oKiBUaGUgZWFnZXIgW3RvXypdIGNvbnZlcnNpb24gZnVuY3Rpb25zIGJlaGF2ZSBzaW1pbGFybHkgdG8gaXRlcmF0b3JzXG4gICBpbiBwcmVzZW5jZSBvZiB1cGRhdGVzIGR1cmluZyBjb21wdXRhdGlvbi4gVGhlIFsqX3JlZW50cmFudF1cbiAgIGZ1bmN0aW9ucyBvYmV5IHRoZWlyIG1vcmUgcGVybWlzc2l2ZSBzcGVjaWZpY2F0aW9uLCB3aGljaCB0b2xlcmF0ZXNcbiAgIGFueSBjb25jdXJyZW50IHVwZGF0ZS4gKilcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT4gRWxlbSB7diA9IEFycmF5LnVuc2FmZV9nZXQgYSBpfSk7XG4gIH1cblxubGV0IHRvX2FycmF5IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZXMgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcInRvX2FycmF5XCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IG9mX2xpc3QgbGkgPVxuICBsZXQgYSA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgbGk7XG4gIGFcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIDo6ICFsXG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fbGlzdFwiIGEgfmxlbmd0aDtcbiAgIWxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgaW5pdCA9IGNyZWF0ZSgpIGluXG4gIGFwcGVuZF9zZXEgaW5pdCBzZXE7XG4gIGluaXRcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19zZXFcIiBhIH5sZW5ndGg7XG4gICAgaWYgaSA+PSBsZW5ndGggdGhlbiBTZXEuTmlsXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpICsgMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFfcmVlbnRyYW50IGEgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggYSB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IGdldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgKyAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcV9yZXYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fc2VxX3JldlwiIGEgfmxlbmd0aDtcbiAgICBpZiBpIDwgMCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgLSAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IChsZW5ndGggLSAxKVxuXG5sZXQgdG9fc2VxX3Jldl9yZWVudHJhbnQgYSA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBpZiBpIDwgMCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGlmIGkgPj0gbGVuZ3RoIGEgdGhlblxuICAgICAgKCogSWYgc29tZSBlbGVtZW50cyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbWVhbnRpbWUsIHdlIHNraXBcbiAgICAgICAgIHRob3NlIGVsZW1lbnRzIGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXcgZW5kIG9mIHRoZSBhcnJheS4gKilcbiAgICAgIGF1eCAobGVuZ3RoIGEgLSAxKSAoKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSAtIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggKGxlbmd0aCBhIC0gMSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4OlwiLVwiIHMgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHggPVxuICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgKChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKSwgTm9uZSlcbiAgZWxzZVxuICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgIChjb25zdHJ1Y3RvciwgU29tZSAoZmllbGRzIHgpKVxuXG5sZXQgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB0ID1cbiAgbGV0IGNvbnN0cnVjdG9yLCBmaWVsZHNfb3B0ID0gZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHQgaW5cbiAgbWF0Y2ggZmllbGRzX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBjb25zdHJ1Y3RvclxuICB8IFNvbWUgZiAtPiBjb25zdHJ1Y3RvciBeIGZcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIHN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgKE9iai5yZXByIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG4oKiBEaXNhYmxlIHdhcm5pbmcgMzc6IHZhbHVlcyBhcmUgY29uc3RydWN0ZWQgaW4gdGhlIHJ1bnRpbWUgKilcbnR5cGVbQHdhcm5pbmcgXCItMzdcIl0gYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgOiBib29sO1xuICAgICAgZmlsZW5hbWUgICA6IHN0cmluZztcbiAgICAgIHN0YXJ0X2xudW0gOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyIDogaW50O1xuICAgICAgZW5kX29mZnNldCA6IGludDsgKCogUmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHN0YXJ0X2xudW0gKilcbiAgICAgIGVuZF9sbnVtICAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgIDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2YgZW5kX2xudW0gbGluZSAqKVxuICAgICAgaXNfaW5saW5lICA6IGJvb2w7XG4gICAgICBkZWZuYW1lICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Q6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiBiYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZTpcbiAgcmF3X2JhY2t0cmFjZSAtPiBiYWNrdHJhY2Vfc2xvdCBhcnJheSA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2VcIlxuXG5sZXQgY29udmVydF9yYXdfYmFja3RyYWNlIGJ0ID1cbiAgdHJ5IFNvbWUgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZm9ybWF0X2JhY2t0cmFjZV9zbG90IHBvcyBzbG90ID1cbiAgbGV0IGluZm8gaXNfcmFpc2UgPVxuICAgIGlmIGlzX3JhaXNlIHRoZW5cbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBhdFwiIGVsc2UgXCJSZS1yYWlzZWQgYXRcIlxuICAgIGVsc2VcbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIgZWxzZSBcIkNhbGxlZCBmcm9tXCJcbiAgaW5cbiAgbWF0Y2ggc2xvdCB3aXRoXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBpZiBsLmlzX3JhaXNlIHRoZW5cbiAgICAgICAgKCogY29tcGlsZXItaW5zZXJ0ZWQgcmUtcmFpc2UsIHNraXBwZWQgKikgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChzcHJpbnRmIFwiJXMgdW5rbm93biBsb2NhdGlvblwiIChpbmZvIGZhbHNlKSlcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBsZXQgbGluZXMgPVxuICAgICAgICBpZiBsLnN0YXJ0X2xudW0gPSBsLmVuZF9sbnVtIHRoZW5cbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiAlZFwiIGwuc3RhcnRfbG51bVxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJzICVkLSVkXCIgbC5zdGFydF9sbnVtIGwuZW5kX2xudW1cbiAgICAgIGluXG4gICAgICBTb21lIChzcHJpbnRmIFwiJXMgJXMgaW4gZmlsZSBcXFwiJXNcXFwiJXMsIGxpbmUlcywgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbGluZXMgbC5zdGFydF9jaGFyIGwuZW5kX2NoYXIpXG5cbmxldCBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBmcHJpbnRmIG91dGNoYW5cbiAgICAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gZnByaW50ZiBvdXRjaGFuIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmVcblxubGV0IHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiByYXdfYmFja3RyYWNlID1cbiAgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6IHByaW50cyB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgcHJpbnRfYmFja3RyYWNlIG91dGNoYW4gPVxuICBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5sZXQgYmFja3RyYWNlX3RvX3N0cmluZyBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGJwcmludGYgYiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHJhd19iYWNrdHJhY2UgPVxuICBiYWNrdHJhY2VfdG9fc3RyaW5nIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfaW5saW5lXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG5cbnR5cGUgbG9jYXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBsaW5lX251bWJlciA6IGludDtcbiAgc3RhcnRfY2hhciA6IGludDtcbiAgZW5kX2NoYXIgOiBpbnQ7XG4gIGVuZF9saW5lIDogaW50O1xuICBlbmRfY29sIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLnN0YXJ0X2xudW07XG4gICAgICBzdGFydF9jaGFyICA9IGwuc3RhcnRfY2hhcjtcbiAgICAgIGVuZF9jaGFyICAgID0gbC5lbmRfb2Zmc2V0O1xuICAgICAgZW5kX2xpbmUgICAgPSBsLmVuZF9sbnVtO1xuICAgICAgZW5kX2NvbCAgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICB2ZXJib3NlIDogaW50O1xuICBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIHN0YWNrX2xpbWl0IDogaW50O1xuICBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5cbmxldCBldmVudGxvZ19wYXVzZSAoKSA9ICgpXG5sZXQgZXZlbnRsb2dfcmVzdW1lICgpID0gKClcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIEF0b21pYy50XG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiBBdG9taWMuZ2V0IGFyZWMuYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBsZXQgZmluYWxseSAoKSA9IGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYyBpblxuICAgIEZ1bi5wcm90ZWN0IH5maW5hbGx5IGFyZWMuZlxuICBlbmRcblxubGV0IGRlbGV0ZV9hbGFybSBhID0gQXRvbWljLnNldCBhIGZhbHNlXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSBBdG9taWMubWFrZSB0cnVlOyBmID0gZiB9IGluXG4gIERvbWFpbi5hdF9leGl0IChmdW4gKCkgLT4gZGVsZXRlX2FsYXJtIGFyZWMuYWN0aXZlKTtcbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSB0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcblxuICAgIGV4dGVybmFsIGRpc2NhcmQgOiB0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9kaXNjYXJkXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGluX2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX2luX2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX2luXG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9pbl9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBpYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9pbl9ub2VyciBpYylcbiAgICAoZnVuICgpIC0+IGYgaWMpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbl9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW4gcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9pbl9ub2VyclxuXG5sZXQgaW5wdXRfY2hhciBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgfCBjIC0+IFNvbWUgY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9ieXRlIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2J5dGUgaWMgd2l0aFxuICB8IG4gLT4gU29tZSBuXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2xpbmUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXQgPSBTdGRsaWIuaW5wdXRcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0X2JpZ2FycmF5IDpcbiAgdCAtPiBfIEJpZ2FycmF5LkFycmF5MS50IC0+IGludCAtPiBpbnQgLT4gaW50XG4gID0gXCJjYW1sX21sX2lucHV0X2JpZ2FycmF5XCJcblxubGV0IGlucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuIHdpdGhcbiAgfCAoKSAtPiBTb21lICgpXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiBTb21lICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRfYmlnYXJyYXlcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbigqIFJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgaW50byBbYnVmXSwgc3RhcnRpbmcgYXQgW29mc10uIFJldHVybiB0b3RhbCBieXRlc1xuICAgcmVhZC4gKilcbmxldCByZWFkX3VwdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3Agb2ZzIGxlbiA9XG4gICAgaWYgbGVuID0gMCB0aGVuIG9mc1xuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gU3RkbGliLmlucHV0IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgICBpZiByID0gMCB0aGVuXG4gICAgICAgIG9mc1xuICAgICAgZWxzZVxuICAgICAgICBsb29wIChvZnMgKyByKSAobGVuIC0gcilcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBvZnMgbGVuIC0gb2ZzXG5cbigqIEJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gcmV0dXJuIGEgYnVmZmVyIHdpdGggPj0gKG9mcyArIG4pIGJ5dGVzIG9mIHN0b3JhZ2UsXG4gICBhbmQgc3VjaCB0aGF0IGl0IGNvaW5jaWRlcyB3aXRoIFtidWZdIGF0IGluZGljZXMgPCBbb2ZzXS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBlcXVhbCB0byBbYnVmXSBpdHNlbGYgaWYgaXQgYWxyZWFkeSBoYXMgc3VmZmljaWVudFxuICAgZnJlZSBzcGFjZS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtYXkgaGF2ZSAqZmV3ZXIqIHRoYW4gW29mcyArIG5dIGJ5dGVzIG9mIHN0b3JhZ2UgaWYgdGhpc1xuICAgbnVtYmVyIGlzID4gW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0uIEhvd2V2ZXIgdGhlIHJldHVybmVkIGJ1ZmZlciB3aWxsXG4gICAqYWx3YXlzKiBoYXZlID4gW29mc10gYnl0ZXMgb2Ygc3RvcmFnZS4gSW4gdGhlIGxpbWl0aW5nIGNhc2Ugd2hlbiBbb2ZzID0gbGVuXG4gICA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKHNvIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlc2l6ZSB0aGUgYnVmZmVyIGF0XG4gICBhbGwpLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxuXG5sZXQgZW5zdXJlIGJ1ZiBvZnMgbiA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA+PSBvZnMgKyBuIHRoZW4gYnVmXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbmV3X2xlbiA9IHJlZiBsZW4gaW5cbiAgICB3aGlsZSAhbmV3X2xlbiA8IG9mcyArIG4gZG9cbiAgICAgIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuICsgMVxuICAgIGRvbmU7XG4gICAgbGV0IG5ld19sZW4gPSAhbmV3X2xlbiBpblxuICAgIGxldCBuZXdfbGVuID1cbiAgICAgIGlmIG5ld19sZW4gPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgbmV3X2xlblxuICAgICAgZWxzZSBpZiBvZnMgPCBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgZmFpbHdpdGggXCJJbl9jaGFubmVsLmlucHV0X2FsbDogY2hhbm5lbCBjb250ZW50IFxcXG4gICAgICAgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIHN0cmluZyBsZW5ndGhcIlxuICAgIGluXG4gICAgbGV0IG5ld19idWYgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmIDAgbmV3X2J1ZiAwIG9mcztcbiAgICBuZXdfYnVmXG4gIGVuZFxuXG5sZXQgaW5wdXRfYWxsIGljID1cbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpbiAoKiBJT19CVUZGRVJfU0laRSAqKVxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgW0B0YWlsX21vZF9jb25zXSByZWMgaW5wdXRfbGluZXMgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBsaW5lIDo6IGlucHV0X2xpbmVzIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IFtdXG5cbmxldCByZWMgZm9sZF9saW5lcyBmIGFjY3UgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBmb2xkX2xpbmVzIGYgKGYgYWNjdSBsaW5lKSBpY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBhY2N1XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogaW5fY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBvdXRfY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRvdXQgPSBTdGRsaWIuc3Rkb3V0XG5sZXQgc3RkZXJyID0gU3RkbGliLnN0ZGVyclxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5fb3V0X2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX291dFxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5fb3V0X2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IG9jID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX291dF9ub2VyciBvYylcbiAgICAoZnVuICgpIC0+IGYgb2MpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXRfYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dCBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gID0gXCJjYW1sX21sX291dHB1dF9iaWdhcnJheVwiXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBTdGRsaWIuZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBTdGRsaWIub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IFN0ZGxpYi5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBTdGRsaWIub3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3Vic3RyaW5nXG5sZXQgb3V0cHV0X2JpZ2FycmF5IG9jIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfYmlnYXJyYXlcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfYmlnYXJyYXkgb2MgYnVmIG9mcyBsZW5cblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogb3V0X2NoYW5uZWwgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZVwiXG5cbmV4dGVybmFsIHNldF9idWZmZXJlZCA6IHQgLT4gYm9vbCAtPiB1bml0ID0gXCJjYW1sX21sX3NldF9idWZmZXJlZFwiXG5cbmV4dGVybmFsIGlzX2J1ZmZlcmVkIDogdCAtPiBib29sID0gXCJjYW1sX21sX2lzX2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgaGV4X29mX3N0cmluZyBkID1cbiAgbGV0IGNoYXJfaGV4IG4gPVxuICAgIENoYXIuY2hyIChpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnICsgblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDaGFyLmNvZGUgJ2EnICsgbiAtIDEwKSBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBkIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDIpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IHN0cmluZ19vZl9oZXggcyA9XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgU3RyaW5nLmluaXQgKFN0cmluZy5sZW5ndGggcyAvIDIpIChmdW4gaSAtPiBDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSlcblxuKCogR2VuZXJpYyBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHQgPSBzdHJpbmdcbiAgdmFsIGhhc2hfbGVuZ3RoIDogaW50XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgLT4gdFxuICB2YWwgc3Vic3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgc3ViYnl0ZXMgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgdmFsIGNoYW5uZWwgOiBpbl9jaGFubmVsIC0+IGludCAtPiB0XG4gIHZhbCBmaWxlIDogc3RyaW5nIC0+IHRcbiAgdmFsIG91dHB1dCA6IG91dF9jaGFubmVsIC0+IHQgLT4gdW5pdFxuICB2YWwgaW5wdXQgOiBpbl9jaGFubmVsIC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9oZXggOiBzdHJpbmcgLT4gdFxuZW5kXG5cbigqIEJMQUtFMiBoYXNoaW5nLCBwYXJhbWV0ZXJpemVkIGJ5IGhhc2ggc2l6ZSAqKVxuXG5tb2R1bGUgQkxBS0UyIChYOiBzaWcgdmFsIGhhc2hfbGVuZ3RoIDogaW50IGVuZCkgOiBTID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID1cbiAgICBpZiBYLmhhc2hfbGVuZ3RoIDwgMSB8fCBYLmhhc2hfbGVuZ3RoID4gNjRcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LkJMQUtFMjogd3JvbmcgaGFzaCBzaXplXCI7XG4gICAgWC5oYXNoX2xlbmd0aFxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgdHlwZSBzdGF0ZVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9nZW46IGludCAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcImNhbWxfYmxha2UyX2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVwZGF0ZTogc3RhdGUgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9ibGFrZTJfdXBkYXRlXCJcbiAgZXh0ZXJuYWwgZmluYWw6IHN0YXRlIC0+IGludCAtPiB0ID0gXCJjYW1sX2JsYWtlMl9maW5hbFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IGludCAtPiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxha2UyX3N0cmluZ1wiXG5cbiAgbGV0IGNyZWF0ZSAoKSA9IGNyZWF0ZV9nZW4gaGFzaF9sZW5ndGggXCJcIlxuXG4gIGxldCBzdHJpbmcgc3RyID1cbiAgICB1bnNhZmVfc3RyaW5nIGhhc2hfbGVuZ3RoIFwiXCIgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4gIGxldCBieXRlcyBiID1cbiAgICBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxuICBsZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiO1xuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPVxuICAgIHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbiAgbGV0IGNoYW5uZWwgaWMgdG9yZWFkID1cbiAgICBsZXQgYnVmX3NpemUgPSA0MDk2IGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCBjdHggPSBjcmVhdGUgKCkgaW5cbiAgICBpZiB0b3JlYWQgPCAwIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCAoKSA9XG4gICAgICAgIGxldCBuID0gSW5fY2hhbm5lbC5pbnB1dCBpYyBidWYgMCBidWZfc2l6ZSBpblxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aFxuICAgICAgICBlbHNlICh1cGRhdGUgY3R4IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZikgMCBuOyBkb19yZWFkICgpKVxuICAgICAgaW4gZG9fcmVhZCAoKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGRvX3JlYWQgdG9yZWFkID1cbiAgICAgICAgaWYgdG9yZWFkID0gMCB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aCBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBJbl9jaGFubmVsLmlucHV0IGljIGJ1ZiAwIChJbnQubWluIGJ1Zl9zaXplIHRvcmVhZCkgaW5cbiAgICAgICAgICBpZiBuID0gMFxuICAgICAgICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICB1cGRhdGUgY3R4IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZikgMCBuO1xuICAgICAgICAgICAgZG9fcmVhZCAodG9yZWFkIC0gbilcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBpbiBkb19yZWFkIHRvcmVhZFxuICAgIGVuZFxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiBoYXNoX2xlbmd0aFxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IGhhc2hfbGVuZ3RoIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gaGFzaF9sZW5ndGggKiAyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Qub2ZfaGV4XCI7XG4gICAgc3RyaW5nX29mX2hleCBzXG5cbmVuZFxuXG5tb2R1bGUgQkxBS0UxMjggPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDE2IGVuZClcbm1vZHVsZSBCTEFLRTI1NiA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gMzIgZW5kKVxubW9kdWxlIEJMQUtFNTEyID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSA2NCBlbmQpXG5cbigqIE1ENSBoYXNoaW5nICopXG5cbm1vZHVsZSBNRDUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgaGFzaF9sZW5ndGggPSAxNlxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbiAgZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4gIGxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICAgIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxuKCogRGVmYXVsdCBleHBvcnRlZCBpbXBsZW1lbnRhdGlvbiBpcyBNRDUgKilcblxuaW5jbHVkZSBNRDVcblxubGV0IGZyb21faGV4ID0gb2ZfaGV4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MTZfZWx0ID0gRmxvYXQxNl9lbHRcbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbigqIEtlZXAgdGhlIG9yZGVyIG9mIHRoZXNlIGNvbnN0cnVjdG9ycyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZFxuICAgZW51bWVyYXRpb24gaW4gYmlnYXJyYXkuaCAqKVxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICB8IEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBGbG9hdDE2IDogKGZsb2F0LCBmbG9hdDE2X2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbmxldCBmbG9hdDE2ID0gRmxvYXQxNlxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQxNiAtPiAyXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ2FtYml1bSwgQ29sbGVnZSBkZSBGcmFuY2UgYW5kIElucmlhICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKilcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQ6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIG9wZW4gQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgZXh0ZXJuYWwgbmV4dDogdCAtPiAoaW50NjRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbHhtX25leHRcIiBcImNhbWxfbHhtX25leHRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPVxuICAgIEFycmF5MS5jcmVhdGUgSW50NjQgQ19sYXlvdXQgNFxuXG4gIGxldCBzZXQgcyBpMSBpMiBpMyBpNCA9XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAwIChJbnQ2NC5sb2dvciBpMSAxTCk7ICgqIG11c3QgYmUgb2RkICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAxIGkyO1xuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMiAoaWYgaTMgPD4gMEwgdGhlbiBpMyBlbHNlIDFMKTsgKCogbXVzdCBub3QgYmUgMCAqKVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMyAoaWYgaTQgPD4gMEwgdGhlbiBpNCBlbHNlIDJMKSAoKiBtdXN0IG5vdCBiZSAwICopXG5cbiAgbGV0IG1rIGkxIGkyIGkzIGk0ID1cbiAgICBsZXQgcyA9IGNyZWF0ZSAoKSBpblxuICAgIHNldCBzIGkxIGkyIGkzIGk0OyBzXG5cbiAgbGV0IHNlcmlhbGl6YXRpb25fcHJlZml4ID1cbiAgICBcImx4bTE6XCJcbiAgICAoKiBcImx4bVwiIGRlbm90ZXMgdGhlIGFsZ29yaXRobSBjdXJyZW50bHkgaW4gdXNlLCBhbmQgJzEnIGlzXG4gICAgICAgYSB2ZXJzaW9uIG51bWJlci4gV2Ugc2hvdWxkIHVwZGF0ZSB0aGlzIHByZWZpeCBpZiB3ZSBjaGFuZ2VcbiAgICAgICB0aGUgUmFuZG9tIGFsZ29yaXRobSBvciB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICBnZXQgYSBjbGVhbiBlcnJvciBpbnN0ZWFkIG9mIGJlbGlldmluZyB0aGF0IHRoZXkgZmFpdGhmdWxseVxuICAgICAgIHJlcHJvZHVjZSB0aGVpciBwcmV2aW91cyBzdGF0ZSBhbmQgaW4gZmFjdCBnZXQgYSBkaWZmZXJlbnRcbiAgICAgICBzdHJlYW0uXG5cbiAgICAgICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gY29uc3RyYWludCB0byBrZWVwIHRoZSBzYW1lXG4gICAgICAgXCI8bmFtZT48dmVyPjo8ZGF0YT5cIiBmb3JtYXQgb3IgbWVzc2FnZSBzaXplIGluIGZ1dHVyZSB2ZXJzaW9ucyxcbiAgICAgICB3ZSBjb3VsZCBjaGFuZ2UgdGhlIGZvcm1hdCBjb21wbGV0ZWx5IGlmIHdlIHdhbnRlZCBhcyBsb25nXG4gICAgICAgYXMgdGhlcmUgaXMgbm8gY29uZnVzaW9uIHBvc3NpYmxlIHdpdGggdGhlIHByZXZpb3VzIGZvcm1hdHMuICopXG5cbiAgbGV0IHNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiA9XG4gICAgU3RyaW5nLmxlbmd0aCBzZXJpYWxpemF0aW9uX3ByZWZpeFxuXG4gIGxldCB0b19iaW5hcnlfc3RyaW5nIHMgPVxuICAgIGxldCBwcmVmaXggPSBzZXJpYWxpemF0aW9uX3ByZWZpeCBpblxuICAgIGxldCBwcmVmbGVuID0gc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAocHJlZmxlbiArIDQgKiA4KSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHByZWZpeCAwIGJ1ZiAwIHByZWZsZW47XG4gICAgZm9yIGkgPSAwIHRvIDMgZG9cbiAgICAgIEJ5dGVzLnNldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyBpICogOCkgKEFycmF5MS5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcblxuICBsZXQgb2ZfYmluYXJ5X3N0cmluZyBidWYgPVxuICAgIGxldCBwcmVmaXggPSBzZXJpYWxpemF0aW9uX3ByZWZpeCBpblxuICAgIGxldCBwcmVmbGVuID0gc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBidWYgPD4gcHJlZmxlbiArIDQgKiA4XG4gICAgICAgfHwgbm90IChTdHJpbmcuc3RhcnRzX3dpdGggfnByZWZpeCBidWYpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiUmFuZG9tLlN0YXRlLm9mX2JpbmFyeV9zdHJpbmc6IGV4cGVjdGVkIGEgZm9ybWF0IFxcXG4gICAgICAgICAgY29tcGF0aWJsZSB3aXRoIE9DYW1sIFwiIF4gU3lzLm9jYW1sX3ZlcnNpb24pO1xuICAgIGxldCBpMSA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMCAqIDgpIGluXG4gICAgbGV0IGkyID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAxICogOCkgaW5cbiAgICBsZXQgaTMgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDIgKiA4KSBpblxuICAgIGxldCBpNCA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMyAqIDgpIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcblxuICBsZXQgYXNzaWduIChkc3Q6IHQpIChzcmM6IHQpID1cbiAgICBBcnJheTEuYmxpdCBzcmMgZHN0XG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHMnID0gY3JlYXRlKCkgaW4gYXNzaWduIHMnIHM7IHMnXG5cbiAgKCogVGhlIHNlZWQgaXMgYW4gYXJyYXkgb2YgaW50ZWdlcnMuICBJdCBjYW4gYmUganVzdCBvbmUgaW50ZWdlcixcbiAgICAgYnV0IGl0IGNhbiBhbHNvIGJlIDEyIG9yIG1vcmUgYnl0ZXMuICBUbyBoaWRlIHRoZSBkaWZmZXJlbmNlLFxuICAgICB3ZSBzZXJpYWxpemUgdGhlIGFycmF5IGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHRoZW4gaGFzaCB0aGVcbiAgICAgc2VxdWVuY2Ugd2l0aCBNRDUgKERpZ2VzdC5ieXRlcykuICBNRDUgZ2l2ZXMgb25seSAxMjggYml0cyB3aGlsZVxuICAgICB3ZSBuZWVkIDI1NiBiaXRzLCBzbyB3ZSBoYXNoIHR3aWNlIHdpdGggZGlmZmVyZW50IHN1ZmZpeGVzLiAqKVxuICBsZXQgcmVpbml0IHMgc2VlZCA9XG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGxldCBiID0gQnl0ZXMuY3JlYXRlIChuICogOCArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGIgKGkgKiA4KSAoSW50NjQub2ZfaW50IHNlZWQuKGkpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDEnO1xuICAgIGxldCBkMSA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDInO1xuICAgIGxldCBkMiA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgc2V0IHMgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSA4KVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgOClcblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcyA9IGNyZWF0ZSgpIGluIHJlaW5pdCBzIHNlZWQ7IHNcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPVxuICAgIG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gIGxldCBtaW5faW50MzEgPSAtMHg0MDAwXzAwMDBcbiAgICAgICgqID0gLTJ7XjMwfSwgd2hpY2ggaXMgW21pbl9pbnRdIGZvciAzMS1iaXQgaW50ZWdlcnMgKilcbiAgbGV0IG1heF9pbnQzMSA9IDB4M0ZGRl9GRkZGXG4gICAgICAoKiA9ICAye14zMH0tMSwgd2hpY2ggaXMgW21heF9pbnRdIGZvciAzMS1iaXQgaW50ZWdlcnMgKilcbiAgKCogYXZvaWQgaW50ZWdlciBsaXRlcmFscyBmb3IgdGhlc2UsIDMyLWJpdCBPQ2FtbCB3b3VsZCByZWplY3QgdGhlbTogKilcbiAgbGV0IG1pbl9pbnQzMiA9IC0oMSBsc2wgMzEpXG4gICAgICAoKiA9IC0weDgwMDBfMDAwMCBvbiBwbGF0Zm9ybXMgd2hlcmUgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKilcbiAgbGV0IG1heF9pbnQzMiA9ICgxIGxzbCAzMSkgLSAxXG4gICAgICAoKiA9ICAweDdGRkZfRkZGRiBvbiBwbGF0Zm9ybXMgd2hlcmUgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKilcblxuICAoKiBSZXR1cm4gMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAyXjMwICopXG4gIGxldCBiaXRzIHMgPVxuICAgIEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbbl0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAgW21hc2tdIG11c3QgYmUgb2YgdGhlIGZvcm0gWzJ7Xml9LTFdXG4gICAgIGFuZCBncmVhdGVyIG9yIGVxdWFsIHRvIFtuXS4gIExhcmdlciB2YWx1ZXMgb2YgW21hc2tdIG1ha2UgdGhlIGZ1bmN0aW9uXG4gICAgIHJ1biBmYXN0ZXIgKGZld2VyIHNhbXBsZXMgYXJlIHJlamVjdGVkKS4gIFNtYWxsZXIgdmFsdWVzIG9mIFttYXNrXVxuICAgICBhcmUgdXNhYmxlIG9uIGEgd2lkZXIgcmFuZ2Ugb2YgT0NhbWwgaW1wbGVtZW50YXRpb25zLiAgKilcbiAgbGV0IHJlYyBpbnRfYXV4IHMgbiBtYXNrID1cbiAgICAoKiBXZSBzdGFydCBieSBkcmF3aW5nIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgaW4gdGhlIFsgWzAsIG1hc2tdIF0gcmFuZ2UgKilcbiAgICBsZXQgciA9IEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIG1hc2sgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICAoKiBGb3IgdW5pZm9ybSBkaXN0cmlidXRpb24gb2YgdGhlIHJlc3VsdCBiZXR3ZWVuIDAgaW5jbHVkZWQgYW5kIFtuXVxuICAgICAqIGV4Y2x1ZGVkLCB0aGUgcmFuZG9tIG51bWJlciBbcl0gbXVzdCBoYXZlIGJlZW4gZHJhd24gdW5pZm9ybWx5IGluXG4gICAgICogYW4gaW50ZXJ2YWwgd2hvc2UgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgW25dLiBUbyBhY2hpZXZlIHRoaXMsXG4gICAgICogd2UgdXNlIHJlamVjdGlvbiBzYW1wbGluZyBvbiB0aGUgZ3JlYXRlc3QgaW50ZXJ2YWwgWyBbMCwgaypuLTFdIF1cbiAgICAgKiB0aGF0IGZpdHMgaW4gWyBbMCwgbWFza10gXS4gIFRoYXQgaXMsIHdlIHJlamVjdCB0aGVcbiAgICAgKiBzYW1wbGUgaWYgaXQgZmFsbHMgb3V0c2lkZSBvZiB0aGlzIGludGVydmFsLCBhbmQgZHJhdyBhZ2Fpbi5cbiAgICAgKiBUaGlzIGlzIHdoYXQgdGhlIHRlc3QgYmVsb3cgZG9lcywgd2hpbGUgY2FyZWZ1bHkgYXZvaWRpbmdcbiAgICAgKiBvdmVyZmxvd3MgYW5kIHNwYXJpbmcgYSBkaXZpc2lvbiBbbWFzayAvIG5dLiAqKVxuICAgIGlmIHIgLSB2ID4gbWFzayAtIG4gKyAxIHRoZW4gaW50X2F1eCBzIG4gbWFzayBlbHNlIHZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBUaGUgYm91bmQgbXVzdCBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycy5cbiAgICAgVGhpcyBmdW5jdGlvbiB5aWVsZHMgdGhlIHNhbWUgb3V0cHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVnZXIgc2l6ZS4gKilcbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IG1heF9pbnQzMSB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50X2F1eCBzIGJvdW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgICgqIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHRoZSBzYW1lIG1hc2tcbiAgICAgICBhcyBpbiBmdW5jdGlvbiBbaW50XSBzbyBhcyB0byB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgIHN1cHBvcnRlZCBieSBPQ2FtbCAoMzItYml0IE9DYW1sLCA2NC1iaXQgT0NhbWwsIGFuZCBKYXZhU2NyaXB0KS5cbiAgICAgICBXaGVuIHRoZSBib3VuZCBmaXRzIGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBbbWF4X2ludDMyXVxuICAgICAgIGFzIHRoZSBtYXNrIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zIHdoZXJlXG4gICAgICAgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKGkuZS4gSmF2YVNjcmlwdCBhbmQgNjQtYml0IE9DYW1sKS4gKilcbiAgICBlbHNlXG4gICAgICBpbnRfYXV4IHMgYm91bmRcbiAgICAgICAgKGlmIGJvdW5kIDw9IG1heF9pbnQzMSB0aGVuIG1heF9pbnQzMVxuICAgICAgICAgZWxzZSBpZiBib3VuZCA8PSBtYXhfaW50MzIgdGhlbiBtYXhfaW50MzJcbiAgICAgICAgIGVsc2UgbWF4X2ludClcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFRoZSBbbmJpdHNdIHBhcmFtZXRlciBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBzaWduZWQgaW50ZWdlcnNcbiAgICAgd2UgZHJhdyBmcm9tIFtzXS5cbiAgICAgV2UgbXVzdCBoYXZlIFstMntebmJpdHMgLSAxfSA8PSBtaW4gPD0gbWF4IDwgMntebmJpdHMgLSAxfV0uXG4gICAgIE1vcmVvdmVyLCBmb3IgdGhlIGl0ZXJhdGlvbiB0byBjb252ZXJnZSBxdWlja2x5LCB0aGUgaW50ZXJ2YWxcbiAgICAgW1ttaW4sIG1heF1dIHNob3VsZCBoYXZlIHdpZHRoIGF0IGxlYXN0IFsye15uYml0cyAtIDF9XS5cbiAgICAgQXMgdGhlIHdpZHRoIGFwcHJvYWNoZXMgdGhpcyBsb3dlciBsaW1pdCwgdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mXG4gICAgIGRyYXdzIGFwcHJvYWNoZXMgMiwgd2l0aCBhIHF1aXRlIGhpZ2ggc3RhbmRhcmQgZGV2aWF0aW9uICgyICsgZXBzaWxvbikuICopXG4gIGxldCByZWMgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyA9XG4gICAgbGV0IGRyb3AgPSBTeXMuaW50X3NpemUgLSBuYml0cyBpblxuICAgICgqIFRoZSBiaXRzaGlmdHMgcmVwbGljYXRlIHRoZSBbbmJpdHNdLXRoIGJpdCAoc2lnbiBiaXQpIHRvIGhpZ2hlciBiaXRzOiAqKVxuICAgIGxldCByID0gKChJbnQ2NC50b19pbnQgKG5leHQgcykpIGxzbCBkcm9wKSBhc3IgZHJvcCBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHMgZWxzZSByXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBbbWFza10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2F1eF0uXG4gICAgIFtuYml0c10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2luX2xhcmdlX3JhbmdlXS4gKilcbiAgbGV0IGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2sgfm5iaXRzID1cbiAgICBsZXQgc3BhbiA9IG1heCAtIG1pbiArIDEgaW5cbiAgICBpZiBzcGFuIDw9IG1hc2sgKCogW3NwYW5dIGlzIHNtYWxsIGVub3VnaCAqKVxuICAgICYmIHNwYW4gPiAwICAgICAoKiBubyBvdmVyZmxvdyBvY2N1cnJlZCB3aGVuIGNvbXB1dGluZyBbc3Bhbl0gKilcbiAgICB0aGVuXG4gICAgICAoKiBKdXN0IGRyYXcgYSBudW1iZXIgaW4gW1swLCBzcGFuKV0gYW5kIHNoaWZ0IGl0IGJ5IFttaW5dLiAqKVxuICAgICAgbWluICsgaW50X2F1eCBzIHNwYW4gbWFza1xuICAgIGVsc2VcbiAgICAgICgqIFNwYW4gdG9vIGxhcmdlLCB1c2UgdGhlIGFsdGVybmF0aXZlIGRyYXdpbmcgbWV0aG9kLiAqKVxuICAgICAgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0c1xuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IGludF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludF9pbl9yYW5nZVwiO1xuICAgICgqIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMS1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IE9DYW1sLlxuICAgICAgIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMi1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIEphdmFTY3JpcHQgYW5kIG9uIDY0LWJpdCBPQ2FtbC4gKilcbiAgICBpZiBtaW4gPj0gbWluX2ludDMxICYmIG1heCA8PSBtYXhfaW50MzEgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzEgfm5iaXRzOjMxXG4gICAgZWxzZSBpZiBtaW4gPj0gbWluX2ludDMyICYmIG1heCA8PSBtYXhfaW50MzIgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzIgfm5iaXRzOjMyXG4gICAgZWxzZVxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50IH5uYml0czpTeXMuaW50X3NpemVcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IEludDY0LnRvX2ludDMyIChuZXh0IHMpIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQzMl9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyX2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDMyLnN1Y2MgKEludDMyLnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDMyLnplcm8gdGhlblxuICAgICAgICBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50MzIuYWRkIG1pbiAoaW50MzJhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IG5leHQgcyBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCBlbHNlIHJcblxuICBsZXQgaW50NjRfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NF9pbl9yYW5nZVwiXG4gICAgZWxzZVxuICAgICAgbGV0IHNwYW4gPSBJbnQ2NC5zdWNjIChJbnQ2NC5zdWIgbWF4IG1pbikgaW5cbiAgICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9pbl9yYW5nZV9hdXhdLiAqKVxuICAgICAgaWYgc3BhbiA8PSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgICAgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4XG4gICAgICBlbHNlXG4gICAgICAgIEludDY0LmFkZCBtaW4gKGludDY0YXV4IHMgc3BhbilcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludF9pbl9yYW5nZSA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgfm1pbiB+bWF4IC0+XG4gICAgICBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyX2luX3JhbmdlIHNcbiAgICAgICAgfm1pbjooTmF0aXZlaW50LnRvX2ludDMyIG1pbikgfm1heDooTmF0aXZlaW50LnRvX2ludDMyIG1heCkpXG4gICAgZWxzZSBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIEludDY0LnRvX25hdGl2ZWludCAoaW50NjRfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihJbnQ2NC5vZl9uYXRpdmVpbnQgbWluKSB+bWF4OihJbnQ2NC5vZl9uYXRpdmVpbnQgbWF4KSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMl9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQzMl9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5uYXRpdmVpbnRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50NjRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIHRoZSBsb2FkIGZhY3RvciBiZWNvbWVzIHRvbyBoaWdoLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSBBdG9taWMubWFrZSByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IEF0b21pYy5zZXQgcmFuZG9taXplZCB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9IEF0b21pYy5nZXQgcmFuZG9taXplZFxuXG5sZXQgcHJuZ19rZXkgPSBEb21haW4uRExTLm5ld19rZXkgUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0XG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSkgZWxzZSAwXG4gIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IGtleSBuZXh0XG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIG1lbV9pbl9idWNrZXQga2V5IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgcmVjIG1lbV9pbl9idWNrZXQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBrZXkgbmV4dFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbWVtX2luX2J1Y2tldCBrZXkgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyXG4gKiAgICAtIExpbmtcbiAqICAgIC0gRGF0YSAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMiAoKiBDQU1MX0VQSEVfRklSU1RfS0VZIGluIHdlYWsuaCAqKVxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhY2MgLT4gJ2FjYykgLT4gdCAtPiAnYWNjIC0+ICdhY2NcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cbiAgKCogR2VuZXJhbCBhdXhpbGlhcnkgZnVuY3Rpb24gZm9yIHNlYXJjaGluZyBmb3IgYSBwYXJ0aWN1bGFyIHZhbHVlXG4gICAqIGluIGEgaGFzaC1zZXQsIGFuZCBhY3RpbmcgYWNjb3JkaW5nIHRvIHdoZXRoZXIgb3Igbm90IGl0J3MgZm91bmQgKilcblxuICBsZXQgZmluZF9hdXggdCBkIGZvdW5kIG5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IGFzIG9wdCB3aGVuIEguZXF1YWwgdiBkIC0+IGZvdW5kIGJ1Y2tldCBpIG9wdCB2XG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pICBvIF92IC0+IG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiBOb25lKVxuXG4gIGxldCBtZXJnZSB0IGQgICAgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSBfbyAgdiAtPiB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gIGggIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaTsgZClcblxuICBsZXQgZmluZCB0IGQgICAgID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgX28gIHYgLT4gdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgcmVtb3ZlIHQgZCAgID0gZmluZF9hdXggdCBkIChmdW4gIGIgIGkgX28gX3YgLT4gc2V0IGIgaSBOb25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gKCkpXG5cbiAgbGV0IG1lbSB0IGQgICAgICA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pIF9vIF92IC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiBmYWxzZSlcblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV9zdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZSA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgZW5kX3dpdGhfbmV3bGluZSB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxubGV0IHBwX3ByaW50X25vdGhpbmcgX3N0YXRlICgpID0gKClcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmU6dHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZTpmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIGlmIG1hcmdpbiA+PSBwcF9pbmZpbml0eSB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPj0gcHBfaW5maW5pdHlcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG4oKiBJbml0aWFsaXNlIGRvbWFpbiBsb2NhbCBzdGF0ZSAqKVxubW9kdWxlIERMUyA9IERvbWFpbi5ETFNcblxubGV0IHN0ZGJ1Zl9rZXkgPSBETFMubmV3X2tleSBwcF9tYWtlX2J1ZmZlclxubGV0IF8gPSBETFMuc2V0IHN0ZGJ1Zl9rZXkgc3RkYnVmXG5cbmxldCBzdHJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgZm9ybWF0dGVyX29mX2J1ZmZlciAoRExTLmdldCBzdGRidWZfa2V5KSlcbmxldCBfID0gRExTLnNldCBzdHJfZm9ybWF0dGVyX2tleSBzdHJfZm9ybWF0dGVyXG5cbmxldCBidWZmZXJlZF9vdXRfc3RyaW5nIGtleSBzdHIgb2ZzIGxlbiA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIChEb21haW4uRExTLmdldCBrZXkpIHN0ciBvZnMgbGVuXG5cbmxldCBidWZmZXJlZF9vdXRfZmx1c2ggb2Mga2V5ICgpID1cbiAgbGV0IGJ1ZiA9IERvbWFpbi5ETFMuZ2V0IGtleSBpblxuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHIgMCBsZW4gO1xuICBTdGRsaWIuZmx1c2ggb2M7XG4gIEJ1ZmZlci5jbGVhciBidWZcblxubGV0IHN0ZF9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcbmxldCBlcnJfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5cbmxldCBzdGRfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBzdGRfZm9ybWF0dGVyX2tleSBzdGRfZm9ybWF0dGVyXG5cbmxldCBlcnJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBlcnJfZm9ybWF0dGVyX2tleSBlcnJfZm9ybWF0dGVyXG5cbmxldCBnZXRfc3RkX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfZXJyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RkYnVmICgpID0gRExTLmdldCBzdGRidWZfa2V5XG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgfmVuZF93aXRoX25ld2xpbmU6ZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID1cbiAgbGV0IHN0ZGJ1ZiA9IERMUy5nZXQgc3RkYnVmX2tleSBpblxuICBsZXQgc3RyX2Zvcm1hdHRlciA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXkgaW5cbiAgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG5sZXQgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBvdXRwdXQnID0gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGluXG4gICAgbGV0IGZsdXNoJyAoKSA9XG4gICAgICBvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBidWYpIDAgKEJ1ZmZlci5sZW5ndGggYnVmKTtcbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBmbHVzaCAoKVxuICAgIGluXG4gICAgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0JyBmbHVzaCcpXG5cbmxldCBzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggdiA9IHBwX29wZW5faGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fdmJveCB2ID0gcHBfb3Blbl92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9odmJveCB2ID0gcHBfb3Blbl9odmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faG92Ym94IHYgPSBwcF9vcGVuX2hvdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fYm94IHYgPSBwcF9vcGVuX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX2JveCB2ID0gcHBfY2xvc2VfYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9zdGFnIHYgPSBwcF9vcGVuX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9zdGFnIHYgPSBwcF9jbG9zZV9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYXMgdiB3ID0gcHBfcHJpbnRfYXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X3N0cmluZyB2ID0gcHBfcHJpbnRfc3RyaW5nIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxubGV0IHBwX3ByaW50X2l0ZXIgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIGl0ZXIgcHBfdiBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF92IHYgPVxuICAgIGlmICFpc19maXJzdCB0aGVuIGlzX2ZpcnN0IDo9IGZhbHNlIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2XG4gIGluXG4gIGl0ZXIgcHBfdiB2XG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIExpc3QuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhbiBhcnJheSAqKVxubGV0IHBwX3ByaW50X2FycmF5ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIEFycmF5Lml0ZXIgcHBfdiBwcGYgdlxuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIFNlcS5pdGVyIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2Vfc3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5cbmxldCBwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZXByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG5sZXQgKCkgPSBEb21haW4uYmVmb3JlX2ZpcnN0X3NwYXduIChmdW4gKCkgLT5cbiAgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKTtcbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleX07XG5cbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleX07XG4pXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGluXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lcl9vcHQgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2Qgb3B0aW9uLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbmxldCBrc2NhbmZfZ2VuIGliIGVmIGFmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlIGFzIGV4YykgLT5cbiAgICAgICAgZWYgaWIgZXhjXG4gICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB8IGFyZ3MgLT5cbiAgICAgICAgYWYgKGFwcGx5IGYgYXJncylcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG5sZXQga3NjYW5mIGliIGVmIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgZWYgKGZ1biB4IC0+IHgpIGZtdFxuXG5sZXQga3NjYW5mX29wdCBpYiBmbXQgPVxuICBrc2NhbmZfZ2VuIGliIChmdW4gXyBfIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBic2NhbmZfb3B0IGliIGZtdCA9IGtzY2FuZl9vcHQgaWIgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IHNzY2FuZl9vcHQgcyBmbXQgPSBrc2NhbmZfb3B0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpbiBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc2NhbmZfb3B0IGZtdCA9IGtzY2FuZl9vcHQgU2Nhbm5pbmcuc3RkaW4gZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAoT2JqLm1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgT2JqLm1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIE9iai5tYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIE9iai5tYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIE9iai5tYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBPYmoubWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IE9iai5tYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgT2JqLm1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgT2JqLnJlcHIgaW5pdCB8XTtcbiAgICAgT2JqLm1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gT2JqLnJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBPYmoubWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IE9iai5tYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBPYmoubWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiA/cmFuZG9tICgqdGh3YXJ0IHRvb2xzL3N5bmNfc3RkbGliX2RvY3MqKSA6IGJvb2wgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleSBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleSBlcGgga2V5O1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5ID1cbiAgICBtYXRjaCBnZXRfa2V5IGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5IC0+IGdldF9kYXRhIGVwaFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCA9IEguc2VlZGVkX2hhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMV9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0gazFfbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleSBrIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleSBlIHdpdGhcbiAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleSBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXkgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5MSBrZXkyIGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5MSBlcGgga2V5MTtcbiAgICBzZXRfa2V5MiBlcGgga2V5MjtcbiAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkga2V5MSk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkxIGtleTIgPVxuICAgIG1hdGNoIGdldF9rZXkxIGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBnZXRfa2V5MiBlcGggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MiAtPiBnZXRfZGF0YSBlcGhcbiAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLnNlZWRlZF9oYXNoIHNlZWQgazEgKyBIMi5zZWVkZWRfaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnazEsICdrMiwgJ2QpIHQgPSAoJ2sxLCAnazIsICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsyX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgazEgazIgZCA9IGIgOj0gazJfbWFrZSBrMSBrMiBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsxIGsyIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleTEgZSwgZ2V0X2tleTIgZSB3aXRoXG4gICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgd2hlbiB4MSA9PSBrMSAmJiB4MiA9PSBrMiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrMSBrMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrMSBrMiBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrMSBrMiA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgazEgazIpICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5cyBkYXRhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBrZXlzIGluXG4gICAgbGV0IGVwaCA9IGNyZWF0ZSBsIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHNldF9rZXkgZXBoIGkga2V5cy4oaSkgZG9uZTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleXMgPVxuICAgIGxldCBsID0gbGVuZ3RoIGVwaCBpblxuICAgIHRyeVxuICAgICAgaWYgbCA8PiBBcnJheS5sZW5ndGgga2V5cyB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBlcGggaSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSBFeGl0XG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXlzLihpKSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgZ2V0X2RhdGEgZXBoXG4gICAgd2l0aCBFeGl0IC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguc2VlZGVkX2hhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQga25fbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGtuX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsgZSA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgbGVuZ3RoIGUgPD4gQXJyYXkubGVuZ3RoIGsgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGsgLSAxIGRvXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBlIGkgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrLihpKSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggRXhpdCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmV4aXN0cyAoZnVuY3Rpb24gJ1xcXCInIHwgJyUnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBmIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXCJcXFwiXCI7IGY7IFwiXFxcIlwiXVxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBpZiBjaGVja19zdWZmaXggbmFtZSBzdWZmXG4gIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCJcblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmFuZG9tX3N0YXRlID0gRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkgaW5cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyByYW5kb21fc3RhdGUpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPVxuICBEb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50OkZ1bi5pZCAoZnVuICgpIC0+IHRlbXBfZGlyX25hbWUpXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gRG9tYWluLkRMUy5zZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lIHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IG9wZW5fdGVtcF9maWxlID8obW9kZSA9IFtPcGVuX3RleHRdKSA/KHBlcm1zID0gMG82MDApXG4gICAgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSlcbiAgICBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIChuYW1lLFxuICAgICAgIG9wZW5fb3V0X2dlbiAoT3Blbl93cm9ubHk6Ok9wZW5fY3JlYXQ6Ok9wZW5fZXhjbDo6bW9kZSkgcGVybXMgbmFtZSlcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMjAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCB0ZW1wX2RpciA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgID8ocGVybXMgPSAwbzcwMCkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBTeXMubWtkaXIgbmFtZSBwZXJtcztcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMjAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID0gRmxvYXQuaHlwb3QgeC5yZSB4LmltXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IC4uXG5leHRlcm5hbCBwZXJmb3JtIDogJ2EgdCAtPiAnYSA9IFwiJXBlcmZvcm1cIlxuXG50eXBlIGV4biArPSBVbmhhbmRsZWQ6ICdhIHQgLT4gZXhuXG5leGNlcHRpb24gQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG5sZXQgKCkgPVxuICBsZXQgcHJpbnRlciA9IGZ1bmN0aW9uXG4gICAgfCBVbmhhbmRsZWQgeCAtPlxuICAgICAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCJTdGRsaWIuRWZmZWN0LlVuaGFuZGxlZCglcylcIlxuICAgICAgICAgICAgKFByaW50ZXhjLnN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgQEAgT2JqLnJlcHIgeClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSBtc2dcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIHByaW50ZXJcblxuKCogUmVnaXN0ZXIgdGhlIGV4Y2VwdGlvbnMgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gYWNjZXNzIGl0ICopXG50eXBlIF8gdCArPSBTaG91bGRfbm90X3NlZV90aGlzX18gOiB1bml0IHRcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LlVuaGFuZGxlZFwiXG4gICAgICAgICAgKFVuaGFuZGxlZCBTaG91bGRfbm90X3NlZV90aGlzX18pXG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCJcbiAgICAgICAgICBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbnR5cGUgKCdhLCAnYikgc3RhY2sgW0BAaW1tZWRpYXRlXVxudHlwZSBsYXN0X2ZpYmVyIFtAQGltbWVkaWF0ZV1cblxuZXh0ZXJuYWwgcmVzdW1lIDpcbiAgKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVzdW1lXCJcbmV4dGVybmFsIHJ1bnN0YWNrIDogKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiAnYiA9IFwiJXJ1bnN0YWNrXCJcblxubW9kdWxlIERlZXAgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG5cbiAgZXh0ZXJuYWwgdGFrZV9jb250X25vZXhjIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+ICgnYSwgJ2IpIHN0YWNrID1cbiAgICBcImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1wiIFtAQG5vYWxsb2NdXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG4gIGV4dGVybmFsIGNvbnRfbGFzdF9maWJlciA6ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyID0gXCIlZmllbGQxXCJcbiAgZXh0ZXJuYWwgY29udF9zZXRfbGFzdF9maWJlciA6XG4gICAgKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gdW5pdCA9IFwiJXNldGZpZWxkMVwiXG5cbiAgbGV0IGNvbnRpbnVlIGsgdiA9XG4gICAgcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biB4IC0+IHgpIHYgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIGxldCBkaXNjb250aW51ZSBrIGUgPVxuICAgIHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiByYWlzZSBlKSBlIChjb250X2xhc3RfZmliZXIgaylcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayBlIGJ0ID1cbiAgICByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidClcbiAgICAgIGUgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgbWF0Y2hfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICBjb250X3NldF9sYXN0X2ZpYmVyIGsgbGFzdF9maWJlcjtcbiAgICAgICAgICBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgdHlwZSAnYSBlZmZlY3RfaGFuZGxlciA9XG4gICAgeyBlZmZjOiAnYi4gJ2IgdCAtPiAoKCdiLCdhKSBjb250aW51YXRpb24gLT4gJ2EpIG9wdGlvbiB9XG5cbiAgbGV0IHRyeV93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjJyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICBjb250X3NldF9sYXN0X2ZpYmVyIGsgbGFzdF9maWJlcjtcbiAgICAgICAgICBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayAoZnVuIHggLT4geCkgKGZ1biBlIC0+IHJhaXNlIGUpIGVmZmMnIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIGV4dGVybmFsIGdldF9jYWxsc3RhY2sgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+IGludCAtPiBQcmludGV4Yy5yYXdfYmFja3RyYWNlID1cbiAgICBcImNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcIlxuZW5kXG5cbm1vZHVsZSBTaGFsbG93ID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG5cbiAgZXh0ZXJuYWwgY29udF9sYXN0X2ZpYmVyIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgPSBcIiVmaWVsZDFcIlxuICBleHRlcm5hbCBjb250X3NldF9sYXN0X2ZpYmVyIDpcbiAgICAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiB1bml0ID0gXCIlc2V0ZmllbGQxXCJcblxuICBsZXQgZmliZXIgOiB0eXBlIGEgYi4gKGEgLT4gYikgLT4gKGEsIGIpIGNvbnRpbnVhdGlvbiA9IGZ1biBmIC0+XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0IHR5cGUgXyB0ICs9IEluaXRpYWxfc2V0dXBfXyA6IGEgdCBlbmQgaW5cbiAgICBsZXQgZXhjZXB0aW9uIEUgb2YgKGEsYikgY29udGludWF0aW9uIGluXG4gICAgbGV0IGYnICgpID0gZiAocGVyZm9ybSBNLkluaXRpYWxfc2V0dXBfXykgaW5cbiAgICBsZXQgZXJyb3IgXyA9IGZhaWx3aXRoIFwiaW1wb3NzaWJsZVwiIGluXG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBlZmYgd2l0aFxuICAgICAgfCBNLkluaXRpYWxfc2V0dXBfXyAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIHJhaXNlX25vdHJhY2UgKEUgaylcbiAgICAgIHwgXyAtPiBlcnJvciAoKVxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBlcnJvciBlcnJvciBlZmZjIGluXG4gICAgbWF0Y2ggcnVuc3RhY2sgcyBmJyAoKSB3aXRoXG4gICAgfCBleGNlcHRpb24gRSBrIC0+IGtcbiAgICB8IF8gLT4gZXJyb3IgKClcblxuICB0eXBlICgnYSwnYikgaGFuZGxlciA9XG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIHQgLT4gKCgnYywnYSkgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG4gIGV4dGVybmFsIHVwZGF0ZV9oYW5kbGVyIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPlxuICAgICgnYiAtPiAnYykgLT5cbiAgICAoZXhuIC0+ICdjKSAtPlxuICAgICgnZCB0IC0+ICgnZCwnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MpIC0+XG4gICAgKCdhLCdjKSBzdGFjayA9IFwiY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1wiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdjID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgY29udGludWVfZ2VuIGsgcmVzdW1lX2Z1biB2IGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgbGFzdF9maWJlciA9IGNvbnRfbGFzdF9maWJlciBrIGluXG4gICAgbGV0IHN0YWNrID0gdXBkYXRlX2hhbmRsZXIgayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICByZXN1bWUgc3RhY2sgcmVzdW1lX2Z1biB2IGxhc3RfZmliZXJcblxuICBsZXQgY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biB4IC0+IHgpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gcmFpc2UgZSkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgdiBidCBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgdiBoYW5kbGVyXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCogYmxpdF9zdHJpbmcgZG9lc24ndCBleGlzdCBpbiBbU3RkTGFiZWxzLkJ5dGVzXS4uLiAgKilcbmxldCBieXRlc19ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIEJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuOztcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gRm9ybWF0XG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuXG5sZXQgc2V4cF9vZl90IHQgPSB0XG5sZXQgdF9vZl9zZXhwIHQgPSB0XG5cbmxldCByZWMgY29tcGFyZV9saXN0IGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCByZXMgPSBjb21wYXJlIHggeSBpblxuICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IHhzIHlzXG5cbmFuZCBjb21wYXJlIGEgYiA9XG4gIGlmIGEgPT0gYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBdG9tIGEsIEF0b20gYiAtPiBTdHJpbmcuY29tcGFyZSBhIGJcbiAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICB8IExpc3QgYSwgTGlzdCBiIC0+IGNvbXBhcmVfbGlzdCBhIGIpXG47O1xuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyBvZiB0XG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiB0XG5cbm1vZHVsZSBQcmludGluZyA9IHN0cnVjdFxuICAoKiBEZWZhdWx0IGluZGVudGF0aW9uIGxldmVsIGZvciBodW1hbi1yZWFkYWJsZSBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCBkZWZhdWx0X2luZGVudCA9IHJlZiAxXG5cbiAgKCogRXNjYXBpbmcgb2Ygc3RyaW5ncyB1c2VkIGFzIGF0b21zIGluIFMtZXhwcmVzc2lvbnMgKilcblxuICBsZXQgbXVzdF9lc2NhcGUgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZW4gPSAwXG4gICAgfHxcbiAgICBsZXQgcmVjIGxvb3Agc3RyIGl4ID1cbiAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgIHwgJ1wiJyB8ICcoJyB8ICcpJyB8ICc7JyB8ICdcXFxcJyAtPiB0cnVlXG4gICAgICB8ICd8JyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICcjJyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICcjJyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICd8JyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICdcXDAwMCcgLi4gJ1xcMDMyJyB8ICdcXDEyNycgLi4gJ1xcMjU1JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gaXggPiAwICYmIGxvb3Agc3RyIChpeCAtIDEpXG4gICAgaW5cbiAgICBsb29wIHN0ciAobGVuIC0gMSlcbiAgOztcblxuICBsZXQgZXNjYXBlZCBzID1cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG5cbiAgICAgIDo9ICFuXG4gICAgICAgICArXG4gICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgICAgfCBfIC0+IDRcbiAgICBkb25lO1xuICAgIGlmICFuID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcycgPSBCeXRlcy5jcmVhdGUgIW4gaW5cbiAgICAgIG4gOj0gMDtcbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgICAgfCAnICcgLi4gJ34nIGFzIGMgLT4gQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgbGV0IGEgPSBDaGFyLmNvZGUgYyBpblxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwIG1vZCAxMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSBtb2QgMTApKSkpO1xuICAgICAgICBpbmNyIG5cbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMnKVxuICA7O1xuXG4gIGxldCBlc2Nfc3RyIHN0ciA9XG4gICAgbGV0IGVzdHIgPSBlc2NhcGVkIHN0ciBpblxuICAgIGxldCBlbGVuID0gU3RyaW5nLmxlbmd0aCBlc3RyIGluXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAoZWxlbiArIDIpIGluXG4gICAgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYzplc3RyIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MSB+bGVuOmVsZW47XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgMCAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIChlbGVuICsgMSkgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICA7O1xuXG4gIGxldCBpbmRleF9vZl9uZXdsaW5lIHN0ciBzdGFydCA9IFN0cmluZy5pbmRleF9mcm9tX29wdCBzdHIgc3RhcnQgJ1xcbidcblxuICBsZXQgZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggZW5kX3Bvc19vcHQgPVxuICAgIGxldCBlbmRfcG9zID1cbiAgICAgIG1hdGNoIGVuZF9wb3Nfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgfCBTb21lIGVuZF9wb3MgLT4gZW5kX3Bvc1xuICAgIGluXG4gICAgU3RyaW5nLnN1YiBzdHIgfnBvczppbmRleCB+bGVuOihlbmRfcG9zIC0gaW5kZXgpXG4gIDs7XG5cbiAgbGV0IGlzX29uZV9saW5lIHN0ciA9XG4gICAgbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgaW5kZXggLT4gaW5kZXggKyAxID0gU3RyaW5nLmxlbmd0aCBzdHJcbiAgOztcblxuICBsZXQgcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0ciA9XG4gICAgaWYgbm90IChtdXN0X2VzY2FwZSBzdHIpXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIHN0clxuICAgIGVsc2UgaWYgaXNfb25lX2xpbmUgc3RyXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIChlc2Nfc3RyIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpbmRleCA9XG4gICAgICAgIGxldCBuZXh0X25ld2xpbmUgPSBpbmRleF9vZl9uZXdsaW5lIHN0ciBpbmRleCBpblxuICAgICAgICBsZXQgbmV4dF9saW5lID0gZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggbmV4dF9uZXdsaW5lIGluXG4gICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY2FwZWQgbmV4dF9saW5lKTtcbiAgICAgICAgbWF0Y2ggbmV4dF9uZXdsaW5lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBuZXdsaW5lX2luZGV4IC0+XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxcIjtcbiAgICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXG5cIjtcbiAgICAgICAgICBsb29wIChuZXdsaW5lX2luZGV4ICsgMSlcbiAgICAgIGluXG4gICAgICBwcF9vcGVuX2JveCBwcGYgMDtcbiAgICAgICgqIHRoZSBsZWFkaW5nIHNwYWNlIGlzIHRvIGxpbmUgdXAgdGhlIGxpbmVzICopXG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFxcXCJcIjtcbiAgICAgIGxvb3AgMDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFwiXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpKVxuICA7O1xuXG4gIGxldCBtYWNoX21heWJlX2VzY19zdHIgc3RyID0gaWYgbXVzdF9lc2NhcGUgc3RyIHRoZW4gZXNjX3N0ciBzdHIgZWxzZSBzdHJcblxuICAoKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmb3JtYXR0ZXJzICopXG5cbiAgbGV0IHJlYyBwcF9odW1faW5kZW50IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0clxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfb3Blbl9ib3ggcHBmIGluZGVudDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgTGlzdCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIlxuXG4gIGFuZCBwcF9odW1fcmVzdCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgcHBfcHJpbnRfc3BhY2UgcHBmICgpO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKVxuICA7O1xuXG4gIGxldCByZWMgcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFwiO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHInO1xuICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0O1xuICAgICAgZmFsc2VcbiAgICB8IExpc3QgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiO1xuICAgICAgZmFsc2VcblxuICBhbmQgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdFxuICAgIHwgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIlxuICA7O1xuXG4gIGxldCBwcF9odW0gcHBmIHNleHAgPSBwcF9odW1faW5kZW50ICFkZWZhdWx0X2luZGVudCBwcGYgc2V4cFxuICBsZXQgcHBfbWFjaCBwcGYgc2V4cCA9IGlnbm9yZSAocHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgc2V4cClcbiAgbGV0IHBwID0gcHBfbWFjaFxuXG4gICgqIFNleHAgc2l6ZSAqKVxuXG4gIGxldCByZWMgc2l6ZV9sb29wICgodiwgYykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiB2ICsgMSwgYyArIFN0cmluZy5sZW5ndGggc3RyXG4gICAgfCBMaXN0IGxzdCAtPiBMaXN0LmZvbGRfbGVmdCBsc3QgfmluaXQ6YWNjIH5mOnNpemVfbG9vcFxuICA7O1xuXG4gIGxldCBzaXplIHNleHAgPSBzaXplX2xvb3AgKDAsIDApIHNleHBcblxuICAoKiBCdWZmZXIgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fYnVmZmVyX2h1bSB+YnVmID8oaW5kZW50ID0gIWRlZmF1bHRfaW5kZW50KSBzZXhwID1cbiAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFAP1wiIChwcF9odW1faW5kZW50IGluZGVudCkgc2V4cFxuICA7O1xuXG4gIGxldCB0b19idWZmZXJfbWFjaCB+YnVmIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gIGxldCB0b19idWZmZXIgPSB0b19idWZmZXJfbWFjaFxuXG4gIGxldCB0b19idWZmZXJfZ2VuIH5idWYgfmFkZF9jaGFyIH5hZGRfc3RyaW5nIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBhZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICAoKiBUaGUgbWF4aW11bSBzaXplIG9mIGEgdGhpbmcgb24gdGhlIG1pbm9yIGhlYXAgaXMgMjU2IHdvcmRzLlxuICAgICBQcmV2aW91c2x5LCB0aGlzIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlciBoZXJlIHdhcyA0MDk2IGJ5dGVzLCB3aGljaFxuICAgICBjYXVzZWQgdGhlIEJ1ZmZlciB0byBiZSBhbGxvY2F0ZWQgb24gdGhlICptYWpvciogaGVhcCBldmVyeSB0aW1lLlxuXG4gICAgIEFjY29yZGluZyB0byBhIHNpbXBsZSBiZW5jaG1hcmsgYnkgUm9uLCB3ZSBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3JcbiAgICAgc21hbGwgcy1leHByZXNzaW9ucyBieSBhIGZhY3RvciBvZiB+NCBpZiB3ZSBvbmx5IGFsbG9jYXRlIDEwMjQgYnl0ZXNcbiAgICAgKDEyOCB3b3JkcyArIHNvbWUgc21hbGwgb3ZlcmhlYWQpIHdvcnRoIG9mIGJ1ZmZlciBpbml0aWFsbHkuICBBbmQgb25lXG4gICAgIGNhbiBhcmd1ZSB0aGF0IGlmIGl0J3MgZnJlZSB0byBhbGxvY2F0ZSBzdHJpbmdzIHNtYWxsZXIgdGhhbiAyNTYgd29yZHMsXG4gICAgIGxhcmdlIHMtZXhwcmVzc2lvbnMgcmVxdWlyaW5nIGxhcmdlciBleHBlbnNpdmUgYnVmZmVycyB3b24ndCBub3RpY2VcbiAgICAgdGhlIGV4dHJhIHR3byBkb3VibGluZ3MgZnJvbSAxMDI0IGJ5dGVzIHRvIDIwNDggYW5kIDQwOTYuIEFuZCBlc3BlY2lhbGx5XG4gICAgIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcHBsaWNhdGlvbnMgdG8gYWx3YXlzIHBhc3MgaW4gYSBsYXJnZXIgYnVmZmVyIHRvXG4gICAgIHVzZS4gKilcbiAgbGV0IGJ1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgMTAyNFxuXG4gICgqIFN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19zdHJpbmdfaHVtID9pbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHJcbiAgICAgIHdoZW4gbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBfIC0+IGZhbHNlIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9odW0gP2luZGVudCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19tYWNoID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX21hY2hcbmVuZFxuXG5pbmNsdWRlIFByaW50aW5nXG5cbmxldCBvZl9mbG9hdF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xubGV0IG9mX2ludF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFByaW50aW5nXG5lbmRcblxubGV0IG1lc3NhZ2UgbmFtZSBmaWVsZHMgPVxuICBsZXQgcmVjIGNvbnZfZmllbGRzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoZm5hbWUsIGZzZXhwKSA6OiByZXN0IC0+XG4gICAgICAobWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgIHwgXCJcIiAtPiBmc2V4cCA6OiBjb252X2ZpZWxkcyByZXN0XG4gICAgICAgfCBfIC0+IExpc3QgWyBBdG9tIGZuYW1lOyBmc2V4cCBdIDo6IGNvbnZfZmllbGRzIHJlc3QpXG4gIGluXG4gIExpc3QgKEF0b20gbmFtZSA6OiBjb252X2ZpZWxkcyBmaWVsZHMpXG47O1xuIiwiKCoqIFJlcHJlc2VudGF0aW9uIG9mIFMtZXhwcmVzc2lvbiBncmFtbWFycyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIHJlcHJlc2VudGF0aW9uIGZvciBzLWV4cHJlc3Npb24gZ3JhbW1hcnMuIFVzaW5nIHBweF9zZXhwX2NvbnZcbiAgICBhbmQgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHByb2R1Y2VzIGEgZ3JhbW1hciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVyaXZlZFxuICAgIFtvZl9zZXhwXSBmb3IgYSBnaXZlbiB0eXBlLlxuXG4gICAgQXMgd2l0aCBvdGhlciBkZXJpdmVkIGRlZmluaXRpb25zLCBwb2x5bW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFcbiAgICBncmFtbWFyIGZvciBlYWNoIHR5cGUgYXJndW1lbnQgYW5kIHByb2R1Y2VzIGEgZ3JhbW1hciBmb3IgdGhlIG1vbm9tb3JwaGl6ZWQgdHlwZS5cblxuICAgIE1vbm9tb3JwaGljIHR5cGVzIGRlcml2ZSBhIGdyYW1tYXIgZGlyZWN0bHkuIFRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMsXG4gICAgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHdyYXBzIGdyYW1tYXJzIGluIHRoZSBbTGF6eV0gY29uc3RydWN0b3IgYXMgbmVlZGVkLlxuXG4gICAgVGhpcyB0eXBlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lIGFzIG91ciBuZWVkcyBmb3IgZXhwcmVzc2l2ZSBncmFtbWFycyBjaGFuZ2UuIFdlIHdpbGxcbiAgICBhdHRlbXB0IHRvIG1ha2UgY2hhbmdlcyBiYWNrd2FyZC1jb21wYXRpYmxlLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgcmVhc29uYWJsZSB1cGdyYWRlXG4gICAgcGF0aC4gKilcblxuW0BAQHdhcm5pbmcgXCItMzBcIl0gKCogYWxsb3cgZHVwbGljYXRlIGZpZWxkIG5hbWVzICopXG5cbigqKiBHcmFtbWFyIG9mIGEgc2V4cC4gKilcbnR5cGUgZ3JhbW1hciA9XG4gIHwgQW55IG9mIHN0cmluZyAoKiogYWNjZXB0cyBhbnkgc2V4cDsgc3RyaW5nIGlzIGEgdHlwZSBuYW1lIGZvciBodW1hbiByZWFkYWJpbGl0eSAqKVxuICB8IEJvb2wgKCoqIGFjY2VwdHMgdGhlIGF0b21zIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgbW9kdWxvIGNhcGl0YWxpemF0aW9uICopXG4gIHwgQ2hhciAoKiogYWNjZXB0cyBhbnkgc2luZ2xlLWNoYXJhY3RlciBhdG9tICopXG4gIHwgSW50ZWdlciAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBpbnRlZ2VyIHN5bnRheCwgcmVnYXJkbGVzcyBvZiBiaXQgd2lkdGggKilcbiAgfCBGbG9hdCAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBmbG9hdCBzeW50YXggKilcbiAgfCBTdHJpbmcgKCoqIGFjY2VwdHMgYW55IGF0b20gKilcbiAgfCBPcHRpb24gb2YgZ3JhbW1hciAoKiogYWNjZXB0cyBhbiBvcHRpb24sIGJvdGggW05vbmVdIHZzIFtTb21lIF9dIGFuZCBbKCldIHZzIFsoXyldLiAqKVxuICB8IExpc3Qgb2YgbGlzdF9ncmFtbWFyICgqKiBhY2NlcHRzIGEgbGlzdCAqKVxuICB8IFZhcmlhbnQgb2YgdmFyaWFudCAoKiogYWNjZXB0cyBjbGF1c2VzIGtleWVkIGJ5IGEgbGVhZGluZyBvciBzb2xlIGF0b20gKilcbiAgfCBVbmlvbiBvZiBncmFtbWFyIGxpc3QgKCoqIGFjY2VwdHMgYSBzZXhwIGlmIGFueSBvZiB0aGUgbGlzdGVkIGdyYW1tYXJzIGFjY2VwdHMgaXQgKilcbiAgfCBUYWdnZWQgb2YgZ3JhbW1hciB3aXRoX3RhZ1xuICAoKiogYW5ub3RhdGVzIGEgZ3JhbW1hciB3aXRoIGEgY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyICopXG4gIHwgVHl2YXIgb2Ygc3RyaW5nXG4gICgqKiBOYW1lIG9mIGEgdHlwZSB2YXJpYWJsZSwgZS5nLiBbVHl2YXIgXCJhXCJdIGZvciBbJ2FdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgYm9keSBvZlxuICAgICAgdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW2RlZm5dIGRlZmluZXMgYSBjb3JyZXNwb25kaW5nIHR5cGUgdmFyaWFibGUuICopXG4gIHwgVHljb24gb2Ygc3RyaW5nICogZ3JhbW1hciBsaXN0ICogZGVmbiBsaXN0XG4gICgqKiBUeXBlIGNvbnN0cnVjdG9yIGFwcGxpZWQgdG8gYXJndW1lbnRzLCBhbmQgaXRzIGRlZmluaXRpb24uXG5cbiAgICAgIEZvciBleGFtcGxlLCB3cml0aW5nIFtUeWNvbiAoXCJ0cmVlXCIsIFsgSW50ZWdlciBdLCBkZWZucyldIHJlcHJlc2VudHMgW2ludCB0cmVlXSwgZm9yXG4gICAgICB3aGF0ZXZlciBbdHJlZV0gaXMgZGVmaW5lZCBhcyBpbiBbZGVmbnNdLiBUaGUgZm9sbG93aW5nIGRlZmluZXMgW3RyZWVdIGFzIGEgYmluYXJ5XG4gICAgICB0cmVlIHdpdGggdGhlIHBhcmFtZXRlciB0eXBlIHN0b3JlZCBhdCB0aGUgbGVhdmVzLlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgZGVmbnMgPVxuICAgICAgICAgIFsgeyB0eWNvbiA9IFwidHJlZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChSZWN1cnNpdmUgKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgOyB7IG5hbWUgPSBcIkxlYWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoUmVjdXJzaXZlIChcImxlYWZcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHsgdHljb24gPSBcIm5vZGVcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBMaXN0IChNYW55IChSZWN1cnNpdmUgXCJ0cmVlXCIsIFtUeXZhciBcImFcIl0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibGVhZlwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IFtUeXZhciBcImFcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDs7XG4gICAgICBdfVxuXG4gICAgICBUbyBpbGx1c3RyYXRlIHRoZSBtZWFuaW5nIG9mIFtUeWNvbl0gd2l0aCByZXNwZWN0IHRvIFtkZWZuc10sIGFuZCB0byBkZW1vbnN0cmF0ZSBvbmVcbiAgICAgIHdheSB0byBhY2Nlc3MgdGhlbSwgaXQgaXMgZXF1aXZhbGVudCB0byBleHBhbmQgdGhlIGRlZmluaXRpb24gb2YgXCJ0cmVlXCIgb25lIGxldmVsXG4gICAgICBhbmQgbW92ZSB0aGUgW2RlZm5zXSB0byBlbmNsb3NlZCByZWN1cnNpdmUgcmVmZXJlbmNlczpcblxuICAgICAge1tcbiAgICAgICAgVHljb24gKFwidHJlZVwiLCBbIEludGVnZXIgXSwgZGVmbnMpXG4gICAgICAgIC0tPlxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0sIGRlZm5zKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiTGVhZlwiXG4gICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdLCBkZWZucyksIEVtcHR5KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgIF19XG5cbiAgICAgIFRoaXMgdHJhbnNmb3JtYXRpb24gZXhwb3NlcyB0aGUgc3RydWN0dXJlIG9mIGEgZ3JhbW1hciB3aXRoIHJlY3Vyc2l2ZSByZWZlcmVuY2VzLFxuICAgICAgd2hpbGUgcHJlc2VydmluZyB0aGUgbWVhbmluZyBvZiByZWN1cnNpdmVseS1kZWZpbmVkIGVsZW1lbnRzLiAqKVxuICB8IFJlY3Vyc2l2ZSBvZiBzdHJpbmcgKiBncmFtbWFyIGxpc3RcbiAgKCoqIFR5cGUgY29uc3RydWN0b3IgYXBwbGllZCB0byBhcmd1bWVudHMuIFVzZWQgdG8gZGVub3RlIHJlY3Vyc2l2ZSB0eXBlIHJlZmVyZW5jZXMuXG4gICAgICBPbmx5IG1lYW5pbmdmdWwgd2hlbiB1c2VkIGluc2lkZSB0aGUgW2RlZm5dcyBvZiBhIFtUeWNvbl0gZ3JhbW1hciwgdG8gcmVmZXIgdG8gYVxuICAgICAgdHlwZSBjb25zdHJ1Y3RvciBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgW2RlZm5dIGxpc3QuICopXG4gIHwgTGF6eSBvZiBncmFtbWFyIGxhenlfdFxuICAoKiogTGF6aWx5IGNvbXB1dGVkIGdyYW1tYXIuIFVzZSBbTGF6eV0gdG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cy4gVG8gZGVmaW5lXG4gICAgICByZWN1cnNpdmUgZ3JhbW1hcnMsIHVzZSBbUmVjdXJzaXZlXSBpbnN0ZWFkLiAqKVxuXG4oKiogR3JhbW1hciBvZiBhIGxpc3Qgb2Ygc2V4cHMuICopXG5hbmQgbGlzdF9ncmFtbWFyID1cbiAgfCBFbXB0eSAoKiogYWNjZXB0cyBhbiBlbXB0eSBsaXN0IG9mIHNleHBzICopXG4gIHwgQ29ucyBvZiBncmFtbWFyICogbGlzdF9ncmFtbWFyXG4gICgqKiBhY2NlcHRzIGEgbm9uLWVtcHR5IGxpc3Qgd2l0aCBoZWFkIGFuZCB0YWlsIG1hdGNoaW5nIHRoZSBnaXZlbiBncmFtbWFycyAqKVxuICB8IE1hbnkgb2YgZ3JhbW1hciAoKiogYWNjZXB0cyB6ZXJvIG9yIG1vcmUgc2V4cHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXIgKilcbiAgfCBGaWVsZHMgb2YgcmVjb3JkICgqKiBhY2NlcHRzIHNleHBzIHJlcHJlc2VudGluZyBmaWVsZHMgb2YgYSByZWNvcmQgKilcblxuKCoqIENhc2Ugc2Vuc2l0aXZpdHkgb3B0aW9ucyBmb3IgbmFtZXMgb2YgdmFyaWFudCBjb25zdHJ1Y3RvcnMuICopXG5hbmQgY2FzZV9zZW5zaXRpdml0eSA9XG4gIHwgQ2FzZV9pbnNlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlLiBVc2VkIGZvciBjdXN0b20gcGFyc2Vycy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2ZS4gVXNlZCBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMuICopXG4gIHwgQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlIGZvciB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjYXNlIHNlbnNpdGl2ZSBhZnRlcndhcmQuXG4gICAgICBVc2VkIGZvciByZWd1bGFyIHZhcmlhbnRzLiAqKVxuXG4oKiogR3JhbW1hciBvZiB2YXJpYW50cy4gQWNjZXB0cyBhbnkgc2V4cCBtYXRjaGluZyBvbmUgb2YgdGhlIGNsYXVzZXMuICopXG5hbmQgdmFyaWFudCA9XG4gIHsgY2FzZV9zZW5zaXRpdml0eSA6IGNhc2Vfc2Vuc2l0aXZpdHlcbiAgOyBjbGF1c2VzIDogY2xhdXNlIHdpdGhfdGFnX2xpc3QgbGlzdFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlLiBBY2NlcHRzIHNleHBzIGJhc2VkIG9uIHRoZSBbY2xhdXNlX2tpbmRdLiAqKVxuYW5kIGNsYXVzZSA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IGNsYXVzZV9raW5kIDogY2xhdXNlX2tpbmRcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHNpbmdsZSB2YXJpYW50IGNsYXVzZSdzIGNvbnRlbnRzLiBbQXRvbV9jbGF1c2VdIGFjY2VwdHMgYW4gYXRvbSBtYXRjaGluZ1xuICAgIHRoZSBjbGF1c2UncyBuYW1lLiBbTGlzdF9jbGF1c2VdIGFjY2VwdHMgYSBsaXN0IHdob3NlIGhlYWQgaXMgYW4gYXRvbSBtYXRjaGluZyB0aGVcbiAgICBjbGF1c2UncyBuYW1lIGFuZCB3aG9zZSB0YWlsIG1hdGNoZXMgW2FyZ3NdLiBUaGUgY2xhdXNlJ3MgbmFtZSBpcyBtYXRjaGVkIG1vZHVsbyB0aGVcbiAgICB2YXJpYW50J3MgW25hbWVfa2luZF0uICopXG5hbmQgY2xhdXNlX2tpbmQgPVxuICB8IEF0b21fY2xhdXNlXG4gIHwgTGlzdF9jbGF1c2Ugb2YgeyBhcmdzIDogbGlzdF9ncmFtbWFyIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQuIEFjY2VwdHMgYW55IGxpc3Qgb2Ygc2V4cHMgc3BlY2lmeWluZyBlYWNoIG9mIHRoZSBmaWVsZHMsXG4gICAgcmVnYXJkbGVzcyBvZiBvcmRlci4gSWYgW2FsbG93X2V4dHJhX2ZpZWxkc10gaXMgc3BlY2lmaWVkLCBpZ25vcmVzIHNleHBzIHdpdGggbmFtZXNcbiAgICBub3QgZm91bmQgaW4gW2ZpZWxkc10uICopXG5hbmQgcmVjb3JkID1cbiAgeyBhbGxvd19leHRyYV9maWVsZHMgOiBib29sXG4gIDsgZmllbGRzIDogZmllbGQgd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQgZmllbGQuIEEgZmllbGQgbXVzdCBzaG93IHVwIGV4YWN0bHkgb25jZSBpbiBhIHJlY29yZCBpZlxuICAgIFtyZXF1aXJlZF0sIG9yIGF0IG1vc3Qgb25jZSBvdGhlcndpc2UuIEFjY2VwdHMgYSBsaXN0IGhlYWRlZCBieSBbbmFtZV0gYXMgYW4gYXRvbSxcbiAgICBmb2xsb3dlZCBieSBzZXhwcyBtYXRjaGluZyBbYXJnc10uICopXG5hbmQgZmllbGQgPVxuICB7IG5hbWUgOiBzdHJpbmdcbiAgOyByZXF1aXJlZCA6IGJvb2xcbiAgOyBhcmdzIDogbGlzdF9ncmFtbWFyXG4gIH1cblxuKCoqIEdyYW1tYXIgdGFnZ2VkIHdpdGggY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyLiAqKVxuYW5kICdhIHdpdGhfdGFnID1cbiAgeyBrZXkgOiBzdHJpbmdcbiAgOyB2YWx1ZSA6IFNleHAudFxuICA7IGdyYW1tYXIgOiAnYVxuICB9XG5cbmFuZCAnYSB3aXRoX3RhZ19saXN0ID1cbiAgfCBUYWcgb2YgJ2Egd2l0aF90YWdfbGlzdCB3aXRoX3RhZ1xuICB8IE5vX3RhZyBvZiAnYVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY3Vyc2l2ZSB0eXBlIGRlZmluaXRpb24uIE5hbWVzIHRoZSBbdHljb25dIGJlaW5nIGRlZmluZWQsIGFuZCB0aGVcbiAgICBbdHl2YXJzXSBpdCB0YWtlcyBhcyBwYXJhbWV0ZXJzLiBTcGVjaWZpZXMgdGhlIFtncmFtbWFyXSBvZiB0aGUgW3R5Y29uXS4gVGhlIGdyYW1tYXJcbiAgICBtYXkgcmVmZXIgdG8gYW55IG9mIHRoZSBbdHl2YXJzXSwgYW5kIHRvIGFueSBvZiB0aGUgW3R5Y29uXXMgZnJvbSB0aGUgc2FtZSBzZXQgb2ZcbiAgICBbUmVjdXJzaXZlXSBkZWZpbml0aW9ucy4gKilcbmFuZCBkZWZuID1cbiAgeyB0eWNvbiA6IHN0cmluZ1xuICA7IHR5dmFycyA6IHN0cmluZyBsaXN0XG4gIDsgZ3JhbW1hciA6IGdyYW1tYXJcbiAgfVxuXG4oKiogVG9wLWxldmVsIGdyYW1tYXIgdHlwZS4gSGFzIGEgcGhhbnRvbSB0eXBlIHBhcmFtZXRlciB0byBhc3NvY2lhdGUgZWFjaCBncmFtbWFyIHdpdGhcbiAgICB0aGUgdHlwZSBpdHMgc2V4cHMgcmVwcmVzZW50LiBUaGlzIG1ha2VzIGl0IGhhcmRlciB0byBhcHBseSBncmFtbWFycyB0byB0aGUgd3JvbmdcbiAgICB0eXBlLCB3aGlsZSBncmFtbWFycyBjYW4gc3RpbGwgYmUgZWFzaWx5IGNvZXJjZWQgdG8gYSBuZXcgdHlwZSBpZiBuZWVkZWQuICopXG50eXBlIF8gdCA9IHsgdW50eXBlZCA6IGdyYW1tYXIgfSBbQEB1bmJveGVkXVxuXG5sZXQgY29lcmNlICh0eXBlIGEgYikgKHsgdW50eXBlZCA9IF8gfSBhcyB0IDogYSB0KSA6IGIgdCA9IHRcblxubGV0IHRhZyAodHlwZSBhKSAoeyB1bnR5cGVkID0gZ3JhbW1hciB9IDogYSB0KSB+a2V5IH52YWx1ZSA6IGEgdCA9XG4gIHsgdW50eXBlZCA9IFRhZ2dlZCB7IGtleTsgdmFsdWU7IGdyYW1tYXIgfSB9XG47O1xuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaXMgdXNlZCBmb3IgYWxsIHRhZ3MgZ2VuZXJhdGVkIGZyb20gZG9jIGNvbW1lbnRzLiAqKVxubGV0IGRvY19jb21tZW50X3RhZyA9IFwic2V4cF9ncmFtbWFyLmRvY19jb21tZW50XCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGNhbiBiZSB1c2VkIHRvIGFzc29jaWF0ZSBhIHR5cGUgbmFtZSB3aXRoIGEgZ3JhbW1hci4gKilcbmxldCB0eXBlX25hbWVfdGFnID0gXCJzZXhwX2dyYW1tYXIudHlwZV9uYW1lXCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCByZXByZXNlbnRzIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGUgdGFnJ3NcbiAgICB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX3RhZyA9IFwic2V4cF9ncmFtbWFyLmFzc29jXCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCBpcyBhIGtleSBpbiBhIGtleS92YWx1ZSBhc3NvY2lhdGlvbi4gVGhlIHRhZydzXG4gICAgdmFsdWUgaXMgaWdub3JlZC4gKilcbmxldCBhc3NvY19rZXlfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2Mua2V5XCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCBpcyBhIHZhbHVlIGluIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGVcbiAgICB0YWcncyB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX3ZhbHVlX3RhZyA9IFwic2V4cF9ncmFtbWFyLmFzc29jLnZhbHVlXCJcblxuKCoqIFdoZW4gdGhlIGtleSBpcyBzZXQgdG8gW0F0b20gXCJmYWxzZVwiXSBmb3IgYSB2YXJpYW50IGNsYXVzZSwgdGhhdCBjbGF1c2Ugc2hvdWxkIG5vdCBiZVxuICAgIHN1Z2dlc3RlZCBpbiBhdXRvLWNvbXBsZXRpb24gYmFzZWQgb24gdGhlIHNleHAgZ3JhbW1hci4gKilcbmxldCBjb21wbGV0aW9uX3N1Z2dlc3RlZCA9IFwic2V4cF9ncmFtbWFyLmNvbXBsZXRpb24tc3VnZ2VzdGVkXCJcbiIsIm9wZW4gU3RkTGFiZWxzXG5cbmxldCBzZXhwX2dyYW1tYXJfd2l0aF90YWdzIGdyYW1tYXIgfnRhZ3MgPVxuICBMaXN0LmZvbGRfcmlnaHQgdGFncyB+aW5pdDpncmFtbWFyIH5mOihmdW4gKGtleSwgdmFsdWUpIGdyYW1tYXIgLT5cbiAgICBTZXhwX2dyYW1tYXIuVGFnZ2VkIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9KVxuOztcblxubGV0IHNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IHggfnRhZ3MgPVxuICBMaXN0LmZvbGRfcmlnaHQgdGFncyB+aW5pdDp4IH5mOihmdW4gKGtleSwgdmFsdWUpIGdyYW1tYXIgLT5cbiAgICBTZXhwX2dyYW1tYXIuVGFnIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9KVxuOztcblxubGV0IHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgRW1wdHkgfVxubGV0IGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEJvb2wgfVxubGV0IHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBDaGFyIH1cbmxldCBpbnRfc2V4cF9ncmFtbWFyIDogaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgZmxvYXRfc2V4cF9ncmFtbWFyIDogZmxvYXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBGbG9hdCB9XG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyIDogaW50MzIgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBzZXhwX3Rfc2V4cF9ncmFtbWFyIDogU2V4cC50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQW55IFwiU2V4cC50XCIgfVxubGV0IHJlZl9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBfZ3JhbW1hci5jb2VyY2UgZ3JhbW1hclxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBfZ3JhbW1hci5jb2VyY2UgZ3JhbW1hclxuXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gb3B0aW9uIFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gT3B0aW9uIHVudHlwZWQgfVxuOztcblxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBsaXN0IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBhcnJheSBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGVtcHR5X3NleHBfZ3JhbW1hciA6IF8gU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG5sZXQgb3BhcXVlX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxubGV0IGZ1bl9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbiIsIigqIFV0aWxpdHkgTW9kdWxlIGZvciBTLWV4cHJlc3Npb24gQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gTW9yZUxhYmVsc1xub3BlbiBQcmludGZcbm9wZW4gU2V4cFxuXG4oKiBDb252ZXJzaW9uIG9mIE9DYW1sLXZhbHVlcyB0byBTLWV4cHJlc3Npb25zICopXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqICclLjE3ZycgaXMgZ3VhcmFudGVlZCB0byBiZSByb3VuZC10cmlwcGFibGUuXG5cbiAgICclLjE1Zycgd2lsbCBiZSByb3VuZC10cmlwcGFibGUgYW5kIG5vdCBoYXZlIG5vaXNlIGF0IHRoZSBsYXN0IGRpZ2l0IG9yIHR3byBmb3IgYSBmbG9hdFxuICAgd2hpY2ggd2FzIGNvbnZlcnRlZCBmcm9tIGEgZGVjaW1hbCAoc3RyaW5nKSB3aXRoIDw9IDE1IHNpZ25pZmljYW50IGRpZ2l0cy4gIFNvIGl0J3NcbiAgIHdvcnRoIHRyeWluZyBmaXJzdCB0byBhdm9pZCB0aGluZ3MgbGlrZSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiLlxuXG4gICBTZWUgY29tbWVudCBhYm92ZSBbdG9fc3RyaW5nX3JvdW5kX3RyaXBwYWJsZV0gaW4geyFDb3JlLkZsb2F0fSBmb3JcbiAgIGRldGFpbGVkIGV4cGxhbmF0aW9uIGFuZCBleGFtcGxlcy4gKilcbmxldCBkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCA9XG4gIHJlZiAoZnVuIHggLT5cbiAgICBsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVHXCIgeCBpblxuICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3R1wiIHgpXG47O1xuXG5sZXQgcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IGxpc3RfbWFwIGYgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgbCB+ZilcbmxldCBzZXhwX29mX3VuaXQgKCkgPSBMaXN0IFtdXG5sZXQgc2V4cF9vZl9ib29sIGIgPSBBdG9tIChzdHJpbmdfb2ZfYm9vbCBiKVxubGV0IHNleHBfb2Zfc3RyaW5nIHN0ciA9IEF0b20gc3RyXG5sZXQgc2V4cF9vZl9ieXRlcyBieXRlcyA9IEF0b20gKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCBzZXhwX29mX2NoYXIgYyA9IEF0b20gKFN0cmluZy5tYWtlIDEgYylcbmxldCBzZXhwX29mX2ludCBuID0gQXRvbSAoc3RyaW5nX29mX2ludCBuKVxubGV0IHNleHBfb2ZfZmxvYXQgbiA9IEF0b20gKCFkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBuKVxubGV0IHNleHBfb2ZfaW50MzIgbiA9IEF0b20gKEludDMyLnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfaW50NjQgbiA9IEF0b20gKEludDY0LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfbmF0aXZlaW50IG4gPSBBdG9tIChOYXRpdmVpbnQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9yZWYgc2V4cF9vZl9fYSByZiA9IHNleHBfb2ZfX2EgIXJmXG5sZXQgc2V4cF9vZl9sYXp5X3Qgc2V4cF9vZl9fYSBsdiA9IHNleHBfb2ZfX2EgKExhenkuZm9yY2UgbHYpXG5cbmxldCBzZXhwX29mX29wdGlvbiBzZXhwX29mX19hID0gZnVuY3Rpb25cbiAgfCBTb21lIHggd2hlbiAhd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgLT4gTGlzdCBbIHNleHBfb2ZfX2EgeCBdXG4gIHwgU29tZSB4IC0+IExpc3QgWyBBdG9tIFwic29tZVwiOyBzZXhwX29mX19hIHggXVxuICB8IE5vbmUgd2hlbiAhd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgLT4gTGlzdCBbXVxuICB8IE5vbmUgLT4gQXRvbSBcIm5vbmVcIlxuOztcblxubGV0IHNleHBfb2ZfcGFpciBzZXhwX29mX19hIHNleHBfb2ZfX2IgKGEsIGIpID0gTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiIF1cblxubGV0IHNleHBfb2ZfdHJpcGxlIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiBzZXhwX29mX19jIChhLCBiLCBjKSA9XG4gIExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYjsgc2V4cF9vZl9fYyBjIF1cbjs7XG5cbigqIExpc3QucmV2IChMaXN0LnJldl9tYXAgLi4uKSBpcyB0YWlsIHJlY3Vyc2l2ZSwgdGhlIE9DYW1sIHN0YW5kYXJkXG4gICBsaWJyYXJ5IExpc3QubWFwIGlzIE5PVC4gKilcbmxldCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9fYSBsc3QgPSBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGxzdCB+ZjpzZXhwX29mX19hKSlcblxubGV0IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9fYSBhci4oaSkgOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfaGFzaHRibCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gTGlzdCBbIHNleHBfb2Zfa2V5IGs7IHNleHBfb2ZfdmFsIHYgXSA6OiBhY2MgaW5cbiAgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCBzZXhwX29mX29wYXF1ZSBfID0gQXRvbSBcIjxvcGFxdWU+XCJcbmxldCBzZXhwX29mX2Z1biBfID0gQXRvbSBcIjxmdW4+XCJcblxuKCogRXhjZXB0aW9uIGNvbnZlcnRlciByZWdpc3RyYXRpb24gYW5kIGxvb2t1cCAqKVxuXG5tb2R1bGUgRXhuX2NvbnZlcnRlciA9IHN0cnVjdFxuICAoKiBUaGVzZSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCBjb250ZXh0LXN3aXRjaGVzXG4gICAgIGNhbm5vdCBoYXBwZW4gdW5sZXNzIHRoZXJlIGlzIGFuIGFsbG9jYXRpb24uICBJdCBpcyByZWFzb25hYmxlIHRvIGV4cGVjdFxuICAgICB0aGF0IHRoaXMgd2lsbCByZW1haW4gdHJ1ZSBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZS4gIFRoYXQgd2F5IHdlXG4gICAgIGF2b2lkIHVzaW5nIG11dGV4ZXMgYW5kIHRodXMgYSBkZXBlbmRlbmN5IG9uIHRoZSB0aHJlYWRzIGxpYnJhcnkuICopXG5cbiAgKCogRmFzdCBhbmQgYXV0b21hdGljIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gKilcblxuICBtb2R1bGUgUmVnaXN0cmF0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgc2V4cF9vZl9leG4gOiBleG4gLT4gU2V4cC50XG4gICAgICA7ICgqIElmIFtwcmludGV4YyA9IHRydWVdIHRoZW4gdGhpcyBzZXhwIGNvbnZlcnRlciBpcyB1c2VkIGZvciBQcmludGV4Yy50b19zdHJpbmcgKilcbiAgICAgICAgcHJpbnRleGMgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBFeG5fdGFibGUgPSBFcGhlbWVyb24uSzEuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcblxuICAgICAgbGV0IGVxdWFsID0gKCA9PSApXG4gICAgICBsZXQgaGFzaCA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWRcbiAgICBlbmQpXG5cbiAgbGV0IHRoZV9leG5fdGFibGUgOiBSZWdpc3RyYXRpb24udCBFeG5fdGFibGUudCA9IEV4bl90YWJsZS5jcmVhdGUgMTdcblxuICAoKiBFcGhlbWVyb25zIGFyZSB1c2VkIHNvIHRoYXQgW3NleHBfb2ZfZXhuXSBjbG9zdXJlIGRvbid0IGtlZXAgdGhlXG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXZlLiAqKVxuICBsZXQgYWRkID8ocHJpbnRleGMgPSB0cnVlKSA/ZmluYWxpc2U6XyBleHRlbnNpb25fY29uc3RydWN0b3Igc2V4cF9vZl9leG4gPVxuICAgIEV4bl90YWJsZS5hZGQgdGhlX2V4bl90YWJsZSBleHRlbnNpb25fY29uc3RydWN0b3IgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfVxuICA7O1xuXG4gIGxldCBmaW5kX2F1dG8gfmZvcl9wcmludGV4YyBleG4gPVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleG4gaW5cbiAgICBtYXRjaCBFeG5fdGFibGUuZmluZF9vcHQgdGhlX2V4bl90YWJsZSBleHRlbnNpb25fY29uc3RydWN0b3Igd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH0gLT5cbiAgICAgIChtYXRjaCBmb3JfcHJpbnRleGMsIHByaW50ZXhjIHdpdGhcbiAgICAgICB8IGZhbHNlLCBfIHwgXywgdHJ1ZSAtPiBTb21lIChzZXhwX29mX2V4biBleG4pXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPiBOb25lKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdW5pdF90ZXN0c19vbmx5ID0gc3RydWN0XG4gICAgbGV0IHNpemUgKCkgPSAoRXhuX3RhYmxlLnN0YXRzX2FsaXZlIHRoZV9leG5fdGFibGUpLm51bV9iaW5kaW5nc1xuICBlbmRcbmVuZFxuXG5sZXQgc2V4cF9vZl9leG5fb3B0X2Zvcl9wcmludGV4YyBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOnRydWUgZXhuXG5sZXQgc2V4cF9vZl9leG5fb3B0IGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6ZmFsc2UgZXhuXG5cbmxldCBzZXhwX29mX2V4biBleG4gPVxuICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgZXhuIHdpdGhcbiAgfCBOb25lIC0+IExpc3QgWyBBdG9tIChQcmludGV4Yy50b19zdHJpbmcgZXhuKSBdXG4gIHwgU29tZSBzZXhwIC0+IHNleHBcbjs7XG5cbmxldCBleG5fdG9fc3RyaW5nIGUgPSBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpXG5cbigqIHtbZXhjZXB0aW9uIEJsYWggW0BAZGVyaXZpbmcgc2V4cF1dfSBnZW5lcmF0ZXMgYSBjYWxsIHRvIHRoZSBmdW5jdGlvblxuICAgW0V4bl9jb252ZXJ0ZXIuYWRkXSBkZWZpbmVkIGluIHRoaXMgZmlsZS4gIFNvIHdlIGFyZSBndWFyYW50ZWQgdGhhdCBhcyBzb29uIGFzIHdlXG4gICBtYXJrIGFuIGV4Y2VwdGlvbiBhcyBzZXhwYWJsZSwgdGhpcyBtb2R1bGUgd2lsbCBiZSBsaW5rZWQgaW4gYW5kIHRoaXMgcHJpbnRlciB3aWxsIGJlXG4gICByZWdpc3RlcmVkLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuICopXG5sZXQgKCkgPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZXhuIC0+XG4gICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0X2Zvcl9wcmludGV4YyBleG4gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHNleHAgLT4gU29tZSAoU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiBzZXhwKSlcbjs7XG5cbmxldCBwcmludGV4Y19wcmVmZXJfc2V4cCBleG4gPVxuICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgZXhuIHdpdGhcbiAgfCBOb25lIC0+IFByaW50ZXhjLnRvX3N0cmluZyBleG5cbiAgfCBTb21lIHNleHAgLT4gU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiBzZXhwXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIFMtZXhwcmVzc2lvbnMgdG8gT0NhbWwtdmFsdWVzICopXG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gU2V4cC5PZl9zZXhwX2Vycm9yXG5cbmxldCByZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzID0gcmVmIHRydWVcbmxldCBvZl9zZXhwX2Vycm9yX2V4biBleGMgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChleGMsIHNleHApKVxubGV0IG9mX3NleHBfZXJyb3Igd2hhdCBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG5cbmxldCB1bml0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gKClcbiAgfCBBdG9tIF8gfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInVuaXRfb2Zfc2V4cDogZW1wdHkgbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYm9vbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIChcInRydWVcIiB8IFwiVHJ1ZVwiKSAtPiB0cnVlXG4gIHwgQXRvbSAoXCJmYWxzZVwiIHwgXCJGYWxzZVwiKSAtPiBmYWxzZVxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiB1bmtub3duIHN0cmluZ1wiIHNleHBcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+IHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwic3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJ5dGVzX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJ5dGVzX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNoYXJfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIHN0cmluZyBtdXN0IGNvbnRhaW4gb25lIGNoYXJhY3RlciBvbmx5XCIgc2V4cDtcbiAgICBzdHIuWzBdXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgaW50X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBmbG9hdF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJmbG9hdF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50MzJfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDMyLm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDMyX29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQzMl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQ2NF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50NjQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50NjRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDY0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IG5hdGl2ZWludF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgTmF0aXZlaW50Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcIm5hdGl2ZWludF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwibmF0aXZlaW50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHJlZl9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9IHJlZiAoYV9fb2Zfc2V4cCBzZXhwKVxubGV0IGxhenlfdF9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9IExhenkuZnJvbV92YWwgKGFfX29mX3NleHAgc2V4cClcblxubGV0IG9wdGlvbl9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIGlmICFyZWFkX29sZF9vcHRpb25fZm9ybWF0XG4gIHRoZW4gKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBbXSB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBlbCBdIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgcmVwcmVzZW50IG9wdGlvbmFsIHZhbHVlXCIgc2V4cFxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHBcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCBiZSAoc29tZSBlbClcIiBzZXhwKVxuOztcblxubGV0IHBhaXJfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgWyBhX3NleHA7IGJfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBhLCBiXG4gIHwgTGlzdCBfIC0+XG4gICAgb2Zfc2V4cF9lcnJvciBcInBhaXJfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0d28gZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInBhaXJfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgdHJpcGxlX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIGNfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgWyBhX3NleHA7IGJfc2V4cDsgY19zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGxldCBjID0gY19fb2Zfc2V4cCBjX3NleHAgaW5cbiAgICBhLCBiLCBjXG4gIHwgTGlzdCBfIC0+XG4gICAgb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHRocmVlIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbGlzdF9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3NleHAgaW5cbiAgICBMaXN0LnJldiByZXZfbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJsaXN0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGFycmF5X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBbfHxdXG4gIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCB0ICsgMSBpblxuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiAoYV9fb2Zfc2V4cCBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSB0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJhcnJheV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBoYXNodGJsX29mX3NleHAga2V5X29mX3NleHAgdmFsX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSAwIGluXG4gICAgbGV0IGFjdCA9IGZ1bmN0aW9uXG4gICAgICB8IExpc3QgWyBrX3NleHA7IHZfc2V4cCBdIC0+XG4gICAgICAgIEhhc2h0YmwuYWRkIGh0YmwgfmtleTooa2V5X29mX3NleHAga19zZXhwKSB+ZGF0YToodmFsX29mX3NleHAgdl9zZXhwKVxuICAgICAgfCBMaXN0IF8gfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogdHVwbGUgbGlzdCBuZWVkZWRcIiBzZXhwXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgbHN0IH5mOmFjdDtcbiAgICBodGJsXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IG9wYXF1ZV9vZl9zZXhwIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIFwib3BhcXVlX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IG9wYXF1ZSB2YWx1ZXNcIiBzZXhwXG47O1xuXG5sZXQgZnVuX29mX3NleHAgc2V4cCA9IG9mX3NleHBfZXJyb3IgXCJmdW5fb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgZnVuY3Rpb24gdmFsdWVzXCIgc2V4cFxuXG4oKiBTZXhwIEdyYW1tYXJzICopXG5cbmluY2x1ZGUgU2V4cF9jb252X2dyYW1tYXJcblxuKCogUmVnaXN0ZXJpbmcgZGVmYXVsdCBleGNlcHRpb24gcHJpbnRlcnMgKilcblxubGV0IGdldF9mbGNfZXJyb3IgbmFtZSAoZmlsZSwgbGluZSwgY2hyKSA9IEF0b20gKHNwcmludGYgXCIlcyAlczolZDolZFwiIG5hbWUgZmlsZSBsaW5lIGNocilcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOmZhbHNlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXNzZXJ0X2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXNzZXJ0X2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJBc3NlcnRfZmFpbHVyZVwiIGFyZ1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhpdF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFeGl0IC0+IEF0b20gXCJFeGl0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVuZF9vZl9maWxlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEVuZF9vZl9maWxlIC0+IEF0b20gXCJFbmRfb2ZfZmlsZVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEZhaWx1cmUgYXJnIC0+IExpc3QgWyBBdG9tIFwiRmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTm90X2ZvdW5kIC0+IEF0b20gXCJOb3RfZm91bmRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgSW52YWxpZF9hcmd1bWVudF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGFyZyAtPiBMaXN0IFsgQXRvbSBcIkludmFsaWRfYXJndW1lbnRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWF0Y2hfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBNYXRjaF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiTWF0Y2hfZmFpbHVyZVwiIGFyZ1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kX3NdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTm90X2ZvdW5kX3MgYXJnIC0+IExpc3QgWyBBdG9tIFwiTm90X2ZvdW5kX3NcIjsgYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5c19lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXNfZXJyb3IgYXJnIC0+IExpc3QgWyBBdG9tIFwiU3lzX2Vycm9yXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFyZy5IZWxwXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5IZWxwIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5IZWxwXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFyZy5CYWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkJhZCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuQmFkXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIExhenkuVW5kZWZpbmVkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IExhenkuVW5kZWZpbmVkIC0+IEF0b20gXCJMYXp5LlVuZGVmaW5lZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzaW5nLlBhcnNlX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gQXRvbSBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUXVldWUuRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUXVldWUuRW1wdHkgLT4gQXRvbSBcIlF1ZXVlLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNjYW5mLlNjYW5fZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgYXJnIC0+IExpc3QgWyBBdG9tIFwiU2NhbmYuU2Nhbl9mYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN0YWNrLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN0YWNrLkVtcHR5IC0+IEF0b20gXCJTdGFjay5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXMuQnJlYWtdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzLkJyZWFrIC0+IEF0b20gXCJTeXMuQnJlYWtcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6dHJ1ZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSAtPlxuICAgICAgICAgIExpc3QgWyBBdG9tIFwiU2V4cGxpYi5Db252Lk9mX3NleHBfZXJyb3JcIjsgc2V4cF9vZl9leG4gZXhjOyBzZXhwIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiIsIigqIENvbnZfZXJyb3I6IE1vZHVsZSBmb3IgSGFuZGxpbmcgRXJyb3JzIGR1cmluZyBBdXRvbWF0ZWQgUy1leHByZXNzaW9uXG4gICBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBQcmludGZcbm9wZW4gU2V4cF9jb252XG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxuXG4oKiBFcnJvcnMgY29uY2VybmluZyB0dXBsZXMgKilcblxubGV0IHR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBsb2MgbiBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3NleHA6IHR1cGxlIG9mIHNpemUgJWQgZXhwZWN0ZWRcIiBsb2Mgbikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgc3VtIHR5cGVzICopXG5cbmxldCBzdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyBzZXhwID1cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl9zZXhwOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWcgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHN0YWdfdGFrZXNfYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYW4gZW1wdHkgbGlzdFwiKSBzZXhwXG47O1xuXG5sZXQgdW5leHBlY3RlZF9zdGFnIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdW5leHBlY3RlZCB2YXJpYW50IGNvbnN0cnVjdG9yXCIpIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zZXhwX2Jvb2xfd2l0aF9wYXlsb2FkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IGEgW3NleHAuYm9vbF0gZmllbGQgd2FzIGdpdmVuIGEgcGF5bG9hZC5cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBvbmx5IHBhaXJzIGV4cGVjdGVkLCB0aGVpciBmaXJzdCBlbGVtZW50IG11c3QgYmUgYW4gXFxcbiAgICAgICBhdG9tXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICBsZXQgZmxkX25hbWVzX3N0ciA9IFN0cmluZy5jb25jYXQgKExpc3QucmV2IHJldl9mbGRfbmFtZXMpIH5zZXA6XCIgXCIgaW5cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl9zZXhwOiAlczogJXNcIiBsb2Mgd2hhdCBmbGRfbmFtZXNfc3RyIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImR1cGxpY2F0ZSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cFxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJleHRyYSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cFxuOztcblxubGV0IHJlYyByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgZmllbGRzKSB+c2VwOlwiIFwiXG4gIHwgKHRydWUsIGZpZWxkKSA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgKGZpZWxkIDo6IGZpZWxkcykgcmVzdFxuICB8IF8gOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyByZXN0XG47O1xuXG5sZXQgcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBsb2Mgc2V4cCBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3NleHA6IHRoZSBmb2xsb3dpbmcgcmVjb3JkIGVsZW1lbnRzIHdlcmUgdW5kZWZpbmVkOiAlc1wiIGxvYyB1bmRlZmluZWRcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPSBsb2MgXiBcIl9vZl9zZXhwOiBsaXN0IGluc3RlYWQgb2YgYXRvbSBmb3IgcmVjb3JkIGV4cGVjdGVkXCIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkc1wiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgc2V4cFxuOztcblxubGV0IHB0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHB0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgY25zdHIgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCJcbiAgICAgIGxvY1xuICAgICAgY25zdHJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHNleHBcbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogYSBuZXN0ZWQgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoZSBlbXB0eSBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfdHlwZSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRyeWluZyB0byBjb252ZXJ0IGFuIGVtcHR5IHR5cGVcIikgc2V4cFxuOztcbiIsIm9wZW4hIFN0ZExhYmVsc1xub3BlbiEgU2V4cF9jb252XG5vcGVuISBTZXhwX2NvbnZfZXJyb3JcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoXywgXykgdCA9XG4gICAgfCBEZWZhdWx0IDogKHVuaXQgLT4gJ2EpIC0+ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBPbWl0X25pbCA6ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBSZXF1aXJlZCA6ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBTZXhwX2FycmF5IDogKCdhIGFycmF5LCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfYm9vbCA6IChib29sLCB1bml0KSB0XG4gICAgfCBTZXhwX2xpc3QgOiAoJ2EgbGlzdCwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBTZXhwX29wdGlvbiA6ICgnYSBvcHRpb24sIFNleHAudCAtPiAnYSkgdFxuZW5kXG5cbm1vZHVsZSBGaWVsZHMgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgRW1wdHkgOiB1bml0IHRcbiAgICB8IEZpZWxkIDpcbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsga2luZCA6ICgnYSwgJ2NvbnYpIEtpbmQudFxuICAgICAgICA7IGNvbnYgOiAnY29udlxuICAgICAgICA7IHJlc3QgOiAnYiB0XG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhICogJ2IpIHRcblxuICBsZXQgbGVuZ3RoID1cbiAgICBsZXQgcmVjIGxlbmd0aF9sb29wIDogdHlwZSBhLiBhIHQgLT4gaW50IC0+IGludCA9XG4gICAgICBmdW4gdCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmllbGQgeyByZXN0OyBfIH0gLT4gbGVuZ3RoX2xvb3AgcmVzdCAoYWNjICsgMSlcbiAgICAgICAgfCBFbXB0eSAtPiBhY2NcbiAgICBpblxuICAgIGZ1biB0IC0+IGxlbmd0aF9sb29wIHQgMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWxmb3JtZWQgPSBzdHJ1Y3RcbiAgKCogUmVwcmVzZW50cyBlcnJvcnMgdGhhdCBjYW4gb2NjdXIgZHVlIHRvIG1hbGZvcm1lZCByZWNvcmQgc2V4cHMuIEFjY3VtdWxhdGVkIGFzIGFcbiAgICAgdmFsdWUgc28gd2UgY2FuIHJlcG9ydCBtdWx0aXBsZSBuYW1lcyBhdCBvbmNlIGZvciBleHRyYSBmaWVsZHMsIGR1cGxpY2F0ZSBmaWVsZHMsIG9yXG4gICAgIG1pc3NpbmcgZmllbGRzLiAqKVxuICB0eXBlIHQgPVxuICAgIHwgQm9vbF9wYXlsb2FkXG4gICAgfCBFeHRyYXMgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IER1cHMgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IE1pc3Npbmcgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IE5vbl9wYWlyIG9mIFNleHAudCBvcHRpb25cblxuICBsZXQgY29tYmluZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICgqIGNob29zZSB0aGUgZmlyc3QgYm9vbC1wYXlsb2FkIG9yIG5vbi1wYWlyIGVycm9yIHRoYXQgb2NjdXJzICopXG4gICAgfCAoKEJvb2xfcGF5bG9hZCB8IE5vbl9wYWlyIF8pIGFzIHQpLCBfIC0+IHRcbiAgICB8IF8sICgoQm9vbF9wYXlsb2FkIHwgTm9uX3BhaXIgXykgYXMgdCkgLT4gdFxuICAgICgqIGNvbWJpbmUgbGlzdHMgb2Ygc2ltaWxhciBlcnJvcnMgKilcbiAgICB8IEV4dHJhcyBhLCBFeHRyYXMgYiAtPiBFeHRyYXMgKGEgQCBiKVxuICAgIHwgRHVwcyBhLCBEdXBzIGIgLT4gRHVwcyAoYSBAIGIpXG4gICAgfCBNaXNzaW5nIGEsIE1pc3NpbmcgYiAtPiBNaXNzaW5nIChhIEAgYilcbiAgICAoKiBvdGhlcndpc2UsIGR1cHMgPiBleHRyYXMgPiBtaXNzaW5nICopXG4gICAgfCAoRHVwcyBfIGFzIHQpLCBfIHwgXywgKER1cHMgXyBhcyB0KSAtPiB0XG4gICAgfCAoRXh0cmFzIF8gYXMgdCksIF8gfCBfLCAoRXh0cmFzIF8gYXMgdCkgLT4gdFxuICA7O1xuXG4gIGxldCByYWlzZSB0IH5jYWxsZXIgfmNvbnRleHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQm9vbF9wYXlsb2FkIC0+IHJlY29yZF9zZXhwX2Jvb2xfd2l0aF9wYXlsb2FkIGNhbGxlciBjb250ZXh0XG4gICAgfCBFeHRyYXMgbmFtZXMgLT4gcmVjb3JkX2V4dHJhX2ZpZWxkcyBjYWxsZXIgKExpc3QucmV2IG5hbWVzKSBjb250ZXh0XG4gICAgfCBEdXBzIG5hbWVzIC0+IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGNhbGxlciAoTGlzdC5yZXYgbmFtZXMpIGNvbnRleHRcbiAgICB8IE1pc3NpbmcgbmFtZXMgLT5cbiAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPiB0cnVlLCBuYW1lKVxuICAgICAgfD4gcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBjYWxsZXIgY29udGV4dFxuICAgIHwgTm9uX3BhaXIgbWF5YmVfY29udGV4dCAtPlxuICAgICAgbGV0IGNvbnRleHQgPSBPcHRpb24udmFsdWUgbWF5YmVfY29udGV4dCB+ZGVmYXVsdDpjb250ZXh0IGluXG4gICAgICByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBjYWxsZXIgY29udGV4dFxuICA7O1xuZW5kXG5cbmV4Y2VwdGlvbiBNYWxmb3JtZWQgb2YgTWFsZm9ybWVkLnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFN0b3JlcyBzZXhwcyBjb3JyZXNwb25kaW5nIHRvIHJlY29yZCBmaWVsZHMsIGluIHRoZSBvcmRlciB0aGUgZmllbGRzIHdlcmUgZGVjbGFyZWQuXG4gICAgIEV4Y2x1ZGVzIGZpZWxkcyBhbHJlYWR5IHBhcnNlZCBpbiB0aGUgZmFzdCBwYXRoLlxuXG4gICAgIExpc3Qgc2V4cHMgcmVwcmVzZW50IGEgZmllbGQgdGhhdCBpcyBwcmVzZW50LCBzdWNoIGFzICh4IDEpIGZvciBhIGZpZWxkIG5hbWVkIFwieFwiLlxuICAgICBBdG9tIHNleHBzIHJlcHJlc2VudCBhIGZpZWxkIHRoYXQgaXMgYWJzZW50LCBvciBhdCBsZWFzdCBub3QgeWV0IHNlZW4uICopXG4gIHR5cGUgdCA9IHsgc3RhdGUgOiBTZXhwLnQgYXJyYXkgfSBbQEB1bmJveGVkXVxuXG4gIGxldCB1bnNhZmVfZ2V0IHQgcG9zID0gQXJyYXkudW5zYWZlX2dldCB0LnN0YXRlIHBvc1xuICBsZXQgdW5zYWZlX3NldCB0IHBvcyBzZXhwID0gQXJyYXkudW5zYWZlX3NldCB0LnN0YXRlIHBvcyBzZXhwXG4gIGxldCBhYnNlbnQgPSBTZXhwLkF0b20gXCJcIlxuICBsZXQgY3JlYXRlIGxlbiA9IHsgc3RhdGUgPSBBcnJheS5tYWtlIGxlbiBhYnNlbnQgfVxuZW5kXG5cbigqIFBhcnNpbmcgZmllbGQgdmFsdWVzIGZyb20gc3RhdGUuICopXG5cbmxldCByZWMgcGFyc2VfdmFsdWVfbWFsZm9ybWVkXG4gIDogdHlwZSBhIGIuIE1hbGZvcm1lZC50IC0+IGZpZWxkczooYSAqIGIpIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhXG4gID1cbiAgZnVuIG1hbGZvcm1lZCB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIGxldCAoRmllbGQgZmllbGQpID0gZmllbGRzIGluXG4gIGxldCBtYWxmb3JtZWQgPVxuICAgIG1hdGNoIHBhcnNlX3ZhbHVlcyB+ZmllbGRzOmZpZWxkLnJlc3QgfnN0YXRlIH5wb3M6KHBvcyArIDEpIHdpdGhcbiAgICB8IChfIDogYikgLT4gbWFsZm9ybWVkXG4gICAgfCBleGNlcHRpb24gTWFsZm9ybWVkIG90aGVyIC0+IE1hbGZvcm1lZC5jb21iaW5lIG1hbGZvcm1lZCBvdGhlclxuICBpblxuICByYWlzZSAoTWFsZm9ybWVkIG1hbGZvcm1lZClcblxuYW5kIHBhcnNlX3ZhbHVlIDogdHlwZSBhIGIuIGZpZWxkczooYSAqIGIpIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhICogYiA9XG4gIGZ1biB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIGxldCAoRmllbGQgeyBuYW1lOyBraW5kOyBjb252OyByZXN0IH0pID0gZmllbGRzIGluXG4gIGxldCB2YWx1ZSA6IGEgPVxuICAgIG1hdGNoIGtpbmQsIFN0YXRlLnVuc2FmZV9nZXQgc3RhdGUgcG9zIHdpdGhcbiAgICAoKiB3ZWxsLWZvcm1lZCAqKVxuICAgIHwgUmVxdWlyZWQsIExpc3QgWyBfOyBzZXhwIF0gLT4gY29udiBzZXhwXG4gICAgfCBEZWZhdWx0IF8sIExpc3QgWyBfOyBzZXhwIF0gLT4gY29udiBzZXhwXG4gICAgfCBPbWl0X25pbCwgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IFNleHBfb3B0aW9uLCBMaXN0IFsgXzsgc2V4cCBdIC0+IFNvbWUgKGNvbnYgc2V4cClcbiAgICB8IFNleHBfbGlzdCwgTGlzdCBbIF87IHNleHAgXSAtPiBsaXN0X29mX3NleHAgY29udiBzZXhwXG4gICAgfCBTZXhwX2FycmF5LCBMaXN0IFsgXzsgc2V4cCBdIC0+IGFycmF5X29mX3NleHAgY29udiBzZXhwXG4gICAgfCBTZXhwX2Jvb2wsIExpc3QgWyBfIF0gLT4gdHJ1ZVxuICAgICgqIGlsbC1mb3JtZWQgKilcbiAgICB8ICggKFJlcXVpcmVkIHwgRGVmYXVsdCBfIHwgT21pdF9uaWwgfCBTZXhwX29wdGlvbiB8IFNleHBfbGlzdCB8IFNleHBfYXJyYXkpXG4gICAgICAsIChMaXN0IChfIDo6IF8gOjogXyA6OiBfKSBhcyBzZXhwKSApIC0+XG4gICAgICBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgKE5vbl9wYWlyIChTb21lIHNleHApKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCAoIChSZXF1aXJlZCB8IERlZmF1bHQgXyB8IE9taXRfbmlsIHwgU2V4cF9vcHRpb24gfCBTZXhwX2xpc3QgfCBTZXhwX2FycmF5KVxuICAgICAgLCBMaXN0IChbXSB8IFsgXyBdKSApIC0+IHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTm9uX3BhaXIgTm9uZSkgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICAgIHwgU2V4cF9ib29sLCBMaXN0IChbXSB8IF8gOjogXyA6OiBfKSAtPlxuICAgICAgcGFyc2VfdmFsdWVfbWFsZm9ybWVkIEJvb2xfcGF5bG9hZCB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgKCogYWJzZW50ICopXG4gICAgfCBSZXF1aXJlZCwgQXRvbSBfIC0+IHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTWlzc2luZyBbIG5hbWUgXSkgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICAgIHwgRGVmYXVsdCBkZWZhdWx0LCBBdG9tIF8gLT4gZGVmYXVsdCAoKVxuICAgIHwgT21pdF9uaWwsIEF0b20gXyAtPiBjb252IChMaXN0IFtdKVxuICAgIHwgU2V4cF9vcHRpb24sIEF0b20gXyAtPiBOb25lXG4gICAgfCBTZXhwX2xpc3QsIEF0b20gXyAtPiBbXVxuICAgIHwgU2V4cF9hcnJheSwgQXRvbSBfIC0+IFt8fF1cbiAgICB8IFNleHBfYm9vbCwgQXRvbSBfIC0+IGZhbHNlXG4gIGluXG4gIHZhbHVlLCBwYXJzZV92YWx1ZXMgfmZpZWxkczpyZXN0IH5zdGF0ZSB+cG9zOihwb3MgKyAxKVxuXG5hbmQgcGFyc2VfdmFsdWVzIDogdHlwZSBhLiBmaWVsZHM6YSBGaWVsZHMudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IHBvczppbnQgLT4gYSA9XG4gIGZ1biB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIG1hdGNoIGZpZWxkcyB3aXRoXG4gIHwgRmllbGQgXyAtPiBwYXJzZV92YWx1ZSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gIHwgRW1wdHkgLT4gKClcbjs7XG5cbigqIFBvcHVsYXRpbmcgc3RhdGUuIEhhbmRsZXMgc2xvdyBwYXRoIGNhc2VzIHdoZXJlIHRoZXJlIG1heSBiZSByZW9yZGVyZWQsIGR1cGxpY2F0ZWQsXG4gICBtaXNzaW5nLCBvciBleHRyYSBmaWVsZHMuICopXG5cbmxldCByZWMgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIG1hbGZvcm1lZCB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzID1cbiAgbGV0IG1hbGZvcm1lZCA9XG4gICAgbWF0Y2ggcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzIHdpdGhcbiAgICB8ICgpIC0+IG1hbGZvcm1lZFxuICAgIHwgZXhjZXB0aW9uIE1hbGZvcm1lZCBvdGhlciAtPiBNYWxmb3JtZWQuY29tYmluZSBtYWxmb3JtZWQgb3RoZXJcbiAgaW5cbiAgcmFpc2UgKE1hbGZvcm1lZCBtYWxmb3JtZWQpXG5cbmFuZCBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgPVxuICBtYXRjaCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKExpc3QgKEF0b20gbmFtZSA6OiBfKSBhcyBmaWVsZCkgOjogc2V4cHMgLT5cbiAgICBsZXQgaSA9IGluZGV4IG5hbWUgaW5cbiAgICAobWF0Y2ggc2VlbiA8PSBpICYmIGkgPCBsZW4gd2l0aFxuICAgICB8IHRydWUgLT5cbiAgICAgICAoKiB2YWxpZCBmaWVsZCBmb3Igc2xvdy1wYXRoIHBhcnNpbmcgKilcbiAgICAgICBsZXQgcG9zID0gaSAtIHNlZW4gaW5cbiAgICAgICAobWF0Y2ggU3RhdGUudW5zYWZlX2dldCBzdGF0ZSBwb3Mgd2l0aFxuICAgICAgICB8IEF0b20gXyAtPlxuICAgICAgICAgICgqIGZpZWxkIG5vdCBzZWVuIHlldCAqKVxuICAgICAgICAgIFN0YXRlLnVuc2FmZV9zZXQgc3RhdGUgcG9zIGZpZWxkO1xuICAgICAgICAgIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwc1xuICAgICAgICB8IExpc3QgXyAtPlxuICAgICAgICAgICgqIGZpZWxkIGFscmVhZHkgc2VlbiAqKVxuICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRHVwcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcylcbiAgICAgfCBmYWxzZSAtPlxuICAgICAgIChtYXRjaCAwIDw9IGkgJiYgaSA8IHNlZW4gd2l0aFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAoKiBmaWVsZCBzZWVuIGluIGZhc3QgcGF0aCAqKVxuICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRHVwcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwc1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgKCogZXh0cmEgZmllbGQgKilcbiAgICAgICAgICAobWF0Y2ggZXh0cmEgd2l0aFxuICAgICAgICAgICB8IHRydWUgLT4gcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICBwYXJzZV9zcGluZV9tYWxmb3JtZWQgKEV4dHJhcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcykpKVxuICB8IHNleHAgOjogc2V4cHMgLT5cbiAgICBwYXJzZV9zcGluZV9tYWxmb3JtZWQgKE5vbl9wYWlyIChTb21lIHNleHApKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG47O1xuXG4oKiBTbG93IHBhdGggZm9yIHJlY29yZCBwYXJzaW5nLiBVc2VzIHN0YXRlIHRvIHN0b3JlIGZpZWxkcyBhcyB0aGV5IGFyZSBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzID1cbiAgbGV0IHVuc2VlbiA9IEZpZWxkcy5sZW5ndGggZmllbGRzIGluXG4gIGxldCBzdGF0ZSA9IFN0YXRlLmNyZWF0ZSB1bnNlZW4gaW5cbiAgbGV0IGxlbiA9IHNlZW4gKyB1bnNlZW4gaW5cbiAgKCogcG9wdWxhdGUgc3RhdGUgKilcbiAgcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzO1xuICAoKiBwYXJzZSB2YWx1ZXMgZnJvbSBzdGF0ZSAqKVxuICBwYXJzZV92YWx1ZXMgfmZpZWxkcyB+c3RhdGUgfnBvczowXG47O1xuXG4oKiBGYXN0IHBhdGggZm9yIHJlY29yZCBwYXJzaW5nLiBEaXJlY3RseSBwYXJzZXMgYW5kIHJldHVybnMgZmllbGRzIGluIHRoZSBvcmRlciB0aGV5IGFyZVxuICAgZGVjbGFyZWQuIEZhbGxzIGJhY2sgb24gc2xvdyBwYXRoIGlmIGFueSBmaWVsZHMgYXJlIGFic2VudCwgcmVvcmRlcmVkLCBvciBtYWxmb3JtZWQuICopXG5cbmxldCByZWMgcGFyc2VfZmllbGRfZmFzdFxuICA6IHR5cGUgYSBiLlxuICAgIGZpZWxkczooYSAqIGIpIEZpZWxkcy50XG4gICAgLT4gaW5kZXg6KHN0cmluZyAtPiBpbnQpXG4gICAgLT4gZXh0cmE6Ym9vbFxuICAgIC0+IHNlZW46aW50XG4gICAgLT4gU2V4cC50IGxpc3RcbiAgICAtPiBhICogYlxuICA9XG4gIGZ1biB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMgLT5cbiAgbGV0IChGaWVsZCB7IG5hbWU7IGtpbmQ7IGNvbnY7IHJlc3QgfSkgPSBmaWVsZHMgaW5cbiAgbWF0Y2ggc2V4cHMgd2l0aFxuICB8IExpc3QgKEF0b20gYXRvbSA6OiBhcmdzKSA6OiBvdGhlcnMgd2hlbiBTdHJpbmcuZXF1YWwgYXRvbSBuYW1lIC0+XG4gICAgKG1hdGNoIGtpbmQsIGFyZ3Mgd2l0aFxuICAgICB8IFJlcXVpcmVkLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IERlZmF1bHQgXywgWyBzZXhwIF0gLT5cbiAgICAgICBjb252IHNleHAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgfCBPbWl0X25pbCwgWyBzZXhwIF0gLT5cbiAgICAgICBjb252IHNleHAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgfCBTZXhwX29wdGlvbiwgWyBzZXhwIF0gLT5cbiAgICAgICAoIFNvbWUgKGNvbnYgc2V4cClcbiAgICAgICAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnMgKVxuICAgICB8IFNleHBfbGlzdCwgWyBzZXhwIF0gLT5cbiAgICAgICAoIGxpc3Rfb2Zfc2V4cCBjb252IHNleHBcbiAgICAgICAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnMgKVxuICAgICB8IFNleHBfYXJyYXksIFsgc2V4cCBdIC0+XG4gICAgICAgKCBhcnJheV9vZl9zZXhwIGNvbnYgc2V4cFxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9ib29sLCBbXSAtPlxuICAgICAgIHRydWUsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgKCogbWFsZm9ybWVkIGZpZWxkIG9mIHNvbWUga2luZCwgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gICAgIHwgXywgXyAtPiBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMpXG4gICgqIG1hbGZvcm1lZCBvciBvdXQtb2Ytb3JkZXIgZmllbGQsIGRpc3BhdGNoIHRvIHNsb3cgcGF0aCAqKVxuICB8IF8gLT4gcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzXG5cbmFuZCBwYXJzZV9zcGluZV9mYXN0XG4gIDogdHlwZSBhLlxuICAgIGZpZWxkczphIEZpZWxkcy50XG4gICAgLT4gaW5kZXg6KHN0cmluZyAtPiBpbnQpXG4gICAgLT4gZXh0cmE6Ym9vbFxuICAgIC0+IHNlZW46aW50XG4gICAgLT4gU2V4cC50IGxpc3RcbiAgICAtPiBhXG4gID1cbiAgZnVuIH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcyAtPlxuICBtYXRjaCBmaWVsZHMgd2l0aFxuICB8IEZpZWxkIF8gLT4gcGFyc2VfZmllbGRfZmFzdCB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHNcbiAgfCBFbXB0eSAtPlxuICAgIChtYXRjaCBzZXhwcyB3aXRoXG4gICAgIHwgW10gLT4gKClcbiAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAoKiBleHRyYSBzZXhwcywgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gICAgICAgcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzKVxuOztcblxubGV0IHBhcnNlX3JlY29yZF9mYXN0IH5maWVsZHMgfmluZGV4IH5leHRyYSBzZXhwcyA9XG4gIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuOjAgc2V4cHNcbjs7XG5cbigqIEVudHJ5IHBvaW50cy4gKilcblxubGV0IHJlY29yZF9vZl9zZXhwc1xuICAgICAgfmNhbGxlclxuICAgICAgfmNvbnRleHRcbiAgICAgIH5maWVsZHNcbiAgICAgIH5pbmRleF9vZl9maWVsZFxuICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgfmNyZWF0ZVxuICAgICAgc2V4cHNcbiAgPVxuICBsZXQgYWxsb3dfZXh0cmFfZmllbGRzID1cbiAgICBhbGxvd19leHRyYV9maWVsZHMgfHwgbm90ICFTZXhwX2NvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkc1xuICBpblxuICBtYXRjaFxuICAgIHBhcnNlX3JlY29yZF9mYXN0IH5maWVsZHMgfmluZGV4OmluZGV4X29mX2ZpZWxkIH5leHRyYTphbGxvd19leHRyYV9maWVsZHMgc2V4cHNcbiAgd2l0aFxuICB8IHZhbHVlIC0+IGNyZWF0ZSB2YWx1ZVxuICB8IGV4Y2VwdGlvbiBNYWxmb3JtZWQgbWFsZm9ybWVkIC0+IE1hbGZvcm1lZC5yYWlzZSBtYWxmb3JtZWQgfmNhbGxlciB+Y29udGV4dFxuOztcblxubGV0IHJlY29yZF9vZl9zZXhwIH5jYWxsZXIgfmZpZWxkcyB+aW5kZXhfb2ZfZmllbGQgfmFsbG93X2V4dHJhX2ZpZWxkcyB+Y3JlYXRlIHNleHAgPVxuICBtYXRjaCAoc2V4cCA6IFNleHAudCkgd2l0aFxuICB8IEF0b20gXyBhcyBjb250ZXh0IC0+IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBjYWxsZXIgY29udGV4dFxuICB8IExpc3Qgc2V4cHMgYXMgY29udGV4dCAtPlxuICAgIHJlY29yZF9vZl9zZXhwc1xuICAgICAgfmNhbGxlclxuICAgICAgfmNvbnRleHRcbiAgICAgIH5maWVsZHNcbiAgICAgIH5pbmRleF9vZl9maWVsZFxuICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgfmNyZWF0ZVxuICAgICAgc2V4cHNcbjs7XG4iLCIoKiBUaGUgW2dsb2JhbGl6ZV97Ym9vbCxjaGFyLHVuaXR9XSBmdW5jdGlvbnMgYXJlIHdyaXR0ZW4gYXMgbWF0Y2hlcyBwbHVzIHRoZSBpZGVudGl0eVxuICAgZnVuY3Rpb24gc28gdGhhdCB0aGUgdHlwZSBjaGVja2VyIGNhbiBnaXZlIHRoZW0gdGhlIGRlc2lyZWQgdHlwZSwgd2l0aG91dCBoYXZpbmcgdG8gZG9cbiAgIGFueXRoaW5nIHNwZWNpYWwuICBIb3dldmVyLCBbZ2xvYmFsaXplX2ludF0gY2Fubm90IGJlIHdyaXR0ZW4gdGhpcyB3YXksIHNvIHdlIHJlc29ydCB0b1xuICAgdXNpbmcgYW4gW2V4dGVybmFsXS4gKilcblxubGV0IGdsb2JhbGl6ZV9ib29sID0gZnVuY3Rpb25cbiAgfCAodHJ1ZSB8IGZhbHNlKSBhcyBiIC0+IGJcbjs7XG5cbmxldCBnbG9iYWxpemVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ1xceDAwJyAuLiAnXFx4RkYnIGFzIGMgLT4gY1xuOztcblxuZXh0ZXJuYWwgZ2xvYmFsaXplX2Zsb2F0IDogKGZsb2F0W0Bsb2NhbF0pIC0+IGZsb2F0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludCA6IChpbnRbQGxvY2FsXSkgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludDMyIDogKGludDMyW0Bsb2NhbF0pIC0+IGludDMyID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludDY0IDogKGludDY0W0Bsb2NhbF0pIC0+IGludDY0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX25hdGl2ZWludCA6IChuYXRpdmVpbnRbQGxvY2FsXSkgLT4gbmF0aXZlaW50ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2J5dGVzIDogKGJ5dGVzW0Bsb2NhbF0pIC0+IGJ5dGVzID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX3N0cmluZyA6IChzdHJpbmdbQGxvY2FsXSkgLT4gc3RyaW5nID0gXCJjYW1sX29ial9kdXBcIlxuXG5sZXQgZ2xvYmFsaXplX3VuaXQgKCgpIGFzIHUpID0gdVxuXG5leHRlcm5hbCBnbG9iYWxpemVfYXJyYXknIDogKCdhIGFycmF5W0Bsb2NhbF0pIC0+ICdhIGFycmF5ID0gXCJjYW1sX29ial9kdXBcIlxuXG5sZXQgZ2xvYmFsaXplX2FycmF5IF8gYSA9IGdsb2JhbGl6ZV9hcnJheScgYVxuXG5sZXQgcmVjIGdsb2JhbGl6ZV9saXN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiBmIHggOjogZ2xvYmFsaXplX2xpc3QgZiB4c1xuOztcblxubGV0IGdsb2JhbGl6ZV9vcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbjs7XG5cbmxldCBnbG9iYWxpemVfcmVzdWx0IGdsb2JhbGl6ZV9hIGdsb2JhbGl6ZV9iIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IE9rIChnbG9iYWxpemVfYSBhKVxuICB8IEVycm9yIGIgLT4gRXJyb3IgKGdsb2JhbGl6ZV9iIGIpXG47O1xuXG5sZXQgZ2xvYmFsaXplX3JlZicgciA9IHJlZiAhclxubGV0IGdsb2JhbGl6ZV9yZWYgXyByID0gZ2xvYmFsaXplX3JlZicgclxuIiwiKCoqIFByaW1pdGl2ZXMgZm9yIHBvbHltb3JwaGljIGNvbXBhcmUuICopXG5cbigqXyBQb2x5bW9ycGhpYyBjb21waWxlciBwcmltaXRpdmVzIGNhbid0IGJlIGFsaWFzZXMgYXMgdGhpcyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gIGlubGluaW5nLiAoSWYgYWxpYXNlZCB3aXRob3V0IGEgdHlwZSBhbm5vdGF0aW9uLCB0aGUgY29tcGlsZXIgd291bGQgaW1wbGVtZW50IHRoZW1cbiAgdXNpbmcgdGhlIGdlbmVyaWMgY29kZSBkb2luZyBhIEMgY2FsbCwgYW5kIGl0J3MgdGhpcyBjb2RlIHRoYXQgd291bGQgYmUgaW5saW5lZC4pIEFzIGFcbiAgcmVzdWx0IHdlIGhhdmUgdG8gY29weSB0aGUgW2V4dGVybmFsIC4uLl0gZGVjbGFyYXRpb24gaGVyZS4gKilcbmV4dGVybmFsICggPCApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPSApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoID4gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA+PSApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgYXNjZW5kaW5nIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGVxdWFsIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG5sZXQgbWF4IHggeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbmxldCBtaW4geCB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuIiwiKCogVGhpcyBtb2R1bGUgaXMgaW5jbHVkZWQgaW4gW0ltcG9ydF0uICBJdCBpcyBhaW1lZCBhdCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBzdGFuZGFyZFxuICAgY29tYmluYXRvcnMgZm9yIFtzZXhwX29mXSwgW29mX3NleHBdLCBbY29tcGFyZV0gYW5kIFtoYXNoXSBhbmQgYXJlIGluY2x1ZGVkIGluXG4gICBbSW1wb3J0XS4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgKCogVGhlc2UgbW9kdWxlcyBhcmUgcmVkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdClcbiAgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxudHlwZSAnYSByZWYgPSAnYSBTdGRsaWIucmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG4oKiBSZXNodWZmbGUgW1N0ZGxpYl0gc28gdGhhdCB3ZSBjaG9vc2UgdGhlIG1vZHVsZXMgdXNpbmcgbGFiZWxzIHdoZW4gYXZhaWxhYmxlLiAqKVxubW9kdWxlIFN0ZGxpYiA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZGxpYlxuICBpbmNsdWRlIFN0ZGxpYi5TdGRMYWJlbHNcbiAgaW5jbHVkZSBTdGRsaWIuTW9yZUxhYmVsc1xuZW5kXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbmV4dGVybmFsICggJiYgKSA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsIG5vdCA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbigqIFdlIHVzZSBbT2JqLm1hZ2ljXSBoZXJlIGFzIG90aGVyIGltcGxlbWVudGF0aW9ucyBnZW5lcmF0ZSBhIGNvbmRpdGlvbmFsIGp1bXAgYW5kIHRoZVxuICAgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBpcyBub3RpY2VhYmxlLiAqKVxubGV0IGJvb2xfdG9faW50ICh4IDogYm9vbCkgOiBpbnQgPSBTdGRsaWIuT2JqLm1hZ2ljIHhcblxuKCogVGhpcyBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseSAqKVxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0ICggIT0gKSA9IFN0ZGxpYi4oICE9IClcbmxldCAoICogKSA9IFN0ZGxpYi4oICogKVxubGV0ICggKiogKSA9IFN0ZGxpYi4oICoqIClcbmxldCAoICouICkgPSBTdGRsaWIuKCAqLiApXG5sZXQgKCArICkgPSBTdGRsaWIuKCArIClcbmxldCAoICsuICkgPSBTdGRsaWIuKCArLiApXG5sZXQgKCAtICkgPSBTdGRsaWIuKCAtIClcbmxldCAoIC0uICkgPSBTdGRsaWIuKCAtLiApXG5sZXQgKCAvICkgPSBTdGRsaWIuKCAvIClcbmxldCAoIC8uICkgPSBTdGRsaWIuKCAvLiApXG5cbm1vZHVsZSBQb2x5ID0gUG9seTAgKCoqIEBjYW5vbmljYWwgQmFzZS5Qb2x5ICopXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG4gIGV4dGVybmFsICggPCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeSB4XG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoIDwgKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPiApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPj0gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBtYXggKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogYm9vbCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYm9vbCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBib29sKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogYm9vbCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGNoYXIpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogY2hhcikgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGNoYXIpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgaSB4ID0gU3RkbGliLlVjaGFyLnRvX2ludCB4XG4gIGxldCAoIDwgKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PSApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA9ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPiApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPiApIChpIHgpIChpIHkpXG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIChpIHgpIChpIHkpXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmFzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZGVzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgKGkgeCkgKGkgeSlcbiAgbGV0IGVxdWFsICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIChpIHgpIChpIHkpXG4gIGxldCBtYXggKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGZsb2F0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogZmxvYXQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGZsb2F0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGZsb2F0KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogZmxvYXQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHN0cmluZykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHN0cmluZykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBzdHJpbmcpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBzdHJpbmcpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBieXRlcykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYnl0ZXMpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYnl0ZXMpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBieXRlcykgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG4oKiBUaGlzIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgY2FuIHNwZWNpYWxpemUgaXQgYXMgYVxuICAgZGlyZWN0IHNldCBvciBjYW1sX21vZGlmeSAqKVxuZXh0ZXJuYWwgKCA6PSApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdvbid0IHVuYm94XG4gICByZWZlcmVuY2VzICopXG5leHRlcm5hbCAoICEgKSA6ICgnYSByZWZbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHJlZiA6ICdhIC0+ICgnYSByZWZbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuXG5sZXQgKCBAICkgPSBTdGRsaWIuKCBAIClcbmxldCAoIF4gKSA9IFN0ZGxpYi4oIF4gKVxubGV0ICggfi0gKSA9IFN0ZGxpYi4oIH4tIClcbmxldCAoIH4tLiApID0gU3RkbGliLiggfi0uIClcbmxldCAoIGFzciApID0gU3RkbGliLiggYXNyIClcbmxldCAoIGxhbmQgKSA9IFN0ZGxpYi4oIGxhbmQgKVxubGV0IGxub3QgPSBTdGRsaWIubG5vdFxubGV0ICggbG9yICkgPSBTdGRsaWIuKCBsb3IgKVxubGV0ICggbHNsICkgPSBTdGRsaWIuKCBsc2wgKVxubGV0ICggbHNyICkgPSBTdGRsaWIuKCBsc3IgKVxubGV0ICggbHhvciApID0gU3RkbGliLiggbHhvciApXG5sZXQgKCBtb2QgKSA9IFN0ZGxpYi4oIG1vZCApXG5sZXQgYWJzID0gU3RkbGliLmFic1xubGV0IGZhaWx3aXRoID0gU3RkbGliLmZhaWx3aXRoXG5sZXQgZnN0ID0gU3RkbGliLmZzdFxubGV0IGludmFsaWRfYXJnID0gU3RkbGliLmludmFsaWRfYXJnXG5sZXQgc25kID0gU3RkbGliLnNuZFxuXG4oKiBbcmFpc2VdIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgYXMgdGhlIGNvbXBpbGVyIGF1dG9tYXRpY2FsbHkgcmVwbGFjZXNcbiAgICclcmFpc2UnIGJ5ICclcmVyYWlzZScgd2hlbiBhcHByb3ByaWF0ZS4gKilcbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+IF8gPSBcIiVyYWlzZVwiXG5cbmxldCBwaHlzX2VxdWFsID0gU3RkbGliLiggPT0gKVxuXG5leHRlcm5hbCBkZWNyIDogKGludCByZWZbQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVkZWNyXCJcbmV4dGVybmFsIGluY3IgOiAoaW50IHJlZltAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWluY3JcIlxuXG4oKiB1c2VkIGJ5IHNleHBfY29udiwgd2hpY2ggZmxvYXQwIGRlcGVuZHMgb24gdGhyb3VnaCBvcHRpb24gKilcbmxldCBmbG9hdF9vZl9zdHJpbmcgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nXG5cbigqIFthbV90ZXN0aW5nXSBpcyB1c2VkIGluIGEgZmV3IHBsYWNlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkgd2hlbiBpbiB0ZXN0aW5nIG1vZGUsIHN1Y2hcbiAgIGFzIGluIFtyYW5kb20ubWxdLiAgW2FtX3Rlc3RpbmddIGlzIGltcGxlbWVudGVkIHVzaW5nIFtCYXNlX2FtX3Rlc3RpbmddLCBhIHdlYWsgQy9qc1xuICAgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbZmFsc2VdLCBidXQgd2hlbiBsaW5raW5nIGFuIGlubGluZS10ZXN0LXJ1bm5lciBleGVjdXRhYmxlLCBpc1xuICAgb3ZlcnJpZGRlbiBieSBhbm90aGVyIHByaW1pdGl2ZSB0aGF0IHJldHVybnMgW3RydWVdLiAqKVxuZXh0ZXJuYWwgYW1fdGVzdGluZyA6IHVuaXQgLT4gYm9vbCA9IFwiQmFzZV9hbV90ZXN0aW5nXCJcblxubGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nICgpXG4iLCIoKiBbSW50MF0gZGVmaW5lcyBpbnRlZ2VyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW1N0ZGxpYl0uIFtJbnQwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlXG4gICBwYXJ0IG9mIFtTdGRsaWJdIHRoYXQgW0Jhc2VdIHVzZXMgZm9yIGludGVnZXJzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlclxuICAgdGhhbiBpbnQwLm1sIHNob3VsZCB1c2UgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5IHRocm91Z2ggW1N0ZGxpYl0uIFtJbnQwXSBoYXNcbiAgIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGludHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkludF0gaW4gYnVpbGRcbiAgIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEludCAgPSBJbnQwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEludCA9IEludDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXBcbiAgIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuSW50XS4gKilcblxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfaW50XG5sZXQgb2Zfc3RyaW5nID0gU3RkbGliLmludF9vZl9zdHJpbmdcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmludF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fZmxvYXQgPSBTdGRsaWIuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXQgPSBTdGRsaWIuaW50X29mX2Zsb2F0XG5sZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBTdGRsaWIubWluX2ludFxubGV0IHN1Y2MgPSBTdGRsaWIuc3VjY1xubGV0IHByZWQgPSBTdGRsaWIucHJlZFxuIiwib3BlbiEgSW1wb3J0MFxuaW5jbHVkZSBTdGRsaWIuUHJpbnRmXG5cbigqKiBmYWlsd2l0aCwgaW52YWxpZF9hcmcsIGFuZCBleGl0IGFjY2VwdGluZyBwcmludGYncyBmb3JtYXQuICopXG5cbmxldFtAaW5saW5lIG5ldmVyXSBmYWlsd2l0aGYgZm10ID0ga3NwcmludGYgKGZ1biBzICgpIC0+IGZhaWx3aXRoIHMpIGZtdFxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYXJnZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gaW52YWxpZF9hcmcgcykgZm10XG4iLCIoKiBbU3lzMF0gZGVmaW5lcyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtTdGRsaWIuU3lzXS4gIFtTeXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtTdGRsaWIuU3lzXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN5cy5tbFxuICAgc2hvdWxkIHVzZSBbU3RkbGliLlN5c10uIFtTeXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZVxuICAgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSB0aGVzZVxuICAgZnVuY3Rpb25zIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TeXNdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBTeXMgPSBTeXMwXS4gIERlZmluaW5nIFttb2R1bGUgU3lzID0gU3lzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZVxuICAgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TeXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbnR5cGUgYmFja2VuZF90eXBlID0gU3RkbGliLlN5cy5iYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG5cbmxldCBiYWNrZW5kX3R5cGUgPSBTdGRsaWIuU3lzLmJhY2tlbmRfdHlwZVxubGV0IGludGVyYWN0aXZlID0gU3RkbGliLlN5cy5pbnRlcmFjdGl2ZVxubGV0IG9zX3R5cGUgPSBTdGRsaWIuU3lzLm9zX3R5cGVcbmxldCB1bml4ID0gU3RkbGliLlN5cy51bml4XG5sZXQgd2luMzIgPSBTdGRsaWIuU3lzLndpbjMyXG5sZXQgY3lnd2luID0gU3RkbGliLlN5cy5jeWd3aW5cbmxldCB3b3JkX3NpemVfaW5fYml0cyA9IFN0ZGxpYi5TeXMud29yZF9zaXplXG5sZXQgaW50X3NpemVfaW5fYml0cyA9IFN0ZGxpYi5TeXMuaW50X3NpemVcbmxldCBiaWdfZW5kaWFuID0gU3RkbGliLlN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSBTdGRsaWIuU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgbWF4X2FycmF5X2xlbmd0aCA9IFN0ZGxpYi5TeXMubWF4X2FycmF5X2xlbmd0aFxubGV0IHJ1bnRpbWVfdmFyaWFudCA9IFN0ZGxpYi5TeXMucnVudGltZV92YXJpYW50XG5sZXQgcnVudGltZV9wYXJhbWV0ZXJzID0gU3RkbGliLlN5cy5ydW50aW1lX3BhcmFtZXRlcnNcbmxldCBhcmd2ID0gU3RkbGliLlN5cy5hcmd2XG5sZXQgZ2V0X2FyZ3YgKCkgPSBTdGRsaWIuU3lzLmFyZ3ZcbmxldCBvY2FtbF92ZXJzaW9uID0gU3RkbGliLlN5cy5vY2FtbF92ZXJzaW9uXG5sZXQgZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgPSBTdGRsaWIuU3lzLmVuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG5sZXQgcnVudGltZV93YXJuaW5nc19lbmFibGVkID0gU3RkbGliLlN5cy5ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcblxubGV0IGdldGVudl9leG4gdmFyID1cbiAgdHJ5IFN0ZGxpYi5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgU3RkbGliLk5vdF9mb3VuZCAtPlxuICAgIFByaW50Zi5mYWlsd2l0aGYgXCJTeXMuZ2V0ZW52X2V4bjogZW52aXJvbm1lbnQgdmFyaWFibGUgJXMgaXMgbm90IHNldFwiIHZhciAoKVxuOztcblxubGV0IGdldGVudiB2YXIgPVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlb3BhcXVlXCJcbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eV9nbG9iYWwgOiAnYSAtPiAnYSA9IFwiJW9wYXF1ZVwiXG5cbmV4Y2VwdGlvbiBCcmVhayA9IFN0ZGxpYi5TeXMuQnJlYWtcbiIsIigqIFtBcnJheTBdIGRlZmluZXMgYXJyYXkgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zXG4gICBvZiBbU3RkbGliLkFycmF5XS4gIFtBcnJheTBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbU3RkbGliLkFycmF5XVxuICAgdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBhcnJheTAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkFycmF5XS5cbiAgIFtBcnJheTBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGFycmF5cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQXJyYXldIGluIGJ1aWxkIG9yZGVyIHNob3VsZFxuICAgZG8gW21vZHVsZSBBcnJheSA9IEFycmF5MF0uICBUaGlzIGluY2x1ZGVzIHVzZXMgb2Ygc3Vic2NyaXB0IHN5bnRheCAoW3guKGkpXSwgW3guKGkpIDwtXG4gICBlXSksIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbQXJyYXkuZ2V0XSBhbmQgW0FycmF5LnNldF0uXG4gICBEZWZpbmluZyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb21cbiAgIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkFycmF5XS4gKilcblxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG4gIGV4dGVybmFsIGNyZWF0ZV9sb2NhbCA6IGludCAtPiAnYSAtPiAoJ2EgYXJyYXlbQGxvY2FsXSkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhIGFycmF5W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhIGFycmF5W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICA6ICBzcmM6KCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OignYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5lbmRcblxuaW5jbHVkZSBBcnJheVxuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgdHJ5IGNyZWF0ZSBsZW4geCB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZSB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGNyZWF0ZV9sb2NhbCB+bGVuIHggPVxuICBcbiAgICAodHJ5IGNyZWF0ZV9sb2NhbCBsZW4geCB3aXRoXG4gICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlX2xvY2FsIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpKVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW4gPVxuICB0cnkgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgbGVuIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGFwcGVuZCA9IFN0ZGxpYi5BcnJheS5hcHBlbmRcbmxldCBibGl0ID0gU3RkbGliLkFycmF5LmJsaXRcbmxldCBjb25jYXQgPSBTdGRsaWIuQXJyYXkuY29uY2F0XG5sZXQgY29weSA9IFN0ZGxpYi5BcnJheS5jb3B5XG5sZXQgZmlsbCA9IFN0ZGxpYi5BcnJheS5maWxsXG5cbmxldCBpbml0IGxlbiB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBbfHxdXG4gIGVsc2UgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSBjcmVhdGUgfmxlbiAoZiAwKSBpblxuICAgIGZvciBpID0gMSB0byBJbnQwLnByZWQgbGVuIGRvXG4gICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgZG9uZTtcbiAgICByZXMpXG47O1xuXG5sZXQgbWFrZV9tYXRyaXggPSBTdGRsaWIuQXJyYXkubWFrZV9tYXRyaXhcbmxldCBvZl9saXN0ID0gU3RkbGliLkFycmF5Lm9mX2xpc3RcbmxldCBzdWIgPSBTdGRsaWIuQXJyYXkuc3ViXG5sZXQgdG9fbGlzdCA9IFN0ZGxpYi5BcnJheS50b19saXN0XG5cbmxldCBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gbGVuZ3RoIHQgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IHQgaSkgIXJcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IG1hcCB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIH5sZW4gKGYgKHVuc2FmZV9nZXQgdCAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgbWFwaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgfmxlbiAoZiAwICh1bnNhZmVfZ2V0IHQgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgc3RhYmxlX3NvcnQgdCB+Y29tcGFyZSA9IFN0ZGxpYi5BcnJheS5zdGFibGVfc29ydCB0IH5jbXA6Y29tcGFyZVxuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBlbHRfaSA9IHQuKGkpIGluXG4gIGxldCBlbHRfaiA9IHQuKGopIGluXG4gIHVuc2FmZV9zZXQgdCBpIGVsdF9qO1xuICB1bnNhZmVfc2V0IHQgaiBlbHRfaVxuOztcbiIsIigqIFtDaGFyMF0gZGVmaW5lcyBjaGFyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW1N0ZGxpYi5DaGFyXS4gIFtDaGFyMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQ2hhcl0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gY2hhcjAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkNoYXJdLlxuICAgW0NoYXIwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBjaGFycyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQ2hhcl0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIENoYXIgPSBDaGFyMF0uICBEZWZpbmluZyBbbW9kdWxlIENoYXIgPSBDaGFyMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5DaGFyXS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxubGV0IGVzY2FwZWQgPSBTdGRsaWIuQ2hhci5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gU3RkbGliLkNoYXIubG93ZXJjYXNlX2FzY2lpXG5sZXQgdG9faW50ID0gU3RkbGliLkNoYXIuY29kZVxubGV0IHVuc2FmZV9vZl9pbnQgPSBTdGRsaWIuQ2hhci51bnNhZmVfY2hyXG5sZXQgdXBwZXJjYXNlID0gU3RkbGliLkNoYXIudXBwZXJjYXNlX2FzY2lpXG5cbigqIFdlIHVzZSBvdXIgb3duIHJhbmdlIHRlc3Qgd2hlbiBjb252ZXJ0aW5nIGludGVnZXJzIHRvIGNoYXJzIHJhdGhlciB0aGFuXG4gICBjYWxsaW5nIFtTdGRsaWIuQ2hhci5jaHJdIGJlY2F1c2UgaXQncyBzaW1wbGUgYW5kIGl0IHNhdmVzIHVzIGEgZnVuY3Rpb24gY2FsbFxuICAgYW5kIHRoZSB0cnktd2l0aCAoZXhjZXB0aW9ucyBjb3N0LCBlc3BlY2lhbGx5IGluIHRoZSB3b3JsZCB3aXRoIGJhY2t0cmFjZXMpLiAqKVxubGV0IGludF9pc19vayBpID0gMCA8PSBpICYmIGkgPD0gMjU1XG5sZXQgbWluX3ZhbHVlID0gdW5zYWZlX29mX2ludCAwXG5sZXQgbWF4X3ZhbHVlID0gdW5zYWZlX29mX2ludCAyNTVcbmxldCBvZl9pbnQgaSA9IGlmIGludF9pc19vayBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX2ludF9leG4gaSA9XG4gIGlmIGludF9pc19vayBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5vZl9pbnRfZXhuIGdvdCBpbnRlZ2VyIG91dCBvZiByYW5nZTogJWRcIiBpICgpXG47O1xuXG5sZXQgZXF1YWwgKHQxIDogY2hhcikgdDIgPSBQb2x5LmVxdWFsIHQxIHQyXG4iLCIoKiBbTGlzdDBdIGRlZmluZXMgbGlzdCBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtTdGRsaWIuTGlzdF0uICBbTGlzdDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbU3RkbGliLkxpc3RdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGxpc3QwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5MaXN0XS5cbiAgIFtMaXN0MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgbGlzdHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkxpc3RdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBMaXN0ID0gTGlzdDBdLiAgRGVmaW5pbmcgW21vZHVsZSBMaXN0ID0gTGlzdDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuTGlzdF0uICopXG5cblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgaGRfZXhuID0gU3RkbGliLkxpc3QuaGRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGlzdC5sZW5ndGhcbmxldCByZXZfYXBwZW5kID0gU3RkbGliLkxpc3QucmV2X2FwcGVuZFxubGV0IHRsX2V4biA9IFN0ZGxpYi5MaXN0LnRsXG5sZXQgdW56aXAgPSBTdGRsaWIuTGlzdC5zcGxpdFxuXG4oKiBTb21lIG9mIHRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxuXG5sZXQgcmVjIGV4aXN0cyB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IGZhbHNlXG4gIHwgeCA6OiB4cyAtPiBpZiBmIHggdGhlbiB0cnVlIGVsc2UgZXhpc3RzIHhzIH5mXG47O1xuXG5sZXQgcmVjIGV4aXN0czJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IGZhbHNlXG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGYgYTEgYTIgfHwgZXhpc3RzMl9vayBsMSBsMiB+ZlxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IGluaXRcbiAgfCBhIDo6IGwgLT4gZm9sZCBsIH5pbml0OihmIGluaXQgYSkgfmZcbjs7XG5cbmxldCByZWMgZm9sZDJfb2sgbDEgbDIgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gaW5pdFxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPiBmb2xkMl9vayBsMSBsMiB+ZiB+aW5pdDooZiBpbml0IGExIGEyKVxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuOztcblxubGV0IGZvcl9hbGwgdCB+ZjooZiBbQGxvY2FsXSkgPSBub3QgKGV4aXN0cyB0IH5mOihmdW4geCAtPiBub3QgKGYgeCkpKVxuXG5sZXQgcmVjIGZvcl9hbGwyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGYgYTEgYTIgJiYgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgYSA6OiBsIC0+XG4gICAgZiBhO1xuICAgIGl0ZXIgbCB+ZlxuOztcblxubGV0IHJlYyBpdGVyMl9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gdW5pdCkgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gKClcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT5cbiAgICBmIGExIGEyO1xuICAgIGl0ZXIyX29rIGwxIGwyIH5mXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuOztcblxubGV0IHJlYyBub250YWlsX21hcCB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPlxuICAgIGxldCB5ID0gZiB4IGluXG4gICAgeSA6OiBub250YWlsX21hcCB4cyB+ZlxuOztcblxubGV0IG5vbnRhaWxfbWFwaSB0IH5mID0gU3RkbGliLkxpc3QubWFwaSB0IH5mXG5sZXQgcGFydGl0aW9uIHQgfmYgPSBTdGRsaWIuTGlzdC5wYXJ0aXRpb24gdCB+ZlxuXG5sZXQgcmV2X21hcCA9XG4gIGxldCByZWMgcm1hcF9mIGYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhIDo6IGwgLT4gcm1hcF9mIGYgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIGZ1biBsIH5mOihmIFtAbG9jYWxdKSAtPiBybWFwX2YgZiBbXSBsXG47O1xuXG5sZXQgcmV2X21hcDJfb2sgPVxuICBsZXQgcmVjIHJtYXAyX2YgZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IGFjY3VcbiAgICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPiBybWFwMl9mIGYgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgZnVuIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgLT4gcm1hcDJfZiBmIFtdIGwxIGwyXG47O1xuXG5sZXQgc29ydCBsIH5jb21wYXJlID0gU3RkbGliLkxpc3Quc29ydCBsIH5jbXA6Y29tcGFyZVxubGV0IHN0YWJsZV9zb3J0IGwgfmNvbXBhcmUgPSBTdGRsaWIuTGlzdC5zdGFibGVfc29ydCBsIH5jbXA6Y29tcGFyZVxuXG5sZXQgcmV2ID0gZnVuY3Rpb25cbiAgfCAoW10gfCBbIF8gXSkgYXMgcmVzIC0+IHJlc1xuICB8IHggOjogeSA6OiByZXN0IC0+IHJldl9hcHBlbmQgcmVzdCBbIHk7IHggXVxuOztcblxubGV0IGZvbGRfcmlnaHQgbCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5pbml0ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gaW5pdCAoKiBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBbfmZdIGJlbG93ICopXG4gIHwgXyAtPiBmb2xkIH5mOihmdW4gYSBiIC0+IGYgYiBhKSB+aW5pdCAocmV2IGwpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0Ml9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfLCBfIC0+IGZvbGQyX29rIH5mOihmdW4gYSBiIGMgLT4gZiBiIGMgYSkgfmluaXQgKHJldiBsMSkgKHJldiBsMikgW0Bub250YWlsXVxuOztcbiIsIigqXG4gICBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHJ1bnRpbWUgc3VwcG9ydCBmb3IgW3BweF9oYXNoXS5cblxuICAgVGhlIFtwcHhfaGFzaF0gc3ludGF4IGV4dGVuc2lvbiBzdXBwb3J0czogW0BAZGVyaXZpbmcgaGFzaF0gYW5kIFslaGFzaF9mb2xkOiBUWVBFXSBhbmRcbiAgIFslaGFzaDogVFlQRV1cblxuICAgRm9yIHR5cGUgW3RdIGEgZnVuY3Rpb24gW2hhc2hfZm9sZF90XSBvZiB0eXBlIFtIYXNoLnN0YXRlIC0+IHQgLT4gSGFzaC5zdGF0ZV0gaXNcbiAgIGdlbmVyYXRlZC5cblxuICAgVGhlIGdlbmVyYXRlZCBbaGFzaF9mb2xkXzxUPl0gZnVuY3Rpb24gaXMgY29tcG9zaXRpb25hbCwgZm9sbG93aW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlXG4gICB0eXBlOyBhbGxvd2luZyB1c2VyIG92ZXJyaWRlcyBhdCBldmVyeSBsZXZlbC4gVGhpcyBpcyBpbiBjb250cmFzdCB0byBvY2FtbCdzIGJ1aWx0aW5cbiAgIHBvbHltb3JwaGljIGhhc2hpbmcgW0hhc2h0YmwuaGFzaF0gd2hpY2ggaWdub3JlcyB1c2VyIG92ZXJyaWRlcy5cblxuICAgVGhlIGdlbmVyYXRvciBhbHNvIHByb3ZpZGVzIGEgZGlyZWN0IGhhc2gtZnVuY3Rpb24gW2hhc2hdIChuYW1lZCBbaGFzaF88VD5dIHdoZW4gPFQ+ICE9XG4gICBcInRcIikgb2YgdHlwZTogW3QgLT4gSGFzaC5oYXNoX3ZhbHVlXS5cblxuICAgVGhlIGZvbGRpbmcgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoX2ZvbGQ6IFRZUEVdXG4gICBUaGUgZGlyZWN0IGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaDogVFlQRV1cbiopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIENoYXIgPSBDaGFyMFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgSGFzaF9pbnRmXG5cbigqKiBCdWlsdGluIGZvbGRpbmctc3R5bGUgaGFzaCBmdW5jdGlvbnMsIGFic3RyYWN0ZWQgb3ZlciBbSGFzaF9pbnRmLlNdICopXG5tb2R1bGUgRm9sZGluZyAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5CdWlsdGluX2ludGZcbiAgd2l0aCB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZSA9IHN0cnVjdFxuICB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWVcbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBoYXNoX2ZvbGRfdW5pdCBzICgpID0gc1xuICBsZXQgaGFzaF9mb2xkX2ludCA9IEhhc2guZm9sZF9pbnRcbiAgbGV0IGhhc2hfZm9sZF9pbnQ2NCA9IEhhc2guZm9sZF9pbnQ2NFxuICBsZXQgaGFzaF9mb2xkX2Zsb2F0ID0gSGFzaC5mb2xkX2Zsb2F0XG4gIGxldCBoYXNoX2ZvbGRfc3RyaW5nID0gSGFzaC5mb2xkX3N0cmluZ1xuICBsZXQgYXNfaW50IGYgcyB4ID0gaGFzaF9mb2xkX2ludCBzIChmIHgpXG5cbiAgKCogVGhpcyBpZ25vcmVzIHRoZSBzaWduIGJpdCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgdW5saWtlbHkgdG8gbGVhZCB0b1xuICAgICBmcmVxdWVudCBjb2xsaXNpb25zIChtaW5fdmFsdWUgY29sbGlkaW5nIHdpdGggMCBpcyB0aGUgbW9zdCBsaWtlbHkgb25lKS4gICopXG4gIGxldCBoYXNoX2ZvbGRfaW50MzIgPSBhc19pbnQgU3RkbGliLkludDMyLnRvX2ludFxuICBsZXQgaGFzaF9mb2xkX2NoYXIgPSBhc19pbnQgQ2hhci50b19pbnRcblxuICBsZXQgaGFzaF9mb2xkX2Jvb2wgPVxuICAgIGFzX2ludCAoZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiAxXG4gICAgICB8IGZhbHNlIC0+IDApXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9uYXRpdmVpbnQgcyB4ID0gaGFzaF9mb2xkX2ludDY0IHMgKFN0ZGxpYi5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiBoYXNoX2ZvbGRfZWxlbSBzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gaGFzaF9mb2xkX2ludCBzIDBcbiAgICB8IFNvbWUgeCAtPiBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2ludCBzIDEpIHhcbiAgOztcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IHggOjogeHMgLT4gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyB4KSB4c1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgICgqIFRoZSBbbGVuZ3RoXSBvZiB0aGUgbGlzdCBtdXN0IGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBoYXNoLXN0YXRlIHNvIHZhbHVlcyBvZlxuICAgICAgIHR5cGVzIHN1Y2ggYXMgW3VuaXQgbGlzdF0gLSAoW10sIFsoKV0sIFsoKTsoKV0sLi4pIGFyZSBoYXNoZWQgZGlmZmVyZW50bHkuICopXG4gICAgKCogVGhlIFtsZW5ndGhdIG11c3QgY29tZSBiZWZvcmUgdGhlIGVsZW1lbnRzIHRvIGF2b2lkIGEgdmlvbGF0aW9uIG9mIHRoZSBydWxlXG4gICAgICAgZW5mb3JjZWQgYnkgUGVyZmVjdF9oYXNoLiAqKVxuICAgIGxldCBzID0gaGFzaF9mb2xkX2ludCBzIChMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIGxldCBzID0gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgaW5cbiAgICBzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9sYXp5X3QgaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAoU3RkbGliLkxhenkuZm9yY2UgeClcbiAgbGV0IGhhc2hfZm9sZF9yZWZfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgeCA9IGhhc2hfZm9sZF9lbGVtIHMgIXhcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSBzIGFycmF5IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggYXJyYXlcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBlID0gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpIGluXG4gICAgICBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9lbGVtIHMgZSkgYXJyYXkgKGkgKyAxKSlcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2FycmF5X2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIGFycmF5ID1cbiAgICBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2lcbiAgICAgICgqIFtsZW5ndGhdIG11c3QgYmUgaW5jb3Jwb3JhdGVkIGZvciBhcnJheXMsIGFzIGl0IGlzIGZvciBsaXN0cy4gU2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIGhhc2hfZm9sZF9lbGVtXG4gICAgICAoaGFzaF9mb2xkX2ludCBzIChBcnJheS5sZW5ndGggYXJyYXkpKVxuICAgICAgYXJyYXlcbiAgICAgIDBcbiAgOztcblxuICAoKiB0aGUgZHVwbGljYXRpb24gaGVyZSBpcyBiZWNhdXNlIHdlIHRoaW5rXG4gICAgIG9jYW1sIGNhbid0IGVsaW1pbmF0ZSBpbmRpcmVjdCBmdW5jdGlvbiBjYWxscyBvdGhlcndpc2UuICopXG4gIGxldCBoYXNoX25hdGl2ZWludCB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfbmF0aXZlaW50IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcblxuICBsZXQgaGFzaF9pbnQ2NCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDY0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfaW50MzIgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQzMiAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2NoYXIgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9jaGFyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfaW50IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfYm9vbCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2Jvb2wgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuXG4gIGxldCBoYXNoX3N0cmluZyB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfc3RyaW5nIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcblxuICBsZXQgaGFzaF9mbG9hdCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2Zsb2F0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfdW5pdCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3VuaXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuZW5kXG5cbm1vZHVsZSBGIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkZ1bGxcbiAgd2l0aCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWVcbiAgIGFuZCB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICAgYW5kIHR5cGUgc2VlZCA9IEhhc2guc2VlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2hcblxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGNyZWF0ZSA/c2VlZCAoKSA9IHJlc2V0ID9zZWVkIChhbGxvYyAoKSlcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gRm9sZGluZyAoSGFzaClcblxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChmb2xkZXIgKEhhc2gucmVzZXQgP3NlZWQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnRlcm5hbGhhc2ggOiBzaWdcbiAgaW5jbHVkZVxuICAgIEhhc2hfaW50Zi5TXG4gICAgd2l0aCB0eXBlIHN0YXRlID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuc3RhdGVcbiAgICAgKCogV2UgZ2l2ZSBhIGNvbmNyZXRlIHR5cGUgZm9yIFtzdGF0ZV0sIGFsYmVpdCBvbmx5IHBhcnRpYWxseSBleHBvc2VkIChzZWVcbiAgICAgICAgQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMpLCBzbyB0aGF0IGl0IHVuaWZpZXMgd2l0aCB0aGUgc2FtZSB0eXBlIGluIFtCYXNlX2Jvb3RdLFxuICAgICAgICBhbmQgdG8gYWxsb3cgb3B0aW1pemF0aW9ucyBmb3IgdGhlIGltbWVkaWF0ZSB0eXBlLiAqKVxuICAgICBhbmQgdHlwZSBzZWVkID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuc2VlZFxuICAgICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuaGFzaF92YWx1ZVxuXG4gIGV4dGVybmFsIGZvbGRfaW50NjQgOiBzdGF0ZSAtPiBpbnQ2NCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQgOiBzdGF0ZSAtPiBpbnQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2Zsb2F0IDogc3RhdGUgLT4gZmxvYXQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfc3RyaW5nIDogc3RhdGUgLT4gc3RyaW5nIC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1wiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZ2V0X2hhc2hfdmFsdWUgOiBzdGF0ZSAtPiBoYXNoX3ZhbHVlID0gXCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVwiXG4gIFtAQG5vYWxsb2NdXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRlc2NyaXB0aW9uID0gXCJpbnRlcm5hbGhhc2hcIlxuXG4gIGluY2x1ZGUgQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXNcblxuICBsZXQgYWxsb2MgKCkgPSBjcmVhdGVfc2VlZGVkIDBcbiAgbGV0IHJlc2V0ID8oc2VlZCA9IDApIF90ID0gY3JlYXRlX3NlZWRlZCBzZWVkXG5cbiAgbW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICAgIGxldCBjb21wYXJlX3N0YXRlIChhIDogc3RhdGUpIChiIDogc3RhdGUpID0gY29tcGFyZSAoYSA6PiBpbnQpIChiIDo+IGludClcbiAgICBsZXQgc3RhdGVfdG9fc3RyaW5nIChzdGF0ZSA6IHN0YXRlKSA9IEludC50b19zdHJpbmcgKHN0YXRlIDo+IGludClcbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRlcm5hbGhhc2hcblxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGNyZWF0ZSA/c2VlZCAoKSA9IHJlc2V0ID9zZWVkIChhbGxvYyAoKSlcbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9IGdldF9oYXNoX3ZhbHVlIChmb2xkZXIgKHJlc2V0ID9zZWVkIChhbGxvYyAoKSkpIHgpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb2xkaW5nID0gRm9sZGluZyAoSW50ZXJuYWxoYXNoKVxuICAgIGluY2x1ZGUgRm9sZGluZ1xuXG4gICAgKCogW0ZvbGRpbmddIHByb3ZpZGVzIHNvbWUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBbaGFzaF8qXSBmdW5jdGlvbnMgYmVsb3csXG4gICAgICAgYnV0IHRoZXkgYXJlIGluZWZmaWNpZW50IGZvciBzb21lIHVzZS1jYXNlcyBiZWNhdXNlIG9mIHRoZSB1c2Ugb2YgdGhlIFtoYXNoX2ZvbGRdXG4gICAgICAgZnVuY3Rpb25zLiBBdCB0aGlzIHBvaW50LCB0aGUgW2hhc2hfdmFsdWVdIHR5cGUgaGFzIGJlZW4gZml4ZWQgdG8gW2ludF0sIHNvIHRoaXNcbiAgICAgICBtb2R1bGUgY2FuIHByb3ZpZGUgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zLiAqKVxuXG4gICAgbGV0IGhhc2hfY2hhciA9IENoYXIwLnRvX2ludFxuXG4gICAgKCogVGhpcyBoYXNoIHdhcyBjaG9zZW4gZnJvbSBoZXJlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9iYWRib3kvNjI2Nzc0M1xuXG4gICAgICAgSXQgYXR0ZW1wdHMgdG8gZnVsZmlsbCB0aGUgcHJpbWFyeSBnb2FscyBvZiBhIG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb246XG5cbiAgICAgICAtIGEgYml0IGNoYW5nZSBpbiB0aGUgaW5wdXQgc2hvdWxkIGNoYW5nZSB+MS8yIG9mIHRoZSBvdXRwdXQgYml0c1xuICAgICAgIC0gdGhlIG91dHB1dCBzaG91bGQgYmUgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgb3V0cHV0IHJhbmdlXG4gICAgICAgLSBpbnB1dHMgdGhhdCBhcmUgY2xvc2UgdG8gZWFjaCBvdGhlciBzaG91bGRuJ3QgbGVhZCB0byBvdXRwdXRzIHRoYXQgYXJlIGNsb3NlIHRvXG4gICAgICAgICBlYWNoIG90aGVyLlxuICAgICAgIC0gYWxsIGJpdHMgb2YgdGhlIGlucHV0IGFyZSB1c2VkIGluIGdlbmVyYXRpbmcgdGhlIG91dHB1dFxuXG4gICAgICAgSW4gb3VyIGNhc2Ugd2UgYWxzbyB3YW50IGl0IHRvIGJlIGZhc3QsIG5vbi1hbGxvY2F0aW5nLCBhbmQgaW5saW5hYmxlLiAgKilcbiAgICBsZXRbQGlubGluZSBhbHdheXNdIGhhc2hfaW50ICh0IDogaW50KSA9XG4gICAgICBsZXQgdCA9IGxub3QgdCArICh0IGxzbCAyMSkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAzKSArICh0IGxzbCA4KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDE0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDIpICsgKHQgbHNsIDQpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjgpIGluXG4gICAgICB0ICsgKHQgbHNsIDMxKVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaF9ib29sIHggPSBpZiB4IHRoZW4gMSBlbHNlIDBcblxuICAgIGV4dGVybmFsIGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIkJhc2VfaGFzaF9kb3VibGVcIiBbQEBub2FsbG9jXVxuXG4gICAgbGV0IGhhc2hfdW5pdCAoKSA9IDBcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG4iLCJvcGVuIEltcG9ydDBcblxubGV0IGNvbXBhcmVfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiQ29tcGFyZSBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG5sZXQgZXF1YWxfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiRXF1YWwgY2FsbGVkIG9uIHRoZSB0eXBlICVzLCB3aGljaCBpcyBhYnN0cmFjdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi5cIlxuICAgIHR5cGVfbmFtZVxuOztcblxudHlwZSAnYSBjb21wYXJlID0gJ2EgLT4gJ2EgLT4gaW50XG50eXBlICdhIGVxdWFsID0gJ2EgLT4gJ2EgLT4gYm9vbFxuXG5tb2R1bGUgQ29tcGFyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY29tcGFyZSA6IHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdhIHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gKCdhLCAnYikgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gJ2MgY29tcGFyZSAtPiAoJ2EsICdiLCAnYykgdCBjb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFcXVhbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAoJ2EsICdiKSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2IgZXF1YWwgLT4gJ2MgZXF1YWwgLT4gKCdhLCAnYiwgJ2MpIHQgZXF1YWxcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmVfYm9vbCA6IGJvb2wgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9jaGFyIDogY2hhciBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2Zsb2F0IDogZmxvYXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQgOiBpbnQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQzMiA6IGludDMyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50NjQgOiBpbnQ2NCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA6IG5hdGl2ZWludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3N0cmluZyA6IHN0cmluZyBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3VuaXQgOiB1bml0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgY29tcGFyZV9hcnJheSBjb21wYXJlX2VsdCBhIGIgPVxuICAgIGlmIHBoeXNfZXF1YWwgYSBiXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVuX2EgPSBBcnJheTAubGVuZ3RoIGEgaW5cbiAgICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICAgIGlmIHJldCA8PiAwXG4gICAgICB0aGVuIHJldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgMCkpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAwXG4gICAgfCBbXSwgXyAtPiAtMVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IHggeSBpblxuICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgY29tcGFyZV9vcHRpb24gY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMFxuICAgIHwgTm9uZSwgU29tZSBfIC0+IC0xXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gMVxuICAgIHwgU29tZSBhLCBTb21lIGIgLT4gY29tcGFyZV9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfcmVmIGNvbXBhcmVfZWx0IGEgYiA9IGNvbXBhcmVfZWx0ICFhICFiXG4gIGxldCBlcXVhbF9ib29sIDogYm9vbCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2NoYXIgOiBjaGFyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50IDogaW50IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50MzIgOiBpbnQzMiBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludDY0IDogaW50NjQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9zdHJpbmcgOiBzdHJpbmcgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF91bml0IDogdW5pdCBlcXVhbCA9IFBvbHkuZXF1YWxcblxuICAoKiBbUG9seS5lcXVhbF0gaXMgSUVFRSBjb21wbGlhbnQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQgaGVyZS4gKilcbiAgbGV0IGVxdWFsX2Zsb2F0IHggeSA9IGVxdWFsX2ludCAoY29tcGFyZV9mbG9hdCB4IHkpIDBcblxuICBsZXQgZXF1YWxfYXJyYXkgZXF1YWxfZWx0IGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fFxuICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgIGVxdWFsIGxlbl9hIGxlbl9iXG4gICAgJiZcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpID0gbGVuX2FcbiAgICAgIHx8XG4gICAgICBsZXQgbCA9IEFycmF5MC51bnNhZmVfZ2V0IGEgaVxuICAgICAgYW5kIHIgPSBBcnJheTAudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgIGVxdWFsX2VsdCBsIHIgJiYgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgcmVjIGVxdWFsX2xpc3QgZXF1YWxfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiBlcXVhbF9lbHQgeCB5ICYmIGVxdWFsX2xpc3QgZXF1YWxfZWx0IHhzIHlzXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBlcXVhbF9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGVxdWFsX3JlZiBlcXVhbF9lbHQgYSBiID0gZXF1YWxfZWx0ICFhICFiXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyBmb3IgdXNlIGJ5IHBweF9oYXNoLCBhbmQgaXMgdGh1cyBub3QgaW4gdGhlIGludGVyZmFjZSBvZiBCYXNlLiAqKVxubW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgSGFzaCA9IEhhc2ggKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoICopXG5lbmRcblxudHlwZSAnYSBoYXNoX2ZvbGQgPSBTdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBTdGQuSGFzaC5zdGF0ZVxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogdCBoYXNoX2ZvbGRcbiAgICB2YWwgaGFzaCA6IHQgLT4gU3RkLkhhc2guaGFzaF92YWx1ZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogJ2EgaGFzaF9mb2xkIC0+ICdhIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2IgaGFzaF9mb2xkIC0+ICgnYSwgJ2IpIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90XG4gICAgICA6ICAnYSBoYXNoX2ZvbGRcbiAgICAgIC0+ICdiIGhhc2hfZm9sZFxuICAgICAgLT4gJ2MgaGFzaF9mb2xkXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBoYXNoX2ZvbGRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gSGFzaC5CdWlsdGluXG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIFNleHBsaWIwLlNleHBcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID0gU2V4cGxpYjAuU2V4cC50ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxubGV0IHJlYyBjb21wYXJlID1cbiAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICAgdGhlbiAwXG4gICAgIGVsc2UgKFxuICAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgIHwgQXRvbSBfYV9fMDAzXywgQXRvbSBfYl9fMDA0XyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDAzXyBfYl9fMDA0X1xuICAgICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgICAgIHwgTGlzdCBfYV9fMDA1XywgTGlzdCBfYl9fMDA2XyAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSBfYV9fMDA1XyBfYl9fMDA2XylcbiAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG47O1xuXG5sZXQgcmVjIChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBBdG9tIF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgX2EwXG4gICAgIHwgTGlzdCBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF90IGhzdiBfYTBcbiAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcblxuYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2NvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxubGV0IG9mX3N0cmluZyA9ICgpXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPVxuICB8IFczMlxuICB8IFc2NFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFczMiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXMzJcIlxuICAgIHwgVzY0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlc2NFwiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBudW1fYml0cyA9IGZ1bmN0aW9uXG4gIHwgVzMyIC0+IDMyXG4gIHwgVzY0IC0+IDY0XG47O1xuXG5sZXQgd29yZF9zaXplID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZV9pbl9iaXRzIHdpdGhcbiAgfCAzMiAtPiBXMzJcbiAgfCA2NCAtPiBXNjRcbiAgfCBfIC0+IGZhaWx3aXRoIFwidW5rbm93biB3b3JkIHNpemVcIlxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgciA9IHJlZiBbIFwiQmFzZS5TZXhwLnBwX2h1bVwiIF1cbmxldCBhbGwgKCkgPSAhclxubGV0IHJlZ2lzdGVyIHAgPSByIDo9IHAgOjogIXJcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcHAgOiBGb3JtYXR0ZXIudCAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfcHAgKE0gOiBzaWdcbiAgICBpbmNsdWRlIFNcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICBsZXQgKCkgPSByZWdpc3RlciAoTS5tb2R1bGVfbmFtZSBeIFwiLnBwXCIpXG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyIChNIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG4gIFJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGxldCBwcCBmb3JtYXR0ZXIgdCA9IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZvcm1hdHRlciAoTS50b19zdHJpbmcgdClcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGV4biBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2V4biA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5bQEBAZW5kXVxuXG5sZXQgZXhpdCA9IFN0ZGxpYi5leGl0XG5cbmV4Y2VwdGlvbiBGaW5hbGx5IG9mIHQgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmluYWxseV0gKGZ1bmN0aW9uXG4gICAgfCBGaW5hbGx5IChhcmcwX18wMDFfLCBhcmcxX18wMDJfKSAtPlxuICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3QgYXJnMF9fMDAxX1xuICAgICAgYW5kIHJlczFfXzAwNF8gPSBzZXhwX29mX3QgYXJnMV9fMDAyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLkZpbmFsbHlcIjsgcmVzMF9fMDAzXzsgcmVzMV9fMDA0XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmV4Y2VwdGlvbiBSZXJhaXNlZCBvZiBzdHJpbmcgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUmVyYWlzZWRdIChmdW5jdGlvblxuICAgIHwgUmVyYWlzZWQgKGFyZzBfXzAwNV8sIGFyZzFfXzAwNl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDA3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwNV9cbiAgICAgIGFuZCByZXMxX18wMDhfID0gc2V4cF9vZl90IGFyZzFfXzAwNl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4bi5tbC5SZXJhaXNlZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50XG5cbigqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2U6XG5cbiAgIHtbXG4gICAgIGV4Y2VwdGlvbiBTZXhwIG9mIFNleHAudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cbiAgICAgKCogLi4uICopXG4gICAgIFtAQEBlbmRdXG4gICBdfVxuXG4gICB0byBlbGltaW5hdGUgdGhlIGV4dHJhIHdyYXBwaW5nIG9mIFsoU2V4cCAuLi4pXS4gKilcbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXhwXSAoZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gU2V4cCBzZXhwXG5cbmxldCByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSB0IGJhY2t0cmFjZSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB0IGJhY2t0cmFjZVxuOztcblxuZXh0ZXJuYWwgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCA6IHQgLT4gYm9vbCA9IFwiQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG5cIlxuXG5sZXQgcmVyYWlzZSBleG4gc3RyID1cbiAgbGV0IGV4bicgPSBSZXJhaXNlZCAoc3RyLCBleG4pIGluXG4gIGlmIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuXG4gIHRoZW4gKFxuICAgIGxldCBidCA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4bicgYnQpXG4gIGVsc2UgcmFpc2UgZXhuJ1xuOztcblxubGV0IHJlcmFpc2VmIGV4YyBmb3JtYXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHIgKCkgLT4gcmVyYWlzZSBleGMgc3RyKSBmb3JtYXRcbmxldCB0b19zdHJpbmcgZXhjID0gU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHRvX3N0cmluZ19tYWNoIGV4YyA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfZXhuIGV4YylcbmxldCBzZXhwX29mX3QgPSBzZXhwX29mX2V4blxuXG5sZXQgcHJvdGVjdHggfmYgeCB+KGZpbmFsbHkgOiBfIC0+IHVuaXQpID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCByZXMgLT5cbiAgICBmaW5hbGx5IHg7XG4gICAgcmVzXG4gIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgIGxldCBidCA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIChtYXRjaCBmaW5hbGx5IHggd2l0aFxuICAgICB8ICgpIC0+IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBidFxuICAgICB8IGV4Y2VwdGlvbiBmaW5hbF9leG4gLT5cbiAgICAgICAoKiBVbmZvcnR1bmF0ZWx5LCB0aGUgYmFja3RyYWNlIG9mIHRoZSBbZmluYWxfZXhuXSBpcyBkaXNjYXJkZWQgaGVyZS4gKilcbiAgICAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRmluYWxseSAoZXhuLCBmaW5hbF9leG4pKSBidClcbjs7XG5cbmxldCBwcm90ZWN0IH5mIH5maW5hbGx5ID0gcHJvdGVjdHggfmYgKCkgfmZpbmFsbHlcblxubGV0IGRvZXNfcmFpc2UgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgdHJ5XG4gICAgaWdub3JlIChmICgpIDogYSk7XG4gICAgZmFsc2VcbiAgd2l0aFxuICB8IF8gLT4gdHJ1ZVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSB0ID0gZXhuXG5cbiAgICBsZXQgcHAgcHBmIHQgPVxuICAgICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IHQgd2l0aFxuICAgICAgfCBTb21lIHNleHAgLT4gU2V4cC5wcF9odW0gcHBmIHNleHBcbiAgICAgIHwgTm9uZSAtPiBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKFN0ZGxpYi5QcmludGV4Yy50b19zdHJpbmcgdClcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkV4blwiXG4gIGVuZClcblxubGV0IHByaW50X3dpdGhfYmFja3RyYWNlIGV4YyByYXdfYmFja3RyYWNlID1cbiAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiQFs8Mj5VbmNhdWdodCBleGNlcHRpb246QFxcbkBcXG5AWyVhQF1AXUBcXG5ALlwiIHBwIGV4YztcbiAgaWYgU3RkbGliLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXMgKClcbiAgdGhlbiBTdGRsaWIuUHJpbnRleGMucHJpbnRfcmF3X2JhY2t0cmFjZSBTdGRsaWIuc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpID1cbiAgU3RkbGliLlByaW50ZXhjLnNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBwcmludF93aXRoX2JhY2t0cmFjZVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hdXggfmRvX2F0X2V4aXQgfmV4aXQgZiA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleGMgLT5cbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICgqIE9uZSByZWFzb24gdG8gcnVuIFtkb19hdF9leGl0XSBoYW5kbGVycyBiZWZvcmUgcHJpbnRpbmcgb3V0IHRoZSBlcnJvciBtZXNzYWdlIGlzXG4gICAgICAgdGhhdCBpdCBoZWxwcyBjdXJzZXMgYXBwbGljYXRpb25zIGJyaW5nIHRoZSB0ZXJtaW5hbCBpbiBhIGdvb2Qgc3RhdGUsIG90aGVyd2lzZSB0aGVcbiAgICAgICBlcnJvciBtZXNzYWdlIG1pZ2h0IGdldCBjb3JydXB0ZWQuICBBbHNvLCB0aGUgT0NhbWwgdG9wLWxldmVsIHVuY2F1Z2h0IGV4Y2VwdGlvblxuICAgICAgIGhhbmRsZXIgZG9lcyB0aGUgc2FtZS4gKilcbiAgICBpZiBkb19hdF9leGl0XG4gICAgdGhlbiAoXG4gICAgICB0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aFxuICAgICAgfCBfIC0+ICgpKTtcbiAgICAodHJ5IHByaW50X3dpdGhfYmFja3RyYWNlIGV4YyByYXdfYmFja3RyYWNlIHdpdGhcbiAgICAgfCBfIC0+XG4gICAgICAgKHRyeVxuICAgICAgICAgIFN0ZGxpYi5QcmludGYuZXByaW50ZiBcIkV4bi5oYW5kbGVfdW5jYXVnaHQgY291bGQgbm90IHByaW50OyBleGl0aW5nIGFueXdheVxcbiUhXCJcbiAgICAgICAgd2l0aFxuICAgICAgICB8IF8gLT4gKCkpKTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZiA9IGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdCB+ZG9fYXRfZXhpdDp0cnVlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHQgfmV4aXQ6bXVzdF9leGl0IGYgPVxuICBoYW5kbGVfdW5jYXVnaHRfYXV4IGYgfmV4aXQ6KGlmIG11c3RfZXhpdCB0aGVuIGV4aXQgZWxzZSBpZ25vcmUpIH5kb19hdF9leGl0Om11c3RfZXhpdFxuOztcblxubGV0IHJlcmFpc2VfdW5jYXVnaHQgc3RyIGZ1bmMgPVxuICB0cnkgZnVuYyAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKFJlcmFpc2VkIChzdHIsIGV4bikpIGJ0XG47O1xuXG5leHRlcm5hbCBjbGVhcl9iYWNrdHJhY2UgOiB1bml0IC0+IHVuaXQgPSBcIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zXCIgW0BAbm9hbGxvY11cblxubGV0IHJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIGUgPVxuICAoKiBXZSBjbGVhciB0aGUgYmFja3RyYWNlIHRvIHJlZHVjZSBjb25mdXNpb24sIHNvIHRoYXQgcGVvcGxlIGRvbid0IHRoaW5rIHdoYXRldmVyXG4gICAgIGlzIHN0b3JlZCBjb3JyZXNwb25kcyB0byB0aGlzIHJhaXNlLiAqKVxuICBjbGVhcl9iYWNrdHJhY2UgKCk7XG4gIFN0ZGxpYi5yYWlzZV9ub3RyYWNlIGVcbjs7XG5cbmxldCBpbml0aWFsaXplX21vZHVsZSAoKSA9IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgY2xlYXJfYmFja3RyYWNlID0gY2xlYXJfYmFja3RyYWNlXG5lbmRcbiIsIigqIGJlbG9uZ3MgaW4gQ29tbW9uLCBidXQgbW92ZWQgaGVyZSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgcmV0dXJuID0geyByZXR1cm4gOiAnYi4gJ2EgLT4gJ2IgfSBbQEB1bmJveGVkXVxuXG5sZXQgd2l0aF9yZXR1cm4gKHR5cGUgYSkgZiA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICgqIFJhaXNlZCB0byBpbmRpY2F0ZSB+cmV0dXJuIHdhcyBjYWxsZWQuICBMb2NhbCBzbyB0aGF0IHRoZSBleGNlcHRpb24gaXMgdGllZCB0byBhXG4gICAgICAgcGFydGljdWxhciBjYWxsIG9mIFt3aXRoX3JldHVybl0uICopXG4gICAgZXhjZXB0aW9uIFJldHVybiBvZiBhXG4gIGVuZFxuICBpblxuICBsZXQgaXNfYWxpdmUgPSByZWYgdHJ1ZSBpblxuICBsZXQgcmV0dXJuIGEgPVxuICAgIGlmIG5vdCAhaXNfYWxpdmVcbiAgICB0aGVuIGZhaWx3aXRoIFwidXNlIG9mIFtyZXR1cm5dIGZyb20gYSBbd2l0aF9yZXR1cm5dIHRoYXQgYWxyZWFkeSByZXR1cm5lZFwiO1xuICAgIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSAoTS5SZXR1cm4gYSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IGEgPSBmIHsgcmV0dXJuIH0gaW5cbiAgICBpc19hbGl2ZSA6PSBmYWxzZTtcbiAgICBhXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICBpc19hbGl2ZSA6PSBmYWxzZTtcbiAgICAobWF0Y2ggZXhuIHdpdGhcbiAgICAgfCBNLlJldHVybiBhIC0+IGFcbiAgICAgfCBfIC0+IHJhaXNlIGV4bilcbjs7XG5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gcmV0dXJuIC0+XG4gICAgZiB7IHJldHVybiA9IChmdW4gYSAtPiByZXR1cm4ucmV0dXJuIChTb21lIGEpKSB9O1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwcmVwZW5kIHsgcmV0dXJuIH0gfmYgPSB7IHJldHVybiA9IChmdW4geCAtPiByZXR1cm4gKGYgeCkpIH1cbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5leHRlcm5hbCBpZ25vcmUgOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIHRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIFtTdGRsaWIuaWdub3JlXSAqKVxuXG5sZXQgbm9uIGYgeCA9IG5vdCAoZiB4KVxuXG5sZXQgZm9yZXZlciBmID1cbiAgbGV0IHJlYyBmb3JldmVyICgpID1cbiAgICBmICgpO1xuICAgIGZvcmV2ZXIgKClcbiAgaW5cbiAgdHJ5IGZvcmV2ZXIgKCkgd2l0aFxuICB8IGUgLT4gZVxuOztcblxuZXh0ZXJuYWwgaWQgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoKCdhIC0+ICdiKVtAbG9jYWxfb3B0XSkgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbigqIFRoZSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGVzZSBmdW5jdGlvbnMgaXMgdG8gcGFzcyBpbiBmdW5jdGlvbmFsIGFyZ3VtZW50cyBhbmQgZ2V0XG4gICBmdW5jdGlvbnMgYXMgYSByZXN1bHQuICopXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCByZWMgYXBwbHlfbl90aW1lcyB+biBmIHggPSBpZiBuIDw9IDAgdGhlbiB4IGVsc2UgYXBwbHlfbl90aW1lcyB+bjoobiAtIDEpIGYgKGYgeClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBCYXNpY19nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmX2xhYmVsZWRfZm5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogVGhlIGZvbGxvd2luZyBpZGVudGl0aWVzIG91Z2h0IHRvIGhvbGQgKGZvciBzb21lIHZhbHVlIG9mID0pOlxuXG4gICAgICAtIFtyZXR1cm4geCA+Pj0gZiA9IGYgeF1cbiAgICAgIC0gW3QgPj49IGZ1biB4IC0+IHJldHVybiB4ID0gdF1cbiAgICAgIC0gWyh0ID4+PSBmKSA+Pj0gZyA9IHQgPj49IGZ1biB4IC0+IChmIHggPj49IGcpXVxuXG4gICAgICBOb3RlOiBbPj49XSBpcyB0aGUgaW5maXggbm90YXRpb24gZm9yIFtiaW5kXSkgKilcblxuICAoKiogVGhlIFttYXBdIGFyZ3VtZW50IHRvIFtNb25hZC5NYWtlXSBzYXlzIGhvdyB0byBpbXBsZW1lbnQgdGhlIG1vbmFkJ3MgW21hcF0gZnVuY3Rpb24uXG4gICAgICBbYERlZmluZV91c2luZ19iaW5kXSBtZWFucyB0byBkZWZpbmUgW21hcCB0IH5mID0gYmluZCB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LlxuXG4gICAgICBTb21lIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbTW9uYWQuTWFrZV0gYXJlIGRlZmluZWQgaW4gdGVybXMgb2YgW21hcF0sIHNvXG4gICAgICBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW21hcF0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIG1hcCA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuIF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYyA9IEJhc2ljX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgQmFzaWNfbG9jYWwgPVxuICBCYXNpY19nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBJbmZpeF9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cblxuICAoKiogW3QgPj49IGZdIHJldHVybnMgYSBjb21wdXRhdGlvbiB0aGF0IHNlcXVlbmNlcyB0aGUgY29tcHV0YXRpb25zIHJlcHJlc2VudGVkIGJ5IHR3b1xuICAgICAgbW9uYWQgZWxlbWVudHMuICBUaGUgcmVzdWx0aW5nIGNvbXB1dGF0aW9uIGZpcnN0IGRvZXMgW3RdIHRvIHlpZWxkIGEgdmFsdWUgW3ZdLCBhbmRcbiAgICAgIHRoZW4gcnVucyB0aGUgY29tcHV0YXRpb24gcmV0dXJuZWQgYnkgW2Ygdl0uICopXG4gIHZhbCAoID4+PSApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZm5cblxuICAoKiogW3QgPj58IGZdIGlzIFt0ID4+PSAoZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uICopXG4gIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZuXG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXggPSBJbmZpeF9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5tb2R1bGUgdHlwZSBJbmZpeF9sb2NhbCA9IEluZml4X2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9nZW4gPSBzaWdcbiAgKCoqIE9wZW5pbmcgYSBtb2R1bGUgb2YgdGhpcyB0eXBlIGFsbG93cyBvbmUgdG8gdXNlIHRoZSBbJWJpbmRdIGFuZCBbJW1hcF0gc3ludGF4XG4gICAgICBleHRlbnNpb25zIGRlZmluZWQgYnkgcHB4X2xldCwgYW5kIGJyaW5ncyBbcmV0dXJuXSBpbnRvIHNjb3BlLiAqKVxuXG4gIHR5cGUgJ2EgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAoKiogVGhlc2UgYXJlIGNvbnZlbmllbnQgdG8gaGF2ZSBpbiBzY29wZSB3aGVuIHByb2dyYW1taW5nIHdpdGggYSBtb25hZDogKilcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICBpbmNsdWRlIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXggPVxuICBTeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4X2xvY2FsID1cbiAgU3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBpbmNsdWRlIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4IDpcbiAgICBJbmZpeF9nZW4gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gICgqKiBbYmluZCB0IH5mXSA9IFt0ID4+PSBmXSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZfbGFiZWxlZF9mblxuXG4gICgqKiBbcmV0dXJuIHZdIHJldHVybnMgdGhlICh0cml2aWFsKSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgdi4gKilcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogW21hcCB0IH5mXSBpcyB0ID4+fCBmLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZfbGFiZWxlZF9mblxuXG4gICgqKiBbam9pbiB0XSBpcyBbdCA+Pj0gKGZ1biB0JyAtPiB0JyldLiAqKVxuICB2YWwgam9pbiA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFtpZ25vcmVfbSB0XSBpcyBbbWFwIHQgfmY6KGZ1biBfIC0+ICgpKV0uICBbaWdub3JlX21dIHVzZWQgdG8gYmUgY2FsbGVkIFtpZ25vcmVdLFxuICAgICAgYnV0IHdlIGRlY2lkZWQgdGhhdCB3YXMgYSBiYWQgbmFtZSwgYmVjYXVzZSBpdCBzaGFkb3dlZCB0aGUgd2lkZWx5IHVzZWRcbiAgICAgIFtTdGRsaWIuaWdub3JlXS4gIFNvbWUgbW9uYWRzIHN0aWxsIGRvIFtsZXQgaWdub3JlID0gaWdub3JlX21dIGZvciBoaXN0b3JpY2FsXG4gICAgICByZWFzb25zLiAqKVxuICB2YWwgaWdub3JlX20gOiAnYSB0IC0+IHVuaXQgdFxuXG4gIHZhbCBhbGwgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgKCoqIExpa2UgW2FsbF0sIGJ1dCBlbnN1cmVzIHRoYXQgZXZlcnkgbW9uYWRpYyB2YWx1ZSBpbiB0aGUgbGlzdCBwcm9kdWNlcyBhIHVuaXQgdmFsdWUsXG4gICAgICBhbGwgb2Ygd2hpY2ggYXJlIGRpc2NhcmRlZCByYXRoZXIgdGhhbiBiZWluZyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuICopXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXggPVxuICBTX3dpdGhvdXRfc3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXhfbG9jYWwgPVxuICBTX3dpdGhvdXRfc3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFN5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19sb2NhbCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zeW50YXhfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFN5bnRheF9sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWMyX2dlbiA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBnZXRzIHVuaWZpZWQgYWNyb3NzIGFsbCB0aGUgY29tcHV0YXRpb24uXG4gICAgICBUaGlzIGlzIHVzZWQgdG8gZW5jb2RlIG1vbmFkcyB3b3JraW5nIG9uIGEgbXVsdGkgcGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGxpa2VcbiAgICAgIChbKCdhLCdiKSByZXN1bHRdKS4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kXG4gICAgICB8IGBDdXN0b20gb2YgKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBCYXNpYzJfbG9jYWwgPVxuICBCYXNpYzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgSW5maXgyX2dlbiA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZm5cbiAgdmFsICggPj58ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZm5cbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDIgPSBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxubW9kdWxlIHR5cGUgSW5maXgyX2xvY2FsID0gSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheDJfZ2VuID0gc2lnXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZSkgdCAtPiAoJ2IsICdlKSB0IC0+ICgnYSAqICdiLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDIgPVxuICBTeW50YXgyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheDJfbG9jYWwgPVxuICBTeW50YXgyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgUzJfZ2VuID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBpbmNsdWRlXG4gICAgSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgaW5jbHVkZVxuICAgIFN5bnRheDJfZ2VuXG4gICAgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICAgICBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuICAgICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4IDpcbiAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gIHZhbCBqb2luIDogKCgnYSwgJ2UpIHQsICdlKSB0IC0+ICgnYSwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdlKSB0IC0+ICh1bml0LCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9XG4gIFMyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2IgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgUzJfbG9jYWwgPVxuICBTMl9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEJhc2ljMyA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGdldCB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlXG4gICAgICBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgzID0gc2lnXG4gICgqKiBTYW1lIGFzIEluZml4LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmQgdGhpcmQgYXJlXG4gICAgICBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDMgPSBzaWdcbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuXG4gICAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdiLCAnZCwgJ2UpIHQgLT4gKCdhICogJ2IsICdkLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kXG4gICAgICBhbmQgdGhpcmQgYXJlIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2QsICdlKSB0LCAnZCwgJ2UpIHQgLT4gKCdhLCAnZCwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdkLCAnZSkgdCAtPiAodW5pdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdkLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdkLCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gc2lnXG4gICgqKiBJbmRleGVkIG1vbmFkLCBpbiB0aGUgc3R5bGUgb2YgQXRrZXkuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlIGNvbXBvc2VkXG4gICAgICBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiBUbyBzZWUgdGhpcyBtb3JlIGNsZWFybHksIHlvdSBjYW4gbG9vayBhdCB0aGUgdHlwZSBvZiBiaW5kOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgXX1cblxuICAgICAgYW5kIGlzb2xhdGUgc29tZSBvZiB0aGUgdHlwZSB2YXJpYWJsZXMgdG8gc2VlIHRoZWlyIGluZGl2aWR1YWwgYmVoYXZpb3JzOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICdhICAgICAgICAgICAgIC0+IGY6KCdhIC0+ICAnYiAgICAgICAgICAgKSAtPiAgJ2JcbiAgICAgICAgdmFsIGJpbmQgOiAgICAgICdpLCAnaiAgICAtPiAgICAgICAgICAgICAgICdqLCAnayAgICAgLT4gICAgICdpLCAna1xuICAgICAgXX1cblxuICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQXRrZXktc3R5bGUgaW5kZXhlZCBtb25hZHMsIHNlZTpcblxuICAgICAge3ZcbiAgICAgICAgUGFyYW1ldGVyaXNlZCBOb3Rpb25zIG9mIENvbXB1dGF0aW9uXG4gICAgICAgIFJvYmVydCBBdGtleVxuICAgICAgICBodHRwOi8vYmVudG5pYi5vcmcvcGFyYW1ub3Rpb25zLWpmcC5wZGZcbiAgICAgIHZ9ICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuXG4gICAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdiLCAnaiwgJ2spIHQgLT4gKCdhICogJ2IsICdpLCAnaykgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIGluY2x1ZGUgU3ludGF4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnaiwgJ2spIHQsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaykgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2ksICdqKSB0IC0+ICh1bml0LCAnaSwgJ2opIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2ksICdpKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdpLCAnaSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2ksICdpKSB0IGxpc3QgLT4gKHVuaXQsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTX3RvX1NfaW5kZXhlZCAoWCA6IFMpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgU19pbmRleGVkX3RvX1MyIChYIDogU19pbmRleGVkKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1vbmFkID0gc2lnXG4gICgqKiBBIG1vbmFkIGlzIGFuIGFic3RyYWN0aW9uIG9mIHRoZSBjb25jZXB0IG9mIHNlcXVlbmNpbmcgb2YgY29tcHV0YXRpb25zLiAgQSB2YWx1ZSBvZlxuICAgICAgdHlwZSBbJ2EgbW9uYWRdIHJlcHJlc2VudHMgYSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIFsnYV0uICopXG5cbiAgbW9kdWxlIHR5cGUgQmFzaWMgPSBCYXNpY1xuICBtb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJcbiAgbW9kdWxlIHR5cGUgQmFzaWMzID0gQmFzaWMzXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBCYXNpY19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2xvY2FsID0gQmFzaWNfbG9jYWxcbiAgbW9kdWxlIHR5cGUgQmFzaWMyX2xvY2FsID0gQmFzaWMyX2xvY2FsXG4gIG1vZHVsZSB0eXBlIEluZml4ID0gSW5maXhcbiAgbW9kdWxlIHR5cGUgSW5maXgyID0gSW5maXgyXG4gIG1vZHVsZSB0eXBlIEluZml4MyA9IEluZml4M1xuICBtb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gSW5maXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBJbmZpeF9sb2NhbCA9IEluZml4X2xvY2FsXG4gIG1vZHVsZSB0eXBlIEluZml4Ml9sb2NhbCA9IEluZml4Ml9sb2NhbFxuICBtb2R1bGUgdHlwZSBTeW50YXggPSBTeW50YXhcbiAgbW9kdWxlIHR5cGUgU3ludGF4MiA9IFN5bnRheDJcbiAgbW9kdWxlIHR5cGUgU3ludGF4MyA9IFN5bnRheDNcbiAgbW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBTeW50YXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTeW50YXhfbG9jYWwgPSBTeW50YXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgU3ludGF4Ml9sb2NhbCA9IFN5bnRheDJfbG9jYWxcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IFNfd2l0aG91dF9zeW50YXhcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9sb2NhbCA9IFNfd2l0aG91dF9zeW50YXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzIgPSBTMlxuICBtb2R1bGUgdHlwZSBTMyA9IFMzXG4gIG1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IFNfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTX2xvY2FsID0gU19sb2NhbFxuICBtb2R1bGUgdHlwZSBTMl9sb2NhbCA9IFMyX2xvY2FsXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG4gIG1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gIG1vZHVsZSBNYWtlX2luZGV4ZWQgKFggOiBCYXNpY19pbmRleGVkKSA6XG4gICAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgbW9kdWxlIE1ha2VfbG9jYWwgKFggOiBCYXNpY19sb2NhbCkgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTJfbG9jYWwgKFggOiBCYXNpYzJfbG9jYWwpIDogUzJfbG9jYWwgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG5cbiAgKCoqIERlZmluZSBhIG1vbmFkIHRocm91Z2ggYW4gaXNvbW9ycGhpc20gd2l0aCBhbiBleGlzdGluZyBtb25hZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgJ2EgdCA9IHsgdmFsdWUgOiAnYSB9XG5cbiAgICAgICAgaW5jbHVkZSBNb25hZC5PZl9tb25hZCAoTW9uYWQuSWRlbnQpIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgICAgIGxldCB0b19tb25hZCB7IHZhbHVlIH0gPSB2YWx1ZVxuICAgICAgICAgICAgbGV0IG9mX21vbmFkIHZhbHVlID0geyB2YWx1ZSB9XG4gICAgICAgICAgZW5kKVxuICAgICAgXX0gKilcbiAgbW9kdWxlIE9mX21vbmFkXG4gICAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkMlxuICAgICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDNcbiAgICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50XG5cbiAgKCoqIEFuIGVhZ2VyIGlkZW50aXR5IG1vbmFkIHdpdGggZnVuY3Rpb25zIGhlYXZpbHkgYW5ub3RhdGVkIHdpdGhcbiAgICAgIFtAaW5saW5lZF0gb3IgW0BpbmxpbmUgaGludF0uXG5cbiAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBtYW51YWxseSB3cml0dGVuLCByYXRoZXIgdGhhbiBiZWluZ1xuICAgICAgY29uc3RydWN0ZWQgYnkgW01vbmFkLk1ha2VdLiBUaGlzIGdpdmVzIGJldHRlciBpbmxpbmluZ1xuICAgICAgZ3VhcmFudGVlcy5cbiAgKilcbiAgbW9kdWxlIElkZW50IDogU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA9ICdhXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNb25hZF9pbnRmXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbmVyYWwgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmRcbiAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5lcmFsIChNIDogQmFzaWNfZ2VuZXJhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gIGxldCBtYXBfdmlhX2JpbmQgbWEgfmYgPSBNLmJpbmQgbWEgfmY6KGZ1biBhIC0+IE0ucmV0dXJuIChmIGEpKVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIE0ubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYmluZCAtPiBtYXBfdmlhX2JpbmRcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggYSBiID0gYSA+Pj0gZnVuIGEgLT4gYiA+PnwgZnVuIGIgLT4gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBmdW4gdCcgLT4gdCdcbiAgbGV0IGlnbm9yZV9tIHQgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpXG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pbmRleGVkIChNIDogQmFzaWNfaW5kZXhlZCkgOlxuICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMyAoTSA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIE0udCA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyIChNIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0IDo9ICgnYSwgJ2QpIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoTSA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMl9sb2NhbCAoTSA6IEJhc2ljMl9sb2NhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG5cbiAgbGV0IG1hcF92aWFfYmluZCBtYSB+ZiA9XG4gICAgbGV0IHJlcyA9IE0uYmluZCBtYSB+ZjooZnVuIGEgLT4gTS5yZXR1cm4gKGYgYSkpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggTS5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19iaW5kIC0+IG1hcF92aWFfYmluZFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG5cbiAgICAgIGxldCBib3RoIGEgYiA9XG4gICAgICAgIGxldCByZXMgPVxuICAgICAgICAgIGJpbmQgYSB+ZjooZnVuIGEgLT5cbiAgICAgICAgICAgIGxldCByZXMgPSBtYXAgYiB+ZjooZnVuIGIgLT4gYSwgYikgaW5cbiAgICAgICAgICAgIHJlcylcbiAgICAgICAgaW5cbiAgICAgICAgcmVzXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBGbi5pZFxuXG4gIGxldCBpZ25vcmVfbSB0ID1cbiAgICBsZXQgcmVzID0gbWFwIHQgfmY6KGZ1biBfIC0+ICgpKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBhbGwgPVxuICAgIGxldCByZWMgbG9vcCB2cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgdnMpXG4gICAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuIHYgLT4gbG9vcCAodiA6OiB2cykgdHNcbiAgICBpblxuICAgIGZ1biB0cyAtPiBsb29wIFtdIHRzXG4gIDs7XG5cbiAgbGV0IHJlYyBhbGxfdW5pdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuICgpIC0+IGFsbF91bml0IHRzXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfbG9jYWwgKE0gOiBCYXNpY19sb2NhbCkgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9XG4gIE1ha2UyX2xvY2FsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9nZW5lcmFsIChNb25hZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgdmFsIGJpbmRcbiAgICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG4gIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudFxuICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gYSA9IE0ub2ZfbW9uYWQgKE1vbmFkLnJldHVybiBhKVxuICAgIGxldCBiaW5kIHQgfmYgPSBNLm9mX21vbmFkIChNb25hZC5iaW5kIChNLnRvX21vbmFkIHQpIH5mOihmdW4gYSAtPiBNLnRvX21vbmFkIChmIGEpKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIHQgfmYgLT4gTS5vZl9tb25hZCAoTW9uYWQubWFwIChNLnRvX21vbmFkIHQpIH5mKSlcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQzXG4gICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyXG4gICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZFxuICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICAgIGVuZClcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0W0BpbmxpbmVdIGJpbmQgYSB+ZiA9IChmIFtAaW5saW5lZCBoaW50XSkgYVxuICBsZXRbQGlubGluZV0gbWFwIGEgfmYgPSAoZiBbQGlubGluZWQgaGludF0pIGFcblxuICBleHRlcm5hbCByZXR1cm4gOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0W0BpbmxpbmVdICggPj58ICkgYSBmID0gbWFwIGEgfmZcbiAgICBsZXRbQGlubGluZV0gKCA+Pj0gKSBhIGYgPSBiaW5kIGEgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0W0BpbmxpbmVdIGJvdGggYSBiID0gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZFxuXG4gIGV4dGVybmFsIGpvaW4gOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGlnbm9yZV9tIDogKF9bQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuICBleHRlcm5hbCBhbGxfdW5pdCA6ICh1bml0IGxpc3RbQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuICBleHRlcm5hbCBhbGwgOiAoJ2EgbGlzdFtAbG9jYWxfb3B0XSkgLT4gKCdhIGxpc3RbQGxvY2FsX29wdF0pID0gXCIlaWRlbnRpdHlcIlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG4oKiogVGhpcyBtb2R1bGUgc2VydmVzIG1vc3RseSBhcyBhIHBhcnRpYWwgY2hlY2sgdGhhdCBbUzJdIGFuZCBbU10gYXJlIGluIHN5bmMsIGJ1dFxuICAgIGFjdHVhbGx5IGNhbGxpbmcgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bC4gKilcbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoVCA6IFQuVCkgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBULnQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIFQudCkgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MzIChYIDogUzIpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFQgOiBULlQpIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCBULnQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCBULnQpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TIChUMSA6IFQuVCkgKFQyIDogVC5UKSAoWCA6IFMzKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIFQxLnQsIFQyLnQpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCBUMS50LCBUMi50KSBYLnRcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19hcHBseSAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgbWFwMiB0YSB0YiB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGJcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAgfmYgdGEgPCo+IHRiIDwqPiB0Y1xuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCAoICo+ICkgdSB2ID0gcmV0dXJuIChmdW4gKCkgeSAtPiB5KSA8Kj4gdSA8Kj4gdlxuICBsZXQgKCA8KiApIHUgdiA9IHJldHVybiAoZnVuIHggKCkgLT4geCkgPCo+IHUgPCo+IHZcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlMyAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IE1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXgzXG4gICAgKFggOiBGb3JfbGV0X3N5bnRheDMpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBJbXBsXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXgyXG4gICAgKFggOiBGb3JfbGV0X3N5bnRheDIpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgzXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCAnZCwgXykgdCA9ICgnYSwgJ2QpIFgudFxuICAgIGVuZClcbiAgICAoSW50ZilcbiAgICAoSW1wbClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheFxuICAgIChYIDogRm9yX2xldF9zeW50YXgpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4MlxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFgudFxuICAgIGVuZClcbiAgICAoSW50ZilcbiAgICAoSW1wbClcblxuKCoqIFRoaXMgZnVuY3RvciBjbG9zZWx5IHJlc2VtYmxlcyBbTWFrZTNdLCBhbmQgaW5kZWVkIGl0IGNvdWxkIGJlIGltcGxlbWVudGVkXG4gICAgbXVjaCBzaG9ydGVyIGluIHRlcm1zIG9mIFtNYWtlM10uIEhvd2V2ZXIsIHdlIGltcGxlbWVudCBpdCBieSBoYW5kIHNvIHRoYXRcbiAgICB0aGUgcmVzdWx0aW5nIGZ1bmN0aW9ucyBhcmUgbW9yZSBlZmZpY2llbnQsIGUuZy4gdXNpbmcgW21hcDJdIGRpcmVjdGx5IGluc3RlYWQgb2ZcbiAgICBkZWZpbmluZyBbYXBwbHldIGluIHRlcm1zIG9mIGl0IGFuZCB0aGVuIFttYXAyXSBpbiB0ZXJtcyBvZiB0aGF0LiBGb3IgbW9zdFxuICAgIGFwcGxpY2F0aXZlcyB0aGlzIGRvZXMgbm90IG1hdHRlciwgYnV0IGZvciBzb21lIChzdWNoIGFzIEJvbnNhaS5WYWx1ZS50KSwgaXQgaGFzIGFcbiAgICBsYXJnZXIgaW1wYWN0LiAqKVxubW9kdWxlIE1ha2UzX3VzaW5nX21hcDIgKFggOiBCYXNpYzNfdXNpbmdfbWFwMikgOlxuICBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgYXBwbHkgdGYgdGEgPSBtYXAyIHRmIHRhIH5mOihmdW4gZiBhIC0+IGYgYSlcbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19tYXAyIC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcDIgKG1hcDIgdGEgdGIgfmYpIHRjIH5mOihmdW4gZmFiIGMgLT4gZmFiIGMpXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgKCAqPiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4gKCkgeSAtPiB5KVxuICBsZXQgKCA8KiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4geCAoKSAtPiB4KVxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyX3VzaW5nX21hcDIgKFggOiBCYXNpYzJfdXNpbmdfbWFwMikgOlxuICBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlM191c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19tYXAyIChYIDogQmFzaWNfdXNpbmdfbWFwMikgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9XG4gIE1ha2UyX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UzX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpYzNfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTM19sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgYXBwbHkgdGYgdGEgPSBtYXAyIHRmIHRhIH5mOihmdW4gZiBhIC0+IGYgYSlcbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IG1hcDIgfmY6KGZ1biAoKSAtPiBmKSAocmV0dXJuICgpKSB0IFtAbm9udGFpbF1cblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20gbWFwIC0+IG1hcFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID1cbiAgICBsZXQgcmVzID0gbWFwMiAoYm90aCB0YSB0YikgdGMgfmY6KGZ1biAoYSwgYikgYyAtPiBmIGEgYiBjKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgKCAqPiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4gKCkgeSAtPiB5KVxuICBsZXQgKCA8KiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4geCAoKSAtPiB4KVxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpYzJfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTMl9sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlM191c2luZ19tYXAyX2xvY2FsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19tYXAyX2xvY2FsIChYIDogQmFzaWNfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IE1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkMiAoTSA6IE1vbmFkLlMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIE0udCA9IE1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gPSBNLnJldHVyblxuICAgIGxldCBhcHBseSBtZiBteCA9IE0uYmluZCBtZiB+ZjooZnVuIGYgLT4gTS5tYXAgbXggfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gTS5tYXBcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQgKE0gOiBNb25hZC5TKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gT2ZfbW9uYWQyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIENvbXBvc2UgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRi50IEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBHLnJldHVybiAoRi5yZXR1cm4gYSlcbiAgICAgIGxldCBhcHBseSB0ZiB0eCA9IEcuYXBwbHkgKEcubWFwIH5mOkYuYXBwbHkgdGYpIHR4XG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRy5tYXAgfmY6KEYubWFwIH5mKSB0XG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBjdXN0b21fbWFwXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBQYWlyIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEYucmV0dXJuIGEsIEcucmV0dXJuIGFcbiAgICAgIGxldCBhcHBseSB0ZiB0eCA9IEYuYXBwbHkgKGZzdCB0ZikgKGZzdCB0eCksIEcuYXBwbHkgKHNuZCB0ZikgKHNuZCB0eClcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBGLm1hcCB+ZiAoZnN0IHQpLCBHLm1hcCB+ZiAoc25kIHQpXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBjdXN0b21fbWFwXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID1cbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gIH1cblxudHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhIHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfZmMgPSBzaWdcbiAgdHlwZSBjb21wYXJhYmxlX3RcblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gY29tcGFyYWJsZV90XG5lbmRcblxubW9kdWxlIE1vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYilcbmVuZFxuXG5sZXQgbWFrZSAodHlwZSB0KSB+Y29tcGFyZSB+c2V4cF9vZl90ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIGNvbXBhcmFibGVfdCA9IHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZCA6IFNfZmNcbiAgICB3aXRoIHR5cGUgY29tcGFyYWJsZV90ID0gdClcbjs7XG5cbm1vZHVsZSBTX3RvX1MxIChTIDogUykgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gUy50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gUy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBvcGVuIFNcblxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAnYSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gTS57IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBpbmNsdWRlIE1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCJfXCJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAhJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgY29tcGFyYXRvciAtPiAoJ2EgdCwgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZCAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICEnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXBfYSkgY29tcGFyYXRvclxuICAgIC0+ICgnYiwgJ2NtcF9iKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgJ2IpIHQsICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQyIChNIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZF9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXApIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCBfKSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2EsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcF9hIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMl9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXBfYSkgY29tcGFyYXRvclxuICAgIC0+ICgnYiwgJ2NtcF9iKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgJ2IsIF8pIHQsICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQyX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZVxuICAgICAgOiAgKCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+ICgnYiAtPiAnYiAtPiBpbnQpXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCEnY21wX2EsICEnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgYiA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICA7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IGIuc2V4cF9vZl90XG4gICAgfVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2YsICdzKSB0ID1cbiAgfCBGaXJzdCBvZiAnZlxuICB8IFNlY29uZCBvZiAnc1xuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOlxuICAnZiAncy4gKCdmIC0+ICdmIC0+IGludCkgLT4gKCdzIC0+ICdzIC0+IGludCkgLT4gKCdmLCAncykgdCAtPiAoJ2YsICdzKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19mIF9jbXBfX3MgYV9fMDAxXyBiX18wMDJfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICB8IEZpcnN0IF9hX18wMDNfLCBGaXJzdCBfYl9fMDA0XyAtPiBfY21wX19mIF9hX18wMDNfIF9iX18wMDRfXG4gICAgfCBGaXJzdCBfLCBfIC0+IC0xXG4gICAgfCBfLCBGaXJzdCBfIC0+IDFcbiAgICB8IFNlY29uZCBfYV9fMDA1XywgU2Vjb25kIF9iX18wMDZfIC0+IF9jbXBfX3MgX2FfXzAwNV8gX2JfXzAwNl8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGYgcy5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGYgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGYsIHMpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9mIF9oYXNoX2ZvbGRfcyBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgRmlyc3QgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2YgaHN2IF9hMFxuICB8IFNlY29uZCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfcyBoc3YgX2EwXG47O1xuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2YgJ3MuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2YpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3MpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2YsICdzKSB0XG4gID1cbiAgZnVuICh0eXBlIGZfXzAyM18gc19fMDI0XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGZfXzAyM18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gc19fMDI0XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGZfXzAyM18sIHNfXzAyNF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDExXyA9IFwiZWl0aGVyMC5tbC50XCIgaW5cbiAgICBmdW4gX29mX2ZfXzAwN18gX29mX3NfXzAwOF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTVfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfZl9fMDA3XyBhcmcwX18wMTZfIGluXG4gICAgICAgICAgIEZpcnN0IHJlczBfXzAxN19cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE0X1xuICAgICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIF90YWdfXzAxOV8pIDo6IHNleHBfYXJnc19fMDIwXykgYXNcbiAgICAgICAgX3NleHBfXzAxOF8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDIwXyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDIxXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMjJfID0gX29mX3NfXzAwOF8gYXJnMF9fMDIxXyBpblxuICAgICAgICAgICBTZWNvbmQgcmVzMF9fMDIyX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTlfXG4gICAgICAgICAgICAgX3NleHBfXzAxOF8pXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbiAgICAgIHwgc2V4cF9fMDEwXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2YgJ3MuXG4gICgnZiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnZiwgJ3MpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGZfXzAzMV8gc19fMDMyXylcbiAgICAgIDogICgoZl9fMDMxXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChzX18wMzJfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoZl9fMDMxXywgc19fMDMyXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9mX18wMjVfIF9vZl9zX18wMjZfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IGFyZzBfXzAyN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyOF8gPSBfb2ZfZl9fMDI1XyBhcmcwX18wMjdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkZpcnN0XCI7IHJlczBfXzAyOF8gXVxuICAgICAgfCBTZWNvbmQgYXJnMF9fMDI5XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMwXyA9IF9vZl9zX18wMjZfIGFyZzBfXzAyOV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2Vjb25kXCI7IHJlczBfXzAzMF8gXVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgJ2YgJ3MuXG4gICdmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gIC0+ICdzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gIC0+ICgnZiwgJ3MpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBmdW4gXydmX3NleHBfZ3JhbW1hciBfJ3Nfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJGaXJzdFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nZl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiU2Vjb25kXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydzX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuIiwiKCogVGhlIHR5cGUgW3RdIHNob3VsZCBiZSBhYnN0cmFjdCB0byBtYWtlIHRoZSBmc2V0IGFuZCBzZXQgZnVuY3Rpb25zIHVuYXZhaWxhYmxlXG4gICBmb3IgcHJpdmF0ZSB0eXBlcyBhdCB0aGUgbGV2ZWwgb2YgdHlwZXMgKGFuZCBub3QgYnkgcHV0dGluZyBOb25lIGluIHRoZSBmaWVsZCkuXG4gICBVbmZvcnR1bmF0ZWx5LCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QgbWVhbnMgdGhhdCB3aGVuIGNyZWF0aW5nIGZpZWxkcyAodGhyb3VnaFxuICAgYSBbY3JlYXRlXSBmdW5jdGlvbikgdmFsdWUgcmVzdHJpY3Rpb24ga2lja3MgaW4uIFRoaXMgaXMgd29ya2VkIGFyb3VuZCBieSBpbnN0ZWFkXG4gICBub3QgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0LCBidXQgZm9yY2luZyBhbnlvbmUgYnJlYWtpbmcgdGhlIGFic3RyYWN0aW9uIHRvIHVzZVxuICAgdGhlIFtGb3JfZ2VuZXJhdGVkX2NvZGVdIG1vZHVsZSwgbWFraW5nIGl0IG9idmlvdXMgdG8gYW55IHJlYWRlciB0aGF0IHNvbWV0aGluZyB1Z2x5XG4gICBpcyBnb2luZyBvbi5cbiAgIHRfd2l0aF9wZXJtIChhbmQgZGVyaXZhdGl2ZXMpIGlzIHRoZSB0eXBlIHRoYXQgdXNlcnMgcmVhbGx5IHVzZS4gSXQgaXMgYSBjb25zdHJ1Y3RvclxuICAgYmVjYXVzZTpcbiAgIDEuIGl0IG1ha2VzIHR5cGUgZXJyb3JzIG1vcmUgcmVhZGFibGUgKGxlc3MgYWxpYXNpbmcpXG4gICAyLiB0aGUgdHlwZXIgaW4gb2NhbWwgNC4wMSBhbGxvd3MgdGhpczpcblxuICAge1tcbiAgICAgbW9kdWxlIEEgPSBzdHJ1Y3RcbiAgICAgICB0eXBlIHQgPSB7YSA6IGludH1cbiAgICAgZW5kXG4gICAgIHR5cGUgdCA9IEEudFxuICAgICBsZXQgZiAoeCA6IHQpID0geC5hXG4gICBdfVxuXG4gICAoYWx0aG91Z2ggd2l0aCBXYXJuaW5nIDQwOiBhIGlzIHVzZWQgb3V0IG9mIHNjb3BlKVxuICAgd2hpY2ggbWVhbnMgdGhhdCBpZiBbdF93aXRoX3Blcm1dIHdhcyByZWFsbHkgYW4gYWxpYXMgb24gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSxcbiAgIHBlb3BsZSBjb3VsZCBzYXkgW3Quc2V0dGVyXSBhbmQgYnJlYWsgdGhlIGFic3RyYWN0aW9uIHdpdGggbm8gaW5kaWNhdGlvbiB0aGF0XG4gICBzb21ldGhpbmcgdWdseSBpcyBnb2luZyBvbiBpbiB0aGUgc291cmNlIGNvZGUuXG4gICBUaGUgd2FybmluZyBpcyAoSSB0aGluaykgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBtYWtlIHRoZWlyIGNvZGUgY29tcGF0aWJsZSB3aXRoXG4gICBwcmV2aW91cyB2ZXJzaW9ucyBvZiBvY2FtbCwgc28gd2UgbWF5IHZlcnkgd2VsbCB0dXJuIGl0IG9mZi5cblxuICAgVGhlIHR5cGUgdF93aXRoX3Blcm0gY291bGQgYWxzbyBoYXZlIGJlZW4gYSBbdW5pdCAtPiBGb3JfZ2VuZXJhdGVkX2NvZGUudF0gdG8gd29ya1xuICAgYXJvdW5kIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCB0aGVuIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0gd291bGQgaGF2ZSBiZWVuIGEgcHJvcGVyXG4gICBhYnN0cmFjdCB0eXBlLCBidXQgaXQgbG9va3MgbGlrZSBpdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2UgKGZvciBleGFtcGxlLCBhIGZvbGQgb24gYVxuICAgcmVjb3JkIHR5cGUgd2l0aCA0MCBmaWVsZHMgd291bGQgYWN0dWFsbHkgYWxsb2NhdGUgdGhlIDQwIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0ncyBhdFxuICAgZXZlcnkgc2luZ2xlIGZvbGQuKSAqKVxuXG5tb2R1bGUgRm9yX2dlbmVyYXRlZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHQgPVxuICAgIHsgZm9yY2VfdmFyaWFuY2UgOiAncGVybSAtPiB1bml0XG4gICAgOyAoKiBmb3JjZSBbdF0gdG8gYmUgY29udHJhdmFyaWFudCBpbiBbJ3Blcm1dLCBiZWNhdXNlIHBoYW50b20gdHlwZSB2YXJpYWJsZXMgb25cbiAgICAgICAgIGNvbmNyZXRlIHR5cGVzIGRvbid0IHdvcmsgdGhhdCB3ZWxsIG90aGVyd2lzZSAodXNpbmcgOj4gY2FuIHJlbW92ZSB0aGVtIGVhc2lseSkgKilcbiAgICAgIG5hbWUgOiBzdHJpbmdcbiAgICA7IHNldHRlciA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb25cbiAgICA7IGdldHRlciA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgOyBmc2V0IDogJ3JlY29yZCAtPiAnZmllbGQgLT4gJ3JlY29yZFxuICAgIH1cblxuICBsZXQgb3BhcXVlX2lkZW50aXR5ID0gU3lzMC5vcGFxdWVfaWRlbnRpdHlcbmVuZFxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybSA9XG4gIHwgRmllbGQgb2YgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIEZvcl9nZW5lcmF0ZWRfY29kZS50XG5bQEB1bmJveGVkXVxuXG50eXBlICgncmVjb3JkLCAnZmllbGQpIHQgPSAoWyBgUmVhZCB8IGBTZXRfYW5kX2NyZWF0ZSBdLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtXG50eXBlICgncmVjb3JkLCAnZmllbGQpIHJlYWRvbmx5X3QgPSAoWyBgUmVhZCBdLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtXG5cbmxldCBuYW1lIChGaWVsZCBmaWVsZCkgPSBmaWVsZC5uYW1lXG5sZXQgZ2V0IChGaWVsZCBmaWVsZCkgciA9IGZpZWxkLmdldHRlciByXG5sZXQgZnNldCAoRmllbGQgZmllbGQpIHIgdiA9IGZpZWxkLmZzZXQgciB2XG5sZXQgc2V0dGVyIChGaWVsZCBmaWVsZCkgPSBmaWVsZC5zZXR0ZXJcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdyZXN1bHQpIHVzZXIgPVxuICB7IGYgOiAnZmllbGQuICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybSAtPiAncmVzdWx0IH1cblxubGV0IG1hcCAoRmllbGQgZmllbGQpIHIgfmYgPSBmaWVsZC5mc2V0IHIgKGYgKGZpZWxkLmdldHRlciByKSlcblxubGV0IHVwZGF0ZXIgKEZpZWxkIGZpZWxkKSA9XG4gIG1hdGNoIGZpZWxkLnNldHRlciB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBzZXR0ZXIgLT4gU29tZSAoZnVuIHIgfmYgLT4gc2V0dGVyIHIgKGYgKGZpZWxkLmdldHRlciByKSkpXG47O1xuIiwiKCogW1N0cmluZzBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW1N0ZGxpYi5TdHJpbmddLiBbU3RyaW5nMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbU3RkbGliLlN0cmluZ10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzdHJpbmcwLm1sIHNob3VsZFxuICAgdXNlIFtTdGRsaWIuU3RyaW5nXS4gIFtTdHJpbmcwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3NcbiAgIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHN0cmluZ3MsIGluY2x1ZGluZyB0aGUgc3Vic2NyaXB0IHN5bnRheCBbeC5baV1dIHdoaWNoXG4gICB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG8gW1N0cmluZ10sIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TdHJpbmddIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG9cblxuICAge1tcbiAgICAgbW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgU3RyaW5nID0gU3RyaW5nMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TdHJpbmddLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IChzdHJpbmdbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoc3RyaW5nW0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGNoYXJcbiAgICA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmVuZFxuXG5pbmNsdWRlIFN0cmluZ1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0ICggXiApID0gKCBeIClcbmxldCBjYXBpdGFsaXplID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5TdHJpbmcuY29tcGFyZVxubGV0IGVzY2FwZWQgPSBTdGRsaWIuU3RyaW5nLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IG1ha2UgPSBTdGRsaWIuU3RyaW5nLm1ha2VcbmxldCBzdWIgPSBTdGRsaWIuU3RyaW5nLnN1YlxubGV0IHVuY2FwaXRhbGl6ZSA9IFN0ZGxpYi5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG5sZXQgdW5zYWZlX2JsaXQgPSBTdGRsaWIuU3RyaW5nLnVuc2FmZV9ibGl0XG5sZXQgdXBwZXJjYXNlID0gU3RkbGliLlN0cmluZy51cHBlcmNhc2VfYXNjaWlcbmxldCBzcGxpdF9vbl9jaGFyID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyXG5cbmxldCBjb25jYXQgPyhzZXAgPSBcIlwiKSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCJcIlxuICAoKiBUaGUgc3RkbGliIGRvZXMgbm90IHNwZWNpYWxpemUgdGhpcyBjYXNlIGJlY2F1c2UgaXQgY291bGQgYnJlYWsgZXhpc3RpbmcgcHJvamVjdHMuICopXG4gIHwgWyB4IF0gLT4geFxuICB8IGwgLT4gU3RkbGliLlN0cmluZy5jb25jYXQgfnNlcCBsXG47O1xuXG5sZXQgaXRlciB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0ZGxpYi5MZXhpbmcucG9zaXRpb24gPVxuICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgOyBwb3NfbG51bSA6IGludFxuICAgIDsgcG9zX2JvbCA6IGludFxuICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gICAgICAgdGhlbiAwXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBtYXRjaCBjb21wYXJlX3N0cmluZyBhX18wMDFfLnBvc19mbmFtZSBiX18wMDJfLnBvc19mbmFtZSB3aXRoXG4gICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2xudW0gYl9fMDAyXy5wb3NfbG51bSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2JvbCBiX18wMDJfLnBvc19ib2wgd2l0aFxuICAgICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2NudW0gYl9fMDAyXy5wb3NfY251bVxuICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBmdW4gaHN2IGFyZyAtPlxuICAgICAgbGV0IGhzdiA9XG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgYXJnLnBvc19mbmFtZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19sbnVtXG4gICAgICAgIGluXG4gICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfYm9sXG4gICAgICBpblxuICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19jbnVtXG4gIDs7XG5cbiAgbGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jIGFyZyA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICAgIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1biB7IHBvc19mbmFtZSA9IHBvc19mbmFtZV9fMDA0X1xuICAgICAgICAgOyBwb3NfbG51bSA9IHBvc19sbnVtX18wMDZfXG4gICAgICAgICA7IHBvc19ib2wgPSBwb3NfYm9sX18wMDhfXG4gICAgICAgICA7IHBvc19jbnVtID0gcG9zX2NudW1fXzAxMF9cbiAgICAgICAgIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDNfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9pbnQgcG9zX2NudW1fXzAxMF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19jbnVtXCI7IGFyZ19fMDExXyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2ZfaW50IHBvc19ib2xfXzAwOF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19ib2xcIjsgYXJnX18wMDlfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgcG9zX2xudW1fXzAwNl8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19sbnVtXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIHBvc19mbmFtZV9fMDA0XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2ZuYW1lXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDNfXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyBQcHhfaGVyZS5saWZ0X3Bvc2l0aW9uX2FzX3N0cmluZy4gKilcbmxldCBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2wgPVxuICBTdHJpbmcuY29uY2F0XG4gICAgWyBwb3NfZm5hbWU7IFwiOlwiOyBJbnQudG9fc3RyaW5nIHBvc19sbnVtOyBcIjpcIjsgSW50LnRvX3N0cmluZyAocG9zX2NudW0gLSBwb3NfYm9sKSBdXG47O1xuXG5sZXQgdG9fc3RyaW5nIHsgU3RkbGliLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCB9ID1cbiAgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpc3QwXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCAoZiB4IDogXyBFaXRoZXIwLnQpIHdpdGhcbiAgICAgICB8IEZpcnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kXG4gICAgICAgfCBTZWNvbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXSBbQG5vbnRhaWxdXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTdGRsaWIucmVzdWx0ID1cbiAgfCBPayBvZiAnYVxuICB8IEVycm9yIG9mICdiXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cblxubGV0IHRfb2Zfc2V4cCA6XG4gICdhICdiLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdhLCAnYikgdFxuICA9XG4gIGZ1biAodHlwZSBhX18wMTdfIGJfXzAxOF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMTdfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChhX18wMTdfLCBiX18wMThfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcInJlc3VsdC5tbC50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwib2tcIiB8IFwiT2tcIikgYXMgX3RhZ19fMDA4XykgOjogc2V4cF9hcmdzX18wMDlfKSBhc1xuICAgICAgICBfc2V4cF9fMDA3XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMDlfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTBfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxMV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMTBfIGluXG4gICAgICAgICAgIE9rIHJlczBfXzAxMV9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDA4X1xuICAgICAgICAgICAgIF9zZXhwX18wMDdfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBfdGFnX18wMTNfKSA6OiBzZXhwX2FyZ3NfXzAxNF8pIGFzXG4gICAgICAgIF9zZXhwX18wMTJfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE2XyA9IF9vZl9iX18wMDJfIGFyZzBfXzAxNV8gaW5cbiAgICAgICAgICAgRXJyb3IgcmVzMF9fMDE2X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMTNfXG4gICAgICAgICAgICAgX3NleHBfXzAxMl8pXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJva1wiIHwgXCJPa1wiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMjVfIGJfXzAyNl8pXG4gICAgICA6ICAoKGFfXzAyNV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDI2XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAyNV8sIGJfXzAyNl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDE5XyBfb2ZfYl9fMDIwXyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMjFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjJfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMjJfIF1cbiAgICAgIHwgRXJyb3IgYXJnMF9fMDIzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI0XyA9IF9vZl9iX18wMjBfIGFyZzBfXzAyM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXJyb3JcIjsgcmVzMF9fMDI0XyBdXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAnYSAnYi5cbiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIk9rXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJFcnJvclwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmUgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDI3XyBiX18wMjhfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDI3XyBiX18wMjhfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMjdfLCBiX18wMjhfIHdpdGhcbiAgICB8IE9rIF9hX18wMjlfLCBPayBfYl9fMDMwXyAtPiBfY21wX19hIF9hX18wMjlfIF9iX18wMzBfXG4gICAgfCBPayBfLCBfIC0+IC0xXG4gICAgfCBfLCBPayBfIC0+IDFcbiAgICB8IEVycm9yIF9hX18wMzFfLCBFcnJvciBfYl9fMDMyXyAtPiBfY21wX19iIF9hX18wMzFfIF9iX18wMzJfKVxuOztcblxubGV0IGVxdWFsIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAzM18gYl9fMDM0XyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAzM18gYl9fMDM0X1xuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDMzXywgYl9fMDM0XyB3aXRoXG4gICAgfCBPayBfYV9fMDM1XywgT2sgX2JfXzAzNl8gLT4gX2NtcF9fYSBfYV9fMDM1XyBfYl9fMDM2X1xuICAgIHwgT2sgXywgXyAtPiBmYWxzZVxuICAgIHwgXywgT2sgXyAtPiBmYWxzZVxuICAgIHwgRXJyb3IgX2FfXzAzN18sIEVycm9yIF9iX18wMzhfIC0+IF9jbXBfX2IgX2FfXzAzN18gX2JfXzAzOF8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGEgYi5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGEsIGIpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgT2sgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICB8IEVycm9yIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBnbG9iYWxpemUgPSBnbG9iYWxpemVfcmVzdWx0XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gT2sgKGYgeClcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IHJldHVybiB4ID0gT2sgeFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgY2hlY2tfb2sgY2hlY2tfZXJyb3IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIG9rIC0+IGNoZWNrX29rIG9rXG4gIHwgRXJyb3IgZXJyb3IgLT4gY2hlY2tfZXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBmYWlsIHggPSBFcnJvciB4XG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5cbmxldCBtYXBfZXJyb3IgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIF8gYXMgeCAtPiB4XG4gIHwgRXJyb3IgeCAtPiBFcnJvciAoZiB4KVxuOztcblxubW9kdWxlIEVycm9yID0gTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPayBfIGFzIG9rIC0+IG9rXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcF9lcnJvclxuICAgIGxldCByZXR1cm4gZSA9IEVycm9yIGVcbiAgZW5kKVxuXG5sZXQgaXNfb2sgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBmYWxzZVxuICB8IEVycm9yIF8gLT4gdHJ1ZVxuOztcblxubGV0IG9rID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IFNvbWUgeFxuICB8IEVycm9yIF8gLT4gTm9uZVxuOztcblxubGV0IGVycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IE5vbmVcbiAgfCBFcnJvciB4IC0+IFNvbWUgeFxuOztcblxubGV0IG9mX29wdGlvbiBvcHQgfmVycm9yID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT4gRXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBpdGVyIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayB4IC0+IGYgeFxuICB8IEVycm9yIF8gLT4gKClcbjs7XG5cbmxldCBpdGVyX2Vycm9yIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayBfIC0+ICgpXG4gIHwgRXJyb3IgeCAtPiBmIHhcbjs7XG5cbmxldCB0b19laXRoZXIgOiBfIHQgLT4gXyBFaXRoZXIudCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBGaXJzdCB4XG4gIHwgRXJyb3IgeCAtPiBTZWNvbmQgeFxuOztcblxubGV0IG9mX2VpdGhlciA6IF8gRWl0aGVyLnQgLT4gXyB0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IE9rIHhcbiAgfCBTZWNvbmQgeCAtPiBFcnJvciB4XG47O1xuXG5sZXQgb2tfaWZfdHJ1ZSBib29sIH5lcnJvciA9IGlmIGJvb2wgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yXG5cbmxldCB0cnlfd2l0aCBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIGV4blxuOztcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IG9rX29yX2ZhaWx3aXRoID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBzdHIgLT4gZmFpbHdpdGggc3RyXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdvaywgJ2VycikgX3Jlc3VsdCA9ICgnb2ssICdlcnIpIHQgPVxuICAgIHwgT2sgb2YgJ29rXG4gICAgfCBFcnJvciBvZiAnZXJyXG5cbiAgbGV0IGlzX2Vycm9yID0gaXNfZXJyb3JcbiAgbGV0IGlzX29rID0gaXNfb2tcbmVuZFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgT2sgXywgRXJyb3IgZSB8IEVycm9yIGUsIE9rIF8gLT4gRXJyb3IgZVxuICB8IE9rIG9rMSwgT2sgb2syIC0+IE9rIChvayBvazEgb2syKVxuICB8IEVycm9yIGVycjEsIEVycm9yIGVycjIgLT4gRXJyb3IgKGVyciBlcnIxIGVycjIpXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QxLnBhcnRpdGlvbl9tYXAgbCB+Zjp0b19laXRoZXIgaW5cbiAgbWF0Y2ggZXJycyB3aXRoXG4gIHwgW10gLT4gT2sgb2tcbiAgfCBfIDo6IF8gLT4gRXJyb3IgZXJyc1xuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IG1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZyBmb3IgZXhwb3J0IG9ubHkgKilcbmxldCBva19mc3QgPSB0b19laXRoZXJcbiIsIigqKiBQcm92aWRlcyBnZW5lcmljIHNpZ25hdHVyZXMgZm9yIGNvbnRhaW5lciBkYXRhIHN0cnVjdHVyZXMuXG5cbiAgICBUaGVzZSBzaWduYXR1cmVzIGluY2x1ZGUgZnVuY3Rpb25zIChbaXRlcl0sIFtmb2xkXSwgW2V4aXN0c10sIFtmb3JfYWxsXSwgLi4uKSB0aGF0XG4gICAgeW91IHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGFueSBjb250YWluZXIuIFVzZWQgYnkgaW5jbHVkaW5nIFtDb250YWluZXIuUzBdIG9yXG4gICAgW0NvbnRhaW5lci5TMV0gaW4gdGhlIHNpZ25hdHVyZSBmb3IgZXZlcnkgY29udGFpbmVyLWxpa2UgZGF0YSBzdHJ1Y3R1cmUgKFtBcnJheV0sXG4gICAgW0xpc3RdLCBbU3RyaW5nXSwgLi4uKSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IGludGVyZmFjZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCoqIFtDb250aW51ZV9vcl9zdG9wLnRdIGlzIHVzZWQgYnkgdGhlIFtmXSBhcmd1bWVudCB0byBbZm9sZF91bnRpbF0gaW4gb3JkZXIgdG9cbiAgICAgIGluZGljYXRlIHdoZXRoZXIgZm9sZGluZyBzaG91bGQgY29udGludWUsIG9yIHN0b3AgZWFybHkuXG5cbiAgICAgIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuQ29udGludWVfb3Jfc3RvcFxuICAqKVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB8IENvbnRpbnVlIG9mICdhXG4gICAgICB8IFN0b3Agb2YgJ2JcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuU3VtbWFibGUgKilcbm1vZHVsZSB0eXBlIFN1bW1hYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqKiBUaGUgcmVzdWx0IG9mIHN1bW1pbmcgbm8gdmFsdWVzLiAqKVxuICB2YWwgemVybyA6IHRcblxuICAoKiogQW4gb3BlcmF0aW9uIHRoYXQgY29tYmluZXMgdHdvIFt0XSdzIGFuZCBoYW5kbGVzIFt6ZXJvICsgeF0gYnkganVzdCByZXR1cm5pbmcgW3hdLFxuICAgICAgYXMgd2VsbCBhcyBpbiB0aGUgc3ltbWV0cmljIGNhc2UuICopXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVyIC0gYSBjb250YWluZXIgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlLCBlLmcuLFxuICAgIHN0cmluZywgd2hpY2ggaXMgYSBjb250YWluZXIgb2YgY2hhcmFjdGVycyAoW3R5cGUgZWx0ID0gY2hhcl0pIGFuZCBuZXZlciBvZiBhbnl0aGluZ1xuICAgIGVsc2UuICopXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBlbHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5cbiAgKCoqIFtpdGVyXSBtdXN0IGFsbG93IGV4Y2VwdGlvbnMgcmFpc2VkIGluIFtmXSB0byBlc2NhcGUsIHRlcm1pbmF0aW5nIHRoZSBpdGVyYXRpb25cbiAgICAgIGNsZWFubHkuICBUaGUgc2FtZSBob2xkcyBmb3IgYWxsIGZ1bmN0aW9ucyBiZWxvdyB0YWtpbmcgYW4gW2ZdLiAqKVxuICB2YWwgaXRlciA6IHQgLT4gZjooKGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gdCAtPiBmOigoZWx0IC0+ICdzdW0pW0Bsb2NhbF0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogdCAtPiBmOigoZWx0IC0+ICdhIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6IHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AuIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZVxuICAgICAgY29tcGxleGl0eSBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF9waGFudG9tID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogXyB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiBfIHQgLT4gZjooKGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IF8gdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAgICAgZWxlbWVudHMgd2lsbCBiZSBzdW1tZWQgaXMgdW5zcGVjaWZpZWQuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiBfIHRcbiAgICAtPiBmOigoZWx0IC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6IF8gdCAtPiBmOigoZWx0IC0+ICdhIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiBfIHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogXyB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gKilcbiAgdmFsIG1pbl9lbHQgOiBfIHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiBfIHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgcG9seW1vcnBoaWMgY29udGFpbmVyLCBlLmcuLCBbJ2EgbGlzdF0gb3IgWydhIGFycmF5XS4gKilcbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgW2VxdWFsXS4gKilcbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0gICopXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gJ2EgdFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogJ2EgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluaW11bSAocmVzcCBtYXhpbXVtKSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkXG4gICAgICBbY29tcGFyZV0gZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0XG4gICAgICBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiAqKVxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5XG4gICAgICBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgLT4gZXF1YWw6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgZWx0IC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGludClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF93aXRoX2NyZWF0b3JzID0gc2lnXG4gIGluY2x1ZGUgUzBcblxuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbiAgdmFsIG9mX2FycmF5IDogZWx0IGFycmF5IC0+IHRcblxuICAoKiogRS5nLiwgW2FwcGVuZCAob2ZfbGlzdCBbYTsgYl0pIChvZl9saXN0IFtjOyBkOyBlXSldIGlzIFtvZl9saXN0IFthOyBiOyBjOyBkOyBlXV0gKilcbiAgdmFsIGFwcGVuZCA6IHQgLT4gdCAtPiB0XG5cbiAgKCoqIENvbmNhdGVuYXRlcyBhIG5lc3RlZCBjb250YWluZXIuIFRoZSBlbGVtZW50cyBvZiB0aGUgaW5uZXIgY29udGFpbmVycyBhcmVcbiAgICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciBpbiBvcmRlciB0byBnaXZlIHRoZSByZXN1bHQuICopXG4gIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuXG4gICgqKiBbbWFwIGYgKG9mX2xpc3QgW2ExOyAuLi47IGFuXSldIGFwcGxpZXMgW2ZdIHRvIFthMV0sIFthMl0sIC4uLiwgW2FuXSwgaW4gb3JkZXIsIGFuZFxuICAgICAgYnVpbGRzIGEgcmVzdWx0IGVxdWl2YWxlbnQgdG8gW29mX2xpc3QgW2YgYTE7IC4uLjsgZiBhbl1dLiAqKVxuICB2YWwgbWFwIDogdCAtPiBmOigoZWx0IC0+IGVsdClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBvZiBbdF0gdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLiAqKVxuICB2YWwgZmlsdGVyIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW2ZpbHRlcl9tYXAgdCB+Zl0gYXBwbGllcyBbZl0gdG8gZXZlcnkgW3hdIGluIFt0XS4gVGhlIHJlc3VsdCBjb250YWlucyBldmVyeSBbeV0gZm9yXG4gICAgICB3aGljaCBbZiB4XSByZXR1cm5zIFtTb21lIHldLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6IHQgLT4gZjooKGVsdCAtPiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtjb25jYXRfbWFwIHQgfmZdIGlzIGVxdWl2YWxlbnQgdG8gW2NvbmNhdCAobWFwIHQgfmYpXS4gKilcbiAgdmFsIGNvbmNhdF9tYXAgOiB0IC0+IGY6KChlbHQgLT4gdClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmZdIHJldHVybnMgYSBwYWlyIFt0MSwgdDJdLCB3aGVyZSBbdDFdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdFxuICAgICAgc2F0aXNmeSBbZl0sIGFuZCBbdDJdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdCBkbyBub3Qgc2F0aXNmeSBbZl0uIFRoZSBcInRmXCJcbiAgICAgIHN1ZmZpeCBpcyBtbmVtb25pYyB0byByZW1pbmQgcmVhZGVycyB0aGF0IHRoZSByZXN1bHQgaXMgKHRydWVzLCBmYWxzZXMpLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHQgKiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmZdIHBhcnRpdGlvbnMgW3RdIGFjY29yZGluZyB0byBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogdCAtPiBmOigoZWx0IC0+IChlbHQsIGVsdCkgRWl0aGVyMC50KVtAbG9jYWxdKSAtPiB0ICogdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgaW5jbHVkZSBTMVxuXG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHRcblxuICAoKiogRS5nLiwgW2FwcGVuZCAob2ZfbGlzdCBbMTsgMl0pIChvZl9saXN0IFszOyA0OyA1XSldIGlzIFtvZl9saXN0IFsxOyAyOyAzOyA0OyA1XV0gKilcbiAgdmFsIGFwcGVuZCA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG5cbiAgKCoqIENvbmNhdGVuYXRlcyBhIG5lc3RlZCBjb250YWluZXIuIFRoZSBlbGVtZW50cyBvZiB0aGUgaW5uZXIgY29udGFpbmVycyBhcmVcbiAgICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciBpbiBvcmRlciB0byBnaXZlIHRoZSByZXN1bHQuICopXG4gIHZhbCBjb25jYXQgOiAnYSB0IHQgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIGYgKG9mX2xpc3QgW2ExOyAuLi47IGFuXSldIGFwcGxpZXMgW2ZdIHRvIFthMV0sIFthMl0sIC4uLiwgW2FuXSwgaW4gb3JkZXIsIGFuZFxuICAgICAgYnVpbGRzIGEgcmVzdWx0IGVxdWl2YWxlbnQgdG8gW29mX2xpc3QgW2YgYTE7IC4uLjsgZiBhbl1dLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcblxuICAoKiogW2ZpbHRlciB0IH5mXSByZXR1cm5zIGFsbCB0aGUgZWxlbWVudHMgb2YgW3RdIHRoYXQgc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXS4gKilcbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHRcblxuICAoKiogW2ZpbHRlcl9tYXAgdCB+Zl0gYXBwbGllcyBbZl0gdG8gZXZlcnkgW3hdIGluIFt0XS4gVGhlIHJlc3VsdCBjb250YWlucyBldmVyeSBbeV0gZm9yXG4gICAgICB3aGljaCBbZiB4XSByZXR1cm5zIFtTb21lIHldLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbY29uY2F0X21hcCB0IH5mXSBpcyBlcXVpdmFsZW50IHRvIFtjb25jYXQgKG1hcCB0IH5mKV0uICopXG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmZdIHJldHVybnMgYSBwYWlyIFt0MSwgdDJdLCB3aGVyZSBbdDFdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdFxuICAgICAgc2F0aXNmeSBbZl0sIGFuZCBbdDJdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdCBkbyBub3Qgc2F0aXNmeSBbZl0uIFRoZSBcInRmXCJcbiAgICAgIHN1ZmZpeCBpcyBtbmVtb25pYyB0byByZW1pbmQgcmVhZGVycyB0aGF0IHRoZSByZXN1bHQgaXMgKHRydWVzLCBmYWxzZXMpLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+Zl0gcGFydGl0aW9ucyBbdF0gYWNjb3JkaW5nIHRvIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAoJ2IsICdjKSBFaXRoZXIwLnQpW0Bsb2NhbF0pIC0+ICdiIHQgKiAnYyB0XG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpY193aXRoX2NyZWF0b3JzID0gc2lnXG4gIHR5cGUgKF8sIF8pIGNvbmNhdFxuXG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIHZhbCBvZl9saXN0IDogJ2EgZWx0IGxpc3QgLT4gKCdhLCBfKSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGVsdCBhcnJheSAtPiAoJ2EsIF8pIHRcbiAgdmFsIGFwcGVuZCA6ICgnYSwgJ3ApIHQgLT4gKCdhLCAncCkgdCAtPiAoJ2EsICdwKSB0XG4gIHZhbCBjb25jYXQgOiAoKCdhLCAncCkgdCwgJ3ApIGNvbmNhdCAtPiAoJ2EsICdwKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gJ2IgZWx0KVtAbG9jYWxdKSAtPiAoJ2IsICdwKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAncCkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiAoJ2IsICdwKSB0XG4gIHZhbCBjb25jYXRfbWFwIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+ICgnYiwgJ3ApIHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdwKSB0ICogKCdhLCAncCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdhLCAncCkgdFxuICAgIC0+IGY6KCgnYSBlbHQgLT4gKCdiIGVsdCwgJ2MgZWx0KSBFaXRoZXIwLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAncCkgdCAqICgnYywgJ3ApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2dlbl9hcmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGZvbGQgOiAoJ2EsICdwaGFudG9tKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBUaGUgW2l0ZXJdIGFyZ3VtZW50IHRvIFtDb250YWluZXIuTWFrZV0gc3BlY2lmaWVzIGhvdyB0byBpbXBsZW1lbnQgdGhlXG4gICAgICBjb250YWluZXIncyBbaXRlcl0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmUgW2l0ZXJdXG4gICAgICB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGl0ZXIgdCB+ZiA9IENvbnRhaW5lci5pdGVyIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2l0ZXJdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2l0ZXJdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5XG4gICAgICBhcyB3ZWxsLiAqKVxuICB2YWwgaXRlclxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdwaGFudG9tKSB0IC0+IGY6KCgnYSBlbHQgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICAgICAgXVxuXG4gICgqKiBUaGUgW2xlbmd0aF0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtsZW5ndGhdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lXG4gICAgICBbbGVuZ3RoXSB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGxlbmd0aCB0IH5mID0gQ29udGFpbmVyLmxlbmd0aCB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtsZW5ndGhdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2xlbmd0aF0gd2lsbCBpbXByb3ZlIHRoZWlyXG4gICAgICBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBsZW5ndGggOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhLCAncGhhbnRvbSkgdCAtPiBpbnQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgTWFrZV9nZW5fYXJnIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gJ2EgdCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlMF9hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICgnYSwgXykgdCA6PSB0IGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIGluY2x1ZGUgTWFrZV9nZW5fYXJnXG5cbiAgdHlwZSAoXywgXykgY29uY2F0XG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBlbHQgbGlzdCAtPiAoJ2EsIF8pIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgZWx0IGFycmF5IC0+ICgnYSwgXykgdFxuICB2YWwgY29uY2F0IDogKCgnYSwgXykgdCwgXykgY29uY2F0IC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIGluY2x1ZGUgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmdcblxuICB2YWwgY29uY2F0X29mX2FycmF5IDogJ2EgYXJyYXkgLT4gKCdhLCBfKSBjb25jYXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGVcbiAgICBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuICAgIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gJ2EgdFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgYW5kIHR5cGUgKCdhLCBfKSBjb25jYXQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGVcbiAgICBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuICAgIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gdFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gRWx0LnRcbiAgICAgYW5kIHR5cGUgKCdhLCBfKSBjb25jYXQgOj0gJ2EgbGlzdFxuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQgPSBzaWdcbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2ZvbGRdLlxuXG4gICAgICBFLmcuOiBbaXRlciB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpXS4gKilcblxuICB0eXBlICgndCwgJ2EsICdhY2MpIGZvbGQgPSAndCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuICB0eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB0eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG4gIHZhbCBpdGVyIDogZm9sZDooJ3QsICdhLCB1bml0KSBmb2xkIC0+ICgndCwgJ2EpIGl0ZXJcbiAgdmFsIGNvdW50IDogZm9sZDooJ3QsICdhLCBpbnQpIGZvbGQgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBtaW5fZWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYSBvcHRpb24pIGZvbGRcbiAgICAtPiAndFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbGVuZ3RoIDogZm9sZDooJ3QsIF8sIGludCkgZm9sZCAtPiAndCAtPiBpbnRcbiAgdmFsIHRvX2xpc3QgOiBmb2xkOigndCwgJ2EsICdhIGxpc3QpIGZvbGQgLT4gJ3QgLT4gJ2EgbGlzdFxuXG4gIHZhbCBzdW1cbiAgICA6ICBmb2xkOigndCwgJ2EsICdzdW0pIGZvbGRcbiAgICAtPiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAndFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhY2MpIGZvbGRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICd0XG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYWNjKSBmb2xkXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICd0XG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2l0ZXJdIGFuZCBbbGVuZ3RoXS4gKilcblxuICB2YWwgaXNfZW1wdHkgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gYm9vbFxuICB2YWwgbWVtIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmaW5kIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fYXJyYXkgOiBsZW5ndGg6J3QgbGVuZ3RoIC0+IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiAnYSBhcnJheVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbnRhaW5lciA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMwID0gUzBcbiAgbW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IFMwX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgUzBfd2l0aF9jcmVhdG9ycyA9IFMwX3dpdGhfY3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tID0gUzFfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTMV93aXRoX2NyZWF0b3JzID0gUzFfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBEZXJpdmVkID0gRGVyaXZlZFxuICBtb2R1bGUgdHlwZSBHZW5lcmljID0gR2VuZXJpY1xuICBtb2R1bGUgdHlwZSBHZW5lcmljX3dpdGhfY3JlYXRvcnMgPSBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgU3VtbWFibGUgPSBTdW1tYWJsZVxuXG4gIGluY2x1ZGUgRGVyaXZlZFxuXG4gICgqKiBUaGUgaWRpb20gZm9yIHVzaW5nIFtDb250YWluZXIuTWFrZV0gaXMgdG8gYmluZCB0aGUgcmVzdWx0aW5nIG1vZHVsZSBhbmQgdG9cbiAgICAgIGV4cGxpY2l0bHkgaW1wb3J0IGVhY2ggb2YgdGhlIGZ1bmN0aW9ucyB0aGF0IG9uZSB3YW50czpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICAgIGxldCBjb3VudCAgICA9IEMuY291bnRcbiAgICAgICAgbGV0IGV4aXN0cyAgID0gQy5leGlzdHNcbiAgICAgICAgbGV0IGZpbmQgICAgID0gQy5maW5kXG4gICAgICAgICgqIC4uLiAqKVxuICAgICAgXX1cblxuICAgICAgVGhpcyBpcyBwcmVmZXJhYmxlIHRvOlxuXG4gICAgICB7W1xuICAgICAgICBpbmNsdWRlIENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgIF19XG5cbiAgICAgIGJlY2F1c2UgdGhlIFtpbmNsdWRlXSBtYWtlcyBpdCB0b28gZWFzeSB0byBzaGFkb3cgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgICBjb250YWluZXIgZnVuY3Rpb25zIChbbGVuZ3RoXSBiZWluZyBhIGNvbW1vbiBvbmUpLlxuXG4gICAgICBbQ29udGFpbmVyLk1ha2UwXSBpcyBsaWtlIFtDb250YWluZXIuTWFrZV0sIGJ1dCBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVycyBsaWtlXG4gICAgICBbc3RyaW5nXS4gKilcbiAgbW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnRcblxuICBtb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpIDogUzAgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGVsdCA6PSBULkVsdC50XG5cbiAgbW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gICAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBTMV93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMF93aXRoX2NyZWF0b3JzIChUIDogTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBTMF93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBlbHQgOj0gVC5FbHQudFxuXG4gIG1vZHVsZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUIDogTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgQ29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPVxuICAndCAtPiBpbml0OidhY2N1bSAtPiBmOigoJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSlbQGxvY2FsXSkgLT4gJ2FjY3VtXG5cbnR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG50eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG5sZXQgaXRlciB+KGZvbGQgOiAoXywgXywgXykgZm9sZCkgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKSBbQG5vbnRhaWxdXG5sZXQgY291bnQgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBhIC0+IGlmIGYgYSB0aGVuIG4gKyAxIGVsc2UgbikgW0Bub250YWlsXVxuXG5sZXQgc3VtICh0eXBlIGEpIH5mb2xkIChtb2R1bGUgTSA6IFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDpNLnplcm8gfmY6KGZ1biBuIGEgLT4gTS4oICsgKSBuIChmIGEpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIFJlc3VsdC5Pa1xuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgUmVzdWx0Lk9rIHggLT4geFxuICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGUpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgfmZpbmlzaCB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgZmluaXNoXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBDb250aW51ZV9vcl9zdG9wLkNvbnRpbnVlIHggLT4geFxuICAgICAgICAgfCBTdG9wIHggLT4gcmV0dXJuIHgpKSkgW0Bub250YWlsXVxuOztcblxubGV0IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1pbiAtPiBpZiBjb21wYXJlIG1pbiBlbHQgPiAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtYXggLT4gaWYgY29tcGFyZSBtYXggZWx0IDwgMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGVuZ3RoIH5mb2xkIGMgPSBmb2xkIGMgfmluaXQ6MCB+ZjooZnVuIGFjYyBfIC0+IGFjYyArIDEpXG5cbmxldCBpc19lbXB0eSB+aXRlciBjID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4gXyAtPiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBtZW0gfml0ZXIgYyB4IH5lcXVhbCA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHkgLT4gaWYgZXF1YWwgeCB5IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHMgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb3JfYWxsIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIG5vdCAoZiB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXAgfml0ZXIgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgdCB+ZjooZnVuIHggLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIChTb21lIHgpKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgdG9fbGlzdCB+Zm9sZCBjID0gTGlzdC5yZXYgKGZvbGQgYyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IC0+IHggOjogYWNjKSlcblxubGV0IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgYyA9XG4gIGxldCBhcnJheSA9IHJlZiBbfHxdIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgaXRlciBjIH5mOihmdW4geCAtPlxuICAgIGlmICFpID0gMCB0aGVuIGFycmF5IDo9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggYykgeDtcbiAgICAhYXJyYXkuKCFpKSA8LSB4O1xuICAgIGluY3IgaSk7XG4gICFhcnJheVxuOztcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9XG5zdHJ1Y3RcbiAgbGV0IGZvbGQgPSBULmZvbGRcblxuICBsZXQgaXRlciA9XG4gICAgbWF0Y2ggVC5pdGVyIHdpdGhcbiAgICB8IGBDdXN0b20gaXRlciAtPiBpdGVyXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlciB+Zm9sZCB0IH5mXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9XG4gICAgbWF0Y2ggVC5sZW5ndGggd2l0aFxuICAgIHwgYEN1c3RvbSBsZW5ndGggLT4gbGVuZ3RoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgLT4gbGVuZ3RoIH5mb2xkIHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IGlzX2VtcHR5IH5pdGVyIHRcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gbWVtIH5pdGVyIHQgeCB+ZXF1YWxcbiAgbGV0IHN1bSBtIHQgPSBzdW0gfmZvbGQgbSB0XG4gIGxldCBjb3VudCB0IH5mID0gY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHMgfml0ZXIgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbCB+aXRlciB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXAgfml0ZXIgdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gZmluZCB+aXRlciB0IH5mXG4gIGxldCB0b19saXN0IHQgPSB0b19saXN0IH5mb2xkIHRcbiAgbGV0IHRvX2FycmF5IHQgPSB0b19hcnJheSB+bGVuZ3RoIH5pdGVyIHRcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gbWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gZm9sZF9yZXN1bHQgdCB+Zm9sZCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBmb2xkX3VudGlsIHQgfmZvbGQgfmluaXQgfmYgfmZpbmlzaFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChUKVxuXG4gIGxldCBvZl9saXN0ID0gVC5vZl9saXN0XG4gIGxldCBvZl9hcnJheSA9IFQub2ZfYXJyYXlcbiAgbGV0IGNvbmNhdCA9IFQuY29uY2F0XG4gIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBULmNvbmNhdF9vZl9hcnJheVxuICBsZXQgYXBwZW5kIGEgYiA9IGNvbmNhdCAoY29uY2F0X29mX2FycmF5IFt8IGE7IGIgfF0pXG4gIGxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKGNvbmNhdF9vZl9hcnJheSAoQXJyYXkubWFwICh0b19hcnJheSB0KSB+ZikpXG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gICAgY29uY2F0X21hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBvZl9hcnJheSBbfHxdXG4gICAgICB8IFNvbWUgeSAtPiBvZl9hcnJheSBbfCB5IHxdKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBTb21lIChmIHgpKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICAgIGxldCBhcnJheSA9IEFycmF5Lm1hcCAodG9fYXJyYXkgdCkgfmYgaW5cbiAgICBsZXQgeHMgPVxuICAgICAgQXJyYXkuZm9sZF9yaWdodCBhcnJheSB+aW5pdDpbXSB+ZjooZnVuIGVpdGhlciBhY2MgLT5cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCB4IC0+IHggOjogYWNjXG4gICAgICAgIHwgU2Vjb25kIF8gLT4gYWNjKVxuICAgIGluXG4gICAgbGV0IHlzID1cbiAgICAgIEFycmF5LmZvbGRfcmlnaHQgYXJyYXkgfmluaXQ6W10gfmY6KGZ1biBlaXRoZXIgYWNjIC0+XG4gICAgICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgXyAtPiBhY2NcbiAgICAgICAgfCBTZWNvbmQgeCAtPiB4IDo6IGFjYylcbiAgICBpblxuICAgIG9mX2xpc3QgeHMsIG9mX2xpc3QgeXNcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIHBhcnRpdGlvbl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4KSBbQG5vbnRhaWxdXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICAgIHR5cGUgKCdhLCBfKSBjb25jYXQgPSAnYSBULnRcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IG9mX2FycmF5XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMF93aXRoX2NyZWF0b3JzIChUIDogTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IEFycmF5LnRvX2xpc3RcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lcl9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBpdGVyaSB+Zm9sZCB0IH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIH5mb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyB2IC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIHYgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb3VudGkgfmZvbGRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIG4gYSAtPiBpZiBmIGkgYSB0aGVuIG4gKyAxIGVsc2UgbikgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0c2kgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb3JfYWxsaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgbm90IChmIGkgeCkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIChTb21lIChpLCB4KSkpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbigqIEFsbG93cyBbTWFrZV9nZW5dIHRvIHNoYXJlIGEgW0NvbnRhaW5lci5HZW5lcmljXSBpbXBsZW1lbnRhdGlvbiB3aXRoLCBlLmcuLFxuICAgW0NvbnRhaW5lci5NYWtlX2dlbl93aXRoX2NyZWF0b3JzXS4gKilcbm1vZHVsZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lclxuICAgIChUIDogTWFrZV9nZW5fYXJnKVxuICAgIChDIDogQ29udGFpbmVyLkdlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQpIDpcbiAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID1cbnN0cnVjdFxuICBpbmNsdWRlIENcblxuICBsZXQgaXRlcmkgPVxuICAgIG1hdGNoIFQuaXRlcmkgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyaSAtPiBpdGVyaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXJpIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgZm9sZGkgPVxuICAgIG1hdGNoIFQuZm9sZGkgd2l0aFxuICAgIHwgYEN1c3RvbSBmb2xkaSAtPiBmb2xkaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5pbml0IH5mIC0+IGZvbGRpIH5mb2xkIHQgfmluaXQgfmZcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPSBjb3VudGkgfmZvbGRpIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IGV4aXN0c2kgfml0ZXJpIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBmb3JfYWxsaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZF9tYXBpIHQgfmYgPSBmaW5kX21hcGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRpIHQgfmYgPSBmaW5kaSB+aXRlcmkgdCB+ZlxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPVxuc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2VfZ2VuIChUKVxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lciAoVCkgKEMpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlIChfLCBfKSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUIDogTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgR2VuZXJpY193aXRoX2NyZWF0b3JzXG4gIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICBhbmQgdHlwZSAoJ2EsICdwaGFudG9tKSBjb25jYXQgOj0gKCdhLCAncGhhbnRvbSkgVC5jb25jYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVClcbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jb250YWluZXIgKFQpIChDKVxuXG4gIGxldCBkZXJpdmVkX2luaXQgbiB+ZiA9IG9mX2FycmF5IChBcnJheS5pbml0IG4gfmYpXG5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIFQuaW5pdCB3aXRoXG4gICAgfCBgQ3VzdG9tIGluaXQgLT4gaW5pdFxuICAgIHwgYERlZmluZV91c2luZ19vZl9hcnJheSAtPiBkZXJpdmVkX2luaXRcbiAgOztcblxuICBsZXQgZGVyaXZlZF9jb25jYXRfbWFwaSB0IH5mID0gY29uY2F0IChULmNvbmNhdF9vZl9hcnJheSAoQXJyYXkubWFwaSAodG9fYXJyYXkgdCkgfmYpKVxuXG4gIGxldCBjb25jYXRfbWFwaSA9XG4gICAgbWF0Y2ggVC5jb25jYXRfbWFwaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGNvbmNhdF9tYXBpIC0+IGNvbmNhdF9tYXBpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2NvbmNhdCAtPiBkZXJpdmVkX2NvbmNhdF9tYXBpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgIGNvbmNhdF9tYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBvZl9hcnJheSBbfHxdXG4gICAgICB8IFNvbWUgeSAtPiBvZl9hcnJheSBbfCB5IHxdKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1hcGkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gU29tZSAoZiBpIHgpKSBbQG5vbnRhaWxdXG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIFQudFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlIChfLCBfKSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICAgIHR5cGUgKCdhLCBfKSBjb25jYXQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBBcnJheS50b19saXN0XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0ZGxpYi5MYXp5XG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGF6eV90X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xhenlfdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxhenlfdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxuZXh0ZXJuYWwgZm9yY2UgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxubGV0IG1hcCB0IH5mID0gbGF6eSAoZiAoZm9yY2UgdCkpXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiAwIGVsc2UgY29tcGFyZV9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPSBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gdHJ1ZSBlbHNlIGVxdWFsX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG5sZXQgaGFzaF9mb2xkX3QgPSBIYXNoLkJ1aWx0aW4uaGFzaF9mb2xkX2xhenlfdFxubGV0IHBlZWsgdCA9IGlmIGlzX3ZhbCB0IHRoZW4gU29tZSAoZm9yY2UgdCkgZWxzZSBOb25lXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4geCA9IGZyb21fdmFsIHhcbiAgICBsZXQgYmluZCB0IH5mID0gbGF6eSAoZm9yY2UgKGYgKGZvcmNlIHQpKSlcbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIFRfdW5mb3JjaW5nID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgaWYgaXNfdmFsIHQgdGhlbiBzZXhwX29mX2EgKGZvcmNlIHQpIGVsc2Ugc2V4cF9vZl9zdHJpbmcgXCI8dW5mb3JjZWQgbGF6eT5cIlxuICA7O1xuZW5kXG4iLCIoKiBTcGxpdCBvZmYgdG8gYXZvaWQgYSBjeWNsaWMgZGVwZW5kZW5jeSB3aXRoIFtPcl9lcnJvcl0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5sZXQgc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJOZWdhdGl2ZSBwb3NpdGlvbjogJWRcIiBwb3MgKCk7XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJOZWdhdGl2ZSBsZW5ndGg6ICVkXCIgbGVuICgpO1xuICAoKiBXZSB1c2UgW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IHRvdGFsX2xlbmd0aF0gdG8gYXZvaWQgdGhlXG4gICAgIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93LiAqKVxuICBpZiBwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwb3MgKyBsZW4gcGFzdCBlbmQ6ICVkICsgJWQgPiAlZFwiIHBvcyBsZW4gdG90YWxfbGVuZ3RoICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgKCogVGhpcyBpcyBiZXR0ZXIgdGhhbiBbc2xvd19jaGVja19wb3NfbGVuX2V4bl0gZm9yIHR3byByZWFzb25zOlxuXG4gICAgIC0gbXVjaCBsZXNzIGlubGluZWQgY29kZVxuICAgICAtIG9ubHkgb25lIGNvbmRpdGlvbmFsIGp1bXBcblxuICAgICBUaGUgcmVhc29uIGl0IHdvcmtzIGlzIHRoYXQgY2hlY2tpbmcgWzwgMF0gaXMgdGVzdGluZyB0aGUgaGlnaGVzdCBvcmRlciBiaXQsIHNvXG4gICAgIFthIDwgMCB8fCBiIDwgMF0gaXMgdGhlIHNhbWUgYXMgW2EgbG9yIGIgPCAwXS5cblxuICAgICBbcG9zICsgbGVuXSBjYW4gb3ZlcmZsb3csIHNvIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIGlzIG5vdCBlcXVpdmFsZW50IHRvXG4gICAgIFt0b3RhbF9sZW5ndGggLSBsZW4gLSBwb3MgPCAwXSwgd2UgbmVlZCB0byB0ZXN0IGZvciBbcG9zICsgbGVuXSBvdmVyZmxvdyBhc1xuICAgICB3ZWxsLiAqKVxuICBsZXQgc3RvcCA9IHBvcyArIGxlbiBpblxuICBpZiBwb3MgbG9yIGxlbiBsb3Igc3RvcCBsb3IgKHRvdGFsX2xlbmd0aCAtIHN0b3ApIDwgMFxuICB0aGVuIHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZ2V0X3Bvc19sZW5fZXhuID8ocG9zID0gMCkgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgcG9zLCBsZW5cbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuID0gc2xvd19jaGVja19wb3NfbGVuX2V4blxuZW5kXG4iLCJcbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIG9wZW4gU3RkbGliLkJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gKGludDY0LCBpbnQ2NF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG4gIGxldCBvZl9zdGF0ZSA6IFN0ZGxpYi5SYW5kb20uU3RhdGUudCAtPiB0ID0gU3RkbGliLk9iai5tYWdpY1xuZW5kXG5cbmxldCBhc3NpZ24gZHN0IHNyYyA9XG4gIGxldCBkc3QgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIGRzdCkgaW5cbiAgbGV0IHNyYyA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2Ugc3JjKSBpblxuICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLmJsaXQgc3JjIGRzdFxuXG5sZXQgbWFrZV9kZWZhdWx0IGRlZmF1bHQgPVxuICBsZXQgc3BsaXRfZnJvbV9wYXJlbnQgdiA9XG4gICAgU3RkbGliLkxhenkubWFwX3ZhbCBTdGRsaWIuUmFuZG9tLlN0YXRlLnNwbGl0IHZcbiAgaW5cbiAgU3RkbGliLkRvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQgKGZ1biAoKSAtPiBkZWZhdWx0KVxuXG5sZXQgZ2V0X3N0YXRlIHJhbmRvbV9rZXkgPSBTdGRsaWIuRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIENoYXIgPSBDaGFyMFxuXG4oKiBVbmZvcnR1bmF0ZWx5LCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXMgbm90IGV4cG9zZVxuICAgW1N0ZGxpYi5SYW5kb20uU3RhdGUuZGVmYXVsdF0sIHdlIGhhdmUgdG8gY29uc3RydWN0IG91ciBvd24uICBXZSB0aGVuIGJ1aWxkIHRoZVxuICAgW1N0ZGxpYi5SYW5kb20uaW50XSwgW1N0ZGxpYi5SYW5kb20uYm9vbF0gZnVuY3Rpb25zIGFuZCBmcmllbmRzIHVzaW5nIHRoYXQgZGVmYXVsdCBzdGF0ZSBpblxuICAgZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkuXG5cbiAgIE9uZSBvdGhlciB0cmlja2luZXNzIGlzIHRoYXQgd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIHVuZXhwb3NlZCBbU3RkbGliLlJhbmRvbS5TdGF0ZS5hc3NpZ25dXG4gICBmdW5jdGlvbiwgd2hpY2ggYWNjZXNzZXMgdGhlIHVuZXhwb3NlZCBzdGF0ZSByZXByZXNlbnRhdGlvbi4gIFNvLCB3ZSBjb3B5IHRoZVxuICAgW1N0YXRlLnJlcHJdIHR5cGUgZGVmaW5pdGlvbiBhbmQgW2Fzc2lnbl0gZnVuY3Rpb24gdG8gaGVyZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LFxuICAgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBnZXQgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLiAqKVxuXG4oKiBSZWdyZXNzaW9uIHRlc3RzIG91Z2h0IHRvIGJlIGRldGVybWluaXN0aWMgYmVjYXVzZSB0aGF0IHdheSBhbnlvbmUgd2hvIGJyZWFrcyB0aGUgdGVzdFxuICAga25vd3MgdGhhdCBpdCdzIHRoZWlyIGNvZGUgdGhhdCBicm9rZSB0aGUgdGVzdC4gIElmIHRlc3RzIGFyZSBub25kZXRlcm1pbmlzdGljLCBhIHRlc3RcbiAgIGZhaWx1cmUgbWF5IGluc3RlYWQgaGFwcGVuIGJlY2F1c2UgdGhlIHRlc3QgcnVubmVyIGdvdCB1bmx1Y2t5IGFuZCB1bmNvdmVyZWQgYW5cbiAgIGV4aXN0aW5nIGJ1ZyBpbiB0aGUgY29kZSBzdXBwb3NlZGx5IGJlaW5nIFwicHJvdGVjdGVkXCIgYnkgdGhlIHRlc3QgaW4gcXVlc3Rpb24uICopXG5sZXQgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cyA9XG4gIGlmIGFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggYWxsb3dfaW5fdGVzdHMgd2l0aFxuICAgIHwgU29tZSB0cnVlIC0+ICgpXG4gICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgXCJpbml0aWFsaXppbmcgUmFuZG9tIHdpdGggYSBub25kZXRlcm1pbmlzdGljIHNlZWQgaXMgZm9yYmlkZGVuIGluIGlubGluZSB0ZXN0c1wiKVxuOztcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQgOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5sZXQgcmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgcmFuZG9tX3NlZWQgKClcbjs7XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAoKiBXZSBhbGxvdyBsYXppbmVzcyBvbmx5IGZvciB0aGUgZGVmaW5pdGlvbiBvZiBbZGVmYXVsdF0sIGJlbG93LCB3aGljaCBtYXkgbGF6aWx5IGNhbGxcbiAgICAgW21ha2Vfc2VsZl9pbml0XS4gRm9yIGFsbCBvdGhlciBwdXJwb3Nlcywgd2UgY3JlYXRlIGFuZCB1c2UgW3RdIGVhZ2VybHkuICopXG4gIHR5cGUgdCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUudCBMYXp5LnRcblxuICBsZXQgYml0cyB0ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHQpXG4gIGxldCBib29sIHQgPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmJvb2wgKExhenkuZm9yY2UgdClcbiAgbGV0IGludCB0IHggPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBpbnQzMiB0IHggPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmludDMyIChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDY0IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50NjQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbmF0aXZlaW50IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUubmF0aXZlaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG1ha2Ugc2VlZCA9IExhenkuZnJvbV92YWwgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBzZWVkKVxuICBsZXQgY29weSB0ID0gTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5jb3B5IChMYXp5LmZvcmNlIHQpKVxuICBsZXQgY2hhciB0ID0gaW50IHQgMjU2IHw+IENoYXIudW5zYWZlX29mX2ludFxuICBsZXQgYXNjaWkgdCA9IGludCB0IDEyOCB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICAgIExhenkuZnJvbV92YWwgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG4gIDs7XG5cbiAgbGV0IGFzc2lnbiA9IFJhbmRvbV9yZXByLmFzc2lnblxuICBsZXQgZnVsbF9pbml0IHQgc2VlZCA9IGFzc2lnbiB0IChtYWtlIHNlZWQpXG5cbiAgbGV0IGRlZmF1bHQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGRlZmluZSBCYXNlJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUgYXMgYSBjb3B5IG9mIE9DYW1sJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUuXG4gICAgICAgICBUaGlzIG1lYW5zIHRoYXQgcHJvZ3JhbXMgdGhhdCB1c2UgQmFzZS5SYW5kb20gd2lsbCBzZWUgdGhlIHNhbWUgc2VxdWVuY2Ugb2ZcbiAgICAgICAgIHJhbmRvbSBiaXRzIGFzIGlmIHRoZXkgaGFkIHVzZWQgU3RkbGliLlJhbmRvbS4gSG93ZXZlciwgYmVjYXVzZSBbZ2V0X3N0YXRlXSByZXR1cm5zXG4gICAgICAgICBhIGNvcHksIEJhc2UuUmFuZG9tIGFuZCBPQ2FtbC5SYW5kb20gYXJlIG5vdCB1c2luZyB0aGUgc2FtZSBzdGF0ZS4gSWYgYSBwcm9ncmFtXG4gICAgICAgICB1c2VkIGJvdGgsIGVhY2ggb2YgdGhlbSB3b3VsZCBnbyB0aHJvdWdoIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHJhbmRvbSBiaXRzLiBUb1xuICAgICAgICAgYXZvaWQgdGhhdCwgd2UgcmVzZXQgT0NhbWwncyByYW5kb20gc3RhdGUgdG8gYSBkaWZmZXJlbnQgc2VlZCwgZ2l2aW5nIGl0IGFcbiAgICAgICAgIGRpZmZlcmVudCBzZXF1ZW5jZS4gKilcbiAgICAgIGxldCB0ID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgICAgIFN0ZGxpYi5SYW5kb20uaW5pdCAxMzc7XG4gICAgICBMYXp5LmZyb21fdmFsIHQpXG4gICAgZWxzZVxuICAgICAgbGF6eVxuICAgICAgICAoKiBPdXRzaWRlIG9mIHRlc3RzLCB3ZSBpbml0aWFsaXplIHJhbmRvbSBzdGF0ZSBub25kZXRlcm1pbmlzdGljYWxseSBhbmQgbGF6aWx5LlxuICAgICAgICAgICBXZSBmb3JjZSB0aGUgcmFuZG9tIGluaXRpYWxpemF0aW9uIHRvIGJlIGxhenkgc28gdGhhdCB3ZSBkbyBub3QgcGF5IGFueSBjb3N0XG4gICAgICAgICAgIGZvciBpdCBpbiBwcm9ncmFtcyB0aGF0IGRvIG5vdCB1c2UgcmFuZG9tbmVzcy4gKilcbiAgICAgICAgKExhenkuZm9yY2UgKG1ha2Vfc2VsZl9pbml0ICgpKSlcbiAgOztcblxuICBsZXQgaW50X29uXzY0Yml0cyB0IGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgU3RkbGliLkludDY0LnRvX2ludCAoaW50NjQgdCAoU3RkbGliLkludDY0Lm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl8zMmJpdHMgdCBib3VuZCA9XG4gICAgKCogTm90IGFsd2F5cyB0cnVlIHdpdGggdGhlIEphdmFTY3JpcHQgYmFja2VuZC4gKilcbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgU3RkbGliLkludDMyLnRvX2ludCAoaW50MzIgdCAoU3RkbGliLkludDMyLm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQ2NCA9XG4gICAgbGV0IG9wZW4gU3RkbGliLkludDY0IGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+XG4gICAgICBsb2d4b3JcbiAgICAgICAgKGJpdHMgc3RhdGUpXG4gICAgICAgIChsb2d4b3IgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgNjApKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDMyID1cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50MzIgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT4gbG9neG9yIChiaXRzIHN0YXRlKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyBzdGF0ZSA9IFN0ZGxpYi5JbnQ2NC50b19pbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMgc3RhdGUgPSBTdGRsaWIuSW50MzIudG9faW50IChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuXG4gIGxldCBmdWxsX3JhbmdlX2ludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyBzdGF0ZSA9XG4gICAgU3RkbGliLkludDY0LnRvX25hdGl2ZWludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzIHN0YXRlID1cbiAgICBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludDMyIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2Nyb3NzZWRfYm91bmRzIG5hbWUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgc3RyaW5nX29mX2JvdW5kID1cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIlJhbmRvbS4lczogY3Jvc3NlZCBib3VuZHMgWyVzID4gJXNdXCJcbiAgICAgIG5hbWVcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgbG93ZXJfYm91bmQpXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIHVwcGVyX2JvdW5kKVxuICAgICAgKClcbiAgW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbiAgOztcblxuICBsZXQgaW50X2luY2wgPVxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50XCIgbG8gaGkgSW50LnRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgICAgaWYgZGlmZiA9IEludC5tYXhfdmFsdWVcbiAgICAgIHRoZW4gbG8gKyAoZnVsbF9yYW5nZV9pbnQgc3RhdGUgbGFuZCBJbnQubWF4X3ZhbHVlKVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBcbiAgICAgIHRoZW4gbG8gKyBpbnQgc3RhdGUgKEludC5zdWNjIGRpZmYpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDMyX2luY2wgPVxuICAgIGxldCBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLkludDMyIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQzMlwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwbFxuICAgICAgdGhlbiBhZGQgbG8gKGludDMyIHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfaW5jbCA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIFN0ZGxpYi5OYXRpdmVpbnQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcIm5hdGl2ZWludFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMG5cbiAgICAgIHRoZW4gYWRkIGxvIChuYXRpdmVpbnQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDY0X2luY2wgPVxuICAgIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLkludDY0IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQ2NFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwTFxuICAgICAgdGhlbiBhZGQgbG8gKGludDY0IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gICgqIFJldHVybiBhIHVuaWZvcm1seSByYW5kb20gZmxvYXQgaW4gWzAsIDEpLiAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHN0YXRlID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgc2NhbGUgPSAweDFwLTMwIGluXG4gICAgKCogMl4tMzAgKilcbiAgICBsZXQgcjEgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByMiA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHJlc3VsdCA9ICgocjEgKi4gc2NhbGUpICsuIHIyKSAqLiBzY2FsZSBpblxuICAgICgqIFdpdGggdmVyeSBzbWFsbCBwcm9iYWJpbGl0eSwgcmVzdWx0IGNhbiByb3VuZCB1cCB0byAxLjAsIHNvIGluIHRoYXQgY2FzZSwgd2UganVzdFxuICAgICAgIHRyeSBhZ2Fpbi4gKilcbiAgICBpZiByZXN1bHQgPCAxLjAgdGhlbiByZXN1bHQgZWxzZSByYXdmbG9hdCBzdGF0ZVxuICA7O1xuXG4gIGxldCBmbG9hdCBzdGF0ZSBoaSA9IHJhd2Zsb2F0IHN0YXRlICouIGhpXG5cbiAgbGV0IGZsb2F0X3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJmbG9hdFwiIGxvIGhpIFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXQ7XG4gICAgbG8gKy4gZmxvYXQgc3RhdGUgKGhpIC0uIGxvKVxuICA7O1xuZW5kXG5cbmxldCBkZWZhdWx0ID0gUmFuZG9tX3JlcHIubWFrZV9kZWZhdWx0IFN0YXRlLmRlZmF1bHRcbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgaW50IHggPSBTdGF0ZS5pbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50MzIgeCA9IFN0YXRlLmludDMyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IG5hdGl2ZWludCB4ID0gU3RhdGUubmF0aXZlaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDY0IHggPSBTdGF0ZS5pbnQ2NCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBmbG9hdCB4ID0gU3RhdGUuZmxvYXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50X2luY2wgeCB5ID0gU3RhdGUuaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQzMl9pbmNsIHggeSA9IFN0YXRlLmludDMyX2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBuYXRpdmVpbnRfaW5jbCB4IHkgPSBTdGF0ZS5uYXRpdmVpbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDY0X2luY2wgeCB5ID0gU3RhdGUuaW50NjRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGZsb2F0X3JhbmdlIHggeSA9IFN0YXRlLmZsb2F0X3JhbmdlIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGNoYXIgKCkgPSBTdGF0ZS5jaGFyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBhc2NpaSAoKSA9IFN0YXRlLmFzY2lpIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNcbiIsIigqKiBBbiBpbnRlcm5hbC1vbmx5IG1vZHVsZSBmYWN0b3JlZCBvdXQgZHVlIHRvIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvcmVfYXJyYXlcbiAgICBhbmQgY29yZV9saXN0LiAgQ29udGFpbnMgY29kZSBmb3IgcGVybXV0aW5nIGFuIGFycmF5LiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpID8ocG9zID0gMCkgP2xlbiB0ID1cbiAgKCogQ29waWVkIGZyb20gW09yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjb21waWxpbmdcbiAgICAgd2l0aG91dCBmbGFtYmRhLiAqKVxuICBsZXQgdG90YWxfbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMC5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgbGV0IG51bV9zd2FwcyA9IGxlbiAtIDEgaW5cbiAgZm9yIGkgPSBudW1fc3dhcHMgZG93bnRvIDEgZG9cbiAgICBsZXQgdGhpc19pID0gcG9zICsgaSBpblxuICAgICgqIFtyYW5kb21faV0gaXMgZHJhd24gZnJvbSBbcG9zLHRoaXNfaV0gKilcbiAgICBsZXQgcmFuZG9tX2kgPSBwb3MgKyBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoaSArIDEpIGluXG4gICAgc3dhcCB0IHRoaXNfaSByYW5kb21faVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTGVzcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBFcXVhbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBHcmVhdGVyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBMZXNzOyBFcXVhbDsgR3JlYXRlciBdIDogdCBsaXN0KVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcIm9yZGVyaW5nLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSAtPiBMZXNzXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSAtPiBFcXVhbFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIC0+IEdyZWF0ZXJcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBMZXNzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkxlc3NcIlxuICAgIHwgRXF1YWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXF1YWxcIlxuICAgIHwgR3JlYXRlciAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJHcmVhdGVyXCJcbiAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTGVzc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiRXF1YWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkdyZWF0ZXJcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgX29yZGVyaW5nID0gdCA9XG4gICAgfCBMZXNzXG4gICAgfCBFcXVhbFxuICAgIHwgR3JlYXRlclxuZW5kXG5cbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTGVzcyBlbHNlIGlmIG4gPSAwIHRoZW4gRXF1YWwgZWxzZSBHcmVhdGVyXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IExlc3MgLT4gLTFcbiAgfCBFcXVhbCAtPiAwXG4gIHwgR3JlYXRlciAtPiAxXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cblxuaW5jbHVkZSBMaXN0MVxuXG4oKiBUaGlzIGl0c2VsZiBpbmNsdWRlcyBbTGlzdDBdLiAqKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICAgIGZ1biAodHlwZSBhX18wMDFfKVxuICAgICAgICA6ICgoKGFfXzAwMV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDAxXykgLT4gKGFfXzAwMV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDFfIHQpIC0+XG4gICAgICBnbG9iYWxpemVfbGlzdFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsaXN0X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGlzdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsaXN0X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgT3JfdW5lcXVhbF9sZW5ndGhzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgVW5lcXVhbF9sZW5ndGhzXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAxMF8gYl9fMDExXyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEwXyBiX18wMTFfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTBfLCBiX18wMTFfIHdpdGhcbiAgICAgIHwgT2sgX2FfXzAxMl8sIE9rIF9iX18wMTNfIC0+IF9jbXBfX2EgX2FfXzAxMl8gX2JfXzAxM19cbiAgICAgIHwgT2sgXywgXyAtPiAtMVxuICAgICAgfCBfLCBPayBfIC0+IDFcbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzLCBVbmVxdWFsX2xlbmd0aHMgLT4gMClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDE3XykgOiAoKGFfXzAxN18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMTdfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDE0XyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMTVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2FfXzAxNF8gYXJnMF9fMDE1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMTZfIF1cbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxfbGVuZ3Roc1wiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcbmxldCBvZl9saXN0IHQgPSB0XG5cbmxldCByYW5nZScgfmNvbXBhcmUgfnN0cmlkZSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBsZXQgbmV4dF9pID0gc3RyaWRlIHN0YXJ0X2kgaW5cbiAgbGV0IG9yZGVyIHggeSA9IE9yZGVyaW5nLm9mX2ludCAoY29tcGFyZSB4IHkpIGluXG4gIGxldCByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpID1cbiAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZVwiXG4gIGluXG4gIGxldCBpbml0aWFsX3N0cmlkZV9vcmRlciA9XG4gICAgbWF0Y2ggb3JkZXIgc3RhcnRfaSBuZXh0X2kgd2l0aFxuICAgIHwgRXF1YWwgLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgIHwgTGVzcyAtPiBgTGVzc1xuICAgIHwgR3JlYXRlciAtPiBgR3JlYXRlclxuICBpblxuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgbGV0IGlfdG9fc3RvcF9vcmRlciA9IG9yZGVyIGkgc3RvcF9pIGluXG4gICAgbWF0Y2ggaV90b19zdG9wX29yZGVyLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+XG4gICAgICAoKiBoYXZlbid0IHlldCByZWFjaGVkIFtzdG9wX2ldLiBDb250aW51ZS4gKilcbiAgICAgIGxldCBuZXh0X2kgPSBzdHJpZGUgaSBpblxuICAgICAgKG1hdGNoIG9yZGVyIGkgbmV4dF9pLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgICAgfCBFcXVhbCwgXyAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IGNoYW5nZSBkaXJlY3Rpb25cIlxuICAgICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPiBsb29wIG5leHRfaSAoaSA6OiBhY2N1bSkpXG4gICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAoKiBzdGVwcGVkIHBhc3QgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIGFjY3VtXG4gICAgfCBFcXVhbCwgXyAtPlxuICAgICAgKCogcmVhY2hlZCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgKG1hdGNoIHN0b3Agd2l0aFxuICAgICAgIHwgYGluY2x1c2l2ZSAtPiBpIDo6IGFjY3VtXG4gICAgICAgfCBgZXhjbHVzaXZlIC0+IGFjY3VtKVxuICBpblxuICBsZXQgc3RhcnRfaSA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF9pXG4gICAgfCBgZXhjbHVzaXZlIC0+IG5leHRfaVxuICBpblxuICByZXYgKGxvb3Agc3RhcnRfaSBbXSlcbjs7XG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGlmIHN0cmlkZSA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2U6IHN0cmlkZSBtdXN0IGJlIG5vbi16ZXJvXCI7XG4gIHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlOihmdW4geCAtPiB4ICsgc3RyaWRlKSB+c3RhcnQgfnN0b3Agc3RhcnRfaSBzdG9wX2lcbjs7XG5cbmxldCBoZCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogXyAtPiBTb21lIHhcbjs7XG5cbmxldCB0bCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogdCcgLT4gU29tZSB0J1xuOztcblxubGV0IG50aCB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBudGhfYXV4IHQgbiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhIDo6IHQgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IHQgKG4gLSAxKVxuICAgIGluXG4gICAgbnRoX2F1eCB0IG4pXG47O1xuXG5sZXQgbnRoX2V4biB0IG4gPVxuICBtYXRjaCBudGggdCBuIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIkxpc3QubnRoX2V4biAlZCBjYWxsZWQgb24gbGlzdCBvZiBsZW5ndGggJWRcIiBuIChsZW5ndGggdCkgKClcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHVub3JkZXJlZF9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsIHwgbCwgW10gLT4gbFxuICB8IF8gLT4gcmV2X2FwcGVuZCBsMSBsMlxuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiIC0+IGxvb3AgYSBiIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8gfCBfLCBbXSAtPiBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIGwxIGwyID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iIH0gLT5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiXG4gICAgICBuYW1lXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EpXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IpXG4gICAgICAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMilcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2MgOiAnYyBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyIGwzID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIGMgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiLCBjIHdpdGhcbiAgICAgIHwgW10sIFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiLCBfIDo6IGMgLT4gbG9vcCBhIGIgYyAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfLCBfIHwgXywgW10sIF8gfCBfLCBfLCBbXSAtPlxuICAgICAgICBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiOyB0YWlsX29mX2MgPSBjIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgbDMgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgzX2V4biBuYW1lIGwxIGwyIGwzID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iOyB0YWlsX29mX2MgfSAtPlxuICAgIGxldCBuMSA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hIGluXG4gICAgbGV0IG4yID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IgaW5cbiAgICBsZXQgbjMgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYyBpblxuICAgIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWQgfHwgJWQgPD4gJWRcIiBuYW1lIG4xIG4yIG4yIG4zICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyIGwzKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubGV0IGl0ZXIyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooaXRlcjJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGl0ZXIyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiaXRlcjJfZXhuXCIgbDEgbDI7XG4gIGl0ZXIyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihyZXZfbWFwMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgcmV2X21hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJyZXZfbWFwMl9leG5cIiBsMSBsMjtcbiAgcmV2X21hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBmb2xkMiBsMSBsMiB+aW5pdCB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvbGQyX29rIH5pbml0IH5mKSBbQG5vbnRhaWxdXG5cbmxldCBmb2xkMl9leG4gbDEgbDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGQyX2V4blwiIGwxIGwyO1xuICBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZlxuOztcblxubGV0IGZvbGRfcmlnaHQyIGwxIGwyIH5mIH5pbml0ID1cbiAgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZF9yaWdodDJfb2sgfmYgfmluaXQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0Ml9leG4gbDEgbDIgfmYgfmluaXQgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGRfcmlnaHQyX2V4blwiIGwxIGwyO1xuICBmb2xkX3JpZ2h0Ml9vayBsMSBsMiB+ZiB+aW5pdFxuOztcblxubGV0IGZvcl9hbGwyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9yX2FsbDJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGZvcl9hbGwyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9yX2FsbDJfZXhuXCIgbDEgbDI7XG4gIGZvcl9hbGwyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgZXhpc3RzMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGV4aXN0czJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGV4aXN0czJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJleGlzdHMyX2V4blwiIGwxIGwyO1xuICBleGlzdHMyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgZXF1YWwgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgYiA6OiBicyAtPiBlcXVhbCBhIGIgfHwgbG9vcCBlcXVhbCBhIGJzXG4gIGluXG4gIGxvb3AgZXF1YWwgYSB0XG47O1xuXG4oKiBUaGlzIGlzIGEgY29weSBvZiB0aGUgY29kZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIGFuIGV4dHJhIGV0YS1leHBhbnNpb24gdG9cbiAgIGF2b2lkIGNyZWF0aW5nIHBhcnRpYWwgY2xvc3VyZXMgKHNob3dlZCB1cCBmb3IgW2ZpbHRlcl0pIGluIHByb2ZpbGluZykuICopXG5sZXQgcmV2X2ZpbHRlciB0IH5mID1cbiAgbGV0IHJlYyBmaW5kIH5mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIGZpbmQgfmYgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgfmYgYWNjdSBsXG4gIGluXG4gIGZpbmQgfmYgW10gdFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gcmV2IChyZXZfZmlsdGVyIHQgfmYpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgbFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgaW5cbiAgbG9vcCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIGxvb3AgbFxuICBpblxuICBsb29wIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByZWMgZmluZF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IHggOjogdCAtPiBpZiBmIHggdGhlbiB4IGVsc2UgZmluZF9leG4gdCB+ZlxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgaSB4IHRoZW4gU29tZSAoaSwgeCkgZWxzZSBsb29wIChpICsgMSkgbFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGZpbmRpX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgbClcbiAgaW5cbiAgbG9vcCAwIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkICYmIGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkIHx8IGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG4oKiogRm9yIHRoZSBjb250YWluZXIgaW50ZXJmYWNlLiAqKVxubGV0IGZvbGRfbGVmdCA9IGZvbGRcblxubGV0IG9mX2FycmF5ID0gQXJyYXkudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQXJyYXkub2ZfbGlzdFxubGV0IHRvX2xpc3QgdCA9IHRcblxubGV0IG1heF9ub25fdGFpbGNhbGwgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDFfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3Mgc21hbGwuIFRoaXNcbiAgICAgbnVtYmVyIHdhcyB0YWtlbiBmcm9tIG9jYW1sI3N0ZGxpYi9saXN0Lm1sIHdoaWNoIGlzIGFsc28gZXF1YWwgdG8gdGhlIGRlZmF1bHQgbGltaXRcbiAgICAgb2YgcmVjdXJzaXZlIGNhbGwgaW4gdGhlIGpzX29mX29jYW1sIGNvbXBpbGVyIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdHJhbXBvbGluZS4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuOztcblxuKCoqIFRhaWwgcmVjdXJzaXZlIHZlcnNpb25zIG9mIHN0YW5kYXJkIFtMaXN0XSBtb2R1bGUgKilcblxubGV0IHRhaWxfYXBwZW5kIGwxIGwyID0gcmV2X2FwcGVuZCAocmV2IGwxKSBsMlxuXG4oKiBUaGVyZSBhcmUgYSBmZXcgb3B0aW1pemVkIGxpc3Qgb3BlcmF0aW9ucyBoZXJlLCBpbmNsdWRpbmcgYXBwZW5kIGFuZCBtYXAuICBUaGVyZSBhcmVcbiAgIGJhc2ljYWxseSB0d28gb3B0aW1pemF0aW9ucyBpbiBwbGF5OiBsb29wIHVucm9sbGluZywgYW5kIGR5bmFtaWMgc3dpdGNoaW5nIGJldHdlZW5cbiAgIHN0YWNrIGFuZCBoZWFwIGFsbG9jYXRpb24uXG5cbiAgIFRoZSBsb29wLXVucm9sbGluZyBpcyBzdHJhaWdodGZvcndhcmQsIHdlIGp1c3QgdW5yb2xsIDUgbGV2ZWxzIG9mIHRoZSBsb29wLiAgVGhpcyBtYWtlc1xuICAgZWFjaCBpdGVyYXRpb24gZmFzdGVyLCBhbmQgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIGNvbnN1bWVkIHBlciBsaXN0XG4gICBlbGVtZW50LlxuXG4gICBUaGUgZHluYW1pYyBzd2l0Y2hpbmcgaXMgZG9uZSBieSBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcywgYW5kIHRoZW5cbiAgIHN3aXRjaGluZyB0byB0aGUgXCJzbG93XCIgaW1wbGVtZW50YXRpb24gd2hlbiB3ZSBleGNlZWQgYSBnaXZlbiBsaW1pdC4gIFRoaXMgbWVhbnMgdGhhdFxuICAgc2hvcnQgbGlzdHMgdXNlIHRoZSBmYXN0IHN0YWNrLWFsbG9jYXRpb24gbWV0aG9kLCBhbmQgbG9uZyBsaXN0cyB1c2UgYSBzbG93ZXIgb25lIHRoYXRcbiAgIGRvZXNuJ3QgcmVxdWlyZSBzdGFjayBzcGFjZS4gKilcbmxldCByZWMgY291bnRfYXBwZW5kIGwxIGwyIGNvdW50ID1cbiAgbWF0Y2ggbDIgd2l0aFxuICB8IFtdIC0+IGwxXG4gIHwgXyAtPlxuICAgIChtYXRjaCBsMSB3aXRoXG4gICAgIHwgW10gLT4gbDJcbiAgICAgfCBbIHgxIF0gLT4geDEgOjogbDJcbiAgICAgfCBbIHgxOyB4MiBdIC0+IHgxIDo6IHgyIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzIF0gLT4geDEgOjogeDIgOjogeDMgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT4geDEgOjogeDIgOjogeDMgOjogeDQgOjogbDJcbiAgICAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgICAgIHgxXG4gICAgICAgOjogeDJcbiAgICAgICA6OiB4M1xuICAgICAgIDo6IHg0XG4gICAgICAgOjogeDVcbiAgICAgICA6OlxuICAgICAgIChpZiBjb3VudCA+IG1heF9ub25fdGFpbGNhbGxcbiAgICAgICAgdGhlbiB0YWlsX2FwcGVuZCB0bCBsMlxuICAgICAgICBlbHNlIGNvdW50X2FwcGVuZCB0bCBsMiAoY291bnQgKyAxKSkpXG47O1xuXG5sZXQgYXBwZW5kIGwxIGwyID0gY291bnRfYXBwZW5kIGwxIGwyIDBcblxuKCogQW4gb3JkaW5hcnkgdGFpbCByZWN1cnNpdmUgbWFwIGJ1aWxkcyB1cCBhbiBpbnRlcm1lZGlhdGUgKHJldmVyc2VkKSByZXByZXNlbnRhdGlvbixcbiAgIHdpdGggb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCBwZXIgZWxlbWVudC4gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIGNodW5rc1xuICAgOSBvYmplY3RzIGludG8gb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCwgcmVkdWNpbmcgYWxsb2NhdGlvbiBhbmQgcGVyZm9ybWFuY2UgY29zdHNcbiAgIGFjY29yZGluZ2x5LiBOb3RlIHRoYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0IGlzIGRvbmUgYnkgdGhlIHN0ZGxpYidzIG1hcFxuICAgZnVuY3Rpb24uICopXG5sZXQgdGFpbF9tYXAgeHMgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyByaXNlIHlzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHlzXG4gICAgfCAoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMgLT5cbiAgICAgIHJpc2UgKHkwIDo6IHkxIDo6IHkyIDo6IHkzIDo6IHk0IDo6IHk1IDo6IHk2IDo6IHk3IDo6IHk4IDo6IHlzKSBic1xuICBpblxuICBsZXQgcmVjIGRpdmUgYnMgPSBmdW5jdGlvblxuICAgIHwgeDAgOjogeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogeDYgOjogeDcgOjogeDggOjogeHMgLT5cbiAgICAgIGxldCB5MCA9IGYgeDAgaW5cbiAgICAgIGxldCB5MSA9IGYgeDEgaW5cbiAgICAgIGxldCB5MiA9IGYgeDIgaW5cbiAgICAgIGxldCB5MyA9IGYgeDMgaW5cbiAgICAgIGxldCB5NCA9IGYgeDQgaW5cbiAgICAgIGxldCB5NSA9IGYgeDUgaW5cbiAgICAgIGxldCB5NiA9IGYgeDYgaW5cbiAgICAgIGxldCB5NyA9IGYgeDcgaW5cbiAgICAgIGxldCB5OCA9IGYgeDggaW5cbiAgICAgIGRpdmUgKCh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicykgeHNcbiAgICB8IHhzIC0+IHJpc2UgKG5vbnRhaWxfbWFwIH5mIHhzKSBic1xuICBpblxuICBsZXQgcmVzID0gZGl2ZSBbXSB4cyBpblxuICByZXNcbjs7XG5cbmxldCByZWMgY291bnRfbWFwIH5mOihmIFtAbG9jYWxdKSBsIGN0ciA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgWyB4MSBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIFsgZjEgXVxuICB8IFsgeDE7IHgyIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIFsgZjE7IGYyIF1cbiAgfCBbIHgxOyB4MjsgeDMgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIFsgZjE7IGYyOyBmMyBdXG4gIHwgWyB4MTsgeDI7IHgzOyB4NCBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIFsgZjE7IGYyOyBmMzsgZjQgXVxuICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIGxldCBmNSA9IGYgeDUgaW5cbiAgICBmMVxuICAgIDo6IGYyXG4gICAgOjogZjNcbiAgICA6OiBmNFxuICAgIDo6IGY1XG4gICAgOjogKGlmIGN0ciA+IG1heF9ub25fdGFpbGNhbGwgdGhlbiB0YWlsX21hcCB+ZiB0bCBlbHNlIGNvdW50X21hcCB+ZiB0bCAoY3RyICsgMSkpXG47O1xuXG5sZXQgbWFwIGwgfmYgPSBjb3VudF9tYXAgfmYgbCAwXG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgKCA+PnwgKSBsIGYgPSBtYXAgbCB+ZlxubGV0IG1hcDJfb2sgbDEgbDIgfmYgPSByZXYgKHJldl9tYXAyX29rIGwxIGwyIH5mKVxubGV0IG1hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihtYXAyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCBtYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwibWFwMl9leG5cIiBsMSBsMjtcbiAgbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAzX29rIGwxIGwyIGwzIH5mID1cbiAgbGV0IHJlYyBsb29wIGwxIGwyIGwzIGFjID1cbiAgICBtYXRjaCBsMSwgbDIsIGwzIHdpdGhcbiAgICB8IFtdLCBbXSwgW10gLT4gYWNcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiwgeDMgOjogbDMgLT4gbG9vcCBsMSBsMiBsMyAoZiB4MSB4MiB4MyA6OiBhYylcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGxvb3AgbDEgbDIgbDMgW10gW0Bub250YWlsXVxuOztcblxubGV0IHJldl9tYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoocmV2X21hcDNfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IHJldl9tYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwicmV2X21hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIHJldl9tYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgbWFwM19vayBsMSBsMiBsMyB+ZiA9IHJldiAocmV2X21hcDNfb2sgbDEgbDIgbDMgfmYpXG5sZXQgbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KG1hcDNfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IG1hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJtYXAzX2V4blwiIGwxIGwyIGwzO1xuICBtYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGwxIGwyIH5mID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaCA6OiB0IC0+IHJldl9tYXBfYXBwZW5kIH5mIHQgKGYgaCA6OiBsMilcbjs7XG5cbmxldCB1bnppcCBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyXG4gICAgfCAoeCwgeSkgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXVxuOztcblxubGV0IHVuemlwMyBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgbDMgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyLCBsM1xuICAgIHwgKHgsIHksIHopIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKSAoeiA6OiBsMylcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdIFtdXG47O1xuXG5sZXQgemlwX2V4biBsMSBsMiA9XG4gIHRyeSBtYXAyX29rIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiB6aXBfZXhuOiAlZCA8PiAlZFwiIChsZW5ndGggbDEpIChsZW5ndGggbDIpICgpXG47O1xuXG5sZXQgemlwIGwxIGwyID0gbWFwMiB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMlxuXG4oKiogQWRkaXRpb25hbCBsaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJldl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHQgLT4gbG9vcCAoaSArIDEpIChmIGkgaCA6OiBhY2MpIHRcbiAgaW5cbiAgbG9vcCAwIFtdIGwgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGkgbCB+ZiA9IHJldiAocmV2X21hcGkgbCB+ZilcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBpdGVyaSBsIH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgbCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBzbmQgKGZvbGQgdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB2IC0+IGkgKyAxLCBmIGkgYWNjIHYpKVxuOztcblxubGV0IGZpbHRlcmkgbCB+ZiA9XG4gIHJldiAoZm9sZGkgbCB+ZjooZnVuIHBvcyBhY2MgeCAtPiBpZiBmIHBvcyB4IHRoZW4geCA6OiBhY2MgZWxzZSBhY2MpIH5pbml0OltdKVxuOztcblxubGV0IHJlZHVjZSBsIH5mID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGhkIDo6IHRsIC0+IFNvbWUgKGZvbGQgfmluaXQ6aGQgfmYgdGwpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkIGwgfmYgPVxuICAoKiBDYWxsIHRoZSBcInNpemVcIiBvZiBhIHZhbHVlIHRoZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBjb21iaW5lZCBpbnRvXG4gICAgIGl0IHZpYSBjYWxscyB0byBbZl0uICBXZSBwcm9jZWVkIGJ5IHVzaW5nIFtmXSB0byBjb21iaW5lIGVsZW1lbnRzIGluIHRoZSBhY2N1bXVsYXRvclxuICAgICBvZiB0aGUgc2FtZSBzaXplIHVudGlsIHdlIGNhbid0IGNvbWJpbmUgYW55IG1vcmUsIHRoZW4gZ2V0dGluZyBhIG5ldyBlbGVtZW50IGZyb20gdGhlXG4gICAgIGlucHV0IGxpc3QgYW5kIHJlcGVhdGluZy5cblxuICAgICBXaXRoIHRoaXMgc3RyYXRlZ3ksIGluIHRoZSBhY2N1bXVsYXRvcjpcbiAgICAgLSB3ZSBvbmx5IGV2ZXIgaGF2ZSBlbGVtZW50cyBvZiBzaXplcyBhIHBvd2VyIG9mIHR3b1xuICAgICAtIHdlIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBlbGVtZW50IG9mIGVhY2ggc2l6ZVxuICAgICAtIHRoZSBzdW0gb2YgYWxsIHRoZSBlbGVtZW50IHNpemVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWRcblxuICAgICBUaGVzZSBjb25kaXRpb25zIGVuZm9yY2UgdGhhdCBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggc2l6ZSBpcyBwcmVjaXNlbHkgdGhlIGJpbmFyeVxuICAgICBleHBhbnNpb24gb2YgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZDogaWYgeW91J3ZlIGNvbnN1bWVkIDEzID0gMGIxMTAxXG4gICAgIGVsZW1lbnRzLCB5b3UgaGF2ZSBvbmUgZWxlbWVudCBvZiBzaXplIDgsIG9uZSBvZiBzaXplIDQsIGFuZCBvbmUgb2Ygc2l6ZSAxLiAgSGVuY2VcbiAgICAgd2hlbiBhIG5ldyBlbGVtZW50IGNvbWVzIGFsb25nLCB0aGUgbnVtYmVyIG9mIGNvbWJpbmluZ3MgeW91IG5lZWQgdG8gZG8gaXMgdGhlIG51bWJlclxuICAgICBvZiB0cmFpbGluZyAxcyBpbiB0aGUgYmluYXJ5IGV4cGFuc2lvbiBvZiBbbnVtXSwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGhhdmVcbiAgICAgYWxyZWFkeSBnb25lIGludG8gdGhlIGFjY3VtdWxhdG9yLiAgVGhlIGFjY3VtdWxhdG9yIGlzIGluIGFzY2VuZGluZyBvcmRlciBvZiBzaXplLCBzb1xuICAgICB0aGUgbmV4dCBlbGVtZW50IHRvIGNvbWJpbmUgd2l0aCBpcyBhbHdheXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QuICopXG4gIGxldCByZWMgc3RlcF9hY2N1bSBudW0gYWNjIHggPVxuICAgIGlmIG51bSBsYW5kIDEgPSAwXG4gICAgdGhlbiB4IDo6IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBOZXcgZWxlbWVudHMgZnJvbSBsYXRlciBpbiB0aGUgaW5wdXQgbGlzdCBnbyBvbiB0aGUgZnJvbnQgb2YgdGhlIGFjY3VtdWxhdG9yLCBzb1xuICAgICAgICAgdGhlIGFjY3VtdWxhdG9yIGlzIGluIHJldmVyc2Ugb3JkZXIgd3J0IHRoZSBvcmlnaW5hbCBsaXN0IG9yZGVyLCBoZW5jZSBbZiB5IHhdXG4gICAgICAgICBpbnN0ZWFkIG9mIFtmIHggeV0uICopXG4gICAgICB8IHkgOjogeXMgLT4gc3RlcF9hY2N1bSAobnVtIGFzciAxKSB5cyAoZiB5IHgpKVxuICBpblxuICAoKiBFeHBlcmltZW50YWxseSwgaW5saW5pbmcgW2ZvbGRpXSBhbmQgdW5yb2xsaW5nIHRoaXMgbG9vcCBhIGZldyB0aW1lcyBjYW4gcmVkdWNlXG4gICAgIHJ1bnRpbWUgZG93biB0byBhIHRoaXJkIGFuZCBhbGxvY2F0aW9uIHRvIDEvMTZ0aCBvciBzbyBpbiB0aGUgbWljcm9iZW5jaG1hcmtzIGJlbG93LlxuICAgICBIb3dldmVyLCBpbiBtb3N0IHVzZSBjYXNlcyBbZl0gaXMgbGlrZWx5IHRvIGJlIGV4cGVuc2l2ZSAob3RoZXJ3aXNlIHdoeSBkbyB5b3UgY2FyZVxuICAgICBhYm91dCB0aGUgb3JkZXIgb2YgcmVkdWN0aW9uPykgc28gdGhlIG92ZXJoZWFkIG9mIHRoaXMgZnVuY3Rpb24gaXRzZWxmIGRvZXNuJ3QgcmVhbGx5XG4gICAgIG1hdHRlci4gSWYgeW91IGNvbWUgdXAgd2l0aCBhIHVzZS1jYXNlIHdoZXJlIGl0IGRvZXMsIHRoZW4gdGhhdCdzIHNvbWV0aGluZyB5b3UgbWlnaHRcbiAgICAgd2FudCB0byB0cnk6IHNlZSBoZyBsb2cgLXByIDQ5ZWYwNjVmNDI5ZC4gKilcbiAgbWF0Y2ggZm9sZGkgbCB+aW5pdDpbXSB+ZjpzdGVwX2FjY3VtIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBTb21lIChmb2xkIHhzIH5pbml0OnggfmY6KGZ1biB4IHkgLT4gZiB5IHgpKVxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZF9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZV9iYWxhbmNlZCBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfYmFsYW5jZWRfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IGdyb3VwaSBsIH5icmVhayA9XG4gIGxldCBncm91cHMgPVxuICAgIGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyB4IC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbIFsgeCBdIF1cbiAgICAgIHwgY3VycmVudF9ncm91cCA6OiB0bCAtPlxuICAgICAgICBpZiBicmVhayBpIChoZF9leG4gY3VycmVudF9ncm91cCkgeFxuICAgICAgICB0aGVuIFsgeCBdIDo6IGN1cnJlbnRfZ3JvdXAgOjogdGwgKCogc3RhcnQgbmV3IGdyb3VwICopXG4gICAgICAgIGVsc2UgKHggOjogY3VycmVudF9ncm91cCkgOjogdGwpXG4gICAgKCogZXh0ZW5kIGN1cnJlbnQgZ3JvdXAgKilcbiAgaW5cbiAgbWF0Y2ggZ3JvdXBzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGwgLT4gcmV2X21hcCBsIH5mOnJldlxuOztcblxubGV0IGdyb3VwIGwgfmJyZWFrID0gZ3JvdXBpIGwgfmJyZWFrOihmdW4gXyB4IHkgLT4gYnJlYWsgeCB5KSBbQG5vbnRhaWxdXG5cbmxldCBzb3J0X2FuZF9ncm91cCBsIH5jb21wYXJlID1cbiAgbCB8PiBzdGFibGVfc29ydCB+Y29tcGFyZSB8PiBncm91cCB+YnJlYWs6KGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPD4gMClcbjs7XG5cbmxldCBjb25jYXRfbWFwIGwgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAocmV2X2FwcGVuZCAoZiBoZCkgYWNjKSB0bFxuICBpblxuICBsZXQgcmVzID0gYXV4IFtdIGwgaW5cbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgYXV4IGNvbnQgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAoY29udCArIDEpIChyZXZfYXBwZW5kIChmIGNvbnQgaGQpIGFjYykgdGxcbiAgaW5cbiAgYXV4IDAgW10gbCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWVyZ2UgbDEgbDIgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgYWNjIGwyXG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBhY2MgbDFcbiAgICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY29tcGFyZSBoMSBoMiA8PSAwIHRoZW4gbG9vcCAoaDEgOjogYWNjKSB0MSBsMiBlbHNlIGxvb3AgKGgyIDo6IGFjYykgbDEgdDJcbiAgaW5cbiAgbG9vcCBbXSBsMSBsMiBbQG5vbnRhaWxdXG47O1xuXG5tb2R1bGUgQ2FydGVzaWFuX3Byb2R1Y3QgPSBzdHJ1Y3RcbiAgKCogV2UgYXJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2UgZXhwb3J0IGZyb20gZnVuY3RvcnMgc28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHlcbiAgICAgcmViaW5kIG1vcmUgZWZmaWNpZW50IGxpc3Qtc3BlY2lmaWMgZnVuY3Rpb25zLiAqKVxuXG4gIGxldCBiaW5kID0gY29uY2F0X21hcFxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXAyIGEgYiB+ZiA9IGNvbmNhdF9tYXAgYSB+ZjooZnVuIHggLT4gbWFwIGIgfmY6KGZ1biB5IC0+IGYgeCB5KSlcbiAgbGV0IHJldHVybiB4ID0gWyB4IF1cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApIHQgKGYgW0Bsb2NhbF0pID0gYmluZCB0IH5mXG5cbiAgb3BlbiBzdHJ1Y3RcbiAgICBtb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgICBlbmQpXG5cbiAgICBtb2R1bGUgTW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgYWxsID0gTW9uYWQuYWxsXG4gIGxldCBhbGxfdW5pdCA9IE1vbmFkLmFsbF91bml0XG4gIGxldCBpZ25vcmVfbSA9IE1vbmFkLmlnbm9yZV9tXG4gIGxldCBqb2luID0gTW9uYWQuam9pblxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuICBlbmRcblxuICBsZXQgYXBwbHkgPSBBcHBsaWNhdGl2ZS5hcHBseVxuICBsZXQgYm90aCA9IEFwcGxpY2F0aXZlLmJvdGhcbiAgbGV0IG1hcDMgPSBBcHBsaWNhdGl2ZS5tYXAzXG4gIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gICAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKENhcnRlc2lhbl9wcm9kdWN0IDogTW9uYWQuU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4oKiogcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdF9leG4gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IHhcbiAgfCBfIDo6IHRsIC0+IGxhc3RfZXhuIHRsXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJMaXN0Lmxhc3RcIlxuOztcblxuKCoqIG9wdGlvbmFsbHkgcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdCBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4gU29tZSB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0IHRsXG4gIHwgW10gLT4gTm9uZVxuOztcblxubGV0IHJlYyBpc19wcmVmaXggbGlzdCB+cHJlZml4IH5lcXVhbCA9XG4gIG1hdGNoIHByZWZpeCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IGhkIDo6IHRsIC0+XG4gICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICB8IFtdIC0+IGZhbHNlXG4gICAgIHwgaGQnIDo6IHRsJyAtPiBlcXVhbCBoZCBoZCcgJiYgaXNfcHJlZml4IHRsJyB+cHJlZml4OnRsIH5lcXVhbClcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhMSA6OiB0IC0+XG4gICAgbGV0IHJlYyBsb29wIGExIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYTIgOjogdCAtPiBpZiBlcXVhbCBhMSBhMiB0aGVuIFNvbWUgKGExLCBhMikgZWxzZSBsb29wIGEyIHRcbiAgICBpblxuICAgIGxvb3AgYTEgdCBbQG5vbnRhaWxdXG47O1xuXG4oKiByZXR1cm5zIGxpc3Qgd2l0aG91dCBhZGphY2VudCBkdXBsaWNhdGVzICopXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgPyh3aGljaF90b19rZWVwID0gYExhc3QpIGxpc3QgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHRvX2tlZXAgYWNjdW0gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gdG9fa2VlcCA6OiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGlmIGVxdWFsIGhkIHRvX2tlZXBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdG9fa2VlcCA9XG4gICAgICAgICAgbWF0Y2ggd2hpY2hfdG9fa2VlcCB3aXRoXG4gICAgICAgICAgfCBgRmlyc3QgLT4gdG9fa2VlcFxuICAgICAgICAgIHwgYExhc3QgLT4gaGRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCB0b19rZWVwIGFjY3VtIHRsKVxuICAgICAgZWxzZSBsb29wIGhkICh0b19rZWVwIDo6IGFjY3VtKSB0bFxuICBpblxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGhkIDo6IHRsIC0+IHJldiAobG9vcCBoZCBbXSB0bClcbjs7XG5cbigqKiByZXR1cm5zIHNvcnRlZCB2ZXJzaW9uIG9mIGxpc3Qgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQgKilcbmxldCBkZWR1cF9hbmRfc29ydCBsaXN0IH5jb21wYXJlID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0ICgqIHBlcmZvcm1hbmNlIGhhY2sgKilcbiAgfCBfIC0+XG4gICAgbGV0IGVxdWFsIHggeCcgPSBjb21wYXJlIHggeCcgPSAwIGluXG4gICAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbGlzdCBpblxuICAgIHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIH5lcXVhbCBzb3J0ZWQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfYV9kdXAgbCB+Y29tcGFyZSA9XG4gIGxldCBzb3J0ZWQgPSBzb3J0IGwgfmNvbXBhcmUgaW5cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiBOb25lXG4gICAgfCBoZDEgOjogKGhkMiA6OiBfIGFzIHRsKSAtPiBpZiBjb21wYXJlIGhkMSBoZDIgPSAwIHRoZW4gU29tZSBoZDEgZWxzZSBsb29wIHRsXG4gIGluXG4gIGxvb3Agc29ydGVkIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb250YWluc19kdXAgbHN0IH5jb21wYXJlID1cbiAgbWF0Y2ggZmluZF9hX2R1cCBsc3QgfmNvbXBhcmUgd2l0aFxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZpbmRfYWxsX2R1cHMgbCB+Y29tcGFyZSA9XG4gICgqIFdlIGFkZCB0aGlzIHJldmVyc2FsLCBzbyB3ZSBjYW4gc2tpcCBhIFtyZXZdIGF0IHRoZSBlbmQuIFdlIGNvdWxkIHNraXBcbiAgICAgW3Jldl0gYW55d2F5IHNpbmNlIHdlIGRvbiBub3QgZ2l2ZSBhbnkgb3JkZXJpbmcgZ3VhcmFudGVlcywgYnV0IGl0IGlzXG4gICAgIG5pY2UgdG8gZ2V0IHJlc3VsdHMgaW4gbmF0dXJhbCBvcmRlci4gKilcbiAgbGV0IGNvbXBhcmUgYSBiID0gY29tcGFyZSBiIGEgaW5cbiAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbCBpblxuICAoKiBXYWxrIHRoZSBsaXN0IGFuZCByZWNvcmQgdGhlIGZpcnN0IG9mIGVhY2ggY29uc2VjdXRpdmUgcnVuIG9mIGlkZW50aWNhbCBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGxvb3Agc29ydGVkIHByZXYgfmFscmVhZHlfcmVjb3JkZWQgYWNjID1cbiAgICBtYXRjaCBzb3J0ZWQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgY29tcGFyZSBwcmV2IGhkIDw+IDBcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBhY2NcbiAgICAgIGVsc2UgaWYgYWxyZWFkeV9yZWNvcmRlZFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgYWNjXG4gICAgICBlbHNlIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSAoaGQgOjogYWNjKVxuICBpblxuICBtYXRjaCBzb3J0ZWQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmVjIGFsbF9lcXVhbF90byB0IHYgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IHggOjogeHMgLT4gZXF1YWwgeCB2ICYmIGFsbF9lcXVhbF90byB4cyB2IH5lcXVhbFxuOztcblxubGV0IGFsbF9lcXVhbCB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IGlmIGFsbF9lcXVhbF90byB4cyB4IH5lcXVhbCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgaSA9IDAgdGhlbiBhY2N1bSBlbHNlIGxvb3AgKGkgLSAxKSAoZiAoaSAtIDEpIDo6IGFjY3VtKVxuICBpblxuICBsb29wIG4gW10gW0Bub250YWlsXVxuOztcblxubGV0IHJldl9maWx0ZXJfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIHRsIGFjY3VtKVxuICBpblxuICBsb29wIGwgW10gW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlcl9tYXAgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXAgbCB+ZilcblxubGV0IHJldl9maWx0ZXJfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGkgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgKGkgKyAxKSB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIHRsIGFjY3VtKVxuICBpblxuICBsb29wIDAgbCBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXBpIGwgfmYpXG5sZXQgZmlsdGVyX29wdCBsID0gZmlsdGVyX21hcCBsIH5mOkZuLmlkXG5cbmxldCBwYXJ0aXRpb24zX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCB0cmQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV2IGZzdCwgcmV2IHNuZCwgcmV2IHRyZFxuICAgIHwgeCA6OiB0IC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IGBGc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmQgdHJkXG4gICAgICAgfCBgU25kIHkgLT4gbG9vcCB0IGZzdCAoeSA6OiBzbmQpIHRyZFxuICAgICAgIHwgYFRyZCB5IC0+IGxvb3AgdCBmc3Qgc25kICh5IDo6IHRyZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXSBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgZiB4IDogXyBFaXRoZXIudCA9IGlmIGYgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCBpblxuICBwYXJ0aXRpb25fbWFwIHQgfmYgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl9yZXN1bHQgdCA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICB0eXBlICdhIGtleSA9ICgnYVtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnID0gTGlzdCBbXV0pXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGtleV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBrZXkgPVxuICAgIGZ1biBfb2ZfYV9fMDE4XyAtPiBfb2ZfYV9fMDE4X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX2tleSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBrZXkgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAyMF8gLT4gX29mX2FfXzAyMF9cbiAgOztcblxuICBsZXQga2V5X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBrZXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFRhZ2dlZFxuICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2Nfa2V5X3RhZ1xuICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSB2YWx1ZSA9ICgnYVtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdmFsdWVfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdmFsdWUgPVxuICAgIGZ1biBfb2ZfYV9fMDIxXyAtPiBfb2ZfYV9fMDIxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3ZhbHVlIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHZhbHVlIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMjNfIC0+IF9vZl9hX18wMjNfXG4gIDs7XG5cbiAgbGV0IHZhbHVlX3NleHBfZ3JhbW1hciA6XG4gICAgJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHZhbHVlIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFRhZ2dlZFxuICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdmFsdWVfdGFnXG4gICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICgoJ2Ega2V5ICogJ2IgdmFsdWUpIGxpc3RbQHRhZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdGFnID0gTGlzdCBbXV0pXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2EgJ2IuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnYSlcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDMyXyA9IFwibGlzdC5tbC5Bc3NvYy50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAyNF8gX29mX2JfXzAyNV8geF9fMDMzXyAtPlxuICAgICAgbGlzdF9vZl9zZXhwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDI3XzsgYXJnMV9fMDI4XyBdIC0+XG4gICAgICAgICAgICBsZXQgcmVzMF9fMDI5XyA9IGtleV9vZl9zZXhwIF9vZl9hX18wMjRfIGFyZzBfXzAyN19cbiAgICAgICAgICAgIGFuZCByZXMxX18wMzBfID0gdmFsdWVfb2Zfc2V4cCBfb2ZfYl9fMDI1XyBhcmcxX18wMjhfIGluXG4gICAgICAgICAgICByZXMwX18wMjlfLCByZXMxX18wMzBfXG4gICAgICAgICAgfCBzZXhwX18wMzFfIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDMyX1xuICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIHNleHBfXzAzMV8pXG4gICAgICAgIHhfXzAzM19cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2FfXzAzNF8gX29mX2JfXzAzNV8geF9fMDQwXyAtPlxuICAgICAgc2V4cF9vZl9saXN0XG4gICAgICAgIChmdW4gKGFyZzBfXzAzNl8sIGFyZzFfXzAzN18pIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMzhfID0gc2V4cF9vZl9rZXkgX29mX2FfXzAzNF8gYXJnMF9fMDM2X1xuICAgICAgICAgICBhbmQgcmVzMV9fMDM5XyA9IHNleHBfb2ZfdmFsdWUgX29mX2JfXzAzNV8gYXJnMV9fMDM3XyBpblxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wMzhfOyByZXMxX18wMzlfIF0pXG4gICAgICAgIHhfXzA0MF9cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAgICdhICdiLlxuICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY190YWdcbiAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICAgIChsaXN0X3NleHBfZ3JhbW1hclxuICAgICAgICAgICAgICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKGtleV9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcikudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoKHZhbHVlX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyKS51bnR5cGVkLCBFbXB0eSkgKSlcbiAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcGFpcl9vZl9ncm91cCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChrLCBfKSA6OiBfIGFzIGxpc3QgLT4gaywgbWFwIGxpc3QgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdyb3VwIGFsaXN0IH5lcXVhbCA9XG4gICAgZ3JvdXAgYWxpc3QgfmJyZWFrOihmdW4gKHgsIF8pICh5LCBfKSAtPiBub3QgKGVxdWFsIHggeSkpIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlID1cbiAgICBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZTooZnVuICh4LCBfKSAoeSwgXykgLT4gY29tcGFyZSB4IHkpXG4gICAgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgZmluZCB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBlcXVhbCBrZXkga2V5Jykgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSAoc25kIHgpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LkFzc29jLmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgICBsZXQgZmluZF9leG4gdCB+ZXF1YWwga2V5ID1cbiAgICAgIG1hdGNoIGZpbmQgdCBrZXkgfmVxdWFsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZXF1YWwga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgXyAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IH5lcXVhbCBrZXkgPSBmaWx0ZXIgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBub3QgKGVxdWFsIGtleSBrZXknKSkgW0Bub250YWlsXVxuXG4gIGxldCBhZGQgdCB+ZXF1YWwga2V5IHZhbHVlID1cbiAgICAoKiB0aGUgcmVtb3ZlIGRvZXNuJ3QgY2hhbmdlIHRoZSBtYXAgc2VtYW50aWNzLCBidXQga2VlcHMgdGhlIGxpc3Qgc21hbGwgKilcbiAgICAoa2V5LCB2YWx1ZSkgOjogcmVtb3ZlIHQgfmVxdWFsIGtleVxuICA7O1xuXG4gIGxldCBpbnZlcnNlIHQgPSBtYXAgdCB+ZjooZnVuICh4LCB5KSAtPiB5LCB4KVxuICBsZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZjooZnVuIChrZXksIHZhbHVlKSAtPiBrZXksIGYgdmFsdWUpIFtAbm9udGFpbF1cbmVuZFxuXG5sZXQgc3ViIGwgfnBvcyB+bGVuID1cbiAgKCogV2UgdXNlIFtwb3MgPiBsZW5ndGggbCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IGxlbmd0aCBsXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBsZW5ndGggbCAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5zdWJcIjtcbiAgcmV2XG4gICAgKGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBlbCAtPlxuICAgICAgIGlmIGkgPj0gcG9zICYmIGkgPCBwb3MgKyBsZW4gdGhlbiBlbCA6OiBhY2MgZWxzZSBhY2MpKVxuOztcblxubGV0IHNwbGl0X24gdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXSwgdF9vcmlnXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtLCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnLCBbXSAoKiBpbiB0aGlzIGNhc2UsIHRfb3JpZyA9IHJldiBhY2N1bSAqKVxuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF9uXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgKilcbmxldCB0YWtlIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW1cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWdcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG5sZXQgcmVjIGRyb3AgdCBuID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgXyA6OiB0bCB3aGVuIG4gPiAwIC0+IGRyb3AgdGwgKG4gLSAxKVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNodW5rc19vZiBsIH5sZW5ndGggPVxuICBpZiBsZW5ndGggPD0gMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuY2h1bmtzX29mOiBFeHBlY3RlZCBsZW5ndGggPiAwLCBnb3QgJWRcIiBsZW5ndGggKCk7XG4gIGxldCByZWMgYXV4IG9mX2xlbmd0aCBhY2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBzdWJsaXN0LCBsID0gc3BsaXRfbiBsIGxlbmd0aCBpblxuICAgICAgYXV4IG9mX2xlbmd0aCAoc3VibGlzdCA6OiBhY2MpIGxcbiAgaW5cbiAgYXV4IGxlbmd0aCBbXSBsXG47O1xuXG5sZXQgc3BsaXRfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCB0IC0+IHJldiBhY2MsIHRcbiAgaW5cbiAgbG9vcCBbXSB4cyBbQG5vbnRhaWxdXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfd2hpbGVdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2Vfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCBfIC0+IHJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSB4cyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBkcm9wX3doaWxlIHRsIH5mXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgZHJvcF9sYXN0IHQgPVxuICBtYXRjaCByZXYgdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogbHN0IC0+IFNvbWUgKHJldiBsc3QpXG47O1xuXG5sZXQgZHJvcF9sYXN0X2V4biB0ID1cbiAgbWF0Y2ggZHJvcF9sYXN0IHQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJMaXN0LmRyb3BfbGFzdF9leG46IGVtcHR5IGxpc3RcIlxuICB8IFNvbWUgbHN0IC0+IGxzdFxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IGxpc3QxIGxpc3QyID1cbiAgaWYgaXNfZW1wdHkgbGlzdDJcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbDEgbDIgYWNjdW0gPVxuICAgICAgbWF0Y2ggbDEgd2l0aFxuICAgICAgfCBbXSAtPiBhY2N1bVxuICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGwyIChyZXZfYXBwZW5kIChtYXAgfmY6KGZ1biB4IC0+IGhkLCB4KSBsMikgYWNjdW0pXG4gICAgaW5cbiAgICByZXYgKGxvb3AgbGlzdDEgbGlzdDIgW10pKVxuOztcblxubGV0IGNvbmNhdCBsID0gZm9sZF9yaWdodCBsIH5pbml0OltdIH5mOmFwcGVuZFxubGV0IGNvbmNhdF9ub19vcmRlciBsID0gZm9sZCBsIH5pbml0OltdIH5mOihmdW4gYWNjIGwgLT4gcmV2X2FwcGVuZCBsIGFjYylcbmxldCBjb25zIHggbCA9IHggOjogbFxuXG5sZXQgaXNfc29ydGVkIGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPD0gMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbCBbQG5vbnRhaWxdXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICAoKiBzcGVjaWFsIGNhc2VzIHRvIHNwZWVkIHRoaW5ncyB1cCBpbiB0cml2aWFsIGNhc2VzICopXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0XG4gIHwgWyB4OyB5IF0gLT4gaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlIHRoZW4gWyB5OyB4IF0gZWxzZSBsaXN0XG4gIHwgXyAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBBcnJheV9wZXJtdXRlLnBlcm11dGUgYXJyIH5yYW5kb21fc3RhdGU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIGlmIGlzX2VtcHR5IGxpc3RcbiAgdGhlbiBmYWlsd2l0aCBcIkxpc3QucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBsaXN0XCJcbiAgZWxzZSBudGhfZXhuIGxpc3QgKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggbGlzdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSBsaXN0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCBuID0gY21wIHggeSBpblxuICAgIGlmIG4gPSAwIHRoZW4gY29tcGFyZSBjbXAgeHMgeXMgZWxzZSBuXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfbGlzdFxuXG5sZXQgZXF1YWxfbG9jYWwgKChlcXVhbCA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgdDEgdDIgPVxuICBsZXQgcmVjIGxvb3AgfmVxdWFsIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICB8IHgxIDo6IHQxLCB4MiA6OiB0MiAtPiBlcXVhbCB4MSB4MiAmJiBsb29wIH5lcXVhbCB0MSB0MlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIH5lcXVhbCB0MSB0MlxuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBmIHggeSAtPiBlcXVhbF9sb2NhbCBmIHggeVxuOztcblxubGV0IHRyYW5zcG9zZSA9XG4gIGxldCByZWMgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0IGNvbHVtbl9hY2MgdHJpbW1lZCBmb3VuZF9lbXB0eSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW5fYWNjLCB0cmltbWVkLCBmb3VuZF9lbXB0eVxuICAgIHwgW10gOjogdGwgLT4gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCBjb2x1bW5fYWNjIHRyaW1tZWQgdHJ1ZVxuICAgIHwgKHggOjogeHMpIDo6IHRsIC0+XG4gICAgICBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsICh4IDo6IGNvbHVtbl9hY2MpICh4cyA6OiB0cmltbWVkKSBmb3VuZF9lbXB0eVxuICBpblxuICBsZXQgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzID0gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIFtdIFtdIGZhbHNlIGluXG4gIGxldCByZWMgbG9vcCByb3dzIGNvbHVtbnMgZG9fcmV2ID1cbiAgICBtYXRjaCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3Mgd2l0aFxuICAgIHwgW10sIFtdLCBfIC0+IFNvbWUgKHJldiBjb2x1bW5zKVxuICAgIHwgY29sdW1uLCB0cmltbWVkX3Jvd3MsIGZvdW5kX2VtcHR5IC0+XG4gICAgICBpZiBmb3VuZF9lbXB0eVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGlmIGRvX3JldiB0aGVuIHJldiBjb2x1bW4gZWxzZSBjb2x1bW4gaW5cbiAgICAgICAgbG9vcCB0cmltbWVkX3Jvd3MgKGNvbHVtbiA6OiBjb2x1bW5zKSAobm90IGRvX3JldikpXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXSB0cnVlXG47O1xuXG5leGNlcHRpb24gVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBvZiBpbnQgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc11cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBhcmcwX18wNDFfIC0+XG4gICAgICAgIGxldCByZXMwX18wNDJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfaW50IGFyZzBfXzA0MV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaXN0Lm1sLlRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNcIlxuICAgICAgICAgIDsgcmVzMF9fMDQyX1xuICAgICAgICAgIF1cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdHJhbnNwb3NlX2V4biBsID1cbiAgbWF0Y2ggdHJhbnNwb3NlIGwgd2l0aFxuICB8IFNvbWUgbCAtPiBsXG4gIHwgTm9uZSAtPiByYWlzZSAoVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyAobWFwIGwgfmY6bGVuZ3RoKSlcbjs7XG5cbmxldCBpbnRlcnNwZXJzZSB0IH5zZXAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IHggOjogeHMgLT4geCA6OiBmb2xkX3JpZ2h0IHhzIH5pbml0OltdIH5mOihmdW4geSBhY2MgLT4gc2VwIDo6IHkgOjogYWNjKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5cbmxldCBpc19zdWZmaXggbGlzdCB+c3VmZml4IH5lcXVhbDooKGVxdWFsX2VsdCA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGlzdF9sZW4gPSBsZW5ndGggbGlzdCBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGlzdF9sZW4gPj0gc3VmZml4X2xlblxuICAmJiBlcXVhbF9sb2NhbCBlcXVhbF9lbHQgKGRyb3AgbGlzdCAobGlzdF9sZW4gLSBzdWZmaXhfbGVuKSkgc3VmZml4XG47O1xuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbSW5mb10sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gYXMgbWFueSBwbGFjZXMgYXMgcG9zc2libGUuIFBsZWFzZSBhdm9pZFxuICAgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvX2ludGZcbm1vZHVsZSBDaGFyID0gQ2hhcjBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRXhuIG9mIGV4blxuICAgIHwgU2V4cCBvZiBTZXhwLnRcbiAgICB8IFRhZ19zZXhwIG9mIHN0cmluZyAqIFNleHAudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC50IG9wdGlvblxuICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCByZWMgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBhcmcwX18wMDFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDJfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJDb3VsZF9ub3RfY29uc3RydWN0XCI7IHJlczBfXzAwMl8gXVxuICAgICAgfCBTdHJpbmcgYXJnMF9fMDAzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA0XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RyaW5nXCI7IHJlczBfXzAwNF8gXVxuICAgICAgfCBFeG4gYXJnMF9fMDA1XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA2XyA9IHNleHBfb2ZfZXhuIGFyZzBfXzAwNV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhuXCI7IHJlczBfXzAwNl8gXVxuICAgICAgfCBTZXhwIGFyZzBfXzAwN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwOF8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDA4XyBdXG4gICAgICB8IFRhZ19zZXhwIChhcmcwX18wMDlfLCBhcmcxX18wMTBfLCBhcmcyX18wMTFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwOV9cbiAgICAgICAgYW5kIHJlczFfXzAxM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMTBfXG4gICAgICAgIGFuZCByZXMyX18wMTRfID0gc2V4cF9vZl9vcHRpb24gU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBhcmcyX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3NleHBcIjsgcmVzMF9fMDEyXzsgcmVzMV9fMDEzXzsgcmVzMl9fMDE0XyBdXG4gICAgICB8IFRhZ190IChhcmcwX18wMTVfLCBhcmcxX18wMTZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxNV9cbiAgICAgICAgYW5kIHJlczFfXzAxOF8gPSBzZXhwX29mX3QgYXJnMV9fMDE2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfdFwiOyByZXMwX18wMTdfOyByZXMxX18wMThfIF1cbiAgICAgIHwgVGFnX2FyZyAoYXJnMF9fMDE5XywgYXJnMV9fMDIwXywgYXJnMl9fMDIxXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTlfXG4gICAgICAgIGFuZCByZXMxX18wMjNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDIwX1xuICAgICAgICBhbmQgcmVzMl9fMDI0XyA9IHNleHBfb2ZfdCBhcmcyX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX2FyZ1wiOyByZXMwX18wMjJfOyByZXMxX18wMjNfOyByZXMyX18wMjRfIF1cbiAgICAgIHwgT2ZfbGlzdCAoYXJnMF9fMDI1XywgYXJnMV9fMDI2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX2ludCBhcmcwX18wMjVfXG4gICAgICAgIGFuZCByZXMxX18wMjhfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdCBhcmcxX18wMjZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX2xpc3RcIjsgcmVzMF9fMDI3XzsgcmVzMV9fMDI4XyBdXG4gICAgICB8IFdpdGhfYmFja3RyYWNlIChhcmcwX18wMjlfLCBhcmcxX18wMzBfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMxXyA9IHNleHBfb2ZfdCBhcmcwX18wMjlfXG4gICAgICAgIGFuZCByZXMxX18wMzJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMV9fMDMwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJXaXRoX2JhY2t0cmFjZVwiOyByZXMwX18wMzFfOyByZXMxX18wMzJfIF1cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCByZWMgdG9fc3RyaW5nc19odW0gdCBhYyA9XG4gICAgKCogV2UgdXNlIFtTZXhwLnRvX3N0cmluZ19tYWNoXSwgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBpbXBsZW1lbnRpbmdcbiAgICAgICBbdG9fc3RyaW5nc19odW1dLCBiZWNhdXNlIHdlIHdhbnQgdGhlIGluZm8gdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUsIGFuZCBvbmNlIHdlJ3ZlXG4gICAgICAgaGFkIHRvIHJlc29ydCB0byBzZXhwcywgdGhlIG1lc3NhZ2UgaXMgZ29pbmcgdG8gc3RhcnQgbm90IGxvb2tpbmcgc28gcHJldHR5XG4gICAgICAgYW55d2F5LiAqKVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBzZXhwIC0+XG4gICAgICBcImNvdWxkIG5vdCBjb25zdHJ1Y3QgaW5mbzogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIChFeG4uc2V4cF9vZl90IGV4bikgOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIF8pIC0+IHRhZyA6OiBcIjogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiB0YWcgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBib2R5IGVsc2UgdGFnIDo6IFwiOiBcIiA6OiBib2R5XG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgdG9fc3RyaW5nc19odW0gdCAoXCJcXG5CYWNrdHJhY2U6XFxuXCIgOjogYmFja3RyYWNlIDo6IGFjKVxuICAgIHwgT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIHRzKSAtPlxuICAgICAgbGV0IHRzID1cbiAgICAgICAgbWF0Y2ggdHJ1bmNfYWZ0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHNcbiAgICAgICAgfCBTb21lIG1heCAtPlxuICAgICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggdHMgaW5cbiAgICAgICAgICBpZiBuIDw9IG1heFxuICAgICAgICAgIHRoZW4gdHNcbiAgICAgICAgICBlbHNlIExpc3QudGFrZSB0cyBtYXggQCBbIFN0cmluZyAoUHJpbnRmLnNwcmludGYgXCJhbmQgJWQgbW9yZSBpbmZvXCIgKG4gLSBtYXgpKSBdXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+XG4gICAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKGlmIExpc3QuaXNfZW1wdHkgYWMgdGhlbiBhYyBlbHNlIFwiOyBcIiA6OiBhYykpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gU3RyaW5nLmNvbmNhdCAodG9fc3RyaW5nc19odW0gdCBbXSlcblxuICAoKiBMaWtlIFtTdHJpbmcuc3BsaXRfbGluZXNdLCBidXQgbGVzcyBvcHRpbWl6ZWQgYW5kIGRvZXNuJ3QgaGFuZGxlIFtcXHJcXG5dLiBBdm9pZHMgYVxuICAgICBkZXBlbmRlbmN5IGN5Y2xlLiBJbXByb3ZlcyBvbiBuYWl2ZSBbU3RyaW5nLnNwbGl0X29uX2NoYXJdIGJ5IHJlbW92aW5nIGVtcHR5IGZpbmFsXG4gICAgIGxpbmUuICopXG4gIGxldCBzcGxpdF9saW5lcyBzdHJpbmcgPVxuICAgIGxldCBzdHJpbmcgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgJ1xcbicgKFN0cmluZy5nZXQgc3RyaW5nIChsZW4gLSAxKSlcbiAgICAgIHRoZW4gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgICBlbHNlIHN0cmluZ1xuICAgIGluXG4gICAgU3RyaW5nLnNwbGl0X29uX2NoYXIgc3RyaW5nIH5zZXA6J1xcbidcbiAgOztcblxuICBsZXQgcmVjIHRvX3NleHBzX2h1bSB0IGFjID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgXyBhcyB0IC0+IHNleHBfb2ZfdCB0IDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IEF0b20gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IEV4bi5zZXhwX29mX3QgZXhuIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgaGVyZSkgLT5cbiAgICAgIExpc3RcbiAgICAgICAgKEF0b20gdGFnXG4gICAgICAgICA6OiBzZXhwXG4gICAgICAgICA6OlxuICAgICAgICAgKG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBoZXJlIC0+IFsgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlIF0pKVxuICAgICAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IExpc3QgKEF0b20gdGFnIDo6IHRvX3NleHBzX2h1bSB0IFtdKSA6OiBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBzZXhwIDo6IHRvX3NleHBzX2h1bSB0IFtdIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBMaXN0IGJvZHkgOjogYWMgZWxzZSBMaXN0IChBdG9tIHRhZyA6OiBib2R5KSA6OiBhY1xuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIFNleHAuTGlzdCBbIHRvX3NleHBfaHVtIHQ7IHNleHBfb2ZfbGlzdCBzZXhwX29mX3N0cmluZyAoc3BsaXRfbGluZXMgYmFja3RyYWNlKSBdXG4gICAgICA6OiBhY1xuICAgIHwgT2ZfbGlzdCAoXywgdHMpIC0+XG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT4gdG9fc2V4cHNfaHVtIHQgYWMpXG5cbiAgYW5kIHRvX3NleHBfaHVtIHQgPVxuICAgIG1hdGNoIHRvX3NleHBzX2h1bSB0IFtdIHdpdGhcbiAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICB8IHNleHBzIC0+IFNleHAuTGlzdCBzZXhwc1xuICA7O1xuXG4gICgqIFdlIHVzZSBbcHJvdGVjdF0gdG8gZ3VhcmQgYWdhaW5zdCBleGNlcHRpb25zIHJhaXNlZCBieSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9ucywgc29cbiAgICAgdGhhdCBmYWlsdXJlIHRvIHByb2R1Y2Ugb25lIHBhcnQgb2YgYW4gaW5mbyBkb2Vzbid0IGludGVyZmVyZSB3aXRoIG90aGVyIHBhcnRzLiAqKVxuICBsZXQgcHJvdGVjdCBmID1cbiAgICB0cnkgZiAoKSB3aXRoXG4gICAgfCBleG4gLT4gQ291bGRfbm90X2NvbnN0cnVjdCAoRXhuLnNleHBfb2ZfdCBleG4pXG4gIDs7XG5cbiAgbGV0IG9mX2luZm8gaW5mbyA9IHByb3RlY3QgKGZ1biAoKSAtPiBMYXp5LmZvcmNlIGluZm8pXG4gIGxldCB0b19pbmZvIHQgPSBsYXp5IHRcbmVuZFxuXG5vcGVuIE1lc3NhZ2VcblxudHlwZSB0ID0gTWVzc2FnZS50IExhenkudFxuXG5sZXQgaW52YXJpYW50IF8gPSAoKVxubGV0IHRvX21lc3NhZ2UgPSBNZXNzYWdlLm9mX2luZm9cbmxldCBvZl9tZXNzYWdlID0gTWVzc2FnZS50b19pbmZvXG5cbigqIEl0IGlzIE9LIHRvIHVzZSBbTWVzc2FnZS50b19zZXhwX2h1bV0sIHdoaWNoIGlzIG5vdCBzdGFibGUsIGJlY2F1c2UgW3Rfb2Zfc2V4cF0gYmVsb3dcbiAgIGNhbiBoYW5kbGUgYW55IHNleHAuICopXG5sZXQgc2V4cF9vZl90IHQgPSBNZXNzYWdlLnRvX3NleHBfaHVtICh0b19tZXNzYWdlIHQpXG5sZXQgdF9vZl9zZXhwIHNleHAgPSBsYXp5IChNZXNzYWdlLlNleHAgc2V4cClcbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHsgdW50eXBlZCA9IEFueSBcIkluZm8udFwiIH1cbmxldCBjb21wYXJlIHQxIHQyID0gU2V4cC5jb21wYXJlIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgZXF1YWwgdDEgdDIgPSBTZXhwLmVxdWFsIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFNleHAuaGFzaF9mb2xkX3Qgc3RhdGUgKHNleHBfb2ZfdCB0KVxubGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcblxubGV0IHRvX3N0cmluZ19odW0gdCA9XG4gIG1hdGNoIHRvX21lc3NhZ2UgdCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gc1xuICB8IG1lc3NhZ2UgLT4gU2V4cC50b19zdHJpbmdfaHVtIChNZXNzYWdlLnRvX3NleHBfaHVtIG1lc3NhZ2UpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBNZXNzYWdlLnRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCAodG9fbWVzc2FnZSB0KVxubGV0IHRvX3N0cmluZ19tYWNoIHQgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX3QgdClcbmxldCBvZl9sYXp5IGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3NleHAgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTZXhwIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3QgbGF6eV90ID0gTGF6eS5qb2luIGxhenlfdFxubGV0IG9mX3N0cmluZyBtZXNzYWdlID0gTGF6eS5mcm9tX3ZhbCAoU3RyaW5nIG1lc3NhZ2UpXG5sZXQgY3JlYXRlZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgb2Zfc3RyaW5nIGZvcm1hdFxubGV0IG9mX3RodW5rIGYgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChmICgpKSkpXG5cbmxldCBjcmVhdGUgP2hlcmUgP3N0cmljdCB0YWcgeCBzZXhwX29mX3ggPVxuICBtYXRjaCBzdHJpY3Qgd2l0aFxuICB8IE5vbmUgLT4gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSkpXG4gIHwgU29tZSAoKSAtPiBvZl9tZXNzYWdlIChUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpXG47O1xuXG5sZXQgY3JlYXRlX3Mgc2V4cCA9IExhenkuZnJvbV92YWwgKFNleHAgc2V4cClcbmxldCB0YWcgdCB+dGFnID0gbGF6eSAoVGFnX3QgKHRhZywgdG9fbWVzc2FnZSB0KSlcblxubGV0IHRhZ19zX2xhenkgdCB+dGFnID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKFwiXCIsIExhenkuZm9yY2UgdGFnLCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCB0YWdfcyB0IH50YWcgPSB0YWdfc19sYXp5IHQgfnRhZzooTGF6eS5mcm9tX3ZhbCB0YWcpXG5cbmxldCB0YWdfYXJnIHQgdGFnIHggc2V4cF9vZl94ID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKHRhZywgc2V4cF9vZl94IHgsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IG9mX2xpc3QgP3RydW5jX2FmdGVyIHRzID0gbGF6eSAoT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIExpc3QubWFwIHRzIH5mOnRvX21lc3NhZ2UpKVxuXG5leGNlcHRpb24gRXhuIG9mIHRcblxubGV0ICgpID1cbiAgKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZVxuICAgICBbZXhjZXB0aW9uIEV4biBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXSAuLi4gW0BAQGVuZF1dIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmFcbiAgICAgd3JhcHBpbmcgb2YgXCIoRXhuIC4uLilcIi4gKilcbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4bl0gKGZ1bmN0aW9uXG4gICAgfCBFeG4gdCAtPiBzZXhwX29mX3QgdFxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgdG9fZXhuIHQgPVxuICBpZiBub3QgKExhenkuaXNfdmFsIHQpXG4gIHRoZW4gRXhuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTGF6eS5mb3JjZSB0IHdpdGhcbiAgICB8IE1lc3NhZ2UuRXhuIGV4biAtPiBleG5cbiAgICB8IF8gLT4gRXhuIHQpXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID1cbiAgbGV0IGJhY2t0cmFjZSA9XG4gICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBgR2V0IC0+XG4gICAgICBTb21lIChTdGRsaWIuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgICB8IFNvbWUgKGBUaGlzIHMpIC0+IFNvbWUgc1xuICBpblxuICBtYXRjaCBleG4sIGJhY2t0cmFjZSB3aXRoXG4gIHwgRXhuIHQsIE5vbmUgLT4gdFxuICB8IEV4biB0LCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAodG9fbWVzc2FnZSB0LCBiYWNrdHJhY2UpKVxuICB8IF8sIE5vbmUgLT4gTGF6eS5mcm9tX3ZhbCAoTWVzc2FnZS5FeG4gZXhuKVxuICB8IF8sIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlIChTZXhwIChFeG4uc2V4cF9vZl90IGV4biksIGJhY2t0cmFjZSkpXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkluZm9cIlxuICAgIGxldCBwcCBwcGYgdCA9IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nX2h1bSB0KVxuICBlbmQpXG5cbm1vZHVsZSBJbnRlcm5hbF9yZXByID0gTWVzc2FnZVxuXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtFcnJvcl0gYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcy4gIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3XG4gICBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvXG5cbmxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJFcnJvci50XCIgfVxubGV0IHJhaXNlIHQgPSByYWlzZSAodG9fZXhuIHQpXG5sZXQgcmFpc2VfcyBzZXhwID0gcmFpc2UgKGNyZWF0ZV9zIHNleHApXG5sZXQgdG9faW5mbyB0ID0gdFxubGV0IG9mX2luZm8gdCA9IHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FcnJvclwiXG4gICAgbGV0IHBwID0gcHBcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludmFyaWFudF9pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5sZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA6IHVuaXQgPVxuICB0cnkgZiAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJcIiwgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlXG4gICAgICAgICA7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4blxuICAgICAgICAgOyBcIlwiLCBzZXhwX29mX3QgdFxuICAgICAgICAgXSlcbjs7XG5cbmxldCBjaGVja19maWVsZCB0IGYgZmllbGQgPVxuICB0cnkgZiAoRmllbGQuZ2V0IGZpZWxkIHQpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcInByb2JsZW0gd2l0aCBmaWVsZFwiXG4gICAgICAgICBbIFwiZmllbGRcIiwgc2V4cF9vZl9zdHJpbmcgKEZpZWxkLm5hbWUgZmllbGQpOyBcImV4blwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudFxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT4gUmVzdWx0LmNvbXBhcmUgX2NtcF9fYSBFcnJvci5jb21wYXJlIGFfXzAwMV8gYl9fMDAyX1xuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPiBSZXN1bHQuZXF1YWwgX2NtcF9fYSBFcnJvci5lcXVhbCBhX18wMDdfIGJfXzAwOF9cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA6XG4gICdhLlxuICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gIC0+ICdhIHRcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBoc3YgYXJnIC0+IFJlc3VsdC5oYXNoX2ZvbGRfdCBfaGFzaF9mb2xkX2EgRXJyb3IuaGFzaF9mb2xkX3QgaHN2IGFyZ1xuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDEzXyB4X18wMTVfIC0+IFJlc3VsdC50X29mX3NleHAgX29mX2FfXzAxM18gRXJyb3IudF9vZl9zZXhwIHhfXzAxNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxNl8geF9fMDE3XyAtPiBSZXN1bHQuc2V4cF9vZl90IF9vZl9hX18wMTZfIEVycm9yLnNleHBfb2ZfdCB4X18wMTdfXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlc3VsdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyIEVycm9yLnRfc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgKCA+Pj0gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+PnwgKSA9IFJlc3VsdC4oID4+fCApXG5sZXQgYmluZCA9IFJlc3VsdC5iaW5kXG5sZXQgaWdub3JlX20gPSBSZXN1bHQuaWdub3JlX21cbmxldCBqb2luID0gUmVzdWx0LmpvaW5cbmxldCBtYXAgPSBSZXN1bHQubWFwXG5sZXQgcmV0dXJuID0gUmVzdWx0LnJldHVyblxuXG5tb2R1bGUgTW9uYWRfaW5maXggPSBSZXN1bHQuTW9uYWRfaW5maXhcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IuaW52YXJpYW50IGVycm9yXG47O1xuXG5sZXQgbWFwMiBhIGIgfmYgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBPayB4LCBPayB5IC0+IE9rIChmIHggeSlcbiAgfCBPayBfLCAoRXJyb3IgXyBhcyBlKSB8IChFcnJvciBfIGFzIGUpLCBPayBfIC0+IGVcbiAgfCBFcnJvciBlMSwgRXJyb3IgZTIgLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IG1hcDIgPSBtYXAyXG4gIGVuZClcblxubGV0ICggKj4gKSA9IEZvcl9hcHBsaWNhdGl2ZS4oICo+IClcbmxldCAoIDwqICkgPSBGb3JfYXBwbGljYXRpdmUuKCA8KiApXG5sZXQgKCA8Kj4gKSA9IEZvcl9hcHBsaWNhdGl2ZS4oIDwqPiApXG5sZXQgYXBwbHkgPSBGb3JfYXBwbGljYXRpdmUuYXBwbHlcbmxldCBib3RoID0gRm9yX2FwcGxpY2F0aXZlLmJvdGhcbmxldCBtYXAzID0gRm9yX2FwcGxpY2F0aXZlLm1hcDNcblxubW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gRm9yX2FwcGxpY2F0aXZlLkFwcGxpY2F0aXZlX2luZml4XG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgb2sgPSBSZXN1bHQub2tcbmxldCBpc19vayA9IFJlc3VsdC5pc19va1xubGV0IGlzX2Vycm9yID0gUmVzdWx0LmlzX2Vycm9yXG5cbmxldCB0cnlfd2l0aCA/KGJhY2t0cmFjZSA9IGZhbHNlKSBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuID9iYWNrdHJhY2U6KGlmIGJhY2t0cmFjZSB0aGVuIFNvbWUgYEdldCBlbHNlIE5vbmUpKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2JhY2t0cmFjZSBmID0gam9pbiAodHJ5X3dpdGggP2JhY2t0cmFjZSBmKVxuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBlcnIgLT4gRXJyb3IucmFpc2UgZXJyXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRXJyb3IgKEVycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcblxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSA9IGZ1bmN0aW9uXG4gIHwgT2sgXyBhcyB6IC0+IHpcbiAgfCBFcnJvciBleG4gLT4gb2ZfZXhuID9iYWNrdHJhY2UgZXhuXG47O1xuXG5sZXQgZXJyb3IgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRXJyb3IgKEVycm9yLmNyZWF0ZSA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZXJyb3JfcyBzZXhwID0gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1lc3NhZ2UgPSBFcnJvciAoRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooZnVuIGUgLT4gRXJyb3IudGFnX2FyZyBlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBzID0gZXJyb3IgXCJ1bmltcGxlbWVudGVkXCIgcyBzZXhwX29mX3N0cmluZ1xuXG5cbmxldCBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rIH5vbl9lcnJvciA9XG4gIG1hdGNoIFJlc3VsdC5jb21iaW5lX2Vycm9ycyBsaXN0IHdpdGhcbiAgfCBPayB4IC0+IE9rIChvbl9vayB4KVxuICB8IEVycm9yIGVycnMgLT4gRXJyb3IgKG9uX2Vycm9yIGVycnMpXG47O1xuXG5sZXQgaWdub3JlX3VuaXRfbGlzdCAoXyA6IHVuaXQgbGlzdCkgPSAoKVxuXG5sZXQgZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3NhcnkgPSBmdW5jdGlvblxuICB8IFsgZSBdIC0+IGVcbiAgfCBsaXN0IC0+IEVycm9yLm9mX2xpc3QgbGlzdFxuOztcblxubGV0IGFsbCBsaXN0ID0gY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazpGbi5pZCB+b25fZXJyb3I6ZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3NhcnlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOmlnbm9yZV91bml0X2xpc3Qgfm9uX2Vycm9yOmVycm9yX29mX2xpc3RfaWZfbmVjZXNzYXJ5XG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6Rm4uaWQgfm9uX2Vycm9yOkVycm9yLm9mX2xpc3RcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbGlzdCA9XG4gIGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6aWdub3JlX3VuaXRfbGlzdCB+b25fZXJyb3I6RXJyb3Iub2ZfbGlzdFxuOztcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QucGFydGl0aW9uX21hcCBsIH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgbWF0Y2ggb2sgd2l0aFxuICB8IFtdIC0+IEVycm9yIChFcnJvci5vZl9saXN0IGVycnMpXG4gIHwgXyAtPiBPayBva1xuOztcblxubGV0IGZpbmRfb2sgbCA9XG4gIG1hdGNoIExpc3QuZmluZF9tYXAgbCB+ZjpSZXN1bHQub2sgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE9rIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSlcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICAgICAgfCBPayBfIGFzIHggLT4gcmV0dXJuIHhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCBpdGVyID0gUmVzdWx0Lml0ZXJcbmxldCBpdGVyX2Vycm9yID0gUmVzdWx0Lml0ZXJfZXJyb3JcbiIsIigqIFRoaXMgaXMgYnJva2VuIG9mZiB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gU2lnbiBhbmQgQ29tcGFyYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTmVnXG4gIHwgWmVyb1xuICB8IFBvc1xuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ24wLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IHNleHBfXzAwMl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zIF0gOiB0IGxpc3QpXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5sZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMVxuICB8IFplcm8gLT4gMFxuICB8IFBvcyAtPiAxXG47O1xuXG5sZXQgXyA9IGhhc2hcblxuKCogSWdub3JlIHRoZSBoYXNoIGZ1bmN0aW9uIHByb2R1Y2VkIGJ5IFtAQGRlcml2aW5nX2lubGluZSBoYXNoXSAqKVxubGV0IGhhc2ggPSB0b19pbnRcbmxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduXCJcbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTmVnIGVsc2UgaWYgbiA9IDAgdGhlbiBaZXJvIGVsc2UgUG9zXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tcGFyYWJsZV9pbnRmXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIFRcblxuICBsZXQgaXNfcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID4gMFxuICBsZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+PSAwXG4gIGxldCBpc19uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPCAwXG4gIGxldCBpc19ub25fcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDw9IDBcbiAgbGV0IHNpZ24gdCA9IFNpZ24wLm9mX2ludCAoY29tcGFyZSB0IHplcm8pXG5lbmRcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBQb2x5XG4gIGVuZFxuXG4gIGluY2x1ZGUgUG9seVxuXG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSlcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG5lbmRcblxubGV0IGd0IGNtcCBhIGIgPSBjbXAgYSBiID4gMFxubGV0IGx0IGNtcCBhIGIgPSBjbXAgYSBiIDwgMFxubGV0IGdlcSBjbXAgYSBiID0gY21wIGEgYiA+PSAwXG5sZXQgbGVxIGNtcCBhIGIgPSBjbXAgYSBiIDw9IDBcbmxldCBlcXVhbCBjbXAgYSBiID0gY21wIGEgYiA9IDBcbmxldCBub3RfZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPD4gMFxubGV0IG1pbiBjbXAgdCB0JyA9IGlmIGxlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xubGV0IG1heCBjbXAgdCB0JyA9IGlmIGdlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xuXG5tb2R1bGUgSW5maXggKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IEluZml4IHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBsZXQgKCA+ICkgYSBiID0gZ3QgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8ICkgYSBiID0gbHQgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA+PSApIGEgYiA9IGdlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw9ICkgYSBiID0gbGVxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPSApIGEgYiA9IGVxdWFsIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD4gKSBhIGIgPSBub3RfZXF1YWwgVC5jb21wYXJlIGEgYlxuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgQ29tcGFyaXNvbnMgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4IChUKVxuXG4gIGxldCBjb21wYXJlID0gVC5jb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCBtaW4gdCB0JyA9IG1pbiBjb21wYXJlIHQgdCdcbiAgbGV0IG1heCB0IHQnID0gbWF4IGNvbXBhcmUgdCB0J1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyYXRvci5jb21wYXJlXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQ29tcGFyaXNvbnMgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgdCB0JyA9IGNvbXBhcmUgdCcgdFxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgW0BpbmxpbmVkIGhpbnRdIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICAgICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgICAgICBbQEBAZW5kXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbigqIGNvbXBhcmUgW3hdIGFuZCBbeV0gbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgZnVuY3Rpb25zIGluIHRoZSBsaXN0IFtjbXBzXSAqKVxubGV0IGxleGljb2dyYXBoaWMgY21wcyB4IHkgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgY21wIDo6IGNtcHMgLT5cbiAgICAgIGxldCByZXMgPSBjbXAgeCB5IGluXG4gICAgICBpZiByZXMgPSAwIHRoZW4gbG9vcCBjbXBzIGVsc2UgcmVzXG4gICAgfCBbXSAtPiAwXG4gIGluXG4gIGxvb3AgY21wc1xuOztcblxubGV0IGxpZnQgY21wIH5mIHggeSA9IGNtcCAoZiB4KSAoZiB5KVxubGV0IHJldmVyc2UgY21wIHggeSA9IGNtcCB5IHhcblxudHlwZSAnYSByZXZlcnNlZCA9ICdhXG5cbmxldCBjb21wYXJlX3JldmVyc2VkIGNtcCB4IHkgPSBjbXAgeSB4XG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoYWJsZS5LZXkgKilcbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuXG4gICgqKiBWYWx1ZXMgcmV0dXJuZWQgYnkgW2hhc2hdIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGluIHRoZVxuICAgICAgY2FzZSB0aGF0IFtoYXNoXSByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICopXG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICAoKiogVGhpcyBmdW5jdGlvbiBpcyBzb3VuZCBidXQgbm90IGNvbXBsZXRlLCBtZWFuaW5nIHRoYXQgaWYgaXQgcmV0dXJucyBbdHJ1ZV0gdGhlbiBpdCdzXG4gICAgICBzYWZlIHRvIHVzZSB0aGUgdHdvIGludGVyY2hhbmdlYWJseS4gIElmIGl0J3MgW2ZhbHNlXSwgeW91IGhhdmUgbm8gZ3VhcmFudGVlcy4gIEZvclxuICAgICAgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgPiB1dG9wXG4gICAgICAgIG9wZW4gQ29yZTs7XG4gICAgICAgIGxldCBlcXVhbCAoYSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KSBiID1cbiAgICAgICAgICBwaHlzX2VxdWFsIGEgYlxuICAgICAgICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gICAgICAgIDs7XG4gICAgICAgIGxldCBhID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgbGV0IGIgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBlcXVhbCBhIGI7OyAgKCogZmFsc2U/ISAqKVxuICAgICAgXX1cbiAgKilcbiAgbGV0IGVxdWFsIGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBoYXNoX3BhcmFtID0gU3RkbGliLkhhc2h0YmwuaGFzaF9wYXJhbVxuICBsZXQgaGFzaCA9IFN0ZGxpYi5IYXNodGJsLmhhc2hcbiAgbGV0IHBvbHkgPSB7IGhhc2g7IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIH1cblxuICBsZXQgb2Zfa2V5ICh0eXBlIGEpIChtb2R1bGUgS2V5IDogS2V5IHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIHsgaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICA7O1xuXG4gIGxldCB0b19rZXkgKHR5cGUgYSkgeyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQgOiBLZXlcbiAgICAgIHdpdGggdHlwZSB0ID0gYSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEhhc2hhYmxlXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlID0gc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEhhc2hhYmxlLnQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBwb2x5IDogJ2EgdFxuICB2YWwgb2Zfa2V5IDogKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSkgLT4gJ2EgdFxuICB2YWwgdG9fa2V5IDogJ2EgdCAtPiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKVxuICB2YWwgaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50XG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogQXJnX3dpdGhfY29tcGFyYXRvcikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgYWxsID0gKFsgKCkgXSA6IHQgbGlzdClcbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfdW5pdCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF91bml0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF91bml0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9ICh1bml0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3VuaXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gdW5pdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBjb21wYXJlIF8gXyA9IDBcblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiKClcIiAtPiAoKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkJhc2UuVW5pdC5vZl9zdHJpbmc6ICgpIGV4cGVjdGVkXCJcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Vbml0XCJcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFQpXG5cbmxldCBpbnZhcmlhbnQgKCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXG5cbmxldCBnZXRfcG9zX2xlbiA/cG9zID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIHRyeSBSZXN1bHQuT2sgKGdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aCkgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgcyAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IGEgc2VhcmNoIGZvciB0aGUgZmlyc3QgKHJlc3AuIGxhc3QpIGVsZW1lbnRcbiAgIHNhdGlzZnlpbmcgYSBwcmVkaWNhdGUsIGFzc3VtaW5nIHRoYXQgdGhlIHByZWRpY2F0ZSBpcyBpbmNyZWFzaW5nIG9uXG4gICB0aGUgY29udGFpbmVyLCBtZWFuaW5nIHRoYXQsIGlmIHRoZSBjb250YWluZXIgaXMgW3UxLi4udW5dLCB0aGVyZSBleGlzdHMgYVxuICAgayBzdWNoIHRoYXQgcCh1MSk9Li4uLj1wKHVrKSA9IGZhbHNlIGFuZCBwKHVrKzEpPS4uLi49cCh1bik9IHRydWUuXG4gICBJZiB0aGlzIGsgPSAxIChyZXNwIG4pLCBmaW5kX2xhc3Rfbm90X3NhdGlzZnlpbmcgKHJlc3AgZmluZF9maXJzdF9zYXRpc2Z5aW5nKVxuICAgd2lsbCByZXR1cm4gTm9uZS4gKilcblxubGV0IHJlYyBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICBpZiBsbyA+IGhpXG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHByZWQgKGdldCB0IGxvKVxuICB0aGVuIFNvbWUgbG9cbiAgZWxzZSBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobG8gKyAxKSB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGEgY29udGFpbmVyIFt0XSwgYSBwcmVkaWNhdGUgW3ByZWRdIGFuZCB0d28gaW5kaWNlcyBbbG8gPCBoaV0sIHN1Y2ggdGhhdFxuICAgW3ByZWRdIGlzIGluY3JlYXNpbmcgb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXS5cblxuICAgcmV0dXJuIGEgcmFuZ2UgKGxvLCBoaSkgd2hlcmU6XG4gICAtIGxvIGFuZCBoaSBhcmUgY2xvc2UgZW5vdWdoIHRvZ2V0aGVyIGZvciBhIGxpbmVhciBzZWFyY2hcbiAgIC0gSWYgW3ByZWRdIGlzIG5vdCBjb25zdGFudGx5IFtmYWxzZV0gb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgb24gd2hpY2ggW3ByZWRdIGlzIFt0cnVlXSBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uICopXG4oKiBJbnZhcmlhbnQ6IHRoZSBmaXJzdCBlbGVtZW50IHNhdGlzZnlpbmcgW3ByZWRdLCBpZiBpdCBleGlzdHMgaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldICopXG5sZXQgcmVjIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgKCogV2FybmluZzogdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCB0ZXJtaW5hdGUgaWYgdGhlIGNvbnN0YW50IChjdXJyZW50bHkgOCkgaXNcbiAgICAgc2V0IDw9IDEgKilcbiAgaWYgaGkgLSBsbyA8PSA4XG4gIHRoZW4gbG8sIGhpXG4gIGVsc2UgKFxuICAgIGxldCBtaWQgPSBsbyArICgoaGkgLSBsbykgLyAyKSBpblxuICAgIGlmIHByZWQgKGdldCB0IG1pZClcbiAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQgaXMgYmV0d2VlbiBbbG9dIGFuZCBbbWlkXSAqKVxuICAgIHRoZW5cbiAgICAgIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpOm1pZCB+cHJlZFxuICAgICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50LCBpZiBpdCBleGlzdHMsXG4gICAgICAgICBpcyBiZXR3ZWVuIFttaWQrMV0gYW5kIFtoaV0gKilcbiAgICBlbHNlIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KG1pZCArIDEpIH5oaSB+cHJlZClcbjs7XG5cbmxldCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsbyA9IHBvcyBpblxuICBsZXQgaGkgPSBwb3MgKyBsZW4gLSAxIGluXG4gIGxldCBsbywgaGkgPSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCBpblxuICBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGFuIGFycmF5IHdpdGggc2hhcGUgW3RydWUsLi4udHJ1ZSxmYWxzZSwuLi5mYWxzZV0gKGkuZS4sIHRoZSBfcmV2ZXJzZV8gb2Ygd2hhdFxuICAgaXMgZGVzY3JpYmVkIGFib3ZlKSBhbmQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJ1ZSBvciBOb25lIGlmIHRoZXJlIGFyZSBub1xuICAgdHJ1ZSopXG5sZXQgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfnByZWQgfmdldCB+bGVuZ3RoID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgICgqIFRoZSBsYXN0IHNhdGlzZnlpbmcgaXMgdGhlIG9uZSBqdXN0IGJlZm9yZSB0aGUgZmlyc3Qgbm90IHNhdGlzZnlpbmcgKilcbiAgICBtYXRjaFxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIH5wb3MgfmxlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gbm90IChwcmVkIHgpKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAoKiBUaGlzIG1lYW5zIHRoYXQgYWxsIGVsZW1lbnRzIHNhdGlzZnkgcHJlZC5cbiAgICAgICBUaGVyZSBpcyBhdCBsZWFzdCBhbiBlbGVtZW50IGFzIChsZW4gPiAwKSAqKVxuICAgIHwgU29tZSBpIHdoZW4gaSA9IHBvcyAtPiBOb25lICgqIG5vIGVsZW1lbnQgc2F0aXNmaWVzIHByZWQgKilcbiAgICB8IFNvbWUgaSAtPiBTb21lIChpIC0gMSkpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaFxuICAgICAgP3Bvc1xuICAgICAgP2xlblxuICAgICAgdFxuICAgICAgfmxlbmd0aDooKGxlbmd0aCA6IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICB+Z2V0OigoZ2V0IDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKVxuICAgICAgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKVxuICAgICAgaG93XG4gICAgICB2XG4gID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIFtAbm9udGFpbFxuICAgIF1cbiAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKSBbQG5vbnRhaWxcbiAgICBdXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBpc19sZWZ0IHggPVxuICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgaW5cbiAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9vbl9sZWZ0IC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX2xlZnQgW0Bub250YWlsXVxuICB8IGBGaXJzdF9vbl9yaWdodCAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfcmlnaHQgW0Bub250YWlsXVxuOztcbiIsIigqKiBNb2R1bGUgdHlwZXMgZm9yIGEgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9uIGZvciBhIHNlcXVlbmNlLCBhbmQgZnVuY3RvcnMgZm9yIGJ1aWxkaW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgSW1wb3J0XG5cbigqKiBBbiBbSW5kZXhhYmxlXSB0eXBlIGlzIGEgZmluaXRlIHNlcXVlbmNlIG9mIGVsZW1lbnRzIGluZGV4ZWQgYnkgY29uc2VjdXRpdmUgaW50ZWdlcnNcbiAgICBbMF0gLi4uIFtsZW5ndGggdCAtIDFdLiAgW2dldF0gYW5kIFtsZW5ndGhdIG11c3QgYmUgTygxKSBmb3IgdGhlIHJlc3VsdGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSB0byBiZSBsZyhuKS4gKilcbm1vZHVsZSB0eXBlIEluZGV4YWJsZSA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gZWx0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9XG4gICAgKFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgIDsgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYExhc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICBdXG4gICAgIDogdCBsaXN0KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9vbl9sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9IChbIGBMYXN0X29uX2xlZnQ7IGBGaXJzdF9vbl9yaWdodCBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5lbmRcblxudHlwZSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBjb21wYXJlOigoJ2VsdCAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gIC0+ICdrZXlcbiAgLT4gaW50IG9wdGlvblxuXG50eXBlICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBzZWdtZW50X29mOigoJ2VsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgLT4gaW50IG9wdGlvblxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICh0LCBlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICh0LCBlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhKSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJpbmFyeV9zZWFyY2hhYmxlID0gc2lnXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gSW5kZXhhYmxlXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBJbmRleGFibGUxXG5cbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBXaGljaF90YXJnZXRfYnlfa2V5XG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50XG5cbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID0gKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgd2l0aCB0eXBlIGVsdCA6PSBULmVsdFxuICBtb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIGVsdFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgbGV0IGdldCA9IFQuZ2V0XG4gIGxldCBsZW5ndGggPSBULmxlbmd0aFxuXG4gIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5jb21wYXJlIGhvdyB2XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgdHlwZSAnYSBlbHQgPSBULmVsdFxuICAgIHR5cGUgJ2EgdCA9IFQudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBnZXQgPSBULmdldFxuICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICBlbmQpXG4iLCIoKiBbQnl0ZXMwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5XG4gICBkZWZpbmVkIGluIHRlcm1zIG9mIFtTdGRsaWIuQnl0ZXNdLiBbQnl0ZXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3NcbiAgIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQnl0ZXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGJ5dGVzMC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQnl0ZXNdLiBbQnl0ZXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kXG4gICBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHN0cmluZ3MgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkJ5dGVzXSBpblxuICAgYnVpbGQgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQnl0ZXMgID0gQnl0ZXMwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEJ5dGVzID0gQnl0ZXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkJ5dGVzXS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFByaW1pdGl2ZXMgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogKGJ5dGVzW0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoYnl0ZXNbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGNoYXJcbiAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChjaGFyW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGNoYXJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5cbiAgKCogW3Vuc2FmZV9ibGl0X3N0cmluZ10gaXMgbm90IGV4cG9ydGVkIGluIHRoZSBbc3RkbGliXSBzbyB3ZSBleHBvcnQgaXQgaGVyZSAqKVxuICBleHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICA6ICBzcmM6KHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgICAtPiBzcmNfcG9zOmludFxuICAgIC0+IGRzdDooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDY0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50NjRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludDY0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDMyXG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50MzJcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyXG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludDMyW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDE2XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50XG4gICAgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNlxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZW5kXG5cbmluY2x1ZGUgUHJpbWl0aXZlc1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IGJsaXQgPSBTdGRsaWIuQnl0ZXMuYmxpdFxubGV0IGJsaXRfc3RyaW5nID0gU3RkbGliLkJ5dGVzLmJsaXRfc3RyaW5nXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5CeXRlcy5jb21wYXJlXG5sZXQgY29weSA9IFN0ZGxpYi5CeXRlcy5jb3B5XG5sZXQgY3JlYXRlID0gU3RkbGliLkJ5dGVzLmNyZWF0ZVxuXG5leHRlcm5hbCB1bnNhZmVfY3JlYXRlX2xvY2FsIDogaW50IC0+IChieXRlc1tAbG9jYWxdKSA9IFwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzXCJcbltAQG5vYWxsb2NdXG5cbmxldCBjcmVhdGVfbG9jYWwgbGVuID1cbiAgXG4gICAgKGlmIGxlbiA+IFN5czAubWF4X3N0cmluZ19sZW5ndGggdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNyZWF0ZV9sb2NhbFwiO1xuICAgICB1bnNhZmVfY3JlYXRlX2xvY2FsIGxlbilcbjs7XG5cbmxldCBmaWxsID0gU3RkbGliLkJ5dGVzLmZpbGxcbmxldCBtYWtlID0gU3RkbGliLkJ5dGVzLm1ha2VcblxubGV0IG1hcCB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBpZiBsID0gMFxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgbWFwaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGlmIGwgPSAwXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHQgaSkpXG4gICAgZG9uZTtcbiAgICByKVxuOztcblxubGV0IHN1YiA9IFN0ZGxpYi5CeXRlcy5zdWJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgOiAgc3JjOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gc3JjX3BvczppbnRcbiAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJjYW1sX2JsaXRfYnl0ZXNcIlxuW0BAbm9hbGxvY11cblxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5CeXRlcy50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBTdGRsaWIuQnl0ZXMub2Zfc3RyaW5nXG5cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmdcbiAgOiAgbm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooYnl0ZXNbQGxvY2FsX29wdF0pXG4gIC0+IChzdHJpbmdbQGxvY2FsX29wdF0pXG4gID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211dGF0aW9uXG4gIDogIChzdHJpbmdbQGxvY2FsX29wdF0pXG4gIC0+IChieXRlc1tAbG9jYWxfb3B0XSlcbiAgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTZXF1ZW5jZV9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGxlbmd0aCA6IChfIHRbQGxvY2FsXSkgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuXG4gICAgKFNyYyA6IFNlcXVlbmNlX2dlbikgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIFNyYy50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgU3JjLnQsICdhIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHVuc2FmZV9ibGl0ID0gRHN0LnVuc2FmZV9ibGl0XG5cbiAgbGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6c3JjX3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6ZHN0X3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooRHN0Lmxlbmd0aCBkc3QpO1xuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlblxuICA7O1xuXG4gIGxldCBibGl0b1xuICAgICAgICB+c3JjXG4gICAgICAgID8oc3JjX3BvcyA9IDApXG4gICAgICAgID8oc3JjX2xlbiA9IFNyYy5sZW5ndGggc3JjIC0gc3JjX3BvcylcbiAgICAgICAgfmRzdFxuICAgICAgICA/KGRzdF9wb3MgPSAwKVxuICAgICAgICAoKVxuICAgID1cbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfmxlbjpzcmNfbGVuIH5kc3QgfmRzdF9wb3NcbiAgOztcblxuICAoKiBbc3ViXSBhbmQgW3N1Ym9dIGVuc3VyZSB0aGF0IGV2ZXJ5IHBvc2l0aW9uIG9mIHRoZSBjcmVhdGVkIHNlcXVlbmNlIGlzIHBvcHVsYXRlZCBieVxuICAgICBhbiBlbGVtZW50IG9mIHRoZSBzb3VyY2UgYXJyYXkuICBUaHVzIGV2ZXJ5IGVsZW1lbnQgb2YgW2RzdF0gYmVsb3cgaXMgd2VsbFxuICAgICBkZWZpbmVkLiAqKVxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBsZXQgZHN0ID0gRHN0LmNyZWF0ZV9saWtlIH5sZW4gc3JjIGluXG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICAgIHN1YlxuICAgICAgc3JjXG4gICAgICB+cG9zXG4gICAgICB+bGVuOlxuICAgICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgIHwgTm9uZSAtPiBTcmMubGVuZ3RoIHNyYyAtIHBvcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIGJsaXRcbiAgZW5kKSA9XG4gIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEpID0gTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBTZXF1ZW5jZS50XG5cbiAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9kaXN0aW5jdFxuICAgIChTcmMgOiBTZXF1ZW5jZSkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBTcmMudFxuXG4gICAgICBvcGVuIFNyY1xuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IERzdC50XG5cbiAgICAgIG9wZW4gRHN0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgICBlbmQpXG5cbm1vZHVsZSBNYWtlX3RvX3N0cmluZyAoVCA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmQpXG4gICAgKFRvX2J5dGVzIDogU19kaXN0aW5jdCB3aXRoIHR5cGUgc3JjIDo9IFQudCB3aXRoIHR5cGUgZHN0IDo9IGJ5dGVzKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUb19ieXRlc1xuXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1YiBzcmMgfnBvcyB+bGVuKVxuICA7O1xuXG4gIGxldCBzdWJvID9wb3MgP2xlbiBzcmMgPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWJvID9wb3MgP2xlbiBzcmMpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBFaXRoZXJfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBFaXRoZXIwXG5cbmxldCBzd2FwID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IFNlY29uZCB4XG4gIHwgU2Vjb25kIHggLT4gRmlyc3QgeFxuOztcblxubGV0IGlzX2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IHRydWVcbiAgfCBTZWNvbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NlY29uZCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiBmYWxzZVxuICB8IFNlY29uZCBfIC0+IHRydWVcbjs7XG5cbmxldCB2YWx1ZSAoRmlyc3QgeCB8IFNlY29uZCB4KSA9IHhcblxubGV0IHZhbHVlX21hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBmaXJzdCB4XG4gIHwgU2Vjb25kIHggLT4gc2Vjb25kIHhcbjs7XG5cbmxldCBpdGVyID0gdmFsdWVfbWFwXG5cbmxldCBtYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gRmlyc3QgKGZpcnN0IHgpXG4gIHwgU2Vjb25kIHggLT4gU2Vjb25kIChzZWNvbmQgeClcbjs7XG5cbmxldCBmaXJzdCB4ID0gRmlyc3QgeFxubGV0IHNlY29uZCB4ID0gU2Vjb25kIHhcblxubGV0IGVxdWFsIGVxMSBlcTIgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gZXExIHggeVxuICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBlcTIgeCB5XG4gIHwgRmlyc3QgXywgU2Vjb25kIF8gfCBTZWNvbmQgXywgRmlyc3QgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCBmIHMgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gZiB4XG4gIHwgU2Vjb25kIHkgLT4gcyB5XG47O1xuXG5tb2R1bGUgRm9jdXMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEZvY3VzIG9mIHsgdmFsdWUgOiAnYSBbQGdsb2JhbF0gfVxuICAgIHwgT3RoZXIgb2YgeyB2YWx1ZSA6ICdiIFtAZ2xvYmFsXSB9XG5lbmRcblxubW9kdWxlIE1ha2VfZm9jdXNlZCAoTSA6IHNpZ1xuICAgIHR5cGUgKCsnYSwgKydiKSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgdmFsIG90aGVyIDogJ2IgLT4gKF8sICdiKSB0XG4gICAgdmFsIGZvY3VzIDogKCdhLCAnYikgdCAtPiAoKCdhLCAnYikgRm9jdXMudFtAbG9jYWxdKVxuXG4gICAgdmFsIGNvbWJpbmVcbiAgICAgIDogICgnYSwgJ2QpIHRcbiAgICAgIC0+ICgnYiwgJ2QpIHRcbiAgICAgIC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAgIC0+IG90aGVyOigoJ2QgLT4gJ2QgLT4gJ2QpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2MsICdkKSB0XG5cbiAgICB2YWwgYmluZCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdhIC0+ICgnYywgJ2IpIHQpW0Bsb2NhbF0pIC0+ICgnYywgJ2IpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG4gIG9wZW4gV2l0aF9yZXR1cm5cblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIGxldCByZXMgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IHJldHVybiAoZiB4KSkgaW5cbiAgICByZXNcbiAgOztcblxuICBpbmNsdWRlIE1vbmFkLk1ha2UyX2xvY2FsIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcHAgPSBBcHBsaWNhdGl2ZS5NYWtlMl91c2luZ19tYXAyX2xvY2FsIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gICAgICBsZXQgbWFwMiA6ICgnYSwgJ3gpIHQgLT4gKCdiLCAneCkgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICgnYywgJ3gpIHQgPVxuICAgICAgICBmdW4gdDEgdDIgfmYgLT5cbiAgICAgICAgYmluZCB0MSB+ZjooZnVuIHggLT4gYmluZCB0MiB+ZjooZnVuIHkgLT4gcmV0dXJuIChmIHggeSkpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQXBwXG5cbiAgbGV0IGNvbWJpbmVfYWxsID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2Mgby52YWx1ZSkgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyB4IC0+IHJldHVybl9sb29wIGYgKHgudmFsdWUgOjogYWNjKSB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiBvLnZhbHVlIHRzKVxuICAgIGluXG4gICAgZnVuIHRzIH5mIC0+IHJldHVybl9sb29wIGYgW10gdHNcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGxfdW5pdCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyBfIC0+IG90aGVyX2xvb3AgZiBhY2MgdHNcbiAgICAgICAgIHwgT3RoZXIgbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8udmFsdWUpIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyB7IHZhbHVlID0gKCkgfSAtPiByZXR1cm5fbG9vcCBmIHRzXG4gICAgICAgICB8IE90aGVyIHsgdmFsdWUgPSBvIH0gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiB0c1xuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9XG4gICAgbWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgfCBGb2N1cyB4IC0+IFNvbWUgeC52YWx1ZVxuICAgIHwgT3RoZXIgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgIHwgRm9jdXMgeCAtPiB4LnZhbHVlXG4gICAgfCBPdGhlciBfIC0+IGRlZmF1bHRcbiAgOztcblxuICBsZXQgd2l0aF9yZXR1cm4gZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByZXQgLT4gb3RoZXIgKGYgKFdpdGhfcmV0dXJuLnByZXBlbmQgcmV0IH5mOnJldHVybikpKSBbQG5vbnRhaWxdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpcnN0ID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IHJldHVybiA9IGZpcnN0XG4gICAgbGV0IG90aGVyID0gc2Vjb25kXG5cbiAgICBsZXQgZm9jdXMgdCA6IF8gRm9jdXMudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiBGb2N1cyB7IHZhbHVlID0geCB9XG4gICAgICB8IFNlY29uZCB5IC0+IE90aGVyIHsgdmFsdWUgPSB5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKGYgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChvdGhlciB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBfIHwgXywgU2Vjb25kIHggLT4gU2Vjb25kIHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLiAqKVxuICAgICAgfCBTZWNvbmQgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBTZWNvbmQgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gc2Vjb25kXG4gICAgbGV0IG90aGVyID0gZmlyc3RcblxuICAgIGxldCBmb2N1cyB0IDogXyBGb2N1cy50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBGb2N1cyB7IHZhbHVlID0geCB9XG4gICAgICB8IEZpcnN0IHkgLT4gT3RoZXIgeyB2YWx1ZSA9IHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAoZiB4IHkpXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKG90aGVyIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgXyB8IF8sIEZpcnN0IHggLT4gRmlyc3QgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLCBsaWtlIFtGaXJzdC5iaW5kXSBhYm92ZS4gKilcbiAgICAgIHwgRmlyc3QgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2YsICdzKSBfZWl0aGVyID0gKCdmLCAncykgdCA9XG4gICAgfCBGaXJzdCBvZiAnZlxuICAgIHwgU2Vjb25kIG9mICdzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX29wdGlvblxuXG4gIGxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gICAgZnVuICh0eXBlIGFfXzAwNV8pXG4gICAgICAgIDogKCgoYV9fMDA1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDVfKSAtPiAoYV9fMDA1XyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8gdCkgLT5cbiAgICAgIGdsb2JhbGl6ZV9vcHRpb25cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgaGFzaF9mb2xkX29wdGlvblxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICAgIG9wdGlvbl9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgc2V4cF9vZl9vcHRpb25cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gb3B0aW9uX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgZ2xvYmFsaXplIDogKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdFxuXG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gIHwgTm9uZVxuICB8IFNvbWUgb2YgJ2FcblxubGV0IGlzX25vbmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19zb21lID0gZnVuY3Rpb25cbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB2YWx1ZV9tYXAgbyB+ZGVmYXVsdCB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiBmIHhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbjs7XG5cbmxldCBpdGVyIG8gfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcblxubGV0IGNhbGwgeCB+ZiA9XG4gIG1hdGNoIGYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiB4XG47O1xuXG5sZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgdmFsdWVfZXhuID9oZXJlID9lcnJvciA/bWVzc2FnZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGhlcmUsIGVycm9yLCBtZXNzYWdlIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBFcnJvci5vZl9zdHJpbmcgXCJPcHRpb24udmFsdWVfZXhuIE5vbmVcIlxuICAgICAgfCBOb25lLCBOb25lLCBTb21lIG0gLT4gRXJyb3Iub2Zfc3RyaW5nIG1cbiAgICAgIHwgTm9uZSwgU29tZSBlLCBOb25lIC0+IGVcbiAgICAgIHwgTm9uZSwgU29tZSBlLCBTb21lIG0gLT4gRXJyb3IudGFnIGUgfnRhZzptXG4gICAgICB8IFNvbWUgcCwgTm9uZSwgTm9uZSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgXCJPcHRpb24udmFsdWVfZXhuXCIgcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgTm9uZSwgU29tZSBtIC0+IEVycm9yLmNyZWF0ZSBtIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIFNvbWUgZSwgXyAtPlxuICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAodmFsdWUgbWVzc2FnZSB+ZGVmYXVsdDpcIlwiKVxuICAgICAgICAgIChlLCBwKVxuICAgICAgICAgIChzZXhwX29mX3BhaXIgRXJyb3Iuc2V4cF9vZl90IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QpXG4gICAgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IHZhbHVlX29yX3RodW5rIG8gfmRlZmF1bHQgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gZGVmYXVsdCAoKVxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIHggLT4gW3wgeCB8XVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIHggLT4gWyB4IF1cbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmU6XyA9IHRcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmU6XyA9IHRcblxubGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgdmFsdWVfbWFwIHQgfmRlZmF1bHQ6TS56ZXJvIH5mXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGEnIC0+IGVxdWFsIGEgYSdcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgXyAtPiAxXG47O1xuXG5sZXQgaXNfZW1wdHkgPSBpc19ub25lXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIHggLT4gZiBpbml0IHhcbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBhIC0+IGlmIGYgYSB0aGVuIDEgZWxzZSAwXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IGlmIGYgeCB0aGVuIHQgZWxzZSBOb25lXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBlcXVhbCBmIHQgdCcgPVxuICBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHgnIC0+IGYgeCB4J1xuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzb21lIHggPSBTb21lIHhcblxubGV0IGZpcnN0X3NvbWUgeCB5ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSBfIC0+IHhcbiAgfCBOb25lIC0+IHlcbjs7XG5cbmxldCBzb21lX2lmIGNvbmQgeCA9IGlmIGNvbmQgdGhlbiBTb21lIHggZWxzZSBOb25lXG5cbmxldCBtZXJnZSBhIGIgfmYgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCB4IHwgeCwgTm9uZSAtPiB4XG4gIHwgU29tZSBhLCBTb21lIGIgLT4gU29tZSAoZiBhIGIpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHYgYXMgbyB3aGVuIGYgdiAtPiBvXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4geFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG47O1xuXG5tb2R1bGUgTW9uYWRfYXJnID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gIGxldCByZXR1cm4geCA9IFNvbWUgeFxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICBsZXQgYmluZCBvIH5mID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgTW9uYWQuTWFrZV9sb2NhbCAoTW9uYWRfYXJnKVxuXG5tb2R1bGUgQXBwbGljYXRpdmVfYXJnID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gIGxldCByZXR1cm4geCA9IFNvbWUgeFxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICBsZXQgbWFwMiB4IHkgfmYgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4LCBTb21lIHkgLT4gU29tZSAoZiB4IHkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDJfbG9jYWwgKEFwcGxpY2F0aXZlX2FyZylcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQm9vbDBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYm9vbFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2Jvb2wgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgZmFsc2U7IHRydWUgXSA6IHQgbGlzdClcbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfYm9vbCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9ib29sXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9ib29sIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChib29sX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Jvb2wgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYm9vbF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICAgIHwgcyAtPiBpbnZhbGlkX2FyZ2YgXCJCb29sLm9mX3N0cmluZzogZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZSBidXQgZ290ICVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Jvb2xcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Cb29sXCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IHRvX2ludCB4ID0gYm9vbF90b19pbnQgeFxuXG5tb2R1bGUgTm9uX3Nob3J0X2NpcmN1aXRpbmcgPSBzdHJ1Y3RcbiAgKCogV2UgZG9uJ3QgZXhwb3NlIHRoaXMsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlIGludmFyaWFudCBtZW50aW9uZWQgYmVsb3cgb2ZcbiAgICAgKHRvX2ludCB0cnVlID0gMSkgYW5kICh0b19pbnQgZmFsc2UgPSAwKS4gKilcbiAgbGV0IHVuc2FmZV9vZl9pbnQgKHggOiBpbnQpIDogYm9vbCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuICBsZXQgKCB8fCApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxvciB0b19pbnQgYilcbiAgbGV0ICggJiYgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsYW5kIHRvX2ludCBiKVxuZW5kXG5cbigqIFdlIGRvIHRoaXMgYXMgYSBkaXJlY3QgYXNzZXJ0IG9uIHRoZSB0aGVvcnkgdGhhdCBpdCdzIGEgY2hlYXAgdGhpbmcgdG8gdGVzdCBhbmQgYVxuICAgcmVhbGx5IGNvcmUgaW52YXJpYW50IHRoYXQgd2UgbmV2ZXIgZXhwZWN0IHRvIGJyZWFrLCBhbmQgd2Ugc2hvdWxkIGJlIGhhcHB5IGZvciBhXG4gICBwcm9ncmFtIHRvIGZhaWwgaW1tZWRpYXRlbHkgaWYgdGhpcyBpcyB2aW9sYXRlZC4gKilcbmxldCAoKSA9IGFzc2VydCAoUG9seS4oID0gKSAodG9faW50IHRydWUpIDEgJiYgUG9seS4oID0gKSAodG9faW50IGZhbHNlKSAwKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb250YWluZXJfaW50Zi5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICAoKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2ZcbiAgICAgdGhlIHNlcXVlbmNlICopXG4gIHR5cGUgKCdhLCAncykgdCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mIHsgc3RhdGUgOiAncyB9XG4gICAgfCBZaWVsZCBvZlxuICAgICAgICB7IHZhbHVlIDogJ2FcbiAgICAgICAgOyBzdGF0ZSA6ICdzXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ3MuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ3MpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzAxMV8gc19fMDEyXylcbiAgICAgICAgOiAgKChhX18wMTFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAxMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzAxMV8sIHNfXzAxMl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wMDFfIF9vZl9zX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEb25lXCJcbiAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzdGF0ZV9fMDA0XyB9IC0+XG4gICAgICAgICAgbGV0IGJuZHNfXzAwM18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDA1XyA9IF9vZl9zX18wMDJfIHN0YXRlX18wMDRfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhdGVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJTa2lwXCIgOjogYm5kc19fMDAzXylcbiAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gdmFsdWVfXzAwN187IHN0YXRlID0gc3RhdGVfXzAwOV8gfSAtPlxuICAgICAgICAgIGxldCBibmRzX18wMDZfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBfb2Zfc19fMDAyXyBzdGF0ZV9fMDA5XyBpblxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXRlXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBfb2ZfYV9fMDAxXyB2YWx1ZV9fMDA3XyBpblxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInZhbHVlXCI7IGFyZ19fMDA4XyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiWWllbGRcIiA6OiBibmRzX18wMDZfKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxub3BlbiBTdGVwXG5cbigqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIHNlcXVlbmNlICopXG50eXBlICtfIHQgPVxuICB8IFNlcXVlbmNlIDpcbiAgICAgIHsgc3RhdGUgOiAnc1xuICAgICAgOyBuZXh0IDogJ3MgLT4gKCdhLCAncykgU3RlcC50XG4gICAgICB9XG4gICAgICAtPiAnYSB0XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IG5leHRfc3RlcCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0pID1cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gfVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSB9XG4gIDs7XG5cbiAgbGV0IGRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBsb29wIHMgbmV4dCBmaW5pc2ggZiBhY2MgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBmIGFjYyBOb25lIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGYgYWNjIChTb21lIGEpIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dCBmaW5pc2ggZiBpbml0XG4gIDs7XG5lbmRcblxubGV0IHVuZm9sZF9zdGVwIH5pbml0IH5mID0gU2VxdWVuY2UgeyBzdGF0ZSA9IGluaXQ7IG5leHQgPSBmIH1cblxubGV0IHVuZm9sZCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOihmdW4gcyAtPlxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBOb25lIC0+IFN0ZXAuRG9uZVxuICAgIHwgU29tZSAoYSwgcykgLT4gU3RlcC5ZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0pXG47O1xuXG5sZXQgdW5mb2xkX3dpdGggcyB+aW5pdCB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGluaXQsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoc2VlZCwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gc2VlZCwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBmIHNlZWQgYSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHNlZWQgfSAtPiBTa2lwIHsgc3RhdGUgPSBzZWVkLCBzIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHNlZWQgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzZWVkLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IHVuZm9sZF93aXRoX2FuZF9maW5pc2ggcyB+aW5pdCB+cnVubmluZ19zdGVwIH5pbm5lcl9maW5pc2hlZCB+ZmluaXNoaW5nX3N0ZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgSW5uZXJfcnVubmluZyAoaW5pdCwgcylcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzdGF0ZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICB8IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBpbm5lcl9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9maW5pc2hlZCAoaW5uZXJfZmluaXNoZWQgc3RhdGUpIH1cbiAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IGlubmVyX3N0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGlubmVyX3N0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBydW5uaW5nX3N0ZXAgc3RhdGUgeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSB9IC0+IFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH1cbiAgICAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSB9IC0+XG4gICAgICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0geTsgc3RhdGUgPSBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSB9KSlcbiAgICAgICAgICAgICB8IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGZpbmlzaGluZ19zdGVwIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlIH0gLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX2ZpbmlzaGVkIHN0YXRlIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSB9IC0+XG4gICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0geTsgc3RhdGUgPSBgSW5uZXJfZmluaXNoZWQgc3RhdGUgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6bCB+ZjooZnVuY3Rpb25cbiAgICB8IFtdIC0+IERvbmVcbiAgICB8IHggOjogbCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBsIH0pXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgdiBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+IHZcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgdiBuZXh0IGZcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgKGYgdiBhKSBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgaW5pdCBuZXh0IGZcbjs7XG5cbmxldCB0b19saXN0X3JldiB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbClcblxuXG5sZXQgdG9fbGlzdCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPVxuICBsZXQgc2FmZV90b19saXN0IHQgPSBMaXN0LnJldiAodG9fbGlzdF9yZXYgdCkgaW5cbiAgbGV0IHJlYyB0b19saXN0IHMgbmV4dCBpID1cbiAgICBpZiBpID0gMFxuICAgIHRoZW4gc2FmZV90b19saXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBbXVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gdG9fbGlzdCBzIG5leHQgaVxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gYSA6OiB0b19saXN0IHMgbmV4dCAoaSAtIDEpKVxuICBpblxuICB0b19saXN0IHMgbmV4dCA1MDBcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF92IHN0b3BfdiA9XG4gIGxldCBzdGVwID1cbiAgICBtYXRjaCBzdG9wIHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgICB8IGBpbmNsdXNpdmUgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPCBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gICAgfCBgZXhjbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPj0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICAgIHwgYGV4Y2x1c2l2ZSAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA8PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X3ZcbiAgICB8IGBleGNsdXNpdmUgLT4gc3RhcnRfdiArIHN0cmlkZVxuICBpblxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjpzdGVwXG47O1xuXG5sZXQgb2ZfbGF6eSB0X2xhenkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDp0X2xhenkgfmY6KGZ1biB0X2xhenkgLT5cbiAgICBsZXQgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID0gTGF6eS5mb3JjZSB0X2xhenkgaW5cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFNraXBcbiAgICAgICAgeyBzdGF0ZSA9XG4gICAgICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IGluXG4gICAgICAgICAgICAgbGF6eSB2KVxuICAgICAgICB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFlpZWxkXG4gICAgICAgIHsgdmFsdWUgPSB4XG4gICAgICAgIDsgc3RhdGUgPVxuICAgICAgICAgICAgKGxldCB2ID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSBpblxuICAgICAgICAgICAgIGxhenkgdilcbiAgICAgICAgfSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IHNlZWRcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzZWVkIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBmIGE7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGYgaSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQgfmY6KGZ1biBhY2MgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGFjYyB4IGluXG4gICAgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gYWNjIH0pXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBpIGFjYyB4IGluXG4gICAgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gaSArIDEsIGFjYyB9KVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc2VlZFxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHNlZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIG1hcCB+ZjpzbmQgKGZpbHRlciAobWFwaSB0IH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCAoaSArIDEpIHMgbmV4dFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0ID0gZm9sZCB0IH5pbml0OihbXSwgMCkgfmY6KGZ1biAobCwgaSkgeCAtPiB4IDo6IGwsIGkgKyAxKVxuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIGxldCBsLCBsZW4gPSB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0IGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCB4IDo6IGwgLT5cbiAgICBsZXQgYSA9IEFycmF5LmNyZWF0ZSB+bGVuIHggaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGEuKGkpIDwtIHg7XG4gICAgICAgIGxvb3AgKGkgLSAxKSBsXG4gICAgaW5cbiAgICBsb29wIChsZW4gLSAyKSBsO1xuICAgIGFcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgYSAtPiBTb21lIGFcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGYgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGZcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGYgaSBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gbm90IChmIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIG5vdCAoZiBpIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGkgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiAoKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgZiBhO1xuICAgICAgbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCBfIC0+IGZhbHNlXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgYSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IF8gfSB3aGVuIGVxdWFsIGEgYiAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgYVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGEgW0Bub250YWlsXVxuOztcblxubGV0IGVtcHR5ID0gU2VxdWVuY2UgeyBzdGF0ZSA9ICgpOyBuZXh0ID0gKGZ1biAoKSAtPiBEb25lKSB9XG5cbmxldCBiaW5kIHQgfmYgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9LCByZXN0IC0+XG4gICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgfCBEb25lIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBlbXB0eSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBmIGEsIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gfSkpXG4gICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9LCByZXN0IH1cbiAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0sIHJlc3QgfSkpXG4gICAgfmluaXQ6KGVtcHR5LCB0KVxuOztcblxubGV0IHJldHVybiB4ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6KFNvbWUgeCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IERvbmVcbiAgICB8IFNvbWUgeCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBOb25lIH0pXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZClcblxubGV0IG50aCBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTm9uZVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBpIHMgbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBpIDAgdGhlbiBTb21lIGEgZWxzZSBsb29wIChpIC0gMSkgcyBuZXh0XG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBuIHMgbmV4dClcbjs7XG5cbmxldCBudGhfZXhuIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5udGhcIlxuICBlbHNlIChcbiAgICBtYXRjaCBudGggcyBuIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5udGhcIlxuICAgIHwgU29tZSB4IC0+IHgpXG47O1xuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IExlZnQgb2YgJ2FcbiAgICB8IFJpZ2h0IG9mICdiXG4gICAgfCBCb3RoIG9mICdhICogJ2JcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMTNfIGJfXzAxNF8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAxM18gYl9fMDE0X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDEzXywgYl9fMDE0XyB3aXRoXG4gICAgICB8IExlZnQgX2FfXzAxNV8sIExlZnQgX2JfXzAxNl8gLT4gX2NtcF9fYSBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBMZWZ0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgTGVmdCBfIC0+IDFcbiAgICAgIHwgUmlnaHQgX2FfXzAxN18sIFJpZ2h0IF9iX18wMThfIC0+IF9jbXBfX2IgX2FfXzAxN18gX2JfXzAxOF9cbiAgICAgIHwgUmlnaHQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBSaWdodCBfIC0+IDFcbiAgICAgIHwgQm90aCAoX2FfXzAxOV8sIF9hX18wMjFfKSwgQm90aCAoX2JfXzAyMF8sIF9iX18wMjJfKSAtPlxuICAgICAgICAobWF0Y2ggX2NtcF9fYSBfYV9fMDE5XyBfYl9fMDIwXyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fYiBfYV9fMDIxXyBfYl9fMDIyX1xuICAgICAgICAgfCBuIC0+IG4pKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdFxuICAgIDogdHlwZSBhIGIuXG4gICAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgICAgLT4gKGEsIGIpIHRcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgfCBMZWZ0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgIHwgUmlnaHQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuICAgICAgfCBCb3RoIChfYTAsIF9hMSkgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMiBpblxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgICAgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTFcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDQ2XyBiX18wNDdfKVxuICAgICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wNDZfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzA0N18pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgICAgLT4gKGFfXzA0Nl8sIGJfXzA0N18pIHQpIC0+XG4gICAgICBsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJzZXF1ZW5jZS5tbC5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50XCIgaW5cbiAgICAgIGZ1biBfb2ZfYV9fMDIzXyBfb2ZfYl9fMDI0XyAtPiBmdW5jdGlvblxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIF90YWdfXzAzMF8pIDo6IHNleHBfYXJnc19fMDMxXykgYXNcbiAgICAgICAgICBfc2V4cF9fMDI5XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzMV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDMyXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzM18gPSBfb2ZfYV9fMDIzXyBhcmcwX18wMzJfIGluXG4gICAgICAgICAgICAgTGVmdCByZXMwX18wMzNfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI3X1xuICAgICAgICAgICAgICAgX3RhZ19fMDMwX1xuICAgICAgICAgICAgICAgX3NleHBfXzAyOV8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBfdGFnX18wMzVfKSA6OiBzZXhwX2FyZ3NfXzAzNl8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzNF8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzZfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzN18gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzhfID0gX29mX2JfXzAyNF8gYXJnMF9fMDM3XyBpblxuICAgICAgICAgICAgIFJpZ2h0IHJlczBfXzAzOF9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wMzVfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM0XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBfdGFnX18wNDBfKSA6OiBzZXhwX2FyZ3NfXzA0MV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzOV8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNDFfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzA0Ml87IGFyZzFfXzA0M18gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wNDRfID0gX29mX2FfXzAyM18gYXJnMF9fMDQyX1xuICAgICAgICAgICAgIGFuZCByZXMxX18wNDVfID0gX29mX2JfXzAyNF8gYXJnMV9fMDQzXyBpblxuICAgICAgICAgICAgIEJvdGggKHJlczBfXzA0NF8sIHJlczFfXzA0NV8pXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI3X1xuICAgICAgICAgICAgICAgX3RhZ19fMDQwX1xuICAgICAgICAgICAgICAgX3NleHBfXzAzOV8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgc2V4cF9fMDI4XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICAgICAgIHwgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDU4XyBiX18wNTlfKVxuICAgICAgICA6ICAoKGFfXzA1OF8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDU5XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDU4XywgYl9fMDU5XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzA0OF8gX29mX2JfXzA0OV8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBMZWZ0IGFyZzBfXzA1MF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUxXyA9IF9vZl9hX18wNDhfIGFyZzBfXzA1MF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IHJlczBfXzA1MV8gXVxuICAgICAgICB8IFJpZ2h0IGFyZzBfXzA1Ml8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUzXyA9IF9vZl9iX18wNDlfIGFyZzBfXzA1Ml8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyByZXMwX18wNTNfIF1cbiAgICAgICAgfCBCb3RoIChhcmcwX18wNTRfLCBhcmcxX18wNTVfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTZfID0gX29mX2FfXzA0OF8gYXJnMF9fMDU0X1xuICAgICAgICAgIGFuZCByZXMxX18wNTdfID0gX29mX2JfXzA0OV8gYXJnMV9fMDU1XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIjsgcmVzMF9fMDU2XzsgcmVzMV9fMDU3XyBdXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgICAnYSAnYi5cbiAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkJvdGhcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSlcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KVxuICAgICAgfmNvbXBhcmVcbiAgPVxuICBsZXQgdW5zaGFkb3dlZF9jb21wYXJlID0gY29tcGFyZSBpblxuICBsZXQgb3BlbiBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCBpblxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgICB8IChZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMScgfSBhcyBzMSksIChZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMicgfSBhcyBzMilcbiAgICAgIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IHVuc2hhZG93ZWRfY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPCAwXG4gICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBMZWZ0IGE7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEnIH0sIHMyIH1cbiAgICAgIGVsc2UgaWYgY29tcGFyaXNvbiA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgWWllbGQgeyB2YWx1ZSA9IEJvdGggKGEsIGIpOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxJyB9LCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBSaWdodCBiOyBzdGF0ZSA9IHMxLCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIERvbmUgLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBMZWZ0IGE7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgRG9uZSB9XG4gICAgfCBEb25lLCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gUmlnaHQgYjsgc3RhdGUgPSBEb25lLCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH07IG5leHQgfVxuOztcblxubGV0IG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZCBzMSBzMiB+Y29tcGFyZSA9XG4gIG1hcCAobWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIHMxIHMyIH5jb21wYXJlKSB+ZjooZnVuY3Rpb25cbiAgICB8IExlZnQgeCB8IFJpZ2h0IHggfCBCb3RoICh4LCBfKSAtPiB4KVxuOztcblxubGV0IChtZXJnZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDIxLTA3XSBGb3IgaWRlbnRpY2FsIGJlaGF2aW9yLCB1c2UgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZF0sIGJ1dCBjb25zaWRlciB1c2luZyBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2Vfc29ydGVkXSBpbnN0ZWFkLlwiXSlcbiAgPVxuICBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRcbjs7XG5cbmxldCBtZXJnZV9zb3J0ZWRcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gICAgICB+Y29tcGFyZVxuICA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICAgIHwgKFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxJyB9IGFzIHMxKSwgKFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyJyB9IGFzIHMyKVxuICAgICAgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPD0gMFxuICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMScgfSwgczIgfVxuICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMSwgU2tpcCB7IHN0YXRlID0gczInIH0gfVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBEb25lIC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBEb25lIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IERvbmUsIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgaGQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgaGRfZXhuIHMgPVxuICBtYXRjaCBoZCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiaGRfZXhuXCJcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHRsIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IGEgfSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIChtYXRjaCBsb29wIHMgbmV4dCB3aXRoXG4gICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIHwgU29tZSBzIC0+IFNvbWUgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pKVxuOztcblxubGV0IHRsX2VhZ2VybHlfZXhuIHMgPVxuICBtYXRjaCB0bCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UudGxfZXhuXCJcbiAgfCBTb21lIHMgLT4gc1xuOztcblxubGV0IGxpZnRfaWRlbnRpdHkgbmV4dCBzID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBEb25lIC0+IERvbmVcbiAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYElkZW50aXR5IHMgfVxuICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9XG47O1xuXG5sZXQgbmV4dCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gU29tZSAoYSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSlcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGZpbHRlcl9vcHQgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IE5vbmU7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IFNvbWUgYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IGZpbHRlcl9tYXAgcyB+ZiA9IGZpbHRlcl9vcHQgKG1hcCBzIH5mKVxubGV0IGZpbHRlcl9tYXBpIHMgfmYgPSBmaWx0ZXJfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgc3BsaXRfbiBzIG4gPVxuICBsZXQgcmVjIGxvb3AgcyBpIGFjY3VtIG5leHQgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gTGlzdC5yZXYgYWNjdW0sIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTGlzdC5yZXYgYWNjdW0sIGVtcHR5XG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgaSBhY2N1bSBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgKGkgLSAxKSAoYSA6OiBhY2N1bSkgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbiBbXSBuZXh0XG47O1xuXG5sZXQgY2h1bmtzX2V4biB0IG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmNodW5rc19leG5cIlxuICBlbHNlXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQ6dCB+ZjooZnVuIHQgLT5cbiAgICAgIG1hdGNoIHNwbGl0X24gdCBuIHdpdGhcbiAgICAgIHwgW10sIF9lbXB0eSAtPiBEb25lXG4gICAgICB8IChfIDo6IF8gYXMgeHMpLCB0IC0+IFlpZWxkIHsgdmFsdWUgPSB4czsgc3RhdGUgPSB0IH0pXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgaSBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGkgYSAtPiBTb21lIChpLCBhKVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IChpICsgMSkgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IDAgZlxuOztcblxubGV0IGZpbmRfZXhuIHMgfmYgPVxuICBtYXRjaCBmaW5kIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5maW5kX2V4blwiXG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBtYXRjaCBzMSwgczIgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0sIFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBGaXJzdF9saXN0IHMxXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgRmlyc3RfbGlzdCBzMSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dDEgczEgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9XG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0gLT4gU2tpcCB7IHN0YXRlID0gYEZpcnN0X2xpc3QgczEgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBGaXJzdF9saXN0IHMxIH0pXG4gICAgICAgICAgICB8IGBTZWNvbmRfbGlzdCBzMiAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dDIgczIgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBgU2Vjb25kX2xpc3QgczIgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCBjb25jYXRfbWFwIHMgfmYgPSBiaW5kIHMgfmZcbmxldCBjb25jYXQgcyA9IGNvbmNhdF9tYXAgcyB+ZjpGbi5pZFxubGV0IGNvbmNhdF9tYXBpIHMgfmYgPSBjb25jYXRfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgemlwIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYSwgYjsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgICB8IERvbmUsIF8gfCBfLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgemlwX2Z1bGxcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGBCb3RoIChhLCBiKTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gICAgfCBEb25lLCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYFJpZ2h0IGI7IHN0YXRlID0gRG9uZSwgbmV4dDIgczIgfVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgRG9uZSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGBMZWZ0IGE7IHN0YXRlID0gbmV4dDEgczEsIERvbmUgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgYm91bmRlZF9sZW5ndGggKFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0pIH5hdF9tb3N0ID1cbiAgbGV0IHJlYyBsb29wIGkgc2VlZCBuZXh0ID1cbiAgICBpZiBpID4gYXRfbW9zdFxuICAgIHRoZW4gYEdyZWF0ZXJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICB8IERvbmUgLT4gYElzIGlcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VlZCB9IC0+IGxvb3AgaSBzZWVkIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gc2VlZCB9IC0+IGxvb3AgKGkgKyAxKSBzZWVkIG5leHQpXG4gIGluXG4gIGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCBsZW5ndGhfaXNfYm91bmRlZF9ieSA/KG1pbiA9IC0xKSA/bWF4IHQgPVxuICBsZXQgbGVuZ3RoX2lzX2F0X2xlYXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9XG4gICAgbGV0IHJlYyBsb29wIHMgYWNjID1cbiAgICAgIGlmIGFjYyA+PSBtaW5cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgYWNjXG4gICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoYWNjICsgMSkpXG4gICAgaW5cbiAgICBsb29wIHMgMFxuICBpblxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gbGVuZ3RoX2lzX2F0X2xlYXN0IHRcbiAgfCBTb21lIG1heCAtPlxuICAgIChtYXRjaCBib3VuZGVkX2xlbmd0aCB0IH5hdF9tb3N0Om1heCB3aXRoXG4gICAgIHwgYElzIGxlbiB3aGVuIGxlbiA+PSBtaW4gLT4gdHJ1ZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgaXRlcmkgcyB+ZiA9IGl0ZXIgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpIFtAbm9udGFpbF1cblxubGV0IGZvbGRpIHMgfmluaXQgfmYgPVxuICBmb2xkIH5pbml0IChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gYWNjIChpLCBzKSAtPiBmIGkgYWNjIHMpIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWR1Y2UgcyB+ZiA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYSwgcykgLT4gU29tZSAoZm9sZCBzIH5pbml0OmEgfmYpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBzIH5mID1cbiAgbWF0Y2ggcmVkdWNlIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHJlcyAtPiByZXNcbjs7XG5cbmxldCBncm91cCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmJyZWFrID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDooU29tZSAoW10sIHMpKVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgIHwgU29tZSAoYWNjLCBzKSAtPlxuICAgICAgICAobWF0Y2ggYWNjLCBuZXh0IHMgd2l0aFxuICAgICAgICAgfCBfLCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gU29tZSAoYWNjLCBzKSB9XG4gICAgICAgICB8IFtdLCBEb25lIC0+IERvbmVcbiAgICAgICAgIHwgYWNjLCBEb25lIC0+IFlpZWxkIHsgdmFsdWUgPSBMaXN0LnJldiBhY2M7IHN0YXRlID0gTm9uZSB9XG4gICAgICAgICB8IFtdLCBZaWVsZCB7IHZhbHVlID0gY3VyOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTb21lIChbIGN1ciBdLCBzKSB9XG4gICAgICAgICB8IChwcmV2IDo6IF8gYXMgYWNjKSwgWWllbGQgeyB2YWx1ZSA9IGN1cjsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgaWYgYnJlYWsgcHJldiBjdXJcbiAgICAgICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gTGlzdC5yZXYgYWNjOyBzdGF0ZSA9IFNvbWUgKFsgY3VyIF0sIHMpIH1cbiAgICAgICAgICAgZWxzZSBTa2lwIHsgc3RhdGUgPSBTb21lIChjdXIgOjogYWNjLCBzKSB9KSlcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIGxhc3RfZWx0IHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGxhc3RfZWx0IHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGxhc3RfZWx0IHdpdGhcbiAgICAgICB8IFNvbWUgYiB3aGVuIGVxdWFsIGEgYiAtPiBTb21lIChiLCBhKVxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBsb29wIChTb21lIGEpIHMpXG4gIGluXG4gIGxvb3AgTm9uZSBzIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyBzIH5lcXVhbCA9XG4gIHVuZm9sZF93aXRoIHMgfmluaXQ6Tm9uZSB+ZjooZnVuIHByZXYgYSAtPlxuICAgIG1hdGNoIHByZXYgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNraXAgeyBzdGF0ZSA9IFNvbWUgYSB9XG4gICAgfCBOb25lIHwgU29tZSBfIC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNvbWUgYSB9KVxuOztcblxubGV0IGNvdW50IHMgfmYgPSBmb2xkIHMgfmluaXQ6MCB+ZjooZnVuIGFjYyBlbHQgLT4gYWNjICsgQm9vbC50b19pbnQgKGYgZWx0KSkgW0Bub250YWlsXVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIGFjYyBlbHQgLT4gYWNjICsgQm9vbC50b19pbnQgKGYgaSBlbHQpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGluaXQgbiB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBuIHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBmIGk7IHN0YXRlID0gaSArIDEgfSlcbjs7XG5cbmxldCBzdWIgcyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnN1YlwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSAwLCBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gKGksIHMpIC0+XG4gICAgICAgICAgICAgaWYgaSAtIHBvcyA+PSBsZW5cbiAgICAgICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGkgPj0gcG9zIC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGkgKyAxLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IHRha2UgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS50YWtlXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBpZiBpID49IGxlblxuICAgICAgICAgICAgIHRoZW4gRG9uZVxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IGRyb3AgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS5kcm9wXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBpID49IGxlbiAtPlxuICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGkgKyAxLCBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgdGFrZV93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBfIH0gLT4gRG9uZSlcbiAgICAgIH1cbjs7XG5cbmxldCBkcm9wX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgRHJvcHBpbmcgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYERyb3BwaW5nIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYERyb3BwaW5nIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gU2tpcCB7IHN0YXRlID0gYERyb3BwaW5nIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYElkZW50aXR5IHMgfSlcbiAgICAgICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMpXG4gICAgICB9XG47O1xuXG5sZXQgc2hpZnRfcmlnaHQgcyB4ID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYENvbnNpbmcgKHNlZWQsIHgpXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ29uc2luZyAoc2VlZCwgeCkgLT4gWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gYElkZW50aXR5IHNlZWQgfVxuICAgICAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcylcbiAgICAgIH1cbjs7XG5cbmxldCBzaGlmdF9yaWdodF93aXRoX2xpc3QgcyBsID0gYXBwZW5kIChvZl9saXN0IGwpIHNcbmxldCBzaGlmdF9sZWZ0ID0gZHJvcFxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IGludGVyc3BlcnNlIHMgfnNlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBJbml0IHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBJbml0IHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYEluaXQgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgUnVubmluZyBzIH0pXG4gICAgICAgICAgICB8IGBSdW5uaW5nIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYFJ1bm5pbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gc2VwOyBzdGF0ZSA9IGBQdXR0aW5nIChhLCBzKSB9KVxuICAgICAgICAgICAgfCBgUHV0dGluZyAoYSwgcykgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYFJ1bm5pbmcgcyB9KVxuICAgICAgfVxuOztcblxubGV0IHJlcGVhdCB4ID0gdW5mb2xkX3N0ZXAgfmluaXQ6eCB+ZjooZnVuIHggLT4gWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0geCB9KVxuXG5sZXQgY3ljbGVfbGlzdF9leG4geHMgPVxuICBpZiBMaXN0LmlzX2VtcHR5IHhzIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jeWNsZV9saXN0X2V4blwiO1xuICBsZXQgcyA9IG9mX2xpc3QgeHMgaW5cbiAgY29uY2F0X21hcCB+ZjooZnVuICgpIC0+IHMpIChyZXBlYXQgKCkpXG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3Qgc2Egc2IgPSBjb25jYXRfbWFwIHNhIH5mOihmdW4gYSAtPiB6aXAgKHJlcGVhdCBhKSBzYilcbmxldCBzaW5nbGV0b24geCA9IHJldHVybiB4XG5cbmxldCBkZWxheWVkX2ZvbGQgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmZpbmlzaCB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiBrIGFjY1xuICAgIHwgU29tZSBhIC0+IGYgYWNjIGEgfmspXG47O1xuXG5sZXQgZm9sZF9tIH5iaW5kIH5yZXR1cm4gdCB+aW5pdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdFxuICAgIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gYWNjKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGFjYyBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgaXRlcl9tIH5iaW5kIH5yZXR1cm4gdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdDooKVxuICAgIH5mOihmdW4gKCkgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiAoKSkgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgZm9sZF91bnRpbCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKCdhLCAnYikgQ29udGludWVfb3Jfc3RvcC50KSB3aXRoXG4gICAgICAgfCBTdG9wIHggLT4geFxuICAgICAgIHwgQ29udGludWUgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGYgaW5pdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgcyB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IFJlc3VsdC5yZXR1cm4gYWNjXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKF8sIF8pIFJlc3VsdC50KSB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgIHwgT2sgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvcmNlX2VhZ2VybHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcblxubGV0IG1lbW9pemUgKHR5cGUgYSkgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCBvZiAoYSwgdCkgU3RlcC50IExhenkudFxuICBlbmRcbiAgaW5cbiAgbGV0IHJlYyBtZW1vaXplIHMgPSBNLlQgKGxhenkgKGZpbmRfc3RlcCBzKSlcbiAgYW5kIGZpbmRfc3RlcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gZmluZF9zdGVwIHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBtZW1vaXplIHMgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gbWVtb2l6ZSBzOyBuZXh0ID0gKGZ1biAoTS5UIGwpIC0+IExhenkuZm9yY2UgbCkgfVxuOztcblxubGV0IGRyb3BfZWFnZXJseSBzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpIH5sZW4gcyBuZXh0ID1cbiAgICBpZiBpID49IGxlblxuICAgIHRoZW4gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBlbXB0eVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBpIH5sZW4gcyBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIChpICsgMSkgfmxlbiBzIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCAwIH5sZW4gcyBuZXh0XG47O1xuXG5sZXQgZHJvcF93aGlsZV9vcHRpb24gKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pIH5mID1cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgaWYgZiB4IHRoZW4gbG9vcCBzIGVsc2UgU29tZSAoeCwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSlcbiAgaW5cbiAgbG9vcCBzIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgXyAtPiByLnJldHVybiAxXG4gICAgICB8IGBSaWdodCBfIC0+IHIucmV0dXJuICgtMSlcbiAgICAgIHwgYEJvdGggKHYxLCB2MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2EgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA8PiAwIHRoZW4gci5yZXR1cm4gYyk7XG4gICAgMClcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID1cbiAgZm9yX2FsbCAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgIHwgYEJvdGggKGExLCBhMikgLT4gZXF1YWxfYSBhMSBhMlxuICAgIHwgYExlZnQgXyB8IGBSaWdodCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHJvdW5kX3JvYmluIGxpc3QgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaykgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYgcyB3aXRoXG4gICAgICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgIFlpZWxkXG4gICAgICAgICAgIHsgdmFsdWUgPSB4XG4gICAgICAgICAgIDsgc3RhdGUgPSB0b2RvX3N0YWNrLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiBkb25lX3N0YWNrXG4gICAgICAgICAgIH1cbiAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gOjogdG9kb19zdGFjaywgZG9uZV9zdGFjayB9XG4gICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2sgfSlcbiAgICB8IFtdIC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGRvbmVfc3RhY2sgdGhlbiBEb25lIGVsc2UgU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgZG9uZV9zdGFjaywgW10gfVxuICBpblxuICBsZXQgc3RhdGUgPSBsaXN0LCBbXSBpblxuICBTZXF1ZW5jZSB7IHN0YXRlOyBuZXh0IH1cbjs7XG5cbmxldCBpbnRlcmxlYXZlIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBmMSB9KSA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZjIgczIgd2l0aFxuICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gczIgfSAtPlxuICAgICAgICAgWWllbGRcbiAgICAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgICAgOyBzdGF0ZSA9IHRvZG9fc3RhY2ssIFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IGYyIH0gOjogZG9uZV9zdGFjaywgczFcbiAgICAgICAgICAgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczIgfSAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiBkb25lX3N0YWNrLCBzMSB9XG4gICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxIH0pXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIGYxIHMxLCBkb25lX3N0YWNrIHdpdGhcbiAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB0OyBzdGF0ZSA9IHMxIH0sIF8gLT5cbiAgICAgICAgIFNraXAgeyBzdGF0ZSA9IExpc3QucmV2ICh0IDo6IGRvbmVfc3RhY2spLCBbXSwgczEgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgXyAtPiBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEgfVxuICAgICAgIHwgRG9uZSwgXyA6OiBfIC0+IFNraXAgeyBzdGF0ZSA9IExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSB9XG4gICAgICAgfCBEb25lLCBbXSAtPiBEb25lKVxuICBpblxuICBsZXQgc3RhdGUgPSBbXSwgW10sIHMxIGluXG4gIFNlcXVlbmNlIHsgc3RhdGU7IG5leHQgfVxuOztcblxubGV0IGludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0IHMxIHMyID1cbiAgbWFwIHMxIH5mOihmdW4geDEgLT4gbWFwIHMyIH5mOihmdW4geDIgLT4geDEsIHgyKSkgfD4gaW50ZXJsZWF2ZVxuOztcblxubGV0IG9mX3NlcSAoc2VxIDogXyBTdGRsaWIuU2VxLnQpID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6c2VxIH5mOihmdW4gc2VxIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBEb25lXG4gICAgfCBDb25zIChoZCwgdGwpIC0+IFlpZWxkIHsgdmFsdWUgPSBoZDsgc3RhdGUgPSB0bCB9KVxuOztcblxubGV0IHRvX3NlcSAoU2VxdWVuY2UgeyBzdGF0ZTsgbmV4dCB9KSA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggbmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBEb25lIC0+IFN0ZGxpYi5TZXEuTmlsXG4gICAgfCBTa2lwIHsgc3RhdGUgfSAtPiBsb29wIHN0YXRlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gaGQ7IHN0YXRlIH0gLT4gU3RkbGliLlNlcS5Db25zIChoZCwgZnVuICgpIC0+IGxvb3Agc3RhdGUpXG4gIGluXG4gIGZ1biAoKSAtPiBsb29wIHN0YXRlXG47O1xuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgJ2VsdCBzdGVwcyA9IFdyYXAgb2YgKCdlbHQsIHVuaXQgLT4gJ2VsdCBzdGVwcykgU3RlcC50XG5cbiAgbGV0IHVud3JhcCAoV3JhcCBzdGVwKSA9IHN0ZXBcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZWx0KSB0ID0gKCdhIC0+ICdlbHQgc3RlcHMpIC0+ICdlbHQgc3RlcHNcblxuICAgIGxldCByZXR1cm4geCBrID0gayB4XG5cbiAgICBsZXQgYmluZCBtIH5mIGsgPVxuICAgICAgbSAoZnVuIGEgLT5cbiAgICAgICAgbGV0IG0nID0gZiBhIGluXG4gICAgICAgIG0nIGspXG4gICAgOztcblxuICAgIGxldCBtYXAgbSB+ZiBrID0gbSAoZnVuIGEgLT4gayAoZiBhKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTIgKFQpXG5cbiAgbGV0IHlpZWxkIGUgayA9IFdyYXAgKFlpZWxkIHsgdmFsdWUgPSBlOyBzdGF0ZSA9IGsgfSlcbiAgbGV0IHRvX3N0ZXBzIHQgPSB0IChmdW4gKCkgLT4gV3JhcCBEb25lKVxuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgZGVsYXllZF9mb2xkXG4gICAgICBzZXF1ZW5jZVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gKCkgeCB+ayBmIC0+IFdyYXAgKFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IChmdW4gKCkgLT4gayAoKSBmKSB9KSlcbiAgICAgIH5maW5pc2g6cmV0dXJuXG4gIDs7XG5cbiAgbGV0IHJ1biB0ID1cbiAgICBsZXQgaW5pdCAoKSA9IHRvX3N0ZXBzIHQgaW5cbiAgICBsZXQgZiB0aHVuayA9IHVud3JhcCAodGh1bmsgKCkpIGluXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQgfmZcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlXG5cbm1vZHVsZSBPZl9zZXhwYWJsZVxuICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMVxuICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTJcbiAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUzXG4gICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSAoTSA6IFN0cmluZ2FibGUuUykgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxud2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiU2V4cGFibGUuT2Zfc3RyaW5nYWJsZS50X29mX3NleHAgZXhwZWN0ZWQgYW4gYXRvbSwgYnV0IGdvdCBhIGxpc3RcIlxuICAgICAgICBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IE0udCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBzdHJpbmdfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxudHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9hcnJheVxuXG5sZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDA1XylcbiAgICAgIDogKCgoYV9fMDA1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDVfKSAtPiAoYV9fMDA1XyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8gdCkgLT5cbiAgICBnbG9iYWxpemVfYXJyYXlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBhcnJheV9vZl9zZXhwXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGFycmF5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbmV3IGluLXBsYWNlLCBjb25zdGFudCBoZWFwIHNvcnRpbmcgYWxnb3JpdGhtIHRvIHJlcGxhY2UgdGhlXG4gICBvbmUgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyaWVzLiAgSXRzIG9ubHkgcHVycG9zZSBpcyB0byBiZSBmYXN0ZXIgKGhvcGVmdWxseVxuICAgc3RyaWN0bHkgZmFzdGVyKSB0aGFuIHRoZSBiYXNlIHNvcnQgYW5kIHN0YWJsZV9zb3J0LlxuXG4gICBBdCBhIGhpZ2ggbGV2ZWwgdGhlIGFsZ29yaXRobSBpczpcbiAgIC0gcGljayB0d28gcGl2b3QgcG9pbnRzIGJ5OlxuICAgLSBwaWNrIDUgYXJiaXRyYXJ5IGVsZW1lbnRzIGZyb20gdGhlIGFycmF5XG4gICAtIHNvcnQgdGhlbSB3aXRoaW4gdGhlIGFycmF5XG4gICAtIHRha2UgdGhlIGVsZW1lbnRzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBtaWRkbGUgZWxlbWVudCBvZiB0aGUgc29ydCBhcyB0aGUgcGl2b3RzXG4gICAtIHNvcnQgdGhlIGFycmF5IHdpdGg6XG4gICAtIGFsbCBlbGVtZW50cyBsZXNzIHRoYW4gcGl2b3QxIHRvIHRoZSBsZWZ0IChyYW5nZSAxKVxuICAgLSBhbGwgZWxlbWVudHMgPj0gcGl2b3QxIGFuZCA8PSBwaXZvdDIgaW4gdGhlIG1pZGRsZSAocmFuZ2UgMilcbiAgIC0gYWxsIGVsZW1lbnRzID4gcGl2b3QyIHRvIHRoZSByaWdodCAocmFuZ2UgMylcbiAgIC0gaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIGVxdWFsLCB0aGVuIHRoZSBtaWRkbGUgcmFuZ2UgaXMgc29ydGVkLCBzbyBpZ25vcmUgaXRcbiAgIC0gcmVjdXJzZSBpbnRvIHJhbmdlIDEsIDIgKGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSB1bmVxdWFsKSwgYW5kIDNcbiAgIC0gZHVyaW5nIHJlY3Vyc2lvbiB0aGVyZSBhcmUgdHdvIGluZmxlY3Rpb24gcG9pbnRzOlxuICAgLSBpZiB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCByYW5nZSBpcyBzbWFsbCwgdXNlIGluc2VydGlvbiBzb3J0IHRvIHNvcnQgaXRcbiAgIC0gaWYgdGhlIHN0YWNrIGRlcHRoIGlzIGxhcmdlLCBzb3J0IHRoZSByYW5nZSB3aXRoIGhlYXAtc29ydCB0byBhdm9pZCBuXjIgd29yc3QtY2FzZVxuICAgICBiZWhhdmlvclxuXG4gICBTZWUgdGhlIGZvbGxvd2luZyBmb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAgIC0gXCJEdWFsLVBpdm90IFF1aWNrc29ydFwiIGJ5IFZsYWRpbWlyIFlhcm9zbGF2c2tpeS5cbiAgICAgQXZhaWxhYmxlIGF0XG4gICAgIGh0dHA6Ly93d3cua3JpY2hlLmNvbS5hci9yb290L3Byb2dyYW1taW5nL3NwYWNlVGltZUNvbXBsZXhpdHkvRHVhbFBpdm90UXVpY2tzb3J0LnBkZlxuICAgLSBcIlF1aWNrc29ydCBpcyBPcHRpbWFsXCIgYnkgU2VkZ2V3aWNrIGFuZCBCZW50bGV5LlxuICAgICBTbGlkZXMgYXQgaHR0cDovL3d3dy5jcy5wcmluY2V0b24uZWR1L35ycy90YWxrcy9RdWlja3NvcnRJc09wdGltYWwucGRmXG4gICAtIGh0dHA6Ly93d3cuc29ydGluZy1hbGdvcml0aG1zLmNvbS9xdWljay1zb3J0LTMtd2F5ICopXG5cbm1vZHVsZSBTb3J0ZXIgKFMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICAgIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBzd2FwIGFyciBpIGogPVxuICAgIGxldCB0bXAgPSBnZXQgYXJyIGkgaW5cbiAgICBzZXQgYXJyIGkgKGdldCBhcnIgaik7XG4gICAgc2V0IGFyciBqIHRtcFxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFNvcnQgPSBzaWdcbiAgICB2YWwgc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IGxlZnQ6aW50ICgqIGxlZnRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiByaWdodDppbnQgKCogcmlnaHRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiB1bml0XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zZXJ0aW9uX3NvcnQgKilcbiAgbW9kdWxlIEluc2VydGlvbl9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uIGktMV0gaXMgc29ydGVkXG4gICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uIHBvc10gaXMgc29ydGVkIGFuZCBjb250YWlucyBvbmx5IGVsZW1lbnRzID4gdlxuICAgICAgIDMuICBhcnJbaV0gbWF5IGJlIHRob3VnaHQgb2YgYXMgY29udGFpbmluZyB2XG4gICAgKilcbiAgICBsZXQgcmVjIGluc2VydF9sb29wIGFyciB+bGVmdCB+Y29tcGFyZSBpIHYgPVxuICAgICAgbGV0IGlfbmV4dCA9IGkgLSAxIGluXG4gICAgICBpZiBpX25leHQgPj0gbGVmdCAmJiBjb21wYXJlIChnZXQgYXJyIGlfbmV4dCkgdiA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzZXQgYXJyIGkgKGdldCBhcnIgaV9uZXh0KTtcbiAgICAgICAgaW5zZXJ0X2xvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGlfbmV4dCB2KVxuICAgICAgZWxzZSBpXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgICBbYXJyXSBpcyBzb3J0ZWQgZnJvbSBbbGVmdF0gdG8gW3BvcyAtIDFdLCBpbmNsdXNpdmUgKilcbiAgICAgIGZvciBwb3MgPSBsZWZ0ICsgMSB0byByaWdodCBkb1xuICAgICAgICBsZXQgdiA9IGdldCBhcnIgcG9zIGluXG4gICAgICAgIGxldCBmaW5hbF9wb3MgPSBpbnNlcnRfbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgcG9zIHYgaW5cbiAgICAgICAgc2V0IGFyciBmaW5hbF9wb3MgdlxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVhcHNvcnQgKilcbiAgbW9kdWxlIEhlYXBfc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICByb290J3MgY2hpbGRyZW4gYXJlIGJvdGggZWl0aGVyIHJvb3RzIG9mIG1heC1oZWFwcyBvciA+IHJpZ2h0ICopXG4gICAgbGV0IHJlYyBoZWFwaWZ5IGFyciB+Y29tcGFyZSByb290IH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcmVsYXRpdmVfcm9vdCA9IHJvb3QgLSBsZWZ0IGluXG4gICAgICBsZXQgbGVmdF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMSBpblxuICAgICAgbGV0IHJpZ2h0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAyIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIGxlZnRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciBsZWZ0X2NoaWxkKSAoZ2V0IGFyciByb290KSA+IDBcbiAgICAgICAgdGhlbiBsZWZ0X2NoaWxkXG4gICAgICAgIGVsc2Ugcm9vdFxuICAgICAgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgcmlnaHRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciByaWdodF9jaGlsZCkgKGdldCBhcnIgbGFyZ2VzdCkgPiAwXG4gICAgICAgIHRoZW4gcmlnaHRfY2hpbGRcbiAgICAgICAgZWxzZSBsYXJnZXN0XG4gICAgICBpblxuICAgICAgaWYgbGFyZ2VzdCA8PiByb290XG4gICAgICB0aGVuIChcbiAgICAgICAgc3dhcCBhcnIgcm9vdCBsYXJnZXN0O1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsYXJnZXN0IH5sZWZ0IH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBFbGVtZW50cyBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGFycmF5IGFyZSBhbHJlYWR5IGhlYXBzIG9mIHNpemUgMS4gIFdlIG1vdmVcbiAgICAgICAgIHRocm91Z2ggdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGFycmF5IGZyb20gYmFjayB0byBmcm9udCBleGFtaW5pbmcgdGhlIGVsZW1lbnQgYXRcbiAgICAgICAgIGhhbmQsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgY2hpbGRyZW4sIGZpeGluZyB0aGUgaGVhcCBwcm9wZXJ0eSBhcyB3ZSBnby4gKilcbiAgICAgIGZvciBpID0gKGxlZnQgKyByaWdodCkgLyAyIGRvd250byBsZWZ0IGRvXG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGkgfmxlZnQgfnJpZ2h0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0O1xuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIHRoZSBzdWJhcnJheSBhcnJbbGVmdCAuLi4gaV0gaXMgYSBtYXgtaGVhcCBIXG4gICAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4uIHJpZ2h0XSBpcyBzb3J0ZWQgKGNhbGwgaXQgUylcbiAgICAgICAgIDMuICBldmVyeSBlbGVtZW50IG9mIEggaXMgbGVzcyB0aGFuIGV2ZXJ5IGVsZW1lbnQgb2YgUyAqKVxuICAgICAgZm9yIGkgPSByaWdodCBkb3dudG8gbGVmdCArIDEgZG9cbiAgICAgICAgc3dhcCBhcnIgbGVmdCBpO1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsZWZ0IH5sZWZ0IH5yaWdodDooaSAtIDEpXG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyb3NvcnQgKilcbiAgbW9kdWxlIEludHJvX3NvcnQgOiBzaWdcbiAgICBpbmNsdWRlIFNvcnRcblxuICAgIHZhbCBmaXZlX2VsZW1lbnRfc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSBtMSBtMiBtMyBtNCBtNSA9XG4gICAgICBsZXQgY29tcGFyZV9hbmRfc3dhcCBpIGogPVxuICAgICAgICBpZiBjb21wYXJlIChnZXQgYXJyIGkpIChnZXQgYXJyIGopID4gMCB0aGVuIHN3YXAgYXJyIGkgalxuICAgICAgaW5cbiAgICAgICgqIE9wdGltYWwgNS1lbGVtZW50IHNvcnRpbmcgbmV0d29yazpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIDEtLW8tLS0tLW8tLS0tLW8tLS0tLS0tLS0tLS0tLTFcbiAgICAgICAgICAgICAgIHwgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDItLW8tLS0tLXwtLW8tLXwtLS0tLW8tLW8tLS0tLTJcbiAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHwgICAgIHwgIHxcbiAgICAgICAgICAgIDMtLS0tLS0tLW8tLW8tLXwtLW8tLXwtLW8tLS0tLTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHxcbiAgICAgICAgICAgIDQtLS0tLW8tLS0tLS0tLW8tLW8tLXwtLS0tLW8tLTRcbiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDUtLS0tLW8tLS0tLS0tLS0tLS0tLW8tLS0tLW8tLTVcbiAgICAgICAgICB2fSAqKVxuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMjtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0zIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01IFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgKCogY2hvb3NlIHBpdm90cyBmb3IgdGhlIGFycmF5IGJ5IHNvcnRpbmcgNSBlbGVtZW50cyBhbmQgZXhhbWluaW5nIHRoZSBjZW50ZXIgdGhyZWVcbiAgICAgICBlbGVtZW50cy4gIFRoZSBnb2FsIGlzIHRvIGNob29zZSB0d28gcGl2b3RzIHRoYXQgd2lsbCBlaXRoZXI6XG4gICAgICAgLSBicmVhayB0aGUgcmFuZ2UgdXAgaW50byAzIGV2ZW4gcGFydGl0aW9uc1xuICAgICAgICAgb3JcbiAgICAgICAtIGVsaW1pbmF0ZSBhIGNvbW1vbmx5IGFwcGVhcmluZyBlbGVtZW50IGJ5IHNvcnRpbmcgaXQgaW50byB0aGUgY2VudGVyIHBhcnRpdGlvblxuICAgICAgICAgYnkgaXRzZWxmXG4gICAgICAgICBUbyB0aGlzIGVuZCB3ZSBsb29rIGF0IHRoZSBjZW50ZXIgMyBlbGVtZW50cyBvZiB0aGUgNSBhbmQgcmV0dXJuIHBhaXJzIG9mIGVxdWFsXG4gICAgICAgICBlbGVtZW50cyBvciB0aGUgd2lkZXN0IHJhbmdlICopXG4gICAgbGV0IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlOigoY29tcGFyZSA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBzaXh0aCA9IChyaWdodCAtIGxlZnQpIC8gNiBpblxuICAgICAgbGV0IG0xID0gbGVmdCArIHNpeHRoIGluXG4gICAgICBsZXQgbTIgPSBtMSArIHNpeHRoIGluXG4gICAgICBsZXQgbTMgPSBtMiArIHNpeHRoIGluXG4gICAgICBsZXQgbTQgPSBtMyArIHNpeHRoIGluXG4gICAgICBsZXQgbTUgPSBtNCArIHNpeHRoIGluXG4gICAgICBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTU7XG4gICAgICBsZXQgbTJfdmFsID0gZ2V0IGFyciBtMiBpblxuICAgICAgbGV0IG0zX3ZhbCA9IGdldCBhcnIgbTMgaW5cbiAgICAgIGxldCBtNF92YWwgPSBnZXQgYXJyIG00IGluXG4gICAgICBpZiBjb21wYXJlIG0yX3ZhbCBtM192YWwgPSAwXG4gICAgICB0aGVuIG0yX3ZhbCwgbTNfdmFsLCB0cnVlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgbTNfdmFsIG00X3ZhbCA9IDBcbiAgICAgIHRoZW4gbTNfdmFsLCBtNF92YWwsIHRydWVcbiAgICAgIGVsc2UgbTJfdmFsLCBtNF92YWwsIGZhbHNlXG4gICAgOztcblxuICAgIGxldCBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHBpdm90MSwgcGl2b3QyLCBwaXZvdHNfZXF1YWwgPSBjaG9vc2VfcGl2b3RzIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICBsZWZ0IDw9IGwgPCByIDw9IHJpZ2h0XG4gICAgICAgICAyLiAgbCA8PSBwIDw9IHJcbiAgICAgICAgIDMuICBsIDw9IHggPCBwICAgICBpbXBsaWVzIGFyclt4XSA+PSBwaXZvdDFcbiAgICAgICAgIGFuZCBhcnJbeF0gPD0gcGl2b3QyXG4gICAgICAgICA0LiAgbGVmdCA8PSB4IDwgbCAgaW1wbGllcyBhcnJbeF0gPCBwaXZvdDFcbiAgICAgICAgIDUuICByIDwgeCA8PSByaWdodCBpbXBsaWVzIGFyclt4XSA+IHBpdm90MiAqKVxuICAgICAgbGV0IHJlYyBsb29wIGwgcCByID1cbiAgICAgICAgbGV0IHB2ID0gZ2V0IGFyciBwIGluXG4gICAgICAgIGlmIGNvbXBhcmUgcHYgcGl2b3QxIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzd2FwIGFyciBwIGw7XG4gICAgICAgICAgY29udCAobCArIDEpIChwICsgMSkgcilcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlIHB2IHBpdm90MiA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOiAgc2FtZSBhcyB0aG9zZSBvZiB0aGUgb3V0ZXIgbG9vcCAqKVxuICAgICAgICAgIGxldCByZWMgc2Nhbl9iYWNrd2FyZHMgciA9XG4gICAgICAgICAgICBpZiByID4gcCAmJiBjb21wYXJlIChnZXQgYXJyIHIpIHBpdm90MiA+IDAgdGhlbiBzY2FuX2JhY2t3YXJkcyAociAtIDEpIGVsc2UgclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHIgPSBzY2FuX2JhY2t3YXJkcyByIGluXG4gICAgICAgICAgc3dhcCBhcnIgciBwO1xuICAgICAgICAgIGNvbnQgbCBwIChyIC0gMSkpXG4gICAgICAgIGVsc2UgY29udCBsIChwICsgMSkgclxuICAgICAgYW5kIGNvbnQgbCBwIHIgPSBpZiBwID4gciB0aGVuIGwsIHIgZWxzZSBsb29wIGwgcCByIGluXG4gICAgICBsZXQgbCwgciA9IGNvbnQgbGVmdCBsZWZ0IHJpZ2h0IGluXG4gICAgICBsLCByLCBwaXZvdHNfZXF1YWxcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgbGVuID0gcmlnaHQgLSBsZWZ0ICsgMSBpblxuICAgICAgKCogVGhpcyB0YWtlcyBjYXJlIG9mIHNvbWUgZWRnZSBjYXNlcywgc3VjaCBhcyBsZWZ0ID4gcmlnaHQgb3IgdmVyeSBzaG9ydCBhcnJheXMsXG4gICAgICAgICBzaW5jZSBJbnNlcnRpb25fc29ydC5zb3J0IGhhbmRsZXMgdGhlc2UgY2FzZXMgcHJvcGVybHkuICBUaHVzIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgIG1ha2Ugc3VyZSB0aGF0IGxlZnQgYW5kIHJpZ2h0IGFyZSB2YWxpZCBpbiByZWN1cnNpdmUgY2FsbHMuICopXG4gICAgICBpZiBsZW4gPD0gMzJcbiAgICAgIHRoZW4gSW5zZXJ0aW9uX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIGlmIG1heF9kZXB0aCA8IDBcbiAgICAgIHRoZW4gSGVhcF9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBtYXhfZGVwdGggPSBtYXhfZGVwdGggLSAxIGluXG4gICAgICAgIGxldCBsLCByLCBtaWRkbGVfc29ydGVkID0gZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodDoobCAtIDEpO1xuICAgICAgICBpZiBub3QgbWlkZGxlX3NvcnRlZCB0aGVuIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6bCB+cmlnaHQ6cjtcbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDoociArIDEpIH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgaGVhcF9zb3J0X3N3aXRjaF9kZXB0aCA9XG4gICAgICAgICgqIFdlIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdCBhIHJlY3Vyc2lvbiBkZXB0aCBvZiAzMi4gR05VIGludHJvc29ydCB1c2VzIDJsZyhuKS5cbiAgICAgICAgICAgVGhlIGV4cGVjdGVkIHJlY3Vyc2lvbiBkZXB0aCBmb3IgcGVyZmVjdCAzLXdheSBzcGxpdHMgaXMgbG9nXzMobikuXG5cbiAgICAgICAgICAgVXNpbmcgMzIgbWVhbnMgYSBiYWxhbmNlZCAzLXdheSBzcGxpdCB3b3VsZCB3b3JrIHVwIHRvIDNeMzIgZWxlbWVudHMgKHJvdWdobHlcbiAgICAgICAgICAgMl41MCBvciAxMF4xNSkuIEdOVSByZWFjaGVzIGEgZGVwdGggb2YgMzIgYXQgNjU1MzYgZWxlbWVudHMuXG5cbiAgICAgICAgICAgRm9yIHNtYWxsIGFycmF5cywgdGhpcyBtYWtlcyB1cyBsZXNzIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQsIGJ1dCB0aGVcbiAgICAgICAgICAgMzIqTiBjb3N0IGJlZm9yZSB3ZSBkbyBpcyBub3QgdGhhdCBtdWNoLlxuXG4gICAgICAgICAgIEZvciBsYXJnZSBhcnJheXMsIHRoaXMgbWVhbnMgd2UgYXJlIG1vcmUgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdFxuICAgICAgICAgICBzb21lIHBvaW50IGlmIHdlIGdldCBzb21lIGJhZCBzcGxpdHMgb3IgaWYgdGhlIGFycmF5IGlzIGh1Z2UuIEJ1dCB0aGF0J3Mgb25seSBhXG4gICAgICAgICAgIGNvbnN0YW50IGZhY3RvciBjb3N0IGluIHRoZSBmaW5hbCBzdGFnZXMgb2YgcmVjdXJzaW9uLlxuXG4gICAgICAgICAgIEFsbCBpbiBhbGwsIHRoaXMgc2VlbXMgdG8gYmUgYSBzbWFsbCB0cmFkZW9mZiBhbmQgYXZvaWRzIHBheWluZyBhIGNvc3QgdG9cbiAgICAgICAgICAgY29tcHV0ZSBhIGxvZ2FyaXRobSBhdCB0aGUgc3RhcnQuICopXG4gICAgICAgIDMyXG4gICAgICBpblxuICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aDpoZWFwX3NvcnRfc3dpdGNoX2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzb3J0ID9wb3MgP2xlbiBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggYXJyKVxuICAgIGluXG4gICAgSW50cm9fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdDpwb3MgfnJpZ2h0Oihwb3MgKyBsZW4gLSAxKVxuICA7O1xuZW5kXG5bQEBpbmxpbmVdXG5cbm1vZHVsZSBTb3J0ID0gU29ydGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRcbiAgICBsZXQgc2V0ID0gdW5zYWZlX3NldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgc29ydCA9IFNvcnQuc29ydFxubGV0IG9mX2FycmF5IHQgPSB0XG5sZXQgdG9fYXJyYXkgdCA9IHRcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBpc19zb3J0ZWQgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID4gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPj0gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lcmdlIGExIGEyIH5jb21wYXJlID1cbiAgbGV0IGwxID0gQXJyYXkubGVuZ3RoIGExIGluXG4gIGxldCBsMiA9IEFycmF5Lmxlbmd0aCBhMiBpblxuICBpZiBsMSA9IDBcbiAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbDIgPSAwXG4gIHRoZW4gY29weSBhMVxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTIgMCkgKHVuc2FmZV9nZXQgYTEgKGwxIC0gMSkpID49IDBcbiAgdGhlbiBhcHBlbmQgYTEgYTJcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGExIDApICh1bnNhZmVfZ2V0IGEyIChsMiAtIDEpKSA+IDBcbiAgdGhlbiBhcHBlbmQgYTIgYTFcbiAgZWxzZSAoXG4gICAgbGV0IGxlbiA9IGwxICsgbDIgaW5cbiAgICBsZXQgbWVyZ2VkID0gY3JlYXRlIH5sZW4gKHVuc2FmZV9nZXQgYTEgMCkgaW5cbiAgICBsZXQgYTFfaW5kZXggPSByZWYgMCBpblxuICAgIGxldCBhMl9pbmRleCA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCB1c2VfYTEgPVxuICAgICAgICBpZiBsMSA9ICFhMV9pbmRleFxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgaWYgbDIgPSAhYTJfaW5kZXhcbiAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgIGVsc2UgY29tcGFyZSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCkgPD0gMFxuICAgICAgaW5cbiAgICAgIGlmIHVzZV9hMVxuICAgICAgdGhlbiAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KTtcbiAgICAgICAgYTFfaW5kZXggOj0gIWExX2luZGV4ICsgMSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCk7XG4gICAgICAgIGEyX2luZGV4IDo9ICFhMl9pbmRleCArIDEpXG4gICAgZG9uZTtcbiAgICBtZXJnZWQpXG47O1xuXG5sZXQgY29weV9tYXRyaXggPSBtYXAgfmY6Y29weVxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcCB+ZiB0KSlcbmxldCBjb25jYXRfbWFwaSB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXBpIH5mIHQpKVxuXG5sZXQgcmV2X2lucGxhY2UgdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgd2hpbGUgIWkgPCAhaiBkb1xuICAgIHN3YXAgdCAhaSAhajtcbiAgICBpbmNyIGk7XG4gICAgZGVjciBqXG4gIGRvbmVcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCB0ID0gY29weSB0IGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3JldiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGEgOjogbCAtPlxuICAgIGxldCBsZW4gPSAxICsgTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW4gYSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICAoKiBXZSBzdGFydCBhdCBbbGVuIC0gMl0gYmVjYXVzZSB3ZSBhbHJlYWR5IHB1dCBbYV0gYXQgW3QuKGxlbiAtIDEpXS4gKilcbiAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICB0LihpKSA8LSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHRcbjs7XG5cbigqIFtvZl9saXN0X21hcF0gYW5kIFtvZl9saXN0X3Jldl9tYXBdIGFyZSBiYXNlZCBvbiBmdW5jdGlvbnMgZnJvbSB0aGUgT0NhbWxcbiAgIGRpc3RyaWJ1dGlvbi4gKilcblxubGV0IG9mX2xpc3RfbWFwIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGhkKTtcbiAgICAgICAgZmlsbCAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIDEgdGwgW0Bub250YWlsXVxuOztcblxubGV0IG9mX2xpc3RfbWFwaSB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIDAgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGEgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaSBoZCk7XG4gICAgICAgIGZpbGwgYSAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIGEgMSB0bCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcCB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwaSB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXBpIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHIgPSByZWYgW3x8XSBpblxuICBsZXQgayA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgdCBpKSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGlmICFrID0gMCB0aGVuIHIgOj0gY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBhO1xuICAgICAgdW5zYWZlX3NldCAhciAhayBhO1xuICAgICAgaW5jciBrXG4gIGRvbmU7XG4gIGlmICFrID0gbGVuZ3RoIHQgdGhlbiAhciBlbHNlIGlmICFrID4gMCB0aGVuIHN1YiB+cG9zOjAgfmxlbjohayAhciBlbHNlIFt8fF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gX2kgYSAtPiBmIGEpIFtAbm9udGFpbF1cbmxldCBmaWx0ZXJfb3B0IHQgPSBmaWx0ZXJfbWFwIHQgfmY6Rm4uaWRcblxubGV0IHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yID1cbiAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSB0MSB0MiA9XG4gIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMlxuOztcblxubGV0IGl0ZXIyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuaXRlcjJfZXhuXCIgdDEgdDI7XG4gIGl0ZXJpIHQxIH5mOihmdW4gaSB4MSAtPiBmIHgxICh1bnNhZmVfZ2V0IHQyIGkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lm1hcDJfZXhuXCIgdDEgdDI7XG4gIGluaXQgKGxlbmd0aCB0MSkgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkMl9leG4gdDEgdDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvbGQyX2V4blwiIHQxIHQyO1xuICBmb2xkaSB0MSB+aW5pdCB+ZjooZnVuIGkgYWMgeCAtPiBmIGFjIHggKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxubGV0IGZpbHRlcmkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5cblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICFpICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID0gZXhpc3RzIHQgfmY6KGVxdWFsIGEpIFtAbm9udGFpbF1cblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIChsZW5ndGggLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICFpICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmV4aXN0czJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb3JfYWxsMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGVxdWFsIGVxdWFsIHQxIHQyID0gbGVuZ3RoIHQxID0gbGVuZ3RoIHQyICYmIGZvcl9hbGwyX2V4biB0MSB0MiB+ZjplcXVhbFxuXG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmICh1bnNhZmVfZ2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluZGlfaW50ZXJuYWwgdCB+ZiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gaWZfbm90X2ZvdW5kICgpXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlIChub3QgIWZvdW5kKSAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBmICFpIHZhbHVlXG4gICAgICB0aGVuIChcbiAgICAgICAgdmFsdWVfZm91bmQgOj0gdmFsdWU7XG4gICAgICAgIGZvdW5kIDo9IHRydWUpXG4gICAgICBlbHNlIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgIWZvdW5kIHRoZW4gaWZfZm91bmQgfmk6IWkgfnZhbHVlOiF2YWx1ZV9mb3VuZCBlbHNlIGlmX25vdF9mb3VuZCAoKSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gU29tZSAoaSwgdmFsdWUpKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiBOb25lKVxuOztcblxubGV0IGZpbmRpX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gaSwgdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmY6KGZ1biBfaSB4IC0+IGYgeClcbiAgICB+aWZfZm91bmQ6KGZ1biB+aTpfIH52YWx1ZSAtPiB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9leG46IG5vdCBmb3VuZFwiKSkpXG4gIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIHQgfmYgPSBPcHRpb24ubWFwIChmaW5kaSB0IH5mOihmdW4gX2kgeCAtPiBmIHgpKSB+ZjooZnVuIChfaSwgeCkgLT4geClcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgIWkgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA8PSAxXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgaSA9IHJlZiAxIGluXG4gICAgbGV0IHByZXYgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGN1ciA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZXF1YWwgY3VyICFwcmV2XG4gICAgICB0aGVuIChcbiAgICAgICAgcmVzdWx0IDo9IFNvbWUgKCFwcmV2LCBjdXIpO1xuICAgICAgICBpIDo9IG4pXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJldiA6PSBjdXI7XG4gICAgICAgIGluY3IgaSlcbiAgICBkb25lO1xuICAgICFyZXN1bHQpXG47O1xuXG5sZXQgcmVkdWNlIHQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICAgIGRvbmU7XG4gICAgU29tZSAhcilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHQgfmYgPVxuICBtYXRjaCByZWR1Y2UgdCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcGVybXV0ZSA9IEFycmF5X3Blcm11dGUucGVybXV0ZVxuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGFycmF5XCJcbiAgZWxzZSB0LihSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIHQpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHppcCB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDIgdGhlbiBOb25lIGVsc2UgU29tZSAobWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpKVxuOztcblxubGV0IHppcF9leG4gdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyXG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS56aXBfZXhuXCJcbiAgZWxzZSBtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4Milcbjs7XG5cbmxldCB1bnppcCB0ID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuID0gMFxuICB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHgsIHkgPSB0LigwKSBpblxuICAgIGxldCByZXMxID0gY3JlYXRlIH5sZW46biB4IGluXG4gICAgbGV0IHJlczIgPSBjcmVhdGUgfmxlbjpuIHkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCB4LCB5ID0gdC4oaSkgaW5cbiAgICAgIHJlczEuKGkpIDwtIHg7XG4gICAgICByZXMyLihpKSA8LSB5XG4gICAgZG9uZTtcbiAgICByZXMxLCByZXMyKVxuOztcblxubGV0IHNvcnRlZF9jb3B5IHQgfmNvbXBhcmUgPVxuICBsZXQgdDEgPSBjb3B5IHQgaW5cbiAgc29ydCB0MSB+Y29tcGFyZTtcbiAgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IChib3RoIDogXyBFaXRoZXIudCB0KSA9IG1hcGkgdCB+ZiBpblxuICBsZXQgZmlyc3RzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IHggLT4gU29tZSB4XG4gICAgICB8IFNlY29uZCBfIC0+IE5vbmUpXG4gIGluXG4gIGxldCBzZWNvbmRzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IF8gLT4gTm9uZVxuICAgICAgfCBTZWNvbmQgeCAtPiBTb21lIHgpXG4gIGluXG4gIGZpcnN0cywgc2Vjb25kc1xuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gXyB4IC0+IGYgeCkgW0Bub250YWlsXVxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gXyB4IC0+IGYgeCkgW0Bub250YWlsXVxubGV0IGxhc3QgdCA9IHQuKGxlbmd0aCB0IC0gMSlcblxuKCogQ29udmVydCB0byBhIHNlcXVlbmNlIGJ1dCBkb2VzIG5vdCBhdHRlbXB0IHRvIHByb3RlY3QgYWdhaW5zdCBtb2RpZmljYXRpb25cbiAgIGluIHRoZSBhcnJheS4gKilcbmxldCB0b19zZXF1ZW5jZV9tdXRhYmxlIHQgPVxuICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPlxuICAgIGlmIGkgPj0gbGVuZ3RoIHRcbiAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gdC4oaSk7IHN0YXRlID0gaSArIDEgfSlcbjs7XG5cbmxldCB0b19zZXF1ZW5jZSB0ID0gdG9fc2VxdWVuY2VfbXV0YWJsZSAoY29weSB0KVxuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgdDEgdDIgPVxuICBpZiBpc19lbXB0eSB0MSB8fCBpc19lbXB0eSB0MlxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbjoobjEgKiBuMikgKHQxLigwKSwgdDIuKDApKSBpblxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBmb3IgaTEgPSAwIHRvIG4xIC0gMSBkb1xuICAgICAgZm9yIGkyID0gMCB0byBuMiAtIDEgZG9cbiAgICAgICAgdC4oIXIpIDwtIHQxLihpMSksIHQyLihpMik7XG4gICAgICAgIGluY3IgclxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCB0cmFuc3Bvc2UgdHQgPVxuICBpZiBsZW5ndGggdHQgPSAwXG4gIHRoZW4gU29tZSBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB3aWR0aCA9IGxlbmd0aCB0dCBpblxuICAgIGxldCBkZXB0aCA9IGxlbmd0aCB0dC4oMCkgaW5cbiAgICBpZiBleGlzdHMgdHQgfmY6KGZ1biB0IC0+IGxlbmd0aCB0IDw+IGRlcHRoKVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoaW5pdCBkZXB0aCB+ZjooZnVuIGQgLT4gaW5pdCB3aWR0aCB+ZjooZnVuIHcgLT4gdHQuKHcpLihkKSkpKSlcbjs7XG5cbmxldCB0cmFuc3Bvc2VfZXhuIHR0ID1cbiAgbWF0Y2ggdHJhbnNwb3NlIHR0IHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkudHJhbnNwb3NlX2V4blwiXG4gIHwgU29tZSB0dCcgLT4gdHQnXG47O1xuXG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gW3x8XVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gdC4oMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ID0gU29ydFxuICBtb2R1bGUgU29ydGVyID0gU29ydGVyXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXQgYWxsIHZhbHVlcyBvZiB0eXBlIFt0XSBkbyBub3QgaGF2ZSB0aGUgdGFnXG4gICBbZG91YmxlX2FycmF5X3RhZ10uICBTb21lIGZ1bmN0aW9ucyBiZWxvdyBhc3N1bWUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0ZXN0aW5nIHRoZVxuICAgdGFnLCBhbmQgd2lsbCBzZWdmYXVsdCBpZiB0aGlzIHByb3BlcnR5IGRvZXNuJ3QgaG9sZC4gKilcbnR5cGUgdCA9IFN0ZGxpYi5PYmoudCBhcnJheVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKFN0ZGxpYi5PYmoudGFnIChTdGRsaWIuT2JqLnJlcHIgdCkgPD4gU3RkbGliLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuOztcblxubGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCAoKiB3b3VsZCBjaGVjayBmb3IgZmxvYXQgYXJyYXlzIGluIDMyIGJpdCwgYnV0IHdoYXRldmVyICopXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIFNleHAuQXRvbVxuICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIFwiPE9ial9hcnJheS50IG9mIGxlbmd0aCBcIjsgSW50LnRvX3N0cmluZyAobGVuZ3RoIHQpOyBcIj5cIiBdKVxuOztcblxubGV0IHplcm9fb2JqID0gU3RkbGliLk9iai5yZXByICgwIDogaW50KVxuXG4oKiBXZSBjYWxsIFtBcnJheS5jcmVhdGVdIHdpdGggYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIGZsb2F0IHNvIHRoYXQgdGhlIGFycmF5IGRvZXNuJ3QgZ2V0XG4gICB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG5sZXQgY3JlYXRlX3plcm8gfmxlbiA9IEFycmF5LmNyZWF0ZSB+bGVuIHplcm9fb2JqXG5sZXQgZW1wdHkgPSBbfHxdXG5cbnR5cGUgbm90X2FfZmxvYXQgPVxuICB8IE5vdF9hX2Zsb2F0XzBcbiAgfCBOb3RfYV9mbG9hdF8xIG9mIGludFxuXG5sZXQgX25vdF9hX2Zsb2F0XzAgPSBOb3RfYV9mbG9hdF8wXG5sZXQgX25vdF9hX2Zsb2F0XzEgPSBOb3RfYV9mbG9hdF8xIDQyXG5cbmxldCBnZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICBJdCBpcyBOT1Qgb2sgdG8gdXNlIFtpbnQgYXJyYXldIHNpbmNlIChpZlxuICAgICB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgYW5kIHRoZSBhcnJheSBjb250YWlucyBpbi1oZWFwIGJveGVkIHZhbHVlcykgd3JvbmcgcmVnaXN0ZXJcbiAgICAgdHlwaW5nIG1heSByZXN1bHQsIGxlYWRpbmcgdG8gYSBmYWlsdXJlIHRvIHJlZ2lzdGVyIG5lY2Vzc2FyeSBHQyByb290cy4gKilcbiAgU3RkbGliLk9iai5yZXByXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGlzIHJlcXVpcmVkIG9uIHRoZSBhcnJheSBiZWNhdXNlIHRoaXMgY29kZSBicmVha3MgdGhlIHVzdWFsXG4gICAgICAgYXNzdW1wdGlvbnMgYWJvdXQgYXJyYXkga2luZHMgdGhhdCB0aGUgRmxhbWJkYSAyIG9wdGltaXNlciBjYW4gc2VlLiAqKVxuICAgICgoU3lzLm9wYXF1ZV9pZGVudGl0eSAoU3RkbGliLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpKS4oaSlcbiAgICAgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX2dldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbiAgU3RkbGliLk9iai5yZXByXG4gICAgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpXG4gICAgICAgaVxuICAgICA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIFNhbWUgY29tbWVudCBhcyBbdW5zYWZlX2dldF0uIFN5cy5vcGFxdWVfaWRlbnRpdHkgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb21cbiAgICAgcG90ZW50aWFsbHkgd3JvbmdseSBndWVzc2luZyB0aGUgdHlwZSBvZiB0aGUgYXJyYXkgYmFzZWQgb24gdGhlIHR5cGUgb2YgZWxlbWVudCwgdGhhdFxuICAgICBpcyBwcmV2ZW50IHRoZSBpbXBsaWNhdGlvbjogKE9iai50YWcgb2JqID0gT2JqLmRvdWJsZV90YWcpID0+IChPYmoudGFnIHQgPVxuICAgICBPYmouZG91YmxlX2FycmF5X3RhZykgd2hpY2ggZmxhbWJkYSBoYXMgdHJpZWQgaW4gdGhlIHBhc3QgKGF0IGxlYXN0IHRoYXQncyBhc3N1bWluZ1xuICAgICB0aGUgY29tcGlsZXIgcmVzcGVjdHMgU3lzLm9wYXF1ZV9pZGVudGl0eSwgd2hpY2ggaXMgbm90IGFsd2F5cyB0aGUgY2FzZSkuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpXG4gICAgaVxuICAgIChTdGRsaWIuT2JqLm9iaiAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvYmopIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmogPVxuICAoKiBzYW1lIGFzIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSBidXQgc2FmZSAqKVxuICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoU3RkbGliLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpKS4oaSlcbiAgPC0gKFN0ZGxpYi5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50ID1cbiAgKCogVGhpcyBza2lwcyBbY2FtbF9tb2RpZnldLCB3aGljaCBpcyBPSyBpZiBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIGludGVnZXJzLiAqKVxuICBBcnJheS51bnNhZmVfc2V0XG4gICAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKE9ial9sb2NhbC5tYWdpYyAodCA6IHQpIDogaW50IGFycmF5KSlcbiAgICBpXG4gICAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgaW50KVxuOztcblxuKCogRm9yIFtzZXRdIGFuZCBbdW5zYWZlX3NldF0sIGlmIGEgcG9pbnRlciBpcyBpbnZvbHZlZCwgd2UgZmlyc3QgZG8gYSBwaHlzaWNhbC1lcXVhbGl0eVxuICAgdGVzdCB0byBzZWUgaWYgdGhlIHBvaW50ZXIgaXMgY2hhbmdpbmcuICBJZiBub3QsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhlIFtzZXRdLCB3aGljaFxuICAgc2F2ZXMgYSBjYWxsIHRvIFtjYW1sX21vZGlmeV0uICBXZSB0aGluayB0aGlzIHBoeXNpY2FsLWVxdWFsaXR5IHRlc3QgaXMgd29ydGggaXRcbiAgIGJlY2F1c2UgaXQgaXMgdmVyeSBjaGVhcCAoYm90aCB2YWx1ZXMgYXJlIGFscmVhZHkgYXZhaWxhYmxlIGZyb20gdGhlIFtpc19pbnRdIHRlc3QpXG4gICBhbmQgYmVjYXVzZSBbY2FtbF9tb2RpZnldIGlzIGV4cGVuc2l2ZS4gKilcblxubGV0IHNldCB0IGkgb2JqID1cbiAgKCogV2UgdXNlIFtnZXRdIGZpcnN0IGJ1dCB0aGVuIHdlIHVzZSBbQXJyYXkudW5zYWZlX3NldF0gc2luY2Ugd2Uga25vdyB0aGF0IFtpXSBpc1xuICAgICB2YWxpZC4gKilcbiAgbGV0IG9sZF9vYmogPSBnZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldCB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqICYmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHN3YXAgdCBpIGogPVxuICBsZXQgYSA9IGdldCB0IGkgaW5cbiAgbGV0IGIgPSBnZXQgdCBqIGluXG4gIHVuc2FmZV9zZXQgdCBpIGI7XG4gIHVuc2FmZV9zZXQgdCBqIGFcbjs7XG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgKCogSWYgd2UgY2FuLCB1c2UgW0FycmF5LmNyZWF0ZV0gZGlyZWN0bHkuIEV2ZW4gdGhvdWdoIFtpc19pbnRdIGNoZWNrIGlzIHN1YnN1bWVkIGJ5XG4gICAgIHRoZSB0YWcgY2hlY2ssIGNoZWNraW5nIGl0IGlzIG11Y2ggZmFzdGVyLCBzaW5jZSBpdCBhdm9pZHMgYSBDIGZ1bmN0aW9uIGNhbGwuICAqKVxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCB4IHx8IFN0ZGxpYi5PYmoudGFnIHggPD4gU3RkbGliLk9iai5kb3VibGVfdGFnXG4gIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4geFxuICBlbHNlIChcbiAgICAoKiBPdGhlcndpc2UgdXNlIFtjcmVhdGVfemVyb10gYW5kIHNldCB0aGUgY29udGVudHMgKilcbiAgICBsZXQgdCA9IGNyZWF0ZV96ZXJvIH5sZW4gaW5cbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHhcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIG9iaiA9IGNyZWF0ZSB+bGVuOjEgb2JqXG5cbigqIFByZS1jb25kaXRpb246IHQuKGkpIGlzIGFuIGludGVnZXIuICopXG5sZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBvYmogPVxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlXG4gICAgKCogW3QuKGkpXSBpcyBhbiBpbnRlZ2VyIGFuZCBbb2JqXSBpcyBub3QsIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgYXJlXG4gICAgICAgZXF1YWwuICopXG4gICAgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludCB0IGkgaW50ID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50XG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIGludClcbjs7XG5cbmxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IGkgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIG5vdCAoU3RkbGliLk9iai5pc19pbnQgb2xkX29iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgMClcbjs7XG5cbigqKiBbdW5zYWZlX2JsaXRdIGlzIGxpa2UgW0FycmF5LmJsaXRdLCBleGNlcHQgaXQgdXNlcyBvdXIgb3duIGZvci1sb29wIHRvIGF2b2lkXG4gICAgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZS4gIEl0cyBwZXJmb3JtYW5jZSBpcyBzdGlsbCBub3QgY29tcGFyYWJsZSB0byBhIG1lbWNweS4gKilcbmxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICgqIFdoZW4gW3BoeXNfZXF1YWwgc3JjIGRzdF0sIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciBbZHN0X3BvcyA8IHNyY19wb3NdIGFuZCBoYXZlIHRoZVxuICAgICBmb3IgbG9vcCBnbyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3Qgb3ZlcndyaXRlIGRhdGEgdGhhdCB3ZSBzdGlsbCBuZWVkXG4gICAgIHRvIHJlYWQuICBXaGVuIFtub3QgKHBoeXNfZXF1YWwgc3JjIGRzdCldLCBkb2luZyB0aGlzIGlzIGhhcm1sZXNzLiAgRnJvbSBhXG4gICAgIG1lbW9yeS1wZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciBvbmUgbG9vcHMgdXAgb3IgZG93bi5cbiAgICAgQ29uc3RhbnQtc3RyaWRlIGFjY2VzcywgZm9yd2FyZCBvciBiYWNrd2FyZCwgc2hvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIChhdCBsZWFzdCBvblxuICAgICBhbiBpbnRlbCBpNykuICBTbywgd2UgZG9uJ3QgZG8gYSBjaGVjayBmb3IgW3BoeXNfZXF1YWwgc3JjIGRzdF0gYW5kIGFsd2F5cyBsb29wIHVwIGluXG4gICAgIHRoYXQgY2FzZS4gKilcbiAgaWYgZHN0X3BvcyA8IHNyY19wb3NcbiAgdGhlblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG47O1xuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVfemVyb1xuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGVfemVybyB+bGVuOihsZW5ndGggc3JjKSBpblxuICBibGl0byB+c3JjIH5kc3QgKCk7XG4gIGRzdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBXQVJOSU5HOlxuICAgV2UgdXNlIG5vbi1tZW1vcnktc2FmZSB0aGluZ3MgdGhyb3VnaG91dCB0aGUgW1RydXN0ZWRdIG1vZHVsZS5cbiAgIE1vc3Qgb2YgaXQgaXMgb25seSBzYWZlIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgc2lnbmF0dXJlIChlLmcuIGV4cG9zaW5nXG4gICBbdmFsIGNvcHkgOiAnYSB0IC0+ICdiIHRdIHdvdWxkIGJlIGEgYmlnIG1pc3Rha2UpLiAqKVxubW9kdWxlIFRydXN0ZWQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfb2JqX2FycmF5IDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzd2FwIDogXyB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX2dldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCB1bnNhZmVfc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbGVuZ3RoIDogKCdhIHRbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBCbGl0LmJsaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIDogXyB0IC0+IGludCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gT2JqX2FycmF5LnRcblxuICBsZXQgZW1wdHkgPSBPYmpfYXJyYXkuZW1wdHlcbiAgbGV0IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZV9vYmpfYXJyYXkgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGUgfmxlbiB4ID0gT2JqX2FycmF5LmNyZWF0ZSB+bGVuIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHNpbmdsZXRvbiB4ID0gT2JqX2FycmF5LnNpbmdsZXRvbiAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCBzd2FwIHQgaSBqID0gT2JqX2FycmF5LnN3YXAgdCBpIGpcbiAgbGV0IGdldCBhcnIgaSA9IFN0ZGxpYi5PYmoub2JqIChPYmpfYXJyYXkuZ2V0IGFyciBpKVxuICBsZXQgc2V0IGFyciBpIHggPSBPYmpfYXJyYXkuc2V0IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9nZXQgYXJyIGkgPSBTdGRsaWIuT2JqLm9iaiAoT2JqX2FycmF5LnVuc2FmZV9nZXQgYXJyIGkpXG4gIGxldCB1bnNhZmVfc2V0IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldCBhcnIgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfc2V0X2ludCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50IGFyciBpIHhcblxuICBsZXQgdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gT2JqX2FycmF5Lmxlbmd0aFxuICBsZXQgdW5zYWZlX2JsaXQgPSBPYmpfYXJyYXkudW5zYWZlX2JsaXRcbiAgbGV0IGNvcHkgPSBPYmpfYXJyYXkuY29weVxuXG4gIGxldCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9IE9ial9hcnJheS5zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgPSBPYmpfYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXJcbmVuZFxuXG5pbmNsdWRlIFRydXN0ZWRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChTdGRsaWIuT2JqLnRhZyAoU3RkbGliLk9iai5yZXByIHQpIDw+IFN0ZGxpYi5PYmouZG91YmxlX2FycmF5X3RhZylcbjs7XG5cbmxldCBpbml0IGwgfmYgPVxuICBpZiBsIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiVW5pZm9ybV9hcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOmwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBvZl9hcnJheSBhcnIgPSBpbml0IH5mOihBcnJheS51bnNhZmVfZ2V0IGFycikgKEFycmF5Lmxlbmd0aCBhcnIpIFtAbm9udGFpbF1cbmxldCBtYXAgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKSBbQG5vbnRhaWxdXG5sZXQgbWFwaSBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiBpICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSkgW0Bub250YWlsXVxuXG5sZXQgaXRlciBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgZm9sZGkgYSB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCB+ZjooZ2V0IHQpIChsZW5ndGggdClcblxubGV0IG9mX2xpc3QgbCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIHggLT4gc2V0IHJlcyBpIHgpO1xuICByZXNcbjs7XG5cbigqIEl0IGlzIG5vdCBzYWZlIGZvciBbdG9fYXJyYXldIHRvIGJlIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBiZWNhdXNlIHdlIGhhdmUgY29kZSB0aGF0XG4gICByZWxpZXMgb24gW2Zsb2F0IGFycmF5XXMgYmVpbmcgdW5ib3hlZCwgZm9yIGV4YW1wbGUgaW4gW2Jpbl93cml0ZV9hcnJheV0uICopXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gZmFsc2UgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IH5mIChpIC0gMSlcbiAgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9IGlmIGkgPCAwIHRoZW4gdHJ1ZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSAmJiBsb29wIHQgfmYgKGkgLSAxKSBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGxldCBsZW4gPSBsZW5ndGggdDEgaW5cbiAgaWYgbGVuZ3RoIHQyIDw+IGxlbiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMl9leG5cIjtcbiAgaW5pdCBsZW4gfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChncmFtbWFyIDogZWx0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGVsdCB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmluY2x1ZGVcbiAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgKEFycmF5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIGVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiAoZ2V0IHQgMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgcHB4X2NvbXBhcmUgW2NvbXBhcmVfYXJyYXldIGJ1dCB1c2VzIG91ciBbdW5zYWZlX2dldF0gYW5kIFtsZW5ndGhdLiAqKVxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgYSBiID1cbiAgaWYgcGh5c19lcXVhbCBhIGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgIGlmIHJldCA8PiAwXG4gICAgdGhlbiByZXRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IGxlbl9hXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbCA9IHVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgYW5kIHIgPSB1bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCBsIHIgaW5cbiAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIDApKVxuOztcblxubW9kdWxlIFNvcnQgPSBBcnJheS5Qcml2YXRlLlNvcnRlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldFxuICAgIGxldCBzZXQgPSB1bnNhZmVfc2V0XG4gIGVuZClcblxubGV0IHNvcnQgPSBTb3J0LnNvcnRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGNlaWwgPSBTdGRsaWIuY2VpbFxubGV0IGZsb29yID0gU3RkbGliLmZsb29yXG5sZXQgbW9kX2Zsb2F0ID0gU3RkbGliLm1vZF9mbG9hdFxubGV0IG1vZGYgPSBTdGRsaWIubW9kZlxubGV0IGZsb2F0X29mX3N0cmluZyA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdcbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbWF4X2Zpbml0ZV92YWx1ZSA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmxldCBjbGFzc2lmeV9mbG9hdCA9IFN0ZGxpYi5jbGFzc2lmeV9mbG9hdFxubGV0IGFic19mbG9hdCA9IFN0ZGxpYi5hYnNfZmxvYXRcbmxldCBpc19pbnRlZ2VyID0gU3RkbGliLkZsb2F0LmlzX2ludGVnZXJcbmxldCAoICoqICkgPSBTdGRsaWIuKCAqKiApXG5cbmxldCAoICUuICkgYSBiID1cbiAgKCogUmFpc2UgaW4gY2FzZSBvZiBhIG5lZ2F0aXZlIG1vZHVsdXMsIGFzIGRvZXMgSW50LiggJSApLiAqKVxuICBpZiBiIDwgMC5cbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiJWYgJSUgJWYgaW4gZmxvYXQwLm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiIGEgYiAoKTtcbiAgbGV0IG0gPSBTdGRsaWIubW9kX2Zsb2F0IGEgYiBpblxuICAoKiBQcm9kdWNlIGEgbm9uLW5lZ2F0aXZlIHJlc3VsdCBpbiBhbmFsb2d5IHdpdGggSW50LiggJSApLiAqKVxuICBpZiBtIDwgMC4gdGhlbiBtICsuIGIgZWxzZSBtXG47O1xuXG4oKiBUaGUgYml0cyBvZiBJTlJJQSdzIFtQZXJ2YXNpdmVzXSB0aGF0IHdlIGp1c3Qgd2FudCB0byBleHBvc2UgaW4gW0Zsb2F0XS4gTW9zdCBhcmVcbiAgIGFscmVhZHkgZGVwcmVjYXRlZCBpbiBbUGVydmFzaXZlc10sIGFuZCBldmVudHVhbGx5IGFsbCBvZiB0aGVtIHNob3VsZCBiZS4gKilcbmluY2x1ZGUgKFxuICBTdGRsaWIgOlxuICBzaWdcbiAgICBleHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcblxuICAgIGV4dGVybmFsIGxkZXhwXG4gICAgICA6ICAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgICAgLT4gKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgID0gXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIlxuICAgIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICBlbmQpXG5cbigqIFdlIG5lZWQgdGhpcyBpbmRpcmVjdGlvbiBiZWNhdXNlIHRoZXNlIGFyZSBleHBvc2VkIGFzIFwidmFsXCIgaW5zdGVhZCBvZiBcImV4dGVybmFsXCIgKilcbmxldCBmcmV4cCA9IGZyZXhwXG5sZXQgbGRleHAgPSBsZGV4cFxubGV0IGlzX25hbiB4ID0gKHggOiBmbG9hdCkgPD4geFxuXG4oKiBBbiBvcmRlci1wcmVzZXJ2aW5nIGJpamVjdGlvbiBiZXR3ZWVuIGFsbCBmbG9hdHMgZXhjZXB0IGZvciBOYU5zLCBhbmQgOTkuOTUlIG9mXG4gICBpbnQ2NHMuXG5cbiAgIE5vdGUgd2UgZG9uJ3QgZGlzdGluZ3Vpc2ggMC4gYW5kIC0wLiBhcyBzZXBhcmF0ZSB2YWx1ZXMgaGVyZSwgdGhleSBib3RoIG1hcCB0byAwTCwgd2hpY2hcbiAgIG1hcHMgYmFjayB0byAwLlxuXG4gICBUaGlzIHNob3VsZCB3b3JrIGJvdGggb24gbGl0dGxlLWVuZGlhbiBhbmQgaGlnaC1lbmRpYW4gQ1BVcy4gIFdpa2lwZWRpYSBzYXlzOiBcIm9uXG4gICBtb2Rlcm4gc3RhbmRhcmQgY29tcHV0ZXJzIChpLmUuLCBpbXBsZW1lbnRpbmcgSUVFRSA3NTQpLCBvbmUgbWF5IGluIHByYWN0aWNlIHNhZmVseVxuICAgYXNzdW1lIHRoYXQgdGhlIGVuZGlhbm5lc3MgaXMgdGhlIHNhbWUgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMgZm9yIGludGVnZXJzXCJcbiAgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZGlhbm5lc3MjRmxvYXRpbmctcG9pbnRfYW5kX2VuZGlhbm5lc3MpLlxuKilcbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0ID1cbiAgaWYgaXNfbmFuIHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gKCogYWxzbyBpbmNsdWRlcyAtMC4gKilcbiAgICBTb21lIDBMXG4gIGVsc2UgaWYgdCA+IDAuXG4gIHRoZW4gU29tZSAoU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdClcbiAgZWxzZSBTb21lIChTdGRsaWIuSW50NjQubmVnIChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCAoLS50KSkpXG47O1xuXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIHggPSBPcHRpb24udmFsdWVfZXhuICh0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4KVxuXG5sZXQgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXIgeCA9XG4gIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgeCAwTFxuICB0aGVuIFN0ZGxpYi5JbnQ2NC5mbG9hdF9vZl9iaXRzIHhcbiAgZWxzZSB+LS4oU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgKFN0ZGxpYi5JbnQ2NC5uZWcgeCkpXG47O1xuXG5sZXQgb25lX3VscCBkaXIgdCA9XG4gIG1hdGNoIHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgd2l0aFxuICB8IE5vbmUgLT4gU3RkbGliLm5hblxuICB8IFNvbWUgeCAtPlxuICAgIG9mX2ludDY0X3ByZXNlcnZlX29yZGVyXG4gICAgICAoU3RkbGliLkludDY0LmFkZFxuICAgICAgICAgeFxuICAgICAgICAgKG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgfCBgVXAgLT4gMUxcbiAgICAgICAgICB8IGBEb3duIC0+IC0xTCkpXG47O1xuXG4oKiBbdXBwZXJfYm91bmRfZm9yX2ludF0gYW5kIFtsb3dlcl9ib3VuZF9mb3JfaW50XSBhcmUgZm9yIGNhbGN1bGF0aW5nIHRoZSBtYXgvbWluIGZsb2F0XG4gICB0aGF0IGZpdHMgaW4gYSBnaXZlbi1zaXplIGludGVnZXIgd2hlbiByb3VuZGVkIHRvd2FyZHMgMCAodXNpbmcgW2ludF9vZl9mbG9hdF0pLlxuXG4gICBtYXhfaW50L21pbl9pbnQgZGVwZW5kIG9uIFtudW1fYml0c10sIGUuZy4gKy8tIDJeMzAsICsvLSAyXjYyIGlmIDMxLWJpdCwgNjMtYml0XG4gICAocmVzcGVjdGl2ZWx5KSB3aGlsZSBmbG9hdCBpcyBJRUVFIHN0YW5kYXJkIGZvciBkb3VibGUgKDUyIHNpZ25pZmljYW50IGJpdHMpLlxuXG4gICBJbiBhbGwgY2FzZXMsIHdlIHdhbnQgdG8gZ3VhcmFudGVlIHRoYXRcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IDw9IHggPD0gdXBwZXJfYm91bmRfZm9yX2ludF1cbiAgIGlmZiBbaW50X29mX2Zsb2F0IHhdIGZpdHMgaW4gYW4gaW50IHdpdGggW251bV9iaXRzXSBiaXRzLlxuXG4gICBbMiAqKiAobnVtX2JpdHMgLSAxKV0gaXMgdGhlIGZpcnN0IGZsb2F0IGdyZWF0ZXIgdGhhdCBtYXhfaW50LCB3ZSB1c2UgdGhlIHByZWNlZGluZ1xuICAgZmxvYXQgYXMgdXBwZXIgYm91bmQuXG5cbiAgIFstICgyICoqIChudW1fYml0cyAtIDEpKV0gaXMgZXF1YWwgdG8gbWluX2ludC5cbiAgIEZvciBsb3dlciBib3VuZCB3ZSBsb29rIGZvciB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0gc28gdGhhdFxuICAgW2ZdIHJvdW5kcyB0b3dhcmQgemVybyB0byBbbWluX2ludF1cblxuICAgU28gaW4gcGFydGljdWxhciB3ZSB3aWxsIGhhdmU6XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCB4IDw9IC0gKDIgKiogKDEteCkpXVxuICAgW3VwcGVyX2JvdW5kX2Zvcl9pbnQgeCAgPCAgICAyICoqICgxLXgpIF1cbiopXG5sZXQgdXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIG9uZV91bHAgYERvd24gKDIuICoqIGV4cClcbjs7XG5cbmxldCBpc194X21pbnVzX29uZV9leGFjdCB4ID1cbiAgKCogW3ggPSB4IC0uIDEuXSBkb2VzIG5vdCB3b3JrIHdpdGggeDg3IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFja2VuZCAod2hpY2ggaXMgdXNlZFxuICAgICBvbiAzMi1iaXQgb2NhbWwpIGJlY2F1c2Ugb2YgODAtYml0IHJlZ2lzdGVyIHByZWNpc2lvbiBvZiBpbnRlcm1lZGlhdGUgY29tcHV0YXRpb25zLlxuXG4gICAgIEFuIGFsdGVybmF0aXZlIHdheSBvZiBjb21wdXRpbmcgdGhpczogW3ggLS4gb25lX3VscCBgRG93biB4IDw9IDEuXSBpcyBhbHNvIHByb25lIHRvXG4gICAgIHRoZSBzYW1lIHByZWNpc2lvbiBpc3N1ZXM6IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSBbeF0gaXMgNjQtYml0LlxuICAqKVxuICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgbm90IChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB4ID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgKHggLS4gMS4pKVxuOztcblxubGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gU3RkbGliLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBsZXQgbWluX2ludF9hc19mbG9hdCA9IH4tLigyLiAqKiBleHApIGluXG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbnVtX2JpdHMgLSAxIDwgNTMgKCogNTMgPSAjYml0cyBpbiB0aGUgZmxvYXQncyBtYW50aXNzYSB3aXRoIHNpZ24gaW5jbHVkZWQgKilcbiAgdGhlbiAoXG4gICAgKCogVGhlIHNtYWxsZXN0IGZsb2F0IHRoYXQgcm91bmRzIHRvd2FyZHMgemVybyB0byBbbWluX2ludF0gaXNcbiAgICAgICBbbWluX2ludCAtIDEgKyBlcHNpbG9uXSAqKVxuICAgIGFzc2VydCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCk7XG4gICAgb25lX3VscCBgVXAgKG1pbl9pbnRfYXNfZmxvYXQgLS4gMS4pKVxuICBlbHNlIChcbiAgICAoKiBbbWluX2ludF9hc19mbG9hdF0gaXMgYWxyZWFkeSB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0uICopXG4gICAgYXNzZXJ0IChub3QgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpKTtcbiAgICBtaW5faW50X2FzX2Zsb2F0KVxuOztcblxuKCogRmxvYXQgY2xhbXBpbmcgaXMgc3RydWN0dXJlZCBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIGNsYW1waW5nIGZvciBvdGhlciB0eXBlcywgc29cbiAgIHRoYXQgd2UgZ2V0IHRoZSBiZWhhdmlvciBvZiBbY2xhbXBfdW5jaGVja2VkIG5hbiB+bWluIH5tYXggPSBuYW5dIChmb3IgYW55IFttaW5dIGFuZFxuICAgW21heF0pIGZvciBmcmVlLlxuKilcbmxldCBjbGFtcF91bmNoZWNrZWQgKHQgOiBmbG9hdCkgfm1pbiB+bWF4ID1cbiAgaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIG1heCA8IHQgdGhlbiBtYXggZWxzZSB0XG47O1xuXG5sZXQgYm94ID1cbiAgKCogUHJldmVudCBwb3RlbnRpYWwgY29uc3RhbnQgZm9sZGluZyBvZiBbKy4gMC5dIGluIHRoZSBuZWFyIG9jYW1sb3B0IGZ1dHVyZS4gKilcbiAgbGV0IHggPSBTeXMwLm9wYXF1ZV9pZGVudGl0eSAwLiBpblxuICBmdW4gZiAtPiBmICsuIHhcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuaW5jbHVkZSBDaGFyMFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2NoYXIgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfY2hhclxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfY2hhciBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2NoYXIgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLm1ha2UgMSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgd2l0aFxuICAgIHwgMSAtPiBzLlswXVxuICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJDaGFyLm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkNoYXJcIlxuICBlbmQpXG5cbmxldCBwcCBmbXQgYyA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlQ1wiIGNcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBhbGwgPSBBcnJheS5pbml0IDI1NiB+Zjp1bnNhZmVfb2ZfaW50IHw+IEFycmF5LnRvX2xpc3RcblxubGV0IGlzX2xvd2VyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3VwcGVyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3ByaW50ID0gZnVuY3Rpb25cbiAgfCAnICcgLi4gJ34nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXDAxMScgKCogdmVydGljYWwgdGFiICopIHwgJ1xcMDEyJyAoKiBmb3JtIGZlZWQgKikgfCAnXFxyJyB8ICcgJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfYWxwaGEgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG4oKiBXcml0aW5nIHRoZXNlIG91dCwgaW5zdGVhZCBvZiBjYWxsaW5nIFtpc19hbHBoYV0gYW5kIFtpc19kaWdpdF0sIHJlZHVjZXNcbiAgIHJ1bnRpbWUgYnkgYXBwcm94LiAzMCUgKilcbmxldCBpc19hbHBoYW51bSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2RpZ2l0X3Vuc2FmZSB0ID0gdG9faW50IHQgLSB0b19pbnQgJzAnXG5cbmxldCBnZXRfZGlnaXRfZXhuIHQgPVxuICBpZiBpc19kaWdpdCB0XG4gIHRoZW4gZ2V0X2RpZ2l0X3Vuc2FmZSB0XG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5nZXRfZGlnaXRfZXhuICVDOiBub3QgYSBkaWdpdFwiIHQgKClcbjs7XG5cbmxldCBnZXRfZGlnaXQgdCA9IGlmIGlzX2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfZGlnaXRfdW5zYWZlIHQpIGVsc2UgTm9uZVxuXG5sZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfbG93ZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X3VwcGVyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9oZXhfZGlnaXRfZXhuID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJzAnXG4gIHwgJ2EnIC4uICdmJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdhJyArIDEwXG4gIHwgJ0EnIC4uICdGJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdBJyArIDEwXG4gIHwgdCAtPlxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiQ2hhci5nZXRfaGV4X2RpZ2l0X2V4bjogbm90IGEgaGV4YWRlY2ltYWwgZGlnaXRcIlxuICAgICAgICAgWyBcImNoYXJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0IHQgPSBpZiBpc19oZXhfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9oZXhfZGlnaXRfZXhuIHQpIGVsc2UgTm9uZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuZW5kXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIGMxIGMyID0gY29tcGFyZSAobG93ZXJjYXNlIGMxKSAobG93ZXJjYXNlIGMyKVxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2NoYXIgc3RhdGUgKGxvd2VyY2FzZSB0KVxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydDAuSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG4oKiBDb25zdHJ1Y3QgYSBieXRlIHN0cmluZyBvZiBsZW5ndGggMjU2LCBtYXBwaW5nIGV2ZXJ5IGlucHV0IGNoYXJhY3RlciBjb2RlIHRvXG4gICBpdHMgY29ycmVzcG9uZGluZyBvdXRwdXQgY2hhcmFjdGVyLlxuXG4gICBCZW5jaG1hcmtzIGluZGljYXRlIHRoYXQgdGhpcyBpcyBmYXN0ZXIgdGhhbiB0aGUgbGFtYmRhIChpbmNsdWRpbmcgY29zdCBvZlxuICAgdGhpcyBmdW5jdGlvbiksIGV2ZW4gaWYgdGFyZ2V0L3JlcGxhY2VtZW50IGFyZSBqdXN0IDIgY2hhcmFjdGVycyBlYWNoLlxuXG4gICBSZXR1cm4gTm9uZSBpZiB0aGUgdHJhbnNsYXRpb24gbWFwIGlzIGVxdWl2YWxlbnQgdG8ganVzdCB0aGUgaWRlbnRpdHkuICopXG5sZXQgdHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGxldCB0cl9tYXAgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAtIDEgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggKFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IGkpXG4gIGRvbmU7XG4gIGxldCBsYXN0X3JlcGxhY2VtZW50ID0gU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQgLSAxKSBpblxuICBmb3JcbiAgICBpID0gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIHRvIFN0cmluZy5sZW5ndGggdGFyZ2V0IC0gMVxuICBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCBsYXN0X3JlcGxhY2VtZW50XG4gIGRvbmU7XG4gIGxldCByZWMgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCBpID1cbiAgICBpZiBpID0gMjU2XG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCBpKSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIChpICsgMSlcbiAgaW5cbiAgKCogcXVpY2sgY2hlY2sgb24gdGhlIGZpcnN0IHRhcmdldCBjaGFyYWN0ZXIgd2hpY2ggd2lsbCA5OSUgYmUgdHJ1ZSAqKVxuICBsZXQgZmlyc3RfdGFyZ2V0ID0gdGFyZ2V0LlswXSBpblxuICBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBmaXJzdF90YXJnZXQpKSBmaXJzdF90YXJnZXRcbiAgfHwgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAwXG4gIHRoZW4gU29tZSAoQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dHJfbWFwKVxuICBlbHNlIE5vbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2FcblxubGV0IHN0YWdlID0gRm4uaWRcbmxldCB1bnN0YWdlID0gRm4uaWRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBJbnQgPSBJbnQwXG5pbmNsdWRlIFN0cmluZzBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfc3RyaW5nIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3N0cmluZ1xuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfc3RyaW5nIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxudHlwZSBlbHQgPSBjaGFyXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbigqIFRoaXMgaXMgY29waWVkL2FkYXB0ZWQgZnJvbSAnYmxpdC5tbCcuXG4gICBbc3ViXSwgW3N1Ym9dIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtCbGl0Lk1ha2UoQnl0ZXMpXSBwbHVzIHVuc2FmZSBjYXN0cyB0by9mcm9tXG4gICBzdHJpbmcgYnV0IHdlcmUgaW5saW5lZCBoZXJlIHRvIGF2b2lkIHVzaW5nIFtCeXRlcy51bnNhZmVfb2Zfc3RyaW5nXSBhcyBtdWNoIGFzIHBvc3NpYmxlLlxuKilcbmxldCB1bnNhZmVfc3ViIHNyYyB+cG9zIH5sZW4gPVxuICBpZiBsZW4gPSAwXG4gIHRoZW4gXCJcIlxuICBlbHNlIChcbiAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbjs7XG5cbmxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA9IDAgJiYgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmNcbiAgdGhlbiBzcmNcbiAgZWxzZSAoXG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHNyYyk7XG4gICAgdW5zYWZlX3N1YiBzcmMgfnBvcyB+bGVuKVxuOztcblxubGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gIHN1YlxuICAgIHNyY1xuICAgIH5wb3NcbiAgICB+bGVuOlxuICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgIHwgTm9uZSAtPiBsZW5ndGggc3JjIC0gcG9zKVxuOztcblxubGV0IHJlYyBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfIGNoYXIgPVxuICBwb3MgPCBlbmRfXG4gICYmIChDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHQgcG9zKSBjaGFyIHx8IGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3M6KHBvcyArIDEpIH5lbmRfIGNoYXIpXG47O1xuXG5sZXQgY29udGFpbnMgPyhwb3MgPSAwKSA/bGVuIHQgY2hhciA9XG4gIGxldCB0b3RhbF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9IE9wdGlvbi52YWx1ZSBsZW4gfmRlZmF1bHQ6KHRvdGFsX2xlbmd0aCAtIHBvcykgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXzoocG9zICsgbGVuKSBjaGFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgcmVjIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zID49IGxlblxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgKyAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KSB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2V4biB0IGNoYXIgPSBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9leG5cbjs7XG5cbmxldCBpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCByZWMgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zIDwgMFxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6KGxlbiAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9leG4gdCBjaGFyID0gcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9leG5cbjs7XG5cbmxldCByaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAtMSB8fCBwb3MgPj0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9mcm9tX2V4blxuOztcblxubGV0IGluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbm1vZHVsZSBTZWFyY2hfcGF0dGVybjAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5ID0gXyB9IDogU2V4cC50ID1cbiAgICBMaXN0XG4gICAgICBbIExpc3QgWyBBdG9tIFwicGF0dGVyblwiOyBzZXhwX29mX3N0cmluZyBwYXR0ZXJuIF1cbiAgICAgIDsgTGlzdCBbIEF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmUgXVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBwYXR0ZXJuIHQgPSB0LnBhdHRlcm5cbiAgbGV0IGNhc2Vfc2Vuc2l0aXZlIHQgPSB0LmNhc2Vfc2Vuc2l0aXZlXG5cbiAgKCogRmluZCBtYXggbnVtYmVyIG9mIG1hdGNoZWQgY2hhcmFjdGVycyBhdCBbbmV4dF90ZXh0X2NoYXJdLCBnaXZlbiB0aGUgY3VycmVudFxuICAgICBbbWF0Y2hlZF9jaGFyc10uIFRyeSB0byBleHRlbmQgdGhlIGN1cnJlbnQgbWF0Y2gsIGlmIGNoYXJzIGRvbid0IG1hdGNoLCB0cnkgdG8gbWF0Y2hcbiAgICAgZmV3ZXIgY2hhcnMuIElmIGNoYXJzIG1hdGNoIHRoZW4gZXh0ZW5kIHRoZSBtYXRjaC4gKilcbiAgbGV0IGttcF9pbnRlcm5hbF9sb29wIH5tYXRjaGVkX2NoYXJzIH5uZXh0X3RleHRfY2hhciB+cGF0dGVybiB+a21wX2FycmF5IH5jaGFyX2VxdWFsID1cbiAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiBtYXRjaGVkX2NoYXJzIGluXG4gICAgd2hpbGVcbiAgICAgICFtYXRjaGVkX2NoYXJzID4gMFxuICAgICAgJiYgbm90IChjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpKVxuICAgIGRvXG4gICAgICBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5ICghbWF0Y2hlZF9jaGFycyAtIDEpXG4gICAgZG9uZTtcbiAgICBpZiBjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpXG4gICAgdGhlbiBtYXRjaGVkX2NoYXJzIDo9ICFtYXRjaGVkX2NoYXJzICsgMTtcbiAgICAhbWF0Y2hlZF9jaGFyc1xuICA7O1xuXG4gIGxldCBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIG1hdGNoIGNhc2Vfc2Vuc2l0aXZlIHdpdGhcbiAgICB8IHRydWUgLT4gQ2hhci5lcXVhbFxuICAgIHwgZmFsc2UgLT4gQ2hhci5DYXNlbGVzcy5lcXVhbFxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QIHByZS1wcm9jZXNzaW5nIG9mIHRoZSBwYXR0ZXJuOiBidWlsZCB0aGUgaW50IGFycmF5LCB3aGljaCwgZm9yIGVhY2ggaSxcbiAgICAgY29udGFpbnMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBub24tdHJpdmlhbCBwcmVmaXggb2YgcyB3aGljaCBpcyBlcXVhbCB0byBhIHN1ZmZpeFxuICAgICBlbmRpbmcgYXQgcy5baV0gKilcbiAgbGV0IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbGV0IG4gPSBsZW5ndGggcGF0dGVybiBpblxuICAgIGxldCBrbXBfYXJyYXkgPSBBcnJheS5jcmVhdGUgfmxlbjpuICgtMSkgaW5cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IDAgMDtcbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXI6KHVuc2FmZV9nZXQgcGF0dGVybiBpKVxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSBpICFtYXRjaGVkX2NoYXJzXG4gICAgICBkb25lKTtcbiAgICB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfVxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QOiB1c2UgdGhlIHByZS1wcm9jZXNzZWQgcGF0dGVybiB0byBvcHRpbWl6ZSBsb29rLWJlaGluZHMgb24gbm9uLW1hdGNoZXMuXG4gICAgIFdlIHJldHVybiBpbnQgdG8gYXZvaWQgYWxsb2NhdGlvbiBpbiBbaW5kZXhfZXhuXS4gLTEgbWVhbnMgbm8gbWF0Y2guICopXG4gIGxldCBpbmRleF9pbnRlcm5hbCA/KHBvcyA9IDApIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5pbl86dGV4dCA9XG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5ndGggdGV4dCAtIGxlbmd0aCBwYXR0ZXJuXG4gICAgdGhlbiAtMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBqID0gcmVmIHBvcyBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgd2hpbGUgIWogPCBuICYmICFtYXRjaGVkX2NoYXJzIDwgayBkb1xuICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgIWogaW5cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIGogOj0gIWogKyAxXG4gICAgICBkb25lO1xuICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrIHRoZW4gIWogLSBrIGVsc2UgLTEpXG4gIDs7XG5cbiAgbGV0IG1hdGNoZXMgdCBzdHIgPSBpbmRleF9pbnRlcm5hbCB0IH5pbl86c3RyID49IDBcblxuICBsZXQgaW5kZXggP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHBcbiAgOztcblxuICBsZXQgaW5kZXhfZXhuID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA+PSAwXG4gICAgdGhlbiBwXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiU3Vic3RyaW5nIG5vdCBmb3VuZFwiIFsgXCJzdWJzdHJpbmdcIiwgc2V4cF9vZl9zdHJpbmcgdC5wYXR0ZXJuIF0pXG4gIDs7XG5cbiAgbGV0IGluZGV4X2FsbCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+bWF5X292ZXJsYXAgfmluXzp0ZXh0ID1cbiAgICBpZiBsZW5ndGggcGF0dGVybiA9IDBcbiAgICB0aGVuIExpc3QuaW5pdCAoMSArIGxlbmd0aCB0ZXh0KSB+ZjpGbi5pZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIGxldCBmb3VuZCA9IHJlZiBbXSBpblxuICAgICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGZvdW5kIDo9IChqIC0gaykgOjogIWZvdW5kO1xuICAgICAgICAgICgqIHdlIGp1c3QgZm91bmQgYSBtYXRjaCBpbiB0aGUgcHJldmlvdXMgaXRlcmF0aW9uICopXG4gICAgICAgICAgbWF0Y2ggbWF5X292ZXJsYXAgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPiBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5IChrIC0gMSlcbiAgICAgICAgICB8IGZhbHNlIC0+IG1hdGNoZWRfY2hhcnMgOj0gMCk7XG4gICAgICAgIGlmIGogPCBuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCBqIGluXG4gICAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgICAgfmNoYXJfZXF1YWwpXG4gICAgICBkb25lO1xuICAgICAgTGlzdC5yZXYgIWZvdW5kKVxuICA7O1xuXG4gIGxldCByZXBsYWNlX2ZpcnN0ID9wb3MgdCB+aW5fOnMgfndpdGhfID1cbiAgICBtYXRjaCBpbmRleCA/cG9zIHQgfmluXzpzIHdpdGhcbiAgICB8IE5vbmUgLT4gc1xuICAgIHwgU29tZSBpIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArIGxlbl93aXRoIC0gbGVuX3QpIGluXG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjppO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp3aXRoXyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6aSB+bGVuOmxlbl93aXRoO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOihpICsgbGVuX3QpXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6KGkgKyBsZW5fd2l0aClcbiAgICAgICAgfmxlbjoobGVuX3MgLSBpIC0gbGVuX3QpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuXG4gIGxldCByZXBsYWNlX2FsbCB0IH5pbl86cyB+d2l0aF8gPVxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIG1hdGNoIG1hdGNoZXMgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgbnVtX21hdGNoZXMgPSBMaXN0Lmxlbmd0aCBtYXRjaGVzIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArICgobGVuX3dpdGggLSBsZW5fdCkgKiBudW1fbWF0Y2hlcykpIGluXG4gICAgICBsZXQgbmV4dF9kc3RfcG9zID0gcmVmIDAgaW5cbiAgICAgIGxldCBuZXh0X3NyY19wb3MgPSByZWYgMCBpblxuICAgICAgTGlzdC5pdGVyIG1hdGNoZXMgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBsZW4gPSBpIC0gIW5leHRfc3JjX3BvcyBpblxuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6IW5leHRfc3JjX3BvcyB+ZHN0IH5kc3RfcG9zOiFuZXh0X2RzdF9wb3MgfmxlbjtcbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgICB+c3JjOndpdGhfXG4gICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgIH5kc3RcbiAgICAgICAgICB+ZHN0X3BvczooIW5leHRfZHN0X3BvcyArIGxlbilcbiAgICAgICAgICB+bGVuOmxlbl93aXRoO1xuICAgICAgICBuZXh0X2RzdF9wb3MgOj0gIW5leHRfZHN0X3BvcyArIGxlbiArIGxlbl93aXRoO1xuICAgICAgICBuZXh0X3NyY19wb3MgOj0gIW5leHRfc3JjX3BvcyArIGxlbiArIGxlbl90KTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczohbmV4dF9zcmNfcG9zXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6IW5leHRfZHN0X3Bvc1xuICAgICAgICB+bGVuOihsZW5fcyAtICFuZXh0X3NyY19wb3MpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuICBsZXQgc3BsaXRfb24gdCBzID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHQucGF0dGVybiBpblxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIExpc3QubWFwMl9leG5cbiAgICAgICgtcGF0dGVybl9sZW4gOjogbWF0Y2hlcylcbiAgICAgIChtYXRjaGVzIEAgWyBTdHJpbmcubGVuZ3RoIHMgXSlcbiAgICAgIH5mOihmdW4gaSBqIC0+IHN1YiBzIH5wb3M6KGkgKyBwYXR0ZXJuX2xlbikgfmxlbjooaiAtIGkgLSBwYXR0ZXJuX2xlbikpXG4gIDs7XG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHB1YmxpYyA9IHRcblxuICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsID1cbiAgICAgIChmdW4gYV9fMDAzXyBiX18wMDRfIC0+XG4gICAgICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwM18gYl9fMDA0X1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFN0ZGxpYi4oICYmIClcbiAgICAgICAgICAgICAoZXF1YWxfc3RyaW5nIGFfXzAwM18ucGF0dGVybiBiX18wMDRfLnBhdHRlcm4pXG4gICAgICAgICAgICAgKFN0ZGxpYi4oICYmIClcbiAgICAgICAgICAgICAgICAoZXF1YWxfYm9vbCBhX18wMDNfLmNhc2Vfc2Vuc2l0aXZlIGJfXzAwNF8uY2FzZV9zZW5zaXRpdmUpXG4gICAgICAgICAgICAgICAgKGVxdWFsX2FycmF5IGVxdWFsX2ludCBhX18wMDNfLmttcF9hcnJheSBiX18wMDRfLmttcF9hcnJheSkpXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGJvb2wpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IHBhdHRlcm4gPSBwYXR0ZXJuX18wMDhfXG4gICAgICAgICAgIDsgY2FzZV9zZW5zaXRpdmUgPSBjYXNlX3NlbnNpdGl2ZV9fMDEwX1xuICAgICAgICAgICA7IGttcF9hcnJheSA9IGttcF9hcnJheV9fMDEyX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDdfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEzXyA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9pbnQga21wX2FycmF5X18wMTJfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImttcF9hcnJheVwiOyBhcmdfXzAxM18gXSA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDExXyA9IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZV9fMDEwXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBhcmdfXzAxMV8gXVxuICAgICAgICAgICA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm5fXzAwOF8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGF0dGVyblwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA3X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHJlcHJlc2VudGF0aW9uID0gRm4uaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuX2hlbHBlciA9IHN0cnVjdFxuICBtb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBTZWFyY2hfcGF0dGVybjBcbmVuZFxuXG5vcGVuIFNlYXJjaF9wYXR0ZXJuX2hlbHBlclxuXG5sZXQgc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXggP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfZXhuID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfm1heV9vdmVybGFwIH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfYWxsXG4gICAgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybilcbiAgICB+bWF5X292ZXJsYXBcbiAgICB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfZmlyc3QgP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9hbGwgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+c3Vic3RyaW5nID1cbiAgT3B0aW9uLmlzX3NvbWUgKHN1YnN0cl9pbmRleF9nZW4gdCB+cGF0dGVybjpzdWJzdHJpbmcgfmNhc2Vfc2Vuc2l0aXZlKVxuOztcblxubGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5cbmxldCBpc19zdWJzdHJpbmdfYXRfZ2VuID1cbiAgbGV0IHJlYyBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvcyB+c3ViX2xlbiB+Y2hhcl9lcXVhbCA9XG4gICAgaWYgc3ViX3BvcyA9IHN1Yl9sZW5cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGlmIGNoYXJfZXF1YWwgKHVuc2FmZV9nZXQgc3RyIHN0cl9wb3MpICh1bnNhZmVfZ2V0IHN1YiBzdWJfcG9zKVxuICAgIHRoZW4gbG9vcCB+c3RyIH5zdHJfcG9zOihzdHJfcG9zICsgMSkgfnN1YiB+c3ViX3Bvczooc3ViX3BvcyArIDEpIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG4gICAgZWxzZSBmYWxzZVxuICBpblxuICBmdW4gc3RyIH5wb3M6c3RyX3BvcyB+c3Vic3RyaW5nOnN1YiB+Y2hhcl9lcXVhbCAtPlxuICAgIGxldCBzdHJfbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCBzdWJfbGVuID0gbGVuZ3RoIHN1YiBpblxuICAgIGlmIHN0cl9wb3MgPCAwIHx8IHN0cl9wb3MgPiBzdHJfbGVuXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiU3RyaW5nLmlzX3N1YnN0cmluZ19hdDogaW52YWxpZCBpbmRleCAlZCBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICAgIHN0cl9wb3NcbiAgICAgICAgc3RyX2xlblxuICAgICAgICAoKTtcbiAgICBzdHJfcG9zICsgc3ViX2xlbiA8PSBzdHJfbGVuXG4gICAgJiYgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3M6MCB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3N1ZmZpeF9nZW4gc3RyaW5nIH5zdWZmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIHN0cmluZ19sZW4gPj0gc3VmZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuXG4gICAgICAgc3RyaW5nXG4gICAgICAgfnBvczooc3RyaW5nX2xlbiAtIHN1ZmZpeF9sZW4pXG4gICAgICAgfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3ByZWZpeF9nZW4gc3RyaW5nIH5wcmVmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHByZWZpeF9sZW4gPSBsZW5ndGggcHJlZml4IGluXG4gIHN0cmluZ19sZW4gPj0gcHJlZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuIHN0cmluZyB+cG9zOjAgfnN1YnN0cmluZzpwcmVmaXggfmNoYXJfZXF1YWxcbjs7XG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJfY29tcGFyZV9jYXNlbGVzcyBjMSBjMiA9IENoYXIuY29tcGFyZSAoQ2hhci5sb3dlcmNhc2UgYzEpIChDaGFyLmxvd2VyY2FzZSBjMilcblxuICAgIGxldCByZWMgY29tcGFyZV9sb29wIH5wb3MgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjIgPVxuICAgICAgaWYgcG9zID0gbGVuMVxuICAgICAgdGhlbiBpZiBwb3MgPSBsZW4yIHRoZW4gMCBlbHNlIC0xXG4gICAgICBlbHNlIGlmIHBvcyA9IGxlbjJcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjID0gY2hhcl9jb21wYXJlX2Nhc2VsZXNzICh1bnNhZmVfZ2V0IHN0cmluZzEgcG9zKSAodW5zYWZlX2dldCBzdHJpbmcyIHBvcykgaW5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xvb3AgfnBvczoocG9zICsgMSkgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjJcbiAgICAgICAgfCBfIC0+IGMpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIHN0cmluZzEgc3RyaW5nMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHN0cmluZzEgc3RyaW5nMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXBhcmVfbG9vcFxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5zdHJpbmcxXG4gICAgICAgICAgfmxlbjE6KFN0cmluZy5sZW5ndGggc3RyaW5nMSlcbiAgICAgICAgICB+c3RyaW5nMlxuICAgICAgICAgIH5sZW4yOihTdHJpbmcubGVuZ3RoIHN0cmluZzIpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID1cbiAgICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgICAgbGV0IHN0YXRlID0gcmVmIChoYXNoX2ZvbGRfaW50IHN0YXRlIGxlbikgaW5cbiAgICAgIGZvciBwb3MgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgc3RhdGUgOj0gaGFzaF9mb2xkX2NoYXIgIXN0YXRlIChDaGFyLmxvd2VyY2FzZSAodW5zYWZlX2dldCB0IHBvcykpXG4gICAgICBkb25lO1xuICAgICAgIXN0YXRlXG4gICAgOztcblxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gICAgbGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nX2F0ID0gaXNfc3Vic3RyaW5nX2F0X2dlbiB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRm4uaWRcbmxldCB0b19zdHJpbmcgPSBGbi5pZFxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpIDwgMCB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgLSAxKSBpblxuICBsb29wIFtdIChsZW5ndGggcyAtIDEpXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpID0gbGVuIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSArIDEpIGluXG4gIGxvb3AgW10gMFxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgaSAodW5zYWZlX2dldCB0IChsZW4gLSAxIC0gaSkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzXG47O1xuXG4oKiogRWZmaWNpZW50IHN0cmluZyBzcGxpdHRpbmcgKilcblxubGV0IGxzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmxzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGxzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGxzcGxpdDJfZXhuXG47O1xuXG5sZXQgcnNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucnNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcnNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSByaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJzcGxpdDJfZXhuXG47O1xuXG5sZXQgbHNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChsc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKHJzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJlYyBjaGFyX2xpc3RfbWVtIGwgKGMgOiBjaGFyKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGZhbHNlXG4gIHwgaGQgOjogdGwgLT4gQ2hhci5lcXVhbCBoZCBjIHx8IGNoYXJfbGlzdF9tZW0gdGwgY1xuOztcblxubGV0IHNwbGl0X2dlbiBzdHIgfm9uID1cbiAgbGV0IGlzX2RlbGltID1cbiAgICBtYXRjaCBvbiB3aXRoXG4gICAgfCBgY2hhciBjJyAtPiBmdW4gYyAtPiBDaGFyLmVxdWFsIGMgYydcbiAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGxhc3RfcG9zIHBvcyA9XG4gICAgaWYgcG9zID0gLTFcbiAgICB0aGVuIHN1YiBzdHIgfnBvczowIH5sZW46bGFzdF9wb3MgOjogYWNjXG4gICAgZWxzZSBpZiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICB0aGVuIChcbiAgICAgIGxldCBwb3MxID0gcG9zICsgMSBpblxuICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6cG9zMSB+bGVuOihsYXN0X3BvcyAtIHBvczEpIGluXG4gICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgcG9zIChwb3MgLSAxKSlcbiAgICBlbHNlIGxvb3AgYWNjIGxhc3RfcG9zIChwb3MgLSAxKVxuICBpblxuICBsb29wIFtdIGxlbiAobGVuIC0gMSlcbjs7XG5cbmxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxubGV0IHNwbGl0X29uX2NoYXJzIHN0ciB+b246Y2hhcnMgPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXJfbGlzdCBjaGFycylcblxubGV0IHNwbGl0X2xpbmVzID1cbiAgbGV0IGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wgPVxuICAgIHBvcyA6PSAhcG9zIC0gaWYgIXBvcyA+IDAgJiYgQ2hhci5lcXVhbCB0LlshcG9zIC0gMV0gJ1xccicgdGhlbiAyIGVsc2UgMTtcbiAgICBlb2wgOj0gIXBvcyArIDFcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICAoKiBJbnZhcmlhbnQ6IFstMSA8PSBwb3MgPCBlb2xdLiAqKVxuICAgICAgbGV0IHBvcyA9IHJlZiAobiAtIDEpIGluXG4gICAgICBsZXQgZW9sID0gcmVmIG4gaW5cbiAgICAgIGxldCBhYyA9IHJlZiBbXSBpblxuICAgICAgKCogV2UgdHJlYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIHNwZWNpYWxseSwgYmVjYXVzZSBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhXG4gICAgICAgICBuZXdsaW5lLCB3ZSBkb24ndCB3YW50IGFuIGV4dHJhIGVtcHR5IHN0cmluZyBhdCB0aGUgZW5kIG9mIHRoZSBvdXRwdXQuICopXG4gICAgICBpZiBDaGFyLmVxdWFsIHQuWyFwb3NdICdcXG4nIHRoZW4gYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbDtcbiAgICAgIHdoaWxlICFwb3MgPj0gMCBkb1xuICAgICAgICBpZiBDaGFyLiggPD4gKSB0LlshcG9zXSAnXFxuJ1xuICAgICAgICB0aGVuIGRlY3IgcG9zXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIEJlY2F1c2UgW3BvcyA8IGVvbF0sIHdlIGtub3cgdGhhdCBbc3RhcnQgPD0gZW9sXS4gKilcbiAgICAgICAgICBsZXQgc3RhcnQgPSAhcG9zICsgMSBpblxuICAgICAgICAgIGFjIDo9IHN1YiB0IH5wb3M6c3RhcnQgfmxlbjooIWVvbCAtIHN0YXJ0KSA6OiAhYWM7XG4gICAgICAgICAgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbClcbiAgICAgIGRvbmU7XG4gICAgICBzdWIgdCB+cG9zOjAgfmxlbjohZW9sIDo6ICFhYylcbjs7XG5cbmxldCBpc19zdWZmaXggcyB+c3VmZml4ID0gaXNfc3VmZml4X2dlbiBzIH5zdWZmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxubGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5cbmxldCBpc19zdWJzdHJpbmdfYXQgcyB+cG9zIH5zdWJzdHJpbmcgPVxuICBpc19zdWJzdHJpbmdfYXRfZ2VuIHMgfnBvcyB+c3Vic3RyaW5nIH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbjs7XG5cbmxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICBlbHNlIChcbiAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICB8IF8gLT4gb25fZXJyb3IpXG47O1xuXG5sZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3BfcHJlZml4XCIgdCBuIH5wb3M6biB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3Bfc3VmZml4XCIgdCBuIH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxubGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbmxldCBsZmluZGkgPyhwb3MgPSAwKSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPSBuIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICBsb29wIHBvcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+IFNvbWUgdC5baV1cbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG5cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGYgdC5baV0gd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlcylcbiAgaW5cbiAgbG9vcCAwIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZmluZGkgP3BvcyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpIC0gMSkgaW5cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICAgIHwgTm9uZSAtPiBsZW5ndGggdCAtIDFcbiAgaW5cbiAgbG9vcCBwb3MgW0Bub250YWlsXVxuOztcblxubGV0IGxhc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IHJmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSkgW0Bub250YWlsXVxuXG5sZXQgcnN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuOztcblxubGV0IGZpcnN0X25vbl9kcm9wIH5kcm9wIHQgPSBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpIFtAbm9udGFpbF1cblxubGV0IGxzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIDAgLT4gdFxuICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbjs7XG5cbigqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbmxldCBzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgaSB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBtYXAgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKGxlbmd0aCBzKSB+ZjooZnVuIGkgLT4gcy5baV0pXG5cbmxldCBleGlzdHMgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpIDwgbGVuICYmIChmIHMuW2ldIHx8IGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvcl9hbGwgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpID0gbGVuIHx8IChmIHMuW2ldICYmIGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGkgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0XG5sZXQgbWF4X2VsdCB0ID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdFxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kX21hcGkgfml0ZXJpIHQgfmZcbmxldCBmaW5kaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZGkgfml0ZXJpIHQgfmZcbmxldCBjb3VudGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmNvdW50aSB+Zm9sZGkgdCB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5mb3JfYWxsaSB+aXRlcmkgdCB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmV4aXN0c2kgfml0ZXJpIHQgfmZcblxubGV0IG1lbSA9XG4gIGxldCByZWMgbG9vcCB0IGMgfnBvczppIH5sZW4gPVxuICAgIGkgPCBsZW4gJiYgKENoYXIuZXF1YWwgYyAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCBjIH5wb3M6KGkgKyAxKSB+bGVuKVxuICBpblxuICBmdW4gdCBjIC0+IGxvb3AgdCBjIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgaWYgQ2hhci5lcXVhbCB0YXJnZXQgcmVwbGFjZW1lbnRcbiAgdGhlbiBzXG4gIGVsc2UgaWYgbWVtIHMgdGFyZ2V0XG4gIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IGlmIENoYXIuZXF1YWwgYyB0YXJnZXQgdGhlbiByZXBsYWNlbWVudCBlbHNlIGMpXG4gIGVsc2Ugc1xuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgaXNfZW1wdHkgdGFyZ2V0XG4gIHRoZW4gc3RhZ2UgRm4uaWRcbiAgZWxzZSBpZiBpc19lbXB0eSByZXBsYWNlbWVudFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGkgcmVwbGFjZW1lbnQgaXMgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIEZuLmlkXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGlmIGV4aXN0cyBzIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICh1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpKVxuICAgICAgICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiB1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpXG4gICAgICAgIGVsc2UgcykpXG47O1xuXG4oKiBmYXN0IHZlcnNpb24sIGlmIHdlIGV2ZXIgbmVlZCBpdDpcbiAgIHtbXG4gICAgIGxldCBjb25jYXRfYXJyYXkgfnNlcCBhciA9XG4gICAgICAgbGV0IGFyX2xlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgICAgIGlmIGFyX2xlbiA9IDAgdGhlbiBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgbGV0IHNlcF9sZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICBsZXQgcmVzX2xlbl9yZWYgPSByZWYgKHNlcF9sZW4gKiAoYXJfbGVuIC0gMSkpIGluXG4gICAgICAgICBmb3IgaSA9IDAgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICByZXNfbGVuX3JlZiA6PSAhcmVzX2xlbl9yZWYgKyBsZW5ndGggYXIuKGkpXG4gICAgICAgICBkb25lO1xuICAgICAgICAgbGV0IHJlcyA9IGNyZWF0ZSAhcmVzX2xlbl9yZWYgaW5cbiAgICAgICAgIGxldCBzdHJfMCA9IGFyLigwKSBpblxuICAgICAgICAgbGV0IGxlbl8wID0gbGVuZ3RoIHN0cl8wIGluXG4gICAgICAgICBibGl0IH5zcmM6c3RyXzAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczowIH5sZW46bGVuXzA7XG4gICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBsZW5fMCBpblxuICAgICAgICAgZm9yIGkgPSAxIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzZXAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3Bvczpwb3MgfmxlbjpzZXBfbGVuO1xuICAgICAgICAgICBsZXQgbmV3X3BvcyA9IHBvcyArIHNlcF9sZW4gaW5cbiAgICAgICAgICAgbGV0IHN0cl9pID0gYXIuKGkpIGluXG4gICAgICAgICAgIGxldCBsZW5faSA9IGxlbmd0aCBzdHJfaSBpblxuICAgICAgICAgICBibGl0IH5zcmM6c3RyX2kgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczpuZXdfcG9zIH5sZW46bGVuX2k7XG4gICAgICAgICAgIHBvc19yZWYgOj0gbmV3X3BvcyArIGxlbl9pXG4gICAgICAgICBkb25lO1xuICAgICAgICAgcmVzXG4gICBdfSAqKVxuXG5sZXQgY29uY2F0X2FycmF5ID9zZXAgYXIgPSBjb25jYXQgP3NlcCAoQXJyYXkudG9fbGlzdCBhcilcbmxldCBjb25jYXRfbWFwID9zZXAgcyB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXAgKHRvX2FycmF5IHMpIH5mKVxubGV0IGNvbmNhdF9tYXBpID9zZXAgdCB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXBpICh0b19hcnJheSB0KSB+ZilcblxubGV0IGNvbmNhdF9saW5lcyA9XG4gIGxldCByZWMgbGluZV9sZW5ndGhzIH5saW5lcyB+bmV3bGluZV9sZW4gfnN1bSA9XG4gICAgbWF0Y2ggbGluZXMgd2l0aFxuICAgIHwgW10gLT4gc3VtXG4gICAgfCBsaW5lIDo6IGxpbmVzIC0+XG4gICAgICBsZXQgc3VtID0gc3VtICsgU3RyaW5nLmxlbmd0aCBsaW5lICsgbmV3bGluZV9sZW4gaW5cbiAgICAgIGxpbmVfbGVuZ3RocyB+bGluZXMgfm5ld2xpbmVfbGVuIH5zdW1cbiAgaW5cbiAgbGV0IHJlYyB3cml0ZV9saW5lcyB+YnVmIH5saW5lcyB+Y3JsZiB+cG9zID1cbiAgICBtYXRjaCBsaW5lcyB3aXRoXG4gICAgfCBbXSAtPiBwb3NcbiAgICB8IGxpbmUgOjogbGluZXMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOmxpbmVcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0OmJ1ZlxuICAgICAgICB+ZHN0X3Bvczpwb3NcbiAgICAgICAgfmxlbjooU3RyaW5nLmxlbmd0aCBsaW5lKTtcbiAgICAgIGxldCBwb3MgPSBwb3MgKyBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBpZiBjcmxmXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyAnXFxyJztcbiAgICAgICAgICBwb3MgKyAxKVxuICAgICAgICBlbHNlIHBvc1xuICAgICAgaW5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyAnXFxuJztcbiAgICAgIGxldCBwb3MgPSBwb3MgKyAxIGluXG4gICAgICB3cml0ZV9saW5lcyB+YnVmIH5saW5lcyB+Y3JsZiB+cG9zXG4gIGluXG4gIGZ1biA/KGNybGYgPSBmYWxzZSkgbGluZXMgLT5cbiAgICBsZXQgbmV3bGluZV9sZW4gPSBpZiBjcmxmIHRoZW4gMiBlbHNlIDEgaW5cbiAgICBsZXQgbGVuID0gbGluZV9sZW5ndGhzIH5uZXdsaW5lX2xlbiB+bGluZXMgfnN1bTowIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgd3JpdHRlbiA9IHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3M6MCBpblxuICAgIGFzc2VydCAod3JpdHRlbiA9IGxlbik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbjs7XG5cbigqIFtmaWx0ZXIgdCBmXSBpcyBpbXBsZW1lbnRlZCBieSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobS5cblxuICAgTGV0IFtuID0gbGVuZ3RoIHRdLlxuXG4gICAxLiBGaW5kIHRoZSBsb3dlc3QgW2ldIHN1Y2ggdGhhdCBbbm90IChmIHQuW2ldKV0uXG5cbiAgIDIuIElmIHRoZXJlIGlzIG5vIHN1Y2ggW2ldLCB0aGVuIHJldHVybiBbdF0uXG5cbiAgIDMuIElmIHRoZXJlIGlzIHN1Y2ggYW4gW2ldLCBhbGxvY2F0ZSBhIHN0cmluZywgW291dF0sIHRvIGhvbGQgdGhlIHJlc3VsdC4gIFtvdXRdIGhhc1xuICAgbGVuZ3RoIFtuIC0gMV0sIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHBvc3NpYmxlIG91dHB1dCBzaXplIGdpdmVuIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3RcbiAgIG9uZSBjaGFyYWN0ZXIgbm90IHNhdGlzZnlpbmcgW2ZdLlxuXG4gICA0LiBDb3B5IGNoYXJhY3RlcnMgYXQgaW5kaWNlcyAwIC4uLiBbaSAtIDFdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA1LiBXYWxrIHRocm91Z2ggY2hhcmFjdGVycyBhdCBpbmRpY2VzIFtpKzFdIC4uLiBbbi0xXSBvZiBbdF0sIGNvcHlpbmcgdGhvc2UgdGhhdFxuICAgc2F0aXNmeSBbZl0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDYuIElmIHdlIGNvbXBsZXRlbHkgZmlsbGVkIFtvdXRdLCB0aGVuIHJldHVybiBpdC4gIElmIG5vdCwgcmV0dXJuIHRoZSBwcmVmaXggb2YgW291dF1cbiAgIHRoYXQgd2UgZGlkIGZpbGwgaW4uXG5cbiAgIFRoaXMgYWxnb3JpdGhtIGhhcyB0aGUgcHJvcGVydHkgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IHN0cmluZyBpZiB0aGVyZSdzXG4gICBub3RoaW5nIHRvIGZpbHRlciwgd2hpY2ggaXMgYSBjb21tb24gY2FzZS4gKilcbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmICFpIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmICFpIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBTb21lIChkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfaWZfZXhpc3RzIHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9leG4gcyB+cHJlZml4ID1cbiAgbWF0Y2ggY2hvcF9wcmVmaXggcyB+cHJlZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3ByZWZpeF9leG4gJVMgJVNcIiBzIHByZWZpeCAoKVxuOztcblxubGV0IGNob3Bfc3VmZml4IHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBTb21lIChkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfaWZfZXhpc3RzIHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9leG4gcyB+c3VmZml4ID1cbiAgbWF0Y2ggY2hvcF9zdWZmaXggcyB+c3VmZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3N1ZmZpeF9leG4gJVMgJVNcIiBzIHN1ZmZpeCAoKVxuOztcblxubW9kdWxlIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXggPSBzdHJ1Y3RcbiAgKCogV2hlbiB0YWtpbmcgYSBzdHJpbmcgcHJlZml4IG9yIHN1ZmZpeCwgd2UgZXh0cmFjdCBmcm9tIHRoZSBzaG9ydGVzdCBpbnB1dCBhdmFpbGFibGVcbiAgICAgaW4gY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gb25lIG9mIG91ciBpbnB1dHMgd2l0aG91dCBhbGxvY2F0aW5nIGEgbmV3IHN0cmluZy4gKilcblxuICBsZXQgc2hvcnRlciBhIGIgPSBpZiBsZW5ndGggYSA8PSBsZW5ndGggYiB0aGVuIGEgZWxzZSBiXG5cbiAgbGV0IHNob3J0ZXN0IGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpmaXJzdCB+ZjpzaG9ydGVyXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIGZvciBjb21tb24gcHJlZml4L3N1ZmZpeCBhYnN0cmFjdCBvdmVyIFtnZXRfcG9zXSwgd2hpY2ggaXNcbiAgICAgZWl0aGVyIFtwb3NfZnJvbV9sZWZ0XSBvciBbcG9zX2Zyb21fcmlnaHRdLiAqKVxuXG4gIGxldCBwb3NfZnJvbV9sZWZ0IChfIDogdCkgKGkgOiBpbnQpID0gaVxuICBsZXQgcG9zX2Zyb21fcmlnaHQgdCBpID0gbGVuZ3RoIHQgLSBpIC0gMVxuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhciA9XG4gICAgaWYgbGVuX3NvX2ZhciA+PSBtYXhfbGVuXG4gICAgdGhlbiBtYXhfbGVuXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGEgKGdldF9wb3MgYSBsZW5fc29fZmFyKSlcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYiAoZ2V0X3BvcyBiIGxlbl9zb19mYXIpKVxuICAgIHRoZW4gY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjoobGVuX3NvX2ZhciArIDEpXG4gICAgZWxzZSBsZW5fc29fZmFyXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zID1cbiAgICBsZXQgbWF4X2xlbiA9IG1pbiAobGVuZ3RoIGEpIChsZW5ndGggYikgaW5cbiAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgOztcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IGxpc3QgfmdldF9wb3Mgfm1heF9sZW4gPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbWF4X2xlblxuICAgIHwgc2Vjb25kIDo6IHJlc3QgLT5cbiAgICAgIGxldCBtYXhfbGVuID1cbiAgICAgICAgKCogV2UgY2FsbCBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhbiBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF0gc29cbiAgICAgICAgICAgdGhhdCBbbWF4X2xlbl0gbGltaXRzIG91ciB0cmF2ZXJzYWwgb2YgW2ZpcnN0XSBhbmQgW3NlY29uZF0uICopXG4gICAgICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBmaXJzdCBzZWNvbmQgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICAgICAgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIHNlY29uZCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIFByZWNvbXB1dGluZyBbbWF4X2xlbl0gYmFzZWQgb24gW3Nob3J0ZXN0IGxpc3RdIHNhdmVzIHVzIHdvcmsgaW4gbG9uZ2VyIHN0cmluZ3MsXG4gICAgICAgICBhdCB0aGUgY29zdCBvZiBhbiBleHRyYSBwYXNzIG92ZXIgdGhlIHNwaW5lIG9mIFtsaXN0XS5cblxuICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSdyZSBsb29raW5nIGZvciB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgdGhlIHN0cmluZ3M6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICBsZXQgbG9uZ19hID0gTGlzdC5pbml0IDEwMDAgfmY6KEZuLmNvbnN0ICdhJylcbiAgICAgICAgICAgIFsgbG9uZ19hOyBsb25nX2E7ICdhYScgXVxuICAgICAgICAgdn1cblxuICAgICAgICAgdGhlIGFwcHJvYWNoIGJlbG93IHdpbGwganVzdCBjaGVjayB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgYWxsIHRoZSBzdHJpbmdzLlxuICAgICAgKilcbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIChzaG9ydGVzdCBsaXN0KSBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyB0aGF0IHByb2R1Y2UgYSBzdHJpbmcgYWJzdHJhY3Qgb3ZlciBbdGFrZV0sIHdoaWNoIGlzIGVpdGhlclxuICAgICBbcHJlZml4XSBvciBbc3VmZml4XS4gKilcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyIGEgYiB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbGV0IGxlbiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zIGluXG4gICAgKCogVXNlIHRoZSBzaG9ydGVyIG9mIHRoZSB0d28gc3RyaW5ncywgc28gdGhhdCBpZiB0aGUgc2hvcnRlciBvbmUgaXMgdGhlIHNoYXJlZFxuICAgICAgIHByZWZpeCwgW3Rha2VdIHdvbid0IGFsbG9jYXRlIGFub3RoZXIgc3RyaW5nLiAqKVxuICAgIHRha2UgKHNob3J0ZXIgYSBiKSBsZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMgbGlzdCB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBBcyB3aXRoIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdLCB3ZSBiYXNlIFttYXhfbGVuXSBvbiBbc2hvcnRlc3QgbGlzdF0uIFdlIGFsc29cbiAgICAgICAgIHVzZSB0aGlzIHJlc3VsdCBmb3IgW3Rha2VdLCBiZWxvdywgdG8gcG90ZW50aWFsbHkgYXZvaWQgYWxsb2NhdGluZyBhIHN0cmluZy4gKilcbiAgICAgIGxldCBzID0gc2hvcnRlc3QgbGlzdCBpblxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggcyBpblxuICAgICAgaWYgbWF4X2xlbiA9IDBcbiAgICAgIHRoZW4gXCJcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICgqIFdlIGNhbGwgZGlyZWN0bHkgaW50byBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuXG4gICAgICAgICAgICAgW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0gdG8gYXZvaWQgcmVjb21wdXRpbmcgW3Nob3J0ZXN0IGxpc3RdLiAqKVxuICAgICAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgICAgICAgaW5cbiAgICAgICAgdGFrZSBzIGxlbilcbiAgOztcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXhcblxuICBsZXQgY29tbW9uX3ByZWZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG5lbmRcblxuKCogVGhlcmUgdXNlZCB0byBiZSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdhcyBmYXN0ZXIgZm9yIHZlcnkgc2hvcnQgc3RyaW5nc1xuICAgKHBlYWtpbmcgYXQgNDAlIGZhc3RlciBmb3IgNC02IGNoYXIgbG9uZyBzdHJpbmdzKS5cbiAgIFRoaXMgbmV3IGZ1bmN0aW9uIGlzIGFyb3VuZCAyMCUgZmFzdGVyIHRoYW4gdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiwgYnV0IHNsb3dlclxuICAgdGhhbiB0aGUgcHJldmlvdXMgY3VzdG9tIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB0aGUgbmV3IE9DYW1sIGZ1bmN0aW9uIGlzIHdlbGxcbiAgIGJlaGF2ZWQsIGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIGxlc3MgbGlrZWx5IHRvIGRpdmVyZ2UgZnJvbSB0aGUgZGVmYXVsdCBPQ2FtbFxuICAgaW1wbGVtZW50YXRpb24gZG9lcywgd2hpY2ggaXMgYSBkZXNpcmFibGUgcHJvcGVydHkuIChUaGUgb25seSB3YXkgdG8gYXZvaWQgdGhlXG4gICBkaXZlcmdlbmNlIGlzIHRvIGV4cG9zZSB0aGUgbWFjcm8gcmVkZWZpbmVkIGluIGhhc2hfc3R1YnMuYyBpbiB0aGUgaGFzaC5oIGhlYWRlciBvZlxuICAgdGhlIE9DYW1sIGNvbXBpbGVyLikgKilcbm1vZHVsZSBIYXNoID0gc3RydWN0XG4gIGV4dGVybmFsIGhhc2ggOiBzdHJpbmcgLT4gaW50ID0gXCJCYXNlX2hhc2hfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmVuZFxuXG4oKiBbaW5jbHVkZSBIYXNoXSB0byBtYWtlIHRoZSBbZXh0ZXJuYWxdIHZlcnNpb24gb3ZlcnJpZGUgdGhlIFtoYXNoXSBmcm9tXG4gICBbSGFzaGFibGUuTWFrZV9iaW5hYmxlXSwgc28gdGhhdCB3ZSBnZXQgYSBsaXR0bGUgYml0IG9mIGEgc3BlZWR1cCBieSBleHBvc2luZyBpdCBhc1xuICAgZXh0ZXJuYWwgaW4gdGhlIG1saS4gKilcbmxldCBfID0gaGFzaFxuXG5pbmNsdWRlIEhhc2hcblxuKCogZm9yIGludGVyYWN0aXZlIHRvcC1sZXZlbHMgLS0gbW9kdWxlcyBkZXJpdmluZyBmcm9tIFN0cmluZyBzaG91bGQgaGF2ZSBTdHJpbmcncyBwcmV0dHlcbiAgIHByaW50ZXIuICopXG5sZXQgcHAgcHBmIHN0cmluZyA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCIlU1wiIHN0cmluZ1xubGV0IG9mX2NoYXIgYyA9IG1ha2UgMSBjXG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHQgaSBjKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0XG47O1xuXG5sZXQgb2ZfbGlzdCA9IG9mX2NoYXJfbGlzdFxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LmdldCBhKVxubGV0IGFwcGVuZCA9ICggXiApXG5cbmxldCBwYWRfcmlnaHQgPyhjaGFyID0gJyAnKSBzIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzIGluXG4gIGlmIHNyY19sZW4gPj0gbGVuXG4gIHRoZW4gc1xuICBlbHNlIChcbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+ZHN0OnJlcyB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjpzcmNfbGVuO1xuICAgIEJ5dGVzLmZpbGwgfnBvczpzcmNfbGVuIH5sZW46KGxlbiAtIHNyY19sZW4pIHJlcyBjaGFyO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IHBhZF9sZWZ0ID8oY2hhciA9ICcgJykgcyB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggcyBpblxuICBpZiBzcmNfbGVuID49IGxlblxuICB0aGVuIHNcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfmRzdDpyZXMgfnNyY19wb3M6MCB+ZHN0X3BvczoobGVuIC0gc3JjX2xlbikgfmxlbjpzcmNfbGVuO1xuICAgIEJ5dGVzLmZpbGwgfnBvczowIH5sZW46KGxlbiAtIHNyY19sZW4pIHJlcyBjaGFyO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxuKCogQ2FsbGVkIHVwb24gZmlyc3QgZGlmZmVyZW5jZSBnZW5lcmF0ZWQgYnkgZmlsdGVyaW5nLiBBbGxvY2F0ZXMgW2J1ZmZlcl9sZW5dIGJ5dGVzXG4gICBmb3IgbmV3IHJlc3VsdCwgYW5kIGNvcGllcyBbcHJlZml4X2xlbl0gdW5jaGFuZ2VkIGNoYXJhY3RlcnMgZnJvbSBbc3JjXS5cbiAgIEFsd2F5cyByZXR1cm5zIGEgbG9jYWwgYnVmZmVyLiAqKVxubGV0IGxvY2FsX2NvcHlfcHJlZml4IChzcmMgW0Bsb2NhbF0pIH5wcmVmaXhfbGVuIH5idWZmZXJfbGVuID1cbiAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZV9sb2NhbCBidWZmZXJfbGVuIGluXG4gIEJ5dGVzLlByaW1pdGl2ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfmRzdCB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjpwcmVmaXhfbGVuO1xuICAgZHN0XG47O1xuXG4oKiBDb3BpZXMgYSBwZXJoYXBzLWxvY2FsIGJ1ZmZlciBpbnRvIGEgZGVmaW5pdGVseS1nbG9iYWwgc3RyaW5nLiAqKVxubGV0IGxvY2FsX2NvcHlfdG9fc3RyaW5nIChidWYgW0Bsb2NhbF0pIH5wb3MgPVxuICBsZXQgc3RyID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWYgaW5cbiAgdW5zYWZlX3N1YiBzdHIgfnBvczowIH5sZW46cG9zIFtAbm9udGFpbF1cbjs7XG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gc3RydWN0XG4gICAgKCogZmlsdGVyX21hcCBoZWxwZXJzICopXG5cbiAgICAoKiBGaWx0ZXJzIGZyb20gc3RyaW5nIFtzcmNdIGludG8gYW4gYWxsb2NhdGVkIGJ1ZmZlciBbZHN0XTtcbiAgICAgICBjb3BpZXMgdGhlIGFsbG9jYXRlZCBidWZmZXIgdG8gYSBoZWFwLWFsbG9jYXRlZCByZXN1bHQgc3RyaW5nLlxuXG4gICAgICAgUHJlLWNvbmRpdGlvbnM6XG4gICAgICAgW3NyY19sZW4gPSBsZW5ndGggc3JjXVxuICAgICAgIFtzcmMgIT0gZHN0XVxuICAgICAgIFswIDw9IHNyY19wb3MgPCBzcmNfbGVuXVxuICAgICAgIFswIDw9IGRzdF9wb3MgPCBsZW5ndGggZHN0XVxuICAgICopXG4gICAgbGV0IGZpbHRlcl9tYXBpX2ludG8gc3JjIChkc3QgW0Bsb2NhbF0pIH5mIH5zcmNfcG9zIH5kc3RfcG9zIH5zcmNfbGVuID1cbiAgICAgIGxldCBkc3RfcG9zID0gIChyZWYgZHN0X3BvcykgaW5cbiAgICAgIGZvciBzcmNfcG9zID0gc3JjX3BvcyB0byBzcmNfbGVuIC0gMSBkb1xuICAgICAgICBtYXRjaCBmIHNyY19wb3MgKHVuc2FmZV9nZXQgc3JjIHNyY19wb3MpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBkc3QgIWRzdF9wb3MgYztcbiAgICAgICAgICBpbmNyIGRzdF9wb3NcbiAgICAgIGRvbmU7XG4gICAgICBsb2NhbF9jb3B5X3RvX3N0cmluZyBkc3QgfnBvczohZHN0X3Bvc1xuICAgIDs7XG5cbiAgICAoKiBGaWx0ZXJzIFt0XS4gSWYgdGhlIHJlc3VsdCB0dXJucyBvdXQgdG8gYmUgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dCwgcmV0dXJucyBbdF1cbiAgICAgICBkaXJlY3RseSB3aXRob3V0IG5lZWRpbmcgdG8gYWxsb2NhdGUgYSBidWZmZXIgYW5kIHRyYXZlcnNlIHRoZSBzdHJpbmcgdHdpY2UuXG5cbiAgICAgICBQcmUtY29uZGl0aW9uOiBbbGVuID09IGxlbmd0aCB0XVxuICAgICAgIFByZS1jb25kaXRpb246IFswIDw9IHBvcyA8PSBsZW5dICopXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjMSA9IHVuc2FmZV9nZXQgdCBwb3MgaW5cbiAgICAgICAgbGV0IG5leHQgPSBJbnQuc3VjYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggZiBwb3MgYzEgd2l0aFxuICAgICAgICB8IFNvbWUgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgICAgKCogaWYgbm90aGluZyBoYXMgY2hhbmdlZCwgY29udGludWUgKilcbiAgICAgICAgICBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3M6bmV4dCB+bGVuXG4gICAgICAgIHwgb3B0aW9uIC0+XG4gICAgICAgICAgKCogSWYgYSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hhbmdlZCBvciBkcm9wcGVkLCBiZWdpbiBhbiBvdXRwdXQgYnVmZmVyIHVwIHRvXG4gICAgICAgICAgICAgW3Bvc10sIGFuZCB3cml0ZSB0aGUgbmV3IGNoYXJhY3RlciBpbnRvIGl0LiAqKVxuICAgICAgICAgIGxldCBjb3B5ID0gbG9jYWxfY29weV9wcmVmaXggdCB+cHJlZml4X2xlbjpwb3MgfmJ1ZmZlcl9sZW46bGVuIGluXG4gICAgICAgICAgbGV0IGRzdF9wb3MgPVxuICAgICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgY29weSBwb3MgYztcbiAgICAgICAgICAgICAgbmV4dFxuICAgICAgICAgIGluXG4gICAgICAgICAgZmlsdGVyX21hcGlfaW50byB0IGNvcHkgfmYgfnNyY19wb3M6bmV4dCB+ZHN0X3BvcyB+c3JjX2xlbjpsZW4gW0Bub250YWlsXSlcbiAgICA7O1xuICBlbmRcblxuICAoKiBmaWx0ZXJfbWFwIGZ1bmN0aW9ucyAqKVxuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gZmlsdGVyX21hcGlfbWF5YmVfaWQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gXyBjIC0+IGYgYykgW0Bub250YWlsXVxuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gc3RydWN0XG4gICAgKCogcGFydGl0aW9uIGhlbHBlcnMgKilcblxuICAgIGxldCBwYXJ0aXRpb25fbWFwX2ludG8gc3JjIH5mc3RzIH5zbmRzIH5mIH5sZW4gfnNyY19wb3MgfmZzdF9wb3MgfnNuZF9wb3MgPVxuICAgICAgbGV0IGZzdF9wb3MgPSAgKHJlZiBmc3RfcG9zKSBpblxuICAgICAgbGV0IHNuZF9wb3MgPSAgKHJlZiBzbmRfcG9zKSBpblxuICAgICAgZm9yIHNyY19wb3MgPSBzcmNfcG9zIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggIChmICh1bnNhZmVfZ2V0IHNyYyBzcmNfcG9zKSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGZzdHMgIWZzdF9wb3MgYztcbiAgICAgICAgICBpbmNyIGZzdF9wb3NcbiAgICAgICAgfCBTZWNvbmQgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgc25kcyAhc25kX3BvcyBjO1xuICAgICAgICAgIGluY3Igc25kX3Bvc1xuICAgICAgZG9uZTtcbiAgICAgIGxvY2FsX2NvcHlfdG9fc3RyaW5nIGZzdHMgfnBvczohZnN0X3BvcywgbG9jYWxfY29weV90b19zdHJpbmcgc25kcyB+cG9zOiFzbmRfcG9zXG4gICAgOztcblxuICAgIGxldCBwYXJ0aXRpb25fbWFwX2RpZmZlcmVuY2Ugc3JjIH5mIH5sZW4gfnBvczpzcmNfcG9zIH5mc3RfcG9zIH5zbmRfcG9zIGVpdGhlciA9XG4gICAgICBsZXQgZnN0cyA9IGxvY2FsX2NvcHlfcHJlZml4IHNyYyB+cHJlZml4X2xlbjpmc3RfcG9zIH5idWZmZXJfbGVuOmxlbiBpblxuICAgICAgbGV0IHNuZHMgPSBsb2NhbF9jb3B5X3ByZWZpeCBzcmMgfnByZWZpeF9sZW46c25kX3BvcyB+YnVmZmVyX2xlbjpsZW4gaW5cbiAgICAgIGxldCBmc3RfcG9zLCBzbmRfcG9zID1cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGZzdHMgZnN0X3BvcyBjO1xuICAgICAgICAgICAoZnN0X3BvcyArIDEsIHNuZF9wb3MpXG4gICAgICAgIHwgU2Vjb25kIGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHNuZHMgc25kX3BvcyBjO1xuICAgICAgICAgICAoZnN0X3Bvcywgc25kX3BvcyArIDEpXG4gICAgICBpblxuICAgICAgcGFydGl0aW9uX21hcF9pbnRvXG4gICAgICAgIHNyY1xuICAgICAgICB+ZnN0c1xuICAgICAgICB+c25kc1xuICAgICAgICB+ZlxuICAgICAgICB+bGVuXG4gICAgICAgIH5zcmNfcG9zOihzcmNfcG9zICsgMSlcbiAgICAgICAgfmZzdF9wb3NcbiAgICAgICAgfnNuZF9wb3MgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbl9tYXBfZmlyc3RfbWF5YmVfaWQgc3JjIH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gc3JjLCBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgcG9zIGluXG4gICAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZmlyc3RfbWF5YmVfaWQgc3JjIH5mIH5sZW4gfnBvczoocG9zICsgMSlcbiAgICAgICAgfCBlaXRoZXIgLT5cbiAgICAgICAgICBwYXJ0aXRpb25fbWFwX2RpZmZlcmVuY2VcbiAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgIH5mc3RfcG9zOnBvc1xuICAgICAgICAgICAgfnNuZF9wb3M6MFxuICAgICAgICAgICAgZWl0aGVyIFtAbm9udGFpbF0pXG4gICAgOztcblxuICAgIGxldCByZWMgcGFydGl0aW9uX21hcF9zZWNvbmRfbWF5YmVfaWQgc3JjIH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gXCJcIiwgc3JjXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgcG9zIGluXG4gICAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IFNlY29uZCBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgICBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOihwb3MgKyAxKVxuICAgICAgICB8IGVpdGhlciAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgfmZzdF9wb3M6MFxuICAgICAgICAgICAgfnNuZF9wb3M6cG9zXG4gICAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgICA7O1xuICBlbmRcblxuICAoKiBwYXJ0aXRpb24gZnVuY3Rpb25zICopXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgc3JjIH5mID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFwiXCIsIFwiXCJcbiAgICBlbHNlIChcbiAgICAgIGxldCBjMSA9IHVuc2FmZV9nZXQgc3JjIDAgaW5cbiAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgfCBGaXJzdCBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT4gcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOjFcbiAgICAgIHwgU2Vjb25kIGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOjFcbiAgICAgIHwgZWl0aGVyIC0+XG4gICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgIHNyY1xuICAgICAgICAgIH5mXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5mc3RfcG9zOjBcbiAgICAgICAgICB+c25kX3BvczowXG4gICAgICAgICAgZWl0aGVyIFtAbm9udGFpbF0pXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBwYXJ0aXRpb25fbWFwIHQgfmY6KGZ1biBjIC0+IGlmIGYgYyB0aGVuICAoRmlyc3QgYykgZWxzZSAgKFNlY29uZCBjKSkgW0Bub250YWlsXG4gICAgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFc2NhcGluZyA9IHN0cnVjdFxuICAoKiBJZiB0aGlzIGlzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0byB1cGRhdGUgW2VzY2FwZV0sIHdoaWNoIGF0dGVtcHRzIHRvIGVuc3VyZSBhbGwgdGhlXG4gICAgIGludmFyaWFudHMgY2hlY2tlZCBoZXJlLiAgKilcbiAgbGV0IGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgZnVuYyA9XG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgaWYgTGlzdC5Bc3NvYy5tZW0gZXNjYXBld29ydGh5X21hcCB+ZXF1YWw6Q2hhci5lcXVhbCBlc2NhcGVfY2hhclxuICAgICAgdGhlbiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICBlbHNlIChlc2NhcGVfY2hhciwgZXNjYXBlX2NoYXIpIDo6IGVzY2FwZXdvcnRoeV9tYXBcbiAgICBpblxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgKC0xKSBpblxuICAgIGxldCB2YWxzID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2IGZhbHNlIGluXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gT2sgYXJyXG4gICAgICB8IChjX2Zyb20sIGNfdG8pIDo6IGwgLT5cbiAgICAgICAgbGV0IGssIHYgPVxuICAgICAgICAgIG1hdGNoIGZ1bmMgd2l0aFxuICAgICAgICAgIHwgYEVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX2Zyb20sIGNfdG9cbiAgICAgICAgICB8IGBVbmVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX3RvLCBjX2Zyb21cbiAgICAgICAgaW5cbiAgICAgICAgaWYgYXJyLihrKSA8PiAtMSB8fCB2YWxzLihDaGFyLnRvX2ludCB2KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgICAgXCJlc2NhcGV3b3J0aHlfbWFwIG5vdCBvbmUtdG8tb25lXCJcbiAgICAgICAgICAgICAgIFsgXCJjX2Zyb21cIiwgc2V4cF9vZl9jaGFyIGNfZnJvbVxuICAgICAgICAgICAgICAgOyBcImNfdG9cIiwgc2V4cF9vZl9jaGFyIGNfdG9cbiAgICAgICAgICAgICAgIDsgKCBcImVzY2FwZXdvcnRoeV9tYXBcIlxuICAgICAgICAgICAgICAgICAsIHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2ZfY2hhciBzZXhwX29mX2NoYXIpIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYXJyLihrKSA8LSBDaGFyLnRvX2ludCB2O1xuICAgICAgICAgIHZhbHMuKENoYXIudG9faW50IHYpIDwtIHRydWU7XG4gICAgICAgICAgbG9vcCBsKVxuICAgIGluXG4gICAgbG9vcCBlc2NhcGV3b3J0aHlfbWFwXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBFc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogY2FsY3VsYXRlIGEgbGlzdCBvZiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpIGZpcnN0LCB0aGUgb3JkZXJcbiAgICAgICAgICAgICAgaXMgZnJvbSB0YWlsIHRvIGhlYWQgKilcbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZV9sZW4gPSByZWYgMCBpblxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlID1cbiAgICAgICAgICAgICBmb2xkaSBzcmMgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBjIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IGMpIHdpdGhcbiAgICAgICAgICAgICAgIHwgLTEgLT4gYWNjXG4gICAgICAgICAgICAgICB8IG4gLT5cbiAgICAgICAgICAgICAgICAgKCogKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSAqKVxuICAgICAgICAgICAgICAgICBpbmNyIHRvX2VzY2FwZV9sZW47XG4gICAgICAgICAgICAgICAgIChpLCBDaGFyLnVuc2FmZV9vZl9pbnQgbikgOjogYWNjKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b19lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAoKiBbdG9fZXNjYXBlXSBkaXZpZGUgW3NyY10gdG8gW0xpc3QubGVuZ3RoIHRvX2VzY2FwZSArIDFdIHBpZWNlcyBzZXBhcmF0ZWQgYnlcbiAgICAgICAgICAgICAgICB0aGUgY2hhcnMgdG8gZXNjYXBlLlxuXG4gICAgICAgICAgICAgICAgTGV0cyB0YWtlXG4gICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgIGVzY2FwZV9nZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGV3b3J0aHlfbWFwOlsoJ2EnLCAnQScpOyAoJ2InLCAnQicpOyAoJ2MnLCAnQycpXVxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBlX2NoYXI6J18nXG4gICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgYW5kIGFzc3VtZSB0aGUgc3RyaW5nIHRvIGVzY2FwZSBpc1xuXG4gICAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgICAgdGhlbiBbdG9fZXNjYXBlXSBpcyBbKDExLCAnQycpOyAoNywgJ0InKTsgKDMsICdBJyldLlxuXG4gICAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBbZHN0XSBvZiBsZW5ndGggW2xlbmd0aCBzcmMgKyAzXSB0byBzdG9yZSB0aGVcbiAgICAgICAgICAgICAgICByZXN1bHQsIGNvcHkgcGllY2UgXCIzMzNcIiB0byBbZHN0XSBkaXJlY3RseSwgdGhlbiBjb3B5ICdfJyBhbmQgJ0MnIHRvIFtkc3RdO1xuICAgICAgICAgICAgICAgIHRoZW4gbW92ZSBvbiB0byBuZXh0OyBhZnRlciAzIGl0ZXJhdGlvbnMsIGNvcHkgcGllY2UgXCIwMDBcIiBhbmQgd2UgYXJlIGRvbmUuXG5cbiAgICAgICAgICAgICAgICBGaW5hbGx5IHRoZSByZXN1bHQgd2lsbCBiZVxuXG4gICAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIiAqKVxuICAgICAgICAgICAgIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgICAgICAgICAgIGxldCBkc3RfbGVuID0gc3JjX2xlbiArICF0b19lc2NhcGVfbGVuIGluXG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBkc3RfbGVuIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCAoaWR4LCBlc2NhcGVkX2NoYXIpIDo6IHRvX2VzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKltpZHhdID0gdGhlIGNoYXIgdG8gZXNjYXBlKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSBmaXJzdCBpdGVyYXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICAgICAgICAgICAgICAgKCogY2FsY3VsYXRlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAxIGJlY2F1c2Ugd2UgZG9uJ3QgY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMSBpblxuICAgICAgICAgICAgICAgICAoKiBzZXQgdGhlIGRzdF9wb3MgdG8gY29weSB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIsIHNldCBbc3JjX3Bvc10gdG8gW2lkeCArIDFdIHRvIHNraXAgJ2MnICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDEpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMiB0byBjb3B5ICdfJyBhbmQgJ0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDIgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCBkc3RfcG9zIGVzY2FwZV9jaGFyO1xuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IChkc3RfcG9zICsgMSkgZXNjYXBlZF9jaGFyO1xuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX2VzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gZmlyc3QgKilcbiAgICAgICAgICAgICBsb29wIHNyY19sZW4gZHN0X2xlbiB0b19lc2NhcGU7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuIChlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgZXNjYXBlIH5lc2NhcGV3b3J0aHkgfmVzY2FwZV9jaGFyID1cbiAgICAoKiBGb3IgW2VzY2FwZV9nZW5fZXhuXSwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZml4IGludmFsaWQgZXNjYXBld29ydGh5X21hcCBzbyB3ZSBoYXZlXG4gICAgICAgdG8gcmFpc2UgZXhjZXB0aW9uOyBidXQgaW4gdGhpcyBjYXNlLCB3ZSBrbm93IGhvdyB0byBmaXggZHVwbGljYXRlZCBlbGVtZW50cyBpblxuICAgICAgIGVzY2FwZXdvcnRoeSBsaXN0LCBzbyB3ZSBqdXN0IGZpeCBpdCBpbnN0ZWFkIG9mIHJhaXNpbmcgZXhjZXB0aW9uIHRvIG1ha2UgdGhpc1xuICAgICAgIGZ1bmN0aW9uIGVhc2llciB0byB1c2UuICAqKVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGVzY2FwZXdvcnRoeVxuICAgICAgfD4gTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpDaGFyLmNvbXBhcmVcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gYyAtPiBjLCBjKVxuICAgIGluXG4gICAgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBVbmVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBDb250aW51ZSB0aGUgZXhhbXBsZSBpbiBbZXNjYXBlX2dlbl9leG5dLCBub3cgd2UgdW5lc2NhcGVcblxuICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiXG5cbiAgICAgICAgICAgICAgYmFjayB0b1xuXG4gICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICBUaGVuIFt0b191bmVzY2FwZV0gaXMgWzE0OyA5OyA0XSwgd2hpY2ggaXMgaW5kZXhlcyBvZiAnXydzLlxuXG4gICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgc3RyaW5nIFtkc3RdIHRvIHN0b3JlIHRoZSByZXN1bHQsIGNvcHkgXCIzMzNcIiB0byBpdCwgdGhlbiBjb3B5XG4gICAgICAgICAgICAgICdjJywgdGhlbiBtb3ZlIG9uIHRvIG5leHQgaXRlcmF0aW9uLiBBZnRlciAzIGl0ZXJhdGlvbnMgY29weSBcIjAwMFwiIGFuZCB3ZSBhcmVcbiAgICAgICAgICAgICAgZG9uZS4gICopXG4gICAgICAgICAgICgqIGluZGV4ZXMgb2YgZXNjYXBlIGNoYXJzICopXG4gICAgICAgICAgIGxldCB0b191bmVzY2FwZSA9XG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzIGFjYyA9XG4gICAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCBzcmNcbiAgICAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHNyYyB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMgaW5cbiAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBpbmcgLT4gaSA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGFjYykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsb29wIDAgYExpdGVyYWwgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fdW5lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZScgLT5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5ndGggc3JjIC0gTGlzdC5sZW5ndGggdG9fdW5lc2NhcGUpIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCogW2lkeF0gPSBpbmRleCBvZiBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgMXN0IGl0ZXJhdGlvbiBhcyBleGFtcGxlLCBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAyIHRvXG4gICAgICAgICAgICAgICAgICAgIHNraXAgJ19DJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAyIGluXG4gICAgICAgICAgICAgICAgICgqIHBvaW50IFtkc3RfcG9zXSB0byB0aGUgcG9zaXRpb24gdG8gY29weSBcIjMzM1wiIHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAyKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDEgdG8gY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMSBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXRcbiAgICAgICAgICAgICAgICAgICBkc3RcbiAgICAgICAgICAgICAgICAgICBkc3RfcG9zXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgc3JjLltpZHggKyAxXSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IC0xIC0+IHNyYy5baWR4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IENoYXIudW5zYWZlX29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICAgKCogdXBkYXRlIFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdICopXG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIGlkeCA8IGxlbmd0aCBzcmMgLSAxXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICgqIGZvciBlc2NhcGVkIHN0cmluZyBlbmRpbmcgd2l0aCBhbiBlc2NhcGluZyBjaGFyIGxpa2UgXCIwMDBfXCIsIGp1c3QgaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGUgbGFzdCBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjIC0gMSkgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlJztcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAodW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgdW5lc2NhcGUgfmVzY2FwZV9jaGFyID0gdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcDpbXSB+ZXNjYXBlX2NoYXJcblxuICBsZXQgcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IHJlYyBsb29wIHAgY250ID1cbiAgICAgIGlmIHAgPCAwIHx8IENoYXIuKCA8PiApIHN0ci5bcF0gZXNjYXBlX2NoYXIgdGhlbiBjbnQgZWxzZSBsb29wIChwIC0gMSkgKGNudCArIDEpXG4gICAgaW5cbiAgICBsb29wIChwb3MgLSAxKSAwXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgb2RkID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBtb2QgMiA9IDEgaW5cbiAgICBtYXRjaCBvZGQsIENoYXIuZXF1YWwgc3RyLltwb3NdIGVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IHRydWUsICh0cnVlIHwgZmFsc2UpIC0+IGBFc2NhcGVkXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBgRXNjYXBpbmdcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBjaGVja19ib3VuZCBzdHIgcG9zIGZ1bmN0aW9uX25hbWUgPVxuICAgIGlmIHBvcyA+PSBsZW5ndGggc3RyIHx8IHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCIlczogb3V0IG9mIGJvdW5kc1wiIGZ1bmN0aW9uX25hbWUgKClcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGluZyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBpbmdcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGluZyAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBlZCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBlZFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwZWQgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwaW5nIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9saXRlcmFsIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9saXRlcmFsXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpbmRleF9mcm9tXCI7XG4gICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzID1cbiAgICAgIGlmIGkgPj0gcG9zXG4gICAgICAmJiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgJiYgQ2hhci5lcXVhbCBzdHIuW2ldIGNoYXJcbiAgICAgIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGkgPSBpICsgMSBpblxuICAgICAgICBpZiBpID49IGxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgbG9vcCBpICh1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgc3RhdHVzKSlcbiAgICBpblxuICAgIGxvb3AgcG9zIChlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zKVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuICBsZXQgaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG5cbiAgbGV0IHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJyaW5kZXhfZnJvbVwiO1xuICAgICgqIGlmIHRoZSB0YXJnZXQgY2hhciBpcyB0aGUgc2FtZSBhcyBbZXNjYXBlX2NoYXJdLCB3ZSBoYXZlIG5vIHdheSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICBlc2NhcGVfY2hhciBpcyBsaXRlcmFsLCBzbyBqdXN0IHJldHVybiBOb25lICopXG4gICAgaWYgQ2hhci5lcXVhbCBjaGFyIGVzY2FwZV9jaGFyXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMFxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVzY2FwZV9jaGFycyA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgaW5cbiAgICAgICAgICBpZiBlc2NhcGVfY2hhcnMgbW9kIDIgPSAwICYmIENoYXIuZXF1YWwgc3RyLltwb3NdIGNoYXJcbiAgICAgICAgICB0aGVuIFNvbWUgcG9zXG4gICAgICAgICAgZWxzZSBsb29wIChwb3MgLSBlc2NhcGVfY2hhcnMgLSAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIHBvcylcbiAgOztcblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwicmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIGlmIGlzX2VtcHR5IHN0ciB0aGVuIE5vbmUgZWxzZSByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gIGxldCByaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgKCogW3NwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbl0gd29ya3Mgc2ltaWxhcmx5IHRvIFtTdHJpbmcuc3BsaXRfZ2VuXSwgd2l0aCBhblxuICAgICBhZGRpdGlvbmFsIHJlcXVpcmVtZW50OiBvbmx5IHNwbGl0IG9uIGxpdGVyYWwgY2hhcnMsIG5vdCBlc2NhcGluZyBvciBlc2NhcGVkICopXG4gIGxldCBzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b24gPVxuICAgIGxldCBpc19kZWxpbSA9XG4gICAgICBtYXRjaCBvbiB3aXRoXG4gICAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgICBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgcG9zID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBMaXN0LnJldiAoc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KGxlbiAtIGxhc3RfcG9zKSA6OiBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHN0YXR1cyBpblxuICAgICAgICBpZiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgICAmJiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoocG9zIC0gbGFzdF9wb3MpIGluXG4gICAgICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHN0YXR1cyAocG9zICsgMSkgKHBvcyArIDEpKVxuICAgICAgICBlbHNlIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyAocG9zICsgMSkpXG4gICAgaW5cbiAgICBsb29wIFtdIGBMaXRlcmFsIDAgMFxuICA7O1xuXG4gIGxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxuICBsZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG4gIGxldCBzcGxpdF9hdCBzdHIgcG9zID1cbiAgICBzdWIgc3RyIH5wb3M6MCB+bGVuOnBvcywgc3ViIHN0ciB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggc3RyIC0gcG9zIC0gMSlcbiAgOztcblxuICBsZXQgbHNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAoaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCByc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChyaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCBsc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAoaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG4gIGxldCByc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAocmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuXG4gICgqIFtsYXN0X25vbl9kcm9wX2xpdGVyYWxdIGFuZCBbZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYXJlIGVpdGhlciBib3RoIFtOb25lXSBvciBib3RoXG4gICAgIFtTb21lXS4gSWYgW1NvbWVdLCB0aGVuIHRoZSBmb3JtZXIgaXMgPj0gdGhlIGxhdHRlci4gKilcbiAgbGV0IGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgcmZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIGxmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG4gIDs7XG5cbiAgbGV0IGxzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIDAgLT4gdFxuICAgIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuICA7O1xuXG4gICgqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG4gIGxldCBzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICAgICgqIHBlcmZvcm1hbmNlIGhhY2s6IGF2b2lkIGNvcHlpbmcgW3RdIGluIGNvbW1vbiBjYXNlcyAqKVxuICAgIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbiAgOztcbmVuZFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbigqIE92ZXJyaWRlIFtTZWFyY2hfcGF0dGVybl0gd2l0aCBkZWZhdWx0IGNhc2Utc2Vuc2l0aXZpdHkgYXJndW1lbnQgYXQgdGhlIGVuZCBvZiB0aGVcbiAgIGZpbGUsIHNvIHRoYXQgY2FsbCBzaXRlcyBhYm92ZSBhcmUgZm9yY2VkIHRvIHN1cHBseSBjYXNlLXNlbnNpdGl2aXR5IGV4cGxpY2l0bHkuICopXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZWFyY2hfcGF0dGVybjBcblxuICBsZXQgY3JlYXRlID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKSBwYXR0ZXJuID0gY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfYnl0ZXMgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGJ5dGVzX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2J5dGVzIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJ5dGVzX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBCeXRlczBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQnl0ZXNcIlxuICBsZXQgcHAgZm10IHQgPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiAodG9fc3RyaW5nIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBUb19ieXRlcyA9IEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChUKSAoVG9fYnl0ZXMpXG5cbm1vZHVsZSBGcm9tX3N0cmluZyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIG4gMFxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJCeXRlcy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IHNldCB0IGkgYyk7XG4gIHRcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IChpIC0gMSkgKHVuc2FmZV9nZXQgdCBpIDo6IGFjYylcbiAgaW5cbiAgbG9vcCB0IChsZW5ndGggdCAtIDEpIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5sZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZlxubGV0IG1hcGkgdCB+ZiA9IG1hcGkgdCB+ZlxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgcG9zIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgcyBpKSB0YXJnZXQgdGhlbiB1bnNhZmVfc2V0IHMgaSByZXBsYWNlbWVudFxuICBkb25lXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgMFxuICB0aGVuIHN0YWdlIGlnbm9yZVxuICBlbHNlIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcInRyX211bHRpOiByZXBsYWNlbWVudCBpcyB0aGUgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIGlnbm9yZVxuICAgIHwgU29tZSB0cl9tYXAgLT5cbiAgICAgIHN0YWdlIChmdW4gcyAtPlxuICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBzIGkgKFN0cmluZy51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgKHVuc2FmZV9nZXQgcyBpKSkpXG4gICAgICAgIGRvbmUpKVxuOztcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGNvbnRhaW5zID9wb3MgP2xlbiB0IGNoYXIgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxhc3QgPSBwb3MgKyBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSBsYXN0XG4gICAgJiYgKENoYXIuZXF1YWwgKGdldCB0IGkpIGNoYXIgfHwgbG9vcCAoaSArIDEpKVxuICBpblxuICBsb29wIHBvc1xuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiIyAxIFwic3JjL2hleF9sZXhlci5tbGxcIlxuIFxudHlwZSByZXN1bHQgPVxufCBOZWcgb2Ygc3RyaW5nXG58IFBvcyBvZiBzdHJpbmdcblxuIyA4IFwic3JjL2hleF9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDA4MlxcMDAwXFwxMDVcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcGFyc2VfaGV4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTM1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTQgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggTmVnIGJvZHkgKVxuIyAxMzkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxNDUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBQb3MgYm9keSApXG4jIDE0OSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgY29udmVydF9mYWlsdXJlIHggYSBiIHRvX3N0cmluZyA9XG4gIFByaW50Zi5mYWlsd2l0aGZcbiAgICBcImNvbnZlcnNpb24gZnJvbSAlcyB0byAlcyBmYWlsZWQ6ICVzIGlzIG91dCBvZiByYW5nZVwiXG4gICAgYVxuICAgIGJcbiAgICAodG9fc3RyaW5nIHgpXG4gICAgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgbnVtX2JpdHNfaW50ID0gU3lzLmludF9zaXplX2luX2JpdHNcbmxldCBudW1fYml0c19pbnQzMiA9IDMyXG5sZXQgbnVtX2JpdHNfaW50NjQgPSA2NFxubGV0IG51bV9iaXRzX25hdGl2ZWludCA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA9IDYzIHx8IG51bV9iaXRzX2ludCA9IDMxIHx8IG51bV9iaXRzX2ludCA9IDMyKVxubGV0IG1pbl9pbnQzMiA9IFN0ZGxpYi5JbnQzMi5taW5faW50XG5sZXQgbWF4X2ludDMyID0gU3RkbGliLkludDMyLm1heF9pbnRcbmxldCBtaW5faW50NjQgPSBTdGRsaWIuSW50NjQubWluX2ludFxubGV0IG1heF9pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5tYXhfaW50XG5sZXQgbWluX25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQubWluX2ludFxubGV0IG1heF9uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm1heF9pbnRcbmxldCBpbnRfdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9pbnRcbmxldCBpbnQzMl90b19zdHJpbmcgPSBTdGRsaWIuSW50MzIudG9fc3RyaW5nXG5sZXQgaW50NjRfdG9fc3RyaW5nID0gU3RkbGliLkludDY0LnRvX3N0cmluZ1xubGV0IG5hdGl2ZWludF90b19zdHJpbmcgPSBTdGRsaWIuTmF0aXZlaW50LnRvX3N0cmluZ1xuXG4oKiBpbnQgPC0+IGludDMyICopXG5cbmxldCBpbnRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnRcIiBcImludDMyXCIgaW50X3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDMyXCIgXCJpbnRcIiBpbnQzMl90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfdHJ1bmMgPSBTdGRsaWIuSW50MzIudG9faW50XG5sZXQgaW50X3RvX2ludDMyX3RydW5jID0gU3RkbGliLkludDMyLm9mX2ludFxuXG5sZXQgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19pbnRfdHJ1bmMgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX2ludF90cnVuYyBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBpZiBudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1heF92YWx1ZSBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50MzIgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDMyIHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50X3RvX2ludDMyIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDMyX3RvX2ludCB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDMyX3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gaW50X3RvX2ludDMyX3RydW5jIHggZWxzZSBpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG5sZXQgaW50MzJfdG9faW50X2V4biB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDMyX3RvX2ludF90cnVuYyB4IGVsc2UgaW50MzJfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBpbnQ2NCAqKVxuXG5sZXQgaW50NjRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPCBudW1fYml0c19pbnQ2NClcbmxldCBpbnRfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfaW50XG5sZXQgaW50NjRfdG9faW50X3RydW5jID0gU3RkbGliLkludDY0LnRvX2ludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBsZXQgbWluID0gaW50X3RvX2ludDY0IEludC5taW5fdmFsdWUgaW5cbiAgbGV0IG1heCA9IGludF90b19pbnQ2NCBJbnQubWF4X3ZhbHVlIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQ2NF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDY0X3RvX2ludF90cnVuYyB4IGVsc2UgaW50NjRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludFwiIG5hdGl2ZWludF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnRfdG9fbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5vZl9pbnRcbmxldCBuYXRpdmVpbnRfdG9faW50X3RydW5jID0gU3RkbGliLk5hdGl2ZWludC50b19pbnRcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9fbmF0aXZlaW50IEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX25hdGl2ZWludCBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50X3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQzMlwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludDMyX3RvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX2ludDMyXG5sZXQgaW50NjRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuSW50NjQudG9faW50MzJcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBsZXQgbWluID0gaW50MzJfdG9faW50NjQgbWluX2ludDMyIGluXG4gIGxldCBtYXggPSBpbnQzMl90b19pbnQ2NCBtYXhfaW50MzIgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludDMyIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnQ2NF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIGludDY0X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDMyIDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHggPVxuICBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50MzJcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG47O1xuXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQzMl90b19uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludDMyXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX3RydW5jID0gU3RkbGliLk5hdGl2ZWludC50b19pbnQzMlxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19uYXRpdmVpbnQgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX25hdGl2ZWludCBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJuYXRpdmVpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50NjQgPj0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDY0X3RvX25hdGl2ZWludF90cnVuYyA9IFN0ZGxpYi5JbnQ2NC50b19uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfbmF0aXZlaW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCA9XG4gIGlmIG51bV9iaXRzX2ludDY0IDw9IG51bV9iaXRzX25hdGl2ZWludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IG5hdGl2ZWludF90b19pbnQ2NCBtaW5fbmF0aXZlaW50IGluXG4gICAgbGV0IG1heCA9IG5hdGl2ZWludF90b19pbnQ2NCBtYXhfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBTb21lIChpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IGludDYzICopXG5cbmxldCBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQ2M1wiIGludDY0X3RvX3N0cmluZ1xuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyA9XG4gIGxldCBtaW4gPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgbWluX2ludDY0IDEgaW5cbiAgbGV0IG1heCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBtYXhfaW50NjQgMSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfZml0X29uX2ludDYzX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gKCkgZWxzZSBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHhcbjs7XG5cbigqIHN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG5sZXQgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyID1cbiAgbGV0IGlucHV0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgaWYgaW5wdXRfbGVuZ3RoIDw9IGNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgdGhlbiBpbnB1dFxuICBlbHNlIChcbiAgICBsZXQgaGFzX3NpZ24gPVxuICAgICAgbWF0Y2ggaW5wdXQuWzBdIHdpdGhcbiAgICAgIHwgJysnIHwgJy0nIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IG51bV9kaWdpdHMgPSBpZiBoYXNfc2lnbiB0aGVuIGlucHV0X2xlbmd0aCAtIDEgZWxzZSBpbnB1dF9sZW5ndGggaW5cbiAgICBsZXQgbnVtX2RlbGltaXRlcnMgPSAobnVtX2RpZ2l0cyAtIDEpIC8gY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBvdXRwdXRfbGVuZ3RoID0gaW5wdXRfbGVuZ3RoICsgbnVtX2RlbGltaXRlcnMgaW5cbiAgICBsZXQgb3V0cHV0ID0gQnl0ZXMuY3JlYXRlIG91dHB1dF9sZW5ndGggaW5cbiAgICBsZXQgaW5wdXRfcG9zID0gcmVmIChpbnB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBvdXRwdXRfcG9zID0gcmVmIChvdXRwdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IHJlZiBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IGZpcnN0X2RpZ2l0X3BvcyA9IGlmIGhhc19zaWduIHRoZW4gMSBlbHNlIDAgaW5cbiAgICB3aGlsZSAhaW5wdXRfcG9zID49IGZpcnN0X2RpZ2l0X3BvcyBkb1xuICAgICAgaWYgIW51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBkZWxpbWl0ZXI7XG4gICAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgICAgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA6PSBjaGFyc19wZXJfZGVsaW1pdGVyKTtcbiAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgaW5wdXQuWyFpbnB1dF9wb3NdO1xuICAgICAgZGVjciBpbnB1dF9wb3M7XG4gICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICBkZWNyIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXJcbiAgICBkb25lO1xuICAgIGlmIGhhc19zaWduIHRoZW4gQnl0ZXMuc2V0IG91dHB1dCAwIGlucHV0LlswXTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dHB1dClcbjs7XG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXIgPVxuICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXI6M1xuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyBpbnB1dCA9IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlcjonXydcbmxldCBzZXhwX29mX2ludF9zdHlsZSA9IFNleHAub2ZfaW50X3N0eWxlXG5cbm1vZHVsZSBNYWtlIChJIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBJXG5cbiAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSAzXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPVxuICAgIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKHRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgcyA9IHRvX3N0cmluZyB0IGluXG4gICAgU2V4cC5BdG9tXG4gICAgICAobWF0Y2ggIXNleHBfb2ZfaW50X3N0eWxlIHdpdGhcbiAgICAgICB8IGBVbmRlcnNjb3JlcyAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IHMgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgfmRlbGltaXRlcjonXydcbiAgICAgICB8IGBOb191bmRlcnNjb3JlcyAtPiBzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2hleCAoSSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgbmVnIDogdCAtPiB0XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUX2hleCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEkudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKEkuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBJLmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IEkuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDRcblxuICAgIGxldCB0b19zdHJpbmcnID9kZWxpbWl0ZXIgdCA9XG4gICAgICBsZXQgbWFrZV9zdWZmaXggPVxuICAgICAgICBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSS50b19zdHJpbmdcbiAgICAgICAgfCBTb21lIGRlbGltaXRlciAtPlxuICAgICAgICAgIGZ1biB0IC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKEkudG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgICAgIGluXG4gICAgICBpZiBJLiggPCApIHQgSS56ZXJvIHRoZW4gXCItMHhcIiBeIG1ha2Vfc3VmZml4IChJLm5lZyB0KSBlbHNlIFwiMHhcIiBeIG1ha2Vfc3VmZml4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nJyB0ID9kZWxpbWl0ZXI6Tm9uZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID0gdG9fc3RyaW5nJyB0IH5kZWxpbWl0ZXJcblxuICAgIGxldCBpbnZhbGlkIHN0ciA9XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiJXMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgSS5tb2R1bGVfbmFtZSBzdHIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBzdHIgPVxuICAgICAgSS5vZl9zdHJpbmcgKFN0cmluZy5maWx0ZXIgc3RyIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICdfJykpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICAgIGxldCBtb2R1bGUgTCA9IEhleF9sZXhlciBpblxuICAgICAgbGV0IGxleCA9IFN0ZGxpYi5MZXhpbmcuZnJvbV9zdHJpbmcgc3RyIGluXG4gICAgICBsZXQgcmVzdWx0ID0gT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTC5wYXJzZV9oZXggbGV4KSBpblxuICAgICAgaWYgbGV4LmxleF9jdXJyX3BvcyA9IGxleC5sZXhfYnVmZmVyX2xlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkIHN0clxuICAgICAgICB8IFNvbWUgKE5lZyBib2R5KSAtPiBJLm5lZyAob2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICAgIHwgU29tZSAoUG9zIGJvZHkpIC0+IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgZWxzZSBpbnZhbGlkIHN0clxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRfaGV4XG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChUX2hleClcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgZmlsZSB3YXMgYXV0b2dlbmVyYXRlZCBieSAuLi9nZW5lcmF0ZS9nZW5lcmF0ZV9wb3dfb3ZlcmZsb3dfYm91bmRzLmV4ZSAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIGhhdmUgdG8gdXNlIEludDY0LnRvX2ludF9leG4gaW5zdGVhZCBvZiBpbnQgY29uc3RhbnRzIHRvIG1ha2VcbiAgIHN1cmUgdGhhdCBmaWxlIGNhbiBiZSBwcmVwcm9jZXNzZWQgb24gMzItYml0IG1hY2hpbmVzLiAqKVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIDogaW50MzIgPVxuICAyMTQ3NDgzNjQ3bFxuXG5sZXQgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50MzIgYXJyYXkgPVxuICBbfCAyMTQ3NDgzNjQ3bFxuICA7ICAyMTQ3NDgzNjQ3bFxuICA7ICA0NjM0MGxcbiAgOyAgMTI5MGxcbiAgOyAgMjE1bFxuICA7ICA3M2xcbiAgOyAgMzVsXG4gIDsgIDIxbFxuICA7ICAxNGxcbiAgOyAgMTBsXG4gIDsgIDhsXG4gIDsgIDdsXG4gIDsgIDVsXG4gIDsgIDVsXG4gIDsgIDRsXG4gIDsgIDRsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIDogaW50ID1cbiAgKC0xKSBsc3IgMVxuXG5sZXQgaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludCBhcnJheSA9XG4gIG1hdGNoIEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnQgd2l0aFxuICB8IDMyIC0+IEFycmF5Lm1hcCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgfmY6U3RkbGliLkludDMyLnRvX2ludFxuICB8IDYzIC0+XG4gICAgW3wgU3RkbGliLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIFN0ZGxpYi5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBTdGRsaWIuSW50NjQudG9faW50IDIxNDc0ODM2NDdMXG4gICAgOyAgMTY2NDUxMFxuICAgIDsgIDQ2MzQwXG4gICAgOyAgNTQwNFxuICAgIDsgIDEyOTBcbiAgICA7ICA0NjNcbiAgICA7ICAyMTVcbiAgICA7ICAxMThcbiAgICA7ICA3M1xuICAgIDsgIDQ5XG4gICAgOyAgMzVcbiAgICA7ICAyN1xuICAgIDsgIDIxXG4gICAgOyAgMTdcbiAgICA7ICAxNFxuICAgIDsgIDEyXG4gICAgOyAgMTBcbiAgICA7ICA5XG4gICAgOyAgOFxuICAgIDsgIDdcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IDMxIC0+XG4gICAgW3wgMTA3Mzc0MTgyM1xuICAgIDsgIDEwNzM3NDE4MjNcbiAgICA7ICAzMjc2N1xuICAgIDsgIDEwMjNcbiAgICA7ICAxODFcbiAgICA7ICA2M1xuICAgIDsgIDMxXG4gICAgOyAgMTlcbiAgICA7ICAxM1xuICAgIDsgIDEwXG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDYzX29uX2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuXG5sZXQgaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICAyMTQ3NDgzNjQ3TFxuICA7ICAxNjY0NTEwTFxuICA7ICA0NjM0MExcbiAgOyAgNTQwNExcbiAgOyAgMTI5MExcbiAgOyAgNDYzTFxuICA7ICAyMTVMXG4gIDsgIDExOExcbiAgOyAgNzNMXG4gIDsgIDQ5TFxuICA7ICAzNUxcbiAgOyAgMjdMXG4gIDsgIDIxTFxuICA7ICAxN0xcbiAgOyAgMTRMXG4gIDsgIDEyTFxuICA7ICAxMExcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgOyAgMUxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcblxubGV0IGludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgMzAzNzAwMDQ5OUxcbiAgOyAgMjA5NzE1MUxcbiAgOyAgNTUxMDhMXG4gIDsgIDYyMDhMXG4gIDsgIDE0NDhMXG4gIDsgIDUxMUxcbiAgOyAgMjM0TFxuICA7ICAxMjdMXG4gIDsgIDc4TFxuICA7ICA1MkxcbiAgOyAgMzhMXG4gIDsgIDI4TFxuICA7ICAyMkxcbiAgOyAgMThMXG4gIDsgIDE1TFxuICA7ICAxM0xcbiAgOyAgMTFMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBpbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTMwMzcwMDA0OTlMXG4gIDsgIC0yMDk3MTUxTFxuICA7ICAtNTUxMDhMXG4gIDsgIC02MjA4TFxuICA7ICAtMTQ0OExcbiAgOyAgLTUxMUxcbiAgOyAgLTIzNExcbiAgOyAgLTEyN0xcbiAgOyAgLTc4TFxuICA7ICAtNTJMXG4gIDsgIC0zOExcbiAgOyAgLTI4TFxuICA7ICAtMjJMXG4gIDsgIC0xOExcbiAgOyAgLTE1TFxuICA7ICAtMTNMXG4gIDsgIC0xMUxcbiAgOyAgLTlMXG4gIDsgIC04TFxuICA7ICAtN0xcbiAgOyAgLTdMXG4gIDsgIC02TFxuICA7ICAtNkxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMUxcbiAgfF1cbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IG5lZ2F0aXZlX2V4cG9uZW50ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImV4cG9uZW50IGNhbiBub3QgYmUgbmVnYXRpdmVcIiAoKVxubGV0IG92ZXJmbG93ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImludGVnZXIgb3ZlcmZsb3cgaW4gcG93XCIgKClcblxuKCogVG8gaW1wbGVtZW50IFtpbnQ2NF9wb3ddLCB3ZSB1c2UgQyBjb2RlIHJhdGhlciB0aGFuIE9DYW1sIHRvIGVsaW1pbmF0ZSBhbGxvY2F0aW9uLiAqKVxuZXh0ZXJuYWwgaW50X21hdGhfaW50X3BvdyA6IGludCAtPiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YlwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBpbnRfbWF0aF9pbnQ2NF9wb3cgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YlwiXG5cbmxldCBpbnRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBpZiBleHBvbmVudCA8IDAgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgYWJzIGJhc2UgPiAxXG4gICYmIChleHBvbmVudCA+IDYzXG4gICAgICB8fCBhYnMgYmFzZSA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4oZXhwb25lbnQpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbm1vZHVsZSBJbnQ2NF93aXRoX2NvbXBhcmlzb25zID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliLkludDY0XG5cbiAgZXh0ZXJuYWwgKCA8ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZW5kXG5cbigqIHdlIGRvbid0IGRvIFthYnNdIGluIGludDY0IGNhc2UgdG8gYXZvaWQgYWxsb2NhdGlvbiAqKVxubGV0IGludDY0X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIChiYXNlID4gMUwgfHwgYmFzZSA8IC0xTClcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCAoYmFzZSA+PSAwTFxuICAgICAgICAgICYmIGJhc2VcbiAgICAgICAgICAgICA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpKVxuICAgICAgfHwgKGJhc2UgPCAwTFxuICAgICAgICAgICYmIGJhc2VcbiAgICAgICAgICAgICA8IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpKSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbmxldCBpbnQ2M19wb3dfb25faW50NjQgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFMXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgYWJzIGJhc2VcbiAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBGbG9hdGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCB+LSApIDogdCAtPiB0XG5cbiAgaW5jbHVkZSBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChYIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG9wZW4gWFxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IFgucmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0IG9uZSA9IG9mX2ludF9leG4gMVxuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICAoKiogZmxvYXQgZGl2aXNpb24gb2YgaW50ZWdlcnMgKilcbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBsZXQgcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID0gaSAtIChpICUgbW9kdWx1cylcblxuICBsZXQgcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgaWYgcmVtYWluZGVyID0gemVybyB0aGVuIGkgZWxzZSBpICsgbW9kdWx1cyAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIGlmIGkgPSB6ZXJvXG4gICAgdGhlbiB6ZXJvXG4gICAgZWxzZSBpZiBpID4gemVyb1xuICAgIHRoZW4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIGVsc2Ugcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcblxuICBsZXQgcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBsZXQgbW9kdWx1c19taW51c19yZW1haW5kZXIgPSBtb2R1bHVzIC0gcmVtYWluZGVyIGluXG4gICAgaWYgbW9kdWx1c19taW51c19yZW1haW5kZXIgPD0gcmVtYWluZGVyXG4gICAgdGhlbiBpICsgbW9kdWx1c19taW51c19yZW1haW5kZXJcbiAgICBlbHNlIGkgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIGkgfnRvX211bHRpcGxlX29mID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYERvd24gLT4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFVwIC0+IHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaW50X3BvdyA9IGludF9wb3dcbiAgbGV0IGludDY0X3BvdyA9IGludDY0X3Bvd1xuICBsZXQgaW50NjNfcG93X29uX2ludDY0ID0gaW50NjNfcG93X29uX2ludDY0XG5cbiAgbW9kdWxlIFBvd19vdmVyZmxvd19ib3VuZHMgPSBQb3dfb3ZlcmZsb3dfYm91bmRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBDIHN0dWIgZm9yIGludCBwb3Bjb3VudCB0byB1c2UgdGhlIFBPUENOVCBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuZXh0ZXJuYWwgaW50X3BvcGNvdW50IDogaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnRcIiBbQEBub2FsbG9jXVxuXG4oKiBUbyBtYWludGFpbiBqYXZhc2NyaXB0IGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSB1bmJveGluZywgd2UgaW1wbGVtZW50IHBvcGNvdW50IGluXG4gICBPQ2FtbCByYXRoZXIgdGhhbiB1c2UgQyBzdHVicy4gSW1wbGVtZW50YXRpb24gYWRhcHRlZCBmcm9tOlxuICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFtbWluZ193ZWlnaHQjRWZmaWNpZW50X2ltcGxlbWVudGF0aW9uICopXG5sZXQgaW50NjRfcG9wY291bnQgPVxuICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgbGV0ICggKyApID0gYWRkIGluXG4gIGxldCAoIC0gKSA9IHN1YiBpblxuICBsZXQgKCAqICkgPSBtdWwgaW5cbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsIGluXG4gIGxldCAoIGxhbmQgKSA9IGxvZ2FuZCBpblxuICBsZXQgbTEgPSAweDU1NTU1NTU1NTU1NTU1NTVMIGluXG4gICgqIDBiMDEwMTAxMDEuLi4gKilcbiAgbGV0IG0yID0gMHgzMzMzMzMzMzMzMzMzMzMzTCBpblxuICAoKiAwYjAwMTEwMDExLi4uICopXG4gIGxldCBtNCA9IDB4MGYwZjBmMGYwZjBmMGYwZkwgaW5cbiAgKCogMGIwMDAwMTExMS4uLiAqKVxuICBsZXQgaDAxID0gMHgwMTAxMDEwMTAxMDEwMTAxTCBpblxuICAoKiAxIGJpdCBzZXQgcGVyIGJ5dGUgKilcbiAgZnVuIFtAaW5saW5lXSB4IC0+XG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IHBhaXIgb2YgYml0cyAqKVxuICAgIGxldCB4ID0geCAtICgoeCBsc3IgMSkgbGFuZCBtMSkgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgNCBiaXRzICopXG4gICAgbGV0IHggPSAoeCBsYW5kIG0yKSArICgoeCBsc3IgMikgbGFuZCBtMikgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgYnl0ZSAqKVxuICAgIGxldCB4ID0gKHggKyAoeCBsc3IgNCkpIGxhbmQgbTQgaW5cbiAgICAoKiBzdW0gdGhlIGJpdCBjb3VudHMgaW4gdGhlIHRvcCBieXRlIGFuZCBzaGlmdCBpdCBkb3duICopXG4gICAgdG9faW50ICgoeCAqIGgwMSkgbHNyIDU2KVxuOztcblxubGV0IGludDMyX3BvcGNvdW50ID1cbiAgKCogT24gNjQtYml0IHN5c3RlbXMsIHRoaXMgaXMgZmFzdGVyIHRoYW4gaW1wbGVtZW50aW5nIHVzaW5nIFtpbnQzMl0gYXJpdGhtZXRpYy4gKilcbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZkwgaW5cbiAgZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChTdGRsaWIuSW50NjQubG9nYW5kIChTdGRsaWIuSW50NjQub2ZfaW50MzIgeCkgbWFzaylcbjs7XG5cbmxldCBuYXRpdmVpbnRfcG9wY291bnQgPVxuICBtYXRjaCBTdGRsaWIuTmF0aXZlaW50LnNpemUgd2l0aFxuICB8IDMyIC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQzMl9wb3Bjb3VudCAoU3RkbGliLk5hdGl2ZWludC50b19pbnQzMiB4KVxuICB8IDY0IC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoU3RkbGliLkludDY0Lm9mX25hdGl2ZWludCB4KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNpZ24wXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChTaWduMClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCB0b19zdHJpbmdfaHVtID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gXCJuZWdhdGl2ZVwiXG4gIHwgWmVybyAtPiBcInplcm9cIlxuICB8IFBvcyAtPiBcInBvc2l0aXZlXCJcbjs7XG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xLlxuICB8IFplcm8gLT4gMC5cbiAgfCBQb3MgLT4gMS5cbjs7XG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuOztcblxubGV0ICggKiApIHQgdCcgPSBvZl9pbnQgKHRvX2ludCB0ICogdG9faW50IHQnKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhdCB0aGUgZW5kLCBhZnRlciBhbnlcbiAgIGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvXG4gICB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXNcbiAgIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50X2ludGZcbmluY2x1ZGUgSW50MFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlIHggeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSB4IHlcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgfCBfIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG5lbmRcblxubGV0IG51bV9iaXRzID0gSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgdG9fZmxvYXQgPSBTdGRsaWIuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gU3RkbGliLmludF9vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBTdGRsaWIuaW50X29mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJXhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJXhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogKHRbQGxvY2FsX29wdF0pIC0+IChpbnQzMltAbG9jYWxfb3B0XSkgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzJfdHJ1bmMgOiAoaW50MzJbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50NjRfdHJ1bmMgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50X3RydW5jIDogKG5hdGl2ZWludFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuXG5sZXQgcHJlZCBpID0gaSAtIDFcbmxldCBzdWNjIGkgPSBpICsgMVxubGV0IHRvX2ludCBpID0gaVxubGV0IHRvX2ludF9leG4gPSB0b19pbnRcbmxldCBvZl9pbnQgaSA9IGlcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBTdGRsaWIubWluX2ludFxubGV0IG1heF92YWx1ZV8zMF9iaXRzID0gMHgzRkZGX0ZGRkZcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgb2ZfaW50MzJfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50MzIgPSBDb252LmludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCB0b19pbnQ2NCA9IENvbnYuaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgYWJzIHggPSBhYnMgeFxuXG4oKiBub3RlIHRoYXQgcmVtIGlzIG5vdCBzYW1lIGFzICUgKilcbmxldCByZW0gYSBiID0gYSBtb2QgYlxubGV0IGluY3IgPSBTdGRsaWIuaW5jclxubGV0IGRlY3IgPSBTdGRsaWIuZGVjclxubGV0IHNoaWZ0X3JpZ2h0IGEgYiA9IGEgYXNyIGJcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsIGEgYiA9IGEgbHNyIGJcbmxldCBzaGlmdF9sZWZ0IGEgYiA9IGEgbHNsIGJcbmxldCBiaXRfbm90IGEgPSBsbm90IGFcbmxldCBiaXRfb3IgYSBiID0gYSBsb3IgYlxubGV0IGJpdF9hbmQgYSBiID0gYSBsYW5kIGJcbmxldCBiaXRfeG9yIGEgYiA9IGEgbHhvciBiXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnRfcG93XG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggLSAxIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4ICsgMVxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCAtICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgKHggLSAxKSA9IDBcbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKCogTm90ZSB0aGF0IHdlIHBhc3MgdGhlIHRhZ2dlZCBpbnQgaGVyZS4gU2VlIGludF9tYXRoX3N0dWJzLmMgZm9yIGRldGFpbHMgb24gd2h5XG4gICAgICAgICAgdGhpcyBpcyBjb3JyZWN0LiAqKVxuICAgIGludFxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jbHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnRbQHVudGFnZ2VkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgaWYgaSA9IDEgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKGkgLSAxKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnRfcG9wY291bnRcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlYWRkaW50XCJcbiAgZXh0ZXJuYWwgKCAtICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVzdWJpbnRcIlxuICBleHRlcm5hbCAoICogKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW11bGludFwiXG4gIGV4dGVybmFsICggLyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlZGl2aW50XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgbW9kdWxlIEYgPSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBpbmNsdWRlIEZcblxuICBleHRlcm5hbCBic3dhcDE2IDogKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5cbiAgKCogVGhlc2UgaW5saW5lZCB2ZXJzaW9ucyBvZiAoJSksICgvJSksIGFuZCAoLy8pIHBlcmZvcm0gYmV0dGVyIHRoYW4gdGhlaXIgZnVuY3Rvcml6ZWRcbiAgICAgY291bnRlcnBhcnRzIGluIFtGXSAoc2VlIGJlbmNobWFya3MgYmVsb3cpLlxuXG4gICAgIFRoZSByZWFzb24gdGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGluIFtJbnRdIGJ1dCBub3QgaW4gYW55IG9mIHRoZSBvdGhlciBpbnRlZ2VyXG4gICAgIG1vZHVsZXMgaXMgdGhhdCB0aGV5IGV4aXN0ZWQgaW4gW0ludF0gYW5kIFtJbnRdIGFsb25lIHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2ZcbiAgICAgdGhlIFtJbnRfbWF0aC5NYWtlXSBmdW5jdG9yLCBhbmQgd2UgZGlkbid0IHdhbnQgdG8gZGVncmFkZSB0aGVpciBwZXJmb3JtYW5jZS5cblxuICAgICBXZSB3b24ndCBwcmUtZW1wdGl2ZWx5IGRvIHRoZSBzYW1lIGZvciBuZXcgZnVuY3Rpb25zLCB1bmxlc3Mgc29tZW9uZSBjYXJlcywgb24gYSBjYXNlXG4gICAgIGJ5IGNhc2UgZmFzaGlvbi4gICopXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IHJlbSB4IHkgaW5cbiAgICBpZiBydmFsIDwgemVybyB0aGVuIHJ2YWwgKyB5IGVsc2UgcnZhbFxuICA7O1xuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgLyUlICVzIGluIGNvcmVfaW50Lm1sOiBkaXZpc29yIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBpZiB4IDwgemVybyB0aGVuICgoeCArIG9uZSkgLyB5KSAtIG9uZSBlbHNlIHggLyB5XG4gIDs7XG5cbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFuZGludFwiXG4gIGV4dGVybmFsICggbG9yICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVvcmludFwiXG4gIGV4dGVybmFsICggbHhvciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIleG9yaW50XCJcblxuICBsZXQgbG5vdCA9IGxub3RcblxuICBleHRlcm5hbCAoIGxzbCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlbHNsaW50XCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWxzcmludFwiXG4gIGV4dGVybmFsICggYXNyICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50XSBhbmQgW0ludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBPX0YgPSBPLkZcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3JcbiAgIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVY2hhcjBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVWNoYXJcIlxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IEhhc2guZm9sZF9pbnQgc3RhdGUgKHRvX2ludCB0KVxuICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBsZXQgdG9fc3RyaW5nIHQgPSBQcmludGYuc3ByaW50ZiBcIlUrJTA0WFwiICh0b19pbnQgdClcblxuICAoKiBEbyBub3QgYWN0dWFsbHkgZXhwb3J0IHRoaXMuIFNlZSBkaXNjdXNzaW9uIGluIHRoZSAubWxpICopXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlVjaGFyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCJVKyVYXCIgKGZ1biBpIC0+IFVjaGFyMC5vZl9pbnQgaSkgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG9mIHRoZSBmb3JtIFUrWFhYWCBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGludF9pc19zY2FsYXIgPSBpc192YWxpZFxuXG5sZXQgc3VjY19leG4gYyA9XG4gIHRyeSBVY2hhcjAuc3VjYyBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5zdWNjX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBzdWNjIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnN1Y2MgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgcHJlZF9leG4gYyA9XG4gIHRyeSBVY2hhcjAucHJlZCBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5wcmVkX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBwcmVkIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnByZWQgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgb2Zfc2NhbGFyIGkgPSBpZiBpbnRfaXNfc2NhbGFyIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2Zfc2NhbGFyX2V4biBpID1cbiAgaWYgaW50X2lzX3NjYWxhciBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIub2ZfaW50X2V4biBnb3QgYSBpbnZhbGlkIFVuaWNvZGUgc2NhbGFyIHZhbHVlOiAlMDRYXCIgaSAoKVxuOztcblxubGV0IHRvX3NjYWxhciB0ID0gVWNoYXIwLnRvX2ludCB0XG5sZXQgdG9fY2hhciBjID0gaWYgaXNfY2hhciBjIHRoZW4gU29tZSAodW5zYWZlX3RvX2NoYXIgYykgZWxzZSBOb25lXG5cbmxldCB0b19jaGFyX2V4biBjID1cbiAgaWYgaXNfY2hhciBjXG4gIHRoZW4gdW5zYWZlX3RvX2NoYXIgY1xuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLnRvX2NoYXJfZXhuIGdvdCBhIG5vbiBsYXRpbi0xIGNoYXJhY3RlcjogVSslMDRYXCIgKHRvX2ludCBjKSAoKVxuOztcblxubGV0IHV0ZjhfYnl0ZV9sZW5ndGggdWNoYXIgPVxuICBsZXQgY29kZXBvaW50ID0gdG9fc2NhbGFyIHVjaGFyIGluXG4gIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODAwXG4gIHRoZW4gMlxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHgxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSA0XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2EpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDAzXyBiX18wMDRfKVxuICAgICAgOiAgKChhX18wMDNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMDNfLCBiX18wMDRfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gVCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJUXCJcbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IHN5bSAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGIsIGEpIHQgPSBUXG5sZXQgdHJhbnMgKHR5cGUgYSBiIGMpIChUIDogKGEsIGIpIHQpIChUIDogKGIsIGMpIHQpIDogKGEsIGMpIHQgPSBUXG5sZXQgY29udiAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIChhIDogYSkgOiBiID0gYVxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuXG5tb2R1bGUgTGlmdDIgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpXG4gICAgOiAoKGExLCBhMikgWC50LCAoYjEsIGIyKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbm1vZHVsZSBMaWZ0MyAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIgYTMgYjMpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSAoVCA6IChhMywgYjMpIHQpXG4gICAgOiAoKGExLCBhMiwgYTMpIFgudCwgKGIxLCBiMiwgYjMpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubGV0IGRldHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSAqIGEyLCBiMSAqIGIyKSB0KSA6IChhMSwgYjEpIHQgKiAoYTIsIGIyKSB0ID1cbiAgVCwgVFxuOztcblxubGV0IHR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIDogKGExICogYTIsIGIxICogYjIpIHQgPSBUXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgc3RyaXAgOiAoJ2EgdCwgJ2IgdCkgZXF1YWwgLT4gKCdhLCAnYikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0XG5cbiAgdmFsIHN0cmlwIDogKCgnYTEsICdhMikgdCwgKCdiMSwgJ2IyKSB0KSBlcXVhbCAtPiAoJ2ExLCAnYjEpIGVxdWFsICogKCdhMiwgJ2IyKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSBDb21wb3NpdGlvbl9wcmVzZXJ2ZXNfaW5qZWN0aXZpdHkgKE0xIDogSW5qZWN0aXZlKSAoTTIgOiBJbmplY3RpdmUpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE0xLnQgTTIudFxuXG4gIGxldCBzdHJpcCBlID0gTTEuc3RyaXAgKE0yLnN0cmlwIGUpXG5lbmRcblxubW9kdWxlIElkID0gc3RydWN0XG4gIG1vZHVsZSBVaWQgPSBJbnRcblxuICBtb2R1bGUgV2l0bmVzcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgXyB0ID0gLi5cbiAgICAgIHR5cGUgdHlwZV93aXRuZXNzX2ludCA9IFsgYHR5cGVfd2l0bmVzcyBvZiBpbnQgXSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgbGV0IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludCA9XG4gICAgICAgIChmdW4gKGB0eXBlX3dpdG5lc3Mgdl9fMDA1XykgLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidHlwZV93aXRuZXNzXCI7IHNleHBfb2ZfaW50IHZfXzAwNV8gXVxuICAgICAgICAgICA6IHR5cGVfd2l0bmVzc19pbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgOztcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCBfc2V4cF9vZl9hIHQgPVxuICAgICAgICBgdHlwZV93aXRuZXNzXG4gICAgICAgICAgKFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG4gICAgICAgICAgICAgKFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KSlcbiAgICAgICAgfD4gc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgc2V4cF9vZl90ICh0eXBlIGEpIHNleHBfb2ZfYSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgTS5LZXkgfD4gS2V5LnNleHBfb2ZfdCBzZXhwX29mX2FcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSB0KSAoKSA9XG4gICAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdWlkICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIE0uS2V5KVxuICAgIDs7XG5cbiAgICAoKiBXZSB3YW50IGEgY29uc3RhbnQgYWxsb2NhdGVkIG9uY2UgdGhhdCBbc2FtZV0gY2FuIHJldHVybiB3aGVuZXZlciBpdCBnZXRzIHRoZSBzYW1lXG4gICAgICAgd2l0bmVzc2VzLiAgSWYgd2Ugd3JpdGUgdGhlIGNvbnN0YW50IGluc2lkZSB0aGUgYm9keSBvZiBbc2FtZV0sIHRoZSBuYXRpdmUtY29kZVxuICAgICAgIGNvbXBpbGVyIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIGFuZCBsaWZ0IGl0IG91dC4gIEJ1dCBmb3IgY2xhcml0eSBhbmQgcm9idXN0bmVzcyxcbiAgICAgICB3ZSBkbyBpdCBvdXJzZWx2ZXMuICopXG4gICAgbGV0IHNvbWVfdCA9IFNvbWUgVFxuXG4gICAgbGV0IHNhbWUgKHR5cGUgYSBiKSAoYSA6IGEgdCkgKGIgOiBiIHQpIDogKGEsIGIpIGVxdWFsIG9wdGlvbiA9XG4gICAgICBsZXQgbW9kdWxlIEEgPSAodmFsIGEgOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQiA9ICh2YWwgYiA6IFMgd2l0aCB0eXBlIHQgPSBiKSBpblxuICAgICAgbWF0Y2ggQS5LZXkgd2l0aFxuICAgICAgfCBCLktleSAtPiBzb21lX3RcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcbiAgZW5kXG5cblxuICB0eXBlICdhIHQgPVxuICAgIHsgd2l0bmVzcyA6ICdhIFdpdG5lc3MudFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgdG9fc2V4cCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IF8geyB3aXRuZXNzOyBuYW1lOyB0b19zZXhwIH0gOiBTZXhwLnQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIEF0b20gbmFtZVxuICAgIGVsc2VcbiAgICAgIExpc3RcbiAgICAgICAgWyBMaXN0IFsgQXRvbSBcIm5hbWVcIjsgQXRvbSBuYW1lIF1cbiAgICAgICAgOyBMaXN0IFsgQXRvbSBcIndpdG5lc3NcIjsgd2l0bmVzcyB8PiBXaXRuZXNzLnNleHBfb2ZfdCB0b19zZXhwIF1cbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zZXhwIHQgPSB0LnRvX3NleHBcbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgY3JlYXRlIH5uYW1lIHRvX3NleHAgPSB7IHdpdG5lc3MgPSBXaXRuZXNzLmNyZWF0ZSAoKTsgbmFtZTsgdG9fc2V4cCB9XG4gIGxldCB1aWQgdCA9IFdpdG5lc3MudWlkIHQud2l0bmVzc1xuICBsZXQgaGFzaCB0ID0gdWlkIHRcbiAgbGV0IGhhc2hfZm9sZF90IHMgdCA9IGhhc2hfZm9sZF9pbnQgcyAodWlkIHQpXG4gIGxldCBzYW1lX3dpdG5lc3MgdDEgdDIgPSBXaXRuZXNzLnNhbWUgdDEud2l0bmVzcyB0Mi53aXRuZXNzXG4gIGxldCBzYW1lIHQxIHQyID0gT3B0aW9uLmlzX3NvbWUgKHNhbWVfd2l0bmVzcyB0MSB0MilcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biB0MSB0MiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIHQxIHQyIHdpdGhcbiAgICB8IFNvbWUgdyAtPiB3XG4gICAgfCBOb25lIC0+XG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gZ290IGRpZmZlcmVudCBpZHNcIlxuICAgICAgICAgICBbICggXCJcIlxuICAgICAgICAgICAgICwgc2V4cF9vZl9wYWlyIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpICh0MSwgdDIpXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICBdKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIFsnYSBDaGVhcF9vcHRpb24udF0gaXMgbGlrZSBbJ2Egb3B0aW9uXSwgYnV0IGl0IGRvZXNuJ3QgYm94IFtzb21lIF9dIHZhbHVlcy5cblxuICAgIFRoZXJlIGFyZSBzZXZlcmFsIHRoaW5ncyB0aGF0IGFyZSB1bnNhZmUgYWJvdXQgaXQ6XG5cbiAgICAtIFtmbG9hdCB0IGFycmF5XSAob3IgYW55IGFycmF5LWJhY2tlZCBjb250YWluZXIpIGlzIG5vdCBtZW1vcnktc2FmZVxuICAgICAgYmVjYXVzZSBmbG9hdCBhcnJheSBvcHRpbWl6YXRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdW5ib3hlZCBvcHRpb25cbiAgICAgIG9wdGltaXphdGlvbi4gWW91IGhhdmUgdG8gdXNlIFtVbmlmb3JtX2FycmF5LnRdIGluc3RlYWQgb2YgW2FycmF5XS5cblxuICAgIC0gTmVzdGVkIG9wdGlvbnMgKFsnYSB0IHRdKSBkb24ndCB3b3JrLiBUaGV5IGFyZSBiZWxpZXZlZCB0byBiZVxuICAgICAgbWVtb3J5LXNhZmUsIGJ1dCBub3QgcGFyYW1ldHJpYy5cblxuICAgIC0gQSByZWNvcmQgd2l0aCBbZmxvYXQgdF1zIGluIGl0IHNob3VsZCBiZSBzYWZlLCBidXQgaXQncyBvbmx5IFt0XSBiZWluZ1xuICAgICAgYWJzdHJhY3QgdGhhdCBnaXZlcyB5b3Ugc2FmZXR5LiBJZiB0aGUgY29tcGlsZXIgd2FzIHNtYXJ0IGVub3VnaCB0byBwZWVrXG4gICAgICB0aHJvdWdoIHRoZSBtb2R1bGUgc2lnbmF0dXJlIHRoZW4gaXQgY291bGQgZGVjaWRlIHRvIGNvbnN0cnVjdCBhIGZsb2F0XG4gICAgICBhcnJheSBpbnN0ZWFkLiAqKVxubW9kdWxlIENoZWFwX29wdGlvbiA9IHN0cnVjdFxuICAoKiBUaGlzIGlzIHRha2VuIGZyb20gY29yZS4gUmF0aGVyIHRoYW4gZXhwb3NlIGl0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIGJhc2UsIGp1c3RcbiAgICAga2VlcCBhIGNvcHkgYXJvdW5kIGhlcmUuICopXG4gIGxldCBwaHlzX3NhbWUgKHR5cGUgYSBiKSAoYSA6IGEpIChiIDogYikgPSBwaHlzX2VxdWFsIGEgKFN0ZGxpYi5PYmoubWFnaWMgYiA6IGEpXG5cbiAgbW9kdWxlIFQwIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbm9uZSA6IF8gdFxuICAgIHZhbCBzb21lIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBpc19ub25lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfc29tZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgdmFsdWVfdW5zYWZlIDogJ2EgdCAtPiAnYVxuICAgIHZhbCBpdGVyX3NvbWUgOiAnYSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgKydhIHRcblxuICAgICgqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgICAgICBbcGh5c19zYW1lXSBhcyB0aGlzIG9uZS5cblxuICAgICAgIEl0IHdvdWxkIGJlIHNpbXBsZXIgdG8gdXNlIHRoaXMgdmFsdWUgYXMgW25vbmVdLCBidXQgd2UgdXNlIGFuIGltbWVkaWF0ZSBpbnN0ZWFkXG4gICAgICAgYmVjYXVzZSBpdCBsZXRzIHVzIGF2b2lkIGNhbWxfbW9kaWZ5IHdoZW4gc2V0dGluZyB0byBbbm9uZV0sIG1ha2luZyBjZXJ0YWluXG4gICAgICAgYmVuY2htYXJrcyBzaWduaWZpY2FudGx5IGZhc3RlciAoZS5nLiAuLi9iZW5jaC9hcnJheV9xdWV1ZS5leGUpLlxuXG4gICAgICAgdGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgaW4gTW9wdGlvbiwgYW5kIGlmIHdlIGZpbmQgeWV0IGFub3RoZXIgcGxhY2Ugd2hlcmUgd2Ugd2FudFxuICAgICAgIGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG4gICAgbGV0IG5vbmVfc3Vic3RpdHV0ZSA6IF8gdCA9XG4gICAgICBTdGRsaWIuT2JqLm9iaiAoU3RkbGliLk9iai5uZXdfYmxvY2sgU3RkbGliLk9iai5hYnN0cmFjdF90YWcgMSlcbiAgICA7O1xuXG4gICAgbGV0IG5vbmUgOiBfIHQgPVxuICAgICAgKCogVGhlIG51bWJlciB3YXMgcHJvZHVjZWQgYnlcbiAgICAgICAgIFs8IC9kZXYvdXJhbmRvbSB0ciAtYyAtZCAnMTIzNDU2Nzg5MGFiY2RlZicgfCBoZWFkIC1jIDE2XS5cblxuICAgICAgICAgVGhlIGlkZWEgaXMgdGhhdCBhIHJhbmRvbSBudW1iZXIgd2lsbCBoYXZlIGxvd2VyIHByb2JhYmlsaXR5IHRvIGNvbGxpZGUgd2l0aFxuICAgICAgICAgYW55dGhpbmcgdGhhbiBhbnkgbnVtYmVyIHdlIGNhbiBjaG9vc2Ugb3Vyc2VsdmVzLlxuXG4gICAgICAgICBXZSBhcmUgdXNpbmcgYSBwb2x5bW9ycGhpYyB2YXJpYW50IGluc3RlYWQgb2YgYW4gaW50ZWdlciBjb25zdGFudCBiZWNhdXNlIHRoZXJlXG4gICAgICAgICBpcyBhIGNvbXBpbGVyIGJ1ZyB3aGVyZSBpdCB3cm9uZ2x5IGFzc3VtZXMgdGhhdCB0aGUgcmVzdWx0IG9mIFtpZiBfIHRoZW4gYyBlbHNlXG4gICAgICAgICB5XSBpcyBub3QgYSBwb2ludGVyIGlmIFtjXSBpcyBhbiBpbnRlZ2VyIGNvbXBpbGUtdGltZSBjb25zdGFudC4gIFRoaXMgaXMgYmVpbmdcbiAgICAgICAgIGZpeGVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9wdWxsLzU1NS4gIFRoZSBcIm1lbW9yeSBjb3JydXB0aW9uXCIgdGVzdFxuICAgICAgICAgYmVsb3cgZGVtb25zdHJhdGVzIHRoZSBpc3N1ZS4gICopXG4gICAgICBTdGRsaWIuT2JqLm1hZ2ljIGB4NmU4ZWUzNDc4ZTFkNzQ0OVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCB4IG5vbmVcbiAgICBsZXQgaXNfc29tZSB4ID0gbm90IChwaHlzX2VxdWFsIHggbm9uZSlcblxuICAgIGxldCBzb21lICh0eXBlIGEpICh4IDogYSkgOiBhIHQgPVxuICAgICAgaWYgcGh5c19zYW1lIHggbm9uZSB0aGVuIG5vbmVfc3Vic3RpdHV0ZSBlbHNlIFN0ZGxpYi5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfdW5zYWZlICh0eXBlIGEpICh4IDogYSB0KSA6IGEgPVxuICAgICAgaWYgcGh5c19lcXVhbCB4IG5vbmVfc3Vic3RpdHV0ZSB0aGVuIFN0ZGxpYi5PYmoubWFnaWMgbm9uZSBlbHNlIFN0ZGxpYi5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfZXhuIHggPVxuICAgICAgaWYgaXNfc29tZSB4XG4gICAgICB0aGVuIHZhbHVlX3Vuc2FmZSB4XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bjogdGhlIGVsZW1lbnQgaXMgW05vbmVdXCJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJfc29tZSB0IH5mID0gaWYgaXNfc29tZSB0IHRoZW4gZiAodmFsdWVfdW5zYWZlIHQpXG4gIGVuZFxuXG4gIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcblxuICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgIHwgU29tZSB4IC0+IHNvbWUgeFxuICAgIDs7XG5cbiAgICBsZXRbQGlubGluZV0gdG9fb3B0aW9uIHggPSBpZiBpc19zb21lIHggdGhlbiBTb21lICh2YWx1ZV91bnNhZmUgeCkgZWxzZSBOb25lXG4gICAgbGV0IHRvX3NleHBhYmxlID0gdG9fb3B0aW9uXG4gICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfb3B0aW9uXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgID1cbiAgICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKE9wdGlvbi50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVDFcbiAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEgKE9wdGlvbikgKFQxKVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIENoZWFwX29wdGlvbi50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMDFfIHhfXzAwM18gLT5cbiAgVW5pZm9ybV9hcnJheS50X29mX3NleHAgKENoZWFwX29wdGlvbi50X29mX3NleHAgX29mX2FfXzAwMV8pIHhfXzAwM19cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwNF8geF9fMDA1XyAtPlxuICBVbmlmb3JtX2FycmF5LnNleHBfb2ZfdCAoQ2hlYXBfb3B0aW9uLnNleHBfb2ZfdCBfb2ZfYV9fMDA0XykgeF9fMDA1X1xuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICBVbmlmb3JtX2FycmF5LnRfc2V4cF9ncmFtbWFyIChDaGVhcF9vcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcilcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlbXB0eSA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbmxldCBjcmVhdGUgfmxlbiA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW4gQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBpbml0IG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiAoZiBpKSkgW0Bub250YWlsXVxubGV0IGluaXRfc29tZSBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5zb21lIChmIGkpKSBbQG5vbnRhaWxdXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcbmxldFtAaW5saW5lXSBnZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGdldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfbm9uZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBzZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCBzZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCBzZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBzd2FwIHQgaSBqID0gVW5pZm9ybV9hcnJheS5zd2FwIHQgaSBqXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9nZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcblxubGV0IHVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQgaSA9XG4gIENoZWFwX29wdGlvbi52YWx1ZV91bnNhZmUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG47O1xuXG5sZXQgdW5zYWZlX2lzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCB1bnNhZmVfc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHVuc2FmZV9zZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5cbmxldCBjbGVhciB0ID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXRfbm9uZSB0IGlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGlucHV0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBpbnB1dCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgaW5wdXQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXIgaW5wdXQgfmYgPSBpdGVyaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSB4IC0+IGYgeCkgW0Bub250YWlsXVxuXG5sZXQgZm9sZGkgaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gYWNjIDo9IGYgaSAhYWNjIGVsZW0pO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZCBpbnB1dCB+aW5pdCB+ZiA9IGZvbGRpIGlucHV0IH5pbml0IH5mOihmdW4gKF8gOiBpbnQpIGFjYyB4IC0+IGYgYWNjIHgpIFtAbm9udGFpbF1cblxuaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5NYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCBfKSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2Egb3B0aW9uXG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGxlbmd0aCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoXG5cbmxldCBtYXBpIGlucHV0IH5mID1cbiAgbGV0IG91dHB1dCA9IGNyZWF0ZSB+bGVuOihsZW5ndGggaW5wdXQpIGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IHVuc2FmZV9zZXQgb3V0cHV0IGkgKGYgaSBlbGVtKSk7XG4gIG91dHB1dFxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcGkgaW5wdXQgfmY6KGZ1biAoXyA6IGludCkgZWxlbSAtPiBmIGVsZW0pIFtAbm9udGFpbF1cblxubGV0IG1hcF9zb21lIGlucHV0IH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW4gaW5cbiAgbGV0ICgpID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IG9wdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBpbnB1dCBpIGluXG4gICAgICBDaGVhcF9vcHRpb24uaXRlcl9zb21lIG9wdCB+ZjooZnVuIHggLT4gdW5zYWZlX3NldF9zb21lIG91dHB1dCBpIChmIHgpKVxuICAgIGRvbmVcbiAgaW5cbiAgb3V0cHV0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPSBpbml0IChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG5cbmxldCBvZl9hcnJheV9zb21lIGFycmF5ID1cbiAgaW5pdF9zb21lIChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMV9nZW5lcmljIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSA9IFVuaWZvcm1fYXJyYXkuY29weVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZV9jaGVhcF9vcHRpb24gPSBDaGVhcF9vcHRpb25cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWNrX2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byBbRGVxdWVdIGluIHRoYXQgaXQgdXNlcyBhbiBhcnJheSBvZiBbJ2FdIGFuZFxuICAgYSBtdXRhYmxlIFtpbnRdIHRvIGluZGljYXRlIHdoYXQgaW4gdGhlIGFycmF5IGlzIHVzZWQuICBXZSBjaG9vc2UgdG8gaW1wbGVtZW50IFtTdGFja11cbiAgIGRpcmVjdGx5IHJhdGhlciB0aGFuIG9uIHRvcCBvZiBbRGVxdWVdIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgRS5nLiBhIHNpbXBsZVxuICAgbWljcm9iZW5jaG1hcmsgc2hvd3MgdGhhdCBwdXNoL3BvcCBpcyBhYm91dCAyMCUgZmFzdGVyLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfIHsgbGVuZ3RoID0gbGVuZ3RoX18wMDNfOyBlbHRzID0gZWx0c19fMDA1XyB9IC0+XG4gIGxldCBibmRzX18wMDJfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA2XyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDA1XyBpblxuICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDNfIGluXG4gICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICBpblxuICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IHNleHBfb2ZfdCA9IGBSZWJvdW5kX2xhdGVyXG5sZXQgXyA9IHNleHBfb2ZfdFxubGV0IGNhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hICh7IGxlbmd0aDsgZWx0cyB9IGFzIHQpIDogdW5pdCA9XG4gIHRyeVxuICAgIGFzc2VydCAoMCA8PSBsZW5ndGggJiYgbGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICAgIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgaSlcbiAgICBkb25lO1xuICAgICgqIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB1bnVzZWQgZWxlbWVudHMgYXJlIHVuc2V0IHRvIGF2b2lkIGEgc3BhY2VcbiAgICAgICBsZWFrLiAqKVxuICAgIGZvciBpID0gbGVuZ3RoIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyAtIDEgZG9cbiAgICAgIGFzc2VydCAobm90IChPcHRpb25fYXJyYXkuaXNfc29tZSBlbHRzIGkpKVxuICAgIGRvbmVcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiU3RhY2suaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiZXhuXCIsIGV4biB8PiBFeG4uc2V4cF9vZl90OyBcInN0YWNrXCIsIHQgfD4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2Zfb3BhcXVlIF0pXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0geyBsZW5ndGggPSAwOyBlbHRzID0gT3B0aW9uX2FycmF5LmVtcHR5IH1cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBUaGUgb3JkZXIgaW4gd2hpY2ggZWxlbWVudHMgYXJlIHZpc2l0ZWQgaGFzIGJlZW4gY2hvc2VuIHNvIGFzIHRvIGJlIGJhY2t3YXJkc1xuICAgY29tcGF0aWJsZSB3aXRoIFtTdGRsaWIuU3RhY2tdICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAhciAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmVcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2xpc3QgKHR5cGUgYSkgKGwgOiBhIGxpc3QpID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsXG4gIHRoZW4gY3JlYXRlICgpXG4gIGVsc2UgKFxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KDIgKiBsZW5ndGgpIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgIGZvciBpID0gbGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIE9wdGlvbl9hcnJheS5zZXRfc29tZSBlbHRzIGkgYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB7IGxlbmd0aDsgZWx0cyB9KVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCByZXNpemUgdCBzaXplID1cbiAgbGV0IGFyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpzaXplIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6dC5lbHRzIH5kc3Q6YXJyIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnQubGVuZ3RoO1xuICB0LmVsdHMgPC0gYXJyXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG1heCBuZXdfY2FwYWNpdHkgKGxlbmd0aCB0KSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHJlc2l6ZSB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IHB1c2ggdCBhID1cbiAgaWYgdC5sZW5ndGggPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyB0aGVuIHJlc2l6ZSB0ICgyICogKHQubGVuZ3RoICsgMSkpO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5lbHRzIHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSB0Lmxlbmd0aCAtIDEgaW5cbiAgbGV0IHJlc3VsdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpO1xuICB0Lmxlbmd0aCA8LSBpO1xuICByZXN1bHRcbjs7XG5cbmxldCBwb3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay5wb3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHBvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3Bfbm9uZW1wdHkgdClcbmxldCBwb3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgcG9wX2Vycm9yIGVsc2UgcG9wX25vbmVtcHR5IHRcbmxldCB0b3Bfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzICh0Lmxlbmd0aCAtIDEpXG5sZXQgdG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sudG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCB0b3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX25vbmVtcHR5IHQpXG5sZXQgdG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHRvcF9lcnJvciBlbHNlIHRvcF9ub25lbXB0eSB0XG5sZXQgY29weSB7IGxlbmd0aDsgZWx0cyB9ID0geyBsZW5ndGg7IGVsdHMgPSBPcHRpb25fYXJyYXkuY29weSBlbHRzIH1cblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwKVxuOztcblxubGV0IHVudGlsX2VtcHR5IHQgZiA9XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBmIChwb3Bfbm9uZW1wdHkgdCk7XG4gICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIG1hdGNoIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBwdXNoIHRfcmVzdWx0IHhcbiAgZG9uZTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgbGV0IHggPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpIGluXG4gICAgaWYgZiB4IHRoZW4gcHVzaCB0X3Jlc3VsdCB4XG4gIGRvbmU7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB3cml0ZV9pbmRleCA9IHJlZiAwIGluXG4gIEV4bi5wcm90ZWN0XG4gICAgfmY6KGZ1biAoKSAtPlxuICAgICAgZm9yIHJlYWRfaW5kZXggPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgICBsZXQgeCA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSB0LmVsdHMgcmVhZF9pbmRleCBpblxuICAgICAgICBpZiBmIHhcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaWYgIXdyaXRlX2luZGV4IDwgcmVhZF9pbmRleFxuICAgICAgICAgIHRoZW4gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgIXdyaXRlX2luZGV4IHg7XG4gICAgICAgICAgaW5jciB3cml0ZV9pbmRleClcbiAgICAgIGRvbmUpXG4gICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgZm9yIGkgPSAhd3JpdGVfaW5kZXggdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgdC5lbHRzIGlcbiAgICAgIGRvbmU7XG4gICAgICB0Lmxlbmd0aCA8LSAhd3JpdGVfaW5kZXgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIHB1c2ggdCB4O1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgaXMgbGlmdGVkIG91dCBvZiBbTV0gYmVjYXVzZSBbU291cmNlX2NvZGVfcG9zaXRpb24wXSBleHBvcnRzIFtTdHJpbmcwXVxuICAgYXMgW1N0cmluZ10sIHdoaWNoIGRvZXMgbm90IGV4cG9ydCBhIGhhc2ggZnVuY3Rpb24uICopXG5sZXQgaGFzaF9vdmVycmlkZSB7IFN0ZGxpYi5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSA9XG4gIFN0cmluZy5oYXNoIHBvc19mbmFtZVxuICBseG9yIEludC5oYXNoIHBvc19sbnVtXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2JvbFxuICBseG9yIEludC5oYXNoIHBvc19jbnVtXG47O1xuXG5tb2R1bGUgTSA9IHN0cnVjdFxuICBpbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuXG4gIGxldCBoYXNoID0gaGFzaF9vdmVycmlkZVxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoTSlcblxubGV0IG9mX3BvcyAocG9zX2ZuYW1lLCBwb3NfbG51bSwgcG9zX2NudW0sIF8pID1cbiAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCA9IDAgfVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmVnXG4gICAgfCBaZXJvXG4gICAgfCBQb3NcbiAgICB8IE5hblxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ25fb3JfbmFuLm1sLlQudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICB8IE5hbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDNcbiAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3M7IE5hbiBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduX29yX25hblwiXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogVC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogVC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogVC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IFQudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogVC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBULnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBvZl9zaWduID0gZnVuY3Rpb25cbiAgfCBTaWduLk5lZyAtPiBOZWdcbiAgfCBTaWduLlplcm8gLT4gWmVyb1xuICB8IFNpZ24uUG9zIC0+IFBvc1xuOztcblxubGV0IHRvX3NpZ25fZXhuID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gU2lnbi5OZWdcbiAgfCBaZXJvIC0+IFNpZ24uWmVyb1xuICB8IFBvcyAtPiBTaWduLlBvc1xuICB8IE5hbiAtPiBpbnZhbGlkX2FyZyBcIkJhc2UuU2lnbl9vcl9uYW4udG9fc2lnbl9leG46IE5hblwiXG47O1xuXG5sZXQgb2ZfaW50IG4gPSBvZl9zaWduIChTaWduLm9mX2ludCBuKVxubGV0IHRvX2ludF9leG4gdCA9IFNpZ24udG9faW50ICh0b19zaWduX2V4biB0KVxuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbiAgfCBOYW4gLT4gTmFuXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOYW4sIF8gfCBfLCBOYW4gLT4gTmFuXG4gIHwgXyAtPiBvZl9zaWduIChTaWduLiggKiApICh0b19zaWduX2V4biB0KSAodG9fc2lnbl9leG4gdCcpKVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBcIm5lZ2F0aXZlXCJcbiAgfCBaZXJvIC0+IFwiemVyb1wiXG4gIHwgUG9zIC0+IFwicG9zaXRpdmVcIlxuICB8IE5hbiAtPiBcIm5vdC1hLW51bWJlclwiXG47O1xuXG4oKiBJbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGFueSBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0XG4gICBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGFsbCA6ICdhLiAnYSBsaXN0IC0+ICdhIHQgbGlzdCA9XG4gIGZ1biBfYWxsX29mX2EgLT5cbiAgUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgfCBlbnVtZXJhdGVfXzAwMV8gOjogbCAtPiBtYXAgbCAoSW5jbCBlbnVtZXJhdGVfXzAwMV8gOjogYWNjKVxuICAgICBpblxuICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgIChQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICAgICB8IGVudW1lcmF0ZV9fMDAyXyA6OiBsIC0+IG1hcCBsIChFeGNsIGVudW1lcmF0ZV9fMDAyXyA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgICAgWyBVbmJvdW5kZWQgXSlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDE4XykgOiAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XyB0KSAtPlxuICBsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJtYXliZV9ib3VuZC5tbC50XCIgaW5cbiAgZnVuIF9vZl9hX18wMDNfIC0+IGZ1bmN0aW9uXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIF90YWdfXzAwOV8pIDo6IHNleHBfYXJnc19fMDEwXykgYXNcbiAgICAgIF9zZXhwX18wMDhfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTBfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDExXyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgIEluY2wgcmVzMF9fMDEyX1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDA5X1xuICAgICAgICAgICBfc2V4cF9fMDA4XylcbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2FfXzAwM18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgRXhjbCByZXMwX18wMTdfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgLT4gVW5ib3VuZGVkXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSA6OiBfKSBhc1xuICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBzZXhwX18wMDVfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gKHR5cGUgYV9fMDI0XykgOiAoKGFfXzAyNF8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMjRfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICBmdW4gX29mX2FfXzAxOV8gLT4gZnVuY3Rpb25cbiAgICB8IEluY2wgYXJnMF9fMDIwXyAtPlxuICAgICAgbGV0IHJlczBfXzAyMV8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjBfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmNsXCI7IHJlczBfXzAyMV8gXVxuICAgIHwgRXhjbCBhcmcwX18wMjJfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIzXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4Y2xcIjsgcmVzMF9fMDIzXyBdXG4gICAgfCBVbmJvdW5kZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5ib3VuZGVkXCJcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkluY2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkV4Y2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJVbmJvdW5kZWRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxudHlwZSBpbnRlcnZhbF9jb21wYXJpc29uID1cbiAgfCBCZWxvd19sb3dlcl9ib3VuZFxuICB8IEluX3JhbmdlXG4gIHwgQWJvdmVfdXBwZXJfYm91bmRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2hdXG5cbmxldCBpbnRlcnZhbF9jb21wYXJpc29uX29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDI3XyA9IFwibWF5YmVfYm91bmQubWwuaW50ZXJ2YWxfY29tcGFyaXNvblwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgLT4gQmVsb3dfbG93ZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIC0+IEluX3JhbmdlXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSAtPiBBYm92ZV91cHBlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBzZXhwX18wMjZfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiBpbnRlcnZhbF9jb21wYXJpc29uKVxuOztcblxubGV0IHNleHBfb2ZfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChmdW5jdGlvblxuICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQmVsb3dfbG93ZXJfYm91bmRcIlxuICAgIHwgSW5fcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5fcmFuZ2VcIlxuICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQWJvdmVfdXBwZXJfYm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAoaW50ZXJ2YWxfY29tcGFyaXNvbl9zZXhwX2dyYW1tYXIgOiBpbnRlcnZhbF9jb21wYXJpc29uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiQmVsb3dfbG93ZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkluX3JhbmdlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJBYm92ZV91cHBlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKFN0ZGxpYi5jb21wYXJlIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludClcbjs7XG5cbmxldCAoaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gOlxuICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBJbl9yYW5nZSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaF9pbnRlcnZhbF9jb21wYXJpc29uIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gSW5jbCAoZiBpbmNsKVxuICB8IEV4Y2wgZXhjbCAtPiBFeGNsIChmIGV4Y2wpXG4gIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuOztcblxubGV0IGlzX2xvd2VyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgaW5jbCBhIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBleGNsIGEgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBpc191cHBlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGEgaW5jbCA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgYSBleGNsIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIG1hdGNoIGxvd2VyIHdpdGhcbiAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgfCBJbmNsIGxvd2VyIHwgRXhjbCBsb3dlciAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgIHwgSW5jbCB1cHBlciB8IEV4Y2wgdXBwZXIgLT4gY29tcGFyZSBsb3dlciB1cHBlciA+IDApXG47O1xuXG5sZXQgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBpZiBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlXG4gIHRoZW4gZmFpbHdpdGggXCJNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4bjogbG93ZXIgYm91bmQgPiB1cHBlciBib3VuZFwiXG47O1xuXG5sZXQgY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmU7XG4gIGlmIG5vdCAoaXNfbG93ZXJfYm91bmQgbG93ZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEJlbG93X2xvd2VyX2JvdW5kXG4gIGVsc2UgaWYgbm90IChpc191cHBlcl9ib3VuZCB1cHBlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQWJvdmVfdXBwZXJfYm91bmRcbiAgZWxzZSBJbl9yYW5nZVxuOztcblxubGV0IGludGVydmFsX2NvbnRhaW5zX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBtYXRjaCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgd2l0aFxuICB8IEluX3JhbmdlIC0+IHRydWVcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYER1cGxpY2F0ZVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgIHwgYE9rIF9sZWZ0X18wMDNfLCBgT2sgX3JpZ2h0X18wMDRfIC0+IF9jbXBfX2EgX2xlZnRfXzAwM18gX3JpZ2h0X18wMDRfXG4gICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gMFxuICAgICAgfCB4LCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDVfIGJfXzAwNl8gLT5cbiAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDA1XyBiX18wMDZfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wMDVfLCBiX18wMDZfIHdpdGhcbiAgICAgICAgfCBgT2sgX2xlZnRfXzAwN18sIGBPayBfcmlnaHRfXzAwOF8gLT4gX2NtcF9fYSBfbGVmdF9fMDA3XyBfcmlnaHRfXzAwOF9cbiAgICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IHRydWVcbiAgICAgICAgfCB4LCB5IC0+IFN0ZGxpYi4oID0gKSB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMDlfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBPayB2X18wMTBfIC0+IFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IF9vZl9hX18wMDlfIHZfXzAxMF8gXVxuICAgICAgfCBgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkR1cGxpY2F0ZVwiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gY29tcGFyYXRvcjooJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gKCdrZXksICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdrICd2LiAoJ2sgLT4gJ2sgLT4gaW50KSAtPiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgbGV0IHRfXzAxM18sIHRfXzAxNF8gPSBhX18wMTFfIGluXG4gICAgbGV0IHRfXzAxNV8sIHRfXzAxNl8gPSBiX18wMTJfIGluXG4gICAgbWF0Y2ggX2NtcF9fayB0X18wMTNfIHRfXzAxNV8gd2l0aFxuICAgIHwgMCAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSB0X18wMTRfIHRfXzAxNl9cbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHRfXzAxNF8sIHRfXzAxNl8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMTdfLCBgTGVmdCBfcmlnaHRfXzAxOF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE3XyBfcmlnaHRfXzAxOF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAxOV8sIGBSaWdodCBfcmlnaHRfXzAyMF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE5XyBfcmlnaHRfXzAyMF9cbiAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDIxXywgYFVuZXF1YWwgX3JpZ2h0X18wMjJfIC0+XG4gICAgICAgICAgbGV0IHRfXzAyM18sIHRfXzAyNF8gPSBfbGVmdF9fMDIxXyBpblxuICAgICAgICAgIGxldCB0X18wMjVfLCB0X18wMjZfID0gX3JpZ2h0X18wMjJfIGluXG4gICAgICAgICAgKG1hdGNoIF9jbXBfX3YgdF9fMDIzXyB0X18wMjVfIHdpdGhcbiAgICAgICAgICAgfCAwIC0+IF9jbXBfX3YgdF9fMDI0XyB0X18wMjZfXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5KVxuICAgIHwgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gJ2sgLT4gYm9vbCkgLT4gKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDI3XyBiX18wMjhfIC0+XG4gICAgICBsZXQgdF9fMDI5XywgdF9fMDMwXyA9IGFfXzAyN18gaW5cbiAgICAgIGxldCB0X18wMzFfLCB0X18wMzJfID0gYl9fMDI4XyBpblxuICAgICAgU3RkbGliLiggJiYgKVxuICAgICAgICAoX2NtcF9fayB0X18wMjlfIHRfXzAzMV8pXG4gICAgICAgIChpZiBTdGRsaWIuKCA9PSApIHRfXzAzMF8gdF9fMDMyX1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggdF9fMDMwXywgdF9fMDMyXyB3aXRoXG4gICAgICAgICAgIHwgYExlZnQgX2xlZnRfXzAzM18sIGBMZWZ0IF9yaWdodF9fMDM0XyAtPiBfY21wX192IF9sZWZ0X18wMzNfIF9yaWdodF9fMDM0X1xuICAgICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDM1XywgYFJpZ2h0IF9yaWdodF9fMDM2XyAtPiBfY21wX192IF9sZWZ0X18wMzVfIF9yaWdodF9fMDM2X1xuICAgICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMzdfLCBgVW5lcXVhbCBfcmlnaHRfXzAzOF8gLT5cbiAgICAgICAgICAgICBsZXQgdF9fMDM5XywgdF9fMDQwXyA9IF9sZWZ0X18wMzdfIGluXG4gICAgICAgICAgICAgbGV0IHRfXzA0MV8sIHRfXzA0Ml8gPSBfcmlnaHRfXzAzOF8gaW5cbiAgICAgICAgICAgICBTdGRsaWIuKCAmJiApIChfY21wX192IHRfXzAzOV8gdF9fMDQxXykgKF9jbXBfX3YgdF9fMDQwXyB0X18wNDJfKVxuICAgICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSkpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2sgJ3YuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnaylcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDU3XyA9IFwibWFwX2ludGYubWwuU3ltbWV0cmljX2RpZmZfZWxlbWVudC50XCIgaW5cbiAgICBmdW4gX29mX2tfXzA0M18gX29mX3ZfXzA0NF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDY3XzsgYXJnMV9fMDY4XyBdIC0+XG4gICAgICAgIGxldCByZXMwX18wNjlfID0gX29mX2tfXzA0M18gYXJnMF9fMDY3X1xuICAgICAgICBhbmQgcmVzMV9fMDcwXyA9XG4gICAgICAgICAgbGV0IHNleHBfXzA2Nl8gPSBhcmcxX18wNjhfIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBtYXRjaCBzZXhwX18wNjZfIHdpdGhcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gYXMgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyA6OiBzZXhwX2FyZ3NfXzA1MF8pIGFzXG4gICAgICAgICAgICAgIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgYXMgX3RhZ19fMDYzXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjRfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2NV8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjRfIGluXG4gICAgICAgICAgICAgICAgICAgIGBMZWZ0IHJlczBfXzA2NV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYzX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgYXMgX3RhZ19fMDYwXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjFfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2Ml8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjFfIGluXG4gICAgICAgICAgICAgICAgICAgIGBSaWdodCByZXMwX18wNjJfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2MF9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgYXMgX3RhZ19fMDUxXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNThfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1OV8gPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFyZzBfXzA1OF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDUyXzsgYXJnMV9fMDUzXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU0XyA9IF9vZl92X18wNDRfIGFyZzBfXzA1Ml9cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXMxX18wNTVfID0gX29mX3ZfXzA0NF8gYXJnMV9fMDUzXyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzMF9fMDU0XywgcmVzMV9fMDU1X1xuICAgICAgICAgICAgICAgICAgICAgIHwgc2V4cF9fMDU2XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXhwX18wNTZfXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGBVbmVxdWFsIHJlczBfXzA1OV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDUxX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICBzZXhwX18wNjZfXG4gICAgICAgIGluXG4gICAgICAgIHJlczBfXzA2OV8sIHJlczFfXzA3MF9cbiAgICAgIHwgc2V4cF9fMDcxXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGVycm9yX3NvdXJjZV9fMDU3XyAyIHNleHBfXzA3MV9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2tfXzA3Ml8gX29mX3ZfXzA3M18gKGFyZzBfXzA4MV8sIGFyZzFfXzA4Ml8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDgzXyA9IF9vZl9rX18wNzJfIGFyZzBfXzA4MV9cbiAgICAgIGFuZCByZXMxX18wODRfID1cbiAgICAgICAgbWF0Y2ggYXJnMV9fMDgyXyB3aXRoXG4gICAgICAgIHwgYExlZnQgdl9fMDc0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX3ZfXzA3M18gdl9fMDc0XyBdXG4gICAgICAgIHwgYFJpZ2h0IHZfXzA3NV8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2Zfdl9fMDczXyB2X18wNzVfIF1cbiAgICAgICAgfCBgVW5lcXVhbCB2X18wNzZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxcIlxuICAgICAgICAgICAgOyAobGV0IGFyZzBfXzA3N18sIGFyZzFfXzA3OF8gPSB2X18wNzZfIGluXG4gICAgICAgICAgICAgICBsZXQgcmVzMF9fMDc5XyA9IF9vZl92X18wNzNfIGFyZzBfXzA3N19cbiAgICAgICAgICAgICAgIGFuZCByZXMxX18wODBfID0gX29mX3ZfXzA3M18gYXJnMV9fMDc4XyBpblxuICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDc5XzsgcmVzMV9fMDgwXyBdKVxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA4M187IHJlczFfXzA4NF8gXVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2sgJ3YuXG4gICAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8na19zZXhwX2dyYW1tYXIgXyd2X3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgKCBfJ2tfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiVW5lcXVhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDg1XyBiX18wODZfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wODVfIGJfXzA4Nl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzA4NV8sIGJfXzA4Nl8gd2l0aFxuICAgICAgfCBgTGVmdCBfbGVmdF9fMDg3XywgYExlZnQgX3JpZ2h0X18wODhfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA4N18gX3JpZ2h0X18wODhfXG4gICAgICB8IGBSaWdodCBfbGVmdF9fMDg5XywgYFJpZ2h0IF9yaWdodF9fMDkwXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMDg5XyBfcmlnaHRfXzA5MF9cbiAgICAgIHwgYEJvdGggX2xlZnRfXzA5MV8sIGBCb3RoIF9yaWdodF9fMDkyXyAtPlxuICAgICAgICBsZXQgdF9fMDkzXywgdF9fMDk0XyA9IF9sZWZ0X18wOTFfIGluXG4gICAgICAgIGxldCB0X18wOTVfLCB0X18wOTZfID0gX3JpZ2h0X18wOTJfIGluXG4gICAgICAgIChtYXRjaCBfY21wX19sZWZ0IHRfXzA5M18gdF9fMDk1XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fcmlnaHQgdF9fMDk0XyB0X18wOTZfXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgIHwgeCwgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wOTdfIGJfXzA5OF8gLT5cbiAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDk3XyBiX18wOThfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wOTdfLCBiX18wOThfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDk5XywgYExlZnQgX3JpZ2h0X18xMDBfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA5OV8gX3JpZ2h0X18xMDBfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18xMDFfLCBgUmlnaHQgX3JpZ2h0X18xMDJfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18xMDFfIF9yaWdodF9fMTAyX1xuICAgICAgICB8IGBCb3RoIF9sZWZ0X18xMDNfLCBgQm90aCBfcmlnaHRfXzEwNF8gLT5cbiAgICAgICAgICBsZXQgdF9fMTA1XywgdF9fMTA2XyA9IF9sZWZ0X18xMDNfIGluXG4gICAgICAgICAgbGV0IHRfXzEwN18sIHRfXzEwOF8gPSBfcmlnaHRfXzEwNF8gaW5cbiAgICAgICAgICBTdGRsaWIuKCAmJiApIChfY21wX19sZWZ0IHRfXzEwNV8gdF9fMTA3XykgKF9jbXBfX3JpZ2h0IHRfXzEwNl8gdF9fMTA4XylcbiAgICAgICAgfCB4LCB5IC0+IFN0ZGxpYi4oID0gKSB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9sZWZ0X18xMDlfIF9vZl9yaWdodF9fMTEwXyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCB2X18xMTFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX2xlZnRfXzEwOV8gdl9fMTExXyBdXG4gICAgICB8IGBSaWdodCB2X18xMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl9yaWdodF9fMTEwXyB2X18xMTJfIF1cbiAgICAgIHwgYEJvdGggdl9fMTEzXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIlxuICAgICAgICAgIDsgKGxldCBhcmcwX18xMTRfLCBhcmcxX18xMTVfID0gdl9fMTEzXyBpblxuICAgICAgICAgICAgIGxldCByZXMwX18xMTZfID0gX29mX2xlZnRfXzEwOV8gYXJnMF9fMTE0X1xuICAgICAgICAgICAgIGFuZCByZXMxX18xMTdfID0gX29mX3JpZ2h0X18xMTBfIGFyZzFfXzExNV8gaW5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18xMTZfOyByZXMxX18xMTdfIF0pXG4gICAgICAgICAgXVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcCAqKVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnRpbnVlXG4gICAgfCBTdG9wXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIENvbnRpbnVlOyBTdG9wIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChTdGRsaWIuKCA9ICkgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ29udGludWUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29udGludWVcIlxuICAgICAgfCBTdG9wIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN0b3BcIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkICopXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRmluaXNoZWRcbiAgICB8IFVuZmluaXNoZWRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgRmluaXNoZWQ7IFVuZmluaXNoZWQgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFN0ZGxpYi4oID0gKSA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBGaW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJGaW5pc2hlZFwiXG4gICAgICB8IFVuZmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5maW5pc2hlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnY21wIGNtcFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGRfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNldFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHJlbW92ZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBsaXN0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+IGY6KCgndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHVwZGF0ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCgndiBvcHRpb24gLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmluZCA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3Ygb3B0aW9uKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZmluZF9leG4gOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgbWVtIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooKCdrIGtleSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCgndiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVtAbG9jYWxdKVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCgndjEgLT4gJ3YyKVtAbG9jYWxdKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBtYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgZm9sZFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgICAgLT4gJ2FjYyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ2sga2V5IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgY29tYmluZV9lcnJvcnNcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZXF1YWxcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGtleSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayBrZXkgKiAndikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tYmluZTooKGtleTonayBrZXkgLT4gJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCgndiAtPiAndiAtPiBib29sKVtAbG9jYWxdKVxuICAgICAgLT4gaW5pdDonYWNjXG4gICAgICAtPiBmOigoJ2FjYyAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sga2V5ICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sZV9ndFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3BsaXRfbHRfZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFwcGVuZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXSApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBtaW46J2sga2V5XG4gICAgICAtPiBtYXg6J2sga2V5XG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgICAgLT4gJ2FjYyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sga2V5IC0+IG1heDonayBrZXkgLT4gKCdrIGtleSAqICd2KSBsaXN0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbnRoIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAnayBrZXkgKiAndlxuICB2YWwgcmFuayA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBpbnQgb3B0aW9uKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrIGtleSwgJ3YsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgOiBzaWdcbiAgICB2YWwgbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuXG4gICAgdmFsIGZpbHRlcl9tYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuICB0eXBlICgnaywgJ3YsICdjbXApIHRyZWVcbiAgdHlwZSAnayBrZXlcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnaywgJ2NtcCwgJ2sga2V5IC0+ICd2IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAgIC0+IGY6KCgnazEga2V5IC0+ICdrMiBrZXkpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdCAtPiBmOigoJ2sxIGtleSAtPiAnazIga2V5KVtAbG9jYWxdKSAtPiAoJ2syLCAndiwgJ2NtcDIpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCB0cmFuc3Bvc2Vfa2V5c1xuICAgIDogKCAnazFcbiAgICAgICwgJ2NtcDFcbiAgICAgICwgKCAnazJcbiAgICAgICAgLCAnY21wMlxuICAgICAgICAsICgnazEsICgnazIsICdhLCAnY21wMikgdCwgJ2NtcDEpIHQgLT4gKCdrMiwgKCdrMSwgJ2EsICdjbXAxKSB0LCAnY21wMikgdCApXG4gICAgICAgICAgY3JlYXRlX29wdGlvbnMgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxlbjppbnQgLT4gZjooKGludCAtPiAnayBrZXkgKiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBsaXN0IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBsaXN0XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooKCd2MiAtPiAndjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gZjooKCd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF1cbiAgICAgIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgU2VxdWVuY2UudFxuICAgICAgLT4gaW5pdDondjJcbiAgICAgIC0+IGY6KCgndjIgLT4gJ3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IGY6KCgndiAtPiAndiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0XG4gICAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3QgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0IC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X211bHRpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdCAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKSAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOigoZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0KVtAbG9jYWxdKVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KChmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YsICdjbXApIHRyZWUgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlXG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgJ2EgY21wXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrXG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3RcbiAgICA6ICAobW9kdWxlIENvbXBhcmVfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gaW50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChIYXNoLnN0YXRlIC0+ICd2IC0+IEhhc2guc3RhdGUpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gICgqKiBbTWFwXSBpcyBhIGZ1bmN0aW9uYWwgZGF0YSBzdHJ1Y3R1cmUgKGJhbGFuY2VkIGJpbmFyeSB0cmVlKSBpbXBsZW1lbnRpbmcgZmluaXRlIG1hcHNcbiAgICAgIG92ZXIgYSB0b3RhbGx5LW9yZGVyZWQgZG9tYWluLCBjYWxsZWQgYSBcImtleVwiLiAqKVxuXG4gIHR5cGUgKCEna2V5LCArISd2YWx1ZSwgISdjbXApIHRcblxuICBtb2R1bGUgT3JfZHVwbGljYXRlID0gT3JfZHVwbGljYXRlXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG4gIG1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkIDogc2lnXG4gICAgdHlwZSB0ID0gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgVW5maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9lbnVtZXJhdGVfbGliLkVudW1lcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogTWFwcyBbQ29udGludWVdIHRvIFtGaW5pc2hlZF0gYW5kIFtTdG9wXSB0byBbVW5maW5pc2hlZF0uICopXG4gICAgdmFsIG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdFxuXG4gICAgKCoqIE1hcHMgW0ZpbmlzaGVkXSB0byBbQ29udGludWVdIGFuZCBbVW5maW5pc2hlZF0gdG8gW1N0b3BdLiAqKVxuICAgIHZhbCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1lcmdlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBpbnRcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBib29sXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIGxlZnQgOiAoJ2xlZnQsIF8pIHQgLT4gJ2xlZnQgb3B0aW9uXG4gICAgdmFsIHJpZ2h0IDogKF8sICdyaWdodCkgdCAtPiAncmlnaHQgb3B0aW9uXG4gICAgdmFsIGxlZnRfdmFsdWUgOiAoJ2xlZnQsIF8pIHQgLT4gZGVmYXVsdDonbGVmdCAtPiAnbGVmdFxuICAgIHZhbCByaWdodF92YWx1ZSA6IChfLCAncmlnaHQpIHQgLT4gZGVmYXVsdDoncmlnaHQgLT4gJ3JpZ2h0XG5cbiAgICB2YWwgdmFsdWVzXG4gICAgICA6ICAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gbGVmdF9kZWZhdWx0OidsZWZ0XG4gICAgICAtPiByaWdodF9kZWZhdWx0OidyaWdodFxuICAgICAgLT4gJ2xlZnQgKiAncmlnaHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdCBpZiB0aGUgaW52YXJpYW50cyBvZiB0aGUgaW50ZXJuYWwgQVZMIHNlYXJjaCB0cmVlIGhvbGQuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGMuXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIFRoZSBlbXB0eSBtYXAuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIEEgbWFwIHdpdGggb25lIChrZXksIGRhdGEpIHBhaXIuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC4gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gVGhlIGFjY3VtdWxhdG9yIGlzIHBlci1rZXkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgICMgbGV0IG1hcCA9IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJhXCIsIDE7IFwiYVwiLCAxMDsgXCJiXCIsIDI7IFwiYlwiLCAyMDsgXCJiXCIsIDIwMCBdXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXQ6SW50LlNldC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgIH5mOlNldC5hZGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHByaW50X3MgWyVzZXhwIChtYXAgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07O1xuICAgICAgICAoKGEgKDEgMTApKSAoYiAoMiAyMCAyMDApKSlcbiAgICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgXX1cbiAgKilcbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOigoJ2MgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gZjooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2l0ZXJpIH5pdGVyaV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF0sIGV4Y2VwdCB0aGF0IGluc3RlYWQgb2YgdGFraW5nIGEgY29uY3JldGVcbiAgICAgIGRhdGEgc3RydWN0dXJlLCBpdCB0YWtlcyBhbiBpdGVyYXRpb24gZnVuY3Rpb24uICBGb3IgaW5zdGFuY2UsIHRvIGNvbnZlcnQgYSBzdHJpbmcgdGFibGVcbiAgICAgIGludG8gYSBtYXA6IFtvZl9pdGVyaSAobW9kdWxlIFN0cmluZykgfmY6KEhhc2h0YmwuaXRlcmkgdGFibGUpXS4gIEl0IGlzIGZhc3RlciB0aGFuXG4gICAgICBhZGRpbmcgdGhlIGVsZW1lbnRzIG9uZSBieSBvbmUuICopXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOigoZjooKGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogTGlrZSBbb2ZfaXRlcmldIGV4Y2VwdCB0aGF0IGl0IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooKGY6KChrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGEgc29ydGVkIGFycmF5IG9mIGtleS1kYXRhIHBhaXJzLiBUaGUgaW5wdXQgYXJyYXkgbXVzdCBiZSBzb3J0ZWRcbiAgICAgIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIpLCBhcyBnaXZlbiBieSB0aGUgcmVsZXZhbnQgY29tcGFyYXRvciwgYW5kXG4gICAgICBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZSBrZXlzLiBJZiBlaXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucyBkb2VzIG5vdCBob2xkLFxuICAgICAgYW4gZXJyb3IgaXMgcmV0dXJuZWQuICAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX3NvcnRlZF9hcnJheV0gZXhjZXB0IHRoYXQgaXQgcmV0dXJucyBhIG1hcCB3aXRoIGJyb2tlbiBpbnZhcmlhbnRzIHdoZW4gYW5cbiAgICAgIFtFcnJvcl0gd291bGQgaGF2ZSBiZWVuIHJldHVybmVkLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOigoaW50IC0+ICdhICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXkgYyAoU2VxdWVuY2UudG9fYXJyYXlcbiAgICAgIHNlcSldLCBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBhcnJheS5cblxuICAgICAgVGhlIHNlcXVlbmNlIHdpbGwgYmUgZm9sZGVkIG92ZXIgb25jZSwgYW5kIHRoZSBhZGRpdGlvbmFsIHRpbWUgY29tcGxleGl0eSBpcyB7ZSBPKG4pfS5cbiAgKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0IGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG5cbiAgICAgIElmIHlvdXIgc2VxdWVuY2UgaXMgaW5jcmVhc2luZywgdXNlIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXS5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX29yX2Vycm9yIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X29yX2Vycm9yIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9leG4gYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC5cblxuICAgICAgW29mX3NlcXVlbmNlX211bHRpIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX2ZvbGQgYyBzZXEgfmluaXQgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZm9sZCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmluaXQgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCgnYyAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX3JlZHVjZSBjIHNlcSB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9yZWR1Y2UgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpIH5mXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGY6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENvbnN0cnVjdHMgYSBtYXAgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCB3aGVyZSBbZ2V0X2tleV0gZXh0cmFjdHMgYSBrZXkgZnJvbSBhIHZhbHVlLlxuICAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIF1cblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHJldHVybnMgW0Vycm9yXSBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvclxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX2xpc3Rfd2l0aF9rZXldOyByYWlzZXMgb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfZXhuXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW29mX2xpc3Rfd2l0aF9rZXldOyBwcm9kdWNlcyBsaXN0cyBvZiBhbGwgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGtleS4gKilcbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGlcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBUZXN0cyB3aGV0aGVyIGEgbWFwIGlzIGVtcHR5LiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFtsZW5ndGggbWFwXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW21hcF0uICBPKDEpLCBidXQgW1RyZWUubGVuZ3RoXSBpc1xuICAgICAgTyhuKS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIHRoZSBzcGVjaWZpZWQgbmV3IGJpbmRpbmc7IGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgYm91bmQsIGl0c1xuICAgICAgcHJldmlvdXMgYmluZGluZyBkaXNhcHBlYXJzLiAqKVxuICB2YWwgc2V0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthZGQgdCB+a2V5IH5kYXRhXSBhZGRzIGEgbmV3IGVudHJ5IHRvIFt0XSBtYXBwaW5nIFtrZXldIHRvIFtkYXRhXSBhbmQgcmV0dXJucyBbYE9rXVxuICAgICAgd2l0aCB0aGUgbmV3IG1hcCwgb3IgaWYgW2tleV0gaXMgYWxyZWFkeSBwcmVzZW50IGluIFt0XSwgcmV0dXJucyBbYER1cGxpY2F0ZV0uICopXG4gIHZhbCBhZGQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBJZiBba2V5XSBpcyBub3QgcHJlc2VudCB0aGVuIGFkZCBhIHNpbmdsZXRvbiBsaXN0LCBvdGhlcndpc2UsIGNvbnMgZGF0YSBvbnRvIHRoZVxuICAgICAgaGVhZCBvZiB0aGUgZXhpc3RpbmcgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogSWYgdGhlIGtleSBpcyBwcmVzZW50LCB0aGVuIHJlbW92ZSBpdHMgaGVhZCBlbGVtZW50OyBpZiB0aGUgcmVzdWx0IGlzIGVtcHR5LCByZW1vdmVcbiAgICAgIHRoZSBrZXkuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIHRoZSBlbXB0eSBsaXN0IGlmIHRoZXJlIGlzIG5vbmUuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICd2IGxpc3RcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gcmV0dXJucyBhIG5ldyBtYXAgW21dIHRoYXQgaXMgdGhlIHNhbWUgYXMgW3RdIG9uIGFsbCBrZXlzIGV4Y2VwdFxuICAgICAgZm9yIFtrZXldLCBhbmQgd2hvc2UgdmFsdWUgZm9yIFtrZXldIGlzIGRlZmluZWQgYnkgW2ZdLCBpLmUuLCBbZmluZCBtIGtleSA9IGYgKGZpbmRcbiAgICAgIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gZjooKCd2IG9wdGlvbiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG5cbiAgKCoqIFJldHVybnMgW1NvbWUgdmFsdWVdIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIFtOb25lXSBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCByYWlzaW5nIFtTdGRsaWIuTm90X2ZvdW5kXSBvciBbTm90X2ZvdW5kX3NdXG4gICAgICBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndlxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGFueSBiaW5kaW5nIGZvciB0aGUga2V5IGluIHF1ZXN0aW9uIHJlbW92ZWQuICopXG4gIHZhbCByZW1vdmUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW21lbSBtYXAga2V5XSB0ZXN0cyB3aGV0aGVyIFttYXBdIGNvbnRhaW5zIGEgYmluZGluZyBmb3IgW2tleV0uICopXG4gIHZhbCBtZW0gOiAoJ2ssIF8sICdjbXApIHQgLT4gJ2sgLT4gYm9vbFxuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooKCdrIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyB1bnRpbCB0aGUgZmlyc3QgdGltZSBbZl0gcmV0dXJucyBbU3RvcF0uIElmIFtmXSByZXR1cm5zIFtTdG9wXSwgdGhlIGZpbmFsXG4gICAgICByZXN1bHQgaXMgW1VuZmluaXNoZWRdLiBPdGhlcndpc2UsIHRoZSBmaW5hbCByZXN1bHQgaXMgW0ZpbmlzaGVkXS4gKilcbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgKCoqIEl0ZXJhdGVzIHR3byBtYXBzIHNpZGUgYnkgc2lkZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBPKE0gKyBOKS4gIElmIHR3b1xuICAgICAgaW5wdXRzIGFyZSBbWygwLCBhKTsgKDEsIGEpXV0gYW5kIFtbKDEsIGIpOyAoMiwgYildXSwgW2ZdIHdpbGwgYmUgY2FsbGVkIHdpdGggW1soMCxcbiAgICAgIGBMZWZ0IGEpOyAoMSwgYEJvdGggKGEsIGIpKTsgKDIsIGBSaWdodCBiKV1dLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyByZXBsYWNlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiopXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigoJ3YxIC0+ICd2MilbQGxvY2FsXSkgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIENvbnZlcnQgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHRvIGEgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHVzaW5nIFtmXS4gKilcbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOigoJ2sxIC0+ICdrMilbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gICgqKiBMaWtlIFttYXBfa2V5c10sIGJ1dCByYWlzZXMgb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooKCdrMSAtPiAnazIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSB0XG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLCB1bnRpbCB0aGUgZmlyc3RcbiAgICAgIHRpbWUgdGhhdCBbZl0gcmV0dXJucyBbU3RvcCBfXS4gSWYgW2ZdIHJldHVybnMgW1N0b3AgZmluYWxdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgIGltbWVkaWF0ZWx5IHdpdGggdGhlIHZhbHVlIFtmaW5hbF0uIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCBhbmQgdGhlIGZpbmFsXG4gICAgICBjYWxsIHRvIFtmXSByZXR1cm5zIFtDb250aW51ZSBsYXN0XSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFtmaW5pc2ggbGFzdF0uICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6XG4gICAgICAgICAoKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gZGVjcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRfcmlnaHRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIEZvbGRzIG92ZXIgdHdvIG1hcHMgc2lkZSBieSBzaWRlLCBsaWtlIFtpdGVyMl0uICopXG4gIHZhbCBmb2xkMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl9tYXBpXSBydW4gaW4gTyhuKVxuICAgICAgdGltZS5cblxuICAgICAgW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW3BhcnRpdGlvbl90Zl0gYW5kIFtwYXJ0aXRpb25pX3RmXSBrZWVwIGEgbG90XG4gICAgICBvZiBzaGFyaW5nIGJldHdlZW4gdGhlaXIgcmVzdWx0IGFuZCB0aGUgb3JpZ2luYWwgbWFwLiAgRHJvcHBpbmcgb3Iga2VlcGluZyBhIHJ1biBvZlxuICAgICAgW2tdIGNvbnNlY3V0aXZlIGVsZW1lbnRzIGNvc3RzIFtPKGxvZyhrKSldIGV4dHJhIG1lbW9yeS4gS2VlcGluZyB0aGUgZW50aXJlIG1hcFxuICAgICAgY29zdHMgbm8gZXh0cmEgbWVtb3J5IGF0IGFsbDogW2ZpbHRlciB+ZjooZnVuIF8gLT4gdHJ1ZSldIHJldHVybnMgdGhlIG9yaWdpbmFsIG1hcC5cbiAgKilcbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ2sgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyBmaWx0ZXJlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKCd2MSAtPiAndjIgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXNcbiAgICAgIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXBpIHQgfmZdIHJldHVybnMgdHdvIG5ldyBbdF1zLCB3aXRoIGVhY2gga2V5IGluIFt0XSBhcHBlYXJpbmcgaW5cbiAgICAgIGV4YWN0bHkgb25lIG9mIHRoZSByZXN1bHRpbmcgbWFwcyBkZXBlbmRpbmcgb24gaXRzIG1hcHBpbmcgaW4gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKlxuICAgICB7W1xuICAgICAgIHBhcnRpdGlvbmlfdGYgdCB+ZlxuICAgICAgID1cbiAgICAgICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgaWYgZiB+a2V5IH5kYXRhXG4gICAgICAgICB0aGVuIEZpcnN0IGRhdGFcbiAgICAgICAgIGVsc2UgU2Vjb25kIGRhdGEpXG4gICAgIF19ICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFByb2R1Y2VzIFtPa10gb2YgYSBtYXAgaW5jbHVkaW5nIGFsbCBrZXlzIGlmIGFsbCBkYXRhIGlzIFtPa10sIG9yIGFuIFtFcnJvcl1cbiAgICAgIGluY2x1ZGluZyBhbGwgZXJyb3JzIG90aGVyd2lzZS4gKilcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBSZXR1cm5zIGEgdG90YWwgb3JkZXJpbmcgYmV0d2VlbiBtYXBzLiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSB0b3RhbCBvcmRlcmluZyB1c2VkXG4gICAgICB0byBjb21wYXJlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGVxdWFsIGtleXMgaW4gdGhlIHR3byBtYXBzLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBtYXBzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIG0pLmNvbXBhcmVdIG9mIHRoZSBtYXAgW21dIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2sgSGFzaC5mb2xkZXIgLT4gJ3YgSGFzaC5mb2xkZXIgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgY21wIG0xIG0yXSB0ZXN0cyB3aGV0aGVyIHRoZSBtYXBzIFttMV0gYW5kIFttMl0gYXJlIGVxdWFsLCB0aGF0IGlzLCBjb250YWluXG4gICAgICB0aGUgc2FtZSBrZXlzIGFuZCBhc3NvY2lhdGUgZWFjaCBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gIFtjbXBdIGlzIHRoZSBlcXVhbGl0eVxuICAgICAgcHJlZGljYXRlIHVzZWQgdG8gY29tcGFyZSB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5cy4gKilcbiAgdmFsIGVxdWFsIDogKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBrZXlzIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGxpc3RcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGRhdGEgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gICgqKiBDcmVhdGVzIGFuIGFzc29jaWF0aW9uIGxpc3QgZnJvbSB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdICgqKiBkZWZhdWx0IGlzIFtgSW5jcmVhc2luZ10gKilcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogezIgQWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIG1hcHN9ICopXG5cbiAgKCoqIE1lcmdlcyB0d28gbWFwcy4gVGhlIHJ1bnRpbWUgaXMgTyhsZW5ndGgodDEpICsgbGVuZ3RoKHQyKSkuIFlvdSBzaG91bGRuJ3QgdXNlIHRoaXNcbiAgICAgIGZ1bmN0aW9uIHRvIG1lcmdlIGEgbGlzdCBvZiBtYXBzOyBjb25zaWRlciB1c2luZyBbbWVyZ2Vfc2tld2VkXSBpbnN0ZWFkLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIEEgc3BlY2lhbCBjYXNlIG9mIFttZXJnZV0sIFttZXJnZV9za2V3ZWQgdDEgdDJdIGlzIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZVxuICAgICAgYmluZGluZ3Mgb2YgW3QxXSBhbmQgW3QyXS4gQmluZGluZ3MgdGhhdCBhcHBlYXIgaW4gYm90aCBbdDFdIGFuZCBbdDJdIGFyZVxuICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSB2YWx1ZSB1c2luZyB0aGUgW2NvbWJpbmVdIGZ1bmN0aW9uLiBJbiBhIGNhbGxcbiAgICAgIFtjb21iaW5lIH5rZXkgdjEgdjJdLCB0aGUgdmFsdWUgW3YxXSBjb21lcyBmcm9tIFt0MV0gYW5kIFt2Ml0gZnJvbSBbdDJdLlxuXG4gICAgICBUaGUgcnVudGltZSBvZiBbbWVyZ2Vfc2tld2VkXSBpcyBbTyhtaW4obDEsIGwyKSAqIGxvZyhtYXgobDEsIGwyKSkpXSwgd2hlcmUgW2wxXSBpc1xuICAgICAgdGhlIGxlbmd0aCBvZiBbdDFdIGFuZCBbbDJdIHRoZSBsZW5ndGggb2YgW3QyXS4gVGhpcyBpcyBsaWtlbHkgdG8gYmUgZmFzdGVyIHRoYW5cbiAgICAgIFttZXJnZV0gd2hlbiBvbmUgb2YgdGhlIG1hcHMgaXMgYSBsb3Qgc21hbGxlciwgb3Igd2hlbiB5b3UgbWVyZ2UgYSBsaXN0IG9mIG1hcHMuICopXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KChrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICAgIDogICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gcmV0dXJucyBhIGxpc3Qgb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uXG4gICAgICBJdCBpcyBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudFxuICAgICAgb2Ygc3RydWN0dXJlLiBUaGUga2V5cyBpbiB0aGUgb3V0cHV0IHNlcXVlbmNlIHdpbGwgYmUgaW4gc29ydGVkIG9yZGVyLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2RhdGFfZXF1YWxdIGlzIGF0IGxlYXN0IGFzIGVxdWF0aW5nIGFzIHBoeXNpY2FsIGVxdWFsaXR5OiB0aGF0XG4gICAgICBbcGh5c19lcXVhbCB4IHldIGltcGxpZXMgW2RhdGFfZXF1YWwgeCB5XS4gT3RoZXJ3aXNlLCBbc3ltbWV0cmljX2RpZmZdIG1heSBiZWhhdmUgaW5cbiAgICAgIHVuZXhwZWN0ZWQgd2F5cy4gRm9yIGV4YW1wbGUsIHdpdGggW35kYXRhX2VxdWFsOihmdW4gXyBfIC0+IGZhbHNlKV0gaXQgaXMgTk9UXG4gICAgICBuZWNlc3NhcmlseSB0aGUgY2FzZSB0aGUgcmVzdWx0aW5nIGNoYW5nZSBzZXF1ZW5jZSB3aWxsIGNvbnRhaW4gYW4gZWxlbWVudFxuICAgICAgWyhrLCBgVW5lcXVhbCBfKV0gZm9yIGV2ZXJ5IGtleSBba10gc2hhcmVkIGJ5IGJvdGggbWFwcy5cblxuICAgICAgV2FybmluZzogRmxvYXQgZXF1YWxpdHkgdmlvbGF0ZXMgdGhpcyBwcm9wZXJ0eSEgW3BoeXNfZXF1YWwgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXNcbiAgICAgIHRydWUsIGJ1dCBbRmxvYXQuKD0pIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzIGZhbHNlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW2ZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIGZvbGRzIGFjcm9zcyBhbiBpbXBsaWNpdCBzZXF1ZW5jZSBvZiBjaGFuZ2VzXG4gICAgICBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0sIGluIHNvcnRlZCBvcmRlciBieSBrZXlzLiBFcXVpdmFsZW50IHRvXG4gICAgICBbU2VxdWVuY2UuZm9sZCAoc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwpXSwgYW5kIG1vcmUgZWZmaWNpZW50LiAqKVxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooKCd2IC0+ICd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbbWluX2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWluaW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFttYXhfZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYXhpbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBbbWFwXSBpcyBlbXB0eS4gKilcbiAgdmFsIG1heF9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogU3dhcCB0aGUgaW5uZXIgYW5kIG91dGVyIGtleXMgb2YgbmVzdGVkIG1hcHMuIElmIFt0cmFuc3Bvc2Vfa2V5cyBtIGEgPSBiXSwgdGhlblxuICAgICAgW2ZpbmRfZXhuIChmaW5kX2V4biBhIGkpIGogPSBmaW5kX2V4biAoZmluZF9leG4gYiBqKSBpXS4gKilcbiAgdmFsIHRyYW5zcG9zZV9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAoJ2syLCAndiwgJ2NtcDIpIHQsICdjbXAxKSB0XG4gICAgLT4gKCdrMiwgKCdrMSwgJ3YsICdjbXAxKSB0LCAnY21wMikgdFxuXG4gICgqKiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc2ltaWxhciBmdW5jdGlvbnMgaW4gW0xpc3RdLiAqKVxuXG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG5cbiAgKCoqIFtzcGxpdCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba2V5XSwgdGhlIG1hcHBpbmcgb2YgW2tleV0gaWZcbiAgICAgIGFueSwgYW5kIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sZV9ndCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHRoYXQgYXJlIGxlc3Mgb3IgZXF1YWwgdG8gW2tleV0gYW5kIGFcbiAgICAgIG1hcCBvZiBrZXlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBba2V5XS5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBvdXRwdXQgbWFwcy4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZVxuICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1hcHMuICopXG4gIHZhbCBzcGxpdF9sZV9ndCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2x0X2dlIHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldIGFuZCBhIG1hcCBvZlxuICAgICAga2V5cyB0aGF0IGFyZSBncmVhdGVyIG9yIGVxdWFsIHRvIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0X2x0X2dlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0XSByZXR1cm5zIFtgT2sgbWFwXSB3aGVyZSBbbWFwXSBjb250YWlucyBhbGwgdGhlXG4gICAgICBbKGtleSwgdmFsdWUpXSBwYWlycyBmcm9tIHRoZSB0d28gaW5wdXQgbWFwcyBpZiBhbGwgdGhlIGtleXMgZnJvbSBbbG93ZXJfcGFydF0gYXJlXG4gICAgICBsZXNzIHRoYW4gYWxsIHRoZSBrZXlzIGZyb20gW3VwcGVyX3BhcnRdLiAgT3RoZXJ3aXNlIGl0IHJldHVybnNcbiAgICAgIFtgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc10uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhsb2cgbikgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgbGFyZ2VyIGlucHV0IG1hcC4gIFRoaXMgY2FuIGJlXG4gICAgICBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIFtNYXAubWVyZ2VdIG9yIHJlcGVhdGVkIFtNYXAuYWRkXS5cblxuICAgICAge1tcbiAgICAgICAgYXNzZXJ0IChtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICB8IGBPayB3aG9sZV9tYXAgLT5cbiAgICAgICAgICAgIE1hcC50b19hbGlzdCB3aG9sZV9tYXBcbiAgICAgICAgICAgID0gTGlzdC5hcHBlbmQgKHRvX2FsaXN0IGxvd2VyX3BhcnQpICh0b19hbGlzdCB1cHBlcl9wYXJ0KVxuICAgICAgICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gdHJ1ZSk7XG4gICAgICBdfSAqKVxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICAoKiogW3N1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZF0gcmV0dXJucyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGUgZW50cmllcyBmcm9tXG4gICAgICBbdF0gd2hvc2Uga2V5cyBsaWUgaW5zaWRlIHRoZSBpbnRlcnZhbCBpbmRpY2F0ZWQgYnkgW35sb3dlcl9ib3VuZF0gYW5kXG4gICAgICBbfnVwcGVyX2JvdW5kXS4gIElmIHRoaXMgaW50ZXJ2YWwgaXMgZW1wdHksIGFuIGVtcHR5IG1hcCBpcyByZXR1cm5lZC5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIG91dHB1dCBtYXAuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGVcbiAgICAgIG91dHB1dCBtYXAuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2ZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mXSBmb2xkcyBbZl0gKHdpdGggaW5pdGlhbCB2YWx1ZSBbfmluaXRdKVxuICAgICAgb3ZlciBhbGwga2V5cyAoYW5kIHRoZWlyIGFzc29jaWF0ZWQgdmFsdWVzKSB0aGF0IGFyZSBpbiB0aGUgcmFuZ2UgW1ttaW4sIG1heF1dXG4gICAgICAoaW5jbHVzaXZlKS4gICopXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBtaW46J2tcbiAgICAtPiBtYXg6J2tcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogW3JhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4XSByZXR1cm5zIGFuIGFzc29jaWF0aXZlIGxpc3Qgb2YgdGhlIGVsZW1lbnRzIHdob3NlIGtleXNcbiAgICAgIGxpZSBpbiBbW21pbiwgbWF4XV0gKGluY2x1c2l2ZSksIHdpdGggdGhlIHNtYWxsZXN0IGtleSBiZWluZyBhdCB0aGUgaGVhZCBvZiB0aGVcbiAgICAgIGxpc3QuICopXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnaywgJ3YsICdjbXApIHQgLT4gbWluOidrIC0+IG1heDonayAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiBbY2xvc2VzdF9rZXkgdCBkaXIga10gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF0gd2l0aCBba2V5XSBjbG9zZXN0IHRvXG4gICAgICBba10gdGhhdCBzYXRpc2ZpZXMgdGhlIGdpdmVuIGluZXF1YWxpdHkgYm91bmQuXG5cbiAgICAgIEZvciBleGFtcGxlLCBbY2xvc2VzdF9rZXkgdCBgTGVzc190aGFuIGtdIHdvdWxkIGJlIHRoZSBwYWlyIHdpdGggdGhlIGNsb3Nlc3Qga2V5IHRvXG4gICAgICBba10gd2hlcmUgW2tleSA8IGtdLlxuXG4gICAgICBbdG9fc2VxdWVuY2VdIGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgc2FtZSByZXN1bHRzIGFzIFtjbG9zZXN0X2tleV0uICBJdCBpcyBsZXNzXG4gICAgICBlZmZpY2llbnQgZm9yIGluZGl2aWR1YWwgbG9va3VwcyBidXQgbW9yZSBlZmZpY2llbnQgZm9yIGZpbmRpbmcgbWFueSBlbGVtZW50cyBzdGFydGluZ1xuICAgICAgYXQgc29tZSB2YWx1ZS4gKilcbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAna1xuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW250aCB0IG5dIGZpbmRzIHRoZSAoa2V5LCB2YWx1ZSkgcGFpciBvZiByYW5rIG4gKGkuZS4sIHN1Y2ggdGhhdCB0aGVyZSBhcmUgZXhhY3RseSBuXG4gICAgICBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZm91bmQga2V5KSwgaWYgb25lIGV4aXN0cy4gIE8obG9nKGxlbmd0aCB0KSArIG4pIHRpbWUuICopXG4gIHZhbCBudGggOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAnayAqICd2XG5cbiAgKCoqIFtyYW5rIHQga10gSWYgW2tdIGlzIGluIFt0XSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrXSBpblxuICAgICAgW3RdLCBhbmQgW05vbmVdIG90aGVyd2lzZS4gKilcbiAgdmFsIHJhbmsgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGludCBvcHRpb25cblxuXG5cbiAgKCoqIFt0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRdXG4gICAgICBnaXZlcyBhIHNlcXVlbmNlIG9mIGtleS12YWx1ZSBwYWlycyBiZXR3ZWVuIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gaW5jbHVzaXZlLCBwcmVzZW50ZWQgaW4gW29yZGVyXS4gIElmXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID4ga2V5c19sZXNzX29yX2VxdWFsX3RvXSwgdGhlIHNlcXVlbmNlIGlzXG4gICAgICBlbXB0eS5cblxuICAgICAgV2hlbiBuZWl0aGVyIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIG5vciBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhcmVcbiAgICAgIHByb3ZpZGVkLCB0aGUgY29zdCBpcyBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgdG8gcHJvZHVjZVxuICAgICAgZWFjaCBlbGVtZW50LiBJZiBlaXRoZXIgaXMgcHJvdmlkZWQgKGFuZCBpcyB1c2VkIGJ5IHRoZSBvcmRlciBwYXJhbWV0ZXJcbiAgICAgIHByb3ZpZGVkKSwgdGhlbiB0aGUgdGhlIGNvc3QgaXMgTyhuKSB1cCBmcm9udCwgYW5kIGFtb3J0aXplZCBPKDEpIHRvXG4gICAgICBwcm9kdWNlIGVhY2ggZWxlbWVudC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5ICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzona1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF1cbiAgICAgIHNwZWNpZmllZCBieSBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZVxuICAgICAgc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGVcbiAgICAgIGxlZnQgc2VnbWVudCwgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LlxuICAgICAgSXQgcmV0dXJucyBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooKGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc3VicmFuZ2VdIHRha2VzIGEgW2NvbXBhcmVdIGZ1bmN0aW9uIHRoYXQgZGl2aWRlcyBbdF0gaW50byB0aHJlZVxuICAgICAgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50cyB3aXRoIHJlc3BlY3QgdG8gW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXTpcblxuICAgICAge3ZcbiAgICAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEluX3JhbmdlIHwgQWJvdmVfdXBwZXJfYm91bmQgfFxuICAgICAgdn1cblxuICAgICAgYW5kIHJldHVybnMgYSBtYXAgb2YgdGhlIFtJbl9yYW5nZV0gc2VnbWVudC5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBtICsgbikgd2hlcmUgW21dIGlzIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1hcCBhbmQgW25dIGlzIHRoZVxuICAgICAgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuIFRoZSBsaW5lYXIgdGVybSBpbiBbbl0gaXMgdG8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiBbY29tcGFyZV0gZG9lcyBub3Qgc2VnbWVudCBbdF0gYXMgc2hvd24gYWJvdmUsIG9yIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBpdHMgaW5wdXRzLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIHRyYXZlcnNhbHMgdG8gcmVjb25zdHJ1Y3QgYSBtYXAgd2l0aGluIGFuIGFwcGxpY2F0aXZlLiBVc2VzXG4gICAgICBbTGF6eV9hcHBsaWNhdGl2ZV0gc28gdGhhdCB0aGUgbWFwIGNhbiBiZSB0cmF2ZXJzZWQgd2l0aGluIHRoZSBhcHBsaWNhdGl2ZSwgcmF0aGVyXG4gICAgICB0aGFuIG5lZWRpbmcgdG8gYmUgdHJhdmVyc2VkIGFsbCBhdCBvbmNlLCBvdXRzaWRlIHRoZSBhcHBsaWNhdGl2ZS4gKilcbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpIDogc2lnXG4gICAgdmFsIG1hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuXG4gICAgdmFsIGZpbHRlcl9tYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24gQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG4gIGVuZFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSBpbnQgTWFwLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gKFN0cmluZy50LCBpbnQsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IE1hcC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBbU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzXVxuICAgICAgLS0gaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS5cblxuICAgICAgSW4gYWRkaXRpb24sIHdoZW4gdXNpbmcgW0BAZGVyaXZpbmddLCB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBrZXkgbW9kdWxlIGFyZSBvbmx5XG4gICAgICB0aG9zZSBuZWVkZWQgdG8gc2F0aXNmeSB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGRlcml2ZSBvbiB0aGUgbWFwIGl0c2VsZi4gU2F5IHlvdVxuICAgICAgd3JpdGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgdCA9IGludCBNYXAuTShYKS50IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBdfVxuXG4gICAgICB0aGVuIHRoaXMgd2lsbCBiZSB3ZWxsIHR5cGVkIGV4YWN0bHkgaWYgW1hdIGNvbnRhaW5zIGF0IGxlYXN0OlxuICAgICAgLSBhIHR5cGUgW3RdIHdpdGggbm8gcGFyYW1ldGVyc1xuICAgICAgLSBhIGNvbXBhcmF0b3Igd2l0bmVzc1xuICAgICAgLSBhIFtoYXNoX2ZvbGRfdF0gZnVuY3Rpb24gd2l0aCB0aGUgcmlnaHQgdHlwZSAqKVxuICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0IDo9ICgna2V5LCAndmFsdWUsICdjbXApIHRcblxuICAoKiogW1VzaW5nX2NvbXBhcmF0b3JdIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtNYXBdLCBleGNlcHQgdGhlXG4gICAgICBmdW5jdGlvbnMgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudF0sIHdoZXJlYXMgdGhlIGZ1bmN0aW9ucyBhdCB0aGVcbiAgICAgIHRvcGxldmVsIG9mIFtNYXBdIHRha2UgYSBbKCdrLCAnY21wKSBjb21wYXJhdG9yXS4gKilcbiAgbW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICsndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgIC0+IFNleHAudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCsnaywgKyd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICB2YWwgc2V4cF9vZl90XG4gICAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgICAtPiBTZXhwLnRcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfLCBfKSB0XG5cbiAgICAgICgqKiBbQnVpbGRfaW5jcmVhc2luZ10gY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgbWFwIGluY3JlbWVudGFsbHkgZnJvbSBhXG4gICAgICAgICAgc2VxdWVuY2UgdGhhdCBpcyBrbm93biB0byBiZSBpbmNyZWFzaW5nLlxuXG4gICAgICAgICAgVGhlIHRvdGFsIHRpbWUgY29tcGxleGl0eSBvZiBjb25zdHJ1Y3RpbmcgYSBtYXAgdGhpcyB3YXkgaXMgTyhuKSwgd2hpY2ggaXMgbW9yZVxuICAgICAgICAgIGVmZmljaWVudCB0aGFuIHVzaW5nIFtNYXAuYWRkXSBieSBhIGxvZ2FyaXRobWljIGZhY3Rvci5cblxuICAgICAgICAgIFRoaXMgaW50ZXJmYWNlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgZHVhbCBvZiBbdG9fc2VxdWVuY2VdLCBidXQgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAgIGFuIGVxdWFsbHkgbmVhdCBpZGlvbSBmb3IgdGhlIGR1YWxzIG9mIHNlcXVlbmNlcyAoW29mX3NlcXVlbmNlXSBpcyBtdWNoIGxlc3NcbiAgICAgICAgICBnZW5lcmFsIGJlY2F1c2UgaXQgZG9lcyBub3QgYWxsb3cgdGhlIHNlcXVlbmNlIHRvIGJlIHByb2R1Y2VkIGFzeW5jaHJvbm91c2x5KS4gKilcbiAgICAgIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nIDogc2lnXG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgdHlwZSAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgIHZhbCBlbXB0eSA6ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBvZiBbYWRkX2V4bl0gaXMgYW1vcnRpemVkIGNvbnN0YW50LXRpbWUgKGlmIFt0XSBpcyB1c2VkXG4gICAgICAgICAgICBsaW5lYXJseSksIHdpdGggYSB3b3JzdC1jYXNlIE8obG9nKG4pKSB0aW1lLiAqKVxuICAgICAgICB2YWwgYWRkX2V4blxuICAgICAgICAgIDogICgnaywgJ3YsICd3KSB0XG4gICAgICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICd3KSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiBrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOid2XG4gICAgICAgICAgLT4gKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IGlzIE8obG9nKG4pKS4gKilcbiAgICAgICAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAndykgdCAtPiAoJ2ssICd2LCAndykgdHJlZVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0XG4gICAgICA6ICAnayBIYXNoLmZvbGRlclxuICAgICAgLT4gJ3YgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgICgqKiBUbyBnZXQgYXJvdW5kIHRoZSB2YWx1ZSByZXN0cmljdGlvbiwgYXBwbHkgdGhlIGZ1bmN0b3IgYW5kIGluY2x1ZGUgaXQuIFlvdVxuICAgICAgICBjYW4gc2VlIGFuIGV4YW1wbGUgb2YgdGhpcyBpbiB0aGUgW1BvbHldIHN1Ym1vZHVsZSBiZWxvdy4gKilcbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgTWFwLiAqKVxuICBtb2R1bGUgUG9seSA6XG4gICAgU19wb2x5XG4gICAgd2l0aCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0ID0gKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgICBhbmQgdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdHJlZSA9XG4gICAgICAgICAgICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAoKiogQ3JlYXRlIGEgbWFwIGZyb20gYSB0cmVlIHVzaW5nIHRoZSBnaXZlbiBjb21wYXJhdG9yLiAqKVxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBFeHRyYWN0IGEgdHJlZSBmcm9tIGEgbWFwLiAqKVxuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbTWFwXX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc2V0IDogJ2FcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICB9XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuR2VuZXJpY1xuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgKCoqIFRoZSBbYWNjZXNzX29wdGlvbnNdIHR5cGUgaXMgdXNlZCB0byBtYWtlIFtBY2Nlc3NvcnNfZ2VuZXJpY10gZmxleGlibGUgYXMgdG8gd2hldGhlclxuICAgICAgYSBjb21wYXJhdG9yIGlzIHJlcXVpcmVkIHRvIGJlIHBhc3NlZCB0byBjZXJ0YWluIGZ1bmN0aW9ucy4gKilcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgaW52YXJpYW50cyA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgKCoqIG92ZXJyaWRlIFtDb250YWluZXJdJ3MgW21lbV0gKilcbiAgdmFsIG1lbSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGludGVyIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2EgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXRcbiAgICAgIDogKCAnYVxuICAgICAgICAsICdjbXBcbiAgICAgICAgLCAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiBvZl86KCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gdW5pdCBPcl9lcnJvci50IClcbiAgICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICggJ2FcbiAgICAgICAgLCAnY21wXG4gICAgICAgICwgKCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gKCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gdW5pdCBPcl9lcnJvci50IClcbiAgICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2EgZWx0IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiBmOlxuICAgICAgICAgICAoKFsgYExlZnQgb2YgJ2EgZWx0IHwgYFJpZ2h0IG9mICdhIGVsdCB8IGBCb3RoIG9mICdhIGVsdCAqICdhIGVsdCBdIC0+IHVuaXQpXG4gICAgICAgICAgICBbQGxvY2FsXSlcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICdhIGVsdCBvcHRpb24gKiAoJ2EsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sZV9ndFxuICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3BsaXRfbHRfZ2VcbiAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZXF1aXY6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBlbHRcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2NtcCBjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICdhIGVsdCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIGVsdCAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOigoJ2EgZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EgZWx0LCAnYSBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXAsICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wLCAnYSBlbHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoJ2EsICdjbXAsIGxlbjppbnQgLT4gZjooKGludCAtPiAnYSBlbHQpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8sICdhIGVsdCBsaXN0IC0+ICdhIGVsdCBsaXN0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBUaGUgdHlwZXMgb2YgW21hcF0gYW5kIFtmaWx0ZXJfbWFwXSBhcmUgc3VidGxlLiAgVGhlIGlucHV0IHNldCwgWygnYSwgXykgc2V0XSxcbiAgICAgIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgdGhlc2UgZnVuY3Rpb25zIHRha2UgYSBzZXQgb2YgKmFueSogdHlwZSwgd2l0aCBhbnlcbiAgICAgIGNvbXBhcmF0b3IsIHdoaWxlIHRoZSBvdXRwdXQgc2V0LCBbKCdiLCAnY21wKSB0XSwgcmVmbGVjdHMgdGhhdCB0aGUgb3V0cHV0IHNldCBoYXNcbiAgICAgIHRoZSBwYXJ0aWN1bGFyIFsnY21wXSBvZiB0aGUgY3JlYXRpb24gZnVuY3Rpb24uICBUaGUgY29tcGFyYXRvciBjYW4gY29tZSBpbiBvbmUgb2ZcbiAgICAgIHRocmVlIHdheXMsIGRlcGVuZGluZyBvbiB3aGljaCBzZXQgbW9kdWxlIGlzIHVzZWRcblxuICAgICAgLSBbU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBjb21lcyBhcyBhbiBhcmd1bWVudFxuICAgICAgLSBbU2V0LlBvbHkubWFwXSAtLSBjb21wYXJhdG9yIGlzIHBvbHltb3JwaGljIGNvbXBhcmlzb25cbiAgICAgIC0gW0Zvby5TZXQubWFwXSAtLSBjb21wYXJhdG9yIGlzIFtGb28uY29tcGFyYXRvcl0gKilcbiAgdmFsIG1hcFxuICAgIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOigoJ2EgLT4gJ2IgZWx0KVtAbG9jYWxdKSAtPiAoJ2IsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICggJ2JcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsIF8pIHNldCAtPiBmOigoJ2EgLT4gJ2IgZWx0IG9wdGlvbilbQGxvY2FsXSkgLT4gKCdiLCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgJ2NtcCBjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnZWx0LCAnY21wKSB0XG4gIHR5cGUgKCdlbHQsICdjbXApIHRyZWVcbiAgdHlwZSAnZWx0IGVsdFxuICB0eXBlICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICdlbHQgdFxuICB0eXBlICdlbHQgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHQgOj0gJ2VsdCB0XG4gICAgd2l0aCB0eXBlICgnZWx0LCAnY21wKSB0cmVlIDo9ICdlbHQgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190IDogKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdlbHQsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3QgOiAobW9kdWxlIENvbXBhcmVfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbF9tX190IDogKG1vZHVsZSBFcXVhbF9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnZWx0LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuXG4gIHZhbCBoYXNoX21fX3QgOiAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsIF8pIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gICgqKiBTZXRzIGJhc2VkIG9uIHshQ29tcGFyYXRvci5TfS5cblxuICAgICAgQ3JlYXRvcnMgcmVxdWlyZSBhIGNvbXBhcmF0b3IgYXJndW1lbnQgdG8gYmUgcGFzc2VkIGluLCB3aGVyZWFzIGFjY2Vzc29ycyB1c2UgdGhlXG4gICAgICBjb21wYXJhdG9yIHByb3ZpZGVkIGJ5IHRoZSBpbnB1dCBzZXQuICopXG5cbiAgKCoqIFRoZSB0eXBlIG9mIGEgc2V0LiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQsIGFuZFxuICAgICAgdGhlIHNlY29uZCBpZGVudGlmaWVzIHRoZSBjb21wYXJhdG9yLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGlzIHVzZWQgZm9yIG9yZGVyaW5nIGVsZW1lbnRzIGluIHRoaXMgc2V0LiAgTWFueSBvcGVyYXRpb25zIChlLmcuLCB7IXVuaW9ufSksXG4gICAgICByZXF1aXJlIHRoYXQgdGhleSBiZSBwYXNzZWQgc2V0cyB3aXRoIHRoZSBzYW1lIGVsZW1lbnQgdHlwZSBhbmQgdGhlIHNhbWUgY29tcGFyYXRvclxuICAgICAgdHlwZS4gKilcbiAgdHlwZSAoISdlbHQsICEnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICghJ2VsdCwgISdjbXApIHQgOj0gKCdlbHQsICdjbXApIHRcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3RzIGludGVybmFsIGludmFyaWFudHMgb2YgdGhlIHNldCBkYXRhIHN0cnVjdHVyZS4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIENyZWF0ZXMgYW4gZW1wdHkgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IgdGhhdCBjb250YWlucyBvbmx5IHRoZSBwcm92aWRlZFxuICAgICAgZWxlbWVudC4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgY2FyZGluYWxpdHkgb2YgdGhlIHNldC4gW08oMSldLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFtpc19lbXB0eSB0XSBpcyBbdHJ1ZV0gaWZmIFt0XSBpcyBlbXB0eS4gIFtPKDEpXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbWVtIHQgYV0gcmV0dXJucyBbdHJ1ZV0gaWZmIFthXSBpcyBpbiBbdF0uICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcblxuICAoKiogW2FkZCB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIGFkZGVkIHRvIFt0XSwgb3IgcmV0dXJucyBbdF0gaWYgW21lbSB0IGFdLlxuICAgICAgW08obG9nIG4pXS4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3JlbW92ZSB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIHJlbW92ZWQgZnJvbSBbdF0gaWYgW21lbSB0IGFdLCBvciByZXR1cm5zIFt0XVxuICAgICAgb3RoZXJ3aXNlLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIHQxIHQyXSByZXR1cm5zIHRoZSB1bmlvbiBvZiB0aGUgdHdvIHNldHMuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIGMgbGlzdF0gcmV0dXJucyB0aGUgdW5pb24gb2YgYWxsIHRoZSBzZXRzIGluIFtsaXN0XS4gIFRoZVxuICAgICAgW2NvbXBhcmF0b3JdIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvciB0aGUgY2FzZSB3aGVyZSBbbGlzdF0gaXMgZW1wdHkuXG4gICAgICBbTyhtYXgoTGlzdC5sZW5ndGggbGlzdCwgbiBsb2cgbikpXSwgd2hlcmUgW25dIGlzIHRoZSBzdW0gb2Ygc2l6ZXMgb2YgdGhlIGlucHV0IHNldHMuICopXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaW50ZXIgdDEgdDJdIGNvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gb2Ygc2V0cyBbdDFdIGFuZCBbdDJdLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildLiAqKVxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZGlmZiB0MSB0Ml0gY29tcHV0ZXMgdGhlIHNldCBkaWZmZXJlbmNlIFt0MSAtIHQyXSwgaS5lLiwgdGhlIHNldCBjb250YWluaW5nIGFsbFxuICAgICAgZWxlbWVudHMgaW4gW3QxXSB0aGF0IGFyZSBub3QgaW4gW3QyXS4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0Ml0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLiBJdCBpc1xuICAgICAgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnQgb2ZcbiAgICAgIHN0cnVjdHVyZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtjb21wYXJlX2RpcmVjdCB0MSB0Ml0gY29tcGFyZXMgdGhlIHNldHMgW3QxXSBhbmQgW3QyXS4gIEl0IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0XG4gICAgICBhcyBbY29tcGFyZV0sIGJ1dCB1bmxpa2UgY29tcGFyZSwgZG9lc24ndCByZXF1aXJlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW4gZm9yIHRoZVxuICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBzZXQuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIHNldHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgcykuY29tcGFyZV0gb2YgdGhlIHNldCBbc10gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnYSBIYXNoLmZvbGRlciAtPiAoJ2EsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlIHR3byBzZXRzIGhhdmUgdGhlIHNhbWUgZWxlbWVudHMuICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0gKilcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtleGlzdHMgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZXJlIGV4aXN0cyBhbiBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhXS4gIFtPKG4pXSxcbiAgICAgIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbZiBhXS4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBbZm9yX2FsbCB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgZm9yIGFsbCBbYV0gaW4gW3RdLCBbZiBhXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXNcbiAgICAgIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbbm90IChmIGEpXS4gKilcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogW2NvdW50IHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIFt0cnVlXS5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogW3N1bSB0XSByZXR1cm5zIHRoZSBzdW0gb2YgW2YgdF0gZm9yIGVhY2ggW3RdIGluIHRoZSBzZXQuXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBbZmluZCB0IGZdIHJldHVybnMgYW4gZWxlbWVudCBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIHRydWUsIHdpdGggbm8gZ3VhcmFudGVlIGFzXG4gICAgICB0byB3aGljaCBlbGVtZW50IGlzIHJldHVybmVkLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGUgZWxlbWVudCBpc1xuICAgICAgZm91bmQuICopXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICAoKiogW2ZpbmRfbWFwIHQgZl0gcmV0dXJucyBbYl0gZm9yIHNvbWUgW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYSA9IFNvbWUgYl0uICBJZiBubyBzdWNoXG4gICAgICBbYV0gZXhpc3RzLCB0aGVuIFtmaW5kXSByZXR1cm5zIFtOb25lXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXMgc29vbiBhcyBhIHN1aXRhYmxlXG4gICAgICBlbGVtZW50IGlzIGZvdW5kLiAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIExpa2UgW2ZpbmRdLCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhXG5cbiAgKCoqIFtudGggdCBpXSByZXR1cm5zIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IG9mIFt0XSwgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlXG4gICAgICBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbTm9uZV0gaWYgW2kgPCAwXSBvciBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gICgqKiBbcmVtb3ZlX2luZGV4IHQgaV0gcmV0dXJucyBhIHZlcnNpb24gb2YgW3RdIHdpdGggdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgcmVtb3ZlZCxcbiAgICAgIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZSBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbdF0gaWYgW2kgPCAwXSBvclxuICAgICAgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIHRydWUgaWZmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXS4gKilcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2FyZV9kaXNqb2ludCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIFtpc19lbXB0eSAoaW50ZXIgdDEgdDIpXSwgYnV0IGlzIG1vcmVcbiAgICAgIGVmZmljaWVudC4gKilcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbTmFtZWRdIGFsbG93cyB0aGUgdmFsaWRhdGlvbiBvZiBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBzZXRzLiAgQVxuICAgICAgW05hbWVkLnRdIGlzIGEgcmVjb3JkIG9mIGEgc2V0IGFuZCBhIG5hbWUsIHdoZXJlIHRoZSBuYW1lIGlzIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMsXG4gICAgICBhbmQgW05hbWVkLmlzX3N1YnNldF0gYW5kIFtOYW1lZC5lcXVhbF0gdmFsaWRhdGUgc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzXG4gICAgICByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGZvciwgZS5nLixcbiAgICAgIHtbXG4gICAgICAgIE5hbWVkLmlzX3N1YnNldCB7IHNldCA9IHNldDE7IG5hbWUgPSBcInNldDFcIiB9IH5vZl86e3NldCA9IHNldDI7IG5hbWUgPSBcInNldDJcIiB9XG4gICAgICBdfVxuXG4gICAgICBsb29rcyBsaWtlXG4gICAgICB7dlxuICAgICAgICAoXCJzZXQxIGlzIG5vdCBhIHN1YnNldCBvZiBzZXQyXCIgKGludmFsaWRfZWxlbWVudHMgKC4uLmVsZW1lbnRzIG9mIHNldDEgLSBzZXQyLi4uKSkpXG4gICAgICAgdn1cblxuICAgICAgc28gW25hbWVdIHNob3VsZCBiZSBhIG5vdW4gcGhyYXNlIHRoYXQgZG9lc24ndCBzb3VuZCBhd2t3YXJkIGluIHRoZSBhYm92ZSBlcnJvclxuICAgICAgbWVzc2FnZS4gIEV2ZW4gdGhvdWdoIGl0IGFkZHMgdmVyYm9zaXR5LCBjaG9vc2luZyBbbmFtZV1zIHRoYXQgc3RhcnQgd2l0aCB0aGUgcGhyYXNlXG4gICAgICBcInRoZSBzZXQgb2ZcIiBvZnRlbiBtYWtlcyB0aGUgZXJyb3IgbWVzc2FnZSBzb3VuZCBtb3JlIG5hdHVyYWwuXG4gICopXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnY21wKSBzZXQgOj0gKCdhLCAnY21wKSB0XG5cbiAgICB0eXBlICdhIHQgPSAnYSBOYW1lZC50ID1cbiAgICAgIHsgc2V0IDogJ2FcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXSBhbmQgYVxuICAgICAgICBodW1hbi1yZWFkYWJsZSBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHNldCB0IC0+IG9mXzooJ2EsICdjbXApIHNldCB0IC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgZXF1YWwgdG8gW3QyXSBhbmQgYSBodW1hbi1yZWFkYWJsZVxuICAgICAgICBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgc2V0IHQgLT4gKCdhLCAnY21wKSBzZXQgdCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgKCoqIFRoZSBsaXN0IG9yIGFycmF5IGdpdmVuIHRvIFtvZl9saXN0XSBhbmQgW29mX2FycmF5XSBuZWVkIG5vdCBiZSBzb3J0ZWQuICopXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3RvX2xpc3RdIGFuZCBbdG9fYXJyYXldIHByb2R1Y2Ugc2VxdWVuY2VzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgY29tcGFyYXRvci4gKilcbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBDcmVhdGUgc2V0IGZyb20gc29ydGVkIGFycmF5LiAgVGhlIGlucHV0IG11c3QgYmUgc29ydGVkIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yXG4gICAgICBkZXNjZW5kaW5nIG9yZGVyIGFzIGdpdmVuIGJ5IHRoZSBjb21wYXJhdG9yKSBhbmQgY29udGFpbiBubyBkdXBsaWNhdGVzLCBvdGhlcndpc2UgdGhlXG4gICAgICByZXN1bHQgaXMgYW4gZXJyb3IuICBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIFtPKG4pXS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogU2ltaWxhciB0byBbb2Zfc29ydGVkX2FycmF5XSwgYnV0IHdpdGhvdXQgY2hlY2tpbmcgdGhlIGlucHV0IGFycmF5LiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooKGludCAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N0YWJsZV9kZWR1cF9saXN0XSBpcyBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBbTGlzdF0gbW9kdWxlIGJlY2F1c2UgdGhlXG4gICAgICBpbXBsZW1lbnRhdGlvbiByZWxpZXMgY3J1Y2lhbGx5IG9uIHNldHMsIGFuZCBiZWNhdXNlIGRvaW5nIHNvIGFsbG93cyBvbmUgdG8gYXZvaWQgdXNlc1xuICAgICAgb2YgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBieSBpbnN0YW50aWF0aW5nIHRoZSBmdW5jdG9yIGF0IGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uXG4gICAgICBvZiBbQ29tcGFyYXRvcl0gYW5kIHVzaW5nIHRoZSByZXN1bHRpbmcgW3N0YWJsZV9kZWR1cF9saXN0XS4gKilcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICgqKiBbbWFwIGMgdCB+Zl0gcmV0dXJucyBhIG5ldyBzZXQgY3JlYXRlZCBieSBhcHBseWluZyBbZl0gdG8gZXZlcnkgZWxlbWVudCBpblxuICAgICAgW3RdLiAgVGhlIHJldHVybmVkIHNldCBpcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgW2NvbXBhcmF0b3JdLiAgW08obiBsb2cgbildLiAqKVxuICB2YWwgbWFwXG4gICAgOiAgKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIHshbWFwfSwgZXhjZXB0IGVsZW1lbnRzIGZvciB3aGljaCBbZl0gcmV0dXJucyBbTm9uZV0gd2lsbCBiZSBkcm9wcGVkLiAgKilcbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgdGhlIHN1YnNldCBvZiBbdF0gZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gIFtPKG4gbG9nXG4gICAgICBuKV0uICopXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdC4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QsIHNob3J0IGNpcmN1aXRpbmcgdGhlIGZvbGQgaWYgW2YgYWNjdW0geF0gaXMgYW4gW0Vycm9yIF9dICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG5cbiAgKCoqIExpa2UgeyFmb2xkfSwgZXhjZXB0IHRoYXQgaXQgZ29lcyBmcm9tIHRoZSBsYXJnZXN0IHRvIHRoZSBzbWFsbGVzdCBlbGVtZW50LiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbaXRlciB0IH5mXSBjYWxscyBbZl0gb24gZXZlcnkgZWxlbWVudCBvZiBbdF0sIGdvaW5nIGluIG9yZGVyIGZyb20gdGhlIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LiAgKilcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZSB0d28gc2V0cyBzaWRlIGJ5IHNpZGUuICBDb21wbGV4aXR5IGlzIFtPKG0rbildIHdoZXJlIFttXSBhbmQgW25dIGFyZSB0aGUgc2l6ZXNcbiAgICAgIG9mIHRoZSB0d28gaW5wdXQgc2V0cy4gIEFzIGFuIGV4YW1wbGUsIHdpdGggdGhlIGlucHV0cyBbMDsgMV0gYW5kIFsxOyAyXSwgW2ZdIHdpbGwgYmVcbiAgICAgIGNhbGxlZCB3aXRoIFtgTGVmdCAwXTsgW2BCb3RoICgxLCAxKV07IGFuZCBbYFJpZ2h0IDJdLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICAoKiogaWYgW2EsIGIgPSBwYXJ0aXRpb25fdGYgc2V0IH5mXSB0aGVuIFthXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VkIFt0cnVlXSxcbiAgICAgIGFuZCBbYl0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlcyBbZmFsc2VdLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFNhbWUgYXMgeyF0b19saXN0fS4gKilcbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtaW5fZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBSZXR1cm5zIHRoZSBsYXJnZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICAqKVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1heF9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIHJldHVybnMgYW4gYXJiaXRyYXJ5IGVsZW1lbnQsIG9yIFtOb25lXSBpZiB0aGUgc2V0IGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshY2hvb3NlfSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBbc3BsaXQgdCB4XSBwcm9kdWNlcyBhIHRyaXBsZSBbKHQxLCBtYXliZV94LCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSxcbiAgICAgIFttYXliZV94XSBpcyB0aGUgbWVtYmVyIChpZiBhbnkpIG9mIFt0XSB3aGljaCBjb21wYXJlcyBlcXVhbCB0byBbeF0sXG4gICAgICBbdDJdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGFyZ2VyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sZV9ndCB0IHhdIHByb2R1Y2VzIGEgcGFpciBbKHQxLCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXRfbGVfZ3QgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sdF9nZSB0IHhdIHByb2R1Y2VzIGEgcGFpciBbKHQxLCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gW3hdLiAqKVxuICB2YWwgc3BsaXRfbHRfZ2UgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIGlmIFtlcXVpdl0gaXMgYW4gZXF1aXZhbGVuY2UgcHJlZGljYXRlLCB0aGVuIFtncm91cF9ieSBzZXQgfmVxdWl2XSBwcm9kdWNlcyBhIGxpc3RcbiAgICAgIG9mIGVxdWl2YWxlbmNlIGNsYXNzZXMgKGkuZS4sIGEgc2V0LXRoZW9yZXRpYyBxdW90aWVudCkuICBFLmcuLFxuXG4gICAgICB7W1xuICAgICAgICBsZXQgY2hhcnMgPSBTZXQub2ZfbGlzdCBbJ0EnOyAnYSc7ICdiJzsgJ2MnXSBpblxuICAgICAgICBsZXQgZXF1aXYgYyBjJyA9IENoYXIuZXF1YWwgKENoYXIudXBwZXJjYXNlIGMpIChDaGFyLnVwcGVyY2FzZSBjJykgaW5cbiAgICAgICAgZ3JvdXBfYnkgY2hhcnMgfmVxdWl2XG4gICAgICBdfVxuXG4gICAgICBwcm9kdWNlczpcblxuICAgICAge1tcbiAgICAgICAgW1NldC5vZl9saXN0IFsnQSc7J2EnXTsgU2V0LnNpbmdsZXRvbiAnYic7IFNldC5zaW5nbGV0b24gJ2MnXVxuICAgICAgXX1cblxuICAgICAgW2dyb3VwX2J5XSBydW5zIGluIE8obl4yKSB0aW1lLCBzbyBpZiB5b3UgaGF2ZSBhIGNvbXBhcmlzb24gZnVuY3Rpb24sIGl0J3MgdXN1YWxseVxuICAgICAgbXVjaCBmYXN0ZXIgdG8gdXNlIFtTZXQub2ZfbGlzdF0uICopXG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgKCoqIFt0b19zZXF1ZW5jZSB0XSBjb252ZXJ0cyB0aGUgc2V0IFt0XSB0byBhIHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBiZXR3ZWVuXG4gICAgICBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kIFtsZXNzX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUgaW4gdGhlIG9yZGVyIGluZGljYXRlZCBieVxuICAgICAgW29yZGVyXS4gIElmIFtncmVhdGVyX29yX2VxdWFsX3RvID4gbGVzc19vcl9lcXVhbF90b10gdGhlIHNlcXVlbmNlIGlzIGVtcHR5LiAgQ29zdCBpc1xuICAgICAgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIGZvciBlYWNoIGVsZW1lbnQgcHJvZHVjZWQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBlbGVtZW50IGluIFt0XSBzcGVjaWZpZWQgYnlcbiAgICAgIFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZSBzZWdtZW50cyBhc1xuICAgICAgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbGVmdCBzZWdtZW50LFxuICAgICAgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LiAgSXQgcmV0dXJuc1xuICAgICAgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooKCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBQcm9kdWNlcyB0aGUgZWxlbWVudHMgb2YgdGhlIHR3byBzZXRzIGJldHdlZW4gW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2xlc3Nfb3JfZXF1YWxfdG9dIGluIFtvcmRlcl0sIG5vdGluZyB3aGV0aGVyIGVhY2ggZWxlbWVudCBhcHBlYXJzIGluIHRoZSBsZWZ0IHNldCxcbiAgICAgIHRoZSByaWdodCBzZXQsIG9yIGJvdGguICBJbiB0aGUgYm90aCBjYXNlLCBib3RoIGVsZW1lbnRzIGFyZSByZXR1cm5lZCwgaW4gY2FzZSB0aGVcbiAgICAgIGNhbGxlciBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiBlbGVtZW50cyB0aGF0IGFyZSBlcXVhbCB0byB0aGUgc2V0cycgY29tcGFyYXRvci4gIFJ1bnNcbiAgICAgIGluIE8obGVuZ3RoIHQgKyBsZW5ndGggdCcpLiAqKVxuICBtb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgICAgfCBMZWZ0IG9mICdhXG4gICAgICB8IFJpZ2h0IG9mICdiXG4gICAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSBTZXQuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IChTdHJpbmcudCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgU2V0LnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtTZXQuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzLFxuICAgICAgaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS4gKilcbiAgbW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBTZXQuICopXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICgqKiBVc2luZyBjb21wYXJhdG9yIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtTZXRdLCBleGNlcHQgdGhlIGZ1bmN0aW9uc1xuICAgICAgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XSB3aGVyZSB0aGUgZnVuY3Rpb25zIGF0IHRoZSB0b3BsZXZlbCBvZlxuICAgICAgW1NldF0gdGFrZXMgYSBbKCdlbHQsICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2VsdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgICgqKiBBIFtUcmVlLnRdIGNvbnRhaW5zIGp1c3QgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBhIHNldCBpcyBiYXNlZCBvbiwgd2l0aG91dFxuICAgICAgICAgIGluY2x1ZGluZyB0aGUgY29tcGFyYXRvci4gIEFjY29yZGluZ2x5LCBhbnkgb3BlcmF0aW9uIG9uIGEgW1RyZWUudF0gbXVzdCBhbHNvIHRha2VcbiAgICAgICAgICBhcyBhbiBhcmd1bWVudCB0aGUgY29ycmVzcG9uZGluZyBjb21wYXJhdG9yLiAqKVxuICAgICAgdHlwZSAoJ2EsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfKSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhXG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aF9jb21wYXJhdG9yLnRcblxuICAgIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdlbHQgSGFzaC5mb2xkZXIgLT4gKCdlbHQsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW1NldF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXRfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRW1wdHlcbiAgICAoKiAoTGVhZiB4KSBpcyB0aGUgc2FtZSBhcyAoTm9kZSAoRW1wdHksIHgsIEVtcHR5LCAxLCAxKSkgYnV0IHVzZXMgbGVzcyBzcGFjZS4gKilcbiAgICB8IExlYWYgb2YgJ2FcbiAgICAoKiBmaXJzdCBpbnQgaXMgaGVpZ2h0LCBzZWNvbmQgaXMgc3ViLXRyZWUgc2l6ZSAqKVxuICAgIHwgTm9kZSBvZiAnYSB0ICogJ2EgKiAnYSB0ICogaW50ICogaW50XG5cbiAgdHlwZSAnYSB0cmVlID0gJ2EgdFxuXG4gICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlIGNoaWxkcmVuIGRpZmZlciBieVxuICAgICBhdCBtb3N0IDIuICopXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2ID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9lbHQgbG93ZXIgdiA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2VsdCB2IHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiB2IC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgaCwgbikgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIG4gPSBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgdikgY29tcGFyZV9lbHQgbFxuICAgICAgICAmJiBsb29wIChTb21lIHYpIHVwcGVyIGNvbXBhcmVfZWx0IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2VsdCAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2VsdCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuICA7O1xuXG4gICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICBpZiBoID0gMVxuICAgIHRoZW4gTGVhZiB2XG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5TZXQgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGsgPSBmIGkgaW5cbiAgICAgICAgTGVhZiBrXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayBFbXB0eVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IgPSBmIChpICsgMikgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIChMZWFmIGtyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgKCogV2UgZG9uJ3QgY2hlY2sgaWYgdGhlIGFycmF5IGlzIHNvcnRlZCBvciBrZXlzIGFyZSBkdXBsaWNhdGVkLCBiZWNhdXNlIHRoYXRcbiAgICAgICAgIGNoZWNraW5nIGlzIHNsb3dlciB0aGFuIHRoZSB3aG9sZSBbb2Zfc29ydGVkX2FycmF5XSBmdW5jdGlvbiAqKVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMiB8fCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPiBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LihpKSBhcnJheS4oaSArIDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KSlcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgbGV0IGJhbCBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChsKT5oKHIpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgbHJ2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IGxsKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IEVtcHR5KSBscnYgKGNyZWF0ZSBFbXB0eSB2IHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKHIpPmgobCkrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBybHYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgcnIpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IEVtcHR5KSBybHYgKGNyZWF0ZSBFbXB0eSBydiBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycikpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBpZiBoID0gMSB0aGVuIExlYWYgdiBlbHNlIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICBleGNlcHRpb24gU2FtZVxuXG4gIGxldCBhZGQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGNyZWF0ZSAoTGVhZiB4KSB2IEVtcHR5XG4gICAgICAgIGVsc2UgY3JlYXRlIEVtcHR5IHYgKExlYWYgeClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW2FkZF0gdGhhdCBhc3N1bWVzIHRoYXQgW3hdIGlzIGxlc3MgdGhhbiBhbGwgZXhpc3RpbmcgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBhZGRfbWluIHggdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICB8IExlYWYgXyAtPiBOb2RlIChFbXB0eSwgeCwgdCwgMiwgMilcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCAoYWRkX21pbiB4IGwpIHYgclxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFthZGRdIHRoYXQgYXNzdW1lcyB0aGF0IFt4XSBpcyBncmVhdGVyIHRoYW4gYWxsIGV4aXN0aW5nIGVsZW1lbnRzICopXG4gIGxldCByZWMgYWRkX21heCB0IHggPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiB4XG4gICAgfCBMZWFmIF8gLT4gTm9kZSAodCwgeCwgRW1wdHksIDIsIDIpXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBiYWwgbCB2IChhZGRfbWF4IHIgeClcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmRcbiAgICAgci4gKilcbiAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IGFkZF9taW4gdiByXG4gICAgfCBfLCBFbXB0eSAtPiBhZGRfbWF4IGwgdlxuICAgIHwgTGVhZiBsdiwgXyAtPiBhZGRfbWluIGx2IChhZGRfbWluIHYgcilcbiAgICB8IF8sIExlYWYgcnYgLT4gYWRkX21heCAoYWRkX21heCBsIHYpIHJ2XG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBsaCwgXyksIE5vZGUgKHJsLCBydiwgcnIsIHJoLCBfKSAtPlxuICAgICAgaWYgbGggPiByaCArIDJcbiAgICAgIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcilcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDJcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnJcbiAgICAgIGVsc2UgY3JlYXRlIGwgdiByXG4gIDs7XG5cbiAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKEVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGFjYyA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AuQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgdmFsdWUgLT4gZiBhY2MgdmFsdWUgW0Bub250YWlsXVxuICAgICAgfCBOb2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiBsZWZ0IGFjYyB3aXRoXG4gICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiBhY2MgdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgICAgfCBDb250aW51ZSBhIC0+IGZvbGRfdW50aWxfaGVscGVyIH5mIHJpZ2h0IGEpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBpbml0IHdpdGhcbiAgICB8IENvbnRpbnVlIHggLT4gZmluaXNoIHggW0Bub250YWlsXVxuICAgIHwgU3RvcCB4IC0+IHhcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoXywgdiwgRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAoXywgXywgciwgXywgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGJhbCB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGpvaW4gdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgc3BsaXQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEVtcHR5LCBTb21lIHYsIEVtcHR5XG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgTGVhZiB2XG4gICAgICAgIGVsc2UgTGVhZiB2LCBOb25lLCBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIGwsIFNvbWUgdiwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsbCwgbWF5YmVfZWx0LCBybCA9IHNwbGl0IGwgaW5cbiAgICAgICAgICBsbCwgbWF5YmVfZWx0LCBqb2luIHJsIHYgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxyLCBtYXliZV9lbHQsIHJyID0gc3BsaXQgciBpblxuICAgICAgICAgIGpvaW4gbCB2IGxyLCBtYXliZV9lbHQsIHJyKVxuICAgIGluXG4gICAgc3BsaXQgdFxuICA7O1xuXG4gIGxldCByZWMgc3BsaXRfbGVfZ3QgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPj0gMCB0aGVuIExlYWYgdiwgRW1wdHkgZWxzZSBFbXB0eSwgTGVhZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIGFkZF9tYXggbCB2LCByXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBybCA9IHNwbGl0X2xlX2d0IGwgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgbGwsIGpvaW4gcmwgdiByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsciwgcnIgPSBzcGxpdF9sZV9ndCByIHggfmNvbXBhcmVfZWx0IGluXG4gICAgICAgIGpvaW4gbCB2IGxyLCBycilcbiAgOztcblxuICBsZXQgcmVjIHNwbGl0X2x0X2dlIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgfCBMZWFmIHYgLT4gaWYgY29tcGFyZV9lbHQgeCB2ID4gMCB0aGVuIExlYWYgdiwgRW1wdHkgZWxzZSBFbXB0eSwgTGVhZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIGwsIGFkZF9taW4gdiByXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBybCA9IHNwbGl0X2x0X2dlIGwgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgbGwsIGpvaW4gcmwgdiByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsciwgcnIgPSBzcGxpdF9sdF9nZSByIHggfmNvbXBhcmVfZWx0IGluXG4gICAgICAgIGpvaW4gbCB2IGxyLCBycilcbiAgOztcblxuICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCByZWMgbWVtIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gZmFsc2VcbiAgICB8IExlYWYgdiAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwIHx8IG1lbSAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9lbHRcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIHggPSBMZWFmIHhcblxuICBsZXQgcmVtb3ZlIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPSAwIHRoZW4gRW1wdHkgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgciBlbHNlIGlmIGMgPCAwIHRoZW4gYmFsIChhdXggbCkgdiByIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0Ol8gPVxuICAgIGxldCByZWMgYXV4IHQgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTGVhZiBfIC0+IGlmIGkgPSAwIHRoZW4gRW1wdHkgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGJhbCAoYXV4IGwgaSkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgICBpblxuICAgIHRyeSBhdXggdCBpIHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCB1bmlvbiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgICAgIHwgTGVhZiB2MSwgXyAtPiB1bmlvbiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHMyXG4gICAgICAgIHwgXywgTGVhZiB2MiAtPiB1bmlvbiBzMSAoTm9kZSAoRW1wdHksIHYyLCBFbXB0eSwgMSwgMSkpXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgaDEsIF8pLCBOb2RlIChsMiwgdjIsIHIyLCBoMiwgXykgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMlxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMVxuICAgICAgICAgICAgdGhlbiBhZGQgczEgdjIgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGwyLCBfLCByMiA9IHNwbGl0IHMyIHYxIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKSlcbiAgICAgICAgICBlbHNlIGlmIGgxID0gMVxuICAgICAgICAgIHRoZW4gYWRkIHMyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwxLCBfLCByMSA9IHNwbGl0IHMxIHYyIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMikpKVxuICAgIGluXG4gICAgdW5pb24gczEgczJcbiAgOztcblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSB4cyA9XG4gICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBMaXN0LmZvbGQgeHMgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhYyB4IC0+IHVuaW9uIGFjICh0b190cmVlIHgpIH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgaW50ZXIgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSAtPlxuICAgICAgICAgIGlmIG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdCB0aGVuIHNpbmdsZXRvbiBlbHNlIEVtcHR5XG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICAgfCBsMiwgU29tZSB2MSwgcjIgLT4gam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMikpKVxuICAgIGluXG4gICAgaW50ZXIgczEgczJcbiAgOztcblxuICBsZXQgZGlmZiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIEVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgXyAtPiBFbXB0eVxuICAgICAgICB8IHQxLCBFbXB0eSAtPiB0MVxuICAgICAgICB8IExlYWYgdjEsIHQyIC0+IGRpZmYgKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSB0MlxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgICAgIChtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICAgICB8IGwyLCBOb25lLCByMiAtPiBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICAgfCBsMiwgU29tZSBfLCByMiAtPiBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKSkpXG4gICAgaW5cbiAgICBkaWZmIHMxIHMyXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdhLCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2EgKiAnYSB0cmVlICogKCdhLCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgcyAoZSA6IChfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29ucyBsIChNb3JlICh2LCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHMgKGUgOiAoXywgZGVjcmVhc2luZykgdCkgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXQgcyA6IChfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyBzIEVuZFxuICAgIGxldCBvZl9zZXRfcmlnaHQgcyA6IChfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCBzIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCByLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCBsIChNb3JlICh2LCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBlMSBlMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgZTEgZTJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpdGVyIH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+ICgpXG4gICAgICB8IE1vcmUgKGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGYgYTtcbiAgICAgICAgaXRlciAoY29ucyB0cmVlIGVudW0pIH5mXG4gICAgOztcblxuICAgIGxldCBpdGVyMiBjb21wYXJlX2VsdCB0MSB0MiB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+ICgpXG4gICAgICAgIHwgRW5kLCBfIC0+IGl0ZXIgdDIgfmY6KGZ1biBhIC0+IGYgKGBSaWdodCBhKSkgW0Bub250YWlsXVxuICAgICAgICB8IF8sIEVuZCAtPiBpdGVyIHQxIH5mOihmdW4gYSAtPiBmIChgTGVmdCBhKSkgW0Bub250YWlsXVxuICAgICAgICB8IE1vcmUgKGExLCB0cmVlMSwgZW51bTEpLCBNb3JlIChhMiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgQm90aCAoYTEsIGEyKSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBMZWZ0IGExKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgZiAoYFJpZ2h0IGEyKTtcbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDIgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICAgIGxldCBzdGVwIHN0YXRlIDogKChfLCBfKSBFaXRoZXIudCwgXykgU2VxdWVuY2UuU3RlcC50ID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IERvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGVsdCwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gU2Vjb25kIGVsdDsgc3RhdGUgPSBFbmQsIGNvbnMgdHJlZSBlbnVtIH1cbiAgICAgICAgfCBNb3JlIChlbHQsIHRyZWUsIGVudW0pLCBFbmQgLT5cbiAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gRmlyc3QgZWx0OyBzdGF0ZSA9IGNvbnMgdHJlZSBlbnVtLCBFbmQgfVxuICAgICAgICB8IChNb3JlIChhMSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9XG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgICAgdGhlbiBlbnVtMSwgZW51bTJcbiAgICAgICAgICAgICAgZWxzZSBjb25zIHRyZWUxIGVudW0xLCBjb25zIHRyZWUyIGVudW0yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gbmV4dF9zdGF0ZSB9KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gRmlyc3QgYTE7IHN0YXRlID0gY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQgfVxuICAgICAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IFNlY29uZCBhMjsgc3RhdGUgPSBsZWZ0LCBjb25zIHRyZWUyIGVudW0yIH1cbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDoob2Zfc2V0IHQxLCBvZl9zZXQgdDIpIH5mOnN0ZXBcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrOyBzdGF0ZSA9IEVudW0uY29ucyB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazsgc3RhdGUgPSBFbnVtLmNvbnNfcmlnaHQgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldF9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZylcbiAgICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgZWx0IC0+IGFkZCB0IGVsdCB+Y29tcGFyZV9lbHRcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGxlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6Z3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0Omxlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKSBbQG5vbnRhaWxdXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IHggPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0IFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgICAgIHQnXG4gICAgPVxuICAgIFNlcXVlbmNlLm1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQpXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCcpXG4gICAgICB+Y29tcGFyZTpcbiAgICAgICAgKG1hdGNoIG9yZGVyIHdpdGhcbiAgICAgICAgIHwgYEluY3JlYXNpbmcgLT4gY29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB8IGBEZWNyZWFzaW5nIC0+IEZuLmZsaXAgY29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHMxIHMyIH5jb21wYXJlX2VsdCB+ZiA9XG4gICAgRW51bS5pdGVyMiBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMikgfmZcbiAgOztcblxuICBsZXQgZXF1YWwgczEgczIgfmNvbXBhcmVfZWx0ID0gY29tcGFyZSBjb21wYXJlX2VsdCBzMSBzMiA9IDBcblxuICBsZXQgaXNfc3Vic2V0IHMxIH5vZl86czIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGlzX3N1YnNldCBzMSB+b2ZfOnMyID1cbiAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICB8IEVtcHR5LCBfIC0+IHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTGVhZiB2MSwgdDIgLT4gbWVtIHQyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgTGVhZiB2MiAtPlxuICAgICAgICAobWF0Y2ggbDEsIHIxIHdpdGhcbiAgICAgICAgIHwgRW1wdHksIEVtcHR5IC0+XG4gICAgICAgICAgICgqIFRoaXMgY2FzZSBzaG91bGRuJ3Qgb2NjdXIgaW4gcHJhY3RpY2UgYmVjYXVzZSB3ZSBzaG91bGQgaGF2ZSBjb25zdHJ1Y3RlZFxuICAgICAgICAgICAgICBhIExlYWYgcmF0aGVyIHRoYW4gYSBOb2RlIHdpdGggdHdvIEVtcHR5IHN1YnRyZWVzICopXG4gICAgICAgICAgIGNvbXBhcmVfZWx0IHYxIHYyID0gMFxuICAgICAgICAgfCBfLCBfIC0+IGZhbHNlKVxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgKE5vZGUgKGwyLCB2MiwgcjIsIF8sIF8pIGFzIHQyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBwaHlzX2VxdWFsIHMxIHMyIHx8IChpc19zdWJzZXQgbDEgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzpyMilcbiAgICAgICAgICAoKiBOb3RlIHRoYXQgaGVpZ2h0IGFuZCBzaXplIGRvbid0IG1hdHRlciBoZXJlLiAqKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gaXNfc3Vic2V0IChOb2RlIChsMSwgdjEsIEVtcHR5LCAwLCAwKSkgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzp0MlxuICAgICAgICBlbHNlIGlzX3N1YnNldCAoTm9kZSAoRW1wdHksIHYxLCByMSwgMCwgMCkpIH5vZl86cjIgJiYgaXNfc3Vic2V0IGwxIH5vZl86dDJcbiAgICBpblxuICAgIGlzX3N1YnNldCBzMSB+b2ZfOnMyXG4gIDs7XG5cbiAgbGV0IHJlYyBhcmVfZGlzam9pbnQgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIGVsdCwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCBMZWFmIGVsdCAtPiBub3QgKG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdClcbiAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBmYWxzZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+XG4gICAgICAgICAgYXJlX2Rpc2pvaW50IGwxIGwyIH5jb21wYXJlX2VsdCAmJiBhcmVfZGlzam9pbnQgcjEgcjIgfmNvbXBhcmVfZWx0XG4gICAgICAgIHwgXywgU29tZSBfLCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IExlYWYgdiAtPiBmIHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgaXRlciBsO1xuICAgICAgICBmIHY7XG4gICAgICAgIGl0ZXIgclxuICAgIGluXG4gICAgaXRlciB0IFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IHJlYyBmb2xkIHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiBhY2N1IHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpIHYpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfZWxlbSBzdGF0ZSB0ID1cbiAgICBmb2xkIHQgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSkgfmY6aGFzaF9mb2xkX2VsZW1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIHYgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIHYgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgcmVjIGZvcl9hbGwgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiAmJiBmb3JfYWxsIH5mOnAgbCAmJiBmb3JfYWxsIH5mOnAgclxuICA7O1xuXG4gIGxldCByZWMgZXhpc3RzIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2IHx8IGV4aXN0cyB+ZjpwIGwgfHwgZXhpc3RzIH5mOnAgclxuICA7O1xuXG4gIGxldCBmaWx0ZXIgcyB+ZjpwID1cbiAgICBsZXQgcmVjIGZpbHQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBMZWFmIHYgYXMgdCAtPiBpZiBwIHYgdGhlbiB0IGVsc2UgRW1wdHlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgbCcgPSBmaWx0IGwgaW5cbiAgICAgICAgbGV0IGtlZXBfdiA9IHAgdiBpblxuICAgICAgICBsZXQgcicgPSBmaWx0IHIgaW5cbiAgICAgICAgaWYga2VlcF92ICYmIHBoeXNfZXF1YWwgbCBsJyAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgdGhlbiB0XG4gICAgICAgIGVsc2UgaWYga2VlcF92XG4gICAgICAgIHRoZW4gam9pbiBsJyB2IHInXG4gICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG4gICAgaW5cbiAgICBmaWx0IHMgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGZpbHRcbiAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgcyBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiBzIH5mOnAgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgICAgfCBMZWFmIHYgYXMgdCAtPiBpZiBwIHYgdGhlbiB0LCBFbXB0eSBlbHNlIEVtcHR5LCB0XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIGFzIHQgLT5cbiAgICAgICAgbGV0IGwndCwgbCdmID0gbG9vcCBsIGluXG4gICAgICAgIGxldCBrZWVwX3ZfdCA9IHAgdiBpblxuICAgICAgICBsZXQgcid0LCByJ2YgPSBsb29wIHIgaW5cbiAgICAgICAgbGV0IG1rIGtlZXBfdiBsJyByJyA9XG4gICAgICAgICAgaWYga2VlcF92ICYmIHBoeXNfZXF1YWwgbCBsJyAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIGlmIGtlZXBfdlxuICAgICAgICAgIHRoZW4gam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcbiAgICAgICAgaW5cbiAgICAgICAgbWsga2VlcF92X3QgbCd0IHIndCwgbWsgKG5vdCBrZWVwX3ZfdCkgbCdmIHInZlxuICAgIGluXG4gICAgbG9vcCBzIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiB2IDo6IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG4gIDs7XG5cbiAgbGV0IGVsZW1lbnRzIHMgPSBlbGVtZW50c19hdXggW10gc1xuXG4gIGxldCBjaG9vc2UgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgY2hvb3NlX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU2V0LmNob29zZV9leG46IGVtcHR5IHNldFwiKSBpblxuICAgIGxldCBjaG9vc2VfZXhuIHQgPVxuICAgICAgbWF0Y2ggY2hvb3NlIHQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGNob29zZV9leG5cbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsc3QgfmNvbXBhcmVfZWx0ID1cbiAgICBMaXN0LmZvbGQgbHN0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSB+Y29tcGFyZV9lbHQgPVxuICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IHRvX2xpc3QgcyA9IGVsZW1lbnRzIHNcblxuICBsZXQgb2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQgPVxuICAgIEFycmF5LmZvbGQgYSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICAoKiBmYXN0ZXIgYnV0IGVxdWl2YWxlbnQgdG8gW0FycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdCldICopXG4gIGxldCB0b19hcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBbfHxdXG4gICAgfCBMZWFmIHYgLT4gW3wgdiB8XVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGxldCByZXMgPSBBcnJheS5jcmVhdGUgfmxlbjpzIHYgaW5cbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgICgqIEludmFyaWFudDogb24gZW50cnkgYW5kIG9uIGV4aXQgdG8gW2xvb3BdLCAhcG9zX3JlZiBpcyB0aGUgbmV4dFxuICAgICAgICAgICBhdmFpbGFibGUgY2VsbCBpbiB0aGUgYXJyYXkuICopXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZlxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgICAgbG9vcCBsO1xuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgICAgIGxvb3AgclxuICAgICAgaW5cbiAgICAgIGxvb3AgbDtcbiAgICAgICgqIHJlcy4oIXBvc19yZWYpIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgKGJ5IEFycmF5LmNyZWF0ZSB+bGVuOmFib3ZlKS4gKilcbiAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgIGxvb3AgcjtcbiAgICAgIHJlc1xuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiB+Y29tcGFyZV9lbHQgPVxuICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCAoZiB4KSB+Y29tcGFyZV9lbHQpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgc2V0IH5lcXVpdiA9XG4gICAgbGV0IHJlYyBsb29wIHNldCBlcXVpdl9jbGFzc2VzID1cbiAgICAgIGlmIGlzX2VtcHR5IHNldFxuICAgICAgdGhlbiBlcXVpdl9jbGFzc2VzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHggPSBjaG9vc2VfZXhuIHNldCBpblxuICAgICAgICBsZXQgZXF1aXZfeCwgbm90X2VxdWl2X3ggPVxuICAgICAgICAgIHBhcnRpdGlvbl90ZiBzZXQgfmY6KGZ1biBlbHQgLT4gcGh5c19lcXVhbCB4IGVsdCB8fCBlcXVpdiB4IGVsdClcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBub3RfZXF1aXZfeCAoZXF1aXZfeCA6OiBlcXVpdl9jbGFzc2VzKSlcbiAgICBpblxuICAgIGxvb3Agc2V0IFtdIFtAbm9udGFpbF1cbiAgOztcblxuXG4gIGxldCByZWMgZmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIFNvbWUgdlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGZpbmQgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaW5kIHIgfmZcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICA7O1xuXG4gIGxldCByZWMgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgKG1hdGNoIGYgdiB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggZmluZF9tYXAgbCB+ZiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIHIgfmZcbiAgICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNldC5maW5kX2V4biBmYWlsZWQgdG8gZmluZCBhIG1hdGNoaW5nIGVsZW1lbnRcIlxuICAgIHwgU29tZSBlIC0+IGVcbiAgOztcblxuICBsZXQgcmVjIG50aCB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGkgPSAwIHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGlmIGkgPj0gc1xuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gbnRoIGwgaSBlbHNlIGlmIGMgPSAwIHRoZW4gU29tZSB2IGVsc2UgbnRoIHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgbGVmdG92ZXJzIGFscmVhZHlfc2VlbiA9XG4gICAgICBtYXRjaCB4cyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGxlZnRvdmVyc1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBtZW0gYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdFxuICAgICAgICB0aGVuIGxvb3AgdGwgbGVmdG92ZXJzIGFscmVhZHlfc2VlblxuICAgICAgICBlbHNlIGxvb3AgdGwgKGhkIDo6IGxlZnRvdmVycykgKGFkZCBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0KVxuICAgIGluXG4gICAgbG9vcCB4cyBbXSBlbXB0eVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgbHN0IC0+XG4gICAgICBsZXQgZWx0X2xzdCA9IExpc3QubWFwIGxzdCB+ZjphX29mX3NleHAgaW5cbiAgICAgIGxldCBzZXQgPSBvZl9saXN0IGVsdF9sc3QgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBsZW5ndGggc2V0ID0gTGlzdC5sZW5ndGggbHN0XG4gICAgICB0aGVuIHNldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZXQgPSByZWYgZW1wdHkgaW5cbiAgICAgICAgTGlzdC5pdGVyMl9leG4gbHN0IGVsdF9sc3QgfmY6KGZ1biBlbF9zZXhwIGVsIC0+XG4gICAgICAgICAgaWYgbWVtICFzZXQgZWwgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCIgZWxfc2V4cFxuICAgICAgICAgIGVsc2Ugc2V0IDo9IGFkZCAhc2V0IGVsIH5jb21wYXJlX2VsdCk7XG4gICAgICAgIGFzc2VydCBmYWxzZSlcbiAgICB8IHNleHAgLT4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gZWwgYWNjIC0+IHNleHBfb2ZfYSBlbCA6OiBhY2MpKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCBpc19zdWJzZXRcbiAgICAgICAgICAoc3Vic2V0IDogXyBOYW1lZC50KVxuICAgICAgICAgIH5vZl86KHN1cGVyc2V0IDogXyBOYW1lZC50KVxuICAgICAgICAgIH5zZXhwX29mX2VsdFxuICAgICAgICAgIH5jb21wYXJlX2VsdFxuICAgICAgPVxuICAgICAgbGV0IGludmFsaWRfZWxlbWVudHMgPSBkaWZmIHN1YnNldC5zZXQgc3VwZXJzZXQuc2V0IH5jb21wYXJlX2VsdCBpblxuICAgICAgaWYgaXNfZW1wdHkgaW52YWxpZF9lbGVtZW50c1xuICAgICAgdGhlbiBPayAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgPSBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgaW52YWxpZF9lbGVtZW50cyBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIChzdWJzZXQubmFtZSBeIFwiIGlzIG5vdCBhIHN1YnNldCBvZiBcIiBeIHN1cGVyc2V0Lm5hbWUpXG4gICAgICAgICAgICAgWyBcImludmFsaWRfZWxlbWVudHNcIiwgaW52YWxpZF9lbGVtZW50c19zZXhwIF0pKVxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgczEgczIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdCA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAgIFsgaXNfc3Vic2V0IHMxIH5vZl86czIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICA7IGlzX3N1YnNldCBzMiB+b2ZfOnMxIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdhLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICdhIFRyZWUwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAnYSBUcmVlMC50XG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGNvbXBhcmF0b3IgfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yIH1cblxubGV0IGxpa2VfbWF5YmVfbm9fb3AgKHsgdHJlZSA9IG9sZF90cmVlOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpIHRyZWUgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgY29tcGFyZV9lbHQgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG5cbiAgbGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBrXG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICAgIGVuZClcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyB0ID0gVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdC50cmVlXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdC50cmVlXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHQudHJlZVxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0LnRyZWVcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdC50cmVlXG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdC50cmVlXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQudHJlZSB+ZlxuICBsZXQgaXRlcjIgYSBiIH5mID0gVHJlZTAuaXRlcjIgYS50cmVlIGIudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdC50cmVlIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQudHJlZSB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQudHJlZSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQudHJlZSB+ZlxuICBsZXQgbWVtIHQgYSA9IFRyZWUwLm1lbSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGxpa2VfbWF5YmVfbm9fb3AgdCAoVHJlZTAuZmlsdGVyIHQudHJlZSB+ZilcbiAgbGV0IGFkZCB0IGEgPSBsaWtlIHQgKFRyZWUwLmFkZCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgcmVtb3ZlIHQgYSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLnVuaW9uIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGludGVyIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuaW50ZXIgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmRpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY29tcGFyZV9lbHQgdDEpIHQxLnRyZWUgdDIudHJlZVxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgbGV0IGlzX3N1YnNldCB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdC50cmVlIH5vZl86b2ZfLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBsZXQgdG9fbmFtZWRfdHJlZSAobmFtZWQgOiAoXywgXykgdCBOYW1lZC50KSA9IHsgbmFtZWQgd2l0aCBzZXQgPSBuYW1lZC5zZXQudHJlZSB9XG5cbiAgICBsZXQgaXNfc3Vic2V0IHN1YnNldCB+b2ZfOnN1cGVyc2V0ID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICAodG9fbmFtZWRfdHJlZSBzdWJzZXQpXG4gICAgICAgIH5vZl86KHRvX25hbWVkX3RyZWUgc3VwZXJzZXQpXG4gICAgICAgIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgc3Vic2V0LnNldClcbiAgICAgICAgfnNleHBfb2ZfZWx0OnN1YnNldC5zZXQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHQxIHQyID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXQgWyBpc19zdWJzZXQgdDEgfm9mXzp0MjsgaXNfc3Vic2V0IHQyIH5vZl86dDEgXVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIE5hbWVkXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgbGV0IHRyZWVfdCwgdHJlZV9mID0gVHJlZTAucGFydGl0aW9uX3RmIHQudHJlZSB+ZiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCB0cmVlX3QsIGxpa2VfbWF5YmVfbm9fb3AgdCB0cmVlX2ZcbiAgOztcblxuICBsZXQgc3BsaXQgdCBhID1cbiAgICBsZXQgdHJlZTEsIGIsIHRyZWUyID0gVHJlZTAuc3BsaXQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgYiwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2xlX2d0IHQgYSA9XG4gICAgbGV0IHRyZWUxLCB0cmVlMiA9IFRyZWUwLnNwbGl0X2xlX2d0IHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBzcGxpdF9sdF9nZSB0IGEgPVxuICAgIGxldCB0cmVlMSwgdHJlZTIgPSBUcmVlMC5zcGxpdF9sdF9nZSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBMaXN0Lm1hcCAoVHJlZTAuZ3JvdXBfYnkgdC50cmVlIH5lcXVpdikgfmY6KGxpa2UgdClcbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdC50cmVlIGlcbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZV9pbmRleCB0LnRyZWUgaSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgdC5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgICAgIHQnLnRyZWVcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQudHJlZVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9ICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgY2UgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKSBhX29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBlID0gVHJlZTAuc2luZ2xldG9uIGVcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9IFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUwLmVsZW1lbnRzIHRcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHRcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUwLmNob29zZV9leG4gdFxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0XG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0IH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5pbml0IH5mXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmZcbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhIGIgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLm1lbSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLmFkZCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnJlbW92ZSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb24gfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC51bmlvbiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpbnRlciB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmludGVyIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGRpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjZSBjb21wYXJhdG9yKSB0MSB0MlxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC51bmlvbl9saXN0IGwgfnRvX3RyZWU6Rm4uaWQgfmNvbXBhcmF0b3JcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBUcmVlMC5ncm91cF9ieSB0IH5lcXVpdlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0X2xlX2d0IH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0X2xlX2d0IHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzcGxpdF9sdF9nZSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdF9sdF9nZSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0IGlcbiAgbGV0IHJlbW92ZV9pbmRleCB+Y29tcGFyYXRvciB0IGkgPSBUcmVlMC5yZW1vdmVfaW5kZXggdCBpIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdCA9IHRcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCdcbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlMC5OYW1lZFxuXG4gICAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0MSB+b2ZfOnQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICB0MVxuICAgICAgICB+b2ZfOnQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmVxdWFsXG4gICAgICAgIHQxXG4gICAgICAgIHQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgdCA9ICgnZWx0LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuY29tcGFyZSBhX29mX3NleHAgc2V4cClcbiAgOztcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG4gIGVuZFxuXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgZSA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBlIH1cblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC51bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIGwpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIGxldCB0cmVlID1cbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLk1vbmFkX2luZml4LihcbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgID4+fCBmdW4gdHJlZSAtPiB7IGNvbXBhcmF0b3I7IHRyZWUgfSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm1hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3JcbiAgICA7IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB9XG4gIDs7XG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxudHlwZSAoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBlbHQgY21wKSAoKG1vZHVsZSBNKSA6IChlbHQsIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgdW5pb25fbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgfmxlbiB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX3NlcXVlbmNlIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgc3RhYmxlX2RlZHVwX2xpc3QgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5zdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCBmaWx0ZXJfbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IuZmlsdGVyX21hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5sZXQgdG9fdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxubGV0IG9mX3RyZWUgbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBlbHQgY21wKVxuICAgICAgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvciBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpXG4gIDogKGVsdCwgXykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBlbHQpIHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGVcbjs7XG5cbmxldCBoYXNoX21fX3QgZm9sZGVyIHQgPVxuICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfbV9fdCBmb2xkZXIgKEhhc2guY3JlYXRlICgpKSB0IGluXG4gIEhhc2guZ2V0X2hhc2hfdmFsdWUgc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgc2V0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdHJlZSA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IHVuaW9uX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvciBhXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX3NlcXVlbmNlIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG1hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX3JlZlxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID0gZXF1YWxfcmVmXG5cbiAgbGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA5XylcbiAgICAgICAgOiAoKChhX18wMDlfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwOV8pIC0+IChhX18wMDlfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA5XyB0KSAtPlxuICAgICAgZ2xvYmFsaXplX3JlZlxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSByZWZfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9yZWZcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gcmVmX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgZ2xvYmFsaXplIDogKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdFxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG4oKiBJbiB0aGUgZGVmaW5pdGlvbiBvZiBbdF0sIHdlIGRvIG5vdCBoYXZlIFtbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXV0gYmVjYXVzZVxuICAgaW4gZ2VuZXJhbCwgc3ludGF4IGV4dGVuc2lvbnMgdGVuZCB0byB1c2UgdGhlIGltcGxlbWVudGF0aW9uIHdoZW4gYXZhaWxhYmxlIHJhdGhlciB0aGFuXG4gICB1c2luZyB0aGUgYWxpYXMuICBIZXJlIHRoYXQgd291bGQgbGVhZCB0byB1c2UgdGhlIHJlY29yZCByZXByZXNlbnRhdGlvbiBbIHsgbXV0YWJsZVxuICAgY29udGVudHMgOiAnYSB9IF0gd2hpY2ggd291bGQgcmVzdWx0IGluIGRpZmZlcmVudCAoYW5kIHVud2FudGVkKSBiZWhhdmlvci4gICopXG50eXBlICdhIHQgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbmV4dGVybmFsIGNyZWF0ZSA6ICdhIC0+ICgnYSB0W0Bsb2NhbF9vcHRdKSA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxubGV0IHN3YXAgdDEgdDIgPVxuICBsZXQgdG1wID0gIXQxIGluXG4gIHQxIDo9ICF0MjtcbiAgdDIgOj0gdG1wXG47O1xuXG5sZXQgcmVwbGFjZSB0IGYgPSB0IDo9IGYgIXRcblxubGV0IHNldF90ZW1wb3JhcmlseSB0IGEgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9ICF0IGluXG4gIHQgOj0gYTtcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0IDo9IHJlc3RvcmVfdG8pXG47O1xuXG5tb2R1bGUgQW5kX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgdCA9IFQgOiAnYSByZWYgKiAnYSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNldCAoVCAociwgYSkpID0gciA6PSBhXG4gIGxldCBzZXRzIHRzID0gTGlzdC5pdGVyIHRzIH5mOnNldFxuICBsZXQgc25hcHNob3QgKFQgKHIsIF8pKSA9IFQgKHIsICFyKVxuICBsZXQgc25hcHNob3RzIHRzID0gTGlzdC5tYXAgdHMgfmY6c25hcHNob3RcbmVuZFxuXG5sZXQgc2V0c190ZW1wb3JhcmlseSBhbmRfdmFsdWVzIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSBBbmRfdmFsdWUuc25hcHNob3RzIGFuZF92YWx1ZXMgaW5cbiAgQW5kX3ZhbHVlLnNldHMgYW5kX3ZhbHVlcztcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBBbmRfdmFsdWUuc2V0cyByZXN0b3JlX3RvKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5cbigqIFt0XSBzdG9yZXMgdGhlIFt0Lmxlbmd0aF0gcXVldWUgZWxlbWVudHMgYXQgY29uc2VjdXRpdmUgaW5jcmVhc2luZyBpbmRpY2VzIG9mIFt0LmVsdHNdLFxuICAgbW9kIHRoZSBjYXBhY2l0eSBvZiBbdF0sIHdoaWNoIGlzIFtPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICBUaGUgY2FwYWNpdHkgaXNcbiAgIHJlcXVpcmVkIHRvIGJlIGEgcG93ZXIgb2YgdHdvICh1c2VyLXJlcXVlc3RlZCBjYXBhY2l0aWVzIGFyZSByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0XG4gICBwb3dlciksIHNvIHRoYXQgbW9kIGNhbiBxdWlja2x5IGJlIGNvbXB1dGVkIHVzaW5nIFtsYW5kIHQubWFza10sIHdoZXJlIFt0Lm1hc2sgPVxuICAgY2FwYWNpdHkgdCAtIDFdLiAgU28sIHF1ZXVlIGVsZW1lbnQgW2ldIGlzIGF0IFt0LmVsdHMuKCAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICldLlxuXG4gICBbbnVtX211dGF0aW9uc10gaXMgdXNlZCB0byBkZXRlY3QgbW9kaWZpY2F0aW9uIGR1cmluZyBpdGVyYXRpb24uICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbnVtX211dGF0aW9ucyA6IGludFxuICA7IG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfXG4gICAgeyBudW1fbXV0YXRpb25zID0gbnVtX211dGF0aW9uc19fMDAzX1xuICAgIDsgZnJvbnQgPSBmcm9udF9fMDA1X1xuICAgIDsgbWFzayA9IG1hc2tfXzAwN19cbiAgICA7IGxlbmd0aCA9IGxlbmd0aF9fMDA5X1xuICAgIDsgZWx0cyA9IGVsdHNfXzAxMV9cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAwMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEyXyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDExXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDA5XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbWFza19fMDA3XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hc2tcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA2XyA9IHNleHBfb2ZfaW50IGZyb250X18wMDVfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZnJvbnRcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IG51bV9tdXRhdGlvbnNfXzAwM18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJudW1fbXV0YXRpb25zXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgdHlwZSBTID0gUXVldWVfaW50Zi5TXG5cbmxldCBpbmNfbnVtX211dGF0aW9ucyB0ID0gdC5udW1fbXV0YXRpb25zIDwtIHQubnVtX211dGF0aW9ucyArIDFcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxubGV0IGVsdHNfaW5kZXggdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFza1xubGV0IHVuc2FmZV9nZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfaXNfc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfaXNfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIGEgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpIGFcbmxldCB1bnNhZmVfdW5zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxuXG5sZXQgY2hlY2tfaW5kZXhfZXhuIHQgaSA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gdC5sZW5ndGhcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiUXVldWUgaW5kZXggb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBbIFwiaW5kZXhcIiwgaSB8PiBJbnQuc2V4cF9vZl90OyBcImxlbmd0aFwiLCB0Lmxlbmd0aCB8PiBJbnQuc2V4cF9vZl90IF0pXG47O1xuXG5sZXQgZ2V0IHQgaSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIHVuc2FmZV9nZXQgdCBpXG47O1xuXG5sZXQgc2V0IHQgaSBhID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgdW5zYWZlX3NldCB0IGkgYVxuOztcblxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcbmxldCBsZW5ndGggeyBsZW5ndGg7IF8gfSA9IGxlbmd0aFxuXG5sZXQgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucyA9XG4gIGlmIHQubnVtX211dGF0aW9ucyA8PiBudW1fbXV0YXRpb25zXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIm11dGF0aW9uIG9mIHF1ZXVlIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgICAgWyBcIlwiLCB0IHw+IHNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSBdKVxuOztcblxubGV0IGNvbXBhcmUgPVxuICBsZXQgcmVjIHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgcG9zIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDIgPVxuICAgIG1hdGNoIHBvcyA9IGxlbjEsIHBvcyA9IGxlbjIgd2l0aFxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgIHwgZmFsc2UsIGZhbHNlIC0+XG4gICAgICBsZXQgeCA9IGNvbXBhcmVfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IDAgLT4gdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MlxuICAgICAgIHwgbiAtPiBuKVxuICBpblxuICBmdW4gY29tcGFyZV9lbHQgdDEgdDIgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gICAgdGhlbiAwXG4gICAgZWxzZVxuICAgICAgdW5zYWZlX2NvbXBhcmVfZnJvbVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICAwXG4gICAgICAgIH50MVxuICAgICAgICB+dDJcbiAgICAgICAgfmxlbjE6dDEubGVuZ3RoXG4gICAgICAgIH5sZW4yOnQyLmxlbmd0aFxuICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBlcXVhbCA9XG4gIGxldCByZWMgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IHBvcyB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW4gPVxuICAgIHBvcyA9IGxlblxuICAgIHx8XG4gICAgbGV0IGIgPSBlcXVhbF9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgYiAmJiB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgKHBvcyArIDEpIH50MSB+dDIgfm11dDEgfm11dDIgfmxlblxuICBpblxuICBmdW4gZXF1YWxfZWx0IHQxIHQyIC0+XG4gICAgcGh5c19lcXVhbCB0MSB0MlxuICAgIHx8XG4gICAgbGV0IGxlbjEgPSB0MS5sZW5ndGggaW5cbiAgICBsZXQgbGVuMiA9IHQyLmxlbmd0aCBpblxuICAgIGxlbjEgPSBsZW4yXG4gICAgJiYgdW5zYWZlX2VxdWFsX2Zyb21cbiAgICAgICAgIGVxdWFsX2VsdFxuICAgICAgICAgMFxuICAgICAgICAgfnQxXG4gICAgICAgICB+dDJcbiAgICAgICAgIH5sZW46bGVuMVxuICAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IHsgbnVtX211dGF0aW9uczsgbWFzayA9IF87IGVsdHM7IGZyb250OyBsZW5ndGggfSA9IHQgaW5cbiAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpO1xuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGFzc2VydCAoY2FwYWNpdHkgPSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICBhc3NlcnQgKGNhcGFjaXR5ID49IDEpO1xuICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5KTtcbiAgZm9yIGkgPSAwIHRvIGNhcGFjaXR5IC0gMSBkb1xuICAgIGlmIGkgPCB0Lmxlbmd0aFxuICAgIHRoZW4gKFxuICAgICAgaW52YXJpYW50X2EgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMpXG4gICAgZWxzZSBhc3NlcnQgKG5vdCAodW5zYWZlX2lzX3NldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpID9jYXBhY2l0eSAoKSA6IGEgdCA9XG4gIGxldCBjYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiAyXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcImNhbm5vdCBoYXZlIHF1ZXVlIHdpdGggbmVnYXRpdmUgY2FwYWNpdHlcIlxuICAgICAgICAgICAgIFsgXCJjYXBhY2l0eVwiLCBjYXBhY2l0eSB8PiBJbnQuc2V4cF9vZl90IF0pXG4gICAgICBlbHNlIGlmIGNhcGFjaXR5ID0gMFxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIEludC5jZWlsX3BvdzIgY2FwYWNpdHlcbiAgaW5cbiAgeyBudW1fbXV0YXRpb25zID0gMFxuICA7IGZyb250ID0gMFxuICA7IG1hc2sgPSBjYXBhY2l0eSAtIDFcbiAgOyBsZW5ndGggPSAwXG4gIDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpjYXBhY2l0eVxuICB9XG47O1xuXG5sZXQgYmxpdF90b19hcnJheSB+c3JjIGRzdCA9XG4gIGFzc2VydCAoc3JjLmxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGRzdCk7XG4gIGxldCBmcm9udF9sZW4gPSBJbnQubWluIHNyYy5sZW5ndGggKGNhcGFjaXR5IHNyYyAtIHNyYy5mcm9udCkgaW5cbiAgbGV0IHJlc3RfbGVuID0gc3JjLmxlbmd0aCAtIGZyb250X2xlbiBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOmZyb250X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOnNyYy5mcm9udCB+ZHN0IH5kc3RfcG9zOjA7XG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46cmVzdF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6ZnJvbnRfbGVuXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IGRzdCA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgYmxpdF90b19hcnJheSB+c3JjOnQgZHN0O1xuICB0LmZyb250IDwtIDA7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmVsdHMgPC0gZHN0XG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgZGVzaXJlZF9jYXBhY2l0eSA9XG4gICgqIFdlIGFsbG93IGFyZ3VtZW50cyBsZXNzIHRoYW4gMSB0byBbc2V0X2NhcGFjaXR5XSwgYnV0IHRyYW5zbGF0ZSB0aGVtIHRvIDEgdG8gc2ltcGxpZnlcbiAgICAgdGhlIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGFycmF5IGxlbmd0aCBiZWluZyBhIHBvd2VyIG9mIDIuICopXG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQuY2VpbF9wb3cyIChtYXggMSAobWF4IGRlc2lyZWRfY2FwYWNpdHkgdC5sZW5ndGgpKSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHNldF9jYXBhY2l0eV9pbnRlcm5hbCB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IGVucXVldWUgdCBhID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgKDIgKiB0Lmxlbmd0aCk7XG4gIHVuc2FmZV9zZXQgdCB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBkZXF1ZXVlX25vbmVtcHR5IHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgZWx0cyA9IHQuZWx0cyBpblxuICBsZXQgZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgZnJvbnQgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIGVsdHMgZnJvbnQ7XG4gIHQuZnJvbnQgPC0gZWx0c19pbmRleCB0IDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBkZXF1ZXVlX25vbmVtcHR5IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfbm9uZW1wdHkgdClcbmxldCBkZXF1ZXVlX2FuZF9pZ25vcmVfZXhuICh0eXBlIGVsdCkgKHQgOiBlbHQgdCkgPSBpZ25vcmUgKGRlcXVldWVfZXhuIHQgOiBlbHQpXG5sZXQgZnJvbnRfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyB0LmZyb250XG5sZXQgbGFzdF9ub25lbXB0eSB0ID0gdW5zYWZlX2dldCB0ICh0Lmxlbmd0aCAtIDEpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChmcm9udF9ub25lbXB0eSB0KVxubGV0IHBlZWtfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgU3RkbGliLlF1ZXVlLkVtcHR5IGVsc2UgZnJvbnRfbm9uZW1wdHkgdFxubGV0IGxhc3QgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAobGFzdF9ub25lbXB0eSB0KVxubGV0IGxhc3RfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgU3RkbGliLlF1ZXVlLkVtcHR5IGVsc2UgbGFzdF9ub25lbXB0eSB0XG5cbmxldCBjbGVhciB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHVuc2FmZV91bnNldCB0IGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgdC5mcm9udCA8LSAwKVxuOztcblxubGV0IGJsaXRfdHJhbnNmZXIgfnNyYyB+ZHN0ID9sZW4gKCkgPVxuICBpbmNfbnVtX211dGF0aW9ucyBzcmM7XG4gIGluY19udW1fbXV0YXRpb25zIGRzdDtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gc3JjLmxlbmd0aFxuICAgIHwgU29tZSBsZW4gLT5cbiAgICAgIGlmIGxlbiA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcIlF1ZXVlLmJsaXRfdHJhbnNmZXI6IG5lZ2F0aXZlIGxlbmd0aFwiXG4gICAgICAgICAgICAgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgICAgIG1pbiBsZW4gc3JjLmxlbmd0aFxuICBpblxuICBpZiBsZW4gPiAwXG4gIHRoZW4gKFxuICAgIHNldF9jYXBhY2l0eSBkc3QgKG1heCAoY2FwYWNpdHkgZHN0KSAoZHN0Lmxlbmd0aCArIGxlbikpO1xuICAgIGxldCBkc3Rfc3RhcnQgPSBkc3QuZnJvbnQgKyBkc3QubGVuZ3RoIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICgqIFRoaXMgaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBzaW1wbHkgW2VucXVldWUgZHN0IChkZXF1ZXVlX25vbmVtcHR5IHNyYyldICopXG4gICAgICBsZXQgc3JjX2kgPSAoc3JjLmZyb250ICsgaSkgbGFuZCBzcmMubWFzayBpblxuICAgICAgbGV0IGRzdF9pID0gKGRzdF9zdGFydCArIGkpIGxhbmQgZHN0Lm1hc2sgaW5cbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWVcbiAgICAgICAgZHN0LmVsdHNcbiAgICAgICAgZHN0X2lcbiAgICAgICAgKE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHNyYy5lbHRzIHNyY19pKTtcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgc3JjLmVsdHMgc3JjX2lcbiAgICBkb25lO1xuICAgIGRzdC5sZW5ndGggPC0gZHN0Lmxlbmd0aCArIGxlbjtcbiAgICBzcmMuZnJvbnQgPC0gKHNyYy5mcm9udCArIGxlbikgbGFuZCBzcmMubWFzaztcbiAgICBzcmMubGVuZ3RoIDwtIHNyYy5sZW5ndGggLSBsZW4pXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIHNldF9jYXBhY2l0eSB0IChJbnQubWF4IChjYXBhY2l0eSB0KSAodC5sZW5ndGggKyBMaXN0Lmxlbmd0aCBsKSk7XG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICAgIGRvbmU7XG4gICAgIXIpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGEgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYykgW0Bub250YWlsXVxuOztcblxuXG4oKiBbaXRlcl0gaXMgaW1wbGVtZW50ZWQgZGlyZWN0bHkgYmVjYXVzZSBpbXBsZW1lbnRpbmcgaXQgaW4gdGVybXMgb2YgW2ZvbGRdIGlzXG4gICBzbG93ZXIuICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByZXN1bHQgOj0gdW5zYWZlX2dldCB0IGkgOjogIXJlc3VsdFxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcblxuXG4oKiBGb3IgW2NvbmNhdF9tYXBdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyXSwgd2UgZG9uJ3QgY3JlYXRlIFt0X3Jlc3VsdF0gd2l0aCBbdF0nc1xuICAgY2FwYWNpdHkgYmVjYXVzZSB3ZSBoYXZlIG5vIGlkZWEgaG93IG1hbnkgZWxlbWVudHMgW3RfcmVzdWx0XSB3aWxsIHVsdGltYXRlbHkgaG9sZC4gKilcbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyaSB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGUgfmNhcGFjaXR5OnNyYy5sZW5ndGggKCkgaW5cbiAgYmxpdF90b19hcnJheSB+c3JjIGRzdC5lbHRzO1xuICBkc3QubGVuZ3RoIDwtIHNyYy5sZW5ndGg7XG4gIGRzdFxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6KExpc3QubGVuZ3RoIGwpICgpIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbigqIFRoZSBxdWV1ZSBbdF0gcmV0dXJuZWQgYnkgW2NyZWF0ZV0gd2lsbCBoYXZlIFt0Lmxlbmd0aCA9IDBdLCBbdC5mcm9udCA9IDBdLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gSW50LmNlaWxfcG93MiBsZW5dLiAgU28sIHdlIG9ubHkgaGF2ZSB0byBzZXQgW3QubGVuZ3RoXSB0byBbbGVuXSBhZnRlclxuICAgdGhlIGJsaXQgdG8gbWFpbnRhaW4gYWxsIHRoZSBpbnZhcmlhbnRzOiBbdC5sZW5ndGhdIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgIGluIHRoZSBxdWV1ZSwgW3QuZnJvbnRdIGlzIHRoZSBhcnJheSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcXVldWUsIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICopXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBpZiBsZW4gPCAwXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiUXVldWUuaW5pdDogbmVnYXRpdmUgbGVuZ3RoXCIgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OmxlbiAoKSBpblxuICBhc3NlcnQgKE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzID49IGxlbik7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgaSAoZiBpKVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSBsZW47XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhID0gaW5pdCAoQXJyYXkubGVuZ3RoIGEpIH5mOihBcnJheS51bnNhZmVfZ2V0IGEpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgdC5sZW5ndGggfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgbWFwIHRhIH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0YS5udW1fbXV0YXRpb25zIGluXG4gIGxldCB0YiA9IGNyZWF0ZSB+Y2FwYWNpdHk6dGEubGVuZ3RoICgpIGluXG4gIHRiLmxlbmd0aCA8LSB0YS5sZW5ndGg7XG4gIGZvciBpID0gMCB0byB0YS5sZW5ndGggLSAxIGRvXG4gICAgbGV0IGIgPSBmICh1bnNhZmVfZ2V0IHRhIGkpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHRhIG51bV9tdXRhdGlvbnM7XG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0Yi5lbHRzIGkgYlxuICBkb25lO1xuICB0YlxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbWFwIHQgfmY6KGZ1biBhIC0+XG4gICAgbGV0IHJlc3VsdCA9IGYgIWkgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIHJlc3VsdCkgW0Bub250YWlsXVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OjEgKCkgaW5cbiAgZW5xdWV1ZSB0IHg7XG4gIHRcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0b19saXN0IHQgfD4gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgfD4gb2ZfbGlzdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gfFxuXG4gIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gZnVuY3Rpb25cbiAgICB8IChfIDogdCkgLT4gLlxuICA7O1xuXG4gIGxldCBhbGwgPSBbXVxuICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X3R5cGUgXCJCYXNlLk5vdGhpbmcudFwiIHNleHBcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxuICBsZXQgdG9fc3RyaW5nID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgb2Zfc3RyaW5nIChfIDogc3RyaW5nKSA9IGZhaWx3aXRoIFwiQmFzZS5Ob3RoaW5nLm9mX3N0cmluZzogbm90IHN1cHBvcnRlZFwiXG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5vdGhpbmdcIlxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5OYXRpdmVpbnRcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPVxuICAgIChnbG9iYWxpemVfbmF0aXZlaW50IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChuYXRpdmVpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfbmF0aXZlaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IG5hdGl2ZWludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gIGxldCBvZl9zdHJpbmdfb3B0ID0gb2Zfc3RyaW5nX29wdFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9uYXRpdmVpbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVueFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlbnhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudW1fYml0cyA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJOYXRpdmVpbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuTmF0aXZlaW50LmxvZ29yXG4gIGxldCAoIGxzciApID0gU3RkbGliLk5hdGl2ZWludC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IFN0ZGxpYi5OYXRpdmVpbnQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyICh4IDogbmF0aXZlaW50KSA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IFN0ZGxpYi5OYXRpdmVpbnQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuTmF0aXZlaW50LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgU3RkbGliLk5hdGl2ZWludC5wcmVkIHggPSAwblxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIG5hdGl2ZWludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBTdGRsaWIuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgaWYgU3RkbGliLk5hdGl2ZWludC5lcXVhbCBpIFN0ZGxpYi5OYXRpdmVpbnQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoU3RkbGliLk5hdGl2ZWludC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfbmF0aXZlaW50IHQgPSB0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCB0ID0gdFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50Lm5hdGl2ZWludF9wb3Bjb3VudFxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludF90cnVuY1xubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCB0b19pbnQzMl90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbTmF0aXZlaW50XSBhbmQgW05hdGl2ZWludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmV4dGVybmFsIGJzd2FwIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWJzd2FwX25hdGl2ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNYXBfaW50ZlxuXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxuICAoKiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB0ZXN0ZWQgaW4gW3Rlc3RfbWFwLm1sXSB0byBtYWtlIHN1cmUgb3VyIHVzZSBvZlxuICAgICBbU3RkbGliLk9iai5tYWdpY10gaXMgY29ycmVjdCBhbmQgc2FmZS4gKilcbiAgbGV0IG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdCA9IFN0ZGxpYi5PYmoubWFnaWNcbiAgbGV0IHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudCA9IFN0ZGxpYi5PYmoubWFnaWNcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLk1lcmdlX2VsZW1lbnRcblxuICBsZXQgbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IFNvbWUgbGVmdFxuICA7O1xuXG4gIGxldCByaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gU29tZSByaWdodFxuICA7O1xuXG4gIGxldCBsZWZ0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYFJpZ2h0IF8gLT4gZGVmYXVsdFxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgXyAtPiBkZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IHJpZ2h0XG4gIDs7XG5cbiAgbGV0IHZhbHVlcyB0IH5sZWZ0X2RlZmF1bHQgfnJpZ2h0X2RlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgbGVmdCAtPiBsZWZ0LCByaWdodF9kZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgLT4gbGVmdF9kZWZhdWx0LCByaWdodFxuICAgIHwgYEJvdGggKGxlZnQsIHJpZ2h0KSAtPiBsZWZ0LCByaWdodFxuICA7O1xuZW5kXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGUgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBEdXBsaWNhdGVdIChmdW5jdGlvblxuICAgIHwgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5EdXBsaWNhdGVcIlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBbV2l0aF9sZW5ndGgudF0gYWxsb3dzIHVzIHRvIHN0b3JlIGxlbmd0aCBpbmZvcm1hdGlvbiBvbiB0aGUgc3RhY2sgd2hpbGVcbiAgIGtlZXBpbmcgdGhlIHRyZWUgZ2xvYmFsLiBUaGlzIHNhdmVzIHVwIHRvIE8obG9nIG4pIGJsb2NrcyBvZiBoZWFwIGFsbG9jYXRpb24uICopXG5tb2R1bGUgV2l0aF9sZW5ndGggOiBzaWdcbiAgdHlwZSAnYSB0ID0gcHJpdmF0ZVxuICAgIHsgdHJlZSA6ICdhXG4gICAgICAgICAgICAgW0BnbG9iYWxdXG4gICAgOyBsZW5ndGggOiBpbnQgW0BnbG9iYWxdXG4gICAgfVxuXG4gIHZhbCB3aXRoX2xlbmd0aCA6ICdhIC0+IGludCAtPiAoJ2EgdFtAbG9jYWxdKVxuICB2YWwgd2l0aF9sZW5ndGhfZ2xvYmFsIDogJ2EgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGdsb2JhbGl6ZSA6ICgnYSB0W0Bsb2NhbF0pIC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdHJlZSA6ICdhIFtAZ2xvYmFsXVxuICAgIDsgbGVuZ3RoIDogaW50IFtAZ2xvYmFsXVxuICAgIH1cblxuICBsZXQgd2l0aF9sZW5ndGggdHJlZSBsZW5ndGggPSAgeyB0cmVlOyBsZW5ndGggfVxuICBsZXQgd2l0aF9sZW5ndGhfZ2xvYmFsIHRyZWUgbGVuZ3RoID0geyB0cmVlOyBsZW5ndGggfVxuICBsZXQgZ2xvYmFsaXplICh7IHRyZWU7IGxlbmd0aCB9IFtAbG9jYWxdKSA9IHsgdHJlZTsgbGVuZ3RoIH1cbmVuZFxuXG5vcGVuIFdpdGhfbGVuZ3RoXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IExlYWYgb2YgJ2sgKiAndlxuICAgIHwgTm9kZSBvZiAoJ2ssICd2KSB0ICogJ2sgKiAndiAqICgnaywgJ3YpIHQgKiBpbnRcblxuICB0eXBlICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSB0XG5cbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgaCkgLT4gaFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgayA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfa2V5IGxvd2VyIGsgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9rZXkgayB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2tleSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgKGssIF8pIC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgIHwgTm9kZSAobCwgaywgXywgciwgaCkgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSBrKSBjb21wYXJlX2tleSBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgaykgdXBwZXIgY29tcGFyZV9rZXkgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfa2V5IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfa2V5IHRcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDIgKilcbiAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPSAwICYmIGhyID0gMFxuICAgIHRoZW4gTGVhZiAoeCwgZClcbiAgICBlbHNlIE5vZGUgKGwsIHgsIGQsIHIsIGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKVxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPSBMZWFmIChrZXksIGRhdGEpXG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuTWFwIG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA6IChfLCBfKSB0ID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGssIHYgPSBmIGkgaW5cbiAgICAgICAgTGVhZiAoaywgdilcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIEVtcHR5LCAyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyLCB2ciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBMZWFmIChrciwgdnIpLCAyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHYgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyXG4gICAgICAgICB8fFxuICAgICAgICAgbGV0IGswLCBfID0gYXJyYXkuKDApIGluXG4gICAgICAgICBsZXQgazEsIF8gPSBhcnJheS4oMSkgaW5cbiAgICAgICAgIGNvbXBhcmVfa2V5IGswIGsxIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgXG4gICAgICAod2l0aF9sZW5ndGhcbiAgICAgICAgIChvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0KVxuICAgICAgICAgYXJyYXlfbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPlxuICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKDApKSAoZnN0IGFycmF5LigxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oaSkpIChmc3QgYXJyYXkuKGkgKyAxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKSlcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDMgKilcbiAgbGV0IGJhbCBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICAgIGxldCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaHIgKyAyICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbGQsIGxyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChscnYsIGxyZCkgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgRW1wdHkpIGxydiBscmQgKGNyZWF0ZSBFbXB0eSB4IGQgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscmQsIGxyciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaGwgKyAyICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcmQsIHJyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChybHYsIHJsZCkgLT4gY3JlYXRlIChjcmVhdGUgbCB4IGQgRW1wdHkpIHJsdiBybGQgKGNyZWF0ZSBFbXB0eSBydiByZCBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybGQsIHJsciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycikpKVxuICAgIGVsc2UgY3JlYXRlIGwgeCBkIHJcbiAgOztcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleSB+c2V4cF9vZl9rZXkgPVxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJbTWFwLmFkZF9leG5dIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBtb2R1bGUgQWRkX29yX3NldCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFkZF9leG5faW50ZXJuYWxcbiAgICAgIHwgQWRkX2V4blxuICAgICAgfCBTZXRcbiAgZW5kXG5cbiAgbGV0IHJlYyBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+bGVuZ3RoXG4gICAgICAgICAgICB+a2V5OnhcbiAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgICAgfihhZGRfb3Jfc2V0IDogQWRkX29yX3NldC50KVxuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICAod2l0aF9sZW5ndGggKExlYWYgKHgsIGRhdGEpKSAobGVuZ3RoICsgMSkpXG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGUpXG4gICAgICAgIHwgQWRkX2V4biAtPiAgKHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleSlcbiAgICAgICAgfCBTZXQgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoeCwgZGF0YSkpIGxlbmd0aCkpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuICAod2l0aF9sZW5ndGggKE5vZGUgKExlYWYgKHgsIGRhdGEpLCB2LCBkLCBFbXB0eSwgMikpIChsZW5ndGggKyAxKSlcbiAgICAgIGVsc2UgICh3aXRoX2xlbmd0aCAoTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKHgsIGRhdGEpLCAyKSkgKGxlbmd0aCArIDEpKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlKVxuICAgICAgICB8IEFkZF9leG4gLT4gIChyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXkpXG4gICAgICAgIHwgU2V0IC0+ICAod2l0aF9sZW5ndGggKE5vZGUgKGwsIHgsIGRhdGEsIHIsIGgpKSBsZW5ndGgpKVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSBsIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIHIgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbc2V0J10gZm9yIHRoZSBjYXNlIHdoZW4gW2tleV0gaXMgbGVzcyB0aGFuIGFsbCB0aGUgZXhpc3Rpbmcga2V5cyAqKVxuICBsZXQgcmVjIHNldF9taW4ga2V5IGRhdGEgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrZXksIGRhdGEpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBOb2RlIChMZWFmIChrZXksIGRhdGEpLCB2LCBkLCBFbXB0eSwgMilcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgbCA9IHNldF9taW4ga2V5IGRhdGEgbCBpblxuICAgICAgYmFsIGwgdiBkIHJcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbc2V0J10gZm9yIHRoZSBjYXNlIHdoZW4gW2tleV0gaXMgZ3JlYXRlciB0aGFuIGFsbCB0aGVcbiAgICAgZXhpc3Rpbmcga2V5cyAgKilcbiAgbGV0IHJlYyBzZXRfbWF4IHQga2V5IGRhdGEgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiAoa2V5LCBkYXRhKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKGtleSwgZGF0YSksIDIpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IHIgPSBzZXRfbWF4IHIga2V5IGRhdGEgaW5cbiAgICAgIGJhbCBsIHYgZCByXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICB+YWRkX29yX3NldDpBZGRfZXhuKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIFxuICAgICAgKGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgIHRcbiAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgfmFkZF9vcl9zZXQ6QWRkX2V4bl9pbnRlcm5hbClcbiAgOztcblxuICBsZXQgc2V0IHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5OihmdW4gXyAtPiBMaXN0IFtdKVxuICAgICAgICAgfmFkZF9vcl9zZXQ6U2V0KVxuICA7O1xuXG4gIGxldCBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5ID0gKHNldCB0IH5sZW5ndGg6MCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSkudHJlZVxuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIEZyYWdtZW50ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0ID1cbiAgICAgICAgeyBsZWZ0X3N1YnRyZWUgOiAoJ2ssICd2KSB0XG4gICAgICAgIDsga2V5IDogJ2tcbiAgICAgICAgOyBkYXRhIDogJ3ZcbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2luZ2xldG9uX3RvX3RyZWVfZXhuID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfSAtPiBzaW5nbGV0b24ga2V5IGRhdGFcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiTWFwLnNpbmdsZXRvbl90b190cmVlX2V4bjogbm90IGEgc2luZ2xldG9uXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzaW5nbGV0b24gfmtleSB+ZGF0YSA9IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9XG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQocil8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBjb2xsYXBzZSBsIHIgPSBjcmVhdGUgbC5sZWZ0X3N1YnRyZWUgbC5rZXkgbC5kYXRhIHJcblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyLmxlZnRfc3VidHJlZSl8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBqb2luIGwgciA9IHsgciB3aXRoIGxlZnRfc3VidHJlZSA9IGNvbGxhcHNlIGwgci5sZWZ0X3N1YnRyZWUgfVxuICAgICAgbGV0IG1heF9rZXkgdCA9IHQua2V5XG4gICAgZW5kXG5cbiAgICAoKiogQnVpbGQgdHJlZXMgZnJvbSBzaW5nbGV0b25zIGluIGEgYmFsYW5jZWQgd2F5IGJ5IHVzaW5nIHNrZXcgYmluYXJ5IGVuY29kaW5nLlxuICAgICAgICBFYWNoIGxldmVsIGNvbnRhaW5zIHRyZWVzIG9mIHRoZSBzYW1lIGhlaWdodCwgY29uc2VjdXRpdmUgbGV2ZWxzIGhhdmUgY29uc2VjdXRpdmVcbiAgICAgICAgaGVpZ2h0cy4gVGhlcmUgYXJlIG5vIGdhcHMuIFRoZSBmaXJzdCBsZXZlbCBhcmUgc2luZ2xlIGtleXMuXG4gICAgKilcbiAgICB0eXBlICgnaywgJ3YpIHQgPVxuICAgICAgfCBaZXJvIG9mIHVuaXRcbiAgICAgICgqIFt1bml0XSB0byBtYWtlIHBhdHRlcm4gbWF0Y2hpbmcgZmFzdGVyICopXG4gICAgICB8IE9uZSBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudFxuICAgICAgfCBUd28gb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG5cbiAgICBsZXQgZW1wdHkgPSBaZXJvICgpXG5cbiAgICBsZXQgYWRkX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgeCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gT25lICh0LCB4KVxuICAgICAgICB8IE9uZSAodCwgeSkgLT4gVHdvICh0LCB5LCB4KVxuICAgICAgICB8IFR3byAodCwgeiwgeSkgLT4gT25lIChnbyB0IChGcmFnbWVudC5qb2luIHogeSksIHgpXG4gICAgICBpblxuICAgICAgZnVuIHQgfmtleSB+ZGF0YSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b24gfmtleSB+ZGF0YSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWVfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCByID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiByXG4gICAgICAgIHwgT25lICh0LCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSBsIHIpXG4gICAgICAgIHwgVHdvICh0LCBsbCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgKEZyYWdtZW50LmpvaW4gbGwgbCkgcilcbiAgICAgIGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IEVtcHR5XG4gICAgICB8IE9uZSAodCwgcikgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgICB8IFR3byAodCwgbCwgcikgLT4gZ28gKE9uZSAodCwgbCkpIChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICA7O1xuXG4gICAgbGV0IG1heF9rZXkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IE5vbmVcbiAgICAgIHwgT25lIChfLCByKSB8IFR3byAoXywgXywgcikgLT4gU29tZSAoRnJhZ21lbnQubWF4X2tleSByKVxuICAgIDs7XG4gIGVuZFxuXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleSA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBsZXQgeyB0cmVlID0gYnVpbGRlcjsgbGVuZ3RoIH0gPVxuICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgc2VxXG4gICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBCdWlsZF9pbmNyZWFzaW5nLmVtcHR5IDApXG4gICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSBidWlsZGVyOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IGJ1aWxkZXIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyZV9rZXkgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWxcbiAgICAgICAgICAgICAgICAoQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIGJ1aWxkZXIgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgICAobGVuZ3RoICsgMSkpXG4gICAgICBpblxuICAgICAgT2sgKHdpdGhfbGVuZ3RoX2dsb2JhbCAoQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCBidWlsZGVyKSBsZW5ndGgpKVxuICA7O1xuXG4gICgqIExpa2UgW2JhbF0gYnV0IGFsbG93cyBhbnkgZGlmZmVyZW5jZSBpbiBoZWlnaHQgYmV0d2VlbiBbbF0gYW5kIFtyXS5cblxuICAgICBPKHxoZWlnaHQgbCAtIGhlaWdodCByfCkgKilcbiAgbGV0IHJlYyBqb2luIGwgayBkIHIgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gc2V0X21pbiBrIGQgclxuICAgIHwgXywgRW1wdHkgLT4gc2V0X21heCBsIGsgZFxuICAgIHwgTGVhZiAobGssIGxkKSwgXyAtPiBzZXRfbWluIGxrIGxkIChzZXRfbWluIGsgZCByKVxuICAgIHwgXywgTGVhZiAocmssIHJkKSAtPiBzZXRfbWF4IChzZXRfbWF4IGwgayBkKSByayByZFxuICAgIHwgTm9kZSAobGwsIGxrLCBsZCwgbHIsIGxoKSwgTm9kZSAocmwsIHJrLCByZCwgcnIsIHJoKSAtPlxuICAgICAgKCogW2JhbF0gcmVxdWlyZXMgaGVpZ2h0IGRpZmZlcmVuY2UgPD0gMy4gKilcbiAgICAgIGlmIGxoID4gcmggKyAzXG4gICAgICAoKiBbaGVpZ2h0IGxyID49IGhlaWdodCByXSxcbiAgICAgICAgIHRoZXJlZm9yZSBbaGVpZ2h0IChqb2luIGxyIGsgZCByIC4uLildIGlzIFtoZWlnaHQgcmwgKyAxXSBvciBbaGVpZ2h0IHJsXVxuICAgICAgICAgdGhlcmVmb3JlIHRoZSBoZWlnaHQgZGlmZmVyZW5jZSB3aXRoIFtsbF0gd2lsbCBiZSA8PSAzICopXG4gICAgICB0aGVuIGJhbCBsbCBsayBsZCAoam9pbiBsciBrIGQgcilcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDNcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgayBkIHJsKSByayByZCByclxuICAgICAgZWxzZSBiYWwgbCBrIGQgclxuICA7O1xuXG4gIGxldFtAaW5saW5lXSByZWMgc3BsaXRfZ2VuIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gRW1wdHksIFNvbWUgKGssIGQpLCBFbXB0eVxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIEVtcHR5LCBOb25lLCB0XG4gICAgICBlbHNlIHQsIE5vbmUsIEVtcHR5XG4gICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gbCwgU29tZSAoaywgZCksIHJcbiAgICAgIGVsc2UgaWYgY21wIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsbCwgbWF5YmUsIGxyID0gc3BsaXRfZ2VuIGwgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgbGwsIG1heWJlLCBqb2luIGxyIGsgZCByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBybCwgbWF5YmUsIHJyID0gc3BsaXRfZ2VuIHIgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgam9pbiBsIGsgZCBybCwgbWF5YmUsIHJyKVxuICA7O1xuXG4gIGxldCBzcGxpdCB0IHggfmNvbXBhcmVfa2V5ID0gc3BsaXRfZ2VuIHQgeCB+Y29tcGFyZV9rZXk6KGZ1biB5IC0+IGNvbXBhcmVfa2V5IHggeSlcblxuICAoKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJlYWxseSByZWluc2VydCBbeF0sIGJ1dCBqdXN0IGFycmFuZ2VzIHNvIHRoYXQgW3NwbGl0XVxuICAgICBwcm9kdWNlcyB0aGUgZXF1aXZhbGVudCB0cmVlIGluIHRoZSBmaXJzdCBwbGFjZS4gKilcbiAgbGV0IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvIHggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgbGVmdCwgYm91bmRhcnlfb3B0LCByaWdodCA9XG4gICAgICBzcGxpdF9nZW5cbiAgICAgICAgdFxuICAgICAgICB4XG4gICAgICAgIH5jb21wYXJlX2tleTpcbiAgICAgICAgICAobWF0Y2ggaW50byB3aXRoXG4gICAgICAgICAgIHwgYExlZnQgLT5cbiAgICAgICAgICAgICBmdW4geSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IHggeSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IDFcbiAgICAgICAgICAgICAgICB8IHJlcyAtPiByZXMpXG4gICAgICAgICAgIHwgYFJpZ2h0IC0+XG4gICAgICAgICAgICAgZnVuIHkgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSB4IHkgd2l0aFxuICAgICAgICAgICAgICAgIHwgMCAtPiAtMVxuICAgICAgICAgICAgICAgIHwgcmVzIC0+IHJlcykpXG4gICAgaW5cbiAgICBhc3NlcnQgKE9wdGlvbi5pc19ub25lIGJvdW5kYXJ5X29wdCk7XG4gICAgbGVmdCwgcmlnaHRcbiAgOztcblxuICBsZXQgc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+KGxvd2VyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfih1cHBlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH5jb21wYXJlX2tleVxuICAgID1cbiAgICBpZiBNYXliZV9ib3VuZC5ib3VuZHNfY3Jvc3NlZFxuICAgICAgICAgfmNvbXBhcmU6Y29tcGFyZV9rZXlcbiAgICAgICAgIH5sb3dlcjpsb3dlcl9ib3VuZFxuICAgICAgICAgfnVwcGVyOnVwcGVyX2JvdW5kXG4gICAgdGhlbiBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVmdCwgbWlkX2FuZF9yaWdodCA9XG4gICAgICAgIG1hdGNoIGxvd2VyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gZW1wdHksIHRcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxldCBtaWQsIHJpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdXBwZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBtaWRfYW5kX3JpZ2h0LCBlbXB0eVxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPlxuICAgICAgICAgIHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZWZ0LCBtaWQsIHJpZ2h0KVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBTb21lIGQgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkIGVsc2UgZmluZCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGRhdGEgPSBkYXRhIDo6IE9wdGlvbi52YWx1ZSAoZmluZCB0IGtleSB+Y29tcGFyZV9rZXkpIH5kZWZhdWx0OltdIGluXG4gICAgIChzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB4IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIGwgLT4gbFxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IGlmX25vdF9mb3VuZCBrZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIHJhaXNlIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJNYXAuZmluZF9leG46IG5vdCBmb3VuZFwiOyBzZXhwX29mX2tleSBrZXkgXSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbmRfZXhuIHQgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIGQgZWxzZSBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBkIGVsc2UgZmluZF9leG4gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IHggfmNvbXBhcmVfa2V5ID0gT3B0aW9uLmlzX3NvbWUgKGZpbmQgdCB4IH5jb21wYXJlX2tleSlcblxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKEVtcHR5LCBrLCBkLCBfLCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBrLCBkLCBFbXB0eSwgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIF8sIF8sIHIsIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCBfLCByLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB4LCBkLCByLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHggZCByXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIG1heF9lbHQgbG93ZXJfcGFydCwgbWluX2VsdCB1cHBlcl9wYXJ0IHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gYE9rIHVwcGVyX3BhcnRcbiAgICB8IF8sIE5vbmUgLT4gYE9rIGxvd2VyX3BhcnRcbiAgICB8IFNvbWUgKG1heF9sb3dlciwgXyksIFNvbWUgKG1pbl91cHBlciwgdikgd2hlbiBjb21wYXJlX2tleSBtYXhfbG93ZXIgbWluX3VwcGVyIDwgMCAtPlxuICAgICAgbGV0IHVwcGVyX3BhcnRfd2l0aG91dF9taW4gPSByZW1vdmVfbWluX2VsdCB1cHBlcl9wYXJ0IGluXG4gICAgICBgT2sgKGpvaW4gbG93ZXJfcGFydCBtaW5fdXBwZXIgdiB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluKVxuICAgIHwgXyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSA9XG4gICAgKCogVGhpcyBhc3N1bWVzIHRoYXQgbWluIDw9IG1heCwgd2hpY2ggaXMgY2hlY2tlZCBieSB0aGUgb3V0ZXIgZnVuY3Rpb24uICopXG4gICAgbGV0IHJlYyBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGluaXRcbiAgICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBtaW4gPCAwIHx8IGNvbXBhcmVfa2V5IGsgbWF4ID4gMFxuICAgICAgICB0aGVuICgqIGsgPCBtaW4gfHwgayA+IG1heCAqKVxuICAgICAgICAgIGluaXRcbiAgICAgICAgZWxzZSBmIH5rZXk6ayB+ZGF0YTpkIGluaXRcbiAgICAgIHwgTm9kZSAobCwgaywgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGNfbWluID0gY29tcGFyZV9rZXkgayBtaW4gaW5cbiAgICAgICAgaWYgY19taW4gPCAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrIDwgbWluLCB0aGVuIHRoaXMgbm9kZSBhbmQgaXRzIGxlZnQgYnJhbmNoIGFyZSBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIGlmIGNfbWluID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA9IG1pbiwgdGhlbiB0aGlzIG5vZGUncyBsZWZ0IGJyYW5jaCBpcyBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0OihmIH5rZXk6ayB+ZGF0YTpkIGluaXQpIH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBrID4gbWluICopXG4gICAgICAgICAgbGV0IHogPSBnbyBsIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBsZXQgY19tYXggPSBjb21wYXJlX2tleSBrIG1heCBpblxuICAgICAgICAgICgqIGlmIGsgPiBtYXgsIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICBpZiBjX21heCA+IDBcbiAgICAgICAgICB0aGVuIHpcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCB6ID0gZiB+a2V5OmsgfmRhdGE6ZCB6IGluXG4gICAgICAgICAgICAoKiBpZiBrID0gbWF4LCB0aGVuIHdlIGZvbGQgaW4gdGhpcyBvbmUgbGFzdCB2YWx1ZSBhbmQgd2UncmUgZG9uZSAqKVxuICAgICAgICAgICAgaWYgY19tYXggPSAwIHRoZW4geiBlbHNlIGdvIHIgfm1pbiB+bWF4IH5pbml0OnogfmYgfmNvbXBhcmVfa2V5KSlcbiAgICBpblxuICAgIGZ1biB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGNvbXBhcmVfa2V5IG1pbiBtYXggPD0gMCB0aGVuIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBlbHNlIGluaXRcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5ID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICAgICB0XG4gICAgICAgICB+bWluXG4gICAgICAgICB+bWF4XG4gICAgICAgICB+aW5pdDpbXVxuICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIGwgLT4gKGtleSwgZGF0YSkgOjogbClcbiAgICAgICAgIH5jb21wYXJlX2tleSlcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb25zOlxuICAgICAtIGFsbCBlbGVtZW50cyBpbiB0MSBhcmUgbGVzcyB0aGFuIGVsZW1lbnRzIGluIHQyXG4gICAgIC0gfGhlaWdodCh0MSkgLSBoZWlnaHQodDIpfCA8PSAyICopXG4gIGxldCBjb25jYXRfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgKCogc2ltaWxhciB0byBbY29uY2F0X3VuY2hlY2tlZF0sIGFuZCBiYWxhbmNlcyB0cmVlcyBvZiBhcmJpdHJhcnkgaGVpZ2h0IGRpZmZlcmVuY2VzICopXG4gIGxldCBjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBSZW1vdmVfbm9fb3BcblxuICBsZXQgcmVtb3ZlIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyByZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcClcbiAgICAgIHwgTGVhZiAodiwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgeCB2ID0gMFxuICAgICAgICB0aGVuICAod2l0aF9sZW5ndGggRW1wdHkgKGxlbmd0aCAtIDEpKVxuICAgICAgICBlbHNlICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAgKHdpdGhfbGVuZ3RoIChjb25jYXRfdW5jaGVja2VkIGwgcikgKGxlbmd0aCAtIDEpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IHJlbW92ZV9sb29wIGwgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSByZW1vdmVfbG9vcCByIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgIHRyeSAgKHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSkgd2l0aFxuICAgIHwgUmVtb3ZlX25vX29wIC0+ICAod2l0aF9sZW5ndGggdCBsZW5ndGgpXG4gIDs7XG5cbiAgKCogVXNlIGV4Y2VwdGlvbiB0byBhdm9pZCB0cmVlLXJlYnVpbGQgaW4gbm8tb3AgY2FzZSAqKVxuICBleGNlcHRpb24gQ2hhbmdlX25vX29wXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyBjaGFuZ2VfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAobWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAoKiBlcXVpdmFsZW50IHRvIHJldHVybmluZzogRW1wdHkgKilcbiAgICAgICAgICAgIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgQ2hhbmdlX25vX29wKVxuICAgICAgICAgfCBTb21lIGRhdGEgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoa2V5LCBkYXRhKSkgKGxlbmd0aCArIDEpKSlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gICh3aXRoX2xlbmd0aCBFbXB0eSAobGVuZ3RoIC0gMSkpXG4gICAgICAgICAgfCBTb21lIGQnIC0+ICAod2l0aF9sZW5ndGggKExlYWYgKHYsIGQnKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCBFbXB0eSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgRW1wdHkgdiBkIHIpIGxlbmd0aCkpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICAod2l0aF9sZW5ndGggKGNvbmNhdF91bmNoZWNrZWQgbCByKSAobGVuZ3RoIC0gMSkpXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gICh3aXRoX2xlbmd0aCAoTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgIHRyeSAgKGNoYW5nZV9jb3JlIHQga2V5IGYpIHdpdGhcbiAgICB8IENoYW5nZV9ub19vcCAtPiAgKHdpdGhfbGVuZ3RoIHQgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgdXBkYXRlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBmIE5vbmUgaW5cbiAgICAgICAgICh3aXRoX2xlbmd0aCAoTGVhZiAoa2V5LCBkYXRhKSkgKGxlbmd0aCArIDEpKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkJyA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChMZWFmICh2LCBkJykpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgRW1wdHkpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIEVtcHR5IHYgZCByKSBsZW5ndGgpKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkYXRhID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCkpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgaW5cbiAgICAgKHVwZGF0ZV9jb3JlIHQga2V5IGYpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgXG4gICAgICAoY2hhbmdlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgfCBOb25lIHwgU29tZSAoW10gfCBbIF8gXSkgLT4gTm9uZVxuICAgICAgICAgfCBTb21lIChfIDo6IChfIDo6IF8gYXMgbm9uX2VtcHR5X3RhaWwpKSAtPiBTb21lIG5vbl9lbXB0eV90YWlsKSlcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJfa2V5cyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBfKSAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIF8sIHIsIF8pIC0+XG4gICAgICBpdGVyX2tleXMgfmYgbDtcbiAgICAgIGYgdjtcbiAgICAgIGl0ZXJfa2V5cyB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKF8sIGQpIC0+IGYgZFxuICAgIHwgTm9kZSAobCwgXywgZCwgciwgXykgLT5cbiAgICAgIGl0ZXIgfmYgbDtcbiAgICAgIGYgZDtcbiAgICAgIGl0ZXIgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlcmkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGl0ZXJpIH5mIGw7XG4gICAgICBmIH5rZXk6diB+ZGF0YTpkO1xuICAgICAgaXRlcmkgfmYgclxuICA7O1xuXG4gIGxldCBpdGVyaV91bnRpbCA9XG4gICAgbGV0IHJlYyBpdGVyaV91bnRpbF9sb29wIHQgfmYgOiBDb250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGl0ZXJpX3VudGlsX2xvb3AgfmYgbCB3aXRoXG4gICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgfCBDb250aW51ZSAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgICAgfCBDb250aW51ZSAtPiBpdGVyaV91bnRpbF9sb29wIH5mIHIpKVxuICAgIGluXG4gICAgZnVuIHQgfmYgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC5vZl9jb250aW51ZV9vcl9zdG9wIChpdGVyaV91bnRpbF9sb29wIHQgfmYpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiBkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcCB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgIGxldCByJyA9IG1hcCB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgbWFwaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIH5rZXk6diB+ZGF0YTpkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcGkgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gbWFwaSB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgZm9sZCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBmb2xkIH5mIHIgfmluaXQ6KGYgfmtleTp2IH5kYXRhOmQgKGZvbGQgfmYgbCB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgZm9sZF91bnRpbF9sb29wIHQgfmFjYyB+ZiA6IChfLCBfKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2NcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfbG9vcCBsIH5hY2MgfmYgd2l0aFxuICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIGFjYyB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgICAgfCBDb250aW51ZSBhY2MgLT4gZm9sZF91bnRpbF9sb29wIHIgfmFjYyB+ZikpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2xvb3AgdCB+YWNjOmluaXQgfmYgd2l0aFxuICAgIHwgQ29udGludWUgYWNjIC0+IGZpbmlzaCBhY2MgW0Bub250YWlsXVxuICAgIHwgU3RvcCBzdG9wIC0+IHN0b3BcbiAgOztcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZmlsdGVyX21hcGkgdCB+ZiB+bGVuID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgIHwgU29tZSBuZXdfZGF0YSAtPiBMZWFmICh2LCBuZXdfZGF0YSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgRW1wdHkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGwnID0gZmlsdGVyX21hcGkgbCB+ZiB+bGVuIGluXG4gICAgICBsZXQgbmV3X2RhdGEgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwaSByIH5mIH5sZW4gaW5cbiAgICAgIChtYXRjaCBuZXdfZGF0YSB3aXRoXG4gICAgICAgfCBTb21lIG5ld19kYXRhIC0+IGpvaW4gbCcgdiBuZXdfZGF0YSByJ1xuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICBjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIGwnIHInKVxuICA7O1xuXG4gIGxldCByZWMgZmlsdGVyaSB0IH5mIH5sZW4gPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgfCB0cnVlIC0+IHRcbiAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgIEVtcHR5KVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBsJyA9IGZpbHRlcmkgbCB+ZiB+bGVuIGluXG4gICAgICBsZXQga2VlcF9kYXRhID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gZmlsdGVyaSByIH5mIH5sZW4gaW5cbiAgICAgIGlmIHBoeXNfZXF1YWwgbCBsJyAmJiBrZWVwX2RhdGEgJiYgcGh5c19lcXVhbCByIHInXG4gICAgICB0aGVuIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBrZWVwX2RhdGEgd2l0aFxuICAgICAgICB8IHRydWUgLT4gam9pbiBsJyB2IGQgcidcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgIGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gIDs7XG5cbiAgbGV0IGZpbHRlciB0IH5mIH5sZW4gPSBmaWx0ZXJpIHQgfmxlbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgfmxlbiA9IGZpbHRlcmkgdCB+bGVuIH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgfmxlbiA9IGZpbHRlcl9tYXBpIHQgfmxlbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gICAgbGV0IHQxLCB0MiA9XG4gICAgICBmb2xkXG4gICAgICAgIHRcbiAgICAgICAgfmluaXQ6KEJ1aWxkX2luY3JlYXNpbmcuZW1wdHksIEJ1aWxkX2luY3JlYXNpbmcuZW1wdHkpXG4gICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAodDEsIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB4IC0+IEJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0MSB+a2V5IH5kYXRhOngsIHQyXG4gICAgICAgICAgfCBTZWNvbmQgeSAtPiB0MSwgQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQyIH5rZXkgfmRhdGE6eSlcbiAgICBpblxuICAgIEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdDEsIEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdDJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgICBsZXQgcmVjIGxvb3AgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgIHwgdHJ1ZSAtPiB0LCBFbXB0eVxuICAgICAgICAgfCBmYWxzZSAtPiBFbXB0eSwgdClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGwndCwgbCdmID0gbG9vcCBsIH5mIGluXG4gICAgICAgIGxldCBrZWVwX2RhdGFfdCA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgICAgbGV0IHIndCwgcidmID0gbG9vcCByIH5mIGluXG4gICAgICAgIGxldCBtayBsJyBrZWVwX2RhdGEgcicgPVxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbCBsJyAmJiBrZWVwX2RhdGEgJiYgcGh5c19lcXVhbCByIHInXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBrZWVwX2RhdGEgd2l0aFxuICAgICAgICAgICAgfCB0cnVlIC0+IGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgICB8IGZhbHNlIC0+IGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gICAgICAgIGluXG4gICAgICAgIG1rIGwndCBrZWVwX2RhdGFfdCByJ3QsIG1rIGwnZiAobm90IGtlZXBfZGF0YV90KSByJ2ZcbiAgICBpblxuICAgIGxvb3AgdCB+ZlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2sgKiAndiAqICgnaywgJ3YpIHRyZWUgKiAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgdCAoZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgdCAoZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdHJlZSB0cmVlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHRyZWUgRW5kXG4gICAgbGV0IG9mX3RyZWVfcmlnaHQgdHJlZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCB0cmVlIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIF8sIHIsIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0ZXBfZGVlcGVyX2V4biB0cmVlIGUgPVxuICAgICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBFbXB0eSwgTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGwsIE1vcmUgKHYsIGQsIHIsIGUpXG4gICAgOztcblxuICAgICgqIFtkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMl0gZHJvcHMgdGhlIGxhcmdlc3QgcGh5c2ljYWxseS1lcXVhbFxuICAgICAgIHByZWZpeCBvZiB0cmVlMSBhbmQgdHJlZTIgdGhhdCB0aGV5IHNoYXJlLCBhbmQgdGhlbiBwcmVwZW5kcyB0aGUgcmVtYWluaW5nIGRhdGFcbiAgICAgICBpbnRvIGFjYzEgYW5kIGFjYzIsIHJlc3BlY3RpdmVseS5cbiAgICAgICBUaGlzIGNhbiBiZSBhc3ltcHRvdGljYWxseSBmYXN0ZXIgdGhhbiBbY29uc10gZXZlbiBpZiBpdCBza2lwcyBhIHNtYWxsIHByb3BvcnRpb25cbiAgICAgICBvZiB0aGUgdHJlZSBiZWNhdXNlIFtjb25zXSBpcyBhbHdheXMgTyhsb2cobikpIGluIHRoZSBzaXplIG9mIHRoZSB0cmVlLCB3aGlsZVxuICAgICAgIHRoaXMgZnVuY3Rpb24gaXMgTyhsb2cobi9tKSkgd2hlcmUgW21dIGlzIHRoZSBzaXplIG9mIHRoZSBwYXJ0IG9mIHRoZSB0cmVlIHRoYXRcbiAgICAgICBpcyBza2lwcGVkLiAqKVxuICAgIGxldCByZWMgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgdGhlbiBhY2MxLCBhY2MyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGgyID0gaGVpZ2h0IHRyZWUyIGluXG4gICAgICAgIGxldCBoMSA9IGhlaWdodCB0cmVlMSBpblxuICAgICAgICBpZiBoMiA9IGgxXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB0cmVlMSwgYWNjMSA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMSBhY2MxIGluXG4gICAgICAgICAgbGV0IHRyZWUyLCBhY2MyID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUyIGFjYzIgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMilcbiAgICAgICAgZWxzZSBpZiBoMiA+IGgxXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB0cmVlMiwgYWNjMiA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMiBhY2MyIGluXG4gICAgICAgICAgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB0cmVlMSwgYWNjMSA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMSBhY2MxIGluXG4gICAgICAgICAgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIpKVxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBjID0gY29tcGFyZV9kYXRhIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlMSwgZTIgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHIxIGUxIHIyIGUyIGluXG4gICAgICAgICAgICAgIGxvb3AgZTEgZTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGRhdGFfZXF1YWwgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiB0cnVlXG4gICAgICAgIHwgRW5kLCBfIHwgXywgRW5kIC0+IGZhbHNlXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBjb21wYXJlX2tleSB2MSB2MiA9IDBcbiAgICAgICAgICAmJiBkYXRhX2VxdWFsIGQxIGQyXG4gICAgICAgICAgJiZcbiAgICAgICAgICBsZXQgZTEsIGUyID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCByMSBlMSByMiBlMiBpblxuICAgICAgICAgIGxvb3AgZTEgZTJcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCByZWMgZm9sZCB+aW5pdCB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiBpbml0XG4gICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgbGV0IG5leHQgPSBmIH5rZXkgfmRhdGEgaW5pdCBpblxuICAgICAgICBmb2xkIChjb25zIHRyZWUgZW51bSkgfmluaXQ6bmV4dCB+ZlxuICAgIDs7XG5cbiAgICBsZXQgZm9sZDIgY29tcGFyZV9rZXkgdDEgdDIgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyIGN1cnIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IGN1cnJcbiAgICAgICAgfCBFbmQsIF8gLT5cbiAgICAgICAgICBmb2xkIHQyIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBSaWdodCBkYXRhKSBhY2MpIFtAbm9udGFpbFxuICAgICAgICAgIF1cbiAgICAgICAgfCBfLCBFbmQgLT5cbiAgICAgICAgICBmb2xkIHQxIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBMZWZ0IGRhdGEpIGFjYykgW0Bub250YWlsXG4gICAgICAgICAgXVxuICAgICAgICB8IE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSwgTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgQm90aCAodjEsIHYyKSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgTGVmdCB2MSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIgbmV4dClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsyIH5kYXRhOihgUmlnaHQgdjIpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBpbml0IFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrZXksIGBSaWdodCBkYXRhOyBzdGF0ZSA9IEVuZCwgY29ucyB0cmVlIGVudW0gfVxuICAgICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGtleSwgYExlZnQgZGF0YTsgc3RhdGUgPSBjb25zIHRyZWUgZW51bSwgRW5kIH1cbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgZW51bTEgdHJlZTIgZW51bTIgaW5cbiAgICAgICAgICAgIGlmIGRhdGFfZXF1YWwgdjEgdjJcbiAgICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Ta2lwIHsgc3RhdGUgPSBuZXh0X3N0YXRlIH1cbiAgICAgICAgICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazEsIGBVbmVxdWFsICh2MSwgdjIpOyBzdGF0ZSA9IG5leHRfc3RhdGUgfSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGsxLCBgTGVmdCB2MTsgc3RhdGUgPSBjb25zIHRyZWUxIGVudW0xLCByaWdodCB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazIsIGBSaWdodCB2Mjsgc3RhdGUgPSBsZWZ0LCBjb25zIHRyZWUyIGVudW0yIH1cbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDooZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kKSB+ZjpzdGVwXG4gICAgOztcblxuICAgIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsZWZ0IHJpZ2h0IGFjYyA9XG4gICAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBFbmQsIGVudW0gLT5cbiAgICAgICAgICBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIGFjYyBrZXkgZGF0YSkgW0Bub250YWlsXVxuICAgICAgICB8IGVudW0sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGlmIGRhdGFfZXF1YWwgdjEgdjIgdGhlbiBhY2MgZWxzZSBmIGFjYyAoazEsIGBVbmVxdWFsICh2MSwgdjIpKSBpblxuICAgICAgICAgICAgbGV0IGVudW0xLCBlbnVtMiA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgZW51bTEgdHJlZTIgZW51bTIgaW5cbiAgICAgICAgICAgIGxvb3AgZW51bTEgZW51bTIgYWNjKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrMSB2MSBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgcmlnaHQgYWNjKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgazIgdjIgaW5cbiAgICAgICAgICAgIGxvb3AgbGVmdCAoY29ucyB0cmVlMiBlbnVtMikgYWNjKVxuICAgICAgaW5cbiAgICAgIGxldCBsZWZ0LCByaWdodCA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdDEgRW5kIHQyIEVuZCBpblxuICAgICAgbG9vcCBsZWZ0IHJpZ2h0IGluaXQgW0Bub250YWlsXVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+XG4gICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGssIHY7IHN0YXRlID0gRW51bS5jb25zIHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlIHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gaywgdjsgc3RhdGUgPSBFbnVtLmNvbnNfcmlnaHQgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWVfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmdfa2V5KVxuICAgICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgKGtleSwgZGF0YSkgLT4gc2V0JyB0IGtleSBkYXRhIH5jb21wYXJlX2tleVxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgbGV0IGUxLCBlMiA9IEVudW0uZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgRW51bS5jb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSBlMSBlMlxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIGxldCBlMSwgZTIgPSBFbnVtLmRyb3BfcGh5c19lcXVhbF9wcmVmaXggdDEgRW5kIHQyIEVuZCBpblxuICAgIEVudW0uZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIGUxIGUyXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgRW51bS5mb2xkMlxuICAgICAgY29tcGFyZV9rZXlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDEpXG4gICAgICAoRW51bS5vZl90cmVlIHQyKVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAoKSAtPiBmIH5rZXkgfmRhdGEpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyIGNvbXBhcmVfa2V5IChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpIH5mIH5pbml0XG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgKCogW0VudW0uZm9sZF9kaWZmc10gaXMgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGJ1dCBpcyBjb25zaWRlcmFibHlcbiAgICAgICBzbG93ZXIsIGFzIHdlIGhhdmUgdG8gYWxsb2NhdGUgcXVpdGUgYSBsb3Qgb2Ygc3RhdGUgdG8gdHJhY2sgZW51bWVyYXRpb24gb2YgYSB0cmVlLlxuICAgICAgIEF2b2lkIGlmIHdlIGNhbi5cbiAgICAqKVxuICAgIGxldCBzbG93IHggeSB+aW5pdCA9IEVudW0uZm9sZF9zeW1tZXRyaWNfZGlmZiB4IHkgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5mIH5pbml0IGluXG4gICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgIGxldCBkZWx0YSBhY2MgayB2IHYnID0gaWYgZGF0YV9lcXVhbCB2IHYnIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGssIGBVbmVxdWFsICh2LCB2JykpIGluXG4gICAgKCogSWYgdHdvIHRyZWVzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGF0IHRoZSByb290IChhbmQgdGhlIHNhbWUga2V5LCBpZiB0aGV5J3JlXG4gICAgICAgW05vZGVdcykgd2UgY2FuIHRyaXZpYWxseSBkaWZmIGVhY2ggc3VicGFydCBpbiBvYnZpb3VzIHdheXMuICopXG4gICAgbGV0IHJlYyBsb29wIHQgdCcgYWNjID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgdCB0J1xuICAgICAgdGhlbiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0LCB0JyB3aXRoXG4gICAgICAgIHwgRW1wdHksIG5ld192YWxzIC0+XG4gICAgICAgICAgZm9sZCBuZXdfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgb2xkX3ZhbHMsIEVtcHR5IC0+XG4gICAgICAgICAgZm9sZCBvbGRfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgTGVhZiAoaywgdiksIExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgayBrJyB3aXRoXG4gICAgICAgICAgIHwgeCB3aGVuIHggPSAwIC0+IGRlbHRhIGFjYyBrIHYgdidcbiAgICAgICAgICAgfCB4IHdoZW4geCA8IDAgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrIHYgaW5cbiAgICAgICAgICAgICBhZGQgYWNjIGsnIHYnXG4gICAgICAgICAgIHwgXyAoKiB3aGVuIHggPiAwICopIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgaycgdicgaW5cbiAgICAgICAgICAgICByZW1vdmUgYWNjIGsgdilcbiAgICAgICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSwgTm9kZSAobCcsIGsnLCB2JywgcicsIF8pIHdoZW4gY29tcGFyZV9rZXkgayBrJyA9IDAgLT5cbiAgICAgICAgICBsZXQgYWNjID0gbG9vcCBsIGwnIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBkZWx0YSBhY2MgayB2IHYnIGluXG4gICAgICAgICAgbG9vcCByIHInIGFjY1xuICAgICAgICAoKiBPdXIgcm9vdHMgYXJlbid0IHRoZSBzYW1lIGtleS4gRmFsbGJhY2sgdG8gdGhlIHNsb3cgbW9kZS4gVHJlZXMgd2l0aCBzbWFsbFxuICAgICAgICAgICBkaWZmcyB3aWxsIG9ubHkgZG8gdGhpcyBvbiB2ZXJ5IHNtYWxsIHBhcnRzIG9mIHRoZSB0cmVlIChob3BlZnVsbHkgLSBpZiB0aGVcbiAgICAgICAgICAgb3ZlcmFsbCByb290IGlzIHJlYmFsYW5jZWQsIHdlJ2xsIGVhdCB0aGUgd2hvbGUgY29zdCwgdW5mb3J0dW5hdGVseS4pICopXG4gICAgICAgIHwgTm9kZSBfLCBOb2RlIF8gfCBOb2RlIF8sIExlYWYgXyB8IExlYWYgXywgTm9kZSBfIC0+IHNsb3cgdCB0JyB+aW5pdDphY2MpXG4gICAgaW5cbiAgICBsb29wIHQxIHQyIGluaXQgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZWMgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChsLCBfLCBfLCByLCBfKSAtPiBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHN0YXRlIC0+IGhhc2hfZm9sZF9kYXRhIChoYXNoX2ZvbGRfa2V5IHN0YXRlIGtleSkgZGF0YSlcbiAgOztcblxuICBsZXQga2V5cyB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6XyBsaXN0IC0+IGtleSA6OiBsaXN0KSB0IH5pbml0OltdXG4gIGxldCBkYXRhIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB0IH5pbml0OltdXG5cbiAgbW9kdWxlIHR5cGUgRm9sZGFibGUgPSBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcbiAgZW5kXG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSBvZl9mb2xkYWJsZScgfmZvbGQgZm9sZGFibGUgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAoZm9sZCBbQGlubGluZWQgaGludF0pXG4gICAgICBmb2xkYWJsZVxuICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgfmY6KGZ1biB7IHRyZWUgPSBhY2N1bTsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IHByZXZfZGF0YSA9XG4gICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5pdFxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IHByZXZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRhdGEgPSBmIHByZXZfZGF0YSBkYXRhIGluXG4gICAgICAgIChzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBtb2R1bGUgT2ZfZm9sZGFibGUgKE0gOiBGb2xkYWJsZSkgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfZm9sZGFibGVfZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgb2ZfZm9sZGFibGUnIH5mb2xkOk0uZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX3JlZHVjZSBmb2xkYWJsZSB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkXG4gICAgICAgIGZvbGRhYmxlXG4gICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSBhY2N1bTsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICBsZXQgbmV3X2RhdGEgPVxuICAgICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICAgICAgICB8IFNvbWUgcHJldiAtPiBmIHByZXYgZGF0YVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGE6bmV3X2RhdGEgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXG4gICAgICBdXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgIE0uZm9sZFxuICAgICAgICAgICAgZm9sZGFibGVcbiAgICAgICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgICAgIH5mOihmdW4geyB0cmVlID0gdDsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBsZW5ndGgnIH0gYXMgYWNjKSA9XG4gICAgICAgICAgICAgICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBpZiBsZW5ndGggPSBsZW5ndGgnXG4gICAgICAgICAgICAgIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSlcbiAgICAgICAgICAgICAgZWxzZSBnbG9iYWxpemUgYWNjIFtAbm9udGFpbF0pXG4gICAgICAgIGluXG4gICAgICAgIGBPayBtYXApXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9vcl9lcnJvciBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9vcl9lcnJvcjogZHVwbGljYXRlIGtleVwiKVxuICAgICAgICAgIGtleVxuICAgICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9leG4gZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4geFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX2V4bjogZHVwbGljYXRlIGtleVwiKSBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICA7O1xuXG4gICAgKCogUmV2ZXJzZSB0aGUgaW5wdXQsIHRoZW4gZm9sZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFRoZSByZXN1bHRpbmcgbWFwIHVzZXMgdGhlIGZpcnN0XG4gICAgICAgaW5zdGFuY2Ugb2YgZWFjaCBrZXkgZnJvbSB0aGUgaW5wdXQgbGlzdC4gVGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGVsZW1lbnRzIGluIGVhY2hcbiAgICAgICBvdXRwdXQgbGlzdCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgaW5wdXQgbGlzdC4gKilcbiAgICBsZXQgb2ZfZm9sZGFibGVfbXVsdGkgZm9sZGFibGUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGxldCBhbGlzdCA9IE0uZm9sZCBmb2xkYWJsZSB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIGluXG4gICAgICBvZl9mb2xkYWJsZScgYWxpc3QgfmZvbGQ6TGlzdC5mb2xkIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgfmNvbXBhcmVfa2V5XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2FsaXN0ID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcImFsaXN0XCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgZm9sZCA9IExpc3QuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2ZfYWxpc3QgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZVxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2ZfYWxpc3RfZXhuID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZXhuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX211bHRpXG5cbiAgbW9kdWxlIE9mX3NlcXVlbmNlID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcInNlcXVlbmNlXCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgICBsZXQgZm9sZCA9IFNlcXVlbmNlLmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX3NlcXVlbmNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2V4blxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9tdWx0aVxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGxldCBtYXAgPVxuICAgICAgICBMaXN0LmZvbGRcbiAgICAgICAgICBsaXN0XG4gICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgIH5mOihmdW4geyB0cmVlID0gdDsgbGVuZ3RoIH0gZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGtleSA9IGdldF9rZXkgZGF0YSBpblxuICAgICAgICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBuZXdfbGVuZ3RoIH0gYXMgYWNjKSA9XG4gICAgICAgICAgICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBsZW5ndGggPSBuZXdfbGVuZ3RoXG4gICAgICAgICAgICB0aGVuIHIucmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpXG4gICAgICAgICAgICBlbHNlIGdsb2JhbGl6ZSBhY2MgW0Bub250YWlsXSlcbiAgICAgIGluXG4gICAgICBgT2sgbWFwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICBcIk1hcC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAga2V5XG4gICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHggLT4geFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5jcmVhdGUgXCJNYXAub2ZfbGlzdF93aXRoX2tleV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsaXN0ID0gTGlzdC5yZXYgbGlzdCBpblxuICAgIExpc3QuZm9sZCBsaXN0IH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMCkgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSBkYXRhIC0+XG4gICAgICBsZXQga2V5ID0gZ2V0X2tleSBkYXRhIGluXG4gICAgICAodXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW4gb3B0aW9uIC0+XG4gICAgICAgICBsZXQgbGlzdCA9IE9wdGlvbi52YWx1ZSBvcHRpb24gfmRlZmF1bHQ6W10gaW5cbiAgICAgICAgIGRhdGEgOjogbGlzdClcbiAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgbm90IChmIGRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIG5vdCAoZiB+a2V5IH5kYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBmIGRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPiBpZiBmIGRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbFxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fYWxpc3QgPyhrZXlfb3JkZXIgPSBgSW5jcmVhc2luZykgdCA9XG4gICAgbWF0Y2gga2V5X29yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICAgIHwgYERlY3JlYXNpbmcgLT4gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGVsdHMgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOihsZW5ndGggdDEgKyBsZW5ndGggdDIpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIyIHQxIHQyIH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGE6dmFsdWVzIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgdmFsdWVzIHdpdGhcbiAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICBVbmlmb3JtX2FycmF5LnNldCBlbHRzICFpIChrZXksIHZhbHVlKTtcbiAgICAgICAgaW5jciBpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAgIGxldCBsZW4gPSAhaSBpblxuICAgIGxldCBnZXQgaSA9IFVuaWZvcm1fYXJyYXkuZ2V0IGVsdHMgaSBpblxuICAgIGxldCB0cmVlID0gb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZjpnZXQgaW5cbiAgICAgKHdpdGhfbGVuZ3RoIHRyZWUgbGVuKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgPVxuICAgIGxldCBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGhfbGFyZ2UgdF9sYXJnZSB0X3NtYWxsIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleSA9XG4gICAgICBmb2xkXG4gICAgICAgIHRfc21hbGxcbiAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCB0X2xhcmdlIGxlbmd0aF9sYXJnZSlcbiAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhOmRhdGEnIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IC0+XG4gICAgICAgICAgKHVwZGF0ZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gZGF0YSdcbiAgICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBjYWxsIGNvbWJpbmUgfmtleSBkYXRhIGRhdGEnKVxuICAgICAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICBpblxuICAgIGxldCBjYWxsIGYgfmtleSB4IHkgPSBmIH5rZXkgeCB5IGluXG4gICAgbGV0IHN3YXAgZiB+a2V5IHggeSA9IGYgfmtleSB5IHggaW5cbiAgICBmdW4gdDEgdDIgfmxlbmd0aDEgfmxlbmd0aDIgfmNvbWJpbmUgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBsZW5ndGgyIDw9IGxlbmd0aDFcbiAgICAgIHRoZW4gbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMSB0MSB0MiB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMiB0MiB0MSB+Y2FsbDpzd2FwIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIG1vZHVsZSBDbG9zZXN0X2tleV9pbXBsID0gc3RydWN0XG4gICAgKCogW21hcmtlcl0gYW5kIFtyZXBhY2thZ2VdIGFsbG93IHVzIHRvIGNyZWF0ZSBcImxvZ2ljYWxcIiBvcHRpb25zIHdpdGhvdXQgYWN0dWFsbHlcbiAgICAgICBhbGxvY2F0aW5nIGFueSBvcHRpb25zLiBQYXNzaW5nIFtGb3VuZCBrZXkgdmFsdWVdIHRvIGEgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIHBhc3NpbmcgW1NvbWUgKGtleSwgdmFsdWUpXTsgcGFzc2luZyBbTWlzc2luZyAoKSAoKV0gaXMgZXF1aXZhbGVudCB0byBwYXNzaW5nXG4gICAgICAgW05vbmVdLiAqKVxuICAgIHR5cGUgKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlciA9XG4gICAgICB8IE1pc3NpbmcgOiAoJ2ssICd2LCB1bml0LCB1bml0KSBtYXJrZXJcbiAgICAgIHwgRm91bmQgOiAoJ2ssICd2LCAnaywgJ3YpIG1hcmtlclxuXG4gICAgbGV0IHJlcGFja2FnZVxuICAgICAgICAgICh0eXBlIGsgdiBrX29wdCB2X29wdClcbiAgICAgICAgICAobWFya2VyIDogKGssIHYsIGtfb3B0LCB2X29wdCkgbWFya2VyKVxuICAgICAgICAgIChrIDoga19vcHQpXG4gICAgICAgICAgKHYgOiB2X29wdClcbiAgICAgIDogKGsgKiB2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIG1hdGNoIG1hcmtlciB3aXRoXG4gICAgICB8IE1pc3NpbmcgLT4gTm9uZVxuICAgICAgfCBGb3VuZCAtPiBTb21lIChrLCB2KVxuICAgIDs7XG5cbiAgICAoKiBUaGUgdHlwZSBzaWduYXR1cmUgaXMgZXhwbGljaXQgaGVyZSB0byBhbGxvdyBwb2x5bW9ycGhpYyByZWN1cnNpb24uICopXG4gICAgbGV0IHJlYyBsb29wIDpcbiAgICAgICdrICd2ICdrX29wdCAndl9vcHQuXG4gICAgICAoJ2ssICd2KSB0cmVlXG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAna1xuICAgICAgLT4gY29tcGFyZV9rZXk6KCdrIC0+ICdrIC0+IGludClcbiAgICAgIC0+ICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXJcbiAgICAgIC0+ICdrX29wdFxuICAgICAgLT4gJ3Zfb3B0XG4gICAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG4gICAgICA9XG4gICAgICBmdW4gdCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byAtPiBjID49IDBcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPiBjID4gMFxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byAtPiBjIDw9IDBcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPiBjIDwgMFxuICAgICAgICAgIHRoZW4gU29tZSAoaycsIHYnKVxuICAgICAgICAgIGVsc2UgcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBOb2RlIChsLCBrJywgdicsIHIsIF8pIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFRoaXMgaXMgYSBiYXNlIGNhc2UgKG5vIHJlY3Vyc2l2ZSBjYWxsKS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gU29tZSAoaycsIHYnKVxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IHIgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1pbl9lbHQgclxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IGwgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1heF9lbHQgbClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFdlIGFyZSBndWFyYW50ZWVkIGhlcmUgdGhhdCBrJyA8PiBrLiAqKVxuICAgICAgICAgICAgKCogVGhpcyBpcyB0aGUgb25seSByZWN1cnNpdmUgY2FzZS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjID4gMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPCAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGsgfmNvbXBhcmVfa2V5ID0gbG9vcCB0IGRpciBrIH5jb21wYXJlX2tleSBNaXNzaW5nICgpICgpXG4gIGVuZFxuXG4gIGxldCBjbG9zZXN0X2tleSA9IENsb3Nlc3Rfa2V5X2ltcGwuY2xvc2VzdF9rZXlcblxuICBsZXQgcmVjIHJhbmsgdCBrIH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrJywgXykgLT4gaWYgY29tcGFyZV9rZXkgaycgayA9IDAgdGhlbiBTb21lIDAgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrJywgXywgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gU29tZSAobGVuZ3RoIGwpXG4gICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICB0aGVuIHJhbmsgbCBrIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBPcHRpb24ubWFwIChyYW5rIHIgayB+Y29tcGFyZV9rZXkpIH5mOihmdW4gcmFuayAtPiByYW5rICsgMSArIGxlbmd0aCBsKVxuICA7O1xuXG4gICgqIHRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW1NlcXVlbmNlXSBpbnRlcmZhY2UgYnV0IHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb25cbiAgICAgYWxsb2NhdGVzIG9ubHkgMiB3b3JkcyBhbmQgZG9lc24ndCByZXF1aXJlIHdyaXRlLWJhcnJpZXIgKilcbiAgbGV0IHJlYyBudGgnIG51bV90b19zZWFyY2ggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT5cbiAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgTm9uZSlcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICAobWF0Y2ggbnRoJyBudW1fdG9fc2VhcmNoIGwgd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gc29tZVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICAgICBudGgnIG51bV90b19zZWFyY2ggcikpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBudGgnIChyZWYgbikgdFxuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDwgMCkgW0Bub250YWlsXVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPiAwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgfmtleSB+ZGF0YSA9IG5vdCAoaXNfbGVmdCB+a2V5IH5kYXRhKSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdCBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHQgW0Bub250YWlsXVxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZF0gZmluZHMgdGhlIGtleSBpbiBbdF0gd2hpY2ggc2F0aXNmaWVzIFttYXliZV9ib3VuZF1cbiAgICAgYW5kIHRoZSByZWxldmFudCBvbmUgb2YgW2lmX2V4Y2x1c2l2ZV0gb3IgW2lmX2luY2x1c2l2ZV0sIGFzIGp1ZGdlZCBieSBbY29tcGFyZV0uICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlIH5pZl9leGNsdXNpdmUgfmlmX2luY2x1c2l2ZSA9XG4gICAgbGV0IGZpbmRfYm91bmQgdCBob3cgYm91bmQgfmNvbXBhcmUgOiBfIE1heWJlX2JvdW5kLnQgb3B0aW9uID1cbiAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggdCBob3cgYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgfCBTb21lIChib3VuZCwgXykgLT4gU29tZSAoSW5jbCBib3VuZClcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgaW5cbiAgICBtYXRjaCAobWF5YmVfYm91bmQgOiBfIE1heWJlX2JvdW5kLnQpIHdpdGhcbiAgICB8IEV4Y2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2V4Y2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgSW5jbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfaW5jbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBVbmJvdW5kZWQgLT4gU29tZSBVbmJvdW5kZWRcbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzXSBmaW5kcyB0aGUgKG5vdCBuZWNlc3NhcmlseSBkaXN0aW5jdCkga2V5cyBpbiBbdF1cbiAgICAgd2hpY2ggbW9zdCBjbG9zZWx5IGFwcHJvYWNoIChidXQgZG8gbm90IGNyb3NzKSBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdLCBhc1xuICAgICBqdWRnZWQgYnkgW2NvbXBhcmVdLiBJdCByZXR1cm5zIFtOb25lXSBpZiBubyBrZXlzIGluIFt0XSBhcmUgd2l0aGluIHRoYXQgcmFuZ2UuICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgZmluZF9sb3dlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbGV0IGZpbmRfdXBwZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBtYXRjaCBmaW5kX2xvd2VyX2JvdW5kIHQgbG93ZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGxvd2VyX2JvdW5kIC0+XG4gICAgICAobWF0Y2ggZmluZF91cHBlcl9ib3VuZCB0IHVwcGVyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgIHwgU29tZSB1cHBlcl9ib3VuZCAtPiBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpKVxuICA7O1xuXG5cbiAgdHlwZSAoJ2ssICd2KSBhY2MgPVxuICAgIHsgbXV0YWJsZSBiYWRfa2V5IDogJ2sgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG1hcF9sZW5ndGggOiAoJ2ssICd2KSB0IFdpdGhfbGVuZ3RoLnRcbiAgICB9XG5cbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhY2MgPSB7IGJhZF9rZXkgPSBOb25lOyBtYXBfbGVuZ3RoID0gd2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDAgfSBpblxuICAgIGl0ZXJpIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgbGV0IHsgdHJlZSA9IG1hcDsgbGVuZ3RoIH0gPSBhY2MubWFwX2xlbmd0aCBpblxuICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBsZW5ndGgnIH0gYXMgcGFpcikgPVxuICAgICAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIG1hcCB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBpZiBsZW5ndGggPSBsZW5ndGgnICYmIE9wdGlvbi5pc19ub25lIGFjYy5iYWRfa2V5XG4gICAgICB0aGVuIGFjYy5iYWRfa2V5IDwtIFNvbWUga2V5XG4gICAgICBlbHNlIGFjYy5tYXBfbGVuZ3RoIDwtIGdsb2JhbGl6ZSBwYWlyKTtcbiAgICBtYXRjaCBhY2MuYmFkX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IGBPayBhY2MubWFwX2xlbmd0aFxuICAgIHwgU29tZSBrZXkgLT4gYER1cGxpY2F0ZV9rZXkga2V5XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9pdGVyaV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3Qga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCBzZXhwIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCkgc2V4cCBpblxuICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIG1hdGNoIG9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgICAgTGlzdC5pdGVyMl9vayBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgazIgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIk1hcC50X29mX3NleHBfZGlyZWN0OiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICBsZXQgZiB+a2V5IH5kYXRhIGFjYyA9IFNleHAuTGlzdCBbIHNleHBfb2Zfa2V5IGtleTsgc2V4cF9vZl92YWx1ZSBkYXRhIF0gOjogYWNjIGluXG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IH5mIHQgfmluaXQ6W10pXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgfnNleHBfb2Zfa2V5ID1cbiAgICBsZXQgb2tzLCBlcnJvcnMgPSBwYXJ0aXRpb25fbWFwIHQgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICAgIGlmIGlzX2VtcHR5IGVycm9yc1xuICAgIHRoZW4gT2sgb2tzXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvcl9zIChzZXhwX29mX3Qgc2V4cF9vZl9rZXkgRXJyb3Iuc2V4cF9vZl90IGVycm9ycylcbiAgOztcblxuICBsZXQgbWFwX2tleXNcbiAgICAgICAgdDFcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3I6KHsgY29tcGFyZSA9IGNvbXBhcmVfa2V5OyBzZXhwX29mX3QgPSBzZXhwX29mX2tleSB9IDogXyBDb21wYXJhdG9yLnQpXG4gICAgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgYE9rXG4gICAgICAgIChmb2xkXG4gICAgICAgICAgIHQxXG4gICAgICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHsgdHJlZSA9IHQyOyBsZW5ndGggfSAtPlxuICAgICAgICAgICAgIGxldCBrZXkgPSBmIGtleSBpblxuICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgYWRkX2V4bl9pbnRlcm5hbCB0MiB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB8PiBnbG9iYWxpemVcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBEdXBsaWNhdGUgLT4gcmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpKSkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHJlc3VsdCAtPiByZXN1bHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiTWFwLm1hcF9rZXlzX2V4bjogZHVwbGljYXRlIGtleVwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5vdXRlcl9jb21wYXJhdG9yIH5pbm5lcl9jb21wYXJhdG9yIG91dGVyX3QgPVxuICAgIGZvbGRcbiAgICAgIG91dGVyX3RcbiAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgIH5mOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfdCBhY2MgLT5cbiAgICAgICAgZm9sZFxuICAgICAgICAgIGlubmVyX3RcbiAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIHsgdHJlZSA9IGFjYzsgbGVuZ3RoID0gYWNjX2xlbiB9IC0+XG4gICAgICAgICAgICAodXBkYXRlXG4gICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgIGlubmVyX2tleVxuICAgICAgICAgICAgICAgfmxlbmd0aDphY2NfbGVuXG4gICAgICAgICAgICAgICB+Y29tcGFyZV9rZXk6aW5uZXJfY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gd2l0aF9sZW5ndGhfZ2xvYmFsIChzaW5nbGV0b24gb3V0ZXJfa2V5IGRhdGEpIDFcbiAgICAgICAgICAgICAgICAgfCBTb21lIHsgdHJlZSA9IGVsdDsgbGVuZ3RoID0gZWx0X2xlbiB9IC0+XG4gICAgICAgICAgICAgICAgICAgKHNldFxuICAgICAgICAgICAgICAgICAgICAgIGVsdFxuICAgICAgICAgICAgICAgICAgICAgIH5rZXk6b3V0ZXJfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuZ3RoOmVsdF9sZW5cbiAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZV9rZXk6b3V0ZXJfY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKVxuICAgICAgICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkpXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEEucmV0dXJuIEVtcHR5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+IEEubWFwIChmIH5rZXk6diB+ZGF0YTpkKSB+ZjooZnVuIG5ld19kYXRhIC0+IExlYWYgKHYsIG5ld19kYXRhKSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGwnID0gQS5vZl90aHVuayAoZnVuICgpIC0+IG1hcGkgfmYgbCkgaW5cbiAgICAgICAgbGV0IGQnID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgICBsZXQgcicgPSBBLm9mX3RodW5rIChmdW4gKCkgLT4gbWFwaSB+ZiByKSBpblxuICAgICAgICBBLm1hcDMgbCcgZCcgcicgfmY6KGZ1biBsJyBkJyByJyAtPiBOb2RlIChsJywgdiwgZCcsIHInLCBoKSlcbiAgICA7O1xuXG4gICAgKCogSW4gdGhlb3J5IHRoZSBjb21wdXRhdGlvbiBvZiBsZW5ndGggb24tdGhlLWZseSBpcyBub3QgbmVjZXNzYXJ5IGhlcmUgYmVjYXVzZSBpdCBjYW5cbiAgICAgICBiZSBkb25lIGJ5IHdyYXBwaW5nIHRoZSBhcHBsaWNhdGl2ZSBbQV0gd2l0aCBsZW5ndGgtY29tcHV0aW5nIGxvZ2ljLiBIb3dldmVyLFxuICAgICAgIGludHJvZHVjaW5nIGFuIGFwcGxpY2F0aXZlIHRyYW5zZm9ybWVyIGxpa2UgdGhhdCBtYWtlcyB0aGUgbWFwIGJlbmNobWFya3MgaW5cbiAgICAgICBhc3luY19rZXJuZWwvYmVuY2gvc3JjL2JlbmNoX2RlZmVycmVkX21hcC5tbCBub3RpY2VhYmx5IHNsb3dlci4gKilcbiAgICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICBsZXQgcmVjIHRyZWVfZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IEEucmV0dXJuICh3aXRoX2xlbmd0aF9nbG9iYWwgRW1wdHkgMClcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICAgIEEubWFwIChmIH5rZXk6diB+ZGF0YTpkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgU29tZSBuZXdfZGF0YSAtPiB3aXRoX2xlbmd0aF9nbG9iYWwgKExlYWYgKHYsIG5ld19kYXRhKSkgMVxuICAgICAgICAgICAgfCBOb25lIC0+IHdpdGhfbGVuZ3RoX2dsb2JhbCBFbXB0eSAwKVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgICAgQS5tYXAzXG4gICAgICAgICAgICAoQS5vZl90aHVuayAoZnVuICgpIC0+IHRyZWVfZmlsdGVyX21hcGkgbCB+ZikpXG4gICAgICAgICAgICAoZiB+a2V5OnYgfmRhdGE6ZClcbiAgICAgICAgICAgIChBLm9mX3RodW5rIChmdW4gKCkgLT4gdHJlZV9maWx0ZXJfbWFwaSByIH5mKSlcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgeyB0cmVlID0gbCc7IGxlbmd0aCA9IGxfbGVuIH0gbmV3X2RhdGEgeyB0cmVlID0gcic7IGxlbmd0aCA9IHJfbGVuIH0gLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBuZXdfZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIG5ld19kYXRhIC0+XG4gICAgICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWwgKGpvaW4gbCcgdiBuZXdfZGF0YSByJykgKGxfbGVuICsgcl9sZW4gKyAxKVxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgd2l0aF9sZW5ndGhfZ2xvYmFsIChjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIGwnIHInKSAobF9sZW4gKyByX2xlbikpXG4gICAgICBpblxuICAgICAgdHJlZV9maWx0ZXJfbWFwaSB0IH5mXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdrLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICgnaywgJ3YpIFRyZWUwLnRcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuXG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpID1cbiAgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgICh7IHRyZWUgPSBvbGRfdHJlZTsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9IGFzIG9sZF90KVxuICAgICAgKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpXG4gID1cbiAgaWYgcGh5c19lcXVhbCBvbGRfdHJlZSB0cmVlIHRoZW4gb2xkX3QgZWxzZSB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgd2l0aF9zYW1lX2xlbmd0aCB7IHRyZWUgPSBfOyBjb21wYXJhdG9yOyBsZW5ndGggfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxubGV0IG9mX2xpa2VfdHJlZSB0IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxubGV0IG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHRyZWUgPVxuICBpZiBwaHlzX2VxdWFsIHQudHJlZSB0cmVlXG4gIHRoZW4gdFxuICBlbHNlIHsgdHJlZTsgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuOztcblxubGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4oKiBFeHBvc2luZyB0aGlzIGZ1bmN0aW9uIHdvdWxkIG1ha2UgaXQgdmVyeSBlYXN5IGZvciB0aGUgaW52YXJpYW50c1xuICAgb2YgdGhpcyBtb2R1bGUgdG8gYmUgYnJva2VuLiAqKVxubGV0IG9mX3RyZWVfdW5zYWZlIH5jb21wYXJhdG9yIH5sZW5ndGggdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcblxuICBsZXQgaW52YXJpYW50cyB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpICYmIFRyZWUwLmxlbmd0aCB0LnRyZWUgPSB0Lmxlbmd0aFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5zZXQgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IHJlc3VsdCAtPiBgT2sgcmVzdWx0XG4gICAgfCBleGNlcHRpb24gRHVwbGljYXRlIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5yZW1vdmVfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGgga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQga2V5ID0gVHJlZTAuZmluZF9tdWx0aSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuY2hhbmdlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAudXBkYXRlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZF9leG4gdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0LnRyZWVcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB0IGtleSA9IFRyZWUwLmZpbmQgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IHJlbW92ZSB0IGtleSA9XG4gICAgbGlrZV9tYXliZV9ub19vcFxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZSB0LnRyZWUga2V5IH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtZW0gdCBrZXkgPSBUcmVlMC5tZW0gdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdC50cmVlIH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdC50cmVlIH5mXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiA9IFRyZWUwLml0ZXIyIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICBsZXQgbWFwIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcCB0LnRyZWUgfmYpXG4gIGxldCBtYXBpIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcGkgdC50cmVlIH5mKVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmluaXQgfmYgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxLnRyZWUgdDIudHJlZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXJfa2V5cyB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlciB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXIgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcmkgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwaSB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2UgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2xpa2VfdHJlZTIgdCAodDEsIHQyKSA9IG9mX2xpa2VfdHJlZSB0IHQxLCBvZl9saWtlX3RyZWUgdCB0MlxuXG4gIGxldCBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKHQxLCB0MikgPVxuICAgIG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHQxLCBvZl9saWtlX3RyZWVfbWF5YmVfbm9fb3AgdCB0MlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID0gb2ZfbGlrZV90cmVlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwaSB0LnRyZWUgfmYpXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBvZl9saWtlX3RyZWUyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXAgdC50cmVlIH5mKVxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gb2ZfbGlrZV90cmVlMl9tYXliZV9ub19vcCB0IChUcmVlMC5wYXJ0aXRpb25pX3RmIHQudHJlZSB+ZilcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gb2ZfbGlrZV90cmVlMl9tYXliZV9ub19vcCB0IChUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihvZl9saWtlX3RyZWUgdClcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9ycyB0LnRyZWUgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9kYXRhIHQxIHQyID0gVHJlZTAuZXF1YWwgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHQudHJlZVxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0LnRyZWVcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdC50cmVlXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDEudHJlZVxuICAgICAgdDIudHJlZVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgPVxuICAgIGxpa2UgdDEgKFRyZWUwLm1lcmdlIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIFRoaXMgaXMgb25seSBhIG5vLW9wIGluIHRoZSBjYXNlIHdoZXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgbWFwcyBpcyBlbXB0eS4gKilcbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICAoaWYgdDIubGVuZ3RoIDw9IHQxLmxlbmd0aCB0aGVuIHQxIGVsc2UgdDIpXG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MS50cmVlXG4gICAgICAgICB0Mi50cmVlXG4gICAgICAgICB+bGVuZ3RoMTp0MS5sZW5ndGhcbiAgICAgICAgIH5sZW5ndGgyOnQyLmxlbmd0aFxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdC50cmVlIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0LnRyZWUgfmZcblxuICBsZXQgc3BsaXQgdCBrID1cbiAgICBsZXQgbCwgbWF5YmUsIHIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgayB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IGJvdGhfbGVuID0gaWYgT3B0aW9uLmlzX3NvbWUgbWF5YmUgdGhlbiB0Lmxlbmd0aCAtIDEgZWxzZSB0Lmxlbmd0aCBpblxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBtYXliZSwgb2ZfdHJlZV91bnNhZmUgciB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCBsKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gb2ZfdHJlZSByIH5jb21wYXJhdG9yIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBsIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIHIpLCBtYXliZSwgcilcbiAgOztcblxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8gayA9XG4gICAgbGV0IGwsIHIgPVxuICAgICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQudHJlZSB+aW50byBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICBpblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KHQubGVuZ3RoIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDoodC5sZW5ndGggLSBsZW5ndGggciksIHIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2xlX2d0IHQgayA9IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvOmBMZWZ0IGtcbiAgbGV0IHNwbGl0X2x0X2dlIHQgayA9IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvOmBSaWdodCBrXG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGxlZnQsIG1pZCwgcmlnaHQgPVxuICAgICAgVHJlZTAuc3BsaXRfcmFuZ2UgdC50cmVlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGxldCBvdXRlcl9qb2luZWRfaGVpZ2h0ID1cbiAgICAgIGxldCBoX2wgPSBUcmVlMC5oZWlnaHQgbGVmdFxuICAgICAgYW5kIGhfciA9IFRyZWUwLmhlaWdodCByaWdodCBpblxuICAgICAgaWYgaF9sID0gaF9yIHRoZW4gaF9sICsgMSBlbHNlIG1heCBoX2wgaF9yXG4gICAgaW5cbiAgICBpZiBvdXRlcl9qb2luZWRfaGVpZ2h0IDwgVHJlZTAuaGVpZ2h0IG1pZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG1pZF9sZW5ndGggPSB0Lmxlbmd0aCAtIChUcmVlMC5sZW5ndGggbGVmdCArIFRyZWUwLmxlbmd0aCByaWdodCkgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KSB+bGVuZ3RoOm1pZF9sZW5ndGgpXG4gICAgZWxzZSBvZl90cmVlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5hcHBlbmRcbiAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSBsb3dlcl9wYXJ0KVxuICAgICAgICB+bG93ZXJfcGFydDpsb3dlcl9wYXJ0LnRyZWVcbiAgICAgICAgfnVwcGVyX3BhcnQ6dXBwZXJfcGFydC50cmVlXG4gICAgd2l0aFxuICAgIHwgYE9rIHRyZWUgLT5cbiAgICAgIGBPa1xuICAgICAgICAob2ZfdHJlZV91bnNhZmVcbiAgICAgICAgICAgdHJlZVxuICAgICAgICAgICB+Y29tcGFyYXRvcjooY29tcGFyYXRvciBsb3dlcl9wYXJ0KVxuICAgICAgICAgICB+bGVuZ3RoOihsb3dlcl9wYXJ0Lmxlbmd0aCArIHVwcGVyX3BhcnQubGVuZ3RoKSlcbiAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3JhbmdlX2luY2x1c2l2ZSB0LnRyZWUgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPVxuICAgIFRyZWUwLnJhbmdlX3RvX2FsaXN0IHQudHJlZSB+bWluIH5tYXggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBjbG9zZXN0X2tleSB0IGRpciBrZXkgPVxuICAgIFRyZWUwLmNsb3Nlc3Rfa2V5IHQudHJlZSBkaXIga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IFRyZWUwLm50aCB0LnRyZWUgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB0IGtleSA9IFRyZWUwLnJhbmsgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQudHJlZSB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCBUcmVlMC5FbXB0eSAwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyZWVfdHJhdmVyc2FscyA9IFRyZWUwLk1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSlcblxuICAgIGxldCBtYXBpIHQgfmYgPVxuICAgICAgQS5tYXAgKFRyZWVfdHJhdmVyc2Fscy5tYXBpIHQudHJlZSB+ZikgfmY6KGZ1biBuZXdfdHJlZSAtPlxuICAgICAgICB3aXRoX3NhbWVfbGVuZ3RoIHQgbmV3X3RyZWUpXG4gICAgOztcblxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIEEubWFwIChUcmVlX3RyYXZlcnNhbHMuZmlsdGVyX21hcGkgdC50cmVlIH5mKSB+ZjooZnVuIG5ld190cmVlX3dpdGhfbGVuZ3RoIC0+XG4gICAgICAgIGxpa2UgdCBuZXdfdHJlZV93aXRoX2xlbmd0aClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG4oKiBbMF0gaXMgdXNlZCBhcyB0aGUgW2xlbmd0aF0gYXJndW1lbnQgZXZlcnl3aGVyZSBpbiB0aGlzIG1vZHVsZSwgc2luY2UgdHJlZXMgZG8gbm90XG4gICBoYXZlIHRoZWlyIGxlbmd0aHMgc3RvcmVkIGF0IHRoZSByb290LCB1bmxpa2UgbWFwcy4gVGhlIHZhbHVlcyBhcmUgZGlzY2FyZGVkIGFsd2F5cy4gKilcbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGsgdiA9IFRyZWUwLnNpbmdsZXRvbiBrIHZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPSAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPSAoVHJlZTAub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcikudHJlZVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfcmVxdWlyZWRfYnlfaW50ZiB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9IChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9tdWx0aVxuICAgICAgIGxpc3RcbiAgICAgICB+Z2V0X2tleVxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCB0b190cmVlIHQgPSB0XG5cbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuXG4gIGxldCBzZXQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICAoVHJlZTAuc2V0IHQgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgIHRcbiAgICAgICB+a2V5XG4gICAgICAgfmRhdGFcbiAgICAgICB+bGVuZ3RoOjBcbiAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5zZXhwX29mX3QpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfZXhuX2ludGVybmFsXG4gICAgICAgdFxuICAgICAgIH5rZXlcbiAgICAgICB+ZGF0YVxuICAgICAgIH5sZW5ndGg6MFxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICB0cnkgYE9rIChhZGRfZXhuX2ludGVybmFsIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSkgd2l0aFxuICAgIHwgXyAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfbXVsdGkgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICAoVHJlZTAucmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9tdWx0aSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICAoVHJlZTAuY2hhbmdlIHQga2V5IH5mIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgdXBkYXRlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZF9leG4gfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0XG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLmZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgKFRyZWUwLnJlbW92ZSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLm1lbSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgaXRlcmkgdCB+ZiA9IFRyZWUwLml0ZXJpIHQgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0IH5mXG5cbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICBUcmVlMC5pdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZlxuICBsZXQgbWFwaSB0IH5mID0gVHJlZTAubWFwaSB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0IH5mIH5pbml0IH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB+Y29tcGFyYXRvciB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBUcmVlMC5maWx0ZXJfa2V5cyB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IFRyZWUwLmZpbHRlciB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJpIHQgfmYgPSBUcmVlMC5maWx0ZXJpIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXBpIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fbWFwaSB0IH5mXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fbWFwIHQgfmZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbmlfdGYgdCB+ZlxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZlxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5jb21iaW5lX2Vycm9ycyB0IH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5lcXVhbCBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0XG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHRcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdFxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxXG4gICAgICB0MlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICAoVHJlZTAubWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB+Y29tcGFyYXRvciB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogTGVuZ3RoIGNvbXB1dGF0aW9uIG1ha2VzIHRoaXMgc2lnbmlmaWNhbnRseSBzbG93ZXIgdGhhbiBbbWVyZ2Vfc2tld2VkXSBvbiBhIG1hcFxuICAgICAgIHdpdGggYSBbbGVuZ3RoXSBmaWVsZCwgYnV0IGRvZXMgcHJlc2VydmUgYW1vdW50IG9mIGFsbG9jYXRpb24uICopXG4gICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgIHQxXG4gICAgICAgdDJcbiAgICAgICB+bGVuZ3RoMToobGVuZ3RoIHQxKVxuICAgICAgIH5sZW5ndGgyOihsZW5ndGggdDIpXG4gICAgICAgfmNvbWJpbmVcbiAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdCB+ZlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBrID0gVHJlZTAuc3BsaXQgdCBrIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCBzcGxpdF9sZV9ndCB+Y29tcGFyYXRvciB0IGsgPVxuICAgIFRyZWUwLnNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeVxuICAgICAgdFxuICAgICAgfmludG86YExlZnRcbiAgICAgIGtcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBzcGxpdF9sdF9nZSB+Y29tcGFyYXRvciB0IGsgPVxuICAgIFRyZWUwLnNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeVxuICAgICAgdFxuICAgICAgfmludG86YFJpZ2h0XG4gICAgICBrXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgYXBwZW5kIH5jb21wYXJhdG9yIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBUcmVlMC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IF8sIHJldCwgXyA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH5sb3dlcl9ib3VuZFxuICAgICAgICB+dXBwZXJfYm91bmRcbiAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICByZXRcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICB0XG4gICAgICB+bWluXG4gICAgICB+bWF4XG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB+Y29tcGFyYXRvciB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IH5jb21wYXJhdG9yIHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdCBkaXIga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLnJhbmsgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpLnRyZWVcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2ggVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBFbXB0eVxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUcmVlMF90cmF2ZXJzYWxzID0gVHJlZTAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgdCB+ZiA9IFRyZWUwX3RyYXZlcnNhbHMubWFwaSB0IH5mXG5cbiAgICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICBBLm1hcFxuICAgICAgICAoVHJlZTBfdHJhdmVyc2Fscy5maWx0ZXJfbWFwaSB0IH5mKVxuICAgICAgICB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgd2l0aFxuICAgIHwgYE9rIHsgdHJlZSA9IHQ7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID0gKFRyZWUwLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mKS50cmVlXG5cbiAgKCogVGhpcyBjYWxsaW5nIGNvbnZlbnRpb24gb2YgW35jb21wYXJhdG9yIH5jb21wYXJhdG9yXSBpcyBjb25mdXNpbmcuIEl0IGlzIHJlcXVpcmVkXG4gICAgIGJlY2F1c2UgW2FjY2Vzc19vcHRpb25zXSBhbmQgW2NyZWF0ZV9vcHRpb25zXSBib3RoIGRlbWFuZCBhIFt+Y29tcGFyYXRvcl0gYXJndW1lbnQgaW5cbiAgICAgW01hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWVdLlxuXG4gICAgIE1ha2luZyBpdCBsZXNzIGNvbmZ1c2luZyB3b3VsZCByZXF1aXJlIHNvbWUgdW5uZWNlc3NhcnkgY29tcGxleGl0eSBpbiBzaWduYXR1cmVzLlxuICAgICBCZXR0ZXIgdG8ganVzdCBsaXZlIHdpdGggYW4gdW5kZXNpcmFibGUgaW50ZXJmYWNlIGluIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHByb2JhYmx5XG4gICAgIG5ldmVyIGJlIGNhbGxlZCBkaXJlY3RseS4gKilcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvciB0ID1cbiAgICAoVHJlZTAudHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgdCkudHJlZVxuICAgIHw+IG1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICd3KSB0ID0gKCdrLCAndikgVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50XG5cbiAgICBsZXQgZW1wdHkgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG5cbiAgICBsZXQgYWRkX2V4biB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IHQgd2l0aFxuICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgRXJyb3IucmFpc2VfcyAoU2V4cC5BdG9tIFwiTWFwLkJ1aWxkX2luY3JlYXNpbmcuYWRkOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgIHwgXyAtPiBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdCB+a2V5IH5kYXRhXG4gICAgOztcblxuICAgIGxldCB0b190cmVlIHQgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBrIHYgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gayB2OyBsZW5ndGggPSAxIH1cblxuICBsZXQgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gIDs7XG5cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHdpdGhfbGVuZ3RoIHRyZWUgKFRyZWUwLmxlbmd0aCB0cmVlKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCB0b190cmVlID0gdG9fdHJlZVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAgIH5mOihmdW4gdHJlZSAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+aXRlcmkgd2l0aFxuICAgIHwgYE9rIHRyZWVfbGVuZ3RoIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZV9sZW5ndGgpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSlcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAod2l0aF9sZW5ndGggKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpIGxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+ZjooZnVuIHggLT4gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgeClcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggfSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggfSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IG9mX3RyZWUwIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcGFpciAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHBhaXIpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5tYXBfa2V5c19leG4gdC50cmVlIH5mIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yIHQgPVxuICAgIGxldCBvdXRlcl9jb21wYXJhdG9yID0gdC5jb21wYXJhdG9yIGluXG4gICAgVHJlZTAudHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgKFRyZWUwLm1hcCB0LnRyZWUgfmY6dG9fdHJlZSlcbiAgICB8PiBvZl90cmVlMCB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgfD4gbWFwIH5mOihmdW4geCAtPiBvZl90cmVlMCB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yIHgpXG4gIDs7XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yID0gSy5jb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl90cmVlICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpIHRyZWUgPVxuICBvZl90cmVlIH5jb21wYXJhdG9yOk0uY29tcGFyYXRvciB0cmVlXG47O1xuXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdF9tdWx0aSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X2ZvbGQgbSBhIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9hbGlzdF9yZWR1Y2UgbSBhIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2l0ZXJpIG0gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcblxubGV0IG9mX2l0ZXJpX2V4biBtIH5pdGVyaSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgbSBzZXEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc2VxXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2UgbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9leG4gbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2VfbXVsdGkgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZm9sZCBtIHMgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+aW5pdCB+ZlxuOztcblxubGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBtIHMgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5mXG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleSBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgbWFwX2tleXMgbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5sZXQgbWFwX2tleXNfZXhuIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCB0cmFuc3Bvc2Vfa2V5cyBtIHQgPSBVc2luZ19jb21wYXJhdG9yLnRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIE0gKEsgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgayBjbXApXG4gICAgICAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHZfb2Zfc2V4cFxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpLLmNvbXBhcmF0b3IgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgaylcbiAgICAgIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaylcbiAgICAgICh2X2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVGFnZ2VkXG4gICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3RhZ1xuICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgTGlzdFxuICAgICAgICAgICAgICAoTWFueVxuICAgICAgICAgICAgICAgICAoTGlzdFxuICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAoIFRhZ2dlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2Nfa2V5X3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgZ3JhbW1hciA9IEsudF9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAsIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggVGFnZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdmFsdWVfdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGdyYW1tYXIgPSB2X2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKSkpXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIGNvbXBhcmVfdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfdiB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gaykgaGFzaF9mb2xkX3Ygc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEsuaGFzaF9mb2xkX3QgaGFzaF9mb2xkX3Ygc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhIH5pbml0IH5mXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGEgfmZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3IgcyB+ZlxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsIH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsIH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gVXNpbmdfY29tcGFyYXRvci50cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvciB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydDBcblxudHlwZSAnYSB0ID0gJ2EgU3RkbGliLlF1ZXVlLnRcblxubGV0IGNyZWF0ZSA9IFN0ZGxpYi5RdWV1ZS5jcmVhdGVcbmxldCBjbGVhciA9IFN0ZGxpYi5RdWV1ZS5jbGVhclxubGV0IGNvcHkgPSBTdGRsaWIuUXVldWUuY29weVxubGV0IGlzX2VtcHR5ID0gU3RkbGliLlF1ZXVlLmlzX2VtcHR5XG5sZXQgbGVuZ3RoID0gU3RkbGliLlF1ZXVlLmxlbmd0aFxubGV0IHBlZWsgPSBTdGRsaWIuUXVldWUucGVla1xubGV0IHBvcCA9IFN0ZGxpYi5RdWV1ZS5wb3BcbmxldCBwdXNoID0gU3RkbGliLlF1ZXVlLnB1c2hcbmxldCB0cmFuc2ZlciA9IFN0ZGxpYi5RdWV1ZS50cmFuc2ZlclxuXG5sZXQgaXRlciB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbWxfaXRlciA6ICgoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gJ2EgdCAtPiB1bml0ID1cbiAgICBTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuUXVldWUuaXRlciA6ICgnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXQpXG4gIGluXG4gIGNhbWxfaXRlciBmIHRcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBjYW1sX2ZvbGQgOiAoKCdiIC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiAtPiAnYSB0IC0+ICdiID1cbiAgICBTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuUXVldWUuZm9sZCA6ICgnYiAtPiAnYSAtPiAnYikgLT4gJ2IgLT4gJ2EgdCAtPiAnYilcbiAgaW5cbiAgY2FtbF9mb2xkIGYgaW5pdCB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpbmtlZF9xdWV1ZTBcblxubGV0IGVucXVldWUgdCB4ID0gTGlua2VkX3F1ZXVlMC5wdXNoIHggdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wb3AgdClcbmxldCBkZXF1ZXVlX2V4biA9IExpbmtlZF9xdWV1ZTAucG9wXG5sZXQgZGVxdWV1ZV9hbmRfaWdub3JlX2V4biAodHlwZSBlbHQpICh0IDogZWx0IHQpID0gaWdub3JlIChkZXF1ZXVlX2V4biB0IDogZWx0KVxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wZWVrIHQpXG5sZXQgcGVla19leG4gPSBMaW5rZWRfcXVldWUwLnBlZWtcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgaXRlcmkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb2xkaSA9IEMuZm9sZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbmxldCBpdGVyaSA9IEMuaXRlcmlcbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPSBMaW5rZWRfcXVldWUwLnRyYW5zZmVyIHNyYyBkc3RcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGVucXVldWUgcmVzIChmIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGVucXVldWUgcmVzIChmIGkgYSkpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlcmkgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbGlzdCA9IExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyYXkgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IGluaXQgbGVuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBlbnF1ZXVlIHQgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBsZW5ndGggdCB3aXRoXG4gIHwgMCAtPiBbfHxdXG4gIHwgbGVuIC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuIChwZWVrX2V4biB0KSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biB2IC0+XG4gICAgICBhcnIuKCFpKSA8LSB2O1xuICAgICAgaW5jciBpKTtcbiAgICBhcnJcbjs7XG5cbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChsaXN0X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCBzaW5nbGV0b24gYSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGVucXVldWUgdCBhO1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRsaWIuSW50NjRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDY0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50NjRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IGNvbXBhcmUgPSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgbGV0IG9mX3N0cmluZ19vcHQgPSBvZl9zdHJpbmdfb3B0XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gNjRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnQ2NF9wb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBTdGRsaWIuSW50NjQub2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gU3RkbGliLkludDY0Lm9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDY0IDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDE2IHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSA0OFxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMzIgeCA9XG4gICgqIFRoaXMgaXMgc3RyaWN0bHkgYmV0dGVyIHRoYW4gY29lcmNpbmcgdG8gYW4gaW50MzIgdG8gcGVyZm9ybSBieXRlc3dhcC4gQ29lcmNpbmdcbiAgICAgZnJvbSBhbiBpbnQzMiB3aWxsIGFkZCB1bm5lY2Vzc2FyeSBzaGlmdCBvcGVyYXRpb25zIHRvIHNpZ24gZXh0ZW5kIHRoZSBudW1iZXJcbiAgICAgYXBwcm9wcmlhdGVseS5cbiAgKilcbiAgU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMzJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXA0OCB4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMTZcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGluY3IgciA9IHIgOj0gYWRkICFyIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gc3ViICFyIG9uZVxuXG5leHRlcm5hbCBvZl9pbnQ2NCA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NFxubGV0IHRvX2ludDY0IHQgPSB0XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5leHRlcm5hbCB0b19pbnRfdHJ1bmMgOiAodFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiAoaW50MzJbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfdG9faW50MzJcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnRfdHJ1bmNcbiAgOiAgKGludDY0W0Bsb2NhbF9vcHRdKVxuICAtPiAobmF0aXZlaW50W0Bsb2NhbF9vcHRdKVxuICA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIG9mX2ludCA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzIgOiAoaW50MzJbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5cbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQ2NF90b19pbnRfZXhuXG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuSW50NjQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBTdGRsaWIuSW50NjQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBTdGRsaWIuSW50NjQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuSW50NjQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLkludDY0LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIFN0ZGxpYi5JbnQ2NC5wcmVkIHggPSBTdGRsaWIuSW50NjQuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBTdGRsaWIuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgaWYgU3RkbGliLkludDY0LmVxdWFsIGkgU3RkbGliLkludDY0Lm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKFN0ZGxpYi5JbnQ2NC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9IG5lZ1xuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlTHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJUx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NFwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9hZGRcIlxuICBleHRlcm5hbCAoIC0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfc3ViXCJcbiAgZXh0ZXJuYWwgKCAqICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X211bFwiXG4gIGV4dGVybmFsICggLyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9kaXZcIlxuICBleHRlcm5hbCAoIH4tICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9hbmRcIlxuICBleHRlcm5hbCAoIGxvciApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vclwiXG4gIGV4dGVybmFsICggbHhvciApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF94b3JcIlxuXG4gIGxldCBsbm90ID0gYml0X25vdFxuXG4gIGV4dGVybmFsICggbHNsIClcbiAgICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICh0W0Bsb2NhbF9vcHRdKVxuICAgID0gXCIlaW50NjRfbHNsXCJcblxuICBleHRlcm5hbCAoIGFzciApXG4gICAgOiAgKHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAodFtAbG9jYWxfb3B0XSlcbiAgICA9IFwiJWludDY0X2FzclwiXG5cbiAgZXh0ZXJuYWwgKCBsc3IgKVxuICAgIDogICh0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKHRbQGxvY2FsX29wdF0pXG4gICAgPSBcIiVpbnQ2NF9sc3JcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjRdIGFuZCBbSW50NjQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBBIDYzYml0IGludGVnZXIgaXMgYSA2NGJpdCBpbnRlZ2VyIHdpdGggaXRzIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgYW5kIGl0cyBsb3dlc3QgYml0IHNldCB0byAwLlxuICAgVGhpcyBpcyB0aGUgc2FtZSBraW5kIG9mIGVuY29kaW5nIGFzIE9DYW1sIGludCBvbiA2NGJpdCBhcmNoaXRlY3R1cmUuXG4gICBUaGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIHRoZSBsb3dlc3QgYml0IChpbW1lZGlhdGUgYml0KSBzZXQgdG8gMS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5cbm1vZHVsZSBUMCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuICAgIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDY0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubW9kdWxlIFcgOiBzaWdcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcbiAgZW5kXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICB2YWwgd3JhcF9leG4gOiBTdGRsaWIuSW50NjQudCAtPiB0XG4gIHZhbCB3cmFwX21vZHVsbyA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIHVud3JhcCA6IHQgLT4gU3RkbGliLkludDY0LnRcblxuICAoKiogUmV0dXJucyBhIG5vbi1uZWdhdGl2ZSBpbnQ2NCB0aGF0IGlzIGVxdWFsIHRvIHRoZSBpbnB1dCBpbnQ2MyBtb2R1bG8gMl42My4gKilcbiAgdmFsIHVud3JhcF91bnNpZ25lZCA6IHQgLT4gU3RkbGliLkludDY0LnRcblxuICB2YWwgaW52YXJpYW50IDogdCAtPiB1bml0XG4gIHZhbCBhZGQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ViIDogdCAtPiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBzdWNjIDogdCAtPiB0XG4gIHZhbCBwcmVkIDogdCAtPiB0XG4gIHZhbCBtdWwgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93IDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpdiA6IHQgLT4gdCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuICB2YWwgcG9wY291bnQgOiB0IC0+IGludFxuICB2YWwgYml0X25vdCA6IHQgLT4gdFxuICB2YWwgYml0X3hvciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfb3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X2FuZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzaGlmdF9sZWZ0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50NjQgOiB0IC0+IFN0ZGxpYi5JbnQ2NC50XG4gIHZhbCBvZl9pbnQ2NCA6IFN0ZGxpYi5JbnQ2NC50IC0+IHQgb3B0aW9uXG4gIHZhbCBvZl9pbnQ2NF9leG4gOiBTdGRsaWIuSW50NjQudCAtPiB0XG4gIHZhbCBvZl9pbnQ2NF90cnVuYyA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBjZWlsX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGZsb29yX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGNlaWxfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBmbG9vcl9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGlzX3BvdzIgOiB0IC0+IGJvb2xcbiAgdmFsIGNseiA6IHQgLT4gaW50XG4gIHZhbCBjdHogOiB0IC0+IGludFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgVDBcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIGxldCB3cmFwX2V4biB4ID1cbiAgICAoKiBSYWlzZXMgaWYgdGhlIGludDY0IHZhbHVlIGRvZXMgbm90IGZpdCBvbiBpbnQ2My4gKilcbiAgICBDb252LmludDY0X2ZpdF9vbl9pbnQ2M19leG4geDtcbiAgICBTdGRsaWIuSW50NjQubXVsIHggMkxcbiAgOztcblxuICBsZXQgd3JhcCB4ID1cbiAgICBpZiBDb252LmludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuIFNvbWUgKFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTCkgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHdyYXBfbW9kdWxvIHggPSBTdGRsaWIuSW50NjQubXVsIHggMkxcbiAgbGV0IHVud3JhcCB4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IHggMVxuICBsZXQgdW53cmFwX3Vuc2lnbmVkIHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDFcblxuICAoKiBUaGlzIGRvZXMgbm90IHVzZSB3cmFwIG9yIHVud3JhcCB0byBhdm9pZCBnZW5lcmF0aW5nIGV4Y2VwdGlvbnMgaW4gdGhlIGNhc2Ugb2ZcbiAgICAgb3ZlcmZsb3dzLiBUaGlzIGlzIHRvIHByZXNlcnZlIHRoZSBzZW1hbnRpY3Mgb2YgaW50IHR5cGUgb24gNjQgYml0IGFyY2hpdGVjdHVyZS4gKilcbiAgbGV0IGYyIGYgYSBiID1cbiAgICBTdGRsaWIuSW50NjQubXVsIChmIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgYSAxKSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSkpIDJMXG4gIDs7XG5cbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZl9mZmZmX2ZmZmVMXG4gIGxldCBtIHggPSBTdGRsaWIuSW50NjQubG9nYW5kIHggbWFza1xuICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKG0gdCA9IHQpXG4gIGxldCBhZGQgeCB5ID0gU3RkbGliLkludDY0LmFkZCB4IHlcbiAgbGV0IHN1YiB4IHkgPSBTdGRsaWIuSW50NjQuc3ViIHggeVxuICBsZXQgbmVnIHggPSBTdGRsaWIuSW50NjQubmVnIHhcbiAgbGV0IGFicyB4ID0gU3RkbGliLkludDY0LmFicyB4XG4gIGxldCBvbmUgPSB3cmFwX2V4biAxTFxuICBsZXQgc3VjYyBhID0gYWRkIGEgb25lXG4gIGxldCBwcmVkIGEgPSBzdWIgYSBvbmVcbiAgbGV0IG1pbl92YWx1ZSA9IG0gU3RkbGliLkludDY0Lm1pbl9pbnRcbiAgbGV0IG1heF92YWx1ZSA9IG0gU3RkbGliLkludDY0Lm1heF9pbnRcbiAgbGV0IGJpdF9ub3QgeCA9IG0gKFN0ZGxpYi5JbnQ2NC5sb2dub3QgeClcbiAgbGV0IGJpdF9hbmQgPSBTdGRsaWIuSW50NjQubG9nYW5kXG4gIGxldCBiaXRfeG9yID0gU3RkbGliLkludDY0LmxvZ3hvclxuICBsZXQgYml0X29yID0gU3RkbGliLkludDY0LmxvZ29yXG4gIGxldCBzaGlmdF9sZWZ0IHggaSA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9sZWZ0IHggaVxuICBsZXQgc2hpZnRfcmlnaHQgeCBpID0gbSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IHggaSlcbiAgbGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpID0gbSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpKVxuICBsZXQgcG93ID0gZjIgSW50X21hdGguUHJpdmF0ZS5pbnQ2M19wb3dfb25faW50NjRcbiAgbGV0IG11bCBhIGIgPSBTdGRsaWIuSW50NjQubXVsIGEgKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpXG4gIGxldCBkaXYgYSBiID0gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5kaXYgYSBiKVxuICBsZXQgcmVtIGEgYiA9IFN0ZGxpYi5JbnQ2NC5yZW0gYSBiXG4gIGxldCBwb3Bjb3VudCB4ID0gUG9wY291bnQuaW50NjRfcG9wY291bnQgeFxuICBsZXQgdG9faW50NjQgdCA9IHVud3JhcCB0XG4gIGxldCBvZl9pbnQ2NCB0ID0gd3JhcCB0XG4gIGxldCBvZl9pbnQ2NF9leG4gdCA9IHdyYXBfZXhuIHRcbiAgbGV0IG9mX2ludDY0X3RydW5jIHQgPSB3cmFwX21vZHVsbyB0XG4gIGxldCB0X29mX3NleHAgeCA9IHdyYXBfZXhuIChpbnQ2NF9vZl9zZXhwIHgpXG4gIGxldCBzZXhwX29mX3QgeCA9IHNleHBfb2ZfaW50NjQgKHVud3JhcCB4KVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgaXNfcG93MiB4ID0gSW50NjQuaXNfcG93MiAodW53cmFwIHgpXG5cbiAgbGV0IGNseiB4ID1cbiAgICAoKiBXZSBydW4gSW50NjQuY2x6IGRpcmVjdGx5IG9uIHRoZSB3cmFwcGVkIGludDYzIHZhbHVlLiBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB0aGVcbiAgICAgICBiaXRzIG9mIHRoZSBpbnQ2M19lbXVsIGFyZSBsZWZ0LWFsaWduZWQgaW4gdGhlIEludDY0LiAqKVxuICAgIEludDY0LmNseiB4XG4gIDs7XG5cbiAgbGV0IGN0eiB4ID0gSW50NjQuY3R6ICh1bndyYXAgeClcbiAgbGV0IGZsb29yX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgY2VpbF9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGZsb29yX2xvZzIgeCA9IEludDY0LmZsb29yX2xvZzIgKHVud3JhcCB4KVxuICBsZXQgY2VpbF9sb2cyIHggPSBJbnQ2NC5jZWlsX2xvZzIgKHVud3JhcCB4KVxuZW5kXG5cbm9wZW4gV1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBXLnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoVy5nbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBXLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChXLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKFcuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFcuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFcuY29tcGFyZVxuICBsZXQgaW52YXJpYW50ID0gVy5pbnZhcmlhbnRcblxuICAoKiBXZSBkb24ndCBleHBlY3QgW2hhc2hdIHRvIGZvbGxvdyB0aGUgYmVoYXZpb3Igb2YgaW50IGluIDY0Yml0IGFyY2hpdGVjdHVyZSAqKVxuICBsZXQgXyA9IGhhc2hcbiAgbGV0IGhhc2ggKHggOiB0KSA9IFN0ZGxpYi5IYXNodGJsLmhhc2ggeFxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBpbnZhbGlkX3N0ciB4ID0gUHJpbnRmLmZhaWx3aXRoZiBcIkludDYzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIHggKClcblxuICAoKlxuICAgICBcInNpZ25cIiByZWZlcnMgdG8gd2hldGhlciB0aGUgbnVtYmVyIHN0YXJ0cyB3aXRoIGEgJy0nXG4gICAgIFwic2lnbmVkbmVzcyA9IGZhbHNlXCIgbWVhbnMgdGhlIHJlc3Qgb2YgdGhlIG51bWJlciBpcyBwYXJzZWQgYXMgdW5zaWduZWQgYW5kIHRoZW4gY2FzdFxuICAgICB0byBzaWduZWQgd2l0aCB3cmFwLWFyb3VuZCBtb2R1bG8gMl5pXG4gICAgIFwic2lnbmVkbmVzcyA9IHRydWVcIiBtZWFucyBubyBzdWNoIGNyYXppbmVzcyBoYXBwZW5zXG5cbiAgICAgVGhlIHRlcm1pbm9sb2d5IGFuZCB0aGUgbG9naWMgaXMgZHVlIHRvIHRoZSBjb2RlIGluIGJ5dGVydW4vaW50cy5jIGluIG9jYW1sIDQuMDNcbiAgICAgKFtwYXJzZV9zaWduX2FuZF9iYXNlXSBmdW5jdGlvbikuXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgdHJ1ZSBmb3IgcGxhaW4gZGVjaW1hbCBudW1iZXIgKGUuZy4gMTIzNSwgLTY3ODkpXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgZmFsc2UgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgLSBbMHhmZmZmXSwgWy0weGZmZmZdIChoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMGIwMTAxXSwgWy0wYjAxMDFdIChiaW5hcnkgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBvMTIzN10sIFstMG8xMjM3XSAob2N0YWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzB1OTgxMl0sIFstMHU5ODEyXSAodW5zaWduZWQgZGVjaW1hbCByZXByZXNlbnRhdGlvbiAtIGF2YWlsYWJsZSBmcm9tIE9DYW1sIDQuMDMpICopXG4gIGxldCBzaWduX2FuZF9zaWduZWRuZXNzIHggPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHBvcywgc2lnbiA9XG4gICAgICBpZiAwIDwgbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggeC5bMF0gd2l0aFxuICAgICAgICB8ICctJyAtPiAxLCBgTmVnXG4gICAgICAgIHwgJysnIC0+IDEsIGBQb3NcbiAgICAgICAgfCBfIC0+IDAsIGBQb3MpXG4gICAgICBlbHNlIDAsIGBQb3NcbiAgICBpblxuICAgIGlmIHBvcyArIDIgPCBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBjMSA9IHguW3Bvc10gaW5cbiAgICAgIGxldCBjMiA9IHguW3BvcyArIDFdIGluXG4gICAgICBtYXRjaCBjMSwgYzIgd2l0aFxuICAgICAgfCAnMCcsICcwJyAuLiAnOScgLT4gc2lnbiwgdHJ1ZVxuICAgICAgfCAnMCcsIF8gLT4gc2lnbiwgZmFsc2VcbiAgICAgIHwgXyAtPiBzaWduLCB0cnVlKVxuICAgIGVsc2Ugc2lnbiwgdHJ1ZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9IFN0ZGxpYi5JbnQ2NC50b19zdHJpbmcgKHVud3JhcCB4KVxuXG4gIGxldCBvZl9zdHJpbmdfcmF3IHN0ciA9XG4gICAgbGV0IHNpZ24sIHNpZ25lZG5lc3MgPSBzaWduX2FuZF9zaWduZWRuZXNzIHN0ciBpblxuICAgIGlmIHNpZ25lZG5lc3NcbiAgICB0aGVuIG9mX2ludDY0X2V4biAoU3RkbGliLkludDY0Lm9mX3N0cmluZyBzdHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3N0ciA9XG4gICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICB8IGBOZWcgLT4gU3RyaW5nLnN1YiBzdHIgfnBvczoxIH5sZW46KFN0cmluZy5sZW5ndGggc3RyIC0gMSlcbiAgICAgICAgfCBgUG9zIC0+IHN0clxuICAgICAgaW5cbiAgICAgIGxldCBpbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9zdHJpbmcgcG9zX3N0ciBpblxuICAgICAgKCogdW5zaWduZWQgNjMtYml0IGludCBtdXN0IHBhcnNlIGFzIGEgcG9zaXRpdmUgc2lnbmVkIDY0LWJpdCBpbnQgKilcbiAgICAgIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpbnQ2NCAwTCB0aGVuIGludmFsaWRfc3RyIHN0cjtcbiAgICAgIGxldCBpbnQ2MyA9IHdyYXBfbW9kdWxvIGludDY0IGluXG4gICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgIHwgYE5lZyAtPiBuZWcgaW50NjNcbiAgICAgIHwgYFBvcyAtPiBpbnQ2MylcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgdHJ5IG9mX3N0cmluZ19yYXcgc3RyIHdpdGhcbiAgICB8IF8gLT4gaW52YWxpZF9zdHIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ19vcHQgc3RyID1cbiAgICBtYXRjaCBvZl9zdHJpbmdfcmF3IHN0ciB3aXRoXG4gICAgfCB0IC0+IFNvbWUgdFxuICAgIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCBic3dhcDE2IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAxNiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXAzMiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMzIgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwNDggdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDQ4ICh1bndyYXAgdCkpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBudW1fYml0cyA9IDYzXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBiaXRfbm90XG5sZXQgYml0X3hvciA9IGJpdF94b3JcbmxldCBiaXRfb3IgPSBiaXRfb3JcbmxldCBiaXRfYW5kID0gYml0X2FuZFxubGV0IHBvcGNvdW50ID0gcG9wY291bnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlXG5sZXQgbWludXNfb25lID0gd3JhcF9leG4gU3RkbGliLkludDY0Lm1pbnVzX29uZVxubGV0IG9uZSA9IHdyYXBfZXhuIFN0ZGxpYi5JbnQ2NC5vbmVcbmxldCB6ZXJvID0gd3JhcF9leG4gU3RkbGliLkludDY0Lnplcm9cbmxldCBpc19wb3cyID0gaXNfcG93MlxubGV0IGZsb29yX3BvdzIgPSBmbG9vcl9wb3cyXG5sZXQgY2VpbF9wb3cyID0gY2VpbF9wb3cyXG5sZXQgZmxvb3JfbG9nMiA9IGZsb29yX2xvZzJcbmxldCBjZWlsX2xvZzIgPSBjZWlsX2xvZzJcbmxldCBjbHogPSBjbHpcbmxldCBjdHogPSBjdHpcbmxldCB0b19mbG9hdCB4ID0gU3RkbGliLkludDY0LnRvX2Zsb2F0ICh1bndyYXAgeClcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgeCA9IHdyYXBfbW9kdWxvIChTdGRsaWIuSW50NjQub2ZfZmxvYXQgeClcblxubGV0IG9mX2Zsb2F0IHQgPVxuICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgdCA+PSBmbG9hdF9sb3dlcl9ib3VuZCAmJiB0IDw9IGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdCB0KVxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2My5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IG9mX2ludDY0ID0gb2ZfaW50NjRcbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IG9mX2ludDY0X3RydW5jXG5sZXQgdG9faW50NjQgPSB0b19pbnQ2NFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcblxuKCogV2UgY2FuIHJldXNlIGNvbnZlcnNpb24gZnVuY3Rpb24gZnJvbS90byBpbnQ2NCBoZXJlLiAqKVxubGV0IG9mX2ludCB4ID0gd3JhcF9leG4gKENvbnYuaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50X2V4biB4ID0gb2ZfaW50IHhcbmxldCB0b19pbnQgeCA9IENvbnYuaW50NjRfdG9faW50ICh1bndyYXAgeClcbmxldCB0b19pbnRfZXhuIHggPSBDb252LmludDY0X3RvX2ludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnRfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX2ludDMyIHggPSB3cmFwX2V4biAoQ29udi5pbnQzMl90b19pbnQ2NCB4KVxubGV0IG9mX2ludDMyX2V4biB4ID0gb2ZfaW50MzIgeFxubGV0IHRvX2ludDMyIHggPSBDb252LmludDY0X3RvX2ludDMyICh1bndyYXAgeClcbmxldCB0b19pbnQzMl9leG4geCA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnQzMl90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfbmF0aXZlaW50IHggPSBvZl9pbnQ2NCAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfZXhuIHggPSB3cmFwX2V4biAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgeCA9IG9mX2ludDY0X3RydW5jIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IHRvX25hdGl2ZWludCB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnQgKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF9leG4geCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuYyAodW53cmFwIHgpXG5cbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKFQuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBULmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IFQuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcblxuICAgIGxldCB0b19zdHJpbmcgaSA9XG4gICAgICAoKiB0aGUgdXNlIG9mIFt1bndyYXBfdW5zaWduZWRdIGhlcmUgaXMgaW1wb3J0YW50IGZvciB0aGUgY2FzZSBvZiBbbWluX3ZhbHVlXSAqKVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlTHhcIiAodW53cmFwX3Vuc2lnbmVkIGkpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgcyA9IG9mX3N0cmluZyAoXCIweFwiIF4gcylcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjMuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID0gdG9fc3RyaW5nIHhcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjNcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDYzXSBhbmQgW0ludDYzLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgdHlwZSBlbXVsYXRlZCA9IHRcblxuICB0eXBlICgndW5kZXJseWluZ190eXBlLCAnaW50ZXJtZWRpYXRlX3R5cGUpIHQgPVxuICAgIHwgSW50IDogKGludCwgaW50KSB0XG4gICAgfCBJbnQ2NCA6IChpbnQ2NCwgZW11bGF0ZWQpIHRcbmVuZFxuXG5sZXQgcmVwciA9IFJlcHIuSW50NjRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRsaWIuSW50MzJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDMyIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50MzJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50MzIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50MzJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nX29wdCA9IG9mX3N0cmluZ19vcHRcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSAzMlxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50MzIub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIEluZml4X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgb3BlbiBQb2x5XG5cbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSB4ID49IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSB4IDw9IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSB4ID4geVxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0geCA8IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSB4IDw+IHlcbmVuZFxuXG5tb2R1bGUgQ29tcGFyZSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4X2NvbXBhcmVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBDb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX2ludDMyIHQgPSB0XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiB0ID0gdFxubGV0IHRvX2ludDMyX2V4biA9IHRvX2ludDMyXG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQzMl9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9faW50MzJcbmxldCBvZl9pbnRfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50X3RydW5jID0gQ29udi5pbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQgPSBDb252LmludDMyX3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252LmludDMyX3RvX2ludF90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252LmludDMyX3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwMzIgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfaW50MzJcIlxuXG5sZXQgYnN3YXAxNiB4ID0gU3RkbGliLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwMzIgeCkgMTZcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gU3RkbGliLkludDMyLmxvZ29yXG4gIGxldCAoIGxzciApID0gU3RkbGliLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gU3RkbGliLkludDMyLmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gU3RkbGliLkludDMyLnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgU3RkbGliLkludDMyLnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIFN0ZGxpYi5JbnQzMi5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBTdGRsaWIuSW50MzIucHJlZCB4ID0gU3RkbGliLkludDMyLnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQzMiBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBTdGRsaWIuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQzMi5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgKCogVGhlIFtpID0gMV0gY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgY2x6KDApIGlzIHVuZGVmaW5lZCAqKVxuICAgIGlmIFN0ZGxpYi5JbnQzMi5lcXVhbCBpIFN0ZGxpYi5JbnQzMi5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChTdGRsaWIuSW50MzIucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDMyIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQzMlxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJWx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVseFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzJcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChDb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQzMl0gYW5kIFtJbnQzMi5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBSZXByID0gSW50NjNfZW11bC5SZXByXG5cbigqIEluIGEgd29ybGQgd2hlcmUgdGhlIGNvbXBpbGVyIHdvdWxkIHVuZGVyc3RhbmQgW0BAaW1tZWRpYXRlNjRdIGF0dHJpYnV0ZXMgb24gdHlwZVxuICAgZGVjbGFyYXRpb25zLCB0aGlzIG1vZHVsZSBpcyBob3cgb25lIHdvdWxkIHByb2R1Y2UgYSBbdHlwZSB0XSB3aXRoIHRoaXMgYXR0cmlidXRlLiAqKVxubW9kdWxlIEltbWVkaWF0ZTY0IDogc2lnXG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICB2YWwgcmVwciA6IHQgcmVwclxuICBlbmRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgZXh0ZXJuYWwgdHJhbnNwYXJlbnRfbWFnaWMgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYltAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBsZXQgcmVwciA9XG4gICAgICAoKiBbT2JqLm1hZ2ljXSBpbnZvbHZlcyBvcGFxdWVuZXNzIHVuZGVyIEZsYW1iZGEgMiB3aGljaCB3aWxsIGluaGliaXRcbiAgICAgICAgIGF2YWlsYWJpbGl0eSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBmb3IgbGF0ZXIgaW5saW5pbmdcbiAgICAgICAgIChlLmcuIGludG8gZmxvYXQubWwpLiBBcyBzdWNoIHdlIGV4cGxpY2l0bHkgdXNlICVpZGVudGl0eSBoZXJlLiAqKVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAodHJhbnNwYXJlbnRfbWFnaWMgSW1tZWRpYXRlIDogdCByZXByKVxuICAgICAgfCBXMzIgLT4gKHRyYW5zcGFyZW50X21hZ2ljIE5vbl9pbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgOztcbiAgZW5kXG4gIFtAQGlubGluZSBhbHdheXNdXG5lbmRcblxuaW5jbHVkZSBJbW1lZGlhdGU2NC5NYWtlIChJbnQpIChJbnQ2M19lbXVsKVxuXG5tb2R1bGUgQmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIEludF9pbnRmLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50IG9wdGlvblxuICAgIHZhbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludFxuICAgIHZhbCBvZl9pbnQzMiA6IGludDMyIC0+IHRcbiAgICB2YWwgdG9faW50MzIgOiB0IC0+IEludDMyLnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludDMyX3RydW5jIDogdCAtPiBJbnQzMi50XG4gICAgdmFsIG9mX2ludDY0IDogSW50NjQudCAtPiB0IG9wdGlvblxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IEludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCBvcHRpb25cbiAgICB2YWwgdG9fbmF0aXZlaW50IDogdCAtPiBuYXRpdmVpbnQgb3B0aW9uXG4gICAgdmFsIG9mX25hdGl2ZWludF90cnVuYyA6IG5hdGl2ZWludCAtPiB0XG4gICAgdmFsIHRvX25hdGl2ZWludF90cnVuYyA6IHQgLT4gbmF0aXZlaW50XG4gICAgdmFsIG9mX2Zsb2F0X3VuY2hlY2tlZCA6IGZsb2F0IC0+IHRcbiAgICB2YWwgcmVwciA6ICh0LCB0KSBJbnQ2M19lbXVsLlJlcHIudFxuICAgIHZhbCBic3dhcDE2IDogdCAtPiB0XG4gICAgdmFsIGJzd2FwMzIgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXA0OCA6IHQgLT4gdFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBOYXRpdmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHRvX2ludCB4ID0gU29tZSB4XG4gICAgbGV0IHRvX2ludF90cnVuYyB4ID0geFxuXG4gICAgKCogW29mX2ludDMyX2V4bl0gaXMgYSBzYWZlIG9wZXJhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aCA2NC1iaXQgd29yZCBzaXplcy4gKilcbiAgICBsZXQgb2ZfaW50MzIgPSBvZl9pbnQzMl9leG5cbiAgICBsZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSB0b19uYXRpdmVpbnQgeFxuICAgIGxldCB0b19uYXRpdmVpbnQgeCA9IFNvbWUgKHRvX25hdGl2ZWludCB4KVxuICAgIGxldCByZXByID0gSW50NjNfZW11bC5SZXByLkludFxuICAgIGxldCBic3dhcDMyIHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwMzIgKEludDY0Lm9mX2ludCB0KSlcbiAgICBsZXQgYnN3YXA0OCB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDQ4IChJbnQ2NC5vZl9pbnQgdCkpXG4gIGVuZFxuXG4gIGxldCBpbXBsIDogKG1vZHVsZSBTKSA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBOYXRpdmUgOiBTKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIEludDYzX2VtdWwgOiBTKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgKHZhbCBCYWNrZW5kLmltcGwgOiBCYWNrZW5kLlMpXG5cbm1vZHVsZSBPdmVyZmxvd19leG4gPSBzdHJ1Y3RcbiAgbGV0ICggKyApIHQgdSA9XG4gICAgbGV0IHN1bSA9IHQgKyB1IGluXG4gICAgaWYgYml0X29yIChiaXRfeG9yIHQgdSkgKGJpdF94b3IgdCAoYml0X25vdCBzdW0pKSA8IHplcm9cbiAgICB0aGVuIHN1bVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJzdW1cIiwgc2V4cF9vZl90IHN1bSBdKVxuICA7O1xuXG4gIGxldCAoIC0gKSB0IHUgPVxuICAgIGxldCBkaWZmID0gdCAtIHUgaW5cbiAgICBsZXQgcG9zX2RpZmYgPSB0ID4gdSBpblxuICAgIGlmIHQgPD4gdSAmJiBCb29sLiggPD4gKSBwb3NfZGlmZiAoaXNfcG9zaXRpdmUgZGlmZilcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC0gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwiZGlmZlwiLCBzZXhwX29mX3QgZGlmZiBdKVxuICAgIGVsc2UgZGlmZlxuICA7O1xuXG4gIGxldCBuZWdhdGl2ZV9vbmUgPSBvZl9pbnQgKC0xKVxuICBsZXQgZGl2X3dvdWxkX292ZXJmbG93IHQgdSA9IHQgPSBtaW5fdmFsdWUgJiYgdSA9IG5lZ2F0aXZlX29uZVxuXG4gIGxldCAoICogKSB0IHUgPVxuICAgIGxldCBwcm9kdWN0ID0gdCAqIHUgaW5cbiAgICBpZiB1IDw+IHplcm8gJiYgKGRpdl93b3VsZF9vdmVyZmxvdyBwcm9kdWN0IHUgfHwgcHJvZHVjdCAvIHUgPD4gdClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICogKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgcHJvZHVjdCBdKVxuICAgIGVsc2UgcHJvZHVjdFxuICA7O1xuXG4gIGxldCAoIC8gKSB0IHUgPVxuICAgIGlmIGRpdl93b3VsZF9vdmVyZmxvdyB0IHVcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC8gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgKHQgLyB1KSBdKVxuICAgIGVsc2UgdCAvIHVcbiAgOztcblxuICBsZXQgYWJzIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJhYnMgb3ZlcmZsb3dcIiBlbHNlIGFicyB0XG4gIGxldCBuZWcgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcIm5lZyBvdmVyZmxvd1wiIGVsc2UgbmVnIHRcbmVuZFxuXG5sZXQgKCkgPSBhc3NlcnQgKEludC4oID0gKSBudW1fYml0cyA2MylcblxubGV0IHJhbmRvbV9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludCBzdGF0ZSAodG9faW50X2V4biBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NCBzdGF0ZSAodG9faW50NjQgYm91bmQpKVxuOztcblxubGV0IHJhbmRvbSA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21fb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9vZl9pbnQ2NFxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50X2luY2wgc3RhdGUgKHRvX2ludF9leG4gbG8pICh0b19pbnRfZXhuIGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjRfaW5jbCBzdGF0ZSAodG9faW50NjQgbG8pICh0b19pbnQ2NCBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2wgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX2luY2xfb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9pbmNsX29mX2ludDY0XG47O1xuXG5sZXQgZmxvb3JfbG9nMiB0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHQgfD4gdG9faW50X2V4biB8PiBJbnQuZmxvb3JfbG9nMlxuICB8IFczMiAtPlxuICAgIGlmIHQgPD0gemVyb1xuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSk7XG4gICAgbGV0IGZsb29yX2xvZzIgPSByZWYgKEludC4oIC0gKSBudW1fYml0cyAyKSBpblxuICAgIHdoaWxlIGVxdWFsIHplcm8gKGJpdF9hbmQgdCAoc2hpZnRfbGVmdCBvbmUgIWZsb29yX2xvZzIpKSBkb1xuICAgICAgZmxvb3JfbG9nMiA6PSBJbnQuKCAtICkgIWZsb29yX2xvZzIgMVxuICAgIGRvbmU7XG4gICAgIWZsb29yX2xvZzJcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZXByID0gUmVwclxuXG4gIGxldCByZXByID0gcmVwclxuXG4gIG1vZHVsZSBFbXVsID0gSW50NjNfZW11bFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLktleSAqKVxubW9kdWxlIEtleSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBUd28gW3RdcyB0aGF0IFtjb21wYXJlXSBlcXVhbCBtdXN0IGhhdmUgZXF1YWwgaGFzaGVzIGZvciB0aGUgaGFzaHRhYmxlXG4gICAgICAgIHRvIGJlaGF2ZSBwcm9wZXJseS4gKilcbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5NZXJnZV9pbnRvX2FjdGlvbiAqKVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSZW1vdmVcbiAgICB8IFNldF90byBvZiAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IHNpZ1xuICAoKiogezIgQWNjZXNzb3JzfSAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gIHZhbCBzZXhwX29mX2tleSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gU2V4cC50XG4gIHZhbCBjbGVhciA6IChfLCBfKSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQXR0ZW1wdGluZyB0byBtb2RpZnkgKFtzZXRdLCBbcmVtb3ZlXSwgZXRjLikgdGhlIGhhc2h0YWJsZSBkdXJpbmcgaXRlcmF0aW9uIChbZm9sZF0sXG4gICAgICBbaXRlcl0sIFtpdGVyX2tleXNdLCBbaXRlcmldKSB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi4gKilcbiAgdmFsIGZvbGRcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGtleSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIG92ZXIgYm90aCBrZXlzIGFuZCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLml0ZXJpIGggfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIHByaW50X2VuZGxpbmUgKFByaW50Zi5zcHJpbnRmIFwiJWQtJWRcIiBrZXkgZGF0YSkpOztcbiAgICAgIDEtNFxuICAgICAgNS02XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fSAqKVxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnQgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gYm9vbFxuICB2YWwgcmVtb3ZlIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIENob29zZSBhbiBhcmJpdHJhcnkga2V5L3ZhbHVlIHBhaXIgb2YgYSBoYXNoIHRhYmxlLiBSZXR1cm5zIFtOb25lXSBpZiBbdF0gaXMgZW1wdHkuXG5cbiAgICAgIFRoZSBjaG9pY2UgaXMgZGV0ZXJtaW5pc3RpYy4gQ2FsbGluZyBbY2hvb3NlXSBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSB0YWJsZVxuICAgICAgcmV0dXJucyB0aGUgc2FtZSBrZXkvdmFsdWUgcGFpciwgc28gbG9uZyBhcyB0aGUgdGFibGUgaXMgbm90IG11dGF0ZWQgaW4gYmV0d2Vlbi5cbiAgICAgIEJleW9uZCBkZXRlcm1pbmlzbSwgbm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCBob3cgdGhlIGNob2ljZSBpcyBtYWRlLiBFeHBlY3RcbiAgICAgIGJpYXMgdG93YXJkIGNlcnRhaW4gaGFzaCB2YWx1ZXMuXG5cbiAgICAgIFRoaXMgaGFzaCBiaWFzIGNhbiBsZWFkIHRvIGRlZ2VuZXJhdGUgcGVyZm9ybWFuY2UgaW4gc29tZSBjYXNlcywgc3VjaCBhcyBjbGVhcmluZ1xuICAgICAgYSBoYXNoIHRhYmxlIHVzaW5nIHJlcGVhdGVkIFtjaG9vc2VdIGFuZCBbcmVtb3ZlXS4gQXQgZWFjaCBpdGVyYXRpb24sIGZpbmRpbmcgdGhlXG4gICAgICBuZXh0IGVsZW1lbnQgbWF5IGhhdmUgdG8gc2NhbiBmYXJ0aGVyIGZyb20gaXRzIGluaXRpYWwgaGFzaCB2YWx1ZS4gKilcbiAgdmFsIGNob29zZSA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cblxuICAoKiogTGlrZSBbY2hvb3NlXS4gUmFpc2VzIGlmIFt0XSBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIENob29zZXMgYSByYW5kb20ga2V5L3ZhbHVlIHBhaXIgb2YgYSBoYXNoIHRhYmxlLiBSZXR1cm5zIFtOb25lXSBpZiBbdF0gaXMgZW1wdHkuXG5cbiAgICAgIFRoZSBjaG9pY2UgaXMgZGlzdHJpYnV0ZWQgdW5pZm9ybWx5IGFjcm9zcyBoYXNoIHZhbHVlcywgcmF0aGVyIHRoYW4gYWNyb3NzIGtleXNcbiAgICAgIHRoZW1zZWx2ZXMuIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBjbG9zZXIgdGhlIGtleXMgYXJlIHRvIGV2ZW5seSBzcGFjZWQgb3V0IGluIHRoZVxuICAgICAgdGFibGUsIHRoZSBjbG9zZXIgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHRvIGEgdW5pZm9ybSBjaG9pY2Ugb2Yga2V5cy5cblxuICAgICAgVGhpcyBmdW5jdGlvbiBtYXkgYmUgcHJlZmVyYWJsZSB0byBbY2hvb3NlXSB3aGVuIG5vbmRldGVybWluaXN0aWMgY2hvaWNlIGlzXG4gICAgICBhY2NlcHRhYmxlLCBhbmQgYmlhcyB0b3dhcmQgY2VydGFpbiBoYXNoIHZhbHVlcyBpcyB1bmRlc2lyYWJsZS4gKilcbiAgdmFsIGNob29zZV9yYW5kb21seVxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgKCoqIGRlZmF1bHQ6IFtSYW5kb20uU3RhdGUuZGVmYXVsdF0gKilcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cblxuICAoKiogTGlrZSBbY2hvb3NlX3JhbmRvbWx5XS4gUmFpc2VzIGlmIFt0XSBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZV9yYW5kb21seV9leG5cbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50ICgqKiBkZWZhdWx0OiBbUmFuZG9tLlN0YXRlLmRlZmF1bHRdICopXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIFNldHMgdGhlIGdpdmVuIFtrZXldIHRvIFtkYXRhXS4gKilcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2FkZF0gYW5kIFthZGRfZXhuXSBsZWF2ZSB0aGUgdGFibGUgdW5jaGFuZ2VkIGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgcHJlc2VudC4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IFsgYE9rIHwgYER1cGxpY2F0ZSBdXG5cbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIGNoYW5nZXMgW3RdJ3MgdmFsdWUgZm9yIFtrZXldIHRvIGJlIFtmIChmaW5kIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOigoJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOigoJ2Igb3B0aW9uIC0+ICdiKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGVfYW5kX3JldHVybiB0IGtleSB+Zl0gaXMgW3VwZGF0ZV0sIGJ1dCByZXR1cm5zIHRoZSByZXN1bHQgb2YgW2Ygb10uICopXG4gIHZhbCB1cGRhdGVfYW5kX3JldHVybiA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgKCoqIFttYXAgdCBmXSByZXR1cm5zIGEgbmV3IHRhYmxlIHdpdGggdmFsdWVzIHJlcGxhY2VkIGJ5IHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgW2ZdXG4gICAgICB0byB0aGUgY3VycmVudCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBsZXQgaCcgPSBIYXNodGJsLm1hcCBoIH5mOigoZnVuIHggLT4geCAqIDIpW0Bsb2NhbF0pIGluXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGgnOztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCAxMik7ICgxLCA4KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiAnYylbQGxvY2FsXSkgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVtAbG9jYWxdKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgdGFibGUgYnkgZmlsdGVyaW5nIHRoZSBnaXZlbiB0YWJsZSdzIHZhbHVlcyBieSBbZl06IHRoZSBrZXlzIGZvciB3aGljaFxuICAgICAgW2ZdIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgcmV0dXJucyBbU29tZV0gYXJlIGtlcHQsIGFuZCB0aG9zZSBmb3Igd2hpY2ggaXRcbiAgICAgIHJldHVybnMgW05vbmVdIGFyZSBkaXNjYXJkZWQuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLmZpbHRlcl9tYXAgaCB+ZjooKGZ1biB4IC0+IGlmIHggPiA1IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlbQGxvY2FsXSlcbiAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDYpXVxuICAgICAgdn0gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiAnYyBvcHRpb24pW0Bsb2NhbF0pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYSBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIFJldHVybnMgbmV3IHRhYmxlcyB3aXRoIGJvdW5kIHZhbHVlcyBwYXJ0aXRpb25lZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmRcbiAgICAgIHZhbHVlcy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIFJldHVybnMgYSBwYWlyIG9mIHRhYmxlcyBbKHQxLCB0MildLCB3aGVyZSBbdDFdIGNvbnRhaW5zIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlXG4gICAgICBpbml0aWFsIHRhYmxlIHdoaWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0sIGFuZCBbdDJdIGNvbnRhaW5zIHRoZSByZXN0LiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX3RmXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogW2ZpbmRfb3JfYWRkIHQgayB+ZGVmYXVsdF0gcmV0dXJucyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5IFtrXSBpZiBpdCBpcyBpbiB0aGVcbiAgICAgIHRhYmxlIFt0XSwgYW5kIG90aGVyd2lzZSBhc3NpZ25zIFtrXSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgW2RlZmF1bHQgKCldLiAqKVxuICB2YWwgZmluZF9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0OigodW5pdCAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogTGlrZSBbZmluZF9vcl9hZGRdIGJ1dCBbZGVmYXVsdF0gdGFrZXMgdGhlIGtleSBhcyBhbiBhcmd1bWVudC4gKilcbiAgdmFsIGZpbmRpX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCgnYSBrZXkgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgKCoqIFtmaW5kIHQga10gcmV0dXJucyBbU29tZV0gKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIFtrXSBpbiBbdF0sIG9yIFtOb25lXSBpZiBubyBzdWNoXG4gICAgICBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYiBvcHRpb25cblxuICAoKiogW2ZpbmRfZXhuIHQga10gcmV0dXJucyB0aGUgY3VycmVudCBiaW5kaW5nIG9mIFtrXSBpbiBbdF0sIG9yIHJhaXNlcyBbU3RkbGliLk5vdF9mb3VuZF1cbiAgICAgIG9yIFtOb3RfZm91bmRfc10gaWYgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2JcblxuICAoKiogW2ZpbmRfYW5kX2NhbGwgdCBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXVxuXG4gICAgICBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICBbbWF0Y2ggZmluZCB0IGsgd2l0aCBTb21lIHYgLT4gaWZfZm91bmQgdiB8IE5vbmUgLT4gaWZfbm90X2ZvdW5kIGtdXG5cbiAgICAgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgdGhlIG9wdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KCgnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICAoKiogSnVzdCBsaWtlIFtmaW5kX2FuZF9jYWxsXSwgYnV0IHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50IHdoaWNoIGlzIHBhc3NlZCB0byBbaWZfZm91bmRdXG4gICAgICBhbmQgW2lmX25vdF9mb3VuZF0sIHNvIHRoYXQgdGhlIGNsaWVudCBjb2RlIGNhbiBhdm9pZCBhbGxvY2F0aW5nIGNsb3N1cmVzIG9yIHVzaW5nXG4gICAgICByZWZzIHRvIHBhc3MgdGhpcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCBpbiBjb2RlXG4gICAgICB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBoZWFwIGFsbG9jYXRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KCgnYiAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZF9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgKCoqIFtmaW5kX2FuZF9yZW1vdmUgdCBrXSByZXR1cm5zIFNvbWUgKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIGsgaW4gdCBhbmQgcmVtb3ZlcyBpdCxcbiAgICAgIG9yIE5vbmUgaXMgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfYW5kX3JlbW92ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBNZXJnZXMgdHdvIGhhc2h0YWJsZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgW21lcmdlIGYgaDEgaDJdIGhhcyBhcyBrZXlzIHRoZSBzZXQgb2YgYWxsIFtrXSBpbiB0aGUgdW5pb24gb2YgdGhlXG4gICAgICBzZXRzIG9mIGtleXMgb2YgW2gxXSBhbmQgW2gyXSBmb3Igd2hpY2ggW2QoayldIGlzIG5vdCBOb25lLCB3aGVyZTpcblxuICAgICAgZChrKSA9XG4gICAgICAtIFtmIH5rZXk6ayAoYExlZnQgZDEpXVxuICAgICAgICBpZiBba10gaW4gW2gxXSBtYXBzIHRvIGQxLCBhbmQgW2gyXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBSaWdodCBkMildXG4gICAgICAgIGlmIFtrXSBpbiBbaDJdIG1hcHMgdG8gZDIsIGFuZCBbaDFdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYEJvdGggKGQxLCBkMikpXVxuICAgICAgICBvdGhlcndpc2UsIHdoZXJlIFtrXSBpbiBbaDFdIG1hcHMgdG8gW2QxXSBhbmQgW2tdIGluIFtoMl0gbWFwcyB0byBbZDJdLlxuXG4gICAgICBFYWNoIGtleSBba10gaXMgbWFwcGVkIHRvIGEgc2luZ2xlIHBpZWNlIG9mIGRhdGEgW3hdLCB3aGVyZSBbZChrKSA9IFNvbWUgeF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fSAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICdhKSB0XG4gICAgLT4gKCdrLCAnYikgdFxuICAgIC0+IGY6XG4gICAgICAgICAoKGtleTonayBrZXkgLT4gWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYiB8IGBCb3RoIG9mICdhICogJ2IgXSAtPiAnYyBvcHRpb24pXG4gICAgICAgICAgW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAnYykgdFxuXG5cbiAgKCoqIEV2ZXJ5IFtrZXldIGluIFtzcmNdIHdpbGwgYmUgcmVtb3ZlZCBvciBzZXQgaW4gW2RzdF0gYWNjb3JkaW5nIHRvIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgIG9mIFtmXS4gKilcbiAgdmFsIG1lcmdlX2ludG9cbiAgICA6ICBzcmM6KCdrLCAnYSkgdFxuICAgIC0+IGRzdDooJ2ssICdiKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uIC0+ICdiIE1lcmdlX2ludG9fYWN0aW9uLnQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBrZXlzIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBrZXlzIDogKCdhLCBfKSB0IC0+ICdhIGtleSBsaXN0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGRhdGEgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ2IpIHQgLT4gJ2IgbGlzdFxuXG4gICgqKiBbZmlsdGVyX2lucGxhY2UgdCB+Zl0gcmVtb3ZlcyBhbGwgdGhlIGVsZW1lbnRzIGZyb20gW3RdIHRoYXQgZG9uJ3Qgc2F0aXNmeSBbZl0uICopXG4gIHZhbCBmaWx0ZXJfa2V5c19pbnBsYWNlIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZmlsdGVyaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW21hcF9pbnBsYWNlIHQgfmZdIGFwcGxpZXMgW2ZdIHRvIGFsbCBlbGVtZW50cyBpbiBbdF0sIHRyYW5zZm9ybWluZyB0aGVtIGluXG4gICAgICBwbGFjZS4gKilcbiAgdmFsIG1hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiAnYilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBtYXBpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2IpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZpbHRlcl9tYXBfaW5wbGFjZV0gY29tYmluZXMgdGhlIGVmZmVjdHMgb2YgW21hcF9pbnBsYWNlXSBhbmQgW2ZpbHRlcl9pbnBsYWNlXS4gKilcbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9tYXBpX2lucGxhY2VcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZXF1YWwgZiB0MSB0Ml0gYW5kIFtzaW1pbGFyIGYgdDEgdDJdIGJvdGggcmV0dXJuIHRydWUgaWZmIFt0MV0gYW5kIFt0Ml0gaGF2ZSB0aGVcbiAgICAgIHNhbWUga2V5cyBhbmQgZm9yIGFsbCBrZXlzIFtrXSwgW2YgKGZpbmRfZXhuIHQxIGspIChmaW5kX2V4biB0MiBrKV0uICBbZXF1YWxdIGFuZFxuICAgICAgW3NpbWlsYXJdIG9ubHkgZGlmZmVyIGluIHRoZWlyIHR5cGVzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcblxuICB2YWwgc2ltaWxhciA6ICgnYjEgLT4gJ2IyIC0+IGJvb2wpIC0+ICgnYSwgJ2IxKSB0IC0+ICgnYSwgJ2IyKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgKGtleSwgZGF0YSkgcGFpcnMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIHRvX2FsaXN0IDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIGxpc3RcblxuXG4gICgqKiBbcmVtb3ZlX2lmX3plcm9dJ3MgZGVmYXVsdCBpcyBbZmFsc2VdLiAqKVxuICB2YWwgaW5jciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICB2YWwgZGVjciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNdWx0aSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICAoKiogW2FkZF9tdWx0aSB0IH5rZXkgfmRhdGFdIGlmIFtrZXldIGlzIHByZXNlbnQgaW4gdGhlIHRhYmxlIHRoZW4gY29uc1xuICAgICAgW2RhdGFdIG9uIHRoZSBsaXN0LCBvdGhlcndpc2UgYWRkIFtrZXldIHdpdGggYSBzaW5nbGUgZWxlbWVudCBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtyZW1vdmVfbXVsdGkgdCBrZXldIHVwZGF0ZXMgdGhlIHRhYmxlLCByZW1vdmluZyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBib3VuZCB0b1xuICAgICAgW2tleV0uIElmIHRoZSBsaXN0IGhhcyBvbmx5IG9uZSBlbGVtZW50IChvciBpcyBlbXB0eSkgdGhlbiB0aGUgYmluZGluZyBpc1xuICAgICAgcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgXyBsaXN0KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIFtmaW5kX211bHRpIHQga2V5XSByZXR1cm5zIHRoZSBlbXB0eSBsaXN0IGlmIFtrZXldIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0YWJsZSxcbiAgICAgIHJldHVybnMgW3RdJ3MgdmFsdWVzIGZvciBba2V5XSBvdGhlcndpc2UuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIGtleSAtPiAnYiBsaXN0XG5lbmRcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICdrZXkgS2V5LnRcbiAgLT4gJ3pcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICd6XG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlIDogKCdhIGtleSwgJ2IsIHVuaXQgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogKCdhIGtleSwgJ2IgbGlzdCwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgZ3JvdXBcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pXG4gICAgICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgICAgIC0+IGNvbWJpbmU6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiAoJ2EsICdiKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9ycyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogezIgQ3JlYXRvcnN9ICopXG5cbiAgKCoqIFRoZSBtb2R1bGUgeW91IHBhc3MgdG8gW2NyZWF0ZV0gbXVzdCBoYXZlIGEgdHlwZSB0aGF0IGlzIGhhc2hhYmxlLCBzZXhwYWJsZSwgYW5kXG4gICAgICBjb21wYXJhYmxlLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCk7O1xuICAgICAgICAtIDogKGludCwgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+OztcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDMsIFwic29tZXRoaW5nXCIpOyAoMiwgXCJ3aGF0ZXZlclwiKV1cbiAgICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogV2hlcmVhcyBbb2ZfYWxpc3RdIHdpbGwgcmVwb3J0IFtEdXBsaWNhdGVfa2V5XSBubyBtYXR0ZXIgaG93IG1hbnkgZHVwcyB0aGVyZSBhcmUgaW5cbiAgICAgIHlvdXIgbGlzdCwgW29mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc10gd2lsbCByZXBvcnQgZWFjaCBhbmQgZXZlcnkgZHVwbGljYXRlIGVudHJ5LlxuXG4gICAgICBGb3IgZXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5IDFcblxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5cyBbMTsgMl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSB7eyFNdWx0aX0gXCJtdWx0aVwifSBoYXNodGFibGUsIGkuZS4sIGEgaGFzaHRhYmxlIHdoZXJlIGVhY2gga2V5IHBvaW50cyB0byBhXG4gICAgICBsaXN0IHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgbXVsdGlwbGUgdmFsdWVzLiBTbyBpbnN0ZWFkIG9mIHNob3J0LWNpcmN1aXRpbmcgd2l0aCBhXG4gICAgICBbYER1cGxpY2F0ZV9rZXldIHZhcmlhbnQgb24gZHVwbGljYXRlcywgYXMgaW4gW29mX2FsaXN0XSwgW29mX2FsaXN0X211bHRpXSBmb2xkc1xuICAgICAgdGhvc2UgdmFsdWVzIGludG8gYSBsaXN0IGZvciB0aGUgZ2l2ZW4ga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X211bHRpIChtb2R1bGUgSW50KSBbKDEsIFwiYVwiKTsgKDEsIFwiYlwiKTsgKDIsIFwiY1wiKTsgKDIsIFwiZFwiKV07O1xuICAgICAgdmFsIGggOiAoaW50LCBzdHJpbmcgbGlzdCkgSGFzaHRibC50ID0gPGFic3RyPlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAtIDogc3RyaW5nIGxpc3QgPSBbXCJiXCI7IFwiYVwiXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QpIHRcblxuICAoKiogQXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyIGxpc3RdIHRvIGNyZWF0ZSB0aGVcbiAgICAgIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZS5cblxuICAgICAge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl1cbiAgICAgIF19XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBIYXNodGJsLmNyZWF0ZV9tYXBwZWQgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgICB+Z2V0X2tleTooKGZ1biB4IC0+IHgpW0Bsb2NhbF0pXG4gICAgICAgICAgICB+Z2V0X2RhdGE6KChmdW4geCAtPiB4ICsgMSlbQGxvY2FsXSlcbiAgICAgICAgICAgWzE7IDI7IDNdOztcbiAgICAgICAgdmFsIGggOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBpbnQpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cblxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgbWF0Y2ggaCB3aXRoXG4gICAgICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICAgICAgfCBgRHVwbGljYXRlX2tleXMgXyAtPiBmYWlsd2l0aCBcIlwiXG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgICAgLSA6IGludCA9IDJcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ3IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdCBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHRcblxuICAoKiogTGlrZSBbY3JlYXRlX21hcHBlZF0sIGFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnclxuICAgICAgbGlzdF0gdG8gY3JlYXRlIHRoZSBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUgLS1cbiAgICAgIGFuZCB0aGVuLCBsaWtlIFthZGRfbXVsdGldLCBmb2xkcyB0b2dldGhlciB2YWx1ZXMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGtleXMuIEhlcmUsXG4gICAgICB0aG91Z2gsIHRoZSBmdW5jdGlvbiB1c2VkIGZvciB0aGUgZm9sZGluZyBpcyBnaXZlbiBieSBbY29tYmluZV0gKGluc3RlYWQgb2YganVzdFxuICAgICAgYmVpbmcgYSBbY29uc10pLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5ncm91cCAobW9kdWxlIEludClcbiAgICAgICAgICAgfmdldF9rZXk6KChmdW4geCAtPiB4IC8gMilbQGxvY2FsXSlcbiAgICAgICAgICAgfmdldF9kYXRhOigoZnVuIHggLT4geClbQGxvY2FsXSlcbiAgICAgICAgICAgfmNvbWJpbmU6KChmdW4geCB5IC0+IHggKiB5KVtAbG9jYWxdKVxuICAgICAgICAgICAgWyAxOyAyOyAzOyA0XVxuICAgICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoMiwgNCk7ICgxLCA2KTsgKDAsIDEpXVxuICAgICAgIHZ9ICopXG4gIHZhbCBncm91cFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+IGNvbWJpbmU6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gc2lnXG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcblxuICB0eXBlICghJ2EsICEnYikgdFxuXG4gICgqKiBXZSBwcm92aWRlIGEgW3NleHBfb2ZfdF0gYnV0IG5vdCBhIFt0X29mX3NleHBdIGZvciB0aGlzIHR5cGUgYmVjYXVzZSBvbmUgbmVlZHMgdG8gYmVcbiAgICAgIGV4cGxpY2l0IGFib3V0IHRoZSBoYXNoIGFuZCBjb21wYXJpc29uIGZ1bmN0aW9ucyB1c2VkIHdoZW4gY3JlYXRpbmcgYSBoYXNodGFibGUuXG4gICAgICBOb3RlIHRoYXQgW0hhc2h0YmwuUG9seS50XSBkb2VzIGhhdmUgW1tAQGRlcml2aW5nIHNleHBdXSwgYW5kIHVzZXMgT0NhbWwncyBidWlsdC1pblxuICAgICAgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBhbmQgYW5kIHBvbHltb3JwaGljIGhhc2hpbmcuICopXG4gIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2IgLT4gU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHAudFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCAoKiogQGlubGluZSAqKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICgqKiBAaW5saW5lICopXG5cblxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgKCoqIEBpbmxpbmUgKilcblxuICB2YWwgaGFzaGFibGVfcyA6ICgna2V5LCBfKSB0IC0+ICdrZXkgS2V5LnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgIDogICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICB2YWwgaGFzaGFibGUgOiAnYSBIYXNoYWJsZS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnaywgJ3YpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaHRibCA9IHNpZ1xuICAoKiogQSBoYXNoIHRhYmxlIGlzIGEgbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSBpbXBsZW1lbnRpbmcgYSBtYXAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMuXG4gICAgICBJdCBzdXBwb3J0cyBjb25zdGFudC10aW1lIGxvb2t1cCBhbmQgaW4tcGxhY2UgbW9kaWZpY2F0aW9uLlxuXG4gICAgICB7MSBVc2FnZX1cblxuICAgICAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgd2UnbGwgY3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRoIHN0cmluZyBrZXlzIHVzaW5nIHRoZVxuICAgICAge3shY3JlYXRlfVtjcmVhdGVdfSBjb25zdHJ1Y3Rvciwgd2hpY2ggZXhwZWN0cyBhIG1vZHVsZSBkZWZpbmluZyB0aGUga2V5J3MgdHlwZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGggPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFN0cmluZyk7O1xuICAgICAgICB2YWwgaCA6IChzdHJpbmcsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPlxuICAgICAgXX1cblxuICAgICAgV2UgY2FuIHNldCB0aGUgdmFsdWVzIG9mIGluZGl2aWR1YWwga2V5cyB3aXRoIHt7IXNldH1bc2V0XX0uIElmIHRoZSBrZXkgYWxyZWFkeSBoYXNcbiAgICAgIGEgdmFsdWUsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo1OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImJhclwiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn1cblxuICAgICAgV2UgY2FuIGFjY2VzcyB2YWx1ZXMgYnkga2V5LCBvciBkdW1wIGFsbCBvZiB0aGUgaGFzaCB0YWJsZSdzIGRhdGE6XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmZpbmQgaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgb3B0aW9uID0gU29tZSA2XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgPSA2XG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgNik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cbiAgICAgIHt7IWNoYW5nZX1bY2hhbmdlXX0gbGV0cyB1cyBjaGFuZ2UgYSBrZXkncyB2YWx1ZSBieSBhcHBseWluZyB0aGUgZ2l2ZW4gZnVuY3Rpb246XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmNoYW5nZSBoIFwiZm9vXCIgKGZ1biB4IC0+XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gU29tZSAoeCAqIDIpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICk7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDEyKTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuXG4gICAgICBXZSBjYW4gdXNlIHt7IW1lcmdlfVttZXJnZV19IHRvIG1lcmdlIHR3byBoYXNodGFibGVzIHdpdGggZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlclxuICAgICAgaG93IHdlIGNob29zZSB2YWx1ZXMgd2hlbiBhIGtleSBpcyBwcmVzZW50IGluIHRoZSBmaXJzdCAoXCJsZWZ0XCIpIGhhc2h0YWJsZSwgdGhlXG4gICAgICBzZWNvbmQgKFwicmlnaHRcIiksIG9yIGJvdGguIEhlcmUsIHdlJ2xsIGNvbnMgdGhlIHZhbHVlcyB3aGVuIGJvdGggaGFzaHRhYmxlcyBoYXZlIGFcbiAgICAgIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9XG5cbiAgICAgIHsxIEludGVyZmFjZX0gKilcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zdWJtb2R1bGVzICgqKiBAaW5saW5lICopXG5cbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gQWNjZXNzb3JzXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzID0gQ3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgTXVsdGkgPSBNdWx0aVxuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBTX3dpdGhvdXRfc3VibW9kdWxlc1xuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxuICBtb2R1bGUgS2V5ID0gS2V5XG4gIG1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IE1lcmdlX2ludG9fYWN0aW9uXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIG1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgICB0eXBlICdhIHRcblxuICAgICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIGVuZFxuXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IGludCBIYXNodGJsLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSAoU3RyaW5nLnQsIGludCkgSGFzaHRibC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IEhhc2h0YmwuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmRcbiAgICAgIHN5bnRheCBkb2Vzbid0IChiZWNhdXNlIFt0X29mX3NleHBdIGRvZXNuJ3Qga25vdyB3aGF0IGNvbXBhcmlzb24vaGFzaCBmdW5jdGlvbiB0b1xuICAgICAgdXNlKS4gKilcbiAgbW9kdWxlIE0gKEsgOiBULlQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiovKiopXG5cbiAgKCpfIFNlZSB0aGUgSmFuZSBTdHJlZXQgU3R5bGUgR3VpZGUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFtQcml2YXRlXSBzdWJtb2R1bGVzOlxuXG4gICAgaHR0cHM6Ly9vcGVuc291cmNlLmphbmVzdHJlZXQuY29tL3N0YW5kYXJkcy8jcHJpdmF0ZS1zdWJtb2R1bGVzICopXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcblxuICAgIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiAoJ2tleSwgXykgdCAtPiAna2V5IEhhc2hhYmxlLnRcbiAgZW5kXG5lbmRcbiIsIigqIEEgZmV3IHNtYWxsIHRoaW5ncyBjb3BpZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiBCYXNlIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gdXMsIHNvIHdlXG4gICBjYW4ndCB1c2UgdGhlbS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIEl0cyBpbXBvcnRhbnQgdGhhdCBFbXB0eSBoYXZlIG5vIGFyZ3MuIEl0J3MgdGVtcHRpbmcgdG8gbWFrZSB0aGlzIHR5cGUgYSByZWNvcmRcbiAgIChlLmcuIHRvIGhvbGQgdGhlIGNvbXBhcmUgZnVuY3Rpb24pLCBidXQgYSBsb3Qgb2YgbWVtb3J5IGlzIHNhdmVkIGJ5IEVtcHR5IGJlaW5nIGFuXG4gICBpbW1lZGlhdGUsIHNpbmNlIGFsbCB1bnVzZWQgYnVja2V0cyBpbiB0aGUgaGFzaHRibCBkb24ndCB1c2UgYW55IG1lbW9yeSAoYmVzaWRlcyB0aGVcbiAgIGFycmF5IGNlbGwpICopXG50eXBlICgnaywgJ3YpIHQgPVxuICB8IEVtcHR5XG4gIHwgTm9kZSBvZlxuICAgICAgeyBtdXRhYmxlIGxlZnQgOiAoJ2ssICd2KSB0XG4gICAgICA7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgICAgOyBtdXRhYmxlIHJpZ2h0IDogKCdrLCAndikgdFxuICAgICAgfVxuICB8IExlYWYgb2ZcbiAgICAgIHsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICB9XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuOztcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodDsgcmlnaHQgPSBfIH0gLT4gaGVpZ2h0XG47O1xuXG5sZXQgaW52YXJpYW50IGNvbXBhcmUgPVxuICBsZXQgbGVnYWxfbGVmdF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgbGVmdF9rZXkga2V5IDwgMClcbiAgaW5cbiAgbGV0IGxlZ2FsX3JpZ2h0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIHJpZ2h0X2tleSBrZXkgPiAwKVxuICBpblxuICBsZXQgcmVjIGludiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSB8IExlYWYgXyAtPiAoKVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGs7IHZhbHVlID0gXzsgaGVpZ2h0ID0gaDsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGhsLCBociA9IGhlaWdodCBsZWZ0LCBoZWlnaHQgcmlnaHQgaW5cbiAgICAgIGludiBsZWZ0O1xuICAgICAgaW52IHJpZ2h0O1xuICAgICAgbGVnYWxfbGVmdF9rZXkgayBsZWZ0O1xuICAgICAgbGVnYWxfcmlnaHRfa2V5IGsgcmlnaHQ7XG4gICAgICBhc3NlcnQgKGggPSBJbnQubWF4IGhsIGhyICsgMSk7XG4gICAgICBhc3NlcnQgKGFicyAoaGwgLSBocikgPD0gMilcbiAgaW5cbiAgaW52XG47O1xuXG5sZXQgaW52YXJpYW50IHQgfmNvbXBhcmUgPSBpbnZhcmlhbnQgY29tcGFyZSB0XG5cbigqIEluIHRoZSBmb2xsb3dpbmcgY29tbWVudHMsXG4gICAndCBpcyBiYWxhbmNlZCcgbWVhbnMgdGhhdCAnaW52YXJpYW50IHQnIGRvZXMgbm90XG4gICByYWlzZSBhbiBleGNlcHRpb24uICBUaGlzIGltcGxpZXMgb2YgY291cnNlIHRoYXQgZWFjaCBub2RlJ3MgaGVpZ2h0IGZpZWxkIGlzXG4gICBjb3JyZWN0LlxuICAgJ3QgaXMgYmFsYW5jZWFibGUnIG1lYW5zIHRoYXQgaGVpZ2h0IG9mIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBvZiB0XG4gICBkaWZmZXIgYnkgYXQgbW9zdCAzLiAqKVxuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBoYXZlIGNvcnJlY3QgaGVpZ2h0c1xuICAgQHBvc3Q6IG91dHB1dCBoYXMgdGhlIGNvcnJlY3QgaGVpZ2h0ICopXG5sZXQgdXBkYXRlX2hlaWdodCA9IGZ1bmN0aW9uXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IG9sZF9oZWlnaHQ7IHJpZ2h0IH0gYXMgeCkgLT5cbiAgICBsZXQgbmV3X2hlaWdodCA9IEludC5tYXggKGhlaWdodCBsZWZ0KSAoaGVpZ2h0IHJpZ2h0KSArIDEgaW5cbiAgICBpZiBuZXdfaGVpZ2h0IDw+IG9sZF9oZWlnaHQgdGhlbiB4LmhlaWdodCA8LSBuZXdfaGVpZ2h0XG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBhcmUgYmFsYW5jZWRcbiAgIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwb3N0OiBvdXRwdXQgaXMgYmFsYW5jZWQgKGluIHBhcnRpY3VsYXIsIGhlaWdodCBpcyBjb3JyZWN0KSAqKVxubGV0IGJhbGFuY2UgdHJlZSA9XG4gIG1hdGNoIHRyZWUgd2l0aFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IHRyZWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByb290X25vZGUpIC0+XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxlZnRcbiAgICBhbmQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAoKiArIDIgaXMgY3JpdGljYWxseSBpbXBvcnRhbnQsIGxvd2VyaW5nIGl0IHRvIDEgd2lsbCBicmVhayB0aGUgTGVhZlxuICAgICAgIGFzc3VtcHRpb25zIGluIHRoZSBjb2RlIGJlbG93LCBhbmQgd2lsbCBmb3JjZSB1cyB0byBwcm9tb3RlIGxlYWYgbm9kZXMgaW5cbiAgICAgICB0aGUgYmFsYW5jZSByb3V0aW5lLiBJdCdzIGFsc28gZmFzdGVyLCBzaW5jZSBpdCB3aWxsIGJhbGFuY2UgbGVzcyBvZnRlbi5cbiAgICAgICBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIGlzIGRlbGljYXRlLiAgVGhlIHVwZGF0ZV9oZWlnaHQgY2FsbHMgbXVzdFxuICAgICAgIG9jY3VyIGluIHRoZSBjb3JyZWN0IG9yZGVyLCBzaW5jZSB1cGRhdGVfaGVpZ2h0IGFzc3VtZXMgaXRzIGNoaWxkcmVuIGhhdmVcbiAgICAgICB0aGUgY29ycmVjdCBoZWlnaHRzLiAgKilcbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICAoKiBJdCBjYW5ub3QgYmUgYSBsZWFmLCBiZWNhdXNlIGV2ZW4gaWYgcmlnaHQgaXMgZW1wdHksIGEgbGVhZlxuICAgICAgICAgaXMgb25seSBoZWlnaHQgMSAqKVxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSBsZWZ0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyBsZWZ0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCBsZWZ0X25vZGVfbGVmdCA+PSBoZWlnaHQgbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgIGxlZnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGlmIHJpZ2h0IGlzIGEgbGVhZiwgdGhlbiBsZWZ0IG11c3QgYmUgZW1wdHkuIFRoYXQgbWVhbnNcbiAgICAgICAgICAgICBoZWlnaHQgaXMgMi4gRXZlbiBpZiBociBpcyBlbXB0eSB3ZSBzdGlsbCBjYW4ndCBnZXQgaGVyZS4gKilcbiAgICAgICAgICBtYXRjaCBsZWZ0X25vZGVfcmlnaHQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBscl9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gbHJfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgbHJfbm9kZSkgLT5cbiAgICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSBscl9sZWZ0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbHJfcmlnaHQ7XG4gICAgICAgICAgICBscl9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgICBscl9ub2RlLmxlZnQgPC0gbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgICAgbGVmdF9ub2RlX3JpZ2h0KSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSByaWdodCBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSByaWdodF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgcmlnaHRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0X25vZGVfcmlnaHQgPj0gaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgIHJpZ2h0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgICAgICBtYXRjaCByaWdodF9ub2RlX2xlZnQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBybF9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gcmxfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgcmxfbm9kZSkgLT5cbiAgICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSBybF9yaWdodDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSBybF9sZWZ0O1xuICAgICAgICAgICAgcmxfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgICBybF9ub2RlLnJpZ2h0IDwtIHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgICAgcmlnaHRfbm9kZV9sZWZ0KSlcbiAgICBlbHNlIChcbiAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgIHRyZWUpXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X2xlZnQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCBsZWZ0IHRyZWUgdGhlbiAoKSBlbHNlIHIubGVmdCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAobGVmdCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9yaWdodCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHJpZ2h0IHRyZWUgdGhlbiAoKSBlbHNlIHIucmlnaHQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdCBpcyBiYWxhbmNlZC5cbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWQsIHdpdGggbmV3IG5vZGUgaW5zZXJ0ZWRcbiAgIEBwb3N0OiAhYWRkZWQgPSB0cnVlIGlmZiB0aGUgc2hhcGUgb2YgdGhlIGlucHV0IHRyZWUgY2hhbmdlZC4gICopXG5sZXQgYWRkID1cbiAgbGV0IHJlYyBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBMZWFmICh7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsnIGsgaW5cbiAgICAgICgqIFRoaXMgY29tcGFyZSBpcyByZXZlcnNlZCBvbiBwdXJwb3NlLCB3ZSBhcmUgcHJldGVuZGluZ1xuICAgICAgICAgdGhhdCB0aGUgbGVhZiB3YXMganVzdCBpbnNlcnRlZCBpbnN0ZWFkIG9mIHRoZSBvdGhlciB3YXlcbiAgICAgICAgIHJvdW5kLCB0aGF0IHdheSB3ZSBvbmx5IGFsbG9jYXRlIG9uZSBub2RlLiAqKVxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdjtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgICBpZiBjIDwgMFxuICAgICAgICB0aGVuIE5vZGUgeyBsZWZ0ID0gdDsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IEVtcHR5IH1cbiAgICAgICAgZWxzZSBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gdCB9KVxuICAgIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdilcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gc2V0X2xlZnQgdCAoYWRkIGxlZnQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdilcbiAgICAgIGVsc2Ugc2V0X3JpZ2h0IHQgKGFkZCByaWdodCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KTtcbiAgICAgIHRcbiAgaW5cbiAgZnVuIHQgfnJlcGxhY2UgfmNvbXBhcmUgfmFkZGVkIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgdCA9IGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrZXkgZGF0YSBpblxuICAgIGlmICFhZGRlZCB0aGVuIGJhbGFuY2UgdCBlbHNlIHRcbjs7XG5cbmxldCByZWMgZmlyc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBsOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IGZpcnN0IGxcbjs7XG5cbmxldCByZWMgbGFzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSByIH0gLT4gbGFzdCByXG47O1xuXG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9ub3RfZm91bmRcbiAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlIGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlXG4gICAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgIChpZiBjIDwgMCB0aGVuIGxlZnQgZWxzZSByaWdodClcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAga1xuICAgICAgICBhcmcxXG4gICAgICAgIGFyZzJcbiAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgIH5pZl9mb3VuZFxuICAgICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCBkYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCBkYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCBkYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtID1cbiAgbGV0IGlmX2ZvdW5kIF8gPSB0cnVlIGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IGZhbHNlIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCByZW1vdmUgPVxuICBsZXQgcmVjIG1pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiBfIC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gbWluX2VsdCBsZWZ0XG4gIGluXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IExlYWYgXyAtPiBFbXB0eSAoKiBUaGlzIG11c3QgYmUgdGhlIHJvb3QgKilcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPiByaWdodFxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgRW1wdHk7XG4gICAgICB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIChyZW1vdmVfbWluX2VsdCBsZWZ0KTtcbiAgICAgIHRyZWVcbiAgaW5cbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHRyZWUgPSBtaW5fZWx0IHQyIGluXG4gICAgICAobWF0Y2ggdHJlZSB3aXRoXG4gICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgICAgICAgbGV0IHQyID0gYmFsYW5jZSAocmVtb3ZlX21pbl9lbHQgdDIpIGluXG4gICAgICAgICBOb2RlXG4gICAgICAgICAgIHsgbGVmdCA9IHQxXG4gICAgICAgICAgIDsga2V5ID0ga1xuICAgICAgICAgICA7IHZhbHVlID0gdlxuICAgICAgICAgICA7IGhlaWdodCA9IEludC5tYXggKGhlaWdodCB0MSkgKGhlaWdodCB0MikgKyAxXG4gICAgICAgICAgIDsgcmlnaHQgPSB0MlxuICAgICAgICAgICB9XG4gICAgICAgfCBOb2RlIF8gYXMgbm9kZSAtPlxuICAgICAgICAgc2V0X3JpZ2h0IG5vZGUgKHJlbW92ZV9taW5fZWx0IHQyKTtcbiAgICAgICAgIHNldF9sZWZ0IG5vZGUgdDE7XG4gICAgICAgICBub2RlKVxuICBpblxuICBsZXQgcmVjIHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgRW1wdHlcbiAgICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIEVtcHR5KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICAgIHQpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldF9sZWZ0IHQgKHJlbW92ZSBsZWZ0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBzZXRfcmlnaHQgdCAocmVtb3ZlIHJpZ2h0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgaW5cbiAgZnVuIHQgfnJlbW92ZWQgfmNvbXBhcmUgayAtPiBiYWxhbmNlIChyZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgaylcbjs7XG5cbmxldCByZWMgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gaW5pdFxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YSBpbml0XG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gRW1wdHlcbiAgICAgIH0gLT4gZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IEVtcHR5XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfSB9XG4gICAgLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfVxuICAgIC0+IGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpIH5mXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKSB+ZlxuOztcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGl0ZXIgbGVmdCB+ZjtcbiAgICBmIH5rZXkgfmRhdGE7XG4gICAgaXRlciByaWdodCB+ZlxuOztcblxubGV0IHJlYyBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoeyBrZXk7IHZhbHVlIH0gYXMgdCkgLT4gdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleTsgdmFsdWU7IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgdCkgLT5cbiAgICBtYXBpX2lucGxhY2UgfmYgbGVmdDtcbiAgICB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZTtcbiAgICBtYXBpX2lucGxhY2UgfmYgcmlnaHRcbjs7XG5cbmxldCBjaG9vc2VfZXhuID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbQXZsdHJlZS5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pXG4gIHwgTGVhZiB7IGtleTsgdmFsdWU7IF8gfSB8IE5vZGUgeyBrZXk7IHZhbHVlOyBfIH0gLT4ga2V5LCB2YWx1ZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNodGJsX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5LlNcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCBoYXNoX3BhcmFtID0gSGFzaGFibGUuaGFzaF9wYXJhbVxubGV0IGhhc2ggPSBIYXNoYWJsZS5oYXNoXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxudHlwZSAoJ2ssICd2KSB0ID1cbiAgeyBtdXRhYmxlIHRhYmxlIDogKCdrLCAndikgQXZsdHJlZS50IGFycmF5XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBncm93dGhfYWxsb3dlZCA6IGJvb2xcbiAgOyBoYXNoYWJsZSA6ICdrIEhhc2hhYmxlLnRcbiAgOyBtdXRhYmxlIG11dGF0aW9uX2FsbG93ZWQgOiBib29sICgqIFNldCBkdXJpbmcgYWxsIGl0ZXJhdGlvbiBvcGVyYXRpb25zICopXG4gIH1cblxudHlwZSAnYSBrZXkgPSAnYVxuXG5sZXQgc2V4cF9vZl9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90XG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuY29tcGFyZVxuXG5sZXQgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdCA9XG4gIGlmIG5vdCB0Lm11dGF0aW9uX2FsbG93ZWQgdGhlbiBmYWlsd2l0aCBcIkhhc2h0Ymw6IG11dGF0aW9uIG5vdCBhbGxvd2VkIGR1cmluZyBpdGVyYXRpb25cIlxuOztcblxubGV0IHdpdGhvdXRfbXV0YXRpbmcgdCBmID1cbiAgaWYgdC5tdXRhdGlvbl9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICByYWlzZSBleG4pXG4gIGVsc2UgZiAoKVxuOztcblxuKCoqIEludGVybmFsbHkgdXNlIGEgbWF4aW11bSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiAyLiBSZXZlcnNlcyB0aGUgYWJvdmUgdG8gZmluZCB0aGVcbiAgICBmbG9vciBwb3dlciBvZiAyIGJlbG93IHRoZSBzeXN0ZW0gbWF4IGFycmF5IGxlbmd0aCAqKVxubGV0IG1heF90YWJsZV9sZW5ndGggPSBJbnQuZmxvb3JfcG93MiBBcnJheS5tYXhfbGVuZ3RoXG5cbigqIFRoZSBkZWZhdWx0IHNpemUgaXMgY2hvc2VuIHRvIGJlIDAgKGFzIG9wcG9zZWQgdG8gMTI4IGFzIGl0IHdhcyBiZWZvcmUpIGJlY2F1c2U6XG4gICAtIDEyOCBjYW4gY3JlYXRlIHN1YnN0YW50aWFsIG1lbW9yeSBvdmVyaGVhZCAoeDEwKSB3aGVuIGNyZWF0aW5nIG1hbnkgdGFibGVzLCBtb3N0XG4gICAgIG9mIHdoaWNoIGFyZSBub3QgYmlnIChzYXksIGlmIHlvdSBoYXZlIGEgaGFzaHRibCBvZiBoYXNodGJsKS4gQW5kIG1lbW9yeSBvdmVyaGVhZCBpc1xuICAgICBub3QgdGhhdCBlYXN5IHRvIHByb2ZpbGUuXG4gICAtIGlmIGEgaGFzaHRibCBpcyBnb2luZyB0byBncm93LCBpdCdzIG5vdCBjbGVhciB3aHkgMTI4IGlzIG1hcmtlZGx5IGJldHRlciB0aGFuIG90aGVyXG4gICAgIHNpemVzIChpZiB5b3UgZ29pbmcgdG8gc3RpY2sgMTAwMCBlbGVtZW50cywgeW91J3JlIGdvaW5nIHRvIGdyb3cgdGhlIGhhc2h0YWJsZSBvbmNlXG4gICAgIG9yIHR3aWNlIGFueXdheSlcbiAgIC0gaW4gb3RoZXIgbGFuZ3VhZ2VzIChsaWtlIHJ1c3QsIHB5dGhvbiwgYW5kIGFwcGFyZW50bHkgZ28pLCB0aGUgZGVmYXVsdCBpcyBhbHNvIGFcbiAgICAgc21hbGwgc2l6ZS4gKilcbmxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDApIH5oYXNoYWJsZSAoKSA9XG4gIGxldCBzaXplID0gSW50Lm1pbiAoSW50Lm1heCAxIHNpemUpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgbGV0IHNpemUgPSBJbnQuY2VpbF9wb3cyIHNpemUgaW5cbiAgeyB0YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOnNpemUgQXZsdHJlZS5lbXB0eVxuICA7IGxlbmd0aCA9IDBcbiAgOyBncm93dGhfYWxsb3dlZFxuICA7IGhhc2hhYmxlXG4gIDsgbXV0YXRpb25fYWxsb3dlZCA9IHRydWVcbiAgfVxuOztcblxuKCoqIFN1cHBsZW1lbnRhbCBoYXNoLiBUaGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBpdCBpcyBpbnRlbmRlZCBhcyBhIGRlZmVuc2UgYWdhaW5zdCBwb29yXG4gICAgaGFzaCBmdW5jdGlvbnMsIGZvciB3aGljaCB0aGUgcG93ZXIgb2YgMiBzaXplZCB0YWJsZSB3aWxsIGJlIGVzcGVjaWFsbHkgc2Vuc2l0aXZlLlxuICAgIFdpdGggc29tZSB0ZXN0aW5nIHdlIG1heSBjaG9vc2UgdG8gYWRkIGl0LCBidXQgdGhpcyB0YWJsZSBpcyBkZXNpZ25lZCB0byBiZSByb2J1c3QgdG9cbiAgICBjb2xsaXNpb25zLCBhbmQgaW4gbW9zdCBvZiBteSB0ZXN0aW5nIHRoaXMgZGVncmFkZXMgcGVyZm9ybWFuY2UuICopXG5sZXQgX3N1cHBsZW1lbnRhbF9oYXNoIGggPVxuICBsZXQgaCA9IGggbHhvciAoKGggbHNyIDIwKSBseG9yIChoIGxzciAxMikpIGluXG4gIGggbHhvciAoaCBsc3IgNykgbHhvciAoaCBsc3IgNClcbjs7XG5cbmxldCBzbG90IHQga2V5ID1cbiAgbGV0IGhhc2ggPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmhhc2gga2V5IGluXG4gICgqIHRoaXMgaXMgYWx3YXlzIG5vbi1uZWdhdGl2ZSBiZWNhdXNlIHdlIGRvIFtsYW5kXSB3aXRoIG5vbi1uZWdhdGl2ZSBudW1iZXIgKilcbiAgaGFzaCBsYW5kIChBcnJheS5sZW5ndGggdC50YWJsZSAtIDEpXG47O1xuXG5sZXQgYWRkX3dvcmtlciB0IH5yZXBsYWNlIH5rZXkgfmRhdGEgPVxuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWQgPSAgKHJlZiBmYWxzZSkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICAoKiBUaGUgYXZsIHRyZWUgbWlnaHQgcmVwbGFjZSB0aGUgdmFsdWUgW3JlcGxhY2U9dHJ1ZV0gb3IgZG8gbm90aGluZyBbcmVwbGFjZT1mYWxzZV1cbiAgICAgICB0byB0aGUgZW50cnksIGluIHRoYXQgY2FzZSB0aGUgdGFibGUgZGlkIG5vdCBnZXQgYmlnZ2VyLCBzbyB3ZSBzaG91bGQgbm90XG4gICAgICAgaW5jcmVtZW50IGxlbmd0aCwgd2UgcGFzcyBpbiB0aGUgYm9vbCByZWYgdC5hZGRlZCBzbyB0aGF0IGl0IGNhbiB0ZWxsIHVzIHdoZXRoZXJcbiAgICAgICBpdCBhZGRlZCBvciByZXBsYWNlZC4gV2UgZG8gaXQgdGhpcyB3YXkgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbi4gU2luY2UgdGhlIGJvb2xcbiAgICAgICBpcyBhbiBpbW1lZGlhdGUgaXQgZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUgd3JpdGUgYmFycmllci4gKilcbiAgICBBdmx0cmVlLmFkZCB+cmVwbGFjZSByb290IH5jb21wYXJlOihjb21wYXJlX2tleSB0KSB+YWRkZWQgfmtleSB+ZGF0YVxuICBpblxuICBpZiAhYWRkZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICgqIFRoaXMgbGl0dGxlIG9wdGltaXphdGlvbiBzYXZlcyBhIGNhbWxfbW9kaWZ5IHdoZW4gdGhlIHRyZWVcbiAgICAgaGFzbid0IGJlZW4gcmViYWxhbmNlZC4gKilcbiAgaWYgbm90IChwaHlzX2VxdWFsIG5ld19yb290IHJvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Q7XG4gICFhZGRlZFxuOztcblxubGV0IG1heWJlX3Jlc2l6ZV90YWJsZSB0ID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gIGxldCBzaG91bGRfZ3JvdyA9IHQubGVuZ3RoID4gbGVuIGluXG4gIGlmIHNob3VsZF9ncm93ICYmIHQuZ3Jvd3RoX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19hcnJheV9sZW5ndGggPSBJbnQubWluIChsZW4gKiAyKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gICAgaWYgbmV3X2FycmF5X2xlbmd0aCA+IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld190YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm5ld19hcnJheV9sZW5ndGggQXZsdHJlZS5lbXB0eSBpblxuICAgICAgbGV0IG9sZF90YWJsZSA9IHQudGFibGUgaW5cbiAgICAgIHQudGFibGUgPC0gbmV3X3RhYmxlO1xuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBmIH5rZXkgfmRhdGEgPSBpZ25vcmUgKGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgOiBib29sKSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvbGRfdGFibGUgLSAxIGRvXG4gICAgICAgIEF2bHRyZWUuaXRlciBvbGRfdGFibGUuKGkpIH5mXG4gICAgICBkb25lKSlcbjs7XG5cbmxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgaWdub3JlIChhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhIDogYm9vbCk7XG4gIG1heWJlX3Jlc2l6ZV90YWJsZSB0XG47O1xuXG5sZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGxldCBhZGRlZCA9IGFkZF93b3JrZXIgfnJlcGxhY2U6ZmFsc2UgdCB+a2V5IH5kYXRhIGluXG4gIGlmIGFkZGVkXG4gIHRoZW4gKFxuICAgIG1heWJlX3Jlc2l6ZV90YWJsZSB0O1xuICAgIGBPaylcbiAgZWxzZSBgRHVwbGljYXRlXG47O1xuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgfCBgT2sgLT4gKClcbiAgfCBgRHVwbGljYXRlIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXkgdCBpblxuICAgIGxldCBlcnJvciA9IEVycm9yLmNyZWF0ZSBcIkhhc2h0YmwuYWRkX2V4biBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIGtleSBzZXhwX29mX2tleSBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICB0LnRhYmxlLihpKSA8LSBBdmx0cmVlLmVtcHR5XG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwyIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDJcbiAgICAgIHRyZWVcbiAgICAgIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICAgICAga2V5XG4gICAgICB+YVxuICAgICAgfmJcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IGtleSAtPiBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gZmFsc2VcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IF8gfSAtPiBjb21wYXJlX2tleSB0IGsga2V5ID0gMFxuICB8IHRyZWUgLT4gQXZsdHJlZS5tZW0gdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkX29yX3JlbW92ZWQgPSAgKHJlZiBmYWxzZSkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICBBdmx0cmVlLnJlbW92ZSByb290IH5yZW1vdmVkOmFkZGVkX29yX3JlbW92ZWQgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuICBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgcm9vdCBuZXdfcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgaWYgIWFkZGVkX29yX3JlbW92ZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDFcbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBhY2MgOj0gZiB+a2V5IH5kYXRhICFhY2NcbiAgICAgICAgfCBidWNrZXQgLT4gYWNjIDo9IEF2bHRyZWUuZm9sZCBidWNrZXQgfmluaXQ6IWFjYyB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgICFhY2NcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgICAgICAgfCBidWNrZXQgLT4gQXZsdHJlZS5pdGVyIGJ1Y2tldCB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+IHQubXV0YXRpb25fYWxsb3dlZCA8LSBtXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGl0ZXJfa2V5cyB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgcmVjIGNob29zZV9ub25lbXB0eSB0YWJsZSBpID1cbiAgbGV0IGF2bHRyZWUgPSBBcnJheS51bnNhZmVfZ2V0IHRhYmxlIGkgaW5cbiAgaWYgQXZsdHJlZS5pc19lbXB0eSBhdmx0cmVlXG4gIHRoZW4gY2hvb3NlX25vbmVtcHR5IHRhYmxlICgoaSArIDEpIGxhbmQgKEFycmF5Lmxlbmd0aCB0YWJsZSAtIDEpKVxuICBlbHNlIEF2bHRyZWUuY2hvb3NlX2V4biBhdmx0cmVlXG47O1xuXG5sZXQgY2hvb3NlX2V4biB0ID1cbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMFxuOztcblxubGV0IGNob29zZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwKVxuXG5sZXQgY2hvb3NlX3JhbmRvbWx5X25vbmVtcHR5IH5yYW5kb21fc3RhdGUgdCA9XG4gIGxldCBzdGFydF9pZHggPSBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoQXJyYXkubGVuZ3RoIHQudGFibGUpIGluXG4gIGNob29zZV9ub25lbXB0eSB0LnRhYmxlIHN0YXJ0X2lkeFxuOztcblxubGV0IGNob29zZV9yYW5kb21seSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkgfnJhbmRvbV9zdGF0ZSB0KVxuOztcblxubGV0IGNob29zZV9yYW5kb21seV9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltIYXNodGJsLmNob29zZV9yYW5kb21seV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSk7XG4gIGNob29zZV9yYW5kb21seV9ub25lbXB0eSB+cmFuZG9tX3N0YXRlIHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSBpbnZhcmlhbnRfZGF0YSB0ID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIEF2bHRyZWUuaW52YXJpYW50IHQudGFibGUuKGkpIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICBkb25lO1xuICBsZXQgcmVhbF9sZW4gPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBpIC0+XG4gICAgICBpbnZhcmlhbnRfa2V5IGtleTtcbiAgICAgIGludmFyaWFudF9kYXRhIGRhdGE7XG4gICAgICBpICsgMSlcbiAgaW5cbiAgYXNzZXJ0IChyZWFsX2xlbiA9IHQubGVuZ3RoKVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IGlmX2ZvdW5kIHYgXyA9IHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBrIHQgPVxuICAgIHJhaXNlXG4gICAgICAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiSGFzaHRibC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHQuaGFzaGFibGUuc2V4cF9vZl90IGsgXSkpXG4gIGluXG4gIGxldCBmaW5kX2V4biB0IGtleSA9IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hOnQgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBub3QgKGYgfmtleSB+ZGF0YSkpKVxubGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IG5vdCAoZiBkYXRhKSkpXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXG4gIF1cbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTooZiB+a2V5IH5kYXRhKSk7XG4gIG5ld190XG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgY29weSB0ID0gbWFwIHQgfmY6Rm4uaWRcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBTb21lIG5ld19kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDAgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBsZXQgdDEgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBuZXdfZGF0YSAtPiBzZXQgdDAgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgU2Vjb25kIG5ld19kYXRhIC0+IHNldCB0MSB+a2V5IH5kYXRhOm5ld19kYXRhKTtcbiAgdDAsIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSkgXG4gIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuXG5sZXQgZmluZF9vcl9hZGQgdCBpZCB+ZGVmYXVsdDooZGVmYXVsdCBbQGxvY2FsXSkgPVxuICBmaW5kX2FuZF9jYWxsXG4gICAgdFxuICAgIGlkXG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCAoKSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdCkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRpX29yX2FkZCB0IGlkIH5kZWZhdWx0ID1cbiAgZmluZF9hbmRfY2FsbFxuICAgIHRcbiAgICBpZFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQga2V5IGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KSBbQG5vbnRhaWxdXG47O1xuXG4oKiBTb21lIGhhc2h0YmwgaW1wbGVtZW50YXRpb25zIG1heSBiZSBhYmxlIHRvIHBlcmZvcm0gdGhpcyBtb3JlIGVmZmljaWVudGx5IHRoYW4gdHdvXG4gICBzZXBhcmF0ZSBsb29rdXBzICopXG5sZXQgZmluZF9hbmRfcmVtb3ZlIHQgaWQgPVxuICBsZXQgcmVzdWx0ID0gZmluZCB0IGlkIGluXG4gIGlmIE9wdGlvbi5pc19zb21lIHJlc3VsdCB0aGVuIHJlbW92ZSB0IGlkO1xuICByZXN1bHRcbjs7XG5cblxubGV0IGNoYW5nZSB0IGlkIH5mID1cbiAgbWF0Y2ggZiAoZmluZCB0IGlkKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgdCBpZFxuICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5OmlkIH5kYXRhXG47O1xuXG5sZXQgdXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA9XG4gIGxldCBkYXRhID0gZiAoZmluZCB0IGlkKSBpblxuICBzZXQgdCB+a2V5OmlkIH5kYXRhO1xuICBkYXRhXG47O1xuXG5sZXQgdXBkYXRlIHQgaWQgfmYgPSBpZ25vcmUgKHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgOiBfKVxuXG5sZXQgaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnkgPVxuICBpZiByZW1vdmVfaWZfemVyb1xuICB0aGVuXG4gICAgY2hhbmdlIHQga2V5IH5mOihmdW4gb3B0IC0+XG4gICAgICBtYXRjaCBieSArIE9wdGlvbi52YWx1ZSBvcHQgfmRlZmF1bHQ6MCB3aXRoXG4gICAgICB8IDAgLT4gTm9uZVxuICAgICAgfCBuIC0+IFNvbWUgbilcbiAgZWxzZVxuICAgIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBieVxuICAgICAgfCBTb21lIGkgLT4gYnkgKyBpKVxuOztcblxubGV0IGluY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieVxubGV0IGRlY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSAoLWJ5KVxuXG5sZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gWyBkYXRhIF1cbiAgICB8IFNvbWUgbCAtPiBkYXRhIDo6IGwpXG47O1xuXG5sZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgW10gfCBTb21lIFsgXyBdIC0+IHJlbW92ZSB0IGtleVxuICB8IFNvbWUgKF8gOjogdGwpIC0+IHNldCB0IH5rZXkgfmRhdGE6dGxcbjs7XG5cbmxldCBmaW5kX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgbCAtPiBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgfnNpemUgKCkgaW5cbiAgbGV0IGR1cGVzID0gcmVmIFtdIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBpZiBtZW0gcmVzIGtleSB0aGVuIGR1cGVzIDo9IGtleSA6OiAhZHVwZXMgZWxzZSBzZXQgcmVzIH5rZXkgfmRhdGEpO1xuICBtYXRjaCAhZHVwZXMgd2l0aFxuICB8IFtdIC0+IGBPayByZXNcbiAgfCBrZXlzIC0+IGBEdXBsaWNhdGVfa2V5cyAoTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpoYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlIGtleXMpXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGFkZF9tdWx0aSByZXMgfmtleSB+ZGF0YSk7XG4gIHJlc1xuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdCB3aXRoXG4gIHwgYE9rIHQgLT4gYE9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMgayAtPiBgRHVwbGljYXRlX2tleSAoTGlzdC5oZF9leG4gaylcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgYE9rIHYgLT4gUmVzdWx0Lk9rIHZcbiAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvciBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IHNleHBfb2Zfa2V5XG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IFJlc3VsdC5PayB2IC0+IHZcbiAgfCBSZXN1bHQuRXJyb3IgZSAtPiBFcnJvci5yYWlzZSBlXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgdG9fYWxpc3QgdCA9IGZvbGQgfmY6KGZ1biB+a2V5IH5kYXRhIGxpc3QgLT4gKGtleSwgZGF0YSkgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgdFxuICB8PiB0b19hbGlzdFxuICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoazEsIF8pIChrMiwgXykgLT4gdC5oYXNoYWJsZS5jb21wYXJlIGsxIGsyKVxuICB8PiBzZXhwX29mX2xpc3QgKHNleHBfb2ZfcGFpciBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEpXG47O1xuXG5sZXQgdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPVxuICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwKSBzZXhwIGluXG4gIG1hdGNoIG9mX2FsaXN0IH5oYXNoYWJsZSBhbGlzdCB+c2l6ZTooTGlzdC5sZW5ndGggYWxpc3QpIHdpdGhcbiAgfCBgT2sgdiAtPiB2XG4gIHwgYER1cGxpY2F0ZV9rZXkgayAtPlxuICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICBsZXQgYWxpc3Rfc2V4cHMgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBGbi5pZCBGbi5pZCkgc2V4cCBpblxuICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgTGlzdC5pdGVyMl9leG4gYWxpc3QgYWxpc3Rfc2V4cHMgfmY6KGZ1biAoazIsIF8pIChrMl9zZXhwLCBfKSAtPlxuICAgICAgaWYgaGFzaGFibGUuY29tcGFyZSBrIGsyID0gMFxuICAgICAgdGhlblxuICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJIYXNodGJsLnRfb2Zfc2V4cDogZHVwbGljYXRlIGtleVwiIGsyX3NleHBcbiAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgIGFzc2VydCBmYWxzZVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrIHYpXG4gICAgICAoa19ncmFtbWFyIDogayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICAgICh2X2dyYW1tYXIgOiB2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IChrLCB2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuOztcblxubGV0IGtleXMgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGE6XyBhY2MgLT4ga2V5IDo6IGFjYylcbmxldCBkYXRhIHQgPSBmb2xkIH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBhZGRfdG9fZ3JvdXBzIGdyb3VwcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3MgPVxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHJvdyAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHJvdyBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgcm93IGluXG4gICAgbGV0IGRhdGEgPVxuICAgICAgbWF0Y2ggZmluZCBncm91cHMga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICB8IFNvbWUgb2xkIC0+IGNvbWJpbmUgb2xkIGRhdGFcbiAgICBpblxuICAgIHNldCBncm91cHMgfmtleSB+ZGF0YSkgW0Bub250YWlsXVxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIHJvd3MgPVxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgYWRkX3RvX2dyb3VwcyByZXMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzO1xuICByZXNcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YTpGbi5pZCByb3dzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIG1hdGNoIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3Mgd2l0aFxuICB8IGBPayB0IC0+IFJlc3VsdC5PayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGtleXMgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkhhc2h0YmwuY3JlYXRlX3dpdGhfa2V5OiBkdXBsaWNhdGUga2V5c1wiXG4gICAgICAgICBbIFwia2V5c1wiLCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9rZXkga2V5cyBdKVxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgT3JfZXJyb3Iub2tfZXhuIChjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzKVxuOztcblxubGV0IG1lcmdlID1cbiAgbGV0IG1heWJlX3NldCB0IH5rZXkgfmYgZCA9XG4gICAgbWF0Y2ggZiB+a2V5IGQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IHNldCB0IH5rZXkgfmRhdGE6dlxuICBpblxuICBmdW4gdF9sZWZ0IHRfcmlnaHQgfmYgLT5cbiAgICBpZiBub3QgKEhhc2hhYmxlLmVxdWFsIHRfbGVmdC5oYXNoYWJsZSB0X3JpZ2h0Lmhhc2hhYmxlKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJIYXNodGJsLm1lcmdlOiBkaWZmZXJlbnQgJ2hhc2hhYmxlJyB2YWx1ZXNcIjtcbiAgICBsZXQgbmV3X3QgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5ncm93dGhfYWxsb3dlZDp0X2xlZnQuZ3Jvd3RoX2FsbG93ZWRcbiAgICAgICAgfmhhc2hhYmxlOnRfbGVmdC5oYXNoYWJsZVxuICAgICAgICB+c2l6ZTp0X2xlZnQubGVuZ3RoXG4gICAgICAgICgpXG4gICAgaW5cbiAgICB3aXRob3V0X211dGF0aW5nIHRfbGVmdCAoZnVuICgpIC0+XG4gICAgICB3aXRob3V0X211dGF0aW5nIHRfcmlnaHQgKGZ1biAoKSAtPlxuICAgICAgICBpdGVyaSB0X2xlZnQgfmY6KGZ1biB+a2V5IH5kYXRhOmxlZnQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfcmlnaHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBMZWZ0IGxlZnQpXG4gICAgICAgICAgfCBTb21lIHJpZ2h0IC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgQm90aCAobGVmdCwgcmlnaHQpKSk7XG4gICAgICAgIGl0ZXJpIHRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOnJpZ2h0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X2xlZnQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBSaWdodCByaWdodClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgICgqIGFscmVhZHkgZG9uZSBhYm92ZSAqKSkgW0Bub250YWlsXSkgW0Bub250YWlsXSk7XG4gICAgbmV3X3Rcbjs7XG5cbmxldCBtZXJnZV9pbnRvIH5zcmMgfmRzdCB+ZiA9XG4gIGl0ZXJpIHNyYyB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgZHN0X2RhdGEgPSBmaW5kIGRzdCBrZXkgaW5cbiAgICBsZXQgYWN0aW9uID0gd2l0aG91dF9tdXRhdGluZyBkc3QgKGZ1biAoKSAtPiBmIH5rZXkgZGF0YSBkc3RfZGF0YSkgaW5cbiAgICBtYXRjaCAoYWN0aW9uIDogXyBNZXJnZV9pbnRvX2FjdGlvbi50KSB3aXRoXG4gICAgfCBSZW1vdmUgLT4gcmVtb3ZlIGRzdCBrZXlcbiAgICB8IFNldF90byBkYXRhIC0+XG4gICAgICAobWF0Y2ggZHN0X2RhdGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBzZXQgZHN0IH5rZXkgfmRhdGFcbiAgICAgICB8IFNvbWUgZHN0X2RhdGEgLT4gaWYgbm90IChwaHlzX2VxdWFsIGRzdF9kYXRhIGRhdGEpIHRoZW4gc2V0IGRzdCB+a2V5IH5kYXRhKSkgW0Bub250YWlsXG4gIF1cbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWMgZWxzZSBrZXkgOjogYWMpXG4gIGluXG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBrZXkgLT4gcmVtb3ZlIHQga2V5KVxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBmaWx0ZXJfa2V5c19pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IG1hcF9yZXN1bHRzID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiAoa2V5LCBmIH5rZXkgfmRhdGEpIDo6IGFjKSBpblxuICBMaXN0Lml0ZXIgbWFwX3Jlc3VsdHMgfmY6KGZ1biAoa2V5LCByZXN1bHQpIC0+XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtb3ZlIHQga2V5XG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIHdpdGhvdXRfbXV0YXRpbmcgdCAoZnVuICgpIC0+XG4gICAgQXJyYXkuaXRlciB0LnRhYmxlIH5mOihBdmx0cmVlLm1hcGlfaW5wbGFjZSB+ZikgW0Bub250YWlsXSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBtYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxubGV0IGVxdWFsIGVxdWFsIHQgdCcgPVxuICBsZW5ndGggdCA9IGxlbmd0aCB0J1xuICAmJiAod2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgd2l0aG91dF9tdXRhdGluZyB0JyAoZnVuICgpIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBtYXRjaCBmaW5kIHQnIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByLnJldHVybiBmYWxzZVxuICAgICAgICB8IFNvbWUgZGF0YScgLT4gaWYgbm90IChlcXVhbCBkYXRhIGRhdGEnKSB0aGVuIHIucmV0dXJuIGZhbHNlKSBbQG5vbnRhaWxdKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdKVxuOztcblxubGV0IHNpbWlsYXIgPSBlcXVhbFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGNob29zZSA9IGNob29zZVxuICBsZXQgY2hvb3NlX2V4biA9IGNob29zZV9leG5cbiAgbGV0IGNob29zZV9yYW5kb21seSA9IGNob29zZV9yYW5kb21seVxuICBsZXQgY2hvb3NlX3JhbmRvbWx5X2V4biA9IGNob29zZV9yYW5kb21seV9leG5cbiAgbGV0IGNsZWFyID0gY2xlYXJcbiAgbGV0IGNvcHkgPSBjb3B5XG4gIGxldCByZW1vdmUgPSByZW1vdmVcbiAgbGV0IHNldCA9IHNldFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBhZGRfZXhuID0gYWRkX2V4blxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG4gIGxldCB1cGRhdGUgPSB1cGRhdGVcbiAgbGV0IHVwZGF0ZV9hbmRfcmV0dXJuID0gdXBkYXRlX2FuZF9yZXR1cm5cbiAgbGV0IGFkZF9tdWx0aSA9IGFkZF9tdWx0aVxuICBsZXQgcmVtb3ZlX211bHRpID0gcmVtb3ZlX211bHRpXG4gIGxldCBmaW5kX211bHRpID0gZmluZF9tdWx0aVxuICBsZXQgbWVtID0gbWVtXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmaWx0ZXJfbWFwID0gZmlsdGVyX21hcFxuICBsZXQgZmlsdGVyX21hcGkgPSBmaWx0ZXJfbWFwaVxuICBsZXQgZmlsdGVyX2tleXMgPSBmaWx0ZXJfa2V5c1xuICBsZXQgZmlsdGVyID0gZmlsdGVyXG4gIGxldCBmaWx0ZXJpID0gZmlsdGVyaVxuICBsZXQgcGFydGl0aW9uX21hcCA9IHBhcnRpdGlvbl9tYXBcbiAgbGV0IHBhcnRpdGlvbl9tYXBpID0gcGFydGl0aW9uX21hcGlcbiAgbGV0IHBhcnRpdGlvbl90ZiA9IHBhcnRpdGlvbl90ZlxuICBsZXQgcGFydGl0aW9uaV90ZiA9IHBhcnRpdGlvbmlfdGZcbiAgbGV0IGZpbmRfb3JfYWRkID0gZmluZF9vcl9hZGRcbiAgbGV0IGZpbmRpX29yX2FkZCA9IGZpbmRpX29yX2FkZFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGZpbmRfZXhuID0gZmluZF9leG5cbiAgbGV0IGZpbmRfYW5kX2NhbGwgPSBmaW5kX2FuZF9jYWxsXG4gIGxldCBmaW5kX2FuZF9jYWxsMSA9IGZpbmRfYW5kX2NhbGwxXG4gIGxldCBmaW5kX2FuZF9jYWxsMiA9IGZpbmRfYW5kX2NhbGwyXG4gIGxldCBmaW5kaV9hbmRfY2FsbCA9IGZpbmRpX2FuZF9jYWxsXG4gIGxldCBmaW5kaV9hbmRfY2FsbDEgPSBmaW5kaV9hbmRfY2FsbDFcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMiA9IGZpbmRpX2FuZF9jYWxsMlxuICBsZXQgZmluZF9hbmRfcmVtb3ZlID0gZmluZF9hbmRfcmVtb3ZlXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCBtZXJnZSA9IG1lcmdlXG4gIGxldCBtZXJnZV9pbnRvID0gbWVyZ2VfaW50b1xuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCBmaWx0ZXJfa2V5c19pbnBsYWNlID0gZmlsdGVyX2tleXNfaW5wbGFjZVxuICBsZXQgZmlsdGVyX2lucGxhY2UgPSBmaWx0ZXJfaW5wbGFjZVxuICBsZXQgZmlsdGVyaV9pbnBsYWNlID0gZmlsdGVyaV9pbnBsYWNlXG4gIGxldCBtYXBfaW5wbGFjZSA9IG1hcF9pbnBsYWNlXG4gIGxldCBtYXBpX2lucGxhY2UgPSBtYXBpX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcGlfaW5wbGFjZSA9IGZpbHRlcl9tYXBpX2lucGxhY2VcbiAgbGV0IGVxdWFsID0gZXF1YWxcbiAgbGV0IHNpbWlsYXIgPSBzaW1pbGFyXG4gIGxldCBpbmNyID0gaW5jclxuICBsZXQgZGVjciA9IGRlY3JcbiAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gS2V5Lmhhc2hhYmxlXG5cbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBIYXNoYWJsZS5wb2x5XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBIYXNoYWJsZSA9IEhhc2hhYmxlLkhhc2hhYmxlXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgbGV0IGhhc2hhYmxlIHQgPSB0Lmhhc2hhYmxlXG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIGNyZWF0ZSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKClcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Qgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X211bHRpIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gIGNyZWF0ZV9tYXBwZWQgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gIGdyb3VwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuOztcblxubGV0IGhhc2hhYmxlX3MgdCA9IEhhc2hhYmxlLnRvX2tleSB0Lmhhc2hhYmxlXG5cbm1vZHVsZSBNIChLIDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gaykgdl9vZl9zZXhwIHNleHAgPVxuICB0X29mX3NleHAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLKSkgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBrKSAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspIHZfZ3JhbW1hciA9XG4gIHRfc2V4cF9ncmFtbWFyIEsudF9zZXhwX2dyYW1tYXIgdl9ncmFtbWFyXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcblxubGV0IGhhc2hhYmxlX3MgPSBIYXNodGJsLmhhc2hhYmxlX3NcbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxubGV0IHBvbHlfaGFzaGFibGUgPSBIYXNodGJsLlBvbHkuaGFzaGFibGVcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbnR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgSGFzaHRibC50XG50eXBlICdhIGhhc2hfc2V0ID0gJ2EgdFxudHlwZSAnYSBlbHQgPSAnYVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gIGxldCBjbGVhciA9IEhhc2h0YmwuY2xlYXJcbiAgbGV0IGxlbmd0aCA9IEhhc2h0YmwubGVuZ3RoXG4gIGxldCBtZW0gPSBIYXNodGJsLm1lbVxuICBsZXQgaXNfZW1wdHkgdCA9IEhhc2h0YmwuaXNfZW1wdHkgdFxuXG4gIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIF8gYXMgbyAtPiByLnJldHVybiBvKTtcbiAgICAgIE5vbmUpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZCB0IH5mID0gZmluZF9tYXAgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gU29tZSBhIGVsc2UgTm9uZSkgW0Bub250YWlsXVxuICBsZXQgYWRkIHQgayA9IEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpXG5cbiAgbGV0IHN0cmljdF9hZGQgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJlbGVtZW50IGFscmVhZHkgZXhpc3RzXCJcbiAgICBlbHNlIChcbiAgICAgIEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICA7O1xuXG4gIGxldCBzdHJpY3RfYWRkX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9hZGQgdCBrKVxuICBsZXQgcmVtb3ZlID0gSGFzaHRibC5yZW1vdmVcblxuICBsZXQgc3RyaWN0X3JlbW92ZSB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZSB0IGs7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvciBcImVsZW1lbnQgbm90IGluIHNldFwiIGsgKEhhc2h0Ymwuc2V4cF9vZl9rZXkgdClcbiAgOztcblxuICBsZXQgc3RyaWN0X3JlbW92ZV9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfcmVtb3ZlIHQgaylcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICBIYXNodGJsLmZvbGQgdCB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgYWNjIC0+IGYgYWNjIGtleSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPSBIYXNodGJsLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuICBsZXQgdG9fbGlzdCA9IEhhc2h0Ymwua2V5c1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lIHQgPVxuICAgIHNleHBfb2ZfbGlzdCBzZXhwX29mX2UgKHRvX2xpc3QgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGhhc2hhYmxlIHQpLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBpbmRleCA9IHJlZiAobGVuIC0gMSkgaW5cbiAgICBmb2xkIHQgfmluaXQ6W3x8XSB+ZjooZnVuIGFjYyBrZXkgLT5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCBhY2MgPSAwXG4gICAgICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIGtleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGluZGV4IDo9ICFpbmRleCAtIDE7XG4gICAgICAgIGFjYy4oIWluZGV4KSA8LSBrZXk7XG4gICAgICAgIGFjYykpXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mOihmIFtAbG9jYWxdKSA9XG4gICAgSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IG5vdCAoZiBrZXkpKSlcbiAgbGV0IGVxdWFsIHQxIHQyID0gSGFzaHRibC5lcXVhbCAoZnVuICgpICgpIC0+IHRydWUpIHQxIHQyXG4gIGxldCBjb3B5IHQgPSBIYXNodGJsLmNvcHkgdFxuICBsZXQgZmlsdGVyIHQgfmYgPSBIYXNodGJsLmZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgbGV0IHVuaW9uIHQxIHQyID0gSGFzaHRibC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyBfIC0+IFNvbWUgKCkpXG4gIGxldCBkaWZmIHQxIHQyID0gZmlsdGVyIHQxIH5mOihmdW4ga2V5IC0+IG5vdCAoSGFzaHRibC5tZW0gdDIga2V5KSlcblxuICBsZXQgaW50ZXIgdDEgdDIgPVxuICAgIGxldCBzbWFsbGVyLCBsYXJnZXIgPSBpZiBsZW5ndGggdDEgPiBsZW5ndGggdDIgdGhlbiB0MiwgdDEgZWxzZSB0MSwgdDIgaW5cbiAgICBIYXNodGJsLmZpbHRlcmkgc21hbGxlciB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gSGFzaHRibC5tZW0gbGFyZ2VyIGtleSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gICAgbGV0IHRvX3JlbW92ZSA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjIHggLT4gaWYgZiB4IHRoZW4gYWMgZWxzZSB4IDo6IGFjKSBpblxuICAgIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biB4IC0+IHJlbW92ZSB0IHgpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsID0gSGFzaHRibC5tYXAgaGFzaHRibCB+ZjppZ25vcmVcbiAgbGV0IHRvX2hhc2h0YmwgdCB+ZiA9IEhhc2h0YmwubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSkgW0Bub250YWlsXVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggbFxuICBpblxuICBsZXQgdCA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSBtIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4gayAtPiBhZGQgdCBrKTtcbiAgdFxuOztcblxubGV0IHRfb2Zfc2V4cCBtIGVfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgU2V4cC5BdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCByZXF1aXJlcyBhIGxpc3RcIiBzZXhwXG4gIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICBsZXQgdCA9IGNyZWF0ZSBtIH5zaXplOihMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIExpc3QuaXRlciBsaXN0IH5mOihmdW4gc2V4cCAtPlxuICAgICAgbGV0IGUgPSBlX29mX3NleHAgc2V4cCBpblxuICAgICAgbWF0Y2ggc3RyaWN0X2FkZCB0IGUgd2l0aFxuICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgfCBFcnJvciBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgZ290IGEgZHVwbGljYXRlIGVsZW1lbnRcIiBzZXhwKTtcbiAgICB0XG47O1xuXG5tb2R1bGUgQ3JlYXRvcnMgKEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IFNleHAudCAtPiAnYSBFbHQudCB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBFbHQudCB0XG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBlX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgZV9vZl9zZXhwIHNleHBcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBoYXNoX3NldFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gcG9seV9oYXNoYWJsZVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuZW5kXG5cbm1vZHVsZSBNIChFbHQgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBFbHQudCB0XG5lbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gZWx0KSB0ID1cbiAgc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gZWx0KSBzZXhwID1cbiAgdF9vZl9zZXhwIChtb2R1bGUgRWx0KSBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgdDEgdDIgPSBlcXVhbCB0MSB0MlxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBQcmludGZcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxuaW5jbHVkZSBGbG9hdDBcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Zsb2F0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9mbG9hdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2Zsb2F0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcbiAgbGV0IHRfb2Zfc2V4cCA9IChmbG9hdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9mbG9hdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBmbG9hdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgdG9fZmxvYXQgeCA9IHhcbmxldCBvZl9mbG9hdCB4ID0geFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICB0cnkgZmxvYXRfb2Zfc3RyaW5nIHMgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwiRmxvYXQub2Zfc3RyaW5nICVzXCIgcyAoKVxuOztcblxubGV0IG9mX3N0cmluZ19vcHQgPSBmbG9hdF9vZl9zdHJpbmdfb3B0XG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0uICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBpIGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxuKCogTGV0IFt5XSBiZSBhIHBvd2VyIG9mIDIuICBUaGVuIHRoZSBuZXh0IHJlcHJlc2VudGFibGUgZmxvYXQgaXM6XG4gICBbeiA9IHkgKiAoMSArIDIgKiogLTUyKV1cbiAgIGFuZCB0aGUgcHJldmlvdXMgb25lIGlzXG4gICBbeCA9IHkgKiAoMSAtIDIgKiogLTUzKV1cblxuICAgSW4gZ2VuZXJhbCwgZXZlcnkgdHdvIGFkamFjZW50IGZsb2F0cyBhcmUgd2l0aGluIGEgZmFjdG9yIG9mIGJldHdlZW4gWzEgKyAyKiotNTNdXG4gICBhbmQgWzEgKyAyKiotNTJdIGZyb20gZWFjaCBvdGhlciwgdGhhdCBpcyB3aXRoaW4gWzEgKyAxLjFlLTE2XSBhbmQgWzEgKyAyLjNlLTE2XS5cblxuICAgU28gaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdCBzdGFydHMgd2l0aCBcIjFcIiwgdGhlbiBpdHMgYWRqYWNlbnQgZmxvYXRzXG4gICB3aWxsIHVzdWFsbHkgZGlmZmVyIGZyb20gaXQgYnkgMSwgYW5kIHNvbWV0aW1lcyBieSAyLCBhdCB0aGUgMTd0aCBzaWduaWZpY2FudCBkaWdpdFxuICAgKGNvdW50aW5nIGZyb20gMSkuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBzdGFydHMgd2l0aCBcIjlcIiwgdGhlbiB0aGUgYWRqYWNlbnRcbiAgIGZsb2F0cyB3aWxsIGJlIG9mZiBieSBubyBtb3JlIHRoYW4gMjMgYXQgdGhlIDE2dGggYW5kIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRzLlxuXG4gICBFLmcuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5OVwiXG4gICB2fVxuICAgUHJpbnRpbmcgYSBjb3VwbGUgb2YgZXh0cmEgZGlnaXRzIHJldmVhbHMgdGhhdCB0aGUgZGlmZmVyZW5jZSBpbmRlZWQgaXMgcm91Z2hseSAxMSBhdFxuICAgZGlnaXRzIDE3dGggYW5kIDE4dGggKHRoYXQgaXMsIDEzdGggYW5kIDE0dGggYWZ0ZXIgXCIuXCIpOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTg4NlwiXG4gICB2fVxuXG4gICBUaGUgdWxwICh0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkamFjZW50IGZsb2F0cykgaXMgdHdpY2UgYXMgYmlnIG9uIHRoZSBvdGhlciBzaWRlIG9mXG4gICAxMDI0LjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuICsuIDIuKiogKC01Mi4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyNC4wMDAwMDAwMDAwMDAyMjdcIlxuICAgdn1cblxuICAgTm93IHRha2UgYSBwb3dlciBvZiAyIHdoaWNoIHN0YXJ0cyB3aXRoIDk5OlxuXG4gICB7dlxuICAgICAjIDIuKio5My4gOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAxIDIzNDU2Nzg5MDEyMzQ1Njc4XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQyMmUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuICsuIDIuKiogKC01Mi4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQ0NGUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuIC0uIDIuKiogKC01My4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQxMWUrMjdcbiAgIHZ9XG5cbiAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMioqOTMgYW5kIGl0cyB0d28gbmVpZ2hib3JzIGlzIHNsaWdodGx5IG1vcmUgdGhhbiwgcmVzcGVjdGl2ZWx5LFxuICAgMSBhbmQgMiBhdCBzaWduaWZpY2FudCBkaWdpdCAxNi5cblxuICAgVGhvc2UgZXhhbXBsZXMgc2hvdyB0aGF0OlxuICAgLSAxNyBzaWduaWZpY2FudCBkaWdpdHMgaXMgYWx3YXlzIHN1ZmZpY2llbnQgdG8gcmVwcmVzZW50IGEgZmxvYXQgd2l0aG91dCBhbWJpZ3VpdHlcbiAgIC0gMTV0aCBzaWduaWZpY2FudCBkaWdpdCBjYW4gYWx3YXlzIGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHlcbiAgIC0gY29udmVydGluZyBhIGRlY2ltYWwgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIHRvIGl0cyBuZWFyZXN0IGZsb2F0IGFuZCBiYWNrXG4gICAgIGNhbiBjaGFuZ2UgdGhlIGxhc3QgZGVjaW1hbCBkaWdpdCBieSBubyBtb3JlIHRoYW4gMVxuXG4gICBUbyBtYWtlIHN1cmUgdGhhdCBmbG9hdHMgb2J0YWluZWQgYnkgY29udmVyc2lvbiBmcm9tIGRlY2ltYWwgZnJhY3Rpb25zIChlLmcuIFwiMy4xNFwiKVxuICAgYXJlIHByaW50ZWQgd2l0aG91dCB0cmFpbGluZyBub24temVybyBkaWdpdHMsIG9uZSBzaG91bGQgY2hvb3NlIHRoZSBmaXJzdCBhbW9uZyB0aGVcbiAgICclLjE1ZycsICclLjE2ZycsIGFuZCAnJS4xN2cnIHJlcHJlc2VudGF0aW9ucyB3aGljaCBkb2VzIHJvdW5kLXRyaXA6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIiAgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lICopXG5cbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjhcIiAgICAgICAgICAgICAgICAgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1kb2VzIG5vdCByb3VuZC10cmlwICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMlwiICAgICAgICAoKiBwcmVmZXIgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAxOFwiICAgICAgICgqIHRoaXMgb25lIGhhcyBvbmUgZGlnaXQgb2YganVuayBhdCB0aGUgZW5kICopXG4gICB2fVxuXG4gICBTa2lwcGluZyB0aGUgJyUuMTZnJyBpbiB0aGUgYWJvdmUgcHJvY2VkdXJlIHNhdmVzIHVzIHNvbWUgdGltZSwgYnV0IGl0IG1lYW5zIHRoYXQsIGFzXG4gICBzZWVuIGluIHRoZSBzZWNvbmQgZXhhbXBsZSBhYm92ZSwgb2NjYXNpb25hbGx5IG51bWJlcnMgd2l0aCBleGFjdGx5IDE2IHNpZ25pZmljYW50XG4gICBkaWdpdHMgd2lsbCBoYXZlIGFuIGVycm9yIGludHJvZHVjZWQgYXQgdGhlIDE3dGggZGlnaXQuICBUaGF0IGlzIHByb2JhYmx5IE9LIGZvclxuICAgdHlwaWNhbCB1c2UsIGJlY2F1c2UgYSBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaXMgXCJ1Z2x5XCIgYWxyZWFkeS4gIEFkZGluZyBvbmVcbiAgIG1vcmUgZG9lc24ndCBtYWtlIGl0IG11Y2ggd29yc2UgZm9yIGEgaHVtYW4gcmVhZGVyLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgd2UgY2Fubm90IHNraXAgJyUuMTVnJyBhbmQgb25seSBsb29rIGF0ICclLjE2ZycgYW5kICclLjE3ZycsIHNpbmNlXG4gICB0aGUgaW5hY2N1cmFjeSBhdCB0aGUgMTZ0aCBkaWdpdCBtaWdodCBpbnRyb2R1Y2UgdGhlIG5vaXNlIHdlIHdhbnQgdG8gYXZvaWQ6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MlwiICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMVwiICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tanVuayBhdCB0aGUgZW5kICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMDlcIlxuICAgdn1cbiopXG5sZXQgdG9fc3RyaW5nIHggPVxuICB2YWxpZF9mbG9hdF9sZXhlbVxuICAgIChsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVnXCIgeCBpblxuICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN2dcIiB4KVxuOztcblxubGV0IG1heF92YWx1ZSA9IGluZmluaXR5XG5sZXQgbWluX3ZhbHVlID0gbmVnX2luZmluaXR5XG5sZXQgbWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDc0LlxubGV0IG1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTAyMi5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IHBpID0gMHgzLjI0M0Y2QTg4ODVBMzA4RDMxMzE5OEEyRTAzNzA3M1xubGV0IHNxcnRfcGkgPSAweDEuQzVCRjg5MUI0RUY2QUE3OUMzQjA1MjBENURCOTM4XG5sZXQgc3FydF8ycGkgPSAweDIuODFCMjYzRkVDNEUwQjJDQUY5NDgzRjVDRTQ1OURDXG5sZXQgZXVsZXIgPSAweDAuOTNDNDY3RTM3REIwQzdBNEQxQkUzRjgxMDE1MkNCXG5sZXQgb2ZfaW50ID0gSW50LnRvX2Zsb2F0XG5sZXQgdG9faW50ID0gSW50Lm9mX2Zsb2F0XG5sZXQgb2ZfaW50NjMgaSA9IEludDYzLnRvX2Zsb2F0IGlcbmxldCBvZl9pbnQ2NCBpID0gU3RkbGliLkludDY0LnRvX2Zsb2F0IGlcbmxldCB0b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdFxubGV0IGlyb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xubGV0IGlyb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xuXG4oKiBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhlIFwiZXhuXCIgcm91bmRpbmcgZnVuY3Rpb25zIGlzIGltcG9ydGFudCwgc28gdGhleSBhcmUgd3JpdHRlblxuICAgb3V0IHNlcGFyYXRlbHksIGFuZCB0dW5lZCBpbmRpdmlkdWFsbHkuICAoV2UgY291bGQgaGF2ZSB0aGUgb3B0aW9uIHZlcnNpb25zIGNhbGxcbiAgIHRoZSBcImV4blwiIHZlcnNpb25zLCBidXQgdGhhdCBpbXBvc2VzIGFyZ3VhYmx5IGdyYXR1aXRvdXMgb3ZlcmhlYWQtLS1lc3BlY2lhbGx5XG4gICBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgY2FwdHVyZSBvZiBiYWNrdHJhY2VzIGlzIGVuYWJsZWQgdXBvbiBcIndpdGhcIi0tLWFuZCB0aGF0IHNlZW1zXG4gICBub3Qgd29ydGggaXQgd2hlbiBjb21wYXJlZCB0byB0aGUgcmVsYXRpdmVseSBzbWFsbCBhbW91bnQgb2YgY29kZSBkdXBsaWNhdGlvbi4pICopXG5cbigqIEVycm9yIHJlcG9ydGluZyBiZWxvdyBpcyB2ZXJ5IGNhcmVmdWxseSBhcnJhbmdlZCBzbyB0aGF0LCBlLmcuLCBbaXJvdW5kX25lYXJlc3RfZXhuXVxuICAgaXRzZWxmIGNhbiBiZSBpbmxpbmVkIGludG8gY2FsbGVycyBzdWNoIHRoYXQgdGhleSBkb24ndCBuZWVkIHRvIGFsbG9jYXRlIGEgYm94IGZvciB0aGVcbiAgIFtmbG9hdF0gYXJndW1lbnQuICBUaGlzIGlzIGRvbmUgd2l0aCBhIGJveCBbYm94XSBmdW5jdGlvbiBjYXJlZnVsbHkgY2hvc2VuIHRvIGFsbG93IHRoZVxuICAgY29tcGlsZXIgdG8gY3JlYXRlIGEgc2VwYXJhdGUgYm94IGZvciB0aGUgZmxvYXQgb25seSBpbiBlcnJvciBjYXNlcy4gIFNlZSwgZS5nLixcbiAgIFsuLi8uLi96ZXJvL3Rlc3QvcHJpY2VfdGVzdC5tbF0gZm9yIGEgbWVjaGFuaWNhbCB0ZXN0IG9mIHRoaXMgcHJvcGVydHkgd2hlbiBidWlsZGluZ1xuICAgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPXRydWVdLiAqKVxuXG5sZXQgaXJvdW5kX3VwIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9kb3duIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuIGlmIHQgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCkgZWxzZSBOb25lXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKCkpXG47O1xuXG5sZXQgaXJvdW5kX3Rvd2FyZHNfemVybyB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaXJvdW5kX3Rvd2FyZHNfemVyb19leG46IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoYm94IHQpXG4gICAgICAoKVxuOztcblxuKCogT3V0c2lkZSBvZiB0aGUgcmFuZ2UgKHJvdW5kX25lYXJlc3RfbGIuLnJvdW5kX25lYXJlc3RfdWIpLCBhbGwgcmVwcmVzZW50YWJsZSBkb3VibGVzXG4gICBhcmUgaW50ZWdlcnMgaW4gdGhlIG1hdGhlbWF0aWNhbCBzZW5zZSwgYW5kIFtyb3VuZF9uZWFyZXN0XSBzaG91bGQgYmUgaWRlbnRpdHkuXG5cbiAgIEhvd2V2ZXIsIGZvciBvZGQgbnVtYmVycyB3aXRoIHRoZSBhYnNvbHV0ZSB2YWx1ZSBiZXR3ZWVuIDIqKjUyIGFuZCAyKio1MywgdGhlIGZvcm11bGFcbiAgIFtyb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArIDAuNSldIGRvZXMgbm90IGhvbGQ6XG5cbiAgIHt2XG4gICAgICMgbGV0IG5haXZlX3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsuIDAuNSk7O1xuICAgICAjIGxldCB4ID0gMi4gKiogNTIuICsuIDEuOztcbiAgICAgdmFsIHggOiBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTcuXG4gICAgICMgbmFpdmVfcm91bmRfbmVhcmVzdCB4OztcbiAgICAgLSA6ICAgICBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTguXG4gICB2fVxuKilcblxubGV0IHJvdW5kX25lYXJlc3RfbGIgPSAtLigyLiAqKiA1Mi4pXG5sZXQgcm91bmRfbmVhcmVzdF91YiA9IDIuICoqIDUyLlxuXG4oKiBGb3IgW3ggPSBvbmVfdWxwIGBEb3duIDAuNV0sIHRoZSBmb3JtdWxhIFtmbG9vciAoeCArLiAwLjUpXSBmb3Igcm91bmRpbmcgdG8gbmVhcmVzdFxuICAgZG9lcyBub3Qgd29yaywgYmVjYXVzZSB0aGUgZXhhY3QgcmVzdWx0IGlzIGhhbGZ3YXkgYmV0d2VlbiBbb25lX3VscCBgRG93biAxLl0gYW5kIFsxLl0sXG4gICBhbmQgaXQgZ2V0cyByb3VuZGVkIHVwIHRvIFsxLl0gZHVlIHRvIHRoZSByb3VuZC10aWVzLXRvLWV2ZW4gcnVsZS4gKilcbmxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscCBgRG93biAwLjVcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0ID1cbiAgdFxuICArLlxuICBpZiB0ID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICB0aGVuIG9uZV91bHBfbGVzc190aGFuX2hhbGYgKCogc2luY2UgdCA8IDAuNSwgbWFrZSBzdXJlIHRoZSByZXN1bHQgaXMgPCAxLjAgKilcbiAgZWxzZSAwLjVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KSlcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICAgIGVsc2UgTm9uZVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF8zMlxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4bl8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX25lYXJlc3RfZXhuXzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF9leG5fNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzMyXG47O1xuXG4oKiBUaGUgZm9sbG93aW5nIFtpcm91bmRfZXhuXSBhbmQgW2lyb3VuZF0gZnVuY3Rpb25zIGFyZSBzbG93ZXIgdGhhbiB0aGUgb25lcyBhYm92ZS5cbiAgIFRoZWlyIGVxdWl2YWxlbmNlIHRvIHRob3NlIGZ1bmN0aW9ucyBpcyB0ZXN0ZWQgaW4gdGhlIHVuaXQgdGVzdHMgYmVsb3cuICopXG5cbmxldFtAaW5saW5lXSBpcm91bmRfZXhuID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBaZXJvIC0+IGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHRcbiAgfCBgTmVhcmVzdCAtPiBpcm91bmRfbmVhcmVzdF9leG4gdFxuICB8IGBVcCAtPiBpcm91bmRfdXBfZXhuIHRcbiAgfCBgRG93biAtPiBpcm91bmRfZG93bl9leG4gdFxuOztcblxubGV0IGlyb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgdHJ5IFNvbWUgKGlyb3VuZF9leG4gfmRpciB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNfaW5mIHQgPSAxLiAvLiB0ID0gMC5cbmxldCBpc19maW5pdGUgdCA9IHQgLS4gdCA9IDAuXG5cbmxldCBtaW5faW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgbWF4X2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IGFkZCA9ICggKy4gKVxubGV0IHN1YiA9ICggLS4gKVxubGV0IG5lZyA9ICggfi0uIClcbmxldCBhYnMgPSBhYnNfZmxvYXRcbmxldCBzY2FsZSA9ICggKi4gKVxubGV0IHNxdWFyZSB4ID0geCAqLiB4XG5cbm1vZHVsZSBQYXJ0cyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZnJhY3Rpb25hbCA6IHQgLT4gZmxvYXRcbiAgdmFsIGludGVncmFsIDogdCAtPiBmbG9hdFxuICB2YWwgbW9kZiA6IGZsb2F0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCAqIGZsb2F0XG5cbiAgbGV0IGZyYWN0aW9uYWwgdCA9IGZzdCB0XG4gIGxldCBpbnRlZ3JhbCB0ID0gc25kIHRcbiAgbGV0IG1vZGYgPSBtb2RmXG5lbmRcblxubGV0IG1vZGYgPSBQYXJ0cy5tb2RmXG5sZXQgcm91bmRfZG93biA9IGZsb29yXG5sZXQgcm91bmRfdXAgPSBjZWlsXG5sZXQgcm91bmRfdG93YXJkc196ZXJvIHQgPSBpZiB0ID49IDAuIHRoZW4gcm91bmRfZG93biB0IGVsc2Ugcm91bmRfdXAgdFxuXG4oKiBzZWUgdGhlIGNvbW1lbnQgYWJvdmUgW3JvdW5kX25lYXJlc3RfbGJdIGFuZCBbcm91bmRfbmVhcmVzdF91Yl0gZm9yIGFuIGV4cGxhbmF0aW9uICopXG5sZXRbQG9jYW1sLmlubGluZV0gcm91bmRfbmVhcmVzdF9pbmxpbmUgdCA9XG4gIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiICYmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gZmxvb3IgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gIGVsc2UgdCArLiAwLlxuOztcblxubGV0IHJvdW5kX25lYXJlc3QgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdFxuXG5sZXQgcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gdCA9XG4gIGlmIHQgPD0gcm91bmRfbmVhcmVzdF9sYiB8fCB0ID49IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiB0ICsuIDAuXG4gIGVsc2UgKFxuICAgIGxldCBmbG9vciA9IGZsb29yIHQgaW5cbiAgICAoKiBbY2VpbF9vcl9zdWNjID0gaWYgdCBpcyBhbiBpbnRlZ2VyIHRoZW4gdCArLiAxLiBlbHNlIGNlaWwgdF0uICBGYXN0ZXIgdGhhbiBbY2VpbF0uICopXG4gICAgbGV0IGNlaWxfb3Jfc3VjYyA9IGZsb29yICsuIDEuIGluXG4gICAgbGV0IGRpZmZfZmxvb3IgPSB0IC0uIGZsb29yIGluXG4gICAgbGV0IGRpZmZfY2VpbCA9IGNlaWxfb3Jfc3VjYyAtLiB0IGluXG4gICAgaWYgZGlmZl9mbG9vciA8IGRpZmZfY2VpbFxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGlmIGRpZmZfZmxvb3IgPiBkaWZmX2NlaWxcbiAgICB0aGVuIGNlaWxfb3Jfc3VjY1xuICAgIGVsc2UgaWYgKCogZXhhY3QgdGllLCBwaWNrIHRoZSBldmVuICopXG4gICAgICBtb2RfZmxvYXQgZmxvb3IgMi4gPSAwLlxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGNlaWxfb3Jfc3VjYylcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5sZXQgaW50NjNfcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xuXG5sZXQgaW50NjNfcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4biB0MCA9XG4gIGxldCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0MCBpblxuICBpZiB0ID4gMC5cbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChib3ggdDApXG4gICAgICAgICgpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKGJveCB0MClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gZiA9IEludDYzLm9mX2ludCAoaXJvdW5kX25lYXJlc3RfZXhuIGYpXG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICB8IFczMiAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuOztcblxubGV0IHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgdFxuICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gdFxuICB8IGBVcCAtPiByb3VuZF91cCB0XG4gIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIHRcbjs7XG5cbm1vZHVsZSBDbGFzcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW5maW5pdGVcbiAgICB8IE5hblxuICAgIHwgTm9ybWFsXG4gICAgfCBTdWJub3JtYWxcbiAgICB8IFplcm9cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEluZmluaXRlOyBOYW47IE5vcm1hbDsgU3Vibm9ybWFsOyBaZXJvIF0gOiB0IGxpc3QpXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwN18gPSBcImZsb2F0Lm1sLkNsYXNzLnRcIiBpblxuICAgICBmdW5jdGlvblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSAtPiBJbmZpbml0ZVxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIC0+IE5hblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIC0+IE5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIC0+IFN1Ym5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA4XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSA6OiBfKSBhcyBzZXhwX18wMDhfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgOjogXykgYXMgc2V4cF9fMDA4XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA4XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwOF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA2X1xuICAgICB8IHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5maW5pdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5maW5pdGVcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgIHwgTm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5vcm1hbFwiXG4gICAgICB8IFN1Ym5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdWJub3JtYWxcIlxuICAgICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiSW5maW5pdGVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJTdWJub3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmVuZFxuXG5sZXQgY2xhc3NpZnkgdCA9XG4gIGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICB8IEZQX25vcm1hbCAtPiBDLk5vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbCAtPiBDLlN1Ym5vcm1hbFxuICB8IEZQX3plcm8gLT4gQy5aZXJvXG4gIHwgRlBfaW5maW5pdGUgLT4gQy5JbmZpbml0ZVxuICB8IEZQX25hbiAtPiBDLk5hblxuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyA/KGRlbGltaXRlciA9ICdfJykgPyhzdHJpcF96ZXJvID0gZmFsc2UpIHN0cmluZyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0cmluZyB+b246Jy4nIHdpdGhcbiAgfCBOb25lIC0+IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIHN0cmluZyB+ZGVsaW1pdGVyXG4gIHwgU29tZSAobGVmdCwgcmlnaHQpIC0+XG4gICAgbGV0IGxlZnQgPSBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBsZWZ0IH5kZWxpbWl0ZXIgaW5cbiAgICBsZXQgcmlnaHQgPVxuICAgICAgaWYgc3RyaXBfemVybyB0aGVuIFN0cmluZy5yc3RyaXAgcmlnaHQgfmRyb3A6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnMCcpIGVsc2UgcmlnaHRcbiAgICBpblxuICAgIChtYXRjaCByaWdodCB3aXRoXG4gICAgIHwgXCJcIiAtPiBsZWZ0XG4gICAgIHwgXyAtPiBsZWZ0IF4gXCIuXCIgXiByaWdodClcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtID9kZWxpbWl0ZXIgPyhkZWNpbWFscyA9IDMpID9zdHJpcF96ZXJvID8oZXhwbGljaXRfcGx1cyA9IGZhbHNlKSBmID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBkZWNpbWFscyAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwidG9fc3RyaW5nX2h1bTogaW52YWxpZCBhcmd1bWVudCB+ZGVjaW1hbHM9JWRcIiBkZWNpbWFscyAoKTtcbiAgbWF0Y2ggY2xhc3NpZnkgZiB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgZiA+IDAuIHRoZW4gXCJpbmZcIiBlbHNlIFwiLWluZlwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuXCJcbiAgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IHMgPVxuICAgICAgaWYgZXhwbGljaXRfcGx1cyB0aGVuIHNwcmludGYgXCIlKy4qZlwiIGRlY2ltYWxzIGYgZWxzZSBzcHJpbnRmIFwiJS4qZlwiIGRlY2ltYWxzIGZcbiAgICBpblxuICAgIGluc2VydF91bmRlcnNjb3JlcyBzID9kZWxpbWl0ZXIgP3N0cmlwX3plcm9cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGxldCBzZXhwID0gc2V4cF9vZl90IHQgaW5cbiAgbWF0Y2ggIVNleHAub2ZfZmxvYXRfc3R5bGUgd2l0aFxuICB8IGBOb191bmRlcnNjb3JlcyAtPiBzZXhwXG4gIHwgYFVuZGVyc2NvcmVzIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IExpc3QgXyAtPlxuICAgICAgIHJhaXNlX3NcbiAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgIFwiW3NleHBfb2ZfZmxvYXRdIHByb2R1Y2VkIHN0cmFuZ2Ugc2V4cFwiXG4gICAgICAgICAgICBbIFwic2V4cFwiLCBTZXhwLnNleHBfb2ZfdCBzZXhwIF0pXG4gICAgIHwgQXRvbSBzdHJpbmcgLT5cbiAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgc3RyaW5nICdFJyB0aGVuIHNleHAgZWxzZSBBdG9tIChpbnNlcnRfdW5kZXJzY29yZXMgc3RyaW5nKSlcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgPyhwcmVmaXggPSBcIlwiKSB+a2lsbyB+bWVnYSB+Z2lnYSB+dGVyYSA/cGV0YSAoKSA9XG4gICgqIFJvdW5kIGEgcmF0aW8gdG93YXJkIHRoZSBuZWFyZXN0IGludGVnZXIsIHJlc29sdmluZyB0aWVzIHRvd2FyZCB0aGUgbmVhcmVzdCBldmVuXG4gICAgIG51bWJlci4gIEZvciBzYW5lIGlucHV0cyAoaW4gcGFydGljdWxhciwgd2hlbiBbZGVub21pbmF0b3JdIGlzIGFuIGludGVnZXIgYW5kXG4gICAgIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0pIHRoaXMgc2hvdWxkIGJlIGFjY3VyYXRlLiAgT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IG1pZ2h0IGJlIGFcbiAgICAgbGl0dGxlIGJpdCBvZmYsIGJ1dCB3ZSBkb24ndCByZWFsbHkgdXNlIHRoYXQgY2FzZS4gKilcbiAgbGV0IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBrID0gZmxvb3IgKG51bWVyYXRvciAvLiBkZW5vbWluYXRvcikgaW5cbiAgICAoKiBpZiBbYWJzIGsgPCAyZTUzXSwgdGhlbiBib3RoIFtrXSBhbmQgW2sgKy4gMS5dIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBhbmQgaW5cbiAgICAgICBwYXJ0aWN1bGFyIFtrICsuIDEuID4ga10uICBJZiBbZGVub21pbmF0b3JdIGlzIGFsc28gYW4gaW50ZWdlciwgYW5kXG4gICAgICAgW2FicyAoZGVub21pbmF0b3IgKi4gKGsgKy4gMSkpIDwgMmU1M10gKGFuZCBpbiBzb21lIG90aGVyIGNhc2VzLCB0b28pLCB0aGVuIFtsb3dlcl1cbiAgICAgICBhbmQgW2hpZ2hlcl0gYXJlIGFjdHVhbGx5IGJvdGggYWNjdXJhdGUuICBTaW5jZSAocm91Z2hseSlcbiAgICAgICBbbnVtZXJhdG9yID0gZGVub21pbmF0b3IgKi4ga10gdGhlbiBmb3IgW2FicyBudW1lcmF0b3IgPCAyZTUyXSB3ZSBzaG91bGQgYmVcbiAgICAgICBmaW5lLiAqKVxuICAgIGxldCBsb3dlciA9IGRlbm9taW5hdG9yICouIGsgaW5cbiAgICBsZXQgaGlnaGVyID0gZGVub21pbmF0b3IgKi4gKGsgKy4gMS4pIGluXG4gICAgKCogU3VidHJhY3RpbmcgbnVtYmVycyB3aXRoaW4gYSBmYWN0b3Igb2YgdHdvIGZyb20gZWFjaCBvdGhlciBpcyBhY2N1cmF0ZS5cbiAgICAgICBTbyBlaXRoZXIgdGhlIHR3byBzdWJ0cmFjdGlvbnMgYmVsb3cgYXJlIGFjY3VyYXRlLCBvciBrID0gMCwgb3IgayA9IC0xLlxuICAgICAgIEluIGNhc2Ugb2YgYSB0aWUsIHJvdW5kIHRvIGV2ZW4uICopXG4gICAgbGV0IGRpZmZfcmlnaHQgPSBoaWdoZXIgLS4gbnVtZXJhdG9yIGluXG4gICAgbGV0IGRpZmZfbGVmdCA9IG51bWVyYXRvciAtLiBsb3dlciBpblxuICAgIGxldCBrID0gaXJvdW5kX25lYXJlc3RfZXhuIGsgaW5cbiAgICBpZiBkaWZmX3JpZ2h0IDwgZGlmZl9sZWZ0XG4gICAgdGhlbiBrICsgMVxuICAgIGVsc2UgaWYgZGlmZl9yaWdodCA+IGRpZmZfbGVmdFxuICAgIHRoZW4ga1xuICAgIGVsc2UgaWYgKCogYSB0aWUgKilcbiAgICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGsgbW9kIDIpIDBcbiAgICB0aGVuIGtcbiAgICBlbHNlIGsgKyAxXG4gIGluXG4gIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIHQgPCAwLjAgdGhlbiBcIi1pbmYgIFwiIGVsc2UgXCJpbmYgIFwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuICBcIlxuICB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgZ28gdCA9XG4gICAgICBsZXQgY29udl9vbmUgdCA9XG4gICAgICAgIGFzc2VydCAoMC4gPD0gdCAmJiB0IDwgOTk5Ljk1KTtcbiAgICAgICAgbGV0IHggPSBwcmVmaXggXiBmb3JtYXRfZmxvYXQgXCIlLjFmXCIgdCBpblxuICAgICAgICAoKiBGaXggdGhlIFwiLjBcIiBzdWZmaXggKilcbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCB4IH5zdWZmaXg6XCIuMFwiXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB4ID0gQnl0ZXMub2Zfc3RyaW5nIHggaW5cbiAgICAgICAgICBsZXQgbiA9IEJ5dGVzLmxlbmd0aCB4IGluXG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAxKSAnICc7XG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAyKSAnICc7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp4KVxuICAgICAgICBlbHNlIHhcbiAgICAgIGluXG4gICAgICBsZXQgY29udiBtYWcgdCBkZW5vbWluYXRvciA9XG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgKGRlbm9taW5hdG9yID0gMTAwLiAmJiB0ID49IDk5OS45NSlcbiAgICAgICAgICB8fCAoZGVub21pbmF0b3IgPj0gMTAwXzAwMC4gJiYgdCA+PSByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Ljk5OV81KSkpO1xuICAgICAgICBhc3NlcnQgKHQgPCByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Xzk5OS41KSk7XG4gICAgICAgIGxldCBpLCBkID1cbiAgICAgICAgICBsZXQgayA9IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvcjp0IH5kZW5vbWluYXRvciBpblxuICAgICAgICAgICgqIFttb2RdIGlzIG9rYXkgaGVyZSBiZWNhdXNlIHdlIGtub3cgaSA+PSAwLiAqKVxuICAgICAgICAgIGsgLyAxMCwgayBtb2QgMTBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgICAgICBhc3NlcnQgKDAgPD0gaSAmJiBpIDwgMTAwMCk7XG4gICAgICAgIGFzc2VydCAoMCA8PSBkICYmIGQgPCAxMCk7XG4gICAgICAgIGlmIGQgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIiVzJWQlcyBcIiBwcmVmaXggaSBtYWdcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlZCVzJWRcIiBwcmVmaXggaSBtYWcgZFxuICAgICAgaW5cbiAgICAgICgqIFdoaWxlIHRoZSBzdGFuZGFyZCBtZXRyaWMgcHJlZml4ZXMgKGUuZy4gY2FwaXRhbCBcIk1cIiByYXRoZXIgdGhhbiBcIm1cIiwgWzFdKSBhcmVcbiAgICAgICAgIG5vbWluYWxseSBtb3JlIGNvcnJlY3QsIHRoaXMgaGluZGVycyByZWFkYWJpbGl0eSBpbiBvdXIgY2FzZS4gIEUuZy4sIDEwRzYgYW5kXG4gICAgICAgICAxMDY2IGxvb2sgdG9vIHNpbWlsYXIuICBUaGF0J3MgYW4gZXh0cmVtZSBleGFtcGxlLCBidXQgaW4gZ2VuZXJhbCBrLG0sZyx0LHBcbiAgICAgICAgIHByb2JhYmx5IHN0YW5kIG91dCBiZXR0ZXIgdGhhbiBLLE0sRyxULFAgd2hlbiBpbnRlcnNwZXJzZWQgd2l0aCBkaWdpdHMuXG5cbiAgICAgICAgIFsxXSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldHJpY19wcmVmaXggKilcbiAgICAgICgqIFRoZSB0cmljayBoZXJlIGlzIHRoYXQ6XG4gICAgICAgICAtIHRoZSBmaXJzdCBib3VuZGFyeSAoOTk5Ljk1KSBhcyBhIGZsb2F0IGlzIHNsaWdodGx5IG92ZXItcmVwcmVzZW50ZWQgKHNvIGl0IGlzXG4gICAgICAgICAgIGJldHRlciBhcHByb3hpbWF0ZWQgYXMgXCIxa1wiIHRoYW4gYXMgXCI5OTkuOVwiKSxcbiAgICAgICAgIC0gdGhlIG90aGVyIGJvdW5kYXJpZXMgYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGJlY2F1c2UgdGhleSBhcmUgaW50ZWdlcnMuXG4gICAgICAgICAgIFRoYXQncyB3aHkgdGhlIHN0cmljdCBlcXVhbGl0aWVzIGJlbG93IGRvIGV4YWN0bHkgd2hhdCB3ZSB3YW50LiAqKVxuICAgICAgaWYgdCA8IDk5OS45NUUwXG4gICAgICB0aGVuIGNvbnZfb25lIHRcbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUzXG4gICAgICB0aGVuIGNvbnYga2lsbyB0IDEwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU2XG4gICAgICB0aGVuIGNvbnYgbWVnYSB0IDEwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFOVxuICAgICAgdGhlbiBjb252IGdpZ2EgdCAxMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUxMlxuICAgICAgdGhlbiBjb252IHRlcmEgdCAxMDBfMDAwXzAwMF8wMDAuXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcGV0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHRcbiAgICAgICAgfCBTb21lIHBldGEgLT5cbiAgICAgICAgICBpZiB0IDwgOTk5Ljk1RTE1XG4gICAgICAgICAgdGhlbiBjb252IHBldGEgdCAxMDBfMDAwXzAwMF8wMDBfMDAwLlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0KVxuICAgIGluXG4gICAgaWYgdCA+PSAwLiB0aGVuIGdvIHQgZWxzZSBcIi1cIiBeIGdvIH4tLnRcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmcgdCA9XG4gIHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCB+a2lsbzpcImtcIiB+bWVnYTpcIm1cIiB+Z2lnYTpcImdcIiB+dGVyYTpcInRcIiB+cGV0YTpcInBcIiAoKVxuOztcblxuKCogUGVyZm9ybWFuY2Ugbm90ZTogSW5pdGlhbGl6aW5nIHRoZSBhY2N1bXVsYXRvciB0byAxIHJlc3VsdHMgaW4gb25lIGV4dHJhXG4gICBtdWx0aXBseTsgZS5nLiwgdG8gY29tcHV0ZSB4ICoqIDQsIHdlIGluIHByaW5jaXBsZSBvbmx5IG5lZWQgMiBtdWx0aXBsaWVzLFxuICAgYnV0IHRoaXMgZnVuY3Rpb24gd2lsbCBoYXZlIDMgbXVsdGlwbGllcy4gIEhvd2V2ZXIsIGF0dGVtcHRzIHRvIGF2b2lkIHRoaXNcbiAgIChsaWtlIGRlY3JlbWVudGluZyBuIGFuZCBpbml0aWFsaXppbmcgYWNjdW0gdG8gYmUgeCwgb3IgaGFuZGxpbmcgc21hbGxcbiAgIGV4cG9uZW50cyBhcyBhIHNwZWNpYWwgY2FzZSkgaGF2ZSBub3QgeWllbGRlZCBhbnl0aGluZyB0aGF0IGlzIGEgbmV0XG4gICBpbXByb3ZlbWVudC5cbiopXG5sZXQgaW50X3BvdyB4IG4gPVxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gMS5cbiAgZWxzZSAoXG4gICAgKCogVXNpbmcgW3ggKy4gKC0wLildIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBjb252aW5jZXMgdGhlIGNvbXBpbGVyIHRvIGF2b2lkIGEgY2VydGFpblxuICAgICAgIGJveGluZyAodGhhdCB3b3VsZCByZXN1bHQgaW4gYWxsb2NhdGlvbiBpbiBlYWNoIGl0ZXJhdGlvbikuICBTb29uLCB0aGUgY29tcGlsZXJcbiAgICAgICBzaG91bGRuJ3QgbmVlZCB0aGlzIFwiaGludFwiIHRvIGF2b2lkIHRoZSBib3hpbmcuICBUaGUgcmVhc29uIHdlIGFkZCAtMCByYXRoZXIgdGhhbiAwXG4gICAgICAgaXMgdGhhdCBbeCArLiAoLTAuKV0gaXMgYXBwYXJlbnRseSBhbHdheXMgdGhlIHNhbWUgYXMgW3hdLCB3aGVyZWFzIFt4ICsuIDAuXSBpc1xuICAgICAgIG5vdCwgaW4gdGhhdCBpdCBzZW5kcyBbLTAuXSB0byBbMC5dLiAgVGhpcyBtYWtlcyBhIGRpZmZlcmVuY2UgYmVjYXVzZSB3ZSB3YW50XG4gICAgICAgW2ludF9wb3cgKC0wLikgKC0xKV0gdG8gcmV0dXJuIG5lZ19pbmZpbml0eSBqdXN0IGxpa2UgWy0wLiAqKiAtMS5dIHdvdWxkLiAgKilcbiAgICBsZXQgeCA9IHJlZiAoeCArLiAtMC4pIGluXG4gICAgbGV0IG4gPSByZWYgbiBpblxuICAgIGxldCBhY2N1bSA9IHJlZiAxLiBpblxuICAgIGlmICFuIDwgMFxuICAgIHRoZW4gKFxuICAgICAgKCogeCAqKiBuID0gKDEveCkgKiogLW4gKilcbiAgICAgIHggOj0gMS4gLy4gIXg7XG4gICAgICBuIDo9IH4tICghbik7XG4gICAgICBpZiAhbiA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBuIG11c3QgaGF2ZSBiZWVuIG1pbl9pbnQsIHNvIGl0IGlzIG5vdyBzbyBiaWcgdGhhdCBpdCBoYXMgd3JhcHBlZCBhcm91bmQuXG4gICAgICAgICAgIFdlIGRlY3JlbWVudCBpdCBzbyB0aGF0IGl0IGxvb2tzIHBvc2l0aXZlIGFnYWluLCBidXQgYWNjb3JkaW5nbHkgaGF2ZVxuICAgICAgICAgICB0byBwdXQgYW4gZXh0cmEgZmFjdG9yIG9mIHggaW4gdGhlIGFjY3VtdWxhdG9yLlxuICAgICAgICAqKVxuICAgICAgICBhY2N1bSA6PSAheDtcbiAgICAgICAgZGVjciBuKSk7XG4gICAgKCogTGV0dGluZyBbYV0gZGVub3RlICh0aGUgb3JpZ2luYWwgdmFsdWUgb2YpIFt4ICoqIG5dLCB3ZSBtYWludGFpblxuICAgICAgIHRoZSBpbnZhcmlhbnQgdGhhdCBbKHggKiogbikgKi4gYWNjdW0gPSBhXS4gKilcbiAgICB3aGlsZSAhbiA+IDEgZG9cbiAgICAgIGlmICFuIGxhbmQgMSA8PiAwIHRoZW4gYWNjdW0gOj0gIXggKi4gIWFjY3VtO1xuICAgICAgeCA6PSAheCAqLiAheDtcbiAgICAgIG4gOj0gIW4gbHNyIDFcbiAgICBkb25lO1xuICAgICgqIG4gaXMgbmVjZXNzYXJpbHkgMSBhdCB0aGlzIHBvaW50LCBzbyB0aGVyZSBpcyBvbmUgYWRkaXRpb25hbFxuICAgICAgIG11bHRpcGxpY2F0aW9uIGJ5IHguICopXG4gICAgIXggKi4gIWFjY3VtKVxuOztcblxubGV0IHJvdW5kX2dlbiB4IH5ob3cgPVxuICBpZiB4ID0gMC5cbiAgdGhlbiAwLlxuICBlbHNlIGlmIG5vdCAoaXNfZmluaXRlIHgpXG4gIHRoZW4geFxuICBlbHNlIChcbiAgICAoKiBTaWduaWZpY2FudCBkaWdpdHMgYW5kIGRlY2ltYWwgZGlnaXRzLiAqKVxuICAgIGxldCBzZCwgZGQgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHNpZ25pZmljYW50X2RpZ2l0cyBzZCAtPlxuICAgICAgICBsZXQgZGQgPSBzZCAtIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICAgIHwgYGRlY2ltYWxfZGlnaXRzIGRkIC0+XG4gICAgICAgIGxldCBzZCA9IGRkICsgdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgIGluXG4gICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIHNkIDwgMFxuICAgIHRoZW4gMC5cbiAgICBlbHNlIGlmIHNkID49IDE3XG4gICAgdGhlbiB4XG4gICAgZWxzZSAoXG4gICAgICAoKiBDaG9vc2UgdGhlIG9yZGVyIHRoYXQgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQuIFNtYWxsIHBvc2l0aXZlXG4gICAgICAgICBpbnRlZ2VycyBhcmUsIGJ1dCB0aGVpciBpbnZlcnNlcyBpbiBtb3N0IGNhc2VzIGFyZSBub3QuICopXG4gICAgICBsZXQgYWJzX2RkID0gSW50LmFicyBkZCBpblxuICAgICAgaWYgYWJzX2RkID4gMjIgfHwgc2QgPj0gMTZcbiAgICAgICgqIDEwKioyMiBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgYnV0IDEwKioyMyBpcyBub3QsIHNvIHVzZSB0aGUgc2xvd1xuICAgICAgICAgcGF0aC4gIFNpbWlsYXJseSwgaWYgd2UgbmVlZCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaW4gdGhlIHJlc3VsdCwgdGhlbiB0aGUgaW50ZWdlclxuICAgICAgICAgW3JvdW5kX25lYXJlc3QgKHggPG9wPiBvcmRlcildIG1pZ2h0IG5vdCBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgc2luY2VcbiAgICAgICAgIGZvciBzb21lIHJhbmdlcyB3ZSBvbmx5IGhhdmUgMTUgZGlnaXRzIG9mIHByZWNpc2lvbiBndWFyYW50ZWVkLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHdlIGFyZSBzdGlsbCByb3VuZGluZyB0d2ljZSBoZXJlOlxuXG4gICAgICAgICAxKSBmaXJzdCB0aW1lIHdoZW4gcm91bmRpbmcgW3ggKi4gb3JkZXJdIG9yIFt4IC8uIG9yZGVyXSB0byB0aGUgbmVhcmVzdCBmbG9hdFxuICAgICAgICAgKGp1c3QgdGhlIG5vcm1hbCB3YXkgZmxvYXRpbmctcG9pbnQgbXVsdGlwbGljYXRpb24gb3IgZGl2aXNpb24gd29ya3MpLFxuXG4gICAgICAgICAyKSBzZWNvbmQgdGltZSB3aGVuIGFwcGx5aW5nIFtyb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbl0gdG8gdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIGFib3ZlIG9wZXJhdGlvblxuXG4gICAgICAgICBTbyBmb3IgYXJndW1lbnRzIHdpdGhpbiBhbiB1bHAgZnJvbSBhIHRpZSB3ZSBtaWdodCBzdGlsbCBwcm9kdWNlIGFuIG9mZi1ieS1vbmVcbiAgICAgICAgIHJlc3VsdC4gKilcbiAgICAgIHRoZW4gb2Zfc3RyaW5nIChzcHJpbnRmIFwiJS4qZ1wiIHNkIHgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG9yZGVyID0gaW50X3BvdyAxMC4gYWJzX2RkIGluXG4gICAgICAgIGlmIGRkID49IDBcbiAgICAgICAgdGhlbiByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAqLiBvcmRlcikgLy4gb3JkZXJcbiAgICAgICAgZWxzZSByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAvLiBvcmRlcikgKi4gb3JkZXIpKSlcbjs7XG5cbmxldCByb3VuZF9zaWduaWZpY2FudCB4IH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBzaWduaWZpY2FudF9kaWdpdHMgMFxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LnJvdW5kX3NpZ25pZmljYW50OiBpbnZhbGlkIGFyZ3VtZW50IHNpZ25pZmljYW50X2RpZ2l0czolZFwiXG4gICAgICBzaWduaWZpY2FudF9kaWdpdHNcbiAgICAgICgpXG4gIGVsc2Ugcm91bmRfZ2VuIHggfmhvdzooYHNpZ25pZmljYW50X2RpZ2l0cyBzaWduaWZpY2FudF9kaWdpdHMpXG47O1xuXG5sZXQgcm91bmRfZGVjaW1hbCB4IH5kZWNpbWFsX2RpZ2l0cyA9IHJvdW5kX2dlbiB4IH5ob3c6KGBkZWNpbWFsX2RpZ2l0cyBkZWNpbWFsX2RpZ2l0cylcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgKCogY2xhbXBfdW5jaGVja2VkIGlzIGluIGZsb2F0MC5tbCAqKVxuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGlmIG1pbiA8PSBtYXhcbiAgdGhlbiBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuOztcblxubGV0ICggKyApID0gKCArLiApXG5sZXQgKCAtICkgPSAoIC0uIClcbmxldCAoICogKSA9ICggKi4gKVxubGV0ICggKiogKSA9ICggKiogKVxubGV0ICggLyApID0gKCAvLiApXG5sZXQgKCAlICkgPSAoICUuIClcbmxldCAoIH4tICkgPSAoIH4tLiApXG5cbmxldCBzaWduX2V4biB0IDogU2lnbi50ID1cbiAgaWYgdCA+IDAuXG4gIHRoZW4gUG9zXG4gIGVsc2UgaWYgdCA8IDAuXG4gIHRoZW4gTmVnXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gWmVyb1xuICBlbHNlIEVycm9yLnJhaXNlX3MgKFNleHAubWVzc2FnZSBcIkZsb2F0LnNpZ25fZXhuIG9mIE5BTlwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBzaWduX29yX25hbiB0IDogU2lnbl9vcl9uYW4udCA9XG4gIGlmIHQgPiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPCAwLiB0aGVuIE5lZyBlbHNlIGlmIHQgPSAwLiB0aGVuIFplcm8gZWxzZSBOYW5cbjs7XG5cbmxldCBpZWVlX25lZ2F0aXZlIHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgUG9seS4oYml0cyA8IFN0ZGxpYi5JbnQ2NC56ZXJvKVxuOztcblxubGV0IGV4cG9uZW50X2JpdHMgPSAxMVxubGV0IG1hbnRpc3NhX2JpdHMgPSA1MlxubGV0IGV4cG9uZW50X21hc2s2NCA9IEludDY0LihzaGlmdF9sZWZ0IG9uZSBleHBvbmVudF9iaXRzIC0gb25lKVxubGV0IGV4cG9uZW50X21hc2sgPSBJbnQ2NC50b19pbnRfZXhuIGV4cG9uZW50X21hc2s2NFxubGV0IG1hbnRpc3NhX21hc2sgPSBJbnQ2My4oc2hpZnRfbGVmdCBvbmUgbWFudGlzc2FfYml0cyAtIG9uZSlcbmxldCBtYW50aXNzYV9tYXNrNjQgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYV9tYXNrXG5cbmxldCBpZWVlX2V4cG9uZW50IHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgSW50NjQuKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYml0cyBtYW50aXNzYV9iaXRzKSBleHBvbmVudF9tYXNrNjQpXG4gIHw+IFN0ZGxpYi5JbnQ2NC50b19pbnRcbjs7XG5cbmxldCBpZWVlX21hbnRpc3NhIHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgKCogVGhpcyBpcyBzYWZlIGJlY2F1c2UgbWFudGlzc2FfbWFzazY0IDwgSW50NjMubWF4X3ZhbHVlICopXG4gIChJbnQ2My5vZl9pbnQ2NF90cnVuYykgU3RkbGliLkludDY0Lihsb2dhbmQgYml0cyBtYW50aXNzYV9tYXNrNjQpXG47O1xuXG5sZXQgY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgaWYgSW50LihiaXRfYW5kIGV4cG9uZW50IGV4cG9uZW50X21hc2sgPD4gZXhwb25lbnQpXG4gIHRoZW4gZmFpbHdpdGhmIFwiZXhwb25lbnQgJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBleHBvbmVudCBleHBvbmVudF9tYXNrICgpXG4gIGVsc2UgaWYgSW50NjMuKGJpdF9hbmQgbWFudGlzc2EgbWFudGlzc2FfbWFzayA8PiBtYW50aXNzYSlcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCJtYW50aXNzYSAlcyBvdXQgb2YgcmFuZ2UgWzAsICVzXVwiXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhKVxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYV9tYXNrKVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHNpZ25fYml0cyA9IGlmIG5lZ2F0aXZlIHRoZW4gU3RkbGliLkludDY0Lm1pbl9pbnQgZWxzZSBTdGRsaWIuSW50NjQuemVybyBpblxuICAgIGxldCBleHB0X2JpdHMgPVxuICAgICAgU3RkbGliLkludDY0LnNoaWZ0X2xlZnQgKFN0ZGxpYi5JbnQ2NC5vZl9pbnQgZXhwb25lbnQpIG1hbnRpc3NhX2JpdHNcbiAgICBpblxuICAgIGxldCBtYW50X2JpdHMgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYSBpblxuICAgIGxldCBiaXRzID0gU3RkbGliLkludDY0Lihsb2dvciBzaWduX2JpdHMgKGxvZ29yIGV4cHRfYml0cyBtYW50X2JpdHMpKSBpblxuICAgIFN0ZGxpYi5JbnQ2NC5mbG9hdF9vZl9iaXRzIGJpdHMpXG47O1xuXG5sZXQgY3JlYXRlX2llZWUgfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSlcbjs7XG5cbm1vZHVsZSBUZXJzZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRvX3N0cmluZyB4ID0gUHJpbnRmLnNwcmludGYgXCIlLjhHXCIgeFxuICBsZXQgc2V4cF9vZl90IHggPSBTZXhwLkF0b20gKHRvX3N0cmluZyB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9zdHJpbmcgeFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogVGhlc2UgYXJlIHBhcnRseSBoZXJlIGFzIGEgcGVyZm9ybWFuY2UgaGFjayB0byBhdm9pZCBzb21lIGJveGluZyB3ZSdyZSBnZXR0aW5nIHdpdGhcbiAgIHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXS4gIFRoZXkgYWxzbyBtYWtlIFtGbG9hdC5pc19uZWdhdGl2ZSBuYW5dIGFuZFxuICAgW0Zsb2F0LmlzX25vbl9wb3NpdGl2ZSBuYW5dIHJldHVybiBbZmFsc2VdOyB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10gcmV0dXJuXG4gICBbdHJ1ZV0uICopXG5sZXQgaXNfcG9zaXRpdmUgdCA9IHQgPiAwLlxubGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gdCA+PSAwLlxubGV0IGlzX25lZ2F0aXZlIHQgPSB0IDwgMC5cbmxldCBpc19ub25fcG9zaXRpdmUgdCA9IHQgPD0gMC5cblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRmxvYXRcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCAlICkgPSAoICUgKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludCA9IG9mX2ludFxuICBsZXQgb2ZfZmxvYXQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgT19kb3QgPSBzdHJ1Y3RcbiAgbGV0ICggKi4gKSA9ICggKiApXG4gIGxldCAoICsuICkgPSAoICsgKVxuICBsZXQgKCAtLiApID0gKCAtIClcbiAgbGV0ICggLy4gKSA9ICggLyApXG4gIGxldCAoICUuICkgPSAoICUgKVxuICBsZXQgKCB+LS4gKSA9ICggfi0gKVxuICBsZXQgKCAqKi4gKSA9ICggKiogKVxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBib3ggPSBib3hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCA9IGNsYW1wX3VuY2hlY2tlZFxuICBsZXQgbG93ZXJfYm91bmRfZm9yX2ludCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgPSB1cHBlcl9ib3VuZF9mb3JfaW50XG4gIGxldCBzcGVjaWFsaXplZF9oYXNoID0gaGFzaF9mbG9hdFxuICBsZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgbGV0IGlyb3VuZF9uZWFyZXN0X2V4bl82NCA9IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuKCogVGhlc2UgZnVuY3Rpb25zIHNwZWNpZmljYWxseSByZXBsYWNlIGRlZmF1bHRzIGluIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5cblxuICAgVGhlIGRlc2lyZWQgYmVoYXZpb3IgaGVyZSBpcyB0byBwcm9wYWdhdGUgYSBuYW4gaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbi4gQmVjYXVzZSB0aGVcbiAgIGZpcnN0IGNvbXBhcmlzb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4sIGl0IHN1ZmZpY2VzIHRvXG4gICBjaGVjayBpZiB4IGlzIG5hbi4gVGhlbiwgd2hlbiB4IGlzIG5hbiBvciBib3RoIHggYW5kIHkgYXJlIG5hbiwgd2UgcmV0dXJuIHggPSBuYW47IGFuZFxuICAgd2hlbiB5IGlzIG5hbiBidXQgbm90IHgsIHdlIHJldHVybiB5ID0gbmFuLlxuXG4gICBUaGVyZSBhcmUgdmFyaW91cyB3YXlzIHRvIGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMuICBUaGUgYmVuY2htYXJrIGJlbG93IHNob3dzIGEgZmV3XG4gICBkaWZmZXJlbnQgdmVyc2lvbnMuICBUaGlzIGJlbmNobWFyayB3YXMgcnVuIG92ZXIgYW4gYXJyYXkgb2YgcmFuZG9tIGZsb2F0cyAobm9uZSBvZlxuICAgd2hpY2ggYXJlIG5hbikuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjQydXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAyLjAydXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjg4dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcblxuICAgVGhlIGJlbmNobWFyayBiZWxvdyB3YXMgcnVuIHdoZW4geCA+IHkgaXMgYWx3YXlzIHRydWUgKGFnYWluLCBubyBuYW4gdmFsdWVzKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuODN1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuOTd1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuNTZ1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuKilcbmxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxubGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQnVmZmVyX2ludGZcbmluY2x1ZGUgU3RkbGliLkJ1ZmZlclxuXG5sZXQgY29udGVudHNfYnl0ZXMgPSB0b19ieXRlc1xubGV0IGFkZF9zdWJzdHJpbmcgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJzdHJpbmcgdCBzIHBvcyBsZW5cbmxldCBhZGRfc3ViYnl0ZXMgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJieXRlcyB0IHMgcG9zIGxlblxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9zdHJpbmcgKGNvbnRlbnRzIHQpXG5cbmxldCBjYW1sX2J1ZmZlcl9sZW5ndGggPVxuICAoU3RkbGliLk9iai5tYWdpYyAoU3RkbGliLkJ1ZmZlci5sZW5ndGggOiB0IC0+IGludCkgOiAodFtAbG9jYWxdKSAtPiBpbnQpXG47O1xuXG5sZXQgY2FtbF9idWZmZXJfYmxpdCA9XG4gIChTdGRsaWIuT2JqLm1hZ2ljXG4gICAgIChTdGRsaWIuQnVmZmVyLmJsaXQgOiBTdGRsaWIuQnVmZmVyLnQgLT4gaW50IC0+IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0KVxuICAgOiAoU3RkbGliLkJ1ZmZlci50W0Bsb2NhbF0pIC0+IGludCAtPiAoQnl0ZXMudFtAbG9jYWxdKSAtPiBpbnQgLT4gaW50IC0+IHVuaXQpXG47O1xuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gY2FtbF9idWZmZXJfbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJ5dGVzLnRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBjYW1sX2J1ZmZlcl9ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuICAgICAgOztcbiAgICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChTdGRsaWIuQnVmZmVyKSAoVG9fYnl0ZXMpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9IFN0ZGxpYi5QcmludGV4Yy5yYXdfYmFja3RyYWNlXG5cbmxldCBlbGlkZSA9IHJlZiBmYWxzZVxubGV0IGVsaWRlZF9tZXNzYWdlID0gXCI8YmFja3RyYWNlIGVsaWRlZCBpbiB0ZXN0PlwiXG5cbmxldCBnZXQgPyhhdF9tb3N0X251bV9mcmFtZXMgPSBJbnQubWF4X3ZhbHVlKSAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5nZXRfY2FsbHN0YWNrIGF0X21vc3RfbnVtX2ZyYW1lc1xuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgaWYgIWVsaWRlIHRoZW4gZWxpZGVkX21lc3NhZ2UgZWxzZSBTdGRsaWIuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgdFxuOztcblxubGV0IHRvX3N0cmluZ19saXN0IHQgPSBTdHJpbmcuc3BsaXRfbGluZXMgKHRvX3N0cmluZyB0KVxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5MaXN0IChMaXN0Lm1hcCAodG9fc3RyaW5nX2xpc3QgdCkgfmY6KGZ1biB4IC0+IFNleHAuQXRvbSB4KSlcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgc2V0X3JlY29yZGluZyA9IFN0ZGxpYi5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG4gIGxldCBhbV9yZWNvcmRpbmcgPSBTdGRsaWIuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuICBsZXQgbW9zdF9yZWNlbnQgKCkgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKClcblxuICBsZXQgbW9zdF9yZWNlbnRfZm9yX2V4biBleG4gPVxuICAgIGlmIEV4bi5pc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4biB0aGVuIFNvbWUgKG1vc3RfcmVjZW50ICgpKSBlbHNlIE5vbmVcbiAgOztcblxuICAoKiBXZSB0dXJuIG9uIGJhY2t0cmFjZXMgYnkgZGVmYXVsdCBpZiBPQ0FNTFJVTlBBUkFNIGRvZXNuJ3QgZXhwbGljaXRseSBtZW50aW9uIHRoZW0uICopXG4gIGxldCBtYXliZV9zZXRfcmVjb3JkaW5nICgpID1cbiAgICBsZXQgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzID1cbiAgICAgIG1hdGNoIFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgeCAtPiBMaXN0LmV4aXN0cyAoU3RyaW5nLnNwbGl0IHggfm9uOicsJykgfmY6KFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcImJcIilcbiAgICBpblxuICAgIGlmIG5vdCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgdGhlbiBzZXRfcmVjb3JkaW5nIHRydWVcbiAgOztcblxuICAoKiB0aGUgY2FsbGVyIHNldCBzb21ldGhpbmcsIHRoZXkgYXJlIHJlc3BvbnNpYmxlICopXG5cbiAgbGV0IHdpdGhfcmVjb3JkaW5nIGIgfmYgPVxuICAgIGxldCBzYXZlZCA9IGFtX3JlY29yZGluZyAoKSBpblxuICAgIHNldF9yZWNvcmRpbmcgYjtcbiAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHNldF9yZWNvcmRpbmcgc2F2ZWQpXG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gRXhuLm1heWJlX3NldF9yZWNvcmRpbmcgKClcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyB0aGUgdG9wbGV2ZWwgb2YgdGhlIEJhc2UgbGlicmFyeTsgaXQncyB3aGF0IHlvdSBnZXQgd2hlbiB5b3Ugd3JpdGVcbiAgICBbb3BlbiBCYXNlXS5cblxuICAgIFRoZSBnb2FsIG9mIEJhc2UgaXMgYm90aCB0byBiZSBhIG1vcmUgY29tcGxldGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCByaWNoZXIgQVBJcyxcbiAgICBhbmQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIGl0cyBkZXNpZ24uIEZvciBpbnN0YW5jZSwgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnlcbiAgICBzb21lIHRoaW5ncyBoYXZlIG1vZHVsZXMgYW5kIG90aGVycyBkb24ndDsgaW4gQmFzZSwgZXZlcnl0aGluZyBpcyBhIG1vZHVsZS5cblxuICAgIEJhc2UgZXh0ZW5kcyBzb21lIG1vZHVsZXMgYW5kIGRhdGEgc3RydWN0dXJlcyBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBsaWtlIFtBcnJheV0sXG4gICAgW0J1ZmZlcl0sIFtCeXRlc10sIFtDaGFyXSwgW0hhc2h0YmxdLCBbSW50MzJdLCBbSW50NjRdLCBbTGF6eV0sIFtMaXN0XSwgW01hcF0sXG4gICAgW05hdGl2ZWludF0sIFtQcmludGZdLCBbUmFuZG9tXSwgW1NldF0sIFtTdHJpbmddLCBbU3lzXSwgYW5kIFtVY2hhcl0uIE9uZSBrZXlcbiAgICBkaWZmZXJlbmNlIGlzIHRoYXQgQmFzZSBkb2Vzbid0IHVzZSBleGNlcHRpb25zIGFzIG11Y2ggYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kXG4gICAgaW5zdGVhZCBtYWtlcyBoZWF2eSB1c2Ugb2YgdGhlIFtSZXN1bHRdIHR5cGUsIGFzIGluOlxuXG4gICAge1sgdHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2IgXX1cblxuICAgIEJhc2UgYWxzbyBhZGRzIGVudGlyZWx5IG5ldyBtb2R1bGVzLCBtb3N0IG5vdGFibHk6XG5cbiAgICAtIFtDb21wYXJhYmxlXSwgW0NvbXBhcmF0b3JdLCBhbmQgW0NvbXBhcmlzb25zXSBpbiBsaWV1IG9mIHBvbHltb3JwaGljIGNvbXBhcmUuXG4gICAgLSBbQ29udGFpbmVyXSwgd2hpY2ggcHJvdmlkZXMgYSBjb25zaXN0ZW50IGludGVyZmFjZSBhY3Jvc3MgY29udGFpbmVyLWxpa2UgZGF0YVxuICAgICAgc3RydWN0dXJlcyAoYXJyYXlzLCBsaXN0cywgc3RyaW5ncykuXG4gICAgLSBbUmVzdWx0XSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0sIHN1cHBvcnRpbmcgdGhlIG9yLWVycm9yIHBhdHRlcm4uXG4qKVxuXG4oKl8gV2UgaGlkZSB0aGlzIGZyb20gdGhlIHdlYiBkb2NzIGJlY2F1c2UgdGhlIGxpbmUgd3JhcHBpbmcgaXMgYmFkLCBtYWtpbmcgaXRcbiAgcHJldHR5IG11Y2ggaW5zY3J1dGFibGUuICopXG4oKiovKiopXG5cbigqIFRoZSBpbnRlbnQgaXMgdG8gc2hhZG93IGFsbCBvZiBJTlJJQSdzIHN0YW5kYXJkIGxpYnJhcnkuICBNb2R1bGVzIGJlbG93IHdvdWxkIGNhdXNlXG4gICBjb21waWxhdGlvbiBlcnJvcnMgd2l0aG91dCBiZWluZyByZW1vdmVkIGZyb20gW1NoYWRvd19zdGRsaWJdIGJlZm9yZSBpbmNsdXNpb24uICopXG5cbmluY2x1ZGUgKFxuICBTaGFkb3dfc3RkbGliIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYWRvd19zdGRsaWJcbiAgZW5kXG4gICgqIE1vZHVsZXMgZGVmaW5lZCBpbiBCYXNlICopXG4gIHdpdGggbW9kdWxlIEFycmF5IDo9IFNoYWRvd19zdGRsaWIuQXJyYXlcbiAgd2l0aCBtb2R1bGUgQXRvbWljIDo9IFNoYWRvd19zdGRsaWIuQXRvbWljXG4gIHdpdGggbW9kdWxlIEJvb2wgOj0gU2hhZG93X3N0ZGxpYi5Cb29sXG4gIHdpdGggbW9kdWxlIEJ1ZmZlciA6PSBTaGFkb3dfc3RkbGliLkJ1ZmZlclxuICB3aXRoIG1vZHVsZSBCeXRlcyA6PSBTaGFkb3dfc3RkbGliLkJ5dGVzXG4gIHdpdGggbW9kdWxlIENoYXIgOj0gU2hhZG93X3N0ZGxpYi5DaGFyXG4gIHdpdGggbW9kdWxlIEVpdGhlciA6PSBTaGFkb3dfc3RkbGliLkVpdGhlclxuICB3aXRoIG1vZHVsZSBGbG9hdCA6PSBTaGFkb3dfc3RkbGliLkZsb2F0XG4gIHdpdGggbW9kdWxlIEhhc2h0YmwgOj0gU2hhZG93X3N0ZGxpYi5IYXNodGJsXG4gIHdpdGggbW9kdWxlIEluX2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5Jbl9jaGFubmVsXG4gIHdpdGggbW9kdWxlIEludCA6PSBTaGFkb3dfc3RkbGliLkludFxuICB3aXRoIG1vZHVsZSBJbnQzMiA6PSBTaGFkb3dfc3RkbGliLkludDMyXG4gIHdpdGggbW9kdWxlIEludDY0IDo9IFNoYWRvd19zdGRsaWIuSW50NjRcbiAgd2l0aCBtb2R1bGUgTGF6eSA6PSBTaGFkb3dfc3RkbGliLkxhenlcbiAgd2l0aCBtb2R1bGUgTGlzdCA6PSBTaGFkb3dfc3RkbGliLkxpc3RcbiAgd2l0aCBtb2R1bGUgTWFwIDo9IFNoYWRvd19zdGRsaWIuTWFwXG4gIHdpdGggbW9kdWxlIE5hdGl2ZWludCA6PSBTaGFkb3dfc3RkbGliLk5hdGl2ZWludFxuICB3aXRoIG1vZHVsZSBPcHRpb24gOj0gU2hhZG93X3N0ZGxpYi5PcHRpb25cbiAgd2l0aCBtb2R1bGUgT3V0X2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5PdXRfY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdFxuICAoKiBTdXBwb3J0IGZvciBnZW5lcmF0ZWQgbGV4ZXJzICopXG4gIHdpdGggbW9kdWxlIExleGluZyA6PSBTaGFkb3dfc3RkbGliLkxleGluZ1xuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZilcbiAgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCoqLyoqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxubW9kdWxlIEF2bHRyZWUgPSBBdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxpdCA9IEJsaXRcbm1vZHVsZSBCb29sID0gQm9vbFxubW9kdWxlIEJ1ZmZlciA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzID0gQnl0ZXNcbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBFeG5cbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gSGFzaFxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaGVyID0gSGFzaGVyXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW5mbyA9IEluZm9cbm1vZHVsZSBJbnQgPSBJbnRcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBJbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnQzMiA9IEludDMyXG5tb2R1bGUgSW50NjMgPSBJbnQ2M1xubW9kdWxlIEludDY0ID0gSW50NjRcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBJbnZhcmlhbnRcbm1vZHVsZSBMYXp5ID0gTGF6eVxubW9kdWxlIExpc3QgPSBMaXN0XG5tb2R1bGUgTWFwID0gTWFwXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1vbmFkID0gTW9uYWRcbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBQb2x5ID0gUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBQb3Bjb3VudFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gdGhlIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tID0gUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IFN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gU3lzXG5tb2R1bGUgVCA9IFRcbm1vZHVsZSBUeXBlX2VxdWFsID0gVHlwZV9lcXVhbFxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVY2hhciA9IFVjaGFyXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXaXRoX3JldHVybiA9IFdpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gV29yZF9zaXplXG5cbigqIEF2b2lkIGEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gZm9yIHVzZXMgb2YgdGhlIHNpZ25hdHVyZXMgZGVmaW5lZCBpbiBbVF0uICopXG5pbmNsdWRlIFRcblxuKCogVGhpcyBpcyBhIGhhY2sgc28gdGhhdCBvZG9jIGNyZWF0ZXMgYmV0dGVyIGRvY3VtZW50YXRpb24uICopXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBfd2l0aF9jb21wYXJhYmxlICgqKiBAaW5saW5lICopXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpZWxkc2xpYiA9IEZpZWxkc2xpYlxuICBtb2R1bGUgR2xvYmFsaXplID0gR2xvYmFsaXplXG4gIG1vZHVsZSBPYmpfbG9jYWwgPSBPYmpfbG9jYWxcbiAgbW9kdWxlIFBweF9jb21wYXJlX2xpYiA9IFBweF9jb21wYXJlX2xpYlxuICBtb2R1bGUgUHB4X2VudW1lcmF0ZV9saWIgPSBQcHhfZW51bWVyYXRlX2xpYlxuICBtb2R1bGUgUHB4X2hhc2hfbGliID0gUHB4X2hhc2hfbGliXG4gIG1vZHVsZSBWYXJpYW50c2xpYiA9IFZhcmlhbnRzbGliXG5cbiAgbGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldIGFuZCBbcmVmXSBzaW5jZSB0aGVzZSB0eXBlcyBhcmUgbXV0YWJsZS4gKilcbiAgdHlwZSAnYSBhcnJheSA9ICdhIEFycmF5LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBpbnQgPSBBcnJheS5jb21wYXJlXG4gIGxldCBlcXVhbF9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gYm9vbCA9IEFycmF5LmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9hcnJheSA6XG4gICAgJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSBhcnJheVtAb2NhbWwubG9jYWxdKSAtPiAnYSBhcnJheVxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDA5XylcbiAgICAgICAgOiAgKCgoYV9fMDA5X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDlfKSAtPiAoYV9fMDA5XyBhcnJheVtAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMDA5XyBhcnJheSkgLT5cbiAgICAgIEFycmF5Lmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBhcnJheV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBhcnJheSA9XG4gICAgQXJyYXkudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfYXJyYXkgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBBcnJheS5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgYXJyYXlfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgYXJyYXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gQXJyYXkudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBib29sID0gQm9vbC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYm9vbCA9IChCb29sLmNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50KVxuICBsZXQgZXF1YWxfYm9vbCA9IChCb29sLmVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfYm9vbCA6IChib29sW0BvY2FtbC5sb2NhbF0pIC0+IGJvb2wpID1cbiAgICAoQm9vbC5nbG9iYWxpemUgOiAoYm9vbFtAb2NhbWwubG9jYWxdKSAtPiBib29sKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2Jvb2wgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBCb29sLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Jvb2wgOiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBCb29sLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYm9vbF9vZl9zZXhwID0gKEJvb2wudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJvb2wpXG4gIGxldCBzZXhwX29mX2Jvb2wgPSAoQm9vbC5zZXhwX29mX3QgOiBib29sIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQm9vbC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfY2hhciA9IChDaGFyLmNvbXBhcmUgOiBjaGFyIC0+IGNoYXIgLT4gaW50KVxuICBsZXQgZXF1YWxfY2hhciA9IChDaGFyLmVxdWFsIDogY2hhciAtPiBjaGFyIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfY2hhciA6IChjaGFyW0BvY2FtbC5sb2NhbF0pIC0+IGNoYXIpID1cbiAgICAoQ2hhci5nbG9iYWxpemUgOiAoY2hhcltAb2NhbWwubG9jYWxdKSAtPiBjaGFyKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2NoYXIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBDaGFyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2NoYXIgOiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBDaGFyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgY2hhcl9vZl9zZXhwID0gKENoYXIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGNoYXIpXG4gIGxldCBzZXhwX29mX2NoYXIgPSAoQ2hhci5zZXhwX29mX3QgOiBjaGFyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQ2hhci50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBleG4gPSBFeG4udCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl9leG4gPSAoRXhuLnNleHBfb2ZfdCA6IGV4biAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGZsb2F0ID0gRmxvYXQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Zsb2F0ID0gKEZsb2F0LmNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG4gIGxldCBlcXVhbF9mbG9hdCA9IChGbG9hdC5lcXVhbCA6IGZsb2F0IC0+IGZsb2F0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfZmxvYXQgOiAoZmxvYXRbQG9jYW1sLmxvY2FsXSkgLT4gZmxvYXQpID1cbiAgICAoRmxvYXQuZ2xvYmFsaXplIDogKGZsb2F0W0BvY2FtbC5sb2NhbF0pIC0+IGZsb2F0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2Zsb2F0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEZsb2F0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Zsb2F0IDogZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEZsb2F0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgZmxvYXRfb2Zfc2V4cCA9IChGbG9hdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gZmxvYXQpXG4gIGxldCBzZXhwX29mX2Zsb2F0ID0gKEZsb2F0LnNleHBfb2ZfdCA6IGZsb2F0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBGbG9hdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQgPSBJbnQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludCA9IChJbnQuY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50ID0gKEludC5lcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9pbnQgOiAoaW50W0BvY2FtbC5sb2NhbF0pIC0+IGludCkgPVxuICAgIChJbnQuZ2xvYmFsaXplIDogKGludFtAb2NhbWwubG9jYWxdKSAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBJbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50IDogaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnRfb2Zfc2V4cCA9IChJbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludClcbiAgbGV0IHNleHBfb2ZfaW50ID0gKEludC5zZXhwX29mX3QgOiBpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDMyID0gKEludDMyLmNvbXBhcmUgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQzMiA9IChJbnQzMi5lcXVhbCA6IGludDMyIC0+IGludDMyIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfaW50MzIgOiAoaW50MzJbQG9jYW1sLmxvY2FsXSkgLT4gaW50MzIpID1cbiAgICAoSW50MzIuZ2xvYmFsaXplIDogKGludDMyW0BvY2FtbC5sb2NhbF0pIC0+IGludDMyKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2ludDMyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDMyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDMyIDogaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDMyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50MzJfb2Zfc2V4cCA9IChJbnQzMi50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50MzIpXG4gIGxldCBzZXhwX29mX2ludDMyID0gKEludDMyLnNleHBfb2ZfdCA6IGludDMyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQzMi50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQ2NCA9IChJbnQ2NC5jb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50NjQgPSAoSW50NjQuZXF1YWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2ludDY0IDogKGludDY0W0BvY2FtbC5sb2NhbF0pIC0+IGludDY0KSA9XG4gICAgKEludDY0Lmdsb2JhbGl6ZSA6IChpbnQ2NFtAb2NhbWwubG9jYWxdKSAtPiBpbnQ2NClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQ2NCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQ2NC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQ2NCA6IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQ2NC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDY0X29mX3NleHAgPSAoSW50NjQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDY0KVxuICBsZXQgc2V4cF9vZl9pbnQ2NCA9IChJbnQ2NC5zZXhwX29mX3QgOiBpbnQ2NCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50NjQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgbGlzdCA9ICdhIExpc3QudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGludCA9IExpc3QuY29tcGFyZVxuICBsZXQgZXF1YWxfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGJvb2wgPSBMaXN0LmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9saXN0IDpcbiAgICAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIGxpc3RbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgbGlzdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDYyXylcbiAgICAgICAgOiAgKCgoYV9fMDYyX1tAb2NhbWwubG9jYWxdKSAtPiBhX18wNjJfKSAtPiAoYV9fMDYyXyBsaXN0W0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18wNjJfIGxpc3QpIC0+XG4gICAgICBMaXN0Lmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgbGlzdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBMaXN0Lmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgbGlzdCA9XG4gICAgTGlzdC50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9saXN0IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGxpc3QgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBMaXN0LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBsaXN0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGxpc3QgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gTGlzdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5jb21wYXJlIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmVxdWFsIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX25hdGl2ZWludCA6IChuYXRpdmVpbnRbQG9jYW1sLmxvY2FsXSkgLT4gbmF0aXZlaW50KSA9XG4gICAgKE5hdGl2ZWludC5nbG9iYWxpemUgOiAobmF0aXZlaW50W0BvY2FtbC5sb2NhbF0pIC0+IG5hdGl2ZWludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9uYXRpdmVpbnQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IE5hdGl2ZWludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9vZl9zZXhwID0gKE5hdGl2ZWludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gbmF0aXZlaW50KVxuICBsZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LnNleHBfb2ZfdCA6IG5hdGl2ZWludCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgbGV0IChuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgTmF0aXZlaW50LnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gaW50ID1cbiAgICBPcHRpb24uY29tcGFyZVxuICA7O1xuXG4gIGxldCBlcXVhbF9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gYm9vbCA9XG4gICAgT3B0aW9uLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGdsb2JhbGl6ZV9vcHRpb24gOlxuICAgICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2Egb3B0aW9uW0BvY2FtbC5sb2NhbF0pIC0+ICdhIG9wdGlvblxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDg1XylcbiAgICAgICAgOiAgKCgoYV9fMDg1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wODVfKSAtPiAoYV9fMDg1XyBvcHRpb25bQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzA4NV8gb3B0aW9uKSAtPlxuICAgICAgT3B0aW9uLmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBvcHRpb25cbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgT3B0aW9uLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBvcHRpb24gPVxuICAgIE9wdGlvbi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9vcHRpb24gOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2Egb3B0aW9uIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgT3B0aW9uLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBvcHRpb25fc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2Egb3B0aW9uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IE9wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHJlZiA9ICdhIFJlZi50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gaW50ID0gUmVmLmNvbXBhcmVcbiAgbGV0IGVxdWFsX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBib29sID0gUmVmLmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9yZWYgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHJlZltAb2NhbWwubG9jYWxdKSAtPiAnYSByZWYgPVxuICAgIGZ1biAodHlwZSBhX18xMDJfKVxuICAgICAgICA6ICAoKChhX18xMDJfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzEwMl8pIC0+IChhX18xMDJfIHJlZltAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMTAyXyByZWYpIC0+XG4gICAgICBSZWYuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IHJlZl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSByZWYgPVxuICAgIFJlZi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9yZWYgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgcmVmIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgUmVmLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCByZWZfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHJlZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVmLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9zdHJpbmcgPSAoU3RyaW5nLmNvbXBhcmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludClcbiAgbGV0IGVxdWFsX3N0cmluZyA9IChTdHJpbmcuZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfc3RyaW5nIDogKHN0cmluZ1tAb2NhbWwubG9jYWxdKSAtPiBzdHJpbmcpID1cbiAgICAoU3RyaW5nLmdsb2JhbGl6ZSA6IChzdHJpbmdbQG9jYW1sLmxvY2FsXSkgLT4gc3RyaW5nKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3N0cmluZyA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgU3RyaW5nLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3N0cmluZyA6IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gU3RyaW5nLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc3RyaW5nX29mX3NleHAgPSAoU3RyaW5nLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBzdHJpbmcpXG4gIGxldCBzZXhwX29mX3N0cmluZyA9IChTdHJpbmcuc2V4cF9vZl90IDogc3RyaW5nIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ieXRlcyA9IChCeXRlcy5jb21wYXJlIDogYnl0ZXMgLT4gYnl0ZXMgLT4gaW50KVxuICBsZXQgZXF1YWxfYnl0ZXMgPSAoQnl0ZXMuZXF1YWwgOiBieXRlcyAtPiBieXRlcyAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2J5dGVzIDogKGJ5dGVzW0BvY2FtbC5sb2NhbF0pIC0+IGJ5dGVzKSA9XG4gICAgKEJ5dGVzLmdsb2JhbGl6ZSA6IChieXRlc1tAb2NhbWwubG9jYWxdKSAtPiBieXRlcylcbiAgOztcblxuICBsZXQgYnl0ZXNfb2Zfc2V4cCA9IChCeXRlcy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYnl0ZXMpXG4gIGxldCBzZXhwX29mX2J5dGVzID0gKEJ5dGVzLnNleHBfb2ZfdCA6IGJ5dGVzIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCeXRlcy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfdW5pdCA9IChVbml0LmNvbXBhcmUgOiB1bml0IC0+IHVuaXQgLT4gaW50KVxuICBsZXQgZXF1YWxfdW5pdCA9IChVbml0LmVxdWFsIDogdW5pdCAtPiB1bml0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfdW5pdCA6ICh1bml0W0BvY2FtbC5sb2NhbF0pIC0+IHVuaXQpID1cbiAgICAoVW5pdC5nbG9iYWxpemUgOiAodW5pdFtAb2NhbWwubG9jYWxdKSAtPiB1bml0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3VuaXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBVbml0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3VuaXQgOiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBVbml0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdW5pdF9vZl9zZXhwID0gKFVuaXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHVuaXQpXG4gIGxldCBzZXhwX29mX3VuaXQgPSAoVW5pdC5zZXhwX29mX3QgOiB1bml0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVW5pdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIEZvcm1hdCBzdHVmZiAqKVxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG5cbiAgKCoqIExpc3Qgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBMaXN0LkluZml4XG5cbiAgKCoqIEludCBvcGVyYXRvcnMgYW5kIGNvbXBhcmlzb25zICopXG5cbiAgaW5jbHVkZSBJbnQuT1xuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAoKiogRmxvYXQgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBGbG9hdC5PX2RvdFxuXG4gICgqIFRoaXMgaXMgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gYmUgb3B0aW1pemVkIGF3YXkgaW4gbW9yZSBjb250ZXh0cy4gKilcblxuICAoKiogUmV2ZXJzZSBhcHBsaWNhdGlvbiBvcGVyYXRvci4gW3ggfD4gZyB8PiBmXSBpcyBlcXVpdmFsZW50IHRvIFtmIChnICh4KSldLiAqKVxuICBleHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoKCdhIC0+ICdiKVtAbG9jYWxfb3B0XSkgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbiAgKCoqIEFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbZyBAQCBmIEBAIHhdIGlzIGVxdWl2YWxlbnQgdG8gW2cgKGYgKHgpKV0uICopXG4gIGV4dGVybmFsICggQEAgKSA6ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuICAoKiogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbiAgKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbiAgZXh0ZXJuYWwgKCAmJiApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIGV4dGVybmFsICggfHwgKSA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIGV4dGVybmFsIG5vdCA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbiAgKCogVGhpcyBtdXN0IGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseS4gKilcbiAgZXh0ZXJuYWwgaWdub3JlIDogKF9bQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4gICgqKiBDb21tb24gc3RyaW5nIG9wZXJhdGlvbnMgKilcbiAgbGV0ICggXiApID0gU3RyaW5nLiggXiApXG5cbiAgKCoqIFJlZmVyZW5jZSBvcGVyYXRpb25zICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlIGFuZFxuICAgICB0byBrZWVwIHJlZmVyZW5jZSB1bmJveGluZyB3b3JraW5nICopXG4gIGV4dGVybmFsICggISApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCByZWYgOiAnYSAtPiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSA9IFwiJW1ha2VtdXRhYmxlXCJcbiAgZXh0ZXJuYWwgKCA6PSApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbiAgKCoqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBmc3QgPSBmc3RcbiAgbGV0IHNuZCA9IHNuZFxuXG4gICgqKiBFeGNlcHRpb25zIHN0dWZmICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgbWF5IHJld3JpdGUgJyVyYWlzZScgYXMgJyVyZXJhaXNlJy4gKilcbiAgZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxuICBsZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICAoKiogTWlzYyAqKVxuXG4gIGV4dGVybmFsIHBoeXNfZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcbiAgZXh0ZXJuYWwgZm9yY2UgOiAoJ2EgTGF6eS50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbmluY2x1ZGUgQ29udGFpbmVyX2ludGYuRXhwb3J0ICgqKiBAaW5saW5lICopXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IE5vdF9mb3VuZF9zXG5cbigqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgIFtCYXNlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQmFzZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgdGhlbiB0aGUgc2lkZSBlZmZlY3RzIG1pZ2h0IG5vdCBiZSBydW4gaW4gdGhhdCBwcm9ncmFtLiAgVGhpcyB3aWxsIHJ1biBhcyBsb25nIGFzIHRoZVxuICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIFtCYXNlXTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgW0Jhc2UuQm9vbF0sIGZvciBleGFtcGxlLCBpcyBub3Qgc3VmZmljaWVudC4gKilcbmxldCAoKSA9IEJhY2t0cmFjZS5pbml0aWFsaXplX21vZHVsZSAoKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9jYXRpb25cblxubGV0IHNldF9pbnB1dF9uYW1lIG5hbWUgPSBpbnB1dF9uYW1lIDo9IG5hbWVcbmxldCBzZXRfaW5wdXRfbGV4YnVmIGxleGJ1Zl9vcHQgPSBpbnB1dF9sZXhidWYgOj0gbGV4YnVmX29wdFxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItMzdcIl1cblxuICB0eXBlIG9sZF90ICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSA9IHtcbiAgICBsb2M6IHQ7XG4gICAgbXNnOiBzdHJpbmc7XG4gICAgc3ViOiBvbGRfdCBsaXN0O1xuICAgIGlmX2hpZ2hsaWdodDogc3RyaW5nO1xuICB9XG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnRfa2luZCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnRfa2luZCAqKSA9XG4gIHwgUmVwb3J0X2Vycm9yXG4gIHwgUmVwb3J0X3dhcm5pbmcgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X3dhcm5pbmdfYXNfZXJyb3Igb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0IG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydF9hc19lcnJvciBvZiBzdHJpbmdcblxuICB0eXBlIGxvY2F0aW9uX21zZyA9IChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpIGxvY1xuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydCAqKSA9IHtcbiAgICBraW5kIDogbG9jYXRpb25fcmVwb3J0X2tpbmQ7XG4gICAgbWFpbiA6IGxvY2F0aW9uX21zZztcbiAgICBzdWIgOiBsb2NhdGlvbl9tc2cgbGlzdDtcbiAgfVxuXG4gIHR5cGUgdCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBvbGRfdCAqKVxuICAoKiogT24gb2NhbWwgPj0gNC4wODogW3RdIGlzIGEgW2xvY2F0aW9uX3JlcG9ydF0gZm9yIHdoaWNoIFtsb2NhdGlvbl9yZXBvcnRfa2luZF0gbXVzdCBiZSBbUmVwb3J0X2Vycm9yXS4gKilcblxuICB0eXBlIHZlcnNpb25fc3BlY2lmaWNfdCA9IFtgTmV3X2Vycm9yIG9mIGxvY2F0aW9uX3JlcG9ydCB8IGBPbGRfZXJyb3Igb2Ygb2xkX3RdXG5cbiAgbGV0IHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IDogdCAtPiB2ZXJzaW9uX3NwZWNpZmljX3QgPSBmdW4geCAtPlxuICAgICgqSUZfQVRfTEVBU1QgNDA4IGBOZXdfZXJyb3IgeCAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBgT2xkX2Vycm9yIHggKilcblxuICBsZXQgaXNfd2VsbF9mb3JtZWQgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBraW5kID0gUmVwb3J0X2Vycm9yOyBfIH0gLT4gdHJ1ZVxuICAgIHwgYE5ld19lcnJvciBfIC0+IGZhbHNlXG4gICAgfCBgT2xkX2Vycm9yIF8gLT4gdHJ1ZVxuXG4gIGxldCBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIChtc2cgOiBsb2NhdGlvbl9tc2cpID0gRm9ybWF0LmFzcHJpbnRmIFwiJXRcIiBtc2cudHh0XG5cbiAgbGV0IG1haW5fbXNnIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBtYWluOyBsb2MgPSBtYWluLmxvYyB9XG4gICAgfCBgT2xkX2Vycm9yIHsgbXNnOyBsb2M7IF8gfSAtPiB7IHR4dCA9IG1zZzsgbG9jIH1cblxuICBsZXQgc3ViX21zZ3MgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gZXJyIC0+IHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBlcnI7IGxvYyA9IGVyci5sb2MgfSlcbiAgICAgICAgICBzdWJcbiAgICB8IGBPbGRfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBsZXQgcmVjIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICAgIHwgeyBsb2M7IG1zZzsgc3ViOyBfIH0gOjogdGFpbCAtPlxuICAgICAgICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzICh7IHR4dCA9IG1zZzsgbG9jIH0gOjogYWNjKSAoc3ViIEAgdGFpbClcbiAgICAgICAgaW5cbiAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBbXSBzdWJcblxuICBsZXQgb2ZfZXhuIGV4biA9XG4gICAgKCpJRl9BVF9MRUFTVCA0MDYgbWF0Y2ggZXJyb3Jfb2ZfZXhuIGV4biB3aXRoIHwgU29tZSAoYE9rIGUpIC0+IFNvbWUgZSB8IE5vbmUgfCBTb21lIGBBbHJlYWR5X2Rpc3BsYXllZCAtPiBOb25lICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA2IGVycm9yX29mX2V4biBleG4qKVxuXG4gIGxldCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cgPSB7IGVycm9yIHdpdGggbXNnIH1cblxuICBsZXQgX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnID1cbiAgICBsZXQgdHh0IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIG1zZyBpblxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggdHh0IH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX21zZyBlcnJvciBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyopXG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgc3ViID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geyBsb2M7IHR4dCB9IC0+IHsgbG9jOyBtc2cgPSB0eHQ7IHN1YiA9IFtdOyBpZl9oaWdobGlnaHQgPSB0eHQgfSlcbiAgICAgICAgc3ViXG4gICAgaW5cbiAgICB7IGxvYzsgbXNnID0gdHh0OyBzdWI7IGlmX2hpZ2hsaWdodCA9IHR4dCB9XG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgbWtfdHh0IHggcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgeCBpblxuICAgIGxldCBtayBsb2MgeCA9IHsgbG9jOyB0eHQgPSBta190eHQgeCB9IGluXG4gICAge1xuICAgICAga2luZCA9IFJlcG9ydF9lcnJvcjtcbiAgICAgIG1haW4gPSBtayBsb2MgdHh0O1xuICAgICAgc3ViID0gTGlzdC5tYXAgKGZ1biB7IGxvYzsgdHh0IH0gLT4gbWsgbG9jIHR4dCkgc3ViO1xuICAgIH1cblxuICBsZXQgbWFrZSB+c3ViIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIG1zZyopXG5cbiAgbGV0IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyA9IHsgZXJyb3Igd2l0aCBsb2MgfVxuXG4gIGxldCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MgPVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggbG9jIH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX2xvYyBlcnJvciBsb2MgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyopXG5lbmRcblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIG1zZyA9IHJhaXNlX2Vycm9yZiA/bG9jIG1zZ1xuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG5cbmxldCBwYXJzZSBzID1cbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDExIHBhcnNlIHMgKilcbiAgKCpJRl9BVF9MRUFTVCA0MTEgT2NhbWxfY29tbW9uLlBhcnNlLmxvbmdpZGVudCBAQCBMZXhpbmcuZnJvbV9zdHJpbmcgQEAgcyAqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMxXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMxXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgVGhvbWFzIEdhemFnbmFpcmUsIE9DYW1sUHJvICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgRmFicmljZSBMZSBGZXNzYW50LCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBIb25nYm8gWmhhbmcsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcmlnaW5hbCBDb2RlIGZyb20gQmVyLW1ldGFvY2FtbCwgbW9kaWZpZWQgZm9yIDMuMTIuMCBhbmQgZml4ZWQgKilcbigqIFByaW50aW5nIGNvZGUgZXhwcmVzc2lvbnMgKilcbigqIEF1dGhvcnM6ICBFZCBQaXp6aSwgRmFicmljZSBMZSBGZXNzYW50ICopXG4oKiBFeHRlbnNpdmUgUmV3cml0ZTogSG9uZ2JvIFpoYW5nOiBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAqKVxuKCogVE9ETyBtb3JlIGZpbmUtZ3JhaW5lZCBwcmVjZWRlbmNlIHByZXR0eS1wcmludGluZyAqKVxuXG5vcGVuIEFzdF80MTRcbm9wZW4gQXN0dHlwZXNcbm9wZW4gRm9ybWF0XG5vcGVuIExvY2F0aW9uXG5vcGVuIExvbmdpZGVudFxub3BlbiBQYXJzZXRyZWVcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuZW5kXG5cbmxldCB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICBpblxuICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGxldCBkZXNjID1cbiAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKSB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzXG4gICAgICAgIC0+XG4gICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPiBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgaW5cbiAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgbGV0IHBvZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gIGluXG4gIGxvb3AgdFxuXG5sZXQgcHJlZml4X3N5bWJvbHMgPSBbICchJzsgJz8nOyAnficgXVxuXG5sZXQgaW5maXhfc3ltYm9scyA9XG4gIFsgJz0nOyAnPCc7ICc+JzsgJ0AnOyAnXic7ICd8JzsgJyYnOyAnKyc7ICctJzsgJyonOyAnLyc7ICckJzsgJyUnOyAnIycgXVxuXG4oKiB0eXBlIGZpeGl0eSA9IEluZml4fCBQcmVmaXggICopXG5sZXQgc3BlY2lhbF9pbmZpeF9zdHJpbmdzID1cbiAgWyBcImFzclwiOyBcImxhbmRcIjsgXCJsb3JcIjsgXCJsc2xcIjsgXCJsc3JcIjsgXCJseG9yXCI7IFwibW9kXCI7IFwib3JcIjsgXCI6PVwiOyBcIiE9XCI7IFwiOjpcIiBdXG5cbmxldCBsZXRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdsJ1xuICAmJiBzLlsxXSA9ICdlJ1xuICAmJiBzLlsyXSA9ICd0J1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbmxldCBhbmRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdhJ1xuICAmJiBzLlsxXSA9ICduJ1xuICAmJiBzLlsyXSA9ICdkJ1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbigqIGRldGVybWluZXMgaWYgdGhlIHN0cmluZyBpcyBhbiBpbmZpeCBzdHJpbmcuXG4gICBjaGVja3MgYmFja3dhcmRzLCBmaXJzdCBhbGxvd2luZyBhIHJlbmFtaW5nIHBvc3RmaXggKFwiXzEwMlwiKSB3aGljaFxuICAgbWF5IGhhdmUgcmVzdWx0ZWQgZnJvbSBQZXhwIC0+IFRleHAgLT4gUGV4cCB0cmFuc2xhdGlvbiwgdGhlbiBjaGVja2luZ1xuICAgaWYgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhcmUgdmFsaWQgaW5maXhcbiAgIGNoYXJhY3RlcnMuICopXG5sZXQgZml4aXR5X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJcIiAtPiBgTm9ybWFsXG4gIHwgcyB3aGVuIExpc3QubWVtIHMgc3BlY2lhbF9pbmZpeF9zdHJpbmdzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIGluZml4X3N5bWJvbHMgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gcHJlZml4X3N5bWJvbHMgLT4gYFByZWZpeCBzXG4gIHwgcyB3aGVuIHMuWzBdID0gJy4nIC0+IGBNaXhmaXggc1xuICB8IHMgd2hlbiBsZXRvcCBzIC0+IGBMZXRvcCBzXG4gIHwgcyB3aGVuIGFuZG9wIHMgLT4gYEFuZG9wIHNcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IHZpZXdfZml4aXR5X29mX2V4cCA9IGZ1bmN0aW9uXG4gIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgZml4aXR5X29mX3N0cmluZyBsXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCBpc19pbmZpeCA9IGZ1bmN0aW9uIGBJbmZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfbWl4Zml4ID0gZnVuY3Rpb24gYE1peGZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfa3dkb3AgPSBmdW5jdGlvbiBgTGV0b3AgXyB8IGBBbmRvcCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgZmlyc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuWzBdID0gY1xubGV0IGxhc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuW1N0cmluZy5sZW5ndGggc3RyIC0gMV0gPSBjXG5sZXQgZmlyc3RfaXNfaW4gY3Mgc3RyID0gc3RyIDw+IFwiXCIgJiYgTGlzdC5tZW0gc3RyLlswXSBjc1xuXG4oKiB3aGljaCBpZGVudGlmaWVycyBhcmUgaW4gZmFjdCBvcGVyYXRvcnMgbmVlZGluZyBwYXJlbnRoZXNlcyAqKVxubGV0IG5lZWRzX3BhcmVucyB0eHQgPVxuICBsZXQgZml4ID0gZml4aXR5X29mX3N0cmluZyB0eHQgaW5cbiAgaXNfaW5maXggZml4IHx8IGlzX21peGZpeCBmaXggfHwgaXNfa3dkb3AgZml4XG4gIHx8IGZpcnN0X2lzX2luIHByZWZpeF9zeW1ib2xzIHR4dFxuXG4oKiBzb21lIGluZml4ZXMgbmVlZCBzcGFjZXMgYXJvdW5kIHBhcmVucyB0byBhdm9pZCBjbGFzaGVzIHdpdGggY29tbWVudFxuICAgc3ludGF4ICopXG5sZXQgbmVlZHNfc3BhY2VzIHR4dCA9IGZpcnN0X2lzICcqJyB0eHQgfHwgbGFzdF9pcyAnKicgdHh0XG5sZXQgc3RyaW5nX2xvYyBwcGYgeCA9IGZwcmludGYgcHBmIFwiJXNcIiB4LnR4dFxuXG4oKiBhZGQgcGFyZW50aGVzZXMgdG8gYmluZGVycyB3aGVuIHRoZXkgYXJlIGluIGZhY3QgaW5maXggb3IgcHJlZml4IG9wZXJhdG9ycyAqKVxubGV0IHByb3RlY3RfaWRlbnQgcHBmIHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIoQDslc0A7KVwiXG4gICAgZWxzZSBcIiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgdHh0XG5cbmxldCBwcm90ZWN0X2xvbmdpZGVudCBwcGYgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVhLiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIiVhLihAOyVzQDspXCJcbiAgICBlbHNlIFwiJWEuKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHRcblxudHlwZSBzcGFjZV9mb3JtYXR0ZXIgPSAodW5pdCwgRm9ybWF0LmZvcm1hdHRlciwgdW5pdCkgZm9ybWF0XG5cbmxldCBvdmVycmlkZSA9IGZ1bmN0aW9uIE92ZXJyaWRlIC0+IFwiIVwiIHwgRnJlc2ggLT4gXCJcIlxuXG4oKiB2YXJpYW5jZSBlbmNvZGluZzogbmVlZCB0byBzeW5jIHVwIHdpdGggdGhlIFtwYXJzZXIubWx5XSAqKVxubGV0IHR5cGVfdmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IE5vVmFyaWFuY2UgLT4gXCJcIlxuICB8IENvdmFyaWFudCAtPiBcIitcIlxuICB8IENvbnRyYXZhcmlhbnQgLT4gXCItXCJcblxubGV0IHR5cGVfaW5qZWN0aXZpdHkgPSBmdW5jdGlvbiBOb0luamVjdGl2aXR5IC0+IFwiXCIgfCBJbmplY3RpdmUgLT4gXCIhXCJcblxudHlwZSBjb25zdHJ1Y3QgPVxuICBbIGBjb25zIG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBsaXN0IG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBuaWxcbiAgfCBgbm9ybWFsXG4gIHwgYHNpbXBsZSBvZiBMb25naWRlbnQudFxuICB8IGB0dXBsZSBdXG5cbmxldCB2aWV3X2V4cHIgeCA9XG4gIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCIoKVwiOyBfIH0sIF8pIC0+IGB0dXBsZVxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXykgLT4gYG5pbFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBfKSAtPlxuICAgICAgbGV0IHJlYyBsb29wIGV4cCBhY2MgPVxuICAgICAgICBtYXRjaCBleHAgd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgICBTb21lIHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGUxOyBlMiBdOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgICAgKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBsb29wIGUyIChlMSA6OiBhY2MpXG4gICAgICAgIHwgZSAtPiAoTGlzdC5yZXYgKGUgOjogYWNjKSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGxzLCBiID0gbG9vcCB4IFtdIGluXG4gICAgICBpZiBiIHRoZW4gYGxpc3QgbHMgZWxzZSBgY29ucyBsc1xuICB8IFBleHBfY29uc3RydWN0ICh4LCBOb25lKSAtPiBgc2ltcGxlIHgudHh0XG4gIHwgXyAtPiBgbm9ybWFsXG5cbmxldCBpc19zaW1wbGVfY29uc3RydWN0IDogY29uc3RydWN0IC0+IGJvb2wgPSBmdW5jdGlvblxuICB8IGBuaWwgfCBgdHVwbGUgfCBgbGlzdCBfIHwgYHNpbXBsZSBfIC0+IHRydWVcbiAgfCBgY29ucyBfIHwgYG5vcm1hbCAtPiBmYWxzZVxuXG5sZXQgcHAgPSBmcHJpbnRmXG5cbnR5cGUgY3R4dCA9IHsgcGlwZSA6IGJvb2w7IHNlbWkgOiBib29sOyBpZnRoZW5lbHNlIDogYm9vbCB9XG5cbmxldCByZXNldF9jdHh0ID0geyBwaXBlID0gZmFsc2U7IHNlbWkgPSBmYWxzZTsgaWZ0aGVuZWxzZSA9IGZhbHNlIH1cbmxldCB1bmRlcl9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlID0gdHJ1ZSB9XG5sZXQgdW5kZXJfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaSA9IHRydWUgfVxubGV0IHVuZGVyX2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2UgPSB0cnVlIH1cbigqXG5sZXQgcmVzZXRfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaT1mYWxzZSB9XG5sZXQgcmVzZXRfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZT1mYWxzZSB9XG5sZXQgcmVzZXRfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZT1mYWxzZSB9XG4qKVxuXG5sZXQgbGlzdCA6XG4gICAgICAnYS5cbiAgICAgID9zZXA6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBsaXN0IC0+XG4gICAgICB1bml0ID1cbiBmdW4gP3NlcCA/Zmlyc3QgP2xhc3QgZnUgZiB4cyAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgc2VwID0gbWF0Y2ggc2VwIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIkAgXCIgOiBfIGZvcm1hdDYpIGluXG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgfCB4cyAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICAgICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICAgICAgZnUgZiB4O1xuICAgICAgICAgICAgICBwcCBmIHNlcDtcbiAgICAgICAgICAgICAgbG9vcCBmIHhzXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIGZpcnN0O1xuICAgICAgICBsb29wIGYgeHM7XG4gICAgICAgIHBwIGYgbGFzdFxuICBpblxuICBhdXggZiB4c1xuXG5sZXQgb3B0aW9uIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2Egb3B0aW9uIC0+XG4gICAgICB1bml0ID1cbiBmdW4gP2ZpcnN0ID9sYXN0IGZ1IGYgYSAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KSBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBwcCBmIGZpcnN0O1xuICAgICAgZnUgZiB4O1xuICAgICAgcHAgZiBsYXN0XG5cbmxldCBwYXJlbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgYm9vbCAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIC0+XG4gICAgICB1bml0ID1cbiBmdW4gPyhmaXJzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgPyhsYXN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSBiIGZ1IGYgeCAtPlxuICBpZiBiIHRoZW4gKFxuICAgIHBwIGYgXCIoXCI7XG4gICAgcHAgZiBmaXJzdDtcbiAgICBmdSBmIHg7XG4gICAgcHAgZiBsYXN0O1xuICAgIHBwIGYgXCIpXCIpXG4gIGVsc2UgZnUgZiB4XG5cbmxldCByZWMgbG9uZ2lkZW50IGYgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHByb3RlY3RfaWRlbnQgZiBzXG4gIHwgTGRvdCAoeSwgcykgLT4gcHJvdGVjdF9sb25naWRlbnQgZiBsb25naWRlbnQgeSBzXG4gIHwgTGFwcGx5ICh5LCBzKSAtPiBwcCBmIFwiJWEoJWEpXCIgbG9uZ2lkZW50IHkgbG9uZ2lkZW50IHNcblxubGV0IGxvbmdpZGVudF9sb2MgZiB4ID0gcHAgZiBcIiVhXCIgbG9uZ2lkZW50IHgudHh0XG5cbmxldCBjb25zdGFudCBmID0gZnVuY3Rpb25cbiAgfCBQY29uc3RfY2hhciBpIC0+IHBwIGYgXCIlQ1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBOb25lKSAtPiBwcCBmIFwiJVNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgU29tZSBkZWxpbSkgLT4gcHAgZiBcInslc3wlc3wlc31cIiBkZWxpbSBpIGRlbGltXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuICB8IFBjb25zdF9mbG9hdCAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9mbG9hdCAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuXG4oKiB0cmFpbGluZyBzcGFjZSopXG5sZXQgbXV0YWJsZV9mbGFnIGYgPSBmdW5jdGlvbiBJbW11dGFibGUgLT4gKCkgfCBNdXRhYmxlIC0+IHBwIGYgXCJtdXRhYmxlQDtcIlxubGV0IHZpcnR1YWxfZmxhZyBmID0gZnVuY3Rpb24gQ29uY3JldGUgLT4gKCkgfCBWaXJ0dWFsIC0+IHBwIGYgXCJ2aXJ0dWFsQDtcIlxuXG4oKiB0cmFpbGluZyBzcGFjZSBhZGRlZCAqKVxubGV0IHJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiAoKSB8IFJlY3Vyc2l2ZSAtPiBwcCBmIFwicmVjIFwiXG5cbmxldCBub25yZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gcHAgZiBcIm5vbnJlYyBcIiB8IFJlY3Vyc2l2ZSAtPiAoKVxuXG5sZXQgZGlyZWN0aW9uX2ZsYWcgZiA9IGZ1bmN0aW9uXG4gIHwgVXB0byAtPiBwcCBmIFwidG9AIFwiXG4gIHwgRG93bnRvIC0+IHBwIGYgXCJkb3dudG9AIFwiXG5cbmxldCBwcml2YXRlX2ZsYWcgZiA9IGZ1bmN0aW9uIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcInByaXZhdGVAIFwiXG5sZXQgaXRlcl9sb2MgZiBjdHh0IHsgdHh0OyBsb2MgPSBfIH0gPSBmIGN0eHQgdHh0XG5sZXQgY29uc3RhbnRfc3RyaW5nIGYgcyA9IHBwIGYgXCIlU1wiIHNcblxubGV0IHR5dmFyIHBwZiBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgcy5bMV0gPSAnXFwnJyB0aGVuXG4gICAgKCogd2l0aG91dCB0aGUgc3BhY2UsIHRoaXMgd291bGQgYmUgcGFyc2VkIGFzXG4gICAgICAgYSBjaGFyYWN0ZXIgbGl0ZXJhbCAqKVxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIicgJXNcIiBzXG4gIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJyVzXCIgc1xuXG5sZXQgdHl2YXJfbG9jIGYgc3RyID0gdHl2YXIgZiBzdHIudHh0XG5sZXQgc3RyaW5nX3F1b3QgZiB4ID0gcHAgZiBcImAlc1wiIHhcblxuKCogYyBbJ2EsJ2JdICopXG5sZXQgcmVjIGNsYXNzX3BhcmFtc19kZWYgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIlslYV0gXCIgKCogc3BhY2UgKikgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfnNlcDpcIixcIikgbFxuXG5hbmQgdHlwZV93aXRoX2xhYmVsIGN0eHQgZiAobGFiZWwsIGMpID1cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IE5vbGFiZWwgLT4gY29yZV90eXBlMSBjdHh0IGYgYyAoKiBvdGhlcndpc2UgcGFyZW50aGVzaXplICopXG4gIHwgTGFiZWxsZWQgcyAtPiBwcCBmIFwiJXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcbiAgfCBPcHRpb25hbCBzIC0+IHBwIGYgXCI/JXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcblxuYW5kIGNvcmVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY29yZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hcnJvdyAobCwgY3QxLCBjdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjdDEpIChjb3JlX3R5cGUgY3R4dCkgY3QyXG4gICAgfCBQdHlwX2FsaWFzIChjdCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgY3QgdHl2YXIgc1xuICAgIHwgUHR5cF9wb2x5IChbXSwgY3QpIC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICB8IFB0eXBfcG9seSAoc2wsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFcIlxuICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIGwpXG4gICAgICAgICAgICAgIGwpXG4gICAgICAgICAgc2wgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuXG5hbmQgY29yZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gY29yZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQdHlwX3ZhciBzIC0+IHR5dmFyIGYgc1xuICAgIHwgUHR5cF90dXBsZSBsIC0+IHBwIGYgXCIoJWEpXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICB8IFB0eXBfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiAoKiBcIiVhJWFAO1wiICopIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgfCBbIHggXSAtPiBwcCBmIFwiJWFAO1wiIChjb3JlX3R5cGUxIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0IH5maXJzdDpcIihcIiB+bGFzdDpcIilAO1wiIChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixAO1wiIGYgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfdmFyaWFudCAobCwgY2xvc2VkLCBsb3cpIC0+XG4gICAgICAgIGxldCBmaXJzdF9pc19pbmhlcml0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IHsgUGFyc2V0cmVlLnByZl9kZXNjID0gUmluaGVyaXQgXyB9IDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwZV92YXJpYW50X2hlbHBlciBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUnRhZyAobCwgXywgY3RsKSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQDslYUBdXCIgKGl0ZXJfbG9jIHN0cmluZ19xdW90KSBsXG4gICAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIiZcIikgY3RsKVxuICAgICAgICAgICAgICAgIGN0bCAoYXR0cmlidXRlcyBjdHh0KSB4LnByZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBSaW5oZXJpdCBjdCAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPlslYSVhXUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggKGwsIGNsb3NlZCkgd2l0aFxuICAgICAgICAgICAgfCBbXSwgQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgICB8IFtdLCBPcGVuIC0+IHBwIGYgXCI+XCIgKCogQ2YgIzcyMDA6IHByaW50IFs+XSBjb3JyZWN0bHkgKilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlc0A7JWFcIlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIChjbG9zZWQsIGxvdykgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIE5vbmUgLT4gaWYgZmlyc3RfaXNfaW5oZXJpdCB0aGVuIFwiIHxcIiBlbHNlIFwiXCJcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBTb21lIF8gLT4gXCI8XCIgKCogRklYTUUgZGVzdWdhciB0aGUgc3ludGF4IHN1Z2FyKilcbiAgICAgICAgICAgICAgICAgIHwgT3BlbiwgXyAtPiBcIj5cIilcbiAgICAgICAgICAgICAgICAgIChsaXN0IHR5cGVfdmFyaWFudF9oZWxwZXIgfnNlcDpcIkA7PDEgLTI+fCBcIilcbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgbFxuICAgICAgICAgIChmdW4gZiBsb3cgLT5cbiAgICAgICAgICAgIG1hdGNoIGxvdyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgW10gfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgeHMgLT4gcHAgZiBcIj5AICVhXCIgKGxpc3Qgc3RyaW5nX3F1b3QpIHhzKVxuICAgICAgICAgIGxvd1xuICAgIHwgUHR5cF9vYmplY3QgKGwsIG8pIC0+XG4gICAgICAgIGxldCBjb3JlX2ZpZWxkX3R5cGUgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IE90YWcgKGwsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lczogJWFAICVhQCBAXVwiIGwudHh0IChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAgICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBvZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBPaW5oZXJpdCBjdCAtPiBwcCBmIFwiQFs8aG92Mj4lYUAgQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWVsZF92YXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBc3R0eXBlcy5DbG9zZWQgLT4gKClcbiAgICAgICAgICB8IEFzdHR5cGVzLk9wZW4gLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gcHAgZiBcIi4uXCIgfCBfIC0+IHBwIGYgXCIgOy4uXCIpXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPjxAICVhJWFAID4gQF1cIlxuICAgICAgICAgIChsaXN0IGNvcmVfZmllbGRfdHlwZSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGwgZmllbGRfdmFyIG9cbiAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICB8IFB0eXBfY2xhc3MgKGxpLCBsKSAtPlxuICAgICAgICAoKkZJWE1FKilcbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEjJWFAXVwiXG4gICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfcGFja2FnZSAobGlkLCBjc3RycykgLT4gKFxuICAgICAgICBsZXQgYXV4IGYgKHMsIGN0KSA9XG4gICAgICAgICAgcHAgZiBcInR5cGUgJWFAID1AICVhXCIgbG9uZ2lkZW50X2xvYyBzIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY3N0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYUAgd2l0aEAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgICAgICAobGlzdCBhdXggfnNlcDpcIkAgYW5kQCBcIikgY3N0cnMpXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChjb3JlX3R5cGUgY3R4dCkgZiB4XG5cbigqKioqKioqKioqKioqKioqKioqKnBhdHRlcm4qKioqKioqKioqKioqKioqKioqKilcbigqIGJlIGNhdXRpb3VzIHdoZW4gdXNlIFtwYXR0ZXJuXSwgW3BhdHRlcm4xXSBpcyBwcmVmZXJyZWQgKilcbmFuZCBwYXR0ZXJuIGN0eHQgZiB4ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChwYXR0ZXJuIGN0eHQpXG4gICAgICB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBwYXRfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9hbGlhcyAocCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcCBwcm90ZWN0X2lkZW50IHMudHh0XG4gICAgfCBfIC0+IHBhdHRlcm5fb3IgY3R4dCBmIHhcblxuYW5kIHBhdHRlcm5fb3IgY3R4dCBmIHggPVxuICBsZXQgcmVjIGxlZnRfYXNzb2NpYXRpdmUgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X29yIChwMSwgcDIpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIGxlZnRfYXNzb2NpYXRpdmUgcDEgKHAyIDo6IGFjYylcbiAgICB8IHggLT4geCA6OiBhY2NcbiAgaW5cbiAgbWF0Y2ggbGVmdF9hc3NvY2lhdGl2ZSB4IFtdIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiBwYXR0ZXJuMSBjdHh0IGYgeFxuICB8IG9ycGF0cyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgfnNlcDpcIkAgfCBcIiAocGF0dGVybjEgY3R4dCkpIG9ycGF0c1xuXG5hbmQgcGF0dGVybjEgY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgbGV0IHJlYyBwYXR0ZXJuX2xpc3RfaGVscGVyIGYgPSBmdW5jdGlvblxuICAgIHwge1xuICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgIFBwYXRfY29uc3RydWN0XG4gICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICBTb21lIChbXSwgeyBwcGF0X2Rlc2MgPSBQcGF0X3R1cGxlIFsgcGF0MTsgcGF0MiBdOyBfIH0pICk7XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWE6OiVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdDEgcGF0dGVybl9saXN0X2hlbHBlciBwYXQyICgqUkEqKVxuICAgIHwgcCAtPiBwYXR0ZXJuMSBjdHh0IGYgcFxuICBpblxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgU29tZSBwKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgXykgLT5cbiAgICAgICAgc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcbiAgICB8IFBwYXRfY29uc3RydWN0ICgoeyB0eHQ7IF8gfSBhcyBsaSksIHBvKSAtPiAoXG4gICAgICAgIGlmICgqIEZJWE1FIFRoZSB0aGlyZCBmaWVsZCBhbHdheXMgZmFsc2UgKilcbiAgICAgICAgICAgdHh0ID0gTGlkZW50IFwiOjpcIiB0aGVuIHBwIGYgXCIlYVwiIHBhdHRlcm5fbGlzdF9oZWxwZXIgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggcG8gd2l0aFxuICAgICAgICAgIHwgU29tZSAoW10sIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7JWFcIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBTb21lICh2bCwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQCAodHlwZSAlYSlAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgICAgICAgIChsaXN0IH5zZXA6XCJAIFwiIHN0cmluZ19sb2MpXG4gICAgICAgICAgICAgICAgdmwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaSlcbiAgICB8IF8gLT4gc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9wYXR0ZXJuIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50ICgoXCIoKVwiIHwgXCJbXVwiKSBhcyB4KTsgXyB9LCBOb25lKSAtPlxuICAgICAgICBwcCBmIFwiJXNcIiB4XG4gICAgfCBQcGF0X2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHByb3RlY3RfaWRlbnQgZiB0eHRcbiAgICB8IFBwYXRfYXJyYXkgbCAtPiBwcCBmIFwiQFs8Mj5bfCVhfF1AXVwiIChsaXN0IChwYXR0ZXJuMSBjdHh0KSB+c2VwOlwiO1wiKSBsXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IE5vbmUgfSAtPiBwcCBmIFwiKG1vZHVsZUAgXylAIFwiXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IFNvbWUgcyB9IC0+IHBwIGYgXCIobW9kdWxlQCAlcylAIFwiIHNcbiAgICB8IFBwYXRfdHlwZSBsaSAtPiBwcCBmIFwiIyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHBhdF9yZWNvcmQgKGwsIGNsb3NlZCkgLT4gKFxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfcGF0dGVybiBmIChsaSwgcCkgPVxuICAgICAgICAgIG1hdGNoIChsaSwgcCkgd2l0aFxuICAgICAgICAgIHwgKCB7IHR4dCA9IExpZGVudCBzOyBfIH0sXG4gICAgICAgICAgICAgIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSApXG4gICAgICAgICAgICB3aGVuIHMgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNsb3NlZCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8Mj57QDslYUA7fUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGxcbiAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPntAOyVhO199QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbClcbiAgICB8IFBwYXRfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MT4oJWEpQF1cIiAobGlzdCB+c2VwOlwiLEA7XCIgKHBhdHRlcm4xIGN0eHQpKSBsICgqIGxldmVsMSopXG4gICAgfCBQcGF0X2NvbnN0YW50IGMgLT4gcHAgZiBcIiVhXCIgY29uc3RhbnQgY1xuICAgIHwgUHBhdF9pbnRlcnZhbCAoYzEsIGMyKSAtPiBwcCBmIFwiJWEuLiVhXCIgY29uc3RhbnQgYzEgY29uc3RhbnQgYzJcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBwYXRfY29uc3RyYWludCAocCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiglYUA7OkA7JWEpQF1cIiAocGF0dGVybjEgY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQcGF0X2xhenkgcCAtPiBwcCBmIFwiQFs8Mj4obGF6eUA7JWEpQF1cIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9leGNlcHRpb24gcCAtPiBwcCBmIFwiQFs8Mj5leGNlcHRpb25AOyVhQF1cIiAocGF0dGVybjEgY3R4dCkgcFxuICAgIHwgUHBhdF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBwYXRfb3BlbiAobGlkLCBwKSAtPlxuICAgICAgICBsZXQgd2l0aF9wYXJlbiA9XG4gICAgICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHBhdF9hcnJheSBfIHwgUHBhdF9yZWNvcmQgX1xuICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWEgQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgIChwYXJlbiB3aXRoX3BhcmVuIEBAIHBhdHRlcm4xIGN0eHQpXG4gICAgICAgICAgcFxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChwYXR0ZXJuIGN0eHQpIGYgeFxuXG5hbmQgbGFiZWxfZXhwIGN0eHQgZiAobCwgb3B0LCBwKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT5cbiAgICAgICgqIHNpbmdsZSBjYXNlIHBhdHRlcm4gcGFyZW5zIG5lZWRlZCBoZXJlICopXG4gICAgICBwcCBmIFwiJWFAIFwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gIHwgT3B0aW9uYWwgcmVzdCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgIHdoZW4gdHh0ID0gcmVzdCAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPiBwcCBmIFwiPyglcz1AOyVhKUA7XCIgcmVzdCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXNAIFwiIHJlc3QpXG4gICAgICB8IF8gLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIj8lczooJWE9QDslYSlAO1wiIHJlc3QgKHBhdHRlcm4xIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzOiVhQDtcIiByZXN0IChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKSlcbiAgfCBMYWJlbGxlZCBsIC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gd2hlbiB0eHQgPSBsXG4gICAgICAgIC0+XG4gICAgICAgICAgcHAgZiBcIn4lc0A7XCIgbFxuICAgICAgfCBfIC0+IHBwIGYgXCJ+JXM6JWFAO1wiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApXG5cbmFuZCBzdWdhcl9leHByIGN0eHQgZiBlID1cbiAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBmYWxzZVxuICBlbHNlXG4gICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9hcHBseVxuICAgICAgICAoIHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGlkOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICAgICAgYXJncyApXG4gICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIChsYWIsIF8pIC0+IGxhYiA9IE5vbGFiZWwpIGFyZ3MgLT4gKFxuICAgICAgICBsZXQgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IHNlcCByaWdodCBwcmludF9pbmRleFxuICAgICAgICAgICAgaW5kaWNlcyByZW1fYXJncyA9XG4gICAgICAgICAgbGV0IHByaW50X3BhdGggcHBmID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIG0gLT4gcHAgcHBmIFwiLiVhXCIgbG9uZ2lkZW50IG1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIChhc3NpZ24sIHJlbV9hcmdzKSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSwgW10gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aCBwYXRoX3ByZWZpeFxuICAgICAgICAgICAgICAgIGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodDtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgdHJ1ZSwgWyB2IF0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0AgPC1AOzwxIDI+JWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGhcbiAgICAgICAgICAgICAgICBwYXRoX3ByZWZpeCBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHRcbiAgICAgICAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgdjtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoaWQsIExpc3QubWFwIHNuZCBhcmdzKSB3aXRoXG4gICAgICAgIHwgTGlkZW50IFwiIVwiLCBbIGUgXSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdj4hJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlO1xuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICB8IExkb3QgKHBhdGgsICgoXCJnZXRcIiB8IFwic2V0XCIpIGFzIGZ1bmMpKSwgYSA6OiBvdGhlcl9hcmdzIC0+IChcbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBmdW5jID0gXCJzZXRcIiBpblxuICAgICAgICAgICAgbGV0IHByaW50ID0gcHJpbnRfaW5kZXhvcCBhIE5vbmUgYXNzaWduIGluXG4gICAgICAgICAgICBtYXRjaCAocGF0aCwgb3RoZXJfYXJncykgd2l0aFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJBcnJheVwiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi4oXCIgXCJcIiBcIilcIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExpZGVudCBcIlN0cmluZ1wiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi5bXCIgXCJcIiBcIl1cIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkxXCIpLCBpMSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MlwiKSwgaTEgOjogaTIgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTIgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkzXCIpLCBpMSA6OiBpMiA6OiBpMyA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMjsgaTMgXSByZXN0XG4gICAgICAgICAgICB8ICggTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJHZW5hcnJheVwiKSxcbiAgICAgICAgICAgICAgICB7IHBleHBfZGVzYyA9IFBleHBfYXJyYXkgaW5kZXhlczsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSA6OiByZXN0XG4gICAgICAgICAgICAgICkgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIGluZGV4ZXMgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICB8IChMaWRlbnQgcyB8IExkb3QgKF8sIHMpKSwgYSA6OiBpIDo6IHJlc3Qgd2hlbiBmaXJzdF9pcyAnLicgcyAtPlxuICAgICAgICAgICAgKCogZXh0cmFjdCBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0IF4gXCI8LVwiXSxcbiAgICAgICAgICAgICAgIGFjY2VzcyBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXRdIGRpcmVjdGx5XG4gICAgICAgICAgICAqKVxuICAgICAgICAgICAgbGV0IG11bHRpX2luZGljZXMgPSBTdHJpbmcuY29udGFpbnMgcyAnOycgaW5cbiAgICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgICAgbWF0Y2ggaS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgbCB3aGVuIG11bHRpX2luZGljZXMgLT4gbFxuICAgICAgICAgICAgICB8IF8gLT4gWyBpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gbGFzdF9pcyAnLScgcyBpblxuICAgICAgICAgICAgbGV0IGtpbmQgPVxuICAgICAgICAgICAgICAoKiBleHRyYWN0IHRoZSByaWdodCBlbmQgYnJhY2tldCAqKVxuICAgICAgICAgICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBhc3NpZ24gdGhlbiBzLltuIC0gM10gZWxzZSBzLltuIC0gMV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICAgfCAnKScgLT4gKCcoJywgXCIpXCIpXG4gICAgICAgICAgICAgIHwgJ10nIC0+ICgnWycsIFwiXVwiKVxuICAgICAgICAgICAgICB8ICd9JyAtPiAoJ3snLCBcIn1cIilcbiAgICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXRoX3ByZWZpeCA9XG4gICAgICAgICAgICAgIG1hdGNoIGlkIHdpdGggTGRvdCAobSwgXykgLT4gU29tZSBtIHwgXyAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQgPSBTdHJpbmcuc3ViIHMgMCAoMSArIFN0cmluZy5pbmRleCBzIGxlZnQpIGluXG4gICAgICAgICAgICBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgXCI7XCIgcmlnaHRcbiAgICAgICAgICAgICAgKGlmIG11bHRpX2luZGljZXMgdGhlbiBleHByZXNzaW9uIGN0eHQgZWxzZSBzaW1wbGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICBpIHJlc3RcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5hbmQgZXhwcmVzc2lvbiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSlALCVhKVwiIChleHByZXNzaW9uIGN0eHQpXG4gICAgICB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBleHBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9mdW5jdGlvbiBfIHwgUGV4cF9mdW4gXyB8IFBleHBfbWF0Y2ggXyB8IFBleHBfdHJ5IF8gfCBQZXhwX3NlcXVlbmNlIF9cbiAgICB8IFBleHBfbmV3dHlwZSBfXG4gICAgICB3aGVuIGN0eHQucGlwZSB8fCBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IChQZXhwX2lmdGhlbmVsc2UgXyB8IFBleHBfc2VxdWVuY2UgXykgd2hlbiBjdHh0LmlmdGhlbmVsc2UgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfbGV0IF8gfCBQZXhwX2xldG1vZHVsZSBfIHwgUGV4cF9vcGVuIF8gfCBQZXhwX2xldGV4Y2VwdGlvbiBfXG4gICAgfCBQZXhwX2xldG9wIF9cbiAgICAgIHdoZW4gY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2Z1biAobCwgZTAsIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7JWEtPkA7JWFAXVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGUwLCBwKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbmV3dHlwZSAobGlkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyh0eXBlQDslcylAOy0+QDslYUBdXCIgbGlkLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Z1bmN0aW9uIGwgLT4gcHAgZiBcIkBbPGh2PmZ1bmN0aW9uJWFAXVwiIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9tYXRjaCAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjA+QFs8Mj5tYXRjaCAlYUBdQCB3aXRoQF0lYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF90cnkgKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPGh2Mj50cnlAICVhQF1AIEBbPDA+d2l0aCVhQF1AXVwiXG4gICAgICAgICAgKCogXCJ0cnlAO0BbPDI+JWFAXUBcXG53aXRoQFxcbiVhXCIqKVxuICAgICAgICAgIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbGV0IChyZiwgbCwgZSkgLT5cbiAgICAgICAgKCogcHAgZiBcIkBbPDI+bGV0ICVhJWEgaW5AOzwxIC0yPiVhQF1cIlxuICAgICAgICAgICAoKm5vIGluZGVudGF0aW9uIGhlcmUsIGEgbmV3IGxpbmUqKSAqKVxuICAgICAgICAoKiAgIHJlY19mbGFnIHJmICopXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdzIHJlc2V0X2N0eHQpIChyZiwgbClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2FwcGx5IChlLCBsKSAtPiAoXG4gICAgICAgIGlmIG5vdCAoc3VnYXJfZXhwciBjdHh0IGYgeCkgdGhlblxuICAgICAgICAgIG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCBlIHdpdGhcbiAgICAgICAgICB8IGBJbmZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoKE5vbGFiZWwsIF8pIGFzIGFyZzEpOyAoKE5vbGFiZWwsIF8pIGFzIGFyZzIpIF0gLT5cbiAgICAgICAgICAgICAgICAgICgqIEZJWE1FIGFzc29jaWF0aXZpdHkgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtICopXG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7JXNAOyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzEgc1xuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IGBQcmVmaXggcyAtPiAoXG4gICAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5tZW0gcyBbIFwifitcIjsgXCJ+LVwiOyBcIn4rLlwiOyBcIn4tLlwiIF1cbiAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgICgqIFNlZSAjNzIwMDogYXZvaWQgdHVybmluZyAofi0gMSkgaW50byAoLSAxKSB3aGljaCBpc1xuICAgICAgICAgICAgICAgICAgICAgcGFyc2VkIGFzIGFuIGludCBsaXRlcmFsICopXG4gICAgICAgICAgICAgICAgICB8IFsgKF8sIHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdGFudCBfIH0pIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICAgICAgICAgICAgICBlbHNlIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoTm9sYWJlbCwgeCkgXSAtPiBwcCBmIFwiQFs8Mj4lc0A7JWFAXVwiIHMgKHNpbXBsZV9leHByIGN0eHQpIHhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiXG4gICAgICAgICAgICAgICAgKGZ1biBmIChlLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChleHByZXNzaW9uMiBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICgqIHJlc2V0IGhlcmUgb25seSBiZWNhdXNlIFtmdW5jdGlvbixtYXRjaCx0cnksc2VxdWVuY2VdXG4gICAgICAgICAgICAgICAgICAgICBhcmUgbG93ZXIgcHJpb3JpdHkgKikpXG4gICAgICAgICAgICAgICAgKGUsIGwpKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGxpLCBTb21lIGVvKSB3aGVuIG5vdCAoaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpKVxuICAgICAgLT4gKFxuICAgICAgICAoKiBOb3QgZWZmaWNpZW50IEZJWE1FKilcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBjb25zIGxzIC0+IGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIGYgbHMgfnNlcDpcIkA7OjpAO1wiXG4gICAgICAgIHwgYG5vcm1hbCAtPiBwcCBmIFwiQFs8Mj4lYUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX3NldGZpZWxkIChlMSwgbGksIGUyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYUAgPC1AICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTEgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSBlMlxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIChlMSwgZTIsIGVvKSAtPlxuICAgICAgICAoKiBAO0BbPDI+ZWxzZUAgJWFAXUBdICopXG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzwyPmlmQCAlYUBdQDtAWzwyPnRoZW5AICVhQF0lYUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSA9IGV4cHJlc3Npb24gKHVuZGVyX2lmdGhlbmVsc2UgY3R4dCkgaW5cbiAgICAgICAgcHAgZiBmbXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUxIGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMlxuICAgICAgICAgIChmdW4gZiBlbyAtPlxuICAgICAgICAgICAgbWF0Y2ggZW8gd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiQDtAWzwyPmVsc2VAOyVhQF1cIiAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgeFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAoKiBwcCBmIFwiKClcIiAqKSlcbiAgICAgICAgICBlb1xuICAgIHwgUGV4cF9zZXF1ZW5jZSBfIC0+XG4gICAgICAgIGxldCByZWMgc2VxdWVuY2VfaGVscGVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfc2VxdWVuY2UgKGUxLCBlMik7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgc2VxdWVuY2VfaGVscGVyIChlMSA6OiBhY2MpIGUyXG4gICAgICAgICAgfCB2IC0+IExpc3QucmV2ICh2IDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxzdCA9IHNlcXVlbmNlX2hlbHBlciBbXSB4IGluXG4gICAgICAgIHBwIGYgXCJAWzxodj4lYUBdXCIgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIikgbHN0XG4gICAgfCBQZXhwX25ldyBsaSAtPiBwcCBmIFwiQFs8aG92Mj5uZXdAICVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NldGluc3R2YXIgKHMsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA8LUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfb3ZlcnJpZGUgbCAtPlxuICAgICAgICAoKiBGSVhNRSAqKVxuICAgICAgICBsZXQgc3RyaW5nX3hfZXhwcmVzc2lvbiBmIChzLCBlKSA9XG4gICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAID1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPns8JWE+fUBdXCIgKGxpc3Qgc3RyaW5nX3hfZXhwcmVzc2lvbiB+c2VwOlwiO1wiKSBsXG4gICAgfCBQZXhwX2xldG1vZHVsZSAocywgbWUsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgbW9kdWxlQCAlc0AgPUAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfZXhwciByZXNldF9jdHh0KSBtZSAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoY2QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgZXhjZXB0aW9uQCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICAgICAgICBjZCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Fzc2VydCBlIC0+IHBwIGYgXCJAWzxob3YyPmFzc2VydEAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX2xhenkgZSAtPiBwcCBmIFwiQFs8aG92Mj5sYXp5QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAoKiBQZXhwX3BvbHk6IGltcG9zc2libGUgYnV0IHdlIHNob3VsZCBwcmludCBpdCBhbnl3YXksIHJhdGhlciB0aGFuXG4gICAgICAgYXNzZXJ0IGZhbHNlICopXG4gICAgfCBQZXhwX3BvbHkgKGUsIE5vbmUpIC0+IHBwIGYgXCJAWzxob3YyPiFwb2x5IUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPighcG9seSFAICVhQCA6ICVhKUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvLnBvcGVuX2V4cHIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF92YXJpYW50IChsLCBTb21lIGVvKSAtPiBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgIHwgUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5AWzx2PiVhQCwlYUBdIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdfb3AgY3R4dCkgbGV0X1xuICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nX29wIGN0eHQpKVxuICAgICAgICAgIGFuZHMgKGV4cHJlc3Npb24gY3R4dCkgYm9keVxuICAgIHwgUGV4cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gcHAgZiBcIi5cIlxuICAgIHwgXyAtPiBleHByZXNzaW9uMSBjdHh0IGYgeFxuXG5hbmQgZXhwcmVzc2lvbjEgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfb2JqZWN0IGNzIC0+IHBwIGYgXCIlYVwiIChjbGFzc19zdHJ1Y3R1cmUgY3R4dCkgY3NcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjIgY3R4dCBmIHhcbigqIHVzZWQgaW4gW1BleHBfYXBwbHldICopXG5cbmFuZCBleHByZXNzaW9uMiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9maWVsZCAoZSwgbGkpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhLiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NlbmQgKGUsIHMpIC0+IHBwIGYgXCJAWzxob3YyPiVhIyVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBzLnR4dFxuICAgIHwgXyAtPiBzaW1wbGVfZXhwciBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfY29uc3RydWN0IF8gd2hlbiBpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkgLT4gKFxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYG5pbCAtPiBwcCBmIFwiW11cIlxuICAgICAgICB8IGB0dXBsZSAtPiBwcCBmIFwiKClcIlxuICAgICAgICB8IGBsaXN0IHhzIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aHYwPlslYV1AXVwiXG4gICAgICAgICAgICAgIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgICAgIHhzXG4gICAgICAgIHwgYHNpbXBsZSB4IC0+IGxvbmdpZGVudCBmIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfaWRlbnQgbGkgLT4gbG9uZ2lkZW50X2xvYyBmIGxpXG4gICAgKCogKG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCB4IHdpdGggKilcbiAgICAoKiB8YE5vcm1hbCAtPiBsb25naWRlbnRfbG9jIGYgbGkgKilcbiAgICAoKiB8IGBQcmVmaXggXyB8IGBJbmZpeCBfIC0+IHBwIGYgXCIoICVhIClcIiBsb25naWRlbnRfbG9jIGxpKSAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBjIC0+IGNvbnN0YW50IGYgY1xuICAgIHwgUGV4cF9wYWNrIG1lIC0+IHBwIGYgXCIobW9kdWxlQDslYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBleHBfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWEpQF1cIiAobGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgfnNlcDpcIixAO1wiKSBsXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhIDogJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX2NvZXJjZSAoZSwgY3RvMSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWElYSA6PiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgKG9wdGlvbiAoY29yZV90eXBlIGN0eHQpIH5maXJzdDpcIiA6IFwiIH5sYXN0OlwiIFwiKVxuICAgICAgICAgIGN0bzFcbiAgICAgICAgICAoKiBubyBzZXAgaGludCopIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICBjdFxuICAgIHwgUGV4cF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUGV4cF9yZWNvcmQgKGwsIGVvKSAtPlxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiBmIChsaSwgZSkgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0OyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH1cbiAgICAgICAgICAgIHdoZW4gbGkudHh0ID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj57QDslYSVhQF1AO31AXVwiICgqIFwiQFs8aG92Mj57JWElYX1AXVwiICopXG4gICAgICAgICAgKG9wdGlvbiB+bGFzdDpcIiB3aXRoQDtcIiAoc2ltcGxlX2V4cHIgY3R4dCkpXG4gICAgICAgICAgZW9cbiAgICAgICAgICAobGlzdCBsb25naWRlbnRfeF9leHByZXNzaW9uIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX2FycmF5IGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8Mj5bfCVhfF1AXUBdXCJcbiAgICAgICAgICAobGlzdCAoc2ltcGxlX2V4cHIgKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF93aGlsZSAoZTEsIGUyKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9IFwiQFs8Mj53aGlsZUA7JWFAO2RvQDslYUA7ZG9uZUBdXCIgaW5cbiAgICAgICAgcHAgZiBmbXQgKGV4cHJlc3Npb24gY3R4dCkgZTEgKGV4cHJlc3Npb24gY3R4dCkgZTJcbiAgICB8IFBleHBfZm9yIChzLCBlMSwgZTIsIGRmLCBlMykgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPGh2Mj5AWzwyPmZvciAlYSA9QDslYUA7JWElYUA7ZG9AXUA7JWFAXUA7ZG9uZUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uIGN0eHQgaW5cbiAgICAgICAgcHAgZiBmbXQgKHBhdHRlcm4gY3R4dCkgcyBleHByZXNzaW9uIGUxIGRpcmVjdGlvbl9mbGFnIGRmIGV4cHJlc3Npb24gZTJcbiAgICAgICAgICBleHByZXNzaW9uIGUzXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGV4cHJlc3Npb24gY3R4dCkgZiB4XG5cbmFuZCBhdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChhdHRyaWJ1dGUgY3R4dCBmKSBsXG5hbmQgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChpdGVtX2F0dHJpYnV0ZSBjdHh0IGYpIGxcblxuYW5kIGF0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgaXRlbV9hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCBmIHggPVxuICAoKiBub3RlOiB2YWx1ZV9kZXNjcmlwdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICAgICAgICBidXQgdGhleSdyZSBhbHJlYWR5IHByaW50ZWQgYnkgdGhlIGNhbGxlcnMgdGhpcyBtZXRob2QgKilcbiAgcHAgZiBcIkBbPGhvdjI+JWElYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSB4LnB2YWxfdHlwZVxuICAgIChmdW4gZiB4IC0+XG4gICAgICBpZiB4LnB2YWxfcHJpbSA8PiBbXSB0aGVuXG4gICAgICAgIHBwIGYgXCJAID1AICVhXCIgKGxpc3QgY29uc3RhbnRfc3RyaW5nKSB4LnB2YWxfcHJpbSlcbiAgICB4XG5cbmFuZCBleHRlbnNpb24gY3R4dCBmIChzLCBlKSA9IHBwIGYgXCJAWzwyPlslJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPVxuICBwcCBmIFwiQFs8Mj5bJSUlJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gIHBwIGYgXCJAWzxob3YyPmV4Y2VwdGlvbkAgJWFAXSVhXCJcbiAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgeC5wdHlleG5fY29uc3RydWN0b3IgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4bl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3RmX2Rlc2Mgd2l0aFxuICB8IFBjdGZfaW5oZXJpdCBjdCAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJWFAXSVhXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfdmFsIChzLCBtZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIEAgJWElYSVzQCA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfbWV0aG9kIChzLCBwZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kICVhICVhJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludEAgJWFAID1AICVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjdGZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdGZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiB7IHBjc2lnX3NlbGYgPSBjdDsgcGNzaWdfZmllbGRzID0gbDsgXyB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0QFs8MT4lYUBdQCAlYUBdQCBlbmRAXVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbnk7IHB0eXBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT4gKClcbiAgICAgIHwgY3QgLT4gcHAgZiBcIiAoJWEpXCIgKGNvcmVfdHlwZSBjdHh0KSBjdClcbiAgICBjdFxuICAgIChsaXN0IChjbGFzc190eXBlX2ZpZWxkIGN0eHQpIH5zZXA6XCJAO1wiKVxuICAgIGxcblxuKCogY2FsbCBbY2xhc3Nfc2lnbmF0dXJlXSBjYWxsZWQgYnkgW2NsYXNzX3NpZ25hdHVyZV0gKilcbmFuZCBjbGFzc190eXBlIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3R5X2Rlc2Mgd2l0aFxuICB8IFBjdHlfc2lnbmF0dXJlIGNzIC0+XG4gICAgICBjbGFzc19zaWduYXR1cmUgY3R4dCBmIGNzO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2NvbnN0ciAobGksIGwpIC0+XG4gICAgICBwcCBmIFwiJWElYSVhXCJcbiAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KSB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfYXJyb3cgKGwsIGNvLCBjbCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY28pIChjbGFzc190eXBlIGN0eHQpIGNsXG4gIHwgUGN0eV9leHRlbnNpb24gZSAtPlxuICAgICAgZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X29wZW4gKG8sIGUpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc190eXBlIGN0eHQpIGVcblxuKCogW2NsYXNzIHR5cGUgYSA9IG9iamVjdCBlbmRdICopXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsID1cbiAgbGV0IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24ga3dkIGYgeCA9XG4gICAgbGV0IHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSA9IHggaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAID1AICVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIilcbiAgICAgICAgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgeHNcblxuYW5kIGNsYXNzX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY2ZfZGVzYyB3aXRoXG4gIHwgUGNmX2luaGVyaXQgKG92ZiwgY2UsIHNvKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJXNAICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICAgICAgKGZ1biBmIHNvIC0+XG4gICAgICAgICAgbWF0Y2ggc28gd2l0aCBOb25lIC0+ICgpIHwgU29tZSBzIC0+IHBwIGYgXCJAIGFzICVzXCIgcy50eHQpXG4gICAgICAgIHNvIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwlcyAlYSVzID1AOyVhQF0lYVwiIChvdmVycmlkZSBvdmYpIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCB2aXJ0dWFsICVhICVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCB2aXJ0dWFsICVhJXMgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIGxldCBiaW5kIGUgPVxuICAgICAgICBiaW5kaW5nIGN0eHQgZlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgcztcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHB2Yl9leHByID0gZTtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdmJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kJXMgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBwcml2YXRlX2ZsYWcgcGZcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgU29tZSBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVzIDpAOyVhPUA7JWFcIiBzLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBOb25lKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBiaW5kIGVcbiAgICAgICAgICB8IF8gLT4gYmluZCBlKVxuICAgICAgICBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnQgJWEgPUA7JWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDEgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2luaXRpYWxpemVyIGUgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaXRpYWxpemVyQCAlYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY2ZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjZl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIHsgcGNzdHJfc2VsZiA9IHA7IHBjc3RyX2ZpZWxkcyA9IGwgfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdCVhQDslYUBdQDtlbmRAXVwiXG4gICAgKGZ1biBmIHAgLT5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50IF8gLT4gcHAgZiBcIiAlYVwiIChwYXR0ZXJuIGN0eHQpIHBcbiAgICAgIHwgXyAtPiBwcCBmIFwiICglYSlcIiAocGF0dGVybiBjdHh0KSBwKVxuICAgIHBcbiAgICAobGlzdCAoY2xhc3NfZmllbGQgY3R4dCkpXG4gICAgbFxuXG5hbmQgY2xhc3NfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGNsX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjbGFzc19leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGNsX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGNsX2Rlc2Mgd2l0aFxuICAgIHwgUGNsX3N0cnVjdHVyZSBjcyAtPiBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIGNzXG4gICAgfCBQY2xfZnVuIChsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bkAgJWFAIC0+QCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGVvLCBwKSAoY2xhc3NfZXhwciBjdHh0KSBlXG4gICAgfCBQY2xfbGV0IChyZiwgbCwgY2UpIC0+XG4gICAgICAgIHBwIGYgXCIlYUAgaW5AICVhXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbCkgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICB8IFBjbF9hcHBseSAoY2UsIGwpIC0+XG4gICAgICAgIHBwIGYgXCIoKCVhKUAgJWEpXCJcbiAgICAgICAgICAoKiBDZjogIzcyMDAgKikgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgICAgICBjZVxuICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgbFxuICAgIHwgUGNsX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgaWYgbCA8PiBbXSB0aGVuIHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQY2xfY29uc3RyYWludCAoY2UsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhQCA6QCAlYSlcIiAoY2xhc3NfZXhwciBjdHh0KSBjZSAoY2xhc3NfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGNsX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGNsX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc19leHByIGN0eHQpIGVcblxuYW5kIG1vZHVsZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbXR5X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgbXQyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yICgpIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAocywgbXQxKSwgbXQyKSAtPiAoXG4gICAgICAgIG1hdGNoIHMudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10MVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgICAgIHwgU29tZSBuYW1lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yQCAoJXNAIDpAICVhKUAgLT5AICVhQF1cIiBuYW1lXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDEgKG1vZHVsZV90eXBlIGN0eHQpIG10MilcbiAgICB8IFBtdHlfd2l0aCAobXQsIFtdKSAtPiBtb2R1bGVfdHlwZSBjdHh0IGYgbXRcbiAgICB8IFBtdHlfd2l0aCAobXQsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCB3aXRoQCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdFxuICAgICAgICAgIChsaXN0ICh3aXRoX2NvbnN0cmFpbnQgY3R4dCkgfnNlcDpcIkAgYW5kQCBcIilcbiAgICAgICAgICBsXG4gICAgfCBfIC0+IG1vZHVsZV90eXBlMSBjdHh0IGYgeFxuXG5hbmQgd2l0aF9jb25zdHJhaW50IGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUHdpdGhfdHlwZSAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgPUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kdWxlIChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlIChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG4gIHwgUHdpdGhfdHlwZXN1YnN0IChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA6PUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kc3Vic3QgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG5cbmFuZCBtb2R1bGVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuIG1vZHVsZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfYWxpYXMgbGkgLT4gcHAgZiBcIihtb2R1bGUgJWEpXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9zaWduYXR1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5zaWdAICVhQF1AIGVuZEBdXCIgKCogXCJAWzxob3Y+c2lnQCAlYUAgZW5kQF1cIiAqKVxuICAgICAgICAgIChsaXN0IChzaWduYXR1cmVfaXRlbSBjdHh0KSlcbiAgICAgICAgICBzXG4gICAgICAgICgqIEZJWE1FIHdyb25nIGluZGVudGF0aW9uKilcbiAgICB8IFBtdHlfdHlwZW9mIG1lIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgb2ZAICVhQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKG1vZHVsZV90eXBlIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzaWduYXR1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZV9pdGVtIGN0eHQgZiB4IDogdW5pdCA9XG4gIG1hdGNoIHgucHNpZ19kZXNjIHdpdGhcbiAgfCBQc2lnX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHNpZ190eXBlc3Vic3QgbCAtPlxuICAgICAgKCogUHNpZ190eXBlc3Vic3QgaXMgbmV2ZXIgcmVjdXJzaXZlLCBidXQgd2Ugc3BlY2lmeSBbUmVjdXJzaXZlXSBoZXJlIHRvXG4gICAgICAgICBhdm9pZCBwcmludGluZyBhIFtub25yZWNdIGZsYWcsIHdoaWNoIHdvdWxkIGJlIHJlamVjdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAqKVxuICAgICAgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKFJlY3Vyc2l2ZSwgZmFsc2UsIGwpXG4gIHwgUHNpZ192YWx1ZSB2ZCAtPlxuICAgICAgbGV0IGludHJvID0gaWYgdmQucHZhbF9wcmltID0gW10gdGhlbiBcInZhbFwiIGVsc2UgXCJleHRlcm5hbFwiIGluXG4gICAgICBwcCBmIFwiQFs8Mj4lc0AgJWFAIDpAICVhQF0lYVwiIGludHJvIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc2lnX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHNpZ19jbGFzcyBsIC0+IChcbiAgICAgIGxldCBjbGFzc19kZXNjcmlwdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAOzpAOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVzY3JpcHRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc2lnX21vZHVsZVxuICAgICAgKHtcbiAgICAgICAgIHBtZF90eXBlID0geyBwbXR5X2Rlc2MgPSBQbXR5X2FsaWFzIGFsaWFzOyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHBtZCkgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICBsb25naWRlbnRfbG9jIGFsaWFzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R1bGUgcG1kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDpAICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kc3Vic3QgcG1zIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDo9QCAlYUBdJWFcIiBwbXMucG1zX25hbWUudHh0IGxvbmdpZGVudF9sb2NcbiAgICAgICAgcG1zLnBtc19tYW5pZmVzdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtcy5wbXNfYXR0cmlidXRlc1xuICB8IFBzaWdfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+b3BlbiVzQCAlYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3QgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIC0+XG4gICAgICBsZXQgbWQgPVxuICAgICAgICBtYXRjaCBtZCB3aXRoIE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGFzdCBpbnZhcmlhbnQgKikgfCBTb21lIG10IC0+IG10XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlc0AgOj1AICVhQF0lYVwiIHMudHh0IChtb2R1bGVfdHlwZSBjdHh0KSBtZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHNpZ19yZWNtb2R1bGUgZGVjbHMgLT5cbiAgICAgIGxldCByZWMgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmID8oZmlyc3QgPSB0cnVlKSBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBwbWQgOjogdGwgLT5cbiAgICAgICAgICAgIGlmIG5vdCBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgIHBwIGYgXCJAIEBbPGhvdjI+YW5kQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiB+Zmlyc3Q6ZmFsc2UgdGxcbiAgICAgIGluXG4gICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgZGVjbHNcbiAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIG1vZHVsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wbW9kX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbW9kX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2Rfc3RydWN0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2Mj5zdHJ1Y3RAO0BbPDA+JWFAXUA7PDEgLTI+ZW5kQF1cIlxuICAgICAgICAgIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSB+c2VwOlwiQFxcblwiKVxuICAgICAgICAgIHNcbiAgICB8IFBtb2RfY29uc3RyYWludCAobWUsIG10KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWFAIDpAICVhKUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lIChtb2R1bGVfdHlwZSBjdHh0KSBtdFxuICAgIHwgUG1vZF9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIG1lKSAtPiBwcCBmIFwiZnVuY3RvciAoKUA7LT5AOyVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChzLCBtdCksIG1lKSAtPlxuICAgICAgICBwcCBmIFwiZnVuY3RvckAgKCVzQCA6QCAlYSlAOy0+QDslYVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2FwcGx5IChtZTEsIG1lMikgLT5cbiAgICAgICAgcHAgZiBcIiglYSkoJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lMSAobW9kdWxlX2V4cHIgY3R4dCkgbWUyXG4gICAgICAgICgqIENmOiAjNzIwMCAqKVxuICAgIHwgUG1vZF91bnBhY2sgZSAtPiBwcCBmIFwiKHZhbEAgJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUG1vZF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcblxuYW5kIHN0cnVjdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBwYXlsb2FkIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChlLCBhdHRycykgfSBdIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQU3RyIHggLT4gc3RydWN0dXJlIGN0eHQgZiB4XG4gIHwgUFR5cCB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgfCBQU2lnIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIHNpZ25hdHVyZSBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIE5vbmUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeDtcbiAgICAgIHBwIGYgXCIgd2hlbiBcIjtcbiAgICAgIGV4cHJlc3Npb24gY3R4dCBmIGVcblxuKCogdHJhbnNmb3JtIFtmID0gZnVuIGcgaCAtPiAuLl0gdG8gW2YgZyBoID0gLi4uIF0gY291bGQgYmUgaW1wcm92ZWQgKilcbmFuZCBiaW5kaW5nIGN0eHQgZiB7IHB2Yl9wYXQgPSBwOyBwdmJfZXhwciA9IHg7IF8gfSA9XG4gICgqIC5wdmJfYXR0cmlidXRlcyBoYXZlIGFscmVhZHkgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIsICNiaW5kaW5ncyAqKVxuICBsZXQgcmVjIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZiB4ID1cbiAgICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICBlbHNlXG4gICAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfZnVuIChsYWJlbCwgZW8sIHAsIGUpIC0+XG4gICAgICAgICAgaWYgbGFiZWwgPSBOb2xhYmVsIHRoZW5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobGFiZWwsIGVvLCBwKSBwcF9wcmludF9wZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIGVcbiAgICAgIHwgUGV4cF9uZXd0eXBlIChzdHIsIGUpIC0+XG4gICAgICAgICAgcHAgZiBcIih0eXBlQCAlcylAICVhXCIgc3RyLnR4dCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgIHwgXyAtPiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGluXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdHl2YXJzIGluXG4gIGxldCBpc19kZXN1Z2FyZWRfZ2FkdCBwIGUgPVxuICAgIGxldCBnYWR0X3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIFNvbWUgKHBhdCwgYXJnc190eXZhcnMsIHJ0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgZ2FkdF9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBnYWR0X2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBnYWR0X2V4cCA9IGdhZHRfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAoZ2FkdF9wYXR0ZXJuLCBnYWR0X2V4cCkgd2l0aFxuICAgIHwgU29tZSAocCwgcHRfdHl2YXJzLCBwdF9jdCksIFNvbWUgKGVfdHl2YXJzLCBlLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW4gU29tZSAocCwgcHRfdHl2YXJzLCBlX2N0LCBlKSBlbHNlIE5vbmVcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCB7XG4gICAgIHBwYXRfZGVzYyA9XG4gICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cCkgKTtcbiAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgIF87XG4gICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdCAoY29yZV90eXBlIGN0eHQpIHR5cFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBlbHNlXG4gICAgbWF0Y2ggaXNfZGVzdWdhcmVkX2dhZHQgcCB4IHdpdGhcbiAgICB8IFNvbWUgKHAsIFtdLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBTb21lIChwLCB0eXZhcnMsIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogdHlwZUA7JWEuQDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgIChsaXN0IHBwX3ByaW50X3N0cmluZyB+c2VwOlwiQDtcIilcbiAgICAgICAgICAodHl2YXJzX3N0ciB0eXZhcnMpIChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwLCB0eSk7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT4gKFxuICAgICAgICAgICAgKCogc3BlY2lhbCBjYXNlIGZvciB0aGUgZmlyc3QqKVxuICAgICAgICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVhQDs6QDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgICAgICAgICB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVhQDs6QDslYSlAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgdHkgKGV4cHJlc3Npb24gY3R4dCkgeClcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIHhcbiAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHgpXG5cbigqIFtpbl0gaXMgbm90IHByaW50ZWQgKilcbmFuZCBiaW5kaW5ncyBjdHh0IGYgKHJmLCBsKSA9XG4gIGxldCBiaW5kaW5nIGt3ZCByZiBmIHggPVxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWFAXSVhXCIga3dkIHJlY19mbGFnIHJmIChiaW5kaW5nIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdmJfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGJpbmRpbmcgXCJsZXRcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiIChiaW5kaW5nIFwibGV0XCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmcgXCJhbmRcIiBOb25yZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgYmluZGluZ19vcCBjdHh0IGYgeCA9XG4gIG1hdGNoICh4LnBib3BfcGF0LCB4LnBib3BfZXhwKSB3aXRoXG4gIHwgKCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gcHZhcjsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAge1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGV2YXI7IF8gfTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIF87XG4gICAgICB9IClcbiAgICB3aGVuIHB2YXIgPSBldmFyIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlc0BdXCIgeC5wYm9wX29wLnR4dCBldmFyXG4gIHwgcGF0LCBleHAgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVhQDs9QDslYUBdXCIgeC5wYm9wX29wLnR4dCAocGF0dGVybiBjdHh0KSBwYXRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZXhwXG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucHN0cl9kZXNjIHdpdGhcbiAgfCBQc3RyX2V2YWwgKGUsIGF0dHJzKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+OzslYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX3R5cGUgKF8sIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBQc3RyX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHN0cl92YWx1ZSAocmYsIGwpIC0+XG4gICAgICAoKiBwcCBmIFwiQFs8aG92Mj5sZXQgJWElYUBdXCIgIHJlY19mbGFnIHJmIGJpbmRpbmdzIGwgKilcbiAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKVxuICB8IFBzdHJfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzdHJfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc3RyX21vZHVsZSB4IC0+XG4gICAgICBsZXQgcmVjIG1vZHVsZV9oZWxwZXIgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChhcmdfb3B0LCBtZScpOyBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAobWF0Y2ggYXJnX29wdCB3aXRoXG4gICAgICAgICAgICB8IFVuaXQgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgICAgIHwgTmFtZWQgKHMsIG10KSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJXM6JWEpXCJcbiAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQpO1xuICAgICAgICAgICAgbW9kdWxlX2hlbHBlciBtZSdcbiAgICAgICAgfCBtZSAtPiBtZVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZSAlcyVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgeC5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChmdW4gZiBtZSAtPlxuICAgICAgICAgIGxldCBtZSA9IG1vZHVsZV9oZWxwZXIgbWUgaW5cbiAgICAgICAgICBtYXRjaCBtZSB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAobWUnLCAoeyBwbXR5X2Rlc2MgPSBQbXR5X2lkZW50IF8gfCBQbXR5X3NpZ25hdHVyZSBfOyBfIH0gYXMgbXQpKTtcbiAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiIDpAOyVhQDs9QDslYUA7XCIgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICAgIG1lJ1xuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiID1AICVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lKVxuICAgICAgICB4LnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wbWJfYXR0cmlidXRlc1xuICB8IFBzdHJfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPDI+b3BlbiVzQDslYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzdHJfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgZXh0cmFjdF9jbGFzc19hcmdzIGNsID1cbiAgICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2Z1biAobCwgZW8sIHAsIGNsJyk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBsb29wICgobCwgZW8sIHApIDo6IGFjYykgY2wnXG4gICAgICAgICAgfCBjbCAtPiAoTGlzdC5yZXYgYWNjLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFyZ3MsIGNsID0gbG9vcCBbXSBjbCBpblxuICAgICAgICBsZXQgY29uc3RyLCBjbCA9XG4gICAgICAgICAgbWF0Y2ggY2wgd2l0aFxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9jb25zdHJhaW50IChjbCcsIGN0KTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIChTb21lIGN0LCBjbCcpXG4gICAgICAgICAgfCBfIC0+IChOb25lLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgKGFyZ3MsIGNvbnN0ciwgY2wpXG4gICAgICBpblxuICAgICAgbGV0IGNsYXNzX2NvbnN0cmFpbnQgZiBjdCA9IHBwIGYgXCI6IEBbJWFAXSBcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCBpblxuICAgICAgbGV0IGNsYXNzX2RlY2xhcmF0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIGxldCBhcmdzLCBjb25zdHIsIGNsID0gZXh0cmFjdF9jbGFzc19hcmdzIHgucGNpX2V4cHIgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzICVhJWE9QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHRcbiAgICAgICAgICAobGlzdCAobGFiZWxfZXhwIGN0eHQpKVxuICAgICAgICAgIGFyZ3MgKG9wdGlvbiBjbGFzc19jb25zdHJhaW50KSBjb25zdHIgKGNsYXNzX2V4cHIgY3R4dCkgY2xcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzdHJfcHJpbWl0aXZlIHZkIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5leHRlcm5hbEAgJWFAIDpAICVhQF0lYVwiIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV9leHByIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9yZWNtb2R1bGUgZGVjbHMgLT4gKFxuICAgICAgKCogMy4wNyAqKVxuICAgICAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzOiVhQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgfCBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggZGVjbHMgd2l0aFxuICAgICAgfCAoeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIpXG4gICAgICAgIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOiVhQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IHBtYiA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlc0AgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIHR5cGVfcGFyYW0gY3R4dCBmIChjdCwgKGEsIGIpKSA9XG4gIHBwIGYgXCIlcyVzJWFcIiAodHlwZV92YXJpYW5jZSBhKSAodHlwZV9pbmplY3Rpdml0eSBiKSAoY29yZV90eXBlIGN0eHQpIGN0XG5cbmFuZCB0eXBlX3BhcmFtcyBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiJWEgXCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsQDtcIikgbFxuXG5hbmQgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCBleHBvcnRlZCwgbCkgPVxuICBsZXQgdHlwZV9kZWNsIGt3ZCByZiBmIHggPVxuICAgIGxldCBlcSA9XG4gICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCAmJiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuIFwiXCJcbiAgICAgIGVsc2UgaWYgZXhwb3J0ZWQgdGhlbiBcIiA9XCJcbiAgICAgIGVsc2UgXCIgOj1cIlxuICAgIGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzJXMlYUBdJWFcIiBrd2Qgbm9ucmVjX2ZsYWcgcmYgKHR5cGVfcGFyYW1zIGN0eHQpXG4gICAgICB4LnB0eXBlX3BhcmFtcyB4LnB0eXBlX25hbWUudHh0IGVxICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwZV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHR5cGVfZGVjbCBcInR5cGVcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiICh0eXBlX2RlY2wgXCJ0eXBlXCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKHR5cGVfZGVjbCBcImFuZFwiIFJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCByZWNvcmRfZGVjbGFyYXRpb24gY3R4dCBmIGxibHMgPVxuICBsZXQgdHlwZV9yZWNvcmRfZmllbGQgZiBwbGQgPVxuICAgIHBwIGYgXCJAWzwyPiVhJXM6QDslYUA7JWFAXVwiIG11dGFibGVfZmxhZyBwbGQucGxkX211dGFibGUgcGxkLnBsZF9uYW1lLnR4dFxuICAgICAgKGNvcmVfdHlwZSBjdHh0KSBwbGQucGxkX3R5cGUgKGF0dHJpYnV0ZXMgY3R4dCkgcGxkLnBsZF9hdHRyaWJ1dGVzXG4gIGluXG4gIHBwIGYgXCJ7QFxcbiVhfVwiIChsaXN0IHR5cGVfcmVjb3JkX2ZpZWxkIH5zZXA6XCI7QFxcblwiKSBsYmxzXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgKCogdHlwZV9kZWNsYXJhdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICBidXQgaXQncyBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCAqKVxuICBsZXQgcHJpdiBmID1cbiAgICBtYXRjaCB4LnB0eXBlX3ByaXZhdGUgd2l0aCBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJAO3ByaXZhdGVcIlxuICBpblxuICBsZXQgbWFuaWZlc3QgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT5cbiAgICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgdGhlblxuICAgICAgICAgIHBwIGYgXCIldEA7JWFcIiBwcml2IChjb3JlX3R5cGUgY3R4dCkgeVxuICAgICAgICBlbHNlIHBwIGYgXCJAOyVhXCIgKGNvcmVfdHlwZSBjdHh0KSB5XG4gIGluXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBmIHBjZCA9XG4gICAgcHAgZiBcInxAO1wiO1xuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgKCBwY2QucGNkX25hbWUudHh0LFxuICAgICAgICBwY2QucGNkX3ZhcnMsXG4gICAgICAgIHBjZC5wY2RfYXJncyxcbiAgICAgICAgcGNkLnBjZF9yZXMsXG4gICAgICAgIHBjZC5wY2RfYXR0cmlidXRlcyApXG4gIGluXG4gIGxldCByZXByIGYgPVxuICAgIGxldCBpbnRybyBmID0gaWYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiAoKSBlbHNlIHBwIGYgXCJAOz1cIiBpblxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IHhzIC0+XG4gICAgICAgIGxldCB2YXJpYW50cyBmbXQgeHMgPVxuICAgICAgICAgIGlmIHhzID0gW10gdGhlbiBwcCBmbXQgXCIgfFwiXG4gICAgICAgICAgZWxzZSBwcCBmbXQgXCJAXFxuJWFcIiAobGlzdCB+c2VwOlwiQFxcblwiIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSB4c1xuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiJXQldCVhXCIgaW50cm8gcHJpdiB2YXJpYW50cyB4c1xuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICB8IFB0eXBlX3JlY29yZCBsIC0+IHBwIGYgXCIldCV0QDslYVwiIGludHJvIHByaXYgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsXG4gICAgfCBQdHlwZV9vcGVuIC0+IHBwIGYgXCIldCV0QDsuLlwiIGludHJvIHByaXZcbiAgaW5cbiAgbGV0IGNvbnN0cmFpbnRzIGYgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoY3QxLCBjdDIsIF8pIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPkAgY29uc3RyYWludEAgJWFAID1AICVhQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyKVxuICAgICAgeC5wdHlwZV9jc3Ryc1xuICBpblxuICBwcCBmIFwiJXQldCV0XCIgbWFuaWZlc3QgcmVwciBjb25zdHJhaW50c1xuXG5hbmQgdHlwZV9leHRlbnNpb24gY3R4dCBmIHggPVxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGYgeCA9XG4gICAgcHAgZiBcIkBcXG58QDslYVwiIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCkgeFxuICBpblxuICBwcCBmIFwiQFs8Mj50eXBlICVhJWEgKz0gJWFAICVhQF0lYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBwcCBmIFwiJWFAO1wiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLFwiKSBsKVxuICAgIHgucHR5ZXh0X3BhcmFtcyBsb25naWRlbnRfbG9jIHgucHR5ZXh0X3BhdGggcHJpdmF0ZV9mbGFnXG4gICAgeC5wdHlleHRfcHJpdmF0ZSAoKiBDZjogIzcyMDAgKilcbiAgICAobGlzdCB+c2VwOlwiXCIgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgIHgucHR5ZXh0X2NvbnN0cnVjdG9ycyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZiAobmFtZSwgdmFycywgYXJncywgcmVzLCBhdHRycykgPVxuICBsZXQgbmFtZSA9IG1hdGNoIG5hbWUgd2l0aCBcIjo6XCIgLT4gXCIoOjopXCIgfCBzIC0+IHMgaW5cbiAgbGV0IHBwX3ZhcnMgZiB2cyA9XG4gICAgbWF0Y2ggdnMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHZzIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSB2c1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHBwIGYgXCIlcyVhQDslYVwiIG5hbWVcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiAoKVxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgU29tZSByIC0+XG4gICAgICBwcCBmIFwiJXM6QDslYSVhQDslYVwiIG5hbWUgcHBfdmFycyB2YXJzXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gY29yZV90eXBlMSBjdHh0IGYgclxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiXG4gICAgICAgICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpXG4gICAgICAgICAgICAgICAgbCAoY29yZV90eXBlMSBjdHh0KSByXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbCAoY29yZV90eXBlMSBjdHh0KSByKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCBmIHggPVxuICAoKiBDZjogIzcyMDAgKilcbiAgbWF0Y2ggeC5wZXh0X2tpbmQgd2l0aFxuICB8IFBleHRfZGVjbCAodiwgbCwgcikgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgICAoeC5wZXh0X25hbWUudHh0LCB2LCBsLCByLCB4LnBleHRfYXR0cmlidXRlcylcbiAgfCBQZXh0X3JlYmluZCBsaSAtPlxuICAgICAgcHAgZiBcIiVzQDs9QDslYSVhXCIgeC5wZXh0X25hbWUudHh0IGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNhc2VfbGlzdCBjdHh0IGYgbCA6IHVuaXQgPVxuICBsZXQgYXV4IGYgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSA9XG4gICAgcHAgZiBcIkA7fCBAWzwyPiVhJWFAOy0+QDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcGNfbGhzXG4gICAgICAob3B0aW9uIChleHByZXNzaW9uIGN0eHQpIH5maXJzdDpcIkA7d2hlbkA7XCIpXG4gICAgICBwY19ndWFyZFxuICAgICAgKGV4cHJlc3Npb24gKHVuZGVyX3BpcGUgY3R4dCkpXG4gICAgICBwY19yaHNcbiAgaW5cbiAgbGlzdCBhdXggZiBsIH5zZXA6XCJcIlxuXG5hbmQgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQgZiAobCwgZSkgPVxuICBsZXQgc2ltcGxlX25hbWUgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBTb21lIGxcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGV4cHJlc3Npb24yIGN0eHQgZiBlICgqIGxldmVsIDIqKVxuICB8IE9wdGlvbmFsIHN0ciAtPlxuICAgICAgaWYgU29tZSBzdHIgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCI/JXNcIiBzdHJcbiAgICAgIGVsc2UgcHAgZiBcIj8lczolYVwiIHN0ciAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICB8IExhYmVsbGVkIGxibCAtPlxuICAgICAgaWYgU29tZSBsYmwgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCJ+JXNcIiBsYmxcbiAgICAgIGVsc2UgcHAgZiBcIn4lczolYVwiIGxibCAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50IGYgeCA9XG4gIG1hdGNoIHgucGRpcmFfZGVzYyB3aXRoXG4gIHwgUGRpcl9zdHJpbmcgcyAtPiBwcCBmIFwiQCAlU1wiIHNcbiAgfCBQZGlyX2ludCAobiwgTm9uZSkgLT4gcHAgZiBcIkAgJXNcIiBuXG4gIHwgUGRpcl9pbnQgKG4sIFNvbWUgbSkgLT4gcHAgZiBcIkAgJXMlY1wiIG4gbVxuICB8IFBkaXJfaWRlbnQgbGkgLT4gcHAgZiBcIkAgJWFcIiBsb25naWRlbnQgbGlcbiAgfCBQZGlyX2Jvb2wgYiAtPiBwcCBmIFwiQCAlc1wiIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG5sZXQgdG9wbGV2ZWxfcGhyYXNlIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFB0b3BfZGVmIHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0KSkgc1xuICAoKiBwcF9vcGVuX2h2Ym94IGYgMDsgKilcbiAgKCogcHBfcHJpbnRfbGlzdCBzdHJ1Y3R1cmVfaXRlbSBmIHMgOyAqKVxuICAoKiBwcF9jbG9zZV9ib3ggZiAoKTsgKilcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBOb25lOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0BdXCIgcGRpcl9uYW1lLnR4dFxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IFNvbWUgcGRpcl9hcmc7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQCAlYUBdXCIgcGRpcl9uYW1lLnR4dCBkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmdcblxubGV0IGV4cHJlc3Npb24gZiB4ID0gcHAgZiBcIkBbJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIHhcblxubGV0IHN0cmluZ19vZl9leHByZXNzaW9uIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgZXhwcmVzc2lvbiBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHN0cmluZ19vZl9zdHJ1Y3R1cmUgeCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBzdHJ1Y3R1cmUgcmVzZXRfY3R4dCBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHRvcF9waHJhc2UgZiB4ID1cbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpO1xuICB0b3BsZXZlbF9waHJhc2UgZiB4O1xuICBwcCBmIFwiOztcIjtcbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpXG5cbmxldCBjb3JlX3R5cGUgPSBjb3JlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHBhdHRlcm4gPSBwYXR0ZXJuIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmUgPSBzaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfZXhwciA9IGNsYXNzX2V4cHIgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2ZpZWxkID0gY2xhc3NfZmllbGQgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGUgPSBjbGFzc190eXBlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19zaWduYXR1cmUgPSBjbGFzc19zaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGVfZmllbGQgPSBjbGFzc190eXBlX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfZXhwciA9IG1vZHVsZV9leHByIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfdHlwZSA9IG1vZHVsZV90eXBlIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmVfaXRlbSA9IHNpZ25hdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmVfaXRlbSA9IHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCB0eXBlX2RlY2xhcmF0aW9uID0gdHlwZV9kZWNsYXJhdGlvbiByZXNldF9jdHh0XG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzNcIlxuZW5kXG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyBsb2MgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlICgqKiBbTS4oVCldICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZlxuICAgICAgICBmdW5jdGlvbl9wYXJhbSBsaXN0ICogdHlwZV9jb25zdHJhaW50IG9wdGlvbiAqIGZ1bmN0aW9uX2JvZHlcbiAgICAoKiogW1BleHBfZnVuY3Rpb24gKFtQMTsgLi4uOyBQbl0sIEMsIGJvZHkpXSByZXByZXNlbnRzIGFueSBjb25zdHJ1Y3RcbiAgICAgICAgaW52b2x2aW5nIFtmdW5dIG9yIFtmdW5jdGlvbl0sIGluY2x1ZGluZzpcbiAgICAgICAgLSBbZnVuIFAxIC4uLiBQbiAtPiBFXVxuICAgICAgICAgIHdoZW4gW2JvZHkgPSBQZnVuY3Rpb25fYm9keSBFXVxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IGZ1bmN0aW9uIHAxIC0+IGUxIHwgLi4uIHwgcG0gLT4gZW1dXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9jYXNlcyBbIHAxIC0+IGUxOyAuLi47IHBtIC0+IGVtIF1dXG4gICAgICAgIFtDXSByZXByZXNlbnRzIGEgdHlwZSBjb25zdHJhaW50IG9yIGNvZXJjaW9uIHBsYWNlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlXG4gICAgICAgIGFycm93LCBlLmcuIFtmdW4gUDEgLi4uIFBuIDogdHkgLT4gLi4uXSB3aGVuIFtDID0gU29tZSAoUGNvbnN0cmFpbnQgdHkpXS5cbiAgICAgICAgQSBmdW5jdGlvbiBtdXN0IGhhdmUgcGFyYW1ldGVycy4gW1BleHBfZnVuY3Rpb24gKHBhcmFtcywgXywgYm9keSldIG11c3RcbiAgICAgICAgaGF2ZSBub24tZW1wdHkgW3BhcmFtc10gb3IgYSBbUGZ1bmN0aW9uX2Nhc2VzIF9dIGJvZHkuXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZnVuY3Rpb25fcGFyYW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW1fZGVzYyAqKSA9XG4gICAgfCBQcGFyYW1fdmFsIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVyblxuICAgICgqKiBbUHBhcmFtX3ZhbCAobGJsLCBleHAwLCBQKV0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyOlxuICAgICAgICAtIFtQXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gW35sOlBdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gWz9sOlBdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gWz9sOihQID0gRTApXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgIE5vdGU6IElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgKilcbiAgICB8IFBwYXJhbV9uZXd0eXBlIG9mIHN0cmluZyBsb2NcbiAgICAoKiogW1BwYXJhbV9uZXd0eXBlIHhdIHJlcHJlc2VudHMgdGhlIHBhcmFtZXRlciBbKHR5cGUgeCldLlxuICAgICAgICBbeF0gY2FycmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIGlkZW50aWZpZXIsIHdoZXJlYXMgdGhlIFtwcGFyYW1fbG9jXVxuICAgICAgICBvbiB0aGUgZW5jbG9zaW5nIFtmdW5jdGlvbl9wYXJhbV0gbm9kZSBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIFsodHlwZSB4KV1cbiAgICAgICAgYXMgYSB3aG9sZS5cblxuICAgICAgICBNdWx0aXBsZSBwYXJhbWV0ZXJzIFsodHlwZSBhIGIgYyldIGFyZSByZXByZXNlbnRlZCBhcyBtdWx0aXBsZVxuICAgICAgICBbUHBhcmFtX25ld3R5cGVdIG5vZGVzLCBsZXQncyBzYXk6XG5cbiAgICAgICAge1sgWyB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYTsgcHBhcmFtX2xvYyA9IGxvYzEgfTtcbiAgICAgICAgICAgICB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYjsgcHBhcmFtX2xvYyA9IGxvYzIgfTtcbiAgICAgICAgICAgICB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYzsgcHBhcmFtX2xvYyA9IGxvYzMgfTtcbiAgICAgICAgICAgXVxuICAgICAgICBdfVxuXG4gICAgICAgIEhlcmUsIHRoZSBmaXJzdCBsb2MgW2xvYzFdIGlzIHRoZSBsb2NhdGlvbiBvZiBbKHR5cGUgYSBiIGMpXSwgYW5kIHRoZVxuICAgICAgICBzdWJzZXF1ZW50IGxvY3MgW2xvYzJdIGFuZCBbbG9jM10gYXJlIHRoZSBzYW1lIGFzIFtsb2MxXSwgZXhjZXB0IG1hcmtlZCBhc1xuICAgICAgICBnaG9zdCBsb2NhdGlvbnMuIFRoZSBsb2NhdGlvbnMgb24gW2FdLCBbYl0sIFtjXSwgY29ycmVzcG9uZCB0byB0aGVcbiAgICAgICAgdmFyaWFibGVzIFthXSwgW2JdLCBhbmQgW2NdIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICAqKVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW0gKikgPVxuICAgIHsgcHBhcmFtX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwcGFyYW1fZGVzYyA6IGZ1bmN0aW9uX3BhcmFtX2Rlc2M7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9ib2R5ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9ib2R5ICopID1cbiAgICB8IFBmdW5jdGlvbl9ib2R5IG9mIGV4cHJlc3Npb25cbiAgICB8IFBmdW5jdGlvbl9jYXNlcyBvZiBjYXNlIGxpc3QgKiBMb2NhdGlvbi50ICogYXR0cmlidXRlc1xuICAgICgqKiBJbiBbUGZ1bmN0aW9uX2Nhc2VzIChfLCBsb2MsIGF0dHJzKV0sIHRoZSBsb2NhdGlvbiBleHRlbmRzIGZyb20gdGhlXG4gICAgICAgIHN0YXJ0IG9mIHRoZSBbZnVuY3Rpb25dIGtleXdvcmQgdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCBjYXNlLiBUaGUgY29tcGlsZXJcbiAgICAgICAgd2lsbCBvbmx5IHVzZSB0eXBlY2hlY2tpbmctcmVsYXRlZCBhdHRyaWJ1dGVzIGZyb20gW2F0dHJzXSwgZS5nLiBlbmFibGluZ1xuICAgICAgICBvciBkaXNhYmxpbmcgYSB3YXJuaW5nLlxuICAgICopXG4gICgqKiBTZWUgdGhlIGNvbW1lbnQgb24ge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVuY3Rpb259W1BleHBfZnVuY3Rpb25dfS4gKilcblxuICBhbmQgdHlwZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUGNvbnN0cmFpbnQgb2YgY29yZV90eXBlXG4gICAgfCBQY29lcmNlIG9mIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfYXBwbHlfdW5pdCBvZiBtb2R1bGVfZXhwciAoKiogW01FMSgpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ICopID1cbiAgICB8IFB2Y19jb25zdHJhaW50IG9mIHtcbiAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczpzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICB0eXA6Y29yZV90eXBlO1xuICAgICAgfVxuICAgIHwgUHZjX2NvZXJjaW9uIG9mIHtncm91bmQ6Y29yZV90eXBlIG9wdGlvbjsgY29lcmNpb246Y29yZV90eXBlIH1cblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2NvbnN0cmFpbnQ6IHZhbHVlX2NvbnN0cmFpbnQgb3B0aW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDM0XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDM0XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDJcbm1vZHVsZSBUbyA9IEFzdF81MDFcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNS4wMlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgbWtfZ2hvc3RfYXR0ciBuYW1lID1cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IHsgTG9jYXRpb24udHh0ID0gbmFtZTsgbG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgW107XG4gICAgYXR0cl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICB9XG5cbmxldCByZWMgY29uY2F0X2xpc3RfbGl0IGxlZnQgcmlnaHQgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBsZXQgb3BlbiBBc3RfNTAyLkFzdHR5cGVzIGluXG4gIG1hdGNoIChsZWZ0LnBleHBfZGVzYywgcmlnaHQucGV4cF9kZXNjKSB3aXRoXG4gIHwgXywgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBsZWZ0XG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSwgXyAtPiByaWdodFxuICB8ICggUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IGxvYyB9LFxuICAgICAgICAgIFNvbWUgKHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGhkOyB0bCBdOyBfIH0gYXMgYXJnX2V4cHIpICksXG4gICAgICBfICkgLT5cbiAgICAgIHtcbiAgICAgICAgbGVmdCB3aXRoXG4gICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBsb2MgfSxcbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFyZ19leHByIHdpdGhcbiAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBoZDsgY29uY2F0X2xpc3RfbGl0IHRsIHJpZ2h0IF07XG4gICAgICAgICAgICAgICAgfSApO1xuICAgICAgfVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJJbnZhbGlkIG9jYW1sLnBweC5jb250ZXh0J3MgbG9hZF9wYXRoXCJcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF90dXBsZSBbIHZpc2libGU7IGhpZGRlbiBdIC0+XG4gICAgICBsZXQgbWlncmF0aW9uX2F0dHIgPVxuICAgICAgICB7XG4gICAgICAgICAgYXR0cl9uYW1lID0geyBMb2NhdGlvbi50eHQgPSBcInBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoXCI7IGxvYyB9O1xuICAgICAgICAgIGF0dHJfbG9jID0gbG9jO1xuICAgICAgICAgIGF0dHJfcGF5bG9hZCA9XG4gICAgICAgICAgICBQU3RyIFsgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChleHByLCBbXSkgfSBdO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHInID0gY29uY2F0X2xpc3RfbGl0IHZpc2libGUgaGlkZGVuIGluXG4gICAgICB7IGV4cHInIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gbWlncmF0aW9uX2F0dHIgOjogZXhwci5wZXhwX2F0dHJpYnV0ZXMgfVxuICB8IF8gLT4gZXhwclxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChsaWRlbnRfbG9jLCBleHByKSAtPlxuICAgICAgbWF0Y2ggbGlkZW50X2xvYy5Bc3RfNTAyLkFzdHR5cGVzLnR4dCB3aXRoXG4gICAgICB8IExvbmdpZGVudC5MaWRlbnQgXCJsb2FkX3BhdGhcIiAtPlxuICAgICAgICAgIChsaWRlbnRfbG9jLCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByKVxuICAgICAgfCBfIC0+IChsaWRlbnRfbG9jLCBleHByKSlcbiAgICBmaWVsZHNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBwYXlsb2FkID1cbiAgbGV0IG9wZW4gQXN0XzUwMi5QYXJzZXRyZWUgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0clxuICAgICAgW1xuICAgICAgICAoe1xuICAgICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICAgIFBzdHJfZXZhbFxuICAgICAgICAgICAgICAgKCh7IHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIH0gYXMgZXhwciksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgfSBhcyBzdHJpKTtcbiAgICAgIF0gLT5cbiAgICAgIGxldCBuZXdfZmllbGRzID0gbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzIGluXG4gICAgICBsZXQgbmV3X2V4cHIgPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAobmV3X2ZpZWxkcywgTm9uZSkgfSBpblxuICAgICAgUFN0ciBbIHsgc3RyaSB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAobmV3X2V4cHIsIGF0dHJpYnV0ZXMpIH0gXVxuICB8IF8gLT4gcGF5bG9hZFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAocGFyYW1zLCB0Y29uc3RyYWludCwgYm9keSkgLT5cbiAgICAgIGxldCBleHByID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUGZ1bmN0aW9uX2JvZHkgZXhwciAtPiAoXG4gICAgICAgICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBleHBfZnVuY3Rpb24gXyAtPlxuICAgICAgICAgICAgICAgICgqIFdlIGRvbid0IHdhbnQgdGhpcyBbZnVuXSB0byBiZSBtZXJnZWQgd2l0aCB0aGUgcGFyZW50IGR1cmluZ1xuICAgICAgICAgICAgICAgICAgIHRoZSByb3VuZC10cmlwLiBUaGlzIGF0dHJpYnV0ZSBzaWduYWxzIHRoYXQgdGhpcyBleHByZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgcmVhbGx5IGlzIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbi4gKilcbiAgICAgICAgICAgICAgICBsZXQgYXR0ciA9IG1rX2dob3N0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBleHByIGluXG4gICAgICAgICAgICAgICAgeyBleHByIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0ciA6OiBleHByLnBleHBfYXR0cmlidXRlcyB9XG4gICAgICAgICAgICB8IF8gLT4gY29weV9leHByZXNzaW9uIGV4cHIpXG4gICAgICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIChjYXNlcywgbG9jLCBhdHRycykgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgY2FzZXMpO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXR0cnM7XG4gICAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBtYXRjaCB0Y29uc3RyYWludCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBleHByXG4gICAgICAgIHwgU29tZSAoUGNvbnN0cmFpbnQgYykgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGV4cHIsIGNvcHlfY29yZV90eXBlIGMpO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IGV4cHIucGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB8IFNvbWUgKFBjb2VyY2UgKGMxLCBjMikpIC0+XG4gICAgICAgICAgICBsZXQgYzEgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGMxIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKGV4cHIsIGMxLCBjb3B5X2NvcmVfdHlwZSBjMik7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gZXhwci5wZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgICAoZnVuIHBhcmFtIGV4cHIgLT5cbiAgICAgICAgICAgIG1hdGNoIHBhcmFtIHdpdGhcbiAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9kZXNjID0gUHBhcmFtX3ZhbCAobGJsLCBleHAwLCBwKTtcbiAgICAgICAgICAgICBwcGFyYW1fbG9jO1xuICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgICAgICAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCBsYmwsXG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gZXhwMCxcbiAgICAgICAgICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4gcCxcbiAgICAgICAgICAgICAgICAgICAgICBleHByIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gcHBhcmFtX2xvYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB8IHsgcHBhcmFtX2Rlc2MgPSBQcGFyYW1fbmV3dHlwZSB4OyBwcGFyYW1fbG9jIH0gLT5cbiAgICAgICAgICAgICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgsIGV4cHIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IHBwYXJhbV9sb2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBwYXJhbXMgZXhwclxuICAgICAgaW5cbiAgICAgIGV4cHIucGV4cF9kZXNjXG4gICAgICAoKiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApICopXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAyLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludCA9XG4gICAgICBPcHRpb24ubWFwIGNvcHlfdmFsdWVfY29uc3RyYWludCBwdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfdmFsdWVfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0gLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgIHtcbiAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzO1xuICAgICAgICAgIHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cDtcbiAgICAgICAgfVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uXG4gICAgICAgIHtcbiAgICAgICAgICBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZDtcbiAgICAgICAgICBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfbG9jIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEudHh0KVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBvcGVuIGluIHR5cGVzXCJcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID1cbiAgICAgIChtYXRjaCBhdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5wcHguY29udGV4dFwiIC0+XG4gICAgICAgICAgY29weV9wYXlsb2FkIChtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuICAgICAgfCBfIC0+IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDIuQXN0dHlwZXMudHh0OyBBc3RfNTAyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAyXG5cbigqKiBMb29rIGZvciBhIHBhcnRpY3VsYXIgYXR0cmlidXRlIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdC4gQXR0cmlidXRlcyBhcmVcbiAgICB1c2VkIHRvIG1ha2UgY2VydGFpbiBtaWdyYXRpb25zIHJvdW5kLXRyaXAuIFJldHVybnMgW05vbmVdIGlmIHRoZSBzcGVjaWZpZWRcbiAgICBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLiAqKVxubGV0IGV4dHJhY3RfYXR0ciBuYW1lIChhdHRycyA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMpID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoTm9uZSwgTGlzdC5yZXYgYWNjKVxuICAgIHwgeyBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSB7IHR4dDsgXyB9OyBhdHRyX3BheWxvYWQ7IF8gfSA6OiBxXG4gICAgICB3aGVuIHR4dCA9IG5hbWUgLT5cbiAgICAgICAgKFNvbWUgYXR0cl9wYXlsb2FkLCBMaXN0LnJldl9hcHBlbmQgYWNjIHEpXG4gICAgfCBoZCA6OiB0bCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gIGluXG4gIGxvb3AgW10gYXR0cnNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfNTAxLlBhcnNldHJlZSBpblxuICBsZXQgcGF5bG9hZCwgb3RoZXJfYXR0cnMgPVxuICAgIGV4dHJhY3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoXCIgZXhwci5wZXhwX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgIFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IGxvYyA9IGV4cHIucGV4cF9sb2MgfSwgTm9uZSlcbiAgICAgIGluXG4gICAgICBsZXQgaGlkZGVuID0geyBleHByIHdpdGggcGV4cF9kZXNjOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICBsZXQgdmlzaWJsZSA9IGV4cHIgaW5cbiAgICAgIHtcbiAgICAgICAgZXhwciB3aXRoXG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IG90aGVyX2F0dHJzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgdmlzaWJsZTsgaGlkZGVuIF07XG4gICAgICB9XG4gIHwgU29tZSAoUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChleHByLCBbXSk7IF8gfSBdKSAtPiBleHByXG4gIHwgU29tZSBfIC0+IGludmFsaWRfYXJnIFwiSW52YWxpZCBwcHhsaWIubWlncmF0aW9uLmxvYWRfcGF0aCBwYXlsb2FkXCJcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyA9XG4gIExpc3QubWFwXG4gICAgKGZ1biAobGlkZW50X2xvYywgZXhwcikgLT5cbiAgICAgIG1hdGNoIGxpZGVudF9sb2MuQXN0XzUwMS5Bc3R0eXBlcy50eHQgd2l0aFxuICAgICAgfCBMb25naWRlbnQuTGlkZW50IFwibG9hZF9wYXRoXCIgLT5cbiAgICAgICAgICAobGlkZW50X2xvYywgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwcilcbiAgICAgIHwgXyAtPiAobGlkZW50X2xvYywgZXhwcikpXG4gICAgZmllbGRzXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgcGF5bG9hZCA9XG4gIGxldCBvcGVuIEFzdF81MDEuUGFyc2V0cmVlIGluXG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHJcbiAgICAgIFtcbiAgICAgICAgKHtcbiAgICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgICBQc3RyX2V2YWxcbiAgICAgICAgICAgICAgICgoeyBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSB9IGFzIGV4cHIpLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgIH0gYXMgc3RyaSk7XG4gICAgICBdIC0+XG4gICAgICBsZXQgbmV3X2ZpZWxkcyA9IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyBpblxuICAgICAgbGV0IG5ld19leHByID0geyBleHByIHdpdGggcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKG5ld19maWVsZHMsIE5vbmUpIH0gaW5cbiAgICAgIFBTdHIgWyB7IHN0cmkgd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKG5ld19leHByLCBhdHRyaWJ1dGVzKSB9IF1cbiAgfCBfIC0+IHBheWxvYWRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIGxldCBwZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvblxuICAgICAgICAoIFtdLFxuICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2Nhc2VzIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDAsIGxvYywgW10pIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoYXJnX2xhYmVsLCBvcHRfZGVmYXVsdCwgcGF0LCBleHByKSAtPlxuICAgICAgbGV0IHRha2VfYm9keSAoZSA6IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24pID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gY2FzZV9saXN0IC0+XG4gICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXNcbiAgICAgICAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X2Nhc2UgY2FzZV9saXN0LFxuICAgICAgICAgICAgICAgIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzIClcbiAgICAgICAgfCBfIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5IChjb3B5X2V4cHJlc3Npb24gZSlcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHRha2VfYXJndW1lbnRzIGFjYyAoZSA6IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24pID1cbiAgICAgICAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgICAgICAgICgqIFRoZSBhdHRyaWJ1dGUgbGlzdCBpcyBub3QgZW1wdHksIG5vbmUgb2YgdGhlc2Ugbm9kZXMgY291bGQgaGF2ZVxuICAgICAgICAgICAgIGJlZW4gY3JlYXRlZCBieSB0aGUgZG93bndhcmQgbWlncmF0aW9uLiBFeGNlcHQgZm9yIFtQZXhwX2Z1bl0sIGZvclxuICAgICAgICAgICAgIHdoaWNoIHdlIGFkZCBhIGdob3N0IGF0dHJpYnV0ZSB0byBoZWxwIHVzIHJvdW5kdHJpcC4gKilcbiAgICAgICAgICBsZXQgXywgYXR0cnMgPVxuICAgICAgICAgICAgZXh0cmFjdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1wiIGUucGV4cF9hdHRyaWJ1dGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fYm9keVxuICAgICAgICAgICAgICAoY29weV9leHByZXNzaW9uIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzIH0pIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGFyZSBsaWtlbHkgdG8gaGF2ZSBiZWVuIHN5bnRoZXRpemVkIGR1cmluZyB0aGVcbiAgICAgICAgICAgICBkb3dud2FyZCBtaWdyYXRpb24uICopXG4gICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKGFyZ19sYWJlbCwgb3B0X2RlZmF1bHQsIHBhdCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgdGFrZV9hcmd1bWVudHNfZnVuIGFjYyBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHJcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IHQubG9jO1xuICAgICAgICAgICAgICAgICAgcHBhcmFtX2Rlc2MgPSBQcGFyYW1fbmV3dHlwZSB0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgdGFrZV9hcmd1bWVudHMgYWNjIGV4cHJcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoZXhwLCBjdCkgLT5cbiAgICAgICAgICAgICAgKCogVGhlc2UgdHdvIGV4cHJlc3Npb24gYXJlIHJlcHJlc2VudGVkIHRoZSBzYW1lIG9uIDUuMSBidXRcbiAgICAgICAgICAgICAgICAgZGlmZmVyZW50bHkgb24gNS4yOlxuICAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgIGxldCBfID0gZnVuIHggOiAoXyAtPiBpbnQpIC0+IGZ1biB5IC0+IHgreVxuICAgICAgICAgICAgICAgICAgIGxldCBfID0gZnVuIHggLT4gKChmdW4geSAtPiB4K3kpIDogXyAtPiBpbnQpXG4gICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgIFdlIG5vcm1hbGl6ZSB0aGUgc2Vjb25kIGludG8gdGhlIGZpcnN0IHdoZW4gbWlncmF0aW5nIHRvIDUuMixcbiAgICAgICAgICAgICAgICAgbWFraW5nIHRoZSBtaWdyYXRpb24gNS4yLT41LjEtPjUuMiBub3Qgcm91bmR0cmlwIGJ1dCBob3BlZnVsbHlcbiAgICAgICAgICAgICAgICAgd2l0aG91dCBjaGFuZ2UgaW4gc2VtYW50aWNzLiAqKVxuICAgICAgICAgICAgICBsZXQgY3QgPVxuICAgICAgICAgICAgICAgIFNvbWUgKEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdHJhaW50IChjb3B5X2NvcmVfdHlwZSBjdCkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhY2MsIGN0LCB0YWtlX2JvZHkgZXhwKVxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKGV4cCwgYzEsIGMyKSAtPlxuICAgICAgICAgICAgICAoKiBTYW1lIGFzIGFib3ZlLCBtaWdodCBub3Qgcm91bmR0cmlwIGJ1dCBob3BlZnVsbHkgT0suICopXG4gICAgICAgICAgICAgIGxldCBjMSA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgYzFcbiAgICAgICAgICAgICAgYW5kIGMyID0gY29weV9jb3JlX3R5cGUgYzIgaW5cbiAgICAgICAgICAgICAgKGFjYywgU29tZSAoQXN0XzUwMi5QYXJzZXRyZWUuUGNvZXJjZSAoYzEsIGMyKSksIHRha2VfYm9keSBleHApXG4gICAgICAgICAgfCBfIC0+IChhY2MsIE5vbmUsIHRha2VfYm9keSBlKVxuICAgICAgYW5kIHRha2VfYXJndW1lbnRzX2Z1biBhY2MgYXJnX2xhYmVsIG9wdF9kZWZhdWx0IHBhdCBleHByID1cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgbGV0IHBwYXJhbV9kZXNjID1cbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXJhbV92YWxcbiAgICAgICAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCBhcmdfbGFiZWwsXG4gICAgICAgICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gb3B0X2RlZmF1bHQsXG4gICAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHBhdCApXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBCZXN0LWVmZm9ydCBsb2NhdGlvbi4gKilcbiAgICAgICAgICB7IEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9sb2MgPSBwYXQucHBhdF9sb2M7IHBwYXJhbV9kZXNjIH0gOjogYWNjXG4gICAgICAgIGluXG4gICAgICAgIHRha2VfYXJndW1lbnRzIGFjYyBleHByXG4gICAgICBpblxuICAgICAgKCogVGhlIGFyZ3VtZW50IGxpc3QgcmV0dXJuZWQgYnkgW3Rha2VfYXJndW1lbnRzXSBpcyByZXZlcnNlZCAqKVxuICAgICAgbGV0IGFyZ19saXN0LCB0eXBlX2NvbnN0cmFpbnQsIGJvZHkgPVxuICAgICAgICB0YWtlX2FyZ3VtZW50c19mdW4gW10gYXJnX2xhYmVsIG9wdF9kZWZhdWx0IHBhdCBleHByXG4gICAgICBpblxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5yZXYgYXJnX2xpc3QsIHR5cGVfY29uc3RyYWludCwgYm9keSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbGlhc1xuICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQgPSB4MTsgbG9jID0geDAucHR5cF9sb2MgfSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID1cbiAgICAgIChtYXRjaCBhdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5wcHguY29udGV4dFwiIC0+XG4gICAgICAgICAgY29weV9wYXlsb2FkIChtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuICAgICAgfCBfIC0+IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiA0LjE0IGFuZCA1LjAgZnJvbSBhIFBhcnNldHJlZSBwb2ludCBvZiB2aWV3IGFyZSB0aGUgbWFnaWMgbnVtYmVycyAqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LkFzdHR5cGVzXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuUGFyc2V0cmVlXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzJcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzJcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMVxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAxLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAxLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgbGV0IG1lcmdlX2xvYyBsZWZ0IHJpZ2h0ID1cbiAgICBMb2NhdGlvbi5cbiAgICAgIHsgbG9jX3N0YXJ0ID0gbGVmdC5sb2Nfc3RhcnQ7IGxvY19lbmQgPSByaWdodC5sb2NfZW5kOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gIGluXG4gIGxldCBnaG9zdF9sb2MgbG9jID0geyBsb2Mgd2l0aCBMb2NhdGlvbi5sb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCA9XG4gICAgbGV0IHBwYXRfbG9jID1cbiAgICAgIGdob3N0X2xvY1xuICAgICAgICAobWVyZ2VfbG9jIHBhdC5Bc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYyB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgaW5cbiAgICB7XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jO1xuICAgICAgcHBhdF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChwYXQsIHR5cCk7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgIH1cbiAgaW5cbiAgbGV0IHB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdCBhbmQgcHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgbGV0IGNvbnN0cmFpbl9wYXQgcGF0IHR5cCBleHByID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgaW5cbiAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIGxldCBwdmJfcGF0LCBwdmJfZXhwciA9XG4gICAgbWF0Y2ggKHB2Yl9jb25zdHJhaW50LCBwdmJfcGF0KSB3aXRoXG4gICAgfCAoIFNvbWVcbiAgICAgICAgICAoUHZjX2NvbnN0cmFpbnRcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107XG4gICAgICAgICAgICAgIHR5cCA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfSBhcyB0eXA7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgeyBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9ICkgLT5cbiAgICAgICAgKCogdGhlIHN1Z2FyaW5nIG9mIFtsZXQgeDogdW5pdmFycyAuIHR5cCA9IGV4cCBdIHdhcyBkZXN1Z2FyZWQgdG9cbiAgICAgICAgICAgW2xldCAoeDp1bml2YXJzIC4gdHlwKSA9IGV4cF0gaW4gNS4wIHdoaWNoIGRvZXNuJ3QgZml0IHRoZSBjYXNlIGJlbG93ICopXG4gICAgICAgIGNvbnN0cmFpbl9wYXQgcHZiX3BhdCB0eXAgcHZiX2V4cHJcbiAgICB8ICggU29tZSAoUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9KSxcbiAgICAgICAgeyBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9ICkgLT5cbiAgICAgICAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgICAgICAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgICAgICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgICAgICAgIGxldCBkZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAoIExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcsXG4gICAgICAgICAgICAgICAgICAgICAgbGJsX2xzdF9vcHRpb24gKVxuICAgICAgICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCB0XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID1cbiAgICAgICAgICBtYXRjaCBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZ2hvc3RfbG9jIHR5cC5wdHlwX2xvY1xuICAgICAgICAgIHwgXyA6OiBfIC0+IGdob3N0X2xvYyBwZXhwX2xvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwX3BvbHkgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cCB3aXRoXG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgICAgICAgICAgKCBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMsXG4gICAgICAgICAgICAgICAgICB2YXJpZnlfY29uc3RydWN0b3JzIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB0eXAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IHBwYXRfbG9jID1cbiAgICAgICAgICBnaG9zdF9sb2NcbiAgICAgICAgICAgIChtZXJnZV9sb2MgcHZiX3BhdC5Bc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY1xuICAgICAgICAgICAgICAgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHZiX3BhdCA9IHsgKGdob3N0X2NvbnN0cmFpbnQgcHZiX3BhdCB0eXBfcG9seSkgd2l0aCBwcGF0X2xvYyB9XG4gICAgICAgIGFuZCBwdmJfZXhwciA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gZXhwciB2YXIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV4cHIgd2l0aFxuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHZhciwgZXhwcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKHB2Yl9leHByLCB0eXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKExpc3QucmV2IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycylcbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgU29tZSAoUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTsgdHlwIH0pLCBfIC0+XG4gICAgICAgIGNvbnN0cmFpbl9wYXQgcHZiX3BhdCB0eXAgcHZiX2V4cHJcbiAgICB8IFNvbWUgKFB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSksIF8gLT5cbiAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb24gaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gZ2hvc3RfbG9jIGNvZXJjaW9uLnB0eXBfbG9jIGluXG4gICAgICAgIGxldCB0eXAgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZXJjaW9uIHdpdGhcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHkgKFtdLCBjb2VyY2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcHZiX3BhdCB0eXAgaW5cbiAgICAgICAgbGV0IGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlIChwdmJfZXhwciwgZ3JvdW5kLCBjb2VyY2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBfIC0+IChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IGxvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBsb2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jID0gbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4MSA9IGNvcHlfbW9kdWxlX2V4cHIgeDEgaW5cbiAgICAgIGxldCB4MSA9XG4gICAgICAgIG1hdGNoIHgxLnBtb2RfZGVzYyB3aXRoXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgW10gLT5cbiAgICAgICAgICAgIGxldCBsb2MgPSB7IHgxLnBtb2RfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICB7IHR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5rZWVwX3N0cnVjdHVyZVwiOyBsb2MgfTtcbiAgICAgICAgICAgICAgICBhdHRyX3BheWxvYWQgPSBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIFtdO1xuICAgICAgICAgICAgICAgIGF0dHJfbG9jID0gbG9jO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6IHgxLnBtb2RfYXR0cmlidXRlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgeDEgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgfVxuICAgICAgICB8IF8gLT4geDFcbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIGxldCBlbXB0eV9zdHJ1Y3QgPVxuICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGVtcHR5X3N0cnVjdClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPVxuIGZ1biB7IExvY2F0aW9uLmxvY19zdGFydDsgTG9jYXRpb24ubG9jX2VuZDsgTG9jYXRpb24ubG9jX2dob3N0IH0gLT5cbiAge1xuICAgIExvY2F0aW9uLmxvY19zdGFydCA9IGNvcHlfcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgIExvY2F0aW9uLmxvY19lbmQgPSBjb3B5X3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgTG9jYXRpb24ubG9jX2dob3N0O1xuICB9XG5cbmFuZCBjb3B5X3Bvc2l0aW9uIDogTGV4aW5nLnBvc2l0aW9uIC0+IExleGluZy5wb3NpdGlvbiA9XG4gZnVuIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH0gLT5cbiAgeyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfVxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF81MDFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMC5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPiBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgIGluXG4gICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbiAgaW5cbiAgKCogTWF0Y2ggdGhlIGZvcm0gb2YgdGhlIGV4cHIgYW5kIHBhdHRlcm4gdG8gZGVjaWRlIHRoZSB2YWx1ZSBvZlxuICAgICBbcHZiX2NvbnN0cmFpbnRdLiBBZGFwdGVkIGZyb20gT0NhbWwgNS4wIFBQcmludGVyLiAqKVxuICBsZXQgdHl2YXJzX3N0ciB0eXZhcnMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHR5dmFycyBpblxuICBsZXQgcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwIGUgPVxuICAgIGxldCB2YWx1ZV9wYXR0ZXJuID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID1cbiAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9IGFzIHR5X2V4dCkgKTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBhc3NlcnQgKG1hdGNoIHJ0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKTtcbiAgICAgICAgICBsZXQgdHkgPSBtYXRjaCBhcmdzX3R5dmFycyB3aXRoIFtdIC0+IHJ0IHwgXyAtPiB0eV9leHQgaW5cbiAgICAgICAgICBgVmFyIChwYXQsIGFyZ3NfdHl2YXJzLCBydCwgdHkpXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHBhdCwgcnQpO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGBOb25WYXIgKHBhdCwgcnQpXG4gICAgICB8IF8gLT4gYE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgdmFsdWVfZXhwIHR5dmFycyBlID1cbiAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgdmFsdWVfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHZhbHVlX2V4cCA9IHZhbHVlX2V4cCBbXSBlIGluXG4gICAgbWF0Y2ggKHZhbHVlX3BhdHRlcm4sIHZhbHVlX2V4cCkgd2l0aFxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgU29tZSAoZV90eXZhcnMsIGlubmVyX2UsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW5cbiAgICAgICAgICBgRGVzdWdhcmVkX2xvY2FsbHlfYWJzdHJhY3QgKHAsIHB0X3R5dmFycywgZV9jdCwgaW5uZXJfZSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIHRoZSBleHByZXNzaW9uIGNvbnN0cmFpbnQgYW5kIHRoZSBwYXR0ZXJuIGNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgZG9uJ3QgbWF0Y2gsIGJ1dCB3ZSBzdGlsbCBoYXZlIGEgUHR5cF9wb2x5IHBhdHRlcm4gY29uc3RyYWludCB0aGF0XG4gICAgICAgICAgICAgc2hvdWxkIGJlIHJlc3VnYXJlZCB0byBhIHZhbHVlIGJpbmRpbmcgKilcbiAgICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBfIC0+XG4gICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBOb25WYXIgKHBhdCwgY3QpLCBfIC0+IGBOb25WYXIgKHBhdCwgY3QsIGUpXG4gICAgfCBfIC0+IGBOb25lXG4gIGluXG4gIGxldCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXAgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBTb21lXG4gICAgICAoQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAgIHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gdHlfdmFyczsgdHlwIH0pXG4gIGluXG4gIGxldCBwdmJfcGF0LCBwdmJfZXhwciwgcHZiX2NvbnN0cmFpbnQgPVxuICAgIG1hdGNoIHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcHZiX3BhdCBwdmJfZXhwciB3aXRoXG4gICAgfCBgRGVzdWdhcmVkX2xvY2FsbHlfYWJzdHJhY3QgKHAsIHR5X3ZhcnMsIHR5cCwgZSkgLT5cbiAgICAgICAgKHAsIGUsIHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cClcbiAgICB8IGBVbml2YXJzIChwYXQsIFtdLCBjdCwgZXhwcikgLT4gKFxuICAgICAgICAoKiBjaGVjayBpZiB3ZSBhcmUgaW4gdGhlIFtsZXQgeCA6IHR5PyA6PiBjb2VyID0gZXhwciBdIGNhc2UgKilcbiAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvZXJjZSAoZXhwciwgZ3IsIGNvZXJjZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAtPlxuICAgICAgICAgICAgbGV0IGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3IgaW5cbiAgICAgICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjZSBpblxuICAgICAgICAgICAgbGV0IHB2Yl9jb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChwYXQsIGV4cHIsIHB2Yl9jb25zdHJhaW50KVxuICAgICAgICB8IF8gLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KSlcbiAgICB8IGBVbml2YXJzIChwYXQsIF8sIGN0LCBleHByKSAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpXG4gICAgfCBgTm9uVmFyIChwLCB0eXAsIGUpIC0+IChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgW10gdHlwKVxuICAgIHwgYE5vbmUgLT4gKHB2Yl9wYXQsIHB2Yl9leHByLCBOb25lKVxuICBpblxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4MSwgaXNfdW5pdCA9XG4gICAgICAgIG1hdGNoIHgxLnBtb2RfZGVzYyB3aXRoXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgW10gLT5cbiAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyIGFjYyA6IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gXyA9XG4gICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5rZWVwX3N0cnVjdHVyZVwiOyBfIH07XG4gICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBxIC0+XG4gICAgICAgICAgICAgICAgICAoTGlzdC5yZXZfYXBwZW5kIGFjYyBxLCBmYWxzZSlcbiAgICAgICAgICAgICAgfCBoZCA6OiB0bCAtPiBleHRyYWN0X2F0dHIgKGhkIDo6IGFjYykgdGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBiID0gZXh0cmFjdF9hdHRyIFtdIHgxLnBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAgICAgKHsgeDEgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgfSwgYilcbiAgICAgICAgfCBfIC0+ICh4MSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgaWYgaXNfdW5pdCB0aGVuIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgICAgIGVsc2VcbiAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPVxuIGZ1biB7IExvY2F0aW9uLmxvY19zdGFydDsgTG9jYXRpb24ubG9jX2VuZDsgTG9jYXRpb24ubG9jX2dob3N0IH0gLT5cbiAge1xuICAgIExvY2F0aW9uLmxvY19zdGFydCA9IGNvcHlfcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgIExvY2F0aW9uLmxvY19lbmQgPSBjb3B5X3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgTG9jYXRpb24ubG9jX2dob3N0O1xuICB9XG5cbmFuZCBjb3B5X3Bvc2l0aW9uIDogTGV4aW5nLnBvc2l0aW9uIC0+IExleGluZy5wb3NpdGlvbiA9XG4gZnVuIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH0gLT5cbiAgeyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzUwMC5QYXJzZXRyZWUuJXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNDE0LlBhcnNldHJlZS4lcyAtPiBBc3RfNTAwLlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIChbXSwgUClcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgQyAodHlwZSBhIGIpIFAgICBTb21lIChbYTsgYl0sIFApXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTIDo9ICAuLi4gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmQgKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzBcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzQxM1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLmxldF87IEFzdF80MTQuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxNC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPiAoXG4gICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gICAgICB8IGhkIDo6IF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgaGQubG9jIFwidHlwZSBwYXJhbWV0ZXJzIGluIGV4dGVuc2lvbiBjb25zdHJ1Y3RvcnNcIilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBjZF92YXJzIHdpdGhcbiAgfCBbXSAtPlxuICAgICAge1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICB9XG4gIHwgaGQgOjogXyAtPiBtaWdyYXRpb25fZXJyb3IgaGQubG9jIFwicGNkX3ZhcnMgaW4gY29uc3RydWN0b3IgZGVjbGFyYXRpb25zXCJcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxNFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEzLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEzLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDE0LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDE0LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTQuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTQuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChbXSwgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3ZhcnMgPSBbXTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTQuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTQuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTQuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI5XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI5XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEzLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEzLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAobWF0Y2ggeDAgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgIHwgdHkgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHR5LkFzdF80MTMuQXN0dHlwZXMubG9jXG4gICAgICAgICAgICAgICAgICAgIFwiZXhpc3RlbnRpYWxzIGluIHBhdHRlcm4tbWF0Y2hpbmdcIik7XG4gICAgICAgICAgICAgIGNvcHlfcGF0dGVybiB4MSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlIChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jIFwibW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2NcbiAgICAgICAgXCJkZXN0cnVjdGl2ZSBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Bc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvY1xuICAgICAgICBcImxvY2FsIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMlxubW9kdWxlIFRvID0gQXN0XzQxM1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEyLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IChbXSwgY29weV9wYXR0ZXJuIHgpKSB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTIuQXN0dHlwZXMudHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjhcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjhcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMlxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEyLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTIuQXN0dHlwZXMudHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjdcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjdcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgXywgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIExvY2F0aW9uLm5vbmUsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNlwiXG5lbmRcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQwOVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEwXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciB4MC5sb2MgXCJhbm9ueW1vdXMgbGV0IG1vZHVsZVwiXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2NcbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciB4MC5sb2MgXCJhbnlueW1vdXMgdW5wYWNrXCIgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDogQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gTG9jYXRpb24udCBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvY1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWJfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGJpbmRpbmdcIilcbiAgICAgICAgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPlxuICAgIHN0cmluZyBBc3RfNDA5LkFzdHR5cGVzLmxvYyAqIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIG9wdGlvbiA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiAoeyBsb2MgPSBMb2NhdGlvbi5ub25lOyB0eHQgPSBcIipcIiB9LCBOb25lKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAoIGNvcHlfbG9jIChmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSB4IC0+IHgpIHgwLFxuICAgICAgICBTb21lIChjb3B5X21vZHVsZV90eXBlIHgxKSApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvY1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtZF9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgICAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAgIHBtZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDkuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDkuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDkuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwOVxubW9kdWxlIFRvID0gQXN0XzQxMFxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIFRodSBNYXIgMjEgMDk6NTA6NDIgR01UIDIwMTlcbiAgIE9DYW1sIHdhczpcbiAgIGNvbW1pdCA1NWM5YmE0NjYzNjJmMzAzZWI0ZDVlZDUxMWY2ZmRhMTQyODc5MTM3IChIRUFEIC0+IDQuMDgsIG9yaWdpbi80LjA4KVxuICAgICBBdXRob3I6IE5pY29sw6FzIE9qZWRhIELDpHIgPG4ub2plLmJhckBnbWFpbC5jb20+XG4gICAgIERhdGU6ICAgVHVlIE1hciAxOSAwODoxMTowMiAyMDE5ICswMTAwXG5cbiAgICAgICAgIE1lcmdlIHB1bGwgcmVxdWVzdCAjODUyMSBmcm9tIG5vamIvZml4X3VuaXhfdGVzdHNfNDA4XG5cbiAgICAgICAgIEFjdHVhbGx5IHJ1biBhbGwgbGliLXVuaXggdGVzdHMgWzQuMDhdXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjVcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjVcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQwOVxubW9kdWxlIFRvID0gQXN0XzQwOFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfdHlwIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cCA9XG4gZnVuIHggLT4gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9wYXQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0ID1cbiBmdW4geCAtPiBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9leHByIDogQXN0XzQwOS5QYXJzZXRyZWUuZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByID1cbiBmdW4geCAtPiBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDguQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDguQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDguQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDguUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDguQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDguQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQwOFxubW9kdWxlIFRvID0gQXN0XzQwOVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfdHlwIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cCA9XG4gZnVuIHggLT4gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9wYXQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0ID1cbiBmdW4geCAtPiBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9leHByIDogQXN0XzQwOC5QYXJzZXRyZWUuZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByID1cbiBmdW4geCAtPiBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLmxldF87IEFzdF80MDguUGFyc2V0cmVlLmFuZHM7IEFzdF80MDguUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDguQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDguQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDkuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDguUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDkuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDkuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIFdlZCBBcHIgMTggMTA6MzM6MjkgQlNUIDIwMThcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IGMwYmQ2YTI3ZTEzODkxMTU2MGY0M2RjNzVkNWZkZTJhZGU0ZDZjZmUgKEhFQUQsIHRhZzogNC4wNy4wK2JldGEyKVxuICAgICBBdXRob3I6IERhbWllbiBEb2xpZ2V6IDxkYW1pZW4uZG9saWdlekBpbnJpYS5mcj5cbiAgICAgRGF0ZTogICBUdWUgQXByIDEwIDE0OjUwOjQ4IDIwMTggKzAyMDBcblxuICAgICAgICAgY2hhbmdlIFZFUlNJT04gZm9yIDQuMDcuMCtiZXRhMlxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyM1wiXG5lbmRcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwOFxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA4XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfbG9jID0gXztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICAoIHBkaXJfbmFtZS5Mb2NhdGlvbi50eHQsXG4gICAgICAgICAgbWF0Y2ggcGRpcl9hcmcgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBhcmcgKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBGcm9tLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBfcGRpcmFfbG9jIH0gLT5cbiAgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwci5Gcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgfCBQbW9kX2lkZW50IGxpZCAtPlxuICAgICAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQsXG4gICAgICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0b3AgeyBsZXRfOyBhbmRzID0gXzsgYm9keSA9IF8gfSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxldF8ucGJvcF9vcC5sb2MgXCJsZXQgb3BlcmF0b3JzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHByZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDEsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcG9mX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBfO1xuICAgICB9IC0+XG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lLCBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb25cbiAgICAgICAgKGxldCBlID1cbiAgICAgICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAuRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgICBpblxuICAgICAgICAge1xuICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICBlLnBleHRfYXR0cmlidXRlcyBAIGNvcHlfYXR0cmlidXRlcyB4MC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgIH0pXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT4gKFxuICAgICAgbWF0Y2ggeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwci5Gcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgfCBQbW9kX2lkZW50IGxpZCAtPlxuICAgICAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZDtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID1cbiAgICAgICAgICAgICAgICBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgfVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgbGV0IHgwX2xvYyA9XG4gICAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgICAgfCBbXSAtPiBMb2NhdGlvbi5ub25lXG4gICAgICAgIHwgeyBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7IF8gfSA6OiBfIC0+IHB0eXBlX2xvY1xuICAgICAgaW5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MF9sb2MgXCJ0eXBlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAgKGxldCBlID1cbiAgICAgICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAuRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgICBpblxuICAgICAgICAge1xuICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICBlLnBleHRfYXR0cmlidXRlcyBAIGNvcHlfYXR0cmlidXRlcyB4MC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgIH0pXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLnBtc19sb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiB0bCkgLT4gRnJvbS5QYXJzZXRyZWUuUFN0ciAoaGQgOjogaGQgOjogdGwpXG4gICAgICAgIHwgXyAtPiB4MSlcbiAgICB8IF8gLT4geDFcbiAgaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuKCogYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiAgIGZ1blxuICAgICB7IEZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleG5fbG9jID0gcHR5ZXhuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IHB0eWV4bl9hdHRyaWJ1dGVzIH1cbiAgICAgIC0+XG4gICAgIHtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0gKGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYyk7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID1cbiAgICAgICAgIChjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMpXG4gICAgIH0qKVxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwOFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9uYW1lID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24udHh0ID0geDA7IExvY2F0aW9uLmxvYyA9IExvY2F0aW9uLm5vbmUgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9hcmcgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uXG4gICAgPVxuICBsZXQgd3JhcCBwZGlyYV9kZXNjID1cbiAgICBTb21lIHsgVG8uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IFRvLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBMb2NhdGlvbi5ub25lIH1cbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gTm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSkgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MCkgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApIHw+IHdyYXBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKTtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID1cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfYm9vbCB4MiwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMpO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHgxO1xuICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID1cbiAgICAgICAgICBUby5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDIpO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHgxO1xuICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgeDE7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkKTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gcG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCkgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCkgLT5cbiAgICAgICAgY29tcGFyZSBhLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3N0cl9maWVsZHNcbiAgaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpXG4gICAgICAgICAgIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCkgLT5cbiAgICAgICAgY29tcGFyZSBhLnBjdGZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjdGZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc2lnX2ZpZWxkc1xuICBpblxuXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogXyA6OiB0bCkgLT4gRnJvbS5QYXJzZXRyZWUuUFN0ciAoaGQgOjogdGwpXG4gICAgICAgIHwgXyAtPiB4MSlcbiAgICB8IF8gLT4geDFcbiAgaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBwdHlleHRfcGF0aC5Mb2NhdGlvbi5sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBNb24gT2N0ICAyIDExOjI1OjU3IENFU1QgMjAxN1xuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgNjU5NDBhMmM2YmU0M2M0MmY3NWM2YzZiMjU1OTc0ZjdlNmRlMDNjYSAoSEVBRCAtPiA0LjA2LCBvcmlnaW4vNC4wNilcbiAgICAgQXV0aG9yOiBDaHJpc3RvcGhlIFJhZmZhbGxpIDxjaHJpc3RvcGhlQHJhZmZhbGxpLmV1PlxuICAgICBEYXRlOiAgIFN1biBPY3QgMSAxODoyNzowNyAyMDE3ICswMjAwXG5cbiAgICAgICAgIGZpeGVkIHBvc2l0aW9uIG9mIGxhc3Qgb3B0aW9uYWwgbGFzdCBzZW1pY29sdW1uIGluIHNlcXVlbmNlICgjMTM4NylcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjJcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjJcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDZcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgbWlncmF0aW9uX2Vycm9yIExvY2F0aW9uLm5vbmUgXCJpbmhlcml0YW5jZSBpbiBvYmplY3QgdHlwZVwiKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLnR4dCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyBleHByZXNzaW9uXCJcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgXzsgXyB9LCB4MCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHgwOyBsb2MgfSwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0geDA7IGxvYyB9LCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgbG9jOyBfIH0sIF94MCkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ0eXBlIHN1YnN0aXR1dGlvbiBpbnNpZGUgYSBzdWJtb2R1bGVcIlxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IGxvYzsgXyB9LCBfeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbnNpZGUgYSBzdWJtb2R1bGVcIlxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIHR5cGVcIlxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNVxubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCB7IHR4dCA9IGNvcHlfbGFiZWwgeDA7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAuRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZSxcbiAgICAgICAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDAgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNVxubW9kdWxlIFRvID0gQXN0XzQwNFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEuRnJvbS5Bc3R0eXBlcy50eHQpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG5vbG9jIHggPSB7IExvY2F0aW9uLnR4dCA9IHg7IGxvYyA9IExvY2F0aW9uLm5vbmUgfVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbm9sb2MgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChub2xvYyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKG5vbG9jIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4gbm9sb2MgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IG5vbG9jIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE5XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA0XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwibG9jYWwgZXhjZXB0aW9uc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gcGF0dGVybnNcIlxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwNFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGxhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgKGxhYmVsID0gXCJcIilcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgbGFiIG11c3Qgc3RhcnQgd2l0aCAnPycuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChsYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG5cbiAgICBOb3RlOiB3aGVuIHVzZWQgdW5kZXIgUHN0cl9wcmltaXRpdmUsIHByaW0gY2Fubm90IGJlIGVtcHR5XG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29yZV90eXBlIGxpc3Q7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoYXJncyA9IFtdLCByZXMgPSBTb21lIFQwKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvcmVfdHlwZSBsaXN0ICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGxhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgKGxhYmVsID0gXCJcIilcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChsYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBpbnRcbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMTVcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDAyXG5cbmxldCBpbmplY3RfcHJlZGVmX29wdGlvbiBsYWJlbCBkID1cbiAgbGV0IG9wZW4gVG8gaW5cbiAgbGV0IG9wZW4gUGFyc2V0cmVlIGluXG4gIG1hdGNoIGxhYmVsIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIF8gLT5cbiAgICAgIGxldCBsb2MgPSB7IGQucHR5cF9sb2Mgd2l0aCBMb2NhdGlvbi5sb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIGxldCB0eHQgPSBMb25naWRlbnQuTGRvdCAoTG9uZ2lkZW50LkxpZGVudCBcIipwcmVkZWYqXCIsIFwib3B0aW9uXCIpIGluXG4gICAgICBsZXQgaWRlbnQgPSB7IExvY2F0aW9uLnR4dDsgbG9jIH0gaW5cbiAgICAgIHtcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkZW50LCBbIGQgXSk7XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cbiAgfCBfIC0+IGRcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgbG9jIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidW5yZWFjaGFibGUgcGF0dGVybnNcIlxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgbG9jIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IGxvYyB4MCwgY29weV9jb25zdGFudCBsb2MgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCBsb2MgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwic2lnbmF0dXJlcyBpbiBhdHRyaWJ1dGVcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKGZyb21fbG9jIHBleHRfbmFtZSkgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIChmcm9tX2xvYyBwY2RfbmFtZSkgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSBsaXN0ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPiBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImlubGluZSByZWNvcmRzXCJcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFwiXCJcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBcIj9cIiBeIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCBsb2MgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5Bc3R0eXBlcy5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnbCcgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50MzIgKEludDMyLm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnTCcgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50NjQgKEludDY0Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnbicgLT4gVG8uQXN0dHlwZXMuQ29uc3RfbmF0aXZlaW50IChOYXRpdmVpbnQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImN1c3RvbSBpbnRlZ2VyIGxpdGVyYWxzXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uQXN0dHlwZXMuQ29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT4gVG8uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9mbG9hdCB4MFxuICAgICAgfCBTb21lIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImN1c3RvbSBmbG9hdCBsaXRlcmFsc1wiKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9ucyByZWNmbGFnIHR5cGVzID1cbiAgbWF0Y2ggKHJlY2ZsYWcsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB0eXBlcykgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcyAtPiB0eXBlc1xuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCBbXSAtPiBbXVxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB4IDo6IHhzIC0+XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIl9ub25lX1wiO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IC0xO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgKHsgVG8uQXN0dHlwZXMudHh0ID0gXCJub25yZWNcIjsgbG9jIH0sIFRvLlBhcnNldHJlZS5QU3RyIFtdKVxuICAgICAgICA6OiB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4c1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBfeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAyXG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgdHlwID1cbiAgbGV0IG9wZW4gRnJvbSBpblxuICBsZXQgb3BlbiBMb25naWRlbnQgaW5cbiAgbWF0Y2ggKGxhYmVsLCB0eXAuUGFyc2V0cmVlLnB0eXBfZGVzYykgd2l0aFxuICB8ICggVG8uQXN0dHlwZXMuT3B0aW9uYWwgXyxcbiAgICAgIEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgICh7IExvY2F0aW9uLnR4dCA9IExkb3QgKExpZGVudCBcIipwcmVkZWYqXCIsIFwib3B0aW9uXCIpOyBfIH0sIFsgZCBdKSApIC0+XG4gICAgICBkXG4gIHwgXyAtPiB0eXBcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKSxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfYXJncyk7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID1cbiBmdW4geCAtPlxuICBpZiB4IDw+IFwiXCIgdGhlblxuICAgIGlmIHguWzBdID0gJz8nIHRoZW5cbiAgICAgIFRvLkFzdHR5cGVzLk9wdGlvbmFsIChTdHJpbmcuc3ViIHggMSAoU3RyaW5nLmxlbmd0aCB4IC0gMSkpXG4gICAgZWxzZSBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4XG4gIGVsc2UgVG8uQXN0dHlwZXMuTm9sYWJlbFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uQXN0dHlwZXMuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9mbG9hdCB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDMyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB4MCwgU29tZSAnbCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQ2NCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgeDAsIFNvbWUgJ0wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfbmF0aXZlaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgeDAsIFNvbWUgJ24nKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9ucyB0eXBlcyA9XG4gIGxldCBpc19ub25yZWMgKGF0dHIsIF8pID0gYXR0ci5Mb2NhdGlvbi50eHQgPSBcIm5vbnJlY1wiIGluXG4gIG1hdGNoIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB0eXBlcyB3aXRoXG4gIHwgeCA6OiB4cyB3aGVuIExpc3QuZXhpc3RzIGlzX25vbnJlYyB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIC0+XG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKGlzX25vbnJlYyB4KSkgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIChUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHMpXG4gIHwgdHlwZXMgLT4gKFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJsZXQgaXNfa2V5d29yZCA9IGZ1bmN0aW9uXG4gIHwgXCJhbmRcIiAtPiB0cnVlXG4gIHwgXCJhc1wiIC0+IHRydWVcbiAgfCBcImFzc2VydFwiIC0+IHRydWVcbiAgfCBcImJlZ2luXCIgLT4gdHJ1ZVxuICB8IFwiY2xhc3NcIiAtPiB0cnVlXG4gIHwgXCJjb25zdHJhaW50XCIgLT4gdHJ1ZVxuICB8IFwiZG9cIiAtPiB0cnVlXG4gIHwgXCJkb25lXCIgLT4gdHJ1ZVxuICB8IFwiZG93bnRvXCIgLT4gdHJ1ZVxuICB8IFwiZWxzZVwiIC0+IHRydWVcbiAgfCBcImVuZFwiIC0+IHRydWVcbiAgfCBcImV4Y2VwdGlvblwiIC0+IHRydWVcbiAgfCBcImV4dGVybmFsXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiB0cnVlXG4gIHwgXCJmb3JcIiAtPiB0cnVlXG4gIHwgXCJmdW5cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdGlvblwiIC0+IHRydWVcbiAgfCBcImZ1bmN0b3JcIiAtPiB0cnVlXG4gIHwgXCJpZlwiIC0+IHRydWVcbiAgfCBcImluXCIgLT4gdHJ1ZVxuICB8IFwiaW5jbHVkZVwiIC0+IHRydWVcbiAgfCBcImluaGVyaXRcIiAtPiB0cnVlXG4gIHwgXCJpbml0aWFsaXplclwiIC0+IHRydWVcbiAgfCBcImxhenlcIiAtPiB0cnVlXG4gIHwgXCJsZXRcIiAtPiB0cnVlXG4gIHwgXCJtYXRjaFwiIC0+IHRydWVcbiAgfCBcIm1ldGhvZFwiIC0+IHRydWVcbiAgfCBcIm1vZHVsZVwiIC0+IHRydWVcbiAgfCBcIm11dGFibGVcIiAtPiB0cnVlXG4gIHwgXCJuZXdcIiAtPiB0cnVlXG4gIHwgXCJub25yZWNcIiAtPiB0cnVlXG4gIHwgXCJvYmplY3RcIiAtPiB0cnVlXG4gIHwgXCJvZlwiIC0+IHRydWVcbiAgfCBcIm9wZW5cIiAtPiB0cnVlXG4gIHwgXCJvclwiIC0+IHRydWVcbiAgKCogfCBcInBhcnNlclwiIC0+IHRydWUgKilcbiAgfCBcInByaXZhdGVcIiAtPiB0cnVlXG4gIHwgXCJyZWNcIiAtPiB0cnVlXG4gIHwgXCJzaWdcIiAtPiB0cnVlXG4gIHwgXCJzdHJ1Y3RcIiAtPiB0cnVlXG4gIHwgXCJ0aGVuXCIgLT4gdHJ1ZVxuICB8IFwidG9cIiAtPiB0cnVlXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwidHJ5XCIgLT4gdHJ1ZVxuICB8IFwidHlwZVwiIC0+IHRydWVcbiAgfCBcInZhbFwiIC0+IHRydWVcbiAgfCBcInZpcnR1YWxcIiAtPiB0cnVlXG4gIHwgXCJ3aGVuXCIgLT4gdHJ1ZVxuICB8IFwid2hpbGVcIiAtPiB0cnVlXG4gIHwgXCJ3aXRoXCIgLT4gdHJ1ZVxuICB8IFwibG9yXCIgLT4gdHJ1ZVxuICB8IFwibHhvclwiIC0+IHRydWVcbiAgfCBcIm1vZFwiIC0+IHRydWVcbiAgfCBcImxhbmRcIiAtPiB0cnVlXG4gIHwgXCJsc2xcIiAtPiB0cnVlXG4gIHwgXCJsc3JcIiAtPiB0cnVlXG4gIHwgXCJhc3JcIiAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzXG4gICAgb3BlbiBQcmludGYgJCopXG5cbigqIENvcHkgb2YgT0NhbWwgcGFyc2V0cmVlcyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbiAoZnVuIHN1ZmZpeCBfIC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgQXN0XyVzID0gQXN0XyVzXFxuXCIgc3VmZml4IHN1ZmZpeClcbiopXG5tb2R1bGUgQXN0XzQwMiA9IEFzdF80MDJcbm1vZHVsZSBBc3RfNDAzID0gQXN0XzQwM1xubW9kdWxlIEFzdF80MDQgPSBBc3RfNDA0XG5tb2R1bGUgQXN0XzQwNSA9IEFzdF80MDVcbm1vZHVsZSBBc3RfNDA2ID0gQXN0XzQwNlxubW9kdWxlIEFzdF80MDcgPSBBc3RfNDA3XG5tb2R1bGUgQXN0XzQwOCA9IEFzdF80MDhcbm1vZHVsZSBBc3RfNDA5ID0gQXN0XzQwOVxubW9kdWxlIEFzdF80MTAgPSBBc3RfNDEwXG5tb2R1bGUgQXN0XzQxMSA9IEFzdF80MTFcbm1vZHVsZSBBc3RfNDEyID0gQXN0XzQxMlxubW9kdWxlIEFzdF80MTMgPSBBc3RfNDEzXG5tb2R1bGUgQXN0XzQxNCA9IEFzdF80MTRcbm1vZHVsZSBBc3RfNTAwID0gQXN0XzUwMFxubW9kdWxlIEFzdF81MDEgPSBBc3RfNTAxXG5tb2R1bGUgQXN0XzUwMiA9IEFzdF81MDJcbigqJCopXG5cbigqIE1hbnVhbCBtaWdyYXRpb24gYmV0d2VlbiB2ZXJzaW9ucyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4geCB5IC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB4IHkgeCB5O1xuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeSB4IHkgeClcbiopXG5tb2R1bGUgTWlncmF0ZV80MDJfNDAzID0gTWlncmF0ZV80MDJfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDNfNDAyID0gTWlncmF0ZV80MDNfNDAyXG5tb2R1bGUgTWlncmF0ZV80MDNfNDA0ID0gTWlncmF0ZV80MDNfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDRfNDAzID0gTWlncmF0ZV80MDRfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDRfNDA1ID0gTWlncmF0ZV80MDRfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA0ID0gTWlncmF0ZV80MDVfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA2ID0gTWlncmF0ZV80MDVfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA1ID0gTWlncmF0ZV80MDZfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA3ID0gTWlncmF0ZV80MDZfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA2ID0gTWlncmF0ZV80MDdfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA4ID0gTWlncmF0ZV80MDdfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA3ID0gTWlncmF0ZV80MDhfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA5ID0gTWlncmF0ZV80MDhfNDA5XG5tb2R1bGUgTWlncmF0ZV80MDlfNDA4ID0gTWlncmF0ZV80MDlfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDlfNDEwID0gTWlncmF0ZV80MDlfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTBfNDA5ID0gTWlncmF0ZV80MTBfNDA5XG5tb2R1bGUgTWlncmF0ZV80MTBfNDExID0gTWlncmF0ZV80MTBfNDExXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEwID0gTWlncmF0ZV80MTFfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEyID0gTWlncmF0ZV80MTFfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTJfNDExID0gTWlncmF0ZV80MTJfNDExXG5tb2R1bGUgTWlncmF0ZV80MTJfNDEzID0gTWlncmF0ZV80MTJfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTNfNDEyID0gTWlncmF0ZV80MTNfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTNfNDE0ID0gTWlncmF0ZV80MTNfNDE0XG5tb2R1bGUgTWlncmF0ZV80MTRfNDEzID0gTWlncmF0ZV80MTRfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTRfNTAwID0gTWlncmF0ZV80MTRfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDBfNDE0ID0gTWlncmF0ZV81MDBfNDE0XG5tb2R1bGUgTWlncmF0ZV81MDBfNTAxID0gTWlncmF0ZV81MDBfNTAxXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAwID0gTWlncmF0ZV81MDFfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAyID0gTWlncmF0ZV81MDFfNTAyXG5tb2R1bGUgTWlncmF0ZV81MDJfNTAxID0gTWlncmF0ZV81MDJfNTAxXG4oKiQqKVxuXG4oKiBDb21waWxlciBtb2R1bGVzICopXG5tb2R1bGUgQXN0X21ldGFkYXRhID0gQXN0X21ldGFkYXRhXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgUGFyc2UgPSBQYXJzZVxubW9kdWxlIFBwcmludGFzdCA9IFBwcmludGFzdFxuXG5sZXQgaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCkgPVxuICAoKklGX0FUX0xFQVNUIDQwOCBPY2FtbF9jb21tb24uQ29tcG1pc2MucmVhZF9jbGZsYWdzX2Zyb21fZW52ICgpICopXG4gICgqSUZfTk9UX0FUX0xFQVNUIDQwOCAoKSAqKVxuKCoqIEFkanVzdCB0aGUgcmVwb3J0aW5nIHN0eWxlIG9mIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgT0NBTUxfQ09MT1IgYW5kIE9DQU1MX0VSUk9SX1NUWUxFLiAqKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUT0RPOiByZW1vdmUgdGhpcyBvcGVuICopXG5vcGVuIFN0ZGxpYjBcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcbm9wZW4gQXN0bGliLkFzdF81MDBcblxuW0BAQHdhcm5pbmcgXCItOVwiXVxuXG5vcGVuIEFzdHR5cGVzXG5vcGVuIFBhcnNldHJlZVxuXG50eXBlICdhIHdpdGhfbG9jID0gJ2EgTG9jYXRpb24ubG9jXG50eXBlIGxvYyA9IExvY2F0aW9uLnRcbnR5cGUgbGlkID0gTG9uZ2lkZW50LnQgd2l0aF9sb2NcbnR5cGUgc3RyID0gc3RyaW5nIHdpdGhfbG9jXG50eXBlIHN0cl9vcHQgPSBzdHJpbmcgb3B0aW9uIHdpdGhfbG9jXG50eXBlIGF0dHJzID0gYXR0cmlidXRlIGxpc3RcblxubGV0IGRlZmF1bHRfbG9jID0gcmVmIExvY2F0aW9uLm5vbmVcblxudHlwZSByZWZfYW5kX3ZhbHVlID0gUiA6ICdhIHJlZiAqICdhIC0+IHJlZl9hbmRfdmFsdWVcblxubGV0IHByb3RlY3RfcmVmID1cbiAgbGV0IHNldF9yZWYgKFIgKHIsIHYpKSA9IHIgOj0gdiBpblxuICBmdW4gcmVmIGYgLT5cbiAgICBsZXQgKFIgKHIsIF8pKSA9IHJlZiBpblxuICAgIGxldCBiYWNrdXAgPSBSIChyLCAhcikgaW5cbiAgICBzZXRfcmVmIHJlZjtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICByYWlzZSBlXG5cbmxldCB3aXRoX2RlZmF1bHRfbG9jIGwgZiA9IHByb3RlY3RfcmVmIChSIChkZWZhdWx0X2xvYywgbCkpIGZcblxubW9kdWxlIENvbnN0ID0gc3RydWN0XG4gIGxldCBpbnRlZ2VyID9zdWZmaXggaSA9IFBjb25zdF9pbnRlZ2VyIChpLCBzdWZmaXgpXG4gIGxldCBpbnQgP3N1ZmZpeCBpID0gaW50ZWdlciA/c3VmZml4IChJbnQudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQzMiA/KHN1ZmZpeCA9ICdsJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50MzIudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQ2NCA/KHN1ZmZpeCA9ICdMJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50NjQudG9fc3RyaW5nIGkpXG4gIGxldCBuYXRpdmVpbnQgPyhzdWZmaXggPSAnbicpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbiAgbGV0IGZsb2F0ID9zdWZmaXggZiA9IFBjb25zdF9mbG9hdCAoZiwgc3VmZml4KVxuICBsZXQgY2hhciBjID0gUGNvbnN0X2NoYXIgY1xuXG4gIGxldCBzdHJpbmcgP3F1b3RhdGlvbl9kZWxpbWl0ZXIgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIHMgPVxuICAgIFBjb25zdF9zdHJpbmcgKHMsIGxvYywgcXVvdGF0aW9uX2RlbGltaXRlcilcbmVuZFxuXG5tb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIG5hbWUgcGF5bG9hZCA9XG4gICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIFR5cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjID0gZDtcbiAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBkLnB0eXBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFB0eXBfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhciBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jb25zdHIgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9vYmplY3QgKGEsIGIpKVxuICBsZXQgY2xhc3NfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NsYXNzIChhLCBiKSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2FsaWFzIChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXJpYW50IChhLCBiLCBjKSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcG9seSAoYSwgYikpXG4gIGxldCBwYWNrYWdlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BhY2thZ2UgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF9leHRlbnNpb24gYSlcblxuICBsZXQgZm9yY2VfcG9seSB0ID1cbiAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IHQgfCBfIC0+IHBvbHkgfmxvYzp0LnB0eXBfbG9jIFtdIHRcbiAgKCogLT4gZ2hvc3Q/ICopXG5cbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICAgIGluXG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbmVuZFxuXG5tb2R1bGUgUGF0ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2MgPSBkO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGQucHBhdF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHBhdF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyIGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hbGlhcyAoYSwgYikpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RhbnQgYSlcbiAgbGV0IGludGVydmFsID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2ludGVydmFsIChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90dXBsZSBhKVxuXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID1cbiAgICBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJ1Y3QgKGEsIE9wdGlvbi5tYXAgKGZ1biBiIC0+IChbXSwgYikpIGIpKVxuXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3JlY29yZCAoYSwgYikpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYXJyYXkgYSlcbiAgbGV0IG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vciAoYSwgYikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IHR5cGVfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90eXBlIGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfbGF6eSBhKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF91bnBhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29wZW4gKGEsIGIpKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXhjZXB0aW9uIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYyA9IGQ7XG4gICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZC5wZXhwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWRlbnQgYSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdGFudCBhKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldCAoYSwgYiwgYykpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgZnVuY3Rpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW5jdGlvbiBhKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXBwbHkgKGEsIGIpKVxuICBsZXQgbWF0Y2hfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX21hdGNoIChhLCBiKSlcbiAgbGV0IHRyeV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHJ5IChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF90dXBsZSBhKVxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cnVjdCAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3JlY29yZCAoYSwgYikpXG4gIGxldCBmaWVsZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9maWVsZCAoYSwgYikpXG4gIGxldCBzZXRmaWVsZCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcnJheSBhKVxuICBsZXQgaWZ0aGVuZWxzZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpKVxuICBsZXQgc2VxdWVuY2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VxdWVuY2UgKGEsIGIpKVxuICBsZXQgd2hpbGVfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3doaWxlIChhLCBiKSlcbiAgbGV0IGZvcl8gP2xvYyA/YXR0cnMgYSBiIGMgZCBlID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgY29lcmNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29lcmNlIChhLCBiLCBjKSlcbiAgbGV0IHNlbmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VuZCAoYSwgYikpXG4gIGxldCBuZXdfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXcgYSlcbiAgbGV0IHNldGluc3R2YXIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0aW5zdHZhciAoYSwgYikpXG4gIGxldCBvdmVycmlkZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3ZlcnJpZGUgYSlcbiAgbGV0IGxldG1vZHVsZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykpXG4gIGxldCBsZXRleGNlcHRpb24gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSlcbiAgbGV0IGFzc2VydF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Fzc2VydCBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xhenkgYSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcG9seSAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vYmplY3QgYSlcbiAgbGV0IG5ld3R5cGUgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3dHlwZSAoYSwgYikpXG4gIGxldCBwYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vcGVuIChhLCBiKSlcblxuICBsZXQgbGV0b3AgP2xvYyA/YXR0cnMgbGV0XyBhbmRzIGJvZHkgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9KVxuXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2V4dGVuc2lvbiBhKVxuICBsZXQgdW5yZWFjaGFibGUgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQZXhwX3VucmVhY2hhYmxlXG4gIGxldCBjYXNlIGxocyA/Z3VhcmQgcmhzID0geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9XG5cbiAgbGV0IGJpbmRpbmdfb3Agb3AgcGF0IGV4cCBsb2MgPVxuICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXR5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtdHlfZGVzYyA9IGQ7IHBtdHlfbG9jID0gbG9jOyBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG10eV9hdHRyaWJ1dGVzID0gZC5wbXR5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfaWRlbnQgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9hbGlhcyBhKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9zaWduYXR1cmUgYSlcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2Z1bmN0b3IgKGEsIGIpKVxuICBsZXQgd2l0aF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfd2l0aCAoYSwgYikpXG4gIGxldCB0eXBlb2ZfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV90eXBlb2YgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIE1vZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbW9kX2Rlc2MgPSBkOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGQucG1vZF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2lkZW50IHgpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3N0cnVjdHVyZSB4KVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYXJnIGJvZHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9mdW5jdG9yIChhcmcsIGJvZHkpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgbTEgbTIgPSBtayA/bG9jID9hdHRycyAoUG1vZF9hcHBseSAobTEsIG0yKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIG0gbXR5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfY29uc3RyYWludCAobSwgbXR5KSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBlID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfdW5wYWNrIGUpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBTaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc2lnX2Rlc2MgPSBkOyBwc2lnX2xvYyA9IGxvYyB9XG4gIGxldCB2YWx1ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3ZhbHVlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc2lnX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBlc3Vic3QgYSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdWxlIGEpXG4gIGxldCBtb2Rfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2RzdWJzdCBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfb3BlbiBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19pbmNsdWRlIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzaWdfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgU3RyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHN0cl9kZXNjID0gZDsgcHN0cl9sb2MgPSBsb2MgfVxuICBsZXQgZXZhbCA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXZhbCAoYSwgYXR0cnMpKVxuICBsZXQgdmFsdWUgP2xvYyBhIGIgPSBtayA/bG9jIChQc3RyX3ZhbHVlIChhLCBiKSlcbiAgbGV0IHByaW1pdGl2ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3ByaW1pdGl2ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHN0cl90eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHVsZSBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfb3BlbiBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzc190eXBlIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2luY2x1ZGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgQ2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNsX2Rlc2MgPSBkOyBwY2xfbG9jID0gbG9jOyBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2xfYXR0cmlidXRlcyA9IGQucGNsX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHIgKGEsIGIpKVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX3N0cnVjdHVyZSBhKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9hcHBseSAoYSwgYikpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3R5X2Rlc2MgPSBkOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGQucGN0eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2NvbnN0ciAoYSwgYikpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X3NpZ25hdHVyZSBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGN0eV9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0ZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3RmX2Rlc2MgPSBkOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfaW5oZXJpdCBhKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfdmFsIChhLCBiLCBjLCBkKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX21ldGhvZCAoYSwgYiwgYywgZCkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGN0Zl9hdHRyaWJ1dGUgYSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gZC5wY3RmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIENmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjZl9kZXNjID0gZDsgcGNmX2xvYyA9IGxvYzsgcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbmhlcml0IChhLCBiLCBjKSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX3ZhbCAoYSwgYiwgYykpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9tZXRob2QgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGluaXRpYWxpemVyXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbml0aWFsaXplciBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjZl9hdHRyaWJ1dGUgYSlcbiAgbGV0IHZpcnR1YWxfIGN0ID0gQ2ZrX3ZpcnR1YWwgY3RcbiAgbGV0IGNvbmNyZXRlIG8gZSA9IENma19jb25jcmV0ZSAobywgZSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBkLnBjZl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBWYWwgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocHJpbSA9IFtdKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgIHB2YWxfdHlwZSA9IHR5cDtcbiAgICAgIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHZhbF9sb2MgPSBsb2M7XG4gICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgdHlwID1cbiAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXA7IHBtZF9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtZF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNcyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBzeW4gPVxuICAgIHtcbiAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgIHBtc19tYW5pZmVzdCA9IHN5bjtcbiAgICAgIHBtc19hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXNfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTXRkID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/dHlwIG5hbWUgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbXRkX3R5cGUgPSB0eXA7XG4gICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtdGRfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgZXhwciA9XG4gICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1iX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE9wbiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhvdmVycmlkZSA9IEZyZXNoKSBleHByID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBJbmNsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBtZXhwciA9XG4gICAgeyBwaW5jbF9tb2QgPSBtZXhwcjsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuZW5kXG5cbm1vZHVsZSBWYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgcGF0IGV4cHIgPVxuICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IGF0dHJzOyBwdmJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgQ2kgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmlydCA9IENvbmNyZXRlKSA/KHBhcmFtcyA9IFtdKVxuICAgICAgbmFtZSBleHByID1cbiAgICB7XG4gICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUeXBlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KGNzdHJzID0gW10pXG4gICAgICA/KGtpbmQgPSBQdHlwZV9hYnN0cmFjdCkgPyhwcml2ID0gUHVibGljKSA/bWFuaWZlc3QgbmFtZSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdHlwZV9sb2MgPSBsb2M7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGZpZWxkID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8obXV0ID0gSW1tdXRhYmxlKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgcGxkX211dGFibGUgPSBtdXQ7XG4gICAgICBwbGRfdHlwZSA9IHR5cDtcbiAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICBwbGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG4oKiogVHlwZSBleHRlbnNpb25zICopXG5tb2R1bGUgVGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8ocHJpdiA9IFB1YmxpYylcbiAgICAgIHBhdGggY29uc3RydWN0b3JzID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgbWtfZXhjZXB0aW9uID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGNvbnN0cnVjdG9yID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBraW5kID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBkZWNsID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfZGVjbCAodmFycywgYXJncywgcmVzKTtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCByZWJpbmQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBsaWQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X3JlYmluZCBsaWQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgQ3NpZyA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbm1vZHVsZSBDc3RyID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxuKCoqIFJvdyBmaWVsZHMgKilcbm1vZHVsZSBSZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwcmZfZGVzYyA9IGRlc2M7IHByZl9sb2MgPSBsb2M7IHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgY29uc3QgdHlzID1cbiAgICBtayA/bG9jID9hdHRycyAoUnRhZyAobGFiZWwsIGNvbnN0LCB0eXMpKVxuXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoUmluaGVyaXQgdHkpXG5lbmRcblxuKCoqIE9iamVjdCBmaWVsZHMgKilcbm1vZHVsZSBPZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwb2ZfZGVzYyA9IGRlc2M7IHBvZl9sb2MgPSBsb2M7IHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgdHkgPSBtayA/bG9jID9hdHRycyAoT3RhZyAobGFiZWwsIHR5KSlcbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChPaW5oZXJpdCB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQkVHSU4gb2YgQkxBQ0sgTUFHSUMgKilcbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxudHlwZSBfIHdpdG5lc3NlcyA9IC4uXG5cbnR5cGUgXyBtaWdyYXRpb24gPSAuLlxudHlwZSBfIG1pZ3JhdGlvbiArPSBVbmRlZmluZWQgOiBfIG1pZ3JhdGlvblxuXG50eXBlICdhIG1pZ3JhdGlvbl9pbmZvID0ge1xuICBtdXRhYmxlIG5leHRfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbiAgbXV0YWJsZSBwcmV2aW91c192ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xufVxuXG4oKiogQWJzdHJhY3QgdmlldyBvZiBhIHZlcnNpb24gb2YgYW4gT0NhbWwgQXN0ICopXG5tb2R1bGUgdHlwZSBBc3QgPSBzaWdcbiAgKCokIGZvcmVhY2hfbW9kdWxlIChmdW4gbSB0eXBlcyAtPlxuICAgICAgcHJpbnRmIFwiICBtb2R1bGUgJXMgOiBzaWdcXG5cIiBtO1xuICAgICAgTGlzdC5pdGVyIHR5cGVzIH5mOihwcmludGYgXCIgICAgdHlwZSAlc1xcblwiKTtcbiAgICAgIHByaW50ZiBcIiAgZW5kXFxuXCJcbiAgICApXG4gICopXG4gIG1vZHVsZSBQYXJzZXRyZWUgOiBzaWdcbiAgICB0eXBlIHN0cnVjdHVyZVxuICAgIHR5cGUgc2lnbmF0dXJlXG4gICAgdHlwZSB0b3BsZXZlbF9waHJhc2VcbiAgICB0eXBlIGNvcmVfdHlwZVxuICAgIHR5cGUgZXhwcmVzc2lvblxuICAgIHR5cGUgcGF0dGVyblxuICAgIHR5cGUgY2FzZVxuICAgIHR5cGUgdHlwZV9kZWNsYXJhdGlvblxuICAgIHR5cGUgdHlwZV9leHRlbnNpb25cbiAgICB0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgIHR5cGUgY2xhc3NfZXhwclxuICAgIHR5cGUgY2xhc3NfZmllbGRcbiAgICB0eXBlIGNsYXNzX3R5cGVcbiAgICB0eXBlIGNsYXNzX3NpZ25hdHVyZVxuICAgIHR5cGUgY2xhc3NfdHlwZV9maWVsZFxuICAgIHR5cGUgbW9kdWxlX2V4cHJcbiAgICB0eXBlIG1vZHVsZV90eXBlXG4gICAgdHlwZSBzaWduYXR1cmVfaXRlbVxuICAgIHR5cGUgc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG4oKiQqKVxuICBtb2R1bGUgQ29uZmlnIDogc2lnXG4gICAgdmFsIGFzdF9pbXBsX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICAgIHZhbCBhc3RfaW50Zl9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgZW5kXG5lbmRcblxuKCogU2hvcnRjdXRzIGZvciB0YWxraW5nIGFib3V0IGFzdCB0eXBlcyBvdXRzaWRlIG9mIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxudHlwZSAnYSBfdHlwZXMgPSAnYSBjb25zdHJhaW50ICdhXG4gID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogXztcXG5cIiBzKSAqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogXztcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBfO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IF87XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogXztcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBfO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IF87XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogXztcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBfO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IF87XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IF87XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogXztcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBfO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IF87XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBfO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IF87XG4oKiQqKVxuICA+XG47O1xuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgcHJpbnRmIFwidHlwZSAnYSBnZXRfJXMgPVxcblwiIHM7XG4gICAgcHJpbnRmIFwiICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgJXMgOiAneDsgLi4gPlxcblwiIHNcbiAgKSAqKVxudHlwZSAnYSBnZXRfc3RydWN0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3RvcGxldmVsX3BocmFzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0b3BsZXZlbF9waHJhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY29yZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNvcmVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHByZXNzaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4cHJlc3Npb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfcGF0dGVybiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBwYXR0ZXJuIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2Nhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2FzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2RlY2xhcmF0aW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZGVjbGFyYXRpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9leHRlbnNpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9leHRlbnNpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19zaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZV9maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV9leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV9leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZV9pdGVtIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZV9pdGVtIDogJ3g7IC4uID5cbigqJCopXG5cbm1vZHVsZSB0eXBlIE9DYW1sX3ZlcnNpb24gPSBzaWdcbiAgbW9kdWxlIEFzdCA6IEFzdFxuICB2YWwgdmVyc2lvbiA6IGludFxuICB2YWwgc3RyaW5nX3ZlcnNpb24gOiBzdHJpbmdcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICB2YWwgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mb1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdG5lc3MoQXN0IDogQXN0KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICBsZXQgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mbyA9XG4gICAgeyBuZXh0X3ZlcnNpb24gPSBVbmRlZmluZWQ7IHByZXZpb3VzX3ZlcnNpb24gPSBVbmRlZmluZWQgfVxuZW5kXG5cbnR5cGUgJ3R5cGVzIG9jYW1sX3ZlcnNpb24gPVxuICAobW9kdWxlIE9DYW1sX3ZlcnNpb25cbiAgICAoKiQgbGV0IHNlcCA9IHdpdGhfdGhlbl9hbmQgKCkgaW5cbiAgICAgIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgICAgIHByaW50ZiBcIiAgICAldCB0eXBlIEFzdC4lcy4lcyA9ICd0eXBlcyBnZXRfJXNcXG5cIiBzZXAgbSBzIHMpICopXG4gICAgd2l0aCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgPSAndHlwZXMgZ2V0X3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9ICd0eXBlcyBnZXRfdG9wbGV2ZWxfcGhyYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY29yZV90eXBlID0gJ3R5cGVzIGdldF9jb3JlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHByZXNzaW9uID0gJ3R5cGVzIGdldF9leHByZXNzaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUucGF0dGVybiA9ICd0eXBlcyBnZXRfcGF0dGVyblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNhc2UgPSAndHlwZXMgZ2V0X2Nhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0gJ3R5cGVzIGdldF90eXBlX2RlY2xhcmF0aW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSAndHlwZXMgZ2V0X3R5cGVfZXh0ZW5zaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gJ3R5cGVzIGdldF9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19leHByID0gJ3R5cGVzIGdldF9jbGFzc19leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9ICd0eXBlcyBnZXRfY2xhc3Nfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZV9maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByID0gJ3R5cGVzIGdldF9tb2R1bGVfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlID0gJ3R5cGVzIGdldF9tb2R1bGVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zaWduYXR1cmVfaXRlbVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgKVxuXG50eXBlICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyVzOiAnZnJvbSBnZXRfJXMgLT4gJ3RvXyBnZXRfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlOiAnZnJvbSBnZXRfc3RydWN0dXJlIC0+ICd0b18gZ2V0X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmU6ICdmcm9tIGdldF9zaWduYXR1cmUgLT4gJ3RvXyBnZXRfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZTogJ2Zyb20gZ2V0X3RvcGxldmVsX3BocmFzZSAtPiAndG9fIGdldF90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlOiAnZnJvbSBnZXRfY29yZV90eXBlIC0+ICd0b18gZ2V0X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uOiAnZnJvbSBnZXRfZXhwcmVzc2lvbiAtPiAndG9fIGdldF9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm46ICdmcm9tIGdldF9wYXR0ZXJuIC0+ICd0b18gZ2V0X3BhdHRlcm47XG4gIGNvcHlfY2FzZTogJ2Zyb20gZ2V0X2Nhc2UgLT4gJ3RvXyBnZXRfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uOiAnZnJvbSBnZXRfdHlwZV9kZWNsYXJhdGlvbiAtPiAndG9fIGdldF90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uOiAnZnJvbSBnZXRfdHlwZV9leHRlbnNpb24gLT4gJ3RvXyBnZXRfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiAnZnJvbSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICd0b18gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByOiAnZnJvbSBnZXRfY2xhc3NfZXhwciAtPiAndG9fIGdldF9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZTogJ2Zyb20gZ2V0X2NsYXNzX3R5cGUgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmU6ICdmcm9tIGdldF9jbGFzc19zaWduYXR1cmUgLT4gJ3RvXyBnZXRfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ6ICdmcm9tIGdldF9jbGFzc190eXBlX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHI6ICdmcm9tIGdldF9tb2R1bGVfZXhwciAtPiAndG9fIGdldF9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZTogJ2Zyb20gZ2V0X21vZHVsZV90eXBlIC0+ICd0b18gZ2V0X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtOiAnZnJvbSBnZXRfc2lnbmF0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW06ICdmcm9tIGdldF9zdHJ1Y3R1cmVfaXRlbSAtPiAndG9fIGdldF9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbmxldCBpZCB4ID0geFxubGV0IG1pZ3JhdGlvbl9pZGVudGl0eSA6ICgnYSwgJ2EpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICBjb3B5XyVzID0gaWQ7XFxuXCIgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgPSBpZDtcbiAgY29weV9zaWduYXR1cmUgPSBpZDtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgPSBpZDtcbiAgY29weV9jb3JlX3R5cGUgPSBpZDtcbiAgY29weV9leHByZXNzaW9uID0gaWQ7XG4gIGNvcHlfcGF0dGVybiA9IGlkO1xuICBjb3B5X2Nhc2UgPSBpZDtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uID0gaWQ7XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gPSBpZDtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBpZDtcbiAgY29weV9jbGFzc19leHByID0gaWQ7XG4gIGNvcHlfY2xhc3NfZmllbGQgPSBpZDtcbiAgY29weV9jbGFzc190eXBlID0gaWQ7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA9IGlkO1xuICBjb3B5X21vZHVsZV9leHByID0gaWQ7XG4gIGNvcHlfbW9kdWxlX3R5cGUgPSBpZDtcbiAgY29weV9zaWduYXR1cmVfaXRlbSA9IGlkO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtID0gaWQ7XG4oKiQqKVxufVxuXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBtaWdyYXRpb25fY29tcG9zZSAoYWIgOiAoJ2EsICdiKSBtaWdyYXRpb25fZnVuY3Rpb25zKSAoYmMgOiAoJ2IsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zKSA6ICgnYSwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lLTIxcyA9IGNvbXBvc2UgYmMuY29weV8lLTIxcyBhYi5jb3B5XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgIGFiLmNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgYWIuY29weV9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2V4cHJlc3Npb24gICAgICAgICAgICBhYi5jb3B5X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3BhdHRlcm4gICAgICAgICAgICAgICBhYi5jb3B5X3BhdHRlcm47XG4gIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2Nhc2UgICAgICAgICAgICAgICAgICBhYi5jb3B5X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICBhYi5jb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICBhYi5jb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGNvbXBvc2UgYmMuY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgYWIuY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlICAgICAgICAgICAgYWIuY29weV9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgYWIuY29weV9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICBhYi5jb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV9leHByICAgICAgICAgICBhYi5jb3B5X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgYWIuY29weV9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxudHlwZSBfIG1pZ3JhdGlvbiArPSBNaWdyYXRpb24gOiAnZnJvbSBvY2FtbF92ZXJzaW9uICogKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uIC0+ICdmcm9tIG1pZ3JhdGlvblxuXG5tb2R1bGUgdHlwZSBNaWdyYXRlX21vZHVsZSA9IHNpZ1xuICBtb2R1bGUgRnJvbSA6IEFzdFxuICBtb2R1bGUgVG8gOiBBc3RcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgcHJpbnRmIFwiICB2YWwgY29weV8lLTIxczogRnJvbS4lcy4lcyAtPiBUby4lcy4lc1xcblwiIHMgbSBzIG0gcykgKilcbiAgdmFsIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZVxuICB2YWwgY29weV9zaWduYXR1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gIHZhbCBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgIDogRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgdmFsIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZVxuICB2YWwgY29weV9leHByZXNzaW9uICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgdmFsIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuXG4gIHZhbCBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZVxuICB2YWwgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgdmFsIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgdmFsIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICB2YWwgY29weV9jbGFzc19leHByICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgdmFsIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlXG4gIHZhbCBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gIHZhbCBjb3B5X21vZHVsZV9leHByICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gIHZhbCBjb3B5X21vZHVsZV90eXBlICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gIHZhbCBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4oKiQqKVxuZW5kXG5cbm1vZHVsZSBNaWdyYXRpb25fZnVuY3Rpb25zXG4gICAgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0IG1pZ3JhdGlvbl9mdW5jdGlvbnMgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbGV0IG9wZW4gQV90b19CIGluXG4gICAge1xuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICAgIGNvcHlfcGF0dGVybjtcbiAgICAgIGNvcHlfY2FzZTtcbiAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfbWlncmF0aW9uIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuICAgIChCX3RvX0EgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQi5Bc3QgYW5kIG1vZHVsZSBUbyA9IEEuQXN0KVxuPVxuc3RydWN0XG4gIGxldCAoKSA9IChcbiAgICBsZXQgaXNfdW5kZWZpbmVkIDogdHlwZSBhLiBhIG1pZ3JhdGlvbiAtPiBib29sID0gZnVuY3Rpb25cbiAgICAgIHwgVW5kZWZpbmVkIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgYXNzZXJ0IChBLnZlcnNpb24gPCBCLnZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24pO1xuICAgIGxldCBtb2R1bGUgQV90b19CX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQSkoQikoQV90b19CKSBpblxuICAgIGxldCBtb2R1bGUgQl90b19BX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQikoQSkoQl90b19BKSBpblxuICAgIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQSksIEFfdG9fQl9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBCKSk7XG4gICAgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQiksIEJfdG9fQV9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBBKSk7XG4gIClcbmVuZFxuXG50eXBlICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb24gPVxuICB8IE5vX21pZ3JhdGlvbiA6ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cbiAgfCBJbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgOiAgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uXG4gICAgICAtPiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG5cbmxldCBpbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMpXFxuXCIgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUpXG4gICAgKHR5cGUgc2lnbmF0dXJlKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZSlcbiAgICAodHlwZSBjb3JlX3R5cGUpXG4gICAgKHR5cGUgZXhwcmVzc2lvbilcbiAgICAodHlwZSBwYXR0ZXJuKVxuICAgICh0eXBlIGNhc2UpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgKHR5cGUgY2xhc3NfZXhwcilcbiAgICAodHlwZSBjbGFzc19maWVsZClcbiAgICAodHlwZSBjbGFzc190eXBlKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZSlcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkKVxuICAgICh0eXBlIG1vZHVsZV9leHByKVxuICAgICh0eXBlIG1vZHVsZV90eXBlKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgIFwiICAgICAlLTIxcyA6ICVzO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmU7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGU7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICBkaXJlY3Rpb25cbiAgPVxuICBsZXQgdmVyc2lvbiA9IG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgTmV4dCAtPiBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvblxuICAgIHwgYFByZXZpb3VzIC0+IEEubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvblxuICBpblxuICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgfCBVbmRlZmluZWQgLT4gTm9fbWlncmF0aW9uXG4gIHwgTWlncmF0aW9uIChfLCBmdW5zLCB0b18pIC0+IEltbWVkaWF0ZV9taWdyYXRpb24gKGZ1bnMsIHRvXylcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbWlncmF0ZVxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzMSkgKHR5cGUgJXMyKVxcblwiIHMgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUxKSAodHlwZSBzdHJ1Y3R1cmUyKVxuICAgICh0eXBlIHNpZ25hdHVyZTEpICh0eXBlIHNpZ25hdHVyZTIpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMSkgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMilcbiAgICAodHlwZSBjb3JlX3R5cGUxKSAodHlwZSBjb3JlX3R5cGUyKVxuICAgICh0eXBlIGV4cHJlc3Npb24xKSAodHlwZSBleHByZXNzaW9uMilcbiAgICAodHlwZSBwYXR0ZXJuMSkgKHR5cGUgcGF0dGVybjIpXG4gICAgKHR5cGUgY2FzZTEpICh0eXBlIGNhc2UyKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24xKSAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbjEpICh0eXBlIHR5cGVfZXh0ZW5zaW9uMilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IxKSAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IyKVxuICAgICh0eXBlIGNsYXNzX2V4cHIxKSAodHlwZSBjbGFzc19leHByMilcbiAgICAodHlwZSBjbGFzc19maWVsZDEpICh0eXBlIGNsYXNzX2ZpZWxkMilcbiAgICAodHlwZSBjbGFzc190eXBlMSkgKHR5cGUgY2xhc3NfdHlwZTIpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMSkgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMilcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkMSkgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDIpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIxKSAodHlwZSBtb2R1bGVfZXhwcjIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUxKSAodHlwZSBtb2R1bGVfdHlwZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0xKSAodHlwZSBzaWduYXR1cmVfaXRlbTIpXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0xKSAodHlwZSBzdHJ1Y3R1cmVfaXRlbTIpXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczE7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUxO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUxO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UxO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUxO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMTtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjE7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UxO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMTtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24xO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IxO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMTtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQxO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDE7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMTtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUxO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTE7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICAoKG1vZHVsZSBCKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMyO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMjtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMjtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMjtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMjtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjI7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4yO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMjtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjI7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMjtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTI7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTI7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQyO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMjtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0yO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTI7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgPVxuICBtYXRjaCBBLlZlcnNpb24gd2l0aFxuICB8IEIuVmVyc2lvbiAtPiBtaWdyYXRpb25faWRlbnRpdHlcbiAgfCBfIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9IGlmIEEudmVyc2lvbiA8IEIudmVyc2lvbiB0aGVuIGBOZXh0IGVsc2UgYFByZXZpb3VzIGluXG4gICAgbGV0IHJlYyBtaWdyYXRlIChtIDogQS50eXBlcyBpbW1lZGlhdGVfbWlncmF0aW9uKSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGYsIChtb2R1bGUgVG8pKSAtPlxuICAgICAgICBtYXRjaCBUby5WZXJzaW9uIHdpdGhcbiAgICAgICAgfCBCLlZlcnNpb24gLT4gZlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYXRjaCBpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgVG8pIGRpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChnLCB0bzIpIC0+XG4gICAgICAgICAgICBtaWdyYXRlIChJbW1lZGlhdGVfbWlncmF0aW9uIChtaWdyYXRpb25fY29tcG9zZSBmIGcsIHRvMikpXG4gICAgaW5cbiAgICBtaWdyYXRlIChpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgQSkgZGlyZWN0aW9uKVxuXG5tb2R1bGUgQ29udmVydCAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgbGV0IHtcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgY29weV9zaWduYXR1cmU7XG4gICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgY29weV9jb3JlX3R5cGU7XG4gICAgY29weV9leHByZXNzaW9uO1xuICAgIGNvcHlfcGF0dGVybjtcbiAgICBjb3B5X2Nhc2U7XG4gICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY29weV9jbGFzc19leHByO1xuICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgY29weV9jbGFzc190eXBlO1xuICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICBjb3B5X21vZHVsZV9leHByO1xuICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgfSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBtaWdyYXRlIChtb2R1bGUgQSkgKG1vZHVsZSBCKVxuZW5kXG5cbigqJCBmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIHZlcnNpb24gLT5cbiAgICBwcmludGYgXCJtb2R1bGUgT0NhbWxfJWQgPSBzdHJ1Y3RcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF8lZClcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHZlcnNpb24gPSAlZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgc3RyaW5nX3ZlcnNpb24gPSAlU1xcblwiIHZlcnNpb247XG4gICAgcHJpbnRmIFwiZW5kXFxuXCI7XG4gICAgcHJpbnRmIFwibGV0IG9jYW1sXyVkIDogT0NhbWxfJWQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfJWQpXFxuXCJcbiAgICAgIG4gbiBuO1xuICApXG4qKVxubW9kdWxlIE9DYW1sXzQwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDIpXG4gIGxldCB2ZXJzaW9uID0gNDAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wMlwiXG5lbmRcbmxldCBvY2FtbF80MDIgOiBPQ2FtbF80MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAyKVxubW9kdWxlIE9DYW1sXzQwMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDMpXG4gIGxldCB2ZXJzaW9uID0gNDAzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wM1wiXG5lbmRcbmxldCBvY2FtbF80MDMgOiBPQ2FtbF80MDMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAzKVxubW9kdWxlIE9DYW1sXzQwNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDQpXG4gIGxldCB2ZXJzaW9uID0gNDA0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNFwiXG5lbmRcbmxldCBvY2FtbF80MDQgOiBPQ2FtbF80MDQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA0KVxubW9kdWxlIE9DYW1sXzQwNSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDVcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDUpXG4gIGxldCB2ZXJzaW9uID0gNDA1XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNVwiXG5lbmRcbmxldCBvY2FtbF80MDUgOiBPQ2FtbF80MDUudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA1KVxubW9kdWxlIE9DYW1sXzQwNiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDZcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDYpXG4gIGxldCB2ZXJzaW9uID0gNDA2XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNlwiXG5lbmRcbmxldCBvY2FtbF80MDYgOiBPQ2FtbF80MDYudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA2KVxubW9kdWxlIE9DYW1sXzQwNyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDdcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDcpXG4gIGxldCB2ZXJzaW9uID0gNDA3XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wN1wiXG5lbmRcbmxldCBvY2FtbF80MDcgOiBPQ2FtbF80MDcudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA3KVxubW9kdWxlIE9DYW1sXzQwOCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDhcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDgpXG4gIGxldCB2ZXJzaW9uID0gNDA4XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOFwiXG5lbmRcbmxldCBvY2FtbF80MDggOiBPQ2FtbF80MDgudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA4KVxubW9kdWxlIE9DYW1sXzQwOSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDlcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDkpXG4gIGxldCB2ZXJzaW9uID0gNDA5XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOVwiXG5lbmRcbmxldCBvY2FtbF80MDkgOiBPQ2FtbF80MDkudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA5KVxubW9kdWxlIE9DYW1sXzQxMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTApXG4gIGxldCB2ZXJzaW9uID0gNDEwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMFwiXG5lbmRcbmxldCBvY2FtbF80MTAgOiBPQ2FtbF80MTAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEwKVxubW9kdWxlIE9DYW1sXzQxMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTEpXG4gIGxldCB2ZXJzaW9uID0gNDExXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMVwiXG5lbmRcbmxldCBvY2FtbF80MTEgOiBPQ2FtbF80MTEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDExKVxubW9kdWxlIE9DYW1sXzQxMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTIpXG4gIGxldCB2ZXJzaW9uID0gNDEyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMlwiXG5lbmRcbmxldCBvY2FtbF80MTIgOiBPQ2FtbF80MTIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEyKVxubW9kdWxlIE9DYW1sXzQxMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTMpXG4gIGxldCB2ZXJzaW9uID0gNDEzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xM1wiXG5lbmRcbmxldCBvY2FtbF80MTMgOiBPQ2FtbF80MTMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEzKVxubW9kdWxlIE9DYW1sXzQxNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTQpXG4gIGxldCB2ZXJzaW9uID0gNDE0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xNFwiXG5lbmRcbmxldCBvY2FtbF80MTQgOiBPQ2FtbF80MTQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDE0KVxubW9kdWxlIE9DYW1sXzUwMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDApXG4gIGxldCB2ZXJzaW9uID0gNTAwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4wXCJcbmVuZFxubGV0IG9jYW1sXzUwMCA6IE9DYW1sXzUwMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDApXG5tb2R1bGUgT0NhbWxfNTAxID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMSlcbiAgbGV0IHZlcnNpb24gPSA1MDFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjFcIlxuZW5kXG5sZXQgb2NhbWxfNTAxIDogT0NhbWxfNTAxLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMSlcbm1vZHVsZSBPQ2FtbF81MDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAyKVxuICBsZXQgdmVyc2lvbiA9IDUwMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMlwiXG5lbmRcbmxldCBvY2FtbF81MDIgOiBPQ2FtbF81MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAyKVxuKCokKilcblxubGV0IGFsbF92ZXJzaW9ucyA6IChtb2R1bGUgT0NhbWxfdmVyc2lvbikgbGlzdCA9IFtcbiAgKCokZm9yZWFjaF92ZXJzaW9uIChmdW4gbiBfIC0+XG4gICAgICBwcmludGYgXCIobW9kdWxlIE9DYW1sXyVkIDogT0NhbWxfdmVyc2lvbik7XFxuXCIgbikqKVxuKG1vZHVsZSBPQ2FtbF80MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDAzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDUgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA2IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDggOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA5IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTEgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbigqJCopXG5dXG5cbigqJGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4gYSBiIC0+XG4gICAgcHJpbnRmIFwiaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfJWQpKE9DYW1sXyVkKVxcblwiIGEgYjtcbiAgICBwcmludGYgXCIgICAgKEFzdGxpYi5NaWdyYXRlXyVkXyVkKShBc3RsaWIuTWlncmF0ZV8lZF8lZClcXG5cIiBhIGIgYiBhXG4gIClcbiopXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDIpKE9DYW1sXzQwMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAyXzQwMykoQXN0bGliLk1pZ3JhdGVfNDAzXzQwMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMykoT0NhbWxfNDA0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDNfNDA0KShBc3RsaWIuTWlncmF0ZV80MDRfNDAzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA0KShPQ2FtbF80MDUpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNF80MDUpKEFzdGxpYi5NaWdyYXRlXzQwNV80MDQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDUpKE9DYW1sXzQwNilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNikoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNikoT0NhbWxfNDA3KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDZfNDA3KShBc3RsaWIuTWlncmF0ZV80MDdfNDA2KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA3KShPQ2FtbF80MDgpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwN180MDgpKEFzdGxpYi5NaWdyYXRlXzQwOF80MDcpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDgpKE9DYW1sXzQwOSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA4XzQwOSkoQXN0bGliLk1pZ3JhdGVfNDA5XzQwOClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOSkoT0NhbWxfNDEwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDlfNDEwKShBc3RsaWIuTWlncmF0ZV80MTBfNDA5KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEwKShPQ2FtbF80MTEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMF80MTEpKEFzdGxpYi5NaWdyYXRlXzQxMV80MTApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTEpKE9DYW1sXzQxMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDExXzQxMikoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMikoT0NhbWxfNDEzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTJfNDEzKShBc3RsaWIuTWlncmF0ZV80MTNfNDEyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEzKShPQ2FtbF80MTQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxM180MTQpKEFzdGxpYi5NaWdyYXRlXzQxNF80MTMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTQpKE9DYW1sXzUwMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDE0XzUwMCkoQXN0bGliLk1pZ3JhdGVfNTAwXzQxNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzUwMCkoT0NhbWxfNTAxKVxuICAgIChBc3RsaWIuTWlncmF0ZV81MDBfNTAxKShBc3RsaWIuTWlncmF0ZV81MDFfNTAwKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAxKShPQ2FtbF81MDIpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMV81MDIpKEFzdGxpYi5NaWdyYXRlXzUwMl81MDEpXG4oKiQqKVxuXG5tb2R1bGUgT0NhbWxfY3VycmVudCA9IE9DYW1sX09DQU1MX1ZFUlNJT05cblxubW9kdWxlIEZpbmRfdmVyc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbXBsIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBJbnRmIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBVbmtub3duXG5cbiAgbGV0IGZyb21fbWFnaWMgbWFnaWMgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFVua25vd25cbiAgICAgIHwgKG1vZHVsZSBWZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbXBsIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbnRmIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29wIHRhaWxcbiAgICBpblxuICAgICgqIFRyYXZlcnNlIHRoZSB2ZXJzaW9ucyBmcm9tIGxhc3QgdG8gZmlyc3Q6XG4gICAgICAgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlbid0IHVuaXF1ZSBhbW9uZyB2ZXJzaW9ucyxcbiAgICAgICB3ZSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiB3aXRoIGEgbWFnaWMgbnVtYmVyIG1hdGNoLlxuICAgICAgIFRoZSBzaXR1YXRpb24gaW4gbWluZCBpcyB0cnVuayBzdXBwb3J0LiAqKVxuICAgICAgbGV0IGFsbF92ZXJzaW9uc190b3BfZG93biA9IExpc3QucmV2IGFsbF92ZXJzaW9ucyBpblxuICAgICAgbG9vcCBhbGxfdmVyc2lvbnNfdG9wX2Rvd25cbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHVzZWQgdG8gY29udHJvbCB3aGF0IHdlIHVzZSBmcm9tIHRoZSBjdXJyZW50IGNvbXBpbGVyIGFuZCB3aGF0IGlzIGVtYmVkIGluXG4gICB0aGlzIGxpYnJhcnkuXG5cbiAgIEl0IG11c3QgYmUgb3BlbmVkIGluIGFsbCBtb2R1bGVzLCBlc3BlY2lhbGx5IHRoZSBvbmVzIGNvbWluZyBmcm9tIHRoZSBjb21waWxlci5cbiopXG5cbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxubW9kdWxlIEpzID0gVmVyc2lvbnMuT0NhbWxfNTAwXG5tb2R1bGUgT2NhbWwgPSBWZXJzaW9ucy5PQ2FtbF9jdXJyZW50XG5cbm1vZHVsZSBTZWxlY3RfYXN0IChPY2FtbCA6IFZlcnNpb25zLk9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGluY2x1ZGUgSnNcblxuICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdqcywgJ29jYW1sKSB0ID1cbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXNcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS4lcyxcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS4lcyApXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICB0XFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgcyBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUb3BsZXZlbF9waHJhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ29yZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4cHJlc3Npb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBQYXR0ZXJuXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUucGF0dGVybixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5wYXR0ZXJuIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2FzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2FzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2V4dGVuc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4oKiQqKVxuICAgICAgfCBMaXN0IDogKCdhLCAnYikgdCAtPiAoJ2EgbGlzdCwgJ2IgbGlzdCkgdFxuICAgICAgfCBQYWlyIDogKCdhLCAnYikgdCAqICgnYywgJ2QpIHQgLT4gKCdhICogJ2MsICdiICogJ2QpIHRcbiAgZW5kXG5cbiAgb3BlbiBUeXBlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG4gIG1vZHVsZSBUb19vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKEpzKSAoT2NhbWwpXG5cbiAgbGV0IHJlYyBvZl9vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBvY2FtbCAtPiBqcyA9XG4gICAgbGV0IG9wZW4gT2Zfb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAob2Zfb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IG9mX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IG9mX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgcmVjIHRvX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IGpzIC0+IG9jYW1sID1cbiAgICBsZXQgb3BlbiBUb19vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwICh0b19vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gdG9fb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gdG9fb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCBvZl9vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IHRvX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gb2Zfb2NhbWwgaXRlbVxuICBsZXQgdG9fb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSBvZl9vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IHRvX29jYW1sIGl0ZW1cbmVuZFxuXG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gU2VsZWN0X2FzdCAoT2NhbWwpXG5tb2R1bGUgQXN0X2hlbHBlciA9IEFzdF9oZWxwZXJfbGl0ZVxuXG4oKiBNb2R1bGVzIGZyb20gQXN0XzxuPiBvZiBBc3RsaWIsIHdoZXJlIDxuPiBpcyB0aGUgY29tcGlsZXIgdmVyc2lvbiB0aGUgcHB4bGliIGRyaXZlciBpcyBjb21waWxlZCB3aXRoICopXG5tb2R1bGUgUGFyc2V0cmVlID0gU2VsZWN0ZWRfYXN0LkFzdC5QYXJzZXRyZWVcbm1vZHVsZSBBc3R0eXBlcyA9IFNlbGVjdGVkX2FzdC5Bc3QuQXN0dHlwZXNcblxuKCogT3RoZXIgQXN0bGliIG1vZHVsZXMgKilcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcblxubW9kdWxlIFBhcnNlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0bGliLlBhcnNlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uIGxleGJ1ZiA9IGltcGxlbWVudGF0aW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3N0cnVjdHVyZVxuICBsZXQgaW50ZXJmYWNlIGxleGJ1ZiA9IGludGVyZmFjZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zaWduYXR1cmVcblxuICBsZXQgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiA9XG4gICAgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCB1c2VfZmlsZSBsZXhidWYgPVxuICAgIHVzZV9maWxlIGxleGJ1ZiB8PiBMaXN0Lm1hcCBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCBjb3JlX3R5cGUgbGV4YnVmID0gY29yZV90eXBlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2NvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiBsZXhidWYgPSBleHByZXNzaW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2V4cHJlc3Npb25cbiAgbGV0IHBhdHRlcm4gbGV4YnVmID0gcGF0dGVybiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9wYXR0ZXJuXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZGVmYXVsdF9wcmludF93YXJuaW5nIF9sb2MgPSAoKVxubGV0IGFib3V0X2l0ZV9icmFuY2hfcmVmID0gcmVmIGRlZmF1bHRfcHJpbnRfd2FybmluZ1xubGV0IGNhcmVfYWJvdXRfaXRlX2JyYW5jaCA9IHJlZiBmYWxzZVxubGV0IGFib3V0X2l0ZV9icmFuY2ggbG9jID0gIWFib3V0X2l0ZV9icmFuY2hfcmVmIGxvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogRGVmaW5pdGlvbiBvZiB0aGUgT0NhbWwgQVNUICopXG5cbm9wZW4gSW1wb3J0XG5cbigqIFRoaXMgZmlsZSBpcyBvYnRhaW5lZCBieTpcblxuICAgLSBjb3B5aW5nIGEgc3Vic2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFzdF94eHgubWwgZmlsZSBmcm9tIEFzdGxpYlxuICAgKHN1Yi1tb2R1bGVzIEFzdHR5cGVzIGFuZCBQYXJzZXRyZWUpXG4gICAtIGFkZGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucyBmb3IgcG9zaXRpb24sIGxvY2F0aW9uLCBsb2MgYW5kIGxvbmdpZGVudFxuICAgLSBmbGF0dGVuaW5nIGFsbCB0aGUgbW9kdWxlc1xuICAgLSByZW1vdmluZyBBc3R0eXBlcy5jb25zdGFudCAodW51c2VkIGFuZCBjb25mbGljdHMgd2l0aCBQYXJzZXRyZWUuY29uc3RhbnQpXG4gICAtIHJlbmFtaW5nIGEgZmV3IHR5cGVzOlxuICAgLSAtIExvY2F0aW9uLnQgLT4gbG9jYXRpb25cbiAgIC0gLSBMb25naWRlbnQudCAtPiBsb25naWRlbnRcbiAgIC0gYWRkaW5nIGEgdHlwZSBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvYyBhbmQgcmVwbGFjaW5nIGFsbCB0aGUgb2NjdXJyZW5jZXMgb2YgdGhlXG4gICBsYXR0ZXIgYnkgdGhlIGZvcm1lci4gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZSBpdGVyYXRpb24gYW4gdGhlIGxldmVsIG9mIGFcbiAgIGxvbmdpZGVudCBsb2NcbiAgIC0gYWRkaW5nIGEgdHlwZSBjYXNlcyA9IGNhc2UgbGlzdFxuICAgLSByZXBsYWNpbmcgYWxsIG9jY3VyZW5jZXMgb2YgXCJjYXNlIGxpc3RcIiBieSBcImNhc2VzXCJcbiAgIC0gcmVwbGFjaW5nIGFsbCB0aGUgKCpJRl9DVVJSRU5UID0gRm9vLmJhciopIGJ5OiA9IEZvby5iYXJcbiAgIC0gcmVtb3ZpbmcgdGhlIGV4dHJhIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlXG4gICAtIHJlcGxhY2luZyBhcHAgW3R5cGUgLi4uXSBieSBbYW5kIC4uLl0gdG8gbWFrZSBldmVyeXRoaW5nIG9uZSByZWN1cnNpdmUgYmxvY2tcbiAgIC0gYWRkaW5nIFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1bQEBAZW5kXSBhdCB0aGUgZW5kXG5cbiAgIFRvIHVwZGF0ZSBpdCB0byBhIG5ld2VyIE9DYW1sIHZlcnNpb24sIGNyZWF0ZSBhIG5ldyBtb2R1bGUgd2l0aCB0aGUgYWJvdmUgZnJvbSB0aGVcbiAgIGxhdGVzdCBjb21waWxlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBvcGVucyB0byBnZXQgaXQgdG9cbiAgIGNvbXBpbGU6XG4gICBbe1xuICAgIG1vZHVsZSBBc3QgPSBWZXJzaW9ucy5PQ2FtbF80eHhcbiAgICBvcGVuIEFzdC5Bc3RcbiAgICBtb2R1bGUgTG9jYXRpb24gICA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuICAgIG1vZHVsZSBMb25naWRlbnQgPSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG4gICB9XVxuXG4gICBPbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCB0aGUgaW5saW5lZCBkZXJpdmVkIHRyYXZlcnNhbCBjbGFzc2VzIGJ5IHJ1bm5pbmdcbiAgIFt7IGR1bmUgYnVpbGQgQGxpbnQgfV0geW91IGNhbiByZXBsYWNlIHRoZSBhYm92ZSBtZW50aW9uZWQgbW9kdWxlIGRlZmluaXRpb25zIGJ5IGFcbiAgIFtvcGVuIEltcG9ydF0gYW5kIHVwZGF0ZSBbSW1wb3J0XSBzbyB0aGF0IHRoZSBbSnNdIG1vZHVsZSBwb2ludHMgdG9cbiAgIFtWZXJzaW9ucy5PQ2FtbF80eHhdLlxuKilcblxuKCogU291cmNlIGNvZGUgbG9jYXRpb25zIChyYW5nZXMgb2YgcG9zaXRpb25zKSwgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5cbnR5cGUgcG9zaXRpb24gPSBMZXhpbmcucG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5hbmQgbG9jYXRpb24gPSBMb2NhdGlvbi50ID0ge1xuICBsb2Nfc3RhcnQgOiBwb3NpdGlvbjtcbiAgbG9jX2VuZCA6IHBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5hbmQgbG9jYXRpb25fc3RhY2sgPSBsb2NhdGlvbiBsaXN0XG5cbigqIE5vdGUgb24gdGhlIHVzZSBvZiBMZXhpbmcucG9zaXRpb24gaW4gdGhpcyBtb2R1bGUuXG4gICBJZiBbcG9zX2ZuYW1lID0gXCJcIl0sIHRoZW4gdXNlIFshaW5wdXRfbmFtZV0gaW5zdGVhZC5cbiAgIElmIFtwb3NfbG51bSA9IC0xXSwgdGhlbiBbcG9zX2JvbCA9IDBdLiBVc2UgW3Bvc19jbnVtXSBhbmRcbiAgIHJlLXBhcnNlIHRoZSBmaWxlIHRvIGdldCB0aGUgbGluZSBhbmQgY2hhcmFjdGVyIG51bWJlcnMuXG4gICBFbHNlIGFsbCBmaWVsZHMgYXJlIGNvcnJlY3QuXG4qKVxuYW5kICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IGxvY2F0aW9uIH1cblxuKCogTG9uZyBpZGVudGlmaWVycywgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5hbmQgbG9uZ2lkZW50ID0gTG9uZ2lkZW50LnQgPVxuICB8IExpZGVudCBvZiBzdHJpbmdcbiAgfCBMZG90IG9mIGxvbmdpZGVudCAqIHN0cmluZ1xuICB8IExhcHBseSBvZiBsb25naWRlbnQgKiBsb25naWRlbnRcblxuYW5kIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jXG5cbigqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbmFuZCByZWNfZmxhZyA9IEFzdHR5cGVzLnJlY19mbGFnID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbmFuZCBkaXJlY3Rpb25fZmxhZyA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gVXB0byB8IERvd250b1xuXG4oKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbmFuZCBwcml2YXRlX2ZsYWcgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBQcml2YXRlIHwgUHVibGljXG5hbmQgbXV0YWJsZV9mbGFnID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuYW5kIHZpcnR1YWxfZmxhZyA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuYW5kIG92ZXJyaWRlX2ZsYWcgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gT3ZlcnJpZGUgfCBGcmVzaFxuYW5kIGNsb3NlZF9mbGFnID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBDbG9zZWQgfCBPcGVuXG5hbmQgbGFiZWwgPSBzdHJpbmdcblxuYW5kIGFyZ19sYWJlbCA9IEFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIHwgTm9sYWJlbFxuICB8IExhYmVsbGVkIG9mIHN0cmluZyAgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgfCBPcHRpb25hbCBvZiBzdHJpbmcgICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG5hbmQgdmFyaWFuY2UgPSBBc3R0eXBlcy52YXJpYW5jZSA9IENvdmFyaWFudCB8IENvbnRyYXZhcmlhbnQgfCBOb1ZhcmlhbmNlXG5hbmQgaW5qZWN0aXZpdHkgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSA9IEluamVjdGl2ZSB8IE5vSW5qZWN0aXZpdHlcblxuKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuYW5kIGNvbnN0YW50ID0gUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBleGNlcHRcbiAgICAgICAgICBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIgKilcbiAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBsb2NhdGlvbiAqIHN0cmluZyBvcHRpb25cbiAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuICopXG4gIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBhcmUgcmVqZWN0ZWRcbiAgICAgICAgICBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbigqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG5hbmQgYXR0cmlidXRlID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSA9IHtcbiAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgYXR0cl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tAaWQgQVJHXV0gYW5kIFtbQEBpZCBBUkddXS5cblxuICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC4gVGhlIGNvbXBpbGVyIGlnbm9yZXNcbiAgICB1bmtub3duIGF0dHJpYnV0ZXMuICopXG5cbmFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIHBheWxvYWQgPSBQYXJzZXRyZWUucGF5bG9hZCA9XG4gIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogWz8gUF0gb3IgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbigqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBjb3JlX3R5cGUgPSBQYXJzZXRyZWUuY29yZV90eXBlID0ge1xuICBwdHlwX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYztcbiAgcHR5cF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHR5cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb3JlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWRdfSxcbiAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfS4gKilcbiAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV0gcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZVxuICAgICAgICAgIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uICopXG4gIHwgUHR5cF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUIHRjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfSxcbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfS4gKilcbiAgfCBQdHlwX2NsYXNzIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbI3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgI3Rjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1sgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s+IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0sXG4gICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s8IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLiAqKVxuICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1cbiAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBjb25zdHJhaW50IG9uIGFcbiAgICAgICAgICAgIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAge1tcbiAgICAgICAgICAgIGxldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLlxuICAgICAgICAgIF19XG4gICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVxuICAgICAgICAgICAgW1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9IFtQZXhwX3BvbHldfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfSBbcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH0gW1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9IFtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS4gKilcbiAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbmFuZCBwYWNrYWdlX3R5cGUgPSBsb25naWRlbnRfbG9jICogKGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUpIGxpc3RcbigqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuXG4gICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldIHJlcHJlc2VudHNcbiAgICAgIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLiAqKVxuXG5hbmQgcm93X2ZpZWxkID0gUGFyc2V0cmVlLnJvd19maWVsZCA9IHtcbiAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgcHJmX2xvYyA6IGxvY2F0aW9uO1xuICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCByb3dfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGEgY29uc3RhbnQgKGVtcHR5KVxuICAgICAgICAgICAgY29uc3RydWN0b3IuXG4gICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3IgKHNlZVxuICAgICAgICAgICAgNC4yIGluIHRoZSBtYW51YWwpICopXG4gIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbmFuZCBvYmplY3RfZmllbGQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkID0ge1xuICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICBwb2ZfbG9jIDogbG9jYXRpb247XG4gIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIG9iamVjdF9maWVsZF9kZXNjID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4oKiogezIgUGF0dGVybnN9ICopXG5cbmFuZCBwYXR0ZXJuID0gUGFyc2V0cmVlLnBhdHRlcm4gPSB7XG4gIHBwYXRfZGVzYyA6IHBhdHRlcm5fZGVzYztcbiAgcHBhdF9sb2MgOiBsb2NhdGlvbjtcbiAgcHBhdF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHBhdF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBwYXR0ZXJuX2Rlc2MgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjID1cbiAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXIgYnV0IHJlamVjdGVkIGJ5XG4gICAgICAgICAgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQcGF0X2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV0gKilcbiAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXSAqKVxuICB8IFBwYXRfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfVxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gIHwgUHBhdF90eXBlIG9mIGxvbmdpZGVudF9sb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgfCBQcGF0X29wZW4gb2YgbG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgZXhwcmVzc2lvbiA9IFBhcnNldHJlZS5leHByZXNzaW9uID0ge1xuICBwZXhwX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2M7XG4gIHBleHBfbG9jIDogbG9jYXRpb247XG4gIHBleHBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBleHBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgZXhwcmVzc2lvbl9kZXNjID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIHwgUGV4cF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdICopXG4gIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sXG4gICAgICAgICAgWzFuXSAqKVxuICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdXG5cbiAgICAgICAgICBOb3RlczpcblxuICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59IFtQZXhwX2Z1bl19LlxuICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZyB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59XG4gICAgICAgICAgICBbUGV4cF9mdW5dfS4gKilcbiAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgW2xpXSBjYW4gYmUge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0gKG5vbiBsYWJlbGVkXG4gICAgICAgICAgYXJndW1lbnQpLCB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9IFtMYWJlbGxlZF19IChsYWJlbGxlZFxuICAgICAgICAgIGFyZ3VtZW50cykgb3Ige3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWxdfSAob3B0aW9uYWxcbiAgICAgICAgICBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQZXhwX2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldICopXG4gIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdICopXG4gIHwgUGV4cF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAgKCoqIFtFLmxdICopXG4gIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfSBbVXB0b119XG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfSBbRG93bnRvXX0gKilcbiAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFsoRSA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS4gKilcbiAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgfCBQZXhwX25ldyBvZiBsb25naWRlbnRfbG9jICAoKiogW25ldyBNLmNdICopXG4gIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfSBbQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgIHZhbHVlcykuICopXG4gIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuYW5kIGNhc2UgPSBQYXJzZXRyZWUuY2FzZSA9IHtcbiAgcGNfbGhzIDogcGF0dGVybjtcbiAgcGNfZ3VhcmQgOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgcGNfcmhzIDogZXhwcmVzc2lvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuYW5kIGxldG9wID0gUGFyc2V0cmVlLmxldG9wID0ge1xuICBsZXRfIDogYmluZGluZ19vcDtcbiAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgYm9keSA6IGV4cHJlc3Npb247XG59XG5cbmFuZCBiaW5kaW5nX29wID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgPSB7XG4gIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgcGJvcF9sb2MgOiBsb2NhdGlvbjtcbn1cblxuKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID0ge1xuICBwdmFsX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdmFsX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHB2YWxfcHJpbSA6IHN0cmluZyBsaXN0O1xuICBwdmFsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdmFsX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG5cbiAgICAtIFt2YWwgeDogVF0sIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfSBbcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19XG4gICAgICBbcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV0gKilcblxuKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwdHlwZV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHR5cGVfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gIHB0eXBlX2NzdHJzIDogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIGxvY2F0aW9uKSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgcHR5cGVfa2luZCA6IHR5cGVfa2luZDtcbiAgcHR5cGVfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gIHB0eXBlX21hbmlmZXN0IDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gIHB0eXBlX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdHlwZV9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sIGZvciB2YXJpb3VzXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfSBbcHR5cGVfa2luZF19IGFuZFxuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9IFtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcblxuICAgIC0gW3R5cGUgdF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVxuICAgICAgW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH0gW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9XG4gICAgICBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH0gW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59IFtQdHlwZV9vcGVuXX0sXG4gICAgICBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0uICopXG5cbmFuZCB0eXBlX2tpbmQgPSBQYXJzZXRyZWUudHlwZV9raW5kID1cbiAgfCBQdHlwZV9hYnN0cmFjdFxuICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICB8IFB0eXBlX29wZW5cblxuYW5kIGxhYmVsX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID0ge1xuICBwbGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBsZF9tdXRhYmxlIDogbXV0YWJsZV9mbGFnO1xuICBwbGRfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcGxkX2xvYyA6IGxvY2F0aW9uO1xuICBwbGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtAaWQxXSBbQGlkMl1dICopXG59XG4oKiogLSBbeyAuLi47IGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfSBbcGxkX211dGFibGVdfVxuICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19LFxuICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVxuICAgICAgW3BsZF9tdXRhYmxlXX0gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0uXG5cbiAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IHtcbiAgcGNkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2RfdmFycyA6IHN0cmluZyBsb2MgbGlzdDtcbiAgcGNkX2FyZ3MgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gIHBjZF9yZXMgOiBjb3JlX3R5cGUgb3B0aW9uO1xuICBwY2RfbG9jIDogbG9jYXRpb247XG4gIHBjZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufSByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgICAgIGFyZ3VtZW50cyBvZjpcblxuICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQzogVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQyBvZiB7Li4ufV0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgICAgICAgLSBbQzogey4uLn0gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS4gKilcblxuYW5kIHR5cGVfZXh0ZW5zaW9uID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0ge1xuICBwdHlleHRfcGF0aCA6IGxvbmdpZGVudF9sb2M7XG4gIHB0eWV4dF9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwdHlleHRfY29uc3RydWN0b3JzIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gIHB0eWV4dF9wcml2YXRlIDogcHJpdmF0ZV9mbGFnO1xuICBwdHlleHRfbG9jIDogbG9jYXRpb247XG4gIHB0eWV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgKFt0eXBlIHQgKz0gLi4uXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0ge1xuICBwZXh0X25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgcGV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHR5cGVfZXhjZXB0aW9uID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID0ge1xuICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gIHB0eWV4bl9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV0gZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvblxuICAgICAgICAgIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG5cbiAgICAgICAgICB7dWxcbiAgICAgICAgICAgey0gW0Mgb2YgVDEgKiAuLi4gKiBUbl1cbiAgICAgICAgICAgICAgd2hlbjpcblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW05vbmVdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9ICopXG4gIHwgUGV4dF9yZWJpbmQgb2YgbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbigqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc190eXBlID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSB7XG4gIHBjdHlfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYztcbiAgcGN0eV9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgfCBQY3R5X2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiAtIFtjXVxuICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19LFxuICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfS4gKilcbiAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9IHtcbiAgcGNzaWdfc2VsZiA6IGNvcmVfdHlwZTtcbiAgcGNzaWdfZmllbGRzIDogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9IFtwY3NpZ19zZWxmXX0gaXNcbiAgICAgIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fSBbUHR5cF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0ge1xuICBwY3RmX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gIHBjdGZfbG9jIDogbG9jYXRpb247XG4gIHBjdGZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kICdhIGNsYXNzX2luZm9zID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zID0ge1xuICBwY2lfdmlydCA6IHZpcnR1YWxfZmxhZztcbiAgcGNpX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHBjaV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNpX2V4cHIgOiAnYTtcbiAgcGNpX2xvYyA6IGxvY2F0aW9uO1xuICBwY2lfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLiAqKVxuXG5hbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc19leHByID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSB7XG4gIHBjbF9kZXNjIDogY2xhc3NfZXhwcl9kZXNjO1xuICBwY2xfbG9jIDogbG9jYXRpb247XG4gIHBjbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19leHByX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgfCBQY2xfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF0uICopXG4gIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS4gW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvclxuICAgICAgICAgIHN0YXJ0IHdpdGggWz9dIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPSB7XG4gIHBjc3RyX3NlbGYgOiBwYXR0ZXJuO1xuICBwY3N0cl9maWVsZHMgOiBjbGFzc19maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9IFtwY3N0cl9zZWxmXX0gaXNcbiAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX0gW1BwYXRfYW55XX0gKilcblxuYW5kIGNsYXNzX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0ge1xuICBwY2ZfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gIHBjZl9sb2MgOiBsb2NhdGlvbjtcbiAgcGNmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2luaGVyaXQgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVxuICAgICAgICAgICAgW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IGFuZCBbc10gaXMgW1NvbWUgeF0gKilcbiAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt2YWwgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9XG4gICAgICAgICAgICBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVxuICAgICAgICAgICAgW011dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19ICopXG4gIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1cbiAgICAgICAgICAgIFtQZXhwX3BvbHldfSlcbiAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXSAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1cbiAgICAgICAgICAgIFtQdHlwX3BvbHldfSkgKilcbiAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kIGNsYXNzX2ZpZWxkX2tpbmQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbmFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX3R5cGUgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgPSB7XG4gIHBtdHlfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2M7XG4gIHBtdHlfbG9jIDogbG9jYXRpb247XG4gIHBtdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgfCBQbXR5X2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBtdHlfYWxpYXMgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG5hbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICB8IFVuaXQgICgqKiBbKCldICopXG4gIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG5hbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSB7XG4gIHBzaWdfZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gIHBzaWdfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzaWduYXR1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdICopXG4gIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICopXG4gIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAqKVxuICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtZF9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtZF90eXBlIDogbW9kdWxlX3R5cGU7XG4gIHBtZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1kX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9IHtcbiAgcG1zX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXNfbWFuaWZlc3QgOiBsb25naWRlbnRfbG9jO1xuICBwbXNfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtc19sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtdGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtdGRfdHlwZSA6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgcG10ZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG10ZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtTID0gTVRdLFxuICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgd2hlblxuICAgICAge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfSBbcG10ZF90eXBlXX0gaXMgW05vbmVdLiAqKVxuXG5hbmQgJ2Egb3Blbl9pbmZvcyA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zID0ge1xuICBwb3Blbl9leHByIDogJ2E7XG4gIHBvcGVuX292ZXJyaWRlIDogb3ZlcnJpZGVfZmxhZztcbiAgcG9wZW5fbG9jIDogbG9jYXRpb247XG4gIHBvcGVuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gKHNpbGVuY2VzIHRoZSBcInVzZWRcbiAgICAgIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofSBbRnJlc2hdfSAqKVxuXG5hbmQgb3Blbl9kZXNjcmlwdGlvbiA9IGxvbmdpZGVudF9sb2Mgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbmFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuYW5kICdhIGluY2x1ZGVfaW5mb3MgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9IHtcbiAgcGluY2xfbW9kIDogJ2E7XG4gIHBpbmNsX2xvYyA6IGxvY2F0aW9uO1xuICBwaW5jbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbmFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG5hbmQgd2l0aF9jb25zdHJhaW50ID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIHwgUHdpdGhfdHlwZSBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiB0aGVcbiAgICAgICAgICB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICB8IFB3aXRoX21vZHVsZSBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvYyAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gIHwgUHdpdGhfdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gIHwgUHdpdGhfbW9kc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV9leHByID0gUGFyc2V0cmVlLm1vZHVsZV9leHByID0ge1xuICBwbW9kX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjO1xuICBwbW9kX2xvYyA6IGxvY2F0aW9uO1xuICBwbW9kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV9leHByX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIHwgUG1vZF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1hdICopXG4gIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG5hbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSB7XG4gIHBzdHJfZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gIHBzdHJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIHZhbHVlX2JpbmRpbmcgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyA9IHtcbiAgcHZiX3BhdCA6IHBhdHRlcm47XG4gIHB2Yl9leHByIDogZXhwcmVzc2lvbjtcbiAgcHZiX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwdmJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBtb2R1bGVfYmluZGluZyA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9IHtcbiAgcG1iX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1iX2V4cHIgOiBtb2R1bGVfZXhwcjtcbiAgcG1iX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwbWJfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4oKiogezEgVG9wbGV2ZWx9ICopXG4oKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuYW5kIHRvcGxldmVsX3BocmFzZSA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgPSB7XG4gIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgcGRpcl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPSB7XG4gIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgcGRpcmFfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgfCBQZGlyX2lkZW50IG9mIGxvbmdpZGVudFxuICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmFuZCBjYXNlcyA9IGNhc2UgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdXG5cbmNsYXNzIHZpcnR1YWwgbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4geCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgaXRlciA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbGlzdCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcHRpb24gLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiB1bml0XG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgc2VsZiNzdHJpbmcgcG9zX2ZuYW1lO1xuICAgICAgICBzZWxmI2ludCBwb3NfbG51bTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2JvbDtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2NudW1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2NfZW5kO1xuICAgICAgICBzZWxmI2Jvb2wgbG9jX2dob3N0XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxvYyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgX2EgdHh0O1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGxvY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYlxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IHVuaXQgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiB1bml0ID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+ICgpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiB1bml0ID0gZnVuIF8gLT4gKClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lO1xuICAgICAgICBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICBzZWxmI3BheWxvYWQgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+ICgpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICBiXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcmZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjYm9vbCBiO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcGF0X2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBiXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXhwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZFxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYztcbiAgICAgICAgICAgIHNlbGYjZGlyZWN0aW9uX2ZsYWcgZDtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGJcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjX2xocztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGNfcmhzXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBzZWxmI2JpbmRpbmdfb3AgbGV0XztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gYm9keVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3A7XG4gICAgICAgIHNlbGYjcGF0dGVybiBwYm9wX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBib3BfZXhwO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBib3BfbG9jXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmFsX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYylcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lO1xuICAgICAgICBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGxkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzO1xuICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZTtcbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGNcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3RmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcGNpX3BhcmFtcztcbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWU7XG4gICAgICAgIF9hIHBjaV9leHByO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgZFxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGNcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc2lnX2xvY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWRfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lO1xuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1zX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10ZF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcGVuX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBvcGVuX2V4cHI7XG4gICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBpbmNsX21vZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbW9kX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYlxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwdmJfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmJfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV9leHByIHBtYl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1iX2xvY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gYWNjXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhIGFjY1xuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBhY2NcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBhY2NcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjY1xuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhIGFjY1xuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGEgYWNjXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gYWNjXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBhY2NcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX29wZW4gLT4gYWNjXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGEgYWNjXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGEgYWNjXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkX21hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+IGJvb2wgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiBjaGFyICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+IGludCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2EgbGlzdCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhIG9wdGlvbiAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+IHN0cmluZyAqICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gcG9zaXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUsIGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19ib2wsIGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBwb3NfY251bSwgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgICh7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gbG9jYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgbG9jX2VuZCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgbG9jX2dob3N0LCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICAoeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+IGxvY2F0aW9uX3N0YWNrICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhIGxvYyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHR4dCwgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgKHsgdHh0OyBsb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+IGxvbmdpZGVudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKExkb3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChMYXBwbHkgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiBsb25naWRlbnRfbG9jICogJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiByZWNfZmxhZyAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gZGlyZWN0aW9uX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+IHByaXZhdGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gbXV0YWJsZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiB2aXJ0dWFsX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gb3ZlcnJpZGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+IGNsb3NlZF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gbGFiZWwgKiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiBhcmdfbGFiZWwgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBhY2MpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGFiZWxsZWQgYSwgYWNjKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKE9wdGlvbmFsIGEsIGFjYylcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gdmFyaWFuY2UgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+IGluamVjdGl2aXR5ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gY29uc3RhbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9pbnRlZ2VyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NoYXIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfY2hhciBhLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2Zsb2F0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+IGF0dHJpYnV0ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCwgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+IGV4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gYXR0cmlidXRlcyAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiBwYXlsb2FkICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU3RyIGEsIGFjYylcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTaWcgYSwgYWNjKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFR5cCBhLCBhY2MpXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQUGF0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+IGNvcmVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jbGFzcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyaWFudCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wYWNrYWdlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gcGFja2FnZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gcm93X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHByZl9kZXNjLCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChSdGFnIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFJpbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MsIGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoT3RhZyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChPaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiBwYXR0ZXJuICogJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MsIGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+IHBhdHRlcm5fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiBleHByZXNzaW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2FzZXMgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1bmN0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX21hdGNoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3RyeSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9maWVsZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlcXVlbmNlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF93aGlsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgZSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvZXJjZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VuZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXcgYSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9vdmVycmlkZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Fzc2VydCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29iamVjdCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXd0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcGFjayBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb3BlbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xldG9wIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRvcCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKFBleHBfdW5yZWFjaGFibGUsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+IGNhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNfbGhzLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IHBjX3JocywgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgKHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0sIGFjYylcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gbGV0b3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxldF8sIGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYW5kcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYm9keSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgICh7IGxldF87IGFuZHM7IGJvZHkgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gYmluZGluZ19vcCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGJvcF9vcCwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2V4cCwgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kLCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0LCBhY2MgPVxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiB0eXBlX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIGFjYylcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3ZhcmlhbnQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV9yZWNvcmQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3JlcywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl9yZWNvcmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiB0eXBlX2V4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGgsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9raW5kLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+IHR5cGVfZXhjZXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IsIGFjYyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X2RlY2wgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfcmViaW5kIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+IGNsYXNzX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiBjbGFzc19zaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfaW5oZXJpdCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBwY2lfdmlydCwgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2V4cHIsIGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gY2xhc3NfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2xfZGVzYywgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2xfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiwgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgKHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbmhlcml0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5pdGlhbGl6ZXIgYSwgYWNjKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfdmlydHVhbCBhLCBhY2MpXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKENma19jb25jcmV0ZSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+IG1vZHVsZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3dpdGggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3R5cGVvZiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfYWxpYXMgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIGFjYylcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE5hbWVkIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+IHNpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYywgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ192YWx1ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1zX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0LCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF90eXBlLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIsIGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QsIGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gd2l0aF9jb25zdHJhaW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R1bGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHN1YnN0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MsIGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl92YWx1ZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcHJpbWl0aXZlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiB2YWx1ZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+IG1vZHVsZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9leHByLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kZWYgYSwgYWNjKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGlyIGEsIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MsIGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9zdHJpbmcgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYm9vbCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfYm9vbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+IGNhc2VzICogJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvc1xuICAgICAgICA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wdGlvbiAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgcG9zX2xudW0pO1xuICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBwb3NfYm9sKTtcbiAgICAgICAgICAgIChcInBvc19jbnVtXCIsIHBvc19jbnVtKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIGxvY19zdGFydCk7XG4gICAgICAgICAgICAoXCJsb2NfZW5kXCIsIGxvY19lbmQpO1xuICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIGxvY19naG9zdCk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsb2MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwidHh0XCIsIHR4dCk7IChcImxvY1wiLCBsb2MpIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxpZGVudFwiIFsgYSBdXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxkb3RcIiBbIGE7IGIgXVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhcHBseVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ3JlcyA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIk5vbnJlY3Vyc2l2ZVwiIFtdXG4gICAgICAgIHwgUmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiUmVjdXJzaXZlXCIgW11cblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVXB0byAtPiBzZWxmI2NvbnN0ciBcIlVwdG9cIiBbXVxuICAgICAgICB8IERvd250byAtPiBzZWxmI2NvbnN0ciBcIkRvd250b1wiIFtdXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZSAtPiBzZWxmI2NvbnN0ciBcIlByaXZhdGVcIiBbXVxuICAgICAgICB8IFB1YmxpYyAtPiBzZWxmI2NvbnN0ciBcIlB1YmxpY1wiIFtdXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW1tdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiSW1tdXRhYmxlXCIgW11cbiAgICAgICAgfCBNdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiTXV0YWJsZVwiIFtdXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVmlydHVhbCAtPiBzZWxmI2NvbnN0ciBcIlZpcnR1YWxcIiBbXVxuICAgICAgICB8IENvbmNyZXRlIC0+IHNlbGYjY29uc3RyIFwiQ29uY3JldGVcIiBbXVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3ZlcnJpZGUgLT4gc2VsZiNjb25zdHIgXCJPdmVycmlkZVwiIFtdXG4gICAgICAgIHwgRnJlc2ggLT4gc2VsZiNjb25zdHIgXCJGcmVzaFwiIFtdXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENsb3NlZCAtPiBzZWxmI2NvbnN0ciBcIkNsb3NlZFwiIFtdXG4gICAgICAgIHwgT3BlbiAtPiBzZWxmI2NvbnN0ciBcIk9wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBzZWxmI2NvbnN0ciBcIk5vbGFiZWxcIiBbXVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYWJlbGxlZFwiIFsgYSBdXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9wdGlvbmFsXCIgWyBhIF1cblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ292YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ292YXJpYW50XCIgW11cbiAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ29udHJhdmFyaWFudFwiIFtdXG4gICAgICAgIHwgTm9WYXJpYW5jZSAtPiBzZWxmI2NvbnN0ciBcIk5vVmFyaWFuY2VcIiBbXVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbmplY3RpdmUgLT4gc2VsZiNjb25zdHIgXCJJbmplY3RpdmVcIiBbXVxuICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gc2VsZiNjb25zdHIgXCJOb0luamVjdGl2aXR5XCIgW11cblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2ludGVnZXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2NoYXJcIiBbIGEgXVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X3N0cmluZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9mbG9hdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIGF0dHJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFN0clwiIFsgYSBdXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFNpZ1wiIFsgYSBdXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFR5cFwiIFsgYSBdXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFBhdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIHB0eXBfbG9jKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQdHlwX2FueVwiIFtdXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfb2JqZWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NsYXNzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyaWFudFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcGFja2FnZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBwcmZfbG9jKTtcbiAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSdGFnXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUmluaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBwb2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk90YWdcIiBbIGE7IGIgXVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIHBwYXRfbG9jKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBzZWxmI2NvbnN0ciBcIlBwYXRfYW55XCIgW11cbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfaW50ZXJ2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIHBleHBfbG9jKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1bmN0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9tYXRjaFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3RyeVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZpZWxkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGZpZWxkXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZnRoZW5lbHNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlcXVlbmNlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3doaWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZm9yXCIgWyBhOyBiOyBjOyBkOyBlIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29lcmNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlbmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXdcIiBbIGEgXVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0aW5zdHZhclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX292ZXJyaWRlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG1vZHVsZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hc3NlcnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb2JqZWN0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXd0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3BlblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG9wXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gc2VsZiNjb25zdHIgXCJQZXhwX3VucmVhY2hhYmxlXCIgW11cblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNfbGhzXCIsIHBjX2xocyk7IChcInBjX2d1YXJkXCIsIHBjX2d1YXJkKTsgKFwicGNfcmhzXCIsIHBjX3JocykgXVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwibGV0X1wiLCBsZXRfKTsgKFwiYW5kc1wiLCBhbmRzKTsgKFwiYm9keVwiLCBib2R5KSBdXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBib3Bfb3BcIiwgcGJvcF9vcCk7XG4gICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBwYm9wX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIHB2YWxfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgcHR5cGVfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9hYnN0cmFjdFwiIFtdXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfdmFyaWFudFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV9yZWNvcmRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9vcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbGRfbG9jXCIsIHBsZF9sb2MpO1xuICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgcGNkX25hbWUpO1xuICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBwY2RfcmVzKTtcbiAgICAgICAgICAgIChcInBjZF9sb2NcIiwgcGNkX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfcmVjb3JkXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIHBleHRfa2luZCk7XG4gICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X2RlY2xcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9yZWJpbmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3NpZ19zZWxmXCIsIHBjc2lnX3NlbGYpOyAoXCJwY3NpZ19maWVsZHNcIiwgcGNzaWdfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIHBjdGZfbG9jKTtcbiAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2luaGVyaXRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBwY2lfdmlydCk7XG4gICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgcGNpX25hbWUpO1xuICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgcGNpX2V4cHIpO1xuICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBwY2lfbG9jKTtcbiAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBwY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc3RyX3NlbGZcIiwgcGNzdHJfc2VsZik7IChcInBjc3RyX2ZpZWxkc1wiLCBwY3N0cl9maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIHBjZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjZl9sb2NcIiwgcGNmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5oZXJpdFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIGEgXVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma192aXJ0dWFsXCIgWyBhIF1cbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma19jb25jcmV0ZVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgcG10eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIHBtdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfd2l0aFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV90eXBlb2ZcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfYWxpYXNcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IHNlbGYjY29uc3RyIFwiVW5pdFwiIFtdXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTmFtZWRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc2lnX2Rlc2NcIiwgcHNpZ19kZXNjKTsgKFwicHNpZ19sb2NcIiwgcHNpZ19sb2MpIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ192YWx1ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2RzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIHBtZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtZF90eXBlXCIsIHBtZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtZF9sb2NcIiwgcG1kX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtc19sb2NcIiwgcG1zX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBwbXRkX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgcGluY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R1bGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kc3Vic3RcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2Rfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzdHJfZGVzY1wiLCBwc3RyX2Rlc2MpOyAoXCJwc3RyX2xvY1wiLCBwc3RyX2xvYykgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl92YWx1ZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9wcmltaXRpdmVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwdmJfcGF0KTtcbiAgICAgICAgICAgIChcInB2Yl9leHByXCIsIHB2Yl9leHByKTtcbiAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgcHZiX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIHBtYl9uYW1lKTtcbiAgICAgICAgICAgIChcInBtYl9leHByXCIsIHBtYl9leHByKTtcbiAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtYl9sb2NcIiwgcG1iX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RlZlwiIFsgYSBdXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGlyXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgcGRpcl9hcmcpO1xuICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgcGRpcl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwZGlyYV9kZXNjXCIsIHBkaXJhX2Rlc2MpOyAoXCJwZGlyYV9sb2NcIiwgcGRpcmFfbG9jKSBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX3N0cmluZ1wiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfYm9vbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhciAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnQgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmcgKiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3NfZm5hbWUgPSBTdGRsaWIuZnN0IHBvc19mbmFtZTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gU3RkbGliLmZzdCBwb3NfbG51bTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBTdGRsaWIuZnN0IHBvc19ib2w7XG4gICAgICAgICAgICBwb3NfY251bSA9IFN0ZGxpYi5mc3QgcG9zX2NudW07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIFN0ZGxpYi5zbmQgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgU3RkbGliLnNuZCBwb3NfbG51bSk7XG4gICAgICAgICAgICAgIChcInBvc19ib2xcIiwgU3RkbGliLnNuZCBwb3NfYm9sKTtcbiAgICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgU3RkbGliLnNuZCBwb3NfY251bSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxvY19zdGFydCA9IFN0ZGxpYi5mc3QgbG9jX3N0YXJ0O1xuICAgICAgICAgICAgbG9jX2VuZCA9IFN0ZGxpYi5mc3QgbG9jX2VuZDtcbiAgICAgICAgICAgIGxvY19naG9zdCA9IFN0ZGxpYi5mc3QgbG9jX2dob3N0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBTdGRsaWIuc25kIGxvY19zdGFydCk7XG4gICAgICAgICAgICAgIChcImxvY19lbmRcIiwgU3RkbGliLnNuZCBsb2NfZW5kKTtcbiAgICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIFN0ZGxpYi5zbmQgbG9jX2dob3N0KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgKCB7IHR4dCA9IFN0ZGxpYi5mc3QgdHh0OyBsb2MgPSBTdGRsaWIuZnN0IGxvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eCBbIChcInR4dFwiLCBTdGRsaWIuc25kIHR4dCk7IChcImxvY1wiLCBTdGRsaWIuc25kIGxvYykgXVxuICAgICAgICApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIChMaWRlbnQgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIkxpZGVudFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGRvdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMZG90XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIExhcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyAqICdyZXMgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgKiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBzZWxmI2NvbnN0ciBjdHggXCJOb2xhYmVsXCIgW10pXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBMYWJlbGxlZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFiZWxsZWRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9wdGlvbmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPcHRpb25hbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2ludGVnZXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2ludGVnZXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjb25zdF9jaGFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfY2hhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNvbnN0X3N0cmluZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9zdHJpbmdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfZmxvYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2Zsb2F0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBhdHRyX25hbWUgPSBTdGRsaWIuZnN0IGF0dHJfbmFtZTtcbiAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IFN0ZGxpYi5mc3QgYXR0cl9wYXlsb2FkO1xuICAgICAgICAgICAgYXR0cl9sb2MgPSBTdGRsaWIuZnN0IGF0dHJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBTdGRsaWIuc25kIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBTdGRsaWIuc25kIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIFN0ZGxpYi5zbmQgYXR0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFN0ciAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFN0clwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFNpZyAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFNpZ1wiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFR5cCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFR5cFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQUGF0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBQYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IFN0ZGxpYi5mc3QgcHR5cF9kZXNjO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBTdGRsaWIuZnN0IHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgU3RkbGliLnNuZCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FueVwiIFtdKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfb2JqZWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY2xhc3MgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jbGFzc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJpYW50XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3BhY2thZ2UgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcGFja2FnZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHByZl9kZXNjID0gU3RkbGliLmZzdCBwcmZfZGVzYztcbiAgICAgICAgICAgIHByZl9sb2MgPSBTdGRsaWIuZnN0IHByZl9sb2M7XG4gICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgU3RkbGliLnNuZCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInByZl9sb2NcIiwgU3RkbGliLnNuZCBwcmZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUnRhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJ0YWdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFJpbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9mX2Rlc2MgPSBTdGRsaWIuZnN0IHBvZl9kZXNjO1xuICAgICAgICAgICAgcG9mX2xvYyA9IFN0ZGxpYi5mc3QgcG9mX2xvYztcbiAgICAgICAgICAgIHBvZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBvZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBTdGRsaWIuc25kIHBvZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggT3RhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPdGFnXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSBTdGRsaWIuZnN0IHBwYXRfZGVzYztcbiAgICAgICAgICAgIHBwYXRfbG9jID0gU3RkbGliLmZzdCBwcGF0X2xvYztcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBTdGRsaWIuc25kIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbnlcIiBbXSlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9pbnRlcnZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2ludGVydmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSBTdGRsaWIuZnN0IHBleHBfZGVzYztcbiAgICAgICAgICAgIHBleHBfbG9jID0gU3RkbGliLmZzdCBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBTdGRsaWIuc25kIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW5jdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5jdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbWF0Y2ggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9tYXRjaFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdHJ5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHJ5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9maWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZpZWxkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRmaWVsZFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfaWZ0aGVuZWxzZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWZ0aGVuZWxzZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXF1ZW5jZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlcXVlbmNlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfd2hpbGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF93aGlsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICAoIFBleHBfZm9yXG4gICAgICAgICAgICAgICAgKCBTdGRsaWIuZnN0IGEsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGIsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGMsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGQsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGUgKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mb3JcIlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYTtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYjtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYztcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZDtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZTtcbiAgICAgICAgICAgICAgICBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2NvZXJjZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29lcmNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlbmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZW5kXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX25ldyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0aW5zdHZhciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGluc3R2YXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX292ZXJyaWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX292ZXJyaWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRtb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRleGNlcHRpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Fzc2VydCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hc3NlcnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfb2JqZWN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3dHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRvcCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRvcFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgKFBleHBfdW5yZWFjaGFibGUsIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdW5yZWFjaGFibGVcIiBbXSlcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY19saHMgPSBTdGRsaWIuZnN0IHBjX2xocztcbiAgICAgICAgICAgIHBjX2d1YXJkID0gU3RkbGliLmZzdCBwY19ndWFyZDtcbiAgICAgICAgICAgIHBjX3JocyA9IFN0ZGxpYi5mc3QgcGNfcmhzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjX2xoc1wiLCBTdGRsaWIuc25kIHBjX2xocyk7XG4gICAgICAgICAgICAgIChcInBjX2d1YXJkXCIsIFN0ZGxpYi5zbmQgcGNfZ3VhcmQpO1xuICAgICAgICAgICAgICAoXCJwY19yaHNcIiwgU3RkbGliLnNuZCBwY19yaHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxldF8gPSBTdGRsaWIuZnN0IGxldF87XG4gICAgICAgICAgICBhbmRzID0gU3RkbGliLmZzdCBhbmRzO1xuICAgICAgICAgICAgYm9keSA9IFN0ZGxpYi5mc3QgYm9keTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsZXRfXCIsIFN0ZGxpYi5zbmQgbGV0Xyk7XG4gICAgICAgICAgICAgIChcImFuZHNcIiwgU3RkbGliLnNuZCBhbmRzKTtcbiAgICAgICAgICAgICAgKFwiYm9keVwiLCBTdGRsaWIuc25kIGJvZHkpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGJvcF9vcCA9IFN0ZGxpYi5mc3QgcGJvcF9vcDtcbiAgICAgICAgICAgIHBib3BfcGF0ID0gU3RkbGliLmZzdCBwYm9wX3BhdDtcbiAgICAgICAgICAgIHBib3BfZXhwID0gU3RkbGliLmZzdCBwYm9wX2V4cDtcbiAgICAgICAgICAgIHBib3BfbG9jID0gU3RkbGliLmZzdCBwYm9wX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwYm9wX29wXCIsIFN0ZGxpYi5zbmQgcGJvcF9vcCk7XG4gICAgICAgICAgICAgIChcInBib3BfcGF0XCIsIFN0ZGxpYi5zbmQgcGJvcF9wYXQpO1xuICAgICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBTdGRsaWIuc25kIHBib3BfZXhwKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgU3RkbGliLnNuZCBwYm9wX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2YWxfbmFtZSA9IFN0ZGxpYi5mc3QgcHZhbF9uYW1lO1xuICAgICAgICAgICAgcHZhbF90eXBlID0gU3RkbGliLmZzdCBwdmFsX3R5cGU7XG4gICAgICAgICAgICBwdmFsX3ByaW0gPSBTdGRsaWIuZnN0IHB2YWxfcHJpbTtcbiAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZhbF9sb2MgPSBTdGRsaWIuZnN0IHB2YWxfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBTdGRsaWIuc25kIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBTdGRsaWIuc25kIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBTdGRsaWIuc25kIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIFN0ZGxpYi5zbmQgcHZhbF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWUgPSBTdGRsaWIuZnN0IHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gU3RkbGliLmZzdCBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBTdGRsaWIuZnN0IHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgU3RkbGliLnNuZCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgU3RkbGliLnNuZCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgU3RkbGliLnNuZCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgU3RkbGliLnNuZCBwdHlwZV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9hYnN0cmFjdFwiIFtdKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV92YXJpYW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV92YXJpYW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9vcGVuXCIgW10pXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBsZF9uYW1lID0gU3RkbGliLmZzdCBwbGRfbmFtZTtcbiAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gU3RkbGliLmZzdCBwbGRfbXV0YWJsZTtcbiAgICAgICAgICAgIHBsZF90eXBlID0gU3RkbGliLmZzdCBwbGRfdHlwZTtcbiAgICAgICAgICAgIHBsZF9sb2MgPSBTdGRsaWIuZnN0IHBsZF9sb2M7XG4gICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgU3RkbGliLnNuZCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIFN0ZGxpYi5zbmQgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBTdGRsaWIuc25kIHBsZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBTdGRsaWIuc25kIHBsZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZF9uYW1lID0gU3RkbGliLmZzdCBwY2RfbmFtZTtcbiAgICAgICAgICAgIHBjZF92YXJzID0gU3RkbGliLmZzdCBwY2RfdmFycztcbiAgICAgICAgICAgIHBjZF9hcmdzID0gU3RkbGliLmZzdCBwY2RfYXJncztcbiAgICAgICAgICAgIHBjZF9yZXMgPSBTdGRsaWIuZnN0IHBjZF9yZXM7XG4gICAgICAgICAgICBwY2RfbG9jID0gU3RkbGliLmZzdCBwY2RfbG9jO1xuICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBTdGRsaWIuc25kIHBjZF92YXJzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgU3RkbGliLnNuZCBwY2RfYXJncyk7XG4gICAgICAgICAgICAgIChcInBjZF9yZXNcIiwgU3RkbGliLnNuZCBwY2RfcmVzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBTdGRsaWIuc25kIHBjZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBTdGRsaWIuZnN0IHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jID0gU3RkbGliLmZzdCBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgU3RkbGliLnNuZCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgU3RkbGliLnNuZCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gU3RkbGliLmZzdCBwZXh0X25hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBTdGRsaWIuZnN0IHBleHRfa2luZDtcbiAgICAgICAgICAgIHBleHRfbG9jID0gU3RkbGliLmZzdCBwZXh0X2xvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBTdGRsaWIuc25kIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBTdGRsaWIuc25kIHBleHRfa2luZCk7XG4gICAgICAgICAgICAgIChcInBleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBTdGRsaWIuZnN0IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIHB0eWV4bl9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4bl9sb2M7XG4gICAgICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHRfZGVjbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfZGVjbFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHRfcmViaW5kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X3JlYmluZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0eV9kZXNjO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBTdGRsaWIuZnN0IHBjdHlfbG9jO1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgU3RkbGliLnNuZCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGN0eV9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3NpZ19zZWxmID0gU3RkbGliLmZzdCBwY3NpZ19zZWxmO1xuICAgICAgICAgICAgcGNzaWdfZmllbGRzID0gU3RkbGliLmZzdCBwY3NpZ19maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzaWdfc2VsZlwiLCBTdGRsaWIuc25kIHBjc2lnX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3NpZ19maWVsZHNcIiwgU3RkbGliLnNuZCBwY3NpZ19maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gU3RkbGliLmZzdCBwY3RmX2Rlc2M7XG4gICAgICAgICAgICBwY3RmX2xvYyA9IFN0ZGxpYi5mc3QgcGN0Zl9sb2M7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBTdGRsaWIuc25kIHBjdGZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX3ZhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjaV92aXJ0ID0gU3RkbGliLmZzdCBwY2lfdmlydDtcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBTdGRsaWIuZnN0IHBjaV9wYXJhbXM7XG4gICAgICAgICAgICBwY2lfbmFtZSA9IFN0ZGxpYi5mc3QgcGNpX25hbWU7XG4gICAgICAgICAgICBwY2lfZXhwciA9IFN0ZGxpYi5mc3QgcGNpX2V4cHI7XG4gICAgICAgICAgICBwY2lfbG9jID0gU3RkbGliLmZzdCBwY2lfbG9jO1xuICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIFN0ZGxpYi5zbmQgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNpX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBTdGRsaWIuc25kIHBjaV9leHByKTtcbiAgICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBTdGRsaWIuc25kIHBjaV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSBTdGRsaWIuZnN0IHBjbF9kZXNjO1xuICAgICAgICAgICAgcGNsX2xvYyA9IFN0ZGxpYi5mc3QgcGNsX2xvYztcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBTdGRsaWIuc25kIHBjbF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBTdGRsaWIuc25kIHBjbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBjbF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjbF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNsX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3N0cl9zZWxmID0gU3RkbGliLmZzdCBwY3N0cl9zZWxmO1xuICAgICAgICAgICAgcGNzdHJfZmllbGRzID0gU3RkbGliLmZzdCBwY3N0cl9maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzdHJfc2VsZlwiLCBTdGRsaWIuc25kIHBjc3RyX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3N0cl9maWVsZHNcIiwgU3RkbGliLnNuZCBwY3N0cl9maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZl9kZXNjID0gU3RkbGliLmZzdCBwY2ZfZGVzYztcbiAgICAgICAgICAgIHBjZl9sb2MgPSBTdGRsaWIuZnN0IHBjZl9sb2M7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjZl9sb2NcIiwgU3RkbGliLnNuZCBwY2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjZl9pbmhlcml0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaGVyaXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBjZl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfaW5pdGlhbGl6ZXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbml0aWFsaXplclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIENma192aXJ0dWFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfdmlydHVhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBDZmtfY29uY3JldGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX2NvbmNyZXRlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcG10eV9kZXNjO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBTdGRsaWIuZnN0IHBtdHlfbG9jO1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcG10eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgU3RkbGliLnNuZCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV93aXRoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfd2l0aFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfdHlwZW9mIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3R5cGVvZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2FsaWFzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2FsaWFzXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgc2VsZiNjb25zdHIgY3R4IFwiVW5pdFwiIFtdKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggTmFtZWQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTmFtZWRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgICggeyBwc2lnX2Rlc2MgPSBTdGRsaWIuZnN0IHBzaWdfZGVzYzsgcHNpZ19sb2MgPSBTdGRsaWIuZnN0IHBzaWdfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzaWdfZGVzY1wiLCBTdGRsaWIuc25kIHBzaWdfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzaWdfbG9jXCIsIFN0ZGxpYi5zbmQgcHNpZ19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ192YWx1ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ192YWx1ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ19leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gU3RkbGliLmZzdCBwbWRfbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gU3RkbGliLmZzdCBwbWRfdHlwZTtcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtZF9sb2MgPSBTdGRsaWIuZnN0IHBtZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgU3RkbGliLnNuZCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG1kX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBTdGRsaWIuc25kIHBtZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBTdGRsaWIuZnN0IHBtc19uYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwbXNfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXNfbG9jID0gU3RkbGliLmZzdCBwbXNfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtc19uYW1lXCIsIFN0ZGxpYi5zbmQgcG1zX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBTdGRsaWIuc25kIHBtc19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdGRfbmFtZSA9IFN0ZGxpYi5mc3QgcG10ZF9uYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gU3RkbGliLmZzdCBwbXRkX3R5cGU7XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtdGRfbG9jID0gU3RkbGliLmZzdCBwbXRkX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgU3RkbGliLnNuZCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgU3RkbGliLnNuZCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBTdGRsaWIuc25kIHBtdGRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IFN0ZGxpYi5mc3QgcG9wZW5fZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gU3RkbGliLmZzdCBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgIHBvcGVuX2xvYyA9IFN0ZGxpYi5mc3QgcG9wZW5fbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIFN0ZGxpYi5zbmQgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIFN0ZGxpYi5zbmQgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgU3RkbGliLnNuZCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwaW5jbF9tb2QgPSBTdGRsaWIuZnN0IHBpbmNsX21vZDtcbiAgICAgICAgICAgIHBpbmNsX2xvYyA9IFN0ZGxpYi5mc3QgcGluY2xfbG9jO1xuICAgICAgICAgICAgcGluY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgU3RkbGliLnNuZCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgU3RkbGliLnNuZCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlc3Vic3RcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2RzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFN0ZGxpYi5mc3QgcG1vZF9kZXNjO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBTdGRsaWIuZnN0IHBtb2RfbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIFN0ZGxpYi5zbmQgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgU3RkbGliLnNuZCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2Rfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgICggeyBwc3RyX2Rlc2MgPSBTdGRsaWIuZnN0IHBzdHJfZGVzYzsgcHN0cl9sb2MgPSBTdGRsaWIuZnN0IHBzdHJfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzdHJfZGVzY1wiLCBTdGRsaWIuc25kIHBzdHJfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzdHJfbG9jXCIsIFN0ZGxpYi5zbmQgcHN0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3ZhbHVlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3ByaW1pdGl2ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9wcmltaXRpdmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gU3RkbGliLmZzdCBwdmJfcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBTdGRsaWIuZnN0IHB2Yl9leHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZiX2xvYyA9IFN0ZGxpYi5mc3QgcHZiX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIFN0ZGxpYi5zbmQgcHZiX3BhdCk7XG4gICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIFN0ZGxpYi5zbmQgcHZiX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBTdGRsaWIuc25kIHB2Yl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBTdGRsaWIuZnN0IHBtYl9uYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBTdGRsaWIuZnN0IHBtYl9leHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1iX2xvYyA9IFN0ZGxpYi5mc3QgcG1iX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBTdGRsaWIuc25kIHBtYl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgU3RkbGliLnNuZCBwbWJfZXhwcik7XG4gICAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWJfbG9jXCIsIFN0ZGxpYi5zbmQgcG1iX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGVmIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RlZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kaXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGlyXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyX25hbWUgPSBTdGRsaWIuZnN0IHBkaXJfbmFtZTtcbiAgICAgICAgICAgIHBkaXJfYXJnID0gU3RkbGliLmZzdCBwZGlyX2FyZztcbiAgICAgICAgICAgIHBkaXJfbG9jID0gU3RkbGliLmZzdCBwZGlyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgU3RkbGliLnNuZCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBTdGRsaWIuc25kIHBkaXJfYXJnKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgU3RkbGliLnNuZCBwZGlyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJhX2Rlc2MgPSBTdGRsaWIuZnN0IHBkaXJhX2Rlc2M7XG4gICAgICAgICAgICBwZGlyYV9sb2MgPSBTdGRsaWIuZnN0IHBkaXJhX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyYV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGRpcmFfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBkaXJhX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJhX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfc3RyaW5nIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX3N0cmluZ1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGRpcl9pbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfYm9vbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9ib29sXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzICogJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbltAQEBlbmRdXG5bQEBAZW5kXVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnRcblxubGV0IHRvX2V4dGVuc2lvbiAoZXJyb3IgOiBBc3RsaWIuTG9jYXRpb24uRXJyb3IudCkgPVxuICBsZXQgb3BlbiBBc3RsaWIuTG9jYXRpb24uRXJyb3IgaW5cbiAgbGV0IG9wZW4gQXN0X2hlbHBlciBpblxuICBpZiBub3QgKGlzX3dlbGxfZm9ybWVkIGVycm9yKSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJ0b19leHRlbnNpb246IGV4cGVjdGVkIGtpbmQgUmVwb3J0X2Vycm9yXCIpO1xuICBsZXQgc3ViX21zZ3MgPSBzdWJfbXNncyBlcnJvciBpblxuICBsZXQgbWFpbl9tc2cgPSBtYWluX21zZyBlcnJvciBpblxuICBsZXQgZXJyX2V4dGVuc2lvbl9uYW1lIGxvYyA9IHsgTG9jYXRpb24ubG9jOyB0eHQgPSBcIm9jYW1sLmVycm9yXCIgfSBpblxuICBsZXQgbWtfc3RyaW5nX2NvbnN0YW50IHggPSBTdHIuZXZhbCAoRXhwLmNvbnN0YW50IChDb25zdC5zdHJpbmcgeCkpIGluXG4gIGxldCBleHRlbnNpb25fb2Zfc3ViX21zZyAoc3ViX21zZyA6IHN0cmluZyBMb2NhdGlvbi5sb2MpID1cbiAgICBTdHIuZXh0ZW5zaW9uXG4gICAgICAoZXJyX2V4dGVuc2lvbl9uYW1lIHN1Yl9tc2cubG9jLCBQU3RyIFsgbWtfc3RyaW5nX2NvbnN0YW50IHN1Yl9tc2cudHh0IF0pXG4gIGluXG4gICggZXJyX2V4dGVuc2lvbl9uYW1lIG1haW5fbXNnLmxvYyxcbiAgICBQYXJzZXRyZWUuUFN0clxuICAgICAgKG1rX3N0cmluZ19jb25zdGFudCBtYWluX21zZy50eHQgOjogTGlzdC5tYXAgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgc3ViX21zZ3MpXG4gIClcblxubGV0IHJlZ2lzdGVyX2Vycm9yX29mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5yZWdpc3Rlcl9lcnJvcl9vZl9leG5cblxubGV0IG1lc3NhZ2UgZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24udHh0OyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgdHh0XG5cbmxldCBzZXRfbWVzc2FnZSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9tc2dcblxubGV0IG1ha2UgfmxvYyB0eHQgfnN1YiA9XG4gIGxldCBzdWIgPSBMaXN0Lm1hcCAoZnVuIChsb2MsIHR4dCkgLT4geyBBc3RsaWIuTG9jYXRpb24ubG9jOyB0eHQgfSkgc3ViIGluXG4gIEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWtlIH5zdWIgeyBsb2M7IHR4dCB9XG5cbmxldCB1cGRhdGVfbG9jID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX2xvY1xuXG5sZXQgZ2V0X2xvY2F0aW9uIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIGxvY1xuXG5sZXQgb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm9mX2V4blxubGV0IHJhaXNlIGVycm9yID0gcmFpc2UgKEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBlcnJvcilcbiIsIm1vZHVsZSBEb19ub3RfdXNlX2RpcmVjdGx5ID0gc3RydWN0IGVuZFxubW9kdWxlIEFmbF9pbnN0cnVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFmbF9pbnN0cnVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBBbGlhc19hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGlhc19hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxsb2NhdGVkX2NvbnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsbG9jYXRlZF9jb25zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEFyY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXJjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgQXJnX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFyZ19oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21nZW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3R0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXR0cl9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BdHRyX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQmFja2VuZF9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBCYWNrZW5kX3ZhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CYWNrZW5kX3ZhciBpbnN0ZWFkXCJdXG5tb2R1bGUgQmludXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CaW51dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJ0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnR5cGUgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX2V4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJ1aWxkX2V4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsZF9wYXRoX3ByZWZpeF9tYXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdWlsZF9wYXRoX3ByZWZpeF9tYXAgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWx0aW5fYXR0cmlidXRlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWx0aW5fYXR0cmlidXRlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVsaW5rIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVwYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZXNlY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnl0ZXNlY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBDU0UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFIGluc3RlYWRcIl1cbm1vZHVsZSBDU0VnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDYW1saW50ZXJuYWxNZW5oaXJMaWIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DYW1saW50ZXJuYWxNZW5oaXJMaWIgaW5zdGVhZFwiXVxubW9kdWxlIENjb21wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2NvbXAgaW5zdGVhZFwiXVxubW9kdWxlIENsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xmbGFncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNsZmxhZ3MgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uX2F1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2NvbnZlcnNpb25fYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2VsZW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9lbGVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfaWQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfbWlkZGxlX2VuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX21pZGRsZV9lbmQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb2Zmc2V0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX29mZnNldHMgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBDbWlfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ21pX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2hlbHBlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2hlbHBlcnMgaW5zdGVhZFwiXVxubW9kdWxlIENtbV9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW5fc3RhdGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuX3N0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBDbW9fZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXQyYW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXQyYW5ub3QgaW5zdGVhZFwiXVxubW9kdWxlIENtdF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXRfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbXhfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXhzX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29sb3JpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29sb3JpbmcgaW5zdGVhZFwiXVxubW9kdWxlIENvbWJhbGxvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21iYWxsb2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wZW52IGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxhdGlvbl91bml0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGF0aW9uX3VuaXQgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcGlsZV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21waWxlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBtaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcG1pc2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbXByZXNzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcHJlc3Npb24gaW5zdGVhZFwiXVxubW9kdWxlIENvbmZpZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbmZpZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnX2Jvb3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbmZpZ19tYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb25zaXN0YmwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25zaXN0YmwgaW5zdGVhZFwiXVxubW9kdWxlIENvbnZlcnRfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db252ZXJ0X3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEN0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ3R5cGUgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFmbG93ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRhdGFmbG93IGluc3RlYWRcIl1cbm1vZHVsZSBEYXRhcmVwciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRhdGFyZXByIGluc3RlYWRcIl1cbm1vZHVsZSBEZWFkY29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5EZWFkY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVidWdpbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGVidWdpbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBEZXBlbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EaWZmaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBEaWZmaW5nX3dpdGhfa2V5cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmdfd2l0aF9rZXlzIGluc3RlYWRcIl1cbm1vZHVsZSBEbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EbGwgaW5zdGVhZFwiXVxubW9kdWxlIERvY3N0cmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Eb2NzdHJpbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBEb21haW5zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvbWFpbnN0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBFZmZlY3RfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRWZmZWN0X2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVtaXQgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRhdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdGF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGNvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVtaXRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBFbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FbnYgaW5zdGVhZFwiXVxubW9kdWxlIEVudmF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudmF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5FcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIEVycm9ydHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FcnJvcnRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2lkIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2luZm9fZm9yX3BhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2luZm9fZm9yX3BhY2sgaW5zdGVhZFwiXVxubW9kdWxlIEV4cHVuZ2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEV4dHJhY3RfcHJvamVjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXh0cmFjdF9wcm9qZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZpbmRfcmVjdXJzaXZlX2Z1bmN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2l0ZXJhdG9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2l0ZXJhdG9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV90b19jbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdG9fY2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV91dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX3V0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBGcmVzaGVuaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZyZXNoZW5pbmcgaW5zdGVhZFwiXVxubW9kdWxlIEdlbnByaW50dmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5HZW5wcmludHZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSWRfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50aWZpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLklkZW50aWZpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW1wb3J0X2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbXBvcnRfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlbW9kX2Vycm9ycHJpbnRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2RfZXJyb3JwcmludGVyIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNvbnN0YW50X2lkZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmNvbnN0YW50X2lkZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5pdGlhbGl6ZV9zeW1ib2xfdG9fbGV0X3N5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Jbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmVfYW5kX3NpbXBsaWZ5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnkgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnlfYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnlfYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19jb3N0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2Nvc3QgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2RlY2lzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19kZWNpc2lvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfc3RhdHNfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfc3RhdHNfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX3RyYW5zZm9ybXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfdHJhbnNmb3JtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5zdHJ1Y3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkluc3RydWN0IGluc3RlYWRcIl1cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVyZiBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgaW5zdGVhZFwiXVxubW9kdWxlIEludGVydmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVydmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJbnZhcmlhbnRfcGFyYW1zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludmFyaWFudF9wYXJhbXMgaW5zdGVhZFwiXVxubW9kdWxlIExhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGF6eV9iYWNrdHJhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MYXp5X2JhY2t0cmFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgTGV4ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MZXhlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb25zdGFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXJfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcl9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcml6ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXJpemUgaW5zdGVhZFwiXVxubW9kdWxlIExpbmthZ2VfbmFtZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5rYWdlX25hbWUgaW5zdGVhZFwiXVxubW9kdWxlIExpbnNjYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluc2NhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTGl2ZW5lc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGl2ZW5lc3MgaW5zdGVhZFwiXVxubW9kdWxlIExvYWRfcGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvYWRfcGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYWxfc3RvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhbF9zdG9yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9uZ2lkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50IGluc3RlYWRcIl1cbm1vZHVsZSBNYWNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIE1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE1haW5fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1haW5fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbmRyaXZlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuTWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFrZWRlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ha2VkZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIE1hdGNoaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWF0Y2hpbmcgaW5zdGVhZFwiXVxubW9kdWxlIE1ldGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NZXRhIGluc3RlYWRcIl1cbm1vZHVsZSBNaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgTXR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTXV0YWJsZV92YXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5NdXRhYmxlX3ZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBOdW1iZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTnVtYmVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3Bjb2RlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wY29kZXMgaW5zdGVhZFwiXVxubW9kdWxlIE9wcmludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wcmludCBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0Y29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRjb21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRlcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0ZXJyb3JzIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBPcHRtYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdG1haW5kcml2ZXIgaW5zdGVhZFwiXVxubW9kdWxlIE91dGNvbWV0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXJhbWV0ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFyYW1ldGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJzZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNldHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgUGFzc193cmFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBhc3Nfd3JhcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhdGggaW5zdGVhZFwiXVxubW9kdWxlIFBhdHRlcm5zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0dGVybnMgaW5zdGVhZFwiXVxubW9kdWxlIFBlcnNpc3RlbnRfZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGVyc2lzdGVudF9lbnYgaW5zdGVhZFwiXVxubW9kdWxlIFBvbGxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUG9sbGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQcHJpbnRhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbWl0aXZlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbWl0aXZlIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50YXN0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbW0gaW5zdGVhZFwiXVxubW9kdWxlIFByaW50aW5zdHIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLlByaW50aW5zdHIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGluZWFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50bGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludG1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRtYWNoIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHBhdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50cGF0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50dHlwIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXBlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9jIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9maWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJvZmlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvamVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9qZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBSZWZfdG9fdmFyaWFibGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZl90b192YXJpYWJsZXMgaW5zdGVhZFwiXVxubW9kdWxlIFJlZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWcgaW5zdGVhZFwiXVxubW9kdWxlIFJlbG9hZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWxvYWQgaW5zdGVhZFwiXVxubW9kdWxlIFJlbG9hZGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWxvYWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfYXJndW1lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfYXJndW1lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2Nsb3N1cmVfdmFycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2Nsb3N1cmVfdmFycyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9wcm9ncmFtX2NvbnN0cnVjdHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9wcm9ncmFtX2NvbnN0cnVjdHMgaW5zdGVhZFwiXVxubW9kdWxlIFJ1bnRpbWVkZWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5SdW50aW1lZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TY2hlZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWR1bGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TY2hlZHVsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBTZWxlY3RnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VsZWN0Z2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTZWxlY3Rpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VsZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTZW1hbnRpY3Nfb2ZfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZW1hbnRpY3Nfb2ZfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2V0X29mX2Nsb3N1cmVzX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2V0X29mX2Nsb3N1cmVzX29yaWdpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNoYXBlIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFwZV9yZWR1Y2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaGFwZV9yZWR1Y2UgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXJlX2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaGFyZV9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpZ25hdHVyZV9ncm91cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNpZ25hdHVyZV9ncm91cCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxlX3ZhbHVlX2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGVfdmFsdWVfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2ltcGxpZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BpbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BpbGwgaW5zdGVhZFwiXVxubW9kdWxlIFNwbGl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNwbGl0IGluc3RlYWRcIl1cbm1vZHVsZSBTdGFja2ZyYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YWNrZnJhbWUgaW5zdGVhZFwiXVxubW9kdWxlIFN0YWNrZnJhbWVnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhY2tmcmFtZWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhdGljX2V4Y2VwdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGF0aWNfZXhjZXB0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdHJtYXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3R5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBTdWJzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN1YnN0IGluc3RlYWRcIl1cbm1vZHVsZSBTd2l0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Td2l0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIFN5bXRhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ltdGFibGUgaW5zdGVhZFwiXVxubW9kdWxlIFN5bnRheGVyciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bnRheGVyciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRhZyBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFyZ2V0aW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFyZ2V0aW50IGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X2l0ZXJhdG9yID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X21hcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGVybWluZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UZXJtaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgVGhyZWFkX3Nhbml0aXplciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UaHJlYWRfc2FuaXRpemVyIGluc3RlYWRcIl1cbm1vZHVsZSBUbWMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UbWMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGNvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BkaXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BkaXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BldmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BldmFsIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bob29rcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVG9wbG9vcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbG9vcCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wbWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbWFpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wcHJpbnRlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcHByaW50ZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BzdGFydCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xhdHRyaWJ1dGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xhdHRyaWJ1dGUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG9iaiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG9iaiBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNscHJpbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbHByaW0gaW5zdGVhZFwiXVxubW9kdWxlIFRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2wgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfcHJvcGVydGllcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3Byb3BlcnRpZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3NlcGFyYWJpbGl0eSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3NlcGFyYWJpbGl0eSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdW5ib3hlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3VuYm94ZWQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3ZhcmlhbmNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdmFyaWFuY2UgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkdHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkdHJlZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVvcHQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlb3B0IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBldGV4cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGV0ZXhwIGluc3RlYWRcIl1cbm1vZHVsZSBVbl9hbmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5fYW5mIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBVbml0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Vbml0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIFVudHlwZWFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlVudHlwZWFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFsdWVfcmVjX2NoZWNrID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVmFsdWVfcmVjX2NoZWNrIGluc3RlYWRcIl1cbm1vZHVsZSBWYWx1ZV9yZWNfY29tcGlsZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5WYWx1ZV9yZWNfY29tcGlsZXIgaW5zdGVhZFwiXVxubW9kdWxlIFZhbHVlX3JlY190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVmFyX3dpdGhpbl9jbG9zdXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcl93aXRoaW5fY2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFyaWFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIFdhcm5pbmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uV2FybmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9hc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFg4Nl9kc2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2RzbCBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2dhcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZ2FzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfbWFzbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfbWFzbSBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X3Byb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X3Byb2MgaW5zdGVhZFwiXVxuIiwib3BlbiBTdGRMYWJlbHNcblxubGV0IHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncyA9XG4gIGxldCBhcmdzID1cbiAgICBMaXN0LmNvbmNhdFxuICAgICAgW1xuICAgICAgICBbIFwiLWtlZXAtd2hpdGVzcGFjZVwiIF07XG4gICAgICAgIFsgXCItbG9jYXRpb24tc3R5bGUgb21ha2VcIiBdO1xuICAgICAgICAoaWYgdXNlX2NvbG9yIHRoZW4gW10gZWxzZSBbIFwiLWFzY2lpXCIgXSk7XG4gICAgICAgIGV4dHJhX3BhdGRpZmZfYXJncztcbiAgICAgIF1cbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChcInBhdGRpZmZcIiA6OiBhcmdzKVxuXG5sZXQgcHJpbnQgP2RpZmZfY29tbWFuZCA/KGV4dHJhX3BhdGRpZmZfYXJncyA9IFtdKSA/KHVzZV9jb2xvciA9IGZhbHNlKSB+ZmlsZTFcbiAgICB+ZmlsZTIgKCkgPVxuICBsZXQgZXhlYyBjbWQgPVxuICAgIGxldCBjbWQgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyAxPiYyXCIgY21kIChGaWxlbmFtZS5xdW90ZSBmaWxlMSlcbiAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZpbGUyKVxuICAgIGluXG4gICAgbWF0Y2ggU3lzLmNvbW1hbmQgY21kIHdpdGhcbiAgICB8IDAgLT4gYFNhbWVcbiAgICB8IDEgLT4gYERpZmZlcmVudFxuICAgIHwgbiAtPiBgRXJyb3IgKG4sIGNtZClcbiAgaW5cbiAgbWF0Y2ggZGlmZl9jb21tYW5kIHdpdGhcbiAgfCBTb21lIHMgLT4gaWdub3JlIChleGVjIHMgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBleGVjIChwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MpIHdpdGhcbiAgICAgIHwgYFNhbWUgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHByb2R1Y2VkIG5vIG91dHB1dCwgZmFsbGJhY2sgdG8gZGlmZiAtdSAqKVxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgICAgIHwgYERpZmZlcmVudCAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgc3VjY2Vzc2Z1bGx5IGZvdW5kIGEgZGlmZmVyZW5jZSAqKVxuICAgICAgICAgICgpXG4gICAgICB8IGBFcnJvciAoZXJyX2NvZGUsIGNtZCkgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHRocmV3IGFuIGVycm9yLi4uIHBlcmhhcHMgaXQgd2Fzbid0IGluc3RhbGxlZD8gZmFsbGJhY2sgdG8gZGlmZiAtdSAqKVxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkVycm9yOlxcblxcXG4gICAgICAgICAgICAgPiAlUyBleGl0ZWQgd2l0aCBjb2RlICVkXFxuXFxcbiAgICAgICAgICAgICA+IFBlcmhhcHMgcGF0ZGlmZiBpcyBub3QgaW5zdGFsbGVkPyBIaW50LCB0cnk6IG9wYW0gaW5zdGFsbCBwYXRkaWZmXFxuXFxcbiAgICAgICAgICAgICA+IEZhbGxpbmcgYmFjayB0byBkaWZmIC11XFxuXFxuXCJcbiAgICAgICAgICAgIGNtZCBlcnJfY29kZTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pKVxuIiwidHlwZSBkZXJpdmVyID0gLi5cblxubGV0IGFsbCA9IEhhc2h0YmwuY3JlYXRlIDQyXG5cbmxldCByZWdpc3RlciBuYW1lIGRlcml2ZXIgPVxuICBpZiBIYXNodGJsLm1lbSBhbGwgbmFtZSB0aGVuXG4gICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICBcIlBweF9kZXJpdmllcnMucmVnaXN0ZXI6ICVTIGlzIGFscmVhZHkgcmVnaXN0ZXJlZFwiIG5hbWU7XG4gIEhhc2h0YmwuYWRkIGFsbCBuYW1lIGRlcml2ZXJcblxubGV0IGxvb2t1cCBuYW1lID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIGFsbCBuYW1lIHdpdGhcbiAgfCBkcnYgLT4gU29tZSBkcnZcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxubGV0IGRlcml2ZXJzICgpID1cbiAgSGFzaHRibC5mb2xkIChmdW4gbmFtZSBkcnYgYWNjIC0+IChuYW1lLCBkcnYpIDo6IGFjYykgYWxsIFtdXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIG1hcCA9ICdhIC0+ICdhXG4gIHR5cGUgJ2EgaXRlciA9ICdhIC0+IHVuaXRcbiAgdHlwZSAoJ2EsICdhY2MpIGZvbGQgPSAnYSAtPiAnYWNjIC0+ICdhY2NcbiAgdHlwZSAoJ2EsICdhY2MpIGZvbGRfbWFwID0gJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2NcbiAgdHlwZSAoJ2N0eCwgJ2EpIG1hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhXG4gIHR5cGUgKCdhLCAncmVzKSBsaWZ0ID0gJ2EgLT4gJ3Jlc1xuICB0eXBlICgnY3R4LCAnYSwgJ3JlcykgbGlmdF9tYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXNcbmVuZFxuXG5jbGFzcyBtYXAgPVxuICBsZXQgYW55IHggPSB4IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQubWFwID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiBib29sIFQubWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQubWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQubWFwIC0+ICdhIG9wdGlvbiBULm1hcCA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgbGlzdCBULm1hcCA9IExpc3QubWFwXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQubWFwIC0+ICdhIGFycmF5IFQubWFwID0gQXJyYXkubWFwXG4gIGVuZFxuXG5jbGFzcyBpdGVyID1cbiAgbGV0IGFueSA9IGlnbm9yZSBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiBib29sIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULml0ZXIgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIG9wdGlvbiBULml0ZXIgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQuaXRlciAtPiAnYSBsaXN0IFQuaXRlciA9IExpc3QuaXRlclxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgYXJyYXkgVC5pdGVyID0gQXJyYXkuaXRlclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGQgPVxuICBsZXQgYW55IF8gYWNjID0gYWNjIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBvcHRpb24sICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBhY2MgfCBTb21lIHggLT4gZiB4IGFjY1xuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZCA9XG4gICAgICBsZXQgcmVjIGxvb3AgZiBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBhY2MgfCB4IDo6IGwgLT4gbG9vcCBmIGwgKGYgeCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBhcnJheSwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgciA6PSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkX21hcCA9XG4gIGxldCBhbnkgeCBhY2MgPSAoeCwgYWNjKSBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBvcHRpb24sICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgeCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoTm9uZSwgYWNjKVxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgICAgICAgIChTb21lIHgsIGFjYylcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBsZXQgcmVjIGxvb3AgZiBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IChbXSwgYWNjKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBsLCBhY2MgPSBsb29wIGYgbCBhY2MgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBhcnJheSwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIChhLCBhY2MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIDApIGFjYyBpblxuICAgICAgICAgIGxldCBhJyA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhciBpblxuICAgICAgICAgICAgQXJyYXkudW5zYWZlX3NldCBhJyBpIHg7XG4gICAgICAgICAgICByIDo9IGFjY1xuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgKGEnLCAhcilcbiAgZW5kXG5cbmNsYXNzIFsnY3R4XSBtYXBfd2l0aF9jb250ZXh0ID1cbiAgbGV0IGFueSBfIHggPSB4IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50KSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZykgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhcikgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIG9wdGlvbikgVC5tYXBfd2l0aF9jb250ZXh0XG4gICAgICAgID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiBjdHggeClcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGxpc3QpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPiBMaXN0Lm1hcCAoZiBjdHgpIGxcblxuICAgIG1ldGhvZCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBhcnJheSkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+IEFycmF5Lm1hcCAoZiBjdHgpIGFcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydyZXNdIGxpZnQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gKCdhLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogKGJvb2wsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKGludDY0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdCA9XG4gICAgICBmdW4gZiB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VsZiNjb25zdHIgXCJOb25lXCIgW11cbiAgICAgICAgfCBTb21lIHggLT4gc2VsZiNjb25zdHIgXCJTb21lXCIgWyBmIHggXVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGxpc3QsICdyZXMpIFQubGlmdCA9XG4gICAgICBmdW4gZiBsIC0+XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNlbGYjY29uc3RyIFwiW11cIiBbXVxuICAgICAgICB8IHggOjogbCAtPiBzZWxmI2NvbnN0ciBcIjo6XCIgWyBmIHg7IHNlbGYjbGlzdCBmIGwgXVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICgnY3R4LCBpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICgnY3R4LCBjaGFyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoJ2N0eCwgaW50NjQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoTm9uZSwgc2VsZiNjb25zdHIgY3R4IFwiTm9uZVwiIFtdKVxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlcyA9IGYgY3R4IHggaW5cbiAgICAgICAgICAgIChTb21lIHgsIHNlbGYjY29uc3RyIGN0eCBcIlNvbWVcIiBbIHJlcyBdKVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIGxpc3QsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IChbXSwgc2VsZiNjb25zdHIgY3R4IFwiW11cIiBbXSlcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCByZXNfaGVhZCA9IGYgY3R4IHggaW5cbiAgICAgICAgICAgIGxldCBsLCByZXNfdGFpbCA9IHNlbGYjbGlzdCBmIGN0eCBsIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBzZWxmI2NvbnN0ciBjdHggXCI6OlwiIFsgcmVzX2hlYWQ7IHJlc190YWlsIF0pXG4gIGVuZFxuXG5jbGFzcyB0eXBlIFsncmVzXSBzdGRfbGlmdGVycyA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gKCdhLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBib29sIDogKGJvb2wsICdyZXMpIFQubGlmdFxuICBtZXRob2QgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludDY0IDogKGludDY0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGxpc3QsICdyZXMpIFQubGlmdFxuZW5kXG5cbmNsYXNzIHR5cGUgWydjdHgsICdyZXNdIHN0ZF9saWZ0X21hcHBlcnNfd2l0aF9jb250ZXh0ID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBhcnJheSA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50NjQgOiAoJ2N0eCwgaW50NjQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBvcHRpb24gOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBsaXN0IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGxpc3QsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5lbmRcbiIsIm1vZHVsZSBDYW1sID0gU3RkbGliIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMy0wNl0gdXNlIFN0ZGxpYiBpbnN0ZWFkXCJdXG5vcGVuIFN0ZGxpYlxub3BlbiBTdGRMYWJlbHNcbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSB0eXBlIENvbXBhcmlzb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID49ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbWluIDogdCAtPiB0IC0+IHRcbiAgdmFsIG1heCA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCAoID0gKSA9ICggPSApXG4gIGxldCAoIDwgKSA9ICggPCApXG4gIGxldCAoID4gKSA9ICggPiApXG4gIGxldCAoIDw+ICkgPSAoIDw+IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCBtaW4gPSBtaW5cbiAgbGV0IG1heCA9IG1heFxuZW5kXG5cbmluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxuXG5tb2R1bGUgQm9vbCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2Jvb2xcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gYm9vbClcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCeXRlc1xuXG4gIGxldCBzdWJfc3RyaW5nIHQgfnBvcyB+bGVuID0gU3RkbGliLkJ5dGVzLnN1Yl9zdHJpbmcgdCBwb3MgbGVuXG5cbiAgbGV0IGJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICBTdGRsaWIuQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBjaGFyKVxuZW5kXG5cbm1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgbGV0IHByb3RlY3R4IHggfmYgfmZpbmFsbHkgPVxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCB5IC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgeVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHJhaXNlIGV4blxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2Zsb2F0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGZsb2F0KVxuZW5kXG5cbm1vZHVsZSBGbiA9IHN0cnVjdFxuICBsZXQgaWQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgd2hpbGUgbWVtIHQga2V5IGRvXG4gICAgICByZW1vdmUgdCBrZXlcbiAgICBkb25lO1xuICAgIGFkZCB0IGtleSBkYXRhXG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIGlmIG1lbSB0IGtleSB0aGVuIEVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5hZGRfZXhuXCIpXG4gICAgZWxzZSAoXG4gICAgICBhZGQgdCBrZXkgZGF0YTtcbiAgICAgIE9rICgpKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoIE9rICgpIC0+ICgpIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuXG4gIGxldCBmaW5kX29wdCB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoIGRhdGEgLT4gU29tZSBkYXRhIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGZpbmRfb3JfYWRkIHQga2V5IH5kZWZhdWx0ID1cbiAgICBtYXRjaCBmaW5kX29wdCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICAgICAgYWRkX2V4biB0IH5rZXkgfmRhdGE7XG4gICAgICAgIGRhdGFcblxuICBsZXQgcmVjIGFkZF9hbGlzdCB0IGFsaXN0ID1cbiAgICBtYXRjaCBhbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBPayAoKVxuICAgIHwgKGtleSwgZGF0YSkgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IGFkZF9hbGlzdCB0IHRhaWxcbiAgICAgICAgfCBFcnJvciAoXyA6IGV4bikgLT4gRXJyb3Iga2V5KVxuXG4gIGxldCBvZl9hbGlzdCA/c2l6ZSBhbGlzdCA9XG4gICAgbGV0IHNpemUgPVxuICAgICAgbWF0Y2ggc2l6ZSB3aXRoIFNvbWUgc2l6ZSAtPiBzaXplIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBhbGlzdFxuICAgIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgc2l6ZSBpblxuICAgIG1hdGNoIGFkZF9hbGlzdCB0IGFsaXN0IHdpdGggT2sgKCkgLT4gT2sgdCB8IEVycm9yIF8gYXMgZXJyb3IgLT4gZXJyb3JcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9zaXplIGFsaXN0ID1cbiAgICBtYXRjaCBvZl9hbGlzdCA/c2l6ZSBhbGlzdCB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLm9mX2FsaXN0X2V4blwiKVxuZW5kXG5cbm1vZHVsZSBJbl9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fcmRvbmx5IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9pbl9nZW4gZmxhZ3MgMG8wMDAgZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlbmFtZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSBmaWxlbmFtZSBpblxuICAgIEV4bi5wcm90ZWN0eCB0IH5mIH5maW5hbGx5OmNsb3NlX2luXG5cbiAgbGV0IGlucHV0X2FsbCB0ID1cbiAgICBsZXQgcmVjIHJlYWRfYWxsX2ludG8gdCBidWYgPVxuICAgICAgbWF0Y2ggaW5wdXRfY2hhciB0IHdpdGhcbiAgICAgIHwgY2hhciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY2hhcjtcbiAgICAgICAgICByZWFkX2FsbF9pbnRvIHQgYnVmXG4gICAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICByZWFkX2FsbF9pbnRvIHQgYnVmO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgcmVhZF9hbGwgZmlsZW5hbWUgPSB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6aW5wdXRfYWxsXG5lbmRcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgbWF4X2ludCA9IG1heF9pbnRcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxuZW5kXG5cbm1vZHVsZSBFaXRoZXIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5lbmRcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMaXN0XG5cbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAoKiBzaGFkb3cgbm9uLXRhaWwtcmVjdXJzaXZlIGZ1bmN0aW9ucyAqKVxuICAgIGxldCBtZXJnZSA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc29jID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzcSA9IGBub3RfdGFpbF9yZWN1cnNpdmVcblxuICAgIGxldCByZXZfbWFwaSBsaXN0IH5mID1cbiAgICAgIGxldCByZWMgcmV2X21hcGlfYXQgbGlzdCBpIH5mIH5hY2MgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT4gcmV2X21hcGlfYXQgdGFpbCAoaSArIDEpIH5mIH5hY2M6KGYgaSBoZWFkIDo6IGFjYylcbiAgICAgIGluXG4gICAgICByZXZfbWFwaV9hdCBsaXN0IDAgfmYgfmFjYzpbXVxuXG4gICAgbGV0IGZvbGRfcmlnaHQyIGxpc3QxIGxpc3QyIH5pbml0IH5mID1cbiAgICAgIGZvbGRfbGVmdDIgKHJldiBsaXN0MSkgKHJldiBsaXN0MikgfmluaXQgfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IGFjYylcblxuICAgIGxldCBtYXAgbGlzdCB+ZiA9IHJldiAocmV2X21hcCBsaXN0IH5mKVxuICAgIGxldCBtYXBpIGxpc3QgfmYgPSByZXYgKHJldl9tYXBpIGxpc3QgfmYpXG5cbiAgICBsZXQgZm9sZF9yaWdodCBsaXN0IH5pbml0IH5mID1cbiAgICAgIGZvbGRfbGVmdCAoTGlzdC5yZXYgbGlzdCkgfmluaXQgfmY6KGZ1biBhY2MgeCAtPiBmIHggYWNjKVxuXG4gICAgbGV0IGFwcGVuZCB4IHkgPSByZXZfYXBwZW5kIChyZXYgeCkgeVxuICAgIGxldCBjb25jYXQgbGlzdCA9IGZvbGRfcmlnaHQgbGlzdCB+aW5pdDpbXSB+ZjphcHBlbmRcblxuICAgIGxldCByZXZfY29tYmluZSBsaXN0MSBsaXN0MiA9XG4gICAgICBmb2xkX2xlZnQyIGxpc3QxIGxpc3QyIH5pbml0OltdIH5mOihmdW4gYWNjIHggeSAtPiAoeCwgeSkgOjogYWNjKVxuXG4gICAgbGV0IGNvbWJpbmUgbGlzdDEgbGlzdDIgPSByZXYgKHJldl9jb21iaW5lIGxpc3QxIGxpc3QyKVxuXG4gICAgbGV0IHNwbGl0IGxpc3QgPVxuICAgICAgZm9sZF9yaWdodCBsaXN0IH5pbml0OihbXSwgW10pIH5mOihmdW4gKHgsIHkpICh4cywgeXMpIC0+XG4gICAgICAgICAgKHggOjogeHMsIHkgOjogeXMpKVxuXG4gICAgbGV0IG1hcDIgbGlzdDEgbGlzdDIgfmYgPVxuICAgICAgcmV2IChmb2xkX2xlZnQyIGxpc3QxIGxpc3QyIH5pbml0OltdIH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSA6OiBhY2MpKVxuICBlbmRcblxuICBsZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICAgIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggcCB4IHdpdGhcbiAgICAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGwpXG4gICAgaW5cbiAgICBwYXJ0IFtdIFtdIGxcblxuICBsZXQgaW5pdCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgfmxlbiB+cG9zIH5mIH5hY2MgPVxuICAgICAgaWYgcG9zID49IGxlbiB0aGVuIExpc3QucmV2IGFjY1xuICAgICAgZWxzZSBsb29wIH5sZW4gfnBvczoocG9zICsgMSkgfmYgfmFjYzooZiBwb3MgOjogYWNjKVxuICAgIGluXG4gICAgbG9vcCB+bGVuIH5wb3M6MCB+ZiB+YWNjOltdXG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gW10gLT4gdHJ1ZSB8IF8gOjogXyAtPiBmYWxzZVxuXG4gIGxldCByZXZfZmlsdGVyX29wdCBsaXN0ID1cbiAgICBmb2xkX2xlZnQgbGlzdCB+aW5pdDpbXSB+ZjooZnVuIHRhaWwgb3B0aW9uIC0+XG4gICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoIE5vbmUgLT4gdGFpbCB8IFNvbWUgaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG5cbiAgbGV0IGZpbHRlcl9vcHQgbGlzdCA9IHJldiAocmV2X2ZpbHRlcl9vcHQgbGlzdClcbiAgbGV0IGZpbHRlcl9tYXAgbGlzdCB+ZiA9IHJldl9maWx0ZXJfb3B0IChyZXZfbWFwIGxpc3QgfmYpXG4gIGxldCBjb25jYXRfbWFwIGxpc3QgfmYgPSBjb25jYXQgKG1hcCBsaXN0IH5mKVxuXG4gIGxldCByZWMgZmluZF9tYXAgbGlzdCB+ZiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBmIGhlYWQgd2l0aCBTb21lIF8gYXMgc29tZSAtPiBzb21lIHwgTm9uZSAtPiBmaW5kX21hcCB0YWlsIH5mKVxuXG4gIGxldCBmaW5kX21hcF9leG4gbGlzdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgbGlzdCB+ZiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxuICBsZXQgcmVjIGxhc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgWyB4IF0gLT4gU29tZSB4XG4gICAgfCBfIDo6IChfIDo6IF8gYXMgcmVzdCkgLT4gbGFzdCByZXN0XG5cbiAgbGV0IHNwbGl0X3doaWxlIGxpc3QgfmYgPVxuICAgIGxldCByZWMgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2MgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGYgaGVhZCAtPiBzcGxpdF93aGlsZV9pbnRvIHRhaWwgfmYgfmFjYzooaGVhZCA6OiBhY2MpXG4gICAgICB8IF8gOjogXyB8IFtdIC0+IChMaXN0LnJldiBhY2MsIGxpc3QpXG4gICAgaW5cbiAgICBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYzpbXVxuXG4gIGxldCBmaW5kX2FfZHVwICh0eXBlIGVsdCkgbGlzdCB+Y29tcGFyZSA9XG4gICAgbGV0IG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGVsdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBlbmQgaW5cbiAgICBsZXQgbW9kdWxlIEVsdF9zZXQgPSBTZXQuTWFrZSAoRWx0KSBpblxuICAgIGxldCByZWMgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgRWx0X3NldC5tZW0gaGVhZCBzZXQgdGhlbiBTb21lIGhlYWRcbiAgICAgICAgICBlbHNlIGZpbmRfYV9kdXBfaW4gdGFpbCB+c2V0OihFbHRfc2V0LmFkZCBoZWFkIHNldClcbiAgICBpblxuICAgIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0OkVsdF9zZXQuZW1wdHlcblxuICBsZXQgYXNzb2Nfb3B0IGtleSBhbGlzdCA9XG4gICAgbWF0Y2ggYXNzb2Mga2V5IGFsaXN0IHdpdGggeCAtPiBTb21lIHggfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICAoKiByZW9yZGVycyBhcmd1bWVudHMgdG8gaW1wcm92ZSB0eXBlIGluZmVyZW5jZSAqKVxuICBsZXQgaXRlciBsaXN0IH5mID0gaXRlciBsaXN0IH5mXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuICBsZXQgaXRlciB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuICBsZXQgdG9fbGlzdCB0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gW10gfCBTb21lIHggLT4gWyB4IF1cbmVuZFxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIGxldCBiaW5kIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBmIGEgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gT2sgKGYgYSkgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0IG1hcF9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gT2sgKGYgYSkgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBoYW5kbGVfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGEgfCBFcnJvciBlIC0+IGYgZVxuZW5kXG5cbm1vZHVsZSBOb25FbXB0eUxpc3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiAnYSBsaXN0XG5cbiAgbGV0ICggQCApICh0MSwgcTEpICh0MiwgcTIpID0gKHQxLCBxMSBAICh0MiA6OiBxMikpXG4gIGxldCBoZCA9IGZzdFxuICBsZXQgdG9fbGlzdCAodCwgcSkgPSB0IDo6IHFcbiAgbGV0IG1hcCB+ZiAodCwgcSkgPSAoZiB0LCBMaXN0Lm1hcCB+ZiBxKVxuZW5kXG5cbm1vZHVsZSBPdXRfY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgPyhhcHBlbmQgPSBmYWxzZSkgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICAgIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYXBwZW5kIHRoZW4gT3Blbl9hcHBlbmQgZWxzZSBPcGVuX3RydW5jKSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX291dF9nZW4gZmxhZ3MgcGVybSBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSBpblxuICAgIEV4bi5wcm90ZWN0eCB0IH5mIH5maW5hbGx5OmNsb3NlX291dFxuXG4gIGxldCB3cml0ZV9hbGwgZmlsZW5hbWUgfmRhdGEgPVxuICAgIHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBpc19lbXB0eSAodCA6IHQpID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBwcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlblxuICBsZXQgc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczoobGVuZ3RoIHQgLSBsZW4pIH5sZW5cbiAgbGV0IGRyb3BfcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczpsZW4gfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG4gIGxldCBkcm9wX3N1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIGxlbilcblxuICBsZXQgaXNfcHJlZml4IHQgfnByZWZpeCA9XG4gICAgbGV0IHJlYyBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW5cbiAgICAgIHx8IENoYXIuZXF1YWwgKGdldCB0IHBvcykgKGdldCBwcmVmaXggcG9zKVxuICAgICAgICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6KHBvcyArIDEpIH5sZW5cbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBwcmVmaXhcbiAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczowIH5sZW46KGxlbmd0aCBwcmVmaXgpXG5cbiAgbGV0IGlzX3N1ZmZpeCB0IH5zdWZmaXggPVxuICAgIGxldCByZWMgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeCB+cG9zIH5zdWZmaXhfb2Zmc2V0ID1cbiAgICAgIHBvcyA8IDBcbiAgICAgIHx8IENoYXIuZXF1YWwgKGdldCB0IChzdWZmaXhfb2Zmc2V0ICsgcG9zKSkgKGdldCBzdWZmaXggcG9zKVxuICAgICAgICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeCB+cG9zOihwb3MgLSAxKSB+c3VmZml4X29mZnNldFxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHN1ZmZpeFxuICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXhcbiAgICAgICAgIH5wb3M6KGxlbmd0aCBzdWZmaXggLSAxKVxuICAgICAgICAgfnN1ZmZpeF9vZmZzZXQ6KGxlbmd0aCB0IC0gbGVuZ3RoIHN1ZmZpeClcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIGxldCByZWMgZXhpc3RzX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA8IGxlbiAmJiAoZiAoZ2V0IHQgcG9zKSB8fCBleGlzdHNfYXQgdCB+ZiB+cG9zOihwb3MgKyAxKSB+bGVuKVxuICAgIGluXG4gICAgZXhpc3RzX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIGxldCByZWMgZm9yX2FsbF9hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuIHx8IChmIChnZXQgdCBwb3MpICYmIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOihwb3MgKyAxKSB+bGVuKVxuICAgIGluXG4gICAgZm9yX2FsbF9hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoXG4gICAgfCBpIC0+IFNvbWUgaVxuICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGxzcGxpdDIgdCB+b24gPVxuICAgIG1hdGNoIGluZGV4X29wdCB0IG9uIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBpIC0+XG4gICAgICAgIFNvbWUgKHN1YiB0IH5wb3M6MCB+bGVuOmksIHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKSlcblxuICBsZXQgY2FwaXRhbGl6ZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgbG93ZXJjYXNlX2FzY2lpID0gU3RkbGliLlN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbiAgbGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBzcGxpdF9vbl9jaGFyIHQgfnNlcCA9IFN0ZGxpYi5TdHJpbmcuc3BsaXRfb25fY2hhciBzZXAgdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBzdHJpbmcpXG5cbiAgbW9kdWxlIE1hcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFwLk1ha2UgKFN0cmluZylcblxuICAgIGxldCBmaW5kX29wdCBrZXkgdCA9XG4gICAgICBtYXRjaCBmaW5kIGtleSB0IHdpdGggeCAtPiBTb21lIHggfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcbiAgZW5kXG5cbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlIChTdHJpbmcpXG5lbmRcblxubGV0ICggQCApID0gTGlzdC5hcHBlbmRcbmxldCBvdXRwdXQgb2MgYnl0ZXMgfnBvcyB+bGVuID0gb3V0cHV0IG9jIGJ5dGVzIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0cmluZyB+cG9zIH5sZW4gPSBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0cmluZyBwb3MgbGVuXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIEwgPSBBc3RsaWIuTG9jYXRpb25cblxudHlwZSB0ID0gbG9jYXRpb24gPSB7XG4gIGxvY19zdGFydCA6IExleGluZy5wb3NpdGlvbjtcbiAgbG9jX2VuZCA6IExleGluZy5wb3NpdGlvbjtcbiAgbG9jX2dob3N0IDogYm9vbDtcbn1cblxubGV0IGluX2ZpbGUgbmFtZSA9XG4gIGxldCBsb2MgPSB7IHBvc19mbmFtZSA9IG5hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gLTEgfSBpblxuICB7IGxvY19zdGFydCA9IGxvYzsgbG9jX2VuZCA9IGxvYzsgbG9jX2dob3N0ID0gdHJ1ZSB9XG5cbmxldCBzZXRfZmlsZW5hbWUgbG9jIGZuID1cbiAgbGV0IGxvY19zdGFydCA9IHsgbG9jLmxvY19zdGFydCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgbGV0IGxvY19lbmQgPSB7IGxvYy5sb2NfZW5kIHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICB7IGxvYyB3aXRoIGxvY19zdGFydDsgbG9jX2VuZCB9XG5cbmxldCBub25lID0gaW5fZmlsZSBcIl9ub25lX1wiXG5cbmxldCBpbml0IGxleGJ1ZiBmbmFtZSA9XG4gIGxldCBvcGVuIExleGluZyBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gMCB9XG5cbmxldCByYWlzZV9lcnJvcmYgP2xvYyBmbXQgPSBMLnJhaXNlX2Vycm9yZiA/bG9jIGZtdFxubGV0IHJlcG9ydF9leGNlcHRpb24gPSBMLnJlcG9ydF9leGNlcHRpb25cblxubGV0IG9mX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICB7XG4gICAgbG9jX3N0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgIGxvY19lbmQgPSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgfVxuXG5sZXQgcHJpbnQgcHBmIHQgPVxuICBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlwiXG4gICAgdC5sb2Nfc3RhcnQucG9zX2ZuYW1lIHQubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgKHQubG9jX3N0YXJ0LnBvc19jbnVtIC0gdC5sb2Nfc3RhcnQucG9zX2JvbClcbiAgICAodC5sb2NfZW5kLnBvc19jbnVtIC0gdC5sb2Nfc3RhcnQucG9zX2JvbClcblxudHlwZSBub25yZWMgJ2EgbG9jID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogdCB9XG5cbmxldCBjb21wYXJlX3BvcyBwMSBwMiA9XG4gIGxldCBvcGVuIExleGluZyBpblxuICBsZXQgY29sdW1uIHAgPVxuICAgICgqIE1hbnVhbCBleHRyYWN0OlxuICAgICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcG9zX2NudW0gYW5kIHBvc19ib2wgaXMgdGhlIGNoYXJhY3RlciBvZmZzZXRcbiAgICAgICB3aXRoaW4gdGhlIGxpbmUgKGkuZS4gdGhlIGNvbHVtbiBudW1iZXIsIGFzc3VtaW5nIGVhY2ggY2hhcmFjdGVyIGlzXG4gICAgICAgb25lIGNvbHVtbiB3aWRlKS4gKilcbiAgICBwLnBvc19jbnVtIC0gcC5wb3NfYm9sXG4gIGluXG4gIG1hdGNoIEludC5jb21wYXJlIHAxLnBvc19sbnVtIHAyLnBvc19sbnVtIHdpdGhcbiAgfCAwIC0+IEludC5jb21wYXJlIChjb2x1bW4gcDEpIChjb2x1bW4gcDIpXG4gIHwgbiAtPiBuXG5cbmxldCBtaW5fcG9zIHAxIHAyID0gaWYgY29tcGFyZV9wb3MgcDEgcDIgPD0gMCB0aGVuIHAxIGVsc2UgcDJcbmxldCBtYXhfcG9zIHAxIHAyID0gaWYgY29tcGFyZV9wb3MgcDEgcDIgPj0gMCB0aGVuIHAxIGVsc2UgcDJcblxubGV0IGNvbXBhcmUgbG9jMSBsb2MyID1cbiAgbWF0Y2ggY29tcGFyZV9wb3MgbG9jMS5sb2Nfc3RhcnQgbG9jMi5sb2Nfc3RhcnQgd2l0aFxuICB8IDAgLT4gY29tcGFyZV9wb3MgbG9jMS5sb2NfZW5kIGxvYzIubG9jX2VuZFxuICB8IG4gLT4gblxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcHhsaWJfYXN0LkxvY2F0aW9uX2Vycm9yXG5cbiAgbGV0IGNyZWF0ZWYgfmxvYyBmbXQgPSBGb3JtYXQua2FzcHJpbnRmIChmdW4gc3RyIC0+IG1ha2UgfmxvYyB+c3ViOltdIHN0cikgZm10XG5lbmRcblxubGV0IGVycm9yX2V4dGVuc2lvbmYgfmxvYyBmbXQgPVxuICBGb3JtYXQua2FzcHJpbnRmXG4gICAgKGZ1biBzdHIgLT4gRXJyb3IudG9fZXh0ZW5zaW9uIEBAIEVycm9yLm1ha2UgfmxvYyB+c3ViOltdIHN0cilcbiAgICBmbXRcblxuZXhjZXB0aW9uIEVycm9yID0gTC5FcnJvclxuXG5sZXQgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICB8IEVycm9yIGUgLT4gU29tZSAoRXJyb3IubWVzc2FnZSBlKVxuICAgIHwgXyAtPiBOb25lKVxuIiwib3BlbiEgSW1wb3J0XG5cbmV4Y2VwdGlvbiBFeHBlY3RlZCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBmYWlsIGxvYyBleHBlY3RlZCA9IHJhaXNlIChFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkpXG5cbnR5cGUgY29udGV4dCA9IHtcbiAgKCogW21hdGNoZWRdIGNvdW50cyBob3cgbWFueSBjb25zdHJ1Y3RvcnMgaGF2ZSBiZWVuIG1hdGNoZWQuIFRoaXMgaXMgdXNlZCB0byBmaW5kIHdoYXRcbiAgICAgcGF0dGVybiBtYXRjaGVzIHRoZSBtb3N0IHNvbWUgcGllY2Ugb2YgYXN0IGluIFtBc3RfcGF0dGVybi5hbHRdLiBJbiB0aGUgY2FzZSB3aGVyZVxuICAgICBhbGwgYnJhbmNoZXMgZmFpbCB0byBtYXRjaCwgd2UgcmVwb3J0IHRoZSBlcnJvciBmcm9tIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHRoZVxuICAgICBtb3N0LlxuXG4gICAgIFRoaXMgaXMgb25seSBpbmNyZW1lbnRlZCBieSBjb21iaW5hdG9ycyB0aGF0IGNhbiBmYWlsLiAqKVxuICBtdXRhYmxlIG1hdGNoZWQgOiBpbnQ7XG59XG5cbnR5cGUgKCdtYXRjaGVkX3ZhbHVlLCAnaywgJ2tfcmVzdWx0KSB0ID1cbiAgfCBUIG9mIChjb250ZXh0IC0+IExvY2F0aW9uLnQgLT4gJ21hdGNoZWRfdmFsdWUgLT4gJ2sgLT4gJ2tfcmVzdWx0KVxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBNID1cbiAgc3RydWN0XG4gICAgbGV0IGF0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5wYXlsb2FkIC0+XG4gICAgICAgICAgICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGJpbmRpbmdfb3AgfmxvYyAgPVxuICAgICAgKChmdW4gfm9wIC0+XG4gICAgICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICAgICAoKGZ1biB+ZXhwIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBib3Bfb3AgPSBvcDtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9wYXQgPSBwYXQ7XG4gICAgICAgICAgICAgICAgICAgIHBib3BfZXhwID0gZXhwO1xuICAgICAgICAgICAgICAgICAgICBwYm9wX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2FzZSB+bGhzICA9XG4gICAgICAoKGZ1biB+Z3VhcmQgLT5cbiAgICAgICAgICAoKGZ1biB+cmhzIC0+IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2Z1biB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9hcHBseSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfbGV0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfaW5oZXJpdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX3ZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9tZXRob2QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biB+dmlydCAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGYgID1cbiAgICAgICgoZnVuIH5maWVsZHMgLT4geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9jb25zdHIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfYXJyb3cgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2luaGVyaXQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfdmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX3ZhbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfbWV0aG9kIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2F0dHJpYnV0ZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH52YXJzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5hcmdzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+cmVzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYW55IH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2FueVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2Fycm93IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdHVwbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3R1cGxlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9vYmplY3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY2xhc3MgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jbGFzcyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BvbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BhY2thZ2UgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfc3RyaW5nIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9ib29sIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0YW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZnVuY3Rpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1bmN0aW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Z1biB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcHBseSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX21hdGNoIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHJ5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3R1cGxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcmVjb3JkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZpZWxkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZmllbGQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2V0ZmllbGQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcnJheSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VxdWVuY2UgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF93aGlsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZvciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHg0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvZXJjZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZW5kIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9uZXcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vdmVycmlkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hc3NlcnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Fzc2VydCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sYXp5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sYXp5IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BvbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX29iamVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ld3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0b3AgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG9wIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3VucmVhY2hhYmxlIH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3VucmVhY2hhYmxlXG4gICAgICB9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGluY2x1ZGVfaW5mb3MgfmxvYyAgPVxuICAgICAgKChmdW4gbW9kXyAtPlxuICAgICAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfm11dGFibGVfIC0+XG4gICAgICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgICAgICAgICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxldG9wIH5sZXRfICA9XG4gICAgICAoKGZ1biB+YW5kcyAtPiAoKGZ1biB+Ym9keSAtPiB7IGxldF87IGFuZHM7IGJvZHkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICA9XG4gICAgICAoKGZ1biB+ZW5kXyAtPlxuICAgICAgICAgICgoZnVuIH5naG9zdCAtPlxuICAgICAgICAgICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1iX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtYl9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtYl9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1kX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbWRfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfZnVuY3RvciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF91bnBhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9mdW5jdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfd2l0aCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3R5cGVvZiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV90eXBlb2YgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG90YWcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwb2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9wZW5faW5mb3MgfmxvYyAgPVxuICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAoKGZ1biB+b3ZlcnJpZGUgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgICAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYWxpYXMgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdGFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90dXBsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3JlY29yZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hcnJheSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfb3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2xhenkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdW5wYWNrIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgPVxuICAgICAgKChmdW4gfmxudW0gLT5cbiAgICAgICAgICAoKGZ1biB+Ym9sIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jbnVtIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBvc19mbmFtZSA9IGZuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IGxudW07XG4gICAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSBib2w7XG4gICAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gY251bVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBydGFnIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHJmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJpbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdmFsdWUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGV4dCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19tb2R0eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfaW5jbHVkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfYXR0cmlidXRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfZXZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdmFsdWUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBleHQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZXh0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9tb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9tb2R0eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfY2xhc3MgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfaW5jbHVkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9pbmNsdWRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5hcmcgLT4geyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jc3RycyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biBjb25zdHJ1Y3RvciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfnBhdGggLT5cbiAgICAgICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jb25zdHJ1Y3RvcnMgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfmxvYyAgPVxuICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdmJfcGF0ID0gcGF0O1xuICAgICAgICAgICAgICAgIHB2Yl9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB2Yl9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcmltIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gIGVuZFxubW9kdWxlIE1ha2UoTG9jOnNpZyB2YWwgbG9jIDogTG9jYXRpb24udCBlbmQpID1cbiAgc3RydWN0XG4gICAgbGV0IGxvYyA9IExvYy5sb2NcbiAgICBsZXQgYXR0cmlidXRlIH5uYW1lICA9XG4gICAgICAoKGZ1biB+cGF5bG9hZCAtPlxuICAgICAgICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBiaW5kaW5nX29wIH5vcCAgPVxuICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICgoZnVuIH5leHAgLT5cbiAgICAgICAgICAgICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2FzZSB+bGhzICA9XG4gICAgICAoKGZ1biB+Z3VhcmQgLT5cbiAgICAgICAgICAoKGZ1biB+cmhzIC0+IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2FwcGx5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9sZXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2luaGVyaXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX3ZhbCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfnZpcnQgID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGYgID1cbiAgICAgICgoZnVuIH5maWVsZHMgLT4geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9jb25zdHIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfaW5oZXJpdCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnZhcnMgLT5cbiAgICAgICAgICAoKGZ1biB+YXJncyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cmVzIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICAgICAgICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbnkgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX29iamVjdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfb2JqZWN0ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2NsYXNzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jbGFzcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbGlhcyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdmFyaWFudCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BvbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcGFja2FnZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfVxuICAgIGxldCBwZGlyX2ludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfaWRlbnQgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9XG4gICAgbGV0IHBkaXJfYm9vbCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfVxuICAgIGxldCBwZXhwX2lkZW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcHBseSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbWF0Y2ggeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3RyeSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3JlY29yZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZpZWxkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF93aGlsZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZm9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHg0IC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvZXJjZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VuZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9uZXcgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX292ZXJyaWRlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Fzc2VydCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vYmplY3QgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRvcCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lICA9XG4gICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgaW5jbHVkZV9pbmZvcyBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfm11dGFibGVfIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsZXRvcCB+bGV0XyAgPVxuICAgICAgKChmdW4gfmFuZHMgLT4gKChmdW4gfmJvZHkgLT4geyBsZXRfOyBhbmRzOyBib2R5IH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxvY2F0aW9uIH5zdGFydCAgPVxuICAgICAgKChmdW4gfmVuZF8gLT5cbiAgICAgICAgICAoKGZ1biB+Z2hvc3QgLT5cbiAgICAgICAgICAgICAgeyBsb2Nfc3RhcnQgPSBzdGFydDsgbG9jX2VuZCA9IGVuZF87IGxvY19naG9zdCA9IGdob3N0IH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5uYW1lICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtYl9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtYl9leHByID0gZXhwcjtcbiAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbWJfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1kX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9pZGVudCB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApIH1cbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9mdW5jdG9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfYXBwbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3VucGFjayB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKSB9XG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfaWRlbnQgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKSB9XG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfZnVuY3RvciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3dpdGggeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV90eXBlb2YgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3RhZyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9pbmhlcml0IHgwID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT2luaGVyaXQgeDApIH1cbiAgICBsZXQgb3Blbl9pbmZvcyB+ZXhwciAgPVxuICAgICAgKChmdW4gfm92ZXJyaWRlIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FueSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbGlhcyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2ludGVydmFsIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RydWN0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdmFyaWFudCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9yZWNvcmQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdHlwZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHlwZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3VucGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdW5wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXhjZXB0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgPVxuICAgICAgKChmdW4gfmxudW0gLT5cbiAgICAgICAgICAoKGZ1biB+Ym9sIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jbnVtIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBvc19mbmFtZSA9IGZuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IGxudW07XG4gICAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSBib2w7XG4gICAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gY251bVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBydGFnIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHJmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcmluaGVyaXQgeDAgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwc2lnX3ZhbHVlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH1cbiAgICBsZXQgcHNpZ190eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ190eXBleHQgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24geDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2RzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24geDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9ldmFsIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ZhbHVlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBleHQgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24geDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfb3BlbiB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH1cbiAgICBsZXQgcHN0cl9jbGFzcyB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfaW5jbHVkZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bmFtZSAgPVxuICAgICAgKChmdW4gfmFyZyAtPiB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+Y3N0cnMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiBjb25zdHJ1Y3RvciA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoICA9XG4gICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgKChmdW4gfmNvbnN0cnVjdG9ycyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV8gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfnBhdCAgPVxuICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAoKGZ1biB+cHJpbSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gIGVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IExvY2F0aW9uLnQgfVxuXG5sZXQgdHh0IHQgPSB0LnR4dFxubGV0IGxvYyB0ID0gdC5sb2NcbmxldCBtYWtlIH5sb2MgdHh0ID0geyBsb2M7IHR4dCB9XG5sZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBsb25naWRlbnQgPSBMaWRlbnQgb2Ygc3RyaW5nIHwgTGRvdCBvZiB0ICogc3RyaW5nIHwgTGFwcGx5IG9mIHQgKiB0XG5cbiAgbGV0IGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50ID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudF9jaGFyID0gZnVuY3Rpb25cbiAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICdfJyB8ICdcXCcnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50ID0gZnVuY3Rpb25cbiAgICB8IFwiYXNyXCIgfCBcImxhbmRcIiB8IFwibG9yXCIgfCBcImxzbFwiIHwgXCJsc3JcIiB8IFwibHhvclwiIHwgXCJtb2RcIiB8IFwib3JcIiAtPiBmYWxzZVxuICAgIHwgc3RyaW5nIC0+IFN0cmluZy5mb3JfYWxsIHN0cmluZyB+Zjppc19ub3JtYWxfaWRlbnRfY2hhclxuXG4gIGxldCBzaG9ydF9uYW1lIHN0cmluZyA9XG4gICAgaWYgaXNfbm9ybWFsX2lkZW50IHN0cmluZyB0aGVuIHN0cmluZyBlbHNlIFwiKCBcIiBeIHN0cmluZyBeIFwiIClcIlxuXG4gIGxldCByZWMgbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBMaWRlbnQgcyAtPiBzaG9ydF9uYW1lIHNcbiAgICB8IExkb3QgKGEsIGIpIC0+IG5hbWUgYSBeIFwiLlwiIF4gc2hvcnRfbmFtZSBiXG4gICAgfCBMYXBwbHkgKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJXMoJXMpXCIgKG5hbWUgYSkgKG5hbWUgYilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKG5hbWUgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHJlYyBmbGF0IGFjY3UgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHMgOjogYWNjdVxuICB8IExkb3QgKGxpZCwgcykgLT4gZmxhdCAocyA6OiBhY2N1KSBsaWRcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IGZsYXR0ZW5fZXhuIGxpZCA9IGZsYXQgW10gbGlkXG5cbmxldCBsYXN0X2V4biA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gc1xuICB8IExkb3QgKF8sIHMpIC0+IHNcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IHVuZmxhdHRlbiB+aW5pdCBsID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjooZnVuIGFjYyBzIC0+IExkb3QgKGFjYywgcykpXG5cbigqIGZvciBjYXNlcyB3aXRob3V0IGRvdHRlZCBvcGVyYXRvcnMgKGUuZy4gW3BhcnNlIFwiQS5CLkNcIl0pICopXG5sZXQgcGFyc2Vfc2ltcGxlIHMgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6Jy4nIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBzIDo6IGwgLT4gdW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbFxuXG4oKiBoYW5kbGUgW1wiQS5CLigrLispXCJdIG9yIFtcIlZlYy4oLiUuKCk8LSlcIl0gKilcbmxldCBwYXJzZSBzID1cbiAgbGV0IGludmFsaWQgKCkgPVxuICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIlBweGxpYi5Mb25naWRlbnQucGFyc2U6ICVTXCIgcylcbiAgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDwgMSB0aGVuIGludmFsaWQgKCk7XG4gIGxldCBvcGVuX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKCcgaW5cbiAgbGV0IGNsb3NlX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKScgaW5cbiAgbWF0Y2ggKHMuWzBdLCBvcGVuX3BhciwgY2xvc2VfcGFyKSB3aXRoXG4gIHwgKCdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJ18nKSwgTm9uZSwgTm9uZSAtPiBwYXJzZV9zaW1wbGUgc1xuICB8IF8sIE5vbmUsIE5vbmUgLT4gTGlkZW50IHMgKCogVGhpcyBpcyBhIHJhdyBvcGVyYXRvciwgbm8gbW9kdWxlIHBhdGggKilcbiAgfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBpbnZhbGlkICgpXG4gIHwgXywgU29tZSBsLCBTb21lIHIgLT4gKFxuICAgICAgaWYgSW50LihyIDw+IFN0cmluZy5sZW5ndGggcyAtIDEpIHRoZW4gaW52YWxpZCAoKTtcbiAgICAgIGxldCBncm91cCA9XG4gICAgICAgIGlmIEludC4ociA9IGwgKyAxKSB0aGVuIFwiKClcIlxuICAgICAgICBlbHNlIFN0cmluZy50cmltIChTdHJpbmcuc3ViIHMgfnBvczoobCArIDEpIH5sZW46KHIgLSBsIC0gMSkpXG4gICAgICBpblxuICAgICAgaWYgSW50LihsID0gMCkgdGhlbiBMaWRlbnQgZ3JvdXBcbiAgICAgIGVsc2UgaWYgQ2hhci4ocy5bbCAtIDFdIDw+ICcuJykgdGhlbiBpbnZhbGlkICgpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KGwgLSAxKSBpblxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBiZWZvcmUgfnNlcDonLicgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHMgOjogbCAtPiBMZG90ICh1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsLCBncm91cCkpXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZSAoVClcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoVClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIExvYy50XG5cbiAgICBsZXQgbG9jICh4IDogXyB0KSA9IHgubG9jXG4gICAgbGV0IG1rIH5sb2MgeCA9IHsgbG9jOyB0eHQgPSB4IH1cbiAgICBsZXQgbWFwIGYgdCA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuICAgIGxldCBtYXBfbGlkZW50IHggPSBtYXAgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeFxuICAgIGxldCBsaWRlbnQgfmxvYyB4ID0gbWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHgpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1cblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSAtLS0tLSopXG4gIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jIGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdmJzIC0+IFsgcHN0cl92YWx1ZSB+bG9jIHJlY19mbGFnIHZicyBdXG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2M6XyB+bmFtZTpfIH5wYXJhbXM6XyB+Y3N0cnM6XyB+a2luZDpfXG4gICAgICB+cHJpdmF0ZV86XyB+bWFuaWZlc3Q6XyA9XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiUHB4bGliLkFzdF9idWlsZGVyLm5vbnJlY190eXBlX2RlY2xhcmF0aW9uOiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvblwiXG5cbiAgbGV0IGVpbnQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IGVjaGFyIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IGVzdHJpbmcgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgZWZsb2F0IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgZWludDMyIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgZWludDY0IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgZW5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBwaW50IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBwY2hhciB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBwc3RyaW5nIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IHBmbG9hdCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IHBpbnQzMiB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IHBpbnQ2NCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IHBuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgZWJvb2wgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBwYm9vbCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IGV2YXIgfmxvYyB2ID0gcGV4cF9pZGVudCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB2KSlcbiAgbGV0IHB2YXIgfmxvYyB2ID0gcHBhdF92YXIgfmxvYyAoTG9jYXRlZC5tayB+bG9jIHYpXG4gIGxldCBldW5pdCB+bG9jID0gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHB1bml0IH5sb2MgPSBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcGV4cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwdHlwX3R1cGxlIH5sb2MgbFxuXG4gIGxldCBwZXhwX3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBleHBfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwcGF0X3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5ID1cbiAgICBtYXRjaCB2YXJzIHdpdGggW10gLT4gdHkgfCBfIC0+IHB0eXBfcG9seSB+bG9jIHZhcnMgdHlcblxuICBsZXQgcGV4cF9hcHBseSB+bG9jIGUgZWwgPVxuICAgIG1hdGNoIChlLCBlbCkgd2l0aFxuICAgIHwgXywgW10gLT4gZVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSwgXyAtPlxuICAgICAgICB7IGUgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzIEAgZWwpIH1cbiAgICB8IF8gLT4gcGV4cF9hcHBseSB+bG9jIGUgZWxcblxuICBsZXQgZWFwcGx5IH5sb2MgZSBlbCA9XG4gICAgcGV4cF9hcHBseSB+bG9jIGUgKExpc3QubWFwIGVsIH5mOihmdW4gZSAtPiAoQXN0dHlwZXMuTm9sYWJlbCwgZSkpKVxuXG4gIGxldCBlYWJzdHJhY3QgfmxvYyBwcyBlID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgcHMgfmluaXQ6ZSB+ZjooZnVuIHAgZSAtPlxuICAgICAgICBwZXhwX2Z1biB+bG9jIEFzdHR5cGVzLk5vbGFiZWwgTm9uZSBwIGUpXG5cbiAgbGV0IGVzZXF1ZW5jZSB+bG9jIGVsID1cbiAgICBtYXRjaCBMaXN0LnJldiBlbCB3aXRoXG4gICAgfCBbXSAtPiBldW5pdCB+bG9jXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCB0bCB+aW5pdDpoZCB+ZjooZnVuIGFjYyBlIC0+IHBleHBfc2VxdWVuY2UgfmxvYyBlIGFjYylcblxuICBsZXQgcGNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgZWNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgcmVjIGVsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBleHBfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBleHBfdHVwbGUgfmxvYyBbIHg7IGVsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgcmVjIHBsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBbIHg7IHBsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSB+bG9jIChpZGVudCA6IExvbmdpZGVudC50KSB+ZiA9XG4gICAgbWF0Y2ggaWRlbnQgd2l0aFxuICAgIHwgTGlkZW50IG4gLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGlkZW50IChmIG4pOyBsb2MgfVxuICAgIHwgTGRvdCAocGF0aCwgbikgLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGRvdCAocGF0aCwgZiBuKTsgbG9jIH1cbiAgICB8IExhcHBseSBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5leHBlY3RlZCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVcIlxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IH5sb2M6YXBwbHlfbG9jIHsgTG9jLmxvYzsgdHh0ID0gbG9uZ2lkZW50IH0gfmYgYXJncyA9XG4gICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggKGxvbmdpZGVudCA6IExvbmdpZGVudC50KSB3aXRoXG4gICAgfCBMaWRlbnQgXyB8IExkb3QgKChMaWRlbnQgXyB8IExkb3QgXyksIF8pIHwgTGFwcGx5IF8gLT4gKFxuICAgICAgICBsZXQgaWRlbnQgPVxuICAgICAgICAgIHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgbG9uZ2lkZW50IH5sb2MgfmZcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gaWRlbnRcbiAgICAgICAgfCBfIDo6IF8gLT4gZWFwcGx5IH5sb2M6YXBwbHlfbG9jIGlkZW50IGFyZ3MpXG4gICAgfCBMZG90ICgoTGFwcGx5IF8gYXMgbW9kdWxlX3BhdGgpLCBuKSAtPlxuICAgICAgICBsZXQgc3VmZml4X24gZnVuY3Rvcl8gPSBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGZ1bmN0b3JfIF4gXCJfX1wiIF4gbiBpblxuICAgICAgICBsZXQgcmVjIGdhdGhlcl9sYXBwbHkgZnVuY3Rvcl9hcmdzIDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgKiBfID1cbiAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgTGFwcGx5IChyZXN0LCBhcmcpIC0+IGdhdGhlcl9sYXBwbHkgKGFyZyA6OiBmdW5jdG9yX2FyZ3MpIHJlc3RcbiAgICAgICAgICB8IExpZGVudCBmdW5jdG9yXyAtPiAoTGlkZW50IChzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgICB8IExkb3QgKGZ1bmN0b3JfcGF0aCwgZnVuY3Rvcl8pIC0+XG4gICAgICAgICAgICAgIChMZG90IChmdW5jdG9yX3BhdGgsIHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaWRlbnQsIGZ1bmN0b3JfYXJncyA9IGdhdGhlcl9sYXBwbHkgW10gbW9kdWxlX3BhdGggaW5cbiAgICAgICAgZWFwcGx5IH5sb2M6YXBwbHlfbG9jXG4gICAgICAgICAgKHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgaWRlbnQgfmxvYyB+ZilcbiAgICAgICAgICAoTGlzdC5tYXAgZnVuY3Rvcl9hcmdzIH5mOihmdW4gcGF0aCAtPlxuICAgICAgICAgICAgICAgcGV4cF9wYWNrIH5sb2MgKHBtb2RfaWRlbnQgfmxvYyB7IHR4dCA9IHBhdGg7IGxvYyB9KSlcbiAgICAgICAgICBAIGFyZ3MpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgbG9uZ2lkZW50IH5mID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGxvbmdpZGVudCB+bG9jIH5mIFtdXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPVxuICAgIGxldCByZWMgZ2F0aGVyX3BhcmFtcyBhY2MgZXhwciA9XG4gICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICBQZXhwX2Z1biAobGFiZWwsIE5vbmUgKCogbm8gZGVmYXVsdCBleHByZXNzaW9uICopLCBzdWJwYXQsIGJvZHkpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICB9IC0+IChcbiAgICAgICAgICBtYXRjaCBzdWJwYXQgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIE5vbmUpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB0eSApO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAoKiBXZSByZWR1Y2UgW2Z1biAoeCA6IHR5KSAtPiBmIHhdIGJ5IHJld3JpdGluZyBpdCBbKGYgOiB0eSAtPiBfKV0uICopXG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgU29tZSB0eSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpKVxuICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpXG4gICAgaW5cbiAgICBsZXQgYW5ub3RhdGUgfmxvYyBleHByIHBhcmFtcyA9XG4gICAgICBpZiBMaXN0LmV4aXN0cyBwYXJhbXMgfmY6KGZ1biAoXywgXywgdHkpIC0+IE9wdGlvbi5pc19zb21lIHR5KSB0aGVuXG4gICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHBhcmFtcyB+aW5pdDoocHR5cF9hbnkgfmxvYylcbiAgICAgICAgICAgIH5mOihmdW4gKHBhcmFtX2xhYmVsLCBwYXJhbSwgdHlfb3B0KSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9IHBhcmFtLmxvYyBpblxuICAgICAgICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHR5X29wdCB3aXRoIE5vbmUgLT4gcHR5cF9hbnkgfmxvYyB8IFNvbWUgdHkgLT4gdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcHR5cF9hcnJvdyB+bG9jIHBhcmFtX2xhYmVsIHR5IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgcGV4cF9jb25zdHJhaW50IH5sb2MgZXhwciB0eVxuICAgICAgZWxzZSBleHByXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhdGhlcl9hcmdzIG4geCA9XG4gICAgICBpZiBuID0gMCB0aGVuIFNvbWUgKHgsIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChib2R5LCBhcmdzKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBhcmdzIDw9IG4gdGhlblxuICAgICAgICAgICAgICBtYXRjaCBnYXRoZXJfYXJncyAobiAtIExpc3QubGVuZ3RoIGFyZ3MpIGJvZHkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKGJvZHksIGFyZ3MnKSAtPiBTb21lIChib2R5LCBhcmdzJyBAIGFyZ3MpXG4gICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGZ1biBleHByIC0+XG4gICAgICBsZXQgcGFyYW1zLCBib2R5ID0gZ2F0aGVyX3BhcmFtcyBbXSBleHByIGluXG4gICAgICBtYXRjaCBnYXRoZXJfYXJncyAoTGlzdC5sZW5ndGggcGFyYW1zKSBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IGFzIGZfaWRlbnQpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZm9yX2FsbDIgYXJncyBwYXJhbXNcbiAgICAgICAgICAgICAgfmY6KGZ1biAoYXJnX2xhYmVsLCBhcmcpIChwYXJhbV9sYWJlbCwgcGFyYW0sIF8pIC0+XG4gICAgICAgICAgICAgICAgUG9seS4oID0gKSAoYXJnX2xhYmVsIDogYXJnX2xhYmVsKSBwYXJhbV9sYWJlbFxuICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBuYW1lJzsgXyB9O1xuICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcuKCA9ICkgbmFtZScgcGFyYW0udHh0XG4gICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT4gU29tZSAoYW5ub3RhdGUgfmxvYzpleHByLnBleHBfbG9jIGZfaWRlbnQgcGFyYW1zKSlcbiAgICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwciA9IE9wdGlvbi52YWx1ZSAoZXRhX3JlZHVjZSBleHByKSB+ZGVmYXVsdDpleHByXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyBleHByIH5yZWNfZmxhZyA9XG4gICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgIHwgUmVjdXJzaXZlIC0+IGV4cHJcbiAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHJcbmVuZFxuXG5tb2R1bGUgdHlwZSBMb2MgPSBBc3RfYnVpbGRlcl9pbnRmLkxvY1xuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfaW50Zi5TXG5cbiAgbW9kdWxlIExhdGVzdCA6IHNpZ1xuICAgIHZhbCBwcGF0X2NvbnN0cnVjdCA6XG4gICAgICBsb25naWRlbnQgbG9jIC0+IChsYWJlbCBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICAgIHZhcnM6bGFiZWwgbG9jIGxpc3QgLT5cbiAgICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgZW5kXG5cbiAgdmFsIHBwYXRfY29uc3RydWN0IDogbG9uZ2lkZW50IGxvYyAtPiBwYXR0ZXJuIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuZW5kXG5cbm1vZHVsZSBNYWtlIChMb2MgOiBzaWdcbiAgdmFsIGxvYyA6IExvY2F0aW9uLnRcbmVuZCkgOiBTID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYylcblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYykgLS0tLS0qKVxuXG4gIGxldCBwcGF0X2NvbnN0cnVjdCBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0ID0gRGVmYXVsdC5wc3RyX3ZhbHVlX2xpc3RcblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfIH5tYW5pZmVzdCA9XG4gICAgRGVmYXVsdC5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlX1xuICAgICAgfm1hbmlmZXN0XG5cbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmF1bHQuTG9jYXRlZFxuXG4gICAgbGV0IGxvYyBfID0gTG9jLmxvY1xuICAgIGxldCBtayB4ID0gbWsgfmxvYzpMb2MubG9jIHhcbiAgICBsZXQgbGlkZW50IHggPSBsaWRlbnQgfmxvYzpMb2MubG9jIHhcbiAgZW5kXG5cbiAgbGV0IHBleHBfdHVwbGUgbCA9IERlZmF1bHQucGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgbCA9IERlZmF1bHQucHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgbCA9IERlZmF1bHQucHR5cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBleHBfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBleHBfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZV9vcHQgbCA9IERlZmF1bHQucHBhdF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwdHlwX3BvbHkgdmFycyB0eSA9IERlZmF1bHQucHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuICBsZXQgcGV4cF9hcHBseSBlIGVsID0gRGVmYXVsdC5wZXhwX2FwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWludCB0ID0gRGVmYXVsdC5laW50IH5sb2MgdFxuICBsZXQgZWNoYXIgdCA9IERlZmF1bHQuZWNoYXIgfmxvYyB0XG4gIGxldCBlc3RyaW5nIHQgPSBEZWZhdWx0LmVzdHJpbmcgfmxvYyB0XG4gIGxldCBlZmxvYXQgdCA9IERlZmF1bHQuZWZsb2F0IH5sb2MgdFxuICBsZXQgZWludDMyIHQgPSBEZWZhdWx0LmVpbnQzMiB+bG9jIHRcbiAgbGV0IGVpbnQ2NCB0ID0gRGVmYXVsdC5laW50NjQgfmxvYyB0XG4gIGxldCBlbmF0aXZlaW50IHQgPSBEZWZhdWx0LmVuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBlYm9vbCB0ID0gRGVmYXVsdC5lYm9vbCB+bG9jIHRcbiAgbGV0IGV2YXIgdCA9IERlZmF1bHQuZXZhciB+bG9jIHRcbiAgbGV0IHBpbnQgdCA9IERlZmF1bHQucGludCB+bG9jIHRcbiAgbGV0IHBjaGFyIHQgPSBEZWZhdWx0LnBjaGFyIH5sb2MgdFxuICBsZXQgcHN0cmluZyB0ID0gRGVmYXVsdC5wc3RyaW5nIH5sb2MgdFxuICBsZXQgcGZsb2F0IHQgPSBEZWZhdWx0LnBmbG9hdCB+bG9jIHRcbiAgbGV0IHBpbnQzMiB0ID0gRGVmYXVsdC5waW50MzIgfmxvYyB0XG4gIGxldCBwaW50NjQgdCA9IERlZmF1bHQucGludDY0IH5sb2MgdFxuICBsZXQgcG5hdGl2ZWludCB0ID0gRGVmYXVsdC5wbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgcGJvb2wgdCA9IERlZmF1bHQucGJvb2wgfmxvYyB0XG4gIGxldCBwdmFyIHQgPSBEZWZhdWx0LnB2YXIgfmxvYyB0XG4gIGxldCBldW5pdCA9IERlZmF1bHQuZXVuaXQgfmxvY1xuICBsZXQgcHVuaXQgPSBEZWZhdWx0LnB1bml0IH5sb2NcbiAgbGV0IGVjb25zdHJ1Y3QgPSBEZWZhdWx0LmVjb25zdHJ1Y3RcbiAgbGV0IHBjb25zdHJ1Y3QgPSBEZWZhdWx0LnBjb25zdHJ1Y3RcbiAgbGV0IGVhcHBseSBlIGVsID0gRGVmYXVsdC5lYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlYWJzdHJhY3QgcHMgZSA9IERlZmF1bHQuZWFic3RyYWN0IH5sb2MgcHMgZVxuICBsZXQgZXNlcXVlbmNlIGVsID0gRGVmYXVsdC5lc2VxdWVuY2UgfmxvYyBlbFxuICBsZXQgZWxpc3QgbCA9IERlZmF1bHQuZWxpc3QgfmxvYyBsXG4gIGxldCBwbGlzdCBsID0gRGVmYXVsdC5wbGlzdCB+bG9jIGxcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiBhcmdzID1cbiAgICBEZWZhdWx0LnR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZiBhcmdzXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IGlkZW50IH5mID1cbiAgICBEZWZhdWx0LnVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmZcblxuICBsZXQgZXRhX3JlZHVjZSA9IERlZmF1bHQuZXRhX3JlZHVjZVxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSA9IERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgPVxuICAgIERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG5lbmRcblxubGV0IG1ha2UgbG9jID1cbiAgKG1vZHVsZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgbG9jID0gbG9jXG4gIGVuZCkgOiBTKVxuIiwiKCoqIFNtYWxsIGhlbHBlciB0byBmaW5kIG91dCB3aG8gaXMgdGhlIGNhbGxlciBvZiBhIGZ1bmN0aW9uICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFByaW50ZXhjID0gU3RkbGliLlByaW50ZXhjXG5cbnR5cGUgdCA9IFByaW50ZXhjLmxvY2F0aW9uIG9wdGlvblxuXG5sZXQgZ2V0IH5za2lwID1cbiAgbGV0IHNraXAgPSBfX0ZJTEVfXyA6OiBza2lwIGluXG4gIGxldCBzdGFjayA9IFByaW50ZXhjLmdldF9jYWxsc3RhY2sgMTYgaW5cbiAgbGV0IGxlbiA9IFByaW50ZXhjLnJhd19iYWNrdHJhY2VfbGVuZ3RoIHN0YWNrIGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA9IGxlbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90IHN0YWNrIHBvc1xuICAgICAgICB8PiBQcmludGV4Yy5jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCB8PiBQcmludGV4Yy5TbG90LmxvY2F0aW9uXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGxvYyAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIH5zZXQ6c2tpcCBsb2MuZmlsZW5hbWUgdGhlbiBsb29wIChwb3MgKyAxKSBlbHNlIFNvbWUgbG9jXG4gIGluXG4gIGxvb3AgMFxuIiwiKCoqIEhlbHBlcnMgdG8gcHJvdmlkZSBoaW50cyB0byBQUFggdXNlcnMgZm9yIHR5cG9zIG9yIHNwZWxsY2hlY2tzLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEN1dG9mZl9tZXRcblxuKCogQXMgZm91bmQgaGVyZSBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2UjT0NhbWwgKilcbmxldCBsZXZlbnNodGVpbl9kaXN0YW5jZSBzIHQgY3V0b2ZmID1cbiAgbGV0IG0gPSBTdHJpbmcubGVuZ3RoIHMgYW5kIG4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgaWYgY3V0b2ZmID0gMCB8fCBhYnMgKG0gLSBuKSA+PSBjdXRvZmYgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBmb3IgYWxsIGkgYW5kIGosIGQuKGkpLihqKSB3aWxsIGhvbGQgdGhlIExldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlXG4gICAgICAgZmlyc3QgaSBjaGFyYWN0ZXJzIG9mIHMgYW5kIHRoZSBmaXJzdCBqIGNoYXJhY3RlcnMgb2YgdCAqKVxuICAgIGxldCBkID0gQXJyYXkubWFrZV9tYXRyaXggfmRpbXg6KG0gKyAxKSB+ZGlteToobiArIDEpIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbSBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBmaXJzdCBzdHJpbmcgdG8gYW4gZW1wdHkgc2Vjb25kIHN0cmluZyAqKVxuICAgICAgZC4oaSkuKDApIDwtIGlcbiAgICBkb25lO1xuICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IHNlY29uZCBzdHJpbmcgdG8gYW4gZW1wdHkgZmlyc3Qgc3RyaW5nICopXG4gICAgICBkLigwKS4oaikgPC0galxuICAgIGRvbmU7XG4gICAgKCogdGhlIG1pbmltdW0gb2YgZWFjaCBsaW5lIHRvZ2V0aGVyIHdpdGggdGhlIGNvbHVtbiBpbmRleCB3aWxsIGJlIHVzZWRcbiAgICAgICB0byBub3RpY2UgY3V0b2ZmIGV4Y2VlZGluZyBhbmQgcmV0dXJuIGVhcmx5IGluIHRoYXQgY2FzZSAqKVxuICAgIGxldCBsaW5lX21pbiA9IHJlZiAwIGluXG4gICAgbGV0IGRpc3RhbmNlID1cbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlmICFsaW5lX21pbiA+PSBjdXRvZmYgLSAxICYmIGogPj0gY3V0b2ZmIC0gMSB0aGVuIHJhaXNlIEN1dG9mZl9tZXQ7XG4gICAgICAgICAgbGluZV9taW4gOj0gbWF4IG0gbjtcbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbSBkb1xuICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBzLltpIC0gMV0gdC5baiAtIDFdIHRoZW4gZC4oaSAtIDEpLihqIC0gMSlcbiAgICAgICAgICAgICAgICAoKiBubyBvcGVyYXRpb24gcmVxdWlyZWQgKilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1pblxuICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaikgKyAxKSAoKiBhIGRlbGV0aW9uICopXG4gICAgICAgICAgICAgICAgICAobWluXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSkuKGogLSAxKSArIDEpICgqIGFuIGluc2VydGlvbiAqKVxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaiAtIDEpICsgMSkgKCogYSBzdWJzdGl0dXRpb24gKikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZC4oaSkuKGopIDwtIHZhbHVlO1xuICAgICAgICAgICAgbGluZV9taW4gOj0gbWluICFsaW5lX21pbiB2YWx1ZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgZC4obSkuKG4pIDwgY3V0b2ZmIHRoZW4gU29tZSBkLihtKS4obikgZWxzZSBOb25lXG4gICAgICB3aXRoIEN1dG9mZl9tZXQgLT4gTm9uZVxuICAgIGluXG4gICAgZGlzdGFuY2VcblxubGV0IHNwZWxsY2hlY2sgbmFtZXMgbmFtZSA9XG4gIGxldCBjdXRvZmYgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggbmFtZSB3aXRoXG4gICAgfCAxIHwgMiAtPiAwXG4gICAgfCAzIHwgNCAtPiAxXG4gICAgfCA1IHwgNiAtPiAyXG4gICAgfCBfIC0+IDNcbiAgaW5cbiAgbGV0IF8sIHN1Z2dlc3Rpb25zID1cbiAgICBMaXN0LmZvbGRfbGVmdCBuYW1lcyB+aW5pdDooSW50Lm1heF9pbnQsIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgICgoYmVzdF9kaXN0YW5jZSwgbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkgYXMgYWNjKSByZWdpc3RlcmVkX25hbWUgLT5cbiAgICAgICAgbWF0Y2ggbGV2ZW5zaHRlaW5fZGlzdGFuY2UgbmFtZSByZWdpc3RlcmVkX25hbWUgY3V0b2ZmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZGlzdCAtPlxuICAgICAgICAgICAgaWYgZGlzdCA8IGJlc3RfZGlzdGFuY2UgdGhlbiAoZGlzdCwgWyByZWdpc3RlcmVkX25hbWUgXSlcbiAgICAgICAgICAgIGVsc2UgaWYgZGlzdCA+IGJlc3RfZGlzdGFuY2UgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKGRpc3QsIHJlZ2lzdGVyZWRfbmFtZSA6OiBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgc3VnZ2VzdGlvbnMgfD4gTGlzdC5maWx0ZXIgfmY6KFN0cmluZy4oIDw+ICkgbmFtZSkgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBsYXN0IDo6IHJldl9yZXN0IC0+XG4gICAgICBTb21lXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIkhpbnQ6IERpZCB5b3UgbWVhbiAlcyVzJXM/XCJcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QucmV2IHJldl9yZXN0KSlcbiAgICAgICAgICAgKGlmIExpc3QuaXNfZW1wdHkgcmV2X3Jlc3QgdGhlbiBcIlwiIGVsc2UgXCIgb3IgXCIpXG4gICAgICAgICAgIGxhc3QpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZiA9XG4gIGxldCByZWMgY29sbGFwc2VfYWZ0ZXJfYXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHBhcnQpKSAmJiBDaGFyLmVxdWFsIHBhcnQuWzBdICdAJyB0aGVuXG4gICAgICAgICAgWyBTdHJpbmcuY29uY2F0IChTdHJpbmcuZHJvcF9wcmVmaXggcGFydCAxIDo6IHBhcnRzKSB+c2VwOlwiLlwiIF1cbiAgICAgICAgZWxzZSBwYXJ0IDo6IGNvbGxhcHNlX2FmdGVyX2F0IHBhcnRzXG4gIGluXG4gIGxldCByZWMgbG9vcCBhY2MgcGFydHMgPVxuICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBsb29wIChmIChTdHJpbmcuY29uY2F0IChwYXJ0IDo6IHBhcnRzKSB+c2VwOlwiLlwiKSBhY2MpIHBhcnRzXG4gIGluXG4gIFN0cmluZy5zcGxpdF9vbl9jaGFyIG5hbWUgfnNlcDonLicgfD4gY29sbGFwc2VfYWZ0ZXJfYXQgfD4gbG9vcCBhY2NcblxubGV0IGRvdF9zdWZmaXhlcyBuYW1lID1cbiAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDpbXSB+ZjooZnVuIHggYWNjIC0+IHggOjogYWNjKVxuXG5sZXQgc3BsaXRfcGF0aCA9XG4gIGxldCByZWMgbG9vcCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGggJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSkgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGFuZCBhZnRlcl9kb3QgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnQScgLi4gJ1onIC0+IChTdHJpbmcucHJlZml4IHMgKGkgLSAxKSwgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHMgaSkpXG4gICAgICB8ICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpXG4gICAgICB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgaW5cbiAgZnVuIHMgLT4gbG9vcCBzIDBcblxubW9kdWxlIFBhdHRlcm4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBuYW1lIDogc3RyaW5nOyBkb3Rfc3VmZml4ZXMgOiBTdHJpbmcuU2V0LnQgfVxuXG4gIGxldCBtYWtlIG5hbWUgPVxuICAgIHsgbmFtZTsgZG90X3N1ZmZpeGVzID0gU3RyaW5nLlNldC5vZl9saXN0IChkb3Rfc3VmZml4ZXMgbmFtZSkgfVxuXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IG1hdGNoZXMgdCBtYXRjaGVkID0gU3RyaW5nLlNldC5tZW0gbWF0Y2hlZCB0LmRvdF9zdWZmaXhlc1xuZW5kXG5cbigqIE9uIHRoZSBuYW1lc3BhY2UgXCJhLk5BTUVTUEFDRVwiLCByZXR1cm4gdGhlIHBhaXIgKFwiYVwiLCBOQU1FU1BBQ0UpICopXG5sZXQgc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgPVxuICBtYXRjaCBTdHJpbmcuaW5kZXhfb3B0IG5hbWUgJy4nIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIGluXG4gICAgICBsZXQgYmVmb3JlX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOjAgfmxlbjppIGluXG4gICAgICBsZXQgYWZ0ZXJfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6KGkgKyAxKSB+bGVuOihuIC0gaSAtIDEpIGluXG4gICAgICBTb21lIChiZWZvcmVfZG90LCBhZnRlcl9kb3QpXG5cbm1vZHVsZSBBbGxvd2xpc3RlZCA9IHN0cnVjdFxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYXMgd2VsbCBhcyBhbGwgdGhlaXIgZG90IHN1ZmZpeGVzLlxuXG4gICAgIFNpbmNlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cblxuICAgICBTYWRseSwgdGhlIGNvbXBpbGVyIHNpbGVudGx5IGlnbm9yZXMgdGhlbSBpZiB0aGV5IGFyZSBtaXNwbGFjZWQuLi5cbiAgKilcbiAgbGV0IGNyZWF0ZV9zZXQgZnVsbHlfcXVhbGlmaWVkX25hbWVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgfmY6KGZ1biBhY2MgbmFtZSAtPlxuICAgICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZjooZnVuIHggYWNjIC0+IFN0cmluZy5TZXQuYWRkIHggYWNjKSlcbiAgICAgIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgZnVsbHlfcXVhbGlmaWVkX25hbWVzXG5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGNyZWF0ZV9zZXRcbiAgICAgIFtcbiAgICAgICAgXCJvY2FtbC5hbGVydFwiO1xuICAgICAgICBcIm9jYW1sLmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRfbXV0YWJsZVwiO1xuICAgICAgICBcIm9jYW1sLmRvY1wiO1xuICAgICAgICBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZVwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZTY0XCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lXCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lZFwiO1xuICAgICAgICBcIm9jYW1sLmxvY2FsXCI7XG4gICAgICAgIFwib2NhbWwubm9hbGxvY1wiO1xuICAgICAgICBcIm9jYW1sLnBwd2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnJlbW92ZV9hbGlhc2VzXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZVwiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VkXCI7XG4gICAgICAgIFwib2NhbWwudGFpbGNhbGxcIjtcbiAgICAgICAgXCJvY2FtbC50ZXh0XCI7XG4gICAgICAgIFwib2NhbWwudW5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbGVkXCI7XG4gICAgICAgIFwib2NhbWwudW50YWdnZWRcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuX29uX2xpdGVyYWxfcGF0dGVyblwiO1xuICAgICAgICBcIm9jYW1sLndhcm5lcnJvclwiO1xuICAgICAgICBcIm9jYW1sLndhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC50b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgICBcInRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICBdXG5cbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnMuXG5cbiAgICAgU2luY2UgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuICAqKVxuICBsZXQgZXh0ZW5zaW9ucyA9IGNyZWF0ZV9zZXQgWyBcIm9jYW1sLmVycm9yXCI7IFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCIgXVxuXG4gIGxldCBpc19hbGxvd2xpc3RlZCB+a2luZCBuYW1lID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBdHRyaWJ1dGUgLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBhdHRyaWJ1dGVzXG4gICAgfCBgRXh0ZW5zaW9uIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgZXh0ZW5zaW9uc1xuXG4gIGxldCBnZXRfYXR0cmlidXRlX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGF0dHJpYnV0ZXNcbiAgbGV0IGdldF9leHRlbnNpb25fbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgZXh0ZW5zaW9uc1xuZW5kXG5cbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gc3RydWN0XG4gIHR5cGUgcmVzZXJ2ZWQgPSAoc3RyaW5nLCBzdWJfbmFtZXNwYWNlcykgSGFzaHRibC50XG4gIGFuZCBzdWJfbmFtZXNwYWNlcyA9IEFsbCB8IFN1Yl9uYW1lc3BhY2VzIG9mIHJlc2VydmVkXG5cbiAgKCogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW0FsbF0sIHRoZW4gXCJ4XCIgYW5kIGFsbCBwYXRocyB0aGF0XG4gICAqIHN0YXJ0IHdpdGggXCJ4LlwiIGFyZSByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibF1cbiAgICpcbiAgICogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW1N1Yl9uYW1lc3BhY2VzIHRibCddLCBhbmQgUCBpc1xuICAgKiByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibCddLCB0aGVuIGFsbCBwYXRocyBcInguUFwiIGFyZSByZXNlcnZlZCB3aXRoXG4gICAqIHJlc3BlY3QgdG8gW3RibF0uXG4gICAqKVxuICBsZXQgY3JlYXRlX3Jlc2VydmVkICgpIDogcmVzZXJ2ZWQgPSBIYXNodGJsLmNyZWF0ZSAxNlxuXG4gIGxldCByZWMgcmVzZXJ2ZSBucyB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBucyB3aXRoXG4gICAgfCBOb25lIC0+IEhhc2h0YmwuYWRkX2V4biB0YmwgfmtleTpucyB+ZGF0YTpBbGxcbiAgICB8IFNvbWUgKG91dGVyX25zLCByZXN0X25zKSAtPiAoXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaHRibC5maW5kX29yX2FkZCB0Ymwgb3V0ZXJfbnMgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBTdWJfbmFtZXNwYWNlcyAoY3JlYXRlX3Jlc2VydmVkICgpKSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsIC0+IHJlc2VydmUgcmVzdF9ucyByZXN0X3RibFxuICAgICAgICB8IEFsbCAtPiAoKSlcblxuICBsZXQgcmVjIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgKG5zLCByZXN0KSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5zIHdpdGhcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyByZXN0X3RibCkgLT5cbiAgICAgICAgICAgIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgcmVzdCByZXN0X3RibFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlKVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyBfKSB8IE5vbmUgLT4gZmFsc2UpXG5cbiAgbGV0IHRibCA9IGNyZWF0ZV9yZXNlcnZlZCAoKVxuICBsZXQgcmVzZXJ2ZSBucyA9IHJlc2VydmUgbnMgdGJsXG4gIGxldCBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgPSBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXJsaW5cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVhc29uXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlZm10XCIgKCogcmVhc29uICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJuc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZXNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibWV0YW9jYW1sXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm9jYW1sZm9ybWF0XCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInBweGxpYi5taWdyYXRpb25cIlxuXG4gIGxldCBjaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZSA9XG4gICAgbGV0IGtpbmQsIGxpc3QgPVxuICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICB8IGBBdHRyaWJ1dGUgLT4gKFwiYXR0cmlidXRlXCIsIEFsbG93bGlzdGVkLmF0dHJpYnV0ZXMpXG4gICAgICB8IGBFeHRlbnNpb24gLT4gKFwiZXh0ZW5zaW9uXCIsIEFsbG93bGlzdGVkLmV4dGVuc2lvbnMpXG4gICAgaW5cbiAgICBpZiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGxpc3QgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0IG1hdGNoZXMgYW4gJXMgcmVzZXJ2ZWQgYnkgdGhlIFxcXG4gICAgICAgICBjb21waWxlclwiXG4gICAgICAgIGtpbmQgbmFtZSBraW5kXG4gICAgZWxzZSBpZiBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0cyBuYW1lc3BhY2UgaXMgbWFya2VkIGFzIFxcXG4gICAgICAgICByZXNlcnZlZFwiXG4gICAgICAgIGtpbmQgbmFtZVxuZW5kXG5cbmxldCBpZ25vcmVfY2hlY2tzIG5hbWUgPVxuICBSZXNlcnZlZF9uYW1lc3BhY2VzLmlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZVxuICB8fCBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpcIl9cIlxuXG5tb2R1bGUgUmVnaXN0cmFyID0gc3RydWN0XG4gIHR5cGUgZWxlbWVudCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgOiBzdHJpbmc7IGRlY2xhcmVkX2F0IDogQ2FsbGVyX2lkLnQgfVxuICB0eXBlIGFsbF9mb3JfY29udGV4dCA9IHsgbXV0YWJsZSBhbGwgOiBlbGVtZW50IFN0cmluZy5NYXAudCB9XG5cbiAgdHlwZSAnYSB0ID0ge1xuICAgIGFsbF9ieV9jb250ZXh0IDogKCdhLCBhbGxfZm9yX2NvbnRleHQpIEhhc2h0YmwudDtcbiAgICBza2lwIDogc3RyaW5nIGxpc3Q7XG4gICAga2luZCA6IHN0cmluZztcbiAgICBzdHJpbmdfb2ZfY29udGV4dCA6ICdhIC0+IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgY3JlYXRlIH5raW5kIH5jdXJyZW50X2ZpbGUgfnN0cmluZ19vZl9jb250ZXh0ID1cbiAgICB7XG4gICAgICBhbGxfYnlfY29udGV4dCA9IEhhc2h0YmwuY3JlYXRlIDE2O1xuICAgICAgc2tpcCA9IFsgY3VycmVudF9maWxlOyBfX0ZJTEVfXyBdO1xuICAgICAga2luZDtcbiAgICAgIHN0cmluZ19vZl9jb250ZXh0O1xuICAgIH1cblxuICBsZXQgZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgPVxuICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5hbGxfYnlfY29udGV4dCBjb250ZXh0IH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgeyBhbGwgPSBTdHJpbmcuTWFwLmVtcHR5IH0pXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lID1cbiAgICBtYXRjaCBTdHJpbmcuTWFwLmZpbmRfb3B0IG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGUgLT5cbiAgICAgICAgbGV0IGRlY2xhcmVkX2F0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobG9jIDogU3RkbGliLlByaW50ZXhjLmxvY2F0aW9uKSAtPlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiBkZWNsYXJlZCBhdCAlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnRleHQgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgcyAtPiBcIiBvbiBcIiBeIHMgXiBcInNcIlxuICAgICAgICBpblxuICAgICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgICBcIlNvbWUgcHB4LWVzIHRyaWVkIHRvIHJlZ2lzdGVyIGNvbmZsaWN0aW5nIHRyYW5zZm9ybWF0aW9uczogJXMgXFxcbiAgICAgICAgICAgJyVzJyVzJXMgbWF0Y2hlcyAlcyAnJXMnJXNcIlxuICAgICAgICAgIChTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaSB0LmtpbmQpXG4gICAgICAgICAgbmFtZSBjb250ZXh0IChkZWNsYXJlZF9hdCBjYWxsZXIpIHQua2luZCBlLmZ1bGx5X3F1YWxpZmllZF9uYW1lXG4gICAgICAgICAgKGRlY2xhcmVkX2F0IGUuZGVjbGFyZWRfYXQpXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnMgdCBjb250ZXh0IG5hbWUgPVxuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lXG5cbiAgbGV0IHJlZ2lzdGVyIH5raW5kIHQgY29udGV4dCBuYW1lID1cbiAgICBSZXNlcnZlZF9uYW1lc3BhY2VzLmNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lO1xuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGwgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0OmFsbCB0IGNvbnRleHQgbmFtZTtcbiAgICBsZXQgdCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgPSBuYW1lOyBkZWNsYXJlZF9hdCA9IGNhbGxlciB9IGluXG4gICAgYWxsLmFsbCA8LVxuICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphbGwuYWxsIH5mOihmdW4gbmFtZSBhY2MgLT5cbiAgICAgICAgICBTdHJpbmcuTWFwLmFkZCBuYW1lIHQgYWNjKVxuXG4gIGxldCBzcGVsbGNoZWNrIHQgY29udGV4dCA/KGFsbG93bGlzdCA9IFtdKSBuYW1lID1cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBsZXQgYWxsID1cbiAgICAgIFN0cmluZy5NYXAuZm9sZCAoZnVuIGtleSBfIGFjYyAtPiBrZXkgOjogYWNjKSBhbGxfZm9yX2NvbnRleHQuYWxsIFtdXG4gICAgaW5cbiAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKGFsbCBAIGFsbG93bGlzdCkgbmFtZSB3aXRoXG4gICAgfCBTb21lIF8gYXMgeCAtPiB4XG4gICAgfCBOb25lIHdoZW4gU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIC0+IE5vbmVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBsZXQgb3RoZXJfY29udGV4dHMgPVxuICAgICAgICAgIEhhc2h0YmwuZm9sZFxuICAgICAgICAgICAgKGZ1biBjdHggYWxsX2Zyb21fY29udGV4dCBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBQb2x5LiggPD4gKSBjb250ZXh0IGN0eFxuICAgICAgICAgICAgICAgICYmIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zyb21fY29udGV4dC5hbGxcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY3R4IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHMgLT4gKHMgXiBcInNcIikgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2UgYWNjKVxuICAgICAgICAgICAgdC5hbGxfYnlfY29udGV4dCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHBfdGV4dCA9IEZvcm1hdC5wcF9wcmludF90ZXh0IGluXG4gICAgICAgIGxldCBjdXJyZW50X2NvbnRleHQgcHBmID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgIGxldCBhX29yX2FuID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgfCAneScgLT4gXCJhblwiXG4gICAgICAgICAgICAgICAgfCBfIC0+IFwiYVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICAgICAgICAgIFwiQCBidXRAIGlzQCB1c2VkQCBoZXJlQCBpbkAgdGhlQCBjb250ZXh0QCBvZkAgJXNAICVhXCIgYV9vcl9hblxuICAgICAgICAgICAgICAgIHBwX3RleHQgc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3Quc29ydCB+Y21wOihmdW4geCB5IC0+IC1TdHJpbmcuY29tcGFyZSB4IHkpIG90aGVyX2NvbnRleHRzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgWyBjIF0gLT5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWUgcHBfdGV4dCBjXG4gICAgICAgICAgICAgICAgIGN1cnJlbnRfY29udGV4dClcbiAgICAgICAgfCBsYXN0IDo6IHJldl9vdGhlcnMgLT5cbiAgICAgICAgICAgIGxldCBvdGhlcnMgPSBMaXN0LnJldiByZXZfb3RoZXJzIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhQCBhbmRAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lXG4gICAgICAgICAgICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCBwcF90ZXh0IH5wcF9zZXA6KGZ1biBwcGYgKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIikpXG4gICAgICAgICAgICAgICAgIG90aGVycyBwcF90ZXh0IGxhc3QgY3VycmVudF9jb250ZXh0KSlcblxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICAoKiBUT0RPOiBoaW50IHNwZWxsaW5nIGVycm9ycyByZWdhcmRpbmcgcmVzZXJ2ZWQgbmFtZXNwYWNlcyBuYW1lcyBhbmQgYWxsb3dsaXN0ZWRcbiAgICAgICBuYW1lcyBpbnN0ZWFkIG9mIHRha2luZyBhbiBvcHRpb25hbCBbYWxsb3dsaXN0XSBwYXJhbWV0ZXIuICopXG4gICAgbGV0IGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBzcGVsbGNoZWNrIHQgY29udGV4dCBuYW1lLnR4dCA/YWxsb3dsaXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXNcIiBtc2dcbiAgICAgICAgICB8IFNvbWUgcyAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlcy5cXG4lc1wiIG1zZyBzKVxuICAgICAgICBmbXQgbmFtZS50eHRcblxuICAgIGxldCByYWlzZV9lcnJvcmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci5yYWlzZSBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG5cbiAgICBsZXQgZXJyb3JfZXh0ZW5zaW9uZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG4gIGVuZFxuXG4gIGxldCByYWlzZV9lcnJvcmYgPSBFcnJvci5yYWlzZV9lcnJvcmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBCdWZmZXIgPSBTdGRsaWIuQnVmZmVyXG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgbGlkZW50IHggPSBMb25naWRlbnQuTGlkZW50IHhcblxubGV0IGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkID1cbiAgbGV0IGxvYyA9IHRkLnB0eXBlX25hbWUubG9jIGluXG4gIHB0eXBfY29uc3RyIH5sb2NcbiAgICAoTG9jYXRlZC5tYXAgbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgKExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+Zjpmc3QpXG5cbmxldCBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCA9XG4gIGxldCBjaG9wIG4gfm9yX21vcmUgc3RyaW5nIHBvcyBmID1cbiAgICBsZXQgdGFyZ2V0ID0gIXBvcyAtIG4gaW5cbiAgICB3aGlsZSAhcG9zID4gMCAmJiAob3JfbW9yZSB8fCAhcG9zID4gdGFyZ2V0KSAmJiBmIHN0cmluZy5bIXBvcyAtIDFdIGRvXG4gICAgICBwb3MgOj0gIXBvcyAtIDFcbiAgICBkb25lO1xuICAgICFwb3MgPD0gdGFyZ2V0XG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBsZXQgcG9zID0gcmVmIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBpZlxuICAgICAgY2hvcCAxIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgICAgJiYgY2hvcCAzIH5vcl9tb3JlOnRydWUgc3RyaW5nIHBvcyAoZnVuY3Rpb25cbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgY2hvcCAyIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgIHRoZW4gU3RyaW5nLnByZWZpeCBzdHJpbmcgIXBvc1xuICAgIGVsc2Ugc3RyaW5nXG5cbmxldCBnZW5fc3ltYm9sID1cbiAgbGV0IGNudCA9IHJlZiAwIGluXG4gIGZ1biA/KHByZWZpeCA9IFwiX3hcIikgKCkgLT5cbiAgICBjbnQgOj0gIWNudCArIDE7XG4gICAgbGV0IHByZWZpeCA9IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4IHByZWZpeCBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXNfXyUwM2lfXCIgcHJlZml4ICFjbnRcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDpcbiAgICAodHlwZV9kZWNsYXJhdGlvbiwgXykgcmVzdWx0ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBwcmVmaXhfc3RyaW5nIGkgPVxuICAgICgqIGEsIGIsIC4uLiwgeSwgeiwgYWEsIGJiLCAuLi4gKilcbiAgICBTdHJpbmcubWFrZSAoKGkgLyAyNikgKyAxKSAoQ2hhci5jaHIgKENoYXIuY29kZSAnYScgKyAoaSBtb2QgMjYpKSlcbiAgaW5cbiAgbGV0IG5hbWVfcGFyYW0gaSAodHAsIHZhcmlhbmNlKSA9XG4gICAgKG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBPayAoUHR5cF92YXIgKGdlbl9zeW1ib2wgfnByZWZpeDoocHJlZml4X3N0cmluZyBpKSAoKSkpXG4gICAgfCBQdHlwX3ZhciBfIGFzIHYgLT4gT2sgdlxuICAgIHwgXyAtPlxuICAgICAgICBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOnRwLnB0eXBfbG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIikpXG4gICAgPj58IGZ1biBwdHlwX2Rlc2MgLT4gKHsgdHAgd2l0aCBwdHlwX2Rlc2MgfSwgdmFyaWFuY2UpXG4gIGluXG4gIGxldCBwdHlwZV9wYXJhbXMsIGVycm9ycyA9XG4gICAgdGQucHR5cGVfcGFyYW1zIHw+IExpc3QubWFwaSB+ZjpuYW1lX3BhcmFtXG4gICAgfD4gTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvblxuICAgICAgICAgfCBPayBvIC0+IEVpdGhlci5MZWZ0IG9cbiAgICAgICAgIHwgRXJyb3IgZSAtPiBFaXRoZXIuUmlnaHQgZSlcbiAgaW5cbiAgbWF0Y2ggZXJyb3JzIHdpdGggW10gLT4gT2sgeyB0ZCB3aXRoIHB0eXBlX3BhcmFtcyB9IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKVxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZCAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6IHR5cGVfZGVjbGFyYXRpb24gPVxuICBtYXRjaCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyB0ZCB3aXRoXG4gIHwgT2sgcmVzIC0+IHJlc1xuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmYgPVxuICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gIGxldCByZXN1bHRfdHlwZSA9XG4gICAgZiB+bG9jOnRkLnB0eXBlX25hbWUubG9jIChjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZClcbiAgaW5cbiAgTGlzdC5mb2xkX3JpZ2h0IHRkLnB0eXBlX3BhcmFtcyB+aW5pdDpyZXN1bHRfdHlwZVxuICAgIH5mOihmdW4gKHRwLCBfdmFyaWFuY2UpIGFjYyAtPlxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBwdHlwX2Fycm93IH5sb2MgTm9sYWJlbCAoZiB+bG9jIHRwKSBhY2MpXG5cbmxldCBzdHJpbmdfb2ZfY29yZV90eXBlIGN0ID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgUHByaW50YXN0LmNvcmVfdHlwZSBwcGYgY3Q7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWVfcmVzICh0eSwgXykgPVxuICBsZXQgbG9jID0gdHkucHR5cF9sb2MgaW5cbiAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgfCBQdHlwX3ZhciBuYW1lIC0+IE9rIChMb2NhdGVkLm1rIH5sb2MgbmFtZSlcbiAgfCBfIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiLCBbXSlcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWUgdCA9XG4gIG1hdGNoIGdldF90eXBlX3BhcmFtX25hbWVfcmVzIHQgd2l0aFxuICB8IE9rIGUgLT4gZVxuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5leGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmVcblxuY2xhc3MgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG4gICAgdmFsIHR5cGVfbmFtZXMgOiBzdHJpbmcgbGlzdCA9IExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KVxuICAgIG1ldGhvZCByZXR1cm5fdHJ1ZSAoKSA9IHJhaXNlX25vdHJhY2UgVHlwZV9pc19yZWN1cnNpdmVcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYXJyb3cgXyAtPiAoKVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IGlkOyBfIH0sIF8pXG4gICAgICAgIHdoZW4gTGlzdC5tZW0gfnNldDp0eXBlX25hbWVzIGlkIC0+XG4gICAgICAgICAgc2VsZiNyZXR1cm5fdHJ1ZSAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCA9XG4gICAgICAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggY2QucGNkX3JlcyAqKVxuICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgfCBQY3N0cl90dXBsZSBhcmdzIC0+IExpc3QuaXRlciBhcmdzIH5mOnNlbGYjY29yZV90eXBlXG4gICAgICB8IFBjc3RyX3JlY29yZCBmaWVsZHMgLT4gTGlzdC5pdGVyIGZpZWxkcyB+ZjpzZWxmI2xhYmVsX2RlY2xhcmF0aW9uXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZXMgXyA9ICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBhdHRyaWJ1dGVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKVxuXG4gICAgbWV0aG9kIGdvICgpID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuaXRlciB0ZHMgfmY6c2VsZiN0eXBlX2RlY2xhcmF0aW9uIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZSAtPiBSZWN1cnNpdmVcbiAgICAgICAgICB8ICgpIC0+IE5vbnJlY3Vyc2l2ZSlcbiAgZW5kXG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9IChuZXcgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzKSNnbyAoKVxubGV0IHJlYyBsYXN0IHggbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiB4IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbmxldCBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQgPVxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyIFtdIC0+IG5hbWUubG9jXG4gIHwgUFN0ciAoeCA6OiBsKSAtPiB7IHgucHN0cl9sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc3RyX2xvYy5sb2NfZW5kIH1cbiAgfCBQU2lnIFtdIC0+IG5hbWUubG9jXG4gIHwgUFNpZyAoeCA6OiBsKSAtPiB7IHgucHNpZ19sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc2lnX2xvYy5sb2NfZW5kIH1cbiAgfCBQVHlwIHQgLT4gdC5wdHlwX2xvY1xuICB8IFBQYXQgKHgsIE5vbmUpIC0+IHgucHBhdF9sb2NcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+IHsgeC5wcGF0X2xvYyB3aXRoIGxvY19lbmQgPSBlLnBleHBfbG9jLmxvY19lbmQgfVxuXG5sZXQgbG9jX29mX3BheWxvYWQgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG5cbmxldCBsb2Nfb2ZfYXR0cmlidXRlIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgKCogVE9ETzogZml4IHRoaXMgaW4gdGhlIGNvbXBpbGVyLCBhbmQgbW92ZSB0aGUgbG9naWMgdG8gb21wIHdoZW4gY29udmVydGluZ1xuICAgICBmcm9tIG9sZGVyIGFzdHMuICopXG4gICgqIFwib2NhbWwuZG9jXCIgYXR0cmlidXRlcyBhcmUgZ2VuZXJhdGVkIHdpdGggW0xvY2F0aW9uLm5vbmVdLCB3aGljaCBpcyBub3QgaGVscGZ1bCBmb3JcbiAgICAgZXJyb3IgbWVzc2FnZXMuICopXG4gIGlmIFBvbHkuKCA9ICkgYXR0cl9uYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW5cbiAgICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG4gIGVsc2VcbiAgICB7XG4gICAgICBhdHRyX25hbWUubG9jIHdpdGhcbiAgICAgIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZCkubG9jX2VuZDtcbiAgICB9XG5cbmxldCBsb2Nfb2ZfZXh0ZW5zaW9uIChuYW1lLCBwYXlsb2FkKSA9XG4gIGlmIFBvbHkuKCA9ICkgbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZFxuICBlbHNlXG4gICAgeyBuYW1lLmxvYyB3aXRoIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkKS5sb2NfZW5kIH1cblxubGV0IGN1cnJ5X2FwcGxpY2F0aW9ucyBleHByID1cbiAgbGV0IG9wZW4gQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfYXBwbHkgKGYsIG9yaWdfZm9yd2FyZF9hcmdzKSAtPlxuICAgICAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gZlxuICAgICAgICB8IGxhc3RfYXJnIDo6IHJldl9mcm9udF9hcmdzIC0+XG4gICAgICAgICAgICBwZXhwX2FwcGx5IH5sb2MgKGxvb3AgcmV2X2Zyb250X2FyZ3MpIFsgbGFzdF9hcmcgXVxuICAgICAgaW5cbiAgICAgIGxvb3AgKExpc3QucmV2IG9yaWdfZm9yd2FyZF9hcmdzKVxuICB8IF8gLT4gZXhwclxuXG5sZXQgYXR0cmlidXRlc19lcnJvcnMgPVxuICBMaXN0LmZpbHRlcl9tYXAgfmY6KGZ1bmN0aW9uXG4gICAgfCB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfbG9jID0gXzsgYXR0cl9wYXlsb2FkID0gXyB9XG4gICAgICB3aGVuIE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLkxvY2F0aW9uLnR4dCAtPlxuICAgICAgICBOb25lXG4gICAgfCBhdHRyIC0+XG4gICAgICAgIGxldCBsb2MgPSBsb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgICAgU29tZSAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlcyBub3QgYWxsb3dlZCBoZXJlXCIpKVxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSBhY2MgPSBhdHRyaWJ1dGVzX2Vycm9ycyBbIGEgXSBAIGFjY1xuICBlbmRcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzIGwgPVxuICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4gPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgPSBhc3NlcnRfbm9fYXR0cmlidXRlcyBbIGEgXVxuICBlbmRcblxubGV0IGF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzID1cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgbG9jOyB0eHQgPSBcIm9jYW1sLnBwd2FybmluZ1wiIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgcykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaXNfcG9seW1vcnBoaWNfdmFyaWFudCA9XG4gIGxldCByZWMgY2hlY2sgPSBmdW5jdGlvblxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgXzsgXyB9IC0+IGBEZWZpbml0ZWx5XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKHR5cCwgXyk7IF8gfSAtPiBjaGVjayB0eXBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgXzsgXyB9IC0+IGBNYXliZVxuICAgIHwgXyAtPiBgU3VyZWx5X25vdFxuICAgICgqIFR5cGUgdmFycyBnbyBoZXJlIGV2ZW4gdGhvdWdoIHRoZXkgY291bGQgYmUgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cywgaG93ZXZlciB3ZSBkb24ndCBoYW5kbGUgaXQgaWYgdGhleSBnZXQgc3Vic3RpdHV0ZWRcbiAgICAgICBieSBhIHBvbHltb3JwaGljIHZhcmlhbnQgdGhhdCBpcyB0aGVuIGluY2x1ZGVkLiAqKVxuICBpblxuICBmdW4gdGQgfnNpZ18gLT5cbiAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX3JlY29yZCBfIHwgUHR5cGVfb3BlbiAtPiBgU3VyZWx5X25vdFxuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpZiBzaWdfIHRoZW4gYE1heWJlIGVsc2UgYFN1cmVseV9ub3RcbiAgICAgICAgfCBTb21lIHR5cCAtPiBjaGVjayB0eXApXG5cbmxldCBta19uYW1lZF9zaWcgfmxvYyB+c2dfbmFtZSB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFsgdGQgXVxuICAgIHdoZW4gU3RyaW5nLmVxdWFsIHRkLnB0eXBlX25hbWUudHh0IFwidFwiICYmIExpc3QuaXNfZW1wdHkgdGQucHR5cGVfY3N0cnMgLT5cbiAgICAgIGlmXG4gICAgICAgIChub3QgaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQpXG4gICAgICAgICYmIFBvbHkuKCA9ICkgKGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSkgYERlZmluaXRlbHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYXJpdHkgPSBMaXN0Lmxlbmd0aCB0ZC5wdHlwZV9wYXJhbXMgaW5cbiAgICAgICAgaWYgYXJpdHkgPj0gNCB0aGVuIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtdHkgPVxuICAgICAgICAgICAgaWYgYXJpdHkgPSAwIHRoZW4gc2dfbmFtZSBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJXMlZFwiIHNnX25hbWUgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICAgICAgICBsZXQgZm9yX3N1YnN0ID1cbiAgICAgICAgICAgIEFzdF9oZWxwZXIuVHlwZS5tayB+bG9jIHRkLnB0eXBlX25hbWUgfnBhcmFtczp0ZC5wdHlwZV9wYXJhbXNcbiAgICAgICAgICAgICAgfm1hbmlmZXN0OlxuICAgICAgICAgICAgICAgIChwdHlwX2NvbnN0ciB+bG9jXG4gICAgICAgICAgICAgICAgICAgKExvY2F0ZWQubWFwX2xpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCB+Zjpmc3QgdGQucHR5cGVfcGFyYW1zKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChpbmNsdWRlX2luZm9zIH5sb2NcbiAgICAgICAgICAgICAgIChwbXR5X3dpdGggfmxvY1xuICAgICAgICAgICAgICAgICAgKHBtdHlfaWRlbnQgfmxvYyAoTG9jYXRlZC5saWRlbnQgbXR5IH5sb2MpKVxuICAgICAgICAgICAgICAgICAgWyBQd2l0aF90eXBlc3Vic3QgKExvY2F0ZWQubGlkZW50IH5sb2MgXCJ0XCIsIGZvcl9zdWJzdCkgXSkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBleG5fdG9fbG9jX2Vycm9yIGV4biA9XG4gIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aCBTb21lIGVycm9yIC0+IGVycm9yIHwgTm9uZSAtPiByYWlzZSBleG5cblxubW9kdWxlIFdpdGhfZXJyb3JzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0XG5cbiAgbGV0IHJldHVybiBlID0gKGUsIFtdKVxuXG4gIGxldCAoID4+PSApICh4LCBlcnJvcnMxKSBmID1cbiAgICBsZXQgeSwgZXJyb3JzMiA9IGYgeCBpblxuICAgICh5LCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICBsZXQgKCA+PnwgKSAoeCwgZXJyb3JzKSBmID0gKGYgeCwgZXJyb3JzKVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgT2sgeCAtPiAoeCwgW10pXG4gICAgfCBFcnJvciBlcnJvcnMgLT4gKGRlZmF1bHQsIE5vbkVtcHR5TGlzdC50b19saXN0IGVycm9ycylcblxuICBsZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IChMaXN0Lm1hcCBsaXN0IH5mOmZzdCwgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6c25kKVxuZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfcGF0dGVybjBcbmxldCBub2xhYmVsID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbGFiZWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbGFiZWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBsYWJlbGxlZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTGFiZWxsZWQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhYmVsbGVkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcHRpb25hbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3B0aW9uYWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9wdGlvbmFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBhdHRyaWJ1dGUgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnBheWxvYWQ6KFQgcGF5bG9hZCkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LmF0dHJfbmFtZSkubG9jICh4LmF0dHJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXlsb2FkIGN0eCBsb2MgeC5hdHRyX3BheWxvYWQgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgYmluZGluZ19vcCB+b3A6KFQgb3ApICA9XG4gICgoZnVuIH5wYXQ6KFQgcGF0KSAtPlxuICAgICAgKChmdW4gfmV4cDooVCBleHApIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBvcCBjdHggKHgucGJvcF9vcCkubG9jICh4LnBib3Bfb3ApLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhdCBjdHggbG9jIHgucGJvcF9wYXQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHAgY3R4IGxvYyB4LnBib3BfZXhwIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNhc2UgfmxoczooVCBsaHMpICA9XG4gICgoZnVuIH5ndWFyZDooVCBndWFyZCkgLT5cbiAgICAgICgoZnVuIH5yaHM6KFQgcmhzKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbGhzIGN0eCBsb2MgeC5wY19saHMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBndWFyZCBjdHggbG9jIHgucGNfZ3VhcmQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSByaHMgY3R4IGxvYyB4LnBjX3JocyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjbF9mdW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICAoKGZ1biAoVCBmMykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9hcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfbGV0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNsX29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9pbmhlcml0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjZl92YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9pbml0aWFsaXplciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbml0aWFsaXplclwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNma192aXJ0dWFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDZmtfdmlydHVhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmlydHVhbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2ZrX2NvbmNyZXRlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IENma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uY3JldGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2lfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNpX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGNsYXNzX2luZm9zIH52aXJ0OihUIHZpcnQpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfm5hbWU6KFQgbmFtZSkgLT5cbiAgICAgICAgICAoKGZ1biB+ZXhwcjooVCBleHByKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IHZpcnQgY3R4IGxvYyB4LnBjaV92aXJ0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnBjaV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGNpX25hbWUpLmxvYyAoeC5wY2lfbmFtZSkudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucGNpX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19zaWduYXR1cmUgfnNlbGY6KFQgc2VsZikgID1cbiAgKChmdW4gfmZpZWxkczooVCBmaWVsZHMpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3NpZ19zZWxmIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc2lnX2ZpZWxkcyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGY6KFQgc2VsZikgID1cbiAgKChmdW4gfmZpZWxkczooVCBmaWVsZHMpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3N0cl9zZWxmIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc3RyX2ZpZWxkcyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3R5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3R5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2NvbnN0ciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0eV9zaWduYXR1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzaWduYXR1cmVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3R5X2Fycm93IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0eV9vcGVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0Zl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0Zl9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfbWV0aG9kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2xvc2VkID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENsb3NlZCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ2xvc2VkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgb3Blbl8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3BlbiAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3BlblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjb25zdF9pbnRlZ2VyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlZ2VyXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNvbnN0X2NoYXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9jaGFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjaGFyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY29uc3Rfc3RyaW5nIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY29uc3RfZmxvYXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmbG9hdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjc3RyX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQY3N0cl90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjc3RyX3JlY29yZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2RfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnZhcnM6KFQgdmFycykgLT5cbiAgICAgICgoZnVuIH5hcmdzOihUIGFyZ3MpIC0+XG4gICAgICAgICAgKChmdW4gfnJlczooVCByZXMpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wY2RfbmFtZSkubG9jICh4LnBjZF9uYW1lKS50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB2YXJzIGN0eCBsb2MgeC5wY2RfdmFycyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYXJncyBjdHggbG9jIHgucGNkX2FyZ3MgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHJlcyBjdHggbG9jIHgucGNkX3JlcyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHB0eXBfYW55ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYW55IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYW55XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfdmFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9hcnJvdyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX29iamVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9iamVjdFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX2NsYXNzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9hbGlhcyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3BvbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicG9seVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3BhY2thZ2UgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicGFja2FnZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdXB0byA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVcHRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVcHRvXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgZG93bnRvXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBEb3dudG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkRvd250b1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBkaXJhX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZGlyX3N0cmluZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9zdHJpbmcgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcl9pbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGRpcl9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBkaXJfYm9vbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9ib29sIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJib29sXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXhwX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbGV0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9mdW5jdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3Rpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2Z1biAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfbWF0Y2ggKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1hdGNoXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdHJ5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9jb25zdHJ1Y3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RydWN0XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdmFyaWFudCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfcmVjb3JkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfZmllbGQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmaWVsZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NldGZpZWxkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGZpZWxkXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfaWZ0aGVuZWxzZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWZ0aGVuZWxzZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9zZXF1ZW5jZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VxdWVuY2VcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF93aGlsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2hpbGVcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9mb3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICAoKGZ1biAoVCBmMykgLT5cbiAgICAgICAgICAgICAgKChmdW4gKFQgZjQpIC0+XG4gICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGY0IGN0eCBsb2MgeDQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZvclwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9jb2VyY2UgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29lcmNlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NlbmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNlbmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9uZXcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfbmV3IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibmV3XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9zZXRpbnN0dmFyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRpbnN0dmFyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfb3ZlcnJpZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm92ZXJyaWRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sZXRtb2R1bGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG1vZHVsZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9sZXRleGNlcHRpb24gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRleGNlcHRpb25cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9hc3NlcnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhc3NlcnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfcG9seSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfb2JqZWN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX29iamVjdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9uZXd0eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXd0eXBlXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfcGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9vcGVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9sZXRvcCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0b3BcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnJlYWNoYWJsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3JfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4dF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmtpbmQ6KFQga2luZCkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBleHRfbmFtZSkubG9jICh4LnBleHRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucGV4dF9raW5kIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXh0X2RlY2wgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWNsXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHRfcmViaW5kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZXh0X3JlYmluZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlYmluZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdW5pdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbml0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVbml0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbmFtZWQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOYW1lZFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGluY2x1ZGVfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGluY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGluY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBpbmNsdWRlX2luZm9zIH5tb2RfOihUIG1vZF8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBtb2RfIGN0eCBsb2MgeC5waW5jbF9tb2QgayBpbiBrKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBpbmplY3RpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgSW5qZWN0aXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbmplY3RpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub2luamVjdGl2aXR5ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vSW5qZWN0aXZpdHlcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBsYWJlbF9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGxkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5tdXRhYmxlXzooVCBtdXRhYmxlXykgLT5cbiAgICAgICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wbGRfbmFtZSkubG9jICh4LnBsZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbXV0YWJsZV8gY3R4IGxvYyB4LnBsZF9tdXRhYmxlIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbGRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGV0b3AgfmxldF86KFQgbGV0XykgID1cbiAgKChmdW4gfmFuZHM6KFQgYW5kcykgLT5cbiAgICAgICgoZnVuIH5ib2R5OihUIGJvZHkpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsZXRfIGN0eCBsb2MgeC5sZXRfIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYW5kcyBjdHggbG9jIHguYW5kcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGJvZHkgY3R4IGxvYyB4LmJvZHkgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbG9jYXRpb24gfnN0YXJ0OihUIHN0YXJ0KSAgPVxuICAoKGZ1biB+ZW5kXzooVCBlbmRfKSAtPlxuICAgICAgKChmdW4gfmdob3N0OihUIGdob3N0KSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gc3RhcnQgY3R4IGxvYyB4LmxvY19zdGFydCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGVuZF8gY3R4IGxvYyB4LmxvY19lbmQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBnaG9zdCBjdHggbG9jIHgubG9jX2dob3N0IGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGxpZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTGlkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMaWRlbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxkb3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTGRvdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGRvdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGxhcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBMYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhcHBseVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG1vZHVsZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtYl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmV4cHI6KFQgZXhwcikgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1iX25hbWUpLmxvYyAoeC5wbWJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucG1iX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbWRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dHlwZV86KFQgdHlwZV8pIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtZF9uYW1lKS5sb2MgKHgucG1kX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbWRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG1vZF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1vZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG1vZF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG1vZF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbW9kX2Z1bmN0b3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3RvclwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2FwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX3VucGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtb2RfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXNfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1zX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1zX25hbWUpLmxvYyAoeC5wbXNfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4ICh4LnBtc19tYW5pZmVzdCkubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgucG1zX21hbmlmZXN0KS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbXR5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXR5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbXR5X2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfZnVuY3RvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfd2l0aCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aXRoXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfdHlwZW9mIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZW9mXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X2FsaWFzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2FsaWFzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXRkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBtdGRfbmFtZSkubG9jICh4LnBtdGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtdGRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgaW1tdXRhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IEltbXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW1tdXRhYmxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbXV0YWJsZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTXV0YWJsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBvZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBvZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9mX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG90YWcgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPdGFnXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBPaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT2luaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcGVuX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvcGVuX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3Blbl9pbmZvcyB+ZXhwcjooVCBleHByKSAgPVxuICAoKGZ1biB+b3ZlcnJpZGU6KFQgb3ZlcnJpZGUpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZXhwciBjdHggbG9jIHgucG9wZW5fZXhwciBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG92ZXJyaWRlIGN0eCBsb2MgeC5wb3Blbl9vdmVycmlkZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgb3ZlcnJpZGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3ZlcnJpZGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk92ZXJyaWRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgZnJlc2ggPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRnJlc2ggLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkZyZXNoXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHBhdF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHBhdF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9hbGlhcyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9pbnRlcnZhbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZXJ2YWxcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2NvbnN0cnVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9yZWNvcmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9hcnJheSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9hcnJheSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyYXlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X29yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvclwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0ciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFN0ciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFN0clwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFNpZyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFNpZ1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFR5cCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFR5cFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQUGF0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQUGF0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG9zaXRpb24gfmZuYW1lOihUIGZuYW1lKSAgPVxuICAoKGZ1biB+bG51bTooVCBsbnVtKSAtPlxuICAgICAgKChmdW4gfmJvbDooVCBib2wpIC0+XG4gICAgICAgICAgKChmdW4gfmNudW06KFQgY251bSkgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZuYW1lIGN0eCBsb2MgeC5wb3NfZm5hbWUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbG51bSBjdHggbG9jIHgucG9zX2xudW0gayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYm9sIGN0eCBsb2MgeC5wb3NfYm9sIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGNudW0gY3R4IGxvYyB4LnBvc19jbnVtIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcml2YXRlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQcml2YXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQcml2YXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHVibGljID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB1YmxpYyAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHVibGljXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbm9ucmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9ucmVjdXJzaXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmVjdXJzaXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHJmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHJmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcmZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcnRhZyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSdGFnXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCByaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUmluaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJpbmhlcml0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc2lnX3ZhbHVlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc2lnX3R5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfdHlwZXh0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ190eXBleHQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGV4dFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfY2xhc3MgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2NsYXNzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19jbGFzc190eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc190eXBlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfZXh0ZW5zaW9uIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzdHJfZXZhbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV2YWxcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3ZhbHVlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbHVlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0cl9wcmltaXRpdmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicHJpbWl0aXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0cl90eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfb3BlbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfb3BlbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2V4dGVuc2lvbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5hcmc6KFQgYXJnKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHgucGRpcl9uYW1lKS5sb2MgKHgucGRpcl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGFyZyBjdHggbG9jIHgucGRpcl9hcmcgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHRvcF9kZWYgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0b3BfZGVmIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWZcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0b3BfZGlyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdG9wX2RpciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGlyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB0eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBlX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+cGFyYW1zOihUIHBhcmFtcykgLT5cbiAgICAgICgoZnVuIH5jc3RyczooVCBjc3RycykgLT5cbiAgICAgICAgICAoKGZ1biB+a2luZDooVCBraW5kKSAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV86KFQgcHJpdmF0ZV8pIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wdHlwZV9uYW1lKS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgucHR5cGVfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMgY3R4IGxvYyB4LnB0eXBlX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBjc3RycyBjdHggbG9jIHgucHR5cGVfY3N0cnMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucHR5cGVfa2luZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eXBlX3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0IGN0eCBsb2MgeC5wdHlwZV9tYW5pZmVzdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB0eXBlX2V4Y2VwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleG5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXhjZXB0aW9uIH5jb25zdHJ1Y3RvcjooVCBjb25zdHJ1Y3RvcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBjb25zdHJ1Y3RvciBjdHggbG9jIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGsgaW4gaykpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdHlwZV9leHRlbnNpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5ZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2V4dGVuc2lvbiB+cGF0aDooVCBwYXRoKSAgPVxuICAoKGZ1biB+cGFyYW1zOihUIHBhcmFtcykgLT5cbiAgICAgICgoZnVuIH5jb25zdHJ1Y3RvcnM6KFQgY29uc3RydWN0b3JzKSAtPlxuICAgICAgICAgICgoZnVuIH5wcml2YXRlXzooVCBwcml2YXRlXykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIGN0eCAoeC5wdHlleHRfcGF0aCkubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdHlleHRfcGF0aCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnB0eWV4dF9wYXJhbXMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3JzIGN0eCBsb2MgeC5wdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eWV4dF9wcml2YXRlIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cGVfYWJzdHJhY3QgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFic3RyYWN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfdmFyaWFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfb3BlbiA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZiX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2JpbmRpbmcgfnBhdDooVCBwYXQpICA9XG4gICgoZnVuIH5leHByOihUIGV4cHIpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IHBhdCBjdHggbG9jIHgucHZiX3BhdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnB2Yl9leHByIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmFsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2YWxfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgICgoZnVuIH5wcmltOihUIHByaW0pIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnB2YWxfbmFtZSkubG9jICh4LnB2YWxfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wdmFsX3R5cGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcHJpbSBjdHggbG9jIHgucHZhbF9wcmltIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjb3ZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ292YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb3ZhcmlhbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjb250cmF2YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbnRyYXZhcmlhbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub3ZhcmlhbmNlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vVmFyaWFuY2UgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vVmFyaWFuY2VcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB2aXJ0dWFsXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBWaXJ0dWFsIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJWaXJ0dWFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY29uY3JldGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ29uY3JldGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbmNyZXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHdpdGhfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX21vZHVsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX21vZHR5cGVzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF90eXBlc3Vic3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kc3Vic3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBc3RfcGF0dGVybjBcblxubGV0IHNhdmVfY29udGV4dCBjdHggPSBjdHgubWF0Y2hlZFxubGV0IHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwID0gY3R4Lm1hdGNoZWQgPC0gYmFja3VwXG5sZXQgaW5jcl9tYXRjaGVkIGMgPSBjLm1hdGNoZWQgPC0gYy5tYXRjaGVkICsgMVxuXG5sZXQgcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgdHJ5IE9rIChmIHsgbWF0Y2hlZCA9IDAgfSBsb2MgeCBrKVxuICB3aXRoIEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSAtPiAoXG4gICAgbWF0Y2ggb25fZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiJXMgZXhwZWN0ZWRcIiBleHBlY3RlZCwgW10pXG4gICAgfCBTb21lIGYgLT4gT2sgKGYgKCkpKVxuXG5sZXQgcGFyc2UgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICBtYXRjaCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgd2l0aFxuICB8IE9rIHIgLT4gclxuICB8IEVycm9yIChyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSByXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybjAudCAqICdiIC0+ICgnYSwgJ2MpIHRcblxuICBsZXQgY3JlYXRlIHQgZiA9IFQgKHQsIGYpXG4gIGxldCBwYXJzZV9yZXMgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlX3JlcyB0IGxvYyB4IGZcbiAgbGV0IHBhcnNlIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZSB0IGxvYyB4IGZcbmVuZFxuXG5sZXQgX18gPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHgpXG5cbmxldCBfXycgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeyBsb2M7IHR4dCA9IHggfSlcblxubGV0IGRyb3AgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBfIGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrKVxuXG5sZXQgYXNfXyAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHggKGsgeCkgaW5cbiAgICAgIGspXG5cbmxldCBjc3QgfnRvX3N0cmluZyA/KGVxdWFsID0gUG9seS5lcXVhbCkgdiA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpZiBlcXVhbCB4IHYgdGhlbiAoXG4gICAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICAgIGspXG4gICAgICBlbHNlIGZhaWwgbG9jICh0b19zdHJpbmcgdikpXG5cbmxldCBpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOkludC50b19zdHJpbmcgdlxubGV0IGNoYXIgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVDXCIpIHZcbmxldCBzdHJpbmcgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVTXCIpIHZcbmxldCBmbG9hdCB2ID0gY3N0IH50b19zdHJpbmc6RmxvYXQudG9fc3RyaW5nIHZcbmxldCBpbnQzMiB2ID0gY3N0IH50b19zdHJpbmc6SW50MzIudG9fc3RyaW5nIHZcbmxldCBpbnQ2NCB2ID0gY3N0IH50b19zdHJpbmc6SW50NjQudG9fc3RyaW5nIHZcbmxldCBuYXRpdmVpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOk5hdGl2ZWludC50b19zdHJpbmcgdlxubGV0IGJvb2wgdiA9IGNzdCB+dG9fc3RyaW5nOkJvb2wudG9fc3RyaW5nIHZcblxubGV0IGJvb2wnIChUIGZ1bmMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBcInRydWVcIiAtPiBmdW5jIGN0eCBsb2MgdHJ1ZSBrXG4gICAgICB8IFwiZmFsc2VcIiAtPiBmdW5jIGN0eCBsb2MgZmFsc2Uga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQm9vbFwiKVxuXG5sZXQgZmFsc2VfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmYWxzZVwiKVxuXG5sZXQgdHJ1ZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ1ZVwiKVxuXG5sZXQgbmlsID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJbXVwiKVxuXG5sZXQgKCBeOjogKSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB4MCA6OiB4MSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiOjpcIilcblxubGV0IG5vbmUgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9uZVwiKVxuXG5sZXQgc29tZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFNvbWUgeDAgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJTb21lXCIpXG5cbmxldCBwYWlyIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgaylcblxubGV0ICggKiogKSA9IHBhaXJcblxubGV0IHRyaXBsZSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MiwgeDMpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgIGspXG5cbmxldCBhbHQgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgYmFja3VwID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgdHJ5IGYxIGN0eCBsb2MgeCBrXG4gICAgICB3aXRoIGUxIC0+IChcbiAgICAgICAgbGV0IG0xID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cDtcbiAgICAgICAgdHJ5IGYyIGN0eCBsb2MgeCBrXG4gICAgICAgIHdpdGggZTIgLT5cbiAgICAgICAgICBsZXQgbTIgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgICAgaWYgbTEgPj0gbTIgdGhlbiAoXG4gICAgICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IG0xO1xuICAgICAgICAgICAgcmFpc2UgZTEpXG4gICAgICAgICAgZWxzZSByYWlzZSBlMikpXG5cbmxldCAoIHx8fCApID0gYWx0XG5sZXQgbWFwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGspKVxubGV0IG1hcCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgbG9jIGspKVxubGV0IG1hcF9yZXN1bHQgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiAoZnVuYyBjdHggbG9jIHggaykpXG5sZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxubGV0IG1hcDAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgZikpXG5sZXQgbWFwMSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBhKSkpXG5cbmxldCBtYXAyIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgYSBiKSkpXG5cbmxldCBtYXAwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayAoZiBsb2MpKSlcblxubGV0IG1hcDEnIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGxvYyBhKSkpXG5cbmxldCBtYXAyJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGxvYyBhIGIpKSlcblxubGV0IG1hcF92YWx1ZSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgeCkgaylcbmxldCBtYXBfdmFsdWUnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiBsb2MgeCkgaylcblxubGV0IGFsdF9vcHRpb24gc29tZSBub25lID1cbiAgYWx0IChtYXAxIHNvbWUgfmY6KGZ1biB4IC0+IFNvbWUgeCkpIChtYXAwIG5vbmUgfmY6Tm9uZSlcblxubGV0IG1hbnkgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIGwgayAtPlxuICAgICAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gayAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgfCB4IDo6IHhzIC0+IGYgY3R4IGxvYyB4IChmdW4geCAtPiBhdXggKHggOjogYWNjdSkgeHMpXG4gICAgICBpblxuICAgICAgYXV4IFtdIGwpXG5cbmxldCBsb2MgKFQgZikgPSBUIChmdW4gY3R4IF9sb2MgKHggOiBfIExvYy50KSBrIC0+IGYgY3R4IHgubG9jIHgudHh0IGspXG5sZXQgcGFjazAgdCA9IG1hcCB0IH5mOihmdW4gZiAtPiBmICgpKVxubGV0IHBhY2syIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IC0+IGYgKHgsIHkpKVxubGV0IHBhY2szIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IHogLT4gZiAoeCwgeSwgeikpXG5cbmluY2x1ZGUgQXN0X3BhdHRlcm5fZ2VuZXJhdGVkXG5cbmxldCBlY2hhciB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBlc3RyaW5nIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IGVmbG9hdCB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBwY2hhciB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBwc3RyaW5nIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IHBmbG9hdCB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBpbnQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoaW50X29mX3N0cmluZyB4KSBrKVxubGV0IGludDMyJyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDMyLm9mX3N0cmluZyB4KSBrKVxubGV0IGludDY0JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDY0Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgbmF0aXZlaW50JyAoVCBmKSA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKE5hdGl2ZWludC5vZl9zdHJpbmcgeCkgaylcblxubGV0IGNvbnN0X2ludCB0ID0gcGNvbnN0X2ludGVnZXIgKGludCcgdCkgbm9uZVxubGV0IGNvbnN0X2ludDMyIHQgPSBwY29uc3RfaW50ZWdlciAoaW50MzInIHQpIChzb21lIChjaGFyICdsJykpXG5sZXQgY29uc3RfaW50NjQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQ2NCcgdCkgKHNvbWUgKGNoYXIgJ0wnKSlcbmxldCBjb25zdF9uYXRpdmVpbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChuYXRpdmVpbnQnIHQpIChzb21lIChjaGFyICduJykpXG5sZXQgZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgZWludDMyIHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IGVpbnQ2NCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBlbmF0aXZlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBwaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBwaW50MzIgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgcGludDY0IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IHBuYXRpdmVpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHNpbmdsZV9leHByX3BheWxvYWQgdCA9IHBzdHIgKHBzdHJfZXZhbCB0IG5pbCBeOjogbmlsKVxubGV0IG5vX2xhYmVsIHQgPSBjc3QgQXN0dHlwZXMuTm9sYWJlbCB+dG9fc3RyaW5nOihmdW4gXyAtPiBcIk5vbGFiZWxcIikgKiogdFxubGV0IGVib29sIHQgPSBwZXhwX2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxubGV0IHBib29sIHQgPSBwcGF0X2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxuXG5sZXQgZXh0ZW5zaW9uIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICgobmFtZSA6IF8gTG9jLnQpLCBwYXlsb2FkKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBuYW1lLmxvYyBuYW1lLnR4dCBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgcGF5bG9hZCBrIGluXG4gICAgICBrKVxuXG5sZXQgcmVjIHBhcnNlX2VsaXN0IChlIDogUGFyc2V0cmVlLmV4cHJlc3Npb24pIGFjYyA9XG4gIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBlLnBleHBfYXR0cmlidXRlcztcbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgTm9uZSkgLT4gTGlzdC5yZXYgYWNjXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIGFyZykgLT4gKFxuICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGFyZy5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICBtYXRjaCBhcmcucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF90dXBsZSBbIGhkOyB0bCBdIC0+IHBhcnNlX2VsaXN0IHRsIChoZCA6OiBhY2MpXG4gICAgICB8IF8gLT4gZmFpbCBhcmcucGV4cF9sb2MgXCJsaXN0XCIpXG4gIHwgXyAtPiBmYWlsIGUucGV4cF9sb2MgXCJsaXN0XCJcblxubGV0IGVsaXN0IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgbCA9IHBhcnNlX2VsaXN0IGUgW10gaW5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIChMaXN0Lm1hcCBsIH5mOihmdW4geCAtPiBmIGN0eCB4LlBhcnNldHJlZS5wZXhwX2xvYyB4IChmdW4geCAtPiB4KSkpKVxuXG5sZXQgZXNlcXVlbmNlIChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgcmVjIHBhcnNlX3NlcSBleHByIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChleHByLCBuZXh0KSAtPiBwYXJzZV9zZXEgbmV4dCAoZXhwciA6OiBhY2MpXG4gICAgICAgIHwgXyAtPiBleHByIDo6IGFjY1xuICAgICAgaW5cbiAgICAgIGtcbiAgICAgICAgKExpc3QucmV2X21hcCAocGFyc2Vfc2VxIGUgW10pIH5mOihmdW4gZXhwciAtPlxuICAgICAgICAgICAgIGYgY3R4IGV4cHIucGV4cF9sb2MgZXhwciAoZnVuIHggLT4geCkpKSlcblxubGV0IG9mX2Z1bmMgZiA9IFQgZlxubGV0IHRvX2Z1bmMgKFQgZikgPSBmXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHBvbHlfZXF1YWwgYSBiID1cbiAgbGV0IG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCA6IF8gLT4gdFxuICBlbmQgaW5cbiAgU3RkcHB4LlBvbHkuZXF1YWwgKFBvbHkuVCBhKSAoUG9seS5UIGIpXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIHRcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiB0XG4gICAgfCBUeXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIHRcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDbGFzc19pbmZvcyA6IF8gY2xhc3NfaW5mb3MgdFxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIHRcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIHRcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIHRcbiAgICB8IEluY2x1ZGVfaW5mb3MgOiBfIGluY2x1ZGVfaW5mb3MgdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBWYWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyB0XG4gICAgfCBNb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIHRcbiAgICB8IFBzdHJfZXZhbCA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHNpZ19leHRlbnNpb24gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBSdGFnIDogcm93X2ZpZWxkIHRcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIDogb2JqZWN0X2ZpZWxkIHRcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gPSBMYWJlbF9kZWNsYXJhdGlvblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9kZWNsYXJhdGlvbiA9IFR5cGVfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID0gVHlwZV9leHRlbnNpb25cbiAgbGV0IHR5cGVfZXhjZXB0aW9uID0gVHlwZV9leGNlcHRpb25cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uID0gVmFsdWVfZGVzY3JpcHRpb25cbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY2xhc3NfaW5mb3MgPSBDbGFzc19pbmZvc1xuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV9kZWNsYXJhdGlvblxuICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICBsZXQgb3Blbl9kZXNjcmlwdGlvbiA9IE9wZW5fZGVzY3JpcHRpb25cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBJbmNsdWRlX2luZm9zXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCB2YWx1ZV9iaW5kaW5nID0gVmFsdWVfYmluZGluZ1xuICBsZXQgbW9kdWxlX2JpbmRpbmcgPSBNb2R1bGVfYmluZGluZ1xuICBsZXQgcHN0cl9ldmFsID0gUHN0cl9ldmFsXG4gIGxldCBwc3RyX2V4dGVuc2lvbiA9IFBzdHJfZXh0ZW5zaW9uXG4gIGxldCBwc2lnX2V4dGVuc2lvbiA9IFBzaWdfZXh0ZW5zaW9uXG4gIGxldCBydGFnID0gUnRhZ1xuICBsZXQgb2JqZWN0X3R5cGVfZmllbGQgPSBPYmplY3RfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfcHN0cl9ldmFsIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9ldmFsIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9ldmFsXCJcblxuICBsZXQgZ2V0X3BzdHJfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9wc2lnX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHNpZ19kZXNjIHdpdGhcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHNpZ19leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB4LnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB4LnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHgucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geC5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geC5wdHlleG5fYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHgucGV4dF9hdHRyaWJ1dGVzXG4gICAgfCBQYXR0ZXJuIC0+IHgucHBhdF9hdHRyaWJ1dGVzXG4gICAgfCBDb3JlX3R5cGUgLT4geC5wdHlwX2F0dHJpYnV0ZXNcbiAgICB8IEV4cHJlc3Npb24gLT4geC5wZXhwX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHgucHZhbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlIC0+IHgucGN0eV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHgucGN0Zl9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19pbmZvcyAtPiB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19leHByIC0+IHgucGNsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2ZpZWxkIC0+IHgucGNmX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlIC0+IHgucG10eV9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geC5wbWRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geC5wbXRkX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geC5wbXNfYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHgucGluY2xfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2V4cHIgLT4geC5wbW9kX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geC5wdmJfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geC5wbWJfYXR0cmlidXRlc1xuICAgIHwgUHN0cl9ldmFsIC0+IHNuZCAoZ2V0X3BzdHJfZXZhbCB4KVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gc25kIChnZXRfcHN0cl9leHRlbnNpb24geClcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHgpXG4gICAgfCBSdGFnIC0+IHgucHJmX2F0dHJpYnV0ZXNcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHgucG9mX2F0dHJpYnV0ZXNcblxuICBsZXQgc2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19pbmZvcyAtPiB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2V4cHIgLT4geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geyB4IHdpdGggcG1iX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQc3RyX2V2YWwgLT5cbiAgICAgICAgeyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChnZXRfcHN0cl9ldmFsIHggfD4gZnN0LCBhdHRycykgfVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChnZXRfcHN0cl9leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChnZXRfcHNpZ19leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUnRhZyAtPiB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IFwibGFiZWwgZGVjbGFyYXRpb25cIlxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gXCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBcInR5cGUgZXh0ZW5zaW9uXCJcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IFwidHlwZSBleGNlcHRpb25cIlxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiBcInZhbHVlXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENsYXNzX2luZm9zIC0+IFwiY2xhc3MgZGVjbGFyYXRpb25cIlxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4gXCJtb2R1bGUgc3Vic3RpdHV0aW9uXCJcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4gXCJvcGVuXCJcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4gXCJvcGVuXCJcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4gXCJpbmNsdWRlXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfYmluZGluZyAtPiBcInZhbHVlIGJpbmRpbmdcIlxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4gXCJtb2R1bGUgYmluZGluZ1wiXG4gICAgfCBQc3RyX2V2YWwgLT4gXCJ0b3BsZXZlbCBleHByZXNzaW9uXCJcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgZXh0ZW5zaW9uXCJcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgc2lnbmF0dXJlIGV4dGVuc2lvblwiXG4gICAgfCBSdGFnIC0+IFwicG9seW1vcnBoaWMgdmFyaWFudCB0YWdcIlxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4gXCJvYmplY3QgdHlwZSBmaWVsZFwiXG5cbiAgKCpcbiAgbGV0IHBhdHRlcm4gOiB0eXBlIGEgYiBjIGQuIGEgdFxuICAgIC0+IChhdHRyaWJ1dGVzLCBiLCBjKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGMsIGQpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYiwgZCkgQXN0X3BhdHRlcm4udCA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAgICAgICAtPiBBc3RfcGF0dGVybi5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gQXN0X3BhdHRlcm4ucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uICAgICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgICAtPiBBc3RfcGF0dGVybi5wZXh0X2F0dHJpYnV0ZXNcbiopXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbm1vZHVsZSBGbG9hdGluZ19jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG5cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIHQgeCA9XG4gICAgbWF0Y2ggZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIHQgeCB3aXRoXG4gICAgfCBTb21lIGEgLT4gYVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVcIlxuXG4gIGxldCByZXBsYWNlX2J5X2R1bW15IDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhID1cbiAgICBsZXQgZHVtbXlfZXh0ID0gKHsgdHh0ID0gXCJcIjsgbG9jID0gTG9jYXRpb24ubm9uZSB9LCBQU3RyIFtdKSBpblxuICAgIGZ1biB0IHggLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiB7IHggd2l0aCBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZHVtbXlfZXh0IH1cbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxudHlwZSBwYWNrZWRfY29udGV4dCA9XG4gIHwgT25faXRlbSA6IF8gQ29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG4gIHwgRmxvYXRpbmcgOiBfIEZsb2F0aW5nX2NvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuXG50eXBlIF8gcGF5bG9hZF9wYXJzZXIgPVxuICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgIChwYXlsb2FkLCAnYSwgJ2IpIEFzdF9wYXR0ZXJuLnRcbiAgICAgICogKGF0dHJfbG9jOkxvY2F0aW9uLnQgLT4gbmFtZV9sb2M6TG9jYXRpb24udCAtPiAnYSlcbiAgICAgIC0+ICdiIHBheWxvYWRfcGFyc2VyXG5cbnR5cGUgKCdhLCAnYikgdCA9IHtcbiAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG59XG5cbnR5cGUgcGFja2VkID0gVCA6IChfLCBfKSB0IC0+IHBhY2tlZFxuXG5sZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5sZXQgY29udGV4dCB0ID0gdC5jb250ZXh0XG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJhdHRyaWJ1dGVcIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW5jdGlvblxuICAgIHwgT25faXRlbSB0IC0+IFNvbWUgKENvbnRleHQuZGVzYyB0KVxuICAgIHwgRmxvYXRpbmcgdCAtPiBTb21lIChGbG9hdGluZ19jb250ZXh0LmRlc2MgdCBeIFwiIChmbG9hdGluZylcIikpXG5cbmxldCBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gIHtcbiAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICBjb250ZXh0O1xuICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gIH1cblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspXG5cbmxldCBkZWNsYXJlX3dpdGhfbmFtZV9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYyAtPlxuICAgICAgayB+bmFtZV9sb2MpXG5cbmxldCBkZWNsYXJlX3dpdGhfYXR0cl9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYyB+bmFtZV9sb2M6XyAtPlxuICAgICAgayB+YXR0cl9sb2MpXG5cbnR5cGUgJ2EgZmxhZyA9ICgnYSwgdW5pdCkgdFxuXG5sZXQgZGVjbGFyZV9mbGFnIG5hbWUgY29udGV4dCA9XG4gIGxldCBwYXlsb2FkX3BhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpIGluXG4gIGxldCBjb250aW51YXRpb24gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gPSAoKSBpblxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBheWxvYWRfcGF0dGVybiBjb250aW51YXRpb25cblxubW9kdWxlIEF0dHJpYnV0ZV90YWJsZSA9IFN0ZGxpYi5IYXNodGJsLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbG9jXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID0geyB0IHdpdGggbG9jID0geyB0LmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB9XG4gIGxldCBoYXNoIHQgPSBIYXNodGJsLmhhc2ggKG5vcm1hbGl6ZSB0KVxuICBsZXQgZXF1YWwgeCB5ID0gUG9seS5lcXVhbCAobm9ybWFsaXplIHgpIChub3JtYWxpemUgeSlcbmVuZClcblxubGV0IG5vdF9zZWVuID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAxMjhcbmxldCBtYXJrX2FzX3NlZW4geyBhdHRyX25hbWU7IF8gfSA9IEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgbm90X3NlZW4gYXR0cl9uYW1lXG5sZXQgbWFya19hc19oYW5kbGVkX21hbnVhbGx5ID0gbWFya19hc19zZWVuXG5cbmxldCBleHBsaWNpdGx5X2Ryb3AgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlID0gbWFya19hc19zZWVuXG4gIGVuZFxuXG5sZXQgZ2V0X2ludGVybmFsID1cbiAgbGV0IHJlYyBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIGxvbmdlc3RfbWF0Y2ggPVxuICAgIG1hdGNoIGF0dHJpYnV0ZXMgd2l0aFxuICAgIHwgW10gLT4gT2sgbG9uZ2VzdF9tYXRjaFxuICAgIHwgKHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IGFzIGF0dHIpIDo6IHJlc3QgLT5cbiAgICAgICAgaWYgTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0IHRoZW5cbiAgICAgICAgICBtYXRjaCBsb25nZXN0X21hdGNoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgIHwgU29tZSB7IGF0dHJfbmFtZSA9IG5hbWUnOyBfIH0gLT5cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbmFtZS50eHQgaW5cbiAgICAgICAgICAgICAgbGV0IGxlbicgPSBTdHJpbmcubGVuZ3RoIG5hbWUnLnR4dCBpblxuICAgICAgICAgICAgICBpZiBsZW4gPiBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA8IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIkR1cGxpY2F0ZWQgYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZSBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgaW5cbiAgZnVuIHQgYXR0cmlidXRlcyAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIE5vbmVcblxubGV0IGNvbnZlcnQgPyhkb19tYXJrX2FzX3NlZW4gPSB0cnVlKSBwYXR0ZXJuIGF0dHIgPVxuICBpZiBkb19tYXJrX2FzX3NlZW4gdGhlbiBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgbGV0IChQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgaykpID0gcGF0dGVybiBpblxuICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVyblxuICAgIChDb21tb24ubG9jX29mX3BheWxvYWQgYXR0cilcbiAgICBhdHRyLmF0dHJfcGF5bG9hZFxuICAgIChrIH5hdHRyX2xvYzphdHRyLmF0dHJfbG9jIH5uYW1lX2xvYzphdHRyLmF0dHJfbmFtZS5sb2MpXG5cbmxldCBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID9kb19tYXJrX2FzX3NlZW4gPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG5cbmxldCBnZXQgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIG1hdGNoIGdldF9yZXMgP21hcmtfYXNfc2VlbiB0IHggd2l0aFxuICB8IE9rIChTb21lICgpKSAtPiBPayB0cnVlXG4gIHwgT2sgTm9uZSAtPiBPayBmYWxzZVxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG5cbmxldCBoYXNfZmxhZyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgY29uc3VtZV9yZXMgdCB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGxldCBhdHRycyA9IExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChhdHRyID09IGF0dHInKSkgaW5cbiAgICAgIGxldCB4ID0gQ29udGV4dC5zZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBhdHRycyBpblxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgKHgsIHZhbHVlKVxuXG5sZXQgY29uc3VtZSB0IHggPVxuICBjb25zdW1lX3JlcyB0IHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHJlbW92ZV9zZWVuX3JlcyAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IHggaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBPayBhY2NcbiAgICB8IFQgdCA6OiByZXN0IC0+XG4gICAgICAgIGlmIENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQgdGhlblxuICAgICAgICAgIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgIHwgU29tZSBhdHRyIC0+XG4gICAgICAgICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgICAgICAgaWYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lIHRoZW4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGxvb3AgKGF0dHIgOjogYWNjKSByZXN0XG4gICAgICAgIGVsc2UgbG9vcCBhY2MgcmVzdFxuICBpblxuICBsb29wIFtdIHBhY2tlZHMgPj58IGZ1biBtYXRjaGVkIC0+XG4gIGxldCBhdHRycyA9XG4gICAgTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKExpc3QubWVtcSB+c2V0Om1hdGNoZWQgYXR0cicpKVxuICBpblxuICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRyc1xuXG5sZXQgcmVtb3ZlX3NlZW4gKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgcmVtb3ZlX3NlZW5fcmVzIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKVxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcGF0dGVybl9yZXMgdCBwID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBmID0gQXN0X3BhdHRlcm4udG9fZnVuYyBwIGluXG4gIEFzdF9wYXR0ZXJuLm9mX2Z1bmMgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgY29uc3VtZV9yZXMgdCB4ID4+fCBmdW4gcmVzIC0+XG4gICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IGYgY3R4IGxvYyB4IChrIE5vbmUpXG4gICAgICB8IFNvbWUgKHgsIHYpIC0+IGYgY3R4IGxvYyB4IChrIChTb21lIHYpKSlcblxubGV0IHBhdHRlcm4gdCBwID1cbiAgcGF0dGVybl9yZXMgdCBwIHw+IEFzdF9wYXR0ZXJuLnRvX2Z1bmNcbiAgfD4gKGZ1biBmIGEgYiBjIGQgLT5cbiAgICAgICBmIGEgYiBjIGRcbiAgICAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKSlcbiAgfD4gQXN0X3BhdHRlcm4ub2ZfZnVuY1xuXG5tb2R1bGUgRmxvYXRpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBGbG9hdGluZ19jb250ZXh0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbiAgfVxuXG4gIGxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKTtcbiAgICB9XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIHggPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIG1hdGNoIHRzIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IHsgY29udGV4dDsgXyB9IDo6IF8gLT4gKFxuICAgICAgICBhc3NlcnQgKExpc3QuZm9yX2FsbCB0cyB+ZjooZnVuIHQgLT4gQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCkpO1xuICAgICAgICBsZXQgYXR0ciA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZSBjb250ZXh0IHggaW5cbiAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBPayBOb25lXG4gICAgICAgIHwgWyB0IF0gLT4gY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZmxvYXRpbmcgYXR0cmlidXRlczogJXNcIlxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICAgICAgW10gKSlcblxuICBsZXQgY29udmVydCB0cyB4ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB4XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBpZlxuICAgIChub3RcbiAgICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgQXR0cmlidXRlIG5hbWUudHh0XG4gICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KSlcbiAgICAmJiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWVcbiAgdGhlblxuICAgIGxldCBhbGxvd2xpc3QgPSBOYW1lLkFsbG93bGlzdGVkLmdldF9hdHRyaWJ1dGVfbGlzdCAoKSBpblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIGNvbnRleHQgfmFsbG93bGlzdFxuICAgICAgICBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBub3QgdXNlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZTAuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gXyA9XG4gICAgICBbXG4gICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgXVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS5cbiAgICAgICAgYSBDb250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgYXR0cnNcbiAgICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGVkX2Vycm9ycylcbiAgICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW10sIGVycm9ycylcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX2Zsb2F0aW5nIDogdHlwZSBhLlxuICAgICAgICBhIEZsb2F0aW5nLkNvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIEZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIGNvbnRleHQgbm9kZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgU29tZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAoRmxvYXRpbmcuQ29udGV4dC5yZXBsYWNlX2J5X2R1bW15IGNvbnRleHQgbm9kZSwgY29sbGVjdGVkX2Vycm9ycylcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIExhYmVsX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXh0ZW5zaW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leGNlcHRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leGNlcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggaW5cbiAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgUGF0dGVybiB4IGluXG4gICAgICBzdXBlciNwYXR0ZXJuIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvcmVfdHlwZSB4IGluXG4gICAgICBzdXBlciNjb3JlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4cHJlc3Npb24geCBpblxuICAgICAgc3VwZXIjZXhwcmVzc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2V4cHIgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4IGluXG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZXhwciB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc19maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc19maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoIFJ0YWcgXyAtPiBzZWxmI2NoZWNrX25vZGUgUnRhZyB4IHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjcm93X2ZpZWxkIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSAtPlxuICAgICAgICAgICAgbGV0IGZpZWxkcywgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihzZWxmI2NoZWNrX25vZGUgT2JqZWN0X3R5cGVfZmllbGQpXG4gICAgICAgICAgICAgIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpLCBMaXN0LmNvbmNhdCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTdHJ1Y3R1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHN0cl9kZXNjIHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9ldmFsIGl0ZW1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU2lnbmF0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzaWdfZGVzYyB3aXRoXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHNpZ19leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG4gIGVuZFxuXG5sZXQgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBtYXRjaCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJhaXNlX2lmX25vbl9lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gYSAtPiBhID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IG5vZGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXIgYXR0cnNcbiAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cik7XG4gICAgICAgICAgICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNsYWJlbF9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leHRlbnNpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4Y2VwdGlvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHRlbnNpb25fY29uc3RydWN0b3IgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNwYXR0ZXJuIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXhwcmVzc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGVfZmllbGQgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3Jvd19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXRfY2hlY2tzICgpID0gQXR0cmlidXRlX3RhYmxlLmNsZWFyIG5vdF9zZWVuXG5cbmxldCBjb2xsZWN0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKVxuICAgICAgICA9XG4gICAgICBsZXQgbG9jID0gQ29tbW9uLmxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLmFkZCBub3Rfc2VlbiBuYW1lIGxvY1xuICBlbmRcblxubGV0IGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSA9XG4gIGxldCBmYWlsIG5hbWUgbG9jIGFjYyA9XG4gICAgbGV0IHR4dCA9IG5hbWUudHh0IGluXG4gICAgaWYgbm90IChOYW1lLmlnbm9yZV9jaGVja3MgdHh0KSB0aGVuXG4gICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgc2lsZW50bHkgZHJvcHBlZFwiIHR4dFxuICAgICAgOjogYWNjXG4gICAgZWxzZSBhY2NcbiAgaW5cbiAgQXR0cmlidXRlX3RhYmxlLmZvbGQgZmFpbCBub3Rfc2VlbiBbXVxuXG5sZXQgY2hlY2tfYWxsX3NlZW4gKCkgPVxuICBtYXRjaCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9ID1cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgdGFibGUgbmFtZVxuICBlbmRcblxubGV0IGNvcHlfb2Zfbm90X3NlZW4gKCkgPVxuICBsZXQgY29weSA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgKEF0dHJpYnV0ZV90YWJsZS5sZW5ndGggbm90X3NlZW4pIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5pdGVyIChBdHRyaWJ1dGVfdGFibGUuYWRkIGNvcHkpIG5vdF9zZWVuO1xuICBjb3B5XG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgc3QgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzdHJ1Y3R1cmUgc3Q7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgc2cgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzaWduYXR1cmUgc2c7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBmaWxlX3BhdGggOiBzdHJpbmc7XG4gIG1haW5fbW9kdWxlX25hbWUgOiBzdHJpbmc7XG4gIHN1Ym1vZHVsZV9wYXRoIDogc3RyaW5nIGxvYyBsaXN0O1xuICBlbmNsb3NpbmdfbW9kdWxlIDogc3RyaW5nO1xuICBlbmNsb3NpbmdfdmFsdWUgOiBzdHJpbmcgb3B0aW9uO1xuICB2YWx1ZSA6IHN0cmluZyBsb2Mgb3B0aW9uO1xuICBpbl9leHByIDogYm9vbDtcbn1cblxubGV0IHRvcF9sZXZlbCB+ZmlsZV9wYXRoID1cbiAgbGV0IG1haW5fbW9kdWxlX25hbWUgPVxuICAgIGZpbGVfcGF0aCB8PiBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgfD4gU3RkbGliLkZpbGVuYW1lLnJlbW92ZV9leHRlbnNpb25cbiAgICB8PiBTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuICBpblxuICB7XG4gICAgZmlsZV9wYXRoO1xuICAgIG1haW5fbW9kdWxlX25hbWU7XG4gICAgc3VibW9kdWxlX3BhdGggPSBbXTtcbiAgICBlbmNsb3NpbmdfbW9kdWxlID0gbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBlbmNsb3NpbmdfdmFsdWUgPSBOb25lO1xuICAgIHZhbHVlID0gTm9uZTtcbiAgICBpbl9leHByID0gZmFsc2U7XG4gIH1cblxubGV0IGZpbGVfcGF0aCB0ID0gdC5maWxlX3BhdGhcbmxldCBtYWluX21vZHVsZV9uYW1lIHQgPSB0Lm1haW5fbW9kdWxlX25hbWVcbmxldCBlbmNsb3NpbmdfbW9kdWxlIHQgPSB0LmVuY2xvc2luZ19tb2R1bGVcbmxldCBlbmNsb3NpbmdfdmFsdWUgdCA9IHQuZW5jbG9zaW5nX3ZhbHVlXG5cbmxldCBzdWJtb2R1bGVfcGF0aCB0ID1cbiAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC5zdWJtb2R1bGVfcGF0aFxuXG5sZXQgdmFsdWUgdCA9IE9wdGlvbi5tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnZhbHVlXG5cbmxldCBmdWxseV9xdWFsaWZpZWRfcGF0aCB0ID1cbiAgbGV0IHZhbHVlID0gdmFsdWUgdCBpblxuICBsZXQgc3VibW9kdWxlX3BhdGggPVxuICAgIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gU29tZSBsb2NhdGVkLnR4dCkgdC5zdWJtb2R1bGVfcGF0aFxuICBpblxuICBsZXQgbmFtZXMgPSAoU29tZSB0Lm1haW5fbW9kdWxlX25hbWUgOjogc3VibW9kdWxlX3BhdGgpIEAgWyB2YWx1ZSBdIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBAQCBMaXN0LmZpbHRlcl9vcHQgbmFtZXNcblxubGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGluX2V4cHIgPSB0cnVlIH1cblxubGV0IGVudGVyX21vZHVsZSB+bG9jIG1vZHVsZV9uYW1lIHQgPVxuICBpZiB0LmluX2V4cHIgdGhlbiB7IHQgd2l0aCBlbmNsb3NpbmdfbW9kdWxlID0gbW9kdWxlX25hbWUgfVxuICBlbHNlXG4gICAge1xuICAgICAgdCB3aXRoXG4gICAgICBzdWJtb2R1bGVfcGF0aCA9IHsgdHh0ID0gbW9kdWxlX25hbWU7IGxvYyB9IDo6IHQuc3VibW9kdWxlX3BhdGg7XG4gICAgICBlbmNsb3NpbmdfbW9kdWxlID0gbW9kdWxlX25hbWU7XG4gICAgfVxuXG5sZXQgZW50ZXJfdmFsdWUgfmxvYyB2YWx1ZV9uYW1lIHQgPVxuICBpZiB0LmluX2V4cHIgdGhlbiB7IHQgd2l0aCBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWUgfVxuICBlbHNlXG4gICAge1xuICAgICAgdCB3aXRoXG4gICAgICB2YWx1ZSA9IFNvbWUgeyB0eHQgPSB2YWx1ZV9uYW1lOyBsb2MgfTtcbiAgICAgIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZTtcbiAgICB9XG5cbmxldCB0b19zdHJpbmdfcGF0aCB0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiICh0LmZpbGVfcGF0aCA6OiBzdWJtb2R1bGVfcGF0aCB0KVxubGV0IHdpdGhfc3RyaW5nX3BhdGggZiB+bG9jIH5wYXRoID0gZiB+bG9jIH5wYXRoOih0b19zdHJpbmdfcGF0aCBwYXRoKTs7XG5cbmxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICBsZXQgYSA9IFwibG9sXCJcbmVuZCBpblxuTS5hXG4iLCJtb2R1bGUgQmFzZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IHRvb2xfbmFtZSA6IHN0cmluZzsgY29kZV9wYXRoIDogQ29kZV9wYXRoLnQ7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gIGxldCB0b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lID1cbiAgICBsZXQgY29kZV9wYXRoID0gQ29kZV9wYXRoLnRvcF9sZXZlbCB+ZmlsZV9wYXRoIGluXG4gICAgeyB0b29sX25hbWU7IGNvZGVfcGF0aDsgaW5wdXRfbmFtZSB9XG5cbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LnRvb2xfbmFtZVxuICBsZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX2V4cHIgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl9tb2R1bGUgfmxvYyBuYW1lIHQgPVxuICAgIHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9tb2R1bGUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQgPVxuICAgIHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl92YWx1ZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBleHRlbnNpb25fcG9pbnRfbG9jIDogTG9jYXRpb24udDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2MgfmJhc2UgKCkgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2M7IGJhc2UgfVxuICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyB0ID0gdC5leHRlbnNpb25fcG9pbnRfbG9jXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuYmFzZS5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuYmFzZS5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQuYmFzZS50b29sX25hbWVcblxuICBsZXQgd2l0aF9sb2NfYW5kX3BhdGggZiB+Y3R4dCA9XG4gICAgZiB+bG9jOmN0eHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgfnBhdGg6KENvZGVfcGF0aC50b19zdHJpbmdfcGF0aCBjdHh0LmJhc2UuY29kZV9wYXRoKVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZGVyaXZlZF9pdGVtX2xvYyA6IExvY2F0aW9uLnQ7IGlubGluZSA6IGJvb2w7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5kZXJpdmVkX2l0ZW1fbG9jIH5pbmxpbmUgfmJhc2UgKCkgPVxuICAgIHsgZGVyaXZlZF9pdGVtX2xvYzsgYmFzZTsgaW5saW5lIH1cblxuICBsZXQgZGVyaXZlZF9pdGVtX2xvYyB0ID0gdC5kZXJpdmVkX2l0ZW1fbG9jXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuYmFzZS5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuYmFzZS5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQuYmFzZS50b29sX25hbWVcbiAgbGV0IGlubGluZSB0ID0gdC5pbmxpbmVcblxuICBsZXQgd2l0aF9sb2NfYW5kX3BhdGggZiB+Y3R4dCA9XG4gICAgZiB+bG9jOmN0eHQuZGVyaXZlZF9pdGVtX2xvY1xuICAgICAgfnBhdGg6KENvZGVfcGF0aC50b19zdHJpbmdfcGF0aCBjdHh0LmJhc2UuY29kZV9wYXRoKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uLldpdGhfZXJyb3JzXG5pbmNsdWRlIEFzdF90cmF2ZXJzZTBcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gUHB4bGliX3RyYXZlcnNlX2J1aWx0aW5zLmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIEFzdC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgZW5kXG5cbmxldCBtb2R1bGVfbmFtZSA9IGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIG5hbWUgLT4gbmFtZVxubGV0IGVudGVyIG5hbWUgcGF0aCA9IGlmIFN0cmluZy5pc19lbXB0eSBwYXRoIHRoZW4gbmFtZSBlbHNlIHBhdGggXiBcIi5cIiBeIG5hbWVcbmxldCBlbnRlcl9vcHQgbmFtZV9vcHQgcGF0aCA9IGVudGVyIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgcGF0aFxuXG5jbGFzcyBtYXBfd2l0aF9wYXRoID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nXSBtYXBfd2l0aF9jb250ZXh0IGFzIHN1cGVyXG5cbiAgICAoKiBXQVM6XG4gICAgICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBhdGggeCA9XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBQc3RyX21vZHVsZSBtYiAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIChlbnRlciBtYi5wbWJfbmFtZS50eHQgcGF0aCkgeFxuICAgICAgIHwgXyAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBhdGggeFxuXG4gICAgICAgT3ZlcnJpZGluZyBbbW9kdWxlX2JpbmRpbmddIHNlZW1zIHRvIGJlIE9LIGJlY2F1c2UgaXQgZG9lcyBub3QgY2F0Y2hcbiAgICAgICBsb2NhbCBtb2R1bGUgYmluZGluZ3MgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHRoZSBwYXJzZXRyZWUgZG9lc24ndCBtYWtlXG4gICAgICAgdXNlIG9mIFttb2R1bGVfYmluZGluZ10gZm9yIGxvY2FsIG1vZHVsZXMsIGJ1dCB0aGF0IG1pZ2h0IGNoYW5nZSBpbiB0aGVcbiAgICAgICBmdXR1cmUsIHNvIHRoaXMgbWlnaHQgYmUgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZC5cblxuICAgICAgIFRoZSBmb2xsb3dpbmc6XG5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuXG4gICAgICAgaXMgZGlzYWxsb3dlZCwgYnV0XG5cbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cblxuICAgICAgIGlzbid0LCBhbmQgdGhlIFwicGF0aFwiIGNvbnN0cnVjdGVkIGhlcmUgd291bGQgYmUgYWJsZSB0byBkaWZmZXJlbnRpYXRlXG4gICAgICAgYmV0d2VlbiB0aGVtLiAqKVxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgcGF0aCBtYiA9XG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyAoZW50ZXJfb3B0IG1iLnBtYl9uYW1lLnR4dCBwYXRoKSBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gcGF0aCBtZCA9XG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gKGVudGVyX29wdCBtZC5wbWRfbmFtZS50eHQgcGF0aCkgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcGF0aCBtdGQgPVxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKGVudGVyIG10ZC5wbXRkX25hbWUudHh0IHBhdGgpIG10ZFxuICBlbmRcblxubGV0IHZhcl9uYW1lc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyBsaXN0XSBmb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IHN1cGVyI3BhdHRlcm4gcCBhY2MgaW5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGggUHBhdF92YXIgeyB0eHQ7IF8gfSAtPiB0eHQgOjogYWNjIHwgXyAtPiBhY2NcbiAgZW5kXG5cbmxldCBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2MgbmFtZV9vcHQgY3R4dCA9XG4gIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBjdHh0XG5cbmxldCBlbnRlcl92YWx1ZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmVudGVyX3ZhbHVlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2lkZW50IChsaWRlbnQgX18nKSkpXG4gICAgRm4uaWRcblxubGV0IGVudGVyX21vZHVsZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmVudGVyX21vZHVsZVwiIE1vZHVsZV9leHByXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfY29uc3RydWN0IChsaWRlbnQgX18nKSBub25lKSlcbiAgICBGbi5pZFxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfdmFsdWVcIiBWYWx1ZV9iaW5kaW5nXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfZGVzY3JpcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfdmFsdWVcIiBWYWx1ZV9kZXNjcmlwdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV9iaW5kaW5nXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmNsYXNzIG1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgPVxuICBsZXQgcmV0dXJuIF9jdHggeCA9ICh4LCBbXSkgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXRcbiAgICAgIFtFeHBhbnNpb25fY29udGV4dC5CYXNlLnQsIExvY2F0aW9uLkVycm9yLnQgbGlzdF0gbGlmdF9tYXBfd2l0aF9jb250ZXh0IGFzIHN1cGVyXG5cbiAgICBtZXRob2QgaW50ID0gcmV0dXJuXG4gICAgbWV0aG9kIHN0cmluZyA9IHJldHVyblxuICAgIG1ldGhvZCBib29sID0gcmV0dXJuXG4gICAgbWV0aG9kIGNoYXIgPSByZXR1cm5cbiAgICBtZXRob2QgZmxvYXQgPSByZXR1cm5cbiAgICBtZXRob2QgaW50MzIgPSByZXR1cm5cbiAgICBtZXRob2QgaW50NjQgPSByZXR1cm5cbiAgICBtZXRob2QgbmF0aXZlaW50ID0gcmV0dXJuXG4gICAgbWV0aG9kIHVuaXQgPSByZXR1cm5cblxuICAgIG1ldGhvZCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QpIC0+XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgLT5cbiAgICAgICAgICAnYSBhcnJheSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gZiBjdHggYSAtPlxuICAgICAgICBsZXQgbGlzdCwgZXJyb3JzID0gc2VsZiNsaXN0IGYgY3R4IChBcnJheS50b19saXN0IGEpIGluXG4gICAgICAgIChBcnJheS5vZl9saXN0IGxpc3QsIGVycm9ycylcblxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBfIF8gLT4gW11cblxuICAgIG1ldGhvZCByZWNvcmQgX2N0eCBmaWVsZHMgPSBMaXN0LmNvbmNhdF9tYXAgZmllbGRzIH5mOnNuZFxuICAgIG1ldGhvZCBjb25zdHIgX2N0eCBfdGFnIGFyZ3MgPSBMaXN0LmNvbmNhdCBhcmdzXG4gICAgbWV0aG9kIHR1cGxlIF9jdHggbCA9IExpc3QuY29uY2F0IGxcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBjdHh0XG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhcyBleHByKSA9XG4gICAgICBsZXQgd2l0aF92YWx1ZSA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX3ZhbHVlIGV4cHIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZSA+Pj0gZnVuIGN0eHQgLT5cbiAgICAgIGxldCBjdHh0ID0gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9leHByIGN0eHQgaW5cbiAgICAgIGxldCBwZXhwX2Rlc2MsIGRlc2NfZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggcGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpIC0+XG4gICAgICAgICAgICBsZXQgbmFtZSwgbmFtZV9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eHQgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGVfZXhwciwgbW9kdWxlX2V4cHJfZXJyb3JzID1cbiAgICAgICAgICAgICAgbGV0IHdpdGhfbGV0X21vZHVsZSA9XG4gICAgICAgICAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgZXhwclxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1vZHVsZV9leHByLnBtb2RfbG9jIG5hbWUudHh0IGN0eHRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgd2l0aF9sZXRfbW9kdWxlID4+PSBmdW4gY3R4dCAtPiBzZWxmI21vZHVsZV9leHByIGN0eHQgbW9kdWxlX2V4cHJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYm9keSwgYm9keV9lcnJvcnMgPSBzZWxmI2V4cHJlc3Npb24gY3R4dCBib2R5IGluXG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4dCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIG5hbWVfZXJyb3JzOyBtb2R1bGVfZXhwcl9lcnJvcnM7IGJvZHlfZXJyb3JzIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSwgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4dCBwZXhwX2Rlc2NcbiAgICAgIGluXG4gICAgICBsZXQgcGV4cF9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcGV4cF9sb2MgaW5cbiAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgbG9jX3N0YWNrX2Vycm9ycyA9XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uIGN0eHQgcGV4cF9sb2Nfc3RhY2tcbiAgICAgIGluXG4gICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBjdHh0IHBleHBfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgICggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0sXG4gICAgICAgIHNlbGYjcmVjb3JkIGN0eHRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgZGVzY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBsb2Nfc3RhY2tfZXJyb3JzKTtcbiAgICAgICAgICAgIChcImF0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciBjdHh0IG1lID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9leHByID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfbW9kdWxlIG1lIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9leHByID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZXhwciBjdHh0IG1lXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIGN0eHQgbWIgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgbWJcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWIucG1iX2xvYyBtYi5wbWJfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2JpbmRpbmcgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIGN0eHQgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiBtZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptZC5wbWRfbG9jIG1kLnBtZF9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eHQgbXRkID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIG10ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jOm10ZC5wbXRkX2xvY1xuICAgICAgICAgICAgICBtdGQucG10ZF9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eHQgbXRkXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgdmQgPVxuICAgICAgbGV0IHdpdGhfdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfdmFsdWVfZGVzY3JpcHRpb24gdmRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jOnZkLnB2YWxfbG9jIHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgICAgICAgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWVfZGVzY3JpcHRpb24gPj49IGZ1biBjdHh0IC0+IHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgdmRcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyBjdHh0XG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFzIHZiKSA9XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyB2YiB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgKCkgLT4gc3VwZXIjdmFsdWVfYmluZGluZyBjdHh0IHZiXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaW5fYmluZGluZ19jdHh0ID1cbiAgICAgICAgICAgIG1hdGNoIHZhcl9uYW1lc19vZiNwYXR0ZXJuIHB2Yl9wYXQgW10gd2l0aFxuICAgICAgICAgICAgfCBbXSB8IF8gOjogXyA6OiBfIC0+IGN0eHRcbiAgICAgICAgICAgIHwgWyB2YXJfbmFtZSBdIC0+XG4gICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jOnB2Yl9sb2MgdmFyX25hbWUgY3R4dFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9wYXQsIHBhdF9lcnJvcnMgPSBzZWxmI3BhdHRlcm4gY3R4dCBwdmJfcGF0IGluXG4gICAgICAgICAgbGV0IHB2Yl9leHByLCBleHByX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gaW5fYmluZGluZ19jdHh0IHB2Yl9leHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBpbl9iaW5kaW5nX2N0eHQgcHZiX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHB2Yl9sb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eHRcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgcGF0X2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgZXhwcl9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSwgZXJyb3JzKVxuICBlbmRcblxuY2xhc3Mgc2V4cF9vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW1NleHAudF0gQXN0LmxpZnRcbiAgICBtZXRob2QgaW50ID0gc2V4cF9vZl9pbnRcbiAgICBtZXRob2Qgc3RyaW5nID0gc2V4cF9vZl9zdHJpbmdcbiAgICBtZXRob2QgYm9vbCA9IHNleHBfb2ZfYm9vbFxuICAgIG1ldGhvZCBjaGFyID0gc2V4cF9vZl9jaGFyXG4gICAgbWV0aG9kIGZsb2F0ID0gc2V4cF9vZl9mbG9hdFxuICAgIG1ldGhvZCBpbnQzMiA9IHNleHBfb2ZfaW50MzJcbiAgICBtZXRob2QgaW50NjQgPSBzZXhwX29mX2ludDY0XG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHNleHBfb2ZfbmF0aXZlaW50XG4gICAgbWV0aG9kIHVuaXQgPSBzZXhwX29mX3VuaXRcbiAgICBtZXRob2Qgb3B0aW9uID0gc2V4cF9vZl9vcHRpb25cbiAgICBtZXRob2QgbGlzdCA9IHNleHBfb2ZfbGlzdFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EgLT4gU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwLnQgPSBzZXhwX29mX2FycmF5XG4gICAgbWV0aG9kIG90aGVyIDogJ2EuICdhIC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIlxuXG4gICAgbWV0aG9kIHJlY29yZCBmaWVsZHMgPVxuICAgICAgTGlzdFxuICAgICAgICAoTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGxhYmVsLCBzZXhwKSAtPlxuICAgICAgICAgICAgIFNleHAuTGlzdCBbIEF0b20gbGFiZWw7IHNleHAgXSkpXG5cbiAgICBtZXRob2QgY29uc3RyIHRhZyBhcmdzID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aCBbXSAtPiBBdG9tIHRhZyB8IF8gLT4gTGlzdCAoQXRvbSB0YWcgOjogYXJncylcblxuICAgIG1ldGhvZCB0dXBsZSBsID0gTGlzdCBsXG4gIGVuZFxuXG5sZXQgc2V4cF9vZiA9IG5ldyBzZXhwX29mXG4iLCIjIDEgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiBcbm9wZW4gTGV4aW5nXG5cbmxldCB1cGRhdGVfbG9jIGxleGJ1ZiBsaW5lc190b19za2lwID1cbiAgbGV0IHBvcyA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHsgcG9zIHdpdGhcbiAgICBwb3NfbG51bSA9IHBvcy5wb3NfbG51bSArIGxpbmVzX3RvX3NraXA7XG4gICAgcG9zX2JvbCA9IHBvcy5wb3NfY251bTtcbiAgfVxuXG4jIDEzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNlxcMDAwXFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHNraXBfaGFzaF9iYW5nIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNCBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAzIClcbiMgMTEzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDEgLT5cbiMgMTYgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMSApXG4jIDExOCBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAgKCAoKSApXG4jIDEyMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIiwib3BlbiBJbXBvcnRcblxubGV0IHdpdGhfb3V0cHV0IGZuIH5iaW5hcnkgfmYgPVxuICBtYXRjaCBmbiB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgXCItXCIgLT5cbiAgICAgICgqIEZsaXBwaW5nIGJhY2sgYW5kIGZvcnRoIGZyb20gYmluYXJ5IHRvIHRleHQgaXMgbm90XG4gICAgICAgICBhIGdvb2QgaWRlYSwgc28gd2UnbGwgbWFrZSB0d28gc2ltcGxpZnlpbmcgYXNzdW1wdGlvbnM6XG4gICAgICAgICAxLiBBc3N1bWUgdGhhdCBub3RoaW5nIGlzIGJ1ZmZlcmVkIG9uIHN0ZG91dCBiZWZvcmVcbiAgICAgICAgICAgIGVudGVyaW5nIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgICAgZmx1c2ggdGhlIHN0ZG91dCBvbiBlbnRyeS5cbiAgICAgICAgIDIuIEFzc3VtZSB0aGF0IG5vdGhpbmcgZWxzZSBpcyBzZW50IHRvIHN0ZG91dCBhZnRlclxuICAgICAgICAgICAgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyBpdCBpcyBzYWZlIHRvIGxlYXZlIHN0ZG91dFxuICAgICAgICAgICAgY2hhbm5lbCBpbiBiaW5hcnkgbW9kZSAob3IgdGV4dCBtb2RlIGlmIFtiaW5hcnk9dHJ1ZV0pXG4gICAgICAgICAgICBhZnRlciB0aGUgZnVuY3Rpb24gaXMgZG9uZS4gKilcbiAgICAgIHNldF9iaW5hcnlfbW9kZV9vdXQgc3Rkb3V0IGJpbmFyeTtcbiAgICAgIGYgc3Rkb3V0XG4gIHwgU29tZSBmbiAtPiBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmJpbmFyeSB+ZlxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIHwgSW1wbFxuXG4gIGxldCBvZl9maWxlbmFtZSBmbiA6IHQgb3B0aW9uID1cbiAgICBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1sXCIgdGhlbiBTb21lIEltcGxcbiAgICBlbHNlIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxpXCIgdGhlbiBTb21lIEludGZcbiAgICBlbHNlIE5vbmVcblxuICBsZXQgZGVzY3JpYmUgPSBmdW5jdGlvbiBJbXBsIC0+IFwiaW1wbGVtZW50YXRpb25cIiB8IEludGYgLT4gXCJpbnRlcmZhY2VcIlxuICBsZXQgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFBvbHkuZXF1YWxcbmVuZFxuXG5tb2R1bGUgSW50Zl9vcl9pbXBsID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgb2Ygc2lnbmF0dXJlIHwgSW1wbCBvZiBzdHJ1Y3R1cmVcblxuICBsZXQgbWFwIHQgKG1hcCA6IEFzdF90cmF2ZXJzZS5tYXApID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSB4KVxuXG4gIGxldCBtYXBfd2l0aF9jb250ZXh0IHQgKG1hcCA6IF8gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHQpIGN0eCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSBjdHggeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIGN0eCB4KVxuXG4gIGxldCBraW5kIDogXyAtPiBLaW5kLnQgPSBmdW5jdGlvbiBJbnRmIF8gLT4gSW50ZiB8IEltcGwgXyAtPiBJbXBsXG5lbmRcblxubW9kdWxlIEFzdF9pbyA9IHN0cnVjdFxuICB0eXBlIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sX3ZlcnNpb24pXG5cbiAgbGV0IGZhbGxfYmFja19pbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbilcbiAgKCogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlIGlucHV0IHZlcnNpb24gY2FuJ3QgYmUgZGV0ZXJtaW5lZCBkdWUgdG9cbiAgICAgIGxvYWRpbmcgb3IgcHJlcHJvY2Vzc2luZyBlcnJvcnMgKilcblxuICB0eXBlIHQgPSB7XG4gICAgaW5wdXRfbmFtZSA6IHN0cmluZztcbiAgICBpbnB1dF92ZXJzaW9uIDogaW5wdXRfdmVyc2lvbjtcbiAgICBhc3QgOiBJbnRmX29yX2ltcGwudDtcbiAgfVxuXG4gIHR5cGUgcmVhZF9lcnJvciA9XG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0XG4gICAgfCBVbmtub3duX3ZlcnNpb24gb2Ygc3RyaW5nICogaW5wdXRfdmVyc2lvblxuICAgIHwgU291cmNlX3BhcnNlX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTeXN0ZW1fZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cblxuICB0eXBlIGlucHV0X3NvdXJjZSA9IFN0ZGluIHwgRmlsZSBvZiBzdHJpbmdcbiAgdHlwZSBpbnB1dF9raW5kID0gUG9zc2libHlfc291cmNlIG9mIEtpbmQudCAqIHN0cmluZyB8IE5lY2Vzc2FyaWx5X2JpbmFyeVxuXG4gIGxldCByZWFkX2Vycm9yX3RvX3N0cmluZyAoZXJyb3IgOiByZWFkX2Vycm9yKSA9XG4gICAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm90X2FfYmluYXJ5X2FzdCAtPiBcIkVycm9yOiBOb3QgYSBiaW5hcnkgYXN0XCJcbiAgICB8IFVua25vd25fdmVyc2lvbiAocywgXykgLT4gXCJFcnJvcjogVW5rbm93biB2ZXJzaW9uIFwiIF4gc1xuICAgIHwgU291cmNlX3BhcnNlX2Vycm9yIChsb2MsIF8pIC0+XG4gICAgICAgIFwiU291cmNlIHBhcnNlIGVycm9yOlwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcbiAgICB8IFN5c3RlbV9lcnJvciAobG9jLCBfKSAtPiBcIlN5c3RlbSBlcnJvcjogXCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuXG4gIGxldCBwYXJzZV9zb3VyY2VfY29kZSB+KGtpbmQgOiBLaW5kLnQpIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBpY1xuICAgICAgPVxuICAgICgqIFRoZSBpbnB1dCB2ZXJzaW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgaW5wdXQgd2lsbCBnZXQgcGFyc2VkIGJ5XG4gICAgICAgdGhlIGN1cnJlbnQgY29tcGlsZXIgUGFyc2UgbW9kdWxlICopXG4gICAgbGV0IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSBpblxuICAgIHRyeVxuICAgICAgKCogVG8gdGVzdCBpZiBhIGZpbGUgaXMgYW4gQVNUIGZpbGUsIHdlIGhhdmUgdG8gcmVhZCB0aGUgZmlyc3QgZmV3IGJ5dGVzIG9mIHRoZVxuICAgICAgICAgZmlsZS4gSWYgaXQgaXMgbm90LCB3ZSBoYXZlIHRvIHBhcnNlIHRoZXNlIGJ5dGVzIGFuZCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBhc1xuICAgICAgICAgc291cmNlIGNvZGUuXG4gICAgICAgICBUaGUgY29tcGlsZXIganVzdCBkb2VzIFtzZWVrX29uIDBdIGluIHRoaXMgY2FzZSwgaG93ZXZlciB0aGlzIGRvZXNuJ3Qgd29ya1xuICAgICAgICAgd2hlbiB0aGUgaW5wdXQgaXMgYSBwaXBlLlxuICAgICAgICAgV2hhdCB3ZSBkbyBpcyB3ZSBidWlsZCBhIHN0cmluZyBvZiB0aGUgd2hvbGUgc291cmNlLCBhcHBlbmQgdGhlIHByZWZpeFxuICAgICAgICAgYW5kIGJ1aWx0IGEgbGV4aW5nIGJ1ZmZlciBmcm9tIHRoYXQuXG4gICAgICAgICBXZSBoYXZlIHRvIHB1dCBhbGwgdGhlIHNvdXJjZSBpbnRvIHRoZSBsZXhpbmcgYnVmZmVyIGF0IG9uY2UgdGhpcyB3YXlcbiAgICAgICAgIGZvciBzb3VyY2UgcXVvdGF0aW9uIHRvIHdvcmsgaW4gZXJyb3IgbWVzc2FnZXMuXG4gICAgICAgICBTZWUgb2NhbWwjMTIyMzggYW5kIG9jYW1sL2RyaXZlci9wcGFyc2UubWwuICopXG4gICAgICBsZXQgYWxsX3NvdXJjZSA9IHByZWZpeF9yZWFkX2Zyb21fc291cmNlIF4gSW5fY2hhbm5lbC5pbnB1dF9hbGwgaWMgaW5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgYWxsX3NvdXJjZSBpblxuICAgICAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGlucHV0X25hbWUgfTtcbiAgICAgIEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbGV4YnVmIChTb21lIGxleGJ1Zik7XG4gICAgICBTa2lwX2hhc2hfYmFuZy5za2lwX2hhc2hfYmFuZyBsZXhidWY7XG4gICAgICBsZXQgYXN0IDogSW50Zl9vcl9pbXBsLnQgPVxuICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgfCBJbnRmIC0+IEludGYgKFBhcnNlLmludGVyZmFjZSBsZXhidWYpXG4gICAgICAgIHwgSW1wbCAtPiBJbXBsIChQYXJzZS5pbXBsZW1lbnRhdGlvbiBsZXhidWYpXG4gICAgICBpblxuICAgICAgT2sgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSkpXG5cbiAgbGV0IG1hZ2ljX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXJcblxuICBsZXQgcmVhZF9tYWdpYyBpYyA9XG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IHMgPSBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbiBpblxuICAgIGlmIGxlbiA9IG1hZ2ljX2xlbmd0aCB0aGVuIE9rIHMgZWxzZSBFcnJvciBzXG5cbiAgbGV0IHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZSA9XG4gICAgbGV0IHNldF9pbnB1dF9sZXhidWYgaWMgPVxuICAgICAgKCogc2V0IGlucHV0IGxleGJ1ZiBmb3IgZXJyb3IgbWVzc2FnZXMuICopXG4gICAgICBsZXQgc291cmNlID0gSW5fY2hhbm5lbC5pbnB1dF9hbGwgaWMgaW5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgc291cmNlIGluXG4gICAgICBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X2xleGJ1ZiAoU29tZSBsZXhidWYpO1xuICAgICAgbGV4YnVmXG4gICAgaW5cbiAgICBtYXRjaCBJbl9jaGFubmVsLndpdGhfZmlsZSB+YmluYXJ5OnRydWUgaW5wdXRfbmFtZSB+ZjpzZXRfaW5wdXRfbGV4YnVmIHdpdGhcbiAgICB8IChfIDogTGV4aW5nLmxleGJ1ZikgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiBTeXNfZXJyb3IgXyAtPiAoKVxuXG4gIGxldCBmcm9tX2NoYW5uZWwgY2ggfmlucHV0X2tpbmQgPVxuICAgIGxldCBoYW5kbGVfbm9uX2JpbmFyeSBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSA9XG4gICAgICBtYXRjaCBpbnB1dF9raW5kIHdpdGhcbiAgICAgIHwgUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSAtPlxuICAgICAgICAgIHBhcnNlX3NvdXJjZV9jb2RlIH5raW5kIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBjaFxuICAgICAgfCBOZWNlc3NhcmlseV9iaW5hcnkgLT4gRXJyb3IgTm90X2FfYmluYXJ5X2FzdFxuICAgIGluXG4gICAgKCogTWFyc2hhbGxlZCBBU1QgbXVzdCBiZSByZWFkIGluIGJpbmFyeSBtb2RlLiBFdmVuIHRob3VnaCB3ZSBkb24ndCBrbm93XG4gICAgICAgYmVmb3JlIHJlYWRpbmcgdGhlIG1hZ2ljIG51bWJlciB3aGVuIHRoZSBmaWxlIGhhcyBhIG1hcnNoYWxsZWQgQVNULFxuICAgICAgIGl0IGlzIHNhZmUgdG8gcmVhZCBzb3VyY2UgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICopXG4gICAgc2V0X2JpbmFyeV9tb2RlX2luIGNoIHRydWU7XG4gICAgbWF0Y2ggcmVhZF9tYWdpYyBjaCB3aXRoXG4gICAgfCBFcnJvciBzIC0+IGhhbmRsZV9ub25fYmluYXJ5IHNcbiAgICB8IE9rIHMgLT4gKFxuICAgICAgICBtYXRjaCBGaW5kX3ZlcnNpb24uZnJvbV9tYWdpYyBzIHdpdGhcbiAgICAgICAgfCBJbnRmIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbnRmIChJbnB1dF90b19wcHhsaWIuY29weV9zaWduYXR1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IEltcGwgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWU7XG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkltcGwgKElucHV0X3RvX3BweGxpYi5jb3B5X3N0cnVjdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgVW5rbm93biAtPlxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgIHx8IFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgdGhlbiBFcnJvciAoVW5rbm93bl92ZXJzaW9uIChzLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpXG4gICAgICAgICAgICBlbHNlIGhhbmRsZV9ub25fYmluYXJ5IHMpXG5cbiAgbGV0IHJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIGlucHV0X3NvdXJjZSB3aXRoXG4gICAgICB8IFN0ZGluIC0+XG4gICAgICAgICAgc2V0X2JpbmFyeV9tb2RlX2luIHN0ZGluIHRydWU7XG4gICAgICAgICAgZnJvbV9jaGFubmVsIHN0ZGluIH5pbnB1dF9raW5kXG4gICAgICB8IEZpbGUgZm4gLT4gSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZClcbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgd3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uKTsgYXN0IH1cbiAgICAgIH5hZGRfcHB4X2NvbnRleHQgPVxuICAgIGxldCBtb2R1bGUgUHB4bGliX3RvX2lucHV0ID0gQ29udmVydCAoSnMpIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIGxldCBtb2R1bGUgT2NhbWxfdG9faW5wdXQgPSBDb252ZXJ0IChDb21waWxlcl92ZXJzaW9uKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBtYXRjaCBhc3Qgd2l0aFxuICAgIHwgSW50ZiBzZyAtPlxuICAgICAgICBsZXQgc2cgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3NpZ25hdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzZ1xuICAgIHwgSW1wbCBzdCAtPlxuICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3N0cnVjdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzdFxuXG4gIG1vZHVsZSBSZWFkX2JpbiA9IHN0cnVjdFxuICAgIHR5cGUgYXN0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuICAgIHR5cGUgdCA9IHsgYXN0IDogYXN0OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICAgIGxldCByZWFkX2JpbmFyeSBmbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kOk5lY2Vzc2FyaWx5X2JpbmFyeSlcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgeyBhc3Q7IGlucHV0X25hbWU7IF8gfSAtPlxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICAgIHwgSW1wbCBzdHJ1Y3R1cmUgLT4gSW1wbCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgIHwgSW50ZiBzaWduYXR1cmUgLT4gSW50ZiBzaWduYXR1cmVcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgYXN0OyBpbnB1dF9uYW1lIH1cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAocmVhZF9lcnJvcl90b19zdHJpbmcgZSlcblxuICAgIGxldCBnZXRfYXN0IHQgPSB0LmFzdFxuICAgIGxldCBnZXRfaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeXN0ZW0gPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dCB+b3V0cHV0ID1cbiAgICBsZXQgY29tbWFuZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzID4gJXNcIiBwcFxuICAgICAgICAoaWYgU3RyaW5nLmVxdWFsIGlucHV0IFwiLVwiIHRoZW4gXCJcIiBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBpbnB1dClcbiAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBvdXRwdXQpXG4gICAgaW5cbiAgICBpZiBTdGRsaWIuU3lzLmNvbW1hbmQgY29tbWFuZCA9IDAgdGhlbiBPayAoKVxuICAgIGVsc2UgRXJyb3IgKGNvbW1hbmQsIEFzdF9pby5mYWxsX2JhY2tfaW5wdXRfdmVyc2lvbilcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxubW9kdWxlIEZpbGVuYW1lID0gU3RkbGliLkZpbGVuYW1lXG5cbigqIFRPRE86IG1ha2UgdGhlIFwiZGVyaXZpbmcuXCIgZGVwZW5kIG9uIHRoZSBtYXRjaGluZyBhdHRyaWJ1dGUgbmFtZS4gKilcbmxldCBlbmRfbWFya2VyX3NpZyA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU2lnbmF0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGVuZF9tYXJrZXJfc3RyID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTdHJ1Y3R1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5tb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICB0eXBlICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZ2V0X2xvYyA6IHQgLT4gTG9jYXRpb24udFxuICB2YWwgZW5kX21hcmtlciA6ICh0LCB1bml0KSBBdHRyaWJ1dGUuRmxvYXRpbmcudFxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgOiBzaWdcbiAgICB2YWwgYXBwbHkgOlxuICAgICAgPCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIFQudFxuICAgICAgOyBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIFQudFxuICAgICAgOyAuLiA+IC0+XG4gICAgICB0IFQudFxuICBlbmRcblxuICB2YWwgcGFyc2UgOiBMZXhpbmcubGV4YnVmIC0+IHQgbGlzdFxuICB2YWwgcHAgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9fc2V4cCA6IHQgLT4gU2V4cC50XG5lbmQpID1cbnN0cnVjdFxuICBsZXQgZXh0cmFjdF9wcmVmaXggfnBvcyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJwcHhsaWI6IFtAQEBAQEAlc10gYXR0cmlidXRlIG1pc3NpbmdcIlxuICAgICAgICAgICAgICAgIChBdHRyaWJ1dGUuRmxvYXRpbmcubmFtZSBNLmVuZF9tYXJrZXIpLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLkZsb2F0aW5nLmNvbnZlcnRfcmVzIFsgTS5lbmRfbWFya2VyIF0geCB3aXRoXG4gICAgICAgICAgfCBPayBOb25lIC0+IGxvb3AgKHggOjogYWNjKSBsXG4gICAgICAgICAgfCBPayAoU29tZSAoKSkgLT4gT2sgKExpc3QucmV2IGFjYywgKE0uZ2V0X2xvYyB4KS5sb2Nfc3RhcnQpXG4gICAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBGYWlsdXJlIF8gLT4gbG9vcCAoeCA6OiBhY2MpIGwpXG4gICAgaW5cbiAgICBsb29wIFtdIGxcblxuICBsZXQgcmVtb3ZlX2xvYyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICAgIG1ldGhvZCEgbG9jYXRpb24gXyA9IExvY2F0aW9uLm5vbmVcbiAgICAgIG1ldGhvZCEgbG9jYXRpb25fc3RhY2sgXyA9IFtdXG4gICAgZW5kXG5cbiAgbW9kdWxlIE1fbWFwID0gTS5UcmFuc2Zvcm0gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIC0+ICdhXG4gIGVuZClcblxuICBsZXQgcmVtb3ZlX2xvYyB4ID0gTV9tYXAuYXBwbHkgcmVtb3ZlX2xvYyB4XG4gIGxldCByZWMgbGFzdCBwcmV2ID0gZnVuY3Rpb24gW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBkaWZmX2FzdHMgfmdlbmVyYXRlZCB+cm91bmRfdHJpcCA9XG4gICAgbGV0IHdpdGhfdGVtcF9maWxlIGYgPVxuICAgICAgRXhuLnByb3RlY3R4XG4gICAgICAgIChGaWxlbmFtZS50ZW1wX2ZpbGUgXCJwcHhsaWJcIiBcIlwiKVxuICAgICAgICB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZlxuICAgIGluXG4gICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjEgLT5cbiAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjIgLT5cbiAgICAgICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gb3V0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGR1bXAgZm4gYXN0ID1cbiAgICAgICAgICAgICAgICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBTZXhwLnBwX2h1bSBwcGYgKE0udG9fc2V4cCBhc3QpO1xuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBkdW1wIGZuMSBnZW5lcmF0ZWQ7XG4gICAgICAgICAgICAgICAgZHVtcCBmbjIgcm91bmRfdHJpcDtcbiAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwicGF0ZGlmZiAtYXNjaWkgLWFsdC1vbGQgZ2VuZXJhdGVkIC1hbHQtbmV3IFxcXG4gICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvayA9XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiZGlmZiAtLWxhYmVsIGdlbmVyYXRlZCAtLWxhYmVsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgb2sgdGhlbiBJbl9jaGFubmVsLnJlYWRfYWxsIG91dFxuICAgICAgICAgICAgICAgIGVsc2UgXCI8bm8gZGlmZmVyZW5jZXMgcHJvZHVjZWQgYnkgZGlmZj5cIikpKVxuXG4gIGxldCBwYXJzZV9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggTS5wYXJzZSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IHJlYyBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlID1cbiAgICBtYXRjaCAoZXhwZWN0ZWQsIHNvdXJjZSkgd2l0aFxuICAgIHwgW10sIFtdIC0+ICgpXG4gICAgfCBbXSwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgKE0uZ2V0X2xvYyB4KSB3aXRoIGxvY19lbmQgPSAoTS5nZXRfbG9jIChsYXN0IHggbCkpLmxvY19lbmQgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbXVxuICAgIHwgXywgW10gLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyBMb2NhdGlvbi5sb2NfZ2hvc3QgPSBmYWxzZTsgbG9jX3N0YXJ0ID0gZW5kX3BvczsgbG9jX2VuZCA9IGVuZF9wb3MgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBleHBlY3RlZFxuICAgIHwgeCA6OiBleHBlY3RlZCwgeSA6OiBzb3VyY2UgLT5cbiAgICAgICAgbGV0IGxvYyA9IE0uZ2V0X2xvYyB5IGluXG4gICAgICAgIGxldCB4ID0gcmVtb3ZlX2xvYyB4IGluXG4gICAgICAgIGxldCB5ID0gcmVtb3ZlX2xvYyB5IGluXG4gICAgICAgIGlmIFBvbHkuKCA8PiApIHggeSB0aGVuIChcbiAgICAgICAgICBsZXQgcm91bmRfdHJpcCA9XG4gICAgICAgICAgICByZW1vdmVfbG9jIChwYXJzZV9zdHJpbmcgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiBNLnBwIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUG9seS4oIDw+ICkgeCByb3VuZF90cmlwIHRoZW5cbiAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgICAgICAgICAgIFwicHB4bGliOiB0aGUgY29ycmVjdGVkIGNvZGUgZG9lc24ndCByb3VuZC10cmlwLlxcblxcXG4gICAgICAgICAgICAgICBUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHRoZSBPQ2FtbCBwcmludGVyOlxcblxcXG4gICAgICAgICAgICAgICAlc1wiXG4gICAgICAgICAgICAgIChkaWZmX2FzdHMgfmdlbmVyYXRlZDp4IH5yb3VuZF90cmlwKTtcbiAgICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbIHggXSk7XG4gICAgICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcblxuICBsZXQgZG9fbWF0Y2ggfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgc291cmNlID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBleHRyYWN0X3ByZWZpeCB+cG9zIHNvdXJjZSA+PnwgZnVuIChzb3VyY2UsIGVuZF9wb3MpIC0+XG4gICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuZW5kXG5cbigqJCopXG5tb2R1bGUgU3RyID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHN0cl9sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3N0clxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW1wbGVtZW50YXRpb25cbiAgbGV0IHBwID0gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlX2l0ZW1cbmVuZClcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubW9kdWxlIFNpZyA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzaWduYXR1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzaWdfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zaWdcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3NpZ25hdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmludGVyZmFjZVxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmVfaXRlbVxuZW5kKVxuXG4oKiQqKVxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlX3JlcyA9IFN0ci5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zdHJ1Y3R1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IG1hdGNoX3NpZ25hdHVyZV9yZXMgPSBTaWcuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3NpZ25hdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc2lnbmF0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5cbnR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBweF9pbXBvcnQgOiB0eXBlX2RlY2xhcmF0aW9uIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBQcHhfaW1wb3J0IC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG5cbiAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgIGZ1biBhIGIgLT5cbiAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgQ2xhc3NfZXhwciAtPiBFcVxuICAgIHwgQ2xhc3NfZmllbGQsIENsYXNzX2ZpZWxkIC0+IEVxXG4gICAgfCBDbGFzc190eXBlLCBDbGFzc190eXBlIC0+IEVxXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCBDbGFzc190eXBlX2ZpZWxkIC0+IEVxXG4gICAgfCBDb3JlX3R5cGUsIENvcmVfdHlwZSAtPiBFcVxuICAgIHwgRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiAtPiBFcVxuICAgIHwgTW9kdWxlX2V4cHIsIE1vZHVsZV9leHByIC0+IEVxXG4gICAgfCBNb2R1bGVfdHlwZSwgTW9kdWxlX3R5cGUgLT4gRXFcbiAgICB8IFBhdHRlcm4sIFBhdHRlcm4gLT4gRXFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCBTaWduYXR1cmVfaXRlbSAtPiBFcVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIFN0cnVjdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBQcHhfaW1wb3J0LCBQcHhfaW1wb3J0IC0+IEVxXG4gICAgfCBfIC0+XG4gICAgICAgIGFzc2VydCAoUG9seS4oIDw+ICkgKFQgYSkgKFQgYikpO1xuICAgICAgICBOZVxuXG4gIGxldCBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsID1cbiAgICBtYXRjaCB0eXBlX2RlY2wgd2l0aFxuICAgIHwgeyBwdHlwZV9tYW5pZmVzdCA9IFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiAobmFtZSwgXyk7IF8gfTsgXyB9XG4gICAgICAtPlxuICAgICAgICBsZXQgdmlydHVhbF9wYXlsb2FkID1cbiAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfdHlwZSB+bG9jOnR5cGVfZGVjbC5wdHlwZV9sb2MgUmVjdXJzaXZlXG4gICAgICAgICAgICBbIHR5cGVfZGVjbCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyID0gW10gaW5cbiAgICAgICAgU29tZSAoKG5hbWUsIFBTdHIgWyB2aXJ0dWFsX3BheWxvYWQgXSksIGF0dHIpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2V4dGVuc2lvbiA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gKGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMpIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIHsgcGNsX2Rlc2MgPSBQY2xfZXh0ZW5zaW9uIGU7IHBjbF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZTsgcGNmX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGUsIHsgcGN0eV9kZXNjID0gUGN0eV9leHRlbnNpb24gZTsgcGN0eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGU7IHBjdGZfYXR0cmlidXRlcyA9IGE7IF8gfVxuICAgICAgLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENvcmVfdHlwZSwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBlOyBwdHlwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IEV4cHJlc3Npb24sIHsgcGV4cF9kZXNjID0gUGV4cF9leHRlbnNpb24gZTsgcGV4cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfZXhwciwgeyBwbW9kX2Rlc2MgPSBQbW9kX2V4dGVuc2lvbiBlOyBwbW9kX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV90eXBlLCB7IHBtdHlfZGVzYyA9IFBtdHlfZXh0ZW5zaW9uIGU7IHBtdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgUGF0dGVybiwgeyBwcGF0X2Rlc2MgPSBQcGF0X2V4dGVuc2lvbiBlOyBwcGF0X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgUHB4X2ltcG9ydCwgdHlwZV9kZWNsIC0+IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2xcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzX3JlcyA6XG4gICAgICB0eXBlIGEuXG4gICAgICBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IChhLCBMb2NhdGlvbi5FcnJvci50IE5vbkVtcHR5TGlzdC50KSByZXN1bHQgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciAtPiBPayB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IHgucGNsX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiBPayB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IHgucGNmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IE9rIHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IHgucGN0eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPlxuICAgICAgICBPayB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSB4LnBjdGZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiBPayB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSB4LnB0eXBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4gT2sgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0geC5wZXhwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiBPayB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSB4LnBtb2RfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IE9rIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IHgucG10eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiBPayB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSB4LnBwYXRfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFBweF9pbXBvcnQgLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1lcmdlX2F0dHJpYnV0ZXNfcmVzIHQgeCBhdHRyc1xuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImV4dGVuc2lvblwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1biAoQ29udGV4dC5UIGN0eCkgLT4gU29tZSAoQ29udGV4dC5kZXNjIGN0eCkpXG5cbm1vZHVsZSBNYWtlIChDYWxsYmFjayA6IHNpZ1xuICB0eXBlICdhIHRcbmVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcGF5bG9hZF9wYXJzZXIgPVxuICAgIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgICAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udCAqICdiIENhbGxiYWNrLnRcbiAgICAgICAgLT4gKCdhLCAnYykgcGF5bG9hZF9wYXJzZXJcblxuICB0eXBlICgnY29udGV4dCwgJ3BheWxvYWQpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnY29udGV4dCBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6IChwYXlsb2FkLCAncGF5bG9hZCkgcGF5bG9hZF9wYXJzZXI7XG4gICAgd2l0aF9hcmcgOiBib29sO1xuICB9XG5cbiAgbGV0IGRlY2xhcmUgOlxuICAgICAgdHlwZSBhLlxuICAgICAgd2l0aF9hcmc6Ym9vbCAtPlxuICAgICAgc3RyaW5nIC0+XG4gICAgICBhIENvbnRleHQudCAtPlxuICAgICAgKHBheWxvYWQsICdiLCAncGF5bG9hZCkgQXN0X3BhdHRlcm4udCAtPlxuICAgICAgJ2IgQ2FsbGJhY2sudCAtPlxuICAgICAgKGEsICdwYXlsb2FkKSB0ID1cbiAgIGZ1biB+d2l0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayAtPlxuICAgICgqIENoZWNrIHRoYXQgdGhlcmUgaXMgbm8gY29sbGlzaW9ucyBiZXR3ZWVuIHBweF9pbXBvcnQgYW5kIGNvcmVfdHlwZVxuICAgICAgIGV4dGVuc2lvbnMgKilcbiAgICAobWF0Y2ggY29udGV4dCB3aXRoXG4gICAgfCBDb250ZXh0LlBweF9pbXBvcnQgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBDb3JlX3R5cGUpIG5hbWVcbiAgICB8IENvbnRleHQuQ29yZV90eXBlIC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgUHB4X2ltcG9ydCkgbmFtZVxuICAgIHwgXyAtPiAoKSk7XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEV4dGVuc2lvbiByZWdpc3RyYXIgKENvbnRleHQuVCBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gICAgICB3aXRoX2FyZztcbiAgICB9XG5cbiAgbGV0IGZpbmQgdHMgKGV4dCA6IGV4dGVuc2lvbikgPVxuICAgIGxldCB7IHR4dCA9IG5hbWU7IGxvYyB9ID0gZnN0IGV4dCBpblxuICAgIGxldCBuYW1lLCBhcmcgPSBOYW1lLnNwbGl0X3BhdGggbmFtZSBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgXyA6OiBfIDo6IF8gYXMgbCAtPlxuICAgICAgICBFcnJvclxuICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGV4dGVuc2lvbnM6ICVzXCJcbiAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgIFtdIClcbiAgICB8IFsgdCBdIC0+XG4gICAgICAgIGlmIChub3QgdC53aXRoX2FyZykgJiYgT3B0aW9uLmlzX3NvbWUgYXJnIHRoZW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgICAgICAgICBcIkV4dGVuc2lvbiAlcyBkb2Vzbid0IGV4cGVjdCBhIHBhdGggYXJndW1lbnRcIiBuYW1lLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYXJnID1cbiAgICAgICAgICAgIE9wdGlvbi5tYXAgYXJnIH5mOihmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCBzaGlmdCA9IFN0cmluZy5sZW5ndGggbmFtZSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBsb2MubG9jX3N0YXJ0IGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHh0ID0gTG9uZ2lkZW50LnBhcnNlIHM7XG4gICAgICAgICAgICAgICAgICBsb2MgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGFydCB3aXRoIHBvc19jbnVtID0gc3RhcnQucG9zX2NudW0gKyBzaGlmdCB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayAoU29tZSAodCwgYXJnKSlcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjdHggcGF0dCBmXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGN0eCBwYXR0IChmdW4gfmFyZzpfIC0+IGYpXG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBmaW5kIHRzIGV4dCA+Pj0gZnVuIHIgLT5cbiAgICBtYXRjaCByIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+YXJnKSA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgU29tZSBwYXlsb2FkXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmxvYyBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5tb2R1bGUgTSA9IE1ha2UgKHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLnQgLT4gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuZW5kKVxuXG50eXBlICdhIGV4cGFuZGVyX3Jlc3VsdCA9IFNpbXBsZSBvZiAnYSB8IElubGluZSBvZiAnYSBsaXN0XG5cbm1vZHVsZSBGb3JfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsICdhIGV4cGFuZGVyX3Jlc3VsdCkgTS50XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgICAgICAgfCBTaW1wbGUgeCAtPiBTb21lIHhcbiAgICAgICAgfCBJbmxpbmUgXyAtPiBmYWlsd2l0aCBcIkV4dGVuc2lvbi5jb252ZXJ0XCIpXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aCBTaW1wbGUgeCAtPiBTb21lIFsgeCBdIHwgSW5saW5lIGwgLT4gU29tZSBsKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZSB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbnR5cGUgdCA9IFQgOiBfIEZvcl9jb250ZXh0LnQgLT4gdFxuXG5sZXQgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIDogdHlwZSBhLiBmdW5jOnN0cmluZyAtPiBhIENvbnRleHQudCAtPiB1bml0ID1cbiBmdW4gfmZ1bmMgY3R4IC0+XG4gIG1hdGNoIGN0eCB3aXRoXG4gIHwgQ29udGV4dC5DbGFzc19maWVsZCAtPiAoKVxuICB8IENvbnRleHQuQ2xhc3NfdHlwZV9maWVsZCAtPiAoKVxuICB8IENvbnRleHQuU2lnbmF0dXJlX2l0ZW0gLT4gKClcbiAgfCBDb250ZXh0LlN0cnVjdHVyZV9pdGVtIC0+ICgpXG4gIHwgY29udGV4dCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiJXM6ICVzIGNhbid0IGJlIGlubGluZWRcIiBmdW5jXG4gICAgICAgIChDb250ZXh0LmRlc2MgY29udGV4dClcblxubGV0IHJlYyBmaWx0ZXJfYnlfY29udGV4dCA6XG4gICAgdHlwZSBhLiBhIENvbnRleHQudCAtPiB0IGxpc3QgLT4gYSBGb3JfY29udGV4dC50IGxpc3QgPVxuIGZ1biBjb250ZXh0IGV4cGFuZGVycyAtPlxuICBtYXRjaCBleHBhbmRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgVCB0IDo6IHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggQ29udGV4dC5lcSBjb250ZXh0IHQuY29udGV4dCB3aXRoXG4gICAgICB8IEVxIC0+IHQgOjogZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0XG4gICAgICB8IE5lIC0+IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdClcblxubGV0IHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgY3R4IChuYW1lLCBfKSA9XG4gIGlmXG4gICAgbm90XG4gICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgRXh0ZW5zaW9uIG5hbWUudHh0XG4gICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpXG4gIHRoZW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciAoQ29udGV4dC5UIGN0eClcbiAgICAgICAgXCJFeHRlbnNpb24gYCVzJyB3YXMgbm90IHRyYW5zbGF0ZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSBhY2MgPVxuICAgICAgYWNjXG4gICAgICBAIFtcbiAgICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgICBdXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDb3JlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBQYXR0ZXJuIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIEV4cHJlc3Npb24gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3RmX2V4dGVuc2lvbiBleHQgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGVfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG10eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU2lnbmF0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTdHJ1Y3R1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjXG4gIGVuZFxuXG5sZXQgZXJyb3JfbGlzdF90b19leGNlcHRpb24gPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjcGF0dGVybl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjZXhwcmVzc2lvbl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV9leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuICBlbmRcblxubW9kdWxlIFYzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dCB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZVwiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcblxuICBsZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcbmVuZFxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBfX2RlY2xhcmVfcHB4X2ltcG9ydCBuYW1lIGV4cGFuZCA9XG4gICgqIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIHVud3JhcCB0aGUgdHlwZSBkZWNsYXJhdGlvbiBmcm9tIHRoZSBwYXlsb2FkXG4gICAgIGFzc2VtYmxlZCBieSBbQ29udGV4dC5nZXRfcHB4X2ltcG9ydF9leHRlbnNpb25dICopXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfdHlwZSByZWN1cnNpdmUgKF9fIF46OiBuaWwpIF46OiBuaWwpKSBpblxuICBWMy5kZWNsYXJlIG5hbWUgQ29udGV4dC5QcHhfaW1wb3J0IHBhdHRlcm4gZXhwYW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlID0gZGVjbGFyZVxuICBsZXQgZGVjbGFyZV9pbmxpbmUgPSBkZWNsYXJlX2lubGluZVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgRSA9IEV4dGVuc2lvblxubW9kdWxlIEVDID0gRXh0ZW5zaW9uLkNvbnRleHRcbm1vZHVsZSBBID0gQXR0cmlidXRlXG5tb2R1bGUgQUMgPSBBdHRyaWJ1dGUuQ29udGV4dFxuXG5tb2R1bGUgUnVsZSA9IHN0cnVjdFxuICBtb2R1bGUgQXR0cl9ncm91cF9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6XG4gICAgICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgICAgICdiIGxpc3QgLT5cbiAgICAgICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAgICAgJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgQXR0cl9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIFNwZWNpYWxfZnVuY3Rpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgaWRlbnQgOiBMb25naWRlbnQudDtcbiAgICAgIGV4cGFuZCA6IFBhcnNldHJlZS5leHByZXNzaW9uIC0+IFBhcnNldHJlZS5leHByZXNzaW9uIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudF9raW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRmxvYXQgfCBJbnRlZ2VyXG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN1ZmZpeCA6IGNoYXI7XG4gICAgICBraW5kIDogQ29uc3RhbnRfa2luZC50O1xuICAgICAgZXhwYW5kIDogTG9jYXRpb24udCAtPiBzdHJpbmcgLT4gUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBFeHRlbnNpb24gOiBFeHRlbnNpb24udCB0XG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24gOiBTcGVjaWFsX2Z1bmN0aW9uLnQgdFxuICAgICAgfCBDb25zdGFudCA6IENvbnN0YW50LnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG5cbiAgICB0eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG4gICAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgICAgZnVuIGEgYiAtPlxuICAgICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICAgIHwgRXh0ZW5zaW9uLCBFeHRlbnNpb24gLT4gRXFcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiwgU3BlY2lhbF9mdW5jdGlvbiAtPiBFcVxuICAgICAgfCBDb25zdGFudCwgQ29uc3RhbnQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsLCBBdHRyX3N0cl90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsLCBBdHRyX3NpZ190eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQsIEF0dHJfc3RyX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0LCBBdHRyX3NpZ190eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24sIEF0dHJfc3RyX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24sIEF0dHJfc2lnX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgXyAtPiBOZVxuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2EgRmllbGQudCAqICdhIC0+IHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2dyb3VwX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICdiIGxpc3QgLT5cbiAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0KSAtPlxuICAgIHRcblxuICBsZXQgcmVjIGZpbHRlciA6IHR5cGUgYS4gYSBGaWVsZC50IC0+IHQgbGlzdCAtPiBhIGxpc3QgPVxuICAgZnVuIGZpZWxkIGwgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBUIChmaWVsZCcsIHgpIDo6IGwgLT4gKFxuICAgICAgICBtYXRjaCBGaWVsZC5lcSBmaWVsZCBmaWVsZCcgd2l0aFxuICAgICAgICB8IEZpZWxkLkVxIC0+IHggOjogZmlsdGVyIGZpZWxkIGxcbiAgICAgICAgfCBGaWVsZC5OZSAtPiBmaWx0ZXIgZmllbGQgbClcblxuICBsZXQgZXh0ZW5zaW9uIGV4dCA9IFQgKEV4dGVuc2lvbiwgZXh0KVxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9uIGlkIGYgPVxuICAgIFQgKFNwZWNpYWxfZnVuY3Rpb24sIHsgbmFtZSA9IGlkOyBpZGVudCA9IExvbmdpZGVudC5wYXJzZSBpZDsgZXhwYW5kID0gZiB9KVxuXG4gIGxldCBjb25zdGFudCBraW5kIHN1ZmZpeCBleHBhbmQgPSBUIChDb25zdGFudCwgeyBzdWZmaXg7IGtpbmQ7IGV4cGFuZCB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5lbmRcblxubW9kdWxlIEdlbmVyYXRlZF9jb2RlX2hvb2sgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzaW5nbGVfb3JfbWFueSA9IFNpbmdsZSBvZiAnYSB8IE1hbnkgb2YgJ2EgbGlzdFxuXG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEV4dGVuc2lvbi5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBzaW5nbGVfb3JfbWFueSAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbiAgbGV0IHJlcGxhY2UgdCBjb250ZXh0IGxvYyB4ID0gdC5mIGNvbnRleHQgbG9jIHhcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNYW55IFtdIC0+ICgpXG4gICAgfCBfIC0+IHQuZiBjb250ZXh0IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSB4XG5lbmRcblxuKCogVXNlZCB0byBpbnNlcnQgZXJyb3IgZXh0ZW5zaW9ucyAqKVxubGV0IHdyYXBfZXh0ZW5zaW9uIDogdHlwZSBhLiBsb2M6TG9jYXRpb24udCAtPiBhIEVDLnQgLT4gYSAtPiBleHRlbnNpb24gLT4gYSA9XG4gZnVuIH5sb2MgdCBvcmlnaW5hbF9ub2RlIGV4dGVuc2lvbiAtPlxuICAoKiBQcmVmaXhpbmcgY29uc3RydWN0b3JzIHdpdGggdGhlIG1vZHVsZSBwYXRoIGlzIG5lY2Vzc2FyeSBmb3IgT0NhbWwgPCA0LjA3LFxuICAgICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy82ODUyICopXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVDLkNsYXNzX2V4cHIgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY2xfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfZmllbGQgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY2ZfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjdGZfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ29yZV90eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5FeHByZXNzaW9uIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGV4cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtb2RfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuTW9kdWxlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wbXR5X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLlBhdHRlcm4gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wcGF0X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLlNpZ25hdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5TdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG4gIHwgRUMuUHB4X2ltcG9ydCAtPlxuICAgICAgKCogSW5zZXJ0IHRoZSBlcnJvciBpbiB0aGUgdHlwZSBkZWNsIG1hbmlmZXN0ICopXG4gICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPVxuICAgICAgICBTb21lIChBc3RfYnVpbGRlci5EZWZhdWx0LnB0eXBfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uKVxuICAgICAgaW5cbiAgICAgIHsgb3JpZ2luYWxfbm9kZSB3aXRoIHB0eXBlX21hbmlmZXN0IH1cblxubGV0IGV4bl90b19leHRlbnNpb24gZXhuID1cbiAgbGV0IGVycm9yID0gZXhuX3RvX2xvY19lcnJvciBleG4gaW5cbiAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICBsZXQgZXh0ZW5zaW9uID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIChleHRlbnNpb24sIGxvYylcblxubGV0IGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCBvcmlnaW5hbF9ub2RlIGV4biA9XG4gIGxldCBleHRlbnNpb24sIGxvYyA9IGV4bl90b19leHRlbnNpb24gZXhuIGluXG4gIHdyYXBfZXh0ZW5zaW9uIH5sb2MgY29udGV4dCBvcmlnaW5hbF9ub2RlIGV4dGVuc2lvblxuXG5sZXQgZXhuX3RvX3N0cmkgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuXG5sZXQgZXhuX3RvX3NpZ2kgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuXG5sZXQgcmVjIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuKSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIEVDLm1lcmdlX2F0dHJpYnV0ZXNfcmVzIGNvbnRleHQgeCBhdHRyc1xuICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycylcblxubGV0IG1hcF9ub2RlIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmhvb2sgfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0XG4gICAgICAgICAgICAoRUMubWVyZ2VfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnMpXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgPj58IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgbG9jIChTaW5nbGUgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgIGdlbmVyYXRlZF9jb2RlKVxuXG5sZXQgcmVjIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9vayB+ZW1iZWRfZXJyb3JzXG4gICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIFtdXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIFRoZXNlIHR3byBsZXRzIGZvcmNlIHRoZSBldmFsdWF0aW9uIG9yZGVyLCBzbyB0aGF0IGVycm9ycyBhcmUgcmVwb3J0ZWQgaW4gdGhlXG4gICAgICAgICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGZpbGUuICopXG4gICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSBbIGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4biBdKSlcbiAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgICAgIHwgU29tZSBjb252ZXJ0ZWQgLT5cbiAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGNvbnZlcnRlZCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgICAgICAgPj49IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgKE1hbnkgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGNvZGUgLT4gZ2VuZXJhdGVkX2NvZGUgQCBjb2RlKSlcblxubGV0IG1hcF9ub2RlcyA9IG1hcF9ub2RlcyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxubGV0IHRhYmxlX29mX3NwZWNpYWxfZnVuY3Rpb25zIHNwZWNpYWxfZnVuY3Rpb25zID1cbiAgbWF0Y2hcbiAgICBMaXN0Lm1hcCBzcGVjaWFsX2Z1bmN0aW9uc1xuICAgICAgfmY6KGZ1biB7IFJ1bGUuU3BlY2lhbF9mdW5jdGlvbi5pZGVudDsgZXhwYW5kOyBfIH0gLT4gKGlkZW50LCBleHBhbmQpKVxuICAgICgqIFdlIGV4cGVjdCB0aGUgbG9va3VwIHRvIGZhaWwgbW9zdCBvZiB0aGUgdGltZSwgYnkgbWFraW5nIHRoZSB0YWJsZSBiaWcgKGFuZFxuICAgICAgIHNwYXJzZSksIHdlIG1ha2UgaXQgbW9yZSBsaWtlbHkgdG8gZmFpbCBxdWlja2x5ICopXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdCB+c2l6ZToobWF4IDEwMjQgKExpc3QubGVuZ3RoIHNwZWNpYWxfZnVuY3Rpb25zICogMikpXG4gIHdpdGhcbiAgfCBPayB0YWJsZSAtPiB0YWJsZVxuICB8IEVycm9yIGlkZW50IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJDb250ZXh0X2ZyZWUuVjEubWFwX3RvcF9kb3duOiAlcyBwcmVzZW50IHR3aWNlIGluIGxpc3Qgb2Ygc3BlY2lhbCBcXFxuICAgICAgICAgZnVuY3Rpb25zXCJcbiAgICAgICAgKExpc3QuZmluZF9tYXBfZXhuIHNwZWNpYWxfZnVuY3Rpb25zIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgIGlmIFBvbHkuZXF1YWwgci5pZGVudCBpZGVudCB0aGVuIFNvbWUgci5uYW1lIGVsc2UgTm9uZSkpXG5cbigqIFtnZXRfZ3JvdXAgYXR0ciBsXSByZXR1cm5zIHRoZSBsaXN0IG9mIHRoZSBhdHRyaWJ1dGVzIGZvciBlYWNoXG4gICBub2RlIGluIFtsXS5cbiAgIElmIFtsXSBpcyBlbXB0eSBvciBpZiBub25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGF2ZSBhbiBhdHRyaWJ1dGUgYXR0YWNoZWQsXG4gICBbZ2V0X2dyb3VwXSByZXR1cm5zIFtOb25lXS5cbiAgIElmIFtsXSBpcyBub3QgZW1wdHkgYW5kIGF0IGxlYXN0IG9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhcyBhbiBhdHRyaWJ1ZVxuICAgYXR0YWNoZWQsIFtnZXRfZ3JvdXBdIHJldHVybnMgdGhlIGVxdWl2YWxlbnQgb2ZcbiAgIFtTb21lIChMaXN0Lm1hcCB+ZjooQXR0cmlidXRlLmdldCBhdHRyKSBsKV0uICopXG5sZXQgcmVjIGdldF9ncm91cCBhdHRyIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICB8IHggOjogbCAtPiAoXG4gICAgICBnZXRfZ3JvdXAgYXR0ciBsID4+PSBmdW4gZ3JvdXAgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGF0dHIgeCB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZSA+PnwgZnVuIGF0dHIyIC0+XG4gICAgICBtYXRjaCAoYXR0cjIsIGdyb3VwKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgfCBOb25lLCBTb21lIHZhbHMgLT4gU29tZSAoTm9uZSA6OiB2YWxzKVxuICAgICAgfCBTb21lIHZhbHVlLCBOb25lIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogTGlzdC5tYXAgbCB+ZjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgdmFscyAtPiBTb21lIChTb21lIHZhbHVlIDo6IHZhbHMpKVxuXG4oKiBTYW1lIGFzIFtMaXN0LnJldl0gdGhlbiBbTGlzdC5jb25jYXRdIGJ1dCBleHBlY3RpbmcgdGhlIGlucHV0IHRvIGJlIG9mIGxlbmd0aCA8PSAyICopXG5sZXQgcmV2X2NvbmNhdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBbIHggXSAtPiB4XG4gIHwgWyB4OyB5IF0gLT4geSBAIHhcbiAgfCBsIC0+IExpc3QuY29uY2F0IChMaXN0LnJldiBsKVxuXG5sZXQgc29ydF9hdHRyX2dyb3VwX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IHNvcnRfYXR0cl9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jID1cbiAgRXJyb3JcbiAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICBcIkEgY29udGV4dC1mcmVlIHJ1bGUgZGVsZXRlZCBvciBhZGRlZCBhdHRyaWJ1ZXMgb2YgYSBzdHIvc2lnIGl0ZW1cIixcbiAgICAgIFtdIClcblxuKCogUmV0dXJucyB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXR0cmlidXRlIGhhbmRsZXJzLiBXZSBkb24ndCByZW1vdmUgdGhlc2UgYXR0cmlidXRlcywgYXNcbiAgIGFub3RoZXIgcGFzcyBtaWdodCBpbnRlcnByZXQgdGhlbSBsYXRlci4gRm9yIGluc3RhbmNlIGJvdGggcHB4X2Rlcml2aW5nIGFuZFxuICAgcHB4bGliX2Rlcml2aW5nIGludGVycHJldHMgW0BAZGVyaXZpbmddIGF0dHJpYnV0ZXMuXG5cbiAgIFRoaXMgY29tcGxleGl0eSBpcyBob3JyaWJsZSwgYnV0IGluIHByYWN0aWNlIHdlIGRvbid0IGNhcmUgYXMgW2F0dHJzXSBpcyBhbHdheXMgYSBsaXN0XG4gICBvZiBvbmUgZWxlbWVudDsgaXQgb25seSBoYXMgW0BAZGVyaXZpbmddLlxuKilcbmxldCBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cnMgcmYgfml0ZW1zIH5leHBhbmRlZF9pdGVtcyB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzIH5jb252ZXJ0X2V4biA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pXG4gICAgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuVCBncm91cCkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBpdGVtcyA+Pj0gZnVuIGcxIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW1zID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlcywgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6Z3JvdXAuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gZ3JvdXAuZXhwYW5kIH5jdHh0IHJmIGV4cGFuZGVkX2l0ZW1zIHZhbHVlcyBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JfaXRlbSA9IFsgY29udmVydF9leG4gZXhuIF0gaW5cbiAgICAgICAgICAgIHJldHVybiAoZXJyb3JfaXRlbSA6OiBhY2MpKSlcblxubGV0IGhhbmRsZV9hdHRyX2lubGluZSBhdHRycyB+Y29udmVydF9leG4gfml0ZW0gfmV4cGFuZGVkX2l0ZW0gfmxvYyB+YmFzZV9jdHh0XG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gYWNjIChSdWxlLkF0dHJfaW5saW5lLlQgYSkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMSAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgXyAtPiAoXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5tYWtlIH5kZXJpdmVkX2l0ZW1fbG9jOmxvY1xuICAgICAgICAgICAgICB+aW5saW5lOmEuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gYS5leHBhbmQgfmN0eHQgZXhwYW5kZWRfaXRlbSB2YWx1ZSBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JfaXRlbSA9IFsgY29udmVydF9leG4gZXhuIF0gaW5cbiAgICAgICAgICAgIHJldHVybiAoZXJyb3JfaXRlbSA6OiBhY2MpKSlcblxubW9kdWxlIEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBsaXN0IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuZW5kXG5cbmNsYXNzIG1hcF90b3BfZG93biA/KGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wKVxuICA/KGdlbmVyYXRlZF9jb2RlX2hvb2sgPSBHZW5lcmF0ZWRfY29kZV9ob29rLm5vcCkgPyhlbWJlZF9lcnJvcnMgPSBmYWxzZSkgcnVsZXNcbiAgPVxuICBsZXQgaG9vayA9IGdlbmVyYXRlZF9jb2RlX2hvb2sgaW5cblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICAgIFJ1bGUuZmlsdGVyIFNwZWNpYWxfZnVuY3Rpb24gcnVsZXMgfD4gdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnNcbiAgaW5cbiAgbGV0IGNvbnN0YW50cyA9XG4gICAgUnVsZS5maWx0ZXIgQ29uc3RhbnQgcnVsZXNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChjIDogUnVsZS5Db25zdGFudC50KSAtPiAoKGMuc3VmZml4LCBjLmtpbmQpLCBjLmV4cGFuZCkpXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdF9leG5cbiAgaW5cbiAgbGV0IGV4dGVuc2lvbnMgPSBSdWxlLmZpbHRlciBFeHRlbnNpb24gcnVsZXMgaW5cbiAgbGV0IGNsYXNzX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZV9maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZV9maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjb3JlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNvcmVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBleHByZXNzaW9uID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5leHByZXNzaW9uIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV9leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfZXhwciBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgcGF0dGVybiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMucGF0dGVybiBleHRlbnNpb25zXG4gIGFuZCBzaWduYXR1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc2lnbmF0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgc3RydWN0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnN0cnVjdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHBweF9pbXBvcnQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLlBweF9pbXBvcnQgZXh0ZW5zaW9ucyBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xzLCBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xzLCBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRzLCBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRzLCBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25zLCBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25zLCBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IG1hcF9ub2RlID0gbWFwX25vZGUgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSA9IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9pbmxpbmUgPSBoYW5kbGVfYXR0cl9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzIGFzIHN1cGVyXG5cbiAgICAoKiBObyBwb2ludCByZWN1cnNpbmcgaW50byBldmVyeSBsb2NhdGlvbiAqKVxuICAgIG1ldGhvZCEgbG9jYXRpb24gXyB4ID0gcmV0dXJuIHhcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNvcmVfdHlwZSBjb3JlX3R5cGUgc3VwZXIjY29yZV90eXBlIHgucHR5cF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgcGF0dGVybiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5wYXR0ZXJuIHBhdHRlcm4gc3VwZXIjcGF0dGVybiB4LnBwYXRfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gYmFzZV9jdHh0IGUgPVxuICAgICAgbGV0IHdpdGhfY29udGV4dCA9XG4gICAgICAgICgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIGUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj49IGZ1biBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCBlKVxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIEV4cHJlc3Npb25cbiAgICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBdXG4gICAgICAgICAgICAgIGVcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDplXG4gICAgICAgICAgICA+PnwgZnVuIGUgLT5cbiAgICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGJhc2VfY3R4dCwgZSlcbiAgICAgIGluXG4gICAgICB3aXRoX2NvbnRleHQgPj49IGZ1biAoYmFzZV9jdHh0LCBlKSAtPlxuICAgICAgbGV0IGV4cGFuZGVkID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICAgIG1hcF9ub2RlIEVDLmV4cHJlc3Npb24gZXhwcmVzc2lvblxuICAgICAgICAgICAgICAoZnVuIF8gZSAtPiByZXR1cm4gZSlcbiAgICAgICAgICAgICAgZS5wZXhwX2xvYyBiYXNlX2N0eHQgZVxuICAgICAgICB8IF8gLT4gcmV0dXJuIGVcbiAgICAgIGluXG4gICAgICBleHBhbmRlZCA+Pj0gZnVuIGUgLT5cbiAgICAgIGxldCBleHBhbmRfY29uc3RhbnQga2luZCBjaGFyIHRleHQgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IGNvbnN0YW50cyAoY2hhciwga2luZCkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICB8IFNvbWUgZXhwYW5kIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgKGV4cGFuZCBlLnBleHBfbG9jIHRleHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2FwcGx5ICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IGlkOyBfIH0gYXMgZnVuYyksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9pZGVudCBpZCAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9pbnRlZ2VyIChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBJbnRlZ2VyIGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICByZXR1cm4gKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9mbG9hdCAocywgU29tZSBjKSkgLT4gKFxuICAgICAgICAgIHRyeSBleHBhbmRfY29uc3RhbnQgRmxvYXQgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG5cbiAgICAoKiBQcmUtY29uZGl0aW9uczpcbiAgICAgICAtIGUucGV4cF9kZXNjID0gUGV4cF9hcHBseShmdW5jLCBhcmdzKVxuICAgICAgIC0gZnVuYy5wZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF9cbiAgICAqKVxuICAgIG1ldGhvZCBwcml2YXRlIHBleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICA9XG4gICAgICBsZXQgeyBwZXhwX2Rlc2MgPSBfOyBwZXhwX2xvYzsgcGV4cF9hdHRyaWJ1dGVzOyBwZXhwX2xvY19zdGFjayB9ID0gZSBpblxuICAgICAgbGV0IGZ1bmMgPVxuICAgICAgICBsZXQgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBmdW5jIGluXG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBiYXNlX2N0eHQgcGV4cF9hdHRyaWJ1dGVzID4+fCBmdW4gcGV4cF9hdHRyaWJ1dGVzIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBwZXhwX2Rlc2M7XG4gICAgICAgICAgcGV4cF9sb2MgKCogbG9jYXRpb24gZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZCAqKTtcbiAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBmdW5jID4+PSBmdW4gZnVuYyAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gKGxhYiwgZXhwKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBleHAgPj58IGZ1biBleHAgLT4gKGxhYiwgZXhwKSlcbiAgICAgICAgfD4gY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBhcmdzID4+PSBmdW4gYXJncyAtPlxuICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZnVuYywgYXJncyk7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrO1xuICAgICAgfVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGUgY2xhc3NfdHlwZSBzdXBlciNjbGFzc190eXBlIHgucGN0eV9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICB4LnBjdGZfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZXhwciBjbGFzc19leHByIHN1cGVyI2NsYXNzX2V4cHIgeC5wY2xfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX2ZpZWxkIGNsYXNzX2ZpZWxkIHN1cGVyI2NsYXNzX2ZpZWxkIHgucGNmX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5tb2R1bGVfdHlwZSBtb2R1bGVfdHlwZSBzdXBlciNtb2R1bGVfdHlwZSB4LnBtdHlfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGJhc2VfY3R4dCB4ID1cbiAgICAgICgoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX21vZHVsZSB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCB4KVxuICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBNb2R1bGVfZXhwclxuICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIF1cbiAgICAgICAgICAgICB4XG4gICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgID4+fCBmdW4geCAtPlxuICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgYmFzZV9jdHh0LCB4KSlcbiAgICAgID4+PSBmdW4gKGJhc2VfY3R4dCwgeCkgLT5cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV9leHByIG1vZHVsZV9leHByIHN1cGVyI21vZHVsZV9leHByIHgucG1vZF9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuc3RydWN0dXJlX2l0ZW0gc3RydWN0dXJlX2l0ZW0gc3VwZXIjc3RydWN0dXJlX2l0ZW0geC5wc3RyX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zaWduYXR1cmVfaXRlbSBzaWduYXR1cmVfaXRlbSBzdXBlciNzaWduYXR1cmVfaXRlbSB4LnBzaWdfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3N0cnVjdHVyZSBiYXNlX2N0eHQgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSA9XG4gICAgICBzZWxmI3BhdHRlcm4gYmFzZV9jdHh0IHBjc3RyX3NlbGYgPj49IGZ1biBwY3N0cl9zZWxmIC0+XG4gICAgICBtYXBfbm9kZXMgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGRcbiAgICAgICAgKGZ1biB4IC0+IHgucGNmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc3RyX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3N0cl9maWVsZHMgLT4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLlBweF9pbXBvcnQgcHB4X2ltcG9ydCBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHgucHR5cGVfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3NpZ25hdHVyZSBiYXNlX2N0eHQgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSA9XG4gICAgICBzZWxmI2NvcmVfdHlwZSBiYXNlX2N0eHQgcGNzaWdfc2VsZiA+Pj0gZnVuIHBjc2lnX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY3RmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc2lnX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3NpZ19maWVsZHMgLT4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgKCogVE9ETzogdHJ5IHRvIGZhY3Rvcml6ZSAjc3RydWN0dXJlIGFuZCAjc2lnbmF0dXJlIHdpdGhvdXQgbWV0YS1wcm9ncmFtbWluZyAqKVxuICAgICgqJCopXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgYmFzZV9jdHh0IHN0ID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU3RydWN0dXJlX2l0ZW0gaXRlbS5wc3RyX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzdHJfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zdHJ1Y3R1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU3RydWN0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc3RydWN0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHN0cl9sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zdHJpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHN0cl9kZXNjLCBleHBhbmRlZF9pdGVtLnBzdHJfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlIChyZiwgdGRzKSwgUHN0cl90eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgbXRkLCBQc3RyX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHRlLCBQc3RyX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGVjLCBQc3RyX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuICAgIG1ldGhvZCEgc2lnbmF0dXJlIGJhc2VfY3R4dCBzZyA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFNpZ25hdHVyZV9pdGVtIGl0ZW0ucHNpZ19sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc2lnX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc2lnbmF0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFNpZ25hdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHNnIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHNpZ25hdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzaWdfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF9leG4gPSBleG5fdG9fc2lnaSBpblxuICAgICAgICAgICAgICAgIG1hdGNoIChpdGVtLnBzaWdfZGVzYywgZXhwYW5kZWRfaXRlbS5wc2lnX2Rlc2MpIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAocmYsIHRkcyksIFBzaWdfdHlwZSAoZXhwX3JmLCBleHBfdGRzKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBObyBjb250ZXh0LWZyZWUgcnVsZSBjYW4gcmV3cml0ZSByZWMgZmxhZ3MgYXRtLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhY3RzIGFzIGEgZmFpbHNhZmUgaW4gY2FzZSBpdCBldmVyIGNoYW5nZXMgKilcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChQb2x5LihyZiA9IGV4cF9yZikpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zaWdfdHlwZV9kZWNscyByZiB+aXRlbXM6dGRzXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIG10ZCwgUHNpZ19tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB0ZSwgUHNpZ190eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBlYywgUHNpZ19leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzaWduYXR1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX2l0ZW0gOjogcmVzdCkpXG4gICAgICBpblxuICAgICAgbG9vcCBzZyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxuICAgICgqJCopXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4dGVuc2lvbiBvZiAnYSBFeHRlbnNpb24uQ29udGV4dC50XG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgb2YgJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudFxuXG4gIGxldCBwYXJlbiBwcCBwcGYgeCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCIoJWEpXCIgcHAgeFxuXG4gIGxldCBwcmludGVyIDogdHlwZSBhLiBhIHQgLT4gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXIgLT4gYSAtPiB1bml0ID1cbiAgICBsZXQgb3BlbiBFeHRlbnNpb24uQ29udGV4dCBpblxuICAgIGxldCBvcGVuIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0IGluXG4gICAgZnVuY3Rpb25cbiAgICB8IEV4dGVuc2lvbiBDbGFzc19leHByIC0+IFBwcmludGFzdC5jbGFzc19leHByXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZSAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDb3JlX3R5cGUgLT4gcGFyZW4gUHByaW50YXN0LmNvcmVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIEV4cHJlc3Npb24gLT4gcGFyZW4gUHByaW50YXN0LmV4cHJlc3Npb25cbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfZXhwciAtPiBQcHJpbnRhc3QubW9kdWxlX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfdHlwZSAtPiBQcHJpbnRhc3QubW9kdWxlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBQYXR0ZXJuIC0+IHBhcmVuIFBwcmludGFzdC5wYXR0ZXJuXG4gICAgfCBFeHRlbnNpb24gU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gUHB4X2ltcG9ydCAtPiBQcHJpbnRhc3QudHlwZV9kZWNsYXJhdGlvblxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBkYXRhID1cbiAgICB8IFZhbHVlcyA6XG4gICAgICAgICdhIENvbnRleHQudCAqICdhIENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnNpbmdsZV9vcl9tYW55XG4gICAgICAgIC0+IGRhdGFcbiAgICB8IFRleHQgb2Ygc3RyaW5nXG5cbiAgdHlwZSB0ID0geyBzdGFydCA6IExleGluZy5wb3NpdGlvbjsgc3RvcCA6IExleGluZy5wb3NpdGlvbjsgZGF0YSA6IGRhdGEgfVxuXG4gIGxldCBtYWtlIH5jb250ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9XG4gICAgeyBzdGFydDsgc3RvcDsgZGF0YSA9IFZhbHVlcyAoY29udGV4dCwgcmVwbCkgfVxuXG4gIGxldCBtYWtlX3RleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID0geyBzdGFydDsgc3RvcDsgZGF0YSA9IFRleHQgcmVwbCB9XG5cbiAgbGV0IHRleHQgYmxvY2sgPVxuICAgIG1hdGNoIGJsb2NrLmRhdGEgd2l0aFxuICAgIHwgVGV4dCBzIC0+IHNcbiAgICB8IFZhbHVlcyAoY29udGV4dCwgZ2VuZXJhdGVkKSAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IHByaW50ZXIgPSBDb250ZXh0LnByaW50ZXIgY29udGV4dCBpblxuICAgICAgICAgIG1hdGNoIGdlbmVyYXRlZCB3aXRoXG4gICAgICAgICAgfCBTaW5nbGUgeCAtPiBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcmludGVyIHhcbiAgICAgICAgICB8IE1hbnkgbCAtPlxuICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gcHBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIgcHBmIHg7XG4gICAgICAgICAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSkpXG4gICAgICAgICAgICAgICAgbFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfd3MgPSBmdW5jdGlvbiAnICcgfCAnXFx0JyB8ICdcXHInIC0+IHRydWUgfCBfIC0+IGZhbHNlIGluXG4gICAgICAgIGxldCBzdHJpcF93cyBzIGkgbGVuID1cbiAgICAgICAgICBsZXQgbGVuID0gcmVmIGxlbiBpblxuICAgICAgICAgIHdoaWxlICFsZW4gPiAwICYmIGlzX3dzIHMuW2kgKyAhbGVuIC0gMV0gZG9cbiAgICAgICAgICAgIGxlbiA6PSAhbGVuIC0gMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgU3RyaW5nLnN1YiBzIH5wb3M6aSB+bGVuOiFsZW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgcG9zID1cbiAgICAgICAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gW11cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgaWR4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICdcXG4nIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc3RyaXBfd3MgcyBwb3MgKGlkeCAtIHBvcykgOjogXCJcXG5cIiA6OiBsb29wIHMgKGlkeCArIDEpXG4gICAgICAgIGluXG4gICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIChsb29wIHMgMClcbmVuZFxuXG5vcGVuIFJlcGxhY2VtZW50XG5cbm1vZHVsZSBSZXBsYWNlbWVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwbGFjZW1lbnQudCBsaXN0XG5cbiAgKCogTWVyZ2UgbG9jYXRpb25zIG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gT3ZlcmxhcHBpbmcgbG9jYXRpb25zIGFyZSBtZXJnZWQgaW50byBvbmUuIFRoZVxuICAgICByZXN1bHQgaXMgc29ydGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSB0byB0aGUgZW5kLiAqKVxuICBsZXQgY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzID1cbiAgICBMaXN0Lml0ZXIgcmVwbHMgfmY6KGZ1biByZXBsIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgU3RyaW5nLiggPD4gKSByZXBsLnN0YXJ0LnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgICAgfHwgU3RyaW5nLiggPD4gKSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlbmFtZSlcbiAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogdGhlIHJld3JpdGluZyBjb250YWlucyBwYXJ0cyBmcm9tIGFub3RoZXIgZmlsZS5cXG5cXFxuICAgICAgICAgICAgIEl0IGlzIHRvbyBjb21wbGljYXRlZCB0byByZWNvbmNpbGUgaXQgd2l0aCB0aGUgc291cmNlOiAlcyBvciAlcyBcXFxuICAgICAgICAgICAgIGFuZCAlc1wiXG4gICAgICAgICAgICByZXBsLnN0YXJ0LnBvc19mbmFtZSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWU7XG4gICAgICAgIGFzc2VydCAocmVwbC5zdGFydC5wb3NfY251bSA8PSByZXBsLnN0b3AucG9zX2NudW0pKTtcbiAgICBsZXQgcmVwbHMgPVxuICAgICAgTGlzdC5zb3J0IHJlcGxzIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgZCA9IGNvbXBhcmUgYS5zdGFydC5wb3NfY251bSBiLnN0b3AucG9zX2NudW0gaW5cbiAgICAgICAgICBpZiBkID0gMCB0aGVuXG4gICAgICAgICAgICAoKiBQdXQgdGhlIGxhcmdlc3QgZmlyc3QsIHNvIHRoYXQgdGhlIGZvbGxvd2luZyBbZmlsdGVyXSBmdW5jdGlvbnMgYWx3YXlzIHBpY2tzIHVwXG4gICAgICAgICAgICAgICB0aGUgbGFydGVzdCBmaXJzdCB3aGVuIHNldmVyYWwgZ2VuZXJhdGVkIHJlcGxzIHN0YXJ0IGF0IHRoZSBzYW1lIHBvc2l0aW9uICopXG4gICAgICAgICAgICBjb21wYXJlIGIuc3RvcC5wb3NfY251bSBhLnN0b3AucG9zX2NudW1cbiAgICAgICAgICBlbHNlIGQpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBwcmV2IHJlcGxzIH5hY2MgPVxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiAocHJldiA6OiBhY2MpXG4gICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPiByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+PSByZXBsLnN0b3AucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICAoKiBbcmVwbF0gaXMgaW5jbHVkZWQgaW4gW3ByZXZdID0+IHNraXAgW3JlcGxdICopXG4gICAgICAgICAgICAgIGZpbHRlciBwcmV2IHJlcGxzIH5hY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiBsb2NhdGlvbnMgb2YgZ2VuZXJhdGVkIGNvZGUgYXJlIG92ZXJsYXBwaW5nLCBcXFxuICAgICAgICAgICAgICAgICBjYW5ub3QgcmVjb25jaWxlXCJcbiAgICAgICAgICAgICAgICB+bG9jOlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPSByZXBsLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsb2NfZW5kID0gcHJldi5zdG9wO1xuICAgICAgICAgICAgICAgICAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGZpbHRlciByZXBsIHJlcGxzIH5hY2M6KHByZXYgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggcmVwbHMgd2l0aCBbXSAtPiBbXSB8IHJlcGwgOjogcmVwbHMgLT4gZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzpbXVxuZW5kXG5cbmxldCBjb3VudF9uZXdsaW5lcyBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBTdHJpbmcuaXRlciBzIH5mOihmdW5jdGlvbiAnXFxuJyAtPiBuIDo9ICFuICsgMSB8IF8gLT4gKCkpO1xuICAhblxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfYmVnaW4gPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBCRUdJTiB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9lbmQgPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBFTkQgICB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbnR5cGUgbW9kZSA9IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2Nrc1xudHlwZSB0YXJnZXQgPSBPdXRwdXQgb2YgbW9kZSB8IENvcnJlY3RlZFxuXG5sZXQgc2tpcF9ibGFua19lb2wgY29udGVudHMgKHBvcyA6IExleGluZy5wb3NpdGlvbikgPVxuICBsZXQgcmVjIGxvb3AgY251bSA9XG4gICAgaWYgY251bSA9IFN0cmluZy5sZW5ndGggY29udGVudHMgdGhlbiB7IHBvcyB3aXRoIHBvc19jbnVtID0gY251bSB9XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggY29udGVudHMuW2NudW1dIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiBsb29wIChjbnVtICsgMSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Mgd2l0aFxuICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBjbnVtICsgMTtcbiAgICAgICAgICB9XG4gICAgICB8IF8gLT4gcG9zXG4gIGluXG4gIGxvb3AgcG9zLnBvc19jbnVtXG5cbmxldCB3aXRoX291dHB1dCB+c3R5bGVyIH4oa2luZCA6IEtpbmQudCkgZm4gfmYgPVxuICBtYXRjaCBzdHlsZXIgd2l0aFxuICB8IE5vbmUgLT4gd2l0aF9vdXRwdXQgZm4gfmJpbmFyeTpmYWxzZSB+ZlxuICB8IFNvbWUgY21kIC0+XG4gICAgICBsZXQgdG1wX2ZuLCBvYyA9XG4gICAgICAgIFN0ZGxpYi5GaWxlbmFtZS5vcGVuX3RlbXBfZmlsZSBcInBweGxpYl9kcml2ZXJcIlxuICAgICAgICAgIChtYXRjaCBraW5kIHdpdGggSW1wbCAtPiBcIi5tbFwiIHwgSW50ZiAtPiBcIi5tbGlcIilcbiAgICAgIGluXG4gICAgICBsZXQgY21kID1cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyVzXCIgY21kXG4gICAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSB0bXBfZm4pXG4gICAgICAgICAgKG1hdGNoIGZuIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBmbiAtPiBcIiA+IFwiIF4gU3RkbGliLkZpbGVuYW1lLnF1b3RlIGZuKVxuICAgICAgaW5cbiAgICAgIGxldCBuID1cbiAgICAgICAgRXhuLnByb3RlY3R4IHRtcF9mbiB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZjooZnVuIF8gLT5cbiAgICAgICAgICAgIEV4bi5wcm90ZWN0eCBvYyB+ZmluYWxseTpjbG9zZV9vdXQgfmY7XG4gICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kKVxuICAgICAgaW5cbiAgICAgIGlmIG4gPD4gMCB0aGVuIChcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJjb21tYW5kIGV4aXRlZCB3aXRoIGNvZGUgJWQ6ICVzXFxuXCIgbiBjbWQ7XG4gICAgICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCByZWNvbmNpbGUgP3N0eWxlciAocmVwbHMgOiBSZXBsYWNlbWVudHMudCkgfmtpbmQgfmNvbnRlbnRzIH5pbnB1dF9maWxlbmFtZVxuICAgIH5vdXRwdXQgfmlucHV0X25hbWUgfnRhcmdldCA9XG4gIGxldCByZXBscyA9IFJlcGxhY2VtZW50cy5jaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgaW5cbiAgbGV0IG91dHB1dF9uYW1lID0gbWF0Y2ggb3V0cHV0IHdpdGggTm9uZSAtPiBcIjxzdGRvdXQ+XCIgfCBTb21lIGZuIC0+IGZuIGluXG4gIHdpdGhfb3V0cHV0IG91dHB1dCB+c3R5bGVyIH5raW5kIH5mOihmdW4gb2MgLT5cbiAgICAgIGxldCBjb3B5X2lucHV0IHBvcyB+dXBfdG8gfmxpbmUgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dCA9XG4gICAgICAgIGxldCBwb3MgPSBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3MgaW5cbiAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgdXBfdG8gdGhlbiAoXG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcbiUqc1wiIHBvcy5wb3NfbG51bSBpbnB1dF9uYW1lXG4gICAgICAgICAgICAgICAgKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgfCBDb3JyZWN0ZWQgLT4gKCkpO1xuICAgICAgICAgIG91dHB1dF9zdWJzdHJpbmcgb2MgY29udGVudHMgfnBvczpwb3MucG9zX2NudW1cbiAgICAgICAgICAgIH5sZW46KHVwX3RvIC0gcG9zLnBvc19jbnVtKTtcbiAgICAgICAgICBsZXQgbGluZSA9IHJlZiAobGluZSArIDEpIGluXG4gICAgICAgICAgZm9yIGkgPSBwb3MucG9zX2NudW0gdG8gdXBfdG8gLSAxIGRvXG4gICAgICAgICAgICBpZiBDaGFyLmVxdWFsIGNvbnRlbnRzLltpXSAnXFxuJyB0aGVuIGxpbmUgOj0gIWxpbmUgKyAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgbGluZSA9ICFsaW5lIGluXG4gICAgICAgICAgaWYgKG5vdCBpc190ZXh0KSAmJiBDaGFyLiggPD4gKSBjb250ZW50cy5bdXBfdG8gLSAxXSAnXFxuJyB0aGVuIChcbiAgICAgICAgICAgIG91dHB1dF9jaGFyIG9jICdcXG4nO1xuICAgICAgICAgICAgbGluZSArIDEpXG4gICAgICAgICAgZWxzZSBsaW5lKVxuICAgICAgICBlbHNlIGxpbmVcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgKGNvcHlfaW5wdXQgcG9zIH51cF90bzooU3RyaW5nLmxlbmd0aCBjb250ZW50cykgfmxpbmVcbiAgICAgICAgICAgICAgICAgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dDpmYWxzZVxuICAgICAgICAgICAgICAgIDogaW50KVxuICAgICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICAgIGxldCBpc190ZXh0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgY29weV9pbnB1dCBwb3MgfnVwX3RvOnJlcGwuc3RhcnQucG9zX2NudW0gfmxpbmUgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgICAgIH5pc190ZXh0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgbWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG5cIiAobGluZSArIDEpIG91dHB1dF9uYW1lO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW47XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IENvcnJlY3RlZCAtPiBsaW5lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscyB+bGFzdF9pc190ZXh0OmlzX3RleHRcbiAgICAgIGFuZCBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHNcbiAgICAgICAgICB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+IGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgIHwgcmVwbCA6OiByZXBscycgLT5cbiAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBwb3MucG9zX2NudW0gPCByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICAgIGxldCBsYXN0X2lzX3RleHQgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscycgfmxhc3RfaXNfdGV4dFxuICAgICAgYW5kIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9lbmQpO1xuICAgICAgICBsb29wIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBpbnB1dF9uYW1lO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IHsgc3RhcnQgPSB7IHBvc19jbnVtID0gMDsgXyB9OyBfIH0gOjogXyAtPlxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW4pO1xuICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZVxuICAgICAgfCBfIC0+IGxvb3AgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZSlcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBuZXh0X2lkIDogaW50O1xuICBtdXRhYmxlIGJpbmRpbmdzIDogUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgbGlzdDtcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbmV4dF9pZCA9IDA7IGJpbmRpbmdzID0gW10gfVxuXG5sZXQgc2FuaXRpemUgdCBlID1cbiAgbWF0Y2ggdC5iaW5kaW5ncyB3aXRoXG4gIHwgW10gLT4gZVxuICB8IGJpbmRpbmdzIC0+XG4gICAgICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBlLnBleHBfbG9jIGluXG4gICAgICBBc3QucGV4cF9sZXQgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGVcblxubGV0IHF1b3RlIHQgKGUgOiBleHByZXNzaW9uKSA9XG4gIGxldCBsb2MgPSBlLnBleHBfbG9jIGluXG4gIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGxvYyBpblxuICBsZXQgbmFtZSA9IFwiX19cIiBeIEludC50b19zdHJpbmcgdC5uZXh0X2lkIGluXG4gIGxldCBiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICAoKiBPcHRpbWl6ZSBpZGVudGlmaWVyIHF1b3RpbmcgYnkgYXZvaWRpbmcgY2xvc3VyZS5cbiAgICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXBweC9wcHhfZGVyaXZpbmcvcHVsbC8yNTIuICopXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IC0+IChlLCBBc3QuZXZhciBuYW1lKVxuICAgIHwgXyAtPlxuICAgICAgICBsZXQgYmluZGluZ19leHByID1cbiAgICAgICAgICBBc3QucGV4cF9mdW4gTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAobGV0IHVuaXQgPSBBc3RfYnVpbGRlci5EZWZhdWx0LkxvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiIGluXG4gICAgICAgICAgICAgQXN0LnBwYXRfY29uc3RydWN0IHVuaXQgTm9uZSlcbiAgICAgICAgICAgIGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHF1b3RlZF9leHByID0gQXN0LmVhcHBseSAoQXN0LmV2YXIgbmFtZSkgWyBBc3QuZXVuaXQgXSBpblxuICAgICAgICAoYmluZGluZ19leHByLCBxdW90ZWRfZXhwcilcbiAgaW5cbiAgbGV0IGJpbmRpbmcgPVxuICAgIGxldCBwYXQgPSBBc3QucHZhciBuYW1lIGluXG4gICAgQXN0LnZhbHVlX2JpbmRpbmcgfnBhdCB+ZXhwcjpiaW5kaW5nX2V4cHJcbiAgaW5cbiAgdC5iaW5kaW5ncyA8LSBiaW5kaW5nIDo6IHQuYmluZGluZ3M7XG4gIHQubmV4dF9pZCA8LSB0Lm5leHRfaWQgKyAxO1xuICBxdW90ZWRfZXhwclxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBta19hdHRyX25vbG9jIHR4dCA9IEFzdF9oZWxwZXIuQXR0ci5tayBMb2NhdGlvbi57IHR4dDsgbG9jID0gbm9uZSB9XG5sZXQgaGlkZV9hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmhpZGVcIiAoUFN0ciBbXSlcbmxldCBmb2N1c19hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmZvY3VzXCIgKFBTdHIgW10pXG5cbmxldCBoaWRlX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgaGlkZV9leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cbiIsIm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOb25faW50ZXJzZWN0aW5nX3JhbmdlcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpbnNlcnQgOiBub2RlX25hbWU6c3RyaW5nIC0+IExvY2F0aW9uLnQgLT4gdCAtPiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG5cbiAgdmFsIGNvdmVyZWRfYnkgOiB0IC0+IGxvYzpMb2NhdGlvbi50IC0+IGJvb2xcbiAgKCoqIFtjb3ZlcmVkX2J5IHQgfmxvYyA9IHRydWVdIGlmZiBbdF0gaXMgY292ZXJlZCBieSBbbG9jXSAqKVxuXG4gIHZhbCBmaW5kX291dHNpZGUgOiBMb2NhdGlvbi50IC0+IHQgLT4gc3RyaW5nICogTG9jYXRpb24udFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtaW5fcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICBtYXhfcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICByYW5nZXMgOiAoc3RyaW5nICogTG9jYXRpb24udCkgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWluX3BvcyA9IE5vbmU7IG1heF9wb3MgPSBOb25lOyByYW5nZXMgPSBbXSB9XG5cbiAgbGV0IHJlYyBpbnNlcnQgcmFuZ2VzICgobm9kZV9uYW1lLCBub2RlX2xvYykgYXMgbm9kZSkgPVxuICAgIG1hdGNoIHJhbmdlcyB3aXRoXG4gICAgfCBbXSAtPiBbIG5vZGUgXVxuICAgIHwgKCh4X25hbWUsIHhfbG9jKSBhcyB4KSA6OiB4cyAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbiBpblxuICAgICAgICBpZiBjb21wYXJlX3BvcyBub2RlX2xvYy5sb2Nfc3RhcnQgeF9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICBub2RlIDo6IHggOjogeHNcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlX3BvcyB4X2xvYy5sb2Nfc3RhcnQgbm9kZV9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICB4IDo6IGluc2VydCB4cyBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweCwgJXMgb3ZlcmxhcHMgd2l0aCAlcyBhdCBsb2NhdGlvbjpALiVhXCJcbiAgICAgICAgICAgIG5vZGVfbmFtZSB4X25hbWUgTG9jYXRpb24ucHJpbnQgeF9sb2NcblxuICBsZXQgbWluX3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1pbl9wb3MgcDEgcDIpXG5cbiAgbGV0IG1heF9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5tYXhfcG9zIHAxIHAyKVxuXG4gIGxldCBsb25nZXN0X2ZpcnN0IGwxIGwyIH5zdG9wX2FmdGVyID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgeXMgbiA9XG4gICAgICBtYXRjaCAoeHMsIHlzLCBuKSB3aXRoXG4gICAgICB8IFtdLCBfLCBfIHwgXywgXywgMCAtPiAobDIsIGwxKVxuICAgICAgfCBfLCBbXSwgXyAtPiAobDEsIGwyKVxuICAgICAgfCBfIDo6IHhzLCBfIDo6IHlzLCBuIC0+IGxvb3AgeHMgeXMgKG4gLSAxKVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBzdG9wX2FmdGVyXG5cbiAgbGV0IHVuaW9uIHQxIHQyID1cbiAgICBsZXQgaW5pdCwgbCA9IGxvbmdlc3RfZmlyc3QgdDEucmFuZ2VzIHQyLnJhbmdlcyB+c3RvcF9hZnRlcjo0MiBpblxuICAgIGxldCByYW5nZXMgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOmluc2VydCBpblxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIHQxLm1pbl9wb3MgdDIubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIHQxLm1heF9wb3MgdDIubWF4X3BvcztcbiAgICAgIHJhbmdlcztcbiAgICB9XG5cbiAgbGV0IGluc2VydCB+bm9kZV9uYW1lIGxvYyB0ID1cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyAoU29tZSBsb2MubG9jX3N0YXJ0KSB0Lm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyAoU29tZSBsb2MubG9jX2VuZCkgdC5tYXhfcG9zO1xuICAgICAgcmFuZ2VzID0gaW5zZXJ0IHQucmFuZ2VzIChub2RlX25hbWUsIGxvYyk7XG4gICAgfVxuXG4gIGxldCBjb3ZlcmVkX2J5IHQgfmxvYyA9XG4gICAgbWF0Y2ggKHQubWluX3BvcywgdC5tYXhfcG9zKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgbWluX3BvcywgU29tZSBtYXhfcG9zIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1pbl9wb3MgbG9jLmxvY19zdGFydCA+PSAwXG4gICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1heF9wb3MgbG9jLmxvY19lbmQgPD0gMFxuICAgIHwgXywgXyAtPlxuICAgICAgICAoKiB0aGVyZSBhcmUgbm8gb3BlbiByYW5nZXMgKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGZpbmRfb3V0c2lkZSBsb2MgdCA9XG4gICAgTGlzdC5maW5kIHQucmFuZ2VzIH5mOihmdW4gKF8sIGwpIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2Nfc3RhcnQgbC5sb2Nfc3RhcnQgPiAwXG4gICAgICAgIHx8IExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGwubG9jX2VuZCA8IDApXG5lbmRcblxubGV0IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG10eV9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbXR5X2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtdHlfbG9jID0geyByZXMucG10eV9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG1vZF9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbW9kX2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtb2RfbG9jID0geyByZXMucG1vZF9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2MgPVxuICBMaXN0LmZvcl9hbGwgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBhdHRyLmF0dHJfbG9jLmxvY19lbmQgPj0gMClcblxubGV0IGZpbGUgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5sZXQgc2FtZV9maWxlX3NvX2ZhciA9IHJlZiB0cnVlXG5cbmxldCBzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBmbmFtZSA9XG4gICgqIFRPRE86IHJlbW92ZSB1c2VzIG9mIExvY2F0aW9uLm5vbmUgZnJvbSB0aGUgcHB4ZXMuICopXG4gIGlmIFN0cmluZy5lcXVhbCBmbmFtZSBcIl9ub25lX1wiIHRoZW4gdHJ1ZSAoKiBkbyBub3RoaW5nIGZvciBub3cuICopXG4gIGVsc2VcbiAgICBtYXRjaCAhZmlsZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGZpbGUgOj0gU29tZSBmbmFtZTtcbiAgICAgICAgdHJ1ZVxuICAgIHwgU29tZSBvcmlnX2ZuYW1lIC0+XG4gICAgICAgIFN0cmluZy5lcXVhbCBvcmlnX2ZuYW1lIGZuYW1lXG4gICAgICAgIHx8XG4gICAgICAgIChzYW1lX2ZpbGVfc29fZmFyIDo9IGZhbHNlO1xuICAgICAgICAgZmFsc2UpXG5cbmxldCBzaG91bGRfaWdub3JlIGxvYyBhdHRycyA9XG4gICgqIElmIHRoZSBmaWxlbmFtZSBjaGFuZ2VkLCB0aGVuIHRoZXJlIHdlcmUgbGluZSBkaXJlY3RpdmVzLCBhbmQgdGhlIGxvY2F0aW9uc1xuICAgICBhcmUgYWxsIG1lc3NlZCB1cC4gKilcbiAgKG5vdCAoc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgbG9jLmxvY19zdGFydC5wb3NfZm5hbWUpKVxuICB8fCAoKiBJZ25vcmUgdGhpbmdzIGV4cGxpY2l0bHkgbWFya2VkLiAqKVxuICBMaXN0LmV4aXN0c1xuICAgIH5mOihmdW4gYXR0ciAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGF0dHIuYXR0cl9uYW1lLnR4dFxuICAgICAgICBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZS5hdHRyX25hbWUudHh0KVxuICAgIGF0dHJzXG5cbmxldCByZWMgZXh0cmFjdF9jb25zdHJhaW50IGUgPVxuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgfCBQZXhwX2NvZXJjZSAoZSwgXywgY3QpIC0+IFNvbWUgKGUsIGN0KVxuICB8IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKSAtPlxuICAgICAgT3B0aW9uLm1hcCAoZXh0cmFjdF9jb25zdHJhaW50IGV4cCkgfmY6KGZ1biAoZXhwLCBjdCkgLT5cbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3QgKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGRvX2NoZWNrIH5ub2RlX25hbWUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jcyA9XG4gIGlmIG5vdCAhc2FtZV9maWxlX3NvX2ZhciB0aGVuIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gIGVsc2UgaWYgbm9kZV9sb2MubG9jX2dob3N0IHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy51bmlvbiBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG4gIGVsc2UgaWYgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuY292ZXJlZF9ieSBjaGlsZHJlbnNfbG9jcyB+bG9jOm5vZGVfbG9jIHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZSBub2RlX2xvYyBzaWJsaW5nc19sb2NzXG4gIGVsc2VcbiAgICBsZXQgY2hpbGRfbmFtZSwgY2hpbGRfbG9jID1cbiAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmZpbmRfb3V0c2lkZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgIGluXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHg6QCB0aGlzICVzIGlzIGJ1aWx0IGZyb20gYSVzIHdob3NlIGxvY2F0aW9uIGlzIFxcXG4gICAgICAgb3V0c2lkZSBvZiB0aGlzIG5vZGUncy5ALkNoaWxkICVzIGZvdW5kIGF0OkAgJWFcIlxuICAgICAgbm9kZV9uYW1lXG4gICAgICAoKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IGNoaWxkX25hbWUgMCB3aXRoXG4gICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgLT4gXCJuIFwiXG4gICAgICAgfCBfIC0+IFwiIFwiKVxuICAgICAgXiBjaGlsZF9uYW1lKVxuICAgICAgY2hpbGRfbmFtZSBMb2NhdGlvbi5wcmludCBjaGlsZF9sb2NcblxubGV0IGVuZm9yY2VfaW52YXJpYW50cyBmbmFtZSA9XG4gIGxldCAoKSA9IGZpbGUgOj0gZm5hbWUgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW05vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAoKiBUT0RPOiB3ZSBzaG91bGQgZ2VuZXJhdGUgYSBjbGFzcyB3aGljaCBlbmZvcmNlcyB0aGUgbG9jYXRpb24gaW52YXJpYW50LlxuICAgICAgIEFuZCB0aGVuIHdlIHNob3VsZCBvbmx5IG92ZXJyaWRlIHRoZSBtZXRob2RzIHdoZXJlIHdlIG5lZWQgYW4gZXNjYXBlXG4gICAgICAgaGF0Y2ggYmVjYXVzZSB0aGUgcGFyc2VyIGlzbid0IGRvaW5nIHRoZSByaWdodCB0aGluZy5cblxuICAgICAgIFRoYXQgd291bGQgZW5zdXJlIHRoYXQgd2Ugc3RheSB1cCB0byBkYXRlIGFzIHRoZSBBU1QgY2hhbmdlcy4gKilcblxuICAgIG1ldGhvZCEgbG9uZ2lkZW50X2xvYyB4IHNpYmxpbmdzID1cbiAgICAgIGlmIHgubG9jLmxvY19naG9zdCB0aGVuIHNpYmxpbmdzXG4gICAgICBlbHNlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lOlwiaWRlbnRcIiB4LmxvYyBzaWJsaW5nc1xuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcmZfbG9jIHgucHJmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI3Jvd19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJyb3cgZmllbGRcIiB4LnByZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvYmplY3RfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb2ZfbG9jIHgucG9mX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb2JqZWN0X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9iamVjdCBmaWVsZFwiIHgucG9mX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgYmluZGluZ19vcCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjYmluZGluZ19vcCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiYmluZGluZyBvcGVyYXRvclwiIHgucGJvcF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2YWxfbG9jIHgucHZhbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGRlc2NyaXB0aW9uXCIgeC5wdmFsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBlX2xvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGRlY2xhcmF0aW9uXCIgeC5wdHlwZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGxkX2xvYyB4LnBsZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImxhYmVsIGRlY2xhcmF0aW9uXCIgeC5wbGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZF9sb2MgeC5wY2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiIHgucGNkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleHRfbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBleHRlbnNpb25cIiB4LnB0eWV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHRfbG9jIHgucGV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHRlbnNpb24gY29uc3RydWN0b3JcIiB4LnBleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0eV9sb2MgeC5wY3R5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZVwiIHgucGN0eV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0Zl9sb2MgeC5wY3RmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlIGZpZWxkXCIgeC5wY3RmX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjaV9sb2MgeC5wY2lfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzXCIgeC5wY2lfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjbF9sb2MgeC5wY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBleHByZXNzaW9uXCIgeC5wY2xfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZl9sb2MgeC5wY2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBmaWVsZFwiIHgucGNmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHNpZ19sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic2lnbmF0dXJlIGl0ZW1cIiB4LnBzaWdfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWRfbG9jIHgucG1kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBkZWNsYXJhdGlvblwiIHgucG1kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtc19sb2MgeC5wbXNfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfc3Vic3RpdHV0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBzdWJzdGl0dXRpb25cIiB4LnBtc19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10ZF9sb2MgeC5wbXRkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIiB4LnBtdGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvcGVuX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb3Blbl9sb2MgeC5wb3Blbl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29wZW5faW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvcGVuXCIgeC5wb3Blbl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5waW5jbF9sb2MgeC5waW5jbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJpbmNsdWRlXCIgeC5waW5jbF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzdHJfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInN0cnVjdHVyZSBpdGVtXCIgeC5wc3RyX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWJfbG9jIHgucG1iX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGJpbmRpbmdcIiB4LnBtYl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlICopXG4gICAgKCogdGhlIHR5cGUgY29uc3RyYWludCBpcyBkdXBsaWNhdGVkLiAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZiX2xvYyB4LnB2Yl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIG1hdGNoICh4LnB2Yl9wYXQucHBhdF9kZXNjLCBleHRyYWN0X2NvbnN0cmFpbnQgeC5wdmJfZXhwcikgd2l0aFxuICAgICAgICAgICgqIGxldCB4IDogdHlwZSBhIGIgYy4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgIChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXyA6OiBfLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgKCogbGV0IHggOiAgY3QgPSBlXG4gICAgICAgICAgICAgbGV0IHggOj4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludCAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKFtdLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RwLnB0eXBfbG9jIGN0ZS5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IF9hY2MgPSBzZWxmI2NvcmVfdHlwZSBjdHAgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgYmluZGluZ1wiIHgucHZiX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNVCBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIHR5cGUuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgdHlwZS4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyB4LnBtdHlfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZVwiIHgucG10eV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTUUgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSBleHByLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIGV4cHIuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbW9kX2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgeC5wbW9kX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGV4cHJlc3Npb25cIiB4LnBtb2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNjb3JlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZV9kZXNjIHgucHR5cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvcmUgdHlwZVwiIHgucHR5cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIEFuZCBhZ2FpbiAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHgucGV4cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4cHJlc3Npb25cIiB4LnBleHBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiAuLi4gYW5kIGFnYWluICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI3BhdHRlcm4geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI3BhdHRlcm5fZGVzYyB4LnBwYXRfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJwYXR0ZXJuXCIgeC5wcGF0X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mICAqKVxuICAgICgqIHRoZSBjb25zdHJ1Y3QgZXF1YWxzIHRoZSBsb2NhdGlvbiBvZiB0aGUgdHlwZV9leGNlcHRpb24gKilcbiAgICAoKiAoYW5kIHNvIGNvdmVycyB0aGUgbG9jYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMpLiAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4bl9sb2MgeC5wdHlleG5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGluaXQgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBsZXQgY2hpbGRzX2xvY3MgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGluaXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHJzX2xvY3MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcyBpbml0IGluXG4gICAgICAgIGlnbm9yZVxuICAgICAgICAgIChkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGF0dHJzX2xvY3Mgc2libGluZ3NfbG9jcyk7XG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgY2hpbGRzX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlICopXG4gICAgKCogbGhzIGlzIHNvbWV0aW1lcyBpbmNsdWRlZCBpbiB0aGUgcmhzLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHdpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHdpdGhfdHlwZSAoXywgdGRlY2wpIHwgUHdpdGhfdHlwZXN1YnN0IChfLCB0ZGVjbCkgLT5cbiAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gdGRlY2wgc2libGluZ3NfbG9jXG4gICAgICB8IF8gLT4gc3VwZXIjd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiopXG4gICAgKCogLSBGb28ueyBiYXI7IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby5bIGJhcjsgLi4uIF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLiggYmFyOyAuLi4gKSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBtZXRob2QgeCA6IHR5cGUgYS4gLi4uID0gLi4uICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSA8LSBiYXogICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9IDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfcmVjb3JkIChsYWJlbHMsIGV4cHJfbykgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChsaWQsIGUpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIGUucGV4cF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKCogcHVubmluZy4gKilcbiAgICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoZSwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGV4cHJfbyBhY2NcbiAgICAgIHwgUGV4cF9vcGVuXG4gICAgICAgICAgKCh7IHBvcGVuX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfaWRlbnQgbGlkOyBfIH07IF8gfSBhcyBvcG4pLCBlKVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0ID0gMFxuICAgICAgICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX2VuZCBlLnBleHBfbG9jLmxvY19lbmQgPD4gMCAtPlxuICAgICAgICAgICgqIGxldCdzIHJlbG9jYXRlIC4uLiAqKVxuICAgICAgICAgIGxldCBlX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19zdGFydCA9IGxpZC5sb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbl9kZXNjXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChvcG4sIHsgZSB3aXRoIHBleHBfbG9jID0gZV9sb2MgfSkpXG4gICAgICAgICAgICBhY2NcbiAgICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfLCBjdCk7IF8gfSkgLT4gKFxuICAgICAgICAgIG1hdGNoIGV4dHJhY3RfY29uc3RyYWludCBlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKGUsIGN0ZSkgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0ZS5wdHlwX2xvYyBjdC5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IFBleHBfYXBwbHkgKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGxpZDsgXyB9OyBfIH0sIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBMb25naWRlbnQubGFzdF9leG4gbGlkIHdpdGhcbiAgICAgICAgICB8IGlkXG4gICAgICAgICAgICB3aGVuIFN0cmluZy5pc19wcmVmaXggaWQgfnByZWZpeDpcIi5cIlxuICAgICAgICAgICAgICAgICAmJiAoU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKClcIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW11cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie31cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fTwtXCIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbGlzdCAoZnVuIChfLCBlKSAtPiBzZWxmI2V4cHJlc3Npb24gZSkgYXJncyBhY2NcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjogICAgICAgICAgICAgKilcbiAgICAoKiAtIHB1bm5pbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHJlY29yZCBmaWVsZCB3aXRoIHR5cGUgY29uc3RyYWludC4gICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHVucGFjayBsb2NhdGlvbnMgYmVpbmcgaW5jb3JyZWN0IHdoZW4gY29uc3RyYWluZWQgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X3JlY29yZCAobGFiZWxzLCBfKSAtPlxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAobGlkLCBwYXQpIGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IHBhdC5wcGF0X2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBwYXQucHBhdF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICgqIHNpbXBsZSBwdW5uaW5nISAqKVxuICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcCBhY2NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwYXQgYWNjXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBhdCBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICB8IFBwYXRfY29uc3RyYWludCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3VucGFjayBhOyBfIH0sIGIpIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBmYWtlIHN0cnVjdHVyZSBmb3IgYSBnZW5lcmF0aXZlIGFyZ3VtZW50IGNvdmVycyB0aGUgICAgICopXG4gICAgKCogbG9jYXRpb24gb2YgdGhlIGZ1bmN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9hcHBseSAobSwgeyBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTsgcG1vZF9sb2M7IF8gfSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtLnBtb2RfbG9jLmxvY19zdGFydCBwbW9kX2xvYy5sb2Nfc3RhcnQgPSAwIC0+XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgbSBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIG9wZW5faW5mb3MgZm9yIFBjbF9vcGVuIG9ubHkgY292ZXJzIHRoZSBcIm9wZW5cIiBrZXl3b3JkICAqKVxuICAgICgqIGFuZCBub3QgdGhlIG1vZHVsZSBvcGVuZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX29wZW4gKG9kLCBjZSkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGNlIGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9vcGVuIChvZCwgY3QpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIGRvY3N0cmluZ3MgaGF2ZSAgICAqKVxuICAgICgqIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoZSBpdGVtIHRoZXkgZ2V0IGF0dGFjaGVkIHRvLiAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeCBhY2MgPVxuICAgICAgbWF0Y2ggeC5hdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5kb2NcIiB8IFwib2NhbWwudGV4dFwiIC0+IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2F0dHJpYnV0ZSB4IGFjY1xuICBlbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4gSW1wb3J0XG5vcGVuIFV0aWxzXG5vcGVuIENvbW1vblxub3BlbiBXaXRoX2Vycm9yc1xubW9kdWxlIEFyZyA9IFN0ZGxpYi5BcmdcblxubGV0IGV4ZV9uYW1lID0gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIFN0ZGxpYi5TeXMuZXhlY3V0YWJsZV9uYW1lXG5sZXQgYXJncyA9IHJlZiBbXVxubGV0IGFkZF9hcmcga2V5IHNwZWMgfmRvYyA9IGFyZ3MgOj0gKGtleSwgc3BlYywgZG9jKSA6OiAhYXJnc1xubGV0IGxvY19mbmFtZSA9IHJlZiBOb25lXG5sZXQgcGVyZm9ybV9jaGVja3MgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2NoZWNrc1xubGV0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zXG5sZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2xvY2F0aW9uc19jaGVja1xubGV0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wID0gcmVmIGZhbHNlXG5sZXQgYXBwbHlfbGlzdCA9IHJlZiBOb25lXG5sZXQgcHJlcHJvY2Vzc29yID0gcmVmIE5vbmVcbmxldCBub19tZXJnZSA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfcGFzc2VzID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgPSByZWYgZmFsc2VcbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGRpZmZfY29tbWFuZCA9IHJlZiBPcHRpb25zLmRpZmZfY29tbWFuZFxubGV0IHByZXR0eSA9IHJlZiBmYWxzZVxubGV0IHN0eWxlciA9IHJlZiBOb25lXG5sZXQgb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lID0gcmVmIE5vbmVcbmxldCBjb3JyZWN0ZWRfc3VmZml4ID0gcmVmIFwiLnBweC1jb3JyZWN0ZWRcIlxuXG5sZXQgZ2hvc3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICBtZXRob2QhIGxvY2F0aW9uIGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9XG4gIGVuZFxuXG5sZXQgY2hvcF9wcmVmaXggfnByZWZpeCB4ID1cbiAgaWYgU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4IHggdGhlblxuICAgIFNvbWUgKFN0cmluZy5kcm9wX3ByZWZpeCB4IChTdHJpbmcubGVuZ3RoIHByZWZpeCkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aCAobG9jIDogTG9jYXRpb24udCkgPVxuICBsZXQgZm5hbWUgPSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSBpblxuICBtYXRjaCBjaG9wX3ByZWZpeCB+cHJlZml4OlwiLi9cIiBmbmFtZSB3aXRoXG4gIHwgU29tZSBmbmFtZSAtPiBmbmFtZVxuICB8IE5vbmUgLT4gZm5hbWVcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc3RyIDogc3RydWN0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHN0cl9sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3NpZyA6IHNpZ25hdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzaWdfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5tb2R1bGUgTGludF9lcnJvciA9IHN0cnVjdFxuICB0eXBlIHQgPSBMb2NhdGlvbi50ICogc3RyaW5nXG5cbiAgbGV0IG9mX3N0cmluZyBsb2MgcyA9IChsb2MsIHMpXG5lbmRcblxubW9kdWxlIENvb2tpZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVFxuXG4gIGxldCBnaXZlbl90aHJvdWdoX2NsaSA9IHJlZiBbXVxuXG4gIGxldCBnZXQgVCBuYW1lIHBhdHRlcm4gPVxuICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuXG4gIGxldCBnZXRfcmVzIFQgbmFtZSBwYXR0ZXJuID1cbiAgICBtYXRjaFxuICAgICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKE9rIGUpIC0+IE9rIChTb21lIGUpXG4gICAgfCBTb21lIChFcnJvciBlKSAtPiBFcnJvciBlXG5cbiAgbGV0IHNldCBUIG5hbWUgZXhwciA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5zZXRfY29va2llIG5hbWUgKFNlbGVjdGVkX2FzdC50b19vY2FtbCBFeHByZXNzaW9uIGV4cHIpXG5cbiAgbGV0IGhhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfaGFuZGxlciBmID0gaGFuZGxlcnMgOj0gIWhhbmRsZXJzIEAgWyBmIF1cblxuICBsZXQgYWRkX3NpbXBsZV9oYW5kbGVyIG5hbWUgcGF0dGVybiB+ZiA9XG4gICAgYWRkX2hhbmRsZXIgKGZ1biBUIC0+IGYgKGdldCBUIG5hbWUgcGF0dGVybikpXG5cbiAgbGV0IGFja25vd2xlZGdlX2Nvb2tpZXMgVCA9IExpc3QuaXRlciAhaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgVClcbiAgbGV0IHBvc3RfaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9wb3N0X2hhbmRsZXIgZiA9IHBvc3RfaGFuZGxlcnMgOj0gIXBvc3RfaGFuZGxlcnMgQCBbIGYgXVxuICBsZXQgY2FsbF9wb3N0X2hhbmRsZXJzIFQgPSBMaXN0Lml0ZXIgIXBvc3RfaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgVClcbmVuZFxuXG5tb2R1bGUgSW5zdHJ1bWVudCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IEJlZm9yZSB8IEFmdGVyXG5cbiAgdHlwZSB0ID0ge1xuICAgIHRyYW5zZm9ybWF0aW9uIDpcbiAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50O1xuICAgIHBvc2l0aW9uIDogcG9zO1xuICB9XG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uID1cbiAgICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBjdHggc3QgPSByZXR1cm4gKHRyYW5zZm9ybWF0aW9uIGN0eCBzdCkgaW5cbiAgICAgIHsgdHJhbnNmb3JtYXRpb247IHBvc2l0aW9uIH1cbiAgZW5kXG5cbiAgbGV0IG1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uID1cbiAgICBsZXQgdHJhbnNmb3JtYXRpb24gXyBzdCA9IHRyYW5zZm9ybWF0aW9uIHN0IGluXG4gICAgVjIubWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb25cbmVuZFxuXG5tb2R1bGUgVHJhbnNmb3JtID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIGFsaWFzZXMgOiBzdHJpbmcgbGlzdDtcbiAgICBpbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBpbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc3RydWN0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zaWduYXR1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAqIFBhcnNldHJlZS5zdHJ1Y3R1cmUpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlICogUGFyc2V0cmVlLnNpZ25hdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBpbnN0cnVtZW50IDogSW5zdHJ1bWVudC50IG9wdGlvbjtcbiAgICBydWxlcyA6IENvbnRleHRfZnJlZS5SdWxlLnQgbGlzdDtcbiAgICByZWdpc3RlcmVkX2F0IDogQ2FsbGVyX2lkLnQ7XG4gIH1cblxuICBsZXQgaGFzX25hbWUgdCBuYW1lID1cbiAgICBTdHJpbmcuZXF1YWwgbmFtZSB0Lm5hbWUgfHwgTGlzdC5leGlzdHMgfmY6KFN0cmluZy5lcXVhbCBuYW1lKSB0LmFsaWFzZXNcblxuICBsZXQgYWxsIDogdCBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBwcmludF9jYWxsZXJfaWQgb2MgKGNhbGxlcl9pZCA6IENhbGxlcl9pZC50KSA9XG4gICAgbWF0Y2ggY2FsbGVyX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gb3V0cHV0X3N0cmluZyBvYyBcIjx1bmtub3duIGxvY2F0aW9uPlwiXG4gICAgfCBTb21lIGxvYyAtPiBQcmludGYuZnByaW50ZiBvYyBcIiVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuXG4gIGxldCByZWdpc3RlciA/KGV4dGVuc2lvbnMgPSBbXSkgPyhydWxlcyA9IFtdKSA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcbiAgICAgID9pbnN0cnVtZW50ID8oYWxpYXNlcyA9IFtdKSBuYW1lID1cbiAgICBsZXQgcnVsZXMgPSBMaXN0Lm1hcCBleHRlbnNpb25zIH5mOkNvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBAIHJ1bGVzIGluXG4gICAgbGV0IGNhbGxlcl9pZCA9IENhbGxlcl9pZC5nZXQgfnNraXA6WyBTdGRsaWIuX19GSUxFX18gXSBpblxuICAgIChtYXRjaCBMaXN0LmZpbHRlciAhYWxsIH5mOihmdW4gY3QgLT4gaGFzX25hbWUgY3QgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IGN0IDo6IF8gLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJXYXJuaW5nOiBjb2RlIHRyYW5zZm9ybWF0aW9uICVzIHJlZ2lzdGVyZWQgdHdpY2UuXFxuXCJcbiAgICAgICAgICBuYW1lO1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBmaXJzdCB0aW1lIHdhcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZFxuICAgICAgICAgIGN0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIHNlY29uZCB0aW1lIGlzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkIGNhbGxlcl9pZCk7XG4gICAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ludGYgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IGN0ID1cbiAgICAgIHtcbiAgICAgICAgbmFtZTtcbiAgICAgICAgYWxpYXNlcztcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbXBsO1xuICAgICAgICBpbnRmO1xuICAgICAgICBsaW50X2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICBsaW50X2ludGY7XG4gICAgICAgIGluc3RydW1lbnQ7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBjYWxsZXJfaWQ7XG4gICAgICB9XG4gICAgaW5cbiAgICBhbGwgOj0gY3QgOjogIWFsbFxuXG4gIGxldCByZWMgbGFzdCBwcmV2IGwgPSBtYXRjaCBsIHdpdGggW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBsb2Nfb2ZfbGlzdCB+Z2V0X2xvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgZmlyc3QgOiBMb2NhdGlvbi50ID0gZ2V0X2xvYyB4IGluXG4gICAgICAgIGxldCBsYXN0ID0gZ2V0X2xvYyAobGFzdCB4IGwpIGluXG4gICAgICAgIFNvbWUgeyBmaXJzdCB3aXRoIGxvY19lbmQgPSBsYXN0LmxvY19lbmQgfVxuXG4gIGxldCBtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB0IH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICB+dG9vbF9uYW1lIH5pbnB1dF9uYW1lID1cbiAgICBsZXQgeyBydWxlczsgZW5jbG9zZV9pbXBsOyBlbmNsb3NlX2ludGY7IGltcGw7IGludGY7IF8gfSA9IHQgaW5cbiAgICBsZXQgbWFwID1cbiAgICAgIG5ldyBDb250ZXh0X2ZyZWUubWFwX3RvcF9kb3duXG4gICAgICAgIHJ1bGVzIH5lbWJlZF9lcnJvcnMgfmdlbmVyYXRlZF9jb2RlX2hvb2s6aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICBpblxuICAgIGxldCBnZW5faGVhZGVyX2FuZF9mb290ZXIgY29udGV4dCB3aG9sZV9sb2MgZiA9XG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPSBmIHdob2xlX2xvYyBpblxuICAgICAgKG1hdGNoIHdob2xlX2xvYyB3aXRoXG4gICAgICB8IFNvbWUgKGxvYyA6IExvY2F0aW9uLnQpIC0+IChcbiAgICAgICAgICBsZXQgbG9jX2hlYWRlciA9IHsgbG9jIHdpdGggbG9jX2VuZCA9IGxvYy5sb2Nfc3RhcnQgfSBpblxuICAgICAgICAgIGxldCBsb2NfZm9vdGVyID0geyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgKG1hdGNoIGhlYWRlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBob29rLmYgY29udGV4dCBsb2NfaGVhZGVyIChNYW55IGhlYWRlcikpO1xuICAgICAgICAgIG1hdGNoIGZvb3RlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBob29rLmYgY29udGV4dCBsb2NfZm9vdGVyIChNYW55IGZvb3RlcikpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIGhlYWRlciBAIGZvb3RlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaG9vay5mIGNvbnRleHQgbG9jIChNYW55IGwpKSk7XG4gICAgICAoaGVhZGVyLCBmb290ZXIpXG4gICAgaW5cbiAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICBtYXRjaCBpbnB1dF9uYW1lIHdpdGggU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWUgfCBOb25lIC0+IFwiX25vbmVfXCJcbiAgICBpblxuICAgIGxldCBtYXBfaW1wbCBjdHh0IHN0X3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzdCA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc3Rfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc3RyIHN0IGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbXBsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc3QgfmdldF9sb2M6KGZ1biBzdCAtPiBzdC5QYXJzZXRyZWUucHN0cl9sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFN0cnVjdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3N0cnVjdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc3Q7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzdCAtPiBtYXRjaCBpbXBsIHdpdGggTm9uZSAtPiByZXR1cm4gc3QgfCBTb21lIGYgLT4gZiBjdHh0IHN0XG4gICAgaW5cbiAgICBsZXQgbWFwX2ludGYgY3R4dCBzZ193aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc2cgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHNnX3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3NpZyBzZyBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW50ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHNnIH5nZXRfbG9jOihmdW4gc2cgLT4gc2cuUGFyc2V0cmVlLnBzaWdfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTaWduYXR1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzaWduYXR1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHNnOyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc2cgLT4gbWF0Y2ggaW50ZiB3aXRoIE5vbmUgLT4gcmV0dXJuIHNnIHwgU29tZSBmIC0+IGYgY3R4dCBzZ1xuICAgIGluXG4gICAgeyB0IHdpdGggaW1wbCA9IFNvbWUgbWFwX2ltcGw7IGludGYgPSBTb21lIG1hcF9pbnRmIH1cblxuICBsZXQgYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ob29rIH5ydWxlcyB+ZW5jbG9zZV9pbXBsIH5lbmNsb3NlX2ludGZcbiAgICAgIH5pbnB1dF9uYW1lID1cbiAgICBtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB+aG9vayB+aW5wdXRfbmFtZVxuICAgICAge1xuICAgICAgICBuYW1lID0gXCI8YnVpbHRpbjpjb250ZXh0LWZyZWU+XCI7XG4gICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgIGludGYgPSBOb25lO1xuICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbXTtcbiAgICAgIH1cblxuICBsZXQgcGFydGl0aW9uX3RyYW5zZm9ybWF0aW9ucyB0cyA9XG4gICAgbGV0IGJlZm9yZV9pbnN0cnMsIGFmdGVyX2luc3RycywgcmVzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB0cyB+aW5pdDooW10sIFtdLCBbXSkgfmY6KGZ1biAoYmVmX2ksIGFmdF9pLCByZXN0KSB0IC0+XG4gICAgICAgICAgbGV0IHJlZHVjZWRfdCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHQgd2l0aFxuICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGYgaW5zdHIgPVxuICAgICAgICAgICAgKGluc3RyLkluc3RydW1lbnQucG9zaXRpb24sIGluc3RyLkluc3RydW1lbnQudHJhbnNmb3JtYXRpb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBPcHRpb24ubWFwIHQuaW5zdHJ1bWVudCB+ZiB3aXRoXG4gICAgICAgICAgfCBTb21lIChCZWZvcmUsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGJlZl9pLFxuICAgICAgICAgICAgICAgIGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IFNvbWUgKEFmdGVyLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggYmVmX2ksXG4gICAgICAgICAgICAgICAgeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBOb25lIC0+IChiZWZfaSwgYWZ0X2ksIHJlZHVjZWRfdCA6OiByZXN0KSlcbiAgICBpblxuICAgICggYExpbnRlcnNcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSB0LmxpbnRfaW1wbCB8fCBPcHRpb24uaXNfc29tZSB0LmxpbnRfaW50ZiB0aGVuXG4gICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBuYW1lID0gUHJpbnRmLnNwcmludGYgXCI8bGludDolcz5cIiB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IHQubGludF9pbXBsO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IHQubGludF9pbnRmO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX2F0ID0gdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBOb25lKSksXG4gICAgICBgUHJlcHJvY2Vzc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW1wbFxuICAgICAgICAgICAgICAgfHwgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ludGZcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBuYW1lID0gUHJpbnRmLnNwcmludGYgXCI8cHJlcHJvY2Vzczolcz5cIiB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIGltcGwgPSB0LnByZXByb2Nlc3NfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gdC5wcmVwcm9jZXNzX2ludGY7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX2F0ID0gdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBOb25lKSksXG4gICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgYEFmdGVyX2luc3RycyBhZnRlcl9pbnN0cnMsXG4gICAgICBgUmVzdCByZXN0IClcbmVuZFxuXG5tb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgbGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID0gVHJhbnNmb3JtLnJlZ2lzdGVyXG5cbiAgbGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbiAgICAgID1cbiAgICBsZXQgaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIGltcGwgfmY6KFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sX21hcHBlciBTdHJ1Y3R1cmUpXG4gICAgaW5cbiAgICBsZXQgaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIGludGYgfmY6KFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sX21hcHBlciBTaWduYXR1cmUpXG4gICAgaW5cbiAgICByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG5lbmRcblxubGV0IGFkZF9jdHh0X2FyZyAoZiA6ICdhIC0+ICdiKSA6IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYiA9XG4gZnVuIF8geCAtPiBmIHhcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGYgP2ltcGxcbiAgICA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbXBsID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ludGYgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW1wbCA9IE9wdGlvbi5tYXAgbGludF9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbnRmID0gT3B0aW9uLm1hcCBsaW50X2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ltcGwgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW50ZiA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuXG5sZXQgcmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiB+bmFtZSA/KGFsaWFzZXMgPSBbXSkgfmltcGwgfmludGYgPVxuICByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBuYW1lIH5pbXBsIH5pbnRmIH5hbGlhc2VzXG5bQEB3YXJuaW5nIFwiLTE2XCJdXG4oKiBUaGlzIGZ1bmN0aW9uIHRyaWdnZXJzIGEgd2FybmluZyAxNiBhcyBvZiBvY2FtbCA0LjEyICopXG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGZcblxubGV0IGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIG5hbWUgfm9sZF9kcm9wcGVkIH5uZXdfZHJvcHBlZCA9XG4gIGxldCBwcmludF9kaWZmIHdoYXQgYSBiID1cbiAgICBsZXQgZGlmZiA9XG4gICAgICBMaXN0LmZpbHRlciBhIH5mOihmdW4gKG5hbWUgOiBfIExvYy50KSAtPlxuICAgICAgICAgIG5vdFxuICAgICAgICAgICAgKExpc3QuZXhpc3RzIGIgfmY6KGZ1biAobmFtZScgOiBfIExvY2F0aW9uLmxvYykgLT5cbiAgICAgICAgICAgICAgICAgbmFtZS50eHQgPT0gbmFtZScudHh0KSkpXG4gICAgaW5cbiAgICBpZiBub3QgKExpc3QuaXNfZW1wdHkgZGlmZikgdGhlbiAoXG4gICAgICBQcmludGYuZXByaW50ZiBcIlRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyAlcyBhZnRlciBhcHBseWluZyAlczpcXG5cIiB3aGF0XG4gICAgICAgIG5hbWU7XG4gICAgICBMaXN0Lml0ZXIgZGlmZiB+ZjooZnVuIHsgTG9jYXRpb24udHh0OyBsb2MgfSAtPlxuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIi0gJWE6ICVzXFxuXCIgTG9jYXRpb24ucHJpbnQgbG9jIHR4dCk7XG4gICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCJALlwiKVxuICBpblxuICBwcmludF9kaWZmIFwiZGlzYXBwZWFyZWRcIiBuZXdfZHJvcHBlZCBvbGRfZHJvcHBlZDtcbiAgcHJpbnRfZGlmZiBcInJlYXBwZWFyZWRcIiBvbGRfZHJvcHBlZCBuZXdfZHJvcHBlZFxuXG5sZXQgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgIH5pbnB1dF9uYW1lID1cbiAgbGV0IGN0cyA9XG4gICAgbWF0Y2ggIWFwcGx5X2xpc3Qgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LnJldiAhVHJhbnNmb3JtLmFsbFxuICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICBMaXN0Lm1hcCBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICAgIExpc3QuZmluZCAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgaW5cbiAgbGV0ICggYExpbnRlcnMgbGludGVycyxcbiAgICAgICAgYFByZXByb2Nlc3MgcHJlcHJvY2VzcyxcbiAgICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgICAgYEFmdGVyX2luc3RycyBhZnRlcl9pbnN0cnMsXG4gICAgICAgIGBSZXN0IGN0cyApID1cbiAgICBUcmFuc2Zvcm0ucGFydGl0aW9uX3RyYW5zZm9ybWF0aW9ucyBjdHNcbiAgaW5cbiAgKCogQWxsb3cgb25seSBvbmUgcHJlcHJvY2Vzc29yIHRvIGFzc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyICopXG4gIChpZiBMaXN0Lmxlbmd0aCBwcmVwcm9jZXNzID4gMSB0aGVuXG4gICAgIGxldCBwcCA9XG4gICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5tYXAgcHJlcHJvY2VzcyB+ZjooZnVuIHQgLT4gdC5uYW1lKSlcbiAgICAgaW5cbiAgICAgbGV0IGVyciA9XG4gICAgICAgUHJpbnRmLnNwcmludGYgXCJBdCBtb3N0IG9uZSBwcmVwcm9jZXNzb3IgaXMgYWxsb3dlZCwgd2hpbGUgZ290OiAlc1wiIHBwXG4gICAgIGluXG4gICAgIGZhaWx3aXRoIGVycik7XG4gIGxldCBtYWtlX2dlbmVyaWMgdHJhbnNmb3JtcyA9XG4gICAgaWYgIW5vX21lcmdlIHRoZW5cbiAgICAgIExpc3QubWFwIHRyYW5zZm9ybXNcbiAgICAgICAgfmY6XG4gICAgICAgICAgKFRyYW5zZm9ybS5tZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB+ZW1iZWRfZXJyb3JzIH5ob29rIH50b29sX25hbWVcbiAgICAgICAgICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUpXG4gICAgZWxzZVxuICAgICAgKGxldCBnZXRfZW5jbG9zZXJzIH5mID1cbiAgICAgICAgIExpc3QuZmlsdGVyX21hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggZiBjdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChjdC5uYW1lLCB4KSlcbiAgICAgICAgICgqIFNvcnQgdGhlbSB0byBlbnN1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyAqKVxuICAgICAgICAgfD4gTGlzdC5zb3J0IH5jbXA6KGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYilcbiAgICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgIGluXG5cbiAgICAgICBsZXQgcnVsZXMgPVxuICAgICAgICAgTGlzdC5tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5ydWxlcylcbiAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgYW5kIGltcGxfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW1wbClcbiAgICAgICBhbmQgaW50Zl9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbnRmKSBpblxuICAgICAgIG1hdGNoIChydWxlcywgaW1wbF9lbmNsb3NlcnMsIGludGZfZW5jbG9zZXJzKSB3aXRoXG4gICAgICAgfCBbXSwgW10sIFtdIC0+IHRyYW5zZm9ybXNcbiAgICAgICB8IF8gLT5cbiAgICAgICAgICAgbGV0IG1lcmdlX2VuY2xvc2VyID0gZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGVuY2xvc2VycyAtPlxuICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgKGZ1biBjdHh0IGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMsIGZvb3RlcnMgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcCBlbmNsb3NlcnMgfmY6KGZ1biBmIC0+IGYgY3R4dCBsb2MpIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycyA9IExpc3QuY29uY2F0IGhlYWRlcnMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBmb290ZXJzID0gTGlzdC5jb25jYXQgKExpc3QucmV2IGZvb3RlcnMpIGluXG4gICAgICAgICAgICAgICAgICAgICAoaGVhZGVycywgZm9vdGVycykpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIFRyYW5zZm9ybS5idWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfnJ1bGVzIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICAgICB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgICB+ZW5jbG9zZV9pbXBsOihtZXJnZV9lbmNsb3NlciBpbXBsX2VuY2xvc2VycylcbiAgICAgICAgICAgICB+ZW5jbG9zZV9pbnRmOihtZXJnZV9lbmNsb3NlciBpbnRmX2VuY2xvc2VycylcbiAgICAgICAgICAgICB+dG9vbF9uYW1lIH5pbnB1dF9uYW1lXG4gICAgICAgICAgIDo6IHRyYW5zZm9ybXMpXG4gICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIChjdC5pbXBsLCBjdC5pbnRmKSB3aXRoIE5vbmUsIE5vbmUgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gIGluXG4gIGxpbnRlcnMgQCBwcmVwcm9jZXNzIEAgYmVmb3JlX2luc3RycyBAIG1ha2VfZ2VuZXJpYyBjdHMgQCBhZnRlcl9pbnN0cnNcblxubGV0IGFwcGx5X3RyYW5zZm9ybXMgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5maWVsZCB+bGludF9maWVsZCB+ZHJvcHBlZF9zb19mYXJcbiAgICB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9ycyBhc3QgPVxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+dG9vbF9uYW1lIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICB+aW5wdXRfbmFtZVxuICBpblxuICBsZXQgZmluaXNoIChhc3QsIF9kcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKSA9XG4gICAgKCBhc3QsXG4gICAgICBMaXN0Lm1hcCBsaW50X2Vycm9ycyB+ZjooZnVuIChsb2MsIHMpIC0+XG4gICAgICAgICAgQ29tbW9uLmF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzKSxcbiAgICAgIGVycm9ycyApXG4gIGluXG4gIGxldCBhY2MgPVxuICAgIExpc3QuZm9sZF9sZWZ0IGN0cyB+aW5pdDooYXN0LCBbXSwgW10sIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgIChhc3QsIGRyb3BwZWQsIChsaW50X2Vycm9ycyA6IF8gbGlzdCksIGVycm9ycykgKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgICAgICBtYXRjaCBpbnB1dF9uYW1lIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lXG4gICAgICAgICAgfCBOb25lIC0+IFwiX25vbmVfXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICAgICAgICBtYXRjaCBsaW50X2ZpZWxkIGN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgKGxpbnRfZXJyb3JzIEAgZiBjdHh0IGFzdCwgZXJyb3JzKVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgIChsaW50X2Vycm9ycywgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZmllbGQgY3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCAoYXN0LCBtb3JlX2Vycm9ycyksIGVycm9ycyA9XG4gICAgICAgICAgICAgIHRyeSAoZiBjdHh0IGFzdCwgZXJyb3JzKVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICgoYXN0LCBbXSksIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZHJvcHBlZCA9XG4gICAgICAgICAgICAgIGlmICFkZWJ1Z19hdHRyaWJ1dGVfZHJvcCB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgbmV3X2Ryb3BwZWQgPSBkcm9wcGVkX3NvX2ZhciBhc3QgaW5cbiAgICAgICAgICAgICAgICBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBjdC5uYW1lIH5vbGRfZHJvcHBlZDpkcm9wcGVkXG4gICAgICAgICAgICAgICAgICB+bmV3X2Ryb3BwZWQ7XG4gICAgICAgICAgICAgICAgbmV3X2Ryb3BwZWQpXG4gICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzIEAgbW9yZV9lcnJvcnMpKVxuICBpblxuICBmaW5pc2ggYWNjXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19zdHJfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IGVycm9yX3RvX3NpZ19leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokKilcblxubGV0IGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+KGtpbmQgOiBLaW5kLnQpID1cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgSW50ZiAtPiBJbnRmX29yX2ltcGwuSW50ZiBbIGVycm9yX3RvX3NpZ19leHRlbnNpb24gZXJyb3IgXVxuICB8IEltcGwgLT4gSW50Zl9vcl9pbXBsLkltcGwgWyBlcnJvcl90b19zdHJfZXh0ZW5zaW9uIGVycm9yIF1cblxubGV0IGV4bl90b19leHRlbnNpb24gZXhuIH4oa2luZCA6IEtpbmQudCkgPVxuICBleG5fdG9fbG9jX2Vycm9yIGV4biB8PiBlcnJvcl90b19leHRlbnNpb24gfmtpbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBBY3R1YWwgcmV3cml0aW5nIG9mIHN0cnVjdHVyZS9zaWduYXR1cmVzICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgcHJpbnRfcGFzc2VzICgpID1cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4bGliX2RyaXZlclwiIGluXG4gIGxldCBlbWJlZF9lcnJvcnMgPSBmYWxzZSBpblxuICBsZXQgaG9vayA9IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcCBpblxuICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmVcbiAgaW5cbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW5cbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46ZnJlc2hlbi1hbmQtY29sbGVjdC1hdHRyaWJ1dGVzPlxcblwiO1xuICBMaXN0Lml0ZXIgY3RzIH5mOihmdW4gY3QgLT4gUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QuVHJhbnNmb3JtLm5hbWUpO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1hdHRyaWJ1dGVzPlxcblwiO1xuICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtZXh0ZW5zaW9ucz5cXG5cIilcblxubGV0IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgPVxuICBMaXN0LnNvcnQgZXJyb3JzIH5jbXA6KGZ1biBlcnJvciBlcnJvcicgLT5cbiAgICAgIGxldCBsb2MgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IgaW5cbiAgICAgIGxldCBsb2MnID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yJyBpblxuICAgICAgTG9jYXRpb24uY29tcGFyZSBsb2MgbG9jJylcblxuKCokKilcblxubGV0IG1hcF9zdHJ1Y3R1cmVfZ2VuIHN0IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzdHJ1Y3R1cmUgc3QpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzdCA9XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHN0XG4gICAgaW5cbiAgICBzdFxuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHN0ID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzdHJ1Y3R1cmVfaXRlbSlcbiAgICBAIHN0XG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzdCA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc3RcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc3RyIHN0IGluXG4gIGxldCBzdCwgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzdCB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbXBsKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbXBsKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHN0IHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPVxuICBtYXRjaFxuICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHN0XG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBtYXBfc2lnbmF0dXJlX2dlbiBzZyB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc2lnbmF0dXJlIHNnKTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc2cgPVxuICAgIGxldCBzZyA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHNnXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzZ1xuICAgIGluXG4gICAgc2dcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzZyA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc2lnbmF0dXJlX2l0ZW0pXG4gICAgQCBzZ1xuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc2cgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzaWduYXR1cmUgc2dcbiAgICAgICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzKVxuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHNnXG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3NpZyBzZyBpblxuICBsZXQgc2csIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc2cgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW50ZilcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW50ZilcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzZyB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc2lnbmF0dXJlIHNnID1cbiAgbWF0Y2hcbiAgICBtYXBfc2lnbmF0dXJlX2dlbiBzZ1xuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokKilcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBFbnRyeSBwb2ludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyA9XG4gIGxldCB0ZXN0IG1hZ2ljX251bWJlciA9XG4gICAgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6KFN0cmluZy5zdWIgbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gIGluXG4gIHRlc3QgQXN0X21hZ2ljLmFzdF9pbnRmX21hZ2ljX251bWJlciB8fCB0ZXN0IEFzdF9tYWdpYy5hc3RfaW1wbF9tYWdpY19udW1iZXJcblxubGV0IHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBpbnB1dF9maWxlX25hbWUgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBtc2cgLT5cbiAgICAgIGxldCBlcnIgPVxuICAgICAgICBMb2NhdGlvbi5FcnJvci5tYWtlIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgaW5wdXRfZmlsZV9uYW1lKSBtc2cgfnN1YjpbXVxuICAgICAgaW5cbiAgICAgIEVycm9yIChlcnIsIGlucHV0X3ZlcnNpb24pKVxuXG5sZXQgcmVtb3ZlX25vX2Vycm9yIGZuID0gdHJ5IFN0ZGxpYi5TeXMucmVtb3ZlIGZuIHdpdGggU3lzX2Vycm9yIF8gLT4gKClcblxubGV0IHByb3RlY3R4IHggfmYgfmZpbmFsbHkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHYgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHZcbiAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgcmFpc2UgZVxuXG5sZXQgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZiA9XG4gIG1hdGNoICFwcmVwcm9jZXNzb3Igd2l0aFxuICB8IE5vbmUgLT4gZiBmblxuICB8IFNvbWUgcHAgLT5cbiAgICAgIHByb3RlY3R4IChTdGRsaWIuRmlsZW5hbWUudGVtcF9maWxlIFwib2NhbWxwcFwiIFwiXCIpIH5maW5hbGx5OnJlbW92ZV9ub19lcnJvclxuICAgICAgICB+ZjooZnVuIHRtcGZpbGUgLT5cbiAgICAgICAgICBtYXRjaCBTeXN0ZW0ucnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0OmZuIH5vdXRwdXQ6dG1wZmlsZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBmIHRtcGZpbGVcbiAgICAgICAgICB8IEVycm9yIChmYWlsZWRfY29tbWFuZCwgZmFsbF9iYWNrX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICAgIHZlcnNpb25lZF9lcnJvcmYgZmFsbF9iYWNrX3ZlcnNpb24gZm5cbiAgICAgICAgICAgICAgICBcIkVycm9yIHdoaWxlIHJ1bm5pbmcgZXh0ZXJuYWwgcHJlcHJvY2Vzc29yXFxuQ29tbWFuZCBsaW5lOiAlc1xcblwiXG4gICAgICAgICAgICAgICAgZmFpbGVkX2NvbW1hbmQpXG5cbmxldCByZWxvY2F0ZV9tYXBwZXIgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgKiBzdHJpbmddIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QhIHBvc2l0aW9uIChvbGRfZm4sIG5ld19mbikgcG9zID1cbiAgICAgIGlmIFN0cmluZy5lcXVhbCBwb3MucG9zX2ZuYW1lIG9sZF9mbiB0aGVuIHsgcG9zIHdpdGggcG9zX2ZuYW1lID0gbmV3X2ZuIH1cbiAgICAgIGVsc2UgcG9zXG4gIGVuZFxuXG4oKiBTZXQgdGhlIGlucHV0IG5hbWUgZ2xvYmFsbHkuIFRoaXMgaXMgdXNlZCBieSBzb21lIHBweCByZXdyaXRlcnNcbiAgIHN1Y2ggYXMgYmlzZWN0X3BweC4gKilcbmxldCBzZXRfaW5wdXRfbmFtZSA9IEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbmFtZVxuXG5sZXQgbG9hZF9pbnB1dCB+KGtpbmQgOiBLaW5kLnQpIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSBmbiA9XG4gIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gIGxldCBpbnB1dF9zb3VyY2UgPSBpZiBTdHJpbmcuZXF1YWwgZm4gXCItXCIgdGhlbiBBc3RfaW8uU3RkaW4gZWxzZSBGaWxlIGZuIGluXG4gIGxldCBpbnB1dF9raW5kID0gQXN0X2lvLlBvc3NpYmx5X3NvdXJjZSAoa2luZCwgaW5wdXRfbmFtZSkgaW5cbiAgbWF0Y2ggQXN0X2lvLnJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kIHdpdGhcbiAgfCBPayB7IGlucHV0X25hbWUgPSBhc3RfaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gLT5cbiAgICAgIGxldCBhc3Rfa2luZCA9IEludGZfb3JfaW1wbC5raW5kIGFzdCBpblxuICAgICAgaWYgbm90IChLaW5kLmVxdWFsIGtpbmQgYXN0X2tpbmQpIHRoZW5cbiAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGZuXG4gICAgICAgICAgXCJGaWxlIGNvbnRhaW5zIGEgYmluYXJ5ICVzIEFTVCBidXQgYW4gJXMgd2FzIGV4cGVjdGVkXCJcbiAgICAgICAgICAoS2luZC5kZXNjcmliZSBhc3Rfa2luZCkgKEtpbmQuZGVzY3JpYmUga2luZClcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgfHwgbm90IHJlbG9jYXRlIHRoZW4gKFxuICAgICAgICBzZXRfaW5wdXRfbmFtZSBhc3RfaW5wdXRfbmFtZTtcbiAgICAgICAgT2sgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBPa1xuICAgICAgICAgICggaW5wdXRfbmFtZSxcbiAgICAgICAgICAgIGlucHV0X3ZlcnNpb24sXG4gICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSkgKVxuICB8IEVycm9yIChVbmtub3duX3ZlcnNpb24gKHVua25vd25fbWFnaWMsIGZhbGxfYmFja192ZXJzaW9uKSkgLT5cbiAgICAgIHZlcnNpb25lZF9lcnJvcmYgZmFsbF9iYWNrX3ZlcnNpb24gZm5cbiAgICAgICAgXCJGaWxlIGlzIGEgYmluYXJ5IGFzdCBmb3IgYW4gdW5rbm93biB2ZXJzaW9uIG9mIE9DYW1sIHdpdGggbWFnaWMgXFxcbiAgICAgICAgIG51bWJlciAnJXMnXCJcbiAgICAgICAgdW5rbm93bl9tYWdpY1xuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpXG4gIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSkgLT5cbiAgICAgIEVycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBmbiA9XG4gICgqIElmIHRoZXJlJ3MgYW4gZXJyb3Igd2hpbGUgbG9hZGluZyBpbiBydW5fYXNfcHB4IG1vZGUsIHRoZSBraW5kIG9mIEFTVCAoaW1wbC9pbnRmKSBpcyBzdGlsbCB1bmtub3duLlxuICAgICBUaGF0J3Mgd2h5LCBhcyBvcHBvc2VkIHRvIGxvYWRfaW5wdXQsIHRoaXMgZnVuY3Rpb24gcmFpc2VzIGVycm9ycyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIHJlc3VsdDpcbiAgICAgaGFuZGxpbmcgYW4gZXJyb3IgYnkgcmV0dXJuaW5nIGFuIEFTVCB3aXRoIHRoZSBlcnJvciBwYWNrZWQgYXMgZXh0ZW5zaW9uIG5vZGUgd291bGRuJ3QgYmUgcG9zc2libGUuICopXG4gIG1hdGNoIEFzdF9pby5yZWFkIChGaWxlIGZuKSB+aW5wdXRfa2luZDpBc3RfaW8uTmVjZXNzYXJpbHlfYmluYXJ5IHdpdGhcbiAgfCBPayB7IGlucHV0X25hbWUgPSBhc3RfaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaCAhbG9jX2ZuYW1lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBhc3RfaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGFzdFxuICAgICAgICB8IFNvbWUgaW5wdXRfbmFtZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHRoZW4gYXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpXG4gICAgICBpblxuICAgICAgKCogV2l0aCBgLS1hcy1wcHhgLCBvY2FtbCBjYWxscyB0aGUgc3RhbmRhbG9uZSBzZXBhcmF0ZWx5IGZvciBldmVyeSBzdHJ1Y3R1cmUvc2lnbmF0dXJlIGl0ZW1cbiAgICAgICAgIHdpdGggdGhlIGZpbGVuYW1lIGFzIG1ldGFkYXRhIHRoYXQgaXQgZ2V0cyBmcm9tIHRoZSBwcmV2aW91cyBjYWxsLiByZWxvY2F0ZV9tYXBwZXIgb25seVxuICAgICAgICAgcmVsb2NhdGVzIHBvc2l0aW9ucyB3aG9zZSBwb3NpdGlvbiBmaWxlbmFtZSBjb2luY2lkZXMgd2l0aCB0aGF0IG1ldGFkYXRhIGZpbGVuYW1lLlxuICAgICAgICAgU28gYWx3YXlzIHJldHVybiB0aGUgbWV0YWRhdGEgZmlsZW5hbWUgaXRzZWxmLCBldmVuIGlmIGAtbG9jLWZpbGVuYW1lYCBpcyBwcm92aWRlZC4gKilcbiAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICB8IEVycm9yIChVbmtub3duX3ZlcnNpb24gKHVua25vd25fbWFnaWMsIF8pKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiVGhlIGlucHV0IGlzIGEgYmluYXJ5IGFzdCBmb3IgYW4gdW5rbm93biB2ZXJzaW9uIG9mIE9DYW1sIHdpdGggbWFnaWMgXFxcbiAgICAgICAgIG51bWJlciAnJXMnXCJcbiAgICAgICAgdW5rbm93bl9tYWdpY1xuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIkV4cGVjdGVkIGEgYmluYXJ5IEFTVCBhcyBpbnB1dFwiXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIF8pKSB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBfKSkgLT5cbiAgICAgIGxldCBvcGVuIExvY2F0aW9uLkVycm9yIGluXG4gICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm4gfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuXG5sZXQgbG9hZF9zb3VyY2VfZmlsZSBmbiA9XG4gIGxldCBzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmbiBpblxuICBpZiBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgIFwicHB4bGliX2RyaXZlcjogY2Fubm90IHVzZSAtcmVjb25jaWxlIHdpdGggYmluYXJ5IEFTVCBmaWxlc1wiO1xuICBzXG5cbnR5cGUgb3V0cHV0X21vZGUgPVxuICB8IFByZXR0eV9wcmludFxuICB8IER1bXBfYXN0XG4gIHwgRHBhcnNldHJlZVxuICB8IFJlY29uY2lsZSBvZiBSZWNvbmNpbGUubW9kZVxuICB8IE51bGxcblxuKCokKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc3RyIHN0ID1cbiAgbGV0IHN0ID1cbiAgICBtYXRjaCBzdCB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc3QgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFN0cnVjdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zdHIgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc3RcbiAgICB8IF8gLT4gc3RcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzdFxuXG5sZXQgYWRkX2Nvb2tpZXNfc3RyIHN0ID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTdHJ1Y3R1cmVcbiAgaW5cbiAgcHJlZml4IEAgc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubGV0IGV4dHJhY3RfY29va2llc19zaWcgc2cgPVxuICBsZXQgc2cgPVxuICAgIG1hdGNoIHNnIHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc2lnX2Rlc2MgPVxuICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzZyAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU2lnbmF0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3NpZyB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzZ1xuICAgIHwgXyAtPiBzZ1xuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHNnXG5cbmxldCBhZGRfY29va2llc19zaWcgc2cgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zaWcgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFNpZ25hdHVyZVxuICBpblxuICBwcmVmaXggQCBzZ1xuXG4oKiQqKVxuXG5sZXQgZXh0cmFjdF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGV4dHJhY3RfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoZXh0cmFjdF9jb29raWVzX3N0ciB4KVxuXG5sZXQgYWRkX2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoYWRkX2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGFkZF9jb29raWVzX3N0ciB4KVxuXG5sZXQgY29ycmVjdGlvbnMgPSByZWYgW11cbmxldCBhZGRfdG9fbGlzdCByIHggPSByIDo9IHggOjogIXJcblxubGV0IHJlZ2lzdGVyX2NvcnJlY3Rpb24gfmxvYyB+cmVwbCA9XG4gIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlX3RleHQgKCkgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmRcbiAgICAgICB+cmVwbClcblxubGV0IHByb2Nlc3NfZmlsZV9ob29rcyA9IHJlZiBbXVxubGV0IHJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIGYgPSBhZGRfdG9fbGlzdCBwcm9jZXNzX2ZpbGVfaG9va3MgZlxuXG5tb2R1bGUgRmlsZV9wcm9wZXJ0eSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBtdXRhYmxlIGRhdGEgOiAnYSBvcHRpb247XG4gICAgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50O1xuICB9XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogXyB0IC0+IHBhY2tlZFxuXG4gIGxldCBhbGwgPSByZWYgW11cbiAgbGV0IHJlZ2lzdGVyIHQgPSBhZGRfdG9fbGlzdCBhbGwgKFQgdClcbiAgbGV0IHJlc2V0X2FsbCAoKSA9IExpc3QuaXRlciAhYWxsIH5mOihmdW4gKFQgdCkgLT4gdC5kYXRhIDwtIE5vbmUpXG5cbiAgbGV0IGR1bXBfYW5kX3Jlc2V0X2FsbCAoKSA9XG4gICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnJldiAhYWxsKSB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIG1hdGNoIHQuZGF0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgICB0LmRhdGEgPC0gTm9uZTtcbiAgICAgICAgICAgIFNvbWUgKHQubmFtZSwgdC5zZXhwX29mX3QgdikpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9maWxlX3Byb3BlcnR5XG4gICAgKE5hbWUgOiBzaWdcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kKVxuICAgIChUIDogU2V4cGFibGUuUykgPVxuc3RydWN0XG4gIGxldCB0IDogXyBGaWxlX3Byb3BlcnR5LnQgPVxuICAgIHsgbmFtZSA9IE5hbWUubmFtZTsgZGF0YSA9IE5vbmU7IHNleHBfb2ZfdCA9IFQuc2V4cF9vZl90IH1cblxuICBsZXQgKCkgPSBGaWxlX3Byb3BlcnR5LnJlZ2lzdGVyIHRcbiAgbGV0IHNldCB4ID0gdC5kYXRhIDwtIFNvbWUgeFxuZW5kXG5cbmxldCBwcm9jZXNzX2FzdCAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2tcbiAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmVtYmVkX2Vycm9ycyA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtYXBfc2lnbmF0dXJlX2dlbiB4IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICB+aW5wdXRfbmFtZTooU29tZSBpbnB1dF9uYW1lKSB+ZW1iZWRfZXJyb3JzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBhc3QgLT4gYXN0XG4gICAgICBpblxuICAgICAgSW50Zl9vcl9pbXBsLkludGYgYXN0XG4gIHwgSW1wbCB4IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtYXBfc3RydWN0dXJlX2dlbiB4IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICB+aW5wdXRfbmFtZTooU29tZSBpbnB1dF9uYW1lKSB+ZW1iZWRfZXJyb3JzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBhc3QgLT4gYXN0XG4gICAgICBpblxuICAgICAgSW50Zl9vcl9pbXBsLkltcGwgYXN0XG5cbmxldCBwcm9jZXNzX2ZpbGUgKGtpbmQgOiBLaW5kLnQpIGZuIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSB+b3V0cHV0X21vZGVcbiAgICB+ZW1iZWRfZXJyb3JzIH5vdXRwdXQgPVxuICBGaWxlX3Byb3BlcnR5LnJlc2V0X2FsbCAoKTtcbiAgTGlzdC5pdGVyIChMaXN0LnJldiAhcHJvY2Vzc19maWxlX2hvb2tzKSB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIGNvcnJlY3Rpb25zIDo9IFtdO1xuICBsZXQgcmVwbGFjZW1lbnRzID0gcmVmIFtdIGluXG4gIGxldCB0b29sX25hbWUgPSBcInBweF9kcml2ZXJcIiBpblxuICBsZXQgaG9vayA6IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnQgPVxuICAgIG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgICB8IFJlY29uY2lsZSAoVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgZiA9XG4gICAgICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgICAgICBhZGRfdG9fbGlzdCByZXBsYWNlbWVudHNcbiAgICAgICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEV4dGVuc2lvbiBjb250ZXh0KVxuICAgICAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOmdlbmVyYXRlZCkpO1xuICAgICAgICB9XG4gICAgfCBfIC0+IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICBpblxuICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgOiBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIudCA9XG4gICAge1xuICAgICAgZiA9XG4gICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRmxvYXRpbmdfYXR0cmlidXRlIGNvbnRleHQpXG4gICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDooTWFueSBnZW5lcmF0ZWQpKSk7XG4gICAgfVxuICBpblxuXG4gIGxldCBpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QgPVxuICAgIGxldCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCA9XG4gICAgICB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mOihsb2FkX2lucHV0IH5raW5kIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSlcbiAgICBpblxuICAgIG1hdGNoIHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIHdpdGhcbiAgICB8IE9rIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSAtPiAoXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgZXh0cmFjdF9jb29raWVzIGFzdFxuICAgICAgICAgICAgfD4gcHJvY2Vzc19hc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgIGluXG4gICAgICAgICAgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZCkpXG4gICAgfCBFcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgIChpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfmtpbmQpXG4gICAgfCBFcnJvciAoZXJyb3IsIF8pIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uLkVycm9yIGluXG4gICAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmblxuICAgICAgICB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG4gIGluXG4gIE9wdGlvbi5pdGVyICFvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgfmY6KGZ1biBmbiAtPlxuICAgICAgbGV0IG1ldGFkYXRhID0gRmlsZV9wcm9wZXJ0eS5kdW1wX2FuZF9yZXNldF9hbGwgKCkgaW5cbiAgICAgIE91dF9jaGFubmVsLndyaXRlX2FsbCBmblxuICAgICAgICB+ZGF0YTpcbiAgICAgICAgICAoTGlzdC5tYXAgbWV0YWRhdGEgfmY6KGZ1biAocywgc2V4cCkgLT5cbiAgICAgICAgICAgICAgIFNleHAudG9fc3RyaW5nX2h1bSAoU2V4cC5MaXN0IFsgQXRvbSBzOyBzZXhwIF0pIF4gXCJcXG5cIilcbiAgICAgICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIikpO1xuXG4gIGxldCBpbnB1dF9jb250ZW50cyA9IGxhenkgKGxvYWRfc291cmNlX2ZpbGUgZm4pIGluXG4gIGxldCBjb3JyZWN0ZWQgPSBmbiBeICFjb3JyZWN0ZWRfc3VmZml4IGluXG4gIGxldCBtaXNtYXRjaGVzX2ZvdW5kID1cbiAgICBtYXRjaCAhY29ycmVjdGlvbnMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICAgaWYgU3RkbGliLlN5cy5maWxlX2V4aXN0cyBjb3JyZWN0ZWQgdGhlbiBTdGRsaWIuU3lzLnJlbW92ZSBjb3JyZWN0ZWQ7XG4gICAgICAgIGZhbHNlXG4gICAgfCBjb3JyZWN0aW9ucyAtPlxuICAgICAgICBSZWNvbmNpbGUucmVjb25jaWxlIGNvcnJlY3Rpb25zXG4gICAgICAgICAgfmNvbnRlbnRzOihMYXp5LmZvcmNlIGlucHV0X2NvbnRlbnRzKVxuICAgICAgICAgIH5vdXRwdXQ6KFNvbWUgY29ycmVjdGVkKSB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWVcbiAgICAgICAgICB+dGFyZ2V0OkNvcnJlY3RlZCA/c3R5bGVyOiFzdHlsZXIgfmtpbmQ7XG4gICAgICAgIHRydWVcbiAgaW5cblxuICAobWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICB8IE51bGwgLT4gKClcbiAgfCBQcmV0dHlfcHJpbnQgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OmZhbHNlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBsZXQgcHBmID0gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFBwcmludGFzdC5zaWduYXR1cmUgcHBmIGFzdFxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gUHByaW50YXN0LnN0cnVjdHVyZSBwcGYgYXN0KTtcbiAgICAgICAgICBsZXQgbnVsbF9hc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGggSW50ZiBbXSB8IEltcGwgW10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCBudWxsX2FzdCB0aGVuIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgRHVtcF9hc3QgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIEFzdF9pby53cml0ZSBvY1xuICAgICAgICAgICAgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfVxuICAgICAgICAgICAgfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuICB8IERwYXJzZXRyZWUgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OmZhbHNlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBsZXQgcHBmID0gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICBsZXQgYXN0ID0gYWRkX2Nvb2tpZXMgYXN0IGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBTZXhwLnBwX2h1bSBwcGYgKEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZSBhc3QpXG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBTZXhwLnBwX2h1bSBwcGYgKEFzdF90cmF2ZXJzZS5zZXhwX29mI3N0cnVjdHVyZSBhc3QpKTtcbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IFJlY29uY2lsZSBtb2RlIC0+XG4gICAgICBSZWNvbmNpbGUucmVjb25jaWxlICFyZXBsYWNlbWVudHNcbiAgICAgICAgfmNvbnRlbnRzOihMYXp5LmZvcmNlIGlucHV0X2NvbnRlbnRzKVxuICAgICAgICB+b3V0cHV0IH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZSB+dGFyZ2V0OihPdXRwdXQgbW9kZSlcbiAgICAgICAgP3N0eWxlcjohc3R5bGVyIH5raW5kKTtcblxuICBpZlxuICAgIG1pc21hdGNoZXNfZm91bmQgJiYgbWF0Y2ggIWRpZmZfY29tbWFuZCB3aXRoIFNvbWUgXCItXCIgLT4gZmFsc2UgfCBfIC0+IHRydWVcbiAgdGhlbiAoXG4gICAgUHB4bGliX3ByaW50X2RpZmYucHJpbnQgKCkgfmZpbGUxOmZuIH5maWxlMjpjb3JyZWN0ZWQgfnVzZV9jb2xvcjohdXNlX2NvbG9yXG4gICAgICA/ZGlmZl9jb21tYW5kOiFkaWZmX2NvbW1hbmQ7XG4gICAgU3RkbGliLmV4aXQgMSlcblxubGV0IG91dHB1dF9tb2RlID0gcmVmIFByZXR0eV9wcmludFxubGV0IG91dHB1dCA9IHJlZiBOb25lXG5sZXQga2luZCA9IHJlZiBOb25lXG5sZXQgaW5wdXQgPSByZWYgTm9uZVxubGV0IGVtYmVkX2Vycm9ycyA9IHJlZiBmYWxzZVxuXG5sZXQgc2V0X2lucHV0IGZuID1cbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+IGlucHV0IDo9IFNvbWUgZm5cbiAgfCBTb21lIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJ0b28gbWFueSBpbnB1dCBmaWxlc1wiKVxuXG5sZXQgc2V0X2tpbmQgayA9XG4gIG1hdGNoICFraW5kIHdpdGhcbiAgfCBTb21lIGsnIHdoZW4gbm90IChLaW5kLmVxdWFsIGsgaycpIC0+XG4gICAgICByYWlzZSAoQXJnLkJhZCBcIm11c3Qgc3BlY2lmeSBhdCBtb3N0IG9uZSBvZiAtaW1wbCBvciAtaW50ZlwiKVxuICB8IF8gLT4ga2luZCA6PSBTb21lIGtcblxubGV0IHNldF9vdXRwdXRfbW9kZSBtb2RlID1cbiAgbWF0Y2ggKCFvdXRwdXRfbW9kZSwgbW9kZSkgd2l0aFxuICB8IFByZXR0eV9wcmludCwgXyAtPiBvdXRwdXRfbW9kZSA6PSBtb2RlXG4gIHwgXywgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICB8IER1bXBfYXN0LCBEdW1wX2FzdCB8IERwYXJzZXRyZWUsIERwYXJzZXRyZWUgLT4gKClcbiAgfCBSZWNvbmNpbGUgYSwgUmVjb25jaWxlIGIgd2hlbiBQb2x5LmVxdWFsIGEgYiAtPiAoKVxuICB8IHgsIHkgLT5cbiAgICAgIGxldCBhcmdfb2Zfb3V0cHV0X21vZGUgPSBmdW5jdGlvblxuICAgICAgICB8IFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBEdW1wX2FzdCAtPiBcIi1kdW1wLWFzdFwiXG4gICAgICAgIHwgRHBhcnNldHJlZSAtPiBcIi1kcGFyc2V0cmVlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+IFwiLXJlY29uY2lsZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPiBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiXG4gICAgICAgIHwgTnVsbCAtPiBcIi1udWxsXCJcbiAgICAgIGluXG4gICAgICByYWlzZVxuICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyBhbmQgJXMgYXJlIGluY29tcGF0aWJsZVwiIChhcmdfb2Zfb3V0cHV0X21vZGUgeClcbiAgICAgICAgICAgICAgKGFyZ19vZl9vdXRwdXRfbW9kZSB5KSkpXG5cbmxldCBwcmludF90cmFuc2Zvcm1hdGlvbnMgKCkgPVxuICBMaXN0Lml0ZXIgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0Lm5hbWUpXG5cbmxldCBwYXJzZV9hcHBseV9saXN0IHMgPVxuICBsZXQgbmFtZXMgPVxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiXCIgdGhlbiBbXSBlbHNlIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLCdcbiAgaW5cbiAgTGlzdC5pdGVyIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgaWZcbiAgICAgICAgbm90XG4gICAgICAgICAgKExpc3QuZXhpc3RzICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKFN0ZGxpYi5BcmcuQmFkXG4gICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiY29kZSB0cmFuc2Zvcm1hdGlvbiAnJXMnIGRvZXMgbm90IGV4aXN0XCIgbmFtZSkpKTtcbiAgbmFtZXNcblxudHlwZSBtYXNrID0ge1xuICBtdXRhYmxlIGFwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xuICBtdXRhYmxlIGRvbnRfYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG59XG5cbmxldCBtYXNrID0geyBhcHBseSA9IE5vbmU7IGRvbnRfYXBwbHkgPSBOb25lIH1cblxubGV0IGhhbmRsZV9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgY2FsbGVkIHRvbyBtYW55IHRpbWVzXCIpO1xuICAoKiBUaGlzIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MgbW9yZSBpbnR1aXRpdmUgKilcbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgLWRvbnQtYXBwbHlcIik7XG4gIG1hc2suYXBwbHkgPC0gU29tZSAocGFyc2VfYXBwbHlfbGlzdCBzKVxuXG5sZXQgaGFuZGxlX2RvbnRfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgY2FsbGVkIHRvbyBtYW55IHRpbWVzXCIpO1xuICBtYXNrLmRvbnRfYXBwbHkgPC0gU29tZSAocGFyc2VfYXBwbHlfbGlzdCBzKVxuXG5sZXQgaW50ZXJwcmV0X21hc2sgKCkgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHx8IE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgbGV0IHNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIGN0ID1cbiAgICAgIGxldCBpc19jYW5kaWRhdGUgPVxuICAgICAgICBtYXRjaCBtYXNrLmFwcGx5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+IExpc3QuZXhpc3RzIG5hbWVzIH5mOihUcmFuc2Zvcm0uaGFzX25hbWUgY3QpXG4gICAgICBpblxuICAgICAgbGV0IGlzX3NlbGVjdGVkID1cbiAgICAgICAgbWF0Y2ggbWFzay5kb250X2FwcGx5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlzX2NhbmRpZGF0ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgICAgIGlzX2NhbmRpZGF0ZSAmJiBub3QgKExpc3QuZXhpc3RzIG5hbWVzIH5mOihUcmFuc2Zvcm0uaGFzX25hbWUgY3QpKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3NlbGVjdGVkIHRoZW4gU29tZSBjdC5uYW1lIGVsc2UgTm9uZVxuICAgIGluXG4gICAgYXBwbHlfbGlzdCA6PVxuICAgICAgU29tZSAoTGlzdC5maWx0ZXJfbWFwICFUcmFuc2Zvcm0uYWxsIH5mOnNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lKVxuXG5sZXQgc2V0X2Nvb2tpZSBzID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jz0nIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICByYWlzZSAoQXJnLkJhZCBcImludmFsaWQgY29va2llLCBtdXN0IGJlIG9mIHRoZSBmb3JtIFxcXCI8bmFtZT49PGV4cHI+XFxcIlwiKVxuICB8IFNvbWUgKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyB2YWx1ZSBpblxuICAgICAgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCI8Y29tbWFuZC1saW5lPlwiO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH07XG4gICAgICBsZXQgZXhwciA9IFBhcnNlLmV4cHJlc3Npb24gbGV4YnVmIGluXG4gICAgICBDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIDo9IChuYW1lLCBleHByKSA6OiAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaVxuXG5sZXQgc2hhcmVkX2FyZ3MgPVxuICBbXG4gICAgKCBcIi1sb2MtZmlsZW5hbWVcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGxvY19mbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCI8c3RyaW5nPiBGaWxlIG5hbWUgdG8gdXNlIGluIGxvY2F0aW9uc1wiICk7XG4gICAgKCBcIi1yZXNlcnZlLW5hbWVzcGFjZVwiLFxuICAgICAgQXJnLlN0cmluZyBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXMucmVzZXJ2ZSxcbiAgICAgIFwiPHN0cmluZz4gTWFyayB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFzIHJlc2VydmVkXCIgKTtcbiAgICAoXCItbm8tY2hlY2tcIiwgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzLCBcIiBEaXNhYmxlIGNoZWNrcyAodW5zYWZlKVwiKTtcbiAgICAoXCItY2hlY2tcIiwgQXJnLlNldCBwZXJmb3JtX2NoZWNrcywgXCIgRW5hYmxlIGNoZWNrc1wiKTtcbiAgICAoIFwiLW5vLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zLFxuICAgICAgXCIgRGlzYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zLFxuICAgICAgXCIgRW5hYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1uby1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5DbGVhciBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIERpc2FibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRW5hYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWFwcGx5XCIsXG4gICAgICBBcmcuU3RyaW5nIGhhbmRsZV9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBBcHBseSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMgaW4gb3JkZXIgKGNvbW1hLXNlcGFyYXRlZCBsaXN0KVwiICk7XG4gICAgKCBcIi1kb250LWFwcGx5XCIsXG4gICAgICBBcmcuU3RyaW5nIGhhbmRsZV9kb250X2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEV4Y2x1ZGUgdGhlc2UgdHJhbnNmb3JtYXRpb25zXCIgKTtcbiAgICAoIFwiLW5vLW1lcmdlXCIsXG4gICAgICBBcmcuU2V0IG5vX21lcmdlLFxuICAgICAgXCIgRG8gbm90IG1lcmdlIGNvbnRleHQgZnJlZSB0cmFuc2Zvcm1hdGlvbnMgKGJldHRlciBmb3IgZGVidWdnaW5nIFxcXG4gICAgICAgcmV3cml0ZXJzKS4gQXMgYSByZXN1bHQsIHRoZSBjb250ZXh0LWZyZWUgdHJhbnNmb3JtYXRpb25zIGFyZSBub3QgYWxsIFxcXG4gICAgICAgYXBwbGllZCBiZWZvcmUgYWxsIGltcGwgYW5kIGludGYuXCIgKTtcbiAgICAoXCItY29va2llXCIsIEFyZy5TdHJpbmcgc2V0X2Nvb2tpZSwgXCJOQU1FPUVYUFIgU2V0IHRoZSBjb29raWUgTkFNRSB0byBFWFBSXCIpO1xuICAgIChcIi0tY29va2llXCIsIEFyZy5TdHJpbmcgc2V0X2Nvb2tpZSwgXCIgU2FtZSBhcyAtY29va2llXCIpO1xuICBdXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlciBzaGFyZWRfYXJncyB+ZjooZnVuIChrZXksIHNwZWMsIGRvYykgLT4gYWRkX2FyZyBrZXkgc3BlYyB+ZG9jKVxuXG5sZXQgYXNfcHAgKCkgPVxuICBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3Q7XG4gIGVtYmVkX2Vycm9ycyA6PSB0cnVlXG5cbmxldCBzdGFuZGFsb25lX2FyZ3MgPVxuICBbXG4gICAgKCBcIi1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFJ1biBhcyBhIC1wcHggcmV3cml0ZXIgKG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50KVwiICk7XG4gICAgKCBcIi0tYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLS1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgU2FtZSBhcyAtYXMtcHB4XCIgKTtcbiAgICAoXCItYXMtcHBcIiwgQXJnLlVuaXQgYXNfcHAsIFwiIFNob3J0aGFuZCBmb3I6IC1kdW1wLWFzdCAtZW1iZWQtZXJyb3JzXCIpO1xuICAgIChcIi0tYXMtcHBcIiwgQXJnLlVuaXQgYXNfcHAsIFwiIFNhbWUgYXMgLWFzLXBwXCIpO1xuICAgICggXCItb1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0IDo9IFNvbWUgcyksXG4gICAgICBcIjxmaWxlbmFtZT4gT3V0cHV0IGZpbGUgKHVzZSAnLScgZm9yIHN0ZG91dClcIiApO1xuICAgIChcIi1cIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfaW5wdXQgXCItXCIpLCBcIiBSZWFkIGlucHV0IGZyb20gc3RkaW5cIik7XG4gICAgKCBcIi1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgRHVtcCB0aGUgbWFyc2hhbGVkIGFzdCB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZCBvZiBwcmV0dHktcHJpbnRpbmcgaXRcIlxuICAgICk7XG4gICAgKCBcIi0tZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIFNhbWUgYXMgLWR1bXAtYXN0XCIgKTtcbiAgICAoIFwiLWRwYXJzZXRyZWVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIERwYXJzZXRyZWUpLFxuICAgICAgXCIgUHJpbnQgdGhlIHBhcnNldHJlZSAoc2FtZSBhcyBvY2FtbGMgLWRwYXJzZXRyZWUpXCIgKTtcbiAgICAoIFwiLWVtYmVkLWVycm9yc1wiLFxuICAgICAgQXJnLlNldCBlbWJlZF9lcnJvcnMsXG4gICAgICBcIiBFbWJlZCBlcnJvcnMgaW4gdGhlIG91dHB1dCBBU1QgKGRlZmF1bHQ6IHRydWUgd2hlbiAtYXMtcHAsIGZhbHNlIFxcXG4gICAgICAgb3RoZXJ3aXNlKVwiICk7XG4gICAgKCBcIi1udWxsXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBOdWxsKSxcbiAgICAgIFwiIFByb2R1Y2Ugbm8gb3V0cHV0LCBleGNlcHQgZm9yIGVycm9yc1wiICk7XG4gICAgKCBcIi1pbXBsXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEltcGwpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1sIGZpbGVcIiApO1xuICAgIChcIi0taW1wbFwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEltcGwpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbXBsXCIpO1xuICAgICggXCItaW50ZlwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbGkgZmlsZVwiICk7XG4gICAgKFwiLS1pbnRmXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksIFwiPGZpbGU+IFNhbWUgYXMgLWludGZcIik7XG4gICAgKCBcIi1kZWJ1Zy1hdHRyaWJ1dGUtZHJvcFwiLFxuICAgICAgQXJnLlNldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCxcbiAgICAgIFwiIERlYnVnIGF0dHJpYnV0ZSBkcm9wcGluZ1wiICk7XG4gICAgKCBcIi1wcmludC10cmFuc2Zvcm1hdGlvbnNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMsXG4gICAgICBcIiBQcmludCBsaW5rZWQtaW4gY29kZSB0cmFuc2Zvcm1hdGlvbnMsIGluIHRoZSBvcmRlciB0aGV5IGFyZSBhcHBsaWVkXCIgKTtcbiAgICAoIFwiLXByaW50LXBhc3Nlc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyxcbiAgICAgIFwiIFByaW50IHRoZSBhY3R1YWwgcGFzc2VzIG92ZXIgdGhlIHdob2xlIEFTVCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgXFxcbiAgICAgICBhcHBsaWVkXCIgKTtcbiAgICAoIFwiLWl0ZS1jaGVja1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIldhcm5pbmc6IHRoZSAtaXRlLWNoZWNrIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgaGFzIG5vIGVmZmVjdC5cXG4lIVwiO1xuICAgICAgICAgIEV4dHJhX3dhcm5pbmdzLmNhcmVfYWJvdXRfaXRlX2JyYW5jaCA6PSB0cnVlKSxcbiAgICAgIFwiIChubyBlZmZlY3QgLS0ga2VwdCBmb3IgY29tcGF0aWJpbGl0eSlcIiApO1xuICAgICggXCItcHBcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHByZXByb2Nlc3NvciA6PSBTb21lIHMpLFxuICAgICAgXCI8Y29tbWFuZD4gIFBpcGUgc291cmNlcyB0aHJvdWdoIHByZXByb2Nlc3NvciA8Y29tbWFuZD4gKGluY29tcGF0aWJsZSBcXFxuICAgICAgIHdpdGggLWFzLXBweClcIiApO1xuICAgICggXCItcmVjb25jaWxlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcykpLFxuICAgICAgXCIgKFdJUCkgUHJldHR5IHByaW50IHRoZSBvdXRwdXQgdXNpbmcgYSBtaXggb2YgdGhlIGlucHV0IHNvdXJjZSBhbmQgdGhlIFxcXG4gICAgICAgZ2VuZXJhdGVkIGNvZGVcIiApO1xuICAgICggXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzKSksXG4gICAgICBcIiAoV0lQKSBzYW1lIGFzIC1yZWNvbmNpbGUgYnV0IHVzZXMgY29tbWVudHMgdG8gZW5jbG9zZSB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIERvbid0IHVzZSBjb2xvcnMgd2hlbiBwcmludGluZyBlcnJvcnNcIik7XG4gICAgKCBcIi1kaWZmLWNtZFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcyksXG4gICAgICBcIiBEaWZmIGNvbW1hbmQgd2hlbiB1c2luZyBjb2RlIGV4cGVjdGF0aW9ucyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiICk7XG4gICAgKCBcIi1wcmV0dHlcIixcbiAgICAgIEFyZy5TZXQgcHJldHR5LFxuICAgICAgXCIgSW5zdHJ1Y3QgY29kZSBnZW5lcmF0b3JzIHRvIGltcHJvdmUgdGhlIHByZXR0aW5lc3Mgb2YgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1zdHlsZXJcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gc3R5bGVyIDo9IFNvbWUgcyksIFwiIENvZGUgc3R5bGVyXCIpO1xuICAgICggXCItb3V0cHV0LW1ldGFkYXRhXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiRklMRSBXaGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IG1ldGFkYXRhXCIgKTtcbiAgICAoIFwiLWNvcnJlY3RlZC1zdWZmaXhcIixcbiAgICAgIEFyZy5TZXRfc3RyaW5nIGNvcnJlY3RlZF9zdWZmaXgsXG4gICAgICBcIlNVRkZJWCBTdWZmaXggdG8gYXBwZW5kIHRvIGNvcnJlY3RlZCBmaWxlc1wiICk7XG4gIF1cblxubGV0IGdldF9hcmdzID8oc3RhbmRhbG9uZV9hcmdzID0gc3RhbmRhbG9uZV9hcmdzKSAoKSA9XG4gIHN0YW5kYWxvbmVfYXJncyBAIExpc3QucmV2ICFhcmdzXG5cbmxldCBzdGFuZGFsb25lX21haW4gKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSBbPGZpbGVzPl1cIiBleGVfbmFtZSBpblxuICBsZXQgYXJncyA9IGdldF9hcmdzICgpIGluXG4gIEFyZy5wYXJzZSAoQXJnLmFsaWduIGFyZ3MpIHNldF9pbnB1dCB1c2FnZTtcbiAgaW50ZXJwcmV0X21hc2sgKCk7XG4gIGlmICFyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyB0aGVuIChcbiAgICBwcmludF90cmFuc2Zvcm1hdGlvbnMgKCk7XG4gICAgU3RkbGliLmV4aXQgMCk7XG4gIGlmICFyZXF1ZXN0X3ByaW50X3Bhc3NlcyB0aGVuIChcbiAgICBwcmludF9wYXNzZXMgKCk7XG4gICAgU3RkbGliLmV4aXQgMCk7XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogbm8gaW5wdXQgZmlsZSBnaXZlblxcbiUhXCIgZXhlX25hbWU7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgU29tZSBmbiAtPlxuICAgICAgbGV0IGtpbmQgPVxuICAgICAgICBtYXRjaCAha2luZCB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgIG1hdGNoIEtpbmQub2ZfZmlsZW5hbWUgZm4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgIFwiJXM6IGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoICclcycsIHVzZSAtaW1wbCBvciAtaW50Zi5cXG5cIlxuICAgICAgICAgICAgICAgICAgZXhlX25hbWUgZm47XG4gICAgICAgICAgICAgICAgU3RkbGliLmV4aXQgMilcbiAgICAgIGluXG4gICAgICBsZXQgaW5wdXRfbmFtZSwgcmVsb2NhdGUgPVxuICAgICAgICBtYXRjaCAhbG9jX2ZuYW1lIHdpdGggTm9uZSAtPiAoZm4sIGZhbHNlKSB8IFNvbWUgZm4gLT4gKGZuLCB0cnVlKVxuICAgICAgaW5cbiAgICAgIHByb2Nlc3NfZmlsZSBraW5kIGZuIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSB+b3V0cHV0X21vZGU6IW91dHB1dF9tb2RlXG4gICAgICAgIH5vdXRwdXQ6IW91dHB1dCB+ZW1iZWRfZXJyb3JzOiFlbWJlZF9lcnJvcnNcblxubGV0IHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbiA9XG4gIGxldCBpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QgPSBsb2FkX2lucHV0X3J1bl9hc19wcHggaW5wdXRfZm4gaW5cbiAgbGV0IGFzdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgYXN0ID0gZXh0cmFjdF9jb29raWVzIGFzdCBpblxuICAgICAgbGV0IHRvb2xfbmFtZSA9IEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpIGluXG4gICAgICBsZXQgaG9vayA9IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcCBpblxuICAgICAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICAgICAgcHJvY2Vzc19hc3QgYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgIH5lbWJlZF9lcnJvcnM6dHJ1ZVxuICAgIHdpdGggZXhuIC0+IGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kOihJbnRmX29yX2ltcGwua2luZCBhc3QpXG4gIGluXG4gIHdpdGhfb3V0cHV0IChTb21lIG91dHB1dF9mbikgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgIEFzdF9pby53cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcblxubGV0IHBhcnNlX2lucHV0IHBhc3NlZF9pbl9hcmdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnID1cbiAgdHJ5XG4gICAgQXJnLnBhcnNlX2FyZ3YgcGFzc2VkX2luX2FyZ3MgKEFyZy5hbGlnbiB2YWxpZF9hcmdzKVxuICAgICAgKGZ1biBfIC0+IHJhaXNlIChBcmcuQmFkIFwiYW5vbnltb3VzIGFyZ3VtZW50cyBub3QgYWNjZXB0ZWRcIikpXG4gICAgICBpbmNvcnJlY3RfaW5wdXRfbXNnXG4gIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBBcmcuSGVscCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAwXG5cbmxldCBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgaW5wdXQgPVxuICBsZXQgdmFsaWRfYXJncyA9IGdldF9hcmdzIH5zdGFuZGFsb25lX2FyZ3MgKCkgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgQEAgQXJyYXkudG9fbGlzdCBAQCBpbnB1dCB3aXRoXG4gIHwgb3V0cHV0X2ZuIDo6IGlucHV0X2ZuIDo6IGZsYWdzX2FuZF9wcm9nX25hbWVcbiAgICB3aGVuIExpc3QubGVuZ3RoIGZsYWdzX2FuZF9wcm9nX25hbWUgPiAwIC0+XG4gICAgICBsZXQgcHJvZ19uYW1lX2FuZF9mbGFncyA9IExpc3QucmV2IGZsYWdzX2FuZF9wcm9nX25hbWUgfD4gQXJyYXkub2ZfbGlzdCBpblxuICAgICAgcGFyc2VfaW5wdXQgcHJvZ19uYW1lX2FuZF9mbGFncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGludGVycHJldF9tYXNrICgpO1xuICAgICAgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuO1xuICAgICAgU3RkbGliLmV4aXQgMFxuICB8IFsgaGVscDsgXyBdIHdoZW4gU3RyaW5nLmVxdWFsIGhlbHAgXCItaGVscFwiIHx8IFN0cmluZy5lcXVhbCBoZWxwIFwiLS1oZWxwXCIgLT5cbiAgICAgIHBhcnNlX2lucHV0IGlucHV0IH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHwgXyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCJVc2FnZTogJXNcXG4lIVwiIHVzYWdlO1xuICAgICAgU3RkbGliLmV4aXQgMlxuXG5sZXQgc3RhbmRhbG9uZV9ydW5fYXNfcHB4X3Jld3JpdGVyICgpID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2IGluXG4gIGxldCB1c2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyAtYXMtcHB4IFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZVxuICBpblxuICBsZXQgYXJndiA9IEFycmF5Lm1ha2UgKG4gLSAxKSBcIlwiIGluXG4gIGFyZ3YuKDApIDwtIFN0ZGxpYi5TeXMuYXJndi4oMCk7XG4gIGZvciBpID0gMSB0byBuIC0gMiBkb1xuICAgIGFyZ3YuKGkpIDwtIFN0ZGxpYi5TeXMuYXJndi4oaSArIDEpXG4gIGRvbmU7XG4gIGxldCBzdGFuZGFsb25lX2FyZ3MgPVxuICAgIExpc3QubWFwIHN0YW5kYWxvbmVfYXJncyB+ZjooZnVuIChhcmcsIHNwZWMsIF9kb2MpIC0+XG4gICAgICAgIChhcmcsIHNwZWMsIFwiIFVudXNlZCB3aXRoIC1hcy1wcHhcIikpXG4gIGluXG4gIHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBhcmd2XG5cbmxldCBzdGFuZGFsb25lICgpID1cbiAgQXN0bGliLmluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaW5nX2Vudl92YXJzICgpO1xuICB0cnlcbiAgICBpZlxuICAgICAgQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiA+PSAyXG4gICAgICAmJlxuICAgICAgbWF0Y2ggU3RkbGliLlN5cy5hcmd2LigxKSB3aXRoXG4gICAgICB8IFwiLWFzLXBweFwiIHwgXCItLWFzLXBweFwiIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gc3RhbmRhbG9uZV9ydW5fYXNfcHB4X3Jld3JpdGVyICgpXG4gICAgZWxzZSBzdGFuZGFsb25lX21haW4gKCk7XG4gICAgU3RkbGliLmV4aXQgMFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBydW5fYXNfcHB4X3Jld3JpdGVyICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWUgaW5cbiAgbGV0IGlucHV0ID0gU3RkbGliLlN5cy5hcmd2IGluXG4gIHRyeSBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJnczpbXSB+dXNhZ2UgaW5wdXRcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcHJldHR5ICgpID0gIXByZXR0eVxuXG5sZXQgZW5hYmxlX2NoZWNrcyAoKSA9XG4gICgqIFdlIGRvIG5vdCBlbmFibGUgdGhlIGxvY2F0aW9ucyBjaGVjayBoZXJlLCB3ZSBjdXJyZW50bHkgcmVxdWlyZSB0aGF0IG9uZVxuICAgICB0byBiZSBzcGVjaWZpY2FsbHkgZW5hYmxlZC4gKilcbiAgcGVyZm9ybV9jaGVja3MgOj0gdHJ1ZTtcbiAgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA6PSB0cnVlXG5cbmxldCBlbmFibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSB0cnVlXG5sZXQgZGlzYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IGZhbHNlXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9IG1hcF9zdHJ1Y3R1cmUgc3RcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxubGV0IHVuZGVyc2NvcmVfYmluZGluZyBleHAgPVxuICBsZXQgbG9jID0gZXhwLnBleHBfbG9jIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKSB+ZXhwcjpleHBcblxubGV0IHZhcnNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb25naWRlbnQudCBMb2NhdGVkLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwYXR0IGFjYyA9XG4gICAgICBtYXRjaCBwYXR0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdmFyIHYgLT4gTG9jYXRlZC5tYXAgKGZ1biB2YXIgLT4gTG9uZ2lkZW50LkxpZGVudCB2YXIpIHYgOjogYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXR0IGFjY1xuICBlbmRcblxuKCogRm9yIGV2ZXJ5IFtsZXQgeCA9IC4uLl0gc3RydWN0dXJlIGl0ZW0sIGFkZCBhIFtsZXQgXyA9IHhdICopXG5sZXQgYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIHN0IGFjYyA9XG4gICAgICAgIG1hdGNoIHN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgICAgfCAoeyBwc3RyX2Rlc2MgPSBQc3RyX3ZhbHVlIChfLCB2YnMpOyBwc3RyX2xvYyA9IGxvYyB9IGFzIGl0ZW0pIDo6IHJlc3RcbiAgICAgICAgICAtPlxuICAgICAgICAgICAgbGV0IHZhcnMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCB2YnMgfmluaXQ6W10gfmY6KGZ1biBhY2MgdmIgLT5cbiAgICAgICAgICAgICAgICAgIHZhcnNfb2YjcGF0dGVybiB2Yi5wdmJfcGF0IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaWduID1cbiAgICAgICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICAgKExpc3QucmV2X21hcCB2YXJzIH5mOihmdW4gdiAtPlxuICAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29yZV9iaW5kaW5nIChwZXhwX2lkZW50IH5sb2M6di5sb2MgdikpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxvb3AgcmVzdCAoaWduIEAgKGl0ZW0gOjogYWNjKSlcbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gbG9vcCByZXN0IChpdGVtIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wIChzdXBlciNzdHJ1Y3R1cmUgc3QpIFtdXG4gIGVuZFxuXG5sZXQgYmluZHNfbW9kdWxlX25hbWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbYm9vbF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgbWIgYWNjID1cbiAgICAgIG1hdGNoIG1iLnBtYl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBtYiBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIG1kIGFjYyA9XG4gICAgICBtYXRjaCBtZC5wbWRfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIG1kIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIG1zIF8gPVxuICAgICAgbWF0Y2ggbXMucG1zX25hbWUudHh0IHdpdGggKF8gOiBzdHJpbmcpIC0+IHRydWVcblxuICAgIG1ldGhvZCEgZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgVW5pdCAtPiBhY2NcbiAgICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2Z1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYylcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwYXQgYWNjID1cbiAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3VucGFjayBuYW1lIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoIFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWUgfCBOb25lIC0+IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdCBhY2NcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBleHByIGFjYyA9XG4gICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBfLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2NcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbigqIFtkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlXSAtLSBJZiB0cnVlLCBnZW5lcmF0ZWQgY29kZVxuICAgY29udGFpbnMgY29tcGlsZXIgYXR0cmlidXRlIHRvIGRpc2FibGUgdW51c2VkIHdhcm5pbmdzLCBpbnN0ZWFkIG9mXG4gICBpbnNlcnRpbmcgW2xldCBfID0gLi4uIF0uICopXG5sZXQgZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3czMl9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93MzJfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBsZXQgY29udl93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImNvZGVcIjsgXCJhdHRyaWJ1dGVcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiY29kZVwiIC0+IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgOj0gZmFsc2VcbiAgICAgICAgfCBcImF0dHJpYnV0ZVwiIC0+IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13MzJcIiBrZWVwX3czMl9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWRpc2FibGUtdzMyLW1ldGhvZFwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIEhvdyB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYta2VlcC13MzJcIiBrZWVwX3czMl9zcGVjXG4gICAgfmRvYzpcIiBEZXByZWNhdGVkLCB1c2UgLWRlcml2aW5nLWtlZXAtdzMyXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi13MzJcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBEZXByZWNhdGVkLCB1c2UgLWRlcml2aW5nLWRpc2FibGUtdzMyLW1ldGhvZFwiXG5cbmxldCBrZWVwX3czMl9pbXBsICgpID0gIWtlZXBfdzMyX2ltcGwgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzMyX2ludGYgKCkgPSAha2VlcF93MzJfaW50ZiB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzYwX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzYwX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3c2MF9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzYwXCIga2VlcF93NjBfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgNjAgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiXG5cbmxldCBrZWVwX3c2MF9pbXBsICgpID0gIWtlZXBfdzYwX2ltcGwgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ludGYgKCkgPSAha2VlcF93NjBfaW50ZiB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgPSByZWYgT3B0aW9ucy5kZWZhdWx0X2FsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG5cbmxldCAoKSA9XG4gIERyaXZlci5hZGRfYXJnIFwiLXVudXNlZC1jb2RlLXdhcm5pbmdzXCJcbiAgICAoQm9vbCAoKCA6PSApIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzKSlcbiAgICB+ZG9jOlwiXyBBbGxvdyBwcHggZGVyaXZlcnMgdG8gZW5hYmxlIHVudXNlZCBjb2RlIHdhcm5pbmdzXCJcblxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpID0gIWFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG5cbm1vZHVsZSBBcmdzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIEFzdF9wYXR0ZXJuIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEFzdF9wYXR0ZXJuXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udClcblxuICB0eXBlICdhIHBhcmFtID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgcGF0dGVybiA6IChleHByZXNzaW9uLCAnYSkgQXN0X3BhdHRlcm4uUGFja2VkLnQ7XG4gICAgZGVmYXVsdCA6ICdhO1xuICB9XG5cbiAgbGV0IGFyZyBuYW1lIHBhdHRlcm4gPVxuICAgIHtcbiAgICAgIG5hbWU7XG4gICAgICBkZWZhdWx0ID0gTm9uZTtcbiAgICAgIHBhdHRlcm4gPSBBc3RfcGF0dGVybi5QYWNrZWQuY3JlYXRlIHBhdHRlcm4gKGZ1biB4IC0+IFNvbWUgeCk7XG4gICAgfVxuXG4gIGxldCBmbGFnIG5hbWUgPVxuICAgIGxldCBwYXR0ZXJuID0gcGV4cF9pZGVudCAobGlkZW50IChzdHJpbmcgbmFtZSkpIGluXG4gICAgeyBuYW1lOyBkZWZhdWx0ID0gZmFsc2U7IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5QYWNrZWQuY3JlYXRlIHBhdHRlcm4gdHJ1ZSB9XG5cbiAgdHlwZSAoXywgXykgdCA9XG4gICAgfCBOaWwgOiAoJ20sICdtKSB0XG4gICAgfCBDb25zIDogKCdtMSwgJ2EgLT4gJ20yKSB0ICogJ2EgcGFyYW0gLT4gKCdtMSwgJ20yKSB0XG5cbiAgbGV0IGVtcHR5ID0gTmlsXG4gIGxldCAoICs+ICkgYSBiID0gQ29ucyAoYSwgYilcblxuICBsZXQgcmVjIG5hbWVzIDogdHlwZSBhIGIuIChhLCBiKSB0IC0+IHN0cmluZyBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBbXVxuICAgIHwgQ29ucyAodCwgcCkgLT4gcC5uYW1lIDo6IG5hbWVzIHRcblxuICBtb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlIChfLCBfKSBpbnN0YW5jZSA9XG4gICAgICB8IElfbmlsIDogKCdtLCAnbSkgaW5zdGFuY2VcbiAgICAgIHwgSV9jb25zIDogKCdtMSwgJ2EgLT4gJ20yKSBpbnN0YW5jZSAqICdhIC0+ICgnbTEsICdtMikgaW5zdGFuY2VcblxuICAgIGxldCByZWMgY3JlYXRlIDpcbiAgICAgICAgdHlwZSBhIGIuIChhLCBiKSB0IC0+IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0IC0+IChhLCBiKSBpbnN0YW5jZSA9XG4gICAgIGZ1biBzcGVjIGFyZ3MgLT5cbiAgICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgICAgfCBOaWwgLT4gSV9uaWxcbiAgICAgIHwgQ29ucyAodCwgcCkgLT5cbiAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvY19vcHQgcC5uYW1lIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHAuZGVmYXVsdFxuICAgICAgICAgICAgfCBTb21lIGV4cHIgLT4gQXN0X3BhdHRlcm4uUGFja2VkLnBhcnNlIHAucGF0dGVybiBleHByLnBleHBfbG9jIGV4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIElfY29ucyAoY3JlYXRlIHQgYXJncywgdmFsdWUpXG5cbiAgICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIuIChhLCBiKSBpbnN0YW5jZSAtPiBhIC0+IGIgPVxuICAgICBmdW4gdCBmIC0+IG1hdGNoIHQgd2l0aCBJX25pbCAtPiBmIHwgSV9jb25zICh0LCB4KSAtPiBhcHBseSB0IGYgeFxuICBlbmRcblxuICBsZXQgYXBwbHkgdCBhcmdzIGYgPSBJbnN0YW5jZS5hcHBseSAoSW5zdGFuY2UuY3JlYXRlIHQgYXJncykgZlxuZW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgR2VuZXJhdG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBpZ25vcmUgKF8gOiB0KSA9ICgpXG5cbnR5cGUgcGFyc2VkX2FyZ3MgPVxuICB8IEFyZ3Mgb2YgKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgfCBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbnR5cGUgJ2l0ZW0gZGVyaXZlZF9jb2RlID0geyBpdGVtcyA6ICdpdGVtIGxpc3Q7IHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbCB9XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBkZXJpdmVyID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBUIDoge1xuICAgICAgICBzcGVjIDogKCdjLCAnYSkgQXJncy50O1xuICAgICAgICBnZW4gOiBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYztcbiAgICAgICAgYXJnX25hbWVzIDogU3RyaW5nLlNldC50O1xuICAgICAgICBkZXBzIDogZGVyaXZlciBsaXN0O1xuICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2w7XG4gICAgICB9XG4gICAgICAgIC0+ICgnYSwgJ2IpIHRcblxuICBsZXQgZGVwcyAoVCB0KSA9IHQuZGVwc1xuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlID9hdHRyaWJ1dGVzOihfID0gW10pID8oZGVwcyA9IFtdKSA/KHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UpXG4gICAgICAgIHNwZWMgZ2VuID1cbiAgICAgIGxldCBhcmdfbmFtZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKEFyZ3MubmFtZXMgc3BlYykgaW5cbiAgICAgIFQgeyBzcGVjOyBnZW47IGFyZ19uYW1lczsgZGVwczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfVxuXG4gICAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgICBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBBcmdzLmVtcHR5IGdlblxuICBlbmRcblxuICBsZXQgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlYyBnZW4gPVxuICAgIFYyLm1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWNcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLndpdGhfbG9jX2FuZF9wYXRoIGdlbilcblxuICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBBcmdzLmVtcHR5IGdlblxuXG4gIGxldCBtZXJnZV9hY2NlcHRlZF9hcmdzIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgVCB0IDo6IHJlc3QgLT4gbG9vcCAoU3RyaW5nLlNldC51bmlvbiBhY2MgdC5hcmdfbmFtZXMpIHJlc3RcbiAgICBpblxuICAgIGxvb3AgU3RyaW5nLlNldC5lbXB0eSBsXG5cbiAgbGV0IGNoZWNrX2FyZ3VtZW50cyBuYW1lIGdlbmVyYXRvcnMgKGFyZ3MgOiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCkgPVxuICAgIGxldCBlbXB0eV9sYWJlbF9lcnJvciA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgbGFiZWwgdGhlblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciBhcmd1bWVudHMgbXVzdCBiZSBsYWJlbGxlZFwiKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgPVxuICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAoTGlzdC5maW5kX2FfZHVwIGFyZ3MgfmNvbXBhcmU6KGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG4gICAgICAgIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogYXJndW1lbnQgbGFiZWxsZWQgJyVzJyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlXCJcbiAgICAgICAgICAgIGxhYmVsKVxuICAgICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICBpblxuICAgIGxldCBhY2NlcHRlZF9hcmdzID0gbWVyZ2VfYWNjZXB0ZWRfYXJncyBnZW5lcmF0b3JzIGluXG4gICAgbGV0IHVuYWNjZXB0ZWRfYXJndW1lbnQgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuU2V0Lm1lbSBsYWJlbCBhY2NlcHRlZF9hcmdzKSB0aGVuXG4gICAgICAgICAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoU3RyaW5nLlNldC5lbGVtZW50cyBhY2NlcHRlZF9hcmdzKSBsYWJlbFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSBzIC0+IFwiLlxcblwiIF4gc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgJyVzJyBkb2Vzbid0IGFjY2VwdCBhcmd1bWVudCBcXFxuICAgICAgICAgICAgICAgICAgJyVzJyVzXCJcbiAgICAgICAgICAgICAgICAgbmFtZSBsYWJlbCBzcGVsbGNoZWNrX21zZylcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGVtcHR5X2xhYmVsX2Vycm9yIEAgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIEAgdW5hY2NlcHRlZF9hcmd1bWVudFxuICAgIGluXG4gICAgaWYgTGlzdC5sZW5ndGggZXJyb3JzID0gMCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JzXG5cbiAgbGV0IGFwcGx5IChUIHQpIH5uYW1lOl8gfmN0eHQgeCBhcmdzID0gQXJncy5hcHBseSB0LnNwZWMgYXJncyAodC5nZW4gfmN0eHQgeClcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IChuYW1lLCBnZW5lcmF0b3JzLCBhcmdzKSA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgY2hlY2tfYXJndW1lbnRzIG5hbWUudHh0IGdlbmVyYXRvcnMgYXJncyA+PnwgZnVuICgpIC0+XG4gICAgTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBpdGVtcyA9IGFwcGx5IChUIHQpIH5uYW1lOm5hbWUudHh0IH5jdHh0IGVudHJ5IGFyZ3M7XG4gICAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgPSB0LnVudXNlZF9jb2RlX3dhcm5pbmdzO1xuICAgICAgICB9KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgZ2VuZXJhdG9ycyBleHRfdG9faXRlbSA9XG4gICAgbGV0IGwgPSBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihhcHBseV9hbGwgfmN0eHQgZW50cnkpIGluXG4gICAgbGV0IGwxLCBsZXJyID1cbiAgICAgIExpc3QucGFydGl0aW9uX21hcCAoZnVuY3Rpb24gT2sgZSAtPiBMZWZ0IGUgfCBFcnJvciBlIC0+IFJpZ2h0IGUpIGxcbiAgICBpblxuICAgIGxldCBsZXJyID1cbiAgICAgIExpc3QuY29uY2F0IGxlcnJcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gZXJyIC0+IGV4dF90b19pdGVtIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgaW5cbiAgICBMaXN0LmNvbmNhdCBsMSBAIFsgeyBpdGVtcyA9IGxlcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfSBdXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFjdHVhbF9kZXJpdmVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIHN0cl90eXBlX2RlY2wgOlxuICAgICAgICAoc3RydWN0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc3RydWN0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZGVjbCA6XG4gICAgICAgIChzaWduYXR1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9leHQgOiAoc2lnbmF0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX2V4Y2VwdGlvbiA6IChzaWduYXR1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzaWduYXR1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBleHRlbnNpb24gOlxuICAgICAgICAobG9jOkxvY2F0aW9uLnQgLT4gcGF0aDpzdHJpbmcgLT4gY29yZV90eXBlIC0+IGV4cHJlc3Npb24pIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBBbGlhcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN0cl90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl90eXBlX2V4dCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ190eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ190eXBlX2V4dCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX2V4Y2VwdGlvbiA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUga2luZCA9IFN0ciB8IFNpZ1xuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIGtpbmQgOiBraW5kO1xuICAgICAgZ2V0IDogQWN0dWFsX2Rlcml2ZXIudCAtPiAoJ2EsICdiKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBnZXRfc2V0IDogQWxpYXMudCAtPiBzdHJpbmcgbGlzdDtcbiAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwiZXhjZXB0aW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX21vZHVsZV90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgZXhjZXB0aW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX21vZHVsZV90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgbW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuICBlbmRcblxuICB0eXBlIHQgPSBBY3R1YWxfZGVyaXZlciBvZiBBY3R1YWxfZGVyaXZlci50IHwgQWxpYXMgb2YgQWxpYXMudFxuICB0eXBlIFBweF9kZXJpdmVycy5kZXJpdmVyICs9IFQgb2YgdFxuXG4gIGxldCBkZXJpdmVycyAoKSA9XG4gICAgTGlzdC5maWx0ZXJfbWFwIChQcHhfZGVyaXZlcnMuZGVyaXZlcnMgKCkpIH5mOihmdW5jdGlvblxuICAgICAgfCBuYW1lLCBUIHQgLT4gU29tZSAobmFtZSwgdClcbiAgICAgIHwgXyAtPiBOb25lKVxuXG4gIGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIG9mIHN0cmluZ1xuXG4gIGxldCByZXNvbHZlX2FjdHVhbF9kZXJpdmVycyAoZmllbGQgOiAoXywgXykgRmllbGQudCkgbmFtZSA9XG4gICAgbGV0IHJlYyBsb29wIG5hbWUgY29sbGVjdGVkID1cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzIGNvbGxlY3RlZCB+ZjooZnVuIChkIDogQWN0dWFsX2Rlcml2ZXIudCkgLT5cbiAgICAgICAgICAgIFN0cmluZy5lcXVhbCBkLm5hbWUgbmFtZSlcbiAgICAgIHRoZW4gY29sbGVjdGVkXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIFBweF9kZXJpdmVycy5sb29rdXAgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSAoVCAoQWN0dWFsX2Rlcml2ZXIgZHJ2KSkgLT4gZHJ2IDo6IGNvbGxlY3RlZFxuICAgICAgICB8IFNvbWUgKFQgKEFsaWFzIGFsaWFzKSkgLT5cbiAgICAgICAgICAgIGxldCBzZXQgPSBmaWVsZC5nZXRfc2V0IGFsaWFzIGluXG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgc2V0IH5pbml0OmNvbGxlY3RlZCB+Zjpsb29wXG4gICAgICAgIHwgXyAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgbmFtZSBbXSlcblxuICBsZXQgcmVzb2x2ZV9pbnRlcm5hbCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgbmFtZSA9XG4gICAgTGlzdC5tYXAgKHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIGZpZWxkIG5hbWUpIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgIG1hdGNoIGZpZWxkLmdldCBkcnYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICAgICAgfCBTb21lIGcgLT4gKGRydi5uYW1lLCBnKSlcblxuICBsZXQgc3VwcG9ydGVkX2ZvciBmaWVsZCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGRlcml2ZXJzICgpKSB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IH5mOihmdW4gYWNjIChuYW1lLCBfKSAtPlxuICAgICAgICBtYXRjaCByZXNvbHZlX2ludGVybmFsIGZpZWxkIG5hbWUgd2l0aFxuICAgICAgICB8IF8gLT4gU3RyaW5nLlNldC5hZGQgbmFtZSBhY2NcbiAgICAgICAgfCBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBfIC0+IGFjYylcbiAgICB8PiBTdHJpbmcuU2V0LmVsZW1lbnRzXG5cbiAgbGV0IG5vdF9zdXBwb3J0ZWQgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpID8oc3BlbGxjaGVjayA9IHRydWUpIG5hbWUgPVxuICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICBpZiBzcGVsbGNoZWNrIHRoZW5cbiAgICAgICAgbWF0Y2ggU3BlbGxjaGVjay5zcGVsbGNoZWNrIChzdXBwb3J0ZWRfZm9yIGZpZWxkKSBuYW1lLnR4dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBzIC0+IFwiLlxcblwiIF4gc1xuICAgICAgZWxzZSBcIlwiXG4gICAgaW5cbiAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgIFwiUHB4bGliLkRlcml2aW5nOiAnJXMnIGlzIG5vdCBhIHN1cHBvcnRlZCAlcyBkZXJpdmluZyBnZW5lcmF0b3Ilc1wiXG4gICAgICBuYW1lLnR4dCBmaWVsZC5uYW1lIHNwZWxsY2hlY2tfbXNnXG5cbiAgbGV0IHJlc29sdmUgZmllbGQgbmFtZSA9XG4gICAgdHJ5IE9rIChyZXNvbHZlX2ludGVybmFsIGZpZWxkIG5hbWUudHh0KVxuICAgIHdpdGggTm90X3N1cHBvcnRlZCBuYW1lJyAtPlxuICAgICAgRXJyb3IgKG5vdF9zdXBwb3J0ZWQgZmllbGQgfnNwZWxsY2hlY2s6KFN0cmluZy5lcXVhbCBuYW1lLnR4dCBuYW1lJykgbmFtZSlcblxuICBsZXQgcmVzb2x2ZV9hbGwgZmllbGQgZGVyaXZlcnMgPVxuICAgIGxldCBkZXJpdmVyc19hbmRfYXJncywgZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzID1cbiAgICAgIExpc3QucGFydGl0aW9uX21hcFxuICAgICAgICAoZnVuIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIFBweF9kZXJpdmVycy5sb29rdXAgbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFaXRoZXIuUmlnaHQgKG5vdF9zdXBwb3J0ZWQgZmllbGQgbmFtZSlcbiAgICAgICAgICB8IFNvbWUgKFQgXykgLT4gKFxuICAgICAgICAgICAgICAoKiBJdCdzIG9uZSBvZiBvdXJzLCBwYXJzZSB0aGUgYXJndW1lbnRzIG5vdy4gV2UgY2FuJ3QgZG8gaXQgYmVmb3JlIHNpbmNlXG4gICAgICAgICAgICAgICAgIHBweF9kZXJpdmluZyB1c2VzIGEgZGlmZmVyZW50IHN5bnRheCBmb3IgYXJndW1lbnRzLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICAgICAgfCBBcmdzIGwgLT4gRWl0aGVyLkxlZnQgKFNvbWUgKG5hbWUsIGwpKVxuICAgICAgICAgICAgICB8IFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT5cbiAgICAgICAgICAgICAgICAgIEVpdGhlci5SaWdodFxuICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIFwiUHB4bGliLkRlcml2aW5nOiAlc1wiIG1zZykpXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgKCogSXQncyBub3Qgb25lIG9mIG91cnMsIGlnbm9yZSBpdC4gKilcbiAgICAgICAgICAgICAgRWl0aGVyLkxlZnQgTm9uZSlcbiAgICAgICAgZGVyaXZlcnNcbiAgICAgIHw+IGZ1biAobDEsIGwyKSAtPiAoTGlzdC5maWx0ZXJfb3B0IGwxLCBsMilcbiAgICBpblxuICAgICgqIFNldCBvZiBhY3R1YWwgZGVyaXZlciBuYW1lcyAqKVxuICAgIGxldCBzZWVuID0gSGFzaHRibC5jcmVhdGUgMTYgaW5cbiAgICBsZXQgcmVzdWx0LCBkZXBfZXJyb3JzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5pbml0OihbXSwgW10pIGRlcml2ZXJzX2FuZF9hcmdzXG4gICAgICAgIH5mOihmdW4gKHJlc3VsdCwgZXJyb3JzKSAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCByZXNvbHZlIGZpZWxkIG5hbWUgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPiAocmVzdWx0LCBlcnJvcnMgQCBbIGUgXSlcbiAgICAgICAgICB8IE9rIG5hbWVkX2dlbmVyYXRvcnMgLT5cbiAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgbmFtZWRfZ2VuZXJhdG9yc1xuICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoYWN0dWFsX2Rlcml2ZXJfbmFtZSwgZ2VuKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZHVwX2Vycm9yID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucy5mYWlsX29uX2R1cGxpY2F0ZV9kZXJpdmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgSGFzaHRibC5tZW0gc2VlbiBhY3R1YWxfZGVyaXZlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgYXBwZWFycyB0d2ljZVwiIGFjdHVhbF9kZXJpdmVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCAoR2VuZXJhdG9yLmRlcHMgZ2VuKSB+ZjooZnVuIGRlcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIGZpZWxkIGRlcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIGRydiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlcF9uYW1lID0gZHJ2Lm5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoSGFzaHRibC5tZW0gc2VlbiBkZXBfbmFtZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBpcyBuZWVkZWQgZm9yICVzLCB5b3UgbmVlZCB0byBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgaXQgYmVmb3JlIGluIHRoZSBsaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBfbmFtZSBuYW1lLnR4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEhhc2h0Ymwuc2V0IHNlZW4gfmtleTphY3R1YWxfZGVyaXZlcl9uYW1lIH5kYXRhOigpO1xuICAgICAgICAgICAgICAgICAgICBkdXBfZXJyb3IgQCBsX2VycilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCByZXN1bHQgQCBbIChuYW1lLCBMaXN0Lm1hcCBuYW1lZF9nZW5lcmF0b3JzIH5mOnNuZCwgYXJncykgXSxcbiAgICAgICAgICAgICAgICBlcnJvcnMgQCBsX2VyciApKVxuICAgIGluXG4gICAgKHJlc3VsdCwgZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIEAgZGVwX2Vycm9ycylcblxuICBsZXQgYWRkID9zdHJfdHlwZV9kZWNsID9zdHJfdHlwZV9leHQgP3N0cl9leGNlcHRpb24gP3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/c2lnX3R5cGVfZGVjbCA/c2lnX3R5cGVfZXh0ID9zaWdfZXhjZXB0aW9uID9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP2V4dGVuc2lvbiBuYW1lID1cbiAgICBsZXQgYWN0dWFsX2Rlcml2ZXIgOiBBY3R1YWxfZGVyaXZlci50ID1cbiAgICAgIHtcbiAgICAgICAgbmFtZTtcbiAgICAgICAgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uO1xuICAgICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgZXh0ZW5zaW9uO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGFjdHVhbF9kZXJpdmVyKSk7XG4gICAgKG1hdGNoIGV4dGVuc2lvbiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT5cbiAgICAgICAgbGV0IGV4dGVuc2lvbiA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmRlY2xhcmUgbmFtZSBFeHByZXNzaW9uIEFzdF9wYXR0ZXJuLihwdHlwIF9fKSBmXG4gICAgICAgIGluXG4gICAgICAgIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgIChcIlBweGxpYi5EZXJpdmluZy5cIiBeIG5hbWUpXG4gICAgICAgICAgfnJ1bGVzOlsgQ29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIGV4dGVuc2lvbiBdKTtcbiAgICBuYW1lXG5cbiAgbGV0IGFkZF9hbGlhcyBuYW1lID9zdHJfdHlwZV9kZWNsID9zdHJfdHlwZV9leHQgP3N0cl9leGNlcHRpb25cbiAgICAgID9zdHJfbW9kdWxlX3R5cGVfZGVjbCA/c2lnX3R5cGVfZGVjbCA/c2lnX3R5cGVfZXh0ID9zaWdfZXhjZXB0aW9uXG4gICAgICA/c2lnX21vZHVsZV90eXBlX2RlY2wgc2V0ID1cbiAgICBsZXQgYWxpYXMgOiBBbGlhcy50ID1cbiAgICAgIGxldCBnZXQgPSBmdW5jdGlvbiBOb25lIC0+IHNldCB8IFNvbWUgc2V0IC0+IHNldCBpblxuICAgICAge1xuICAgICAgICBzdHJfdHlwZV9kZWNsID0gZ2V0IHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dCA9IGdldCBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb24gPSBnZXQgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2wgPSBnZXQgc2lnX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZXh0ID0gZ2V0IHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbiA9IGdldCBzaWdfZXhjZXB0aW9uO1xuICAgICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzaWdfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBbGlhcyBhbGlhcykpO1xuICAgIG5hbWVcbmVuZFxuXG5sZXQgYWRkID0gRGVyaXZlci5hZGRcbmxldCBhZGRfYWxpYXMgPSBEZXJpdmVyLmFkZF9hbGlhc1xuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFtAQGRlcml2aW5nIF0gcGFyc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBpbnZhbGlkX3dpdGggfmxvYyA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiaW52YWxpZCBbQEBkZXJpdmluZyBdIGF0dHJpYnV0ZSBzeW50YXhcIlxuXG5sZXQgZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkID1cbiAgbWF0Y2ggTG9uZ2lkZW50LmZsYXR0ZW5fZXhuIGlkIHdpdGhcbiAgfCBsIC0+IHsgbG9jOyB0eHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgbCB9XG4gIHwgZXhjZXB0aW9uIF8gLT4gaW52YWxpZF93aXRoIH5sb2NcblxuZXhjZXB0aW9uIFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IHBhcnNlX2FyZ3VtZW50cyBsID1cbiAgdHJ5XG4gICAgQXJnc1xuICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgfCBbIChOb2xhYmVsLCBlKSBdIC0+IChcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSAtPlxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAoaWQsIGV4cHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGlkLnR4dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTGlkZW50IHMgLT4gc1xuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4IChpZC5sb2MsIFwic2ltcGxlIGlkZW50aWZpZXIgZXhwZWN0ZWRcIikpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKG5hbWUsIGV4cHIpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgKCBlLnBleHBfbG9jLFxuICAgICAgICAgICAgICAgICAgICAgXCJub24tb3B0aW9uYWwgbGFiZWxsZWQgYXJndW1lbnQgb3IgcmVjb3JkIGV4cGVjdGVkXCIgKSkpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsIH5mOihmdW4gKGxhYmVsLCBleHByKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBsYWJlbCB3aXRoXG4gICAgICAgICAgICAgIHwgTGFiZWxsZWQgcyAtPiAocywgZXhwcilcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICAgICAoZXhwci5wZXhwX2xvYywgXCJub24tb3B0aW9uYWwgbGFiZWxsZWQgYXJndW1lbnQgZXhwZWN0ZWRcIikpKSlcbiAgd2l0aCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+IFVua25vd25fc3ludGF4IChsb2MsIG1zZylcblxubGV0IG1rX2Rlcml2aW5nX2F0dHIgY29udGV4dCB+cHJlZml4IH5zdWZmaXggPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIChwcmVmaXggXiBcImRlcml2aW5nXCIgXiBzdWZmaXgpXG4gICAgY29udGV4dFxuICAgIEFzdF9wYXR0ZXJuLihcbiAgICAgIGxldCBnZW5lcmF0b3JfbmFtZSAoKSA9XG4gICAgICAgIG1hcCcgKHBleHBfaWRlbnQgX18pIH5mOihmdW4gbG9jIGYgaWQgLT5cbiAgICAgICAgICAgIGYgKGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCkpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvciAoKSA9XG4gICAgICAgIG1hcCAoZ2VuZXJhdG9yX25hbWUgKCkpIH5mOihmdW4gZiB4IC0+IGYgKHgsIEFyZ3MgW10pKVxuICAgICAgICB8fHwgcGFjazJcbiAgICAgICAgICAgICAgKHBleHBfYXBwbHkgKGdlbmVyYXRvcl9uYW1lICgpKVxuICAgICAgICAgICAgICAgICAobWFwMSAobWFueSBfXykgfmY6cGFyc2VfYXJndW1lbnRzKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9ycyA9XG4gICAgICAgIHBleHBfdHVwbGUgKG1hbnkgKGdlbmVyYXRvciAoKSkpXG4gICAgICAgIHx8fCBtYXAgKGdlbmVyYXRvciAoKSkgfmY6KGZ1biBmIHggLT4gZiBbIHggXSlcbiAgICAgIGluXG4gICAgICBwc3RyIChwc3RyX2V2YWwgZ2VuZXJhdG9ycyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVW51c2VkIHdhcm5pbmcgc3R1ZmYgKyBsb2NhdGlvbnMgY2hlY2sgc2lsZW5jaW5nICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IHN0cmluZyA9XG4gICAgTGlzdC5zb3J0IHdhcm5pbmdzIH5jbXA6SW50LmNvbXBhcmVcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHdhcm5pbmcgLT4gXCItXCIgXiBJbnQudG9fc3RyaW5nIHdhcm5pbmcpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCJcbiAgaW5cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC53YXJuaW5nXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIHN0cmluZykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaW5saW5lX2RvY19hdHRyID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5kb2NcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgXCJAaW5saW5lXCIpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxuKCogd3JhcCBhIHN0cnVjdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbW9kX3N0cnVjdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHN0cl9pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHN0cnVjdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3N0cl0gKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzdCA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmIGtlZXBfdzMyX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiAoW10sIHN0KVxuICAgIGVsc2UgaWYgbm90ICFkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIHRoZW5cbiAgICAgIChbXSwgSWdub3JlX3VudXNlZF93YXJuaW5nLmFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMjc3RydWN0dXJlIHN0KVxuICAgIGVsc2UgKFsgMzIgXSwgc3QpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICB8fCBub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc3RydWN0dXJlIHN0IGZhbHNlKVxuICAgIHRoZW4gKHdhcm5pbmdzLCBzdClcbiAgICBlbHNlICg2MCA6OiB3YXJuaW5ncywgc3QpXG4gIGluXG4gIGxldCB3cmFwLCBzdCA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzdClcbiAgICBlbHNlICh0cnVlLCBwc3RyX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc3QpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0IGVsc2Ugc3RcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zdHJdIGFib3ZlICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqIHdyYXAgYSBzaWduYXR1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG10eV9zaWduYXR1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzaWdfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzaWduYXR1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zaWddICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc2cgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICB1bnVzZWRfY29kZV93YXJuaW5ncyAmJiBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmIGtlZXBfdzMyX2ludGYgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiBbXSBlbHNlIFsgMzIgXVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbnRmICgpXG4gICAgICB8fCAobm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3NpZ25hdHVyZSBzZyBmYWxzZSkpXG4gICAgICB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgIHRoZW4gd2FybmluZ3NcbiAgICBlbHNlIDYwIDo6IHdhcm5pbmdzXG4gIGluXG4gIGxldCB3cmFwLCBzZyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzZylcbiAgICBlbHNlICh0cnVlLCBwc2lnX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc2cpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3NpZyB+bG9jIH5oaWRlIHNnIGVsc2Ugc2dcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zaWddIGFib3ZlICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTWFpbiBleHBhbnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgKHRkcyA6IHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgOiBzdHJ1Y3R1cmVfaXRlbSBsaXN0ID1cbiAgaWYga2VlcF93MzJfaW1wbCAoKSB0aGVuIFtdXG4gIGVsc2VcbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICBsZXQgdHlwID0gQ29tbW9uLmNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIGluXG4gICAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgICAgcHN0cl92YWx1ZSB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKVxuICAgICAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgICAgICAocGV4cF9mdW4gfmxvYyBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgICAgICAgICAocHBhdF9jb25zdHJhaW50IH5sb2MgKHBwYXRfYW55IH5sb2MpIHR5cClcbiAgICAgICAgICAgICAgICAgICAoZXVuaXQgfmxvYykpO1xuICAgICAgICAgIF0pXG5cbmxldCBtZXJnZV9nZW5lcmF0b3JzIGZpZWxkIGwgPVxuICBMaXN0LmZpbHRlcl9tYXAgbCB+ZjooZnVuIHggLT4geCkgfD4gTGlzdC5jb25jYXQgfD4gRGVyaXZlci5yZXNvbHZlX2FsbCBmaWVsZFxuXG4oKiBUaGlzIGZ1bmN0aW9uIG1lcmdlcyBbJ2EgZGVyaXZlZF0gaWYgdGhleSBoYXZlIHRoZSBzYW1lIFt1bnVzZWRfY29kZV93YXJuaW5nc10uIFRoaXNcbiAgIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBhZGQgW2luY2x1ZGUgc3RydWN0IC4uLiBlbmRdIHRvIGRpc2FibGUgd2FybmluZ3MuICopXG5sZXQgbWVyZ2VfZGVyaXZlZCBsaXN0cyA9XG4gIExpc3QuZm9sZF9yaWdodCBsaXN0cyB+aW5pdDpbXSB+ZjooZnVuIGRlcml2ZWQgYWNjIC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBvdGhlciA6OiBvdGhlcnNcbiAgICAgICAgd2hlbiBCb29sLmVxdWFsIGRlcml2ZWQudW51c2VkX2NvZGVfd2FybmluZ3Mgb3RoZXIudW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgICAgLT5cbiAgICAgICAgICB7IG90aGVyIHdpdGggaXRlbXMgPSBkZXJpdmVkLml0ZW1zIEAgb3RoZXIuaXRlbXMgfSA6OiBvdGhlcnNcbiAgICAgIHwgXyAtPiBkZXJpdmVkIDo6IGFjYylcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gICgqIFRPRE86IGluc3RlYWQgb2YgZGlzYWJsaW5nIHRoZSB1bnVzZWQgd2FybmluZyBmb3IgdHlwZXMgdGhlbXNlbHZlcywgd2VcbiAgICAgc2hvdWxkIGFkZCBhIHRhZyBbQEB1bnVzZWRdLiAqKVxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gdHlwZXNfdXNlZF9ieV9kZXJpdmluZyB0ZHMgQCBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IHJ1bGVzIH50eXAgfmV4cGFuZF9zaWcgfmV4cGFuZF9zdHIgfnJ1bGVfc3RyIH5ydWxlX3NpZyB+cnVsZV9zdHJfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdCA9XG4gIGxldCBwcmVmaXggPSBcInBweGxpYi5cIiBpblxuICBsZXQgZGVyaXZpbmdfYXR0ciA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIlwiIH5wcmVmaXggdHlwIGluXG4gIGxldCBkZXJpdmluZ19hdHRyX2V4cGVjdCA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIl9pbmxpbmVcIiB+cHJlZml4IHR5cCBpblxuICBbXG4gICAgcnVsZV9zaWcgZGVyaXZpbmdfYXR0ciBleHBhbmRfc2lnO1xuICAgIHJ1bGVfc3RyIGRlcml2aW5nX2F0dHIgZXhwYW5kX3N0cjtcbiAgICBydWxlX3N0cl9leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3N0cjtcbiAgICBydWxlX3NpZ19leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3NpZztcbiAgXVxuXG5sZXQgcnVsZXNfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpUeXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9kZWNsc1xuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9kZWNsc1xuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0XG5cbmxldCBydWxlc190eXBlX2V4dCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leHRlbnNpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2V4dFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0X2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0XG5cbmxldCBydWxlc19leGNlcHRpb24gPVxuICBydWxlcyB+dHlwOlR5cGVfZXhjZXB0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfZXhjZXB0aW9uXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdFxuXG5sZXQgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6TW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG5cbmxldCAoKSA9XG4gIGxldCBydWxlcyA9XG4gICAgWyBydWxlc190eXBlX2RlY2w7IHJ1bGVzX3R5cGVfZXh0OyBydWxlc19leGNlcHRpb247IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgXVxuICAgIHw+IExpc3QuY29uY2F0XG4gIGluXG4gIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBcImRlcml2aW5nXCIgfmFsaWFzZXM6WyBcInR5cGVfY29udlwiIF0gfnJ1bGVzXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIGFmZml4ID1cbiAgfCBQcmVmaXggb2Ygc3RyaW5nXG4gIHwgU3VmZml4IG9mIHN0cmluZ1xuICB8IFByZWZpeFN1ZmZpeCBvZiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IG1hbmdsZSA/KGZpeHBvaW50ID0gXCJ0XCIpIGFmZml4IG5hbWUgPVxuICBtYXRjaCAoU3RyaW5nLihuYW1lID0gZml4cG9pbnQpLCBhZmZpeCkgd2l0aFxuICB8IHRydWUsIChQcmVmaXggeCB8IFN1ZmZpeCB4KSAtPiB4XG4gIHwgdHJ1ZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gbmFtZSBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXggeCAtPiB4IF4gXCJfXCIgXiBuYW1lXG4gIHwgZmFsc2UsIFN1ZmZpeCB4IC0+IG5hbWUgXiBcIl9cIiBeIHhcblxubGV0IG1hbmdsZV90eXBlX2RlY2wgP2ZpeHBvaW50IGFmZml4IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gbmFtZTsgXyB9OyBfIH0gPVxuICBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IG5hbWVcblxubGV0IG1hbmdsZV9saWQgP2ZpeHBvaW50IGFmZml4IGxpZCA9XG4gIG1hdGNoIGxpZCB3aXRoXG4gIHwgTGlkZW50IHMgLT4gTGlkZW50IChtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGRvdCAocCwgcykgLT4gTGRvdCAocCwgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExhcHBseSBfIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkV4cGFuc2lvbl9oZWxwZXJzLm1hbmdsZV9saWQ6IExhcHBseVwiXG5cbm1vZHVsZSBRdW90ZXIgPSBRdW90ZXJcbiIsIigqKiBTdGFuZGFyZCBsaWJyYXJ5IGZvciBwcHggcmV3cml0ZXJzICopXG5cbigqKiBbcHB4bGliXSBpcyBtZWFudCB0byBiZSBvcGVuZWQgZ2xvYmFsbHkgaW4geW91ciBQUFggc291cmNlIGZpbGVzLlxuXG4gICAgT3BlbmluZyBpdCBjb21lcyB3aXRoIHR3byBhZHZhbnRhZ2VzLiBGaXJzdCwgaXQgd2lsbCBzaGFkb3cgdGhlXG4gICAgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMuIFRoZSBbY29tcGlsZXItbGlic10gbW9kdWxlcyBhcmUgdW5zdGFibGUgYW5kIGFyZW4ndFxuICAgIG1lYW50IHRvIGJlIHVzZWQsIHNvIHNoYWRvd2luZyB0aGVtIGlzIGEgZ29vZCBwcm90ZWN0aW9uIG1lY2hhbmlzbS4gSW4gY2FzZVxuICAgIHlvdSBkb24ndCB3YW50IHRvIG9wZW4gW1BweGxpYl0sIHlvdSBjYW4gb3BlbiBbT2NhbWxfc2hhZG93XSB0byBnZXQgdGhlIHNhbWVcbiAgICBwcm90ZWN0aW9uLiBTZWNvbmQsIGl0IHdpbGwgYnJpbmcgc2V2ZXJhbCBtb2R1bGVzIGluIHNjb3BlLCB0aGF0IGFyZSB1c2VmdWxcbiAgICB0byBoYXZlIHdoZW4gd3JpdGluZyBhIHJld3JpdGVyOlxuXG4gICAgLSBUaGUgbWFpbiBbcHB4bGliXSBtb2R1bGVzLCBzdWNoIGFzIG1vZHVsZXMgdG8gaGVscCBtYW5pcHVsYXRlIHRoZSBBU1RcbiAgICAgICh7IUFzdF9idWlsZGVyfSwgeyFBc3RfcGF0dGVybn0pLCBhbmQgYSBmZXcgZnVuY3Rpb25zLlxuICAgIC0gTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllcywgc3VjaCBhcyB7IUFzdF9oZWxwZXJ9IG9yIHshUHByaW50YXN0fSxcbiAgICAtIFRoZSB3aG9sZSBBU1QgdHlwZXMgKGJ5IFtpbmNsdWRpbmddIHRoZSB7IUFzdH0gbW9kdWxlKS5cblxuICAgIHsxIFRoZSBjb3JlIFtwcHhsaWJdIGVudHJpZXN9ICopXG5cbigqKiB7MiBNYW5pcHVsYXRpbmcgdGhlIEFTVH0gKilcblxubW9kdWxlIEFzdF9idWlsZGVyID0gQXN0X2J1aWxkZXJcbm1vZHVsZSBBc3RfcGF0dGVybiA9IEFzdF9wYXR0ZXJuXG5tb2R1bGUgQXN0X3RyYXZlcnNlID0gQXN0X3RyYXZlcnNlXG5cbigqKiB7MiBDb250ZXh0LWZyZWUgcmV3cml0aW5nfSAqKVxuXG5tb2R1bGUgQ29udGV4dF9mcmVlID0gQ29udGV4dF9mcmVlXG5tb2R1bGUgRGVyaXZpbmcgPSBEZXJpdmluZ1xubW9kdWxlIEV4dGVuc2lvbiA9IEV4dGVuc2lvblxubW9kdWxlIEV4cGFuc2lvbl9jb250ZXh0ID0gRXhwYW5zaW9uX2NvbnRleHRcbm1vZHVsZSBDb2RlX3BhdGggPSBDb2RlX3BhdGhcblxuKCoqIHsyIE90aGVyIGhlbHBlcnN9ICopXG5cbm1vZHVsZSBFeHBhbnNpb25faGVscGVycyA9IEV4cGFuc2lvbl9oZWxwZXJzXG5tb2R1bGUgTWVybGluX2hlbHBlcnMgPSBNZXJsaW5faGVscGVyc1xubW9kdWxlIFNwZWxsY2hlY2sgPSBTcGVsbGNoZWNrXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcblxuKCoqIHsyIERyaXZlci1yZWxhdGVkIG1vZHVsZXN9ICopXG5cbm1vZHVsZSBEcml2ZXIgPSBEcml2ZXJcbm1vZHVsZSBDYWxsZXJfaWQgPSBDYWxsZXJfaWRcbm1vZHVsZSBBc3RfaW8gPSBVdGlscy5Bc3RfaW8uUmVhZF9iaW5cblxuKCoqIHsyIENoZWNrc30gKilcblxubW9kdWxlIEF0dHJpYnV0ZSA9IEF0dHJpYnV0ZVxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXNcblxuKCoqIHsyIENvbW1vbiBoZWxwZXIgZnVuY3Rpb25zfSAqKVxuXG5pbmNsdWRlIENvbW1vblxuXG4oKiogezEgTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllc31cblxuICAgIEV4cG9zZSBzb21lIG1vZHVsZXMgZnJvbSB7IVBweGxpYl9hc3R9LiAqKVxuXG5tb2R1bGUgQXN0ID0gUHB4bGliX2FzdC5Bc3Rcbm1vZHVsZSBBc3RfaGVscGVyID0gUHB4bGliX2FzdC5Bc3RfaGVscGVyXG5tb2R1bGUgQXN0dHlwZXMgPSBQcHhsaWJfYXN0LkFzdHR5cGVzXG5tb2R1bGUgUGFyc2UgPSBQcHhsaWJfYXN0LlBhcnNlXG5tb2R1bGUgUGFyc2V0cmVlID0gUHB4bGliX2FzdC5QYXJzZXRyZWVcbm1vZHVsZSBQcHJpbnRhc3QgPSBQcHhsaWJfYXN0LlBwcmludGFzdFxubW9kdWxlIFNlbGVjdGVkX2FzdCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0XG5tb2R1bGUgTG9jYXRpb24gPSBMb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IExvbmdpZGVudFxubW9kdWxlIExvYyA9IExvY1xuXG4oKiogezEgVGhlIHdob2xlIEFTVCB0eXBlc30gKilcblxuaW5jbHVkZSBBc3RcbigqKiBJbmNsdWRlIGFsbCB0aGUgQXN0IGRlZmluaXRpb25zIHNpbmNlIHdlIG5lZWQgdGhlbSBpbiBldmVyeSBzaW5nbGUgcHB4XG5cbiAgICBAY2xvc2VkICopXG5cbigqKiBNYWtlIHN1cmUgY29kZSB1c2luZyBQcHhsaWIgZG9lc24ndCByZWZlciB0byBjb21waWxlci1saWJzIHdpdGhvdXQgYmVpbmdcbiAgICBleHBsaWNpdCBhYm91dCBpdDpcblxuICAgIEBjbG9zZWQgKilcbmluY2x1ZGUgc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBvcGVuIE9jYW1sX3NoYWRvd1xuXG4gIGluY2x1ZGUgKFxuICAgIE9jYW1sX3NoYWRvdyA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBPY2FtbF9zaGFkb3dcbiAgICAgIGVuZFxuICAgICAgd2l0aCBtb2R1bGUgQXN0X2hlbHBlciA6PSBBc3RfaGVscGVyXG4gICAgICB3aXRoIG1vZHVsZSBBc3R0eXBlcyA6PSBBc3R0eXBlc1xuICAgICAgd2l0aCBtb2R1bGUgRG9jc3RyaW5ncyA6PSBEb2NzdHJpbmdzXG4gICAgICB3aXRoIG1vZHVsZSBJZGVudGlmaWFibGUgOj0gSWRlbnRpZmlhYmxlXG4gICAgICB3aXRoIG1vZHVsZSBMZXhlciA6PSBMZXhlclxuICAgICAgd2l0aCBtb2R1bGUgTG9jYXRpb24gOj0gTG9jYXRpb25cbiAgICAgIHdpdGggbW9kdWxlIExvbmdpZGVudCA6PSBMb25naWRlbnRcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNlIDo9IFBhcnNlXG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZXRyZWUgOj0gUGFyc2V0cmVlXG4gICAgICB3aXRoIG1vZHVsZSBQcHJpbnRhc3QgOj0gUHByaW50YXN0XG4gICAgICB3aXRoIG1vZHVsZSBTeW50YXhlcnIgOj0gU3ludGF4ZXJyKVxuZW5kXG5cbigqKi8qKilcblxuKCogRm9yIHRlc3RzIGFuZCBQcHhfY29yZSBjb21wYXRpYmlsaXR5IGxheWVyICopXG5tb2R1bGUgUHB4bGliX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbW1vbiA9IENvbW1vblxuICBtb2R1bGUgTmFtZSA9IE5hbWVcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgUHB4bGliXG5cbmxldCBkZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGRyb3BfZGVmYXVsdCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfZGVmYXVsdFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAoYWx0X29wdGlvbiAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF9lcXVhbCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2NvbXBhcmUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LmNvbXBhcmVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X3lvanNvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfaWYgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLnlvanNvbl9kcm9wX2lmXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IG9wYXF1ZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwieW9qc29uLm9wYXF1ZVwiIEF0dHJpYnV0ZS5Db250ZXh0LmNvcmVfdHlwZSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpICgpXG47O1xuXG5sZXQgb3B0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5vcHRpb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5hbGxvd19leHRyYV9maWVsZHNcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LnR5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfY2QgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCB5b2pzb25fa2V5ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5rZXlcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IHlvanNvbl92YXJpYW50X25hbWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm5hbWVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IHlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm5hbWVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LnJ0YWdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgaW52YWxpZF9hdHRyaWJ1dGUgfmxvYyBhdHRyIGRlc2NyaXB0aW9uID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgfmxvY1xuICAgIFwicHB4X3lvanNvbl9jb252OiBbQCVzXSBpcyBvbmx5IGFsbG93ZWQgb24gdHlwZSBbJXNdLlwiXG4gICAgKEF0dHJpYnV0ZS5uYW1lIGF0dHIpXG4gICAgZGVzY3JpcHRpb25cbjs7XG5cbmxldCBmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgeCA9XG4gIGlmIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCB4KVxuICB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICB+bG9jXG4gICAgICBcInBweF95b2pzb25fY29udjogW0BAYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBvbmx5IGFsbG93ZWQgb24gaW5saW5lIHJlY29yZHMuXCJcbjs7XG5cbmxldCBmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgeCA9XG4gIGlmIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IGFsbG93X2V4dHJhX2ZpZWxkc190ZCB4KVxuICB0aGVuIChcbiAgICBtYXRjaCB4LnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBjZHNcbiAgICAgIHdoZW4gTGlzdC5leGlzdHMgY2RzIH5mOihmdW4gY2QgLT5cbiAgICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgICB8IFBjc3RyX3JlY29yZCBfIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQEBAYWxsb3dfZXh0cmFfZmllbGRzXSBvbmx5IHdvcmtzIG9uIHJlY29yZHMuIEZvciBpbmxpbmUgXFxcbiAgICAgICAgIHJlY29yZHMsIGRvOiB0eXBlIHQgPSBBIG9mIHsgYSA6IGludCB9IFtAQGFsbG93X2V4dHJhX2ZpZWxkc10gfCBCIFtAQEBAZGVyaXZpbmcgXFxcbiAgICAgICAgIHlvanNvbl1cIlxuICAgIHwgXyAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQEBAYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBvbmx5IGFsbG93ZWQgb24gcmVjb3Jkcy5cIilcbjs7XG5cbm1vZHVsZSBSZWNvcmRfZmllbGRfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIGNvbW1vbiA9IFsgYHlvanNvbl9vcHRpb24gb2YgY29yZV90eXBlIF1cblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSBhdHRyIGxkIH5mID1cbiAgICBPcHRpb24ubWFwIChBdHRyaWJ1dGUuZ2V0IGF0dHIgbGQpIH5mOihmdW4geCAtPiBmIHgsIEF0dHJpYnV0ZS5uYW1lIGF0dHIpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bG9jIGdldHRlcnMgbGQgPVxuICAgIGxldCBjb21tb25fZ2V0dGVycyA9XG4gICAgICBbIChmdW4gbGQgLT5cbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuZ2V0IG9wdGlvbiBsZCB3aXRoXG4gICAgICAgICAgfCBTb21lICgpIC0+XG4gICAgICAgICAgICAobWF0Y2ggbGQucGxkX3R5cGUgd2l0aFxuICAgICAgICAgICAgIHwgWyV0eXBlOiBbJXQ/IHR5XSBvcHRpb25dIC0+IFNvbWUgKGB5b2pzb25fb3B0aW9uIHR5LCBcIltAeW9qc29uLm9wdGlvbl1cIilcbiAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9hdHRyaWJ1dGUgfmxvYyBvcHRpb24gXCJfIG9wdGlvblwiKVxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgXVxuICAgIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXJfbWFwIChnZXR0ZXJzIEAgY29tbW9uX2dldHRlcnMpIH5mOihmdW4gZiAtPiBmIGxkKSB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbICh2LCBfKSBdIC0+IFNvbWUgdlxuICAgIHwgXyA6OiBfIDo6IF8gYXMgYXR0cmlidXRlcyAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJUaGUgZm9sbG93aW5nIGVsZW1lbnRzIGFyZSBtdXR1YWxseSBleGNsdXNpdmU6ICVzXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoTGlzdC5tYXAgYXR0cmlidXRlcyB+ZjpzbmQpKVxuICA7O1xuXG4gIG1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBjb21tb25cbiAgICAgIHwgYGRlZmF1bHQgb2YgZXhwcmVzc2lvblxuICAgICAgXVxuXG4gICAgbGV0IGNyZWF0ZSB+bG9jIGxkID1cbiAgICAgIGNyZWF0ZSB+bG9jIFsgZ2V0X2F0dHJpYnV0ZSBkZWZhdWx0IH5mOihmdW4gZGVmYXVsdCAtPiBgZGVmYXVsdCBkZWZhdWx0KSBdIGxkXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZHJvcF9kZWZhdWx0IG9mIFsgYG5vX2FyZyB8IGBjb21wYXJlIHwgYGVxdWFsIHwgYHlvanNvbiB8IGBmdW5jIG9mIGV4cHJlc3Npb24gXVxuICAgICAgfCBgZHJvcF9pZiBvZiBleHByZXNzaW9uXG4gICAgICB8IGBrZWVwXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5sb2NcbiAgICAgICAgWyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiBgZHJvcF9kZWZhdWx0IGBub19hcmdcbiAgICAgICAgICAgIHwgU29tZSBlIC0+IGBkcm9wX2RlZmF1bHQgKGBmdW5jIGUpKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X2VxdWFsIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgZXF1YWwpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfY29tcGFyZSB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYGNvbXBhcmUpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfeW9qc29uIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgeW9qc29uKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9pZiB+ZjooZnVuIHggLT4gYGRyb3BfaWYgeClcbiAgICAgICAgXVxuICAgICAgICBsZFxuICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmBrZWVwXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID1cbiAgeyBsYWJlbCA6IHN0cmluZ1xuICA7IG5hbWVfb3ZlcnJpZGUgOiBzdHJpbmcgb3B0aW9uXG4gIH1cblxubGV0IGNyZWF0ZSB+bGFiZWwgfm5hbWVfb3ZlcnJpZGUgPSB7IGxhYmVsOyBuYW1lX292ZXJyaWRlIH1cblxubGV0IG9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIChjZCA6IFBweGxpYi5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbikgPVxuICBsZXQgbGFiZWwgPSBjZC5wY2RfbmFtZS50eHQgaW5cbiAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBQcHhsaWIuQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fdmFyaWFudF9uYW1lIGNkIGluXG4gIGNyZWF0ZSB+bGFiZWwgfm5hbWVfb3ZlcnJpZGVcbjs7XG5cbmxldCBsYWJlbCB0ID0gdC5sYWJlbFxubGV0IG5hbWUgdCA9IE9wdGlvbi52YWx1ZSB0Lm5hbWVfb3ZlcnJpZGUgfmRlZmF1bHQ6dC5sYWJlbFxuIiwib3BlbiBCYXNlXG5vcGVuIFBweGxpYlxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5tb2R1bGUgQXR0cnMgPSBBdHRyc1xuXG5sZXQgKCAtLT4gKSBsaHMgcmhzID0gY2FzZSB+Z3VhcmQ6Tm9uZSB+bGhzIH5yaHNcblxuKCogU2ltcGxpZmllcyBtYXRjaCBjYXNlcywgZm9yIHJlYWRhYmlsaXR5IG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gSXQncyBub3Qgb2J2aW91cyB3ZSBjYW5cbiAgIHN0aWNrIHRoaXMgaW4gcHB4X2NvcmUsIGFzIChtYXRjaCBlMSB3aXRoIHAgLT4gZTIpIGFuZCAobGV0IHAgPSBlMSBpbiBlMikgYXJlIG5vdCB0eXBlZFxuICAgZXhhY3RseSB0aGUgc2FtZSAodHlwZSBpbmZlcmVuY2UgZ29lcyBpbiBkaWZmZXJlbnQgb3JkZXIsIG1lYW5pbmcgdHlwZSBkaXNhbWJpZ3VhdGlvblxuICAgZGlmZmVycykuICopXG5sZXQgcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXMgPVxuICBtYXRjaCBjYXNlcyB3aXRoXG4gIHwgWyB7IHBjX2xoczsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgfSBdIC0+XG4gICAgKG1hdGNoIHBjX2xocywgZXhwciB3aXRoXG4gICAgIHwgKCB7IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dCA9IGlkZW50OyBfIH07IF8gfVxuICAgICAgICwgeyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBpZGVudCc7IF8gfTsgXyB9IClcbiAgICAgICB3aGVuIFN0cmluZy5lcXVhbCBpZGVudCBpZGVudCcgLT4gcGNfcmhzXG4gICAgIHwgXyAtPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OnBjX2xocyB+ZXhwciBdIHBjX3JocylcbiAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBleHByIGNhc2VzXG47O1xuXG5tb2R1bGUgRnVuX29yX21hdGNoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGdW4gb2YgZXhwcmVzc2lvblxuICAgIHwgTWF0Y2ggb2YgY2FzZSBsaXN0XG5cbiAgbGV0IGV4cHIgfmxvYyB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEZ1biBmIC0+IGZcbiAgICB8IE1hdGNoIGNhc2VzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBjYXNlc1xuICA7O1xuXG4gIGxldCB1bnJvbGwgfmxvYyBlIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZWFwcGx5IH5sb2MgZiBbIGUgXVxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9tYXRjaCB+bG9jIGUgY2FzZXNcbiAgOztcblxuICBsZXQgbWFwX3RtcF92YXJzIH5sb2MgdHMgPVxuICAgIGxldCB2YXJzID0gTGlzdC5tYXBpIHRzIH5mOihmdW4gaSBfIC0+IFwidlwiIF4gSW50LnRvX3N0cmluZyBpKSBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuIHZhcnMgdHMgfmY6KGZ1biB2YXIgdCAtPlxuICAgICAgICBsZXQgZXhwciA9IHVucm9sbCB+bG9jIChldmFyIH5sb2MgdmFyKSB0IGluXG4gICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwdmFyIH5sb2MgdmFyKSB+ZXhwcilcbiAgICBpblxuICAgIGJpbmRpbmdzLCBMaXN0Lm1hcCB2YXJzIH5mOihwdmFyIH5sb2MpLCBMaXN0Lm1hcCB2YXJzIH5mOihldmFyIH5sb2MpXG4gIDs7XG5lbmRcblxuKCogQSByZW5hbWluZyBpcyBhIG1hcHBpbmcgZnJvbSB0eXBlIHZhcmlhYmxlIG5hbWUgdG8gdHlwZSB2YXJpYWJsZSBuYW1lLlxuICAgSW4gZGVmaW5pdGlvbnMgc3VjaCBhczpcblxuICAgdHlwZSAnYSB0ID1cbiAgIHwgQSA6IDx0eXBlPiAtPiAnYiB0XG4gICB8IEIgb2YgJ2FcblxuICAgd2UgZ2VuZXJhdGUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIHlvanNvbl9vZiBwYXJhbWV0ZXIgbmFtZWQgYWZ0ZXIgJ2EsIGJ1dCAnYSBpcyBub3QgaW5cbiAgIHNjb3BlIGluIDx0eXBlPiB3aGVuIGhhbmRsaW5nIHRoZSBjb25zdHJ1Y3RvciBBIChiZWNhdXNlIEEgaXMgYSBnYWR0IGNvbnN0cnVjdG9yKS5cbiAgIEluc3RlYWQgdGhlIHR5cGUgdmFyaWFibGVzIGluIHNjb3BlIGFyZSB0aGUgb25lcyBkZWZpbmVkIGluIHRoZSByZXR1cm4gdHlwZSBvZiBBLFxuICAgbmFtZWx5ICdiLiBUaGVyZSBjb3VsZCBiZSBsZXNzIG9yIG1vcmUgdHlwZSB2YXJpYWJsZSBpbiBjYXNlcyBzdWNoIGFzOlxuXG4gICB0eXBlIF8gbGVzcyA9IExlc3MgOiBpbnQgbGVzc1xuICAgdHlwZSBfIG1vcmUgPSBNb3JlIDogKCdhICogJ2EpIG1vcmVcblxuICAgSWYgZm9yIGluc3RhbmNlLCA8dHlwZT4gaXMgWydiICogJ2NdLCB3aGVuIHdlIGZpbmQgJ2IsIHdlIHdpbGwgbG9vayBmb3IgWydiXSBpbiB0aGVcbiAgIHJlbmFtaW5nIGFuZCBmaW5kIFsnYV0gKG9ubHkgaW4gdGhhdCBnYWR0IGJyYW5jaCwgaXQgY291bGQgYmUgc29tZXRoaW5nIGVsc2UgaW4gb3RoZXJcbiAgIGJyYW5jaGVzKSwgYXQgd2hpY2ggcG9pbnQgd2UgY2FuIGNhbGwgdGhlIHByZXZpb3VzbHkgYm91bmQgeW9qc29uX29mIHBhcmFtZXRlciBuYW1lZFxuICAgYWZ0ZXIgJ2EuXG4gICBJZiB3ZSBjYW4ndCBmaW5kIGEgcmVzdWx0aW5nIG5hbWUsIGxpa2Ugd2hlbiBsb29raW5nIHVwIFsnY10gaW4gdGhlIHJlbmFtaW5nLCB0aGVuIHdlXG4gICBhc3N1bWUgdGhlIHZhcmlhYmxlIGlzIGV4aXN0ZW50aWFsbHkgcXVhbnRpZmllZCBhbmQgdHJlYXQgaXQgYXMgW19dICh3aGljaCBpcyBvayxcbiAgIGFzc3VtaW5nIHRoZXJlIGFyZSBubyBjb25zdHJhaW50cykuICopXG5tb2R1bGUgUmVuYW1pbmcgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGlkZW50aXR5IDogdFxuICB2YWwgYWRkX3VuaXZlcnNhbGx5X2JvdW5kIDogdCAtPiBzdHJpbmcgbG9jIC0+IHRcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICB2YWwgYmluZGluZ19raW5kIDogdCAtPiBzdHJpbmcgLT4gYmluZGluZ19raW5kXG4gIHZhbCBvZl9nYWR0IDogc3RyaW5nIGxpc3QgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgZXJyb3IgPSBzdHJpbmcgTG9jLnRcbiAgdHlwZSB0ID0gKHN0cmluZywgZXJyb3IpIFJlc3VsdC50IE1hcC5NKFN0cmluZykudCBvcHRpb25cblxuICBsZXQgaWRlbnRpdHkgPSBOb25lXG5cbiAgdHlwZSBiaW5kaW5nX2tpbmQgPVxuICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kXG5cbiAgbGV0IGFkZF91bml2ZXJzYWxseV9ib3VuZCAodCA6IHQpIG5hbWUgOiB0ID1cbiAgICBsZXQgbmFtZSA9IG5hbWUudHh0IGluXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbWFwIC0+IFNvbWUgKE1hcC5zZXQgfmtleTpuYW1lIH5kYXRhOihPayBuYW1lKSBtYXApXG4gIDs7XG5cbiAgbGV0IGJpbmRpbmdfa2luZCB0IHZhciA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IFVuaXZlcnNhbGx5X2JvdW5kIHZhclxuICAgIHwgU29tZSBtYXAgLT5cbiAgICAgIChtYXRjaCBNYXAuZmluZCBtYXAgdmFyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gRXhpc3RlbnRpYWxseV9ib3VuZFxuICAgICAgIHwgU29tZSAoT2sgdmFsdWUpIC0+IFVuaXZlcnNhbGx5X2JvdW5kIHZhbHVlXG4gICAgICAgfCBTb21lIChFcnJvciB7IGxvYzsgdHh0IH0pIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiJXNcIiB0eHQpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgbWFwIHRyYW5zbGF0aW5nIHR5cGUgdmFyaWFibGVzIGFwcGVhcmluZyBpbiB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQURUXG4gICAgIGNvbnN0cnVjdG9yIHRvIHRoZWlyIG5hbWUgaW4gdGhlIHR5cGUgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgRm9yIGluc3RhbmNlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gWCA6ICd4ICogJ3kgLT4gKCd4LCAneSkgdFxuICAgICBdfVxuXG4gICAgIHdpbGwgcHJvZHVjZTpcblxuICAgICB7W1xuICAgICAgIFwieFwiIC0+IE9rIFwiYVwiXG4gICAgICAgICAgICAgICAgXCJ5XCIgLT4gT2sgXCJiXCJcbiAgICAgXX1cblxuICAgICBJZiBhIHZhcmlhYmxlIGFwcGVhcnMgdHdpY2UgaW4gdGhlIHJldHVybiB0eXBlIGl0IHdpbGwgbWFwIHRvIFtFcnJvciBfXS4gSWYgYVxuICAgICB2YXJpYWJsZSBjYW5ub3QgYmUgbWFwcGVkIHRvIGEgcGFyYW1ldGVyIG9mIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBpdCB3aWxsIG1hcCB0b1xuICAgICBbRXJyb3JdIChmb3IgaW5zdGFuY2UgW0EgOiAnYSAtPiAnYSBsaXN0IHRdKS5cblxuICAgICBJdCByZXR1cm5zIE5vbmUgb24gdXNlciBlcnJvciwgdG8gbGV0IHRoZSB0eXBlciBnaXZlIHRoZSBlcnJvciBtZXNzYWdlICopXG4gIGxldCBvZl9nYWR0ID1cbiAgICAoKiBBZGQgYWxsIHR5cGUgdmFyaWFibGVzIG9mIGEgdHlwZSB0byBhIG1hcC4gKilcbiAgICBsZXQgYWRkX3R5cGV2YXJzID1cbiAgICAgIG9iamVjdFxuICAgICAgICBpbmhlcml0IFsoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgICAgIG1ldGhvZCEgY29yZV90eXBlIHR5IG1hcCA9XG4gICAgICAgICAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdmFyIHZhciAtPlxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgeyBsb2MgPSB0eS5wdHlwX2xvY1xuICAgICAgICAgICAgICA7IHR4dCA9XG4gICAgICAgICAgICAgICAgICBcInBweF95b2pzb25fY29udjogdmFyaWFibGUgaXMgbm90IGEgcGFyYW1ldGVyIG9mIHRoZSB0eXBlIGNvbnN0cnVjdG9yXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1hcC5zZXQgbWFwIH5rZXk6dmFyIH5kYXRhOihFcnJvciBlcnJvcilcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIHR5IG1hcFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBsZXQgYXV4IG1hcCB0cF9uYW1lIHRwX2luX3JldHVybl90eXBlID1cbiAgICAgIG1hdGNoIHRwX2luX3JldHVybl90eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfdmFyIHZhciAtPlxuICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgaWYgTWFwLm1lbSBtYXAgdmFyXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9sb2MgaW5cbiAgICAgICAgICAgIEVycm9yIHsgbG9jOyB0eHQgPSBcInBweF95b2pzb25fY29udjogZHVwbGljYXRlIHZhcmlhYmxlXCIgfSlcbiAgICAgICAgICBlbHNlIE9rIHRwX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGFcbiAgICAgIHwgXyAtPiBhZGRfdHlwZXZhcnMjY29yZV90eXBlIHRwX2luX3JldHVybl90eXBlIG1hcFxuICAgIGluXG4gICAgZnVuIHRwcyBjZCAtPlxuICAgICAgbWF0Y2ggY2QucGNkX3JlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgIChtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgfCBQdHlwX2NvbnN0ciAoXywgcGFyYW1zKSAtPlxuICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBwYXJhbXMgPD4gTGlzdC5sZW5ndGggdHBzXG4gICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgKFN0ZGxpYi5MaXN0TGFiZWxzLmZvbGRfbGVmdDJcbiAgICAgICAgICAgICAgICAgIHRwc1xuICAgICAgICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKSlcbiAgICAgICAgICAgICAgICAgIH5mOmF1eClcbiAgICAgICAgIHwgXyAtPiBOb25lKVxuICA7O1xuZW5kXG5cbigqIFV0aWxpdHkgZnVuY3Rpb25zICopXG5cbmxldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyA9XG4gIGxldCBtYXAgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFB0eXBfdmFyIF8gLT4gUHR5cF9hbnlcbiAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICBlbmRcbiAgaW5cbiAgbWFwI2NvcmVfdHlwZVxuOztcblxubGV0IHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgeCA9XG4gIGxldCBwcmVmaXggPSBcInJpZ2lkX1wiIGluXG4gIGlmIFN0cmluZy5lcXVhbCB4IHR5cGVfbmFtZSB8fCBTdHJpbmcuaXNfcHJlZml4IHggfnByZWZpeFxuICB0aGVuIHByZWZpeCBeIHggXiBcIl9vZl90eXBlX1wiIF4gdHlwZV9uYW1lXG4gIGVsc2UgeFxuOztcblxubGV0IG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgPVxuICAgICAgICBsZXQgcHR5cF9kZXNjID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgcyAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKExvY2F0ZWQubGlkZW50IH5sb2M6dHkucHR5cF9sb2MgKHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgcyksIFtdKVxuICAgICAgICAgIHwgZGVzYyAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyBkZXNjXG4gICAgICAgIGluXG4gICAgICAgIHsgdHkgd2l0aCBwdHlwX2Rlc2MgfVxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHF1YW50aWZpZWQgdHlwZSBbICEgJ2EgLi4gJ3ogLiAobWFrZV9tb25vX3R5cGUgdCAoJ2EgLi4gJ3opKSBdIG9yXG4gICBbdHlwZSBhIC4uIHouIG1ha2VfbW9ub190eXBlIHQgKGEgLi4geildIHdoZW4gW3VzZV9yaWdpZF92YXJpYWJsZXNdIGlzIHRydWUuXG4gICBBbm5vdGF0aW9uIGFyZSBuZWVkZWQgZm9yIG5vbiByZWd1bGFyIHJlY3Vyc2l2ZSBkYXRhdHlwZXMgYW5kIGdhZHQgd2hlbiB0aGUgcmV0dXJuIHR5cGVcbiAgIG9mIGNvbnN0cnVjdG9ycyBhcmUgY29uc3RyYWluZWQuIFVuZm9ydHVuYXRlbHksIHB1dHRpbmcgcmlnaWQgdmFyaWFibGVzIGV2ZXJ5d2hlcmUgZG9lc1xuICAgbm90IHdvcmsgYmVjYXVzZSBvZiBjZXJ0YWlucyB0eXBlcyB3aXRoIGNvbnN0cmFpbnRzLiBXZSB0aHVzIG9ubHkgdXNlIHJpZ2lkIHZhcmlhYmxlc1xuICAgZm9yIHN1bSB0eXBlcywgd2hpY2ggaW5jbHVkZXMgYWxsIEdBRFRzLiAqKVxuXG5sZXQgdHZhcnNfb2ZfY29yZV90eXBlIDogY29yZV90eXBlIC0+IHN0cmluZyBsaXN0ID1cbiAgbGV0IHR2YXJzID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgW3N0cmluZyBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IGlmIExpc3QubWVtIGFjYyB4IH5lcXVhbDpTdHJpbmcuZXF1YWwgdGhlbiBhY2MgZWxzZSB4IDo6IGFjY1xuICAgICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIHggYWNjXG4gICAgZW5kXG4gIGluXG4gIGZ1biB0eXAgLT4gTGlzdC5yZXYgKHR2YXJzI2NvcmVfdHlwZSB0eXAgW10pXG47O1xuXG5sZXQgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZ1xuICAgICAgKCogcGxhY2luZyBhIHN1aXRhYmx5IHBvbHltb3JwaGljIG9yIHJpZ2lkIHR5cGUgY29uc3RyYWludCBvbiB0aGUgcGF0dGVybiBvciBib2R5ICopXG4gICAgICAobG9jIDogTG9jYXRpb24udClcbiAgICAgICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pXG4gICAgICAodHlwIDogY29yZV90eXBlKVxuICAgICAgfih0cHMgOiBzdHJpbmcgbG9jIGxpc3QpXG4gICAgICB+KGZ1bmNfbmFtZSA6IHN0cmluZylcbiAgICAgIChib2R5IDogZXhwcmVzc2lvbilcbiAgPVxuICBsZXQgdmFycyA9IHR2YXJzX29mX2NvcmVfdHlwZSB0eXAgaW5cbiAgbGV0IGhhc192YXJzID1cbiAgICBtYXRjaCB2YXJzIHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBfIDo6IF8gLT4gdHJ1ZVxuICBpblxuICBsZXQgcGF0ID1cbiAgICBsZXQgcGF0ID0gcHZhciB+bG9jIGZ1bmNfbmFtZSBpblxuICAgIGlmIG5vdCBoYXNfdmFyc1xuICAgIHRoZW4gcGF0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgdmFycyA9IExpc3QubWFwIH5mOihmdW4gdHh0IC0+IHsgdHh0OyBsb2MgfSkgdmFycyBpblxuICAgICAgcHBhdF9jb25zdHJhaW50IH5sb2MgcGF0IChwdHlwX3BvbHkgfmxvYyB2YXJzIHR5cCkpXG4gIGluXG4gIGxldCBib2R5ID1cbiAgICBsZXQgdXNlX3JpZ2lkX3ZhcmlhYmxlcyA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfdmFyaWFudCBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgdXNlX3JpZ2lkX3ZhcmlhYmxlc1xuICAgIHRoZW4gKFxuICAgICAgbGV0IHR5cGVfbmFtZSA9IHRkLnB0eXBlX25hbWUudHh0IGluXG4gICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgdHBzXG4gICAgICAgIH5mOihmdW4gdHAgYm9keSAtPlxuICAgICAgICAgIHBleHBfbmV3dHlwZSB+bG9jIHsgdHh0ID0gcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB0cC50eHQ7IGxvYyA9IHRwLmxvYyB9IGJvZHkpXG4gICAgICAgIH5pbml0OihwZXhwX2NvbnN0cmFpbnQgfmxvYyBib2R5IChtYWtlX3R5cGVfcmlnaWQgfnR5cGVfbmFtZSB0eXApKSlcbiAgICBlbHNlIGlmIGhhc192YXJzXG4gICAgdGhlbiBib2R5XG4gICAgZWxzZSBwZXhwX2NvbnN0cmFpbnQgfmxvYyBib2R5IHR5cFxuICBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdCB+ZXhwcjpib2R5XG47O1xuXG5sZXQgcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICAob2JqZWN0XG4gICAgaW5oZXJpdCB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlIHdpdGhcbiAgICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IH5tYXJrX2FzX3NlZW46ZmFsc2UgQXR0cnMub3BhcXVlIGN0eXBlKSAtPlxuICAgICAgICAoKVxuICAgICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gLT4gKClcbiAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgY3R5cGVcbiAgZW5kKVxuICAjZ29cbiAgICAoKVxuOztcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiB0byBZb2pzb25zICopXG5tb2R1bGUgU2lnX2dlbmVyYXRlX3lvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9vZl95b2pzb25fb2YgfmxvYyB0ID0gWyV0eXBlOiBbJXQgdF0gLT4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50XVxuICBsZXQgbWtfdHlwZSB0ZCA9IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mOnR5cGVfb2ZfeW9qc29uX29mXG5cbiAgbGV0IG1rX3NpZyB+bG9jOl8gfnBhdGg6XyAoX3JmLCB0ZHMpID1cbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgcHNpZ192YWx1ZVxuICAgICAgICB+bG9jXG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoKCBeICkgXCJ5b2pzb25fb2ZfXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzoobWtfdHlwZSB0ZClcbiAgICAgICAgICAgfnByaW06W10pKVxuICA7O1xuZW5kXG5cbigqIEdlbmVyYXRlcyB0aGUgc2lnbmF0dXJlIGZvciB0eXBlIGNvbnZlcnNpb24gZnJvbSBZb2pzb25zICopXG5tb2R1bGUgU2lnX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9vZl9vZl95b2pzb24gfmxvYyB0ID0gWyV0eXBlOiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQgLT4gWyV0IHRdXVxuICBsZXQgbWtfdHlwZSB0ZCA9IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mOnR5cGVfb2Zfb2ZfeW9qc29uXG5cbiAgbGV0IHNpZ19vZl90ZCB3aXRoX3BvbHkgdGQgPVxuICAgIGxldCBvZl95b2pzb25fdHlwZSA9IG1rX3R5cGUgdGQgaW5cbiAgICBsZXQgbG9jID0geyB0ZC5wdHlwZV9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgb2ZfeW9qc29uX2l0ZW0gPVxuICAgICAgcHNpZ192YWx1ZVxuICAgICAgICB+bG9jXG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoZnVuIHMgLT4gcyBeIFwiX29mX3lvanNvblwiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICB+dHlwZV86b2ZfeW9qc29uX3R5cGVcbiAgICAgICAgICAgfnByaW06W10pXG4gICAgaW5cbiAgICBtYXRjaCB3aXRoX3BvbHksIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSB3aXRoXG4gICAgfCB0cnVlLCBgU3VyZWx5X25vdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnNpZ19vZl90ZDogeW9qc29uX3BvbHkgYW5ub3RhdGlvbiBidXQgdHlwZSBpcyBzdXJlbHkgbm90IFxcXG4gICAgICAgICBhIHBvbHltb3JwaGljIHZhcmlhbnRcIlxuICAgIHwgZmFsc2UsIChgU3VyZWx5X25vdCB8IGBNYXliZSkgLT4gWyBvZl95b2pzb25faXRlbSBdXG4gICAgfCAodHJ1ZSB8IGZhbHNlKSwgYERlZmluaXRlbHkgfCB0cnVlLCBgTWF5YmUgLT5cbiAgICAgIFsgb2ZfeW9qc29uX2l0ZW1cbiAgICAgIDsgcHNpZ192YWx1ZVxuICAgICAgICAgIH5sb2NcbiAgICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBcIl9fXCIgXiBzIF4gXCJfb2ZfeW9qc29uX19cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgICB+dHlwZV86b2ZfeW9qc29uX3R5cGVcbiAgICAgICAgICAgICB+cHJpbTpbXSlcbiAgICAgIF1cbiAgOztcblxuICBsZXQgbWtfc2lnIH5wb2x5IH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPSBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihzaWdfb2ZfdGQgcG9seSlcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX3lvanNvbl9vZiA9IHN0cnVjdFxuICAoKiBIYW5kbGluZyBvZiByZWNvcmQgZGVmYXVsdHMgKilcblxuICBsZXQgeW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgYXJncyA9XG4gICAgdHlwZV9jb25zdHJfY29udiB+bG9jIGlkIH5mOihmdW4gcyAtPiBcInlvanNvbl9vZl9cIiBeIHMpIGFyZ3NcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHR5cGVzICopXG4gIGxldCByZWMgeW9qc29uX29mX3R5cGVcbiAgICAgICAgICAgIH4odHlwZXZhcl9oYW5kbGluZyA6IFsgYG9rIG9mIFJlbmFtaW5nLnQgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgXSlcbiAgICAgICAgICAgIHR5cFxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGxvYyA9IHsgdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggdHlwIHdpdGhcbiAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5vcGFxdWUgdHlwKSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgfCBbJXR5cGU6IF9dIC0+IEZ1biBbJWV4cHIgZnVuIF8gLT4gYFN0cmluZyBcIl9cIl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdHVwbGUgdHA7IF8gfSAtPlxuICAgICAgTWF0Y2ggWyB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApIF1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXIgcGFybTsgXyB9IC0+XG4gICAgICAobWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIFwiVHlwZSB2YXJpYWJsZXMgbm90IGFsbG93ZWQgaW4gWyUleW9qc29uX29mOiBdLiBQbGVhc2UgdXNlIGxvY2FsbHkgYWJzdHJhY3QgXFxcbiAgICAgICAgICAgIHR5cGVzIGluc3RlYWQuXCJcbiAgICAgICB8IGBvayByZW5hbWluZyAtPlxuICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmJpbmRpbmdfa2luZCByZW5hbWluZyBwYXJtIHdpdGhcbiAgICAgICAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIHBhcm0gLT4gRnVuIChldmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybSkpXG4gICAgICAgICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kIC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIFsldHlwZTogX10pKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIGFyZ3MpOyBfIH0gLT5cbiAgICAgIEZ1blxuICAgICAgICAoeW9qc29uX29mX3R5cGVfY29uc3RyXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgaWRcbiAgICAgICAgICAgKExpc3QubWFwIGFyZ3MgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0cCkpKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hcnJvdyAoXywgXywgXyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgIFslZXhwclxuICAgICAgICAgIGZ1biBfZiAtPlxuICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2ZfZnVuIFBweF95b2pzb25fY29udl9saWIuaWdub3JlXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHlvanNvbl9vZl92YXJpYW50IH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHJvd19maWVsZHMpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAocGFybXMsIHBvbHlfdHApOyBfIH0gLT5cbiAgICAgIHlvanNvbl9vZl9wb2x5IH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHBvbHlfdHBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9vYmplY3QgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jbGFzcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcGFja2FnZSBfOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gXzsgXyB9IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIlR5cGUgdW5zdXBwb3J0ZWQgZm9yIHBweCBbeW9qc29uX29mXSBjb252ZXJzaW9uXCJcblxuICAoKiBDb252ZXJzaW9uIG9mIHR1cGxlcyAqKVxuICBhbmQgeW9qc29uX29mX3R1cGxlIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwcykgPVxuICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjooZnVuIHRwIC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSB0cHMgaW5cbiAgICBsZXQgYmluZGluZ3MsIHB2YXJzLCBldmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgaW5fZXhwciA9IFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyBldmFyc11dIGluXG4gICAgbGV0IGV4cHIgPSBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBpbl9leHByIGluXG4gICAgcHBhdF90dXBsZSB+bG9jIHB2YXJzIC0tPiBleHByXG5cbiAgKCogQ29udmVyc2lvbiBvZiB2YXJpYW50IHR5cGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdmFyaWFudFxuICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAoKGxvYywgcm93X2ZpZWxkcykgOiBMb2NhdGlvbi50ICogcm93X2ZpZWxkIGxpc3QpXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgaXRlbSByb3cgPVxuICAgICAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgcm93IGluXG4gICAgICBtYXRjaCByb3cucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChjbnN0ciwgdHJ1ZSwgW10pIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIC0tPiBbJWV4cHIgYExpc3QgWyBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV0gXV1cbiAgICAgIHwgUnRhZyAoY25zdHIsIGZhbHNlLCBbIHRwIF0pIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgbWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdHVwbGUgdHBzIC0+IHRwc1xuICAgICAgICAgIHwgXyAtPiBbIHRwIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgZXN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldXSBpblxuICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPSBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcpIGFyZ3MgaW5cbiAgICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyB5b2pzb25fb2ZfYXJncyBpblxuICAgICAgICBsZXQgcGF0dCA9XG4gICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgIHwgWyBwYXR0IF0gLT4gcGF0dFxuICAgICAgICAgIHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0dHNcbiAgICAgICAgaW5cbiAgICAgICAgcHBhdF92YXJpYW50IChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIH5sb2MgKFNvbWUgcGF0dClcbiAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgIFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyAoY25zdHJfZXhwciA6OiB2YXJzKV1dXG4gICAgICB8IFJpbmhlcml0IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBbXSk7IF8gfSAtPlxuICAgICAgICBwcGF0X2FsaWFzIH5sb2MgKHBwYXRfdHlwZSB+bG9jIGlkKSAoTG9jLm1ha2UgXCJ2XCIgfmxvYylcbiAgICAgICAgLS0+IHlvanNvbl9vZl90eXBlX2NvbnN0ciB+bG9jIGlkIFsgWyVleHByIHZdIF1cbiAgICAgIHwgUnRhZyAoXywgdHJ1ZSwgWyBfIF0pIHwgUnRhZyAoXywgXywgXyA6OiBfIDo6IF8pIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5zdXBwb3J0ZWQ6IHlvanNvbl9vZl92YXJpYW50L1J0YWcvJlwiXG4gICAgICB8IFJpbmhlcml0ICh7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgXyA6OiBfKTsgXyB9IGFzIHR5cCkgLT5cbiAgICAgICAgbGV0IGNhbGwgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0eXApIGluXG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKSAtLT4gWyVleHByIFslZSBjYWxsXSB2XVxuICAgICAgfCBSaW5oZXJpdCBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5zdXBwb3J0ZWQ6IHlvanNvbl9vZl92YXJpYW50L1Jpbmhlcml0L25vbi1pZFwiXG4gICAgICAoKiBpbXBvc3NpYmxlPyopXG4gICAgICB8IFJ0YWcgKF8sIGZhbHNlLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgaW5cbiAgICBNYXRjaCAoTGlzdC5tYXAgfmY6aXRlbSByb3dfZmllbGRzKVxuXG4gICgqIFBvbHltb3JwaGljIHJlY29yZCBmaWVsZHMgKilcbiAgYW5kIHlvanNvbl9vZl9wb2x5IH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHRwID1cbiAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICBtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgKCogU2hvdWxkIGJlIGltcG9zc2libGUgYmVjYXVzZSBbeW9qc29uX29mX3BvbHldIGlzIG9ubHkgY2FsbGVkIG9uIHBvbHltb3JwaGljIHJlY29yZFxuICAgICAgICAgZmllbGRzIGFuZCByZWNvcmQgdHlwZSBkZWZpbml0aW9ucyBjYW4ndCBvY2N1ciBpbiB0eXBlIGV4cHJlc3Npb25zLiAqKVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwb2x5bW9ycGhpYyB0eXBlIGluIGEgdHlwZSBleHByZXNzaW9uXCJcbiAgICB8IGBvayByZW5hbWluZyAtPlxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgbGV0IG1rX2JpbmRpbmcgcGFybSA9XG4gICAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgfnBhdDoocHZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0udHh0KSlcbiAgICAgICAgICAgIH5leHByOlslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIH5mOm1rX2JpbmRpbmcgcGFybXNcbiAgICAgIGluXG4gICAgICBsZXQgcmVuYW1pbmcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdCBwYXJtcyB+aW5pdDpyZW5hbWluZyB+ZjpSZW5hbWluZy5hZGRfdW5pdmVyc2FsbHlfYm91bmRcbiAgICAgIGluXG4gICAgICAobWF0Y2ggeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHAgd2l0aFxuICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgICAgIE1hdGNoXG4gICAgICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgICAgICAocGV4cF9tYXRjaCB+bG9jIFslZXhwciBhcmddIG1hdGNoaW5ncylcbiAgICAgICAgICAgXSlcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHJlY29yZCB0eXBlcyAqKVxuXG4gIGxldCBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lID1cbiAgICBsZXQgcCA9IExvYy5tYWtlIChMb25naWRlbnQuTGlkZW50IG5hbWUpIH5sb2MsIHB2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSkgaW5cbiAgICBwYXR0IEAgWyBwIF1cbiAgOztcblxuICB0eXBlIGlzX2VtcHR5X2V4cHIgPVxuICAgIHwgSW5zcGVjdF92YWx1ZSBvZiAobG9jYXRpb24gLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uKVxuICAgIHwgSW5zcGVjdF95b2pzb24gb2YgKGNudl9leHByOmV4cHJlc3Npb24gLT4gbG9jYXRpb24gLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uKVxuXG4gIGxldCB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5X2V4cHIga2V5ID1cbiAgICBsZXQgbG9jID0geyB0cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgIGxldCBjbnZfZXhwciA9XG4gICAgICBtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICB8IEZ1biBleHAgLT4gZXhwXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBbJWV4cHIgZnVuIGVsIC0+IFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIGVsXSBtYXRjaGluZ3NdXVxuICAgIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gY252X2V4cHJcbiAgICAgIHwgU29tZSB5b2pzb25fb2YgLT4gWyVleHByIFslZSB5b2pzb25fb2ZdIFslZSBjbnZfZXhwcl1dXG4gICAgaW5cbiAgICBsZXQgZXhwciA9XG4gICAgICBsZXQgdl9uYW1lID0gXCJ2X1wiIF4gbmFtZSBpblxuICAgICAgWyVleHByXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBbJWVcbiAgICAgICAgICAgIG1hdGNoIGlzX2VtcHR5X2V4cHIgd2l0aFxuICAgICAgICAgICAgfCBJbnNwZWN0X3ZhbHVlIGlzX2VtcHR5X2V4cHIgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgaWYgWyVlIGlzX2VtcHR5X2V4cHIgbG9jIChldmFyIH5sb2Mgdl9uYW1lKV1cbiAgICAgICAgICAgICAgICB0aGVuIGJuZHNcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIFslZSBldmFyIH5sb2Mgdl9uYW1lXSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXG4gICAgICAgICAgICB8IEluc3BlY3RfeW9qc29uIGlzX2VtcHR5X2V4cHIgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgaWYgWyVlIGlzX2VtcHR5X2V4cHIgfmNudl9leHByIGxvYyBbJWV4cHIgYXJnXV1cbiAgICAgICAgICAgICAgICB0aGVuIGJuZHNcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgICAgYm5kIDo6IGJuZHMpXV1cbiAgICAgICAgaW5cbiAgICAgICAgWyVlIGV4cHJdXVxuICAgIGluXG4gICAgcGF0dCwgZXhwclxuICA7O1xuXG4gIGxldCBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzIH50eXBlc19iZWluZ19kZWZpbmVkIH5sb2MgfndoeSB0cCA9XG4gICAgbGV0IGRpc2FsbG93X3ZhcmlhYmxlcyA9XG4gICAgICBsZXQgaXRlciA9XG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXIgYXMgc3VwZXJcblxuICAgICAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgIHwgUHR5cF92YXIgdiAtPlxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHQuJXNdIHdhcyB1c2VkLCBidXQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIGNvbnRhaW5zIFxcXG4gICAgICAgICAgICAgICAgIGEgdHlwZSB2YXJpYWJsZTogJyVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbXBhcmlzb24gaXMgbm90IGF2YWlhYmxlIGZvciB0eXBlIHZhcmlhYmxlcy5cXG5cXFxuICAgICAgICAgICAgICAgICBDb25zaWRlciB1c2luZyBbQHlvanNvbl9kcm9wX2lmIF9dIG9yIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIFxcXG4gICAgICAgICAgICAgICAgIGluc3RlYWQuXCJcbiAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgY29tcGFyZSAtPiBcImNvbXBhcmVcIlxuICAgICAgICAgICAgICAgICB8IGBlcXVhbCAtPiBcImVxdWFsXCIpXG4gICAgICAgICAgICAgICAgdlxuICAgICAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgaXRlciNjb3JlX3R5cGVcbiAgICBpblxuICAgIGxldCBkaXNhbGxvd19yZWN1cnNpdmVfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICB8IGBOb25yZWN1cnNpdmUgLT4gZnVuIF8gLT4gKClcbiAgICAgIHwgYFJlY3Vyc2l2ZSB0eXBlc19iZWluZ19kZWZpbmVkIC0+XG4gICAgICAgIGxldCBpdGVyID1cbiAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXIgYXMgc3VwZXJcblxuICAgICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgbG9jID0gXzsgdHh0ID0gTGlkZW50IHMgfSwgXykgYXMgdCAtPlxuICAgICAgICAgICAgICAgIGlmIFNldC5tZW0gdHlwZXNfYmVpbmdfZGVmaW5lZCBzXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHQuJXNdIHdhcyB1c2VkLCBidXQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIFxcXG4gICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIHR5cGUgZGVmaW5lZCBpbiB0aGUgY3VycmVudCByZWN1cnNpdmUgYmxvY2s6ICVzLlxcblxcXG4gICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuXCJcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHdoeSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgICAgICB8IGBlcXVhbCAtPiBcImVxdWFsXCIpXG4gICAgICAgICAgICAgICAgICAgIHM7XG4gICAgICAgICAgICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICAgIGVuZFxuICAgICAgICBpblxuICAgICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgZGlzYWxsb3dfdmFyaWFibGVzIHRwO1xuICAgIGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyB0cFxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICBob3dcbiAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgIHBhdHRcbiAgICAgICAgZXhwclxuICAgICAgICBuYW1lXG4gICAgICAgIHRwXG4gICAgICAgID95b2pzb25fb2ZcbiAgICAgICAgZGVmYXVsdFxuICAgICAgICBrZXlcbiAgICA9XG4gICAgbGV0IGlzX2VtcHR5ID1cbiAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICB8IGB5b2pzb24gLT5cbiAgICAgICAgSW5zcGVjdF95b2pzb25cbiAgICAgICAgICAoZnVuIH5jbnZfZXhwciBsb2MgeW9qc29uX2V4cHIgLT5cbiAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCAoWyVlIGNudl9leHByXSBbJWUgZGVmYXVsdF0pIFslZSB5b2pzb25fZXhwcl1dKVxuICAgICAgfCAoYG5vX2FyZyB8IGBmdW5jIF8gfCBgY29tcGFyZSB8IGBlcXVhbCkgYXMgaG93IC0+XG4gICAgICAgIGxldCBlcXVhbGl0eV9mIGxvYyA9XG4gICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgICB8IGBub19hcmcgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgW0BvY2FtbC5wcHdhcm5pbmdcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdF0gaXMgZGVwcmVjYXRlZDogXFxcbiAgICAgICAgICAgICAgICAgcGxlYXNlIHVzZSBvbmUgb2Y6XFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQgZl0gYW5kIGdpdmUgYW4gXFxcbiAgICAgICAgICAgICAgICAgZXhwbGljaXQgZXF1YWxpdHkgZnVuY3Rpb24gKFtmID0gXFxcbiAgICAgICAgICAgICAgICAgUG9seS4oPSldIGNvcnJlc3BvbmRzIHRvIHRoZSBvbGQgXFxcbiAgICAgICAgICAgICAgICAgYmVoYXZpb3IpXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZV0gaWYgdGhlIFxcXG4gICAgICAgICAgICAgICAgIHR5cGUgc3VwcG9ydHMgWyVjb21wYXJlXVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LmVxdWFsXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWVxdWFsXVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gaWYgeW91IFxcXG4gICAgICAgICAgICAgICAgIHdhbnQgdG8gY29tcGFyZSB0aGUgeW9qc29uIFxcXG4gICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uc1xcblwiXV1cbiAgICAgICAgICB8IGBmdW5jIGYgLT4gZlxuICAgICAgICAgIHwgYGNvbXBhcmUgLT5cbiAgICAgICAgICAgIGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndoeTpgY29tcGFyZVxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslY29tcGFyZS5lcXVhbDogWyV0IHRwXV1dXG4gICAgICAgICAgfCBgZXF1YWwgLT5cbiAgICAgICAgICAgIGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndoeTpgZXF1YWxcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICB0cDtcbiAgICAgICAgICAgIFslZXhwciBbJWVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgaW5cbiAgICAgICAgSW5zcGVjdF92YWx1ZSAoZnVuIGxvYyBleHByIC0+IFslZXhwciBbJWUgZXF1YWxpdHlfZiBsb2NdIFslZSBkZWZhdWx0XSBbJWUgZXhwcl1dKVxuICAgIGluXG4gICAgeW9qc29uX29mX3JlY29yZF9maWVsZCB+cmVuYW1pbmcgcGF0dCBleHByIG5hbWUgdHAgP3lvanNvbl9vZiBpc19lbXB0eSBrZXlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgfnR5cGVzX2JlaW5nX2RlZmluZWQgfnJlbmFtaW5nIGxvYyBmbGRzIH53cmFwX2V4cHIgPVxuICAgIGxldCBjb2xsICgocGF0dCA6IChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0KSwgZXhwcikgbGQgPVxuICAgICAgbGV0IG5hbWUgPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IHsgbGQucGxkX25hbWUubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5Zb2pzb25fb2YuY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgfCBgeW9qc29uX29wdGlvbiB0cCAtPlxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gWyVleHByIHZdIGluXG4gICAgICAgIGxldCBjbnZfZXhwciA9XG4gICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgdm5hbWVcbiAgICAgICAgICAgICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgICAgICBtYXRjaCBbJWUgZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKV0gd2l0aFxuICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gYm5kc1xuICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgdiAtPlxuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIGluXG4gICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgYm5kIDo6IGJuZHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBbJWUgZXhwcl1dXG4gICAgICAgIGluXG4gICAgICAgIHBhdHQsIGV4cHJcbiAgICAgIHwgYGRyb3BfZGVmYXVsdCBob3cgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgKG1hdGNoIEF0dHJpYnV0ZS5nZXQgQXR0cnMuZGVmYXVsdCBsZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJubyBkZWZhdWx0IHRvIGRyb3BcIlxuICAgICAgICAgfCBTb21lIGRlZmF1bHQgLT5cbiAgICAgICAgICAgeW9qc29uX29mX2RlZmF1bHRfZmllbGRcbiAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgIGhvd1xuICAgICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgICAgIHBhdHRcbiAgICAgICAgICAgICBleHByXG4gICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgIHRwXG4gICAgICAgICAgICAgZGVmYXVsdFxuICAgICAgICAgICAgIGtleSlcbiAgICAgIHwgYGRyb3BfaWYgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgcGF0dFxuICAgICAgICAgIGV4cHJcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgdHBcbiAgICAgICAgICAoSW5zcGVjdF92YWx1ZSAoZnVuIGxvYyBleHByIC0+IFslZXhwciBbJWUgdGVzdF0gWyVlIGV4cHJdXSkpXG4gICAgICAgICAga2V5XG4gICAgICB8IGBrZWVwIGFzIHRlc3QgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgICAgIGxldCB2bmFtZSA9IGV2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSkgaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBga2VlcCAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIGluXG4gICAgICAgICAgICAgIChbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZykgOjogYm5kc11cbiAgICAgICAgICB8IGBvbWl0X25pbCAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIG1hdGNoIFslZSBjbnZfZXhwcl0gd2l0aFxuICAgICAgICAgICAgICB8IGBOdWxsIC0+IGJuZHNcbiAgICAgICAgICAgICAgfCBhcmcgLT4gKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICBpblxuICAgICAgICAoIHBhdHRcbiAgICAgICAgLCBbJWV4cHJcbiAgICAgICAgICBsZXQgYm5kcyA9IFslZSBibmRzXSBpblxuICAgICAgICAgIFslZSBleHByXV0gKVxuICAgIGluXG4gICAgbGV0IGluaXRfZXhwciA9IHdyYXBfZXhwciBbJWV4cHIgYm5kc10gaW5cbiAgICBsZXQgcGF0dCwgZXhwciA9IExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KFtdLCBpbml0X2V4cHIpIGZsZHMgaW5cbiAgICAoIHBwYXRfcmVjb3JkIH5sb2MgcGF0dCBDbG9zZWRcbiAgICAsIFslZXhwclxuICAgICAgbGV0IGJuZHMgOiAoc3RyaW5nICogUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50KSBsaXN0ID0gW10gaW5cbiAgICAgIFslZSBleHByXV0gKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2Ygc3VtIHR5cGVzICopXG5cbiAgbGV0IGJyYW5jaF9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgcmVuYW1pbmcgfmxvYyBjb25zdHJfbGlkIGNvbnN0cl9zdHIgYXJncyA9XG4gICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBQY3N0cl9yZWNvcmQgbGRzIC0+XG4gICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgIGxldCBwYXR0LCBleHByID1cbiAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgIGxvY1xuICAgICAgICAgIGxkc1xuICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBleHByIC0+IFslZXhwciBgTGlzdCBbIFslZSBjbnN0cl9leHByXTsgYEFzc29jIFslZSBleHByXSBdXSlcbiAgICAgIGluXG4gICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgKFNvbWUgcGF0dCkgLS0+IGV4cHJcbiAgICB8IFBjc3RyX3R1cGxlIHBjZF9hcmdzIC0+XG4gICAgICAobWF0Y2ggcGNkX2FyZ3Mgd2l0aFxuICAgICAgIHwgW10gLT5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCBOb25lIC0tPiBbJWV4cHIgYExpc3QgWyBgU3RyaW5nIFslZSBjb25zdHJfc3RyXSBdXVxuICAgICAgIHwgYXJncyAtPlxuICAgICAgICAgbGV0IHlvanNvbl9vZl9hcmdzID1cbiAgICAgICAgICAgTGlzdC5tYXAgfmY6KHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpKSBhcmdzXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgY29uc3RyX3N0cl1dIGluXG4gICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgICBsZXQgcGF0dCA9XG4gICAgICAgICAgIG1hdGNoIHBhdHRzIHdpdGhcbiAgICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgIHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0dHNcbiAgICAgICAgIGluXG4gICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgKFNvbWUgcGF0dClcbiAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV0pXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgdHBzIGNkcyA9XG4gICAgRnVuX29yX21hdGNoLk1hdGNoXG4gICAgICAoTGlzdC5tYXAgY2RzIH5mOihmdW4gY2QgLT5cbiAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLm9mX2dhZHQgdHBzIGNkIGluXG4gICAgICAgICBsZXQgY29uc3RyX2xpZCA9IExvY2F0ZWQubWFwIGxpZGVudCBjZC5wY2RfbmFtZSBpblxuICAgICAgICAgbGV0IGNvbnN0cl9uYW1lID1cbiAgICAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkIGluXG4gICAgICAgICAgIExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIHw+IGVzdHJpbmcgfmxvYzpjZC5wY2RfbmFtZS5sb2NcbiAgICAgICAgIGluXG4gICAgICAgICBicmFuY2hfc3VtXG4gICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgIHJlbmFtaW5nXG4gICAgICAgICAgIH5sb2M6Y2QucGNkX2xvY1xuICAgICAgICAgICBjb25zdHJfbGlkXG4gICAgICAgICAgIGNvbnN0cl9uYW1lXG4gICAgICAgICAgIGNkLnBjZF9hcmdzKSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCB5b2pzb25fb2ZfbmlsIGxvYyA9IEZ1bl9vcl9tYXRjaC5GdW4gWyVleHByIGZ1biBfdiAtPiBhc3NlcnQgZmFsc2VdXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgY2RzIC0+XG4gICAgICAgICAgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCAoTGlzdC5tYXAgdHBzIH5mOihmdW4geCAtPiB4LnR4dCkpIGNkc1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBsZHMgLT5cbiAgICAgICAgICBsZXQgcmVuYW1pbmcgPSBSZW5hbWluZy5pZGVudGl0eSBpblxuICAgICAgICAgIGxldCBwYXR0LCBleHByID1cbiAgICAgICAgICAgIHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0XG4gICAgICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICAgbGRzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBleHByIC0+IFslZXhwciBgQXNzb2MgWyVlIGV4cHJdXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE1hdGNoIFsgcGF0dCAtLT4gZXhwciBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgKG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHlvanNvbl9vZl9uaWwgbG9jXG4gICAgICAgICAgIHwgU29tZSB0eSAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIFJlbmFtaW5nLmlkZW50aXR5KSB0eSlcbiAgICAgIGluXG4gICAgICBsZXQgaXNfcHJpdmF0ZV9hbGlhcyA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQsIHRkLnB0eXBlX21hbmlmZXN0LCB0ZC5wdHlwZV9wcml2YXRlIHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCwgU29tZSBfLCBQcml2YXRlIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgaXNfcHJpdmF0ZV9hbGlhc1xuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFJlcGxhY2UgYWxsIHR5cGUgdmFyaWFibGUgYnkgXyB0byBhdm9pZCBnZW5lcmFsaXphdGlvbiBwcm9ibGVtcyAqKVxuICAgICAgICBsZXQgdHlfc3JjID1cbiAgICAgICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbWFuaWZlc3QgPVxuICAgICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbWFuaWZlc3QgLT4gbWFuaWZlc3RcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ5b2pzb25fb2ZfdGQvbm8tbWFuaWZlc3RcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlfZHN0ID0gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IGNvZXJjaW9uID0gWyVleHByICh2IDogWyV0IHR5X3NyY10gOj4gWyV0IHR5X2RzdF0pXSBpblxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB2IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIGNvZXJjaW9uIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBjb2VyY2lvbiBtYXRjaGluZ3NdXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGggcmVjdXJzaXZlIHR5cGVzIGJ5XG4gICAgICAgICAgIGV0YS1leHBhbmRpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKilcbiAgICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB2IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB2XSBdXV1cbiAgICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5ncylcbiAgICBpblxuICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3R5cGUgdGQgaW5cbiAgICBsZXQgZnVuY19uYW1lID0gXCJ5b2pzb25fb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX29mX1wiIF4gaWQudHh0KSkgaW5cbiAgICAgIGxldCByZWNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHR5cGVzX2JlaW5nX2RlZmluZWQgd2l0aFxuICAgICAgICB8IGBSZWN1cnNpdmUgXyAtPiBSZWN1cnNpdmVcbiAgICAgICAgfCBgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgaW5cbiAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIHBhdHRzIGJvZHkpXG4gICAgaW5cbiAgICBbIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keSBdXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl90ZHMgfmxvYyB+cGF0aDpfIChyZWNfZmxhZywgdGRzKSA9XG4gICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICBsZXQgdHlwZXNfYmVpbmdfZGVmaW5lZCA9XG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBgTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBgUmVjdXJzaXZlXG4gICAgICAgICAgKFNldC5vZl9saXN0IChtb2R1bGUgU3RyaW5nKSAoTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpKSlcbiAgICBpblxuICAgIGxldCBiaW5kaW5ncyA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHlvanNvbl9vZl90ZCB+dHlwZXNfYmVpbmdfZGVmaW5lZCkgaW5cbiAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyBiaW5kaW5nc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IGxvYyBmbGRzID1cbiAgICBsZXQgY29sbCBsZCA9XG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmxkLnBsZF9uYW1lLnR4dCAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSBsZC5wbGRfbmFtZS5sb2MgaW5cbiAgICAgIGVzdHJpbmcgfmxvYyBrZXlcbiAgICBpblxuICAgIGVsaXN0IH5sb2MgKExpc3QubWFwIH5mOmNvbGwgZmxkcylcbiAgOztcblxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl90ZCB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICB8IFB0eXBlX3JlY29yZCBsZHMgLT4geW9qc29uX2ZpZWxkc19vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IGxvYyBsZHNcbiAgICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfb3BlbiB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiB5b2pzb25fZmllbGRzIG9ubHkgd29ya3Mgb24gcmVjb3Jkc1wiXG4gICAgaW5cbiAgICBsZXQgdHlwID0gWyV0eXBlOiBzdHJpbmcgbGlzdF0gaW5cbiAgICBsZXQgZnVuY19uYW1lID0gXCJ5b2pzb25fZmllbGRzX29mX1wiIF4gdHlwZV9uYW1lIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IHBhdHRzID0gTGlzdC5tYXAgdHBzIH5mOihmdW4gaWQgLT4gcHZhciB+bG9jIChcIl9maWVsZHNfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkcyB+bG9jIH5wYXRoOl8gKF8sIHRkcykgPVxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSAoTGlzdC5tYXAgdGRzIH5mOnlvanNvbl9maWVsZHNfb2ZfdGQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24gPSBzdHJ1Y3RcbiAgKCogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbiAgKCogSGFuZGxlIGJhY2t0cmFja2luZyB3aGVuIHZhcmlhbnRzIGRvIG5vdCBtYXRjaCAqKVxuICBsZXQgaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIgPVxuICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF0gLS0+IGV4cHIgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBtYXRjaCBmb3IgdGhlIGxhc3RcbiAgICAgY2FzZSBvZiBtYXRjaGluZyBhIHZhcmlhbnQgKilcbiAgbGV0IGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoZXMgPVxuICAgIG1hdGNoIG1hdGNoX2xhc3QsIG1hdGNoZXMgd2l0aFxuICAgIHwgdHJ1ZSwgWyB7IHBjX2xocyA9IF87IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzID0gZXhwciB9IF1cbiAgICB8IF8sIFsgeyBwY19saHMgPSBbJXBhdD8gX107IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzID0gZXhwciB9IF0gLT4gZXhwclxuICAgIHwgXyAtPiBwZXhwX21hdGNoIH5sb2MgWyVleHByIGF0b21dIG1hdGNoZXNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBtYWxmb3JtZWQgWW9qc29ucyAqKVxuICBsZXQgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VscyBjYWxsID1cbiAgICBsZXQgY29sbF9zdHJ1Y3RzIGFjYyAobG9jLCBsYWJlbCkgPVxuICAgICAgKHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXG4gICAgICAgLS0+XG4gICAgICAgbWF0Y2ggY2FsbCB3aXRoXG4gICAgICAgfCBgcHRhZ19ub19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX25vX2FyZ3MgX3RwX2xvYyBfeW9qc29uXVxuICAgICAgIHwgYHB0YWdfdGFrZXNfYXJncyAtPlxuICAgICAgICAgWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIF90cF9sb2MgX3lvanNvbl0pXG4gICAgICA6OiBhY2NcbiAgICBpblxuICAgIGxldCBleGNfbm9fdmFyaWFudF9tYXRjaCA9XG4gICAgICBbJXBhdD8gX10gLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCldXG4gICAgaW5cbiAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsX3N0cnVjdHMgfmluaXQ6WyBleGNfbm9fdmFyaWFudF9tYXRjaCBdIHJldl9lbHNcbiAgOztcblxuICAoKiBTcGxpdCB0aGUgcm93IGZpZWxkcyBvZiBhIHZhcmlhbnQgdHlwZSBpbnRvIGxpc3RzIG9mIGF0b21pYyB2YXJpYW50cyxcbiAgICAgc3RydWN0dXJlZCB2YXJpYW50cywgYXRvbWljIHZhcmlhbnRzICsgaW5jbHVkZWQgdmFyaWFudCB0eXBlcyxcbiAgICAgYW5kIHN0cnVjdHVyZWQgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLiAqKVxuICBsZXQgc3BsaXRfcm93X2ZpZWxkIH5sb2MgKGF0b21zLCBzdHJ1Y3RzLCBhaW5ocywgc2luaHMpIHJvd19maWVsZCA9XG4gICAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgcm93X2ZpZWxkIGluXG4gICAgbWF0Y2ggcm93X2ZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IHRwbCA9IGxvYywgbGFiZWwgaW5cbiAgICAgIHRwbCA6OiBhdG9tcywgc3RydWN0cywgYEEgdHBsIDo6IGFpbmhzLCBzaW5oc1xuICAgIHwgUnRhZyAoY25zdHIsIGZhbHNlLCBbIHRwIF0pIC0+XG4gICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgICAgYXRvbXMsIChsb2MsIGxhYmVsKSA6OiBzdHJ1Y3RzLCBhaW5ocywgYFMgKGxvYywgbGFiZWwsIHRwLCByb3dfZmllbGQpIDo6IHNpbmhzXG4gICAgfCBSaW5oZXJpdCBpbmggLT5cbiAgICAgIGxldCBpaW5oID0gYEkgaW5oIGluXG4gICAgICBhdG9tcywgc3RydWN0cywgaWluaCA6OiBhaW5ocywgaWluaCA6OiBzaW5oc1xuICAgIHwgUnRhZyAoXywgdHJ1ZSwgWyBfIF0pIHwgUnRhZyAoXywgXywgXyA6OiBfIDo6IF8pIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInNwbGl0X3Jvd19maWVsZC8mXCJcbiAgICB8IFJ0YWcgKF8sIGZhbHNlLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHR5cGVfY29uc3RyX29mX3lvanNvbiA/KGludGVybmFsID0gZmFsc2UpIH5sb2MgaWQgYXJncyA9XG4gICAgdHlwZV9jb25zdHJfY29udiBpZCBhcmdzIH5sb2MgfmY6KGZ1biBzIC0+XG4gICAgICBsZXQgcyA9IHMgXiBcIl9vZl95b2pzb25cIiBpblxuICAgICAgaWYgaW50ZXJuYWwgdGhlbiBcIl9fXCIgXiBzIF4gXCJfX1wiIGVsc2UgcylcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHR5cGVzICopXG4gIGxldCByZWMgdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSA/KGludGVybmFsID0gZmFsc2UpIHR5cFxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGxvYyA9IHsgdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggdHlwIHdpdGhcbiAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5vcGFxdWUgdHlwKSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252Lm9wYXF1ZV9vZl95b2pzb25dXG4gICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gfCBbJXR5cGU6IF9dIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCAodHVwbGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXIgcGFybTsgXyB9IC0+XG4gICAgICAobWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgICAgfCBgb2sgLT4gRnVuIChldmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybSkpXG4gICAgICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIFwiVHlwZSB2YXJpYWJsZXMgbm90IGFsbG93ZWQgaW4gWyUlb2ZfeW9qc29uOiBdLiBQbGVhc2UgdXNlIGxvY2FsbHkgYWJzdHJhY3QgXFxcbiAgICAgICAgICAgIHR5cGVzIGluc3RlYWQuXCIpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gYXJnIC0+XG4gICAgICAgICAgRnVuX29yX21hdGNoLmV4cHIgfmxvYyAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgYXJnKSlcbiAgICAgIGluXG4gICAgICBGdW4gKHR5cGVfY29uc3RyX29mX3lvanNvbiB+bG9jIH5pbnRlcm5hbCBpZCBhcmdzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuZnVuX29mX3lvanNvbl1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IChyb3dfZmllbGRzLCBfLCBfKTsgXyB9IC0+XG4gICAgICB2YXJpYW50X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlIChsb2MsIHJvd19maWVsZHMpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAocGFybXMsIHBvbHlfdHApOyBfIH0gLT5cbiAgICAgIHBvbHlfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHBvbHlfdHBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9vYmplY3QgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jbGFzcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcGFja2FnZSBfOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gXzsgXyB9IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIlR5cGUgdW5zdXBwb3J0ZWQgZm9yIHBweCBbb2ZfeW9qc29uXSBjb252ZXJzaW9uXCJcblxuICAoKiBDb252ZXJzaW9uIG9mIHR1cGxlcyAqKVxuICBhbmQgdHVwbGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwcykgPVxuICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjoodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcpIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBmcHMgaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbJXAgcGxpc3QgfmxvYyBwYXR0c11dXG4gICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfdHVwbGUgfmxvYyB2YXJzKVxuICAgIDsgWyVwYXQ/IHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgWyVlIGVpbnQgfmxvYyBuXVxuICAgICAgICAgIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgaW5jbHVkZWQgdmFyaWFudCB0eXBlcyAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaCA9XG4gICAgbGV0IGxvYyA9IGluaC5wdHlwX2xvYyBpblxuICAgIGxldCBmdW5jX2V4cHIgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+aW50ZXJuYWw6dHJ1ZSBpbmggaW5cbiAgICBsZXQgYXBwIDogRnVuX29yX21hdGNoLnQgPVxuICAgICAgbGV0IGZ1bl9leHByID0gRnVuX29yX21hdGNoLmV4cHIgfmxvYyBmdW5jX2V4cHIgaW5cbiAgICAgIEZ1biBbJWV4cHIgWyVlIGZ1bl9leHByXSBfeW9qc29uXVxuICAgIGluXG4gICAgbGV0IG1hdGNoX2V4YyA9XG4gICAgICBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaFxuICAgICAgICBsb2NcbiAgICAgICAgKGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMpXG4gICAgaW5cbiAgICBsZXQgbmV3X290aGVyX21hdGNoZXMgPVxuICAgICAgWyBbJXBhdD8gX11cbiAgICAgICAgLS0+IHBleHBfdHJ5XG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgKFslZSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGFwcF1cbiAgICAgICAgICAgICAgICAgOj4gWyV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIGZ1bGxfdHlwZV0pXVxuICAgICAgICAgICAgICBtYXRjaF9leGNcbiAgICAgIF1cbiAgICBpblxuICAgIG5ld19vdGhlcl9tYXRjaGVzLCB0cnVlXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgYXRvbWljIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX2F0b20gfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X2F0b21zX2luaHMgfnJldl9zdHJ1Y3RzID1cbiAgICBsZXQgY29sbCAob3RoZXJfbWF0Y2hlcywgbWF0Y2hfbGFzdCkgPSBmdW5jdGlvblxuICAgICAgfCBgQSAobG9jLCBsYWJlbCkgLT5cbiAgICAgICAgbGV0IG5ld19tYXRjaCA9XG4gICAgICAgICAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAgICAtLT4gcGV4cF92YXJpYW50IH5sb2MgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgTm9uZVxuICAgICAgICBpblxuICAgICAgICBuZXdfbWF0Y2ggOjogb3RoZXJfbWF0Y2hlcywgZmFsc2VcbiAgICAgIHwgYEkgaW5oIC0+XG4gICAgICAgIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmhcbiAgICBpblxuICAgIGxldCBvdGhlcl9tYXRjaGVzID1cbiAgICAgIG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHM6cmV2X3N0cnVjdHMgYHB0YWdfdGFrZXNfYXJnc1xuICAgIGluXG4gICAgbGV0IG1hdGNoX2F0b21zX2luaHMsIG1hdGNoX2xhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDoob3RoZXJfbWF0Y2hlcywgZmFsc2UpIHJldl9hdG9tc19pbmhzXG4gICAgaW5cbiAgICBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaF9hdG9tc19pbmhzXG5cbiAgKCogVmFyaWFudCBjb252ZXJzaW9ucyAqKVxuXG4gICgqIE1hdGNoIGFyZ3VtZW50cyBvZiBjb25zdHJ1Y3RvcnMgKHZhcmlhbnRzIG9yIHN1bSB0eXBlcykgKilcbiAgYW5kIG1rX2Nuc3RyX2FyZ3NfbWF0Y2ggfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+aXNfdmFyaWFudCBsYWJlbCB0cHMgPVxuICAgIGxldCBjbnN0cl9sYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCBpblxuICAgIGxldCBjbnN0ciB2YXJzX2V4cHIgPVxuICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgdGhlbiBwZXhwX3ZhcmlhbnQgfmxvYyBjbnN0cl9sYWJlbCAoU29tZSB2YXJzX2V4cHIpXG4gICAgICBlbHNlIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIChTb21lIHZhcnNfZXhwcilcbiAgICBpblxuICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIGdvb2RfYXJnX21hdGNoID1cbiAgICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjoodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcpIHRwcyBpblxuICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICAgIGxldCBnb29kX2FyZ19tYXRjaCA9XG4gICAgICAgIGxldCB2YXJzX2V4cHIgPVxuICAgICAgICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgICAgICAgIHwgWyB2YXJfZXhwciBdIC0+IHZhcl9leHByXG4gICAgICAgICAgfCBfIC0+IHBleHBfdHVwbGUgfmxvYyB2YXJzXG4gICAgICAgIGluXG4gICAgICAgIGNuc3RyIHZhcnNfZXhwclxuICAgICAgaW5cbiAgICAgIGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2hcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgbWF0Y2ggeW9qc29uX2FyZ3Mgd2l0aFxuICAgICAgfCBbJXAgcGxpc3QgfmxvYyBwYXR0c10gLT4gWyVlIHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGdvb2RfYXJnX21hdGNoXVxuICAgICAgfCBfIC0+XG4gICAgICAgIFslZVxuICAgICAgICAgIGlmIGlzX3ZhcmlhbnRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIF90YWdcbiAgICAgICAgICAgICAgICBfeW9qc29uXV1dXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgc3RydWN0dXJlZCB2YXJpYW50cyAqKVxuICBhbmQgbWtfdmFyaWFudF9tYXRjaF9zdHJ1Y3QgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X3N0cnVjdHNfaW5ocyB+cmV2X2F0b21zXG4gICAgPVxuICAgIGxldCBoYXNfc3RydWN0c19yZWYgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgY29sbCAob3RoZXJfbWF0Y2hlcywgbWF0Y2hfbGFzdCkgPSBmdW5jdGlvblxuICAgICAgfCBgUyAobG9jLCBsYWJlbCwgdHAsIF9yb3cpIC0+XG4gICAgICAgIGhhc19zdHJ1Y3RzX3JlZiA6PSB0cnVlO1xuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgbWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdHVwbGUgdHBzIC0+IHRwc1xuICAgICAgICAgIHwgXyAtPiBbIHRwIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIG1rX2Nuc3RyX2FyZ3NfbWF0Y2hcbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+bG9jOnRwLnB0eXBfbG9jXG4gICAgICAgICAgICB+aXNfdmFyaWFudDp0cnVlXG4gICAgICAgICAgICBsYWJlbFxuICAgICAgICAgICAgYXJnc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBbJXBhdD8gWyVwIHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBhcyBfdGFnXSAtLT4gZXhwclxuICAgICAgICBpblxuICAgICAgICBuZXdfbWF0Y2ggOjogb3RoZXJfbWF0Y2hlcywgZmFsc2VcbiAgICAgIHwgYEkgaW5oIC0+XG4gICAgICAgIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmhcbiAgICBpblxuICAgIGxldCBvdGhlcl9tYXRjaGVzID0gbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfYXRvbXMgYHB0YWdfbm9fYXJncyBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3RzX2luaHMsIG1hdGNoX2xhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDoob3RoZXJfbWF0Y2hlcywgZmFsc2UpIHJldl9zdHJ1Y3RzX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX3N0cnVjdHNfaW5ocywgIWhhc19zdHJ1Y3RzX3JlZlxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIGF0b21pYyBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyAoaS5lLiBub3RcbiAgICAgaW5jbHVkZWQgdmFyaWFudCB0eXBlcykgKilcbiAgYW5kIGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZF9saXN0ID1cbiAgICBsZXQgcmV2X2F0b21zLCByZXZfc3RydWN0cywgcmV2X2F0b21zX2luaHMsIHJldl9zdHJ1Y3RzX2luaHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6KHNwbGl0X3Jvd19maWVsZCB+bG9jKSB+aW5pdDooW10sIFtdLCBbXSwgW10pIHJvd19maWVsZF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfc3RydWN0LCBoYXNfc3RydWN0cyA9XG4gICAgICBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICBpblxuICAgIGxldCBtYXliZV95b2pzb25fYXJnc19wYXR0ID0gaWYgaGFzX3N0cnVjdHMgdGhlbiBbJXBhdD8geW9qc29uX2FyZ3NdIGVsc2UgWyVwYXQ/IF9dIGluXG4gICAgWyBbJXBhdD8gYExpc3QgWyBgU3RyaW5nIGF0b20gXSBhcyBfeW9qc29uXVxuICAgICAgLS0+IG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbVxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZnVsbF90eXBlXG4gICAgICAgICAgICB+cmV2X2F0b21zX2luaHNcbiAgICAgICAgICAgIH5yZXZfc3RydWN0c1xuICAgIDsgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIGF0b20gOjogWyVwIG1heWJlX3lvanNvbl9hcmdzX3BhdHRdKSBhcyBfeW9qc29uXVxuICAgICAgLS0+IG1hdGNoX3N0cnVjdFxuICAgIDsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIHlvanNvbl1cbiAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIHlvanNvbl1cbiAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgXVxuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHZhcmlhbnRzICopXG4gIGFuZCB2YXJpYW50X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlIChsb2MsIHJvd19maWVsZHMpID1cbiAgICBsZXQgaXNfY29udGFpbmVkLCBmdWxsX3R5cGUgPVxuICAgICAgbWF0Y2ggZnVsbF90eXBlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBwdHlwX3ZhcmlhbnQgfmxvYyByb3dfZmllbGRzIENsb3NlZCBOb25lXG4gICAgICB8IFNvbWUgZnVsbF90eXBlIC0+IGZhbHNlLCBmdWxsX3R5cGVcbiAgICBpblxuICAgIGxldCB0b3BfbWF0Y2ggPVxuICAgICAgbWF0Y2ggcm93X2ZpZWxkcyB3aXRoXG4gICAgICB8IHsgcHJmX2Rlc2MgPSBSaW5oZXJpdCBpbmg7IF8gfSA6OiByZXN0IC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBpbmggcm93X2ZpZWxkcyA9XG4gICAgICAgICAgbGV0IGNhbGwgPVxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIChbJWVcbiAgICAgICAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwclxuICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCldXG4gICAgICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICAgOj4gWyV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIGZ1bGxfdHlwZV0pXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcm93X2ZpZWxkcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBjYWxsXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIGxldCBleHByID1cbiAgICAgICAgICAgICAgbWF0Y2ggaC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgaW5oIC0+IGxvb3AgaW5oIHRcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJmdGFnX21hdGNoZXMgPVxuICAgICAgICAgICAgICAgICAgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIHJmdGFnX21hdGNoZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwZXhwX3RyeSB+bG9jIGNhbGwgKGhhbmRsZV9ub192YXJpYW50X21hdGNoIGxvYyBleHByKVxuICAgICAgICBpblxuICAgICAgICBbIFslcGF0PyB5b2pzb25dIC0tPiBsb29wIGluaCByZXN0IF1cbiAgICAgIHwgXyA6OiBfIC0+IGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZHNcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBpbXBvc3NpYmxlICopXG4gICAgaW5cbiAgICBpZiBpc19jb250YWluZWRcbiAgICB0aGVuXG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICAgICAgdHJ5IFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gdG9wX21hdGNoXSB3aXRoXG4gICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgeW9qc29uXVxuICAgIGVsc2UgTWF0Y2ggdG9wX21hdGNoXG5cbiAgYW5kIHBvbHlfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHRwID1cbiAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgbGV0IG1rX2JpbmRpbmcgcGFybSA9XG4gICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICB+bG9jXG4gICAgICAgICAgfnBhdDoocHZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0udHh0KSlcbiAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfcG9seV9maWVsZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgaW5cbiAgICAgIExpc3QubWFwIH5mOm1rX2JpbmRpbmcgcGFybXNcbiAgICBpblxuICAgIG1hdGNoIHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHRwIHdpdGhcbiAgICB8IEZ1biBmdW5fZXhwciAtPiBGdW4gKHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGZ1bl9leHByKVxuICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+XG4gICAgICBNYXRjaFxuICAgICAgICBbIFslcGF0PyBhcmddXG4gICAgICAgICAgLS0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgZXh0cmFjdGluZyByZWNvcmQgZmllbGRzICopXG4gIGxldCBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpID1cbiAgICBsZXQgcmVjIGxvb3AgaW5pdHMgbm9fYXJncyBhcmdzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaW5pdHMsIG5vX2FyZ3MsIGFyZ3NcbiAgICAgIHwgbGQgOjogbW9yZV9mbGRzIC0+XG4gICAgICAgIGxldCBsb2MgPSBsZC5wbGRfbmFtZS5sb2MgaW5cbiAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgIGxldCBrZXkgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bm0gKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZCkgaW5cbiAgICAgICAgKG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCwgbGQucGxkX3R5cGUgd2l0aFxuICAgICAgICAgfCBTb21lIChgeW9qc29uX29wdGlvbiB0cCksIF8gfCAoTm9uZSB8IFNvbWUgKGBkZWZhdWx0IF8pKSwgdHAgLT5cbiAgICAgICAgICAgbGV0IGluaXRzID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmVdIDo6IGluaXRzIGluXG4gICAgICAgICAgIGxldCB1bnJvbGxlZCA9XG4gICAgICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgWyVleHByIF9maWVsZF95b2pzb25dXG4gICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHApXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICAgICAocHN0cmluZyB+bG9jIGtleVxuICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlID0gWyVlIHVucm9sbGVkXSBpblxuICAgICAgICAgICAgICAgICAgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1cbiAgICAgICAgICAgICAgICAgIDo9IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgZnZhbHVlXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXMgOj0gZmllbGRfbmFtZSA6OiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXNdKVxuICAgICAgICAgICAgIDo6IGFyZ3NcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgbW9yZV9mbGRzKVxuICAgIGluXG4gICAgbGV0IGhhbmRsZV9leHRyYSA9XG4gICAgICBbIChbJXBhdD8gX11cbiAgICAgICAgIC0tPlxuICAgICAgICAgaWYgYWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgICB0aGVuIFslZXhwciAoKV1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgaWYgUHB4X3lvanNvbl9jb252X2xpYi4oICEgKVxuICAgICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgdGhlbiBleHRyYSA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmFcbiAgICAgICAgICAgICBlbHNlICgpXSlcbiAgICAgIF1cbiAgICBpblxuICAgIGxvb3AgW10gaGFuZGxlX2V4dHJhIGhhbmRsZV9leHRyYSAoTGlzdC5yZXYgZmxkcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2hhbmRsZV9yZWNvcmRfbWF0Y2hfcmVzdWx0IGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHIgPVxuICAgIGxldCBoYXNfbm9ub3B0X2ZpZWxkcyA9IHJlZiBmYWxzZSBpblxuICAgIGxldCByZXNfdHBscywgYmlfbHN0LCBnb29kX3BhdHRzID1cbiAgICAgIGxldCByZWMgbG9vcCAoKHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgICAgICB8ICh7IHBsZF9uYW1lID0geyB0eHQgPSBubTsgbG9jIH07IF8gfSBhcyBsZCkgOjogbW9yZV9mbGRzIC0+XG4gICAgICAgICAgbGV0IGZsZCA9IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildXSBpblxuICAgICAgICAgIGxldCBta19kZWZhdWx0IGxvYyA9XG4gICAgICAgICAgICBiaV9sc3QsIFslcGF0PyBbJXAgcHZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXV0gOjogZ29vZF9wYXR0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IF8gfCBgeW9qc29uX29wdGlvbiBfKSAtPiBta19kZWZhdWx0IGxvY1xuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGhhc19ub25vcHRfZmllbGRzIDo9IHRydWU7XG4gICAgICAgICAgICAgICggWyVleHByXG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIFslZSBmbGRdIFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgLCBbJWUgZXN0cmluZyB+bG9jIG5tXV1cbiAgICAgICAgICAgICAgICA6OiBiaV9sc3RcbiAgICAgICAgICAgICAgLCBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBbJXAgcHZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXV1cbiAgICAgICAgICAgICAgICA6OiBnb29kX3BhdHRzIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBhY2MgPSBbJWV4cHIgWyVlIGZsZF1dIDo6IHJlc190cGxzLCBuZXdfYmlfbHN0LCBuZXdfZ29vZF9wYXR0cyBpblxuICAgICAgICAgIGxvb3AgYWNjIG1vcmVfZmxkc1xuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgKFtdLCBbXSwgW10pIChMaXN0LnJldiBmbGRzKVxuICAgIGluXG4gICAgbGV0IG1hdGNoX2dvb2RfZXhwciA9XG4gICAgICBpZiBoYXNfcG9seVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjbnZ0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBfIH07IF8gfSAtPiBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggTGlzdC5tYXAgfmY6Y252dCBmbGRzIHdpdGhcbiAgICAgICAgfCBbIG1hdGNoX2dvb2RfZXhwciBdIC0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICB8IG1hdGNoX2dvb2RfZXhwcnMgLT4gcGV4cF90dXBsZSB+bG9jIG1hdGNoX2dvb2RfZXhwcnMpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNudnQgbGQgPVxuICAgICAgICAgIGxldCBubSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChgZGVmYXVsdCBkZWZhdWx0KSAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBbJWUgZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+IFslZSBkZWZhdWx0XVxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+IHZdXG4gICAgICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIF8pIHwgTm9uZSAtPiBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIExvY2F0ZWQubGlkZW50IH5sb2Mgbm0sIHZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIHdyYXBfZXhwciAocGV4cF9yZWNvcmQgfmxvYyAoTGlzdC5tYXAgfmY6Y252dCBmbGRzKSBOb25lKSlcbiAgICBpblxuICAgIGxldCBleHByLCBwYXR0ID1cbiAgICAgIG1hdGNoIHJlc190cGxzLCBnb29kX3BhdHRzIHdpdGhcbiAgICAgIHwgWyByZXNfZXhwciBdLCBbIHJlc19wYXR0IF0gLT4gcmVzX2V4cHIsIHJlc19wYXR0XG4gICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHJlc190cGxzLCBwcGF0X3R1cGxlIH5sb2MgZ29vZF9wYXR0c1xuICAgIGluXG4gICAgaWYgIWhhc19ub25vcHRfZmllbGRzXG4gICAgdGhlblxuICAgICAgcGV4cF9tYXRjaFxuICAgICAgICB+bG9jXG4gICAgICAgIGV4cHJcbiAgICAgICAgWyBwYXR0IC0tPiBtYXRjaF9nb29kX2V4cHJcbiAgICAgICAgOyBbJXBhdD8gX11cbiAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF91bmRlZmluZWRfZWxlbWVudHNcbiAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgICAgWyVlIGVsaXN0IH5sb2MgYmlfbHN0XV1cbiAgICAgICAgXVxuICAgIGVsc2UgcGV4cF9tYXRjaCB+bG9jIGV4cHIgWyBwYXR0IC0tPiBtYXRjaF9nb29kX2V4cHIgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGNvbnZlcnRpbmcgcmVjb3JkIGZpZWxkcyAqKVxuXG4gIGxldCBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGV4cHJfcmVmX2luaXRzLCBfbWNfbm9fYXJnc19maWVsZHMsIG1jX2ZpZWxkc193aXRoX2FyZ3MgPVxuICAgICAgbWtfZXh0cmFjdF9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKVxuICAgIGluXG4gICAgbGV0IGZpZWxkX3JlZnMgPVxuICAgICAgTGlzdC5tYXAyX2V4blxuICAgICAgICBmbGRzXG4gICAgICAgIGV4cHJfcmVmX2luaXRzXG4gICAgICAgIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSBpbml0IC0+XG4gICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyAobmFtZSBeIFwiX2ZpZWxkXCIpKSB+ZXhwcjpbJWV4cHIgcmVmIFslZSBpbml0XV0pXG4gICAgaW5cbiAgICBwZXhwX2xldFxuICAgICAgfmxvY1xuICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAoZmllbGRfcmVmc1xuICAgICAgIEAgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZHVwbGljYXRlc10gfmV4cHI6WyVleHByIHJlZiBbXV1cbiAgICAgICAgIDsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6WyVwYXQ/IGV4dHJhXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgXSlcbiAgICAgIFslZXhwclxuICAgICAgICBsZXQgcmVjIGl0ZXIgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgcGV4cF9mdW5jdGlvblxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIFsgWyVwYXQ/IChmaWVsZF9uYW1lLCBfZmllbGRfeW9qc29uKSA6OiB0YWlsXVxuICAgICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICAgIFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIGZpZWxkX25hbWVdIG1jX2ZpZWxkc193aXRoX2FyZ3NdO1xuICAgICAgICAgICAgICAgICAgaXRlciB0YWlsXVxuICAgICAgICAgICAgICA7IFslcGF0PyBbXV0gLS0+IFslZXhwciAoKV1cbiAgICAgICAgICAgICAgXV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciBmaWVsZF95b2pzb25zO1xuICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXMgd2l0aFxuICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2R1cGxpY2F0ZV9maWVsZHNcbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIChQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXMpXG4gICAgICAgICAgICB5b2pzb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIChtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhIHdpdGhcbiAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgIChQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhKVxuICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgIHwgW10gLT4gWyVlIG1rX2hhbmRsZV9yZWNvcmRfbWF0Y2hfcmVzdWx0IGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHJdKV1cbiAgOztcblxuICBsZXQgaXNfcG9seSAoXywgZmxkcykgPVxuICAgIExpc3QuZXhpc3RzIGZsZHMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IHsgcGxkX3R5cGUgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH07IF8gfSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgbG9jXG4gICAgICAgIGZsZHNcbiAgICAgICAgfndyYXBfZXhwclxuICAgID1cbiAgICBsZXQgaGFzX3BvbHkgPSBpc19wb2x5IChsb2MsIGZsZHMpIGluXG4gICAgbGV0IGNudl9maWVsZHMgPVxuICAgICAgbWtfY252X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHJcbiAgICBpblxuICAgIGlmIGhhc19wb2x5XG4gICAgdGhlbiAoXG4gICAgICBsZXQgcGF0dCA9XG4gICAgICAgIGxldCBwYXRzID1cbiAgICAgICAgICBMaXN0Lm1hcCBmbGRzIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSAtPiBwdmFyIH5sb2MgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcGF0cyB3aXRoXG4gICAgICAgIHwgWyBwYXQgXSAtPiBwYXRcbiAgICAgICAgfCBwYXRzIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXRzXG4gICAgICBpblxuICAgICAgbGV0IHJlY29yZF9kZWYgPVxuICAgICAgICB3cmFwX2V4cHJcbiAgICAgICAgICAocGV4cF9yZWNvcmRcbiAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgKExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+XG4gICAgICAgICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSkpXG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgIGluXG4gICAgICBwZXhwX2xldFxuICAgICAgICB+bG9jXG4gICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OnBhdHQgfmV4cHI6Y252X2ZpZWxkcyBdXG4gICAgICAgIHJlY29yZF9kZWYpXG4gICAgZWxzZSBjbnZfZmllbGRzXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgcmVjb3JkcyAqKVxuICBsZXQgcmVjb3JkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIE1hdGNoXG4gICAgICBbIFslcGF0PyBgQXNzb2MgZmllbGRfeW9qc29ucyBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBmbGRzXG4gICAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biB4IC0+IHgpXG4gICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tXG4gICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICB5b2pzb25dXG4gICAgICBdXG4gIDs7XG5cbiAgKCogU3VtIHR5cGUgY29udmVyc2lvbnMgKilcbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igd2VsbC1mb3JtZWQgWW9qc29ucyB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfZ29vZF9zdW1fbWF0Y2hlcyB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBjZHMpID1cbiAgICBMaXN0Lm1hcCBjZHMgfmY6KGZ1biAoY2QsIGxhYmVsKSAtPlxuICAgICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl9yZWNvcmQgZmllbGRzOyBfIH0gLT5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc19jZCBjZCkpXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGZpZWxkc1xuICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgZSkpXG4gICAgICAgIGluXG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgWyBgU3RyaW5nIChbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIF90YWcpOyBgQXNzb2MgZmllbGRfeW9qc29ucyBdXG4gICAgICAgICAgYXMgeW9qc29uXVxuICAgICAgICAtLT4gZXhwclxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgW107IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBdXVxuICAgICAgICAtLT4gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgTm9uZVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXyBhcyB0cHMpOyBfIH0gLT5cbiAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIGNkO1xuICAgICAgICBbJXBhdD9cbiAgICAgICAgICAgICAgIGBMaXN0IChgU3RyaW5nIChbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIF90YWcpIDo6IHlvanNvbl9hcmdzKSBhcyBfeW9qc29uXVxuICAgICAgICAtLT4gbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50OmZhbHNlIGxhYmVsIHRwcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBtYWxmb3JtZWQgWW9qc29ucyB3aXRoIGdvb2QgdGFnc1xuICAgICB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgTGlzdCAoYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBfdHBfbG9jIHlvanNvbl1cbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8pIHwgUGNzdHJfcmVjb3JkIF87IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBfdHBfbG9jIHlvanNvbl0pXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igc3VtIHR5cGVzICopXG4gIGxldCBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIGxldCBhbHRzID1cbiAgICAgIExpc3QubWFwIGFsdHMgfmY6KGZ1biBjZCAtPiBjZCwgTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkKVxuICAgIGluXG4gICAgTWF0Y2hcbiAgICAgIChMaXN0LmNvbmNhdFxuICAgICAgICAgWyBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpXG4gICAgICAgICA7IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBbIFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgICAgICAgIF1cbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgbmlsX29mX3lvanNvbiBsb2MgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgRnVuXG4gICAgICBbJWV4cHJcbiAgICAgICAgZnVuIHlvanNvbiAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X3R5cGUgX3RwX2xvYyB5b2pzb25dXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2M6XyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBmdWxsX3R5cGUgPVxuICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICBpblxuICAgIGxldCBpc19wcml2YXRlID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgfCBQcml2YXRlIC0+IHRydWVcbiAgICAgIHwgUHVibGljIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19wcml2YXRlXG4gICAgdGhlbiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm9mX3lvanNvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRlIHR5cGVcIjtcbiAgICBsZXQgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uID1cbiAgICAgIG1hdGNoIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186ZmFsc2Ugd2l0aFxuICAgICAgfCBgRGVmaW5pdGVseSAtPiB0cnVlXG4gICAgICB8IGBNYXliZSAtPiBwb2x5XG4gICAgICB8IGBTdXJlbHlfbm90IC0+XG4gICAgICAgIGlmIHBvbHlcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgXCJ5b2pzb25fcG9seSBhbm5vdGF0aW9uIG9uIGEgdHlwZSB0aGF0IGlzIHN1cmVseSBub3QgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCI7XG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYWx0cyAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nICh0ZC5wdHlwZV9sb2MsIGFsdHMpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxibHMgLT5cbiAgICAgICAgICByZWNvcmRfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc190ZCB0ZCkpXG4gICAgICAgICAgICAobG9jLCBsYmxzKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbmlsX29mX3lvanNvbiB0ZC5wdHlwZV9sb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgICAgICAgdHlwZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgIH5mdWxsX3R5cGVcbiAgICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgICB+aW50ZXJuYWw6Y3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgICAgICAgICB0eSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoXG4gICAgICAgICByZWN1cnNpdmUgdHlwZXMgYnkgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB0IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB0XSBdXV1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9uYW1lID0gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICBsZXQgaW50ZXJuYWxfbmFtZSA9IFwiX19cIiBeIHR5cGVfbmFtZSBeIFwiX29mX3lvanNvbl9fXCIgaW5cbiAgICBsZXQgYXJnX3BhdHRzLCBhcmdfZXhwcnMgPVxuICAgICAgTGlzdC51bnppcFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgIGxldCBuYW1lID0gXCJfb2ZfXCIgXiB0cC50eHQgaW5cbiAgICAgICAgICAgICBwdmFyIH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpXG4gICAgICAgICAgIHRwcylcbiAgICBpblxuICAgIGxldCBiaW5kX3RwX2xvY19pbiA9XG4gICAgICBsZXQgZnVsbF90eXBlX25hbWUgPSBQcmludGYuc3ByaW50ZiBcIiVzLiVzXCIgcGF0aCB0eXBlX25hbWUgaW5cbiAgICAgIGZ1biBlIC0+XG4gICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT5cbiAgICAgICAgICAoKiB3ZSBkZWZpbml0ZWx5IGRvbid0IHVzZSB0aGUgc3RyaW5nLCBzbyBjbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgYSBiaXQgKilcbiAgICAgICAgICBlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICAgICAgWyVlIGVdXVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgdGhlblxuICAgICAgICBTb21lXG4gICAgICAgICAgKGJpbmRfdHBfbG9jX2luXG4gICAgICAgICAgICAgKGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5KSkpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBsZXQgbmVlZF90cF9sb2MsIGJvZHlfYmVsb3dfbGFtYmRhcyA9XG4gICAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbm9fdmFyaWFudF9tYXRjaF9tYyA9XG4gICAgICAgICAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdXG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBpbnRlcm5hbF9jYWxsID1cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbF9leHByID0gZXZhciB+bG9jIGludGVybmFsX25hbWUgaW5cbiAgICAgICAgICAgIGVhcHBseSB+bG9jIGludGVybmFsX2V4cHIgKGFyZ19leHBycyBAIFsgWyVleHByIHlvanNvbl0gXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cnlfd2l0aCA9IHBleHBfdHJ5IH5sb2MgaW50ZXJuYWxfY2FsbCBub192YXJpYW50X21hdGNoX21jIGluXG4gICAgICAgICAgZmFsc2UsIGJpbmRfdHBfbG9jX2luIFslZXhwciBmdW4geW9qc29uIC0+IFslZSB0cnlfd2l0aF1dKVxuICAgICAgICBlbHNlIHRydWUsIGJvZHlcbiAgICAgIGluXG4gICAgICBsZXQgYm9keV93aXRoX2xhbWJkYXMgPVxuICAgICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbiAgICAgICAgICB+cmVjX2ZsYWdcbiAgICAgICAgICAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHlfYmVsb3dfbGFtYmRhcylcbiAgICAgIGluXG4gICAgICBpZiBuZWVkX3RwX2xvYyB0aGVuIGJpbmRfdHBfbG9jX2luIGJvZHlfd2l0aF9sYW1iZGFzIGVsc2UgYm9keV93aXRoX2xhbWJkYXNcbiAgICBpblxuICAgIGxldCBta19iaW5kaW5nIGZ1bmNfbmFtZSBib2R5ID1cbiAgICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3R5cGUgdGQgaW5cbiAgICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2JpbmRpbmdzID1cbiAgICAgIG1hdGNoIGludGVybmFsX2Z1bl9ib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGJvZHkgLT4gWyBta19iaW5kaW5nIGludGVybmFsX25hbWUgYm9keSBdXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfYmluZGluZyA9IG1rX2JpbmRpbmcgZXh0ZXJuYWxfbmFtZSBleHRlcm5hbF9mdW5fYm9keSBpblxuICAgIGludGVybmFsX2JpbmRpbmdzLCBbIGV4dGVybmFsX2JpbmRpbmcgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG4gIGxldCB0ZHNfb2ZfeW9qc29uIH5sb2MgfnBvbHkgfnBhdGggKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgdHlwZXZhcl9oYW5kbGluZyA9IGBvayBpblxuICAgIGxldCBzaW5nbGV0b24gPVxuICAgICAgbWF0Y2ggdGRzIHdpdGhcbiAgICAgIHwgWyBfIF0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBzaW5nbGV0b25cbiAgICB0aGVuIChcbiAgICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgICBpblxuICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBSZWN1cnNpdmUgYmluZGluZ3NcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBpbnRlcm5hbHNcbiAgICAgICAgICBAIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBleHRlcm5hbHMpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cG9seSB+bG9jIH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgaW5cbiAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzKVxuICA7O1xuXG4gIGxldCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cGF0aCBjdHlwID1cbiAgICBsZXQgbG9jID0geyBjdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IGZwID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgY3R5cCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBbJWUgZnVuX2V4cHJdIHlvanNvbl1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzIGxpbmUgJWk6ICVzXCJcbiAgICAgICAgcGF0aFxuICAgICAgICBsb2MubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgICAgIChzdHJpbmdfb2ZfY29yZV90eXBlIGN0eXApXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICBbJWUgYm9keV1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YudHlwZV9vZl95b2pzb25fb2YgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSB0eSA9XG4gICAgU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgdHlcbiAgICB8PiBGdW5fb3JfbWF0Y2guZXhwciB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdGRzXG5lbmRcblxubW9kdWxlIFlvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcy55b2pzb25fZmllbGRzX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2Zfb2ZfeW9qc29uIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgPVxuICAgIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udGRzX29mX3lvanNvblxuZW5kXG5cbm1vZHVsZSBTaWdfeW9qc29uID0gc3RydWN0XG4gIGxldCBta19zaWcgfmxvYyB+cGF0aCBkZWNscyA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICAgIEAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWcgfnBvbHk6ZmFsc2UgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsIH5sb2MgfnBhdGggKChfcmYsIHRkcykgYXMgZGVjbHMpID1cbiAgICBtYXRjaFxuICAgICAgbWtfbmFtZWRfc2lnXG4gICAgICAgIH5sb2NcbiAgICAgICAgfnNnX25hbWU6XCJQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbmFibGUuU1wiXG4gICAgICAgIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudDpmYWxzZVxuICAgICAgICB0ZHNcbiAgICB3aXRoXG4gICAgfCBTb21lIGluY2x1ZGVfaW5mb3MgLT4gWyBwc2lnX2luY2x1ZGUgfmxvYyBpbmNsdWRlX2luZm9zIF1cbiAgICB8IE5vbmUgLT4gbWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICB0eXBlIHJlZGlyZWN0aW9uXG5cbiAgZXh0ZXJuYWwgcmVkaXJlY3RfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IGludG86b3V0X2NoYW5uZWwgLT4gcmVkaXJlY3Rpb25cbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XCJcblxuICBleHRlcm5hbCByZXN0b3JlX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvbiAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBieXRlcyA9IFwiY2FtbF9ieXRlc19vZl9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IGJ5dGVzIC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1wiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBibG9iID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBibG9iIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV93aXRoQ29udGVudFR5cGUgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IGJsb2IgdCBtZXRoXG5lbmRcblxubGV0IGJsb2JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9CbG9iXG5cbnR5cGUgJ2EgbWFrZV9ibG9iID1cbiAgP2NvbnRlbnRUeXBlOnN0cmluZyAtPiA/ZW5kaW5nczpbIGBUcmFuc3BhcmVudCB8IGBOYXRpdmUgXSAtPiAnYSAtPiBibG9iIHRcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxubGV0IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgPVxuICBsZXQgb3B0aW9ucyA9XG4gICAgZmlsdGVyX21hcFxuICAgICAgKGZ1biAobmFtZSwgdikgLT5cbiAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+IFNvbWUgKG5hbWUsIFVuc2FmZS5pbmplY3QgKHN0cmluZyB2KSkpXG4gICAgICBbIFwidHlwZVwiLCBjb250ZW50VHlwZVxuICAgICAgOyAoIFwiZW5kaW5nc1wiXG4gICAgICAgICwgbWF0Y2ggZW5kaW5ncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgYFRyYW5zcGFyZW50IC0+IFNvbWUgXCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgfCBTb21lIGBOYXRpdmUgLT4gU29tZSBcIm5hdGl2ZVwiIClcbiAgICAgIF1cbiAgaW5cbiAgbWF0Y2ggb3B0aW9ucyB3aXRoXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgbCAtPiBVbnNhZmUub2JqIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgYSA9XG4gIGxldCBvcHRpb25zID0gbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyBpblxuICBuZXclanMgYmxvYl9jb25zdHIgKGFycmF5IGEpIG9wdGlvbnNcblxubGV0IGJsb2JfZnJvbV9zdHJpbmcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIHMgPVxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgW3wgc3RyaW5nIHMgfF1cblxubGV0IGJsb2JfZnJvbV9hbnkgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGwgPVxuICBsZXQgbCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IGBhcnJheUJ1ZmZlciBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBhcnJheUJ1ZmZlclZpZXcgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpXG4gICAgICAgIHwgYGpzX3N0cmluZyBzIC0+IFVuc2FmZS5pbmplY3Qgc1xuICAgICAgICB8IGBibG9iIGIgLT4gVW5zYWZlLmluamVjdCBiKVxuICAgICAgbFxuICBpblxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgKEFycmF5Lm9mX2xpc3QgbClcblxuY2xhc3MgdHlwZSBmaWxlID0gb2JqZWN0XG4gIGluaGVyaXQgYmxvYlxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0TW9kaWZpZWREYXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGluIGZpcmVmb3ggMy4wLTMuNSBmaWxlLm5hbWUgaXMgbm90IGF2YWlsYWJsZSwgd2UgdXNlIHRoZSBub25zdGFuZGFyZCBmaWxlTmFtZSBpbnN0ZWFkICopXG5jbGFzcyB0eXBlIGZpbGVfbmFtZV9vbmx5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZU5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBmaWxlbmFtZSBmaWxlID1cbiAgbGV0IGZpbGUgOiBmaWxlX25hbWVfb25seSB0ID0gSnMuVW5zYWZlLmNvZXJjZSBmaWxlIGluXG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLm5hbWUgd2l0aFxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMuZmlsZU5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2FuJ3QgcmV0cmlldmUgZmlsZSBuYW1lOiBub3QgaW1wbGVtZW50ZWRcIlxuICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZSlcbiAgfCBTb21lIG5hbWUgLT4gbmFtZVxuXG50eXBlIGZpbGVfYW55ID0gPCA+IHRcblxubGV0IGRvY19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RvY3VtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBleHRlcm5hbCBqc29uIDogZmlsZV9hbnkgLT4gJ2EgT3B0LnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IGRvY3VtZW50IChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgZG9jX2NvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogZWxlbWVudCBkb2N1bWVudCB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBibG9iIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgYmxvYl9jb25zdHIgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiAjYmxvYiB0KSBlbHNlIEpzLm51bGxcblxuICBsZXQgc3RyaW5nIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiBlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBqc19zdHJpbmcgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXJyYXlCdWZmZXIgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdClcbiAgICBlbHNlIEpzLm51bGxcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVMaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2ZpbGVdIERvbS5ub2RlTGlzdFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvZ3Jlc3NFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgbGVuZ3RoQ29tcHV0YWJsZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvYWRlZCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvdGFsIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByb2dyZXNzRXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlbmQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgRU1QVFlcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG5jbGFzcyB0eXBlIGZpbGVSZWFkZXIgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgcmVhZEFzQXJyYXlCdWZmZXIgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNCaW5hcnlTdHJpbmcgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0IDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgOiAjYmxvYiB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNEYXRhVVJMIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXN1bHQgOiBmaWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogZmlsZUVycm9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIGluaGVyaXQgcHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBSZWFkZXJFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IGZpbGVSZWFkZXIgcHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgbG9hZHN0YXJ0ID0gRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBFdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IEV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBFdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBFdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxubGV0IGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GaWxlUmVhZGVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY2FtbF9qc19vbl9pZSA6IHVuaXQgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX29uX2llXCJcblxubGV0IG9uSUUgPSBKcy50b19ib29sIChjYW1sX2pzX29uX2llICgpKVxuXG5leHRlcm5hbCBodG1sX2VzY2FwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZXNjYXBlXCJcblxuZXh0ZXJuYWwgZGVjb2RlX2h0bWxfZW50aXRpZXMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VudGl0aWVzXCJcblxuY2xhc3MgdHlwZSBjc3NTdHlsZURlY2xhcmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBzZXRQcm9wZXJ0eSA6XG4gICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlWYWx1ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlQcmlvcml0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUHJvcGVydHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGVsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRHVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkZpbGxNb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25JdGVyYXRpb25Db3VudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uUGxheVN0YXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25UaW1pbmdGdW5jdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEF0dGFjaG1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRSZXBlYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21Db2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xsYXBzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJhZGl1cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlcldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNhcHRpb25TaWRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJJbmNyZW1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJSZXNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzRmxvYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc1RleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnNvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNwbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbXB0eUNlbGxzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250RmFtaWx5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U2l6ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250VmFyaWFudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFdlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZXR0ZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZUltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Cb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Ub3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heEhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wYWNpdHkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVPZmZzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvdyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dYIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1kgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0FmdGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtCZWZvcmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJFdmVudHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFibGVMYXlvdXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFuY2hvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dERlY29yYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRJbmRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRUcmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2ZXJ0aWNhbEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aXNpYmlsaXR5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aGl0ZVNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd29yZFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHpJbmRleCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYikgRG9tLmV2ZW50X2xpc3RlbmVyXG5cbnR5cGUgbW91c2VfYnV0dG9uID1cbiAgfCBOb19idXR0b25cbiAgfCBMZWZ0X2J1dHRvblxuICB8IE1pZGRsZV9idXR0b25cbiAgfCBSaWdodF9idXR0b25cblxudHlwZSBkZWx0YV9tb2RlID1cbiAgfCBEZWx0YV9waXhlbFxuICB8IERlbHRhX2xpbmVcbiAgfCBEZWx0YV9wYWdlXG5cbmNsYXNzIHR5cGUgZXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmV2ZW50XG5lbmRcblxuYW5kIFsnYV0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudCwgJ2FdIERvbS5jdXN0b21FdmVudFxuZW5kXG5cbmFuZCBmb2N1c0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidXR0b24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IG1vdXNlX2J1dHRvbiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcm9tRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBrZXlib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJDb2RlIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleUNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRNb2RpZmllclN0YXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qga2V5SWRlbnRpZmllciA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNld2hlZWxFdmVudCA9IG9iamVjdFxuICAoKiBBbGwgbW9kZXJuIGJyb3dzZXJzICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFNb2RlIDogZGVsdGFfbW9kZSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlU2Nyb2xsRXZlbnQgPSBvYmplY3RcbiAgKCogRmlyZWZveCAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXhpcyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSE9SSVpPTlRBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJUSUNBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCB0b3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFuZ2VkVG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiB0b3VjaCB0IG9wdGRlZiBtZXRoXG5lbmRcblxuYW5kIHRvdWNoID0gb2JqZWN0XG4gIG1ldGhvZCBpZGVudGlmaWVyIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3VibWl0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdWJtaXR0ZXIgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZHJhZ0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkYXRhVHJhbnNmZXIgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaXBib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgY2xpcGJvYXJkRGF0YSA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZGF0YVRyYW5zZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBkcm9wRWZmZWN0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlZmZlY3RBbGxvd2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR5cGVzIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZEVsZW1lbnQgOiBlbGVtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGFfYWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RHJhZ0ltYWdlIDogZWxlbWVudCB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGV2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9uY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRibGNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZWRvd24gOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNldXAgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3ZlciA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vtb3ZlIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW91dCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5cHJlc3MgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleWRvd24gOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXVwIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zY3JvbGwgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253aGVlbCA6ICgnc2VsZiB0LCBtb3VzZXdoZWVsRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnc3RhcnQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VuZCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW50ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ292ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2xlYXZlIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWcgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJvcCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25zdGFydCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmVuZCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbml0ZXJhdGlvbiA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25ydW4gOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnN0YXJ0IDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25lbmQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25nb3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb3N0cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmVudGVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJjYW5jZWwgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmRvd24gOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmxlYXZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJtb3ZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdXQgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm92ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcnVwIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNwYXRjaEV2ZW50IDogZXZlbnQgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbmFuZCBwb3BTdGF0ZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgcG9pbnRlckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBwb2ludGVySWQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFuZ2VudGlhbFByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRZIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHdpc3QgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyVHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNQcmltYXJ5IDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVybCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcmFnZUFyZWEgOiBzdG9yYWdlIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgaGFzaENoYW5nZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgb2xkVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGFuaW1hdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRyYW5zaXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHByb3BlcnR5TmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1lZGlhRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuZW5kXG5cbmFuZCBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzb3VyY2UgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG5vZGVTZWxlY3RvciA9IG9iamVjdFxuICBtZXRob2QgcXVlcnlTZWxlY3RvciA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yQWxsIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5lbmRcblxuYW5kIHRva2VuTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGFkZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdG9nZ2xlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZpZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc05hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTGlzdCA6IHRva2VuTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2VzdCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzdHlsZSA6IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0ZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0Q29udGVudCA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVyVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpZW50TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFBhcmVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcm9sbExlZnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxUb3AgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxXaWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbEhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGdldENsaWVudFJlY3RzIDogY2xpZW50UmVjdExpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA6IGNsaWVudFJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEludG9WaWV3IDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGljayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB0b3AgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpZW50UmVjdExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gY2xpZW50UmVjdCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IERvbS5ub19oYW5kbGVyXG5cbmxldCBoYW5kbGVyID0gRG9tLmhhbmRsZXJcblxubGV0IGZ1bGxfaGFuZGxlciA9IERvbS5mdWxsX2hhbmRsZXJcblxubGV0IGludm9rZV9oYW5kbGVyID0gRG9tLmludm9rZV9oYW5kbGVyXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9ICdhIERvbS5FdmVudC50eXBcblxuICBsZXQgY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5jZWxcIlxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjbG9zZSA9IERvbS5FdmVudC5tYWtlIFwiY2xvc2VcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaWFsb2dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZV9yZXR1cm5WYWx1ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvcGVuXyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJldHVyblZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaG93IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNob3dNb2RhbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNhbmNlbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZGl2RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBwYXJhZ3JhcGhFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRpbmdFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHF1b3RlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByZUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgYnJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBtb2RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRlVGltZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFuY2hvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb3dubG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW1hZ2VFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGlzTWFwIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsV2lkdGggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF0dXJhbEhlaWdodCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb21wbGV0ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFyY2hpdmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVCYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVjbGFyZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhbmRieSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGFyYW1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFyZWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub0hyZWYgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtYXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhcmVhcyA6IGFyZWFFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzeW5jIDogYm9vbCB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGVtYmVkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2VsbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNlbGxJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFiYnIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBheGlzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbFNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWFkZXJzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dTcGFuIDogaW50IHByb3BcblxuICBtZXRob2Qgc2NvcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlUm93RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgcm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWN0aW9uUm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjZWxscyA6IHRhYmxlQ2VsbEVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRDZWxsIDogaW50IC0+IHRhYmxlQ2VsbEVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNlbGwgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVTZWN0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2FwdGlvbkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgdGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0Rm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdEJvZGllcyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmcmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcnVsZXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1bW1hcnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVUSGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRIZWFkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEZvb3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNhcHRpb24gOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGltZVJhbmdlcyA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBlbmRfIDogaW50IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG50eXBlIG5ldHdvcmtTdGF0ZSA9XG4gIHwgTkVUV09SS19FTVBUWVxuICB8IE5FVFdPUktfSURMRVxuICB8IE5FVFdPUktfTE9BRElOR1xuICB8IE5FVFdPUktfTk9fU09VUkNFXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgSEFWRV9OT1RISU5HXG4gIHwgSEFWRV9NRVRBREFUQVxuICB8IEhBVkVfQ1VSUkVOVF9EQVRBXG4gIHwgSEFWRV9GVVRVUkVfREFUQVxuICB8IEhBVkVfRU5PVUdIX0RBVEFcblxuKCogaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3AgKilcbigqIG9ubHkgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IGFsbCBicm93c2VyLiAoSUU5KykgKilcbmNsYXNzIHR5cGUgbWVkaWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYW5QbGF5VHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgbG9hZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwbGF5IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGF1dG9wbGF5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYnVmZmVyZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250cm9scyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTcmMgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUaW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb29wIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWFncm91cCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbXV0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlIDogbmV0d29ya1N0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF1c2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxheWJhY2tSYXRlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBwbGF5ZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVsb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2FibGUgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVraW5nIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2b2x1bWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheXRocm91Z2ggOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmR1cmF0aW9uY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbXB0aWVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbmRlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkbWV0YWRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGF1c2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXlpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnJhdGVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2luZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3RhbGxlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3VzcGVuZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udm9sdW1lY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253YWl0aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGF1ZGlvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbmNsYXNzIHR5cGUgdmlkZW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxudHlwZSBjb250ZXh0ID0ganNfc3RyaW5nIHRcblxubGV0IF8yZF8gPSBKcy5zdHJpbmcgXCIyZFwiXG5cbnR5cGUgY2FudmFzUGF0dGVyblxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgdG9EYXRhVVJMIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGVfY29tcHJlc3Npb24gOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA9IG9iamVjdFxuICBtZXRob2QgY2FudmFzIDogY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2F2ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXN0b3JlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2xvYmFsQWxwaGEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZUxpbmVhckdyYWRpZW50IDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFkaWFsR3JhZGllbnQgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuIDogaW1hZ2VFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbVZpZGVvIDogdmlkZW9FbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsaW5lQ2FwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSm9pbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWl0ZXJMaW1pdCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Qmx1ciA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlZ2luUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZVBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgbW92ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBxdWFkcmF0aWNDdXJ2ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlemllckN1cnZlVG8gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmNUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyYyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbGxpcHNlIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGlwIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzUG9pbnRJblBhdGggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3Rm9jdXNSaW5nIDogI2VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QmFzZWxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGxUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxUZXh0X3dpdGhXaWR0aCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHRfd2l0aFdpZHRoIDpcbiAgICBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWVhc3VyZVRleHQgOiBqc19zdHJpbmcgdCAtPiB0ZXh0TWV0cmljcyB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlIDogaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV93aXRoU2l6ZSA6XG4gICAgaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsIDpcbiAgICAgICBpbWFnZUVsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzV2l0aFNpemUgOlxuICAgIGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tQ2FudmFzIDpcbiAgICAgICBjYW52YXNFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoVmlkZW8gOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFNpemUgOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21WaWRlbyA6XG4gICAgICAgdmlkZW9FbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUltYWdlRGF0YSA6IGludCAtPiBpbnQgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbWFnZURhdGEgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIHB1dEltYWdlRGF0YSA6IGltYWdlRGF0YSB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNHcmFkaWVudCA9IG9iamVjdFxuICBtZXRob2QgYWRkQ29sb3JTdG9wIDogbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIHRleHRNZXRyaWNzID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgaW1hZ2VEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBjYW52YXNQaXhlbEFycmF5IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjYW52YXNQaXhlbEFycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4dGVybmFsIHBpeGVsX2dldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2pzX2dldFwiXG5cbmV4dGVybmFsIHBpeGVsX3NldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuY2xhc3MgdHlwZSByYW5nZSA9IG9iamVjdFxuICBtZXRob2QgY29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0U3RhcnQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGVDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZUNvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGV4dHJhY3RDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDb250ZW50cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Vycm91bmRDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuKCoqIEluZm9ybWF0aW9uIG9uIGN1cnJlbnQgc2VsZWN0aW9uICopXG5jbGFzcyB0eXBlIHNlbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgYW5jaG9yTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c05vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0NvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlQ291bnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSYW5nZUF0IDogaW50IC0+IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXh0ZW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vZGlmeSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvU3RhcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb0VuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RBbGxDaGlsZHJlbiA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFkZFJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBbGxSYW5nZXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJvbURvY3VtZW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zTm9kZSA6IERvbS5ub2RlIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkIDogaGVhZEVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGJvZHkgOiBib2R5RWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogaHRtbEVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGltYWdlcyA6IGltYWdlRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsZXRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5rcyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9ybXMgOiBmb3JtRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlc2lnbk1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdyaXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4ZWNDb21tYW5kIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5TmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhY3RpdmVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpZGRlbiA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxudHlwZSBpbnRlcnZhbF9pZFxuXG50eXBlIHRpbWVvdXRfaWRcblxudHlwZSBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuXG5jbGFzcyB0eXBlIGxvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvcnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhdGhuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWFyY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhhc2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzc2lnbiA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbG9hZCA6IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBsb2NhdGlvbl9vcmlnaW4gKGxvYyA6IGxvY2F0aW9uIHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBsb2MjIy5vcmlnaW5cbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcHJvdG9jb2wgPSBsb2MjIy5wcm90b2NvbCBpblxuICAgICAgbGV0IGhvc3RuYW1lID0gbG9jIyMuaG9zdG5hbWUgaW5cbiAgICAgIGxldCBwb3J0ID0gbG9jIyMucG9ydCBpblxuICAgICAgaWYgcHJvdG9jb2wjIy5sZW5ndGggPSAwICYmIGhvc3RuYW1lIyMubGVuZ3RoID0gMFxuICAgICAgdGhlbiBKcy5zdHJpbmcgXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgb3JpZ2luID0gcHJvdG9jb2wjI2NvbmNhdF8yIChKcy5zdHJpbmcgXCIvL1wiKSBob3N0bmFtZSBpblxuICAgICAgICBpZiBwb3J0IyMubGVuZ3RoID4gMCB0aGVuIG9yaWdpbiMjY29uY2F0XzIgKEpzLnN0cmluZyBcIjpcIikgbG9jIyMucG9ydCBlbHNlIG9yaWdpbilcbiAgICAoZnVuIG8gLT4gbylcblxuY2xhc3MgdHlwZSBoaXN0b3J5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnbyA6IGludCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJhY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yd2FyZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdW5kb01hbmFnZXIgPSBvYmplY3QgZW5kXG5cbmNsYXNzIHR5cGUgbmF2aWdhdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBDb2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwVmVyc2lvbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llRW5hYmxlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uTGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXRmb3JtIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2ZW5kb3IgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJBZ2VudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyTGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhUb3VjaFBvaW50cyA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JlZW4gPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsSGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFwcGxpY2F0aW9uQ2FjaGUgPSBvYmplY3RcbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwZGF0ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzd2FwQ2FjaGUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25jaGVja2luZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ub3VwZGF0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25kb3dubG9hZGluZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251cGRhdGVyZWFkeSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jYWNoZWQgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub2Jzb2xldGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmNsYXNzIHR5cGUgX1VSTCA9IG9iamVjdFxuICBtZXRob2QgY3JlYXRlT2JqZWN0VVJMIDogI0ZpbGUuYmxvYiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmV2b2tlT2JqZWN0VVJMIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB3aW5kb3cgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IGRvY3VtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsaWNhdGlvbkNhY2hlIDogYXBwbGljYXRpb25DYWNoZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlzdG9yeSA6IGhpc3RvcnkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVuZG9NYW5hZ2VyIDogdW5kb01hbmFnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdmlnYXRvciA6IG5hdmlnYXRvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U2VsZWN0aW9uIDogc2VsZWN0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9wIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsQnkgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXNzaW9uU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhbFN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9wIDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnQgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyYW1lRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB3aW5kb3cgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBhbGVydCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb25maXJtIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcHJvbXB0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcHJpbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50ZXJ2YWwgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiBpbnRlcnZhbF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFySW50ZXJ2YWwgOiBpbnRlcnZhbF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZW91dCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IHRpbWVvdXRfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclRpbWVvdXQgOiB0aW1lb3V0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOlxuICAgIChudW1iZXJfdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNhbmNlbEFuaW1hdGlvbkZyYW1lIDogYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcmVlbiA6IHNjcmVlbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZSA6ICNlbGVtZW50IHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZV9wc2V1ZG9FbHQgOlxuICAgICNlbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgYXRvYiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYnRvYSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgb25sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmVmb3JldW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnJlc2l6ZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9yaWVudGF0aW9uY2hhbmdlIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucG9wc3RhdGUgOiAod2luZG93IHQsIHBvcFN0YXRlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmhhc2hjaGFuZ2UgOiAod2luZG93IHQsIGhhc2hDaGFuZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub25saW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9mZmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBfVVJMIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZXZpY2VQaXhlbFJhdGlvIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aW5kb3cgOiB3aW5kb3cgdCA9IEpzLlVuc2FmZS5nbG9iYWxcblxuKCogVGhlIHRvcGxldmVsIG9iamVjdCAqKVxuXG5sZXQgZG9jdW1lbnQgPSB3aW5kb3cjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2V4biBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcImdldEVsZW1lbnRCeUlkX2V4bjogJVMgbm90IGZvdW5kXCIgaWQpKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9vcHQgaWQgPSBKcy5PcHQudG9fb3B0aW9uIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9jb2VyY2UgaWQgY29lcmNlID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAoZnVuIGUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNlIGUpKVxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBmcmFtZVNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9SZXNpemUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaUZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50V2luZG93IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKioqKVxuXG4oKlhYWCBTaG91bGQgcHJvdmlkZSBjcmVhdGlvbiBmdW5jdGlvbnMgYSBsYSBsYWJsZ3RrLi4uICopXG5cbmxldCBvcHRfaXRlciB4IGYgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB2IC0+IGYgdlxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUVsZW1lbnRTeW50YXggPSByZWYgYFVua25vd25cblxubGV0IHJlYyB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHQgPVxuICBpZiBQb2x5LihfdHlwZSA9IE5vbmUpICYmIFBvbHkuKG5hbWUgPSBOb25lKVxuICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdClcbiAgZWxzZVxuICAgIG1hdGNoICFjcmVhdGVFbGVtZW50U3ludGF4IHdpdGhcbiAgICB8IGBTdGFuZGFyZCAtPlxuICAgICAgICBsZXQgcmVzID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KSBpblxuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT4gcmVzIyMuX3R5cGUgOj0gdCk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+IHJlcyMjLm5hbWUgOj0gbik7XG4gICAgICAgIHJlc1xuICAgIHwgYEV4dGVuZGVkIC0+XG4gICAgICAgIGxldCBhID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaF8yIChKcy5zdHJpbmcgXCI8XCIpIChKcy5zdHJpbmcgZWx0KSk7XG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiB0eXBlPVxcXCJcIikgKGh0bWxfZXNjYXBlIHQpIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIG5hbWU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgbikgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgaWdub3JlIChhIyNwdXNoIChKcy5zdHJpbmcgXCI+XCIpKTtcbiAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSAoZG9jIyNjcmVhdGVFbGVtZW50IChhIyNqb2luIChKcy5zdHJpbmcgXCJcIikpKVxuICAgIHwgYFVua25vd24gLT5cbiAgICAgICAgY3JlYXRlRWxlbWVudFN5bnRheCA6PVxuICAgICAgICAgIGlmIHRyeVxuICAgICAgICAgICAgICAgbGV0IGVsIDogaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAgICAgICAgICAgKGRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgXCI8aW5wdXQgbmFtZT1cXFwieFxcXCI+XCIpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIEpzLmVxdWFscyBlbCMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgXCJpbnB1dFwiKVxuICAgICAgICAgICAgICAgJiYgSnMuZXF1YWxzIGVsIyMubmFtZSAoSnMuc3RyaW5nIFwieFwiKVxuICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgIHRoZW4gYEV4dGVuZGVkXG4gICAgICAgICAgZWxzZSBgU3RhbmRhcmQ7XG4gICAgICAgIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdFxuXG5sZXQgY3JlYXRlSHRtbCBkb2MgOiBodG1sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJodG1sXCJcblxubGV0IGNyZWF0ZUhlYWQgZG9jIDogaGVhZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGVhZFwiXG5cbmxldCBjcmVhdGVMaW5rIGRvYyA6IGxpbmtFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmtcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZU1ldGEgZG9jIDogbWV0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YVwiXG5cbmxldCBjcmVhdGVCYXNlIGRvYyA6IGJhc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJhc2VcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZUJvZHkgZG9jIDogYm9keUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYm9keVwiXG5cbmxldCBjcmVhdGVGb3JtIGRvYyA6IGZvcm1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcm1cIlxuXG5sZXQgY3JlYXRlT3B0Z3JvdXAgZG9jIDogb3B0R3JvdXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGdyb3VwXCJcblxubGV0IGNyZWF0ZU9wdGlvbiBkb2MgOiBvcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGlvblwiXG5cbmxldCBjcmVhdGVTZWxlY3QgP190eXBlID9uYW1lIGRvYyA6IHNlbGVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwic2VsZWN0XCJcblxubGV0IGNyZWF0ZUlucHV0ID9fdHlwZSA/bmFtZSBkb2MgOiBpbnB1dEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiaW5wdXRcIlxuXG5sZXQgY3JlYXRlVGV4dGFyZWEgP190eXBlID9uYW1lIGRvYyA6IHRleHRBcmVhRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJ0ZXh0YXJlYVwiXG5cbmxldCBjcmVhdGVCdXR0b24gP190eXBlID9uYW1lIGRvYyA6IGJ1dHRvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiYnV0dG9uXCJcblxubGV0IGNyZWF0ZUxhYmVsIGRvYyA6IGxhYmVsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsYWJlbFwiXG5cbmxldCBjcmVhdGVGaWVsZHNldCBkb2MgOiBmaWVsZFNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmllbGRzZXRcIlxuXG5sZXQgY3JlYXRlTGVnZW5kIGRvYyA6IGxlZ2VuZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGVnZW5kXCJcblxubGV0IGNyZWF0ZVVsIGRvYyA6IHVMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1bFwiXG5cbmxldCBjcmVhdGVPbCBkb2MgOiBvTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2xcIlxuXG5sZXQgY3JlYXRlRGwgZG9jIDogZExpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRsXCJcblxubGV0IGNyZWF0ZUxpIGRvYyA6IGxpRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaVwiXG5cbmxldCBjcmVhdGVEaWFsb2cgZG9jIDogZGlhbG9nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaWFsb2dcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaWFsb2cgb2YgZGlhbG9nRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFncmFwaEVsZW1lbnQgdFxuICB8IFBhcmFtIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUHJlIG9mIHByZUVsZW1lbnQgdFxuICB8IFEgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBTY3JpcHQgb2Ygc2NyaXB0RWxlbWVudCB0XG4gIHwgU2VsZWN0IG9mIHNlbGVjdEVsZW1lbnQgdFxuICB8IFN0eWxlIG9mIHN0eWxlRWxlbWVudCB0XG4gIHwgVGFibGUgb2YgdGFibGVFbGVtZW50IHRcbiAgfCBUYm9keSBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUZCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUZXh0YXJlYSBvZiB0ZXh0QXJlYUVsZW1lbnQgdFxuICB8IFRmb290IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRoIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRoZWFkIG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRpdGxlIG9mIHRpdGxlRWxlbWVudCB0XG4gIHwgVHIgb2YgdGFibGVSb3dFbGVtZW50IHRcbiAgfCBVbCBvZiB1TGlzdEVsZW1lbnQgdFxuICB8IFZpZGVvIG9mIHZpZGVvRWxlbWVudCB0XG4gIHwgT3RoZXIgb2YgZWxlbWVudCB0XG5cbmxldCBvdGhlciBlID0gT3RoZXIgKGUgOiAjZWxlbWVudCB0IDo+IGVsZW1lbnQgdClcblxubGV0IHRhZ2dlZCAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHRhZyA9IEpzLnRvX2J5dGVzdHJpbmcgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIGluXG4gIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMFxuICB0aGVuIG90aGVyIGVcbiAgZWxzZVxuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHRhZyAwIHdpdGhcbiAgICB8ICdhJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJhXCIgLT4gQSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXJlYVwiIC0+IEFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImF1ZGlvXCIgLT4gQXVkaW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYmFzZVwiIC0+IEJhc2UgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJsb2NrcXVvdGVcIiAtPiBCbG9ja3F1b3RlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJib2R5XCIgLT4gQm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnJcIiAtPiBCciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnV0dG9uXCIgLT4gQnV0dG9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImNhbnZhc1wiIC0+IENhbnZhcyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY2FwdGlvblwiIC0+IENhcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbFwiIC0+IENvbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sZ3JvdXBcIiAtPiBDb2xncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdkJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJkZWxcIiAtPiBEZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRpdlwiIC0+IERpdiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGxcIiAtPiBEbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdlJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJlbWJlZFwiIC0+IEVtYmVkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImZpZWxkc2V0XCIgLT4gRmllbGRzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZvcm1cIiAtPiBGb3JtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZXNldFwiIC0+IEZyYW1lc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZVwiIC0+IEZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2gnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImgxXCIgLT4gSDEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgyXCIgLT4gSDIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgzXCIgLT4gSDMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg0XCIgLT4gSDQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg1XCIgLT4gSDUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg2XCIgLT4gSDYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhlYWRcIiAtPiBIZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoclwiIC0+IEhyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJodG1sXCIgLT4gSHRtbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdpJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJpZnJhbWVcIiAtPiBJZnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImltZ1wiIC0+IEltZyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5wdXRcIiAtPiBJbnB1dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5zXCIgLT4gSW5zIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2wnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImxhYmVsXCIgLT4gTGFiZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxlZ2VuZFwiIC0+IExlZ2VuZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlcIiAtPiBMaSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlua1wiIC0+IExpbmsgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibWFwXCIgLT4gTWFwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJtZXRhXCIgLT4gTWV0YSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdvJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJvYmplY3RcIiAtPiBPYmplY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9sXCIgLT4gT2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGdyb3VwXCIgLT4gT3B0Z3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGlvblwiIC0+IE9wdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdwJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJwXCIgLT4gUCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicGFyYW1cIiAtPiBQYXJhbSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicHJlXCIgLT4gUHJlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInFcIiAtPiBRIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInNjcmlwdFwiIC0+IFNjcmlwdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic2VsZWN0XCIgLT4gU2VsZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzdHlsZVwiIC0+IFN0eWxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInRhYmxlXCIgLT4gVGFibGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRib2R5XCIgLT4gVGJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRkXCIgLT4gVGQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRleHRhcmVhXCIgLT4gVGV4dGFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRmb290XCIgLT4gVGZvb3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoXCIgLT4gVGggKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoZWFkXCIgLT4gVGhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRpdGxlXCIgLT4gVGl0bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRyXCIgLT4gVHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidWxcIiAtPiBVbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd2JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ2aWRlb1wiIC0+IFZpZGVvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgXyAtPiBvdGhlciBlXG5cbmxldCBvcHRfdGFnZ2VkIGUgPSBPcHQuY2FzZSBlIChmdW4gKCkgLT4gTm9uZSkgKGZ1biBlIC0+IFNvbWUgKHRhZ2dlZCBlKSlcblxudHlwZSB0YWdnZWRFdmVudCA9XG4gIHwgTW91c2VFdmVudCBvZiBtb3VzZUV2ZW50IHRcbiAgfCBLZXlib2FyZEV2ZW50IG9mIGtleWJvYXJkRXZlbnQgdFxuICB8IE1lc3NhZ2VFdmVudCBvZiBtZXNzYWdlRXZlbnQgdFxuICB8IE1vdXNld2hlZWxFdmVudCBvZiBtb3VzZXdoZWVsRXZlbnQgdFxuICB8IE1vdXNlU2Nyb2xsRXZlbnQgb2YgbW91c2VTY3JvbGxFdmVudCB0XG4gIHwgUG9wU3RhdGVFdmVudCBvZiBwb3BTdGF0ZUV2ZW50IHRcbiAgfCBPdGhlckV2ZW50IG9mIGV2ZW50IHRcblxubGV0IHRhZ2dlZEV2ZW50IChldiA6ICNldmVudCBKcy50KSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKENvZXJjZVRvLm1vdXNlRXZlbnQgZXYpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKENvZXJjZVRvLmtleWJvYXJkRXZlbnQgZXYpXG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKENvZXJjZVRvLndoZWVsRXZlbnQgZXYpXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgKENvZXJjZVRvLm1vdXNlU2Nyb2xsRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLnBvcFN0YXRlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLm1lc3NhZ2VFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gT3RoZXJFdmVudCAoZXYgOj4gZXZlbnQgdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1lc3NhZ2VFdmVudCBldikpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gUG9wU3RhdGVFdmVudCBldikpXG4gICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZVNjcm9sbEV2ZW50IGV2KSlcbiAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2V3aGVlbEV2ZW50IGV2KSlcbiAgICAgICAgKGZ1biBldiAtPiBLZXlib2FyZEV2ZW50IGV2KSlcbiAgICAoZnVuIGV2IC0+IE1vdXNlRXZlbnQgZXYpXG5cbmxldCBvcHRfdGFnZ2VkRXZlbnQgZXYgPSBPcHQuY2FzZSBldiAoZnVuICgpIC0+IE5vbmUpIChmdW4gZXYgLT4gU29tZSAodGFnZ2VkRXZlbnQgZXYpKVxuXG5sZXQgc3RvcFByb3BhZ2F0aW9uIGV2ID1cbiAgbGV0IGUgPSBKcy5VbnNhZmUuY29lcmNlIGV2IGluXG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnN0b3BQcm9wYWdhdGlvblxuICAgIChmdW4gKCkgLT4gZSMjLmNhbmNlbEJ1YmJsZSA6PSBKcy5fdHJ1ZSlcbiAgICAoZnVuIF8gLT4gZSMjX3N0b3BQcm9wYWdhdGlvbilcblxubGV0IF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0ID1cbiAgSnMuVW5zYWZlLnB1cmVfZXhwciAoZnVuIF8gLT5cbiAgICAgIGxldCB3ID0gSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cgaW5cbiAgICAgIGxldCBsID1cbiAgICAgICAgWyB3IyMucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1velJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMub1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCByZXEgPSBMaXN0LmZpbmQgKGZ1biBjIC0+IEpzLk9wdGRlZi50ZXN0IGMpIGwgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCByZXEgW3wgSnMuVW5zYWZlLmluamVjdCBjYWxsYmFjayB8XVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG5vdyAoKSA9IEpzLnRvX2Zsb2F0IChuZXclanMgSnMuZGF0ZV9ub3cpIyNnZXRUaW1lIGluXG4gICAgICAgIGxldCBsYXN0ID0gcmVmIChub3cgKCkpIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPlxuICAgICAgICAgIGxldCB0ID0gbm93ICgpIGluXG4gICAgICAgICAgbGV0IGR0ID0gIWxhc3QgKy4gKDEwMDAuIC8uIDYwLikgLS4gdCBpblxuICAgICAgICAgIGxldCBkdCA9IGlmIFBvbHkuKGR0IDwgMC4pIHRoZW4gMC4gZWxzZSBkdCBpblxuICAgICAgICAgIGxhc3QgOj0gdDtcbiAgICAgICAgICBpZ25vcmUgKHdpbmRvdyMjc2V0VGltZW91dCBjYWxsYmFjayAoSnMuZmxvYXQgZHQpKSlcblxuKCoqKiopXG5cbmxldCBoYXNQdXNoU3RhdGUgKCkgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cjIy5oaXN0b3J5KSMjLnB1c2hTdGF0ZVxuXG5sZXQgaGFzUGxhY2Vob2xkZXIgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucGxhY2Vob2xkZXJcblxubGV0IGhhc1JlcXVpcmVkICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnJlcXVpcmVkXG5cbmxldCBvdmVyZmxvd19saW1pdCA9IDIxNDc0ODNfMDAwLlxuXG4oKiBtcyAqKVxuXG50eXBlIHRpbWVvdXRfaWRfc2FmZSA9IHRpbWVvdXRfaWQgb3B0aW9uIHJlZlxuXG5sZXQgc2V0VGltZW91dCBjYWxsYmFjayBkIDogdGltZW91dF9pZF9zYWZlID1cbiAgbGV0IGlkID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wIGQgKCkgPVxuICAgIGxldCBzdGVwLCByZW1haW4gPVxuICAgICAgaWYgUG9seS4oZCA+IG92ZXJmbG93X2xpbWl0KSB0aGVuIG92ZXJmbG93X2xpbWl0LCBkIC0uIG92ZXJmbG93X2xpbWl0IGVsc2UgZCwgMC5cbiAgICBpblxuICAgIGxldCBjYiA9IGlmIFBvbHkuKHJlbWFpbiA9IDAuKSB0aGVuIGNhbGxiYWNrIGVsc2UgbG9vcCByZW1haW4gaW5cbiAgICBpZCA6PSBTb21lICh3aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgY2IpIChKcy5mbG9hdCBzdGVwKSlcbiAgaW5cbiAgbG9vcCBkICgpO1xuICBpZFxuXG5sZXQgY2xlYXJUaW1lb3V0IChpZCA6IHRpbWVvdXRfaWRfc2FmZSkgPVxuICBtYXRjaCAhaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIGlkIDo9IE5vbmU7XG4gICAgICB3aW5kb3cjI2NsZWFyVGltZW91dCB4XG5cbmxldCBqc19hcnJheV9vZl9jb2xsZWN0aW9uIChjIDogI2VsZW1lbnQgY29sbGVjdGlvbiBKcy50KSA6ICNlbGVtZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgID1cbiAgSnMuVW5zYWZlLihtZXRoX2NhbGwgKGpzX2V4cHIgXCJbXS5zbGljZVwiKSBcImNhbGxcIiBbfCBpbmplY3QgYyB8XSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgZm9ybURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIGFwcGVuZCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRfYmxvYiA6IGpzX3N0cmluZyB0IC0+IEZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBmb3JtRGF0YSA6IGZvcm1EYXRhIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG5sZXQgZm9ybURhdGFfZm9ybSA6IChmb3JtRWxlbWVudCB0IC0+IGZvcm1EYXRhIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxudHlwZSBmb3JtX2VsdCA9XG4gIFsgYFN0cmluZyBvZiBqc19zdHJpbmcgdFxuICB8IGBGaWxlIG9mIEZpbGUuZmlsZSB0XG4gIF1cblxudHlwZSBmb3JtX2NvbnRlbnRzID1cbiAgWyBgRmllbGRzIG9mIChzdHJpbmcgKiBmb3JtX2VsdCkgbGlzdCByZWZcbiAgfCBgRm9ybURhdGEgb2YgZm9ybURhdGEgdFxuICBdXG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmNsYXNzIHR5cGUgc3VibWl0dGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmxldCBoYXZlX2NvbnRlbnQgKGVsdCA6IHN1Ym1pdHRhYmxlRWxlbWVudCB0KSA9XG4gIGVsdCMjLm5hbWUjIy5sZW5ndGggPiAwICYmIG5vdCAoSnMudG9fYm9vbCBlbHQjIy5kaXNhYmxlZClcblxubGV0IGdldF90ZXh0YXJlYV92YWwgKGVsdCA6IHRleHRBcmVhRWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9zZWxlY3RfdmFsIChlbHQgOiBzZWxlY3RFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgaWYgdG9fYm9vbCBlbHQjIy5tdWx0aXBsZVxuICAgIHRoZW5cbiAgICAgIGxldCBvcHRpb25zID1cbiAgICAgICAgQXJyYXkuaW5pdCBlbHQjIy5vcHRpb25zIyMubGVuZ3RoIChmdW4gaSAtPiBPcHQudG9fb3B0aW9uIChlbHQjIy5vcHRpb25zIyNpdGVtIGkpKVxuICAgICAgaW5cbiAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgICBpZiBKcy50b19ib29sIGUjIy5zZWxlY3RlZCB0aGVuIFNvbWUgKG5hbWUsIGBTdHJpbmcgZSMjLnZhbHVlKSBlbHNlIE5vbmUpXG4gICAgICAgIChBcnJheS50b19saXN0IG9wdGlvbnMpXG4gICAgZWxzZSBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmNsYXNzIHR5cGUgZmlsZV9pbnB1dCA9IG9iamVjdFxuICBpbmhlcml0IGlucHV0RWxlbWVudFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZ2V0X2lucHV0X3ZhbCA/KGdldCA9IGZhbHNlKSAoZWx0IDogaW5wdXRFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgbGV0IHZhbHVlID0gZWx0IyMudmFsdWUgaW5cbiAgICBtYXRjaCB0b19ieXRlc3RyaW5nIGVsdCMjLl90eXBlIyN0b0xvd2VyQ2FzZSB3aXRoXG4gICAgfCBcImNoZWNrYm94XCIgfCBcInJhZGlvXCIgLT5cbiAgICAgICAgaWYgdG9fYm9vbCBlbHQjIy5jaGVja2VkIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF0gZWxzZSBbXVxuICAgIHwgXCJzdWJtaXRcIiB8IFwicmVzZXRcIiAtPiBbXVxuICAgIHwgXCJ0ZXh0XCIgfCBcInBhc3N3b3JkXCIgLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICB8IFwiZmlsZVwiIC0+IChcbiAgICAgICAgaWYgZ2V0XG4gICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBlbHQgOiBmaWxlX2lucHV0IHQgPSBVbnNhZmUuY29lcmNlIGVsdCBpblxuICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMuZmlsZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBsaXN0IC0+IChcbiAgICAgICAgICAgICAgaWYgbGlzdCMjLmxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgKEpzLnN0cmluZyBcIlwiKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLm11bHRpcGxlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+IChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobGlzdCMjaXRlbSAwKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBbIG5hbWUsIGBGaWxlIGZpbGUgXSlcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIGYgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFNvbWUgKG5hbWUsIGBGaWxlIGZpbGUpKVxuICAgICAgICAgICAgICAgICAgICAgIChBcnJheS50b19saXN0IChBcnJheS5pbml0IGxpc3QjIy5sZW5ndGggKGZ1biBpIC0+IGxpc3QjI2l0ZW0gaSkpKSkpXG4gICAgfCBfIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9mb3JtX2VsZW1lbnRzIChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChmb3JtIyMuZWxlbWVudHMjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIChpIC0gaSlcbiAgICAgIHwgU29tZSB4IC0+IGxvb3AgKHggOjogYWNjKSAoaSAtIDEpXG4gIGluXG4gIGxvb3AgW10gKGZvcm0jIy5lbGVtZW50cyMjLmxlbmd0aCAtIDEpXG5cbmxldCBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdiA9XG4gIG1hdGNoIHRhZ2dlZCB2IHdpdGhcbiAgfCBTZWxlY3QgdiAtPiBnZXRfc2VsZWN0X3ZhbCB2XG4gIHwgSW5wdXQgdiAtPiBnZXRfaW5wdXRfdmFsID9nZXQgdlxuICB8IFRleHRhcmVhIHYgLT4gZ2V0X3RleHRhcmVhX3ZhbCB2XG4gIHwgXyAtPiBbXVxuXG5sZXQgZm9ybV9lbGVtZW50cyA/Z2V0IChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gdiAtPiBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdikgKGdldF9mb3JtX2VsZW1lbnRzIGZvcm0pKVxuXG5sZXQgYXBwZW5kIChmb3JtX2NvbnRlbnRzIDogZm9ybV9jb250ZW50cykgKGZvcm1fZWx0IDogc3RyaW5nICogZm9ybV9lbHQpID1cbiAgbWF0Y2ggZm9ybV9jb250ZW50cyB3aXRoXG4gIHwgYEZpZWxkcyBsaXN0IC0+IGxpc3QgOj0gZm9ybV9lbHQgOjogIWxpc3RcbiAgfCBgRm9ybURhdGEgZiAtPiAoXG4gICAgICBtYXRjaCBmb3JtX2VsdCB3aXRoXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBmIyNhcHBlbmQgKHN0cmluZyBuYW1lKSBzXG4gICAgICB8IG5hbWUsIGBGaWxlIGZpbGUgLT4gZiMjYXBwZW5kX2Jsb2IgKHN0cmluZyBuYW1lKSAoZmlsZSA6PiBGaWxlLmJsb2IgdCkpXG5cbmxldCBlbXB0eV9mb3JtX2NvbnRlbnRzICgpID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiAoSnMuZGVmIGZvcm1EYXRhKSB3aXRoXG4gIHwgTm9uZSAtPiBgRmllbGRzIChyZWYgW10pXG4gIHwgU29tZSBjb25zdHIgLT4gYEZvcm1EYXRhIChuZXclanMgY29uc3RyKVxuXG5sZXQgcG9zdF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBsZXQgY29udGVudHMgPSBlbXB0eV9mb3JtX2NvbnRlbnRzICgpIGluXG4gIExpc3QuaXRlciAoYXBwZW5kIGNvbnRlbnRzKSAoZm9ybV9lbGVtZW50cyBmb3JtKTtcbiAgY29udGVudHNcblxubGV0IGdldF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gbmFtZSwgdG9fc3RyaW5nIHNcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgKGZvcm1fZWxlbWVudHMgfmdldDp0cnVlIGZvcm0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgVU5TRU5UXG4gIHwgT1BFTkVEXG4gIHwgSEVBREVSU19SRUNFSVZFRFxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbnR5cGUgXyByZXNwb25zZSA9XG4gIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IE9wdC50IHJlc3BvbnNlXG4gIHwgQmxvYiA6ICNGaWxlLmJsb2IgdCBPcHQudCByZXNwb25zZVxuICB8IERvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBKU09OIDogJ2EgT3B0LnQgcmVzcG9uc2VcbiAgfCBUZXh0IDoganNfc3RyaW5nIHQgcmVzcG9uc2VcbiAgfCBEZWZhdWx0IDogc3RyaW5nIHJlc3BvbnNlXG5cbmNsYXNzIHR5cGUgeG1sSHR0cFJlcXVlc3QgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25yZWFkeXN0YXRlY2hhbmdlIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfb3BlbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgX29wZW5fZnVsbCA6XG4gICAgICAganNfc3RyaW5nIHRcbiAgICAtPiBqc19zdHJpbmcgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSZXF1ZXN0SGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG92ZXJyaWRlTWltZVR5cGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZCA6IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogI0ZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2RvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZm9ybURhdGEgOiBGb3JtLmZvcm1EYXRhIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXR1c1RleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJlc3BvbnNlSGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXNwb25zZSA6IEZpbGUuZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVRleHQgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVhNTCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb250aW1lb3V0IDpcbiAgICAoJ3NlbGYgdCwgJ3NlbGYgRmlsZS5wcm9ncmVzc0V2ZW50IHQpIERvbS5ldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGxvYWQgOiB4bWxIdHRwUmVxdWVzdFVwbG9hZCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHhtbEh0dHBSZXF1ZXN0VXBsb2FkID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSB4bWxIdHRwUmVxdWVzdCBGaWxlLnByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB0aW1lb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1lb3V0XCJcblxuICBsZXQgbG9hZGVuZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxuZXh0ZXJuYWwgY3JlYXRlIDogdW5pdCAtPiB4bWxIdHRwUmVxdWVzdCBKcy50ID0gXCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVwiXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IE9DYW1sUHJvOiBHcsOpZ29pcmUgSGVucnksIMOHYcSfZGHFnyBCb3ptYW4uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHdvcmtlciA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBlcnJvckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnYiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcG9zdE1lc3NhZ2UgOiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGVybWluYXRlIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGVycm9yRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGluZW5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29sbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IFVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiAnYSByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdvcmtlciA9IFVuc2FmZS5nbG9iYWwjIy5fV29ya2VyXG5cbmxldCBjcmVhdGUgc2NyaXB0ID0gbmV3JWpzIHdvcmtlciAoc3RyaW5nIHNjcmlwdClcblxubGV0IGltcG9ydF9zY3JpcHRzIHNjcmlwdHMgOiB1bml0ID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0cylcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5pbXBvcnRfc2NyaXB0cyBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmZ1bl9jYWxsXG4gICAgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHNcbiAgICAoQXJyYXkubWFwIChmdW4gcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcykpIChBcnJheS5vZl9saXN0IHNjcmlwdHMpKVxuXG5sZXQgc2V0X29ubWVzc2FnZSBoYW5kbGVyID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgbGV0IGpzX2hhbmRsZXIgKGV2IDogJ2EgbWVzc2FnZUV2ZW50IEpzLnQpID0gaGFuZGxlciBldiMjLmRhdGEgaW5cbiAgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSA6PSB3cmFwX2NhbGxiYWNrIGpzX2hhbmRsZXJcblxubGV0IHBvc3RfbWVzc2FnZSBtc2cgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5wb3N0TWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5nbG9iYWwjI3Bvc3RNZXNzYWdlIG1zZ1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKYWNxdWVzLVBhc2NhbCBEZXBsYWl4XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TSU5HXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBjbG9zZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgY29kZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYXNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2FzQ2xlYW4gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB3ZWJTb2NrZXQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHVybCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZEFtb3VudCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBjbG9zZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZXh0ZW5zaW9ucyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlIDogaW50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZUFuZFJlYXNvbiA6IGludCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25tZXNzYWdlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgbWVzc2FnZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiaW5hcnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gIG1ldGhvZCBzZW5kIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogRmlsZS5ibG9iIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHdlYlNvY2tldCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29sID0gd2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29scyA9IHdlYlNvY2tldFxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3Qgd2ViU29ja2V0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbigqKiA1LjEgVHlwZXMgKilcblxudHlwZSBzaXplaSA9IGludFxuXG50eXBlIHNpemVpcHRyID0gaW50XG5cbnR5cGUgaW50cHRyID0gaW50XG5cbnR5cGUgdWludCA9IGludFxuXG50eXBlIGNsYW1wZiA9IG51bWJlcl90XG5cbnR5cGUgdm9pZFxuXG50eXBlIGNsZWFyQnVmZmVyTWFzayA9IGludFxuXG50eXBlIGJlZ2luTW9kZVxuXG50eXBlIGJsZW5kaW5nRmFjdG9yXG5cbnR5cGUgYmxlbmRNb2RlXG5cbnR5cGUgYnVmZmVyVGFyZ2V0XG5cbnR5cGUgYnVmZmVyVXNhZ2VcblxudHlwZSBjdWxsRmFjZU1vZGVcblxudHlwZSBkZXB0aEZ1bmN0aW9uXG5cbnR5cGUgZW5hYmxlQ2FwXG5cbnR5cGUgZXJyb3JDb2RlXG5cbnR5cGUgZnJvbnRGYWNlRGlyXG5cbnR5cGUgaGludFRhcmdldFxuXG50eXBlIGhpbnRNb2RlXG5cbnR5cGUgdGV4dHVyZVVuaXQgPSBpbnRcblxudHlwZSAnYSBwaXhlbFN0b3JlUGFyYW1cblxudHlwZSBzdGVuY2lsT3BcblxudHlwZSBmYlRhcmdldFxuXG50eXBlIGF0dGFjaG1lbnRQb2ludFxuXG50eXBlIHJiVGFyZ2V0XG5cbnR5cGUgdGV4VGFyZ2V0XG5cbnR5cGUgJ2EgcGFyYW1ldGVyXG5cbnR5cGUgJ2EgYnVmZmVyUGFyYW1ldGVyXG5cbnR5cGUgJ2EgdmVydGV4QXR0cmliUGFyYW1cblxudHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW1cblxudHlwZSAnYSBhdHRhY2hQYXJhbVxuXG50eXBlIGZyYW1lYnVmZmVyU3RhdHVzXG5cbnR5cGUgJ2EgcmVuZGVyYnVmZmVyUGFyYW1cblxudHlwZSBmb3JtYXRcblxudHlwZSBwaXhlbEZvcm1hdFxuXG50eXBlIHBpeGVsVHlwZVxuXG50eXBlICdhIHRleFBhcmFtXG5cbnR5cGUgZGF0YVR5cGVcblxudHlwZSBzaGFkZXJUeXBlXG5cbnR5cGUgJ2EgcHJvZ3JhbVBhcmFtXG5cbnR5cGUgJ2Egc2hhZGVyUGFyYW1cblxudHlwZSB0ZXh0dXJlRmlsdGVyXG5cbnR5cGUgd3JhcE1vZGVcblxudHlwZSB0ZXhGaWx0ZXJcblxudHlwZSB1bmlmb3JtVHlwZVxuXG50eXBlIGNvbG9yc3BhY2VDb252ZXJzaW9uXG5cbnR5cGUgc2hhZGVyUHJlY2lzaW9uVHlwZVxuXG50eXBlIG9iamVjdFR5cGVcblxuKCoqIDUuMiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzICopXG5jbGFzcyB0eXBlIGNvbnRleHRBdHRyaWJ1dGVzID0gb2JqZWN0XG4gIG1ldGhvZCBhbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRlcHRoIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3RlbmNpbCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGFudGlhbGlhcyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZW11bHRpcGxpZWRBbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlRHJhd2luZ0J1ZmZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2UgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IDogYm9vbCB0IHByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzID1cbiAgSnMuVW5zYWZlLihcbiAgICBvYmpcbiAgICAgIFt8IFwiYWxwaGFcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcImRlcHRoXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJzdGVuY2lsXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiYW50aWFsaWFzXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJwcmVtdWx0aXBsaWVkQWxwaGFcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXJcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICB8XSlcblxudHlwZSBidWZmZXJcblxudHlwZSBmcmFtZWJ1ZmZlclxuXG50eXBlIHByb2dyYW1cblxudHlwZSByZW5kZXJidWZmZXJcblxudHlwZSBzaGFkZXJcblxudHlwZSB0ZXh0dXJlXG5cbnR5cGUgJ2EgdW5pZm9ybUxvY2F0aW9uXG5cbmNsYXNzIHR5cGUgYWN0aXZlSW5mbyA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gb2JqZWN0XG4gIG1ldGhvZCByYW5nZU1pbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlTWF4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlY2lzaW9uIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlbmRlcmluZ0NvbnRleHQgPSBvYmplY3RcbiAgKCoqIDUuMTMuMSBBdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGNhbnZhcyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJXaWR0aCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlckhlaWdodCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICAoKiogNS4xMy4yIEdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRleHQgKilcblxuICBtZXRob2QgZ2V0Q29udGV4dEF0dHJpYnV0ZXMgOiBjb250ZXh0QXR0cmlidXRlcyB0IG1ldGhcblxuICAoKiogNS4xMy4zIFNldHRpbmcgYW5kIGdldHRpbmcgc3RhdGUgKilcblxuICBtZXRob2QgYWN0aXZlVGV4dHVyZSA6IHRleHR1cmVVbml0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZENvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uIDogYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUgOiBibGVuZE1vZGUgLT4gYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmMgOiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jU2VwYXJhdGUgOlxuICAgIGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckNvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRlcHRoIDogY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclN0ZW5jaWwgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbG9yTWFzayA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3VsbEZhY2UgOiBjdWxsRmFjZU1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoTWFzayA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhSYW5nZSA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpc2FibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJvbnRGYWNlIDogZnJvbnRGYWNlRGlyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXJhbWV0ZXIgOiAnYS4gJ2EgcGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0RXJyb3IgOiBlcnJvckNvZGUgbWV0aFxuXG4gIG1ldGhvZCBoaW50IDogaGludFRhcmdldCAtPiBoaW50TW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNFbmFibGVkIDogZW5hYmxlQ2FwIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwaXhlbFN0b3JlaSA6ICdhLiAnYSBwaXhlbFN0b3JlUGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBvbHlnb25PZmZzZXQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2FtcGxlQ292ZXJhZ2UgOiBjbGFtcGYgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2sgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFza1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcCA6IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3BTZXBhcmF0ZSA6XG4gICAgY3VsbEZhY2VNb2RlIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjQgVmlld2luZyBhbmQgY2xpcHBpbmcgKilcblxuICBtZXRob2Qgc2Npc3NvciA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy41IEJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXIgOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXJfIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9jcmVhdGUgOiBidWZmZXJUYXJnZXQgLT4gc2l6ZWlwdHIgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUJ1ZmZlciA6IGJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQnVmZmVyIDogYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJ1ZmZlclBhcmFtZXRlciA6ICdhLiBidWZmZXJUYXJnZXQgLT4gJ2EgYnVmZmVyUGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNCdWZmZXIgOiBidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjYgRnJhbWVidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXIgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXJfIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlclN0YXR1cyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJUZXh0dXJlMkQgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIDpcbiAgICAnYS4gZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+ICdhIGF0dGFjaFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy43IFJlbmRlcmJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXIgOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlcl8gOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlciA6ICdhLiByYlRhcmdldCAtPiAnYSByZW5kZXJidWZmZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcmVuZGVyYnVmZmVyU3RvcmFnZSA6IHJiVGFyZ2V0IC0+IGZvcm1hdCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy44IFRleHR1cmUgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZSA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlXyA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4SW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleEltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gcGl4ZWxGb3JtYXQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhTdWJJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dHVyZSA6IHRleHR1cmUgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdlbmVyYXRlTWlwbWFwIDogdGV4VGFyZ2V0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUZXhQYXJhbWV0ZXIgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1RleHR1cmUgOiB0ZXh0dXJlIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9uZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gdm9pZCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqIHtbXG4gICAgICBtZXRob2QgdGV4UGFyYW1ldGVyZiA6IHRleFRhcmdldCAtPiB0ZXhQYXJhbSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbiAgICAgXX1cbiAgKilcbiAgbWV0aG9kIHRleFBhcmFtZXRlcmkgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjkgUHJvZ3JhbXMgYW5kIFNoYWRlcnMgKilcblxuICBtZXRob2QgYXR0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcGlsZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU2hhZGVyIDogc2hhZGVyVHlwZSAtPiBzaGFkZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dGFjaGVkU2hhZGVycyA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbVBhcmFtZXRlciA6ICdhLiBwcm9ncmFtIHQgLT4gJ2EgcHJvZ3JhbVBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbUluZm9Mb2cgOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQYXJhbWV0ZXIgOiAnYS4gc2hhZGVyIHQgLT4gJ2Egc2hhZGVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgOlxuICAgIHNoYWRlclR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlckluZm9Mb2cgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgaXNQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGlzU2hhZGVyIDogc2hhZGVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGlua1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1c2VQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2YWxpZGF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTAgVW5pZm9ybXMgYW5kIGF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVBdHRyaWIgOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVVbmlmb3JtIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybSA6ICdhICdiLiBwcm9ncmFtIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtTG9jYXRpb24gOiAnYS4gcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliIDogJ2EuIHVpbnQgLT4gJ2EgdmVydGV4QXR0cmliUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQgOiB1aW50IC0+IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSAtPiBzaXplaXB0ciBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2X3R5cGVkIDpcbiAgICBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaSA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXZfdHlwZWQgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2IDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnZfdHlwZWQgOlxuICAgIFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmkgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXYgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2X3R5cGVkIDpcbiAgICBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnZfdHlwZWQgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdiA6IFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2kgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2IDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdl90eXBlZCA6XG4gICAgWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZiA6XG4gICAgICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdl90eXBlZCA6XG4gICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2IDogWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aSA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2IDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdl90eXBlZCA6XG4gICAgWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnYgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdl90eXBlZCA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdiA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2X3R5cGVkIDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2IDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnZfdHlwZWQgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmIDogdWludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2YgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmIDpcbiAgICB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYlBvaW50ZXIgOlxuICAgIHVpbnQgLT4gaW50IC0+IGRhdGFUeXBlIC0+IGJvb2wgdCAtPiBzaXplaSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTEgV3JpdGluZyB0byB0aGUgZHJhd2luZyBidWZmZXIgKilcblxuICBtZXRob2QgY2xlYXIgOiBjbGVhckJ1ZmZlck1hc2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdBcnJheXMgOiBiZWdpbk1vZGUgLT4gaW50IC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3RWxlbWVudHMgOiBiZWdpbk1vZGUgLT4gc2l6ZWkgLT4gZGF0YVR5cGUgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaW5pc2ggOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmx1c2ggOiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMiBSZWFkaW5nIGJhY2sgcGl4ZWxzICopXG5cbiAgbWV0aG9kIHJlYWRQaXhlbHMgOlxuICAgICAgIGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEzIERldGVjdGluZyBjb250ZXh0IGxvc3QgZXZlbnRzICopXG5cbiAgbWV0aG9kIGlzQ29udGV4dExvc3QgOiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjE0IERldGVjdGluZyBhbmQgZW5hYmxpbmcgZXh0ZW5zaW9ucyAqKVxuXG4gIG1ldGhvZCBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVuc2lvbiA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSB0IG9wdCBtZXRoXG5cbiAgKCogVW50eXBlZCEgKilcbiAgKCoqIENvbnN0YW50cyAqKVxuXG4gIG1ldGhvZCBfREVQVEhfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0lOVFMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9MT09QXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX0ZBTl8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVSTyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORSA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV9TQVRVUkFURV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX0FERF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19SRVZFUlNFX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVFJFQU1fRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEFUSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EWU5BTUlDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlQgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkFDSyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9BTkRfQkFDS18gOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORCA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVIgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT19FUlJPUl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9FTlVNXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX1ZBTFVFXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT1VUX09GX01FTU9SWV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OVEVYVF9MT1NUX1dFQkdMXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RPTlRfQ0FSRV8gOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GQVNURVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTklDRVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfIDogaGludFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX1JHQl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX0FMUEhBXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0NPTE9SXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVJfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1dJRFRIXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfTElORV9XSURUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX01PREVfIDogY3VsbEZhY2VNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9GQUNFXyA6IGZyb250RmFjZURpciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1dSSVRFTUFTS18gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NMRUFSX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9GVU5DXyA6IGRlcHRoRnVuY3Rpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQ0xFQVJfVkFMVUVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WSUVXUE9SVCA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9CT1hfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9DTEVBUl9WQUxVRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfV1JJVEVNQVNLXyA6IGJvb2wgdCBqc19hcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UX1BBUkFNIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVklFV1BPUlRfRElNU18gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NVQlBJWEVMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRURfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUVOX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTFVFX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX1VOSVRTXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GQUNUT1JfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR18yRF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0JVRkZFUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogVHlwZWRfYXJyYXkudWludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfUEFSQU1fIDogaGludE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9TSVpFXyA6IGludCBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1VTQUdFXyA6IGJ1ZmZlclVzYWdlIGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CWVRFIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV9EVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIT1JUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfSU5UXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNF80XzRfNF8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV81XzVfMV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV82XzVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRV9BTFBIQV8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQUdNRU5UX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX0FUVFJJQlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WQVJZSU5HX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURFUl9UWVBFXyA6IHNoYWRlclR5cGUgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUElMRV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfUFJPRyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElOS19TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WQUxJREFURV9TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BVFRBQ0hFRF9TSEFERVJTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1VOSUZPUk1TXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX0FUVFJJQlVURVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05fIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfUFJPR1JBTV8gOiBwcm9ncmFtIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRU5ET1IgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSRVIgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSU0lPTiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1RFWFRVUkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9CSU5ESU5HXyA6IGZyYW1lYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQklORElOR18gOiByZW5kZXJidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9SRU5ERVJCVUZGRVJfU0laRSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVWRVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFU1MgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUFURVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PVEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMV0FZUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfS0VFUCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBMQUNFIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZFUlQgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk9fIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1QgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NQUdfRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01JTl9GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9TXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9UXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV8yRF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBFQVQgOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DTEFNUF9UT19FREdFXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01JUlJPUkVEX1JFUEVBVF8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSXzJEXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfQ1VCRV8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJfIDogdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDpcbiAgICBidWZmZXIgdCBvcHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9WRVJURVhfQVRUUklCXyA6XG4gICAgVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUiA6IGZiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUiA6IHJiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkE0IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjVfQTFfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjU2NSA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlQxNl8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWDhfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9XSURUSF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0hFSUdIVF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVF8gOiBmb3JtYXQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1JFRF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JMVUVfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXyA6IG9iamVjdFR5cGUgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9SRU5ERVJCVUZGRVIgOlxuICAgIHJlbmRlcmJ1ZmZlciB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfVEVYVFVSRSA6IHRleHR1cmUgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUxfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9BVFRBQ0hNRU5UMF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0NPTVBMRVRFXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlNfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfVU5TVVBQT1JURURfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMX1BBUkFNIDpcbiAgICBjb2xvcnNwYWNlQ29udmVyc2lvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORSA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JST1dTRVJfREVGQVVMVF9XRUJHTF8gOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIDUuMTQgV2ViR0xDb250ZXh0RXZlbnQgKilcblxuY2xhc3MgdHlwZSBjb250ZXh0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFxuXG4gIG1ldGhvZCBzdGF0dXNNZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBsZXQgd2ViZ2xjb250ZXh0bG9zdCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRsb3N0XCJcblxuICBsZXQgd2ViZ2xjb250ZXh0cmVzdG9yZWQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JcIlxuZW5kXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dF8gOiBqc19zdHJpbmcgdCAtPiBjb250ZXh0QXR0cmlidXRlcyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBnZXRDb250ZXh0IChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjICMjIChnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikpXG5cbmxldCBnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpIGF0dHJpYnMgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcIndlYmdsXCIpIGF0dHJpYnMgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSBhdHRyaWJzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdCwgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVnZXhwID0gSnMucmVnRXhwIEpzLnRcblxudHlwZSByZXN1bHQgPSBKcy5tYXRjaF9yZXN1bHQgSnMudFxuXG5sZXQgcmVnZXhwIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdpXCIpXG5cbmxldCByZWdleHBfd2l0aF9mbGFnIHMgZiA9XG4gIG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgKFwiZ1wiIF4gZikpXG5cbmxldCBibHVudF9zdHJfYXJyYXlfZ2V0IGEgaSA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBhIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHN0cmluZ19tYXRjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0Lm1hcCAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSkgSnMubWF0Y2hfcmVzdWx0KVxuXG5sZXQgc2VhcmNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uXG4gICAgKEpzLk9wdC5tYXBcbiAgICAgICAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgICAoZnVuIHJlc19wcmUgLT5cbiAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgcmVzX3ByZSBpblxuICAgICAgICAgcmVzIyMuaW5kZXgsIHJlcykpXG5cbmxldCBzZWFyY2hfZm9yd2FyZCA9IHNlYXJjaFxuXG5sZXQgbWF0Y2hlZF9zdHJpbmcgciA9IGJsdW50X3N0cl9hcnJheV9nZXQgciAwXG5cbmxldCBtYXRjaGVkX2dyb3VwIHIgaSA9XG4gIEpzLk9wdGRlZi50b19vcHRpb24gKEpzLk9wdGRlZi5tYXAgKEpzLmFycmF5X2dldCByIGkpIEpzLnRvX2J5dGVzdHJpbmcpXG5cbmxldCBxdW90ZV9yZXBsX3JlID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlskXVwiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcXVvdGVfcmVwbCBzID0gKEpzLmJ5dGVzdHJpbmcgcykjI3JlcGxhY2UgcXVvdGVfcmVwbF9yZSAoSnMuc3RyaW5nIFwiJCQkJFwiKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgciBzIHNfYnkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgciAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IHJlcGxhY2VfZmlyc3QgciBzIHNfYnkgPVxuICBsZXQgZmxhZ3MgPVxuICAgIG1hdGNoIEpzLnRvX2Jvb2wgciMjLmlnbm9yZUNhc2UsIEpzLnRvX2Jvb2wgciMjLm11bHRpbGluZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiXCJcbiAgICB8IGZhbHNlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1cIlxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiaVwiXG4gICAgfCB0cnVlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1pXCJcbiAgaW5cbiAgbGV0IHInID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgciMjLnNvdXJjZSBmbGFncyBpblxuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHInIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgbGlzdF9vZl9qc19hcnJheSBhID1cbiAgbGV0IHJlYyBhdXggYWNjdSBpZHggPVxuICAgIGlmIGlkeCA8IDAgdGhlbiBhY2N1IGVsc2UgYXV4IChibHVudF9zdHJfYXJyYXlfZ2V0IGEgaWR4IDo6IGFjY3UpIChpZHggLSAxKVxuICBpblxuICBhdXggW10gKGEjIy5sZW5ndGggLSAxKVxuXG5sZXQgc3BsaXQgciBzID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cCByKSlcblxubGV0IGJvdW5kZWRfc3BsaXQgciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwTGltaXRlZCByIGkpKVxuXG4oKiBNb3JlIGNvbnN0cnVjdG9ycyAqKVxuXG5sZXQgcXVvdGVfcmUgPSByZWdleHAgXCJbXFxcXF1bKClcXFxcXFxcXHwrKi4/e31eJF1cIlxuXG5sZXQgcXVvdGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcXVvdGVfcmUgKEpzLnN0cmluZyBcIlxcXFwkJlwiKSlcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IHJlZ2V4cCAocXVvdGUgcylcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSByZWdleHBfY2FzZV9mb2xkIChxdW90ZSBzKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFVybCB0YW1wZXJpbmcuICopXG5cbmxldCBzcGxpdCBjIHMgPSBKcy5zdHJfYXJyYXkgKHMjI3NwbGl0IChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpKVxuXG5sZXQgc3BsaXRfMiBjIHMgPVxuICBsZXQgaW5kZXggPSBzIyNpbmRleE9mIChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpIGluXG4gIGlmIGluZGV4IDwgMCB0aGVuIEpzLnVuZGVmaW5lZCBlbHNlIEpzLmRlZiAocyMjc2xpY2UgMCBpbmRleCwgcyMjc2xpY2VfZW5kIChpbmRleCArIDEpKVxuXG5leGNlcHRpb24gTG9jYWxfZXhuXG5cbmxldCBpbnRlcnJ1cHQgKCkgPSByYWlzZSBMb2NhbF9leG5cblxuKCogdXJsIChBS0EgcGVyY2VudCkgZW5jb2RpbmcvZGVjb2RpbmcgKilcblxubGV0IHBsdXNfcmUgPSBSZWdleHAucmVnZXhwX3N0cmluZyBcIitcIlxuXG5sZXQgZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIlMkJcIlxuXG5sZXQgdW5lc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiBcIlxuXG5sZXQgcGx1c19yZV9qc19zdHJpbmcgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiXFxcXCtcIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMgPVxuICBwbHVzX3JlX2pzX3N0cmluZyMjLmxhc3RJbmRleCA6PSAwO1xuICBzIyNyZXBsYWNlIHBsdXNfcmVfanNfc3RyaW5nIChKcy5zdHJpbmcgXCIgXCIpXG5cbmxldCB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMpKVxuXG5sZXQgdXJsZGVjb2RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAoSnMuYnl0ZXN0cmluZyAodW5lc2NhcGVfcGx1cyBzKSkpXG5cbigqbGV0IHVybGVuY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgcykqKVxuXG5sZXQgdXJsZW5jb2RlID8od2l0aF9wbHVzID0gdHJ1ZSkgcyA9XG4gIGlmIHdpdGhfcGx1c1xuICB0aGVuIGVzY2FwZV9wbHVzIChKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpKVxuICBlbHNlIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSlcblxudHlwZSBodHRwX3VybCA9XG4gIHsgaHVfaG9zdCA6IHN0cmluZyAgKCoqIFRoZSBob3N0IHBhcnQgb2YgdGhlIHVybC4gKilcbiAgOyBodV9wb3J0IDogaW50ICAoKiogVGhlIHBvcnQgZm9yIHRoZSBjb25uZWN0aW9uIGlmIGFueS4gKilcbiAgOyBodV9wYXRoIDogc3RyaW5nIGxpc3QgICgqKiBUaGUgcGF0aCBzcGxpdCBvbiBbJy8nXSBjaGFyYWN0ZXJzLiAqKVxuICA7IGh1X3BhdGhfc3RyaW5nIDogc3RyaW5nICAoKiogVGhlIG9yaWdpbmFsIGVudGlyZSBwYXRoLiAqKVxuICA7IGh1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgKCoqIEFyZ3VtZW50cyBhcyBhIGZpZWxkLXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbiBsaXN0LiopXG4gIDsgaHVfZnJhZ21lbnQgOiBzdHJpbmcgICgqKiBUaGUgZnJhZ21lbnQgcGFydCAoYWZ0ZXIgdGhlIFsnIyddIGNoYXJhY3RlcikuICopXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgSFRUUCB1cmwuICopXG5cbnR5cGUgZmlsZV91cmwgPVxuICB7IGZ1X3BhdGggOiBzdHJpbmcgbGlzdFxuICA7IGZ1X3BhdGhfc3RyaW5nIDogc3RyaW5nXG4gIDsgZnVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICA7IGZ1X2ZyYWdtZW50IDogc3RyaW5nXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgbG9jYWwgZmlsZSB1cmxzLiAqKVxuXG50eXBlIHVybCA9XG4gIHwgSHR0cCBvZiBodHRwX3VybFxuICB8IEh0dHBzIG9mIGh0dHBfdXJsXG4gIHwgRmlsZSBvZiBmaWxlX3VybFxuICAgICAgKCoqIFRoZSB0eXBlIGZvciB1cmxzLiBbRmlsZV0gaXMgZm9yIGxvY2FsIGZpbGVzIGFuZCBbRXhvdGljIHNdIGlzIGZvclxuICAgIHVua25vd24vdW5zdXBwb3J0ZWQgcHJvdG9jb2xzLiAqKVxuXG5leGNlcHRpb24gTm90X2FuX2h0dHBfcHJvdG9jb2xcblxubGV0IGlzX3NlY3VyZSBwcm90X3N0cmluZyA9XG4gIG1hdGNoIEpzLnRvX2J5dGVzdHJpbmcgcHJvdF9zdHJpbmcjI3RvTG93ZXJDYXNlIHdpdGhcbiAgfCBcImh0dHBzOlwiIHwgXCJodHRwc1wiIC0+IHRydWVcbiAgfCBcImh0dHA6XCIgfCBcImh0dHBcIiAtPiBmYWxzZVxuICB8IFwiZmlsZTpcIiB8IFwiZmlsZVwiIHwgXyAtPiByYWlzZSBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG4oKiBwb3J0IG51bWJlciAqKVxubGV0IGRlZmF1bHRfaHR0cF9wb3J0ID0gODBcblxubGV0IGRlZmF1bHRfaHR0cHNfcG9ydCA9IDQ0M1xuXG4oKiBwYXRoICopXG5sZXQgcGF0aF9vZl9wYXRoX3N0cmluZyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgbGV0IGogPSB0cnkgU3RyaW5nLmluZGV4X2Zyb20gcyBpICcvJyB3aXRoIE5vdF9mb3VuZCAtPiBsIGluXG4gICAgbGV0IHdvcmQgPSBTdHJpbmcuc3ViIHMgaSAoaiAtIGkpIGluXG4gICAgaWYgaiA+PSBsIHRoZW4gWyB3b3JkIF0gZWxzZSB3b3JkIDo6IGF1eCAoaiArIDEpXG4gIGluXG4gIG1hdGNoIGF1eCAwIHdpdGhcbiAgfCBbIFwiXCIgXSAtPiBbXVxuICB8IFsgXCJcIjsgXCJcIiBdIC0+IFsgXCJcIiBdXG4gIHwgYSAtPiBhXG5cbigqIEFyZ3VtZW50cyAqKVxubGV0IGVuY29kZV9hcmd1bWVudHMgbCA9XG4gIFN0cmluZy5jb25jYXQgXCImXCIgKExpc3QubWFwIChmdW4gKG4sIHYpIC0+IHVybGVuY29kZSBuIF4gXCI9XCIgXiB1cmxlbmNvZGUgdikgbClcblxubGV0IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIHMgPVxuICBsZXQgYXJyID0gc3BsaXQgJyYnIHMgaW5cbiAgbGV0IGxlbiA9IGFyciMjLmxlbmd0aCBpblxuICBsZXQgbmFtZV92YWx1ZV9zcGxpdCBzID0gc3BsaXRfMiAnPScgcyBpblxuICBsZXQgcmVjIGF1eCBhY2MgaWR4ID1cbiAgICBpZiBpZHggPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgYXV4XG4gICAgICAgICAgKEpzLk9wdGRlZi5jYXNlIChKcy5hcnJheV9nZXQgYXJyIGlkeCkgaW50ZXJydXB0IChmdW4gcyAtPlxuICAgICAgICAgICAgICAgSnMuT3B0ZGVmLmNhc2UgKG5hbWVfdmFsdWVfc3BsaXQgcykgaW50ZXJydXB0IChmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGdldCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgZ2V0IHgsIGdldCB5KSlcbiAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgKHByZWQgaWR4KVxuICAgICAgd2l0aCBMb2NhbF9leG4gLT4gYXV4IGFjYyAocHJlZCBpZHgpXG4gIGluXG4gIGF1eCBbXSAobGVuIC0gMSlcblxubGV0IGRlY29kZV9hcmd1bWVudHMgcyA9IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCB1cmxfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmdcbiAgICAgICBcIl4oW0hoXVtUdF1bVHRdW1BwXVtTc10/KTovLyhbMC05YS16QS1aLi1dK3xcXFxcW1swLTlhLXpBLVouLV0rXFxcXF18XFxcXFtbMC05QS1GYS1mOi5dK1xcXFxdKT8oOihbMC05XSspKT8oLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/KT8kXCIpXG5cbmxldCBmaWxlX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nIFwiXihbRmZdW0lpXVtMbF1bRWVdKTovLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/JFwiKVxuXG5sZXQgdXJsX29mX2pzX3N0cmluZyBzID1cbiAgSnMuT3B0LmNhc2VcbiAgICAodXJsX3JlIyNleGVjIHMpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKGZpbGVfcmUjI2V4ZWMgcylcbiAgICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChGaWxlXG4gICAgICAgICAgICAgICB7IGZ1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfYXJndW1lbnRzID1cbiAgICAgICAgICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgOyBmdV9mcmFnbWVudCA9XG4gICAgICAgICAgICAgICAgICAgSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgfSkpKVxuICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgbGV0IHNzbCA9IGlzX3NlY3VyZSAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxKSBpbnRlcnJ1cHQpIGluXG4gICAgICBsZXQgcG9ydF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gaWYgc3NsIHRoZW4gNDQzIGVsc2UgODBcbiAgICAgICAgfCBzIC0+IGludF9vZl9zdHJpbmcgc1xuICAgICAgaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgaW5cbiAgICAgIGxldCB1cmwgPVxuICAgICAgICB7IGh1X2hvc3QgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICA7IGh1X3BvcnQgPVxuICAgICAgICAgICAgcG9ydF9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKSlcbiAgICAgICAgOyBodV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICA7IGh1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgOyBodV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgOCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICA7IGh1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEwKSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBTb21lIChpZiBzc2wgdGhlbiBIdHRwcyB1cmwgZWxzZSBIdHRwIHVybCkpXG5cbmxldCB1cmxfb2Zfc3RyaW5nIHMgPSB1cmxfb2ZfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCBzdHJpbmdfb2ZfdXJsID0gZnVuY3Rpb25cbiAgfCBGaWxlIHsgZnVfcGF0aCA9IHBhdGg7IGZ1X2FyZ3VtZW50cyA9IGFyZ3M7IGZ1X2ZyYWdtZW50ID0gZnJhZzsgXyB9IC0+IChcbiAgICAgIFwiZmlsZTovL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cFxuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cDovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA4MCAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwc1xuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cHM6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgNDQzIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuXG5tb2R1bGUgQ3VycmVudCA9IHN0cnVjdFxuICBsZXQgbCA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLk9wdGRlZi5yZXR1cm4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24pXG4gICAgdGhlbiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvblxuICAgIGVsc2VcbiAgICAgIGxldCBlbXB0eSA9IEpzLnN0cmluZyBcIlwiIGluXG4gICAgICBvYmplY3QlanNcbiAgICAgICAgdmFsIG11dGFibGUgaHJlZiA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcHJvdG9jb2wgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3QgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3RuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwb3J0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwYXRobmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgc2VhcmNoID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBoYXNoID0gZW1wdHlcblxuICAgICAgICB2YWwgb3JpZ2luID0gSnMudW5kZWZpbmVkXG5cbiAgICAgICAgbWV0aG9kIHJlbG9hZCA9ICgpXG5cbiAgICAgICAgbWV0aG9kIHJlcGxhY2UgXyA9ICgpXG5cbiAgICAgICAgbWV0aG9kIGFzc2lnbiBfID0gKClcbiAgICAgIGVuZFxuXG4gIGxldCBob3N0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhvc3RuYW1lXG5cbiAgbGV0IHByb3RvY29sID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnByb3RvY29sXG5cbiAgbGV0IHBvcnQgPVxuICAgIChmdW4gKCkgLT5cbiAgICAgIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChKcy50b19ieXRlc3RyaW5nIGwjIy5wb3J0KSkgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZSlcbiAgICAgICgpXG5cbiAgbGV0IHBhdGhfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnBhdGhuYW1lXG5cbiAgbGV0IHBhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyaW5nXG5cbiAgbGV0IGFyZ3VtZW50cyA9XG4gICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgIChpZiBKcy5lcXVhbHMgKGwjIy5zZWFyY2gjI2NoYXJBdCAwKSAoSnMuc3RyaW5nIFwiP1wiKVxuICAgICAgIHRoZW4gbCMjLnNlYXJjaCMjc2xpY2VfZW5kIDFcbiAgICAgICBlbHNlIGwjIy5zZWFyY2gpXG5cbiAgbGV0IGdldF9mcmFnbWVudCAoKSA9XG4gICAgbGV0IHMgPSBKcy50b19ieXRlc3RyaW5nIGwjIy5oYXNoIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBDaGFyLmVxdWFsIHMuWzBdICcjJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgZWxzZSBzXG5cbiAgbGV0IHNldF9mcmFnbWVudCBzID0gbCMjLmhhc2ggOj0gSnMuYnl0ZXN0cmluZyBzXG5cbiAgbGV0IGdldCAoKSA9IHVybF9vZl9qc19zdHJpbmcgbCMjLmhyZWZcblxuICBsZXQgc2V0IHUgPSBsIyMuaHJlZiA6PSBKcy5ieXRlc3RyaW5nIChzdHJpbmdfb2ZfdXJsIHUpXG5cbiAgbGV0IGFzX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ocmVmXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxubGV0IHVwZGF0ZV9maWxlIH5uYW1lIH5jb250ZW50ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgbmFtZSBpblxuICBvdXRwdXRfc3RyaW5nIG9jIGNvbnRlbnQ7XG4gIGNsb3NlX291dCBvY1xuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDpcbiAgb3V0X2NoYW5uZWwgLT4gKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxubGV0IHNldF9jaGFubmVsX2ZsdXNoZXIgKG91dF9jaGFubmVsIDogb3V0X2NoYW5uZWwpIChmIDogc3RyaW5nIC0+IHVuaXQpID1cbiAgbGV0IGYnIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrID1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gcyAtPiBmIChKcy50b19ieXRlc3RyaW5nIHMpKVxuICBpblxuICBzZXRfY2hhbm5lbF9vdXRwdXQnIG91dF9jaGFubmVsIGYnXG5cbmxldCBzZXRfY2hhbm5lbF9maWxsZXIgKGluX2NoYW5uZWwgOiBpbl9jaGFubmVsKSAoZiA6IHVuaXQgLT4gc3RyaW5nKSA9XG4gIGxldCBmJyA6ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIGYgaW5cbiAgc2V0X2NoYW5uZWxfaW5wdXQnIGluX2NoYW5uZWwgZidcblxuZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG5leHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6XG4gIHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG5sZXQgbW91bnQgfnBhdGggZiA9XG4gIG1vdW50X2F1dG9sb2FkIHBhdGggKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmVmaXggcGF0aCAtPiBmIH5wcmVmaXggfnBhdGgpKVxuXG5sZXQgdW5tb3VudCB+cGF0aCA9IHVubW91bnQgcGF0aFxuXG5sZXQganNfb2Zfb2NhbWxfdmVyc2lvbiA9XG4gIGlmIFN0cmluZy5lcXVhbCBMaWJfdmVyc2lvbi5naXRfdmVyc2lvbiBcIlwiXG4gIHRoZW4gTGliX3ZlcnNpb24uc1xuICBlbHNlIExpYl92ZXJzaW9uLnMgXiBcIitcIiBeIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE5IEFsZXhhbmRlciBZYW5pblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJTaXplID0gb2JqZWN0XG4gIG1ldGhvZCBpbmxpbmVTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBibG9ja1NpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGJveCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvYnNlcnZlX3dpdGhPcHRpb25zIDpcbiAgICAjRG9tLm5vZGUgSnMudCAtPiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgOiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1Jlc2l6ZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCByZXNpemVPYnNlcnZlclxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgOlxuICAgICggICAocmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiByZXNpemVPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHJlc2l6ZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogcmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oYm94IDogSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uKVxuICAgICgpIDogcmVzaXplT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvYnMgPSBuZXclanMgcmVzaXplT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgKG1hdGNoIGJveCB3aXRoXG4gIHwgTm9uZSAtPiBvYnMjI29ic2VydmUgbm9kZVxuICB8IFNvbWUgYm94IC0+XG4gICAgICBsZXQgb3B0cyA9IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIGluXG4gICAgICBvcHRzIyMuYm94IDo9IGJveDtcbiAgICAgIG9icyMjb2JzZXJ2ZV93aXRoT3B0aW9ucyBub2RlIG9wdHMpO1xuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjEgUGhpbGlwIFdoaXRlXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBlbnRyeVR5cGVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW50cnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydFRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCA9IG9iamVjdFxuICBtZXRob2QgZ2V0RW50cmllcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9QZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyIDpcbiAgICAoICAgKHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgSnMudCAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IG9ic2VydmUgfmVudHJ5X3R5cGVzIH5mID1cbiAgbGV0IGVudHJ5X3R5cGVzID0gZW50cnlfdHlwZXMgfD4gTGlzdC5tYXAgSnMuc3RyaW5nIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgaW5cbiAgbGV0IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGxldCAoKSA9IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQjIy5lbnRyeVR5cGVzIDo9IGVudHJ5X3R5cGVzIGluXG4gIGxldCBvYnMgPSBuZXclanMgcGVyZm9ybWFuY2VPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBjaGlsZExpc3QgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGEgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YnRyZWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZUZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uUmVjb3JkID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZGVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbW92ZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWVzcGFjZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSA6IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX011dGF0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAobXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGNoaWxkX2xpc3QgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZXMgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhIDogYm9vbCBvcHRpb24pXG4gICAgPyhzdWJ0cmVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9maWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0IG9wdGlvbilcbiAgICAoKSA6IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvcHRfaXRlciB4IGYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb2JzID0gbmV3JWpzIG11dGF0aW9uT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0IGNmZyA9IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hpbGRfbGlzdCAoZnVuIHYgLT4gY2ZnIyMuY2hpbGRMaXN0IDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZXMgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZXMgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGEgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGEgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgc3VidHJlZSAoZnVuIHYgLT4gY2ZnIyMuc3VidHJlZSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVPbGRWYWx1ZSA6PSB2KSBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDo9IHYpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgYXR0cmlidXRlX2ZpbHRlciAoZnVuIGwgLT5cbiAgICAgICAgY2ZnIyMuYXR0cmlidXRlRmlsdGVyIDo9IEpzLmFycmF5IChBcnJheS5vZl9saXN0IGwpKVxuICBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgbm9kZSBjZmcgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IFBpZXJyZSBDaGFtYmFydCAyMDEyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9IDwgPiBKcy50XG5cbmxldCBvYmogPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpICh2IDogJ2EpID1cbiAgKCogJ18nIGlzIGFkZGVkIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG9iamVjdHMgbWV0aG9kcyAqKVxuICBKcy5VbnNhZmUuc2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSkgdlxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgPVxuICBKcy5VbnNhZmUuZGVsZXRlIHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA6ICdhIEpzLk9wdGRlZi50ID1cbiAgSnMuVW5zYWZlLmdldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0ID1cbiAgbGV0IGtleV9hcnJheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICAgIEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0IyNrZXlzIHRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gcHJlZCBrZXlfYXJyYXkjIy5sZW5ndGggZG9cbiAgICBsZXQga2V5ID1cbiAgICAgIEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBrZXlfYXJyYXkgaSkgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIkpzdGFibGUua2V5c1wiKVxuICAgIGluXG4gICAgcmVzIDo9IGtleSMjc3Vic3RyaW5nIDAgKHByZWQga2V5IyMubGVuZ3RoKSA6OiAhcmVzXG4gIGRvbmU7XG4gIExpc3QucmV2ICFyZXNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgR3LDqWdvaXJlIEhlbnJ5IDIwMTAuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcGFyc2VfIDpcbiAgICAnYSAnYiAnYyAnZC4ganNfc3RyaW5nIHQgLT4gKCdiIHQsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5XyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuICdhIC0+ICgnYiwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBqc29uIDoganNvbiBKcy50ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBpbnB1dF9yZXZpdmVyID1cbiAgbGV0IHJldml2ZXIgX3RoaXMgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiB2YWx1ZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gT2JqLnJlcHIgKHRvX2J5dGVzdHJpbmcgKFVuc2FmZS5jb2VyY2UgdmFsdWUpKVxuICAgIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBKcy5hcnJheV9lbXB0eVxuICAgICAgICAgICAgJiYgKFVuc2FmZS5jb2VyY2UgdmFsdWUpIyMubGVuZ3RoID09IDRcbiAgICAgICAgICAgICYmIFVuc2FmZS5nZXQgdmFsdWUgMCA9PSAyNTVcbiAgICB0aGVuXG4gICAgICBPYmoucmVwclxuICAgICAgICAoSnNvb19ydW50aW1lLkludDY0LmNyZWF0ZV9pbnQ2NF9sb19taV9oaVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAxKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAyKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAzKSlcbiAgICBlbHNlIE9iai5yZXByIHZhbHVlXG4gIGluXG4gIHdyYXBfbWV0aF9jYWxsYmFjayByZXZpdmVyXG5cbmxldCB1bnNhZmVfaW5wdXQgcyA9IGpzb24jI3BhcnNlXyBzIGlucHV0X3Jldml2ZXJcblxuY2xhc3MgdHlwZSBvYmogPSBvYmplY3RcbiAgbWV0aG9kIGNvbnN0cnVjdG9yIDogJ2EuICdhIGNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG1sSW50NjRfY29uc3RyID1cbiAgbGV0IGR1bW15X2ludDY0ID0gMUwgaW5cbiAgbGV0IGR1bW15X29iaiA6IG9iaiB0ID0gT2JqLm1hZ2ljIGR1bW15X2ludDY0IGluXG4gIGR1bW15X29iaiMjLmNvbnN0cnVjdG9yXG5cbmxldCBvdXRwdXRfcmV2aXZlciBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICBpZiBPYmoudGFnIChPYmoucmVwciB2YWx1ZSkgPSBPYmouc3RyaW5nX3RhZ1xuICB0aGVuIE9iai5yZXByIChieXRlc3RyaW5nIChPYmoubWFnaWMgdmFsdWUgOiBzdHJpbmcpKVxuICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgbWxJbnQ2NF9jb25zdHJcbiAgdGhlblxuICAgIGxldCB2YWx1ZSA9IFVuc2FmZS5jb2VyY2UgdmFsdWUgaW5cbiAgICBPYmoucmVwciAoYXJyYXkgW3wgMjU1OyB2YWx1ZSMjLmxvOyB2YWx1ZSMjLm1pOyB2YWx1ZSMjLmhpIHxdKVxuICBlbHNlIE9iai5yZXByIHZhbHVlXG5cbmxldCBvdXRwdXQgb2JqID0ganNvbiMjc3RyaW5naWZ5XyBvYmogKEpzLndyYXBfY2FsbGJhY2sgb3V0cHV0X3Jldml2ZXIpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgKCogVGhlIHR5cGUgb2YgQ1NTIGNvbG9ycy4gRmlyc3QgYnkgbmFtZSBhbmQgdGhlbiBieSBjb25zdHJ1Y3Rvci4gKilcbiAgdHlwZSBuYW1lID1cbiAgICB8IEFsaWNlYmx1ZVxuICAgIHwgQW50aXF1ZXdoaXRlXG4gICAgfCBBcXVhXG4gICAgfCBBcXVhbWFyaW5lXG4gICAgfCBBenVyZVxuICAgIHwgQmVpZ2VcbiAgICB8IEJpc3F1ZVxuICAgIHwgQmxhY2tcbiAgICB8IEJsYW5jaGVkYWxtb25kXG4gICAgfCBCbHVlXG4gICAgfCBCbHVldmlvbGV0XG4gICAgfCBCcm93blxuICAgIHwgQnVybHl3b29kXG4gICAgfCBDYWRldGJsdWVcbiAgICB8IENoYXJ0cmV1c2VcbiAgICB8IENob2NvbGF0ZVxuICAgIHwgQ29yYWxcbiAgICB8IENvcm5mbG93ZXJibHVlXG4gICAgfCBDb3Juc2lsa1xuICAgIHwgQ3JpbXNvblxuICAgIHwgQ3lhblxuICAgIHwgRGFya2JsdWVcbiAgICB8IERhcmtjeWFuXG4gICAgfCBEYXJrZ29sZGVucm9kXG4gICAgfCBEYXJrZ3JheVxuICAgIHwgRGFya2dyZWVuXG4gICAgfCBEYXJrZ3JleVxuICAgIHwgRGFya2toYWtpXG4gICAgfCBEYXJrbWFnZW50YVxuICAgIHwgRGFya29saXZlZ3JlZW5cbiAgICB8IERhcmtvcmFuZ2VcbiAgICB8IERhcmtvcmNoaWRcbiAgICB8IERhcmtyZWRcbiAgICB8IERhcmtzYWxtb25cbiAgICB8IERhcmtzZWFncmVlblxuICAgIHwgRGFya3NsYXRlYmx1ZVxuICAgIHwgRGFya3NsYXRlZ3JheVxuICAgIHwgRGFya3NsYXRlZ3JleVxuICAgIHwgRGFya3R1cnF1b2lzZVxuICAgIHwgRGFya3Zpb2xldFxuICAgIHwgRGVlcHBpbmtcbiAgICB8IERlZXBza3libHVlXG4gICAgfCBEaW1ncmF5XG4gICAgfCBEaW1ncmV5XG4gICAgfCBEb2RnZXJibHVlXG4gICAgfCBGaXJlYnJpY2tcbiAgICB8IEZsb3JhbHdoaXRlXG4gICAgfCBGb3Jlc3RncmVlblxuICAgIHwgRnVjaHNpYVxuICAgIHwgR2FpbnNib3JvXG4gICAgfCBHaG9zdHdoaXRlXG4gICAgfCBHb2xkXG4gICAgfCBHb2xkZW5yb2RcbiAgICB8IEdyYXlcbiAgICB8IEdyZXlcbiAgICB8IEdyZWVuXG4gICAgfCBHcmVlbnllbGxvd1xuICAgIHwgSG9uZXlkZXdcbiAgICB8IEhvdHBpbmtcbiAgICB8IEluZGlhbnJlZFxuICAgIHwgSW5kaWdvXG4gICAgfCBJdm9yeVxuICAgIHwgS2hha2lcbiAgICB8IExhdmVuZGVyXG4gICAgfCBMYXZlbmRlcmJsdXNoXG4gICAgfCBMYXduZ3JlZW5cbiAgICB8IExlbW9uY2hpZmZvblxuICAgIHwgTGlnaHRibHVlXG4gICAgfCBMaWdodGNvcmFsXG4gICAgfCBMaWdodGN5YW5cbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBMaWdodGdyYXlcbiAgICB8IExpZ2h0Z3JlZW5cbiAgICB8IExpZ2h0Z3JleVxuICAgIHwgTGlnaHRwaW5rXG4gICAgfCBMaWdodHNhbG1vblxuICAgIHwgTGlnaHRzZWFncmVlblxuICAgIHwgTGlnaHRza3libHVlXG4gICAgfCBMaWdodHNsYXRlZ3JheVxuICAgIHwgTGlnaHRzbGF0ZWdyZXlcbiAgICB8IExpZ2h0c3RlZWxibHVlXG4gICAgfCBMaWdodHllbGxvd1xuICAgIHwgTGltZVxuICAgIHwgTGltZWdyZWVuXG4gICAgfCBMaW5lblxuICAgIHwgTWFnZW50YVxuICAgIHwgTWFyb29uXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBNZWRpdW1ibHVlXG4gICAgfCBNZWRpdW1vcmNoaWRcbiAgICB8IE1lZGl1bXB1cnBsZVxuICAgIHwgTWVkaXVtc2VhZ3JlZW5cbiAgICB8IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBNaWRuaWdodGJsdWVcbiAgICB8IE1pbnRjcmVhbVxuICAgIHwgTWlzdHlyb3NlXG4gICAgfCBNb2NjYXNpblxuICAgIHwgTmF2YWpvd2hpdGVcbiAgICB8IE5hdnlcbiAgICB8IE9sZGxhY2VcbiAgICB8IE9saXZlXG4gICAgfCBPbGl2ZWRyYWJcbiAgICB8IE9yYW5nZVxuICAgIHwgT3JhbmdlcmVkXG4gICAgfCBPcmNoaWRcbiAgICB8IFBhbGVnb2xkZW5yb2RcbiAgICB8IFBhbGVncmVlblxuICAgIHwgUGFsZXR1cnF1b2lzZVxuICAgIHwgUGFsZXZpb2xldHJlZFxuICAgIHwgUGFwYXlhd2hpcFxuICAgIHwgUGVhY2hwdWZmXG4gICAgfCBQZXJ1XG4gICAgfCBQaW5rXG4gICAgfCBQbHVtXG4gICAgfCBQb3dkZXJibHVlXG4gICAgfCBQdXJwbGVcbiAgICB8IFJlZFxuICAgIHwgUm9zeWJyb3duXG4gICAgfCBSb3lhbGJsdWVcbiAgICB8IFNhZGRsZWJyb3duXG4gICAgfCBTYWxtb25cbiAgICB8IFNhbmR5YnJvd25cbiAgICB8IFNlYWdyZWVuXG4gICAgfCBTZWFzaGVsbFxuICAgIHwgU2llbm5hXG4gICAgfCBTaWx2ZXJcbiAgICB8IFNreWJsdWVcbiAgICB8IFNsYXRlYmx1ZVxuICAgIHwgU2xhdGVncmF5XG4gICAgfCBTbGF0ZWdyZXlcbiAgICB8IFNub3dcbiAgICB8IFNwcmluZ2dyZWVuXG4gICAgfCBTdGVlbGJsdWVcbiAgICB8IFRhblxuICAgIHwgVGVhbFxuICAgIHwgVGhpc3RsZVxuICAgIHwgVG9tYXRvXG4gICAgfCBUdXJxdW9pc2VcbiAgICB8IFZpb2xldFxuICAgIHwgV2hlYXRcbiAgICB8IFdoaXRlXG4gICAgfCBXaGl0ZXNtb2tlXG4gICAgfCBZZWxsb3dcbiAgICB8IFllbGxvd2dyZWVuXG5cbiAgbGV0IHN0cmluZ19vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiBcImFsaWNlYmx1ZVwiXG4gICAgfCBBbnRpcXVld2hpdGUgLT4gXCJhbnRpcXVld2hpdGVcIlxuICAgIHwgQXF1YSAtPiBcImFxdWFcIlxuICAgIHwgQXF1YW1hcmluZSAtPiBcImFxdWFtYXJpbmVcIlxuICAgIHwgQXp1cmUgLT4gXCJhenVyZVwiXG4gICAgfCBCZWlnZSAtPiBcImJlaWdlXCJcbiAgICB8IEJpc3F1ZSAtPiBcImJpc3F1ZVwiXG4gICAgfCBCbGFjayAtPiBcImJsYWNrXCJcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgIHwgQmx1ZSAtPiBcImJsdWVcIlxuICAgIHwgQmx1ZXZpb2xldCAtPiBcImJsdWV2aW9sZXRcIlxuICAgIHwgQnJvd24gLT4gXCJicm93blwiXG4gICAgfCBCdXJseXdvb2QgLT4gXCJidXJseXdvb2RcIlxuICAgIHwgQ2FkZXRibHVlIC0+IFwiY2FkZXRibHVlXCJcbiAgICB8IENoYXJ0cmV1c2UgLT4gXCJjaGFydHJldXNlXCJcbiAgICB8IENob2NvbGF0ZSAtPiBcImNob2NvbGF0ZVwiXG4gICAgfCBDb3JhbCAtPiBcImNvcmFsXCJcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgIHwgQ29ybnNpbGsgLT4gXCJjb3Juc2lsa1wiXG4gICAgfCBDcmltc29uIC0+IFwiY3JpbXNvblwiXG4gICAgfCBDeWFuIC0+IFwiY3lhblwiXG4gICAgfCBEYXJrYmx1ZSAtPiBcImRhcmtibHVlXCJcbiAgICB8IERhcmtjeWFuIC0+IFwiZGFya2N5YW5cIlxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiBcImRhcmtnb2xkZW5yb2RcIlxuICAgIHwgRGFya2dyYXkgLT4gXCJkYXJrZ3JheVwiXG4gICAgfCBEYXJrZ3JlZW4gLT4gXCJkYXJrZ3JlZW5cIlxuICAgIHwgRGFya2dyZXkgLT4gXCJkYXJrZ3JleVwiXG4gICAgfCBEYXJra2hha2kgLT4gXCJkYXJra2hha2lcIlxuICAgIHwgRGFya21hZ2VudGEgLT4gXCJkYXJrbWFnZW50YVwiXG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICB8IERhcmtvcmFuZ2UgLT4gXCJkYXJrb3JhbmdlXCJcbiAgICB8IERhcmtvcmNoaWQgLT4gXCJkYXJrb3JjaGlkXCJcbiAgICB8IERhcmtyZWQgLT4gXCJkYXJrcmVkXCJcbiAgICB8IERhcmtzYWxtb24gLT4gXCJkYXJrc2FsbW9uXCJcbiAgICB8IERhcmtzZWFncmVlbiAtPiBcImRhcmtzZWFncmVlblwiXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgfCBEYXJrdmlvbGV0IC0+IFwiZGFya3Zpb2xldFwiXG4gICAgfCBEZWVwcGluayAtPiBcImRlZXBwaW5rXCJcbiAgICB8IERlZXBza3libHVlIC0+IFwiZGVlcHNreWJsdWVcIlxuICAgIHwgRGltZ3JheSAtPiBcImRpbWdyYXlcIlxuICAgIHwgRGltZ3JleSAtPiBcImRpbWdyZXlcIlxuICAgIHwgRG9kZ2VyYmx1ZSAtPiBcImRvZGdlcmJsdWVcIlxuICAgIHwgRmlyZWJyaWNrIC0+IFwiZmlyZWJyaWNrXCJcbiAgICB8IEZsb3JhbHdoaXRlIC0+IFwiZmxvcmFsd2hpdGVcIlxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gXCJmb3Jlc3RncmVlblwiXG4gICAgfCBGdWNoc2lhIC0+IFwiZnVjaHNpYVwiXG4gICAgfCBHYWluc2Jvcm8gLT4gXCJnYWluc2Jvcm9cIlxuICAgIHwgR2hvc3R3aGl0ZSAtPiBcImdob3N0d2hpdGVcIlxuICAgIHwgR29sZCAtPiBcImdvbGRcIlxuICAgIHwgR29sZGVucm9kIC0+IFwiZ29sZGVucm9kXCJcbiAgICB8IEdyYXkgLT4gXCJncmF5XCJcbiAgICB8IEdyZWVuIC0+IFwiZ3JlZW5cIlxuICAgIHwgR3JlZW55ZWxsb3cgLT4gXCJncmVlbnllbGxvd1wiXG4gICAgfCBHcmV5IC0+IFwiZ3JleVwiXG4gICAgfCBIb25leWRldyAtPiBcImhvbmV5ZGV3XCJcbiAgICB8IEhvdHBpbmsgLT4gXCJob3RwaW5rXCJcbiAgICB8IEluZGlhbnJlZCAtPiBcImluZGlhbnJlZFwiXG4gICAgfCBJbmRpZ28gLT4gXCJpbmRpZ29cIlxuICAgIHwgSXZvcnkgLT4gXCJpdm9yeVwiXG4gICAgfCBLaGFraSAtPiBcImtoYWtpXCJcbiAgICB8IExhdmVuZGVyIC0+IFwibGF2ZW5kZXJcIlxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiBcImxhdmVuZGVyYmx1c2hcIlxuICAgIHwgTGF3bmdyZWVuIC0+IFwibGF3bmdyZWVuXCJcbiAgICB8IExlbW9uY2hpZmZvbiAtPiBcImxlbW9uY2hpZmZvblwiXG4gICAgfCBMaWdodGJsdWUgLT4gXCJsaWdodGJsdWVcIlxuICAgIHwgTGlnaHRjb3JhbCAtPiBcImxpZ2h0Y29yYWxcIlxuICAgIHwgTGlnaHRjeWFuIC0+IFwibGlnaHRjeWFuXCJcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgIHwgTGlnaHRncmF5IC0+IFwibGlnaHRncmF5XCJcbiAgICB8IExpZ2h0Z3JlZW4gLT4gXCJsaWdodGdyZWVuXCJcbiAgICB8IExpZ2h0Z3JleSAtPiBcImxpZ2h0Z3JleVwiXG4gICAgfCBMaWdodHBpbmsgLT4gXCJsaWdodHBpbmtcIlxuICAgIHwgTGlnaHRzYWxtb24gLT4gXCJsaWdodHNhbG1vblwiXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IFwibGlnaHRzZWFncmVlblwiXG4gICAgfCBMaWdodHNreWJsdWUgLT4gXCJsaWdodHNreWJsdWVcIlxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gXCJsaWdodHllbGxvd1wiXG4gICAgfCBMaW1lIC0+IFwibGltZVwiXG4gICAgfCBMaW1lZ3JlZW4gLT4gXCJsaW1lZ3JlZW5cIlxuICAgIHwgTGluZW4gLT4gXCJsaW5lblwiXG4gICAgfCBNYWdlbnRhIC0+IFwibWFnZW50YVwiXG4gICAgfCBNYXJvb24gLT4gXCJtYXJvb25cIlxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgIHwgTWVkaXVtYmx1ZSAtPiBcIm1lZGl1bWJsdWVcIlxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IFwibWVkaXVtb3JjaGlkXCJcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiBcIm1lZGl1bXB1cnBsZVwiXG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgIHwgTWlkbmlnaHRibHVlIC0+IFwibWlkbmlnaHRibHVlXCJcbiAgICB8IE1pbnRjcmVhbSAtPiBcIm1pbnRjcmVhbVwiXG4gICAgfCBNaXN0eXJvc2UgLT4gXCJtaXN0eXJvc2VcIlxuICAgIHwgTW9jY2FzaW4gLT4gXCJtb2NjYXNpblwiXG4gICAgfCBOYXZham93aGl0ZSAtPiBcIm5hdmFqb3doaXRlXCJcbiAgICB8IE5hdnkgLT4gXCJuYXZ5XCJcbiAgICB8IE9sZGxhY2UgLT4gXCJvbGRsYWNlXCJcbiAgICB8IE9saXZlIC0+IFwib2xpdmVcIlxuICAgIHwgT2xpdmVkcmFiIC0+IFwib2xpdmVkcmFiXCJcbiAgICB8IE9yYW5nZSAtPiBcIm9yYW5nZVwiXG4gICAgfCBPcmFuZ2VyZWQgLT4gXCJvcmFuZ2VyZWRcIlxuICAgIHwgT3JjaGlkIC0+IFwib3JjaGlkXCJcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gXCJwYWxlZ29sZGVucm9kXCJcbiAgICB8IFBhbGVncmVlbiAtPiBcInBhbGVncmVlblwiXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IFwicGFsZXZpb2xldHJlZFwiXG4gICAgfCBQYXBheWF3aGlwIC0+IFwicGFwYXlhd2hpcFwiXG4gICAgfCBQZWFjaHB1ZmYgLT4gXCJwZWFjaHB1ZmZcIlxuICAgIHwgUGVydSAtPiBcInBlcnVcIlxuICAgIHwgUGluayAtPiBcInBpbmtcIlxuICAgIHwgUGx1bSAtPiBcInBsdW1cIlxuICAgIHwgUG93ZGVyYmx1ZSAtPiBcInBvd2RlcmJsdWVcIlxuICAgIHwgUHVycGxlIC0+IFwicHVycGxlXCJcbiAgICB8IFJlZCAtPiBcInJlZFwiXG4gICAgfCBSb3N5YnJvd24gLT4gXCJyb3N5YnJvd25cIlxuICAgIHwgUm95YWxibHVlIC0+IFwicm95YWxibHVlXCJcbiAgICB8IFNhZGRsZWJyb3duIC0+IFwic2FkZGxlYnJvd25cIlxuICAgIHwgU2FsbW9uIC0+IFwic2FsbW9uXCJcbiAgICB8IFNhbmR5YnJvd24gLT4gXCJzYW5keWJyb3duXCJcbiAgICB8IFNlYWdyZWVuIC0+IFwic2VhZ3JlZW5cIlxuICAgIHwgU2Vhc2hlbGwgLT4gXCJzZWFzaGVsbFwiXG4gICAgfCBTaWVubmEgLT4gXCJzaWVubmFcIlxuICAgIHwgU2lsdmVyIC0+IFwic2lsdmVyXCJcbiAgICB8IFNreWJsdWUgLT4gXCJza3libHVlXCJcbiAgICB8IFNsYXRlYmx1ZSAtPiBcInNsYXRlYmx1ZVwiXG4gICAgfCBTbGF0ZWdyYXkgLT4gXCJzbGF0ZWdyYXlcIlxuICAgIHwgU2xhdGVncmV5IC0+IFwic2xhdGVncmV5XCJcbiAgICB8IFNub3cgLT4gXCJzbm93XCJcbiAgICB8IFNwcmluZ2dyZWVuIC0+IFwic3ByaW5nZ3JlZW5cIlxuICAgIHwgU3RlZWxibHVlIC0+IFwic3RlZWxibHVlXCJcbiAgICB8IFRhbiAtPiBcInRhblwiXG4gICAgfCBUZWFsIC0+IFwidGVhbFwiXG4gICAgfCBUaGlzdGxlIC0+IFwidGhpc3RsZVwiXG4gICAgfCBUb21hdG8gLT4gXCJ0b21hdG9cIlxuICAgIHwgVHVycXVvaXNlIC0+IFwidHVycXVvaXNlXCJcbiAgICB8IFZpb2xldCAtPiBcInZpb2xldFwiXG4gICAgfCBXaGVhdCAtPiBcIndoZWF0XCJcbiAgICB8IFdoaXRlIC0+IFwid2hpdGVcIlxuICAgIHwgV2hpdGVzbW9rZSAtPiBcIndoaXRlc21va2VcIlxuICAgIHwgWWVsbG93IC0+IFwieWVsbG93XCJcbiAgICB8IFllbGxvd2dyZWVuIC0+IFwieWVsbG93Z3JlZW5cIlxuXG4gIGxldCBuYW1lX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcImFsaWNlYmx1ZVwiIC0+IEFsaWNlYmx1ZVxuICAgIHwgXCJhbnRpcXVld2hpdGVcIiAtPiBBbnRpcXVld2hpdGVcbiAgICB8IFwiYXF1YVwiIC0+IEFxdWFcbiAgICB8IFwiYXF1YW1hcmluZVwiIC0+IEFxdWFtYXJpbmVcbiAgICB8IFwiYXp1cmVcIiAtPiBBenVyZVxuICAgIHwgXCJiZWlnZVwiIC0+IEJlaWdlXG4gICAgfCBcImJpc3F1ZVwiIC0+IEJpc3F1ZVxuICAgIHwgXCJibGFja1wiIC0+IEJsYWNrXG4gICAgfCBcImJsYW5jaGVkYWxtb25kXCIgLT4gQmxhbmNoZWRhbG1vbmRcbiAgICB8IFwiYmx1ZVwiIC0+IEJsdWVcbiAgICB8IFwiYmx1ZXZpb2xldFwiIC0+IEJsdWV2aW9sZXRcbiAgICB8IFwiYnJvd25cIiAtPiBCcm93blxuICAgIHwgXCJidXJseXdvb2RcIiAtPiBCdXJseXdvb2RcbiAgICB8IFwiY2FkZXRibHVlXCIgLT4gQ2FkZXRibHVlXG4gICAgfCBcImNoYXJ0cmV1c2VcIiAtPiBDaGFydHJldXNlXG4gICAgfCBcImNob2NvbGF0ZVwiIC0+IENob2NvbGF0ZVxuICAgIHwgXCJjb3JhbFwiIC0+IENvcmFsXG4gICAgfCBcImNvcm5mbG93ZXJibHVlXCIgLT4gQ29ybmZsb3dlcmJsdWVcbiAgICB8IFwiY29ybnNpbGtcIiAtPiBDb3Juc2lsa1xuICAgIHwgXCJjcmltc29uXCIgLT4gQ3JpbXNvblxuICAgIHwgXCJjeWFuXCIgLT4gQ3lhblxuICAgIHwgXCJkYXJrYmx1ZVwiIC0+IERhcmtibHVlXG4gICAgfCBcImRhcmtjeWFuXCIgLT4gRGFya2N5YW5cbiAgICB8IFwiZGFya2dvbGRlbnJvZFwiIC0+IERhcmtnb2xkZW5yb2RcbiAgICB8IFwiZGFya2dyYXlcIiAtPiBEYXJrZ3JheVxuICAgIHwgXCJkYXJrZ3JlZW5cIiAtPiBEYXJrZ3JlZW5cbiAgICB8IFwiZGFya2dyZXlcIiAtPiBEYXJrZ3JleVxuICAgIHwgXCJkYXJra2hha2lcIiAtPiBEYXJra2hha2lcbiAgICB8IFwiZGFya21hZ2VudGFcIiAtPiBEYXJrbWFnZW50YVxuICAgIHwgXCJkYXJrb2xpdmVncmVlblwiIC0+IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBcImRhcmtvcmFuZ2VcIiAtPiBEYXJrb3JhbmdlXG4gICAgfCBcImRhcmtvcmNoaWRcIiAtPiBEYXJrb3JjaGlkXG4gICAgfCBcImRhcmtyZWRcIiAtPiBEYXJrcmVkXG4gICAgfCBcImRhcmtzYWxtb25cIiAtPiBEYXJrc2FsbW9uXG4gICAgfCBcImRhcmtzZWFncmVlblwiIC0+IERhcmtzZWFncmVlblxuICAgIHwgXCJkYXJrc2xhdGVibHVlXCIgLT4gRGFya3NsYXRlYmx1ZVxuICAgIHwgXCJkYXJrc2xhdGVncmF5XCIgLT4gRGFya3NsYXRlZ3JheVxuICAgIHwgXCJkYXJrc2xhdGVncmV5XCIgLT4gRGFya3NsYXRlZ3JleVxuICAgIHwgXCJkYXJrdHVycXVvaXNlXCIgLT4gRGFya3R1cnF1b2lzZVxuICAgIHwgXCJkYXJrdmlvbGV0XCIgLT4gRGFya3Zpb2xldFxuICAgIHwgXCJkZWVwcGlua1wiIC0+IERlZXBwaW5rXG4gICAgfCBcImRlZXBza3libHVlXCIgLT4gRGVlcHNreWJsdWVcbiAgICB8IFwiZGltZ3JheVwiIC0+IERpbWdyYXlcbiAgICB8IFwiZGltZ3JleVwiIC0+IERpbWdyZXlcbiAgICB8IFwiZG9kZ2VyYmx1ZVwiIC0+IERvZGdlcmJsdWVcbiAgICB8IFwiZmlyZWJyaWNrXCIgLT4gRmlyZWJyaWNrXG4gICAgfCBcImZsb3JhbHdoaXRlXCIgLT4gRmxvcmFsd2hpdGVcbiAgICB8IFwiZm9yZXN0Z3JlZW5cIiAtPiBGb3Jlc3RncmVlblxuICAgIHwgXCJmdWNoc2lhXCIgLT4gRnVjaHNpYVxuICAgIHwgXCJnYWluc2Jvcm9cIiAtPiBHYWluc2Jvcm9cbiAgICB8IFwiZ2hvc3R3aGl0ZVwiIC0+IEdob3N0d2hpdGVcbiAgICB8IFwiZ29sZFwiIC0+IEdvbGRcbiAgICB8IFwiZ29sZGVucm9kXCIgLT4gR29sZGVucm9kXG4gICAgfCBcImdyYXlcIiAtPiBHcmF5XG4gICAgfCBcImdyZWVuXCIgLT4gR3JlZW5cbiAgICB8IFwiZ3JlZW55ZWxsb3dcIiAtPiBHcmVlbnllbGxvd1xuICAgIHwgXCJncmV5XCIgLT4gR3JleVxuICAgIHwgXCJob25leWRld1wiIC0+IEhvbmV5ZGV3XG4gICAgfCBcImhvdHBpbmtcIiAtPiBIb3RwaW5rXG4gICAgfCBcImluZGlhbnJlZFwiIC0+IEluZGlhbnJlZFxuICAgIHwgXCJpbmRpZ29cIiAtPiBJbmRpZ29cbiAgICB8IFwiaXZvcnlcIiAtPiBJdm9yeVxuICAgIHwgXCJraGFraVwiIC0+IEtoYWtpXG4gICAgfCBcImxhdmVuZGVyXCIgLT4gTGF2ZW5kZXJcbiAgICB8IFwibGF2ZW5kZXJibHVzaFwiIC0+IExhdmVuZGVyYmx1c2hcbiAgICB8IFwibGF3bmdyZWVuXCIgLT4gTGF3bmdyZWVuXG4gICAgfCBcImxlbW9uY2hpZmZvblwiIC0+IExlbW9uY2hpZmZvblxuICAgIHwgXCJsaWdodGJsdWVcIiAtPiBMaWdodGJsdWVcbiAgICB8IFwibGlnaHRjb3JhbFwiIC0+IExpZ2h0Y29yYWxcbiAgICB8IFwibGlnaHRjeWFuXCIgLT4gTGlnaHRjeWFuXG4gICAgfCBcImxpZ2h0Z29sZGVucm9keWVsbG93XCIgLT4gTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IFwibGlnaHRncmF5XCIgLT4gTGlnaHRncmF5XG4gICAgfCBcImxpZ2h0Z3JlZW5cIiAtPiBMaWdodGdyZWVuXG4gICAgfCBcImxpZ2h0Z3JleVwiIC0+IExpZ2h0Z3JleVxuICAgIHwgXCJsaWdodHBpbmtcIiAtPiBMaWdodHBpbmtcbiAgICB8IFwibGlnaHRzYWxtb25cIiAtPiBMaWdodHNhbG1vblxuICAgIHwgXCJsaWdodHNlYWdyZWVuXCIgLT4gTGlnaHRzZWFncmVlblxuICAgIHwgXCJsaWdodHNreWJsdWVcIiAtPiBMaWdodHNreWJsdWVcbiAgICB8IFwibGlnaHRzbGF0ZWdyYXlcIiAtPiBMaWdodHNsYXRlZ3JheVxuICAgIHwgXCJsaWdodHNsYXRlZ3JleVwiIC0+IExpZ2h0c2xhdGVncmV5XG4gICAgfCBcImxpZ2h0c3RlZWxibHVlXCIgLT4gTGlnaHRzdGVlbGJsdWVcbiAgICB8IFwibGlnaHR5ZWxsb3dcIiAtPiBMaWdodHllbGxvd1xuICAgIHwgXCJsaW1lXCIgLT4gTGltZVxuICAgIHwgXCJsaW1lZ3JlZW5cIiAtPiBMaW1lZ3JlZW5cbiAgICB8IFwibGluZW5cIiAtPiBMaW5lblxuICAgIHwgXCJtYWdlbnRhXCIgLT4gTWFnZW50YVxuICAgIHwgXCJtYXJvb25cIiAtPiBNYXJvb25cbiAgICB8IFwibWVkaXVtYXF1YW1hcmluZVwiIC0+IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IFwibWVkaXVtYmx1ZVwiIC0+IE1lZGl1bWJsdWVcbiAgICB8IFwibWVkaXVtb3JjaGlkXCIgLT4gTWVkaXVtb3JjaGlkXG4gICAgfCBcIm1lZGl1bXB1cnBsZVwiIC0+IE1lZGl1bXB1cnBsZVxuICAgIHwgXCJtZWRpdW1zZWFncmVlblwiIC0+IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBcIm1lZGl1bXNsYXRlYmx1ZVwiIC0+IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgXCJtZWRpdW1zcHJpbmdncmVlblwiIC0+IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBcIm1lZGl1bXR1cnF1b2lzZVwiIC0+IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgXCJtZWRpdW12aW9sZXRyZWRcIiAtPiBNZWRpdW12aW9sZXRyZWRcbiAgICB8IFwibWlkbmlnaHRibHVlXCIgLT4gTWlkbmlnaHRibHVlXG4gICAgfCBcIm1pbnRjcmVhbVwiIC0+IE1pbnRjcmVhbVxuICAgIHwgXCJtaXN0eXJvc2VcIiAtPiBNaXN0eXJvc2VcbiAgICB8IFwibW9jY2FzaW5cIiAtPiBNb2NjYXNpblxuICAgIHwgXCJuYXZham93aGl0ZVwiIC0+IE5hdmFqb3doaXRlXG4gICAgfCBcIm5hdnlcIiAtPiBOYXZ5XG4gICAgfCBcIm9sZGxhY2VcIiAtPiBPbGRsYWNlXG4gICAgfCBcIm9saXZlXCIgLT4gT2xpdmVcbiAgICB8IFwib2xpdmVkcmFiXCIgLT4gT2xpdmVkcmFiXG4gICAgfCBcIm9yYW5nZVwiIC0+IE9yYW5nZVxuICAgIHwgXCJvcmFuZ2VyZWRcIiAtPiBPcmFuZ2VyZWRcbiAgICB8IFwib3JjaGlkXCIgLT4gT3JjaGlkXG4gICAgfCBcInBhbGVnb2xkZW5yb2RcIiAtPiBQYWxlZ29sZGVucm9kXG4gICAgfCBcInBhbGVncmVlblwiIC0+IFBhbGVncmVlblxuICAgIHwgXCJwYWxldHVycXVvaXNlXCIgLT4gUGFsZXR1cnF1b2lzZVxuICAgIHwgXCJwYWxldmlvbGV0cmVkXCIgLT4gUGFsZXZpb2xldHJlZFxuICAgIHwgXCJwYXBheWF3aGlwXCIgLT4gUGFwYXlhd2hpcFxuICAgIHwgXCJwZWFjaHB1ZmZcIiAtPiBQZWFjaHB1ZmZcbiAgICB8IFwicGVydVwiIC0+IFBlcnVcbiAgICB8IFwicGlua1wiIC0+IFBpbmtcbiAgICB8IFwicGx1bVwiIC0+IFBsdW1cbiAgICB8IFwicG93ZGVyYmx1ZVwiIC0+IFBvd2RlcmJsdWVcbiAgICB8IFwicHVycGxlXCIgLT4gUHVycGxlXG4gICAgfCBcInJlZFwiIC0+IFJlZFxuICAgIHwgXCJyb3N5YnJvd25cIiAtPiBSb3N5YnJvd25cbiAgICB8IFwicm95YWxibHVlXCIgLT4gUm95YWxibHVlXG4gICAgfCBcInNhZGRsZWJyb3duXCIgLT4gU2FkZGxlYnJvd25cbiAgICB8IFwic2FsbW9uXCIgLT4gU2FsbW9uXG4gICAgfCBcInNhbmR5YnJvd25cIiAtPiBTYW5keWJyb3duXG4gICAgfCBcInNlYWdyZWVuXCIgLT4gU2VhZ3JlZW5cbiAgICB8IFwic2Vhc2hlbGxcIiAtPiBTZWFzaGVsbFxuICAgIHwgXCJzaWVubmFcIiAtPiBTaWVubmFcbiAgICB8IFwic2lsdmVyXCIgLT4gU2lsdmVyXG4gICAgfCBcInNreWJsdWVcIiAtPiBTa3libHVlXG4gICAgfCBcInNsYXRlYmx1ZVwiIC0+IFNsYXRlYmx1ZVxuICAgIHwgXCJzbGF0ZWdyYXlcIiAtPiBTbGF0ZWdyYXlcbiAgICB8IFwic2xhdGVncmV5XCIgLT4gU2xhdGVncmV5XG4gICAgfCBcInNub3dcIiAtPiBTbm93XG4gICAgfCBcInNwcmluZ2dyZWVuXCIgLT4gU3ByaW5nZ3JlZW5cbiAgICB8IFwic3RlZWxibHVlXCIgLT4gU3RlZWxibHVlXG4gICAgfCBcInRhblwiIC0+IFRhblxuICAgIHwgXCJ0ZWFsXCIgLT4gVGVhbFxuICAgIHwgXCJ0aGlzdGxlXCIgLT4gVGhpc3RsZVxuICAgIHwgXCJ0b21hdG9cIiAtPiBUb21hdG9cbiAgICB8IFwidHVycXVvaXNlXCIgLT4gVHVycXVvaXNlXG4gICAgfCBcInZpb2xldFwiIC0+IFZpb2xldFxuICAgIHwgXCJ3aGVhdFwiIC0+IFdoZWF0XG4gICAgfCBcIndoaXRlXCIgLT4gV2hpdGVcbiAgICB8IFwid2hpdGVzbW9rZVwiIC0+IFdoaXRlc21va2VcbiAgICB8IFwieWVsbG93XCIgLT4gWWVsbG93XG4gICAgfCBcInllbGxvd2dyZWVuXCIgLT4gWWVsbG93Z3JlZW5cbiAgICB8IHMgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvciBuYW1lXCIpKVxuXG4gIGxldCByZ2Jfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gMjQwLCAyNDgsIDI1NVxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IDI1MCwgMjM1LCAyMTVcbiAgICB8IEFxdWEgLT4gMCwgMjU1LCAyNTVcbiAgICB8IEFxdWFtYXJpbmUgLT4gMTI3LCAyNTUsIDIxMlxuICAgIHwgQXp1cmUgLT4gMjQwLCAyNTUsIDI1NVxuICAgIHwgQmVpZ2UgLT4gMjQ1LCAyNDUsIDIyMFxuICAgIHwgQmlzcXVlIC0+IDI1NSwgMjI4LCAxOTZcbiAgICB8IEJsYWNrIC0+IDAsIDAsIDBcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IDI1NSwgMjM1LCAyMDVcbiAgICB8IEJsdWUgLT4gMCwgMCwgMjU1XG4gICAgfCBCbHVldmlvbGV0IC0+IDEzOCwgNDMsIDIyNlxuICAgIHwgQnJvd24gLT4gMTY1LCA0MiwgNDJcbiAgICB8IEJ1cmx5d29vZCAtPiAyMjIsIDE4NCwgMTM1XG4gICAgfCBDYWRldGJsdWUgLT4gOTUsIDE1OCwgMTYwXG4gICAgfCBDaGFydHJldXNlIC0+IDEyNywgMjU1LCAwXG4gICAgfCBDaG9jb2xhdGUgLT4gMjEwLCAxMDUsIDMwXG4gICAgfCBDb3JhbCAtPiAyNTUsIDEyNywgODBcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IDEwMCwgMTQ5LCAyMzdcbiAgICB8IENvcm5zaWxrIC0+IDI1NSwgMjQ4LCAyMjBcbiAgICB8IENyaW1zb24gLT4gMjIwLCAyMCwgNjBcbiAgICB8IEN5YW4gLT4gMCwgMjU1LCAyNTVcbiAgICB8IERhcmtibHVlIC0+IDAsIDAsIDEzOVxuICAgIHwgRGFya2N5YW4gLT4gMCwgMTM5LCAxMzlcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gMTg0LCAxMzQsIDExXG4gICAgfCBEYXJrZ3JheSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJrZ3JlZW4gLT4gMCwgMTAwLCAwXG4gICAgfCBEYXJrZ3JleSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJra2hha2kgLT4gMTg5LCAxODMsIDEwN1xuICAgIHwgRGFya21hZ2VudGEgLT4gMTM5LCAwLCAxMzlcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IDg1LCAxMDcsIDQ3XG4gICAgfCBEYXJrb3JhbmdlIC0+IDI1NSwgMTQwLCAwXG4gICAgfCBEYXJrb3JjaGlkIC0+IDE1MywgNTAsIDIwNFxuICAgIHwgRGFya3JlZCAtPiAxMzksIDAsIDBcbiAgICB8IERhcmtzYWxtb24gLT4gMjMzLCAxNTAsIDEyMlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IDE0MywgMTg4LCAxNDNcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gNzIsIDYxLCAxMzlcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IDAsIDIwNiwgMjA5XG4gICAgfCBEYXJrdmlvbGV0IC0+IDE0OCwgMCwgMjExXG4gICAgfCBEZWVwcGluayAtPiAyNTUsIDIwLCAxNDdcbiAgICB8IERlZXBza3libHVlIC0+IDAsIDE5MSwgMjU1XG4gICAgfCBEaW1ncmF5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERpbWdyZXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRG9kZ2VyYmx1ZSAtPiAzMCwgMTQ0LCAyNTVcbiAgICB8IEZpcmVicmljayAtPiAxNzgsIDM0LCAzNFxuICAgIHwgRmxvcmFsd2hpdGUgLT4gMjU1LCAyNTAsIDI0MFxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gMzQsIDEzOSwgMzRcbiAgICB8IEZ1Y2hzaWEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IEdhaW5zYm9ybyAtPiAyMjAsIDIyMCwgMjIwXG4gICAgfCBHaG9zdHdoaXRlIC0+IDI0OCwgMjQ4LCAyNTVcbiAgICB8IEdvbGQgLT4gMjU1LCAyMTUsIDBcbiAgICB8IEdvbGRlbnJvZCAtPiAyMTgsIDE2NSwgMzJcbiAgICB8IEdyYXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgR3JlZW4gLT4gMCwgMTI4LCAwXG4gICAgfCBHcmVlbnllbGxvdyAtPiAxNzMsIDI1NSwgNDdcbiAgICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgSG9uZXlkZXcgLT4gMjQwLCAyNTUsIDI0MFxuICAgIHwgSG90cGluayAtPiAyNTUsIDEwNSwgMTgwXG4gICAgfCBJbmRpYW5yZWQgLT4gMjA1LCA5MiwgOTJcbiAgICB8IEluZGlnbyAtPiA3NSwgMCwgMTMwXG4gICAgfCBJdm9yeSAtPiAyNTUsIDI1NSwgMjQwXG4gICAgfCBLaGFraSAtPiAyNDAsIDIzMCwgMTQwXG4gICAgfCBMYXZlbmRlciAtPiAyMzAsIDIzMCwgMjUwXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IDI1NSwgMjQwLCAyNDVcbiAgICB8IExhd25ncmVlbiAtPiAxMjQsIDI1MiwgMFxuICAgIHwgTGVtb25jaGlmZm9uIC0+IDI1NSwgMjUwLCAyMDVcbiAgICB8IExpZ2h0Ymx1ZSAtPiAxNzMsIDIxNiwgMjMwXG4gICAgfCBMaWdodGNvcmFsIC0+IDI0MCwgMTI4LCAxMjhcbiAgICB8IExpZ2h0Y3lhbiAtPiAyMjQsIDI1NSwgMjU1XG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiAyNTAsIDI1MCwgMjEwXG4gICAgfCBMaWdodGdyYXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRncmVlbiAtPiAxNDQsIDIzOCwgMTQ0XG4gICAgfCBMaWdodGdyZXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRwaW5rIC0+IDI1NSwgMTgyLCAxOTNcbiAgICB8IExpZ2h0c2FsbW9uIC0+IDI1NSwgMTYwLCAxMjJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gMzIsIDE3OCwgMTcwXG4gICAgfCBMaWdodHNreWJsdWUgLT4gMTM1LCAyMDYsIDI1MFxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gMTc2LCAxOTYsIDIyMlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gMjU1LCAyNTUsIDIyNFxuICAgIHwgTGltZSAtPiAwLCAyNTUsIDBcbiAgICB8IExpbWVncmVlbiAtPiA1MCwgMjA1LCA1MFxuICAgIHwgTGluZW4gLT4gMjUwLCAyNDAsIDIzMFxuICAgIHwgTWFnZW50YSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgTWFyb29uIC0+IDEyOCwgMCwgMFxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiAxMDIsIDIwNSwgMTcwXG4gICAgfCBNZWRpdW1ibHVlIC0+IDAsIDAsIDIwNVxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IDE4NiwgODUsIDIxMVxuICAgIHwgTWVkaXVtcHVycGxlIC0+IDE0NywgMTEyLCAyMTlcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IDYwLCAxNzksIDExM1xuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IDEyMywgMTA0LCAyMzhcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IDAsIDI1MCwgMTU0XG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gNzIsIDIwOSwgMjA0XG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gMTk5LCAyMSwgMTMzXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gMjUsIDI1LCAxMTJcbiAgICB8IE1pbnRjcmVhbSAtPiAyNDUsIDI1NSwgMjUwXG4gICAgfCBNaXN0eXJvc2UgLT4gMjU1LCAyMjgsIDIyNVxuICAgIHwgTW9jY2FzaW4gLT4gMjU1LCAyMjgsIDE4MVxuICAgIHwgTmF2YWpvd2hpdGUgLT4gMjU1LCAyMjIsIDE3M1xuICAgIHwgTmF2eSAtPiAwLCAwLCAxMjhcbiAgICB8IE9sZGxhY2UgLT4gMjUzLCAyNDUsIDIzMFxuICAgIHwgT2xpdmUgLT4gMTI4LCAxMjgsIDBcbiAgICB8IE9saXZlZHJhYiAtPiAxMDcsIDE0MiwgMzVcbiAgICB8IE9yYW5nZSAtPiAyNTUsIDE2NSwgMFxuICAgIHwgT3JhbmdlcmVkIC0+IDI1NSwgNjksIDBcbiAgICB8IE9yY2hpZCAtPiAyMTgsIDExMiwgMjE0XG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IDIzOCwgMjMyLCAxNzBcbiAgICB8IFBhbGVncmVlbiAtPiAxNTIsIDI1MSwgMTUyXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IDE3NSwgMjM4LCAyMzhcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gMjE5LCAxMTIsIDE0N1xuICAgIHwgUGFwYXlhd2hpcCAtPiAyNTUsIDIzOSwgMjEzXG4gICAgfCBQZWFjaHB1ZmYgLT4gMjU1LCAyMTgsIDE4NVxuICAgIHwgUGVydSAtPiAyMDUsIDEzMywgNjNcbiAgICB8IFBpbmsgLT4gMjU1LCAxOTIsIDIwM1xuICAgIHwgUGx1bSAtPiAyMjEsIDE2MCwgMjIxXG4gICAgfCBQb3dkZXJibHVlIC0+IDE3NiwgMjI0LCAyMzBcbiAgICB8IFB1cnBsZSAtPiAxMjgsIDAsIDEyOFxuICAgIHwgUmVkIC0+IDI1NSwgMCwgMFxuICAgIHwgUm9zeWJyb3duIC0+IDE4OCwgMTQzLCAxNDNcbiAgICB8IFJveWFsYmx1ZSAtPiA2NSwgMTA1LCAyMjVcbiAgICB8IFNhZGRsZWJyb3duIC0+IDEzOSwgNjksIDE5XG4gICAgfCBTYWxtb24gLT4gMjUwLCAxMjgsIDExNFxuICAgIHwgU2FuZHlicm93biAtPiAyNDQsIDE2NCwgOTZcbiAgICB8IFNlYWdyZWVuIC0+IDQ2LCAxMzksIDg3XG4gICAgfCBTZWFzaGVsbCAtPiAyNTUsIDI0NSwgMjM4XG4gICAgfCBTaWVubmEgLT4gMTYwLCA4MiwgNDVcbiAgICB8IFNpbHZlciAtPiAxOTIsIDE5MiwgMTkyXG4gICAgfCBTa3libHVlIC0+IDEzNSwgMjA2LCAyMzVcbiAgICB8IFNsYXRlYmx1ZSAtPiAxMDYsIDkwLCAyMDVcbiAgICB8IFNsYXRlZ3JheSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbGF0ZWdyZXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU25vdyAtPiAyNTUsIDI1MCwgMjUwXG4gICAgfCBTcHJpbmdncmVlbiAtPiAwLCAyNTUsIDEyN1xuICAgIHwgU3RlZWxibHVlIC0+IDcwLCAxMzAsIDE4MFxuICAgIHwgVGFuIC0+IDIxMCwgMTgwLCAxNDBcbiAgICB8IFRlYWwgLT4gMCwgMTI4LCAxMjhcbiAgICB8IFRoaXN0bGUgLT4gMjE2LCAxOTEsIDIxNlxuICAgIHwgVG9tYXRvIC0+IDI1NSwgOTksIDcxXG4gICAgfCBUdXJxdW9pc2UgLT4gNjQsIDIyNCwgMjA4XG4gICAgfCBWaW9sZXQgLT4gMjM4LCAxMzAsIDIzOFxuICAgIHwgV2hlYXQgLT4gMjQ1LCAyMjIsIDE3OVxuICAgIHwgV2hpdGUgLT4gMjU1LCAyNTUsIDI1NVxuICAgIHwgV2hpdGVzbW9rZSAtPiAyNDUsIDI0NSwgMjQ1XG4gICAgfCBZZWxsb3cgLT4gMjU1LCAyNTUsIDBcbiAgICB8IFllbGxvd2dyZWVuIC0+IDE1NCwgMjA1LCA1MFxuXG4gIHR5cGUgdCA9XG4gICAgfCBOYW1lIG9mIG5hbWVcbiAgICB8IFJHQiBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUmVkLCBHcmVlbiBhbmQgQmx1ZSB2YWx1ZXMuIENsaXBwZWQgdG8gW1swLi4yNTVdXSBieSBtb3N0IChBbGw/KVxuICAgICAgICAgICAgYnJvd3NlcnMuICopXG4gICAgfCBSR0JfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIGFyZSBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuICopXG4gICAgfCBSR0JBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgUkdCIHdpdGggYWRkaXRpb25hbCB0cmFuc3BhcmVuY3kgYXJndW1lbnQuIE9wYWNpdHkgc2hvdWxkIGJlIGluXG4gICAgICAgICAgICBbMC5dIChjb21wbGV0ZWx5IHRyYW5zcGFyZW50KSBhbmQgWzEuXSAoY29tcGxldGVseSBvcGFxdWUpLiAqKVxuICAgIHwgUkdCQV9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBzcGVjaWZpZWQgYXMgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiBBbHBoYVxuICAgICAgICAgICAgY2hhbm5lbCAob3BhY2l0eSkgaXMgc3RpbGwgYSBbMC5dIHRvIFsxLl0gZmxvYXQuICopXG4gICAgfCBIU0wgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIEh1ZSwgU2F0dXJhdGlvbiBhbmQgTGlnaHRuZXNzIHZhbHVlcy4gSHVlIGlzIGFuIGFuZ2xlIGluIGRlZ3JlZSAoaW5cbiAgICAgICAgICAgIGludGVydmFsIFtbMC4uMzYwW10pLiBTYXR1cmF0aW9uIGlzIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGNvbG9ybGVzcy4gTGlnaHRuZXNzIGlzIGFsc28gYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgYmxhY2suICopXG4gICAgfCBIU0xBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgSFNMIHdpdGggYW4gb3BhY2l0eSBhcmd1bWVudCBiZXR3ZWVuIFswLl0gYW5kIFsxLl0uICopXG5cbiAgbGV0IHJnYiA/YSByIGcgYiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IFJHQiAociwgZywgYilcbiAgICB8IFNvbWUgYSAtPiBSR0JBIChyLCBnLCBiLCBhKVxuXG4gIGxldCBoc2wgP2EgaCBzIGwgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBIU0wgKGgsIHMsIGwpXG4gICAgfCBTb21lIGEgLT4gSFNMQSAoaCwgcywgbCwgYSlcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IHN0cmluZ19vZl9uYW1lIG5cbiAgICB8IFJHQiAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQsJWQsJWQpXCIgciBnIGJcbiAgICB8IFJHQl9wZXJjZW50IChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCUlLCVkJSUsJWQlJSlcIiByIGcgYlxuICAgIHwgUkdCQSAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkLCVkLCVkLCVmKVwiIHIgZyBiIGFcbiAgICB8IFJHQkFfcGVyY2VudCAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkJSUsJWQlJSwlZCUlLCVmKVwiIHIgZyBiIGFcbiAgICB8IEhTTCAoaCwgcywgbCkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2woJWQsJWQlJSwlZCUlKVwiIGggcyBsXG4gICAgfCBIU0xBIChoLCBzLCBsLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbGEoJWQsJWQlJSwlZCUlLCVmKVwiIGggcyBsIGFcblxuICBsZXQgaGV4X29mX3JnYiAocmVkLCBncmVlbiwgYmx1ZSkgPVxuICAgIGxldCBpbl9yYW5nZSBpID1cbiAgICAgIGlmIGkgPCAwIHx8IGkgPiAyNTVcbiAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHN0cmluZ19vZl9pbnQgaSBeIFwiIGlzIG91dCBvZiB2YWxpZCByYW5nZVwiKSlcbiAgICBpblxuICAgIGluX3JhbmdlIHJlZDtcbiAgICBpbl9yYW5nZSBncmVlbjtcbiAgICBpbl9yYW5nZSBibHVlO1xuICAgIFByaW50Zi5zcHJpbnRmIFwiIyUwMlglMDJYJTAyWFwiIHJlZCBncmVlbiBibHVlXG5cbiAgKCogT2NhbWwgPC0+IEpTIHJlcHJlc2VudGF0aW9uICopXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgKCogVE9ETz8gYmUgbW9yZSByZXN0cmljdGl2ZSwgY2xpcCB2YWx1ZXMgaW50byBzdGFuZGFyZCByYW5nZSAqKVxuICBsZXQganNfdF9vZl9qc19zdHJpbmcgcyA9XG4gICAgbGV0IHJnYl9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXmhzbFxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbGFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5oc2xhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgaWYgSnMudG9fYm9vbCAocmdiX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYl9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbGFfcmUjI3Rlc3QgcylcbiAgICB0aGVuIHNcbiAgICBlbHNlIGlmIExpc3QubWVtXG4gICAgICAgICAgICAgIChKcy50b19zdHJpbmcgcylcbiAgICAgICAgICAgICAgWyBcImFsaWNlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJhbnRpcXVld2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiYXF1YVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcImF6dXJlXCJcbiAgICAgICAgICAgICAgOyBcImJlaWdlXCJcbiAgICAgICAgICAgICAgOyBcImJpc3F1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibGFja1wiXG4gICAgICAgICAgICAgIDsgXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgICAgICAgICAgIDsgXCJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImJsdWV2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiYnJvd25cIlxuICAgICAgICAgICAgICA7IFwiYnVybHl3b29kXCJcbiAgICAgICAgICAgICAgOyBcImNhZGV0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjaGFydHJldXNlXCJcbiAgICAgICAgICAgICAgOyBcImNob2NvbGF0ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3Juc2lsa1wiXG4gICAgICAgICAgICAgIDsgXCJjcmltc29uXCJcbiAgICAgICAgICAgICAgOyBcImN5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2JsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya2N5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2toYWtpXCJcbiAgICAgICAgICAgICAgOyBcImRhcmttYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya29yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrcmVkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmt0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya3Zpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJkZWVwcGlua1wiXG4gICAgICAgICAgICAgIDsgXCJkZWVwc2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZG9kZ2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJmaXJlYnJpY2tcIlxuICAgICAgICAgICAgICA7IFwiZmxvcmFsd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZm9yZXN0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZnVjaHNpYVwiXG4gICAgICAgICAgICAgIDsgXCJnYWluc2Jvcm9cIlxuICAgICAgICAgICAgICA7IFwiZ2hvc3R3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJncmF5XCJcbiAgICAgICAgICAgICAgOyBcImdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImdyZWVueWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImdyZXlcIlxuICAgICAgICAgICAgICA7IFwiaG9uZXlkZXdcIlxuICAgICAgICAgICAgICA7IFwiaG90cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJpbmRpYW5yZWRcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWdvXCJcbiAgICAgICAgICAgICAgOyBcIml2b3J5XCJcbiAgICAgICAgICAgICAgOyBcImtoYWtpXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyYmx1c2hcIlxuICAgICAgICAgICAgICA7IFwibGF3bmdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxlbW9uY2hpZmZvblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGN5YW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaW1lXCJcbiAgICAgICAgICAgICAgOyBcImxpbWVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaW5lblwiXG4gICAgICAgICAgICAgIDsgXCJtYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcIm1hcm9vblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJtaWRuaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWludGNyZWFtXCJcbiAgICAgICAgICAgICAgOyBcIm1pc3R5cm9zZVwiXG4gICAgICAgICAgICAgIDsgXCJtb2NjYXNpblwiXG4gICAgICAgICAgICAgIDsgXCJuYXZham93aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJuYXZ5XCJcbiAgICAgICAgICAgICAgOyBcIm9sZGxhY2VcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVkcmFiXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VyZWRcIlxuICAgICAgICAgICAgICA7IFwib3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwicGFsZXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJwYXBheWF3aGlwXCJcbiAgICAgICAgICAgICAgOyBcInBlYWNocHVmZlwiXG4gICAgICAgICAgICAgIDsgXCJwZXJ1XCJcbiAgICAgICAgICAgICAgOyBcInBpbmtcIlxuICAgICAgICAgICAgICA7IFwicGx1bVwiXG4gICAgICAgICAgICAgIDsgXCJwb3dkZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcInB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJyZWRcIlxuICAgICAgICAgICAgICA7IFwicm9zeWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInJveWFsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzYWRkbGVicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwic2FuZHlicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzZWFzaGVsbFwiXG4gICAgICAgICAgICAgIDsgXCJzaWVubmFcIlxuICAgICAgICAgICAgICA7IFwic2lsdmVyXCJcbiAgICAgICAgICAgICAgOyBcInNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwic25vd1wiXG4gICAgICAgICAgICAgIDsgXCJzcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwidGFuXCJcbiAgICAgICAgICAgICAgOyBcInRlYWxcIlxuICAgICAgICAgICAgICA7IFwidGhpc3RsZVwiXG4gICAgICAgICAgICAgIDsgXCJ0b21hdG9cIlxuICAgICAgICAgICAgICA7IFwidHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGVhdFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZXNtb2tlXCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dncmVlblwiXG4gICAgICAgICAgICAgIF1cbiAgICB0aGVuIHNcbiAgICBlbHNlIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChKcy50b19zdHJpbmcgcyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKVxuXG4gIGxldCBuYW1lIGNuID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfbmFtZSBjbilcblxuICBsZXQganMgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IG5hbWUgblxuICAgIHwgKFJHQiBfIHwgUkdCX3BlcmNlbnQgXyB8IFJHQkEgXyB8IFJHQkFfcGVyY2VudCBfIHwgSFNMIF8gfCBIU0xBIF8pIGFzIGMgLT5cbiAgICAgICAgSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCBjKVxuXG4gIGxldCBtbCBjID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBjIGluXG4gICAgdHJ5IE5hbWUgKG5hbWVfb2Zfc3RyaW5nIHMpXG4gICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKFxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKSBpblxuICAgICAgbGV0IHJlX3JnYiA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSwoXFxcXGQqKSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX3JnYl9wY3QgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiklLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9oc2wgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKGhzbGE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IGlfb2Zfc19vID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgfCBTb21lIGkgLT4gKFxuICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaVxuICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBpIF4gXCIpOiBcIiBeIHMpKSlcbiAgICAgIGluXG4gICAgICBsZXQgZl9vZl9zIGYgPVxuICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGYgXiBcIik6IFwiIF4gcykpXG4gICAgICBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2IgcyAwIHdpdGhcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0IgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUkdCQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYl9wY3QgcyAwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgUkdCQV9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9oc2wgcyAwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IEhTTCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEhTTEEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKSkpKVxuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgKCogaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2xlbmd0aHMgKilcblxuICAoKiBUT0RPOlxuICAgICB7W1xuICAgICAgIHR5cGUganNfdCA9IHByaXZhdGUgSnMuc3RyaW5nIEpzLnRcbiAgICAgICB2YWwganNfdF9vZl90XG4gICAgICAgdmFsIHRfb2ZfanNfdFxuICAgICAgIHZhbCB0X29mX3N0cmluZ1xuICAgICBdfVxuICAqKVxuXG4gIHR5cGUgdCA9XG4gICAgfCBaZXJvXG4gICAgKCogcmVsYXRpdmUgKilcbiAgICB8IEVtIG9mIGZsb2F0XG4gICAgfCBFeCBvZiBmbG9hdFxuICAgIHwgUHggb2YgZmxvYXRcbiAgICB8IEdkIG9mIGZsb2F0XG4gICAgfCBSZW0gb2YgZmxvYXRcbiAgICB8IFZ3IG9mIGZsb2F0XG4gICAgfCBWaCBvZiBmbG9hdFxuICAgIHwgVm0gb2YgZmxvYXRcbiAgICB8IENoIG9mIGZsb2F0XG4gICAgKCogYWJzb2x1dGUgKilcbiAgICB8IE1tIG9mIGZsb2F0XG4gICAgfCBDbSBvZiBmbG9hdFxuICAgIHwgSW4gb2YgZmxvYXRcbiAgICB8IFB0IG9mIGZsb2F0XG4gICAgfCBQYyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBaZXJvIC0+IFwiMFwiXG4gICAgfCBFbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJlbVwiXG4gICAgfCBFeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJleFwiXG4gICAgfCBQeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJweFwiXG4gICAgfCBHZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJnZFwiXG4gICAgfCBSZW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmVtXCJcbiAgICB8IFZ3IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZ3XCJcbiAgICB8IFZoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZoXCJcbiAgICB8IFZtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZtXCJcbiAgICB8IENoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNoXCJcbiAgICB8IE1tIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcIm1tXCJcbiAgICB8IENtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNtXCJcbiAgICB8IEluIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImluXCJcbiAgICB8IFB0IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB0XCJcbiAgICB8IFBjIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInBjXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCB0ID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyB0IGluXG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCIwXCJcbiAgICB0aGVuIFplcm9cbiAgICBlbHNlXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopPylcXFxccyooXFxcXFMqKSRcIiBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBcImVtXCIgLT4gRW0gZlxuICAgICAgICAgIHwgU29tZSBcImV4XCIgLT4gRXggZlxuICAgICAgICAgIHwgU29tZSBcInB4XCIgLT4gUHggZlxuICAgICAgICAgIHwgU29tZSBcImdkXCIgLT4gR2QgZlxuICAgICAgICAgIHwgU29tZSBcInJlbVwiIC0+IFJlbSBmXG4gICAgICAgICAgfCBTb21lIFwidndcIiAtPiBWdyBmXG4gICAgICAgICAgfCBTb21lIFwidmhcIiAtPiBWaCBmXG4gICAgICAgICAgfCBTb21lIFwidm1cIiAtPiBWbSBmXG4gICAgICAgICAgfCBTb21lIFwiY2hcIiAtPiBDaCBmXG4gICAgICAgICAgfCBTb21lIFwibW1cIiAtPiBNbSBmXG4gICAgICAgICAgfCBTb21lIFwiY21cIiAtPiBDbSBmXG4gICAgICAgICAgfCBTb21lIFwiaW5cIiAtPiBJbiBmXG4gICAgICAgICAgfCBTb21lIFwicHRcIiAtPiBQdCBmXG4gICAgICAgICAgfCBTb21lIFwicGNcIiAtPiBQYyBmXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKSlcbmVuZFxuXG5tb2R1bGUgQW5nbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IERlZyBvZiBmbG9hdFxuICAgIHwgR3JhZCBvZiBmbG9hdFxuICAgIHwgUmFkIG9mIGZsb2F0XG4gICAgfCBUdXJucyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBEZWcgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZGVnXCJcbiAgICB8IEdyYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ3JhZFwiXG4gICAgfCBSYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmFkXCJcbiAgICB8IFR1cm5zIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInR1cm5zXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCBqID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBqIGluXG4gICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopKShkZWd8Z3JhZHxyYWR8dHVybnMpJFwiIGluXG4gICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgIHwgU29tZSBcImRlZ1wiIC0+IERlZyBmXG4gICAgICAgIHwgU29tZSBcImdyYWRcIiAtPiBHcmFkIGZcbiAgICAgICAgfCBTb21lIFwicmFkXCIgLT4gUmFkIGZcbiAgICAgICAgfCBTb21lIFwidHVybnNcIiAtPiBUdXJucyBmXG4gICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCoqIEphdmFzY3JpcHQgZXZlbnRzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBUeXAgPSBEb21faHRtbC5FdmVudFxuXG50eXBlIGxpc3RlbmVyID0gRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGxpc3RlbiA/KGNhcHR1cmUgPSBmYWxzZSkgdGFyZ2V0IHR5cCBjYiA9XG4gIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXJcbiAgICB0YXJnZXRcbiAgICB0eXBcbiAgICAoRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gbiBlIC0+IEpzLmJvb2wgKGNiIG4gZSkpKVxuICAgIChKcy5ib29sIGNhcHR1cmUpXG5cbmxldCBzdG9wX2xpc3RlbiA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmxldCB4bWxucyA9IEpzLnN0cmluZyBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblxuKCogdHJhbnNsYXRlIHNwZWMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvaWRsLmh0bWwgKilcbigqIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCAqKVxuXG50eXBlIGVycm9yX2NvZGUgPVxuICB8IFdST05HX1RZUEVfRVJSXG4gIHwgSU5WQUxJRF9WQUxVRV9FUlJcbiAgfCBNQVRSSVhfTk9UX0lOVkVSVEFCTEVcblxuY2xhc3MgdHlwZSBzdmdfZXJyb3IgPSBvYmplY3RcbiAgaW5oZXJpdCBKcy5lcnJvclxuXG4gIG1ldGhvZCBjb2RlIDogZXJyb3JfY29kZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leGNlcHRpb24gU1ZHRXJyb3Igb2Ygc3ZnX2Vycm9yXG5cbnR5cGUgbGVuZ3RoVW5pdFR5cGUgPVxuICB8IExFTkdUSFRZUEVfVU5LTk9XTlxuICB8IExFTkdUSFRZUEVfTlVNQkVSXG4gIHwgTEVOR1RIVFlQRV9QRVJDRU5UQUdFXG4gIHwgTEVOR1RIVFlQRV9FTVNcbiAgfCBMRU5HVEhUWVBFX0VYU1xuICB8IExFTkdUSFRZUEVfUFhcbiAgfCBMRU5HVEhUWVBFX0NNXG4gIHwgTEVOR1RIVFlQRV9NTVxuICB8IExFTkdUSFRZUEVfSU5cbiAgfCBMRU5HVEhUWVBFX1BUXG4gIHwgTEVOR1RIVFlQRV9QQ1xuXG50eXBlIGFuZ2xlVW5pdFR5cGUgPVxuICB8IEFOR0xFVFlQRV9VTktOT1dOXG4gIHwgQU5HTEVUWVBFX1VOU1BFQ0lGSUVEXG4gIHwgQU5HTEVUWVBFX0RFR1xuICB8IEFOR0xFVFlQRV9SQURcbiAgfCBBTkdMRVRZUEVfR1JBRFxuXG50eXBlIGNvbG9yVHlwZSA9XG4gIHwgQ09MT1JUWVBFX1VOS05PV05cbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JcbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1JcbiAgfCBDT0xPUlRZUEVfQ1VSUkVOVENPTE9SXG5cbnR5cGUgYWxpZ25tZW50VHlwZSA9XG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYXG5cbnR5cGUgbWVldE9yU2xpY2VUeXBlID1cbiAgfCBNRUVUT1JTTElDRV9VTktOT1dOXG4gIHwgTUVFVE9SU0xJQ0VfTUVFVFxuICB8IE1FRVRPUlNMSUNFX1NMSUNFXG5cbnR5cGUgdHJhbnNmb3JtVHlwZSA9XG4gIHwgVFJBTlNGT1JNX1VOS05PV05cbiAgfCBUUkFOU0ZPUk1fTUFUUklYXG4gIHwgVFJBTlNGT1JNX1RSQU5TTEFURVxuICB8IFRSQU5TRk9STV9TQ0FMRVxuICB8IFRSQU5TRk9STV9ST1RBVEVcbiAgfCBUUkFOU0ZPUk1fU0tFV1hcbiAgfCBUUkFOU0ZPUk1fU0tFV1lcblxudHlwZSB6b29tQW5kUGFuVHlwZSA9XG4gIHwgWk9PTUFORFBBTl9VTktOT1dOXG4gIHwgWk9PTUFORFBBTl9ESVNBQkxFXG4gIHwgWk9PTUFORFBBTl9NQUdOSUZZXG5cbnR5cGUgbGVuZ3RoQWRqdXN0ID1cbiAgfCBMRU5HVEhBREpVU1RfVU5LTk9XTlxuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFNcblxudHlwZSB1bml0VHlwZSA9XG4gIHwgVU5JVF9UWVBFX1VOS05PV05cbiAgfCBVTklUX1RZUEVfVVNFUlNQQUNFT05VU0VcbiAgfCBVTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1hcblxuKCogaW50ZXJmYWNlIFNWR1JlbmRlcmluZ0ludGVudCAqKVxudHlwZSBpbnRlbnRUeXBlID1cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1VOS05PV05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FVVE9cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1BFUkNFUFRVQUxcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQ1xuICB8IFJFTkRFUklOR19JTlRFTlRfU0FUVVJBVElPTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDXG5cbigqIFBhdGggU2VnbWVudCBUeXBlcyAqKVxudHlwZSBwYXRoU2VnbWVudFR5cGUgPVxuICB8IFBBVEhTRUdfVU5LTk9XTlxuICB8IFBBVEhTRUdfQ0xPU0VQQVRIXG4gIHwgUEFUSFNFR19NT1ZFVE9fQUJTXG4gIHwgUEFUSFNFR19NT1ZFVE9fUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMXG4gIHwgUEFUSFNFR19BUkNfQUJTXG4gIHwgUEFUSFNFR19BUkNfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUxcblxuKCogdGV4dFBhdGggTWV0aG9kIFR5cGVzICopXG50eXBlIHRleHRQYXRoTWV0aG9kVHlwZSA9XG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSFxuXG4oKiB0ZXh0UGF0aCBTcGFjaW5nIFR5cGVzICopXG50eXBlIHRleHRQYXRoU3BhY2luZ1R5cGUgPVxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1RcblxuKCogU3ByZWFkIE1ldGhvZCBUeXBlcyAqKVxudHlwZSBzcHJlYWRNZXRob2RUeXBlID1cbiAgfCBTUFJFQURNRVRIT0RfVU5LTk9XTlxuICB8IFNQUkVBRE1FVEhPRF9QQURcbiAgfCBTUFJFQURNRVRIT0RfUkVGTEVDVFxuICB8IFNQUkVBRE1FVEhPRF9SRVBFQVRcblxudHlwZSBzdXNwZW5kSGFuZGxlSURcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgWydhXSBhbmltYXRlZCA9IG9iamVjdFxuICBtZXRob2QgYmFzZVZhbCA6ICdhIHByb3BcblxuICBtZXRob2QgYW5pbVZhbCA6ICdhIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbGlzdCA9IG9iamVjdFxuICBtZXRob2QgbnVtYmVyT2ZJdGVtcyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluaXRpYWxpemUgOiAnYSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRJdGVtQmVmb3JlIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUl0ZW0gOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgYXBwZW5kSXRlbSA6ICdhIC0+ICdhIG1ldGhcbmVuZFxuXG4oKioqKilcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxiYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lclNWR0VsZW1lbnQgOiBzdmdFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFN0cmluZyAqKVxuYW5kIGFuaW1hdGVkU3RyaW5nID0gW2pzX3N0cmluZyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRCb29sZWFuICopXG5hbmQgYW5pbWF0ZWRCb29sZWFuID0gW2Jvb2wgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0cmluZ0xpc3QgKilcbmFuZCBzdHJpbmdMaXN0ID0gW2pzX3N0cmluZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uICopXG5hbmQgYW5pbWF0ZWRFbnVtZXJhdGlvbiA9IFtpbnQgKCpzaG9ydCopXSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRJbnRlZ2VyICopXG5hbmQgYW5pbWF0ZWRJbnRlZ2VyID0gW2ludF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyICopXG5hbmQgYW5pbWF0ZWROdW1iZXIgPSBbbnVtYmVyX3RdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdOdW1iZXJMaXN0ICopXG5hbmQgbnVtYmVyTGlzdCA9IFtudW1iZXIgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ICopXG5hbmQgYW5pbWF0ZWROdW1iZXJMaXN0ID0gW251bWJlckxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aCAqKVxuYW5kIGxlbmd0aCA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBsZW5ndGhVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGggKilcbmFuZCBhbmltYXRlZExlbmd0aCA9IFtsZW5ndGggdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aExpc3QgKilcbmFuZCBsZW5ndGhMaXN0ID0gW2xlbmd0aCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aExpc3QgKilcbmFuZCBhbmltYXRlZExlbmd0aExpc3QgPSBbbGVuZ3RoTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5nbGUgKilcbmFuZCBhbmdsZSA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBhbmdsZVVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRBbmdsZSAqKVxuYW5kIGFuaW1hdGVkQW5nbGUgPSBbYW5nbGUgdF0gYW5pbWF0ZWRcblxuKCogWFhYWFggTW92ZSBpdCAqKVxuYW5kIHJnYkNvbG9yID0gb2JqZWN0IGVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3IgKilcbmFuZCBjb2xvciA9IG9iamVjdFxuICAoKiBYWFggaW5oZXJpdCBjc3NWYWx1ZSAqKVxuICBtZXRob2QgY29sb3JUeXBlIDogY29sb3JUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmdiQ29sb3IgOiByZ2JDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaWNjQ29sb3IgOiBpY2NDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0UkdCQ29sb3IgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UkdCQ29sb3JJQ0NDb2xvciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRDb2xvciA6IGNvbG9yVHlwZSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSUNDQ29sb3IgKilcbmFuZCBpY2NDb2xvciA9IG9iamVjdFxuICBtZXRob2QgY29sb3JQcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvcnMgOiBudW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0ICopXG5hbmQgcmVjdCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRSZWN0ICopXG5hbmQgYW5pbWF0ZWRSZWN0ID0gW3JlY3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxhYmxlICopXG5hbmQgc3R5bGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHlsZSA6IERvbV9odG1sLmNzc1N0eWxlRGVjbGFyYXRpb24gdCByZWFkb25seV9wcm9wXG4gICgqICAgQ1NTVmFsdWUgZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKTsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTG9jYXRhYmxlICopXG5hbmQgbG9jYXRhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBuZWFyZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRCQm94IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JlZW5DVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRyYW5zZm9ybVRvRWxlbWVudCA6IGVsZW1lbnQgdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybWFibGUgKilcbmFuZCB0cmFuc2Zvcm1hYmxlID0gb2JqZWN0XG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGVzdHMgKilcbmFuZCB0ZXN0cyA9IG9iamVjdFxuICBtZXRob2QgcmVxdWlyZWRGZWF0dXJlcyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkRXh0ZW5zaW9ucyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN5c3RlbUxhbmd1YWdlIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGFzRXh0ZW5zaW9uIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGFuZ1NwYWNlICopXG5hbmQgbGFuZ1NwYWNlID0gb2JqZWN0XG4gIG1ldGhvZCB4bWxsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxzcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCAqKVxuYW5kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPSBvYmplY3RcbiAgbWV0aG9kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgOiBhbmltYXRlZEJvb2xlYW4gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpdFRvVmlld0JveCAqKVxuYW5kIGZpdFRvVmlld0JveCA9IG9iamVjdFxuICBtZXRob2Qgdmlld0JveCA6IGFuaW1hdGVkUmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpbyA6IGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUFuZFBhbiAqKVxuYW5kIHpvb21BbmRQYW4gPSBvYmplY3RcbiAgbWV0aG9kIHpvb21BbmRQYW4gOiB6b29tQW5kUGFuVHlwZSBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdTcGVjICopXG5hbmQgdmlld1NwZWMgPSBvYmplY3RcbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBtZXRob2QgdHJhbnNmb3JtIDogdHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdCb3hTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW9TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybVN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVVJJUmVmZXJlbmNlICopXG5hbmQgdXJpUmVmZXJlbmNlID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NTU1J1bGUgOiBDU1NSdWxlICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTE9SX1BST0ZJTEVfUlVMRSA9IDc7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRG9jdW1lbnQgKilcbmFuZCBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50RXZlbnQgKilcbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290RWxlbWVudCA6IHN2Z0VsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuICAoKiByb290RWxlbWVudCB3aWxsIGJlIG51bGwgb3IgdW5kZWZpbmVkIGluIGFuIGh0bWwgY29udGV4dCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTVkdFbGVtZW50ICopXG5hbmQgc3ZnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRldmVudCwgdmlld2NzcywgZG9jdW1lbnRjc3MgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFNjcmlwdFR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogcmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlQ3VycmVudFZpZXcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VmlldyA6IHZpZXdTcGVjIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U2NhbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUcmFuc2xhdGUgOiBwb2ludCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VzcGVuZFJlZHJhdyA6IGludCAtPiBzdXNwZW5kSGFuZGxlSUQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXcgOiBzdXNwZW5kSGFuZGxlSUQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhd0FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3JjZVJlZHJhdyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5wYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uc1BhdXNlZCA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRDdXJyZW50VGltZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0SW50ZXJzZWN0aW9uTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuY2xvc3VyZUxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ludGVyc2VjdGlvbiA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGNoZWNrRW5jbG9zdXJlIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgZGVzZWxlY3RBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTnVtYmVyIDogbnVtYmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdMZW5ndGggOiBsZW5ndGggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0FuZ2xlIDogYW5nbGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BvaW50IDogcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR01hdHJpeCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUmVjdCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybSA6IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCB0IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiBEb20uZWxlbWVudCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR0VsZW1lbnQgKilcbmFuZCBnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZWZzRWxlbWVudCAqKVxuYW5kIGRlZnNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVzY0VsZW1lbnQgKilcbmFuZCBkZXNjRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGl0bGVFbGVtZW50ICopXG5hbmQgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTeW1ib2xFbGVtZW50ICopXG5hbmQgc3ltYm9sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVXNlRWxlbWVudCAqKVxuYW5kIHVzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZEluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZWxlbWVudEluc3RhbmNlID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ0VsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCA6IHVzZUVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBlbGVtZW50SW5zdGFuY2VMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QgKilcbmFuZCBlbGVtZW50SW5zdGFuY2VMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGVsZW1lbnRJbnN0YW5jZSB0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ltYWdlRWxlbWVudCAqKVxuYW5kIGltYWdlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuICAoKiByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmVuZFxuXG5hbmQgc3dpdGNoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuKCogWFhYIGRlcHJlY2F0ZWQgPT4gaW50ZXJmYWNlIEdldFNWR0RvY3VtZW50ID0+IFNWR0RvY3VtZW50IGdldFNWR0RvY3VtZW50KCkgKilcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxlRWxlbWVudCAqKVxuYW5kIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludCAqKVxuYW5kIHBvaW50ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXhUcmFuc2Zvcm0gOiBtYXRyaXggdCAtPiBwb2ludCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0ICopXG5hbmQgcG9pbnRMaXN0ID0gW3BvaW50IHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR01hdHJpeCAqKVxuYW5kIG1hdHJpeCA9IG9iamVjdFxuICBtZXRob2QgYSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbHkgOiBtYXRyaXggdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGludmVyc2UgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlTm9uVW5pZm9ybSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGVGcm9tVmVjdG9yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFkgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdYIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtICopXG5hbmQgdHJhbnNmb3JtID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IHRyYW5zZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXggOiBtYXRyaXggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRNYXRyaXggOiBtYXRyaXggdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJvdGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0ICopXG5hbmQgdHJhbnNmb3JtTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFt0cmFuc2Zvcm0gdF0gbGlzdFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY29uc29saWRhdGUgOiB0cmFuc2Zvcm0gdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCAqKVxuYW5kIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFt0cmFuc2Zvcm1MaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgcHJlc2VydmVBc3BlY3RSYXRpbyA9IG9iamVjdFxuICBtZXRob2QgYWxpZ24gOiBhbGlnbm1lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVldE9yU2xpY2UgOiBtZWV0T3JTbGljZVR5cGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBbcHJlc2VydmVBc3BlY3RSYXRpbyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZyAqKVxuYW5kIHBhdGhTZWcgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdUeXBlIDogcGF0aFNlZ21lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF0aFNlZ1R5cGVBc0xldHRlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCAqKVxuYW5kIHBhdGhTZWdDbG9zZVBhdGggPSBwYXRoU2VnXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdNb3ZldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjUmVsKilcbmFuZCBwYXRoU2VnQXJjID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsYXJnZUFyY0ZsYWcgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzd2VlcEZsYWcgOiBib29sIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvVmVydGljYWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3RcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsICAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdMaXN0ID0gW3BhdGhTZWcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQYXRoRGF0YSAqKVxuYW5kIGFuaW1hdGVkUGF0aERhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIG5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhFbGVtZW50ICopXG5hbmQgcGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQYXRoRGF0YVxuXG4gIG1ldGhvZCBwYXRoTGVuZ3RoIDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFRvdGFsTGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRQb2ludEF0TGVuZ3RoIDogbnVtYmVyX3QgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhdGhTZWdBdExlbmd0aCA6IG51bWJlcl90IC0+IGludFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoIDogcGF0aFNlZ0Nsb3NlUGF0aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3RFbGVtZW50ICopXG5hbmQgcmVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NpcmNsZUVsZW1lbnQgKilcbmFuZCBjaXJjbGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGxpcHNlRWxlbWVudCAqKVxuYW5kIGVsbGlwc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQb2ludHMgKilcbmFuZCBhbmltYXRlZFBvaW50cyA9IG9iamVjdFxuICBtZXRob2QgcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWxpbmVFbGVtZW50ICopXG5hbmQgcG9seUxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlnb25FbGVtZW50ICopXG5hbmQgcG9seWdvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50ICopXG5hbmQgdGV4dENvbnRlbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRleHRMZW5ndGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoQWRqdXN0IDogbGVuZ3RoQWRqdXN0IGFuaW1hdGVkIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXROdW1iZXJPZkNoYXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdWJTdHJpbmdMZW5ndGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5kUG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVudE9mQ2hhciA6IGludCAtPiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSb3RhdGlvbk9mQ2hhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldENoYXJOdW1BdFBvc2l0aW9uIDogcG9pbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0U3ViU3RyaW5nIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCAqKVxuYW5kIHRleHRQb3NpdGlvbmluZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb3RhdGUgOiBhbmltYXRlZE51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRFbGVtZW50ICopXG5hbmQgdGV4dEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuYW5kIHRzcGFuRWxlbWVudCA9IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuYW5kIHRyZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQYXRoRWxlbWVudCAqKVxuYW5kIHRleHRQYXRoRWxlbWVudE1ldGhvZCA9IFt0ZXh0UGF0aE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nID0gW3RleHRQYXRoU3BhY2luZ1R5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRob2RfIDogdGV4dFBhdGhFbGVtZW50TWV0aG9kIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BhY2luZyA6IHRleHRQYXRoRWxlbWVudFNwYWNpbmcgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhEZWZFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhEZWZFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhJdGVtRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoSXRlbUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdHbHlwaFJlZkVsZW1lbnQgKilcbmFuZCBnbHlwaFJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGFpbnQgOiBTVkdDb2xvciB7ICopXG5cbigqICAgLy8gUGFpbnQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX05PTkUgPSAxMDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SID0gMTAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FID0gMTAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IgPSAxMDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SID0gMTA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDEwNjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDc7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmk7ICopXG5cbigqICAgdm9pZCBzZXRVcmkoaW4gRE9NU3RyaW5nIHVyaSk7ICopXG4oKiAgIHZvaWQgc2V0UGFpbnQoaW4gdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlLCBpbiBET01TdHJpbmcgdXJpLCBpbiBET01TdHJpbmcgcmdiQ29sb3IsIGluIERPTVN0cmluZyBpY2NDb2xvcikgcmFpc2VzKFNWR0V4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFya2VyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHU3R5bGFibGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpdFRvVmlld0JveCB7ICopXG5cbigqICAgLy8gTWFya2VyIFVuaXQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEggPSAyOyAqKVxuXG4oKiAgIC8vIE1hcmtlciBPcmllbnRhdGlvbiBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQVVUTyA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hcmtlclVuaXRzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VyV2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJIZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9yaWVudFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEFuZ2xlIG9yaWVudEFuZ2xlOyAqKVxuXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BdXRvKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BbmdsZShpbiBTVkdBbmdsZSBhbmdsZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBsb2NhbDsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZVJ1bGUgOiBTVkdDU1NSdWxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNyYyBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50IHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0dyYWRpZW50RWxlbWVudCAqKVxuYW5kIGFuaW1hdGVkU3ByZWFkTWV0aG9kID0gW3NwcmVhZE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCBncmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBncmFkaWVudFVuaXRzOyAqKVxuICBtZXRob2QgZ3JhZGllbnRUcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwcmVhZE1ldGhvZCA6IGFuaW1hdGVkU3ByZWFkTWV0aG9kIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBsaW5lYXJHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50ICopXG5hbmQgcmFkaWFsR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RvcEVsZW1lbnQgKilcbmFuZCBzdG9wRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIG9mZnNldCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXR0ZXJuRWxlbWVudCAqKVxuYW5kIHBhdHRlcm5FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVybkNvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHBhdHRlcm5UcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2xpcFBhdGhFbGVtZW50ICopXG5hbmQgY2xpcFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBjbGlwUGF0aFVuaXRzOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdNYXNrRWxlbWVudCAqKVxuYW5kIG1hc2tFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJFbGVtZW50ICopXG5hbmQgZmlsdGVyRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZmlsdGVyVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcHJpbWl0aXZlVW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1ggOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1kgOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldEZpbHRlclJlcyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6IFNWR1N0eWxhYmxlIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggd2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBoZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyByZXN1bHQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVCbGVuZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBCbGVuZCBNb2RlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTk9STUFMID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfU0NSRUVOID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9EQVJLRU4gPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0xJR0hURU4gPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1vZGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb2xvciBNYXRyaXggVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdmFsdWVzOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcblxuKCogICAvLyBDb21wb25lbnQgVHJhbnNmZXIgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVIgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHRhYmxlVmFsdWVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2xvcGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBpbnRlcmNlcHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhbXBsaXR1ZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBleHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIG9mZnNldDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNSRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNHRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNCRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNBRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29tcG9zaXRlIE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0lOID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUiA9IDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDID0gNjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsxOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMzsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGs0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gRWRnZSBNb2RlIFZhbHVlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9EVVBMSUNBVEUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfV1JBUCA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9OT05FID0gMzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3Qga2VybmVsTWF0cml4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGl2aXNvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJpYXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBlZGdlTW9kZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEJvb2xlYW4gcHJlc2VydmVBbHBoYTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaWZmdXNlQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYXppbXV0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGVsZXZhdGlvbjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVBvaW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcG90TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgbGltaXRpbmdDb25lQW5nbGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENoYW5uZWwgU2VsZWN0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfRyA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0IgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9BID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHhDaGFubmVsU2VsZWN0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHlDaGFubmVsU2VsZWN0b3I7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGbG9vZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25ZOyAqKVxuXG4oKiAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGluIGZsb2F0IHN0ZERldmlhdGlvblgsIGluIGZsb2F0IHN0ZERldmlhdGlvblkpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFSW1hZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlTm9kZUVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBNb3JwaG9sb2d5IE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1k7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVPZmZzZXRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVRpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBUdXJidWxlbmNlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfRlJBQ1RBTE5PSVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFID0gMjsgKilcblxuKCogICAvLyBTdGl0Y2ggT3B0aW9ucyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfU1RJVENIID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0ggPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG51bU9jdGF2ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzZWVkOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBzdGl0Y2hUaWxlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDdXJzb3JFbGVtZW50ICopXG5hbmQgY3Vyc29yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FFbGVtZW50ICopXG5hbmQgYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHRhcmdldCA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3RWxlbWVudCAqKVxuYW5kIHZpZXdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTY3JpcHRFbGVtZW50ICopXG5hbmQgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUV2ZW50IDogVUlFdmVudCAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUmVjdCB6b29tUmVjdFNjcmVlbjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHByZXZpb3VzU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBwcmV2aW91c1RyYW5zbGF0ZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IG5ld1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgbmV3VHJhbnNsYXRlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICAoKiBpbmhlcml0IGVsZW1lbnRUaW1lQ29udHJvbCAqKVxuICBtZXRob2QgdGFyZ2V0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFN0YXJ0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNpbXBsZUR1cmF0aW9uIDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2V0RWxlbWVudCAqKVxuYW5kIHNldEVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVNb3Rpb25FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTVBhdGhFbGVtZW50ICopXG5hbmQgbVBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQgKilcbmFuZCBhbmltYXRlQ29sb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgKilcbmFuZCBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRFbGVtZW50ICopXG5hbmQgZm9udEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHbHlwaEVsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KilcbmFuZCBnbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdIS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHVktlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlU3JjRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVNyY0VsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVVyaUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VVcmlFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRm9ybWF0RWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VOYW1lRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01ldGFkYXRhRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBtZXRhZGF0YUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb3JlaWduT2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudE5TIHhtbG5zIChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoIGRvYyA6IGFsdEdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaFwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaERlZiBkb2MgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhkZWZcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhJdGVtIGRvYyA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhpdGVtXCJcblxubGV0IGNyZWF0ZUFuaW1hdGUgZG9jIDogYW5pbWF0ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZVwiXG5cbmxldCBjcmVhdGVBbmltYXRlQ29sb3IgZG9jIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlY29sb3JcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZU1vdGlvbiBkb2MgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlbW90aW9uXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVUcmFuc2Zvcm0gZG9jIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbmxldCBjcmVhdGVDaXJjbGUgZG9jIDogY2lyY2xlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjaXJjbGVcIlxuXG5sZXQgY3JlYXRlQ2xpcFBhdGggZG9jIDogY2xpcFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNsaXBwYXRoXCJcblxuKCogbGV0IGNyZWF0ZUNvbG9yUHJvZmlsZSBkb2MgOiBjb2xvclByb2ZpbGUgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sb3ItcHJvZmlsZVwiICopXG5sZXQgY3JlYXRlQ3Vyc29yIGRvYyA6IGN1cnNvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY3Vyc29yXCJcblxubGV0IGNyZWF0ZURlZnMgZG9jIDogZGVmc0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVmc1wiXG5cbmxldCBjcmVhdGVEZXNjIGRvYyA6IGRlc2NFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlc2NcIlxuXG5sZXQgY3JlYXRlRWxsaXBzZSBkb2MgOiBlbGxpcHNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbGxpcHNlXCJcblxuKCogbGV0IGNyZWF0ZUZlKiAqKVxubGV0IGNyZWF0ZUZpbHRlciBkb2MgOiBmaWx0ZXJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpbHRlclwiXG5cbmxldCBjcmVhdGVGb250IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2UgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlRm9ybWF0IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VOYW1lIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1uYW1lXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlU3JjIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1zcmNcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VVcmkgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXVyaVwiXG5cbmxldCBjcmVhdGVGb3JlaWduT2JqZWN0IGRvYyA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcmVpZ25PYmplY3RcIlxuXG5sZXQgY3JlYXRlRyBkb2MgOiBnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnXCJcblxubGV0IGNyZWF0ZUdseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaFwiXG5cbmxldCBjcmVhdGVHbHlwaFJlZiBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhyZWZcIlxuXG5sZXQgY3JlYXRlaGtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoa2VyblwiXG5cbmxldCBjcmVhdGVJbWFnZSBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1hZ2VcIlxuXG5sZXQgY3JlYXRlTGluZUVsZW1lbnQgZG9jIDogbGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZVwiXG5cbmxldCBjcmVhdGVMaW5lYXJFbGVtZW50IGRvYyA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lYXJncmFkaWVudFwiXG5cbigqIGxldCBjcmVhdGVNYXJrZXIgZG9jIDogbWFya2VyRWxlbWVudCAqKVxubGV0IGNyZWF0ZU1hc2sgZG9jIDogbWFza0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFza1wiXG5cbmxldCBjcmVhdGVNZXRhRGF0YSBkb2MgOiBtZXRhZGF0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YWRhdGFcIlxuXG5sZXQgY3JlYXRlTWlzc2luZ0dseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtaXNzaW5nLWdseXBoXCJcblxubGV0IGNyZWF0ZU1QYXRoIGRvYyA6IG1QYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtcGF0aFwiXG5cbmxldCBjcmVhdGVQYXRoIGRvYyA6IHBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0dGVybiBkb2MgOiBwYXR0ZXJuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXR0ZXJuXCJcblxubGV0IGNyZWF0ZVBvbHlnb24gZG9jIDogcG9seWdvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWdvblwiXG5cbmxldCBjcmVhdGVQb2x5bGluZSBkb2MgOiBwb2x5TGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWxpbmVcIlxuXG5sZXQgY3JlYXRlUmFkaWFsZ3JhZGllbnQgZG9jIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJhZGlhbGdyYWRpZW50XCJcblxubGV0IGNyZWF0ZVJlY3QgZG9jIDogcmVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmVjdFwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlU2V0IGRvYyA6IHNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2V0XCJcblxubGV0IGNyZWF0ZVN0b3AgZG9jIDogc3RvcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3RvcFwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlU3ZnIGRvYyA6IHN2Z0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ZnXCJcblxubGV0IGNyZWF0ZVN3aXRjaCBkb2MgOiBzd2l0Y2hFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN3aXRjaFwiXG5cbmxldCBjcmVhdGVTeW1ib2wgZG9jIDogc3ltYm9sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzeW1ib2xcIlxuXG5sZXQgY3JlYXRlVGV4dEVsZW1lbnQgZG9jIDogdGV4dEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dFwiXG5cbmxldCBjcmVhdGVUZXh0cGF0aCBkb2MgOiB0ZXh0UGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dHBhdGhcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZVRyZWYgZG9jIDogdHJlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJlZlwiXG5cbmxldCBjcmVhdGVUc3BhbiBkb2MgOiB0c3BhbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHNwYW5cIlxuXG5sZXQgY3JlYXRlVXNlIGRvYyA6IHVzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidXNlXCJcblxubGV0IGNyZWF0ZVZpZXcgZG9jIDogdmlld0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlld1wiXG5cbmxldCBjcmVhdGV2a2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZrZXJuXCJcblxuKCoqKiopXG5cbmxldCBzdmdfZWxlbWVudCA6IGVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1NWR0VsZW1lbnRcblxubGV0IGRvY3VtZW50ID0gSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA6IGVsZW1lbnQgdCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBlIC0+IGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIGUgZWxzZSByYWlzZSBOb3RfZm91bmQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCAoZSA6ICNEb20ubm9kZSBKcy50KSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSAoZSA6ICNlbGVtZW50IHQpIHRhZyA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlIDogYUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFcIlxuXG4gIGxldCBhbHRHbHlwaCBlIDogYWx0R2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaFwiXG5cbiAgbGV0IGFsdEdseXBoRGVmIGUgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoZGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtIGUgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGl0ZW1cIlxuXG4gIGxldCBhbmltYXRlIGUgOiBhbmltYXRlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZVwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciBlIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZWNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiBlIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVtb3Rpb25cIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtIGUgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0IG9wdCA9XG4gICAgdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRldHJhbnNmb3JtXCJcblxuICBsZXQgY2lyY2xlIGUgOiBjaXJjbGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjaXJjbGVcIlxuXG4gIGxldCBjbGlwUGF0aCBlIDogY2xpcFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjbGlwcGF0aFwiXG5cbiAgKCogbGV0IENvbG9yUHJvZmlsZSBlIDogY29sb3JQcm9maWxlIHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjb2xvci1wcm9maWxlXCIgKilcbiAgbGV0IGN1cnNvciBlIDogY3Vyc29yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY3Vyc29yXCJcblxuICBsZXQgZGVmcyBlIDogZGVmc0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlZnNcIlxuXG4gIGxldCBkZXNjIGUgOiBkZXNjRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVzY1wiXG5cbiAgbGV0IGVsbGlwc2UgZSA6IGVsbGlwc2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJlbGxpcHNlXCJcblxuICAoKiBsZXQgRmUqICopXG4gIGxldCBmaWx0ZXIgZSA6IGZpbHRlckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZpbHRlclwiXG5cbiAgbGV0IGZvbnQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250XCJcblxuICBsZXQgZm9udEZhY2UgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2VcIlxuXG4gIGxldCBmb250RmFjZUZvcm1hdCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG4gIGxldCBmb250RmFjZU5hbWUgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtbmFtZVwiXG5cbiAgbGV0IGZvbnRGYWNlU3JjIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRGYWNlVXJpIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgZSA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb3JlaWdub2JqZWN0XCJcblxuICBsZXQgZyBlIDogZ0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdcIlxuXG4gIGxldCBnbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaFwiXG5cbiAgbGV0IGdseXBoUmVmIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBocmVmXCJcblxuICBsZXQgaGtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImhrZXJuXCJcblxuICBsZXQgaW1hZ2UgZSA6IGltYWdlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaW1hZ2VcIlxuXG4gIGxldCBsaW5lRWxlbWVudCBlIDogbGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVcIlxuXG4gIGxldCBsaW5lYXJFbGVtZW50IGUgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVhcmdyYWRpZW50XCJcblxuICAoKiBsZXQgTWFya2VyIGUgOiBtYXJrZXJFbGVtZW50ICopXG4gIGxldCBtYXNrIGUgOiBtYXNrRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWFza1wiXG5cbiAgbGV0IG1ldGFEYXRhIGUgOiBtZXRhZGF0YUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1ldGFkYXRhXCJcblxuICBsZXQgbWlzc2luZ0dseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBtUGF0aCBlIDogbVBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtcGF0aFwiXG5cbiAgbGV0IHBhdGggZSA6IHBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXRoXCJcblxuICBsZXQgcGF0dGVybiBlIDogcGF0dGVybkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdHRlcm5cIlxuXG4gIGxldCBwb2x5Z29uIGUgOiBwb2x5Z29uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWdvblwiXG5cbiAgbGV0IHBvbHlsaW5lIGUgOiBwb2x5TGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlsaW5lXCJcblxuICBsZXQgcmFkaWFsZ3JhZGllbnQgZSA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmFkaWFsZ3JhZGllbnRcIlxuXG4gIGxldCByZWN0IGUgOiByZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmVjdFwiXG5cbiAgbGV0IHNjcmlwdCBlIDogc2NyaXB0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2NyaXB0XCJcblxuICBsZXQgc2V0IGUgOiBzZXRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzZXRcIlxuXG4gIGxldCBzdG9wIGUgOiBzdG9wRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3RvcFwiXG5cbiAgbGV0IHN0eWxlIGUgOiBzdHlsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0eWxlXCJcblxuICBsZXQgc3ZnIGUgOiBzdmdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdmdcIlxuXG4gIGxldCBzd2l0Y2ggZSA6IHN3aXRjaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN3aXRjaFwiXG5cbiAgbGV0IHN5bWJvbCBlIDogc3ltYm9sRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ltYm9sXCJcblxuICBsZXQgdGV4dEVsZW1lbnQgZSA6IHRleHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0XCJcblxuICBsZXQgdGV4dHBhdGggZSA6IHRleHRQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dHBhdGhcIlxuXG4gIGxldCB0aXRsZSBlIDogdGl0bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0aXRsZVwiXG5cbiAgbGV0IHRyZWYgZSA6IHRyZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0cmVmXCJcblxuICBsZXQgdHNwYW4gZSA6IHRzcGFuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHNwYW5cIlxuXG4gIGxldCB1c2UgZSA6IHVzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInVzZVwiXG5cbiAgbGV0IHZpZXcgZSA6IHZpZXdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2aWV3XCJcblxuICBsZXQgdmtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZrZXJuXCJcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50U291cmNlICopXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgc3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RFdmVudElkIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuICAoKiBtZXRob2Qgc291cmNlIDogdW5pdCAqKVxuZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnRTb3VyY2UgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgdXJsIDogc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogc3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aXRoQ3JlZGVudGlhbHMgYiA6IG9wdGlvbnMgdCA9XG4gIGxldCBpbml0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGluaXQjIy53aXRoQ3JlZGVudGlhbHMgOj0gSnMuYm9vbCBiO1xuICBpbml0XG5cbmxldCBldmVudFNvdXJjZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGV2ZW50U291cmNlX29wdGlvbnMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBjb25zb2xlID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzYgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzcgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfOCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWcgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8gOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8xIDogYm9vbCB0IC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8yIDogYm9vbCB0IC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzMgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF80IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF81IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyeG1sIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhY2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXAgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZUVuZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmV4dGVybmFsIGdldF9jb25zb2xlIDogdW5pdCAtPiBjb25zb2xlIHQgPSBcImNhbWxfanNfZ2V0X2NvbnNvbGVcIlxuXG5sZXQgY29uc29sZSA9IGdldF9jb25zb2xlICgpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSBwb3NpdGlvbkVycm9yQ29kZVxuXG50eXBlIHdhdGNoSWRcblxuY2xhc3MgdHlwZSBjb29yZGluYXRlcyA9IG9iamVjdFxuICBtZXRob2QgbGF0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvbmdpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGVBY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWRpbmcgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVlZCA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29vcmRzIDogY29vcmRpbmF0ZXMgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVzdGFtcCA6IEpzLmRhdGUgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25PcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBlbmFibGVIaWdoQWNjdXJhY3kgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVvdXQgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4aW11bUFnZSA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25FcnJvciA9IG9iamVjdFxuICBtZXRob2QgX1BFUk1JU1NJT05fREVOSUVEXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPU0lUSU9OX1VOQVZBSUxBQkxFXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RJTUVPVVQgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBnZW9sb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q3VycmVudFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB3YXRjaFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHdhdGNoSWQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbGVhcldhdGNoIDogd2F0Y2hJZCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcG9zaXRpb25fb3B0aW9ucyAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgZ2VvbG9jYXRpb24gPVxuICBsZXQgeCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5uYXZpZ2F0b3IgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgeCB0aGVuIHgjIy5nZW9sb2NhdGlvbiBlbHNlIHhcblxuKCogdW5kZWZpbmVkICopXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBnZW9sb2NhdGlvblxuIiwiY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm91bmRpbmdDbGllbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEJvdW5kcyA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmF0aW8gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzSW50ZXJzZWN0aW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZCA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGRzIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50ID1cbiAgSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKCAgIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50XG4gICAgICAgICAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudFxuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOCBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFNoYXJlZCA9IHNpZ1xuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIHZhbCBvYmplY3Rfb3B0aW9ucyA6IHVuaXQgLT4gb2JqZWN0X29wdGlvbnMgSnMudFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2hhcmVkIDogU2hhcmVkID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9iamVjdF9vcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb2xsYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNvbGxhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzYWdlID0gSnMuc3RyaW5nIFwic29ydFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlbnNpdGl2aXR5ID0gSnMuc3RyaW5nIFwidmFyaWFudFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIGlnbm9yZVB1bmN0dWF0aW9uID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWVyaWMgPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgY2FzZUZpcnN0ID0gSnMuc3RyaW5nIFwiZmFsc2VcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYXJlIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IGludCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIERhdGVUaW1lRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgZGF0ZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXlQZXJpb2QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ckN5Y2xlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmb3JtYXRNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBkYXRlU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhbGVuZGFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheVBlcmlvZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91cjEyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXJDeWNsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmb3JtYXRNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB3ZWVrZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGVyYSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB5ZWFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1vbnRoID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbnV0ZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzZWNvbmQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZU5hbWUgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5kYXRlIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLmRhdGUgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhY3REaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeVNpZ24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgbm90YXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2lnbkRpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXREaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdNb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ1ByaW9yaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ0luY3JlbWVudCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdHJhaWxpbmdaZXJvRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgY29tcGFjdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3kgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lEaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5U2lnbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBub3RhdGlvbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2lnbkRpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc3R5bGUgPSBKcy5zdHJpbmcgXCJkZWNpbWFsXCJcblxuICAgICAgdmFsIG11dGFibGUgdW5pdCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2VHcm91cGluZyA9IEpzLl90cnVlXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nTW9kZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ1ByaW9yaXR5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nSW5jcmVtZW50ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRyYWlsaW5nWmVyb0Rpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUludGVnZXJEaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBsdXJhbFJ1bGVzID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBwbHVyYWxDYXRlZ29yaWVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIF90eXBlID0gSnMuc3RyaW5nIFwiY2FyZGluYWxcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzZWxlY3QgOiBKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5jbGFzcyB0eXBlIGludGwgPSBvYmplY3RcbiAgbWV0aG9kIF9Db2xsYXRvciA6IENvbGxhdG9yLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EYXRlVGltZUZvcm1hdCA6IERhdGVUaW1lRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OdW1iZXJGb3JtYXQgOiBOdW1iZXJGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BsdXJhbFJ1bGVzIDogUGx1cmFsUnVsZXMuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q2Fub25pY2FsTG9jYWxlcyA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgaW50bCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bFxuXG5sZXQgY29sbGF0b3JfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0NvbGxhdG9yXG5cbmxldCBkYXRlVGltZUZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fRGF0ZVRpbWVGb3JtYXRcblxubGV0IG51bWJlckZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fTnVtYmVyRm9ybWF0XG5cbmxldCBwbHVyYWxSdWxlc19jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fUGx1cmFsUnVsZXNcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGxcbiIsImluY2x1ZGUgSnNfb2Zfb2NhbWwuSnNcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbC5Vcmxcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sLkRvbV9odG1sXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sLkZpcmVidWdcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWwuRmlsZVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sLkRvbVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXlcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbC5SZWdleHBcblxudHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSBTdGRsaWIucmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG50eXBlIHdpbmRvdyA9IERvbV9odG1sLndpbmRvd1xuXG5sZXQgdG9fYXJyYXlmIGYgYSA9IEFycmF5Lm1hcCBmICh0b19hcnJheSBhKVxuXG5sZXQgb2ZfYXJyYXlmIGYgYSA9IGFycmF5IChBcnJheS5tYXAgZiBhKVxuXG5sZXQgdG9fbGlzdCBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheSBhXG5cbmxldCBvZl9saXN0IGwgPSBhcnJheSBAQCBBcnJheS5vZl9saXN0IEBAIGxcblxubGV0IHRvX2xpc3RmIGYgYSA9IEFycmF5LnRvX2xpc3QgQEAgdG9fYXJyYXlmIGYgYVxuXG5sZXQgb2ZfbGlzdGYgZiBhID0gb2ZfYXJyYXlmIGYgQEAgQXJyYXkub2ZfbGlzdCBhXG5cbmxldCBvcHRkZWYgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCB1bm9wdGRlZl9mIGRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiBmIHhcblxubGV0IHVub3B0ZGVmIGRlZiB4ID0gbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBkZWYgfCBTb21lIHggLT4geFxuXG5sZXQgY29udmRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IHVuZGVmaW5lZCB8IFNvbWUgeCAtPiBkZWYgKGYgeClcblxubGV0IHRvX29wdCBmIHggPVxuICBtYXRjaCBPcHQudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgb3B0IGYgPSBmdW5jdGlvbiBOb25lIC0+IG51bGwgfCBTb21lIHggLT4gc29tZSAoZiB4KVxuXG5sZXQgY29udm9wdCBmIHggPVxuICBtYXRjaCBPcHQudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IG51bGwgfCBTb21lIHggLT4gc29tZSAoZiB4KVxuXG5sZXQganNfbG9nIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyBvXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoc3RyaW5nIHMpXG5cbmxldCBsb2cgZm10ID1cbiAgRm9ybWF0LmtmcHJpbnRmXG4gICAgKGZ1biBfZm10IC0+IGpzX2xvZyAoc3RyaW5nIChGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSkpKVxuICAgIEZvcm1hdC5zdHJfZm9ybWF0dGVyIGZtdFxuXG5sZXQgZXJyb3Jfb2Zfc3RyaW5nIHMgPSBuZXclanMgZXJyb3JfY29uc3RyIChzdHJpbmcgcylcbmxldCBjYXRjaF9leG4gZiA9IGZ1bmN0aW9uXG4gIHwgSnNfZXJyb3IuRXhuIGUgLT4gZiAoSnNfZXJyb3IudG9fZXJyb3IgZSlcbiAgfCBleG4gLT4gZiBAQCBlcnJvcl9vZl9zdHJpbmcgQEAgUHJpbnRleGMudG9fc3RyaW5nIGV4blxuXG5tb2R1bGUgQU9wdCA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG4gIGxldCBudWxsIDogJ2EgdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGxldCB1bmRlZmluZWQgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIHJldHVybiA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGNvZXJjZSA6ICdhIHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGpzX2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcbiAgbGV0IGlzX25vbmUgKHggOiAnYSB0KSA6IGJvb2wgPSB4ID09IHVuZGVmaW5lZCB8fCBqc19lcXVhbHMgeCBudWxsXG4gIGxldCBtYXAgPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSB0KSAoZiA6ICdhIC0+ICdiKSA6ICdiIHQgPVxuICAgIGlmIGlzX25vbmUgeCB0aGVuIG5vbmUgZWxzZSByZXR1cm4gKGYgKGNvZXJjZSB4KSlcbiAgbGV0IGJpbmQgPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSB0KSAoZiA6ICdhIC0+ICdiIHQpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIGYgKGNvZXJjZSB4KVxuICBsZXQgdGVzdCAoeCA6ICdhIHQpIDogYm9vbCA9IG5vdCAoaXNfbm9uZSB4KVxuICBsZXQgaXRlciAoeCA6ICdhIHQpIChmIDogJ2EgLT4gdW5pdCkgOiB1bml0ID0gaWYgbm90IChpc19ub25lIHgpIHRoZW4gZiAoY29lcmNlIHgpXG4gIGxldCBjYXNlICh4IDogJ2EgdCkgKGYgOiB1bml0IC0+ICdiKSAoZyA6ICdhIC0+ICdiKSA6ICdiID0gaWYgaXNfbm9uZSB4IHRoZW4gZiAoKSBlbHNlIGcgKGNvZXJjZSB4KVxuICBsZXQgZ2V0ICh4IDogJ2EgdCkgKGYgOiB1bml0IC0+ICdhKSA6ICdhID0gaWYgaXNfbm9uZSB4IHRoZW4gZiAoKSBlbHNlIChjb2VyY2UgeClcbiAgbGV0IG9wdGlvbiA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIG9wdGlvbikgOiAnYSB0ID0gbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICBsZXQgdG9fb3B0aW9uICh4IDogJ2EgdCkgOiAnYSBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBsZXQgYW9wdCA/KG5vbmU9KHVuZGVmaW5lZCA6ICdiIHQpKSAoZiA6ICdhIC0+ICdiKSA6ICdhIG9wdGlvbiAtPiAnYiB0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiAoZiB4KVxuICBsZXQgdG9fYW9wdCAoZiA6ICdhIC0+ICdiKSAoeCA6ICdhIHQpIDogJ2Igb3B0aW9uID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgKGYgeCkpXG5lbmRcbnR5cGUgJ2EgYW9wdCA9ICdhIEFPcHQudFxuXG50eXBlICdhIGNhc2VfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmID4gZ2VuX3Byb3BcblxubGV0IHJlYyBjaG9vc2VfY2FzZV9vcHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGggOjogdCAtPiBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGggd2l0aCBOb25lIC0+IGNob29zZV9jYXNlX29wdCB0IHwgU29tZSBfIC0+IGhcblxubGV0IGNob29zZV9jYXNlIGwgPSBjaG9vc2VfY2FzZV9vcHQgKExpc3QubWFwIE9wdGRlZi5yZXR1cm4gbClcblxubGV0IG9iamVjdF9jcyA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5sZXQgYXNzaWduIChvMSA6IF8gdCkgKG8yIDogXyB0KSA9IFVuc2FmZS5jb2VyY2UgKG9iamVjdF9jcyMjYXNzaWduIG8xIG8yKVxubGV0IGFzc2lnbl9saXN0IGwgPSBVbnNhZmUuY29lcmNlIChVbnNhZmUubWV0aF9jYWxsIG9iamVjdF9jcyBcImFzc2lnblwiIChBcnJheS5vZl9saXN0IGwpKVxuXG5sZXQgcmVtb3ZlX3VuZGVmaW5lZCBvID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvIGluXG4gIGtleXMjI2ZvckVhY2ggKHdyYXBfY2FsbGJhY2sgKGZ1biBrIF8gXyAtPlxuICAgICAgaWYgbm90IChPcHRkZWYudGVzdCAoVW5zYWZlLmdldCBvIGspKSB0aGVuIFVuc2FmZS5kZWxldGUgbyBrKSlcbiIsIm9wZW4gSnNcblxudHlwZSBub25yZWMgJ2EgdCA9IDwgPiB0XG5cbmxldCBvYmogPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogc3RyaW5nKSAodiA6ICdhKSA9IFVuc2FmZS5zZXQgdCAoc3RyaW5nIGspIHZcblxubGV0IGFkZF9saXN0ICh0IDogJ2EgdCkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpID1cbiAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgdikgbFxuXG5sZXQgYWRkX2xpc3RmICh0IDogJ2IgdCkgKGYgOiAoJ2EgLT4gJ2IpKSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayAoZiB2KSkgbFxuXG5sZXQgbWFrZSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYSB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgYWRkX2xpc3QgdCBsO1xuICB0XG5cbmxldCBtYWtlZiAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdiIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdGYgdCBmIGw7XG4gIHRcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogc3RyaW5nKSA9IFVuc2FmZS5kZWxldGUgdCAoc3RyaW5nIGspXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpIDogJ2Egb3B0aW9uID1cbiAgT3B0ZGVmLnRvX29wdGlvbiAoVW5zYWZlLmdldCB0IChzdHJpbmcgaykpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBzdHJpbmcgbGlzdCA9XG4gIHRvX2xpc3RmIHRvX3N0cmluZyBAQCBvYmojI2tleXMgdFxuXG5sZXQgaXRlbXMgKHQgOiAnYSB0KSA6IChzdHJpbmcgKiAnYSkgbGlzdCA9XG4gIHRvX2xpc3RmIChmdW4gayAtPiB0b19zdHJpbmcgaywgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtc2YgKGYgOiAoJ2EgLT4gJ2IpKSAodCA6ICdhIHQpIDogKHN0cmluZyAqICdiKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBmIEBAIFVuc2FmZS5nZXQgdCBrKSBAQCBvYmojI2tleXMgdFxuXG5sZXQgbGVuZ3RoICh0IDogJ2EgdCkgPSAob2JqIyNrZXlzIHQpIyMubGVuZ3RoXG5cbmxldCBtZXJnZSAobCA6ICdhIHQgbGlzdCkgOiAnYSB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSAoaXRlbXMgeCkpIGw7XG4gIHRcbiIsIm9wZW4gSnNcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBwcm9taXNlMCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0aGVuXyA6ICgnYSAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgICBtZXRob2QgY2F0Y2ggOiAoJ2IgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdCBtZXRoXG4gIGVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvbWlzZSA9IFsnYSwgZXJyb3IgdF0gcHJvbWlzZTBcblxudHlwZSAoJ2EsICdiKSBwcm9taXNlX2NzID1cbiAgKCgoJ2EgLT4gdW5pdCkgLT4gKCdiIC0+IHVuaXQpIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQpXG4gIGNvbnN0clxuXG5sZXQgcHJvbWlzZSBmID1cbiAgbGV0IGNzIDogKCdhLCAnYikgcHJvbWlzZV9jcyA9IFVuc2FmZS5nbG9iYWwjIy5fUHJvbWlzZSBpblxuICBuZXclanMgY3MgKHdyYXBfY2FsbGJhY2sgZilcblxubGV0IGp0aGVuMCA/ZXJyb3IgKHByb20gOiAoJ2EsICdiIHQpIHByb21pc2UwIHQpIGYgPVxuICBsZXQgY2F0Y2hfZXhuIGV4biA9XG4gICAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlZiAtPiBjYXRjaF9leG4gKGZ1biB4IC0+IGVmIChVbnNhZmUuY29lcmNlIHgpKSBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuID9lcnJvciAocHJvbSA6ICdhIHByb21pc2UgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID0gbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlZiAtPiBjYXRjaF9leG4gZWYgZXhuIGluXG4gIGxldCBwID0gcHJvbSMjdGhlbl8gKHdyYXBfY2FsbGJhY2sgKGZ1biB4IC0+IHRyeSBmIHggd2l0aCBleG4gLT4gY2F0Y2hfZXhuIGV4bikpIGluXG4gIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZXJyb3IgLT4gaWdub3JlIChwIyNjYXRjaCAod3JhcF9jYWxsYmFjayBlcnJvcikpXG5cbmxldCBqdGhlbjBfb3B0IHByb20gPSBmdW5jdGlvbiBOb25lIC0+IGlnbm9yZSBwcm9tIHwgU29tZSBmIC0+IGp0aGVuMCBwcm9tIGZcbmxldCBqdGhlbl9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4gcHJvbSBmXG5cbmxldCBydGhlbiBwcm9tIGYgPVxuICBqdGhlbiB+ZXJyb3I6KGZ1biBlIC0+IGYgQEAgRXJyb3IgZSkgcHJvbSAoZnVuIHggLT4gZiAoT2sgeCkpXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCBsb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZzIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18yIG8xIG8yXG5cbmxldCBsb2czIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyBvMSBvMiBvM1xuXG5sZXQgbG9nX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKVxuXG5sZXQgbG9nX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBsb2dfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjbG9nXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGRlYnVnIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIG9cblxubGV0IGRlYnVnMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMiBvMSBvMlxuXG5sZXQgZGVidWczIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIG8xIG8yIG8zXG5cbmxldCBkZWJ1Z19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBzKVxuXG5sZXQgZGVidWdfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZGVidWdfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZGVidWdfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgd2FybiBvID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuIG9cblxubGV0IHdhcm4yIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzIgbzEgbzJcblxubGV0IHdhcm4zIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgbzEgbzIgbzNcblxubGV0IHdhcm5fc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gKEpzLnN0cmluZyBzKVxuXG5sZXQgd2Fybl9zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IHdhcm5fc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjd2Fybl8zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCBlcnJvciBvID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciBvXG5cbmxldCBlcnJvcjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgbzEgbzJcblxubGV0IGVycm9yMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyBvMSBvMiBvM1xuXG5sZXQgZXJyb3Jfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgcylcblxubGV0IGVycm9yX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGVycm9yX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcbiIsIm9wZW4gSnNcblxuY2xhc3MgdHlwZSBiaWdJbnQgPSBvYmplY3RcbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgb3B0ZGVmIC0+IF8gdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB2YWx1ZU9mIDogYmlnSW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9ucmVjIHQgPSBiaWdJbnQgdFxuXG5sZXQgYmlnSW50IDogKFVuc2FmZS5hbnkgLT4gdCkgPSBVbnNhZmUucHVyZV9qc19leHByIFwiQmlnSW50XCJcblxubGV0IG9mX3N0cmluZyBzID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIHN0cmluZyBzKVxubGV0IG9mX2ludCAoaSA6IGludCkgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgaSlcbmxldCBvZl9pbnQ2NCAoaSA6IGludDY0KSA9IG9mX3N0cmluZyAoSW50NjQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfbmF0aXZlIChpIDogbmF0aXZlaW50KSA9IG9mX3N0cmluZyAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxubGV0IG9mX2Zsb2F0IGYgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgbnVtYmVyX29mX2Zsb2F0IGYpXG5cbmxldCB0b19sb2NhbGVfc3RyaW5nID9mbXQgP29wdGlvbnMgKG4gOiB0KSA9XG4gIHRvX3N0cmluZyAobiMjdG9Mb2NhbGVTdHJpbmcgKG9wdGRlZiBzdHJpbmcgZm10KSAoT3B0ZGVmLm9wdGlvbiBvcHRpb25zKSlcbmxldCB0b19zdHJpbmcgKG4gOiB0KSA9IHRvX3N0cmluZyBuIyN0b1N0cmluZ1xuIiwib3BlbiBKc1xuXG5sZXQgc2V0SW5uZXJIdG1sIGVsdCBzID0gZWx0IyMuaW5uZXJIVE1MIDo9IHN0cmluZyBzXG5cbmxldCBzZXRUZXh0IGVsdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICAgKClcbiAgfCBTb21lIHMgLT5cbiAgICAgIGVsdCMjLnRleHRDb250ZW50IDo9IHNvbWUgKHN0cmluZyBzKVxuXG5sZXQgYWRkQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI2FkZCAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzc2VzIGVsdCBsID0gTGlzdC5pdGVyIChhZGRDbGFzcyBlbHQpIGxcblxubGV0IHJlbW92ZUNsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNyZW1vdmUgKHN0cmluZyBzKVxuXG5sZXQgY29udGFpbnNDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjY29udGFpbnMgKHN0cmluZyBzKVxuXG5sZXQgc2V0QXR0cmlidXRlIGVsdCBrZXkgdmFsdWUgPSBlbHQjI3NldEF0dHJpYnV0ZSAoc3RyaW5nIGtleSkgKHN0cmluZyB2YWx1ZSlcblxubGV0IHJlbW92ZUF0dHJpYnV0ZSBlbHQga2V5ID0gZWx0IyNyZW1vdmVBdHRyaWJ1dGUgKHN0cmluZyBrZXkpXG5cbmxldCBnZXRBdHRyaWJ1dGUgZWx0IGtleSA9IE9wdC50b19vcHRpb24gKGVsdCMjZ2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSlcblxubGV0IHNldENTUyBlbHQgc3R5bGVzID1cbiAgbGV0IHN0eWxlcyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIjsgXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGsgXiBcIjogXCIgXiB2KSBzdHlsZXMpXG4gIGluXG4gIHNldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHN0eWxlc1xuXG5sZXQgYWRkQ1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgbGV0IHN0eWxlcyA9XG4gICAgbWF0Y2ggZ2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBzdHlsZXNcbiAgICB8IFNvbWUgb2xkX3N0eWxlcyAtPlxuICAgICAgICBvbGRfc3R5bGVzIF4gXCI7IFwiIF4gc3R5bGVzXG4gIGluXG4gIHNldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHN0eWxlc1xuXG5sZXQgYXBwZW5kQ2hpbGQgPSBEb20uYXBwZW5kQ2hpbGRcblxubGV0IHJlbW92ZUNoaWxkID0gRG9tLnJlbW92ZUNoaWxkXG5cbmxldCBhcHBlbmRDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW4gPSBMaXN0Lml0ZXIgKERvbS5hcHBlbmRDaGlsZCBwYXJlbnQpIGNoaWxkcmVuXG5cbmxldCBjaGlsZHJlbiBwYXJlbnQgPSBEb20ubGlzdF9vZl9ub2RlTGlzdCBwYXJlbnQjIy5jaGlsZE5vZGVzXG5cbmxldCByZW1vdmVDaGlsZGkgcGFyZW50IGkgPVxuICBtYXRjaCBMaXN0Lm50aF9vcHQgKGNoaWxkcmVuIHBhcmVudCkgaSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgKClcbiAgfCBTb21lIGNoaWxkIC0+XG4gICAgICByZW1vdmVDaGlsZCBwYXJlbnQgY2hpbGRcblxubGV0IHJlbW92ZUNoaWxkcmVuIHBhcmVudCA9IExpc3QuaXRlciAocmVtb3ZlQ2hpbGQgcGFyZW50KSAoY2hpbGRyZW4gcGFyZW50KVxuXG5sZXQgcmVwbGFjZUNoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9XG4gIHJlbW92ZUNoaWxkcmVuIHBhcmVudCA7XG4gIGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlblxuXG5sZXQgYnlfaWQgcyA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkIHNcblxubGV0IGFkZExpc3RlbmVyID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGVsdCBldiBmID1cbiAgbGV0IGNhcHR1cmUgPSBPcHRpb24ubWFwIGJvb2wgY2FwdHVyZSBpblxuICBsZXQgb25jZSA9IE9wdGlvbi5tYXAgYm9vbCBvbmNlIGluXG4gIGxldCBwYXNzaXZlID0gT3B0aW9uLm1hcCBib29sIHBhc3NpdmUgaW5cbiAgaWdub3JlIEBAXG4gIERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IChEb20uRXZlbnQubWFrZSBldilcbiAgICAoRG9tLmhhbmRsZXIgKGZ1biBlIC0+IGJvb2wgKGYgZSkpKVxuXG5tb2R1bGUgRWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGNsYXNzZXMgPSBbXSkgPyhzdHlsZXMgPSBbXSkgPyhsaXN0ZW4gPSBbXSkgPyhhdHRyID0gW10pID90ZXh0IGZcbiAgICAgIGNoaWxkcmVuID1cbiAgICBsZXQgZWx0ID0gZiBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIExpc3QuaXRlciAoZnVuIChldiwgZikgLT4gYWRkTGlzdGVuZXIgZWx0IGV2IGYpIGxpc3RlbiA7XG4gICAgYWRkQ2xhc3NlcyBlbHQgY2xhc3NlcyA7XG4gICAgc2V0Q1NTIGVsdCBzdHlsZXMgO1xuICAgIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBzZXRBdHRyaWJ1dGUgZWx0IGsgdikgYXR0ciA7XG4gICAgc2V0VGV4dCBlbHQgdGV4dCA7XG4gICAgYXBwZW5kQ2hpbGRyZW4gZWx0IGNoaWxkcmVuIDtcbiAgICBlbHRcblxuICBsZXQgYnV0dG9uID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVCdXR0b24gY2hpbGRyZW5cblxuICBsZXQgZGl2ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVEaXYgY2hpbGRyZW5cblxuICBsZXQgYSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlQSBjaGlsZHJlblxuXG4gIGxldCBzcGFuID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTcGFuIGNoaWxkcmVuXG5cbiAgbGV0IGZvcm0gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUZvcm0gY2hpbGRyZW5cblxuICBsZXQgb3B0aW9uID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVPcHRpb24gY2hpbGRyZW5cblxuICBsZXQgc2VsZWN0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTZWxlY3QgY2hpbGRyZW5cblxuICBsZXQgaW5wdXQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0ICgpID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUlucHV0IFtdXG5cbiAgbGV0IGlmcmFtZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSWZyYW1lIGNoaWxkcmVuXG5cbiAgbGV0IGxhYmVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVMYWJlbCBjaGlsZHJlblxuXG4gIGxldCB1bCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVWwgY2hpbGRyZW5cblxuICBsZXQgbGkgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxpIGNoaWxkcmVuXG5cbiAgbGV0IGltZyA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW1nIGNoaWxkcmVuXG5cbiAgbGV0IHNjcmlwdCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU2NyaXB0IGNoaWxkcmVuXG5cbiAgbGV0IHRhYmxlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUYWJsZSBjaGlsZHJlblxuXG4gIGxldCB0ciA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVHIgY2hpbGRyZW5cblxuICBsZXQgdGggP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRoIGNoaWxkcmVuXG5cbiAgbGV0IHRkID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUZCBjaGlsZHJlblxuZW5kXG5cbmxldCBlbmNhcHNlIHMgPSBcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIlxuXG5sZXQgc3RyaW5nc190b19hcnJheSBsID0gXCJbXCIgXiBTdHJpbmcuY29uY2F0IFwiLFwiIGwgXiBcIl1cIlxuXG5sZXQgc3RyaW5nc190b19vYmplY3QgbCA9XG4gIGxldCBzID1cbiAgICBcIntcIlxuICAgIF4gU3RyaW5nLmNvbmNhdCBcIixcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gZW5jYXBzZSBrIF4gXCI6XCIgXiB2KSBsKVxuICAgIF4gXCJ9XCJcbiAgaW5cbiAgdHJ5IF9KU09OIyNwYXJzZSAoc3RyaW5nIHMpXG4gIHdpdGggXyAtPlxuICAgIGxvZ19zdHIgKFwiY2Fubm90IHBhcnNlIGpzb24gXCIgXiBzKSA7XG4gICAgVW5zYWZlLm9iaiBbfHxdXG4iLCJvcGVuIEV6anNfbWluXG5cbm1vZHVsZSBUeXBlcyA9IEV6anNfaWRiX3R5cGVzXG5vcGVuIFR5cGVzXG5cbnR5cGUgbW9kZSA9IFJFQURPTkxZIHwgUkVBRFdSSVRFIHwgVkVSU0lPTkNIQU5HRVxudHlwZSBkaXJlY3Rpb24gPSBORVhUIHwgUFJFViB8IE5FWFRVTklRVUUgfCBQUkVWVU5JUVVFXG5cbnR5cGUgZGJfb3B0aW9ucyA9IHsga2V5X3BhdGggOiBzdHJpbmcgb3B0aW9uOyBhdXRvX2luY3JlbWVudCA6IGJvb2wgb3B0aW9uIH1cblxudHlwZSBkYl91cGdyYWRlID0geyBvbGRfdmVyc2lvbiA6IGludDsgbmV3X3ZlcnNpb24gOiBpbnQgfVxuXG50eXBlIGluZGV4X29wdGlvbnMgPSB7IHVuaXF1ZSA6IGJvb2wgb3B0aW9uOyBtdWx0aV9lbnRyeSA6IGJvb2wgb3B0aW9uOyBsb2NhbGUgOiBib29sIG9wdGlvbiB9XG5cbm1vZHVsZSB0eXBlIFRyX3NpZyA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBqc1xuICB2YWwgdG9fanMgOiB0IC0+IGpzXG4gIHZhbCBvZl9qcyA6IGpzIC0+IHRcbmVuZFxuXG5sZXQgc3RyX29mX21vZGUgPSBmdW5jdGlvblxuICB8IFJFQURPTkxZIC0+IHN0cmluZyBcInJlYWRvbmx5XCJcbiAgfCBSRUFEV1JJVEUgLT4gc3RyaW5nIFwicmVhZHdyaXRlXCJcbiAgfCBWRVJTSU9OQ0hBTkdFIC0+IHN0cmluZyBcInZlcnNpb25jaGFuZ2VcIlxuXG5sZXQgc3RyX29mX2RpcmVjdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTkVYVCAtPiBzdHJpbmcgXCJuZXh0XCJcbiAgfCBQUkVWIC0+IHN0cmluZyBcInByZXZcIlxuICB8IE5FWFRVTklRVUUgLT4gc3RyaW5nIFwibmV4dHVuaXF1ZVwiXG4gIHwgUFJFVlVOSVFVRSAtPiBzdHJpbmcgXCJwcmV2dW5pcXVlXCJcblxubGV0IGlEQktleVJhbmdlIDogVW5zYWZlLmFueSBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIlxubGV0IGluZGV4ZWREQiA6IGpzX3N0cmluZyB0IGlEQkZhY3RvcnkgdCA9IFVuc2FmZS52YXJpYWJsZSBcIndpbmRvdy5pbmRleGVkREJcIlxuXG5sZXQgcmVzdWx0IHIgPSByIyMucmVzdWx0XG5cbmxldCB3cmFwID9lcnJvciA/Y2FsbGJhY2sgciA9XG4gIHRyeVxuICAgIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gICAgciMjLm9uc3VjY2VzcyA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIChyZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IHdyYXBmID9lcnJvciA/Y2FsbGJhY2sgZyByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKGcgQEAgcmVzdWx0IHIpKSkgY2FsbGJhY2s7XG4gICAgciMjLm9uZXJyb3IgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiByKSkgZXJyb3JcbiAgd2l0aCBleG4gLT5cbiAgICBtYXRjaCBlcnJvciB3aXRoIE5vbmUgLT4gcmFpc2UgZXhuIHwgU29tZSBmIC0+IGNhdGNoX2V4biAoZnVuIGUgLT4gZiAoVW5zYWZlLmNvZXJjZSBlKSkgZXhuXG5cbmxldCBkYl91cGdyYWRlX2V2ZW50IChlIDogaURCVmVyc2lvbkNoYW5nZUV2ZW50IHQpID0ge1xuICBvbGRfdmVyc2lvbiA9IGUjIy5vbGRWZXJzaW9uO1xuICBuZXdfdmVyc2lvbiA9IGUjIy5uZXdWZXJzaW9uO1xufVxuXG5sZXQgb3BlbkRCID91cGdyYWRlID9lcnJvciA/dmVyc2lvbiBuYW1lIGNhbGxiYWNrID1cbiAgbGV0IGluZGV4ZWREQiA6IF8gaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiIGluXG4gIGxldCByID0gbGF6eSAoaW5kZXhlZERCIyNfb3BlbiAoc3RyaW5nIG5hbWUpIChBT3B0Lm9wdGlvbiB2ZXJzaW9uKSkgaW5cbiAgd3JhcCA/ZXJyb3IgfmNhbGxiYWNrIHI7XG4gIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gIHIjIy5vbnVwZ3JhZGVuZWVkZWQgOj1cbiAgICBBT3B0LmFvcHQgKGZ1biB1IC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgIGxldCB2ID0gZGJfdXBncmFkZV9ldmVudCBlIGluXG4gICAgICAgIGxldCBkYiA9IHJlc3VsdCByIGluXG4gICAgICAgIHUgZGIgdikpIHVwZ3JhZGVcblxubGV0IHRyYW5zYWN0aW9uIHIgOiBpREJUcmFuc2FjdGlvbiB0ID0gciMjLnRyYW5zYWN0aW9uXG5cbmxldCBjcmVhdGVfZGJfb3B0aW9ucyB7a2V5X3BhdGg7IGF1dG9faW5jcmVtZW50fSA6IGNyZWF0ZV9kYl9vcHRpb25zIHQgPSBvYmplY3QlanNcbiAgdmFsIGtleVBhdGggPSBBT3B0LmFvcHQgc3RyaW5nIGtleV9wYXRoXG4gIHZhbCBhdXRvSW5jcmVtZW50ID0gQU9wdC5hb3B0IGJvb2wgYXV0b19pbmNyZW1lbnRcbmVuZFxuXG5sZXQgY3JlYXRlX3N0b3JlID9vcHRpb25zIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgPVxuICBVbnNhZmUuY29lcmNlIEBAXG4gIGRiIyNjcmVhdGVPYmplY3RTdG9yZSAoc3RyaW5nIG5hbWUpIChBT3B0LmFvcHQgY3JlYXRlX2RiX29wdGlvbnMgb3B0aW9ucylcblxubGV0IGdldF9zdG9yZSA/bW9kZSAoZGIgOiBpREJEYXRhYmFzZSB0KSBuYW1lIDogKF8sIF8pIGlEQk9iamVjdFN0b3JlIHQgPVxuICBsZXQgdHIgPSBkYiMjdHJhbnNhY3Rpb24gKGFycmF5IFt8IHN0cmluZyBuYW1lIHxdKSAoQU9wdC5hb3B0IHN0cl9vZl9tb2RlIG1vZGUpIGluXG4gIFVuc2FmZS5jb2VyY2UgQEAgdHIjI29iamVjdFN0b3JlIChzdHJpbmcgbmFtZSlcblxubW9kdWxlIFN0b3JlKEsgOiBUcl9zaWcpKEQgOiBUcl9zaWcpID0gc3RydWN0XG5cbiAgdHlwZSBzdG9yZSA9IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0XG4gIHR5cGUga2V5cyA9IEsgb2YgSy50IHwgS1Igb2YgSy5qcyBpREJLZXlSYW5nZSB0XG5cbiAgbGV0IGNyZWF0ZSA/b3B0aW9ucyBkYiBuYW1lIDogc3RvcmUgPVxuICAgIGNyZWF0ZV9zdG9yZSA/b3B0aW9ucyBkYiBuYW1lXG5cbiAgbGV0IHN0b3JlID9tb2RlIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgZ2V0X3N0b3JlID9tb2RlIGRiIG5hbWVcblxuICBsZXQgYWRkID9jYWxsYmFjayA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKHggOiBELnQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIEsub2ZfanMgQEAgbGF6eSAoc3QjI2FkZCAoRC50b19qcyB4KSAoQU9wdC5hb3B0IEsudG9fanMga2V5KSlcblxuICBsZXQgcHV0ID9jYWxsYmFjayA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKHggOiBELnQpID1cbiAgICB3cmFwID9jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI3B1dCAoRC50b19qcyB4KSAoQU9wdC5hb3B0IEsudG9fanMga2V5KSlcblxuICBsZXQgcmFuZ2UgP29sb3dlciA/b3VwcGVyID9sb3dlciA/dXBwZXIgKCkgPVxuICAgIGxldCBpREJLZXlSYW5nZSA6IEsuanMgaURCS2V5UmFuZ2UgdCA9IFVuc2FmZS52YXJpYWJsZSBcIklEQktleVJhbmdlXCIgaW5cbiAgICBtYXRjaCBsb3dlciwgdXBwZXIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgbG93ZXIsIE5vbmUgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjbG93ZXJCb3VuZCAoSy50b19qcyBsb3dlcikgKEFPcHQuYW9wdCBib29sIG9sb3dlcikpXG4gICAgfCBOb25lLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI3VwcGVyQm91bmQgKEsudG9fanMgdXBwZXIpIChBT3B0LmFvcHQgYm9vbCBvdXBwZXIpKVxuICAgIHwgU29tZSBsb3dlciwgU29tZSB1cHBlciAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNib3VuZFxuICAgICAgICAgICAgKEsudG9fanMgbG93ZXIpIChLLnRvX2pzIHVwcGVyKVxuICAgICAgICAgICAgKEFPcHQuYW9wdCBib29sIG9sb3dlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG5cbiAgbGV0IGNvdW50ID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoY2FsbGJhY2sgOiBpbnQgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnQgQU9wdC51bmRlZmluZWQpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnQgKEFPcHQuZGVmIChLLnRvX2pzIGspKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnRfcmFuZ2UgKEFPcHQuZGVmIHIpKVxuXG4gIGxldCBnZXQgP2Vycm9yIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoRC5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldCAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsID9lcnJvciA/a2V5ID9jb3VudCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogRC50IGxpc3QgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGwgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5vcHRpb24gY291bnQpKVxuXG4gIGxldCBnZXRfa2V5ID9lcnJvciAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogSy50IG9wdGlvbiAtPiB1bml0KSBrID1cbiAgICBsZXQgb2ZfanMganMgPSBtYXRjaCBBT3B0LnRvX29wdGlvbiBqcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGpzIC0+IFNvbWUgKEsub2ZfanMganMpIGluXG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBLIGtleSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRLZXkgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleV9yYW5nZSByYW5nZSlcblxuICBsZXQgZ2V0X2FsbF9rZXlzID9lcnJvciA/a2V5ID9jb3VudCAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogSy50IGxpc3QgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzIEFPcHQudW5kZWZpbmVkIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5vcHRpb24gY291bnQpKVxuXG4gIGxldCBkZWxldGUgP2NhbGxiYWNrID9lcnJvciAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgPSBmdW5jdGlvblxuICAgIHwgSyBrZXkgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGUgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXAgP2Vycm9yID9jYWxsYmFjayBAQCBsYXp5IChzdCMjZGVsZXRlX3JhbmdlIHJhbmdlKVxuXG4gIGxldCBpdGVyID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gdW5pdCkgPVxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKTtcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgZm9sZCA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gRC50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrIChELm9mX2pzIGMjIy52YWx1ZSkgIWFjYztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgaXRlcl9rZXlzID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgaztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgZm9sZF9rZXlzID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiAnYSAtPiAnYSkgKHN0YXJ0IDogJ2EpIChjYWxsYmFjayA6ICdhIC0+IHVuaXQpID1cbiAgICBsZXQgYWNjID0gcmVmIHN0YXJ0IGluXG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2FsbGJhY2sgIWFjY1xuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgYWNjIDo9IGYgayAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBjbGVhciA/ZXJyb3IgP2NhbGxiYWNrIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSA9XG4gICAgd3JhcGYgP2NhbGxiYWNrID9lcnJvciAoZnVuIF8gLT4gKCkpIEBAIGxhenkgc3QjI2NsZWFyXG5cbiAgbGV0IGNyZWF0ZV9pbmRleF9vcHRpb25zIHt1bmlxdWU7IG11bHRpX2VudHJ5OyBsb2NhbGV9IDogY3JlYXRlX2luZGV4X29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICAgIHZhbCB1bmlxdWUgPSBBT3B0LmFvcHQgYm9vbCB1bmlxdWVcbiAgICB2YWwgbXVsdGlFbnRyeSA9IEFPcHQuYW9wdCBib29sIG11bHRpX2VudHJ5XG4gICAgdmFsIGxvY2FsZSA9IEFPcHQuYW9wdCBib29sIGxvY2FsZVxuICBlbmRcblxuICBsZXQgY3JlYXRlX2luZGV4ID9vcHRpb25zIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lIGtleV9wYXRoID1cbiAgICBsZXQgb3B0aW9ucyA9IEFPcHQuYW9wdCBjcmVhdGVfaW5kZXhfb3B0aW9ucyBvcHRpb25zIGluXG4gICAgc3QjI2NyZWF0ZUluZGV4IChzdHJpbmcgbmFtZSkgKHN0cmluZyBrZXlfcGF0aCkgb3B0aW9uc1xuXG4gIGxldCBkZWxldGVfaW5kZXggKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUgPVxuICAgIGlnbm9yZSBAQCBzdCMjZGVsZXRlSW5kZXggKHN0cmluZyBuYW1lKVxuXG4gIGxldCBnZXRfaW5kZXggKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUgPVxuICAgIHN0IyNpbmRleCAoc3RyaW5nIG5hbWUpXG5cbmVuZFxuXG5tb2R1bGUgTm9UcihTIDogc2lnIHR5cGUgdCBlbmQpIDogVHJfc2lnIHdpdGggdHlwZSB0ID0gUy50IGFuZCB0eXBlIGpzID0gUy50ID0gc3RydWN0XG4gIHR5cGUgdCA9IFMudFxuICB0eXBlIGpzID0gUy50XG4gIGxldCB0b19qcyB4ID0geFxuICBsZXQgb2ZfanMgeCA9IHhcbmVuZFxuXG5tb2R1bGUgSW50VHIgOiAoVHJfc2lnIHdpdGggdHlwZSBqcyA9IGludCBhbmQgdHlwZSB0ID0gaW50KSA9IE5vVHIoc3RydWN0IHR5cGUgdCA9IGludCBlbmQpXG5cbm1vZHVsZSBTdHJpbmdUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBqc19zdHJpbmcgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBqc19zdHJpbmcgdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRvX2pzIHggPSBzdHJpbmcgeFxuICBsZXQgb2ZfanMgeCA9IHRvX3N0cmluZyB4XG5lbmRcblxubW9kdWxlIE51bWJlclRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IG51bWJlciB0IGFuZCB0eXBlIHQgPSBmbG9hdCA9IHN0cnVjdFxuICB0eXBlIGpzID0gbnVtYmVyIHRcbiAgdHlwZSB0ID0gZmxvYXRcbiAgbGV0IHRvX2pzIHggPSBudW1iZXJfb2ZfZmxvYXQgeFxuICBsZXQgb2ZfanMgeCA9IGZsb2F0X29mX251bWJlciB4XG5lbmRcblxubW9kdWxlIERhdGVUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBkYXRlIHQgYW5kIHR5cGUgdCA9IHN0cmluZyA9IHN0cnVjdFxuICB0eXBlIGpzID0gZGF0ZSB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IG5ldyVqcyBkYXRlX2Zyb21UaW1lVmFsdWUgKGRhdGUjI3BhcnNlIChzdHJpbmcgeCkpXG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHgjI3RvTG9jYWxlU3RyaW5nXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gU3RkbGliLmluX2NoYW5uZWxcblxubGV0IGVxdWFsICh0MSA6IHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxuXG5sZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gIFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG47O1xuXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlIH5mID0gRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuXG5sZXQgbWF5X2VvZiBmID1cbiAgdHJ5IFNvbWUgKGYgKCkpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBOb25lXG47O1xuXG5sZXQgaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IFN0ZGxpYi5pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgcmVhbGx5X2lucHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuKVxubGV0IHJlYWxseV9pbnB1dF9leG4gdCB+YnVmIH5wb3MgfmxlbiA9IFN0ZGxpYi5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlblxubGV0IGlucHV0X2J5dGUgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfYnl0ZSB0KVxubGV0IGlucHV0X2NoYXIgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfY2hhciB0KVxubGV0IGlucHV0X2JpbmFyeV9pbnQgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfYmluYXJ5X2ludCB0KVxubGV0IHVuc2FmZV9pbnB1dF92YWx1ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF92YWx1ZSB0KVxubGV0IGlucHV0X2J1ZmZlciB0IGJ1ZiB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmIHQgbGVuKVxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cblxubGV0IGlucHV0X2FsbCB0ID1cbiAgKCogV2UgdXNlIDY1NTM2IGJlY2F1c2UgdGhhdCBpcyB0aGUgc2l6ZSBvZiBPQ2FtbCdzIElPIGJ1ZmZlcnMuICopXG4gIGxldCBjaHVua19zaXplID0gNjU1MzYgaW5cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgY2h1bmtfc2l6ZSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIFN0ZGxpYi5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmZmVyIHQgY2h1bmtfc2l6ZTtcbiAgICBsb29wICgpXG4gIGluXG4gIHRyeSBsb29wICgpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBCdWZmZXIuY29udGVudHMgYnVmZmVyXG47O1xuXG5sZXQgdHJpbSB+Zml4X3dpbl9lb2wgbGluZSA9XG4gIGlmIGZpeF93aW5fZW9sXG4gIHRoZW4gKFxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgKFN0cmluZy5nZXQgbGluZSAobGVuIC0gMSkpICdcXHInXG4gICAgdGhlbiBTdHJpbmcuc3ViIGxpbmUgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgZWxzZSBsaW5lKVxuICBlbHNlIGxpbmVcbjs7XG5cbmxldCBpbnB1dF9saW5lID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbWF0Y2ggbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9saW5lIHQpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGxpbmUgLT4gU29tZSAodHJpbSB+Zml4X3dpbl9lb2wgbGluZSlcbjs7XG5cbmxldCBpbnB1dF9saW5lX2V4biA/KGZpeF93aW5fZW9sID0gdHJ1ZSkgdCA9XG4gIGxldCBsaW5lID0gU3RkbGliLmlucHV0X2xpbmUgdCBpblxuICB0cmltIH5maXhfd2luX2VvbCBsaW5lXG47O1xuXG5sZXQgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBhYyA9XG4gICAgbWF0Y2ggaW5wdXRfbGluZSA/Zml4X3dpbl9lb2wgdCB3aXRoXG4gICAgfCBOb25lIC0+IGFjXG4gICAgfCBTb21lIGxpbmUgLT4gbG9vcCAoZiBhYyBsaW5lKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wgdCA9XG4gIExpc3QucmV2IChmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OltdIH5mOihmdW4gbGluZXMgbGluZSAtPiBsaW5lIDo6IGxpbmVzKSlcbjs7XG5cbmxldCBpdGVyX2xpbmVzID9maXhfd2luX2VvbCB0IH5mID1cbiAgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdDooKSB+ZjooZnVuICgpIGxpbmUgLT4gZiBsaW5lKVxuOztcblxubGV0IHJlYWRfbGluZXMgP2ZpeF93aW5fZW9sIGZuYW1lID0gd2l0aF9maWxlIGZuYW1lIH5mOihpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wpXG5sZXQgcmVhZF9hbGwgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6aW5wdXRfYWxsXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IFN0ZGxpYi5vdXRfY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19vdXRcbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19vdXRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGlmIHBoeXNfZXF1YWwgdCBzdGRlcnJcbiAgdGhlbiBTZXhwLkF0b20gXCI8c3RkZXJyPlwiXG4gIGVsc2UgaWYgcGh5c19lcXVhbCB0IHN0ZG91dFxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRvdXQ+XCJcbiAgZWxzZSBTZXhwLkF0b20gXCI8T3V0X2NoYW5uZWwudD5cIlxuOztcblxudHlwZSAnYSB3aXRoX2NyZWF0ZV9hcmdzID1cbiAgP2JpbmFyeTpib29sIC0+ID9hcHBlbmQ6Ym9vbCAtPiA/ZmFpbF9pZl9leGlzdHM6Ym9vbCAtPiA/cGVybTppbnQgLT4gJ2FcblxubGV0IGNyZWF0ZVxuICAgICAgPyhiaW5hcnkgPSB0cnVlKVxuICAgICAgPyhhcHBlbmQgPSBmYWxzZSlcbiAgICAgID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KVxuICAgICAgZmlsZVxuICA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcbjs7XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IGZsdXNoID0gU3RkbGliLmZsdXNoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9fZXJyID0gU3RkbGliLmNsb3NlX291dF9ub2VyclxubGV0IG91dHB1dCB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLm91dHB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmcgdCBidWYgcG9zIGxlblxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X2JpbmFyeV9pbnQgPSBTdGRsaWIub3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfYnVmZmVyID0gU3RkbGliLkJ1ZmZlci5vdXRwdXRfYnVmZmVyXG5sZXQgb3V0cHV0X3ZhbHVlID0gU3RkbGliLm91dHB1dF92YWx1ZVxubGV0IG5ld2xpbmUgdCA9IG91dHB1dF9zdHJpbmcgdCBcIlxcblwiXG5cbmxldCBvdXRwdXRfbGluZXMgdCBsaW5lcyA9XG4gIExpc3QuaXRlciBsaW5lcyB+ZjooZnVuIGxpbmUgLT5cbiAgICBvdXRwdXRfc3RyaW5nIHQgbGluZTtcbiAgICBuZXdsaW5lIHQpXG47O1xuXG5sZXQgcHJpbnRmID0gU3RkbGliLlByaW50Zi5wcmludGZcbmxldCBlcHJpbnRmID0gU3RkbGliLlByaW50Zi5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGxpYi5QcmludGYuZnByaW50ZlxubGV0IGtmcHJpbnRmID0gU3RkbGliLlByaW50Zi5rZnByaW50ZlxubGV0IHByaW50X3N0cmluZyA9IFN0ZGxpYi5wcmludF9zdHJpbmdcbmxldCBwcmludF9lbmRsaW5lID0gU3RkbGliLnByaW50X2VuZGxpbmVcbmxldCBwcmVycl9lbmRsaW5lID0gU3RkbGliLnByZXJyX2VuZGxpbmVcblxubGV0IHByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByaW50X2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IGVwcmludF9zID9tYWNoIHNleHAgPVxuICBwcmVycl9lbmRsaW5lXG4gICAgKG1hdGNoIG1hY2ggd2l0aFxuICAgICB8IFNvbWUgKCkgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwXG4gICAgIHwgTm9uZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbjs7XG5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuOztcblxubGV0IHdyaXRlX2xpbmVzIGZpbGUgbGluZXMgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X2xpbmVzIHQgbGluZXMpXG5sZXQgd3JpdGVfYWxsIGZpbGUgfmRhdGEgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG4iLCJtb2R1bGUgQ29udiA9IFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Jcbm1vZHVsZSBTZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQmFzZVxuXG50eXBlICdhIHRlc3RfcHJlZFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiAoJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfZXFcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9yZXN1bHRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiBleHBlY3Q6J2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG5leGNlcHRpb24gRSBvZiBzdHJpbmcgKiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZyBib2R5ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0YWdcbiAgICB8IFNvbWUgcyAtPiBzIF4gXCI6IFwiIF4gdGFnXG4gIGluXG4gIGxldCBzZXhwID1cbiAgICBTZXhwLkxpc3QgKFxuICAgICAgYm9keVxuICAgICAgQCBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIkxvY1wiOyBTZXhwLkF0b20gcG9zIF0gXVxuICAgICAgQCBiZWdpbiBtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IF8gLT4gWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJTdGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IFslc2V4cF9vZjogU291cmNlX2NvZGVfcG9zaXRpb24udCBsaXN0XSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdIF1cbiAgICAgIGVuZFxuICAgIClcbiAgaW5cbiAgKCogSGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzIHdlIHJldHVybiBleGNlcHRpb25zLCByYXRoZXIgdGhhbiBkaXJlY3RseSByYWlzaW5nLCBhbmRcbiAgICAgaW5zdGVhZCByYWlzZSBhdCB0aGUgbGF0ZXN0IG1vbWVudCBwb3NzaWJsZSwgc28gYmFja3RyYWNlIGRvbid0IGluY2x1ZGUgbm9pc2UgZnJvbVxuICAgICB0aGVzZSBmdW5jdGlvbnMgdGhhdCBjb25zdHJ1Y3QgZXhjZXB0aW9ucy4gKilcbiAgRSAobWVzc2FnZSwgc2V4cClcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcInByZWRpY2F0ZSBmYWlsZWRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJWYWx1ZVwiOyBzZXhwaWZpZXIgdF1cbiAgXVxuXG5sZXQgdGVzdF9wcmVkIH5wb3MgfnNleHBpZmllciB+aGVyZSA/bWVzc2FnZSBwcmVkaWNhdGUgdCA9XG4gIGlmIG5vdCAocHJlZGljYXRlIHQpIHRoZW5cbiAgICByYWlzZSAoZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdClcblxubGV0IHJfZGlmZiA6IChmcm9tXzpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB1bml0KSBvcHRpb24gcmVmID0gcmVmICAgTm9uZVxubGV0IHNldF9kaWZmX2Z1bmN0aW9uIGYgPSByX2RpZmYgOj0gZlxuXG5sZXQgW0Bjb2xkXSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgZ290ID0gc2V4cGlmaWVyIGdvdCBpblxuICBsZXQgZXhwZWN0ID0gc2V4cGlmaWVyIGV4cGVjdCBpblxuICBiZWdpbiBtYXRjaCAhcl9kaWZmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkaWZmIC0+XG4gICAgbGV0IGZyb21fID0gU2V4cC50b19zdHJpbmdfaHVtIGV4cGVjdCBpblxuICAgIGxldCB0b18gICA9IFNleHAudG9fc3RyaW5nX2h1bSBnb3QgaW5cbiAgICBkaWZmIH5mcm9tXyB+dG9fXG4gIGVuZDtcbiAgYEZhaWwgKGV4cGVjdCwgZ290KVxuXG5sZXQgdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbGV0IHBhc3MgPVxuICAgIG1hdGNoIGVxdWFsIHdpdGhcbiAgICB8IE5vbmUgLT4gY29tcGFyYXRvciBnb3QgZXhwZWN0ID0gMFxuICAgIHwgU29tZSBmIC0+IGYgZ290IGV4cGVjdFxuICBpblxuICBpZiBwYXNzXG4gIHRoZW4gYFBhc3NcbiAgZWxzZSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3RcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiY29tcGFyaXNvbiBmYWlsZWRcIiBbXG4gICAgdDE7XG4gICAgU2V4cC5BdG9tIFwidnNcIjtcbiAgICB0MjtcbiAgXVxuXG5sZXQgdGVzdF9lcSB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdDp0MSB+Z290OnQyIHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsICh0MSwgdDIpIC0+IHJhaXNlIChleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIpXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImdvdCB1bmV4cGVjdGVkIHJlc3VsdFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImV4cGVjdGVkXCI7IGV4cGVjdF07XG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJnb3RcIjsgZ290XTtcbiAgXVxuXG5sZXRbQHdhcm5pbmcgXCItMTZcIl0gdGVzdF9yZXN1bHQgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3Qgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKGV4cGVjdCwgZ290KSAtPiByYWlzZSAoZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290KVxuIiwibGV0IHVuaXF1ZV9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG4oKiBVc2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IGxpYm5hbWUgaW4gc3VjaCBhIHdheSB0aGF0IGZvciBmdW5jdG9yIGFwcGxpY2F0aW9ucywgaXQgaXNcbiAgIHRoZSBjYWxsaW5nIGxpYnJhcmllcyBuYW1lIHRoYXQgZ2V0cyByZWdpc3RlcmVkLiAqKVxubW9kdWxlIEN1cnJlbnRfbGlibmFtZSA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiPHVua25vd24+XCJcbiAgbGV0IGxpYm5hbWVfcmVmID0gcmVmIG51bGxcbiAgbGV0IHNldCBzdHIgPSBsaWJuYW1lX3JlZiA6PSBzdHJcbiAgbGV0IHVuc2V0ICgpID0gbGlibmFtZV9yZWYgOj0gbnVsbFxuICBsZXQgZ2V0ICgpID0gIWxpYm5hbWVfcmVmXG5lbmRcblxubW9kdWxlIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrID0gc3RydWN0XG4gIGxldCB0ID0gcmVmIFtdXG4gIGxldCBwdXNoIHMgPSB0IDo9IHMgOjogIXRcbiAgbGV0IHBvcF9leG4gKCkgPSB0IDo9IExpc3QudGwgIXRcblxuICBsZXQgdG9fbmFtZSAoKSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbXMgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIi5cIiAoTGlzdC5yZXYgbXMpKVxuICA7O1xuZW5kXG5cbigqIFRoaXMgaXMgdGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmUgb2YgdGhpcyBtb2R1bGUuIEFuIFtFbnRyeS50XSByZXByZXNlbnRzIGEgYmVuY2htYXJrXG4gICBhbG9uZyB3aXRoIHNvbWUgbWV0YWRhdGEgYWJvdXQgaXMgcG9zaXRpb24sIGFyZ3VtZW50cyBldGMuICopXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjID1cbiAgICB7IGFyZ19uYW1lIDogc3RyaW5nXG4gICAgOyBwYXJhbXMgOiAoc3RyaW5nICogJ3BhcmFtKSBsaXN0XG4gICAgOyB0aHVuayA6ICdwYXJhbSAtPiB1bml0IC0+ICdhXG4gICAgfVxuXG4gIHR5cGUgdGVzdF9zcGVjID1cbiAgICB8IFJlZ3VsYXJfdGh1bmsgOiAoWyBgaW5pdCBdIC0+IHVuaXQgLT4gJ2EpIC0+IHRlc3Rfc3BlY1xuICAgIHwgUGFyYW1ldGVyaXNlZF90aHVuayA6ICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgLT4gdGVzdF9zcGVjXG5cbiAgdHlwZSB0ID1cbiAgICB7IHVuaXF1ZV9pZCA6IGludFxuICAgIDsgY29kZSA6IHN0cmluZ1xuICAgIDsgdHlwZV9jb252X3BhdGggOiBzdHJpbmdcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGZpbGVuYW1lIDogc3RyaW5nXG4gICAgOyBsaW5lIDogaW50XG4gICAgOyBzdGFydHBvcyA6IGludFxuICAgIDsgZW5kcG9zIDogaW50XG4gICAgOyB0ZXN0X3NwZWMgOiB0ZXN0X3NwZWNcbiAgICA7IGJlbmNoX21vZHVsZV9uYW1lIDogc3RyaW5nIG9wdGlvblxuICAgIH1cblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmUgdDEudW5pcXVlX2lkIHQyLnVuaXF1ZV9pZFxuXG4gICgqIEV4dHJhY3RzIG1vZHVsZSBuYW1lIGZyb20gW1wiZmlsZW5hbWUubWwuTW9kdWxlXCJdLCB3aGljaCBpcyB0aGUgZm9ybWF0IG9mIFtleHRfbmFtZV1cbiAgICAgYXMgc2V0IGJ5IFt0eXBlY29udl0uICopXG4gIGxldCBnZXRfbW9kdWxlX25hbWVfb3B0IHQgPVxuICAgIGxldCBzdHIgPSB0LnR5cGVfY29udl9wYXRoIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSArIDQgPD0gbGVuXG4gICAgICB0aGVuXG4gICAgICAgIGlmIFN0cmluZy5zdWIgc3RyIGkgNCA9IFwiLm1sLlwiXG4gICAgICAgIHRoZW4gU29tZSAoU3RyaW5nLnN1YiBzdHIgKGkgKyA0KSAobGVuIC0gaSAtIDQpKVxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgd2l0aF90ZXN0X3NwZWMgdCB0ZXN0X3NwZWMgPSB7IHQgd2l0aCB0ZXN0X3NwZWMgfVxuZW5kXG5cbigqIEluc3BlY3Qgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBkZWNpZGUgaWYgYmVuY2htYXJrcyBhcmUgYmVpbmcgcnVuLiBUaGlzIGlzXG4gICBjYWxsZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBbcGFfYmVuY2hdIHN5bnRheCB0byBkZWNpZGUgaWYgdGhlIGdsb2JhbCBoYXNodGFibGVcbiAgIHNob3VsZCBiZSBwb3B1bGF0ZWQuICopXG5sZXQgYWRkX2Vudmlyb25tZW50X3ZhciA9XG4gIGxldCB2ID1cbiAgICB0cnkgU3lzLmdldGVudiBcIkJFTkNITUFSS1NfUlVOTkVSXCIgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IFwiXCJcbiAgaW5cbiAgdiA9IFwiVFJVRVwiXG47O1xuXG4oKiBUaGlzIGhhc2h0YWJsZSBjb250YWlucyBhbGwgdGhlIGJlbmNobWFya3MgZnJvbSBhbGwgdGhlIG9mIGxpYnJhcmllcyB0aGF0IGhhdmUgYmVlblxuICAgbG9hZGVkLiBBdCB0aGUgdGltZSB0aGUgYmVuY2htYXJrcyBhcmUgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyB3aXRoIFtwcHhfYmVuY2hfbGliXSB3ZVxuICAgZG9uJ3QgeWV0IGtub3cgd2hpY2ggbGlicmFyaWVzIHdpbGwgbmVlZCB0byBiZSBydW4uICAqKVxubGV0IGxpYnNfdG9fZW50cmllcyA6IChzdHJpbmcsIEVudHJ5LnQgbGlzdCkgSGFzaHRibC50ID0gSGFzaHRibC5jcmVhdGUgMTBcblxubGV0IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lID1cbiAgdHJ5IEhhc2h0YmwuZmluZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IFtdXG47O1xuXG5sZXQgbG9va3VwX2xpYiB+bGlibmFtZSA9IExpc3QucmV2IChsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcblxubGV0IGZvcmNlX2Ryb3AgPVxuICAoKiBVc2VmdWwgZm9yIGpzX29mX29jYW1sIHRvIHBlcmZvcm0gZGVhZGNvZGUgZWxpbWluYXRpb24uXG4gICAgIHNlZSBwcHgvcHB4X2lubGluZV90ZXN0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwgW0FjdGlvbi5nZXRdIGZvciBtb3JlIGRldGFpbHMgKilcbiAgdHJ5XG4gICAgaWdub3JlIChTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9CRU5DSFwiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfbW9kZSAoKSA9IGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgYENvbGxlY3RcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaFxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aFxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvc1xuICAgICAgICAgICAgICAgICAgICAgdGVzdF9zcGVjXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgIGxldCBsaWJuYW1lID0gQ3VycmVudF9saWJuYW1lLmdldCAoKSBpblxuICAgIGxldCBlbnRyeSA9XG4gICAgICB7IEVudHJ5LmNvZGVcbiAgICAgIDsgdW5pcXVlX2lkID0gdW5pcXVlX2lkICgpXG4gICAgICA7IHR5cGVfY29udl9wYXRoXG4gICAgICA7IGJlbmNoX21vZHVsZV9uYW1lID0gQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sudG9fbmFtZSAoKVxuICAgICAgOyBuYW1lXG4gICAgICA7IGZpbGVuYW1lXG4gICAgICA7IGxpbmVcbiAgICAgIDsgc3RhcnRwb3NcbiAgICAgIDsgZW5kcG9zXG4gICAgICA7IHRlc3Rfc3BlY1xuICAgICAgfVxuICAgIGluXG4gICAgSGFzaHRibC5hZGQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgKGVudHJ5IDo6IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaF9tb2R1bGVcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZTpfXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGg6X1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5saW5lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvczpfXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgKCogUnVubmluZyBmIHJlZ2lzdGVycyB0aGUgYmVuY2htYXJrcyB1c2luZyBCRU5DSCAqKVxuICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnB1c2ggbmFtZTtcbiAgICAodHJ5XG4gICAgICAgZiAoKTtcbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpXG4gICAgIHdpdGhcbiAgICAgfCBleCAtPlxuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKCk7XG4gICAgICAgcmFpc2UgZXgpXG47O1xuIiwidHlwZSB0ID0gc3RyaW5nXG5cbigqIFNoYXJlIHRoZSBkaWdlc3Qgb2YgdGhlIGVtcHR5IHN0cmluZyAqKVxubGV0IGVtcHR5ID0gRGlnZXN0LnN0cmluZyBcIlwiXG5sZXQgbWFrZSBzID1cbiAgaWYgcyA9IGVtcHR5IHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgc1xuXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcblxubGV0IGxlbmd0aCA9IDE2XG5cbmxldCB0b19iaW5hcnkgcyA9IHNcbmxldCBvZl9iaW5hcnlfZXhuIHMgPSBhc3NlcnQgKFN0cmluZy5sZW5ndGggcyA9IGxlbmd0aCk7IG1ha2Ugc1xubGV0IHVuc2FmZV9vZl9iaW5hcnkgPSBtYWtlXG5cbmxldCB0b19oZXggPSBEaWdlc3QudG9faGV4XG5sZXQgb2ZfaGV4X2V4biBzID0gbWFrZSAoRGlnZXN0LmZyb21faGV4IHMpXG5cbmxldCBzdHJpbmcgcyA9IG1ha2UgKERpZ2VzdC5zdHJpbmcgcylcblxubGV0IGJ5dGVzIHMgPSBtYWtlIChEaWdlc3QuYnl0ZXMgcylcblxubGV0IHN1YmJ5dGVzIGJ5dGVzIH5wb3MgfmxlbiA9IG1ha2UgKERpZ2VzdC5zdWJieXRlcyBieXRlcyBwb3MgbGVuKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTG9jYXRpb24gOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIFV1aWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubGV0IGV2YWxfZmFpbCBsb2MgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gcyAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgIVwiJXtMb2NhdGlvbn06ICVzXCIgbG9jIHMpKSBmbXRcbjs7XG5cbmxldCBlcXVhbF9vcHRpb24gZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG47O1xuXG5tb2R1bGUgU29ydGVkX3RhYmxlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3QgLT4gJ2EgdFxuICB2YWwgZXhwb3NlIDogJ2EgdCAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7IHNvcnRlZCA6IChzdHJpbmcgKiAnYSkgbGlzdCB9IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHNcbiAgICA6ICBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgICAtPiBbIGBPayBvZiAoc3RyaW5nICogJ2EpIGxpc3QgfCBgTWlzbWF0Y2ggb2Ygc3RyaW5nIF1cbiAgICA9XG4gICAgZnVuIH5lcSAtPlxuICAgIGxldCByZWMgbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYE9rIChMaXN0LnJldiBhY2MpXG4gICAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPlxuICAgICAgICBpZiBTdHJpbmcuKGxhc3Rfa2V5ID0ga2V5KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgZXEgbGFzdF92YWx1ZSB2YWx1ZSB0aGVuIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSB4cyBlbHNlIGBNaXNtYXRjaCBrZXlcbiAgICAgICAgZWxzZSBsb29wICgoa2V5LCB2YWx1ZSkgOjogYWNjKSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gICAgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgW10gLT4gYE9rIFtdXG4gICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT4gbG9vcCBbIGtleSwgdmFsdWUgXSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBsb2MgfmVxIHhzID1cbiAgICBsZXQgc29ydGVkID0gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKHMxLCBfKSAoczIsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMxIHMyKSB4cyBpblxuICAgIG1hdGNoIG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHMgfmVxIHNvcnRlZCB3aXRoXG4gICAgfCBgT2sgc29ydGVkIC0+IHsgc29ydGVkIH1cbiAgICB8IGBNaXNtYXRjaCBzIC0+XG4gICAgICBldmFsX2ZhaWwgbG9jIFwiRGlmZmVyZW50IHNoYXBlcyBmb3IgZHVwbGljYXRlZCBwb2x5bW9ycGhpYyBjb25zdHJ1Y3RvcjogYCVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCBleHBvc2UgdCA9IHQuc29ydGVkXG4gIGxldCBtYXAgdCB+ZiA9IHsgc29ydGVkID0gTGlzdC5tYXAgdC5zb3J0ZWQgfmY6KGZ1biAoaywgdikgLT4gaywgZiB2KSB9XG5lbmRcblxubW9kdWxlIERpZ2VzdCA6IHNpZ1xuICB0eXBlIHQgPSBNZDVfbGliLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgdG9fbWQ1IDogdCAtPiBNZDVfbGliLnRcbiAgdmFsIG9mX21kNSA6IE1kNV9saWIudCAtPiB0XG4gIHZhbCB0b19oZXggOiB0IC0+IHN0cmluZ1xuICB2YWwgY29uc3RydWN0b3IgOiBzdHJpbmcgLT4gdCBsaXN0IC0+IHRcbiAgdmFsIGxpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgcGFpciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgdXVpZCA6IFV1aWQudCAtPiB0XG4gIHZhbCBpbnQgOiBpbnQgLT4gdFxuICB2YWwgb3B0aW9uIDogdCBvcHRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTWQ1X2xpYlxuXG4gIGxldCB0b19tZDUgdCA9IHRcbiAgbGV0IG9mX21kNSB0ID0gdFxuICBsZXQgc2V4cF9vZl90IHQgPSB0IHw+IHRvX2hleCB8PiBzZXhwX29mX3N0cmluZ1xuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IHN0cmluZ19vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHV1aWQgdSA9IHN0cmluZyAoVXVpZC50b19zdHJpbmcgdSlcbiAgbGV0IGludCB4ID0gc3RyaW5nIChJbnQudG9fc3RyaW5nIHgpXG4gIGxldCBwYWlyIHggeSA9IHN0cmluZyAodG9fYmluYXJ5IHggXiB0b19iaW5hcnkgeSlcbiAgbGV0IGxpc3QgbCA9IHN0cmluZyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKExpc3QubWFwIH5mOnRvX2JpbmFyeSBsKSlcbiAgbGV0IGNvbnN0cnVjdG9yIHMgbCA9IHN0cmluZyAocyBeIHRvX2JpbmFyeSAobGlzdCBsKSlcblxuICBsZXQgb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gY29uc3RydWN0b3IgXCJub25lXCIgW11cbiAgICB8IFNvbWUgeCAtPiBjb25zdHJ1Y3RvciBcInNvbWVcIiBbIHggXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yID0gc3RydWN0XG4gICgqIFsnYSB0XSBpcyBhIG5vbi1yZWN1cnNpdmUgdHlwZSwgdXNlZCB0byByZXByZXNlbnQgMS1sYXllciBvZiBleHByZXNzaW9uLiAgVGhlXG4gICAgIHJlY3Vyc2l2ZSBrbm90IGlzIHRpZWQgYmVsb3cgaW4gW0Nhbm9uaWNhbF9mdWxsLkV4cC50XS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqICdhXG4gICAgfCBCYXNlIG9mIFV1aWQudCAqICdhIGxpc3RcbiAgICB8IFR1cGxlIG9mICdhIGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqICdhIGxpc3QpIGxpc3RcbiAgICAoKiBQb2x5bW9ycGhpYyB2YXJpYW50cyBhcmUgaW5zZW5zaXRpdmUgdG8gdGhlIG9yZGVyIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIGxpc3RlZCAqKVxuICAgIHwgUG9seV92YXJpYW50IG9mICdhIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICgqIExlZnQtaGFuZC1zaWRlIG9mIFtBcHBsaWNhdGlvbl0gaXMgYSBwb3RlbnRpYWxseSByZWN1cnNpdmUgZGVmaW5pdGlvbjogaXRcbiAgICAgICBjYW4gcmVmZXIgdG8gaXRzZWxmIHVzaW5nIFtSZWNfYXBwIChpLCBfKV0gd2hlcmUgW2ldIGlzIHRoZSBkZXB0aCBvZiB0aGlzXG4gICAgICAgYXBwbGljYXRpb24gbm9kZSAoaG93IG1hbnkgYXBwbGljYXRpb24gbm9kZXMgYXJlIGFib3ZlIGl0KS5cbiAgICAgICBJdCBhbHNvIGhhcyBpdHMgb3duIHNjb3BlIG9mIHR5cGUgdmFyaWFibGVzIHNvIGl0IGNhbiBub3QgcmVmZXIgdG8gdHlwZSB2YXJpYWJsZXNcbiAgICAgICBvZiB0aGUgZW5jbG9zaW5nIHNjb3BlLlxuICAgICopXG4gICAgfCBBcHBsaWNhdGlvbiBvZiAnYSAqICdhIGxpc3RcbiAgICB8IFJlY19hcHAgb2YgaW50ICogJ2EgbGlzdFxuICAgIHwgVmFyIG9mIGludFxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBtYXAgeCB+ZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBbm5vdGF0ZSAodSwgeCkgLT4gQW5ub3RhdGUgKHUsIGYgeClcbiAgICB8IEJhc2UgKHMsIHhzKSAtPiBCYXNlIChzLCBMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFR1cGxlIHhzIC0+IFR1cGxlIChMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFJlY29yZCBsIC0+IFJlY29yZCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4KSAtPiBzLCBmIHgpKVxuICAgIHwgVmFyaWFudCBsIC0+IFZhcmlhbnQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeHMpIC0+IHMsIExpc3QubWFwIH5mIHhzKSlcbiAgICB8IFBvbHlfdmFyaWFudCB0IC0+IFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLm1hcCB0IH5mOihPcHRpb24ubWFwIH5mKSlcbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBBcHBsaWNhdGlvbiAoZiB4LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgUmVjX2FwcCAodCwgbCkgLT4gUmVjX2FwcCAodCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFZhciB2IC0+IFZhciB2XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIF8gLT4gQXRvbSBcIi4uLlwiKSB0KVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZGlnZXN0IDogc2lnXG4gICgqIERpZ2VzdCB2YXJpb3VzIGV4cHJlc3Npb24gZm9ybXMgKilcblxuICB2YWwgZGlnZXN0X2xheWVyIDogRGlnZXN0LnQgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50IC0+IERpZ2VzdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRpZ2VzdF9sYXllciA9IGZ1bmN0aW9uXG4gICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLkFubm90YXRlICh1LCB4KSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yIFwiYW5ub3RhdGVcIiBbIERpZ2VzdC51dWlkIHU7IHggXVxuICAgIHwgQmFzZSAodSwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYmFzZVwiIFsgRGlnZXN0LnV1aWQgdTsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBUdXBsZSBsIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInR1cGxlXCIgWyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY29yZCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJyZWNvcmRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHQpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIHQpKSBdXG4gICAgfCBWYXJpYW50IGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCBsKSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSAoRGlnZXN0Lmxpc3QgbCkpKVxuICAgICAgICBdXG4gICAgfCBQb2x5X3ZhcmlhbnQgdGFibGUgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInBvbHlfdmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWJsZSkgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgIERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHgpIChEaWdlc3Qub3B0aW9uIHkpKSlcbiAgICAgICAgXVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImFwcGxpY2F0aW9uXCIgWyB4OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY19hcHAgKG4sIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInJlY19hcHBcIiBbIERpZ2VzdC5pbnQgbjsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBWYXIgbiAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ2YXJcIiBbIERpZ2VzdC5pbnQgbiBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFZpc2liaWxpdHkgPSBzdHJ1Y3RcbiAgdHlwZSB2aXNpYmxlID0gVmlzaWJsZVxuICB0eXBlIG9wYXF1ZSA9IE9wYXF1ZVxuXG4gIGxldCBfID0gVmlzaWJsZVxuICBsZXQgXyA9IE9wYXF1ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENhbm9uaWNhbCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9fZGlnZXN0IDogdCAtPiBEaWdlc3QudFxuXG4gIG1vZHVsZSBFeHAxIDogc2lnXG4gICAgdHlwZSBfIHRcblxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyB0XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIGFwcGx5IDogJ2EgdCAtPiAnYSB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIG9wYXF1ZSA6IF8gdCAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICB2YWwgZ2V0X3BvbHlfdmFyaWFudFxuICAgICAgOiAgVmlzaWJpbGl0eS52aXNpYmxlIHRcbiAgICAgIC0+IChWaXNpYmlsaXR5Lm9wYXF1ZSB0IG9wdGlvbiBTb3J0ZWRfdGFibGUudCwgc3RyaW5nKSBSZXN1bHQudFxuICBlbmRcblxuICBtb2R1bGUgRGVmIDogc2lnXG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlIDogc2lnXG4gICAgdmFsIGFubm90YXRlIDogVXVpZC50IC0+IF8gRXhwMS50IC0+IF8gRXhwMS50XG4gICAgdmFsIGJhc2V0eXBlIDogVXVpZC50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdHVwbGUgOiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHBvbHlfdmFyaWFudCA6IExvY2F0aW9uLnQgLT4gKHN0cmluZyAqIF8gRXhwMS50IG9wdGlvbikgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGFwcGx5IDogJ2EgRXhwMS50IC0+ICdhIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGRlZmluZSA6IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnQgLT4gRGVmLnRcbiAgICB2YWwgcmVjb3JkIDogKHN0cmluZyAqIF8gRXhwMS50KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhcmlhbnQgOiAoc3RyaW5nICogXyBFeHAxLnQgbGlzdCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBjcmVhdGUgOiBfIEV4cDEudCAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZGlnZXN0IDogQ2Fub25pY2FsID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbm9uaWNhbCBvZiBEaWdlc3QudFxuXG4gIGxldCB0b19kaWdlc3QgKENhbm9uaWNhbCB4KSA9IHhcblxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIG9wYXF1ZSA9IERpZ2VzdC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgb2Ygb3BhcXVlIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IG9mIChzdHJpbmcgKiBvcGFxdWUpXG4gICAgICB8IE9wYXF1ZSA6IG9wYXF1ZSAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICBsZXQgdG9fZGlnZXN0ICh0eXBlIGEpICh4IDogYSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT3BhcXVlIHggLT4geFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChfLCB4KSAtPiB4XG4gICAgICB8IFBvbHlfdmFyaWFudCB4IC0+IENELmRpZ2VzdF9sYXllciAoUG9seV92YXJpYW50IHgpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCAodHlwZSBhKSAoeCA6IGEgdCkgKHkgOiBhIHQpID1cbiAgICAgIERpZ2VzdC5jb21wYXJlICh0b19kaWdlc3QgeCkgKHRvX2RpZ2VzdCB5KSA9IDBcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB4ID0gT3BhcXVlICh0b19kaWdlc3QgeClcblxuICAgIGxldCBjcmVhdGUgeCA9XG4gICAgICBsZXQgeCA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCB4IGluXG4gICAgICBsZXQgZGVzYyA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudCBsIC0+IFBvbHlfdmFyaWFudCBsXG4gICAgICB8IEJhc2UgXyAtPiBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQW5ub3RhdGUgXyAtPlxuICAgICAgICAoKiBJdCdzIHVuc2FmZSB0byB1c2UgZGVyaXZpbmcgYmluX2lvIHdoZW4gaW5oZXJpdGluZyBmcm9tIGEgcG9seW1vcnBoaWMgdmFyaWFudFxuICAgICAgICAgICB0aGF0IGhhcyBhIGN1c3RvbSBiaW5faW8uICBJZiB3ZSBmb3JiaWQgdGhhdCwgd2UgY2FuIGhhcHBpbHkgcmVqZWN0IGhlcmVcbiAgICAgICAgICAgYW55dGhpbmcgdGhhdCdzIGFubm90YXRlZC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFwcGxpY2F0aW9uIF8gLT5cbiAgICAgICAgKCogQXBwbGljYXRpb24gY2FuIHJlYWxseSBiZSBhIHBvbHktdmFyaWFudCB5b3UgY2FuIGluaGVyaXQgZnJvbSEgIEJ1dCBpdCdzIGFcbiAgICAgICAgICAgcmFyZSBzaXR1YXRpb24gdGhhdCBtb3N0bHkgKG9ubHk/KSBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZSBmcm9tIHJlY3Vyc2l2ZVxuICAgICAgICAgICBwb2x5bW9ycGljIHZhcmlhbnRzLCB3aGljaCB3ZSd2ZSBub3Qgc2VlbiBhbnl3aGVyZSB5ZXQuICBTbyB3ZSByZWplY3QgaXQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBSZWNfYXBwIF8gLT5cbiAgICAgICAgKCogWW91IGNhbiBvbmx5IGdldCB0aGUgW1JlY19hcHBdIGNvbnN0cnVjdG9yIGZvciB0eXBlLXJlZmVyZW5jZXMgd2l0aGluIHRoZVxuICAgICAgICAgICBtdXR1YWwgZ3JvdXAgYmVpbmcgZGVmaW5lZC4gUmVmZXJlbmNlcyB3aGljaFxuICAgICAgICAgICBmb2xsb3cgYWZ0ZXIgdGhlIGN1cnJlbnQgZ3JvdXAgd2lsbCBhbHdheXMgYmUgW0FwcGxpY2F0aW9uXXMuXG5cbiAgICAgICAgICAgQW5kIHNpbmNlIG9jYW1sIHJlamVjdHMgcmVmZXJlbmNlcyBpbiBgaW5oZXJpdGFuY2UnIHBvc2l0aW9uIHRvIHR5cGVzIHdpdGhpblxuICAgICAgICAgICB0aGUgY3VycmVudCBncm91cCAoc2VlIGV4YW1wbGUpIHdpdGg6XG5cbiAgICAgICAgICAgRXJyb3I6IFRoZSB0eXBlIGNvbnN0cnVjdG9yIHRcbiAgICAgICAgICAgaXMgbm90IHlldCBjb21wbGV0ZWx5IGRlZmluZWRcblxuICAgICAgICAgICB0aGVuIGl0cyBvayB0byBzYXkgdGhhdCBhIHJlYy1hcHAgaXMgc29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUgaW5oZXJpdGVkIGZyb20gYW5kXG4gICAgICAgICAgIHJldHVybiBbTm9uX3BvbHlfdmFyaWFudF0uXG5cbiAgICAgICAgICAgQW5kIHVubGlrZSB0aGUgW0FwcGxpY2F0aW9uXSBjYXNlLCBpdCBzaG91bGQgbmV2ZXIgYmUgcG9zc2libGUgdG8gc2VlXG4gICAgICAgICAgIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgW2Rlc2NdID0gW1JlY19hcHBdLlxuXG4gICAgICAgICAgIEV4YW1wbGU6IFt0eXBlIHQgPSBbYGEgb2YgWyB8IHRdIF1dXG4gICAgICAgICAgIEhlcmUsIFt8IHRdIHdvdWxkIGJlIGFuIGV4YW1wbGUgb2YgaW5oZXJpdGFuY2UgZnJvbSBhIFJlY19hcHAsIHdoaWNoXG4gICAgICAgICAgIGlzIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci5cbiAgICAgICAgKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFZhciBfIHwgVHVwbGUgXyB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+XG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBjcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSBkZWYgbCA9IGNyZWF0ZSAoQXBwbGljYXRpb24gKGRlZiwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdGlkIGwgPSBjcmVhdGUgKFJlY19hcHAgKHRpZCwgbCkpXG5cbiAgICBsZXQgZ2V0X3BvbHlfdmFyaWFudCAoeCA6IFZpc2liaWxpdHkudmlzaWJsZSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgXykgLT4gRXJyb3IgZGVzY1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgbCAtPiBPayAoU29ydGVkX3RhYmxlLm1hcCB+ZjooT3B0aW9uLm1hcCB+ZjooZnVuIHggLT4gT3BhcXVlIHgpKSBsKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5jcmVhdGUgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSBsID0gRXhwMS5jcmVhdGUgKEJhc2UgKHUsIGwpKVxuICAgIGxldCB0dXBsZSBsID0gRXhwMS5jcmVhdGUgKFR1cGxlIGwpXG5cbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyBsID1cbiAgICAgIEV4cDEuY3JlYXRlIChQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIEV4cDEuZXF1YWwpIGwpKVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBFeHAxLmNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IHggbCA9IEV4cDEuY3JlYXRlIChBcHBsaWNhdGlvbiAoeCwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdCBsID0gRXhwMS5jcmVhdGUgKFJlY19hcHAgKHQsIGwpKVxuICAgIGxldCBkZWZpbmUgeCA9IHhcbiAgICBsZXQgcmVjb3JkIGwgPSBFeHAxLmNyZWF0ZSAoUmVjb3JkIGwpXG4gICAgbGV0IHZhcmlhbnQgbCA9IEV4cDEuY3JlYXRlIChWYXJpYW50IGwpXG4gICAgbGV0IGNyZWF0ZSBlID0gQ2Fub25pY2FsIChFeHAxLnRvX2RpZ2VzdCBlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2Z1bGwgPSBzdHJ1Y3RcbiAgbW9kdWxlIENEID0gQ3JlYXRlX2RpZ2VzdFxuXG4gIG1vZHVsZSBFeHAxID0gc3RydWN0XG4gICAgdHlwZSB0MCA9IEV4cCBvZiB0MCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbF90MCB4IHkgPSBjb21wYXJlX3QwIHggeSA9IDBcblxuICAgIHR5cGUgJ2EgdCA9IHQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgdmFyIHggPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuVmFyIHgpXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQXBwbGljYXRpb24gKGQsIHhzKSlcbiAgICBsZXQgcmVjdXJzZSByIHhzID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlJlY19hcHAgKHIsIHhzKSlcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID1cbiAgICAgIEV4cFxuICAgICAgICAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Qb2x5X3ZhcmlhbnRcbiAgICAgICAgICAgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIGVxdWFsX3QwKSB4cykpXG4gICAgOztcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ID0gZnVuY3Rpb25cbiAgICAgIHwgRXhwIChQb2x5X3ZhcmlhbnQgdGFiKSAtPiBPayB0YWJcbiAgICAgIHwgRXhwIGNjIC0+IEVycm9yIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnRvX3N0cmluZyBjYylcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB0ID0gdFxuXG4gICAgbGV0IHJlYyB0b19kaWdlc3QgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgZSAtPiBDRC5kaWdlc3RfbGF5ZXIgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICAoKiBBIFtEZWYudF0gaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtYXkgYmUgYXBwbGllZCAqKVxuICAgIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgKCogQSBjYW5vbmljYWwgc2hhcGUgW3RdIGlzIGFuIFtFeHAxLnRdLiAqKVxuICB0eXBlIHQgPSBFeHAxLnQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX2RpZ2VzdCBlID0gRXhwMS50b19kaWdlc3QgZVxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5FeHAgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSB4cyA9IEV4cDEuRXhwIChCYXNlICh1LCB4cykpXG4gICAgbGV0IHR1cGxlIHhzID0gRXhwMS5FeHAgKFR1cGxlIHhzKVxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gRXhwMS5wb2x5X3ZhcmlhbnQgbG9jIHhzXG4gICAgbGV0IHZhciBuID0gRXhwMS5FeHAgKFZhciBuKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAxLnJlY3Vyc2UgciB4c1xuICAgIGxldCBhcHBseSBkIHhzID0gRXhwMS5hcHBseSBkIHhzXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgeHMgPSBFeHAxLkV4cCAoUmVjb3JkIHhzKVxuICAgIGxldCB2YXJpYW50IHhzID0gRXhwMS5FeHAgKFZhcmlhbnQgeHMpXG4gICAgbGV0IGNyZWF0ZSBleHAgPSBleHBcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gdCA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IHQpXG5lbmRcblxubW9kdWxlIFRpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVmlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBHaWQgOiBzaWdcbiAgKCogdW5pcXVlIGdyb3VwLWlkLCB1c2VkIGFzIGtleSBmb3IgVGVudiBiZWxvdyAqKVxuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBsZXQgciA9IHJlZiAwXG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IHUgPSAhciBpblxuICAgIHIgOj0gMSArIHU7XG4gICAgdVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHByZXNzaW9uID0gc3RydWN0XG4gIHR5cGUgJ3QgcG9seV9jb25zdHIgPVxuICAgIFsgYENvbnN0ciBvZiBzdHJpbmcgKiAndCBvcHRpb25cbiAgICB8IGBJbmhlcml0IG9mIExvY2F0aW9uLnQgKiAndFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gICAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gKFRpZC50ICogVmlkLnQgbGlzdCAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgaWQgOiAnYSB0IC0+IEdpZC50XG4gICAgdmFsIGxvb2t1cCA6ICdhIHQgLT4gVGlkLnQgLT4gVmlkLnQgbGlzdCAqICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGdpZCA6IEdpZC50XG4gICAgICA7IGxvYyA6IExvY2F0aW9uLnRcbiAgICAgIDsgbWVtYmVycyA6IChUaWQudCAqIChWaWQudCBsaXN0ICogJ2EpKSBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgICBsZXQgY3JlYXRlIGxvYyB0cmlwcyA9XG4gICAgICBsZXQgZ2lkID0gR2lkLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IG1lbWJlcnMgPSBMaXN0Lm1hcCB0cmlwcyB+ZjooZnVuICh4LCB2cywgdCkgLT4geCwgKHZzLCB0KSkgaW5cbiAgICAgIHsgZ2lkOyBsb2M7IG1lbWJlcnMgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgZyA9IGcuZ2lkXG5cbiAgICBsZXQgbG9va3VwIGcgdGlkID1cbiAgICAgIG1hdGNoIExpc3QuQXNzb2MuZmluZCBnLm1lbWJlcnMgfmVxdWFsOlRpZC4oID0gKSB0aWQgd2l0aFxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICBnLmxvY1xuICAgICAgICAgICFcImltcG9zc2libGU6IGxvb2t1cF9ncm91cCwgdW5ib3VuZCB0eXBlLWlkZW50aWZpZXI6ICV7VGlkfVwiXG4gICAgICAgICAgdGlkXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqIHRcbiAgICAgICAgfCBCYXNlIG9mIFV1aWQudCAqIHQgbGlzdFxuICAgICAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgICAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgbGlzdCkgbGlzdFxuICAgICAgICB8IFR1cGxlIG9mIHQgbGlzdFxuICAgICAgICB8IFBvbHlfdmFyaWFudCBvZiAoTG9jYXRpb24udCAqIHQgcG9seV9jb25zdHIgbGlzdClcbiAgICAgICAgfCBWYXIgb2YgKExvY2F0aW9uLnQgKiBWaWQudClcbiAgICAgICAgfCBSZWNfYXBwIG9mIFRpZC50ICogdCBsaXN0XG4gICAgICAgIHwgVG9wX2FwcCBvZiB0IEdyb3VwLnQgKiBUaWQudCAqIHQgbGlzdFxuICAgICAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIHZhcmlhbnRzXVxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIHR5cGUgZ3JvdXAgPSB0IEdyb3VwLnRcblxuICBsZXQgZ3JvdXAgPSBHcm91cC5jcmVhdGVcblxuICB0eXBlIHBvbHlfdmFyaWFudF9yb3cgPSB0IHBvbHlfY29uc3RyXG5cbiAgbGV0IGNvbnN0ciBzIHQgPSBgQ29uc3RyIChzLCB0KVxuICBsZXQgaW5oZXJpdF8gbG9jIHQgPSBgSW5oZXJpdCAobG9jLCB0KVxuICBsZXQgdmFyIGxvYyB0ID0gVmFyIChsb2MsIHQpXG4gIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gUG9seV92YXJpYW50IChsb2MsIHhzKVxuICBsZXQgYmFzZXR5cGUgPSBiYXNlXG5cbiAgKCogXCJWUlwiIHN0YW5kcyBmb3IgXCJ2YXJpYW50IG9yIHJlY29yZFwiICopXG5cbiAgbGV0IGlzX2N5Y2xpY18wIH4odmlhX1ZSIDogYm9vbCkgOiBncm91cCAtPiBUaWQudCAtPiBib29sID1cbiAgICBmdW4gZ3JvdXAgdGlkIC0+XG4gICAgbGV0IHNldCA9IHJlZiBbXSBpblxuICAgIGxldCB2aXNpdGVkIHRpZCA9IExpc3QubWVtICFzZXQgdGlkIH5lcXVhbDpUaWQuZXF1YWwgaW5cbiAgICBsZXQgYWRkIHRpZCA9IHNldCA6PSB0aWQgOjogIXNldCBpblxuICAgIGxldCByZWMgdHJhdiA9IGZ1bmN0aW9uXG4gICAgICAoKiBXZSBsb29rIGZvciBjeWNsZXMgYnkgdHJhdmVyc2luZyB0aGUgc3RydWN0dXJlIG9mIHR5cGUtZXhwcmVzc2lvbnMgKilcbiAgICAgIHwgQW5ub3RhdGUgKF8sIHQpIC0+IHRyYXYgdFxuICAgICAgfCBCYXNlIChfLCB0cykgfCBUdXBsZSB0cyB8IFRvcF9hcHAgKF8sIF8sIHRzKSAtPiBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgICAgKCogLi5pbmNsdWRpbmcgcG9seS12YXJpYW50cyAqKVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgKF8sIGNzKSAtPlxuICAgICAgICBMaXN0Lml0ZXIgY3MgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBOb25lKSAtPiAoKVxuICAgICAgICAgIHwgYENvbnN0ciAoXywgU29tZSB0KSAtPiB0cmF2IHRcbiAgICAgICAgICB8IGBJbmhlcml0IChfbG9jLCB0KSAtPiB0cmF2IHQpXG4gICAgICAoKiAuLiBhbmQgcmVjb3JkcyAmIChub3JtYWwpIHZhcmlhbnRzICopXG4gICAgICB8IFJlY29yZCB4cyAtPiBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdCkgLT4gdHJhdiB0KSBlbHNlICgpXG4gICAgICB8IFZhcmlhbnQgeHMgLT5cbiAgICAgICAgaWYgdmlhX1ZSIHRoZW4gTGlzdC5pdGVyIHhzIH5mOihmdW4gKF8sIHRzKSAtPiBMaXN0Lml0ZXIgfmY6dHJhdiB0cykgZWxzZSAoKVxuICAgICAgKCogV2UgZG9udCBmb2xsb3cgdHlwZS12YXJzICopXG4gICAgICB8IFZhciBfIC0+ICgpXG4gICAgICAoKiB0cmF2ZXJzZSAocmVjdXJzaXZlKSB0eXBlLWFwcHMgd2hlbiBmaXJzdCBlbmNvdW50ZXJlZCAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIHRzKSAtPlxuICAgICAgICBpZiB2aXNpdGVkIHRpZFxuICAgICAgICB0aGVuICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGFkZCB0aWQ7XG4gICAgICAgICAgdHJhdl90aWQgdGlkKTtcbiAgICAgICAgTGlzdC5pdGVyIHRzIH5mOnRyYXZcbiAgICBhbmQgdHJhdl90aWQgdGlkID1cbiAgICAgIGxldCBfLCBib2R5ID0gR3JvdXAubG9va3VwIGdyb3VwIHRpZCBpblxuICAgICAgdHJhdiBib2R5XG4gICAgaW5cbiAgICB0cmF2X3RpZCB0aWQ7XG4gICAgbGV0IHJlcyA9IHZpc2l0ZWQgdGlkIGluXG4gICAgKCpsZXQgX3NzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChMaXN0Lm1hcCAoIXNldCkgfmY6KHNwcmludGYgIVwiJXtUaWR9XCIpKSBpbiopXG4gICAgKCpQcmludGYucHJpbnRmICFcImlzX2N5bGljOiAle1RpZH0gLS0+ICglcykgJWIgIC0tICVzJSFcIiB0aWQgX3NzIHJlcyAoR3JvdXAubG9jIGdyb3VwKTsqKVxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBpc19jeWNsaWMgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOnRydWVcbiAgbGV0IGlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nX1ZSID0gaXNfY3ljbGljXzAgfnZpYV9WUjpmYWxzZVxuZW5kXG5cbmluY2x1ZGUgRXhwcmVzc2lvblxuXG5tb2R1bGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsIDogQ2Fub25pY2FsKSA9IHN0cnVjdFxuICAoKiBbVmVudi50XVxuICAgICBFbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIHR5cGUtdmFycyAqKVxuICBtb2R1bGUgVmVudiA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGxvb2t1cCA6IHQgLT4gVmlkLnQgLT4gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uXG4gICAgdmFsIGNyZWF0ZSA6IChWaWQudCAqIFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50KSBsaXN0IC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgTWFwLk0oVmlkKS50XG5cbiAgICBsZXQgY3JlYXRlID1cbiAgICAgIExpc3QuZm9sZFxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgVmlkKSlcbiAgICAgICAgfmY6KGZ1biB0IChrLCB2KSAtPiBNYXAuc2V0IH5rZXk6ayB+ZGF0YTp2IHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXAgdCBrID0gTWFwLmZpbmQgdCBrXG4gIGVuZFxuXG4gIG1vZHVsZSBBcHBsaWNhbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgb2YgaW50XG4gICAgICB8IERlZmluaXRpb24gb2YgQ2Fub25pY2FsLkRlZi50XG4gIGVuZFxuXG4gICgqIFtUZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS1kZWZpbml0aW9ucyAqKVxuICBtb2R1bGUgVGVudiA6IHNpZ1xuICAgIHR5cGUga2V5ID0gR2lkLnQgKiBUaWQudFxuICAgIHR5cGUgdFxuXG4gICAgdmFsIGZpbmQgOiB0IC0+IGtleSAtPiBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gb3B0aW9uXG4gICAgdmFsIGVtcHR5IDogdFxuICAgIHZhbCBleHRlbmQgOiB0IC0+IGtleSAtPiBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBHaWQudCAqIFRpZC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgICBlbmRcblxuICAgIHR5cGUga2V5ID0gS2V5LnRcbiAgICB0eXBlIHQgPSBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gTWFwLk0oS2V5KS50XG5cbiAgICBsZXQgZmluZCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgICBsZXQgZW1wdHkgPSBNYXAuZW1wdHkgKG1vZHVsZSBLZXkpXG4gICAgbGV0IGV4dGVuZCB0IGsgdiA9IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdFxuICBlbmRcblxuICAoKiBbRGVmaW5pbmcudF1cbiAgICAgTW9uYWQgZm9yIG1hbmFnaW5nIHVuLXJvbGxpbmcgZGVwdGgsIGFuZCBtYWludGFpbmcgYSBbVGVudi50XSAqKVxuICBtb2R1bGUgRGVmaW5pbmcgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgdmFsIGxvb2tfZW52IDogVGVudi5rZXkgLT4gQXBwbGljYW5kLnQgb3B0aW9uIHRcbiAgICB2YWwgZXh0ZW5kX25ld190aWQgOiBUZW52LmtleSAtPiBDYW5vbmljYWwuRGVmLnQgdCAtPiBBcHBsaWNhbmQudCB0XG4gICAgdmFsIGV4ZWMgOiAnYSB0IC0+ICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IGRlcHRoOmludCAtPiBUZW52LnQgLT4gJ2FcblxuICAgIGxldCByZXR1cm4geCB+ZGVwdGg6XyBfdGVudiA9IHhcblxuICAgIGxldCBiaW5kIHQgZiB+ZGVwdGggdGVudiA9XG4gICAgICBsZXQgeCA9IHQgfmRlcHRoIHRlbnYgaW5cbiAgICAgIChmIHgpIH5kZXB0aCB0ZW52XG4gICAgOztcblxuICAgIGxldCBsb29rX2VudiBrZXkgfmRlcHRoOl8gdGVudiA9XG4gICAgICBsZXQgcmVzdWx0ID0gVGVudi5maW5kIHRlbnYga2V5IGluXG4gICAgICBPcHRpb24ubWFwIH5mOihmdW4gKGBSZWN1cnNpb25fbGV2ZWwgeCkgLT4gQXBwbGljYW5kLlJlY3Vyc2lvbl9sZXZlbCB4KSByZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IGV4dGVuZF9uZXdfdGlkIGtleSBkZWZfdCB+ZGVwdGggdGVudiA9XG4gICAgICBBcHBsaWNhbmQuRGVmaW5pdGlvblxuICAgICAgICAobGV0IHZhbHVlID0gYFJlY3Vyc2lvbl9sZXZlbCBkZXB0aCBpblxuICAgICAgICAgbGV0IHRlbnYgPSBUZW52LmV4dGVuZCB0ZW52IGtleSB2YWx1ZSBpblxuICAgICAgICAgZGVmX3QgfmRlcHRoOihkZXB0aCArIDEpIHRlbnYpXG4gICAgOztcblxuICAgIGxldCBleGVjIHQgPSB0IH5kZXB0aDowIFRlbnYuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSAnYSBkZWZpbmluZyA9ICdhIERlZmluaW5nLnRcblxuICBsZXQgKCA+Pj0gKSA9IERlZmluaW5nLmJpbmRcbiAgbGV0IHJldHVybiA9IERlZmluaW5nLnJldHVyblxuXG4gIGxldCBzZXF1ZW5jZV9kZWZpbmluZyA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IgZGVmaW5pbmcpIC0+ICdiIGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biB4cyB+ZiAtPlxuICAgIGxldCByZWMgbG9vcCBhY2NfeXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjY195cylcbiAgICAgIHwgeCA6OiB4cyAtPiBmIHggPj49IGZ1biB5IC0+IGxvb3AgKHkgOjogYWNjX3lzKSB4c1xuICAgIGluXG4gICAgbG9vcCBbXSB4c1xuICA7O1xuXG4gICgqXG4gICAgIFNoYXBlIGV2YWx1YXRpb24uXG5cbiAgICAgU2hhcGVzIGFyZSBldmFsdWF0ZWQgdG8gY2Fub25pY2FsLXNoYXBlIChleHByZXNzaW9ucyksIHdpdGggYWRkaXRpb25hbCBkZWZzIGNvbGxlY3RlZFxuICAgICBpbiB0aGUgW2RlZmluaW5nXSBtb25hZCwgd2hpY2ggYWxzbyBtYW5hZ2VzIGdlbmVyYXRpb24vbWFwcGluZyB0byBbQ2Fub25pY2FsLlRpZC50XVxuXG4gICAgIFRoZXJlIGlzIGRvd253YXJkcyBjb250ZXh0IG9mIFtncm91cF0gYW5kIFtWZW52LnRdXG4gICAgIFRoZSAoY3VycmVudCkgW2dyb3VwXSBjaGFuZ2VzIHdoZW4gdGhlIGNhc2UgZm9yIFtUb3BfYXBwXSBjYWxscyBbZXZhbF9hcHBdLlxuXG4gICAgIFRoZSBjdXJyZW50IFtWZW52LnRdIGlzIGFiYW5kb25lZCB3aGVuIFtldmFsX2FwcF0gaXMgY2FsbGVkLCBhbmQgdGhlbiByZS1jcmVhdGVkIGFmdGVyXG4gICAgIHRoZSBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIHRvIGVpdGhlciBpbmxpbmUgdGhlIHR5cGUtYXBwbGljYXRpb24sIG9yIG1ha2UgYSByZWZlcmVuY2VcbiAgICAgdG8gYSB0eXBlLWRlZmluaXRpb24sIHdoaWNoIGlzIGNyZWF0ZWQgYXQgbW9zdCBvbmNlIGZvciBlYWNoIChHaWQudCAqIFRpZC50KS5cblxuICAgICBXZSBtYWtlIGEgdHlwZS1kZWZpbml0aW9uIGFsd2F5cyBmb3IgUmVjb3JkcyBhbmQgVmFyaWFudHMsIGFuZCBpbiBhZGRpdGlvbiBmb3IgYW55XG4gICAgIG90aGVyIGN5Y2xpYyB0eXBlLWRlZmluaXRpb24uXG4gICopXG5cbiAgbGV0IHJlYyBldmFsIDogZ3JvdXAgLT4gVmVudi50IC0+IHQgLT4gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBSZWNvcmQgYmluZHMgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgYmluZHMgfmY6KGZ1biAocywgeCkgLT5cbiAgICAgICAgICBldmFsIGdyb3VwIHZlbnYgeCA+Pj0gZnVuIHkgLT4gcmV0dXJuIChzLCB5KSlcbiAgICAgICAgPj49IGZ1biBiaW5kcyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUucmVjb3JkIGJpbmRzKVxuICAgICAgfCBWYXJpYW50IGFsdHMgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgYWx0cyB+ZjooZnVuIChzLCB4cykgLT5cbiAgICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiB4cyA+Pj0gZnVuIHlzIC0+IHJldHVybiAocywgeXMpKVxuICAgICAgICA+Pj0gZnVuIGFsdHMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnZhcmlhbnQgYWx0cylcbiAgICAgIHwgVmFyIChsb2MsIHZpZCkgLT5cbiAgICAgICAgKG1hdGNoIFZlbnYubG9va3VwIHZlbnYgdmlkIHdpdGhcbiAgICAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgICAgICB8IE5vbmUgLT4gZXZhbF9mYWlsIGxvYyAhXCJGcmVlIHR5cGUgdmFyaWFibGU6ICcle1ZpZH1cIiB2aWQgKCkpXG4gICAgICB8IEFubm90YXRlIChzLCB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmFubm90YXRlIHMgdilcbiAgICAgIHwgQmFzZSAocywgdHMpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHRzID4+PSBmdW4gdnMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmJhc2V0eXBlIHMgdnMpXG4gICAgICB8IFR1cGxlIHRzIC0+IGV2YWxfbGlzdCBncm91cCB2ZW52IHRzID4+PSBmdW4gdnMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnR1cGxlIHZzKVxuICAgICAgfCBUb3BfYXBwIChpbl9ncm91cCwgdGlkLCBhcmdzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiBhcmdzXG4gICAgICAgID4+PSBmdW4gYXJncyAtPlxuICAgICAgICAoKiBhcmdzIGV2YWx1YXRlZCBpbiBjdXJyZW50IGdyb3VwICopXG4gICAgICAgIGV2YWxfYXBwIGluX2dyb3VwIHRpZCBhcmdzXG4gICAgICAoKiBncm91cCBjaGFuZ2VkIGhlcmUgKilcbiAgICAgIHwgUmVjX2FwcCAodGlkLCBhcmdzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiBhcmdzID4+PSBmdW4gYXJncyAtPiBldmFsX2FwcCBncm91cCB0aWQgYXJnc1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgKGxvYywgY3MpIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIH5mOihldmFsX3BvbHlfY29uc3RyIGdyb3VwIHZlbnYpIGNzXG4gICAgICAgID4+PSBmdW4geHNzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5wb2x5X3ZhcmlhbnQgbG9jIChMaXN0LmNvbmNhdCB4c3MpKVxuXG4gIGFuZCBldmFsX2xpc3QgOiBncm91cCAtPiBWZW52LnQgLT4gdCBsaXN0IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBsaXN0IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdmVudiB0cyAtPiBzZXF1ZW5jZV9kZWZpbmluZyB0cyB+ZjooZXZhbCBncm91cCB2ZW52KVxuXG4gIGFuZCBldmFsX3BvbHlfY29uc3RyXG4gICAgOiAgZ3JvdXAgLT4gVmVudi50IC0+IHQgcG9seV9jb25zdHJcbiAgICAgIC0+IChzdHJpbmcgKiBWaXNpYmlsaXR5Lm9wYXF1ZSBDYW5vbmljYWwuRXhwMS50IG9wdGlvbikgbGlzdCBkZWZpbmluZ1xuICAgID1cbiAgICBmdW4gZ3JvdXAgdmVudiBjIC0+XG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgYENvbnN0ciAocywgTm9uZSkgLT4gcmV0dXJuIFsgcywgTm9uZSBdXG4gICAgICB8IGBDb25zdHIgKHMsIFNvbWUgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHQgPj49IGZ1biB2IC0+IHJldHVybiBbIHMsIFNvbWUgKENhbm9uaWNhbC5FeHAxLm9wYXF1ZSB2KSBdXG4gICAgICB8IGBJbmhlcml0IChsb2MsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0XG4gICAgICAgID4+PSBmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggQ2Fub25pY2FsLkV4cDEuZ2V0X3BvbHlfdmFyaWFudCB2IHdpdGhcbiAgICAgICAgIHwgT2sgdGFiIC0+IHJldHVybiAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWIpXG4gICAgICAgICB8IEVycm9yIGRlc2MgLT5cbiAgICAgICAgICAgZXZhbF9mYWlsXG4gICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgXCJUaGUgc2hhcGUgZm9yIGFuIGluaGVyaXRlZCB0eXBlIGlzIG5vdCBkZXNjcmliZWQgYXMgYSBwb2x5bW9ycGhpYy12YXJpYW50OiAlc1wiXG4gICAgICAgICAgICAgZGVzY1xuICAgICAgICAgICAgICgpKVxuXG4gIGFuZCBldmFsX2RlZmluaXRpb24gOiBncm91cCAtPiBWaWQudCBsaXN0IC0+IHQgLT4gQ2Fub25pY2FsLkRlZi50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgZm9ybWFscyBib2R5IC0+XG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIChMaXN0Lm1hcGkgZm9ybWFscyB+ZjooZnVuIGkgeCAtPiB4LCBDYW5vbmljYWwuRXhwMS52YXIgaSkpIGluXG4gICAgICBldmFsIGdyb3VwIHZlbnYgYm9keSA+Pj0gZnVuIHYgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmRlZmluZSB2KVxuXG4gIGFuZCBldmFsX2FwcCA6IGdyb3VwIC0+IFRpZC50IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBsaXN0IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHRpZCBhcmdzIC0+XG4gICAgICBsZXQgZ2lkID0gR3JvdXAuaWQgZ3JvdXAgaW5cbiAgICAgIGxldCBmb3JtYWxzLCBib2R5ID0gR3JvdXAubG9va3VwIGdyb3VwIHRpZCBpblxuICAgICAgbGV0IHJlY29yZF9vcl9ub3JtYWxfdmFyaWFudCA9XG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+IHRydWVcbiAgICAgICAgfCBUdXBsZSBfIHwgQW5ub3RhdGUgXyB8IEJhc2UgXyB8IFBvbHlfdmFyaWFudCBfIHwgVmFyIF8gfCBSZWNfYXBwIF8gfCBUb3BfYXBwIF8gLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjeWNsaWMgPSBpc19jeWNsaWMgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgY3ljbGljX25vX1ZSID0gaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgZ3JvdXAgdGlkIGluXG4gICAgICBpZiAocmVjb3JkX29yX25vcm1hbF92YXJpYW50ICYmIGN5Y2xpYykgfHwgY3ljbGljX25vX1ZSXG4gICAgICB0aGVuXG4gICAgICAgIERlZmluaW5nLmxvb2tfZW52IChnaWQsIHRpZClcbiAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSByZWN1cnNlIC0+IHJldHVybiByZWN1cnNlXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBEZWZpbmluZy5leHRlbmRfbmV3X3RpZCAoZ2lkLCB0aWQpIChldmFsX2RlZmluaXRpb24gZ3JvdXAgZm9ybWFscyBib2R5KSlcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgUmVjdXJzaW9uX2xldmVsIHIgLT4gcmV0dXJuIChDYW5vbmljYWwuRXhwMS5yZWN1cnNlIHIgYXJncylcbiAgICAgICAgfCBEZWZpbml0aW9uIGRlZiAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLmFwcGx5IGRlZiBhcmdzKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB2ZW52ID1cbiAgICAgICAgICBtYXRjaCBMaXN0LnppcCBmb3JtYWxzIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgT2sgeCAtPiBWZW52LmNyZWF0ZSB4XG4gICAgICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gZmFpbHdpdGggXCJhcHBseSwgaW5jb3JyZWN0IHR5cGUgYXBwbGljYXRpb24gYXJpdHlcIlxuICAgICAgICBpblxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgYm9keSlcbiAgOztcblxuICAoKiB0b3AgbGV2ZWwgZW50cnkgcG9pbnQgZm9yIGV2YWx1YXRpb24gKilcbiAgbGV0IGV2YWwgOiB0IC0+IENhbm9uaWNhbC50ID1cbiAgICBmdW4gdCAtPlxuICAgICAgbGV0IGdyb3VwID0gZ3JvdXAgKExvY2F0aW9uLm9mX3N0cmluZyBcInRvcC1sZXZlbFwiKSBbXSBpblxuICAgICAgbGV0IHZlbnYgPSBWZW52LmNyZWF0ZSBbXSBpblxuICAgICAgbGV0IHYgPSBEZWZpbmluZy5leGVjIChldmFsIGdyb3VwIHZlbnYgdCkgaW5cbiAgICAgIENhbm9uaWNhbC5DcmVhdGUuY3JlYXRlIHZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsID0gc3RydWN0XG4gIGluY2x1ZGUgQ2Fub25pY2FsX2Z1bGxcblxuICBtb2R1bGUgRXhwID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV2YWx1YXRpb24gKENhbm9uaWNhbF9mdWxsKVxubW9kdWxlIENhbm9uaWNhbF9zZWxlY3RlZCA9IENhbm9uaWNhbF9kaWdlc3Rcbm1vZHVsZSBFdmFsdWF0aW9uX3RvX2RpZ2VzdCA9IEV2YWx1YXRpb24gKENhbm9uaWNhbF9zZWxlY3RlZClcblxubGV0IGV2YWxfdG9fZGlnZXN0IGV4cCA9IENhbm9uaWNhbF9zZWxlY3RlZC50b19kaWdlc3QgKEV2YWx1YXRpb25fdG9fZGlnZXN0LmV2YWwgZXhwKVxubGV0IGV2YWxfdG9fZGlnZXN0X3N0cmluZyBleHAgPSBEaWdlc3QudG9faGV4IChldmFsX3RvX2RpZ2VzdCBleHApXG5cbm1vZHVsZSBGb3JfdHlwZXJlcCA9IHN0cnVjdFxuICBleGNlcHRpb24gTm90X2FfdHVwbGUgb2YgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBkZWNvbnN0cnVjdF90dXBsZV9leG4gdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBUdXBsZSB0cyAtPiB0c1xuICAgIHwgXyAtPiByYWlzZSAoTm90X2FfdHVwbGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ZWRfdGFibGUgPSBTb3J0ZWRfdGFibGVcbiAgbW9kdWxlIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IgPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yXG4gIG1vZHVsZSBDYW5vbmljYWwgPSBDYW5vbmljYWxcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFNhbWUgYXMgeyFCeXRlcy5ibGl0X3N0cmluZ30gd2hpY2ggc2hvdWxkIGJlIHByZWZlcnJlZC4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG4gICAgSWYgW3NdIGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIHRoZSBzaW5nbGV0b24gbGlzdCBbW1wiXCJdXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNCAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2FjYyAtPiBjaGFyIC0+ICdhY2MpIC0+ICdhY2MgLT4gc3RyaW5nIC0+ICdhY2NcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2FjYyAtPiAnYWNjKSAtPiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwiaW5jbHVkZSBTdGFibGVfd2l0bmVzc19pbnRmXG5cbigqIFRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHN0YWJsZSB3aXRuZXNzZXMgZG9lcyBub3QgbWF0dGVyLiAqKVxudHlwZSBfIHQgPSB1bml0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2FycmF5ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2Jvb2wgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYnl0ZXMgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfY2hhciA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19leG4gPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfZmxvYXQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2ludDMyID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2ludDY0ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2xhenlfdCAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19saXN0ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX25hdGl2ZWludCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19vcHRpb24gKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfcmVmICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX3N0cmluZyA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc191bml0ID0gKClcbmVuZFxuXG5sZXQgb2Zfc2VyaWFsaXphYmxlICgpIF8gXyA9ICgpXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUxIChfIDogVDEpIChfIDogVDEpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gKCkgPSAoKVxuZW5kXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUyIChfIDogVDIpIChfIDogVDIpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gKCkgKCkgPSAoKVxuZW5kXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUzIChfIDogVDMpIChfIDogVDMpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gXyAoKSAoKSA9ICgpXG5lbmRcblxubGV0IGFzc2VydF9zdGFibGUgPSAoKVxuIiwiKCogQ29tbW9uOiBjb21tb24gZGVmaW5pdGlvbnMgdXNlZCBieSBiaW5hcnkgcHJvdG9jb2wgY29udmVydGVycyAqKVxuXG5vcGVuIEJhc2Vcbm9wZW4gUHJpbnRmXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgcG9zID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIEVycm9ycyBhbmQgZXhjZXB0aW9ucyAqKVxuXG5leGNlcHRpb24gQnVmZmVyX3Nob3J0XG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5tb2R1bGUgUmVhZEVycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdfaW50OFxuICAgIHwgSW50X2NvZGVcbiAgICB8IEludF9vdmVyZmxvd1xuICAgIHwgTmF0MF9jb2RlXG4gICAgfCBOYXQwX292ZXJmbG93XG4gICAgfCBJbnQzMl9jb2RlXG4gICAgfCBJbnQ2NF9jb2RlXG4gICAgfCBOYXRpdmVpbnRfY29kZVxuICAgIHwgVW5pdF9jb2RlXG4gICAgfCBCb29sX2NvZGVcbiAgICB8IE9wdGlvbl9jb2RlXG4gICAgfCBTdHJpbmdfdG9vX2xvbmdcbiAgICB8IFZhcmlhbnRfdGFnXG4gICAgfCBBcnJheV90b29fbG9uZ1xuICAgIHwgTGlzdF90b29fbG9uZyBvZlxuICAgICAgICB7IGxlbiA6IGludFxuICAgICAgICA7IG1heF9sZW4gOiBpbnRcbiAgICAgICAgfVxuICAgIHwgSGFzaHRibF90b29fbG9uZ1xuICAgIHwgU3VtX3RhZyBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnQgb2Ygc3RyaW5nXG4gICAgfCBQb2x5X3JlY19ib3VuZCBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBvZiBzdHJpbmdcbiAgICB8IFNpbGx5X3R5cGUgb2Ygc3RyaW5nXG4gICAgfCBFbXB0eV90eXBlIG9mIHN0cmluZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTmVnX2ludDggLT4gXCJOZWdfaW50OFwiXG4gICAgfCBJbnRfY29kZSAtPiBcIkludF9jb2RlXCJcbiAgICB8IEludF9vdmVyZmxvdyAtPiBcIkludF9vdmVyZmxvd1wiXG4gICAgfCBOYXQwX2NvZGUgLT4gXCJOYXQwX2NvZGVcIlxuICAgIHwgTmF0MF9vdmVyZmxvdyAtPiBcIk5hdDBfb3ZlcmZsb3dcIlxuICAgIHwgSW50MzJfY29kZSAtPiBcIkludDMyX2NvZGVcIlxuICAgIHwgSW50NjRfY29kZSAtPiBcIkludDY0X2NvZGVcIlxuICAgIHwgTmF0aXZlaW50X2NvZGUgLT4gXCJOYXRpdmVpbnRfY29kZVwiXG4gICAgfCBVbml0X2NvZGUgLT4gXCJVbml0X2NvZGVcIlxuICAgIHwgQm9vbF9jb2RlIC0+IFwiQm9vbF9jb2RlXCJcbiAgICB8IE9wdGlvbl9jb2RlIC0+IFwiT3B0aW9uX2NvZGVcIlxuICAgIHwgU3RyaW5nX3Rvb19sb25nIC0+IFwiU3RyaW5nX3Rvb19sb25nXCJcbiAgICB8IFZhcmlhbnRfdGFnIC0+IFwiVmFyaWFudF90YWdcIlxuICAgIHwgQXJyYXlfdG9vX2xvbmcgLT4gXCJBcnJheV90b29fbG9uZ1wiXG4gICAgfCBMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0gLT4gc3ByaW50ZiBcIkxpc3RfdG9vX2xvbmcgLyAlZCAobWF4ICVkKVwiIGxlbiBtYXhfbGVuXG4gICAgfCBIYXNodGJsX3Rvb19sb25nIC0+IFwiSGFzaHRibF90b29fbG9uZ1wiXG4gICAgfCBTdW1fdGFnIGxvYyAtPiBcIlN1bV90YWcgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudCBsb2MgLT4gXCJWYXJpYW50IC8gXCIgXiBsb2NcbiAgICB8IFBvbHlfcmVjX2JvdW5kIGxvYyAtPiBcIlBvbHlfcmVjX2JvdW5kIC8gXCIgXiBsb2NcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBsb2MgLT4gXCJWYXJpYW50X3dyb25nX3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgU2lsbHlfdHlwZSBsb2MgLT4gXCJTaWxseV90eXBlIC8gXCIgXiBsb2NcbiAgICB8IEVtcHR5X3R5cGUgbG9jIC0+IFwiRW1wdHlfdHlwZSAvIFwiIF4gbG9jXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuXG5leGNlcHRpb24gUmVhZF9lcnJvciBvZiBSZWFkRXJyb3IudCAqIHBvcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuZXhjZXB0aW9uIFBvbHlfcmVjX3dyaXRlIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbmxldCByYWlzZV9yZWFkX2Vycm9yIGVyciBwb3MgPSByYWlzZSAoUmVhZF9lcnJvciAoZXJyLCBwb3MpKVxuXG5sZXQgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgcG9zID1cbiAgcmFpc2UgKFJlYWRfZXJyb3IgKFJlYWRFcnJvci5WYXJpYW50X3dyb25nX3R5cGUgbmFtZSwgcG9zKSlcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBsb2MgPSBmYWlsd2l0aCAobG9jIF4gXCI6IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uXCIpXG5sZXQgYXJyYXlfYm91bmRfZXJyb3IgKCkgPSBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIlxuXG4oKiBCdWZmZXJzICopXG5cbnR5cGUgcG9zX3JlZiA9IHBvcyByZWZcbnR5cGUgYnVmID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxubGV0IGNyZWF0ZV9idWYgbiA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBjX2xheW91dCBuXG5sZXQgYnVmX2xlbiBidWYgPSBBcnJheTEuZGltIGJ1ZlxubGV0IGFzc2VydF9wb3MgcG9zID0gaWYgcG9zIDwgMCB0aGVuIGFycmF5X2JvdW5kX2Vycm9yICgpXG5sZXQgY2hlY2tfcG9zIChidWYgOiBidWYpIHBvcyA9IGlmIHBvcyA+PSBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICBwb3Ncbjs7XG5cbmxldCBjaGVja19uZXh0IChidWYgOiBidWYpIG5leHQgPSBpZiBuZXh0ID4gQXJyYXkxLmRpbSBidWYgdGhlbiByYWlzZSBCdWZmZXJfc2hvcnRcblxubGV0IGdldF9vcHRfcG9zIH5sb2MgfnZhciA9IGZ1bmN0aW9uXG4gIHwgU29tZSBwb3MgLT5cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaW5fcHJvdC5Db21tb24uJXM6ICVzIDwgMFwiIGxvYyB2YXIpO1xuICAgIHBvc1xuICB8IE5vbmUgLT4gMFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHNyYzpidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZHN0OmJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX3N0dWJcIlxuXG5sZXQgYmxpdF9idWYgP3NyY19wb3MgfnNyYyA/ZHN0X3BvcyB+ZHN0IGxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBzcmNcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBzcmNfcG9zID4gc3JjX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGRzdFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGRzdF9wb3MgPiBkc3RfbGVuXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEFycmF5MS5kaW0gc3JjXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgKyBsZW4gPiBzcmNfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBkc3RcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyArIGxlbiA+IGRzdF9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1ZiB+c3JjX3BvcyB+c3JjIH5kc3RfcG9zIH5kc3QgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBzdHJpbmdcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IGJsaXRfc3RyaW5nX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X3N0cmluZ19idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IHN0cl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmxldCBibGl0X2J5dGVzX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J5dGVzX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBidWZcIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBidWZcIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9zdHJpbmdcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfYnl0ZXNcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9idWZfYnl0ZXMgP3NyY19wb3MgYnVmID9kc3RfcG9zIHN0ciB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZfc3RyaW5nXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgPiBidWZfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IHN0cl9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgKyBsZW4gPiBidWZfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1Zl9ieXRlcyB+c3JjX3BvcyBidWYgfmRzdF9wb3Mgc3RyIH5sZW5cbjs7XG5cbmxldCBibGl0X2J1Zl9zdHJpbmcgPSBibGl0X2J1Zl9ieXRlc1xuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmxldCByZWMgY29weV9odGJsX2xpc3QgaHRibCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaHRibFxuICB8IChrLCB2KSA6OiByZXN0IC0+XG4gICAgU3RkbGliLkhhc2h0YmwuYWRkIGh0YmwgayB2O1xuICAgIGNvcHlfaHRibF9saXN0IGh0YmwgcmVzdFxuOztcblxuKCogQmlnYXJyYXlzICopXG5cbnR5cGUgdmVjMzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjNjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjID0gdmVjNjRcbnR5cGUgbWF0MzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0NjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0ID0gbWF0NjRcblxuKCogRmxvYXQgYXJyYXlzICopXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCoqKilcblxubGV0ICggKyApID0gKCArIClcbiIsIigqIE5hdDA6IG5hdHVyYWwgbnVtYmVycyAoaW5jbHVkaW5nIHplcm8pICopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB0aGVuIGZhaWx3aXRoIFwiQmluX3Byb3QuTmF0MC5vZl9pbnQ6IG4gPCAwXCI7XG4gIG5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbiIsIigqIFdyaXRlX21sOiB3cml0aW5nIHZhbHVlcyB0byB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHdyaXRlciA9IGJ1ZiAtPiBwb3M6cG9zIC0+ICdhIC0+IHBvc1xudHlwZSAoJ2EsICdiKSB3cml0ZXIxID0gJ2Egd3JpdGVyIC0+ICdiIHdyaXRlclxudHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyMiA9ICdhIHdyaXRlciAtPiAoJ2IsICdjKSB3cml0ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyMyA9ICdhIHdyaXRlciAtPiAoJ2IsICdjLCAnZCkgd3JpdGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnVmIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MTYgOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgY29kZV9ORUdfSU5UOCA9ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKikgJ1xceGZmJyAoKiQqKVxubGV0IGNvZGVfSU5UMTYgPSAoKiQgQ29kZS5jaGFyIElOVDE2ICopICdcXHhmZScgKCokKilcbmxldCBjb2RlX0lOVDMyID0gKCokIENvZGUuY2hhciBJTlQzMiAqKSAnXFx4ZmQnICgqJCopXG5sZXQgY29kZV9JTlQ2NCA9ICgqJCBDb2RlLmNoYXIgSU5UNjQgKikgJ1xceGZjJyAoKiQqKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cblxubGV0IHVuc2FmZV9zZXQxNmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDE2XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQzMmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDMyXG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDY0XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQxNmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXQxNlxuOztcblxubGV0IHVuc2FmZV9zZXQzMmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuICBlbHNlIHVuc2FmZV9zZXQzMlxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuICBlbHNlIHVuc2FmZV9zZXQ2NFxuOztcblxubGV0IGJpbl93cml0ZV91bml0IGJ1ZiB+cG9zICgpID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgJ1xcMDAwJztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGIgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAoaWYgYiB0aGVuICdcXDAwMScgZWxzZSAnXFwwMDAnKTtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgbiA9XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9ORUdfSU5UODtcbiAgdW5zYWZlX3NldDggYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDMgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMTY7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA1IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDMyO1xuICB1bnNhZmVfc2V0MzJsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgOSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQ2NDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2NoYXIgYnVmIH5wb3MgYyA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIGM7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgbiA+PSAwXG4gIHRoZW5cbiAgICBpZiBuIDwgMHgwMDAwMDA4MFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gICAgZWxzZSBpZiBuIDwgMHgwMDAwODAwMFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzFcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gICAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPCAtKDEgbHNsIDMxKVxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBuYXQwID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49IDEgbHNsIDMyXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9zdHJpbmcgYnVmIH5wb3Mgc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBzdHJpbmdzICopXG4gIHVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9ieXRlcyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IG5ld19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gbmV3X3BvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAoKiBUT0RPOiBvcHRpbWl6ZSBmb3Igc21hbGwgYnl0ZXMgKilcbiAgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOm5ld19wb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQuYml0c19vZl9mbG9hdCB4KTtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGxcbiAgICAgIHRoZW4gKFxuICAgICAgICBhc3NlcnRfcG9zIHBvcztcbiAgICAgICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4pXG4gICAgICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQ2NCBidWYgfnBvcyBuID1cbiAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuKVxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG4gIGVsc2UgaWYgbiA+PSAweDAwMDA4MDAwTCB8fCBuIDwgLTB4MDAwMDgwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50NjQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCBidWYgfnBvcyBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgJiYgKG4gPj0gKCogMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzFcbiAgICAgIHx8IG4gPCAoKiAtMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50Lm5lZyAoTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzEpKVxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX25hdGl2ZWludCBuKSlcbiAgZWxzZSBpZiAoKG5vdCBhcmNoX3NpeHR5Zm91cikgJiYgbiA+PSAweDgwMDBuKSB8fCBuIDwgLTB4ODAwMG5cbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChOYXRpdmVpbnQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoTmF0aXZlaW50LnRvX2ludCBuKVxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9yZWYgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHIgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgIXJcblxubGV0IGJpbl93cml0ZV9sYXp5IGJpbl93cml0ZV9lbCBidWYgfnBvcyBsdiA9XG4gIGxldCB2ID0gTGF6eS5mb3JjZSBsdiBpblxuICBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdlxuOztcblxubGV0IGJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGZhbHNlXG4gIHwgU29tZSB2IC0+XG4gICAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyB0cnVlIGluXG4gICAgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOm5leHQgdlxuOztcblxubGV0IGJpbl93cml0ZV9wYWlyIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zIChhLCBiKSA9XG4gIGxldCBuZXh0ID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0IGJcbjs7XG5cbmxldCBiaW5fd3JpdGVfdHJpcGxlIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIChhLCBiLCBjKSA9XG4gIGxldCBuZXh0MSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgaW5cbiAgbGV0IG5leHQyID0gYmluX3dyaXRlX2IgYnVmIH5wb3M6bmV4dDEgYiBpblxuICBiaW5fd3JpdGVfYyBidWYgfnBvczpuZXh0MiBjXG47O1xuXG5sZXQgYmluX3dyaXRlX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdCA9XG4gICAgbWF0Y2ggbHN0IHdpdGhcbiAgICB8IFtdIC0+IGVsc19wb3NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6ZWxzX3BvcyBoZCBpblxuICAgICAgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3M6bmV3X2Vsc19wb3MgdGxcbiAgaW5cbiAgZnVuIGJpbl93cml0ZV9lbCBidWYgfnBvcyBsc3QgLT5cbiAgICBsZXQgbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IChMaXN0Lmxlbmd0aCBsc3QpIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBsZW4gaW5cbiAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvcyBsc3Rcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlbiB+bGVuZ3RoIH5ibGl0IGJ1ZiB+cG9zIGEgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgYmxpdCB+c3JjX3BvczowIGEgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkZsb2F0LkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICAgIGJ1ZlxuICAgIH5wb3NcbiAgICBhXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3BvcyB+biBhciA9XG4gIGxldCBlbHNfcG9zX3JlZiA9IHJlZiBlbHNfcG9zIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGVsc19wb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBidWYgfnBvczohZWxzX3Bvc19yZWYgKEFycmF5LnVuc2FmZV9nZXQgYXIgaSlcbiAgZG9uZTtcbiAgIWVsc19wb3NfcmVmXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5ICh0eXBlIGEpIGJpbl93cml0ZV9lbCBidWYgfnBvcyBhciA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl93cml0ZV9lbCA6IGEgd3JpdGVyKSA6IGZsb2F0IHdyaXRlcikgPT0gYmluX3dyaXRlX2Zsb2F0XG4gIHRoZW4gYmluX3dyaXRlX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zIChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgcG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbiBpblxuICAgIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcG4gaW5cbiAgICBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyKVxuOztcblxubGV0IGJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZV9rZXkgYmluX3dyaXRlX3ZhbCBidWYgfnBvcyBodGJsID1cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IGVsc19wb3MgPVxuICAgIGluY3IgY250X3JlZjtcbiAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfa2V5IGJ1ZiB+cG9zOmVsc19wb3MgayBpblxuICAgIGJpbl93cml0ZV92YWwgYnVmIH5wb3M6bmV3X2Vsc19wb3MgdlxuICBpblxuICBsZXQgcmVzX3BvcyA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCBlbHNfcG9zIGluXG4gIGlmICFjbnRfcmVmIDw+IGxlbiB0aGVuIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIFwiYmluX3dyaXRlX2hhc2h0YmxcIjtcbiAgcmVzX3Bvc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjMzIgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjNjQgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX3ZlYyA9IGJpbl93cml0ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA0IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDMyIG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdDY0X21hdCBidWYgfnBvcyBtID1cbiAgbGV0IGxlbjEgPSBBcnJheTIuZGltMSBtIGluXG4gIGxldCBsZW4yID0gQXJyYXkyLmRpbTIgbSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4xKSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4yKSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl9tYXQ2NCBtKSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbWF0ID0gYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fd3JpdGVfYmlnc3RyaW5nIGJ1ZiB+cG9zIHMgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSBzIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmFyaWFudF9pbnQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIubG9nb3IgKEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCB4KSAxKSAxbCk7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzhiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldDggYnVmIHBvcyBuO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF8xNmJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzMyYml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfNjRiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0X2JpdHMgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDE2YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMyYmUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRiZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQzMiA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQ2NCA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuXG5sZXQgYmluX3dyaXRlX21kNSBidWYgfnBvcyB4ID1cbiAgbGV0IHggPSBNZDVfbGliLnRvX2JpbmFyeSB4IGluXG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCB4ID0gMTYpO1xuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggOCBpblxuICAgIHVuc2FmZV9zZXQ2NCBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDY0IGJ1ZiAocG9zICsgOCkgYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDQgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA4IGluXG4gICAgbGV0IGQgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMTIgaW5cbiAgICB1bnNhZmVfc2V0MzIgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDQpIGI7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgOCkgYztcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyAxMikgZCk7XG4gIG5leHRcbjs7XG4iLCIoKiBSZWFkX21sOiByZWFkaW5nIHZhbHVlcyBmcm9tIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2EgcmVhZGVyID0gYnVmIC0+IHBvc19yZWY6cG9zX3JlZiAtPiAnYVxudHlwZSAoJ2EsICdiKSByZWFkZXIxID0gJ2EgcmVhZGVyIC0+ICdiIHJlYWRlclxudHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyMiA9ICdhIHJlYWRlciAtPiAoJ2IsICdjKSByZWFkZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyMyA9ICdhIHJlYWRlciAtPiAoJ2IsICdjLCAnZCkgcmVhZGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnVmIC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDggOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcblxubGV0IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IGMgPSB1bnNhZmVfZ2V0OCBidWYgcG9zIGluXG4gIGlmIGMgPj0gMTI4IHRoZW4gYyAtIDI1NiBlbHNlIGNcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfaW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1pbl9pbnRcbmxldCBtYXhfaW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1pbl9pbnRcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQzMiBwb3MgeCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSBpZiB4ID49IG1pbl9pbnRfaW50MzIgJiYgeCA8PSBtYXhfaW50X2ludDMyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDY0IHBvcyB4ID1cbiAgaWYgeCA+PSBtaW5faW50X2ludDY0ICYmIHggPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIEludDY0LnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0IHNhZmVfbmF0aXZlaW50X29mX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gX3BvcyB4IC0+IEludDY0LnRvX25hdGl2ZWludCB4XG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmUgYWx3YXlzXSBwb3MgeCAtPlxuICAgICAgaWYgeCA+PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1pbl9pbnRcbiAgICAgICYmIHggPD0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5tYXhfaW50XG4gICAgICB0aGVuIEludDY0LnRvX25hdGl2ZWludCB4XG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9nZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MTYgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MzIgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0NjQgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2IGVsc2UgdW5zYWZlX2dldDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyIGVsc2UgdW5zYWZlX2dldDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0IGVsc2UgdW5zYWZlX2dldDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgeCA9IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgeCA+IDMyNzY3IHRoZW4geCAtIDY1NTM2IGVsc2UgeFxuOztcblxubGV0IGJpbl9yZWFkX3VuaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgdW5zYWZlX2dldCBidWYgcG9zID0gJ1xcMDAwJ1xuICB0aGVuIHBvc19yZWYgOj0gcG9zICsgMVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlVuaXRfY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9ib29sIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBmYWxzZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgdHJ1ZVxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQm9vbF9jb2RlIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDEgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyBpblxuICBpZiBuID49IDAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OZWdfaW50OCAhcG9zX3JlZjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIENhbiBiZSBhYm92ZSBuZXh0IGxpbmUgKG5vIGVycm9ycyBwb3NzaWJsZSB3aXRoIDE2Yml0KS5cbiAgICAgVGhpcyBzaG91bGQgaW1wcm92ZSB0aGUgZ2VuZXJhdGVkIGNvZGUuICopXG4gIHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDMybGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQzMiAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDY0ICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBJbnQ2NC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgTmF0aXZlaW50Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCBwb3MgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBOYXQwLnVuc2FmZV9vZl9pbnQgKHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MpXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IG1hc2tfMzJiaXQgPSBJbnQ2NC50b19pbnQgMHhmZmZmX2ZmZmZMIGluXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICBsZXQgbiA9IEludDMyLnRvX2ludCAodW5zYWZlX2dldDMybGUgYnVmIHBvcykgaW5cbiAgICAgIGlmIG4gPj0gMFxuICAgICAgdGhlbiBOYXQwLnVuc2FmZV9vZl9pbnQgblxuICAgICAgZWxzZVxuICAgICAgICAoKiBFcmFzZSB0aGUgdXBwZXIgYml0cyB0aGF0IHdlcmUgc2V0IHRvIDEgZHVyaW5nIHRoZSBpbnQzMiAtPiBpbnQgY29udmVyc2lvbi4gKilcbiAgICAgICAgTmF0MC51bnNhZmVfb2ZfaW50IChuIGxhbmQgbWFza18zMmJpdCkpXG4gIGVsc2VcbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnRfaW50MzJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50MzIudG9faW50IG4pIGluXG4gICAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgICAgbilcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiAoXG4gICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDY0LnRvX2ludCBuKSBpblxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBuKVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuU3RyaW5nX3Rvb19sb25nIHN0YXJ0X3BvcztcbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdHIgPSBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgaW5cbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9jaGFyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBDaGFyLmNvZGUgY2hcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2Zsb2F0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgSW50NjQuZmxvYXRfb2ZfYml0cyAodW5zYWZlX2dldDY0bGUgYnVmIHBvcylcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50MzIub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDMyX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQ2NC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50NjRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXRpdmVpbnQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSB3aGVuIGFyY2hfc2l4dHlmb3VyIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdGl2ZWludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9yZWYgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIHJlZiBlbFxuOztcblxubGV0IGJpbl9yZWFkX2xhenkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIExhenkuZnJvbV92YWwgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9vcHRpb24gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5vbmVcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgIFNvbWUgZWxcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk9wdGlvbl9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiXG47O1xuXG5sZXQgYmluX3JlYWRfdHJpcGxlIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYyA9IGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGIsIGNcbjs7XG5cbmxldCBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gPVxuICBsZXQgcmVjIGxvb3AgbiBhY2MgPVxuICAgIGlmIG4gPSAwIHRoZW4gYWNjIGVsc2UgbG9vcCAobiAtIDEpIChiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgOjogYWNjKVxuICBpblxuICBsb29wIGxlbiBbXVxuOztcblxubGV0IGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfbGVuIHRoZW4gcmFpc2VfcmVhZF9lcnJvciAoTGlzdF90b29fbG9uZyB7IGxlbjsgbWF4X2xlbiB9KSAhcG9zX3JlZjtcbiAgbGV0IHJldl9sc3QgPSBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgTGlzdC5yZXYgcmV2X2xzdFxuOztcblxubGV0IGJpbl9yZWFkX2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW46bWF4X2ludCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbjs7XG5cbmxldCBkdW1teV9mbG9hdF9idWYgPSBjcmVhdGVfYnVmIDhcbmxldCAoKSA9IGlnbm9yZSAoV3JpdGUuYmluX3dyaXRlX2Zsb2F0IGR1bW15X2Zsb2F0X2J1ZiB+cG9zOjAgMy4xKVxuXG5sZXQgbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuIH5jcmVhdGUgfmJsaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgcG9zO1xuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgYXJyID0gY3JlYXRlIGxlbiBpblxuICBibGl0IH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBhcnIgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBhcnJcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6RmxvYXQuQXJyYXkuY3JlYXRlXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6QXJyYXkuY3JlYXRlX2Zsb2F0XG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9hcnJheSAodHlwZSBhKSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9lbCA6IGEgcmVhZGVyKSA6IGZsb2F0IHJlYWRlcikgPT0gYmluX3JlYWRfZmxvYXRcbiAgdGhlbiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgOiBmbG9hdCBhcnJheSkgOiBhIGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbfHxdXG4gICAgZWxzZSAoXG4gICAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKVxuICAgICAgZWxzZSBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbWF5YmVfZmxvYXQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgZHVtbXlfZmxvYXRfYnVmIH5wb3NfcmVmOihyZWYgMCkgaW5cbiAgICAgICAgICAgIFNvbWUgZWxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbWF5YmVfZmxvYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zXG4gICAgICAgIHwgU29tZSBlbCAtPlxuICAgICAgICAgIGlmIE9iai50YWcgKE9iai5yZXByIGVsKSA9IE9iai5kb3VibGVfdGFnIHx8IGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpO1xuICAgICAgbGV0IGZpcnN0ID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gZmlyc3QgaW5cbiAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyBpIGVsXG4gICAgICBkb25lO1xuICAgICAgcmVzKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgbGVuIGluXG4gIGxldCByZWFkX2t2X3BhaXIgPSBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgaW5cbiAgbGV0IGVscyA9IGJpbl9yZWFkX25fcmV2X2xpc3QgcmVhZF9rdl9wYWlyIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgY29weV9odGJsX2xpc3QgaHRibCBlbHNcbjs7XG5cbmV4dGVybmFsIGJ1Zl9vZl92ZWMzMiA6IHZlYzMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl92ZWM2NCA6IHZlYzY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQzMiA6IG1hdDMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQ2NCA6IG1hdDY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWMzMiB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWM2NCB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX3ZlYyA9IGJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQzMiBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDY0IG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfbWF0ID0gYmluX3JlYWRfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9yZWFkX2JpZ3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBzdHIgPSBjcmVhdGVfYnVmIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6c3RyIH5kc3RfcG9zOjAgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF92YXJpYW50X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgKCogW25dIG11c3QgY29udGFpbiBhbiBpbnRlZ2VyIGFscmVhZHkgZW5jb2RlZCwgaS5lLiBbbiA9IDIgKiBrICsgMV0uICopXG4gIGlmIEludDMyLmxvZ2FuZCBuIDFsID0gMGxcbiAgdGhlbiByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfdGFnLCBwb3MpKVxuICBlbHNlIChcbiAgICAoKiBXZSBzaGlmdCBpdCBieSBvbmUgYml0IHRvIHRoZSByaWdodCBzZSB3ZSBnZXQgYmFjayBbMiAqIGsgKyAxXSBpbiB0aGUgZW5kLiAqKVxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0IG4gMSkpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzhiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0OCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzE2Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8zMmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludF82NGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludDY0X2JpdHMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazE2X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDMyYmUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zXG47O1xuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDA3LCAwKV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQ2NHVcIlxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG5bJSVlbmRpZl1cblxubGV0IGJpbl9yZWFkX21kNSBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQ2NCBidWYgKHBvcyArIDgpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyA4IGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDQpIGluXG4gICAgbGV0IGMgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA4KSBpblxuICAgIGxldCBkID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgMTIpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA0IGI7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA4IGM7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAxMiBkKTtcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcylcbjs7XG4iLCJpbmNsdWRlIEJpbl9zaGFwZVxuXG4oKiBuZXcgYmFzZSBzaGFwZXMgKilcbmxldCBiaW5fc2hhcGVfdW5pdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInVuaXRcIikgW11cbmxldCBiaW5fc2hhcGVfYm9vbCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJvb2xcIikgW11cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwic3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYnl0ZXNcIikgW11cbmxldCBiaW5fc2hhcGVfY2hhciA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImNoYXJcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2MyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDYzXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmF0aXZlaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25hdDAgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXQwXCIpIFtdXG5sZXQgYmluX3NoYXBlX2RpZ2VzdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImRpZ2VzdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0MzJfdmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQ2NF92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl9tYXRcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJtYXRcIikgW11cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYmlnc3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdGFycmF5XCIpIFtdXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmFyaWFudF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfOGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMTZiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzMyYml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF82NGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRfYml0c1wiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazE2X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazMyX2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50MzJcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcms2NF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludDY0XCIpIFtdXG5cbigqIG5ldyBzaGFwZSBjb25zdHJ1Y3RvcnMgKilcbmxldCBiaW5fc2hhcGVfcmVmIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJyZWZcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJvcHRpb25cIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfbGlzdCB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibGlzdFwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9hcnJheSB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYXJyYXlcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4IHkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJoYXNodGJsXCIpIFsgeDsgeSBdXG5cbigqIHNoYXBlLWNvbnN0cnVjdG9yIGFsaWFzZXMgKilcbmxldCBiaW5fc2hhcGVfbGF6eSB4ID0geFxubGV0IGJpbl9zaGFwZV9wYWlyIHggeSA9IHR1cGxlIFsgeDsgeSBdXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4IHkgeiA9IHR1cGxlIFsgeDsgeTsgeiBdXG4iLCIoKiBTaXplOiBjb21wdXRlIHNpemUgb2YgdmFsdWVzIGluIHRoZSBiaW5hcnkgcHJvdG9jb2wuICopXG5cbm9wZW4gQmlnYXJyYXlcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5cbm9wZW4gQ29tbW9uXG5cbm1vZHVsZSBNYXhpbXVtID0gc3RydWN0XG4gIGxldCBiaW5fc2l6ZV91bml0ID0gMVxuICBsZXQgYmluX3NpemVfYm9vbCA9IDFcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSAxXG4gIGxldCBiaW5fc2l6ZV9tZDUgPSAxNlxuICBsZXQgYmluX3NpemVfaW50X25hdDAgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQgPSBtYXggYmluX3NpemVfaW50X25hdDAgYmluX3NpemVfaW50X25lZ2F0aXZlXG4gIGxldCBiaW5fc2l6ZV9mbG9hdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDMyID0gNVxuICBsZXQgYmluX3NpemVfaW50NjQgPSA5XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSBiaW5fc2l6ZV9pbnRfbmF0MFxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSA0XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IDJcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF82NGJpdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50ID0gMlxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSA4XG5lbmRcblxubW9kdWxlIE1pbmltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSBNYXhpbXVtLmJpbl9zaXplX3VuaXRcbiAgbGV0IGJpbl9zaXplX2Jvb2wgPSBNYXhpbXVtLmJpbl9zaXplX2Jvb2xcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSBNYXhpbXVtLmJpbl9zaXplX2NoYXJcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IDJcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1pbiBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gTWF4aW11bS5iaW5fc2l6ZV9mbG9hdFxuICBsZXQgYmluX3NpemVfaW50MzIgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX2ludDY0ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSAxXG4gIGxldCBiaW5fc2l6ZV9yZWYgPSAxXG4gIGxldCBiaW5fc2l6ZV9sYXp5X3QgPSAxXG4gIGxldCBiaW5fc2l6ZV9vcHRpb24gPSAxXG4gIGxldCBiaW5fc2l6ZV9wYWlyID0gMSArIDFcbiAgbGV0IGJpbl9zaXplX3RyaXBsZSA9IDEgKyAxICsgMVxuICBsZXQgYmluX3NpemVfbGVuID0gYmluX3NpemVfbmF0MFxuICBsZXQgYmluX3NpemVfbGlzdCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2hhc2h0YmwgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3N0cmluZyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYnl0ZXMgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3ZlYyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjID0gYmluX3NpemVfdmVjXG4gIGxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9sZW4gKyBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0MzJfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9mbG9hdDY0X21hdCA9IGJpbl9zaXplX21hdFxuICBsZXQgYmluX3NpemVfYmlnc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdGFycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdF9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX3ZhcmlhbnRfaW50XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzhiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzE2Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF8zMmJpdFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfNjRiaXRcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSBNYXhpbXVtLmJpbl9zaXplX2ludDY0X2JpdHNcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmsxNl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmszMl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludDMyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NFxuZW5kXG5cbnR5cGUgJ2Egc2l6ZXIgPSAnYSAtPiBpbnRcbnR5cGUgKCdhLCAnYikgc2l6ZXIxID0gJ2Egc2l6ZXIgLT4gJ2Igc2l6ZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHNpemVyMiA9ICdhIHNpemVyIC0+ICgnYiwgJ2MpIHNpemVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNpemVyMyA9ICdhIHNpemVyIC0+ICgnYiwgJ2MsICdkKSBzaXplcjJcblxubGV0IGJpbl9zaXplX3VuaXQgKCkgPSAxXG5sZXQgYmluX3NpemVfYm9vbCBfID0gMVxuXG5sZXQgYmluX3NpemVfaW50X25hdDAgbiA9XG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHg4MDAwMDAwMCAqKSAxIGxzbCAzMVxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfaW50X25lZ2F0aXZlIG4gPVxuICBpZiBuID49IC0weDAwMDAwMDgwXG4gIHRoZW4gMlxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8ICgqIC0weDgwMDAwMDAwICopIC0oMSBsc2wgMzEpXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9jaGFyIF8gPSAxXG5sZXQgYmluX3NpemVfaW50IG4gPSBpZiBuID49IDAgdGhlbiBiaW5fc2l6ZV9pbnRfbmF0MCBuIGVsc2UgYmluX3NpemVfaW50X25lZ2F0aXZlIG5cblxubGV0IGJpbl9zaXplX25hdDAgbmF0MCA9XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBuIDwgMHgwMDAxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49ICgqIDB4MTAwMDAwMDAwICopIDEgbHNsIDMyXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgbGVuID1cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBzaXplX2xlbiA9IGJpbl9zaXplX25hdDAgcGxlbiBpblxuICBzaXplX2xlbiArIGxlblxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZyBzdHIgPSBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgKFN0cmluZy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX2J5dGVzIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoQnl0ZXMubGVuZ3RoIHN0cilcbmxldCBiaW5fc2l6ZV9tZDUgXyA9IDE2XG5cbmxldCBiaW5fc2l6ZV9mbG9hdCBmID1cbiAgKCogSWYgd2UganVzdCBpZ25vcmUgdGhlIGFyZ3VtZW50IHRoZSBjb21waWxlciB3aWxsIHN0aWxsIHJlcXVpcmUgaXQgdG8gZXhpc3QgYW5kIGJlXG4gICAgIGJveGVkLiBUaGlzIG1lYW5zIHRoYXQgaWYgZm9yIGluc3RhbmNlIHdlIGNhbGwgdGhpcyBmb3IgYSBmaWVsZCBvZiBhIGZsb2F0IHJlY29yZCxcbiAgICAgdGhlIGNvbXBpbGVyIHdpbGwgYWxsb2NhdGUgdGhlIGZsb2F0IGZvciBub3RoaW5nLlxuXG4gICAgIFdpdGggdGhpcyBsaW5lIHRoZSBjb21waWxlciByZWFsbHkgaWdub3JlcyB0aGUgZmxvYXQuICopXG4gIGlnbm9yZSAodHJ1bmNhdGUgZik7XG4gIDhcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGwgdGhlbiA1IGVsc2UgYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQ2NCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludCAoSW50NjQudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludDMyIChJbnQ2NC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX25hdGl2ZWludCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50NjQgKEludDY0Lm9mX25hdGl2ZWludCBuKVxuICBlbHNlIGZ1biBuIC0+IGJpbl9zaXplX2ludDMyIChOYXRpdmVpbnQudG9faW50MzIgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9yZWYgYmluX3NpemVfZWwgciA9IGJpbl9zaXplX2VsICFyXG5sZXQgYmluX3NpemVfbGF6eV90IGJpbl9zaXplX2VsIGx2ID0gYmluX3NpemVfZWwgKExhenkuZm9yY2UgbHYpXG5sZXQgYmluX3NpemVfbGF6eSA9IGJpbl9zaXplX2xhenlfdFxuXG5sZXQgYmluX3NpemVfb3B0aW9uIGJpbl9zaXplX2VsID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDFcbiAgfCBTb21lIHYgLT4gMSArIGJpbl9zaXplX2VsIHZcbjs7XG5cbmxldCBiaW5fc2l6ZV9wYWlyIGJpbl9zaXplX2EgYmluX3NpemVfYiAoYSwgYikgPSBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGJcblxubGV0IGJpbl9zaXplX3RyaXBsZSBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyAoYSwgYiwgYykgPVxuICBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGIgKyBiaW5fc2l6ZV9jIGNcbjs7XG5cbmxldCBiaW5fc2l6ZV9saXN0ID1cbiAgbGV0IHJlYyBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2Mgfmxlbl9hY2MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gc2l6ZV9hY2MgKyBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuX2FjYylcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6KHNpemVfYWNjICsgYmluX3NpemVfZWwgaGQpIH5sZW5fYWNjOihsZW5fYWNjICsgMSkgdGxcbiAgaW5cbiAgZnVuIGJpbl9zaXplX2VsIGxzdCAtPiBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6MCB+bGVuX2FjYzowIGxzdFxuOztcblxubGV0IGJpbl9zaXplX2xlbiBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgYmluX3NpemVfbmF0MCBwbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRhcnJheSBhciA9XG4gIGxldCBsZW4gPSBGbG9hdC5BcnJheS5sZW5ndGggYXIgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArICg4ICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5IGFyID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuIH5uID1cbiAgbGV0IHRvdGFsX2xlbl9yZWYgPSByZWYgdG90YWxfbGVuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGxldCBlbCA9IEFycmF5LnVuc2FmZV9nZXQgYXIgaSBpblxuICAgIHRvdGFsX2xlbl9yZWYgOj0gIXRvdGFsX2xlbl9yZWYgKyBiaW5fc2l6ZV9lbCBlbFxuICBkb25lO1xuICAhdG90YWxfbGVuX3JlZlxuOztcblxubGV0IGJpbl9zaXplX2FycmF5ICh0eXBlIGEpIGJpbl9zaXplX2VsIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3NpemVfZWwgOiBhIHNpemVyKSA6IGZsb2F0IHNpemVyKSA9PSBiaW5fc2l6ZV9mbG9hdFxuICB0aGVuIGJpbl9zaXplX2Zsb2F0X2FycmF5IChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgdG90YWxfbGVuID0gYmluX3NpemVfbGVuIG4gaW5cbiAgICBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4pXG47O1xuXG5sZXQgYmluX3NpemVfaGFzaHRibCBiaW5fc2l6ZV9rZXkgYmluX3NpemVfdmFsIGh0YmwgPVxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IHRvdGFsX2xlbiA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIHRvdGFsX2xlbiArIGJpbl9zaXplX2tleSBrICsgYmluX3NpemVfdmFsIHZcbiAgaW5cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHRvdGFsX2xlbiA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCAoYmluX3NpemVfbGVuIGxlbikgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fc2l6ZV9oYXNodGJsXCI7XG4gIHRvdGFsX2xlblxuOztcblxubGV0IGJpbl9zaXplX2dlbl92ZWMgdmVjIG11bHRpcGxpZXIgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2ZWMgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArIChtdWx0aXBsaWVyICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0MzJfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDRcbmxldCBiaW5fc2l6ZV9mbG9hdDY0X3ZlYyB2ZWMgPSBiaW5fc2l6ZV9nZW5fdmVjIHZlYyA4XG5sZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9zaXplX2dlbl9tYXQgbWF0IG11bHRpcGxpZXIgPVxuICBsZXQgZGltMSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgZGltMiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgc2l6ZSA9IGRpbTEgKiBkaW0yIGluXG4gIGJpbl9zaXplX2xlbiBkaW0xICsgYmluX3NpemVfbGVuIGRpbTIgKyAobXVsdGlwbGllciAqIHNpemUpXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0IG1hdCA9IGJpbl9zaXplX2dlbl9tYXQgbWF0IDhcbmxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9mbG9hdDY0X21hdFxubGV0IGJpbl9zaXplX2JpZ3N0cmluZyBidWYgPSBiaW5fc2l6ZV9nZW5fdmVjIGJ1ZiAxXG5sZXQgYmluX3NpemVfdmFyaWFudF9pbnQgXyA9IDRcbmxldCBiaW5fc2l6ZV9pbnRfOGJpdCBfID0gMVxubGV0IGJpbl9zaXplX2ludF8xNmJpdCBfID0gMlxubGV0IGJpbl9zaXplX2ludF8zMmJpdCBfID0gNFxubGV0IGJpbl9zaXplX2ludF82NGJpdCBfID0gOFxubGV0IGJpbl9zaXplX2ludDY0X2JpdHMgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IF8gPSAyXG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludCBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgXyA9IDhcbiIsIigqIFRwX2NsYXNzOiBzaXplcnMsIHdyaXRlcnMsIGFuZCByZWFkZXJzIGluIHJlY29yZHMgKilcblxudHlwZSAnYSB3cml0ZXIgPVxuICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgfVxuXG50eXBlICdhIHJlYWRlciA9XG4gIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gIDsgdnRhZ19yZWFkIDogKGludCAtPiAnYSkgUmVhZC5yZWFkZXJcbiAgfVxuXG50eXBlICdhIHQgPVxuICB7IHNoYXBlIDogU2hhcGUudFxuICA7IHdyaXRlciA6ICdhIHdyaXRlclxuICA7IHJlYWRlciA6ICdhIHJlYWRlclxuICB9XG5cbnR5cGUgJ2Egd3JpdGVyMCA9ICdhIHdyaXRlclxudHlwZSAnYSByZWFkZXIwID0gJ2EgcmVhZGVyXG50eXBlICdhIHQwID0gJ2EgdFxuXG5tb2R1bGUgUzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICdiIHdyaXRlcjBcbiAgdHlwZSAoJ2EsICdiKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICdiIHJlYWRlcjBcbiAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgdDAgLT4gJ2IgdDBcbmVuZFxuXG5tb2R1bGUgUzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjKSBTMS53cml0ZXJcbiAgdHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAoJ2IsICdjKSBTMS5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdhIHQwIC0+ICgnYiwgJ2MpIFMxLnRcbmVuZFxuXG5tb2R1bGUgUzMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gKCdiLCAnYywgJ2QpIFMyLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIucmVhZGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYywgJ2QpIFMyLnRcbmVuZFxuXG5sZXQgdmFyaWFudF93cm9uZ190eXBlIG5hbWUgX2J1ZiB+cG9zX3JlZiBfeCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSAhcG9zX3JlZlxuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzLlN0ciAqKVxuKCokIG1rX2Jhc2UgXCJ1bml0XCIgKilcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3VuaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3VuaXQgfVxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdW5pdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiIH1cbmxldCBiaW5fc2hhcGVfdW5pdCA9IFNoYXBlLmJpbl9zaGFwZV91bml0XG5cbmxldCBiaW5fdW5pdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdW5pdDsgd3JpdGVyID0gYmluX3dyaXRlcl91bml0OyByZWFkZXIgPSBiaW5fcmVhZGVyX3VuaXQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJib29sXCIgKilcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Jvb2w7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Jvb2wgfVxubGV0IGJpbl9yZWFkZXJfYm9vbCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYm9vbDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiIH1cbmxldCBiaW5fc2hhcGVfYm9vbCA9IFNoYXBlLmJpbl9zaGFwZV9ib29sXG5cbmxldCBiaW5fYm9vbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYm9vbDsgd3JpdGVyID0gYmluX3dyaXRlcl9ib29sOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Jvb2wgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJzdHJpbmdcIiAqKVxubGV0IGJpbl93cml0ZXJfc3RyaW5nID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9zdHJpbmc7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZyB9XG5cbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfc3RyaW5nOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJzdHJpbmdcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IFNoYXBlLmJpbl9zaGFwZV9zdHJpbmdcblxubGV0IGJpbl9zdHJpbmcgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3N0cmluZzsgd3JpdGVyID0gYmluX3dyaXRlcl9zdHJpbmc7IHJlYWRlciA9IGJpbl9yZWFkZXJfc3RyaW5nIH1cbjs7XG5cbigqJCBta19iYXNlIFwiYnl0ZXNcIiAqKVxubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2J5dGVzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9ieXRlcyB9XG5cbmxldCBiaW5fcmVhZGVyX2J5dGVzID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9ieXRlczsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYnl0ZXNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gU2hhcGUuYmluX3NoYXBlX2J5dGVzXG5cbmxldCBiaW5fYnl0ZXMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2J5dGVzOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2J5dGVzOyByZWFkZXIgPSBiaW5fcmVhZGVyX2J5dGVzIH1cbjs7XG5cbigqJCBta19iYXNlIFwiY2hhclwiICopXG5sZXQgYmluX3dyaXRlcl9jaGFyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9jaGFyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9jaGFyIH1cbmxldCBiaW5fcmVhZGVyX2NoYXIgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2NoYXI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiB9XG5sZXQgYmluX3NoYXBlX2NoYXIgPSBTaGFwZS5iaW5fc2hhcGVfY2hhclxuXG5sZXQgYmluX2NoYXIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2NoYXI7IHdyaXRlciA9IGJpbl93cml0ZXJfY2hhcjsgcmVhZGVyID0gYmluX3JlYWRlcl9jaGFyIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQgfVxubGV0IGJpbl9yZWFkZXJfaW50ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiIH1cbmxldCBiaW5fc2hhcGVfaW50ID0gU2hhcGUuYmluX3NoYXBlX2ludFxubGV0IGJpbl9pbnQgPSB7IHNoYXBlID0gYmluX3NoYXBlX2ludDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50IH1cblxuKCokIG1rX2Jhc2UgXCJmbG9hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0IH1cblxubGV0IGJpbl9yZWFkZXJfZmxvYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRcblxubGV0IGJpbl9mbG9hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQzMlwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50MzI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDMyIH1cblxubGV0IGJpbl9yZWFkZXJfaW50MzIgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDMyOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQzMlwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBTaGFwZS5iaW5fc2hhcGVfaW50MzJcblxubGV0IGJpbl9pbnQzMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50MzI7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50MzI7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50MzIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50NjQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDY0IH1cblxubGV0IGJpbl9yZWFkZXJfaW50NjQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRcblxubGV0IGJpbl9pbnQ2NCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50NjQ7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50NjQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50NjQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXRpdmVpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uYXRpdmVpbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdGl2ZWludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0aXZlaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmF0aXZlaW50XG5cbmxldCBiaW5fbmF0aXZlaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uYXRpdmVpbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25hdGl2ZWludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmF0aXZlaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmF0MFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXQwID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uYXQwOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uYXQwIH1cbmxldCBiaW5fcmVhZGVyX25hdDAgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25hdDA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdDBcIiB9XG5sZXQgYmluX3NoYXBlX25hdDAgPSBTaGFwZS5iaW5fc2hhcGVfbmF0MFxuXG5sZXQgYmluX25hdDAgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdDA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0MDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXQwIH1cbjs7XG5cbigqJCBta19iYXNlMSBcInJlZlwiICopXG5sZXQgYmluX3dyaXRlcl9yZWYgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3JlZiBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfcmVmIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfcmVmIGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX3JlZiBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfcmVmIHgxID0gU2hhcGUuYmluX3NoYXBlX3JlZiB4MVxuXG5sZXQgYmluX3JlZiBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3JlZiBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3JlZiBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9yZWYgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsYXp5XCIgKilcbmxldCBiaW5fd3JpdGVyX2xhenkgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xhenkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xhenkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9sYXp5IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xhenkgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9sYXp5IHgxID0gU2hhcGUuYmluX3NoYXBlX2xhenkgeDFcblxubGV0IGJpbl9sYXp5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGF6eSBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xhenkgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGF6eSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcIm9wdGlvblwiICopXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX29wdGlvbiBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfb3B0aW9uIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uIGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHgxID0gU2hhcGUuYmluX3NoYXBlX29wdGlvbiB4MVxuXG5sZXQgYmluX29wdGlvbiBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX29wdGlvbiBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX29wdGlvbiBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9vcHRpb24gYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTIgXCJwYWlyXCIgKilcbmxldCBiaW5fd3JpdGVyX3BhaXIgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9wYWlyIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlcl9lbDEud3JpdGUgYmluX3dyaXRlcl9lbDIud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfcGFpciBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF9wYWlyIGJpbl9yZWFkZXJfZWwxLnJlYWQgYmluX3JlYWRlcl9lbDIucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicGFpclwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfcGFpciB4MSB4MiA9IFNoYXBlLmJpbl9zaGFwZV9wYWlyIHgxIHgyXG5cbmxldCBiaW5fcGFpciBiaW5fZWwxIGJpbl9lbDIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3BhaXIgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9wYWlyIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9wYWlyIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMyBcInRyaXBsZVwiICopXG5sZXQgYmluX3dyaXRlcl90cmlwbGUgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgYmluX3dyaXRlcl9lbDMgPVxuICB7IHNpemUgPVxuICAgICAgKGZ1biB2IC0+XG4gICAgICAgICBTaXplLmJpbl9zaXplX3RyaXBsZSBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgYmluX3dyaXRlcl9lbDMuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX3RyaXBsZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMS53cml0ZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMi53cml0ZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMy53cml0ZVxuICAgICAgICAgICBidWZcbiAgICAgICAgICAgfnBvc1xuICAgICAgICAgICB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl90cmlwbGUgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgYmluX3JlYWRlcl9lbDMgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfdHJpcGxlXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwxLnJlYWRcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDIucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMy5yZWFkXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ0cmlwbGVcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4MyA9IFNoYXBlLmJpbl9zaGFwZV90cmlwbGUgeDEgeDIgeDNcblxubGV0IGJpbl90cmlwbGUgYmluX2VsMSBiaW5fZWwyIGJpbl9lbDMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3RyaXBsZSBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGUgYmluX2VsMy5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdHJpcGxlIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyIGJpbl9lbDMud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl90cmlwbGUgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXIgYmluX2VsMy5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwibGlzdFwiICopXG5sZXQgYmluX3dyaXRlcl9saXN0IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9saXN0IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9saXN0IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbGlzdCBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9saXN0IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbGlzdCB4MSA9IFNoYXBlLmJpbl9zaGFwZV9saXN0IHgxXG5cbmxldCBiaW5fbGlzdCBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2xpc3QgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9saXN0IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2xpc3QgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJhcnJheVwiICopXG5sZXQgYmluX3dyaXRlcl9hcnJheSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfYXJyYXkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2FycmF5IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYXJyYXkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfYXJyYXkgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYXJyYXkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfYXJyYXkgeDFcblxubGV0IGJpbl9hcnJheSBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2FycmF5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfYXJyYXkgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfYXJyYXkgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTIgXCJoYXNodGJsXCIgKilcbmxldCBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9oYXNodGJsIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEud3JpdGUgYmluX3dyaXRlcl9lbDIud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkZXJfZWwxLnJlYWQgYmluX3JlYWRlcl9lbDIucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaGFzaHRibFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4MSB4MiA9IFNoYXBlLmJpbl9zaGFwZV9oYXNodGJsIHgxIHgyXG5cbmxldCBiaW5faGFzaHRibCBiaW5fZWwxIGJpbl9lbDIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2hhc2h0YmwgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9oYXNodGJsIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9oYXNodGJsIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQzMl92ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0MzJfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX3ZlYyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfdmVjXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xuXG5sZXQgYmluX2Zsb2F0MzJfdmVjID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQ2NF92ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0NjRfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X3ZlYyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfdmVjXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwidmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92ZWMgfVxubGV0IGJpbl9yZWFkZXJfdmVjID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiIH1cbmxldCBiaW5fc2hhcGVfdmVjID0gU2hhcGUuYmluX3NoYXBlX3ZlY1xubGV0IGJpbl92ZWMgPSB7IHNoYXBlID0gYmluX3NoYXBlX3ZlYzsgd3JpdGVyID0gYmluX3dyaXRlcl92ZWM7IHJlYWRlciA9IGJpbl9yZWFkZXJfdmVjIH1cblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX21hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX21hdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG5cbmxldCBiaW5fZmxvYXQzMl9tYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX21hdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X21hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X21hdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fZmxvYXQ2NF9tYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X21hdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJtYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfbWF0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX21hdCB9XG5sZXQgYmluX3JlYWRlcl9tYXQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibWF0XCIgfVxubGV0IGJpbl9zaGFwZV9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX21hdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfbWF0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX21hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9tYXQgfVxuXG4oKiQgbWtfYmFzZSBcImJpZ3N0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2JpZ3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYmlnc3RyaW5nOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFNoYXBlLmJpbl9zaGFwZV9iaWdzdHJpbmdcblxubGV0IGJpbl9iaWdzdHJpbmcgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2JpZ3N0cmluZ1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfYmlnc3RyaW5nXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9iaWdzdHJpbmdcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdGFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0YXJyYXkgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0YXJyYXk7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0YXJyYXkgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheTsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRhcnJheVwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5cbmxldCBiaW5fZmxvYXRhcnJheSA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXRhcnJheVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXRhcnJheVxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXRhcnJheVxuICB9XG47O1xuXG4oKiQqKVxuXG4oKiQgbWtfYmFzZSBcInZhcmlhbnRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX3ZhcmlhbnRfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92YXJpYW50X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdmFyaWFudF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfdmFyaWFudF9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZhcmlhbnRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ2YXJpYW50X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfdmFyaWFudF9pbnRcblxubGV0IGJpbl92YXJpYW50X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdmFyaWFudF9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZhcmlhbnRfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl92YXJpYW50X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF84Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF84Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfOGJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzhiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzhiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF84Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfOGJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzhiaXRcblxubGV0IGJpbl9pbnRfOGJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzhiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF84Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfOGJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8xNmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMTZiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8xNmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzE2Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8xNmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzE2Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMTZiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMTZiaXRcblxubGV0IGJpbl9pbnRfMTZiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8xNmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzE2Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMTZiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfMzJiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzMyYml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfMzJiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF8zMmJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfMzJiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF8zMmJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzMyYml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzMyYml0XG5cbmxldCBiaW5faW50XzMyYml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfMzJiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF8zMmJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzMyYml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzY0Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF82NGJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzY0Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzY0Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF82NGJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF82NGJpdFxuXG5sZXQgYmluX2ludF82NGJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzY0Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfNjRiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF82NGJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0X2JpdHNcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50NjRfYml0cyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50NjRfYml0czsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjRfYml0cyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NF9iaXRzID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ2NF9iaXRzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NF9iaXRzXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gU2hhcGUuYmluX3NoYXBlX2ludDY0X2JpdHNcblxubGV0IGJpbl9pbnQ2NF9iaXRzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NF9iaXRzXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NF9iaXRzXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NF9iaXRzXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazE2X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMTZfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMTZfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmsxNl9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmsxNl9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazE2X2ludFxuXG5sZXQgYmluX25ldHdvcmsxNl9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmsxNl9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmsxNl9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMzJfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmszMl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmszMl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazMyX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazMyX2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG5cbmxldCBiaW5fbmV0d29yazMyX2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazMyX2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnQzMlwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmszMl9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazMyX2ludDMyXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazMyX2ludDMyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazMyX2ludDMyXG5cbmxldCBiaW5fbmV0d29yazMyX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMlxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazY0X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrNjRfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcms2NF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcms2NF9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludFxuXG5sZXQgYmluX25ldHdvcms2NF9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcms2NF9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50NjRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NFxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcms2NF9pbnQ2NFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NFxuXG5sZXQgYmluX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NFxuICB9XG47O1xuXG4oKiQqKVxuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubGV0IGNudl93cml0ZXIgY252IHRwX2NsYXNzID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IHRwX2NsYXNzLnNpemUgKGNudiB2KSlcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiB0cF9jbGFzcy53cml0ZSBidWYgfnBvcyAoY252IHYpKVxuICB9XG47O1xuXG5sZXQgY252X3JlYWRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBjbnYgKHRwX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmKSlcbiAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiB2dGFnIC0+IGNudiAodHBfY2xhc3MudnRhZ19yZWFkIGJ1ZiB+cG9zX3JlZiB2dGFnKSlcbiAgfVxuOztcblxubGV0IGNudiBmb3Jfc2hhcGUgZm9yX3dyaXRlciBmb3JfcmVhZGVyIHRwX2NsYXNzID1cbiAgeyBzaGFwZSA9IGZvcl9zaGFwZSB0cF9jbGFzcy5zaGFwZVxuICA7IHdyaXRlciA9IGNudl93cml0ZXIgZm9yX3dyaXRlciB0cF9jbGFzcy53cml0ZXJcbiAgOyByZWFkZXIgPSBjbnZfcmVhZGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MucmVhZGVyXG4gIH1cbjs7XG4iLCIoKiBCaW5hYmxlOiBzaWduYXR1cmVzIGRlZmluaW5nIGdlbmVyYXRlZCBmdW5jdGlvbnMgZm9yIHRoZSBiaW5hcnkgcHJvdG9jb2wuXG4gICBbUywgUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHNhdGlzZmllZCBieSB0aGUgZ2VuZXJhdGVkIGNvZGUgYW5kXG4gICBbTWluaW1hbC5TLCBNaW5pbWFsLlMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyB0aGF0IGdlbmVyYXRlZCBjb2RlIHVzZXMuICopXG5cbigqIHRoZSBzdWJzZXQgb2YgUyBjb250YWluaW5nIG9ubHkgZnVuY3Rpb25zLCBzbyB0aGF0IG9uZSBjYW4gcmVjdXJzaXZlbHkgZGVmaW5lIG1vZHVsZXNcbiAgIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZSAqKVxubW9kdWxlIHR5cGUgU19vbmx5X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcblxuICAoKipcbiAgICAgVGhpcyBmdW5jdGlvbiBvbmx5IG5lZWRzIGltcGxlbWVudGF0aW9uIGlmIFt0XSBleHBvc2VkIHRvIGJlIGEgcG9seW1vcnBoaWMgdmFyaWFudC5cbiAgICAgRGVzcGl0ZSB3aGF0IHRoZSB0eXBlIHJlYWRzLCB0aGlzIGRvZXMgKm5vdCogcHJvZHVjZSBhIGZ1bmN0aW9uIGFmdGVyIHJlYWRpbmc7XG4gICAgIGluc3RlYWQgaXQgdGFrZXMgdGhlIGNvbnN0cnVjdG9yIHRhZyAoaW50KSBiZWZvcmUgcmVhZGluZyBhbmQgcmVhZHMgdGhlIHJlc3Qgb2YgdGhlXG4gICAgIHZhcmlhbnQgW3RdIGFmdGVyd2FyZHMuXG4gICopXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgU19vbmx5X2Z1bmN0aW9ucyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICB2YWwgYmluX3dyaXRlcl90IDogdCBUeXBlX2NsYXNzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogdCBUeXBlX2NsYXNzLnJlYWRlclxuICB2YWwgYmluX3QgOiB0IFR5cGVfY2xhc3MudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS50XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy50XG5lbmRcblxubW9kdWxlIE1pbmltYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gICAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgZW5kXG5lbmRcbiIsIigqIFV0aWxzOiB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdXNlciBjb252ZW5pZW5jZSAqKVxuXG5vcGVuIENvbW1vblxub3BlbiBTaXplXG5vcGVuIFR5cGVfY2xhc3NcbmluY2x1ZGUgVXRpbHNfaW50ZlxuXG5sZXQgc2l6ZV9oZWFkZXJfbGVuZ3RoID0gOFxubGV0IGJpbl93cml0ZV9zaXplX2hlYWRlciA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXRcbmxldCBiaW5fcmVhZF9zaXplX2hlYWRlciA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0XG5cbmxldCBiaW5fZHVtcCA/KGhlYWRlciA9IGZhbHNlKSB3cml0ZXIgdiA9XG4gIGxldCBidWYsIHBvcywgcG9zX2xlbiA9XG4gICAgbGV0IHZfbGVuID0gd3JpdGVyLnNpemUgdiBpblxuICAgIGlmIGhlYWRlclxuICAgIHRoZW4gKFxuICAgICAgbGV0IHRvdF9sZW4gPSB2X2xlbiArIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdG90X2xlbiBpblxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvczowIHZfbGVuIGluXG4gICAgICBidWYsIHBvcywgcG9zICsgdl9sZW4pXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB2X2xlbiBpblxuICAgICAgYnVmLCAwLCB2X2xlbilcbiAgaW5cbiAgbGV0IHBvcyA9IHdyaXRlci53cml0ZSBidWYgfnBvcyB2IGluXG4gIGlmIHBvcyA9IHBvc19sZW5cbiAgdGhlbiBidWZcbiAgZWxzZSBmYWlsd2l0aCBcIkJpbl9wcm90LlV0aWxzLmJpbl9kdW1wOiBzaXplIGNoYW5nZWQgZHVyaW5nIHdyaXRpbmdcIlxuOztcblxuKCogUmVhZGluZyBmcm9tIHN0cmVhbXMgKilcblxubGV0IGJpbl9yZWFkX3N0cmVhbSA/bWF4X3NpemUgfnJlYWQgcmVhZGVyID1cbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIHJlYWQgYnVmIH5wb3M6MCB+bGVuOnNpemVfaGVhZGVyX2xlbmd0aDtcbiAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICBsZXQgbGVuID0gYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gIG1hdGNoIG1heF9zaXplIHdpdGhcbiAgfCBTb21lIG1heF9zaXplIHdoZW4gbGVuID4gbWF4X3NpemUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogc2l6ZSBleGNlZWRzIG1heF9zaXplOiAlZCA+ICVkXCJcbiAgICAgICAgIGxlblxuICAgICAgICAgbWF4X3NpemUpXG4gIHwgXyAtPlxuICAgIGxldCBidWYgPSBpZiBsZW4gPiBzaXplX2hlYWRlcl9sZW5ndGggdGhlbiBjcmVhdGVfYnVmIGxlbiBlbHNlIGJ1ZiBpblxuICAgIHJlYWQgYnVmIH5wb3M6MCB+bGVuO1xuICAgIHBvc19yZWYgOj0gMDtcbiAgICBsZXQgcmVzID0gcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgaWYgIXBvc19yZWYgPSBsZW5cbiAgICB0aGVuIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG1zZyA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHByb3RvY29sIGxpZWQgYWJvdXQgbGVuZ3RoIG9mIHZhbHVlOiBleHBlY3RlZCBcXFxuICAgICAgICAgICAlZCwgcmVjZWl2ZWQgJWRcIlxuICAgICAgICAgIGxlblxuICAgICAgICAgICFwb3NfcmVmXG4gICAgICBpblxuICAgICAgZmFpbHdpdGggbXNnKVxuOztcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbm1vZHVsZSBPZl9taW5pbWFsIChTIDogQmluYWJsZS5NaW5pbWFsLlMpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbmxldCBtYXliZV9hbm5vdGF0ZV9zaGFwZSBtYXliZV91dWlkIHNoYXBlID1cbiAgbWF0Y2ggbWF5YmVfdXVpZCB3aXRoXG4gIHwgTm9uZSAtPiBzaGFwZVxuICB8IFNvbWUgdXVpZCAtPiBTaGFwZS5hbm5vdGF0ZSB1dWlkIHNoYXBlXG47O1xuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE9mX21pbmltYWwgKHN0cnVjdFxuICAgICAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICAgICAgdHlwZSB0ID0gUy50XG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IEIuYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBCLmJpbl9zaXplX3QgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPSBCLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9IFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZilcbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbiA9IFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbilcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbClcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbCB0ID0gQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsIChTLnRvX2JpbmFibGUgdClcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMilcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTIuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMyA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMylcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMy5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhfdXVpZF9zcGVjKSA9IE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubGV0IHdpdGhfbW9kdWxlX25hbWUgZiB+bW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZSA9XG4gIG1hdGNoIG1vZHVsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IGYgZnVuY3Rpb25fbmFtZVxuICB8IFNvbWUgbW9kdWxlX25hbWUgLT4gUHJpbnRmLmtzcHJpbnRmIGYgXCIlcy4lc1wiIG1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWVcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiA9IHdpdGhfbW9kdWxlX25hbWUgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb25cblxubGV0IHJhaXNlX3JlYWRfdG9vX211Y2ggPVxuICB3aXRoX21vZHVsZV9uYW1lXG4gICAgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiB0cmllZCB0byByZWFkIG1vcmUgZWxlbWVudHMgdGhhbiBhdmFpbGFibGVcIilcbjs7XG5cbmxldCByYWlzZV9yZWFkX25vdF9lbm91Z2ggPVxuICB3aXRoX21vZHVsZV9uYW1lIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogZGlkbid0IHJlYWQgYWxsIGVsZW1lbnRzXCIpXG47O1xuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcIjY1OTIzNzFhLTQ5OTQtMTFlNi05MjNhLTc3NDhlNDE4Mjc2NFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTFfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJhYzhhOWZmNC00OTk0LTExZTYtOWExYi05ZmI0ZTkzM2JkOWRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgX24gLT4gX19iaW5fcmVhZF90X18gYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBfbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTJfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYjRlNTRhZDItNDk5NC0xMWU2LWI4ZGYtODdjMjk5N2Y5ZjUyXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTMgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiB0MyA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImYyMTEyZWRhLWU3ZDctMTFlNi1iYjM2LTA3MmU5Y2UxNTlkYlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiB0MyBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9iaW5fcmVhZF9jIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuIiwiKCoqXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIGRlZmF1bHQgY29udmVydGVycyBmb3IgdGhlIHR5cGVzIGRlZmluZWQgaW4gdGhlIE9DYW1sXG4gICBzdGFuZGFyZCBsaWJyYXJ5LlxuKilcblxuaW5jbHVkZSBTaXplXG5cbmxldCBiaW5fdW5pdCA9IFR5cGVfY2xhc3MuYmluX3VuaXRcbmxldCBiaW5fc2hhcGVfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3VuaXRcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdW5pdFxubGV0IGJpbl93cml0ZV91bml0ID0gV3JpdGUuYmluX3dyaXRlX3VuaXRcbmxldCBiaW5fcmVhZGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfdW5pdFxubGV0IGJpbl9yZWFkX3VuaXQgPSBSZWFkLmJpbl9yZWFkX3VuaXRcblxubGV0IF9fYmluX3JlYWRfdW5pdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9ib29sXG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ib29sXG5sZXQgYmluX3dyaXRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Jvb2xcbmxldCBiaW5fd3JpdGVfYm9vbCA9IFdyaXRlLmJpbl93cml0ZV9ib29sXG5sZXQgYmluX3JlYWRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Jvb2xcbmxldCBiaW5fcmVhZF9ib29sID0gUmVhZC5iaW5fcmVhZF9ib29sXG5cbmxldCBfX2Jpbl9yZWFkX2Jvb2xfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zdHJpbmdcbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfc3RyaW5nXG5sZXQgYmluX3dyaXRlX3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmdcbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmdcbmxldCBiaW5fcmVhZF9zdHJpbmcgPSBSZWFkLmJpbl9yZWFkX3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9zdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fYnl0ZXNcbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ieXRlc1xubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYnl0ZXNcbmxldCBiaW5fd3JpdGVfYnl0ZXMgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXNcbmxldCBiaW5fcmVhZGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2J5dGVzXG5sZXQgYmluX3JlYWRfYnl0ZXMgPSBSZWFkLmJpbl9yZWFkX2J5dGVzXG5cbmxldCBfX2Jpbl9yZWFkX2J5dGVzX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9jaGFyXG5sZXQgYmluX3NoYXBlX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9jaGFyXG5sZXQgYmluX3dyaXRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2NoYXJcbmxldCBiaW5fd3JpdGVfY2hhciA9IFdyaXRlLmJpbl93cml0ZV9jaGFyXG5sZXQgYmluX3JlYWRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2NoYXJcbmxldCBiaW5fcmVhZF9jaGFyID0gUmVhZC5iaW5fcmVhZF9jaGFyXG5cbmxldCBfX2Jpbl9yZWFkX2NoYXJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9pbnRcbmxldCBiaW5fc2hhcGVfaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50XG5sZXQgYmluX3dyaXRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50XG5sZXQgYmluX3dyaXRlX2ludCA9IFdyaXRlLmJpbl93cml0ZV9pbnRcbmxldCBiaW5fcmVhZGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnRcbmxldCBiaW5fcmVhZF9pbnQgPSBSZWFkLmJpbl9yZWFkX2ludFxubGV0IF9fYmluX3JlYWRfaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0XG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0XG5sZXQgYmluX3dyaXRlX2Zsb2F0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0XG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdFxubGV0IGJpbl9yZWFkX2Zsb2F0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRhcnJheVxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheVxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdGFycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50MzIgPSBUeXBlX2NsYXNzLmJpbl9pbnQzMlxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDMyXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQzMlxubGV0IGJpbl93cml0ZV9pbnQzMiA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMlxubGV0IGJpbl9yZWFkZXJfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50MzJcbmxldCBiaW5fcmVhZF9pbnQzMiA9IFJlYWQuYmluX3JlYWRfaW50MzJcblxubGV0IF9fYmluX3JlYWRfaW50MzJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50NjQgPSBUeXBlX2NsYXNzLmJpbl9pbnQ2NFxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDY0XG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQ2NFxubGV0IGJpbl93cml0ZV9pbnQ2NCA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NFxubGV0IGJpbl9yZWFkZXJfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50NjRcbmxldCBiaW5fcmVhZF9pbnQ2NCA9IFJlYWQuYmluX3JlYWRfaW50NjRcblxubGV0IF9fYmluX3JlYWRfaW50NjRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fbmF0aXZlaW50XG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX25hdGl2ZWludFxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdGl2ZWludFxubGV0IGJpbl93cml0ZV9uYXRpdmVpbnQgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRfbmF0aXZlaW50ID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnRcblxubGV0IF9fYmluX3JlYWRfbmF0aXZlaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWYgPSBUeXBlX2NsYXNzLmJpbl9yZWZcbmxldCBiaW5fc2hhcGVfcmVmID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfcmVmXG5sZXQgYmluX3dyaXRlcl9yZWYgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfcmVmXG5sZXQgYmluX3dyaXRlX3JlZiA9IFdyaXRlLmJpbl93cml0ZV9yZWZcbmxldCBiaW5fcmVhZGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9yZWZcbmxldCBiaW5fcmVhZF9yZWYgPSBSZWFkLmJpbl9yZWFkX3JlZlxuXG5sZXQgX19iaW5fcmVhZF9yZWZfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGF6eVxubGV0IGJpbl93cml0ZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eV90ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9sYXp5XG5sZXQgYmluX3JlYWRfbGF6eV90ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9sYXp5XG5sZXQgYmluX3NoYXBlX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eSA9IFdyaXRlLmJpbl93cml0ZV9sYXp5XG5sZXQgYmluX3JlYWRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9vcHRpb25cbmxldCBiaW5fc2hhcGVfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfb3B0aW9uXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfb3B0aW9uXG5sZXQgYmluX3dyaXRlX29wdGlvbiA9IFdyaXRlLmJpbl93cml0ZV9vcHRpb25cbmxldCBiaW5fcmVhZGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9vcHRpb25cbmxldCBiaW5fcmVhZF9vcHRpb24gPSBSZWFkLmJpbl9yZWFkX29wdGlvblxuXG5sZXQgX19iaW5fcmVhZF9vcHRpb25fXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9saXN0XG5sZXQgYmluX3NoYXBlX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9saXN0XG5sZXQgYmluX3dyaXRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xpc3RcbmxldCBiaW5fd3JpdGVfbGlzdCA9IFdyaXRlLmJpbl93cml0ZV9saXN0XG5sZXQgYmluX3JlYWRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xpc3RcbmxldCBiaW5fcmVhZF9saXN0ID0gUmVhZC5iaW5fcmVhZF9saXN0XG5cbmxldCBfX2Jpbl9yZWFkX2xpc3RfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX2FycmF5XG5sZXQgYmluX3NoYXBlX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYXJyYXlcbmxldCBiaW5fd3JpdGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2FycmF5XG5sZXQgYmluX3dyaXRlX2FycmF5ID0gV3JpdGUuYmluX3dyaXRlX2FycmF5XG5sZXQgYmluX3JlYWRlcl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9hcnJheVxubGV0IGJpbl9yZWFkX2FycmF5ID0gUmVhZC5iaW5fcmVhZF9hcnJheVxuXG5sZXQgX19iaW5fcmVhZF9hcnJheV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5faGFzaHRibFxubGV0IGJpbl9zaGFwZV9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaGFzaHRibFxubGV0IGJpbl93cml0ZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9oYXNodGJsXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgPSBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibFxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9oYXNodGJsXG5sZXQgYmluX3JlYWRfaGFzaHRibCA9IFJlYWQuYmluX3JlYWRfaGFzaHRibFxuXG5sZXQgX19iaW5fcmVhZF9oYXNodGJsX18gX2YgX2cgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fYmlnc3RyaW5nXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmdcblxubGV0IF9fYmluX3JlYWRfYmlnc3RyaW5nX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9tYXRcbmxldCBiaW5fc2hhcGVfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX3dyaXRlcl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbWF0XG5sZXQgYmluX3dyaXRlX21hdCA9IFdyaXRlLmJpbl93cml0ZV9tYXRcbmxldCBiaW5fcmVhZGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9tYXRcbmxldCBiaW5fcmVhZF9tYXQgPSBSZWFkLmJpbl9yZWFkX21hdFxubGV0IF9fYmluX3JlYWRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl92ZWMgPSBUeXBlX2NsYXNzLmJpbl92ZWNcbmxldCBiaW5fc2hhcGVfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3dyaXRlcl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdmVjXG5sZXQgYmluX3dyaXRlX3ZlYyA9IFdyaXRlLmJpbl93cml0ZV92ZWNcbmxldCBiaW5fcmVhZGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl92ZWNcbmxldCBiaW5fcmVhZF92ZWMgPSBSZWFkLmJpbl9yZWFkX3ZlY1xubGV0IF9fYmluX3JlYWRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiAhcG9zX3JlZlxuOztcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBNZDVfbGliXG5cbiAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgU2hhcGUuYmFzZXR5cGUgKFNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZjZiZGNkZDAtOWY3NS0xMWU2LTlhN2UtZDMwMjA0MjhlZmVkXCIpIFtdXG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV90ID0gU2l6ZS5iaW5fc2l6ZV9tZDVcbiAgICBsZXQgYmluX3dyaXRlX3QgPSBXcml0ZS5iaW5fd3JpdGVfbWQ1XG4gICAgbGV0IGJpbl9yZWFkX3QgPSBSZWFkLmJpbl9yZWFkX21kNVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZkaWdlc3QgPVxuICAgICAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIlNoYXBlLk1kNS50XCIgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICgqIHdlIGFzc3VtZSB0aGlzIHR5cGUgdG8gaGF2ZSBhIHN0YWJsZSBmb3JtYXQgKilcbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuIiwib3BlbiBDb21tb25cblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTI1NTdlLTQ5MGEtMTFlNi05OGFjLTRiODk1M2Q1MjVmZVwiKSBbIHQgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGEgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBiaW5fc2l6ZV9hIGFcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgYSA9XG4gICAgbGV0IHN0YXJ0X2EgPSBwb3MgKyBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICBsZXQgZW5kX2EgPSBiaW5fd3JpdGVfYSBidWYgfnBvczpzdGFydF9hIGEgaW5cbiAgICBsZXQgc2l6ZSA9IGVuZF9hIC0gc3RhcnRfYSBpblxuICAgIGxldCB3cml0dGVuID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICBhc3NlcnQgKHdyaXR0ZW4gPSBzdGFydF9hKTtcbiAgICBlbmRfYVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgZXhwZWN0ZWRfc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBzdGFydF9hID0gIXBvc19yZWYgaW5cbiAgICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGVuZF9hID0gIXBvc19yZWYgaW5cbiAgICBpZiBlbmRfYSAtIHN0YXJ0X2EgPD4gZXhwZWN0ZWRfc2l6ZVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICBcIkJpbl9wcm90LkJsb2IuYmluX3JlYWRfdDogc2l6ZSAoJWQpIDw+IGV4cGVjdGVkICglZClcIlxuICAgICAgICAgICAoZW5kX2EgLSBzdGFydF9hKVxuICAgICAgICAgICBleHBlY3RlZF9zaXplKTtcbiAgICBhXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi50XCIgIXBvc19yZWZcbiAgOztcbmVuZFxuXG50eXBlICdhIGlkID0gJ2FcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gVFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgb2ZfYmluYWJsZSB0ID0gdFxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0XG4gIGVuZClcblxubW9kdWxlIE9wYXF1ZSA9IHN0cnVjdFxuICAoKiBbQmlnc3RyaW5nXSBhbmQgW1N0cmluZ10gc2hhcmUgW2Jpbl9zaGFwZV90XSBiZWNhdXNlIHRoZXkgaGF2ZSBleGFjdGx5IHRoZSBzYW1lXG4gICAgIHNlcmlhbGl6YXRpb24gZm9ybWF0IGFuZCB0aGV5IGRlbm90ZSB0aGUgc2FtZSB2YWx1ZXMuXG5cbiAgICAgSW4gZmFjdCBhbG1vc3QgY2VydGFpbmx5IFtCbG9iLnRdIGl0c2VsZiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiaW5fc2hhcGVfdCBhcyB3ZWxsLiAqKVxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWExZjc2ZS00OTBhLTExZTYtODZhOS01YmVmNTg1ZjI2MDJcIikgW10pXG4gIDs7XG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgICgqIFtidWZdIGlzIHRoZSBiaW4taW8gZGF0YSBleGNsdWRpbmcgdGhlIHNpemUgaGVhZGVyLiBXaGVuIChkZS0pc2VyaWFsaXplZCwgdGhlIHNpemVcbiAgICAgICBoZWFkZXIgaXMgaW5jbHVkZWQuICopXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJ1ZlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJ1Zl9sZW4gdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gYnVmX2xlbiB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3Mgc2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGVfYnVmIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6IXBvc19yZWYgfmRzdDp0IH5kc3RfcG9zOjAgc2l6ZTtcbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IHRvX29wYXF1ZSBibG9iIGJpbl93cml0ZXIgPSBVdGlscy5iaW5fZHVtcCBiaW5fd3JpdGVyIGJsb2JcbiAgICBsZXQgb2Zfb3BhcXVlX2V4biAodCA6IHQpIGJpbl9yZWFkZXIgPSBiaW5fcmVhZGVyLlR5cGVfY2xhc3MucmVhZCB0IH5wb3NfcmVmOihyZWYgMClcblxuICAgICgqIEJpZ3N0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IGJ1ZiAtPiBidWYgLT4gaW50KVxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIFBweF9zZXhwX2NvbnZfbGliLlNleHAuQXRvbSAob2Zfb3BhcXVlX2V4biB0IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBTdHJpbmcubGVuZ3RoIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IH5zcmNfcG9zOjAgYnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICBibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgbGVuID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvczohcG9zX3JlZiB+bGVuIGluXG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBsZW47XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IGxlbmd0aCB0ID0gU3RyaW5nLmxlbmd0aCB0XG5cbiAgICBsZXQgdG9fb3BhcXVlIH5idWYgdiBiaW5fd3JpdGVyX3YgOiB0ID1cbiAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICBsZXQgbGVuID0gYmluX3dyaXRlcl92LlR5cGVfY2xhc3Mud3JpdGUgYnVmIH5wb3MgdiBpblxuICAgICAgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuXG4gICAgOztcblxuICAgIGxldCBvZl9vcGFxdWVfZXhuIH5idWYgKHQgOiB0KSBiaW5fcmVhZGVyX3YgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IGJ1ZiB+bGVuO1xuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlcyA9IGJpbl9yZWFkZXJfdi5UeXBlX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICBpZiAhcG9zX3JlZiA8PiBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICBcIk9wYXF1ZSBibG9iIGhhcyAlZCBieXRlcyBidXQgW29mX29wYXF1ZV9leG5dIHJlYWQgJWRcIlxuICAgICAgICAgICAgbGVuXG4gICAgICAgICAgICAhcG9zX3JlZlxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBlcnJvcilcbiAgICAgIGVsc2UgcmVzXG4gICAgOztcblxuICAgICgqIFN0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICAgIGxldCBzZXhwX29mX3QgPSBQcHhfc2V4cF9jb252X2xpYi5Db252LnNleHBfb2Zfc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJZ25vcmVkID0gc3RydWN0XG4gICgqIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpZ25vcmVkIHZhbHVlIGlzIGp1c3QgdGhlIHNpemUgb2YgdGhlIHZhbHVlIGl0IHdhcyBjcmVhdGVkXG4gICAgIGZyb20gKGkuZS4sIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3ZXJlIGlnbm9yZWQgZnJvbSB0aGUgYnVmZmVyIHdlIHdlcmUgcmVhZGluZ1xuICAgICAtLSB3ZSBleGNsdWRlIHRoZSA4IGJ5dGUgc2l6ZSBoZWFkZXIgZnJvbSB3aGljaCB0aGUgc2l6ZSB3YXMgcmVhZCkuICopXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBiaW5fc2l6ZV90IHNpemUgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBzaXplXG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgIHNpemVcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5JZ25vcmVkLnRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IFR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgcHJlX3Rlc3RfaG9vayA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbmxldCBwcmVfdGVzdF9ob29rID0gaWdub3JlXG4iLCJbJSVpbXBvcnQgXCJjb25maWcuaFwiXVxuXG5vcGVuISBCYXNlXG5cblslJWlmZGVmIEpTQ19BUkNIX1NJWFRZRk9VUl1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcbltAQG5vYWxsb2NdXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5cblslJWVuZGlmXVxuWyUlaWZkZWYgSlNDX1BPU0lYX1RJTUVSU11cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgZmFpbGVkXCJcblxuWyUlZWxzZV1cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiZ2V0dGltZW9mZGF5IGZhaWxlZFwiXG5cblslJWVuZGlmXVxuXG5sZXQgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSA9XG4gIGxldCB0ID0gbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvICgpIGluXG4gIGlmIEludDYzLiggPD4gKSB0IEludDYzLnplcm8gdGhlbiB0IGVsc2UgZ2V0dGltZV9mYWlsZWQgKClcbjs7XG4iLCJtb2R1bGUgVGVzdF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1Y2Nlc3NcbiAgICB8IEZhaWx1cmVcbiAgICB8IEVycm9yXG5cbiAgbGV0IHRvX2V4aXRfY29kZSA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IDBcbiAgICB8IEZhaWx1cmUgLT4gMlxuICAgIHwgRXJyb3IgLT4gMVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiBcInN1Y2Nlc3NcIlxuICAgIHwgRmFpbHVyZSAtPiBcImZhaWx1cmVcIlxuICAgIHwgRXJyb3IgLT4gXCJlcnJvclwiXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmUgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBTdWNjZXNzLCBTdWNjZXNzIC0+IFN1Y2Nlc3NcbiAgICB8IEVycm9yLCBfIHwgXywgRXJyb3IgLT4gRXJyb3JcbiAgICB8IEZhaWx1cmUsIF8gfCBfLCBGYWlsdXJlIC0+IEZhaWx1cmVcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGwgdHMgPSBMaXN0LmZvbGRfbGVmdCBjb21iaW5lIFN1Y2Nlc3MgdHNcbmVuZFxuXG5sZXQgcGFyc2VfYXJndiBhcmd2IGwgZiBtc2cgPVxuICB0cnkgQXJnLnBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgZXhpdCAxXG4gIHwgQXJnLkhlbHAgbXNnIC0+XG4gICAgUHJpbnRmLnByaW50ZiBcIiVzXCIgbXNnO1xuICAgIGV4aXQgMFxuOztcblxudHlwZSBkZXNjciA9IHN0cmluZ1xuXG5sZXQgdGVzdF9tb2R1bGVzX3JhbiA9IHJlZiAwXG5sZXQgdGVzdF9tb2R1bGVzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgdGVzdHNfcmFuID0gcmVmIDBcbmxldCB0ZXN0c19mYWlsZWQgPSByZWYgMFxubGV0IGR5bmFtaWNfbGliIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuXG50eXBlIGZpbGVuYW1lID0gc3RyaW5nXG50eXBlIGxpbmVfbnVtYmVyID0gaW50XG50eXBlIHN0YXJ0X3BvcyA9IGludFxudHlwZSBlbmRfcG9zID0gaW50XG50eXBlIGNvbmZpZyA9IChtb2R1bGUgSW5saW5lX3Rlc3RfY29uZmlnLlMpXG5cbnR5cGUgJ2EgdGVzdF9mdW5jdGlvbl9hcmdzID1cbiAgY29uZmlnOmNvbmZpZ1xuICAtPiBkZXNjcjpkZXNjciBMYXp5LnRcbiAgLT4gdGFnczpzdHJpbmcgbGlzdFxuICAtPiBmaWxlbmFtZTpmaWxlbmFtZVxuICAtPiBsaW5lX251bWJlcjpsaW5lX251bWJlclxuICAtPiBzdGFydF9wb3M6c3RhcnRfcG9zXG4gIC0+IGVuZF9wb3M6ZW5kX3Bvc1xuICAtPiAnYVxuXG5tb2R1bGUgVGFnX3ByZWRpY2F0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcmVxdWlyZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgOyBkcm9wcGVkX3RhZ3MgOiBzdHJpbmcgbGlzdFxuICAgIH1cblxuICBsZXQgaW5pdGlhbCA9IHsgcmVxdWlyZWRfdGFncyA9IFtdOyBkcm9wcGVkX3RhZ3MgPSBbIFwiZGlzYWJsZWRcIiBdIH1cblxuICBsZXQgZHJvcCB0IHRhZyA9XG4gICAgeyBkcm9wcGVkX3RhZ3MgPSB0YWcgOjogdC5kcm9wcGVkX3RhZ3NcbiAgICA7IHJlcXVpcmVkX3RhZ3MgPSBMaXN0LmZpbHRlciAoKCA8PiApIHRhZykgdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXF1aXJlIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IExpc3QuZmlsdGVyICgoIDw+ICkgdGFnKSB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IHRhZyA6OiB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGVudGlyZV9tb2R1bGVfZGlzYWJsZWQgdCB+cGFydGlhbF90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG4gIDs7XG5cbiAgbGV0IGRpc2FibGVkIHQgfmNvbXBsZXRlX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biByZXEgLT4gbm90IChMaXN0Lm1lbSByZXEgdGFncykpIHQucmVxdWlyZWRfdGFnc1xuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG4gIDs7XG5lbmRcblxudHlwZSB3aGljaF90ZXN0cyA9XG4gIHsgbGlibmFtZSA6IHN0cmluZ1xuICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA6IChmaWxlbmFtZSAqIGxpbmVfbnVtYmVyIG9wdGlvbiAqIGJvb2wgcmVmKSBsaXN0XG4gIDsgbmFtZV9maWx0ZXIgOiBzdHJpbmcgbGlzdFxuICA7IHdoaWNoX3RhZ3MgOiBUYWdfcHJlZGljYXRlLnRcbiAgfVxuXG50eXBlIHRlc3RfbW9kZSA9XG4gIHsgd2hpY2hfdGVzdHMgOiB3aGljaF90ZXN0c1xuICA7IHdoYXRfdG9fZG8gOiBbIGBSdW5fcGFydGl0aW9uIG9mIHN0cmluZyBvcHRpb24gfCBgTGlzdF9wYXJ0aXRpb25zIF1cbiAgfVxuXG5tb2R1bGUgQWN0aW9uIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgWyBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICAgIF1cblxuICB2YWwgZ2V0IDogdW5pdCAtPiB0XG4gIHZhbCBzZXQgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgICBdXG5cbiAgbGV0IGFjdGlvbiA6IHQgcmVmID0gcmVmIGBJZ25vcmVcblxuICBsZXQgZm9yY2VfZHJvcCA9XG4gICAgdHJ5XG4gICAgICBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCIgOiBzdHJpbmcpO1xuICAgICAgdHJ1ZVxuICAgIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgICgqIFRoaXMgaXMgdXNlZnVsIHdoZW4gY29tcGlsaW5nIHRvIGphdmFzY3JpcHQuXG4gICAgICAgSnNfb2Zfb2NhbWwgY2FuIHN0YXRpY2FsbHkgZXZhbHVhdGUgW1N5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCJdXG4gICAgICAgYW5kIGlubGluZSB0aGUgcmVzdWx0IChbYElnbm9yZV0pIHdoZW5ldmVyIFtnZXQgKCldIGlzIGNhbGxlZC5cbiAgICAgICBVbml0IHRlc3RzIGNhbiB0aGVuIGJlIHRyZWF0ZWQgYXMgZGVhZGNvZGUgc2luY2UgdGhlIGFyZ3VtZW50IFtmXSBvZiB0aGUgW3Rlc3RdXG4gICAgICAgZnVuY3Rpb24gYmVsb3cgaXMgbmV2ZXIgdXNlZC4gKilcbiAgICBpZiBmb3JjZV9kcm9wIHRoZW4gYElnbm9yZSBlbHNlICFhY3Rpb25cbiAgOztcblxuICBsZXQgc2V0IHYgPSBhY3Rpb24gOj0gdlxuZW5kXG5cbm1vZHVsZSBQYXJ0aXRpb24gOiBzaWdcbiAgdmFsIGZvdW5kX3Rlc3QgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHNldF9jdXJyZW50IDogc3RyaW5nIC0+IHVuaXRcbiAgdmFsIGlzX2N1cnJlbnQgOiBzdHJpbmcgb3B0aW9uIC0+IGJvb2xcbiAgdmFsIGFsbCA6IHVuaXQgLT4gc3RyaW5nIGxpc3RcbmVuZCA9IHN0cnVjdFxuICBsZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgMjNcbiAgbGV0IGN1cnJlbnQgPSByZWYgXCJcIlxuICBsZXQgc2V0X2N1cnJlbnQgeCA9IGN1cnJlbnQgOj0geFxuXG4gIGxldCBmb3VuZF90ZXN0ICgpID1cbiAgICBpZiAhY3VycmVudCA8PiBcIlwiICYmIG5vdCAoSGFzaHRibC5tZW0gYWxsICFjdXJyZW50KSB0aGVuIEhhc2h0YmwuYWRkIGFsbCAhY3VycmVudCAoKVxuICA7O1xuXG4gIGxldCBpc19jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBwIC0+IHAgPSAhY3VycmVudFxuICA7O1xuXG4gIGxldCBhbGwgKCkgPSBMaXN0LnNvcnQgU3RyaW5nLmNvbXBhcmUgKEhhc2h0YmwuZm9sZCAoZnVuIGsgKCkgYWNjIC0+IGsgOjogYWNjKSBhbGwgW10pXG5lbmRcblxubW9kdWxlIE1vZHVsZV9jb250ZXh0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBvbmVfbW9kdWxlID1cbiAgICAgIHsgZGVzY3IgOiBzdHJpbmdcbiAgICAgIDsgdGFncyA6IHN0cmluZyBsaXN0XG4gICAgICB9XG5cbiAgICB0eXBlIHQgPSBvbmVfbW9kdWxlIGxpc3RcblxuICAgIGxldCBkZXNjciB0ID0gTGlzdC5tYXAgKGZ1biBtIC0+IG0uZGVzY3IpIHRcbiAgICBsZXQgdGFncyB0ID0gTGlzdC5jb25jYXQgKExpc3QubWFwIChmdW4gbSAtPiBtLnRhZ3MpIHQpXG4gIGVuZFxuXG4gIGxldCBjdXJyZW50IDogVC50IHJlZiA9IHJlZiBbXVxuXG4gIGxldCB3aXRoXyB+ZGVzY3IgfnRhZ3MgZiA9XG4gICAgbGV0IHByZXYgPSAhY3VycmVudCBpblxuICAgIGN1cnJlbnQgOj0geyBULmRlc2NyOyB0YWdzIH0gOjogcHJldjtcbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZiAoKSBpblxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgeFxuICAgIHdpdGhcbiAgICB8IGUgLT5cbiAgICAgIGN1cnJlbnQgOj0gcHJldjtcbiAgICAgIHJhaXNlIGVcbiAgOztcblxuICBsZXQgY3VycmVudF9kZXNjciAoKSA9IFQuZGVzY3IgIWN1cnJlbnRcbiAgbGV0IGN1cnJlbnRfdGFncyAoKSA9IFQudGFncyAhY3VycmVudFxuZW5kXG5cbmxldCB2ZXJib3NlID0gcmVmIGZhbHNlXG5sZXQgc3RyaWN0ID0gcmVmIGZhbHNlXG5sZXQgc2hvd19jb3VudHMgPSByZWYgZmFsc2VcbmxldCBsaXN0X3Rlc3RfbmFtZXMgPSByZWYgZmFsc2VcbmxldCBkZWxheWVkX2Vycm9ycyA9IHJlZiBbXVxubGV0IHN0b3Bfb25fZXJyb3IgPSByZWYgZmFsc2VcbmxldCBsb2cgPSByZWYgTm9uZVxubGV0IHRpbWVfc2VjID0gcmVmIDAuXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBpbl9wbGFjZSA9IHJlZiBmYWxzZVxubGV0IGRpZmZfY29tbWFuZCA9IHJlZiBOb25lXG5sZXQgc291cmNlX3RyZWVfcm9vdCA9IHJlZiBOb25lXG5sZXQgZGlmZl9wYXRoX3ByZWZpeCA9IHJlZiBOb25lXG5cbmxldCBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZmlsZW5hbWUgbGluZSBzdGFydF9wb3MgZW5kX3BvcyA9XG4gIGxldCAobGF6eSBkZXNjcikgPSBkZXNjciBpblxuICBQcmludGYuc3ByaW50ZlxuICAgIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZCVzXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydF9wb3NcbiAgICBlbmRfcG9zXG4gICAgKGlmIGRlc2NyID0gXCJcIiB0aGVuIFwiXCIgZWxzZSBcIjogXCIgXiBkZXNjcilcbjs7XG5cbmxldCBwYXJzZV9kZXNjciBzdHIgPVxuICB0cnlcbiAgICBTb21lXG4gICAgICAoU2NhbmYuc3NjYW5mXG4gICAgICAgICBzdHJcbiAgICAgICAgIFwiIEZpbGUgJVMgLCBsaW5lICVkICwgY2hhcmFjdGVycyAlZCAtICVkICUhXCJcbiAgICAgICAgIChmdW4gZmlsZSBsaW5lIF9zdGFydF9wb3MgX2VuZF9wb3MgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aFxuICB8IF8gLT5cbiAgICAodHJ5XG4gICAgICAgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICwgbGluZSAlZCAlIVwiIChmdW4gZmlsZSBsaW5lIC0+IGZpbGUsIFNvbWUgbGluZSkpXG4gICAgIHdpdGhcbiAgICAgfCBfIC0+XG4gICAgICAgKHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgJSFcIiAoZnVuIGZpbGUgLT4gZmlsZSwgTm9uZSkpIHdpdGhcbiAgICAgICAgfCBfIC0+IE5vbmUpKVxuOztcblxubGV0ICgpID1cbiAgaWYgQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5hbV90ZXN0aW5nXG4gIHRoZW4gKFxuICAgIG1hdGNoIEFycmF5LnRvX2xpc3QgU3lzLmFyZ3Ygd2l0aFxuICAgIHwgbmFtZSA6OiBcImlubGluZS10ZXN0LXJ1bm5lclwiIDo6IGxpYiA6OiByZXN0IC0+XG4gICAgICAoKiB3aGVuIHdlIHNlZSB0aGlzIGFyZ3VtZW50LCB3ZSBzd2l0Y2ggdG8gdGVzdCBtb2RlICopXG4gICAgICBsZXQgdGVzdHMgPSByZWYgW10gaW5cbiAgICAgIGxldCBsaXN0X3BhcnRpdGlvbnMgPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBwYXJ0aXRpb24gPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHRhZ19wcmVkaWNhdGUgPSByZWYgVGFnX3ByZWRpY2F0ZS5pbml0aWFsIGluXG4gICAgICBsZXQgbmFtZV9maWx0ZXIgPSByZWYgW10gaW5cbiAgICAgIHBhcnNlX2FyZ3ZcbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgKG5hbWUgOjogcmVzdCkpXG4gICAgICAgIChBcmcuYWxpZ25cbiAgICAgICAgICAgWyAoIFwiLWxpc3QtdGVzdC1uYW1lc1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdFxuICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIGxpc3RfdGVzdF9uYW1lcyA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB2ZXJib3NlIDo9IHRydWUpXG4gICAgICAgICAgICAgLCBcIiBEbyBub3QgcnVuIHRlc3RzIGJ1dCBzaG93IHdoYXQgd291bGQgaGF2ZSBiZWVuIHJ1blwiIClcbiAgICAgICAgICAgOyAoIFwiLWxpc3QtcGFydGl0aW9uc1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdCAoZnVuICgpIC0+IGxpc3RfcGFydGl0aW9ucyA6PSB0cnVlKVxuICAgICAgICAgICAgICwgXCIgTGlzdHMgYWxsIHRoZSBwYXJ0aXRpb25zIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUgdGVzdCBvciB0ZXN0X21vZHVsZVwiIClcbiAgICAgICAgICAgOyAoIFwiLXBhcnRpdGlvblwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gaSAtPiBwYXJ0aXRpb24gOj0gU29tZSBpKVxuICAgICAgICAgICAgICwgXCIgT25seSBydW4gdGhlIHRlc3RzIGluIHRoZSBnaXZlbiBwYXJ0aXRpb25cIiApXG4gICAgICAgICAgIDsgXCItdmVyYm9zZVwiLCBBcmcuU2V0IHZlcmJvc2UsIFwiIFNob3cgdGhlIHRlc3RzIGFzIHRoZXkgcnVuXCJcbiAgICAgICAgICAgOyAoIFwiLXN0b3Atb24tZXJyb3JcIlxuICAgICAgICAgICAgICwgQXJnLlNldCBzdG9wX29uX2Vycm9yXG4gICAgICAgICAgICAgLCBcIiBSdW4gdGVzdHMgb25seSB1cCB0byB0aGUgZmlyc3QgZXJyb3IgKGRvZXNuJ3Qgd29yayBmb3IgZXhwZWN0IHRlc3RzKVwiIClcbiAgICAgICAgICAgOyBcIi1zdHJpY3RcIiwgQXJnLlNldCBzdHJpY3QsIFwiIEVuZCB3aXRoIGFuIGVycm9yIGlmIG5vIHRlc3RzIHdlcmUgcnVuXCJcbiAgICAgICAgICAgOyBcIi1zaG93LWNvdW50c1wiLCBBcmcuU2V0IHNob3dfY291bnRzLCBcIiBTaG93IHRoZSBudW1iZXIgb2YgdGVzdHMgcmFuXCJcbiAgICAgICAgICAgOyAoIFwiLWxvZ1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdFxuICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICh0cnkgU3lzLnJlbW92ZSBcImlubGluZV90ZXN0cy5sb2dcIiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICAgICAgICAgICAgICBsb2cgOj0gU29tZSAob3Blbl9vdXQgXCJpbmxpbmVfdGVzdHMubG9nXCIpKVxuICAgICAgICAgICAgICwgXCIgTG9nIHRoZSB0ZXN0cyBydW4gaW4gaW5saW5lX3Rlc3RzLmxvZ1wiIClcbiAgICAgICAgICAgOyAoIFwiLWRyb3AtdGFnXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5kcm9wICF0YWdfcHJlZGljYXRlIHMpXG4gICAgICAgICAgICAgLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyBub3QgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyBcXFxuICAgICAgICAgICAgICAgIC1yZXF1aXJlLXRhZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1yZXF1aXJlLXRhZ1wiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgICAgIChmdW4gcyAtPiB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUucmVxdWlyZSAhdGFnX3ByZWRpY2F0ZSBzKVxuICAgICAgICAgICAgICwgXCJ0YWcgT25seSBydW4gdGVzdHMgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyAtZHJvcC10YWcpXCIgKVxuICAgICAgICAgICA7ICggXCItbWF0Y2hpbmdcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gbmFtZV9maWx0ZXIgOj0gcyA6OiAhbmFtZV9maWx0ZXIpXG4gICAgICAgICAgICAgLCBcInN1YnN0cmluZyBPbmx5IHJ1biB0ZXN0cyB3aG9zZSBuYW1lcyBjb250YWluIHRoZSBnaXZlbiBzdWJzdHJpbmdcIiApXG4gICAgICAgICAgIDsgKCBcIi1vbmx5LXRlc3RcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZ1xuICAgICAgICAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lLCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGFyc2VfZGVzY3IgcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChmaWxlLCBpbmRleCkgLT4gZmlsZSwgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzICc6J1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJzonIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFN0cmluZy5zdWIgcyAwIGkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4X3N0cmluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnN1YiBzIChpICsgMSkgKFN0cmluZy5sZW5ndGggcyAtIGkgLSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGluZGV4X3N0cmluZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJndW1lbnQgJXMgZG9lc24ndCBmaXQgdGhlIGZvcm1hdCBmaWxlbmFtZVs6bGluZV9udW1iZXJdXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgU29tZSBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcywgTm9uZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICB0ZXN0cyA6PSAoZmlsZW5hbWUsIGluZGV4LCByZWYgZmFsc2UpIDo6ICF0ZXN0cylcbiAgICAgICAgICAgICAsIFwibG9jYXRpb24gUnVuIG9ubHkgdGhlIHRlc3RzIHNwZWNpZmllZCBieSBhbGwgdGhlIC1vbmx5LXRlc3Qgb3B0aW9ucy5cXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25zIGNhbiBiZSBvbmUgb2YgdGhlc2UgZm9ybXM6XFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbFxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWw6bGluZV9udW1iZXJcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIlxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjMsIGNoYXJhY3RlcnMgMi0zXCIgKVxuICAgICAgICAgICA7IFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIFN1bW1hcml6ZSB0ZXN0cyB3aXRob3V0IHVzaW5nIGNvbG9yXCJcbiAgICAgICAgICAgOyBcIi1pbi1wbGFjZVwiLCBBcmcuU2V0IGluX3BsYWNlLCBcIiBVcGRhdGUgZXhwZWN0IHRlc3RzIGluIHBsYWNlXCJcbiAgICAgICAgICAgOyAoIFwiLWRpZmYtY21kXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpXG4gICAgICAgICAgICAgLCBcIiBEaWZmIGNvbW1hbmQgZm9yIHRlc3RzIHRoYXQgcmVxdWlyZSBkaWZmaW5nICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKVxuICAgICAgICAgICA7ICggXCItc291cmNlLXRyZWUtcm9vdFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzb3VyY2VfdHJlZV9yb290IDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlXCIgKVxuICAgICAgICAgICA7ICggXCItZGlmZi1wYXRoLXByZWZpeFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX3BhdGhfcHJlZml4IDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIFByZWZpeCB0byBwcmVwZW5kIHRvIGZpbGVwYXRocyBpbiB0ZXN0IG91dHB1dFwiIClcbiAgICAgICAgICAgXSlcbiAgICAgICAgKGZ1biBhbm9uIC0+XG4gICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IHVuZXhwZWN0ZWQgYW5vbnltb3VzIGFyZ3VtZW50ICVzXFxuJSFcIiBuYW1lIGFub247XG4gICAgICAgICAgIGV4aXQgMSlcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgW2FyZ3NdXCIgbmFtZSBcImlubGluZS10ZXN0LXJ1bm5lclwiIGxpYik7XG4gICAgICBBY3Rpb24uc2V0XG4gICAgICAgIChgVGVzdF9tb2RlXG4gICAgICAgICAgIHsgd2hpY2hfdGVzdHMgPVxuICAgICAgICAgICAgICAgeyBsaWJuYW1lID0gbGliXG4gICAgICAgICAgICAgICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA9ICF0ZXN0c1xuICAgICAgICAgICAgICAgOyB3aGljaF90YWdzID0gIXRhZ19wcmVkaWNhdGVcbiAgICAgICAgICAgICAgIDsgbmFtZV9maWx0ZXIgPSAhbmFtZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgOyB3aGF0X3RvX2RvID1cbiAgICAgICAgICAgICAgIChpZiAhbGlzdF9wYXJ0aXRpb25zIHRoZW4gYExpc3RfcGFydGl0aW9ucyBlbHNlIGBSdW5fcGFydGl0aW9uICFwYXJ0aXRpb24pXG4gICAgICAgICAgIH0pXG4gICAgfCBfIC0+ICgpKVxuOztcblxubGV0IGFtX3Rlc3RfcnVubmVyID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYFRlc3RfbW9kZSBfIC0+IHRydWVcbiAgfCBgSWdub3JlIC0+IGZhbHNlXG47O1xuXG5sZXQgYW1fcnVubmluZ19lbnZfdmFyID1cbiAgKCogZm9yIGFwcHJveGltYXRlIGNvbXBhdGliaWxpdHksIGdpdmVuIHRoYXQgdGhlIHZhcmlhYmxlIGlzIG5vdCBleGFjdGx5IGVxdWl2YWxlbnRcbiAgICAgdG8gd2hhdCBQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1QgdXNlZCB0byBiZSAqKVxuICBcIlRFU1RJTkdfRlJBTUVXT1JLXCJcbjs7XG5cbigqIFRoaXMgdmFsdWUgaXMgZGVwcmVjYXRlZCBpbiBwcmluY2lwbGUsIGluIGZhdm9yIG9mIENvcmUuYW1fcnVubmluZ190ZXN0LCBzb1xuICAgd2UncmUgZ29pbmcgdG8gbGl2ZSB3aXRoIHRoZSB1Z2x5IHBhdHRlcm4gbWF0Y2guICopXG5sZXQgYW1fcnVubmluZyA9XG4gIG1hdGNoIFN5cy5nZXRlbnYgXCJQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1RcIiB3aXRoXG4gIHwgKF8gOiBzdHJpbmcpIC0+XG4gICAgdHJ1ZSAoKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHBlb3BsZSBzZXR0aW5nIHRoaXMgdmFyaWFibGUgZGlyZWN0bHkgKilcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgKG1hdGNoIFN5cy5nZXRlbnYgYW1fcnVubmluZ19lbnZfdmFyIHdpdGhcbiAgICAgfCBcImlubGluZS10ZXN0XCIgLT4gdHJ1ZVxuICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gZmFsc2VcbiAgICAgfCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHRlc3RpbmcgPVxuICBpZiBhbV90ZXN0X3J1bm5lclxuICB0aGVuIGBUZXN0aW5nIGBBbV90ZXN0X3J1bm5lclxuICBlbHNlIGlmIGFtX3J1bm5pbmdcbiAgdGhlbiBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXJcbiAgZWxzZSBgTm90X3Rlc3Rpbmdcbjs7XG5cbmxldCB3YWxsX3RpbWVfY2xvY2tfbnMgKCkgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpXG5cbmxldCB3aGVyZV90b19jdXRfYmFja3RyYWNlID1cbiAgbGF6eVxuICAgIChCYXNlLlN0cmluZy5TZWFyY2hfcGF0dGVybi5jcmVhdGVcbiAgICAgICAoX19NT0RVTEVfXyBeIFwiLlwiIF4gXCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc1wiKSlcbjs7XG5cbmxldCB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGJlZm9yZV9ucyA9IHdhbGxfdGltZV9jbG9ja19ucyAoKSBpblxuICBsZXQgcmVzID1cbiAgICAoKiBUbyBhdm9pZCBub2lzZSBpbiBiYWNrdHJhY2VzLCB3ZSBkbyB0d28gdGhpbmdzLlxuXG4gICAgICAgV2UgdXNlIFt3aGVyZV90b19jdXRfYmFja3RyYWNlXSBhYm92ZSB0byByZW1vdmUgdGhlIHN0YWNrIGZyYW1lcyBmb3IgdGhlIGN1cnJlbnRcbiAgICAgICBmdW5jdGlvbiBhbmQgYW55IGZ1bmN0aW9uIGl0IGdldHMgaW5saW5lZCBpbnRvLCBhcyBpdCdzIG5vdCBvZiBhbnkgaW50ZXJlc3QgdG8gdGhlXG4gICAgICAgdXNlciwgc2luY2UgaXQncyBub3QgdGFsa2luZyBhYm91dCB0aGVpciB0ZXN0IGJ1dCBpbnN0ZWFkIHRhbGtpbmcgYWJvdXQgdGhlXG4gICAgICAgcHB4X2lubGluZV90ZXN0IG1hY2hpbmVyeS5cblxuICAgICAgIFdlIGFsc28gYXZvaWQgaW5zZXJ0aW5nIGFueSBjb2RlIGJldHdlZW4gdGhlIFtmXSB0aGF0IGNvbWVzIGZyb20gdGhlIHVzZXIncyBmaWxlXG4gICAgICAgYW5kIGdyYWJiaW5nIHRoZSBiYWNrdHJhY2UgZnJvbSBpdHMgZXhjZXB0aW9ucyAobm8gd3JhcHBpbmcgb2YgW2ZdIHdpdGggaGlnaCBvcmRlclxuICAgICAgIGZ1bmN0aW9ucyBsaWtlIEV4bi5wcm90ZWN0LCBvciAoZnVuICgpIC0+IGYgKCk7IHRydWUpKS4gKilcbiAgICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgICB8IGV4biAtPiBFcnJvciAoZXhuLCBQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICBpblxuICB0aW1lX3NlYyA6PSBCYXNlLkludDYzLih3YWxsX3RpbWVfY2xvY2tfbnMgKCkgLSBiZWZvcmVfbnMgfD4gdG9fZmxvYXQpIC8uIDFlOTtcbiAgcmVzXG47O1xuXG5sZXQgc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUgPSBsYXp5IChTdGRsaWIuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTAwOyAyMDA7IDMwMCB8XSlcbmxldCBzYXZlZF9iYXNlX3JhbmRvbV9zdGF0ZSA9IGxhenkgKEJhc2UuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTExOyAyMjI7IDMzMyB8XSlcblxubGV0IHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGNhbWxfcmFuZG9tX3N0YXRlID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgbGV0IGJhc2VfcmFuZG9tX3N0YXRlID0gQmFzZS5SYW5kb20uU3RhdGUuY29weSBCYXNlLlJhbmRvbS5TdGF0ZS5kZWZhdWx0IGluXG4gIFN0ZGxpYi5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlKTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlKTtcbiAgbGV0IHJlc3VsdCA9IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgY2FtbF9yYW5kb21fc3RhdGU7XG4gIEJhc2UuUmFuZG9tLnNldF9zdGF0ZSBiYXNlX3JhbmRvbV9zdGF0ZTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBcIlwiXG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biBzIC0+IFwiICBpbiBURVNcIiBeIFwiVF9NT0RVTEUgYXQgXCIgXiBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIHMgXiBcIlxcblwiKVxuICAgICAgIChNb2R1bGVfY29udGV4dC5jdXJyZW50X2Rlc2NyICgpKSlcbjs7XG5cbmxldCBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIGwgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW4gKGZpbGVuYW1lLCBsaW5lX251bWJlcl9vcHQsIHVzZWQpIC0+XG4gICAgICAgbGV0IHBvc2l0aW9uX3N0YXJ0ID0gU3RyaW5nLmxlbmd0aCBkZWZfZmlsZW5hbWUgLSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgICAgbGV0IGZvdW5kID1cbiAgICAgICAgIHBvc2l0aW9uX3N0YXJ0ID49IDBcbiAgICAgICAgICYmXG4gICAgICAgICBsZXQgZW5kX29mX2RlZl9maWxlbmFtZSA9XG4gICAgICAgICAgIFN0cmluZy5zdWIgZGVmX2ZpbGVuYW1lIHBvc2l0aW9uX3N0YXJ0IChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKVxuICAgICAgICAgaW5cbiAgICAgICAgIGVuZF9vZl9kZWZfZmlsZW5hbWUgPSBmaWxlbmFtZVxuICAgICAgICAgJiYgKHBvc2l0aW9uX3N0YXJ0ID0gMCB8fCBkZWZfZmlsZW5hbWUuW3Bvc2l0aW9uX3N0YXJ0IC0gMV0gPSAnLycpXG4gICAgICAgICAmJlxuICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gZGVmX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXJcbiAgICAgICBpblxuICAgICAgIGlmIGZvdW5kIHRoZW4gdXNlZCA6PSB0cnVlO1xuICAgICAgIGZvdW5kKVxuICAgIGxcbjs7XG5cbmxldCBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgZGVzY3IgPVxuICBtYXRjaCBuYW1lX2ZpbHRlciB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gOjogXyAtPlxuICAgIExpc3QuZXhpc3RzIChmdW4gc3Vic3RyaW5nIC0+IEJhc2UuU3RyaW5nLmlzX3N1YnN0cmluZyB+c3Vic3RyaW5nIGRlc2NyKSBuYW1lX2ZpbHRlclxuOztcblxubGV0IHByaW50X2RlbGF5ZWRfZXJyb3JzICgpID1cbiAgbWF0Y2ggTGlzdC5yZXYgIWRlbGF5ZWRfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IF8gOjogXyBhcyBkZWxheWVkX2Vycm9ycyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiXFxuJXNcXG4lIVwiIChTdHJpbmcubWFrZSA3MCAnPScpO1xuICAgIExpc3QuaXRlciAoZnVuIG1lc3NhZ2UgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgbWVzc2FnZSkgZGVsYXllZF9lcnJvcnNcbjs7XG5cbmxldCBlcHJpbnRmX29yX2RlbGF5IGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIChmdW4gcyAtPlxuICAgICAgIGlmICF2ZXJib3NlIHRoZW4gZGVsYXllZF9lcnJvcnMgOj0gcyA6OiAhZGVsYXllZF9lcnJvcnMgZWxzZSBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzO1xuICAgICAgIGlmICFzdG9wX29uX2Vycm9yXG4gICAgICAgdGhlbiAoXG4gICAgICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgICAgIGV4aXQgMikpXG4gICAgZm10XG47O1xuXG5sZXQgYWRkX2hvb2tzICgobW9kdWxlIEMpIDogY29uZmlnKSBmICgpID1cbiAgQy5wcmVfdGVzdF9ob29rICgpO1xuICBmICgpXG47O1xuXG5sZXQgaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgPVxuICBsZXQgb3BlbiBCYXNlIGluXG4gIGJhY2t0cmFjZVxuICB8PiBTdHJpbmcuc3BsaXRfbGluZXNcbiAgfD4gTGlzdC50YWtlX3doaWxlIH5mOihmdW4gc3RyIC0+XG4gICAgbm90IChTdHJpbmcuU2VhcmNoX3BhdHRlcm4ubWF0Y2hlcyAoZm9yY2Ugd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSkgc3RyKSlcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCIgIFwiIF4gc3RyIF4gXCJcXG5cIilcbiAgfD4gU3RyaW5nLmNvbmNhdFxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgIH5jb25maWdcbiAgICAgICAgICAgICAgICAgICAgIH5kZXNjclxuICAgICAgICAgICAgICAgICAgICAgfnRhZ3NcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpkZWZfZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5saW5lX251bWJlcjpkZWZfbGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICAgICBmXG4gICAgICAgICAgICAgICAgICAgICBib29sX29mX2ZcbiAgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZVxuICAgICAgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uOyB3aGljaF90YWdzOyBuYW1lX2ZpbHRlciB9XG4gICAgICA7IHdoYXRfdG9fZG9cbiAgICAgIH0gLT5cbiAgICBsZXQgZiA9IGFkZF9ob29rcyBjb25maWcgZiBpblxuICAgIGxldCBkZXNjciA9XG4gICAgICBsYXp5IChkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZV90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgJiYgKG1hdGNoIG9ubHlfdGVzdF9sb2NhdGlvbiB3aXRoXG4gICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICB8IF8gOjogXyAtPiBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIG9ubHlfdGVzdF9sb2NhdGlvbilcbiAgICAgICYmIChub3QgKFRhZ19wcmVkaWNhdGUuZGlzYWJsZWQgd2hpY2hfdGFncyB+Y29tcGxldGVfdGFncykpXG4gICAgICAmJiBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgKExhenkuZm9yY2UgZGVzY3IpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgIHwgYExpc3RfcGFydGl0aW9ucyAtPiBQYXJ0aXRpb24uZm91bmRfdGVzdCAoKVxuICAgICAgfCBgUnVuX3BhcnRpdGlvbiBwYXJ0aXRpb24gLT5cbiAgICAgICAgaWYgUGFydGl0aW9uLmlzX2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkZXNjciA9IExhenkuZm9yY2UgZGVzY3IgaW5cbiAgICAgICAgICBpbmNyIHRlc3RzX3JhbjtcbiAgICAgICAgICAobWF0Y2ggIWxvZyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgY2ggLT4gUHJpbnRmLmZwcmludGYgY2ggXCIlc1xcbiVzXCIgZGVzY3IgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKTtcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIlcyUhXCIgZGVzY3I7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBpZiAhbGlzdF90ZXN0X25hbWVzXG4gICAgICAgICAgICB0aGVuIE9rIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCogU2VlIFt0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc10gZm9yIHdoeSB3ZSB1c2UgW2Jvb2xfb2ZfZl1cbiAgICAgICAgICAgICAgICAgcmF0aGVyIGhhdmUgdGhlIGNhbGxlciB3cmFwIFtmXSB0byBhZGp1c3QgaXRzIHJldHVybiB2YWx1ZS4gKilcbiAgICAgICAgICAgICAgUmVzdWx0Lm1hcCBib29sX29mX2YgKHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogSWYgIWxpc3RfdGVzdF9uYW1lcywgdGhpcyBpcyBpcyBhIGhhcm1sZXNzIHplcm8uICopXG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBQcmludGYucHJpbnRmIFwiICglLjNmIHNlYylcXG4lIVwiICF0aW1lX3NlYztcbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgdHJ1ZSAtPiAoKVxuICAgICAgICAgIHwgT2sgZmFsc2UgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIGlzIGZhbHNlLlxcbiVzXFxuJSFcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheVxuICAgICAgICAgICAgICBcIiVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIlxuICAgICAgICAgICAgICBkZXNjclxuICAgICAgICAgICAgICBzZXBcbiAgICAgICAgICAgICAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKSlcbjs7XG5cbmxldCBzZXRfbGliX2FuZF9wYXJ0aXRpb24gc3RhdGljX2xpYiBwYXJ0aXRpb24gPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICgqIHBvc3NpYmxlIGlmIHRoZSBpbnRlcmZhY2UgaXMgdXNlZCBleHBsaWNpdGx5IG9yIGlmIHdlIGhhcHBlbiB0byBkeW5saW5rIHNvbWV0aGluZ1xuICAgICAgIHRoYXQgY29udGFpbiB0ZXN0cyAqKVxuICAgICgpXG4gIHwgTm9uZSAtPlxuICAgIGR5bmFtaWNfbGliIDo9IFNvbWUgc3RhdGljX2xpYjtcbiAgICAobWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gICAgIHwgYElnbm9yZSAtPiAoKVxuICAgICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0czsgd2hhdF90b19kbyB9IC0+XG4gICAgICAgaWYgd2hpY2hfdGVzdHMubGlibmFtZSA9IHN0YXRpY19saWJcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCByZXF1aXJlc19wYXJ0aXRpb24gPVxuICAgICAgICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIHwgYFJ1bl9wYXJ0aXRpb24gKFNvbWUgXykgLT4gdHJ1ZVxuICAgICAgICAgICB8IGBSdW5fcGFydGl0aW9uIE5vbmUgLT4gZmFsc2VcbiAgICAgICAgIGluXG4gICAgICAgICBpZiBwYXJ0aXRpb24gPSBcIlwiICYmIHJlcXVpcmVzX3BhcnRpdGlvblxuICAgICAgICAgdGhlblxuICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgIFwicHB4X2lubGluZV90ZXN0OiBjYW5ub3QgdXNlIC1saXN0LXBhcnRpdGlvbiBvciAtcGFydGl0aW9uIHdpdGhvdXQgXFxcbiAgICAgICAgICAgICAgc3BlY2lmeWluZyBhIHBhcnRpdGlvbiBhdCBwcmVwcm9jZXNzaW5nIHRpbWVcIlxuICAgICAgICAgZWxzZSBQYXJ0aXRpb24uc2V0X2N1cnJlbnQgcGFydGl0aW9uKSlcbjs7XG5cbmxldCB1bnNldF9saWIgc3RhdGljX2xpYiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIG5vdCBnaXZpbmcgYW4gZXJyb3IsIGJlY2F1c2Ugd2hlbiBzb21lIGFubm95aW5nIHBlb3BsZSBwdXQgcGFfb3VuaXQgaW4gdGhlaXIgbGlzdFxuICAgICAgIG9mIHByZXByb2Nlc3NvcnMsIHBhX291bml0IGlzIHNldCB1cCB0d2ljZSBhbmQgd2UgaGF2ZSB0d28gY2FsbHMgdG8gdW5zZXRfbGliIGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgZmlsZSwgYW5kIHRoZSBzZWNvbmQgb25lIGNvbWVzIGluIHRoaXMgYnJhbmNoICopXG4gICAgKClcbiAgfCBTb21lIGxpYiAtPiBpZiBsaWIgPSBzdGF0aWNfbGliIHRoZW4gZHluYW1pY19saWIgOj0gTm9uZVxuOztcblxubGV0IHRlc3QgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIChmdW4gYiAtPlxuICAgIGIpXG47O1xuXG5sZXQgdGVzdF91bml0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiAoZnVuICgpIC0+XG4gICAgdHJ1ZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X21vZHVsZVxuICAgICAgICAgICAgICAgICAgICAgfmNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgfmRlc2NyXG4gICAgICAgICAgICAgICAgICAgICB+dGFnc1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOmRlZl9maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZVxuICAgICAgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uID0gXzsgbmFtZV9maWx0ZXIgPSBfOyB3aGljaF90YWdzIH1cbiAgICAgIDsgd2hhdF90b19kb1xuICAgICAgfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyICgpID0gZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MgaW5cbiAgICBsZXQgcGFydGlhbF90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgKCogSWYsIG5vIG1hdHRlciB3aGF0IHRhZ3MgYSB0ZXN0IGRlZmluZXMsIHdlIGNlcnRhaW5seSB3aWxsIGRyb3AgYWxsIHRlc3RzIHdpdGhpblxuICAgICAgICAgdGhpcyBtb2R1bGUsIHRoZW4gZG9uJ3QgcnVuIHRoZSBtb2R1bGUgYXQgYWxsLiBUaGlzIG1lYW5zIHBlb3BsZSBjYW4gd3JpdGVcbiAgICAgICAgIHRoaW5ncyBsaWtlIHRoZSBmb2xsb3dpbmcgd2l0aG91dCBicmVha2luZyB0aGUgMzItYml0IGJ1aWxkOlxuICAgICAgICAgbGV0JXRlc3RfbW9kdWxlIFtAdGFncyBcIjY0LWJpdHMtb25seVwiXSA9IChtb2R1bGUgc3RydWN0XG4gICAgICAgICBsZXQgaSA9IEludDY0LnRvX2ludF9leG4gLi4uLlxuICAgICAgICAgZW5kKVxuICAgICAgICAgV2UgZG9uJ3Qgc2hvcnRjdXQgYmFzZWQgb24gcG9zaXRpb24sIGFzIHdlIGNhbid0IHRlbGwgd2hhdCBwb3NpdGlvbnMgdGhlXG4gICAgICAgICBpbm5lciB0ZXN0cyB3aWxsIGhhdmUuICopXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZW50aXJlX21vZHVsZV9kaXNhYmxlZCB3aGljaF90YWdzIH5wYXJ0aWFsX3RhZ3MpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgIHwgYExpc3RfcGFydGl0aW9ucyAtPiBQYXJ0aXRpb24uZm91bmRfdGVzdCAoKVxuICAgICAgfCBgUnVuX3BhcnRpdGlvbiBwYXJ0aXRpb24gLT5cbiAgICAgICAgaWYgUGFydGl0aW9uLmlzX2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICAgICBsZXQgZGVzY3IgPSBkZXNjciAoKSBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBNb2R1bGVfY29udGV4dC53aXRoXyB+ZGVzY3IgfnRhZ3MgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAoKiBXZSBkbyBub3QgcmVzZXQgcmFuZG9tIHN0YXRlcyB1cG9uIGVudGVyaW5nIFtsZXQldGVzdF9tb2R1bGVdLlxuXG4gICAgICAgICAgICAgICAgIENvbjogQ29kZSBpbiB0ZXN0IG1vZHVsZXMgY2FuIGFjY2lkZW50YWxseSBkZXBlbmQgb24gdG9wLWxldmVsIHJhbmRvbVxuICAgICAgICAgICAgICAgICBzdGF0ZSBlZmZlY3RzLlxuXG4gICAgICAgICAgICAgICAgIFByb3M6ICgxKSBXZSBkb24ndCByZXNldCB0byB0aGUgc2FtZSBzZWVkIG9uIGVudGVyaW5nIGEgW2xldCV0ZXN0X21vZHVsZV1cbiAgICAgICAgICAgICAgICAgYW5kIHRoZW4gYSBbbGV0JXRlc3RdIGluc2lkZSB0aGF0IG1vZHVsZSwgd2hpY2ggY291bGQgbGVhZCB0b1xuICAgICAgICAgICAgICAgICBhY2NpZGVudGFsbHkgcmFuZG9tbHkgZ2VuZXJhdGluZyB0aGUgc2FtZSB2YWx1ZXMgaW4gc29tZSB0ZXN0LiAoMikgTW92aW5nXG4gICAgICAgICAgICAgICAgIGNvZGUgaW50byBhbmQgb3V0IG9mIFtsZXQldGVzdF9tb2R1bGVdIGRvZXMgbm90IGNoYW5nZSBpdHMgcmFuZG9tIHNlZWQuXG4gICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgIHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX2ZhaWxlZDtcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSBpblxuICAgICAgICAgICAgbGV0IGV4bl9zdHIgPSBTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgZXhuIGluXG4gICAgICAgICAgICBsZXQgc2VwID0gaWYgU3RyaW5nLmNvbnRhaW5zIGV4bl9zdHIgJ1xcbicgdGhlbiBcIlxcblwiIGVsc2UgXCIgXCIgaW5cbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXlcbiAgICAgICAgICAgICAgKFwiVEVTXCIgXl4gXCJUX01PRFVMRSBhdCAlcyB0aHJldyVzJXMuXFxuJXMlc1xcbiUhXCIpXG4gICAgICAgICAgICAgIChTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGRlc2NyKVxuICAgICAgICAgICAgICBzZXBcbiAgICAgICAgICAgICAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKSlcbjs7XG5cbmxldCBzdW1tYXJpemUgKCkgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+XG4gICAgaWYgU3lzLmFyZ3YgPD4gW3x8XSAmJiBGaWxlbmFtZS5iYXNlbmFtZSBTeXMuYXJndi4oMCkgPSBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlXCJcbiAgICB0aGVuXG4gICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBydW4gYnkgaGFuZCwgeW91IFxcblxcXG4gICAgICAgICBzaG91bGQgcnVuIHRoZSBpbmxpbmVfdGVzdHNfcnVubmVyIHNjcmlwdCBpbnN0ZWFkLlxcblxcXG4gICAgICAgICAlIVwiXG4gICAgZWxzZVxuICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgXCJZb3UgYXJlIGRvaW5nIHNvbWV0aGluZyB1bmV4cGVjdGVkIHdpdGggdGhlIHRlc3RzLiBObyB0ZXN0cyBoYXZlIFxcblxcXG4gICAgICAgICBiZWVuIHJ1bi4gWW91IHNob3VsZCB1c2UgdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IHRvIHJ1biBcXG5cXFxuICAgICAgICAgdGVzdHMuXFxuXFxcbiAgICAgICAgICUhXCI7XG4gICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSBfOyB3aGF0X3RvX2RvID0gYExpc3RfcGFydGl0aW9ucyB9IC0+XG4gICAgTGlzdC5pdGVyIChQcmludGYucHJpbnRmIFwiJXNcXG5cIikgKFBhcnRpdGlvbi5hbGwgKCkpO1xuICAgIFRlc3RfcmVzdWx0LlN1Y2Nlc3NcbiAgfCBgVGVzdF9tb2RlIHsgd2hhdF90b19kbyA9IGBSdW5fcGFydGl0aW9uIF87IHdoaWNoX3Rlc3RzIH0gLT5cbiAgICAobWF0Y2ggIWxvZyB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgY2ggLT4gY2xvc2Vfb3V0IGNoKTtcbiAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAobWF0Y2ggIXRlc3RzX2ZhaWxlZCwgIXRlc3RfbW9kdWxlc19mYWlsZWQgd2l0aFxuICAgICB8IDAsIDAgLT5cbiAgICAgICBpZiAhc2hvd19jb3VudHNcbiAgICAgICB0aGVuXG4gICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICBcIiVkIHRlc3RzIHJhbiwgJWQgdGVzdF9tb2R1bGVzIHJhblxcbiUhXCJcbiAgICAgICAgICAgIXRlc3RzX3JhblxuICAgICAgICAgICAhdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgIGxldCB1bnVzZWRfdGVzdHMgPVxuICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIChfLCBfLCB1c2VkKSAtPiBub3QgIXVzZWQpIHdoaWNoX3Rlc3RzLm9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIG1hdGNoIHVudXNlZF90ZXN0cyB3aXRoXG4gICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgIHwgXyA6OiBfIC0+IFNvbWUgdW51c2VkX3Rlc3RzXG4gICAgICAgaW5cbiAgICAgICAobWF0Y2ggZXJyb3JzIHdpdGhcbiAgICAgICAgfCBTb21lIHRlc3RzIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiB0aGUgZm9sbG93aW5nIC1vbmx5LXRlc3QgZmxhZ3MgbWF0Y2hlZCBub3RoaW5nOlwiO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgXykgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gUHJpbnRmLmVwcmludGYgXCIgJXNcIiBmaWxlbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIGxpbmVfbnVtYmVyIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzOiVkXCIgZmlsZW5hbWUgbGluZV9udW1iZXIpXG4gICAgICAgICAgICB0ZXN0cztcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIi5cXG4lIVwiO1xuICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmICF0ZXN0c19yYW4gPSAwICYmICFzdHJpY3RcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiBubyB0ZXN0cyBoYXZlIGJlZW4gcnVuLlxcbiUhXCI7XG4gICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvcilcbiAgICAgICAgICBlbHNlIFRlc3RfcmVzdWx0LlN1Y2Nlc3MpXG4gICAgIHwgY291bnQsIGNvdW50X3Rlc3RfbW9kdWxlcyAtPlxuICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICBcIkZBSUxFRCAlZCAvICVkIHRlc3RzJXNcXG4lIVwiXG4gICAgICAgICBjb3VudFxuICAgICAgICAgIXRlc3RzX3JhblxuICAgICAgICAgKGlmIGNvdW50X3Rlc3RfbW9kdWxlcyA9IDBcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIChcIiwgJWQgVEVTXCIgXl4gXCJUX01PRFVMRVNcIikgY291bnRfdGVzdF9tb2R1bGVzKTtcbiAgICAgICBUZXN0X3Jlc3VsdC5GYWlsdXJlKVxuOztcblxubGV0IHVzZV9jb2xvciA9ICF1c2VfY29sb3JcbmxldCBpbl9wbGFjZSA9ICFpbl9wbGFjZVxubGV0IGRpZmZfY29tbWFuZCA9ICFkaWZmX2NvbW1hbmRcbmxldCBkaWZmX3BhdGhfcHJlZml4ID0gIWRpZmZfcGF0aF9wcmVmaXhcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gIXNvdXJjZV90cmVlX3Jvb3RcbmxldCBldmFsdWF0b3JzID0gcmVmIFsgc3VtbWFyaXplIF1cbmxldCBhZGRfZXZhbHVhdG9yIH5mID0gZXZhbHVhdG9ycyA6PSBmIDo6ICFldmFsdWF0b3JzXG5cbmxldCBleGl0ICgpID1cbiAgTGlzdC5tYXAgKGZ1biBmIC0+IGYgKCkpIChMaXN0LnJldiAhZXZhbHVhdG9ycylcbiAgfD4gVGVzdF9yZXN1bHQuY29tYmluZV9hbGxcbiAgfD4gVGVzdF9yZXN1bHQudG9fZXhpdF9jb2RlXG4gIHw+IGV4aXRcbjs7XG4iLCJvcGVuISBCYXNlXG5tb2R1bGUgR2MgPSBTdGRsaWIuR2NcblxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuXG5sZXQgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlID0gXCJQUFhfTU9EVUxFX1RJTUVSXCJcblxubGV0IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKCkgPVxuICAoKiBhdm9pZCBTdGRsaWIuU3lzLmdldGVudl9vcHQgdG8gcHJlc2VydmUgNC4wNC54IGNvbXBhdGliaWxpdHkgKilcbiAgbWF0Y2ggU3RkbGliLlN5cy5nZXRlbnYgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlIHdpdGhcbiAgfCB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IGFtX3JlY29yZGluZ192YWx1ZSA9IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKClcbmxldCBhbV9yZWNvcmRpbmcgPSBPcHRpb24uaXNfc29tZSBhbV9yZWNvcmRpbmdfdmFsdWVcblxubW9kdWxlIER1cmF0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEludDYzLnRcblxuICBsZXQgdG9fbmFub3NlY29uZHMgdCA9IHRcbiAgbGV0IG9mX25hbm9zZWNvbmRzIHQgPSB0XG5cbiAgbW9kdWxlIHR5cGUgRm9ybWF0ID0gc2lnXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCA6IHQgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgRGVmYXVsdF9mb3JtYXQgPSBzdHJ1Y3RcbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXg6XCJuc1wiIHw+IEludDYzLm9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgbmFub3MgPSBJbnQ2My50b19zdHJpbmcgbmFub3MgXiBcIm5zXCJcbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOnRvX3N0cmluZ1xuICBlbmRcblxuICBsZXQgZm9ybWF0ID0gcmVmIChtb2R1bGUgRGVmYXVsdF9mb3JtYXQgOiBGb3JtYXQpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgIGxldCAobW9kdWxlIEZvcm1hdCkgPSAhZm9ybWF0IGluXG4gICAgRm9ybWF0Lm9mX3N0cmluZyBzdHJpbmdcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQudG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZ1xuICA7O1xuZW5kXG5cbm1vZHVsZSBHY19ldmVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWluZ19ldmVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IHJ1bnRpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBnY19ldmVudHMgOiBHY19ldmVudHMudFxuICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgOiB0IGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDogc3RyaW5nXG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIDogR2Muc3RhdFxuICAgIDsgbXV0YWJsZSBuZXN0ZWRfdGltZXIgOiB0IG9wdGlvblxuICAgIDsgbXV0YWJsZSB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA6IFRpbWluZ19ldmVudC50IGxpc3RcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/bmVzdGVkX3RpbWVyICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uID0gXCJcIlxuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA9IEludDYzLnplcm9cbiAgICA7IGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzID0gR2MucXVpY2tfc3RhdCAoKVxuICAgIDsgbmVzdGVkX3RpbWVyXG4gICAgOyB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA9IFtdXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldCB0ID1cbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIFwiXCI7XG4gICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIEludDYzLnplcm87XG4gICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXN0ZWQgLT4gbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDwtIFtdXG4gIDs7XG5cbiAgbGV0IHJlY29yZF9zdGFydCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoU3RyaW5nLmlzX2VtcHR5IHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24pO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA8LSBkZXNjcmlwdGlvbjtcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPC0gR2MucXVpY2tfc3RhdCAoKTtcbiAgICAgICgqIGNhbGwgW1RpbWVfbm93XSBhcyBsYXRlIGFzIHBvc3NpYmxlIGJlZm9yZSBydW5uaW5nIHRoZSBtb2R1bGUgYm9keSAqKVxuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkpXG4gIDs7XG5cbiAgbGV0IHJlY29yZF91bnRpbCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIGNvbXB1dGUgW1RpbWVfbm93XSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICBsZXQgdW50aWwgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIGluXG4gICAgICBsZXQgc3RhcnQgPSB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgaW5cbiAgICAgIGxldCBnY19zdGF0c19hZnRlciA9IEdjLnF1aWNrX3N0YXQgKCkgaW5cbiAgICAgIGxldCBnY19zdGF0c19iZWZvcmUgPSB0LmN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIGluXG4gICAgICBsZXQgcnVudGltZSA9IEludDYzLiggLSApIHVudGlsIHN0YXJ0IGluXG4gICAgICBhc3NlcnQgKFN0cmluZy5lcXVhbCB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKTtcbiAgICAgIGxldCBnY19ldmVudHMgOiBHY19ldmVudHMudCA9XG4gICAgICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPVxuICAgICAgICAgICAgZ2Nfc3RhdHNfYWZ0ZXIubWlub3JfY29sbGVjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUubWlub3JfY29sbGVjdGlvbnNcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IGNvbXBhY3Rpb25zID0gZ2Nfc3RhdHNfYWZ0ZXIuY29tcGFjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUuY29tcGFjdGlvbnNcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIHQubmVzdGVkX3RpbWVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBuZXN0ZWQgLT4gTGlzdC5yZXYgbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICBpblxuICAgICAgbGV0IHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50ID1cbiAgICAgICAgeyBkZXNjcmlwdGlvbjsgcnVudGltZTsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9XG4gICAgICBpblxuICAgICAgdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlclxuICAgICAgPC0gdGltaW5nX2V2ZW50IDo6IHQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXI7XG4gICAgICByZXNldCB0KVxuICA7O1xuZW5kXG5cbmxldCBkZWZpbml0aW9uX3RpbWVyID0gVGltZXIuY3JlYXRlICgpXG5sZXQgbW9kdWxlX3RpbWVyID0gVGltZXIuY3JlYXRlIH5uZXN0ZWRfdGltZXI6ZGVmaW5pdGlvbl90aW1lciAoKVxubGV0IHJlY29yZF9zdGFydCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF9zdGFydCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfdW50aWwgbW9kdWxlX25hbWUgPSBUaW1lci5yZWNvcmRfdW50aWwgbW9kdWxlX3RpbWVyIG1vZHVsZV9uYW1lXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fc3RhcnQgbG9jID0gVGltZXIucmVjb3JkX3N0YXJ0IGRlZmluaXRpb25fdGltZXIgbG9jXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fdW50aWwgbG9jID0gVGltZXIucmVjb3JkX3VudGlsIGRlZmluaXRpb25fdGltZXIgbG9jXG5cbmxldCBnY19ldmVudHNfc3VmZml4X3N0cmluZ1xuICAgICAgKHsgbWlub3JfY29sbGVjdGlvbnM7IG1ham9yX2NvbGxlY3Rpb25zOyBjb21wYWN0aW9ucyB9IDogR2NfZXZlbnRzLnQpXG4gID1cbiAgbGV0IHRvX2xpc3QgZGVzY3JpcHRpb24gY291bnQgPVxuICAgIGlmIGNvdW50ID0gMCB0aGVuIFtdIGVsc2UgWyBJbnQudG9fc3RyaW5nIGNvdW50IF4gXCIgXCIgXiBkZXNjcmlwdGlvbiBdXG4gIGluXG4gIGxldCBzdHJpbmdzID1cbiAgICB0b19saXN0IFwibWlub3IgY29sbGVjdGlvbnNcIiBtaW5vcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcIm1ham9yIGNvbGxlY3Rpb25zXCIgbWFqb3JfY29sbGVjdGlvbnNcbiAgICBAIHRvX2xpc3QgXCJjb21wYWN0aW9uc1wiIGNvbXBhY3Rpb25zXG4gIGluXG4gIGlmIExpc3QuaXNfZW1wdHkgc3RyaW5ncyB0aGVuIFwiXCIgZWxzZSBcIjsgR0M6IFwiIF4gU3RyaW5nLmNvbmNhdCBzdHJpbmdzIH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWQgbGlzdCA9XG4gIGxldCBsZWZ0X2NvbHVtbl93aWR0aCA9XG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6MCB+ZjooZnVuIHdpZHRoIChsZWZ0LCBfKSAtPiBJbnQubWF4IHdpZHRoIChTdHJpbmcubGVuZ3RoIGxlZnQpKVxuICBpblxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGxlZnQsIHJpZ2h0KSAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiJSpzICVzXCIgbGVmdF9jb2x1bW5fd2lkdGggbGVmdCByaWdodClcbjs7XG5cbmxldCByZWMgdGltaW5nX2V2ZW50c190b19zdHJpbmdzIGxpc3QgfmluZGVudCA9XG4gIGxldCBkdXJhdGlvbl9zdHJpbmdzID1cbiAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPiB0aW1pbmdfZXZlbnQucnVudGltZSlcbiAgICB8PiBEdXJhdGlvbi50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXRcbiAgaW5cbiAgbGV0IHByZWZpeCA9IFN0cmluZy5tYWtlIGluZGVudCAnICcgaW5cbiAgTGlzdC5tYXAyX2V4blxuICAgIGR1cmF0aW9uX3N0cmluZ3NcbiAgICBsaXN0XG4gICAgfmY6XG4gICAgICAoZnVuXG4gICAgICAgIGR1cmF0aW9uX3N0cmluZyB7IHJ1bnRpbWUgPSBfOyBkZXNjcmlwdGlvbjsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9IC0+XG4gICAgICAgICggZHVyYXRpb25fc3RyaW5nXG4gICAgICAgICwgZGVzY3JpcHRpb25cbiAgICAgICAgICBeIGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nIGdjX2V2ZW50c1xuICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgKHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB+aW5kZW50OihpbmRlbnQgKyA0KSlcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBsaW5lIC0+IFwiXFxuXCIgXiBsaW5lKSkgKSlcbiAgfD4gd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWRcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IHByZWZpeCBeIGxpbmUpXG47O1xuXG5sZXQgZmFrZV90aW1pbmdfZXZlbnRzID1cbiAgbGV0IGdjX2V2ZW50cyBpIDogR2NfZXZlbnRzLnQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPSAoaWYgaSAlIDIgPSAxIHRoZW4gMSBlbHNlIDApXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgNCA9IDMgdGhlbiAxIGVsc2UgMClcbiAgICA7IGNvbXBhY3Rpb25zID0gKGlmIGkgJSA4ID0gNyB0aGVuIDEgZWxzZSAwKVxuICAgIH1cbiAgaW5cbiAgbGF6eVxuICAgIChMaXN0LmluaXQgMTIgfmY6KGZ1biBpIDogVGltaW5nX2V2ZW50LnQgLT5cbiAgICAgICB7IGRlc2NyaXB0aW9uID0gUHJpbnRmLnNwcmludGYgXCJGYWtlX19EZXBlbmRlbmN5XyVkXCIgKGkgKyAxKVxuICAgICAgIDsgcnVudGltZSA9IEludDYzLm9mX2ludCAoOTAwICogKGkgKyAxKSlcbiAgICAgICA7IGdjX2V2ZW50cyA9IGdjX2V2ZW50cyBpXG4gICAgICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgIChpZiAoaSArIDEpICUgNCA9IDBcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgTGlzdC5pbml0IChpICsgMSkgfmY6KGZ1biBqIDogVGltaW5nX2V2ZW50LnQgLT5cbiAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uID0gUHJpbnRmLnNwcmludGYgXCJMaW5lICVkXCIgKGogKyAxKVxuICAgICAgICAgICAgICAgIDsgcnVudGltZSA9IEludDYzLm9mX2ludCAoOTAwICogKGogKyAxKSlcbiAgICAgICAgICAgICAgICA7IGdjX2V2ZW50cyA9IGdjX2V2ZW50cyBqXG4gICAgICAgICAgICAgICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9IFtdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVsc2UgW10pXG4gICAgICAgfSkpXG47O1xuXG5sZXQgcHJpbnRfcmVjb3JkZWRfdGltaW5nX2V2ZW50cyB0aW1pbmdfZXZlbnRzID1cbiAgbGV0IG5vdGlmeV9vZl9vdmVycmlkaW5nICgpID1cbiAgICBTdGRpby5wcmludF9lbmRsaW5lIFwicHB4X21vZHVsZV90aW1lcjogb3ZlcnJpZGluZyB0aW1lIG1lYXN1cmVtZW50cyBmb3IgdGVzdGluZ1wiXG4gIGluXG4gIGxldCB0aW1pbmdfZXZlbnRzID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWVfZXhuIGFtX3JlY29yZGluZ192YWx1ZSB3aXRoXG4gICAgfCBcIkZBS0VfTU9EVUxFU1wiIC0+XG4gICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgIGZvcmNlIGZha2VfdGltaW5nX2V2ZW50c1xuICAgIHwgc3RyaW5nIC0+XG4gICAgICAobWF0Y2ggRHVyYXRpb24ub2Zfc3RyaW5nIHN0cmluZyB3aXRoXG4gICAgICAgfCBvdmVycmlkZSAtPlxuICAgICAgICAgbm90aWZ5X29mX292ZXJyaWRpbmcgKCk7XG4gICAgICAgICBMaXN0Lm1hcGkgdGltaW5nX2V2ZW50cyB+ZjooZnVuIGluZGV4ICh0aW1pbmdfZXZlbnQgOiBUaW1pbmdfZXZlbnQudCkgLT5cbiAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oICogKSBvdmVycmlkZSAoSW50NjMub2ZfaW50IChpbmRleCArIDEpKSBpblxuICAgICAgICAgICBsZXQgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICAgICAgIExpc3QubWFwaVxuICAgICAgICAgICAgICAgdGltaW5nX2V2ZW50Lm5lc3RlZF90aW1pbmdfZXZlbnRzXG4gICAgICAgICAgICAgICB+ZjooZnVuIGluZGV4IG5lc3RlZF90aW1pbmdfZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oICogKSBvdmVycmlkZSAoSW50NjMub2ZfaW50IChpbmRleCArIDEpKSBpblxuICAgICAgICAgICAgICAgICB7IG5lc3RlZF90aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lIH0pXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdGltaW5nX2V2ZW50IHdpdGggcnVudGltZTsgbmVzdGVkX3RpbWluZ19ldmVudHMgfSlcbiAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRpbWluZ19ldmVudHMpXG4gIGluXG4gIHRpbWluZ19ldmVudHMgfD4gdGltaW5nX2V2ZW50c190b19zdHJpbmdzIH5pbmRlbnQ6MCB8PiBMaXN0Lml0ZXIgfmY6U3RkaW8ucHJpbnRfZW5kbGluZVxuOztcblxubGV0ICgpID1cbiAgaWYgYW1fcmVjb3JkaW5nXG4gIHRoZW5cbiAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzXG4gICAgICAgIChMaXN0LnJldiBtb2R1bGVfdGltZXIudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIpKVxuOztcbiIsInR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJhc2UuVHlwZV9lcXVhbC50ID0gVCA6ICgnYSwgJ2EpIHRcbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IGNvbnYgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gYSAtPiBiID0gZnVuIFQgeCAtPiB4XG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG4iLCIoKiB0aGlzIGxpYiBzaG91bGQgbm90IGRlcGVuZCBvbiBjb3JlICopXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBsZXQgY29tcGFyZSBjbXAgYSBiID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiID1cbiAgICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBbXSwgW10gLT4gMFxuICAgICAgfCBbXSwgXyAtPiAtMVxuICAgICAgfCBfLCBbXSAtPiAxXG4gICAgICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICAgICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gbG9vcCB4cyB5cyBlbHNlIG5cbiAgICBpblxuICAgIGxvb3AgYSBiXG4gIDs7XG5lbmRcblxubW9kdWxlIFVpZCA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG5leHQgOiBzdHJpbmcgLT4gdFxuICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIHZhbCBuYW1lIDogdCAtPiBzdHJpbmdcbiAgdmFsIHN0YXRpYyA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIH1cblxuICBsZXQgY29tcGFyZSBhIGIgPSBjb21wYXJlIChhLmNvZGUgOiBpbnQpIGIuY29kZVxuICBsZXQgZXF1YWwgYSBiID0gKGEuY29kZSA6IGludCkgPSBiLmNvZGVcbiAgbGV0IHVpZCA9IHJlZiAwXG5cbiAgbGV0IG5leHQgbmFtZSA9XG4gICAgbGV0IGNvZGUgPSAhdWlkIGluXG4gICAgaW5jciB1aWQ7XG4gICAgeyBjb2RlOyBuYW1lIH1cbiAgOztcblxuICBsZXQgaGFzaCBhID0gSGFzaHRibC5oYXNoIGEuY29kZVxuICBsZXQgbmFtZSBhID0gYS5uYW1lXG4gIGxldCBzdGF0aWMgPSBuZXh0IFwic3RhdGljXCJcbmVuZFxuXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB1aWQgOiBVaWQudFxuICAgIDsgcGFyYW1zIDogdCBsaXN0XG4gICAgfVxuXG4gIGxldCByZWMgY29tcGFyZSBrMSBrMiA9XG4gICAgaWYgazEgPT0gazJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBjbXAgPSBVaWQuY29tcGFyZSBrMS51aWQgazIudWlkIGluXG4gICAgICBpZiBjbXAgPD4gMCB0aGVuIGNtcCBlbHNlIExpc3QuY29tcGFyZSBjb21wYXJlIGsxLnBhcmFtcyBrMi5wYXJhbXMpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuICBsZXQgaGFzaCA9IChIYXNodGJsLmhhc2ggOiB0IC0+IGludClcbiAgbGV0IHN0YXRpYyA9IHsgdWlkID0gVWlkLnN0YXRpYzsgcGFyYW1zID0gW10gfVxuZW5kXG5cbnR5cGUgJ2EgdCA9IEtleS50XG50eXBlICdhIHR5cGVuYW1lID0gJ2EgdFxuXG5sZXQga2V5IHQgPSB0XG5sZXQgdWlkIHQgPSB0LktleS51aWRcbmxldCBuYW1lIHQgPSBVaWQubmFtZSB0LktleS51aWRcbmxldCBzdGF0aWMgPSBLZXkuc3RhdGljXG5sZXQgY3JlYXRlID8obmFtZSA9IFwiVHlwZW5hbWUuY3JlYXRlXCIpICgpID0geyBLZXkudWlkID0gVWlkLm5leHQgbmFtZTsgcGFyYW1zID0gW10gfVxuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBUaGUgYXJndW1lbnQgZm9yIE9iai5tYWdpYyBoZXJlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gY29yZS90eXBlX2VxdWFsICopXG5cbiAgbGV0IHNhbWUgKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9IEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG5cbiAgbGV0IHNhbWVfd2l0bmVzcyAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gU29tZSAoT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCA6IChhLCBiKSBUeXBlX2VxdWFsLnQpXG4gICAgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9XG4gICAgaWYgS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcbiAgICB0aGVuIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIGZhaWx3aXRoIFwiVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4blwiXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAoJ2EsICdiKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2IgdHlwZW5hbWUgLT4gJ2MgdHlwZW5hbWUgLT4gKCdhLCAnYiwgJ2MpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdFxuICAgIDogICdhIHR5cGVuYW1lXG4gICAgLT4gJ2IgdHlwZW5hbWVcbiAgICAtPiAnYyB0eXBlbmFtZVxuICAgIC0+ICdkIHR5cGVuYW1lXG4gICAgLT4gJ2UgdHlwZW5hbWVcbiAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHsgS2V5LnVpZDsgcGFyYW1zID0gW10gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGIgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgZCA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjOyBkIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgZCBlID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQ7IGUgXSB9XG5lbmRcblxubW9kdWxlIEtleV90YWJsZSA9IEhhc2h0YmwuTWFrZSAoS2V5KVxuXG5tb2R1bGUgVGFibGUgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBkYXRhID0gRGF0YSA6ICdhIHQgKiAnYSBYLnQgLT4gZGF0YVxuICB0eXBlIHQgPSBkYXRhIEtleV90YWJsZS50XG5cbiAgbGV0IGNyZWF0ZSBpbnQgPSBLZXlfdGFibGUuY3JlYXRlIGludFxuICBsZXQgbWVtIHRhYmxlIG5hbWUgPSBLZXlfdGFibGUubWVtIHRhYmxlIChrZXkgbmFtZSlcbiAgbGV0IHNldCB0YWJsZSBuYW1lIGRhdGEgPSBLZXlfdGFibGUucmVwbGFjZSB0YWJsZSAoa2V5IG5hbWUpIChEYXRhIChuYW1lLCBkYXRhKSlcblxuICBsZXQgZmluZCAodHlwZSBhKSB0YWJsZSAobmFtZSA6IGEgdHlwZW5hbWUpID1cbiAgICBsZXQgZGF0YSA9XG4gICAgICB0cnkgU29tZSAoS2V5X3RhYmxlLmZpbmQgdGFibGUgKGtleSBuYW1lKSkgd2l0aFxuICAgICAgfCBCYXNlLk5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChEYXRhIChuYW1lJywgZGF0YSkpIC0+XG4gICAgICAoZnVuICh0eXBlIGIpIChuYW1lJyA6IGIgdHlwZW5hbWUpIChkYXRhIDogYiBYLnQpIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gKHNhbWVfd2l0bmVzc19leG4gbmFtZScgbmFtZSA6IChiLCBhKSBUeXBlX2VxdWFsLnQpIGluXG4gICAgICAgICBTb21lIChkYXRhIDogYSBYLnQpKVxuICAgICAgICBuYW1lJ1xuICAgICAgICBkYXRhXG4gIDs7XG5lbmRcblxubGV0IGZhaWwgdWlkX2EgdWlkX2IgPVxuICBsZXQgbXNnID1cbiAgICBQcmludGYuc3ByaW50ZiBcIlR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG4gJVMgJVNcIiAoVWlkLm5hbWUgdWlkX2EpIChVaWQubmFtZSB1aWRfYilcbiAgaW5cbiAgZmFpbHdpdGggbXNnXG47O1xuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8xIChBIDogUzEpIChCIDogUzEpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYS4gKCdhIEEudCwgJ2EgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMiAoQSA6IFMyKSAoQiA6IFMyKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IuICgoJ2EsICdiKSBBLnQsICgnYSwgJ2IpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMyAoQSA6IFMzKSAoQiA6IFMzKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MuICgoJ2EsICdiLCAnYykgQS50LCAoJ2EsICdiLCAnYykgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzQgKEEgOiBTNCkgKEIgOiBTNCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiICdjICdkLiAoKCdhLCAnYiwgJ2MsICdkKSBBLnQsICgnYSwgJ2IsICdjLCAnZCkgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNSAoQSA6IFM1KSAoQiA6IFM1KSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXEgOlxuICAgICAgICAnYSAnYiAnYyAnZCAnZS4gKCgnYSwgJ2IsICdjLCAnZCwgJ2UpIEEudCwgKCdhLCAnYiwgJ2MsICdkLCAnZSkgQi50KSBUeXBlX2VxdWFsLnRcbiAgICB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFBsYWNlIGhvbGRlciBmb3IgY29tbW9uIFZhcmlhbnRzIGFuZCBGaWVsZHMgaW50ZXJmYWNlXG4qKVxuXG5tb2R1bGUgTSAoWCA6IHNpZ1xuICAgICgqKlxuICAgICAgIFRoaXMgZnVuY3RvciBpcyBlc3NlbnRpYWxseSB0aGVyZSBiZWNhdXNlIHdlIHVzZSB0aGlzIHNhbWUgaW50ZXJmYWNlIGluIGRpZmZlcmVudFxuICAgICAgIGNvbnRleHRzLCB3aXRoIGRpZmZlcmVudCB0eXBlcyBmb3IgWydhIHRdLlxuXG4gICAgICAgMSkgT25lIHVzZSBjYXNlIGZvciBpdCBpcyB3aGVyZSBbJ2EgWC50ID0gJ2EgVHlwZXJlcC50XS4gIFRoZXNlIGludGVyZmFjZXMgYXJlIHRoZW5cbiAgICAgICBwYXJ0IG9mIHRoZSB0eXBlIHdpdG5lc3MgYnVpbHQgZm9yIGEgdHlwZSBjb250YWluaW5nIGEgcmVjb3JkIG9yIGEgdmFyaWFudCBpbiBpdHNcbiAgICAgICBzdHJ1Y3R1cmUuIFt0cmF2ZXJzZV0gd2lsbCBnaXZlIGEgd2F5IG9mIGFjY2Vzc2luZyB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlXG4gICAgICAgYXJndW1lbnRzIG9mIGEgdmFyaWFudCBvciByZWNvcmQgdHlwZS5cblxuICAgICAgIDIpIEFub3RoZXIgdXNlIGNhc2UgaXMgZm9yIGJ1aWxkaW5nIFwic3RhZ2VkIGdlbmVyaWMgY29tcHV0YXRpb25zXCIuIEluIHRoYXQgY2FzZSwgdGhlXG4gICAgICAgdHlwZSBbJ2EgWC50XSBpcyB0aGUgdHlwZSBvZiB0aGUgY29tcHV0YXRpb24gdGhhdCBpcyBiZWluZyBidWlsdC4gIFt0cmF2ZXJzZV1cbiAgICAgICByZXR1cm5zIHRoZSBjb21wdXRhdGlvbiBidWlsdCBmb3IgdGhlIGFyZ3VtZW50LiBUaGUgaW50ZXJmYWNlIG5vIGxvbmdlciBleHBvcnRzXG4gICAgICAgdGhlIHR5cGVyZXAgb2YgdGhlIGFyZ3VtZW50cyBpbiBob3BlcyBvZiBlbmZvcmNpbmcgdGhhdCBubyB0eXBlcmVwIHRyYXZlcnNhbFxuICAgICAgIGhhcHBlbnMgYXQgcnVudGltZSBpZiB0aGUgY29tcHV0YXRpb24gaGFwcGVuIHRvIGJlIGEgZnVuY3Rpb24uXG4gICAgKilcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGZ1bmN0aW9ucyBwcmVmaXhlZCBieSBbaW50ZXJuYWxdIGFzIHdlbGwgYXMgdGhlIG1vZHVsZSBzdWZmaXhlZCBieSBbX2ludGVybmFsXVxuICAgICBhcmUgdXNlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gW3dpdGggdHlwZXJlcF0gYXMgd2VsbCBhcyBzb21lXG4gICAgIGludGVybmFscyBvZiB0aGUgdHlwZXJlcCBsaWJyYXJ5LiBEbyBub3QgY29uc2lkZXIgdXNpbmcgdGhlc2Ugc29tZXdoZXJlIGVsc2UuICBUaGV5XG4gICAgIHNob3VsZCBpZGVhbGx5IG5vdCBiZSBleHBvcnRlZCBvdXRzaWRlIHRoZSB0eXBlcmVwIGxpYnJhcnksIGJ1dCB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAgICAgbmVlZHMgc29tZWhvdyB0byBhY2Nlc3MgdGhpcywgZXZlbiBvdXRzaWRlLiAqKVxuXG4gIG1vZHVsZSBUYWdfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZSA9XG4gICAgICB8IEFyZ3Mgb2YgKCdhcmdzIC0+ICd2YXJpYW50KVxuICAgICAgfCBDb25zdCBvZiAndmFyaWFudFxuXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2FyZ3MgWC50XG4gICAgICA7IGFyaXR5IDogaW50XG4gICAgICA7IGFyZ3NfbGFiZWxzIDogc3RyaW5nIGxpc3RcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgb2NhbWxfcmVwciA6IGludFxuICAgICAgOyB0eWlkIDogJ2FyZ3MgVHlwZW5hbWUudFxuICAgICAgOyBjcmVhdGUgOiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSB0YWcsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHZhcmlhbnQgdHlwZSwgYWxzbyBjYWxsZWQgYW4gXCJhcHBsaWVkXG4gICAgIHZhcmlhbnQgQ29uc3RydWN0b3JcIlxuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHZhcmlhbnQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgdGFnXG4gICAgIHBhcmFtZXRlcnMuICBFeGFtcGxlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID1cbiAgICAgICAgIHwgQSBvZiAoaW50ICogc3RyaW5nKVxuICAgICAgICAgfCBCIG9mIHN0cmluZ1xuICAgICAgICAgfCBDIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG5cbiAgICAgdGhpcyB0eXBlIGhhcyB0aHJlZSBjb25zdHJ1Y3RvcnMuIEZvciBlYWNoIG9mIHRoZW0gd2UnbGwgaGF2ZSBhIGNvcnJlc3BvbmRpbmdcbiAgICAgW1RhZy50XTpcblxuICAgICB7W1xuICAgICAgIHZhbCB0YWdfQSA6ICh0LCAoaW50ICogc3RyaW5nKSkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0IgOiAodCwgc3RyaW5nICAgICAgICApIFRhZy50XG4gICAgICAgdmFsIHRhZ19DIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICBdfVxuXG4gICAgIE5vdGUsIGlubGluZSByZWNvcmQgaW4gdmFyaWFudCBhcmUgdHlwZWQgYXMgaWYgdGhlaXIgZGVmaW5pdGlvbiB3YXMgdXNpbmcgdHVwbGVzLFxuICAgICB3aXRob3V0IHRoZSBwYXJlbnRoZXNpcy4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZWlyIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24uICBCdXRcbiAgICAgdGhlIGRpc3RpbmN0aW9uIGlzIGNhcnJpZWQgYW5kIGF2YWlsYWJsZSBmb3IgaW50cm9zcGVjdGlvbiBhcyBwYXJ0IG9mIHRoZSBbVGFnLnRdLlxuICAgICBTZWUgW2FyZ3NfbGFiZWxzXS4gKilcbiAgbW9kdWxlIFRhZyA6IHNpZ1xuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHRcblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvciBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ29uc3RydWN0b3IgICAgICAgIHwgbGFiZWxcbiAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBgYSBvZiBpbnQgICAgICAgIHwgIFwiYVwiXG4gICAgICAgICB8IGBBIG9mIGludCAgICAgICAgfCAgXCJBXCJcbiAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSB8ICBcIkFcIlxuICAgICAgIHZ9XG5cbiAgICAgICBmb3Igc3RhbmRhcmQgdmFyaWFudCwgdGhlIG9jYW1sIHN5bnRheCBpbXBsaWVzIHRoYXQgdGhpcyBsYWJlbCB3aWxsIGFsd2F5cyBzdGFydHNcbiAgICAgICB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSBjaGFyLlxuICAgICAgIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50LCB0aGlzIGxhYmVsIGRvZXMgbm90IGluY2x1ZGUgdGhlIFtgXSBjaGFyYWN0ZXIuXG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSBzaXplIG9mIHRoZSBvY2FtbCBoZWFwIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGFyZ3VtZW50c1xuXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge3ZcbiAgICAgICAgICAwOiB8IEEgfCAnQVxuICAgICAgICAgIDE6IHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgICB8IGBBIG9mIGludCAqIGludFxuICAgICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnR9XG4gICAgICAgICAgMjogfCBBIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgICAgZXRjLlxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJpdHkgOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKiBUaGUgbGFiZWwgb2YgdGhlIGZpZWxkcyBmb3IgaW5saW5lIHJlY29yZHMuICBGb3Igb3RoZXIgZm9ybXMgb2YgdGFncywgdGhpcyBpcyB0aGVcbiAgICAgICAgZW1wdHkgbGlzdC4gIFdoZW4gdGhpcyByZXR1cm5zIGEgbm9uIGVtcHR5IGxpc3QsIHRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIGxpc3RcbiAgICAgICAgaXMgZXF1YWwgdG8gdGhlIGFyaXR5LlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAge3ZcbiAgICAgICAgICgxKSBFbXB0eTpcblxuICAgICAgICAgICB8IEEgfCAnQVxuICAgICAgICAgICB8IEEgb2YgaW50IHwgYEEgb2YgaW50IHwgQSBvZiAoaW50ICogaW50KSB8IGBBIG9mIChpbnQgKiBpbnQpXG4gICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgIHwgQSBvZiBpbnQgKiBmbG9hdFxuXG4gICAgICAgICAoMikgTm9uIGVtcHR5OlxuXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgIC0+IFsgXCJ4XCIgXVxuICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH0gICAtPiBbIFwieFwiIDsgXCJ5XCIgXVxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJnc19sYWJlbHMgOiAoXywgXykgdCAtPiBzdHJpbmcgbGlzdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIGluZGV4IG9mIHRoZSBjb25zdHJ1Y3RvciBpbiB0aGUgbGlzdCBvZiBhbGwgdGhlIHZhcmlhbnQgdHlwZSdzIGNvbnN0cnVjdG9yc1xuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgaW50ICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBCICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgQyBvZiBpbnQgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEQgb2YgY2hhciAgICAgICAgICgqIDMgKilcbiAgICAgICAgICAgfCBFIG9mIHsgeCA6IGludCB9ICAoKiA0ICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBpbmRleCA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgb2NhbWxfcmVwciBpcyByZWxhdGVkIHRvIHRoZSBydW50aW1lIG9mIG9iamVjdHMuIHRoaXMgaXMgZXNzZW50aWFsbHkgYSB3YXkgb2ZcbiAgICAgICBnaXZpbmcgb25lIHRoZSBhYmlsaXR5IHRvIHJlYnVpbGQgZHluYW1pY2FsbHkgYW4gW09iai50XSByZXByZXNlbnRpbmcgYSB0YWcuXG5cbiAgICAgICBQb2x5bW9ycGhpYyB2YXJpYW50czpcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgaGFzaCBvZiB0aGUgbGFiZWwsIGFzIGRvbmUgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAgcHJpbnRfaW50IChPYmoubWFnaWMgYGJhcikgICgqIDQ4OTUxODcgKilcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyAnZm9vKSAgKCogNTA5NzIyMiAqKVxuXG4gICAgICAgU3RhbmRhcmRzIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgdGFnIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZS5cbiAgICAgICB0aGUgd2F5IGl0IHdvcmtzIGluIHRoZSBvY2FtbCBydW50aW1lIGlzIGJ5IHBhcnRpdGlvbmluZyB0aGUgY29uc3RydWN0b3JzIHJlZ2FyZGluZ1xuICAgICAgIGlmIHRoZXkgaGF2ZSBzb21lIGFyZ3VtZW50cyBvciBub3QsIHByZXNlcnZpbmcgdGhlIG9yZGVyLCB0aGVuIGFzc2lnbiBpbmNyZWFzaW5nXG4gICAgICAgaW5kZXggd2l0aGluZyBlYWNoIHBhcnRpdGlvbi5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9ICAgICAgICAgICAgICAgICAgKCogbm8gYXJnICopICAoKiBhcmdzICopXG4gICAgICAgICAgIHwgQSAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgb2YgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEMgICAgICAgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBEIG9mIChmbG9hdCAqIHN0cmluZykgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBFICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRiAgICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEcgb2Ygc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEggb2YgeyB4IDogaW50IH0gICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgb2NhbWxfcmVwciA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2l2ZSBiYWNrIGEgd2F5IG9mIGNvbnN0cnVjdGluZyBhIHZhbHVlIG9mIHRoYXQgY29uc3RydWN0b3IgZnJvbSBpdHMgYXJndW1lbnRzLlxuXG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICAgIHwgQiBvZiBpbnQgKiBmbG9hdFxuICAgICAgICAgICB8IENcbiAgICAgICAgICAgfCBEIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgXX1cblxuICAgICAgIFtjcmVhdGVdIHdpbGwgcmV0dXJuIHNvbWV0aGluZyBlcXVpdmFsZW50IHRvOlxuICAgICAgIHRhZ19BIDogW0FyZ3MgKGZ1biAoZCA6IChpbnQgKiBzdHJpbmcpIC0+IEEgZCldXG4gICAgICAgdGFnX0IgOiBbQXJncyAoZnVuIChpLCBmKSAtPiBCIChpLCBmKSldXG4gICAgICAgdGFnX0MgOiBbQ29uc3QgQ11cbiAgICAgICB0YWdfRCA6IFtBcmdzIChmdW4gKHgsIHkpIC0+IEQgeyB4OyB5IH0pXVxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIHQgLT4gKCd2YXJpYW50LCAnYXJncykgY3JlYXRlXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gbWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0IHdoaWxlIGJ1aWxkaW5nIGEgY29tcHV0YXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICB2YWwgdHlpZCA6IChfLCAnYXJncykgdCAtPiAnYXJncyBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSByZXByZXNlbnRhdGlvbi9jb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgVGFnX2ludGVybmFsLnQgLT4gKCdhLCAnYikgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRhZ19pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGFyaXR5IHQgPSB0LmFyaXR5XG4gICAgbGV0IGFyZ3NfbGFiZWxzIHQgPSB0LmFyZ3NfbGFiZWxzXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IG9jYW1sX3JlcHIgdCA9IHQub2NhbWxfcmVwclxuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFZhcmlhbnRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gdGFnID0gVGFnIDogKCd2YXJpYW50LCAnYSkgVGFnLnQgLT4gJ3ZhcmlhbnQgdGFnXG4gICAgdHlwZSBfIHZhbHVlID0gVmFsdWUgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAqICdhIC0+ICd2YXJpYW50IHZhbHVlXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgdGFncyA6ICdhIHRhZyBhcnJheVxuICAgICAgOyBwb2x5bW9ycGhpYyA6IGJvb2xcbiAgICAgIDsgdmFsdWUgOiAnYSAtPiAnYSB2YWx1ZVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudCA6IHNpZ1xuICAgICgqKlxuICAgICAgIEFuIGV4aXN0ZW50aWFsIHR5cGUgdXNlZCB0byBnYXRoZXIgYWxsIHRoZSB0YWdzIGNvbnN0aXR1aW5nIGEgdmFyaWFudFxuICAgICAgIHR5cGUuIHRoZSBbJ3ZhcmlhbnRdIHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZVxuICAgICAgIGNvbnN0cnVjdG9ycyBvZiB0aGF0IHZhcmlhbnQgdHlwZS4gVGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcnMgbWlnaHQgYmUgZGlmZmVyZW50XG4gICAgICAgZm9yIGVhY2ggY29uc3RydWN0b3IgYW5kIGlzIHRodXMgZXhpc3RlbnRpYWxcbiAgICAqKVxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhcmdzKSBUYWcudCAtPiAndmFyaWFudCB0YWdcblxuICAgICgqKlxuICAgICAgIEEgc2ltaWxhciBleGlzdGVudGlhbCBjb25zdHJ1Y3RvciB0byBbXyB0YWddIGJ1dCB0aGlzIG9uZSBob2xkcyBhIHZhbHVlIHdob3NlIHR5cGVcbiAgICAgICBpcyB0aGUgYXJndW1lbnRzIG9mIHRoZSB0YWcgY29uc3RydWN0b3IuICBBIHZhbHVlIG9mIHR5cGUgWydhIHZhbHVlXSBpcyBhIHBhaXIgb2ZcbiAgICAgICAoMSkgYSB2YWx1ZSBvZiB2YXJpYW50IHR5cGUgWydhXSBhbG9uZyB3aXRoICgyKSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgICAgIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZSBbJ2FdXG4gICAgKilcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50ICogJ2FyZ3MgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSB2YXJpYW50IHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHZhcmlhbnQgdHlwZSB3aXRuZXNzZWQuXG4gICAgKilcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG5cbiAgICAoKipcbiAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGFncyBvZiB0aGlzIHZhcmlhbnQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCB0YWcgb2YgdGhpcyB2YXJpYW50IHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIHRhZyA6ICdhIHQgLT4gaW50IC0+ICdhIHRhZ1xuXG4gICAgKCoqXG4gICAgICAgRGlzdGluZ3Vpc2ggcG9seW1vcnBoaWMgdmFyaWFudHMgYW5kIHN0YW5kYXJkIHZhcmlhbnRzLiBUeXBpY2FsbHksIHBvbHltb3JwaGljXG4gICAgICAgdmFyaWFudHMgdGFncyBzdGFydHMgd2l0aCB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAgICBFeGFtcGxlXG4gICAgICAgcG9seW1vcnBoaWMgdmFyaWFudDogdHlwZSB0ID0gWyBgQSB8IGBCIF1cbiAgICAgICBzdGFuZGFyZCB2YXJpYW50OiAgICB0eXBlIHQgPSBBIHwgQlxuICAgICopXG4gICAgdmFsIGlzX3BvbHltb3JwaGljIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gYSB2YWx1ZSBvZiB0aGlzIHZhcmlhbnQgdHlwZS5cbiAgICAqKVxuICAgIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdmFsdWVcblxuICAgICgqKlxuICAgICAgIGZvbGRpbmcgYWxvbmcgdGhlIHRhZ3Mgb2YgdGhlIHZhcmlhbnQgdHlwZVxuICAgICopXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOignYWNjIC0+ICdhIHRhZyAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBWYXJpYW50X2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhcmlhbnRfaW50ZXJuYWxcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IHQgPSB0LnR5cGVuYW1lXG4gICAgbGV0IGxlbmd0aCB0ID0gQXJyYXkubGVuZ3RoIHQudGFnc1xuICAgIGxldCB0YWcgdCBpbmRleCA9IHQudGFncy4oaW5kZXgpXG4gICAgbGV0IGlzX3BvbHltb3JwaGljIHQgPSB0LnBvbHltb3JwaGljXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC50YWdzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgICB7IGxhYmVsIDogc3RyaW5nXG4gICAgICA7IHJlcCA6ICdmaWVsZCBYLnRcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgdHlpZCA6ICdmaWVsZCBUeXBlbmFtZS50XG4gICAgICA7IGdldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgICA7ICgqIHNldCA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb247IChcXCogbXV0YWJsZSBmaWVsZCAqXFwpICopXG4gICAgICAgIGlzX211dGFibGUgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gICgqKlxuICAgICBXaXRuZXNzIG9mIGEgZmllbGQsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHJlY29yZCB0eXBlLlxuICAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgZmllbGQuXG4gICAgIEV4YW1wbGU6XG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50IDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG4gICAgIFRoaXMgdHlwZSBoYXMgdHdvIGZpZWxkcy4gZm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZyBbRmllbGQudF1cblxuICAgICB2YWwgZmllbGRfeCA6ICh0LCBpbnQpIEZpZWxkLnRcbiAgICAgdmFsIGZpZWxkX3kgOiAodCwgc3RyaW5nKSBGaWVsZC50XG4gICopXG4gIG1vZHVsZSBGaWVsZCA6IHNpZ1xuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdFxuXG5cbiAgICAoKipcbiAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmllbGQgYXMgaXQgaXMgZ2l2ZW4gaW4gdGhlIGNvbmNyZXRlIHN5bnRheFxuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB7IHggICA6IGludDsgICAgICgqIFwieFwiICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIFwiZm9vXCIgKilcbiAgICAgICAgICAgYmFyIDogZmxvYXQ7ICAgKCogXCJiYXJcIiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBmaWVsZCBpbiB0aGUgbGlzdCBvZiBhbGwgZmllbGRzIGZvciB0aGlzIHJlY29yZCB0eXBlLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9IHtcbiAgICAgICAgICAgeCAgIDogaW50OyAgICAgKCogMCAqKVxuICAgICAgICAgICBmb28gOiBzdHJpbmc7ICAoKiAxICopXG4gICAgICAgICAgIGJhciA6IHN0cmluZzsgICgqIDIgKilcbiAgICAgICAgIH1cbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBGaWVsZCBhY2Nlc3NvcnMuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGRvdCBvcGVyYXRpb24uXG4gICAgICAgW0ZpZWxkLmdldCBiYXJfZmllbGQgdF0gcmV0dXJucyB0aGUgZmllbGQgW2Jhcl0gb2YgdGhlIHJlY29yZCB2YWx1ZSBbdF0sIGp1c3QgdGhlXG4gICAgICAgc2FtZSBhcyBbdC5iYXJdXG4gICAgKilcbiAgICB2YWwgZ2V0IDogKCdyZWNvcmQsICdmaWVsZCkgdCAtPiAncmVjb3JkIC0+ICdmaWVsZFxuXG4gICAgKCoqIHJldHVybiB3aGV0aGVyIHRoZSBmaWVsZCBpcyBtdXRhYmxlLCBpLmUuIHdoZXRoZXIgaXRzIGRlY2xhcmF0aW9uIGlzIHByZWZpeGVkIHdpdGhcbiAgICAgICAgdGhlIGtleXdvcmQgW211dGFibGVdICopXG4gICAgdmFsIGlzX211dGFibGUgOiAoXywgXykgdCAtPiBib29sXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gIE1pZ2h0IGJlIHVzZWQgdG8gcGVyZm9ybSBzb21lIGxvb2t1cCBiYXNlZFxuICAgICAgICBvbiBpdCAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgVHlwZW5hbWUudFxuXG4gICAgKCoqIGdldCB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGFyZ3VtZW50cyAqKVxuICAgIHZhbCB0cmF2ZXJzZSA6IChfLCAnZmllbGQpIHQgLT4gJ2ZpZWxkIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgRmllbGRfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRmllbGRfaW50ZXJuYWxcblxuICAgIGxldCBsYWJlbCB0ID0gdC5sYWJlbFxuICAgIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICAgIGxldCBnZXQgdCA9IHQuZ2V0XG4gICAgbGV0IGlzX211dGFibGUgdCA9IHQuaXNfbXV0YWJsZVxuICAgIGxldCB0eWlkIHQgPSB0LnR5aWRcbiAgICBsZXQgdHJhdmVyc2UgdCA9IHQucmVwXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgZmllbGRzIDogJ2EgZmllbGQgYXJyYXlcbiAgICAgIDsgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBib29sXG4gICAgICA7IGNyZWF0ZSA6ICdhIGZpZWxkcyAtPiAnYVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgUmVjb3JkIDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIGZpZWxkcyBjb25zdGl0dWluZyBhIHJlY29yZCB0eXBlLiB0aGVcbiAgICAgICBbJ3JlY29yZF0gcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgaXQgaXMgdGhlIHNhbWUgZm9yIGFsbCB0aGUgZmllbGQgb2YgdGhhdFxuICAgICAgIHJlY29yZCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgZmllbGRzIG1pZ2h0IGJlIGRpZmZlcmVudCBmb3IgZWFjaCBmaWVsZCBhbmQgaXMgdGh1c1xuICAgICAgIGV4aXN0ZW50aWFsLlxuICAgICopXG4gICAgdHlwZSBfIGZpZWxkID0gRmllbGQgOiAoJ3JlY29yZCwgJ2EpIEZpZWxkLnQgLT4gJ3JlY29yZCBmaWVsZFxuXG4gICAgKCoqXG4gICAgICAgWydyZWNvcmQgZmllbGRzXSBpcyBhIHR5cGUgaXNvbW9ycGhpYyB0byBbJ3JlY29yZF0uICBUaGlzIGdpdmVzIGEgd2F5IHRvIGdldCB0aGVcbiAgICAgICBmaWVsZCB2YWx1ZSBmb3IgZWFjaCBmaWVsZCBvZiB0aGUgcmVjb3JkLiAgVGhlIGFkdmFudGFnZSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIGlzXG4gICAgICAgdGhhdCBpdCBpcyBjb252ZW5pZW50IGZvciB3cml0aW5nIGdlbmVyaWMgY29tcHV0YXRpb25zLlxuICAgICopXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICAoKipcbiAgICAgICBXaXRuZXNzIG9mIGEgcmVjb3JkIHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHJlY29yZCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBmaWVsZHMgb2YgdGhpcyByZWNvcmQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCBmaWVsZCBvZiB0aGlzIHJlY29yZCB0eXBlLCBpbmRleGVkIGZyb20gMC5cbiAgICAqKVxuICAgIHZhbCBmaWVsZCA6ICdhIHQgLT4gaW50IC0+ICdhIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBUaGlzIGlzIGEgbG93IGxldmVsIG1ldGFkYXRhIHJlZ2FyZGluZyB0aGUgd2F5IHRoZSBvY2FtbCBjb21waWxlciByZXByZXNlbnQgdGhlXG4gICAgICAgYXJyYXkgdW5kZXJuZWF0aCB0aGF0IGlzIHRoZSBydW50aW1lIHZhbHVlIG9mIGEgcmVjb3JkIG9mIHR5cGUgWydhXSBnaXZlbiBhIHdpdG5lc3NcbiAgICAgICBvZiB0eXBlIFsnYSB0XS4gW2hhc19kb3VibGVfYXJyYXlfdGFnIHddIHJldHVybnMgW3RydWVdIGlmIHRoZSBhcnJheSB0aGF0XG4gICAgICAgcmVwcmVzZW50cyBydW50aW1lIHZhbHVlcyBvZiB0aGlzIHR5cGUgaXMgYW4gb3B0aW1pemVkIG9jYW1sIGZsb2F0IGFycmF5LlxuICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIHRydWUgZm9yIHJlY29yZCB3aGVyZSBhbGwgZmllbGRzIGFyZSBzdGF0aWNhbGx5IGtub3duIGFzIHRvXG4gICAgICAgYmUgW2Zsb2F0c10uXG5cbiAgICAgICBOb3RlIHRoYXQgeW91IGNhbid0IGdldCB0aGlzIGluZm9ybWF0aW9uIGR5bmFtaWNhbGx5IGJ5IGluc3BlY3RpbmcgdGhlIHR5cGVyZXAgb25jZVxuICAgICAgIGl0IGlzIGFwcGxpZWQsIGJlY2F1c2UgdGhlcmUgaXMgYXQgdGhpcyBwb2ludCBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIG9uZSBvZiB0aGVcbiAgICAgICBmaWVsZCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGhhc19kb3VibGVfYXJyYXlfdGFnIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIEV4cG9zZSBvbmUgZGlyZWN0aW9uIG9mIHRoZSBpc29tb3JwaGlzbSBiZXR3ZWVuIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGFuZCBhIHZhbHVlIG9mXG4gICAgICAgdHlwZSBbJ2EgZmllbGRzXS4gQmFzaWNhbGx5LCBnaXZlbiBhbiBlbmNvZGluZyB3YXkgb2YgYWNjZXNzaW5nIHRoZSB2YWx1ZSBvZiBhbGxcbiAgICAgICB0aGUgZmllbGRzIG9mIGEgcmVjb3JkLCBjcmVhdGUgdGhhdCByZWNvcmQgYW5kIHJldHVybiBpdC5cbiAgICAqKVxuICAgIHZhbCBjcmVhdGUgOiAnYSB0IC0+ICdhIGZpZWxkcyAtPiAnYVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgZmllbGQgLT4gJ2FjYykgLT4gJ2FjY1xuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogJ2EgUmVjb3JkX2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFJlY29yZF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC5maWVsZHNcbiAgICBsZXQgZmllbGQgdCBpbmRleCA9IHQuZmllbGRzLihpbmRleClcbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgdCA9IHQuaGFzX2RvdWJsZV9hcnJheV90YWdcbiAgICBsZXQgY3JlYXRlIHQgPSB0LmNyZWF0ZVxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBBcnJheS5mb2xkX2xlZnQgZiBpbml0IHQuZmllbGRzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVwID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVwXG4gICAgZW5kKVxuZW5kXG4iLCJtb2R1bGUgTmFtZV9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZW5hbWVfb2ZfaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9pbnQzMiA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50MzJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50MzJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDY0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQ2NFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQ2NFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfbmF0aXZlaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBuYXRpdmVpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwibmF0aXZlaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9jaGFyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImNoYXJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Zsb2F0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJmbG9hdFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2Zfc3RyaW5nID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICBsZXQgbmFtZSA9IFwic3RyaW5nXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9ieXRlcyA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYnl0ZXNcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Jvb2wgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGJvb2xcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYm9vbFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdW5pdCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJ1bml0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIG1vZHVsZSBNX29wdGlvbiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gICAgICBsZXQgbmFtZSA9IFwib3B0aW9uXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX29wdGlvbiA9IE1fb3B0aW9uLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9saXN0ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGlzdFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9saXN0ID0gTV9saXN0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9hcnJheSA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbiAgICAgIGxldCBuYW1lID0gXCJhcnJheVwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9hcnJheSA9IE1fYXJyYXkudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xhenlfdCA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGF6eV90XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xhenlfdCA9IE1fbGF6eV90LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9yZWYgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZWZcblxuICAgICAgbGV0IG5hbWUgPSBcInJlZlwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9yZWYgPSBNX3JlZi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fZnVuY3Rpb24gPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAtPiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwiZnVuY3Rpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfZnVuY3Rpb24gPSBNX2Z1bmN0aW9uLnR5cGVuYW1lX29mX3RcblxuICB0eXBlIHR1cGxlMCA9IHVuaXRcblxuICBtb2R1bGUgTV90dXBsZTAgPSBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB0dXBsZTBcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlMFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTAgPSBNX3R1cGxlMC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGUyID0gVHlwZW5hbWUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgKiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUyXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMiA9IE1fdHVwbGUyLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTMgPSBUeXBlbmFtZS5NYWtlMyAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTNcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUzID0gTV90dXBsZTMudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlNCA9IFR5cGVuYW1lLk1ha2U0IChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgKiAnYiAqICdjICogJ2RcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlNFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTQgPSBNX3R1cGxlNC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU1ID0gVHlwZW5hbWUuTWFrZTUgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZVxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU1XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNSA9IE1fdHVwbGU1LnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgcmVjIFR5cGVyZXAgOiBzaWdcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICB2YWwgYXJpdHkgOiBfIHQgLT4gaW50XG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgICB2YWwgbmFtZSA6IF8gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlIDogc2lnXG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoYXQgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVHlwZXJlcC50XG5cbiAgdmFsIHNhbWUgOiBfIHQgLT4gXyB0IC0+IGJvb2xcbiAgdmFsIHNhbWVfd2l0bmVzcyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG4gIHZhbCBzYW1lX3dpdG5lc3NfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudFxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICB2YWwgaGVhZCA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0ID1cbiAgICB8IEludCA6IGludCB0XG4gICAgfCBJbnQzMiA6IGludDMyIHRcbiAgICB8IEludDY0IDogaW50NjQgdFxuICAgIHwgTmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB8IENoYXIgOiBjaGFyIHRcbiAgICB8IEZsb2F0IDogZmxvYXQgdFxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJ5dGVzIDogYnl0ZXMgdFxuICAgIHwgQm9vbCA6IGJvb2wgdFxuICAgIHwgVW5pdCA6IHVuaXQgdFxuICAgIHwgT3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHwgTGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgfCBBcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICAgIHwgTGF6eSA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgICB8IFJlZiA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgICB8IEZ1bmN0aW9uIDogKCdkb20gdCAqICdybmcgdCkgLT4gKCdkb20gLT4gJ3JuZykgdFxuICAgIHwgVHVwbGUgOiAnYSBUeXBlcmVwLlR1cGxlLnQgLT4gJ2EgdFxuICAgIHwgUmVjb3JkIDogJ2EgVHlwZXJlcC5SZWNvcmQudCAtPiAnYSB0XG4gICAgfCBWYXJpYW50IDogJ2EgVHlwZXJlcC5WYXJpYW50LnQgLT4gJ2EgdFxuICAgIHwgTmFtZWQgOiAoJ2EgVHlwZXJlcC5OYW1lZC50ICogJ2EgdCBsYXp5X3Qgb3B0aW9uKSAtPiAnYSB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogJ2EgdCAtPiBwYWNrZWRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBUMCA9IHNpZ1xuICAgICAgdHlwZSBuYW1lZFxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6IG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICAgICAgdHlwZSAnYSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIGEgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDIgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdiIFR5cGVuYW1lLnQgLT4gKCdhLCAnYikgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMyA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNCA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDUgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZVxuXG4gICAgICB2YWwgZSA6IGUgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkLCBlKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICAoKiB0aGVyZSB0aGUgbW9kdWxlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVhbCB3aXRoIGEgdHlwZSBbdF0gd2l0aFxuICAgICAgIHBhcmFtZXRlcnMgd2hvc2Uga2luZCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIHR5cGUgdmFyaWFibGU6IFsnYSAndF0sIGV2ZW4gd2l0aFxuICAgICAgIGEgZ2FkdC4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBUMCBvZiAobW9kdWxlIFQwIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQxIG9mIChtb2R1bGUgVDEgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDIgb2YgKG1vZHVsZSBUMiB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMyBvZiAobW9kdWxlIFQzIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ0IG9mIChtb2R1bGUgVDQgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDUgb2YgKG1vZHVsZSBUNSB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgbGV0IGFyaXR5ID0gZnVuY3Rpb25cbiAgICAgIHwgVDAgXyAtPiAwXG4gICAgICB8IFQxIF8gLT4gMVxuICAgICAgfCBUMiBfIC0+IDJcbiAgICAgIHwgVDMgXyAtPiAzXG4gICAgICB8IFQ0IF8gLT4gNFxuICAgICAgfCBUNSBfIC0+IDVcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgKHR5cGUgYSkgPSBmdW5jdGlvblxuICAgICAgfCBUMCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMiByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMiB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMyByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgbmFtZSByZXAgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkICh0eXBlbmFtZV9vZl90IHJlcCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBUdXBsZSA9IHN0cnVjdFxuICAgICgqIHRoZXNlIGNvbnN0cnVjdG9ycyBjb3VsZCBiZSBwbHVuZ2VkIGF0IHRvcGxldmVsIG9mIFR5cGVyZXAudCwgaG93ZXZlciBpdCBpcyBsZXNzXG4gICAgICAgdmVyYm9zZSB0aGlzIHdheSAqKVxuICAgIHR5cGUgXyB0ID1cbiAgICAgIHwgVDIgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYikgdFxuICAgICAgfCBUMyA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQpIC0+ICgnYSAqICdiICogJ2MpIHRcbiAgICAgIHwgVDQgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gICAgICB8IFQ1IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50ICogJ2UgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG5cbiAgICBsZXQgYXJpdHkgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIF8gLT4gMlxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQzIF8gLT4gM1xuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ0IF8gLT4gNFxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA6IHR5cGUgYS4gYSB0IC0+IGEgVHlwZW5hbWUudCA9IGZ1bmN0aW9uXG4gICAgICB8IFQyIChhLCBiKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlMiAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgIHwgVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUzXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICB8IFQ0IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlNFxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZClcbiAgICAgIHwgVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU1XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZSlcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5cbiAgbGV0IHJlYyB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICB8IEludCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludFxuICAgIHwgSW50MzIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQzMlxuICAgIHwgSW50NjQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQ2NFxuICAgIHwgTmF0aXZlaW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgfCBDaGFyIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfY2hhclxuICAgIHwgRmxvYXQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9mbG9hdFxuICAgIHwgU3RyaW5nIC0+IE5hbWVfb2YudHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgfCBCeXRlcyAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2J5dGVzXG4gICAgfCBCb29sIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYm9vbFxuICAgIHwgVW5pdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3VuaXRcbiAgICB8IE9wdGlvbiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9vcHRpb24gKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGlzdCByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9saXN0ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IEFycmF5IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2FycmF5ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IExhenkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbGF6eV90ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IFJlZiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9yZWYgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgRnVuY3Rpb24gKGRvbSwgcm5nKSAtPlxuICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl9mdW5jdGlvbiAodHlwZW5hbWVfb2ZfdCBkb20pICh0eXBlbmFtZV9vZl90IHJuZylcbiAgICB8IFR1cGxlIHJlcCAtPiBUeXBlcmVwLlR1cGxlLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBSZWNvcmQgcmVwIC0+IFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBWYXJpYW50IHJlcCAtPiBUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiBOYW1lZC50eXBlbmFtZV9vZl90IG5hbWVcbiAgOztcblxuICBsZXQgcmVjIHNhbWVfd2l0bmVzcyA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBUeXBlX2VxdWFsLnQgb3B0aW9uID1cbiAgICBmdW4gdDEgdDIgLT5cbiAgICAgIGxldCBtb2R1bGUgRSA9IFR5cGVfZXF1YWwgaW5cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IE5hbWVkIChuYW1lMSwgcjEpLCBOYW1lZCAobmFtZTIsIHIyKSAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUxKSAoTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lMilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHIxLCByMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGxhenkgdDEpLCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIE5vbmUgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmUpKVxuICAgICAgfCBOYW1lZCAoXywgcjEpLCB0MiAtPlxuICAgICAgICAobWF0Y2ggcjEgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQxKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCB0MSwgTmFtZWQgKF8sIHIyKSAtPlxuICAgICAgICAobWF0Y2ggcjIgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBJbnQsIEludCAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQzMiwgSW50MzIgLT4gU29tZSBFLlRcbiAgICAgIHwgSW50NjQsIEludDY0IC0+IFNvbWUgRS5UXG4gICAgICB8IE5hdGl2ZWludCwgTmF0aXZlaW50IC0+IFNvbWUgRS5UXG4gICAgICB8IENoYXIsIENoYXIgLT4gU29tZSBFLlRcbiAgICAgIHwgRmxvYXQsIEZsb2F0IC0+IFNvbWUgRS5UXG4gICAgICB8IFN0cmluZywgU3RyaW5nIC0+IFNvbWUgRS5UXG4gICAgICB8IEJ5dGVzLCBCeXRlcyAtPiBTb21lIEUuVFxuICAgICAgfCBCb29sLCBCb29sIC0+IFNvbWUgRS5UXG4gICAgICB8IFVuaXQsIFVuaXQgLT4gU29tZSBFLlRcbiAgICAgIHwgT3B0aW9uIHIxLCBPcHRpb24gcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGlzdCByMSwgTGlzdCByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBBcnJheSByMSwgQXJyYXkgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGF6eSByMSwgTGF6eSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBSZWYgcjEsIFJlZiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBGdW5jdGlvbiAoZG9tMSwgcm5nMSksIEZ1bmN0aW9uIChkb20yLCBybmcyKSAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGRvbTEgZG9tMiwgc2FtZV93aXRuZXNzIHJuZzEgcm5nMiB3aXRoXG4gICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgfCBUdXBsZSB0MSwgVHVwbGUgdDIgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gVHlwZXJlcC5UdXBsZSBpblxuICAgICAgICAobWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgIHwgVC5UMiAoYTEsIGIxKSwgVC5UMiAoYTIsIGIyKSAtPlxuICAgICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UMyAoYTEsIGIxLCBjMSksIFQuVDMgKGEyLCBiMiwgYzIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiwgc2FtZV93aXRuZXNzIGMxIGMyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNCAoYTEsIGIxLCBjMSwgZDEpLCBULlQ0IChhMiwgYjIsIGMyLCBkMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIsIHNhbWVfd2l0bmVzcyBkMSBkMlxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfLCBfIHwgXywgTm9uZSwgXywgXyB8IF8sIF8sIE5vbmUsIF8gfCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDUgKGExLCBiMSwgYzEsIGQxLCBlMSksIFQuVDUgKGEyLCBiMiwgYzIsIGQyLCBlMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICggc2FtZV93aXRuZXNzIGExIGEyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGIxIGIyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGMxIGMyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGUxIGUyIClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8sIF9cbiAgICAgICAgICAgIHwgXywgTm9uZSwgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBfLCBOb25lLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIF8sIE5vbmUsIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQyIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQzIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ0IF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ1IF8sIF8gLT4gTm9uZSlcbiAgICAgIHwgUmVjb3JkIHIxLCBSZWNvcmQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjIpXG4gICAgICB8IFZhcmlhbnQgcjEsIFZhcmlhbnQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIxKVxuICAgICAgICAgIChUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgSW50LCBfIC0+IE5vbmVcbiAgICAgIHwgSW50MzIsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQ2NCwgXyAtPiBOb25lXG4gICAgICB8IE5hdGl2ZWludCwgXyAtPiBOb25lXG4gICAgICB8IENoYXIsIF8gLT4gTm9uZVxuICAgICAgfCBGbG9hdCwgXyAtPiBOb25lXG4gICAgICB8IFN0cmluZywgXyAtPiBOb25lXG4gICAgICB8IEJ5dGVzLCBfIC0+IE5vbmVcbiAgICAgIHwgQm9vbCwgXyAtPiBOb25lXG4gICAgICB8IFVuaXQsIF8gLT4gTm9uZVxuICAgICAgfCBPcHRpb24gXywgXyAtPiBOb25lXG4gICAgICB8IExpc3QgXywgXyAtPiBOb25lXG4gICAgICB8IEFycmF5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBMYXp5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWYgXywgXyAtPiBOb25lXG4gICAgICB8IEZ1bmN0aW9uIF8sIF8gLT4gTm9uZVxuICAgICAgfCBUdXBsZSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgUmVjb3JkIF8sIF8gLT4gTm9uZVxuICAgICAgfCBWYXJpYW50IF8sIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lIGEgYiA9IHNhbWVfd2l0bmVzcyBhIGIgPD4gTm9uZVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIGEgYiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIGEgYiB3aXRoXG4gICAgfCBTb21lIHByb29mIC0+IHByb29mXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCByZWMgaGVhZCA9IGZ1bmN0aW9uXG4gICAgfCBUeXBlcmVwLk5hbWVkIChfLCBTb21lIChsYXp5IHQpKSAtPiBoZWFkIHRcbiAgICB8IHQgLT4gdFxuICA7O1xuZW5kXG5cbmxldCB0eXBlcmVwX29mX2ludCA9IFR5cGVyZXAuSW50XG5sZXQgdHlwZXJlcF9vZl9pbnQzMiA9IFR5cGVyZXAuSW50MzJcbmxldCB0eXBlcmVwX29mX2ludDY0ID0gVHlwZXJlcC5JbnQ2NFxubGV0IHR5cGVyZXBfb2ZfbmF0aXZlaW50ID0gVHlwZXJlcC5OYXRpdmVpbnRcbmxldCB0eXBlcmVwX29mX2NoYXIgPSBUeXBlcmVwLkNoYXJcbmxldCB0eXBlcmVwX29mX2Zsb2F0ID0gVHlwZXJlcC5GbG9hdFxubGV0IHR5cGVyZXBfb2Zfc3RyaW5nID0gVHlwZXJlcC5TdHJpbmdcbmxldCB0eXBlcmVwX29mX2J5dGVzID0gVHlwZXJlcC5CeXRlc1xubGV0IHR5cGVyZXBfb2ZfYm9vbCA9IFR5cGVyZXAuQm9vbFxubGV0IHR5cGVyZXBfb2ZfdW5pdCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2Zfb3B0aW9uIHJlcCA9IFR5cGVyZXAuT3B0aW9uIHJlcFxubGV0IHR5cGVyZXBfb2ZfbGlzdCByZXAgPSBUeXBlcmVwLkxpc3QgcmVwXG5sZXQgdHlwZXJlcF9vZl9hcnJheSByZXAgPSBUeXBlcmVwLkFycmF5IHJlcFxubGV0IHR5cGVyZXBfb2ZfbGF6eV90IHJlcCA9IFR5cGVyZXAuTGF6eSByZXBcbmxldCB0eXBlcmVwX29mX3JlZiByZXAgPSBUeXBlcmVwLlJlZiByZXBcbmxldCB0eXBlcmVwX29mX2Z1bmN0aW9uIGRvbSBybmcgPSBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZylcbmxldCB0eXBlcmVwX29mX3R1cGxlMCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2ZfdHVwbGUyIGEgYiA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUzIGEgYiBjID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTQgYSBiIGMgZCA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGU1IGEgYiBjIGQgZSA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpKVxuXG5pbmNsdWRlIE5hbWVfb2ZcblxubGV0IHZhbHVlX3R1cGxlMCA9ICgpXG5cbmxldCB0eXBlcmVwX29mX2ludDYzLCB0eXBlbmFtZV9vZl9pbnQ2MyA9XG4gIGxldCB0eXBlcmVwX2FuZF90eXBlbmFtZV9vZl9pbnQ2M19yZXByXG4gICAgOiB0eXBlIGEgYi4gKGEsIGIpIEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLnQgLT4gYSBUeXBlcmVwLnQgKiBhIFR5cGVuYW1lLnRcbiAgICA9IGZ1bmN0aW9uXG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludCAtPiB0eXBlcmVwX29mX2ludCwgdHlwZW5hbWVfb2ZfaW50XG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludDY0IC0+IHR5cGVyZXBfb2ZfaW50NjQsIHR5cGVuYW1lX29mX2ludDY0XG4gIGluXG4gIHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHIgQmFzZS5JbnQ2My5Qcml2YXRlLnJlcHJcbjs7XG4iLCIoKiB1c2luZyB0aGUgaGFzaF92YXJpYW50IG9mIHBhX3R5cGVfY29udiBhdCBjb21waWxlIHRpbWUgKilcbmxldCByZXByX29mX3BvbHlfdmFyaWFudCA6IFs+IF0gLT4gaW50ID1cbiAgZnVuIHZhcmlhbnQgLT5cbiAgbGV0IG9iaiA9IE9iai5yZXByIHZhcmlhbnQgaW5cbiAgaWYgT2JqLmlzX2ludCBvYmpcbiAgdGhlbiBPYmoub2JqIG9ialxuICBlbHNlIChcbiAgICBsZXQgc2l6ZSA9IE9iai5zaXplIG9iaiBpblxuICAgIGFzc2VydCAoc2l6ZSA9IDIpO1xuICAgIGxldCByZXByID0gT2JqLmZpZWxkIG9iaiAwIGluXG4gICAgYXNzZXJ0IChPYmouaXNfaW50IHJlcHIpO1xuICAgIE9iai5vYmogcmVwcilcbjs7XG5cbmxldCBoYXNoX3ZhcmlhbnQgcyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9ICgyMjMgKiAhYWNjdSkgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgoMSBsc2wgMzEpIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3Vcbjs7XG5cbigqIGEgZmV3IHVuaXQgdGVzdHMgb2YgY2FzZXMgdGhhdCBoYXZlIHRyaWdnZXJlZCBkaWZmcyBpbiB0aGUgcGFzdCBvZiB0aGlzXG4gICBsaWIgKilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYExhdGVuY3lfc3RhdHMgPSBoYXNoX3ZhcmlhbnQgXCJMYXRlbmN5X3N0YXRzXCIpXG5sZXQgKCkgPSBhc3NlcnQgKHJlcHJfb2ZfcG9seV92YXJpYW50IGB6ZXJvID0gaGFzaF92YXJpYW50IFwiemVyb1wiKVxubGV0W0BpbmxpbmUgbmV2ZXJdIGRvdWJsZV9hcnJheV92YWx1ZSAoKSA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKE9iai5tYWdpYyAwLilcbmxldCBoYXNfZG91YmxlX2FycmF5X3RhZyBhID0gT2JqLmRvdWJsZV9hcnJheV90YWcgPSBPYmoudGFnIChPYmoucmVwciBhKVxuXG5sZXQgKCkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIGRvdWJsZSA9XG4gICAgICB7IGEgOiBmbG9hdFxuICAgICAgOyBiIDogZmxvYXRcbiAgICAgIH1cblxuICAgIHR5cGUgc2ltcGxlID1cbiAgICAgIHsgYyA6IGZsb2F0XG4gICAgICA7IGQgOiBpbnRcbiAgICAgIH1cblxuICAgIGxldCBkb3VibGUgPSB7IGEgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCk7IGIgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCkgfVxuICAgIGxldCBzaW1wbGUgPSB7IGMgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCk7IGQgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCkgfVxuICBlbmRcbiAgaW5cbiAgYXNzZXJ0IChoYXNfZG91YmxlX2FycmF5X3RhZyBNLmRvdWJsZSk7XG4gIGFzc2VydCAobm90IChoYXNfZG91YmxlX2FycmF5X3RhZyBNLnNpbXBsZSkpXG47O1xuIiwibW9kdWxlIE0gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2EgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICgnYSwgJ2IpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAnYyBYLnQgLT4gKCdhLCAnYiwgJ2MpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAnYyBYLnQgLT4gJ2QgWC50IC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIFgudFxuICAgICAgLT4gJ2IgWC50XG4gICAgICAtPiAnYyBYLnRcbiAgICAgIC0+ICdkIFgudFxuICAgICAgLT4gJ2UgWC50XG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IFgudFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgTSAoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYgPSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZlxuXG5tb2R1bGUgSGVscGVyIChBIDogVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUykgKEIgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSA9IHN0cnVjdFxuICB0eXBlIG1hcCA9IHsgbWFwIDogJ2EuICdhIEEudCAtPiAnYSBCLnQgfVxuXG4gIGxldCBtYXBfdmFyaWFudCAodHlwZSB2YXJpYW50KSB7IG1hcCB9ICh2YXJpYW50IDogdmFyaWFudCBBLlZhcmlhbnQudCkgPVxuICAgIGxldCBtYXBfY3JlYXRlID0gZnVuY3Rpb25cbiAgICAgIHwgQS5UYWcuQXJncyBmY3QgLT4gQi5UYWdfaW50ZXJuYWwuQXJncyBmY3RcbiAgICAgIHwgQS5UYWcuQ29uc3QgayAtPiBCLlRhZ19pbnRlcm5hbC5Db25zdCBrXG4gICAgaW5cbiAgICBsZXQgbWFwX3RhZyB0YWcgPVxuICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgIHwgQS5WYXJpYW50LlRhZyB0YWcgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5UYWcubGFiZWwgdGFnIGluXG4gICAgICAgIGxldCByZXAgPSBtYXAgKEEuVGFnLnRyYXZlcnNlIHRhZykgaW5cbiAgICAgICAgbGV0IGFyaXR5ID0gQS5UYWcuYXJpdHkgdGFnIGluXG4gICAgICAgIGxldCBhcmdzX2xhYmVscyA9IEEuVGFnLmFyZ3NfbGFiZWxzIHRhZyBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLlRhZy5pbmRleCB0YWcgaW5cbiAgICAgICAgbGV0IG9jYW1sX3JlcHIgPSBBLlRhZy5vY2FtbF9yZXByIHRhZyBpblxuICAgICAgICBsZXQgdHlpZCA9IEEuVGFnLnR5aWQgdGFnIGluXG4gICAgICAgIGxldCBjcmVhdGUgPSBtYXBfY3JlYXRlIChBLlRhZy5jcmVhdGUgdGFnKSBpblxuICAgICAgICBCLlZhcmlhbnRfaW50ZXJuYWwuVGFnXG4gICAgICAgICAgKEIuVGFnLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLlRhZ19pbnRlcm5hbC5sYWJlbFxuICAgICAgICAgICAgIDsgcmVwXG4gICAgICAgICAgICAgOyBhcml0eVxuICAgICAgICAgICAgIDsgYXJnc19sYWJlbHNcbiAgICAgICAgICAgICA7IGluZGV4XG4gICAgICAgICAgICAgOyBvY2FtbF9yZXByXG4gICAgICAgICAgICAgOyB0eWlkXG4gICAgICAgICAgICAgOyBjcmVhdGVcbiAgICAgICAgICAgICB9KVxuICAgIGluXG4gICAgbGV0IHR5cGVuYW1lID0gQS5WYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCBpblxuICAgIGxldCBwb2x5bW9ycGhpYyA9IEEuVmFyaWFudC5pc19wb2x5bW9ycGhpYyB2YXJpYW50IGluXG4gICAgbGV0IHRhZ3MgPVxuICAgICAgQXJyYXkuaW5pdCAoQS5WYXJpYW50Lmxlbmd0aCB2YXJpYW50KSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF90YWcgKEEuVmFyaWFudC50YWcgdmFyaWFudCBpbmRleCkpXG4gICAgaW5cbiAgICBsZXQgdmFsdWUgKGEgOiB2YXJpYW50KSA9XG4gICAgICBtYXRjaCBBLlZhcmlhbnQudmFsdWUgdmFyaWFudCBhIHdpdGhcbiAgICAgIHwgQS5WYXJpYW50LlZhbHVlIChhdGFnLCBhKSAtPlxuICAgICAgICAoZnVuICh0eXBlIGFyZ3MpIChhdGFnIDogKHZhcmlhbnQsIGFyZ3MpIEEuVGFnLnQpIChhIDogYXJncykgLT5cbiAgICAgICAgICAgbGV0IChCLlZhcmlhbnRfaW50ZXJuYWwuVGFnIGJ0YWcpID0gdGFncy4oQS5UYWcuaW5kZXggYXRhZykgaW5cbiAgICAgICAgICAgKGZ1biAodHlwZSBleCkgKGJ0YWcgOiAodmFyaWFudCwgZXgpIEIuVGFnLnQpIC0+XG4gICAgICAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuVGFnLnR5aWQgYXRhZykgKEIuVGFnLnR5aWQgYnRhZylcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGJ0YWcgPSAoYnRhZyA6ICh2YXJpYW50LCBhcmdzKSBCLlRhZy50KSBpblxuICAgICAgICAgICAgICBCLlZhcmlhbnRfaW50ZXJuYWwuVmFsdWUgKGJ0YWcsIGEpKVxuICAgICAgICAgICAgIGJ0YWcpXG4gICAgICAgICAgYXRhZ1xuICAgICAgICAgIGFcbiAgICBpblxuICAgIEIuVmFyaWFudC5pbnRlcm5hbF91c2Vfb25seSB7IEIuVmFyaWFudF9pbnRlcm5hbC50eXBlbmFtZTsgdGFnczsgcG9seW1vcnBoaWM7IHZhbHVlIH1cbiAgOztcblxuICBsZXQgbWFwX3JlY29yZCAodHlwZSByZWNvcmQpIHsgbWFwIH0gKHJlY29yZCA6IHJlY29yZCBBLlJlY29yZC50KSA9XG4gICAgbGV0IG1hcF9maWVsZCBmaWVsZCA9XG4gICAgICBtYXRjaCBmaWVsZCB3aXRoXG4gICAgICB8IEEuUmVjb3JkLkZpZWxkIGZpZWxkIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IEEuRmllbGQubGFiZWwgZmllbGQgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5GaWVsZC50cmF2ZXJzZSBmaWVsZCkgaW5cbiAgICAgICAgbGV0IGluZGV4ID0gQS5GaWVsZC5pbmRleCBmaWVsZCBpblxuICAgICAgICBsZXQgaXNfbXV0YWJsZSA9IEEuRmllbGQuaXNfbXV0YWJsZSBmaWVsZCBpblxuICAgICAgICBsZXQgdHlpZCA9IEEuRmllbGQudHlpZCBmaWVsZCBpblxuICAgICAgICBsZXQgZ2V0ID0gQS5GaWVsZC5nZXQgZmllbGQgaW5cbiAgICAgICAgQi5SZWNvcmRfaW50ZXJuYWwuRmllbGRcbiAgICAgICAgICAoQi5GaWVsZC5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgICAgICAgIHsgQi5GaWVsZF9pbnRlcm5hbC5sYWJlbDsgcmVwOyBpbmRleDsgaXNfbXV0YWJsZTsgdHlpZDsgZ2V0IH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlJlY29yZC50eXBlbmFtZV9vZl90IHJlY29yZCBpblxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyA9IEEuUmVjb3JkLmhhc19kb3VibGVfYXJyYXlfdGFnIHJlY29yZCBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgQXJyYXkuaW5pdCAoQS5SZWNvcmQubGVuZ3RoIHJlY29yZCkgKGZ1biBpbmRleCAtPlxuICAgICAgICBtYXBfZmllbGQgKEEuUmVjb3JkLmZpZWxkIHJlY29yZCBpbmRleCkpXG4gICAgaW5cbiAgICBsZXQgY3JlYXRlIHsgQi5SZWNvcmRfaW50ZXJuYWwuZ2V0IH0gPVxuICAgICAgbGV0IGdldCAodHlwZSBhKSAoYWZpZWxkIDogKF8sIGEpIEEuRmllbGQudCkgPVxuICAgICAgICBtYXRjaCBmaWVsZHMuKEEuRmllbGQuaW5kZXggYWZpZWxkKSB3aXRoXG4gICAgICAgIHwgQi5SZWNvcmRfaW50ZXJuYWwuRmllbGQgYmZpZWxkIC0+XG4gICAgICAgICAgKGZ1biAodHlwZSBleCkgKGJmaWVsZCA6IChyZWNvcmQsIGV4KSBCLkZpZWxkLnQpIC0+XG4gICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIChBLkZpZWxkLnR5aWQgYWZpZWxkKSAoQi5GaWVsZC50eWlkIGJmaWVsZClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBiZmllbGQgPSAoYmZpZWxkIDogKHJlY29yZCwgYSkgQi5GaWVsZC50KSBpblxuICAgICAgICAgICAgIGdldCBiZmllbGQpXG4gICAgICAgICAgICBiZmllbGRcbiAgICAgIGluXG4gICAgICBBLlJlY29yZC5jcmVhdGUgcmVjb3JkIHsgQS5SZWNvcmQuZ2V0IH1cbiAgICBpblxuICAgIEIuUmVjb3JkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICB7IEIuUmVjb3JkX2ludGVybmFsLnR5cGVuYW1lOyBmaWVsZHM7IGhhc19kb3VibGVfYXJyYXlfdGFnOyBjcmVhdGUgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIE5hbWVkID0gc2lnXG4gIHR5cGUgJ2EgY29tcHV0YXRpb25cblxuICBtb2R1bGUgQ29udGV4dCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICBlbmRcblxuICB0eXBlICdhIHRcblxuICB2YWwgaW5pdCA6IENvbnRleHQudCAtPiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIGdldF93aXBfY29tcHV0YXRpb24gOiAnYSB0IC0+ICdhIGNvbXB1dGF0aW9uXG4gIHZhbCBzZXRfZmluYWxfY29tcHV0YXRpb24gOiAnYSB0IC0+ICdhIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gIHZhbCBzaGFyZSA6IF8gVHlwZXJlcC50IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wdXRhdGlvbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBpbnQgOiBpbnQgdFxuICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgdmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gIHZhbCBjaGFyIDogY2hhciB0XG4gIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gIHZhbCBieXRlcyA6IGJ5dGVzIHRcbiAgdmFsIGJvb2wgOiBib29sIHRcbiAgdmFsIHVuaXQgOiB1bml0IHRcbiAgdmFsIG9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgdmFsIGxpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICB2YWwgYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgdmFsIGxhenlfdCA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgdmFsIHJlZl8gOiAnYSB0IC0+ICdhIHJlZiB0XG4gIHZhbCBmdW5jdGlvbl8gOiAnYSB0IC0+ICdiIHQgLT4gKCdhIC0+ICdiKSB0XG4gIHZhbCB0dXBsZTIgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHR1cGxlMyA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICgnYSAqICdiICogJ2MpIHRcbiAgdmFsIHR1cGxlNCA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gIHZhbCB0dXBsZTUgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAnZCB0IC0+ICdlIHQgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcbiAgdmFsIHJlY29yZCA6ICdhIFJlY29yZC50IC0+ICdhIHRcbiAgdmFsIHZhcmlhbnQgOiAnYSBWYXJpYW50LnQgLT4gJ2EgdFxuXG4gIG1vZHVsZSBOYW1lZCA6IE5hbWVkIHdpdGggdHlwZSAnYSBjb21wdXRhdGlvbiA6PSAnYSB0XG5lbmRcblxuKCogc3BlY2lhbCBmdW5jdG9yIGFwcGxpY2F0aW9uIGZvciBjb21wdXRhdGlvbiBhcyBjbG9zdXJlIG9mIHRoZSBmb3JtIFthIC0+IGJdICopXG5tb2R1bGUgTWFrZV9uYW1lZF9mb3JfY2xvc3VyZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgaW5wdXRcbiAgICB0eXBlICdhIG91dHB1dFxuICAgIHR5cGUgJ2EgdCA9ICdhIGlucHV0IC0+ICdhIG91dHB1dFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHVuaXRcblxuICAgIGxldCBjcmVhdGUgPSBpZ25vcmVcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHJ1bnRpbWVfZGVyZWZlcmVuY2UgOiAnYSBYLnRcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlIDogJ2EgWC50IHJlZlxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgOiAnYSBYLnQgb3B0aW9uIHJlZlxuICAgIH1cblxuICBleGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZ1xuXG4gIGxldCBpbml0ICgpIG5hbWUgPVxuICAgIGxldCBwYXRoID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCBuYW1lKSBpblxuICAgIGxldCByID0gcmVmIChmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkIHBhdGgpKSBpblxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA9IChmdW4gaW5wdXQgLT4gIXIgaW5wdXQpXG4gICAgOyBydW50aW1lX3JlZmVyZW5jZSA9IHJcbiAgICA7IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlID0gcmVmIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gc2hhcmVkID1cbiAgICBtYXRjaCBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UuY29udGVudHMgd2l0aFxuICAgIHwgU29tZSBjbG9zIC0+IGNsb3NcbiAgICB8IE5vbmUgLT4gc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2VcbiAgOztcblxuICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHNoYXJlZCBjb21wdXRhdGlvbiA9XG4gICAgbGV0IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlID0gc2hhcmVkLmNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIGluXG4gICAgbWF0Y2ggY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UuY29udGVudHMgd2l0aFxuICAgIHwgU29tZSBfIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgQmFzZS5waHlzX2VxdWFsIHNoYXJlZC5ydW50aW1lX2RlcmVmZXJlbmNlIGNvbXB1dGF0aW9uIHRoZW4gYXNzZXJ0IGZhbHNlO1xuICAgICAgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgOj0gU29tZSBjb21wdXRhdGlvbjtcbiAgICAgIHNoYXJlZC5ydW50aW1lX3JlZmVyZW5jZSA6PSBjb21wdXRhdGlvbjtcbiAgICAgIGNvbXB1dGF0aW9uXG4gIDs7XG5cbiAgbGV0IHNoYXJlIF8gPSB0cnVlXG5lbmRcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogc3RyaW5nXG4gICAgOyBpbXBsZW1lbnRzIDogVHlwZW5hbWUuVWlkLnQgLT4gYm9vbFxuICAgIH1cblxuICBleGNlcHRpb24gQnJva2VuX2RlcGVuZGVuY3kgb2Ygc3RyaW5nXG5cbiAgbGV0IGNoZWNrX2RlcGVuZGVuY2llcyBuYW1lIHJlcXVpcmVkID1cbiAgICBtYXRjaCByZXF1aXJlZCB3aXRoXG4gICAgfCBbXSAtPiBmdW4gXyAtPiAoKVxuICAgIHwgXyAtPlxuICAgICAgZnVuIHVpZCAtPlxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIHsgbmFtZSA9IG5hbWUnOyBpbXBsZW1lbnRzIH0gLT5cbiAgICAgICAgICAgICBpZiBub3QgKGltcGxlbWVudHMgdWlkKVxuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgKCogc29tZXRoaW5nIGlzIHdyb25nIHdpdGggdGhlIHNldCB1cCwgdGhpcyBpcyBhbiBlcnJvciBkdXJpbmcgdGhlXG4gICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiB0aGUgcHJvZ3JhbSwgd2UgcmF0aGVyIGZhaWwgd2l0aCBhIGh1bWFuXG4gICAgICAgICAgICAgICAgICByZWFkYWJsZSBvdXRwdXQgKilcbiAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIlR5cGVfZ2VuZXJpYyAlUyByZXF1aXJlcyAlUyBmb3IgdWlkICVTXFxuXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgbmFtZSdcbiAgICAgICAgICAgICAgICAgICAoVHlwZW5hbWUuVWlkLm5hbWUgdWlkKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHByZXJyX2VuZGxpbmUgbWVzc2FnZTtcbiAgICAgICAgICAgICAgIHJhaXNlIChCcm9rZW5fZGVwZW5kZW5jeSBtZXNzYWdlKSkpXG4gICAgICAgICAgcmVxdWlyZWRcbiAgOztcbmVuZFxuXG4oKiBFeHRlbmRpbmcgYW4gZXhpc3RpbmcgZ2VuZXJpYyAqKVxubW9kdWxlIHR5cGUgRXh0ZW5kaW5nID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIHZhbCBpZGVudCA6IElkZW50LnRcblxuICAoKiBnZW5lcmljX2lkZW50ICogdHlwZW5hbWUgb3IgaW5mbyAqKVxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6IHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgY29tcHV0YXRpb24gLT4gJ2IgY29tcHV0YXRpb24gLT4gKCdhLCAnYikgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICdkIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICdkIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZSBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICB2YWwgcmVnaXN0ZXIwIDogKG1vZHVsZSBTKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjEgOiAobW9kdWxlIFMxKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjIgOiAobW9kdWxlIFMyKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjMgOiAobW9kdWxlIFMzKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjQgOiAobW9kdWxlIFM0KSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjUgOiAobW9kdWxlIFM1KSAtPiB1bml0XG5cbiAgKCogc3BlY2lhbCBsZXNzIHNjYXJ5IHR5cGUgd2hlbiB0aGUgdHlwZSBoYXMgbm8gcGFyYW1ldGVycyAqKVxuICB2YWwgcmVnaXN0ZXIgOiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gLT4gdW5pdFxuXG4gICgqXG4gICAgIEVzc2VudGlhbGx5IGJlY2F1c2Ugd2UgY2Fubm90IHRhbGsgYWJvdXQgYSB2YXJpYWJsZSBvZiBraW5kICogLT4ga1xuICAgICB2YWwgcmVnaXN0ZXIxIDogJ2EgJ3QgVHlwZXJlcC50IC0+ICgnYSBjb21wdXRhdGlvbiAtPiAnYSAndCBjb21wdXRhdGlvbikgLT4gdW5pdFxuICAgICAuLi5cbiAgKilcbmVuZFxuXG4oKiBJbXBsZW1lbnRpbmcgYSBuZXcgZ2VuZXJpYyAqKVxubW9kdWxlIHR5cGUgU19pbXBsZW1lbnRhdGlvbiA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gICgqIHJhaXNlIHVzaW5nIHRoZSBjdXJyZW50IGlkZW50ICopXG4gIHZhbCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgOiBzdHJpbmcgLT4gJ2FcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgKCpcbiAgICAgU3RhbmRhcmQgY2FzZSwgZmluZCBhIGV4dGVuZGVkX2ltcGxlbWVudGF0aW9uLCBvciBsb29rIGluIHRoZSBjb250ZW50XG4gICopXG4gIHZhbCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb25cbiAgICA6ICBpbXBsZW1lbnRhdGlvblxuICAgIC0+ICdhIFR5cGVyZXAuTmFtZWQudFxuICAgIC0+ICdhIFR5cGVyZXAudCBsYXp5X3Qgb3B0aW9uXG4gICAgLT4gJ2EgY29tcHV0YXRpb25cblxuICAoKlxuICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgbW9yZSBjb250cm9sIG9uIHdoYXQgeW91IHdhbnQgdG8gZG9cbiAgKilcbiAgdmFsIGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb25cbiAgICA6ICBpbXBsZW1lbnRhdGlvblxuICAgIC0+ICdhIFR5cGVyZXAuTmFtZWQudFxuICAgIC0+ICdhIGNvbXB1dGF0aW9uIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBFeHRlbmRpbmdcblxuICB2YWwgb2ZfdHlwZXJlcCA6ICdhIFR5cGVyZXAudCAtPiBbIGBnZW5lcmljIG9mICdhIGNvbXB1dGF0aW9uIF1cblxuICBtb2R1bGUgQ29tcHV0YXRpb24gOiBDb21wdXRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA9ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCByZXF1aXJlZCA6IElkZW50LnQgbGlzdFxuICBlbmQpIDogU19pbXBsZW1lbnRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA9ICdhIFgudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYLnRcbiAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpY19pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICBlbmQpXG5cbiAgKCogd2UgZG8gbm90IHVzZSBjb3JlIHNpbmNlIHdlIGFyZSBlYXJsaWVyIGluIHRoZSBkZXBlbmRlbmNpZXMgZ3JhcGggKilcbiAgbW9kdWxlIFVpZF90YWJsZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSGFzaHRibC5NYWtlIChUeXBlbmFtZS5VaWQpXG5cbiAgICBsZXQgZmluZCB0YWJsZSBrZXkgPVxuICAgICAgaWYgTGF6eS5pc192YWwgdGFibGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGFibGUgPSBMYXp5LmZvcmNlIHRhYmxlIGluXG4gICAgICAgIHRyeSBTb21lIChmaW5kIHRhYmxlIGtleSkgd2l0aFxuICAgICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzID0gSWRlbnQuY2hlY2tfZGVwZW5kZW5jaWVzIFgubmFtZSBYLnJlcXVpcmVkXG5cbiAgICBsZXQgcmVwbGFjZSB0YWJsZSBrZXkgdmFsdWUgPVxuICAgICAgY2hlY2tfZGVwZW5kZW5jaWVzIGtleTtcbiAgICAgIHJlcGxhY2UgKExhenkuZm9yY2UgdGFibGUpIGtleSB2YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbWVtIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgbWVtIHRhYmxlIGtleSlcbiAgICAgIGVsc2UgZmFsc2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2l6ZSA9IDI1NlxuICBsZXQgdGFibGUwID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUxID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUyID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUzID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU0ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU1ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuXG4gIGxldCBpc19yZWdpc3RlcmVkIHVpZCA9XG4gICAgVWlkX3RhYmxlLm1lbSB0YWJsZTAgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTEgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTIgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTMgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTQgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTUgdWlkXG4gIDs7XG5cbiAgbGV0IGlkZW50ID0geyBJZGVudC5uYW1lID0gWC5uYW1lOyBpbXBsZW1lbnRzID0gaXNfcmVnaXN0ZXJlZCB9XG5cbiAgbW9kdWxlIEZpbmQwIChUIDogVHlwZXJlcC5OYW1lZC5UMCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gVC5uYW1lZCBjb21wdXRhdGlvbiBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUwIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMgPSAodmFsIHJlcCA6IFMpIGluXG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biBTLnR5cGVuYW1lX29mX3QgVC50eXBlbmFtZV9vZl9uYW1lZCBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgd2l0bmVzcykgUy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMSAoVCA6IFR5cGVyZXAuTmFtZWQuVDEpIDogc2lnXG4gICAgdmFsIGNvbXB1dGUgOiB1bml0IC0+IChULmEgY29tcHV0YXRpb24gLT4gVC5hIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTEgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzEgPSAodmFsIHJlcCA6IFMxKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMVxuICAgICAgICAgICAgKFMxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMxLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQyIChUIDogVHlwZXJlcC5OYW1lZC5UMikgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUyIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMyID0gKHZhbCByZXAgOiBTMikgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzJcbiAgICAgICAgICAgIChTMilcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzIuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDMgKFQgOiBUeXBlcmVwLk5hbWVkLlQzKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTMgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIHJlcCA6IFMzKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fM1xuICAgICAgICAgICAgKFMzKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiBULmMgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNCAoVCA6IFR5cGVyZXAuTmFtZWQuVDQpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU0IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCByZXAgOiBTNCkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzRcbiAgICAgICAgICAgIChTNClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAoJ2EsICdiLCAnYywgJ2QpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzQuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDUgKFQgOiBUeXBlcmVwLk5hbWVkLlQ1KSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU1IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM1ID0gKHZhbCByZXAgOiBTNSkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzVcbiAgICAgICAgICAgIChTNSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzUuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdW5pdCA9IFR5cGVuYW1lLnN0YXRpY1xuXG4gIGxldCByZWdpc3RlcjAgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gKHZhbCBjb21wdXRlIDogUykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIFMudHlwZW5hbWVfb2ZfdCBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjEgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgY29tcHV0ZSA6IFMxKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMxLnR5cGVuYW1lX29mX3QgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTEgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIyIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIGNvbXB1dGUgOiBTMikgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMi50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTIgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIzIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIGNvbXB1dGUgOiBTMykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMy50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMyB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjQgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNCA9ICh2YWwgY29tcHV0ZSA6IFM0KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM0LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTQgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXI1IGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIGNvbXB1dGUgOiBTNSkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTNS50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTUgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIgKHR5cGUgYSkgdHlwZXJlcF9vZl9hIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwX29mX2FcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2FcbiAgICAgIGxldCBjb21wdXRlID0gY29tcHV0ZVxuICAgIGVuZFxuICAgIGluXG4gICAgcmVnaXN0ZXIwIChtb2R1bGUgUyA6IFMpXG4gIDs7XG5cbiAgKCogSU1QTEVNRU5UQVRJT04gKilcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgbGV0IGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gKHR5cGUgYSkgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQuVDAgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDAgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDEgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDEgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9IChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgOiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQyIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDIgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIDogKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQzIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDMgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQ0IHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDQgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpIChhdXguZ2VuZXJpYyBULmQpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDUgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDUgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b21cbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYSlcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYilcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZSlcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBsZXQgcmFpc2Vfbm90X2ltcGxlbWVudGVkIHN0cmluZyA9IHJhaXNlIChOb3RfaW1wbGVtZW50ZWQgKFgubmFtZSwgc3RyaW5nKSlcblxuICBsZXQgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgY29udGVudCA9XG4gICAgbWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiBhdXggcmVwIHdpdGhcbiAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBjb250ZW50IHdpdGhcbiAgICAgICB8IFNvbWUgKGxhenkgY29udGVudCkgLT4gYXV4LmdlbmVyaWMgY29udGVudFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IHJlcCBpblxuICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWUpXG4gIDs7XG5lbmRcblxubW9kdWxlIF8gPSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLktleSlcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG5cbiAgICBpbmNsdWRlIENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbXB1dGF0aW9uID0gWFxuICBpbmNsdWRlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWClcblxuICBtb2R1bGUgTWVtbyA9IFR5cGVuYW1lLlRhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFguTmFtZWQudFxuICAgIGVuZClcblxuICBtb2R1bGUgSGVscGVyID0gSGVscGVyIChUeXBlcmVwKSAoQ29tcHV0YXRpb24pXG5cbiAgbGV0IG9mX3R5cGVyZXAgcmVwID1cbiAgICBsZXQgY29udGV4dCA9IFguTmFtZWQuQ29udGV4dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbWVtb190YWJsZSA9IE1lbW8uY3JlYXRlIDMyIGluXG4gICAgbGV0IHJlYyBvZl90eXBlcmVwIDogdHlwZSBhLiBhIFR5cGVyZXAudCAtPiBhIHQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLkludCAtPiBYLmludFxuICAgICAgfCBUeXBlcmVwLkludDMyIC0+IFguaW50MzJcbiAgICAgIHwgVHlwZXJlcC5JbnQ2NCAtPiBYLmludDY0XG4gICAgICB8IFR5cGVyZXAuTmF0aXZlaW50IC0+IFgubmF0aXZlaW50XG4gICAgICB8IFR5cGVyZXAuQ2hhciAtPiBYLmNoYXJcbiAgICAgIHwgVHlwZXJlcC5GbG9hdCAtPiBYLmZsb2F0XG4gICAgICB8IFR5cGVyZXAuU3RyaW5nIC0+IFguc3RyaW5nXG4gICAgICB8IFR5cGVyZXAuQnl0ZXMgLT4gWC5ieXRlc1xuICAgICAgfCBUeXBlcmVwLkJvb2wgLT4gWC5ib29sXG4gICAgICB8IFR5cGVyZXAuVW5pdCAtPiBYLnVuaXRcbiAgICAgIHwgVHlwZXJlcC5PcHRpb24gcmVwIC0+IFgub3B0aW9uIChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MaXN0IHJlcCAtPiBYLmxpc3QgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkFycmF5IHJlcCAtPiBYLmFycmF5IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MYXp5IHJlcCAtPiBYLmxhenlfdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuUmVmIHJlcCAtPiBYLnJlZl8gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZykgLT4gWC5mdW5jdGlvbl8gKG9mX3R5cGVyZXAgZG9tKSAob2ZfdHlwZXJlcCBybmcpXG4gICAgICB8IFR5cGVyZXAuVHVwbGUgdHVwbGUgLT5cbiAgICAgICAgKCogZG8gTk9UIHdyaXRlIFtYLnR1cGxlMiAob2ZfdHlwZXJlcCBhKSAob2ZfdHlwZXJlcCBiKV1cbiAgICAgICAgICAgYmVjYXVzZSBvZl90eXBlcmVwIGNhbiBjb250YWluIGEgc2lkZSBlZmZlY3QgYW5kIFthXSBzaG91bGQgYmUgZXhlY3V0ZWRcbiAgICAgICAgICAgYmVmb3JlIFtiXSAqKVxuICAgICAgICAobWF0Y2ggdHVwbGUgd2l0aFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIChhLCBiKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIFgudHVwbGUyIHJhIHJiXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIFgudHVwbGUzIHJhIHJiIHJjXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBYLnR1cGxlNCByYSByYiByYyByZFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBsZXQgcmQgPSBvZl90eXBlcmVwIGQgaW5cbiAgICAgICAgICAgbGV0IHJlID0gb2ZfdHlwZXJlcCBlIGluXG4gICAgICAgICAgIFgudHVwbGU1IHJhIHJiIHJjIHJkIHJlKVxuICAgICAgfCBUeXBlcmVwLlJlY29yZCByZWNvcmQgLT5cbiAgICAgICAgWC5yZWNvcmQgKEhlbHBlci5tYXBfcmVjb3JkIHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSByZWNvcmQpXG4gICAgICB8IFR5cGVyZXAuVmFyaWFudCB2YXJpYW50IC0+XG4gICAgICAgIFgudmFyaWFudCAoSGVscGVyLm1hcF92YXJpYW50IHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSB2YXJpYW50KVxuICAgICAgfCBUeXBlcmVwLk5hbWVkIChuYW1lZCwgY29udGVudCkgLT5cbiAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IG5hbWVkIGluXG4gICAgICAgIChtYXRjaCBNZW1vLmZpbmQgbWVtb190YWJsZSB0eXBlbmFtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgc2hhcmVkIC0+IFguTmFtZWQuZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWRcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiB7IGdlbmVyaWMgPSBvZl90eXBlcmVwIH0gbmFtZWQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGNvbXB1dGF0aW9uIC0+IGNvbXB1dGF0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIGxldCBuYW1lID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCB0eXBlbmFtZSkgaW5cbiAgICAgICAgICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWVcbiAgICAgICAgICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPlxuICAgICAgICAgICAgICAgICBpZiBYLk5hbWVkLnNoYXJlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IHNoYXJlZCA9IFguTmFtZWQuaW5pdCBjb250ZXh0IHR5cGVuYW1lIGluXG4gICAgICAgICAgICAgICAgICAgTWVtby5zZXQgbWVtb190YWJsZSB0eXBlbmFtZSBzaGFyZWQ7XG4gICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCBjb250ZW50IGluXG4gICAgICAgICAgICAgICAgICAgWC5OYW1lZC5zZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICAgICAgICBlbHNlIG9mX3R5cGVyZXAgY29udGVudCkpKVxuICAgIGluXG4gICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCByZXAgaW5cbiAgICBgZ2VuZXJpYyBjb21wdXRhdGlvblxuICA7O1xuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCA9XG4gICAgVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBuYW1lZCA9IFgudFxuICAgICAgICB0eXBlIHQgPSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDBcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEpIG9mX3AxID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSBuYW1lZCA9ICdhIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIHQgPSBwMSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDFcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBwMSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIpIG9mX3AxIG9mX3AyID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdCAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZCA9ICgnYSwgJ2IpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDJcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMpIG9mX3AxIG9mX3AyIG9mX3AzID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWQgPSAoJ2EsICdiLCAnYykgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDNcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMykgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzIHA0KSBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNClcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCkgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQ0XG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQgcDUpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A1KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIGQgPSBwNFxuXG4gICAgICAgIGxldCBkID0gb2ZfcDRcblxuICAgICAgICB0eXBlIGUgPSBwNVxuXG4gICAgICAgIGxldCBlID0gb2ZfcDVcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDVcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnQpXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApIDogVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UwIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpIDogVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA6IFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFgudCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpIDpcbiAgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpIDpcbiAgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTQgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCwgTm9uZSlcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpIDpcbiAgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOYW1lIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcmVsYXRpdmVfdG8gOiBkaXI6c3RyaW5nIC0+IHQgLT4gc3RyaW5nXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgcmVsYXRpdmVfdG8gfmRpciB0ID1cbiAgICBpZiBub3QgKFN0ZGxpYi5GaWxlbmFtZS5pc19yZWxhdGl2ZSB0KSB0aGVuIHQgZWxzZSBTdGRsaWIuRmlsZW5hbWUuY29uY2F0IGRpciB0XG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxfZGlyID1cbiAgbGV0IGRpcl9vcl9lcnJvciA9XG4gICAgbWF0Y2ggU3RkbGliLlN5cy5nZXRjd2QgKCkgd2l0aFxuICAgIHwgdiAtPiBgT2sgdlxuICAgIHwgZXhjZXB0aW9uIGV4biAtPiBgRXhuIGV4blxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCBkaXJfb3JfZXJyb3Igd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYEV4biBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWxlbmFtZSA6IE5hbWUudFxuICAgICAgOyBsaW5lX251bWJlciA6IGludFxuICAgICAgOyBsaW5lX3N0YXJ0IDogaW50XG4gICAgICA7IHN0YXJ0X3BvcyA6IGludFxuICAgICAgOyBlbmRfcG9zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG5cbiAgICBsZXQgdF9vZl9zZXhwID1cbiAgICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDJfID0gXCJmaWxlLm1sLkxvY2F0aW9uLlQudFwiIGluXG4gICAgICAgZnVuIHhfXzAwM18gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9yZWNvcmQucmVjb3JkX29mX3NleHBcbiAgICAgICAgICAgfmNhbGxlcjplcnJvcl9zb3VyY2VfXzAwMl9cbiAgICAgICAgICAgfmZpZWxkczpcbiAgICAgICAgICAgICAoRmllbGRcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImZpbGVuYW1lXCJcbiAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgIDsgY29udiA9IE5hbWUudF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImxpbmVfbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIDsgY29udiA9IGludF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImxpbmVfc3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwic3RhcnRfcG9zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY29udiA9IGludF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImVuZF9wb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPSBFbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICB+aW5kZXhfb2ZfZmllbGQ6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBcImZpbGVuYW1lXCIgLT4gMFxuICAgICAgICAgICAgIHwgXCJsaW5lX251bWJlclwiIC0+IDFcbiAgICAgICAgICAgICB8IFwibGluZV9zdGFydFwiIC0+IDJcbiAgICAgICAgICAgICB8IFwic3RhcnRfcG9zXCIgLT4gM1xuICAgICAgICAgICAgIHwgXCJlbmRfcG9zXCIgLT4gNFxuICAgICAgICAgICAgIHwgXyAtPiAtMSlcbiAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpmYWxzZVxuICAgICAgICAgICB+Y3JlYXRlOlxuICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgIChmaWxlbmFtZSwgKGxpbmVfbnVtYmVyLCAobGluZV9zdGFydCwgKHN0YXJ0X3BvcywgKGVuZF9wb3MsICgpKSkpKSkgOiB0IC0+XG4gICAgICAgICAgICAgICB7IGZpbGVuYW1lOyBsaW5lX251bWJlcjsgbGluZV9zdGFydDsgc3RhcnRfcG9zOyBlbmRfcG9zIH0pXG4gICAgICAgICAgIHhfXzAwM19cbiAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgOztcblxuICAgIGxldCBfID0gdF9vZl9zZXhwXG5cbiAgICBsZXQgc2V4cF9vZl90ID1cbiAgICAgIChmdW4geyBmaWxlbmFtZSA9IGZpbGVuYW1lX18wMDVfXG4gICAgICAgICAgIDsgbGluZV9udW1iZXIgPSBsaW5lX251bWJlcl9fMDA3X1xuICAgICAgICAgICA7IGxpbmVfc3RhcnQgPSBsaW5lX3N0YXJ0X18wMDlfXG4gICAgICAgICAgIDsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMTFfXG4gICAgICAgICAgIDsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxM19cbiAgICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxNF8gPSBzZXhwX29mX2ludCBlbmRfcG9zX18wMTNfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTRfIF0gOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2ludCBzdGFydF9wb3NfXzAxMV8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGluZV9zdGFydF9fMDA5XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX3N0YXJ0XCI7IGFyZ19fMDEwXyBdXG4gICAgICAgICAgIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbGluZV9udW1iZXJfXzAwN18gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZV9udW1iZXJcIjsgYXJnX18wMDhfIF1cbiAgICAgICAgICAgOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwNl8gPSBOYW1lLnNleHBfb2ZfdCBmaWxlbmFtZV9fMDA1XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmaWxlbmFtZVwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA0X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gICAgbGV0IGNvbXBhcmUgPVxuICAgICAgKGZ1biBhX18wMTVfIGJfXzAxNl8gLT5cbiAgICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDE1XyBiX18wMTZfXG4gICAgICAgICB0aGVuIDBcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCBOYW1lLmNvbXBhcmUgYV9fMDE1Xy5maWxlbmFtZSBiX18wMTZfLmZpbGVuYW1lIHdpdGhcbiAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8ubGluZV9udW1iZXIgYl9fMDE2Xy5saW5lX251bWJlciB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMTVfLmxpbmVfc3RhcnQgYl9fMDE2Xy5saW5lX3N0YXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8uc3RhcnRfcG9zIGJfXzAxNl8uc3RhcnRfcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfaW50IGFfXzAxNV8uZW5kX3BvcyBiX18wMTZfLmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSBjb21wYXJlXG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9maWxlIGZpbGVuYW1lID1cbiAgICB7IGZpbGVuYW1lOyBsaW5lX251bWJlciA9IDE7IGxpbmVfc3RhcnQgPSAwOyBzdGFydF9wb3MgPSAwOyBlbmRfcG9zID0gMCB9XG4gIDs7XG5cbiAgbGV0IG9mX3NvdXJjZV9jb2RlX3Bvc2l0aW9uIChwb3MgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSA9XG4gICAgeyBmaWxlbmFtZSA9IE5hbWUub2Zfc3RyaW5nIChTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgcG9zLnBvc19mbmFtZSlcbiAgICA7IGxpbmVfbnVtYmVyID0gcG9zLnBvc19sbnVtXG4gICAgOyBsaW5lX3N0YXJ0ID0gcG9zLnBvc19ib2xcbiAgICA7IHN0YXJ0X3BvcyA9IHBvcy5wb3NfY251bVxuICAgIDsgZW5kX3BvcyA9IHBvcy5wb3NfY251bVxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX3N0cmluZyA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IGV4cGVjdGVkX2xlbmd0aCA9IDMyIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGV4cGVjdGVkX2xlbmd0aFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nLCB1bmV4cGVjdGVkIGxlbmd0aFwiO1xuICAgIGZvciBpID0gMCB0byBleHBlY3RlZF9sZW5ndGggLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+ICgpXG4gICAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nXCJcbiAgICBkb25lO1xuICAgIHNcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFNhbWUgYXMgeyFCeXRlcy5ibGl0X3N0cmluZ30gd2hpY2ggc2hvdWxkIGJlIHByZWZlcnJlZC4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG4gICAgSWYgW3NdIGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIHRoZSBzaW5nbGV0b24gbGlzdCBbW1wiXCJdXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNCAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2FjYyAtPiBjaGFyIC0+ICdhY2MpIC0+ICdhY2MgLT4gc3RyaW5nIC0+ICdhY2NcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2FjYyAtPiAnYWNjKSAtPiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbm9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSBCb2R5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeGFjdCBvZiBzdHJpbmdcbiAgICB8IE91dHB1dFxuICAgIHwgUHJldHR5IG9mICdhXG4gICAgfCBVbnJlYWNoYWJsZVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiAnYSB0KSAtPiAoKVxuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMDZfKSA6ICgoYV9fMDA2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAwNl8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEV4YWN0IGFyZzBfXzAwMl8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDJfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4YWN0XCI7IHJlczBfXzAwM18gXVxuICAgICAgfCBPdXRwdXQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiT3V0cHV0XCJcbiAgICAgIHwgUHJldHR5IGFyZzBfXzAwNF8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlByZXR0eVwiOyByZXMwX18wMDVfIF1cbiAgICAgIHwgVW5yZWFjaGFibGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5yZWFjaGFibGVcIlxuICA7O1xuXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDdfIGJfXzAwOF9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwN18sIGJfXzAwOF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDA5XywgRXhhY3QgX2JfXzAxMF8gLT4gY29tcGFyZV9zdHJpbmcgX2FfXzAwOV8gX2JfXzAxMF9cbiAgICAgIHwgRXhhY3QgXywgXyAtPiAtMVxuICAgICAgfCBfLCBFeGFjdCBfIC0+IDFcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gMFxuICAgICAgfCBPdXRwdXQsIF8gLT4gLTFcbiAgICAgIHwgXywgT3V0cHV0IC0+IDFcbiAgICAgIHwgUHJldHR5IF9hX18wMTFfLCBQcmV0dHkgX2JfXzAxMl8gLT4gX2NtcF9fYSBfYV9fMDExXyBfYl9fMDEyX1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiAtMVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiAxXG4gICAgICB8IFVucmVhY2hhYmxlLCBVbnJlYWNoYWJsZSAtPiAwKVxuICA7O1xuXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAxM18gYl9fMDE0XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAxNV8sIEV4YWN0IF9iX18wMTZfIC0+IGVxdWFsX3N0cmluZyBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gZmFsc2VcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gdHJ1ZVxuICAgICAgfCBPdXRwdXQsIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgT3V0cHV0IC0+IGZhbHNlXG4gICAgICB8IFByZXR0eSBfYV9fMDE3XywgUHJldHR5IF9iX18wMThfIC0+IF9jbXBfX2EgX2FfXzAxN18gX2JfXzAxOF9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gZmFsc2VcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IHRydWUpXG4gIDs7XG5cbiAgbGV0IF8gPSBlcXVhbFxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1hcF9wcmV0dHkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCAoRXhhY3QgXyB8IE91dHB1dCB8IFVucmVhY2hhYmxlKSBhcyB0IC0+IHRcbiAgICB8IFByZXR0eSB4IC0+IFByZXR0eSAoZiB4KVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgdGFnIDogc3RyaW5nIG9wdGlvblxuICA7IGJvZHkgOiAnYSBCb2R5LnRcbiAgOyBleHRpZF9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICA7IGJvZHlfbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxOV9cbiAgICB7IHRhZyA9IHRhZ19fMDIxX1xuICAgIDsgYm9keSA9IGJvZHlfXzAyM19cbiAgICA7IGV4dGlkX2xvY2F0aW9uID0gZXh0aWRfbG9jYXRpb25fXzAyNV9cbiAgICA7IGJvZHlfbG9jYXRpb24gPSBib2R5X2xvY2F0aW9uX18wMjdfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMjBfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyOF8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBib2R5X2xvY2F0aW9uX18wMjdfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keV9sb2NhdGlvblwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjZfID0gRmlsZS5Mb2NhdGlvbi5zZXhwX29mX3QgZXh0aWRfbG9jYXRpb25fXzAyNV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleHRpZF9sb2NhdGlvblwiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjRfID0gQm9keS5zZXhwX29mX3QgX29mX2FfXzAxOV8gYm9keV9fMDIzXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImJvZHlcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIwX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDIyXyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHRhZ19fMDIxXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInRhZ1wiOyBhcmdfXzAyMl8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDIwX1xuOztcblxubGV0IF8gPSBzZXhwX29mX3RcblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAyOV8gYl9fMDMwXyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAyOV8gYl9fMDMwX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggY29tcGFyZV9vcHRpb24gY29tcGFyZV9zdHJpbmcgYV9fMDI5Xy50YWcgYl9fMDMwXy50YWcgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKG1hdGNoIEJvZHkuY29tcGFyZSBfY21wX19hIGFfXzAyOV8uYm9keSBiX18wMzBfLmJvZHkgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKG1hdGNoIEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmV4dGlkX2xvY2F0aW9uIGJfXzAzMF8uZXh0aWRfbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgMCAtPiBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5ib2R5X2xvY2F0aW9uIGJfXzAzMF8uYm9keV9sb2NhdGlvblxuICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgIHwgbiAtPiBuKVxuICAgIHwgbiAtPiBuKVxuOztcblxubGV0IF8gPSBjb21wYXJlXG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMzVfIGJfXzAzNl8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMzVfIGJfXzAzNl9cbiAgdGhlbiB0cnVlXG4gIGVsc2VcbiAgICBTdGRsaWIuKCAmJiApXG4gICAgICAoZXF1YWxfb3B0aW9uIGVxdWFsX3N0cmluZyBhX18wMzVfLnRhZyBiX18wMzZfLnRhZylcbiAgICAgIChTdGRsaWIuKCAmJiApXG4gICAgICAgICAoQm9keS5lcXVhbCBfY21wX19hIGFfXzAzNV8uYm9keSBiX18wMzZfLmJvZHkpXG4gICAgICAgICAoU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgKEZpbGUuTG9jYXRpb24uZXF1YWwgYV9fMDM1Xy5leHRpZF9sb2NhdGlvbiBiX18wMzZfLmV4dGlkX2xvY2F0aW9uKVxuICAgICAgICAgICAgKEZpbGUuTG9jYXRpb24uZXF1YWwgYV9fMDM1Xy5ib2R5X2xvY2F0aW9uIGJfXzAzNl8uYm9keV9sb2NhdGlvbikpKVxuOztcblxubGV0IF8gPSBlcXVhbFxuXG5bQEBAZW5kXVxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBzdHJpbmcgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG4gIGxldCBzZXhwX29mX3QgPSAoZnVuIHhfXzA0MV8gLT4gc2V4cF9vZl90IHNleHBfb2Zfc3RyaW5nIHhfXzA0MV8gOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA9XG4gICAgKGZ1biBhX18wNDJfIGJfXzA0M18gLT4gY29tcGFyZSBjb21wYXJlX3N0cmluZyBhX18wNDJfIGJfXzA0M18gOiB0IC0+IHQgLT4gaW50KVxuICA7O1xuXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5lbmRcblxubGV0IG1hcF9wcmV0dHkgdCB+ZiA9IHsgdCB3aXRoIGJvZHkgPSBCb2R5Lm1hcF9wcmV0dHkgdC5ib2R5IH5mIH1cbiIsIm1vZHVsZSBTdGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpbGUgPSBGaWxlXG4gIG1vZHVsZSBFeHBlY3RhdGlvbiA9IEV4cGVjdGF0aW9uXG5lbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMC0wM10gdXNlIFtFeHBlY3RfdGVzdF9jb21tb25dIGluc3RlYWRcIl1cblxuaW5jbHVkZSBTdGQgW0BAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuIiwibW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgQ1IgKCoqIExlYXZlcyBhIENSLCBzbyB0aGF0IGZlYXR1cmVzIGNhbm5vdCBiZSByZWxlYXNlZC4gKilcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAoKiogT25seSBmb3IgcHB4X2V4cGVjdCB0ZXN0aW5nOyBkbyBub3QgdXNlLiAqKVxuICAgIF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBJTyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgZW5kXG5cbiAgKCoqIFJ1biBhbiBJTyBvcGVyYXRpb24gdW50aWwgY29tcGxldGlvbiAqKVxuICB2YWwgcnVuIDogKHVuaXQgLT4gdW5pdCBJTy50KSAtPiB1bml0XG5cbiAgKCoqIFtzYW5pdGl6ZV0gY2FuIGJlIHVzZWQgdG8gbWFwIGFsbCBvdXRwdXQgc3RyaW5ncywgZS5nLiBmb3IgY2xlYW5zaW5nLiAqKVxuICB2YWwgc2FuaXRpemUgOiBzdHJpbmcgLT4gc3RyaW5nXG5cblxuICAoKiogW3Vwb25fdW5yZWxlYXNhYmxlX2lzc3VlXSBzcGVjaWZpZXMgaG93IHRvIGRlYWwgd2l0aCBvdXRwdXQgdGhhdCBzaG91bGQgbm90IGJlXG4gICAgICByZWxlYXNlZCBldmVuIGlmIGl0IGlzIGFjY2VwdGVkIChlLmcuIGJhY2t0cmFjZXMpLiBUaGUgZGVmYXVsdCBpcyBbYENSXS4gICopXG4gIHZhbCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbmVuZFxuXG4oKiogQ29uZmlndXJhdGlvbiBmb3IgcnVubmluZyBleHBlY3QgdGVzdHMgKilcbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9IHNpZ1xuICAoKiogVG8gY29uZmlndXJlIGV4cGVjdF90ZXN0LCBhZGQgdGhlIGZvbGxvd2luZyBhdCB0aGUgdG9wIG9mIHlvdXIgLm1sIGZpbGUsIG9yIGluIHNvbWVcbiAgICAgIGltcG9ydC5tbDpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnXG4gICAgICAgICAgbGV0IHByZV9yZWRpcmVjdF9ob29rICgpID0gLi4uXG4gICAgICAgIGVuZFxuICAgICAgXX1cblxuICAgICAgTm90ZSB0aGF0IHNpbmNlIGFsbCBleHBlY3QgdGVzdCBhcmUgYWxzbyBpbmxpbmUgdGVzdHMsIHRoZSBpbmxpbmUgdGVzdCBjb25maWd1cmF0aW9uXG4gICAgICBhbHNvIGFwcGxpZXMgdG8gYWxsIGV4cGVjdCB0ZXN0LlxuICAqKVxuXG4gIG1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbW1lbnRfcHJlZml4IDogdCAtPiBzdHJpbmdcblxuICAgICgqKiBNZXNzYWdlIHRvIHByaW50IHdoZW4gYW4gZXhwZWN0YXRpb24gY29udGFpbnMgYSBiYWNrdHJhY2UgKilcbiAgICB2YWwgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSA6IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5TXG5cbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9XG4gIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLkV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc1xuXG5tb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IHQxID0gdDJcblxuICBsZXQgY29tbWVudF9wcmVmaXggPSBmdW5jdGlvblxuICAgIHwgYENSIC0+IFwiQ1IgXCJcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAtPiBcIlwiXG4gIDs7XG5cbiAgbGV0IG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgdCA9XG4gICAgUHJpbnRmLnNwcmludGZcbiAgICAgIHt8XG4oKiAlc2V4cGVjdF90ZXN0X2NvbGxlY3RvcjogVGhpcyB0ZXN0IGV4cGVjdGF0aW9uIGFwcGVhcnMgdG8gY29udGFpbiBhIGJhY2t0cmFjZS5cbiAgIFRoaXMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQgYXMgYmFja3RyYWNlcyBhcmUgZnJhZ2lsZS5cbiAgIFBsZWFzZSBjaGFuZ2UgdGhpcyB0ZXN0IHRvIG5vdCBpbmNsdWRlIGEgYmFja3RyYWNlLiAqKVxuXG58fVxuICAgICAgKGNvbW1lbnRfcHJlZml4IHQpXG4gIDs7XG5lbmRcbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDlcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDI4XFwwMDBcXDAwNVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMDZcXDAwMFxcMDg1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNDBcXDAwMFxcMDMxXFwwMDBcXDA0NlxcMDAwXFwwNDhcXDAwMFxcMDA3XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwNjJcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwxMDNcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTA1XFwwMDBcXDA5NVxcMDAwXFwxMDdcXDAwMFxcMDk1XFwwMDBcXDExM1xcMDAwXFwwMTBcXDAwMFxcMTA0XFwwMDBcXFxuICAgIFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMDRcXDAwMFxcMTIyXFwwMDBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTExXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDEyNVxcMDAwXFwxMjdcXDAwMFxcMDEyXFwwMDBcXDEyNlxcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMTlcXDAwMFxcMTIyXFwwMDBcXDAxM1xcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFwwMjRcXDAwMFxcMDEyXFwwMDBcXDAzOVxcMDAwXFwwMTJcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA2MVxcMDAwXFwwNzFcXDAwMFxcMDU5XFwwMDBcXDA4NlxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAzXFwwMDBcXDAyOVxcMDAwXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAxOFxcMDAwXFwwMjdcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAyNlxcMDAwXFwwMTZcXDAwMFxcMDA1XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIyXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMTNcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDYwXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU2XFwwMDBcXDA1OFxcMDAwXFwwNjJcXDAwMFxcMDQ2XFwwMDBcXDA2M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMzNcXDAwMFxcMDM4XFwwMDBcXDA0M1xcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDYwXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDg1XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI4XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMDE2XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDE3XFwwMDBcXDAyNlxcMDAwXFwwMjRcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTZcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2MVxcMDAwXFwwNDRcXDAwMFxcMDYyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIGNoZWNrIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTYzIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTY4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBub3RfYXRfYm9zIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgNDRcbmFuZCBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTgwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA5IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxODUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgKCBmYWxzZSApXG4jIDE5MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTIgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuIFxuICBsZXQgY29udGFpbnNfYmFja3RyYWNlcyBzID0gY2hlY2sgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4jIDIwMSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcbiIsIm9wZW4gRXhwZWN0X3Rlc3RfY29tbW9uXG5tb2R1bGUgTGlzdCA9IExpc3RMYWJlbHNcblxubW9kdWxlIFRlc3Rfb3V0Y29tZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZmlsZV9kaWdlc3QgOiBGaWxlLkRpZ2VzdC50XG4gICAgOyBsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICAgIDsgZXhwZWN0YXRpb25zIDogRXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIDogRXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgOyBzYXZlZF9vdXRwdXQgOiAoRmlsZS5Mb2NhdGlvbi50ICogc3RyaW5nKSBsaXN0XG4gICAgOyB0cmFpbGluZ19vdXRwdXQgOiBzdHJpbmdcbiAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbiAgICA7IHVuY2F1Z2h0X2V4biA6IChleG4gKiBQcmludGV4Yy5yYXdfYmFja3RyYWNlKSBvcHRpb25cbiAgICB9XG5lbmRcblxubGV0IHRlc3RzX3J1biA6IFRlc3Rfb3V0Y29tZS50IGxpc3QgcmVmID0gcmVmIFtdXG5cbmxldCBwcm90ZWN0IH5maW5hbGx5IH5mID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgZmluYWxseSAoKTtcbiAgICByYWlzZSBlXG47O1xuXG5tb2R1bGUgQ3VycmVudF9maWxlID0gc3RydWN0XG4gIGxldCBjdXJyZW50ID0gcmVmIE5vbmVcblxuICBsZXQgc2V0IH5hYnNvbHV0ZV9maWxlbmFtZSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBjdXJyZW50IDo9IFNvbWUgYWJzb2x1dGVfZmlsZW5hbWVcbiAgICB8IFNvbWUgXyAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5zZXQ6IGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgdW5zZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgXyAtPiBjdXJyZW50IDo9IE5vbmVcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IudW5zZXQ6IG5vdCBzZXRcIlxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgZm4gLT4gZm5cbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuZ2V0OiBub3Qgc2V0XCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2F2ZWQgOiAoRmlsZS5Mb2NhdGlvbi50ICogaW50KSBsaXN0XG4gICAgOyBjaGFuIDogb3V0X2NoYW5uZWxcbiAgICA7IGZpbGVuYW1lIDogRmlsZS5OYW1lLnRcbiAgICB9XG5cbiAgZXh0ZXJuYWwgYmVmb3JlX3Rlc3RcbiAgICA6ICBvdXRwdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgYWZ0ZXJfdGVzdFxuICAgIDogIHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3RcIlxuXG4gIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXCJcblxuICBsZXQgZ2V0X3Bvc2l0aW9uICgpID0gcG9zX291dCBzdGRvdXRcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgZmlsZW5hbWUgPSBGaWxlbmFtZS50ZW1wX2ZpbGUgXCJleHBlY3QtdGVzdFwiIFwib3V0cHV0XCIgaW5cbiAgICBsZXQgY2hhbiA9IG9wZW5fb3V0X2JpbiBmaWxlbmFtZSBpblxuICAgIGJlZm9yZV90ZXN0IH5vdXRwdXQ6Y2hhbiB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgeyBjaGFuOyBmaWxlbmFtZSA9IEZpbGUuTmFtZS5vZl9zdHJpbmcgZmlsZW5hbWU7IHNhdmVkID0gW10gfVxuICA7O1xuXG4gIGxldCByZWxhdGl2ZV9maWxlbmFtZSB0ID0gRmlsZS5OYW1lLnJlbGF0aXZlX3RvIH5kaXI6KEZpbGUuaW5pdGlhbF9kaXIgKCkpIHQuZmlsZW5hbWVcblxuICBsZXQgd2l0aF9pYyBmbmFtZSB+ZiA9XG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBwcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gY2xvc2VfaW4gaWMpIH5mOihmdW4gKCkgLT4gZiBpYylcbiAgOztcblxuICBsZXQgY3VycmVudF90ZXN0IDogKEZpbGUuTG9jYXRpb24udCAqIHQpIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuICBsZXQgYW1fcnVubmluZ19leHBlY3RfdGVzdCAoKSA9IE9wdGlvbi5pc19zb21lICFjdXJyZW50X3Rlc3RcblxuICBsZXQgZ2V0X2N1cnJlbnQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgIHwgU29tZSAoXywgdCkgLT4gdFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5JbnN0YW5jZS5nZXRfY3VycmVudCBjYWxsZWQgb3V0c2lkZSBhIHRlc3QuXCJcbiAgOztcblxuICBsZXQgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZFxuICA7O1xuXG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbiA9XG4gICAgbGV0IHBvcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgIGxldCBwcmV2X3BvcyA9XG4gICAgICBtYXRjaCB0LnNhdmVkIHdpdGhcbiAgICAgIHwgW10gLT4gMFxuICAgICAgfCAoXywgcHJldl9wb3MpIDo6IF8gLT4gcHJldl9wb3NcbiAgICBpblxuICAgIHQuc2F2ZWQgPC0gKGxvY2F0aW9uLCBwb3MpIDo6IHQuc2F2ZWQ7XG4gICAgZmx1c2ggdC5jaGFuO1xuICAgIGxldCBsZW4gPSBwb3MgLSBwcmV2X3BvcyBpblxuICAgIHdpdGhfaWMgKHJlbGF0aXZlX2ZpbGVuYW1lIHQpIH5mOihmdW4gaWMgLT5cbiAgICAgIHNlZWtfaW4gaWMgcHJldl9wb3M7XG4gICAgICByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbilcbiAgOztcbmVuZFxuXG5sZXQgYW1fcnVubmluZ19leHBlY3RfdGVzdCA9IEluc3RhbmNlLmFtX3J1bm5pbmdfZXhwZWN0X3Rlc3RcblxubGV0IGZsdXNoICgpID1cbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpO1xuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LmVycl9mb3JtYXR0ZXIgKCk7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3Rkb3V0O1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZGVyclxuOztcblxubGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgbG9jYXRpb24gPVxuICBsZXQgaW5zdGFuY2UgPSBJbnN0YW5jZS5nZXRfY3VycmVudCAoKSBpblxuICBmbHVzaCAoKTtcbiAgSW5zdGFuY2Uuc2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0X2ZsdXNoIGluc3RhbmNlIGxvY2F0aW9uXG47O1xuXG5tb2R1bGUgTWFrZSAoQyA6IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5TKSA9IHN0cnVjdFxuICBtb2R1bGUgSW5zdGFuY2VfaW8gOiBzaWdcbiAgICB2YWwgc2F2ZV9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gdW5pdFxuICAgIHZhbCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHN0cmluZ1xuXG4gICAgdmFsIGV4ZWNcbiAgICAgIDogIGZpbGVfZGlnZXN0OkZpbGUuRGlnZXN0LnRcbiAgICAgIC0+IGxvY2F0aW9uOkZpbGUuTG9jYXRpb24udFxuICAgICAgLT4gZXhwZWN0YXRpb25zOkV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICAgIC0+IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbjpFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICAgIC0+IGY6KHVuaXQgLT4gdW5pdCBDLklPLnQpXG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gSW5zdGFuY2VcblxuICAgIGxldCBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgbGVuID1cbiAgICAgIGxldCBzID0gcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gfD4gQy5zYW5pdGl6ZSBpblxuICAgICAgaWYgbm90IChDaGVja19iYWNrdHJhY2VzLmNvbnRhaW5zX2JhY2t0cmFjZXMgcylcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgLm1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2VcbiAgICAgICAgICBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgIF4gc1xuICAgIDs7XG5cbiAgICBsZXQgZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCA9XG4gICAgICBTeXMuY2hkaXIgKEZpbGUuaW5pdGlhbF9kaXIgKCkpO1xuICAgICAgbGV0IGxhc3Rfb2ZzID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgICBhZnRlcl90ZXN0IH5zdGRvdXQgfnN0ZGVycjtcbiAgICAgIGNsb3NlX291dCB0LmNoYW47XG4gICAgICBsZXQgZm5hbWUgPSByZWxhdGl2ZV9maWxlbmFtZSB0IGluXG4gICAgICBwcm90ZWN0XG4gICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT4gU3lzLnJlbW92ZSBmbmFtZSlcbiAgICAgICAgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgIHdpdGhfaWMgZm5hbWUgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgbGV0IG9mcywgb3V0cHV0cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHQuc2F2ZWQpXG4gICAgICAgICAgICAgICAgfmluaXQ6KDAsIFtdKVxuICAgICAgICAgICAgICAgIH5mOihmdW4gKG9mcywgYWNjKSAobG9jLCBuZXh0X29mcykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChuZXh0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgICAgICAgIG5leHRfb2ZzLCAobG9jLCBzKSA6OiBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRyYWlsaW5nX291dHB1dCA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobGFzdF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXRzLCB0cmFpbGluZ19vdXRwdXQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgZmx1c2ggKCk7XG4gICAgICBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb25cbiAgICA7O1xuXG4gICAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgZmx1c2ggKCk7XG4gICAgICBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvblxuICAgIDs7XG5cbiAgICBsZXQgKCkgPVxuICAgICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCAhY3VycmVudF90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSAobG9jLCB0KSAtPlxuICAgICAgICAgIGxldCBibG9ja3MsIHRyYWlsaW5nID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgICAgICAgICBFcnJvcjogcHJvZ3JhbSBleGl0ZWQgd2hpbGUgZXhwZWN0IHRlc3Qgd2FzIHJ1bm5pbmchXFxuXFxcbiAgICAgICAgICAgICBPdXRwdXQgY2FwdHVyZWQgc28gZmFyOlxcblxcXG4gICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgKEZpbGUuTmFtZS50b19zdHJpbmcgbG9jLmZpbGVuYW1lKVxuICAgICAgICAgICAgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAobG9jLnN0YXJ0X3BvcyAtIGxvYy5saW5lX3N0YXJ0KVxuICAgICAgICAgICAgKGxvYy5lbmRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpO1xuICAgICAgICAgIExpc3QuaXRlciBibG9ja3MgfmY6KGZ1biAoXywgcykgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcyk7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgdHJhaWxpbmcpXG4gICAgOztcblxuICAgIGxldCBleGVjIH5maWxlX2RpZ2VzdCB+bG9jYXRpb24gfmV4cGVjdGF0aW9ucyB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIH5mID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBjdXJyZW50X3Rlc3QgOj0gU29tZSAobG9jYXRpb24sIHQpO1xuICAgICAgbGV0IGZpbmFsbHkgdW5jYXVnaHRfZXhuID1cbiAgICAgICAgQy5ydW4gKGZ1biAoKSAtPlxuICAgICAgICAgIEMuSU8ucmV0dXJuXG4gICAgICAgICAgICAoZmx1c2ggKCk7XG4gICAgICAgICAgICAgY3VycmVudF90ZXN0IDo9IE5vbmU7XG4gICAgICAgICAgICAgbGV0IHNhdmVkX291dHB1dCwgdHJhaWxpbmdfb3V0cHV0ID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgICAgIHRlc3RzX3J1blxuICAgICAgICAgICAgIDo9IHsgZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICAgICA7IGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgOyBleHBlY3RhdGlvbnNcbiAgICAgICAgICAgICAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgICAgIDsgc2F2ZWRfb3V0cHV0XG4gICAgICAgICAgICAgICAgOyB0cmFpbGluZ19vdXRwdXRcbiAgICAgICAgICAgICAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6ICF0ZXN0c19ydW4pKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIEMucnVuIGYgd2l0aFxuICAgICAgfCAoKSAtPiBmaW5hbGx5IE5vbmVcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgICBmaW5hbGx5IChTb21lIChleG4sIGJ0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2F2ZV9vdXRwdXQgPSBJbnN0YW5jZV9pby5zYXZlX291dHB1dFxuICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfYW5kX3JldHVybl9vdXRwdXRcblxuICBsZXQgcnVuXG4gICAgICAgIH5maWxlX2RpZ2VzdFxuICAgICAgICB+KGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50KVxuICAgICAgICB+YWJzb2x1dGVfZmlsZW5hbWU6ZGVmaW5lZF9pblxuICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgfnRhZ3NcbiAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgIH5pbmxpbmVfdGVzdF9jb25maWdcbiAgICAgICAgZlxuICAgID1cbiAgICBQcHhfaW5saW5lX3Rlc3RfbGliLnRlc3RcbiAgICAgIH5jb25maWc6aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICB+ZGVzY3I6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKG1hdGNoIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIHMgLT4gcykpXG4gICAgICB+dGFnc1xuICAgICAgfmZpbGVuYW1lOihGaWxlLk5hbWUudG9fc3RyaW5nIGxvY2F0aW9uLmZpbGVuYW1lKVxuICAgICAgfmxpbmVfbnVtYmVyOmxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICB+c3RhcnRfcG9zOihsb2NhdGlvbi5zdGFydF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgfmVuZF9wb3M6KGxvY2F0aW9uLmVuZF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvciA9IEN1cnJlbnRfZmlsZS5nZXQgKCkgaW5cbiAgICAgICAgIGlmIGRlZmluZWRfaW4gPD4gcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJUcnlpbmcgdG8gcnVuIGFuIGV4cGVjdCB0ZXN0IGZyb20gdGhlIHdyb25nIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICAgLSB0ZXN0IGRlY2xhcmVkIGF0ICVzOiVkXFxuXFxcbiAgICAgICAgICAgICAgLSB0cnlpbmcgdG8gcnVuIGl0IGZyb20gJXNcXG5cIlxuICAgICAgICAgICAgIGRlZmluZWRfaW5cbiAgICAgICAgICAgICBsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgICAgICAgIHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICgqIFRvIGF2b2lkIGNhcHR1cmluZyBub3QteWV0IGZsdXNoZWQgZGF0YSBvZiB0aGUgc3Rkb3V0IGJ1ZmZlciAqKVxuICAgICAgICAgICBDLnJ1biAoZnVuICgpIC0+IEMuSU8ucmV0dXJuIChmbHVzaCAoKSkpO1xuICAgICAgICAgICBJbnN0YW5jZV9pby5leGVjXG4gICAgICAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgICAgICAgfmxvY2F0aW9uXG4gICAgICAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgICAgICB+ZjtcbiAgICAgICAgICAgdHJ1ZSkpXG4gIDs7XG5lbmRcbltAQGlubGluZSBuZXZlcl1cblxubGV0IHRlc3RzX3J1biAoKSA9XG4gICgqIFdlIHByZXBlbmQgdGVzdHMgd2hlbiB3ZSBlbmNvdW50ZXIgdGhlbSwgc28gcmV2ZXJzZSB0aGUgbGlzdCB0byByZWluc3RhdGUgb3JkZXIgKilcbiAgTGlzdC5yZXYgIXRlc3RzX3J1blxuOztcbiIsIm1vZHVsZSBJTyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCByZXR1cm4geCA9IHhcbmVuZFxuXG5sZXQgc2FuaXRpemUgcyA9IHNcbmxldCBydW4gZiA9IGYgKClcbmxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IGBDUlxuIiwibW9kdWxlIFBweF9zZXhwX2NvbnZfbGliID0gc3RydWN0XG4gIG1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG4gIG1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG4gIG1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuZW5kXG5cbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuIiwiKCogVGhpcyBtb2R1bGUgYnVpbGRzIGEgYnVmZmVyIG9mIFwiaW5zdHJ1Y3Rpb25zXCIsIGluIG9yZGVyIHRvIHJlcHJlc2VudCBhIGNvbXBhY3Qgc2VxdWVuY2VcbiAgIG9mIGRlbGltaXRpbmcgcG9zaXRpb25zIGFuZCBuZXdsaW5lcy4gVGhlIHBhcnNlciBzdG9yZXMgdGhlIHBvc2l0aW9ucyBvZiBlYWNoOlxuXG4gICAtIG5ld2xpbmVcbiAgIC0gYmVnaW5uaW5nIG9mIGF0b21cbiAgIC0gZW5kIG9mIGF0b21cbiAgIC0gbGVmdCBwYXJlbnRoZXNpc1xuICAgLSByaWdodCBwYXJlbnRoZXNpc1xuXG4gICBJbnN0cnVjdGlvbnMgYXJlIGVuY29kZWQgYXMgYSBzZXF1ZW5jZSBiaXRzLiBUaGUgbmV4dCBpbnN0cnVjdGlvbiBpcyBkZXRlcm1pbmVkIGJ5XG4gICBsb29raW5nIGF0IHRoZSBuZXh0IGZldyBiaXRzOlxuXG4gICAtIGJpdCAwIHJlcHJlc2VudHMgYSBzYXZlZCBwb3NpdGlvbiBmb2xsb3dlZCBieSBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTAgcmVwcmVzZW50IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMTAgYXJlIGZvbGxvd2VkIGJ5IDUgYml0cyBvZiBwYXlsb2FkLiBUaGUgNS1iaXQgcGF5bG9hZHMgb2YgYW55IHN1YnNlcXVlbnQgMTEwLVxuICAgICBpbnN0cnVjdGlvbnMgYXJlIHNxdWFzaGVkIHRvIGZvcm0gYSBudW1iZXIgKGxlYXN0IHNpZ25pZmljYW50IDUtYml0IGNodW5rIGZpcnN0KS5cbiAgICAgVGhpcyBudW1iZXIgKyA1IHJlcHJlc2VudHMgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMTAgbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBsaW5lICh3aXRoIG9mZnNldCBpbmNyZW1lbnRlZClcbiAgIC0gYml0cyAxMTExIHJlcHJlc2VudCBhIHBvc2l0aW9uIHNhdmVkIHR3aWNlIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcblxuICAgRm9yIGluc3RhbmNlIGxldCdzIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2V4cDpcblxuICAge1tcbiAgICAge3xcbihhYmNcbiAgICAgIFwiZm9vXG4gYmFyXCJcbilcbnx9XG4gICBdfVxuXG4gICB0aGUgc2VxdWVuY2Ugb2YgaW5zdHJ1Y3Rpb25zIHRvIHJlY29yZCBpbiBvcmRlciB0byByZWNvbnN0cnVjdCB0aGUgcG9zaXRpb24gb2YgYW55XG4gICBzdWItc2V4cCBpczpcblxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBmaXJzdCAnKCdcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJhYmNcIlxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGVuZCBvZiBcImFiY1wiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMSBhZHZhbmNlIDZcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMCBhZHZhbmNlIDVcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiZm9vXFxuICBiYXJcIlxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBsYXN0ICcpJ1xuXG4gICAod2Ugc2F2ZSB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMpXG5cbiAgIFRoZSB0b3RhbCBzZXF1ZW5jZSBpcyA0MiBiaXRzLCBzbyB3ZSBuZWVkIDYgYnl0ZXMgdG8gc3RvcmUgaXRcblxuICAgVGhlIHNlcXVlbmNlIG9mIGJpdHMgaXMgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIG9mIDE2LWJpdCB2YWx1ZXMsIHdoZXJlIHRoZSBlYXJsaWVyIGJpdHNcbiAgIGFyZSBtb3N0IHNpZ25pZmljYW50LlxuXG4gICBOb3RlIHRoYXQgdGhlIHBhcnNlciBzdG9yZXMgdGhlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlLiBUaGlzIHdheSBvbmx5IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHJlcXVpcmUgYSBkb3VibGUgcG9zaXRpb25zLiBJZiB3ZSB3ZXJlIHN0b3JpbmcgZW5kIHBvc2l0aW9ucyBhc1xuICAgZXhjbHVzaXZlLCB3ZSB3b3VsZCBuZWVkIGRvdWJsZSBwb3NpdGlvbnMgZm9yIFspKF0gYW5kIFthKF0sIHdoaWNoIGFyZSBsaWtlbHkgdG8gYmVcbiAgIGZyZXF1ZW50IGluIHMtZXhwcmVzc2lvbnMgcHJpbnRlZCB3aXRoIHRoZSBub24gW19odW1dIHByaW50ZXIuIFdlIGV4cGVjdCBzaW5nbGVcbiAgIGNoYXJhY3RlciBhdG9tcyB0byBiZSBsZXNzIGZyZXF1ZW50IHNvIGl0IG1ha2VzIHNlbnNlIHRvIHBlbmFsaXplIHRoZW0gaW5zdGVhZC5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvcyA9XG4gIHsgbGluZSA6IGludFxuICA7IGNvbCA6IGludFxuICA7IG9mZnNldCA6IGludFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcG9zID1cbiAgKGZ1biB7IGxpbmUgPSBsaW5lX18wMDJfOyBjb2wgPSBjb2xfXzAwNF87IG9mZnNldCA9IG9mZnNldF9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2ZfaW50IG9mZnNldF9fMDA2XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZmZzZXRcIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX2ludCBjb2xfXzAwNF8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29sXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9pbnQgbGluZV9fMDAyXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDFfXG4gICAgIDogcG9zIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3BvcyA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgYmVnaW5uaW5nX29mX2ZpbGUgPSB7IGxpbmUgPSAxOyBjb2wgPSAwOyBvZmZzZXQgPSAwIH1cbmxldCBzaGlmdF9wb3MgcG9zIH5jb2xzID0geyBwb3Mgd2l0aCBjb2wgPSBwb3MuY29sICsgY29sczsgb2Zmc2V0ID0gcG9zLm9mZnNldCArIGNvbHMgfVxuXG50eXBlIHJhbmdlID1cbiAgeyBzdGFydF9wb3MgOiBwb3NcbiAgOyBlbmRfcG9zIDogcG9zXG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9yYW5nZSA9XG4gIChmdW4geyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAwOV87IGVuZF9wb3MgPSBlbmRfcG9zX18wMTFfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9wb3MgZW5kX3Bvc19fMDExXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbmRfcG9zXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9wb3Mgc3RhcnRfcG9zX18wMDlfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXJ0X3Bvc1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA4X1xuICAgICA6IHJhbmdlIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3JhbmdlID0gU3RkbGliLmNvbXBhcmVcblxubGV0IG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3BvcyA9XG4gIHsgc3RhcnRfcG9zOyBlbmRfcG9zID0gc2hpZnRfcG9zIGxhc3RfcG9zIH5jb2xzOjEgfVxuOztcblxubW9kdWxlIENodW5rIDogc2lnXG4gICgqKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIFtsZW5ndGgvMl0gc2lnbmVkIDE2LWJpdCB2YWx1ZXMgKilcbiAgdHlwZSB0XG5cbiAgKCoqIExlbmd0aCBpbiBieXRlcy4gKilcbiAgdmFsIGxlbmd0aCA6IGludFxuXG4gIHZhbCBhbGxvYyA6IHVuaXQgLT4gdFxuXG4gICgqKiBbZ2V0MTYgfnBvc10gYW5kIFtzZXQxNiB+cG9zXSBtYW5pcHVsYXRlIHRoZSBbcG9zLzJddGggc3RvcmVkIHZhbHVlLlxuICAgICAgW3Bvc10gbXVzdCBiZSBldmVuLlxuICAgICAgW3NldDE2IHhdIG9ubHkgdXNlcyB0aGUgMTYgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBbeF0uICopXG4gIHZhbCBnZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnRcblxuICB2YWwgc2V0MTYgOiB0IC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gICgqIE9DYW1sIHN0cmluZ3MgYWx3YXlzIHdhc3RlIHR3byBieXRlcyBhdCB0aGUgZW5kLCBzbyB3ZSB0YWtlIGEgcG93ZXIgb2YgdHdvIG1pbnVzIHR3b1xuICAgICB0byBiZSBzdXJlIHdlIGRvbid0IHdhc3RlIHNwYWNlLiAqKVxuICBsZXQgbGVuZ3RoID0gNjJcbiAgbGV0IGFsbG9jICgpID0gQnl0ZXMuY3JlYXRlIGxlbmd0aFxuXG4gIGV4dGVybmFsIGdldDE2IDogYnl0ZXMgLT4gcG9zOmludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbiAgZXh0ZXJuYWwgc2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5cbiAgKCogSWYgd2Ugd2FudCB0byBtYWtlIGEgW1Bvc2l0aW9ucy50XSBzZXJpYWxpemFibGU6XG5cbiAgICAge1tcbiAgICAgICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIjs7XG5cbiAgICAgICBsZXQgZ2V0MTYgPVxuICAgICAgICAgaWYgQ2FtbC5TeXMuYXJjaF9iaWdfZW5kaWFuIHRoZW5cbiAgICAgICAgICAgZnVuIGJ1ZiB+cG9zIC0+IGdldDE2IGJ1ZiB+cG9zIHw+IGJzd2FwMTZcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZ2V0MTZcblxuICAgICAgIGxldCBzZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgeCAtPiBzZXQxNiBidWYgfnBvcyAoYnN3YXAxNiB4KVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBzZXQxNlxuICAgICBdfVxuXG4gICopXG5lbmRcblxudHlwZSB0XyA9XG4gIHsgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgc3RvcmVkIGluIFtjaHVua3NdLlxuICAgICAgIFRoZSBsYXN0IFtleHRyYV9iaXRzXSBiaXRzIHdpbGwgYmUgc3RvcmVkIGFzIHRoZSAqbGVhc3QqIHNpZ25pZmljYW50IGJpdHNcbiAgICAgICBvZiB0aGUgYXBwcm9wcmlhdGUgcGFpciBvZiBieXRlcyBvZiB0aGUgbGFzdCBjaHVuay4gKilcbiAgICBudW1fYnl0ZXMgOiBpbnRcbiAgOyBleHRyYV9iaXRzIDogaW50XG4gIDsgaW5pdGlhbF9wb3MgOiBwb3NcbiAgfVxuXG50eXBlIHQgPSB0XyBMYXp5LnRcblxubGV0IG1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMgKGxhenkgdCkgPVxuICBsZXQgbnVtX2ZpZWxkcyA9IDQgaW5cbiAgbGV0IGhlYWRlcl93b3JkcyA9IDEgaW5cbiAgbGV0IHdvcmRfYnl0ZXMgPVxuICAgIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgIHwgMzIgLT4gNFxuICAgIHwgNjQgLT4gOFxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbGV0IGNodW5rX3dvcmRzID1cbiAgICBsZXQgZGl2X2NlaWwgYSBiID0gKGEgKyBiIC0gMSkgLyBiIGluXG4gICAgbGV0IG4gPVxuICAgICAgZGl2X2NlaWxcbiAgICAgICAgKENodW5rLmxlbmd0aFxuICAgICAgICAgKyAxICgqIE5VTCB0ZXJtaW5hdGluZyBieXRlcyAqKVxuICAgICAgICAgKyAxICgqIG51bWJlciBvZiB3YXN0ZWQgYnl0ZXMgdG8gZmlsbCBhIHdvcmQgKikpXG4gICAgICAgIHdvcmRfYnl0ZXNcbiAgICBpblxuICAgIG4gKyBoZWFkZXJfd29yZHNcbiAgaW5cbiAgbGV0IHBvc19maWVsZHMgPSAzIGluXG4gIGxldCBwb3Nfd29yZHMgPSBoZWFkZXJfd29yZHMgKyBwb3NfZmllbGRzIGluXG4gIGxldCBsaXN0X2NvbnNfd29yZHMgPSBoZWFkZXJfd29yZHMgKyAyIGluXG4gIChoZWFkZXJfd29yZHNcbiAgICsgbnVtX2ZpZWxkc1xuICAgKyBwb3Nfd29yZHNcbiAgICsgKExpc3QubGVuZ3RoIHQuY2h1bmtzICogKGNodW5rX3dvcmRzICsgbGlzdF9jb25zX3dvcmRzKSkpXG4gICogd29yZF9ieXRlc1xuOztcblxubW9kdWxlIEJ1aWxkZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rX3BvcyA6IGludFxuICAgIDsgbXV0YWJsZSBmaWxsZWRfY2h1bmtzIDogQ2h1bmsudCBsaXN0ICgqIEZpbGxlZCBjaHVua3MgaW4gcmV2ZXJzZSBvcmRlciAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICAoKiBPZmZzZXQgb2YgdGhlIGxhc3Qgc2F2ZWQgcG9zaXRpb24gb3IgbmV3bGluZSBwbHVzXG4gICAgICAgb25lLCBvciBbaW5pdGlhbF9wb3NdICopXG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICAoKiB0aGUgW251bV9iaXRzXSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFtpbnRfYnVmXVxuICAgICAgIGFyZSB0aGUgYml0cyBub3QgeWV0IHB1c2hlZCB0byBbY2h1bmtdLiAqKVxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIGluaXRpYWxfcG9zIDogcG9zXG4gICAgfVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0LmNodW5rX3BvcyA+PSAwICYmIHQuY2h1bmtfcG9zIDw9IENodW5rLmxlbmd0aCk7XG4gICAgYXNzZXJ0ICh0Lm9mZnNldCA+PSB0LmluaXRpYWxfcG9zLm9mZnNldCk7XG4gICAgYXNzZXJ0ICh0Lm51bV9iaXRzIDw9IDE1KVxuICA7O1xuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSBmYWxzZVxuICBsZXQgaW52YXJpYW50IHQgPSBpZiBjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdFxuXG4gIGxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IGJlZ2lubmluZ19vZl9maWxlKSAoKSA9XG4gICAgeyBjaHVuayA9IENodW5rLmFsbG9jICgpXG4gICAgOyBjaHVua19wb3MgPSAwXG4gICAgOyBmaWxsZWRfY2h1bmtzID0gW11cbiAgICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICAgIDsgaW50X2J1ZiA9IDBcbiAgICA7IG51bV9iaXRzID0gMFxuICAgIDsgaW5pdGlhbF9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgKHBvcyA6IHBvcykgPVxuICAgICgqIFdlIG5lZWQgYSBuZXcgY2h1bmsgYXMgW2NvbnRlbnRzXSBrZWVwcyB0aGUgY3VycmVudCBjaHVuayBpbiB0aGUgY2xvc3VyZSBvZiB0aGVcbiAgICAgICBsYXp5IHZhbHVlLiAqKVxuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMDtcbiAgICB0LmZpbGxlZF9jaHVua3MgPC0gW107XG4gICAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgICB0LmludF9idWYgPC0gMDtcbiAgICB0Lm51bV9iaXRzIDwtIDA7XG4gICAgdC5pbml0aWFsX3BvcyA8LSBwb3NcbiAgOztcblxuICBsZXRbQGlubGluZSBuZXZlcl0gYWxsb2NfbmV3X2NodW5rIHQgPVxuICAgIHQuZmlsbGVkX2NodW5rcyA8LSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcztcbiAgICB0LmNodW5rIDwtIENodW5rLmFsbG9jICgpO1xuICAgIHQuY2h1bmtfcG9zIDwtIDBcbiAgOztcblxuICBsZXQgYWRkX3VpbnQxNiB0IG4gPVxuICAgIGlmIHQuY2h1bmtfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gYWxsb2NfbmV3X2NodW5rIHQ7XG4gICAgQ2h1bmsuc2V0MTYgdC5jaHVuayB+cG9zOnQuY2h1bmtfcG9zIG5cbiAgOztcblxuICBsZXQgYWRkX2JpdHMgdCBuIH5udW1fYml0cyA9XG4gICAgbGV0IGludF9idWYgPSAodC5pbnRfYnVmIGxzbCBudW1fYml0cykgbG9yIG4gaW5cbiAgICBsZXQgbnVtX2JpdHMgPSB0Lm51bV9iaXRzICsgbnVtX2JpdHMgaW5cbiAgICB0LmludF9idWYgPC0gaW50X2J1ZjtcbiAgICBpZiBudW1fYml0cyA8IDE2XG4gICAgdGhlbiB0Lm51bV9iaXRzIDwtIG51bV9iaXRzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2JpdHMgPSBudW1fYml0cyAtIDE2IGluXG4gICAgICB0Lm51bV9iaXRzIDwtIG51bV9iaXRzO1xuICAgICAgYWRkX3VpbnQxNiB0IChpbnRfYnVmIGxzciBudW1fYml0cyk7XG4gICAgICB0LmNodW5rX3BvcyA8LSB0LmNodW5rX3BvcyArIDJcbiAgICAgICgqIG5vIG5lZWQgdG8gY2xlYXIgdGhlIGJpdHMgb2YgaW50X2J1ZiB3ZSBqdXN0IHdyb3RlLCBhcyBmdXJ0aGVyIHNldDE2IHdpbGwgaWdub3JlXG4gICAgICAgICB0aGVzZSBleHRyYSBiaXRzLiAqKSlcbiAgOztcblxuICBsZXQgY29udGVudHMgdCA9XG4gICAgKCogRmx1c2ggdGhlIGN1cnJlbnQgW3QuaW50X2J1Zl0gKilcbiAgICBhZGRfdWludDE2IHQgdC5pbnRfYnVmO1xuICAgIGxldCByZXZfY2h1bmtzID0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3MgaW5cbiAgICBsZXQgY2h1bmtfcG9zID0gdC5jaHVua19wb3MgaW5cbiAgICBsZXQgZXh0cmFfYml0cyA9IHQubnVtX2JpdHMgaW5cbiAgICBsZXQgaW5pdGlhbF9wb3MgPSB0LmluaXRpYWxfcG9zIGluXG4gICAgbGF6eVxuICAgICAgeyBjaHVua3MgPSBMaXN0LnJldiByZXZfY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9ICgoTGlzdC5sZW5ndGggcmV2X2NodW5rcyAtIDEpICogQ2h1bmsubGVuZ3RoKSArIGNodW5rX3Bvc1xuICAgICAgOyBleHRyYV9iaXRzXG4gICAgICA7IGluaXRpYWxfcG9zXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGxvbmdfc2hpZnQgdCBuID1cbiAgICBsZXQgbiA9IHJlZiAobiAtIDUpIGluXG4gICAgd2hpbGUgIW4gPiAwIGRvXG4gICAgICBhZGRfYml0cyB0ICgwYjExMDBfMDAwMCBsb3IgKCFuIGxhbmQgMGIwMDAxXzExMTEpKSB+bnVtX2JpdHM6ODtcbiAgICAgIG4gOj0gIW4gbHNyIDVcbiAgICBkb25lXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiBuID49IDUgKilcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9nZW5fc2xvdyB0IG4gfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBsb25nX3NoaWZ0IHQgbjtcbiAgICBhZGRfYml0cyB0IGluc3RyIH5udW1fYml0czppbnN0cl9iaXRzXG4gIDs7XG5cbiAgbGV0IHNoaWZ0NCA9IDBiMTBfMTBfMTBfMTBcblxuICBsZXRbQGlubGluZSBhbHdheXNdIGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0ciB+aW5zdHJfYml0cyA9XG4gICAgaW52YXJpYW50IHQ7XG4gICAgbGV0IG4gPSBvZmZzZXQgLSB0Lm9mZnNldCBpblxuICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAwIHwgMSB8IDIgfCAzIHwgNCAtPlxuICAgICAgbGV0IG51bV9iaXRzID0gKG4gbHNsIDEpICsgaW5zdHJfYml0cyBpblxuICAgICAgYWRkX2JpdHMgdCAoKHNoaWZ0NCBsc2wgaW5zdHJfYml0cykgbG9yIGluc3RyIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSkgfm51bV9iaXRzXG4gICAgfCA1XG4gICAgfCA2XG4gICAgfCA3XG4gICAgfCA4XG4gICAgfCA5XG4gICAgfCAxMFxuICAgIHwgMTFcbiAgICB8IDEyXG4gICAgfCAxM1xuICAgIHwgMTRcbiAgICB8IDE1XG4gICAgfCAxNlxuICAgIHwgMTdcbiAgICB8IDE4XG4gICAgfCAxOVxuICAgIHwgMjBcbiAgICB8IDIxXG4gICAgfCAyMlxuICAgIHwgMjNcbiAgICB8IDI0XG4gICAgfCAyNVxuICAgIHwgMjZcbiAgICB8IDI3XG4gICAgfCAyOFxuICAgIHwgMjlcbiAgICB8IDMwXG4gICAgfCAzMVxuICAgIHwgMzJcbiAgICB8IDMzXG4gICAgfCAzNFxuICAgIHwgMzVcbiAgICB8IDM2IC0+XG4gICAgICBhZGRfYml0c1xuICAgICAgICB0XG4gICAgICAgICgoKDBiMTEwMF8wMDAwIGxvciAobiAtIDUpKSBsc2wgaW5zdHJfYml0cykgbG9yIGluc3RyKVxuICAgICAgICB+bnVtX2JpdHM6KDggKyBpbnN0cl9iaXRzKVxuICAgIHwgXyAtPlxuICAgICAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmFkZF9nZW5cIjtcbiAgICAgIGFkZF9nZW5fc2xvdyB0IG4gfmluc3RyIH5pbnN0cl9iaXRzXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIwIH5pbnN0cl9iaXRzOjFcbiAgbGV0IGFkZF90d2ljZSB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIxMTExIH5pbnN0cl9iaXRzOjRcbiAgbGV0IGFkZF9uZXdsaW5lIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTAgfmluc3RyX2JpdHM6NFxuZW5kXG5cbnR5cGUgcG9zaXRpb25zID0gdFxuXG5tb2R1bGUgSXRlcmF0b3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHBvc2l0aW9ucyAtPiB0XG5cbiAgZXhjZXB0aW9uIE5vX21vcmVcblxuICAoKiBbYWR2YW5jZSB0IH5za2lwXSBpZ25vcmVzIFtza2lwXSBzYXZlZCBwb3NpdGlvbnMgYW5kIHJldHVybnMgdGhlIG5leHQgc2F2ZWQgcG9zaXRpb24uXG4gICAgIFJhaXNlcyBbTm9fbW9yZV0gd2hlbiByZWFjaGluZyB0aGUgZW5kIG9mIHRoZSBwb3NpdGlvbiBzZXQuICopXG4gIHZhbCBhZHZhbmNlX2V4biA6IHQgLT4gc2tpcDppbnQgLT4gcG9zXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rcyA6IENodW5rLnQgbGlzdFxuICAgIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgYXZhaWxhYmxlIGZyb20gW2luc3RyX3Bvc10gaW5cbiAgICAgICAgIFtjaHVuayA6OiBjaHVua3NdLiAqKVxuICAgICAgbXV0YWJsZSBudW1fYnl0ZXMgOiBpbnRcbiAgICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgICA7IG11dGFibGUgaW5zdHJfcG9zIDogaW50ICgqIHBvc2l0aW9uIGluIFtjaHVua10gKilcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGxpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgYm9sIDogaW50XG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX2JpdHMgOiBpbnQgKCogTnVtYmVyIG9mIGJpdHMgbm90IHlldCBjb25zdW1lZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgcGVuZGluZyA6IHBvcyBvcHRpb25cbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSAoKGxhenkgcCkgOiBwb3NpdGlvbnMpID1cbiAgICBtYXRjaCBwLmNodW5rcyB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IGNodW5rIDo6IGNodW5rcyAtPlxuICAgICAgeyBjaHVua1xuICAgICAgOyBjaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gcC5udW1fYnl0ZXNcbiAgICAgIDsgZXh0cmFfYml0cyA9IHAuZXh0cmFfYml0c1xuICAgICAgOyBpbnN0cl9wb3MgPSAwXG4gICAgICA7IG9mZnNldCA9IHAuaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgICA7IGxpbmUgPSBwLmluaXRpYWxfcG9zLmxpbmVcbiAgICAgIDsgYm9sID0gcC5pbml0aWFsX3Bvcy5vZmZzZXQgLSBwLmluaXRpYWxfcG9zLmNvbFxuICAgICAgOyBpbnRfYnVmID0gMFxuICAgICAgOyBudW1fYml0cyA9IDBcbiAgICAgIDsgcGVuZGluZyA9IE5vbmVcbiAgICAgIH1cbiAgOztcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gIGxldCBub19tb3JlICgpID0gcmFpc2Vfbm90cmFjZSBOb19tb3JlXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGZldGNoX2NodW5rIHQgPVxuICAgIG1hdGNoIHQuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB0Lmluc3RyX3BvcyA8LSAwO1xuICAgICAgdC5udW1fYnl0ZXMgPC0gdC5udW1fYnl0ZXMgLSBDaHVuay5sZW5ndGg7XG4gICAgICB0LmNodW5rIDwtIGNodW5rO1xuICAgICAgdC5jaHVua3MgPC0gY2h1bmtzXG4gIDs7XG5cbiAgbGV0IGZldGNoIHQgPVxuICAgIGlmIHQuaW5zdHJfcG9zID4gdC5udW1fYnl0ZXMgdGhlbiBub19tb3JlICgpO1xuICAgIGlmIHQuaW5zdHJfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gZmV0Y2hfY2h1bmsgdDtcbiAgICBsZXQgdiA9IENodW5rLmdldDE2IHQuY2h1bmsgfnBvczp0Lmluc3RyX3BvcyBpblxuICAgIGxldCBhZGRlZF9iaXRzID0gaWYgdC5pbnN0cl9wb3MgPSB0Lm51bV9ieXRlcyB0aGVuIHQuZXh0cmFfYml0cyBlbHNlIDE2IGluXG4gICAgdC5pbnRfYnVmIDwtICh0LmludF9idWYgbHNsIGFkZGVkX2JpdHMpIGxvciAodiBsYW5kICgoMSBsc2wgYWRkZWRfYml0cykgLSAxKSk7XG4gICAgdC5udW1fYml0cyA8LSB0Lm51bV9iaXRzICsgYWRkZWRfYml0cztcbiAgICB0Lmluc3RyX3BvcyA8LSB0Lmluc3RyX3BvcyArIDJcbiAgOztcblxuICBsZXQgbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzID1cbiAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHNcbiAgICB0aGVuIChcbiAgICAgIGZldGNoIHQ7XG4gICAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHMgdGhlbiBub19tb3JlICgpKTtcbiAgICBsZXQgbiA9ICh0LmludF9idWYgbHNyICh0Lm51bV9iaXRzIC0gbnVtX2JpdHMpKSBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkgaW5cbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgLSBudW1fYml0cztcbiAgICBuXG4gIDs7XG5cbiAgKCogW29mZnNldF9zaGlmdF0gYW5kIFtvZmZzZXRfc2hpZnRfbnVtX2JpdHNdIGVuY29kZSB0aGUgb2Zmc2V0IG51bWJlclxuICAgICBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZyBbMTEwXSBpbnN0cnVjdGlvbnMuICopXG4gIGxldCByZWMgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQgfm9mZnNldF9zaGlmdF9udW1fYml0cyA9XG4gICAgbWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKCogYml0IHNlcSAwIC0+IG5ldyBpdGVtICopXG4gICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgaW5cbiAgICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfVxuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKCogYml0IHNlcSAxMCAtPiBzaGlmdCAqKVxuICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAoKiBiaXQgc2VxIDExMCAtPiBsb25nIHNoaWZ0ICopXG4gICAgICAgICAgICBsZXQgbiA9IG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czo1IGluXG4gICAgICAgICAgICBsZXQgb2Zmc2V0X3NoaWZ0ID0gaWYgb2Zmc2V0X3NoaWZ0X251bV9iaXRzID0gMCB0aGVuIDUgZWxzZSBvZmZzZXRfc2hpZnQgaW5cbiAgICAgICAgICAgIGFkdmFuY2VcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICB+c2tpcFxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0OihvZmZzZXRfc2hpZnQgKyAobiBsc2wgb2Zmc2V0X3NoaWZ0X251bV9iaXRzKSlcbiAgICAgICAgICAgICAgfm9mZnNldF9zaGlmdF9udW1fYml0czoob2Zmc2V0X3NoaWZ0X251bV9iaXRzICsgNSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTAgLT4gbmV3bGluZSAqKVxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgICAgICAgdC5ib2wgPC0gdC5vZmZzZXQ7XG4gICAgICAgICAgICAgICB0LmxpbmUgPC0gdC5saW5lICsgMTtcbiAgICAgICAgICAgICAgIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTEgLT4gMiBuZXcgaXRlbXMgKilcbiAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgICAgICAgICAgIGlmIHNraXAgPD0gMVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwb3MgPSB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfSBpblxuICAgICAgICAgICAgICAgICBpZiBza2lwID0gMCB0aGVuIHQucGVuZGluZyA8LSBTb21lIHBvcztcbiAgICAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAyKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowKSkpXG4gIDs7XG5cbiAgbGV0IGFkdmFuY2VfZXhuIHQgfnNraXAgPVxuICAgIG1hdGNoIHQucGVuZGluZyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPlxuICAgICAgdC5wZW5kaW5nIDwtIE5vbmU7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiBwb3NcbiAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMSkgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgIHwgTm9uZSAtPiBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICA7O1xuZW5kXG5cbmxldCBmaW5kIHQgYSBiID1cbiAgaWYgYSA8IDAgfHwgYiA8PSBhIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5maW5kXCI7XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgdHJ5XG4gICAgbGV0IHN0YXJ0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6YSBpblxuICAgIGxldCBsYXN0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6KGIgLSBhIC0gMSkgaW5cbiAgICBtYWtlX3JhbmdlX2luY2wgfnN0YXJ0X3BvcyB+bGFzdF9wb3NcbiAgd2l0aFxuICB8IEl0ZXJhdG9yLk5vX21vcmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBvc2l0aW9uLmZpbmRcIlxuOztcblxubGV0IHJlYyBzdWJfc2V4cF9jb3VudCAoc2V4cCA6IFNleHAudCkgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIF8gLT4gMVxuICB8IExpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCBsIH5pbml0OjEgfmY6KGZ1biBhY2MgeCAtPiBhY2MgKyBzdWJfc2V4cF9jb3VudCB4KVxuOztcblxubW9kdWxlIFNleHBfc2VhcmNoID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBGb3VuZCBvZiBpbnRcblxuICBsZXQgcmVjIGxvb3AgfnN1YiBpbmRleCAoc2V4cCA6IFNleHAudCkgPVxuICAgIGlmIHNleHAgPT0gc3ViXG4gICAgdGhlbiByYWlzZV9ub3RyYWNlIChGb3VuZCBpbmRleClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBBdG9tIF8gLT4gaW5kZXggKyAyXG4gICAgICB8IExpc3QgbCAtPlxuICAgICAgICBsZXQgaW5kZXggPSBsb29wX2xpc3QgfnN1YiAoaW5kZXggKyAxKSBsIGluXG4gICAgICAgIGluZGV4ICsgMSlcblxuICBhbmQgbG9vcF9saXN0IH5zdWIgaW5kZXggKHNleHBzIDogU2V4cC50IGxpc3QpID1cbiAgICBMaXN0LmZvbGRfbGVmdCBzZXhwcyB+aW5pdDppbmRleCB+ZjoobG9vcCB+c3ViKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZSB0IH5zdWIgYSA9XG4gICAgbGV0IGIgPSBhICsgKHN1Yl9zZXhwX2NvdW50IHN1YiAqIDIpIC0gMSBpblxuICAgIFNvbWUgKGZpbmQgdCBhIGIpXG4gIDs7XG5cbiAgbGV0IGZpbmRfc3ViX3NleHBfcGh5cyB0IHNleHAgfnN1YiA9XG4gICAgbWF0Y2ggbG9vcCB+c3ViIDAgc2V4cCB3aXRoXG4gICAgfCAoXyA6IGludCkgLT4gTm9uZVxuICAgIHwgZXhjZXB0aW9uIEZvdW5kIG4gLT4gZmluYWxpemUgdCB+c3ViIG5cbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXMgdCBzZXhwcyB+c3ViID1cbiAgICBtYXRjaCBsb29wX2xpc3QgfnN1YiAwIHNleHBzIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuZW5kXG5cbmxldCBmaW5kX3N1Yl9zZXhwX3BoeXMgPSBTZXhwX3NlYXJjaC5maW5kX3N1Yl9zZXhwX3BoeXNcbmxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgaXRlciA9IEl0ZXJhdG9yLmNyZWF0ZSB0IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIG1hdGNoIEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCB3aXRoXG4gICAgfCBleGNlcHRpb24gSXRlcmF0b3IuTm9fbW9yZSAtPiBMaXN0LnJldiBhY2NcbiAgICB8IHBvcyAtPiBsb29wIChwb3MgOjogYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IHRvX2xpc3QgdCB8PiBBcnJheS5vZl9saXN0XG5sZXQgY29tcGFyZSB0MSB0MiA9IFN0ZGxpYi5jb21wYXJlICh0b19hcnJheSB0MSkgKHRvX2FycmF5IHQyKVxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX3BvcyAodG9fYXJyYXkgdClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IEF0b20gb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGF0b20gOiBzdHJpbmdcbiAgICAgIDsgdW5lc2NhcGVkIDogc3RyaW5nIG9wdGlvblxuICAgICAgfVxuICB8IExpc3Qgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGVsZW1lbnRzIDogdF9vcl9jb21tZW50IGxpc3RcbiAgICAgIH1cblxuYW5kIHRfb3JfY29tbWVudCA9XG4gIHwgU2V4cCBvZiB0XG4gIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbmFuZCBjb21tZW50ID1cbiAgfCBQbGFpbl9jb21tZW50IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBjb21tZW50IDogc3RyaW5nXG4gICAgICB9XG4gIHwgU2V4cF9jb21tZW50IG9mXG4gICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICA7IGNvbW1lbnRzIDogY29tbWVudCBsaXN0XG4gICAgICA7IHNleHAgOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHJlYyBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IEF0b20geyBsb2MgPSBsb2NfXzAwMl87IGF0b20gPSBhdG9tX18wMDRfOyB1bmVzY2FwZWQgPSB1bmVzY2FwZWRfXzAwNl8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwMV8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX3N0cmluZyB1bmVzY2FwZWRfXzAwNl8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVuZXNjYXBlZFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX3N0cmluZyBhdG9tX18wMDRfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJhdG9tXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDAzXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDAyXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiQXRvbVwiIDo6IGJuZHNfXzAwMV8pXG4gICAgfCBMaXN0IHsgbG9jID0gbG9jX18wMDlfOyBlbGVtZW50cyA9IGVsZW1lbnRzX18wMTFfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDhfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdF9vcl9jb21tZW50IGVsZW1lbnRzX18wMTFfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbGVtZW50c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwOV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkxpc3RcIiA6OiBibmRzX18wMDhfKVxuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfdF9vcl9jb21tZW50ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBTZXhwIGFyZzBfXzAxM18gLT5cbiAgICAgIGxldCByZXMwX18wMTRfID0gc2V4cF9vZl90IGFyZzBfXzAxM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDE0XyBdXG4gICAgfCBDb21tZW50IGFyZzBfXzAxNV8gLT5cbiAgICAgIGxldCByZXMwX18wMTZfID0gc2V4cF9vZl9jb21tZW50IGFyZzBfXzAxNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbW1lbnRcIjsgcmVzMF9fMDE2XyBdXG4gICAgICA6IHRfb3JfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbmFuZCBzZXhwX29mX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBsb2NfXzAxOF87IGNvbW1lbnQgPSBjb21tZW50X18wMjBfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMTdfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMjFfID0gc2V4cF9vZl9zdHJpbmcgY29tbWVudF9fMDIwXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29tbWVudFwiOyBhcmdfXzAyMV8gXSA6OiBibmRzX18wMTdfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAxOV8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAxOF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxOV8gXSA6OiBibmRzX18wMTdfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlBsYWluX2NvbW1lbnRcIiA6OiBibmRzX18wMTdfKVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGhhc2hfc2VtaV9wb3NfXzAyM19cbiAgICAgICAgOyBjb21tZW50cyA9IGNvbW1lbnRzX18wMjVfXG4gICAgICAgIDsgc2V4cCA9IHNleHBfXzAyN19cbiAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAyMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyOF8gPSBzZXhwX29mX3Qgc2V4cF9fMDI3XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V4cFwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyNl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9jb21tZW50IGNvbW1lbnRzX18wMjVfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50c1wiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyNF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9wb3MgaGFzaF9zZW1pX3Bvc19fMDIzXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiaGFzaF9zZW1pX3Bvc1wiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBfY29tbWVudFwiIDo6IGJuZHNfXzAyMl8pXG4gICAgICA6IGNvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmUgPSBTdGRsaWIuY29tcGFyZVxubGV0IGNvbXBhcmVfdF9vcl9jb21tZW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBjb21wYXJlX2NvbW1lbnQgPSBTdGRsaWIuY29tcGFyZVxuXG5tb2R1bGUgRm9yZ2V0ID0gc3RydWN0XG4gICgqIEluIGNwcyB0byBwcmV2ZW50IG5vbi10YWlsIHJlY3Vyc2lvbi5cbiAgICAgVGhlIHBvbHltb3JwaGlzbSBpbiB0aGUgc2lnbmF0dXJlIGVuc3VyZXMgdGhhdCBlYWNoIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgb25seSB0aHJvdWdoIHRoZSBjb250aW51YXRpb24uICopXG4gIG1vZHVsZSBDcHMgOiBzaWdcbiAgICB2YWwgZm9yZ2V0X3QgOiB0IC0+IChTZXhwLnQgLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2MgOiB0X29yX2NvbW1lbnQgLT4gKFNleHAudCBvcHRpb24gLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2NzIDogdF9vcl9jb21tZW50IGxpc3QgLT4gKFNleHAudCBsaXN0IC0+ICdyKSAtPiAnclxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIGZvcmdldF90IHQgayA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgQXRvbSB7IGF0b207IF8gfSAtPiBrIChTZXhwLkF0b20gYXRvbSlcbiAgICAgIHwgTGlzdCB7IGVsZW1lbnRzOyBfIH0gLT4gZm9yZ2V0X3RvY3MgZWxlbWVudHMgKGZ1biB4cyAtPiBrIChTZXhwLkxpc3QgeHMpKVxuXG4gICAgYW5kIGZvcmdldF90b2NzIHRvY3MgayA9XG4gICAgICBtYXRjaCB0b2NzIHdpdGhcbiAgICAgIHwgW10gLT4gayBbXVxuICAgICAgfCB0b2MgOjogdG9jcyAtPlxuICAgICAgICBmb3JnZXRfdG9jIHRvYyAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZm9yZ2V0X3RvY3MgdG9jcyBrXG4gICAgICAgICAgfCBTb21lIHggLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKHggOjogeHMpKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jIHRvYyBrID1cbiAgICAgIG1hdGNoIHRvYyB3aXRoXG4gICAgICB8IENvbW1lbnQgXyAtPiBrIE5vbmVcbiAgICAgIHwgU2V4cCB0IC0+IGZvcmdldF90IHQgKGZ1biB4IC0+IGsgKFNvbWUgeCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHQgeCA9IENwcy5mb3JnZXRfdCB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50IHggPSBDcHMuZm9yZ2V0X3RvYyB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50cyB4ID0gQ3BzLmZvcmdldF90b2NzIHggKGZ1biB5IC0+IHkpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBdXRvbWF0b25fc3RhY2tfaW50ZlxuXG5tb2R1bGUgRm9yX2NzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IFRfb3JfY29tbWVudCBvZiBDc3QudF9vcl9jb21tZW50ICogdFxuICAgIHwgT3BlbiBvZiBQb3NpdGlvbnMucG9zICogdFxuICAgIHwgSW5fc2V4cF9jb21tZW50IG9mXG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgICAgOyByZXZfY29tbWVudHMgOiBDc3QuY29tbWVudCBsaXN0XG4gICAgICAgIDsgc3RhY2sgOiB0XG4gICAgICAgIH1cblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBnZXRfbWFueSA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY1xuICAgICAgfCBUX29yX2NvbW1lbnQgKHQsIHN0YWNrKSAtPiBsb29wICh0IDo6IGFjYykgc3RhY2tcbiAgICAgIHwgT3BlbiBfIHwgSW5fc2V4cF9jb21tZW50IF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueVwiXG4gICAgaW5cbiAgICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuICA7O1xuZW5kXG5cbm1vZHVsZSBKdXN0X3Bvc2l0aW9ucyA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0XG5cbiAgbGV0IGVtcHR5ID0gKClcbmVuZFxuXG50eXBlIHQgPVxuICB8IEVtcHR5XG4gIHwgT3BlbiBvZiB0XG4gIHwgU2V4cCBvZiBTZXhwLnQgKiB0XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBnZXRfc2luZ2xlID0gZnVuY3Rpb25cbiAgfCBTZXhwIChzZXhwLCBFbXB0eSkgLT4gc2V4cFxuICB8IF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZVwiXG47O1xuXG5sZXQgZ2V0X21hbnkgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY1xuICAgIHwgT3BlbiBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLmdldF9tYW55XCJcbiAgICB8IFNleHAgKHNleHAsIHN0YWNrKSAtPiBsb29wIChzZXhwIDo6IGFjYykgc3RhY2tcbiAgaW5cbiAgZnVuIHN0YWNrIC0+IGxvb3AgW10gc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFNleHBfY29tbWVudFxuICAgIHwgU2V4cFxuZW5kXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0b2tlbl9idWZmZXIgOiBCdWZmZXIudCAoKiogU3RhcnRpbmcgcG9zaXRpb25zIG9mIHRoZSBjdXJyZW50IHRva2VuICoqKVxuICAgIDsgbXV0YWJsZSB0b2tlbl9zdGFydF9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgfCBQb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgdW5pdCkgdFxuICAgIHwgU2V4cCA6ICh1bml0LCBBdXRvbWF0b25fc3RhY2sudCkgdFxuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCBBdXRvbWF0b25fc3RhY2sudCkgdFxuICAgIHwgQ3N0IDogKEZvcl9jc3QudCwgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCkgdFxuZW5kXG5cbm1vZHVsZSByZWMgU3RhdGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB7IG11dGFibGUgYXV0b21hdG9uX3N0YXRlIDogaW50XG4gICAgOyBraW5kIDogKCd1LCAncykgS2luZC50XG4gICAgOyBtdXRhYmxlIGRlcHRoIDogaW50ICgqKiBOdW1iZXIgb2Ygb3BlbmVkICN8IHdoZW4gcGFyc2luZyBhIGJsb2NrIGNvbW1lbnQgKilcbiAgICA7IG11dGFibGUgYmxvY2tfY29tbWVudF9kZXB0aCA6IGludFxuICAgICgqKiBTdGFjayBvZiBpZ25vcmluZyBkZXB0aHM7IHRoZSBjdXJyZW50IGRlcHRoIGlzIHB1c2hlZFxuICAgICAgICBlYWNoIHRpbWUgYSAjOyBjb21tZW50IGlzIGVudGVyZWQuICopXG4gICAgOyBtdXRhYmxlIGlnbm9yaW5nX3N0YWNrIDogaW50IGxpc3RcbiAgICAoKiogV2hlbiBwYXJzaW5nIGFuIGVzY2FwZSBzZXF1ZW5jZSBvZiB0aGUgZm9ybSBcIlxcXFxOTk5cIiBvciBcIlxcXFxYWFwiLCB0aGlzIGFjY3VtdWxhdGVzXG4gICAgICAgIHRoZSBjb21wdXRlZCBudW1iZXIgKilcbiAgICA7IG11dGFibGUgZXNjYXBlZF92YWx1ZSA6IGludCAoKiogQnVmZmVyIGZvciBhY2N1bXVsYXRpbmcgYXRvbXMgKilcbiAgICA7IGF0b21fYnVmZmVyIDogQnVmZmVyLnRcbiAgICA7IHVzZXJfc3RhdGUgOiAndVxuICAgIDsgbW9kZSA6ICgndSwgJ3MpIE1vZGUudFxuICAgIDsgbXV0YWJsZSBmdWxsX3NleHBzIDogaW50XG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludCAoKiogZ2xvYmFsIG9mZnNldCAqKilcbiAgICA7IG11dGFibGUgbGluZV9udW1iZXIgOiBpbnRcbiAgICA7IG11dGFibGUgYm9sX29mZnNldCA6IGludCAoKiogb2Zmc2V0IG9mIGJlZ2lubmluZyBvZiBsaW5lICoqKVxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBNb2RlIDogc2lnXG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgfCBTaW5nbGVcbiAgICB8IE1hbnlcbiAgICB8IEVhZ2VyIG9mXG4gICAgICAgIHsgZ290X3NleHAgOiAoJ3UsICdzKSBTdGF0ZS50IC0+ICdzIC0+ICdzXG4gICAgICAgIDsgbXV0YWJsZSBub19zZXhwX2lzX2Vycm9yIDogYm9vbFxuICAgICAgICB9XG5lbmQgPVxuICBNb2RlXG5cbm1vZHVsZSB0eXBlIEF1dG9tYXRvbl9zdGF0ZSA9IHNpZ1xuICBtb2R1bGUgQ29udGV4dCA9IENvbnRleHRcbiAgbW9kdWxlIEZvcl9jc3QgPSBGb3JfY3N0XG4gIG1vZHVsZSBLaW5kID0gS2luZFxuICBtb2R1bGUgTW9kZSA9IE1vZGVcbiAgbW9kdWxlIFN0YXRlID0gU3RhdGVcblxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBTdGF0ZS50XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9pbml0aWFsX3BvczpQb3NpdGlvbnMucG9zXG4gICAgLT4gKCd1LCAncykgTW9kZS50XG4gICAgLT4gKCd1LCAncykgS2luZC50XG4gICAgLT4gKCd1LCAncykgdFxuXG4gIHZhbCByZXNldCA6ID9wb3M6UG9zaXRpb25zLnBvcyAtPiBfIHQgLT4gdW5pdFxuICB2YWwgcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIF8pIHQgLT4gUG9zaXRpb25zLnRcbiAgdmFsIG1vZGUgOiAoJ3UsICdzKSB0IC0+ICgndSwgJ3MpIE1vZGUudFxuXG4gICgqKiBOdW1iZXIgb2YgY2hhcmFjdGVycyBmZWQgdG8gdGhlIHBhcnNlciAqKVxuICB2YWwgb2Zmc2V0IDogXyB0IC0+IGludFxuXG4gICgqKiBQb3NpdGlvbiBpbiB0aGUgdGV4dCAqKVxuICB2YWwgbGluZSA6IF8gdCAtPiBpbnRcblxuICB2YWwgY29sdW1uIDogXyB0IC0+IGludFxuXG4gICgqKiBXaGV0aGVyIHRoZXJlIGFyZSBzb21lIHVuY2xvc2VkIHBhcmVudGhlc2VzICopXG4gIHZhbCBoYXNfdW5jbG9zZWRfcGFyZW4gOiAoJ3UsICdzKSB0IC0+IGJvb2xcblxuICB2YWwgc2V0X2Vycm9yX3N0YXRlIDogXyB0IC0+IHVuaXRcblxuICAoKiovKiopXG5cbiAgKCpfIE9ubHkgZm9yIGNvbnZlcnRpbmcgZXJyb3JzIHRvIHRoZSBvbGQgcGFyc2VyIGVycm9ycyAqKVxuICB2YWwgYXRvbV9idWZmZXIgOiBfIHQgLT4gQnVmZmVyLnRcblxuICAoKl8gRm9yIGNvdmVyYXRlIHRlc3RzICopXG4gIHZhbCBhdXRvbWF0b25fc3RhdGUgOiAoJ3UsICdzKSB0IC0+IGludFxuICB2YWwgY29udGV4dCA6IF8gdCAtPiBDb250ZXh0LnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZV9pbnRmXG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxub3BlbiBTdGF0ZVxuXG5sZXQgaW5pdGlhbF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gUG9zaXRpb25zLnBvcyAtPiB1ID1cbiAgZnVuIGtpbmQgaW5pdGlhbF9wb3MgLT5cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBTZXhwIC0+ICgpXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5jcmVhdGUgfmluaXRpYWxfcG9zICgpXG4gIHwgQ3N0IC0+XG4gICAgKCogW3Rva2VuX3N0YXJ0X3Bvc10gaXMgc2V0IHRvIGEgZHVtbXkgbG9jYXRpb24gaGVyZS4gSXQgaXMgcHJvcGVybHkgc2V0IHdoZW4gd2VcbiAgICAgICBzdGFydCB0byBjYXB0dXJlIGEgdG9rZW4gZnJvbSB0aGUgaW5wdXQgKilcbiAgICB7IHRva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMTI4OyB0b2tlbl9zdGFydF9wb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUgfVxuOztcblxuKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX2F1dG9tYXRvbl9zdGF0ZS5wcmludF9jb25zdGFudHMgKCkgKilcbmxldCBpbml0aWFsX3N0YXRlID0gMFxubGV0IGVycm9yX3N0YXRlID0gMVxuXG4oKiQqKVxuXG5sZXQgY3JlYXRlID8oaW5pdGlhbF9wb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUpIG1vZGUga2luZCA9XG4gIHsga2luZFxuICA7IGRlcHRoID0gMFxuICA7IGF1dG9tYXRvbl9zdGF0ZSA9IGluaXRpYWxfc3RhdGVcbiAgOyBibG9ja19jb21tZW50X2RlcHRoID0gMFxuICA7IGlnbm9yaW5nX3N0YWNrID0gW11cbiAgOyBlc2NhcGVkX3ZhbHVlID0gMFxuICA7IGF0b21fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgOyB1c2VyX3N0YXRlID0gaW5pdGlhbF91c2VyX3N0YXRlIGtpbmQgaW5pdGlhbF9wb3NcbiAgOyBtb2RlXG4gIDsgZnVsbF9zZXhwcyA9IDBcbiAgOyBvZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXRcbiAgOyBsaW5lX251bWJlciA9IGluaXRpYWxfcG9zLmxpbmVcbiAgOyBib2xfb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0IC0gaW5pdGlhbF9wb3MuY29sXG4gIH1cbjs7XG5cbmxldCBtb2RlIHQgPSB0Lm1vZGVcbmxldCBwb3NpdGlvbnMgdCA9IFBvc2l0aW9ucy5CdWlsZGVyLmNvbnRlbnRzIHQudXNlcl9zdGF0ZVxubGV0IGF0b21fYnVmZmVyIHQgPSB0LmF0b21fYnVmZmVyXG5sZXQgb2Zmc2V0IHN0YXRlID0gc3RhdGUub2Zmc2V0XG5sZXQgbGluZSBzdGF0ZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG5sZXQgY29sdW1uIHN0YXRlID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxubGV0IHBvc2l0aW9uIHQgPSB7IFBvc2l0aW9ucy5jb2wgPSBjb2x1bW4gdDsgbGluZSA9IGxpbmUgdDsgb2Zmc2V0ID0gb2Zmc2V0IHQgfVxuXG5sZXQgcmVzZXRfdXNlcl9zdGF0ZSA6IHR5cGUgdSBzLiAodSwgcykgdCAtPiB1bml0ID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0IHQudXNlcl9zdGF0ZSAocG9zaXRpb24gdClcbiAgfCBDc3QgLT4gQnVmZmVyLmNsZWFyIHQudXNlcl9zdGF0ZS50b2tlbl9idWZmZXJcbjs7XG5cbmxldCByZXNldCA/KHBvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgdCA9XG4gIHQuZGVwdGggPC0gMDtcbiAgdC5hdXRvbWF0b25fc3RhdGUgPC0gaW5pdGlhbF9zdGF0ZTtcbiAgdC5ibG9ja19jb21tZW50X2RlcHRoIDwtIDA7XG4gIHQuaWdub3Jpbmdfc3RhY2sgPC0gW107XG4gIHQuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICB0LmZ1bGxfc2V4cHMgPC0gMDtcbiAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgdC5saW5lX251bWJlciA8LSBwb3MubGluZTtcbiAgdC5ib2xfb2Zmc2V0IDwtIHBvcy5vZmZzZXQgLSBwb3MuY29sO1xuICByZXNldF91c2VyX3N0YXRlIHQ7XG4gIEJ1ZmZlci5jbGVhciB0LmF0b21fYnVmZmVyXG47O1xuXG5sZXQgY29udGV4dCBzdGF0ZSA6IENvbnRleHQudCA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBfIDo6IF8gLT4gU2V4cF9jb21tZW50XG4gIHwgW10gLT4gU2V4cFxuOztcblxubGV0IGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSA9IHN0YXRlLmRlcHRoID4gMFxubGV0IHNldF9lcnJvcl9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZSA8LSBlcnJvcl9zdGF0ZVxubGV0IGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBSZWFzb24gPSBzdHJ1Y3RcbiAgKCpfIFNvbWUgb2YgdGhlc2UgY29tZSBmcm9tIFtQYXJzZXhwX3N5bWJvbGljX2F1dG9tYXRvbi5QYXJzZV9lcnJvcl9yZWFzb25dLiAqKVxuICB0eXBlIHQgPVxuICAgICgqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9wYXJzZV9lcnJvci5wcmludF9jb25zdHJ1Y3RvcnMgKCkgKilcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxuICAgIHwgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnRcbiAgICB8IFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nXG4gICAgKCokKilcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZFxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZVxuICAgIHwgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dFxuICAgIHwgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICAgIHwgVG9vX21hbnlfc2V4cHNcbiAgICB8IFVuY2xvc2VkX3BhcmVuXG5lbmRcblxubW9kdWxlIHR5cGUgUGFyc2VfZXJyb3IgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuICBlbmRcbiAgW0BAb2NhbWwuZG9jIFwiQGlubGluZVwiXVxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIHBvc2l0aW9uIDogdCAtPiBQb3NpdGlvbnMucG9zXG4gIHZhbCBtZXNzYWdlIDogdCAtPiBzdHJpbmdcblxuICAoKiogUmVwb3J0IGFuIGVycm9yIGluIGEgc3R5bGUgc2ltaWxhciB0byBPQ2FtbCwgZm9yIGluc3RhbmNlOlxuXG4gICAgICBGaWxlIFwiYmxhaFwiLCBsaW5lIDQyLCBjaGFyYWN0ZXIgMTA6XG4gICAgICBFcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XG4gICAgICB1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZy5cbiAgKilcbiAgdmFsIHJlcG9ydCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHQgLT4gdW5pdFxuXG4gIGV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiB0XG5cbiAgKCoqLyoqKVxuXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIFJlYXNvbiA9IFJlYXNvblxuXG4gICAgKCoqIFRvIG1hdGNoIHRoZSBvbGQgYmVoYXZpb3IsIHRoZSBvbGQgcGFyc2VyIHNvbWV0aW1lcyByYWlzZWQgW0ZhaWx1cmVdIGFuZCBzb21ldGltZXNcbiAgICAgICAgcmFpc2VkIFtQYXJzZV9lcnJvcl0gKilcbiAgICB2YWwgb2xkX3BhcnNlcl9leG4gOiB0IC0+IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuXG4gICAgdmFsIHJhaXNlIDogUmVhc29uLnQgLT4gUG9zaXRpb25zLnBvcyAtPiBhdF9lb2Y6Ym9vbCAtPiBhdG9tX2J1ZmZlcjpCdWZmZXIudCAtPiAnYVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlX2Vycm9yX2ludGZcblxudHlwZSB0ID1cbiAgeyBwb3NpdGlvbiA6IFBvc2l0aW9ucy5wb3NcbiAgOyBtZXNzYWdlIDogc3RyaW5nXG4gIDsgb2xkX3BhcnNlcl9leG4gOiBbIGBQYXJzZV9lcnJvciB8IGBGYWlsdXJlIF1cbiAgfVxuXG5sZXQgc2V4cF9vZl90IHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuID0gXyB9IDogU2V4cC50ID1cbiAgTGlzdFxuICAgIFsgTGlzdCBbIEF0b20gXCJwb3NpdGlvblwiOyBQb3NpdGlvbnMuc2V4cF9vZl9wb3MgcG9zaXRpb24gXVxuICAgIDsgTGlzdCBbIEF0b20gXCJtZXNzYWdlXCI7IHNleHBfb2Zfc3RyaW5nIG1lc3NhZ2UgXVxuICAgIF1cbjs7XG5cbmxldCBwb3NpdGlvbiB0ID0gdC5wb3NpdGlvblxubGV0IG1lc3NhZ2UgdCA9IHQubWVzc2FnZVxubGV0IG9sZF9wYXJzZXJfZXhuIHQgPSB0Lm9sZF9wYXJzZXJfZXhuXG5cbmxldCByZXBvcnQgcHBmIH5maWxlbmFtZSB0ID1cbiAgbGV0IHBvcyA9IHBvc2l0aW9uIHQgaW5cbiAgbGV0IG1zZyA9IG1lc3NhZ2UgdCBpblxuICBGb3JtYXQuZnByaW50ZlxuICAgIHBwZlxuICAgIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXIgJWQ6XFxuRXJyb3I6IHMtZXhwcmVzc2lvbiBwYXJzaW5nIGVycm9yO1xcbiVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIHBvcy5saW5lXG4gICAgcG9zLmNvbFxuICAgIG1zZ1xuOztcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBhcmcwX18wMDFfIC0+XG4gICAgICBsZXQgcmVzMF9fMDAyXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXJzZV9lcnJvci5tbC5QYXJzZV9lcnJvclwiOyByZXMwX18wMDJfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIChyZWFzb24gOiBSZWFzb24udCkgcG9zaXRpb24gfmF0X2VvZiB+YXRvbV9idWZmZXIgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgKCogVGhlc2UgbWVzc2FnZXMgd2hlcmUgY2hvb3NlbiBzdWNoIHRoYXQgd2UgY2FuIGJ1aWxkIHRoZSB2YXJpb3VzIFNleHBsaWIgcGFyc2luZ1xuICAgICAgIGZ1bmN0aW9ucyBvbiB0b3Agb2YgUGFyc2V4cCBhbmQga2VlcCB0aGUgc2FtZSBleGNlcHRpb25zLlxuXG4gICAgICAgQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzLCBhIHNpbXBsZSBsYXllciBvbiB0b3Agb2YgcGFyc2V4cCB0byBpbXBsZW1lbnQgdGhlXG4gICAgICAgc2V4cGxpYiBBUEkgaXMgcGFzc2luZyBhbGwgdGhlIHNleHBsaWIgdGVzdHMuXG5cbiAgICAgICBOb3RlIHRoYXQgcGFyc2V4cCBtYXRjaGVzIHRoZSBzZW1hbnRpYyBvZiBTZXhwLnBhcnNlIHdoaWNoIGlzIHNsaWdodGx5XG4gICAgICAgZGlmZmVyZW50IGZyb20gdGhlIG9jYW1sbGV4L29jYW1seWFjYyBiYXNlZCBwYXJzZXIgb2YgU2V4cGxpYi4gVGhlIGxhdHRlciBvbmVcbiAgICAgICBpcyBsZXNzIHRlc3RlZCBhbmQgYXNzdW1lZCB0byBiZSBsZXNzIHVzZWQuICopXG4gICAgbWF0Y2ggcmVhc29uIHdpdGhcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGUgLT4gXCJ1bnRlcm1pbmF0ZWQgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGUgLT4gXCJ1bnRlcm1pbmF0ZWQgZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmcgLT4gXCJ1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZ1wiXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudCAtPiBcInVudGVybWluYXRlZCBibG9jayBjb21tZW50XCJcbiAgICB8IEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2UgLT4gXCJlc2NhcGUgc2VxdWVuY2UgaW4gcXVvdGVkIHN0cmluZyBvdXQgb2YgcmFuZ2VcIlxuICAgIHwgVW5jbG9zZWRfcGFyZW4gLT4gXCJ1bmNsb3NlZCBwYXJlbnRoZXNlcyBhdCBlbmQgb2YgaW5wdXRcIlxuICAgIHwgVG9vX21hbnlfc2V4cHMgLT4gXCJzLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YVwiXG4gICAgfCBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWQgLT4gXCJ1bmV4cGVjdGVkIGNoYXJhY3RlcjogJyknXCJcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbSAtPlxuICAgICAgaWYgU3RyaW5nLmVxdWFsIChCdWZmZXIuY29udGVudHMgYXRvbV9idWZmZXIpIFwifFwiXG4gICAgICB0aGVuIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiXG4gICAgICBlbHNlIFwiY29tbWVudCB0b2tlbnMgaW4gdW5xdW90ZWQgYXRvbVwiXG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwIC0+IFwidW50ZXJtaW5hdGVkIHNleHAgY29tbWVudFwiXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jciAtPlxuICAgICAgaWYgYXRfZW9mXG4gICAgICB0aGVuIFwidW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgYWZ0ZXIgY2FycmlhZ2UgcmV0dXJuXCJcbiAgICAgIGVsc2UgXCJ1bmV4cGVjdGVkIGNoYXJhY3RlciBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgIHwgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dCAtPiBcIm5vIHMtZXhwcmVzc2lvbiBmb3VuZCBpbiBpbnB1dFwiXG4gICAgfCBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBhcnNlcl9hdXRvbWF0b246IHBhcnNlciBpcyBkZWFkXCJcbiAgaW5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID1cbiAgICBtYXRjaCByZWFzb24sIGF0X2VvZiB3aXRoXG4gICAgfCBUb29fbWFueV9zZXhwcywgXyB8IF8sIHRydWUgLT4gYEZhaWx1cmVcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbSwgX1xuICAgICAgd2hlbiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCIgLT4gYEZhaWx1cmVcbiAgICB8IF8gLT4gYFBhcnNlX2Vycm9yXG4gIGluXG4gIHJhaXNlIChQYXJzZV9lcnJvciB7IHBvc2l0aW9uOyBtZXNzYWdlOyBvbGRfcGFyc2VyX2V4biB9KVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlYXNvbiA9IFJlYXNvblxuXG4gIGxldCBvbGRfcGFyc2VyX2V4biA9IG9sZF9wYXJzZXJfZXhuXG4gIGxldCByYWlzZSA9IHJhaXNlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBBdXRvbWF0b25fc3RhdGVcbm9wZW4gU3RhdGVcblxubGV0IHJhaXNlX2Vycm9yIDogdHlwZSBhIGIuIChhLCBiKSBBdXRvbWF0b25fc3RhdGUudCAtPiBfID1cbiAgZnVuIHN0YXRlIH5hdF9lb2YgcmVhc29uIC0+XG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgUGFyc2VfZXJyb3IuUHJpdmF0ZS5yYWlzZVxuICAgIHJlYXNvblxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG4gICAgfmF0X2VvZlxuICAgIH5hdG9tX2J1ZmZlcjpzdGF0ZS5hdG9tX2J1ZmZlclxuOztcblxudHlwZSBub25yZWMgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5Db250ZXh0LnQgPVxuICB8IFNleHBfY29tbWVudFxuICB8IFNleHBcblxubGV0IGNvbnRleHQgPSBBdXRvbWF0b25fc3RhdGUuY29udGV4dFxuXG50eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+ICdzIC0+ICdzXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB7IGYgOiAndSAncy4gKCd1LCAncykgdCB9IFtAQHVuYm94ZWRdXG5lbmRcblxubW9kdWxlIEVwc2lsb24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgQXV0b21hdG9uX3N0YXRlLnQgLT4gJ3MgLT4gJ3NcblxuICBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB7IGYgOiAndSAncy4gKCd1LCAncykgdCB9IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kXG5cbmxldCBjdXJyZW50X3BvcyA/KGRlbHRhID0gMCkgc3RhdGUgOiBQb3NpdGlvbnMucG9zID1cbiAgbGV0IG9mZnNldCA9IHN0YXRlLm9mZnNldCArIGRlbHRhIGluXG4gIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyOyBjb2wgPSBvZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0OyBvZmZzZXQgfVxuOztcblxubGV0IHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgeCA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZSA8LSB4XG5sZXQgYWR2YW5jZSBzdGF0ZSA9IHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyAxXG5cbmxldCBhZHZhbmNlX2VvbCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gdW5pdCA9XG4gIGZ1biBzdGF0ZSAtPlxuICBsZXQgbmV3bGluZV9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQgaW5cbiAgc3RhdGUub2Zmc2V0IDwtIG5ld2xpbmVfb2Zmc2V0ICsgMTtcbiAgc3RhdGUuYm9sX29mZnNldCA8LSBzdGF0ZS5vZmZzZXQ7XG4gIHN0YXRlLmxpbmVfbnVtYmVyIDwtIHN0YXRlLmxpbmVfbnVtYmVyICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBQb3NpdGlvbnMuQnVpbGRlci5hZGRfbmV3bGluZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6bmV3bGluZV9vZmZzZXRcbiAgfCBfIC0+ICgpXG47O1xuXG5sZXQgYmxvY2tfY29tbWVudF9kZXB0aCBzdGF0ZSA9IHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGhcblxubGV0IGFkZF90b2tlbl9jaGFyIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIHN0YWNrXG47O1xuXG5sZXQgYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgaXNfaWdub3Jpbmcgc3RhdGUgPVxuICBtYXRjaCBjb250ZXh0IHN0YXRlIHdpdGhcbiAgfCBTZXhwIC0+IGZhbHNlXG4gIHwgU2V4cF9jb21tZW50IC0+IHRydWVcbjs7XG5cbmxldCBpc19ub3RfaWdub3Jpbmcgc3RhdGUgPSBub3QgKGlzX2lnbm9yaW5nIHN0YXRlKVxuXG5sZXQgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZSA9XG4gIGxldCBpc19zaW5nbGUgPVxuICAgIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICAgIHwgU2luZ2xlIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgaXNfc2luZ2xlICYmIHN0YXRlLmZ1bGxfc2V4cHMgPiAwICYmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgVG9vX21hbnlfc2V4cHNcbjs7XG5cbmxldCBhZGRfcG9zIHN0YXRlIH5kZWx0YSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLmFkZCBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6KHN0YXRlLm9mZnNldCArIGRlbHRhKVxuOztcblxubGV0IGFkZF9maXJzdF9jaGFyIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGNoYXI7XG4gICgqIEZvciBub24tcXVvdGVkIGF0b21zLCB3ZSBzYXZlIGJvdGggcG9zaXRpb25zIGF0IHRoZSBlbmQuIFdlIGNhbiBhbHdheXMgZGV0ZXJtaW5lIHRoZVxuICAgICBzdGFydCBwb3NpdGlvbiBmcm9tIHRoZSBlbmQgcG9zaXRpb24gYW5kIHRoZSBhdG9tIGxlbmd0aCBmb3Igbm9uLXF1b3RlZCBhdG9tcy5cblxuICAgICBEb2luZyBpdCB0aGlzIHdheSBhbGxvd3MgdXMgdG8gZGV0ZWN0IHNpbmdsZSBjaGFyYWNhdGVyIGF0b21zIGZvciB3aGljaCB3ZSBuZWVkIHRvXG4gICAgIHNhdmUgdGhlIHBvc2l0aW9uIHR3aWNlLiAqKVxuICBzdGFja1xuOztcblxubGV0IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICcjJztcbiAgc3RhY2tcbjs7XG5cbmxldCBzdGFydF9xdW90ZWRfc3RyaW5nIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnXCInO1xuICAgIHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuOztcblxubGV0IGFkZF9lc2NhcGVkIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgYycgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ24nIC0+ICdcXG4nXG4gICAgfCAncicgLT4gJ1xccidcbiAgICB8ICdiJyAtPiAnXFxiJ1xuICAgIHwgJ3QnIC0+ICdcXHQnXG4gICAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcIicgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICdcXFxcJztcbiAgICAgIGNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGMnO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICdcXHInO1xuICBzdGFja1xuOztcblxubGV0IGRlY192YWwgYyA9IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuXG5sZXQgaGV4X3ZhbCBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgfCAnYScgLi4gJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gIHwgXyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuOztcblxubGV0IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgaWYgdmFsdWUgPiAyNTUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2U7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAoQ2hhci5jaHIgdmFsdWUpO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgaWYgdmFsdWUgPiAyNTUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2U7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSBsc2wgNCkgbG9yIGhleF92YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAoQ2hhci5jaHIgdmFsdWUpO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgb3BlbmluZyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBPcGVuIHN0YWNrIGVsc2Ugc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgdGhlbiAoXG4gICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgT3BlbiBzdGFjaylcbiAgICBlbHNlIHN0YWNrXG4gIHwgQ3N0IC0+IE9wZW4gKGN1cnJlbnRfcG9zIHN0YXRlLCBzdGFjaylcbjs7XG5cbmxldCBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGUgPVxuICBQb3NpdGlvbnMuQnVpbGRlci5yZXNldFxuICAgIHN0YXRlLnVzZXJfc3RhdGVcbiAgICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlclxuICAgIDsgY29sID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxuICAgIDsgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0XG4gICAgfVxuOztcblxubGV0IHJlc2V0X3Bvc2l0aW9ucyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gdW5pdCA9XG4gIGZ1biBzdGF0ZSAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwIC0+ICgpXG4gIHwgQ3N0IC0+ICgpXG47O1xuXG5sZXQgdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICB8IFNpbmdsZSB8IE1hbnkgLT4gc3RhY2tcbiAgfCBFYWdlciB7IGdvdF9zZXhwID0gZjsgXyB9IC0+XG4gICAgKCogTW9kaWZ5IHRoZSBvZmZzZXQgc28gdGhhdCBbZl0gZ2V0IGEgc3RhdGUgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudFxuICAgICAgIHMtZXhwcmVzc2lvbiAqKVxuICAgIGxldCBzYXZlZF9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQgaW5cbiAgICBzdGF0ZS5vZmZzZXQgPC0gc3RhdGUub2Zmc2V0ICsgZGVsdGE7XG4gICAgbGV0IHNhdmVkX2Z1bGxfc2V4cHMgPSBzdGF0ZS5mdWxsX3NleHBzIGluXG4gICAgKG1hdGNoIGYgc3RhdGUgc3RhY2sgd2l0aFxuICAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICAgICAgIHJhaXNlIGVcbiAgICAgfCBzdGFjayAtPlxuICAgICAgICgqIFRoaXMgYXNzZXJ0IGlzIG5vdCBhIGZ1bGwgcHJvdGVjdGlvbiBhZ2FpbnN0IHRoZSB1c2VyIG11dGF0aW5nIHRoZSBzdGF0ZSBidXRcbiAgICAgICAgICBpdCBzaG91bGQgY2F0Y2ggbW9zdCBjYXNlcy4gKilcbiAgICAgICBhc3NlcnQgKHN0YXRlLm9mZnNldCA9IHNhdmVkX29mZnNldCArIGRlbHRhICYmIHN0YXRlLmZ1bGxfc2V4cHMgPSBzYXZlZF9mdWxsX3NleHBzKTtcbiAgICAgICBzdGF0ZS5vZmZzZXQgPC0gc2F2ZWRfb2Zmc2V0O1xuICAgICAgIHJlc2V0X3Bvc2l0aW9ucyBzdGF0ZTtcbiAgICAgICBzdGFjaylcbjs7XG5cbmxldCBpc190b3BfbGV2ZWwgc3RhdGUgPSBpc19ub3RfaWdub3Jpbmcgc3RhdGUgJiYgc3RhdGUuZGVwdGggPSAwXG5cbmxldCBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGEgPVxuICBpZiBpc190b3BfbGV2ZWwgc3RhdGUgdGhlbiB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBtYXliZV9wb3BfaWdub3Jpbmdfc3RhY2sgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZS5pZ25vcmluZ19zdGFjayB3aXRoXG4gIHwgaW5uZXJfY29tbWVudF9kZXB0aCA6OiBfdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID4gc3RhdGUuZGVwdGggLT5cbiAgICByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIFNleHBfY29tbWVudF93aXRob3V0X3NleHBcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IHRsIHdoZW4gaW5uZXJfY29tbWVudF9kZXB0aCA9IHN0YXRlLmRlcHRoIC0+XG4gICAgc3RhdGUuaWdub3Jpbmdfc3RhY2sgPC0gdGw7XG4gICAgdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzZXhwX2FkZGVkIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBzIC0+IGRlbHRhOmludCAtPiBzID1cbiAgZnVuIHN0YXRlIHN0YWNrIH5kZWx0YSAtPlxuICBsZXQgaXNfY29tbWVudCA9IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSBpblxuICBpZiBpc190b3BfbGV2ZWwgc3RhdGVcbiAgdGhlbiAoXG4gICAgaWYgbm90IGlzX2NvbW1lbnQgdGhlbiBzdGF0ZS5mdWxsX3NleHBzIDwtIHN0YXRlLmZ1bGxfc2V4cHMgKyAxO1xuICAgIGlmIChub3QgaXNfY29tbWVudClcbiAgICAgICB8fFxuICAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgIHwgQ3N0IC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGFcbiAgICBlbHNlIHN0YWNrKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdCBhY2MgOiBBdXRvbWF0b25fc3RhY2sudCAtPiBBdXRvbWF0b25fc3RhY2sudCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgT3BlbiBzdGFjayAtPiBTZXhwIChMaXN0IGFjYywgc3RhY2spXG4gIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IG1ha2VfbGlzdCAoc2V4cCA6OiBhY2MpIHN0YWNrXG47O1xuXG5sZXQgYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgKHN0YWNrIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudClcbiAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID1cbiAgbWF0Y2ggc3RhY2sgd2l0aFxuICB8IEluX3NleHBfY29tbWVudCByIC0+XG4gICAgSW5fc2V4cF9jb21tZW50IHsgciB3aXRoIHJldl9jb21tZW50cyA9IGNvbW1lbnQgOjogci5yZXZfY29tbWVudHMgfVxuICB8IF8gLT4gVF9vcl9jb21tZW50IChDb21tZW50IGNvbW1lbnQsIHN0YWNrKVxuOztcblxubGV0IGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCAtPiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID0gZnVuY3Rpb25cbiAgICB8IEluX3NleHBfY29tbWVudCB7IGhhc2hfc2VtaV9wb3M7IHJldl9jb21tZW50czsgc3RhY2sgfSAtPlxuICAgICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9XG4gICAgICAgIFNleHBfY29tbWVudCB7IGhhc2hfc2VtaV9wb3M7IGNvbW1lbnRzID0gTGlzdC5yZXYgcmV2X2NvbW1lbnRzOyBzZXhwIH1cbiAgICAgIGluXG4gICAgICBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFja1xuICAgIHwgc3RhY2sgLT4gVF9vcl9jb21tZW50IChTZXhwIHNleHAsIHN0YWNrKVxuOztcblxubGV0IHJlYyBtYWtlX2xpc3RfY3N0IGVuZF9wb3MgYWNjIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCAtPiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID0gZnVuY3Rpb25cbiAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IG1ha2VfbGlzdF9jc3QgZW5kX3BvcyAodCA6OiBhY2MpIHN0YWNrXG4gICAgfCBPcGVuIChzdGFydF9wb3MsIHN0YWNrKSAtPlxuICAgICAgbGV0IHNleHAgOiBDc3QudCA9IExpc3QgeyBsb2MgPSB7IHN0YXJ0X3BvczsgZW5kX3BvcyB9OyBlbGVtZW50cyA9IGFjYyB9IGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICAgIHwgRW1wdHkgfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCBjbG9zaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBpZiBzdGF0ZS5kZXB0aCA+IDBcbiAgdGhlbiAoXG4gICAgbGV0IHN0YWNrIDogcyA9XG4gICAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICAgICgqIE5vdGUgd2Ugc3RvcmUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUgaW4gW1Bvc2l0aW9ucy50XSwgc28gd2UgdXNlIFtkZWx0YTowXSxcbiAgICAgICAgICAgd2hpbGUgaW4gdGhlIFtDc3RdIGNhc2Ugd2Ugc2F2ZSBkaXJlY3RseSB0aGUgZmluYWwgcmFuZ2VzLCBzbyB3ZSB1c2VcbiAgICAgICAgICAgW2RlbHRhOjFdLiAqKVxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBzdGFja1xuICAgICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIG1ha2VfbGlzdCBbXSBzdGFjayBlbHNlIHN0YWNrXG4gICAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgICAgbWFrZV9saXN0IFtdIHN0YWNrKVxuICAgICAgICBlbHNlIHN0YWNrXG4gICAgICB8IENzdCAtPiBtYWtlX2xpc3RfY3N0IChjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6MSkgW10gc3RhY2tcbiAgICBpblxuICAgIHN0YXRlLmRlcHRoIDwtIHN0YXRlLmRlcHRoIC0gMTtcbiAgICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YToxKVxuICBlbHNlIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG47O1xuXG5sZXQgbWFrZV9sb2MgPyhkZWx0YSA9IDApIChzdGF0ZSA6IChBdXRvbWF0b25fc3RhdGUuRm9yX2NzdC50LCBfKSBBdXRvbWF0b25fc3RhdGUudClcbiAgOiBQb3NpdGlvbnMucmFuZ2VcbiAgPVxuICB7IHN0YXJ0X3BvcyA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zOyBlbmRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhIH1cbjs7XG5cbigqIFRoaXMgaXMgYWx3YXlzIGNhbGxlZCBvbiB0aGUgcG9zaXRpb24gZXhhY3RseSBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGFcbiAgIG5vbi1xdW90ZWQgYXRvbSAqKVxubGV0IGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYXRvbSBpblxuICBpZiBsZW4gPSAxXG4gIHRoZW4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX3R3aWNlIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0IC0gMSlcbiAgZWxzZSAoXG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC1sZW4pO1xuICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOigtMSkpXG47O1xuXG5sZXQgZXBzX3B1c2hfYXRvbSA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgc3RhdGUuYXRvbV9idWZmZXIgaW5cbiAgQnVmZmVyLmNsZWFyIHN0YXRlLmF0b21fYnVmZmVyO1xuICBsZXQgc3RhY2sgOiBzID1cbiAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b206c3RyO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICAgIFNleHAgKEF0b20gc3RyLCBzdGFjaykpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgfCBDc3QgLT5cbiAgICAgIGxldCBsb2MgOiBQb3NpdGlvbnMucmFuZ2UgPVxuICAgICAgICB7IHN0YXJ0X3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLVN0cmluZy5sZW5ndGggc3RyKVxuICAgICAgICA7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6MFxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IHNleHAgOiBDc3QudCA9IEF0b20geyBsb2M7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgc3RyIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gIGluXG4gIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBwdXNoX3F1b3RlZF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgc3RhdGUuYXRvbV9idWZmZXIgaW5cbiAgQnVmZmVyLmNsZWFyIHN0YXRlLmF0b21fYnVmZmVyO1xuICBsZXQgc3RhY2sgOiBzID1cbiAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgIHN0YWNrXG4gICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIFNleHAgKEF0b20gc3RyLCBzdGFjaykgZWxzZSBzdGFja1xuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcIic7XG4gICAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID1cbiAgICAgICAgQXRvbSB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlIH5kZWx0YToxOyBhdG9tID0gc3RyOyB1bmVzY2FwZWQgPSBTb21lIHMgfVxuICAgICAgaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gIGluXG4gIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjFcbjs7XG5cbmxldCBzdGFydF9zZXhwX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgc3RhdGUuaWdub3Jpbmdfc3RhY2sgPC0gc3RhdGUuZGVwdGggOjogc3RhdGUuaWdub3Jpbmdfc3RhY2s7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIEluX3NleHBfY29tbWVudFxuICAgICAgeyBoYXNoX3NlbWlfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtMSk7IHJldl9jb21tZW50cyA9IFtdOyBzdGFjayB9XG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IHN0YXJ0X2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBpZiBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoID0gMVxuICAgIHRoZW4gKFxuICAgICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtMSk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgJyMnKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuOztcblxubGV0IGVuZF9ibG9ja19jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCAtIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgUGxhaW5fY29tbWVudCB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlIH5kZWx0YToxOyBjb21tZW50ID0gcyB9XG4gICAgICBpblxuICAgICAgbGV0IHN0YWNrID0gYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2sgaW5cbiAgICAgIGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YToxKVxuICAgIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBzdGFydF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBlbmRfbGluZV9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPSBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGU7IGNvbW1lbnQgPSBzIH0gaW5cbiAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgIGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YTowXG47O1xuXG5sZXQgZXBzX2VvaV9jaGVjayA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMCB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbmNsb3NlZF9wYXJlbjtcbiAgaWYgaXNfaWdub3Jpbmcgc3RhdGUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cDtcbiAgaWYgc3RhdGUuZnVsbF9zZXhwcyA9IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBNYW55IHwgRWFnZXIgeyBub19zZXhwX2lzX2Vycm9yID0gZmFsc2U7IF8gfSAtPiAoKVxuICAgIHwgU2luZ2xlIHwgRWFnZXIgeyBub19zZXhwX2lzX2Vycm9yID0gdHJ1ZTsgXyB9IC0+XG4gICAgICByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dCk7XG4gIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVxuICB8IFBhcnNpbmdfYXRvbVxuICB8IFBhcnNpbmdfbGlzdFxuICB8IFBhcnNpbmdfc2V4cF9jb21tZW50XG4gIHwgUGFyc2luZ19ibG9ja19jb21tZW50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcIlxuICAgIHwgUGFyc2luZ19hdG9tIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYXRvbVwiXG4gICAgfCBQYXJzaW5nX2xpc3QgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19saXN0XCJcbiAgICB8IFBhcnNpbmdfc2V4cF9jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfc2V4cF9jb21tZW50XCJcbiAgICB8IFBhcnNpbmdfYmxvY2tfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBtYXRjaCBzZXhwX29mX3QgdCB3aXRoXG4gIHwgQXRvbSBzIC0+IHNcbiAgfCBMaXN0IF8gLT4gZmFpbHdpdGggXCJCVUc6IFtzZXhwX29mX3RdIHJldHVybmVkIGEgW0xpc3QgX11cIlxuOztcbiIsIm9wZW4gQXV0b21hdG9uX2FjdGlvblxuXG5sZXQgcmFpc2UgPSBBdXRvbWF0b25fYWN0aW9uLnJhaXNlX2Vycm9yXG5cbnR5cGUgdSdcbnR5cGUgcydcblxuKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX2F1dG9tYXRvbl90YWJsZXMucHJpbnRfY29kZSAoKSAqKVxubGV0IHRyXzAwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMF9mIH1cblxubGV0IHRyXzAxX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAxX2YgfVxuXG5sZXQgdHJfMDJfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAyX2YgfVxuXG5sZXQgdHJfMDNfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDNfZiB9XG5cbmxldCB0cl8wNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNF9mIH1cblxubGV0IHRyXzA1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDc7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA1X2YgfVxuXG5sZXQgdHJfMDZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDZfZiB9XG5cbmxldCB0cl8wN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wN19mIH1cblxubGV0IHRyXzA4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X2xpbmVfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDhfZiB9XG5cbmxldCB0cl8wOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZmlyc3RfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDlfZiB9XG5sZXQgdHJfMTBfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG5sZXQgdHJfMTAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEwX2YgfVxubGV0IHRyXzExX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9IHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfMTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzExX2YgfVxuXG5sZXQgdHJfMTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTJfZiB9XG5cbmxldCB0cl8xM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEzX2YgfVxuXG5sZXQgdHJfMTRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTRfZiB9XG5cbmxldCB0cl8xNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE1X2YgfVxuXG5sZXQgdHJfMTZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNl9mIH1cblxubGV0IHRyXzE3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE3X2YgfVxuXG5sZXQgdHJfMThfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOF9mIH1cblxubGV0IHRyXzE5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTlfZiB9XG5cbmxldCB0cl8yMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X2xpbmVfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjBfZiB9XG5cbmxldCB0cl8yMV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMV9mIH1cblxubGV0IHRyXzIyX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbVxuOztcblxubGV0IHRyXzIyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMl9mIH1cblxubGV0IHRyXzIzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yM19mIH1cblxubGV0IHRyXzI0X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI0X2YgfVxuXG5sZXQgdHJfMjVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNV9mIH1cblxubGV0IHRyXzI2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI2X2YgfVxuXG5sZXQgdHJfMjdfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yN19mIH1cblxubGV0IHRyXzI4X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI4X2YgfVxuXG5sZXQgdHJfMjlfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yOV9mIH1cblxubGV0IHRyXzMwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzBfZiB9XG5cbmxldCB0cl8zMV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMV9mIH1cblxubGV0IHRyXzMyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzJfZiB9XG5cbmxldCB0cl8zM19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMzX2YgfVxuXG5sZXQgdHJfMzRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfc2V4cF9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNF9mIH1cblxubGV0IHRyXzM1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X2Jsb2NrX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNV9mIH1cblxubGV0IHRyXzM2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNl9mIH1cblxubGV0IHRyXzM3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzdfZiB9XG5cbmxldCB0cl8zOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zOF9mIH1cblxubGV0IHRyXzM5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zOV9mIH1cblxubGV0IHRyXzQwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9lc2NhcGVkIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80MF9mIH1cblxubGV0IHRyXzQxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQxX2YgfVxuXG5sZXQgdHJfNDJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80Ml9mIH1cblxubGV0IHRyXzQzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDExO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80M19mIH1cblxubGV0IHRyXzQ0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDRfZiB9XG5cbmxldCB0cl80NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ1X2YgfVxuXG5sZXQgdHJfNDZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ2X2YgfVxuXG5sZXQgdHJfNDdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80N19mIH1cblxubGV0IHRyXzQ4X2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbjs7XG5cbmxldCB0cl80OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDhfZiB9XG5cbmxldCB0cl80OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDlfZiB9XG5cbmxldCB0cl81MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUwX2YgfVxuXG5sZXQgdHJfNTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZVxuOztcblxubGV0IHRyXzUxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81MV9mIH1cblxubGV0IHRyXzUyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81Ml9mIH1cblxubGV0IHRyXzUzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTNfZiB9XG5cbmxldCB0cl81NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTRfZiB9XG5cbmxldCB0cl81NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU1X2YgfVxuXG5sZXQgdHJfNTZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81Nl9mIH1cblxubGV0IHRyXzU3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU3X2YgfVxuXG5sZXQgdHJfNThfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU4X2YgfVxuXG5sZXQgdHJfNTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81OV9mIH1cblxubGV0IHRyXzYwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYwX2YgfVxuXG5sZXQgdHJfNjFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82MV9mIH1cblxubGV0IHRyXzYyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjJfZiB9XG5cbmxldCB0cl82M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTc7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYzX2YgfVxuXG5sZXQgdHJfNjRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2Jsb2NrX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIChpZiBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlIDw+IDAgdGhlbiAxNiBlbHNlIDApO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82NF9mIH1cblxubGV0IHRyXzY1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY1X2YgfVxuXG5sZXQgdHJfNjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Nl9mIH1cblxubGV0IHRyXzY3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNjtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY3X2YgfVxuXG5sZXQgdHJfNjhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIxO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82OF9mIH1cblxubGV0IHRyXzY5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82OV9mIH1cblxubGV0IHRyXzcwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzBfZiB9XG5cbmxldCB0cl83MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcxX2YgfVxuXG5sZXQgdHJfNzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83Ml9mIH1cblxubGV0IHRyXzczX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzNfZiB9XG5cbmxldCB0cl83NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzRfZiB9XG5cbmxldCB0cl83NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc1X2YgfVxuXG5sZXQgdHJfNzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83Nl9mIH1cblxubGV0IHRyXzc3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzdfZiB9XG5cbmxldCB0cl83OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83OF9mIH1cbmxldCB0cl9lb2lfMDBfZiBzdGF0ZSBzdGFjayA9IGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbmxldCB0cl9lb2lfMDAgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAwX2YgfVxubGV0IHRyX2VvaV8wMV9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl9lb2lfMDEgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAxX2YgfVxubGV0IHRyX2VvaV8wMl9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxubGV0IHRyX2VvaV8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDJfZiB9XG5cbmxldCB0cl9lb2lfMDNfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wMyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDNfZiB9XG5cbmxldCB0cl9lb2lfMDRfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wNCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDRfZiB9XG5cbmxldCB0cl9lb2lfMDVfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDVfZiB9XG5sZXQgdHJfZW9pXzA2X2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nXG5sZXQgdHJfZW9pXzA2IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNl9mIH1cbmxldCB0cl9lb2lfMDdfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnRcbmxldCB0cl9lb2lfMDcgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA3X2YgfVxuXG5sZXQgdHJhbnNpdGlvbnMgPVxuICBbfCB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wMlxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wM1xuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wMFxuICAgOyB0cl8wNFxuICAgOyB0cl8wNVxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wNlxuICAgOyB0cl8wN1xuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wOFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wOVxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8wMlxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8xN1xuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8xN1xuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8yMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNFxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNVxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yOFxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yOVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yNlxuICAgOyB0cl8zMFxuICAgOyB0cl8zMVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zMlxuICAgOyB0cl8zM1xuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNFxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zN1xuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zOFxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zOVxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MVxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MlxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80NFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80MVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NlxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80N1xuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NVxuICAgOyB0cl81NlxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NVxuICAgOyB0cl81NFxuICAgOyB0cl81N1xuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81OFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MlxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82M1xuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82NFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82M1xuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MlxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl8zNVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82NVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82NlxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82N1xuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82OFxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl83MFxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl82N1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MlxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83M1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83N1xuICAgOyB0cl83OFxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83N1xuICAgOyB0cl83MVxuICAgOyB0cl83MlxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83M1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICB8XVxuOztcblxubGV0IHRyYW5zaXRpb25zX2VvaSA9XG4gIFt8IHRyX2VvaV8wMFxuICAgOyB0cl9lb2lfMDFcbiAgIDsgdHJfZW9pXzAyXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wNFxuICAgOyB0cl9lb2lfMDVcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gIHxdXG47O1xuXG5sZXQgb2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCBhcnJheSA9XG4gIFt8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICB8XVxuOztcbigqJCopXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTdGFjayA9IEF1dG9tYXRvbl9zdGFja1xuaW5jbHVkZSBBdXRvbWF0b25fc3RhdGVcblxubGV0IGZlZWQgKHR5cGUgdSBzKSAoc3RhdGUgOiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQpIGNoYXIgKHN0YWNrIDogcykgOiBzID1cbiAgbGV0IGlkeCA9IChhdXRvbWF0b25fc3RhdGUgc3RhdGUgbHNsIDgpIGxvciBDaGFyLmNvZGUgY2hhciBpblxuICBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zLihpZHgpLmYgc3RhdGUgY2hhciBzdGFja1xuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBmZWVkX2VvaSAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgKHN0YWNrIDogcykgOiBzID1cbiAgbGV0IHN0YWNrID0gQXV0b21hdG9uX3RhYmxlcy50cmFuc2l0aW9uc19lb2kuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSkuZiBzdGF0ZSBzdGFjayBpblxuICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIDogT2xkX3BhcnNlcl9jb250X3N0YXRlLnQgPVxuICBtYXRjaCBjb250ZXh0IHN0YXRlIHdpdGhcbiAgfCBTZXhwX2NvbW1lbnQgLT4gUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBTZXhwIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBBdXRvbWF0b25fdGFibGVzLm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzLihhdXRvbWF0b25fc3RhdGUgc3RhdGUpXG4gICAgICAgLCBoYXNfdW5jbG9zZWRfcGFyZW4gc3RhdGUgKVxuICAgICB3aXRoXG4gICAgIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCB0cnVlIC0+IFBhcnNpbmdfbGlzdFxuICAgICB8IHMsIF8gLT4gcylcbjs7XG5cbmxldCByZWMgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBpIHN0b3AgPVxuICBpZiBpIDwgc3RvcFxuICB0aGVuIChcbiAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAoaSArIDEpIHN0b3ApXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gQnl0ZXMudW5zYWZlX2dldCBzdHIgaSBpblxuICAgIGxldCBzdGFjayA9IGZlZWQgc3RhdGUgYyBzdGFjayBpblxuICAgIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAoaSArIDEpIHN0b3ApXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBmZWVkX3N1YnN0cmluZyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gc3RyX2xlbiAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5mZWVkX3N1YnN0cmluZ1wiO1xuICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3ViYnl0ZXMgc3RhdGUgc3RyIH5wb3MgfmxlbiBzdGFjayA9XG4gIGxldCBzdHJfbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gc3RyX2xlbiAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5mZWVkX3N1YmJ5dGVzXCI7XG4gIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBwb3MgKHBvcyArIGxlbilcbjs7XG5cbmxldCBmZWVkX3N0cmluZyBzdGF0ZSBzdHIgc3RhY2sgPVxuICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuOztcblxubGV0IGZlZWRfYnl0ZXMgc3RhdGUgc3RyIHN0YWNrID0gZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIDAgKEJ5dGVzLmxlbmd0aCBzdHIpXG5cbmxldCBlbXB0eV9zdGFjayA6IHR5cGUgdSBzLiAodSwgcykgS2luZC50IC0+IHMgPSBmdW5jdGlvblxuICB8IFNleHAgLT4gU3RhY2suZW1wdHlcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFN0YWNrLmVtcHR5XG4gIHwgUG9zaXRpb25zIC0+IFN0YWNrLkp1c3RfcG9zaXRpb25zLmVtcHR5XG4gIHwgQ3N0IC0+IFN0YWNrLkZvcl9jc3QuZW1wdHlcbjs7XG5cbmxldCBvZl9zdWJzdHJpbmcgKHR5cGUgdSBzKSAobW9kZSA6ICh1LCBzKSBNb2RlLnQpIChraW5kIDogKHUsIHMpIEtpbmQudCkgcyB+cG9zIH5sZW4gPVxuICBsZXQgc3RhdGUgPSBjcmVhdGUgbW9kZSBraW5kIGluXG4gIGxldCBzdGFjayA9IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHMgfnBvcyB+bGVuIChlbXB0eV9zdGFjayBraW5kKSBpblxuICBzdGF0ZSwgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyB1c2VyX2V4biA6IGV4blxuICA7IHN1Yl9zZXhwIDogU2V4cC50XG4gIDsgbG9jYXRpb24gOiBQb3NpdGlvbnMucmFuZ2Ugb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1biB7IHVzZXJfZXhuID0gdXNlcl9leG5fXzAwMl87IHN1Yl9zZXhwID0gc3ViX3NleHBfXzAwNF87IGxvY2F0aW9uID0gbG9jYXRpb25fXzAwNl8gfSAtPlxuICAgICBsZXQgYm5kc19fMDAxXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NhdGlvbl9fMDA2XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NhdGlvblwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IFNleHAuc2V4cF9vZl90IHN1Yl9zZXhwX18wMDRfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN1Yl9zZXhwXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9leG4gdXNlcl9leG5fXzAwMl8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidXNlcl9leG5cIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB1c2VyX2V4biB0ID0gdC51c2VyX2V4blxubGV0IHN1Yl9zZXhwIHQgPSB0LnN1Yl9zZXhwXG5sZXQgbG9jYXRpb24gdCA9IHQubG9jYXRpb25cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgbGluZSwgc3RhcnQsIHN0b3AgPVxuICAgIG1hdGNoIHQubG9jYXRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAxLCAwLCAwXG4gICAgfCBTb21lIHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0gLT5cbiAgICAgIHN0YXJ0X3Bvcy5saW5lLCBzdGFydF9wb3MuY29sLCBzdGFydF9wb3MuY29sICsgZW5kX3Bvcy5vZmZzZXQgLSBzdGFydF9wb3Mub2Zmc2V0XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBjb252ZXJzaW9uIGVycm9yO1xcblxcXG4gICAgIGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBsaW5lXG4gICAgc3RhcnRcbiAgICBzdG9wXG4gICAgKFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCB0LnVzZXJfZXhuKVxuOztcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDhfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA5XyA9IHNleHBfb2ZfdCBhcmcwX18wMDhfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZl9zZXhwX2Vycm9yLm1sLk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA5XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwIH5sb2NhdGlvbiA9XG4gIHJhaXNlIChPZl9zZXhwX2Vycm9yIHsgdXNlcl9leG47IHN1Yl9zZXhwOyBsb2NhdGlvbiB9KVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNlX2Vycm9yIG9mIFBhcnNlX2Vycm9yLnRcbiAgfCBPZl9zZXhwX2Vycm9yIG9mIE9mX3NleHBfZXJyb3IudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gUGFyc2VfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDNfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA0XyA9IE9mX3NleHBfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA0XyBdXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQYXJzZV9lcnJvciBlIC0+IFBhcnNlX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbiAgfCBPZl9zZXhwX2Vycm9yIGUgLT4gT2Zfc2V4cF9lcnJvci5yZXBvcnQgcHBmIH5maWxlbmFtZSBlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlcl9pbnRmXG5tb2R1bGUgQSA9IEF1dG9tYXRvblxuXG5sZXQga2luZF90b19zdGFja1xuICA6IHR5cGUgc3RhY2suXG4gICAgKCdzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQgLT4gKG1vZHVsZSBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICA9XG4gIGZ1biAodHlwZSBzdGF0ZSkgKGtpbmQgOiAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUuS2luZC50KSAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBTZXhwIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBQb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2suSnVzdF9wb3NpdGlvbnMgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IENzdCAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0IDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbjs7XG5cbmxldCBtYWtlICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtb2RlIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNcbiAgICAgIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcbiAgICAgICBhbmQgdHlwZSBTdGF0ZS50ID0gKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLnRcbiAgICAgICBhbmQgdHlwZSBTdGFjay50ID0gc3RhY2spXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgKCkgPSBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIG1vZGUga2luZFxuICAgICAgbGV0IHJlc2V0ID0gQS5yZXNldFxuICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgbGV0IGNvbHVtbiA9IEEuY29sdW1uXG5cbiAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdG9wIHN0YXRlID0gQS5zZXRfZXJyb3Jfc3RhdGUgc3RhdGVcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gbWFrZV92YWx1ZSBzdGF0ZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjaylcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyID1cbiAgICAgIGxldCBzdGF0ZSA9IFN0YXRlLmNyZWF0ZSAoKSBpblxuICAgICAgZmVlZF9lb2kgc3RhdGUgKGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBTdGFjay5lbXB0eSlcbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlX3N0cmluZyBzdHIgPVxuICAgICAgbWF0Y2ggcGFyc2Vfc3RyaW5nX2V4biBzdHIgd2l0aFxuICAgICAgfCB4IC0+IE9rIHhcbiAgICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgZVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmxldCBtYWtlX2VhZ2VyICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtYWtlX3ZhbHVlXG4gIDogKG1vZHVsZSBTX2VhZ2VyXG4gICAgICB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG4gICAgICAgYW5kIHR5cGUgU3RhdGUudCA9IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS50XG4gICAgICAgYW5kIHR5cGUgU3RhY2sudCA9IHN0YWNrKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFJlYWRfb25seVxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgPyhub19zZXhwX2lzX2Vycm9yID0gZmFsc2UpIGYgPVxuICAgICAgICBsZXQgZ290X3NleHAgc3RhdGUgc3RhY2sgPVxuICAgICAgICAgIGxldCBwYXJzZWRfdmFsdWUgPSBtYWtlX3ZhbHVlIHN0YXRlIHN0YWNrIGluXG4gICAgICAgICAgZiBzdGF0ZSBwYXJzZWRfdmFsdWU7XG4gICAgICAgICAgU3RhY2suZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyAoRWFnZXIgeyBnb3Rfc2V4cDsgbm9fc2V4cF9pc19lcnJvciB9KSBraW5kXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgc3RvcCB0ID0gQS5zZXRfZXJyb3Jfc3RhdGUgdFxuICAgICAgbGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSB0ID0gQXV0b21hdG9uLm9sZF9wYXJzZXJfY29udF9zdGF0ZSB0XG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IGlnbm9yZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjayA6IFN0YWNrLnQpXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIG1vZHVsZSBMZXhidWZfY29uc3VtZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0YXRlLnRcblxuICAgICAgZXhjZXB0aW9uIEdvdF9zZXhwIG9mIHBhcnNlZF92YWx1ZSAqIFBvc2l0aW9ucy5wb3NcblxuICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHBhcnNlZF92YWx1ZSA9XG4gICAgICAgIHJhaXNlX25vdHJhY2UgKEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIFN0YXRlLnBvc2l0aW9uIHN0YXRlKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSBTdGF0ZS5jcmVhdGUgZ290X3NleHBcblxuICAgICAgbGV0IHBvc19vZl9sZXhidWYgbGV4YnVmID1cbiAgICAgICAgbGV0IHAgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgaW5cbiAgICAgICAgeyBQb3NpdGlvbnMubGluZSA9IHAucG9zX2xudW07IGNvbCA9IHAucG9zX2NudW0gLSBwLnBvc19ib2w7IG9mZnNldCA9IHAucG9zX2NudW0gfVxuICAgICAgOztcblxuICAgICAgbGV0IHVwZGF0ZV9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIChwb3MgOiBQb3NpdGlvbnMucG9zKSA9XG4gICAgICAgIGxldCBwID0gcG9zLm9mZnNldCAtIGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wXG4gICAgICAgIDwtIHsgbGV4YnVmLmxleF9jdXJyX3Agd2l0aFxuICAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLmxpbmVcbiAgICAgICAgICAgOyBwb3NfY251bSA9IHBvcy5vZmZzZXRcbiAgICAgICAgICAgOyBwb3NfYm9sID0gcG9zLm9mZnNldCAtIHBvcy5jb2xcbiAgICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmZWVkX2xleGJ1ZiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSBzdGFjayA9XG4gICAgICAgIGxldCBzdGFjayA9XG4gICAgICAgICAgZmVlZF9zdWJieXRlc1xuICAgICAgICAgICAgdFxuICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXJcbiAgICAgICAgICAgIHN0YWNrXG4gICAgICAgICAgICB+cG9zOmxleGJ1Zi5sZXhfY3Vycl9wb3NcbiAgICAgICAgICAgIH5sZW46KGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfY3Vycl9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGlmIG5vdCBsZXhidWYubGV4X2VvZl9yZWFjaGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxleGJ1Zi5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICAgICAgZmVlZF9sZXhidWYgdCBsZXhidWYgc3RhY2spXG4gICAgICAgIGVsc2UgZmVlZF9lb2kgdCBzdGFja1xuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX2dlbiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgICAgIEEucmVzZXQgdCB+cG9zOihwb3Nfb2ZfbGV4YnVmIGxleGJ1Zik7XG4gICAgICAgIG1hdGNoIGZlZWRfbGV4YnVmIHQgbGV4YnVmIFN0YWNrLmVtcHR5IHdpdGhcbiAgICAgICAgfCAoKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgZXhjZXB0aW9uIEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIHBvcykgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiBwb3M7XG4gICAgICAgICAgU29tZSBwYXJzZWRfdmFsdWVcbiAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIHJhaXNlIGV4blxuICAgICAgOztcblxuICAgICAgbGV0IHNldF9ub19zZXhwX2lzX2Vycm9yIHQgeCA9XG4gICAgICAgIG1hdGNoIEEubW9kZSB0IHdpdGhcbiAgICAgICAgfCBFYWdlciBlIC0+IGUubm9fc2V4cF9pc19lcnJvciA8LSB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZSB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgdHJ1ZTtcbiAgICAgICAgbWF0Y2ggcGFyc2VfZ2VuIHQgbGV4YnVmIHdpdGhcbiAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLnBhcnNlX2dlbjogTm9uZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfb3B0IHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCBmYWxzZTtcbiAgICAgICAgcGFyc2VfZ2VuIHQgbGV4YnVmXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbnZfaW50ZlxuXG5tb2R1bGUgTWFrZVxuICAgIChNb2RlIDogTW9kZSlcbiAgICAoU2V4cF9wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gTW9kZS5wYXJzZWRfc2V4cClcbiAgICAoUG9zaXRpb25zX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBQb3NpdGlvbnMudCkgPVxuc3RydWN0XG4gIGxldCByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiB1c2VyX2V4biA9XG4gICAgbGV0IGxvY2F0aW9uID0gTW9kZS5maW5kIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiBpblxuICAgIE9mX3NleHBfZXJyb3IucmFpc2UgfnVzZXJfZXhuIH5zdWJfc2V4cDpzdWIgfmxvY2F0aW9uXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyIGYgPVxuICAgIGxldCBwYXJzZWRfdmFsdWUgPSBTZXhwX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT5cbiAgICAgIGxldCBwb3NpdGlvbnMgPSBQb3NpdGlvbnNfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgICByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSlcbiAgOztcblxuICBsZXQgY29udl9leG4gKHBhcnNlZF92YWx1ZSwgcG9zaXRpb25zKSBmID1cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBjb252IHggZiA9XG4gICAgbWF0Y2ggY29udl9leG4geCBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIGVcbiAgOztcblxuICBsZXQgY29udl9jb21iaW5lIHJlc3VsdCBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IE9rIHggLT5cbiAgICAgIChtYXRjaCBjb252IHggZiB3aXRoXG4gICAgICAgfCBPayBfIGFzIHIgLT4gclxuICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252LlNcbm1vZHVsZSB0eXBlIFBhcnNlciA9IFBhcnNlci5TXG5tb2R1bGUgdHlwZSBFYWdlcl9wYXJzZXIgPSBQYXJzZXIuU19lYWdlclxuXG5tb2R1bGUgQ29udl9lcnJvciA9IENvbnZfZXJyb3Jcbm1vZHVsZSBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxubW9kdWxlIE9sZF9wYXJzZXJfY29udF9zdGF0ZSA9IE9sZF9wYXJzZXJfY29udF9zdGF0ZVxubW9kdWxlIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3Jcbm1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbm1vZHVsZSBDc3QgPSBDc3Rcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvclxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5tb2R1bGUgU2luZ2xlID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIFNpbmdsZSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxubW9kdWxlIE1hbnkgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgTWFueSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KSlcbm1vZHVsZSBFYWdlciA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgU2V4cCAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxuXG5sZXQgYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHAgc3RhdGUgc3RhY2sgPSBnZXRfc2V4cCBzdGFjaywgQS5wb3NpdGlvbnMgc3RhdGVcblxubGV0IGFuZF9wb3NpdGlvbnMgbW9kZSBnZXRfc2V4cCA9XG4gIFBhcnNlci5tYWtlIFNleHBfd2l0aF9wb3NpdGlvbnMgbW9kZSAoYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHApXG47O1xuXG5tb2R1bGUgU2luZ2xlX2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgU2luZ2xlIEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKVxubW9kdWxlIE1hbnlfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBNYW55IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2FuZF9wb3NpdGlvbnMgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyXG4gICAgICAgICBTZXhwX3dpdGhfcG9zaXRpb25zXG4gICAgICAgICAoQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUgfD4gYW5kX2dldF9wb3NpdGlvbnMpKVxuXG5sZXQganVzdF9nZXRfcG9zaXRpb25zIHN0YXRlICgpID0gQS5wb3NpdGlvbnMgc3RhdGVcbmxldCBqdXN0X3Bvc2l0aW9ucyBtb2RlID0gUGFyc2VyLm1ha2UgUG9zaXRpb25zIG1vZGUganVzdF9nZXRfcG9zaXRpb25zXG5cbm1vZHVsZSBTaW5nbGVfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIFNpbmdsZSlcbm1vZHVsZSBNYW55X2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBNYW55KVxubW9kdWxlIEVhZ2VyX2p1c3RfcG9zaXRpb25zID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBQb3NpdGlvbnMganVzdF9nZXRfcG9zaXRpb25zKVxuXG5sZXQgY3N0IG1vZGUgZiA9IFBhcnNlci5tYWtlIENzdCBtb2RlIChjb25zdCBmKVxuXG5tb2R1bGUgTWFueV9jc3QgPSAodmFsIGNzdCBNYW55IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfY3N0ID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlciBDc3QgKGZ1biBfIHN0YWNrIC0+XG4gICAgIG1hdGNoIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55IHN0YWNrIHdpdGhcbiAgICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG50eXBlICdhIGlkID0gJ2FcbnR5cGUgc2V4cF9saXN0ID0gU2V4cC50IGxpc3RcblxubW9kdWxlIENvbnZfc2luZ2xlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfcGh5c1xuICAgIGVuZClcbiAgICAoU2luZ2xlKVxuICAgIChTaW5nbGVfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnkgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhIGxpc3RcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHggfmYpXG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueV9hdF9vbmNlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnQgbGlzdFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF1dG9tYXRvbiA9IEF1dG9tYXRvblxuICBtb2R1bGUgQXV0b21hdG9uX3N0YWNrID0gQXV0b21hdG9uX3N0YWNrXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhdGUgPSBBdXRvbWF0b25fc3RhdGVcbiAgbW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xuZW5kXG4iLCIoKiBmb3IgbGV4aW5nIHBvc2l0aW9uczpcbiAgIC0gbG51bSBzdGFydHMgZnJvbSAxXG4gICAtIGNudW0gc3RhcnRzIGZyb20gMFxuICAgLSBwb3NfYm9sIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBsaW5lXG5cbiAgIGZvciBhYnNvbHV0ZSBwb3M6XG4gICAtIHJvdyBzdGFydHMgZnJvbSAxXG4gICAtIGNvbCBzdGFydHMgZnJvbSAxXG5cbiAgIGZvciByZWxhdGl2ZSBwb3MsIG9idmlvdXNseSAwIG1lYW5zIHNhbWUgcG9zaXRpb25cbiopXG5cbigqIG9wZXJhdGlvbnMgdGhhdCBtYWtlIHNlbnNlIGZvciBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwb3NpdGlvbnMgKilcbm1vZHVsZSBQb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJvdyA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyByb3c7IGNvbCB9ID0gVHlwZS5BdG9tIChQcmludGYuc3ByaW50ZiBcIiVkOiVkXCIgcm93IGNvbClcbiAgbGV0IGFkZCB0MSB0MiA9IHsgcm93ID0gdDEucm93ICsgdDIucm93OyBjb2wgPSB0MS5jb2wgKyB0Mi5jb2wgfVxuICBsZXQgc3ViIHQxIHQyID0geyByb3cgPSB0MS5yb3cgLSB0Mi5yb3c7IGNvbCA9IHQxLmNvbCAtIHQyLmNvbCB9XG5cbiAgbGV0IGNvbXBhcmUgeyByb3cgPSByMTsgY29sID0gYzEgfSB7IHJvdyA9IHIyOyBjb2wgPSBjMiB9ID1cbiAgICBpZiByMSA9IHIyIHRoZW4gYzEgLSBjMiBlbHNlIHIxIC0gcjJcbiAgOztcblxuICBsZXQgZ2VxIHQxIHQyID0gY29tcGFyZSB0MSB0MiA+PSAwXG5lbmRcblxubW9kdWxlIFJlbGF0aXZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IHplcm8gPSB7IHJvdyA9IDA7IGNvbCA9IDAgfVxuZW5kXG5cbm1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCBvcmlnaW4gPSB7IHJvdyA9IDE7IGNvbCA9IDEgfVxuXG4gIGxldCBvZl9sZXhpbmcgeyBMZXhpbmcucG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sOyBwb3NfZm5hbWUgPSBfIH0gPVxuICAgIHsgcm93ID0gcG9zX2xudW07IGNvbCA9IHBvc19jbnVtIC0gcG9zX2JvbCArIDEgfVxuICA7O1xuXG4gIGxldCBkaWZmID0gc3ViXG5lbmRcbiIsIigqKiBUeXBlIG9mIGFubm90YXRlZCBTLWV4cHJlc3Npb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChQb3MgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICgqKiBJbiBbQXRvbSAoXywgcywgb3B0KV0sIFtzXSBpcyB0aGUgdW5lc2NhcGVkIHN0cmluZywgdGhhdCBpcyB0aGUgYXJndW1lbnQgb2ZcbiAgICAgICAgW1R5cGUuQXRvbV0uIFdoZW4gW29wdF0gaXMgZGVmaW5lZCwgaXQgaXMgdGhlIHNvdXJjZSBzeW50YXggb2YgW3NdLCB0aGF0IGlzIGFcbiAgICAgICAgc3RyaW5nIHRoYXQgY2FuIGJlIHByaW50ZWQgYXMgaXMgaWYgb25lIHdhbnRzIHRvIHBhcnNlIGFuZCBwcmludCBwcmVzZXJ2aW5nXG4gICAgICAgIHN5bnRheC4gVGhpcyBpcyB1c3VhbGx5IHNldCBmb3IgcXVvdGVkIGF0b21zICh0byBwcmVzZXJ2ZSB0aGUgZmFjdCB0aGF0IHdlcmVcbiAgICAgICAgcXVvdGVkKSwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgdG8gZG8gdGhlIHJldmVyc2U6IHNldCBpdCBmb3IgYXRvbXMgdGhhdCBjYW4gYmVcbiAgICAgICAgcGFyc2VkIHVucXVvdGVkIGJ1dCB3b3VsZCBiZSBwcmludGVkIHdpdGggcXVvdGVzLCB0byBwcmVzZXJ2ZSB0aGUgbGFjayBvZiBxdW90ZXMuXG4gICAgICAgIEZvciBpbnN0YW5jZTpcbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8YXx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhIGJcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBTb21lIFwiXFxcImFcXFwiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBTb21lIFwiYSBiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8YSBifH0gb3IgbWF5IHJhaXNlLCBhcyBpdCBpc1xuICAgICAgICBhbiBlcnJvciB0byBjb25zdHJ1Y3RlZCBzdWNoIGFuIGF0b20gKGRvZXNuJ3QgcGFyc2UgYmFjaykgKilcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdG9tIG9mIFBvcy50ICogc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICAgfCBMaXN0IG9mIFBvcy50ICogdF9vcl9jb21tZW50IGxpc3QgKiBQb3MudFxuXG4gICAgKCogcG9zaXRpb25zIG9mIGxlZnQgYW5kIHJpZ2h0IHBhcmVucyAqKVxuICAgIGFuZCB0X29yX2NvbW1lbnQgPVxuICAgICAgfCBTZXhwIG9mIHRcbiAgICAgIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbiAgICBhbmQgY29tbWVudCA9XG4gICAgICB8IFBsYWluX2NvbW1lbnQgb2YgUG9zLnQgKiBzdHJpbmdcbiAgICAgIHwgU2V4cF9jb21tZW50IG9mIFBvcy50ICogY29tbWVudCBsaXN0ICogdFxuICBlbmRcblxuICBpbmNsdWRlIFRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBUXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBUb19zZXhwIDogc2lnXG4gICAgdmFsIG9mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBvZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBtYXliZSB3ZSBjYW4gYWN0dWFsbHkgdXNlIGNvbnYgaGVyZSwgaW5zdGVhZCBvZiBpbmxpbmluZyBpdCAqKVxuXG4gICAgbGV0IG9mX3BvcyA9IFBvcy5zZXhwX29mX3RcbiAgICBsZXQgb2Zfc3RyaW5nIHggPSBUeXBlLkF0b20geFxuICAgIGxldCBvZl9saXN0IG9mX2EgeHMgPSBUeXBlLkxpc3QgKExpc3QubWFwIH5mOm9mX2EgeHMpXG5cbiAgICBsZXQgb2Zfb3B0aW9uIG9mX2EgPSBmdW5jdGlvblxuICAgICAgfCBTb21lIHggLT4gVHlwZS5MaXN0IFsgb2ZfYSB4IF1cbiAgICAgIHwgTm9uZSAtPiBUeXBlLkxpc3QgW11cbiAgICA7O1xuXG4gICAgbGV0IHJlYyBvZl90ID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQXRvbVwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2Mjsgb2Zfb3B0aW9uIG9mX3N0cmluZyB2MyBdXG4gICAgICB8IExpc3QgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkxpc3RcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX3Rfb3JfY29tbWVudCB2Mjsgb2ZfcG9zIHYzIF1cblxuICAgIGFuZCBvZl90X29yX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwIHQgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cFwiOyBvZl90IHQgXVxuICAgICAgfCBDb21tZW50IGMgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQ29tbWVudFwiOyBvZl9jb21tZW50IGMgXVxuXG4gICAgYW5kIG9mX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBQbGFpbl9jb21tZW50ICh2MSwgdjIpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlBsYWluX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjIgXVxuICAgICAgfCBTZXhwX2NvbW1lbnQgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBfY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfY29tbWVudCB2Mjsgb2ZfdCB2MyBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRvX3NleHAub2ZfdFxuICBsZXQgc2V4cF9vZl9jb21tZW50ID0gVG9fc2V4cC5vZl9jb21tZW50XG4gIGxldCBzZXhwX29mX3Rfb3JfY29tbWVudCA9IFRvX3NleHAub2ZfdF9vcl9jb21tZW50XG5lbmRcblxuaW5jbHVkZSBNYWtlIChTcmNfcG9zLlJlbGF0aXZlKVxubW9kdWxlIFBhcnNlZCA9IE1ha2UgKFNyY19wb3MuQWJzb2x1dGUpXG5cbmxldCByZWxhdGl2aXplID1cbiAgbGV0IHJlbCB+b3V0ZXJfcCBwID0gU3JjX3Bvcy5BYnNvbHV0ZS5kaWZmIHAgb3V0ZXJfcCBpblxuICBsZXQgcmVjIGF1eF90IH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5BdG9tIChwb3MsIHMsIHNvcHQpIC0+IEF0b20gKHJlbCBwb3Mgfm91dGVyX3AsIHMsIHNvcHQpXG4gICAgfCBQYXJzZWQuTGlzdCAoc3RhcnRfcG9zLCB0b2NzLCBlbmRfcG9zKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoIHJlbCBzdGFydF9wb3Mgfm91dGVyX3BcbiAgICAgICAgLCBMaXN0Lm1hcCB0b2NzIH5mOihmdW4gdG9jIC0+IGF1eF90b2Mgfm91dGVyX3A6c3RhcnRfcG9zIHRvYylcbiAgICAgICAgLCByZWwgZW5kX3BvcyB+b3V0ZXJfcCApXG4gIGFuZCBhdXhfdG9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5TZXhwIHQgLT4gU2V4cCAoYXV4X3QgdCB+b3V0ZXJfcClcbiAgICB8IFBhcnNlZC5Db21tZW50IGMgLT4gQ29tbWVudCAoYXV4X2MgYyB+b3V0ZXJfcClcbiAgYW5kIGF1eF9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5QbGFpbl9jb21tZW50IChwb3MsIHR4dCkgLT4gUGxhaW5fY29tbWVudCAocmVsIHBvcyB+b3V0ZXJfcCwgdHh0KVxuICAgIHwgUGFyc2VkLlNleHBfY29tbWVudCAocG9zLCBjcywgdCkgLT5cbiAgICAgIFNleHBfY29tbWVudFxuICAgICAgICAocmVsIHBvcyB+b3V0ZXJfcCwgTGlzdC5tYXAgY3MgfmY6KGZ1biBjIC0+IGF1eF9jIH5vdXRlcl9wIGMpLCBhdXhfdCB0IH5vdXRlcl9wKVxuICBpblxuICBmdW4gdG9jIC0+IGF1eF90b2MgdG9jIH5vdXRlcl9wOlNyY19wb3MuQWJzb2x1dGUub3JpZ2luXG47O1xuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChcbiMgMTUgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgIHN0cmluZ1xuIyA2IFwic3JjL3BhcnNlci5tbFwiXG4pXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZ1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4jIDI3IFwic3JjL3BhcnNlci5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTggKCogTFBBUkVOICopO1xuICAyNTkgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjAgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA5XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDIyXFwwMDBcXDAyNVxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwMTBcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTJcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDEwXFwwMDBcXDAxNVxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxM1xcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDA0MFxcMDAwXFxcblxcMDM0XFwyNTVcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMjU1XFxcblxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDI1NVxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMjlcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI4NlxubGV0IHl5dGFibGUgPSBcIlxcMDE2XFwwMDBcXFxuXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDAyM1xcMDAwXFwwMjlcXDAwMFxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMzlcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDIyXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXFxuXFwwMzFcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDI2XFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA4XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjhcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA4XFwwMDBcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMDExXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIExQQVJFTlxcMDAwXFxcbiAgUlBBUkVOXFwwMDBcXFxuICBFT0ZcXDAwMFxcXG4gIEhBU0hfU0VNSVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIFNUUklOR1xcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAxNzQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE4MSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICggVHlwZS5BdG9tIF8xIClcbiMgMTg4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IFtdIClcbiMgMTk0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IChMaXN0LnJldiBfMikgKVxuIyAyMDEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICggcGFyc2VfZmFpbHVyZSBcInNleHBcIiApXG4jIDIwNyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMjIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMjkgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjM3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnRzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTAgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzEgKVxuIyAyNDQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIF8yIClcbiMgMjUyIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAyNTggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTm9uZSApXG4jIDI2NSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAyNzIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjc5IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjg3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5NSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAzMDIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzA4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDMxNSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMjEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZS50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgb3B0aW9uKVxubGV0IHNleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChcbiMgNTMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgIHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvblxuIyA2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4pXG4gIHwgQ09NTUVOVCBvZiAoXG4jIDU0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICBzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uXG4jIDExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4pXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZ1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcbiAgKCogY29tcGFyZSB0byBwYXJzZXIubWx5ICopXG5cbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgcGFyc2VfZmFpbHVyZSB3aGF0ID1cbiAgICBsZXQgcG9zID0gUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlNleHBsaWIuUGFyc2VyOiBmYWlsZWQgdG8gcGFyc2UgbGluZSAlZCBjaGFyICVkOiAlc1wiXG4gICAgICAgIHBvcy5wb3NfbG51bSAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpIHdoYXQgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgV2l0aF9wb3MgPSBzdHJ1Y3RcblxuICAgIG9wZW4gVHlwZV93aXRoX2xheW91dC5QYXJzZWRcblxuICAgIGxldCBjb2VyY2UgPSBTcmNfcG9zLkFic29sdXRlLm9mX2xleGluZ1xuXG4gICAgbGV0IHN0YXJ0X3BvcyAoKSA9IGNvZXJjZSAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKVxuXG4gICAgbGV0IGVuZF9wb3MgKCkgPVxuICAgICAgbGV0IHAgPSBQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpIGluXG4gICAgICBjb2VyY2UgeyBwIHdpdGggTGV4aW5nLnBvc19jbnVtID0gcC5MZXhpbmcucG9zX2NudW0gLSAxIH1cblxuICAgIGxldCBhdG9tICh4LCB5KSA9XG4gICAgICBsZXQgKHBvcywgeSkgPVxuICAgICAgICBtYXRjaCB5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChzdGFydF9wb3MgKCksIFNvbWUgeClcbiAgICAgICAgfCBTb21lIChwb3MsIHgpIC0+IChjb2VyY2UgcG9zLCBTb21lIHgpXG4gICAgICBpblxuICAgICAgQXRvbSAocG9zLCB4LCB5KVxuXG4gICAgbGV0IGxpc3QgdHMgPSBMaXN0IChzdGFydF9wb3MgKCksIHRzLCBlbmRfcG9zICgpKVxuXG4gICAgbGV0IHNleHAgICAgeCA9IFNleHAgICAgeFxuICAgIGxldCBjb21tZW50IHggPSBDb21tZW50IHhcblxuICAgIGxldCBzZXhwX2NvbW1lbnQgY3MgdCA9IFNleHBfY29tbWVudCAoc3RhcnRfcG9zICgpLCBjcywgdClcblxuICAgIGxldCBwbGFpbl9jb21tZW50ICh4LCBwb3Nfb3B0KSA9XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggcG9zX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdGFydF9wb3MgKClcbiAgICAgICAgfCBTb21lIHBvcyAtPiBjb2VyY2UgcG9zXG4gICAgICBpblxuICAgICAgUGxhaW5fY29tbWVudCAocG9zLCB4KVxuXG4gIGVuZFxuXG4jIDcwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTkgKCogTFBBUkVOICopO1xuICAyNjAgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjEgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAyNTggKCogQ09NTUVOVCAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDEwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMDZcXDAwMFxcMDIyXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFxcblxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMjBcXDAwMFxcMDE1XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE2XFwwMDBcXDAyMVxcMDAwXFxcblxcMDExXFwwMDBcXDAxN1xcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA2XFwwMDBcXFxuXFwwMjBcXDAwMFxcMDE4XFwwMDBcXDAyMVxcMDAwXFwwMjNcXDAwMFxcMDI2XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDE1XFwwMDBcXDAyMlxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDAzN1xcMDAwXFxcblxcMDA5XFwyNTVcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwyNTVcXDAwOVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDI1NVxcMjUxXFwyNTVcXDIzNVxcMjU1XFxcblxcMDAwXFwwMDBcXDIzNFxcMjU1XFwwMTBcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI5MlxubGV0IHl5dGFibGUgPSBcIlxcMDM2XFwwMDBcXFxuXFwwMTZcXDAwMFxcMDMzXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDI4XFwwMDBcXDAzM1xcMDAwXFwwMTlcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDI1XFwwMDBcXDAxMVxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMzVcXDAwMFxcMDExXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAxMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwMVxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBDT01NRU5UXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAoIFdpdGhfcG9zLmF0b20gXzEgKVxuIyAyMjIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgNzYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3MubGlzdCAoTGlzdC5yZXYgXzIpIClcbiMgMjI5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjM1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgODAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAoIFdpdGhfcG9zLnBsYWluX2NvbW1lbnQgXzEgKVxuIyAyNDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4MSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHBfY29tbWVudCAoTGlzdC5yZXYgXzIpIF8zIClcbiMgMjUwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjU2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyNjQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwIF8xIClcbiMgMjcxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmNvbW1lbnQgXzEgKVxuIyAyNzggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjg0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyOTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgKCBUeXBlX3dpdGhfbGF5b3V0LnJlbGF0aXZpemUgXzEgKVxuIyAyOTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggU29tZSBfMSApXG4jIDMwNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBOb25lIClcbiMgMzEyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggW18xXSApXG4jIDMxOSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAzMjcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMzNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzNDAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzQ3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM1MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNjAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwc19hYnMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgcmV2X3NleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHNleHAgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgc2V4cHNfYWJzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDUgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG4iLCIjIDEgXCJzcmMvbGV4ZXIubWxsXCJcbiBcbiAgKCoqIExleGVyOiBMZXhlciBTcGVjaWZpY2F0aW9uIGZvciBTLWV4cHJlc3Npb25zICopXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgICB8ICduJyAtPiAnXFwwMTAnXG4gICAgfCAncicgLT4gJ1xcMDEzJ1xuICAgIHwgJ2InIC0+ICdcXDAwOCdcbiAgICB8ICd0JyAtPiAnXFwwMDknXG4gICAgfCBjIC0+IGNcblxuICBsZXQgbGYgPSAnXFwwMTAnXG5cbiAgbGV0IGRlY19jb2RlIGMxIGMyIGMzID1cbiAgICAxMDAgKiAoQ2hhci5jb2RlIGMxIC0gNDgpICsgMTAgKiAoQ2hhci5jb2RlIGMyIC0gNDgpICsgKENoYXIuY29kZSBjMyAtIDQ4KVxuXG4gIGxldCBoZXhfY29kZSBjMSBjMiA9XG4gICAgbGV0IGQxID0gQ2hhci5jb2RlIGMxIGluXG4gICAgbGV0IHZhbDEgPVxuICAgICAgaWYgZDEgPj0gOTcgdGhlbiBkMSAtIDg3XG4gICAgICBlbHNlIGlmIGQxID49IDY1IHRoZW4gZDEgLSA1NVxuICAgICAgZWxzZSBkMSAtIDQ4IGluXG4gICAgbGV0IGQyID0gQ2hhci5jb2RlIGMyIGluXG4gICAgbGV0IHZhbDIgPVxuICAgICAgaWYgZDIgPj0gOTcgdGhlbiBkMiAtIDg3XG4gICAgICBlbHNlIGlmIGQyID49IDY1IHRoZW4gZDIgLSA1NVxuICAgICAgZWxzZSBkMiAtIDQ4IGluXG4gICAgdmFsMSAqIDE2ICsgdmFsMlxuXG4gIGxldCBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBkaWZmID1cbiAgICBsZXQgbGV4X2N1cnJfcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHtcbiAgICAgICAgbGV4X2N1cnJfcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGV4X2N1cnJfcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsZXhfY3Vycl9wLnBvc19jbnVtIC0gZGlmZjtcbiAgICAgIH1cblxuICAoKiBzYW1lIGxlbmd0aCBjb21wdXRhdGlvbiBhcyBpbiBbTGV4aW5nLmxleGVtZV0gKilcbiAgbGV0IGxleGVtZV9sZW4geyBsZXhfc3RhcnRfcG9zOyBsZXhfY3Vycl9wb3M7IF8gfSA9IGxleF9jdXJyX3BvcyAtIGxleF9zdGFydF9wb3NcblxuICBsZXQgbWFpbl9mYWlsdXJlIGxleGJ1ZiBtc2cgPVxuICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgIFwiU2V4cGxpYi5MZXhlci5tYWluOiAlcyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICBtc2cgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbClcbiAgICBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gICAgICB2YWwgYWRkX2NoYXIgOiB0IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgdmFsIGFkZF9zdWJieXRlcyA6IHQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICB2YWwgYWRkX2xleGVtZSA6IHQgLT4gbGV4YnVmIC0+IHVuaXRcbiAgICAgIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICAgICAgdmFsIG9mX2J1ZmZlciA6IEJ1ZmZlci50IC0+IHRcbiAgICBlbmRcbiAgICBtb2R1bGUgVG9rZW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdmFsIGxwYXJlbiA6IHRcbiAgICAgIHZhbCBycGFyZW4gOiB0XG4gICAgICB2YWwgZW9mIDogdFxuICAgICAgdmFsIHNpbXBsZV9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgICAgdmFsIGhhc2hfc2VtaSA6IHRcbiAgICAgIHZhbCBxdW90ZWRfc3RyaW5nIDogTGV4aW5nLnBvc2l0aW9uIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gdFxuICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgIHZhbCBjb21tZW50IDogc3RyaW5nIC0+IG1haW46cyAtPiBzXG4gICAgICB2YWwgYmxvY2tfY29tbWVudCA6IExleGluZy5wb3NpdGlvbiAtPiBtYWluOnMgLT4gc1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoWCA6IFQpIDogc2lnXG4gICAgdmFsIG1haW4gOiA/YnVmOkJ1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gWC5Ub2tlbi50XG4gIGVuZCA9IHN0cnVjdCAoKiBCRUdJTiBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuICAgIG9wZW4gWFxuXG4jIDg0IFwic3JjL2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI0NFxcMjU1XFwwMTBcXDAwMFxcMDQzXFwwMDBcXDA1M1xcMDAwXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwODZcXDAwMFxcMjQ4XFwyNTVcXDI0OVxcMjU1XFwwOTZcXDAwMFxcXG4gICAgXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE3MlxcMDAwXFwxODJcXDAwMFxcMjIwXFwwMDBcXDIzMFxcMDAwXFwwMDdcXDAwMVxcMjQ3XFwyNTVcXFxuICAgIFxcMDE3XFwwMDFcXDA1MFxcMDAxXFwwNjBcXDAwMVxcMDkzXFwwMDFcXDEwM1xcMDAxXFwxMzZcXDAwMVxcMTQ2XFwwMDFcXDE4MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwyMjRcXDAwMVxcMjM0XFwwMDFcXDAxMVxcMDAyXFwwMzdcXDAwMFxcMjQ2XFwyNTVcXDA4MFxcMDAwXFwyNDhcXDI1NVxcXG4gICAgXFwwMjNcXDAwMlxcMjU1XFwyNTVcXDI0OVxcMjU1XFwwNTdcXDAwMlxcMDMzXFwwMDJcXDI1MlxcMjU1XFwwMDdcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDE3XFwwMDBcXDExMlxcMDAyXFwyNTFcXDI1NVxcMTQ0XFwwMDJcXDI1MFxcMjU1XFwwODFcXDAwMFxcMjUwXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDEyMlxcMDAwXFwyNTVcXDI1NVxcMTY2XFwwMDBcXDEzMFxcMDAxXFwyNTJcXDI1NVxcMjUxXFwyNTVcXDE3M1xcMDAxXFwyNTFcXDAwMVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyM1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDM1XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDVcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDA0NlxcMDAwXFwwMDlcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAzNlxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAzNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDM2XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxN1xcMDAwXFwwMzhcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNThcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNThcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDBcXDA1M1xcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDE4XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcbiAgICBcXDAyMVxcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFxcbiAgICBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM2XFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMTdcXDAwMFxcMDU5XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDI4XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAxOVxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDI5XFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcXG4gICAgXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAyNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwNDBcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgbWFpbiBidWYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAoIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgICAgICAgICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZiApXG4jIDM3MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICggbWFpbiBidWYgbGV4YnVmIClcbiMgMzc1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0XG4jIDM4MSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLmNvbW1lbnQgdGV4dCB+bWFpbiBidWYgbGV4YnVmIClcbiMgMzg1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgOTkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5scGFyZW4gKVxuIyAzOTAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAxMDAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5ycGFyZW4gKVxuIyAzOTUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAxMDIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgcG9zIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLnF1b3RlZF9zdHJpbmcgcG9zIGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MDcgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyAxMTAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggVG9rZW4uaGFzaF9zZW1pIClcbiMgNDEyIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTEyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBbcG9zXSBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5ibG9ja19jb21tZW50IHBvcyB+bWFpbiBidWYgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQyNCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDEyMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiIClcbiMgNDI5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTI2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCIgKVxuIyA0MzQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbmxldFxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyXG4jIDQ0MCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTI3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLnNpbXBsZV9zdHJpbmcgc3RyIClcbiMgNDQ0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDEyOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmVvZiApXG4jIDQ0OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgMzZcbmFuZCBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTMxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmOyAoKSApXG4jIDQ2MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDEzMyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAyIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ3MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDE0MCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAzIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ4MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTQ2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyA0ODcgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTQ3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDk1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbmxldFxuIyAxNTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICBjMVxuIyA1MDEgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAxNTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDUwNiBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM1xuIyA1MTEgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTUzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gZGVjX2NvZGUgYzEgYzIgYzMgaW5cbiAgICAgICAgaWYgdiA+IDI1NSB0aGVuIChcbiAgICAgICAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiBcXFxuICAgICAgICAgICAgICAgaWxsZWdhbCBlc2NhcGUgYXQgbGluZSAlZCBjaGFyICVkOiBgXFxcXCVjJWMlYydcIlxuICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sIC0gMylcbiAgICAgICAgICAgICAgYzEgYzIgYzMgaW5cbiAgICAgICAgICBmYWlsd2l0aCBtc2cpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTI5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbmxldFxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFcbiMgNTM1IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTY4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTQwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE2OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGhleF9jb2RlIGMxIGMyIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NDkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDE3NSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgY1xuIyA1NTUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTc2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTY0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTgzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBsZjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU3NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDE5MCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgb2ZzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBvZnMgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBvZnMgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTg1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgc3RhcnQucG9zX2xudW0gKHN0YXJ0LnBvc19jbnVtIC0gc3RhcnQucG9zX2JvbClcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDU5NyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIDUzXG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIwOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7IHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MTAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAyMTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjE2IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMjE1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDEgfSBpblxuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmXG4gICAgICApXG4jIDYyNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDIyMyBcInNyYy9sZXhlci5tbGxcIlxuICAgIChcbiAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMiB9IGluXG4gICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIChzdGFydCA6OiBsb2NzKSBsZXhidWZcbiAgICApXG4jIDYzNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDIzMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtfXSAtPiAoKSAoKiB0aGUgY29tbWVudCBpcyBmaW5pc2hlZCAqKVxuICAgICAgICB8IF8gOjogKF8gOjogXyBhcyB0KSAtPiBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIHQgbGV4YnVmXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlICAoKiBpbXBvc3NpYmxlICopXG4gICAgICApXG4jIDY0OCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDIzOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9IDo6IF8gLT5cbiAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICBzcHJpbnRmIFwiU2V4cGxpYi5MZXhlci5zY2FuX2Jsb2NrX2NvbW1lbnQ6IFxcXG4gICAgICAgICAgICAgICAgdW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnQgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA2NjMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDI1MCBcInNyYy9sZXhlci5tbGxcIlxuICAoKiBSRVNVTUUgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICAgIGxldCBtYWluID9idWYgPVxuICAgICAgbGV0IGJ1ZiA9XG4gICAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jcmVhdGUgNjRcbiAgICAgICAgfCBTb21lIGJ1ZiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIub2ZfYnVmZmVyIGJ1ZlxuICAgICAgaW5cbiAgICAgIG1haW4gYnVmXG5cbiAgZW5kICgqIEVORCBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gIG1vZHVsZSBWYW5pbGxhID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJ1ZmZlclxuICAgICAgICBsZXQgYWRkX2xleGVtZSBfIF8gPSAoKVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGIgPSBiXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlclxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgeFxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBfIGJ1ZiA9IFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgX3BvcyB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWZcbiAgICAgICAgbGV0IGNvbW1lbnQgX3RleHQgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmICgqIHNraXAgYW5kIGNvbnRpbnVlIGxleGluZyAqKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBXaXRoX2xheW91dCA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgIGNvbnRlbnRzIDogQnVmZmVyLnQ7XG4gICAgICAgICAgbGV4ZW1lIDogQnVmZmVyLnQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNyZWF0ZSBuID0ge2NvbnRlbnRzID0gQnVmZmVyLmNyZWF0ZSBuOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIG59XG4gICAgICAgIGxldCBvZl9idWZmZXIgY29udGVudHMgPSB7IGNvbnRlbnRzOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIDY0IH1cbiAgICAgICAgbGV0IGFkZF9jaGFyIHQgY2ggPSBCdWZmZXIuYWRkX2NoYXIgdC5jb250ZW50cyBjaFxuICAgICAgICBsZXQgYWRkX3N1YmJ5dGVzIHQgc3RyIG9mcyBsZW4gPSBCdWZmZXIuYWRkX3N1YmJ5dGVzIHQuY29udGVudHMgc3RyIG9mcyBsZW5cbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgdCBsZXhidWYgPSBCdWZmZXIuYWRkX3N0cmluZyB0LmxleGVtZSAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgIGxldCBjbGVhciB0ID0gQnVmZmVyLmNsZWFyIHQubGV4ZW1lOyBCdWZmZXIuY2xlYXIgdC5jb250ZW50c1xuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJfd2l0aF9sYXlvdXRcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HICh4LCBOb25lKVxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBwb3Mge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzOyBsZXhlbWV9ID1cbiAgICAgICAgICBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBjb250ZW50cywgU29tZSAocG9zLCBCdWZmZXIuY29udGVudHMgbGV4ZW1lKSlcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgcG9zIH5tYWluOl8ge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzID0gXzsgbGV4ZW1lfSBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UIChCdWZmZXIuY29udGVudHMgbGV4ZW1lLCBTb21lIHBvcylcbiAgICAgICAgbGV0IGNvbW1lbnQgdGV4dCB+bWFpbjpfIF9idWYgX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAodGV4dCwgTm9uZSlcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBsZXQgbWFpbiA9IFZhbmlsbGEubWFpblxuICBsZXQgbWFpbl93aXRoX2xheW91dCA9IFdpdGhfbGF5b3V0Lm1haW5cblxuXG4jIDc0NSBcInNyYy9sZXhlci5tbFwiXG4iLCIoKiBTZXhwOiBNb2R1bGUgZm9yIGhhbmRsaW5nIFMtZXhwcmVzc2lvbnMgKEkvTywgZXRjLikgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gQmlnYXJyYXlcbm1vZHVsZSBTZXhwbGliID0gU2V4cGxpYjBcbm1vZHVsZSBDb252ID0gU2V4cGxpYi5TZXhwX2NvbnZcblxuKCogY29udi5tbCBkZXBlbmRzIG9uIHVzIHNvIHdlIGNhbiBvbmx5IHVzZSB0aGlzIG1vZHVsZSAqKVxuXG5pbmNsdWRlIFR5cGVcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcml2YXRlXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBJL08tY2hhbm5lbHMgKilcblxubGV0IHdpdGhfbmV3X2J1ZmZlciBvYyBmID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICBmIGJ1ZjtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2MgYnVmXG47O1xuXG5sZXQgb3V0cHV0X2h1bSBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gc2V4cCB+YnVmKVxuXG5sZXQgb3V0cHV0X2h1bV9pbmRlbnQgaW5kZW50IG9jIHNleHAgPVxuICB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSB+aW5kZW50IHNleHAgfmJ1Zilcbjs7XG5cbmxldCBvdXRwdXRfbWFjaCBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZilcbmxldCBvdXRwdXQgPSBvdXRwdXRfbWFjaFxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmaWxlICopXG5cbigqIFRoZSB0ZW1wIGZpbGUgZnVuY3Rpb25zIGluIHRoZSBPQ2FtbCBGaWxlbmFtZSBtb2R1bGUgZG8gbm90IHN1cHBvcnRcbiAgIHBlcm1pc3Npb25zLiAgQnV0IG9wZW5pbmcgYSBmaWxlIHdpdGggZ2l2ZW4gcGVybWlzc2lvbnMgaXMgZGlmZmVyZW50XG4gICBmcm9tIG9wZW5pbmcgaXQgYW5kIGNobW9kaW5nIGl0IHRvIHRoZXNlIHBlcm1pc3Npb25zLCBiZWNhdXNlIHRoZSB1bWFza1xuICAgaXMgdGFrZW4gaW4gYWNjb3VudC4gIFVuZGVyIFVuaXggdGhlcmUncyBubyBlYXN5IHdheSB0byBnZXQgdGhlIHVtYXNrIGluXG4gICBhIHRocmVhZC1zYWZlIHdheS4gKilcbm1vZHVsZSBUbXBfZmlsZSA9IHN0cnVjdFxuICBsZXQgcHJuZyA9IHJlZiBOb25lXG5cbiAgbGV0IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByYW5kX3N0YXRlID1cbiAgICAgIG1hdGNoICFwcm5nIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgcmV0ID0gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpIGluXG4gICAgICAgIHBybmcgOj0gU29tZSByZXQ7XG4gICAgICAgIHJldFxuICAgIGluXG4gICAgbGV0IHJuZCA9IFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRfc3RhdGUgbGFuZCAweEZGRkZGRiBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeFxuICA7O1xuXG4gICgqIEtlZXAgdGhlIHBlcm1pc3Npb25zIGxvb3NlLiBTZXhwcyBhcmUgdXN1YWxseSBzaGFyZWQgYW5kIHJhcmVseSBwcml2YXRlKilcbiAgbGV0IG9wZW5fdGVtcF9maWxlID8ocGVybSA9IDBvNjY2KSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4IGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IG9jID1cbiAgICAgICAgICBvcGVuX291dF9nZW4gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsOyBPcGVuX3RleHQgXSBwZXJtIG5hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbmFtZSwgb2NcbiAgICAgIHdpdGhcbiAgICAgIHwgU3lzX2Vycm9yIF8gYXMgZSAtPiBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICAgIGluXG4gICAgdHJ5X25hbWUgMFxuICA7O1xuZW5kXG5cbmxldCBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfZnVuY3Rpb24gZmlsZSBzZXhwID1cbiAgbGV0IHRtcF9uYW1lLCBvYyA9IFRtcF9maWxlLm9wZW5fdGVtcF9maWxlID9wZXJtIGZpbGUgXCJ0bXBcIiBpblxuICAodHJ5XG4gICAgIG91dHB1dF9mdW5jdGlvbiBvYyBzZXhwO1xuICAgICBjbG9zZV9vdXQgb2NcbiAgIHdpdGhcbiAgIHwgZSAtPlxuICAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgICh0cnkgU3lzLnJlbW92ZSB0bXBfbmFtZSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICByYWlzZSBlKTtcbiAgU3lzLnJlbmFtZSB0bXBfbmFtZSBmaWxlXG47O1xuXG5sZXQgb3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jIHNleHAgPVxuICBkb19vdXRwdXQgb2Mgc2V4cDtcbiAgb3V0cHV0X3N0cmluZyBvYyBcIlxcblwiXG47O1xuXG5sZXQgc2F2ZV9odW0gP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cFxubGV0IHNhdmVfbWFjaCA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfbWFjaCBmaWxlIHNleHBcbmxldCBzYXZlID0gc2F2ZV9tYWNoXG5sZXQgb3V0cHV0X3NleHBzX25sIGRvX291dHB1dCBvYyBzZXhwcyA9IExpc3QuaXRlciAob3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jKSBzZXhwc1xuXG5sZXQgc2F2ZV9zZXhwc19odW0gP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHNfbWFjaCA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfbWFjaCkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHMgPSBzYXZlX3NleHBzX21hY2hcblxuKCogU2NhbiBmdW5jdGlvbnMgKilcblxubGV0IHNjYW5fc2V4cCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cF9vcHQgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cF9vcHQgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3Jldl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5yZXZfc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5cbmxldCBnZXRfbWFpbl9idWYgYnVmID1cbiAgbGV0IGJ1ZiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgICB8IFNvbWUgYnVmIC0+IGJ1ZlxuICBpblxuICBMZXhlci5tYWluIH5idWZcbjs7XG5cbmxldCBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+ZiB+aW5pdCBsZXhidWYgPVxuICBsZXQgbWFpbiA9IGdldF9tYWluX2J1ZiBidWYgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggUGFyc2VyLnNleHBfb3B0IG1haW4gbGV4YnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIHNleHAgLT4gbG9vcCAoZiBhY2Mgc2V4cClcbiAgaW5cbiAgbG9vcCBpbml0XG47O1xuXG5sZXQgc2Nhbl9pdGVyX3NleHBzID9idWYgfmYgbGV4YnVmID1cbiAgc2Nhbl9mb2xkX3NleHBzID9idWYgbGV4YnVmIH5pbml0OigpIH5mOihmdW4gKCkgc2V4cCAtPiBmIHNleHApXG47O1xuXG5sZXQgc2Nhbl9zZXhwc19jb252ID9idWYgfmYgbGV4YnVmID1cbiAgbGV0IGNvbGwgYWNjIHNleHAgPSBmIHNleHAgOjogYWNjIGluXG4gIExpc3QucmV2IChzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+Zjpjb2xsIH5pbml0OltdIGxleGJ1Zilcbjs7XG5cbmxldCBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSA/Y29udGFpbmluZ19zZXhwID9sb2NhdGlvbiA/aW52YWxpZF9zZXhwICgpIH5leG4gOiB0ID1cbiAgTGlzdFxuICAgIChMaXN0LmNvbmNhdFxuICAgICAgIFsgWyBBdG9tIFwiT2Zfc2V4cF9lcnJvclwiIF1cbiAgICAgICA7IChtYXRjaCBsb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBBdG9tIHggXSlcbiAgICAgICA7IFsgKG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgICAgfCBGYWlsdXJlIHggLT4gQXRvbSB4XG4gICAgICAgICAgICAgfCBfIC0+IENvbnYuc2V4cF9vZl9leG4gZXhuKVxuICAgICAgICAgXVxuICAgICAgIDsgKG1hdGNoIGludmFsaWRfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImludmFsaWRfc2V4cFwiOyB4IF0gXSlcbiAgICAgICA7IChtYXRjaCBjb250YWluaW5nX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJjb250YWluaW5nX3NleHBcIjsgeCBdIF0pXG4gICAgICAgXSlcbjs7XG5cbigqIFBhcnRpYWwgcGFyc2luZyAqKVxuXG5tb2R1bGUgQW5ub3QgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBQYXJzZXhwLlBvc2l0aW9ucy5wb3MgPVxuICAgIHsgbGluZSA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgOyBvZmZzZXQgOiBpbnRcbiAgICB9XG5cbiAgdHlwZSByYW5nZSA9IFBhcnNleHAuUG9zaXRpb25zLnJhbmdlID1cbiAgICB7IHN0YXJ0X3BvcyA6IHBvc1xuICAgIDsgZW5kX3BvcyA6IHBvc1xuICAgIH1cblxuICB0eXBlIHQgPVxuICAgIHwgQXRvbSBvZiByYW5nZSAqIFR5cGUudFxuICAgIHwgTGlzdCBvZiByYW5nZSAqIHQgbGlzdCAqIFR5cGUudFxuXG4gIHR5cGUgJ2EgY29udiA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgRXJyb3Igb2YgZXhuICogdFxuICAgIF1cblxuICBleGNlcHRpb24gQ29udl9leG4gb2Ygc3RyaW5nICogZXhuXG5cbiAgbGV0ICgpID1cbiAgICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDb252X2V4bl0gKGZ1bmN0aW9uXG4gICAgICB8IENvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSAtPiBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmV4blxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICB0eXBlIHN0YWNrID1cbiAgICB7IG11dGFibGUgcG9zaXRpb25zIDogcG9zIGxpc3RcbiAgICA7IG11dGFibGUgc3RhY2sgOiB0IGxpc3QgbGlzdFxuICAgIH1cblxuICBsZXQgZ2V0X3NleHAgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAoXywgc2V4cCkgfCBMaXN0IChfLCBfLCBzZXhwKSAtPiBzZXhwXG4gIDs7XG5cbiAgbGV0IGdldF9yYW5nZSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChyYW5nZSwgXykgfCBMaXN0IChyYW5nZSwgXywgXykgLT4gcmFuZ2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl9jb252IHNleHBfb2ZfYSA9IGZ1bmN0aW9uXG4gICAgfCBgUmVzdWx0IGEgLT4gVHlwZS5MaXN0IFsgQXRvbSBcIlJlc3VsdFwiOyBhIHw+IHNleHBfb2ZfYSBdXG4gICAgfCBgRXJyb3IgKGV4biwgdCkgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwiRXJyb3JcIjsgTGlzdCBbIGV4biB8PiBDb252LnNleHBfb2ZfZXhuOyB0IHw+IGdldF9zZXhwIF0gXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBBbm5vdF9zZXhwIG9mIHRcblxuICBsZXQgZmluZF9zZXhwIGFubm90X3NleHAgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIGFubm90X3NleHAgPVxuICAgICAgbWF0Y2ggYW5ub3Rfc2V4cCB3aXRoXG4gICAgICB8IChBdG9tIChfLCBzdWJfc2V4cCkgfCBMaXN0IChfLCBfLCBzdWJfc2V4cCkpIHdoZW4gc2V4cCA9PSBzdWJfc2V4cCAtPlxuICAgICAgICByYWlzZSAoQW5ub3Rfc2V4cCBhbm5vdF9zZXhwKVxuICAgICAgfCBMaXN0IChfLCBhbm5vdHMsIF8pIC0+IExpc3QuaXRlciBsb29wIGFubm90c1xuICAgICAgfCBBdG9tIF8gLT4gKClcbiAgICBpblxuICAgIHRyeVxuICAgICAgbG9vcCBhbm5vdF9zZXhwO1xuICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IEFubm90X3NleHAgcmVzIC0+IFNvbWUgcmVzXG4gIDs7XG5lbmRcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIChBbm5vdC5Db252X2V4biAobG9jYXRpb24sIGV4biksIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4biwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZV9wb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgdGV4dF9saW5lIDogaW50XG4gICAgOyBtdXRhYmxlIHRleHRfY2hhciA6IGludFxuICAgIDsgbXV0YWJsZSBnbG9iYWxfb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGJ1Zl9wb3MgOiBpbnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/KHRleHRfbGluZSA9IDEpID8odGV4dF9jaGFyID0gMCkgPyhidWZfcG9zID0gMCkgPyhnbG9iYWxfb2Zmc2V0ID0gMCkgKCkgPVxuICAgIGxldCBmYWlsIG1zZyA9IGZhaWx3aXRoIChcIlNleHBsaWIuU2V4cC5QYXJzZV9wb3MuY3JlYXRlOiBcIiBeIG1zZykgaW5cbiAgICBpZiB0ZXh0X2xpbmUgPCAxXG4gICAgdGhlbiBmYWlsIFwidGV4dF9saW5lIDwgMVwiXG4gICAgZWxzZSBpZiB0ZXh0X2NoYXIgPCAwXG4gICAgdGhlbiBmYWlsIFwidGV4dF9jaGFyIDwgMFwiXG4gICAgZWxzZSBpZiBnbG9iYWxfb2Zmc2V0IDwgMFxuICAgIHRoZW4gZmFpbCBcImdsb2JhbF9vZmZzZXQgPCAwXCJcbiAgICBlbHNlIGlmIGJ1Zl9wb3MgPCAwXG4gICAgdGhlbiBmYWlsIFwiYnVmX3BvcyA8IDBcIlxuICAgIGVsc2UgeyB0ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9XG4gIDs7XG5cbiAgbGV0IHdpdGhfYnVmX3BvcyB0IGJ1Zl9wb3MgPSB7IHQgd2l0aCBidWZfcG9zIH1cbmVuZFxuXG5tb2R1bGUgQ29udF9zdGF0ZSA9IFBhcnNleHAuT2xkX3BhcnNlcl9jb250X3N0YXRlXG5cbnR5cGUgKCdhLCAndCkgcGFyc2VfcmVzdWx0ID1cbiAgfCBEb25lIG9mICd0ICogUGFyc2VfcG9zLnRcbiAgfCBDb250IG9mIENvbnRfc3RhdGUudCAqICgnYSwgJ3QpIHBhcnNlX2Z1blxuXG5hbmQgKCdhLCAndCkgcGFyc2VfZnVuID0gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+ICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdFxuXG50eXBlICd0IHBhcnNlX3N0YXRlID0geyBwYXJzZV9wb3MgOiBQYXJzZV9wb3MudCB9XG5cbnR5cGUgcGFyc2VfZXJyb3IgPVxuICB7IGVycl9tc2cgOiBzdHJpbmdcbiAgOyBwYXJzZV9zdGF0ZSA6IFsgYFNleHAgb2YgdCBsaXN0IGxpc3QgcGFyc2Vfc3RhdGUgfCBgQW5ub3Qgb2YgQW5ub3Quc3RhY2sgcGFyc2Vfc3RhdGUgXVxuICB9XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiBwYXJzZV9lcnJvclxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBwZSAtPlxuICAgICAgbGV0IHBwb3MgPVxuICAgICAgICBtYXRjaCBwZS5wYXJzZV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYFNleHAgeyBwYXJzZV9wb3MgfSB8IGBBbm5vdCB7IHBhcnNlX3BvcyB9IC0+IHBhcnNlX3Bvc1xuICAgICAgaW5cbiAgICAgIExpc3RcbiAgICAgICAgWyBBdG9tIFwiU2V4cGxpYi5TZXhwLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgOyBMaXN0XG4gICAgICAgICAgICBbIExpc3QgWyBBdG9tIFwiZXJyX21zZ1wiOyBBdG9tIHBlLmVycl9tc2cgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfbGluZVwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfbGluZSBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9jaGFyXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9jaGFyIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJnbG9iYWxfb2Zmc2V0XCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuZ2xvYmFsX29mZnNldCBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwiYnVmX3Bvc1wiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgXVxuICAgICAgICAgICAgXVxuICAgICAgICBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZXJfb3V0cHV0IDogc2lnXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBCYXJlX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBUeXBlLnRcbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwIDogVCB3aXRoIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBJID0gUGFyc2V4cC5Qb3NpdGlvbnMuSXRlcmF0b3JcblxuICBsZXQgcmVjIGFubm90YXRlX3NleHAgc2V4cCBpdGVyID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFR5cGUuQXRvbSBfIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90LkF0b20gKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIHNleHApXG4gICAgfCBUeXBlLkxpc3QgbCAtPlxuICAgICAgbGV0IHN0YXJ0X3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwX2xpc3QgbCBpdGVyIGluXG4gICAgICBsZXQgZW5kX3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBBbm5vdC5MaXN0ICh7IHN0YXJ0X3BvczsgZW5kX3BvcyB9LCBhbm5vdCwgc2V4cClcblxuICBhbmQgYW5ub3RhdGVfc2V4cF9saXN0IHNleHBzIGl0ZXIgPVxuICAgIExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biBzZXhwIC0+IGFubm90YXRlX3NleHAgc2V4cCBpdGVyKSBzZXhwcylcbiAgOztcblxuICBtb2R1bGUgQmFyZV9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyXG5cbiAgICB0eXBlIG91dHB1dCA9IFR5cGUudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSBzZXhwID0gcmFpc2Vfbm90cmFjZSAoRm91bmQgc2V4cClcbiAgZW5kXG5cbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyX2FuZF9wb3NpdGlvbnNcblxuICAgIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSAoc2V4cCwgcG9zaXRpb25zKSA9XG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwIHNleHAgKEkuY3JlYXRlIHBvc2l0aW9ucykgaW5cbiAgICAgIHJhaXNlX25vdHJhY2UgKEZvdW5kIGFubm90KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3BhcnNlciAoVCA6IHNpZ1xuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5UXG5cbiAgICB0eXBlIGlucHV0XG5cbiAgICB2YWwgbGVuZ3RoIDogaW5wdXQgLT4gaW50XG5cbiAgICB2YWwgdW5zYWZlX2ZlZWRfbG9vcFxuICAgICAgOiAgSW1wbC5TdGF0ZS50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgICAgIC0+IGlucHV0XG4gICAgICAtPiBtYXhfcG9zOmludFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gSW1wbC5TdGFjay50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHBhcnNlXG4gICAgOiAgP3BhcnNlX3BvczpQYXJzZV9wb3MudFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gVC5pbnB1dFxuICAgIC0+IChULmlucHV0LCBULm91dHB1dCkgcGFyc2VfcmVzdWx0XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBidWZfcG9zID1cbiAgICB7IFBhcnNlX3Bvcy50ZXh0X2xpbmUgPSBULkltcGwuU3RhdGUubGluZSBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLnRleHRfY2hhciA9IFQuSW1wbC5TdGF0ZS5jb2x1bW4gc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmJ1Zl9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyA8IDBcIjtcbiAgICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogbGVuIDwgMFwiO1xuICAgIGxldCBzdHJfbGVuID0gVC5sZW5ndGggc3RyIGluXG4gICAgbGV0IHBvc19sZW4gPSBwb3MgKyBsZW4gaW5cbiAgICBpZiBwb3NfbGVuID4gc3RyX2xlbiB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyArIGxlbiA+IHN0cl9sZW5cIjtcbiAgICBwb3NfbGVuIC0gMVxuICA7O1xuXG4gIGxldCByYWlzZV9wYXJzZV9lcnJvciBzdGF0ZSBwb3MgbXNnID1cbiAgICBsZXQgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA9IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBwb3MgfSBpblxuICAgIGxldCBwYXJzZV9lcnJvciA9IHsgZXJyX21zZyA9IG1zZzsgcGFyc2Vfc3RhdGUgPSBgU2V4cCBwYXJzZV9zdGF0ZSB9IGluXG4gICAgcmFpc2UgKFBhcnNlX2Vycm9yIHBhcnNlX2Vycm9yKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSBwb3MgZSA9XG4gICAgbGV0IG1zZyA9IFBhcnNleHAuUGFyc2VfZXJyb3IubWVzc2FnZSBlIGluXG4gICAgbWF0Y2ggUGFyc2V4cC5QYXJzZV9lcnJvci5Qcml2YXRlLm9sZF9wYXJzZXJfZXhuIGUgd2l0aFxuICAgIHwgYFBhcnNlX2Vycm9yIC0+IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2dcbiAgICB8IGBGYWlsdXJlIC0+IGZhaWx3aXRoIG1zZ1xuICA7O1xuXG4gIGxldCByZWMgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyID1cbiAgICBsZXQgbWF4X3BvcyA9IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciBpblxuICAgIGxldCBwcmV2aW91c19vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIGluXG4gICAgbWF0Y2ggVC51bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zIHdpdGhcbiAgICB8IHN0YWNrIC0+IG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2tcbiAgICB8IGV4Y2VwdGlvbiBULkZvdW5kIHJlc3VsdCAtPlxuICAgICAgbGV0IG9mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICAgIGxldCBuZXh0X3BvcyA9IHBvcyArIChvZmZzZXQgLSBwcmV2aW91c19vZmZzZXQpIGluXG4gICAgICBEb25lIChyZXN1bHQsIHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBuZXh0X3BvcylcbiAgICB8IGV4Y2VwdGlvbiBQYXJzZXhwLlBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGVyciAtPlxuICAgICAgaGFuZGxlX3BhcnNleHBfZXJyb3Igc3RhdGUgKHBvcyArIChULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIC0gcHJldmlvdXNfb2Zmc2V0KSkgZXJyXG5cbiAgYW5kIG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2sgPVxuICAgIGxldCBwYXJzZV9mdW4gPVxuICAgICAgbGV0IHVzZWRfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgICAgICBpZiAhdXNlZF9yZWZcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cDogcGFyc2VyIGNvbnRpbnVhdGlvbiBjYWxsZWQgdHdpY2VcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICB1c2VkX3JlZiA6PSB0cnVlO1xuICAgICAgICAgIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgfnBvcyB+bGVuIHN0cilcbiAgICBpblxuICAgIGxldCBjb250X3N0YXRlID0gVC5JbXBsLlN0YXRlLm9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSBpblxuICAgIENvbnQgKGNvbnRfc3RhdGUsIHBhcnNlX2Z1bilcbiAgOztcblxuICBsZXQgcGFyc2UgPyhwYXJzZV9wb3MgPSBQYXJzZV9wb3MuY3JlYXRlICgpKSA/bGVuIHN0ciA9XG4gICAgbGV0IHBvcywgYnVmX3BvcyA9XG4gICAgICBsZXQgeyBQYXJzZV9wb3MudGV4dF9saW5lOyB0ZXh0X2NoYXI7IGdsb2JhbF9vZmZzZXQ7IGJ1Zl9wb3MgfSA9IHBhcnNlX3BvcyBpblxuICAgICAgKCB7IFBhcnNleHAuUG9zaXRpb25zLmxpbmUgPSB0ZXh0X2xpbmU7IGNvbCA9IHRleHRfY2hhcjsgb2Zmc2V0ID0gZ2xvYmFsX29mZnNldCB9XG4gICAgICAsIGJ1Zl9wb3MgKVxuICAgIGluXG4gICAgbGV0IHN0YXRlID0gVC5JbXBsLlN0YXRlLmNyZWF0ZSB+cG9zIH5ub19zZXhwX2lzX2Vycm9yOmZhbHNlIFQucmFpc2VfZm91bmQgaW5cbiAgICBsZXQgc3RhY2sgPSBULkltcGwuU3RhY2suZW1wdHkgaW5cbiAgICBsZXQgbGVuID1cbiAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICB8IE5vbmUgLT4gVC5sZW5ndGggc3RyIC0gYnVmX3Bvc1xuICAgIGluXG4gICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfnBvczpidWZfcG9zIH5sZW5cbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIFN0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChTdHJpbmcudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9zdHIgPSBTdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcbmxldCBwYXJzZSA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9hbm5vdCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQW5ub3RhdGVkX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0cl9hbm5vdCA9IFN0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nID0gQmlnc3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IGJpZ3N0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayAoc3RyIDogaW5wdXQpIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKEFycmF5MS51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX2JpZ3N0cmluZ19hbm5vdCA9IEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxuKCogSW5wdXQgZnVuY3Rpb25zICopXG5cbmxldCBta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UgPVxuICAoKTtcbiAgZnVuIH5wb3MgfmxlbiBzdHIgLT5cbiAgICBsZXQgcGFyc2VfcG9zID1cbiAgICAgIG1hdGNoIHBhcnNlX3BvcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2VfcG9zLmNyZWF0ZSB+YnVmX3Bvczpwb3MgKClcbiAgICAgIHwgU29tZSBwYXJzZV9wb3MgLT5cbiAgICAgICAgcGFyc2VfcG9zLlBhcnNlX3Bvcy5idWZfcG9zIDwtIHBvcztcbiAgICAgICAgcGFyc2VfcG9zXG4gICAgaW5cbiAgICBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjooU29tZSBsZW4pIHN0clxuOztcblxuKCogW3dzX2J1Zl0gbXVzdCBjb250YWluIGEgc2luZ2xlIHNwYWNlIGNoYXJhY3RlciAqKVxubGV0IGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgPVxuICAoKiBXaGVuIHBhcnNpbmcgYXRvbXMsIHRoZSBpbmNyZW1lbnRhbCBwYXJzZXIgY2Fubm90IHRlbGwgd2hldGhlclxuICAgICBpdCBpcyBhdCB0aGUgZW5kIHVudGlsIGl0IGhpdHMgd2hpdGVzcGFjZS4gIFdlIHRoZXJlZm9yZSBmZWVkIGl0XG4gICAgIG9uZSBzcGFjZSB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBmaW5pc2hlZC4gKilcbiAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIHdzX2J1ZiB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgXykgLT4gT2sgc2V4cFxuICB8IENvbnQgKGNvbnRfc3RhdGUsIF8pIC0+IEVycm9yIGNvbnRfc3RhdGVcbjs7XG5cbmxldCBnZW5faW5wdXRfc2V4cCBteV9wYXJzZSA/cGFyc2VfcG9zIGljID1cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlID1cbiAgICBtYXRjaCBpbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgKG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWY6XCIgXCIgd2l0aFxuICAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICAgfCBFcnJvciBfIC0+IHJhaXNlIEVuZF9vZl9maWxlKVxuICAgIHwgYyAtPlxuICAgICAgQnl0ZXMuc2V0IGJ1ZiAwIGM7XG4gICAgICAobWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlKVxuICBpblxuICBsb29wIChta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UpXG47O1xuXG5sZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuXG5sZXQgZ2VuX2lucHV0X3Jldl9zZXhwcyBteV9wYXJzZSB+d3NfYnVmID9wYXJzZV9wb3MgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgaWMgPVxuICBsZXQgcmV2X3NleHBzX3JlZiA9IHJlZiBbXSBpblxuICBsZXQgYnVmX2xlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3MgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgIHwgRG9uZSAoc2V4cCwgKHsgUGFyc2VfcG9zLmJ1Zl9wb3M7IF8gfSBhcyBwYXJzZV9wb3MpKSAtPlxuICAgICAgICByZXZfc2V4cHNfcmVmIDo9IHNleHAgOjogIXJldl9zZXhwc19yZWY7XG4gICAgICAgIGxldCBuX3BhcnNlZCA9IGJ1Zl9wb3MgLSBwb3MgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgaWYgbl9wYXJzZWQgPSBsZW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5ld19sZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOm5ld19sZW4pXG4gICAgICAgIGVsc2UgbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBuX3BhcnNlZClcbiAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOihpbnB1dCBpYyBidWYgMCBidWZfbGVuKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgd2l0aFxuICAgICAgfCBPayBzZXhwIC0+IHNleHAgOjogIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+ICFyZXZfc2V4cHNfcmVmXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoXCJTZXhwbGliLlNleHAuaW5wdXRfcmV2X3NleHBzOiByZWFjaGVkIEVPRiB3aGlsZSBpbiBzdGF0ZSBcIlxuICAgICAgICAgICBeIENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKVxuICBpblxuICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSBpblxuICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbjs7XG5cbmxldCBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID1cbiAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuOztcblxubGV0IGlucHV0X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9IExpc3QucmV2IChpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljKVxuXG4oKiBvZl9zdHJpbmcgYW5kIG9mX2JpZ3N0cmluZyAqKVxuXG5sZXQgb2Zfc3RyaW5nX2JpZ3N0cmluZyBsb2MgbXlfcGFyc2Ugd3NfYnVmIGdldF9sZW4gZ2V0X3N1YiBzdHIgPVxuICBtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOk5vbmUgP2xlbjpOb25lIHN0ciB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgcGFyc2VfcG9zKSAtPlxuICAgIChtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjpOb25lIHN0ciB3aXRoXG4gICAgIHwgRG9uZSAoX3NleHAyLCBfKSAtPlxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGdvdCBtdWx0aXBsZSBTLWV4cHJlc3Npb25zIHdoZXJlIG9ubHkgb25lIHdhcyBleHBlY3RlZC5cIlxuICAgICAgICAgICAgbG9jKVxuICAgICB8IENvbnQgKENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCBfKSAtPiBzZXhwXG4gICAgIHwgQ29udCAoXywgXykgLT5cbiAgICAgICAoKiBub3QgdXNpbmcgW2ZlZWRfZW5kX29mX2lucHV0XSBoZXJlIG1lYW5zIFwiYSBiXCIgd2lsbCBlbmQgdXAgaGVyZSBhbmQgbm90IGluXG4gICAgICAgICAgXCJtdWx0aXBsZSBTLWV4cHJlc3Npb25zXCIgYnJhbmNoLCBidXQgaXQgZG9lc24ndCBtYXR0ZXIgdGhhdCBtdWNoICopXG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogUy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGEgYXQgcG9zaXRpb24gJWQuLi5cIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBwYXJzZV9wb3MuYnVmX3BvcykpXG4gIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT5cbiAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgIGxldCBjb250X3N0YXRlX3N0ciA9IENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUgaW5cbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBpbmNvbXBsZXRlIFMtZXhwcmVzc2lvbiB3aGlsZSBpbiBzdGF0ZSAlczogJXNcIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBjb250X3N0YXRlX3N0clxuICAgICAgICAgICAgKGdldF9zdWIgc3RyIDAgKGdldF9sZW4gc3RyKSkpKVxuOztcblxubGV0IG9mX3N0cmluZyBzdHIgPSBvZl9zdHJpbmdfYmlnc3RyaW5nIFwib2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxubGV0IG9mX3N0cmluZ19tYW55IHN0ciA9IFBhcnNleHAuTWFueS5wYXJzZV9zdHJpbmdfZXhuIHN0clxuXG5sZXQgZ2V0X2JzdHJfc3ViX3N0ciBic3RyIHBvcyBsZW4gPVxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBzdHIgaSBic3RyLntwb3MgKyBpfVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJzdHJfd3NfYnVmID0gQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IDFcbmxldCAoKSA9IGJzdHJfd3NfYnVmLnswfSA8LSAnICdcblxubGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgIFwib2ZfYmlnc3RyaW5nXCJcbiAgICBwYXJzZV9iaWdzdHJpbmdcbiAgICBic3RyX3dzX2J1ZlxuICAgIEFycmF5MS5kaW1cbiAgICBnZXRfYnN0cl9zdWJfc3RyXG4gICAgYnN0clxuOztcblxuKCogTG9hZGluZyAqKVxuXG5sZXQgZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHBzID0gaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3M6Tm9uZSA/YnVmIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgc2V4cHNcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSA9IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlXG5sZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxubGV0IGdlbl9sb2FkX3NleHBfbG9jID0gXCJTZXhwbGliLlNleHAuZ2VuX2xvYWRfc2V4cFwiXG5cbmxldCBnZW5fbG9hZF9zZXhwIG15X3BhcnNlID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSA9XG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICBcIiVzOiBFT0YgaW4gJXMgd2hpbGUgaW4gc3RhdGUgJXNcIlxuICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgIChDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKSkpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIHdoZW4gc3RyaWN0IC0+XG4gICAgICAgIGxldCByZWMgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgICAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgICAgIHwgRG9uZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoc3ByaW50ZiBcIiVzOiBtb3JlIHRoYW4gb25lIFMtZXhwcmVzc2lvbiBpbiBmaWxlICVzXCIgZ2VuX2xvYWRfc2V4cF9sb2MgZmlsZSlcbiAgICAgICAgICB8IENvbnQgKGNvbnRfc3RhdGUsIHRoaXNfcGFyc2UpIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgICAgICAgICAgaWYgbGVuID4gMFxuICAgICAgICAgICAgdGhlbiBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuXG4gICAgICAgICAgICBlbHNlIGlmIGNvbnRfc3RhdGUgPSBDb250X3N0YXRlLlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgICAgICAgICAgdGhlbiBzZXhwXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIiVzOiAlcyBpbiBzdGF0ZSAlcyBsb2FkaW5nIGZpbGUgJXNcIlxuICAgICAgICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgICAgICAgXCJhZGRpdGlvbmFsIGluY29tcGxldGUgZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgZmlsZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zOmJ1Zl9wb3MgfmxlbjoobGVuIC0gYnVmX3BvcylcbiAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIHRyeVxuICAgIGxldCBzZXhwID0gbG9vcCAobWtfdGhpc19wYXJzZSBteV9wYXJzZSkgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwXG4gIHdpdGhcbiAgfCBleGMgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBleGNcbjs7XG5cbmxldCBsb2FkX3NleHAgP3N0cmljdCA/YnVmIGZpbGUgPSBnZW5fbG9hZF9zZXhwIHBhcnNlID9zdHJpY3QgP2J1ZiBmaWxlXG5cbm1vZHVsZSBBbm5vdGF0ZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBbm5vdFxuXG4gIGxldCBwYXJzZSA9IHBhcnNlX3N0cl9hbm5vdFxuICBsZXQgcGFyc2VfYmlnc3RyaW5nID0gcGFyc2VfYmlnc3RyaW5nX2Fubm90XG5cbiAgbGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICAgIGdlbl9pbnB1dF9yZXZfc2V4cHMgcGFyc2UgfndzX2J1ZjpcIiBcIiA/cGFyc2VfcG9zID9idWYgaWNcbiAgOztcblxuICBsZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuICBsZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgIG9mX3N0cmluZ19iaWdzdHJpbmcgXCJBbm5vdGF0ZWQub2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxuICA7O1xuXG4gIGxldCBvZl9iaWdzdHJpbmcgYnN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgICAgXCJBbm5vdGF0ZWQub2ZfYmlnc3RyaW5nXCJcbiAgICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgICAgYnN0cl93c19idWZcbiAgICAgIEFycmF5MS5kaW1cbiAgICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICAgIGJzdHJcbiAgOztcblxuICBsZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbiAgbGV0IGxvYWRfc2V4cHMgP2J1ZiBmaWxlID0gTGlzdC5yZXYgKGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSlcbiAgbGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxuICBsZXQgY29udiBmIGFubm90X3NleHAgPVxuICAgIGxldCBzZXhwID0gZ2V0X3NleHAgYW5ub3Rfc2V4cCBpblxuICAgIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4YywgYmFkX3NleHApIGFzIGUgLT5cbiAgICAgIChtYXRjaCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBiYWRfc2V4cCB3aXRoXG4gICAgICAgfCBOb25lIC0+IHJhaXNlIGVcbiAgICAgICB8IFNvbWUgYmFkX2Fubm90X3NleHAgLT4gYEVycm9yIChleGMsIGJhZF9hbm5vdF9zZXhwKSlcbiAgOztcblxuICBsZXQgZ2V0X2NvbnZfZXhuIH5maWxlIH5leGMgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHJhbmdlID0gZ2V0X3JhbmdlIGFubm90X3NleHAgaW5cbiAgICBsZXQgeyBzdGFydF9wb3MgPSB7IGxpbmU7IGNvbDsgb2Zmc2V0ID0gXyB9OyBlbmRfcG9zID0gXyB9ID0gcmFuZ2UgaW5cbiAgICBsZXQgbG9jID0gc3ByaW50ZiBcIiVzOiVkOiVkXCIgZmlsZSBsaW5lIGNvbCBpblxuICAgIE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2MsIGV4YyksIGdldF9zZXhwIGFubm90X3NleHApXG4gIDs7XG5lbmRcblxubGV0IGxvYWRfc2V4cF9jb252ID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHNleHAgPSBsb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChBbm5vdGF0ZWQubG9hZF9zZXhwIH5zdHJpY3QgfmJ1ZiBmaWxlKVxuOztcblxubGV0IHJhaXNlX2NvbnZfZXhuIH5maWxlID0gZnVuY3Rpb25cbiAgfCBgUmVzdWx0IHJlcyAtPiByZXNcbiAgfCBgRXJyb3IgKGV4YywgYW5ub3Rfc2V4cCkgLT4gcmFpc2UgKEFubm90YXRlZC5nZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwKVxuOztcblxubGV0IGxvYWRfc2V4cF9jb252X2V4biA/c3RyaWN0ID9idWYgZmlsZSBmID1cbiAgcmFpc2VfY29udl9leG4gfmZpbGUgKGxvYWRfc2V4cF9jb252ID9zdHJpY3QgP2J1ZiBmaWxlIGYpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252ID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYFJlc3VsdCAoZiBzZXhwKSkgcmV2X3NleHBzIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPlxuICAgIChtYXRjaCBBbm5vdGF0ZWQubG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIHdpdGhcbiAgICAgfCBbXSAtPlxuICAgICAgICgqIEZpbGUgaXMgbm93IGVtcHR5IC0gcGVyaGFwcyBpdCB3YXMgYSB0ZW1wb3JhcnkgZmlsZSBoYW5kbGU/ICopXG4gICAgICAgcmFpc2UgZVxuICAgICB8IHJldl9hbm5vdF9zZXhwcyAtPlxuICAgICAgIExpc3QucmV2X21hcCAoZnVuIGFubm90X3NleHAgLT4gQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252X2V4biA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgcmV2X3NleHBzID0gbG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIGluXG4gIHRyeSBMaXN0LnJldl9tYXAgZiByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAoZnVuIGFubm90X3NleHAgLT4gcmFpc2VfY29udl9leG4gfmZpbGUgKEFubm90YXRlZC5jb252IGYgYW5ub3Rfc2V4cCkpXG4gICAgICAgICByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBhbm5vdF9vZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChhbm5vdF9vZl9zdHJpbmcgc3RyKVxuOztcblxubGV0IG9mX3N0cmluZ19jb252IHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBBbm5vdGF0ZWQub2Zfc3RyaW5nIHN0ciBmXG5cbmxldCBvZl9iaWdzdHJpbmdfY29udiBic3RyIGYgPVxuICBnZW5fb2Zfc3RyaW5nX2NvbnYgb2ZfYmlnc3RyaW5nIEFubm90YXRlZC5vZl9iaWdzdHJpbmcgYnN0ciBmXG47O1xuXG5tb2R1bGUgT2Zfc3RyaW5nX2NvbnZfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleGMgOiBleG5cbiAgICA7IHNleHAgOiBUeXBlLnRcbiAgICA7IHN1Yl9zZXhwIDogVHlwZS50XG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBFIG9mIHRcblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVdIChmdW5jdGlvblxuICAgICAgfCBFIG9zY2UgLT5cbiAgICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5pbnZhbGlkX3NleHA6b3NjZS5zdWJfc2V4cFxuICAgICAgICAgIH5leG46b3NjZS5leGNcbiAgICAgICAgICB+Y29udGFpbmluZ19zZXhwOm9zY2Uuc2V4cFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcbmVuZFxuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGYgc2V4cCB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzdWJfc2V4cCkgLT5cbiAgICByYWlzZSAoT2Zfc3RyaW5nX2NvbnZfZXhuLkUgeyBPZl9zdHJpbmdfY29udl9leG4uZXhjOyBzZXhwOyBzdWJfc2V4cCB9KVxuOztcblxubGV0IG9mX3N0cmluZ19jb252X2V4biBzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2Zfc3RyaW5nIHN0ciBmXG5sZXQgb2ZfYmlnc3RyaW5nX2NvbnZfZXhuIGJzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2ZfYmlnc3RyaW5nIGJzdHIgZlxuXG5sZXQgb2Zfc3RyaW5nX21hbnlfY29udl9leG4gc3RyIGYgPVxuICBsZXQgc2V4cHMgPSBvZl9zdHJpbmdfbWFueSBzdHIgaW5cbiAgTGlzdC5tYXAgKGZ1biBzZXhwIC0+IGdlbl9vZl9zdHJpbmdfY29udl9leG4gKGZ1biB4IC0+IHgpIHNleHAgZikgc2V4cHNcbjs7XG5cbigqIFV0aWxpdGllcyBmb3IgYXV0b21hdGVkIHR5cGUgY29udmVyc2lvbnMgKilcblxubGV0IHVuaXQgPSBMaXN0IFtdXG5cbmxldCBpc191bml0ID0gZnVuY3Rpb25cbiAgfCBMaXN0IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5leHRlcm5hbCBzZXhwX29mX3QgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0X29mX3NleHAgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbigqIFV0aWxpdGllcyBmb3IgY29udmVyc2lvbiBlcnJvciBoYW5kbGluZyAqKVxuXG50eXBlIGZvdW5kID1cbiAgWyBgRm91bmRcbiAgfCBgUG9zIG9mIGludCAqIGZvdW5kXG4gIF1cblxudHlwZSBzZWFyY2hfcmVzdWx0ID1cbiAgWyBgTm90X2ZvdW5kXG4gIHwgZm91bmRcbiAgXVxuXG5sZXQgcmVjIHNlYXJjaF9waHlzaWNhbCBzZXhwIH5jb250YWluZWQgPVxuICBpZiBzZXhwID09IGNvbnRhaW5lZFxuICB0aGVuIGBGb3VuZFxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gXyAtPiBgTm90X2ZvdW5kXG4gICAgfCBMaXN0IGxzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGBOb3RfZm91bmRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgcmVzID0gc2VhcmNoX3BoeXNpY2FsIGggfmNvbnRhaW5lZCBpblxuICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICB8IGBOb3RfZm91bmQgLT4gbG9vcCAoaSArIDEpIHRcbiAgICAgICAgICAgfCAjZm91bmQgYXMgZm91bmQgLT4gYFBvcyAoaSwgZm91bmQpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCBsc3QpXG47O1xuXG5sZXQgcmVjIHN1YnN0X2ZvdW5kIHNleHAgfnN1YnN0ID0gZnVuY3Rpb25cbiAgfCBgRm91bmQgLT4gc3Vic3RcbiAgfCBgUG9zIChwb3MsIGZvdW5kKSAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBBdG9tIF8gLT4gZmFpbHdpdGggXCJTZXhwbGliLlNleHAuc3Vic3RfZm91bmQ6IGF0b20gd2hlbiBwb3NpdGlvbiByZXF1ZXN0ZWRcIlxuICAgICB8IExpc3QgbHN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGFjYyBwb3MgPSBmdW5jdGlvblxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogc2hvcnQgbGlzdCB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgICAgICB8IGggOjogdCB3aGVuIHBvcyA8PiAwIC0+IGxvb3AgKGggOjogYWNjKSAocG9zIC0gMSkgdFxuICAgICAgICAgfCBoIDo6IHQgLT4gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoc3Vic3RfZm91bmQgaCB+c3Vic3QgZm91bmQgOjogdCkpXG4gICAgICAgaW5cbiAgICAgICBsb29wIFtdIHBvcyBsc3QpXG47O1xuIiwiKCogcGFja2FnaW5nIG9mIGFubm90YXRlZCBzZXhwIGZ1bmN0aW9ucyAqKVxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyIGYgdFxuICBsZXQgbWFwIHQgfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgdClcbmVuZFxuXG5pbmNsdWRlIFR5cGVfd2l0aF9sYXlvdXRcblxudHlwZSBwb3MgPSBTcmNfcG9zLlJlbGF0aXZlLnQgPVxuICB7IHJvdyA6IGludFxuICA7IGNvbCA6IGludFxuICB9XG5cbmxldCBzZXhwX29mX3BvcyA9IFNyY19wb3MuUmVsYXRpdmUuc2V4cF9vZl90XG5cbm1vZHVsZSBMZXhlciA9IHN0cnVjdFxuICBsZXQgbWFpbiA9IExleGVyLm1haW5fd2l0aF9sYXlvdXRcbmVuZFxuXG5tb2R1bGUgUGFyc2VyID0gUGFyc2VyX3dpdGhfbGF5b3V0XG5cbm1vZHVsZSBSZW5kZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlbF9wb3MgPSBTcmNfcG9zLlJlbGF0aXZlXG4gIG1vZHVsZSBBYnNfcG9zID0gU3JjX3Bvcy5BYnNvbHV0ZVxuXG4gIHR5cGUgbGFzdF9hdG9tID1cbiAgICB7IGltbWVkX2FmdGVyIDogQWJzX3Bvcy50XG4gICAgOyB1bmVzY2FwZWQgOiBib29sXG4gICAgfVxuXG4gIHR5cGUgc3RhdGUgPVxuICAgIHsgbXV0YWJsZSByb3dfc2hpZnQgOiBSZWxfcG9zLnRcbiAgICA7IG11dGFibGUgY3VycmVudCA6IEFic19wb3MudFxuICAgIDsgbXV0YWJsZSBsYXN0X2F0b20gOiBsYXN0X2F0b20gb3B0aW9uXG4gICAgOyBtdXRhYmxlIGxhc3RfY29tbWVudF9yb3cgOiBpbnRcbiAgICB9XG5cbiAgKCogdGhlIHBvaW50IG9mIFtpbW1lZF9hZnRlcl9sYXN0X2F0b21dIGlzIHRvIHByZXZlbnRcbiAgICAgKEEgQiBDKSBmcm9tIHJlbmRlcmluZyBhcyAoQSBCQkMpIGFmdGVyIHdlIHJlcGxhY2UgQiB3aXRoIEJCICopXG5cbiAgdHlwZSAnYSB0ID0gKGNoYXIgLT4gdW5pdCkgLT4gc3RhdGUgLT4gJ2FcblxuICBsZXQgcmV0dXJuIGEgX3B1dGMgX3N0ID0gYVxuICBsZXQgYmluZCBtIH5mIHB1dGMgc3QgPSBmIChtIHB1dGMgc3QpIHB1dGMgc3RcblxuICBsZXQgcnVuIHB1dGMgbSA9XG4gICAgbVxuICAgICAgcHV0Y1xuICAgICAgeyByb3dfc2hpZnQgPSBSZWxfcG9zLnplcm9cbiAgICAgIDsgY3VycmVudCA9IEFic19wb3Mub3JpZ2luXG4gICAgICA7IGxhc3RfYXRvbSA9IE5vbmVcbiAgICAgIDsgbGFzdF9jb21tZW50X3JvdyA9IDAgKCogYmVmb3JlIHRoZSBmaWxlIHN0YXJ0cyAqKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXIgcHV0YyBzdCBjID1cbiAgICBsZXQgeyBBYnNfcG9zLmNvbDsgcm93IH0gPSBzdC5jdXJyZW50IGluXG4gICAgcHV0YyBjO1xuICAgIGlmIGMgPSAnXFxuJ1xuICAgIHRoZW4gc3QuY3VycmVudCA8LSB7IEFic19wb3Mucm93ID0gMSArIHJvdzsgY29sID0gMSB9XG4gICAgZWxzZSBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3c7IGNvbCA9IDEgKyBjb2wgfVxuICA7O1xuXG4gIGxldCBlbWl0X3N0cmluZyBwdXRjIHN0IHN0ciA9XG4gICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgZW1pdF9jaGFyIHB1dGMgc3Qgc3RyLltpXVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgZW1pdF9jaGFycyBwdXRjIHN0IGMgfm4gPSBlbWl0X3N0cmluZyBwdXRjIHN0IChTdHJpbmcubWFrZSBuIGMpXG5cbiAgbGV0IGFkdmFuY2UgcHV0YyB+YW5jaG9yIHN0IH5ieTpkZWx0YSB+dW5lc2NhcGVkX2F0b20gfmxpbmVfY29tbWVudCA9XG4gICAgbGV0IG5ld19wb3MgPSBBYnNfcG9zLmFkZCAoQWJzX3Bvcy5hZGQgYW5jaG9yIGRlbHRhKSBzdC5yb3dfc2hpZnQgaW5cbiAgICBsZXQgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZSA9XG4gICAgICB1bmVzY2FwZWRfYXRvbVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHN0Lmxhc3RfYXRvbSB3aXRoXG4gICAgICB8IFNvbWUgeyBpbW1lZF9hZnRlcjsgdW5lc2NhcGVkID0gcHJldl91bmVzY2FwZWQgfSAtPlxuICAgICAgICBuZXdfcG9zID0gaW1tZWRfYWZ0ZXIgJiYgcHJldl91bmVzY2FwZWRcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIGluXG4gICAgKCogYXZvaWQgam9pbmluZyBzdWJzZXF1ZW50IGl0ZW1zIGludG8gYSBwcmVjZWRpbmcgbGluZSBjb21tZW50ICopXG4gICAgbGV0IG5lZWRfdG9fY2xlYXJfbGluZV9jb21tZW50ID0gbmV3X3Bvcy5yb3cgPSBzdC5sYXN0X2NvbW1lbnRfcm93IGluXG4gICAgbGV0IG5lZWRfdG9fcmVwb3NpdGlvbiA9XG4gICAgICAobm90IChBYnNfcG9zLmdlcSBuZXdfcG9zIHN0LmN1cnJlbnQpKVxuICAgICAgfHwgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnRcbiAgICAgIHx8IG5lZWRfdG9fbGVhdmVfcm9vbV9iZXR3ZWVuX3R3b191bmVzY2FwZWRfYXRvbXNfbGVzdF90aGV5X2JlY29tZV9vbmVcbiAgICBpblxuICAgIGxldCByb3dfZGVsdGEsIG5ld19wb3MgPVxuICAgICAgaWYgbmVlZF90b19yZXBvc2l0aW9uXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogcmVwb3NpdGlvbmluZyBoZXVyaXN0aWM6IGp1c3QgbW92ZSB0byB0aGUgbmV4dCBmcmVzaCByb3cgKilcbiAgICAgICAgbGV0IG5ld19yb3cgPSAxICsgc3QuY3VycmVudC5BYnNfcG9zLnJvdyBpblxuICAgICAgICBsZXQgcm93X2RlbHRhID0gbmV3X3JvdyAtIG5ld19wb3MuQWJzX3Bvcy5yb3cgaW5cbiAgICAgICAgcm93X2RlbHRhLCB7IEFic19wb3Mucm93ID0gbmV3X3JvdzsgY29sID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCB9KVxuICAgICAgZWxzZSAwLCBuZXdfcG9zXG4gICAgaW5cbiAgICAoKiBhZHZhbmNlIHRvIG5ld19wb3MgYnkgZW1pdHRpbmcgd2hpdGVzcGFjZSAqKVxuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5yb3cgPiBzdC5jdXJyZW50LkFic19wb3Mucm93XG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5yb3cgLSBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJ1xcbicgfm4pO1xuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5jb2wgPiBzdC5jdXJyZW50LkFic19wb3MuY29sXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5jb2wgLSBzdC5jdXJyZW50LkFic19wb3MuY29sIGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJyAnIH5uKTtcbiAgICBhc3NlcnQgKG5ld19wb3MgPSBzdC5jdXJyZW50KTtcbiAgICBpZiBsaW5lX2NvbW1lbnQgdGhlbiBzdC5sYXN0X2NvbW1lbnRfcm93IDwtIHN0LmN1cnJlbnQucm93O1xuICAgIHN0LnJvd19zaGlmdFxuICAgIDwtIHsgc3Qucm93X3NoaWZ0IHdpdGggUmVsX3Bvcy5yb3cgPSBzdC5yb3dfc2hpZnQuUmVsX3Bvcy5yb3cgKyByb3dfZGVsdGEgfVxuICA7O1xuXG4gIGxldCByZWMgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIChzdCA6IHN0YXRlKSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEF0b20gKGRlbHRhLCB0ZXh0LCBmbXRfdGV4dCkgLT5cbiAgICAgIGxldCBmbXRfdGV4dCA9XG4gICAgICAgIG1hdGNoIGZtdF90ZXh0IHdpdGhcbiAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+IFByZV9zZXhwLm1hY2hfbWF5YmVfZXNjX3N0ciB0ZXh0XG4gICAgICAgIHwgU29tZSB0ZXh0IC0+IHRleHRcbiAgICAgIGluXG4gICAgICBsZXQgdW5lc2NhcGVkID0gZm10X3RleHQuWzBdIDw+ICdcIicgaW5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206dW5lc2NhcGVkIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IGZtdF90ZXh0O1xuICAgICAgc3QubGFzdF9hdG9tIDwtIFNvbWUgeyBpbW1lZF9hZnRlciA9IHN0LmN1cnJlbnQ7IHVuZXNjYXBlZCB9XG4gICAgfCBMaXN0IChzdGFydF9kZWx0YSwgdG9jcywgZW5kX2RlbHRhKSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpzdGFydF9kZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgbGV0IGNoaWxkX2FuY2hvciA9IEFic19wb3Muc3ViIHN0LmN1cnJlbnQgc3Qucm93X3NoaWZ0IGluXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKCc7XG4gICAgICBMaXN0Lml0ZXIgdG9jcyB+ZjooZnVuIHRvYyAtPiByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpjaGlsZF9hbmNob3Igc3QgdG9jKTtcbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZW5kX2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKSc7XG4gICAgICAoKVxuXG4gIGFuZCByZW5kZXJfdG9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBTZXhwIHQgLT4gcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgICB8IENvbW1lbnQgYyAtPiByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgY1xuXG4gIGFuZCByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgPSBmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCAoZGVsdGEsIHRleHQpIC0+XG4gICAgICBsZXQgbGluZV9jb21tZW50ID0gU3RyaW5nLmxlbmd0aCB0ZXh0ID4gMCAmJiB0ZXh0LlswXSA9ICc7JyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50O1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCB0ZXh0XG4gICAgfCBTZXhwX2NvbW1lbnQgKGRlbHRhLCBjcywgdCkgLT5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgXCIjO1wiO1xuICAgICAgTGlzdC5pdGVyIGNzIH5mOihyZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QpO1xuICAgICAgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgOztcblxuICBsZXQgcmVuZGVyIGFzZXhwIHB1dGMgc3QgPSByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpBYnNfcG9zLm9yaWdpbiBzdCBhc2V4cFxuICBsZXQgc2V4cCA9IHJlbmRlclxuZW5kXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFR5cGUudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoVHlwZS50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoVHlwZS50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIChfLCB4LCBfKSAtPiBrIChUeXBlLkF0b20geClcbiAgICAgIHwgTGlzdCAoXywgdG9jcywgXykgLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKFR5cGUuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5vcGVuIFNleHBcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDMyX3ZlYyA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDY0X3ZlYyA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSBmbG9hdDY0X3ZlY1xudHlwZSBmbG9hdDMyX21hdCA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBmbG9hdDY0X21hdCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBmbG9hdDY0X21hdFxuXG5sZXQgc2V4cF9vZl9mbG9hdF92ZWMgdmVjID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheTEuZGltIHZlYyBkb3dudG8gMSBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCB2ZWMue2l9IDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2JpZ3N0cmluZyAoYnN0ciA6IGJpZ3N0cmluZykgPVxuICBsZXQgbiA9IEFycmF5MS5kaW0gYnN0ciBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue2l9XG4gIGRvbmU7XG4gIEF0b20gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl92ZWMgKHZlYyA6IGZsb2F0MzJfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfZmxvYXQ2NF92ZWMgKHZlYyA6IGZsb2F0NjRfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfdmVjICh2ZWMgOiB2ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5cbmxldCBzZXhwX29mX2Zsb2F0X21hdCBtYXQgPVxuICBsZXQgbSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgbiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICAoKiBJdCdzIHN1cnByaXNpbmcgdGhhdCB3ZSBzZXJpYWxpemUgW0ZvcnRyYW5fbGF5b3V0XSBtYXRyaWNlcyBpbiByb3ctbWFqb3Igb3JkZXIuIEkgY2FuXG4gICAgIG9ubHkgc3BlY3VsYXRlIHRoYXQgaXQgd2FzIGNob3NlbiBmb3IgcmVhZGFiaWxpdHkuIFRoZSBjYWNoZSBwZXJmb3JtYW5jZSBpc1xuICAgICBpcnJlbGV2YW50IGJlY2F1c2UgcGVvcGxlIHdobyBjYXJlIHdvbid0IHNlcmlhbGl6ZSB0byBzZXhwLiAqKVxuICBmb3Igcm93ID0gbiBkb3dudG8gMSBkb1xuICAgIGZvciBjb2wgPSBtIGRvd250byAxIGRvXG4gICAgICBsc3RfcmVmIDo9IHNleHBfb2ZfZmxvYXQgbWF0Lntjb2wsIHJvd30gOjogIWxzdF9yZWZcbiAgICBkb25lXG4gIGRvbmU7XG4gIExpc3QgKHNleHBfb2ZfaW50IG0gOjogc2V4cF9vZl9pbnQgbiA6OiAhbHN0X3JlZilcbjs7XG5cbmxldCBzZXhwX29mX2Zsb2F0MzJfbWF0IChtYXQgOiBmbG9hdDMyX21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX2Zsb2F0NjRfbWF0IChtYXQgOiBmbG9hdDY0X21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX21hdCAobWF0IDogbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IGJpZ3N0cmluZ19zZXhwX2dyYW1tYXIgOiBiaWdzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxuXG5sZXQgYmlnc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGJzdHIgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGJzdHIue2l9IDwtIHN0ci5baV1cbiAgICBkb25lO1xuICAgIGJzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdF92ZWMgY3JlYXRlX2Zsb2F0X3ZlYyBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBlbXB0eV9mbG9hdF92ZWNcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X3ZlYyBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLntpfSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF92ZWNfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0MzJfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0XG5sZXQgY3JlYXRlX2Zsb2F0NjRfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0XG5sZXQgZW1wdHlfZmxvYXQzMl92ZWMgPSBjcmVhdGVfZmxvYXQzMl92ZWMgMFxubGV0IGVtcHR5X2Zsb2F0NjRfdmVjID0gY3JlYXRlX2Zsb2F0NjRfdmVjIDBcbmxldCBmbG9hdDMyX3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQzMl92ZWMgY3JlYXRlX2Zsb2F0MzJfdmVjXG5sZXQgZmxvYXQ2NF92ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0NjRfdmVjIGNyZWF0ZV9mbG9hdDY0X3ZlY1xubGV0IHZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX3NleHBfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IChNYW55IEZsb2F0KSB9XG5sZXQgZmxvYXQzMl92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfdmVjX3NleHBfZ3JhbW1hciA9IHZlY19zZXhwX2dyYW1tYXJcblxubGV0IGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlcyA9XG4gIGlmIGRhdGEgPSBbXSB0aGVuIHJlcyBlbHNlIG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogdG9vIG11Y2ggZGF0YVwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXRfbWF0IHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IChzbSA6OiBzbiA6OiBkYXRhKSAtPlxuICAgIGxldCBtID0gaW50X29mX3NleHAgc20gaW5cbiAgICBsZXQgbiA9IGludF9vZl9zZXhwIHNuIGluXG4gICAgbGV0IHJlcyA9IGNyZWF0ZV9mbG9hdF9tYXQgbSBuIGluXG4gICAgaWYgbSA9IDAgfHwgbiA9IDBcbiAgICB0aGVuIGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wX2NvbHMgY29sIGRhdGEgPVxuICAgICAgICBsZXQgdmVjID0gQXJyYXkyLnNsaWNlX3JpZ2h0IHJlcyBjb2wgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wX3Jvd3Mgcm93ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbm90IGVub3VnaCBkYXRhXCIgc2V4cFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICB2ZWMue3Jvd30gPC0gZmxvYXRfb2Zfc2V4cCBoO1xuICAgICAgICAgICAgaWYgcm93ID0gbVxuICAgICAgICAgICAgdGhlbiBpZiBjb2wgPSBuIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIHQgcmVzIGVsc2UgbG9vcF9jb2xzIChjb2wgKyAxKSB0XG4gICAgICAgICAgICBlbHNlIGxvb3Bfcm93cyAocm93ICsgMSkgdFxuICAgICAgICBpblxuICAgICAgICBsb29wX3Jvd3MgMSBkYXRhXG4gICAgICBpblxuICAgICAgbG9vcF9jb2xzIDEgZGF0YSlcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IHRvbyBzaG9ydFwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDMyX21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0MzJfbWF0XG5sZXQgZmxvYXQ2NF9tYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDY0X21hdFxubGV0IG1hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBtYXRfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKENvbnMgKEludGVnZXIsIENvbnMgKEludGVnZXIsIE1hbnkgRmxvYXQpKSkgfVxuOztcblxubGV0IGZsb2F0MzJfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBmbG9hdDY0X21hdF9zZXhwX2dyYW1tYXIgPSBtYXRfc2V4cF9ncmFtbWFyXG5sZXQgc3RyaW5nX29mX19vZl9fc2V4cF9vZiB0b19zZXhwIHggPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCB4KVxuXG5sZXQgb2Zfc3RyaW5nX19vZl9fb2Zfc2V4cCBvZl9zZXhwIHMgPVxuICB0cnlcbiAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHMgaW5cbiAgICBvZl9zZXhwIHNleHBcbiAgd2l0aFxuICB8IGUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKHNwcmludGYgXCJvZl9zdHJpbmcgZmFpbGVkIG9uICVzIHdpdGggJXNcIiBzIChTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpKSlcbjs7XG4iLCJtb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2hhc2h0YmxcbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYuaGFzaHRibF9vZl9zZXhwXG5lbmRcblxubW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMYXp5XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IHNleHBfb2ZfdW5pdCA9IENvbnYuc2V4cF9vZl91bml0XG5sZXQgdW5pdF9vZl9zZXhwID0gQ29udi51bml0X29mX3NleHBcbmxldCB1bml0X3NleHBfZ3JhbW1hciA9IENvbnYudW5pdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Jvb2wgPSBDb252LnNleHBfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc2V4cCA9IENvbnYuYm9vbF9vZl9zZXhwXG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgPSBDb252LmJvb2xfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9zdHJpbmcgPSBDb252LnNleHBfb2Zfc3RyaW5nXG5sZXQgc3RyaW5nX29mX3NleHAgPSBDb252LnN0cmluZ19vZl9zZXhwXG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA9IENvbnYuc3RyaW5nX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfY2hhciA9IENvbnYuc2V4cF9vZl9jaGFyXG5sZXQgY2hhcl9vZl9zZXhwID0gQ29udi5jaGFyX29mX3NleHBcbmxldCBjaGFyX3NleHBfZ3JhbW1hciA9IENvbnYuY2hhcl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludCA9IENvbnYuc2V4cF9vZl9pbnRcbmxldCBpbnRfb2Zfc2V4cCA9IENvbnYuaW50X29mX3NleHBcbmxldCBpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9mbG9hdCA9IENvbnYuc2V4cF9vZl9mbG9hdFxubGV0IGZsb2F0X29mX3NleHAgPSBDb252LmZsb2F0X29mX3NleHBcbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgPSBDb252LmZsb2F0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50MzIgPSBDb252LnNleHBfb2ZfaW50MzJcbmxldCBpbnQzMl9vZl9zZXhwID0gQ29udi5pbnQzMl9vZl9zZXhwXG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQzMl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludDY0ID0gQ29udi5zZXhwX29mX2ludDY0XG5sZXQgaW50NjRfb2Zfc2V4cCA9IENvbnYuaW50NjRfb2Zfc2V4cFxubGV0IGludDY0X3NleHBfZ3JhbW1hciA9IENvbnYuaW50NjRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSBDb252LnNleHBfb2ZfbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X29mX3NleHAgPSBDb252Lm5hdGl2ZWludF9vZl9zZXhwXG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA9IENvbnYubmF0aXZlaW50X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfcmVmID0gQ29udi5zZXhwX29mX3JlZlxubGV0IHJlZl9vZl9zZXhwID0gQ29udi5yZWZfb2Zfc2V4cFxubGV0IHJlZl9zZXhwX2dyYW1tYXIgPSBDb252LnJlZl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2xhenlfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbmxldCBsYXp5X3Rfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9vcHRpb24gPSBDb252LnNleHBfb2Zfb3B0aW9uXG5sZXQgb3B0aW9uX29mX3NleHAgPSBDb252Lm9wdGlvbl9vZl9zZXhwXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciA9IENvbnYub3B0aW9uX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGlzdCA9IENvbnYuc2V4cF9vZl9saXN0XG5sZXQgbGlzdF9vZl9zZXhwID0gQ29udi5saXN0X29mX3NleHBcbmxldCBsaXN0X3NleHBfZ3JhbW1hciA9IENvbnYubGlzdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2FycmF5ID0gQ29udi5zZXhwX29mX2FycmF5XG5sZXQgYXJyYXlfb2Zfc2V4cCA9IENvbnYuYXJyYXlfb2Zfc2V4cFxubGV0IGFycmF5X3NleHBfZ3JhbW1hciA9IENvbnYuYXJyYXlfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9leG4gPSBDb252LnNleHBfb2ZfZXhuXG5sZXQgZXhuX3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuIiwiaW5jbHVkZSBTZXhwX2dyYW1tYXJfaW50ZlxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubGV0IHJlbWVtYmVyX3RvX3VwZGF0ZV90aGVzZV90b2dldGhlciB+dF9vZl9zZXhwIH50X3NleHBfZ3JhbW1hciA9XG4gIHRfb2Zfc2V4cCwgdF9zZXhwX2dyYW1tYXJcbjs7XG4iLCIoKiBQYXRoOiBNb2R1bGUgZm9yIFN1YnN0aXR1dGlvbnMgd2l0aGluIFMtZXhwcmVzc2lvbnMgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gU2V4cFxuXG50eXBlIGVsID1cbiAgfCBQb3Mgb2YgaW50XG4gIHwgTWF0Y2ggb2Ygc3RyaW5nICogaW50XG4gIHwgUmVjIG9mIHN0cmluZ1xuXG50eXBlIHQgPSBlbCBsaXN0XG5cbmxldCBpbGxlZ2FsX2F0b20gbG9jIHNleHAgPVxuICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguJXM6IGlsbGVnYWwgYXRvbTogJXNcIiBsb2MgKFNleHAudG9fc3RyaW5nIHNleHApKVxuOztcblxubGV0IGV4dHJhY3RfcG9zX2xzdCBsb2Mgc2V4cCBpeCBsc3QgPVxuICBsZXQgcmVjIGxvb3AgYWNjIG4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBpbmRleCAlZCBpbjogJXNcIiBsb2MgaXggc2V4cF9zdHIpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN1YnN0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgICAgfCBTb21lIHggLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyAoeCA6OiB0KVxuICAgICAgICBpblxuICAgICAgICBzdWJzdCwgaClcbiAgICAgIGVsc2UgbG9vcCAoaCA6OiBhY2MpIChuIC0gMSkgdFxuICBpblxuICBsb29wIFtdIGl4IGxzdFxuOztcblxubGV0IGV4dHJhY3RfcG9zIG4gPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgc3Vic3QsIGVsID0gZXh0cmFjdF9wb3NfbHN0IFwiZXh0cmFjdF9wb3NcIiBzZXhwIG4gbHN0IGluXG4gICAgKGZ1biB4IC0+IExpc3QgKHN1YnN0IHgpKSwgZWxcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3Bvc1wiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggPSBmdW5jdGlvblxuICB8IExpc3QgKChBdG9tIHN0ciBhcyBzZXhwKSA6OiBhcmdzKSB3aGVuIHN0ciA9IHRhZyAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X21hdGNoXCIgKExpc3QgYXJncykgYXJnX2l4IGFyZ3MgaW5cbiAgICAoZnVuIG1heWJlX3ggLT4gTGlzdCAoc2V4cCA6OiBzdWJzdCBtYXliZV94KSksIGVsXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgZmFpbHdpdGggKFwiUGF0aC5leHRyYWN0X21hdGNoOiB1bmV4cGVjdGVkIG5lc3RlZCBsaXN0IGluOiBcIiBeIHNleHBfc3RyKVxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfbWF0Y2hcIiBzZXhwXG47O1xuXG5sZXQgZXh0cmFjdF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBMaXN0IGxzdCBhcyBzZXhwIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLmV4dHJhY3RfcmVjOiBrZXkgXFxcIiVzXFxcIiBub3QgZm91bmQgaW46ICVzXCIga2V5IHNleHBfc3RyKVxuICAgICAgfCBMaXN0IFsgKEF0b20gc3RyIGFzIHNleHApOyB2IF0gOjogcmVzdCB3aGVuIHN0ciA9IGtleSAtPlxuICAgICAgICBsZXQgc3Vic3QgeCA9IExpc3QgKExpc3QucmV2X2FwcGVuZCBhY2MgKExpc3QgWyBzZXhwOyB4IF0gOjogcmVzdCkpIGluXG4gICAgICAgIHN1YnN0LCB2XG4gICAgICB8IGggOjogdCAtPiBsb29wIChoIDo6IGFjYykgdFxuICAgIGluXG4gICAgbG9vcCBbXSBsc3RcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3JlY1wiIHNleHBcbjs7XG5cbmxldCBpZCB4ID0geFxuXG5sZXQgcmVjIHN1YnN0X29wdGlvbiAoc3VwX3N1YnN0LCBlbCkgcmVzdCA9XG4gIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICBsZXQgc3Vic3QgeCA9IHN1cF9zdWJzdCAoU29tZSAoc3ViX3N1YnN0IHgpKSBpblxuICBzdWJzdCwgc3ViX2VsXG5cbmFuZCBzdWJzdF9wYXRoIHNleHAgPSBmdW5jdGlvblxuICB8IFBvcyBuIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X3BvcyBuIHNleHApIHRcbiAgfCBNYXRjaCAodGFnLCBhcmdfaXgpIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggc2V4cCkgdFxuICB8IFJlYyBrZXkgOjogcmVzdCAtPlxuICAgIGxldCByZWNfc3Vic3QsIGVsID0gZXh0cmFjdF9yZWMga2V5IHNleHAgaW5cbiAgICBsZXQgc3ViX3N1YnN0LCBzdWJfZWwgPSBzdWJzdF9wYXRoIGVsIHJlc3QgaW5cbiAgICBsZXQgc3Vic3QgeCA9IHJlY19zdWJzdCAoc3ViX3N1YnN0IHgpIGluXG4gICAgc3Vic3QsIHN1Yl9lbFxuICB8IFtdIC0+IGlkLCBzZXhwXG47O1xuXG5sZXQgaW1wbG9kZSBsc3QgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbHN0IGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpeCA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIEJ5dGVzLnNldCBzdHIgaXggaDtcbiAgICAgIGxvb3AgKGl4ICsgMSkgdFxuICAgIHwgW10gLT4gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgaW5cbiAgbG9vcCAwIGxzdFxuOztcblxubGV0IGZhaWxfcGFyc2UgbXNnID0gZmFpbHdpdGggKFwiUGF0aC5wYXJzZTogXCIgXiBtc2cpXG5cbmxldCBwYXJzZSBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIGZhaWxfcGFyc2UgXCJwYXRoIGVtcHR5XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGFjYyBkb3RfaXggPVxuICAgICAgbWF0Y2ggc3RyLltkb3RfaXhdIHdpdGhcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBkb3RfaXgxID0gZG90X2l4ICsgMSBpblxuICAgICAgICBpZiBkb3RfaXgxID0gbGVuXG4gICAgICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWMgcGFyc2VfZG90IGFjYyBzdHJfYWNjIGl4ID1cbiAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBdXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgICAgICAgICB8ICdbJyAtPlxuICAgICAgICAgICAgICAgIGxldCByZWMgcGFyc2VfaW5kZXggaW5kZXhfYWNjIGl4ID1cbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgcmVhZGluZyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0sIGluZGV4X2FjYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgKCcwJyAuLiAnOScgYXMgYyksIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCAoU29tZSAoaW50X29mX2NoYXIgYyAtIDQ4KSkgKGl4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2luZGV4X2FjYyA9IFNvbWUgKCgxMCAqIGluZGV4X2FjYykgKyBpbnRfb2ZfY2hhciBjIC0gNDgpIGluXG4gICAgICAgICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggbmV3X2luZGV4X2FjYyAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICddJywgTm9uZSAtPiBmYWlsX3BhcnNlIFwiZW1wdHkgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB8ICddJywgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aF9lbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW11cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gUG9zIGluZGV4X2FjY1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXRjaCAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYyksIGluZGV4X2FjYylcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBwYXRoX2VsIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxvb3AgKHBhdGhfZWwgOjogYWNjKSBpeDFcbiAgICAgICAgICAgICAgICAgICAgfCBjLCBfIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCJpbGxlZ2FsIGNoYXJhY3RlciBpbiBpbmRleDogJWNcIiBjKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IE5vbmUgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnXFxcXCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgaXgxID0gaXggKyAxIGluXG4gICAgICAgICAgICAgICAgaWYgaXgxID0gbGVuXG4gICAgICAgICAgICAgICAgdGhlbiBmYWlsX3BhcnNlIFwiRU9GIGFmdGVyIGVzY2FwZVwiXG4gICAgICAgICAgICAgICAgZWxzZSBwYXJzZV9kb3QgYWNjIChzdHIuW2l4MV0gOjogc3RyX2FjYykgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnLicgLT5cbiAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW10gdGhlbiBmYWlsX3BhcnNlIFwiZG91YmxlICcuJ1wiO1xuICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID0gUmVjIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSkgaW5cbiAgICAgICAgICAgICAgICBwYXJzZV9kb3QgKHBhdGhfZWwgOjogYWNjKSBbXSAoaXggKyAxKVxuICAgICAgICAgICAgICB8IGMgLT4gcGFyc2VfZG90IGFjYyAoYyA6OiBzdHJfYWNjKSAoaXggKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2RvdCBhY2MgW10gZG90X2l4MSlcbiAgICAgIHwgYyAtPiBmYWlsX3BhcnNlIChzcHJpbnRmIFwiJy4nIGV4cGVjdGVkOyBnb3QgJyVjJ1wiIGMpXG4gICAgaW5cbiAgICBsb29wIFtdIDApXG47O1xuXG5sZXQgZ2V0X3N1YnN0IHBhdGggc3RyIHNleHAgPVxuICBsZXQgcGF0aCA9XG4gICAgbWF0Y2ggcGF0aCwgc3RyIHdpdGhcbiAgICB8IFNvbWUgcGF0aCwgXyAtPiBwYXRoXG4gICAgfCBOb25lLCBTb21lIHN0ciAtPiBwYXJzZSBzdHJcbiAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgaW5cbiAgc3Vic3RfcGF0aCBzZXhwIHBhdGhcbjs7XG5cbmxldCBnZXQgP3BhdGggP3N0ciBzZXhwID0gc25kIChnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cClcblxubGV0IHJlcGxhY2UgP3BhdGggP3N0ciBzZXhwIH5zdWJzdCA9XG4gIGxldCBzdWJzdF9mdW4sIF8gPSBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCBpblxuICBzdWJzdF9mdW4gc3Vic3Rcbjs7XG5cbmxldCByZXBsYWNlX25vX3BhdGggfnN0ciBzZXhwIH5zdWJzdCA9IHJlcGxhY2UgfnN0ciBzZXhwIH5zdWJzdFxuIiwibGV0IHJlZ2lzdGVyIGV4YyBleGNfbmFtZSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBfZXhjIC0+XG4gICAgU2V4cC5BdG9tIGV4Y19uYW1lKVxuOztcblxubGV0IG1hZ2ljX2ZpZWxkIHJlcHIgbiA9IE9iai5tYWdpYyAoT2JqLmZpZWxkIHJlcHIgbilcblxubGV0IHJlZ2lzdGVyMSBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIyIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIzIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMyBdKVxuOztcblxubGV0IHJlZ2lzdGVyNCBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyIHNleHBfb2ZfYXJnMyBzZXhwX29mX2FyZzQgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQgXSlcbjs7XG5cbmxldCByZWdpc3RlcjVcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNSBdKVxuOztcblxubGV0IHJlZ2lzdGVyNlxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI3XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNjsgc2V4cDcgXSlcbjs7XG5cbmxldCByZWdpc3RlcjhcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNzsgc2V4cDggXSlcbjs7XG5cbmxldCByZWdpc3RlcjlcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgICAgIHNleHBfb2ZfYXJnOVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIGxldCBzZXhwOSA9IHNleHBfb2ZfYXJnOSAobWFnaWNfZmllbGQgcmVwciA5KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWVcbiAgICAgIDsgc2V4cDFcbiAgICAgIDsgc2V4cDJcbiAgICAgIDsgc2V4cDNcbiAgICAgIDsgc2V4cDRcbiAgICAgIDsgc2V4cDVcbiAgICAgIDsgc2V4cDZcbiAgICAgIDsgc2V4cDdcbiAgICAgIDsgc2V4cDhcbiAgICAgIDsgc2V4cDlcbiAgICAgIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIxMFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gICAgICBzZXhwX29mX2FyZzEwXG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgbGV0IHNleHAxMCA9IHNleHBfb2ZfYXJnMTAgKG1hZ2ljX2ZpZWxkIHJlcHIgMTApIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgOyBzZXhwMTBcbiAgICAgIF0pXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgXCJGYXN0IFNwbGl0dGFibGUgUHNldWRvcmFuZG9tIE51bWJlciBHZW5lcmF0b3JzXCIgYnkgU3RlZWxlIGV0LlxuICAgIGFsLiAoMSkuICBUaGUgcGFwZXIncyBhbGdvcml0aG0gcHJvdmlkZXMgZGVjZW50IHJhbmRvbW5lc3MgZm9yIG1vc3QgcHVycG9zZXMsIGJ1dFxuICAgIHNhY3JpZmljZXMgY3J5cHRvZ3JhcGhpYy1xdWFsaXR5IHJhbmRvbW5lc3MgaW4gZmF2b3Igb2YgcGVyZm9ybWFuY2UuICBUaGUgb3JpZ2luYWxcbiAgICBpbXBsZW1lbnRhdGlvbiB3YXMgdGVzdGVkIHdpdGggRGllSGFyZGVyIGFuZCBCaWdDcnVzaDsgc2VlIHRoZSBwYXBlciBmb3IgZGV0YWlscy5cblxuICAgIE91ciBpbXBsZW1lbnRhdGlvbiBpcyBhIHBvcnQgZnJvbSBKYXZhIHRvIE9DYW1sIG9mIHRoZSBwYXBlcidzIGFsZ29yaXRobS4gIE90aGVyIHRoYW5cbiAgICB0aGUgY2hvaWNlIG9mIGluaXRpYWwgc2VlZCBmb3IgW2NyZWF0ZV0sIG91ciBwb3J0IHNob3VsZCBiZSBmYWl0aGZ1bC4gIFdlIGhhdmUgbm90XG4gICAgcmUtcnVuIHRoZSBEaWVIYXJkZXIgb3IgQmlnQ3J1c2ggdGVzdHMgb24gb3VyIGltcGxlbWVudGF0aW9uLiAgT3VyIHBvcnQgaXMgYWxzbyBub3QgYXNcbiAgICBwZXJmb3JtYW50IGFzIHRoZSBvcmlnaW5hbDsgdHdvIGZhY3RvcnMgdGhhdCBodXJ0IHVzIGFyZSBib3hlZCBbaW50NjRdIHZhbHVlcyBhbmQgbGFja1xuICAgIG9mIGEgUE9QQ05UIHByaW1pdGl2ZS5cblxuICAgICgxKSBodHRwOi8vMjAxNC5zcGxhc2hjb24ub3JnL2V2ZW50L29vcHNsYTIwMTQtZmFzdC1zcGxpdHRhYmxlLXBzZXVkb3JhbmRvbS1udW1iZXItZ2VuZXJhdG9yc1xuICAgIChhbHNvIG1pcnJvcmVkIGF0IGh0dHA6Ly9nZWUuY3Mub3N3ZWdvLmVkdS9kbC9wYXBlcnMvb29wc2xhMTQucGRmKVxuXG4gICAgQmV3YXJlIHdoZW4gaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlOyBpdCBpcyBlYXN5IHRvIGltcGxlbWVudCBhIFtzcGxpdF0gb3BlcmF0aW9uXG4gICAgd2hvc2Ugb3V0cHV0IGlzIG5vdCBhcyBcImluZGVwZW5kZW50XCIgYXMgaXQgc2VlbXMgKDIpLiAgVGhpcyBidWcgY2F1c2VkIHByb2JsZW1zIGZvclxuICAgIEhhc2tlbGwncyBRdWlja2NoZWNrIGxpYnJhcnkgZm9yIGEgbG9uZyB0aW1lLlxuXG4gICAgKDIpIFNjaGFhdGh1biwgXCJFdmFsdWF0aW9uIG9mIHNwbGl0dGFibGUgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3JzXCIsIEpGUCAyMDE1LlxuICAgIGh0dHA6Ly93d3cuaGcuc2NoYWF0aHVuLm5ldC9yZXNlYXJjaC9QYXBlcnMvaGdzMjAxNWpmcC5wZGZcbiopXG5cbm9wZW4hIEJhc2Vcbm9wZW4gIEludDY0Lk9cblxubGV0IGlzX29kZCB4ID0geCBsb3IgMUwgPSB4XG5cbmxldCBwb3Bjb3VudCA9IEludDY0LnBvcGNvdW50XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHNlZWQgOiBpbnQ2NFxuICAgIDsgb2RkX2dhbW1hICAgIDogaW50NjRcbiAgICB9XG5cbiAgbGV0IGdvbGRlbl9nYW1tYSA9IDB4OWUzN183OWI5XzdmNGFfN2MxNUxcblxuICBsZXQgb2ZfaW50IHNlZWQgPVxuICAgIHsgc2VlZCAgICAgID0gSW50NjQub2ZfaW50IHNlZWRcbiAgICA7IG9kZF9nYW1tYSA9IGdvbGRlbl9nYW1tYVxuICAgIH1cblxuICBsZXQgY29weSB7IHNlZWQgOyBvZGRfZ2FtbWEgfSA9IHsgc2VlZCA7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IG1peF9iaXRzIHogbiA9XG4gICAgeiBseG9yICh6IGxzciBuKVxuXG4gIGxldCBtaXg2NCB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4ZmY1MV9hZmQ3X2VkNTVfOGNjZEwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4YzRjZV9iOWZlXzFhODVfZWM1M0wgaW5cbiAgICBtaXhfYml0cyB6IDMzXG5cbiAgbGV0IG1peDY0X3ZhcmlhbnQxMyB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMwKSAqIDB4YmY1OF80NzZkXzFjZTRfZTViOUwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDI3KSAqIDB4OTRkMF80OWJiXzEzMzFfMTFlYkwgaW5cbiAgICBtaXhfYml0cyB6IDMxXG5cbiAgbGV0IG1peF9vZGRfZ2FtbWEgeiA9XG4gICAgbGV0IHogPSAobWl4NjRfdmFyaWFudDEzIHopIGxvciAxTCBpblxuICAgIGxldCBuID0gcG9wY291bnQgKHogbHhvciAoeiBsc3IgMSkpIGluXG4gICAgKCogVGhlIG9yaWdpbmFsIHBhcGVyIHVzZXMgWz49XSBpbiB0aGUgY29uZGl0aW9uYWwgaW1tZWRpYXRlbHkgYmVsb3c7IGhvd2V2ZXIgdGhpcyBpc1xuICAgICAgIGEgdHlwbywgYW5kIHdlIGNvcnJlY3QgaXQgYnkgdXNpbmcgWzxdLiBUaGlzIHdhcyBmaXhlZCBpbiByZXNwb25zZSB0byBbMV0gYW5kIFsyXS5cblxuICAgICAgIFsxXSBodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9zcGxpdHRhYmxlX3JhbmRvbS9pc3N1ZXMvMVxuICAgICAgIFsyXSBodHRwOi8vd3d3LnBjZy1yYW5kb20ub3JnL3Bvc3RzL2J1Z3MtaW4tc3BsaXRtaXguaHRtbFxuICAgICopXG4gICAgaWYgSW50LiggPCApIG4gMjRcbiAgICB0aGVuIHogbHhvciAweGFhYWFfYWFhYV9hYWFhX2FhYWFMXG4gICAgZWxzZSB6XG5cbiAgbGV0JXRlc3RfdW5pdCBcIm9kZCBnYW1tYVwiID1cbiAgICBmb3IgaW5wdXQgPSAtMV8wMDBfMDAwIHRvIDFfMDAwXzAwMCBkb1xuICAgICAgbGV0IG91dHB1dCA9IG1peF9vZGRfZ2FtbWEgKEludDY0Lm9mX2ludCBpbnB1dCkgaW5cbiAgICAgIGlmIG5vdCAoaXNfb2RkIG91dHB1dCkgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICAgIFwiZ2FtbWEgdmFsdWUgaXMgbm90IG9kZFwiXG4gICAgICAgICAgICAoaW5wdXQgIDogaW50KVxuICAgICAgICAgICAgKG91dHB1dCA6IGludDY0KV1cbiAgICBkb25lXG5cbiAgbGV0IG5leHRfc2VlZCB0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIHQub2RkX2dhbW1hIGluXG4gICAgdC5zZWVkIDwtIG5leHQ7XG4gICAgbmV4dFxuXG4gIGxldCBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWEgPVxuICAgIGxldCBzZWVkICAgICAgPSBtaXg2NCAgICAgICAgIHNlZWQgIGluXG4gICAgbGV0IG9kZF9nYW1tYSA9IG1peF9vZGRfZ2FtbWEgZ2FtbWEgaW5cbiAgICB7IHNlZWQ7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgPVxuICAgIFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHJhbmRvbV9zdGF0ZSBJbnQ2NC5taW5fdmFsdWUgSW50NjQubWF4X3ZhbHVlXG5cbiAgbGV0IGNyZWF0ZSByYW5kb21fc3RhdGUgPVxuICAgIGxldCBzZWVkICA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBsZXQgZ2FtbWEgPSByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlIGluXG4gICAgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hXG5cbiAgbGV0IHNwbGl0IHQgPVxuICAgIGxldCBzZWVkICA9IG5leHRfc2VlZCB0IGluXG4gICAgbGV0IGdhbW1hID0gbmV4dF9zZWVkIHQgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgbmV4dF9pbnQ2NCB0ID0gbWl4NjQgKG5leHRfc2VlZCB0KVxuXG4gICgqIFtwZXJ0dXJiXSBpcyBub3QgZnJvbSBhbnkgZXh0ZXJuYWwgc291cmNlLCBidXQgcHJvdmlkZXMgYSB3YXkgdG8gbWl4IGluIGV4dGVybmFsXG4gICAgIGVudHJvcHkgd2l0aCBhIHBzZXVkby1yYW5kb20gc3RhdGUuICopXG4gIGxldCBwZXJ0dXJiIHQgc2FsdCA9XG4gICAgbGV0IG5leHQgPSB0LnNlZWQgKyBtaXg2NCAoSW50NjQub2ZfaW50IHNhbHQpIGluXG4gICAgdC5zZWVkIDwtIG5leHRcblxuZW5kXG5cbmxldCBib29sIHN0YXRlID0gaXNfb2RkIChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBXZSBhYnVzZSB0ZXJtaW5vbG9neSBhbmQgcmVmZXIgdG8gaW5kaXZpZHVhbCB2YWx1ZXMgYXMgYmlhc2VkIG9yIHVuYmlhc2VkLiAgTW9yZVxuICAgcHJvcGVybHksIHdoYXQgaXMgdW5iaWFzZWQgaXMgdGhlIHNhbXBsZXIgdGhhdCByZXN1bHRzIGlmIHdlIGtlZXAgb25seSB0aGVzZSBcInVuYmlhc2VkXCJcbiAgIHZhbHVlcy4gKilcbmxldCByZW1haW5kZXJfaXNfdW5iaWFzZWRcbiAgICAgIH5kcmF3XG4gICAgICB+cmVtYWluZGVyXG4gICAgICB+ZHJhd19tYXhpbXVtXG4gICAgICB+cmVtYWluZGVyX21heGltdW1cbiAgPVxuICBsZXQgb3BlbiBJbnQ2NC5PIGluXG4gIGRyYXcgLSByZW1haW5kZXIgPD0gZHJhd19tYXhpbXVtIC0gcmVtYWluZGVyX21heGltdW1cblxubGV0JXRlc3RfdW5pdCBcInJlbWFpbmRlcl9pc191bmJpYXNlZFwiID1cbiAgKCogY2hvb3NpbmcgYSByYW5nZSBvZiAxMCB2YWx1ZXMgYmFzZWQgb24gYSByYW5nZSBvZiAxMDUgdmFsdWVzICopXG4gIGxldCBkcmF3X21heGltdW0gPSAxMDRMIGluXG4gIGxldCByZW1haW5kZXJfbWF4aW11bSA9IDlMIGluXG4gIGxldCBpc191bmJpYXNlZCBkcmF3ID1cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjQucmVtIGRyYXcgKEludDY0LnN1Y2MgcmVtYWluZGVyX21heGltdW0pIGluXG4gICAgcmVtYWluZGVyX2lzX3VuYmlhc2VkIH5kcmF3IH5yZW1haW5kZXIgfmRyYXdfbWF4aW11bSB+cmVtYWluZGVyX21heGltdW1cbiAgaW5cbiAgZm9yIGkgPSAwIHRvIDk5IGRvXG4gICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgIChpc191bmJpYXNlZCAoSW50NjQub2ZfaW50IGkpKVxuICAgICAgfmV4cGVjdDp0cnVlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lO1xuICBmb3IgaSA9IDEwMCB0byAxMDQgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OmZhbHNlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYm91bmRlZCByYW5kb21uZXNzIGlzIGFkYXB0ZWQgZnJvbSBbUmFuZG9tLlN0YXRlLmludCpdIGluIHRoZVxuICAgT0NhbWwgc3RhbmRhcmQgbGlicmFyeS4gIFRoZSBwdXJwb3NlIGlzIHRvIHVzZSB0aGUgbWluaW11bSBudW1iZXIgb2YgY2FsbHMgdG9cbiAgIFtuZXh0X2ludDY0XSB0byBwcm9kdWNlIGEgbnVtYmVyIHVuaWZvcm1seSBjaG9zZW4gd2l0aGluIHRoZSBnaXZlbiByYW5nZS4gKilcbmxldCBpbnQ2NCA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgbGV0IHJlYyBiZXR3ZWVuIHN0YXRlIH5sbyB+aGkgPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBpblxuICAgIGlmIGxvIDw9IGRyYXcgJiYgZHJhdyA8PSBoaVxuICAgIHRoZW4gZHJhd1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG4gIGluXG4gIGxldCByZWMgbm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIG1heGltdW0gPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBsYW5kIEludDY0Lm1heF92YWx1ZSBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyBtYXhpbXVtKSBpblxuICAgIGlmIHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgICAgfmRyYXdcbiAgICAgICAgIH5yZW1haW5kZXJcbiAgICAgICAgIH5kcmF3X21heGltdW06SW50NjQubWF4X3ZhbHVlXG4gICAgICAgICB+cmVtYWluZGVyX21heGltdW06bWF4aW11bVxuICAgIHRoZW4gcmVtYWluZGVyXG4gICAgZWxzZSBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bVxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIGxvID4gaGkgdGhlbiBiZWdpblxuICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnQ2NDogY3Jvc3NlZCBib3VuZHNcIiAobG8gOiBpbnQ2NCkgKGhpIDogaW50NjQpXVxuICAgIGVuZDtcbiAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICBpZiBkaWZmID0gSW50NjQubWF4X3ZhbHVlXG4gICAgdGhlbiAoKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpIGxhbmQgSW50NjQubWF4X3ZhbHVlKSArIGxvXG4gICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgdGhlbiAobm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIGRpZmYpICsgbG9cbiAgICBlbHNlIGJldHdlZW4gc3RhdGUgfmxvIH5oaVxuXG5sZXQgaW50IHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9pbnQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgaW50MzIgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludDMyIGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX2ludDMyIGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50MzJfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBuYXRpdmVpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX25hdGl2ZWludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9uYXRpdmVpbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19uYXRpdmVpbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQ2MyBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjMudG9faW50NjQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjMudG9faW50NjQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2My5vZl9pbnQ2NF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGRvdWJsZV91bHAgPSAyLiAqKi4gLTUzLlxuXG5sZXQldGVzdF91bml0IFwiZG91YmxlX3VscFwiID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT5cbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApID0gMS4wKVxuICB8IFczMiAtPlxuICAgICgqIDMyLWJpdCBPQ2FtbCB1c2VzIGEgNjQtYml0IGZsb2F0IHJlcHJlc2VudGF0aW9uIGJ1dCA4MC1iaXQgZmxvYXQgaW5zdHJ1Y3Rpb25zLCBzb1xuICAgICAgIHJvdW5kaW5nIHdvcmtzIGRpZmZlcmVudGx5IGR1ZSB0byB0aGUgY29udmVyc2lvbiBiYWNrIGFuZCBmb3J0aC4gKilcbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgIDEuMCk7XG4gICAgYXNzZXJ0ICgxLjAgLS4gKGRvdWJsZV91bHAgLy4gMi4wKSA8PSAxLjApXG5cbmxldCB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjQgPVxuICAoSW50NjQudG9fZmxvYXQgKGludDY0IGxzciAxMSkpICouIGRvdWJsZV91bHBcblxubGV0JXRlc3RfdW5pdCBcInVuaXRfZmxvYXRfZnJvbV9pbnQ2NFwiID0gYmVnaW5cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweDAwMDBfMDAwMF8wMDAwXzAwMDBMID0gMC4pO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMIDwgMS4wKTtcbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHhmZmZmX2ZmZmZfZmZmZl9mZmZmTCA9ICgxLjAgLS4gZG91YmxlX3VscCkpO1xuZW5kXG5cbmxldCB1bml0X2Zsb2F0IHN0YXRlID1cbiAgdW5pdF9mbG9hdF9mcm9tX2ludDY0IChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBOb3RlIGFib3V0IHJvdW5kb2ZmIGVycm9yOlxuXG4gICBBbHRob3VnaCBbZmxvYXQgc3RhdGUgfmxvIH5oaV0gaXMgbm9taW5hbGx5IGluY2x1c2l2ZSBvZiBlbmRwb2ludHMsIHdlIGFyZSByZWx5aW5nIG9uXG4gICB0aGUgZmFjdCB0aGF0IFt1bml0X2Zsb2F0XSBuZXZlciByZXR1cm5zIDEuLCBiZWNhdXNlIHRoZXJlIGFyZSBwYWlycyBbKGxvLGhpKV0gZm9yXG4gICB3aGljaCBbbG8gKy4gMS4gKi4gKGhpIC0uIGxvKSA+IGhpXS4gIFRoZXJlIGFyZSBhbHNvIHBhaXJzIFsobG8saGkpXSBhbmQgdmFsdWVzIG9mIFt4XVxuICAgd2l0aCBbeCA8IDEuXSBzdWNoIHRoYXQgW2xvICsuIHggKi4gKGhpIC0uIGxvKSA9IGhpXSwgc28gaXQgd291bGQgbm90IGJlIGNvcnJlY3QgdG9cbiAgIGRvY3VtZW50IHRoaXMgYXMgYmVpbmcgZXhjbHVzaXZlIG9mIFtoaV0uXG4qKVxubGV0IGZsb2F0ID1cbiAgbGV0IHJlYyBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IHJhbmdlID0gaGkgLS4gbG8gaW5cbiAgICBpZiBGbG9hdC5pc19maW5pdGUgcmFuZ2VcbiAgICB0aGVuIChsbyArLiAodW5pdF9mbG9hdCBzdGF0ZSAqLiByYW5nZSkpXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogSWYgW2hpIC0gbG9dIGlzIGluZmluaXRlLCB0aGVuIFtoaSArIGxvXSBpcyBmaW5pdGUgYmVjYXVzZSBbaGldIGFuZCBbbG9dIGhhdmVcbiAgICAgICAgIG9wcG9zaXRlIHNpZ25zLiAqKVxuICAgICAgbGV0IG1pZCA9IChoaSArLiBsbykgLy4gMi4gaW5cbiAgICAgIGlmIGJvb2wgc3RhdGVcbiAgICAgICgqIERlcGVuZGluZyBvbiByb3VuZGluZywgdGhlIHJlY3Vyc2lvbiB3aXRoIFt+aGk6bWlkXSBtaWdodCBiZSBpbmNsdXNpdmUgb2YgW21pZF0sXG4gICAgICAgICB3aGljaCB3b3VsZCBtZWFuIHRoZSB0d28gY2FzZXMgb3ZlcmxhcCBvbiBbbWlkXS4gVGhlIGFsdGVybmF0aXZlIGlzIHRvIGluY3JlbWVudFxuICAgICAgICAgb3IgZGVjcmVtZW50IFttaWRdIHVzaW5nIFtvbmVfdWxwXSBpbiBlaXRoZXIgb2YgdGhlIGNhbGxzLCBidXQgdGhlbiBpZiB0aGUgZmlyc3RcbiAgICAgICAgIGNhc2UgaXMgZXhjbHVzaXZlIHdlIGxlYXZlIGEgXCJnYXBcIiBiZXR3ZWVuIHRoZSB0d28gcmFuZ2VzLiBUaGVyZSdzIG5vIHBlcmZlY3RseVxuICAgICAgICAgdW5pZm9ybSBzb2x1dGlvbiwgc28gd2UgdXNlIHRoZSBzaW1wbGVyIGNvZGUgdGhhdCBkb2VzIG5vdCBjYWxsIFtvbmVfdWxwXS4gKilcbiAgICAgIHRoZW4gZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGk6bWlkXG4gICAgICBlbHNlIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG86bWlkIH5oaVxuICAgIGVuZFxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvICYmIEZsb2F0LmlzX2Zpbml0ZSBoaSlcbiAgICB0aGVuIGJlZ2luXG4gICAgICByYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICBcImZsb2F0OiBib3VuZHMgYXJlIG5vdCBmaW5pdGUgbnVtYmVyc1wiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBpZiBGbG9hdC4oID4gKSBsbyBoaVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgY3Jvc3NlZFwiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaVxuXG5sZXQlYmVuY2hfZnVuIFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPVxuICBsZXQgaW50NjQgPSAxTCBpblxuICBmdW4gKCkgLT4gdW5pdF9mbG9hdF9mcm9tX2ludDY0IGludDY0XG5cbm1vZHVsZSBMb2dfdW5pZm9ybSA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZSAoTSA6IHNpZyBpbmNsdWRlIEludC5TIHZhbCB1bmlmb3JtIDogU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdCBlbmQpIDogc2lnXG4gICAgdmFsIGxvZ191bmlmb3JtIDogU3RhdGUudCAtPiBsbzpNLnQgLT4gaGk6TS50IC0+IE0udFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIE1cblxuICAgIGxldCBiaXRzX3RvX3JlcHJlc2VudCB0ID1cbiAgICAgIGFzc2VydCAodCA+PSB6ZXJvKTtcbiAgICAgIGxldCB0ID0gcmVmIHQgaW5cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlICF0ID4gemVybyBkb1xuICAgICAgICB0IDo9IHNoaWZ0X3JpZ2h0ICF0IDE7XG4gICAgICAgIEludC5pbmNyIG47XG4gICAgICBkb25lO1xuICAgICAgIW5cblxuICAgIGxldCV0ZXN0X3VuaXQgXCJiaXRzX3RvX3JlcHJlc2VudFwiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogaW50XSAoYml0c190b19yZXByZXNlbnQgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAwKSAgIDA7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMSkgICAxO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDIpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAzKSAgIDI7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNCkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDUpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA2KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNykgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDgpICAgNDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxMDApIDc7XG4gICAgICB0ZXN0IE0ubWF4X3ZhbHVlIChJbnQucHJlZCBNLm51bV9iaXRzKTtcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBpZiBJbnQuZXF1YWwgbiAwXG4gICAgICB0aGVuIHplcm9cbiAgICAgIGVsc2Ugc2hpZnRfbGVmdCBvbmUgKEludC5wcmVkIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWluX3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0IGluXG4gICAgICB0ZXN0IDAgKE0ub2ZfaW50X2V4biAwKTtcbiAgICAgIHRlc3QgMSAoTS5vZl9pbnRfZXhuIDEpO1xuICAgICAgdGVzdCAyIChNLm9mX2ludF9leG4gMik7XG4gICAgICB0ZXN0IDMgKE0ub2ZfaW50X2V4biA0KTtcbiAgICAgIHRlc3QgNCAoTS5vZl9pbnRfZXhuIDgpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gNjQpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgKE0uc2hpZnRfcmlnaHRfbG9naWNhbCBNLm1pbl92YWx1ZSAxKTtcbiAgICA7O1xuXG4gICAgbGV0IG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBwcmVkIChzaGlmdF9sZWZ0IG9uZSBuKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcIm1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHNcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IE0udF0gKG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAzKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDcpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gMTUpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gMTI3KTtcbiAgICAgIHRlc3QgKEludC5wcmVkIE0ubnVtX2JpdHMpIE0ubWF4X3ZhbHVlO1xuICAgIDs7XG5cbiAgICBsZXQgbG9nX3VuaWZvcm0gc3RhdGUgfmxvIH5oaSA9XG4gICAgICBsZXQgbWluX2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBsbyBpblxuICAgICAgbGV0IG1heF9iaXRzID0gYml0c190b19yZXByZXNlbnQgaGkgaW5cbiAgICAgIGxldCBiaXRzID0gaW50IHN0YXRlIH5sbzptaW5fYml0cyB+aGk6bWF4X2JpdHMgaW5cbiAgICAgIHVuaWZvcm0gc3RhdGVcbiAgICAgICAgfmxvOihtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIGJpdHMgfD4gbWF4IGxvKVxuICAgICAgICB+aGk6KG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtaW4gaGkpXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfaW50ICAgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50ICAgICAgIGxldCB1bmlmb3JtID0gaW50ICAgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQzMiAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQzMiAgICAgbGV0IHVuaWZvcm0gPSBpbnQzMiAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDYzICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDYzICAgICBsZXQgdW5pZm9ybSA9IGludDYzICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjQgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjQgICAgIGxldCB1bmlmb3JtID0gaW50NjQgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBOYXRpdmVpbnQgbGV0IHVuaWZvcm0gPSBuYXRpdmVpbnQgZW5kKVxuXG4gIGxldCBpbnQgICAgICAgPSBGb3JfaW50LmxvZ191bmlmb3JtXG4gIGxldCBpbnQzMiAgICAgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1cbiAgbGV0IGludDYzICAgICA9IEZvcl9pbnQ2My5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjQgICAgID0gRm9yX2ludDY0LmxvZ191bmlmb3JtXG4gIGxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtXG5lbmRcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG4oKiogSW50ZWdlciByZW1haW5kZXIuICBJZiBbeV0gaXMgbm90IHplcm8sIHRoZSByZXN1bHRcbiAgIG9mIFtJbnQ2NC5yZW0geCB5XSBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTpcbiAgIFt4ID0gSW50NjQuYWRkIChJbnQ2NC5tdWwgKEludDY0LmRpdiB4IHkpIHkpIChJbnQ2NC5yZW0geCB5KV0uXG4gICBJZiBbeSA9IDBdLCBbSW50NjQucmVtIHggeV0gcmFpc2VzIFtEaXZpc2lvbl9ieV96ZXJvXS4gKilcblxudmFsIHVuc2lnbmVkX3JlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IXJlbX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbigqKiBUaGUgZXF1YWwgZnVuY3Rpb24gZm9yIGludDY0cy5cbiAgICBAc2luY2UgNC4wMyAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTNcbiAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4xICopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjEgKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExheW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaWdhcnJheS5sYXlvdXRcblxuICBsZXQgb2Zmc2V0IDogdHlwZSBhLiBhIHQgLT4gaW50ID0gZnVuY3Rpb25cbiAgICB8IEJpZ2FycmF5LkZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICB8IEJpZ2FycmF5LkNfbGF5b3V0IC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkxLmRpbSB0IC0gMSBkb1xuICAgICAgZiAoaSArIG9mZnNldCkgdC57aSArIG9mZnNldH1cbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0gfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gdC57aX0gPC0gZiBpKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IGluaXQgOj0gZiAhaW5pdCB0LntpfSk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTEuZGltIHQpIH5mOihmdW4gaSAtPiB0LntpICsgb2Zmc2V0fSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTIudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMSB0IC0gMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQgLSAxIGRvXG4gICAgICAgIGYgKGkgKyBvZmZzZXQpIChqICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbTEgZGltMiB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTIuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIGogKF8gOiBlbHQpIC0+IHQue2ksIGp9IDwtIGYgaSBqKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIChfIDogaW50KSAoXyA6IGludCkgZWx0IC0+IGluaXQgOj0gZiAhaW5pdCBlbHQpO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgfmY6KGZ1biBpIC0+XG4gICAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMiB0KSB+ZjooZnVuIGogLT4gdC57aSArIG9mZnNldCwgaiArIG9mZnNldH0pKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgaW5cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMiB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgLT4gc2l6ZTppbnQgLT4gaGFzaDpIYXNoLnN0YXRlIC0+IEhhc2guc3RhdGVcblxubGV0IGNyZWF0ZSBmIDogXyB0ID0gZlxuXG5sZXQgb2JzZXJ2ZSAodCA6IF8gdCkgeCB+c2l6ZSB+aGFzaCA9XG4gIGlmIHNpemUgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub2JzZXJ2ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gIGVsc2UgdCB4IH5zaXplIH5oYXNoXG47O1xuXG5sZXQgb3BhcXVlIF8gfnNpemU6XyB+aGFzaCA9IGhhc2hcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIGdlbmVyYXRlIDogJ2EgdCAtPiBzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgU3RhZ2VkLnRcblxuICBsZXQgY3JlYXRlIGYgOiBfIHQgPSBTdGFnZWQuc3RhZ2UgZlxuXG4gIGxldCBnZW5lcmF0ZSAodCA6IF8gdCkgfnNpemUgfnJhbmRvbSA9XG4gICAgaWYgc2l6ZSA8IDBcbiAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5nZW5lcmF0ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gICAgZWxzZSBTdGFnZWQudW5zdGFnZSB0IH5zaXplIH5yYW5kb21cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tOl8gLT4gc2l6ZSlcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnNwbGl0IHJhbmRvbSBpblxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgaGFzaCA9IE9ic2VydmVyMC5vYnNlcnZlIGRvbSB4IH5zaXplIH5oYXNoOihIYXNoLmFsbG9jICgpKSBpblxuICAgICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNvcHkgcmFuZG9tIGluXG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKTtcbiAgICAgIGdlbmVyYXRlIHJuZyB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IHdpdGhfc2l6ZSB0IH5zaXplID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcblxubGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIHNhbHQ7XG4gICAgZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB+c2l6ZSB+cmFuZG9tID1cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBTb21lIHkgLT4geVxuICAgIHwgTm9uZSAtPiBsb29wIH5zaXplOihzaXplICsgMSkgfnJhbmRvbVxuICBpblxuICBjcmVhdGUgbG9vcFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IHJldHVybiB4ID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tOl8gLT4geClcbmxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZiAoZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFwcGx5IHRmIHR4ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBmID0gZ2VuZXJhdGUgdGYgfnNpemUgfnJhbmRvbSBpblxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdHggfnNpemUgfnJhbmRvbSBpblxuICAgIGYgeClcbjs7XG5cbmxldCBiaW5kIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBnZW5lcmF0ZSAoZiB4KSB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGFsbCBsaXN0ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lm1hcCBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QuaXRlciBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDIgPSBGb3JfYXBwbGljYXRpdmUubWFwMlxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIEZvcl9tb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGlnbm9yZV9tID0gRm9yX21vbmFkLmlnbm9yZV9tXG5sZXQgam9pbiA9IEZvcl9tb25hZC5qb2luXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IEZvcl9tb25hZC5Nb25hZF9pbmZpeFxuaW5jbHVkZSBNb25hZF9pbmZpeFxubW9kdWxlIExldF9zeW50YXggPSBGb3JfbW9uYWQuTGV0X3N5bnRheFxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2ZfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gIGxldCBsbyA9IDAgaW5cbiAgbGV0IGhpID0gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbyB+aGkgaW5cbiAgICBhcnJheS4oaW5kZXgpKVxuOztcblxubGV0IHVuaW9uIGxpc3QgPSBqb2luIChvZl9saXN0IGxpc3QpXG5cbmxldCBvZl93ZWlnaHRlZF9saXN0IGFsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBhbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgd2VpZ2h0cywgdmFsdWVzID0gTGlzdC51bnppcCBhbGlzdCBpblxuICBsZXQgdmFsdWVfYXJyYXkgPSBBcnJheS5vZl9saXN0IHZhbHVlcyBpblxuICBsZXQgdG90YWxfd2VpZ2h0LCBjdW11bGF0aXZlX3dlaWdodF9hcnJheSA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHZhbHVlX2FycmF5KSB+ZjooZnVuIF8gLT4gMC4pIGluXG4gICAgbGV0IHN1bSA9XG4gICAgICBMaXN0LmZvbGRpIHdlaWdodHMgfmluaXQ6MC4gfmY6KGZ1biBpbmRleCBhY2Mgd2VpZ2h0IC0+XG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHdlaWdodClcbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5vdCBmaW5pdGVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBpZiBGbG9hdC4oIDwgKSB3ZWlnaHQgMC5cbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgbGV0IGN1bXVsYXRpdmUgPSBhY2MgKy4gd2VpZ2h0IGluXG4gICAgICAgIGFycmF5LihpbmRleCkgPC0gY3VtdWxhdGl2ZTtcbiAgICAgICAgY3VtdWxhdGl2ZSlcbiAgICBpblxuICAgIGlmIEZsb2F0LiggPD0gKSBzdW0gMC5cbiAgICB0aGVuXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogdG90YWwgd2VpZ2h0IGlzIHplcm9cIl07XG4gICAgc3VtLCBhcnJheVxuICBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgY2hvaWNlID0gU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzowLiB+aGk6dG90YWxfd2VpZ2h0IGluXG4gICAgbWF0Y2hcbiAgICAgIEFycmF5LmJpbmFyeV9zZWFyY2hcbiAgICAgICAgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXlcbiAgICAgICAgfmNvbXBhcmU6RmxvYXQuY29tcGFyZVxuICAgICAgICBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgICAgIGNob2ljZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5kZXggLT4gdmFsdWVfYXJyYXkuKGluZGV4KVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgd2VpZ2h0ZWRfdW5pb24gYWxpc3QgPSBqb2luIChvZl93ZWlnaHRlZF9saXN0IGFsaXN0KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZm9yY2UgbGF6eV90KSB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2ZfZ2VuZXJhdG9yID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9nZW5lcmF0b3IgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgZm9yY2UgbGF6eV90XG47O1xuXG5sZXQgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IHJlY19saXN0ID1cbiAgICAgIExpc3QubWFwIChmIHNlbGYpIH5mOihmdW4gKHcsIHQpIC0+XG4gICAgICAgICggd1xuICAgICAgICAsIGxldCViaW5kIG4gPSBzaXplIGluXG4gICAgICAgICAgd2l0aF9zaXplIH5zaXplOihuIC0gMSkgdCApKVxuICAgIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBub25yZWNfbGlzdCB8fCBMaXN0LmlzX2VtcHR5IHJlY19saXN0XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iud2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uOiBsaXN0cyBtdXN0IGJlIG5vbi1lbXB0eVwiXTtcbiAgICBsZXQgbm9ucmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIG5vbnJlY19saXN0IGluXG4gICAgbGV0IHJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiAobm9ucmVjX2xpc3QgQCByZWNfbGlzdCkgaW5cbiAgICBtYXRjaCViaW5kIHNpemUgd2l0aFxuICAgIHwgMCAtPiBub25yZWNfZ2VuXG4gICAgfCBfIC0+IHJlY19nZW4pXG47O1xuXG5sZXQgcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgbGV0IHdlaWdodGVkIGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gdCAtPiAxLiwgdCkgaW5cbiAgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uICh3ZWlnaHRlZCBub25yZWNfbGlzdCkgfmY6KGZ1biBzZWxmIC0+IHdlaWdodGVkIChmIHNlbGYpKVxuOztcblxubGV0IHNpemVzID8obWluX2xlbmd0aCA9IDApID8obWF4X2xlbmd0aCA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGFzc2VydCAobWluX2xlbmd0aCA8PSBtYXhfbGVuZ3RoKTtcbiAgICBsZXQgdXBwZXJfYm91bmQgPSBtaW5fbGVuZ3RoICsgc2l6ZSBpblxuICAgIGxldCBtYXhfbGVuZ3RoID1cbiAgICAgIGlmIHVwcGVyX2JvdW5kID49IG1pbl9sZW5ndGggKCogZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdyAqKVxuICAgICAgdGhlbiBtaW4gbWF4X2xlbmd0aCB1cHBlcl9ib3VuZFxuICAgICAgZWxzZSBtYXhfbGVuZ3RoXG4gICAgaW5cbiAgICAoKiBwaWNrIGEgbGVuZ3RoLCB3ZWlnaHRlZCBsb3cgc28gdGhhdCBtb3N0IG9mIHRoZSBzaXplIGlzIHNwZW50IG9uIGVsZW1lbnRzICopXG4gICAgbGV0IGxlbiA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOm1pbl9sZW5ndGggfmhpOm1heF9sZW5ndGggaW5cbiAgICAoKiBpZiB0aGVyZSBhcmUgbm8gZWxlbWVudHMgcmV0dXJuIGFuIGVtcHR5IGFycmF5LCBvdGhlcndpc2UgcmV0dXJuIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgICAgd2l0aCB0aGUgc2l6ZSBkaXN0cmlidXRlZCBhbW9uZyB0aGUgZWxlbWVudHMgKilcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNpemVzID0gQXJyYXkuaW5pdCBsZW4gfmY6KGZ1biBfIC0+IDApIGluXG4gICAgICBsZXQgcmVtYWluaW5nID0gc2l6ZSAtIChsZW4gLSBtaW5fbGVuZ3RoKSBpblxuICAgICAgbGV0IG1heF9pbmRleCA9IGxlbiAtIDEgaW5cbiAgICAgIGZvciBfID0gMSB0byByZW1haW5pbmcgZG9cbiAgICAgICAgKCogcGljayBhbiBpbmRleCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgd2Ugc2VlIHVuYmFsYW5jZWQgZGlzdHJpYnV0aW9ucyBvZnRlbiAqKVxuICAgICAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgc2l6ZXMuKGluZGV4KSA8LSBzaXplcy4oaW5kZXgpICsgMVxuICAgICAgZG9uZTtcbiAgICAgICgqIHBlcm11dGUgdGhlIGFycmF5IHNvIHRoYXQgbm8gaW5kZXggaXMgZmF2b3JlZCBvdmVyIGFub3RoZXIgKilcbiAgICAgIGZvciBpID0gMCB0byBtYXhfaW5kZXggLSAxIGRvXG4gICAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIEFycmF5LnN3YXAgc2l6ZXMgaSBqXG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IChBcnJheS5zdW0gKG1vZHVsZSBJbnQpIHNpemVzIH5mOkZuLmlkICsgKGxlbiAtIG1pbl9sZW5ndGgpID0gc2l6ZSk7XG4gICAgICBBcnJheS50b19saXN0IHNpemVzKSlcbjs7XG5cbmxldCB1bml0ID0gcmV0dXJuICgpXG5sZXQgYm9vbCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSlcbmxldCBvcHRpb24gdmFsdWVfdCA9IHVuaW9uIFsgcmV0dXJuIE5vbmU7IG1hcCB2YWx1ZV90IH5mOk9wdGlvbi5yZXR1cm4gXVxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9IHVuaW9uIFsgbWFwIGZzdF90IH5mOkVpdGhlci5maXJzdDsgbWFwIHNuZF90IH5mOkVpdGhlci5zZWNvbmQgXVxuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbjs7XG5cbmxldCBsaXN0X2dlbmVyaWMgP21pbl9sZW5ndGggP21heF9sZW5ndGggZWx0X2dlbiA9XG4gIGxldCViaW5kIHNpemVzID0gc2l6ZXMgP21pbl9sZW5ndGggP21heF9sZW5ndGggKCkgaW5cbiAgTGlzdC5tYXAgc2l6ZXMgfmY6KGZ1biBzaXplIC0+IHdpdGhfc2l6ZSB+c2l6ZSBlbHRfZ2VuKSB8PiBhbGxcbjs7XG5cbmxldCBsaXN0IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgZWx0X2dlblxubGV0IGxpc3Rfbm9uX2VtcHR5IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6MSBlbHRfZ2VuXG5cbmxldCBsaXN0X3dpdGhfbGVuZ3RoIGVsdF9nZW4gfmxlbmd0aCA9XG4gIGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoIGVsdF9nZW5cbjs7XG5cbmxldCBsaXN0X2ZpbHRlcmVkIGVsdHMgPVxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgbGVuZ3RoX29mX2lucHV0ID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGxlbmd0aF9vZl9vdXRwdXQgPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTpsZW5ndGhfb2ZfaW5wdXQgaW5cbiAgICBsZXQgaW5kaWNlcyA9IEFycmF5LmluaXQgbGVuZ3RoX29mX2lucHV0IH5mOkZuLmlkIGluXG4gICAgKCogQ2hvb3NlIFtsZW5ndGhfb2Zfb3V0cHV0XSByYW5kb20gdmFsdWVzIGluIHRoZSBwcmVmaXggb2YgW2luZGljZXNdLiAqKVxuICAgIGZvciBpID0gMCB0byBsZW5ndGhfb2Zfb3V0cHV0IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaToobGVuZ3RoX29mX2lucHV0IC0gMSkgaW5cbiAgICAgIEFycmF5LnN3YXAgaW5kaWNlcyBpIGpcbiAgICBkb25lO1xuICAgICgqIFNvcnQgdGhlIGNob3NlbiBpbmRpY2VzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZW9yZGVyIHRoZW0uICopXG4gICAgQXJyYXkuc29ydCBpbmRpY2VzIH5wb3M6MCB+bGVuOmxlbmd0aF9vZl9vdXRwdXQgfmNvbXBhcmU6SW50LmNvbXBhcmU7XG4gICAgKCogUmV0dXJuIHRoZSBjaG9zZW4gZWxlbWVudHMuICopXG4gICAgTGlzdC5pbml0IGxlbmd0aF9vZl9vdXRwdXQgfmY6KGZ1biBpIC0+IGVsdHMuKGluZGljZXMuKGkpKSkpXG47O1xuXG5sZXQgbGlzdF9wZXJtdXRhdGlvbnMgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmkgaW5cbiAgICAgIEFycmF5LnN3YXAgYXJyYXkgaSBqXG4gICAgZG9uZTtcbiAgICBBcnJheS50b19saXN0IGFycmF5KVxuOztcblxubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbFxuXG5sZXQgY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOihDaGFyLnRvX2ludCBsbykgfmhpOihDaGFyLnRvX2ludCBoaSlcbiAgICB8PiBDaGFyLnVuc2FmZV9vZl9pbnQpXG47O1xuXG5sZXQgY2hhcl91cHBlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdBJyAnWidcbmxldCBjaGFyX2xvd2VyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ2EnICd6J1xubGV0IGNoYXJfZGlnaXQgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcwJyAnOSdcbmxldCBjaGFyX3ByaW50X3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcgJyAnfidcbmxldCBjaGFyX3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIENoYXIubWluX3ZhbHVlIENoYXIubWF4X3ZhbHVlXG5sZXQgY2hhcl9hbHBoYSA9IHVuaW9uIFsgY2hhcl9sb3dlcmNhc2U7IGNoYXJfdXBwZXJjYXNlIF1cblxubGV0IGNoYXJfYWxwaGFudW0gPVxuICB3ZWlnaHRlZF91bmlvblxuICAgICgqIE1vc3QgcGVvcGxlIHByb2JhYmx5IGV4cGVjdCB0aGlzIHRvIGJlIGEgdW5pZm9ybSBkaXN0cmlidXRpb24sIG5vdCB3ZWlnaHRlZFxuICAgICAgIHRvd2FyZCBkaWdpdHMgbGlrZSB3ZSB3b3VsZCBnZXQgd2l0aCBbdW5pb25dIChzaW5jZSB0aGVyZSBhcmUgZmV3ZXIgZGlnaXRzIHRoYW5cbiAgICAgICBsZXR0ZXJzKS4gKilcbiAgICBbIDUyLiwgY2hhcl9hbHBoYTsgMTAuLCBjaGFyX2RpZ2l0IF1cbjs7XG5cbmxldCBjaGFyX3doaXRlc3BhY2UgPSBvZl9saXN0IChMaXN0LmZpbHRlciBDaGFyLmFsbCB+ZjpDaGFyLmlzX3doaXRlc3BhY2UpXG5sZXQgY2hhcl9wcmludCA9IHdlaWdodGVkX3VuaW9uIFsgMTAuLCBjaGFyX2FscGhhbnVtOyAxLiwgY2hhcl9wcmludF91bmlmb3JtIF1cblxubGV0IGNoYXIgPVxuICB3ZWlnaHRlZF91bmlvblxuICAgIFsgMTAwLiwgY2hhcl9wcmludFxuICAgIDsgMTAuLCBjaGFyX3VuaWZvcm1cbiAgICA7IDEuLCByZXR1cm4gQ2hhci5taW5fdmFsdWVcbiAgICA7IDEuLCByZXR1cm4gQ2hhci5tYXhfdmFsdWVcbiAgICBdXG47O1xuXG4oKiBQcm9kdWNlcyBhIG51bWJlciBmcm9tIDAgb3IgMSB0byBzaXplICsgMSwgd2VpZ2h0ZWQgaGlnaC4gV2UgaGF2ZSBmb3VuZCB0aGlzXG4gICBkaXN0cmlidXRpb24gZW1waXJpY2FsbHkgdXNlZnVsIGZvciBzdHJpbmcgbGVuZ3Rocy4gKilcbmxldCBzbWFsbF9pbnQgfmFsbG93X3plcm8gPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGxvd2VyX2JvdW5kID0gaWYgYWxsb3dfemVybyB0aGVuIDAgZWxzZSAxIGluXG4gICAgbGV0IHVwcGVyX2JvdW5kID0gc2l6ZSArIDEgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfbG93ID1cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOih1cHBlcl9ib3VuZCAtIGxvd2VyX2JvdW5kKVxuICAgIGluXG4gICAgbGV0IHdlaWdodGVkX2hpZ2ggPSB1cHBlcl9ib3VuZCAtIHdlaWdodGVkX2xvdyBpblxuICAgIHdlaWdodGVkX2hpZ2gpXG47O1xuXG5sZXQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86dHJ1ZVxubGV0IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzpmYWxzZVxuXG5tb2R1bGUgdHlwZSBJbnRfd2l0aF9yYW5kb20gPSBzaWdcbiAgaW5jbHVkZSBJbnQuU1xuXG4gIHZhbCB1bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuICB2YWwgbG9nX3VuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG5lbmRcblxubW9kdWxlIEZvcl9pbnRlZ2VyIChJbnRlZ2VyIDogSW50X3dpdGhfcmFuZG9tKSA9IHN0cnVjdFxuICBsZXQgZ2VvbWV0cmljIGxvIH5wID1cbiAgICBpZiBGbG9hdC5lcXVhbCBwIDEuXG4gICAgdGhlbiByZXR1cm4gbG9cbiAgICBlbHNlIGlmIEZsb2F0LmVxdWFsIHAgMC5cbiAgICB0aGVuIHJldHVybiBJbnRlZ2VyLm1heF92YWx1ZVxuICAgIGVsc2UgaWYgRmxvYXQuKCA8ICkgcCAwLiB8fCBGbG9hdC4oID4gKSBwIDEuIHx8IEZsb2F0LmlzX25hbiBwXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJnZW9tZXRyaWMgZGlzdHJpYnV0aW9uOiBwIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxXCIgKHAgOiBmbG9hdCldXG4gICAgZWxzZSAoXG4gICAgICAoKiBXZSBzdGFydCB3aXRoIGEgdW5pZm9ybSBkaXN0cmlidXRpb24uIFdlIGNvbnZlcnQgdG8gZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uXG4gICAgICAgICB1c2luZyBbbG9nXS4gV2UgY29udmVydCB0byBnZW9tZXRyaWMgd2l0aCBbcm91bmRfZG93bl0uIFRoZW4gd2UgYm91bmRzIGNoZWNrIGFuZFxuICAgICAgICAgcmV0dXJuLiAqKVxuICAgICAgbGV0IGRlbm9taW5hdG9yID0gRmxvYXQubG9nMXAgKC0ucCkgaW5cbiAgICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgICAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLnVuaXRfZmxvYXQgcmFuZG9tIGluXG4gICAgICAgIGxldCBleHBvbmVudGlhbCA9IEZsb2F0LmxvZyB1bmlmb3JtIC8uIGRlbm9taW5hdG9yIGluXG4gICAgICAgIGxldCBmbG9hdCA9IEZsb2F0LnJvdW5kX2Rvd24gZXhwb25lbnRpYWwgaW5cbiAgICAgICAgbWF0Y2ggSW50ZWdlci5vZl9mbG9hdCBmbG9hdCB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPiBJbnRlZ2VyLm1heF92YWx1ZVxuICAgICAgICB8IGludCAtPlxuICAgICAgICAgIGxldCBpbnQgPSBJbnRlZ2VyLiggKyApIGxvIGludCBpblxuICAgICAgICAgIGlmIEludGVnZXIuKCA8ICkgaW50IGxvIHRoZW4gSW50ZWdlci5tYXhfdmFsdWUgZWxzZSBpbnQpKVxuICA7O1xuXG4gIGxldCB1bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IEludGVnZXIudW5pZm9ybSByYW5kb20gfmxvIH5oaSlcbiAgOztcblxuICBsZXQgbG9nX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci5sb2dfdW5pZm9ybSByYW5kb20gfmxvIH5oaSlcbiAgOztcblxuICBsZXQgbm9uX3VuaWZvcm0gZiBsbyBoaSA9XG4gICAgd2VpZ2h0ZWRfdW5pb24gWyAwLjA1LCByZXR1cm4gbG87IDAuMDUsIHJldHVybiBoaTsgMC45LCBmIGxvIGhpIF1cbiAgOztcblxuICBsZXQgaW5jbHVzaXZlID0gbm9uX3VuaWZvcm0gdW5pZm9ybV9pbmNsdXNpdmVcbiAgbGV0IGxvZ19pbmNsdXNpdmUgPSBub25fdW5pZm9ybSBsb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiAgbGV0IHVuaWZvcm1fYWxsID0gdW5pZm9ybV9pbmNsdXNpdmUgSW50ZWdlci5taW5fdmFsdWUgSW50ZWdlci5tYXhfdmFsdWVcblxuICBsZXQgYWxsID1cbiAgICBbJW1hcFxuICAgICAgbGV0IG5lZ2F0aXZlID0gYm9vbFxuICAgICAgYW5kIG1hZ25pdHVkZSA9IGxvZ19pbmNsdXNpdmUgSW50ZWdlci56ZXJvIEludGVnZXIubWF4X3ZhbHVlIGluXG4gICAgICBpZiBuZWdhdGl2ZSB0aGVuIEludGVnZXIuYml0X25vdCBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl9pbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50XG4gIGVuZClcblxubGV0IGludCA9IEZvcl9pbnQuYWxsXG5sZXQgaW50X3VuaWZvcm0gPSBGb3JfaW50LnVuaWZvcm1fYWxsXG5sZXQgaW50X2luY2x1c2l2ZSA9IEZvcl9pbnQuaW5jbHVzaXZlXG5sZXQgaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludF9sb2dfaW5jbHVzaXZlID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2dlb21ldHJpYyA9IEZvcl9pbnQuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfaW50MzIgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQzMlxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQzMlxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDMyXG4gIGVuZClcblxubGV0IGludDMyID0gRm9yX2ludDMyLmFsbFxubGV0IGludDMyX3VuaWZvcm0gPSBGb3JfaW50MzIudW5pZm9ybV9hbGxcbmxldCBpbnQzMl9pbmNsdXNpdmUgPSBGb3JfaW50MzIuaW5jbHVzaXZlXG5sZXQgaW50MzJfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50MzIudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQzMl9sb2dfaW5jbHVzaXZlID0gRm9yX2ludDMyLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50MzJfZ2VvbWV0cmljID0gRm9yX2ludDMyLmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX2ludDYzID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjNcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2M1xuICBlbmQpXG5cbmxldCBpbnQ2MyA9IEZvcl9pbnQ2My5hbGxcbmxldCBpbnQ2M191bmlmb3JtID0gRm9yX2ludDYzLnVuaWZvcm1fYWxsXG5sZXQgaW50NjNfaW5jbHVzaXZlID0gRm9yX2ludDYzLmluY2x1c2l2ZVxubGV0IGludDYzX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDYzX2dlb21ldHJpYyA9IEZvcl9pbnQ2My5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9pbnQ2NCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDY0XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDY0XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50NjRcbiAgZW5kKVxuXG5sZXQgaW50NjQgPSBGb3JfaW50NjQuYWxsXG5sZXQgaW50NjRfdW5pZm9ybSA9IEZvcl9pbnQ2NC51bmlmb3JtX2FsbFxubGV0IGludDY0X2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5pbmNsdXNpdmVcbmxldCBpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50NjQubG9nX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2NF9nZW9tZXRyaWMgPSBGb3JfaW50NjQuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfbmF0aXZlaW50ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTmF0aXZlaW50XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLm5hdGl2ZWludFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLm5hdGl2ZWludFxuICBlbmQpXG5cbmxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmFsbFxubGV0IG5hdGl2ZWludF91bmlmb3JtID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2FsbFxubGV0IG5hdGl2ZWludF9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmluY2x1c2l2ZVxubGV0IG5hdGl2ZWludF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9nZW9tZXRyaWMgPSBGb3JfbmF0aXZlaW50Lmdlb21ldHJpY1xubGV0IGZsb2F0X3plcm9fZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDAuXG5sZXQgZmxvYXRfemVyb19tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgMC5cblxubGV0IGZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUgPVxuICBGbG9hdC5vbmVfdWxwIGBEb3duIEZsb2F0Lm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbjs7XG5cbmxldCBmbG9hdF9zdWJub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9taW5fc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5taW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSBGbG9hdC5tYXhfZmluaXRlX3ZhbHVlXG5sZXQgZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfaW5mX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X2luZl9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgRmxvYXQuaW5maW5pdHlcbmxldCBmbG9hdF9uYW5fZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm5hblxubGV0IGZsb2F0X21pbl9uYW5fbWFudGlzc2EgPSBJbnQ2My5zdWNjIGZsb2F0X2luZl9tYW50aXNzYVxubGV0IGZsb2F0X21heF9uYW5fbWFudGlzc2EgPSBmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhXG5sZXQgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgPSA1MlxuXG4oKiBXZSB3ZWlnaHQgbWFudGlzc2FzIHNvIHRoYXQgXCJpbnRlZ2VyLWxpa2VcIiB2YWx1ZXMsIGFuZCB2YWx1ZXMgd2l0aCBvbmx5IGEgZmV3IGRpZ2l0c1xuICAgcGFzdCB0aGUgZGVjaW1hbCwgYXJlIHJlYXNvbmFibHkgY29tbW9uLiAqKVxubGV0IGZsb2F0X25vcm1hbF9tYW50aXNzYSA9XG4gIGxldCViaW5kIG51bV9iaXRzID0gRm9yX2ludC51bmlmb3JtX2luY2x1c2l2ZSAwIGZsb2F0X251bV9tYW50aXNzYV9iaXRzIGluXG4gIGxldCVtYXAgYml0cyA9XG4gICAgRm9yX2ludDYzLmluY2x1c2l2ZSBJbnQ2My56ZXJvIChJbnQ2My5wcmVkIChJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSBudW1fYml0cykpXG4gIGluXG4gIEludDYzLnNoaWZ0X2xlZnQgYml0cyAoSW50LiggLSApIGZsb2F0X251bV9tYW50aXNzYV9iaXRzIG51bV9iaXRzKVxuOztcblxubGV0IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggKyApIGxvd2VyX2JvdW5kIG9mZnNldFxuOztcblxubGV0IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2hpZ2ggbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQlbWFwIG9mZnNldCA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZSAwIChJbnQuKCAtICkgdXBwZXJfYm91bmQgbG93ZXJfYm91bmQpIGluXG4gIEludC4oIC0gKSB1cHBlcl9ib3VuZCBvZmZzZXRcbjs7XG5cbigqIFdlIHdlaWdodCBleHBvbmVudHMgc3VjaCB0aGF0IHZhbHVlcyBuZWFyIDEgYXJlIG1vcmUgbGlrZWx5LiAqKVxubGV0IGZsb2F0X2V4cG9uZW50ID1cbiAgbGV0IG1pZHBvaW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCAxLiBpblxuICB1bmlvblxuICAgIFsgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50IG1pZHBvaW50XG4gICAgOyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9sb3cgbWlkcG9pbnQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudFxuICAgIF1cbjs7XG5cbmxldCBmbG9hdF96ZXJvID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2wgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuXG4gICAgfm5lZ2F0aXZlXG4gICAgfmV4cG9uZW50OmZsb2F0X3plcm9fZXhwb25lbnRcbiAgICB+bWFudGlzc2E6ZmxvYXRfemVyb19tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbCA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9zdWJub3JtYWxfZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID1cbiAgICBGb3JfaW50NjMubG9nX2luY2x1c2l2ZSBmbG9hdF9taW5fc3Vibm9ybWFsX21hbnRpc3NhIGZsb2F0X21heF9zdWJub3JtYWxfbWFudGlzc2FcbiAgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfbm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gZmxvYXRfZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gZmxvYXRfbm9ybWFsX21hbnRpc3NhIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X2luZmluaXRlID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2wgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuXG4gICAgfm5lZ2F0aXZlXG4gICAgfmV4cG9uZW50OmZsb2F0X2luZl9leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF9pbmZfbWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9uYW4gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSByZXR1cm4gZmxvYXRfbmFuX2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9IEZvcl9pbnQ2My5pbmNsdXNpdmUgZmxvYXRfbWluX25hbl9tYW50aXNzYSBmbG9hdF9tYXhfbmFuX21hbnRpc3NhIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IGZsb2F0X3plcm9cbiAgfCBTdWJub3JtYWwgLT4gZmxvYXRfc3Vibm9ybWFsXG4gIHwgTm9ybWFsIC0+IGZsb2F0X25vcm1hbFxuICB8IEluZmluaXRlIC0+IGZsb2F0X2luZmluaXRlXG4gIHwgTmFuIC0+IGZsb2F0X25hblxuOztcblxubGV0IGZsb2F0X3dlaWdodF9vZl9jbGFzcyBjID1cbiAgbWF0Y2ggKGMgOiBGbG9hdC5DbGFzcy50KSB3aXRoXG4gIHwgWmVybyAtPiAxLlxuICB8IFN1Ym5vcm1hbCAtPiAxMC5cbiAgfCBOb3JtYWwgLT4gMTAwLlxuICB8IEluZmluaXRlIC0+IDEuXG4gIHwgTmFuIC0+IDEuXG47O1xuXG5sZXQgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyBmaWx0ZXIgPVxuICBMaXN0LmZpbHRlcl9tYXAgRmxvYXQuQ2xhc3MuYWxsIH5mOihmdW4gYyAtPlxuICAgIGlmIGZpbHRlciBjIHRoZW4gU29tZSAoZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMsIGZsb2F0X29mX2NsYXNzIGMpIGVsc2UgTm9uZSlcbiAgfD4gd2VpZ2h0ZWRfdW5pb25cbjs7XG5cbmxldCBmbG9hdF9maW5pdGUgPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgWmVybyB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBJbmZpbml0ZSB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdF93aXRob3V0X25hbiA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIHwgSW5maW5pdGUgLT4gdHJ1ZVxuICAgIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0ID0gZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuIF8gLT4gdHJ1ZSlcblxubGV0IGZsb2F0X2Zpbml0ZV9ub25femVybyA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBTdWJub3JtYWwgfCBOb3JtYWwgLT4gdHJ1ZVxuICAgIHwgWmVybyB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlX25vbl96ZXJvIGluXG4gIEZsb2F0LmFicyB0XG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3Bvc2l0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlIGluXG4gIH4tLihGbG9hdC5hYnMgdClcbjs7XG5cbmxldCBmbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCBvcGVuIEZsb2F0Lk8gaW5cbiAgaWYgKG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvd2VyX2JvdW5kKSkgfHwgbm90IChGbG9hdC5pc19maW5pdGUgdXBwZXJfYm91bmQpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGbG9hdC51bmlmb3JtX2V4Y2x1c2l2ZTogYm91bmRzIGFyZSBub3QgZmluaXRlXCJcbiAgICAgICAgICAobG93ZXJfYm91bmQgOiBmbG9hdClcbiAgICAgICAgICAodXBwZXJfYm91bmQgOiBmbG9hdCldO1xuICBsZXQgbG93ZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQgaW5cbiAgbGV0IHVwcGVyX2luY2x1c2l2ZSA9IEZsb2F0Lm9uZV91bHAgYERvd24gdXBwZXJfYm91bmQgaW5cbiAgaWYgbG93ZXJfaW5jbHVzaXZlID4gdXBwZXJfaW5jbHVzaXZlXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGbG9hdC51bmlmb3JtX2V4Y2x1c2l2ZTogcmVxdWVzdGVkIHJhbmdlIGlzIGVtcHR5XCJcbiAgICAgICAgICAobG93ZXJfYm91bmQgOiBmbG9hdClcbiAgICAgICAgICAodXBwZXJfYm91bmQgOiBmbG9hdCldO1xuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOmxvd2VyX2luY2x1c2l2ZSB+aGk6dXBwZXJfaW5jbHVzaXZlKVxuOztcblxubGV0IGZsb2F0X2luY2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGlmIEZsb2F0LmVxdWFsIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kXG4gIHRoZW4gcmV0dXJuIGxvd2VyX2JvdW5kXG4gIGVsc2UgaWYgRmxvYXQuKCA9ICkgKEZsb2F0Lm9uZV91bHAgYFVwIGxvd2VyX2JvdW5kKSB1cHBlcl9ib3VuZFxuICB0aGVuIHVuaW9uIFsgcmV0dXJuIGxvd2VyX2JvdW5kOyByZXR1cm4gdXBwZXJfYm91bmQgXVxuICBlbHNlXG4gICAgd2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMC4wNSwgcmV0dXJuIGxvd2VyX2JvdW5kXG4gICAgICA7IDAuMDUsIHJldHVybiB1cHBlcl9ib3VuZFxuICAgICAgOyAwLjksIGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kXG4gICAgICBdXG47O1xuXG5sZXQgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGggPVxuICBsaXN0X3dpdGhfbGVuZ3RoIGNoYXJfZ2VuIH5sZW5ndGggfD4gbWFwIH5mOlN0cmluZy5vZl9jaGFyX2xpc3Rcbjs7XG5cbmxldCBzdHJpbmdfb2YgY2hhcl9nZW4gPVxuICBiaW5kIHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50IH5mOihmdW4gbGVuZ3RoIC0+XG4gICAgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGgpXG47O1xuXG5sZXQgc3RyaW5nX25vbl9lbXB0eV9vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IH5mOihmdW4gbGVuZ3RoIC0+XG4gICAgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGgpXG47O1xuXG5sZXQgc3RyaW5nID0gc3RyaW5nX29mIGNoYXJcbmxldCBzdHJpbmdfbm9uX2VtcHR5ID0gc3RyaW5nX25vbl9lbXB0eV9vZiBjaGFyXG5sZXQgc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGggPSBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhciB+bGVuZ3RoXG5cbm1vZHVsZSBFZGl0X3N0cmluZyA9IHN0cnVjdFxuICBsZXQgZWRpdF9pbnNlcnQgc3RyaW5nID1cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2dlb21ldHJpYyAxIH5wOjAuNSBpblxuICAgIGxldCViaW5kIHN0ciA9IHN0cmluZ193aXRoX2xlbmd0aCB+bGVuZ3RoOmxlbiBpblxuICAgIFsgU3RyaW5nLnByZWZpeCBzdHJpbmcgcG9zOyBzdHI7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgcG9zIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfcmVtb3ZlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgKHBvcyArIGxlbikgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9yZXBsYWNlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgbGV0JWJpbmQgc3RyID0gc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGg6bGVuIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IHN0cjsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyAocG9zICsgbGVuKSBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X2RvdWJsZSBzdHJpbmcgPVxuICAgIGxldCViaW5kIGxlbiA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMSAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgbGV0JWJpbmQgcG9zID0gaW50X3VuaWZvcm1faW5jbHVzaXZlIDAgKFN0cmluZy5sZW5ndGggc3RyaW5nIC0gbGVuKSBpblxuICAgIFsgU3RyaW5nLnByZWZpeCBzdHJpbmcgKHBvcyArIGxlbik7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgcG9zIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfbm9uZW1wdHkgc3RyaW5nID1cbiAgICBbIGVkaXRfaW5zZXJ0IHN0cmluZzsgZWRpdF9yZW1vdmUgc3RyaW5nOyBlZGl0X3JlcGxhY2Ugc3RyaW5nOyBlZGl0X2RvdWJsZSBzdHJpbmcgXVxuICAgIHw+IHVuaW9uXG4gIDs7XG5cbiAgbGV0IHJlYyBlZGl0IHN0cmluZyBuX3RpbWVzID1cbiAgICBpZiBuX3RpbWVzIDw9IDBcbiAgICB0aGVuIHJldHVybiBzdHJpbmdcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kIHN0cmluZyA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmcgdGhlbiBlZGl0X2luc2VydCBzdHJpbmcgZWxzZSBlZGl0X25vbmVtcHR5IHN0cmluZ1xuICAgICAgaW5cbiAgICAgIGVkaXQgc3RyaW5nIChuX3RpbWVzIC0gMSkpXG4gIDs7XG5lbmRcblxubGV0IHN0cmluZ19saWtlIHN0cmluZyA9XG4gIGxldCViaW5kIG5fdGltZXMgPSBpbnRfZ2VvbWV0cmljIDAgfnA6MC41IGluXG4gIEVkaXRfc3RyaW5nLmVkaXQgc3RyaW5nIG5fdGltZXNcbjs7XG5cbmxldCBieXRlcyA9IG1hcCBzdHJpbmcgfmY6Qnl0ZXMub2Zfc3RyaW5nXG5cbmxldCBzZXhwX29mIGF0b20gPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQlYmluZCBzaXplID0gc2l6ZSBpblxuICAgICgqIGNob29zZSBhIG51bWJlciB3ZWlnaHRlZCBsb3cgc28gd2UgaGF2ZSBhIGRlY3JlYXNpbmcsIGJ1dCBub3QgdmFuaXNoaW5nLCBjaGFuY2VcbiAgICAgICB0byBnZW5lcmF0ZSBhdG9tcyBhcyBzaXplIGdyb3dzICopXG4gICAgbWF0Y2glYmluZCBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZSAwIChzaXplICsgMSkgd2l0aFxuICAgICgqIGdlbmVyYXRlIGFuIGF0b20gdXNpbmcgdGhlIGdpdmVuIHNpemUgKilcbiAgICB8IDAgLT5cbiAgICAgIGxldCVtYXAgYXRvbSA9IGF0b20gaW5cbiAgICAgIFNleHAuQXRvbSBhdG9tXG4gICAgKCogcmVseWluZyBvbiBbTGlzdC5nZW5dIHRvIGRpc3RyaWJ1dGUgW3NpemVdIG92ZXIgc3ViLXNleHBzICopXG4gICAgfCBfIC0+XG4gICAgICBsZXQlbWFwIGxpc3QgPSBsaXN0IHNlbGYgaW5cbiAgICAgIFNleHAuTGlzdCBsaXN0KVxuOztcblxubGV0IHNleHAgPSBzZXhwX29mIHN0cmluZ1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0JWJpbmQga2V5cyA9IGxpc3Qga2V5X2dlbiBpblxuICBsZXQga2V5cyA9IExpc3QuZGVkdXBfYW5kX3NvcnQga2V5cyB+Y29tcGFyZTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICBsZXQlYmluZCBkYXRhID0gbGlzdF93aXRoX2xlbmd0aCBkYXRhX2dlbiB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBrZXlzKSBpblxuICByZXR1cm4gKE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIChMaXN0LnppcF9leG4ga2V5cyBkYXRhKSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICBtYXAgKGxpc3QgZWx0X2dlbikgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfbGlzdCB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBjb21wYXJhdG9yX29mX21cbiAgICAgICh0eXBlIGEgYylcbiAgICAgIChtb2R1bGUgTSA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gYylcbiAgPVxuICBNLmNvbXBhcmF0b3Jcbjs7XG5cbmxldCBtYXBfdF9tIG0ga2V5X2dlbiBkYXRhX2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuXG4gIHw+IG1hcCB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBzZXRfdF9tIG0gZWx0X2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuXG4gIHw+IG1hcCB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBiaWdhcnJheTEgdCBraW5kIGxheW91dCA9XG4gIGxldCVtYXAgZWx0cyA9IGxpc3QgdCBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgZGltID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaW5pdCBraW5kIGxheW91dCBkaW0gfmY6KGZ1biBpIC0+IGVsdHMuKGkgLSBvZmZzZXQpKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGJpZ2FycmF5MSBjaGFyIENoYXIgQ19sYXlvdXRcbmxldCBmbG9hdDMyX3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF92ZWMgPSBiaWdhcnJheTEgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5sZXQgYmlnYXJyYXkyX2RpbSA9XG4gIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gIHwgMCAtPiByZXR1cm4gKDAsIDApXG4gIHwgbWF4X3RvdGFsX3NpemUgLT5cbiAgICBsZXQlYmluZCBhID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemVdLCB3ZWlnaHRlZCBsb3cgdG8gZ2l2ZSB0aGUgb3RoZXJcbiAgICAgICAgIGRpbWVuc2lvbiBhIGdvb2QgY2hhbmNlIG9mIGJlaW5nIGNvbXBhcmF0aXZlbHkgaGlnaCAqKVxuICAgICAgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIG1heF90b3RhbF9zaXplXG4gICAgaW5cbiAgICBsZXQlYmluZCBiID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemUgLyBhXSwgd2VpZ2h0ZWQgaGlnaCB0byByZWFjaCBjbG9zZSB0b1xuICAgICAgICAgW21heF90b3RhbF9zaXplXSBtb3N0IG9mIHRoZSB0aW1lICopXG4gICAgICBsZXQgbWF4X2IgPSBtYXhfdG90YWxfc2l6ZSAvIGEgaW5cbiAgICAgIGxldCVtYXAgYl93ZWlnaHRlZF9sb3cgPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgbWF4X2IgaW5cbiAgICAgIG1heF9iIC0gYl93ZWlnaHRlZF9sb3dcbiAgICBpblxuICAgICgqIGF2b2lkIGFueSBza2V3IG9mIGEgdnMgYiBieSByYW5kb21seSBzd2FwcGluZyAqKVxuICAgIGlmJW1hcCBib29sIHRoZW4gYSwgYiBlbHNlIGIsIGFcbjs7XG5cbmxldCBiaWdhcnJheTIgdCBraW5kIGxheW91dCA9XG4gIGxldCViaW5kIGRpbTEsIGRpbTIgPSBiaWdhcnJheTJfZGltIGluXG4gIGxldCVtYXAgZWx0cyA9IGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0xIChsaXN0X3dpdGhfbGVuZ3RoIH5sZW5ndGg6ZGltMiB0KSBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3RfbWFwIH5mOkFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGkgaiAtPlxuICAgIGVsdHMuKGkgLSBvZmZzZXQpLihqIC0gb2Zmc2V0KSlcbjs7XG5cbmxldCBmbG9hdDMyX21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF9tYXQgPSBiaWdhcnJheTIgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgRGVidWcgPSBzdHJ1Y3RcbiAgbGV0IGNvdmVyYWdlXG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIENtcCA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICBzYW1wbGVcbiAgICA9XG4gICAgU2VxdWVuY2UuZm9sZFxuICAgICAgc2FtcGxlXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgQ21wKSlcbiAgICAgIH5mOihmdW4gY291bnRzIHZhbHVlIC0+XG4gICAgICAgIE1hcC51cGRhdGUgY291bnRzIHZhbHVlIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldiArIDEpKVxuICA7O1xuXG4gIGxldCBtb25pdG9yIHQgfmYgPVxuICAgIG1hcCB0IH5mOihmdW4gdmFsdWUgLT5cbiAgICAgIGYgdmFsdWU7XG4gICAgICB2YWx1ZSlcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG4oKiogSW50ZWdlciByZW1haW5kZXIuICBJZiBbeV0gaXMgbm90IHplcm8sIHRoZSByZXN1bHRcbiAgIG9mIFtJbnQ2NC5yZW0geCB5XSBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTpcbiAgIFt4ID0gSW50NjQuYWRkIChJbnQ2NC5tdWwgKEludDY0LmRpdiB4IHkpIHkpIChJbnQ2NC5yZW0geCB5KV0uXG4gICBJZiBbeSA9IDBdLCBbSW50NjQucmVtIHggeV0gcmFpc2VzIFtEaXZpc2lvbl9ieV96ZXJvXS4gKilcblxudmFsIHVuc2lnbmVkX3JlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IXJlbX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbigqKiBUaGUgZXF1YWwgZnVuY3Rpb24gZm9yIGludDY0cy5cbiAgICBAc2luY2UgNC4wMyAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTNcbiAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4xICopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjEgKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGF0b21pYyA6IF8gdFxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdhIFNlcXVlbmNlLnQpIC0+ICdhIHRcbiAgdmFsIHNocmluayA6ICdhIHQgLT4gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+ICdhIFNlcXVlbmNlLnRcblxuICBsZXQgYXRvbWljIF8gPSBTZXF1ZW5jZS5lbXB0eVxuICBsZXQgY3JlYXRlID0gRm4uaWRcbiAgbGV0IHNocmluayA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBtYXAgdCB+ZiB+Zl9pbnZlcnNlID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxubGV0IGZpbHRlciB0IH5mID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXIgfmYgKHNocmluayB0IHgpKVxuXG5sZXQgZmlsdGVyX21hcCB0IH5mIH5mX2ludmVyc2UgPVxuICBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlcl9tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxuOztcblxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5vZl9sYXp5IChsYXp5IChzaHJpbmsgKGZvcmNlIGxhenlfdCkgeCkpKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2Zfc2hyaW5rZXIgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX3Nocmlua2VyIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgWyBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOihmdW4gZnN0IC0+IGZzdCwgc25kKVxuICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOihmdW4gc25kIC0+IGZzdCwgc25kKVxuICAgICAgXSlcbjs7XG5cbmxldCB1bml0ID0gYXRvbWljXG5sZXQgYm9vbCA9IGF0b21pY1xubGV0IGNoYXIgPSBhdG9taWNcbmxldCBpbnQgPSBhdG9taWNcbmxldCBpbnQzMiA9IGF0b21pY1xubGV0IGludDYzID0gYXRvbWljXG5sZXQgaW50NjQgPSBhdG9taWNcbmxldCBuYXRpdmVpbnQgPSBhdG9taWNcbmxldCBmbG9hdCA9IGF0b21pY1xuXG5sZXQgYmlnYXJyYXkxIHNyYyA9XG4gIGxldCBkaW0gPSBCaWdhcnJheS5BcnJheTEuZGltIHNyYyBpblxuICBtYXRjaCBkaW0gd2l0aFxuICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgfCBfIC0+XG4gICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTEua2luZCBzcmMgaW5cbiAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkxLmxheW91dCBzcmMgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgIFNlcXVlbmNlLmluaXQgZGltIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IChkaW0gLSAxKSB+ZjooZnVuIGkgLT5cbiAgICAgICAgc3JjLntpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMX0pKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDMyX3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDY0X3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcblxubGV0IGJpZ2FycmF5MiA9XG4gIGxldCBtb2R1bGUgRGltcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGRpbTEgOiBpbnRcbiAgICAgIDsgZGltMiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgYSA9IEJpZ2FycmF5LkFycmF5Mi57IGRpbTEgPSBkaW0xIGE7IGRpbTIgPSBkaW0yIGEgfVxuICBlbmRcbiAgaW5cbiAgbGV0IHNocmluayBmaWVsZCBzcmMgPVxuICAgIGxldCBkaW1zID0gRGltcy5jcmVhdGUgc3JjIGluXG4gICAgbWF0Y2ggRmllbGQuZ2V0IGZpZWxkIGRpbXMgd2l0aFxuICAgIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTIua2luZCBzcmMgaW5cbiAgICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTIubGF5b3V0IHNyYyBpblxuICAgICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIGRpbXMgfmY6SW50LnByZWQgaW5cbiAgICAgIFNlcXVlbmNlLmluaXQgKEZpZWxkLmdldCBmaWVsZCBkaW1zKSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICAgIGxldCBza2lwIGkgPSBpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMSBpblxuICAgICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGRpbTEgZGltMiAtPlxuICAgICAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIHsgZGltMTsgZGltMiB9IH5mOnNraXAgaW5cbiAgICAgICAgICBzcmMue2RpbTEsIGRpbTJ9KSlcbiAgaW5cbiAgZnVuIHNyYyAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTEgc3JjOyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMiBzcmMgXVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxubGV0IGZsb2F0NjRfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiBOb25lKVxuICAgICAgICAoU2VxdWVuY2UubWFwIH5mOk9wdGlvbi5yZXR1cm4gKHNocmluayB2YWx1ZV90IHZhbHVlKSkpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGZpeGVkX3BvaW50IChmdW4gbGlzdF90IC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiB0YWlsXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBlbHRfdCBoZWFkKSB+ZjooZnVuIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgbGlzdF90IHRhaWwpIH5mOihmdW4gdGFpbCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgXSkpXG47O1xuXG5sZXQgc3RyaW5nID0gbWFwIChsaXN0IGNoYXIpIH5mOlN0cmluZy5vZl9jaGFyX2xpc3QgfmZfaW52ZXJzZTpTdHJpbmcudG9fbGlzdFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmcgfmZfaW52ZXJzZTpCeXRlcy50b19zdHJpbmdcbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3QgfmZfaW52ZXJzZTpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlIH5mX2ludmVyc2U6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsIH5mX2ludmVyc2U6TGF6eS5mb3JjZVxuXG5sZXQgc2V4cCA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2hyaW5rZXIgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBfIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IFNleHAuTGlzdCBsIC0+XG4gICAgICAgIGxldCBzaHJpbmtfbGlzdCA9XG4gICAgICAgICAgc2hyaW5rIChsaXN0IHNocmlua2VyKSBsIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIGwgLT4gU2V4cC5MaXN0IGwpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaHJpbmtfdHJlZSA9IFNlcXVlbmNlLm9mX2xpc3QgbCBpblxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmlua19saXN0OyBzaHJpbmtfdHJlZSBdKSlcbjs7XG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6RWl0aGVyLmZpcnN0XG4gICAgfCBTZWNvbmQgc25kIC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6RWl0aGVyLnNlY29uZClcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcFxuICAgIChlaXRoZXIgb2tfdCBlcnJfdClcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG4gICAgfmZfaW52ZXJzZTooZnVuY3Rpb25cbiAgICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGFsaXN0ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3Bfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgYWxpc3QpIH5mOihmdW4gKGssIF8pIC0+XG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgaylcbiAgICBpblxuICAgIGxldCBzaHJpbmtfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUga2V5IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBrZXlfdCBrZXkpIH5mOihmdW4gc21hbGxlcl9rZXkgLT5cbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5OnNtYWxsZXJfa2V5IH5kYXRhXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgYE9rIHRyZWUgLT4gU29tZSB0cmVlXG4gICAgICAgICAgICAgfCBgRHVwbGljYXRlIC0+IE5vbmUpKSlcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZGF0YSA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBTZXF1ZW5jZS5tYXAgKHNocmluayBkYXRhX3QgZGF0YSkgfmY6KGZ1biBzbWFsbGVyX2RhdGEgLT5cbiAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnNldCB+Y29tcGFyYXRvciB0cmVlIH5rZXkgfmRhdGE6c21hbGxlcl9kYXRhKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3Bfa2V5czsgc2hyaW5rX2tleXM7IHNocmlua19kYXRhIF0pXG47O1xuXG5sZXQgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgbGlzdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3BfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgbGlzdCkgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2VsdHMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdCBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsgZWx0X3QgZWx0KSB+ZjooZnVuIHNtYWxsZXJfZWx0IC0+XG4gICAgICAgICAgICAgbWF0Y2ggU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5tZW0gfmNvbXBhcmF0b3IgdHJlZSBzbWFsbGVyX2VsdCB3aXRoXG4gICAgICAgICAgICAgfCB0cnVlIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGZhbHNlIC0+IFNvbWUgKFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuYWRkIHRyZWUgfmNvbXBhcmF0b3Igc21hbGxlcl9lbHQpKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3BfZWx0czsgc2hyaW5rX2VsdHMgXSlcbjs7XG5cbmxldCBtYXBfdCBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biBtYXBfdCAtPlxuICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbWFwX3QgaW5cbiAgICBsZXQgdCA9XG4gICAgICBtYXBcbiAgICAgICAgKG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X3QgZGF0YV90KVxuICAgICAgICB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBtYXBfdClcbjs7XG5cbmxldCBzZXRfdCBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHNldF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTZXQuY29tcGFyYXRvciBzZXRfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAoc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdClcbiAgICAgICAgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5mX2ludmVyc2U6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICAgIGluXG4gICAgc2hyaW5rIHQgc2V0X3QpXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBUZXN0X2ludGZcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBtb2R1bGUgU2VlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vbmRldGVybWluaXN0aWNcbiAgICAgIHwgRGV0ZXJtaW5pc3RpYyBvZiBzdHJpbmdcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBtb2R1bGUgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHNlcXVlbmNlID1cbiAgICAgIGxldCBwcmVmaXgsIHN1ZmZpeCA9IFNlcXVlbmNlLnNwbGl0X24gc2VxdWVuY2UgMTAwIGluXG4gICAgICBsZXQgcHJlZml4ID0gTGlzdC5tYXAgcHJlZml4IH5mOnNleHBfb2ZfZWx0IGluXG4gICAgICBsZXQgc3VmZml4ID1cbiAgICAgICAgbWF0Y2ggU2VxdWVuY2UuaXNfZW1wdHkgc3VmZml4IHdpdGhcbiAgICAgICAgfCB0cnVlIC0+IFtdXG4gICAgICAgIHwgZmFsc2UgLT4gWyBbJW1lc3NhZ2UgXCIuLi5cIl0gXVxuICAgICAgaW5cbiAgICAgIFNleHAuTGlzdCAocHJlZml4IEAgc3VmZml4KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBzZWVkIDogU2VlZC50XG4gICAgOyB0ZXN0X2NvdW50IDogaW50XG4gICAgOyBzaHJpbmtfY291bnQgOiBpbnRcbiAgICA7IHNpemVzIDogaW50IFBvdGVudGlhbGx5X2luZmluaXRlX3NlcXVlbmNlLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZGVmYXVsdF9jb25maWcgOiBDb25maWcudCA9XG4gIHsgc2VlZCA9IERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcbiAgOyB0ZXN0X2NvdW50ID1cbiAgICAgICgqIFtTcGxpdHRhYmxlX3JhbmRvbV0gaXMgYmFzZWQgb24gNjQtYml0IGFyaXRobWV0aWMsIGFuZCBzbyB0ZXN0cyBydW4gbXVjaCBzbG93ZXJcbiAgICAgICAgIG9uIDMyLWJpdCB0YXJnZXRzLiBXZSBydW4gYW4gb3JkZXIgb2YgbWFnbml0dWRlIGZld2VyIHRyaWFscyBzbyBhcyBub3QgdG9cbiAgICAgICAgIGNvbXBsZXRlbHkgYm9nIGRvd24gY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW1zLiAqKVxuICAgICAgKG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgIHwgVzMyIC0+IDFfMDAwKVxuICA7IHNocmlua19jb3VudCA9IDEwXzAwMFxuICA7IHNpemVzID0gU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCB+c3RhcnQ6YGluY2x1c2l2ZSAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICB9XG47O1xuXG5sZXQgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyA9XG4gIG1hdGNoIENvbmZpZy5zZWVkIGNvbmZpZyB3aXRoXG4gIHwgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgfCBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFN0cmluZy5oYXNoIHN0cmluZylcbjs7XG5cbmxldCBvbmVfc2l6ZV9wZXJfdGVzdCB+KGNvbmZpZyA6IENvbmZpZy50KSA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooY29uZmlnLnNpemVzLCAwKSB+ZjooZnVuIChzaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzKSAtPlxuICAgIG1hdGNoIG51bWJlcl9vZl9zaXplX3ZhbHVlcyA+PSBjb25maWcudGVzdF9jb3VudCB3aXRoXG4gICAgfCB0cnVlIC0+IE5vbmVcbiAgICB8IGZhbHNlIC0+XG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBzaXplcyB3aXRoXG4gICAgICAgfCBTb21lIChzaXplLCByZW1haW5pbmdfc2l6ZXMpIC0+XG4gICAgICAgICBTb21lIChzaXplLCAocmVtYWluaW5nX3NpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgKyAxKSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IGluc3VmZmljaWVudCBzaXplIHZhbHVlcyBmb3IgdGVzdCBjb3VudFwiXG4gICAgICAgICAgICAgICB+dGVzdF9jb3VudDooY29uZmlnLnRlc3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAgICAobnVtYmVyX29mX3NpemVfdmFsdWVzIDogaW50KV0pKVxuOztcblxubGV0IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciA9XG4gIGxldCByZWMgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yID1cbiAgICBtYXRjaCBzaHJpbmtfY291bnQgd2l0aFxuICAgIHwgMCAtPiBpbnB1dCwgZXJyb3JcbiAgICB8IF8gLT5cbiAgICAgIGxldCBzaHJpbmtfY291bnQgPSBzaHJpbmtfY291bnQgLSAxIGluXG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBhbHRlcm5hdGVzIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gaW5wdXQsIGVycm9yXG4gICAgICAgfCBTb21lIChhbHRlcm5hdGUsIGFsdGVybmF0ZXMpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhbHRlcm5hdGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG4gICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgYWx0ZXJuYXRlIGluXG4gICAgICAgICAgICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgYWx0ZXJuYXRlIGVycm9yKSlcbiAgaW5cbiAgbGV0IHNocmlua19jb3VudCA9IENvbmZpZy5zaHJpbmtfY291bnQgY29uZmlnIGluXG4gIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGlucHV0IGluXG4gIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuOztcblxubGV0IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgPVxuICBsZXQgcmFuZG9tID0gaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyBpblxuICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAoU2VxdWVuY2Uub2ZfbGlzdCBleGFtcGxlcylcbiAgICAob25lX3NpemVfcGVyX3Rlc3QgfmNvbmZpZ1xuICAgICB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBzaXplIC0+IEdlbmVyYXRvci5nZW5lcmF0ZSBnZW5lcmF0b3IgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5sZXQgd2l0aF9zYW1wbGUgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBnZW5lcmF0b3IgPVxuICBsZXQgc2VxdWVuY2UgPSBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yIGluXG4gIGYgc2VxdWVuY2Vcbjs7XG5cbmxldCByZXN1bHQgKHR5cGUgYSkgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBtID1cbiAgbGV0IChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9IG0gaW5cbiAgd2l0aF9zYW1wbGUgTS5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29uZmlnIH5leGFtcGxlcyB+ZjooZnVuIHNlcXVlbmNlIC0+XG4gICAgbWF0Y2hcbiAgICAgIFNlcXVlbmNlLmZvbGRfcmVzdWx0IHNlcXVlbmNlIH5pbml0OigpIH5mOihmdW4gKCkgaW5wdXQgLT5cbiAgICAgICAgbWF0Y2ggZiBpbnB1dCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoaW5wdXQsIGVycm9yKSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICAgIGxldCBzaHJpbmtlciA9IE0ucXVpY2tjaGVja19zaHJpbmtlciBpblxuICAgICAgbGV0IGlucHV0LCBlcnJvciA9IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciBpblxuICAgICAgRXJyb3IgKGlucHV0LCBlcnJvcikpXG47O1xuXG5sZXQgcnVuICh0eXBlIGEpIH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBtYXRjaCByZXN1bHQgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNKSB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogdGVzdCBmYWlsZWRcIiAoaW5wdXQgOiBNLnQpIChlcnJvciA6IEVycm9yLnQpXVxuOztcblxubGV0IHdpdGhfc2FtcGxlX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgPVxuICBsZXQgZiB4ID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmIHgpIGluXG4gIHdpdGhfc2FtcGxlIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciB8PiBPcl9lcnJvci5va19leG5cbjs7XG5cbmxldCBydW5fZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGggfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBydW4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBPYnNlcnZlcjBcblxubGV0IHVubWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgdCAoZiB4KSB+c2l6ZSB+aGFzaClcbmxldCBvZl9oYXNoX2ZvbGQgZiA9IGNyZWF0ZSAoZnVuIHggfnNpemU6XyB+aGFzaCAtPiBmIGhhc2ggeClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZm9yY2UgbGF6eV90KSB4IH5zaXplIH5oYXNoKVxuXG5sZXQgZml4ZWRfcG9pbnQgd3JhcCA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAod3JhcCAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IHVuaXQgPSBvcGFxdWVcbmxldCBib29sID0gb2ZfaGFzaF9mb2xkIEJvb2wuaGFzaF9mb2xkX3RcbmxldCBjaGFyID0gb2ZfaGFzaF9mb2xkIENoYXIuaGFzaF9mb2xkX3RcbmxldCBpbnQgPSBvZl9oYXNoX2ZvbGQgSW50Lmhhc2hfZm9sZF90XG5sZXQgaW50MzIgPSBvZl9oYXNoX2ZvbGQgSW50MzIuaGFzaF9mb2xkX3RcbmxldCBpbnQ2MyA9IG9mX2hhc2hfZm9sZCBJbnQ2My5oYXNoX2ZvbGRfdFxubGV0IGludDY0ID0gb2ZfaGFzaF9mb2xkIEludDY0Lmhhc2hfZm9sZF90XG5sZXQgbmF0aXZlaW50ID0gb2ZfaGFzaF9mb2xkIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxubGV0IGZsb2F0ID0gb2ZfaGFzaF9mb2xkIEZsb2F0Lmhhc2hfZm9sZF90XG5sZXQgc3RyaW5nID0gb2ZfaGFzaF9mb2xkIFN0cmluZy5oYXNoX2ZvbGRfdFxubGV0IHNleHAgPSBvZl9oYXNoX2ZvbGQgU2V4cC5oYXNoX2ZvbGRfdFxubGV0IGJpZ3N0cmluZyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9jaGFyKVxubGV0IGZsb2F0MzJfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0MzJfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGJ5dGVzID0gdW5tYXAgc3RyaW5nIH5mOkJ5dGVzLnRvX3N0cmluZ1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIH5zaXplIH5oYXNoIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpXG4gICAgfCBTZWNvbmQgc25kIC0+IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMikpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaCBpblxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2ggaW5cbiAgICBoYXNoKVxuOztcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgdW5tYXAgKGVpdGhlciBvcGFxdWUgdmFsdWVfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEZpcnN0ICgpXG4gICAgfCBTb21lIHZhbHVlIC0+IFNlY29uZCB2YWx1ZSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gbGlzdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICBHZW5lcmF0b3Iuc2l6ZXMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCAoKVxuICAgICAgfD4gR2VuZXJhdG9yLmdlbmVyYXRlIH5zaXplIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZDJfZXhuIGxpc3Qgc2l6ZXMgfmluaXQ6KGhhc2hfZm9sZF9pbnQgaGFzaCAwKSB+ZjooZnVuIGhhc2ggZWx0IHNpemUgLT5cbiAgICAgIG9ic2VydmUgZWx0X3QgZWx0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSkpKVxuOztcblxubGV0IGFycmF5IHQgPSB1bm1hcCAobGlzdCB0KSB+ZjpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSB1bm1hcCB0IH5mOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gdW5tYXAgdCB+ZjpMYXp5LmZvcmNlXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gZiB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgKCogRW1waXJpY2FsbHksIGRvdWJsaW5nIHRoZSBzaXplIHdoZW4gZ2VuZXJhdGluZyB0aGUgbGlzdCBvZiBpbnB1dHMgZ2l2ZXMgdXMgbXVjaFxuICAgICAgICAgYmV0dGVyIGNvdmVyYWdlIG9mIHRoZSBzcGFjZSBvZiBmdW5jdGlvbnMuICopXG4gICAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgKEdlbmVyYXRvci5zaXplcyAoKSkgfnNpemU6KHNpemUgKiAyKSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQgc2l6ZXMgfmluaXQ6aGFzaCB+ZjooZnVuIGhhc2ggc2l6ZSAtPlxuICAgICAgbGV0IHggPSBHZW5lcmF0b3IuZ2VuZXJhdGUgZG9tIH5zaXplIH5yYW5kb20gaW5cbiAgICAgIG9ic2VydmUgcm5nIChmIHgpIH5zaXplIH5oYXNoKSlcbjs7XG5cbmxldCBtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKGxpc3QgKGJvdGgga2V5X29icyBkYXRhX29icykpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3Rcbjs7XG5cbmxldCBzZXRfdHJlZSBlbHRfb2JzID0gdW5tYXAgKGxpc3QgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0XG5cbmxldCBtYXBfdCBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbjs7XG5cbmxldCBzZXRfdCBlbHRfb2JzID0gdW5tYXAgKHNldF90cmVlIGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiIsIm1vZHVsZSBHZW5lcmF0b3IgPSBHZW5lcmF0b3Jcbm1vZHVsZSBPYnNlcnZlciA9IE9ic2VydmVyXG5tb2R1bGUgU2hyaW5rZXIgPSBTaHJpbmtlclxubW9kdWxlIFRlc3QgPSBUZXN0XG5tb2R1bGUgRXhwb3J0ID0gRXhwb3J0XG5pbmNsdWRlIEV4cG9ydFxuXG4oKiovKiopXG5cbigqXyBUaGlzIG1vZHVsZSBpcyBleHBvc2VkIG9ubHkgdG8gbWFrZSBvY2FtbGRvYyBvdXRwdXQgbW9yZSByZWFkYWJsZS4gKilcbm1vZHVsZSBXaXRoX2Jhc2ljX3R5cGVzID0gV2l0aF9iYXNpY190eXBlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQmlnYXJyYXlfaGVscGVycyA9IEJpZ2FycmF5X2hlbHBlcnNcbmVuZFxuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBVaV9lZmZlY3RfaW50ZlxuXG50eXBlICdhIHQgPSAuLlxudHlwZSAnYSB0ICs9IElnbm9yZSA6IHVuaXQgdCB8IE1hbnkgOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcblxuKCogV2UgdXNlIHRoaXMgdGFibGUgZm9yIGRpc3BhdGNoaW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIGluIGFuIGVmZmljaWVudCB3YXkuICAqKVxudHlwZSBoaWRkZW4gPSBUIDogKCdhIHQgKiAoJ2EgLT4gdW5pdCkpIC0+IGhpZGRlblxuXG5sZXQgaGFuZGxlcnMgOiAoaGlkZGVuIC0+IHVuaXQpIEhhc2h0YmwuTShJbnQpLnQgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCkgfnNpemU6OFxuXG5tb2R1bGUgRGVmaW5lIChIYW5kbGVyIDogSGFuZGxlcikgOlxuICBTIHdpdGggdHlwZSBhY3Rpb24gOj0gSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6IEhhbmRsZXIuQWN0aW9uLnQgLT4gdW5pdCB0XG5cbiAgbGV0IGtleSA9IFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENdXG5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLmFkZF9leG4gaGFuZGxlcnMgfmtleSB+ZGF0YTooZnVuIGlucCAtPlxuICAgICAgbWF0Y2ggaW5wIHdpdGhcbiAgICAgIHwgVCAoQyB2YWx1ZSwgY2FsbGJhY2spIC0+XG4gICAgICAgIEhhbmRsZXIuaGFuZGxlIHZhbHVlO1xuICAgICAgICBjYWxsYmFjayAoKVxuICAgICAgfCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVW5yZWNvZ25pemVkIHZhcmlhbnRcIl0pXG4gIDs7XG5cbiAgbGV0IGluamVjdCB2ID0gQyB2XG5lbmRcblxubW9kdWxlIERlZmluZTEgKEhhbmRsZXIgOiBIYW5kbGVyMSkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgYWN0aW9uIDo9ICdhIEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiAnYSBIYW5kbGVyLkFjdGlvbi50IC0+ICdhIHRcblxuICBsZXQga2V5ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgbGV0IGNhbGxlZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICBsZXQgY2FsbGJhY2sgYSA9XG4gICAgICAgICAgaWYgIWNhbGxlZFxuICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJvbl9yZXNwb25zZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMhXCJcbiAgICAgICAgICBlbHNlIGNhbGxlZCA6PSB0cnVlO1xuICAgICAgICAgIGNhbGxiYWNrIGFcbiAgICAgICAgaW5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWUgfm9uX3Jlc3BvbnNlOmNhbGxiYWNrXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5sZXQgZ2V0X2tleSB0ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgdCkpXG5cbmxldCBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2IpKSA9XG4gIEhhc2h0YmwuZmluZF9leG4gaGFuZGxlcnMgKGdldF9rZXkgdCkgKFQgKHQsIGNiKSlcbjs7XG5cbm1vZHVsZSBQcmludF9zID0gRGVmaW5lIChzdHJ1Y3RcbiAgICBtb2R1bGUgQWN0aW9uID0gU2V4cFxuXG4gICAgbGV0IGhhbmRsZSBzID0gU3RkaW8ucHJpbnRfcyBzXG4gIGVuZClcblxubGV0IHByaW50X3MgPSBQcmludF9zLmluamVjdFxuXG4oKiBFZmZlY3RmdWwgdGhpbmdzICopXG50eXBlICdhIHQgKz1cbiAgfCBSZXR1cm4gOiAnYSAtPiAnYSB0XG4gIHwgTGF6eSA6ICdhIHQgTGF6eS50IC0+ICdhIHRcbiAgfCBCaW5kIDpcbiAgICAgIHsgdCA6ICdhIHRcbiAgICAgIDsgZiA6ICdhIC0+ICdiIHRcbiAgICAgIH1cbiAgICAgIC0+ICdiIHRcbiAgfCBNYXAgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2JcbiAgICAgIH1cbiAgICAgIC0+ICdiIHRcbiAgfCBOZXZlciA6ICdiIHRcbiAgfCBGdW4gOiAoY2FsbGJhY2s6KCdhIC0+IHVuaXQpIC0+IHVuaXQpIC0+ICdhIHRcblxubGV0IHJldHVybiBhID0gUmV0dXJuIGFcbmxldCBiaW5kICh0eXBlIGEpICh0IDogYSB0KSB+ZiA9IEJpbmQgeyB0OyBmIH1cbmxldCBtYXAgKHR5cGUgYSBiKSAodCA6IGEgdCkgfmYgOiBiIHQgPSBNYXAgeyB0OyBmIH1cbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgb2ZfZnVuIH5mID0gRnVuIGZcbmxldCBsYXp5XyBhID0gTGF6eSBhXG5cbmluY2x1ZGUgQmFzZS5Nb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCByZWMgZXZhbCA6IHR5cGUgYS4gYSB0IC0+IGNhbGxiYWNrOihhIC0+IHVuaXQpIC0+IHVuaXQgPVxuICBmdW4gdCB+Y2FsbGJhY2sgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRnVuIGYgLT4gZiB+Y2FsbGJhY2tcbiAgfCBJZ25vcmUgLT4gY2FsbGJhY2sgKClcbiAgfCBSZXR1cm4gYSAtPiBjYWxsYmFjayBhXG4gIHwgTGF6eSAobGF6eSB0KSAtPiBldmFsIHQgfmNhbGxiYWNrXG4gIHwgTWFueSBsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGV2YWwgfmNhbGxiYWNrOmlnbm9yZSk7XG4gICAgY2FsbGJhY2sgKClcbiAgfCBCaW5kIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGV2YWwgKGYgYSkgfmNhbGxiYWNrKVxuICB8IE1hcCB7IHQ7IGYgfSAtPiBldmFsIHQgfmNhbGxiYWNrOihmdW4gYSAtPiBjYWxsYmFjayAoZiBhKSlcbiAgfCBOZXZlciAtPiAoKVxuICB8IHQgLT4gaGFuZGxlX3JlZ2lzdGVyZWRfZXZlbnQgKFQgKHQsIGNhbGxiYWNrKSlcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZSA9IGV2YWwgfmNhbGxiYWNrOmlnbm9yZVxuXG4gIHR5cGUgaGlkZSA9IGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZVxuXG4gIGxldCBoYW5kbGVycyA9IGhhbmRsZXJzXG4gIGxldCBvZl9mdW4gPSBvZl9mdW5cbmVuZFxuXG5tb2R1bGUgQWR2YW5jZWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN5bmNfZnVuX2FyZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAncikgLT4gJ3IgdFxuICAgIGVuZFxuXG4gICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBvbl9yZXNwb25zZSAoZiBhKVxuICBlbmRcblxuICBtb2R1bGUgU3luY19mdW4gPSBEZWZpbmUxIChTeW5jX2Z1bl9hcmcpXG5cbiAgbGV0IG9mX3N5bmNfZnVuIGYgYSA9IFN5bmNfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ2FsbGJhY2sgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPVxuICAgICAgICB7IHJlcXVlc3QgOiAnYVxuICAgICAgICA7IG9uX3Jlc3BvbnNlIDogJ2IgLT4gdW5pdCB0XG4gICAgICAgIH1cblxuICAgICAgbGV0IG1ha2UgfnJlcXVlc3Qgfm9uX3Jlc3BvbnNlID0geyByZXF1ZXN0OyBvbl9yZXNwb25zZSB9XG4gICAgICBsZXQgcmVxdWVzdCB7IHJlcXVlc3Q7IF8gfSA9IHJlcXVlc3RcbiAgICAgIGxldCByZXNwb25kX3RvIHsgb25fcmVzcG9uc2U7IF8gfSByZXNwb25zZSA9IG9uX3Jlc3BvbnNlIHJlc3BvbnNlXG4gICAgZW5kXG5cbiAgICBsZXQgbWFrZSA6IHJlcXVlc3Q6J2EgLT4gZXZhbHVhdG9yOigoJ2EsICdiKSBDYWxsYmFjay50IC0+IHVuaXQgdCkgLT4gJ2IgdCA9XG4gICAgICBmdW4gfnJlcXVlc3QgfmV2YWx1YXRvciAtPlxuICAgICAgRXhwZXJ0Lm9mX2Z1biB+ZjooZnVuIH5jYWxsYmFjayAtPlxuICAgICAgICBsZXQgY2FsbGJhY2sgPVxuICAgICAgICAgIENhbGxiYWNrLm1ha2UgfnJlcXVlc3Qgfm9uX3Jlc3BvbnNlOihmdW4gcmVzcG9uc2UgLT5cbiAgICAgICAgICAgIGNhbGxiYWNrIHJlc3BvbnNlO1xuICAgICAgICAgICAgSWdub3JlKVxuICAgICAgICBpblxuICAgICAgICBFeHBlcnQuaGFuZGxlIChldmFsdWF0b3IgY2FsbGJhY2spKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdmFyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHN0YXRlID1cbiAgICAgICAgfCBFbXB0eSBvZiB7IG11dGFibGUgaGFuZGxlcnMgOiAoJ2EgLT4gdW5pdCkgbGlzdCB9XG4gICAgICAgIHwgRnVsbCBvZiAnYVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBzdGF0ZSByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiAoRW1wdHkgeyBoYW5kbGVycyA9IFtdIH0pXG5cbiAgICAgIGxldCB1cG9uIHQgaGFuZGxlciA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSB0IC0+IHQuaGFuZGxlcnMgPC0gaGFuZGxlciA6OiB0LmhhbmRsZXJzXG4gICAgICAgIHwgRnVsbCB4IC0+IGhhbmRsZXIgeFxuICAgICAgOztcblxuICAgICAgbGV0IGZpbGxfaWZfZW1wdHkgdCB4ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEZ1bGwgXyAtPiAoKVxuICAgICAgICB8IEVtcHR5IHsgaGFuZGxlcnMgfSAtPlxuICAgICAgICAgIExpc3QuaXRlciBoYW5kbGVycyB+ZjooZnVuIGhhbmRsZXIgLT4gaGFuZGxlciB4KTtcbiAgICAgICAgICB0IDo9IEZ1bGwgeFxuICAgICAgOztcblxuICAgICAgbGV0IHBlZWsgdCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSBfIC0+IE5vbmVcbiAgICAgICAgfCBGdWxsIHggLT4gU29tZSB4XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuX2FyZyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IgU3Zhci50KSAtPiAnciB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBTdmFyLnVwb24gKGYgYSkgb25fcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1biA9IERlZmluZTEgKFN2YXJfZnVuX2FyZylcblxuICAgIGxldCBvZl9zdmFyX2Z1biBmIGEgPSBTdmFyX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gICAgbW9kdWxlIFF1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxLCAncikgcnBjID1cbiAgICAgICAgeyBxdWVyeSA6ICdxXG4gICAgICAgIDsgcmVzcG9uc2UgOiAnciBTdmFyLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncSwgJ3IpIHQgPSAoJ3EsICdyKSBycGMgbGlzdCByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiBbXVxuXG4gICAgICBsZXQgYWRkX3F1ZXJ5IHQgcXVlcnkgPVxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBTdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICB0IDo9IHsgcXVlcnk7IHJlc3BvbnNlIH0gOjogIXQ7XG4gICAgICAgIHJlc3BvbnNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIHQgPVxuICAgICAgICBMaXN0Lm1hcCAhdCB+ZjooZnVuIHsgcXVlcnk7IHJlc3BvbnNlID0gXyB9IC0+IHF1ZXJ5KVxuICAgICAgOztcblxuICAgICAgdHlwZSAnciBtYXliZV9yZXNwb25kID1cbiAgICAgICAgfCBOb19yZXNwb25zZV95ZXRcbiAgICAgICAgfCBSZXNwb25kIG9mICdyXG5cbiAgICAgIGxldCBtYXliZV9yZXNwb25kIHQgfmYgPVxuICAgICAgICB0XG4gICAgICAgIDo9IExpc3QuZmlsdGVyICF0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgfSAtPlxuICAgICAgICAgIG1hdGNoIGYgcXVlcnkgd2l0aFxuICAgICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0IC0+IHRydWVcbiAgICAgICAgICB8IFJlc3BvbmQgcmVzcCAtPlxuICAgICAgICAgICAgU3Zhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIHJlc3A7XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2ZfcXVlcnlfcmVzcG9uc2VfdHJhY2tlciBxcnQgPSBvZl9zdmFyX2Z1biAoUXVlcnlfcmVzcG9uc2VfdHJhY2tlci5hZGRfcXVlcnkgcXJ0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEFkdmFuY2VkXG4iLCJtb2R1bGUgRG9tX2h0bWwgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbC5Eb21faHRtbFxuICBvcGVuIEpzX29mX29jYW1sLkpzXG5cbiAgKCogTm8ganNfb2Zfb2NhbWwgUFIgeWV0LiAqKVxuICBjbGFzcyB0eXBlIHdoZWVsRXZlbnQgPSBvYmplY3RcbiAgICBpbmhlcml0IG1vdXNlRXZlbnRcbiAgICBtZXRob2QgZGVsdGFYIDogZmxvYXQgcmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZWx0YVkgOiBmbG9hdCByZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbHRhWiA6IGZsb2F0IHJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVsdGFNb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCB0eXBlcmVwXVxuXG4gIHZhbCBzaWduZWQgOiBib29sXG4gIHZhbCBudW1fYml0cyA6IGludFxuICB2YWwgbnVtX2J5dGVzIDogaW50XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuXG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE8gOiBzaWdcbiAgICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgbW9kdWxlIFdyYXAgOiBzaWdcbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gICAgZW5kXG4gIGVuZFxuXG5lbmRcblxubGV0IHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggPVxuICBCYXNlLnJhaXNlX3MgWyVtZXNzYWdlIChtb2RfbmFtZSBeIFwiOiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWRcIikgfl86KHRvX3N0cmluZyB4KV1cbltAQGNvbGRdXG47O1xuXG5sZXQgdHJ1bmNfdW5zaWduZWQgOiB0eXBlIGEgYi4gY29udjooYSAtPiBiKSAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKSAtPiBtYXNrOmEgLT4gYSAtPiBiID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgeCAtPiBjb252IChsb2dhbmQgeCBtYXNrKVxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fdW5zaWduZWRcbiAgOiB0eXBlIGEgYi5cbiAgICBjb252OihhIC0+IGIpXG4gICAgLT4gbG9nYW5kOihhIC0+IGEgLT4gYSlcbiAgICAtPiBtYXNrOmFcbiAgICAtPiBlcXVhbDooYSAtPiBhIC0+IGJvb2wpXG4gICAgLT4gbW9kX25hbWU6c3RyaW5nXG4gICAgLT4gdG9fc3RyaW5nOihhIC0+IHN0cmluZylcbiAgICAtPiBhXG4gICAgLT4gYlxuICA9XG4gIGZ1biB+Y29udiB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4IC0+XG4gIGxldCB5ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBpblxuICBpZiBlcXVhbCB4IHkgdGhlbiBjb252IHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IHRydW5jX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdF9yaWdodDooYSAtPiBpbnQgLT4gYSkgLT4gc2hpZnQ6aW50IC0+IGEgLT4gYVxuICA9XG4gIGZ1biB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggLT4gc2hpZnRfcmlnaHQgKHNoaWZ0X2xlZnQgeCBzaGlmdCkgc2hpZnRcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZXhuX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0OmludFxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG47O1xuXG5sZXQgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIGlmIGdyZWF0ZXJfZXF1YWwgeCB6ZXJvIHRoZW4geCBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPVxuICByYWlzZSAoU2V4cGxpYjAuU2V4cF9jb252Lk9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG47O1xuXG5tb2R1bGUgUmVwcjMyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliLlN5cy5JbW1lZGlhdGU2NC5NYWtlIChCYXNlLkludCkgKEJhc2UuSW50MzIpXG5cbiAgbGV0IHRvX2ludDMyICh4IDogdCkgOiBCYXNlLkludDMyLnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4geFxuICA7O1xuXG4gICgqIHNpZ24tZXh0ZW5kaW5nIGNvbnZlcnNpb24gdG8gaW50NjQgKilcbiAgbGV0IHRvX2ludDY0ICh4IDogdCkgOiBCYXNlLkludDY0LnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50NjQub2ZfaW50IHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQzMiB4XG4gIDs7XG5lbmRcblxuKCogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gdHlwZXMgKilcbnR5cGUgaW50OCA9IGludFxudHlwZSB1aW50OCA9IGludFxudHlwZSBpbnQxNiA9IGludFxudHlwZSB1aW50MTYgPSBpbnRcbnR5cGUgaW50MzIgPSBSZXByMzIudFxudHlwZSB1aW50MzIgPSBSZXByMzIudFxudHlwZSBpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSB1aW50NjMgPSBCYXNlLkludDYzLnRcbnR5cGUgaW50NjQgPSBCYXNlLkludDY0LnRcbnR5cGUgdWludDY0ID0gQmFzZS5JbnQ2NC50XG5cbm1vZHVsZSBJbnQ4ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gLTEyOFxuICBsZXQgbWF4X3ZhbHVlID0gMTI3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ4XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSAyNTVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX3RydW5jIHggPSB0cnVuYzY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4bjY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDhfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMzI3NjhcbiAgbGV0IG1heF92YWx1ZSA9IDMyNzY3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gIGxldCBtb2RfbmFtZSA9IFwiSW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9pbnQzMl90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50MzIudG9faW50X3RydW5jIChSZXByMzIudG9faW50MzIgeCkpXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF9leG4gKFJlcHIzMi50b19pbnQzMiB4KSkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDE2ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gNjU1MzVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgbGV0IG1hc2sgPSAweEZGRkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDE2XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG42NCB4ID1cbiAgICBleG5fdW5zaWduZWRcbiAgICAgIH5jb252XG4gICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICB+bWFzazptYXNrNjRcbiAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICB+bW9kX25hbWVcbiAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFja2VuZDMyX1MgPSBzaWdcbiAgbW9kdWxlIFNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzIgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDMyIDogdCAtPiBCYXNlLkludDMyLnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50OCA6IGludDggLT4gdFxuICAgIHZhbCBvZl9pbnQxNiA6IGludDE2IC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfdHJ1bmMgOiBpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX2ludDYzX2V4biA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX2ludDY0X2V4biA6IGludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQzMl93cmFwIDogdWludDMyIC0+IHRcbiAgICB2YWwgb2ZfdWludDMyX2V4biA6IHVpbnQzMiAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSBVbnNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfdHJ1bmMgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDMyX2V4biA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfdHJ1bmMgOiB0IC0+IEJhc2UuSW50MzIudFxuICAgIHZhbCB0b19iYXNlX2ludDMyX2V4biA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfdHJ1bmMgOiBCYXNlLkludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDY0X2V4biA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50NjQgOiB0IC0+IEJhc2UuSW50NjQudFxuICAgIHZhbCBvZl9iYXNlX2ludF9leG4gOiBCYXNlLkludC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnRfZXhuIDogdCAtPiBCYXNlLkludC50XG5cbiAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQ4IDogdWludDggLT4gdFxuICAgIHZhbCBvZl91aW50MTYgOiB1aW50MTYgLT4gdFxuICAgIHZhbCBvZl91aW50NjNfdHJ1bmMgOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjNfZXhuIDogdWludDYzIC0+IHRcbiAgICB2YWwgb2ZfdWludDY0X3RydW5jIDogdWludDY0IC0+IHRcbiAgICB2YWwgb2ZfdWludDY0X2V4biA6IHVpbnQ2NCAtPiB0XG5cbiAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQzMl93cmFwIDogaW50MzIgLT4gdFxuICAgIHZhbCBvZl9pbnQzMl9leG4gOiBpbnQzMiAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCYWNrZW5kMzIgOiBzaWdcbiAgdmFsIGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKVxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBJID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyBCYXNlLkludDMyLm1pbl92YWx1ZVxuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWF4X3ZhbHVlXG4gICAgICBsZXQgc2lnbmVkID0gdHJ1ZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgICAgIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gICAgICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIkludDMyXCJcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAgICAgKCogVXRpbGl0aWVzICopXG4gICAgICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9ICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDMyX3dyYXAgeCA9IHRydW5jIHhcbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggPSBleG4geFxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50Lm9mX2ludDY0X3RydW5jIDQyOTQ5NjcyOTVMXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICAgICAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gICAgICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gICAgICBsZXQgbWFzayA9IEJhc2UuSW50NjQudG9faW50X3RydW5jIDB4RkZGRkZGRkZMXG4gICAgICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICAgICAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgICAgIGxldCBlcXVhbDY0ID0gQmFzZS5JbnQ2NC5lcXVhbFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAgICAgKCogVXRpbGl0aWVzICopXG4gICAgICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgZXhuNjQgeCA9XG4gICAgICAgIGV4bl91bnNpZ25lZFxuICAgICAgICAgIH5jb252XG4gICAgICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICAgICAgfm1vZF9uYW1lXG4gICAgICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgICAgIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPVxuICAgICAgICBCYXNlLkludDY0LnRvX2ludF90cnVuYyAobG9nYW5kNjQgKEJhc2UuSW50NjQub2ZfaW50MzIgeCkgbWFzazY0KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IEJhc2UuSW50LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludC4oIDw9ICkgeCAoQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgMjE0NzQ4MzY0N0wpXG4gICAgICAgIHRoZW4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBOID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IEJhc2UuSW50NjMudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IEJhc2UuSW50NjQudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4IDogdCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50MzIuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50MzIuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQzMi4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludDMyLiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDMyLiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQzMi4oIC8gKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IGNvbXBhcmUgeCB5ID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2NvbXBhcmUgeCB5IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IC0xbFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDMyLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMICYmIEJhc2UuSW50NjQuKCA8PSApIHggNDI5NDk2NzI5NUxcbiAgICAgICAgdGhlbiBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50MzIudG9faW50NjQgeCkgMHhGRkZGRkZGRkxcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPVxuICAgICAgICBCYXNlLkludDMyLm9mX2ludF9leG4geFxuICAgICAgICB8PiBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZ1xuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgICAgfD4gQmFzZS5JbnQzMi50b19pbnRfZXhuXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjMudG9faW50NjQgeClcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4gKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IG9mX2Jhc2VfaW50NjRfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVsdVwiIHgpXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQzMi50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgICAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVsdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICAgICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICAgICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgICAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2RpdlxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKSA9XG4gICAgbWF0Y2ggUmVwcjMyLnJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IChtb2R1bGUgSSA6IEJhY2tlbmQzMl9TKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIE4gOiBCYWNrZW5kMzJfUylcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5TaWduZWRcbmVuZFxuXG5tb2R1bGUgVWludDMyID0gc3RydWN0XG4gIG1vZHVsZSBNID0gKHZhbCBCYWNrZW5kMzIuaW1wbCA6IEJhY2tlbmQzMl9TKVxuICBpbmNsdWRlIE0uVW5zaWduZWRcbmVuZFxuXG5tb2R1bGUgSW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGltbWVkaWF0ZTY0XSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDYzLm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2M1xuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDYzXCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjNfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2My4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2My4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDYzLiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2My4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjMuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2My4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDYzLiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgKCogeCBhbmQgeSBhcmUgc2lnbi1leHRlbmRlZCwgd2hpY2ggcHJlc2VydmVzIHRoZSBoaWdoIGJpdCAqKVxuICAgIFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9jb21wYXJlIChCYXNlLkludDYzLnRvX2ludDY0IHgpIChCYXNlLkludDYzLnRvX2ludDY0IHkpXG4gIDs7XG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDYzXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDYzXG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2My4oID49IClcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50NjNcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IGV4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDYzLnRvX2ludDY0IHgpIDB4N0ZGRkZGRkZGRkZGRkZGRkxcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgKFVpbnQzMi50b19iYXNlX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuICh4IDogdWludDY0KSA6IHQgPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiICh0b19iYXNlX2ludDY0IHgpKVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgb2ZfYmFzZV9pbnQ2NF9leG4gd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDYzLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG5cbiAgICAgIGxldCAoIC8gKSB4IHkgPVxuICAgICAgICBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDY0LiggLyApICh0b19iYXNlX2ludDY0IHgpICh0b19iYXNlX2ludDY0IHkpKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDY0Lm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDY0XCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjQub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzIHggPSBCYXNlLkludDYzLnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50NjQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50NjQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQ2NC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50NjQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludDY0LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50NjQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQ2NC4oIC8gKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCBjb21wYXJlID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmVcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IC0xTFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2NFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gVWludDMyLnRvX2Jhc2VfaW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjMgKHggOiB1aW50NjMpIDogaW50NjQgPVxuICAgIEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiIHgpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBGdW4uaWQgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfZGl2XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgR2V0ID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDggOiB0IC0+IHBvczppbnQgLT4gaW50OFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDhcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MTZcbiAgdmFsIGdldF9pbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcbiAgdmFsIGdldF91aW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IGludDMyXG4gIHZhbCBnZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG4gIHZhbCBnZXRfdWludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMlxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NFxuICB2YWwgZ2V0X2ludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuICB2YWwgZ2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4IC0+IHVuaXRcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ4IDogdCAtPiBwb3M6aW50IC0+IHVpbnQ4IC0+IHVuaXRcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2IC0+IHVuaXRcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2IC0+IHVuaXRcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X2ludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IGludDMyIC0+IHVuaXRcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyIC0+IHVuaXRcbiAgdmFsIHNldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyIC0+IHVuaXRcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDY0IC0+IHVuaXRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0IC0+IHVuaXRcbiAgdmFsIHNldF91aW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXRfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdXNlIG5hdGl2ZSBlbmRpYW5uZXNzIChoZW5jZSB0aGUgYF9uZWAgc3VmZml4KS4gKilcbiAgdmFsIGdldF91aW50OCA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50XG4gIHZhbCBnZXRfaW50MzJfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDMyLnRcbiAgdmFsIGdldF9pbnQ2NF9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50NjQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgc2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudCAtPiB1bml0XG4gIHZhbCBzZXRfdWludDE2X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDMyLnQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50IC0+IHVuaXRcbmVuZFxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBTdGRsaWIuSW50MzIudCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IFN0ZGxpYi5JbnQ2NC50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5tb2R1bGUgTWFrZV9nZXQgKEYgOiBHZXRfZnVuY3Rpb25zKSA6IEdldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50OCB0IH5wb3MgPSBJbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ4IHQgfnBvcyA9IFVpbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBJbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDE2X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBJbnQzMi5vZl9iYXNlX2ludDMyIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDMyX2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgVWludDMyLm9mX2Jhc2VfaW50MzJfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeFxuICA7O1xuXG4gIGxldCBnZXRfaW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50NjRfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDY0X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIFVpbnQ2NC5vZl9iYXNlX2ludDY0X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIE1ha2Vfc2V0IChGIDogU2V0X2Z1bmN0aW9ucykgOiBTZXQgd2l0aCB0eXBlIHQgOj0gRi50ID0gc3RydWN0XG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDggdCB+cG9zIHggPSBGLnNldF91aW50OCB0IHBvcyB4XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50OCB0IH5wb3MgeCA9IHNldF91aW50OCB0IH5wb3MgKFVpbnQ4Lm9mX2ludDhfd3JhcCB4KVxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQxNl9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF91aW50MTZfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHggaW5cbiAgICBGLnNldF91aW50MTZfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQxNl9sZSB0IH5wb3MgeCA9IHNldF91aW50MTZfbGUgdCB+cG9zIChVaW50MTYub2ZfaW50MTZfd3JhcCB4KVxuICBsZXQgc2V0X2ludDE2X2JlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9iZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDMyX2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQzMl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBJbnQzMi50b19iYXNlX2ludDMyIHggaW5cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4IGluXG4gICAgRi5zZXRfaW50MzJfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQzMl9sZSB0IH5wb3MgeCA9IHNldF9pbnQzMl9sZSB0IH5wb3MgKEludDMyLm9mX3VpbnQzMl93cmFwIHgpXG4gIGxldCBzZXRfdWludDMyX2JlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2JlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50NjRfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQ2NF9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQ2NF9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50NjRfbGUgdCB+cG9zIHggPSBzZXRfaW50NjRfbGUgdCB+cG9zIChJbnQ2NC5vZl91aW50NjRfd3JhcCB4KVxuICBsZXQgc2V0X3VpbnQ2NF9iZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9iZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBCeXRlczBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG4gIGV4dGVybmFsIHNldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG4gIGV4dGVybmFsIHNldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMpXG4gIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlczBVbnNhZmUpXG4gICAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMwVW5zYWZlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5lbmRcblxubW9kdWxlIFN0cmluZzBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnRcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChTdHJpbmcwKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChTdHJpbmcwVW5zYWZlKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgQmlnc3RyaW5nMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgICggY2hhclxuICAgICwgU3RkbGliLkJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0XG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuY19sYXlvdXQgKVxuICAgICAgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIGdldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoKCdhLCAnYiwgJ2MpIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50XG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbiAgZXh0ZXJuYWwgZGltIDogKCgnYSwgJ2IsICdjKSB0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbmVuZFxuXG5pbmNsdWRlIEJpZ3N0cmluZzBcblxuZXh0ZXJuYWwgYXV4X2NyZWF0ZSA6IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlczppbnQgLT4gc2l6ZTppbnQgLT4gdCA9IFwiYmlnc3RyaW5nX2FsbG9jXCJcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBPbmUgbmVlZHMgdG8gdXNlIFtDYW1sLlN5cy53b3JkX3NpemVdIHNvIHRoYXQgaXRzIHZhbHVlIGlzIGtub3duIGF0IGNvbXBpbGUtdGltZS4gKilcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN0ZGxpYi5TeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTdGRsaWIuU3lzLmJpZ19lbmRpYW5cbmxldCBub3Rfb25fMzJiaXQgPSBTdGRsaWIuU3lzLndvcmRfc2l6ZSA+IDMyXG5cbmxldCBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyBzaXplID1cbiAgbGV0IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyA9XG4gICAgT3B0aW9uLnZhbHVlIG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+ZGVmYXVsdDooLTEpXG4gIGluXG4gICgqIFRoaXMgY2hlY2sgaXMgaW1wb3J0YW50IGJlY2F1c2UgW2F1eF9jcmVhdGUgfnNpemU6KC0xKV0gcmFpc2VzIFtPdXRfb2ZfbWVtb3J5XSwgd2hpY2hcbiAgICAgY291bGQgYmUgY29uZnVzaW5nIGR1cmluZyBkZWJ1Z2dpbmcuICopXG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJjcmVhdGU6IHNpemUgPSAlZCA8IDBcIiBzaXplKTtcbiAgYXV4X2NyZWF0ZSB+bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5zaXplXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG5leHRlcm5hbCBpc19tbWFwcGVkIDogdCAtPiBib29sID0gXCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViXCIgW0BAbm9hbGxvY11cblxubGV0IGluaXQgbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdC57aX0gPC0gZiBpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBjaGVja19hcmdzX3Nsb3cgfmxvYyB+cG9zIH5sZW4gKGJzdHIgOiB0KSA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAobG9jIF4gXCI6IHBvcyA8IDBcIik7XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyAobG9jIF4gXCI6IGxlbiA8IDBcIik7XG4gIGxldCBic3RyX2xlbiA9IGxlbmd0aCBic3RyIGluXG4gICgqIEJlIGNhcmVmdWwgd2l0aCBvdmVyZmxvdyEgIFdlIGNvdWxkIGhhdmUgYm9nb25zIGxpa2UgW3BvcyA9IEludC5tYXhfdmFsdWVdIG9yIFtsZW4gPVxuICAgICBJbnQubWF4X3ZhbHVlXSBwYXNzZWQgYnkgdGhlIHVzZXIuICopXG4gIGlmIGJzdHJfbGVuIC0gcG9zIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaWdzdHJpbmcuJXM6IGxlbmd0aChic3RyKSA8IHBvcyArIGxlblwiIGxvYylcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gY2hlY2tfYXJncyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgbGV0IG9wZW4gQm9vbC5Ob25fc2hvcnRfY2lyY3VpdGluZyBpblxuICBsZXQgYnN0cl9sZW4gPSBsZW5ndGggYnN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgYnN0cl9sZW4gLSBwb3MgPCBsZW4gdGhlbiBjaGVja19hcmdzX3Nsb3cgfmxvYyB+cG9zIH5sZW4gYnN0clxuOztcblxubGV0IGdldF9vcHRfbGVuIGJzdHIgfnBvcyA9IGZ1bmN0aW9uXG4gIHwgU29tZSBsZW4gLT4gbGVuXG4gIHwgTm9uZSAtPiBsZW5ndGggYnN0ciAtIHBvc1xuOztcblxuKCogQmxpdHRpbmcgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgOiAgc3JjOih0W0Bsb2NhbF9vcHRdKVxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6KHRbQGxvY2FsX29wdF0pXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmlnc3RyaW5nX2JsaXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKiBFeHBvc2luZyB0aGUgZXh0ZXJuYWwgdmVyc2lvbiBvZiBnZXQvc2V0IHN1cHBvcnRzIGJldHRlciBpbmxpbmluZy4gKilcbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuXG5tb2R1bGUgQmlnc3RyaW5nX3NlcXVlbmNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5lbmRcblxubW9kdWxlIEJ5dGVzX3NlcXVlbmNlID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5lbmRcblxuaW5jbHVkZSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbm1vZHVsZSBGcm9tX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJ5dGVzX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJpZ3N0cmluZ19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCeXRlc19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzooc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgVG9fYnl0ZXNcbiAgaW5jbHVkZSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChCaWdzdHJpbmcwKSAoVG9fYnl0ZXMpXG5lbmRcblxubGV0IG9mX3N0cmluZyA9IEZyb21fc3RyaW5nLnN1Ym9cbmxldCBvZl9ieXRlcyA9IEZyb21fYnl0ZXMuc3Vib1xubGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy5zdWJvXG5sZXQgdG9fYnl0ZXMgPSBUb19ieXRlcy5zdWJvXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG5sZXQgdF9vZl9zZXhwIDogU2V4cC50IC0+IHQgPSBmdW5jdGlvblxuICB8IEF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIFNleHBsaWIwLlNleHBfY29udi5vZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNvcHkgdCA6IHQgPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbmxldCBjb25jYXQgPVxuICBsZXQgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggc3JjIGluXG4gICAgbGV0IHNyY19wb3MgPSAwIGluXG4gICAgbGV0IGRzdF9wb3MgPSAhZHN0X3Bvc19yZWYgaW5cbiAgICBibGl0IH5kc3QgfmRzdF9wb3MgfnNyYyB+c3JjX3BvcyB+bGVuO1xuICAgIGRzdF9wb3NfcmVmIDo9IGRzdF9wb3MgKyBsZW5cbiAgaW5cbiAgZnVuID9zZXAgbGlzdCAtPlxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gY3JlYXRlIDBcbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbGV0IGhlYWRfbGVuID0gbGVuZ3RoIGhlYWQgaW5cbiAgICAgIGxldCBzZXBfbGVuID0gT3B0aW9uLnZhbHVlX21hcCBzZXAgfmY6KGZ1biB0IC0+IGxlbmd0aCB0KSB+ZGVmYXVsdDowIGluXG4gICAgICBsZXQgdGFpbF9jb3VudCA9IExpc3QubGVuZ3RoIHRhaWwgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBoZWFkX2xlblxuICAgICAgICArIChzZXBfbGVuICogdGFpbF9jb3VudClcbiAgICAgICAgKyBMaXN0LnN1bSAobW9kdWxlIEludCkgdGFpbCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQpXG4gICAgICBpblxuICAgICAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBkc3RfcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBhcHBlbmQgfnNyYzpoZWFkIH5kc3QgfmRzdF9wb3NfcmVmO1xuICAgICAgTGlzdC5pdGVyIHRhaWwgfmY6KGZ1biBzcmMgLT5cbiAgICAgICAgKG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBzZXAgLT4gYXBwZW5kIH5zcmM6c2VwIH5kc3QgfmRzdF9wb3NfcmVmKTtcbiAgICAgICAgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgYXNzZXJ0ICghZHN0X3Bvc19yZWYgPSBsZW4pO1xuICAgICAgZHN0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtc2V0IDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gY2hhciAtPiB1bml0ID0gXCJiaWdzdHJpbmdfbWVtc2V0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbXNldCB0IH5wb3MgfmxlbiBjID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpO1xuICB1bnNhZmVfbWVtc2V0IHQgfnBvcyB+bGVuIGNcbjs7XG5cbigqIENvbXBhcmlzb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcFxuICA6ICB0XG4gIC0+IHBvczE6aW50XG4gIC0+IHRcbiAgLT4gcG9zMjppbnRcbiAgLT4gbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1jbXBfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMSB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0MSk7XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MyIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQyKTtcbiAgdW5zYWZlX21lbWNtcCB0MSB+cG9zMSB0MiB+cG9zMiB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX2J5dGVzXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gQnl0ZXMudFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgIH5wb3M6cG9zMlxuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCeXRlcy5sZW5ndGggYnl0ZXMpO1xuICB1bnNhZmVfbWVtY21wX2J5dGVzIHQxIH5wb3MxIGJ5dGVzIH5wb3MyIH5sZW5cbjs7XG5cbmxldCBjb21wYXJlIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCBsZW4gPSBJbnQubWluIGxlbjEgbGVuMiBpblxuICAgIG1hdGNoIHVuc2FmZV9tZW1jbXAgdDEgfnBvczE6MCB0MiB+cG9zMjowIH5sZW4gd2l0aFxuICAgIHwgMCAtPiBpZiBsZW4xIDwgbGVuMiB0aGVuIC0xIGVsc2UgaWYgbGVuMSA+IGxlbjIgdGhlbiAxIGVsc2UgMFxuICAgIHwgbiAtPiBuKVxuOztcblxuZXh0ZXJuYWwgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4gIDogIEhhc2guc3RhdGVcbiAgLT4gdFxuICAtPiBIYXNoLnN0YXRlXG4gID0gXCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcIlxuW0BAbm9hbGxvY11cblxubGV0IF9tYWtpbmdfc3VyZV90aGVfQ19iaW5kaW5nX3Rha2VzX2FuX2ludCAoeCA6IEhhc2guc3RhdGUpID0gKHggOj4gaW50KVxubGV0IGhhc2hfZm9sZF90ID0gaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG5sZXQgaGFzaCA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5vZl9mb2xkIGhhc2hfZm9sZF90XG5cbnR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbmxldCBlcXVhbCB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBsZW4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IGxlbjIgPSBsZW5ndGggdDIgaW5cbiAgICBJbnQuZXF1YWwgbGVuMSBsZW4yICYmIEludC5lcXVhbCAodW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbjpsZW4xKSAwKVxuOztcblxuKCogU2VhcmNoICopXG5cbmV4dGVybmFsIHVuc2FmZV9maW5kIDogdCAtPiBjaGFyIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBpbnQgPSBcImJpZ3N0cmluZ19maW5kXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1tZW1cbiAgOiAgaGF5c3RhY2s6dFxuICAtPiBuZWVkbGU6dFxuICAtPiBoYXlzdGFja19wb3M6aW50XG4gIC0+IGhheXN0YWNrX2xlbjppbnRcbiAgLT4gbmVlZGxlX3BvczppbnRcbiAgLT4gbmVlZGxlX2xlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlXCIgXCJiaWdzdHJpbmdfbWVtbWVtXCJcbltAQG5vYWxsb2NdXG5cbmxldCBmaW5kID8ocG9zID0gMCkgP2xlbiBjaHIgYnN0ciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiBic3RyIH5wb3MgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcImZpbmRcIiB+cG9zIH5sZW4gYnN0cjtcbiAgbGV0IHJlcyA9IHVuc2FmZV9maW5kIGJzdHIgY2hyIH5wb3MgfmxlbiBpblxuICBpZiByZXMgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcmVzXG47O1xuXG5sZXQgbWVtbWVtXG4gICAgICB+aGF5c3RhY2tcbiAgICAgIH5uZWVkbGVcbiAgICAgID8oaGF5c3RhY2tfcG9zID0gMClcbiAgICAgID9oYXlzdGFja19sZW5cbiAgICAgID8obmVlZGxlX3BvcyA9IDApXG4gICAgICA/bmVlZGxlX2xlblxuICAgICAgKClcbiAgPVxuICBsZXQgaGF5c3RhY2tfbGVuID0gZ2V0X29wdF9sZW4gaGF5c3RhY2sgfnBvczpoYXlzdGFja19wb3MgaGF5c3RhY2tfbGVuIGluXG4gIGxldCBuZWVkbGVfbGVuID0gZ2V0X29wdF9sZW4gbmVlZGxlIH5wb3M6bmVlZGxlX3BvcyBuZWVkbGVfbGVuIGluXG4gIGxldCByZXMgPVxuICAgIHVuc2FmZV9tZW1tZW0gfmhheXN0YWNrIH5uZWVkbGUgfmhheXN0YWNrX3BvcyB+aGF5c3RhY2tfbGVuIH5uZWVkbGVfcG9zIH5uZWVkbGVfbGVuXG4gIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbigqIHZpbTogc2V0IGZpbGV0eXBlPW9jYW1sIDogKilcblxuKCogQmluYXJ5LXBhY2tpbmcgbGlrZSBhY2Nlc3NvcnMgKilcblxuZXh0ZXJuYWwgaW50MzJfb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIGludDMyX3RvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBpbnQ2NF9vZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50NjRfdG9faW50IDogKGludDY0W0Bsb2NhbF0pIC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IChpbnQ2NFtAbG9jYWxdKSAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfMTYgOiB0IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8zMiA6IHQgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfNjQgOiB0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0XzE2IDogKHRbQGxvY2FsX29wdF0pIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfMzJcbiAgOiAgKHRbQGxvY2FsX29wdF0pXG4gIC0+IGludFxuICAtPiBpbnQzMlxuICAtPiB1bml0XG4gID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF82NCA6IHQgLT4gaW50IC0+IChpbnQ2NFtAbG9jYWxdKSAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfMTYgKHQgOiB0KSAocG9zIDogaW50KSA6IGludCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9nZXRfMTYgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZ2V0XzMyICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQzMiA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9nZXRfMzIgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZ2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQ2NCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9nZXRfNjQgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0XzE2X3RydW5jICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9zZXRfMTYgdCBwb3MgdlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludDMyKSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfMzJcIiB+cG9zIH5sZW46NCB0O1xuICB1bnNhZmVfc2V0XzMyIHQgcG9zIHZcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgKCh2IDogaW50NjQpIFtAbG9jYWxdKSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfNjRcIiB+cG9zIH5sZW46OCB0O1xuICB1bnNhZmVfc2V0XzY0IHQgcG9zIHZcbjs7XG5cbmxldCBzaWduX2V4dGVuZF8xNiB1ID0gKHUgbHNsIChJbnQubnVtX2JpdHMgLSAxNikpIGFzciAoSW50Lm51bV9iaXRzIC0gMTYpXG5cbmxldCBjaGVja192YWxpZF91aW50MTYgeCB+bG9jID1cbiAgaWYgeCA8IDAgfHwgeCA+IDB4RkZGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jID1cbiAgaWYgeCA8IC0weDgwMDAgfHwgeCA+IDB4N0ZGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDE2LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDggeCB+bG9jID1cbiAgaWYgeCA8IDAgfHwgeCA+IDB4RkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50OCB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAgfHwgeCA+IDB4N0ZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSA4LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50MzIgPVxuICBpZiBub3QgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gXyB+bG9jOl8gLT4gKClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gLTEgbHNsIDMxICYmIHggPCAxIGxzbCAzMVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAwXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG4gIGVsc2VcbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDAgJiYgeCA8IDEgbHNsIDMyXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDY0IHggfmxvYyA9XG4gIGlmIHggPj0gMFxuICB0aGVuICgpXG4gIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgNjQtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQxNiB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAodW5zYWZlX2dldF8xNiB0IHBvcylcbmxldCB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpKVxubGV0IHVuc2FmZV93cml0ZV9pbnQxNiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyAoc3dhcDE2IHgpXG5sZXQgcmVhZF9pbnQxNiB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoZ2V0XzE2IHQgcG9zKVxubGV0IHJlYWRfaW50MTZfc3dhcCB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoc3dhcDE2IChnZXRfMTYgdCBwb3MpKVxuXG5sZXQgd3JpdGVfaW50MTZfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfaW50MTZfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF91aW50MTYgdCB+cG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xubGV0IHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcylcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyAoc3dhcDE2IHgpXG5sZXQgcmVhZF91aW50MTYgdCB+cG9zID0gZ2V0XzE2IHQgcG9zXG5sZXQgcmVhZF91aW50MTZfc3dhcCB0IH5wb3MgPSBzd2FwMTYgKGdldF8xNiB0IHBvcylcblxubGV0IHdyaXRlX3VpbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF91aW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX3VpbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuOztcblxubGV0IHdyaXRlX3VpbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyAoc3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfaW50IHQgfnBvcyA9IGludDMyX3RvX2ludCAodW5zYWZlX2dldF8zMiB0IHBvcylcbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAodW5zYWZlX2dldF8zMiB0IHBvcykpXG5sZXQgdW5zYWZlX3JlYWRfaW50MzIgdCB+cG9zID0gdW5zYWZlX2dldF8zMiB0IHBvc1xubGV0IHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgdCB+cG9zID0gc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKHN3YXAzMiAoaW50MzJfb2ZfaW50IHgpKVxubGV0IHJlYWRfaW50MzJfaW50IHQgfnBvcyA9IGludDMyX3RvX2ludCAoZ2V0XzMyIHQgcG9zKVxubGV0IHJlYWRfaW50MzJfaW50X3N3YXAgdCB+cG9zID0gaW50MzJfdG9faW50IChzd2FwMzIgKGdldF8zMiB0IHBvcykpXG5sZXQgcmVhZF9pbnQzMiB0IH5wb3MgPSBnZXRfMzIgdCBwb3NcbmxldCByZWFkX2ludDMyX3N3YXAgdCB+cG9zID0gc3dhcDMyIChnZXRfMzIgdCBwb3MpXG5sZXQgd3JpdGVfaW50MzIgdCB+cG9zIHggPSBzZXRfMzIgdCBwb3MgeFxubGV0IHdyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSBzZXRfMzIgdCBwb3MgKHN3YXAzMiB4KVxuXG5sZXQgd3JpdGVfaW50MzJfaW50X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChpbnQzMl9vZl9pbnQgeClcbjs7XG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF9pbnQzMiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MzJfaW50XCI7XG4gIHNldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2ludCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAgdCB+cG9zID1cbiAgaW50NjRfdG9faW50IChzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NCB0IH5wb3MgPSB1bnNhZmVfZ2V0XzY0IHQgcG9zXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIHhcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCAoaW50NjRfb2ZfaW50IHgpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKGdldF82NCB0IHBvcylcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKHN3YXA2NCAoZ2V0XzY0IHQgcG9zKSlcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NCB0IH5wb3MgPSBnZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcyA9IHN3YXA2NCAoZ2V0XzY0IHQgcG9zKVxubGV0IHdyaXRlX2ludDY0IHQgfnBvcyAoeCBbQGxvY2FsXSkgPSBzZXRfNjQgdCBwb3MgeFxubGV0IHdyaXRlX2ludDY0X3N3YXAgdCB+cG9zICh4IFtAbG9jYWxdKSA9IHNldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTYgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2IGVsc2UgdW5zYWZlX3JlYWRfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfdWludDE2XG47O1xuXG5sZXQgZ2V0X2ludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNiBlbHNlIHJlYWRfaW50MTZfc3dhcFxubGV0IGdldF9pbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTZfc3dhcCBlbHNlIHJlYWRfaW50MTZcbmxldCBnZXRfdWludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTYgZWxzZSByZWFkX3VpbnQxNl9zd2FwXG5sZXQgZ2V0X3VpbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2X3N3YXAgZWxzZSByZWFkX3VpbnQxNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNiBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2IGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2XG47O1xuXG5sZXQgc2V0X2ludDE2X2JlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X2V4biBlbHNlIHdyaXRlX2ludDE2X3N3YXBfZXhuXG5sZXQgc2V0X2ludDE2X2xlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MTZfZXhuXG5cbmxldCBzZXRfdWludDE2X2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9leG4gZWxzZSB3cml0ZV91aW50MTZfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfdWludDE2X2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX3VpbnQxNl9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMiBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzIgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyXG47O1xuXG5sZXQgZ2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyIGVsc2UgcmVhZF9pbnQzMl9zd2FwXG5sZXQgZ2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX3N3YXAgZWxzZSByZWFkX2ludDMyXG5sZXQgc2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMiBlbHNlIHdyaXRlX2ludDMyX3N3YXBcbmxldCBzZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX3N3YXAgZWxzZSB3cml0ZV9pbnQzMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludFxuOztcblxubGV0IGdldF9pbnQzMl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50IGVsc2UgcmVhZF9pbnQzMl9pbnRfc3dhcFxubGV0IGdldF9pbnQzMl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50X3N3YXAgZWxzZSByZWFkX2ludDMyX2ludFxuXG5sZXQgc2V0X2ludDMyX2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfaW50MzJfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludCBlbHNlIHJlYWRfaW50NjRfaW50X3N3YXBcbmxldCBnZXRfaW50NjRfbGVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgcmVhZF9pbnQ2NF9pbnRcbmxldCBzZXRfaW50NjRfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnQgZWxzZSB3cml0ZV9pbnQ2NF9pbnRfc3dhcFxubGV0IHNldF9pbnQ2NF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRfaW50XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0XG47O1xuXG5tb2R1bGUgTG9jYWwgPSBzdHJ1Y3RcbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAodW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHJlYWRfaW50NjQgdCB+cG9zKSlcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfc3dhcF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHJlYWRfaW50NjRfc3dhcCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICAgIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbFxuICA7O1xuXG4gIGxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICAgIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBfbG9jYWwgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbFxuICA7O1xuXG4gIGxldCBnZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfbG9jYWwgZWxzZSByZWFkX2ludDY0X3N3YXBfbG9jYWxcbiAgbGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIGVsc2UgcmVhZF9pbnQ2NF9sb2NhbFxuZW5kXG5cbmxldCBnZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjQgZWxzZSByZWFkX2ludDY0X3N3YXBcbmxldCBnZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfc3dhcCBlbHNlIHJlYWRfaW50NjRcbmxldCBzZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0IGVsc2Ugd3JpdGVfaW50NjRfc3dhcFxubGV0IHNldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfc3dhcCBlbHNlIHdyaXRlX2ludDY0XG5cbmxldCBpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF9pbnQ2NDogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIHVuYm94ZWQhXCJcbjs7XG5cbmxldCB1aW50NjRfY29udl9lcnJvciAoKSA9XG4gIGZhaWx3aXRoIFwidW5zYWZlX3JlYWRfdWludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxuKCogW1BvbHldIGlzIHJlcXVpcmVkIHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgdW5ib3hlZCBbaW50NjRdLiAqKVxubGV0W0BpbmxpbmUgYWx3YXlzXSBpbnQ2NF90b19pbnRfZXhuIChuIFtAbG9jYWxdKSA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBpZiBQb2x5LihuID49IC0weDQwMDBfMDAwMF8wMDAwXzAwMDBMICYmIG4gPCAweDQwMDBfMDAwMF8wMDAwXzAwMDBMKVxuICAgIHRoZW4gaW50NjRfdG9faW50IG5cbiAgICBlbHNlIGludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IC0weDAwMDBfMDAwMF80MDAwXzAwMDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50NjRfdG9faW50X2V4biBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X2ludDY0X2xlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9sZSB0IH5wb3MpXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIHVpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuOztcblxubGV0IGdldF91aW50NjRfYmVfZXhuIHQgfnBvcyA9IHVpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9iZSA9IHVuc2FmZV9zZXRfaW50NjRfYmVcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9sZSA9IHVuc2FmZV9zZXRfaW50NjRfbGVcblxubGV0IHNldF91aW50NjRfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9iZV9leG5cIiBuO1xuICBzZXRfaW50NjRfYmUgdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDY0X2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ2NCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50NjRfbGVfZXhuXCIgbjtcbiAgc2V0X2ludDY0X2xlIHQgfnBvcyBuXG47O1xuXG4oKiBUeXBlIGFubm90YXRpb25zIG9uIHRoZSBbdF1zIGFyZSBpbXBvcnRhbnQgaGVyZTogaW4gb3JkZXIgZm9yIHRoZSBjb21waWxlciB0byBnZW5lcmF0ZVxuICAgb3B0aW1pemVkIGNvZGUsIGl0IG5lZWRzIHRvIGtub3cgdGhlIGZ1bGx5IGluc3RhbnRpYXRlZCB0eXBlIG9mIHRoZSBiaWdhcnJheS4gVGhpcyBpc1xuICAgYmVjYXVzZSB0aGUgdHlwZSBvZiB0aGUgYmlnYXJyYXkgZW5jb2RlcyB0aGUgZWxlbWVudCBraW5kIGFuZCB0aGUgbGF5b3V0IG9mIHRoZVxuICAgYmlnYXJyYXkuIFdpdGhvdXQgdGhlIGFubm90YXRpb24gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhIEMgY2FsbCB0byB0aGUgZ2VuZXJpYyBhY2Nlc3NcbiAgIGZ1bmN0aW9ucy4gKilcbmxldCB1bnNhZmVfc2V0X3VpbnQ4ICh0IDogdCkgfnBvcyBuID0gQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuXG5sZXQgdW5zYWZlX3NldF9pbnQ4ICh0IDogdCkgfnBvcyBuID1cbiAgKCogSW4gYWxsIHRoZSBzZXQgZnVuY3Rpb25zIHdoZXJlIHRoZXJlIGFyZSB0aGVzZSB0ZXN0cywgaXQgbG9va3MgbGlrZSB0aGUgdGVzdCBjb3VsZCBiZVxuICAgICByZW1vdmVkLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGNoYW5naW5nIHRoZSB2YWx1ZXMgb2YgdGhlIGJ5dGVzIHRoYXQgYXJlIG5vdFxuICAgICB3cml0dGVuLiAqKVxuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKVxuXG5sZXQgdW5zYWZlX2dldF9pbnQ4ICh0IDogdCkgfnBvcyA9XG4gIGxldCBuID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgc2V0X3VpbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ4IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ4X2V4blwiIG47XG4gIEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHNldF9pbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX2ludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfaW50OF9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgZ2V0X3VpbnQ4ICh0IDogdCkgfnBvcyA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKVxuXG5sZXQgZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLmdldCB0IHBvcykgaW5cbiAgaWYgbiA+PSAxMjggdGhlbiBuIC0gMjU2IGVsc2UgblxuOztcblxubGV0IG1hc2szMl9uID0gU3RkbGliLk5hdGl2ZWludC4oc3ViIChzaGlmdF9sZWZ0IDFuIDMyKSAxbilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50MzJfb2ZfaW50MzJfdCBuID1cbiAgaWYgbm90X29uXzMyYml0XG4gIHRoZW5cbiAgICAoKiB1c2UgQ2FtbC5OYXRpdmVpbnQgdG8gZW5zdXJlIGlubGluaW5nIGV2ZW4gd2l0aG91dCB4LWxpYnJhcnktaW5saW5pbmcgKilcbiAgICBTdGRsaWIuTmF0aXZlaW50Lih0b19pbnQgKGxvZ2FuZCAob2ZfaW50MzIgbikgbWFzazMyX24pKVxuICBlbHNlIGludDMyX3RvX2ludCBuXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX3NldF91aW50MzJfbGUgdCB+cG9zIG4gPSB1bnNhZmVfc2V0X2ludDMyX3RfbGUgdCB+cG9zIChpbnQzMl9vZl9pbnQgbilcbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9iZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9iZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50MzJfbGUgdCB+cG9zID1cbiAgdWludDMyX29mX2ludDMyX3QgKHVuc2FmZV9nZXRfaW50MzJfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50MzJfYmUgdCB+cG9zID1cbiAgdWludDMyX29mX2ludDMyX3QgKHVuc2FmZV9nZXRfaW50MzJfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9sZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2xlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2xlX2V4biB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50MzJfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDMyIH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQzMl9iZV9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG5vdF9vbl8zMmJpdCAmJiBuID49IDEgbHNsIDMxIHRoZW4gbiAtICgxIGxzbCAzMikgZWxzZSBuIGluXG4gIHNldF9pbnQzMl9iZV9leG4gdCB+cG9zIG5cbjs7XG5cbmxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9sZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPSB1aW50MzJfb2ZfaW50MzJfdCAoZ2V0X2ludDMyX3RfYmUgdCB+cG9zKVxuXG5tb2R1bGUgSW50X3JlcHIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgbGV0IGdldF91aW50OCB0IHBvcyA9IGdldF91aW50OCB0IH5wb3NcbiAgICBsZXQgc2V0X3VpbnQ4IHQgcG9zIHggPSBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgeClcbiAgICBsZXQgZ2V0X3VpbnQxNl9uZSB0IHBvcyA9IGdldF8xNiB0IHBvc1xuICAgIGxldCBzZXRfdWludDE2X25lIHQgcG9zIHggPSBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuICAgIGxldCBnZXRfaW50MzJfbmUgdCBwb3MgPSBnZXRfMzIgdCBwb3NcbiAgICBsZXQgc2V0X2ludDMyX25lIHQgcG9zIHggPSBzZXRfMzIgdCBwb3MgeFxuICAgIGxldCBnZXRfaW50NjRfbmUgdCBwb3MgPSBnZXRfNjQgdCBwb3NcbiAgICBsZXQgc2V0X2ludDY0X25lIHQgcG9zIHggPSBzZXRfNjQgdCBwb3MgeFxuICBlbmRcblxuICBpbmNsdWRlIEludF9yZXByLk1ha2VfZ2V0IChGKVxuICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdF9mcm96ZW5cblxuICAgICAgbGV0IGdldF91aW50OCB0IHBvcyA9IHVuc2FmZV9nZXRfdWludDggdCB+cG9zXG4gICAgICBsZXQgc2V0X3VpbnQ4IHQgcG9zIHggPSB1bnNhZmVfc2V0X3VpbnQ4IHQgfnBvcyB4XG4gICAgICBsZXQgZ2V0X3VpbnQxNl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMTYgdCBwb3NcbiAgICAgIGxldCBzZXRfdWludDE2X25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbiAgICAgIGxldCBnZXRfaW50MzJfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG4gICAgICBsZXQgc2V0X2ludDMyX25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIHhcbiAgICAgIGxldCBnZXRfaW50NjRfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzY0IHQgcG9zXG4gICAgICBsZXQgc2V0X2ludDY0X25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIHhcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX3NldCAoRilcbiAgZW5kXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNpZ25fZXh0ZW5kXzE2ID0gc2lnbl9leHRlbmRfMTZcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmxpdFxuaW5jbHVkZSBUZXN0X2JsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJsaXRcblxuICB0eXBlICdhIHNyY1xuICB0eXBlICdhIGRzdFxuXG4gICgqICB2YWwgYmxpdCAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXQqKVxuICB2YWwgYmxpdG8gOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXRvXG5cbiAgKCogIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBzdWIgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1YlxuXG4gICgqdmFsIHN1Ym8gICAgICAgIDogKCdhIHNyYywgJ2EgZHN0KSBzdWJvKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfdGVzdHNfZ2VuID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbFxuXG4gICAgdmFsIG9mX2Jvb2wgOiBib29sIC0+IGJvb2wgdFxuICBlbmRcblxuICB0eXBlICdhIHpcblxuICBtb2R1bGUgU3JjIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbGVuZ3RoIDogKF8gdFtAbG9jYWxdKSAtPiBpbnRcbiAgICB2YWwgY3JlYXRlX2Jvb2wgOiBsZW46aW50IC0+IGJvb2wgeiB0XG4gICAgdmFsIGdldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnRcbiAgICB2YWwgc2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudCAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBEc3QgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiAoXyB0W0Bsb2NhbF0pIC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgICB2YWwgb3ZlcmxhcHBpbmdfc3JjX2RzdCA6IFsgYERvX25vdF9jaGVjayB8IGBDaGVjayBvZiAnYSBTcmMudCAtPiAnYSB0IF1cbiAgZW5kXG5lbmRcblxubW9kdWxlIFRlc3RfZ2VuXG4gICAgKEZvcl90ZXN0cyA6IEZvcl90ZXN0c19nZW4pXG4gICAgKFRlc3RlZCA6IFNfZ2VuXG4gICAgIHdpdGggdHlwZSAnYSBzcmMgOj0gJ2EgRm9yX3Rlc3RzLlNyYy50XG4gICAgIHdpdGggdHlwZSAnYSBkc3QgOj0gJ2EgRm9yX3Rlc3RzLkRzdC50KSA9XG5zdHJ1Y3RcbiAgb3BlbiBUZXN0ZWRcbiAgb3BlbiBGb3JfdGVzdHNcblxuICBsZXQgaW5pdCB+bGVuIH5jcmVhdGUgfnNldCB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBzZXQgdCBpIChmIGkpXG4gICAgZG9uZTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGVsdDEgPSBFbHQub2ZfYm9vbCB0cnVlXG4gIGxldCBlbHQyID0gRWx0Lm9mX2Jvb2wgZmFsc2VcbiAgbGV0ICgpID0gYXNzZXJ0IChub3QgKEVsdC5lcXVhbCBlbHQxIGVsdDIpKVxuICBsZXQgc3JjX2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQxIGVsc2UgZWx0MlxuICBsZXQgZHN0X2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQyIGVsc2UgZWx0MVxuXG4gICgqIFRlc3QgW2JsaXRdLiAqKVxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBuID0gNCBpblxuICAgIGZvciBzcmNfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICBmb3IgZHN0X2xlbmd0aCA9IDAgdG8gbiBkb1xuICAgICAgICBmb3Igc3JjX3BvcyA9IDAgdG8gc3JjX2xlbmd0aCBkb1xuICAgICAgICAgIGZvciBkc3RfcG9zID0gMCB0byBkc3RfbGVuZ3RoIGRvXG4gICAgICAgICAgICBmb3Igc3JjX2xlbiA9IDAgdG8gbWluIChzcmNfbGVuZ3RoIC0gc3JjX3BvcykgKGRzdF9sZW5ndGggLSBkc3RfcG9zKSBkb1xuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICBsZXQgaXNfaW5fcmFuZ2UgaSA9IGkgPj0gZHN0X3BvcyAmJiBpIDwgZHN0X3BvcyArIHNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2sgbGVuZ3RoIGdldCBuYW1lIHNlcXVlbmNlIH5leHBlY3QgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzZXF1ZW5jZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IChFbHQuZXF1YWwgKGdldCBzZXF1ZW5jZSBpKSAoZXhwZWN0IGkpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiYnVnXCIgKG5hbWUgOiBzdHJpbmcpIChpIDogaW50KV1cbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19zcmMgPSBjaGVjayBTcmMubGVuZ3RoIFNyYy5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tfZHN0ID0gY2hlY2sgRHN0Lmxlbmd0aCBEc3QuZ2V0IGluXG4gICAgICAgICAgICAgICAgbGV0IHNyYyA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46c3JjX2xlbmd0aCB+Y3JlYXRlOlNyYy5jcmVhdGVfYm9vbCB+c2V0OlNyYy5zZXQgfmY6c3JjX2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChTcmMubGVuZ3RoIHNyYyA9IHNyY19sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPVxuICAgICAgICAgICAgICAgICAgaW5pdCB+bGVuOmRzdF9sZW5ndGggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGFzc2VydCAoRHN0Lmxlbmd0aCBkc3QgPSBkc3RfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgaW5pdF9zcmMgKCkgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIHNyY19sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgIFNyYy5zZXQgc3JjIGkgKHNyY19iaXQgaSlcbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJibGl0IHNyY1wiIHNyYyB+ZXhwZWN0OnNyY19iaXQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfYml0IChzcmNfcG9zICsgaSAtIGRzdF9wb3MpIGVsc2UgZHN0X2JpdCBpKTtcbiAgICAgICAgICAgICAgICAobWF0Y2ggRHN0Lm92ZXJsYXBwaW5nX3NyY19kc3Qgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBEb19ub3RfY2hlY2sgLT4gKClcbiAgICAgICAgICAgICAgICAgfCBgQ2hlY2sgc3JjX3RvX2RzdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIGRzdF9wb3MgKyBzcmNfbGVuIDw9IHNyY19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGRzdCA9IHNyY190b19kc3Qgc3JjIGluXG4gICAgICAgICAgICAgICAgICAgICBpZiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3Qgb3ZlcmxhcHBpbmdcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYml0IChpZiBpc19pbl9yYW5nZSBpIHRoZW4gc3JjX3BvcyArIGkgLSBkc3RfcG9zIGVsc2UgaSkpKSkpO1xuICAgICAgICAgICAgICAgICgqIENoZWNrIFtzdWJdLiAqKVxuICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPSBzdWIgc3JjIH5wb3M6c3JjX3BvcyB+bGVuOnNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJzdWIgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJzdWIgZHN0XCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+IHNyY19iaXQgKHNyY19wb3MgKyBpKSlcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICBcImJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGV4biA6IGV4bilcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX3BvcyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X3BvcyA6IGludCldXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IHNyYyA9IGluaXQgfmxlbjo0IH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0IGluXG4gICAgbGV0IGRzdCA9IGluaXQgfmxlbjo4IH5jcmVhdGU6RHN0LmNyZWF0ZV9ib29sIH5zZXQ6RHN0LnNldCB+Zjpkc3RfYml0IGluXG4gICAgbGV0IGFzc2VydF9yYWlzZXMgZiA9IGFzc2VydCAoRXhuLmRvZXNfcmFpc2UgZikgaW5cbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczooLTEpIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczooLTEpICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3Bvczo1IH5zcmNfbGVuOjEgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjggfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo1ICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo4ICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0MVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHkpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgICAgbGV0IGVxdWFsID0gUG9seS5lcXVhbFxuICAgICAgICBsZXQgb2ZfYm9vbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB6ID0gJ2EgU2VxdWVuY2UuelxuXG4gICAgICBtb2R1bGUgU3JjID0gU2VxdWVuY2VcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdDFfZ2VuZXJpY1xuICAgIChFbHQgOiBFbHQxKVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50KVxuICAgIChUZXN0ZWQgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBFbHRfdG9fZWx0MSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBFbHQudFxuXG4gIGxldCBlcXVhbCA9IEVsdC5lcXVhbFxuICBsZXQgb2ZfYm9vbCA9IEVsdC5vZl9ib29sXG5lbmRcblxubW9kdWxlIFRlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMgd2l0aCB0eXBlIHQgOj0gU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNyY1xuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIFRlc3RfZGlzdGluY3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChEc3QgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChUZXN0ZWQgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gU3JjLnQgd2l0aCB0eXBlIGRzdCA6PSBEc3QudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTcmNcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBEc3RcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBEb19ub3RfY2hlY2tcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQpIChTZXF1ZW5jZSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0IChFbHQpIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU3JjIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudCkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZV9kaXN0aW5jdCAoU3JjKSAoRHN0KVxuICBpbmNsdWRlIFRlc3RfZGlzdGluY3QgKEVsdCkgKFNyYykgKERzdCkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIEJsaXQuU2VxdWVuY2UxXG4gICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHlcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlMSAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDEgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2dlbmVyaWNfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0MSkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QxX2dlbmVyaWMgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJpbmFyeV9zZWFyY2hhYmxlXG5pbmNsdWRlIFRlc3RfYmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJpbmFyeV9zZWFyY2hhYmxlXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EgZWx0LCAnYSBlbHQpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCA9IHNpZ1xuICBpbmNsdWRlIFNfZ2VuXG5cbiAgbW9kdWxlIEZvcl90ZXN0IDogc2lnXG4gICAgdmFsIGNvbXBhcmUgOiBib29sIGVsdCAtPiBib29sIGVsdCAtPiBpbnRcbiAgICB2YWwgc21hbGwgOiBib29sIGVsdFxuICAgIHZhbCBiaWcgOiBib29sIGVsdFxuICAgIHZhbCBvZl9hcnJheSA6IGJvb2wgZWx0IGFycmF5IC0+IGJvb2wgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW4gKE0gOiBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgb3BlbiBNXG5cbiAgbGV0JXRlc3RfbW9kdWxlIFwidGVzdF9iaW5hcnlfc2VhcmNoYWJsZVwiID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGNvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgZWx0X2NvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgcyA9IEZvcl90ZXN0LnNtYWxsXG4gICAgICBsZXQgYiA9IEZvcl90ZXN0LmJpZ1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgdCBob3cgdiA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIH5jb21wYXJlIChGb3JfdGVzdC5vZl9hcnJheSB0KSBob3cgdlxuICAgICAgOztcblxuICAgICAgbGV0ICggPSApID0gUG9seS5lcXVhbFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDJcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGIgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIHMgPSBOb25lXG5cbiAgICAgIGxldCBjcmVhdGVfdGVzdF9jYXNlIChudW1fcywgbnVtX2IpID1cbiAgICAgICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSBiIH5sZW46KG51bV9zICsgbnVtX2IpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBudW1fcyAtIDEgZG9cbiAgICAgICAgICBhcnIuKGkpIDwtIHNcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYXJyXG4gICAgICA7O1xuXG4gICAgICBsZXQgb25seV9zbWFsbCA9IDEwXzAwMCwgMFxuICAgICAgbGV0IG9ubHlfYmlnID0gMCwgMTBfMDAwXG4gICAgICBsZXQgYm90aCA9IDI1MzEsIDQ3MTdcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggKGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCkgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT4gdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIGJvdGggaW5cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHYgLT4gdiA9IDI1MzFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgPVxuICAgICAgICBBcnJheS5pbml0IDEwMF8wMDAgfmY6KGZ1biBpIC0+IGlmIGkgPiA1MF8wMDAgdGhlbiBiIGVsc2UgcylcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3RzIGFyb3VuZCBhIGdhcCopXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDk5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDk5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0IGJlZ2lubmluZyBvZiBhcnJheSAqKVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgZW5kIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgICBmb3IgbGVuZ3RoID0gMCB0byA1IGRvXG4gICAgICAgICAgZm9yIG51bV9zID0gMCB0byBsZW5ndGggZG9cbiAgICAgICAgICAgIGxldCBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCB+ZjooZnVuIGkgLT4gaWYgaSA8IG51bV9zIHRoZW4gcyBlbHNlIGIpIGluXG4gICAgICAgICAgICBmb3IgcG9zID0gLTEgdG8gbGVuZ3RoIGRvXG4gICAgICAgICAgICAgIGZvciBsZW4gPSAtMSB0byBsZW5ndGggKyAxIGRvXG4gICAgICAgICAgICAgICAgKCp0cnkqKVxuICAgICAgICAgICAgICAgIGxldCBzaG91bGRfcmFpc2UgPVxuICAgICAgICAgICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgICAgICB+dG90YWxfbGVuZ3RoOmxlbmd0aClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfnBvcyB+bGVuIH5jb21wYXJlOmVsdF9jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBzaG91bGRfcmFpc2UsIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICAgfCB0cnVlLCBFcnJvciBfIC0+ICgpXG4gICAgICAgICAgICAgICAgfCB0cnVlLCBPayBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gcmFpc2UgYnV0IGl0IGRpZG4ndFwiXG4gICAgICAgICAgICAgICAgfCBmYWxzZSwgRXJyb3IgXyAtPiBmYWlsd2l0aCBcImV4cGVjdGVkIGl0IHRvIG5vdCByYWlzZSwgYnV0IGl0IHJhaXNlZFwiXG4gICAgICAgICAgICAgICAgfCBmYWxzZSwgT2sgcmVzdWx0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgc2VhcmNoZWQgPSBudW1fcyAtIDEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBjb3JyZWN0X3Jlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgIGlmIHNlYXJjaGVkIDwgcG9zXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA9IDBcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgc2VhcmNoZWQgPj0gcG9zICsgbGVuXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBTb21lIHNlYXJjaGVkXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgbm90IChjb3JyZWN0X3Jlc3VsdCA9IHJlc3VsdCkgdGhlbiBmYWlsd2l0aCBcIldyb25nIHJlc3VsdFwiXG4gICAgICAgICAgICAgICAgICAoKndpdGggZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIGZhaWx3aXRocyBcImJpbmFyeV9zZWFyY2ggYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgKGV4biwgYGxlbmd0aCBsZW5ndGgsIGBzZWFyY2hfa2V5IHNlYXJjaF9rZXksIGBwb3MgcG9zLCBgbGVuIGxlbilcbiAgICAgICAgICAgICAgICAgICAgPDpzZXhwX29mPCBleG4gKiBbIGBsZW5ndGggb2YgaW50IF0gKiBbIGBzZWFyY2hfa2V5IG9mIGludCBdXG4gICAgICAgICAgICAgICAgICAgKiBbIGBwb3Mgb2YgaW50IF0gKiBbIGBsZW4gb2YgaW50IF0gPj4qKVxuICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYSA9IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIChGb3JfdGVzdC5vZl9hcnJheSBhKVxuXG4gICAgICAoKnRlc3QgZm9yIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiB4ID0gaWYgeCA9IGIgdGhlbiBgUmlnaHQgZWxzZSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgNTBfMDAwXG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgUmlnaHQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBOb25lXG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiBfID0gYExlZnQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBTb21lIDk5Xzk5OVxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gTm9uZVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QgKE0gOiBCaW5hcnlfc2VhcmNoYWJsZV9hbmRfZm9yX3Rlc3QpID0gVGVzdF9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IE0udFxuICAgIHR5cGUgJ2EgZWx0ID0gTS5lbHRcblxuICAgIGxldCBiaW5hcnlfc2VhcmNoID0gTS5iaW5hcnlfc2VhcmNoXG4gICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gTS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICBlbmQpXG5cbm1vZHVsZSBUZXN0MSAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlMV9hbmRfZm9yX3Rlc3QpID0gVGVzdF9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE0udFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICAgIGxldCBiaW5hcnlfc2VhcmNoID0gTS5iaW5hcnlfc2VhcmNoXG4gICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gTS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBNLkZvcl90ZXN0Lm9mX2FycmF5XG4gICAgICBsZXQgY29tcGFyZSA9IEJvb2wuY29tcGFyZVxuICAgICAgbGV0IHNtYWxsID0gZmFsc2VcbiAgICAgIGxldCBiaWcgPSB0cnVlXG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYW5kX3Rlc3QgKE0gOiBJbmRleGFibGVfYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBtb2R1bGUgQiA9IEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBNLnRcbiAgICAgIHR5cGUgZWx0ID0gTS5lbHRcblxuICAgICAgaW5jbHVkZSBCXG4gICAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZTFfYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBtb2R1bGUgQiA9IEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChNKVxuICBpbmNsdWRlIEJcblxuICBpbmNsdWRlIFRlc3QxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIE0udFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxuaW5jbHVkZSAoXG4gIFN0cmluZyA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmQpXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gU3RkbGliLkZpbGVuYW1lXG5cbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IGNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9leHRlbnNpb24gPSBjaG9wX2V4dGVuc2lvblxuICBsZXQgY2hvcF9zdWZmaXggPSBjaG9wX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gY2hvcF9zdWZmaXhfb3B0XG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gY3VycmVudF9kaXJfbmFtZVxuICBsZXQgaXNfaW1wbGljaXQgPSBpc19pbXBsaWNpdFxuICBsZXQgaXNfcmVsYXRpdmUgPSBpc19yZWxhdGl2ZVxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gcGFyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJfc2VwID0gZGlyX3NlcFxuICBsZXQgcXVvdGUgPSBxdW90ZVxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IGdldF90ZW1wX2Rpcl9uYW1lICgpXG4gIGxldCBkaXJuYW1lID0gZGlybmFtZVxuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVxuZW5kXG5cbmxldCBpc19hYnNvbHV0ZSBwID0gbm90IChpc19yZWxhdGl2ZSBwKVxuXG5sZXQgY29uY2F0IHAxIHAyID1cbiAgaWYgU3RyaW5nLmlzX2VtcHR5IHAxXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLmNvbmNhdCBjYWxsZWQgd2l0aCBhbiBlbXB0eSBzdHJpbmcgYXMgaXRzIGZpcnN0IGFyZ3VtZW50IChzZWNvbmQgXFxcbiAgICAgICBhcmd1bWVudDogJXMpXCJcbiAgICAgIHAyXG4gICAgICAoKTtcbiAgbGV0IHJlYyBjb2xsYXBzZV90cmFpbGluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiBzIH5vbjonLycgd2l0aFxuICAgIHwgU29tZSAoXCJcIiwgKFwiLlwiIHwgXCJcIikpIC0+IFwiXCJcbiAgICB8IFNvbWUgKHMsIChcIi5cIiB8IFwiXCIpKSAtPiBjb2xsYXBzZV90cmFpbGluZyBzXG4gICAgfCBOb25lIHwgU29tZSBfIC0+IHNcbiAgaW5cbiAgbGV0IHJlYyBjb2xsYXBzZV9sZWFkaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lICgoXCIuXCIgfCBcIlwiKSwgcykgLT4gY29sbGFwc2VfbGVhZGluZyBzXG4gICAgfCBTb21lIF8gfCBOb25lIC0+IHNcbiAgaW5cbiAgY29sbGFwc2VfdHJhaWxpbmcgcDEgXiBcIi9cIiBeIGNvbGxhcHNlX2xlYWRpbmcgcDJcbjs7XG5cbmxldCB0b19hYnNvbHV0ZV9leG4gcCB+cmVsYXRpdmVfdG8gPVxuICBpZiBpc19yZWxhdGl2ZSByZWxhdGl2ZV90b1xuICB0aGVuXG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJGaWxlbmFtZS50b19hYnNvbHV0ZV9leG4gY2FsbGVkIHdpdGggYSBbcmVsYXRpdmVfdG9dIHRoYXQgaXMgYSByZWxhdGl2ZSBwYXRoOiAlc1wiXG4gICAgICByZWxhdGl2ZV90b1xuICAgICAgKClcbiAgZWxzZSBpZiBpc19hYnNvbHV0ZSBwXG4gIHRoZW4gcFxuICBlbHNlIGNvbmNhdCByZWxhdGl2ZV90byBwXG47O1xuXG5sZXQgc3BsaXQgcyA9IGRpcm5hbWUgcywgYmFzZW5hbWUgc1xuXG4oKiBbbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplXSBjb21lcyBmcm9tIGdldGNvbmYgX1BPU0lYX05BTUVfTUFYIC8gKilcbmxldCBtYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemUgPSAyNTVcblxubGV0IGlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCBzID1cbiAgbGV0IG1vZHVsZSBTID0gU3RyaW5nIGluXG4gIHMgPD4gXCIuXCJcbiAgJiYgcyA8PiBcIi4uXCJcbiAgJiYgSW50LigwIDwgUy5sZW5ndGggcylcbiAgJiYgSW50LihTLmxlbmd0aCBzIDw9IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSlcbiAgJiYgKG5vdCAoUy5jb250YWlucyBzICcvJykpXG4gICYmIG5vdCAoUy5jb250YWlucyBzICdcXDAwMCcpXG47O1xuXG5sZXQgcm9vdCA9IFwiL1wiXG5cbmxldCBzcGxpdF9leHRlbnNpb24gZm4gPVxuICBsZXQgZGlyLCBmbiA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOicvJyBmbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIGZuXG4gICAgfCBTb21lIChwYXRoLCBmbikgLT4gU29tZSBwYXRoLCBmblxuICBpblxuICBsZXQgZm4sIGV4dCA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOicuJyBmbiB3aXRoXG4gICAgfCBOb25lIC0+IGZuLCBOb25lXG4gICAgfCBTb21lIChiYXNlX2ZuLCBleHQpIC0+IGJhc2VfZm4sIFNvbWUgZXh0XG4gIGluXG4gIGxldCBmbiA9XG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IE5vbmUgLT4gZm5cbiAgICB8IFNvbWUgZGlyIC0+IGRpciBeIFwiL1wiIF4gZm5cbiAgaW5cbiAgZm4sIGV4dFxuOztcblxubGV0IHBhcnRzIGZpbGVuYW1lID1cbiAgbGV0IHJlYyBsb29wIGFjYyBmaWxlbmFtZSA9XG4gICAgbWF0Y2ggc3BsaXQgZmlsZW5hbWUgd2l0aFxuICAgIHwgKFwiLlwiIGFzIGJhc2UpLCBcIi5cIiAtPiBiYXNlIDo6IGFjY1xuICAgIHwgKFwiL1wiIGFzIGJhc2UpLCBcIi9cIiAtPiBiYXNlIDo6IGFjY1xuICAgIHwgcmVzdCwgZGlyIC0+IGxvb3AgKGRpciA6OiBhY2MpIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBmaWxlbmFtZVxuOztcblxubGV0IG9mX3BhcnRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcIkZpbGVuYW1lLm9mX3BhcnRzOiBlbXB0eSBwYXJ0cyBsaXN0XCJcbiAgfCByb290IDo6IHJlc3QgLT4gTGlzdC5mb2xkIHJlc3QgfmluaXQ6cm9vdCB+ZjpTdGRsaWIuRmlsZW5hbWUuY29uY2F0XG47O1xuXG5sZXQgcmVjIHNraXBfY29tbW9uX3ByZWZpeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIHdoZW4gU3RyaW5nLmVxdWFsIGgxIGgyIC0+IHNraXBfY29tbW9uX3ByZWZpeCB0MSB0MlxuICB8IF8gLT4gbDEsIGwyXG47O1xuXG5sZXQgb2ZfYWJzb2x1dGVfZXhuIGEgfnJlbGF0aXZlX3RvOmIgPVxuICBpZiBpc19yZWxhdGl2ZSBhXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfmZpcnN0X2FyZzooYSA6IHN0cmluZyldO1xuICBpZiBpc19yZWxhdGl2ZSBiXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IFt+cmVsYXRpdmVfdG9dIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfnJlbGF0aXZlX3RvOihiIDogc3RyaW5nKV07XG4gIGxldCBhX3BhcnRzID0gcGFydHMgYSBpblxuICBsZXQgYl9wYXJ0cyA9IHBhcnRzIGIgaW5cbiAgbGV0IGFfc3VmZml4LCBiX3N1ZmZpeCA9IHNraXBfY29tbW9uX3ByZWZpeCBhX3BhcnRzIGJfcGFydHMgaW5cbiAgbGV0IGdvX3VwID0gTGlzdC5tYXAgfmY6KGZ1biBfIC0+IHBhcmVudF9kaXJfbmFtZSkgYl9zdWZmaXggaW5cbiAgbWF0Y2ggZ29fdXAgQCBhX3N1ZmZpeCB3aXRoXG4gIHwgW10gLT4gY3VycmVudF9kaXJfbmFtZVxuICB8IHJlbHBhdGggLT4gb2ZfcGFydHMgcmVscGF0aFxuOztcblxubGV0IGFyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgY3JlYXRlX2FyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgb3Blbl90ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZV9mZCA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHJlYWxwYXRoID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgdGVtcF9kaXIgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgVW5pdl9tYXBfaW50ZlxubW9kdWxlIFVpZCA9IFR5cGVfZXF1YWwuSWQuVWlkXG5cbm1vZHVsZSBNYWtlMVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAoJ3MsICdhKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gICgqIEEgd3JhcHBlciBmb3IgdGhlIFtLZXldIG1vZHVsZSB0aGF0IGFkZHMgYSBkeW5hbWljIGNoZWNrIHRvIFtLZXkudHlwZV9pZF0uXG5cbiAgICAgSXQncyBhIGJ1ZyBpZiB0aGUgdXNlci1wcm92aWRlZCBbS2V5LnR5cGVfaWRdIGdpdmVzIGRpZmZlcmVudCB0eXBlIGlkcyBvbiBkaWZmZXJlbnRcbiAgICAgY2FsbHMuICBCZWNhdXNlIHRoaXMgY2hlY2sgc2hvdWxkIGJlIGZhaXJseSBjaGVhcCwgd2UgZG8gaXQgZHluYW1pY2FsbHkgdG8gYXZvaWRcbiAgICAgc3VidGxlciBwcm9ibGVtcyBsYXRlci5cblxuICAgICBPZiBjb3Vyc2UsIHdlJ3JlIG5vdCBjaGVja2luZyB0cnVseSBwYXRob2xvZ2ljYWwgdGhpbmdzIGxpa2UgdGhlIHByb3ZpZGVkXG4gICAgIFtLZXkudHlwZV9pZF0gb25seSBjaGFuZ2VzIHRoZSB2YWx1ZSBpdCByZXR1cm5zIG9uIGV2ZXJ5IHRoaXJkIGNhbGwuLi4gKilcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEtleS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiB0ZXN0LWZyaWVuZGx5IHNleHAgY29udmVyc2lvbiAqKVxuICAgIGxldCBzZXhwX29mX3R5cGVfaWQgdHlwZV9pZCA9XG4gICAgICBbJXNleHBcbiAgICAgICAgeyBuYW1lID0gKFR5cGVfZXF1YWwuSWQubmFtZSB0eXBlX2lkIDogc3RyaW5nKVxuICAgICAgICA7IHVpZCA9XG4gICAgICAgICAgICAoaWYgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nXG4gICAgICAgICAgICAgdGhlbiBTZXhwLkF0b20gXCI8dWlkPlwiXG4gICAgICAgICAgICAgZWxzZSBUeXBlX2VxdWFsLklkLlVpZC5zZXhwX29mX3QgKFR5cGVfZXF1YWwuSWQudWlkIHR5cGVfaWQpXG4gICAgICAgICAgICAgICAgICA6IFNleHAudClcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWQga2V5ID1cbiAgICAgIGxldCB0eXBlX2lkMSA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgbGV0IHR5cGVfaWQyID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBpZiBUeXBlX2VxdWFsLklkLnNhbWUgdHlwZV9pZDEgdHlwZV9pZDJcbiAgICAgIHRoZW4gdHlwZV9pZDFcbiAgICAgIGVsc2VcbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbS2V5LnR5cGVfaWRdIG11c3Qgbm90IHByb3ZpZGUgZGlmZmVyZW50IHR5cGUgaWRzIHdoZW4gY2FsbGVkIG9uIHRoZSBzYW1lIFxcXG4gICAgICAgICAgICAgaW5wdXRcIlxuICAgICAgICAgICAgICAoa2V5IDogXyBLZXkudClcbiAgICAgICAgICAgICAgKHR5cGVfaWQxIDogdHlwZV9pZClcbiAgICAgICAgICAgICAgKHR5cGVfaWQyIDogdHlwZV9pZCldXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAoJ3MsICdhKSBkYXRhID0gKCdzLCAnYSkgRGF0YS50XG5cbiAgbGV0IG5hbWVfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQubmFtZSAoS2V5LnR5cGVfaWQga2V5KVxuICBsZXQgdWlkX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLnVpZCAoS2V5LnR5cGVfaWQga2V5KVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdzIHQgPSBUIDogJ2EgS2V5LnQgKiAoJ3MsICdhKSBEYXRhLnQgLT4gJ3MgdFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKFQgKGtleSwgZGF0YSkpID1cbiAgICAgIERhdGEuc2V4cF9vZl90IHNleHBfb2ZfYSAoVHlwZV9lcXVhbC5JZC50b19zZXhwIChLZXkudHlwZV9pZCBrZXkpKSBkYXRhXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkX25hbWUgKFQgKGtleSwgXykpID0gbmFtZV9vZl9rZXkga2V5XG4gICAgbGV0IHR5cGVfaWRfdWlkIChUIChrZXksIF8pKSA9IHVpZF9vZl9rZXkga2V5XG5cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9XG4gICAgICBsZXQgYyA9IFN0cmluZy5jb21wYXJlICh0eXBlX2lkX25hbWUgdDEpICh0eXBlX2lkX25hbWUgdDIpIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgVWlkLmNvbXBhcmUgKHR5cGVfaWRfdWlkIHQxKSAodHlwZV9pZF91aWQgdDIpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAncyB0ID0gJ3MgUGFja2VkLnQgTWFwLk0oVWlkKS50XG5cbiAgbGV0IHRvX2FsaXN0IHQgPSBNYXAuZGF0YSB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTpQYWNrZWQuY29tcGFyZVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIHRvX2FsaXN0IHRcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHBhY2tlZCAtPiBQYWNrZWQudHlwZV9pZF9uYW1lIHBhY2tlZCwgcGFja2VkKVxuICAgIHw+IFslc2V4cF9vZjogKHN0cmluZyAqIGEgUGFja2VkLnQpIGxpc3RdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAodCA6IF8gdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBNYXAuaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gYXNzZXJ0IChVaWQuZXF1YWwga2V5IChQYWNrZWQudHlwZV9pZF91aWQgZGF0YSkpKSlcbiAgOztcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9IE1hcC5zZXQgdCB+a2V5Oih1aWRfb2Zfa2V5IGtleSkgfmRhdGE6KFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgbWVtX2J5X2lkIHQgaWQgPSBNYXAubWVtIHQgaWRcbiAgbGV0IG1lbSB0IGtleSA9IG1lbV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IHJlbW92ZV9ieV9pZCB0IGlkID0gTWFwLnJlbW92ZSB0IGlkXG4gIGxldCByZW1vdmUgdCBrZXkgPSByZW1vdmVfYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIFVpZClcblxuICBsZXQgc2luZ2xldG9uIGtleSBkYXRhID1cbiAgICBNYXAuc2luZ2xldG9uIChtb2R1bGUgVWlkKSAodWlkX29mX2tleSBrZXkpIChQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBNYXAuaXNfZW1wdHlcblxuICBsZXQgZmluZCAodHlwZSBiKSB0IChrZXkgOiBiIEtleS50KSA9XG4gICAgbWF0Y2ggTWFwLmZpbmQgdCAodWlkX29mX2tleSBrZXkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoUGFja2VkLlQgKGtleScsIHZhbHVlKSkgLT5cbiAgICAgICgqIGNhbm5vdCByYWlzZSAtLSBzZWUgW2ludmFyaWFudF0gKilcbiAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGtleSkgKEtleS50eXBlX2lkIGtleScpXG4gICAgICBpblxuICAgICAgU29tZSAodmFsdWUgOiAoXywgYikgRGF0YS50KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPiBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuZmluZF9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID0gaWYgbWVtIHQga2V5IHRoZW4gYER1cGxpY2F0ZSBlbHNlIGBPayAoc2V0IHQgfmtleSB+ZGF0YSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgYE9rIHQgLT4gdFxuICAgIHwgYER1cGxpY2F0ZSAtPlxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIlVuaXZfbWFwLmFkZF9leG4gb24gZXhpc3Rpbmcga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlX2V4biB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSBkYXRhKVxuICAgIHwgTm9uZSAtPlxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIlVuaXZfbWFwLmNoYW5nZV9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID1cbiAgICBsZXQgb3JpZyA9IGZpbmQgdCBrZXkgaW5cbiAgICBsZXQgbmV4dCA9IHVwZGF0ZSBvcmlnIGluXG4gICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgIHwgTm9uZSAtPiBpZiBPcHRpb24uaXNfbm9uZSBvcmlnIHRoZW4gdCBlbHNlIHJlbW92ZSB0IGtleVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPSBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpXG5cbiAgbGV0IG9mX2FsaXN0X2V4biB0ID1cbiAgICBNYXAub2ZfYWxpc3RfZXhuIChtb2R1bGUgVWlkKSAoTGlzdC5tYXAgdCB+ZjooZnVuIHAgLT4gUGFja2VkLnR5cGVfaWRfdWlkIHAsIHApKVxuICA7O1xuXG4gIGxldCB0eXBlX2VxdWFsIDogKCdzIHQsICdzIFBhY2tlZC50IE1hcC5NKFR5cGVfZXF1YWwuSWQuVWlkKS50KSBUeXBlX2VxdWFsLnQgPSBUXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoS2V5IDogS2V5KSAoRGF0YSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9XG4gICAgTWFrZTFcbiAgICAgIChLZXkpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgKF8sICdhKSB0ID0gJ2EgRGF0YS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmQpXG5cbiAgdHlwZSB0ID0gdW5pdCBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgdHlwZSAnYSBkYXRhID0gJ2EgRGF0YS50XG5cbiAgbGV0IGludmFyaWFudCA9IE0uaW52YXJpYW50XG4gIGxldCBlbXB0eSA9IE0uZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiA9IE0uc2luZ2xldG9uXG4gIGxldCBpc19lbXB0eSA9IE0uaXNfZW1wdHlcbiAgbGV0IHNldCA9IE0uc2V0XG4gIGxldCBtZW0gPSBNLm1lbVxuICBsZXQgbWVtX2J5X2lkID0gTS5tZW1fYnlfaWRcbiAgbGV0IGZpbmQgPSBNLmZpbmRcbiAgbGV0IGZpbmRfZXhuID0gTS5maW5kX2V4blxuICBsZXQgYWRkID0gTS5hZGRcbiAgbGV0IGFkZF9leG4gPSBNLmFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IE0uY2hhbmdlXG4gIGxldCBjaGFuZ2VfZXhuID0gTS5jaGFuZ2VfZXhuXG4gIGxldCB1cGRhdGUgPSBNLnVwZGF0ZVxuICBsZXQgcmVtb3ZlID0gTS5yZW1vdmVcbiAgbGV0IHJlbW92ZV9ieV9pZCA9IE0ucmVtb3ZlX2J5X2lkXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ3MgdDEgPSAncyBNLlBhY2tlZC50ID0gVCA6ICdhIEtleS50ICogJ2EgRGF0YS50IC0+ICdzIHQxXG4gICAgdHlwZSB0ID0gdW5pdCB0MVxuICBlbmRcblxuICBsZXQgdG9fYWxpc3QgPSBNLnRvX2FsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gPSBNLm9mX2FsaXN0X2V4blxuICBsZXQgdHlwZV9lcXVhbCA6ICh0LCBQYWNrZWQudCBNYXAuTShUeXBlX2VxdWFsLklkLlVpZCkudCkgVHlwZV9lcXVhbC50ID0gVFxuZW5kXG5cbm1vZHVsZSBNZXJnZSAoS2V5IDogS2V5KSAoSW5wdXQxX2RhdGEgOiBEYXRhKSAoSW5wdXQyX2RhdGEgOiBEYXRhKSAoT3V0cHV0X2RhdGEgOiBEYXRhKSA9XG5zdHJ1Y3RcbiAgdHlwZSBmID1cbiAgICB7IGYgOlxuICAgICAgICAnYS5cbiAgICAgICAgICBrZXk6J2EgS2V5LnRcbiAgICAgICAgLT4gWyBgTGVmdCBvZiAnYSBJbnB1dDFfZGF0YS50XG4gICAgICAgICAgIHwgYFJpZ2h0IG9mICdhIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAnYSBJbnB1dDFfZGF0YS50ICogJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICBdXG4gICAgICAgIC0+ICdhIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlIChLZXkpIChPdXRwdXRfZGF0YSlcblxuICBsZXQgbWVyZ2UgKHQxIDogTWFrZShLZXkpKElucHV0MV9kYXRhKS50KSAodDIgOiBNYWtlKEtleSkoSW5wdXQyX2RhdGEpLnQpIH5mOnsgZiB9XG4gICAgOiBNYWtlKEtleSkoT3V0cHV0X2RhdGEpLnRcbiAgICA9XG4gICAgbGV0IGYgfmtleSBtZXJnZV9yZXN1bHQgPVxuICAgICAgT3B0aW9uLm1hcCAoZiB+a2V5IG1lcmdlX3Jlc3VsdCkgfmY6KGZ1biBkYXRhIC0+IE91dHB1dC5NLlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWVyZ2UxXG4gICAgKEtleSA6IEtleSlcbiAgICAoSW5wdXQxX2RhdGEgOiBEYXRhMSlcbiAgICAoSW5wdXQyX2RhdGEgOiBEYXRhMSlcbiAgICAoT3V0cHV0X2RhdGEgOiBEYXRhMSkgPVxuc3RydWN0XG4gIHR5cGUgKCdzMSwgJ3MyLCAnczMpIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICgnczEsICdhKSBJbnB1dDFfZGF0YS50XG4gICAgICAgICAgIHwgYFJpZ2h0IG9mICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIHwgYEJvdGggb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnQgKiAoJ3MyLCAnYSkgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICBdXG4gICAgICAgIC0+ICgnczMsICdhKSBPdXRwdXRfZGF0YS50IG9wdGlvblxuICAgIH1cblxuICBtb2R1bGUgT3V0cHV0ID0gTWFrZTEgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZVxuICAgICAgICAodHlwZSBzMSBzMilcbiAgICAgICAgKHQxIDogczEgTWFrZTEoS2V5KShJbnB1dDFfZGF0YSkudClcbiAgICAgICAgKHQyIDogczIgTWFrZTEoS2V5KShJbnB1dDJfZGF0YSkudClcbiAgICAgICAgfmY6eyBmIH1cbiAgICA9XG4gICAgbGV0IGYgfmtleSBtZXJnZV9yZXN1bHQgPVxuICAgICAgT3B0aW9uLm1hcCAoZiB+a2V5IG1lcmdlX3Jlc3VsdCkgfmY6KGZ1biBkYXRhIC0+IE91dHB1dC5QYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgICBpblxuICAgIE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgTGVmdCBkYXRhKVxuICAgICAgfCBgUmlnaHQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYFJpZ2h0IGRhdGEpXG4gICAgICB8IGBCb3RoIChUIChsZWZ0X2tleSwgbGVmdF9kYXRhKSwgVCAocmlnaHRfa2V5LCByaWdodF9kYXRhKSkgLT5cbiAgICAgICAgKCogQ2FuJ3QgcmFpc2UgZHVlIHRvIHRoZSBpbnZhcmlhbnQgKilcbiAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBsZWZ0X2tleSkgKEtleS50eXBlX2lkIHJpZ2h0X2tleSlcbiAgICAgICAgaW5cbiAgICAgICAgZiB+a2V5OmxlZnRfa2V5IChgQm90aCAobGVmdF9kYXRhLCByaWdodF9kYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFR5cGVfaWRfa2V5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFR5cGVfZXF1YWwuSWQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0eXBlX2lkID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIChcbiAgTWFrZVxuICAgIChUeXBlX2lkX2tleSlcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZCkgOlxuICAgIFMgd2l0aCB0eXBlICdhIGRhdGEgPSAnYSBhbmQgbW9kdWxlIEtleSA6PSBUeXBlX2lkX2tleSlcblxubW9kdWxlIEtleSA9IFR5cGVfZXF1YWwuSWRcblxubW9kdWxlIFdpdGhfZGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsga2V5IDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICA7IGRlZmF1bHQgOiAnYVxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSB+ZGVmYXVsdCB+bmFtZSBzZXhwX29mID1cbiAgICAgIHsgZGVmYXVsdDsga2V5ID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgc2V4cF9vZiB9XG4gICAgOztcblxuICAgIGxldCBpZCB0ID0gdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGRlZmF1bHQgfSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCAoZmluZCB0IGtleSlcbiAgbGV0IHNldCB0IH5rZXk6eyBLZXkua2V5OyBkZWZhdWx0ID0gXyB9IH5kYXRhID0gc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQga2V5IH5mOnVwZGF0ZSA9IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSAoZmluZCB0IGtleSkpXG5lbmRcblxubW9kdWxlIFdpdGhfZm9sZCA9IHN0cnVjdFxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHsga2V5IDogJ2IgV2l0aF9kZWZhdWx0LktleS50XG4gICAgICA7IGYgOiAnYiAtPiAnYSAtPiAnYlxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSB+aW5pdCB+ZiB+bmFtZSBzZXhwX29mID1cbiAgICAgIHsgZjsga2V5ID0gV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6aW5pdCB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSBXaXRoX2RlZmF1bHQuS2V5LmlkIHQua2V5XG4gIGVuZFxuXG4gIGxldCBmaW5kIHQgeyBLZXkua2V5OyBmID0gXyB9ID0gV2l0aF9kZWZhdWx0LmZpbmQgdCBrZXlcbiAgbGV0IHNldCB0IH5rZXk6eyBLZXkua2V5OyBmID0gXyB9IH5kYXRhID0gV2l0aF9kZWZhdWx0LnNldCB0IH5rZXkgfmRhdGFcbiAgbGV0IGNoYW5nZSB0IHsgS2V5LmtleTsgZiA9IF8gfSB+Zjp1cGRhdGUgPSBXaXRoX2RlZmF1bHQuY2hhbmdlIHQga2V5IH5mOnVwZGF0ZVxuXG4gIGxldCBhZGQgdCB+a2V5OnsgS2V5LmtleTsgZiB9IH5kYXRhID1cbiAgICBXaXRoX2RlZmF1bHQuY2hhbmdlIHQga2V5IH5mOihmdW4gYWNjIC0+IGYgYWNjIGRhdGEpXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpID0gc3RydWN0XG4gIG9wZW4gV2l0aF9mb2xkXG5cbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgbGlzdCkgS2V5LnRcblxuICAgIGxldCBjcmVhdGUgfm5hbWUgc2V4cF9vZiA9XG4gICAgICBLZXkuY3JlYXRlIH5pbml0OltdIH5mOihmdW4geHMgeCAtPiB4IDo6IHhzKSB+bmFtZSAoTGlzdC5zZXhwX29mX3Qgc2V4cF9vZilcbiAgICA7O1xuXG4gICAgbGV0IGlkID0gV2l0aF9mb2xkLktleS5pZFxuICBlbmRcblxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbmVuZFxuIiwiaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBTdGRpb1xuXG4gIGxldCBlcHJpbnRmID0gZXByaW50ZlxuICBsZXQgcHJpbnRmID0gcHJpbnRmXG4gIGxldCBwcmludF9zID0gcHJpbnRfc1xuICBsZXQgcHJpbnRfc3RyaW5nID0gcHJpbnRfc3RyaW5nXG4gIGxldCBwcmludF9lbmRsaW5lID0gcHJpbnRfZW5kbGluZVxuICBsZXQgcHJlcnJfZW5kbGluZSA9IHByZXJyX2VuZGxpbmVcblxuICBtb2R1bGUgSW5fY2hhbm5lbCA9IEluX2NoYW5uZWxcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEJhc2UuUHJpbnRmXG5cbiAgbGV0IHNwcmludGYgPSBzcHJpbnRmXG4gIGxldCBmYWlsd2l0aGYgPSBmYWlsd2l0aGZcbiAgbGV0IGtzcHJpbnRmID0ga3NwcmludGZcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0hcbiAgfCBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcbiAgfCBDT01QX0NXT1JEXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBfb2ZdXG5cbmxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdClcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcbiAgb3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuICBvcGVuIFBweF9zdGFibGVfd2l0bmVzc19ydW50aW1lLlN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG4gIG1vZHVsZSBMYXp5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IGNvbXBhcmUgPSBCYXNlLkxhenkuY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IHJlYyBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgQmFzZS5JbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBaZXJvIC0+ICgpXG4gICAgICAgICAgICB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcIk1hbnkgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWFueSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJNYXliZSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYXliZSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IENvbmNhdCBbXSB8IENvbmNhdCBbIF8gXSAtPiBmYWlsd2l0aCBcIkZsYXR0ZW4gemVybyBhbmQgb25lLWVsZW1lbnQgQ29uY2F0XCJcbiAgICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudFxuICAgICAgICAgICAgfCBBZF9ob2MgXyAtPiAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCB0ID0gWyVvZl9zZXhwOiB0XSBzZXhwIGluXG4gICAgICAgICAgaW52YXJpYW50IHQ7XG4gICAgICAgICAgdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgdXNhZ2UgPVxuICAgICAgICAgIGxldCBvcGVuIEltcG9ydCBpblxuICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBaZXJvIC0+IFwiXCJcbiAgICAgICAgICB8IE9uZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgIHwgTWFueSAoT25lIF8gYXMgdCkgLT4gc3ByaW50ZiBcIlslcyAuLi5dXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBNYW55IHQgLT4gc3ByaW50ZiBcIlsoJXMpIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYXliZSB0IC0+IHNwcmludGYgXCJbJXNdXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5TdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKEJhc2UuTGlzdC5tYXAgdHMgfmY6dXNhZ2UpXG4gICAgICAgICAgfCBBZF9ob2MgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgICAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci5WMS50XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBhbm9ucyA6IEFub25zLlYyLnRcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHVzYWdlIDogc3RyaW5nXG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3MgfSA9XG4gICAgICAgIHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9ucyA9IFVzYWdlIHVzYWdlOyBmbGFncyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9uczsgZmxhZ3MgfSA9XG4gICAgICAgIHsgc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZVxuICAgICAgICA7IHVzYWdlID1cbiAgICAgICAgICAgIChtYXRjaCBhbm9ucyB3aXRoXG4gICAgICAgICAgICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIuVjEudXNhZ2UgZ3JhbW1hcilcbiAgICAgICAgOyBmbGFnc1xuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3QgTGF6eS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAgIHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmYpIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID0geyB0IHdpdGggc3ViY29tbWFuZHMgPSBMaXN0LkFzc29jLm1hcCB0LnN1YmNvbW1hbmRzIH5mIH1cblxuICAgICAgbGV0IHRvX2xhdGVzdCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZyb21fdmFsIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCkgOiAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mb3JjZSBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbGV0IGFic19wYXRoIH5kaXIgcGF0aCA9XG4gICAgICBpZiBGaWxlbmFtZV9iYXNlLmlzX2Fic29sdXRlIHBhdGggdGhlbiBwYXRoIGVsc2UgRmlsZW5hbWVfYmFzZS5jb25jYXQgZGlyIHBhdGhcbiAgICA7O1xuXG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX3YzIHQgOiBWMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YzICh0IDogVjMudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBWMy50b19sYXRlc3QgdG9fdjNcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2Ugb2ZfdjMgVjMub2ZfbGF0ZXN0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyAoKiBbcGF0aF90b19leGVdIG11c3QgYmUgYWJzb2x1dGUuICopXG4gICAgICAgICAgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b192MiB0IDogVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSBcIi9cIlxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjIgKHQgOiBWMi50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIFYyLnRvX2xhdGVzdCB0b192MlxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBvZl92MiBWMi5vZl9sYXRlc3RcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNpYyBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudCAqIHRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnRcbiAgICAgICAgfCBMYXp5IG9mIHQgTGF6eS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYyLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgYlxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjIudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi5vZl9sYXRlc3QgZSlcbiAgICAgICAgfCBMYXp5IHRodW5rIC0+IG9mX2xhdGVzdCAoQmFzZS5MYXp5LmZvcmNlIHRodW5rKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEubWFwIChHcm91cF9pbmZvLlYxLm9mX2xhdGVzdCBnKSB+ZjpvZl9sYXRlc3QpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYxLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS50b19sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLnRvX2xhdGVzdCBlKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEudG9fbGF0ZXN0IChHcm91cF9pbmZvLlYxLm1hcCBnIH5mOnRvX2xhdGVzdCkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIG9mX2xhdGVzdCA6IE1vZGVsLnQgLT4gdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS5vZl9sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVmVyc2lvbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFYxIG9mIFYxLnRcbiAgICAgICAgfCBWMiBvZiBWMi50XG4gICAgICAgIHwgVjMgb2YgVjMudCAoKiBhdmFpbGFibGUgYXQgbGVhc3Qgc2luY2UgMjAyMC0wNCAqKVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgdmFyaWFudHMsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBWMSB0IC0+IFYxLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjIgdCAtPiBWMi50b19sYXRlc3QgdFxuICAgICAgICB8IFYzIHQgLT4gVjMudG9fbGF0ZXN0IHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgfnZlcnNpb25fdG9fdXNlIGxhdGVzdCA9XG4gICAgICAgIG1hdGNoIHZlcnNpb25fdG9fdXNlIHdpdGhcbiAgICAgICAgfCAxIC0+IFYxIChWMS5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IDIgLT4gVjIgKFYyLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMyAtPiBWMyAoVjMub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCBvdGhlciAtPlxuICAgICAgICAgIEJhc2UuRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInVuc3VwcG9ydGVkIHZlcnNpb25fdG9fdXNlXCJcbiAgICAgICAgICAgIG90aGVyXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgICAgICB8PiBCYXNlLkVycm9yLnJhaXNlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBCYXNlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGludmFyaWFudCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnVzYWdlXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5Nb2RlbC50ID1cbiAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLnRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgIDsgYXRfbW9zdF9vbmNlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IG1heWJlX21pc3NpbmdfcHJlZml4ID0gXCJbXCJcbiAgbGV0IG1heWJlX21pc3Npbmdfc3VmZml4ID0gXCJdXCJcbiAgbGV0IG1heWJlX21vcmVfc3VmZml4ID0gXCIgLi4uXCJcblxuICBsZXQgdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lID1cbiAgICBsZXQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgfSA9IHQgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgaWYgYXRfbGVhc3Rfb25jZVxuICAgICAgdGhlbiBmbGFnX25hbWVcbiAgICAgIGVsc2UgU3RyaW5nLmNvbmNhdCBbIG1heWJlX21pc3NpbmdfcHJlZml4OyBmbGFnX25hbWU7IG1heWJlX21pc3Npbmdfc3VmZml4IF1cbiAgICBpblxuICAgIGlmIGF0X21vc3Rfb25jZSB0aGVuIGRlc2NyaXB0aW9uIGVsc2UgU3RyaW5nLmNvbmNhdCBbIGRlc2NyaXB0aW9uOyBtYXliZV9tb3JlX3N1ZmZpeCBdXG4gIDs7XG5cbiAgbGV0IG9mX2hlbHBfc3RyaW5nIG5hbWUgPVxuICAgIGxldCBhdF9tb3N0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IG5hbWUgfnN1ZmZpeDptYXliZV9tb3JlX3N1ZmZpeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIGxldCBhdF9sZWFzdF9vbmNlLCBuYW1lID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFN0cmluZy5jaG9wX3ByZWZpeCBuYW1lIH5wcmVmaXg6bWF5YmVfbWlzc2luZ19wcmVmaXhcbiAgICAgICAgfD4gT3B0aW9uLmJpbmQgfmY6KFN0cmluZy5jaG9wX3N1ZmZpeCB+c3VmZml4Om1heWJlX21pc3Npbmdfc3VmZml4KVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIG5hbWVcbiAgICAgIHwgU29tZSBuYW1lIC0+IGZhbHNlLCBuYW1lXG4gICAgaW5cbiAgICB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9LCBuYW1lXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwidG9faGVscF9zdHJpbmdcIiA9XG4gICAgbGV0IGZsYWdfbmFtZSA9IFwibmFtZVwiIGluXG4gICAgTGlzdC5pdGVyIFslYWxsOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgIGxldCBzID0gdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lIGluXG4gICAgICBwcmludF9zIFslbWVzc2FnZSBcIlwiIH5fOih0IDogdCkgc107XG4gICAgICBsZXQgdCcsIGZsYWdfbmFtZScgPSBvZl9oZWxwX3N0cmluZyBzIGluXG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogdF0gdCB0Jyk7XG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogc3RyaW5nXSBmbGFnX25hbWUgZmxhZ19uYW1lJykpO1xuICAgIFslZXhwZWN0XG4gICAgICB7fFxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJbbmFtZV0gLi4uXCIpXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSBmYWxzZSkpIFwibmFtZSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSBmYWxzZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgW25hbWVdKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIHRydWUpIChhdF9tb3N0X29uY2UgdHJ1ZSkpIG5hbWUpIHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZsYWdfaW5mby5Nb2RlbC50ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGRvYyA6IHN0cmluZ1xuICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IHBhcnNlX25hbWUgdCA9XG4gICAgbGV0IG51bV9vY2N1cnJlbmNlcywgZmxhZ19uYW1lID0gTnVtX29jY3VycmVuY2VzLm9mX2hlbHBfc3RyaW5nIHQubmFtZSBpblxuICAgIG1hdGNoIFN0cmluZy5zcGxpdCBmbGFnX25hbWUgfm9uOicgJyB3aXRoXG4gICAgfCBbIGZsYWdfbmFtZSBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIGZhbHNlLCBmbGFnX25hbWUpXG4gICAgfCBbIGZsYWdfbmFtZTsgX2FyZ19kb2MgXSAtPiBPayAobnVtX29jY3VycmVuY2VzLCB0cnVlLCBmbGFnX25hbWUpXG4gICAgfCBfIC0+IEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJVbmFibGUgdG8gcGFyc2VcIiBmbGFnX25hbWVdKVxuICA7O1xuXG4gICgqIFVzZXJzIGFyZSBsaWtlbHkgdG8gY2FsbCBhbGwgdGhyZWUgb2YgdGhlc2UgZnVuY3Rpb25zLCBpbiB3aGljaCBjYXNlIHdlIHdpbGwgcmUtcGFyc2VcbiAgICAgdGhlIFtuYW1lXSBzZXZlcmFsIHRpbWVzLiBXZSBkb24ndCBleHBlY3QgdXNlcnMgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIGNhcmUgYWJvdXQgdGhlXG4gICAgIGluZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZsYWdfbmFtZSB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoKF8gOiBOdW1fb2NjdXJyZW5jZXMudCksIChfIDogYm9vbCksIGZsYWdfbmFtZSkgLT4gZmxhZ19uYW1lKVxuICA7O1xuXG4gIGxldCBudW1fb2NjdXJyZW5jZXMgdCA9XG4gICAgcGFyc2VfbmFtZSB0XG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKG51bV9vY2N1cnJlbmNlcywgKF8gOiBib29sKSwgKF8gOiBzdHJpbmcpKSAtPlxuICAgICAgbnVtX29jY3VycmVuY2VzKVxuICA7O1xuXG4gIGxldCByZXF1aXJlc19hcmcgdCA9XG4gICAgcGFyc2VfbmFtZSB0XG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKChfIDogTnVtX29jY3VycmVuY2VzLnQpLCByZXF1aXJlc19hcmcsIChfIDogc3RyaW5nKSkgLT5cbiAgICAgIHJlcXVpcmVzX2FyZylcbiAgOztcblxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgXywgXCJbLWhlbHBdXCIgLT4gLTFcbiAgICB8IFwiWy1oZWxwXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy12ZXJzaW9uXVwiIC0+IC0xXG4gICAgfCBcIlstdmVyc2lvbl1cIiwgXyAtPiAxXG4gICAgfCBfLCBcIlstYnVpbGQtaW5mb11cIiAtPiAtMVxuICAgIHwgXCJbLWJ1aWxkLWluZm9dXCIsIF8gLT4gMVxuICAgIHwgXywgXCJoZWxwXCIgLT4gLTFcbiAgICB8IFwiaGVscFwiLCBfIC0+IDFcbiAgICB8IF8sIFwidmVyc2lvblwiIC0+IC0xXG4gICAgfCBcInZlcnNpb25cIiwgXyAtPiAxXG4gICAgfCBfIC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZ19oZWxwX2Rpc3BsYXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRmxhZ19pbmZvLnQgbGlzdFxuXG4gIGxldCBzb3J0IHQgPVxuICAgIExpc3Quc3RhYmxlX3NvcnQgdCB+Y29tcGFyZTooZnVuIGEgYiAtPlxuICAgICAgRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmUgYS5GbGFnX2luZm8ubmFtZSBiLkZsYWdfaW5mby5uYW1lKVxuICA7O1xuXG4gIGxldCB3b3JkX3dyYXBfYW5kX3N0cmlwIHRleHQgd2lkdGggPVxuICAgIGxldCBjaHVua3MgPSBTdHJpbmcuc3BsaXQgdGV4dCB+b246J1xcbicgaW5cbiAgICBMaXN0LmNvbmNhdF9tYXAgY2h1bmtzIH5mOihmdW4gdGV4dCAtPlxuICAgICAgbGV0IHdvcmRzID1cbiAgICAgICAgU3RyaW5nLnNwbGl0IHRleHQgfm9uOicgJ1xuICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIHdvcmQgLT4gbm90IChTdHJpbmcuaXNfZW1wdHkgd29yZCkpXG4gICAgICBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgTGlzdC5mb2xkIHdvcmRzIH5pbml0Ok5vbmUgfmY6KGZ1biBhY2Mgd29yZCAtPlxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChtYXRjaCBhY2Mgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBbXSwgd29yZFxuICAgICAgICAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+XG4gICAgICAgICAgICAgICAoKiBlZmZpY2llbmN5IGlzIG5vdCBhIGNvbmNlcm4gZm9yIHRoZSBzdHJpbmcgbGVuZ3RocyB3ZSBleHBlY3QgKilcbiAgICAgICAgICAgICAgIGxldCBsaW5lX2FuZF93b3JkID0gbGluZSBeIFwiIFwiIF4gd29yZCBpblxuICAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBsaW5lX2FuZF93b3JkIDw9IHdpZHRoXG4gICAgICAgICAgICAgICB0aGVuIGxpbmVzLCBsaW5lX2FuZF93b3JkXG4gICAgICAgICAgICAgICBlbHNlIGxpbmUgOjogbGluZXMsIHdvcmQpKVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgKGxpbmVzLCBsaW5lKSAtPiBMaXN0LnJldiAobGluZSA6OiBsaW5lcykpXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BsYXkgOiBzaWdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IG51bV9jb2xzID0gODBcbiAgICBsZXQgc3BhY2VzX3N0cmluZyB3aWR0aCA9IFN0cmluZy5tYWtlIHdpZHRoICcgJ1xuXG4gICAgbGV0IHBhZF9zcGFjZXNfdG9fc3VmZml4IHggfndpZHRoID1cbiAgICAgIGxldCBzbGFjayA9IHdpZHRoIC0gU3RyaW5nLmxlbmd0aCB4IGluXG4gICAgICB4IF4gc3BhY2VzX3N0cmluZyBzbGFja1xuICAgIDs7XG5cbiAgICBsZXQgaW5kZW50YXRpb24gPSBcIiAgXCJcbiAgICBsZXQgaW5kZW50X2FuZF9uZXdsaW5lIHggPSBMaXN0LmNvbmNhdCBbIFsgaW5kZW50YXRpb24gXTsgeDsgWyBcIlxcblwiIF0gXVxuICAgIGxldCBzcGFjaW5nX2RvdCA9IFwiLiBcIlxuXG4gICAgbGV0IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgPVxuICAgICAgMjdcbiAgICA7O1xuXG4gICAgbGV0IGRvY3VtZW50YXRpb25fc3RhcnRfY29sdW1uID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3dpZHRoID0gZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW5cbiAgICBsZXQgbGhzX3BhZF93aWR0aCA9IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uXG4gICAgbGV0IGxoc19wYWQgPSBzcGFjZXNfc3RyaW5nIGxoc19wYWRfd2lkdGhcblxuICAgIGxldCBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSA9XG4gICAgICBMaXN0Lm1hcCB+ZjooZnVuIHYgLT4gaW5kZW50X2FuZF9uZXdsaW5lIFsgbGhzX3BhZDsgdiBdKVxuICAgIDs7XG5cbiAgICBsZXQgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIGRvY3VtZW50YXRpb24gPVxuICAgICAgbGV0IGZsYWdfb25faXRzX293bl9saW5lID1cbiAgICAgICAgbGV0IGZsYWdfd2lkdGggPVxuICAgICAgICAgIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24gKyBTdHJpbmcubGVuZ3RoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXNcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZmxhZ193aWR0aCA+PSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBzcGFjaW5nX2RvdFxuICAgICAgICB0aGVuIGluZGVudF9hbmRfbmV3bGluZSBbIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5kZW50X2FuZF9uZXdsaW5lXG4gICAgICAgICAgICBbIHBhZF9zcGFjZXNfdG9fc3VmZml4IH53aWR0aDpkb3RfaW5kZW50YXRpb25fb2Zmc2V0IGZsYWdfbmFtZV93aXRoX2FsaWFzZXNcbiAgICAgICAgICAgIDsgc3BhY2luZ19kb3RcbiAgICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBsZXQgd3JhcHBlZF9kb2N1bWVudGF0aW9uID1cbiAgICAgICAgd29yZF93cmFwX2FuZF9zdHJpcFxuICAgICAgICAgIGRvY3VtZW50YXRpb25cbiAgICAgICAgICAobnVtX2NvbHMgLSBsaHNfd2lkdGggLSBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHdyYXBwZWRfZG9jdW1lbnRhdGlvbiB3aXRoXG4gICAgICB8IFtdIC0+IFsgZmxhZ19vbl9pdHNfb3duX2xpbmUgXVxuICAgICAgfCBkb2Nfd3JhcHBlZF9maXJzdF9saW5lIDo6IGRvY193cmFwcGVkX3Jlc3RfbGluZXMgLT5cbiAgICAgICAgbGV0IHdyYXBwZWRfZG9jX2xpbmVzID0gbGhzX3BhZF9hbmRfbmV3bGluZV90ZXJtaW5hdGUgZG9jX3dyYXBwZWRfcmVzdF9saW5lcyBpblxuICAgICAgICBsZXQgcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCB4ID1cbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgeFxuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgOyBkb2Nfd3JhcHBlZF9maXJzdF9saW5lXG4gICAgICAgICAgICBdXG4gICAgICAgIGluXG4gICAgICAgIGlmIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA+PSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmbGFnX29uX2l0c19vd25fbGluZVxuICAgICAgICAgIDo6IHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggXCJcIlxuICAgICAgICAgIDo6IHdyYXBwZWRfZG9jX2xpbmVzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgIExpc3QuY29uY2F0X21hcCB0IH5mOihmdW4gdCAtPlxuICAgICAgICBsZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA9XG4gICAgICAgICAgbGV0IGZsYWcgPSB0LkZsYWdfaW5mby5uYW1lIGluXG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoZmxhZyA6OiB0LmFsaWFzZXMpXG4gICAgICAgIGluXG4gICAgICAgIHJvd3MgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyB0LmRvYyB8PiBMaXN0LmNvbmNhdClcbiAgICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBEaXNwbGF5LnRvX3N0cmluZyB0XG5lbmRcblxubW9kdWxlIEtleV90eXBlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTdWJjb21tYW5kXG4gICAgfCBGbGFnXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWJjb21tYW5kIC0+IFwic3ViY29tbWFuZFwiXG4gICAgfCBGbGFnIC0+IFwiZmxhZ1wiXG4gIDs7XG5lbmRcblxubGV0IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlID1cbiAgbGV0IGlzX2Rhc2ggPSBDaGFyLmVxdWFsICctJyBpblxuICBsZXQgYWxpc3QgPVxuICAgICgqIG5vIHBhcnRpYWwgbWF0Y2hlcyB1bmxlc3Mgc29tZSBub24tZGFzaCBjaGFyIGlzIHByZXNlbnQgKilcbiAgICBpZiBTdHJpbmcuZm9yX2FsbCBwcmVmaXggfmY6aXNfZGFzaFxuICAgIHRoZW4gTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCAoZGF0YSwgXykpIC0+IGtleSwgKGRhdGEsIGBGdWxsX21hdGNoX3JlcXVpcmVkKSlcbiAgICBlbHNlIGFsaXN0XG4gIGluXG4gIG1hdGNoXG4gICAgTGlzdC5maWx0ZXIgYWxpc3QgfmY6KGZ1bmN0aW9uXG4gICAgICB8IGtleSwgKF8sIGBGdWxsX21hdGNoX3JlcXVpcmVkKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeFxuICAgICAgfCBrZXksIChfLCBgUHJlZml4KSAtPiBTdHJpbmcuaXNfcHJlZml4IGtleSB+cHJlZml4KVxuICB3aXRoXG4gIHwgWyAoa2V5LCAoZGF0YSwgX25hbWVfbWF0Y2hpbmcpKSBdIC0+IE9rIChrZXksIGRhdGEpXG4gIHwgW10gLT4gRXJyb3IgKHNwcmludGYgIVwidW5rbm93biAle0tleV90eXBlfSAlc1wiIGtleV90eXBlIHByZWZpeClcbiAgfCBtYXRjaGVzIC0+XG4gICAgKG1hdGNoIExpc3QuZmluZCBtYXRjaGVzIH5mOihmdW4gKGtleSwgXykgLT4gU3RyaW5nLiggPSApIGtleSBwcmVmaXgpIHdpdGhcbiAgICAgfCBTb21lIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIC0+IE9rIChrZXksIGRhdGEpXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGxldCBtYXRjaGluZ19rZXlzID0gTGlzdC5tYXAgfmY6ZnN0IG1hdGNoZXMgaW5cbiAgICAgICBFcnJvclxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICFcIiV7S2V5X3R5cGV9ICVzIGlzIGFuIGFtYmlndW91cyBwcmVmaXg6ICVzXCJcbiAgICAgICAgICAgIGtleV90eXBlXG4gICAgICAgICAgICBwcmVmaXhcbiAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIG1hdGNoaW5nX2tleXMpKSlcbjs7XG5cbm1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkJhc2VfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IGFub25zIDogQW5vbnMudFxuICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8udCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfZmxhZyB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCBmYWxzZSAtPiBFcnJvciAoRXJyb3IuY3JlYXRlX3MgWyVtZXNzYWdlIFwiRmxhZ3MgbXVzdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF0pXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQlYmluZC5Pcl9lcnJvciBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgdC5mbGFncyB+ZjooZnVuIChmbGFnX2luZm8gOiBGbGFnX2luZm8udCkgLT5cbiAgICAgICAgICBsZXQlYmluZC5Pcl9lcnJvciBmbGFnX25hbWUgPSBGbGFnX2luZm8uZmxhZ19uYW1lIGZsYWdfaW5mbyBpblxuICAgICAgICAgIE9rXG4gICAgICAgICAgICAoTGlzdC5tYXAgKGZsYWdfbmFtZSA6OiBmbGFnX2luZm8uYWxpYXNlcykgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICAgICAgIGtleSwgKGZsYWdfaW5mbywgYFByZWZpeCkpKSlcbiAgICAgICAgfD4gT3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIChMaXN0LmNvbmNhdCBjaG9pY2VzKSBwcmVmaXggRmxhZ1xuICAgICAgfD4gUmVzdWx0Lm1hcF9lcnJvciB+ZjpFcnJvci5vZl9zdHJpbmdcbiAgICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ2V0X3VzYWdlIHQgPVxuICAgIG1hdGNoIHQuYW5vbnMgd2l0aFxuICAgIHwgVXNhZ2UgdXNhZ2UgLT4gdXNhZ2VcbiAgICB8IEdyYW1tYXIgZ3JhbW1hciAtPiBBbm9ucy5HcmFtbWFyLnVzYWdlIGdyYW1tYXJcbiAgOztcbmVuZFxuXG5tb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LnQgTGF6eS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfc3ViY29tbWFuZCB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBFcnJvciAoRXJyb3IuY3JlYXRlX3MgWyVtZXNzYWdlIFwiU3ViY29tbWFuZHMgbXVzdCBub3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgKGZvcmNlIHQuc3ViY29tbWFuZHMpIH5mOihmdW4gKGtleSwgYSkgLT4ga2V5LCAoYSwgYFByZWZpeCkpXG4gICAgICBpblxuICAgICAgbG9va3VwX2V4cGFuZCBjaG9pY2VzIHByZWZpeCBTdWJjb21tYW5kXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBtYXAgPSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC5tYXBcbmVuZFxuXG5tb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5FeGVjX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGdWxseV9mb3JjZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZ1bGx5X2ZvcmNlZC5Nb2RlbC50ID1cbiAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udCAqIHRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgZXhwYW5kZWRfc3ViY29tbWFuZHMgdCA9XG4gICAgbGV0IHJlYyBleHBhbmQgPSBmdW5jdGlvblxuICAgICAgfCBFeGVjIChfLCB0KSAtPiBleHBhbmQgdFxuICAgICAgfCBCYXNpYyBfIC0+IFsgW10gXVxuICAgICAgfCBHcm91cCB7IHN1YmNvbW1hbmRzOyBfIH0gLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzKSB+ZjooZnVuIChuYW1lLCB0KSAtPlxuICAgICAgICAgIExpc3QubWFwIH5mOihmdW4gcGF0aCAtPiBuYW1lIDo6IHBhdGgpIChleHBhbmQgdCkpXG4gICAgaW5cbiAgICAoKiBSZXZlcnNpbmcgc28gdGhhdCB0aGUgY29tbWFuZHMgc2hvdyB1cCBpbiB0aGUgc2FtZSBvcmRlciBhcyBoZWxwIGlzIG91dHB1dCAqKVxuICAgIExpc3QucmV2IChleHBhbmQgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLlNleHBhYmxlLk1vZGVsLnQgPVxuICAgIHwgQmFzZSBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnRcbiAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZXh0cmFjdGlvbl92YXIgPSBFbnZfdmFyLnRvX3N0cmluZyBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcblxuICBtb2R1bGUgVmVyc2lvbmVkID0gU3RhYmxlLlNleHBhYmxlLlZlcnNpb25lZFxuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIGxldCBmIGkgc3VwcG9ydGVkIF8gPSBTZXQuYWRkIHN1cHBvcnRlZCBpIGluXG4gICAgVmVyc2lvbmVkLlZhcmlhbnRzLmZvbGQgfmluaXQ6KFNldC5lbXB0eSAobW9kdWxlIEludCkpIH52MTooZiAxKSB+djI6KGYgMikgfnYzOihmIDMpXG4gIDs7XG5cbiAgbGV0IG9mX3ZlcnNpb25lZCA9IFZlcnNpb25lZC50b19sYXRlc3RcbiAgbGV0IHRvX3ZlcnNpb25lZCB0IH52ZXJzaW9uX3RvX3VzZSA9IFZlcnNpb25lZC5vZl9sYXRlc3QgdCB+dmVyc2lvbl90b191c2VcbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogKHVuaXQgLT4gdClcbiAgfCBMYXp5IG9mIHQgTGF6eS50XG5cbmxldCByZWMgZnVsbHlfZm9yY2VkIDogdCAtPiBGdWxseV9mb3JjZWQudCA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBCYXNpYyBiXG4gIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5tYXAgZyB+ZjpmdWxseV9mb3JjZWQpXG4gIHwgRXhlYyAoZSwgZikgLT4gRXhlYyAoZSwgZnVsbHlfZm9yY2VkIChmICgpKSlcbiAgfCBMYXp5IHRodW5rIC0+IGZ1bGx5X2ZvcmNlZCAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbmxldCByZWMgZ2V0X3N1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2ljIGIgLT4gYi5zdW1tYXJ5XG4gIHwgR3JvdXAgZyAtPiBnLnN1bW1hcnlcbiAgfCBFeGVjIChlLCBfKSAtPiBlLnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IGdldF9zdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IGhlbHBfdGV4dCA9IGBVc2VfQ29tbWFuZF91bml4XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBLZXlfdHlwZSA9IEtleV90eXBlXG5cbiAgbGV0IGFic19wYXRoID0gU3RhYmxlLkV4ZWNfaW5mby5hYnNfcGF0aFxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlXG4gIGxldCB3b3JkX3dyYXAgPSBGbGFnX2hlbHBfZGlzcGxheS53b3JkX3dyYXBfYW5kX3N0cmlwXG4gIGxldCBsb29rdXBfZXhwYW5kID0gbG9va3VwX2V4cGFuZFxuZW5kXG4iLCJcbm9wZW4hIEJhc2Vcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21tYW5kX2ludGZcbm1vZHVsZSBTaGFwZSA9IFNoYXBlXG5cbigqIGluIG9yZGVyIHRvIGRlZmluZSBleHBlY3QgdGVzdHMsIHdlIHdhbnQgdG8gcmFpc2UgcmF0aGVyIHRoYW4gZXhpdCBpZiB0aGUgY29kZSBpc1xuICAgcnVubmluZyBpbiB0aGUgdGVzdCBydW5uZXIgcHJvY2VzcyAqKVxubGV0IHJhaXNlX2luc3RlYWRfb2ZfZXhpdCA9XG4gIG1hdGNoIFBweF9pbmxpbmVfdGVzdF9saWIudGVzdGluZyB3aXRoXG4gIHwgYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyIC0+IHRydWVcbiAgfCBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXIgfCBgTm90X3Rlc3RpbmcgLT4gZmFsc2Vcbjs7XG5cbmV4Y2VwdGlvbiBFeGl0X2NhbGxlZCBvZiB7IHN0YXR1cyA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIFtyYWlzZV9pbnN0ZWFkX29mX2V4aXRdLXJlc3BlY3Rpbmcgd3JhcHBlcnMgZm9yIFtleGl0XSBhbmQgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgbGV0IGV4aXQgc3RhdHVzID1cbiAgICBpZiByYWlzZV9pbnN0ZWFkX29mX2V4aXQgdGhlbiByYWlzZSAoRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSkgZWxzZSBTdGRsaWIuZXhpdCBzdGF0dXNcbiAgOztcblxuICBtb2R1bGUgRXhuID0gc3RydWN0XG4gICAgbGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID1cbiAgICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBmICgpIHdpdGhcbiAgICAgICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyA9IDAgfSBhcyBleG4gLT4gcHJpbnRfcyBbJXNleHAgKGV4biA6IGV4bildKVxuICAgICAgZWxzZSBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgdW53b3JkcyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB4c1xubGV0IHVucGFyYWdyYXBocyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblxcblwiIHhzXG5cbmV4Y2VwdGlvbiBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG9mIHN0cmluZ1xuXG5sZXQgZGllIGZtdCA9IGtzcHJpbnRmIChmdW4gbXNnICgpIC0+IHJhaXNlIChGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZykpIGZtdFxubGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgPSBTaGFwZS5Qcml2YXRlLmhlbHBfc2NyZWVuX2NvbXBhcmVcblxuKCogdW5pdmVyc2FsIG1hcHMgYXJlIHVzZWQgdG8gcGFzcyBhcm91bmQgdmFsdWVzIGJldHdlZW4gZGlmZmVyZW50IGJpdHNcbiAgIG9mIGNvbW1hbmQgbGluZSBwYXJzaW5nIGNvZGUgd2l0aG91dCBoYXZpbmcgYSBodWdlIGltcGFjdCBvbiB0aGVcbiAgIHR5cGVzIGludm9sdmVkXG5cbiAgIDEuIHBhc3NpbmcgdmFsdWVzIGZyb20gcGFyc2VkIGFyZ3MgdG8gY29tbWFuZC1saW5lIGF1dG9jb21wbGV0ZSBmdW5jdGlvbnNcbiAgIDIuIHBhc3Npbmcgc3BlY2lhbCB2YWx1ZXMgdG8gYSBiYXNlIGNvbW1hbmRzIHRoYXQgcmVxdWVzdCB0aGVtIGluIHRoZWlyIHNwZWNcbiAqIGV4cGFuZGVkIHN1YmNvbW1hbmQgcGF0aFxuICogYXJncyBwYXNzZWQgdG8gdGhlIGJhc2UgY29tbWFuZFxuICogaGVscCB0ZXh0IGZvciB0aGUgYmFzZSBjb21tYW5kXG4qKVxubW9kdWxlIEVudiA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaXZfbWFwXG5cbiAgbGV0IGtleV9jcmVhdGUgbmFtZSA9IFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWUgU2V4cGxpYi5Db252LnNleHBfb2Zfb3BhcXVlXG4gIGxldCBtdWx0aV9hZGQgPSBVbml2X21hcC5NdWx0aS5hZGRcbiAgbGV0IHNldF93aXRoX2RlZmF1bHQgPSBVbml2X21hcC5XaXRoX2RlZmF1bHQuc2V0XG5lbmRcblxubW9kdWxlIFBhcnNpbmdfb3V0Y29tZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgcmVzdWx0IDogKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnRcbiAgICA7IGhhc19hcmcgOiBib29sXG4gICAgfVxuXG4gIHZhbCByZXR1cm5fbm9fYXJnIDogJ2EgLT4gJ2EgdFxuICB2YWwgcmV0dXJuX3dpdGhfYXJnIDogJ2EgLT4gJ2EgdFxuICB2YWwgZXJyb3IgOiBoYXNfYXJnOmJvb2wgLT4gWyBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBvZiBFcnJvci50IF0gLT4gJ2EgdFxuICB2YWwgcmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgOiAnYSB0IC0+ICdhIHQgdFxuXG4gIHZhbCBpbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgIDogICgnYSwgWyBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBvZiBFcnJvci50IF0pIFJlc3VsdC50IHRcbiAgICAtPiAnYSB0XG5cbiAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcmVzdWx0IDogKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnRcbiAgICA7IGhhc19hcmcgOiBib29sXG4gICAgfVxuXG4gIGxldCBhcHBseSBmIHggPVxuICAgIHsgcmVzdWx0ID1cbiAgICAgICAgUmVzdWx0LmNvbWJpbmVcbiAgICAgICAgICBmLnJlc3VsdFxuICAgICAgICAgIHgucmVzdWx0XG4gICAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgICB+ZXJyOihmdW4gKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycl8xKSAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgX2Vycl8yKSAtPlxuICAgICAgICAgICAgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyXzEpXG4gICAgOyBoYXNfYXJnID0gZi5oYXNfYXJnIHx8IHguaGFzX2FyZ1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9IHsgcmVzdWx0ID0gT2sgdDsgaGFzX2FyZyA9IHQuaGFzX2FyZyB9XG5cbiAgbGV0IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgIHsgcmVzdWx0ID0gUmVzdWx0LmpvaW4gdC5yZXN1bHQ7IGhhc19hcmcgPSB0Lmhhc19hcmcgfVxuICA7O1xuXG4gIGxldCBtYXAgeyByZXN1bHQ7IGhhc19hcmcgfSB+ZiA9IHsgcmVzdWx0ID0gUmVzdWx0Lm1hcCByZXN1bHQgfmY7IGhhc19hcmcgfVxuICBsZXQgcmV0dXJuX25vX2FyZyB2ID0geyByZXN1bHQgPSBPayB2OyBoYXNfYXJnID0gZmFsc2UgfVxuICBsZXQgcmV0dXJuX3dpdGhfYXJnIHYgPSB7IHJlc3VsdCA9IE9rIHY7IGhhc19hcmcgPSB0cnVlIH1cbiAgbGV0IGVycm9yIH5oYXNfYXJnIGVyciA9IHsgcmVzdWx0ID0gRXJyb3IgZXJyOyBoYXNfYXJnIH1cblxuICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVybl9ub19hcmdcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEF1dG9fY29tcGxldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gc3RyaW5nIGxpc3RcblxuICBtb2R1bGUgRm9yX2VzY2FwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEVudi50IC0+IHBhcnQ6c3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbXBsZXRlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBBdXRvX2NvbXBsZXRlLnQgb3B0aW9uXG5cbiAgbW9kdWxlIEZvcl9lc2NhcGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBBdXRvX2NvbXBsZXRlLkZvcl9lc2NhcGUudCBvcHRpb25cbiAgZW5kXG5cbiAgbGV0IHJ1bl9hbmRfZXhpdCB0IGVudiB+cGFydCA6IE5vdGhpbmcudCA9XG4gICAgT3B0aW9uLml0ZXIgdCB+ZjooZnVuIGNvbXBsZXRpb25zIC0+XG4gICAgICBMaXN0Lml0ZXIgfmY6cHJpbnRfZW5kbGluZSAoY29tcGxldGlvbnMgZW52IH5wYXJ0KSk7XG4gICAgZXhpdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEFyZ190eXBlIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBleHRyYV9kb2MgOiAnYSB0IC0+IHN0cmluZyBvcHRpb24gbGF6eV90XG4gIHZhbCBrZXkgOiAnYSB0IC0+ICdhIEVudi5NdWx0aS5LZXkudCBvcHRpb25cbiAgdmFsIGNvbXBsZXRlIDogJ2EgdCAtPiBDb21wbGV0ZXIudFxuICB2YWwgcGFyc2UgOiAnYSB0IC0+IHN0cmluZyAtPiAnYSBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgLT4gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBtYXAgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYiB0IC0+IGY6KCdiIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9sYXp5IDogP2tleTonYSBFbnYuTXVsdGkuS2V5LnQgLT4gJ2EgdCBsYXp5X3QgLT4gJ2EgdFxuXG4gIHZhbCBvZl9tYXBcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAnYSBNYXAuTShTdHJpbmcpLnRcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIC0+ICdhIHRcblxuICB2YWwgZW51bWVyYXRlZFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChtb2R1bGUgRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBjb21tYV9zZXBhcmF0ZWRcbiAgICA6ICA/YWxsb3dfZW1wdHk6Ym9vbFxuICAgIC0+ID9rZXk6J2EgbGlzdCBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiA/c3RyaXBfd2hpdGVzcGFjZTpib29sXG4gICAgLT4gP3VuaXF1ZV92YWx1ZXM6Ym9vbFxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSBsaXN0IHRcblxuICBtb2R1bGUgRXhwb3J0IDogc2lnXG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGludCA6IGludCB0XG4gICAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIGJvb2wgOiBib29sIHRcbiAgICB2YWwgc2V4cCA6IFNleHAudCB0XG4gICAgdmFsIHNleHBfY29udiA6ID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnQgLT4gKFNleHAudCAtPiAnYSkgLT4gJ2EgdFxuICBlbmRcblxuICB2YWwgYXV0b19jb21wbGV0ZSA6IF8gdCAtPiBBdXRvX2NvbXBsZXRlLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGFyc2UgOiBzdHJpbmcgLT4gJ2FcbiAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICA7IGtleSA6ICdhIFVuaXZfbWFwLk11bHRpLktleS50IG9wdGlvblxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgcGFyc2UgdCBzID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiB0LnBhcnNlIHMpXG4gIGxldCBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IHBhcnNlIH5leHRyYV9kb2MgPSB7IHBhcnNlOyBrZXk7IGNvbXBsZXRlOyBleHRyYV9kb2MgfVxuXG4gIGxldCBjcmVhdGUgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nID1cbiAgICBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyB+ZXh0cmFfZG9jOihMYXp5LmZyb21fdmFsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IG1hcCA/a2V5IHQgfmYgPSB7IHQgd2l0aCBrZXk7IHBhcnNlID0gKGZ1biBzIC0+IGYgKHQucGFyc2UgcykpIH1cblxuICBsZXQgb2ZfbGF6eSA/a2V5IHQgPVxuICAgIGxldCBwYXJzZSBzdHIgPSAoZm9yY2UgdCkucGFyc2Ugc3RyIGluXG4gICAgbGV0IGNvbXBsZXRlIGVudiB+cGFydCA9XG4gICAgICBtYXRjaCAoZm9yY2UgdCkuY29tcGxldGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFNlZSBbcnVuX2FuZF9leGl0XSAtIG5vIGNvbXBsZXRpb25zIGlzIGVxdWl2YWxlbnQgdG8gbm90IGhhdmluZyBhXG4gICAgICAgICAgIFtDb21wbGV0ZV0uICopXG4gICAgICAgIFtdXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgZW52IH5wYXJ0XG4gICAgaW5cbiAgICBsZXQgZXh0cmFfZG9jID0gTGF6eS5iaW5kIHQgfmY6ZXh0cmFfZG9jIGluXG4gICAgeyBwYXJzZTsgY29tcGxldGUgPSBTb21lIGNvbXBsZXRlOyBrZXk7IGV4dHJhX2RvYyB9XG4gIDs7XG5cbiAgbGV0IHN0cmluZyA9IGNyZWF0ZSBGbi5pZFxuICBsZXQgaW50ID0gY3JlYXRlIEludC5vZl9zdHJpbmdcbiAgbGV0IGNoYXIgPSBjcmVhdGUgQ2hhci5vZl9zdHJpbmdcbiAgbGV0IGZsb2F0ID0gY3JlYXRlIEZsb2F0Lm9mX3N0cmluZ1xuICBsZXQgc2V4cCA9IGNyZWF0ZSBQYXJzZXhwLlNpbmdsZS5wYXJzZV9zdHJpbmdfZXhuXG5cbiAgbGV0IHNleHBfY29udiA/Y29tcGxldGUgb2Zfc2V4cCA9XG4gICAgY3JlYXRlID9jb21wbGV0ZSAoZnVuIHMgLT4gb2Zfc2V4cCAoUGFyc2V4cC5TaW5nbGUucGFyc2Vfc3RyaW5nX2V4biBzKSlcbiAgOztcblxuICBsZXQgYXNzb2NpYXRpdmVcbiAgICAgICAgPyhhY2NlcHRfdW5pcXVlX3ByZWZpeGVzID0gdHJ1ZSlcbiAgICAgICAgPyhsaXN0X3ZhbHVlc19pbl9oZWxwID0gdHJ1ZSlcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgYWxpc3RcbiAgICA9XG4gICAgbGV0IG9wZW4gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgICAgdmFsIGlzX3ByZWZpeCA6IHN0cmluZyAtPiBwcmVmaXg6c3RyaW5nIC0+IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IFQgOlxuICAgICAgICAgICAgeyBjbXAgOiAobW9kdWxlIFMgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgICAgICAgICA7IG1hcCA6IChzdHJpbmcsICdhLCAnY21wKSBNYXAudFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLT4gJ2EgdFxuICAgIGVuZCBpblxuICAgIGxldCAoVCB7IGNtcCA9IChtb2R1bGUgUyk7IG1hcCB9KSA9XG4gICAgICBsZXQgbWFrZV9tYXBfcmFpc2VfZHVwbGljYXRlX2tleVxuICAgICAgICAgICAgKHR5cGUgY21wKVxuICAgICAgICAgICAgKG1vZHVsZSBTIDogUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICAgICAgYWxpc3RcbiAgICAgICAgPVxuICAgICAgICBtYXRjaCBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTKSBhbGlzdCB3aXRoXG4gICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgfCBgRHVwbGljYXRlX2tleSAoXyA6IFMudCkgLT5cbiAgICAgICAgICBsZXQgZHVwbGljYXRlX2tleXMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoaywgKF8gOiAnYSkpIC0+IGssIGspXG4gICAgICAgICAgICB8PiBNYXAub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBTKVxuICAgICAgICAgICAgfD4gTWFwLmZpbHRlciB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IGZhbHNlXG4gICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgIHw+IE1hcC5kYXRhXG4gICAgICAgICAgaW5cbiAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJDb21tYW5kLlNwZWMuQXJnX3R5cGUub2ZfYWxpc3RfZXhuXCIgKGR1cGxpY2F0ZV9rZXlzIDogc3RyaW5nIGxpc3QgbGlzdCldXG4gICAgICBpblxuICAgICAgbGV0IG1ha2UgY21wID0gVCB7IGNtcDsgbWFwID0gbWFrZV9tYXBfcmFpc2VfZHVwbGljYXRlX2tleSBjbXAgYWxpc3QgfSBpblxuICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBtYWtlIChtb2R1bGUgU3RyaW5nKSBlbHNlIG1ha2UgKG1vZHVsZSBTdHJpbmcuQ2FzZWxlc3MpXG4gICAgaW5cbiAgICBsZXQgY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4ID1cbiAgICAgIG1hdGNoIGF1dG9fY29tcGxldGUgd2l0aFxuICAgICAgfCBTb21lIGNvbXBsZXRlIC0+IGNvbXBsZXRlIHVuaXZfbWFwIH5wYXJ0OnByZWZpeFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIExpc3QuZmlsdGVyX21hcCAoTWFwLnRvX2FsaXN0IG1hcCkgfmY6KGZ1biAobmFtZSwgXykgLT5cbiAgICAgICAgICBtYXRjaCBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXggd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgKCogQmFzaCBjb21wbGV0aW9uIHdpbGwgbm90IGFjY2VwdCBbRm9vXSBhcyBhIGNvbXBsZXRpb24gZm9yIFtmXS4gU28gd2UgbmVlZFxuICAgICAgICAgICAgICAgdG8gbWF0Y2ggdGhlIGNhcGl0YWxpemF0aW9uIGdpdmVuLiAqKVxuICAgICAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWJvIG5hbWUgfnBvczooU3RyaW5nLmxlbmd0aCBwcmVmaXgpIGluXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHByZWZpeCBeIHN1ZmZpeCBpblxuICAgICAgICAgICAgU29tZSBuYW1lKVxuICAgIGluXG4gICAgbGV0IGZpbmQgYXJnID1cbiAgICAgIG1hdGNoIE1hcC5maW5kIG1hcCBhcmcgd2l0aFxuICAgICAgfCBTb21lIF8gYXMgcyAtPiBzXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIE1hcC50b19hbGlzdCBtYXBcbiAgICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAobmFtZSwgXykgLT4gUy5pc19wcmVmaXggbmFtZSB+cHJlZml4OmFyZylcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWyAoX3NpbmdsZXRvbl9rZXksIHYpIF0gLT4gU29tZSB2XG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgKCogSW4gdGhlIHR3by1vci1tb3JlIGNhc2Ugd2UgY291bGQgcHJvdmlkZSBmaWx0ZXJlZCBoZWxwIHRleHQsIGJ1dCBpdCdzXG4gICAgICAgICAgICAgICAgIG1vcmUgZ2VuZXJhbGx5IHVzZWZ1bCB0byBsaXN0IGFsbCB0aGUgb3B0aW9ucywgd2hpY2ggd2UgZG8gYmVsb3cuICopXG4gICAgICAgICAgICAgIE5vbmUpKVxuICAgIGluXG4gICAgY3JlYXRlJ1xuICAgICAgfmV4dHJhX2RvYzpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAoaWYgbGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgdmFsdWVzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTWFwLmtleXMgbWFwKSBpblxuICAgICAgICAgICAgIFNvbWUgWyVzdHJpbmcgXCIoY2FuIGJlOiAle3ZhbHVlc30pXCJdKVxuICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgP2tleVxuICAgICAgfmNvbXBsZXRlXG4gICAgICAoZnVuIGFyZyAtPlxuICAgICAgICAgbWF0Y2ggZmluZCBhcmcgd2l0aFxuICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB2YWxpZF9hcmd1bWVudHNfZXh0cmEgPVxuICAgICAgICAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlIHRoZW4gXCJcIiBlbHNlIFwiIChjYXNlIGluc2Vuc2l0aXZlKVwiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgIFwidmFsaWQgYXJndW1lbnRzJXM6IHslc31cIlxuICAgICAgICAgICAgIHZhbGlkX2FyZ3VtZW50c19leHRyYVxuICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKE1hcC5rZXlzIG1hcCkpXG4gICAgICAgICAgICAgKCkpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4blxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/KGNhc2Vfc2Vuc2l0aXZlID0gdHJ1ZSlcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBhc3NvY2lhdGl2ZVxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgfmNhc2Vfc2Vuc2l0aXZlXG4gICAgICBhbGlzdFxuICA7O1xuXG4gIGxldCBvZl9tYXBcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgbWFwXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAoTWFwLnRvX2FsaXN0IG1hcClcbiAgOztcblxuICBsZXQgZW51bWVyYXRlZFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICAobW9kdWxlIEUgOiBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSB0KVxuICAgID1cbiAgICBvZl9hbGlzdF9leG5cbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKGxldCVtYXAuTGlzdCB0ID0gRS5hbGwgaW5cbiAgICAgICBFLnRvX3N0cmluZyB0LCB0KVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSB0KVxuICAgID1cbiAgICBlbnVtZXJhdGVkXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRVxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIFslc2V4cCAodCA6IEUudCldXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgbGV0IGJvb2wgPSBlbnVtZXJhdGVkIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlIChtb2R1bGUgQm9vbClcblxuICBsZXQgY29tbWFfc2VwYXJhdGVkXG4gICAgICAgID8oYWxsb3dfZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgP2tleVxuICAgICAgICA/KHN0cmlwX3doaXRlc3BhY2UgPSBmYWxzZSlcbiAgICAgICAgPyh1bmlxdWVfdmFsdWVzID0gZmFsc2UpXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IHN0cmlwID0gaWYgc3RyaXBfd2hpdGVzcGFjZSB0aGVuIGZ1biBzdHIgLT4gU3RyaW5nLnN0cmlwIHN0ciBlbHNlIEZuLmlkIGluXG4gICAgbGV0IGNvbXBsZXRlID1cbiAgICAgIE9wdGlvbi5tYXAgdC5jb21wbGV0ZSB+ZjooZnVuIGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbGV0IHByZWZpeGVzLCBzdWZmaXggPVxuICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBwYXJ0IH5vbjonLCcgfD4gTGlzdC5yZXYgd2l0aFxuICAgICAgICAgIHwgW10gLT4gW10sIHBhcnRcbiAgICAgICAgICB8IGhkIDo6IHRsIC0+IExpc3QucmV2IHRsLCBoZFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfYWxsb3dlZCA9XG4gICAgICAgICAgaWYgbm90IHVuaXF1ZV92YWx1ZXNcbiAgICAgICAgICB0aGVuIGZ1biAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHNlZW5fYWxyZWFkeSA9XG4gICAgICAgICAgICAgIHByZWZpeGVzIHw+IExpc3QubWFwIH5mOnN0cmlwIHw+IFNldC5vZl9saXN0IChtb2R1bGUgU3RyaW5nKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZ1biBjaG9pY2UgLT4gbm90IChTZXQubWVtIHNlZW5fYWxyZWFkeSAoc3RyaXAgY2hvaWNlKSkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQ6c3VmZml4KSB+ZjooZnVuIGNob2ljZSAtPlxuICAgICAgICAgICAgICAobm90IChTdHJpbmcubWVtIGNob2ljZSAnLCcpKSAmJiBpc19hbGxvd2VkIGNob2ljZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgY2hvaWNlIHRvIGF1dG8tY29tcGxldGUsIGFkZCBhIHNlY29uZCBjaG9pY2Ugd2l0aFxuICAgICAgICAgICAgIGEgdHJhaWxpbmcgY29tbWEgc28gdGhhdCBhdXRvLWNvbXBsZXRpb24gd2lsbCBnbyB0byB0aGUgZW5kIGJ1dCBiYXNoXG4gICAgICAgICAgICAgd29uJ3QgYWRkIGEgc3BhY2UuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY2hvaWNlcywgb3IgYSBzaW5nbGUgY2hvaWNlXG4gICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGZpbmFsLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIGR1bW15IG9wdGlvbi4gKilcbiAgICAgICAgICB8IFsgY2hvaWNlIF0gLT4gWyBjaG9pY2U7IGNob2ljZSBeIFwiLFwiIF1cbiAgICAgICAgICB8IGNob2ljZXMgLT4gY2hvaWNlc1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCBjaG9pY2VzIH5mOihmdW4gY2hvaWNlIC0+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAocHJlZml4ZXMgQCBbIGNob2ljZSBdKSkpXG4gICAgaW5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgc3RyaW5nID0gc3RyaXAgc3RyaW5nIGluXG4gICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFsbG93X2VtcHR5XG4gICAgICAgIHRoZW4gW11cbiAgICAgICAgZWxzZSBmYWlsd2l0aCBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5jb21tYV9zZXBhcmF0ZWQ6IGVtcHR5IGxpc3Qgbm90IGFsbG93ZWRcIlxuICAgICAgZWxzZSBMaXN0Lm1hcCAoU3RyaW5nLnNwbGl0IHN0cmluZyB+b246JywnKSB+ZjooZnVuIHN0ciAtPiB0LnBhcnNlIChzdHJpcCBzdHIpKVxuICAgIGluXG4gICAgY3JlYXRlID9rZXkgP2NvbXBsZXRlIG9mX3N0cmluZ1xuICA7O1xuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICBsZXQgc3RyaW5nID0gc3RyaW5nXG4gICAgbGV0IGludCA9IGludFxuICAgIGxldCBjaGFyID0gY2hhclxuICAgIGxldCBmbG9hdCA9IGZsb2F0XG4gICAgbGV0IGJvb2wgPSBib29sXG4gICAgbGV0IHNleHAgPSBzZXhwXG4gICAgbGV0IHNleHBfY29udiA9IHNleHBfY29udlxuICBlbmRcblxuICBsZXQgYXV0b19jb21wbGV0ZSB0ID1cbiAgICBtYXRjaCB0LmNvbXBsZXRlIHdpdGhcbiAgICB8IFNvbWUgZiAtPiBmXG4gICAgfCBOb25lIC0+IGZ1biBfIH5wYXJ0Ol8gLT4gW11cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZyA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnQgPVxuICAgICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmcgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdcblxuICAgIGxldCB0b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gXyB9IGZsYWdfbmFtZSA9XG4gICAgICB0b19oZWxwX3N0cmluZyB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfSB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIGxldCBhbnkgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9sZWFzdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9tb3N0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gICAgbGV0IGV4YWN0bHlfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICBlbmRcblxuICB0eXBlIGFjdGlvbiA9XG4gICAgfCBOb19hcmcgb2YgKEVudi50IC0+IEVudi50KVxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBvZiAoRW52LnQgLT4gc3RyaW5nKVxuICAgIHwgQXJnIG9mIChFbnYudCAtPiBzdHJpbmcgLT4gRW52LnQpICogQ29tcGxldGVyLnRcbiAgICB8IFJlc3Qgb2YgKEVudi50IC0+IHN0cmluZyBsaXN0IC0+IEVudi50KSAqIENvbXBsZXRlci5Gb3JfZXNjYXBlLnRcblxuICBtb2R1bGUgSW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA6IHN0cmluZyBsaXN0XG4gICAgICAoKiBbYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBdIGFyZSBhbGlhc2VzIHRoYXQgZG9uJ3Qgc2hvdyB1cCBpbiAtaGVscCBvdXRwdXQuXG4gICAgICAgICBDdXJyZW50bHkgdGhleSdyZSBvbmx5IHVzZWQgZm9yIGRvdWJsZS1kYXNoIGJ1aWx0LWluIGZsYWdzIGxpa2UgLS1oZWxwIGFuZFxuICAgICAgICAgLS12ZXJzaW9uLiAqKVxuICAgICAgOyBhY3Rpb24gOiBhY3Rpb25cbiAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgICA7IGNoZWNrX2F2YWlsYWJsZSA6IEVudi50IC0+IHVuaXRcbiAgICAgIDsgbmFtZV9tYXRjaGluZyA6IFsgYFByZWZpeCB8IGBGdWxsX21hdGNoX3JlcXVpcmVkIF1cbiAgICAgIH1cblxuICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgZmxhZ19uYW1lID1cbiAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZyB0Lm51bV9vY2N1cnJlbmNlcyB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIG1vZHVsZSBEb2MgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgYXJnX2RvYyA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2UgfmFjdGlvbiB+ZG9jID1cbiAgICAgICAgbGV0IGFyZ19kb2MsIGRvYyA9XG4gICAgICAgICAgbWF0Y2ggKGFjdGlvbiA6IGFjdGlvbiksIFN0cmluZy5sc3BsaXQyIGRvYyB+b246JyAnIHdpdGhcbiAgICAgICAgICB8IChOb19hcmcgXyB8IFByaW50X2luZm9fYW5kX3F1aXQgXyksIF8gLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCBBcmcgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gU29tZSBcIl9cIiwgZG9jXG4gICAgICAgICAgfCBSZXN0IF8sIChOb25lIHwgU29tZSAoXCJcIiwgXykpIC0+IE5vbmUsIGRvY1xuICAgICAgICAgIHwgKEFyZyBfIHwgUmVzdCBfKSwgU29tZSAoYXJnLCBkb2MpIC0+IFNvbWUgYXJnLCBkb2NcbiAgICAgICAgaW5cbiAgICAgICAgeyBkb2MgPSBTdHJpbmcuc3RyaXAgZG9jOyBhcmdfZG9jIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBjb25jYXQgfm5hbWUgfmFyZ19kb2MgPVxuICAgICAgICBtYXRjaCBhcmdfZG9jIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5hbWVcbiAgICAgICAgfCBTb21lIGFyZ19kb2MgLT4gbmFtZSBeIFwiIFwiIF4gYXJnX2RvY1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBsZXQgd3JhcF9pZl9vcHRpb25hbCB0IHggPVxuICAgICAgICBOdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdfZGVwcmVjYXRlZCB0Lm51bV9vY2N1cnJlbmNlcyB4XG4gICAgICA7O1xuXG4gICAgICAoKiBmbGFnIGhlbHAgaW4gdGhlIGZvcm1hdCBvZiB0aGUgb2xkIGNvbW1hbmQuIHVzZWQgZm9yIGluamVjdGlvbiAqKVxuICAgICAgbGV0IGhlbHBcbiAgICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgICAgfSBhcyB0KVxuICAgICAgICA9XG4gICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggZG9jIH5wcmVmaXg6XCIgXCJcbiAgICAgICAgdGhlblxuICAgICAgICAgIChuYW1lLCBTdHJpbmcubHN0cmlwIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPiB4LCBzcHJpbnRmIFwic2FtZSBhcyBcXFwiJXNcXFwiXCIgbmFtZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgRG9jLmFyZ19kb2M7IGRvYyB9ID0gRG9jLnBhcnNlIH5hY3Rpb24gfmRvYyBpblxuICAgICAgICAgICh3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWUgfmFyZ19kb2MpLCBkb2MpXG4gICAgICAgICAgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICggd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lOnggfmFyZ19kb2MpXG4gICAgICAgICAgICAsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lICkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhbGlnblxuICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgOyBkb2NcbiAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwID0gX1xuICAgICAgICAgICB9IGFzIHQpXG4gICAgICA6IFNoYXBlLkZsYWdfaW5mby50XG4gICAgICA9XG4gICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICBsZXQgbmFtZSA9IHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYykgaW5cbiAgICAgIHsgbmFtZTsgZG9jOyBhbGlhc2VzIH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBmbGFncyA9XG4gICAgICBtYXRjaFxuICAgICAgICBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lLCBmbGFnKSlcbiAgICAgIHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgZmxhZyAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgZmxhZ3MgfmY6KGZ1biBmbGFnIC0+IGZsYWcubmFtZSA6OiBmbGFnLmFsaWFzZXMpXG4gICAgICAgIHw+IExpc3QuZmluZF9hX2R1cCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ11cbiAgICAgICAgfD4gT3B0aW9uLml0ZXIgfmY6KGZ1biB4IC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG9yIGFsaWFzZXMgbmFtZWQgJXNcIiB4ICgpKTtcbiAgICAgICAgbWFwXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgeyBhY3Rpb24gOiBhY3Rpb25cbiAgICA7IHJlYWQgOiBFbnYudCAtPiAnYSBQYXJzaW5nX291dGNvbWUudFxuICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICA7IGV4dHJhX2RvYyA6IHN0cmluZyBvcHRpb24gTGF6eS50XG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHN0cmluZyAtPiAnYSBzdGF0ZVxuXG4gIGxldCBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzID1cbiAgICB7IHJlYWRcbiAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgIDsgYWN0aW9uID1cbiAgICAgICAgKGxldCB1cGRhdGUgZW52IGFyZyA9XG4gICAgICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFyZyB3aXRoXG4gICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTLlxcbiVzXCJcbiAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgIGFyZ1xuICAgICAgICAgICAgICAgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICB8IE9rIGFyZyAtPlxuICAgICAgICAgICAgIGxldCBlbnYgPSB3cml0ZSBlbnYgYXJnIGluXG4gICAgICAgICAgICAgKG1hdGNoIEFyZ190eXBlLmtleSBhcmdfdHlwZSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBlbnZcbiAgICAgICAgICAgICAgfCBTb21lIGtleSAtPiBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOmFyZylcbiAgICAgICAgIGluXG4gICAgICAgICBBcmcgKHVwZGF0ZSwgQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUpKVxuICAgIDsgZXh0cmFfZG9jID0gQXJnX3R5cGUuZXh0cmFfZG9jIGFyZ190eXBlXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYXBfZmxhZyAodCA6IF8gdCkgfmYgaW5wdXQgPVxuICAgIGxldCB7IGFjdGlvbjsgcmVhZDsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfSA9IHQgaW5wdXQgaW5cbiAgICB7IGFjdGlvblxuICAgIDsgcmVhZCA9IChmdW4gZW52IC0+IFBhcnNpbmdfb3V0Y29tZS5tYXAgKHJlYWQgZW52KSB+ZilcbiAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgIDsgZXh0cmFfZG9jXG4gICAgfVxuICA7O1xuXG4gIGxldCB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyA9XG4gICAgRW52LnVwZGF0ZSBlbnYga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGFyZ1xuICAgICAgfCBTb21lIF8gLT4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpKVxuICA7O1xuXG4gIGxldCByZXF1aXJlZF92YWx1ZSA/ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggZGVmYXVsdCB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSkpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIG51bV9vY2N1cnJlbmNlc1xuICA7O1xuXG4gIGxldCByZXF1aXJlZCBhcmdfdHlwZSBuYW1lID0gcmVxdWlyZWRfdmFsdWUgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuZXhhY3RseV9vbmNlXG5cbiAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCBkZWZhdWx0IGFyZ190eXBlIG5hbWUgPVxuICAgIHJlcXVpcmVkX3ZhbHVlIH5kZWZhdWx0IGFyZ190eXBlIG5hbWUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBvcHRpb25hbCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBOb25lXG4gICAgICB8IFNvbWUgXyBhcyB2YWx1ZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgOztcblxuICBsZXQgbm9fYXJnX2dlbmVyYWwgfmlzX3JlcXVpcmVkIH5rZXlfdmFsdWUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiB1bml0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYubWVtIGVudiBrZXkgd2l0aFxuICAgICAgfCB0cnVlIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdHJ1ZVxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBpZiBpc19yZXF1aXJlZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSlcbiAgICAgICAgZWxzZSBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBmYWxzZVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiA9XG4gICAgICBpZiBFbnYubWVtIGVudiBrZXlcbiAgICAgIHRoZW4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpXG4gICAgICBlbHNlIEVudi5zZXQgZW52IH5rZXkgfmRhdGE6KClcbiAgICBpblxuICAgIGxldCBhY3Rpb24gZW52ID1cbiAgICAgIGxldCBlbnYgPVxuICAgICAgICBPcHRpb24uZm9sZCBrZXlfdmFsdWUgfmluaXQ6ZW52IH5mOihmdW4gZW52IChrZXksIHZhbHVlKSAtPlxuICAgICAgICAgIEVudi5zZXRfd2l0aF9kZWZhdWx0IGVudiB+a2V5IH5kYXRhOnZhbHVlKVxuICAgICAgaW5cbiAgICAgIHdyaXRlIGVudlxuICAgIGluXG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBtYXRjaCBkZXByZWNhdGVkX2hvb2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjdGlvblxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgZnVuIGVudiAtPlxuICAgICAgICAgIGxldCBlbnYgPSBhY3Rpb24gZW52IGluXG4gICAgICAgICAgZiAoKTtcbiAgICAgICAgICBlbnZcbiAgICBpblxuICAgIHsgcmVhZFxuICAgIDsgYWN0aW9uID0gTm9fYXJnIGFjdGlvblxuICAgIDsgbnVtX29jY3VycmVuY2VzID1cbiAgICAgICAgKGlmIGlzX3JlcXVpcmVkXG4gICAgICAgICB0aGVuIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcbiAgICAgICAgIGVsc2UgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZSlcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnIG5hbWUgPVxuICAgIG5vX2FyZ19nZW5lcmFsIG5hbWUgfmlzX3JlcXVpcmVkOmZhbHNlIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcbiAgOztcblxuICBsZXQgbm9fYXJnX3JlcXVpcmVkIHYgbmFtZSA9XG4gICAgbWFwX2ZsYWdcbiAgICAgIChub19hcmdfZ2VuZXJhbCB+aXNfcmVxdWlyZWQ6dHJ1ZSB+a2V5X3ZhbHVlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lKVxuICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPiB2XG4gICAgICAgIHwgZmFsc2UgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgbmFtZVxuICA7O1xuXG4gIGxldCBub19hcmdfcmVnaXN0ZXIgfmtleSB+dmFsdWUgbmFtZSA9XG4gICAgbm9fYXJnX2dlbmVyYWxcbiAgICAgIG5hbWVcbiAgICAgIH5pc19yZXF1aXJlZDpmYWxzZVxuICAgICAgfmtleV92YWx1ZTooU29tZSAoa2V5LCB2YWx1ZSkpXG4gICAgICB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcbiAgOztcblxuICBsZXQgbm9fYXJnX3NvbWUgdmFsdWUgPVxuICAgIG1hcF9mbGFnIG5vX2FyZyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBTb21lIHZhbHVlXG4gICAgICB8IGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbGV0IGxpc3RlZCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBMaXN0LnJldiAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgW10gLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgW11cbiAgICAgIHwgXyA6OiBfIGFzIHZhbHVlX2xpc3QgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB2YWx1ZV9saXN0XG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBsaXN0IC0+IGFyZyA6OiBsaXN0KSBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYW55XG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5XaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDpbXSB+bmFtZSBbJXNleHBfb2Y6IF8gbGlzdF0gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggTGlzdC5yZXYgKEVudi5XaXRoX2RlZmF1bHQuZmluZCBlbnYga2V5KSB3aXRoXG4gICAgICB8IGZpcnN0IDo6IHJlc3QgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyAoZmlyc3QsIHJlc3QpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFBhcnNpbmdfb3V0Y29tZS5lcnJvclxuICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyAoc3ByaW50ZiBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lKSkpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBxIC0+IGFyZyA6OiBxKSBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZVxuICA7O1xuXG4gIGxldCBvbmVfb3JfbW9yZV9hc19saXN0IGFyZ190eXBlID1cbiAgICBvbmVfb3JfbW9yZV9hc19wYWlyIGFyZ190eXBlIHw+IG1hcF9mbGFnIH5mOihmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKVxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF0gaW5cbiAgICBsZXQgYWN0aW9uIGVudiBjbWRfbGluZSA9IEVudi5zZXQgZW52IH5rZXkgfmRhdGE6Y21kX2xpbmUgaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgTm9uZVxuICAgICAgfCBTb21lIF8gYXMgdmFsdWUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB2YWx1ZVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBtYXRjaCBkZXByZWNhdGVkX2hvb2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjdGlvblxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgZnVuIGVudiB4IC0+XG4gICAgICAgICAgZiB4O1xuICAgICAgICAgIGFjdGlvbiBlbnYgeFxuICAgIGluXG4gICAgeyBhY3Rpb24gPSBSZXN0IChhY3Rpb24sIGNvbXBsZXRlKVxuICAgIDsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmdfYWJvcnQgfmV4aXQgX25hbWUgPVxuICAgIHsgYWN0aW9uID0gTm9fYXJnIChmdW4gXyAtPiBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGUgKGV4aXQgKCkpKVxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgcmVhZCA9XG4gICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAoKiBXZSBrbm93IHRoYXQgdGhlIGZsYWcgd2Fzbid0IHBhc3NlZCBoZXJlIGJlY2F1c2UgaWYgaXQgd2FzIHBhc3NlZFxuICAgICAgICAgICAgICB0aGVuIHRoZSBbYWN0aW9uXSB3b3VsZCBoYXZlIGNhbGxlZCBbZXhpdF0uICopXG4gICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnICgpKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgbmFtZSA9IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG5cbiAgbGV0IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZSB+Y29tcGxldGUgbmFtZSA9XG4gICAgZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlOihTb21lIGNvbXBsZXRlKSB+ZGVwcmVjYXRlZF9ob29rOk5vbmUgbmFtZVxuICA7O1xuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IG5vX2FyZyB+aG9vayBuYW1lID1cbiAgICAgIG5vX2FyZ19nZW5lcmFsIH5pc19yZXF1aXJlZDpmYWxzZSB+ZGVwcmVjYXRlZF9ob29rOihTb21lIGhvb2spIH5rZXlfdmFsdWU6Tm9uZSBuYW1lXG4gICAgOztcblxuICAgIGxldCBlc2NhcGUgfmhvb2sgPSBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOihTb21lIGhvb2spXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQYXRoIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGNyZWF0ZSA6IHBhdGhfdG9fZXhlOnN0cmluZyAtPiB0XG4gIHZhbCBvZl9wYXJ0cyA6IHN0cmluZyBsaXN0IC0+IHRcbiAgdmFsIGFwcGVuZCA6IHQgLT4gc3ViY29tbWFuZDpzdHJpbmcgLT4gdFxuICB2YWwgcmVwbGFjZV9maXJzdCA6IHQgLT4gZnJvbTpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB0XG4gIHZhbCBwYXJ0cyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHBhcnRzX2V4ZV9iYXNlbmFtZSA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfZG90cyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBwb3BfaGVscCA6IHQgLT4gdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3RcblxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgY3JlYXRlIH5wYXRoX3RvX2V4ZSA9IFsgcGF0aF90b19leGUgXVxuICBsZXQgb2ZfcGFydHMgcGFydHMgPSBMaXN0LnJldiBwYXJ0c1xuICBsZXQgYXBwZW5kIHQgfnN1YmNvbW1hbmQgPSBzdWJjb21tYW5kIDo6IHRcbiAgbGV0IHBhcnRzID0gTGlzdC5yZXZcblxuICBsZXQgcGFydHNfZXhlX2Jhc2VuYW1lIHQgPVxuICAgIG1hdGNoIExpc3QucmV2IHQgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IGhkIDo6IHRsIC0+IEZpbGVuYW1lX2Jhc2UuYmFzZW5hbWUgaGQgOjogdGxcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSB1bndvcmRzIChwYXJ0c19leGVfYmFzZW5hbWUgdClcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoXG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgdCB+ZnJvbSB+dG9fID1cbiAgICBsZXQgcmVjIGF1eCBwYXJ0cyB+YWNjIH5mcm9tIH50b18gPVxuICAgICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgaWYgU3RyaW5nLiggPSApIGhkIGZyb21cbiAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgdGwgKHRvXyA6OiBhY2MpXG4gICAgICAgIGVsc2UgYXV4IHRsIH5hY2M6KGhkIDo6IGFjYykgfmZyb20gfnRvX1xuICAgIGluXG4gICAgYXV4IChwYXJ0cyB0KSB+YWNjOltdIH5mcm9tIH50b19cbiAgOztcblxuICBsZXQgcG9wX2hlbHAgPSBmdW5jdGlvblxuICAgIHwgXCJoZWxwXCIgOjogdCAtPiB0XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfZG90cyB0ID1cbiAgICAobWF0Y2ggdCB3aXRoXG4gICAgIHwgW10gLT4gW11cbiAgICAgfCBsYXN0IDo6IGluaXQgLT4gbGFzdCA6OiBMaXN0Lm1hcCBpbml0IH5mOihGbi5jb25zdCBcIi5cIikpXG4gICAgfD4gdG9fc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxuZW5kXG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA6IHNpZ1xuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsIG9uZSA6IHN0cmluZyAtPiB0XG4gICAgdmFsIG1hbnkgOiB0IC0+IHRcbiAgICB2YWwgbWF5YmUgOiB0IC0+IHRcbiAgICB2YWwgbWF5YmVfaWRlbXBvdGVudCA6IHQgLT4gdFxuICAgIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuICAgIHZhbCBhZF9ob2MgOiB1c2FnZTpzdHJpbmcgLT4gdFxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbmFtZXMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcblxuICAgIGxldCBpbnZhcmlhbnQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFNoYXBlLkFub25zLkdyYW1tYXIudXNhZ2VcblxuICAgIGxldCByZWMgaXNfZml4ZWRfYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IHRydWVcbiAgICAgIHwgT25lIF8gLT4gdHJ1ZVxuICAgICAgfCBNYW55IF8gLT4gZmFsc2VcbiAgICAgIHwgTWF5YmUgXyAtPiBmYWxzZVxuICAgICAgfCBBZF9ob2MgXyAtPiBmYWxzZVxuICAgICAgfCBDb25jYXQgdHMgLT5cbiAgICAgICAgKG1hdGNoIExpc3QucmV2IHRzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICB8IGxhc3QgOjogb3RoZXJzIC0+XG4gICAgICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIG90aGVycyB+Zjppc19maXhlZF9hcml0eSk7XG4gICAgICAgICAgIGlzX2ZpeGVkX2FyaXR5IGxhc3QpXG4gICAgOztcblxuICAgIGxldCByZWMgbmFtZXMgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFtdXG4gICAgICB8IE9uZSBzIC0+IFsgcyBdXG4gICAgICB8IE1hbnkgdCAtPiBuYW1lcyB0XG4gICAgICB8IE1heWJlIHQgLT4gbmFtZXMgdFxuICAgICAgfCBBZF9ob2MgcyAtPiBbIHMgXVxuICAgICAgfCBDb25jYXQgdHMgLT4gTGlzdC5jb25jYXRfbWFwIHRzIH5mOm5hbWVzXG4gICAgOztcblxuICAgIGxldCB6ZXJvID0gWmVyb1xuICAgIGxldCBvbmUgbmFtZSA9IE9uZSBuYW1lXG5cbiAgICBsZXQgbWFueSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+XG4gICAgICAgIGlmIG5vdCAoaXNfZml4ZWRfYXJpdHkgdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgXCJpdGVyYXRpb24gb2YgdmFyaWFibGUtbGVuZ3RoIGdyYW1tYXJzIHN1Y2ggYXMgJXMgaXMgZGlzYWxsb3dlZFwiXG4gICAgICAgICAgICAodXNhZ2UgdClcbiAgICAgICAgICAgICgpO1xuICAgICAgICBNYW55IHRcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmVfaWRlbXBvdGVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCBNYXliZSB0IC0+IE1heWJlIHRcbiAgICAgIHwgTWFueSB0IC0+IE1hbnkgdFxuICAgICAgfCB0IC0+IE1heWJlIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbmNhdCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFplcm9cbiAgICAgIHwgY2FyIDo6IGNkciAtPlxuICAgICAgICBsZXQgY2FyLCBjZHIgPVxuICAgICAgICAgIExpc3QuZm9sZCBjZHIgfmluaXQ6KGNhciwgW10pIH5mOihmdW4gKHQxLCBhY2MpIHQyIC0+XG4gICAgICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgICAgfCBaZXJvLCB0IHwgdCwgWmVybyAtPiB0LCBhY2NcbiAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICBpZiBpc19maXhlZF9hcml0eSB0MVxuICAgICAgICAgICAgICB0aGVuIHQyLCB0MSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgZ3JhbW1hciAlcyBmb3IgYW5vbnltb3VzIGFyZ3VtZW50cyBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhlcmUgXFxcbiAgICAgICAgICAgICAgICAgICBpcyB0aGUgcG9zc2liaWxpdHkgZm9yIGFyZ3VtZW50cyAoJXMpIGZvbGxvd2luZyBhIHZhcmlhYmxlIG51bWJlciBvZiBcXFxuICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyAoJXMpLiAgU3VwcG9ydGluZyBzdWNoIGdyYW1tYXJzIHdvdWxkIGNvbXBsaWNhdGUgdGhlIFxcXG4gICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gc2lnbmlmaWNhbnRseS5cIlxuICAgICAgICAgICAgICAgICAgKHVzYWdlIChDb25jYXQgKExpc3QucmV2ICh0MiA6OiB0MSA6OiBhY2MpKSkpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDIpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDEpXG4gICAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGNkciB3aXRoXG4gICAgICAgICB8IFtdIC0+IGNhclxuICAgICAgICAgfCBfIDo6IF8gLT4gQ29uY2F0IChMaXN0LnJldiAoY2FyIDo6IGNkcikpKVxuICAgIDs7XG5cbiAgICBsZXQgYWRfaG9jIH51c2FnZSA9IEFkX2hvYyB1c2FnZVxuICBlbmRcblxuICBtb2R1bGUgUGFyc2VyIDogc2lnXG4gICAgbW9kdWxlIEJhc2ljIDogc2lnXG4gICAgICB0eXBlICsnYSB0XG5cbiAgICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA6IHNpZ1xuICAgICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgICAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCBmcm9tX2VudiA6IChFbnYudCAtPiAnYSkgLT4gJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSArJ2EgdCA9ICdhIFBhcnNpbmdfb3V0Y29tZS50IEJhc2ljLnRcblxuICAgIHZhbCBvbmUgOiBuYW1lOnN0cmluZyAtPiAnYSBBcmdfdHlwZS50IC0+ICdhIHRcbiAgICB2YWwgbWF5YmUgOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgdmFsIHNlcXVlbmNlIDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB2YWwgc3RvcF9wYXJzaW5nIDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbmFsX3ZhbHVlIDogJ2EgQmFzaWMudCAtPiBFbnYudCAtPiAnYVxuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0IDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyAoKiBJZiBlbWFjcyBoaWdobGlnaHRzIFtwYXJzZXJdIGFzIGlmIGl0IHdlcmUgYSBrZXl3b3JkLCB0aGF0J3Mgb25seSBiZWNhdXNlXG4gICAgICAgICAgICAgW3BhcnNlcl0gd2FzIGEga2V5d29yZCBpbiBjYW1scDQuIFtwYXJzZXJdIGlzIGEgcmVndWxhciBuYW1lIGluIE9DYW1sLiAqKVxuICAgICAgICAgIHBhcnNlciA6ICdhIEJhc2ljLnRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdmFsIGNvbnN1bWUgOiAnYSBCYXNpYy50IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+ICdhIENvbnN1bWVfcmVzdWx0LnRcbiAgICB2YWwgY29tcGxldGUgOiAnYSBCYXNpYy50IC0+IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IE5vdGhpbmcudFxuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsICggPCo+ICkgOiAoJ2EgLT4gJ2IpIHQgLT4gJ2EgdCAtPiAnYiB0XG4gICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgZW5kXG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBCYXNpYyA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBEb25lIG9mIChFbnYudCAtPiAnYSlcbiAgICAgICAgfCBNb3JlIG9mICdhIG1vcmVcbiAgICAgICAgKCogQSBbVGVzdF0gd2lsbCAoZ2VuZXJhbGx5KSByZXR1cm4gYSBbRG9uZSBfXSB2YWx1ZSBpZiB0aGVyZSBpcyBubyBtb3JlIGlucHV0IGFuZFxuICAgICAgICAgICBhIFtNb3JlXSBwYXJzZXIgdG8gdXNlIGlmIHRoZXJlIGlzIGFueSBtb3JlIGlucHV0LiAqKVxuICAgICAgICB8IFRlc3Qgb2YgKG1vcmU6Ym9vbCAtPiAnYSB0KVxuICAgICAgICAoKiBJZiB3ZSdyZSBvbmx5IGNvbXBsZXRpbmcsIHdlIGNhbid0IHB1bGwgdmFsdWVzIG91dCwgYnV0IHdlIGNhbiBzdGlsbCBzdGVwIHRocm91Z2hcbiAgICAgICAgICAgW3RdcyAod2hpY2ggbWF5IGhhdmUgY29tcGxldGlvbiBzZXQgdXApLiAqKVxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gb2YgcGFja2VkIGxpc3RcbiAgICAgICAgfCBTdG9wX3BhcnNpbmcgb2YgJ2EgdFxuXG4gICAgICBhbmQgJ2EgbW9yZSA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IHBhcnNlIDogc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgcGFyc2VfcmVzdWx0XG4gICAgICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgICAgICB9XG5cbiAgICAgIGFuZCBwYWNrZWQgPSBQYWNrZWQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gICAgICBhbmQgJ2EgcGFyc2VfcmVzdWx0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cblxuICAgICAgbGV0IHBhcnNlX21vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgfSB+ZiA9XG4gICAgICAgIGxldCBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgICB7IHBhcnNlciA9IGYgcGFyc2VyOyB1cGRhdGVfZW52IH1cbiAgICAgICAgaW5cbiAgICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFja19mb3JfY29tcGxldGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSBfIC0+IFtdICgqIHdvbid0IGNvbXBsZXRlIG9yIGNvbnN1bWUgYW55dGhpbmcgKilcbiAgICAgICAgfCAoTW9yZSBfIHwgVGVzdCBfIHwgU3RvcF9wYXJzaW5nIF8pIGFzIHggLT4gWyBQYWNrZWQgeCBdXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwcyAtPiBwc1xuICAgICAgOztcblxuICAgICAgbGV0IHJlYyAoIDwqPiApIHRfbGVmdCB0X3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdF9sZWZ0LCB0X3JpZ2h0IHdpdGhcbiAgICAgICAgKCogW0RvbmVdICopXG4gICAgICAgIHwgRG9uZSBmLCBEb25lIHggLT5cbiAgICAgICAgICBEb25lXG4gICAgICAgICAgICAoZnVuIGVudiAtPlxuICAgICAgICAgICAgICAgbGV0IGZfb3V0Y29tZSA9IGYgZW52IGluXG4gICAgICAgICAgICAgICBsZXQgeF9vdXRjb21lID0geCBlbnYgaW5cbiAgICAgICAgICAgICAgIGZfb3V0Y29tZSB4X291dGNvbWUpXG4gICAgICAgICgqIG5leHQgc3RlcCBbTW9yZV0gKilcbiAgICAgICAgfCBNb3JlIG1vcmUsIF8gLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdGwgLT4gdGwgPCo+IHRfcmlnaHQpXG4gICAgICAgIHwgRG9uZSBfLCBNb3JlIG1vcmUgLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdHIgLT4gdF9sZWZ0IDwqPiB0cilcbiAgICAgICAgKCogbmV4dCBzdGVwIFtPbmx5X2Zvcl9jb21wbGV0aW9uXSAqKVxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gXywgXyB8IERvbmUgXywgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgICAgT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiB0X2xlZnQgQCBwYWNrX2Zvcl9jb21wbGV0aW9uIHRfcmlnaHQpXG4gICAgICAgICgqIG5leHQgc3RlcCBbU3RvcF9wYXJzaW5nXSAqKVxuICAgICAgICB8IFN0b3BfcGFyc2luZyB0bCwgdHIgfCAoRG9uZSBfIGFzIHRsKSwgU3RvcF9wYXJzaW5nIHRyIC0+IFN0b3BfcGFyc2luZyAodGwgPCo+IHRyKVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW1Rlc3RdICopXG4gICAgICAgIHwgVGVzdCB0ZXN0LCBfIC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0ZXN0IH5tb3JlIDwqPiB0X3JpZ2h0KVxuICAgICAgICB8IERvbmUgXywgVGVzdCB0ZXN0IC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0X2xlZnQgPCo+IHRlc3Qgfm1vcmUpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBEb25lIChmdW4gXyAtPiBhKVxuICAgICAgbGV0ICggPj58ICkgdCBmID0gcmV0dXJuIGYgPCo+IHRcbiAgICAgIGxldCBmcm9tX2VudiBmID0gRG9uZSAoZnVuIGVudiAtPiBmIGVudilcblxuICAgICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBvcGVuIEJhc2ljXG5cbiAgICB0eXBlICdhIHQgPSAnYSBQYXJzaW5nX291dGNvbWUudCBCYXNpYy50XG5cbiAgICBsZXQgKCA+PnwgKSB0IGYgPSB0ID4+fCBQYXJzaW5nX291dGNvbWUubWFwIH5mXG4gICAgbGV0ICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPSByZXR1cm4gUGFyc2luZ19vdXRjb21lLiggPCo+ICkgPCo+IHRfbGVmdCA8Kj4gdF9yaWdodFxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiAoUGFyc2luZ19vdXRjb21lLnJldHVybiBhKVxuICAgIGxldCByZXR1cm5fd2l0aF9hcmcgYSA9IERvbmUgKGZ1biBfIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgYSlcbiAgICBsZXQgc3RvcF9wYXJzaW5nIHQgPSBTdG9wX3BhcnNpbmcgdFxuXG4gICAgbGV0IG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIGxldCBwYXJzZSBhbm9uIH5mb3JfY29tcGxldGlvbiA9XG4gICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFub24gd2l0aFxuICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgaWYgZm9yX2NvbXBsZXRpb25cbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAoKiB3ZSBkb24ndCAqcmVhbGx5KiBjYXJlIGFib3V0IHRoaXMgdmFsdWUsIHNvIGp1c3QgcHV0IGluIGEgZHVtbXkgdmFsdWUgc29cbiAgICAgICAgICAgICAgIGNvbXBsZXRpb24gY2FuIGNvbnRpbnVlICopXG4gICAgICAgICAgICB7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gW107IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGllIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTXFxuJXNcIiBuYW1lIGFub24gKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpICgpXG4gICAgICAgIHwgT2sgdiAtPlxuICAgICAgICAgIHsgcGFyc2VyID0gcmV0dXJuX3dpdGhfYXJnIHZcbiAgICAgICAgICA7IHVwZGF0ZV9lbnYgPVxuICAgICAgICAgICAgICAoZnVuIGVudiAtPlxuICAgICAgICAgICAgICAgICBPcHRpb24uZm9sZCAoQXJnX3R5cGUua2V5IGFyZ190eXBlKSB+aW5pdDplbnYgfmY6KGZ1biBlbnYga2V5IC0+XG4gICAgICAgICAgICAgICAgICAgRW52Lm11bHRpX2FkZCBlbnYgfmtleSB+ZGF0YTp2KSlcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSA9IEFyZ190eXBlLmNvbXBsZXRlIGFyZ190eXBlIH1cbiAgICA7O1xuXG4gICAgbGV0IG9uZSB+bmFtZSBhcmdfdHlwZSA9XG4gICAgICBUZXN0XG4gICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgaWYgbW9yZVxuICAgICAgICAgICB0aGVuIG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBEb25lXG4gICAgICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5lcnJvclxuICAgICAgICAgICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyAoc3ByaW50ZiBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUpKSkpKVxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgdCA9XG4gICAgICBUZXN0XG4gICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybl93aXRoX2FyZyAoZnVuIGEgLT4gU29tZSBhKSA8Kj4gdCBlbHNlIHJldHVybiBOb25lKVxuICAgIDs7XG5cbiAgICBsZXQgc2VxdWVuY2UgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPVxuICAgICAgICBUZXN0XG4gICAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICAgIGlmIG1vcmUgdGhlbiByZXR1cm4gKGZ1biB2IGFjYyAtPiB2IDo6IGFjYykgPCo+IHQgPCo+IGxvb3AgZWxzZSByZXR1cm4gW10pXG4gICAgICBpblxuICAgICAgbG9vcFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmFsX3ZhbHVlIHQgZW52ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIGEgLT4gYSBlbnZcbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gZmluYWxfdmFsdWUgdCBlbnZcbiAgICAgIHwgVGVzdCBmIC0+IGZpbmFsX3ZhbHVlIChmIH5tb3JlOmZhbHNlKSBlbnZcbiAgICAgIHwgTW9yZSBfIC0+XG4gICAgICAgICgqIHRoaXMgZG9lc24ndCBoYXBwZW4gYmVjYXVzZSBhbGwgb2NjdXJyZW5jZXMgb2YgW01vcmVdIGFyZSBwcm90ZWN0ZWRcbiAgICAgICAgICAgYnkgW1Rlc3RdLCB3aGljaCBtZWFucyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhbiBleHRyYSBhcmd1bWVudCB0byBnaXZlXG4gICAgICAgICAgIGJlZm9yZSByZXF1ZXN0aW5nIHRoZSBmaW5hbCB2YWx1ZSAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQlVHOiBhc2tlZCBmb3IgZmluYWwgdmFsdWUgd2hlbiBkb2luZyBjb21wbGV0aW9uXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSBCYXNpYy50XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIGxldCByZWMgY29uc3VtZVxuICAgICAgOiB0eXBlIGEuIGEgQmFzaWMudCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiBhIENvbnN1bWVfcmVzdWx0LnRcbiAgICAgID1cbiAgICAgIGZ1biB0IGFyZyB+Zm9yX2NvbXBsZXRpb24gLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIF8gLT4gZGllIFwidG9vIG1hbnkgYW5vbnltb3VzIGFyZ3VtZW50c1wiICgpXG4gICAgICB8IFRlc3QgZiAtPiBjb25zdW1lIChmIH5tb3JlOnRydWUpIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgIHwgTW9yZSB7IHBhcnNlOyBfIH0gLT5cbiAgICAgICAgbGV0IHsgcGFyc2VyOyB1cGRhdGVfZW52IH0gPSBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uIGluXG4gICAgICAgIHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgfVxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiB7IChjb25zdW1lIHQgYXJnIH5mb3JfY29tcGxldGlvbikgd2l0aCBwYXJzZV9mbGFncyA9IGZhbHNlIH1cbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwYWNrZWQgLT5cbiAgICAgICAgKG1hdGNoIHBhY2tlZCB3aXRoXG4gICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgcGFyc2VfZmxhZ3MgPSB0cnVlOyB1cGRhdGVfZW52ID0gRm4uaWQgfVxuICAgICAgICAgfCBQYWNrZWQgdCA6OiByZXN0IC0+XG4gICAgICAgICAgIGxldCAoeyB1cGRhdGVfZW52OyBwYXJzZV9mbGFnczsgcGFyc2VyIH0gOiBfIENvbnN1bWVfcmVzdWx0LnQpID1cbiAgICAgICAgICAgICBjb25zdW1lIHQgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgICBpblxuICAgICAgICAgICB7IHVwZGF0ZV9lbnZcbiAgICAgICAgICAgOyBwYXJzZV9mbGFnc1xuICAgICAgICAgICA7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gKHBhY2tfZm9yX2NvbXBsZXRpb24gcGFyc2VyIEAgcmVzdClcbiAgICAgICAgICAgfSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb21wbGV0ZSA6IHR5cGUgYS4gYSBCYXNpYy50IC0+IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IE5vdGhpbmcudCA9XG4gICAgICBmdW4gdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRG9uZSBfIC0+IGV4aXQgMFxuICAgICAgICB8IFRlc3QgZiAtPiBjb21wbGV0ZSAoZiB+bW9yZTp0cnVlKSBlbnYgfnBhcnRcbiAgICAgICAgfCBNb3JlIHsgY29tcGxldGU7IF8gfSAtPiBDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXBsZXRlIGVudiB+cGFydFxuICAgICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IGNvbXBsZXRlIHQgZW52IH5wYXJ0XG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IGV4aXQgMFxuICAgICAgICAgICB8IFBhY2tlZCB0IDo6IF8gLT4gY29tcGxldGUgdCBlbnYgfnBhcnQpXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBQYXJzZXIuRm9yX29wZW5pbmdcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcCA6ICdhIFBhcnNlci50XG4gICAgOyBncmFtbWFyIDogR3JhbW1hci50XG4gICAgfVxuXG4gIGxldCB0MiB0MSB0MiA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgLT4gYTEsIGEyKSA8Kj4gdDEucCA8Kj4gdDIucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0MyB0MSB0MiB0MyA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgLT4gYTEsIGEyLCBhMykgPCo+IHQxLnAgPCo+IHQyLnAgPCo+IHQzLnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXI7IHQzLmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgdDQgdDEgdDIgdDMgdDQgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIGEzIGE0IC0+IGExLCBhMiwgYTMsIGE0KSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucCA8Kj4gdDQucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hcjsgdDQuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCBub3JtYWxpemUgc3RyID1cbiAgICAoKiBWZXJpZnkgdGhlIHN0cmluZyBpcyBub3QgZW1wdHkgb3Igc3Vycm91bmRlZCBieSB3aGl0ZXNwYWNlICopXG4gICAgbGV0IHN0cmxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgc3RybGVuID0gMCB0aGVuIGZhaWx3aXRoIFwiRW1wdHkgYW5vbnltb3VzIGFyZ3VtZW50IG5hbWUgcHJvdmlkZWRcIjtcbiAgICBpZiBTdHJpbmcuKCA8PiApIChTdHJpbmcuc3RyaXAgc3RyKSBzdHJcbiAgICB0aGVuIGZhaWx3aXRoZiBcImFyZ3VtZW50IG5hbWUgJVMgaGFzIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2VcIiBzdHIgKCk7XG4gICAgKCogSWYgdGhlIHN0cmluZyBjb250YWlucyBzcGVjaWFsIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGRvbid0IGRvIGFueXRoaW5nICopXG4gICAgbGV0IGhhc19zcGVjaWFsX2NoYXJzID1cbiAgICAgIGxldCBzcGVjaWFsX2NoYXJzID1cbiAgICAgICAgU2V0Lm9mX2xpc3QgKG1vZHVsZSBDaGFyKSBbICc8JzsgJz4nOyAnWyc7ICddJzsgJygnOyAnKSc7ICd7JzsgJ30nIF1cbiAgICAgIGluXG4gICAgICBTdHJpbmcuZXhpc3RzIHN0ciB+ZjooU2V0Lm1lbSBzcGVjaWFsX2NoYXJzKVxuICAgIGluXG4gICAgaWYgaGFzX3NwZWNpYWxfY2hhcnMgdGhlbiBzdHIgZWxzZSBTdHJpbmcudXBwZXJjYXNlIHN0clxuICA7O1xuXG4gIGxldCAoICU6ICkgbmFtZSBhcmdfdHlwZSA9XG4gICAgbGV0IG5hbWUgPSBub3JtYWxpemUgbmFtZSBpblxuICAgIHsgcCA9IFBhcnNlci5vbmUgfm5hbWUgYXJnX3R5cGU7IGdyYW1tYXIgPSBHcmFtbWFyLm9uZSBuYW1lIH1cbiAgOztcblxuICBsZXQgbWFwX2Fub25zIHQgfmYgPSB7IHAgPSB0LnAgPj58IGY7IGdyYW1tYXIgPSB0LmdyYW1tYXIgfVxuICBsZXQgbWF5YmUgdCA9IHsgcCA9IFBhcnNlci5tYXliZSB0LnA7IGdyYW1tYXIgPSBHcmFtbWFyLm1heWJlIHQuZ3JhbW1hciB9XG5cbiAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCBkZWZhdWx0IHQgPVxuICAgIGxldCB0ID0gbWF5YmUgdCBpblxuICAgIHsgdCB3aXRoIHAgPSAodC5wID4+fCBmdW4gdiAtPiBPcHRpb24udmFsdWUgfmRlZmF1bHQgdikgfVxuICA7O1xuXG4gIGxldCBzZXF1ZW5jZSB0ID0geyBwID0gUGFyc2VyLnNlcXVlbmNlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWFueSB0LmdyYW1tYXIgfVxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgdCA9IHQyIHQgKHNlcXVlbmNlIHQpXG5cbiAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0IHQgPVxuICAgIGxldCB0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgdCBpblxuICAgIHsgdCB3aXRoIHAgPSAodC5wID4+fCBmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKSB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSB0ID0geyBwID0gUGFyc2VyLnN0b3BfcGFyc2luZyB0LnA7IGdyYW1tYXIgPSB0LmdyYW1tYXIgfVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IGFkX2hvYyB+dXNhZ2VfYXJnID1cbiAgICAgIHsgcCA9XG4gICAgICAgICAgUGFyc2VyLnNlcXVlbmNlXG4gICAgICAgICAgICAoUGFyc2VyLm9uZSB+bmFtZTpcIldJTEwgTkVWRVIgQkUgUFJJTlRFRFwiIEFyZ190eXBlLkV4cG9ydC5zdHJpbmcpXG4gICAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmFkX2hvYyB+dXNhZ2U6dXNhZ2VfYXJnXG4gICAgICB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIENtZGxpbmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiBzdHJpbmcgKiB0XG4gICAgfCBDb21wbGV0ZSBvZiBzdHJpbmdcbiAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICBsZXQgb2ZfbGlzdCBhcmdzID0gTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6TmlsIH5mOihmdW4gYXJnIGFyZ3MgLT4gQ29ucyAoYXJnLCBhcmdzKSlcblxuICBsZXQgcmVjIHRvX2xpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh4LCB4cykgLT4geCA6OiB0b19saXN0IHhzXG4gICAgfCBDb21wbGV0ZSB4IC0+IFsgeCBdXG4gIDs7XG5cbiAgbGV0IHJlYyBlbmRzX2luX2NvbXBsZXRlID0gZnVuY3Rpb25cbiAgICB8IENvbXBsZXRlIF8gLT4gdHJ1ZVxuICAgIHwgTmlsIC0+IGZhbHNlXG4gICAgfCBDb25zIChfLCBhcmdzKSAtPiBlbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgOztcblxuICBsZXQgZXh0ZW5kIHQgfmV4dGVuZCB+cGF0aCA9XG4gICAgaWYgZW5kc19pbl9jb21wbGV0ZSB0XG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcGF0aF9saXN0ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdIChMaXN0LnRsIChQYXRoLnBhcnRzIHBhdGgpKSBpblxuICAgICAgb2ZfbGlzdCAodG9fbGlzdCB0IEAgZXh0ZW5kIHBhdGhfbGlzdCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIEtleV90eXBlID0gU2hhcGUuUHJpdmF0ZS5LZXlfdHlwZVxuXG5sZXQgYXNzZXJ0X25vX3VuZGVyc2NvcmVzIGtleV90eXBlIGZsYWdfb3Jfc3ViY29tbWFuZCA9XG4gIGlmIFN0cmluZy5leGlzdHMgZmxhZ19vcl9zdWJjb21tYW5kIH5mOihmdW4gYyAtPiBDaGFyLiggPSApIGMgJ18nKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIiVzICVzIGNvbnRhaW5zIGFuIHVuZGVyc2NvcmUuIFVzZSBhIGRhc2ggaW5zdGVhZC5cIlxuICAgICAgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSlcbiAgICAgIGZsYWdfb3Jfc3ViY29tbWFuZFxuICAgICAgKClcbjs7XG5cbmxldCBub3JtYWxpemUga2V5X3R5cGUga2V5ID1cbiAgYXNzZXJ0X25vX3VuZGVyc2NvcmVzIGtleV90eXBlIGtleTtcbiAgbWF0Y2gga2V5X3R5cGUgd2l0aFxuICB8IEtleV90eXBlLkZsYWcgLT5cbiAgICBpZiBTdHJpbmcuZXF1YWwga2V5IFwiLVwiIHRoZW4gZmFpbHdpdGhmICFcImludmFsaWQgJXtLZXlfdHlwZX0gbmFtZTogJVNcIiBrZXlfdHlwZSBrZXkgKCk7XG4gICAgaWYgU3RyaW5nLmV4aXN0cyBrZXkgfmY6Q2hhci5pc193aGl0ZXNwYWNlXG4gICAgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lIChjb250YWlucyB3aGl0ZXNwYWNlKTogJVNcIiBrZXlfdHlwZSBrZXkgKCk7XG4gICAgaWYgU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiLVwiIGtleSB0aGVuIGtleSBlbHNlIFwiLVwiIF4ga2V5XG4gIHwgS2V5X3R5cGUuU3ViY29tbWFuZCAtPiBTdHJpbmcubG93ZXJjYXNlIGtleVxuOztcblxubGV0IGxvb2t1cF9leHBhbmQgPSBTaGFwZS5Qcml2YXRlLmxvb2t1cF9leHBhbmRcblxubGV0IGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIG1hcCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgYWxpc3QgPVxuICAgIExpc3QuY29uY2F0X21hcCAoTWFwLmRhdGEgbWFwKSB+ZjooZnVuIGZsYWcgLT5cbiAgICAgIGxldCB7IEZsYWcuSW50ZXJuYWwubmFtZVxuICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICA7IGFjdGlvbiA9IF9cbiAgICAgICAgICA7IGRvYyA9IF9cbiAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICB9XG4gICAgICAgID1cbiAgICAgICAgZmxhZ1xuICAgICAgaW5cbiAgICAgIGxldCBkYXRhID0gZmxhZywgbmFtZV9tYXRjaGluZyBpblxuICAgICAgbGV0IGFsaWFzZXMgPSBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCBAIGFsaWFzZXMgaW5cbiAgICAgIChuYW1lLCBkYXRhKSA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4gYWxpYXMgLT4gYWxpYXMsIGRhdGEpKVxuICBpblxuICBtYXRjaCBMaXN0LmZpbmRfYV9kdXAgYWxpc3QgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHdpdGhcbiAgfCBOb25lIC0+IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlXG4gIHwgU29tZSAoZmxhZywgXykgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG47O1xuXG5tb2R1bGUgQ29tbWFuZF9iYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgZmxhZ3MgOiBGbGFnLkludGVybmFsLnQgTWFwLk0oU3RyaW5nKS50XG4gICAgO1xuICAgICAgYW5vbnMgOiB1bml0IC0+IChbIGBQYXJzZV9hcmdzIF0gLT4gWyBgUnVuX21haW4gXSAtPiB1bml0KSBBbm9ucy5QYXJzZXIuQmFzaWMudFxuICAgIDsgdXNhZ2UgOiBBbm9ucy5HcmFtbWFyLnRcbiAgICB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgc3ViY29tbWFuZF9jbXBfZnN0IChhLCBfKSAoYywgXykgPSBoZWxwX3NjcmVlbl9jb21wYXJlIGEgY1xuXG4gICAgbGV0IGZsYWdzX2hlbHAgPyhkaXNwbGF5X2hlbHBfZmxhZ3MgPSB0cnVlKSB0ID1cbiAgICAgIGxldCBmbGFncyA9IE1hcC5kYXRhIHQuZmxhZ3MgaW5cbiAgICAgIGxldCBmbGFncyA9XG4gICAgICAgIGlmIGRpc3BsYXlfaGVscF9mbGFnc1xuICAgICAgICB0aGVuIGZsYWdzXG4gICAgICAgIGVsc2UgTGlzdC5maWx0ZXIgZmxhZ3MgfmY6KGZ1biBmIC0+IFN0cmluZy4oIDw+ICkgZi5uYW1lIFwiLWhlbHBcIilcbiAgICAgIGluXG4gICAgICBMaXN0LmNvbmNhdF9tYXAgfmY6RmxhZy5JbnRlcm5hbC5EZXByZWNhdGVkLmhlbHAgZmxhZ3NcbiAgICA7O1xuICBlbmRcblxuICBsZXQgZm9ybWF0dGVkX2ZsYWdzIHQgPVxuICAgIE1hcC5kYXRhIHQuZmxhZ3NcbiAgICB8PiBMaXN0Lm1hcCB+ZjpGbGFnLkludGVybmFsLmFsaWduXG4gICAgKCogdGhpcyBzb3J0IHB1dHMgb3B0aW9uYWwgZmxhZ3MgYWZ0ZXIgcmVxdWlyZWQgb25lcyAqKVxuICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBTdHJpbmcuY29tcGFyZSBhLm5hbWUgYi5uYW1lKVxuICAgIHw+IFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnNvcnRcbiAgOztcblxuICBsZXQgc2hhcGUgdCA6IFNoYXBlLkJhc2VfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgdC5yZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKVxuICAgIDsgYW5vbnMgPSBHcmFtbWFyIHQudXNhZ2VcbiAgICA7IGZsYWdzID0gZm9ybWF0dGVkX2ZsYWdzIHRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHBhdGhfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJwYXRoXCJcbiAgbGV0IGFyZ3Nfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJhcmdzXCJcbiAgbGV0IGhlbHBfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJoZWxwXCJcblxuICBsZXQgaW5kZW50X2J5XzIgc3RyID1cbiAgICBTdHJpbmcuc3BsaXQgfm9uOidcXG4nIHN0clxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBcIiAgXCIgXiBsaW5lKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgPVxuICAgIG1hdGNoIGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIHQuZmxhZ3MgYXJnIEZsYWcgd2l0aFxuICAgIHwgRXJyb3IgbXNnIC0+IGRpZSBcIiVzXCIgbXNnICgpXG4gICAgfCBPayAoZmxhZ19uYW1lLCBmbGFnKSAtPiBmbGFnX25hbWUsIGZsYWcuYWN0aW9uXG4gIDs7XG5cbiAgbGV0IHJ1bl9mbGFnIHQgZW52IGFyZyAoYXJncyA6IENtZGxpbmUudCkgPVxuICAgIGxldCBmbGFnLCBhY3Rpb24gPSBnZXRfZmxhZ19hbmRfYWN0aW9uIHQgYXJnIGluXG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IFByaW50X2luZm9fYW5kX3F1aXQgaW5mbyAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgKCogSWYgd2UncmUgZG9pbmcgY29tcGxldGlvbiwgdmVyc2lvbi9oZWxwIGluZm8gYXJlbid0IHVzZWZ1bCBjb21wbGV0aW9uXG4gICAgICAgICByZXNwb25zZXMuICopXG4gICAgICBpZiBjb21wbGV0aW5nXG4gICAgICB0aGVuIGVudiwgYXJnc1xuICAgICAgZWxzZSAoXG4gICAgICAgIHByaW50X2VuZGxpbmUgKGluZm8gZW52KTtcbiAgICAgICAgZXhpdCAwKVxuICAgIHwgTm9fYXJnIGYgLT4gZiBlbnYsIGFyZ3NcbiAgICB8IEFyZyAoZiwgY29tcCkgLT5cbiAgICAgIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICB8IE5pbCAtPiBkaWUgXCJtaXNzaW5nIGFyZ3VtZW50IGZvciBmbGFnICVzXCIgZmxhZyAoKVxuICAgICAgIHwgQ29ucyAoYXJnLCByZXN0KSAtPlxuICAgICAgICAgbGV0IGVudiA9XG4gICAgICAgICAgIHRyeSBmIGVudiBhcmcgd2l0aFxuICAgICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyBhcyBlIC0+XG4gICAgICAgICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIHJlc3QgdGhlbiBlbnYgZWxzZSByYWlzZSBlXG4gICAgICAgICBpblxuICAgICAgICAgZW52LCByZXN0XG4gICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydCkpXG4gICAgfCBSZXN0IChmLCBjb21wKSAtPlxuICAgICAgbGV0IGFyZ19saXN0ID0gQ21kbGluZS50b19saXN0IGFyZ3MgaW5cbiAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICB0aGVuIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydDphcmdfbGlzdCk7XG4gICAgICBmIGVudiBhcmdfbGlzdCwgTmlsXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgKGNtZGxpbmUgOiBDbWRsaW5lLnQpIH5mb3JfY29tcGxldGlvbiB+cGFyc2VfZmxhZ3MgPVxuICAgIG1hdGNoIGNtZGxpbmUgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBMaXN0Lml0ZXIgKE1hcC5kYXRhIHQuZmxhZ3MpIH5mOihmdW4gZmxhZyAtPiBmbGFnLmNoZWNrX2F2YWlsYWJsZSBlbnYpO1xuICAgICAgQW5vbnMuUGFyc2VyLmZpbmFsX3ZhbHVlIHBhcnNlciBlbnZcbiAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgIGlmIHBhcnNlX2ZsYWdzICYmIFN0cmluZy5pc19wcmVmaXggcGFydCB+cHJlZml4OlwiLVwiXG4gICAgICB0aGVuIChcbiAgICAgICAgTGlzdC5pdGVyIChNYXAua2V5cyB0LmZsYWdzKSB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0IHRoZW4gcHJpbnRfZW5kbGluZSBuYW1lKTtcbiAgICAgICAgZXhpdCAwKVxuICAgICAgZWxzZSBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGUgKEFub25zLlBhcnNlci5jb21wbGV0ZSBwYXJzZXIgZW52IH5wYXJ0KVxuICAgIHwgQ29ucyAoYXJnLCBhcmdzKSAtPlxuICAgICAgbGV0IGFyZywgYXJncywgYXJnX2lzX2ZsYWcgPVxuICAgICAgICBtYXRjaCBwYXJzZV9mbGFncyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAobWF0Y2ggYXJnLCBhcmdzIHdpdGhcbiAgICAgICAgICAgKCogdGhlICctYW5vbicgZmxhZyBpcyBoZXJlIGFzIGFuIGVzY2FwZSBoYXRjaCBpbiBjYXNlIHlvdSBoYXZlIGFuXG4gICAgICAgICAgICAgIGFub255bW91cyBhcmd1bWVudCB0aGF0IHN0YXJ0cyB3aXRoIGEgaHlwaGVuLiAqKVxuICAgICAgICAgICB8IFwiLWFub25cIiwgQ29ucyAoYXJnLCBhcmdzKSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgICgqIHN1cHBvcnQgdGhlIGNvbW1vbiBVbml4IGNvbnZlbnRpb24gd2hlcmUgXCItXCIgbWVhbnMgc3RkaW4gKilcbiAgICAgICAgICAgfCBcIi1cIiwgXyAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgIHwgXywgXyAtPiBhcmcsIGFyZ3MsIFN0cmluZy5pc19wcmVmaXggYXJnIH5wcmVmaXg6XCItXCIpXG4gICAgICBpblxuICAgICAgKG1hdGNoIGFyZ19pc19mbGFnIHdpdGhcbiAgICAgICB8IHRydWUgLT5cbiAgICAgICAgIGxldCBlbnYsIGFyZ3MgPSBydW5fZmxhZyB0IGVudiBhcmcgYXJncyBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIGFyZ3MgfnBhcnNlX2ZsYWdzIH5mb3JfY29tcGxldGlvblxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFnczEgPSBwYXJzZV9mbGFncyBpblxuICAgICAgICAgbGV0ICh7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICAgICAgICA6IF8gQW5vbnMuUGFyc2VyLkNvbnN1bWVfcmVzdWx0LnQpXG4gICAgICAgICAgID1cbiAgICAgICAgICAgQW5vbnMuUGFyc2VyLmNvbnN1bWUgcGFyc2VyIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZW52ID0gdXBkYXRlX2VudiBlbnYgaW5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMSAmJiBwYXJzZV9mbGFnczIgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciB+cGFyc2VfZmxhZ3MgYXJncyB+Zm9yX2NvbXBsZXRpb24pXG4gIDs7XG5cbiAgbGV0IHJ1bl9leG4gZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyB3aGVuIGZvcl9jb21wbGV0aW9uIC0+IGV4aXQgMFxuICAgIHwgRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSAtPiBleGl0IHN0YXR1c1xuICAgIHwgXyAtPlxuICAgICAgbGV0IGV4bl9zdHIgPVxuICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+IG1zZ1xuICAgICAgICB8IF8gLT4gU2V4cC50b19zdHJpbmdfaHVtIFslc2V4cCAoZXhuIDogZXhuKV1cbiAgICAgIGluXG4gICAgICBsZXQgdmVyYm9zZSA9IE9wdGlvbi52YWx1ZSB2ZXJib3NlX29uX3BhcnNlX2Vycm9yIH5kZWZhdWx0OnRydWUgaW5cbiAgICAgIGxldCBlcnJvcl9tc2cgPVxuICAgICAgICBpZiB2ZXJib3NlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICB+c2VwOlwiXFxuXFxuXCJcbiAgICAgICAgICAgIFsgXCJFcnJvciBwYXJzaW5nIGNvbW1hbmQgbGluZTpcIlxuICAgICAgICAgICAgOyBpbmRlbnRfYnlfMiBleG5fc3RyXG4gICAgICAgICAgICA7IFwiRm9yIHVzYWdlIGluZm9ybWF0aW9uLCBydW5cIlxuICAgICAgICAgICAgOyBcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgLWhlbHBcXG5cIlxuICAgICAgICAgICAgXVxuICAgICAgICBlbHNlIGV4bl9zdHJcbiAgICAgIGluXG4gICAgICBwcmVycl9lbmRsaW5lIGVycm9yX21zZztcbiAgICAgIGV4aXQgMVxuICA7O1xuXG4gIGxldCBydW5cbiAgICAgICAgdFxuICAgICAgICBlbnZcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH5vbl9mYWlsdXJlXG4gICAgPVxuICAgIGxldCBmb3JfY29tcGxldGlvbiA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgbGV0IGVudiA9XG4gICAgICBlbnZcbiAgICAgIHw+IEVudi5zZXQgfmtleTpwYXRoX2tleSB+ZGF0YTpwYXRoXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6YXJnc19rZXkgfmRhdGE6KENtZGxpbmUudG9fbGlzdCBhcmdzKVxuICAgICAgfD4gRW52LnNldCB+a2V5OmhlbHBfa2V5IH5kYXRhOmhlbHBfdGV4dFxuICAgIGluXG4gICAgbWF0Y2hcbiAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgIGxldCBtYWluID1cbiAgICAgICAgICBydW5fY21kbGluZSB0IGVudiAodC5hbm9ucyAoKSkgfmZvcl9jb21wbGV0aW9uIH5wYXJzZV9mbGFnczp0cnVlIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbWFpbiBgUGFyc2VfYXJncylcbiAgICB3aXRoXG4gICAgfCBPayB0aHVuayAtPlxuICAgICAgd2hlbl9wYXJzaW5nX3N1Y2NlZWRzICgpO1xuICAgICAgdGh1bmsgYFJ1bl9tYWluXG4gICAgfCBFcnJvciBleG4gLT4gb25fZmFpbHVyZSBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gIDs7XG5cbiAgbW9kdWxlIFBhcmFtID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdCA9XG4gICAgICB7IGYgOiB1bml0IC0+ICh1bml0IC0+ICdhIFBhcnNpbmdfb3V0Y29tZS50KSBBbm9ucy5QYXJzZXIuQmFzaWMudFxuICAgICAgOyB1c2FnZSA6IHVuaXQgLT4gQW5vbnMuR3JhbW1hci50XG4gICAgICA7IGZsYWdzIDogdW5pdCAtPiBGbGFnLkludGVybmFsLnQgbGlzdFxuICAgICAgfVxuXG4gICAgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmdcblxuICAgIGxldCB3cmFwX3ZhbHVlIHYgKCkgPSBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyB2XG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHJldHVybiAoZnVuIGYgeCAoKSAtPlxuICAgICAgICAgICAgICAgKCogb3JkZXIgb2YgZXZhbHVhdGlvbiBoZXJlIGFmZmVjdHMgaW4gd2hhdCBvcmRlciB0aGUgdXNlcnMnIGNhbGxiYWNrc1xuICAgICAgICAgICAgICAgICAgYXJlIGV2YWx1YXRlZCwgc28gaXQncyBpbXBvcnRhbnQgdG8gY2FsbCBbZl0gYmVmb3JlIFt4XSAqKVxuICAgICAgICAgICAgICAgbGV0IGZfb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4ICgpIGluXG4gICAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuYXBwbHkgZl9vdXRjb21lIHhfb3V0Y29tZSlcbiAgICAgICAgICAgICA8Kj4gZi5mICgpXG4gICAgICAgICAgICAgPCo+IHguZiAoKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHguZmxhZ3MgKCkgQCBmLmZsYWdzICgpKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci5jb25jYXQgWyBmLnVzYWdlICgpOyB4LnVzYWdlICgpIF0pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBlbXB0eV9zcGVjIDogJ20uICgnbSAtPiAnbSkgdCA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiAoZnVuICgpIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIEZuLmlkKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgbWFwX291dGNvbWUgeCB+ZiA9XG4gICAgICB7IGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB4LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIHggKCkgLT5cbiAgICAgICAgICAgICBsZXQgeF9vdXRjb21lID0geCAoKSBpblxuICAgICAgICAgICAgIGYgeF9vdXRjb21lKVxuICAgICAgOyBmbGFncyA9IHguZmxhZ3NcbiAgICAgIDsgdXNhZ2UgPSB4LnVzYWdlXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXAgeCB+ZiA9IG1hcF9vdXRjb21lIHggfmY6KFBhcnNpbmdfb3V0Y29tZS5tYXAgfmYpXG5cbiAgICBsZXQgbG9va3VwIGtleSA9XG4gICAgICB7IGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBBbm9ucy5QYXJzZXIuQmFzaWMuZnJvbV9lbnYgKGZ1biBlbnYgLT4gRW52LmZpbmRfZXhuIGVudiBrZXkpID4+fCB3cmFwX3ZhbHVlKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBwYXRoIDogUGF0aC50IHQgPSBsb29rdXAgcGF0aF9rZXlcbiAgICBsZXQgYXJncyA6IHN0cmluZyBsaXN0IHQgPSBsb29rdXAgYXJnc19rZXlcbiAgICBsZXQgaGVscCA6IHN0cmluZyBMYXp5LnQgdCA9IGxvb2t1cCBoZWxwX2tleVxuXG4gICAgKCogVGhpcyBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgZm9yIHRoZSBoZWxwIGNvbW1hbmQuICopXG4gICAgbGV0IGVudiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiBlbnYpID4+fCB3cmFwX3ZhbHVlKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICAgICAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEFub25zXG5cbiAgICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgc2VxdWVuY2UgPSBzZXF1ZW5jZVxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0XG4gICAgICBsZXQgdDIgPSB0MlxuICAgICAgbGV0IHQzID0gdDNcbiAgICAgIGxldCB0NCA9IHQ0XG5cbiAgICAgIGxldCBhbm9uIHNwZWMgPVxuICAgICAgICBBbm9ucy5HcmFtbWFyLmludmFyaWFudCBzcGVjLmdyYW1tYXI7XG4gICAgICAgIHsgZiA9IChmdW4gKCkgLT4gc3BlYy5wID4+fCBmdW4gb3V0Y29tZSAoKSAtPiBvdXRjb21lKVxuICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gc3BlYy5ncmFtbWFyKVxuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGVzY2FwZV9hbm9uIH5maW5hbF9hbm9uID1cbiAgICAgIEFub25zLmVzY2FwZSAodDIgZmluYWxfYW5vbiAoc2VxdWVuY2UgKFwiQVJHXCIgJTogc3RyaW5nKSkpIHw+IGFub25cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICBsZXQgbWFwX2ZsYWcgPSBtYXBfZmxhZ1xuICAgICAgbGV0IGVzY2FwZSA9IGVzY2FwZVxuICAgICAgbGV0IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZSA9IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZVxuICAgICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgPSBvbmVfb3JfbW9yZV9hc19wYWlyXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICAgIGxldCBub19hcmdfcmVxdWlyZWQgPSBub19hcmdfcmVxdWlyZWRcbiAgICAgIGxldCBub19hcmdfcmVnaXN0ZXIgPSBub19hcmdfcmVnaXN0ZXJcbiAgICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHJlcXVpcmVkID0gcmVxdWlyZWRcblxuICAgICAgbGV0IGZsYWdfaW50ZXJuYWxcbiAgICAgICAgICAgID8oYWxpYXNlcyA9IFtdKVxuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfmRvY1xuICAgICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgID1cbiAgICAgICAgbGV0IG5vcm1hbGl6ZSBmbGFnID0gbm9ybWFsaXplIEtleV90eXBlLkZsYWcgZmxhZyBpblxuICAgICAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgICAgIGxldCBhbGlhc2VzID0gTGlzdC5tYXAgfmY6bm9ybWFsaXplIGFsaWFzZXMgaW5cbiAgICAgICAgbGV0IHsgcmVhZDsgYWN0aW9uOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gbW9kZSBuYW1lIGluXG4gICAgICAgIGxldCBjaGVja19hdmFpbGFibGUgPVxuICAgICAgICAgIG1hdGNoIG51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IChpZ25vcmUgOiBVbml2X21hcC50IC0+IHVuaXQpXG4gICAgICAgICAgfCB0cnVlIC0+IGZ1biBlbnYgLT4gaWdub3JlIChyZWFkIGVudiA6IF8pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuYW1lX21hdGNoaW5nID1cbiAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSBmdWxsX2ZsYWdfcmVxdWlyZWQgdGhlbiBgRnVsbF9tYXRjaF9yZXF1aXJlZCBlbHNlIGBQcmVmaXhcbiAgICAgICAgaW5cbiAgICAgICAgeyBmID1cbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiByZWFkIGVudikgPj58IGZ1biB2ICgpIC0+IHYpXG4gICAgICAgIDsgZmxhZ3MgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyB7IG5hbWVcbiAgICAgICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICAgICAgICAgOyBkb2MgPVxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGZvcmNlIGV4dHJhX2RvYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGV4dHJhX2RvYyAtPiBbJXN0cmluZyBcIiV7ZG9jfSAle2V4dHJhX2RvY31cIl1cbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZG9jKVxuICAgICAgICAgICAgICAgICA7IGFjdGlvblxuICAgICAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZVxuICAgICAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmxhZyA9IGZsYWdfaW50ZXJuYWwgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOltdXG5cbiAgICAgIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcbiAgICAgICAgICAgID9hbGlhc2VzXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBhcmdfdHlwZVxuICAgICAgICAgICAgc2V4cF9vZl9kZWZhdWx0XG4gICAgICAgICAgICB+ZGVmYXVsdFxuICAgICAgICAgICAgfmRvY1xuICAgICAgICA9XG4gICAgICAgIGxldCBkb2MgPVxuICAgICAgICAgIG1hdGNoIHNleHBfb2ZfZGVmYXVsdCBkZWZhdWx0IHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSBcIl9cIiAtPiBkb2NcbiAgICAgICAgICB8IGRlZmF1bHRfc2V4cCAtPiBzcHJpbnRmICFcIiVzIChkZWZhdWx0OiAle1NleHB9KVwiIGRvYyBkZWZhdWx0X3NleHBcbiAgICAgICAgaW5cbiAgICAgICAgZmxhZ1xuICAgICAgICAgID9hbGlhc2VzXG4gICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICAob3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUpXG4gICAgICAgICAgfmRvY1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCByZXR1cm4gdiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiAoZnVuICgpIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHYpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID1cbiAgICAgIHsgdCB3aXRoXG4gICAgICAgIGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB0LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIGYgKCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUucmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb3V0Y29tZSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgICAgeyB0IHdpdGhcbiAgICAgICAgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHQuZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4gZiAoKSAtPlxuICAgICAgICAgICAgIGxldCBvdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5pbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFncyBvdXRjb21lKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgb3B0aW9uYWxfdG9fcmVxdWlyZWQgdCA9XG4gICAgICB7IHQgd2l0aFxuICAgICAgICBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgdC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biBmICgpIC0+XG4gICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAoUGFyc2luZ19vdXRjb21lLm1hcCBvdXRjb21lIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyBcIltvcHRpb25hbF90b19yZXF1aXJlZF0gZ290IGEgW05vbmVdIHJlc3VsdFwiKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IE9rIHYpKSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgZW5kKVxuXG4gICAgbGV0IGFyZ19uYW1lcyB0ID1cbiAgICAgIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSBpblxuICAgICAgbGV0IGZsYWdfbmFtZXMgPSBNYXAua2V5cyBmbGFncyBpblxuICAgICAgbGV0IGFub25fbmFtZXMgPSBBbm9ucy5HcmFtbWFyLm5hbWVzICh0LnVzYWdlICgpKSBpblxuICAgICAgTGlzdC5jb25jYXQgWyBmbGFnX25hbWVzOyBhbm9uX25hbWVzIF1cbiAgICA7O1xuXG4gICAgbGV0IHJlcXVpcmVkX2FyZ19uYW1lcyB0ID1cbiAgICAgIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSBpblxuICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgZmxhZ3MpIH5mOihmdW4gKG5hbWUsIGZsYWcpIC0+XG4gICAgICAgIGlmIGZsYWcubnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2UgdGhlbiBTb21lIG5hbWUgZWxzZSBOb25lKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ2hvb3NlX29uZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSBwYXJhbSA9ICdhIHRcblxuICAgICAgbW9kdWxlIENob2ljZV9uYW1lIDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIGxpc3RfdG9fc3RyaW5nIDogdCBsaXN0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgY3JlYXRlX2V4biA6ICdhIHBhcmFtIC0+IHRcbiAgICAgICAgdmFsIGVudW1lcmF0ZV9yZXF1aXJlZF9mbGFncyA6IHQgLT4gZXhjZXB0OnN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgeyBhbGxfYXJncyA6IHN0cmluZyBsaXN0XG4gICAgICAgICAgICA7IHJlcXVpcmVkX2FyZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQuYWxsX2FyZ3MgOiBzdHJpbmcgbGlzdCldXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biBwYXJhbSA9XG4gICAgICAgICAgbGV0IHJlcXVpcmVkX2FyZ3MgPSByZXF1aXJlZF9hcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXMgPSBhcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXNfd2l0aF9jb21tYXMgPSBMaXN0LmZpbHRlciBuYW1lcyB+ZjooZnVuIHMgLT4gU3RyaW5nLmNvbnRhaW5zIHMgJywnKSBpblxuICAgICAgICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBuYW1lc193aXRoX2NvbW1hcylcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkZvciBzaW1wbGljaXR5LCBbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGRvZXMgbm90IHN1cHBvcnQgbmFtZXMgd2l0aCBcXFxuICAgICAgICAgICAgICAgY29tbWFzLlwiXG4gICAgICAgICAgICAgIG5hbWVzX3dpdGhfY29tbWFzXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdXG4gICAgICAgICAgICB8PiBFcnJvci5yYWlzZTtcbiAgICAgICAgICBtYXRjaCBuYW1lcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2UgXCJbY2hvb3NlX29uZV0gZXhwZWN0cyBjaG9pY2VzIHRvIHJlYWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cIl1cbiAgICAgICAgICB8IF8gOjogXyAtPiB7IGFsbF9hcmdzID0gbmFtZXM7IHJlcXVpcmVkX2FyZ3MgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgICAgbWF0Y2ggdC5yZXF1aXJlZF9hcmdzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiB0LmFsbF9hcmdzXG4gICAgICAgICAgfCBfIDo6IF8gLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIHQucmVxdWlyZWRfYXJnc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBlbnVtZXJhdGVfcmVxdWlyZWRfZmxhZ3MgdCB+ZXhjZXB0ID1cbiAgICAgICAgICBtYXRjaCBMaXN0LmZpbHRlciB0LnJlcXVpcmVkX2FyZ3MgfmY6KGZ1biB4IC0+IG5vdCAoU3RyaW5nLmVxdWFsIGV4Y2VwdCB4KSkgd2l0aFxuICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgIHwgXyA6OiBfIGFzIGwgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIGwpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGxpc3RfdG9fc3RyaW5nIHRzID0gTGlzdC5tYXAgdHMgfmY6dG9fc3RyaW5nIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcbiAgXCJcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgICAgICAgICAodHlwZSBhIGIpXG4gICAgICAgICAgICA/KG5ld19iZWhhdmlvciA9IHRydWUpXG4gICAgICAgICAgICAodHMgOiBhIHBhcmFtIGxpc3QpXG4gICAgICAgICAgICB+KGlmX25vdGhpbmdfY2hvc2VuIDogKGEsIGIpIElmX25vdGhpbmdfY2hvc2VuLnQpXG4gICAgICAgID1cbiAgICAgICAgbGV0IGZpeF9mbGFnIHQgPVxuICAgICAgICAgIGlmIG5ld19iZWhhdmlvclxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5hbWVfb2ZfdGhlX2dyb3VwID0gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0IGluXG4gICAgICAgICAgICBsZXQgZml4X251bV9vY2N1cnJlbmNlcyBmbGFnID1cbiAgICAgICAgICAgICAgeyBmbGFnIHdpdGhcbiAgICAgICAgICAgICAgICBGbGFnLkludGVybmFsLm51bV9vY2N1cnJlbmNlcyA9XG4gICAgICAgICAgICAgICAgICB7IGZsYWcuRmxhZy5JbnRlcm5hbC5udW1fb2NjdXJyZW5jZXMgd2l0aCBhdF9sZWFzdF9vbmNlID0gZmFsc2UgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmQgZml4X2RvYyBmbGFnID1cbiAgICAgICAgICAgICAgeyBmbGFnIHdpdGhcbiAgICAgICAgICAgICAgICBGbGFnLkludGVybmFsLmRvYyA9XG4gICAgICAgICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwiJXMlc1wiXG4gICAgICAgICAgICAgICAgICAgIGZsYWcuRmxhZy5JbnRlcm5hbC5kb2NcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgIENob2ljZV9uYW1lLmVudW1lcmF0ZV9yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNlcHQ6ZmxhZy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9vZl90aGVfZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZ3JvdXAgLT4gc3ByaW50ZiBcIiBbcmVxdWlyZXM6IFxcXCIlc1xcXCJdXCIgZ3JvdXApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuZCBtYWtlX2Fub25zX29wdGlvbmFsIChhbm9uIDogQW5vbnMuR3JhbW1hci50KSA9XG4gICAgICAgICAgICAgIEFub25zLkdyYW1tYXIubWF5YmVfaWRlbXBvdGVudCBhbm9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB0IHdpdGhcbiAgICAgICAgICAgICAgdXNhZ2UgPSAoZnVuICgpIC0+IG1ha2VfYW5vbnNfb3B0aW9uYWwgKHQudXNhZ2UgKCkpKVxuICAgICAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgIExpc3QubWFwICh0LmZsYWdzICgpKSB+ZjooZnVuIGZsYWdfaW50ZXJuYWwgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZsYWdfaW50ZXJuYWwgfD4gZml4X251bV9vY2N1cnJlbmNlcyB8PiBmaXhfZG9jKSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgZWxzZSB0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+IENob2ljZV9uYW1lLmNyZWF0ZV9leG4gdCwgZml4X2ZsYWcgdClcbiAgICAgICAgICB8PiBNYXAub2ZfYWxpc3QgKG1vZHVsZSBDaG9pY2VfbmFtZSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT5cbiAgICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiW0NvbW1hbmQuU3BlYy5jaG9vc2Vfb25lXSBjYWxsZWQgd2l0aCBkdXBsaWNhdGUgbmFtZVwiXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBbJXNleHBfb2Y6IENob2ljZV9uYW1lLnRdXG4gICAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICAgICAgfCBgT2sgdHMgLT5cbiAgICAgICAgICBNYXAuZm9sZCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTp0IGFjYyAtPlxuICAgICAgICAgICAgbWFwMlxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgKHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQpXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIHsgcmVzdWx0ID0gdmFsdWU7IGhhc19hcmcgfSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGhhc19hcmcgd2l0aFxuICAgICAgICAgICAgICAgIHwgZmFsc2UgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCB0cnVlIC0+IChuYW1lLCB2YWx1ZSkgOjogYWNjKSlcbiAgICAgICAgICB8PiBtYXAgfmY6KGZ1biB2YWx1ZV9saXN0IC0+XG4gICAgICAgICAgICBsZXQgYXJnX2NvdW50ZXIgPSBMaXN0Lmxlbmd0aCB2YWx1ZV9saXN0IGluXG4gICAgICAgICAgICBsZXQgbWlzc2luZ19mbGFnX2Vycm9yIGZtdCA9XG4gICAgICAgICAgICAgIGtzcHJpbnRmXG4gICAgICAgICAgICAgICAgKGZ1biBtc2cgKCkgLT4gRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIChFcnJvci5vZl9zdHJpbmcgbXNnKSkpXG4gICAgICAgICAgICAgICAgZm10XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vcmVfdGhhbl9vbmVfZXJyb3IgcGFzc2VkID1cbiAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgIVwiQ2Fubm90IHBhc3MgbW9yZSB0aGFuIG9uZSBvZiB0aGVzZTogXFxuXFxcbiAgICAgICAgICAgICAgICAgXFwgICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAoTGlzdC5tYXAgcGFzc2VkIH5mOmZzdClcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgYW5kIHN1Y2Nlc3NfbGlzdCwgZXJyb3JfbGlzdCA9XG4gICAgICAgICAgICAgIExpc3QucGFydGl0aW9uX21hcCB2YWx1ZV9saXN0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgbmFtZSwgT2sgdmFsdWUgLT4gRmlyc3QgKG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgICAgIHwgbmFtZSwgRXJyb3IgZXJyIC0+IFNlY29uZCAobmFtZSwgZXJyKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBzdWNjZXNzX2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCBfIDo6IF8gOjogXyBhcyBwYXNzZWQgLT4gbW9yZV90aGFuX29uZV9lcnJvciBwYXNzZWRcbiAgICAgICAgICAgIHwgWyAoXywgKHZhbHVlIDogYSkpIF0gLT5cbiAgICAgICAgICAgICAgaWYgYXJnX2NvdW50ZXIgPiAxXG4gICAgICAgICAgICAgIHRoZW4gbW9yZV90aGFuX29uZV9lcnJvciB2YWx1ZV9saXN0XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBPa1xuICAgICAgICAgICAgICAgICAgKG1hdGNoIGlmX25vdGhpbmdfY2hvc2VuIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gKF8gOiBhKSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgICAgIHwgUmFpc2UgLT4gKHZhbHVlIDogYilcbiAgICAgICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IChTb21lIHZhbHVlIDogYikpXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBlcnJvcl9saXN0IHdpdGhcbiAgICAgICAgICAgICAgIHwgWyAobmFtZSwgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyKSBdIC0+XG4gICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJOb3QgYWxsIGZsYWdzIGluIGdyb3VwIFxcXCIlc1xcXCIgYXJlIGdpdmVuOiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKENob2ljZV9uYW1lLnRvX3N0cmluZyBuYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFcnJvci50b19zdHJpbmdfaHVtIGVycikpKSlcbiAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIHZhbHVlIC0+IE9rIHZhbHVlXG4gICAgICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IE9rIE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgUmFpc2UgLT5cbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19mbGFnX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIVwiTXVzdCBwYXNzIG9uZSBvZiB0aGVzZTpcXG4gICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAoTWFwLmtleXMgdHMpXG4gICAgICAgICAgICAgICAgICAgICAgKCkpKSlcbiAgICAgICAgICB8PiBpbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgOztcblxuICAgICAgbGV0IGNob29zZV9vbmVcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgICh0cyA6IGEgb3B0aW9uIHBhcmFtIGxpc3QpXG4gICAgICAgICAgICB+KGlmX25vdGhpbmdfY2hvc2VuIDogKGEsIGIpIElmX25vdGhpbmdfY2hvc2VuLnQpXG4gICAgICAgID1cbiAgICAgICAgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgICAgICB+bmV3X2JlaGF2aW9yOmZhbHNlXG4gICAgICAgICAgfmlmX25vdGhpbmdfY2hvc2VuXG4gICAgICAgICAgKExpc3QubWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIG1hcF9vdXRjb21lIHQgfmY6KGZ1biB7IFBhcnNpbmdfb3V0Y29tZS5yZXN1bHQ7IGhhc19hcmcgfSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgT2sgKFNvbWUgdmFsdWUpIC0+IHsgUGFyc2luZ19vdXRjb21lLnJlc3VsdCA9IE9rIHZhbHVlOyBoYXNfYXJnID0gdHJ1ZSB9XG4gICAgICAgICAgICAgICB8IE9rIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgeyBoYXNfYXJnID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgOyByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIChFcnJvci5vZl9zdHJpbmcgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWdcIikpXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIHwgRXJyb3IgXyBhcyByZXN1bHQgLT4geyBoYXNfYXJnOyByZXN1bHQgfSkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IENob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gQ2hvb3NlX29uZS5jaG9vc2Vfb25lXG5cbiAgICBsZXQgY2hvb3NlX29uZV9ub25fb3B0aW9uYWwgbHN0IH5pZl9ub3RoaW5nX2Nob3NlbiA9XG4gICAgICBDaG9vc2Vfb25lLmNob29zZV9vbmVfbm9uX29wdGlvbmFsIGxzdCB+aWZfbm90aGluZ19jaG9zZW5cbiAgICA7O1xuXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgdCA9IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIGFyZ19uYW1lcyB0KVxuXG4gICAgbGV0IGFuZF9hcmdfbmFtZSB0ID1cbiAgICAgIG1hdGNoIGFyZ19uYW1lcyB0IHdpdGhcbiAgICAgIHwgWyBuYW1lIF0gLT4gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgbmFtZSlcbiAgICAgIHwgbmFtZXMgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbYW5kX2FyZ19uYW1lXSBleHBlY3RzIGV4YWN0bHkgb25lIG5hbWUsIGdvdFwiIH5fOihuYW1lcyA6IHN0cmluZyBsaXN0KV1cbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlIHsgZmxhZ3M7IHVzYWdlID0gXzsgZiB9IGFyZ3MgPVxuICAgICAgbGV0IGNtZGxpbmUgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBOb25lIGluXG4gICAgICBydW5cbiAgICAgICAgeyBzdW1tYXJ5ID0gXCJcIlxuICAgICAgICA7IHJlYWRtZSA9IE5vbmVcbiAgICAgICAgOyBmbGFncyA9IGZsYWdzICgpIHw+IEZsYWcuSW50ZXJuYWwuY3JlYXRlXG4gICAgICAgIDsgYW5vbnMgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IG9wZW4gQW5vbnMuUGFyc2VyLkJhc2ljLkZvcl9vcGVuaW5nIGluXG4gICAgICAgICAgICAgICBmICgpXG4gICAgICAgICAgICAgICA+PnwgZnVuIHBhcmFtcyBgUGFyc2VfYXJncyBgUnVuX21haW4gLT5cbiAgICAgICAgICAgICAgIGxldCBvdXRjb21lID0gcGFyYW1zICgpIGluXG4gICAgICAgICAgICAgICBtYXRjaCBvdXRjb21lLnJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIC0+IHJlc3VsdCA6PSBTb21lIChFcnJvciBlcnIpXG4gICAgICAgICAgICAgICB8IE9rIHggLT4gcmVzdWx0IDo9IFNvbWUgKE9rIHgpKVxuICAgICAgICA7IHVzYWdlID0gQW5vbnMuR3JhbW1hci56ZXJvXG4gICAgICAgIH1cbiAgICAgICAgVW5pdl9tYXAuZW1wdHlcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgICB+YXJnczpjbWRsaW5lXG4gICAgICAgIH5wYXRoOlBhdGguZW1wdHlcbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6KFNvbWUgdHJ1ZSlcbiAgICAgICAgfmhlbHBfdGV4dDoobGF6eSBcIk5vIGhlbHAgZm9yIHBhcnNpbmdcIilcbiAgICAgICAgfm9uX2ZhaWx1cmU6XG4gICAgICAgICAgKGZ1blxuICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICB+Zm9yX2NvbXBsZXRpb246KF8gOiBib29sKVxuICAgICAgICAgICAgfnBhdGg6KF8gOiBQYXRoLnQpXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjooXyA6IGJvb2wgb3B0aW9uKVxuICAgICAgICAgICAgLT4gcmVzdWx0IDo9IFNvbWUgKEVycm9yIChFcnJvci5vZl9leG4gZXhuKSkpO1xuICAgICAgT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdICFyZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAtPiAnYikgUGFyYW0udFxuICAgIHR5cGUgJ2EgcGFyYW0gPSAnYSBQYXJhbS50XG5cbiAgICBsZXQgYXBwbHkgPSBQYXJhbS5hcHBseVxuICAgIGxldCAoICsrICkgdDEgdDIgPSBQYXJhbS5tYXAyIHQxIHQyIH5mOihmdW4gZjEgZjIgeCAtPiBmMiAoZjEgeCkpXG4gICAgbGV0ICggKz4gKSB0MSBwMiA9IFBhcmFtLm1hcDIgdDEgcDIgfmY6KGZ1biBmMSBwMiB4IC0+IChmMSB4KSBwMilcbiAgICBsZXQgKCArPCApIHQxIHAyID0gUGFyYW0ubWFwMiBwMiB0MSB+ZjooZnVuIHAyIGYxIHggLT4gZjEgKHggcDIpKVxuICAgIGxldCBzdGVwIGYgPSBQYXJhbS5yZXR1cm4gZlxuXG4gICAgKCogSWRlYWxseSB0aGlzIHdvdWxkIGJlIFtsZXQgZW1wdHkgPSBQYXJhbS5yZXR1cm4gRm4uaWRdLCBidXQgdW5mb3J0dW5hdGVseSB0aGF0XG4gICAgICAgZG9lc24ndCBjb21waWxlIGJlY2F1c2Ugb2YgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICopXG4gICAgbGV0IGVtcHR5ID0gUGFyYW0uZW1wdHlfc3BlY1xuICAgIGxldCBjb25zdCB4ID0gUGFyYW0ucmV0dXJuIHhcbiAgICBsZXQgbWFwID0gUGFyYW0ubWFwXG4gICAgbGV0IHdyYXAgZiB0ID0gUGFyYW0ubWFwIHQgfmY6KGZ1biBydW4gbWFpbiAtPiBmIH5ydW4gfm1haW4pXG4gICAgbGV0IG9mX3BhcmFtIHAgPSBtYXAgcCB+ZjooZnVuIGYgayAtPiBrIGYpXG4gICAgbGV0IHRvX3BhcmFtIHQgbSA9IG1hcCB0IH5mOihmdW4gZiAtPiBmIG0pXG4gICAgbGV0IHBhdGggOiBQYXRoLnQgcGFyYW0gPSBQYXJhbS5wYXRoXG4gICAgbGV0IGFyZ3MgOiBzdHJpbmcgbGlzdCBwYXJhbSA9IFBhcmFtLmFyZ3NcbiAgICBsZXQgaGVscCA6IHN0cmluZyBMYXp5LnQgcGFyYW0gPSBQYXJhbS5oZWxwXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgICAgIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBBbm9uc1xuXG4gICAgICB0eXBlICdhIGFub25zID0gJ2EgdFxuXG4gICAgICBsZXQgKCAlOiApID0gKCAlOiApXG4gICAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgICAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCA9IG1heWJlX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgICBsZXQgc2VxdWVuY2UgPSBzZXF1ZW5jZVxuICAgICAgbGV0IHQyID0gdDJcbiAgICAgIGxldCB0MyA9IHQzXG4gICAgICBsZXQgdDQgPSB0NFxuICAgICAgbGV0IGFub24gPSBQYXJhbS5hbm9uXG4gICAgZW5kXG5cbiAgICBsZXQgZXNjYXBlX2Fub24gPSBQYXJhbS5lc2NhcGVfYW5vblxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICB0eXBlICdhIGZsYWcgPSAnYSB0XG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlID0gZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgICAgbGV0IG5vX2FyZ19yZXF1aXJlZCA9IG5vX2FyZ19yZXF1aXJlZFxuICAgICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuICAgICAgbGV0IGZsYWcgPSBQYXJhbS5mbGFnXG4gICAgICBsZXQgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jID0gUGFyYW0uZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG5cbiAgICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIFBhcmFtLnRcblxuICAgICAgICAgIGxldCByZXR1cm4gPSBQYXJhbS5yZXR1cm5cbiAgICAgICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBwYWlyID0gUGFyYW0uYm90aFxuICAgIGVuZFxuXG4gICAgbGV0IGZsYWdzX29mX2FyZ3NfZXhuIGFyZ3MgPVxuICAgICAgTGlzdC5mb2xkIGFyZ3MgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIHNwZWMsIGRvYykgLT5cbiAgICAgICAgbGV0IGdlbiBmIGZsYWdfdHlwZSA9XG4gICAgICAgICAgc3RlcCAoZnVuIG0geCAtPlxuICAgICAgICAgICAgZiB4O1xuICAgICAgICAgICAgbSlcbiAgICAgICAgICArPiBQYXJhbS5mbGFnIG5hbWUgZmxhZ190eXBlIH5kb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhbGwgZiBhcmdfdHlwZSA9IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZikgKFBhcmFtLm9wdGlvbmFsIGFyZ190eXBlKSBpblxuICAgICAgICBsZXQgc2V0IHIgYXJnX3R5cGUgPSBjYWxsIChmdW4geCAtPiByIDo9IHgpIGFyZ190eXBlIGluXG4gICAgICAgIGxldCBzZXRfYm9vbCByIGIgPSBnZW4gKGZ1biBwYXNzZWQgLT4gaWYgcGFzc2VkIHRoZW4gciA6PSBiKSBQYXJhbS5ub19hcmcgaW5cbiAgICAgICAgYWNjXG4gICAgICAgICsrXG4gICAgICAgIG1hdGNoIChzcGVjIDogU3RkbGliLkFyZy5zcGVjKSB3aXRoXG4gICAgICAgIHwgVW5pdCBmIC0+IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiBmICgpKSBQYXJhbS5ub19hcmdcbiAgICAgICAgfCBTZXQgciAtPiBzZXRfYm9vbCByIHRydWVcbiAgICAgICAgfCBDbGVhciByIC0+IHNldF9ib29sIHIgZmFsc2VcbiAgICAgICAgfCBTdHJpbmcgZiAtPiBjYWxsIGYgc3RyaW5nXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+IHNldCByIHN0cmluZ1xuICAgICAgICB8IEludCBmIC0+IGNhbGwgZiBpbnRcbiAgICAgICAgfCBTZXRfaW50IHIgLT4gc2V0IHIgaW50XG4gICAgICAgIHwgRmxvYXQgZiAtPiBjYWxsIGYgZmxvYXRcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPiBzZXQgciBmbG9hdFxuICAgICAgICB8IEJvb2wgZiAtPiBjYWxsIGYgYm9vbFxuICAgICAgICB8IFN5bWJvbCAoc3ltcywgZikgLT5cbiAgICAgICAgICBsZXQgYXJnX3R5cGUgPVxuICAgICAgICAgICAgQXJnX3R5cGUub2ZfYWxpc3RfZXhuXG4gICAgICAgICAgICAgIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBzeW1zIH5mOihmdW4gc3ltIC0+IHN5bSwgc3ltKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNhbGwgZiBhcmdfdHlwZVxuICAgICAgICB8IFJlc3QgZiAtPiBnZW4gKGZ1biB4IC0+IE9wdGlvbi5pdGVyIHggfmY6KExpc3QuaXRlciB+ZikpIFBhcmFtLmVzY2FwZVxuICAgICAgICB8IFR1cGxlIF8gLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5UdXBsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChFeHBhbmQgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAwNSwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLkV4cGFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChSZXN0X2FsbCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDEyLCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuUmVzdF9hbGwgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIilcbiAgICA7O1xuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRmxhZy5EZXByZWNhdGVkXG4gICAgICBpbmNsdWRlIEFub25zLkRlcHJlY2F0ZWRcbiAgICBlbmRcblxuICAgIGxldCBhcmdfbmFtZXMgPSBQYXJhbS5hcmdfbmFtZXNcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IFBhcmFtLkNob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gUGFyYW0uY2hvb3NlX29uZVxuICAgIGxldCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbCA9IFBhcmFtLmNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgPSBQYXJhbS5hbmRfYXJnX25hbWVzXG4gICAgbGV0IGFuZF9hcmdfbmFtZSA9IFBhcmFtLmFuZF9hcmdfbmFtZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICA7IGJvZHkgOiAocGF0aDpzdHJpbmcgbGlzdCAtPiB1bml0KSBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlIHQgOiBfIFNoYXBlLkdyb3VwX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c3ViY29tbWFuZF90b19zaGFwZSlcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGFic19wYXRoID0gU2hhcGUuUHJpdmF0ZS5hYnNfcGF0aFxubGV0IGNvbXBfY3dvcmQgPSBFbnZfdmFyLkNPTVBfQ1dPUkRcblxubW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyAoKiBJZiBbcGF0aF90b19leGVdIGlzIHJlbGF0aXZlLCBpbnRlcnByZXQgdy5yLnQuIFt3b3JraW5nX2Rpcl0gKilcbiAgICAgIHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBlbnYgOiBlbnYgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuRXhlY19pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIHQucmVhZG1lXG4gICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA9IHQuY2hpbGRfc3ViY29tbWFuZFxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBIHByb3h5IGNvbW1hbmQgaXMgdGhlIHN0cnVjdHVyZSBvZiBhbiBFeGVjIGNvbW1hbmQgb2J0YWluZWQgYnkgcnVubmluZyBpdCBpbiBhXG4gICBzcGVjaWFsIHdheSAqKVxubW9kdWxlIFByb3h5ID0gc3RydWN0XG4gIG1vZHVsZSBLaW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgQmFzZSBvZiBTaGFwZS5CYXNlX2luZm8udFxuICAgICAgfCBHcm91cCBvZiAnYSBTaGFwZS5Hcm91cF9pbmZvLnRcbiAgICAgIHwgRXhlYyBvZiBTaGFwZS5FeGVjX2luZm8udFxuICAgICAgfCBMYXp5IG9mICdhIHQgTGF6eS50XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGtpbmQgOiB0IEtpbmQudFxuICAgIH1cbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2Ugb2YgQ29tbWFuZF9iYXNlLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwLnRcbiAgfCBFeGVjIG9mIEV4ZWMudFxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBzZXhwYWJsZV9zaGFwZSA6IHQgLT4gU2hhcGUuU2V4cGFibGUudCA9IGZ1bmN0aW9uXG4gIHwgQmFzZSBiYXNlIC0+IEJhc2UgKENvbW1hbmRfYmFzZS5zaGFwZSBiYXNlKVxuICB8IEV4ZWMgZXhlYyAtPiBFeGVjIChFeGVjLnNoYXBlIGV4ZWMpXG4gIHwgR3JvdXAgZ3JvdXAgLT4gR3JvdXAgKEdyb3VwLnNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlOnNleHBhYmxlX3NoYXBlIGdyb3VwKVxuICB8IExhenkgdGh1bmsgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2V4cGFibGVfc2hhcGUgdGh1bmspXG47O1xuXG50eXBlICgnbWFpbiwgJ3Jlc3VsdCkgYmFzaWNfc3BlY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmdcbiAgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpXG4gIC0+ICgnbWFpbiwgdW5pdCAtPiAncmVzdWx0KSBDb21tYW5kX2Jhc2UuU3BlYy50XG4gIC0+ICdtYWluXG4gIC0+IHRcblxubGV0IGV4dGVuZF9leG4gfm1lbSB+YWRkIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBpZiBtZW0gbWFwIGtleVxuICB0aGVuIGZhaWx3aXRoZiBcInRoZXJlIGlzIGFscmVhZHkgYSAlcyBuYW1lZCAlc1wiIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpIGtleSAoKTtcbiAgYWRkIG1hcCB+a2V5IH5kYXRhXG47O1xuXG5sZXQgZXh0ZW5kX21hcF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSB+bWVtOk1hcC5tZW0gfmFkZDpNYXAuc2V0XG47O1xuXG5sZXQgZXh0ZW5kX2FsaXN0X2V4biBhbGlzdCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBleHRlbmRfZXhuXG4gICAgYWxpc3RcbiAgICBrZXlfdHlwZVxuICAgIH5rZXlcbiAgICBkYXRhXG4gICAgfm1lbTooZnVuIGFsaXN0IGtleSAtPiBMaXN0LkFzc29jLm1lbSBhbGlzdCBrZXkgfmVxdWFsOlN0cmluZy5lcXVhbClcbiAgICB+YWRkOihmdW4gYWxpc3QgfmtleSB+ZGF0YSAtPiBMaXN0LkFzc29jLmFkZCBhbGlzdCBrZXkgZGF0YSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuOztcblxubW9kdWxlIEJhaWxvdXRfZHVtcF9mbGFnID0gc3RydWN0XG4gIGxldCBhZGQgYmFzZSB+bmFtZSB+YWxpYXNlcyB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgfnRleHQgfnRleHRfc3VtbWFyeSA9XG4gICAgbGV0IGZsYWdzID0gYmFzZS5Db21tYW5kX2Jhc2UuZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPVxuICAgICAgZXh0ZW5kX21hcF9leG5cbiAgICAgICAgZmxhZ3NcbiAgICAgICAgS2V5X3R5cGUuRmxhZ1xuICAgICAgICB+a2V5Om5hbWVcbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gRmxhZy5OdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gaWdub3JlXG4gICAgICAgIDsgYWN0aW9uID0gUHJpbnRfaW5mb19hbmRfcXVpdCAoZnVuIGVudiAtPiB0ZXh0IGVudilcbiAgICAgICAgOyBkb2MgPSBzcHJpbnRmIFwiIHByaW50ICVzIGFuZCBleGl0XCIgdGV4dF9zdW1tYXJ5XG4gICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IGBQcmVmaXhcbiAgICAgICAgfVxuICAgIGluXG4gICAgeyBiYXNlIHdpdGggZmxhZ3MgfVxuICA7O1xuZW5kXG5cbmxldCBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIHsgQ29tbWFuZF9iYXNlLlBhcmFtLnVzYWdlOyBmbGFnczsgZiB9ID1cbiAgbGV0IGZsYWdzID0gZmxhZ3MgKCkgaW5cbiAgbGV0IHVzYWdlID0gdXNhZ2UgKCkgaW5cbiAgbGV0IGFub25zICgpID1cbiAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmcgaW5cbiAgICBmICgpXG4gICAgPj58IGZ1biBwYXJhbXMgYFBhcnNlX2FyZ3MgLT5cbiAgICBsZXQgb3V0Y29tZSA9IHBhcmFtcyAoKSBpblxuICAgIG1hdGNoIG91dGNvbWUucmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIC0+IGRpZSBcIiVzXCIgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyKSAoKVxuICAgIHwgT2sgdGh1bmsgLT4gZnVuIGBSdW5fbWFpbiAtPiB0aHVuayAoKVxuICBpblxuICBsZXQgZmxhZ3MgPSBGbGFnLkludGVybmFsLmNyZWF0ZSBmbGFncyBpblxuICBsZXQgYmFzZSA9IHsgQ29tbWFuZF9iYXNlLnN1bW1hcnk7IHJlYWRtZTsgdXNhZ2U7IGZsYWdzOyBhbm9ucyB9IGluXG4gIGxldCBiYXNlID1cbiAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgIGJhc2VcbiAgICAgIH5uYW1lOlwiLWhlbHBcIlxuICAgICAgfmFsaWFzZXM6WyBcIi0/XCIgXVxuICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWhlbHBcIiBdXG4gICAgICB+dGV4dF9zdW1tYXJ5OlwidGhpcyBoZWxwIHRleHRcIlxuICAgICAgfnRleHQ6KGZ1biBlbnYgLT4gTGF6eS5mb3JjZSAoRW52LmZpbmRfZXhuIGVudiBDb21tYW5kX2Jhc2UuaGVscF9rZXkpKVxuICBpblxuICBCYXNlIGJhc2Vcbjs7XG5cbmxldCBiYXNpY19zcGVjIH5zdW1tYXJ5ID9yZWFkbWUgc3BlYyBtYWluID1cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSAoQ29tbWFuZF9iYXNlLlNwZWMudG9fcGFyYW0gc3BlYyBtYWluKVxuOztcblxubGV0IHN1YnNfa2V5IDogKHN0cmluZyAqIHQpIGxpc3QgRW52LktleS50ID0gRW52LmtleV9jcmVhdGUgXCJzdWJjb21tYW5kc1wiXG5cbmxldCBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgc3ViY29tbWFuZHMgPVxuICAgIExhenkubWFwIGFsaXN0IH5mOihmdW4gYWxpc3QgLT5cbiAgICAgIGxldCBhbGlzdCA9XG4gICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKG5hbWUsIHQpIC0+IG5vcm1hbGl6ZSBLZXlfdHlwZS5TdWJjb21tYW5kIG5hbWUsIHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLm9mX2FsaXN0IChtb2R1bGUgU3RyaW5nKSBhbGlzdCB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgc3ViY29tbWFuZHMgbmFtZWQgJXNcIiBuYW1lICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgKG1hdGNoIHByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgd2l0aFxuICAgICAgICAgfCBTb21lICgpIC0+IGFsaXN0XG4gICAgICAgICB8IE5vbmUgLT4gTWFwLnRvX2FsaXN0IG1hcCkpXG4gIGluXG4gIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG47O1xuXG5sZXQgZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IChMYXp5LmZyb21fdmFsIGFsaXN0KVxuOztcblxubGV0IGV4ZWMgfnN1bW1hcnkgP3JlYWRtZSA/KGNoaWxkX3N1YmNvbW1hbmQgPSBbXSkgP2VudiB+cGF0aF90b19leGUgKCkgPVxuICBsZXQgd29ya2luZ19kaXIgPVxuICAgIEZpbGVuYW1lX2Jhc2UuZGlybmFtZVxuICAgIEBAXG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIF8gfCBgUmVsYXRpdmVfdG9fbWUgXyAtPiBTdGRsaWIuU3lzLmV4ZWN1dGFibGVfbmFtZVxuICAgIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIF8gLT4gU3RkbGliLlN5cy5hcmd2LigwKVxuICBpblxuICBsZXQgcGF0aF90b19leGUgPVxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lX2Jhc2UuaXNfYWJzb2x1dGUgcClcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJQYXRoIHBhc3NlZCB0byBgQWJzb2x1dGUgbXVzdCBiZSBhYnNvbHV0ZVwiXG4gICAgICBlbHNlIHBcbiAgICB8IGBSZWxhdGl2ZV90b19tZSBwIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWVfYmFzZS5pc19yZWxhdGl2ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBSZWxhdGl2ZV90b19tZSBtdXN0IGJlIHJlbGF0aXZlXCJcbiAgICAgIGVsc2UgcFxuICBpblxuICBFeGVjIHsgc3VtbWFyeTsgcmVhZG1lOyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IGNoaWxkX3N1YmNvbW1hbmQ7IGVudiB9XG47O1xuXG5sZXQgb2ZfbGF6eSB0aHVuayA9IExhenkgdGh1bmtcblxubGV0IHJlYyBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIDogUHJveHkudFxuICA9XG4gIGxldCBraW5kID1cbiAgICBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIGluXG4gIHsgd29ya2luZ19kaXI7IHBhdGhfdG9fZXhlOyBwYXRoX3RvX3N1YmNvbW1hbmQ7IGNoaWxkX3N1YmNvbW1hbmQ7IGtpbmQgfVxuXG5hbmQga2luZF9vZl9zZXhwYWJsZVxuICAgICAgc2V4cGFibGVcbiAgICAgIH53b3JraW5nX2RpclxuICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICA9XG4gIG1hdGNoIChzZXhwYWJsZSA6IFNoYXBlLlNleHBhYmxlLnQpIHdpdGhcbiAgfCBCYXNlIGIgLT4gUHJveHkuS2luZC5CYXNlIGJcbiAgfCBFeGVjIGUgLT4gUHJveHkuS2luZC5FeGVjIGVcbiAgfCBMYXp5IGwgLT5cbiAgICBQcm94eS5LaW5kLkxhenlcbiAgICAgIChMYXp5Lm1hcCBsIH5mOihmdW4gc2V4cGFibGUgLT5cbiAgICAgICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kKSlcbiAgfCBHcm91cCBnIC0+XG4gICAgUHJveHkuS2luZC5Hcm91cFxuICAgICAgeyBnIHdpdGhcbiAgICAgICAgc3ViY29tbWFuZHMgPVxuICAgICAgICAgIExhenkubWFwXG4gICAgICAgICAgICBnLnN1YmNvbW1hbmRzXG4gICAgICAgICAgICB+ZjpcbiAgICAgICAgICAgICAgKExpc3QubWFwIH5mOihmdW4gKHN0ciwgc2V4cGFibGUpIC0+XG4gICAgICAgICAgICAgICAgIGxldCBwYXRoX3RvX3N1YmNvbW1hbmQgPSBwYXRoX3RvX3N1YmNvbW1hbmQgQCBbIHN0ciBdIGluXG4gICAgICAgICAgICAgICAgIGxldCBwcm94eSA9XG4gICAgICAgICAgICAgICAgICAgcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICAgICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgc3RyLCBwcm94eSkpXG4gICAgICB9XG47O1xuXG5tb2R1bGUgVmVyc2lvbl9pbmZvIChWZXJzaW9uX3V0aWwgOiBWZXJzaW9uX3V0aWwpID0gc3RydWN0XG4gIGxldCBwcmludF92ZXJzaW9uIH52ZXJzaW9uID0gcHJpbnRfZW5kbGluZSAoZm9yY2UgdmVyc2lvbilcbiAgbGV0IHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm8gPSBwcmludF9lbmRsaW5lIChmb3JjZSBidWlsZF9pbmZvKVxuXG4gIGxldCBjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvID1cbiAgICBiYXNpY1xuICAgICAgfnN1bW1hcnk6XCJwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uXCJcbiAgICAgIENvbW1hbmRfYmFzZS5QYXJhbS4oXG4gICAgICAgIHJldHVybiAoZnVuIHZlcnNpb25fZmxhZyBidWlsZF9pbmZvX2ZsYWcgLT5cbiAgICAgICAgICBpZiBidWlsZF9pbmZvX2ZsYWdcbiAgICAgICAgICB0aGVuIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm9cbiAgICAgICAgICBlbHNlIGlmIHZlcnNpb25fZmxhZ1xuICAgICAgICAgIHRoZW4gcHJpbnRfdmVyc2lvbiB+dmVyc2lvblxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbztcbiAgICAgICAgICAgIHByaW50X3ZlcnNpb24gfnZlcnNpb24pO1xuICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgPCo+IGZsYWcgXCItdmVyc2lvblwiIG5vX2FyZyB+ZG9jOlwiIHByaW50IHRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICA8Kj4gZmxhZyBcIi1idWlsZC1pbmZvXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgYnVpbGQgaW5mbyBmb3IgdGhpcyBidWlsZFwiKVxuICA7O1xuXG4gIGxldCByZWMgYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIHVudmVyc2lvbmVkID1cbiAgICBtYXRjaCB1bnZlcnNpb25lZCB3aXRoXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLXZlcnNpb25cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLXZlcnNpb25cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcInRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSB2ZXJzaW9uKVxuICAgICAgaW5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLWJ1aWxkLWluZm9cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWJ1aWxkLWluZm9cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcImluZm8gYWJvdXQgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIGJ1aWxkX2luZm8pXG4gICAgICBpblxuICAgICAgQmFzZSBiYXNlXG4gICAgfCBHcm91cCBncm91cCAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgZ3JvdXAuR3JvdXAuc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwidmVyc2lvblwiXG4gICAgICAgICAgICAoY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbykpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBncm91cCB3aXRoIEdyb3VwLnN1YmNvbW1hbmRzIH1cbiAgICB8IEV4ZWMgZXhlYyAtPiBFeGVjIGV4ZWNcbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIGxpbmVzID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIiAoTGlzdC5zb3J0IGxpbmVzIH5jb21wYXJlOlN0cmluZy5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3ZlcnNpb24gPSBsYXp5IChub3JtYWxpemVfdmVyc2lvbl9saW5lcyBWZXJzaW9uX3V0aWwudmVyc2lvbl9saXN0KVxuXG4gIGxldCBkZWZhdWx0X2J1aWxkX2luZm8gPVxuICAgIGxhenlcbiAgICAgICgqIGxhenkgdG8gYXZvaWQgbG9hZGluZyBhbGwgdGhlIHRpbWUgem9uZSBzdHVmZiBhdCB0b3BsZXZlbCAqKVxuICAgICAgKFZlcnNpb25fdXRpbC5yZXByaW50X2J1aWxkX2luZm8gVmVyc2lvbl91dGlsLlRpbWUuc2V4cF9vZl90KVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlZlcnNpb25faW5mb1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChzdHJ1Y3RcbiAgICAgICAgbGV0IHZlcnNpb25fbGlzdCA9IFsgXCJoZzovL3NvbWUvcGF0aF8weGRlYWRiZWVmXCI7IFwic3NoOi8vYS9wYXRoXzhiYWRmMDBkXCIgXVxuICAgICAgICBsZXQgcmVwcmludF9idWlsZF9pbmZvIHRvX3NleHAgPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCAoKSlcblxuICAgICAgICBtb2R1bGUgVGltZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgZW5kXG4gICAgICBlbmQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCB2ZXJzaW9uIHdoZXJlIG11bHRpcGxlIHJlcG9zIGFyZSB1c2VkXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvbjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgICAgIGhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcbiAgICAgICAgc3NoOi8vYS9wYXRoXzhiYWRmMDBkIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCBidWlsZCBpbmZvXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm86KGxhenkgXCJzb21lIGJ1aWxkIGluZm9cIik7XG4gICAgICBbJWV4cGVjdCB7fCBzb21lIGJ1aWxkIGluZm8gfH1dXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IHJlYyBzdW1tYXJ5ID0gZnVuY3Rpb25cbiAgfCBCYXNlIHggLT4geC5zdW1tYXJ5XG4gIHwgR3JvdXAgeCAtPiB4LnN1bW1hcnlcbiAgfCBFeGVjIHggLT4geC5zdW1tYXJ5XG4gIHwgTGF6eSB0aHVuayAtPiBzdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb21tYW5kX2Jhc2UuU3BlY1xuXG4gIGxldCBwYXRoID0gbWFwIH5mOlBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BlYyA9IFNwZWMuRGVwcmVjYXRlZFxuXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyeVxuXG4gIGxldCByZWMgZ2V0X2ZsYWdfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBiYXNlIC0+IGJhc2UuQ29tbWFuZF9iYXNlLmZsYWdzIHw+IE1hcC5rZXlzXG4gICAgfCBMYXp5IHRodW5rIC0+IGdldF9mbGFnX25hbWVzIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIHwgR3JvdXAgXyB8IEV4ZWMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgaGVscF9yZWN1cnNpdmUgfmNtZCB+d2l0aF9mbGFncyB+ZXhwYW5kX2RvdHMgdCBzID1cbiAgICBsZXQgcmVjIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgcyA9XG4gICAgICBsZXQgbmV3X3MgPSBzIF4gKGlmIGV4cGFuZF9kb3RzIHRoZW4gY21kIGVsc2UgXCIuXCIpIF4gXCIgXCIgaW5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICAgIGxldCB0ID0gTGF6eS5mb3JjZSB0aHVuayBpblxuICAgICAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICAgIGxldCBiYXNlX2hlbHAgPSBzIF4gY21kLCBzdW1tYXJ5IChCYXNlIGJhc2UpIGluXG4gICAgICAgIGlmIHdpdGhfZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGJhc2VfaGVscFxuICAgICAgICAgIDo6IExpc3QubWFwXG4gICAgICAgICAgICAgICB+ZjooZnVuIChmbGFnLCBoKSAtPiBuZXdfcyBeIGZsYWcsIGgpXG4gICAgICAgICAgICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAgICAgICAgICB+Y29tcGFyZTpDb21tYW5kX2Jhc2UuRGVwcmVjYXRlZC5zdWJjb21tYW5kX2NtcF9mc3RcbiAgICAgICAgICAgICAgICAgIChDb21tYW5kX2Jhc2UuRGVwcmVjYXRlZC5mbGFnc19oZWxwIH5kaXNwbGF5X2hlbHBfZmxhZ3M6ZmFsc2UgYmFzZSkpXG4gICAgICAgIGVsc2UgWyBiYXNlX2hlbHAgXVxuICAgICAgfCBHcm91cCB7IHN1bW1hcnk7IHN1YmNvbW1hbmRzOyByZWFkbWUgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICAgIChzIF4gY21kLCBzdW1tYXJ5KVxuICAgICAgICA6OiAoTGF6eS5mb3JjZSBzdWJjb21tYW5kc1xuICAgICAgICAgICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOkNvbW1hbmRfYmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gKGNtZCcsIHQpIC0+IGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kOmNtZCcgdCBuZXdfcylcbiAgICAgICAgICAgKVxuICAgICAgfCBFeGVjIF8gLT5cbiAgICAgICAgKCogQ29tbWFuZC5leGVjIGRvZXMgbm90IHN1cHBvcnQgZGVwcmVjYXRlZCBjb21tYW5kcyAqKVxuICAgICAgICBbXVxuICAgIGluXG4gICAgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl91bml4IChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gc3RyaW5nKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFZlcnNpb25faW5mbyA9IFZlcnNpb25faW5mbyAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5WZXJzaW9uX3V0aWwpXG5cbiAgbW9kdWxlIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gRW52X3Zhci50ID0gc3RydWN0XG4gICAgKCogV2UgZm9yY2UgYWNjZXNzIHRvIGVudiB2YXJzIHRvIGdvIHRocm91Z2ggW0NvbW1hbmRfZW52X3Zhcl0gc28gdGhhdCB3ZSBjYW4ga2VlcCBhblxuICAgICAgIGFjY3VyYXRlIGVudW1lcmF0aW9uIG9mIHRoZSB2YXJpYWJsZXMgd2UgdXNlLiAqKVxuXG4gICAgaW5jbHVkZSBGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyXG5cbiAgICBtb2R1bGUgVW5peCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml4XG5cbiAgICAgIGxldCBwdXRlbnYgfmtleSB+ZGF0YSA9IHB1dGVudiB+a2V5OihFbnZfdmFyLnRvX3N0cmluZyBrZXkpIH5kYXRhXG4gICAgICBsZXQgdW5zZXRlbnYga2V5ID0gdW5zZXRlbnYgKEVudl92YXIudG9fc3RyaW5nIGtleSlcbiAgICAgIGxldCB1bnNhZmVfZ2V0ZW52IGtleSA9IHVuc2FmZV9nZXRlbnYgKEVudl92YXIudG9fc3RyaW5nIGtleSlcblxuICAgICAgbGV0IGNvbnZlcnRfZW52IGVudiA9XG4gICAgICAgIGxldCBjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdCA9XG4gICAgICAgICAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIChlbnZfdmFyLCBzdHIpIC0+IEVudl92YXIudG9fc3RyaW5nIGVudl92YXIsIHN0cilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZW52IHdpdGhcbiAgICAgICAgfCBgUmVwbGFjZSBsaXN0IC0+IGBSZXBsYWNlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgRXh0ZW5kIGxpc3QgLT4gYEV4dGVuZCAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYE92ZXJyaWRlIGxpc3QgLT4gYE92ZXJyaWRlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgUmVwbGFjZV9yYXcgXyBhcyByZXBsYWNlIC0+IHJlcGxhY2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52ICgpID1cbiAgICAgICAgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudjooT3B0aW9uLm1hcCBlbnYgfmY6Y29udmVydF9lbnYpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX3Byb2Nlc3NfZW52ID93b3JraW5nX2RpciA/cHJvZ19zZWFyY2hfcGF0aCA/YXJndjAgfnByb2cgfmFyZ3MgfmVudiAoKSA9XG4gICAgICAgIGNyZWF0ZV9wcm9jZXNzX2VudlxuICAgICAgICAgID93b3JraW5nX2RpclxuICAgICAgICAgID9wcm9nX3NlYXJjaF9wYXRoXG4gICAgICAgICAgP2FyZ3YwXG4gICAgICAgICAgfnByb2dcbiAgICAgICAgICB+YXJnc1xuICAgICAgICAgIH5lbnY6KGNvbnZlcnRfZW52IGVudilcbiAgICAgICAgICAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhclxuXG4gICgqIENsZWFyIHRoZSBzZXR0aW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlIGFzc29jaWF0ZWQgd2l0aCBjb21tYW5kLWxpbmVcbiAgICAgY29tcGxldGlvbiBhbmQgcmVjdXJzaXZlIGhlbHAgc28gdGhhdCBzdWJwcm9jZXNzZXMgZG9uJ3Qgc2VlIHRoZW0uXG5cbiAgICAgVXNlIFt1bnNhZmVfZ2V0ZW52XSBzbyBzZXR1aWQtcm9vdCBwcm9ncmFtcyBjYW4gc3RpbGwgcmVhZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgIFRoZXJlIGlzIG5vIHNlY3VyaXR5IHJpc2sgaGVyZSBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIG9ubHkgdXNlZCBhcyB0cmlnZ2VycyB0byBkdW1wXG4gICAgIG91dCBjb21tYW5kIGluZm9ybWF0aW9uLiAqKVxuICBsZXQgZ2V0ZW52X2FuZF9jbGVhciB2YXIgPVxuICAgIGxldCB2YWx1ZSA9IFVuaXgudW5zYWZlX2dldGVudiB2YXIgaW5cbiAgICBpZiBPcHRpb24uaXNfc29tZSB2YWx1ZSB0aGVuIFVuaXgudW5zZXRlbnYgdmFyO1xuICAgIHZhbHVlXG4gIDs7XG5cbiAgbGV0IG1heWJlX2NvbXBfY3dvcmQgKCkgPSBnZXRlbnZfYW5kX2NsZWFyIGNvbXBfY3dvcmQgfD4gT3B0aW9uLm1hcCB+ZjpJbnQub2Zfc3RyaW5nXG5cbiAgbGV0IHNldF9jb21wX2N3b3JkIG5ld192YWx1ZSA9XG4gICAgbGV0IG5ld192YWx1ZSA9IEludC50b19zdHJpbmcgbmV3X3ZhbHVlIGluXG4gICAgVW5peC5wdXRlbnYgfmtleTpjb21wX2N3b3JkIH5kYXRhOm5ld192YWx1ZVxuICA7O1xuXG4gIG1vZHVsZSBFeGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeGVjXG5cbiAgICBsZXQgZXhlY193aXRoX2FyZ3MgdCB+YXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgbGV0IHByb2cgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZSBpblxuICAgICAgbGV0IGFyZ3MgPSB0LmNoaWxkX3N1YmNvbW1hbmQgQCBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gdC5lbnYgaW5cbiAgICAgIE9wdGlvbi5pdGVyIG1heWJlX25ld19jb21wX2N3b3JkIH5mOihmdW4gbiAtPlxuICAgICAgICAoKiBUaGUgbG9naWMgZm9yIHRyYWNraW5nIFttYXliZV9uZXdfY29tcF9jd29yZF0gZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyXG4gICAgICAgICAgIHRoaXMgZXhlYyBzcGVjaWZpZXMgYSBjaGlsZCBzdWJjb21tYW5kLiBJZiBpdCBkb2VzLCBDT01QX0NXT1JEIG5lZWRzIHRvIGJlIHNldFxuICAgICAgICAgICBoaWdoZXIgdG8gYWNjb3VudCBmb3IgdGhlIGFyZ3VtZW50cyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNoaWxkIHN1YmNvbW1hbmQuICopXG4gICAgICAgIHNldF9jb21wX2N3b3JkIChuICsgTGlzdC5sZW5ndGggdC5jaGlsZF9zdWJjb21tYW5kKSk7XG4gICAgICBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgICAgICAgKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIuVW5peC5leGVjID9lbnYgfnByb2cgfmFyZ3Y6KHByb2cgOjogYXJncykgKCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTaGFwZS5TZXhwYWJsZVxuXG4gICAgbGV0IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgKHByb2Nlc3NfaW5mbyA6IFVuaXguUHJvY2Vzc19pbmZvLnQpID1cbiAgICAgICgqIFdlIG5lZWQgdG8gcmVhZCBlYWNoIG9mIHN0ZG91dCBhbmQgc3RkZXJyIGluIGEgc2VwYXJhdGUgdGhyZWFkIHRvIGF2b2lkIGRlYWRsb2Nrc1xuICAgICAgICAgaWYgdGhlIGNoaWxkIHByb2Nlc3MgZGVjaWRlcyB0byB3YWl0IGZvciBhIHJlYWQgb24gb25lIGJlZm9yZSBjbG9zaW5nIHRoZSBvdGhlci5cbiAgICAgICAgIEJ1ZmZlcmluZyBtYXkgaGlkZSB0aGlzIHByb2JsZW0gdW50aWwgb3V0cHV0IGlzIFwic3VmZmljaWVudGx5IGxhcmdlXCIuICopXG4gICAgICBsZXQgc3RhcnRfcmVhZGluZyBkZXNjciBpbmZvID1cbiAgICAgICAgbGV0IG91dHB1dCA9IHJlZiBOb25lIGluXG4gICAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICAgIFRocmVhZC5jcmVhdGVcbiAgICAgICAgICAgIH5vbl91bmNhdWdodF9leG46YFByaW50X3RvX3N0ZGVyclxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgZGVzY3IgfD4gVW5peC5pbl9jaGFubmVsX29mX2Rlc2NyIHw+IEluX2NoYW5uZWwuaW5wdXRfYWxsKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG91dHB1dCA6PSBTb21lIHJlc3VsdClcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyZWFkLmpvaW4gdGhyZWFkO1xuICAgICAgICAgIFVuaXguY2xvc2UgZGVzY3I7XG4gICAgICAgICAgbWF0Y2ggIW91dHB1dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHIGZhaWxlZCB0byByZWFkXCIgKGluZm8gOiBJbmZvLnQpXVxuICAgICAgICAgIHwgU29tZSAoT2sgb3V0cHV0KSAtPiBvdXRwdXRcbiAgICAgICAgICB8IFNvbWUgKEVycm9yIGV4bikgLT4gcmFpc2UgZXhuKVxuICAgICAgaW5cbiAgICAgICgqIFdlIG1pZ2h0IGhhbmcgZm9yZXZlciB0cnlpbmcgdG8gam9pbiB0aGUgcmVhZGluZyB0aHJlYWRzIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGtlZXBzXG4gICAgICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIG9wZW4uIE5vdCBoYW5kbGluZyB0aGlzIGJlY2F1c2UgSSB0aGluayB3ZSd2ZSBuZXZlciBzZWVuIGl0XG4gICAgICAgICBpbiB0aGUgd2lsZCBkZXNwaXRlIHJ1bm5pbmcgdnVsbmVyYWJsZSBjb2RlIGZvciB5ZWFycy4gKilcbiAgICAgICgqIFdlIGhhdmUgdG8gc3RhcnQgYm90aCB0aHJlYWRzIGJlZm9yZSBqb2luaW5nIGFueSBvZiB0aGVtLiAqKVxuICAgICAgbGV0IGZpbmlzaF9zdGRvdXQgPSBzdGFydF9yZWFkaW5nIHByb2Nlc3NfaW5mby5zdGRvdXQgKEluZm8ub2Zfc3RyaW5nIFwic3Rkb3V0XCIpIGluXG4gICAgICBsZXQgZmluaXNoX3N0ZGVyciA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZGVyciAoSW5mby5vZl9zdHJpbmcgXCJzdGRlcnJcIikgaW5cbiAgICAgIFN0YWdlZC51bnN0YWdlIGZpbmlzaF9zdGRvdXQgKCksIFN0YWdlZC51bnN0YWdlIGZpbmlzaF9zdGRlcnIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmQgPVxuICAgICAgbGV0IHByb2Nlc3NfaW5mbyA9XG4gICAgICAgIFVuaXguY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgKClcbiAgICAgICAgICB+cHJvZzooYWJzX3BhdGggfmRpcjp3b3JraW5nX2RpciBwYXRoX3RvX2V4ZSlcbiAgICAgICAgICB+YXJnczpjaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgfmVudjpcbiAgICAgICAgICAgIChsZXQgaGVscF9zZXhwID1cbiAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucyB8PiBTZXQuc2V4cF9vZl9tX190IChtb2R1bGUgSW50KSB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgYEV4dGVuZCBbIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCwgaGVscF9zZXhwIF0pXG4gICAgICBpblxuICAgICAgVW5peC5jbG9zZSBwcm9jZXNzX2luZm8uc3RkaW47XG4gICAgICBsZXQgc3Rkb3V0LCBzdGRlcnIgPSByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIHByb2Nlc3NfaW5mbyBpblxuICAgICAgVW5peC53YWl0IHByb2Nlc3NfaW5mby5waWQ7XG4gICAgICAoKiBOb3cgd2UndmUga2lsbGVkIGFsbCB0aGUgcHJvY2Vzc2VzIGFuZCB0aHJlYWRzIHdlIG1hZGUuICopXG4gICAgICBtYXRjaCBzdGRvdXQgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBWZXJzaW9uZWQudF9vZl9zZXhwIHw+IG9mX3ZlcnNpb25lZCB3aXRoXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJjYW5ub3QgcGFyc2UgY29tbWFuZCBzaGFwZVwiXG4gICAgICAgICAgICAgIH5fOihleG4gOiBleG4pXG4gICAgICAgICAgICAgIChzdGRvdXQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgIChzdGRlcnIgOiBzdHJpbmcpXVxuICAgICAgfCB0IC0+IHRcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5kICh0IDogdCkgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgICBtYXRjaCBwYXRoX3RvX3N1YmNvbW1hbmQgd2l0aFxuICAgICAgfCBbXSAtPiB0XG4gICAgICB8IHN1YiA6OiBzdWJzIC0+XG4gICAgICAgIChtYXRjaCB0IHdpdGhcbiAgICAgICAgIHwgQmFzZSBfIC0+IGZhaWx3aXRoZiBcInVuZXhwZWN0ZWQgc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgfCBMYXp5IHRodW5rIC0+IGZpbmQgKExhenkuZm9yY2UgdGh1bmspIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgIHwgRXhlYyB7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgY2hpbGRfc3ViY29tbWFuZDsgXyB9IC0+XG4gICAgICAgICAgIGZpbmRcbiAgICAgICAgICAgICAob2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZClcbiAgICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOihzdWIgOjogKHN1YnMgQCBjaGlsZF9zdWJjb21tYW5kKSlcbiAgICAgICAgIHwgR3JvdXAgZyAtPlxuICAgICAgICAgICAobWF0Y2ggTGlzdC5Bc3NvYy5maW5kIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpIH5lcXVhbDpTdHJpbmcuZXF1YWwgc3ViIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJ1bmtub3duIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IGZpbmQgdCB+cGF0aF90b19zdWJjb21tYW5kOnN1YnMpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQgPVxuICAgIFNleHBhYmxlLm9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICB8PiBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOltdXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZV9vZl9wcm94eSBwcm94eSA6IFNoYXBlLnQgPSBzaGFwZV9vZl9wcm94eV9raW5kIHByb3h5LlByb3h5LmtpbmRcblxuICBhbmQgc2hhcGVfb2ZfZXhlICgpIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIgPVxuICAgIHNoYXBlX29mX3Byb3h5IChwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQpXG5cbiAgYW5kIHNoYXBlX29mX3Byb3h5X2tpbmQga2luZCA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgYlxuICAgIHwgTGF6eSBsIC0+IExhenkgKExhenkubWFwIH5mOnNoYXBlX29mX3Byb3h5X2tpbmQgbClcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIEdyb3VwXG4gICAgICAgIHsgZyB3aXRoXG4gICAgICAgICAgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCBnLnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzaGFwZV9vZl9wcm94eSlcbiAgICAgICAgfVxuICAgIHwgRXhlYyAoeyBjaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZSB0IDogU2hhcGUudCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgKENvbW1hbmRfYmFzZS5zaGFwZSBiKVxuICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2hhcGUgZylcbiAgICB8IEV4ZWMgKHsgRXhlYy5jaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoRXhlYy5zaGFwZSBlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgICB8IExhenkgdGh1bmsgLT4gc2hhcGUgKExhenkuZm9yY2UgdGh1bmspXG4gIDs7XG5cbiAgbGV0IGdhdGhlcl9oZWxwIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cyBzaGFwZSA9XG4gICAgbGV0IHJlYyBsb29wIHBhdGggYWNjIHNoYXBlID1cbiAgICAgIGxldCBzdHJpbmdfb2ZfcGF0aCA9IGlmIGV4cGFuZF9kb3RzIHRoZW4gUGF0aC50b19zdHJpbmcgZWxzZSBQYXRoLnRvX3N0cmluZ19kb3RzIGluXG4gICAgICBsZXQgZ2F0aGVyX2dyb3VwIHBhdGggYWNjIHN1YmNvbW1hbmRzID1cbiAgICAgICAgbGV0IGZpbHRlcmVkX3N1YmNvbW1hbmRzID1cbiAgICAgICAgICAoKiBPbmx5IHNob3cgdGhlIFtoZWxwXSBzdWJjb21tYW5kIGF0IHRvcC1sZXZlbC4gKilcbiAgICAgICAgICBpZiBQYXRoLmlzX2VtcHR5IHBhdGhcbiAgICAgICAgICB0aGVuIHN1YmNvbW1hbmRzXG4gICAgICAgICAgZWxzZSBMaXN0LkFzc29jLnJlbW92ZSB+ZXF1YWw6U3RyaW5nLiggPSApIHN1YmNvbW1hbmRzIFwiaGVscFwiXG4gICAgICAgIGluXG4gICAgICAgIGZpbHRlcmVkX3N1YmNvbW1hbmRzXG4gICAgICAgIHw+IExpc3Quc3RhYmxlX3NvcnQgfmNvbXBhcmU6KGZ1biBhIGIgLT4gaGVscF9zY3JlZW5fY29tcGFyZSAoZnN0IGEpIChmc3QgYikpXG4gICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgKHN1YmNvbW1hbmQsIHNoYXBlKSAtPlxuICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZCBpblxuICAgICAgICAgIGxldCBuYW1lID0gc3RyaW5nX29mX3BhdGggcGF0aCBpblxuICAgICAgICAgIGxldCBkb2MgPSBTaGFwZS5nZXRfc3VtbWFyeSBzaGFwZSBpblxuICAgICAgICAgIGxldCBhY2MgPSB7IFNoYXBlLkZsYWdfaW5mby5uYW1lOyBkb2M7IGFsaWFzZXMgPSBbXSB9IDo6IGFjYyBpblxuICAgICAgICAgIGlmIHJlY3Vyc2l2ZSB0aGVuIGxvb3AgcGF0aCBhY2Mgc2hhcGUgZWxzZSBhY2MpXG4gICAgICBpblxuICAgICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgICAgfCBFeGVjIChfLCBzaGFwZSkgLT5cbiAgICAgICAgKCogSWYgdGhlIGV4ZWN1dGFibGUgYmVpbmcgY2FsbGVkIGRvZXNuJ3QgdXNlIFtDb3JlLkNvbW1hbmRdLCB0aGVuIHNleHAgZXh0cmFjdGlvblxuICAgICAgICAgICB3aWxsIGZhaWwuICopXG4gICAgICAgICh0cnkgbG9vcCBwYXRoIGFjYyAoc2hhcGUgKCkpIHdpdGhcbiAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICB8IEdyb3VwIGcgLT4gZ2F0aGVyX2dyb3VwIHBhdGggYWNjIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpXG4gICAgICB8IEJhc2ljIGIgLT5cbiAgICAgICAgaWYgZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGIuZmxhZ3NcbiAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGZtdCAtPiBTdHJpbmcuKCA8PiApIGZtdC5uYW1lIFwiWy1oZWxwXVwiKVxuICAgICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgZm10IC0+XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6Zm10Lm5hbWUgaW5cbiAgICAgICAgICAgIGxldCBmbXQgPSB7IGZtdCB3aXRoIG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIH0gaW5cbiAgICAgICAgICAgIGZtdCA6OiBhY2MpXG4gICAgICAgIGVsc2UgYWNjXG4gICAgICB8IExhenkgdGh1bmsgLT4gbG9vcCBwYXRoIGFjYyAoTGF6eS5mb3JjZSB0aHVuaylcbiAgICBpblxuICAgIGxvb3AgUGF0aC5lbXB0eSBbXSBzaGFwZSB8PiBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBncm91cF9vcl9leGVjX2hlbHBfdGV4dCB+ZmxhZ3MgfnBhdGggfnN1bW1hcnkgfnJlYWRtZSB+Zm9ybWF0X2xpc3QgPVxuICAgIHVucGFyYWdyYXBoc1xuICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgWyBTb21lIHN1bW1hcnlcbiAgICAgICAgIDsgU29tZSAoU3RyaW5nLmNvbmNhdCBbIFwiICBcIjsgUGF0aC50b19zdHJpbmcgcGF0aDsgXCIgU1VCQ09NTUFORFwiIF0pXG4gICAgICAgICA7IHJlYWRtZVxuICAgICAgICAgOyBTb21lIChpZiBmbGFncyB0aGVuIFwiPT09IHN1YmNvbW1hbmRzIGFuZCBmbGFncyA9PT1cIiBlbHNlIFwiPT09IHN1YmNvbW1hbmRzID09PVwiKVxuICAgICAgICAgOyBTb21lIChTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS50b19zdHJpbmcgZm9ybWF0X2xpc3QpXG4gICAgICAgICBdKVxuICA7O1xuXG4gIGxldCByZWMgaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmUgPVxuICAgIGxldCBmb3JtYXRfbGlzdCA9IGdhdGhlcl9oZWxwIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSBzaGFwZSBpblxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEJhc2ljIGIgLT5cbiAgICAgIGxldCB1c2FnZSA9IFNoYXBlLkJhc2VfaW5mby5nZXRfdXNhZ2UgYiBpblxuICAgICAgdW5wYXJhZ3JhcGhzXG4gICAgICAgIChMaXN0LmZpbHRlcl9vcHRcbiAgICAgICAgICAgWyBTb21lIGIuc3VtbWFyeVxuICAgICAgICAgICA7IFNvbWUgKFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiBcIiBeIHVzYWdlKVxuICAgICAgICAgICA7IGIucmVhZG1lXG4gICAgICAgICAgIDsgU29tZSBcIj09PSBmbGFncyA9PT1cIlxuICAgICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBiLmZsYWdzKVxuICAgICAgICAgICBdKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6Zy5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6Zy5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgRXhlYyAoZSwgXykgLT5cbiAgICAgIGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0XG4gICAgICAgIH5mbGFnc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+cmVhZG1lOmUucmVhZG1lXG4gICAgICAgIH5zdW1tYXJ5OmUuc3VtbWFyeVxuICAgICAgICB+Zm9ybWF0X2xpc3RcbiAgICB8IExhenkgdGh1bmsgLT4gaGVscF9mb3Jfc2hhcGUgKExhenkuZm9yY2UgdGh1bmspIHBhdGggfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlXG4gIDs7XG5cbiAgbGV0IGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lID1cbiAgICBiYXNpY1xuICAgICAgfnN1bW1hcnk6XCJleHBsYWluIGEgZ2l2ZW4gc3ViY29tbWFuZCAocGVyaGFwcyByZWN1cnNpdmVseSlcIlxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLihcbiAgICAgICAgcmV0dXJuIChmdW4gcmVjdXJzaXZlIGZsYWdzIGV4cGFuZF9kb3RzIHBhdGggKGVudiA6IEVudi50KSBjbWRfb3B0ICgpIC0+XG4gICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IHN1YnNfa2V5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBzdWJzIC0+IHN1YnNcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICgqIG1haW50YWluZWQgYnkgW2Rpc3BhdGNoXSAqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHBhdGggPVxuICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnBvcF9oZWxwIHBhdGggaW5cbiAgICAgICAgICAgIE9wdGlvbi5mb2xkIGNtZF9vcHQgfmluaXQ6cGF0aCB+ZjooZnVuIHBhdGggc3ViY29tbWFuZCAtPlxuICAgICAgICAgICAgICBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHBhdGgsIHNoYXBlID1cbiAgICAgICAgICAgIG1hdGNoIGNtZF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHN1YnMgfmY6c2hhcGUgfD4gTGF6eS5mcm9tX3ZhbCBpblxuICAgICAgICAgICAgICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSBpblxuICAgICAgICAgICAgICBwYXRoLCBTaGFwZS5Hcm91cCB7IHJlYWRtZTsgc3VtbWFyeTsgc3ViY29tbWFuZHMgfVxuICAgICAgICAgICAgfCBTb21lIGNtZCAtPlxuICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgbG9va3VwX2V4cGFuZFxuICAgICAgICAgICAgICAgICAgIChMaXN0LkFzc29jLm1hcCBzdWJzIH5mOihmdW4geCAtPiB4LCBgUHJlZml4KSlcbiAgICAgICAgICAgICAgICAgICBjbWRcbiAgICAgICAgICAgICAgICAgICBTdWJjb21tYW5kXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICAgXCJ1bmtub3duIHN1YmNvbW1hbmQgJXMgZm9yIGNvbW1hbmQgJXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgICBjbWRcbiAgICAgICAgICAgICAgICAgICAoUGF0aC50b19zdHJpbmcgcGF0aClcbiAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgT2sgKHBvc3NpYmx5X2V4cGFuZGVkX25hbWUsIHQpIC0+XG4gICAgICAgICAgICAgICAgICgqIEZpeCB0aGUgdW5leHBhbmRlZCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgICAgICAgICAgUGF0aC5yZXBsYWNlX2ZpcnN0IH5mcm9tOmNtZCB+dG9fOnBvc3NpYmx5X2V4cGFuZGVkX25hbWUgcGF0aFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBwYXRoLCBzaGFwZSB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfZW5kbGluZSAoaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMpKVxuICAgICAgICA8Kj4gZmxhZyBcIi1yZWN1cnNpdmVcIiBub19hcmcgfmRvYzpcIiBzaG93IHN1YmNvbW1hbmRzIG9mIHN1YmNvbW1hbmRzLCBldGMuXCJcbiAgICAgICAgPCo+IGZsYWcgXCItZmxhZ3NcIiBub19hcmcgfmRvYzpcIiBzaG93IGZsYWdzIGFzIHdlbGwgaW4gcmVjdXJzaXZlIGhlbHBcIlxuICAgICAgICA8Kj4gZmxhZyBcIi1leHBhbmQtZG90c1wiIG5vX2FyZyB+ZG9jOlwiIGV4cGFuZCBzdWJjb21tYW5kcyBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgIDwqPiBwYXRoXG4gICAgICAgIDwqPiBlbnZcbiAgICAgICAgPCo+IGFub24gKG1heWJlIChcIlNVQkNPTU1BTkRcIiAlOiBzdHJpbmcpKSlcbiAgOztcblxuICAoKiBUaGlzIHNjcmlwdCB3b3JrcyBpbiBib3RoIGJhc2ggKHZpYSByZWFkYXJyYXkpIGFuZCB6c2ggKHZpYSByZWFkIC1BKS4gIElmIHlvdSBjaGFuZ2VcbiAgICAgaXQsIHBsZWFzZSB0ZXN0IGluIGJvdGggYmFzaCBhbmQgenNoLiAgSXQgZG9lcyBub3Qgd29yayB0Y3NoIChkaWZmZXJlbnQgZnVuY3Rpb25cbiAgICAgc3ludGF4KS4gKilcbiAgbGV0IGR1bXBfYXV0b2NvbXBsZXRlX2Z1bmN0aW9uICgpID1cbiAgICBsZXQgZm5hbWUgPSBzcHJpbnRmIFwiX2pzYXV0b2NvbV8lc1wiIChQaWQudG9fc3RyaW5nIChVbml4LmdldHBpZCAoKSkpIGluXG4gICAgbGV0IGFyZ3ZfMCA9IFN0ZGxpYi5TeXMuYXJndi4oMCkgaW5cbiAgICBwcmludGZcbiAgICAgIFwiZnVuY3Rpb24gJXMge1xcblxcXG4gICAgICBcXCAgZXhwb3J0IENPTVBfQ1dPUkRcXG5cXFxuICAgICAgXFwgIENPTVBfV09SRFNbMF09JXNcXG5cXFxuICAgICAgXFwgIGlmIHR5cGUgcmVhZGFycmF5ID4gL2Rldi9udWxsXFxuXFxcbiAgICAgIFxcICB0aGVuIHJlYWRhcnJheSAtdCBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGVsc2UgSUZTPVxcXCJcXG5cXFxuICAgICAgIFxcXCIgcmVhZCAtZCBcXFwiXFxcIiAtQSBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGZpXFxuXFxcbiAgICAgICB9XFxuXFxcbiAgICAgICBjb21wbGV0ZSAtRiAlcyAlc1xcblxcXG4gICAgICAgJSFcIlxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICA7O1xuXG4gIGxldCBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgU2V0LmludGVyIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9ucyBzdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICB8PiBTZXQubWF4X2VsdFxuICAgIHw+IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIkNvdWxkbid0IGNob29zZSBhIHN1cHBvcnRlZCBoZWxwIG91dHB1dCB2ZXJzaW9uIGZvciBDb21tYW5kLmV4ZWMgZnJvbSB0aGUgZ2l2ZW4gXFxcbiAgICAgICAgIHN1cHBvcnRlZCB2ZXJzaW9ucy5cIlxuICAgICAgICBTZXhwYWJsZS5zdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICAgICAgKFNldC5zZXhwX29mX21fX3QgKG1vZHVsZSBJbnQpKVxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICB8IFNvbWUgdmVyc2lvbl90b191c2UgLT5cbiAgICAgIHNleHBhYmxlX3NoYXBlIHRcbiAgICAgIHw+IFNleHBhYmxlLmZpbmQgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgfD4gU2V4cGFibGUudG9fdmVyc2lvbmVkIH52ZXJzaW9uX3RvX3VzZVxuICAgICAgfD4gU2V4cGFibGUuVmVyc2lvbmVkLnNleHBfb2ZfdFxuICAgICAgfD4gU2V4cC50b19zdHJpbmdcbiAgICAgIHw+IHByaW50X3N0cmluZ1xuICA7O1xuXG4gIGxldCBoYW5kbGVfZW52aXJvbm1lbnQgdCB+YXJndiA9XG4gICAgbWF0Y2ggYXJndiB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm1pc3NpbmcgZXhlY3V0YWJsZSBuYW1lXCJcbiAgICB8IGNtZCA6OiBhcmdzIC0+XG4gICAgICBPcHRpb24uaXRlciAoZ2V0ZW52X2FuZF9jbGVhciBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFApIH5mOihmdW4gdmVyc2lvbiAtPlxuICAgICAgICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgICAgICAgICBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHZlcnNpb24gfD4gU2V0Lm1fX3Rfb2Zfc2V4cCAobW9kdWxlIEludClcbiAgICAgICAgaW5cbiAgICAgICAgZHVtcF9oZWxwX3NleHAgfnN1cHBvcnRlZF92ZXJzaW9ucyB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6YXJncztcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0lOU1RBTExBVElPTl9CQVNIKSB+ZjooZnVuIF8gLT5cbiAgICAgICAgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCk7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBjbWQsIGFyZ3NcbiAgOztcblxuICBsZXQgcHJvY2Vzc19hcmdzIH5jbWQgfmFyZ3MgPVxuICAgIGxldCBtYXliZV9jb21wX2N3b3JkID0gbWF5YmVfY29tcF9jd29yZCAoKSBpblxuICAgIGxldCBhcmdzID1cbiAgICAgIG1hdGNoIG1heWJlX2NvbXBfY3dvcmQgd2l0aFxuICAgICAgfCBOb25lIC0+IENtZGxpbmUub2ZfbGlzdCBhcmdzXG4gICAgICB8IFNvbWUgY29tcF9jd29yZCAtPlxuICAgICAgICBsZXQgYXJncyA9IExpc3QudGFrZSAoYXJncyBAIFsgXCJcIiBdKSBjb21wX2N3b3JkIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0OkNtZGxpbmUuTmlsIH5mOihmdW4gYXJnIGFyZ3MgLT5cbiAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICB8IENtZGxpbmUuTmlsIC0+IENtZGxpbmUuQ29tcGxldGUgYXJnXG4gICAgICAgICAgfCBfIC0+IENtZGxpbmUuQ29ucyAoYXJnLCBhcmdzKSlcbiAgICBpblxuICAgIFBhdGguY3JlYXRlIH5wYXRoX3RvX2V4ZTpjbWQsIGFyZ3MsIG1heWJlX2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcmVjIGFkZF9oZWxwX3N1YmNvbW1hbmRzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgXyBhcyB0IC0+IHRcbiAgICB8IEV4ZWMgXyBhcyB0IC0+IHRcbiAgICB8IEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9IC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBzdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YmNvbW1hbmRzIH5mOmFkZF9oZWxwX3N1YmNvbW1hbmRzKVxuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcImhlbHBcIlxuICAgICAgICAgICAgKGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGRfaGVscF9zdWJjb21tYW5kcyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoID1cbiAgICBPcHRpb24udmFsdWVfbWFwIGV4dGVuZCB+ZGVmYXVsdDphcmdzIH5mOihmdW4gZiAtPlxuICAgICAgQ21kbGluZS5leHRlbmQgYXJncyB+ZXh0ZW5kOmYgfnBhdGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBkaXNwYXRjaFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICB+cGF0aFxuICAgICAgICAgICAgfmFyZ3NcbiAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGF6eSB0aHVuayAtPlxuICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICBkaXNwYXRjaFxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+ZXh0ZW5kXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYXJncyA9IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggaW5cbiAgICAgIGxldCBoZWxwX3RleHQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGhlbHBfZm9yX3NoYXBlIChzaGFwZSB0KSBwYXRoIH5yZWN1cnNpdmU6ZmFsc2UgfmZsYWdzOnRydWUgfmV4cGFuZF9kb3RzOmZhbHNlKVxuICAgICAgaW5cbiAgICAgIENvbW1hbmRfYmFzZS5ydW5cbiAgICAgICAgYmFzZVxuICAgICAgICBlbnZcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgfmhlbHBfdGV4dFxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5vbl9mYWlsdXJlOkNvbW1hbmRfYmFzZS5ydW5fZXhuXG4gICAgfCBFeGVjIGV4ZWMgLT5cbiAgICAgIGxldCBhcmdzID0gQ21kbGluZS50b19saXN0IChtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoKSBpblxuICAgICAgRXhlYy5leGVjX3dpdGhfYXJncyB+YXJncyBleGVjIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgIHwgR3JvdXAgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IHN1YnM7IGJvZHkgfSBhcyBncm91cCkgLT5cbiAgICAgIGxldCBjb21wbGV0aW5nID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSBFbnYuc2V0IGVudiB+a2V5OnN1YnNfa2V5IH5kYXRhOihMYXp5LmZvcmNlIHN1YnMpIGluXG4gICAgICBsZXQgZGllX3Nob3dpbmdfaGVscCBtc2cgPVxuICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiJXNcXG4lIVwiXG4gICAgICAgICAgICAoaGVscF9mb3Jfc2hhcGVcbiAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgIH5mbGFnczpmYWxzZVxuICAgICAgICAgICAgICAgfmV4cGFuZF9kb3RzOmZhbHNlXG4gICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IHN1YnM7IGJvZHkgfSkpXG4gICAgICAgICAgICAgICBwYXRoKTtcbiAgICAgICAgICBkaWUgXCIlc1wiIG1zZyAoKSlcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkID1cbiAgICAgICAgbGV0IG1heWJlX25ld19jb21wX2N3b3JkID0gT3B0aW9uLm1hcCB+ZjpJbnQucHJlZCBtYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgc2tpcCByZXN0ID0gcGFyc2VfZ3JvdXAgcmVzdCB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgaW5cbiAgICAgICAgbGV0IHJlc29sdmUgc3ViIHJlc3QgPVxuICAgICAgICAgIGxldCBzdWJzID0gTGlzdC5Bc3NvYy5tYXAgKExhenkuZm9yY2Ugc3VicykgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpIGluXG4gICAgICAgICAgbWF0Y2ggbG9va3VwX2V4cGFuZCBzdWJzIHN1YiBTdWJjb21tYW5kIHdpdGhcbiAgICAgICAgICB8IEVycm9yIG1zZyAtPiBkaWVfc2hvd2luZ19oZWxwIG1zZ1xuICAgICAgICAgIHwgT2sgKHN1YiwgdCkgLT5cbiAgICAgICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgICAgICB+cGF0aDooUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpzdWIpXG4gICAgICAgICAgICAgIH5hcmdzOnJlc3RcbiAgICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoYXJncyA6IENtZGxpbmUudCkgd2l0aFxuICAgICAgICB8IE5pbCAtPlxuICAgICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgZGllX3Nob3dpbmdfaGVscFxuICAgICAgICAgICAgICAgKHNwcmludGYgXCJtaXNzaW5nIHN1YmNvbW1hbmQgZm9yIGNvbW1hbmQgJXNcIiAoUGF0aC50b19zdHJpbmcgcGF0aCkpXG4gICAgICAgICAgIHwgU29tZSBib2R5IC0+IGJvZHkgfnBhdGg6KFBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGgpKVxuICAgICAgICB8IENvbnMgKHN1YiwgcmVzdCkgLT5cbiAgICAgICAgICAoKiBNYXRjaCBmb3IgZmxhZ3MgcmVjb2duaXplZCB3aGVuIHN1YmNvbW1hbmRzIGFyZSBleHBlY3RlZCBuZXh0ICopXG4gICAgICAgICAgKG1hdGNoIHN1YiB3aXRoXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgYXQgdGhlIHRvcCBsZXZlbCBjb21tYW5kIG9ubHkgKilcbiAgICAgICAgICAgfCAoXCItdmVyc2lvblwiIHwgXCItLXZlcnNpb25cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb247XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgKFwiLWJ1aWxkLWluZm9cIiB8IFwiLS1idWlsZC1pbmZvXCIpIHdoZW4gUGF0aC5sZW5ndGggcGF0aCA9IDEgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIFZlcnNpb25faW5mby5wcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICAoKiBSZWNvZ25pemVkIGV2ZXJ5d2hlcmUgKilcbiAgICAgICAgICAgfCBcIi1oZWxwXCIgfCBcIi0taGVscFwiIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgIHwgTmlsIHwgQ29tcGxldGUgKF8gOiBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgIHByaW50X2VuZGxpbmVcbiAgICAgICAgICAgICAgICAgICAoaGVscF9mb3Jfc2hhcGVcbiAgICAgICAgICAgICAgICAgICAgICB+cmVjdXJzaXZlOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZF9kb3RzOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKHNoYXBlIChHcm91cCB7IGdyb3VwIHdpdGggc3ViY29tbWFuZHMgPSBzdWJzIH0pKVxuICAgICAgICAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgICAgICAgICBleGl0IDBcbiAgICAgICAgICAgICAgIHwgQ21kbGluZS5Db25zIChmaXJzdF9vZl9yZXN0LCByZXN0X29mX3Jlc3QpIC0+XG4gICAgICAgICAgICAgICAgIHJlc29sdmUgZmlyc3Rfb2ZfcmVzdCAoQ29ucyAoc3ViLCByZXN0X29mX3Jlc3QpKSlcbiAgICAgICAgICAgfCAoXyA6IHN0cmluZykgLT4gcmVzb2x2ZSBzdWIgcmVzdClcbiAgICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+XG4gICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgTGF6eS5mb3JjZSBzdWJzXG4gICAgICAgICAgICB8PiBMaXN0Lm1hcCB+Zjpmc3RcbiAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gbmFtZSAtPiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0KVxuICAgICAgICAgICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlN0cmluZy5jb21wYXJlXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggY29tcGxldGVfc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgICAgICBzaGFwZSB0IHw+IFNoYXBlLmZ1bGx5X2ZvcmNlZCB8PiBTaGFwZS5GdWxseV9mb3JjZWQuZXhwYW5kZWRfc3ViY29tbWFuZHNcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChtYXRjaCBmIH5wYXRoOihQYXRoLnBhcnRzIHBhdGgpIH5wYXJ0IHN1YmNvbW1hbmRzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGV4aXQgMVxuICAgICAgICAgICAgICB8IFNvbWUgdG9fb3V0cHV0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZSAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHRvX291dHB1dCk7XG4gICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBMaXN0Lml0ZXIgc3VicyB+ZjpwcmludF9lbmRsaW5lO1xuICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgIGluXG4gICAgICBwYXJzZV9ncm91cCBhcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCBydW5cbiAgICAgICAgP3ZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgP3ZlcnNpb25cbiAgICAgICAgP2J1aWxkX2luZm9cbiAgICAgICAgPyhhcmd2ID0gQXJyYXkudG9fbGlzdCBTdGRsaWIuU3lzLmFyZ3YpXG4gICAgICAgID9leHRlbmRcbiAgICAgICAgPyh3aGVuX3BhcnNpbmdfc3VjY2VlZHMgPSBGbi5pZClcbiAgICAgICAgP2NvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGJ1aWxkX2luZm8gPVxuICAgICAgbWF0Y2ggYnVpbGRfaW5mbyB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBsYXp5IHZcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF9idWlsZF9pbmZvXG4gICAgaW5cbiAgICBsZXQgdmVyc2lvbiA9XG4gICAgICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uXG4gICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAoKiBbdmVyc2lvbl0gd2FzIHNwYWNlIGRlbGltaXRlZCBhdCBzb21lIHBvaW50IGFuZCBuZXdsaW5lIGRlbGltaXRlZFxuICAgICAgICAgICBhdCBhbm90aGVyLiAgV2UgYWx3YXlzIHByaW50IG9uZSAocmVwbywgcmV2aXNpb24pIHBhaXIgcGVyIGxpbmVcbiAgICAgICAgICAgYW5kIGVuc3VyZSBzb3J0ZWQgb3JkZXIgKilcbiAgICAgICAgbGF6eVxuICAgICAgICAgIChWZXJzaW9uX2luZm8ubm9ybWFsaXplX3ZlcnNpb25fbGluZXNcbiAgICAgICAgICAgICAoU3RyaW5nLnNwbGl0IHYgfm9uOicgJyB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KFN0cmluZy5zcGxpdCB+b246J1xcbicpKSlcbiAgICBpblxuICAgIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPlxuICAgICAgbGV0IHQgPSBWZXJzaW9uX2luZm8uYWRkIHQgfnZlcnNpb24gfmJ1aWxkX2luZm8gaW5cbiAgICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgICAgbGV0IGNtZCwgYXJncyA9IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2IGluXG4gICAgICBsZXQgcGF0aCwgYXJncywgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyBpblxuICAgICAgdHJ5XG4gICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgdFxuICAgICAgICAgIEVudi5lbXB0eVxuICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICB+cGF0aFxuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgd2l0aFxuICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZyAtPlxuICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJnc1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBwcmVycl9lbmRsaW5lIG1zZztcbiAgICAgICAgICBleGl0IDEpKVxuICA7O1xuXG4gIGxldCBkZXByZWNhdGVkX3J1biB0IH5jbWQgfmFyZ3MgfmlzX2hlbHAgfmlzX2hlbHBfcmVjIH5pc19oZWxwX3JlY19mbGFncyB+aXNfZXhwYW5kX2RvdHNcbiAgICA9XG4gICAgbGV0IHBhdGhfc3RyaW5ncyA9IFN0cmluZy5zcGxpdCBjbWQgfm9uOicgJyBpblxuICAgIGxldCBwYXRoID0gUGF0aC5vZl9wYXJ0cyBwYXRoX3N0cmluZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2V4cGFuZF9kb3RzIHRoZW4gXCItZXhwYW5kLWRvdHNcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscF9yZWNfZmxhZ3MgdGhlbiBcIi1mbGFnc1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlYyB0aGVuIFwiLXJcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscCB0aGVuIFwiLWhlbHBcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gQ21kbGluZS5vZl9saXN0IGFyZ3MgaW5cbiAgICBsZXQgdCA9IGFkZF9oZWxwX3N1YmNvbW1hbmRzIHQgaW5cbiAgICBkaXNwYXRjaFxuICAgICAgdFxuICAgICAgRW52LmVtcHR5XG4gICAgICB+cGF0aFxuICAgICAgfmFyZ3NcbiAgICAgIH5leHRlbmQ6Tm9uZVxuICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkOk5vbmVcbiAgICAgIH52ZXJzaW9uOlZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIH5idWlsZF9pbmZvOlZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOk5vbmVcbiAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHM6Rm4uaWRcbiAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kczpOb25lXG4gIDs7XG5lbmRcblxubW9kdWxlIFBhcmFtID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICsnYSB0XG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGhlbHAgOiBzdHJpbmcgTGF6eS50IHRcbiAgICB2YWwgcGF0aCA6IHN0cmluZyBsaXN0IHRcbiAgICB2YWwgYXJncyA6IHN0cmluZyBsaXN0IHRcblxuICAgIHZhbCBmbGFnXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEZsYWcudFxuICAgICAgLT4gZG9jOnN0cmluZ1xuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgOiAgP2FsaWFzZXM6c3RyaW5nIGxpc3RcbiAgICAgIC0+ID9mdWxsX2ZsYWdfcmVxdWlyZWQ6dW5pdFxuICAgICAgLT4gc3RyaW5nXG4gICAgICAtPiAnYSBBcmdfdHlwZS50XG4gICAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgICAgLT4gZGVmYXVsdDonYVxuICAgICAgLT4gZG9jOnN0cmluZ1xuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGFub24gOiAnYSBBbm9ucy50IC0+ICdhIHRcbiAgICB2YWwgZXNjYXBlX2Fub24gOiBmaW5hbF9hbm9uOidhIEFub25zLnQgLT4gKCdhICogc3RyaW5nIGxpc3QpIHRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA6IHNpZ1xuICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgIHwgRGVmYXVsdF90byA6ICdhIC0+ICgnYSwgJ2EpIHRcbiAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgZW5kXG5cbiAgICB2YWwgY2hvb3NlX29uZVxuICAgICAgOiAgJ2Egb3B0aW9uIHQgbGlzdFxuICAgICAgLT4gaWZfbm90aGluZ19jaG9zZW46KCdhLCAnYikgSWZfbm90aGluZ19jaG9zZW4udFxuICAgICAgLT4gJ2IgdFxuXG4gICAgdmFsIGNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgICA6ICAnYSB0IGxpc3RcbiAgICAgIC0+IGlmX25vdGhpbmdfY2hvc2VuOignYSwgJ2IpIElmX25vdGhpbmdfY2hvc2VuLnRcbiAgICAgIC0+ICdiIHRcblxuICAgIHZhbCBhbmRfYXJnX25hbWVzIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuICAgIHZhbCBhbmRfYXJnX25hbWUgOiAnYSB0IC0+ICgnYSAqIHN0cmluZykgdFxuICAgIHZhbCBhcmdfbmFtZXMgOiAnYSB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIGluY2x1ZGUgQ29tbWFuZF9iYXNlLlBhcmFtXG5cbiAgbGV0IHBhdGggPSBtYXAgfmY6UGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyYW1cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyYW1cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuXG50eXBlICdyZXN1bHQgYmFzaWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKSAtPiAodW5pdCAtPiAncmVzdWx0KSBQYXJhbS50IC0+IHRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biBmICgpIC0+IFN0cmluZy5zdHJpcCAoZiAoKSkpIGluXG4gIGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW1cbjs7XG5cbmxldCBiYXNpY19vcl9lcnJvciB+c3VtbWFyeSA/cmVhZG1lIHBhcmFtID1cbiAgYmFzaWNcbiAgICB+c3VtbWFyeVxuICAgID9yZWFkbWVcbiAgICAobGV0JW1hcCBydW4gPSBwYXJhbSBpblxuICAgICBmdW4gKCkgLT5cbiAgICAgICBtYXRjaCBydW4gKCkgd2l0aFxuICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgIFN0ZGlvLnByZXJyX2VuZGxpbmUgKEVycm9yLnRvX3N0cmluZ19odW0gZSk7XG4gICAgICAgICBleGl0IDEpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYWJzX3BhdGggPSBhYnNfcGF0aFxuICBsZXQgd29yZF93cmFwID0gU2hhcGUuUHJpdmF0ZS53b3JkX3dyYXBcblxuICBtb2R1bGUgQW5vbnMgPSBBbm9uc1xuICBtb2R1bGUgQ21kbGluZSA9IENtZGxpbmVcbiAgbW9kdWxlIEZvcl91bml4ID0gRm9yX3VuaXhcbiAgbW9kdWxlIFBhdGggPSBQYXRoXG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNwZWNcblxuICAgIGxldCB0b19zdHJpbmdfZm9yX2Nob29zZV9vbmUgcGFyYW0gPVxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLkNob29zZV9vbmUuQ2hvaWNlX25hbWUuKGNyZWF0ZV9leG4gcGFyYW0gfD4gdG9fc3RyaW5nKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBydW4gPSBgVXNlX0NvbW1hbmRfdW5peFxubGV0IHNoYXBlID0gYFVzZV9Db21tYW5kX3VuaXhcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuZXh0ZXJuYWwgaXNfaGVhcF9ibG9jayA6IFN0ZGxpYi5PYmoudCAtPiBib29sID0gXCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgaXNfb2sgdiA9IGlzX2hlYXBfYmxvY2sgKFN0ZGxpYi5PYmoucmVwciB2KVxubGV0IGNyZWF0ZSB2ID0gaWYgaXNfb2sgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcblxubGV0IGNyZWF0ZV9leG4gdiA9XG4gIGlmIGlzX29rIHYgdGhlbiB2IGVsc2UgZmFpbHdpdGggXCJIZWFwX2Jsb2NrLmNyZWF0ZV9leG4gY2FsbGVkIHdpdGggbm9uIGhlYXAgYmxvY2tcIlxuOztcblxubGV0IHZhbHVlIHQgPSB0XG5sZXQgYnl0ZXNfcGVyX3dvcmQgPSBXb3JkX3NpemUuKG51bV9iaXRzIHdvcmRfc2l6ZSkgLyA4XG5cbmxldCBieXRlcyAodHlwZSBhKSAodCA6IGEgdCkgPVxuICAoU3RkbGliLk9iai5zaXplIChTdGRsaWIuT2JqLnJlcHIgKHQgOiBhIHQpKSArIDEpICogYnl0ZXNfcGVyX3dvcmRcbjs7XG4iLCJvcGVuIEJhc2VcblxuKCoqIEVhY2ggc2luZ2xlX2Vycm9yIGlzIGEgcGF0aCBpbmRpY2F0aW5nIHRoZSBsb2NhdGlvbiB3aXRoaW4gdGhlIGRhdGFzdHJ1Y3R1cmUgaW5cbiAgICBxdWVzdGlvbiB0aGF0IGlzIGJlaW5nIHZhbGlkYXRlZCwgYWxvbmcgd2l0aCBhbiBlcnJvciBtZXNzYWdlLiAqKVxudHlwZSBzaW5nbGVfZXJyb3IgPVxuICB7IHBhdGggOiBzdHJpbmcgbGlzdFxuICA7IGVycm9yIDogRXJyb3IudFxuICB9XG5cbnR5cGUgdCA9IHNpbmdsZV9lcnJvciBsaXN0XG50eXBlICdhIGNoZWNrID0gJ2EgLT4gdFxuXG5sZXQgcGFzcyA6IHQgPSBbXVxuXG5sZXQgZmFpbHMgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EgfSBdXG47O1xuXG5sZXQgZmFpbCBtZXNzYWdlID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSB9IF1cbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBmYWlsX3Mgc2V4cCA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlX3Mgc2V4cCB9IF1cbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0IG9mX2xpc3QgPSBMaXN0LmNvbmNhdFxuXG5sZXQgbmFtZSBuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXSAoKiB3aGVuIHN1Y2Nlc3NmdWwsIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGEgY2xvc3VyZSBmb3IgW35mXSwgYmVsb3cgKilcbiAgfCBfIC0+IExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4geyBwYXRoID0gbmFtZSA6OiBwYXRoOyBlcnJvciB9KVxuOztcblxubGV0IG5hbWVfbGlzdCBuIGwgPSBuYW1lIG4gKG9mX2xpc3QgbClcbmxldCBmYWlsX2ZuIG1lc3NhZ2UgXyA9IGZhaWwgbWVzc2FnZVxubGV0IHBhc3NfYm9vbCAoXyA6IGJvb2wpID0gcGFzc1xubGV0IHBhc3NfdW5pdCAoXyA6IHVuaXQpID0gcGFzc1xuXG5sZXQgcHJvdGVjdCBmIHYgPVxuICB0cnkgZiB2IHdpdGhcbiAgfCBleG4gLT5cbiAgICBmYWlsX3MgKFNleHAubWVzc2FnZSBcIkV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIHZhbGlkYXRpb25cIiBbIFwiXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBwcm90ZWN0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgIGYgKCk7XG4gICAgICAgcGFzcylcbiAgICAoKVxuOztcblxubGV0IHBhdGhfc3RyaW5nIHBhdGggPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgcGF0aFxuXG5sZXQgZXJyb3JzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+XG4gICAgRXJyb3IudG9fc3RyaW5nX2h1bSAoRXJyb3IudGFnIGVycm9yIH50YWc6KHBhdGhfc3RyaW5nIHBhdGgpKSlcbjs7XG5cbmxldCByZXN1bHRfZmFpbCB0ID1cbiAgT3JfZXJyb3IuZXJyb3JcbiAgICBcInZhbGlkYXRpb24gZXJyb3JzXCJcbiAgICAoTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiBwYXRoX3N0cmluZyBwYXRoLCBlcnJvcikpXG4gICAgWyVzZXhwX29mOiAoc3RyaW5nICogRXJyb3IudCkgTGlzdC50XVxuW0BAY29sZF1cbjs7XG5cbigqKiBbcmVzdWx0XSBpcyBjYXJlZnVsbHkgaW1wbGVtZW50ZWQgc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCAtLSBjYWxsaW5nIFtyZXN1bHRfZmFpbF0sXG4gICAgd2hpY2ggaXMgbm90IGlubGluZWFibGUsIGlzIGtleSB0byB0aGlzLiAqKVxubGV0IHJlc3VsdCB0ID0gaWYgTGlzdC5pc19lbXB0eSB0IHRoZW4gT2sgKCkgZWxzZSByZXN1bHRfZmFpbCB0XG5cbmxldCBtYXliZV9yYWlzZSB0ID0gT3JfZXJyb3Iub2tfZXhuIChyZXN1bHQgdClcbmxldCB2YWxpZF9vcl9lcnJvciBjaGVjayB4ID0gT3JfZXJyb3IubWFwIChyZXN1bHQgKHByb3RlY3QgY2hlY2sgeCkpIH5mOihmdW4gKCkgLT4geClcblxubGV0IGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgX3JlY29yZCB2ID1cbiAgbGV0IHJlc3VsdCA9IHByb3RlY3QgY2hlY2sgdiBpblxuICBuYW1lIChGaWVsZC5uYW1lIGZsZCkgcmVzdWx0XG47O1xuXG5sZXQgZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA9XG4gIGxldCB2ID0gRmllbGQuZ2V0IGZsZCByZWNvcmQgaW5cbiAgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdlxuOztcblxubGV0IGZpZWxkX2ZvbGRlciBjaGVjayByZWNvcmQgPVxuICAoKTtcbiAgZnVuIGFjYyBmbGQgLT4gZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA6OiBhY2Ncbjs7XG5cbmxldCBmaWVsZF9kaXJlY3RfZm9sZGVyIGNoZWNrID1cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYWNjIGZsZCByZWNvcmQgdiAtPlxuICAgIG1hdGNoIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHYgd2l0aFxuICAgIHwgW10gLT4gYWNjICgqIEF2b2lkIGFsbG9jYXRpbmcgYSBuZXcgbGlzdCBpbiB0aGUgc3VjY2VzcyBjYXNlICopXG4gICAgfCByZXN1bHQgLT4gcmVzdWx0IDo6IGFjYylcbjs7XG5cbmxldCBhbGwgY2hlY2tzIHYgPVxuICBsZXQgcmVjIGxvb3AgY2hlY2tzIHYgZXJycyA9XG4gICAgbWF0Y2ggY2hlY2tzIHdpdGhcbiAgICB8IFtdIC0+IGVycnNcbiAgICB8IGNoZWNrIDo6IGNoZWNrcyAtPlxuICAgICAgKG1hdGNoIHByb3RlY3QgY2hlY2sgdiB3aXRoXG4gICAgICAgfCBbXSAtPiBsb29wIGNoZWNrcyB2IGVycnNcbiAgICAgICB8IGVyciAtPiBsb29wIGNoZWNrcyB2IChlcnIgOjogZXJycykpXG4gIGluXG4gIG9mX2xpc3QgKExpc3QucmV2IChsb29wIGNoZWNrcyB2IFtdKSlcbjs7XG5cbmxldCBvZl9yZXN1bHQgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IGZhaWwgZXJyb3IpXG47O1xuXG5sZXQgb2ZfZXJyb3IgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IFsgeyBwYXRoID0gW107IGVycm9yIH0gXSlcbjs7XG5cbmxldCBib29sdGVzdCBmIH5pZl9mYWxzZSA9IHByb3RlY3QgKGZ1biB2IC0+IGlmIGYgdiB0aGVuIHBhc3MgZWxzZSBmYWlsIGlmX2ZhbHNlKVxuXG5sZXQgcGFpciB+ZnN0IH5zbmQgKGZzdF92YWx1ZSwgc25kX3ZhbHVlKSA9XG4gIG9mX2xpc3QgWyBuYW1lIFwiZnN0XCIgKHByb3RlY3QgZnN0IGZzdF92YWx1ZSk7IG5hbWUgXCJzbmRcIiAocHJvdGVjdCBzbmQgc25kX3ZhbHVlKSBdXG47O1xuXG5sZXQgbGlzdF9pbmRleGVkIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcGkgbGlzdCB+ZjooZnVuIGkgZWwgLT4gbmFtZSAoSW50LnRvX3N0cmluZyAoaSArIDEpKSAocHJvdGVjdCBjaGVjayBlbCkpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBsaXN0IH5uYW1lOmV4dHJhY3RfbmFtZSBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsIC0+XG4gICAgbWF0Y2ggcHJvdGVjdCBjaGVjayBlbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdCAtPlxuICAgICAgKCogZXh0cmEgbGV2ZWwgb2YgcHJvdGVjdGlvbiBpbiBjYXNlIGV4dHJhY3RfbmFtZSB0aHJvd3MgYW4gZXhjZXB0aW9uICopXG4gICAgICBwcm90ZWN0IChmdW4gdCAtPiBuYW1lIChleHRyYWN0X25hbWUgZWwpIHQpIHQpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBhbGlzdCB+bmFtZSBmIGxpc3QnID0gbGlzdCAoZnVuIChfLCB4KSAtPiBmIHgpIGxpc3QnIH5uYW1lOihmdW4gKGtleSwgXykgLT4gbmFtZSBrZXkpXG5sZXQgZmlyc3RfZmFpbHVyZSB0MSB0MiA9IGlmIExpc3QuaXNfZW1wdHkgdDEgdGhlbiB0MiBlbHNlIHQxXG5cbmxldCBvZl9lcnJvcl9vcHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGFzc1xuICB8IFNvbWUgZXJyb3IgLT4gZmFpbCBlcnJvclxuOztcblxubGV0IGJvdW5kZWQgfm5hbWUgfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4ID1cbiAgbWF0Y2ggTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4IHdpdGhcbiAgfCBJbl9yYW5nZSAtPiBwYXNzXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPD0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG4gIHwgQWJvdmVfdXBwZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPj0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggKysgKSB0MSB0MiA9IGNvbWJpbmUgdDEgdDJcbmVuZFxuIiwiXG4oKiBXZSBkbyBub3QgW2luY2x1ZGUgQmFzZV0gaGVyZSwgYW5kIGluc3RlYWQgaW1wb3J0IG1vZHVsZXMgdGhhdCBbQ29yZV0gZG9lc24ndCBleHRlbmQsXG4gICBiZWNhdXNlIHdlIHdhbnQgY29kZSBpbiBbQ29yZV0gdG8gYmUgY2xlYXIgd2hlbiBpdCByZWZlcmVuY2VzIGEgW0Jhc2VdIG1vZHVsZSB0aGF0XG4gICBbQ29yZV0gaXMgb3ZlcnJpZGluZy4gKilcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEJhc2UuQXBwbGljYXRpdmVcbm1vZHVsZSBBdmx0cmVlID0gQmFzZS5Bdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFzZS5CYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmFzZS5CaW5hcnlfc2VhcmNoXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmlzb25zXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEVxdWFsID0gQmFzZS5FcXVhbFxubW9kdWxlIEV4biA9IEJhc2UuRXhuXG5tb2R1bGUgRmxvYXRhYmxlID0gQmFzZS5GbG9hdGFibGVcbm1vZHVsZSBGb3JtYXR0ZXIgPSBCYXNlLkZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBCYXNlLkhhc2hcbm1vZHVsZSBIYXNoZXIgPSBCYXNlLkhhc2hlclxubW9kdWxlIEludGFibGUgPSBCYXNlLkludGFibGVcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBCYXNlLkludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9tYXRoID0gQmFzZS5JbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEJhc2UuSW52YXJpYW50XG5tb2R1bGUgTW9uYWQgPSBCYXNlLk1vbmFkXG5tb2R1bGUgUG9seSA9IEJhc2UuUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gQmFzZS5QcmV0dHlfcHJpbnRlclxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gQmFzZS5TdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gQmFzZS5TeXNcbm1vZHVsZSBVY2hhciA9IEJhc2UuVWNoYXJcbm1vZHVsZSBXaXRoX3JldHVybiA9IEJhc2UuV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBCYXNlLldvcmRfc2l6ZVxuXG4oKiBXZSBkbyBpbmNsdWRlIFtCYXNlXSdzIHRvcC1sZXZlbCB2YWx1ZSBhbmQgdHlwZSBiaW5kaW5ncywgYmVjYXVzZSB0aGV5IGRvbid0IGNhdXNlXG4gICBhbnkgY29uZnVzaW9uLCBhbmQgZHVwbGljYXRpbmcgdGhlbSB3b3VsZCBiZSBlcnJvciBwcm9uZS4gKilcbmluY2x1ZGUgQmFzZS5FeHBvcnRcbmluY2x1ZGUgU3RkaW9cbmluY2x1ZGUgQmFzZV9mb3JfdGVzdHNcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxubW9kdWxlIEZpZWxkID0gRmllbGRzbGliLkZpZWxkXG5cbm1vZHVsZSBGcm9tX3NleHBsaWIgOiBzaWdcbiAgdHlwZSBiaWdzdHJpbmcgPSBTZXhwbGliLkNvbnYuYmlnc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgbWF0ID0gU2V4cGxpYi5Db252Lm1hdCBbQEBkZXJpdmluZyBzZXhwXVxuICB0eXBlIHZlYyA9IFNleHBsaWIuQ29udi52ZWMgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAoKiBbc2V4cF9vZl9vcGFxdWVdIGFuZCBbb3BhcXVlX29mX3NleHBdIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBmcm9tXG4gICAgIFtbQEBkZXJpdmluZyBzZXhwXV0sIFtbJXNleHBfb2Y6IF1dLCBhbmQgW1slb2Zfc2V4cDogXV0uICBUaGUgdHlwZSBbXyBzZXhwX29wYXF1ZV1cbiAgICAgZXhwYW5kcyB0byB1c2VzIG9mIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0uICopXG5cbiAgdmFsIHNleHBfb2Zfb3BhcXVlIDogXyAtPiBCYXNlLlNleHAudFxuICB2YWwgb3BhcXVlX29mX3NleHAgOiBCYXNlLlNleHAudCAtPiBfXG4gIHZhbCBzZXhwX29mX3BhaXIgOiAoJ2EgLT4gQmFzZS5TZXhwLnQpIC0+ICgnYiAtPiBCYXNlLlNleHAudCkgLT4gJ2EgKiAnYiAtPiBCYXNlLlNleHAudFxuICB2YWwgcGFpcl9vZl9zZXhwIDogKEJhc2UuU2V4cC50IC0+ICdhKSAtPiAoQmFzZS5TZXhwLnQgLT4gJ2IpIC0+IEJhc2UuU2V4cC50IC0+ICdhICogJ2JcblxuICBleGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiBCYXNlLlNleHAudFxuXG4gIHZhbCBvZl9zZXhwX2Vycm9yIDogc3RyaW5nIC0+IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIG9mX3NleHBfZXJyb3JfZXhuIDogZXhuIC0+IEJhc2UuU2V4cC50IC0+IF9cbmVuZCA9XG4gIFNleHBsaWIuQ29udlxuXG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuXG4oKiBbc2V4cF9vcGFxdWVdIGluZGljYXRlcyB0byBbcHB4X3NleHBfY29udl0gdGhhdCBhIHZhbHVlIHNob3VsZCBiZSByZW5kZXJlZCBhcyBbX10sIGkuZS5cbiAgIFtTZXhwLkF0b20gXCJfXCJdLiAgSGVyZSB3ZSBleHBvc2UgdGhlIFtAQGRlcml2aW5nXSBhc3BlY3RzIG9mIFtzZXhwX29wYXF1ZV0gc28gdGhhdFxuICAgb3RoZXIgcHB4J3MgdHJlYXQgW3NleHBfb3BhcXVlXSBjb3JyZWN0bHksIGJ5IGlnbm9yaW5nIGl0IGFuZCBwcm9jZXNzaW5nIHRoZSB1bmRlcmx5aW5nXG4gICB0eXBlLiAqKVxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5lbmRcbndpdGggdHlwZSAnYSBzZXhwX29wYXF1ZSA6PSAnYSlcblxuaW5jbHVkZSAoXG4gIFR5cGVyZXBfbGliLlN0ZCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUeXBlcmVwX2xpYi5TdGRcbiAgZW5kXG4gIHdpdGggbW9kdWxlIFR5cGVfZXF1YWwgOj0gVHlwZXJlcF9saWIuU3RkLlR5cGVfZXF1YWwpXG5cbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudHNsaWIuVmFyaWFudFxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID1cbiAgdHJ5XG4gICAgaWdub3JlIChTdGRsaWIuU3lzLmdldGVudiBcIlRFU1RJTkdfRlJBTUVXT1JLXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICAoKiBbQ2FtbC4qXSBuZXZlciByYWlzZXMgW05vdF9mb3VuZF9zXSAqKVxuICB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbnR5cGUgJ2EgaWRlbnRpdHkgPSAnYVxuXG5tb2R1bGUgTm90X2ZvdW5kID0gc3RydWN0XG4gIGV4Y2VwdGlvblxuICAgIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuICAgICAgICAgICAgICAgIFtAZGVwcmVjYXRlZFxuICAgICAgICAgICAgICAgICAge3xbc2luY2UgMjAxOC0wMl0gSW5zdGVhZCBvZiByYWlzaW5nIFtOb3RfZm91bmRdLCBjb25zaWRlciB1c2luZyBbcmFpc2Vfc10gd2l0aCBhblxuaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS4gIElmIGNvZGUgbmVlZHMgdG8gZGlzdGluZ3Vpc2ggW05vdF9mb3VuZF0gZnJvbSBvdGhlclxuZXhjZXB0aW9ucywgcGxlYXNlIGNoYW5nZSBpdCB0byBoYW5kbGUgYm90aCBbTm90X2ZvdW5kXSBhbmQgW05vdF9mb3VuZF9zXS4gIFRoZW4sIGluc3RlYWRcbm9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIHJhaXNlIFtOb3RfZm91bmRfc10gd2l0aCBhbiBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLnx9XVxuXG4gIGV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IEJhc2UuTm90X2ZvdW5kX3NcbmVuZFxuXG5pbmNsdWRlIE5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU2V4cGFibGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT2Zfc2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogdCAtPiBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogJ2EgdCAtPiAnYSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIChNLnRvX3NleHBhYmxlIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgICAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1cblxuICAgICAgaW5jbHVkZSBTIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IFNleHBsaWIuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICAgICAgfCBTZXhwbGliLlNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwbGliLlNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyIDogTS50IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2Ugc3RyaW5nX3NleHBfZ3JhbW1hclxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTKSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5vZl9zdHJpbmdfX29mX19vZl9zZXhwIE0udF9vZl9zZXhwIHhcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5zdHJpbmdfb2ZfX29mX19zZXhwX29mIE0uc2V4cF9vZl90IHhcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFRvX3N0cmluZ2FibGUgPSBTdGFibGUuVG9fc3RyaW5nYWJsZS5WMVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5fcHJvdC5CaW5hYmxlXG5tb2R1bGUgU2hhcGUgPSBCaW5fcHJvdC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9iaW5hYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnZfd2l0aG91dF91dWlkIHdpdGggdHlwZSBiaW5hYmxlIDo9IEJpbmFibGUudCkgOlxuICAgICAgUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnYgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzEpXG4gICAgICAgIChNIDogQ29udjFfd2l0aG91dF91dWlkIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMxKSAoTSA6IENvbnYxIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzIpXG4gICAgICAgIChNIDogQ29udjJfd2l0aG91dF91dWlkIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252MiB3aXRoIHR5cGUgKCdhLCAnYikgYmluYWJsZSA6PSAoJ2EsICdiKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252M193aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBiaW5hYmxlIDo9ICgnYSwgJ2IsICdjKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252MyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFNleHBhYmxlLlMpID1cbiAgICAgIE9mX2JpbmFibGUuVjFcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgICAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnNleHBfb2ZfdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gTS50X29mX3NleHBcbiAgICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zZXhwYWJsZSkgPVxuICAgICAgT2ZfYmluYWJsZS5WMlxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zdHJpbmdhYmxlKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuXG50eXBlICdhIG0gPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxubGV0IG9mX2JpZ3N0cmluZyAodHlwZSBhKSBtIGJpZ3N0cmluZyA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCB0ID0gTS5iaW5fcmVhZF90IGJpZ3N0cmluZyB+cG9zX3JlZiBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9IEFycmF5MS5kaW0gYmlnc3RyaW5nIGluXG4gIChtYXRjaCAhcG9zX3JlZiA9IGJpZ3N0cmluZ19sZW5ndGggd2l0aFxuICAgfCB0cnVlIC0+ICgpXG4gICB8IGZhbHNlIC0+XG4gICAgIHJhaXNlX3NcbiAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgIFwiYmluX3JlYWRfdCBkaWQgbm90IGNvbnN1bWUgdGhlIGVudGlyZSBidWZmZXJcIlxuICAgICAgICAgICB+Y29uc3VtZWQ6KCFwb3NfcmVmIDogaW50KVxuICAgICAgICAgICAoYmlnc3RyaW5nX2xlbmd0aCA6IGludCldKTtcbiAgdFxuOztcblxuKCogVXNpbmcgdGhlIFtCaWdzdHJpbmddIG1vZHVsZSB3b3VsZCBpbnRyb2R1Y2UgYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBjcmVhdGVfYmlnc3RyaW5nIHNpemUgPSBBcnJheTEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgc2l6ZVxuXG5sZXQgdG9fYmlnc3RyaW5nID8ocHJlZml4X3dpdGhfbGVuZ3RoID0gZmFsc2UpICh0eXBlIGEpIG0gdCA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgdF9sZW5ndGggPSBNLmJpbl9zaXplX3QgdCBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoIHRoZW4gdF9sZW5ndGggKyA4ICgqIHRoZSBzaXplIG9mIGEgNjQtYml0IGludCAqKSBlbHNlIHRfbGVuZ3RoXG4gIGluXG4gIGxldCBiaWdzdHJpbmcgPSBjcmVhdGVfYmlnc3RyaW5nIGJpZ3N0cmluZ19sZW5ndGggaW5cbiAgbGV0IHBvcyA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoXG4gICAgdGhlbiBCaW5fcHJvdC5Xcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IGJpZ3N0cmluZyB+cG9zOjAgdF9sZW5ndGhcbiAgICBlbHNlIDBcbiAgaW5cbiAgbGV0IHBvcyA9IE0uYmluX3dyaXRlX3QgYmlnc3RyaW5nIH5wb3MgdCBpblxuICBhc3NlcnQgKHBvcyA9IGJpZ3N0cmluZ19sZW5ndGgpO1xuICBiaWdzdHJpbmdcbjs7XG5cbm1vZHVsZSBPZl9iaW5hYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTFfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUxLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTJfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUyLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTNfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUzLlYyXG5tb2R1bGUgT2Zfc2V4cGFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX3NleHBhYmxlLlYyXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc3RyaW5nYWJsZS5WMlxubW9kdWxlIE9mX2JpbmFibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjFcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjFcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjFcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zX2FuZF9zaGFwZSA9IHNpZ1xuICAgICAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zXG5cbiAgICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgICBlbmRcblxuICAgICgqIENoZWNrIHRoYXQgb25seSB0aGUgZnVuY3Rpb25zICYgc2hhcGUgYXJlIHN1ZmZpY2llbnQgZm9yIFtAQGRlcml2aW5nIGJpbl9pb10uIFRoZVxuICAgICAgIGZhY3QgdGhhdCB0aGlzIGZ1bmN0b3IgdHlwZWNoZWNrcyBpcywgaXRzZWxmLCB0aGUgdGVzdC4gKilcbiAgICBtb2R1bGUgXyAoWCA6IFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlKSA6IFMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFgudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlByaW50Zn1bQmFzZS5QcmludGZdfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgQmFzZS5QcmludGYgKCoqIEBvcGVuICopXG5cbmxldCBlcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwuZXByaW50ZlxubGV0IGZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5rZnByaW50ZlxubGV0IHByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLnByaW50ZlxuXG5cbigqKiBwcmludCB0byBzdGRlcnI7IGV4aXQgMSAqKVxubGV0IGV4aXRmIGZtdCA9XG4gIGtzcHJpbnRmXG4gICAgKGZ1biBzICgpIC0+XG4gICAgICAgZXByaW50ZiBcIiVzXFxuJSFcIiBzO1xuICAgICAgIGV4aXQgMSlcbiAgICBmbXRcbjs7XG5cbnR5cGUgcHJpbnRmID0geyBwcmludGYgOiAnYS4gKCdhLCBCdWZmZXIudCwgdW5pdCkgZm9ybWF0IC0+ICdhIH1cblxubGV0IGNvbGxlY3RfdG9fc3RyaW5nIGYgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgZG9uZV8gPSByZWYgZmFsc2UgaW5cbiAgbGV0IHByaW50ZiBmbXQgPVxuICAgIGticHJpbnRmXG4gICAgICAoZnVuIGJ1ZiAtPlxuICAgICAgICAgaWYgIWRvbmVfXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJbcHJpbnRmXSB1c2VkIGFmdGVyIFtjb2xsZWN0X3RvX3N0cmluZ10gcmV0dXJuZWRcIl0pKVxuICAgICAgYnVmXG4gICAgICBmbXRcbiAgaW5cbiAgZiB7IHByaW50ZiB9O1xuICBkb25lXyA6PSB0cnVlO1xuICBsZXQgb3V0cHV0ID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBvdXRwdXRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxuKCogQWxsIHRoZSB0eXBlcyBhcyBleHBvc2VkIGluIHRoZSBtbGkgYXJlIGRlZmluZWQgaW4gdGhpcyBbVHlwZXNdIG1vZHVsZS4gIFRoZSByZXN0IG9mXG4gICB0aGlzIGZpbGUgaXMgc2ltcGx5IG92ZXJyaWRpbmcgYWxsIHRoZSBiaW5faW8sIGNvbXBhcmUsIGFuZCBzZXhwIGZ1bmN0aW9ucyB0byByYWlzZVxuICAgZXhjZXB0aW9ucy4gKilcbm1vZHVsZSBUeXBlcyA9IHN0cnVjdFxuICBtb2R1bGUgTm9ib2R5ID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJOb2JvZHlcIlxuICBlbmRcblxuICBtb2R1bGUgTWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk1lXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBSZWFkIF0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlJlYWRcIlxuICBlbmRcblxuICBtb2R1bGUgV3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBXaG9fY2FuX3dyaXRlIG9mIE1lLnQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiV3JpdGVcIlxuICBlbmRcblxuICBtb2R1bGUgSW1tdXRhYmxlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mIE5vYm9keS50XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIkltbXV0YWJsZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IFdyaXRlLnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZF93cml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBgV2hvX2Nhbl93cml0ZSBvZiAnYVxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJVcHBlcl9ib3VuZFwiXG4gIGVuZFxuZW5kXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbigqIFRoaXMgaXMgYW4gZXhwbGljaXQgbW9kdWxlIHR5cGUgaW5zdGVhZCBvZiBqdXN0IGdpdmVuIGlubGluZSBhcyB0aGUgcmV0dXJuIHNpZ25hdHVyZSBvZlxuICAgW09ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxXSB0byBhdm9pZCBhbiB1bnVzZWQgdmFsdWUgd2FybmluZyB3aXRoIGJpbl9pbyB2YWx1ZXMuICopXG5tb2R1bGUgdHlwZSBTZXhwYWJsZV9iaW5hYmxlX2NvbXBhcmFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG5lbmRcblxuKCogT3ZlcnJpZGUgYWxsIGJpbl9pbywgc2V4cCwgY29tcGFyZSBmdW5jdGlvbnMgdG8gcmFpc2UgZXhjZXB0aW9ucyAqKVxubW9kdWxlIE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChOYW1lIDogc2lnXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCBzZXhwX29mX3QgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuc2V4cF9vZl90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9vZl9zZXhwIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLnRfb2Zfc2V4cF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IGNvbXBhcmUgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5jb21wYXJlXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgaGFzaF9mb2xkX3QgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5oYXNoX2ZvbGRfdF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIF8gPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgQmFzZS5Ob3RoaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGxldCBzdGFibGVfd2l0bmVzcyBfID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICBsZXQgZ2xvYmFsaXplIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5nbG9iYWxpemVdXCIgTmFtZS5uYW1lICgpXG5cbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgIGVuZClcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSBfID1cbiAgICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgdXNlZCAlcyBiaW5faW8gc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBkZXNlcmlhbGl6YXRpb25cIiBOYW1lLm5hbWUgKClcbiAgICAgICAgOztcbiAgICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IHNpZ1xuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHBfcG9seSwgc3RhYmxlX3dpdG5lc3NdXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVClcblxuICB0eXBlIHQgPSBULnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGxldCBnbG9iYWxpemUgXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmdsb2JhbGl6ZV1cIiBULm5hbWUgKClcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBOb2JvZHkgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuTm9ib2R5KVxuICAgIG1vZHVsZSBNZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5NZSlcbiAgICBtb2R1bGUgUmVhZCA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5SZWFkKVxuICAgIG1vZHVsZSBXcml0ZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Xcml0ZSlcbiAgICBtb2R1bGUgUmVhZF93cml0ZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5SZWFkX3dyaXRlKVxuICAgIG1vZHVsZSBJbW11dGFibGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuSW1tdXRhYmxlKVxuXG4gICAgdHlwZSBub2JvZHkgPSBOb2JvZHkudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIHR5cGUgbWUgPSBNZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBtb2R1bGUgVXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKFR5cGVzLlVwcGVyX2JvdW5kKVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBUeXBlcy5VcHBlcl9ib3VuZC50IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyBfID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgICAgbGV0IF9fdF9vZl9zZXhwX18gPSB0X29mX3NleHBcblxuICAgICAgbGV0IGdsb2JhbGl6ZSBfID1cbiAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuZ2xvYmFsaXplXVwiIFR5cGVzLlVwcGVyX2JvdW5kLm5hbWUgKClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHJlYWQgPSBWMS5SZWFkLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlIHdyaXRlID0gVjEuV3JpdGUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSBpbW11dGFibGUgPSBWMS5JbW11dGFibGUudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgcmVhZF93cml0ZSA9IFYxLlJlYWRfd3JpdGUudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgJ2EgcGVybXMgPSAnYSBWMS5VcHBlcl9ib3VuZC50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxubW9kdWxlIEV4cG9ydCA9IFN0YWJsZS5FeHBvcnRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENvbXBhcmF0b3IgPSBCYXNlLkNvbXBhcmF0b3JcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID0gKCdhLCAnd2l0bmVzcykgQ29tcGFyYXRvci50ID0gcHJpdmF0ZVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBCYXNlLlNleHAudFxuICB9XG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIENvbXBhcmF0b3Igd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG5pbmNsdWRlIChDb21wYXJhdG9yIDogQmFzZV9tYXNrKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSB0ID0gcHJpdmF0ZVxuICAgICAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gICAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcblxuICAgIGxldCBtYWtlID0gbWFrZVxuXG4gICAgbW9kdWxlIE1ha2UgPSBNYWtlXG4gICAgbW9kdWxlIE1ha2UxID0gTWFrZTFcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2YsICdzKSB0ID0gKCdmLCAncykgQmFzZS5FaXRoZXIudCA9XG4gICAgICB8IEZpcnN0IG9mICdmXG4gICAgICB8IFNlY29uZCBvZiAnc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRmlyc3QgeDEgLT4gRmlyc3QgKGYxIHgxKVxuICAgICAgfCBTZWNvbmQgeDIgLT4gU2Vjb25kIChmMiB4MilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBCYXNlLkVpdGhlclxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZDIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5laXRoZXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZWl0aGVyXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUzBfd2l0aG91dF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgaW5jbHVkZSBTMF93aXRob3V0X2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG4oKiogVGhlIHBvbHltb3JwaGljIHNpZ25hdHVyZXMgcmVxdWlyZSBhIG1hcHBpbmcgZnVuY3Rpb24gc28gcGVvcGxlIGNhbiB3cml0ZSBjb252ZXJzaW9uXG4gICAgZnVuY3Rpb25zIHdpdGhvdXQgZWl0aGVyICgxKSByZS1pbXBsZW1lbnRpbmcgdGhlIG1hcHBpbmcgZnVuY3Rpb24gaW5saW5lIG9yICgyKVxuICAgIHJlYWNoaW5nIGludG8gdGhlIHVuc3RhYmxlIHBhcnQgb2YgdGhlIG1vZHVsZS4gKilcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcFxuICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICB0eXBlICgnYTEsICdhMiwgJ2EzLCAnYTQpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXBcbiAgICA6ICAoJ2ExLCAnYTIsICdhMywgJ2E0KSB0XG4gICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgLT4gZjQ6KCdhNCAtPiAnYjQpXG4gICAgLT4gKCdiMSwgJ2IyLCAnYjMsICdiNCkgdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMwX3dpdGhvdXRfY29tcGFyYXRvciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzBfd2l0aG91dF9jb21wYXJhdG9yIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMwIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuXG4gICAgdHlwZSB0ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi50ID1cbiAgICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgICA7IHBvc19sbnVtIDogaW50XG4gICAgICA7IHBvc19ib2wgOiBpbnRcbiAgICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmxldCB0b19zdHJpbmcgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBpcyBtYW55IHBsYWNlcyBwbGFjZXMgYXMgcG9zc2libGUuXG4gICBQbGVhc2UgYXZvaWQgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgSW5mb19pbnRmXG5cbm1vZHVsZSB0eXBlIFMgPSBCYXNlLkluZm8uU1xuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliLlNleHBcblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgQmluYWJsZV9leG4gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2YsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSB0ID0gdCB8PiBbJXNleHBfb2Y6IHRdXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IEV4bi5jcmVhdGVfc1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBTZXhwLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEV4dGVuZCAoSW5mbyA6IEJhc2UuSW5mby5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZm9cblxuICBtb2R1bGUgSW50ZXJuYWxfcmVwciA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCaW5hYmxlX2V4biA9IEJpbmFibGVfZXhuLlN0YWJsZVxuXG4gICAgICBtb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICAgICgqIFtzZXhwX29mX3RdIGFzIGRlZmluZWQgaGVyZSBpcyB1bnN0YWJsZTsgdGhpcyBpcyBPSyBiZWNhdXNlIHRoZXJlIGlzIG5vXG4gICAgICAgICAgICAgW3Rfb2Zfc2V4cF0uICBbc2V4cF9vZl90XSBpcyBvbmx5IHVzZWQgdG8gcHJvZHVjZSBhIHNleHAgdGhhdCBpcyBuZXZlclxuICAgICAgICAgICAgIGRlc2VyaWFsaXplZCBhcyBhIFtTb3VyY2VfY29kZV9wb3NpdGlvbl0uICopXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnNleHBfb2ZfdFxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby5JbnRlcm5hbF9yZXByLnQgPVxuICAgICAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICAgICAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICAgICAgICB8IEV4biBvZiBCaW5hYmxlX2V4bi5WMS50XG4gICAgICAgICAgfCBTZXhwIG9mIFNleHAudFxuICAgICAgICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24uVjEudCBvcHRpb25cbiAgICAgICAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICAgICAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgICAgICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgICAgICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2YsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFN0YWJsZS5WMlxuXG4gICAgbGV0IHRvX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuICAgIGxldCBvZl9pbmZvID0gSW5mby5JbnRlcm5hbF9yZXByLm9mX2luZm9cbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICAgICAgbGV0IG9mX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50ZXJuYWxfcmVwci5TdGFibGUuVjIpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIEludGVybmFsX3JlcHIuU3RhYmxlLlYyLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICAgIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAgIChTZXhwKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEluZm8uc2V4cF9vZl90XG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IEluZm8udF9vZl9zZXhwXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gc2V4cF9vZl90XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IHRfb2Zfc2V4cFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIFNleHAuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxuaW5jbHVkZSBFeHRlbmQgKEJhc2UuSW5mbylcblxuIiwiaW5jbHVkZSBCYXNlLkVycm9yXG5pbmNsdWRlIEluZm8uRXh0ZW5kIChCYXNlLkVycm9yKVxuXG5sZXQgZmFpbHdpdGhzID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGZhaWx3aXRocCA/c3RyaWN0IGhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFJlc3VsdCA9IEJhc2UuUmVzdWx0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgUmVzdWx0LnQgPVxuICAgICAgfCBPayBvZiAnYVxuICAgICAgfCBFcnJvciBvZiAnYlxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT4gRXJyb3IgKGYyIGVycilcbiAgICAgIHwgT2sgeCAtPiBPayAoZjEgeClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjFfc3RhYmxlX3VuaXRfdGVzdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChzdHJpbmcsIGludCkgVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgICBsZXQgdGVzdHMgPVxuICAgICAgWyBWMS5PayBcImZvb1wiLCBcIihPayBmb28pXCIsIFwiXFwwMDBcXDAwM2Zvb1wiOyBWMS5FcnJvciA3LCBcIihFcnJvciA3KVwiLCBcIlxcMDAxXFwwMDdcIiBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgUmVzdWx0XG4iLCIoKiogQW4gaW50ZXJmYWNlIGZvciBjcmVhdGluZyB1bml0IHRlc3RzIHRvIGNoZWNrIHN0YWJpbGl0eSBvZiBzZXhwIGFuZCBiaW4taW9cbiAgICBzZXJpYWxpemF0aW9ucyAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuXG5cbiAgKCoqIFt0ZXN0c10gaXMgYSBsaXN0IG9mICh2YWx1ZSwgc2V4cC1yZXByZXNlbnRhdGlvbiwgYmluLWlvLXJlcHJlc2VudGF0aW9uKSB0cmlwbGVzLlxuICAgICAgVGhlIHVuaXQgdGVzdHMgY2hlY2sgdGhhdCB0aGUgdHlwZSBwcm9wZXJseSBzZXJpYWxpemVzIGFuZFxuICAgICAgZGUtc2VyaWFsaXplcyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHJlcHJlc2VudGF0aW9ucy4gKilcbiAgdmFsIHRlc3RzIDogKHQgKiBzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbmVuZFxuXG4oKiogVW5vcmRlcmVkIGNvbnRhaW5lciB0ZXN0cyBhcmUgZm9yIHR5cGVzIHdpdGggc2VyaWFsaXphdGlvbnMgdGhhdCB3aWxsIGNvbnRhaW4gYVxuICAgIGNlcnRhaW4gc2V0IG9mIGVsZW1lbnRzIChlYWNoIHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIHNleHAgb3IgYmluLWlvIHN0cmluZykgd2hpY2ggbWF5XG4gICAgYXBwZWFyIGluIGFueSBvcmRlciwgc3VjaCBhcyBoYXNoIHRhYmxlcyBhbmQgaGFzaCBzZXRzLiAqKVxubW9kdWxlIFVub3JkZXJlZF9jb250YWluZXJfdGVzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc2V4cHMgOiBzdHJpbmcgbGlzdFxuICAgIDsgYmluX2lvX2hlYWRlciA6IHN0cmluZ1xuICAgIDsgYmluX2lvX2VsZW1lbnRzIDogc3RyaW5nIGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIHR5cGUgVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgdGVzdHMgOiAodCAqIFVub3JkZXJlZF9jb250YWluZXJfdGVzdC50KSBsaXN0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9yX2Vycm9yXG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBJTyA9IEJhc2UuT3JfZXJyb3JcblxuICBsZXQgcnVuIGYgPSBva19leG4gKGYgKCkpXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuICBsZXQgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBFeHBlY3RfdGVzdF9jb25maWcudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbmVuZFxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnX3dpdGhfdW5pdF9leHBlY3QgPSBFeHBlY3RfdGVzdF9jb25maWdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMS50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjIudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZiA9IFJlc3VsdC5TdGFibGUuVjEubWFwIHggfmYxOmYgfmYyOkZuLmlkXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXF1ZW5jZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAnYSBCYXNlLlNlcXVlbmNlLnRcblxuICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5TZXF1ZW5jZS5vZl9saXN0XG4gICAgbGV0IHRvX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLnRvX2xpc3RcbiAgZW5kKVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZXBcblxuICB0eXBlICgnYSwgJ3MpIHQgPSAoJ2EsICdzKSBTdGVwLnQgPVxuICAgIHwgRG9uZVxuICAgIHwgU2tpcCBvZiB7IHN0YXRlIDogJ3MgfVxuICAgIHwgWWllbGQgb2ZcbiAgICAgICAgeyB2YWx1ZSA6ICdhXG4gICAgICAgIDsgc3RhdGUgOiAnc1xuICAgICAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIHR5cGUgSGVhcCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHBvcF9taW4gOiAnYSB0IC0+ICgnYSAqICdhIHQpIG9wdGlvblxuZW5kXG5cbmxldCBtZXJnZV9hbGwgKG1vZHVsZSBIZWFwIDogSGVhcCkgc2VxcyB+Y29tcGFyZSA9XG4gIGxldCBtb2R1bGUgTWVyZ2VfYWxsX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgaGVhcCA6ICgnYSAqICdhIEJhc2UuU2VxdWVuY2UudCkgSGVhcC50XG4gICAgICA7IG5vdF95ZXRfaW5faGVhcCA6ICdhIEJhc2UuU2VxdWVuY2UudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbiAgZW5kXG4gIGluXG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6XG4gICAgICAoTWVyZ2VfYWxsX3N0YXRlLmNyZWF0ZVxuICAgICAgICAgfmhlYXA6KEhlYXAuY3JlYXRlIH5jb21wYXJlOihmdW4gYSBiIC0+IEJhc2UuQ29tcGFyYWJsZS5saWZ0IGNvbXBhcmUgfmY6ZnN0IGEgYikpXG4gICAgICAgICB+bm90X3lldF9pbl9oZWFwOnNlcXMpXG4gICAgfmY6KGZ1biB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCB9IC0+XG4gICAgICBtYXRjaCBub3RfeWV0X2luX2hlYXAgd2l0aFxuICAgICAgfCBzZXEgOjogbm90X3lldF9pbl9oZWFwIC0+XG4gICAgICAgIChtYXRjaCBFeHBlcnQubmV4dF9zdGVwIHNlcSB3aXRoXG4gICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0geyBub3RfeWV0X2luX2hlYXA7IGhlYXAgfSB9XG4gICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHNlcSB9IC0+XG4gICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IHsgbm90X3lldF9pbl9oZWFwID0gc2VxIDo6IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9IH1cbiAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGVsdDsgc3RhdGUgPSBzZXEgfSAtPlxuICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCA9IEhlYXAuYWRkIGhlYXAgKGVsdCwgc2VxKSB9IH0pXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBIZWFwLnBvcF9taW4gaGVhcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgICAgfCBTb21lICgoZWx0LCBzZXEpLCBoZWFwKSAtPlxuICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gZWx0OyBzdGF0ZSA9IHsgaGVhcDsgbm90X3lldF9pbl9oZWFwID0gWyBzZXEgXSB9IH0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrX2ludGZcbm9wZW4gQmFzZV9xdWlja2NoZWNrXG5tb2R1bGUgRmxvYXQgPSBCYXNlLkZsb2F0XG5tb2R1bGUgSW50ID0gQmFzZS5JbnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgT3B0aW9uID0gQmFzZS5PcHRpb25cbm1vZHVsZSBTZXQgPSBCYXNlLlNldFxubW9kdWxlIFNleHAgPSBCYXNlLlNleHBcblxubW9kdWxlIFBvbHltb3JwaGljX3R5cGVzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdmFyaWFudDIgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHZhcmlhbnQzID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHZhcmlhbnQ0ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdmFyaWFudDUgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHZhcmlhbnQ2ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIHwgYEYgb2YgJ2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiKSB0dXBsZTIgPSAnYSAqICdiIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHR1cGxlMyA9ICdhICogJ2IgKiAnYyBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdHVwbGU0ID0gJ2EgKiAnYiAqICdjICogJ2QgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0dXBsZTUgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdHVwbGU2ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSAqICdmXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsICdyKSBmbjIgPSAnYSAtPiAnYiAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAncikgZm4zID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAncikgZm40ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgJ3IpIGZuNSA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsIC0nZiwgJ3IpIGZuNiA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdmIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5lbmRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICBsZXQgb2ZfaGFzaCAodHlwZSBhKSAobW9kdWxlIE0gOiBEZXJpdmluZ19oYXNoIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIG9mX2hhc2hfZm9sZCBNLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTZcbiAgbGV0IG9mX3ByZWRpY2F0ZSBhIGIgfmYgPSB1bm1hcCAodmFyaWFudDIgYSBiKSB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gYEEgeCBlbHNlIGBCIHgpXG4gIGxldCBzaW5nbGV0b24gKCkgPSBvcGFxdWVcbiAgbGV0IGRvdWJsZXRvbiBmID0gb2ZfcHJlZGljYXRlIChzaW5nbGV0b24gKCkpIChzaW5nbGV0b24gKCkpIH5mXG4gIGxldCBlbnVtIF8gfmYgPSB1bm1hcCBpbnQgfmZcblxuICBsZXQgb2ZfbGlzdCBsaXN0IH5lcXVhbCA9XG4gICAgbGV0IGYgeCA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRpIGxpc3QgfmY6KGZ1biBfIHkgLT4gZXF1YWwgeCB5KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJRdWlja2NoZWNrLk9ic2VydmVyLm9mX2xpc3Q6IHZhbHVlIG5vdCBmb3VuZFwiXG4gICAgICB8IFNvbWUgKGksIF8pIC0+IGlcbiAgICBpblxuICAgIGVudW0gKExpc3QubGVuZ3RoIGxpc3QpIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmICgpKSB4IH5zaXplIH5oYXNoKVxuXG4gIGxldCBjb21wYXJpc29uIH5jb21wYXJlIH5lcSB+bHQgfmd0ID1cbiAgICB1bm1hcFxuICAgICAgKHZhcmlhbnQzIGx0IChzaW5nbGV0b24gKCkpIGd0KVxuICAgICAgfmY6KGZ1biB4IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZSB4IGVxIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gYEEgeCBlbHNlIGlmIGMgPiAwIHRoZW4gYEMgeCBlbHNlIGBCIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyYXRvclxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgc2luZ2xldG9uID0gcmV0dXJuXG5cbiAgbGV0IGRvdWJsZXRvbiB4IHkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBpZiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSB0aGVuIHggZWxzZSB5KVxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGYgKCkpIH5zaXplIH5yYW5kb20pXG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5wIHNlcSA9XG4gICAgaWYgRmxvYXQuKCA8PSApIHAgMC4gfHwgRmxvYXQuKCA+ICkgcCAxLlxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcHJvYmFiaWxpdHkgWyVmXSBvdXQgb2YgYm91bmRzXCIgcCk7XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXFcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZmluaXNoOihmdW4gKCkgLT4gZmFpbHdpdGggXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHJhbiBvdXQgb2YgdmFsdWVzXCIpXG4gICAgICB+ZjooZnVuICgpIHggfmsgLT4gd2VpZ2h0ZWRfdW5pb24gWyBwLCBzaW5nbGV0b24geDsgMS4gLS4gcCwgb2ZfZnVuIGsgXSlcbiAgOztcblxuICBsZXQgZ2VvbWV0cmljID0gR2VuZXJhdG9yLmludF9nZW9tZXRyaWNcbiAgbGV0IHNtYWxsX25vbl9uZWdhdGl2ZV9pbnQgPSBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludFxuICBsZXQgc21hbGxfcG9zaXRpdmVfaW50ID0gc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50XG4gIGxldCBsaXN0X3dpdGhfbGVuZ3RoIGxlbmd0aCB0ID0gbGlzdF93aXRoX2xlbmd0aCB0IH5sZW5ndGhcbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2XG4gIGxldCBmbjIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjJcbiAgbGV0IGZuMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuM1xuICBsZXQgZm40ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm40XG4gIGxldCBmbjUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjVcbiAgbGV0IGZuNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNlxuXG4gIGxldCBjb21wYXJlX2ZuIGRvbSA9XG4gICAgZm4gZG9tIGludCA+PnwgZnVuIGdldF9pbmRleCB4IHkgLT4gWyVjb21wYXJlOiBpbnRdIChnZXRfaW5kZXggeCkgKGdldF9pbmRleCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbF9mbiBkb20gPSBjb21wYXJlX2ZuIGRvbSA+PnwgZnVuIGNtcCB4IHkgLT4gSW50LiggPSApIChjbXAgeCB5KSAwXG5lbmRcblxubW9kdWxlIFNocmlua2VyID0gc3RydWN0XG4gIGluY2x1ZGUgU2hyaW5rZXJcblxuICBsZXQgZW1wdHkgKCkgPSBhdG9taWNcbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTZcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgR2VuZXJhdG9yXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gR2VuZXJhdG9yXG4gIGVuZFxuXG4gIGluY2x1ZGUgR2VuZXJhdG9yLk1vbmFkX2luZml4XG5cbiAgbGV0IHJldHVybiA9IEdlbmVyYXRvci5yZXR1cm5cbmVuZFxuXG5tb2R1bGUgQ29uZmlndXJlIChDb25maWcgOiBRdWlja2NoZWNrX2NvbmZpZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25maWdcblxuICBsZXQgbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxuICBsZXQgcmFuZG9tX3N0YXRlX29mX3NlZWQgc2VlZCA9XG4gICAgbWF0Y2ggc2VlZCB3aXRoXG4gICAgfCBgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIG5vbmRldGVybWluaXN0aWNfc3RhdGUpXG4gICAgfCBgRGV0ZXJtaW5pc3RpYyBzdHIgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChbJWhhc2g6IHN0cmluZ10gc3RyKVxuICA7O1xuXG4gIGxldCBtYWtlX3NlZWQgc2VlZCA6IFRlc3QuQ29uZmlnLlNlZWQudCA9XG4gICAgbWF0Y2ggc2VlZCB3aXRoXG4gICAgfCBgTm9uZGV0ZXJtaW5pc3RpYyAtPiBOb25kZXRlcm1pbmlzdGljXG4gICAgfCBgRGV0ZXJtaW5pc3RpYyBzdHJpbmcgLT4gRGV0ZXJtaW5pc3RpYyBzdHJpbmdcbiAgOztcblxuICBsZXQgbWFrZV9zaHJpbmtfY291bnQgPSBmdW5jdGlvblxuICAgIHwgYEV4aGF1c3RpdmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgYExpbWl0IG4gLT4gblxuICA7O1xuXG4gIGxldCBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIDogVGVzdC5Db25maWcudCA9XG4gICAgeyBzZWVkID0gbWFrZV9zZWVkIChPcHRpb24udmFsdWUgc2VlZCB+ZGVmYXVsdDpkZWZhdWx0X3NlZWQpXG4gICAgOyBzaXplcyA9IE9wdGlvbi52YWx1ZSBzaXplcyB+ZGVmYXVsdDpkZWZhdWx0X3NpemVzXG4gICAgOyB0ZXN0X2NvdW50ID0gT3B0aW9uLnZhbHVlIHRyaWFscyB+ZGVmYXVsdDpkZWZhdWx0X3RyaWFsX2NvdW50XG4gICAgOyBzaHJpbmtfY291bnQgPVxuICAgICAgICBtYWtlX3Nocmlua19jb3VudCAoT3B0aW9uLnZhbHVlIHNocmlua19hdHRlbXB0cyB+ZGVmYXVsdDpkZWZhdWx0X3Nocmlua19hdHRlbXB0cylcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1ha2VfdGVzdF9tICh0eXBlIGEpIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIDogKG1vZHVsZSBUZXN0LlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBPcHRpb24udmFsdWUgc2hyaW5rZXIgfmRlZmF1bHQ6U2hyaW5rZXIuYXRvbWljXG4gICAgICBsZXQgc2V4cF9vZl90ID0gT3B0aW9uLnZhbHVlIHNleHBfb2YgfmRlZmF1bHQ6WyVzZXhwX29mOiBfXVxuICAgIGVuZFxuICAgIGluXG4gICAgKG1vZHVsZSBNKVxuICA7O1xuXG4gIGxldCByYW5kb21fdmFsdWUgPyhzZWVkID0gZGVmYXVsdF9zZWVkKSA/KHNpemUgPSAzMCkgZ2VuID1cbiAgICBsZXQgcmFuZG9tID0gcmFuZG9tX3N0YXRlX29mX3NlZWQgc2VlZCBpblxuICAgIEdlbmVyYXRvci5nZW5lcmF0ZSBnZW4gfnNpemUgfnJhbmRvbVxuICA7O1xuXG4gIGxldCByYW5kb21fc2VxdWVuY2UgP3NlZWQgP3NpemVzIGdlbiA9XG4gICAgbGV0IGNvbmZpZyA9XG4gICAgICBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFsczooU29tZSBJbnQubWF4X3ZhbHVlKSB+c2hyaW5rX2F0dGVtcHRzOk5vbmVcbiAgICBpblxuICAgIGxldCByZXR1cm4gPSByZWYgU2VxdWVuY2UuZW1wdHkgaW5cbiAgICBUZXN0LndpdGhfc2FtcGxlX2V4biB+Y29uZmlnIGdlbiB+ZjooZnVuIHNlcXVlbmNlIC0+IHJldHVybiA6PSBzZXF1ZW5jZSk7XG4gICAgIXJldHVyblxuICA7O1xuXG4gIGxldCBpdGVyID9zZWVkID9zaXplcyA/dHJpYWxzIGdlbiB+ZiA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gU2VxdWVuY2UuaXRlciBzZXF1ZW5jZSB+ZilcbiAgOztcblxuICBsZXQgdGVzdCA/c2VlZCA/c2l6ZXMgP3RyaWFscyA/c2hyaW5rZXIgP3Nocmlua19hdHRlbXB0cyA/c2V4cF9vZiA/ZXhhbXBsZXMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyBpblxuICAgIGxldCB0ZXN0X20gPSBtYWtlX3Rlc3RfbSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiBpblxuICAgIFRlc3QucnVuX2V4biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9vcl9lcnJvclxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3RyaWFsc1xuICAgICAgICA/c2hyaW5rZXJcbiAgICAgICAgP3Nocmlua19hdHRlbXB0c1xuICAgICAgICA/c2V4cF9vZlxuICAgICAgICA/ZXhhbXBsZXNcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW4gfmNvbmZpZyA/ZXhhbXBsZXMgfmYgdGVzdF9tXG4gIDs7XG5cbiAgbGV0IHRlc3RfZGlzdGluY3RfdmFsdWVzXG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+dHJpYWxzXG4gICAgICAgIH5kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgfmNvbXBhcmVcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBrZXlcblxuICAgICAgbGV0IChjb21wYXJlIDogdCAtPiB0IC0+IGludCkgPSBjb21wYXJlXG5cbiAgICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgICBtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICAgfCBTb21lIHNleHBfb2YgLT4gc2V4cF9vZlxuICAgICAgICB8IE5vbmUgLT4gc2V4cF9vZl9vcGFxdWVcbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcbiAgICBpblxuICAgIGxldCBmYWlsIHNldCA9XG4gICAgICBsZXQgZXhwZWN0X2NvdW50ID0gZGlzdGluY3RfdmFsdWVzIGluXG4gICAgICBsZXQgYWN0dWFsX2NvdW50ID0gU2V0Lmxlbmd0aCBzZXQgaW5cbiAgICAgIGxldCB2YWx1ZXMgPVxuICAgICAgICBtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHNleHBfb2ZfZWx0IC0+IFNvbWUgWyVzZXhwIChTZXQudG9fbGlzdCBzZXQgOiBlbHQgbGlzdCldXG4gICAgICBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImluc3VmZmljaWVudCBkaXN0aW5jdCB2YWx1ZXNcIlxuICAgICAgICAgICAgKHRyaWFscyA6IGludClcbiAgICAgICAgICAgIChleHBlY3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAoYWN0dWFsX2NvdW50IDogaW50KVxuICAgICAgICAgICAgKHZhbHVlcyA6IChTZXhwLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgICBpblxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IHNldCA9IHJlZiAoU2V0LmVtcHR5IChtb2R1bGUgTSkpIGluXG4gICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBzZXQgOj0gU2V0LmFkZCAhc2V0IGVsdDtcbiAgICAgICAgaWYgU2V0Lmxlbmd0aCAhc2V0ID49IGRpc3RpbmN0X3ZhbHVlcyB0aGVuIHIucmV0dXJuICgpKTtcbiAgICAgIGZhaWwgIXNldClcbiAgOztcblxuICBsZXQgdGVzdF9jYW5fZ2VuZXJhdGVcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID8odHJpYWxzID0gZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQpXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgciA9IHJlZiBbXSBpblxuICAgIGxldCBmX2FuZF9lbnF1ZXVlIHJldHVybiB4ID0gaWYgZiB4IHRoZW4gcmV0dXJuIGBDYW5fZ2VuZXJhdGUgZWxzZSByIDo9IHggOjogIXIgaW5cbiAgICBtYXRjaFxuICAgICAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICAgICAgaXRlciA/c2VlZCA/c2l6ZXMgfnRyaWFscyBnZW4gfmY6KGZfYW5kX2VucXVldWUgcmV0dXJuLnJldHVybik7XG4gICAgICAgIGBDYW5ub3RfZ2VuZXJhdGUpXG4gICAgd2l0aFxuICAgIHwgYENhbl9nZW5lcmF0ZSAtPiAoKVxuICAgIHwgYENhbm5vdF9nZW5lcmF0ZSAtPlxuICAgICAgKG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbm5vdCBnZW5lcmF0ZVwiXG4gICAgICAgfCBTb21lIHNleHBfb2ZfdmFsdWUgLT5cbiAgICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiY2Fubm90IGdlbmVyYXRlXCIgfmF0dGVtcHRzOighciA6IHZhbHVlIGxpc3QpXSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbmZpZ3VyZSAoc3RydWN0XG4gICAgbGV0IGRlZmF1bHRfc2VlZCA9IGBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG5cbiAgICBsZXQgZGVmYXVsdF90cmlhbF9jb3VudCA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgfCBXMzIgLT4gMV8wMDBcbiAgICA7O1xuXG4gICAgbGV0IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50ID0gMTBfMDAwXG4gICAgbGV0IGRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzID0gYExpbWl0IDEwMDBcblxuICAgIGxldCBkZWZhdWx0X3NpemVzID1cbiAgICAgIFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTMSA9IFMxXG5tb2R1bGUgdHlwZSBTMiA9IFMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFNfaW50XG5tb2R1bGUgdHlwZSBTX3JhbmdlID0gU19yYW5nZVxuXG50eXBlIG5vbnJlYyBzZWVkID0gc2VlZFxudHlwZSBub25yZWMgc2hyaW5rX2F0dGVtcHRzID0gc2hyaW5rX2F0dGVtcHRzXG5cbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlnID0gUXVpY2tjaGVja19jb25maWdcbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlndXJlZCA9IFF1aWNrY2hlY2tfY29uZmlndXJlZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2thYmxlX2ludGZcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnZcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQgPSBDb252X2ZpbHRlcmVkXG5tb2R1bGUgdHlwZSBDb252MSA9IENvbnYxXG5tb2R1bGUgdHlwZSBDb252X2ZpbHRlcmVkMSA9IENvbnZfZmlsdGVyZWQxXG5tb2R1bGUgdHlwZSBTID0gUXVpY2tjaGVjay5TXG5tb2R1bGUgdHlwZSBTMSA9IFF1aWNrY2hlY2suUzFcbm1vZHVsZSB0eXBlIFMyID0gUXVpY2tjaGVjay5TMlxubW9kdWxlIHR5cGUgU19pbnQgPSBRdWlja2NoZWNrLlNfaW50XG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMpXG4gICAgKENvbnYgOiBDb252IHdpdGggdHlwZSBxdWlja2NoZWNrYWJsZSA6PSBRdWlja2NoZWNrYWJsZS50KSA6IFMgd2l0aCB0eXBlIHQgOj0gQ29udi50ID1cbnN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGUxXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUzEpXG4gICAgKENvbnYgOiBDb252MSB3aXRoIHR5cGUgJ2EgcXVpY2tjaGVja2FibGUgOj0gJ2EgUXVpY2tjaGVja2FibGUudCkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZFxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMpXG4gICAgKENvbnYgOiBDb252X2ZpbHRlcmVkIHdpdGggdHlwZSBxdWlja2NoZWNrYWJsZSA6PSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMgd2l0aCB0eXBlIHQgOj0gQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWQxXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUzEpXG4gICAgKENvbnYgOiBDb252X2ZpbHRlcmVkMSB3aXRoIHR5cGUgJ2EgcXVpY2tjaGVja2FibGUgOj0gJ2EgUXVpY2tjaGVja2FibGUudCkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hKVxuICAgICAgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcbiIsImluY2x1ZGUgQmFzZS5PcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5cbmxldCBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBpID0gaWYgaSA8IDAgdGhlbiBpICsgbGVuZ3RoX2Z1biB0IGVsc2UgaVxuXG5sZXQgc2xpY2Ugfmxlbmd0aF9mdW4gfnN1Yl9mdW4gdCBzdGFydCBzdG9wID1cbiAgbGV0IHN0b3AgPSBpZiBzdG9wID0gMCB0aGVuIGxlbmd0aF9mdW4gdCBlbHNlIHN0b3AgaW5cbiAgbGV0IHBvcyA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0YXJ0IGluXG4gIGxldCBsZW4gPSBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBzdG9wIC0gcG9zIGluXG4gIHN1Yl9mdW4gdCB+cG9zIH5sZW5cbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxub3BlbiBQZXJtcy5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEJhc2UuQXJyYXlcbm1vZHVsZSBDb3JlX3NlcXVlbmNlID0gU2VxdWVuY2VcblxuaW5jbHVkZSAoXG4gIEJhc2UuQXJyYXkgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBnbG9iYWxpemUsIHNleHBfZ3JhbW1hcl1cbiAgZW5kKVxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbm1vZHVsZSBQcml2YXRlID0gQmFzZS5BcnJheS5Qcml2YXRlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5BcnJheVxuXG4gIGxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG4gIGxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3BcbiAgOztcblxuICBsZXQgbmdldCB0IGkgPSB0Lihub3JtYWxpemUgdCBpKVxuICBsZXQgbnNldCB0IGkgdiA9IHQuKG5vcm1hbGl6ZSB0IGkpIDwtIHZcblxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICBvcGVuIEJhc2UuQXJyYXlcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IHNldCA9IHNldFxuICBlbmRcblxuICAoKiBTZWUgT0NhbWwgcGVyZiBub3RlcyBmb3Igd2h5IHRoZXNlIGFycmF5IGJsaXRzIGFyZSBzcGVjaWFsIGNhc2VkIC0tIGluIHBhcnRpY3VsYXIsXG4gICAgIHRoZSBzZWN0aW9uIGVudGl0bGVkIFwiRmFzdCwgU2xvdyBhbmQgSW5jb3JyZWN0IEFycmF5IGJsaXRzXCIgb2ZcbiAgICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTMwMjIwMDAwMjI5L2h0dHA6Ly9qYW5lc3RyZWV0LmdpdGh1Yi5jb20vb2NhbWwtcGVyZi1ub3Rlcy5odG1sICopXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gaW50IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgbGV0IGVxdWFsID0gKCA9IClcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgdHlwZSB0XyA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBleHRlcm5hbCBnZXQgOiAodF9bQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXRcbiAgICAgIDogICh0X1tAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgICAgOiAgKHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGZsb2F0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgICA6ICAodF9bQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSBCYXNlLkZsb2F0LmVxdWFsXG4gICAgICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAxLiBlbHNlIDAuXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwLlxuXG4gICAgICAgICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFBlcm1pc3Npb25lZCA9IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdFxuXG4gIGluY2x1ZGVcbiAgICBJbmRleGVkX2NvbnRhaW5lci5TMV93aXRoX2NyZWF0b3JzX3Blcm1pc3Npb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgaW5jbHVkZSBCbGl0LlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuXG4gIGV4dGVybmFsIGxlbmd0aCA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICBleHRlcm5hbCBnZXRcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogICgoJ2EsIFs+IHdyaXRlIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoKCdhLCBbPiB3cml0ZSBdKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IChmbG9hdCwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGVfbG9jYWwgOiBsZW46aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdFtAbG9jYWxdKVxuICB2YWwgaW5pdCA6IGludCAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb3B5X21hdHJpeFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgYXBwZW5kIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNvbmNhdCA6ICgnYSwgWz4gcmVhZCBdKSB0IGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNvcHkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgZmlsbCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZGluZ19tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdhY2MgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBtYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGl0ZXJpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZvbGRpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGRpbmdfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfcmlnaHRcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBzb3J0XG4gICAgOiAgP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgdmFsIHN0YWJsZV9zb3J0IDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBib29sXG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvbmNhdF9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHQgb3B0aW9uXG5cbiAgdmFsIHRyYW5zcG9zZV9leG5cbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG5vcm1hbGl6ZSA6ICgnYSwgXykgdCAtPiBpbnQgLT4gaW50XG4gIHZhbCBzbGljZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG5nZXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIG5zZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAoJ2Egb3B0aW9uLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIGl0ZXIyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2IgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvcl9hbGwyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiBib29sXG5cbiAgdmFsIGV4aXN0czJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgZmlsdGVyIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBzd2FwIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IGY6KCgnYSAtPiAnYSlbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZmluZF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcblxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGVcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZWR1Y2VfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYVxuXG4gIHZhbCBwZXJtdXRlXG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudFxuICAgIC0+ID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IHVuaXRcblxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgemlwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBzb3J0ZWRfY29weVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBsYXN0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuICB2YWwgdG9fc2VxdWVuY2VfbXV0YWJsZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBtb2R1bGUgSW50IDogc2lnXG4gICAgdHlwZSBub25yZWMgLSdwZXJtcyB0ID0gKGludCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzooWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgLT4gZHN0OihbPiB3cml0ZSBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoZmxvYXQsICdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIEJsaXQuU19wZXJtaXNzaW9ucyB3aXRoIHR5cGUgJ3Blcm1zIHQgOj0gJ3Blcm1zIHRcblxuICAgIGV4dGVybmFsIGdldFxuICAgICAgOiAgKFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGZsb2F0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0XG4gICAgICA6ICAoWz4gd3JpdGUgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgICA6ICAoWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICAgIDogIChbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOihbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6KFs+IHdyaXRlIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgW0BAbm9hbGxvY11cbiAgZW5kXG5cbiAgdmFsIG9mX2FycmF5X2lkIDogJ2EgYXJyYXkgLT4gKCdhLCBbPCByZWFkX3dyaXRlIF0pIHRcbiAgdmFsIHRvX2FycmF5X2lkIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gJ2EgYXJyYXlcbiAgdmFsIHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA6ICgnYSwgWz4gaW1tdXRhYmxlIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCB0eXBlcmVwXVxuXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuSW50XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkZsb2F0XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbGV0IHRvX2FycmF5X2lkID0gRm4uaWRcbiAgbGV0IG9mX2FycmF5X2lkID0gRm4uaWRcblxuICBpbmNsdWRlIChUIDogUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgbGV0IHRvX2FycmF5ID0gY29weVxuICBsZXQgdG9fc2VxdWVuY2VfaW1tdXRhYmxlID0gdG9fc2VxdWVuY2VfbXV0YWJsZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgSW5kZXhlZF9jb250YWluZXIuUzFfd2l0aF9jcmVhdG9ycyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogICgnYSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoJ2EgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX2xvY2FsIDogbGVuOmludCAtPiAnYSAtPiAoJ2EgdFtAbG9jYWxdKVxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IGZsb2F0IHRcbiAgdmFsIGluaXQgOiBpbnQgLT4gZjooKGludCAtPiAnYSlbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAnYSB0IHRcbiAgdmFsIGNvcHlfbWF0cml4IDogJ2EgdCB0IC0+ICdhIHQgdFxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGNvbmNhdCA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBmaWxsIDogJ2EgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGluY2x1ZGUgQmxpdC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmb2xkaW5nX21hcCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZm9sZF9tYXAgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pIC0+ICdhY2MgKiAnYiB0XG4gIHZhbCBtYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBpdGVyaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmb2xkaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOigoaW50IC0+ICdiIC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmb2xkaW5nX21hcGlcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYiB0XG5cbiAgdmFsIGZvbGRfbWFwaVxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdhY2MgKiAnYiB0XG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pIC0+IGluaXQ6J2FjYyAtPiAnYWNjXG4gIHZhbCBzb3J0IDogP3BvczppbnQgLT4gP2xlbjppbnQgLT4gJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBzdGFibGVfc29ydCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseSA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgY29uY2F0X21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIHQpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGNvbmNhdF9tYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIHQpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25pX3RmIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHJhbnNwb3NlIDogJ2EgdCB0IC0+ICdhIHQgdCBvcHRpb25cbiAgdmFsIHRyYW5zcG9zZV9leG4gOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBub3JtYWxpemUgOiAnYSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+ICdhIHRcbiAgdmFsIG5nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAnYSBvcHRpb24gdCAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgaXRlcjJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBtYXAyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICdjIHRcblxuICB2YWwgZm9sZDJfZXhuXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdiIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYiAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9yX2FsbDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBzd2FwIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXYgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXBpIDogJ2EgbGlzdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICdhIHQgLT4gZjooKCdhIC0+ICdhKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhXG4gIHZhbCBmaW5kX21hcF9leG4gOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludCAqICdhXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZVxuICAgIDogICdhIHRcbiAgICAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhICogJ2EpIG9wdGlvblxuXG4gIHZhbCByZWR1Y2UgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZWR1Y2VfZXhuIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhXG4gIHZhbCBwZXJtdXRlIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiKSB0IC0+ICdhIHQgKiAnYiB0XG4gIHZhbCBzb3J0ZWRfY29weSA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgbGFzdCA6ICdhIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCB0b19zZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgQ29yZV9zZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbmVuZFxuXG5pbmNsdWRlIChUIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBhcnJheSkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkludFxuXG4gIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkZsb2F0XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBfIChNIDogUykgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF9cblxuICBpbmNsdWRlIFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAncGVybSkgdCA6PSAoJ2EsICdwZXJtKSB0X1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgKCdhLCAtJ3Blcm0pIHRfID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBfIChNIDogUGVybWlzc2lvbmVkKSA6IHNpZ1xuICB0eXBlICdhIHRfXG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAnYSB0XyA9ICgnYSwgcmVhZF93cml0ZSkgdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFR5cGVyZXBfbGliLlN0ZFxuaW5jbHVkZSBCYXNlLkxpc3RcblxudHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3NvY1xuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAqICdiKSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgY29tcGFyZSAodHlwZSBhIGIpIGNvbXBhcmVfYSBjb21wYXJlX2IgPSBbJWNvbXBhcmU6IChhICogYikgbGlzdF1cbmVuZFxuXG5sZXQgdG9fc3RyaW5nIH5mIHQgPVxuICBTZXhwbGliLlNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biB4IC0+IFNleHBsaWIuU2V4cC5BdG9tIHgpIChtYXAgdCB+ZikpXG47O1xuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RcbmxldCBnZW5fbm9uX2VtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X25vbl9lbXB0eVxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF93aXRoX2xlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciB+bGVuZ3RoXG47O1xuXG5sZXQgZ2VuX2ZpbHRlcmVkID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X2ZpbHRlcmVkXG5sZXQgZ2VuX3Blcm11dGF0aW9ucyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9wZXJtdXRhdGlvbnNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmxpc3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmxpc3RcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNodGJsX2ludGZcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gSGFzaHRibF9pbnRmLk1lcmdlX2ludG9fYWN0aW9uXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIENyZWF0b3JzID0gSGFzaHRibC5DcmVhdG9yc1xuXG5pbmNsdWRlIChcbiAgSGFzaHRibCA6XG4gIHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBCYXNlLkhhc2h0YmwuU193aXRob3V0X3N1Ym1vZHVsZXMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWRcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICAgIGdyb3VwXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgfmdldF9kYXRhXG4gICAgICB+Y29tYmluZVxuICAgICAgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX3N0YWJsZSA9IFNfc3RhYmxlIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gS2V5X2JpbmFibGVcbm1vZHVsZSB0eXBlIEtleV9zdGFibGUgPSBLZXlfc3RhYmxlXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibC5Qb2x5XG5cbiAgbGV0IHZhbGlkYXRlID0gdmFsaWRhdGVcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGYzZTQ0NWMtNDk5Mi0xMWU2LWEyNzktMzcwM2JlMzExZTdiXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiQ29yZV9oYXNodGJsLmJpbl9yZWFkX3RfOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuXG4gIHR5cGUga2V5ID0gVC5LZXkudFxuICB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2EgdCA9IChULktleS50LCAnYSkgaGFzaHRibFxuICB0eXBlICdhIGtleV8gPSBULktleS50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULktleS50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgKFxuICAgIEhhc2h0YmwgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgaGFzaHRibFxuICAgIGVuZClcblxuICBsZXQgZXF1YWwgPSBIYXNodGJsLmVxdWFsXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSB0ID0gaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfa2V5IHRcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IFBvbHkuc2V4cF9vZl90IFQuS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEtleS50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULktleVxuICAgICAgICBpbmNsdWRlIEtleSdcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9IEtleS50ICogJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZmFiYWIwYS00OTkyLTExZTYtOGNjYS05YmEyYzQ2ODZkOWVcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiSGFzaHRibC5iaW5fcmVhZF90OiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgIFslc2V4cF9vZjogS2V5LnRdXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICBzdHJ1Y3RcbiAgICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGhhc2h0YmwgaXMgcmVsaWVkIG9uIGJ5IHN0YWJsZSBtb2R1bGVzXG4gICAgICAgKGUuZy4gSGFzaHRhYmxlLlN0YWJsZSkgYW5kIGlzIHRoZXJlZm9yZSBhc3N1bWVkIHRvIGJlIHN0YWJsZS4gIFNvLCBpZiB0aGUga2V5IGFuZFxuICAgICAgIGRhdGEgY2FuIHByb3ZpZGUgYSBzdGFibGUgd2l0bmVzc2VzLCB0aGVuIHdlIGNhbiBzYWZlbHkgdGhlIGhhc2h0YmwgaXMgYWxzb1xuICAgICAgIHN0YWJsZS4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgZGF0YSkgKF9kYXRhX3N0YWJsZV93aXRuZXNzIDogZGF0YSBTdGFibGVfd2l0bmVzcy50KVxuICAgICAgOiBkYXRhIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgPVxuICAgICAgbGV0IChfIDoga2V5IFN0YWJsZV93aXRuZXNzLnQpID0gS2V5Jy5zdGFibGVfd2l0bmVzcyBpblxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5XG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfc3RhYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgIGxldCBoYXNoYWJsZSA9XG4gICAgICB7IEhhc2hhYmxlLmhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChLZXkgOiBLZXkpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZSAoS2V5IDogS2V5X3N0YWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGUgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXkpXG5lbmRcblxubW9kdWxlIE0gPSBIYXNodGJsLk1cblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCA9IHN0cnVjdFxuICBpbmNsdWRlIChIYXNodGJsIDogSGFzaHRibC5Gb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcblxuICBtb2R1bGUgdHlwZSBNX3F1aWNrY2hlY2sgPSBNX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfYWxpc3Rfb3B0aW9uIG0gYWxpc3QgPSBSZXN1bHQub2sgKG9mX2FsaXN0X29yX2Vycm9yIG0gYWxpc3QpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19nZW5lcmF0b3JfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcCB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2sub2JzZXJ2ZXI6IChLZXkudCAqIGRhdGEpIExpc3QudF0gfD4gUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCB+Zjp0b19hbGlzdFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19zaHJpbmtlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5zaHJpbmtlcjogKEtleS50ICogZGF0YSkgTGlzdC50XVxuICAgIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgICAgfmY6KG9mX2FsaXN0X29wdGlvbiAobW9kdWxlIEtleSkpXG4gICAgICAgICB+Zl9pbnZlcnNlOnRvX2FsaXN0XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuaW5jbHVkZSBCYXNlLkhhc2hfc2V0XG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX3N0YWJsZSA9IFNfc3RhYmxlIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBIYXNodGJsLktleV9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gSGFzaHRibC5LZXlcbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gSGFzaHRibC5LZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgRWx0X3N0YWJsZSA9IEhhc2h0YmwuS2V5X3N0YWJsZVxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgZWx0ID0gVC5FbHQudFxuICB0eXBlIG5vbnJlYyB0ID0gZWx0IHRcblxuICBsZXQgZXF1YWwgPSBlcXVhbFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gVC5FbHQudFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFBvbHkuc2V4cF9vZl90IFQuRWx0LnNleHBfb2ZfdCB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgWC50X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVC5FbHRcbiAgICAgICAgaW5jbHVkZSBYXG4gICAgICBlbmRcblxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImFkMzgxNjcyLTQ5OTItMTFlNi05ZTM2LWI3NmRjOGNkNDY2ZlwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNoX3NldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciA9IGl0ZXJcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgdiA9IG5leHQgKCkgaW5cbiAgICAgICAgICBhZGQgdCB2XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICBzdHJ1Y3RcbiAgICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGhhc2hfc2V0IGlzIHVzZWQgaW4gdGhlIHN0YWJsZSBtb2R1bGVzIGJlbG93LCBzbyBpdCdzXG4gICAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBlbHQgaXMgc3RhYmxlKSAuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIGxldCAoXyA6IGVsdCBTdGFibGVfd2l0bmVzcy50KSA9IFguc3RhYmxlX3dpdG5lc3MgaW5cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9zdGFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9zdGFibGUgKEVsdCA6IEVsdF9zdGFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuZW5kXG5cbmxldCBoYXNoYWJsZSA9IFByaXZhdGUuaGFzaGFibGVcbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiBLZXkudCBMaXN0MC50XVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6KG9mX2xpc3QgKG1vZHVsZSBLZXkpKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5vYnNlcnZlcjogS2V5LnQgTGlzdDAudF0gfD4gUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCB+Zjp0b19saXN0XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLnNocmlua2VyOiBLZXkudCBMaXN0MC50XVxuICB8PiBRdWlja2NoZWNrLlNocmlua2VyLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpIH5mX2ludmVyc2U6dG9fbGlzdFxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGludGVyZmFjZXMgdXNlZCBpbiB7eyFNYXB9W01hcF19LiBTZWUgdGhvc2UgZG9jcyBmb3IgYSBkZXNjcmlwdGlvblxuICAgIG9mIHRoZSBkZXNpZ24uXG5cbiAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIG1vZHVsZSB0eXBlc1xuICAgIFt7Q3JlYXRvcnMsQWNjZXNzb3JzfXsxLDIsMyxfZ2VuZXJpYyxfd2l0aF9jb21wYXJhdG9yfV0uIEl0IHVzZXMgY2hlY2sgZnVuY3RvcnMgdG9cbiAgICBlbnN1cmUgdGhhdCBlYWNoIG1vZHVsZSB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFtfZ2VuZXJpY10gb25lLlxuXG4gICAgV2UgbXVzdCB0cmVhdCBbQ3JlYXRvcnNdIGFuZCBbQWNjZXNzb3JzXSBzZXBhcmF0ZWx5LCBiZWNhdXNlIHdlIHNvbWV0aW1lcyBuZWVkIHRvXG4gICAgY2hvb3NlIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiB0aGVpciBbb3B0aW9uc10uIEluIHBhcnRpY3VsYXIsIFtNYXBdIGl0c2VsZlxuICAgIG1hdGNoZXMgW0NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JdIGJ1dCBbQWNjZXNzb3JzM10gKHdpdGhvdXQgY29tcGFyYXRvcikuXG4qKVxuXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIE1hcCA9IEJhc2UuTWFwXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gTWFwLk9yX2R1cGxpY2F0ZVxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBUcmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIEtleV9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIGtleV9zZXRcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIGtleSBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yc19nZW5lcmljXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXksICd2KSBIYXNodGJsLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW1NldC50XS4gKilcbiAgdmFsIG9mX2tleV9zZXRcbiAgICA6ICAoJ2sga2V5LCAnY21wIGNtcCkgQmFzZS5TZXQudFxuICAgIC0+IGY6KCgnayBrZXkgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICdrIGtleSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnYSBjbXBcbiAgdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChLZXkgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICdhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICdiIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAnYiB0XG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9IEtleS50XG4gICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoSyA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgKydhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAnYiB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9IChLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gS2V5LnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoS2V5IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICBLZXkudCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgS2V5LnQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTX3BsYWluIHdpdGggbW9kdWxlIEtleSA6PSBLZXlcbiAgaW5jbHVkZSBTZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIEJpbmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuTWFwLkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuTWFwLk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIGJpbl9pb10gXX0gKilcblxuICB2YWwgYmluX3NoYXBlX21fX3QgOiAoJ2EsICdjKSBLZXlfYmluX2lvLnQgLT4gQmluX3Byb3QuU2hhcGUudCAtPiBCaW5fcHJvdC5TaGFwZS50XG5cbiAgdmFsIGJpbl9zaXplX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5TaXplLnNpemVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuXG4gIHZhbCBiaW5fd3JpdGVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LldyaXRlLndyaXRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuXG4gIHZhbCBiaW5fcmVhZF9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlJlYWQucmVhZGVyXG4gICAgLT4gKGludCAtPiAoJ2EsICdiLCAnYykgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZSBtYXBzLFxuICAgICAgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gaW50IE1hcC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSBdfSAqKVxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICB2YWwgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgIDogIChtb2R1bGUgU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgU3RhYmxlX3dpdG5lc3MudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgU3RhYmxlX3dpdG5lc3MudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gTWFwX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiAoaW50LCBzdHJpbmcpIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwMDY3NGJlOWZlOGRmZTllOWFkNDc2MDY3ZDdkODEwMSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBtYXAgKGssIGRpZmYpIH5mMSB+ZjIgPVxuICAgICAgICBsZXQgayA9IGYxIGsgaW5cbiAgICAgICAgbGV0IGRpZmYgPVxuICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgIHwgYExlZnQgdiAtPiBgTGVmdCAoZjIgdilcbiAgICAgICAgICB8IGBSaWdodCB2IC0+IGBSaWdodCAoZjIgdilcbiAgICAgICAgICB8IGBVbmVxdWFsICh2MSwgdjIpIC0+IGBVbmVxdWFsIChmMiB2MSwgZjIgdjIpXG4gICAgICAgIGluXG4gICAgICAgIGssIGRpZmZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtYXBfZGF0YSB0IH5mID0gbWFwIHQgfmYxOkZuLmlkIH5mMjpmXG5cbiAgICAgIGxldCBsZWZ0IChfa2V5LCBkaWZmKSA9XG4gICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICB8IGBMZWZ0IHggfCBgVW5lcXVhbCAoeCwgXykgLT4gU29tZSB4XG4gICAgICAgIHwgYFJpZ2h0IF8gLT4gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHJpZ2h0IChfa2V5LCBkaWZmKSA9XG4gICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IEJhc2UuTWFwLk1lcmdlX2VsZW1lbnRcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrX2dlbiB2X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IG9ic190cmVlIGtfb2JzIHZfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm1hcF90cmVlIGtfb2JzIHZfb2JzXG5cbiAgbGV0IHNocl90cmVlIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrX3NociB2X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RfbVxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm1hcF90XG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwLlVzaW5nX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBGb3JfcXVpY2tjaGVja1xuXG4gIGxldCBvZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmk6KEhhc2h0YmwuaXRlcmkgaGFzaHRibCkgd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNYXAub2ZfaGFzaHRibF9leG46IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBrZXlcbiAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgdHJlZV9vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICB0b190cmVlIChvZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsKVxuICA7O1xuXG4gIGxldCBrZXlfc2V0IH5jb21wYXJhdG9yIHQgPVxuICAgIEJhc2UuU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChMaXN0LnRvX2FycmF5IChrZXlzIHQpKVxuICA7O1xuXG4gIGxldCBrZXlfc2V0X29mX3RyZWUgfmNvbXBhcmF0b3IgdCA9IGtleV9zZXQgfmNvbXBhcmF0b3IgKG9mX3RyZWUgfmNvbXBhcmF0b3IgdClcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID1cbiAgICBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvcjooQmFzZS5TZXQuY29tcGFyYXRvciBrZXlfc2V0KVxuICAgICAgKEFycmF5Lm1hcCAoQmFzZS5TZXQudG9fYXJyYXkga2V5X3NldCkgfmY6KGZ1biBrZXkgLT4ga2V5LCBmIGtleSkpXG4gIDs7XG5cbiAgbGV0IHRyZWVfb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gdG9fdHJlZSAob2Zfa2V5X3NldCBrZXlfc2V0IH5mKVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgTWFwLkFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE1hcC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrXG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYylcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBxdWlja2NoZWNrX29ic2VydmVyIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBxdWlja2NoZWNrX3Nocmlua2VyIGsgdlxuICBsZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0IHQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KVxuZW5kXG5cbmxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KSB0XG5sZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfa2V5X3NldFxubGV0IGhhc2hfZm9sZF9kaXJlY3QgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3RcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgY29tcGFyYXRvcl9zID0gQmFzZS5NYXAuY29tcGFyYXRvcl9zXG5cbnR5cGUgJ2sga2V5ID0gJ2tcbnR5cGUgJ2MgY21wID0gJ2NcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYXBcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfdHJlZSBtID0gTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNYXAudFxuXG4gIGluY2x1ZGVcbiAgICBNYXAuQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdhLCAnYiwgJ2MpIE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgTWFwLldpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrIGtleVxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2MgY21wXG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5lbmQpXG5cbm1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG5cbmxldCBmaW5kX29yX2Vycm9yIHQga2V5ID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgU29tZSBkYXRhIC0+IE9rIGRhdGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcImtleSBub3QgZm91bmRcIiB+Xzooa2V5IDoga2V5KV1cbjs7XG5cbmxldCBtZXJnZV9za2V3ZWQgPSBNYXAubWVyZ2Vfc2tld2VkXG5sZXQgb2ZfaGFzaHRibF9leG4gbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0XG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICB2YWwgdF9vZl9zZXhwXG4gICAgOiAgKEJhc2UuU2V4cC50IC0+ICdhIEtleS50KVxuICAgIC0+IChCYXNlLlNleHAudCAtPiAnYilcbiAgICAtPiBCYXNlLlNleHAudFxuICAgIC0+ICgnYSwgJ2IsIF8pIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZCA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciA9IEtleS5jb21wYXJhdG9yXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEtleSlcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBvZl90cmVlIHRyZWUgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgc2luZ2xldG9uIGsgdiA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5ID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3RfZXhuIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2hhc2h0YmxfZXhuIGhhc2h0YmwgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmxcbiAgbGV0IG9mX2FsaXN0X211bHRpIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdFxuXG4gIGxldCBvZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmZcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpXG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0IGtleV9zZXQgfmZcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgdHJhbnNwb3NlX2tleXMgdCA9IFVzaW5nX2NvbXBhcmF0b3IudHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3IgdFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5fayBnZW5fdiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBnZW5fayBnZW5fdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEtleSA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIG9wZW4gVHJlZVxuXG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIGEgYiBjID0gdF9vZl9zZXhwX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZW1wdHkgPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gYSA9IHNpbmdsZXRvbiBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gb2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gb2Zfc2VxdWVuY2VfZXhuIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHMgPSBvZl9zZXF1ZW5jZV9tdWx0aSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPSBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0IGEgPSBvZl9hbGlzdCBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gb2ZfYWxpc3Rfb3JfZXJyb3IgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZXhuIGEgPSBvZl9hbGlzdF9leG4gYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhID0gb2ZfYWxpc3RfbXVsdGkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IG9mX2FsaXN0X3JlZHVjZSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgPSBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsIH5nZXRfa2V5ID1cbiAgICBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gb2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBpbnZhcmlhbnRzIGEgPSBpbnZhcmlhbnRzIGEgfmNvbXBhcmF0b3JcbiAgbGV0IGlzX2VtcHR5IGEgPSBpc19lbXB0eSBhXG4gIGxldCBsZW5ndGggYSA9IGxlbmd0aCBhXG4gIGxldCBzZXQgYSB+a2V5IH5kYXRhID0gc2V0IGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkIGEgfmtleSB+ZGF0YSA9IGFkZCBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZF9leG4gYSB+a2V5IH5kYXRhID0gYWRkX2V4biBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgPSBhZGRfbXVsdGkgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmVfbXVsdGkgYSBiID0gcmVtb3ZlX211bHRpIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZF9tdWx0aSBhIGIgPSBmaW5kX211bHRpIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgY2hhbmdlIGEgYiB+ZiA9IGNoYW5nZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHVwZGF0ZSBhIGIgfmYgPSB1cGRhdGUgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX2V4biBhIGIgPSBmaW5kX2V4biBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmQgYSBiID0gZmluZCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZSBhIGIgPSByZW1vdmUgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBtZW0gYSBiID0gbWVtIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgaXRlcl9rZXlzID0gaXRlcl9rZXlzXG4gIGxldCBpdGVyID0gaXRlclxuICBsZXQgaXRlcmkgPSBpdGVyaVxuICBsZXQgaXRlcmlfdW50aWwgPSBpdGVyaV91bnRpbFxuICBsZXQgaXRlcjIgYSBiIH5mID0gaXRlcjIgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgZm9sZF91bnRpbCA9IGZvbGRfdW50aWxcbiAgbGV0IGZvbGRfcmlnaHQgPSBmb2xkX3JpZ2h0XG4gIGxldCBmb2xkMiBhIGIgfmluaXQgfmYgPSBmb2xkMiBhIGIgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9rZXlzIGEgfmYgPSBmaWx0ZXJfa2V5cyBhIH5mXG4gIGxldCBmaWx0ZXIgYSB+ZiA9IGZpbHRlciBhIH5mXG4gIGxldCBmaWx0ZXJpIGEgfmYgPSBmaWx0ZXJpIGEgfmZcbiAgbGV0IGZpbHRlcl9tYXAgYSB+ZiA9IGZpbHRlcl9tYXAgYSB+ZlxuICBsZXQgZmlsdGVyX21hcGkgYSB+ZiA9IGZpbHRlcl9tYXBpIGEgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwIHQgfmZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZlxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25fdGYgdCB+ZlxuICBsZXQgY29tYmluZV9lcnJvcnMgdCA9IGNvbWJpbmVfZXJyb3JzIHQgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGEgYiBjID0gY29tcGFyZV9kaXJlY3QgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGVxdWFsIGEgYiBjID0gZXF1YWwgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGtleXMgPSBrZXlzXG4gIGxldCBkYXRhID0gZGF0YVxuICBsZXQgdG9fYWxpc3QgPSB0b19hbGlzdFxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsID0gc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5jb21wYXJhdG9yXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBmb2xkX3N5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+ZiB+aW5pdCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBtZXJnZSBhIGIgfmYgPSBtZXJnZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgPSBtZXJnZV9za2V3ZWQgYSBiIH5jb21iaW5lIH5jb21wYXJhdG9yXG4gIGxldCBtaW5fZWx0ID0gbWluX2VsdFxuICBsZXQgbWluX2VsdF9leG4gPSBtaW5fZWx0X2V4blxuICBsZXQgbWF4X2VsdCA9IG1heF9lbHRcbiAgbGV0IG1heF9lbHRfZXhuID0gbWF4X2VsdF9leG5cbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IHNwbGl0IGEgYiA9IHNwbGl0IGEgYiB+Y29tcGFyYXRvclxuICBsZXQgc3BsaXRfbGVfZ3QgYSBiID0gc3BsaXRfbGVfZ3QgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdF9sdF9nZSBhIGIgPSBzcGxpdF9sdF9nZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPSByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyYXRvclxuICBsZXQgY2xvc2VzdF9rZXkgYSBiIGMgPSBjbG9zZXN0X2tleSBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgbnRoID0gbnRoXG4gIGxldCBudGhfZXhuID0gbnRoX2V4blxuICBsZXQgcmFuayBhIGIgPSByYW5rIGEgYiB+Y29tcGFyYXRvclxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUcmF2ZXJzYWxzID0gTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgPSBUcmF2ZXJzYWxzLm1hcGlcbiAgICBsZXQgZmlsdGVyX21hcGkgPSBUcmF2ZXJzYWxzLmZpbHRlcl9tYXBpXG4gIGVuZFxuXG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0XG4gIGxldCBtYXBfa2V5cyB0IH5mID0gbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdHJhbnNwb3NlX2tleXMgdCA9IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yIH5jb21wYXJhdG9yIHRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9wbGFpbiAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXlfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEtleSlcbiAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKEtleV9TMSlcblxuICB0eXBlICsndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IHNleHBfb2ZfdCBLZXkuc2V4cF9vZl90IHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBtYXAgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3IgaW5cbiAgaWYgaW52YXJpYW50cyBtYXBcbiAgdGhlbiBtYXBcbiAgZWxzZSAoXG4gICAgKCogVGhlIGludmFyaWFudHMgYXJlIGJyb2tlbiwgYnV0IHdlIGNhbiBzdGlsbCB0cmF2ZXJzZSB0aGUgc3RydWN0dXJlLiAqKVxuICAgIG1hdGNoIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpOihpdGVyaSBtYXApIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBfa2V5IC0+IGZhaWx3aXRoIFwiTWFwLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIG1hcFwiKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDcmVhdG9ycyAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIG1hcFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIF8gY21wdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNtcHYgdDEgdDJcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gICAgICB0eXBlICgnYSwgJ2IpIGVsID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImI3ZDdiMWEwLTQ5OTItMTFlNi04YTMyLWJiYjIyMWZhMDI1Y1wiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5NYXBcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAoJ2ssICsndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gS2V5X2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZV9oYXNoYWJsZSA9IEtleV9iaW5hYmxlX2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZVxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IEtleV9iaW5faW9cblxubW9kdWxlIFByb3ZpZGVfYmluX2lvIChLZXkgOiBLZXlfYmluX2lvLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLZXkudCwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlICd2IGVsID0gS2V5LnQgKiAndiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImRmYjMwMGY4LTQ5OTItMTFlNi05YzE1LTczYTJhYzZiODE1Y1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpLZXkuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBtYXAgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBrZXkgYW5kIGRhdGEgYXJlIHN0YWJsZSkgLiAqKVxuICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgZGF0YSkgKF9kYXRhX3N0YWJsZV93aXRuZXNzIDogZGF0YSBTdGFibGVfd2l0bmVzcy50KVxuICAgIDogKEtleS50LCBkYXRhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0IFN0YWJsZV93aXRuZXNzLnRcbiAgICA9XG4gICAgbGV0IChfIDogS2V5LnQgU3RhYmxlX3dpdG5lc3MudCkgPSBLZXkuc3RhYmxlX3dpdG5lc3MgaW5cbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIENyZWF0b3JzIChLZXlfUzEpXG5cbiAgdHlwZSBrZXkgPSBLZXkudFxuICB0eXBlICgnYSwgJ2IsICdjKSBtYXAgPSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICd2IHQgPSAoa2V5LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXknIDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90ICh0eXBlIGEpIGhhc2hfZm9sZF9kYXRhIHN0YXRlICh0IDogYSB0KSA9XG4gICAgICBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgS2V5Jy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgS2V5XG4gICAgICBpbmNsdWRlIEtleSdcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgICBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgS2V5XG4gICAgICBpbmNsdWRlIEtleSdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5X3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuXG4gIG1vZHVsZSBfID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlXG4gICAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfYmluX3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfYmluX3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIEZvcl9kZXJpdmluZyA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1hcC5NXG5cbiAgbGV0IGJpbl9zaGFwZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2hhcGVfdFxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2l6ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fd3JpdGVfdFxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fcmVhZF90XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfbV9fdF9fICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5fX2Jpbl9yZWFkX3RfX1xuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9nZW5lcmF0b3JcbiAgICA9XG4gICAgcXVpY2tjaGVja19nZW5lcmF0b3IgKG1vZHVsZSBLZXkpIEtleS5xdWlja2NoZWNrX2dlbmVyYXRvciB2X2dlbmVyYXRvclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfb2JzZXJ2ZXJcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBLZXkucXVpY2tjaGVja19vYnNlcnZlciB2X29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9zaHJpbmtlclxuICAgID1cbiAgICBxdWlja2NoZWNrX3Nocmlua2VyIEtleS5xdWlja2NoZWNrX3Nocmlua2VyIHZfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBNYXAuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoTWFwIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdClcbmVuZFxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSkgaW5cbiAgICBNLnN0YWJsZV93aXRuZXNzXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUcmVlXG5cbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IG9mX2hhc2h0YmxfZXhuID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuXG4gIGxldCBrZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0X29mX3RyZWVcbiAgbGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2Zfa2V5X3NldFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAoa2V5LCAnYSwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ1xuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nX3N0YWJsZVxuICAgIG1vZHVsZSBNYWtlIChLZXkgOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChLZXkpXG5cbiAgICBtb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICBpbmNsdWRlIFNcblxuICAgICAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiAnYSBTdGFibGVfd2l0bmVzcy50IC0+ICdhIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChLZXlfc3RhYmxlIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1ha2UgKEtleV9zdGFibGUpXG4gICAgICAgIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5X3N0YWJsZSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IFN5bW1ldHJpY19kaWZmX2VsZW1lbnQuU3RhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuTWF5YmVfYm91bmQudCA9XG4gICAgICB8IEluY2wgb2YgJ2FcbiAgICAgIHwgRXhjbCBvZiAnYVxuICAgICAgfCBVbmJvdW5kZWRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgSW5jbCB4IC0+IEluY2wgKGYgeClcbiAgICAgIHwgRXhjbCB4IC0+IEV4Y2wgKGYgeClcbiAgICAgIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQmFzZS5NYXliZV9ib3VuZFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVjEudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHBdXG5cbmxldCBjb21wYXJlX29uZV9zaWRlZCB+c2lkZSBjb21wYXJlX2EgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IFVuYm91bmRlZCwgVW5ib3VuZGVkIC0+IDBcbiAgfCBVbmJvdW5kZWQsIF8gLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IC0xXG4gICAgIHwgYFVwcGVyIC0+IDEpXG4gIHwgXywgVW5ib3VuZGVkIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAxXG4gICAgIHwgYFVwcGVyIC0+IC0xKVxuICB8IEluY2wgYTEsIEluY2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgRXhjbCBhMSwgRXhjbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBJbmNsIGExLCBFeGNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAtMVxuICAgICAgfCBgVXBwZXIgLT4gMSlcbiAgICBlbHNlIGNcbiAgfCBFeGNsIGExLCBJbmNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAxXG4gICAgICB8IGBVcHBlciAtPiAtMSlcbiAgICBlbHNlIGNcbjs7XG5cbm1vZHVsZSBBc19sb3dlcl9ib3VuZCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgTG93ZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcblxubW9kdWxlIEFzX3VwcGVyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBVcHBlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IUNvcmUuU2V0fVtTZXRdfS4gU2VlIHRoZVxuICAgIHshTWFwfSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBkZXNpZ24uXG5cbiAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIG1vZHVsZSB0eXBlc1xuICAgIFt7Q3JlYXRvcnMsQWNjZXNzb3JzfXswLDEsMixfZ2VuZXJpYyxfd2l0aF9jb21wYXJhdG9yfV0uIEl0IHVzZXMgY2hlY2sgZnVuY3RvcnMgdG9cbiAgICBlbnN1cmUgdGhhdCBlYWNoIG1vZHVsZSB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFtfZ2VuZXJpY10gb25lLlxuXG4gICAgV2UgbXVzdCB0cmVhdCBbQ3JlYXRvcnNdIGFuZCBbQWNjZXNzb3JzXSBzZXBhcmF0ZWx5LCBiZWNhdXNlIHdlIHNvbWV0aW1lcyBuZWVkIHRvXG4gICAgY2hvb3NlIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiB0aGVpciBbb3B0aW9uc10uIEluIHBhcnRpY3VsYXIsIFtTZXRdIGl0c2VsZlxuICAgIG1hdGNoZXMgW0NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JdIGJ1dCBbQWNjZXNzb3JzMl0gKHdpdGhvdXQgY29tcGFyYXRvcikuXG4qKVxuXG4oKlxuICAgQ1JzIGFuZCBjb21tZW50cyBhYm91dCBbU2V0XSBmdW5jdGlvbnMgZG8gbm90IGJlbG9uZyBpbiB0aGlzIGZpbGUuICBUaGV5IGJlbG9uZyBuZXh0XG4gICB0byB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24gaW4gc2V0Lm1saS5cbiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgVHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcbm1vZHVsZSBDb250YWluZXIgPSBCYXNlLkNvbnRhaW5lclxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBTZXQuRWx0X3BsYWluXG5cbm1vZHVsZSB0eXBlIEVsdCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmRcblxuICB0eXBlICgndCwgJ2MpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAndCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYylcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLlNldC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLlNldC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2IpIEVsdF9iaW5faW8udFxuICAgIC0+IChpbnQgLT4gKCdhLCAnYikgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZVxuICAgICAgc2V0cywgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gU2V0Lk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICB2YWwgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgIDogIChtb2R1bGUgU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFN0YWJsZV93aXRuZXNzLnRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gU2V0LldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFNldC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCB0b19tYXBcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooKCdhIGVsdCAtPiAnYilbQGxvY2FsXSkgLT4gKCdhIGVsdCwgJ2IsICdjbXAgY21wKSBCYXNlLk1hcC50XG4gICAgICApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnYSBlbHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAoJ2EsICdjbXAsICdhIGVsdCBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgXykgSGFzaHRibC50IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW01hcC50XS4gKilcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhIGVsdCwgXywgJ2NtcCBjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnZWx0LCAnY21wKSB0XG4gIHR5cGUgKCdlbHQsICdjbXApIHRyZWVcbiAgdHlwZSAnZWx0IGVsdFxuICB0eXBlICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfcGxhaW5fdHJlZSAoRWx0IDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gdFxuICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSBFbHQudFxuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoRWx0IDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IEVsdC50IFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IEVsdC50IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIFNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTIHdpdGggbW9kdWxlIEVsdCA6PSBFbHRcbiAgaW5jbHVkZSBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbm9wZW4gU2V0X2ludGZcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEVsdFxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBFbHRfYmluYWJsZVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGVsdF9nZW5cbiAgOztcblxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBlbHRfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNldF90IGVsdF9vYnNcbiAgbGV0IG9ic190cmVlIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3RyZWUgZWx0X29ic1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBlbHRfc2hyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90IGVsdF9zaHJcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3IgZWx0X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBtIGVsdF9nZW4gPVxuICBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBlbHRfZ2VuXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdG9fbWFwIH5jb21wYXJhdG9yIHQgPSBNYXAub2Zfa2V5X3NldCAoU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB0IH5jb21wYXJhdG9yKVxuICBsZXQgb2ZfbWFwX2tleXMgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWUgKE1hcC5rZXlfc2V0IG0pXG5cbiAgbGV0IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhzZXQgPVxuICAgIEhhc2hfc2V0LmZvbGQgaHNldCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBIYXNodGJsLmZvbGQgaGFzaHRibCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gfmtleTp4IH5kYXRhOl8gdCAtPlxuICAgICAgYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWVcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFNldC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudClcbmVuZFxuXG50eXBlICdhIGNtcCA9ICdhXG50eXBlICdhIGVsdCA9ICdhXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgU2V0XG5cbiAgbGV0IG9mX3RyZWUgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbiAgbGV0IHRvX3RyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gIGxldCBzZXhwX29mX3QgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3RcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU2V0LkNyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnYSwgJ2IsICdjKSBTZXQuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFNldC5XaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCBtb2R1bGUgTmFtZWQgPSBTZXQuTmFtZWRcbmVuZClcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBTZXQuVXNpbmdfY29tcGFyYXRvclxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFRyZWUgOj0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZSlcblxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNoX3NldCBoc2V0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNodGJsX2tleXMgaGFzaHRibCB+Y29tcGFyYXRvcilcbiAgOztcbmVuZFxuXG5sZXQgdG9fbWFwID0gTWFwLm9mX2tleV9zZXRcbmxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3JfcyA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvcl9zXG5sZXQgY29tcGFyYXRvciA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvclxubGV0IG9mX2hhc2hfc2V0IG0gaHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaHNldFxuXG5sZXQgb2ZfaGFzaHRibF9rZXlzIG0gaGFzaHRibCA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhhc2h0Ymxcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnYSBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCB0X29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IEJhc2UuU2V4cC50IC0+ICgnYSwgJ2NvbXBhcmF0b3IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wX1xuZW5kID0gc3RydWN0XG4gIG9wZW4gVXNpbmdfY29tcGFyYXRvclxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2NvbXBhcmF0b3IpIHRfID0gKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZSA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgJ2EgZWx0XyA9ICdhIEVsdC50XG4gIHR5cGUgJ2NtcCBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdClcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBzaW5nbGV0b24gZSA9IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCB1bmlvbl9saXN0IGwgPSB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGxcbiAgbGV0IG9mX2xpc3QgbCA9IG9mX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaCA9IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9hcnJheSBhID0gb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4c1xuICBsZXQgbWFwIHQgfmYgPSBtYXAgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZSAoVHJlZS50X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX1MxIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IFRyZWUuZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIGUgPSBUcmVlLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUubWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUuY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDJcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZS5lcXVhbCB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdCBsID0gVHJlZS5vZl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBUcmVlLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBUcmVlLm9mX2hhc2hfc2V0IGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gVHJlZS5vZl9oYXNodGJsX2tleXMgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYXJyYXkgYSA9IFRyZWUub2ZfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVHJlZS5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgdW5pb25fbGlzdCBsID0gVHJlZS51bmlvbl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzID0gVHJlZS5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0ID0gdFxuICBsZXQgb2ZfbWFwX2tleXMgPSBUcmVlLm9mX21hcF9rZXlzXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSBlbHQgfmNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoRWx0X1MxKVxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHQgPSBUcmVlLnNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IFgudF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6RWx0X1MxLmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBzZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgaW5cbiAgaWYgaW52YXJpYW50cyBzZXRcbiAgdGhlbiBzZXRcbiAgZWxzZVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZVxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChmb2xkIHNldCB+aW5pdDooVHJlZS5lbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgICAgICBpZiBUcmVlLm1lbSBhY2MgZWx0IH5jb21wYXJhdG9yXG4gICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V0LmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIHNldFwiXG4gICAgICAgICBlbHNlIFRyZWUuYWRkIGFjYyBlbHQgfmNvbXBhcmF0b3IpKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IENvbXBhcmF0b3IuUG9seVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHQpXG5cbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIFslc2V4cF9vZjogX10gdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuICA7O1xuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODhiY2M0NzgtNDk5Mi0xMWU2LWE5NWQtZmY0ODMxYWNmNDEwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBUcmVlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKENvbXBhcmF0b3IuUG9seSlcblxuICAgIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFRyZWUuc2V4cF9vZl90IHNleHBfb2ZfZWx0IFslc2V4cF9vZjogX10gdFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBlbHRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gRWx0X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEVsdCA6IEVsdF9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IF8gPSBiaW5fZWxcblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OTg5Mjc4ZS00OTkyLTExZTYtOGY0YS02Yjg5Nzc2YjFlNTNcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBzZXQgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBlbHQgaXMgc3RhYmxlKS4gKilcbiAgbGV0IHN0YWJsZV93aXRuZXNzIDogKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgIGxldCAoXyA6IEVsdC50IFN0YWJsZV93aXRuZXNzLnQpID0gRWx0LnN0YWJsZV93aXRuZXNzIGluXG4gICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0ID0gRWx0XG4gIG1vZHVsZSBFbHRfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEVsdClcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0X1MxKVxuXG4gIHR5cGUgKCdhLCAnYikgc2V0ID0gKCdhLCAnYikgdFxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHNldFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgRWx0LnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9IHN0cnVjdFxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZSB0XG5cbiAgICBsZXQgaGFzaCB0ID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAoaGFzaF9mb2xkX3QgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkpIHQpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoRWx0JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRWx0XG4gICAgICBpbmNsdWRlIEVsdCdcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgICBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRWx0XG4gICAgICBpbmNsdWRlIEVsdCdcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gcXVpY2tjaGVja19zaHJpbmtlclxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gU2V0Lk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEVsdCkgRWx0LnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBFbHQucXVpY2tjaGVja19vYnNlcnZlclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgRWx0LnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBTZXQuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoU2V0IDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5lbmRcblxubW9kdWxlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgU3RhYmxlX3dpdG5lc3NfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnRcbiAgZW5kXG5cbiAgbGV0IHN0YWJsZV93aXRuZXNzX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHQpIGluXG4gICAgTS5zdGFibGVfd2l0bmVzc1xuICA7O1xuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID0gKCdhLCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGVsdFxuICAgICAgdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gKGVsdCwgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBfd2l0aG91dF9jb21wYXJhdG9yIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdfc3RhYmxlXG4gICAgbW9kdWxlIE1ha2UgKEVsdCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdClcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgU1xuXG4gICAgICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChFbHRfc3RhYmxlIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHRfc3RhYmxlKVxuICAgICAgICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdF9zdGFibGUpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcbm1vZHVsZSBJbmZpeCA9IEJhc2UuQ29tcGFyYWJsZS5JbmZpeFxubW9kdWxlIENvbXBhcmlzb25zID0gQmFzZS5Db21wYXJhYmxlLkNvbXBhcmlzb25zXG5cbm1vZHVsZSBWYWxpZGF0ZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpIDogVmFsaWRhdGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGVcbiAgb3BlbiBNYXliZV9ib3VuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IEJhc2UuU2V4cC50b19zdHJpbmcgKFQuc2V4cF9vZl90IHQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWLmJvdW5kZWQgfm5hbWU6dG9fc3RyaW5nIH5sb3dlcjptaW4gfnVwcGVyOm1heCB+Y29tcGFyZTpULmNvbXBhcmUgdFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID0gdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4OlVuYm91bmRlZCB0XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID0gdmFsaWRhdGVfYm91bmQgfm1heCB+bWluOlVuYm91bmRlZCB0XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlX3dpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGUgKFQpXG4gIGluY2x1ZGUgVlxuXG4gICgqIFByZWFsbG9jYXRlIHRoZSBpbnRlcmVzdGluZyBib3VuZHMgdG8gbWluaW1pemUgYWxsb2NhdGlvbiBpbiB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFt2YWxpZGF0ZV8qXS4gKilcbiAgbGV0IGV4Y2xfemVybyA9IE1heWJlX2JvdW5kLkV4Y2wgVC56ZXJvXG4gIGxldCBpbmNsX3plcm8gPSBNYXliZV9ib3VuZC5JbmNsIFQuemVyb1xuICBsZXQgdmFsaWRhdGVfcG9zaXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fbmVnYXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmluY2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6aW5jbF96ZXJvIHRcbmVuZFxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQpXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLldpdGhfemVybyAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbiAgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLlBvbHkgKFQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIFZhbGlkYXRlIChDKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IENcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChDKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgZW5kKSA9XG4gIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBNXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgTVxuICAgIGVuZClcblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRfYmluYWJsZVxuICAgIChNIDogQmFzZS5Db21wYXJhYmxlLlMpIChYIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuaW5jbHVkZSAoQmFzZS5Db21wYXJhYmxlIDogV2l0aF9jb21wYXJlKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgIE1hcC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIFNldCA6XG4gICAgICAgIFNldC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUgZWx0IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoWCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gc3RydWN0XG4gICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5NYWtlIChYKVxuICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIG1vZHVsZSBNYXAgOlxuICAgICAgICAgIE1hcC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICAgICAgd2l0aCB0eXBlIGtleSA6PSBjb21wYXJhYmxlXG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBtb2R1bGUgU2V0IDpcbiAgICAgICAgICBTZXQuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgICAgIHdpdGggdHlwZSBlbHQgOj0gY29tcGFyYWJsZVxuICAgICAgICAgIHdpdGggdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChYIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFgpXG4gICAgICAgIG1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoWClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwiaW5jbHVkZSBMaXN0MCAoKiogQGlubGluZSAqKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIHN0YWdlZCB0byBpbmRpY2F0ZSB0aGF0IHJlYWwgd29yayAodGhlIGZ1bmN0b3IgYXBwbGljYXRpb24pIHRha2VzXG4gICBwbGFjZSBhZnRlciBhIHBhcnRpYWwgYXBwbGljYXRpb24uICopXG5sZXQgc3RhYmxlX2RlZHVwX3N0YWdlZCAodHlwZSBhKSB+KGNvbXBhcmUgOiBhIC0+IGEgLT4gaW50KVxuICA6IChhIGxpc3QgLT4gYSBsaXN0KSBCYXNlLlN0YWdlZC50XG4gID1cbiAgbGV0IG1vZHVsZSBTZXQgPVxuICAgIFNldC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICAgICgqIFtzdGFibGVfZGVkdXBfbGlzdF0gbmV2ZXIgY2FsbHMgdGhlc2UgKilcbiAgICAgIGxldCB0X29mX3NleHAgXyA9IGFzc2VydCBmYWxzZVxuICAgICAgbGV0IHNleHBfb2ZfdCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgZW5kKVxuICBpblxuICBCYXNlLlN0YWdlZC5zdGFnZSBTZXQuc3RhYmxlX2RlZHVwX2xpc3Rcbjs7XG5cbmxldCB6aXBfd2l0aF9yZW1haW5kZXIgPVxuICBsZXQgcmVjIHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIGFjYyB4cyB5cyA9XG4gICAgbWF0Y2ggeHMsIHlzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiByZXYgYWNjLCBOb25lXG4gICAgfCBmc3QsIFtdIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5GaXJzdCBmc3QpXG4gICAgfCBbXSwgc25kIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5TZWNvbmQgc25kKVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciAoKHgsIHkpIDo6IGFjYykgeHMgeXNcbiAgaW5cbiAgZnVuIHhzIHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIFtdIHhzIHlzXG47O1xuXG50eXBlIHNleHBfdGh1bmsgPSB1bml0IC0+IEJhc2UuU2V4cC50XG5cbmxldCBzZXhwX29mX3NleHBfdGh1bmsgeCA9IHggKClcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9mb3VuZCBvZiBzZXhwX3RodW5rICogQmFzZS5TdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX2lmX2R1cCB+Y29tcGFyZSA/KGNvbnRleHQgPSBcImV4bl9pZl9kdXBcIikgdCB+dG9fc2V4cCA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgfmNvbXBhcmUgdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZHVwIC0+IHJhaXNlIChEdXBsaWNhdGVfZm91bmQgKChmdW4gKCkgLT4gdG9fc2V4cCBkdXApLCBjb250ZXh0KSlcbjs7XG5cbmxldCBzbGljZSBhIHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgYSBzdGFydCBzdG9wXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzID0gTGlzdDAuc3RhYmxlX3dpdG5lc3MgW0BAYWxlcnQgXCItZm9yX2ludGVybmFsX3VzZV9vbmx5XCJdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25cblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSB+bm9uZSB+c29tZSB0ID1cbiAgbGV0IG1vZHVsZSBWID0gVmFsaWRhdGUgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBWLm5hbWUgXCJub25lXCIgKFYucHJvdGVjdCBub25lICgpKVxuICB8IFNvbWUgeCAtPiBWLm5hbWUgXCJzb21lXCIgKFYucHJvdGVjdCBzb21lIHgpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9wdGlvblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub3B0aW9uXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5vcHRpb25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuXG4gICAgKCogW3Vuc2FmZV92YWx1ZV0gaXMgb25seSBzYWZlIHRvIGNhbGwgd2hlbiBbaXNfbm9uZV0gcmV0dXJucyBbZmFsc2VdLiBUbyBhdm9pZFxuICAgICAgIHJlcGVhdGluZyB0aGUgW2lzX25vbmVdIGNoZWNrLCB3ZSBkZWNsYXJlIFtVbmNoZWNrZWRfc29tZV0uIFtVbmNoZWNrZWRfc29tZSB4XVxuICAgICAgIGhhcyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBhcyBbU29tZSB4XSwgYnV0IHRoZSB0eXBlIGhhcyBubyBbTm9uZV0gY2xhdXNlLlxuXG4gICAgICAgV2UgbWFrZSBzdXJlIGFsbCB0aGlzIHdvcmtzIHdpdGggdGVzdHMgb2YgW3Vuc2FmZV92YWx1ZV0gaW4gdGVzdF9vcHRpb24ubWwuXG5cbiAgICAgICBXZSB0cmllZCB1c2luZyBbT2JqLmZpZWxkXSBpbnN0ZWFkLiBJdCBnZW5lcmF0ZXMgbXVjaCB3b3JzZSBuYXRpdmUgY29kZSBkdWUgdG9cbiAgICAgICBmbG9hdCBhcnJheSByZXByZXNlbnRhdGlvbnMuICopXG5cbiAgICBtb2R1bGUgVW5jaGVja2VkX3NvbWUgPSBzdHJ1Y3RcbiAgICAgICgqIFdhcm5pbmcgMzcgdGVsbHMgdXMgW1VuY2hlY2tlZF9zb21lXSBpcyBuZXZlciB1c2VkIGFzIGEgY29uc3RydWN0b3IuIFRoaXMgaXNcbiAgICAgICAgIGludGVudGlvbmFsLCBzbyB3ZSBkaXNhYmxlIHRoZSB3YXJuaW5nLiAqKVxuICAgICAgdHlwZSAnYSB0ID0gVW5jaGVja2VkX3NvbWUgb2YgJ2EgW0BAb2NhbWwuYm94ZWRdIFtAQG9jYW1sLndhcm5pbmcgXCItMzdcIl1cbiAgICBlbmRcblxuICAgIGxldCB1bnNhZmVfdmFsdWUgKHR5cGUgYSkgKHQgOiBhIHQpIDogYSA9XG4gICAgICBsZXQgKFVuY2hlY2tlZF9zb21lIHZhbHVlKSA9IChPYmoubWFnaWMgdCA6IGEgVW5jaGVja2VkX3NvbWUudCkgaW5cbiAgICAgIHZhbHVlXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgTUx0b24gbGlicmFyeSBzZXQvZGlzam9pbnQuZnVuLCB3aGljaCBoYXMgdGhlXG4gICBmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZS5cbiopXG4oKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBIZW5yeSBDZWp0aW4sIE1hdHRoZXcgRmx1ZXQsIFN1cmVzaFxuICogICAgSmFnYW5uYXRoYW4sIGFuZCBTdGVwaGVuIFdlZWtzLlxuICpcbiAqIE1MdG9uIGlzIHJlbGVhc2VkIHVuZGVyIGEgQlNELXN0eWxlIGxpY2Vuc2UuXG4gKiBTZWUgdGhlIGZpbGUgTUx0b24tTElDRU5TRSBmb3IgZGV0YWlscy5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG4oKlxuICAge3ZcbiAgICAgICAgICAgUm9vdFxuICAgICAgICAgICAgIHxcbiAgICAgICAgICAgSW5uZXJcbiAgICAgICAgLyAuLiB8IC4uIFxcXG4gICAgIElubmVyIElubmVyIElubmVyXG4gICAgICAvfFxcICAgL3xcXCAgIC98XFxcbiAgICAgIC4uLiAgIC4uLiAgIC4uLlxuICAgdn1cblxuICAgV2UgY29uc3RydWN0IHRoZSBgaW52ZXJ0ZWQnIHRyZWUgaW4gdGhlIE1MIHJlcHJlc2VudGF0aW9uLlxuICAgVGhlIGRpcmVjdGlvbiBvZiB0aGUgZWRnZXMgaXMgVVBXQVJEUy5cbiAgIFN0YXJ0aW5nIHdpdGggYW55IFsnYSB0XSB3ZSBjYW4gc3RlcCBkaXJlY3RseSB0byBpdHMgcGFyZW50LlxuICAgQnV0IHdlIGNhbid0IChhbmQgZG9uJ3QgbmVlZCB0bykgc3RhcnQgZnJvbSB0aGUgcm9vdCBhbmQgc3RlcCB0byBpdHMgY2hpbGRyZW4uXG4qKVxuXG4oKlxuICAgW3JhbmtdIGlzIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBkZXB0aCBvZiBhbnkgbm9kZSBpbiB0aGUgdXAtdHJlZS5cblxuICAgSW1hZ2luZSBhbiB1bmx1Y2t5IHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgaW4gd2hpY2ggeW91IGNyZWF0ZSBOXG4gICBpbmRpdmlkdWFsIFt0XS12YWx1ZXMgYW5kIHRoZW4gdW5pb24gdGhlbSB0b2dldGhlciBpbiBzdWNoIGEgd2F5XG4gICB0aGF0IHlvdSBhbHdheXMgcGljayB0aGUgcm9vdCBvZiBlYWNoIHRyZWUgdG8gdW5pb24gdG9nZXRoZXIsIHNvIHRoYXRcbiAgIG5vIHBhdGggY29tcHJlc3Npb24gdGFrZXMgcGxhY2UuICBJZiB5b3UgZG9uJ3QgdGFrZSBjYXJlIHRvIHNvbWVob3dcbiAgIGJhbGFuY2UgdGhlIHJlc3VsdGluZyB1cC10cmVlLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBlbmQgdXAgd2l0aCBvbmVcbiAgIGJpZyBsb25nIGNoYWluIG9mIE4gbGlua3MsIGFuZCB0aGVuIGNhbGxpbmcgW3JlcHJlc2VudGF0aXZlXSBvbiB0aGVcbiAgIGRlZXBlc3Qgbm9kZSB0YWtlcyBUaGV0YShOKSB0aW1lLiAgV2l0aCB0aGUgYmFsYW5jaW5nIHNjaGVtZSBvZiBuZXZlclxuICAgaW5jcmVhc2luZyB0aGUgcmFuayBvZiBhIG5vZGUgdW5uZWNlc3NhcmlseSwgaXQgd291bGQgdGFrZSBPKGxvZyBOKS5cbiopXG50eXBlICdhIHJvb3QgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7IG11dGFibGUgcmFuayA6IGludFxuICB9XG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBub2RlIDogJ2Egbm9kZSB9XG5cbmFuZCAnYSBub2RlID1cbiAgfCBJbm5lciBvZiAnYSB0XG4gICgqIFtJbm5lciB4XSBpcyBhIG5vZGUgd2hvc2UgcGFyZW50IGlzIFt4XS4gKilcbiAgfCBSb290IG9mICdhIHJvb3RcblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCA9XG4gICAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgICB8IElubmVyIHQgLT4gbG9vcCB0IChkZXB0aCArIDEpXG4gICAgfCBSb290IHIgLT4gYXNzZXJ0IChkZXB0aCA8PSByLnJhbmspXG4gIGluXG4gIGxvb3AgdCAwXG47O1xuXG5sZXQgY3JlYXRlIHYgPSB7IG5vZGUgPSBSb290IHsgdmFsdWUgPSB2OyByYW5rID0gMCB9IH1cblxuKCogaW52YXJpYW50czpcbiAgIFtpbm5lci5ub2RlXSA9IFtpbm5lcl9ub2RlXSA9IFtJbm5lciB0XS5cbiAgIFtkZXNjZW5kYW50c10gYXJlIHRoZSBwcm9wZXIgZGVzY2VuZGFudHMgb2YgW2lubmVyXSB3ZSd2ZSB2aXNpdGVkLlxuKilcbmxldCByZWMgY29tcHJlc3MgdCB+aW5uZXJfbm9kZSB+aW5uZXIgfmRlc2NlbmRhbnRzID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiB0IGlzIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICAgICAgIFJlLXBvaW50IGFsbCBkZXNjZW5kYW50cyBkaXJlY3RseSB0byBpdCBieSBzZXR0aW5nIHRoZW0gdG8gW0lubmVyIHRdLlxuICAgICAgIE5vdGU6IHdlIGRvbid0IHJlLXBvaW50IFtpbm5lcl0gYXMgaXQgYWxyZWFkeSBwb2ludHMgdGhlcmUuICopXG4gICAgTGlzdC5pdGVyIGRlc2NlbmRhbnRzIH5mOihmdW4gdCAtPiB0Lm5vZGUgPC0gaW5uZXJfbm9kZSk7XG4gICAgdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT5cbiAgICBjb21wcmVzcyB0JyB+aW5uZXJfbm9kZTpub2RlIH5pbm5lcjp0IH5kZXNjZW5kYW50czooaW5uZXIgOjogZGVzY2VuZGFudHMpXG47O1xuXG5sZXQgcmVwcmVzZW50YXRpdmUgdCA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+IHQsIHJcbiAgfCBJbm5lciB0JyBhcyBub2RlIC0+IGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOltdXG47O1xuXG5sZXQgcm9vdCB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiBhdm9pZCB0dXBsZSBhbGxvY2F0aW9uIGluIHRoZSBmYXN0IHBhdGggKilcbiAgICByXG4gIHwgXyAtPiBzbmQgKHJlcHJlc2VudGF0aXZlIHQpXG47O1xuXG5sZXQgcmFuayB0ID0gKHJvb3QgdCkucmFua1xubGV0IGdldCB0ID0gKHJvb3QgdCkudmFsdWVcbmxldCBzZXQgdCB2ID0gKHJvb3QgdCkudmFsdWUgPC0gdlxubGV0IHNhbWVfY2xhc3MgdDEgdDIgPSBwaHlzX2VxdWFsIChyb290IHQxKSAocm9vdCB0MilcblxubGV0IHVuaW9uIHQxIHQyID1cbiAgbGV0IHQxLCByMSA9IHJlcHJlc2VudGF0aXZlIHQxIGluXG4gIGxldCB0MiwgcjIgPSByZXByZXNlbnRhdGl2ZSB0MiBpblxuICBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gcjEucmFuayBpblxuICAgIGxldCBuMiA9IHIyLnJhbmsgaW5cbiAgICBpZiBuMSA8IG4yXG4gICAgdGhlbiB0MS5ub2RlIDwtIElubmVyIHQyXG4gICAgZWxzZSAoXG4gICAgICB0Mi5ub2RlIDwtIElubmVyIHQxO1xuICAgICAgaWYgbjEgPSBuMiB0aGVuIHIxLnJhbmsgPC0gcjEucmFuayArIDEpKVxuOztcblxubGV0IGlzX2NvbXByZXNzZWQgdCA9XG4gIGludmFyaWFudCBpZ25vcmUgdDtcbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IF8gLT4gdHJ1ZVxuICB8IElubmVyIHQgLT5cbiAgICAobWF0Y2ggdC5ub2RlIHdpdGhcbiAgICAgfCBSb290IF8gLT4gdHJ1ZVxuICAgICB8IElubmVyIF8gLT4gZmFsc2UpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaXNfY29tcHJlc3NlZCA9IGlzX2NvbXByZXNzZWRcbiAgbGV0IHJhbmsgPSByYW5rXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEb3VibHlfbGlua2VkX2ludGZcblxuKCogSU5WQVJJQU5UOiBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgYSBsaXN0IGlzIG11dGF0ZWQgZHVyaW5nIGEgcGVuZGluZyBpdGVyYXRpb24uXG5cbiAgIFRoaXMgaW52YXJpYW50IGlzIGd1YXJhbnRlZWQgYnkgdGhlIEhlYWRlciBhbmQgRWx0IG1vZHVsZXMgaW4gY29uanVuY3Rpb24uICBBbGxcbiAgIGRvd25zdHJlYW0gY29kZSBpbiB0aGlzIG1vZHVsZSBuZWVkIG5vdCBiZSBjb25jZXJuZWQgd2l0aCB0aGlzIGludmFyaWFudC4gKilcbmV4Y2VwdGlvbiBBdHRlbXB0X3RvX211dGF0ZV9saXN0X2R1cmluZ19pdGVyYXRpb25cblxubGV0IHBoeXNfZXF1YWwgPSAoID09IClcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaW5jcl9sZW5ndGggOiBieTppbnQgLT4gdCAtPiB1bml0XG4gIHZhbCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgOiB0IC0+IHVuaXRcblxuICAoKiBVbmZvcnR1bmF0ZSwgYnV0IGJ5IHNwZWNpYWxpemluZyBbd2l0aF9pdGVyYXRpb25dIGZvciBkaWZmZXJlbnQgYXJpdGllcywgYSBsYXJnZVxuICAgICBhbW91bnQgb2YgYWxsb2NhdGlvbiBkdXJpbmcgZm9sZHMgYW5kIGl0ZXJhdGlvbnMgaXMgYXZvaWRlZC5cblxuICAgICBUaGUgb3JpZ2luYWwgdHlwZSBvZiBbd2l0aF9pdGVyYXRpb25dIHdhc1xuICAgICBbdmFsIHdpdGhfaXRlcmF0aW9uIDogdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FdXG5cbiAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlblxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmICgpID0gZyB4IGluXG4gICAgICAgZiAoKVxuICAgICBdfVxuICAgICBhbmRcbiAgICAge1tcbiAgICAgICBsZXQgeCA9IGUgaW5cbiAgICAgICBsZXQgZiB4ID0gZyB4IGluXG4gICAgICAgZiB4XG4gICAgIF19XG4gICAgIGlzIHRoYXQgaW4gdGhlIGZpcnN0IGNhc2UgdGhlIGNsb3N1cmUgZm9yIFtmXSBjb250YWlucyBhIHBvaW50ZXIgdG8gW3hdLFxuICAgICBhbmQgaW4gdGhlIHNlY29uZCBjYXNlIGl0IGRvZXNuJ3QuIEEgY2xvc3VyZSB3aXRob3V0IHBvaW50ZXJzIHRvIGVuY2xvc2luZ1xuICAgICBlbnZpcm9ubWVudCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5ha2VkIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIHdlIGRvbid0XG4gICAgIGFsbG9jYXRlIGF0IGFsbC5cblxuICAgICBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIG1ha2Ugc3VyZSBub3QgdG8gY2FsbCBbUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gLi4uKV1cbiAgICAgaW5zaWRlIFt3aXRoX2l0ZXJhdGlvbl0gYW5kIGRvIGFuIGV4cGxpY2l0IG1hdGNoIHN0YXRlbWVudCBpbnN0ZWFkLiAqKVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl8ybFxuICAgIDogIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYltAbG9jYWxdKVxuICAgIC0+ICgoJ2EgLT4gKCdiW0Bsb2NhbF0pIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzMgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCkgLT4gJ2RcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzQgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSkgLT4gJ2VcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fNGxcbiAgICA6ICB0XG4gICAgLT4gKCdhW0Bsb2NhbF0pXG4gICAgLT4gKCdiW0Bsb2NhbF0pXG4gICAgLT4gJ2NcbiAgICAtPiAnZFxuICAgIC0+ICgoKCdhW0Bsb2NhbF0pIC0+ICgnYltAbG9jYWxdKSAtPiAnYyAtPiAnZCAtPiAnZSlbQGxvY2FsXSlcbiAgICAtPiAnZVxuXG4gIHZhbCBtZXJnZSA6IHQgLT4gdCAtPiBbIGBTYW1lX2FscmVhZHkgfCBgTWVyZ2VkIF1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHMgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBlbmRpbmdfaXRlcmF0aW9ucyA6IGludFxuICAgIH1cblxuICB0eXBlIHQgPSBzIFVuaW9uX2ZpbmQudFxuXG4gIGxldCBjcmVhdGUgKCkgPSBVbmlvbl9maW5kLmNyZWF0ZSB7IGxlbmd0aCA9IDE7IHBlbmRpbmdfaXRlcmF0aW9ucyA9IDAgfVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgbGV0IGxlbmd0aCB0ID0gKFVuaW9uX2ZpbmQuZ2V0IHQpLmxlbmd0aFxuXG4gIGxldCB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGlmIHMucGVuZGluZ19pdGVyYXRpb25zID4gMCB0aGVuIHJhaXNlIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvbiBlbHNlIHNcbiAgOztcblxuICBsZXQgY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGlnbm9yZSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0IDogcylcbiAgOztcblxuICBsZXQgaW5jcl9sZW5ndGggfmJ5Om4gdCA9XG4gICAgbGV0IHMgPSB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgaW5cbiAgICBzLmxlbmd0aCA8LSBzLmxlbmd0aCArIG5cbiAgOztcblxuICAoKiBDYXJlIGlzIHRha2VuIG5vdCB0byBhbGxvY2F0ZSBpbiBbd2l0aF9pdGVyYXRpb25fKl0sIHNpbmNlIGl0IGlzIGNhbGxlZCBldmVyeSBzZWNvbmRcbiAgICAgYnkgW2V2ZXJ5X3NlY29uZF0gaW4gW3dyaXRlcjAubWxdICopXG5cbiAgbGV0IGluY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgKyAxXG4gIGxldCBkZWNyX3BlbmRpbmdfaXRlcnMgcyA9IHMucGVuZGluZ19pdGVyYXRpb25zIDwtIHMucGVuZGluZ19pdGVyYXRpb25zIC0gMVxuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8ybCB0IGEgKGIgW0Bsb2NhbF0pIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fMyB0IGEgYiBjIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl80IHQgYSBiIGMgZCBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiBjIGQgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl80bCB0IChhIFtAbG9jYWxdKSAoYiBbQGxvY2FsXSkgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IG1lcmdlICh0MSA6IHQpIHQyID1cbiAgICBpZiBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgICB0aGVuIGBTYW1lX2FscmVhZHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuMSA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxKS5sZW5ndGggaW5cbiAgICAgIGxldCBuMiA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyKS5sZW5ndGggaW5cbiAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDEgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICB3aXRoX2l0ZXJhdGlvbl80IHQyIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgICBVbmlvbl9maW5kLnVuaW9uIHQxIHQyO1xuICAgICAgICAgIFVuaW9uX2ZpbmQuc2V0IHQxIHsgbGVuZ3RoID0gbjEgKyBuMjsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9KSk7XG4gICAgICBgTWVyZ2VkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbHQgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGhlYWRlciA6ICdhIHQgLT4gSGVhZGVyLnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGNyZWF0ZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bmxpbmsgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9iZWZvcmUgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIGluc2VydF9hZnRlciA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgaW5zZXJ0X2JlZm9yZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5saW5rX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgbmV4dCA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgcHJldiA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgcHJldiA6ICdhIHRcbiAgICA7IG11dGFibGUgbmV4dCA6ICdhIHRcbiAgICA7IG11dGFibGUgaGVhZGVyIDogSGVhZGVyLnRcbiAgICB9XG5cbiAgbGV0IGVxdWFsID0gcGh5c19lcXVhbFxuICBsZXQgbmV4dCB0ID0gdC5uZXh0XG4gIGxldCBwcmV2IHQgPSB0LnByZXZcbiAgbGV0IGhlYWRlciB0ID0gdC5oZWFkZXJcblxuICBsZXQgY3JlYXRlX2F1eCB2IGhlYWRlciA9XG4gICAgbGV0IHJlYyB0ID0geyB2YWx1ZSA9IHY7IHByZXYgPSB0OyBuZXh0ID0gdDsgaGVhZGVyIH0gaW5cbiAgICB0XG4gIDs7XG5cbiAgbGV0IGlzX3NpbmdsZXRvbiB0ID0gZXF1YWwgdCB0LnByZXZcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfYSB0LnZhbHVlXG4gIGxldCBjcmVhdGUgdiA9IGNyZWF0ZV9hdXggdiAoSGVhZGVyLmNyZWF0ZSAoKSlcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gIGxldCBzZXQgdCB2ID0gdC52YWx1ZSA8LSB2XG5cbiAgKCpcbiAgICAgW3NwbGl0X29yX3NwbGljZV0gaXMgc3VmZmljaWVudCBhcyB0aGUgbG9uZSBwcmltaXRpdmUgZm9yXG4gICAgIGFjY29tcGxpc2hpbmcgYWxsIHBvaW50ZXIgdXBkYXRlcyBvbiBjeWNsaWMgbG9vcHMgb2YgbGlzdCBub2Rlcy5cbiAgICAgSXQgdGFrZXMgdHdvIFwiZ2Fwc1wiIGJldHdlZW4gYWRqYWNlbnQgbGlua2VkIGxpc3Qgbm9kZXMuICBJZiB0aGUgZ2Fwc1xuICAgICBwb2ludCBpbnRvIHRoZSBzYW1lIGxpc3QsIHRoZSByZXN1bHQgaXMgdGhhdCBpdCB3aWxsIGJlIHNwbGl0IGludG9cbiAgICAgdHdvIGxpc3RzIGFmdGVyd2FyZHMuICBJZiB0aGUgZ2FwcyBwb2ludCBpbnRvIGRpZmZlcmVudCBsaXN0cywgdGhlXG4gICAgIHJlc3VsdCBpcyB0aGF0IHRoZXkgd2lsbCBiZSBzcGxpY2VkIHRvZ2V0aGVyIGludG8gb25lIGxpc3QgYWZ0ZXJ3YXJkcy5cblxuICAgICB7dlxuICAgICAgIEJlZm9yZSAgICAgICAgICAgICAgICAgICAgICBBZnRlclxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICAgICAgICAgICBBIHwgIDwtLT4gIHwgQiAgICAgICAgICAgICAgIEEgfCAgPC0tLSAgIC0tLT4gIHwgQlxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIFxcIC8gICAgICArLS0tLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIC8gXFwgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQyB8ICA8LS0+ICB8IEQgICAgICAgICAgICAgICBDIHwgIDwtLS0gICAtLS0+ICB8IERcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgdn0gKilcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZSB+cHJldjE6YSB+bmV4dDE6YiB+cHJldjI6YyB+bmV4dDI6ZCA9XG4gICAgYS5uZXh0IDwtIGQ7XG4gICAgZC5wcmV2IDwtIGE7XG4gICAgYy5uZXh0IDwtIGI7XG4gICAgYi5wcmV2IDwtIGNcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfm5leHQxOnQxLm5leHRcbiAgICAgIH5wcmV2MTp0MS5uZXh0LnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5uZXh0XG4gICAgICB+cHJldjI6dDIubmV4dC5wcmV2XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+cHJldjE6dDEucHJldlxuICAgICAgfm5leHQxOnQxLnByZXYubmV4dFxuICAgICAgfnByZXYyOnQyLnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5wcmV2Lm5leHRcbiAgOztcblxuICBsZXQgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MiA9XG4gICAgSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MS5oZWFkZXI7XG4gICAgaWYgbm90IChIZWFkZXIuZXF1YWwgdDEuaGVhZGVyIHQyLmhlYWRlcilcbiAgICB0aGVuIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIuaGVhZGVyXG4gIDs7XG5cbiAgKCogV2UgcmVkZWZpbmUgc2FmZSB2ZXJzaW9ucyBmb3IgZXhwb3J0ICopXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MlxuICA7O1xuXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGluc2VydF9iZWZvcmUgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGR1bW15X2hlYWRlciA9IEhlYWRlci5jcmVhdGUgKClcblxuICBsZXQgdW5saW5rX2JlZm9yZSB0ID1cbiAgICBsZXQgbm9kZSA9IHQucHJldiBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmtfYWZ0ZXIgdCA9XG4gICAgbGV0IG5vZGUgPSB0Lm5leHQgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9IGlnbm9yZSAodW5saW5rX2FmdGVyIHQucHJldiA6IF8gdClcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBFbHQudCBvcHRpb24gcmVmXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBoZWFkIC0+XG4gICAgbGV0IGhlYWRlciA9IEVsdC5oZWFkZXIgaGVhZCBpblxuICAgIGxldCByZWMgbG9vcCBuIGVsdCA9XG4gICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIGxldCBwcmV2X2VsdCA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQucHJldiBuZXh0X2VsdCkpO1xuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQubmV4dCBwcmV2X2VsdCkpO1xuICAgICAgYXNzZXJ0IChIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZWx0KSBoZWFkZXIpO1xuICAgICAgaW52YXJpYW50X2EgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgaWYgRWx0LmVxdWFsIG5leHRfZWx0IGhlYWQgdGhlbiBuIGVsc2UgbG9vcCAobiArIDEpIG5leHRfZWx0XG4gICAgaW5cbiAgICBsZXQgbGVuID0gbG9vcCAxIGhlYWQgaW5cbiAgICBhc3NlcnQgKGxlbiA9IEhlYWRlci5sZW5ndGggaGVhZGVyKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHJlZiBOb25lXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBjcmVhdGUgKClcbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSB4IGluXG4gICAgbGV0IF9sYXN0ID0gTGlzdC5mb2xkIHhzIH5pbml0OmZpcnN0IH5mOihmdW4gYSBiIC0+IEVsdC5pbnNlcnRfYWZ0ZXIgYSBiKSBpblxuICAgIHJlZiAoU29tZSBmaXJzdClcbjs7XG5cbmxldCBvZl9hcnJheSA9IGZ1bmN0aW9uXG4gIHwgW3x8XSAtPiBjcmVhdGUgKClcbiAgfCBhcnIgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIGFyci4oMCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgYXJyIGVsdCBpID1cbiAgICAgIGlmIGkgPCBBcnJheS5sZW5ndGggYXJyIHRoZW4gbG9vcCBhcnIgKEVsdC5pbnNlcnRfYWZ0ZXIgZWx0IGFyci4oaSkpIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgYXJyIGZpcnN0IDE7XG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIChFbHQudmFsdWUgZmlyc3QpKSBpblxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld19maXJzdCBmaXJzdCAoZnVuIGYgbmV3X2ZpcnN0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IEVsdC5pbnNlcnRfYWZ0ZXIgYWNjIChmIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgKCogdW5yb2xsIGFuZCBza2lwIGZpcnN0IGVsdCAqKVxuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld19maXJzdCBmaXJzdCBuZXh0KTtcbiAgICByZWYgKFNvbWUgbmV3X2ZpcnN0KVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2ZpcnN0ID0gRWx0LmNyZWF0ZSAoZiAwIChFbHQudmFsdWUgZmlyc3QpKSBpblxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld19maXJzdCBmaXJzdCAoZnVuIGYgbmV3X2ZpcnN0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgaSAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgKCogdW5yb2xsIGFuZCBza2lwIGZpcnN0IGVsdCAqKVxuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIDEgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGlfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgKGkgKyAxKSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80bCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgaXRlcl9lbHQgdCB+ZiA9IGZvbGRfZWx0XzEgdCB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+IGYgZWx0KSBmXG5sZXQgaXRlcmlfZWx0IHQgfmYgPSBmb2xkaV9lbHQgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgZWx0IC0+IGYgaSBlbHQpXG5cbm9wZW4gV2l0aF9yZXR1cm5cblxubGV0IGZpbmRfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIGVsdCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkaV9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBpIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIGVsdCkpKTtcbiAgICBOb25lKVxuOztcblxuKCogdGhpcyBmdW5jdGlvbiBpcyBsYW1iZGEgbGlmdGVkIGZvciBwZXJmb3JtYW5jZSwgdG8gbWFrZSBkaXJlY3QgcmVjdXJzaXZlIGNhbGxzIGluc3RlYWRcbiAgIG9mIGNhbGxzIHRocm91Z2ggaXRzIGNsb3N1cmUuIEl0IGFsc28gYXZvaWRzIHRoZSBpbml0aWFsIGNsb3N1cmUgYWxsb2NhdGlvbi4gKilcbmxldCByZWMgaXRlcl9sb29wIGZpcnN0IGYgZWx0ID1cbiAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJfbG9vcCBmaXJzdCBmIG5leHRcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMmwgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyX2xvb3AgZmlyc3QgZiBmaXJzdClcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5sZW5ndGggKEVsdC5oZWFkZXIgZmlyc3QpXG47O1xuXG5sZXQgcmVjIGl0ZXJpX2xvb3AgZmlyc3QgZiBpIGVsdCA9XG4gIGYgaSAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJpX2xvb3AgZmlyc3QgZiAoaSArIDEpIG5leHRcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzJsIChFbHQuaGVhZGVyIGZpcnN0KSBmaXJzdCBmIChmdW4gZmlyc3QgZiAtPlxuICAgICAgaXRlcmlfbG9vcCBmaXJzdCBmIDAgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGZvbGRpX2VsdF8xIHQgfmluaXQgZiB+ZjooZnVuIGkgZiBhY2MgZWx0IC0+IGYgaSBhY2MgKEVsdC52YWx1ZSBlbHQpKVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHIgPSBmb2xkX2VsdF8xIHQgfmluaXQgZiB+ZjooZnVuIGYgYWNjIGVsdCAtPiBmIGFjYyAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICByXG4gICAgOztcblxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgdW5jaGVja2VkX2l0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGYgZWx0ID1cbiAgICAgIGYgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICgqIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBiYWcgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IFtmXSAqKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChwaHlzX2VxdWFsIGZpcnN0IG5leHQpIHRoZW4gbG9vcCB0IGYgbmV4dFxuICAgIGluXG4gICAgbG9vcCB0IGYgZmlyc3Rcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gT3B0aW9uLmlzX25vbmUgIXRcblxuKCogbW9yZSBlZmZpY2llbnQgdGhhbiB3aGF0IENvbnRhaW5lci5NYWtlIHJldHVybnMgKilcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIChFbHQudmFsdWUgcHJldikgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfcmlnaHRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiBwcmV2IGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCB0b19saXN0IHQgPSBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB4IHRsIC0+IHggOjogdGwpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHMpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQmFzZS5MaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxubGV0IGNvcHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcbmxldCBjbGVhciB0ID0gdCA6PSBOb25lXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHQxIHQyID1cbiAgbWF0Y2ggIXQxLCAhdDIgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIGYxLCBTb21lIGYyIC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjEpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGYyKSBjb21wYXJlX2VsdCBmMSBmMiAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBjb21wYXJlX2VsdCBlbHQxIGYxIGVsdDIgZjIgPVxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IChFbHQudmFsdWUgZWx0MSkgKEVsdC52YWx1ZSBlbHQyKSBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0IDw+IDBcbiAgICAgICAgICB0aGVuIGNvbXBhcmVfcmVzdWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dDEgPSBFbHQubmV4dCBlbHQxIGluXG4gICAgICAgICAgICBsZXQgbmV4dDIgPSBFbHQubmV4dCBlbHQyIGluXG4gICAgICAgICAgICBtYXRjaCBwaHlzX2VxdWFsIG5leHQxIGYxLCBwaHlzX2VxdWFsIG5leHQyIGYyIHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICAgICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IGxvb3AgY29tcGFyZV9lbHQgbmV4dDEgZjEgbmV4dDIgZjIpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgY29tcGFyZV9lbHQgZjEgZjEgZjIgZjIpKVxuOztcblxuZXhjZXB0aW9uIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcblxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9XG4gIGlmIHBoeXNfZXF1YWwgc3JjIGRzdCB0aGVuIHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3Q7XG4gIG1hdGNoICFzcmMgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNyY19oZWFkIC0+XG4gICAgKG1hdGNoICFkc3Qgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBkc3QgOj0gU29tZSBzcmNfaGVhZDtcbiAgICAgICBjbGVhciBzcmNcbiAgICAgfCBTb21lIGRzdF9oZWFkIC0+XG4gICAgICAgKG1hdGNoIEhlYWRlci5tZXJnZSAoRWx0LmhlYWRlciBzcmNfaGVhZCkgKEVsdC5oZWFkZXIgZHN0X2hlYWQpIHdpdGhcbiAgICAgICAgfCBgU2FtZV9hbHJlYWR5IC0+IHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcbiAgICAgICAgfCBgTWVyZ2VkIC0+XG4gICAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZHN0X2hlYWQgc3JjX2hlYWQ7XG4gICAgICAgICAgY2xlYXIgc3JjKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gaXRlcl9lbHQgdCB+ZjooZnVuIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiAoRWx0LnZhbHVlIGVsdCkpKVxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID0gaXRlcmlfZWx0IHQgfmY6KGZ1biBpIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiBpIChFbHQudmFsdWUgZWx0KSkpXG5cbmxldCByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZSA9XG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBlbHQgLT5cbiAgICAobWF0Y2ggIXQgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGhlYWQgLT5cbiAgICAgICBpZiBFbHQuZXF1YWwgaGVhZCBlbHRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgdCA6PSBpZiBFbHQuZXF1YWwgaGVhZCBuZXh0X2VsdCB0aGVuIE5vbmUgZWxzZSBTb21lIG5leHRfZWx0KSk7XG4gICAgRWx0LnVubGluayBlbHQpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmV4Y2VwdGlvbiBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcblxubGV0IGZpcnN0X2VsdCB0ID0gIXRcbmxldCBsYXN0X2VsdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQucHJldiAhdFxubGV0IGZpcnN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAoZmlyc3RfZWx0IHQpXG5sZXQgbGFzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGxhc3RfZWx0IHQpXG5sZXQgZmlyc3RfZXhuICh0IDogJ2EgdCkgPSBPcHRpb24udmFsdWVfZXhuICF0IHw+IEVsdC52YWx1ZVxubGV0IGxhc3RfZXhuICh0IDogJ2EgdCkgPSBPcHRpb24udmFsdWVfZXhuICF0IHw+IEVsdC5wcmV2IHw+IEVsdC52YWx1ZVxuXG5sZXQgaXNfZmlyc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpc19sYXN0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgICAgRWx0LmVxdWFsIGVsdCBsYXN0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbWVtX2VsdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBmaXJzdCAtPiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbjs7XG5cbmxldCBwcmV2IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0LnByZXYgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbmV4dCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGVsdCBsYXN0XG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIFNvbWUgKEVsdC5uZXh0IGVsdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9hZnRlciB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0Lmluc2VydF9hZnRlciBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2JlZm9yZSB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgICBuZXdfZWx0KVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2JlZm9yZSBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2VtcHR5IHQgdiA9XG4gIGxldCBuZXdfZWx0ID0gRWx0LmNyZWF0ZSB2IGluXG4gIHQgOj0gU29tZSBuZXdfZWx0O1xuICBuZXdfZWx0XG47O1xuXG5sZXQgaW5zZXJ0X2xhc3QgdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5zZXJ0X2VtcHR5IHQgdlxuICB8IFNvbWUgZmlyc3QgLT4gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdlxuOztcblxubGV0IGluc2VydF9maXJzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgIHQgOj0gU29tZSBuZXdfZWx0O1xuICAgIG5ld19lbHRcbjs7XG5cbmxldCByZW1vdmVfbGFzdCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC51bmxpbmtfYmVmb3JlIGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGZpcnN0IGxhc3QgdGhlbiB0IDo9IE5vbmU7XG4gICAgU29tZSAoRWx0LnZhbHVlIGxhc3QpXG47O1xuXG5sZXQgcmVtb3ZlX2ZpcnN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBzZWNvbmQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgIEVsdC51bmxpbmsgZmlyc3Q7XG4gICAgdCA6PSBpZiBFbHQuZXF1YWwgZmlyc3Qgc2Vjb25kIHRoZW4gTm9uZSBlbHNlIFNvbWUgc2Vjb25kO1xuICAgIFNvbWUgKEVsdC52YWx1ZSBmaXJzdClcbjs7XG5cbmxldCByZW1vdmUgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gaWdub3JlIChyZW1vdmVfZmlyc3QgdCA6IF8gb3B0aW9uKVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQudW5saW5rIGVsdFxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgbmV3X3QgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIGluc2VydF9sYXN0IChpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIChFbHQudmFsdWUgZWx0KSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDEgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbiAgICAgICAgICB8IFNlY29uZCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MiB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIGkgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmV4Y2VwdGlvbiBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yXG5cbmxldCBtb3ZlX2JlZm9yZSB0IGVsdCB+YW5jaG9yID1cbiAgaWYgRWx0LmVxdWFsIGFuY2hvciBlbHQgdGhlbiByYWlzZSBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yO1xuICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgYW5jaG9yKSAoRWx0LmhlYWRlciBlbHQpXG4gIHRoZW4gKFxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiB1bmxpbmsgW2VsdF0gKilcbiAgICAgICAgbGV0IGFmdGVyX2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBlbHQgYWZ0ZXJfZWx0O1xuICAgICAgICBsZXQgZmlyc3QgPVxuICAgICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICAgICBhZnRlcl9lbHQpXG4gICAgICAgICAgZWxzZSBmaXJzdFxuICAgICAgICBpblxuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYmVmb3JlIFthbmNob3JdICopXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGFuY2hvciBlbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBhbmNob3IgdGhlbiB0IDo9IFNvbWUgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19mcm9udCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChFbHQuZXF1YWwgZWx0IGZpcnN0KSB0aGVuIG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3I6Zmlyc3Rcbjs7XG5cbmxldCBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHQgdGhlbiB0IDo9IFNvbWUgYWZ0ZXJfZWx0O1xuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYWZ0ZXIgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9hZnRlciBhbmNob3IgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19iYWNrIHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBub3QgKEVsdC5lcXVhbCBlbHQgbGFzdCkgdGhlbiBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3I6bGFzdFxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19saXN0IHQgfD4gU2VxdWVuY2Uub2ZfbGlzdFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHRfb2Zfc2V4cCA9IFNleHBsaWIuU2V4cC50X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90ID0gU2V4cGxpYi5TZXhwLnNleHBfb2ZfdFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5pbmNsdWRlIChcbiAgQmFzZS5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIHR5cGUgc2V4cCA9IEJhc2UuU2V4cC50ID1cbiAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgfCBMaXN0IG9mIHQgbGlzdFxuZW5kXG5cbm1vZHVsZSBTZXhwX21heWJlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHQgKiBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBSZXN1bHQuT2sgYSAtPiBzZXhwX29mX2EgYVxuICAgIHwgUmVzdWx0LkVycm9yIChzZXhwLCBlcnIpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgRXJyb3Iuc2V4cF9vZl90IGVyciBdXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgXyBdIHwgc2V4cCAtPlxuICAgICAgKHRyeSBSZXN1bHQuT2sgKGFfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICAgfCBleG4gLT4gUmVzdWx0LkVycm9yIChzZXhwLCBFcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgKGdyYW1tYXIgOiBfIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQpIDogXyB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgIHsgdW50eXBlZCA9IFVuaW9uIFsgZ3JhbW1hci51bnR5cGVkOyBCYXNlLlNleHAudF9zZXhwX2dyYW1tYXIudW50eXBlZCBdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgV2l0aF90ZXh0ID0gc3RydWN0XG4gIG9wZW4gUmVzdWx0LkV4cG9ydFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB2YWx1ZSA6ICdhXG4gICAgOyB0ZXh0IDogc3RyaW5nXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBBdG9tIHQudGV4dFxuXG4gIGxldCBvZl90ZXh0IHZhbHVlX29mX3NleHAgPyhmaWxlbmFtZSA9IFwiXCIpIHRleHQgPVxuICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gb2Zfc3RyaW5nX2NvbnYgdGV4dCB2YWx1ZV9vZl9zZXhwKSB3aXRoXG4gICAgfCBPayAoYFJlc3VsdCB2YWx1ZSkgLT4gT2sgeyB2YWx1ZTsgdGV4dCB9XG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiBlcnJcbiAgICB8IE9rIChgRXJyb3IgKGV4biwgYW5ub3RhdGVkKSkgLT5cbiAgICAgIEVycm9yIChFcnJvci5vZl9leG4gKEFubm90YXRlZC5nZXRfY29udl9leG4gYW5ub3RhdGVkIH5maWxlOmZpbGVuYW1lIH5leGM6ZXhuKSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIldpdGhfdGV4dC50IHNob3VsZCBiZSBzdG9yZWQgYXMgYW4gYXRvbSwgYnV0IGluc3RlYWQgYSBsaXN0IHdhcyBmb3VuZC5cIlxuICAgICAgICBzZXhwXG4gICAgfCBBdG9tIHRleHQgLT4gb2ZfdGV4dCBhX29mX3NleHAgdGV4dCB8PiBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLlN0cmluZy50X3NleHBfZ3JhbW1hclxuICBsZXQgdGV4dCB0ID0gdC50ZXh0XG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gIGxldCBvZl92YWx1ZSBzZXhwX29mX3ZhbHVlIHZhbHVlID1cbiAgICBsZXQgdGV4dCA9IHNleHBfb2ZfdmFsdWUgdmFsdWUgfD4gdG9fc3RyaW5nX2h1bSBpblxuICAgIHsgdmFsdWU7IHRleHQgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Egbm9fcmFpc2UgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBzZXhwX29mX25vX3JhaXNlIHNleHBfb2ZfYSBhID1cbiAgdHJ5IHNleHBfb2ZfYSBhIHdpdGhcbiAgfCBleG4gLT5cbiAgICAodHJ5IExpc3QgWyBBdG9tIFwiZmFpbHVyZSBidWlsZGluZyBzZXhwXCI7IHNleHBfb2ZfZXhuIGV4biBdIHdpdGhcbiAgICAgfCBfIC0+IEF0b20gXCJjb3VsZCBub3QgYnVpbGQgc2V4cCBmb3IgZXhuIHJhaXNlZCB3aGVuIGJ1aWxkaW5nIHNleHAgZm9yIHZhbHVlXCIpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNleHApIChCYXNlLlNleHApXG5cbmxldCBvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWN1cnNpdmVseSBvZl9zZXhwIHNleHAgPVxuICBsZXQgciA9IFNleHBsaWIuQ29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIGluXG4gIGxldCBwcmV2ID0gIXIgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZmluYWxseTooZnVuICgpIC0+IHIgOj0gcHJldilcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICByIDo9IGZhbHNlO1xuICAgICAgb2Zfc2V4cCBzZXhwKVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXhwXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXhwXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXhwXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaF9xdWV1ZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgU19iYWNrZW5kID0gU19iYWNrZW5kXG5cbm1vZHVsZSBNYWtlX2JhY2tlbmQgKFRhYmxlIDogSGFzaHRibF9pbnRmLkhhc2h0YmwpIDogU19iYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIEJhY2tlbmQgPVxuICAgIFMxXG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2FyZyA6PSAna2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9rZXkgOj0gJ2tleVxuXG4gIG1vZHVsZSBCYWNrZW5kIDogQmFja2VuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXlfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgKCdrZXksICd2YWx1ZSkgdCA9XG4gICAgICAgICAgeyBrZXkgOiAna2V5XG4gICAgICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZhbHVlXG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQga2V5IHQgPSB0LmtleVxuICAgICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHsga2V5OyB2YWx1ZSB9ID1cbiAgICAgICAgWyVzZXhwX29mOiBrZXkgKiBkYXRhXSAoa2V5LCB2YWx1ZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBvcGVuIEtleV92YWx1ZS5UXG4gICAgbW9kdWxlIEVsdCA9IERvdWJseV9saW5rZWQuRWx0XG5cbiAgICB0eXBlICgna2V5LCAnZGF0YSkgdCA9XG4gICAgICB7IG11dGFibGUgbnVtX3JlYWRlcnMgOiBpbnRcbiAgICAgIDsgcXVldWUgOiAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudFxuICAgICAgOyB0YWJsZSA6ICgna2V5LCAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IEVsdC50KSBUYWJsZS50XG4gICAgICB9XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgICAgIFslc2V4cF9vZjogKGtleSwgZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XSB0LnF1ZXVlXG4gICAgOztcblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBhc3NlcnQgKERvdWJseV9saW5rZWQubGVuZ3RoIHQucXVldWUgPSBUYWJsZS5sZW5ndGggdC50YWJsZSk7XG4gICAgICAoKiBMb29rIGF0IGVhY2ggZWxlbWVudCBpbiB0aGUgcXVldWUsIGNoZWNraW5nOlxuICAgICAgICogICAtIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHF1ZXVlIGlzIGluIHRoZSBoYXNoIHRhYmxlXG4gICAgICAgKiAgIC0gdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzXG4gICAgICAqKVxuICAgICAgbGV0IGtleXMgPSBUYWJsZS5jcmVhdGUgfnNpemU6KFRhYmxlLmxlbmd0aCB0LnRhYmxlKSAoVGFibGUuaGFzaGFibGVfcyB0LnRhYmxlKSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPlxuICAgICAgICBsZXQga2V5ID0ga3Yua2V5IGluXG4gICAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgYXNzZXJ0IChub3QgKFRhYmxlLm1lbSBrZXlzIGtleSkpO1xuICAgICAgICAgIFRhYmxlLnNldCBrZXlzIH5rZXkgfmRhdGE6KCkpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDE2KSBoYXNoYWJsZSA9XG4gICAgICB7IG51bV9yZWFkZXJzID0gMFxuICAgICAgOyBxdWV1ZSA9IERvdWJseV9saW5rZWQuY3JlYXRlICgpXG4gICAgICA7IHRhYmxlID0gVGFibGUuY3JlYXRlIH5ncm93dGhfYWxsb3dlZCB+c2l6ZSAoVGFibGUuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVhZCB0IGYgPVxuICAgICAgdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzICsgMTtcbiAgICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzIC0gMSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZW5zdXJlX2Nhbl9tb2RpZnkgdCA9XG4gICAgICBpZiB0Lm51bV9yZWFkZXJzID4gMFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkl0IGlzIGFuIGVycm9yIHRvIG1vZGlmeSBhIEhhc2hfcXVldWUudCB3aGlsZSBpdGVyYXRpbmcgb3ZlciBpdC5cIlxuICAgIDs7XG5cbiAgICBsZXQgY2xlYXIgdCA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgRG91Ymx5X2xpbmtlZC5jbGVhciB0LnF1ZXVlO1xuICAgICAgVGFibGUuY2xlYXIgdC50YWJsZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBUYWJsZS5sZW5ndGggdC50YWJsZVxuICAgIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbiAgICBsZXQgbG9va3VwIHQgayA9XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPiBTb21lIChFbHQudmFsdWUgZWx0KS52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2V4biB0IGsgPSAoRWx0LnZhbHVlIChUYWJsZS5maW5kX2V4biB0LnRhYmxlIGspKS52YWx1ZVxuICAgIGxldCBtZW0gdCBrID0gVGFibGUubWVtIHQudGFibGUga1xuXG4gICAgKCogTm90ZSB0aGF0IHRoaXMgaXMgdGhlIHRhaWwtcmVjdXJzaXZlIENvcmVfbGlzdC5tYXAgKilcbiAgICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUudmFsdWVcbiAgICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19hcnJheSB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUudmFsdWVcblxuICAgIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5mb3JfYWxsIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmV4aXN0cyB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkgW0Bub250YWlsXSkgXG4gICAgICBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZmluZF9tYXAgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgKERvdWJseV9saW5rZWQuZmluZCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgICAgICAgfmY6S2V5X3ZhbHVlLnZhbHVlKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGxldCBjb250ZW50cyA9IHsgS2V5X3ZhbHVlLmtleTsgdmFsdWUgfSBpblxuICAgICAgbGV0IGVsdCA9XG4gICAgICAgIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2xhc3QgdC5xdWV1ZSBjb250ZW50c1xuICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLmluc2VydF9maXJzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICBpblxuICAgICAgVGFibGUuc2V0IHQudGFibGUgfmtleSB+ZGF0YTplbHRcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgaWYgVGFibGUubWVtIHQudGFibGUga2V5XG4gICAgICB0aGVuIGBLZXlfYWxyZWFkeV9wcmVzZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgZW5xdWV1ZV91bmNoZWNrZWQgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZTtcbiAgICAgICAgYE9rKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9iYWNrIHQgPSBlbnF1ZXVlIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udCB0ID0gZW5xdWV1ZSB0IGBmcm9udFxuXG4gICAgbGV0IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5lbnF1ZXVlX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgICAgICB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBtYXRjaCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgd2l0aFxuICAgICAgfCBgS2V5X2FscmVhZHlfcHJlc2VudCAtPiByYWlzZV9lbnF1ZXVlX2R1cGxpY2F0ZV9rZXkgdCBrZXlcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2tfZXhuIHQgPSBlbnF1ZXVlX2V4biB0IGBiYWNrXG4gICAgbGV0IGVucXVldWVfZnJvbnRfZXhuIHQgPSBlbnF1ZXVlX2V4biB0IGBmcm9udFxuXG4gICAgKCogUGVyZm9ybWFuY2UgaGFjazogd2UgaW1wbGVtZW50IHRoaXMgdmVyc2lvbiBzZXBhcmF0ZWx5IHRvIGF2b2lkIGFsbG9jYXRpb24gZnJvbSB0aGVcbiAgICAgICBvcHRpb24uICopXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19iYWNrX2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fYmFjayB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19iYWNrIHQga2V5ID1cbiAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0JW1hcCBlbHQgPSBUYWJsZS5maW5kIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fYmFjayB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4gdCBrZXkgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBlbHQgPSBUYWJsZS5maW5kX2V4biB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2Zyb250IHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IHQga2V5ID1cbiAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0JW1hcCBlbHQgPSBUYWJsZS5maW5kIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IG1heWJlX2t2ID1cbiAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfbGFzdCB0LnF1ZXVlXG4gICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQucmVtb3ZlX2ZpcnN0IHQucXVldWVcbiAgICAgIGluXG4gICAgICBtYXRjaCBtYXliZV9rdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+XG4gICAgICAgIFRhYmxlLnJlbW92ZSB0LnRhYmxlIGt2LmtleTtcbiAgICAgICAgU29tZSAoa3Yua2V5LCBrdi52YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX2RlcXVldWVfd2l0aF9rZXlfZW1wdHkgKCkgPVxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJIYXNoX3F1ZXVlLmRlcXVldWVfd2l0aF9rZXk6IGVtcHR5IHF1ZXVlXCJdXG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfd2l0aF9rZXlfZW1wdHkgKClcbiAgICAgIHwgU29tZSAoaywgdikgLT4gaywgdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrX3dpdGhfa2V5IHQgPSBkZXF1ZXVlX3dpdGhfa2V5IHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9iYWNrX3dpdGhfa2V5X2V4biB0ID0gZGVxdWV1ZV93aXRoX2tleV9leG4gdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IHQgPSBkZXF1ZXVlX3dpdGhfa2V5IHQgYGZyb250XG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBmcm9udFxuXG4gICAgbGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKF8sIHYpIC0+IFNvbWUgdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrIHQgPSBkZXF1ZXVlIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udCB0ID0gZGVxdWV1ZSB0IGBmcm9udFxuXG4gICAgbGV0IGxhc3Rfd2l0aF9rZXkgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHsga2V5OyB2YWx1ZSB9IC0+IFNvbWUgKGtleSwgdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBsYXN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5sYXN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPiBTb21lIGt2LnZhbHVlXG4gICAgOztcblxuICAgIGxldCBmaXJzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQuZmlyc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHsga2V5OyB2YWx1ZSB9IC0+IFNvbWUgKGtleSwgdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBmaXJzdCB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQuZmlyc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX2RlcXVldWVfZW1wdHkgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV9leG46IGVtcHR5IHF1ZXVlXCJdXG5cbiAgICBsZXQgZGVxdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWUgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZV9kZXF1ZXVlX2VtcHR5ICgpXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPSBkZXF1ZXVlX2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPSBkZXF1ZXVlX2V4biB0IGBmcm9udFxuXG4gICAgbGV0IGtleXMgdCA9XG4gICAgICAoKiBSZXR1cm4gdGhlIGtleXMgaW4gdGhlIG9yZGVyIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgIExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLmtleVxuICAgIDs7XG5cbiAgICBsZXQgdG9fYWxpc3QgdCA9XG4gICAgICBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOihmdW4ga3YgLT4ga3Yua2V5LCBrdi52YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSBbQG5vbnRhaWxdKSBcbiAgICAgIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbiAgICBsZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZvbGQgdC5xdWV1ZSB+aW5pdCB+ZjooZnVuIGFjIGt2IC0+IGYgYWMgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpIFxuICAgICAgICBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gYWMgfmtleTpfIH5kYXRhIC0+IGYgYWMgZGF0YSkgW0Bub250YWlsXVxuICAgIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gbSB+Zm9sZCB0IH5mXG4gICAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcblxuICAgIGxldCBkZXF1ZXVlX2FsbCB0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIG1hdGNoIGRlcXVldWVfZnJvbnQgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgIGYgdjtcbiAgICAgICAgICBsb29wICgpXG4gICAgICBpblxuICAgICAgbG9vcCAoKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCByZW1vdmUgdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kX2FuZF9yZW1vdmUgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLnJlbW92ZV9leG46IHVua25vd24ga2V5XCIgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZV9leG4gdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZW1vdmUgdCBrIHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlbW92ZV91bmtub3duX2tleSB0IGtcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX3JlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYE5vX3N1Y2hfa2V5XG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIChFbHQudmFsdWUgZWx0KS52YWx1ZSA8LSB2O1xuICAgICAgICBgT2tcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2Vfb3JfZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlXG4gICAgICB8IFNvbWUgZWx0IC0+IChFbHQudmFsdWUgZWx0KS52YWx1ZSA8LSB2YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IHQga2V5IHZhbHVlID0gcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYGZyb250IGtleSB2YWx1ZVxuICAgIGxldCByZXBsYWNlX29yX2VucXVldWVfYmFjayB0IGtleSB2YWx1ZSA9IHJlcGxhY2Vfb3JfZW5xdWV1ZSB0IGBiYWNrIGtleSB2YWx1ZVxuXG4gICAgbGV0IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVwbGFjZV9leG46IHVua25vd24ga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX2V4biB0IGsgdiA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggcmVwbGFjZSB0IGsgdiB3aXRoXG4gICAgICB8IGBOb19zdWNoX2tleSAtPiByYWlzZV9yZXBsYWNlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGRyb3AgPyhuID0gMSkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGlmIG4gPj0gbGVuZ3RoIHRcbiAgICAgIHRoZW4gY2xlYXIgdFxuICAgICAgZWxzZVxuICAgICAgICBmb3IgXyA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgOiBfIG9wdGlvbilcbiAgICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wID9uIHQgYGJhY2tcbiAgICBsZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcCA/biB0IGBmcm9udFxuXG4gICAgbGV0IGNvcHkgdCA9XG4gICAgICBsZXQgY29waWVkID0gY3JlYXRlIH5zaXplOihsZW5ndGggdCkgKFRhYmxlLmhhc2hhYmxlIHQudGFibGUpIGluXG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBlbnF1ZXVlX2JhY2tfZXhuIGNvcGllZCBrZXkgZGF0YSk7XG4gICAgICBjb3BpZWRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gUzAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSkgaGFzaF9xdWV1ZSA6PSAoJ2tleSwgJ2RhdGEpIEJhY2tlbmQudFxuXG4gIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChCYWNrZW5kIDogQmFja2VuZCB3aXRoIHR5cGUgKCdrLCAnZCkgdCA6PSAoJ2ssICdkKSBCYWNrZW5kLnQpXG5cbiAgICB0eXBlIGtleSA9IFQuS2V5LnRcbiAgICB0eXBlICdkYXRhIHQgPSAoVC5LZXkudCwgJ2RhdGEpIEJhY2tlbmQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBoYXNoYWJsZVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA6IFMgd2l0aCB0eXBlIGtleSA9IEtleS50ID0gTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgS2V5KVxuICAgIGVuZClcblxuICBpbmNsdWRlIEJhY2tlbmRcbmVuZFxuXG5pbmNsdWRlIE1ha2VfYmFja2VuZCAoSGFzaHRibClcbiIsIigqKiBGdW5jdG9ycyBhbmQgaW50ZXJmYWNlcyB1c2VkIHRvIG1ha2UgbW9kdWxlcyBoYXNoYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hhYmxlX2ludGZcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfcGxhaW4pIDpcbiAgU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX3BsYWluIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5KSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcbiAgaW5jbHVkZSBUXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgVC5LZXlcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfYmluYWJsZSkgOlxuICBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcblxuICAgICAgbW9kdWxlIFRhYmxlIDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCA9IChrZXksICdhKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICB0eXBlIHQgPSBrZXkgSGFzaF9zZXQudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgdmFsIGhhc2hhYmxlIDoga2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGUpIDogUyB3aXRoIHR5cGUga2V5IDo9IEtleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoS2V5KVxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChLZXkpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgIG1vZHVsZSBLZXkgOiBIYXNodGJsLktleV9iaW5hYmxlXG5cbiAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgOj0gVC5LZXkudCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIHR5cGUga2V5XG5cbiAgICAgICAgbW9kdWxlIFRhYmxlIDogc2lnXG4gICAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgPSBrZXkgSGFzaF9zZXQudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICBlbmRcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEtleSA6IEhhc2h0YmwuS2V5X3N0YWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3N0YWJsZSAoS2V5KVxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3N0YWJsZSAoS2V5KVxuXG4gICAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgICAgIG1vZHVsZSBLZXkgOiBIYXNodGJsLktleV9zdGFibGVcblxuICAgICAgICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgOj0gVC5LZXkudCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENoYXIgPSBCYXNlLkNoYXJcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5pbmNsdWRlIEhleGR1bXBfaW50ZlxuXG5sZXQgYnl0ZXNfcGVyX2xpbmUgPSAxNlxuXG4oKiBJbml0aWFsaXplIHRvIGVub3VnaCBsaW5lcyB0byBkaXNwbGF5IDQwOTYgYnl0ZXMgLS0gbGFyZ2UgZW5vdWdoIHRoYXQsIGZvciBleGFtcGxlLCBhXG4gICBjb21wbGV0ZSBFdGhlcm5ldCBwYWNrZXQgY2FuIGFsd2F5cyBiZSBkaXNwbGF5ZWQgLS0gaW5jbHVkaW5nIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlXG4gICBmaW5hbCBpbmRleC4gKilcbmxldCBkZWZhdWx0X21heF9saW5lcyA9IHJlZiAoKDQwOTYgLyBieXRlc19wZXJfbGluZSkgKyAxKVxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlMiAoVCA6IEluZGV4YWJsZTIpID0gc3RydWN0XG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGV4X29mX3BvcyBwb3MgPSBQcmludGYuc3ByaW50ZiBcIiUwOHhcIiBwb3NcblxuICAgIGxldCBoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgb2Zmc2V0ID1cbiAgICAgIGxldCBwb3MgPSBzdGFydCArIG9mZnNldCBpblxuICAgICAgaWYgcG9zID49IHVudGlsIHRoZW4gXCIgIFwiIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlMDJ4XCIgKENoYXIudG9faW50IChnZXQgdCBwb3MpKVxuICAgIDs7XG5cbiAgICBsZXQgaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXMgICVzICVzICVzICVzICVzICVzICVzICVzXCJcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA2KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDcpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgOClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA5KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDExKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE0KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE1KVxuICAgIDs7XG5cbiAgICBsZXQgcHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgU3RyaW5nLmluaXQgKHVudGlsIC0gc3RhcnQpIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgY2hhciA9IGdldCB0IChzdGFydCArIGkpIGluXG4gICAgICAgIGlmIENoYXIuaXNfcHJpbnQgY2hhciB0aGVuIGNoYXIgZWxzZSAnLicpXG4gICAgOztcblxuICAgIGxldCBsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4ID1cbiAgICAgIGxldCBzdGFydCA9IHBvcyArIChsaW5lX2luZGV4ICogYnl0ZXNfcGVyX2xpbmUpIGluXG4gICAgICBsZXQgdW50aWwgPSBtaW4gKHN0YXJ0ICsgYnl0ZXNfcGVyX2xpbmUpIChwb3MgKyBsZW4pIGluXG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzICAlcyAgfCVzfFwiXG4gICAgICAgIChoZXhfb2ZfcG9zIHN0YXJ0KVxuICAgICAgICAoaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsKVxuICAgICAgICAocHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwpXG4gICAgOztcblxuICAgIGxldCB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0ID1cbiAgICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgbWF4X2xpbmVzID1cbiAgICAgICAgbWF0Y2ggbWF4X2xpbmVzIHdpdGhcbiAgICAgICAgfCBTb21lIG1heF9saW5lcyAtPiBtYXhfbGluZXNcbiAgICAgICAgfCBOb25lIC0+ICFkZWZhdWx0X21heF9saW5lc1xuICAgICAgaW5cbiAgICAgICgqIGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IDMgbGluZXM6IGZpcnN0IGxpbmUgb2YgaGV4LCBlbGxpcHNpcywgbGFzdCBsaW5lIG9mIGhleCAqKVxuICAgICAgbGV0IG1heF9saW5lcyA9IG1heCBtYXhfbGluZXMgMyBpblxuICAgICAgKCogdW5hYnJpZGdlZCBsaW5lcyA9IGxpbmVzIG9mIGhleCArIGxpbmUgd2l0aCBmaW5hbCBpbmRleCAqKVxuICAgICAgbGV0IHVuYWJyaWRnZWRfbGluZXMgPVxuICAgICAgICBJbnQucm91bmRfdXAgbGVuIH50b19tdWx0aXBsZV9vZjpieXRlc19wZXJfbGluZSAvIGJ5dGVzX3Blcl9saW5lXG4gICAgICBpblxuICAgICAgKCogRmlndXJlIG91dCB3aGVyZSB3ZSBuZWVkIHRvIHNraXAgZnJvbSBhbmQgdG8gaWYgW21heF9saW5lcyA8IHVuYWJyaWRnZWRfbGluZXNdLlxuICAgICAgICAgU2tpcCBhZnRlciBoYWxmIHRoZSBhY3R1YWwgaGV4IGxpbmVzIChzdWJ0cmFjdGluZyBvbmUgbGluZSBmb3IgdGhlIGVsbGlwc2lzKS5cbiAgICAgICAgIFNraXAgdG8gbmVhciB0aGUgZW5kLCBsZXNzIHRoZSBudW1iZXIgb2YgbGluZXMgcmVtYWluaW5nIHRvIHByb2R1Y2UsIHBsdXMgdGhlXG4gICAgICAgICBlbGxpcHNpcyBsaW5lLiAqKVxuICAgICAgbGV0IHNraXBfZnJvbSA9IChtYXhfbGluZXMgLSAxKSAvIDIgaW5cbiAgICAgIGxldCBza2lwX3RvID0gdW5hYnJpZGdlZF9saW5lcyAtIChtYXhfbGluZXMgLSBza2lwX2Zyb20pICsgMSBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGxpbmVfaW5kZXggLT5cbiAgICAgICAgaWYgbGluZV9pbmRleCA+PSB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIGlmIGxpbmVfaW5kZXggPSBza2lwX2Zyb20gJiYgbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc1xuICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBcIi4uLlwiOyBzdGF0ZSA9IHNraXBfdG8gfVxuICAgICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4OyBzdGF0ZSA9IGxpbmVfaW5kZXggKyAxIH0pXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfaHVtID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgdG9fc2VxdWVuY2UgP21heF9saW5lcyA/cG9zID9sZW4gdCB8PiBTZXF1ZW5jZS50b19saXN0IHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgXyBfIHQgPSB0b19zZXF1ZW5jZSB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgcHJpbnRhYmxlID1cbiAgICAgICAgbGV0IHJlYyBwcmludGFibGVfZnJvbSB0IH5wb3Mgfmxlbmd0aCA9XG4gICAgICAgICAgcG9zID49IGxlbmd0aFxuICAgICAgICAgIHx8IChDaGFyLmlzX3ByaW50IChnZXQgdCBwb3MpICYmIHByaW50YWJsZV9mcm9tIHQgfnBvczoocG9zICsgMSkgfmxlbmd0aClcbiAgICAgICAgaW5cbiAgICAgICAgZnVuIHQgLT4gcHJpbnRhYmxlX2Zyb20gdCB+cG9zOjAgfmxlbmd0aDoobGVuZ3RoIHQpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gcG9zIC0+IGdldCB0IHBvcylcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBpZiBwcmludGFibGUgdCB0aGVuIFslc2V4cCAodG9fc3RyaW5nIHQgOiBzdHJpbmcpXSBlbHNlIFslc2V4cCAodCA6IChhLCBiKSB0KV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUxIChUIDogSW5kZXhhYmxlMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPZl9pbmRleGFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICAgICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgc2V4cF9vZl90IHggdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgeCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodCA6IChhLCBfKSBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlIChUIDogSW5kZXhhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG4gICAgbGV0IHRvX3NlcXVlbmNlID0gTS5IZXhkdW1wLnRvX3NlcXVlbmNlXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPSBNLkhleGR1bXAudG9fc3RyaW5nX2h1bVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCA6IF8gTS5IZXhkdW1wLlByZXR0eS50KV1cbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9zZXhwX2dyYW1tYXIgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgRXh0ZW5kIChNIDogQmFzZS5JZGVudGlmaWFibGUuUykgKEIgOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gTS50KSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuICAgIGluY2x1ZGUgKEIgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmRfYmluYWJsZSAoTSkgKFQpXG5cbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gVFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBNLmhhc2hhYmxlXG4gICAgZW5kKVxuZW5kXG4iLCJtb2R1bGUgdHlwZSBWMSA9IHNpZ1xuICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcblxuICBpbmNsdWRlXG4gICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuU1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFYxID0gc2lnXG4gICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4oKiBUaGVzZSB0d28gYXJlIG5lZWRlZCBiZWNhdXNlIFtpbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmRdIChwcmVzZW50IGxhdGVyIGluIHRoZSBmaWxlKVxuICAgYmluZHMgbmV3IFtNYXBdIGFuZCBbU2V0XSBtb2R1bGVzLiAqKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5cbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICBsZXQgb2Zfc3RyaW5nID0gRm4uaWRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgbGV0IGhhc2hhYmxlID0gU3RhYmxlLlYxLmhhc2hhYmxlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuU3RyaW5nKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc3RyaW5nXG5sZXQgZ2VuX25vbmVtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5XG5sZXQgZ2VuJyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX29mXG5sZXQgZ2VuX25vbmVtcHR5JyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eV9vZlxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBjaGFycyA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJzIH5sZW5ndGhcbjs7XG5cbmxldCB0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6MCB+bGVuOmlcbjs7XG5cbmxldCBydGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggcmZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSlcbjs7XG5cbigqKiBTZWUgeyFBcnJheS5ub3JtYWxpemV9IGZvciB0aGUgZm9sbG93aW5nIDQgZnVuY3Rpb25zLiAqKVxubGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbmxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG47O1xuXG5sZXQgbmdldCB4IGkgPVxuICBsZXQgbW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nIGluXG4gIHguW25vcm1hbGl6ZSB4IGldXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5TdHJpbmd9W0Jhc2UuU3RyaW5nXX0uICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuKCoqIFtDYXNlbGVzc10gY29tcGFyZXMgYW5kIGhhc2hlcyBzdHJpbmdzIGlnbm9yaW5nIGNhc2UsIHNvIHRoYXQgZm9yIGV4YW1wbGVcbiAgICBbQ2FzZWxlc3MuZXF1YWwgXCJPQ2FtbFwiIFwib2NhbWxcIl0gYW5kIFtDYXNlbGVzcy4oXCJhcHBsZVwiIDwgXCJCYW5hbmFcIildIGFyZSBbdHJ1ZV0sIGFuZFxuICAgIFtDYXNlbGVzcy5NYXBdLCBbQ2FzZWxlc3MuVGFibGVdIGxvb2t1cCBhbmQgW0Nhc2VsZXNzLlNldF0gbWVtYmVyc2hpcCBpc1xuICAgIGNhc2UtaW5zZW5zaXRpdmUuXG5cbiAgICBbQ2FzZWxlc3NdIGFsc28gcHJvdmlkZXMgY2FzZS1pbnNlbnNpdGl2ZSBbaXNfc3VmZml4XSBhbmQgW2lzX3ByZWZpeF0gZnVuY3Rpb25zLCBzb1xuICAgIHRoYXQgZm9yIGV4YW1wbGUgW0Nhc2VsZXNzLmlzX3N1ZmZpeCBcIk9DYW1sXCIgfnN1ZmZpeDpcIkFtTFwiXSBhbmQgW0Nhc2VsZXNzLmlzX3ByZWZpeFxuICAgIFwiT0NhbWxcIiB+cHJlZml4Olwib2NcIl0gYXJlIFt0cnVlXS4gKilcbm1vZHVsZSBDYXNlbGVzcyA6IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzZXhwXVxuXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5cbigqKiBbc2xpY2UgdCBzdGFydCBzdG9wXSByZXR1cm5zIGEgbmV3IHN0cmluZyBpbmNsdWRpbmcgZWxlbWVudHMgW3QuKHN0YXJ0KV0gdGhyb3VnaFxuICAgIFt0LihzdG9wLTEpXSwgbm9ybWFsaXplZCBQeXRob24tc3R5bGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgW3N0b3AgPSAwXSBpcyB0cmVhdGVkIGFzXG4gICAgW3N0b3AgPSBsZW5ndGggdF0uICopXG52YWwgc2xpY2UgOiB0IC0+IGludCAtPiBpbnQgLT4gdFxuXG4oKiogW25nZXQgcyBpXSBnZXRzIHRoZSBjaGFyIGF0IG5vcm1hbGl6ZWQgcG9zaXRpb24gW2ldIGluIFtzXS4gKilcbnZhbCBuZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuXG4oKiogW3Rha2Vfd2hpbGUgcyB+Zl0gcmV0dXJucyB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgW3NdIHNhdGlzZnlpbmcgW2Zvcl9hbGwgcHJlZml4IH5mXVxuICAgIChTZWUgW2xzdHJpcF0gdG8gZHJvcCBzdWNoIGEgcHJlZml4KSAqKVxudmFsIHRha2Vfd2hpbGUgOiB0IC0+IGY6KChjaGFyIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuKCoqIFtydGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHN1ZmZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBzdWZmaXggfmZdXG4gICAgKFNlZSBbcnN0cmlwXSB0byBkcm9wIHN1Y2ggYSBzdWZmaXgpICopXG52YWwgcnRha2Vfd2hpbGUgOiB0IC0+IGY6KChjaGFyIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmluY2x1ZGUgUXVpY2tjaGVja2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbigqKiBMaWtlIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5IDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0sIGJ1dCBnZW5lcmF0ZSBzdHJpbmdzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZlxuICAgIGNoYXJhY3RlcnMuICopXG52YWwgZ2VuJyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgd2l0aG91dCBlbXB0eSBzdHJpbmdzLiAqKVxudmFsIGdlbl9ub25lbXB0eScgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoLiAqKVxudmFsIGdlbl93aXRoX2xlbmd0aCA6IGludCAtPiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBOb3RlIHRoYXQgW3N0cmluZ10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW1N0cmluZy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIGludHJvZHVjZVxuICAgIFtTdHJpbmcuU3RhYmxlLlNldF0sIFtTdHJpbmcuU3RhYmxlLk1hcF0sIFtTdHJpbmcuU3RhYmxlLlRhYmxlXSwgYW5kIHByb3ZpZGUgaW50ZXJmYWNlXG4gICAgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2gsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX2NvbXBhcmFibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5WMVxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBib29sIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbnR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuQm9vbClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5Cb29sXG5cbmluY2x1ZGUgKFxuICBCYXNlLkJvb2wgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Cb29sXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuQm9vbClcblxubGV0IG9mX3N0cmluZ19odW0gPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgdGFibGUgPSBTdHJpbmcuQ2FzZWxlc3MuVGFibGUuY3JlYXRlICgpIGluXG4gICAgICAgWyBmYWxzZSwgWyBcImZhbHNlXCI7IFwibm9cIjsgXCIwXCIgXTsgdHJ1ZSwgWyBcInRydWVcIjsgXCJ5ZXNcIjsgXCIxXCIgXSBdXG4gICAgICAgfD4gTGlzdC5pdGVyIH5mOihmdW4gKGJvb2wsIHN0cmluZ3MpIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgc3RyaW5ncyB+ZjooZnVuIHN0cmluZyAtPlxuICAgICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OnN0cmluZyB+ZGF0YTpib29sO1xuICAgICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcucHJlZml4IHN0cmluZyAxKSB+ZGF0YTpib29sKSk7XG4gICAgICAgdGFibGUpXG4gIGluXG4gIGxldCByYWlzZV9pbnZhbGlkIGlucHV0ID1cbiAgICBsZXQgZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA9IFN0cmluZy5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIChmb3JjZSB0YWJsZSkpIGluXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiQm9vbC5vZl9zdHJpbmdfaHVtOiBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAoaW5wdXQgOiBzdHJpbmcpXG4gICAgICAgICAgKGV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUgOiBTdHJpbmcuU2V0LnQpXVxuICBpblxuICBmdW4gc3RyaW5nIC0+XG4gICAgSGFzaHRibC5maW5kX2FuZF9jYWxsIChmb3JjZSB0YWJsZSkgc3RyaW5nIH5pZl9mb3VuZDpGbi5pZCB+aWZfbm90X2ZvdW5kOnJhaXNlX2ludmFsaWRcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuYm9vbFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYm9vbFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYm9vbFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQnl0ZXNcblxuICAgIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuQnl0ZXMpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGJ5dGVzXG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCBnZW4nIGNoYXJfZ2VuID0gU3RyaW5nLmdlbicgY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbiBjaGFyX2dlbiA9XG4gIFN0cmluZy5nZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zdHJpbmdcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5DaGFyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuKCogaW5jbHVkZSBbQmFzZS5DaGFyXSBhZnRlciB0aGUgYXBwbGljYXRpb24gb2YgW0lkZW50aWZpYWJsZS5FeHRlbmRdIHRvIHJlcGxhY2UgdGhlXG4gICBbQ29tcGFyYWJsZV0gZnVuY3Rpb25zIHdpdGggdGhlIHBlcnZhc2l2ZSB2ZXJzaW9ucyAqKVxuaW5jbHVkZSAoXG4gIEJhc2UuQ2hhciA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkNoYXJcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcblxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5DaGFyXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY2hhclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuY2hhclxubGV0IGdlbl9kaWdpdCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9kaWdpdFxubGV0IGdlbl9sb3dlcmNhc2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfbG93ZXJjYXNlXG5sZXQgZ2VuX3VwcGVyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl91cHBlcmNhc2VcbmxldCBnZW5fYWxwaGEgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfYWxwaGFcbmxldCBnZW5fYWxwaGFudW0gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfYWxwaGFudW1cbmxldCBnZW5fcHJpbnQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfcHJpbnRcbmxldCBnZW5fd2hpdGVzcGFjZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl93aGl0ZXNwYWNlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbHVzaXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduID0gQmFzZS5TaWduXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBlbnVtZXJhdGVdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFNpZ25cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbikgKFN0YWJsZS5WMSlcbiIsImV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5GbG9hdFxuXG4gICAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzLCB0eXBlcmVwXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUMSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoVClcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQgPSBUXG5cbmxldCB2YWxpZGF0ZV9vcmRpbmFyeSB0ID1cbiAgVmFsaWRhdGUub2ZfZXJyb3Jfb3B0XG4gICAgKGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gICAgIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gTm9uZVxuICAgICB8IEMuSW5maW5pdGUgLT4gU29tZSBcInZhbHVlIGlzIGluZmluaXRlXCJcbiAgICAgfCBDLk5hbiAtPiBTb21lIFwidmFsdWUgaXMgTmFOXCIpXG47O1xuXG5tb2R1bGUgViA9IHN0cnVjdFxuICBtb2R1bGUgWlogPSBDb21wYXJhYmxlLlZhbGlkYXRlIChUKVxuXG4gIGxldCB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXggdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX2JvdW5kIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfbGJvdW5kIHQgfm1pbilcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfdWJvdW5kIH5tYXggdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX3Vib3VuZCB0IH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBWXG5cbm1vZHVsZSBSb2J1c3RfY29tcGFyZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgKCogaW50ZW5kZWQgdG8gYmUgYSB0b2xlcmFuY2Ugb24gaHVtYW4tZW50ZXJlZCBmbG9hdHMgKilcblxuICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiBmbG9hdFxuXG4gICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gZmxvYXRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiBmbG9hdFxuICAgIGVuZCkgOiBTID0gc3RydWN0XG4gICAgKCogV2UgaGF2ZSB0ZXN0IGluIHRoZSB0cmVlIHRoYXQgcmVseSBvbiB0aGVzZSBmdW5jdGlvbnMgbm90IGFsbG9jYXRpbmcsIGV2ZW4gd2l0aG91dFxuICAgICAgIFhfTElCUkFSWV9JTkxJTkcuIFRoZSBvbmx5IHdheSB0byBlbnN1cmUgdGhhdCB0aGVzZSBkb24ndCBjcmVhdGUgdGVtcG9yYXJ5IGJveGVkXG4gICAgICAgZmxvYXRzIHdpdGhvdXQgWF9MSUJSQVJZX0lOTElORyBpcyBmb3IgdGhpcyBjb2RlIHRvIHNlZSB0aGUgZmxvYXQgb3BlcmF0aW9ucyBhc1xuICAgICAgIGV4dGVybmFscywgYXMgZGVmaW5lZCBpbiBbUGVydmFzaXZlc10uIFRoYXQncyB3aHkgd2UgdXNlIFtQb2x5XSBhbmQgZmxvYXRcbiAgICAgICBhcml0aG1ldGljIGZyb20gW0NhbWxdLiAqKVxuICAgIG9wZW4gUG9seVxuXG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IFQucm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPj0uICkgeCB5ID0geCA+PSBTdGRsaWIuKCAtLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPD0uICkgeCB5ID0geSA+PS4geFxuICAgIGxldCAoID0uICkgeCB5ID0geCA+PS4geSAmJiB5ID49LiB4XG4gICAgbGV0ICggPi4gKSB4IHkgPSB4ID4gU3RkbGliLiggKy4gKSB5IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoIDwuICkgeCB5ID0geSA+LiB4XG4gICAgbGV0ICggPD4uICkgeCB5ID0gbm90ICh4ID0uIHkpXG5cbiAgICBsZXQgcm9idXN0bHlfY29tcGFyZSB4IHkgPVxuICAgICAgbGV0IGQgPSBTdGRsaWIuKCAtLiApIHggeSBpblxuICAgICAgaWYgZCA8IFN0ZGxpYi4oIH4tLiApIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgICAgdGhlbiAtMVxuICAgICAgZWxzZSBpZiBkID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgMFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTdcbiAgZW5kKVxuXG5pbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkZsb2F0Lk9cbiAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlXG5lbmRcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBpbmNsdWRlIChcbiAgICBCYXNlLkZsb2F0LlRlcnNlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0LlRlcnNlXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5sZXQgcm9idXN0X3NpZ24gdCA6IFNpZ24udCA9IGlmIHQgPi4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwuIDAuIHRoZW4gTmVnIGVsc2UgWmVyb1xuXG4oKiBUaGVyZSBhcmUgdHdvIGlzc3VlczpcbiAgIC0gRmxvYXQuc2lnbiB1c2VkIHRvIHVzZSByb2J1c3QgY29tcGFyaXNvbiwgYW5kIHVzZXJzIG9mIFtDb3JlXSBtaWdodCBoYXZlIGNvbWUgdG9cbiAgICAgZGVwZW5kIG9uIHRoaXMuXG4gICAtIFJvYnVzdG5lc3MgYXNpZGUsIHdoYXQgd2UgZ2V0IGZyb20gQ29tcGFyYWJsZS5XaXRoX3plcm8gd291bGQgbWFwIG5hbiB0byBOZWcuXG4qKVxubGV0IHNpZ24gPSByb2J1c3Rfc2lnblxuXG4oKiBTdGFuZGFyZCAxMiBzaWduaWZpY2FudCBkaWdpdHMsIGV4cG9uZW50aWFsIG5vdGF0aW9uIHVzZWQgYXMgbmVjZXNzYXJ5LCBndWFyYW50ZWVkIHRvXG4gICBiZSBhIHZhbGlkIE9DYW1sIGZsb2F0IGxleGVtLCBub3QgdG8gbG9vayBsaWtlIGFuIGludC4gKilcbmxldCB0b19zdHJpbmdfMTIgeCA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIHgpXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5mbG9hdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmxvYXRcbmxldCBnZW5fdW5pZm9ybV9leGNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZVxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9pbmNsdXNpdmVcbmxldCBnZW5fd2l0aG91dF9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3dpdGhvdXRfbmFuXG5sZXQgZ2VuX2Zpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfZmluaXRlXG5sZXQgZ2VuX3Bvc2l0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9wb3NpdGl2ZVxubGV0IGdlbl9uZWdhdGl2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmVcbmxldCBnZW5femVybyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgWmVyb1xubGV0IGdlbl9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5hblxubGV0IGdlbl9zdWJub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIFN1Ym5vcm1hbFxubGV0IGdlbl9ub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5vcm1hbFxubGV0IGdlbl9pbmZpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgSW5maW5pdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuSW50XG5cbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuSW50XG5pbmNsdWRlIEJhc2UuSW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludClcblxuKCogVGhpcyBpcyBhbHJlYWR5IGRlZmluZWQgYnkgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8sIGJ1dCBTaWduLm9mX2ludCBpc1xuICAgbW9yZSBkaXJlY3QuICopXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludF9pbnRmfVtCYXNlLkludF9pbnRmXX0uICopXG5cbm1vZHVsZSB0eXBlIFJvdW5kID0gQmFzZS5JbnQuUm91bmRcblxubW9kdWxlIHR5cGUgU3RhYmxlID0gc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0YWJsZV9jb21wYXJhYmxlLldpdGhfc3RhYmxlX3dpdG5lc3MuVjEgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIZXhhYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBIZXggOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZ19odW0gOiA/ZGVsaW1pdGVyOmNoYXIgLT4gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgKCpfIEVuc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGFuIGV4dGVuc2lvbiBvZiBbQmFzZS5JbnQuSGV4YWJsZV0uICopXG4gIGluY2x1ZGUgQmFzZS5JbnQuSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0IGFuZCBtb2R1bGUgSGV4IDo9IEhleFxuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4gIGluY2x1ZGUgSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TX2ludCB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU191bmJvdW5kZWQgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TX3VuYm91bmRlZFxuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbl93aXRoX3N0YWJsZSA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuc2lvblxuXG4gIG1vZHVsZSBTdGFibGUgOlxuICAgIFN0YWJsZSB3aXRoIHR5cGUgVjEudCA9IHQgYW5kIHR5cGUgVjEuY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQzMilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50MzJcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50MzIpXG5cbnR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50MzJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDMyXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDY0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQ2NFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2NClcblxudHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludDY0fVtCYXNlLkludDY0XX0uICopXG5cbigqKiB7MiBJbnRlcmZhY2UgZnJvbSBCYXNlfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkludDY0XG5lbmRcblxuKCoqIHsyIEV4dGVuc2lvbnN9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlXG4gIEludF9pbnRmLkV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQmluIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA6PSBCYXNlLkludDYzLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpbl9lbXVsYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2NClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcud3JhcF9leG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcudW53cmFwXG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgdHlwZSAnYSBiaW5hYmxlID0gKG1vZHVsZSBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IGJpbmFibGVfb2ZfcmVwciA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBiIGJpbmFibGUgPSBmdW5jdGlvblxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IChtb2R1bGUgSW50KVxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gKG1vZHVsZSBCaW5fZW11bGF0ZWQpXG4gIDs7XG5cbiAgbGV0IGJpbmFibGUgOiBCYXNlLkludDYzLnQgYmluYWJsZSA9IGJpbmFibGVfb2ZfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuXG4gIGluY2x1ZGUgKHZhbCBiaW5hYmxlKVxuXG4gIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLmJpbl9zaGFwZV9pbnQ2M1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBkZXJpdmluZyBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICAgIGluY2x1ZGUgQmluXG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgICBCYXNlLkludDYzIDpcbiAgICAgICAgICBCYXNlLkNvbXBhcmFibGUuU1xuICAgICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBCYXNlLkludDYzLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgICAgKCogVGhpcyBzZXJpYWxpemF0aW9uIGlzIHN0YWJsZSwgc2luY2UgaXQgZWl0aGVyIGRlbGVnYXRlcyB0byBbaW50XSBvclxuICAgICAgICAgW0ludDYzX2VtdWxdLiAqKVxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbigqIFRoaXMgW2luY2x1ZGUgc3RydWN0XSBpcyByZXF1aXJlZCBiZWNhdXNlIGl0IGxldHMgdXMgc2hhZG93IFt0XSB3aGVuIHdlIGluY2x1ZGVcbiAgIFtCYXNlLkludDYzXSBsYXRlciBvbi4gKilcbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudFxuZW5kXG5cbmxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2ludDYzXG5sZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX2ludDYzXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDYzKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgQmluXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyYWJsZS5Db21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gQmFzZS5JbnQ2M1xuaW5jbHVkZSBCYXNlLkludDYzXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDYzKVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuXG4gICgqKiBbdG9faW50NjNdIGFuZCBbb2ZfaW50NjNfZXhuXSBlbmNvZGUgW3RdIGZvciB1c2UgaW4gd2lyZSBwcm90b2NvbHM7IHRoZXkgYXJlXG4gICAgICBpbnRlbmRlZCB0byBhdm9pZCBhbGxvY2F0aW9uIG9uIDY0LWJpdCBtYWNoaW5lcyBhbmQgc2hvdWxkIGJlIGltcGxlbWVudGVkXG4gICAgICBlZmZpY2llbnRseS4gIFtvZl9pbnQ2M19leG4gKHRvX2ludDYzIHQpID0gdF0gZm9yIGFsbCBbdF07IFtvZl9pbnQ2M19leG5dIHJhaXNlcyBmb3JcbiAgICAgIGlucHV0cyBub3QgcHJvZHVjZWQgYnkgW3RvX2ludDYzXS4gKilcbiAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG5cbiAgdmFsIG9mX2ludDYzX2V4biA6IEludDYzLnQgLT4gdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuXG4gICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgdmFsIG9mX2ludDYzX2V4biA6IEludDYzLnQgLT4gdFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG4gIG9wZW4gQmFzZS5FeHBvcnRcbiAgb3BlbiBCaW5fcHJvdC5TdGRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBWMS5jb21wYXJhdG9yXG4gICAgbGV0IGJpbl9uYW1lID0gXCJ1bml0X3YyXCJcblxuICAgIGxldCBfX2Jpbl9yZWFkX3RfXyAoXyA6IEJpbl9wcm90LkNvbW1vbi5idWYpIH5wb3NfcmVmIChfIDogaW50KSA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIGJpbl9uYW1lICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZF90IChfIDogQmluX3Byb3QuQ29tbW9uLmJ1ZikgfnBvc19yZWY6KF8gOiBpbnQgcmVmKSA9ICgpXG5cbiAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3NoYXBlX3QgPSBCaW5fcHJvdC5TaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIGJpbl9uYW1lKSkgW11cbiAgICBsZXQgYmluX3NpemVfdCAoKSA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3QgKF8gOiBCaW5fcHJvdC5Db21tb24uYnVmKSB+cG9zICgpID0gcG9zXG4gICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICBsZXQgYmluX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCBmZmJkMWEzMDdhNGY3ZWJlODAyMzA0MGZlY2ViZjY5NyB8fV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuVW5pdClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5Vbml0XG5cbnR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci51bml0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bml0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci51bml0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWcgZW5kXG5cbnR5cGUgbSA9IChtb2R1bGUgUylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgb3BlbiBTZXhwbGliLlN0ZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCA9IEJhc2UuTGF6eS5tYXBcbiAgICBsZXQgY29tcGFyZSA9IEJhc2UuTGF6eS5jb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTdGFibGUuVjEudFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSAoQmFzZS5MYXp5IDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLk5hdGl2ZWludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLk5hdGl2ZWludFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5OYXRpdmVpbnQpXG5cbnR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm5hdGl2ZWludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLk5vdGhpbmcudCA9IHxcblxuICAgIG1vZHVsZSBTaGFwZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9zaGFwZV1cbiAgICBlbmRcblxuICAgIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gQmFzZS5Ob3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3NoYXBlX3QgPSBTaGFwZS5iaW5fc2hhcGVfdFxuICAgIGxldCB0cF9sb2MgPSBbJWhlcmVdLnBvc19mbmFtZSBeIFwiLlN0YWJsZS5WMS50XCJcbiAgICBsZXQgYWxsID0gW11cbiAgICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gICAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGNvbXBhcmUgYSBfID0gdW5yZWFjaGFibGVfY29kZSBhXG4gICAgbGV0IGJpbl9zaXplX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGJpbl93cml0ZV90IF9idWYgfnBvczpfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF8gPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSB0cF9sb2MgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkX3QgX2J1ZiB+cG9zX3JlZiA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfcmVhZF9lcnJvciAoRW1wdHlfdHlwZSB0cF9sb2MpICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgOztcblxuICAgIGxldCBiaW5fdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYi5Db252X2Vycm9yLmVtcHR5X3R5cGUgdHBfbG9jIHNleHBcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuTm90aGluZ1xuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChCYXNlLk5vdGhpbmcpIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBuZXZlcl9yZXR1cm5zID0gTm90aGluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuZXZlcl9yZXR1cm5zID0gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gQmFzZS5PcmRlcmluZy50ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuT3JkZXJpbmcgd2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIChCYXNlLk9yZGVyaW5nIDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlJlZlxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIFQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgbGV0IHJlYWRfb25seSA9IEZuLmlkXG4gIGxldCBvZl9yZWYgPSBGbi5pZFxuICBsZXQgdG9fcmVmID0gRm4uaWRcbiAgbGV0IHNldCA9ICggOj0gKVxuICBsZXQgZ2V0ID0gKCAhIClcbmVuZFxuIiwiKCogV2UgZG9uJ3QganVzdCBpbmNsdWRlIFNleHBsaWIuU3RkIGJlY2F1c2Ugb25lIGNhbiBvbmx5IGRlZmluZSBIYXNodGJsIG9uY2UgaW4gdGhpc1xuICAgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIFtpbmNsdWRlXWQgZmlyc3Qgc28gdGhhdCBldmVyeXRoaW5nIGVsc2Ugc2hhZG93cyBpdCAqKVxuaW5jbHVkZSBDb3JlX3BlcnZhc2l2ZXNcblxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcbmluY2x1ZGUgRGVwcmVjYXRlX3BpcGVfYmFuZ1xuaW5jbHVkZSBFaXRoZXIuRXhwb3J0XG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuaW5jbHVkZSBJbnRlcmZhY2VzXG5pbmNsdWRlIExpc3QuSW5maXhcbmluY2x1ZGUgTmV2ZXJfcmV0dXJuc1xuaW5jbHVkZSBPcmRlcmluZy5FeHBvcnRcbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5pbmNsdWRlIFJlc3VsdC5FeHBvcnRcblxudHlwZSAtJ2EgcmV0dXJuID0gJ2EgV2l0aF9yZXR1cm4ucmV0dXJuID0gcHJpdmF0ZSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cblxuKCoqIFJhaXNlZCBpZiBtYWxsb2MgaW4gQyBiaW5kaW5ncyBmYWlsIChlcnJubyAqIHNpemUpLiAqKVxuZXhjZXB0aW9uIENfbWFsbG9jX2V4biBvZiBpbnQgKiBpbnRcblxuKCogZXJybm8sIHNpemUgKilcbmxldCAoKSA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkNfbWFsbG9jX2V4blwiIChDX21hbGxvY19leG4gKDAsIDApKVxuXG5leGNlcHRpb24gRmluYWxseSA9IEV4bi5GaW5hbGx5XG5cbmxldCBmc3QzICh4LCBfLCBfKSA9IHhcbmxldCBzbmQzIChfLCB5LCBfKSA9IHlcbmxldCB0cmQzIChfLCBfLCB6KSA9IHpcblxuKCoqIFtwaHlzX3NhbWVdIGlzIGxpa2UgW3BoeXNfZXF1YWxdLCBidXQgd2l0aCBhIG1vcmUgZ2VuZXJhbCB0eXBlLiAgW3BoeXNfc2FtZV0gaXMgdXNlZnVsXG4gICAgd2hlbiBkZWFsaW5nIHdpdGggZXhpc3RlbnRpYWwgdHlwZXMsIHdoZW4gb25lIGhhcyBhIHBhY2tlZCB2YWx1ZSBhbmQgYW4gdW5wYWNrZWQgdmFsdWVcbiAgICB0aGF0IG9uZSB3YW50cyB0byBjaGVjayBhcmUgcGh5c2ljYWxseSBlcXVhbC4gIE9uZSBjYW4ndCB1c2UgW3BoeXNfZXF1YWxdIGluIHN1Y2ggYVxuICAgIHNpdHVhdGlvbiBiZWNhdXNlIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LiAqKVxuZXh0ZXJuYWwgcGh5c19zYW1lIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2JbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcVwiXG5cbmxldCAoICUgKSA9IEludC4oICUgKVxubGV0ICggLyUgKSA9IEludC4oIC8lIClcbmxldCAoIC8vICkgPSBJbnQuKCAvLyApXG5sZXQgKCA9PT4gKSBhIGIgPSAobm90IGEpIHx8IGJcbmxldCBicHJpbnRmID0gUHJpbnRmLmJwcmludGZcbmxldCBjb25zdCA9IEZuLmNvbnN0XG5sZXQgZXByaW50ZiA9IFByaW50Zi5lcHJpbnRmXG5sZXQgZXJyb3IgPSBPcl9lcnJvci5lcnJvclxubGV0IGVycm9yX3MgPSBPcl9lcnJvci5lcnJvcl9zXG5sZXQgZmFpbHdpdGhmID0gQmFzZS5QcmludGYuZmFpbHdpdGhmXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgZm9yY2UgPSBCYXNlLkxhenkuZm9yY2VcbmxldCBmcHJpbnRmID0gUHJpbnRmLmZwcmludGZcbmxldCBpbnZhbGlkX2FyZ2YgPSBCYXNlLlByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBpZnByaW50ZiA9IFByaW50Zi5pZnByaW50ZlxubGV0IGlzX25vbmUgPSBPcHRpb24uaXNfbm9uZVxubGV0IGlzX3NvbWUgPSBPcHRpb24uaXNfc29tZVxubGV0IGtzcHJpbnRmID0gUHJpbnRmLmtzcHJpbnRmXG5sZXQgb2tfZXhuID0gT3JfZXJyb3Iub2tfZXhuXG5sZXQgcGh5c19lcXVhbCA9IEJhc2UucGh5c19lcXVhbFxubGV0IHByaW50X3MgPSBTdGRpby5wcmludF9zXG5sZXQgZXByaW50X3MgPSBTdGRpby5lcHJpbnRfc1xubGV0IHByaW50ZiA9IFByaW50Zi5wcmludGZcbmxldCBwcm90ZWN0ID0gRXhuLnByb3RlY3RcbmxldCBwcm90ZWN0eCA9IEV4bi5wcm90ZWN0eFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgcm91bmQgPSBGbG9hdC5yb3VuZFxubGV0ICggKiouICkgPSBCYXNlLiggKiouIClcbmxldCAoICUuICkgPSBCYXNlLiggJS4gKVxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcbmxldCB1bnN0YWdlID0gU3RhZ2VkLnVuc3RhZ2VcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5fb3B0aW9uXG5cbigqIFdpdGggdGhlIGZvbGxvd2luZyBhbGlhc2VzLCB3ZSBhcmUganVzdCBtYWtpbmcgZXh0cmEgc3VyZSB0aGF0IHRoZSB0b3BsZXZlbCBzZXhwXG4gICBjb252ZXJ0ZXJzIGxpbmUgdXAgd2l0aCB0aGUgb25lcyBpbiBvdXIgbW9kdWxlcy4gKilcblxuXG5pbmNsdWRlIFR5cGVyZXBfbGliLlN0ZF9pbnRlcm5hbFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSwgW2J5dGVzXSwgYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZVxuICAgICBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50ID0gSW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQzMiA9IEludDMyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsYXp5X3QgPSAnYSBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYnl0ZXMgPSBCeXRlcy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gICgqIEJpbl9wcm90IGhhcyBvcHRpbWl6ZWQgZnVuY3Rpb25zIGZvciBmbG9hdCBhcnJheXMgKilcbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmQgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBGbG9hdC50IGFycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSBmbG9hdF9hcnJheSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgZmxvYXRfYXJyYXkgOj0gZmxvYXRfYXJyYXkpXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgYXJyYXlcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBib29sXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgY2hhclxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGZsb2F0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50MzJcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQ2NFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxhenlfdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxpc3RcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBzdHJpbmdcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlc1xuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIHJlZlxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHVuaXRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5lbmRcbndpdGggdHlwZSAnYSBhcnJheSA6PSAnYSBhcnJheVxud2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxud2l0aCB0eXBlIGNoYXIgOj0gY2hhclxud2l0aCB0eXBlIGZsb2F0IDo9IGZsb2F0XG53aXRoIHR5cGUgaW50IDo9IGludFxud2l0aCB0eXBlIGludDMyIDo9IGludDMyXG53aXRoIHR5cGUgaW50NjQgOj0gaW50NjRcbndpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbndpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG53aXRoIHR5cGUgJ2Egb3B0aW9uIDo9ICdhIG9wdGlvblxud2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbndpdGggdHlwZSBieXRlcyA6PSBieXRlc1xud2l0aCB0eXBlICdhIGxhenlfdCA6PSAnYSBsYXp5X3RcbndpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG53aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuXG5sZXQgc2V4cF9vZl9leG4gPSBFeG4uc2V4cF9vZl90XG5cblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFJlcHIgPSBJbnQ2M1xuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl0gW0BAaW1tZWRpYXRlNjRdXG5cbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9yZXByIDogUmVwci50IC0+IHRcbiAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcHIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBvZl9yZXByID0gRm4uaWRcbiAgbGV0IHRvX3JlcHIgPSBGbi5pZFxuXG4gIGxldCB0b19zdHJpbmcgbiA9XG4gICAgbGV0IG9wZW4gUmVwciBpblxuICAgIGxldCBraWIgPSBvZl9pbnQgMTAyNCBpblxuICAgIGxldCBtaWIgPSBraWIgKiBraWIgaW5cbiAgICBsZXQgZ2liID0ga2liICogbWliIGluXG4gICAgbGV0IG5fYWJzID0gYWJzIG4gaW5cbiAgICBpZiBuX2FicyA8IGtpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVkQlwiICh0b19pbnRfZXhuIG4pXG4gICAgZWxzZSBpZiBuX2FicyA8IG1pYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnS1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGtpYilcbiAgICBlbHNlIGlmIG5fYWJzIDwgZ2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdNXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgbWliKVxuICAgIGVsc2Ugc3ByaW50ZiBcIiVnR1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGdpYilcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IG4gPSBTZXhwLkF0b20gKHRvX3N0cmluZyBuKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgYnl0ZXNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuICh0b19yZXByIHQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEJpZ2FycmF5XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlX2JpZ3N0cmluZ1xuXG4gICAgbW9kdWxlIFogOiBzaWdcbiAgICAgIHR5cGUgdCA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYmlnc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgKCogYmlnc3RyaW5nJ3Mgc2VyaWFsaXphdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBzdGFibGUuICBXZSBhc3NlcnQgaXQgaGVyZSByYXRoZXJcbiAgICAgICAgIHRoYW4gYXNzZXJ0aW5nIGl0IGluIHR3byBzZXBhcmF0ZSBwbGFjZXMgZm9yIHRoZSBiaW5faW8gYW5kIHNleHAgZGVmaW5pdGlvbnMuICopXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFpcblxuICAgIHR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gU3RhYmxlLlYxXG5pbmNsdWRlIFRcbm1vZHVsZSBVbnN0YWJsZSA9IFRcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24ubWFwIG1heF9tZW1fd2FpdGluZ19nYyB+ZjpCeXRlX3VuaXRzMC5ieXRlc19pbnRfZXhuXG4gIGluXG4gIGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemVcbjs7XG5cbmxldCBzdWJfc2hhcmVkID8ocG9zID0gMCkgP2xlbiAoYnN0ciA6IHQpID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgQXJyYXkxLnN1YiBic3RyIHBvcyBsZW5cbjs7XG5cbigqIERlc3RydWN0aW9uICopXG5cbmV4dGVybmFsIHVuc2FmZV9kZXN0cm95IDogdCAtPiB1bml0ID0gXCJiaWdzdHJpbmdfZGVzdHJveV9zdHViXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3lfYW5kX3Jlc2l6ZSA6IHQgLT4gbGVuOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfcmVhbGxvY1wiXG5cbigqIFJlYWRpbmcgLyB3cml0aW5nIGJpbi1wcm90ICopXG5cbmxldCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgPyhwb3MgPSAwKSA/bGVuIHJlYWRlciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiB0IGxlbiB+cG9zIGluXG4gIGxldCBsaW1pdCA9IHBvcyArIGxlbiBpblxuICBjaGVja19hcmdzIH5sb2M6XCJyZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzXCIgdCB+cG9zIH5sZW47XG4gIGxldCBpbnZhbGlkX2RhdGEgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gICAgYEludmFsaWRfZGF0YSAoRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG4gIGluXG4gIGxldCByZWFkIGJpbl9yZWFkZXIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiBsaW1pdCAtIHBvc1xuICAgIHRoZW4gYE5vdF9lbm91Z2hfZGF0YVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgICBtYXRjaFxuICAgICAgICB0cnkgYE9rIChiaW5fcmVhZGVyIHQgfnBvc19yZWYpIHdpdGhcbiAgICAgICAgfCBleG4gLT4gYEludmFsaWRfZGF0YSAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICAgIHdpdGhcbiAgICAgIHwgYEludmFsaWRfZGF0YSBfIGFzIHggLT4geFxuICAgICAgfCBgT2sgcmVzdWx0IC0+XG4gICAgICAgIGxldCBleHBlY3RlZF9wb3MgPSBwb3MgKyBsZW4gaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPSBleHBlY3RlZF9wb3NcbiAgICAgICAgdGhlbiBgT2sgKHJlc3VsdCwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9kYXRhXG4gICAgICAgICAgICBcInBvc19yZWYgPD4gZXhwZWN0ZWRfcG9zXCJcbiAgICAgICAgICAgICghcG9zX3JlZiwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBpbnRdKVxuICBpblxuICBtYXRjaFxuICAgIHJlYWQgQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgfnBvcyB+bGVuOkJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICB3aXRoXG4gIHwgKGBOb3RfZW5vdWdoX2RhdGEgfCBgSW52YWxpZF9kYXRhIF8pIGFzIHggLT4geFxuICB8IGBPayAoZWxlbWVudF9sZW5ndGgsIHBvcykgLT5cbiAgICBpZiBlbGVtZW50X2xlbmd0aCA8IDBcbiAgICB0aGVuIGludmFsaWRfZGF0YSBcIm5lZ2F0aXZlIGVsZW1lbnQgbGVuZ3RoICVkXCIgZWxlbWVudF9sZW5ndGggWyVzZXhwX29mOiBpbnRdXG4gICAgZWxzZSByZWFkIHJlYWRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgfnBvcyB+bGVuOmVsZW1lbnRfbGVuZ3RoXG47O1xuXG5sZXQgcmVhZF9iaW5fcHJvdCB0ID9wb3MgP2xlbiByZWFkZXIgPVxuICBtYXRjaCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgP3BvcyA/bGVuIHJlYWRlciB3aXRoXG4gIHwgYE9rIHggLT4gT2sgeFxuICB8IGBJbnZhbGlkX2RhdGEgZSAtPiBFcnJvciAoRXJyb3IudGFnIGUgfnRhZzpcIkludmFsaWQgZGF0YVwiKVxuICB8IGBOb3RfZW5vdWdoX2RhdGEgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwibm90IGVub3VnaCBkYXRhXCJcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIHQgPyhwb3MgPSAwKSB3cml0ZSB+c2l6ZTpkYXRhX2xlbiB2ID1cbiAgbGV0IHRvdGFsX2xlbiA9IGRhdGFfbGVuICsgQmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIGlmIHBvcyA8IDBcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBuZWdhdGl2ZSBwb3NcIiBwb3MgWyVzZXhwX29mOiBpbnRdO1xuICBpZiBwb3MgKyB0b3RhbF9sZW4gPiBsZW5ndGggdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdDogbm90IGVub3VnaCByb29tXCJcbiAgICAgIChgcG9zIHBvcywgYHBvc19hZnRlcl93cml0aW5nIChwb3MgKyB0b3RhbF9sZW4pLCBgYmlnc3RyaW5nX2xlbmd0aCAobGVuZ3RoIHQpKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3Mgb2YgaW50IF0gKiBbIGBwb3NfYWZ0ZXJfd3JpdGluZyBvZiBpbnQgXSAqIFsgYGJpZ3N0cmluZ19sZW5ndGggb2YgaW50IF1dO1xuICBsZXQgcG9zX2FmdGVyX3NpemVfaGVhZGVyID0gQmluX3Byb3QuVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIHQgfnBvcyBkYXRhX2xlbiBpblxuICBsZXQgcG9zX2FmdGVyX2RhdGEgPSB3cml0ZSB0IH5wb3M6cG9zX2FmdGVyX3NpemVfaGVhZGVyIHYgaW5cbiAgaWYgcG9zX2FmdGVyX2RhdGEgLSBwb3MgPD4gdG90YWxfbGVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90IGJ1ZyFcIlxuICAgICAgKCBgcG9zX2FmdGVyX2RhdGEgcG9zX2FmdGVyX2RhdGFcbiAgICAgICwgYHN0YXJ0X3BvcyBwb3NcbiAgICAgICwgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGhcbiAgICAgICwgYGRhdGFfbGVuIGRhdGFfbGVuXG4gICAgICAsIGB0b3RhbF9sZW4gdG90YWxfbGVuIClcbiAgICAgIFslc2V4cF9vZjpcbiAgICAgICAgWyBgcG9zX2FmdGVyX2RhdGEgb2YgaW50IF1cbiAgICAgICAgKiBbIGBzdGFydF9wb3Mgb2YgaW50IF1cbiAgICAgICAgKiBbIGBiaW5fcHJvdF9zaXplX2hlYWRlcl9sZW5ndGggb2YgaW50IF1cbiAgICAgICAgKiBbIGBkYXRhX2xlbiBvZiBpbnQgXVxuICAgICAgICAqIFsgYHRvdGFsX2xlbiBvZiBpbnQgXV07XG4gIHBvc19hZnRlcl9kYXRhXG47O1xuXG5sZXQgd3JpdGVfYmluX3Byb3QgdCA/cG9zICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB2ID1cbiAgbGV0IHNpemUgPSB3cml0ZXIuc2l6ZSB2IGluXG4gIHdyaXRlX2Jpbl9wcm90X2tub3duX3NpemUgdCA/cG9zIHdyaXRlci53cml0ZSB+c2l6ZSB2XG47O1xuXG4oKiBIZXggZHVtcCAqKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcmVjIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zIH5jaGFyID1cbiAgbGV0IHBvcycgPSBwb3MgLSAxIGluXG4gIGlmIHBvcycgPj0gbWluX3BvcyAmJiBDaGFyLiggPSApIChnZXQgYnVmIHBvcycpIGNoYXJcbiAgdGhlbiBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWYgfm1pbl9wb3MgfnBvczpwb3MnIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIGxldCBkYXRhX2VuZCA9XG4gICAgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmOnQgfm1pbl9wb3M6cG9zIH5wb3M6KHBvcyArIGxlbikgfmNoYXI6cGFkZGluZ1xuICBpblxuICB0b19zdHJpbmcgdCB+cG9zIH5sZW46KGRhdGFfZW5kIC0gcG9zKVxuOztcblxubGV0IGdldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmdfbG9jYWwgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBcbiAgICAobGV0IGRhdGFfZW5kID1cbiAgICAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gICAgIGluXG4gICAgIGxldCBsZW4gPSBkYXRhX2VuZCAtIHBvcyBpblxuICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlX2xvY2FsIGxlbiBpblxuICAgICBUb19ieXRlcy5ibGl0IH5zcmM6dCB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0W0Bjb2xkXSBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbCB+dmFsdWUgfmxlbiA9XG4gIFByaW50Zi5mYWlsd2l0aGZcbiAgICBcIkJpZ3N0cmluZy5zZXRfJXNfcGFkZGVkX2ZpeGVkX3N0cmluZzogJVMgaXMgbG9uZ2VyIHRoYW4gJWRcIlxuICAgIGhlYWRfb3JfdGFpbFxuICAgIChbJWdsb2JhbGl6ZTogc3RyaW5nXSB2YWx1ZSlcbiAgICBsZW5cbiAgICAoKVxuOztcblxubGV0IHNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKHZhbHVlIFtAbG9jYWxdKSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuIHRoZW4gc2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIH5oZWFkX29yX3RhaWw6XCJ0YWlsXCIgfnZhbHVlIH5sZW47XG4gIEZyb21fc3RyaW5nLmJsaXQgfnNyYzp2YWx1ZSB+ZHN0OnQgfnNyY19wb3M6MCB+ZHN0X3Bvczpwb3MgfmxlbjpzbGVuO1xuICBmb3IgaSA9IHBvcyArIHNsZW4gdG8gcG9zICsgbGVuIC0gMSBkb1xuICAgIHNldCB0IGkgcGFkZGluZ1xuICBkb25lXG47O1xuXG5sZXQgcmVjIGZpcnN0X25vbm1hdGNoIH5idWYgfnBvcyB+bWF4X3BvcyB+Y2hhciA9XG4gIGlmIHBvcyA8PSBtYXhfcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zKSBjaGFyXG4gIHRoZW4gZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zOihJbnQuc3VjYyBwb3MpIH5tYXhfcG9zIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgc2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAodmFsdWUgW0Bsb2NhbF0pID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW4gdGhlbiBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbDpcImhlYWRcIiB+dmFsdWUgfmxlbjtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOihwb3MgKyBsZW4gLSBzbGVuKSB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zIHRvIHBvcyArIGxlbiAtIHNsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfYmVnaW4gPSBmaXJzdF9ub25tYXRjaCB+YnVmOnQgfnBvcyB+bWF4X3BvczoocG9zICsgbGVuIC0gMSkgfmNoYXI6cGFkZGluZyBpblxuICB0b19zdHJpbmcgdCB+cG9zOmRhdGFfYmVnaW4gfmxlbjoobGVuIC0gKGRhdGFfYmVnaW4gLSBwb3MpKVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmdfbG9jYWwgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBcbiAgICAobGV0IGRhdGFfYmVnaW4gPSBmaXJzdF9ub25tYXRjaCB+YnVmOnQgfnBvcyB+bWF4X3BvczoocG9zICsgbGVuIC0gMSkgfmNoYXI6cGFkZGluZyBpblxuICAgICBsZXQgbGVuID0gbGVuIC0gKGRhdGFfYmVnaW4gLSBwb3MpIGluXG4gICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGVfbG9jYWwgbGVuIGluXG4gICAgIFRvX2J5dGVzLmJsaXQgfnNyYzp0IH5zcmNfcG9zOmRhdGFfYmVnaW4gfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5iaWdzdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYmlnc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3RcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICAgIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgICB9XG5cbiAgbGV0IHRvX3N0cmluZyB0IHYgPVxuICAgIGxldCBsZW4gPSB0LnNpemUgdiBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIGxlbiBpblxuICAgIGxldCBwb3MgPSB0LndyaXRlIGJ1ZiB+cG9zOjAgdiBpblxuICAgIGFzc2VydCAocG9zID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIGxldCBzdHIgPSBCaWdzdHJpbmcudG9fc3RyaW5nIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5cbiAgbGV0IHRvX2J5dGVzIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19ieXRlcyBidWYgaW5cbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHN0clxuICA7O1xuZW5kXG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgPVxuICAgIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gICAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICAgIH1cblxuICBsZXQgb2Zfc3RyaW5nIHQgc3RyaW5nID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcgaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IHYgPSB0LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgYXNzZXJ0ICghcG9zX3JlZiA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHZcbiAgOztcblxuICBsZXQgb2ZfYnl0ZXMgdCBieXRlcyA9XG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5vZl9ieXRlcyBieXRlcyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuZW5kXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJpbl9wcm90Lk1kNVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IFN0cmluZy5zZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCBzID0gcyB8PiBTdHJpbmcudF9vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuZW5kXG5cbmxldCBoYXNoX2ZvbGRfdCBhY2N1bSB0ID0gU3RyaW5nLmhhc2hfZm9sZF90IGFjY3VtIChULnRvX2JpbmFyeSB0KVxubGV0IGhhc2ggdCA9IFN0cmluZy5oYXNoIChULnRvX2JpbmFyeSB0KVxuXG5tb2R1bGUgQXNfYmluYXJ5X3N0cmluZyA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gU3RyaW5nLnNleHBfb2ZfdCAoVC50b19iaW5hcnkgeClcbiAgICAgIGxldCB0X29mX3NleHAgeCA9IFQub2ZfYmluYXJ5X2V4biAoU3RyaW5nLnRfb2Zfc2V4cCB4KVxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBULnRvX2JpbmFyeVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBULm9mX2JpbmFyeV9leG5cblxuICAgICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgICBtb2R1bGUgQmluYWJsZSA9IFN0cmluZy5TdGFibGUuVjFcblxuICAgICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdHJpbmcuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICAgIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF90XG4gICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgIGxldCBvZl9iaW5hYmxlID0gRm4uaWRcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluX3Byb3QuTWQ1LlN0YWJsZS5WMVxuXG4gICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICBCaW5fcHJvdC5NZDUuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgIG9mX2JpbmFibGVcbiAgICAgICAgdG9fYmluYWJsZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBkaWdlc3Rfc3RyaW5nIHMgPSBNZDVfbGliLnN0cmluZyBzXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IGRpZ2VzdF9udW1fYnl0ZXMgPSAxNlxubGV0IHRvX2hleCA9IFQudG9faGV4XG5sZXQgZnJvbV9oZXggPSBULm9mX2hleF9leG5cbmxldCBvZl9oZXhfZXhuID0gVC5vZl9oZXhfZXhuXG5sZXQgb2ZfYmluYXJ5X2V4biA9IFQub2ZfYmluYXJ5X2V4blxubGV0IHRvX2JpbmFyeSA9IFQudG9fYmluYXJ5XG5sZXQgZGlnZXN0X3N0cmluZyA9IFN0YWJsZS5kaWdlc3Rfc3RyaW5nXG5sZXQgZGlnZXN0X2J5dGVzID0gTWQ1X2xpYi5ieXRlc1xuXG5leHRlcm5hbCBjYW1sX3N5c19vcGVuXG4gIDogIHN0cmluZ1xuICAtPiBTdGRsaWIub3Blbl9mbGFnIGxpc3RcbiAgLT4gcGVybTppbnRcbiAgLT4gaW50XG4gID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgY2FtbF9zeXNfY2xvc2UgOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuZXh0ZXJuYWwgZGlnZXN0X2ZkX2Jsb2NraW5nIDogaW50IC0+IHN0cmluZyA9IFwiY29yZV9tZDVfZmRcIlxuXG5sZXQgZGlnZXN0X2ZpbGVfYmxvY2tpbmcgcGF0aCA9XG4gIG9mX2JpbmFyeV9leG5cbiAgICAoQmFzZS5FeG4ucHJvdGVjdHhcbiAgICAgICAoY2FtbF9zeXNfb3BlbiBwYXRoIFsgT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5IF0gfnBlcm06MG8wMDApXG4gICAgICAgfmY6ZGlnZXN0X2ZkX2Jsb2NraW5nXG4gICAgICAgfmZpbmFsbHk6Y2FtbF9zeXNfY2xvc2UpXG47O1xuXG5sZXQgZmlsZSA9IGRpZ2VzdF9maWxlX2Jsb2NraW5nXG5cbmxldCBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuID1cbiAgb2ZfYmluYXJ5X2V4biAoU3RkbGliLkRpZ2VzdC5jaGFubmVsIGNoYW5uZWwgbGVuKVxuOztcblxubGV0IGNoYW5uZWwgY2hhbm5lbCBsZW4gPVxuICBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuXG47O1xuXG5sZXQgb3V0cHV0X2Jsb2NraW5nIHQgb2MgPSBTdGRsaWIuRGlnZXN0Lm91dHB1dCBvYyAodG9fYmluYXJ5IHQpXG5sZXQgb3V0cHV0IG9jIHQgPSBvdXRwdXRfYmxvY2tpbmcgdCBvY1xubGV0IGlucHV0X2Jsb2NraW5nIGljID0gb2ZfYmluYXJ5X2V4biAoU3RkbGliLkRpZ2VzdC5pbnB1dCBpYylcbmxldCBpbnB1dCA9IGlucHV0X2Jsb2NraW5nXG5sZXQgZGlnZXN0X3N1YmJ5dGVzID0gTWQ1X2xpYi5zdWJieXRlc1xubGV0IHN0cmluZyA9IGRpZ2VzdF9zdHJpbmdcbmxldCBieXRlcyA9IGRpZ2VzdF9ieXRlc1xubGV0IHN1YmJ5dGVzIHMgcG9zIGxlbiA9IGRpZ2VzdF9zdWJieXRlcyBzIH5wb3MgfmxlblxuXG5sZXQgZGlnZXN0X2Jpbl9wcm90IHdyaXRlciB2YWx1ZSA9XG4gIGRpZ2VzdF9zdHJpbmcgKENvcmVfYmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZyB3cml0ZXIgdmFsdWUpXG47O1xuXG5leHRlcm5hbCBjX2RpZ2VzdF9zdWJiaWdzdHJpbmdcbiAgOiAgQmlnc3RyaW5nLnRcbiAgLT4gcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHJlczpCeXRlcy50XG4gIC0+IHVuaXRcbiAgPSBcImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcIlxuXG5sZXQgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICgqIEl0J3MgbW9yZSBlZmZpY2llbnQgdG8gYWxsb2NhdGUgdGhlIHJlc3VsdCBvbiB0aGUgT0NhbWwgc2lkZSBhbmQgZGVjbGFyZSB0aGUgQ1xuICAgICBmdW5jdGlvbiBhcyBub2FsbG9jIHRoYW4gdG8gbGV0IHRoZSBDIGZ1bmN0aW9uIGFsbG9jYXRlLiAqKVxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGNfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuIH5yZXM7XG4gIE1kNV9saWIudW5zYWZlX29mX2JpbmFyeVxuICAgIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlcylcbjs7XG5cbmxldCBkaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvc1xuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbjs7XG5cbmxldCBkaWdlc3RfYmlnc3RyaW5nIGJ1ZiA9XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbjooQmlnc3RyaW5nLmxlbmd0aCBidWYpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5hYmxlMFxuXG4oKiBbb2Zfc3RyaW5nXSBhbmQgW3RvX3N0cmluZ10gY2FuJ3QgZ28gaW4gYmluYWJsZTAubWwgZHVlIHRvIGEgY3ljbGljIGRlcGVuZGVuY3kuICopXG5sZXQgb2Zfc3RyaW5nIG0gc3RyaW5nID0gb2ZfYmlnc3RyaW5nIG0gKEJpZ3N0cmluZy5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyBtIHQgPSBCaWdzdHJpbmcudG9fc3RyaW5nICh0b19iaWdzdHJpbmcgbSB0KVxuIiwiKCogRnVuY3Rpb25zIGZvciBwYXJzaW5nIHRpbWUgem9uZSBkYXRhYmFzZSBmaWxlcyAoemljIGZpbGVzKS5cblxuICAgQSB0aW1lIHpvbmUgZmlsZSBjb25zaXN0cyAoY29uY2VwdHVhbGx5IC0gdGhlIHJlcHJlc2VudGF0aW9uIGlzIG1vcmVcbiAgIGNvbXBhY3QpIG9mIGFuIG9yZGVyZWQgbGlzdCBvZiAoVGltZS50ICogW2xvY2FsX3RpbWVfdHlwZV0pIHRoYXQgbWFya1xuICAgdGhlIGJvdW5kYXJpZXMgKG1hcmtlZCBmcm9tIHRoZSBlcG9jaCkgYXQgd2hpY2ggdmFyaW91cyB0aW1lIGFkanVzdG1lbnRcbiAgIHJlZ2ltZXMgYXJlIGluIGVmZmVjdC4gIFRoaXMgY2FuIGFsc28gYmUgdGhvdWdodCBvZiBhcyBicmVha2luZyBkb3duIGFsbFxuICAgdGltZSBwYXN0IHRoZSBlcG9jaCBpbnRvIHJhbmdlcyB3aXRoIGEgW2xvY2FsX3RpbWVfdHlwZV0gdGhhdCBkZXNjcmliZXMgdGhlXG4gICBvZmZzZXQgZnJvbSBHTVQgdG8gYXBwbHkgdG8gZWFjaCByYW5nZSB0byBnZXQgbG9jYWwgdGltZS5cbiopXG5cbm9wZW4gSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBab25lX2ludGZcblxuZXhjZXB0aW9uIEludmFsaWRfZmlsZV9mb3JtYXQgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZ1bGxfZGF0YSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEluZGV4ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuZXh0ID0gSW50LnN1Y2NcbiAgICAgICAgbGV0IHByZXYgPSBJbnQucHJlZFxuICAgICAgICBsZXQgYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb24gPSAtMVxuXG4gICAgICAgICgqIFNvbWUgZXhpc3RpbmcgY2xpZW50cyBleHBlY3QgW2luZGV4ID49IDBdLCBzbyB3ZSBuZXZlciBzZXJpYWxpemUgYSBuZWdhdGl2ZVxuICAgICAgICAgICBpbmRleC4gVGhpcyBjb252ZXJzaW9uIGNhbiBiZSByZW1vdmVkIGlmIG5ldyBzdGFibGUgdmVyc2lvbnMgYXJlIG1pbnRlZC4gKilcbiAgICAgICAgbGV0IHRvX2V4dGVybmFsIHQgPSBtYXggMCB0XG5cbiAgICAgICAgKCogV2hlbiB0aGUgaW5kZXggb2YgYSB0aW1lIHpvbmUgd2l0aCBubyB0cmFuc2l0aW9ucyBpcyBjb252ZXJ0ZWQgdmlhIHRvX2V4dGVybmFsLFxuICAgICAgICAgICBpdHMgdmFsdWUgYmVjb21lcyAwIGV2ZW4gdGhvdWdoIGl0cyB0cmFuc2l0aW9uIGFycmF5IGlzIGVtcHR5IChhbmQgaXQgc2hvdWxkXG4gICAgICAgICAgIGhhdmUgYmVlbiAtMSkuIFdoZW4gdGhlIGNvbnZlcnRlZCB2YWx1ZSBpcyBjaGFuZ2VkIGJhY2sgdG8gYSBab25lLnQgdGhyb3VnaFxuICAgICAgICAgICBvZl9leHRlcm5hbCwgcmV0dXJuaW5nIHRoaXMgdmFsdWUgZm9yIGl0cyBpbmRleCBjb3VsZCByZXN1bHQgaW4gdW5zYWZlIGFycmF5XG4gICAgICAgICAgIGFjY2Vzc2VzIHRvIHRoZSB0cmFuc2l0aW9uIGFycmF5IG9mIHRoZSB6b25lIChzaW5jZSB0aGVyZSBpcyBubyB0cmFuc2l0aW9uIGF0XG4gICAgICAgICAgIGluZGV4IDApLiBBbHNvLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGtlZXAgdGhlIGNvbnZlcnRlZCBpbmRleCBiZWNhdXNlIGl0XG4gICAgICAgICAgIGlzIGludGVuZGVkIHRvIGJlIGEgbXV0YWJsZSB2YWx1ZSB1c2VkIGZvciBjYWNoaW5nLiBTbyBvZl9leHRlcm5hbCBhbHdheXMgc2V0c1xuICAgICAgICAgICB0aGUgaW5kZXggdG8gLTEsIHdoaWNoIGlzIGEgc2FmZSB2YWx1ZS4gKilcbiAgICAgICAgbGV0IG9mX2V4dGVybmFsIChfIDogdCkgPSAtMVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICAgIEludC5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2V4dGVybmFsXG4gICAgICAgICAgICB0b19leHRlcm5hbFxuICAgICAgICA7O1xuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZVxuICAgICAgICAgICAgKEludClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZXh0ZXJuYWxcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaW1lID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyB1dGNfb2Zmc2V0X2luX3NlY29uZHMgOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgaXNfZHN0IDogYm9vbFxuICAgICAgICAgIDsgYWJicnYgOiBzdHJpbmdcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgKCogaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBsZWFwIHNlY29uZHMgc2hvdWxkIGJlIGFwcGxpZWQgLSB1bnVzZWRcbiAgICAgICAgIGJlY2F1c2Ugd2UgYXJlIHRyYW5zbGF0aW5nIGJhc2VkIG9uIGEgZXBvY2ggc3lzdGVtIGNsb2NrIChzZWUgdGhlIENvcmVfem9uZVxuICAgICAgICAgZG9jdW1lbnRhdGlvbikuICopXG4gICAgICBtb2R1bGUgTGVhcF9zZWNvbmQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBzZWNvbmRzIDogaW50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBUcmFuc2l0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyBzdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgbmV3X3JlZ2ltZSA6IFJlZ2ltZS50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7XG4gICAgICAgICAgZGlnZXN0IDogTWQ1LkFzX2JpbmFyeV9zdHJpbmcuU3RhYmxlLlYxLnQgb3B0aW9uXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgOiBUcmFuc2l0aW9uLnQgYXJyYXlcbiAgICAgICAgOyAoKiBjYWNoZXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRyYW5zaXRpb24gd2UgdXNlZCB0byBtYWtlIGxvb2t1cHMgZmFzdGVyICopXG4gICAgICAgICAgbXV0YWJsZSBsYXN0X3JlZ2ltZV9pbmRleCA6IEluZGV4LnRcbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA6IFJlZ2ltZS50XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzIDogTGVhcF9zZWNvbmQudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICgqIHRoaXMgcmVsaWVzIG9uIHpvbmVzIHdpdGggdGhlIHNhbWUgbmFtZSBoYXZpbmcgdGhlIHNhbWUgdHJhbnNpdGlvbnMgKilcbiAgICAgIGxldCBjb21wYXJlIHQxIHQyID0gU3RyaW5nLmNvbXBhcmUgdDEubmFtZSB0Mi5uYW1lXG4gICAgICBsZXQgb3JpZ2luYWxfZmlsZW5hbWUgem9uZSA9IHpvbmUub3JpZ2luYWxfZmlsZW5hbWVcbiAgICAgIGxldCBkaWdlc3Qgem9uZSA9IHpvbmUuZGlnZXN0XG5cbiAgICAgIG1vZHVsZSBab25lX2ZpbGUgOiBzaWdcbiAgICAgICAgdmFsIGlucHV0X3R6X2ZpbGUgOiB6b25lbmFtZTpzdHJpbmcgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBsZXQgYm9vbF9vZl9pbnQgaSA9IGkgPD4gMFxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDMyID1cbiAgICAgICAgICBsZXQgbG9uZyA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgbGV0IGludDMyX29mX2NoYXIgY2hyID0gSW50MzIub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGZ1biBpYyAtPlxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZyB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgbGV0IHNiMSA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDApKSAyNCBpblxuICAgICAgICAgICAgbGV0IHNiMiA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDEpKSAxNiBpblxuICAgICAgICAgICAgbGV0IHNiMyA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDIpKSA4IGluXG4gICAgICAgICAgICBsZXQgc2I0ID0gaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMykgaW5cbiAgICAgICAgICAgIEludDMyLmJpdF9vciAoSW50MzIuYml0X29yIHNiMSBzYjIpIChJbnQzMi5iaXRfb3Igc2IzIHNiNClcbiAgICAgICAgOztcblxuICAgICAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIG9uIG51bWJlcnMgdGhhdCB3aWxsIGZpdCBpbnRvIGEgMzEtYml0XG4gICAgICAgICAgIGludC4gVU5JWCB0aW1lc3RhbXBzIHdvbid0LCBmb3IgZXhhbXBsZS4gIEluIG91ciBjYXNlIHRoaXMgaXMgb25seSB1c2VkXG4gICAgICAgICAgIHRvIGhvbGQgc21hbGwgbnVtYmVycyB0aGF0IGFyZSBuZXZlciBpbnRlcnByZXRlZCBhcyB0aW1lc3RhbXBzLiAqKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQgaWMgPSBJbnQzMi50b19pbnRfZXhuIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyA9IEludDYzLm9mX2ludDMyIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMgaWMgPVxuICAgICAgICAgIGxldCBpbnQ2M19vZl9jaGFyIGNociA9IEludDYzLm9mX2ludF9leG4gKGludF9vZl9jaGFyIGNocikgaW5cbiAgICAgICAgICBsZXQgc2hpZnQgYyBiaXRzID0gSW50NjMuc2hpZnRfbGVmdCAoaW50NjNfb2ZfY2hhciBjKSBiaXRzIGluXG4gICAgICAgICAgbGV0IGxvbmdfbG9uZyA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZ19sb25nIH5wb3M6MCB+bGVuOjg7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDApIDU2IGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDEpIDQ4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAyKSA0MCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMykgMzIpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDQpIDI0KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA1KSAxNikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNikgOCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoaW50NjNfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA3KSkgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfbGlzdCBpYyB+bGVuIH5mID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgYyBsc3QgPVxuICAgICAgICAgICAgaWYgYyA+IDAgdGhlbiBsb29wIChjIC0gMSkgKGYgaWMgOjogbHN0KSBlbHNlIExpc3QucmV2IGxzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBsZW4gW11cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYXJyYXkgaWMgfmxlbiB+ZiA9IEFycmF5Lm9mX2xpc3QgKGlucHV0X2xpc3QgaWMgfmxlbiB+ZilcblxuICAgICAgICBsZXQgaW5wdXRfcmVnaW1lIGljID1cbiAgICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyBpblxuICAgICAgICAgIGxldCBpc19kc3QgPSBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkgaW5cbiAgICAgICAgICBsZXQgYWJicnZfaW5kZXggPSBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpIGluXG4gICAgICAgICAgbGV0IGx0IGFiYnJ2ID0geyBSZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzOyBpc19kc3Q7IGFiYnJ2IH0gaW5cbiAgICAgICAgICBsdCwgYWJicnZfaW5kZXhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuID1cbiAgICAgICAgICBsZXQgcmF3X2FiYnJ2cyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0IGljIH5sZW4gfmY6KGZ1biBpYyAtPiBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2NoYXIgaWMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgbGV0IF8sIGluZGV4ZWRfYWJicnZzID1cbiAgICAgICAgICAgIExpc3QuZm9sZCByYXdfYWJicnZzIH5pbml0OigwLCBNYXAuUG9seS5lbXB0eSkgfmY6KGZ1biAoaW5kZXgsIGFiYnJ2cykgYyAtPlxuICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgfCAnXFwwMDAnIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICAgICAgICAgICAgbGV0IG5leHRfaW5kZXggPSBpbmRleCArIFN0cmluZy5sZW5ndGggZGF0YSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWJicnZzID0gTWFwLnNldCBhYmJydnMgfmtleTppbmRleCB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgICAgICAgbmV4dF9pbmRleCwgYWJicnZzXG4gICAgICAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYztcbiAgICAgICAgICAgICAgICBpbmRleCwgYWJicnZzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPD4gMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChJbnZhbGlkX2ZpbGVfZm9ybWF0XG4gICAgICAgICAgICAgICAgIFwibWlzc2luZyBcXDAwMCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIgaW4gaW5wdXRfYWJicmV2aWF0aW9uc1wiKTtcbiAgICAgICAgICBpbmRleGVkX2FiYnJ2c1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB1dGNfbG9jYWxfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBzdGRfd2FsbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGxlYXBfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHlwZV9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGFiYnJ2X2NoYXJfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX3RpbWVzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfdHJhbnNpdGlvbiB+bGVuOnRyYW5zaXRpb25fY291bnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2luZGljZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdFxuICAgICAgICAgICAgICBpY1xuICAgICAgICAgICAgICB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpXG4gICAgICAgICAgICAgIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlZ2ltZXMgPSBpbnB1dF9saXN0IGljIH5mOmlucHV0X3JlZ2ltZSB+bGVuOnR5cGVfY291bnQgaW5cbiAgICAgICAgICBsZXQgYWJicmV2aWF0aW9ucyA9IGlucHV0X2FiYnJldmlhdGlvbnMgaWMgfmxlbjphYmJydl9jaGFyX2NvdW50IGluXG4gICAgICAgICAgbGV0IGxlYXBfc2Vjb25kcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfbGVhcF9zZWNvbmQgfmxlbjpsZWFwX2NvdW50IGluXG4gICAgICAgICAgKCogVGhlIGZvbGxvd2luZyB0d28gYXJyYXlzIGluZGljYXRlIHR3byBib29sZWFuIHZhbHVlcyBwZXIgcmVnaW1lIHRoYXRcbiAgICAgICAgICAgICByZXByZXNlbnQgYSB0aHJlZS12YWx1ZSB0eXBlIHRoYXQgd291bGQgdHJhbnNsYXRlIHRvOlxuXG4gICAgICAgICAgICAgdHlwZSB0cmFuc2l0aW9uX3R5cGUgPSBVVEMgfCBTdGFuZGFyZCB8IFdhbGxfY2xvY2tcblxuICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgdGhlIHN5c3RlbSBsaWJyYXJ5IHdoZW4gaGFuZGxpbmcgdGhlIGNhc2Ugd2hlcmUgdGhlXG4gICAgICAgICAgICAgVFogdmFyaWFibGUgaXMgc2V0LCBub3QgdG8gYSB0aW1lIHpvbmUgbmFtZSwgYnV0IGluc3RlYWQgaXMgb2YgdGhlIGZvcm06XG5cbiAgICAgICAgICAgICBUWiA9IFwic3RkIG9mZnNldCBkc3Qgb2Zmc2V0LCBydWxlXCJcblxuICAgICAgICAgICAgIFdoaWNoIGlzIGRlZXBseSBvYnNjdXJlLCBhbmQgYWxtb3N0IGNlcnRhaW5seSBhIG1pc3Rha2UgdG8gdXNlLiAgVGhpcyBsaWJyYXJ5IG1ha2VzXG4gICAgICAgICAgICAgbm8gcHJldGVuc2UgYWJvdXQgaGFuZGxpbmcgdGhpcyBjYXNlLiAgV2UgY29udGludWUgdG8gcmVhZCB0aGVtIGluIGZvclxuICAgICAgICAgICAgIGNvbXBsZXRlbmVzcywgYW5kIGJlY2F1c2UgaXQncyBwb3NzaWJsZSB0aGF0IHdlIHdpbGwgbGF0ZXIgZGlzY292ZXIgYSBjYXNlIHdoZXJlXG4gICAgICAgICAgICAgdGhleSBhcmUgdXNlZC4gKilcbiAgICAgICAgICBsZXQgX3N0ZF93YWxsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjpzdGRfd2FsbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBfdXRjX2xvY2FsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjp1dGNfbG9jYWxfY291bnQgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9XG4gICAgICAgICAgICBBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCByZWdpbWVzIH5mOihmdW4gKGx0LCBhYmJydl9pbmRleCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGFiYnJ2ID0gTWFwLmZpbmRfZXhuIGFiYnJldmlhdGlvbnMgYWJicnZfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgbHQgYWJicnYpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJhd190cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcDJfZXhuIHRyYW5zaXRpb25fdGltZXMgdHJhbnNpdGlvbl9pbmRpY2VzIH5mOihmdW4gdGltZSBpbmRleCAtPlxuICAgICAgICAgICAgICBsZXQgcmVnaW1lID0gcmVnaW1lcy4oaW5kZXgpIGluXG4gICAgICAgICAgICAgIHRpbWUsIHJlZ2ltZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBsZXQgcmVjIG1ha2VfdHJhbnNpdGlvbnMgYWNjIGwgPVxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBBcnJheS5vZl9saXN0IChMaXN0LnJldiBhY2MpXG4gICAgICAgICAgICAgIHwgKHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCwgbmV3X3JlZ2ltZSkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICAgICAgICh7IFRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoOyBuZXdfcmVnaW1lIH0gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnMgW10gcmF3X3RyYW5zaXRpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgPVxuICAgICAgICAgICAgbWF0Y2ggQXJyYXkuZmluZCByZWdpbWVzIH5mOihmdW4gciAtPiBub3Qgci5SZWdpbWUuaXNfZHN0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmVnaW1lcy4oMClcbiAgICAgICAgICAgIHwgU29tZSBsdHQgLT4gbHR0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWUgfmRpZ2VzdCAtPlxuICAgICAgICAgICAgeyBuYW1lXG4gICAgICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lID0gU29tZSBvcmlnaW5hbF9maWxlbmFtZVxuICAgICAgICAgICAgOyBkaWdlc3QgPSBTb21lIGRpZ2VzdFxuICAgICAgICAgICAgOyB0cmFuc2l0aW9uc1xuICAgICAgICAgICAgOyBsYXN0X3JlZ2ltZV9pbmRleCA9IEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG4gICAgICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlXG4gICAgICAgICAgICA7IGxlYXBfc2Vjb25kc1xuICAgICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kIGljID1cbiAgICAgICAgICBsZXQgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoID0gaW5wdXRfbGVhcF9zZWNvbmQgaWMgaW5cbiAgICAgICAgICBsZXQgc2Vjb25kcyA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgeyBMZWFwX3NlY29uZC50aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IHNlY29uZHMgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWFkX2hlYWRlciBpYyA9XG4gICAgICAgICAgbGV0IG1hZ2ljID1cbiAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNCBpblxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWYgfnBvczowIH5sZW46NDtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5lcXVhbCBtYWdpYyBcIlRaaWZcIilcbiAgICAgICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwibWFnaWMgY2hhcmFjdGVycyBUWmlmIG5vdCBwcmVzZW50XCIpO1xuICAgICAgICAgIGxldCB2ZXJzaW9uID1cbiAgICAgICAgICAgIG1hdGNoIEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgJ1xcMDAwJyAtPiBgVjFcbiAgICAgICAgICAgIHwgU29tZSAnMicgLT4gYFYyXG4gICAgICAgICAgICB8IFNvbWUgJzMnIC0+IGBWM1xuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwiZXhwZWN0ZWQgdmVyc2lvbiwgZm91bmQgbm90aGluZ1wiKVxuICAgICAgICAgICAgfCBTb21lIGJhZF92ZXJzaW9uIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IChzcHJpbnRmIFwidmVyc2lvbiAoJWMpIGlzIGludmFsaWRcIiBiYWRfdmVyc2lvbikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBzcGFjZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBpbiB0aGUgZm9ybWF0ICopXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6KEJ5dGVzLmNyZWF0ZSAxNSkgfnBvczowIH5sZW46MTU7XG4gICAgICAgICAgdmVyc2lvblxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX3YxIGljID1cbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2FzX2ludDYzIH5pbnB1dF9sZWFwX3NlY29uZCBpY1xuICAgICAgICA7O1xuXG4gICAgICAgICgqXG4gICAgICAgICAgIHZlcnNpb24gMiB0aW1lem9uZSBmaWxlcyBoYXZlIHRoZSBmb3JtYXQ6XG5cbiAgICAgICAgICAgcGFydCAxIC0gZXhhY3RseSB0aGUgc2FtZSBhcyB2MVxuXG4gICAgICAgICAgIHBhcnQgMiAtIHNhbWUgZm9ybWF0IGFzIHYxLCBleGNlcHQgdGhhdCA4IGJ5dGVzIGFyZSB1c2VkIHRvIHN0b3JlXG4gICAgICAgICAgIHRyYW5zaXRpb24gdGltZXMgYW5kIGxlYXAgc2Vjb25kc1xuXG4gICAgICAgICAgIHBhcnQgMyAtIGEgbmV3bGluZS1lbmNsb2RlZCwgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGVcbiAgICAgICAgICAgc3RyaW5nIGZvciB1c2UgaW4gaGFuZGxpbmcgaW5zdGFudHMgYWZ0ZXIgdGhlIGxhc3QgdHJhbnNpdGlvbiB0aW1lXG4gICAgICAgICAgIHN0b3JlZCBpbiB0aGUgZmlsZSAod2l0aCBub3RoaW5nIGJldHdlZW4gdGhlIG5ld2xpbmVzIGlmIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIFBPU0lYIHJlcHJlc2VudGF0aW9uIGZvciBzdWNoIGluc3RhbnRzKVxuXG4gICAgICAgICAgIFdlIGhhbmRsZSBmaWxlcyBpbiB0aGlzIGZvcm1hdCBieSBwYXJzaW5nIHRoZSBmaXJzdCBwYXJ0IGV4YWN0bHkgYXMgYSB2MVxuICAgICAgICAgICB0aW1lem9uZSBmaWxlIGFuZCB0aGVuIGNvbnRpbnVpbmcgdG8gcGFyc2Ugd2l0aCA2NGJpdCByZWFkaW5nIGZ1bmN0aW9ucyBpbiB0aGVcbiAgICAgICAgICAgcmlnaHQgcGxhY2VzLlxuXG4gICAgICAgICAgIFZlcnNpb24gMyB0aW1lem9uZSBmaWxlcyBhcmUgdGhlIHNhbWUgYXMgdmVyc2lvbiAyLCBleGNlcHQgdGhlXG4gICAgICAgICAgIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlIHN0cmluZyBpbiBwYXJ0IDMgbWF5IHVzZSB0d28gbWlub3JcbiAgICAgICAgICAgZXh0ZW5zaW9ucyB0byB0aGUgUE9TSVggVFogZm9ybWF0ICh0aGUgaG91cnMgcGFydCBvZiBpdHMgdHJhbnNpdGlvblxuICAgICAgICAgICB0aW1lcyBtYXkgYmUgc2lnbmVkIGFuZCByYW5nZSBmcm9tIC0xNjcgdGhyb3VnaCAxNjcgaW5zdGVhZCBvZiB0aGVcbiAgICAgICAgICAgUE9TSVgtcmVxdWlyZWQgdW5zaWduZWQgdmFsdWVzIGZyb20gMCB0aHJvdWdoIDI0OyBhbmQgRFNUIGlzIGluIGVmZmVjdCBhbGxcbiAgICAgICAgICAgeWVhciBpZiBpdCBzdGFydHMgSmFudWFyeSAxIGF0IDAwOjAwIGFuZCBlbmRzIERlY2VtYmVyIDMxIGF0IDI0OjAwIHBsdXMgdGhlXG4gICAgICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiBkYXlsaWdodCBzYXZpbmcgYW5kIHN0YW5kYXJkIHRpbWUpLlxuXG4gICAgICAgICAgIEFzIHdlIGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIHdpdGggcGFydCAzIGFueXdheSwgd2UgY2FuIGp1c3QgcmVhZCB2M1xuICAgICAgICAgICBmaWxlcyBhcyB2Mi5cbiAgICAgICAgKilcbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWMgPVxuICAgICAgICAgIGxldCAoXyA6IHN0cmluZyAtPiBvcmlnaW5hbF9maWxlbmFtZTpzdHJpbmcgLT4gZGlnZXN0Ok1kNV9saWIudCAtPiB0KSA9XG4gICAgICAgICAgICBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB0aGUgaGVhZGVyIGlzIGZ1bGx5IHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IFsgYFYxIHwgYFYyIHwgYFYzIF1dIChyZWFkX2hlYWRlciBpYykgdmVyc2lvbik7XG4gICAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kID1cbiAgICAgICAgICAgIGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQ6aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlblxuICAgICAgICAgICAgfmlucHV0X3RyYW5zaXRpb246aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgICB+aW5wdXRfbGVhcF9zZWNvbmRcbiAgICAgICAgICAgIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGUgfnpvbmVuYW1lIH5maWxlbmFtZSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBwcm90ZWN0eCAoSW5fY2hhbm5lbC5jcmVhdGUgZmlsZW5hbWUpIH5maW5hbGx5OkluX2NoYW5uZWwuY2xvc2UgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBsZXQgbWFrZV96b25lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZWFkX2hlYWRlciBpYyB3aXRoXG4gICAgICAgICAgICAgICAgfCBgVjEgLT4gaW5wdXRfdHpfZmlsZV92MSBpY1xuICAgICAgICAgICAgICAgIHwgKGBWMiB8IGBWMykgYXMgdmVyc2lvbiAtPiBpbnB1dF90el9maWxlX3YyX29yX3YzIH52ZXJzaW9uIGljXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkaWdlc3QgPSBNZDUuZGlnZXN0X2ZpbGVfYmxvY2tpbmcgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgbGV0IHIgPSBtYWtlX3pvbmUgem9uZW5hbWUgfm9yaWdpbmFsX2ZpbGVuYW1lOmZpbGVuYW1lIH5kaWdlc3QgaW5cbiAgICAgICAgICAgICAgcilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBJbnZhbGlkX2ZpbGVfZm9ybWF0IHJlYXNvbiAtPlxuICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCIlcyAtICVzXCIgZmlsZW5hbWUgcmVhc29uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgb2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIH5uYW1lIH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBhc3NlcnQgKG9mZnNldCA+PSAtMjQgJiYgb2Zmc2V0IDw9IDI0KTtcbiAgICAgICAgbGV0IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA9IEludDYzLm9mX2ludCAob2Zmc2V0ICogNjAgKiA2MCkgaW5cbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBOb25lXG4gICAgICAgIDsgZGlnZXN0ID0gTm9uZVxuICAgICAgICA7IHRyYW5zaXRpb25zID0gW3x8XVxuICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdCA9IGZhbHNlOyBhYmJydiA9IG5hbWUgfVxuICAgICAgICA7IGxlYXBfc2Vjb25kcyA9IFtdXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0IH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMFxuICAgICAgICAgIHRoZW4gXCJVVENcIlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIlVUQyVzJWRcIiAoaWYgb2Zmc2V0IDwgMCB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIChhYnMgb2Zmc2V0KVxuICAgICAgICBpblxuICAgICAgICBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuRnVsbF9kYXRhLlYxXG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSB0Lm5hbWVcblxubGV0IGxpa2VseV9tYWNoaW5lX3pvbmVzID1cbiAgcmVmIFsgXCJBbWVyaWNhL05ld19Zb3JrXCI7IFwiRXVyb3BlL0xvbmRvblwiOyBcIkFzaWEvSG9uZ19Lb25nXCI7IFwiQW1lcmljYS9DaGljYWdvXCIgXVxuOztcblxubGV0IGlucHV0X3R6X2ZpbGUgPSBab25lX2ZpbGUuaW5wdXRfdHpfZmlsZVxubGV0IHV0YyA9IG9mX3V0Y19vZmZzZXQgfmhvdXJzOjBcbmxldCBuYW1lIHpvbmUgPSB6b25lLm5hbWVcbmxldCByZXNldF90cmFuc2l0aW9uX2NhY2hlIHQgPSB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG5cbigqIFJhaXNlcyBpZiBbaW5kZXggPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNdICopXG5sZXQgZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCA9XG4gIGlmIGluZGV4IDwgMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCkubmV3X3JlZ2ltZVxuOztcblxuKCogSW4gXCJhYnNvbHV0ZSBtb2RlXCIsIGEgbnVtYmVyIG9mIHNlY29uZHMgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IG9mIHRoYXQgbWFueVxuICAgc2Vjb25kcyBmcm9tIHRoZSBVTklYIGVwb2NoLCBpZ25vcmluZyBsZWFwIHNlY29uZHMuXG5cbiAgIEluIFwiZGF0ZSBhbmQgb2ZkYXkgbW9kZVwiLCB5b3UgaW50ZXJwcmV0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhcyBhIG51bWJlciBvZiBkYXlzIGluXG4gICBjb21iaW5hdGlvbiB3aXRoIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQsIHdoaWNoIGdpdmVzIHlvdSBhIGNhbGVuZGFyIGRheSBhbmRcbiAgIGEgY2xvY2sgZmFjZSB0aW1lLiBUaGVuIHlvdSB0YWtlIHRoZSB0aW1lIHRoYXQgdGhvc2UgcmVwcmVzZW50IGluIHNvbWUgcmVsZXZhbnRcbiAgIHRpbWV6b25lLlxuXG4gICBPZiBjb3Vyc2UsIGlmIHRoZSB0aW1lem9uZSBpbiBxdWVzdGlvbiBoYXMgRFNUIHNoaWZ0cywgdGhlIGRhdGUgYW5kIG9mZGF5IG1pZ2h0XG4gICByZXByZXNlbnQgdHdvIG9yIHplcm8gdGltZXMuIFRoZXNlIHRpbWVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIGVpdGhlciB0aGVcbiAgIHByZXZpb3VzIFVUQyBvZmZzZXQgb3IgdGhlIG5leHQgb25lLCBpbiBhIHdheSB3aG9zZSBwcmVjaXNlIGRldGFpbHMgeW91IHByb2JhYmx5XG4gICBzaG91bGRuJ3QgZGVwZW5kIG9uLlxuXG4gICAoRm9yIHRoZSBjdXJpb3VzLCB3aGF0IHdlIGRvIGlzOiBjb21wdXRlIHRoZSBcInJlbGF0aXZlIHRpbWVcIiBvZiB0aGUgc2hpZnQgYWNjb3JkaW5nIHRvXG4gICB0aGUgbmV3IHJlZ2ltZSwgYW5kIGFzc2lnbiByZWxhdGl2ZSB0aW1lcyB0byB0aGUgb2xkIHJlZ2ltZSBvciBuZXcgcmVnaW1lIGRlcGVuZGluZyBvblxuICAgd2hpY2ggc2lkZSBvZiB0aGUgc2hpZnQgdGltZSB0aGV5IG9jY3VyLiBTaW5jZSB0aGlzIGFtb3VudHMgdG8gdXNpbmcgdGhlIG9sZCByZWdpbWVcbiAgIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGZvcndhcmQgYW5kIHRoZSBuZXcgcmVnaW1lIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGJhY2ssIGl0J3NcbiAgIGVxdWl2YWxlbnQgdG8gY2FsY3VsYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVGltZS50J3MgcmVsYXRpdmUgdG8gYm90aCB0aGUgb2xkIGFuZCB0aGVcbiAgIG5ldyByZWdpbWUgYW5kIHBpY2tpbmcgdGhlIG9uZSB0aGF0IG9jY3VycyBsYXRlci4gWWVzLCBsYXRlci4gSSBoYWQgdG8gZHJhdyBhIGRpYWdyYW1cbiAgIHRvIHBlcnN1YWRlIG15c2VsZiB0aGF0IGl0J3MgdGhhdCB3YXkgcm91bmQsIGJ1dCBpdCBpcy4pXG4qKVxubW9kdWxlIE1vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFic29sdXRlXG4gICAgfCBEYXRlX2FuZF9vZmRheVxuZW5kXG5cbmxldCBlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSAoeCA6IFRyYW5zaXRpb24udCkgPVxuICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gIG1hdGNoIChtb2RlIDogTW9kZS50KSB3aXRoXG4gIHwgQWJzb2x1dGUgLT4geC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfCBEYXRlX2FuZF9vZmRheSAtPlxuICAgIHguc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoICsgeC5uZXdfcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcblxubGV0IGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzID1cbiAgaW5kZXggPCAwIHx8IEludDYzLiggPj0gKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCkpXG47O1xuXG5sZXQgaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCArIDEgPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbiAgfHwgSW50NjMuKCA8ICkgc2Vjb25kcyAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgdC50cmFuc2l0aW9ucy4oaW5kZXggKyAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzIDogSW5kZXgudCA9XG4gIEFycmF5LmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJhbnNpdGlvbnMgYExhc3Rfb25fbGVmdCB+c2VnbWVudF9vZjooZnVuIHRyYW5zaXRpb24gLT5cbiAgICBpZiBJbnQ2My4oIDw9ICkgKGVmZmVjdGl2ZV9zdGFydF90aW1lIHRyYW5zaXRpb24gfm1vZGUpIHNlY29uZHMgdGhlbiBgTGVmdCBlbHNlIGBSaWdodClcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG47O1xuXG5sZXQgaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgPVxuICBsZXQgaW5kZXggPVxuICAgIGxldCBpbmRleCA9IHQubGFzdF9yZWdpbWVfaW5kZXggaW5cbiAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleDsgdHJ5IHByZXZpb3VzIGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCAtIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGJlZm9yZSBwcmV2aW91cyBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXggYW5kIG5vdCBiZWZvcmUgcHJldmlvdXMsIHNvIHdpdGhpbiBwcmV2aW91cyAqKVxuICAgICAgZWxzZSBpbmRleClcbiAgICBlbHNlIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXg7IHRyeSBuZXh0IGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCArIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGFmdGVyIG5leHQgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXggYW5kIG5vdCBhZnRlciBuZXh0LCBzbyB3aXRoaW4gbmV4dCAqKVxuICAgICAgZWxzZSBpbmRleCAoKiB0aW1lIGlzIHdpdGhpbiBjYWNoZWQgaW5kZXggKikpXG4gICAgZWxzZSBpbmRleFxuICBpblxuICB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIGluZGV4O1xuICBpbmRleFxuOztcblxubW9kdWxlIFRpbWVfaW5fc2Vjb25kcyA6IHNpZ1xuICBpbmNsdWRlIFpvbmVfaW50Zi5UaW1lX2luX3NlY29uZHNcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzID0gRm4uaWRcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgaW5jbHVkZSBBYnNvbHV0ZVxuZW5kXG5cbmxldCBpbmRleCB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkFic29sdXRlXG47O1xuXG5sZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6RGF0ZV9hbmRfb2ZkYXlcbjs7XG5cbmxldCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXggPj0gMCAmJiBpbmRleCA8IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXG5sZXQgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIHRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgbGV0IGFmdGVyID0gdHJhbnNpdGlvbi5uZXdfcmVnaW1lIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGluZGV4ID0gMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCAtIDEpLm5ld19yZWdpbWVcbiAgaW5cbiAgSW50NjMuKCAtICkgYWZ0ZXIudXRjX29mZnNldF9pbl9zZWNvbmRzIGJlZm9yZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgKGluZGV4ICsgMSlcbjs7XG5cbmxldCBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICByZWdpbWUuYWJicnZcbjs7XG5cbmxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzIHJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuaW5jbHVkZSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24pIChTb3VyY2VfY29kZV9wb3NpdGlvbjApXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbiIsImluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBpbmNsdWRlIElkXG5cbiAgbW9kdWxlIFVpZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcHN0cmVhbSA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcbiAgICBpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuRXh0ZW5kXG4gICAgICAgIChVcHN0cmVhbSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWQudCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFVwc3RyZWFtKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBWYWxpZGF0ZWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBSYXcgPSBSYXdcblxudHlwZSAoJ3JhdywgJ3dpdG5lc3MpIHQgPSAncmF3XG5cbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2FsbG93aW5nX3N1YnN0aXR1dGlvbiA9XG4gIFNfYWxsb3dpbmdfc3Vic3RpdHV0aW9uIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pbyA9IFNfYmluX2lvIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCA9XG4gIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5sZXQgcmF3IHQgPSB0XG5cbm1vZHVsZSBNYWtlIChSYXcgOiBSYXcpID0gc3RydWN0XG4gIHR5cGUgd2l0bmVzc1xuICB0eXBlIHQgPSBSYXcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yID1cbiAgICBFcnJvci5jcmVhdGVcbiAgICAgIFwidmFsaWRhdGlvbiBmYWlsZWRcIlxuICAgICAgKHQsIGVycm9yLCBSYXcuaGVyZSlcbiAgICAgIFslc2V4cF9vZjogUmF3LnQgKiBFcnJvci50ICogU291cmNlX2NvZGVfcG9zaXRpb24udF1cbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5yYWlzZSAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rIHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IGNyZWF0ZV9leG4gKFJhdy50X29mX3NleHAgc2V4cClcbiAgbGV0IHJhdyB0ID0gdFxuXG4gIGxldCBjcmVhdGVfc3RhYmxlX3dpdG5lc3MgcmF3X3N0YWJsZV93aXRuZXNzID1cbiAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgcmF3X3N0YWJsZV93aXRuZXNzIGNyZWF0ZV9leG4gcmF3XG4gIDs7XG5cbiAgbGV0IHR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsLlRcbmVuZFxuXG5tb2R1bGUgQWRkX2Jpbl9pbyAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChSYXcpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IFJhdy50XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcmF3ID1cbiAgICAgICAgICBpZiBSYXcudmFsaWRhdGVfYmluaW9fZGVzZXJpYWxpemF0aW9uIHRoZW4gVmFsaWRhdGVkLmNyZWF0ZV9leG4gcmF3IGVsc2UgcmF3XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBBZGRfY29tcGFyZSAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBjb21wYXJlIHQxIHQyID0gWyVjb21wYXJlOiBSYXcudF0gKHJhdyB0MSkgKHJhdyB0MilcbmVuZFxuXG5tb2R1bGUgQWRkX2hhc2ggKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKFZhbGlkYXRlZCA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmF3Lmhhc2hfZm9sZF90IHN0YXRlIChWYWxpZGF0ZWQucmF3IHQpXG4gIGxldCBoYXNoIHQgPSBSYXcuaGFzaCAoVmFsaWRhdGVkLnJhdyB0KVxuZW5kXG5cbm1vZHVsZSBBZGRfdHlwZXJlcCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoUmF3IDogUmF3X2Jpbl9pbykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQwID0gTWFrZSAoUmF3KVxuICBpbmNsdWRlIFQwXG4gIGluY2x1ZGUgQWRkX2Jpbl9pbyAoUmF3KSAoVDApXG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gTWFrZV9iaW5hYmxlIChSYXcpXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEFkZF9jb21wYXJlIChSYXcpIChUKVxuXG4gIGluY2x1ZGUgKFxuICAgIEFkZF9oYXNoIChSYXcpIChUKSA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOYW5vc2Vjb25kXG4gIHwgTWljcm9zZWNvbmRcbiAgfCBNaWxsaXNlY29uZFxuICB8IFNlY29uZFxuICB8IE1pbnV0ZVxuICB8IEhvdXJcbiAgfCBEYXlcbltAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaF1cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gVW5pcXVlX2lkX2ludGZcblxubW9kdWxlIHR5cGUgSWQgPSBJZFxuXG4oKiBPbmx5IFwibWFrZVwiIGNhbiBjYXVzZSBhIGNvbnRleHQtc3dpdGNoIHRoYXQgbWlnaHQgbGVhZCB0byBhIHJhY2UuXG4gICBUaHVzIHdlIGhhdmUgdG8gY2hlY2sgd2hldGhlciB0aGUgY29udGVudHMgb2YgdGhlIGNlbGwgcmVtYWluZWRcbiAgIHVuY2hhbmdlZCBhY3Jvc3MgdGhpcyBjYWxsLiAgVGhlIHN1YnNlcXVlbnQgY29tcGFyaXNvbiwgZGVyZWZlcmVuY2luZ1xuICAgYW5kIGFzc2lnbm1lbnQgY2Fubm90IGNhdXNlIGNvbnRleHQgc3dpdGNoZXMuICBJZiB0aGUgY29udGVudHMgb2YgdGhlXG4gICBjZWxsIGhhZCBjaGFuZ2VkLCB3ZSB3aWxsIGhhdmUgdG8gdHJ5IGFnYWluIHRvIG9idGFpbiBhIHVuaXF1ZSBpZC5cbiAgIFRoaXMgaXMgZXNzZW50aWFsbHkgbGlrZSBhIHNwaW4tbG9jayBhbmQgaXMgdmlydHVhbGx5IGd1YXJhbnRlZWQgdG9cbiAgIHN1Y2NlZWQgcXVpY2tseS4gKilcbmxldCByZWMgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZSA9XG4gIGxldCB4ID0gIWNlbGwgaW5cbiAgbGV0IG5ld194ID0gbWFrZSB4IGluXG4gIGlmIHBoeXNfZXF1YWwgIWNlbGwgeFxuICB0aGVuIChcbiAgICBjZWxsIDo9IG5ld194O1xuICAgIHgpXG4gIGVsc2UgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZVxuOztcblxubW9kdWxlIEludCAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuXG5tb2R1bGUgSW50NjMgKCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnQ2M1xuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdmVyeSBtdWNoIGRlcGVuZGVudCBvbiB0aGUgcnVudGltZSByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuICBTaG91bGQgdGhlXG4gICB3YXkgdGhlIGNvbXBpbGVyIHJlcHJlc2VudHMgdmFyaW91cyB0eXBlcyBjaGFuZ2UsIGl0IG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiB0aGlzXG4gICBtb2R1bGUsIG90aGVyd2lzZSBiYWQgdGhpbmdzIGNvdWxkIGhhcHBlbi4gIFRoZXJlZm9yZSB0aGUgY29udmVyc2lvbnMgYW5kXG4gICByZXByZXNlbnRhdGlvbnMgYXJlIHRlc3RlZCB0aG9yb3VnaGx5IGluIFsuLi90ZXN0L3Rlc3Rfd2l0bmVzcy5tbF0gYW5kXG4gICBbLi4vdGVzdC90ZXN0X2NvbnZlcnNpb25zLm1sXVxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIEhhc2hfc2V0ID0gQmFzZS5IYXNoX3NldFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgKCogVGhlIGludGVnZXJzIGhlcmUgYXJlIHRoZSB2YWx1ZXMgdW5kZXJseWluZyB0aGUgcG9seW1vcnBoaWMgdmFyaWFudHMsIHRoZXkgYWxyZWFkeVxuICAgICBhcmUgaGFzaGVzIG9mIGNvbnN0cnVjdG9yIG5hbWVzLCBhbmQgaGVuY2UgYXJlIGV4cGVjdGVkIHRvIGJlIHVuaWZvcm1seVxuICAgICBkaXN0cmlidXRlZC4gKilcbiAgbGV0IGhhc2ggeCA9IHhcbmVuZFxuXG5tb2R1bGUgQWxsb3dlZF9pbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb25lXG4gICAgfCBBbGxcbiAgICB8IEhhc2hfc2V0IG9mIEhhc2hfc2V0Lk0oS2V5KS50XG4gICAgfCBGcm9tX3plcm9fdG8gb2YgaW50XG5cbiAgbGV0IF9pbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSB8IEFsbCB8IEhhc2hfc2V0IF8gLT4gKClcbiAgICB8IEZyb21femVyb190byBuIC0+IGFzc2VydCAobiA+PSAwKVxuICA7O1xuXG4gIGxldCBpbnRfaXNfdmFsdWUgdCBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IEFsbCAtPiB0cnVlXG4gICAgfCBIYXNoX3NldCBoYXNoX3NldCAtPiBIYXNoX3NldC5tZW0gaGFzaF9zZXQgaVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gMCA8PSBpICYmIGkgPD0gblxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbW1lZGlhY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFsd2F5c1xuICAgIHwgU29tZXRpbWVzXG4gICAgfCBOZXZlclxuICAgIHwgVW5rbm93blxuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEFsd2F5cyAtPiBcIkFsd2F5c1wiXG4gICAgfCBTb21ldGltZXMgLT4gXCJTb21ldGltZXNcIlxuICAgIHwgTmV2ZXIgLT4gXCJOZXZlclwiXG4gICAgfCBVbmtub3duIC0+IFwiVW5rbm93blwiXG4gIDs7XG5lbmRcblxub3BlbiBJbW1lZGlhY3lcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6ICdhIFR5cGVuYW1lLnQgLT4gSW1tZWRpYWN5LnQgLT4gQWxsb3dlZF9pbnRzLnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX3dpdGhfbmFtZSA6IHN0cmluZyAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiBfIHRcbiAgdmFsIGltbWVkaWFjeSA6IF8gdCAtPiBJbW1lZGlhY3kudFxuICB2YWwgYWxsb3dlZF9pbnRzIDogXyB0IC0+IEFsbG93ZWRfaW50cy50XG4gIHZhbCB0eXBlbmFtZSA6IF8gdCAtPiBzdHJpbmdcblxuICBtb2R1bGUgTmV2ZXJfdmFsdWVzIDogc2lnXG4gICAgdmFsIGludDMyIDogaW50MzIgdFxuICAgIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICAgIHZhbCBhcnJheSA6IF8gYXJyYXkgdFxuICAgIHZhbCByZWZfIDogXyByZWYgdFxuICAgIHZhbCB0dXBsZTIgOiAoXyAqIF8pIHRcbiAgICB2YWwgdHVwbGUzIDogKF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTQgOiAoXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTUgOiAoXyAqIF8gKiBfICogXyAqIF8pIHRcbiAgICB2YWwgZnVuY3Rpb25fIDogKF8gLT4gXykgdFxuICBlbmRcblxuICB2YWwgbmV2ZXIgOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIHVua25vd24gOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIG9wdGlvbiA6IF8gdFxuICB2YWwgbGlzdCA6IF8gdFxuICB2YWwgbWFnaWMgOiBfIHQgLT4gXyB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XyA9XG4gICAgeyBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICAgIDsgYWxsb3dlZF9pbnRzIDogQWxsb3dlZF9pbnRzLnRcbiAgICA7IHR5cGVuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHRfXG5cbiAgbGV0IGNyZWF0ZV93aXRoX25hbWUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgeyBpbW1lZGlhY3k7IGFsbG93ZWRfaW50czsgdHlwZW5hbWUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgY3JlYXRlX3dpdGhfbmFtZSAoVHlwZW5hbWUubmFtZSB0eXBlbmFtZSkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBpbW1lZGlhY3kgdCA9IHQuaW1tZWRpYWN5XG4gIGxldCBhbGxvd2VkX2ludHMgdCA9IHQuYWxsb3dlZF9pbnRzXG4gIGxldCB0eXBlbmFtZSB0ID0gdC50eXBlbmFtZVxuICBsZXQgbWFnaWMgdCA9IHRcbiAgbGV0IG5ldmVyX3dpdGhfbmFtZSBuYW1lID0gY3JlYXRlX3dpdGhfbmFtZSBuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IG5ldmVyIHR5cGVuYW1lID0gY3JlYXRlIHR5cGVuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IHVua25vd24gdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgVW5rbm93biBOb25lXG5cbiAgbGV0IG9wdGlvbiA9IGNyZWF0ZV93aXRoX25hbWUgXCJvcHRpb25cIiBTb21ldGltZXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcbiAgbGV0IGxpc3QgPSBjcmVhdGVfd2l0aF9uYW1lIFwibGlzdFwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgPSBzdHJ1Y3RcbiAgICAoKiBpbnQzMiBpcyBib3hlZCBldmVuIG9uIDY0YiBwbGF0Zm9ybSBhdCB0aGUgbW9tZW50LiAqKVxuICAgIGxldCBpbnQzMiA9IG5ldmVyIHR5cGVuYW1lX29mX2ludDMyXG4gICAgbGV0IGludDY0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50NjRcbiAgICBsZXQgbmF0aXZlaW50ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgbGV0IGZsb2F0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfZmxvYXRcbiAgICBsZXQgc3RyaW5nID0gbmV2ZXIgdHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgbGV0IGJ5dGVzID0gbmV2ZXIgdHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICBsZXQgYXJyYXkgPSBuZXZlcl93aXRoX25hbWUgXCJhcnJheVwiXG4gICAgbGV0IHJlZl8gPSBuZXZlcl93aXRoX25hbWUgXCJyZWZcIlxuICAgIGxldCB0dXBsZTIgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTJcIlxuICAgIGxldCB0dXBsZTMgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTNcIlxuICAgIGxldCB0dXBsZTQgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTRcIlxuICAgIGxldCB0dXBsZTUgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTVcIlxuXG4gICAgbGV0IGZ1bmN0aW9uXyA9IG5ldmVyX3dpdGhfbmFtZSBcImZ1bmN0aW9uXCJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnQgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfaW50IEFsd2F5cyBBbGxvd2VkX2ludHMuQWxsXG5sZXQgdW5pdCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl91bml0IEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxubGV0IGJvb2wgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfYm9vbCBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMSlcbmxldCBjaGFyID0gY3JlYXRlIHR5cGVuYW1lX29mX2NoYXIgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDI1NSlcblxubW9kdWxlIENvbXB1dGF0aW9uX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpYy5WYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5cbiAgbGV0IHJlZl8gXyA9IHJlZl9cbiAgbGV0IGFycmF5IF8gPSBhcnJheVxuICBsZXQgdHVwbGUyIF8gXyA9IHR1cGxlMlxuICBsZXQgdHVwbGUzIF8gXyBfID0gdHVwbGUzXG4gIGxldCB0dXBsZTQgXyBfIF8gXyA9IHR1cGxlNFxuICBsZXQgdHVwbGU1IF8gXyBfIF8gXyA9IHR1cGxlNVxuICBsZXQgZnVuY3Rpb25fIF8gXyA9IGZ1bmN0aW9uX1xuICBsZXQgaW50ID0gaW50XG4gIGxldCBjaGFyID0gY2hhclxuICBsZXQgYm9vbCA9IGJvb2xcbiAgbGV0IHVuaXQgPSB1bml0XG4gIGxldCBvcHRpb24gXyA9IG9wdGlvblxuICBsZXQgbGlzdCBfID0gbGlzdFxuXG4gICgqIEFuIFthIExhenkudF0gbWlnaHQgYmUgYSBib3hlZCBjbG9zdXJlLCBzbyBtdXN0IGhhdmUgaW1tZWRpYWN5IGVpdGhlciBbTmV2ZXJdIG9yXG4gICAgIFtTb21ldGltZXNdLiAgQW4gW2EgTGF6eS50XSB2YWx1ZSBjb3VsZCBiZSBpbW1lZGlhdGUgaWYgW2FdIGlzIGltbWVkaWF0ZS4gIEJ1dCBpZiBbYV1cbiAgICAgaXMgbmV2ZXIgaW1tZWRpYXRlLCB0aGVuIFthIExhenkudF0gY2Fubm90IGJlLiAqKVxuICBsZXQgbGF6eV90IHQgPVxuICAgIGxldCBpbW1lZGlhY3kgPVxuICAgICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgICAgfCBOZXZlciAtPiBOZXZlclxuICAgICAgfCBVbmtub3duIC0+IFVua25vd25cbiAgICAgIHwgU29tZXRpbWVzIHwgQWx3YXlzIC0+IFNvbWV0aW1lc1xuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfbmFtZSBcImxhenlfdFwiIGltbWVkaWFjeSAoYWxsb3dlZF9pbnRzIHQpXG4gIDs7XG5cbiAgbGV0IHBvc3NpYmx5X3VuYm94ZWQgdHlwZW5hbWUgY2hpbGRfdHlwZSA9XG4gICAgbWF0Y2ggaW1tZWRpYWN5IGNoaWxkX3R5cGUgd2l0aFxuICAgIHwgTmV2ZXIgLT4gbmV2ZXIgdHlwZW5hbWVcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gdW5rbm93biB0eXBlbmFtZVxuICA7O1xuXG4gIGxldCByZWNvcmQgciA9XG4gICAgaWYgUmVjb3JkLmxlbmd0aCByID4gMVxuICAgIHRoZW4gbmV2ZXIgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKEZpZWxkIHRoZV9vbmx5X2ZpZWxkKSA9IFJlY29yZC5maWVsZCByIDAgaW5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpIChGaWVsZC50cmF2ZXJzZSB0aGVfb25seV9maWVsZCkpXG4gIDs7XG5cbiAgKCogVmFyaWFudHMgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBubyBhcmd1bWVudHMgYXJlIGFsd2F5cyBpbW1lZGlhdGU7IHZhcmlhbnRzXG4gICAgIHdpdGggYWxsIGNvbnN0cnVjdG9ycyBoYXZpbmcgc29tZSBhcmd1bWVudHMgYXJlIG5ldmVyIGltbWVkaWF0ZTsgbWl4ZWQgdmFyaWFudHMgYXJlXG4gICAgIHNvbWV0aW1lcyBpbW1lZGlhdGUuXG5cbiAgICAgSWYgYSB2YXJpYW50IGhhcyBhIHNpbmdsZSBjb25zdHJ1Y3RvciwgYW5kIHRoZSBjb25zdHJ1Y3RvciBoYXMgYW4gYXJndW1lbnQsIHRoZVxuICAgICB2YXJpYW50IGNhbiBiZSB1bmJveGVkLiBJZiB1bmJveGVkLCBlaXRoZXIgZXhwbGljaXRseSBvciBieSBkZWZhdWx0IChkZXBlbmRpbmcgb25cbiAgICAgY29tcGlsZXIgc2V0dGluZ3MpLCB0aGUgcmVwcmVzZW50YXRpb24gaXMgc2ltcGx5IHRoZSBhcmd1bWVudC4gT3RoZXJ3aXNlLCB0aGUgcnVsZXNcbiAgICAgYWJvdmUgYXBwbHkgbm9ybWFsbHkuICopXG4gIGxldCB2YXJpYW50IHZhcmlhbnQgPVxuICAgIGxldCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0ID1cbiAgICAgIFZhcmlhbnQuZm9sZCB2YXJpYW50IH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChubywgb25lLCBtb3JlKSAoVGFnIHQgYXMgdGFnKSAtPlxuICAgICAgICBtYXRjaCBUYWcuYXJpdHkgdCB3aXRoXG4gICAgICAgIHwgMCAtPiB0YWcgOjogbm8sIG9uZSwgbW9yZVxuICAgICAgICB8IDEgLT4gbm8sIHRhZyA6OiBvbmUsIG1vcmVcbiAgICAgICAgfCBfIC0+IG5vLCBvbmUsIHRhZyA6OiBtb3JlKVxuICAgIGluXG4gICAgbWF0Y2ggbm9fYXJnX2xpc3QsIG9uZV9hcmdfbGlzdCwgbW9yZV9hcmdfbGlzdCB3aXRoXG4gICAgfCBbXSwgWyBUYWcgdGFnIF0sIFtdIHdoZW4gbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpIC0+XG4gICAgICBwb3NzaWJseV91bmJveGVkIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgKFRhZy50cmF2ZXJzZSB0YWcpXG4gICAgfCBbXSwgW10sIFtdIC0+XG4gICAgICAoKiBXZSBkb24ndCBoYXZlIGFuIGV4cGxpY3Qgd2F5IG9mIHNheWluZyBhIHR5cGUgaXMgdW5pbmhhYml0ZWQuICopXG4gICAgICB1bmtub3duIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IFtdLCBfIDo6IF8sIF8gfCBbXSwgXywgXyA6OiBfIC0+IG5ldmVyIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IF8gOjogXywgXywgXyAtPlxuICAgICAgbGV0IG5vX2FyZ19jb3VudCA9IExpc3QubGVuZ3RoIG5vX2FyZ19saXN0IGluXG4gICAgICBsZXQgYWxsb3dlZF9pbnRzID1cbiAgICAgICAgaWYgbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpXG4gICAgICAgIHRoZW4gQWxsb3dlZF9pbnRzLkZyb21femVyb190byAobm9fYXJnX2NvdW50IC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGhhc2hfc2V0ID0gSGFzaF9zZXQuY3JlYXRlIChtb2R1bGUgS2V5KSB+c2l6ZToobm9fYXJnX2NvdW50ICogMikgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgbm9fYXJnX2xpc3QgfmY6KGZ1biAoVGFnIHRhZykgLT5cbiAgICAgICAgICAgIG1hdGNoIFRhZy5jcmVhdGUgdGFnIHdpdGhcbiAgICAgICAgICAgIHwgVGFnLkNvbnN0IF8gLT4gSGFzaF9zZXQuYWRkIGhhc2hfc2V0IChUYWcub2NhbWxfcmVwciB0YWcpXG4gICAgICAgICAgICB8IFRhZy5BcmdzIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICBBbGxvd2VkX2ludHMuSGFzaF9zZXQgaGFzaF9zZXQpXG4gICAgICBpblxuICAgICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICAgIGlmIExpc3QuaXNfZW1wdHkgb25lX2FyZ19saXN0ICYmIExpc3QuaXNfZW1wdHkgbW9yZV9hcmdfbGlzdFxuICAgICAgICB0aGVuIEFsd2F5c1xuICAgICAgICBlbHNlIFNvbWV0aW1lc1xuICAgICAgaW5cbiAgICAgIGNyZWF0ZSAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpIGltbWVkaWFjeSBhbGxvd2VkX2ludHNcbiAgOztcblxuICBsZXQgbmFtZSA9IFwiaXNfaW1tZWRpYXRlXCJcbiAgbGV0IHJlcXVpcmVkID0gW11cblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gKClcbiAgICBlbmRcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IHJlZlxuXG4gICAgKCogVGhlIGRlZmF1bHQgd2l0bmVzcyAtIHdoaWNoIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBbaW5pdF0gYW5kIHJlY292ZXJlZCBhdCBhbnkgbGF0ZXJcbiAgICAgICBwb2ludCBieSBjYWxsaW5nIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSAtIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSByZWN1cnNpdmUgdHlwZS5cbiAgICAgICBPdGhlciB0eXBlcyB0aGF0IGRvbid0IHVzZSBbZ2V0X3dpcF9jb21wdXRhdGlvbl0gd2lsbCBqdXN0IGV2YWx1YXRlIHRvIHRoZSBhY3R1YWxcbiAgICAgICB3aXRuZXNzIHdoaWNoIHdpbGwgcmVwbGFjZSB0aGUgaW5pdGlhbCBkdW1teSBvbmUuICopXG4gICAgbGV0IGluaXQgXyBuYW1lID0gcmVmIChjcmVhdGUgbmFtZSBTb21ldGltZXMgQWxsb3dlZF9pbnRzLk5vbmUpXG4gICAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gY29tcCA9ICFjb21wXG5cbiAgICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHIgdCA9XG4gICAgICByIDo9IHQ7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBzaGFyZSBfID0gdHJ1ZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IFR5cGVfZ2VuZXJpYy5NYWtlIChDb21wdXRhdGlvbl9pbXBsKVxuXG5sZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgbGV0IChgZ2VuZXJpYyB0KSA9IEdlbmVyaWMub2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gIHRcbjs7XG5cbm1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnMgKE0gOiBzaWdcbiAgICB2YWwgaW1tZWRpYWN5IDogSW1tZWRpYWN5LnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHdpdG5lc3MgdHlwZXJlcDEgdHlwZXJlcDIgPVxuICAgIGxldCB0MSA9IG9mX3R5cGVyZXAgdHlwZXJlcDEgaW5cbiAgICBsZXQgdDIgPSBvZl90eXBlcmVwIHR5cGVyZXAyIGluXG4gICAgbGV0IGkxID0gaW1tZWRpYWN5IHQxIGluXG4gICAgbGV0IGkyID0gaW1tZWRpYWN5IHQyIGluXG4gICAgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgaTIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGlzIG5vdCBpbmRlcGVuZGVudCBvZiBpdHMgYXJndW1lbnRzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpKVxuICAgIGVsc2UgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgTS5pbW1lZGlhY3kpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGRvZXMgbm90IGhhdmUgZGVzaXJlZCBpbW1lZGlhY3k6IHdhbnRlZCAlcyBidXQgZ290ICVzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIE0uaW1tZWRpYWN5KVxuICAgICAgICAgICAoSW1tZWRpYWN5LnRvX3N0cmluZyBpMSkpXG4gICAgZWxzZSB0MVxuICA7O1xuXG4gICgqIGFsd2F5cyBpbW1lZGlhdGUgKilcbiAgbGV0IHJhID0gVHlwZXJlcC5JbnRcblxuICAoKiBuZXZlciBpbW1lZGlhdGUgKilcbiAgbGV0IHJuID0gVHlwZXJlcC5TdHJpbmdcblxuICAoKiBFYWNoIG9mIHRoZSBbRm9yX2FsbF9wYXJhbWV0ZXJzXypdIGZ1bmN0b3JzIHdvcmtzIGJ5IGluc3RhbnRpYXRpbmcgdGhlIG4tYXJ5IHR5cGVcbiAgICAgd2l0aCBhbGwgW0Fsd2F5c10gdHlwZXMsIGFuZCB0aGVuIHdpdGggYWxsIFtOZXZlcl0gdHlwZXMuICBJZiB0aG9zZSBwcm9kdWNlIHRoZSBzYW1lXG4gICAgIGltbWVkaWFjeSwgdGhlbiB3ZSBjb25jbHVkZSB0aGF0IHRoZSBuLWFyeSB0eXBlIGlzIGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHMuICopXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMSAoWCA6IFR5cGVyZXBhYmxlLlMxKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEpIChYLnR5cGVyZXBfb2ZfdCBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMiAoWCA6IFR5cGVyZXBhYmxlLlMyKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMyAoWCA6IFR5cGVyZXBhYmxlLlMzKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNCAoWCA6IFR5cGVyZXBhYmxlLlM0KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNSAoWCA6IFR5cGVyZXBhYmxlLlM1KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5lbmRcblxubGV0IGludF9pc192YWx1ZSB0IGludCA9IEFsbG93ZWRfaW50cy5pbnRfaXNfdmFsdWUgKGFsbG93ZWRfaW50cyB0KSBpbnRcblxubGV0IGludF9hc192YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50IHRoZW4gU29tZSAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X2FzX3ZhbHVlX2V4biAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50XG4gIHRoZW4gKE9iai5tYWdpYyAoaW50IDogaW50KSA6IGEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkltbWVkaWF0ZS5pbnRfYXNfdmFsdWVfZXhuOiB0eXBlbmFtZTolUyBpbnQ6JWRcIiAoVC50eXBlbmFtZSB0KSBpbnQpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50X2V4biAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIGlmIE9iai5pc19pbnQgKE9iai5yZXByIGEpXG4gIHRoZW4gKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KVxuICBlbHNlIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLnZhbHVlX2FzX2ludF9leG46IHR5cGVuYW1lOiVTXCIgKFQudHlwZW5hbWUgdCkpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSkgdGhlbiBTb21lIChPYmoubWFnaWMgKGEgOiBhKSA6IGludCkgZWxzZSBOb25lXG47O1xuXG5sZXQgdmFsdWVfaXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcblxubW9kdWxlIEFsd2F5cyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBBbHdheXNcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBBbHdheXMgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgTmV2ZXIgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG4gIGxldCBpbnRfYXNfdmFsdWUgPSBpbnRfYXNfdmFsdWVcbiAgbGV0IGludF9hc192YWx1ZV9leG4gPSBpbnRfYXNfdmFsdWVfZXhuXG4gIGxldCBpbnRfaXNfdmFsdWUgPSBpbnRfaXNfdmFsdWVcbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgXyBhID0gYSB8PiAoT2JqLm1hZ2ljIDogYSAtPiBpbnQpXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbmVuZFxuXG5tb2R1bGUgU29tZXRpbWVzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IFNvbWV0aW1lc1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IFNvbWV0aW1lcyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBOZXZlciAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXQgdmFsdWVfYXNfaW50ID0gdmFsdWVfYXNfaW50XG4gIGxldCB2YWx1ZV9hc19pbnRfZXhuID0gdmFsdWVfYXNfaW50X2V4blxuICBsZXQgdmFsdWVfaXNfaW50ID0gdmFsdWVfaXNfaW50XG4gIGxldCBvcHRpb24gPSBvcHRpb25cbiAgbGV0IGxpc3QgPSBsaXN0XG5lbmRcblxubW9kdWxlIE5ldmVyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IE5ldmVyXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgTmV2ZXIgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgU29tZXRpbWVzIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5lbmRcblxudHlwZSAnYSBkZXN0ID1cbiAgfCBBbHdheXMgb2YgJ2EgQWx3YXlzLnRcbiAgfCBTb21ldGltZXMgb2YgJ2EgU29tZXRpbWVzLnRcbiAgfCBOZXZlciBvZiAnYSBOZXZlci50XG4gIHwgVW5rbm93blxuXG5sZXQgZGVzdCB0ID1cbiAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICB8IEFsd2F5cyAtPiBBbHdheXMgdFxuICB8IFNvbWV0aW1lcyAtPiBTb21ldGltZXMgdFxuICB8IE5ldmVyIC0+IE5ldmVyIHRcbiAgfCBVbmtub3duIC0+IFVua25vd25cbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVDEgOiBUKSAoVDIgOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUMS50ICogVDIudFxuZW5kXG5cbm1vZHVsZSBUMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgPSBhLCBiXG5cbiAgbGV0IGN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biBhIGIgLT4gZiAoYSwgYilcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIpIC0+IGYgYSBiXG4gIDs7XG5cbiAgWyUlaWYgZmxhbWJkYV9iYWNrZW5kXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwX2ltbXV0XCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EpIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSkgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMVwiXG5cbiAgWyUlZW5kaWZdXG5cbiAgbGV0IG1hcCAoeCwgeSkgfmYgPSBmIHgsIGYgeVxuICBsZXQgbWFwX2ZzdCAoeCwgeSkgfmYgPSBmIHgsIHlcbiAgbGV0IG1hcF9zbmQgKHgsIHkpIH5mID0geCwgZiB5XG4gIGxldCBtYXBfYm90aCAoeCwgeSkgfmYxIH5mMiA9IGYxIHgsIGYyIHlcbiAgbGV0IG1hcDIgKHgxLCB5MSkgKHgyLCB5MikgfmYgPSBmIHgxIHgyLCBmIHkxIHkyXG5cbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgKHgsIHkpICh4JywgeScpID1cbiAgICBtYXRjaCBjbXAxIHggeCcgd2l0aFxuICAgIHwgMCAtPiBjbXAyIHkgeSdcbiAgICB8IGkgLT4gaVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgKHgsIHkpICh4JywgeScpID0gZXExIHggeCcgJiYgZXEyIHkgeSdcbiAgbGV0IHN3YXAgKGEsIGIpID0gYiwgYVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tcGFyZSBjbXAxIGNtcDIgPSBjb21wYXJlIH5jbXAxIH5jbXAyXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBUMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgYyA9IGEsIGIsIGNcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiBjIC0+IGYgKGEsIGIsIGMpXG4gIDs7XG5cbiAgbGV0IHVuY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIChhLCBiLCBjKSAtPiBmIGEgYiBjXG4gIDs7XG5cbiAgbGV0IG1hcCAoeCwgeSwgeikgfmYgPSBmIHgsIGYgeSwgZiB6XG4gIGxldCBtYXBfZnN0ICh4LCB5LCB6KSB+ZiA9IGYgeCwgeSwgelxuICBsZXQgbWFwX3NuZCAoeCwgeSwgeikgfmYgPSB4LCBmIHksIHpcbiAgbGV0IG1hcF90cmQgKHgsIHksIHopIH5mID0geCwgeSwgZiB6XG4gIGxldCBtYXBfYWxsICh4LCB5LCB6KSB+ZjEgfmYyIH5mMyA9IGYxIHgsIGYyIHksIGYzIHpcbiAgbGV0IG1hcDIgKHgxLCB5MSwgejEpICh4MiwgeTIsIHoyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTIsIGYgejEgejJcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8sIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXywgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICAoKiBUaGVyZSdzIG5vICVmaWVsZDIuLi4uKilcbiAgbGV0IGdldDMgKF8sIF8sIGEpID0gYVxuXG4gICgqIGxleGljb2dyYXBoaWMgY29tcGFyaXNvbiAgKilcbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgfmNtcDMgKHgsIHksIHopICh4JywgeScsIHonKSA9XG4gICAgbGV0IGMxID0gY21wMSB4IHgnIGluXG4gICAgaWYgYzEgPD4gMFxuICAgIHRoZW4gYzFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjMiA9IGNtcDIgeSB5JyBpblxuICAgICAgaWYgYzIgPD4gMCB0aGVuIGMyIGVsc2UgY21wMyB6IHonKVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgfmVxMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID0gZXExIHggeCcgJiYgZXEyIHkgeScgJiYgZXEzIHogeidcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZV9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hlcl9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgKFMxIDogU2V4cGFibGUuUykgKFMyIDogU2V4cGFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUzEudCAqIFMyLnQgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5tb2R1bGUgQmluYWJsZSAoQjEgOiBCaW5hYmxlLlMpIChCMiA6IEJpbmFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQjEudCAqIEIyLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhdG9yIChTMSA6IENvbXBhcmF0b3IuUykgKFMyIDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKFMxKSAoUzIpXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPVxuICAgIChTMS5jb21wYXJhdG9yX3dpdG5lc3MsIFMyLmNvbXBhcmF0b3Jfd2l0bmVzcykgVDIuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBUMi5jb21wYXJhdG9yIFMxLmNvbXBhcmF0b3IgUzIuY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlX3BsYWluIChTMSA6IENvbXBhcmFibGUuU19wbGFpbikgKFMyIDogQ29tcGFyYWJsZS5TX3BsYWluKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvciAoUzEpIChTMilcblxuICAgIGxldCBzZXhwX29mX3QgPSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgQ29tcGFyYWJsZSAoUzEgOiBDb21wYXJhYmxlX3NleHBhYmxlKSAoUzIgOiBDb21wYXJhYmxlX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGFibGUgKFMxKSAoUzIpXG5cbiAgICBsZXQgY29tcGFyZSAoczEsIHMyKSAoczEnLCBzMicpID1cbiAgICAgIG1hdGNoIFMxLmNvbXBhcmUgczEgczEnIHdpdGhcbiAgICAgIHwgMCAtPiBTMi5jb21wYXJlIHMyIHMyJ1xuICAgICAgfCB4IC0+IHhcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlciAoSDEgOiBIYXNoZXJfc2V4cGFibGUpIChIMiA6IEhhc2hlcl9zZXhwYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBIMS50ICogSDIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMgOiBIYXNoYWJsZV9zZXhwYWJsZSkgOlxuICBIYXNoZXJfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSBTLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG5lbmRcblxubW9kdWxlIEhhc2hhYmxlX3QgKFMxIDogSGFzaGFibGVfc2V4cGFibGUpIChTMiA6IEhhc2hhYmxlX3NleHBhYmxlKSA9XG4gIEhhc2hlclxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGVcbiAgICAgICAoUzEpKVxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMyKSlcblxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVfdFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgU3VuXG4gICAgICAgIHwgTW9uXG4gICAgICAgIHwgVHVlXG4gICAgICAgIHwgV2VkXG4gICAgICAgIHwgVGh1XG4gICAgICAgIHwgRnJpXG4gICAgICAgIHwgU2F0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaCwgcXVpY2tjaGVjaywgc3RhYmxlX3dpdG5lc3MsIHR5cGVyZXBdXG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlNVTlwiXG4gICAgICAgIHwgTW9uIC0+IFwiTU9OXCJcbiAgICAgICAgfCBUdWUgLT4gXCJUVUVcIlxuICAgICAgICB8IFdlZCAtPiBcIldFRFwiXG4gICAgICAgIHwgVGh1IC0+IFwiVEhVXCJcbiAgICAgICAgfCBGcmkgLT4gXCJGUklcIlxuICAgICAgICB8IFNhdCAtPiBcIlNBVFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nX2xvbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlN1bmRheVwiXG4gICAgICAgIHwgTW9uIC0+IFwiTW9uZGF5XCJcbiAgICAgICAgfCBUdWUgLT4gXCJUdWVzZGF5XCJcbiAgICAgICAgfCBXZWQgLT4gXCJXZWRuZXNkYXlcIlxuICAgICAgICB8IFRodSAtPiBcIlRodXJzZGF5XCJcbiAgICAgICAgfCBGcmkgLT4gXCJGcmlkYXlcIlxuICAgICAgICB8IFNhdCAtPiBcIlNhdHVyZGF5XCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfaW50ZXJuYWwgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy51cHBlcmNhc2UgcyB3aXRoXG4gICAgICAgIHwgXCJTVU5cIiB8IFwiU1VOREFZXCIgLT4gU3VuXG4gICAgICAgIHwgXCJNT05cIiB8IFwiTU9OREFZXCIgLT4gTW9uXG4gICAgICAgIHwgXCJUVUVcIiB8IFwiVFVFU0RBWVwiIC0+IFR1ZVxuICAgICAgICB8IFwiV0VEXCIgfCBcIldFRE5FU0RBWVwiIC0+IFdlZFxuICAgICAgICB8IFwiVEhVXCIgfCBcIlRIVVJTREFZXCIgLT4gVGh1XG4gICAgICAgIHwgXCJGUklcIiB8IFwiRlJJREFZXCIgLT4gRnJpXG4gICAgICAgIHwgXCJTQVRcIiB8IFwiU0FUVVJEQVlcIiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfaW50X2V4biBpID1cbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgIHwgMCAtPiBTdW5cbiAgICAgICAgfCAxIC0+IE1vblxuICAgICAgICB8IDIgLT4gVHVlXG4gICAgICAgIHwgMyAtPiBXZWRcbiAgICAgICAgfCA0IC0+IFRodVxuICAgICAgICB8IDUgLT4gRnJpXG4gICAgICAgIHwgNiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX2ludF9leG46ICVkXCIgaSAoKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IDBcbiAgICAgICAgfCBNb24gLT4gMVxuICAgICAgICB8IFR1ZSAtPiAyXG4gICAgICAgIHwgV2VkIC0+IDNcbiAgICAgICAgfCBUaHUgLT4gNFxuICAgICAgICB8IEZyaSAtPiA1XG4gICAgICAgIHwgU2F0IC0+IDZcbiAgICAgIDs7XG5cbiAgICAgICgqIEJlIHZlcnkgZ2VuZXJvdXMgd2l0aCBvZl9zdHJpbmcuICBXZSBhY2NlcHQgYWxsIHBvc3NpYmxlIGNhcGl0YWxpemF0aW9ucyBhbmQgdGhlXG4gICAgICAgICBpbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyBhcyB3ZWxsLiAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IG9mX3N0cmluZ19pbnRlcm5hbCBzIHdpdGhcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgKHRyeSBvZl9pbnRfZXhuIChJbnQub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpKVxuICAgICAgOztcblxuICAgICAgKCogdGhpcyBpcyBpbiBUIHJhdGhlciB0aGFuIG91dHNpZGUgc28gdGhhdCB0aGUgbGF0ZXIgZnVuY3RvciBhcHBsaWNhdGlvbiB0byBidWlsZCBtYXBzXG4gICAgICAgICB1c2VzIHRoaXMgc2V4cCByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgbGV0IG9wZW4gU2V4cGxpYjAuU2V4cF9ncmFtbWFyIGluXG4gICAgICAgIGxldCBhdG9tIG5hbWUgPSBOb190YWcgeyBuYW1lOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH0gaW5cbiAgICAgICAgbGV0IHVuc3VnZ2VzdGVkIGdyYW1tYXIgPVxuICAgICAgICAgIFRhZyB7IGtleSA9IGNvbXBsZXRpb25fc3VnZ2VzdGVkOyB2YWx1ZSA9IEF0b20gXCJmYWxzZVwiOyBncmFtbWFyIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludF9jbGF1c2UgdCA9IHVuc3VnZ2VzdGVkIChhdG9tIChJbnQudG9fc3RyaW5nICh0b19pbnQgdCkpKSBpblxuICAgICAgICBsZXQgc2hvcnRfY2xhdXNlIHQgPSBhdG9tICh0b19zdHJpbmcgdCkgaW5cbiAgICAgICAgbGV0IGxvbmdfY2xhdXNlIHQgPSB1bnN1Z2dlc3RlZCAoYXRvbSAodG9fc3RyaW5nX2xvbmcgdCkpIGluXG4gICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICBMYXp5XG4gICAgICAgICAgICAgIChsYXp5XG4gICAgICAgICAgICAgICAgKFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICBbIExpc3QubWFwIGFsbCB+ZjppbnRfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgOyBMaXN0Lm1hcCBhbGwgfmY6c2hvcnRfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgOyBMaXN0Lm1hcCBhbGwgfmY6bG9uZ19jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIChDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVCkgOiBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVW5zdGFibGUpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChVbnN0YWJsZSlcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjEuVW5zdGFibGVcblxubGV0IHdlZWtkYXlzID0gWyBNb247IFR1ZTsgV2VkOyBUaHU7IEZyaSBdXG5sZXQgd2Vla2VuZHMgPSBbIFNhdDsgU3VuIF1cblxubGV0IG9mX2ludCBpID1cbiAgdHJ5IFNvbWUgKG9mX2ludF9leG4gaSkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IGlzb184NjAxX3dlZWtkYXlfbnVtYmVyIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBNb24gLT4gMVxuICB8IFR1ZSAtPiAyXG4gIHwgV2VkIC0+IDNcbiAgfCBUaHUgLT4gNFxuICB8IEZyaSAtPiA1XG4gIHwgU2F0IC0+IDZcbiAgfCBTdW4gLT4gN1xuOztcblxubGV0IG51bV9kYXlzX2luX3dlZWsgPSA3XG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoSW50LiggJSApICh0b19pbnQgdCArIGkpIG51bV9kYXlzX2luX3dlZWspXG5cbmxldCBudW1fZGF5cyB+ZnJvbSB+dG9fID1cbiAgbGV0IGQgPSB0b19pbnQgdG9fIC0gdG9faW50IGZyb20gaW5cbiAgaWYgSW50LihkIDwgMCkgdGhlbiBkICsgbnVtX2RheXNfaW5fd2VlayBlbHNlIGRcbjs7XG5cbmxldCBpc19zdW5fb3Jfc2F0IHQgPSB0ID0gU3VuIHx8IHQgPSBTYXRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eVxuICAgIHwgVG93YXJkX25lZ2F0aXZlX2luZmluaXR5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubGV0IG1vZHVsZV9uYW1lID0gXCJEaWdpdF9zdHJpbmdfaGVscGVyc1wiXG5sZXQgaW50NjNfdHdvID0gSW50NjMub2ZfaW50IDJcbmxldCBpbnQ2M190ZW4gPSBJbnQ2My5vZl9pbnQgMTBcbmxldCBpbnQ2M190d2VudHkgPSBJbnQ2My5vZl9pbnQgMjBcbmxldCBpbnQ2M19iaWxsaW9uID0gSW50NjMub2ZfaW50IDFfMDAwXzAwMF8wMDBcbmxldCBtYXhfYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfYmlsbGlvblxuXG5sZXQgcmVjIGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBuID1cbiAgaWYgSW50NjMuKCA8ICkgbiBpbnQ2M190ZW5cbiAgdGhlbiAxXG4gIGVsc2UgSW50LnN1Y2MgKGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyAoSW50NjMuKCAvICkgbiBpbnQ2M190ZW4pKVxuOztcblxubGV0IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWUgPSBkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgSW50NjMubWF4X3ZhbHVlXG5cbmxldCByZWMgbWF4X2ludDYzX3dpdGggfmRpZ2l0cyA9XG4gIG1hdGNoIGRpZ2l0cyB3aXRoXG4gIHwgMSAtPiBJbnQ2My5vZl9pbnQgOVxuICB8IDIgLT4gSW50NjMub2ZfaW50IDk5XG4gIHwgMyAtPiBJbnQ2My5vZl9pbnQgOTk5XG4gIHwgNCAtPiBJbnQ2My5vZl9pbnQgOV85OTlcbiAgfCA1IC0+IEludDYzLm9mX2ludCA5OV85OTlcbiAgfCA2IC0+IEludDYzLm9mX2ludCA5OTlfOTk5XG4gIHwgNyAtPiBJbnQ2My5vZl9pbnQgOV85OTlfOTk5XG4gIHwgOCAtPiBJbnQ2My5vZl9pbnQgOTlfOTk5Xzk5OVxuICB8IDkgLT4gSW50NjMub2ZfaW50IDk5OV85OTlfOTk5XG4gIHwgXyAtPlxuICAgIGlmIGRpZ2l0cyA+PSBkaWdpdHNfb2ZfaW50NjNfbWF4X3ZhbHVlXG4gICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICBlbHNlIChcbiAgICAgIGxldCBiaWxsaW9ucyA9IEludDYzLnN1Y2MgKG1heF9pbnQ2M193aXRoIH5kaWdpdHM6KGRpZ2l0cyAtIDkpKSBpblxuICAgICAgSW50NjMucHJlZCAoSW50NjMuKCAqICkgaW50NjNfYmlsbGlvbiBiaWxsaW9ucykpXG47O1xuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGxldCB1bnNhZmVfY2hhcl9vZl9kaWdpdCBuID0gQ2hhci51bnNhZmVfb2ZfaW50IChDaGFyLnRvX2ludCAnMCcgKyBuKVxuICBsZXQgZGlnaXRfb2ZfY2hhciBjaGFyID0gQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXJcblxuICBsZXQgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnl0ZXMgcG9zICh1bnNhZmVfY2hhcl9vZl9kaWdpdCBpbnQpXG4gIDs7XG5cbiAgbGV0IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IGludCAvIDEwIGluXG4gICAgbGV0IG9uZXMgPSBpbnQgLSAodGVucyAqIDEwKSBpblxuICAgIHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3Mgb25lcztcbiAgICB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDEpIGludCBpblxuICAgIHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAyKSBpbnQgaW5cbiAgICB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMykgaW50IGluXG4gICAgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDQpIGludCBpblxuICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA1KSBpbnQgaW5cbiAgICB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNikgaW50IGluXG4gICAgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDcpIGludCBpblxuICAgIHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA4KSBpbnQgaW5cbiAgICB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgcmV0dXJuX2JpbGxpb25zX2FuZF93cml0ZV9yZW1haW5kZXIgYnl0ZXMgfnBvcyBpbnQ2MyA9XG4gICAgbGV0IGJpbGxpb25zID0gSW50NjMuKCAvICkgaW50NjMgaW50NjNfYmlsbGlvbiBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2My4oIC0gKSBpbnQ2MyAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgaW5cbiAgICB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIHJlbWFpbmRlcik7XG4gICAgYmlsbGlvbnNcbiAgOztcblxuICBsZXQgcmVjIHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gICAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgICB8IDEgLT4gd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDIgLT4gd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDMgLT4gd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDQgLT4gd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDUgLT4gd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDYgLT4gd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDcgLT4gd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDggLT4gd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDkgLT4gd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IF8gLT5cbiAgICAgIGxldCBkaWdpdHNfb2ZfYmlsbGlvbnMgPSBkaWdpdHMgLSA5IGluXG4gICAgICBsZXQgYmlsbGlvbnMgPVxuICAgICAgICByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zOihwb3MgKyBkaWdpdHNfb2ZfYmlsbGlvbnMpIGludDYzXG4gICAgICBpblxuICAgICAgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID0gZGlnaXRfb2ZfY2hhciAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nIHBvcylcblxuICBsZXQgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAxKVxuICA7O1xuXG4gIGxldCByZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDIpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMylcbiAgOztcblxuICBsZXQgcmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA0KVxuICA7O1xuXG4gIGxldCByZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDUpXG4gIDs7XG5cbiAgbGV0IHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNilcbiAgOztcblxuICBsZXQgcmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA3KVxuICA7O1xuXG4gIGxldCByZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDgpXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludDYzX292ZXJmbG93IG5hbWUgPVxuICAgIGludmFsaWRfYXJnZiBcIiVzLiVzOiBvdmVyZmxvdyByZWFkaW5nIGludDYzXCIgbW9kdWxlX25hbWUgbmFtZSAoKVxuICA7O1xuXG4gIGxldCByZWMgcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCAyIC0+IEludDYzLm9mX2ludCAocmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDMgLT4gSW50NjMub2ZfaW50IChyZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNCAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA1IC0+IEludDYzLm9mX2ludCAocmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDYgLT4gSW50NjMub2ZfaW50IChyZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA4IC0+IEludDYzLm9mX2ludCAocmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDkgLT4gSW50NjMub2ZfaW50IChyZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9IHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfYmlsbGlvbnMgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPVxuICAgICAgICBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykpXG4gICAgICBpblxuICAgICAgaWYgSW50NjMuKCA+ICkgYmlsbGlvbnMgbWF4X2JpbGxpb25zIHRoZW4gcmFpc2VfaW50NjNfb3ZlcmZsb3cgXCJyZWFkX2ludDYzXCI7XG4gICAgICBsZXQgc3VtID0gSW50NjMuKCArICkgKEludDYzLiggKiApIGJpbGxpb25zIGludDYzX2JpbGxpb24pIHJlbWFpbmRlciBpblxuICAgICAgaWYgSW50NjMuKCA8ICkgc3VtIEludDYzLnplcm8gdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIHN1bVxuICA7O1xuXG4gIGxldCBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgKG51bWVyYXRvciArIGRlbm9taW5hdG9yIC0gSW50NjMub25lKSAvJSBkZW5vbWluYXRvclxuICA7O1xuXG4gIGxldCByYWlzZV9pbnZhbGlkX2RlY2ltYWwgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGludmFsaWQgZGVjaW1hbCBjaGFyYWN0ZXJcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgKCogUmVhZHMgdGhlIHBvcnRpb24gb2Ygc3RyaW5nIGJldHdlZW4gW3Bvc10gYW5kIFtwb3MrZGVjaW1hbHMtMV0sIGluY2x1c2l2ZSwgYW5kXG4gICAgIGludGVycGVyZXRzIGl0IGFzIGEgcG9zaXRpdmUgZGVjaW1hbCBwYXJ0IG9mIGEgbnVtYmVyLCB3aGljaCB3ZSBjYWxsIFt4XS5cblxuICAgICBMZXQgW2ldIGFuZCBbcl0gYmUgdGhlIGludGVnZXIgcGFydCBhbmQgcmVtYWluaW5nIGZyYWN0aW9uYWwgcGFydCBvZlxuICAgICBbeCAqIHNjYWxlIC8gZGl2aXNvcl0uXG5cbiAgICAgSWYgW3IgPCByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0uXG4gICAgIElmIFtyID0gcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2ldIG9yIFtpKzFdIGJhc2VkIG9uIFtyb3VuZF9leGFjdF0uXG4gICAgIElmIFtyID4gcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2krMV0uXG5cbiAgICAgQXNzdW1lcyB3aXRob3V0IGNoZWNraW5nIHRoYXQgW3NjYWxlXSBhbmQgW2Rpdmlzb3JdIGFyZSBib3RoIHBvc2l0aXZlIGFuZFxuICAgICBsZXNzIHRoYW4gW0ludDYzLm1heF92YWx1ZSAvIDEwXSAodG8gYXZvaWQgaW50ZXJuYWwgb3ZlcmZsb3cgZHVyaW5nIHRoZSBhbGdvcml0aG1cbiAgICAgd2hlbiBtdWx0aXBseWluZyBieSAxMCksIGFuZCB0aGF0IFtyb3VuZF9hdCA+PSAwXSBhbmQgW3JvdW5kX2F0IDwgZGl2aXNvcl0uICopXG4gIGxldCByZWFkX2ludDYzX2RlY2ltYWxfcm91bmRlZFxuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnBvczpzdGFydFxuICAgICAgICB+ZGVjaW1hbHNcbiAgICAgICAgfnNjYWxlXG4gICAgICAgIH5kaXZpc29yXG4gICAgICAgIH5yb3VuZF9hdFxuICAgICAgICB+cm91bmRfZXhhY3RcbiAgICAgICAgfmFsbG93X3VuZGVyc2NvcmVcbiAgICA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCB1bnRpbCA9IEludC4oICsgKSBzdGFydCBkZWNpbWFscyBpblxuICAgICgqIFRoZSBsb29wIGludmFyaWFudCBpcyB0aGF0IGVhY2ggaXRlcmF0aW9uLCB3ZSBzdHJpcCBvZmYgdGhlIG5leHQgZGVjaW1hbCBkaWdpdCBhbmRcbiAgICAgICB1cGRhdGUgW3N1bV0sIFtyb3VuZF9hdF0sIGFuZCBbZGl2aXNvcl0gc3VjaCB0aGF0IHRoZSBkZXNpcmVkIHJlc3VsdCBpczpcblxuICAgICAgIFsgc3VtICsgcm91bmQocmVtYWluaW5nX2RpZ2l0c19vZl94X3BhcnNlZF9hc19kZWNpbWFsICogc2NhbGUgLyBkaXZpc29yKSBdXG4gICAgICAgd2hlcmUgXCJyb3VuZFwiIHJvdW5kcyBiYXNlZCBvbiB0aGUgbmV3IHZhbHVlIG9mIFtyb3VuZF9hdF0uXG4gICAgKilcbiAgICBsZXQgZGl2aXNvciA9IHJlZiBkaXZpc29yIGluXG4gICAgbGV0IHJvdW5kX2F0ID0gcmVmIHJvdW5kX2F0IGluXG4gICAgbGV0IHN1bSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgbGV0IHBvcyA9IHJlZiBzdGFydCBpblxuICAgICgqIFN0b3AgaWYgd2UgcnVuIG91dCBvZiBjaGFyYWN0ZXJzLCBvciBpZiBmdXJ0aGVyIGRpZ2l0cyBjYW5ub3QgaW5jcmVhc2Ugb3VyIHN1bS4gKilcbiAgICB3aGlsZSBJbnQuKCA8PiApICFwb3MgdW50aWwgJiYgIXJvdW5kX2F0IDwgc2NhbGUgZG9cbiAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgfCAnMCcgLi4gJzknIGFzIGNoYXIgLT5cbiAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoZGlnaXRfb2ZfY2hhciBjaGFyKSBpblxuICAgICAgICAgKCogRXZlcnkgbmV3IGRlY2ltYWwgcGxhY2UgaW1wbGljaXRseSBzY2FsZXMgb3VyIG51bWVyYXRvciBieSBhIGZhY3RvciBvZiB0ZW4sXG4gICAgICAgICAgICBzbyBtdXN0IGFsc28gZWZmZWN0aXZlbHkgc2NhbGUgb3VyIGRlbm9taW5hdG9yLlxuXG4gICAgICAgICAgICAwLmFiY2RlZiAqIHNjYWxlL2Rpdmlzb3IgICAgICAgIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlLyhkaXZpc29yKjEwKSAgW3JvdW5kIGF0IHJvdW5kX2F0KjEwXVxuXG4gICAgICAgICAgICBUaGVuIHJlZGVmaW5lIGRpdmlzb3IgOj0gZGl2aXNvcioxMCBhbmQgcm91bmRfYXQgOj0gcm91bmRfYXQqMTAsIHNvIHdlIGhhdmU6XG4gICAgICAgICAgICBhLmJjZGVmICogc2NhbGUvZGl2aXNvciBbcm91bmQgYXQgcm91bmRfYXRdICopXG4gICAgICAgICBkaXZpc29yIDo9ICFkaXZpc29yICogaW50NjNfdGVuO1xuICAgICAgICAgcm91bmRfYXQgOj0gIXJvdW5kX2F0ICogaW50NjNfdGVuO1xuICAgICAgICAgKCogTmV4dCB3ZSB3b3JrIG91dCB0aGUgcGFydCBvZiB0aGUgc3VtIGJhc2VkIG9uIG91ciBjdXJyZW50IGRpZ2l0OlxuXG4gICAgICAgICAgICBhLmJjZGVmICogc2NhbGUvZGl2aXNvciBbcm91bmQgYXQgcm91bmRfYXRdXG4gICAgICAgICAgICA9IGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIC0gcm91bmRfYXQgLyBkaXZpc29yICBbcm91bmQgYXQgMF1cbiAgICAgICAgICAgID0gKGEqc2NhbGUtcm91bmRfYXQpIC8gZGl2aXNvciArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgMF1cblxuICAgICAgICAgICAgRGVjb21wb3NlIHRoZSBmaXJzdCB0ZXJtIGludG8gaW50ZWdlciBhbmQgcmVtYWluZGVyIHBhcnRzLlxuICAgICAgICAgICAgU2luY2Ugd2UgaGF2ZSBhbHJlYWR5IHN1YnRyYWN0ZWQgW3JvdW5kX2F0XSwgd2UgZGVjb21wb3NlIGJhc2VkXG4gICAgICAgICAgICBvbiB0aGUgY2VpbGluZyByYXRoZXIgdGhhbiB0aGUgZmxvb3Igb2YgdGhlIGRpdmlzaW9uLFxuICAgICAgICAgICAgZS5nLiA1LzMgd291bGQgZGVjb21wb3NlIGFzIDIgKyAoLTEpLzMsIHJhdGhlciB0aGFuIDEgKyAoMi8zKS5cblxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyByZW1haW5kZXIvZGl2aXNvciArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgMF1cbiAgICAgICAgICAgID0gaW5jcmVtZW50ICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAtcmVtYWluZGVyXVxuICAgICAgICAgKilcbiAgICAgICAgIGxldCBudW1lcmF0b3IgPSAoZGlnaXQgKiBzY2FsZSkgLSAhcm91bmRfYXQgaW5cbiAgICAgICAgIGxldCBkZW5vbWluYXRvciA9ICFkaXZpc29yIGluXG4gICAgICAgICBsZXQgaW5jcmVtZW50ID0gZGl2aWRlX2FuZF9yb3VuZF91cCB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciBpblxuICAgICAgICAgbGV0IHJlbWFpbmRlciA9IG51bWVyYXRvciAtIChpbmNyZW1lbnQgKiBkZW5vbWluYXRvcikgaW5cbiAgICAgICAgICgqIE5vdyBqdXN0IGFjY3VtdWxhdGUgdGhlIG5ldyBpbmNyZW1lbnQgYW5kIGl0ZXJhdGUgb24gdGhlIHJlbWFpbmluZyBwYXJ0OlxuICAgICAgICAgICAgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAtcmVtYWluZGVyXS5cblxuICAgICAgICAgICAgU2luY2UgW3JlbWFpbmRlcl0gaXMgYmV0d2VlbiBbLShkaXZpc29yLTEpXSBhbmQgWzBdIGluY2x1c2l2ZSwgdGhlIG5ld1xuICAgICAgICAgICAgW3JvdW5kX2F0XSB3aWxsIGJlIHdpdGhpbiBbMF0gYW5kIFtkaXZpc29yLTFdIGluY2x1c2l2ZS4gKilcbiAgICAgICAgIHJvdW5kX2F0IDo9IC1yZW1haW5kZXI7XG4gICAgICAgICBzdW0gOj0gIXN1bSArIGluY3JlbWVudDtcbiAgICAgICAgICgqIFRoaXMgbGluZSBwcmV2ZW50cyB0aGUgZGl2aXNvciBmcm9tIGdyb3dpbmcgd2l0aG91dCBib3VuZCBhbmQgb3ZlcmZsb3dpbmcuIElmXG4gICAgICAgICAgICB0aGlzIGxpbmUgYWN0dWFsbHkgY2hhbmdlcyB0aGUgZGl2aXNvciwgdGhlbiB0aGUgZGl2aXNvciBpcyBsYXJnZXIgdGhhbiB0aGVcbiAgICAgICAgICAgIHNjYWxlLCBzbyB0aGUgc3VtIHdpbGwgaW5jcmVhc2UgaWYgYW5kIG9ubHkgaWYgW3BhcnNlZF9yZW1haW5pbmdfZGlnaXRzICpcbiAgICAgICAgICAgIHNjYWxlICg+IG9yID49KSByb3VuZF9hdF0sIHdoaWNoIGRvZXNuJ3QgZGVwZW5kIG9uIGhvdyBtdWNoIGxhcmdlciB0aGVcbiAgICAgICAgICAgIGRpdmlzb3IgaXMuIFNvIHRoaXMgY2hhbmdlIGlzIHNhZmUuICopXG4gICAgICAgICBkaXZpc29yIDo9IEludDYzLm1pbiBkZW5vbWluYXRvciBzY2FsZVxuICAgICAgIHwgJ18nIHdoZW4gYWxsb3dfdW5kZXJzY29yZSAtPiAoKVxuICAgICAgIHwgXyAtPiByYWlzZV9pbnZhbGlkX2RlY2ltYWwgXCJyZWFkX2ludDYzX2RlY2ltYWxcIik7XG4gICAgICBwb3MgOj0gSW50LnN1Y2MgIXBvc1xuICAgIGRvbmU7XG4gICAgaWYgIXJvdW5kX2F0ID0gemVyb1xuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggcm91bmRfZXhhY3Qgd2l0aFxuICAgICAgfCBSb3VuZC5Ub3dhcmRfbmVnYXRpdmVfaW5maW5pdHkgLT4gKClcbiAgICAgIHwgUm91bmQuVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5IC0+IHN1bSA6PSAhc3VtICsgSW50NjMub25lKTtcbiAgICAhc3VtXG4gIDs7XG5cbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlID1cbiAgICByZWFkX2ludDYzX2RlY2ltYWxfcm91bmRlZFxuICAgICAgc3RyaW5nXG4gICAgICB+cG9zXG4gICAgICB+ZGVjaW1hbHNcbiAgICAgIH5zY2FsZTooSW50NjMuKCAqICkgc2NhbGUgaW50NjNfdHdvKVxuICAgICAgfmRpdmlzb3I6aW50NjNfdHdvXG4gICAgICB+cm91bmRfYXQ6SW50NjMub25lXG4gICAgICB+cm91bmRfZXhhY3Q6cm91bmRfdGllc1xuICAgICAgfmFsbG93X3VuZGVyc2NvcmVcbiAgOztcbmVuZFxuXG5sZXQgbWluX3NjYWxlID0gSW50NjMub25lXG5sZXQgbWF4X3NjYWxlID0gSW50NjMuKCAvICkgSW50NjMubWF4X3ZhbHVlIGludDYzX3R3ZW50eVxuXG5sZXQgcmFpc2VfbmVnYXRpdmVfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogZGVjaW1hbHM9JWQgaXMgbmVnYXRpdmVcIiBtb2R1bGVfbmFtZSBuYW1lIGRlY2ltYWxzICgpXG47O1xuXG5sZXQgcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogZGlnaXRzPSVkIGlzIG5vdCBhIHBvc2l0aXZlIG51bWJlclwiIG1vZHVsZV9uYW1lIG5hbWUgZGlnaXRzICgpXG47O1xuXG5sZXQgcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZSA9XG4gIGludmFsaWRfYXJnZlxuICAgIFwiJXMuJXM6IHNjYWxlPSVMZCBvdXQgb2YgcmFuZ2UgWyVMZCwgJUxkXVwiXG4gICAgbW9kdWxlX25hbWVcbiAgICBuYW1lXG4gICAgKEludDYzLnRvX2ludDY0IHNjYWxlKVxuICAgIChJbnQ2My50b19pbnQ2NCBtaW5fc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1heF9zY2FsZSlcbiAgICAoKVxuOztcblxubGV0IHJhaXNlX3Bvc19vdXRfb2ZfYm91bmRzIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHMgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBsZW5cbiAgdGhlblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogcG9zPSVkIG91dCBvZiByYW5nZSBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICBtb2R1bGVfbmFtZVxuICAgICAgbmFtZVxuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiJXMuJXM6ICVkIGRpZ2l0cyBkbyBub3QgZml0IGF0IHBvcyAlZCBpbiBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBkaWdpdHNcbiAgICAgIHBvc1xuICAgICAgbGVuXG4gICAgICAoKVxuOztcblxubGV0IHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBtb2R1bGVfbmFtZSBuYW1lIGludCBtYXggKClcbjs7XG5cbmxldCByYWlzZV9pbnQ2M19vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQ2MyA9XG4gIGludmFsaWRfYXJnZiAhXCIlcy4lczogJXtJbnQ2M30gb3V0IG9mIHJhbmdlIFswLCAle0ludDYzfV1cIiBtb2R1bGVfbmFtZSBuYW1lIGludDYzIG1heCAoKVxuOztcblxubGV0IGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzID1cbiAgaWYgZGVjaW1hbHMgPCAwIHRoZW4gcmFpc2VfbmVnYXRpdmVfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHNcbjs7XG5cbmxldCBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzID0gaWYgZGlnaXRzIDwgMSB0aGVuIHJhaXNlX25vbl9wb3NpdGl2ZV9kaWdpdHMgbmFtZSB+ZGlnaXRzXG5cbmxldCBjaGVja19wb3MgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zICsgZGlnaXRzID4gbGVuIHRoZW4gcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0c1xuOztcblxubGV0IGNoZWNrX2ludCBuYW1lIH5tYXggaW50ID1cbiAgaWYgaW50IDwgMCB8fCBpbnQgPiBtYXggdGhlbiByYWlzZV9pbnRfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfaW50NjMgbmFtZSB+bWF4IGludDYzID1cbiAgaWYgSW50NjMuKCA8ICkgaW50NjMgSW50NjMuemVybyB8fCBJbnQ2My4oID4gKSBpbnQ2MyBtYXhcbiAgdGhlbiByYWlzZV9pbnQ2M19vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQ2M1xuOztcblxubGV0IGNoZWNrX3NjYWxlIG5hbWUgfnNjYWxlID1cbiAgaWYgSW50NjMuKCA8ICkgc2NhbGUgbWluX3NjYWxlIHx8IEludDYzLiggPiApIHNjYWxlIG1heF9zY2FsZVxuICB0aGVuIHJhaXNlX3NjYWxlX291dF9vZl9ib3VuZHMgbmFtZSB+c2NhbGVcbjs7XG5cbmxldCBjaGVja193cml0ZSBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgfm1heCBpbnQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQgbmFtZSB+bWF4IGludFxuOztcblxubGV0IGNoZWNrX3dyaXRlNjMgbmFtZSB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cztcbiAgbGV0IG1heCA9IG1heF9pbnQ2M193aXRoIH5kaWdpdHMgaW5cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBieXRlcyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvcztcbiAgY2hlY2tfaW50NjMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzFfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoxIH5tYXg6OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8yX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MiB+bWF4Ojk5IGludDtcbiAgVW5zYWZlLndyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzNfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czozIH5tYXg6OTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzRfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo0IH5tYXg6OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjUgfm1heDo5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNl9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjYgfm1heDo5OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzdfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo3IH5tYXg6OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzhfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo4IH5tYXg6OTlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV85X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6OSB+bWF4Ojk5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgY2hlY2tfd3JpdGU2MyBcIndyaXRlX2ludDYzXCIgfmJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MztcbiAgVW5zYWZlLndyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2M1xuOztcblxubGV0IGNoZWNrX3JlYWQgbmFtZSB+c3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvc1xuOztcblxubGV0IGNoZWNrX3JlYWQ2MyBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cztcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzX2RlY2ltYWwgbmFtZSB+c3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19kZWNpbWFscyBuYW1lIH5kZWNpbWFscztcbiAgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGU7XG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHM6ZGVjaW1hbHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzFfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MTtcbiAgVW5zYWZlLnJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMl9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoyO1xuICBVbnNhZmUucmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8zX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjM7XG4gIFVuc2FmZS5yZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzRfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NDtcbiAgVW5zYWZlLnJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo1O1xuICBVbnNhZmUucmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF82X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjY7XG4gIFVuc2FmZS5yZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzdfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NztcbiAgVW5zYWZlLnJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfOF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo4O1xuICBVbnNhZmUucmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF85X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjk7XG4gIFVuc2FmZS5yZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgY2hlY2tfcmVhZDYzIFwicmVhZF9pbnQ2M1wiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzO1xuICBVbnNhZmUucmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICBjaGVja19yZWFkNjNfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlO1xuICBVbnNhZmUucmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBKYW5cbiAgICAgIHwgRmViXG4gICAgICB8IE1hclxuICAgICAgfCBBcHJcbiAgICAgIHwgTWF5XG4gICAgICB8IEp1blxuICAgICAgfCBKdWxcbiAgICAgIHwgQXVnXG4gICAgICB8IFNlcFxuICAgICAgfCBPY3RcbiAgICAgIHwgTm92XG4gICAgICB8IERlY1xuICAgIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHZhcmlhbnRzXVxuXG4gICAgbGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuICAgIGxldCBvZl9pbnRfZXhuIGkgOiB0ID1cbiAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgfCAxIC0+IEphblxuICAgICAgfCAyIC0+IEZlYlxuICAgICAgfCAzIC0+IE1hclxuICAgICAgfCA0IC0+IEFwclxuICAgICAgfCA1IC0+IE1heVxuICAgICAgfCA2IC0+IEp1blxuICAgICAgfCA3IC0+IEp1bFxuICAgICAgfCA4IC0+IEF1Z1xuICAgICAgfCA5IC0+IFNlcFxuICAgICAgfCAxMCAtPiBPY3RcbiAgICAgIHwgMTEgLT4gTm92XG4gICAgICB8IDEyIC0+IERlY1xuICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIk1vbnRoLm9mX2ludF9leG4gJWRcIiBpICgpXG4gICAgOztcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgdG9faW50ICh0IDogdCkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEphbiAtPiAxXG4gICAgICB8IEZlYiAtPiAyXG4gICAgICB8IE1hciAtPiAzXG4gICAgICB8IEFwciAtPiA0XG4gICAgICB8IE1heSAtPiA1XG4gICAgICB8IEp1biAtPiA2XG4gICAgICB8IEp1bCAtPiA3XG4gICAgICB8IEF1ZyAtPiA4XG4gICAgICB8IFNlcCAtPiA5XG4gICAgICB8IE9jdCAtPiAxMFxuICAgICAgfCBOb3YgLT4gMTFcbiAgICAgIHwgRGVjIC0+IDEyXG4gICAgOztcblxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0b19pbnQgdCAtIDFcbiAgICBsZXQgb2ZfYmluYWJsZSBpID0gb2ZfaW50X2V4biAoaSArIDEpXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBJbnQuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBudW1fbW9udGhzID0gMTJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBsZXQgYWxsID0gWyBKYW47IEZlYjsgTWFyOyBBcHI7IE1heTsgSnVuOyBKdWw7IEF1ZzsgU2VwOyBPY3Q7IE5vdjsgRGVjIF1cbiAgbGV0IGhhc2ggPSB0b19pbnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgbW9udGhzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgaW50cy4gIEZyb20gMTA4LjA3XG4gICAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgICAgcHJldHR5IGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhc1xuICAgICAgIGNoYW5nZWQgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmVcbiAgICAgICBtb3N0IHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgICByYXcuICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEludC50X29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICB8IE5vbmUgLT4gVC50X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxuKCogUmVwbGFjZSB0aGUgb3ZlcnJpZGVuIHNleHAgY29udmVydGVycyBmcm9tIFtDb21wYXJhYmxlLk1ha2VfYmluYWJsZV0gd2l0aCB0aGUgb3JkaW5hcnlcbiAgIHN5bWJvbGljIGNvbnZlcnRlcnMuICopXG5sZXQgc2V4cF9vZl90ID0gVC5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBULnRfb2Zfc2V4cFxubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKDEgKyBJbnQuKCAlICkgKHRvX2ludCB0IC0gMSArIGkpIG51bV9tb250aHMpXG5cbmxldCBhbGxfc3RyaW5ncyA9XG4gIGxhenlcbiAgICAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgYWxsIH5mOihmdW4gdmFyaWFudCAtPiBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IHZhcmlhbnQpKSkpXG47O1xuXG5sZXQgdG9fc3RyaW5nICh0IDogdCkgPVxuICBsZXQgYWxsX3N0cmluZ3MgPSBMYXp5LmZvcmNlIGFsbF9zdHJpbmdzIGluXG4gIGFsbF9zdHJpbmdzLih0b19pbnQgdCAtIDEpXG47O1xuXG5sZXQgb2Zfc3RyaW5nID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IG1vZHVsZSBUID0gU3RyaW5nLlRhYmxlIGluXG4gICAgICAgbGV0IHRhYmxlID0gVC5jcmVhdGUgfnNpemU6bnVtX21vbnRocyAoKSBpblxuICAgICAgIEFycmF5Lml0ZXJpIChMYXp5LmZvcmNlIGFsbF9zdHJpbmdzKSB+ZjooZnVuIGkgcyAtPlxuICAgICAgICAgbGV0IHQgPSBvZl9pbnRfZXhuIChpICsgMSkgaW5cbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6cyB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLmxvd2VyY2FzZSBzKSB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnVwcGVyY2FzZSBzKSB+ZGF0YTp0KTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgZnVuIHN0ciAtPlxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCAoTGF6eS5mb3JjZSB0YWJsZSkgc3RyIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkludmFsaWQgbW9udGg6ICVzXCIgc3RyICgpXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgbW9udGggPSB0ID1cbiAgICB8IEphblxuICAgIHwgRmViXG4gICAgfCBNYXJcbiAgICB8IEFwclxuICAgIHwgTWF5XG4gICAgfCBKdW5cbiAgICB8IEp1bFxuICAgIHwgQXVnXG4gICAgfCBTZXBcbiAgICB8IE9jdFxuICAgIHwgTm92XG4gICAgfCBEZWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgaXNfbGVhcF95ZWFyIH55ZWFyID0gKHllYXIgbW9kIDQgPSAwICYmIG5vdCAoeWVhciBtb2QgMTAwID0gMCkpIHx8IHllYXIgbW9kIDQwMCA9IDBcblxuKCogQ3JlYXRlIGEgbG9jYWwgcHJpdmF0ZSBkYXRlIHR5cGUgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGVzIGFyZSBjcmVhdGVkIHZpYVxuICAgRGF0ZS5jcmVhdGVfZXhuLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgdmFsIGNyZWF0ZV9leG4gOiB5OmludCAtPiBtOk1vbnRoLlN0YWJsZS5WMS50IC0+IGQ6aW50IC0+IHRcbiAgICAgICAgdmFsIHllYXIgOiB0IC0+IGludFxuICAgICAgICB2YWwgbW9udGggOiB0IC0+IE1vbnRoLlN0YWJsZS5WMS50XG4gICAgICAgIHZhbCBkYXkgOiB0IC0+IGludFxuICAgICAgICB2YWwgZGF5c19pbl9tb250aCA6IHllYXI6aW50IC0+IG1vbnRoOk1vbnRoLnQgLT4gaW50XG4gICAgICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgICAgICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gICAgICAgIHZhbCBvZl9pbnRfdW5jaGVja2VkIDogaW50IC0+IHRcbiAgICAgICAgdmFsIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA6IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICAoKiBXZSB1c2VkIHRvIHN0b3JlIGRhdGVzIGxpa2UgdGhpczpcbiAgICAgICAgICAgdHlwZSB0ID0geyB5OiBpbnQ7IG06IE1vbnRoLlN0YWJsZS5WMS50OyBkOiBpbnQ7IH1cbiAgICAgICAgICAgSW4gdGhlIGJlbG93IHdlIG1ha2Ugc3VyZSB0aGF0IHRoZSBiaW5faW8gcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICAgICAgaWRlbnRpY2FsIChhbmQgdGhlIHN0YWJsZSB1bml0IHRlc3RzIGNoZWNrIHRoaXMpXG5cbiAgICAgICAgICAgSW4gbWVtb3J5IHdlIHVzZSB0aGUgZm9sbG93aW5nIG11Y2ggbW9yZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uOlxuICAgICAgICAgICAyIGJ5dGVzIHllYXJcbiAgICAgICAgICAgMSBieXRlIG1vbnRoXG4gICAgICAgICAgIDEgYnl0ZSBkYXlcblxuICAgICAgICAgICBhbGwgcGFja2VkIGludG8gYSBzaW5nbGUgaW1tZWRpYXRlIGludCAoc28gZnJvbSA0IHdvcmRzIGRvd24gdG8gMSkuXG4gICAgICAgICopXG4gICAgICAgIHR5cGUgdCA9IGludFxuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGNvbXBhcmVcbiAgICAgICAgLCBlcXVhbFxuICAgICAgICAsIGhhc2hcbiAgICAgICAgLCB0eXBlcmVwXG4gICAgICAgICwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjg5OWVlM2UwLTQ5MGEtMTFlNi1hMTBhLWEzNzM0ZjczMzU2NlwiXG4gICAgICAgICwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgICgqIGNyZWF0ZV9leG4ncyB2YWxpZGF0aW9uIG1ha2Ugc3VyZSB0aGF0IGVhY2ggdmFsdWUgZml0cyAqKVxuICAgICAgICAgICh5ZWFyIGxzbCAxNikgbG9yIChNb250aC50b19pbnQgbW9udGggbHNsIDgpIGxvciBkYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgb2ZfaW50X3VuY2hlY2tlZCB0ID0gdFxuICAgICAgICBsZXQgeWVhciB0ID0gdCBsc3IgMTZcbiAgICAgICAgbGV0IG1vbnRoIHQgPSBNb250aC5vZl9pbnRfZXhuICgodCBsc3IgOCkgbGFuZCAweGZmKVxuICAgICAgICBsZXQgZGF5IHQgPSB0IGxhbmQgMHhmZlxuXG4gICAgICAgIGxldCBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCA9XG4gICAgICAgICAgbWF0Y2ggKG1vbnRoIDogTW9udGgudCkgd2l0aFxuICAgICAgICAgIHwgSmFuIHwgTWFyIHwgTWF5IHwgSnVsIHwgQXVnIHwgT2N0IHwgRGVjIC0+IDMxXG4gICAgICAgICAgfCBBcHIgfCBKdW4gfCBTZXAgfCBOb3YgLT4gMzBcbiAgICAgICAgICB8IEZlYiAtPiBpZiBpc19sZWFwX3llYXIgfnllYXIgdGhlbiAyOSBlbHNlIDI4XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkgPVxuICAgICAgICAgICgqIHllYXIsIG1vbnRoLCBhbmQgZGF5IG5lZWQgdG8gYmUgcGFzc2VkIGFzIHBhcmFtZXRlcnMgdG8gYXZvaWQgYWxsb2NhdGluZ1xuICAgICAgICAgICAgIGEgY2xvc3VyZSAoc2VlIHVuaXQgdGVzdCBiZWxvdykgKilcbiAgICAgICAgICBsZXQgaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBtc2cgPVxuICAgICAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgICAgICFcIkRhdGUuY3JlYXRlX2V4biB+eTolZCB+bTole01vbnRofSB+ZDolZCBlcnJvcjogJXNcIlxuICAgICAgICAgICAgICB5ZWFyXG4gICAgICAgICAgICAgIG1vbnRoXG4gICAgICAgICAgICAgIGRheVxuICAgICAgICAgICAgICBtc2dcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHllYXIgPCAwIHx8IHllYXIgPiA5OTk5XG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwieWVhciBvdXRzaWRlIG9mIFswLi45OTk5XVwiO1xuICAgICAgICAgIGlmIGRheSA8PSAwIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcImRheSA8PSAwXCI7XG4gICAgICAgICAgbGV0IGRheXNfaW5fbW9udGggPSBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCBpblxuICAgICAgICAgIGlmIGRheSA+IGRheXNfaW5fbW9udGhcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgKHNwcmludGYgXCIlZCBkYXkgbW9udGggdmlvbGF0aW9uXCIgZGF5c19pbl9tb250aCk7XG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIFdlIGRvbid0IHVzZSBNYWtlX2JpbmFibGUgaGVyZSwgYmVjYXVzZSB0aGF0IHdvdWxkIGdvIHZpYSBhbiBpbW1lZGlhdGVcbiAgICAgICAgICAgdHVwbGUgb3IgcmVjb3JkLiAgVGhhdCBpcyBleGFjdGx5IHRoZSAzMiBieXRlcyB3ZSB3b3JrZWQgc28gaGFyZCBhYm92ZSB0b1xuICAgICAgICAgICBnZXQgcmlkIG9mLiAgV2UgYWxzbyBkb24ndCB3YW50IHRvIGp1c3QgYmluX2lvIHRoZSBpbnRlZ2VyIGRpcmVjdGx5XG4gICAgICAgICAgIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIGEgbmV3IGJpbl9pbyBmb3JtYXQuICAqKVxuXG4gICAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5TdGFibGUuVjEuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICAoKiBfX2Jpbl9yZWFkX3QgaXMgb25seSBuZWVkZWQgZm9yIHZhcmlhbnRzICopXG4gICAgICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkRhdGUudFwiICFwb3NfcmVmXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgICAgICAgSW50LmJpbl9zaXplX3QgKHllYXIgdCkgKyBNb250aC5iaW5fc2l6ZV90IChtb250aCB0KSArIEludC5iaW5fc2l6ZV90IChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgICAgbGV0IHBvcyA9IEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoeWVhciB0KSBpblxuICAgICAgICAgIGxldCBwb3MgPSBNb250aC5iaW5fd3JpdGVfdCBidWYgfnBvcyAobW9udGggdCkgaW5cbiAgICAgICAgICBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgICAgIGxldCBiaW5fdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICAgICAgbGV0IG9mX2ludF9leG4gbiA9IGNyZWF0ZV9leG4gfnk6KHllYXIgbikgfm06KG1vbnRoIG4pIH5kOihkYXkgbilcbiAgICAgICAgbGV0IGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA9IDBcblxuICAgICAgICBsZXQldGVzdCBcImludmFsaWQgdmFsdWVcIiA9XG4gICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSA6IHQgLT4gb2ZfaW50X2V4biBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cblxuICAgICAgKCoqIFlZWVktTU0tREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZCB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDQgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo1IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA3ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6OCAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgICgqKiBNTS9ERC9ZWVlZICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2FtZXJpY2FuIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDIgJy8nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnLyc7XG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfeWVhcjQgc3RyIHBvcyA9IHJlYWRfNF9kaWdpdF9pbnQgc3RyIH5wb3NcbiAgICAgIGxldCBwYXJzZV9tb250aCBzdHIgcG9zID0gTW9udGgub2ZfaW50X2V4biAocmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcylcbiAgICAgIGxldCBwYXJzZV9kYXkgc3RyIHBvcyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3NcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWMgc3RyIH5wb3MgPVxuICAgICAgICBpZiBwb3MgKyA4ID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRhdGUub2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWM6IHBvcyArIDggPiBzdHJpbmcgbGVuZ3RoXCI7XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICB+eToocGFyc2VfeWVhcjQgc3RyIHBvcylcbiAgICAgICAgICB+bToocGFyc2VfbW9udGggc3RyIChwb3MgKyA0KSlcbiAgICAgICAgICB+ZDoocGFyc2VfZGF5IHN0ciAocG9zICsgNikpXG4gICAgICA7O1xuXG4gICAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGEgbWF0ZXJpYWwgd2F5LCBiZSBzdXJlIHlvdVxuICAgICAgICAgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHdvcmtpbmcgaW4gU3RhYmxlICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgaW52YWxpZCAoKSA9IGZhaWx3aXRoIChcImludmFsaWQgZGF0ZTogXCIgXiBzKSBpblxuICAgICAgICBsZXQgZW5zdXJlIGIgPSBpZiBub3QgYiB0aGVuIGludmFsaWQgKCkgaW5cbiAgICAgICAgbGV0IG1vbnRoX251bSB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4biB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKSB+bToocGFyc2VfbW9udGggcyBtb250aCkgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vbnRoX2FicnYgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzIHllYXIpXG4gICAgICAgICAgICB+bTooTW9udGgub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHMgfnBvczptb250aCB+bGVuOjMpKVxuICAgICAgICAgICAgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy8nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB5LCBtLCBkID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonLycgd2l0aFxuICAgICAgICAgICAgfCBbIGE7IGI7IGMgXSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGEgPSA0IHRoZW4gYSwgYiwgYyAoKiB5L20vZCAqKSBlbHNlIGMsIGEsIGIgKCogbS9kL3kgKilcbiAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5vZl9zdHJpbmcgeSBpblxuICAgICAgICAgIGxldCB5ZWFyID1cbiAgICAgICAgICAgIGlmIHllYXIgPj0gMTAwIHRoZW4geWVhciBlbHNlIGlmIHllYXIgPCA3NSB0aGVuIDIwMDAgKyB5ZWFyIGVsc2UgMTkwMCArIHllYXJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLm9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgbSkgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50Lm9mX3N0cmluZyBkIGluXG4gICAgICAgICAgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSlcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnLSdcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogeXl5eS1tbS1kZCAqKVxuICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTAgJiYgQ2hhci4oID0gKSBzLls0XSAnLScgJiYgQ2hhci4oID0gKSBzLls3XSAnLScpO1xuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo1IH5kYXk6OClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnICdcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bMl0gJyAnICYmIENoYXIuKCA9ICkgcy5bNl0gJyAnXG4gICAgICAgICAgdGhlbiAoKiBERCBNTU0gWVlZWSAqKVxuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjMgfnllYXI6N1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogWVlZWSBNTU0gREQgKilcbiAgICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLls0XSAnICcgJiYgQ2hhci4oID0gKSBzLls4XSAnICcpO1xuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5Ojkgfm1vbnRoOjUgfnllYXI6MClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA5XG4gICAgICAgIHRoZW4gKCogRERNTU1ZWVlZICopXG4gICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjIgfnllYXI6NVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDhcbiAgICAgICAgdGhlbiAoKiBhc3N1bWUgWVlZWU1NREQgKilcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NCB+ZGF5OjZcbiAgICAgICAgZWxzZSBpbnZhbGlkICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJEYXRlLm9mX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPbGRfZGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IHkgOiBpbnRcbiAgICAgICAgICAgIDsgbSA6IGludFxuICAgICAgICAgICAgOyBkIDogaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIGxldCB0b19kYXRlIHQgPSBULmNyZWF0ZV9leG4gfnk6dC55IH5tOihNb250aC5vZl9pbnRfZXhuIHQubSkgfmQ6dC5kXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIGFzIHNleHAgLT4gT2xkX2RhdGUudG9fZGF0ZSAoT2xkX2RhdGUudF9vZl9zZXhwIHNleHApXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgICB0cnkgdF9vZl9zZXhwIHMgd2l0aFxuICAgICAgICAgIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGV4biAtPiByYWlzZSBleG5cbiAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYSAtPiBvZl9zZXhwX2Vycm9yIGEgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICAgICAgU2V4cF9ncmFtbWFyLnRhZ1xuICAgICAgICAgICAgKFNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyIDogdCBTZXhwX2dyYW1tYXIudClcbiAgICAgICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgICAgIH52YWx1ZTooQXRvbSBcIkNvcmUuRGF0ZS50XCIpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBTZXhwYWJsZVxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBbQEBkZXJpdmluZ1xuICAgICAgICBiaW5faW9cbiAgICAgICwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjgyNmEzZTc5LTMzMjEtNDUxYS05NzA3LWVkNmMwM2I4NGUyZlwiXG4gICAgICAsIGNvbXBhcmVcbiAgICAgICwgaGFzaFxuICAgICAgLCB0eXBlcmVwXG4gICAgICAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgbm9uZSA9IFYxLih0b19pbnQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHQgPSBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlIF8gPSB0cnVlXG4gICAgICBsZXQgc29tZSB0ID0gVjEudG9faW50IHRcbiAgICAgIGxldCB1bmNoZWNrZWRfdmFsdWUgPSBWMS5vZl9pbnRfdW5jaGVja2VkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG5cbiAgICAgIGxldCBvZl9vcHRpb24gb3B0ID1cbiAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gc29tZSB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBpZiBpc19zb21lIHRcbiAgICAgICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgICAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJEYXRlLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bmNoZWNrZWRfdmFsdWUgdClcbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjEuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMS50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYxLnQgT3B0aW9uLnRdXG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIHQgPVxuICAgICAgICAoKiBEb24ndCBqdXN0IGJsaW5kbHkgY29udmVydCBmcm9tIGFuIGludGVnZXIuIFVzZSBbVjEub2ZfaW50X2V4bl0gdG8gdmFsaWRhdGUgdGhlXG4gICAgICAgICAgIGRhdGUuICopXG4gICAgICAgIGlmIHQgPSBub25lIHRoZW4gbm9uZSBlbHNlIHNvbWUgKFYxLm9mX2ludF9leG4gdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IFN0YWJsZS5WMS5XaXRob3V0X2NvbXBhcmFibGVcbmluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG5tb2R1bGUgQyA9IENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFdpdGhvdXRfY29tcGFyYWJsZSlcbmluY2x1ZGUgQ1xuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIChDIDogQ29tcGFyYWJsZS5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGVcbiAgICBpbmNsdWRlIEJpbmFibGVcblxuICAgIGxldCBjb21wYXJlIChhIDogdCkgKGIgOiB0KSA9IGNvbXBhcmUgYSBiXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkRhdGVcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5sZXQgdW5peF9lcG9jaCA9IGNyZWF0ZV9leG4gfnk6MTk3MCB+bTpKYW4gfmQ6MVxuXG4oKiBUaGUgRGF5cyBtb2R1bGUgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb25zIHRoYXQgaW52b2x2ZSBhZGRpbmcgb3IgcmVtb3ZpbmcgYSBrbm93biBudW1iZXJcbiAgIG9mIGRheXMgZnJvbSBhIGRhdGUuICBJbnRlcm5hbGx5IHRoZSBkYXRlIGlzIHRyYW5zbGF0ZWQgdG8gYSBkYXkgbnVtYmVyLCB0aGUgZGF5cyBhcmVcbiAgIGFkZGVkLCBhbmQgdGhlIG5ldyBkYXRlIGlzIHJldHVybmVkLiAgVGhvc2UgaW50ZXJlc3RlZCBpbiB0aGUgbWF0aCBjYW4gcmVhZDpcblxuICAgaHR0cDovL2FsY29yLmNvbmNvcmRpYS5jYS9+Z3BrYXRjaC9nZGF0ZS1tZXRob2QuaHRtbFxuXG4gICBub3RlOiB1bml0IHRlc3RzIGFyZSBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5tb2R1bGUgRGF5cyA6IHNpZ1xuICB0eXBlIGRhdGUgPSB0XG4gIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG5cbiAgdmFsIG9mX2RhdGUgOiBkYXRlIC0+IHRcbiAgdmFsIHRvX2RhdGUgOiB0IC0+IGRhdGVcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBhZGRfZGF5cyA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHVuaXhfZXBvY2ggOiB0XG5lbmRcbndpdGggdHlwZSBkYXRlIDo9IHQgPSBzdHJ1Y3RcbiAgb3BlbiBJbnRcblxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgb2ZfeWVhciB5ID0gKDM2NSAqIHkpICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKVxuXG4gIGxldCBvZl9kYXRlIGRhdGUgPVxuICAgIGxldCBtID0gKE1vbnRoLnRvX2ludCAobW9udGggZGF0ZSkgKyA5KSAlIDEyIGluXG4gICAgbGV0IHkgPSB5ZWFyIGRhdGUgLSAobSAvIDEwKSBpblxuICAgIG9mX3llYXIgeSArICgoKG0gKiAzMDYpICsgNSkgLyAxMCkgKyAoZGF5IGRhdGUgLSAxKVxuICA7O1xuXG4gIGxldCBjXzEwXzAwMCA9IEludDYzLm9mX2ludCAxMF8wMDBcbiAgbGV0IGNfMTRfNzgwID0gSW50NjMub2ZfaW50IDE0Xzc4MFxuICBsZXQgY18zXzY1Ml80MjUgPSBJbnQ2My5vZl9pbnQgM182NTJfNDI1XG5cbiAgbGV0IHRvX2RhdGUgZGF5cyA9XG4gICAgbGV0IHkgPVxuICAgICAgbGV0IG9wZW4gSW50NjMgaW5cbiAgICAgIHRvX2ludF9leG4gKCgoY18xMF8wMDAgKiBvZl9pbnQgZGF5cykgKyBjXzE0Xzc4MCkgLyBjXzNfNjUyXzQyNSlcbiAgICBpblxuICAgIGxldCBkZGQgPSBkYXlzIC0gb2ZfeWVhciB5IGluXG4gICAgbGV0IHksIGRkZCA9XG4gICAgICBpZiBkZGQgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHkgPSB5IC0gMSBpblxuICAgICAgICB5LCBkYXlzIC0gb2ZfeWVhciB5KVxuICAgICAgZWxzZSB5LCBkZGRcbiAgICBpblxuICAgIGxldCBtaSA9ICgoMTAwICogZGRkKSArIDUyKSAvIDNfMDYwIGluXG4gICAgbGV0IHkgPSB5ICsgKChtaSArIDIpIC8gMTIpIGluXG4gICAgbGV0IG0gPSAoKG1pICsgMikgJSAxMikgKyAxIGluXG4gICAgbGV0IGQgPSBkZGQgLSAoKChtaSAqIDMwNikgKyA1KSAvIDEwKSArIDEgaW5cbiAgICBjcmVhdGVfZXhuIH55IH5tOihNb250aC5vZl9pbnRfZXhuIG0pIH5kXG4gIDs7XG5cbiAgbGV0IHVuaXhfZXBvY2ggPSBvZl9kYXRlIHVuaXhfZXBvY2hcbiAgbGV0IGFkZF9kYXlzIHQgZGF5cyA9IHQgKyBkYXlzXG4gIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuZW5kXG5cbmxldCBhZGRfZGF5cyB0IGRheXMgPSBEYXlzLnRvX2RhdGUgKERheXMuYWRkX2RheXMgKERheXMub2ZfZGF0ZSB0KSBkYXlzKVxubGV0IGRpZmYgdDEgdDIgPSBEYXlzLmRpZmYgKERheXMub2ZfZGF0ZSB0MSkgKERheXMub2ZfZGF0ZSB0MilcblxubGV0IGFkZF9tb250aHMgdCBuID1cbiAgbGV0IHRvdGFsX21vbnRocyA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgKyBuIGluXG4gIGxldCB5ID0geWVhciB0ICsgKHRvdGFsX21vbnRocyAvJSAxMikgaW5cbiAgbGV0IG0gPSB0b3RhbF9tb250aHMgJSAxMiBpblxuICAoKiBjb3JyZWN0IGZvciBkZWNlbWJlciAqKVxuICBsZXQgeSwgbSA9IGlmIEludC4oID0gKSBtIDAgdGhlbiB5IC0gMSwgbSArIDEyIGVsc2UgeSwgbSBpblxuICBsZXQgbSA9IE1vbnRoLm9mX2ludF9leG4gbSBpblxuICAoKiBoYW5kbGUgaW52YWxpZCBkYXRlcyBmb3IgbW9udGhzIHdpdGggZmV3ZXIgbnVtYmVyIG9mIGRheXMgKilcbiAgbGV0IHJlYyB0cnlfY3JlYXRlIGQgPVxuICAgIHRyeSBjcmVhdGVfZXhuIH55IH5tIH5kIHdpdGhcbiAgICB8IF9leG4gLT5cbiAgICAgIGFzc2VydCAoSW50LiggPj0gKSBkIDEpO1xuICAgICAgdHJ5X2NyZWF0ZSAoZCAtIDEpXG4gIGluXG4gIHRyeV9jcmVhdGUgKGRheSB0KVxuOztcblxubGV0IGFkZF95ZWFycyB0IG4gPSBhZGRfbW9udGhzIHQgKG4gKiAxMilcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXRlcm1pbmF0aW9uX29mX3RoZV9kYXlfb2ZfdGhlX3dlZWsjUHVyZWx5X21hdGhlbWF0aWNhbF9tZXRob2RzXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubGV0IGRheV9vZl93ZWVrID1cbiAgbGV0IHRhYmxlID0gW3wgMDsgMzsgMjsgNTsgMDsgMzsgNTsgMTsgNDsgNjsgMjsgNCB8XSBpblxuICBmdW4gdCAtPlxuICAgIGxldCBtID0gTW9udGgudG9faW50IChtb250aCB0KSBpblxuICAgIGxldCB5ID0gaWYgSW50LiggPCApIG0gMyB0aGVuIHllYXIgdCAtIDEgZWxzZSB5ZWFyIHQgaW5cbiAgICBEYXlfb2Zfd2Vlay5vZl9pbnRfZXhuXG4gICAgICAoKHkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApICsgdGFibGUuKG0gLSAxKSArIGRheSB0KSAlIDcpXG47O1xuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZGluYWxfZGF0ZSAqKVxubGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNTk7IDkwOyAxMjA7IDE1MTsgMTgxOyAyMTI7IDI0MzsgMjczOyAzMDQ7IDMzNCB8XVxubGV0IGxlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA2MDsgOTE7IDEyMTsgMTUyOyAxODI7IDIxMzsgMjQ0OyAyNzQ7IDMwNTsgMzM1IHxdXG5cbmxldCBvcmRpbmFsX2RhdGUgdCA9XG4gIGxldCB0YWJsZSA9XG4gICAgaWYgaXNfbGVhcF95ZWFyIH55ZWFyOih5ZWFyIHQpIHRoZW4gbGVhcF95ZWFyX3RhYmxlIGVsc2Ugbm9uX2xlYXBfeWVhcl90YWJsZVxuICBpblxuICBsZXQgb2Zmc2V0ID0gdGFibGUuKE1vbnRoLnRvX2ludCAobW9udGggdCkgLSAxKSBpblxuICBkYXkgdCArIG9mZnNldFxuOztcblxubGV0IGxhc3Rfd2Vla19vZl95ZWFyIHkgPVxuICBsZXQgZmlyc3Rfb2ZfeWVhciA9IGNyZWF0ZV9leG4gfnkgfm06SmFuIH5kOjEgaW5cbiAgbGV0IGlzIHQgZGF5ID0gRGF5X29mX3dlZWsuZXF1YWwgKGRheV9vZl93ZWVrIHQpIGRheSBpblxuICBpZiBpcyBmaXJzdF9vZl95ZWFyIFRodSB8fCAoaXNfbGVhcF95ZWFyIH55ZWFyOnkgJiYgaXMgZmlyc3Rfb2ZfeWVhciBXZWQpXG4gIHRoZW4gNTNcbiAgZWxzZSA1MlxuOztcblxuKCogU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSBvciBJU08gODYwMSBmb3IgdGhlIGRldGFpbHMgb2YgdGhpc1xuICAgYWxnb3JpdGhtLlxuXG4gICBVc2VzIGEgW35mXSBhcmd1bWVudCB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjYWxsZWQgYnkgW3dlZWtfbnVtYmVyXS5cbiopXG5sZXQgY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZiA9XG4gIGxldCBvcmRpbmFsID0gb3JkaW5hbF9kYXRlIHQgaW5cbiAgbGV0IHdlZWtkYXkgPSBEYXlfb2Zfd2Vlay5pc29fODYwMV93ZWVrZGF5X251bWJlciAoZGF5X29mX3dlZWsgdCkgaW5cbiAgKCogW29yZGluYWwgLSB3ZWVrZGF5ICsgNF0gaXMgdGhlIG9yZGluYWwgb2YgdGhpcyB3ZWVrJ3MgVGh1cnNkYXksIHRoZW4gKG4gKyA2KSAvIDcgaXNcbiAgICAgZGl2aXNpb24gYnkgNyByb3VuZGluZyB1cCAqKVxuICBsZXQgd2VlayA9IChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcgaW5cbiAgbGV0IHllYXIgPSB5ZWFyIHQgaW5cbiAgaWYgSW50LiggPCApIHdlZWsgMVxuICB0aGVuIGYgfndlZWs6KGxhc3Rfd2Vla19vZl95ZWFyICh5ZWFyIC0gMSkpIH55ZWFyOih5ZWFyIC0gMSlcbiAgZWxzZSBpZiBJbnQuKCA+ICkgd2VlayAobGFzdF93ZWVrX29mX3llYXIgeWVhcilcbiAgdGhlbiBmIH53ZWVrOjEgfnllYXI6KHllYXIgKyAxKVxuICBlbHNlIGYgfndlZWsgfnllYXJcbjs7XG5cbmxldCB3ZWVrX251bWJlcl9hbmRfeWVhciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyIC0+IHdlZWssIHllYXIpXG5sZXQgd2Vla19udW1iZXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhcjpfIC0+IHdlZWspXG5sZXQgaXNfd2Vla2VuZCB0ID0gRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCAoZGF5X29mX3dlZWsgdClcbmxldCBpc193ZWVrZGF5IHQgPSBub3QgKGlzX3dlZWtlbmQgdClcbmxldCBpc19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9IGlzX3dlZWtkYXkgdCAmJiBub3QgKGlzX2hvbGlkYXkgdClcblxubGV0IHJlYyBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MiA9XG4gIGlmIHQxIDwgdDJcbiAgdGhlbiAtZGlmZl93ZWVrZW5kX2RheXMgdDIgdDFcbiAgZWxzZSAoXG4gICAgKCogQmFzaWMgZGF0ZSBkaWZmICopXG4gICAgbGV0IGRpZmYgPSBkaWZmIHQxIHQyIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIFNhdHVyZGF5IC0+IFN1bmRheSBjcm9zc2luZ3MgKilcbiAgICBsZXQgZDEgPSBkYXlfb2Zfd2VlayB0MSBpblxuICAgIGxldCBkMiA9IGRheV9vZl93ZWVrIHQyIGluXG4gICAgbGV0IG51bV9zYXRzdW5fY3Jvc3NpbmdzID1cbiAgICAgIGlmIEludC4oIDwgKSAoRGF5X29mX3dlZWsudG9faW50IGQxKSAoRGF5X29mX3dlZWsudG9faW50IGQyKVxuICAgICAgdGhlbiAxICsgKGRpZmYgLyA3KVxuICAgICAgZWxzZSBkaWZmIC8gN1xuICAgIGluXG4gICAgKG51bV9zYXRzdW5fY3Jvc3NpbmdzICogMilcbiAgICArIChpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMiBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAxIGVsc2UgMClcbiAgICArIGlmIERheV9vZl93ZWVrLiggPSApIGQxIERheV9vZl93ZWVrLlN1biB0aGVuIC0xIGVsc2UgMClcbjs7XG5cbmxldCBkaWZmX3dlZWtkYXlzIHQxIHQyID0gZGlmZiB0MSB0MiAtIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyXG5cbmxldCBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwIG4gPVxuICBsZXQgc3RlcCA9IGlmIEludC4oID49ICkgbiAwIHRoZW4gMSBlbHNlIC0xIGluXG4gIGxldCByZWMgbG9vcCB0IGsgPVxuICAgIGxldCB0X25leHQgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgICBpZiBza2lwIHQgdGhlbiBsb29wIHRfbmV4dCBrIGVsc2UgaWYgSW50LiggPSApIGsgMCB0aGVuIHQgZWxzZSBsb29wIHRfbmV4dCAoayAtIDEpXG4gIGluXG4gIGxvb3AgdCAoYWJzIG4pXG47O1xuXG5sZXQgcmVjIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGlmIGNvbmRpdGlvbiB0IHRoZW4gdCBlbHNlIGZpcnN0X2RheV9zYXRpc2Z5aW5nIChhZGRfZGF5cyB0IHN0ZXApIH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGxldCBuZXh0X2RheSA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyBuZXh0X2RheSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgZm9sbG93aW5nX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHByZXZpb3VzX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcblxubGV0IHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCBhZGRfd2Vla2RheXMgdCBuID0gYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcDppc193ZWVrZW5kIG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfd2Vla2RheXNcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIHQgbiB+c2tpcDooZnVuIGQgLT4gaXNfd2Vla2VuZCBkIHx8IGlzX2hvbGlkYXkgZClcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF9idXNpbmVzc19kYXlzXG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBkYXRlc19iZXR3ZWVuIH5taW46dDEgfm1heDp0MiA9XG4gIGxldCByZWMgbG9vcCB0IGwgPSBpZiB0IDwgdDEgdGhlbiBsIGVsc2UgbG9vcCAoYWRkX2RheXMgdCAoLTEpKSAodCA6OiBsKSBpblxuICBsb29wIHQyIFtdXG47O1xuXG5sZXQgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggPVxuICBsZXQgYWxsX2RhdGVzID0gZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggaW5cbiAgT3B0aW9uLnZhbHVlX21hcCAoTGlzdC5oZCBhbGxfZGF0ZXMpIH5kZWZhdWx0OltdIH5mOihmdW4gZmlyc3RfZGF0ZSAtPlxuICAgICgqIHRvIGF2b2lkIGEgc3lzdGVtIGNhbGwgb24gZXZlcnkgZGF0ZSwgd2UganVzdCBnZXQgdGhlIHdlZWtkYXkgZm9yIHRoZSBmaXJzdFxuICAgICAgIGRhdGUgYW5kIHVzZSBpdCB0byBnZXQgYWxsIHRoZSBvdGhlciB3ZWVrZGF5cyAqKVxuICAgIGxldCBmaXJzdF93ZWVrZGF5ID0gZGF5X29mX3dlZWsgZmlyc3RfZGF0ZSBpblxuICAgIGxldCBkYXRlX2FuZF93ZWVrZGF5cyA9XG4gICAgICBMaXN0Lm1hcGkgYWxsX2RhdGVzIH5mOihmdW4gaSBkYXRlIC0+IGRhdGUsIERheV9vZl93ZWVrLnNoaWZ0IGZpcnN0X3dlZWtkYXkgaSlcbiAgICBpblxuICAgIExpc3QuZmlsdGVyX21hcCBkYXRlX2FuZF93ZWVrZGF5cyB+ZjooZnVuIChkYXRlLCB3ZWVrZGF5KSAtPlxuICAgICAgaWYgRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCB3ZWVrZGF5IHRoZW4gTm9uZSBlbHNlIFNvbWUgZGF0ZSkpXG47O1xuXG5sZXQgYnVzaW5lc3NfZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggfmlzX2hvbGlkYXkgPVxuICB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGQgLT4gbm90IChpc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGZpcnN0X3N0cmljdGx5X2FmdGVyIHQgfm9uOmRvdyA9XG4gIGxldCBkb3cgPSBEYXlfb2Zfd2Vlay50b19pbnQgZG93IGluXG4gIGxldCB0cGx1czEgPSBhZGRfZGF5cyB0IDEgaW5cbiAgbGV0IGN1ciA9IERheV9vZl93ZWVrLnRvX2ludCAoZGF5X29mX3dlZWsgdHBsdXMxKSBpblxuICBsZXQgZGlmZiA9IChkb3cgKyA3IC0gY3VyKSBtb2QgNyBpblxuICBhZGRfZGF5cyB0cGx1czEgZGlmZlxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIG9wZW4gUXVpY2tjaGVja1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyID1cbiAgICBpZiBkMSA+IGQyXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkRhdGUuZ2VuX3VuaWZvcm1faW5jbDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAgIH5sb3dlcl9ib3VuZDooZDEgOiB0KVxuICAgICAgICAgICAgfnVwcGVyX2JvdW5kOihkMiA6IHQpXTtcbiAgICBHZW5lcmF0b3IubWFwIChJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChkaWZmIGQyIGQxKSkgfmY6KGZ1biBkYXlzIC0+IGFkZF9kYXlzIGQxIGRheXMpXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGQxIGQyID1cbiAgICBHZW5lcmF0b3Iud2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDE7IDEuLCBHZW5lcmF0b3IucmV0dXJuIGQyOyAxOC4sIGdlbl91bmlmb3JtX2luY2wgZDEgZDIgXVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIChvZl9zdHJpbmcgXCIxOTAwLTAxLTAxXCIpIChvZl9zdHJpbmcgXCIyMTAwLTAxLTAxXCIpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZTpfIH5oYXNoIC0+IGhhc2hfZm9sZF90IGhhc2ggdClcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBTaHJpbmtlci5lbXB0eSAoKVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG5sZXQgZ2VuX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgbGVhcF95ZWFyX3RhYmxlID0gbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gbm9uX2xlYXBfeWVhcl90YWJsZVxuICBsZXQgb3JkaW5hbF9kYXRlID0gb3JkaW5hbF9kYXRlXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19nZW5lcmF0b3IgcXVpY2tjaGVja19nZW5lcmF0b3IpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19zaHJpbmtlciBxdWlja2NoZWNrX3Nocmlua2VyKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gICAgICB+Zl9pbnZlcnNlOnRvX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLm9mX2hhc2hcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IHN1ZmZpeGVzIGNoYXIgPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIFsgc3ByaW50ZiBcIiVjXCIgY2hhcjsgc3ByaW50ZiBcIiVjTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk0uXCIgY2hhciBdXG4gIHw+IExpc3QuY29uY2F0X21hcCB+ZjooZnVuIHN1ZmZpeCAtPlxuICAgIFsgU3RyaW5nLmxvd2VyY2FzZSBzdWZmaXg7IFN0cmluZy51cHBlcmNhc2Ugc3VmZml4IF0pXG47O1xuXG5sZXQgYW1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnQScpXG5sZXQgcG1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnUCcpXG5cbigqIEF2b2lkcyB0aGUgYWxsb2NhdGlvbiB0aGF0IFtMaXN0LmZpbmRdIHdvdWxkIGVudGFpbCBpbiBib3RoIGJvdGggdGhlIGNsb3N1cmUgaW5wdXQgYW5kXG4gICB0aGUgb3B0aW9uIG91dHB1dC4gKilcbmxldCByZWMgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzID1cbiAgbWF0Y2ggc3VmZml4ZXMgd2l0aFxuICB8IHN1ZmZpeCA6OiBzdWZmaXhlcyAtPlxuICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXggdGhlbiBzdWZmaXggZWxzZSBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXNcbiAgfCBbXSAtPiBcIlwiXG47O1xuXG5sZXQgaGFzX2NvbG9uIHN0cmluZyBwb3MgfnVudGlsID0gcG9zIDwgdW50aWwgJiYgQ2hhci5lcXVhbCAnOicgc3RyaW5nLltwb3NdXG5cbigqIFRoaXMgZnVuY3Rpb24gZGVmaW5lcyB3aGF0IHdlIG1lYW50IGJ5IFwiZGVjaW1hbCBwb2ludFwiLCBiZWNhdXNlIGluIHNvbWUgc3RyaW5nIGZvcm1hdHNcbiAgIGl0IG1lYW5zICcuJyBhbmQgaW4gc29tZSBpdCBjYW4gYmUgJy4nIG9yICcsJy4gVGhlcmUncyBubyBwYXJ0aWN1bGFyIGRlbWFuZCBmb3Igc3VwcG9ydFxuICAgZm9yICcsJywgYW5kIHVzaW5nIGp1c3QgJy4nIGxldHMgdXMgdXNlIFtGbG9hdC5vZl9zdHJpbmddIGZvciB0aGUgZGVjaW1hbCBzdWJzdHJpbmdcbiAgIHdpdGhvdXQgYW55IHN1YnN0aXR1dGlvbnMuICopXG5sZXQgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3MgPSBDaGFyLmVxdWFsICcuJyBzdHJpbmcuW3Bvc11cblxubGV0IGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgbGVuID1cbiAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsICcgJyBzdHJpbmcuW2xlbiAtIDFdIHRoZW4gbGVuIC0gMSBlbHNlIGxlblxuOztcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZS5PZmRheTogaW52YWxpZCBzdHJpbmdcIiBzdHJpbmcgcmVhc29uXVxuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIHwgJ18nIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYW5kL29yIHVuZGVyc2NvcmVzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBwYXJzZSBzdHJpbmcgfmYgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IGFtX29yX3BtLCB1bnRpbCA9XG4gICAgKCogZGlzY3JpbWluYXRlIGFtb25nIEFNICgxOjMwYW0pLCBQTSAoMTI6MzA6MDAgUC5NLiksIG9yIDI0LWhyICgxMzowMCkuICopXG4gICAgbWF0Y2hcbiAgICAgICggZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIGFtX3N1ZmZpeGVzKVxuICAgICAgLCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgcG1fc3VmZml4ZXMpIClcbiAgICB3aXRoXG4gICAgfCBcIlwiLCBcIlwiIC0+IGBocl8yNCwgbGVuXG4gICAgfCBhbSwgXCJcIiAtPiBgaHJfQU0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggYW0pXG4gICAgfCBcIlwiLCBwbSAtPiBgaHJfUE0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggcG0pXG4gICAgfCBfLCBfIC0+IGBocl8yNCwgYXNzZXJ0IGZhbHNlXG4gICAgKCogSW1tZWRpYXRlbHkgYWJvdmUsIGl0IG1heSBzZWVtIG5vbnNlbnNpY2FsIHRvIHdyaXRlIFtgaHJfMjQsIGFzc2VydCBmYWxzZV0gd2hlbiB0aGVcbiAgICAgICBbYGhyXzI0XSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQuIFdlIGRvIHRoaXMgdG8gaGVscCB0aGUgY29tcGlsZXIgZmlndXJlIG91dCBuZXZlciB0b1xuICAgICAgIGFsbG9jYXRlIGEgdHVwbGUgaW4gdGhpcyBjb2RlOiB0aGUgW2xldF0gcGF0dGVybiBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUgYW5kIGV2ZXJ5XG4gICAgICAgbWF0Y2ggY2xhdXNlIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZS4gKilcbiAgaW5cbiAgbGV0IHBvcyA9IDAgaW5cbiAgbGV0IHBvcywgaHIsIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzID1cbiAgICAoKiBlLmcuIFwiMTowMFwiIG9yIFwiMTowMDowMFwiICopXG4gICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMSkgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMjowMFwiIG9yIFwiMTI6MDA6MDBcIiAqKVxuICAgIGVsc2UgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMywgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMSA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMSwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjA5MzBcIjsgbXVzdCBub3QgaGF2ZSBzZWNvbmRzICopXG4gICAgZWxzZSBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19idXRfbm90X3NlY29uZHNcbiAgaW5cbiAgbGV0IHBvcywgbWluLCBleHBlY3Rfc2Vjb25kcyA9XG4gICAgbWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiAqKVxuICAgICAgcG9zLCAwLCBmYWxzZVxuICAgIHwgKGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzKSBhcyBtYXliZV9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICggcG9zICsgM1xuICAgICAgICAsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3NcbiAgICAgICAgLCBtYXRjaCBtYXliZV9zZWNvbmRzIHdpdGhcbiAgICAgICAgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPiB0cnVlXG4gICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIC0+XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBlbmQgb2Ygc3RyaW5nIGFmdGVyIG1pbnV0ZXNcIiApXG4gICAgICAgICgqIGUuZy4gXCIxMjowMFwiICopXG4gICAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgICAgdGhlbiBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBjb2xvbiBvciBhbS9wbSBzdWZmaXggd2l0aCBvcHRpb25hbCBzcGFjZSBhZnRlciBtaW51dGVzXCJcbiAgaW5cbiAgbGV0IHNlYywgc3Vic2VjX3Bvcywgc3Vic2VjX2xlbiwgc3Vic2VjX25vbnplcm8gPVxuICAgIG1hdGNoIGV4cGVjdF9zZWNvbmRzIHdpdGhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiIG9yIFwiMTI6MDBcIiAqKVxuICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgIHRoZW4gMCwgcG9zLCAwLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgYWN0dWFsbHkgdW5yZWFjaGFibGUsIGJhc2VkIG9uIHRoZSB2YXJpb3VzIHdheXMgdGhhdFxuICAgICAgICAgICBbZXhwZWN0X3NlY29uZHNdIGNhbiBlbmQgdXAgZmFsc2UuICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiQlVHOiBkaWQgbm90IGV4cGVjdCBzZWNvbmRzLCBidXQgZm91bmQgdGhlbVwiXG4gICAgfCB0cnVlIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgcG9zICsgMiA+IHVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowXCIgKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCB0d28gZGlnaXRzIG9mIHNlY29uZHNcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zIGluXG4gICAgICAgIGxldCBwb3MgPSBwb3MgKyAyIGluXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICAgIHRoZW4gc2VjLCBwb3MsIDAsIGZhbHNlICgqIGUuZy4gXCIxMjowMDowMC4xMjNcIiAqKVxuICAgICAgICBlbHNlIGlmIHBvcyA8IHVudGlsICYmIGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoIHNlY1xuICAgICAgICAgICwgcG9zXG4gICAgICAgICAgLCB1bnRpbCAtIHBvc1xuICAgICAgICAgICwgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIChwb3MgKyAxKSB+dW50aWwgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRlY2ltYWwgcG9pbnQgb3IgYW0vcG0gc3VmZml4IGFmdGVyIHNlY29uZHNcIilcbiAgaW5cbiAgbGV0IGhyID1cbiAgICAoKiBOQi4gV2UgYWxyZWFkeSBrbm93IFtocl0gaXMgbm9uLW5lZ2F0aXZlLCBiZWNhdXNlIGl0J3MgdGhlIHJlc3VsdCBvZlxuICAgICAgIFtyZWFkXzJfZGlnaXRfaW50XS4gKilcbiAgICBtYXRjaCBhbV9vcl9wbSB3aXRoXG4gICAgfCBgaHJfQU0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMGFtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSBoclxuICAgIHwgYGhyX1BNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBwbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDEyXG4gICAgICBlbHNlIGhyICsgMTJcbiAgICB8IGBocl8yNCAtPlxuICAgICAgKG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgd2l0aG91dCBtaW51dGVzIG9yIEFNL1BNXCJcbiAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+XG4gICAgICAgICBpZiBociA+IDI0XG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBlbHNlIGlmIGhyID0gMjQgJiYgKG1pbiA+IDAgfHwgc2VjID4gMCB8fCBzdWJzZWNfbm9uemVybylcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ0aW1lIGlzIHBhc3QgMjQ6MDA6MDBcIiAoKiBlLmcuIFwiMTM6MDA6MDBcIiAqKVxuICAgICAgICAgZWxzZSBocilcbiAgaW5cbiAgbGV0IG1pbiA9XG4gICAgaWYgbWluID4gNTkgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm1pbnV0ZXMgb3V0IG9mIGJvdW5kc1wiIGVsc2UgbWluXG4gIGluXG4gIGxldCBzZWMgPVxuICAgIGlmIHNlYyA+IDYwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzZWNvbmRzIG91dCBvZiBib3VuZHNcIiBlbHNlIHNlY1xuICBpblxuICBsZXQgc3Vic2VjX2xlbiA9IGlmIHNlYyA9IDYwIHx8IG5vdCBzdWJzZWNfbm9uemVybyB0aGVuIDAgZWxzZSBzdWJzZWNfbGVuIGluXG4gIGYgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbjs7XG5cbmxldCBwYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmYgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIG1hdGNoXG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihTdHJpbmcubGVuZ3RoIHN0cilcbiAgICB3aXRoXG4gICAgfCBSZXN1bHQuT2sgeiAtPiB6XG4gICAgfCBSZXN1bHQuRXJyb3IgcyAtPlxuICAgICAgZmFpbHdpdGhmIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6ICVzXCIgKEVycm9yLnRvX3N0cmluZ19tYWNoIHMpICgpXG4gIGluXG4gIGlmIGxlbiA8IDJcbiAgdGhlbiBmYWlsd2l0aCBcImxlbiA8IDJcIlxuICBlbHNlIChcbiAgICBsZXQgaHIgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zIGluXG4gICAgaWYgaHIgPiAyNCB0aGVuIGZhaWx3aXRoIFwiaG91ciA+IDI0XCI7XG4gICAgaWYgbGVuID0gMlxuICAgIHRoZW4gZiBzdHIgfmhyIH5taW46MCB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgIGVsc2UgaWYgbGVuIDwgNVxuICAgIHRoZW4gZmFpbHdpdGggXCIyIDwgbGVuIDwgNVwiXG4gICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyAyXSAnOicpXG4gICAgdGhlbiBmYWlsd2l0aCBcImZpcnN0IGNvbG9uIG1pc3NpbmdcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbiA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDMpIGluXG4gICAgICBpZiBtaW4gPj0gNjAgdGhlbiBmYWlsd2l0aCBcIm1pbnV0ZSA+IDYwXCI7XG4gICAgICBpZiBociA9IDI0ICYmIG1pbiA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gbWludXRlXCI7XG4gICAgICBpZiBsZW4gPSA1XG4gICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICBlbHNlIGlmIGxlbiA8IDhcbiAgICAgIHRoZW4gZmFpbHdpdGggXCI1IDwgbGVuIDwgOFwiXG4gICAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDVdICc6JylcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJzZWNvbmQgY29sb24gbWlzc2luZ1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDYpIGluXG4gICAgICAgICgqIHNlY29uZCBjYW4gYmUgNjAgaW4gdGhlIGNhc2Ugb2YgYSBsZWFwIHNlY29uZC4gVW5mb3J0dW5hdGVseSwgd2hhdCB3aXRoXG4gICAgICAgICAgIG5vbi1ob3VyLW11bHRpcGxlIHRpbWV6b25lIG9mZnNldHMsIHdlIGNhbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGF0XG4gICAgICAgICAgIHRoZSBob3VyIG9yIG1pbnV0ZSBtdXN0IGJlIGluIHRoYXQgY2FzZSAqKVxuICAgICAgICBpZiBzZWMgPiA2MCB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgc2Vjb25kOiAlaVwiIHNlYyAoKTtcbiAgICAgICAgaWYgaHIgPSAyNCAmJiBzZWMgPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHNlY29uZHNcIjtcbiAgICAgICAgaWYgbGVuID0gOFxuICAgICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgICBlbHNlIGlmIGxlbiA9IDlcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcImxlbmd0aCA9IDlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBzdHIuW3BvcyArIDhdIHdpdGhcbiAgICAgICAgICB8ICcuJyB8ICcsJyAtPlxuICAgICAgICAgICAgbGV0IHN1YnNlY19wb3MgPSBwb3MgKyA4IGluXG4gICAgICAgICAgICBsZXQgc3Vic2VjX2xlbiA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm9cbiAgICAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgICAgICAgKHN1YnNlY19wb3MgKyAxKVxuICAgICAgICAgICAgICAgICAgfnVudGlsOihwb3MgKyBsZW4pXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gc2VjID0gNjAgLT4gMFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBociA9IDI0IC0+IGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHN1YnNlY29uZHNcIlxuICAgICAgICAgICAgICB8IF8gLT4gbGVuIC0gOFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJtaXNzaW5nIHN1YnNlY29uZCBzZXBhcmF0b3JcIikpKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIEhhc2guQnVpbHRpblxuaW5jbHVkZSBTdGFibGVfd2l0bmVzcy5FeHBvcnRcblxuaW5jbHVkZSAoXG4gIEJhc2UgOlxuICBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBib29sID0gYm9vbCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgY2hhciA9IGNoYXIgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGV4biA9IGV4biBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludCA9IGludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50MzIgPSBpbnQzMiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgYnl0ZXMgPSBieXRlcyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgdW5pdCA9IHVuaXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG4gIHdpdGggdHlwZSBib29sIDo9IGJvb2xcbiAgd2l0aCB0eXBlIGNoYXIgOj0gY2hhclxuICB3aXRoIHR5cGUgZXhuIDo9IGV4blxuICB3aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbiAgd2l0aCB0eXBlIGludCA6PSBpbnRcbiAgd2l0aCB0eXBlIGludDMyIDo9IGludDMyXG4gIHdpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxuICB3aXRoIHR5cGUgJ2EgbGlzdCA6PSAnYSBsaXN0XG4gIHdpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG4gIHdpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG4gIHdpdGggdHlwZSBzdHJpbmcgOj0gc3RyaW5nXG4gIHdpdGggdHlwZSBieXRlcyA6PSBieXRlc1xuICB3aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuIiwib3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBleGNlcHRpb24gTmFuX29yX2luZiBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IHZlcmlmeSB0ID1cbiAgICAgIG1hdGNoIFN0ZGxpYi5jbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiAoKVxuICAgICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiByYWlzZSBOYW5fb3JfaW5mXG4gICAgOztcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gRmxvYXQuc2V4cF9vZl90XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gYXMgc2V4cCAtPlxuICAgICAgICBsZXQgdCA9IEZsb2F0LnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICh0cnkgdmVyaWZ5IHQgd2l0aFxuICAgICAgICAgfCBlIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIChJbXBvcnQuRXhuLnRvX3N0cmluZyBlKSBzZXhwKTtcbiAgICAgICAgdFxuICAgICAgfCBzIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIFwiRGVjaW1hbC50X29mX3NleHA6IEV4cGVjdGVkIEF0b20sIGZvdW5kIExpc3RcIiBzXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICgqIEZvciBbc10gd2hpY2ggaXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBmaW5pdGUgZmxvYXQsIGluIGVpdGhlciBkZWNpbWFsIG9yXG4gICAgICAgc2NpZW50aWZpYyBub3RhdGlvbiwgc2hpZnQgdGhlIGRlY2ltYWwgcG9pbnQgb3IgYWRqdXN0IHRoZSBzY2llbnRpZmljIG5vdGF0aW9uXG4gICAgICAgZXhwb25lbnQgYnkgW2J5XSwgd2hpY2ggaXMgZXF1aXZhbGVudCB0byBtdWx0aXBseWluZyB0aGUgbnVtYmVyIGJ5IFsxMCoqYnldLlxuXG4gICAgICAgVGhlIG91dHB1dCB3aWxsIGJlIGluIHNjaWVudGlmaWMgbm90YXRpb24gaWZmIHRoZSBpbnB1dCB3YXMsIGV4Y2VwdCB3aGVuIHRoZVxuICAgICAgIHJlc3VsdGluZyBleHBvbmVudCBhZnRlciB0aGUgc2hpZnQgYmVjb21lcyAwLlxuXG4gICAgICAgTm8gZWZmb3J0IGlzIG1hZGUgdG8gbm9ybWFsaXplIHRoZSBzY2llbnRpZmljIG5vdGF0aW9uIGlmIGl0IHdhcyBub3Qgbm9ybWFsaXplZCwgb3JcbiAgICAgICB0byBzd2l0Y2ggdG8vZnJvbSBzY2llbnRpZmljIG5vdGF0aW9uIHRvIGhlbHAgcmVhZGFiaWxpdHkgKGV4Y2VwdCBmb3IgdGhlIEUwIGNhc2VcbiAgICAgICBtZW50aW9uZWQgYWJvdmUpLiAqKVxuICAgIGxldCByZWMgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieSA9XG4gICAgICBpZiBieSA9IDBcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzID0gU3RyaW5nLmxzdHJpcCBzIGluXG4gICAgICAgIGxldCBkLCBlLCB6ZXJvLCB1bmRlcnNjb3JlID1cbiAgICAgICAgICAoKiBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCBbZF0sIHRoZSBleHBvbmVudCBzaWduIFtlXSwgYW5kIGNoZWNrXG4gICAgICAgICAgICAgaWYgdGhlcmUgYXJlIGFueSBub24temVybyBzaWduaWZpY2FudCBkaWdpdHMgKG9ubHkgYmVmb3JlIHRoZSBleHBvbmVudCBzaWduKVxuICAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiB0aGUgbnVtYmVyIGlzIGVxdWFsIHRvIDAuMCAqKVxuICAgICAgICAgIGxldCBkID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgZSA9IHJlZiBOb25lIGluXG4gICAgICAgICAgbGV0IG5vdF96ZXJvID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IHVuZGVyc2NvcmUgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnLicgLT5cbiAgICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgIWRcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoZiBcIkVycm9yIHBhcnNpbmcgUGVyY2VudC50OiB0b28gbWFueSBkZWNpbWFsIHBvaW50cyBpbiAnJXMnXCIgcyAoKTtcbiAgICAgICAgICAgICAgZCA6PSBTb21lIGlcbiAgICAgICAgICAgIHwgJ2UnIHwgJ0UnIC0+XG4gICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lICFlXG4gICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGhmIFwiRXJyb3IgcGFyc2luZyBQZXJjZW50LnQ6IHRvbyBtYW55IEVzIGluICclcydcIiBzICgpO1xuICAgICAgICAgICAgICBlIDo9IFNvbWUgaVxuICAgICAgICAgICAgfCAnLScgfCAnKycgfCAnMCcgLT4gKClcbiAgICAgICAgICAgIHwgJ18nIC0+IHVuZGVyc2NvcmUgOj0gdHJ1ZVxuICAgICAgICAgICAgfCAnMScgLi4gJzknIC0+IGlmIE9wdGlvbi5pc19ub25lICFlIHRoZW4gbm90X3plcm8gOj0gdHJ1ZVxuICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIHdoZW4gcGFyc2luZyBQZXJjZW50LnQ6ICclYycgaW4gJyVzJ1wiIGMgcyAoKVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgIWQsICFlLCBub3QgIW5vdF96ZXJvLCAhdW5kZXJzY29yZVxuICAgICAgICBpblxuICAgICAgICBpZiB1bmRlcnNjb3JlXG4gICAgICAgIHRoZW4gc2hpZnRfZGVjaW1hbF9wb2ludCAoU3RyaW5nLmZpbHRlciBzIH5mOihmdW4gYyAtPiBDaGFyLihjIDw+ICdfJykpKSB+YnlcbiAgICAgICAgZWxzZSBpZiB6ZXJvXG4gICAgICAgIHRoZW4gc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgKCogW3NdIGlzIGluIHNjaWVudGlmaWMgbm90YXRpb24uICBTaW1wbHkgYWRqdXN0IHRoZSBleHBvbmVudCBhZnRlciAnZScuICopXG4gICAgICAgICAgICBsZXQgZXhwID0gSW50Lm9mX3N0cmluZyAoU3RyaW5nLmRyb3BfcHJlZml4IHMgKGUgKyAxKSkgaW5cbiAgICAgICAgICAgIGxldCBleHAgPSBleHAgKyBieSBpblxuICAgICAgICAgICAgaWYgZXhwID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAoKiBXZSBlbmQgdXAgd2l0aCBleHBvbmVudCAwLCBzbyB3ZSBqdXN0IHNraXAgdGhlIFwiZVwiIGFsdG9nZXRoZXIgKilcbiAgICAgICAgICAgICAgU3RyaW5nLnByZWZpeCBzIGVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgICAgIFsgU3RyaW5nLnByZWZpeCBzIChlICsgMSlcbiAgICAgICAgICAgICAgICA7IChpZiBleHAgPiAwIHRoZW4gXCIrXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICAgIDsgSW50LnRvX3N0cmluZyBleHBcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoKiBbc10gaXMgaW4gZGVjaW1hbCBub3RhdGlvbi4gIFN0YXJ0IGJ5IGRyb3BwaW5nIHRoZSBsZWFkaW5nIHNpZ24gaWYgdGhlcmUgaXNcbiAgICAgICAgICAgICAgIG9uZS4gIFdlJ2xsIHJlLWFkZCBpdCBhdCB0aGUgZW5kIHRvIGtlZXAgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgc2ltcGxlci4gKilcbiAgICAgICAgICAgIGxldCBuZWcgPSBDaGFyLiggPSApIHMuWzBdICctJyBpblxuICAgICAgICAgICAgbGV0IHNpZ25lZCA9IG5lZyB8fCBDaGFyLiggPSApIHMuWzBdICcrJyBpblxuICAgICAgICAgICAgbGV0IHMgPSBpZiBzaWduZWQgdGhlbiBTdHJpbmcuZHJvcF9wcmVmaXggcyAxIGVsc2UgcyBpblxuICAgICAgICAgICAgbGV0IHMsIGJ5ID1cbiAgICAgICAgICAgICAgKCogTmV4dCwgc2NyYXRjaCB0aGUgZGVjaW1hbCBwb2ludCBpZiB0aGVyZSBpcyBvbmUsIHNvIHRoYXQgW3NdIGJlY29tZXMgYW5cbiAgICAgICAgICAgICAgICAgaW50ZWdlciwgYW5kIGFkanVzdCBbYnldIGFjY29yZGluZ2x5IHRvIGtlZXAgdGhlIHJlc3VsdCB1bmNoYW5nZWQuICBXZVxuICAgICAgICAgICAgICAgICBhbHNvIGtub3cgdGhhdCBbcyA8PiAwLjBdIHNvIHdlIHJlbW92ZSBsZWFkaW5nIHplcm9zLiAgV2UgbWF5IGJlIHdhc3RpbmdcbiAgICAgICAgICAgICAgICAgc29tZSB3b3JrIGJlY2F1c2Ugd2UgbWF5IGhhdmUgdG8gYWRkIHRoZW0gYmFjayBiZWxvdywgYnV0IHRoZSBjb2RlIGlzXG4gICAgICAgICAgICAgICAgIHNpbXBsZXIgdGhhdCB3YXkuICopXG4gICAgICAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gcywgYnlcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgICAgICAoKiBXZSBjYWxjdWxhdGVkIFtkXSBiZWZvcmUgcmVtb3ZpbmcgdGhlIFwiLVwiIHNpZ24sIHNvIHdlIG1heSBoYXZlIHRvXG4gICAgICAgICAgICAgICAgICAgICBhZGp1c3QgaXQgbm93ICopXG4gICAgICAgICAgICAgICAgICBkIC0gaWYgc2lnbmVkIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBzdWYgPSBTdHJpbmcuZHJvcF9wcmVmaXggcyAoZCArIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZWYgPSBTdHJpbmcucHJlZml4IHMgZCBpblxuICAgICAgICAgICAgICAgIGxldCBzID0gcHJlZiBeIHN1ZiB8PiBTdHJpbmcubHN0cmlwIH5kcm9wOihDaGFyLiggPSApICcwJykgaW5cbiAgICAgICAgICAgICAgICBsZXQgYnkgPSBieSAtIFN0cmluZy5sZW5ndGggc3VmIGluXG4gICAgICAgICAgICAgICAgcywgYnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBSZW1vdmUgdHJhaWxpbmcgemVyb3MgdG9vICopXG4gICAgICAgICAgICBsZXQgcywgYnkgPVxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGxldCBzID0gcyB8PiBTdHJpbmcucnN0cmlwIH5kcm9wOihDaGFyLiggPSApICcwJykgaW5cbiAgICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBsZW4gLSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgcywgYnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgaWYgYnkgPSAwXG4gICAgICAgICAgICAgIHRoZW4gc1xuICAgICAgICAgICAgICBlbHNlIGlmIGJ5ID4gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAxOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGZ1cnRoZXIgbXVsdGlwbHkgYnkgYVxuICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlIHBvd2VyIG9mIDEwLCBzbyB3ZSBqdXN0IGFkZCAwcyBhdCB0aGUgZW5kLiAqKVxuICAgICAgICAgICAgICAgIHMgXiBTdHJpbmcubWFrZSBieSAnMCdcbiAgICAgICAgICAgICAgZWxzZSBpZiBieSA+IC1sZW5cbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICgqIENhc2UgMjogW3NdIGlzIGFuIGludGVnZXIgd2hpY2ggd2UgbmVlZCB0byBkaXZpZGUgYnkgYSBwb3NpdGl2ZSBwb3dlclxuICAgICAgICAgICAgICAgICAgIG9mIDEwLCBhbmQgaXQgaGFzIGVub3VnaCBkaWdpdHMgdGhhdCB3ZSBjYW4ganVzdCBpbnNlcnQgdGhlICcuJyBpblxuICAgICAgICAgICAgICAgICAgIGJldHdlZW4gdGhlbS4gKilcbiAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgU3RyaW5nLmRyb3Bfc3VmZml4IHMgKC1ieSk7IFwiLlwiOyBTdHJpbmcuc3VmZml4IHMgKC1ieSkgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAzIChieSA8PSAtbGVuKTogW3NdIGlzIGFuIGludGVnZXIgd2hpY2ggd2UgbmVlZCB0byBkaXZpZGUgYnkgYVxuICAgICAgICAgICAgICAgICAgIGxhcmdlIGVub3VnaCBwb3NpdGl2ZSBwb3dlciBvZiAxMCB0aGF0IHdlIG5lZWQgdG8gYWRkIGxlYWRpbmcgMHMuICopXG4gICAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIFwiMC5cIjsgU3RyaW5nLm1ha2UgKC1ieSAtIGxlbikgJzAnOyBzIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBGaW5hbGx5LCByZXN0b3JlIHRoZSBzaWduLiAgV2UgY2FuJ3QganVzdCBkcm9wIHRoZSAnKycgc2lnbiwgd2UgbmVlZCB0b1xuICAgICAgICAgICAgICAgcmVzdG9yZSBpdCB0b28sIGJlY2F1c2UgaWYgd2UgZGlkbid0LCB3ZSB3b3VsZCBzaWxlbnRseSBwYXJzZSBudW1iZXJzIGxpa2VcbiAgICAgICAgICAgICAgIFwiKy0xMyVcIiBvciBcIisrMTdicFwiIHdpdGhvdXQgcmFpc2luZyBhbiBlcnJvci4gKilcbiAgICAgICAgICAgIGlmIHNpZ25lZCB0aGVuIChpZiBuZWcgdGhlbiBcIi1cIiBlbHNlIFwiK1wiKSBeIHMgZWxzZSBzKSlcbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic2hpZnRfZGVjaW1hbF9wb2ludCAxXCIgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIFsgXCIzXCJcbiAgICAgICAgOyBcIjUxLjJcIlxuICAgICAgICA7IFwiLTUwXCJcbiAgICAgICAgOyBcIjMxMjcwMDAuMDAwXCJcbiAgICAgICAgOyBcIjEuNzlFKzMwOFwiXG4gICAgICAgIDsgXCI0Ljk0MDY1NkUtMzI0XCJcbiAgICAgICAgOyBcIi0wLjAwMGUxM1wiXG4gICAgICAgIDsgXCIxLjQ3NjUxRSsxMFwiXG4gICAgICAgIF1cbiAgICAgICAgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiPT0gJXMgPT1cXG5cIiBzO1xuICAgICAgICAgIGxldCB4ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgWyAtNDA7IC0xMDsgLTI7IC0xOyAwOyAxOyAyOyAxMDsgNDAgXSB+ZjooZnVuIGJ5IC0+XG4gICAgICAgICAgICBsZXQgczEgPSBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5IGluXG4gICAgICAgICAgICBwcmludGYgXCIlc1xcblwiIHMxO1xuICAgICAgICAgICAgbGV0IHgxID0gRmxvYXQub2Zfc3RyaW5nIHMxIGluXG4gICAgICAgICAgICBsZXQgeDIgPSB4ICouICgxMC4gKiogZmxvYXQgYnkpIGluXG4gICAgICAgICAgICBhc3NlcnQgKEZsb2F0Lih4MSA9IHgyIHx8IGFicyAoKHgxIC0geDIpIC8geDEpIDwgMWUtNikgOiBib29sKSk7XG4gICAgICAgICAgcHJpbnRmIFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG5cIik7XG4gICAgICAoKiBOb3RlIFwiLTAuMDAwZTEzXCIgaXMgbm90IGFkanVzdGVkICopXG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgICA9PSAzID09XG4gICAgICAgIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM1xuICAgICAgICAwLjAwMDAwMDAwMDNcbiAgICAgICAgMC4wM1xuICAgICAgICAwLjNcbiAgICAgICAgM1xuICAgICAgICAzMFxuICAgICAgICAzMDBcbiAgICAgICAgMzAwMDAwMDAwMDBcbiAgICAgICAgMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gNTEuMiA9PVxuICAgICAgICAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTEyXG4gICAgICAgIDAuMDAwMDAwMDA1MTJcbiAgICAgICAgMC41MTJcbiAgICAgICAgNS4xMlxuICAgICAgICA1MS4yXG4gICAgICAgIDUxMlxuICAgICAgICA1MTIwXG4gICAgICAgIDUxMjAwMDAwMDAwMFxuICAgICAgICA1MTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gLTUwID09XG4gICAgICAgIC0wLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNVxuICAgICAgICAtMC4wMDAwMDAwMDVcbiAgICAgICAgLTAuNVxuICAgICAgICAtNVxuICAgICAgICAtNTBcbiAgICAgICAgLTUwMFxuICAgICAgICAtNTAwMFxuICAgICAgICAtNTAwMDAwMDAwMDAwXG4gICAgICAgIC01MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gMzEyNzAwMC4wMDAgPT1cbiAgICAgICAgMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMTI3XG4gICAgICAgIDAuMDAwMzEyN1xuICAgICAgICAzMTI3MFxuICAgICAgICAzMTI3MDBcbiAgICAgICAgMzEyNzAwMC4wMDBcbiAgICAgICAgMzEyNzAwMDBcbiAgICAgICAgMzEyNzAwMDAwXG4gICAgICAgIDMxMjcwMDAwMDAwMDAwMDAwXG4gICAgICAgIDMxMjcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDEuNzlFKzMwOCA9PVxuICAgICAgICAxLjc5RSsyNjhcbiAgICAgICAgMS43OUUrMjk4XG4gICAgICAgIDEuNzlFKzMwNlxuICAgICAgICAxLjc5RSszMDdcbiAgICAgICAgMS43OUUrMzA4XG4gICAgICAgIDEuNzlFKzMwOVxuICAgICAgICAxLjc5RSszMTBcbiAgICAgICAgMS43OUUrMzE4XG4gICAgICAgIDEuNzlFKzM0OFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSA0Ljk0MDY1NkUtMzI0ID09XG4gICAgICAgIDQuOTQwNjU2RS0zNjRcbiAgICAgICAgNC45NDA2NTZFLTMzNFxuICAgICAgICA0Ljk0MDY1NkUtMzI2XG4gICAgICAgIDQuOTQwNjU2RS0zMjVcbiAgICAgICAgNC45NDA2NTZFLTMyNFxuICAgICAgICA0Ljk0MDY1NkUtMzIzXG4gICAgICAgIDQuOTQwNjU2RS0zMjJcbiAgICAgICAgNC45NDA2NTZFLTMxNFxuICAgICAgICA0Ljk0MDY1NkUtMjg0XG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IC0wLjAwMGUxMyA9PVxuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAxLjQ3NjUxRSsxMCA9PVxuICAgICAgICAxLjQ3NjUxRS0zMFxuICAgICAgICAxLjQ3NjUxXG4gICAgICAgIDEuNDc2NTFFKzhcbiAgICAgICAgMS40NzY1MUUrOVxuICAgICAgICAxLjQ3NjUxRSsxMFxuICAgICAgICAxLjQ3NjUxRSsxMVxuICAgICAgICAxLjQ3NjUxRSsxMlxuICAgICAgICAxLjQ3NjUxRSsyMFxuICAgICAgICAxLjQ3NjUxRSs1MFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8fV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIFN0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgIGV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuICAgICAgKCogTG9naWMgc3RvbGVuIGZyb20gbGliL2Jhc2Uvc3JjL2Zsb2F0Lm1sLCBidXQgdGhpcyBkb2VzIG5vdCBjYWxsXG4gICAgICAgICBbdmFsaWRfZmxvYXRfbGV4ZW1dIHNvIG5vdCBhZGRpbmcgYSB0cmFpbGluZyBcIi5cIiBhbmQgYWxzbywgd2UncmUgdXNpbmdcbiAgICAgICAgIHVwcGVyY2FzZSAoJUcgdnMgJWcpIGZvciBjb25zaXN0ZW5jeSB3aXRoIFtQZXJjZW50LlN0YWJsZS5WMl0uICopXG4gICAgICBsZXQgZmxvYXRfdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVHXCIgeCBpblxuICAgICAgICBpZiBGbG9hdC4oID0gKSAoZmxvYXRfb2Zfc3RyaW5nIHkpIHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN0dcIiB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nJyBmbG9hdF90b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICAgIHRoZW4gXCIweFwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzID0gZmxvYXRfdG9fc3RyaW5nIHggaW5cbiAgICAgICAgICAoKiBVbmltcG9ydGFudCBub3RlOiBWMyBzZXJpYWxpemVzIG5hbiBhcyBcIk5BTnhcIiwgd2hpbGUgVjIgc2VyaWFsaXplcyBpdCBhc1xuICAgICAgICAgICAgIFwiTkFOYnBcIiAqKVxuICAgICAgICAgIGlmIEZsb2F0Lihpc19uYW4geCB8fCBpc19pbmYgeCB8fCB4X2FicyA+PSAxLilcbiAgICAgICAgICB0aGVuIHMgXiBcInhcIlxuICAgICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgICAgICB0aGVuIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6MiBeIFwiJVwiXG4gICAgICAgICAgZWxzZSBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjQgXiBcImJwXCIpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcnIGZsb2F0X3RvX3N0cmluZyB4XG5cbiAgICAgIGxldCByZWFsbHlfb2Zfc3RyaW5nIHN0ciBmbG9hdF9vZl9zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJ4XCIgd2l0aFxuICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHIgfmJ5OjBcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcIiVcIiB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6KC0yKVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiYnBcIiB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6KC00KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiUGVyY2VudC5vZl9zdHJpbmc6IG11c3QgZW5kIGluIHgsICUlLCBvciBicDogJXNcIiBzdHIgKCkpKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyB4ID1cbiAgICAgICAgcmVhbGx5X29mX3N0cmluZyB4IChmdW4gcyB+YnkgLT5cbiAgICAgICAgICBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5XG4gICAgICAgICAgfD4gU2V4cC5BdG9tXG4gICAgICAgICAgfD4gRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLnRfb2Zfc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgeCA9XG4gICAgICAgIHJlYWxseV9vZl9zdHJpbmcgeCAoZnVuIHMgfmJ5IC0+XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBzIHdpdGhcbiAgICAgICAgICB8IFwibmFuXCJcbiAgICAgICAgICB8IFwiLW5hblwiXG4gICAgICAgICAgfCBcIituYW5cIlxuICAgICAgICAgIHwgXCJpbmZcIlxuICAgICAgICAgIHwgXCJpbmZpbml0eVwiXG4gICAgICAgICAgfCBcIitpbmZcIlxuICAgICAgICAgIHwgXCIraW5maW5pdHlcIlxuICAgICAgICAgIHwgXCItaW5mXCJcbiAgICAgICAgICB8IFwiLWluZmluaXR5XCIgLT5cbiAgICAgICAgICAgICgqIFdlIHBhcnNlIHRoZXNlIG5hbiBvciBpbmYgc3RyaW5ncyBkaXJlY3RseSwgYmVjYXVzZVxuICAgICAgICAgICAgICAgW3NoaWZ0X2RlY2ltYWxfcG9pbnRdIGRvZXMgbm90IHN1cHBvcnQgdGhlbSAqKVxuICAgICAgICAgICAgRmxvYXQub2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IF8gLT4gc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieSB8PiBGbG9hdC5vZl9zdHJpbmcpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICAgIHZhbCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgOiBzdHJpbmcgLT4gdFxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSAoU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKFN0cmluZ2FibGUpIDogU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGluY2x1ZGUgKEZsb2F0IDogQmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgKCogVXNlIGEgZGlmZmVyZW50IGJpbl9zaGFwZV90IHRoYW4gUGVyY2VudC5TdGFibGUuVjIsIGV2ZW4gdGhvdWdoIHRoZXNlIHR3byB2ZXJzaW9uc1xuICAgICAgIGhhdmUgY29tcGF0aWJsZSBiaW5faW8gc2VyaWFsaXphdGlvbi4gIFNpbmNlIHRoZXkgZG8gZGlmZmVyIGluIHNleHAgc2VyaWFsaXphdGlvbixcbiAgICAgICB3ZSBlcnIgb24gdGhlIHNpZGUgb2Ygc2FmZXR5IGFuZCBjaGFuZ2UgdGhlIGJpbiBzaGFwZSB0byB3YXJuIHRoYXQgVjMgaXMgbm90IGFsd2F5c1xuICAgICAgIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgVjIuICopXG4gICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImIzMmYyYTFlLTZiNDMtMTFlZC1iMzNiLWFhYzJhNTYzZjEwYVwiKVxuICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgcyA9IFN0cmluZ2FibGUuZmxvYXRfdG9fc3RyaW5nIHggaW5cbiAgICAgICAgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChmbG9hdFtAcXVpY2tjaGVjay5nZW5lcmF0b3IgRmxvYXQuZ2VuX2Zpbml0ZV0pXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBvZl9tdWx0IGYgPSBmXG4gICAgbGV0IHRvX211bHQgdCA9IHRcbiAgICBsZXQgb2ZfcGVyY2VudGFnZSBmID0gZiAvLiAxMDAuXG4gICAgbGV0IHRvX3BlcmNlbnRhZ2UgdCA9IHQgKi4gMTAwLlxuICAgIGxldCBvZl9icCBmID0gZiAvLiAxMF8wMDAuXG4gICAgbGV0IHRvX2JwIHQgPSB0ICouIDEwXzAwMC5cbiAgICBsZXQgb2ZfYnBfaW50IGkgPSBvZl9icCAoRmxvYXQub2ZfaW50IGkpXG4gICAgbGV0IHRvX2JwX2ludCB0ID0gRmxvYXQudG9faW50ICh0b19icCB0KVxuXG4gICAgKCogTXVsdGlwbHkgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgZmxvYXQgW2ZdIGJ5IFsxMCoqYnldLCBhbmQgY29udmVydCBiYWNrIHRvXG4gICAgICAgdGhlIG5lYXJlc3QgcmVwcmVzZW50YWJsZSBmbG9hdC4gKilcbiAgICBsZXQgc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieSA9XG4gICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBmKVxuICAgICAgdGhlbiBmXG4gICAgICBlbHNlIEZsb2F0LnRvX3N0cmluZyBmIHw+IFYzLnNoaWZ0X2RlY2ltYWxfcG9pbnQgfmJ5IHw+IEZsb2F0Lm9mX3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfcGVyY2VudGFnZV9zbG93X21vcmVfYWNjdXJhdGUgZiA9IHNoaWZ0X2RlY2ltYWxfcG9pbnRfaW5fZmxvYXQgZiB+Ynk6KC0yKVxuICAgIGxldCB0b19wZXJjZW50YWdlX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieToyXG4gICAgbGV0IG9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTooLTQpXG4gICAgbGV0IHRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTo0XG5cbiAgICBsZXQgcm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX3NpZ25pZmljYW50IHAgfnNpZ25pZmljYW50X2RpZ2l0c1xuICAgIDs7XG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9tdWx0IHAgfmRlY2ltYWxfZGlnaXRzID0gRmxvYXQucm91bmRfZGVjaW1hbCBwIH5kZWNpbWFsX2RpZ2l0c1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfcGVyY2VudGFnZSBwIH5kZWNpbWFsX2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9kZWNpbWFsIChwICouIDEwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAuXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX2JwIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwMDAuKSB+ZGVjaW1hbF9kaWdpdHMgLy4gMTAwMDAuXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgRXhwb25lbnQgb2YgaW50XG4gICAgICAgIHwgRXhwb25lbnRfRSBvZiBpbnRcbiAgICAgICAgfCBEZWNpbWFsIG9mIGludFxuICAgICAgICB8IE9jYW1sXG4gICAgICAgIHwgQ29tcGFjdCBvZiBpbnRcbiAgICAgICAgfCBDb21wYWN0X0Ugb2YgaW50XG4gICAgICAgIHwgSGV4IG9mIGludFxuICAgICAgICB8IEhleF9FIG9mIGludFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGV4cG9uZW50IH5wcmVjaXNpb24gPSBFeHBvbmVudCBwcmVjaXNpb25cbiAgICAgIGxldCBleHBvbmVudF9FIH5wcmVjaXNpb24gPSBFeHBvbmVudF9FIHByZWNpc2lvblxuICAgICAgbGV0IGRlY2ltYWwgfnByZWNpc2lvbiA9IERlY2ltYWwgcHJlY2lzaW9uXG4gICAgICBsZXQgb2NhbWwgPSBPY2FtbFxuICAgICAgbGV0IGNvbXBhY3QgfnByZWNpc2lvbiA9IENvbXBhY3QgcHJlY2lzaW9uXG4gICAgICBsZXQgY29tcGFjdF9FIH5wcmVjaXNpb24gPSBDb21wYWN0X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4IH5wcmVjaXNpb24gPSBIZXggcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4X0UgfnByZWNpc2lvbiA9IEhleF9FIHByZWNpc2lvblxuXG4gICAgICBsZXQgZm9ybWF0X2Zsb2F0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFeHBvbmVudCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmVcIiBwcmVjaXNpb25cbiAgICAgICAgfCBFeHBvbmVudF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qRVwiIHByZWNpc2lvblxuICAgICAgICB8IERlY2ltYWwgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipmXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgT2NhbWwgLT4gc3ByaW50ZiBcIiVGXCJcbiAgICAgICAgfCBDb21wYWN0IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZ1wiIHByZWNpc2lvblxuICAgICAgICB8IENvbXBhY3RfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkdcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXggcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipoXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgSGV4X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipIXCIgcHJlY2lzaW9uXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9XG4gICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0IGZsb2F0IGluXG4gICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgdGhlbiBcIjB4XCJcbiAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIFN0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICgqIFdBUk5JTkcgLSBQTEVBU0UgUkVBRCBCRUZPUkUgRURJVElORyBUSEVTRSBGVU5DVElPTlM6XG5cbiAgICAgICAgIFRoZSBzdHJpbmcgY29udmVydGVycyBpbiBTdGFibGUuVjMvVjIvVjEgc2hvdWxkIG5ldmVyIGNoYW5nZS4gSWYgeW91IGFyZSBjaGFuZ2luZ1xuICAgICAgICAgdGhlIHNlbWFudGljcyBvZiBhbnl0aGluZyB0aGF0IGFmZmVjdHMgdGhlIHNleHAgb3IgYmluLWlvIHJlcHJlc2VudGF0aW9uIG9mXG4gICAgICAgICB2YWx1ZXMgb2YgdGhpcyB0eXBlICh0aGlzIGluY2x1ZGVzIHRvX3N0cmluZyBhbmQgb2Zfc3RyaW5nKSBtYWtlIGEgU3RhYmxlLlY0IGFuZFxuICAgICAgICAgbWFrZSB5b3VyIGNoYW5nZXMgdGhlcmUuIFRoYW5rcyEgKilcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICAgIGxldCBzdHJpbmcgZmxvYXQgPSBzcHJpbnRmIFwiJS42R1wiIGZsb2F0IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICAgIHRoZW4gXCIweFwiXG4gICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyA9IFYzLm9mX3N0cmluZ1xuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA9IFYzLm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZlxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICAgIHZhbCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgOiBzdHJpbmcgLT4gdFxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSAoU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKFN0cmluZ2FibGUpIDogU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGluY2x1ZGUgKEZsb2F0IDogQmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgKCogTWludCBhIHVuaXF1ZSBbYmluX3NoYXBlX3RdIHRoYXQncyBkaXN0aW5jdCBmcm9tIHRoZSBoaWRkZW4gdW5kZXJseWluZ1xuICAgICAgIHJlcHJlc2VudGF0aW9uIG9mIGZsb2F0LiAqKVxuICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIxZDFlNzZiYy1lYTRiLTExZWItYTE2YS1hYTViMjhkMWY0ZDdcIilcbiAgICAgICAgWyBiaW5fc2hhcGVfdCBdXG4gICAgOztcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9IFYzLmNvbXBhcmF0b3JcbiAgICAgIGVuZClcblxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjMuY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBWMlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBGbG9hdC5iaW5fc2hhcGVfdFxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGJpbl9pb11cbiAgICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYzLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBWMy5jb21wYXJhdG9yXG5cbiAgICAgICAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXRcbiAgICAgICAgICAgICBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuIHBlcmNlbnQgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nXG4gICAgICAgICAgICAgY29tcGFyYWJsZS1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXIgc2VyaWFsaXphdGlvbi5cbiAgICAgICAgICAqKVxuICAgICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICAgICAgICB8IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbl9yZXByID0gc3RydWN0XG4gICAgICBsZXQgbm9uZSA9IEZsb2F0Lm5hblxuICAgICAgbGV0IGlzX25vbmUgdCA9IEZsb2F0LmlzX25hbiB0XG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlID0gaXNfc29tZVxuICAgICAgbGV0IHNvbWUgPSBGbi5pZFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG4gICAgICBsZXQgYXBwbHlfd2l0aF9ub25lX2FzX25hbiA9ICggKi4gKVxuICAgICAgbGV0IG9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fbXVsdF93aXRoX25vbmVfYXNfbmFuID0gRm4uaWRcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlBlcmNlbnQuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuY2hlY2tlZF92YWx1ZSB0KVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBWMy50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZTliNTIwMjgtNmI0NS0xMWVkLWE2YjYtYWFjMmE1NjNmMTBhXCIpXG4gICAgICAgICAgWyBiaW5fc2hhcGVfdCBdXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlIE9wdGlvbl9yZXByXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjMuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMy50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYzLnQgT3B0aW9uLnRdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYyLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmN2FhMDRlOC1kYTNlLTExZWMtYjU0Ni1hYTczMjg0MzNiNzBcIilcbiAgICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgT3B0aW9uX3JlcHJcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMi5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYyLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjIudCBPcHRpb24udF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVjJcblxuICAgICAgICBsZXQgYmluX3NoYXBlX3QgPSBGbG9hdC5iaW5fc2hhcGVfdFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjEuQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubGV0IGlzX3plcm8gdCA9IHQgPSAwLlxubGV0IGFwcGx5IHQgZiA9IHQgKi4gZlxubGV0IHNjYWxlIHQgZiA9IHQgKi4gZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIEZsb2F0XG5cbiAgbGV0IG9uZV9odW5kcmVkX3BlcmNlbnQgPSAxLlxuICBsZXQgKCAvLyApIHggeSA9IG9mX211bHQgeCAvLiBvZl9tdWx0IHlcbmVuZCA6XG5zaWdcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvbmVfaHVuZHJlZF9wZXJjZW50IDogdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvLyApIDogdCAtPiB0IC0+IGZsb2F0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgaXNfbmFuIDogdCAtPiBib29sXG4gIHZhbCBpc19pbmYgOiB0IC0+IGJvb2xcbiAgdmFsIHNpZ25fZXhuIDogdCAtPiBTaWduLnRcblxuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IHZhbGlkYXRlID0gRmxvYXQudmFsaWRhdGVfb3JkaW5hcnlcbmxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgcyA9IFN0cmluZ2FibGUub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHNcbmxldCB0X29mX3NleHBfYWxsb3dfbmFuX2FuZF9pbmYgc2V4cCA9IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiAoU2V4cC50b19zdHJpbmcgc2V4cClcblxubW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0ICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgbGV0IHRvX3N0cmluZyB4ID0gc3ByaW50ZiBcIiUuNkclJVwiICh4ICogMTAwLilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX3JvdW5kX3RyaXBwYWJsZSA9IFN0YWJsZS5WMy50b19zdHJpbmdcblxubW9kdWxlIEFsbW9zdF9yb3VuZF90cmlwcGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIGxldCB0b19zdHJpbmcgeCA9IFN0YWJsZS5WMy5TdHJpbmdhYmxlLih0b19zdHJpbmcnIChmb3JtYXRfZmxvYXQgXCIlLjE0R1wiKSB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBTdGFibGUuVjMuU3RyaW5nYWJsZS5vZl9zdHJpbmcgeFxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICBsZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYzLnRfb2Zfc2V4cFxuXG4gIG1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICBsZXQgb3BlbiBTdGFibGUuVjMgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nYWJsZS5mb3JtYXRfZmxvYXQgXCIlLjE0R1wiIHggaW5cbiAgICAgIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6MiBeIFwiJVwiXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCByYW5kb21pemUgc3BhbiByYW5kb21fc3RhdGUgfnBlcmNlbnQgfnNjYWxlID1cbiAgbGV0IG11bHQgPSBQZXJjZW50LnRvX211bHQgcGVyY2VudCBpblxuICBpZiBGbG9hdC4oIDwgKSBtdWx0IDAuIHx8IEZsb2F0LiggPiApIG11bHQgMS5cbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlNwYW4ucmFuZG9taXplOiBwZXJjZW50IGlzIG91dCBvZiByYW5nZSBbMHgsIDF4XVwiIChwZXJjZW50IDogUGVyY2VudC50KV07XG4gIGxldCBmYWN0b3IgPVxuICAgIFJhbmRvbS5TdGF0ZS5mbG9hdF9yYW5nZSByYW5kb21fc3RhdGUgKDEuIC0uIG11bHQpIChGbG9hdC5vbmVfdWxwIGBVcCAoMS4gKy4gbXVsdCkpXG4gIGluXG4gIHNjYWxlIHNwYW4gZmFjdG9yXG47O1xuXG5sZXQgZm9ybWF0X2RlY2ltYWwgbiB0ZW50aHMgdW5pdHMgPVxuICBhc3NlcnQgKHRlbnRocyA+PSAwICYmIHRlbnRocyA8IDEwKTtcbiAgaWYgbiA8IDEwICYmIHRlbnRocyA8PiAwXG4gIHRoZW4gc3ByaW50ZiBcIiVkLiVkJXNcIiBuIHRlbnRocyB1bml0c1xuICBlbHNlIHNwcmludGYgXCIlZCVzXCIgbiB1bml0c1xuOztcblxubGV0IHNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zID1cbiAgbGV0IHMgPVxuICAgIGlmIGhyID49IDI0XG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCAoaHIgLyAyNCkgKEludC5vZl9mbG9hdCAoRmxvYXQub2ZfaW50IChociAlIDI0KSAvLiAyLjQpKSBcImRcIlxuICAgIGVsc2UgaWYgaHIgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBociAobWluIC8gNikgXCJoXCJcbiAgICBlbHNlIGlmIG1pbiA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1pbiAoc2VjIC8gNikgXCJtXCJcbiAgICBlbHNlIGlmIHNlYyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHNlYyAobXMgLyAxMDApIFwic1wiXG4gICAgZWxzZSBpZiBtcyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1zICh1cyAvIDEwMCkgXCJtc1wiXG4gICAgZWxzZSBpZiB1cyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHVzIChucyAvIDEwMCkgXCJ1c1wiXG4gICAgZWxzZSBzcHJpbnRmIFwiJWluc1wiIG5zXG4gIGluXG4gIG1hdGNoIChzaWduIDogU2lnbi50KSB3aXRoXG4gIHwgTmVnIC0+IFwiLVwiIF4gc1xuICB8IFplcm8gfCBQb3MgLT4gc1xuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc2lnbiA6IFNpZ24udFxuICAgICAgICA7IGhyIDogaW50XG4gICAgICAgIDsgbWluIDogaW50XG4gICAgICAgIDsgc2VjIDogaW50XG4gICAgICAgIDsgbXMgOiBpbnRcbiAgICAgICAgOyB1cyA6IGludFxuICAgICAgICA7IG5zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIExpa2VfYV9mbG9hdCA9IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCB6ZXJvIDogdFxuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IHRcbiAgICAgIHZhbCBhYnMgOiB0IC0+IHRcbiAgICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgaW5jbHVkZSBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgbW9kdWxlIENvbnN0YW50IDogc2lnXG4gICAgICAgIHZhbCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG5hbm9zZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaWNyb3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kIDogdFxuICAgICAgICB2YWwgc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWludXRlIDogdFxuICAgICAgICB2YWwgaG91ciA6IHRcbiAgICAgICAgdmFsIGRheSA6IHRcbiAgICAgIGVuZFxuXG4gICAgICB2YWwgdG9fcGFydHMgOiB0IC0+IFBhcnRzLnRcbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgICB2YWwgcHJldiA6IHQgLT4gdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICAgICAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuXG4gICAgICAoKiBJRiBUSElTIFJFUFJFU0VOVEFUSU9OIEVWRVIgQ0hBTkdFUywgRU5TVVJFIFRIQVQgRUlUSEVSXG4gICAgICAgICAoMSkgYWxsIHZhbHVlcyBzZXJpYWxpemUgdGhlIHNhbWUgd2F5IGluIGJvdGggcmVwcmVzZW50YXRpb25zLCBvclxuICAgICAgICAgKDIpIHlvdSBhZGQgYSBuZXcgVGltZS5TcGFuIHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG4gICAgICBpbmNsdWRlIChcbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0XG5cbiAgICAgICAgbGV0IHNpZ24gPSBzaWduX2V4blxuICAgICAgZW5kIDpcbiAgICAgICAgTGlrZV9hX2Zsb2F0IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICAoKiB0aGlzIHByZXZlbnRzIGFueSB3b3JyeSBhYm91dCBoYXZpbmcgdGhlc2UgdmVyeSBjb21tb24gbmFtZXMgcmVkZWZpbmVkIGJlbG93IGFuZFxuICAgICAgICAgbWFrZXMgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoaXMgbW9kdWxlIHNhZmVyLiAgQ29uc3RhbnQgaXMgaW5jbHVkZWQgYXQgdGhlIHZlcnlcbiAgICAgICAgIGJvdHRvbSB0byByZS1leHBvcnQgdGhlc2UgY29uc3RhbnRzIGluIGEgbW9yZSBjb252ZW5pZW50IHdheSAqKVxuICAgICAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgICAgIGxldCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kID0gMUU5XG4gICAgICAgIGxldCBtaWNyb3NlY29uZHNfcGVyX3NlY29uZCA9IDFFNlxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTNcblxuICAgICAgICAoKiBzcGFucyBhcmUgc3RvcmVkIGFzIGEgZmxvYXQgaW4gc2Vjb25kcyAqKVxuICAgICAgICBsZXQgbmFub3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBuYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWljcm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWxsaXNlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IHNlY29uZCA9IG9mX2Zsb2F0IDEuXG4gICAgICAgIGxldCBtaW51dGUgPSBvZl9mbG9hdCA2MC5cbiAgICAgICAgbGV0IGhvdXIgPSBvZl9mbG9hdCAoNjAuICouIDYwLilcbiAgICAgICAgbGV0IGRheSA9IG9mX2Zsb2F0ICgyNC4gKi4gNjAuICouIDYwLilcbiAgICAgIGVuZFxuXG5cbiAgICAgIGxldCB0b19wYXJ0cyB0IDogUGFydHMudCA9XG4gICAgICAgIGxldCBzaWduID0gRmxvYXQuc2lnbl9leG4gdCBpblxuICAgICAgICBsZXQgdCA9IGFicyB0IGluXG4gICAgICAgIGxldCBpbnRlZ3JhbCA9IEZsb2F0LnJvdW5kX2Rvd24gdCBpblxuICAgICAgICBsZXQgZnJhY3Rpb25hbCA9IHQgLS4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IHNlY29uZHMgPSBGbG9hdC5pcm91bmRfZG93bl9leG4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuIChmcmFjdGlvbmFsICouIDFFOSkgaW5cbiAgICAgICAgbGV0IHNlY29uZHMsIG5hbm9zZWNvbmRzID1cbiAgICAgICAgICBpZiBJbnQuZXF1YWwgbmFub3NlY29uZHMgMV8wMDBfMDAwXzAwMFxuICAgICAgICAgIHRoZW4gSW50LnN1Y2Mgc2Vjb25kcywgMFxuICAgICAgICAgIGVsc2Ugc2Vjb25kcywgbmFub3NlY29uZHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNlYyA9IHNlY29uZHMgbW9kIDYwIGluXG4gICAgICAgIGxldCBtaW51dGVzID0gc2Vjb25kcyAvIDYwIGluXG4gICAgICAgIGxldCBtaW4gPSBtaW51dGVzIG1vZCA2MCBpblxuICAgICAgICBsZXQgaHIgPSBtaW51dGVzIC8gNjAgaW5cbiAgICAgICAgbGV0IG5zID0gbmFub3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgdXMgPSBtaWNyb3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kcyA9IG1pY3Jvc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IG1zID0gbWlsbGlzZWNvbmRzIGluXG4gICAgICAgIHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgKCAvICkgdCBmID0gVC5vZl9mbG9hdCAoKHQgOiBULnQgOj4gZmxvYXQpIC8uIGYpXG4gICAgbGV0ICggLy8gKSAoZiA6IFQudCkgKHQgOiBULnQpID0gKGYgOj4gZmxvYXQpIC8uICh0IDo+IGZsb2F0KVxuXG4gICAgKCogTXVsdGlwbHlpbmcgYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBkaXZpc2lvbiBieSAxRS0zICopXG4gICAgbGV0IHRvX25zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fdXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fbXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fc2VjICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KVxuICAgIGxldCB0b19taW4geCA9IHggLy8gVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgdG9faHIgeCA9IHggLy8gVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IHRvX2RheSB4ID0geCAvLyBULkNvbnN0YW50LmRheVxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHggPSBGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4biAodG9fc2VjIHgpXG4gICAgbGV0ICggKiogKSBmICh0IDogVC50KSA9IFQub2ZfZmxvYXQgKGYgKi4gKHQgOj4gZmxvYXQpKVxuXG4gICAgKCogRGl2aXNpb24gYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBtdWx0aXBseWluZyBieSAxRS0zICopXG4gICAgbGV0IG9mX25zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfdXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfbXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2Zfc2VjIHggPSBULm9mX2Zsb2F0IHhcbiAgICBsZXQgb2ZfaW50MzJfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDMyLnRvX2Zsb2F0IHNlYylcblxuICAgICgqIE5vdGUgdGhhdCBbSW50NjMudG9fZmxvYXRdIGNhbiBsb3NlIHByZWNpc2lvbiwgYnV0IG9ubHkgb24gaW5wdXRzIGxhcmdlIGVub3VnaCB0aGF0XG4gICAgICAgW29mX3NlY10gaW4gZWl0aGVyIHRoZSBUaW1lX25zIG9yIFRpbWVfZmxvYXQgY2FzZSB3b3VsZCBsb3NlIHByZWNpc2lvbiAob3IganVzdCBiZVxuICAgICAgIHBsYWluIG91dCBvZiBib3VuZHMpIGFueXdheS4gKilcbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDYzLnRvX2Zsb2F0IHNlYylcbiAgICBsZXQgb2ZfbWluIHggPSB4ICoqIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IG9mX2hyIHggPSB4ICoqIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCBvZl9kYXkgeCA9IHggKiogVC5Db25zdGFudC5kYXlcbiAgICBsZXQgb2ZfaW50X25zIHggPSBvZl9ucyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF91cyB4ID0gb2ZfdXMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfbXMgeCA9IG9mX21zIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X3NlYyB4ID0gb2Zfc2VjIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X21pbiB4ID0gb2ZfbWluIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X2hyIHggPSBvZl9ociAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9kYXkgeCA9IG9mX2RheSAoRmxvYXQub2ZfaW50IHgpXG5cbiAgICBsZXQgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSB0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0XG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdFxuICAgICAgfCBTZWNvbmQgLT4gdG9fc2VjIHRcbiAgICAgIHwgTWludXRlIC0+IHRvX21pbiB0XG4gICAgICB8IEhvdXIgLT4gdG9faHIgdFxuICAgICAgfCBEYXkgLT4gdG9fZGF5IHRcbiAgICA7O1xuXG4gICAgbGV0IHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gb2ZfbnMgZmxvYXRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gb2ZfdXMgZmxvYXRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gb2ZfbXMgZmxvYXRcbiAgICAgIHwgU2Vjb25kIC0+IG9mX3NlYyBmbG9hdFxuICAgICAgfCBNaW51dGUgLT4gb2ZfbWluIGZsb2F0XG4gICAgICB8IEhvdXIgLT4gb2ZfaHIgZmxvYXRcbiAgICAgIHwgRGF5IC0+IG9mX2RheSBmbG9hdFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhzaWduID0gU2lnbi5Qb3MpXG4gICAgICAgICAgPyhkYXkgPSAwKVxuICAgICAgICAgID8oaHIgPSAwKVxuICAgICAgICAgID8obWluID0gMClcbiAgICAgICAgICA/KHNlYyA9IDApXG4gICAgICAgICAgPyhtcyA9IDApXG4gICAgICAgICAgPyh1cyA9IDApXG4gICAgICAgICAgPyhucyA9IDApXG4gICAgICAgICAgKClcbiAgICAgID1cbiAgICAgIGxldCAoICsgKSA9IFQuKCArICkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgb2ZfZGF5IChGbG9hdC5vZl9pbnQgZGF5KVxuICAgICAgICArIG9mX2hyIChGbG9hdC5vZl9pbnQgaHIpXG4gICAgICAgICsgb2ZfbWluIChGbG9hdC5vZl9pbnQgbWluKVxuICAgICAgICArIG9mX3NlYyAoRmxvYXQub2ZfaW50IHNlYylcbiAgICAgICAgKyBvZl9tcyAoRmxvYXQub2ZfaW50IG1zKVxuICAgICAgICArIG9mX3VzIChGbG9hdC5vZl9pbnQgdXMpXG4gICAgICAgICsgb2ZfbnMgKEZsb2F0Lm9mX2ludCBucylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgIHwgTmVnIC0+IFQuKCAtICkgVC56ZXJvIHRcbiAgICAgIHwgUG9zIHwgWmVybyAtPiB0XG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29uc3RhbnRcblxuICAgIGxldCByYW5kb21pemUgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0IH5wZXJjZW50ID1cbiAgICAgIFNwYW5faGVscGVycy5yYW5kb21pemUgdCBzdGF0ZSB+cGVyY2VudCB+c2NhbGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgICAgIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICAgICAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICBsZXQgb2Zfc3RyaW5nX3YxX3YyIChzIDogc3RyaW5nKSB+aXNfdjIgPVxuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJlbXB0eSBzdHJpbmdcIlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgZmxvYXQgbiA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuZHJvcF9zdWZmaXggcyBuIHdpdGhcbiAgICAgICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcIm5vIG51bWJlciBnaXZlblwiXG4gICAgICAgICAgICB8IHMgLT5cbiAgICAgICAgICAgICAgbGV0IHYgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgICAgICBWYWxpZGF0ZS5tYXliZV9yYWlzZSAoRmxvYXQudmFsaWRhdGVfb3JkaW5hcnkgdik7XG4gICAgICAgICAgICAgIHZcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAobWF0Y2ggcy5bSW50LiggLSApIGxlbiAxXSB3aXRoXG4gICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgaWYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ20nXG4gICAgICAgICAgICAgdGhlbiBvZl9tcyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICd1J1xuICAgICAgICAgICAgIHRoZW4gb2ZfdXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbidcbiAgICAgICAgICAgICB0aGVuIG9mX25zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgVC5vZl9mbG9hdCAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnbScgLT4gb2ZfbWluIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdoJyAtPiBvZl9ociAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnZCcgLT4gb2ZfZGF5IChmbG9hdCAxKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBpZiBpc192MlxuICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG5zLCB1cywgbXMsIHMsIG0sIGgsIG9yIGQuXCJcbiAgICAgICAgICAgICBlbHNlIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBtcywgcywgbSwgaCwgb3IgZC5cIilcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZiBcIlNwYW4ub2Zfc3RyaW5nIGNvdWxkIG5vdCBwYXJzZSAnJXMnOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHAgPSBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cFxuXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cCBvZiBTZXhwLnQgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjIgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nX3YxX3YyIHggfmlzX3YyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHAgKHNleHAsIGV4bikpIHNleHApXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IHNleHApIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHN0cmluZyB+aXNfdjIgc3VmZml4IGZsb2F0ID1cbiAgICAgIGlmIGlzX3YyXG4gICAgICAoKiBUaGlzIGlzIHRoZSBzYW1lIGZsb2F0LXRvLXN0cmluZyBjb252ZXJzaW9uIHVzZWQgaW4gW0Zsb2F0LnNleHBfb2ZfdF0uICBJdCdzIGxpa2VcbiAgICAgICAgIFtGbG9hdC50b19zdHJpbmddLCBidXQgbWF5IGxlYXZlIG9mZiB0cmFpbGluZyBwZXJpb2QuICopXG4gICAgICB0aGVuICFTZXhwbGliLkNvbnYuZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgZmxvYXQgXiBzdWZmaXhcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiVnJXNcIiBmbG9hdCBzdWZmaXhcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgICgqIEknZCBsaWtlIGl0IHRvIGJlIHRoZSBjYXNlIHRoYXQgeW91IGNvdWxkIG5ldmVyIGNvbnN0cnVjdCBhbiBpbmZpbml0ZSBzcGFuLCBidXQgSVxuICAgICAgIGNhbid0IHRoaW5rIG9mIGEgZ29vZCB3YXkgdG8gZW5mb3JjZSBpdC4gIFNvIHRoaXMgdG9fc3RyaW5nIGZ1bmN0aW9uIGNhbiBwcm9kdWNlXG4gICAgICAgc3RyaW5ncyB0aGF0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhleSBhcmUgZmVkIHRvIG9mX3N0cmluZyAqKVxuICAgIGxldCB0b19zdHJpbmdfdjFfdjIgKHQgOiBULnQpIH5pc192MiA9XG4gICAgICAoKiB0aGlzIGlzIGEgc2FkIGJyb2tlbiBhYnN0cmFjdGlvbi4uLiAqKVxuICAgICAgbGV0IG1vZHVsZSBDID0gRmxvYXQuQ2xhc3MgaW5cbiAgICAgIG1hdGNoIEZsb2F0LmNsYXNzaWZ5ICh0IDo+IGZsb2F0KSB3aXRoXG4gICAgICB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IFwiMHNcIlxuICAgICAgfCBDLkluZmluaXRlIC0+IGlmIFQuKCA+ICkgdCBULnplcm8gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgICAgIHwgQy5OYW4gLT4gXCJuYW5cIlxuICAgICAgfCBDLk5vcm1hbCAtPlxuICAgICAgICBsZXQgKCA8ICkgPSBULiggPCApIGluXG4gICAgICAgIGxldCBhYnNfdCA9IFQub2ZfZmxvYXQgKEZsb2F0LmFicyAodCA6PiBmbG9hdCkpIGluXG4gICAgICAgIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWNyb3NlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJuc1wiICh0b19ucyB0KVxuICAgICAgICBlbHNlIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWxsaXNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJ1c1wiICh0b191cyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibXNcIiAodG9fbXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQubWludXRlXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInNcIiAodG9fc2VjIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmhvdXJcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibVwiICh0b19taW4gdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuZGF5XG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcImhcIiAodG9faHIgdClcbiAgICAgICAgZWxzZSBzdHJpbmcgfmlzX3YyIFwiZFwiICh0b19kYXkgdClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdF92MV92MiB0IH5pc192MiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3YxX3YyIHQgfmlzX3YyKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MjpmYWxzZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192MjpmYWxzZVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOnRydWVcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6dHJ1ZVxuICBlbmRcblxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICBsZXQgb3BlbiBUIGluXG4gICAgICBsZXQgb3BlbiBDb25zdGFudCBpblxuICAgICAgbGV0IGFic190ID0gVC5hYnMgdCBpblxuICAgICAgaWYgYWJzX3QgPj0gZGF5XG4gICAgICB0aGVuIERheVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBob3VyXG4gICAgICB0aGVuIEhvdXJcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gICAgICB0aGVuIE1pbnV0ZVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgICAgIHRoZW4gU2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbGxpc2Vjb25kXG4gICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICBlbHNlIE5hbm9zZWNvbmRcbiAgICA7O1xuXG4gICAgbGV0IG9mX3VuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50IC0+IFQudCA9XG4gICAgICBsZXQgb3BlbiBULkNvbnN0YW50IGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWljcm9zZWNvbmRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgICAgIHwgU2Vjb25kIC0+IHNlY29uZFxuICAgICAgfCBNaW51dGUgLT4gbWludXRlXG4gICAgICB8IEhvdXIgLT4gaG91clxuICAgICAgfCBEYXkgLT4gZGF5XG4gICAgOztcblxuICAgIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBcIm5zXCJcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gXCJ1c1wiXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IFwibXNcIlxuICAgICAgfCBTZWNvbmQgLT4gXCJzXCJcbiAgICAgIHwgTWludXRlIC0+IFwibVwiXG4gICAgICB8IEhvdXIgLT4gXCJoXCJcbiAgICAgIHwgRGF5IC0+IFwiZFwiXG4gICAgOztcblxuICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgIGxldCBtZXNzYWdlID0gXCJUaW1lLlNwYW4ub2Zfc3RyaW5nOiBcIiBeIHJlYXNvbiBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBtZXNzYWdlIHN0cmluZ11cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggdW5pdF9vZl90aW1lX2xpc3QgPVxuICAgICAgICBtYXRjaCB1bml0X29mX3RpbWVfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBzdWZmaXhcIlxuICAgICAgICB8IHVuaXRfb2ZfdGltZSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCBzdHJpbmcgfnBvczppbmRleCB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgICAgIHRoZW4gdW5pdF9vZl90aW1lXG4gICAgICAgICAgZWxzZSBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCByZXN0XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXggPVxuICAgICAgICAoKiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgXCJtc1wiIGNvbWVzIGJlZm9yZSBcIm1cIiBpbiBbVW5pdF9vZl90aW1lLmFsbF0gdG8gZ2V0IGFcbiAgICAgICAgICAgY29ycmVjdCBtYXRjaCBvbiBtaWxsaXNlY29uZCB0aW1lc3RhbXBzLiBUaGlzIGFzc3VtcHRpb24gaXMgZGVtb25zdHJhdGVkIGluIHRoZVxuICAgICAgICAgICBleHBlY3QgdGVzdCBiZWxvdy4gKilcbiAgICAgICAgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggVW5pdF9vZl90aW1lLmFsbFxuICAgICAgOztcblxuICAgICAgKCogV2UgdmFsaWRhdGUgbWFnbml0dWRlIHN0cmluZ3Mgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB1bml0LW9mLXRpbWUgc3VmZml4XG4gICAgICAgICBiZWdpbnMsIGFuZCBzbyB0aGF0IG9ubHkgc2Vuc2libGUgc3RyaW5ncyBhcmUgYWxsb3dlZC4gV2UgZG8gbm90IHdhbnQgdG8gYmUgYXNcbiAgICAgICAgIHBlcm1pc3NpdmUgYXMgW0Zsb2F0Lm9mX3N0cmluZ107IGZvciBleGFtcGxlLCBoZXhhZGVjaW1hbCBzcGFuIG1hZ25pdHVkZXMgYXJlIG5vdFxuICAgICAgICAgYWxsb3dlZC4gQWZ0ZXIgdmFsaWRhdGlvbiwgd2Ugc3RpbGwgdXNlIFtGbG9hdC5vZl9zdHJpbmddIHRvIHByb2R1Y2UgdGhlIGFjdHVhbFxuICAgICAgICAgdmFsdWUuICopXG4gICAgICBtb2R1bGUgRmxvYXRfcGFyc2VyID0gc3RydWN0XG4gICAgICAgICgqIFtJbl9kZWNpbWFsX2hhdmVfZGlnaXRdIGluY2x1ZGVzIGhhdmluZyBhIGRpZ2l0IGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgdHlwZSBzdGF0ZSA9XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuXG4gICAgICAgIHR5cGUgdG9rZW4gPVxuICAgICAgICAgIHwgRGlnaXRcbiAgICAgICAgICB8IFBvaW50XG4gICAgICAgICAgfCBVbmRlclxuICAgICAgICAgIHwgU2lnblxuICAgICAgICAgIHwgRXhwdFxuXG4gICAgICAgIGxldCBzdGF0ZV9pc19maW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0IC0+IHRydWVcbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQgLT4gZmFsc2VcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9rZW5fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCAnMCcgLi4gJzknIC0+IFNvbWUgRGlnaXRcbiAgICAgICAgICB8ICcuJyAtPiBTb21lIFBvaW50XG4gICAgICAgICAgfCAnXycgLT4gU29tZSBVbmRlclxuICAgICAgICAgIHwgJy0nIHwgJysnIC0+IFNvbWUgU2lnblxuICAgICAgICAgIHwgJ0UnIHwgJ2UnIC0+IFNvbWUgRXhwdFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBtYWduaXR1ZGVcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlID1cbiAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgIGlmIGluZGV4ID0gbGVuXG4gICAgICAgICAgdGhlbiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCB0b2tlbl9vZl9jaGFyIHN0cmluZy5baW5kZXhdIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICB8IFNvbWUgdG9rZW4gLT5cbiAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzdGF0ZSwgdG9rZW4gd2l0aFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFNpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFBvaW50IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBTaWduIC0+XG4gICAgICAgICAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBTaWduIC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXg6KGluZGV4ICsgMSkgfmxlbiB+c3RhdGUpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGU6SW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHJlYyBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXggfmxlbiA9XG4gICAgICAgIGlmIEludC5lcXVhbCBpbmRleCBsZW5cbiAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHN1ZmZpeF9pbmRleCA9IEZsb2F0X3BhcnNlci5maW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleDpzdWZmaXhfaW5kZXggaW5cbiAgICAgICAgICBsZXQgdW50aWxfaW5kZXggPVxuICAgICAgICAgICAgSW50LiggKyApIHN1ZmZpeF9pbmRleCAoU3RyaW5nLmxlbmd0aCAoc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9XG4gICAgICAgICAgICBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOmluZGV4IH5sZW46KEludC4oIC0gKSBzdWZmaXhfaW5kZXggaW5kZXgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXQgPSBGbG9hdC5vZl9zdHJpbmcgZmxvYXRfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IG1hZ25pdHVkZSArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXg6dW50aWxfaW5kZXggfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGU6VC56ZXJvIH5pbmRleCB+bGVuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIG1hdGNoIHN0cmluZyB3aXRoXG4gICAgICAgIHwgXCJOQU5zXCIgLT4gb2Zfc2VjIEZsb2F0Lm5hblxuICAgICAgICB8IFwiLUlORnNcIiAtPiBvZl9zZWMgRmxvYXQubmVnX2luZmluaXR5XG4gICAgICAgIHwgXCJJTkZzXCIgLT4gb2Zfc2VjIEZsb2F0LmluZmluaXR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG5lZ2F0aXZlLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBzdHJpbmcuWzBdIHdpdGhcbiAgICAgICAgICAgIHwgJy0nIC0+IHRydWUsIDFcbiAgICAgICAgICAgIHwgJysnIC0+IGZhbHNlLCAxXG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UsIDBcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGluZGV4ID49IGxlbiB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gVC5uZWcgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcblxuICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIGZsb2F0ID1cbiAgICAgICAgbGV0IHN0cmluZyA9IEZsb2F0LnRvX3N0cmluZyBmbG9hdCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gXCIuXCIgaW5cbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICB0aGVuIFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgZWxzZSBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgICgqIEFzIHdlIGJ1aWxkIHVwIGEgc3RyaW5nLCB3ZSBrZWVwIGEgcnVubmluZyBzdW0gb2YgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSByZWFkXG4gICAgICAgICBiYWNrIGluLCBzbyB0aGF0IHdlIGNhbiBjb21wdXRlIHRoZSByZW1haW5kZXIgdGhhdCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQuICopXG4gICAgICBsZXQgc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgPVxuICAgICAgICBzdW1fdCArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBtYWduaXR1ZGUgdW5pdF9vZl90aW1lXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igc29tZSB1bml0cyAodmVyeSBsYXJnZSBudW1iZXJzIG9mIGRheXMsIG9yIHNlY29uZHMgYW5kIHNtYWxsZXIpIHdlIGp1c3RcbiAgICAgICAgIHJlbmRlciBhIGZsb2F0IGRpcmVjdGx5LCB3aXRoIGEgZml4IGZvciByb3VuZG9mZiBlcnJvci4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZSA9XG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIGFic190IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGlmIHN1bV90ID0gYWJzX3RcbiAgICAgICAgdGhlblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICAgIGlmIHN1bV90IDwgYWJzX3RcbiAgICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgICBlbHNlIGRpdmlkZV9ieV91bml0X29mX3RpbWUgKHByZXYgYWJzX3QpIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgZml4dXBfbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSByZW1fdCBmaXh1cF91bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAoKiBbcmVtX3RdIGlzIGF0IFVMUCBzaXplIG9mIFthYnNfdF0sIGl0IG5lZWRzIGp1c3Qgb25lIGJpdCBvZiBwcmVjaXNpb24gKilcbiAgICAgICAgICBeIHNwcmludGYgXCIlLjFnXCIgZml4dXBfbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIGZpeHVwX3VuaXRfb2ZfdGltZSlcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBub24tZGVjaW1hbCB1bml0cyAobWludXRlcyBhbmQgZ3JlYXRlciksIHdlIHJlbmRlciBhbiBpbnRlZ2VyIG1hZ25pdHVkZSwgYW5kXG4gICAgICAgICByZXR1cm4gdGhhdCB3aXRoIHRoZSBydW5uaW5nIHN1bSBzbyB0aGUgcmVtYWluZGVyIGNhbiBiZSByZW5kZXJlZCBhdCBhIHNtYWxsZXJcbiAgICAgICAgIHVuaXQuICopXG4gICAgICBsZXQgdG9faW50X3N0cmluZ19hbmRfc3VtIHVuaXRfb2ZfdGltZSB+YWJzX3QgfnN1bV90ID1cbiAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAoKiBXZSBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIG11bHRpcGxlIG9mIFt1bml0X29mX3RpbWVdIHRoYXQgbmVlZHMgdG8gYmVcbiAgICAgICAgICAgYWRkZWQgdG8gW3N1bV90XS4gRHVlIHRvIHJvdW5kaW5nLCB0aGlzIGNhbiBiZSBvZmYgYnkgb25lICh3ZSd2ZSBuZXZlciBzZWVuIGFcbiAgICAgICAgICAgY2FzZSBvZmYgYnkgdHdvIG9yIG1vcmUpLCBzbyB3ZSByZS1jb21wdXRlIHRoZSByZW1haW5kZXIgYW5kIGNvcnJlY3QgaWZcbiAgICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gRmxvYXQucm91bmRfZG93biAocmVtX3QgLy8gdW5pdF9zcGFuKSBpblxuICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgIGlmIG5ld19yZW1fdCA9IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgIGVsc2UgaWYgbmV3X3JlbV90IDwgemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlIC0uIDEuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dF9tYWduaXR1ZGUgPSBtYWduaXR1ZGUgKy4gMS4gaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGU6bmV4dF9tYWduaXR1ZGUgaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3JlbV90ID0gYWJzX3QgLSBuZXh0X3N1bV90IGluXG4gICAgICAgICAgICBpZiBuZXh0X3JlbV90IDwgemVybyB0aGVuIG1hZ25pdHVkZSBlbHNlIG5leHRfbWFnbml0dWRlKVxuICAgICAgICBpblxuICAgICAgICBpZiBGbG9hdC4oIDw9ICkgbWFnbml0dWRlIDAuXG4gICAgICAgIHRoZW4gXCJcIiwgc3VtX3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgICBJbnQ2My50b19zdHJpbmcgKEludDYzLm9mX2Zsb2F0IG1hZ25pdHVkZSlcbiAgICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIHN0cmluZywgbmV3X3N1bV90KVxuICAgICAgOztcblxuICAgICAgbGV0IGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHQgPSBGbG9hdC5sb2cxMCAodG9fc2VjIHQpXG5cbiAgICAgICgqIFRoZSBmaW5hbCBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBuZWVkcyB0byBiZSBwcmludGVkIHdpdGggZW5vdWdoIGRpZ2l0cyB0b1xuICAgICAgICAgcm91bmQtdHJpcCB0aGUgd2hvbGUgc3BhbiAod2hpY2ggaXMgbWludXRlcyBvciBncmVhdGVyKTsgdGhpcyBjYW4gYmVcbiAgICAgICAgIHNpZ25pZmljYW50bHkgZmV3ZXIgZGlnaXRzIHRoYW4gd291bGQgYmUgbmVlZGVkIGZvciB0aGUgc2Vjb25kcy1vci1zbWFsbGVyXG4gICAgICAgICByZW1haW5kZXIgaXRzZWxmLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+c3VtX3QgfmFic190ID1cbiAgICAgICAgaWYgc3VtX3QgPj0gYWJzX3RcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHJlbV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcmVtX3QgLy8gdW5pdF9zcGFuIGluXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgICAgaWYgYWJzIHJlbV90IDw9IGFicyBuZXdfcmVtX3RcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgPVxuICAgICAgICAgICAgICBGbG9hdC5pcm91bmRfZG93bl9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHJlbV90KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBoYWxmX3VscCA9IChhYnNfdCAtIHByZXYgYWJzX3QpIC8gMi4gaW5cbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXQgPVxuICAgICAgICAgICAgICAoKiBUaGlzIHdvcmtzIG91dCB0byByb3VuZGluZyBkb3duLCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgZXhhY3QgaW50ZWdlcnMsXG4gICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBkZWNyZW1lbnRlZC4gVGhpcyBtYWtlcyBzdXJlIHdlIGFsd2F5cyBzdG9wIGF0IGEgZGlnaXQgd2l0aFxuICAgICAgICAgICAgICAgICBzdHJpY3RseSBtb3JlIHByZWNpc2lvbiB0aGFuIGhhbGYgdGhlIFVMUC4gKilcbiAgICAgICAgICAgICAgSW50LnByZWQgKEZsb2F0Lmlyb3VuZF91cF9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIGhhbGZfdWxwKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0cyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIDEgKyBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgLSBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICAgIHNwcmludGYgXCIlLipnXCIgbnVtYmVyX29mX2RpZ2l0cyBtYWduaXR1ZGUgXiBzdWZmaXgpKVxuICAgICAgOztcblxuICAgICAgKCogVGhpcyBoZWxwZXIgYXZvaWRzIHVubmVjZXNzYXJ5IGFsbG9jYXRpb24sIGJlY2F1c2UgZm9yIG91ciB1c2UgYmVsb3csIGl0IGlzXG4gICAgICAgICBjb21tb24gdG8gaGF2ZSBlaXRoZXIgb3IgYm90aCBhcmd1bWVudHMgYmUgZW1wdHkuIEN1cnJlbnRseSAoMjAxOC0wMiksIHRoZVxuICAgICAgICAgYnVpbHQtaW4gW15dIGFsbG9jYXRlcyBldmVuIHdoZW4gYXBwZW5kaW5nIHRvIGFuIGVtcHR5IHN0cmluZy4gKilcbiAgICAgIGxldCAoIF4/ICkgeCB5ID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHggdGhlbiB5IGVsc2UgaWYgU3RyaW5nLmlzX2VtcHR5IHkgdGhlbiB4IGVsc2UgeCBeIHlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBmbG9hdCA9IHRvX2Zsb2F0IHQgaW5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZmxvYXQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAoKiBXZSBwcmludCBzcGVjaWZpYyBzcGVjaWFsIHN0cmluZ3MgZm9yIG5vbi1maW5pdGUgZmxvYXRzICopXG4gICAgICAgICAgICBGbG9hdC5pc19uYW4gZmxvYXRcbiAgICAgICAgICB0aGVuIFwiTkFOc1wiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC5pc19uZWdhdGl2ZSBmbG9hdFxuICAgICAgICAgIHRoZW4gXCItSU5Gc1wiXG4gICAgICAgICAgZWxzZSBcIklORnNcIlxuICAgICAgICBlbHNlIGlmIHQgPSB6ZXJvXG4gICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgdCBpblxuICAgICAgICAgIGxldCBhYnNfdCA9IGFicyB0IGluXG4gICAgICAgICAgbGV0IHNpZ24gPSBpZiB0IDwgemVybyB0aGVuIFwiLVwiIGVsc2UgXCJcIiBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGVfc3RyaW5nID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZSB3aXRoXG4gICAgICAgICAgICAoKiBXZSBjYW4gdXNlIG5vcm1hbCBmbG9hdCBub3RhdGlvbiBmb3Igc2Vjb25kcyBhbmQgc3ViLXNlY29uZCB1bml0cywgdGhleSBhcmVcbiAgICAgICAgICAgICAgIHJlYWRhYmxlIHdpdGggYSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBNaWxsaXNlY29uZCB8IFNlY29uZCAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpOYW5vc2Vjb25kXG4gICAgICAgICAgICAoKiBGb3IgbGFyZ2UgZW5vdWdoIHZhbHVlcyB0aGF0IHRoZSBVTFAgaXMgYSBkYXkgb3IgbW9yZSwgd2UgY2FuIHVzZSBmbG9hdFxuICAgICAgICAgICAgICAgbm90YXRpb24gYmVjYXVzZSB3ZSBhcmUgZXhwcmVzc2luZyBhIHNpbmdsZSwgdmVyeSBsYXJnZSBpbnRlZ2VyLiAqKVxuICAgICAgICAgICAgfCBEYXkgd2hlbiBuZXh0IGFic190IC0gYWJzX3QgPj0gZGF5IC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOkRheVxuICAgICAgICAgICAgKCogRm9yIGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbiwgd2UgbmVlZCB0byB1c2UgaW50ZWdlciB1bml0cyBvZiBkYXlzLCBob3VycyxcbiAgICAgICAgICAgICAgIGFuZC9vciBtaW51dGVzLCBiZWNhdXNlIHRob3NlIHVuaXRzIGFyZSBub3QgcmVhZGFibGUgYXMgZGVjaW1hbHMsIGFuZCB3ZVxuICAgICAgICAgICAgICAgdGFjayBvbiBhIGRlY2ltYWwgcmVtYWluZGVyIG9mIGEgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgaWYgbmVjZXNzYXJ5LiAqKVxuICAgICAgICAgICAgfCBNaW51dGUgfCBIb3VyIHwgRGF5IC0+XG4gICAgICAgICAgICAgIGxldCBzdW1fdCA9IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IGRheV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgRGF5IGluXG4gICAgICAgICAgICAgIGxldCBob3VyX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBIb3VyIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IE1pbnV0ZSBpblxuICAgICAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID0gdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5hYnNfdCB+c3VtX3QgaW5cbiAgICAgICAgICAgICAgZGF5X3N0cmluZyBePyBob3VyX3N0cmluZyBePyBtaW51dGVfc3RyaW5nIF4/IGZsb2F0X3N0cmluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2lnbiBePyBtYWduaXR1ZGVfc3RyaW5nKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgcylcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3Bhbi5TdGFibGUuVjMudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WM1xuXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0ID0gdG9fZmxvYXRcblxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBGbG9hdC5nZW5faW5jbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gICgqIFRlY2huaWNhbGx5IGV4Y2x1c2l2ZSByYXRoZXIgdGhhbiBpbmNsdXNpdmUsIGJ1dCBvdGhlcndpc2Ugc2F0aXNmaWVzIHRoZSBjb250cmFjdCB0b1xuICAgICB3aXRoaW4gMXVscCBvZiB0aGUgZ2l2ZW4gYm91bmRzLiAqKVxuICBGbG9hdC5nZW5fdW5pZm9ybV9leGNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICgqIFdlIGdlbmVyYXRlIHNwYW5zIHVwIHRvIChzbGlnaHRseSBtb3JlIHRoYW4pIGEgbWlsbGVuaXVtLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZS4gVGhpc1xuICAgICBpcyBiYXNlZCBvbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCBpbiB3aGljaCB5ZWFycyBhdmVyYWdlIDM2NS4yNDI1IGRheXMgd2hlblxuICAgICBhY2NvdW50aW5nIGZvciBsZWFwIGRheXMuIENvdmVyaW5nIGEgdHdvLW1pbGxlbml1bSBzcGFuIGlzIG1vcmUgdGhhbiBlbm91Z2ggZm9yIG1vc3RcbiAgICAgcHJhY3RpY2FsIHB1cnBvc2VzLCBjZXJ0YWlubHkgbW9yZSB0aGFuIGVub3VnaCB0byBjb3ZlciB0aGUgcmVwcmVzZW50YWJsZSByYW5nZSBvZlxuICAgICBbU3Bhbl9uc10sIGFuZCByZXN1bHRzIGluIGZpbml0ZSBzcGFucyBhbmQgdGltZXMgdGhhdCBjYW4gYmUgc2VyaWFsaXplZC5cblxuICAgICBXZSBnZW5lcmF0ZSBieSBmaWx0ZXJpbmcgdGhlIGRlZmF1bHQgZ2VuZXJhdG9yIHNvIHRoYXQgc3BhbnMgYXJlIHN0aWxsIHNrZXdlZCB0b3dhcmRcbiAgICAgc21hbGwgdmFsdWVzLCBldmVuIHRob3VnaCB0aGUgYm91bmRzIGFyZSBsYXJnZS4gKilcbiAgbGV0IG1pbGxlbml1bSA9IG9mX2RheSAoRmxvYXQucm91bmRfdXAgKDM2NS4yNDI1ICouIDEwMDAuKSkgaW5cbiAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOihmdW4gdCAtPlxuICAgIG5lZyBtaWxsZW5pdW0gPD0gdCAmJiB0IDw9IG1pbGxlbml1bSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuU3BhblwiXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcblxuICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBzcGFucyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb20gMTA4LjA3XG4gICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZCBwcmV0dHlcbiAgICAgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWQgZnJvbVxuICAgICByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lXG4gIGxldCBwYXJzZV9zdWZmaXggPSBTdGFibGUuVjMuT2Zfc3RyaW5nLnBhcnNlX3N1ZmZpeFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgU3BhbiA9IFNwYW5fZmxvYXRcblxuKCogQ3JlYXRlIGFuIGFic3RyYWN0IHR5cGUgZm9yIE9mZGF5IHRvIHByZXZlbnQgdXMgZnJvbSBjb25mdXNpbmcgaXQgd2l0aFxuICAgb3RoZXIgZmxvYXRzLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0XG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBhZGQgOiB0IC0+IFNwYW4udCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHN1YiA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgbmV4dCA6IHQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIDogU3Bhbi50IC0+IHRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIDogU3Bhbi50IC0+IGJvb2xcbiAgICAgIHZhbCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgc3RhcnRfb2ZfZGF5IDogdFxuICAgICAgdmFsIHN0YXJ0X29mX25leHRfZGF5IDogdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgKCogTnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQuICopXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBGbG9hdC50XG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5FeHBvcnQuc3RhYmxlX3dpdG5lc3NfZmxvYXRcbiAgICAgICAgOztcbiAgICAgIGVuZCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBlbmQpXG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLk9mZGF5IHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IFNwYW4ub2Zfc2VjIHRcblxuICAgICAgKCogQW5vdGhlciByZWFzb25hYmxlIGNob2ljZSB3b3VsZCBiZSBvbmx5IGFsbG93aW5nIE9mZGF5LnQgdG8gYmUgPCAyNGhyLCBidXQgdGhpc1xuICAgICAgICAgY2hvaWNlIHdhcyBtYWRlIGVhcmx5IG9uIGFuZCBwZW9wbGUgYmVjYW1lIHVzZWQgdG8gYmVpbmcgYWJsZSB0byBlYXNpbHkgY2FsbCAyNGhyXG4gICAgICAgICB0aGUgZW5kIG9mIHRoZSBkYXkuICBJdCdzIGEgYml0IHNhZCBiZWNhdXNlIGl0IHNoYXJlcyB0aGF0IG1vbWVudCB3aXRoIHRoZVxuICAgICAgICAgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGRheSwgYW5kIHJvdW5kIHRyaXBzIG9kZGx5IGlmIHBhc3NlZCB0aHJvdWdoXG4gICAgICAgICBUaW1lLnRvX2RhdGVfb2ZkYXkvVGltZS5vZl9kYXRlX29mZGF5LlxuXG4gICAgICAgICBOb3RlOiBbU2NoZWR1bGUudF0gcmVxdWlyZXMgdGhhdCB0aGUgZW5kIG9mIGRheSBiZSByZXByZXNlbnRhYmxlLCBhcyBpdCdzIHRoZVxuICAgICAgICAgb25seSB3YXkgdG8gd3JpdGUgYSBzY2hlZHVsZSBpbiB0ZXJtcyBvZiBbT2ZkYXkudF1zIHRoYXQgc3BhbnMgdHdvIHdlZWtkYXlzLiAqKVxuICAgICAgKCogb2ZkYXkgbXVzdCBiZSA+PSAwIGFuZCA8PSAyNGggKilcbiAgICAgIGxldCBpc192YWxpZCAodCA6IHQpID1cbiAgICAgICAgbGV0IHQgPSB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICAgIFNwYW4uKCA8PSApIFNwYW4uemVybyB0ICYmIFNwYW4uKCA8PSApIHQgU3Bhbi5kYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IFNwYW4udG9fc2VjIHNwYW5cblxuICAgICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPVxuICAgICAgICBpc192YWxpZCAob2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIHNwYW4gPVxuICAgICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgICBsZXQgcyA9IFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgcyB3aXRoXG4gICAgICAgIHwgQy5JbmZpbml0ZSAtPiBpbnZhbGlkX2FyZyBcIk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5maW5pdGUgdmFsdWVcIlxuICAgICAgICB8IEMuTmFuIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBOYU4gdmFsdWVcIlxuICAgICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT5cbiAgICAgICAgICBpZiBub3QgKGlzX3ZhbGlkIHMpXG4gICAgICAgICAgdGhlbiBpbnZhbGlkX2FyZ2YgIVwiT2ZkYXkgb3V0IG9mIHJhbmdlOiAle1NwYW59XCIgc3BhbiAoKVxuICAgICAgICAgIGVsc2Ugc1xuICAgICAgOztcblxuICAgICAgbGV0IHN0YXJ0X29mX2RheSA9IDAuXG4gICAgICBsZXQgc3RhcnRfb2ZfbmV4dF9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gU3Bhbi5kYXlcblxuICAgICAgbGV0IGFkZCAodCA6IHQpIChzcGFuIDogU3Bhbi50KSA9XG4gICAgICAgIGxldCB0ID0gdCArLiBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIHQgdGhlbiBTb21lIHQgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0IC0uIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuZXh0IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgVXAgdCBpblxuICAgICAgICBpZiBpc192YWxpZCBjYW5kaWRhdGUgdGhlbiBTb21lIGNhbmRpZGF0ZSBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwcmV2IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgRG93biB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGRpZmYgdDEgdDIgPVxuICAgICAgICBTcGFuLiggLSApICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0MSkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5ID1cbiAgICAgIE9wdGlvbi52YWx1ZV9leG4gKFQuc3ViIFQuc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5taWNyb3NlY29uZClcbiAgICA7O1xuXG4gICAgKCogW2NyZWF0ZV0gY2hvcHMgb2ZmIGFueSBzdWJzZWNvbmQgcGFydCB3aGVuIFtzZWMgPSA2MF0gdG8gaGFuZGxlIGxlYXAgc2Vjb25kcy4gSW5cbiAgICAgICBwYXJ0aWN1bGFyIGl0J3MgdHJ5aW5nIHRvIGJlIGdlbmVyb3VzIGFib3V0IHJlYWRpbmcgaW4gdGltZXMgb24gdGhpbmdzIGxpa2UgZml4XG4gICAgICAgbWVzc2FnZXMgdGhhdCBtaWdodCBpbmNsdWRlIGFuIGV4dHJhIHVubGlrZWx5IHNlY29uZC5cblxuICAgICAgIE90aGVyIHdheXMgb2Ygd3JpdGluZyBhIHRpbWUsIGxpa2UgMTAwMG1zLCB3aGlsZSBtYXRoZW1hdGljYWxseSB2YWxpZCwgZG9uJ3QgbWF0Y2hcbiAgICAgICB3YXlzIHRoYXQgcGVvcGxlIGFjdHVhbGx5IHdyaXRlIHRpbWVzIGRvd24sIHNvIHdlIGRpZG4ndCBzZWUgdGhlIG5lZWQgdG8gc3VwcG9ydFxuICAgICAgIHRoZW0uIFRoYXQgaXMsIGEgY2xvY2sgbWlnaHQgbGVnaXRpbWF0ZWx5IHJlYWQgMjM6NTk6NjAgKG9yLCB3aXRoIDYwIHNlY29uZHMgYXRcbiAgICAgICB0aW1lcyBvZiBkYXkgb3RoZXIgdGhhbiAyMzo1OSwgZGVwZW5kaW5nIG9uIHRoZSB0aW1lIHpvbmUpLCBidXQgaXQgZG9lc24ndCBzZWVtXG4gICAgICAgcmVhc29uYWJsZSBmb3IgYSBjbG9jayB0byByZWFkIFwiMjM6NTk6NTkgYW5kIDEwMDBtc1wiLiAqKVxuICAgIGxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICAgICBsZXQgbXMsIHVzLCBucyA9XG4gICAgICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgICAgIHwgXyAtPiBtcywgdXMsIG5zXG4gICAgICBpblxuICAgICAgVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG4gICAgOztcblxuICAgIGxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KVxuXG4gICAgbGV0IHRvX3N0cmluZ19nZW4gfmRyb3BfbXMgfmRyb3BfdXMgfnRyaW0gdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBhc3NlcnQgKGlmIGRyb3BfbXMgdGhlbiBkcm9wX3VzIGVsc2UgdHJ1ZSk7XG4gICAgICBsZXQgZmxvYXRfc2VjID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCkgaW5cbiAgICAgIGxldCB1cyA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuIChmbG9hdF9zZWMgKi4gMWU2KSBpblxuICAgICAgbGV0IG1zLCB1cyA9IHVzIC8gITEwMDAsIHVzIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgc2VjLCBtcyA9IG1zIC8gITEwMDAsIG1zIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgbWluLCBzZWMgPSBzZWMgLyAhNjAsIHNlYyBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociwgbWluID0gbWluIC8gITYwLCBtaW4gbW9kICE2MCB8PiBpIGluXG4gICAgICBsZXQgaHIgPSBpIGhyIGluXG4gICAgICBsZXQgZG9udF9wcmludF91cyA9IGRyb3BfdXMgfHwgKHRyaW0gJiYgdXMgPSAwKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfbXMgPSBkcm9wX21zIHx8ICh0cmltICYmIG1zID0gMCAmJiBkb250X3ByaW50X3VzKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfcyA9IHRyaW0gJiYgc2VjID0gMCAmJiBkb250X3ByaW50X21zIGluXG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICAgIHRoZW4gNVxuICAgICAgICBlbHNlIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiA4XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF91c1xuICAgICAgICB0aGVuIDEyXG4gICAgICAgIGVsc2UgMTVcbiAgICAgIGluXG4gICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCBocjtcbiAgICAgIEJ5dGVzLnNldCBidWYgMiAnOic7XG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIG1pbjtcbiAgICAgIGlmIGRvbnRfcHJpbnRfc1xuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnOic7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgc2VjO1xuICAgICAgICBpZiBkb250X3ByaW50X21zXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA4ICcuJztcbiAgICAgICAgICB3cml0ZV8zX2RpZ2l0X2ludCBidWYgfnBvczo5IG1zO1xuICAgICAgICAgIGlmIGRvbnRfcHJpbnRfdXMgdGhlbiAoKSBlbHNlIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjEyIHVzKSk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6ZmFsc2UgfnRyaW06dHJ1ZSB0XG4gICAgbGV0IHRvX3NlY19zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6dHJ1ZSB+ZHJvcF91czp0cnVlIH50cmltOmZhbHNlIHRcbiAgICBsZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuXG4gICAgbGV0IHNtYWxsX2RpZmYgPVxuICAgICAgbGV0IGhvdXIgPSAzNjAwLiBpblxuICAgICAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICAgICAgbGV0IG9mZGF5MSA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICAgICAgbGV0IG9mZGF5MiA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICAgICAgbGV0IGRpZmYgPSBvZmRheTEgLS4gb2ZkYXkyIGluXG4gICAgICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgICAgIGxldCBkMSA9IEZsb2F0Lm1vZF9mbG9hdCBkaWZmIGhvdXIgaW5cbiAgICAgICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgICAgIGxldCBkMiA9IEZsb2F0Lm1vZF9mbG9hdCAoZDEgKy4gaG91cikgaG91ciBpblxuICAgICAgICBsZXQgZCA9IGlmIEZsb2F0LiggPiApIGQyIChob3VyIC8uIDIuKSB0aGVuIGQyIC0uIGhvdXIgZWxzZSBkMiBpblxuICAgICAgICBTcGFuLm9mX3NlYyBkXG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lLk9mZGF5XCJcbiAgICAgIGVuZClcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IHN1YnNlYyA9XG4gICAgICAgIGlmIEludC5lcXVhbCBzdWJzZWNfbGVuIDBcbiAgICAgICAgdGhlbiAwLlxuICAgICAgICBlbHNlIEZsb2F0Lm9mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpzdWJzZWNfcG9zIH5sZW46c3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBGbG9hdC5vZl9pbnQgKChociAqIDM2MDApICsgKG1pbiAqIDYwKSArIHNlYykgKy4gc3Vic2VjXG4gICAgICB8PiBTcGFuLm9mX3NlY1xuICAgICAgfD4gVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gT2ZkYXlfaGVscGVycy5wYXJzZSBzIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IG9mX3NleHBfZXJyb3IgKFwiT2ZkYXkudF9vZl9zZXhwOiBcIiBeIHMpIHNleHApXG4gICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIk9mZGF5LnRfb2Zfc2V4cFwiIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIGxldCBzZXhwX29mX3Qgc3BhbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHNwYW4pXG5cbiAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gICAgICB0cnkgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICAgIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQoJXMpOiAlc1wiXG4gICAgICAgICAgKFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4pXG4gICAgICAgICAgKEV4bi50b19zdHJpbmcgZXhuKVxuICAgICAgICAgICgpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgU3Bhbi5nZW5faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGxvKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaGkpXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmF0b3IuY29tcGFyZVxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIG9mZGF5cyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb21cbiAgICAgMTA4LjA3IHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZFxuICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWRcbiAgICAgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChDKVxuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbiIsIigqIFNlZSB0aW1lX2Zsb2F0Lm1sIGZvciB0aGUgcHJpbWFyeSBpbnN0YW50aWF0aW9uIG9mIHRoaXMgZnVuY3RvciB0aGF0IGlzIHZpc2libGUgb3V0c2lkZVxuICAgb2YgQ29yZSBhcyBUaW1lIChzZWUgY29yZS5tbCkuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFRpbWVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVGltZTAgOiBUaW1lMF9pbnRmLlMpID0gc3RydWN0XG4gIG1vZHVsZSBUaW1lMCA9IFRpbWUwXG4gIGluY2x1ZGUgVGltZTBcblxuICBsZXQgZXBvY2ggPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4uemVyb1xuICBsZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwuIHQyXG4gIGxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4uIHQyXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICBpbmNsdWRlIFRpbWVfaW50Zi5ab25lIHdpdGggbW9kdWxlIFRpbWUgOj0gVGltZTBcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBab25lXG5cbiAgICBsZXQgb2Zfc3Bhbl9pbl9zZWNvbmRzIHNwYW5faW5fc2Vjb25kcyA9XG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gc3Bhbl9pbl9zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RpbWVfaW5fc2Vjb25kcyB0aW1lX2luX3NlY29uZHMgPVxuICAgICAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZV9pbl9zZWNvbmRzXG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZTAub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUgPVxuICAgICAgVGltZTAudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlID1cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHJlbGF0aXZlXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS5vZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXggdCB0aW1lID0gaW5kZXggdCAodG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUpXG5cbiAgICBsZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0ICh0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBhYmJyZXZpYXRpb24gdCB0aW1lID1cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgaW5kZXhfYWJicmV2aWF0aW9uX2V4biB0IChpbmRleCB0IHRpbWUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGFic19kaWZmIHQxIHQyID0gU3Bhbi5hYnMgKGRpZmYgdDEgdDIpXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHpvbmUgOiBab25lLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV9zdGFydF9pbmNsIDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3VudGlsX2V4Y2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgZWZmZWN0aXZlX2RheV9zdGFydCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBkYXRlIDogRGF0ZTAudFxuICAgICAgfVxuICBlbmRcblxuICBsZXQgZGF0ZV9jYWNoZSA6IERhdGVfY2FjaGUudCA9XG4gICAgeyB6b25lID0gWm9uZS51dGNcbiAgICA7IGNhY2hlX3N0YXJ0X2luY2wgPSBlcG9jaFxuICAgIDsgY2FjaGVfdW50aWxfZXhjbCA9IGVwb2NoXG4gICAgOyBlZmZlY3RpdmVfZGF5X3N0YXJ0ID0gZXBvY2hcbiAgICA7IGRhdGUgPSBEYXRlMC51bml4X2Vwb2NoXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldF9kYXRlX2NhY2hlICgpID1cbiAgICBkYXRlX2NhY2hlLnpvbmUgPC0gWm9uZS51dGM7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5kYXRlIDwtIERhdGUwLnVuaXhfZXBvY2hcbiAgOztcblxuICBsZXQgaXNfaW5fY2FjaGUgdGltZSB+em9uZSA9XG4gICAgcGh5c19lcXVhbCB6b25lIGRhdGVfY2FjaGUuem9uZVxuICAgICYmIFRpbWUwLiggPj0gKSB0aW1lIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIFRpbWUwLiggPCApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBUaW1lMC5zdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBUaW1lMC5hZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICAgIHw+IFRpbWUwLm1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICAgIHw+IFRpbWUwLm1pbiAoWm9uZS5pbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgZGF0ZV9jYWNoZS56b25lIDwtIHpvbmU7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gY2FjaGVfc3RhcnRfaW5jbDtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBjYWNoZV91bnRpbF9leGNsO1xuICAgICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVmZmVjdGl2ZV9kYXlfc3RhcnQ7XG4gICAgICBkYXRlX2NhY2hlLmRhdGUgPC0gZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGF0ZV9jYWNoZS5kYXRlXG4gIDs7XG5cbiAgbGV0IGVuZF9vZl9kYXkgPSBPZmRheS5wcmV2IE9mZGF5LnN0YXJ0X29mX25leHRfZGF5IHw+IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXVxuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGxldCBvZl9kYXkgPVxuICAgICAgVGltZTAuZGlmZiB0aW1lIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgaW5cbiAgICBpZiBPZmRheS5lcXVhbCBvZl9kYXkgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgdGhlbiBlbmRfb2ZfZGF5IGVsc2Ugb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIGlzIGFib3V0IHRvIHNoaWZ0ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW4gKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgZm9yd2FyZDogbm8gZWZmZWN0ICopXG4gICAgICAgICAgYE9ubHlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgYmFjazogdGhpcyBkYXRlL29mZGF5IHdpbGwgYmUgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoYWRkIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfIC0+IGBPbmx5XG4gICAgaW5cbiAgICBkYXRlLCBvZmRheSwgYW1iaWd1aXR5XG4gIDs7XG5cbiAgbGV0IGNvbnZlcnQgfmZyb21fdHogfnRvX3R6IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBzdGFydF90aW1lID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpmcm9tX3R6IGRhdGUgb2ZkYXkgaW5cbiAgICB0b19kYXRlX29mZGF5IH56b25lOnRvX3R6IHN0YXJ0X3RpbWVcbiAgOztcblxuICBsZXQgdXRjX29mZnNldCB0IH56b25lID1cbiAgICBsZXQgdXRjX2Vwb2NoID0gWm9uZS5kYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHpvbmUgdCBpblxuICAgIFNwYW4uKCAtIClcbiAgICAgIChEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB1dGNfZXBvY2gpXG4gICAgICAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxuICA7O1xuXG4gIGxldCBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgPVxuICAgIGxldCB1dGNfb2Zmc2V0ID0gdXRjX29mZnNldCB0aW1lIH56b25lIGluXG4gICAgbGV0IGlzX3V0YyA9IFNwYW4uKCA9ICkgdXRjX29mZnNldCBTcGFuLnplcm8gaW5cbiAgICBpZiBpc191dGNcbiAgICB0aGVuIFwiWlwiXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIChpZiBTcGFuLiggPCApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIHRoZW4gXCItXCIgZWxzZSBcIitcIilcbiAgICAgICAgOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZFxuICAgICAgICAgICAgKE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5hYnMgdXRjX29mZnNldCkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic19wYXJ0cyB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICA7IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgT2ZkYXkudG9fc3RyaW5nIG9mZGF5OyBvZmZzZXRfc3RyaW5nIF1cbiAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfdHJpbW1lZCB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFN0cmluZy5jb25jYXRcbiAgICAgIH5zZXA6XCIgXCJcbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGU7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkIG9mZGF5IF4gb2Zmc2V0X3N0cmluZyBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnMgdGltZSB+em9uZSA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICBsZXQgdG9fc3RyaW5nX3V0YyB0ID0gdG9fc3RyaW5nX2FicyB0IH56b25lOlpvbmUudXRjXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfdXRjXG5cbiAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHRpbWUgfnpvbmUgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlRcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3N0cmluZ190cmltbWVkIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc2VjX3N0cmluZyBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgdCB+em9uZSA9IHRvX3NlY19zdHJpbmcgdCB+em9uZSBeIG9mZnNldF9zdHJpbmcgdCB+em9uZVxuXG4gIGxldCB0b19maWxlbmFtZV9zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICBeIFwiX1wiXG4gICAgXiBTdHJpbmcudHIgfnRhcmdldDonOicgfnJlcGxhY2VtZW50OictJyAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBTcGFuLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgIH5mX2ludmVyc2U6dG9fc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFNwYW4ucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgU3Bhbi5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX2Vwb2NoIGxvKSAodG9fc3Bhbl9zaW5jZV9lcG9jaCBoaSlcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxubW9kdWxlIE9mZGF5ID0gT2ZkYXlfZmxvYXRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICBpbmNsdWRlIChcbiAgICBGbG9hdCA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXQuT1xuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgIHByZWNpc2lvbiAqKVxuICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICBlbmQpXG5cbiAgbGV0IGRpZmYgdDEgdDIgPSBTcGFuLm9mX3NlYyAodDEgLSB0MilcbiAgbGV0IGFkZCB0IHNwYW4gPSB0ICsuIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHN1YiB0IHNwYW4gPSB0IC0uIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4ub2Zfc2VjXG4gIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi50b19zZWNcbmVuZFxuXG5pbmNsdWRlIEFic29sdXRlXG5cbm1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2Zfc2VjIHRcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgZGF5cyA9XG4gICAgICBGbG9hdC5vZl9pbnQgKERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaClcbiAgICBpblxuICAgIChkYXlzICouIDg2NDAwLikgKy4gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICA7O1xuXG4gIGxldCB0b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjID0gc3ViIHJlbGF0aXZlIG9mZnNldF9mcm9tX3V0Y1xuICBsZXQgb2ZfYWJzb2x1dGUgYWJzb2x1dGUgfm9mZnNldF9mcm9tX3V0YyA9IGFkZCBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGNcblxuICAoKiBZZWFycyBvdXQgb2YgcmFuZ2UgZm9yIFtEYXRlLmNyZWF0ZV9leG5dLiAqKVxuICBsZXRbQGNvbGRdIGFzc2VydF9pbl9ib3VuZHMgfnNlY19zaW5jZV9lcG9jaCA9XG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QC02MjE2NzIxOTIwMFxuICAgICAgIFNhdCBKYW4gIDEgMDA6MDA6MDAgVVRDIDAwMDAgKilcbiAgICBsZXQgZ210aW1lX2xvd2VyX2JvdW5kID0gLTYyXzE2N18yMTlfMjAwLiBpblxuICAgICgqICQgVFo9VVRDIGRhdGUgLS1kYXRlPUAyNTM0MDIzMDA3OTlcbiAgICAgICBGcmkgRGVjIDMxIDIzOjU5OjU5IFVUQyA5OTk5ICopXG4gICAgbGV0IGdtdGltZV91cHBlcl9ib3VuZCA9IDI1M180MDJfMzAwXzc5OS4gaW5cbiAgICBpZiBGbG9hdC4oID49ICkgc2VjX3NpbmNlX2Vwb2NoIChnbXRpbWVfdXBwZXJfYm91bmQgKy4gMS4pXG4gICAgfHwgRmxvYXQuKCA8ICkgc2VjX3NpbmNlX2Vwb2NoIGdtdGltZV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiVGltZS5nbXRpbWU6IG91dCBvZiByYW5nZSAoJWYpXCIgc2VjX3NpbmNlX2Vwb2NoICgpXG4gIDs7XG5cbiAgbGV0IHNlY19wZXJfZGF5ID0gSW50NjMub2ZfaW50IDg2XzQwMFxuXG4gIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoOnQ7XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gSW50NjMub2ZfZmxvYXQgdCAvIHNlY19wZXJfZGF5IGluXG4gICAgKCogd2hlbiBbdF0gaXMgbmVnYXRpdmUgdGhlIGludGVnZXIgZGl2aXNpb24gdGhhdCBjYWxjdWxhdGVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgaWYgRmxvYXQuKCA8ICkgdCAoSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaF9hcHByb3ggKiBzZWNfcGVyX2RheSkpXG4gICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgOztcblxuICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfaW5fc2VjID0gSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaCAqIHNlY19wZXJfZGF5KSBpblxuICAgIGxldCByZW1haW5kZXIgPSB0IC0uIGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgaW5cbiAgICBTcGFuLm9mX3NlYyByZW1haW5kZXIgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgIEludDYzLnRvX2ludF9leG4gZGF5c19mcm9tX2Vwb2NoXG4gICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHRvX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBsZXQgZGF0ZSA9IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgb2ZkYXkgPSBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgZGF0ZSwgb2ZkYXlcbiAgOztcbmVuZFxuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICAgIGludGVydmFsXG4gICAgICBbJXNleHBfb2Y6IFNwYW4udF07XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPVxuICAgICAgYWRkXG4gICAgICAgIGJhc2VcbiAgICAgICAgKFNwYW4uc2NhbGVcbiAgICAgICAgICAgaW50ZXJ2YWxcbiAgICAgICAgICAgKEZsb2F0LnJvdW5kIH5kaXI6YERvd24gKFNwYW4uKCAvLyApIGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSlcbiAgICBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCBub3cgKCkgPVxuICBsZXQgZmxvYXRfbnMgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIHw+IEludDYzLnRvX2Zsb2F0IGluXG4gIG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2Zfc2VjIChmbG9hdF9ucyAqLiAxRS05KSlcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgU19rZXJuZWxfd2l0aG91dF96b25lID0gVGltZTBfaW50Zi5TXG5tb2R1bGUgdHlwZSBTX2tlcm5lbCA9IFRpbWVfaW50Zi5TXG5cbm1vZHVsZSBab25lX3N0YWJsZSA9IFpvbmUuU3RhYmxlXG5pbmNsdWRlIFRpbWUuTWFrZSAoVGltZV9mbG9hdDApXG5pbmNsdWRlIFRpbWVfZmxvYXQwXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX2Zsb2F0MC5TdGFibGVcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgV2l0aF90X29mX3NleHBfYWJzID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2ZkYXlcbiAgICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBXaXRoX3V0Y19zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodG9fc3RyaW5nX2Fic19wYXJ0cyB0IH56b25lOlpvbmUudXRjIDogc3RyaW5nIGxpc3QpXVxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSBkYXRlOyBTZXhwLkF0b20gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUgXSAtPlxuICAgICAgICAgICAgb2Zfc3RyaW5nX2dlblxuICAgICAgICAgICAgICB+ZGVmYXVsdF96b25lOihmdW4gKCkgLT4gWm9uZS51dGMpXG4gICAgICAgICAgICAgIH5maW5kX3pvbmU6KGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cDogdW5rbm93biB0aW1lIHpvbmVcIiBzZXhwKVxuICAgICAgICAgICAgICAoZGF0ZSBeIFwiIFwiIF4gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUpXG4gICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHBcIiBzZXhwXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPiByYWlzZSBlXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgIChzcHJpbnRmIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiAlc1wiIChFeG4udG9fc3RyaW5nIGUpKVxuICAgICAgICAgICAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuXG4gICAgICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICAgICAgbW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gICAgaW5jbHVkZSBab25lX3N0YWJsZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPZmRheVxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBub3cgPSBgVXNlX1RpbWVfdW5peFxuXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbmVuZFxuXG5tb2R1bGUgU3BhbiA9IHN0cnVjdFxuICBpbmNsdWRlIFNwYW5cblxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBab25lID0gc3RydWN0XG4gIGluY2x1ZGUgWm9uZVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbiAgbGV0ICggPCApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoIDw+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA9ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiZXR3ZWVuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9yZWFkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaGFwZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaXplX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGRlc2NlbmRpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZXF1YWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZmluZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hfZm9sZF90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hhYmxlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGluaXQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdGlhbGl6ZWRfem9uZXMgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbG9jYWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWF4ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG1pbiA9IGBVc2VfVGltZV91bml4XG4gIGxldCBvZl9zdHJpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHRvX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfdWJvdW5kID0gYFVzZV9UaW1lX3VuaXhcbmVuZFxuXG5tb2R1bGUgRXhwb3NlZF9mb3JfdGVzdHMgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGZvcm1hdCA9IGBVc2VfVGltZV91bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGludGVycnVwdGlibGVfcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3RtID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXJzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxuIiwiaW5jbHVkZSBEYXRlMFxuXG5sZXQgb2ZfdGltZSB0aW1lIH56b25lID0gVGltZV9mbG9hdC50b19kYXRlIH56b25lIHRpbWVcbmxldCB0b2RheSB+em9uZSA9IG9mX3RpbWUgKFRpbWVfZmxvYXQubm93ICgpKSB+em9uZVxubGV0IGZvcm1hdCA9IGBVc2VfRGF0ZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX0RhdGVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9EYXRlX3VuaXhcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludDYzLk9cblxubGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuU3BhblwiXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gSW50LmVxdWFsIFN5cy53b3JkX3NpemVfaW5fYml0cyA2NFxubGV0IHJvdW5kX25lYXJlc3QgPSBGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X2V4blxubGV0IGZsb2F0IHggPSBJbnQ2My50b19mbG9hdCB4XG5cbigqIFtTcGFuXSBpcyBiYXNpY2FsbHkgYSBbSW50NjNdLiAgSXQgZXZlbiBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93LiAqKVxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudCAoKiBuYW5vc2Vjb25kcyAqKSBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEludDYzLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCB6ZXJvID0gSW50NjMuemVyb1xuZW5kXG5cbmluY2x1ZGUgVFxub3BlbiBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFBhcnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzaWduIDogU2lnbi50XG4gICAgOyBociA6IGludFxuICAgIDsgbWluIDogaW50XG4gICAgOyBzZWMgOiBpbnRcbiAgICA7IG1zIDogaW50XG4gICAgOyB1cyA6IGludFxuICAgIDsgbnMgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5sZXQgbmV4dCB0ID0gSW50NjMuc3VjYyB0XG5sZXQgcHJldiB0ID0gSW50NjMucHJlZCB0XG5sZXQgbmFub3NlY29uZCA9IEludDYzLm9mX2ludCAxXG5sZXQgbWljcm9zZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBuYW5vc2Vjb25kKVxubGV0IG1pbGxpc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWljcm9zZWNvbmQpXG5sZXQgc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWlsbGlzZWNvbmQpXG5sZXQgbWludXRlID0gSW50NjMuKG9mX2ludCA2MCAqIHNlY29uZClcbmxldCBob3VyID0gSW50NjMuKG9mX2ludCA2MCAqIG1pbnV0ZSlcbmxldCBkYXkgPSBJbnQ2My4ob2ZfaW50IDI0ICogaG91cilcblxuKCogQmV5b25kIFttaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZy4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmddLCBub3QgZXZlcnkgbWljcm9zZWNvbmRcbiAgIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIFtmbG9hdF0gbnVtYmVyIG9mIHNlY29uZHMuIChJbiBmYWN0LCBpdCBpcyBhcm91bmQgMTM1eSwgYnV0IHdlXG4gICBsZWF2ZSBhIHNtYWxsIG1hcmdpbi4pXG5cbiAgIEluIHRoZSBwcmVzZW5jZSBvZiBzaWxlbnRseSBpZ25vcmVkIG92ZXJmbG93LCBub3RlIHRoYXQgW3RdIGlzIG5vdCBhY3R1YWxseSBib3VuZCB0b1xuICAgc3RheSBiZXR3ZWVuIHRoZXNlIGxpbWl0cy4gKilcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLihvZl9pbnQgMTM1ICogb2ZfaW50IDM2NSAqIGRheSlcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLm5lZyBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuXG5sZXQgY3JlYXRlXG4gICAgICA/c2lnbjooc2lnbl8gPSBTaWduLlBvcyAoKiByZWJpbmQgc28gbm90IHNoYWRvd2VkIGJ5IFtvcGVuIEludDYzXSBiZWxvdyAqKSlcbiAgICAgID9kYXk6KGRheXMgPSAwKVxuICAgICAgPyhociA9IDApXG4gICAgICA/bWluOihtaW51dGVzID0gMClcbiAgICAgID8oc2VjID0gMClcbiAgICAgID8obXMgPSAwKVxuICAgICAgPyh1cyA9IDApXG4gICAgICA/KG5zID0gMClcbiAgICAgICgpXG4gID1cbiAgbGV0IG9wZW4gSW50NjMgaW5cbiAgbGV0IHQgPVxuICAgIChvZl9pbnQgZGF5cyAqIGRheSlcbiAgICArIChvZl9pbnQgaHIgKiBob3VyKVxuICAgICsgKG9mX2ludCBtaW51dGVzICogbWludXRlKVxuICAgICsgKG9mX2ludCBzZWMgKiBzZWNvbmQpXG4gICAgKyAob2ZfaW50IG1zICogbWlsbGlzZWNvbmQpXG4gICAgKyAob2ZfaW50IHVzICogbWljcm9zZWNvbmQpXG4gICAgKyAob2ZfaW50IG5zICogbmFub3NlY29uZClcbiAgaW5cbiAgbWF0Y2ggc2lnbl8gd2l0aFxuICB8IE5lZyAtPiBuZWcgdFxuICB8IFBvcyB8IFplcm8gLT4gdFxuOztcblxubGV0IHRvX3BhcnRzIHQgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgbWFnID0gYWJzIHQgaW5cbiAgeyBQYXJ0cy5zaWduID0gKGlmIHQgPCB6ZXJvIHRoZW4gTmVnIGVsc2UgaWYgdCA+IHplcm8gdGhlbiBQb3MgZWxzZSBaZXJvKVxuICA7IGhyID0gdG9faW50X2V4biAobWFnIC8gaG91cilcbiAgOyBtaW4gPSB0b19pbnRfZXhuIChyZW0gbWFnIGhvdXIgLyBtaW51dGUpXG4gIDsgc2VjID0gdG9faW50X2V4biAocmVtIG1hZyBtaW51dGUgLyBzZWNvbmQpXG4gIDsgbXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIHNlY29uZCAvIG1pbGxpc2Vjb25kKVxuICA7IHVzID0gdG9faW50X2V4biAocmVtIG1hZyBtaWxsaXNlY29uZCAvIG1pY3Jvc2Vjb25kKVxuICA7IG5zID0gdG9faW50X2V4biAocmVtIG1hZyBtaWNyb3NlY29uZCAvIG5hbm9zZWNvbmQpXG4gIH1cbjs7XG5cbmxldCBvZl9wYXJ0cyB7IFBhcnRzLnNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9ID1cbiAgY3JlYXRlIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgKClcbjs7XG5cbmxldCBvZl9ucyBmID0gcm91bmRfbmVhcmVzdCBmXG5sZXQgb2ZfaW50NjNfbnMgaSA9IGlcbmxldCBvZl9pbnRfdXMgaSA9IEludDYzLihvZl9pbnQgaSAqIG1pY3Jvc2Vjb25kKVxubGV0IG9mX2ludF9tcyBpID0gSW50NjMuKG9mX2ludCBpICogbWlsbGlzZWNvbmQpXG5sZXQgb2ZfaW50X3NlYyBpID0gSW50NjMuKG9mX2ludCBpICogc2Vjb25kKVxubGV0IG9mX2ludF9taW4gaSA9IEludDYzLihvZl9pbnQgaSAqIG1pbnV0ZSlcbmxldCBvZl9pbnRfaHIgaSA9IEludDYzLihvZl9pbnQgaSAqIGhvdXIpXG5sZXQgb2ZfaW50X2RheSBpID0gSW50NjMuKG9mX2ludCBpICogZGF5KVxubGV0IG9mX3VzIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pY3Jvc2Vjb25kKVxubGV0IG9mX21zIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbGxpc2Vjb25kKVxubGV0IG9mX3NlYyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBzZWNvbmQpXG5sZXQgb2ZfbWluIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbnV0ZSlcbmxldCBvZl9ociBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBob3VyKVxubGV0IG9mX2RheSBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBkYXkpXG5cbmxldCBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gc2VjID1cbiAgbGV0IHVzID0gcm91bmRfbmVhcmVzdCAoc2VjICouIDFlNikgaW5cbiAgb2ZfaW50NjNfbnMgSW50NjMuKHVzICogb2ZfaW50IDEwMDApXG47O1xuXG5sZXQgb2ZfaW50NjNfc2Vjb25kcyB4ID0geCAqIHNlY29uZFxubGV0IG9mX2ludDMyX3NlY29uZHMgeCA9IG9mX2ludDYzX3NlY29uZHMgKEludDYzLm9mX2ludDMyIHgpXG5cbmxldCB0b19ucyB0ID0gZmxvYXQgdFxubGV0IHRvX2ludDYzX25zIHQgPSB0XG5sZXQgdG9fdXMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWljcm9zZWNvbmRcbmxldCB0b19tcyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWxsaXNlY29uZFxubGV0IHRvX3NlYyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBzZWNvbmRcbmxldCB0b19taW4gdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWludXRlXG5sZXQgdG9faHIgdCA9IGZsb2F0IHQgLy4gZmxvYXQgaG91clxubGV0IHRvX2RheSB0ID0gZmxvYXQgdCAvLiBmbG9hdCBkYXlcbmxldCB0b19pbnRfdXMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gbWljcm9zZWNvbmQpKVxubGV0IHRvX2ludF9tcyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWxsaXNlY29uZCkpXG5sZXQgdG9faW50X3NlYyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBzZWNvbmQpKVxubGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gdCA9IHQgLyUgc2Vjb25kXG5sZXQgb2ZfaW50X25zIGkgPSBvZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b19pbnRfbnMgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLlNwYW4udG9faW50X25zOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgKCArICkgdCB1ID0gSW50NjMuKCArICkgdCB1XG5sZXQgKCAtICkgdCB1ID0gSW50NjMuKCAtICkgdCB1XG5sZXQgYWJzID0gSW50NjMuYWJzXG5sZXQgbmVnID0gSW50NjMubmVnXG5sZXQgc2NhbGUgdCBmID0gcm91bmRfbmVhcmVzdCAoZmxvYXQgdCAqLiBmKVxubGV0IHNjYWxlX2ludDYzIHQgaSA9IEludDYzLiggKiApIHQgaVxubGV0IHNjYWxlX2ludCB0IGkgPSBzY2FsZV9pbnQ2MyB0IChJbnQ2My5vZl9pbnQgaSlcbmxldCBkaXYgPSBJbnQ2My4oIC8lIClcbmxldCAoIC8gKSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0IC8uIGYpXG5sZXQgKCAvLyApID0gSW50NjMuKCAvLyApXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0IHQgPSBJbnQ2My50b19mbG9hdCB0XG5cbmxldCBvZl91bml0X29mX3RpbWUgdSA9XG4gIG1hdGNoICh1IDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kIC0+IG1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kIC0+IHNlY29uZFxuICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgfCBIb3VyIC0+IGhvdXJcbiAgfCBEYXkgLT4gZGF5XG47O1xuXG5sZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gIGxldCBhYnNfdCA9IGFicyB0IGluXG4gIGlmIGFic190ID49IGRheVxuICB0aGVuIERheVxuICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgdGhlbiBIb3VyXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gIHRoZW4gTWludXRlXG4gIGVsc2UgaWYgYWJzX3QgPj0gc2Vjb25kXG4gIHRoZW4gU2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgdGhlbiBNaWxsaXNlY29uZFxuICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gIHRoZW4gTWljcm9zZWNvbmRcbiAgZWxzZSBOYW5vc2Vjb25kXG47O1xuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPSBTcGFuX2Zsb2F0Lm9mX3NlYyAodG9fc2VjIHQpXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHMgPSBvZl9zZWMgKFNwYW5fZmxvYXQudG9fc2VjIHMpXG5cbm1vZHVsZSBTdGFibGUwID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsXVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgIFRpbWVfZmxvYXQuU3RhYmxlLlNwYW4uVjEuc2V4cF9vZl90ICh0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICAgIG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoVGltZV9mbG9hdC5TdGFibGUuU3Bhbi5WMS50X29mX3NleHAgcylcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX2ludDYzX25zIHRcbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdG9faW50NjNfbnMgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX2ludDYzX25zIHRcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0b19pbnQ2M19ucyB0XG5cbiAgICAgICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBpZiBzcGFuX3BhcnRfbWFnbml0dWRlID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMFxuICAgICAgICAgICAgdGhlbiAxXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMDBcbiAgICAgICAgICAgIHRoZW4gMlxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMV8wMDBcbiAgICAgICAgICAgIHRoZW4gM1xuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTBfMDAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNVxuICAgICAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgKCogc3BhbiBwYXJ0IG1hZ25pdHVkZXMgYXJlIGFsd2F5cyA8IDEwMF8wMDAgKilcblxuICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGVjaW1hbF9wbGFjZXNfdG9fd3JpdGUgfmJpbGxpb250aHMgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGFzc2VydCAoYmlsbGlvbnRocyA+PSAwICYmIGJpbGxpb250aHMgPD0gOTk5Xzk5OV85OTkpO1xuICAgICAgICAgICAgaWYgYmlsbGlvbnRocyA9IDBcbiAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAgPD4gMFxuICAgICAgICAgICAgdGhlbiA5XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA4XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDdcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDZcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA0XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMF8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gM1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2NoYXIgYnVmIH5wb3MgY2hhciA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zIGNoYXI7XG4gICAgICAgICAgICBwb3MgKyAxXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zIGNoYXIxIGNoYXIyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjE7XG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAocG9zICsgMSkgY2hhcjI7XG4gICAgICAgICAgICBwb3MgKyAyXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlX2ludDYzIGJ1ZiB+cG9zIH5kaWdpdHMgKEludDYzLm9mX2ludCBpbnQpO1xuICAgICAgICAgICAgcG9zICsgZGlnaXRzXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+ZGVjaW1hbHMgfmJpbGxpb250aHMgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlX2ludDYzXG4gICAgICAgICAgICAgIGJ1ZlxuICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgIH5kaWdpdHM6ZGVjaW1hbHNcbiAgICAgICAgICAgICAgKEludDYzLm9mX2ludCAoYmlsbGlvbnRocyAvIEludC5wb3cgMTAgKDkgLSBkZWNpbWFscykpKTtcbiAgICAgICAgICAgIHBvcyArIGRlY2ltYWxzXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgc3VmZml4ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBpZiBkaWdpdHMgPSAwXG4gICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2NoYXIgYnVmIH5wb3Mgc3VmZml4IGluXG4gICAgICAgICAgICAgIHBvcylcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pbGxpc2Vjb25kID0gdG9faW50NjNfbnMgbWlsbGlzZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBuYW5vc19vZl9taWNyb3NlY29uZCA9IHRvX2ludDYzX25zIG1pY3Jvc2Vjb25kIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICBsZXQgaW50NjNfNjAgPSBJbnQ2My5vZl9pbnQgNjBcbiAgICAgICAgICBsZXQgaW50NjNfMjQgPSBJbnQ2My5vZl9pbnQgMjRcblxuICAgICAgICAgICgqIFVuaXRzIG9mIHNlY29uZHMgYW5kIHNtYWxsZXIgY2FuIGJlIHdyaXR0ZW4gaW4gZGVjaW1hbCBub3RhdGlvbiB3aXRob3V0XG4gICAgICAgICAgICAgd29ycnlpbmcgYWJvdXQgbm9uLXBvd2VyLW9mLXRlbiBmYWN0b3JzLiAqKVxuICAgICAgICAgIG1vZHVsZSBEZWNpbWFsX3VuaXQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgU2Vjb25kXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOb25lXG4gICAgICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgICAgICBsZXQgY3JlYXRlIH5zIH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGlmIHMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gU2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSAxXG4gICAgICAgICAgICAgIHRoZW4gTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBpbnRlZ2VyIHQgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IHNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAvIG5hbm9zX29mX21pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbnMgLyBuYW5vc19vZl9taWNyb3NlY29uZFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBiaWxsaW9udGhzIHQgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IG5zXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbnMgJSBuYW5vc19vZl9taWxsaXNlY29uZCAqIDFfMDAwXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbnMgJSBuYW5vc19vZl9taWNyb3NlY29uZCAqIDFfMDAwXzAwMFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gMFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGxlbmd0aCB0IH5kaWdpdHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19sZW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgU2Vjb25kIC0+IGRpZ2l0cyArIDFcbiAgICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBOYW5vc2Vjb25kIC0+IGRpZ2l0cyArIDJcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbHNfbGVuID0gaWYgZGVjaW1hbHMgPiAwIHRoZW4gZGVjaW1hbHMgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICBkaWdpdHNfbGVuICsgZGVjaW1hbHNfbGVuXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgd3JpdGVfc3VmZml4IHQgYnVmIH5wb3MgPVxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gd3JpdGVfY2hhciBidWYgfnBvcyAncydcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICdtJyAncydcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICd1JyAncydcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ24nICdzJ1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gcG9zXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgd3JpdGUgdCBidWYgfnBvcyB+aW50ZWdlciB+ZGlnaXRzIH5iaWxsaW9udGhzIH5kZWNpbWFscyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyBpbnRlZ2VyIH5kaWdpdHMgaW5cbiAgICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlY2ltYWxzID0gMFxuICAgICAgICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyAnLicgaW5cbiAgICAgICAgICAgICAgICAgICAgd3JpdGVfZGVjaW1hbHMgYnVmIH5wb3MgfmJpbGxpb250aHMgfmRlY2ltYWxzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgd3JpdGVfc3VmZml4IHQgYnVmIH5wb3MpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgICAgIGlmIGVxdWFsIHQgemVyb1xuICAgICAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgaXNfbmVnYXRpdmUgPSB0IDwgemVybyBpblxuICAgICAgICAgICAgICBsZXQgc2Vjb25kcyA9IEludDYzLiggLyApICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSBpblxuICAgICAgICAgICAgICBsZXQgbnMgPVxuICAgICAgICAgICAgICAgIEludDYzLnJlbSAodG9faW50NjNfbnMgdCkgKHRvX2ludDYzX25zIHNlY29uZCkgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc2Vjb25kcyA9IEludDYzLmFicyBzZWNvbmRzIGluXG4gICAgICAgICAgICAgIGxldCBucyA9IEludC5hYnMgbnMgaW5cbiAgICAgICAgICAgICAgbGV0IHMgPSBJbnQ2My5yZW0gc2Vjb25kcyBpbnQ2M182MCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVzID0gSW50NjMuKCAvICkgc2Vjb25kcyBpbnQ2M182MCBpblxuICAgICAgICAgICAgICBsZXQgbSA9IEludDYzLnJlbSBtaW51dGVzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJzID0gSW50NjMuKCAvICkgbWludXRlcyBpbnQ2M182MCBpblxuICAgICAgICAgICAgICBsZXQgaCA9IEludDYzLnJlbSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBkID0gSW50NjMuKCAvICkgaG91cnMgaW50NjNfMjQgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2QgPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmQgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9oID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpoIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfbSA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6bSBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0ID0gRGVjaW1hbF91bml0LmNyZWF0ZSB+cyB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9pbnRlZ2VyID0gRGVjaW1hbF91bml0LmludGVnZXIgZGVjaW1hbF91bml0IH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2JpbGxpb250aHMgPSBEZWNpbWFsX3VuaXQuYmlsbGlvbnRocyBkZWNpbWFsX3VuaXQgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZGVjaW1hbF91bml0ID1cbiAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRoczpkZWNpbWFsX3VuaXRfYmlsbGlvbnRoc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc3RyaW5nX2xlbmd0aCA9XG4gICAgICAgICAgICAgICAgbGV0IHNpZ25fbGVuID0gaWYgaXNfbmVnYXRpdmUgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBkX2xlbiA9IGlmIGRpZ2l0c19vZl9kID4gMCB0aGVuIGRpZ2l0c19vZl9kICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgaF9sZW4gPSBpZiBkaWdpdHNfb2ZfaCA+IDAgdGhlbiBkaWdpdHNfb2ZfaCArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IG1fbGVuID0gaWYgZGlnaXRzX29mX20gPiAwIHRoZW4gZGlnaXRzX29mX20gKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfbGVuID1cbiAgICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kaWdpdHM6ZGlnaXRzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBzaWduX2xlbiArIGRfbGVuICsgaF9sZW4gKyBtX2xlbiArIGRlY2ltYWxfdW5pdF9sZW5cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXNzZXJ0IChzdHJpbmdfbGVuZ3RoID4gMCk7XG4gICAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgc3RyaW5nX2xlbmd0aCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gMCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gaWYgaXNfbmVnYXRpdmUgdGhlbiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICctJyBlbHNlIHBvcyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2QgZCAnZCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9oIGggJ2gnIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfbSBtICdtJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBEZWNpbWFsX3VuaXQud3JpdGVcbiAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICB+aW50ZWdlcjpkZWNpbWFsX3VuaXRfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICB+YmlsbGlvbnRoczpkZWNpbWFsX3VuaXRfYmlsbGlvbnRoc1xuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOmRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHBvcyA9IHN0cmluZ19sZW5ndGgpO1xuICAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZilcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnRvX3N0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgICAgICAoKiBXZSBkbyBjb21wdXRhdGlvbnMgdXNpbmcgbmVnYXRpdmUgbnVtYmVycyBldmVyeXdoZXJlIGFuZCB0ZXN0IGFnYWluc3RcbiAgICAgICAgICAgICB0aGluZ3MgcmVsYXRlZCB0byBbSW50NjMubWluX3ZhbHVlXSByYXRoZXIgdGhhbiB1c2luZyBwb3NpdGl2ZSBudW1iZXJzXG4gICAgICAgICAgICAgYW5kIHRlc3RpbmcgYWdhaW5zdCB0aGluZ3MgcmVsYXRlZCB0byBbSW50NjMubWF4X3ZhbHVlXSBiZWNhdXNlIHRoZVxuICAgICAgICAgICAgIG5lZ2F0aXZlIGludGVnZXIgcmFuZ2UgaXMgb25lIHdpZGVyIHRoYW4gdGhlIHBvc2l0aXZlIGludGVnZXIgcmFuZ2VcbiAgICAgICAgICAgICAoLTIqKjYzIHZzIDIqKjYzLTEpLCBhbmQgd2UgbmVlZCB0aGF0IHRvIGJlIGFibGUgdG8gaGFuZGxlIEludDYzLm1pbl92YWx1ZVxuICAgICAgICAgICAgIG5pY2VseS4gKilcblxuICAgICAgICAgIGxldCBpbnQ2M18xMCA9IEludDYzLm9mX2ludCAxMFxuICAgICAgICAgIGxldCBtaW5fbXVsdDEwX3dpdGhvdXRfdW5kZXJmbG93ID0gSW50NjMuKG1pbl92YWx1ZSAvIGludDYzXzEwKVxuXG4gICAgICAgICAgbGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiVGltZV9ucy5TcGFuLm9mX3N0cmluZzogaW52YWxpZCBzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgKHN0cmluZyA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgIChyZWFzb24gOiBzdHJpbmcpXVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBBc3N1bWVzIHggYW5kIHkgYXJlIGJvdGggbm9ucG9zaXRpdmUgKilcbiAgICAgICAgICBsZXQgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgeCB5ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBzdW0gPSB4ICsgeSBpblxuICAgICAgICAgICAgaWYgc3VtID4geFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgc3VtXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgaW50NjMgY2hhciA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAgICAgICBsZXQgZGlnaXQgPSBJbnQ2My5vZl9pbnQgKENoYXIuZ2V0X2RpZ2l0X2V4biBjaGFyKSBpblxuICAgICAgICAgICAgaWYgaW50NjMgPCBtaW5fbXVsdDEwX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyAoaW50NjMgKiBpbnQ2M18xMCkgKC1kaWdpdClcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG1pbl9mYWN0b3Jfb2Ygc3BhbiA9IEludDYzLiggLyApIEludDYzLm1pbl92YWx1ZSAodG9faW50NjNfbnMgc3BhbilcbiAgICAgICAgICBsZXQgbWluX2RheXNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIGRheVxuICAgICAgICAgIGxldCBtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIGhvdXJcbiAgICAgICAgICBsZXQgbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pbnV0ZVxuICAgICAgICAgIGxldCBtaW5fc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2Ygc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pbGxpc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9taWNyb3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pY3Jvc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbmFub3NlY29uZFxuXG4gICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgICAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgICAgICAgfCBEYXkgLT4gbWluX2RheXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgSG91ciAtPiBtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWludXRlIC0+IG1pbl9taW51dGVzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IFNlY29uZCAtPiBtaW5fc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaW5fbWlsbGlzZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG1pbl9taWNyb3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBtaW5fbmFub3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG5lZ2F0aXZlX3BhcnRcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICB+ZGVjaW1hbF9wb3NcbiAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICB+cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgc2NhbGUgPSB0b19pbnQ2M19ucyAob2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkgaW5cbiAgICAgICAgICAgIGxldCBtaW5fd2l0aG91dF91bmRlcmZsb3cgPVxuICAgICAgICAgICAgICBtaW5fd2l0aG91dF91bmRlcmZsb3dfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIEludDYzLiggPCApIG5lZ19pbnRlZ2VyIG1pbl93aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyX25zID0gSW50NjMuKCAqICkgbmVnX2ludGVnZXIgc2NhbGUgaW5cbiAgICAgICAgICAgIGxldCBmcmFjdGlvbl9wb3MgPSBkZWNpbWFsX3BvcyArIDEgaW5cbiAgICAgICAgICAgIGlmIGZyYWN0aW9uX3BvcyA+PSBlbmRfcG9zXG4gICAgICAgICAgICB0aGVuIG5lZ19pbnRlZ2VyX25zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfbnMgPVxuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLnJlYWRfaW50NjNfZGVjaW1hbFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+cG9zOmZyYWN0aW9uX3Bvc1xuICAgICAgICAgICAgICAgICAgfnNjYWxlXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6KGVuZF9wb3MgLSBmcmFjdGlvbl9wb3MpXG4gICAgICAgICAgICAgICAgICB+YWxsb3dfdW5kZXJzY29yZTp0cnVlXG4gICAgICAgICAgICAgICAgICB+cm91bmRfdGllczpyb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyBuZWdfaW50ZWdlcl9ucyAoSW50NjMuKCB+LSApIGRlY2ltYWxfbnMpKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgbGV0IG5lZ19ucyA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgc3RyaW5nXCI7XG4gICAgICAgICAgICBsZXQgaXNfbmVnYXRpdmUgPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICB8ICcrJyAtPlxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZyA6IERpZ2l0X3N0cmluZ19oZWxwZXJzLlJvdW5kLnQgPVxuICAgICAgICAgICAgICAoKiBVbHRpbWF0ZWx5LCB3ZSBhbHdheXMgcm91bmQgcGFyc2VkIHNwYW5zIHRvd2FyZHMgcG9zaXRpdmUgaW5maW5pdHkgd2hlblxuICAgICAgICAgICAgICAgICB0aGUgbmVhcmVzdCByb3VuZCBucyBhcmUgZXF1aWRpc3RhbnQuIEZvciBleGFtcGxlLCBcIjEuNW5zXCIgaXMgcmVhZCBhc1xuICAgICAgICAgICAgICAgICAyLjBucywgYW5kIFwiLTEuNW5zXCIgaXMgcmVhZCBhcyAtMW5zLiBTaW5jZSB3ZSByZWFkIGFic29sdXRlIHZhbHVlcyBiZWZvcmVcbiAgICAgICAgICAgICAgICAgYXBwbHlpbmcgdGhlIHNpZ24sIHdlIG11c3QgY2hvb3NlIG91ciByb3VuZGluZyBkaXJlY3Rpb24gYmFzZWQgb24gdGhlXG4gICAgICAgICAgICAgICAgIHNpZ24uIFJvdW5kaW5nIGRlY2ltYWwgdmFsdWVzIGhhcHBlbnMgYmVmb3JlIG5lZ2F0aW5nIHRoZWlyIG1hZ25pdHVkZS4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggaXNfbmVnYXRpdmUgd2l0aFxuICAgICAgICAgICAgICB8IGZhbHNlIC0+IFRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eVxuICAgICAgICAgICAgICB8IHRydWUgLT4gVG93YXJkX25lZ2F0aXZlX2luZmluaXR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogTG9vcCBvdmVyIHBhcnRzLCBsaWtlIFwiNW1cIiBpbiBcIjFoNW0zMHNcIiAqKVxuICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiBkb1xuICAgICAgICAgICAgICBsZXQgaGFzX2RpZ2l0ID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgbGV0IGkgPSByZWYgSW50NjMuemVybyBpblxuICAgICAgICAgICAgICAgIGxldCBlbmRfb2ZfZGlnaXRzID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiAmJiBub3QgIWVuZF9vZl9kaWdpdHMgZG9cbiAgICAgICAgICAgICAgICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3MgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICAgICAgICAgIGkgOj0gYWRkX25lZ19kaWdpdCB+c3RyaW5nICFpIGM7XG4gICAgICAgICAgICAgICAgICAgIGhhc19kaWdpdCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCAnXycgLT4gaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBlbmRfb2ZfZGlnaXRzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICFpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3BvcyA9ICFwb3MgaW5cbiAgICAgICAgICAgICAgaWYgIXBvcyA8IGxlbiAmJiBDaGFyLmVxdWFsICcuJyAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3MpXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIGxldCBlbmRfb2ZfZGVjaW1hbHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RlY2ltYWxzIGRvXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kZWNpbWFscyA6PSB0cnVlXG4gICAgICAgICAgICAgICAgZG9uZSk7XG4gICAgICAgICAgICAgIGxldCBlbmRfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiBub3QgIWhhc19kaWdpdFxuICAgICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibm8gZGlnaXRzIGJlZm9yZSB1bml0IHN1ZmZpeFwiO1xuICAgICAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgPVxuICAgICAgICAgICAgICAgIGlmICFwb3MgKyAxIDwgbGVuICYmIENoYXIuZXF1YWwgJ3MnIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgKCFwb3MgKyAxKSlcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgJ3UnIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTmFub3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidW5wYXJzZWFibGUgdW5pdCBzdWZmaXhcIilcbiAgICAgICAgICAgICAgICBlbHNlIGlmICFwb3MgPCBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBEYXlcbiAgICAgICAgICAgICAgICAgIHwgJ2gnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBIb3VyXG4gICAgICAgICAgICAgICAgICB8ICdtJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgTWludXRlXG4gICAgICAgICAgICAgICAgICB8ICdzJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgU2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyB1bml0IHN1ZmZpeCBhZnRlciBkaWdpdHNcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmVnX25hbm9zX29mX3BhcnQgPVxuICAgICAgICAgICAgICAgIG5lZ2F0aXZlX3BhcnRcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgfm5lZ19pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbF9wb3NcbiAgICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICB+dW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICAgICB+cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbmVnX25zIDo9IGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nICFuZWdfbnMgbmVnX25hbm9zX29mX3BhcnRcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBsZXQgbnMgPVxuICAgICAgICAgICAgICBpZiBpc19uZWdhdGl2ZVxuICAgICAgICAgICAgICB0aGVuICFuZWdfbnNcbiAgICAgICAgICAgICAgZWxzZSBpZiBJbnQ2My4oID0gKSAhbmVnX25zIEludDYzLm1pbl92YWx1ZVxuICAgICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCJcbiAgICAgICAgICAgICAgZWxzZSBJbnQ2My4oIH4tICkgIW5lZ19uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG9mX2ludDYzX25zIG5zXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgICAgICh0cnkgb2Zfc3RyaW5nIHggd2l0aFxuICAgICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwKVxuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lX25zLlNwYW4uU3RhYmxlLlYyLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGFuIEF0b21cIiBzZXhwXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDBcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVDApXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxub3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZTBcbmVuZFxuXG5sZXQgdG9fc3RyaW5nID0gU3RhYmxlLlYyLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0YWJsZS5WMi5vZl9zdHJpbmdcbmxldCBzZXhwX29mX3QgPSBTdGFibGUuVjIuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxubGV0IHRfc2V4cF9ncmFtbWFyID0gU3RhYmxlLlYyLnRfc2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIEZ1bmN0aW9ucyByZXF1aXJlZCBieSBbUm9idXN0bHlfY29tcGFyYWJsZV06IGFsbG93cyBmb3IgW3JvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZV1cbiAgIGdyYW51bGFyaXR5LlxuXG4gICBBIG1pY3Jvc2Vjb25kIGlzIGEgcmVhc29uYWJsZSBncmFudWxhcml0eSBiZWNhdXNlIHRoZXJlIGlzIHZlcnkgbGl0dGxlIG5ldHdvcmtcbiAgIGFjdGl2aXR5IHRoYXQgY2FuIGJlIG1lYXN1cmVkIHRvIHN1Yi1taWNyb3NlY29uZCByZXNvbHV0aW9uLiAqKVxubGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IG1pY3Jvc2Vjb25kXG5sZXQgKCA+PS4gKSB0IHUgPSB0ID49IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD0uICkgdCB1ID0gdCA8PSBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoID0uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA8PSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCAoID4uICkgdCB1ID0gdCA+IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPC4gKSB0IHUgPSB0IDwgSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8Pi4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgcm9idXN0bHlfY29tcGFyZSB0IHUgPSBpZiB0IDwuIHUgdGhlbiAtMSBlbHNlIGlmIHQgPi4gdSB0aGVuIDEgZWxzZSAwXG5cbigqIFdlIGRvbid0IGp1c3QgY29udmVydCB0byBbVGltZS5TcGFuLnRdIGFuZCB1c2UgdGhlIGNvbnZlcnNpb24gdGhlcmUgYmVjYXVzZSBvdXJcbiAgIFt0b19zcGFuXSBjb252ZXJzaW9uIGlzIGxpbWl0ZWQgdG8gbWljcm9zZWNvbmQgcHJlY2lzaW9uLiAqKVxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgc2luY2VfdW5peF9lcG9jaCAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gb2ZfaW50NjNfbnNcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPVxuICBJbnQ2My5yYW5kb20gP3N0YXRlIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbiAgLSBJbnQ2My5yYW5kb20gP3N0YXRlIChuZWcgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG47O1xuXG5sZXQgcmFuZG9taXplID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCB+cGVyY2VudCA9XG4gIFNwYW5faGVscGVycy5yYW5kb21pemUgdCBzdGF0ZSB+cGVyY2VudCB+c2NhbGVcbjs7XG5cbmxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbjs7XG5cbmxldCBnZW5faW5jbCA9IEludDYzLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEludDYzLmdlbl91bmlmb3JtX2luY2xcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBtb2R1bGVfbmFtZVxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZClcblxudHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTdGFibGUuVjIuY29tcGFyYXRvclxuICBlbmQpXG5cbigqIHJlLWluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYW5kIGl0cyBjb21wYXJpc29ucyB0byBzaGFkb3cgdGhlXG4gICB1bi1pbmxpbmVhYmxlIG9uZXMgZnJvbSBbQ29tcGFyYWJsZV0gKilcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBULlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGhhbGZfbWljcm9zZWNvbmQgPSBJbnQ2My5vZl9pbnQgNTAwXG5sZXQgbmVhcmVzdF9taWNyb3NlY29uZCB0ID0gSW50NjMuKCh0b19pbnQ2M19ucyB0ICsgaGFsZl9taWNyb3NlY29uZCkgLyUgb2ZfaW50IDEwMDApXG5cbmxldFtAY29sZF0gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlNwYW4udCBleGNlZWRzIGxpbWl0c1wiXG4gICAgICAgICh0IDogdClcbiAgICAgICAgKG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdClcbiAgICAgICAgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdCldXG47O1xuXG5sZXQgY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgaWYgdCA8IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIHx8IHQgPiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0XG4gIGVsc2UgdFxuOztcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgU3Bhbl9mbG9hdC5vZl91cyAoSW50NjMudG9fZmxvYXQgKG5lYXJlc3RfbWljcm9zZWNvbmQgKGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCkpKVxuOztcblxubGV0IG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHMgPVxuICBpZiBTcGFuX2Zsb2F0LiggPiApIHMgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBTcGFuX2Zsb2F0LiggPCApIHMgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMuU3BhbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgc3BhblwiXG4gICAgICBzXG4gICAgICBbJXNleHBfb2Y6IFNwYW5fZmxvYXQudF07XG4gICgqIFVzaW5nIFtUaW1lLlNwYW4udG9fc2VjXSAoYmVpbmcgdGhlIGlkZW50aXR5KSBzbyB0aGF0XG4gICAgIHdlIG1ha2UgZG9uJ3QgYXBwbHkgdG9vIG1hbnkgY29udmVyc2lvblxuICAgICAtIFRvbyBtYW55IDogYFtTcGFuLnRdIC0+IFthXSAtPiBbdF1gXG4gICAgIC0gT25seSBPbmUgOiBgW1NwYW4udF09PVthXSAtPiBbdF1gLiAqKVxuICBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gKFNwYW5fZmxvYXQudG9fc2VjIHMpXG47O1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1heF92YWx1ZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgb2ZfcGFydHMgPSBvZl9wYXJ0c1xuICBsZXQgdG9fcGFydHMgPSB0b19wYXJ0c1xuZW5kXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IHRvX3NwYW4gPSB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICB0eXBlIHNwYW4gPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdCA9IEludDYzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuICAoKiBuYW5vc2Vjb25kcyBvciBub25lICopXG5cbiAgbGV0IG5vbmUgPSBJbnQ2My5taW5fdmFsdWVcbiAgbGV0IGlzX25vbmUgdCA9IEludDYzLih0ID0gbm9uZSlcbiAgbGV0IGlzX3NvbWUgdCA9IEludDYzLih0IDw+IG5vbmUpXG4gIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgc3BhbiA9IGlzX3NvbWUgKHRvX2ludDYzX25zIHNwYW4pXG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9zb21lX2Vycm9yIHNwYW4gPVxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJTcGFuLk9wdGlvbi5zb21lIHZhbHVlIG5vdCByZXByZXNlbnRhYmxlXCIgKHNwYW4gOiBzcGFuKV1cbiAgOztcblxuICBsZXQgc29tZSBzcGFuID1cbiAgICBpZiBzb21lX2lzX3JlcHJlc2VudGFibGUgc3BhbiB0aGVuIHRvX2ludDYzX25zIHNwYW4gZWxzZSByYWlzZV9zb21lX2Vycm9yIHNwYW5cbiAgOztcblxuICBsZXQgdW5jaGVja2VkX3ZhbHVlIHQgPSBvZl9pbnQ2M19ucyB0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5jaGVja2VkX3ZhbHVlIHQpXG5cbiAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICBpZiBpc19zb21lIHRcbiAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiU3Bhbi5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgOztcblxuICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB0IC0+IHNvbWUgdFxuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChvZl9pbnQ2M19ucyB0KVxuXG4gIG1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICAgIG1vZHVsZSBTb21lID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzcGFuXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlciBxdWlja2NoZWNrX2dlbmVyYXRvciB+Zjpzb21lX2lzX3JlcHJlc2VudGFibGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gcXVpY2tjaGVja19vYnNlcnZlclxuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgcXVpY2tjaGVja19zaHJpbmtlciB+Zjpzb21lX2lzX3JlcHJlc2VudGFibGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBTb21lLnQgb3B0aW9uIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgICAgIH5mX2ludmVyc2U6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBiaW5faW9dXG5cbiAgICAgICAgbGV0IHYxX3NvbWUgc3BhbiA9XG4gICAgICAgICAgYXNzZXJ0IChzb21lX2lzX3JlcHJlc2VudGFibGUgc3Bhbik7XG4gICAgICAgICAgdG9faW50NjNfbnMgc3BhblxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cF9vZjogU3RhYmxlLlYxLnQgb3B0aW9uXSAodG9fb3B0aW9uIHQpXG4gICAgICAgIGxldCB0X29mX3NleHAgcyA9IG9mX29wdGlvbiAoWyVvZl9zZXhwOiBTdGFibGUuVjEudCBvcHRpb25dIHMpXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gaSA9IGlmIGlzX25vbmUgaSB0aGVuIG5vbmUgZWxzZSB2MV9zb21lIChvZl9pbnQ2M19ucyBpKVxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRcblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgICBvZl9pbnQ2M19leG5cbiAgICAgICAgICAgIHRvX2ludDYzXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGJpbl9pb11cblxuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICAgIFNleHAuTGlzdFxuICAgICAgICAgICAgKGlmIGlzX25vbmUgdCB0aGVuIFtdIGVsc2UgWyBTdGFibGUuVjIuc2V4cF9vZl90ICh1bmNoZWNrZWRfdmFsdWUgdCkgXSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBmYWlsICgpID1cbiAgICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4uT3B0aW9uLlN0YWJsZS5WMi50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhIExpc3Qgb2YgMC0xIEF0b21cIlxuICAgICAgICAgICAgICBzZXhwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSBfIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNleHAuTGlzdCBsaXN0IC0+XG4gICAgICAgICAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgICAgfCBbXSAtPiBub25lXG4gICAgICAgICAgICAgfCBbIFNleHAuQXRvbSB4IF0gLT5cbiAgICAgICAgICAgICAgIHNvbWVcbiAgICAgICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cClcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgb2ZfaW50NjNfZXhuIGkgPSBpXG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2ludDYzX2V4blxuICAgICAgICAgICAgdG9faW50NjNcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFN0YWJsZS5WMi5zZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IFN0YWJsZS5WMi50X29mX3NleHBcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pbywgaGFzaF1cblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuU3Bhbi5PcHRpb25cIlxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgIGVuZClcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoSW50NjMgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZTBcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gT3B0aW9uLlN0YWJsZS5WMVxuICAgIG1vZHVsZSBWMiA9IE9wdGlvbi5TdGFibGUuVjJcbiAgZW5kXG5lbmRcblxubGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xuXG50eXBlIHVuZGVybHlpbmcgPSBJbnQ2My50XG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2Ugd2FsbC1jbG9jayBtaWRuaWdodCAqKSBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlIChTcGFuIDogUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyB0XG5cblxubGV0IHN0YXJ0X29mX2RheSA6IHQgPSBTcGFuLnplcm9cbmxldCBzdGFydF9vZl9uZXh0X2RheSA6IHQgPSBTcGFuLmRheVxubGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPSBTcGFuLiggLSApIHN0YXJ0X29mX25leHRfZGF5IFNwYW4ubmFub3NlY29uZFxubGV0IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPSB0XG5cbmxldFtAY29sZF0gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5wdXQgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgIH5fOihzcGFuIDogU3Bhbi50KV1cbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gaXNfaW52YWxpZCBzcGFuID1cbiAgKCogV2h5IHdlIHVzZSBbU3Bhbi4oID4gKV0gcmF0aGVyIHRoYW4gWyggPj0gKV0gYmVsb3c6XG5cbiAgICAgV2UgYWxsb3cgdG8gcmVwcmVzZW50IHRoZSBlbmQtb2YtZGF5IHNlbnRpbmVsIHZhbHVlIChbMjQuMDAwMDAwMDAwaF0pLCB3aGljaCBpcyBub3RcbiAgICAgaXRzZWxmIGEgdmFsaWQgY2xvY2sgZmFjZSB0aW1lLiAgSG93ZXZlciwgc2luY2UgdmFsaWQgY2xvY2sgZmFjZSB0aW1lcyByZWFkaWx5XG4gICAgIHJvdW5kIHVwIHRvIGl0LCBpdCdzIGJldHRlciB0byBhbGxvdyBpdCB0byBiZSByZXByZXNlbnRlZC4gKilcbiAgU3Bhbi4oIDwgKSBzcGFuIHN0YXJ0X29mX2RheSB8fCBTcGFuLiggPiApIHNwYW4gc3RhcnRfb2ZfbmV4dF9kYXlcbjs7XG5cbmxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCBzcGFuID0gbm90IChpc19pbnZhbGlkIHNwYW4pXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4gPSBzcGFuXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gIGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIGlucHV0X291dF9vZl9ib3VuZHMgc3BhbiBlbHNlIHNwYW5cbjs7XG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgc3BhbiA9IGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIE5vbmUgZWxzZSBTb21lIHNwYW5cbmxldCBhZGRfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViX2V4biB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IGFkZCB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCArICkgdCBzcGFuKVxubGV0IHN1YiB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IG5leHQgdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi5uZXh0IHQpXG5sZXQgcHJldiB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLnByZXYgdClcbmxldCBkaWZmIHQgdSA9IFNwYW4uKCAtICkgdCB1XG5cbmxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICgqIFNpbWlsYXIgdG8gW1RpbWUuT2ZkYXkuY3JlYXRlXSwgaWYgd2UgZGV0ZWN0IGEgbGVhcCBzZWNvbmQgd2Ugc3RyaXAgb2ZmIGFsbFxuICAgICBzdWItc2Vjb25kIGVsZW1lbnRzIHNvIHRoYXQgSEg6TU06NjAuWFhYWFhYWFhYIGlzIGFsbCBtYXBwZWQgdG8gSEg6TU06NjAuICopXG4gIGxldCBtcywgdXMsIG5zID1cbiAgICBtYXRjaCBzZWMgd2l0aFxuICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU3Bhbi5TdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3Bhbi5TdGFibGUuVjIgOlxuICAgICAgICBDb21wYXJhdG9yLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTcGFuLlN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfdW5pdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggbW9kICkgPSBJbnQ2My5yZW0gaW5cbiAgICAgIGxldCAoICEgKSA9IEludDYzLm9mX2ludCBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBmdW4gdCB+dW5pdCAtPlxuICAgICAgICBpZiBTcGFuLiggPCApIHQgc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA8ICkgc3RhcnRfb2ZfbmV4dF9kYXkgdFxuICAgICAgICB0aGVuIFwiSW5jb3JyZWN0IGRheVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaXh0eSA9ICE2MCBpblxuICAgICAgICAgIGxldCB0aG91c2FuZCA9ICExMDAwIGluXG4gICAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyB0IGluXG4gICAgICAgICAgbGV0IHVzID0gbnMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBucyA9IG5zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG1zID0gdXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCB1cyA9IHVzIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IHMgPSBtcyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG1zID0gbXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IHMgLyBzaXh0eSBpblxuICAgICAgICAgIGxldCBzID0gcyBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBoID0gbSAvIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IG0gbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgdW5pdCA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgKGBOYW5vc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYFNlY29uZCkgYXMgdW5pdCAtPiB1bml0XG4gICAgICAgICAgICB8IGBNaW51dGVfb3JfbGVzcyAtPlxuICAgICAgICAgICAgICBpZiBucyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiB1cyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBgTWludXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCBgTWludXRlIC0+IDVcbiAgICAgICAgICAgIHwgYFNlY29uZCAtPiA4XG4gICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAxMlxuICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gMTVcbiAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gMThcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MCBoO1xuICAgICAgICAgIEJ5dGVzLnNldCBzdHIgMiAnOic7XG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MyBtO1xuICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgfCBgTWludXRlIC0+ICgpXG4gICAgICAgICAgIHwgKGBTZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgNSAnOic7XG4gICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6NiBzO1xuICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgfCBgU2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgIHwgKGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA4ICcuJztcbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczo5IG1zO1xuICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgfCAoYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxMiB1cztcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTUgbnMpKSkpO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6c3RyKVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3MgfnVudGlsID1cbiAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICBsZXQgZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBwb3MgPSByZWYgcG9zIGluXG4gICAgICAoKiByZWFkIHVwIHRvIDEwIGRpZ2l0czsgc3RvcmUgdGhlIGZpcnN0IDksIHVzZSB0aGUgMTB0aCB0byByb3VuZCAqKVxuICAgICAgd2hpbGUgIXBvcyA8IHVudGlsICYmICFudW1fZGlnaXRzIDwgMTAgZG9cbiAgICAgICAgbGV0IGMgPSBzdHJpbmcuWyFwb3NdIGluXG4gICAgICAgIGlmIENoYXIuaXNfZGlnaXQgY1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpbmNyIG51bV9kaWdpdHM7XG4gICAgICAgICAgaWYgIW51bV9kaWdpdHMgPCAxMFxuICAgICAgICAgIHRoZW4gZGlnaXRzIDo9ICghZGlnaXRzICogMTApICsgQ2hhci5nZXRfZGlnaXRfZXhuIGNcbiAgICAgICAgICBlbHNlIGlmIENoYXIuZ2V0X2RpZ2l0X2V4biBjID49IDVcbiAgICAgICAgICB0aGVuIGluY3IgZGlnaXRzXG4gICAgICAgICAgZWxzZSAoKSk7XG4gICAgICAgIGluY3IgcG9zXG4gICAgICBkb25lO1xuICAgICAgKCogaWYgdGhlcmUgYXJlIG1pc3NpbmcgZGlnaXRzLCBhZGQgemVyb2VzICopXG4gICAgICBpZiAhbnVtX2RpZ2l0cyA8IDkgdGhlbiBkaWdpdHMgOj0gIWRpZ2l0cyAqIEludC5wb3cgMTAgKDkgLSAhbnVtX2RpZ2l0cyk7XG4gICAgICAhZGlnaXRzXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IG5hbm9zZWNvbmRzID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zOihzdWJzZWNfcG9zICsgMSkgfnVudGlsOihzdWJzZWNfcG9zICsgc3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgbmFub3NlY29uZHMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLnNlY29uZCBzZWMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLm1pbnV0ZSBtaW4pXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLmhvdXIgaHIpXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHN0cmluZyB+ZjpjcmVhdGVfZnJvbV9wYXJzZWRcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA6IHQgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJleHBlY3RlZCBhbiBhdG9tXCIgc2V4cFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgbGV0IG9wZW4gU2V4cGxpYiBpblxuICAgICAgU2V4cF9ncmFtbWFyLnRhZ1xuICAgICAgICAoU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXIgOiB0IFNleHBfZ3JhbW1hci50KVxuICAgICAgICB+a2V5OlNleHBfZ3JhbW1hci50eXBlX25hbWVfdGFnXG4gICAgICAgIH52YWx1ZTooQXRvbSBcIkNvcmUuVGltZV9ucy5PZmRheS50XCIpXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgKHQgOiB0KSA9IHRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTmFub3NlY29uZFxuICAgIGxldCBzZXhwX29mX3QgKHQgOiB0KSA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IHRvX2ludDYzIHQgPSBTcGFuX25zLlN0YWJsZS5WMi50b19pbnQ2MyB0XG4gICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuX25zLlN0YWJsZS5WMi5vZl9pbnQ2M19leG4gdClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoXG4gIFN0YWJsZS5WMSA6XG4gICAgQ29tcGFyYXRvci5TXG4gIHdpdGggdHlwZSB0IDo9IHRcbiAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdGFibGUuVjEgOlxuICAgICAgICBDb21wYXJhdG9yLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgaW5jbHVkZSAoU3RhYmxlLlYxIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5PZmRheVwiXG4gIGVuZClcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0YWJsZS5WMS50X3NleHBfZ3JhbW1hclxubGV0IHRvX21pY3Jvc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWljcm9zZWNvbmRcbmxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgU2Vjb25kXG5sZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pbnV0ZV9vcl9sZXNzXG5cbmxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgdHJ5XG4gICAgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6U3RhYmxlLlYxLmNyZWF0ZV9mcm9tX3BhcnNlZFxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltZV9ucy5PZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogY2Fubm90IHBhcnNlIHN0cmluZ1wiXG4gICAgICAgICAgfl86KFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4gOiBzdHJpbmcpXG4gICAgICAgICAgfl86KGV4biA6IGV4bildXG47O1xuXG5sZXQgZXZlcnkgPVxuICBsZXQgcmVjIGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYyA9XG4gICAgKCogQXNzdW1lcyBbc3Bhbl0sIFtzdGFydF0sIGFuZCBbc3RvcF0gYXJlIHZhbGlkIG9mZGF5cy4gQXNzdW1lcyBbc3RhcnQgPCBzdG9wXS5cbiAgICAgICBBc3N1bWVzIFtzcGFuID4gMF0uICopXG4gICAgbGV0IGFjYyA9IHN0YXJ0IDo6IGFjYyBpblxuICAgIGxldCBzdGFydCA9IFNwYW4uKCArICkgc3RhcnQgc3BhbiBpblxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcCAoKiBjYW5ub3Qgb3ZlcmZsb3cgKilcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjXG4gIGluXG4gICgqIGludGVybmFsIFtldmVyeV0gbmFtZWQgdG8gc2hvdyB1cCBpbiBzdGFjayB0cmFjZXMgKilcbiAgbGV0IGV2ZXJ5IHNwYW4gfnN0YXJ0IH5zdG9wID1cbiAgICBpZiBTcGFuLiggPiApIHN0YXJ0IHN0b3BcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIFtzdGFydF0gPiBbc3RvcF1cIiAoc3RhcnQgOiB0KSAoc3RvcCA6IHQpXVxuICAgIGVsc2UgaWYgU3Bhbi4oIDw9ICkgc3BhbiBTcGFuLnplcm9cbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZSBcIltUaW1lX25zLk9mZGF5LmV2ZXJ5XSBjYWxsZWQgd2l0aCBuZWdhdGl2ZSBzcGFuXCIgfl86KHNwYW4gOiBTcGFuLnQpXVxuICAgIGVsc2UgaWYgaXNfaW52YWxpZCBzcGFuXG4gICAgdGhlbiBPayBbIHN0YXJ0IF1cbiAgICBlbHNlIE9rIChldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2M6W10pXG4gIGluXG4gIGV2ZXJ5XG47O1xuXG5sZXQgc21hbGxfZGlmZiA9XG4gIGxldCBob3VyID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmhvdXIgaW5cbiAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IG9mZGF5MSA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgIGxldCBkaWZmID0gb2ZkYXkxIC0gb2ZkYXkyIGluXG4gICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICBsZXQgZDEgPSBJbnQ2My5yZW0gZGlmZiBob3VyIGluXG4gICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgbGV0IGQyID0gSW50NjMucmVtIChkMSArIGhvdXIpIGhvdXIgaW5cbiAgICBsZXQgZCA9IGlmIGQyID4gaG91ciAvIEludDYzLm9mX2ludCAyIHRoZW4gZDIgLSBob3VyIGVsc2UgZDIgaW5cbiAgICBTcGFuLm9mX2ludDYzX25zIGRcbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcInNtYWxsX2RpZmZcIiA9XG4gIGxldCB0ZXN0IHggeSA9XG4gICAgbGV0IGRpZmYgPSBzbWFsbF9kaWZmIHggeSBpblxuICAgIHByaW50ZiAhXCJzbWFsbF9kaWZmICVzICVzID0gJXNcXG5cIiAodG9fc3RyaW5nIHgpICh0b19zdHJpbmcgeSkgKFNwYW4udG9fc3RyaW5nIGRpZmYpXG4gIGluXG4gIGxldCBleGFtcGxlcyA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gKHgsIHkpIC0+IG9mX3N0cmluZyB4LCBvZl9zdHJpbmcgeSlcbiAgICAgIFsgXCIxMjowMFwiLCBcIjEyOjA1XCI7IFwiMTI6NThcIiwgXCIxMzowMlwiOyBcIjAwOjUyXCIsIFwiMjM6MTlcIjsgXCIwMDowMFwiLCBcIjI0OjAwXCIgXVxuICBpblxuICBMaXN0Lml0ZXIgZXhhbXBsZXMgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICB0ZXN0IHggeTtcbiAgICB0ZXN0IHkgeCk7XG4gIFslZXhwZWN0XG4gICAge3xcbiAgICBzbWFsbF9kaWZmIDEyOjAwOjAwLjAwMDAwMDAwMCAxMjowNTowMC4wMDAwMDAwMDAgPSAtNW1cbiAgICBzbWFsbF9kaWZmIDEyOjA1OjAwLjAwMDAwMDAwMCAxMjowMDowMC4wMDAwMDAwMDAgPSA1bVxuICAgIHNtYWxsX2RpZmYgMTI6NTg6MDAuMDAwMDAwMDAwIDEzOjAyOjAwLjAwMDAwMDAwMCA9IC00bVxuICAgIHNtYWxsX2RpZmYgMTM6MDI6MDAuMDAwMDAwMDAwIDEyOjU4OjAwLjAwMDAwMDAwMCA9IDRtXG4gICAgc21hbGxfZGlmZiAwMDo1MjowMC4wMDAwMDAwMDAgMjM6MTk6MDAuMDAwMDAwMDAwID0gLTI3bVxuICAgIHNtYWxsX2RpZmYgMjM6MTk6MDAuMDAwMDAwMDAwIDAwOjUyOjAwLjAwMDAwMDAwMCA9IDI3bVxuICAgIHNtYWxsX2RpZmYgMDA6MDA6MDAuMDAwMDAwMDAwIDI0OjAwOjAwLjAwMDAwMDAwMCA9IDBzXG4gICAgc21hbGxfZGlmZiAyNDowMDowMC4wMDAwMDAwMDAgMDA6MDA6MDAuMDAwMDAwMDAwID0gMHMgfH1dXG47O1xuXG5sZXQgZ2VuX2luY2wgPSBTcGFuLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IFNwYW4uZ2VuX3VuaWZvcm1faW5jbFxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IFNwYW4ucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG5cbmluY2x1ZGUgKFNwYW4gOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZ3MgKilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBub3cgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgU3BhbiA9IFNwYW5fbnNcbm1vZHVsZSBPZmRheSA9IE9mZGF5X25zXG5cbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB0aGUgVW5peCBlcG9jaCAoMTk3MC0wMS0wMSAwMDowMDowMCBVVEMpICopXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50ID0gU3Bhbi5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgKFNwYW4gOiBRdWlja2NoZWNrLlNfcmFuZ2Ugd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IG5vdyA9IFNwYW4uc2luY2VfdW5peF9lcG9jaFxubGV0IGVxdWFsID0gU3Bhbi5lcXVhbFxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gU3Bhbi5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gU3Bhbi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IGVwb2NoID0gU3Bhbi56ZXJvXG5sZXQgYWRkID0gU3Bhbi4oICsgKVxubGV0IHN1YiA9IFNwYW4uKCAtIClcbmxldCBkaWZmID0gU3Bhbi4oIC0gKVxubGV0IGFic19kaWZmIHQgdSA9IFNwYW4uYWJzIChkaWZmIHQgdSlcbmxldCBtYXggPSBTcGFuLm1heFxubGV0IG1pbiA9IFNwYW4ubWluXG5sZXQgbmV4dCA9IFNwYW4ubmV4dFxubGV0IHByZXYgPSBTcGFuLnByZXZcbmxldCB0b19zcGFuX3NpbmNlX2Vwb2NoIHQgPSB0XG5sZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzID0gc1xubGV0IHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQgOiBJbnQ2My50ID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxubGV0W0BpbmxpbmVdIG9mX2ludDYzX25zX3NpbmNlX2Vwb2NoIGkgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIChTcGFuLm9mX2ludDYzX25zIGkpXG5sZXRbQGNvbGRdIG92ZXJmbG93ICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX25zOiBvdmVyZmxvd1wiXVxubGV0IGlzX2VhcmxpZXIgdDEgfnRoYW46dDIgPSB0MSA8IHQyXG5sZXQgaXNfbGF0ZXIgdDEgfnRoYW46dDIgPSB0MSA+IHQyXG5cbmxldCBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bSA9XG4gIGlmIFNwYW4uKCA+ICkgeSBTcGFuLnplcm8gdGhlbiBTcGFuLiggPCApIHN1bSB4IGVsc2UgU3Bhbi4oID4gKSBzdW0geFxuOztcblxubGV0IHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZiA9XG4gIGlmIFNwYW4uKCA+ICkgeSBTcGFuLnplcm8gdGhlbiBTcGFuLiggPiApIGRpZmYgeCBlbHNlIFNwYW4uKCA8ICkgZGlmZiB4XG47O1xuXG5sZXQgYWRkX2V4biB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bSB0aGVuIG92ZXJmbG93ICgpIGVsc2Ugc3VtXG47O1xuXG5sZXQgc3ViX2V4biB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBkaWZmXG47O1xuXG5sZXQgYWRkX3NhdHVyYXRpbmcgeCB5ID1cbiAgbGV0IHN1bSA9IGFkZCB4IHkgaW5cbiAgaWYgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW1cbiAgdGhlblxuICAgIGlmIFNwYW4uKHkgPiB6ZXJvKSB0aGVuIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgZWxzZSBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlXG4gIGVsc2Ugc3VtXG47O1xuXG5sZXQgc3ViX3NhdHVyYXRpbmcgeCB5ID1cbiAgbGV0IGRpZmYgPSBzdWIgeCB5IGluXG4gIGlmIHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZlxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBkaWZmXG47O1xuXG5sZXQgdG9faW50X25zX3NpbmNlX2Vwb2NoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gdCAtPiBJbnQ2My50b19pbnRfZXhuICh0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0KVxuICBlbHNlIGZ1biBfIC0+IGZhaWx3aXRoIFwiVGltZV9ucy50b19pbnRfbnNfc2luY2VfZXBvY2g6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCBvZl9pbnRfbnNfc2luY2VfZXBvY2ggaSA9IG9mX2ludDYzX25zX3NpbmNlX2Vwb2NoIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCB0ID1cbiAgVGltZV9mbG9hdC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0ICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpKVxuOztcblxubGV0IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgVGltZV9mbG9hdC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpKVxuOztcblxubGV0IG1pbl90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgY2hlY2tfYmVmb3JlX2NvbnZlcnNpb25fZm9yXzF1c19yb3VuZGluZyB0aW1lID1cbiAgaWYgVGltZV9mbG9hdC4oIDwgKSB0aW1lIG1pbl90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgfHwgVGltZV9mbG9hdC4oID4gKSB0aW1lIG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lX25zIGRvZXMgbm90IHN1cHBvcnQgdGhpcyB0aW1lXCJcbiAgICAgIHRpbWVcbiAgICAgIFslc2V4cF9vZjogVGltZV9mbG9hdC5TdGFibGUuV2l0aF91dGNfc2V4cC5WMi50XVxuOztcblxubGV0IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCB0aW1lID1cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoVGltZV9mbG9hdC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUpKVxuOztcblxubGV0IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0aW1lID1cbiAgY2hlY2tfYmVmb3JlX2NvbnZlcnNpb25fZm9yXzF1c19yb3VuZGluZyB0aW1lO1xuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfbXVsdGlwbGVfZ290X25vbnBvc2l0aXZlX2ludGVydmFsIGludGVydmFsID1cbiAgZmFpbHdpdGhzXG4gICAgfmhlcmU6WyVoZXJlXVxuICAgIFwiVGltZV9ucy5uZXh0X211bHRpcGxlIGdvdCBub25wb3NpdGl2ZSBpbnRlcnZhbFwiXG4gICAgaW50ZXJ2YWxcbiAgICBbJXNleHBfb2Y6IFNwYW4udF1cbjs7XG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuIHJhaXNlX25leHRfbXVsdGlwbGVfZ290X25vbnBvc2l0aXZlX2ludGVydmFsIGludGVydmFsO1xuICBsZXQgYmFzZV90b19hZnRlciA9IGRpZmYgYWZ0ZXIgYmFzZSBpblxuICBpZiBTcGFuLiggPCApIGJhc2VfdG9fYWZ0ZXIgU3Bhbi56ZXJvXG4gIHRoZW4gYmFzZSAoKiBbYWZ0ZXIgPCBiYXNlXSwgY2hvb3NlIFtrID0gMF0uICopXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0ID0gYWRkIGJhc2UgKFNwYW4uc2NhbGVfaW50NjMgaW50ZXJ2YWwgKFNwYW4uZGl2IGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCByYW5kb20gP3N0YXRlICgpID0gU3Bhbi5yYW5kb20gP3N0YXRlICgpXG5cbm1vZHVsZSBVdGMgOiBzaWdcbiAgdmFsIHRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBEYXRlMC50ICogU3Bhbi50XG4gIHZhbCBvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IERhdGUwLnQgLT4gU3Bhbi50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICAoKiBhIHJlY3JlYXRpb24gb2YgdGhlIHN5c3RlbSBjYWxsIGdtdGltZSBzcGVjaWFsaXplZCB0byB0aGUgZmllbGRzIHdlIG5lZWQgdGhhdCBhbHNvXG4gICAgIGRvZXNuJ3QgcmVseSBvbiBVbml4LiAqKVxuICBsZXQgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCAoICE8ICkgaSA9IEludDYzLm9mX2ludF9leG4gaSBpblxuICAgIGxldCAoICE+ICkgdCA9IEludDYzLnRvX2ludF9leG4gdCBpblxuICAgIGxldCBuc19zaW5jZV9lcG9jaCA9IHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQgaW5cbiAgICBsZXQgbnNfcGVyX2RheSA9ICE8ODZfNDAwICogITwxXzAwMF8wMDBfMDAwIGluXG4gICAgbGV0IGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggPSBuc19zaW5jZV9lcG9jaCAvIG5zX3Blcl9kYXkgaW5cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIGlmIG5zX3NpbmNlX2Vwb2NoIDwgITwwICYmIGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggKiBuc19wZXJfZGF5IDw+IG5zX3NpbmNlX2Vwb2NoXG4gICAgICB0aGVuIGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggLSAhPDFcbiAgICAgIGVsc2UgYXBwcm94X2RheXNfZnJvbV9lcG9jaFxuICAgIGluXG4gICAgbGV0IG5zX3NpbmNlX3N0YXJ0X29mX2RheSA9IG5zX3NpbmNlX2Vwb2NoIC0gKG5zX3Blcl9kYXkgKiBkYXlzX2Zyb21fZXBvY2gpIGluXG4gICAgbGV0IGRhdGUgPVxuICAgICAgRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggIT5kYXlzX2Zyb21fZXBvY2ggfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gICAgaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBTcGFuLm9mX2ludDYzX25zIG5zX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgIGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGRhdGUgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPVxuICAgIGFzc2VydCAoXG4gICAgICBTcGFuLiggPj0gKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLnplcm9cbiAgICAgICYmIFNwYW4uKCA8ICkgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgU3Bhbi5kYXkpO1xuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoID0gU3Bhbi5zY2FsZV9pbnQgU3Bhbi5kYXkgZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgbGV0IHNwYW5fc2luY2VfZXBvY2ggPSBTcGFuLiggKyApIHNwYW5faW5fZGF5c19zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgIG9mX3NwYW5fc2luY2VfZXBvY2ggc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBtb2R1bGUgT2ZkYXlfYXNfc3BhbiA9IHN0cnVjdFxuICAgICAgb3BlbiBJbnQuT1xuXG4gICAgICBsZXQgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuID1cbiAgICAgICAgbGV0IHNlY29uZHMgPSBTcGFuLnRvX2ludF9zZWMgc2Vjb25kc19zcGFuIGluXG4gICAgICAgIGxldCBoID0gc2Vjb25kcyAvIDM2MDAgaW5cbiAgICAgICAgbGV0IG0gPSBzZWNvbmRzIC8gNjAgJSA2MCBpblxuICAgICAgICBsZXQgcyA9IHNlY29uZHMgJSA2MCBpblxuICAgICAgICBzcHJpbnRmIFwiJTAyZDolMDJkOiUwMmRcIiBoIG0gc1xuICAgICAgOztcblxuICAgICAgbGV0IHR3b19kaWdpdF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0cmluZyA9IDIgJiYgU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICBJbnQub2Zfc3RyaW5nIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgbGV0IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHNlY29uZHNfc3RyaW5nIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaF9zdHJpbmc7IG1fc3RyaW5nOyBzX3N0cmluZyBdIC0+XG4gICAgICAgICAgbGV0IGggPSB0d29fZGlnaXRfb2Zfc3RyaW5nIGhfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG0gPSB0d29fZGlnaXRfb2Zfc3RyaW5nIG1fc3RyaW5nIGluXG4gICAgICAgICAgbGV0IHMgPSB0d29fZGlnaXRfb2Zfc3RyaW5nIHNfc3RyaW5nIGluXG4gICAgICAgICAgU3Bhbi5vZl9pbnRfc2VjICgoKChoICogNjApICsgbSkgKiA2MCkgKyBzKVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgbnNfb2ZfMTAwX21zID0gMTAwXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMF9tcyA9IDEwXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX21zID0gMV8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTAwX3VzID0gMTAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX3VzID0gMTBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMV91cyA9IDFfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTAwX25zID0gMTAwXG4gICAgICBsZXQgbnNfb2ZfMTBfbnMgPSAxMFxuICAgICAgbGV0IG5zX29mXzFfbnMgPSAxXG5cbiAgICAgIGxldCBzdWJfc2Vjb25kX3RvX3N0cmluZyBzdWJfc2Vjb25kX3NwYW4gPVxuICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHN1Yl9zZWNvbmRfc3BhbiB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgIGlmIG5zID0gMFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwMWRcIiAobnMgLyBuc19vZl8xMDBfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwMmRcIiAobnMgLyBuc19vZl8xMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzFfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDNkXCIgKG5zIC8gbnNfb2ZfMV9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNGRcIiAobnMgLyBuc19vZl8xMDBfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNWRcIiAobnMgLyBuc19vZl8xMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzFfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDZkXCIgKG5zIC8gbnNfb2ZfMV91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF9ucyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwN2RcIiAobnMgLyBuc19vZl8xMDBfbnMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF9ucyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwOGRcIiAobnMgLyBuc19vZl8xMF9ucylcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiLiUwOWRcIiBuc1xuICAgICAgOztcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgICAgdGhlbiBTcGFuLnplcm9cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGRpZ2l0cyA9IFN0cmluZy5jaG9wX3ByZWZpeF9leG4gc3RyaW5nIH5wcmVmaXg6XCIuXCIgaW5cbiAgICAgICAgICBhc3NlcnQgKFN0cmluZy5mb3JfYWxsIGRpZ2l0cyB+ZjpDaGFyLmlzX2RpZ2l0KTtcbiAgICAgICAgICBsZXQgbXVsdGlwbGllciA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIGRpZ2l0cyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gbnNfb2ZfMTAwX21zXG4gICAgICAgICAgICB8IDIgLT4gbnNfb2ZfMTBfbXNcbiAgICAgICAgICAgIHwgMyAtPiBuc19vZl8xX21zXG4gICAgICAgICAgICB8IDQgLT4gbnNfb2ZfMTAwX3VzXG4gICAgICAgICAgICB8IDUgLT4gbnNfb2ZfMTBfdXNcbiAgICAgICAgICAgIHwgNiAtPiBuc19vZl8xX3VzXG4gICAgICAgICAgICB8IDcgLT4gbnNfb2ZfMTAwX25zXG4gICAgICAgICAgICB8IDggLT4gbnNfb2ZfMTBfbnNcbiAgICAgICAgICAgIHwgOSAtPiBuc19vZl8xX25zXG4gICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgKEludC5vZl9zdHJpbmcgZGlnaXRzICogbXVsdGlwbGllcikpKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyBzcGFuID1cbiAgICAgICAgYXNzZXJ0IChTcGFuLiggPj0gKSBzcGFuIFNwYW4uemVybyAmJiBTcGFuLiggPCApIHNwYW4gU3Bhbi5kYXkpO1xuICAgICAgICBsZXQgc2Vjb25kc19zcGFuID0gc3BhbiB8PiBTcGFuLnRvX2ludF9zZWMgfD4gU3Bhbi5vZl9pbnRfc2VjIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBTcGFuLiggLSApIHNwYW4gc2Vjb25kc19zcGFuIGluXG4gICAgICAgIHNlY29uZHNfdG9fc3RyaW5nIHNlY29uZHNfc3BhbiBeIHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhblxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgbGV0IHByZWZpeF9sZW4gPSA4IGluXG4gICAgICAgICgqIFwiSEg6TU06RERcIiAqKVxuICAgICAgICBsZXQgc3VmZml4X2xlbiA9IGxlbiAtIHByZWZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3RyaW5nID0gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczowIH5sZW46cHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnByZWZpeF9sZW4gfmxlbjpzdWZmaXhfbGVuIGluXG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzZWNvbmRzX29mX3N0cmluZyBzZWNvbmRzX3N0cmluZyBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zcGFuID0gc3ViX3NlY29uZF9vZl9zdHJpbmcgc3ViX3NlY29uZF9zdHJpbmcgaW5cbiAgICAgICAgU3Bhbi4oICsgKSBzZWNvbmRzX3NwYW4gc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgIGxldCBkYXRlLCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFV0Yy50b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXlfYXNfc3Bhbi50b19zdHJpbmcgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgXiBcIlpcIlxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgZGF0ZV9zdHJpbmcsIG9mZGF5X3N0cmluZ193aXRoX3pvbmUgPSBTdHJpbmcubHNwbGl0Ml9leG4gc3RyaW5nIH5vbjonICcgaW5cbiAgICAgIGxldCBvZmRheV9zdHJpbmcgPSBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIG9mZGF5X3N0cmluZ193aXRoX3pvbmUgfnN1ZmZpeDpcIlpcIiBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZV9zdHJpbmcgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5X2FzX3NwYW4ub2Zfc3RyaW5nIG9mZGF5X3N0cmluZyBpblxuICAgICAgVXRjLm9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGRhdGUgb2ZkYXlcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGVuZClcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgIHRfc2V4cF9ncmFtbWFyXG4gICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5UaW1lX25zLkFsdGVybmF0ZV9zZXhwLnRcIilcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICgqIHNlZSB0ZXN0cyBpbiBsaWIvY29yZS90ZXN0L3NyYy90ZXN0X3RpbWVfbnMgdGhhdCBlbnN1cmUgc3RhYmlsaXR5IG9mIHRoaXNcbiAgICAgICAgICAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuXG4gICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBBbHRlcm5hdGVfc2V4cC5TdGFibGVcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuXG4oKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWUubWwgZnVuY3RvciwgY29udmVydGVkIGVub3VnaCB0byBnZXQgVGltZV9uc1xuICAgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbm1vZHVsZSBUb19hbmRfb2Zfc3RyaW5nIDogc2lnXG4gIHZhbCBvZl9kYXRlX29mZGF5IDogem9uZTpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gdFxuXG4gIHZhbCBvZl9kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICBEYXRlLnRcbiAgICAtPiBPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBbIGBPbmNlIG9mIHQgfCBgVHdpY2Ugb2YgdCAqIHQgfCBgTmV2ZXIgb2YgdCBdXG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudCAqIE9mZGF5LnRcblxuICB2YWwgdG9fZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgdFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gRGF0ZS50ICogT2ZkYXkudCAqIFsgYE9ubHkgfCBgQWxzb19hdCBvZiB0IHwgYEFsc29fc2tpcHBlZCBvZiBEYXRlLnQgKiBPZmRheS50IF1cblxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50XG4gIHZhbCB0b19vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gT2ZkYXkudFxuICB2YWwgY29udmVydCA6IGZyb21fdHo6Wm9uZS50IC0+IHRvX3R6OlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiBEYXRlLnQgKiBPZmRheS50XG4gIHZhbCByZXNldF9kYXRlX2NhY2hlIDogdW5pdCAtPiB1bml0XG4gIHZhbCB1dGNfb2Zmc2V0IDogdCAtPiB6b25lOlpvbmUudCAtPiBTcGFuLnRcblxuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW29mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRdXCJdXG5cbiAgdmFsIG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgOiBzdHJpbmcgLT4gdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW3RvX3N0cmluZ191dGNdXCJdXG4gIHZhbCB0b19zdHJpbmdfdXRjIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX2ZpbGVuYW1lX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9maWxlbmFtZV9zdHJpbmcgOiBzdHJpbmcgLT4gem9uZTpab25lLnQgLT4gdFxuICB2YWwgdG9fc3RyaW5nX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9sb2NhbGl6ZWRfc3RyaW5nIDogem9uZTpab25lLnQgLT4gc3RyaW5nIC0+IHRcblxuICB2YWwgb2Zfc3RyaW5nX2dlblxuICAgIDogIGRlZmF1bHRfem9uZToodW5pdCAtPiBab25lLnQpXG4gICAgLT4gZmluZF96b25lOihzdHJpbmcgLT4gWm9uZS50KVxuICAgIC0+IHN0cmluZ1xuICAgIC0+IHRcblxuICB2YWwgdG9fc3RyaW5nX2FicyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic19wYXJ0cyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcblxuICB2YWwgb2NjdXJyZW5jZVxuICAgIDogIFsgYEZpcnN0X2FmdGVyX29yX2F0IHwgYExhc3RfYmVmb3JlX29yX2F0IF1cbiAgICAtPiB0XG4gICAgLT4gb2ZkYXk6T2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9mbG9hdDAubWwsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgIFRpbWVfbnMgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHQgPSBTcGFuLm9mX2ludDYzX25zIHRcblxuICAgIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgICAgbGV0IGRheXMgPVxuICAgICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggfD4gSW50NjMub2ZfaW50XG4gICAgICBpblxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgKGRheXMgKiBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5KVxuICAgICAgKyBTcGFuLnRvX2ludDYzX25zIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgc3ViX2V4biAoU3Bhbi5vZl9pbnQ2M19ucyByZWxhdGl2ZSkgb2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIFNwYW4udG9faW50NjNfbnMgKGFkZF9leG4gYWJzb2x1dGUgb2Zmc2V0X2Zyb21fdXRjKVxuICAgIDs7XG5cbiAgICBsZXQgbnNfcGVyX2RheSA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXlcblxuICAgIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgICAoKiBub3RlIFRpbWVfbnMgcmVwcmVzZW50cyBhYm91dCAxNDYgeWVhcnMsIG5vdCBlbm91Z2ggZm9yIFtEYXRlLmNyZWF0ZV9leG5dIHRvIGV2ZXJcbiAgICAgICAgIHJhaXNlICopXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCA9IHQgLyBuc19wZXJfZGF5IGluXG4gICAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgICAgd2lsbCBsZWF2ZSB1cyBvbmUgZGF5IHNob3J0IGJlY2F1c2UgaXQgdHJ1bmNhdGVzIChlLmcuIC0xMDAgLyA4Nl80MDAgPSAwIGFuZCB3ZVxuICAgICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgICBpZiB0IDwgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIG5zX3Blcl9kYXlcbiAgICAgIHRoZW4gSW50NjMucHJlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICA7O1xuXG4gICAgbGV0IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9ucyA9IGRheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPSB0IC0gZGF5c19mcm9tX2Vwb2NoX2luX25zIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGUgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX29mZGF5IHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICAoKiBUaGlzIGludGVyZmFjZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9pbnRmLlpvbmUsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgICAgdGhpcyB0byB3b3JrLlxuXG4gICAgICAgVGhlIHByb2JsZW0gaXMgaGFzIHJlZmVyZW5jZXMgdG8gVGltZTBfaW50Zi5TLCB3aGljaCBpcyB0aGUgZnVuY3RvciBpbnB1dCBpbnRlcmZhY2VcbiAgICAgICB0aGF0IFRpbWVfbnMgY3VycmVudGx5IGRvZXMgbm90IHNhdGlzZnkuICopXG5cbiAgICB0eXBlIHRpbWUgPSB0XG4gICAgdHlwZSB0ID0gWm9uZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBtb2R1bGUgSW5kZXggPSBab25lLkluZGV4XG5cbiAgICAoKiBjb3BpZWQgZnVuY3Rpb25zIHJlZXhwb3J0ZWQgZnJvbSBab25lICopXG5cbiAgICB2YWwgdXRjIDogdFxuICAgIHZhbCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG4gICAgdmFsIGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcblxuICAgICgqIG5ldyBmdW5jdGlvbnMgZGVmaW5lZCBiZWxvdyAqKVxuXG4gICAgdmFsIGluZGV4IDogdCAtPiB0aW1lIC0+IEluZGV4LnRcbiAgICB2YWwgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSA6IHQgLT4gRGF0ZV9hbmRfb2ZkYXkudCAtPiB0aW1lXG4gICAgdmFsIGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgOiB0IC0+IHRpbWUgLT4gRGF0ZV9hbmRfb2ZkYXkudFxuICAgIHZhbCBuZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBzdHJpY3RseV9hZnRlcjp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgICB2YWwgcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gYXRfb3JfYmVmb3JlOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRpbWUgPSB0XG5cbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICB0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID1cbiAgICAgIG1hdGNoIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggd2l0aFxuICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgICggaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4XG4gICAgICAgICAgLCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCApXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKEluZGV4Lm5leHQgaW5kZXgpXG4gICAgbGV0IHByZXZfY2xvY2tfc2hpZnQgdCB+YXRfb3JfYmVmb3JlOnRpbWUgPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcbiAgICBsZXQgbmV4dF9jbG9ja19zaGlmdCB0IH5zdHJpY3RseV9hZnRlcjp0aW1lID0gaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG5cbiAgICBsZXQgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB0IHRpbWUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggdCB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF9vZl9kYXRlX2FuZF9vZmRheV0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXkgPVxuICAgIGxldCByZWxhdGl2ZSA9IERhdGVfYW5kX29mZGF5Lm9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSBpblxuICAgIFpvbmUuYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB6b25lIHJlbGF0aXZlXG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXlfcHJlY2lzZSBkYXRlIG9mZGF5IH56b25lID1cbiAgICAoKiBXZSBhc3N1bWUgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHpvbmUgc2hpZnQgd2l0aGluIGEgZ2l2ZW4gbG9jYWwgZGF5LiAgKilcbiAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIE9mZGF5LnN0YXJ0X29mX2RheSBpblxuICAgIGxldCBwcm9wb3NlZF90aW1lID0gYWRkIHN0YXJ0X29mX2RheSAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpIGluXG4gICAgbWF0Y2ggWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnN0YXJ0X29mX2RheSB3aXRoXG4gICAgfCBOb25lIC0+IGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICB8IFNvbWUgKHNoaWZ0X3N0YXJ0LCBzaGlmdF9hbW91bnQpIC0+XG4gICAgICBsZXQgc2hpZnRfYmFja3dhcmRzID0gU3Bhbi4oc2hpZnRfYW1vdW50IDwgemVybykgaW5cbiAgICAgICgqIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIFwicHJvYmxlbWF0aWMgcmVnaW9uXCIgKilcbiAgICAgIGxldCBzLCBlID1cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudCwgc2hpZnRfc3RhcnRcbiAgICAgICAgZWxzZSBzaGlmdF9zdGFydCwgYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudFxuICAgICAgaW5cbiAgICAgIGlmIHByb3Bvc2VkX3RpbWUgPCBzXG4gICAgICB0aGVuIGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICAgIGVsc2UgaWYgcyA8PSBwcm9wb3NlZF90aW1lICYmIHByb3Bvc2VkX3RpbWUgPCBlXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGBUd2ljZSAocHJvcG9zZWRfdGltZSwgc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICAgICAgICBlbHNlIGBOZXZlciBzaGlmdF9zdGFydFxuICAgICAgZWxzZSBgT25jZSAoc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICA7O1xuXG4gIG1vZHVsZSBEYXRlX2NhY2hlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiB0XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogdFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgdGltZSA+PSBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2xcbiAgICAmJiB0aW1lIDwgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBzdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBhZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydCB8PiBtYXggKFpvbmUuaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBjYWNoZV91bnRpbF9leGNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfdW50aWwgfD4gbWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgPSB0b19kYXRlIHRpbWUgfnpvbmUsIHRvX29mZGF5IHRpbWUgfnpvbmVcblxuICAoKiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBhbGdvcml0aG0gKGludGVyZmFjZSwgZXZlbikgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0XG4gICAgIHRpbWV6b25lIHNoaWZ0cyBhcmVuJ3QgdG9vIGNsb3NlIHRvZ2V0aGVyIChhcyBpbiwgaXQgY2FuJ3Qgc2ltdWx0YW5lb3VzbHkgYmUgdGhlXG4gICAgIGNhc2UgdGhhdCBhIHRpbWV6b25lIHNoaWZ0IG9mIFggaG91cnMgb2NjdXJyZWQgbGVzcyB0aGFuIFggaG91cnMgYWdvLCAqYW5kKlxuICAgICBhIHRpbWV6b25lIHNoaWZ0IG9mIFkgaG91cnMgd2lsbCBvY2N1ciBpbiBsZXNzIHRoYW4gWSBob3VycycgdGltZSkgKilcbiAgbGV0IHRvX2RhdGVfb2ZkYXlfcHJlY2lzZSB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYWZ0ZXIgPSBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6dGltZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQgPSBab25lLnByZXZfY2xvY2tfc2hpZnQgem9uZSB+YXRfb3JfYmVmb3JlOnRpbWUgaW5cbiAgICBsZXQgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50ID1cbiAgICAgICgqIFVzaW5nIFtkYXRlXSBhbmQgcmFpc2luZyBvbiBbTm9uZV0gaGVyZSBpcyBPSyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsb2NrXG4gICAgICAgICBzaGlmdHMgY2FuJ3QgY3Jvc3MgZGF0ZSBib3VuZGFyaWVzLiBUaGlzIGlzIHRydWUgaW4gYWxsIGNhc2VzIEkndmUgZXZlciBoZWFyZFxuICAgICAgICAgb2YgKGFuZCBbb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXSB3b3VsZCBuZWVkIHJldmlzaXRpbmcgaWYgaXQgdHVybmVkIG91dCB0byBiZVxuICAgICAgICAgZmFsc2UpICopXG4gICAgICBtYXRjaCBPZmRheS5zdWIgb2ZkYXkgYW1vdW50IHdpdGhcbiAgICAgIHwgU29tZSBvZmRheSAtPiBgQWxzb19za2lwcGVkIChkYXRlLCBvZmRheSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlRpbWUudG9fZGF0ZV9vZmRheV9wcmVjaXNlXCJcbiAgICAgICAgICAgICAgfnNwYW5fc2luY2VfZXBvY2g6KHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSA6IFNwYW4udClcbiAgICAgICAgICAgICAgKHpvbmUgOiBab25lLnQpXVxuICAgIGluXG4gICAgbGV0IGFtYmlndWl0eSA9XG4gICAgICAoKiBFZGdlIGNhc2VzOiB0aGUgaW5zdGFudCBvZiB0cmFuc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5ldyB6b25lIHJlZ2ltZS4gU28gaWYgdGhlXG4gICAgICAgICBjbG9jayBtb3ZlZCBieSBhbiBob3VyIGV4YWN0bHkgb25lIGhvdXIgYWdvLCB0aGVyZSdzIG5vIGFtYmlndWl0eSwgYmVjYXVzZSB0aGVcbiAgICAgICAgIGhvdXItYWdvIHRpbWUgYmVsb25ncyB0byB0aGUgc2FtZSByZWdpbWUgYXMgeW91LCBhbmQgY29udmVyc2VseSwgaWYgdGhlIGNsb2NrXG4gICAgICAgICB3aWxsIG1vdmUgYnkgYW4gaG91ciBpbiBhbiBob3VycycgdGltZSwgdGhlcmUgKmlzKiBhbWJpZ3VpdHkuIEhlbmNlIFs+Ll0gZm9yXG4gICAgICAgICB0aGUgZmlyc3QgY2FzZSBhbmQgWzw9Ll0gZm9yIHRoZSBzZWNvbmQuICopXG4gICAgICBtYXRjaCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQsIGNsb2NrX3NoaWZ0X2FmdGVyIHdpdGhcbiAgICAgIHwgU29tZSAoc3RhcnQsIGFtb3VudCksIF8gd2hlbiBhZGQgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzID1cbiAgICBsZXQgYXR0ZW1wdCB0aW1lIH56b25lID1cbiAgICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgICAgXVxuICAgIGluXG4gICAgZnVuIHRpbWUgfnpvbmUgLT5cbiAgICAgIHRyeSBhdHRlbXB0IHRpbWUgfnpvbmUgd2l0aFxuICAgICAgfCAoXyA6IGV4bikgLT5cbiAgICAgICAgKCogSWYgd2Ugb3ZlcmZsb3cgYXBwbHlpbmcgdGhlIFVUQyBvZmZzZXQsIHRyeSBhZ2FpbiB3aXRoIFVUQyB0aW1lLiAqKVxuICAgICAgICBhdHRlbXB0IHRpbWUgfnpvbmU6Wm9uZS51dGNcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50clxuICAgICAgICB+dGFyZ2V0Oic6J1xuICAgICAgICB+cmVwbGFjZW1lbnQ6Jy0nXG4gICAgICAgIChTdHJpbmcuZHJvcF9zdWZmaXggKE9mZGF5LnRvX3N0cmluZyBvZmRheSkgMylcbiAgOztcblxuICBsZXQgb2ZfZmlsZW5hbWVfc3RyaW5nIHMgfnpvbmUgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246J18nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlIGluIGZpbGVuYW1lIHN0cmluZ1wiXG4gICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IFN0cmluZy50ciB+dGFyZ2V0OictJyB+cmVwbGFjZW1lbnQ6JzonIG9mZGF5IGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgfnpvbmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiVGltZS5vZl9maWxlbmFtZV9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgOztcblxuICBsZXQgb2ZfbG9jYWxpemVkX3N0cmluZyB+em9uZSBzdHIgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyIH5vbjonICcgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIChzcHJpbnRmIFwibm8gc3BhY2UgaW4gZGF0ZV9vZmRheSBzdHJpbmc6ICVzXCIgc3RyKVxuICAgICAgfCBTb21lIChkYXRlLCB0aW1lKSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyB0aW1lIGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgIHdpdGhcbiAgICB8IGUgLT4gRXhuLnJlcmFpc2UgZSBcIlRpbWUub2ZfbG9jYWxpemVkX3N0cmluZ1wiXG4gIDs7XG5cbiAgbGV0IG9jY3VycmVuY2UgYmVmb3JlX29yX2FmdGVyIHQgfm9mZGF5IH56b25lID1cbiAgICBsZXQgZmlyc3RfZ3Vlc3NfZGF0ZSA9IHRvX2RhdGUgdCB+em9uZSBpblxuICAgIGxldCBmaXJzdF9ndWVzcyA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZmlyc3RfZ3Vlc3NfZGF0ZSBvZmRheSBpblxuICAgIGxldCBjbXAsIGluY3JlbWVudCA9XG4gICAgICBtYXRjaCBiZWZvcmVfb3JfYWZ0ZXIgd2l0aFxuICAgICAgfCBgTGFzdF9iZWZvcmVfb3JfYXQgLT4gKCA8PSApLCAtMVxuICAgICAgfCBgRmlyc3RfYWZ0ZXJfb3JfYXQgLT4gKCA+PSApLCAxXG4gICAgaW5cbiAgICBpZiBjbXAgZmlyc3RfZ3Vlc3MgdFxuICAgIHRoZW4gZmlyc3RfZ3Vlc3NcbiAgICBlbHNlIG9mX2RhdGVfb2ZkYXkgfnpvbmUgKERhdGUwLmFkZF9kYXlzIGZpcnN0X2d1ZXNzX2RhdGUgaW5jcmVtZW50KSBvZmRheVxuICA7O1xuXG4gIGxldCBlbnN1cmVfY29sb25faW5fb2Zmc2V0IG9mZnNldCA9XG4gICAgbGV0IG9mZnNldF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIG9mZnNldCBpblxuICAgIGlmIEludC4oIDw9ICkgb2Zmc2V0X2xlbmd0aCAyXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuWzBdXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuW29mZnNldF9sZW5ndGggLSAxXVxuICAgIHRoZW4gb2Zmc2V0IF4gXCI6MDBcIlxuICAgIGVsc2UgaWYgQ2hhci4oID0gKSBvZmZzZXQuWzFdICc6JyB8fCBDaGFyLiggPSApIG9mZnNldC5bMl0gJzonXG4gICAgdGhlbiBvZmZzZXRcbiAgICBlbHNlIGlmIEludC4oIDwgKSBvZmZzZXRfbGVuZ3RoIDMgfHwgSW50LiggPiApIG9mZnNldF9sZW5ndGggNFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBvZmZzZXQgJXNcIiBvZmZzZXQgKClcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgU3RyaW5nLnNsaWNlIG9mZnNldCAwIChvZmZzZXRfbGVuZ3RoIC0gMilcbiAgICAgICAgOyBcIjpcIlxuICAgICAgICA7IFN0cmluZy5zbGljZSBvZmZzZXQgKG9mZnNldF9sZW5ndGggLSAyKSBvZmZzZXRfbGVuZ3RoXG4gICAgICAgIF1cbiAgOztcblxuICBleGNlcHRpb24gVGltZV9uc19vZl9zdHJpbmcgb2Ygc3RyaW5nICogRXhuLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXksIHR6ID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicgJyB3aXRoXG4gICAgICAgIHwgWyBkYXk7IG1vbnRoOyB5ZWFyOyBvZmRheSBdIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIGRheTsgXCIgXCI7IG1vbnRoOyBcIiBcIjsgeWVhciBdLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXk7IHR6IF0gLT4gZGF0ZSwgb2ZkYXksIFNvbWUgdHpcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5IF0gLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIHMgXSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246J1QnIHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZXMgb3IgVCBmb3VuZFwiKVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ0b28gbWFueSBzcGFjZXNcIlxuICAgICAgaW5cbiAgICAgIGxldCBvZmRheV90b19zZWMgb2QgPSBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2QpIGluXG4gICAgICBsZXQgb2ZkYXksIHV0Y19vZmZzZXQgPVxuICAgICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICAgIHwgU29tZSBfIC0+IG9mZGF5LCBOb25lXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIENoYXIuKCA9ICkgb2ZkYXkuW1N0cmluZy5sZW5ndGggb2ZkYXkgLSAxXSAnWidcbiAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgb2ZkYXkgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggb2ZkYXkgLSAxKSwgU29tZSAwLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOicrJyBvZmRheSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgIGwsIFNvbWUgKG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOictJyBvZmRheSB3aXRoXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgICAgIGwsIFNvbWUgKC0xLiAqLiBvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gb2ZkYXksIE5vbmUpKVxuICAgICAgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgfCBTb21lIHR6IC0+IG9mX2RhdGVfb2ZkYXkgfnpvbmU6KGZpbmRfem9uZSB0eikgZGF0ZSBvZmRheVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCB1dGNfb2Zmc2V0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgem9uZSA9IGRlZmF1bHRfem9uZSAoKSBpblxuICAgICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgICAgIHwgU29tZSB1dGNfb2Zmc2V0IC0+XG4gICAgICAgICAgIGxldCB1dGNfdCA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6Wm9uZS51dGMgZGF0ZSBvZmRheSBpblxuICAgICAgICAgICBzdWIgdXRjX3QgKFNwYW4ub2Zfc2VjIHV0Y19vZmZzZXQpKVxuICAgIHdpdGhcbiAgICB8IGUgLT4gcmFpc2UgKFRpbWVfbnNfb2Zfc3RyaW5nIChzLCBlKSlcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCBzID1cbiAgICBsZXQgZGVmYXVsdF96b25lICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aW1lIGhhcyBubyB0aW1lIHpvbmUgb3IgVVRDIG9mZnNldFwiIHNdIGluXG4gICAgbGV0IGZpbmRfem9uZSB6b25lX25hbWUgPVxuICAgICAgZmFpbHdpdGhmIFwidW5hYmxlIHRvIGxvb2t1cCBab25lICVzLiAgVHJ5IHVzaW5nIENvcmUuVGltZS5vZl9zdHJpbmdcIiB6b25lX25hbWUgKClcbiAgICBpblxuICAgIG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHNcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldFxuZW5kXG5cbmluY2x1ZGUgVG9fYW5kX29mX3N0cmluZ1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IHRvX3RpbWUgPSB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBvZl90aW1lID0gb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5cbm1vZHVsZSBfID0gc3RydWN0XG4gIG9wZW4gUHB4X21vZHVsZV90aW1lcl9ydW50aW1lXG5cbiAgbGV0ICgpID1cbiAgICBEdXJhdGlvbi5mb3JtYXRcbiAgICA6PSAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGR1cmF0aW9uX29mX3NwYW4gcyA9IHMgfD4gU3Bhbi50b19pbnQ2M19ucyB8PiBEdXJhdGlvbi5vZl9uYW5vc2Vjb25kc1xuICAgICAgbGV0IHNwYW5fb2ZfZHVyYXRpb24gZCA9IGQgfD4gRHVyYXRpb24udG9fbmFub3NlY29uZHMgfD4gU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBzdHJpbmcgfD4gU3Bhbi5vZl9zdHJpbmcgfD4gZHVyYXRpb25fb2Zfc3BhblxuXG4gICAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGR1cmF0aW9ucyA9XG4gICAgICAgIGxldCBzcGFucyA9IGR1cmF0aW9ucyB8PiBMaXN0Lm1hcCB+ZjpzcGFuX29mX2R1cmF0aW9uIGluXG4gICAgICAgIGxldCB1bml0X29mX3RpbWUgPVxuICAgICAgICAgIHNwYW5zXG4gICAgICAgICAgfD4gTGlzdC5tYXhfZWx0IH5jb21wYXJlOlNwYW4uY29tcGFyZVxuICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICAgICAgIH5mOlNwYW4udG9fdW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICB+ZGVmYXVsdDpVbml0X29mX3RpbWUuTmFub3NlY29uZFxuICAgICAgICBpblxuICAgICAgICBzcGFucyB8PiBMaXN0Lm1hcCB+ZjooU3Bhbi50b19zdHJpbmdfaHVtIH51bml0X29mX3RpbWUgfmFsaWduX2RlY2ltYWw6dHJ1ZSlcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfbnNfdW5peF9vcl9UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX25zX3VuaXhfb3JfVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubGV0IHRfb2Zfc2V4cF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfbGJvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuIiwiKCogQSBzdWJzdHJpbmcgaXMgYSBjb250aWd1b3VzIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuICBXZSB1c2UgYVxuICAgZnVuY3RvciBiZWNhdXNlIHdlIHdhbnQgc3Vic3RyaW5ncyBvZiBbc3RyaW5nXSBhbmQgW2JpZ3N0cmluZ10uXG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nX2ludGZcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmcudFxuXG5tb2R1bGUgQmxpdCA9IHN0cnVjdFxuICB0eXBlICgnc3JjLCAnZHN0KSB0ID0gKCdzcmMsICdkc3QpIEJsaXQuYmxpdG9cblxuICBsZXQgc3RyaW5nX2J5dGVzIH5zcmMgP3NyY19wb3MgP3NyY19sZW4gfmRzdCA/KGRzdF9wb3MgPSAwKSAoKSA9XG4gICAgbGV0IHNyY19wb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zOnNyY19wb3NcbiAgICAgICAgP2xlbjpzcmNfbGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3JjKVxuICAgIGluXG4gICAgQnl0ZXMuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gIGxldCBzdHJpbmdfc3RyaW5nID0gc3RyaW5nX2J5dGVzXG4gIGxldCBieXRlc19ieXRlcyA9IEJ5dGVzLmJsaXRvXG4gIGxldCBzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvXG4gIGxldCBieXRlc19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX3N0cmluZyA9IEJpZ3N0cmluZy5Ub19ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2J5dGVzID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG5lbmRcblxuKCogV2UgY2FuJ3QgY2FsbCB0aGUgYmFzZSBtb2R1bGUgW0Jhc2VdIGJlY2F1c2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gd2FudHMgdG8gYWNjZXNzXG4gICB0aGUgW0Jhc2VdIGxpYnJhcnkgZGlyZWN0bHksIGFuZCB3ZSdkIGJlIHNoYWRvd2luZyBpdC4gKilcbm1vZHVsZSBGIChVbmRlcmx5aW5nIDogQmFzZSkgOiBTIHdpdGggdHlwZSBiYXNlID0gVW5kZXJseWluZy50ID0gc3RydWN0XG4gIHR5cGUgYmFzZSA9IFVuZGVybHlpbmcudFxuXG4gIHR5cGUgdCA9XG4gICAgeyBiYXNlIDogVW5kZXJseWluZy50XG4gICAgOyBwb3MgOiBpbnRcbiAgICA7IGxlbiA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAoKiBub3RlIHdlIG92ZXJyaWRlIHRoZSBnZW5lcmF0ZWQgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSBiZWxvdywgb25jZSB3ZSd2ZSBkZWZpbmVkXG4gICAgIFtjcmVhdGVdICopXG5cbiAgKCoge1tcbiAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQucG9zKTtcbiAgICAgICAgIGFzc2VydCAoMCA8PSB0Lmxlbik7XG4gICAgICAgICBhc3NlcnQgKHQucG9zICsgdC5sZW4gPD0gQmFzZS5sZW5ndGggdC5iYXNlKTtcbiAgICAgICA7OyBdfSAqKVxuXG4gIGxldCBiYXNlIHQgPSB0LmJhc2VcbiAgbGV0IHBvcyB0ID0gdC5wb3NcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5cbiAgbGV0IGlzX2VtcHR5IHQgPSBJbnQuZXF1YWwgdC5sZW4gMFxuXG4gIGxldCBiYXNlX29mX3N0cmluZyBzID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGJ1ZiA9IFVuZGVybHlpbmcuY3JlYXRlIGxlbiBpblxuICAgIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZyB+c3JjOnMgfmRzdDpidWYgKCk7XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGJhc2Vfb2ZfYmlnc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBCaWdzdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlID9wb3MgP2xlbiBiYXNlID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG5cbiAgICAgICAgKClcbiAgICAgICAgP3Bvc1xuICAgICAgICA/bGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFVuZGVybHlpbmcubGVuZ3RoIGJhc2UpXG4gICAgaW5cbiAgICB7IGJhc2U7IHBvczsgbGVuIH1cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIGxldCBvcGVuIFF1aWNrY2hlY2suTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIGJhc2UgPSBVbmRlcmx5aW5nLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGluXG4gICAgbGV0IGJhc2VfbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSBpblxuICAgIGxldCViaW5kIGxlbiA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgYmFzZV9sZW4gaW5cbiAgICBsZXQlYmluZCBwb3MgPSBJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChiYXNlX2xlbiAtIGxlbikgaW5cbiAgICByZXR1cm4gKGNyZWF0ZSB+cG9zIH5sZW4gYmFzZSlcbiAgOztcblxuICBsZXQgZ2V0X25vX2JvdW5kc19jaGVjayB0IGkgPSBVbmRlcmx5aW5nLmdldCAoYmFzZSB0KSAocG9zIHQgKyBpKVxuXG4gIGxldCBnZXQgdCBpID1cbiAgICBpZiBpID49IDAgJiYgaSA8IGxlbmd0aCB0XG4gICAgdGhlbiBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaVxuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIDs7XG5cbiAgbGV0IHN1YiA/cG9zID9sZW4gdCA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICBpblxuICAgIHsgYmFzZSA9IHQuYmFzZTsgcG9zID0gdC5wb3MgKyBwb3M7IGxlbiB9XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXJnID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIG1vZHVsZSBFbHQgPSBDaGFyXG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgZ28gYWNjIGkgPSBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgYWNjIChnZXQgdCBpKSkgKGkgKyAxKSBpblxuICAgICAgZ28gaW5pdCAwIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgKGdldCB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBmb2xkaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+aW5pdCB+ZiAtPlxuICAgICAgICAgICBsZXQgcmVjIGdvIGFjYyBpID1cbiAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgaSBhY2MgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKSkgKGkgKyAxKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBnbyBpbml0IDAgW0Bub250YWlsXSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgICAgICAgICBmIGkgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKVxuICAgICAgICAgICBkb25lKVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kXG5cbiAgbW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlMCAoTWFrZV9hcmcpXG5cbiAgbGV0IGZvbGQgPSBDLmZvbGRcbiAgbGV0IGl0ZXIgPSBDLml0ZXJcbiAgbGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxuICBsZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG4gICgqIFtDLnRvX2xpc3RdIGhhcyB0byBjb25zdHJ1Y3QgdGhlbiByZXZlcnNlIHRoZSBsaXN0ICopXG4gIGxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgKGxlbmd0aCB0KSB+ZjooZ2V0IHQpXG4gIGxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbiAgbGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxuICBsZXQgZmluZCA9IEMuZmluZFxuICBsZXQgZXhpc3RzID0gQy5leGlzdHNcbiAgbGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbiAgbGV0IG1lbSA9IEMubWVtXG4gIGxldCBjb3VudCA9IEMuY291bnRcbiAgbGV0IHN1bSA9IEMuc3VtXG4gIGxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG4gIGxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG4gIGxldCBmb2xkaSA9IEMuZm9sZGlcbiAgbGV0IGl0ZXJpID0gQy5pdGVyaVxuICBsZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxuICBsZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG4gIGxldCBjb3VudGkgPSBDLmNvdW50aVxuICBsZXQgZmluZGkgPSBDLmZpbmRpXG4gIGxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxuXG4gIGxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgICBpZiBuIDwgMFxuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gICAgZWxzZSAoXG4gICAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICAgIHwgXyAtPiBvbl9lcnJvcilcbiAgOztcblxuICBsZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgICB3cmFwX3N1Yl9uXG4gICAgICB+bmFtZTpcImRyb3BfcHJlZml4XCJcbiAgICAgIHRcbiAgICAgIG5cbiAgICAgIH5wb3M6blxuICAgICAgfmxlbjoobGVuZ3RoIHQgLSBuKVxuICAgICAgfm9uX2Vycm9yOnsgdCB3aXRoIGxlbiA9IDAgfVxuICA7O1xuXG4gIGxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9zdWZmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczowXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IHByZWZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwicHJlZml4XCIgdCBuIH5wb3M6MCB+bGVuOm4gfm9uX2Vycm9yOnRcbiAgbGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbiAgbGV0IGJsaXRfdG8gKHR5cGUgYSkgKGJsaXQgOiAoVW5kZXJseWluZy50LCBhKSBCbGl0LnQpIHQgfmRzdCB+ZHN0X3BvcyA9XG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zICgpXG4gIDs7XG5cbiAgbGV0IGJsaXRfdG9fc3RyaW5nID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXNcbiAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19iaWdzdHJpbmdcbiAgbGV0IGJsaXRfYmFzZSA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0XG5cbiAgbGV0IGJsaXRfZnJvbSB+bmFtZSAodHlwZSBhKSAoYmxpdCA6IChhLCBiYXNlKSBCbGl0LnQpIHQgfnNyYyB+c3JjX3BvcyB+bGVuID1cbiAgICBpZiBsZW4gPiB0LmxlblxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIlN1YnN0cmluZy5ibGl0X2Zyb21fJXMgbGVuID4gc3Vic3RyaW5nIGxlbmd0aCA6ICVkID4gJWRcIlxuICAgICAgICBuYW1lXG4gICAgICAgIGxlblxuICAgICAgICB0LmxlblxuICAgICAgICAoKTtcbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfnNyY19sZW46bGVuIH5kc3Q6dC5iYXNlIH5kc3RfcG9zOnQucG9zICgpXG4gIDs7XG5cbiAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBibGl0X2Zyb20gfm5hbWU6XCJzdHJpbmdcIiBVbmRlcmx5aW5nLmJsaXRfZnJvbV9zdHJpbmdcbiAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBibGl0X2Zyb20gfm5hbWU6XCJiaWdzdHJpbmdcIiBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmdcbiAgbGV0IG9mX2Jhc2UgYmFzZSA9IHsgYmFzZTsgcG9zID0gMDsgbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSB9XG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX2Jhc2UgKGJhc2Vfb2Zfc3RyaW5nIHgpXG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IG9mX2Jhc2UgKGJhc2Vfb2ZfYmlnc3RyaW5nIHgpXG5cbiAgbGV0IG1ha2UgKHR5cGUgYSkgY3JlYXRlIChibGl0IDogKGJhc2UsIGEpIEJsaXQudCkgdCA9XG4gICAgbGV0IGRzdCA9IGNyZWF0ZSB0LmxlbiBpblxuICAgIGJsaXQgfnNyYzp0LmJhc2UgfnNyY19wb3M6dC5wb3MgfnNyY19sZW46dC5sZW4gfmRzdCB+ZHN0X3BvczowICgpO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KG1ha2UgQnl0ZXMuY3JlYXRlIFVuZGVybHlpbmcuYmxpdF90b19ieXRlcyB4KVxuICA7O1xuXG4gIGxldCB0b19iaWdzdHJpbmcgPSBtYWtlIEJpZ3N0cmluZy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuXG4gIGxldCBjb25jYXRfZ2VuIGNyZWF0ZV9kc3QgYmxpdF9kc3QgdHMgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGQgdHMgfmluaXQ6MCB+ZjooZnVuIGxlbiB0IC0+IGxlbiArIGxlbmd0aCB0KSBpblxuICAgIGxldCBkc3QgPSBjcmVhdGVfZHN0IGxlbiBpblxuICAgIGlnbm9yZVxuICAgICAgKExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gZHN0X3BvcyB0IC0+XG4gICAgICAgICBibGl0X2RzdCB0IH5kc3QgfmRzdF9wb3M7XG4gICAgICAgICBkc3RfcG9zICsgbGVuZ3RoIHQpXG4gICAgICAgOiBpbnQpO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBjb25jYXQgdHMgPSBvZl9iYXNlIChjb25jYXRfZ2VuIFVuZGVybHlpbmcuY3JlYXRlIGJsaXRfYmFzZSB0cylcblxuICBsZXQgY29uY2F0X3N0cmluZyB0cyA9XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KGNvbmNhdF9nZW4gQnl0ZXMuY3JlYXRlIGJsaXRfdG9fc3RyaW5nIHRzKVxuICA7O1xuXG4gIGxldCBjb25jYXRfYmlnc3RyaW5nIHRzID0gY29uY2F0X2dlbiBCaWdzdHJpbmcuY3JlYXRlIGJsaXRfdG9fYmlnc3RyaW5nIHRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTID0gTWFrZV9zdWJzdHJpbmcuU1xuXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nLkYgKHN0cnVjdFxuICAgIHR5cGUgdCA9IEJ5dGVzLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCeXRlcy5jcmVhdGVcbiAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJ5dGVzLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gQmxpdC5ieXRlc19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0cmluZ19pZF9pbnRmXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWxpZGF0ZSA6IHN0cmluZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gOiBib29sXG4gICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9wcm90LlNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmdcbiAgICAgICAgICBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGxldCBjaGVja19mb3Jfd2hpdGVzcGFjZSA9XG4gICAgICAgICAgbGV0IGludmFsaWQgcyByZWFzb24gPVxuICAgICAgICAgICAgRXJyb3IgKHNwcmludGYgXCInJXMnIGlzIG5vdCBhIHZhbGlkICVzIGJlY2F1c2UgJXNcIiBzIE0ubW9kdWxlX25hbWUgcmVhc29uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZnVuIHMgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgIGlmIEludC4oID0gKSBsZW4gMFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBpcyBlbXB0eVwiXG4gICAgICAgICAgICBlbHNlIGlmIENoYXIuaXNfd2hpdGVzcGFjZSBzLlswXSB8fCBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bbGVuIC0gMV1cbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaGFzIHdoaXRlc3BhY2Ugb24gdGhlIGVkZ2VcIlxuICAgICAgICAgICAgZWxzZSBPayAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB2YWxpZGF0ZSBzID0gUmVzdWx0Lm1hcF9lcnJvciAoTS52YWxpZGF0ZSBzKSB+ZjpFcnJvci50b19zdHJpbmdfbWFjaFxuXG4gICAgICAgIGxldCBjaGVjayBzID1cbiAgICAgICAgICBpZiBNLmluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBjaGVja19mb3Jfd2hpdGVzcGFjZSBzIHdpdGhcbiAgICAgICAgICAgIHwgT2sgKCkgLT4gdmFsaWRhdGUgc1xuICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciBlcnJvcilcbiAgICAgICAgICBlbHNlIHZhbGlkYXRlIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICAgICAgbGV0IHBwID0gU3RyaW5nLnBwXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBpbnZhbGlkX2FyZyBlcnJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBzID0gU3RyaW5nLlN0YWJsZS5WMS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKFN0cmluZylcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RyaW5nXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgICBsZXQgb3BlbiBCaW5fcHJvdC5TaGFwZSBpblxuICAgICAgICAgIG1hdGNoIE0uY2FsbGVyX2lkZW50aXR5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYmluX3NoYXBlX3RcbiAgICAgICAgICB8IFNvbWUgdXVpZCAtPiBhbm5vdGF0ZSB1dWlkIGJpbl9zaGFwZV90XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRfd2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUX3dpdGhfY29tcGFyYXRvclxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZV9sYXRlc3QgPSBTdGFibGUuVjFcbiAgaW5jbHVkZSBTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3IpXG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3RyaW5nLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFN0cmluZy5nZW5fbm9uZW1wdHknIENoYXIuZ2VuX3ByaW50XG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIH5mOihmdW4gc3RyaW5nIC0+IGNoZWNrIHN0cmluZyB8PiBSZXN1bHQuaXNfb2spXG4gIDs7XG5cbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJfd2l0aF9iaW5fc2hhcGVcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgICAgIGVuZClcbiAgICAgICgpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlclxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2Rpc3RpbmN0X2Jpbl9zaGFwZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fcHJvdC5TaGFwZS5VdWlkLnRcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJfd2l0aF9iaW5fc2hhcGVcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgICBsZXQgdmFsaWRhdGUgPSBGbi5jb25zdCAoT2sgKCkpXG4gICAgICAgIGxldCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA9IHRydWVcbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IFNvbWUgTS5jYWxsZXJfaWRlbnRpdHlcbiAgICAgIGVuZClcbiAgICAgICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGVcbiAgTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5TdHJpbmdfaWRcIlxuICAgIGVuZClcbiAgICAoKVxuXG5tb2R1bGUgU3RyaW5nX3dpdGhvdXRfdmFsaWRhdGlvbl93aXRob3V0X3ByZXR0eV9wcmludGVyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGdsb2JhbGl6ZSA9IGdsb2JhbGl6ZV9zdHJpbmdcbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgRm4uaWRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdGFibGVfdW5pdF90ZXN0X2ludGZcblxubW9kdWxlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIGRlc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBzZXhwX2FzX3N0cmluZyB8PiBTZXhwLm9mX3N0cmluZyB8PiBbJW9mX3NleHA6IFQudF0pXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICAgT3JfZXJyb3IudGFnX2FyZ1xuICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgXCJjb3VsZCBub3QgZGVzZXJpYWxpemUgc2V4cFwiXG4gICAgICAgICAgICAgKHNleHBfYXNfc3RyaW5nLCBgRXhwZWN0ZWQgdClcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIFsgYEV4cGVjdGVkIG9mIFQudCBdXVxuICAgICAgICAgfCBPayB0JyAtPlxuICAgICAgICAgICBpZiBULmVxdWFsIHQgdCdcbiAgICAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHNleHBfYXNfc3RyaW5nIGluXG4gICAgICAgICAgIGxldCBzZXJpYWxpemVkX3NleHAgPSBULnNleHBfb2ZfdCB0IGluXG4gICAgICAgICAgIGlmIFNleHAuKCA8PiApIHNlcmlhbGl6ZWRfc2V4cCBzZXhwXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cCwgYEJ1dF9nb3Qgc2VyaWFsaXplZF9zZXhwKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IF1dKSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIF8sIGV4cGVjdGVkX2Jpbl9pbykgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgdG9fYmluX3N0cmluZyB0ID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2Jpbl9pbyA9IHRvX2Jpbl9zdHJpbmcgdCBpblxuICAgICAgaWYgU3RyaW5nLiggPD4gKSBzZXJpYWxpemVkX2Jpbl9pbyBleHBlY3RlZF9iaW5faW9cbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICh0LCBgRXhwZWN0ZWQgZXhwZWN0ZWRfYmluX2lvLCBgQnV0X2dvdCBzZXJpYWxpemVkX2Jpbl9pbylcbiAgICAgICAgICBbJXNleHBfb2Y6IFQudCAqIFsgYEV4cGVjdGVkIG9mIHN0cmluZyBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gc2VyaWFsaXplZF9iaW5faW8gaW5cbiAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9iaW5faW9fdGVzdCAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91bm9yZGVyZWRfY29udGFpbmVyIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfYXJnKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRlc3QgPSBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0XG5cbiAgbGV0JXRlc3RfdW5pdCBcInNleHBcIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LnNleHBzOyBfIH0pIC0+XG4gICAgICBsZXQgc2V4cHMgPSBMaXN0Lm1hcCBzZXhwcyB+ZjpTZXhwLm9mX3N0cmluZyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfZWxlbWVudHMgPVxuICAgICAgICBtYXRjaCBULnNleHBfb2ZfdCB0IHdpdGhcbiAgICAgICAgfCBTZXhwLkxpc3Qgc2V4cHMgLT4gc2V4cHNcbiAgICAgICAgfCBTZXhwLkF0b20gXyAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJleHBlY3RlZCBsaXN0IHdoZW4gc2VyaWFsaXppbmcgdW5vcmRlcmVkIGNvbnRhaW5lclwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBULnNleHBfb2ZfdFxuICAgICAgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2V4cHMgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNleHBzIGluXG4gICAgICBsZXQgc29ydGVkX3NlcmlhbGl6ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNlcmlhbGl6ZWRfZWxlbWVudHMgaW5cbiAgICAgIGlmIG5vdCAoTGlzdC5lcXVhbCBTZXhwLiggPSApIHNvcnRlZF9zZXhwcyBzb3J0ZWRfc2VyaWFsaXplZClcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHNleHBzLCBgQnV0X2dvdCBzZXJpYWxpemVkX2VsZW1lbnRzKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IGxpc3QgXV07XG4gICAgICBsZXQgc2V4cF9wZXJtdXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBzZXhwcykgaW5cbiAgICAgIExpc3QuaXRlciBzZXhwX3Blcm11dGF0aW9ucyB+ZjooZnVuIHNleHBzIC0+XG4gICAgICAgIGxldCB0JyA9IFQudF9vZl9zZXhwIChTZXhwLkxpc3Qgc2V4cHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1zaW1hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuXG4gIGxldCByZWMgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgc3RyaW5ncyA9XG4gICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgIHRoZW4gTGlzdC5mb3JfYWxsIHN0cmluZ3MgfmY6U3RyaW5nLmlzX2VtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcmV2X3NraXBwZWQgc3RyaW5ncyA9XG4gICAgICAgIG1hdGNoIHN0cmluZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICAgIHwgcHJlZml4IDo6IHN0cmluZ3MgLT5cbiAgICAgICAgICBsZXQgY29udGludWUgKCkgPSBsb29wIChwcmVmaXggOjogcmV2X3NraXBwZWQpIHN0cmluZ3MgaW5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXggc3RyaW5nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNvbnRpbnVlICgpXG4gICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgICBpc19jb25jYXRlbmF0aW9uIHN0cmluZyAoTGlzdC5yZXZfYXBwZW5kIHJldl9za2lwcGVkIHN0cmluZ3MpIHx8IGNvbnRpbnVlICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gc3RyaW5ncylcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5iaW5faW9faGVhZGVyOyBiaW5faW9fZWxlbWVudHM7IF8gfSkgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgZWxlbWVudHMgPSBiaW5faW9fZWxlbWVudHMgaW5cbiAgICAgIGxldCBiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMgPSBiaW5faW9faGVhZGVyIF4gU3RyaW5nLmNvbmNhdCBlbGVtZW50cyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6YXRpb25fbWF0Y2hlcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4OmJpbl9pb19oZWFkZXIgc2VyaWFsaXplZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgZWxlbWVudHNfc3RyaW5nIC0+IGlzX2NvbmNhdGVuYXRpb24gZWxlbWVudHNfc3RyaW5nIGVsZW1lbnRzXG4gICAgICBpblxuICAgICAgaWYgbm90IHNlcmlhbGl6YXRpb25fbWF0Y2hlc1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIChiaW5faW9faGVhZGVyLCBlbGVtZW50cyksIGBCdXRfZ290IHNlcmlhbGl6ZWQpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgKiBzdHJpbmcgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgcGVybXV0YXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBlbGVtZW50cykgaW5cbiAgICAgIExpc3QuaXRlciBwZXJtdXRhdGF0aW9ucyB+ZjooZnVuIGVsZW1lbnRzIC0+XG4gICAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSAoYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJiaW4taW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuKCogVGhlIG1vZHVsZSBbVF0gc2VydmVzIHRvIGVuZm9yY2UgdGhlIGludmFyaWFudCB0aGF0IGFsbCBCbGFuZy50IHZhbHVlcyBhcmUgaW4gYVxuICAgbm9ybWFsIGZvcm0gd2hlcmVieSBib29sZWFuIGNvbnN0YW50cyBUcnVlIGFuZCBGYWxzZSBvbmx5IGFwcGVhciBhcyB0aGUgdG9wbW9zdFxuICAgY29uc3RydWN0b3IgLS0gaW4gYW55IG90aGVyIHBvc2l0aW9uIHRoZXkgYXJlIHNpbXBsaWZpZWQgYXdheSB1c2luZyBsYXdzIG9mXG4gICBib29sZWFuIGFsZ2VicmEuXG5cbiAgIFdlIGFsc28gZW5mb3JjZSB0aGF0IG5lc3RlZCBbQW5kXXMgYW5kIFtPcl1zIGVhY2ggbGVhbiB0byB0aGUgcmlnaHQgc28gdGhhdCBbZXZhbF1cbiAgIGRvZXNuJ3QgbmVlZCBzbyBtdWNoIHN0YWNrIHNwYWNlIGFzIGl0IHdvdWxkIGlmIHRoZXkgbGVhbmVkIHRvIHRoZSBsZWZ0LiAgVGhvdWdodFxuICAgZXhwZXJpbWVudDogY29tcGFyZSBob3cgW2V2YWxdIHdvcmtzIG9uIHJpZ2h0LWxlYW5pbmcgW0FuZCAoYSwgQW5kIChiLCBBbmQgKGMsIGQpKSldXG4gICB2ZXJzdXMgbGVmdC1sZWFuaW5nIFtBbmQgKEFuZCAoQW5kIChhLCBiKSwgYyksIGQpXS4gIFRoZSBmb3JtZXIgaXMgdGhlIGJlc3QgY2FzZSBhbmQgaXNcbiAgIGVuZm9yY2VkLlxuXG4gICBOb3RlOiB0aGlzIGZpbGUgZGV2aWF0ZXMgZnJvbSB0aGUgdXN1YWwgcGF0dGVybiBvZiBtb2R1bGVzIHdpdGggU3RhYmxlIGludGVyZmFjZXMgaW5cbiAgIHRoYXQgdGhlIFN0YWJsZSBzdWItbW9kdWxlIGlzIG5vdCB0aGUgZmlyc3QgdGhpbmcgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbW9kdWxlLiAgVGhlXG4gICByZWFzb24gZm9yIHRoaXMgZGV2aWF0aW9uIGlzIHNvIHRoYXQgb25lIGNhbiBjb252aW5jZSBvbmVzZWxmIG9mIHRoZSBhZm9yZW1lbnRpb25lZFxuICAgaW52YXJpYW50IGFmdGVyIHJlYWRpbmcgb25seSB0aGlzIHNtYWxsIGFtb3VudCBvZiBjb2RlLiAgQWZ0ZXIgZGVmaW5pbmcgVCB3ZSB0aGVuXG4gICBpbW1lZGlhdGVseSBkZWZpbmUgaXRzIFN0YWJsZSBpbnRlcmZhY2UuXG4qKVxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgdmFsIGludmFyaWFudCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgdHJ1ZV8gOiAnYSB0XG4gIHZhbCBmYWxzZV8gOiAnYSB0XG4gIHZhbCBub3RfIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhbmRhbHNvIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9yZWxzZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBpZl8gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICBsZXQgaW52YXJpYW50ID1cbiAgICBsZXQgc3VidGVybXMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgfCBCYXNlIF8gLT4gW11cbiAgICAgIHwgTm90IHQxIC0+IFsgdDEgXVxuICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBbIHQxOyB0MiBdXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBbIHQxOyB0MjsgdDMgXVxuICAgIGluXG4gICAgbGV0IHJlYyBjb250YWluc19ub19jb25zdGFudHMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgICBpblxuICAgIGZ1biB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gIDs7XG5cbiAgbGV0IHRydWVfID0gVHJ1ZVxuICBsZXQgZmFsc2VfID0gRmFsc2VcbiAgbGV0IGJhc2UgdiA9IEJhc2UgdlxuXG4gIGxldCBub3RfID0gZnVuY3Rpb25cbiAgICB8IFRydWUgLT4gRmFsc2VcbiAgICB8IEZhbHNlIC0+IFRydWVcbiAgICB8IE5vdCB0IC0+IHRcbiAgICB8IHQgLT4gTm90IHRcbiAgOztcblxuICBsZXQgcmVjIGFuZGFsc28gdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBGYWxzZSB8IEZhbHNlLCBfIC0+IEZhbHNlXG4gICAgfCBvdGhlciwgVHJ1ZSB8IFRydWUsIG90aGVyIC0+IG90aGVyXG4gICAgfCBBbmQgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtBbmRdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBBbmQgKHQxYSwgYW5kYWxzbyB0MWIgdDIpXG4gICAgfCBfIC0+IEFuZCAodDEsIHQyKVxuICA7O1xuXG4gIGxldCByZWMgb3JlbHNlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgVHJ1ZSB8IFRydWUsIF8gLT4gVHJ1ZVxuICAgIHwgb3RoZXIsIEZhbHNlIHwgRmFsc2UsIG90aGVyIC0+IG90aGVyXG4gICAgfCBPciAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW09yXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgT3IgKHQxYSwgb3JlbHNlIHQxYiB0MilcbiAgICB8IF8gLT4gT3IgKHQxLCB0MilcbiAgOztcblxuICBsZXQgaWZfIGEgYiBjID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFRydWUgLT4gYlxuICAgIHwgRmFsc2UgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgKG1hdGNoIGIsIGMgd2l0aFxuICAgICAgIHwgVHJ1ZSwgXyAtPiBvcmVsc2UgYSBjXG4gICAgICAgfCBfLCBGYWxzZSAtPiBhbmRhbHNvIGEgYlxuICAgICAgIHwgXywgVHJ1ZSAtPiBvcmVsc2UgKG5vdF8gYSkgYlxuICAgICAgIHwgRmFsc2UsIF8gLT4gYW5kYWxzbyAobm90XyBhKSBjXG4gICAgICAgfCBfIC0+IElmIChhLCBiLCBjKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgKCogVEhJUyBUWVBFIEFORCBJVFMgU0VSSUFMSVpBVElPTlMgU0hPVUxEIE5FVkVSIEJFIENIQU5HRUQgLSBQTEVBU0UgU1BFQUsgV0lUSFxuICAgICAgIEFOT1RIRVIgREVWRUxPUEVSIElGIFlPVSBORUVEIE1PUkUgREVUQUlMICopXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgICB8IFRydWVcbiAgICAgIHwgRmFsc2VcbiAgICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE5vdCBvZiAnYSB0XG4gICAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgICAgfCBCYXNlIG9mICdhXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzcywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICgqIHRoZSByZW1haW5kZXIgb2YgdGhpcyBzaWduYXR1cmUgY29uc2lzdHMgb2YgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIGRlZmluaXRpb25zXG4gICAgICAgb2Ygc2V4cCBjb252ZXJzaW9ucyB0aGF0IGFyZSBhbHNvIHVzZWZ1bCBtb3JlIGdlbmVyYWxseSAqKVxuXG4gICAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBnYXRoZXJfY29uanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgICB2YWwgZ2F0aGVyX2Rpc2p1bmN0cyA6ICdhIHQgLT4gJ2EgdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcblxuICAgICgqIFRoaXMgdHlwZSBpcyBhc3N1bWVkIHRvIGJlIHN0YWJsZSBpZiB0aGUgJ2EgaXMgc3RhYmxlIChzZWUgYmlnIGNvbW1lbnQgYWJvdmUpLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuXG4gICAgaW5jbHVkZSAoXG4gICAgICBUIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuICAgIHR5cGUgc2V4cCA9IFNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2Ygc2V4cCBsaXN0XG5cbiAgICAoKiBjaGVhcCBpbXBvcnQgKilcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBhbmQncyAqKVxuICAgIGxldCBnYXRoZXJfY29uanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBvcidzICopXG4gICAgbGV0IGdhdGhlcl9kaXNqdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogW2FuZF9dIGFuZCBbb3JfXSB1c2UgW2ZvbGRfcmlnaHRdIGluc3RlYWQgb2YgW2ZvbGRfbGVmdF0gdG8gYXZvaWQgcXVhZHJhdGljXG4gICAgICAgYmVoYXZpb3Igd2l0aCBbYW5kYWxzb10gb3IgW29yZWxzZV0sIHJlc3BlY3RpdmVseS4gKilcbiAgICBsZXQgYW5kXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDp0cnVlXyB+ZjphbmRhbHNvXG4gICAgbGV0IG9yXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDpmYWxzZV8gfmY6b3JlbHNlXG5cbiAgICBsZXQgdW5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeCBdIC0+IHhcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgb25lIGFyZ3VtZW50LCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdGVybmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4OyB5OyB6IF0gLT4geCwgeSwgelxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyB0aHJlZSBhcmd1bWVudHMsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBCYXNlIHggLT4gc2V4cF9vZl92YWx1ZSB4XG4gICAgICAgIHwgVHJ1ZSAtPiBBdG9tIFwidHJ1ZVwiXG4gICAgICAgIHwgRmFsc2UgLT4gQXRvbSBcImZhbHNlXCJcbiAgICAgICAgfCBOb3QgdCAtPiBMaXN0IFsgQXRvbSBcIm5vdFwiOyBhdXggdCBdXG4gICAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IExpc3QgWyBBdG9tIFwiaWZcIjsgYXV4IHQxOyBhdXggdDI7IGF1eCB0MyBdXG4gICAgICAgIHwgQW5kIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9jb25qdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJhbmRcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICAgIHwgT3IgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Rpc2p1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcIm9yXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgaW5cbiAgICAgIGF1eCB0XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgYmFzZV9vZl9zZXhwIHNleHAgPVxuICAgICAgbGV0IGJhc2Ugc2V4cCA9IGJhc2UgKGJhc2Vfb2Zfc2V4cCBzZXhwKSBpblxuICAgICAgbGV0IHJlYyBhdXggc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEF0b20ga3cgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZV9cbiAgICAgICAgICAgfCBcImZhbHNlXCIgLT4gZmFsc2VfXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgTGlzdCAoQXRvbSBrdyA6OiBhcmdzKSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcImFuZFwiIC0+IGFuZF8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwib3JcIiAtPiBvcl8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwibm90XCIgLT4gbm90XyAoYXV4ICh1bmFyeSBcIm5vdFwiIGFyZ3Mgc2V4cCkpXG4gICAgICAgICAgIHwgXCJpZlwiIC0+XG4gICAgICAgICAgICAgbGV0IHgsIHksIHogPSB0ZXJuYXJ5IFwiaWZcIiBhcmdzIHNleHAgaW5cbiAgICAgICAgICAgICBpZl8gKGF1eCB4KSAoYXV4IHkpIChhdXggeilcbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cFxuICAgICAgaW5cbiAgICAgIGF1eCBzZXhwXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICBsZXQgZGVmbnMgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5kZWZuIGxpc3QgPVxuICAgICAgICBsZXQgYmxhbmcgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5ncmFtbWFyID0gUmVjdXJzaXZlIChcImJsYW5nXCIsIFsgVHl2YXIgXCJhXCIgXSkgaW5cbiAgICAgICAgWyB7IHR5Y29uID0gXCJibGFuZ1wiXG4gICAgICAgICAgOyB0eXZhcnMgPSBbIFwiYVwiIF1cbiAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgVHl2YXIgXCJhXCJcbiAgICAgICAgICAgICAgICA7IFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9pbnNlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJ0cnVlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJmYWxzZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJpZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBDb25zIChibGFuZywgRW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJub3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChibGFuZywgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgZnVuIGJhc2VfZ3JhbW1hciAtPiB7IHVudHlwZWQgPSBUeWNvbiAoXCJibGFuZ1wiLCBbIGJhc2VfZ3JhbW1hci51bnR5cGVkIF0sIGRlZm5zKSB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbmxldCBjb25zdGFudCBiID0gaWYgYiB0aGVuIHRydWVfIGVsc2UgZmFsc2VfXG5cbm1vZHVsZSB0eXBlIENvbnN0cnVjdG9ycyA9IHNpZ1xuICB2YWwgYmFzZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHRydWVfIDogXyB0XG4gIHZhbCBmYWxzZV8gOiBfIHRcbiAgdmFsIGNvbnN0YW50IDogYm9vbCAtPiBfIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgb3JfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICBsZXQgbm90ID0gbm90X1xuICBsZXQgYW5kXyA9IGFuZF9cbiAgbGV0IG9yXyA9IG9yX1xuICBsZXQgY29uc3RhbnQgPSBjb25zdGFudFxuICBsZXQgKCAmJiApID0gYW5kYWxzb1xuICBsZXQgKCB8fCApID0gb3JlbHNlXG4gIGxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxuZW5kXG5cbmxldCBjb25zdGFudF92YWx1ZSA9IGZ1bmN0aW9uXG4gIHwgVHJ1ZSAtPiBTb21lIHRydWVcbiAgfCBGYWxzZSAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG47O1xuXG4oKiBbdmFsdWVzIHRdIGxpc3RzIHRoZSBiYXNlIHByZWRpY2F0ZXMgaW4gW3RdIGZyb20gbGVmdCB0byByaWdodCAqKVxubGV0IHZhbHVlcyB0ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIHYgOjogdHMgLT4gbG9vcCAodiA6OiBhY2MpIHRzXG4gICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgIHwgTm90IHQxIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0cylcbiAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBPciAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBJZiAodDEsIHQyLCB0MykgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHQzIDo6IHRzKVxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gIGluXG4gIGxvb3AgW10gWyB0IF1cbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjIHQgcGVuZGluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgYSAtPiBuZXh0IChmIGFjYyBhKSBwZW5kaW5nXG4gICAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IG5leHQgYWNjIHBlbmRpbmdcbiAgICAgICAgfCBOb3QgdCAtPiBsb29wIGFjYyB0IHBlbmRpbmdcbiAgICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBsb29wIGFjYyB0MSAodDIgOjogcGVuZGluZylcbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gbG9vcCBhY2MgdDEgKHQyIDo6IHQzIDo6IHBlbmRpbmcpXG4gICAgICBhbmQgbmV4dCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCBhY2MgdCB0c1xuICAgICAgaW5cbiAgICAgIGxvb3AgaW5pdCB0IFtdIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgbGVuZ3RoID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBpc19lbXB0eSA9IEMuaXNfZW1wdHlcbmxldCBpdGVyID0gQy5pdGVyXG5sZXQgbGVuZ3RoID0gQy5sZW5ndGhcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IHJlYyBiaW5kIHQgfmY6ayA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEJhc2UgdiAtPiBrIHZcbiAgfCBUcnVlIC0+IHRydWVfXG4gIHwgRmFsc2UgLT4gZmFsc2VfXG4gIHwgTm90IHQxIC0+IG5vdF8gKGJpbmQgdDEgfmY6aylcbiAgKCogVW5mb3J0dW5hdGVseSB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBzb21lIG9mIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGZyb20gW2FuZGFsc29dIGFuZFxuICAgICBmcmllbmRzIGhlcmUuIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgaW52b2x2aW5nIFtMYXp5LnRdIGJ1dCB0aGVcbiAgICAgb3ZlcmhlYWQgcHJvYmFibHkgd291bGRuJ3QgYmUgd29ydGggaXQuICopXG4gIHwgQW5kICh0MSwgdDIpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgRmFsc2UgLT4gZmFsc2VfXG4gICAgIHwgb3RoZXIgLT4gYW5kYWxzbyBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgfCBPciAodDEsIHQyKSAtPlxuICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICB8IFRydWUgLT4gdHJ1ZV9cbiAgICAgfCBvdGhlciAtPiBvcmVsc2Ugb3RoZXIgKGJpbmQgdDIgfmY6aykpXG4gIHwgSWYgKHQxLCB0MiwgdDMpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgVHJ1ZSAtPiBiaW5kIHQyIH5mOmtcbiAgICAgfCBGYWxzZSAtPiBiaW5kIHQzIH5mOmtcbiAgICAgfCBvdGhlciAtPiBpZl8gb3RoZXIgKGJpbmQgdDIgfmY6aykgKGJpbmQgdDMgfmY6aykpXG47O1xuXG4oKiBzZW1hbnRpY3MgKilcblxubGV0IHJlYyBldmFsIHQgYmFzZV9ldmFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVHJ1ZSAtPiB0cnVlXG4gIHwgRmFsc2UgLT4gZmFsc2VcbiAgfCBBbmQgKHQxLCB0MikgLT4gZXZhbCB0MSBiYXNlX2V2YWwgJiYgZXZhbCB0MiBiYXNlX2V2YWxcbiAgfCBPciAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCB8fCBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE5vdCB0IC0+IG5vdCAoZXZhbCB0IGJhc2VfZXZhbClcbiAgfCBJZiAodDEsIHQyLCB0MykgLT4gaWYgZXZhbCB0MSBiYXNlX2V2YWwgdGhlbiBldmFsIHQyIGJhc2VfZXZhbCBlbHNlIGV2YWwgdDMgYmFzZV9ldmFsXG4gIHwgQmFzZSB4IC0+IGJhc2VfZXZhbCB4XG47O1xuXG5sZXQgc3BlY2lhbGl6ZSB0IGYgPVxuICBiaW5kIHQgfmY6KGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IGBLbm93biBjIC0+IGNvbnN0YW50IGNcbiAgICB8IGBVbmtub3duIC0+IGJhc2UgdikgW0Bub250YWlsXVxuOztcblxubGV0IGV2YWxfc2V0IH51bml2ZXJzZTphbGwgc2V0X29mX2Jhc2UgdCA9XG4gIGxldCByZWMgYXV4IChiIDogXyB0KSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgfCBUcnVlIC0+IGZvcmNlIGFsbFxuICAgIHwgRmFsc2UgLT4gU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KFNldC5jb21wYXJhdG9yIChmb3JjZSBhbGwpKVxuICAgIHwgQW5kIChhLCBiKSAtPiBTZXQuaW50ZXIgKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBPciAoYSwgYikgLT4gU2V0LnVuaW9uIChhdXggYSkgKGF1eCBiKVxuICAgIHwgTm90IGEgLT4gU2V0LmRpZmYgKGZvcmNlIGFsbCkgKGF1eCBhKVxuICAgIHwgQmFzZSBhIC0+IHNldF9vZl9iYXNlIGFcbiAgICB8IElmIChjb25kLCBhLCBiKSAtPlxuICAgICAgbGV0IGNvbmQgPSBhdXggY29uZCBpblxuICAgICAgU2V0LnVuaW9uIChTZXQuaW50ZXIgY29uZCAoYXV4IGEpKSAoU2V0LmludGVyIChTZXQuZGlmZiAoZm9yY2UgYWxsKSBjb25kKSAoYXV4IGIpKVxuICBpblxuICBhdXggdCBbQG5vbnRhaWxdXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IHJldHVybiA9IGJhc2VcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYERlZmluZV91c2luZ19iaW5kXG4gIGVuZClcblxubW9kdWxlIHR5cGUgTW9uYWRpYyA9IHNpZ1xuICBtb2R1bGUgTSA6IE1vbmFkLlNcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBNLnQpIC0+ICdiIHQgTS50XG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0IE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGV2YWwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgTS50KSAtPiBib29sIE0udFxuZW5kXG5cbm1vZHVsZSBGb3JfbW9uYWQgKE0gOiBNb25hZC5TKSA6IE1vbmFkaWMgd2l0aCBtb2R1bGUgTSA6PSBNID0gc3RydWN0XG4gIG9wZW4gTS5Nb25hZF9pbmZpeFxuXG4gIGxldCByZWMgYmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgeCAtPiBmIHhcbiAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICB8IEZhbHNlIC0+IE0ucmV0dXJuIGZhbHNlX1xuICAgIHwgQW5kIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgICAgIHwgVHJ1ZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gYW5kYWxzbyBhIGIpXG4gICAgfCBPciAoYSwgYikgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICAgICAgfCBGYWxzZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gb3JlbHNlIGEgYilcbiAgICB8IE5vdCBhIC0+IGJpbmQgYSB+ZiA+Pnwgbm90X1xuICAgIHwgSWYgKGEsIGIsIGMpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYyB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+PSBmdW4gYiAtPiBiaW5kIGMgfmYgPj58IGZ1biBjIC0+IGlmXyBhIGIgYylcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IGYgeCA+PnwgYmFzZSlcblxuICBsZXQgZXZhbCB0IH5mID1cbiAgICBiaW5kIHQgfmY6KGZ1biB4IC0+XG4gICAgICBmIHhcbiAgICAgID4+fCBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IHRydWVfXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXylcbiAgICA+PnwgZnVuIHQgLT4gZXZhbCB0IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICA7O1xuZW5kXG5cbigqKiBXZSBhdm9pZCBkZXJpdmluZyBxdWlja2NoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnZhcmlhbnRzIGRlc2NyaWJlZCBpbiBbVF0ncyBjb21tZW50c1xuICAgIGFib3ZlIGFyZSBwcmVzZXJ2ZWQuICopXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgYV9nZW5lcmF0b3IgPVxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5yZWN1cnNpdmVfdW5pb25cbiAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpiYXNlIGFfZ2VuZXJhdG9yXG4gICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5zaW5nbGV0b24gdHJ1ZV9cbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiBmYWxzZV9cbiAgICBdXG4gICAgfmY6KGZ1biBzZWxmIC0+XG4gICAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBzZWxmIH5mOm5vdF9cbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oIHx8IClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oICYmIClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMyBzZWxmIHNlbGYgc2VsZiB+ZjppZl9cbiAgICAgIF0pXG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciAodHlwZSBhKSAoYV9zaHJpbmtlciA6IGEgUXVpY2tjaGVjay5TaHJpbmtlci50KSA9XG4gIFF1aWNrY2hlY2suU2hyaW5rZXIuZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IGJpbm9wIG9wZXJhdG9yIGxlZnQgcmlnaHQgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gbGVmdFxuICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiByaWdodFxuICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBsZWZ0KSB+ZjooZnVuIGxlZnQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHJpZ2h0KSB+ZjooZnVuIHJpZ2h0IC0+XG4gICAgICAgICAgICBvcGVyYXRvciBsZWZ0IHJpZ2h0KVxuICAgICAgICBdXG4gICAgaW5cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmNyZWF0ZSAoZnVuIHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgQmFzZSBhIC0+IFNlcXVlbmNlLm1hcCB+ZjpiYXNlIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBhX3Nocmlua2VyIGEpXG4gICAgICB8IE9yIChsZWZ0LCByaWdodCkgLT4gYmlub3AgTy4oIHx8ICkgbGVmdCByaWdodFxuICAgICAgfCBBbmQgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggJiYgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IE5vdCB0IC0+XG4gICAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAgIChTZXF1ZW5jZS5zaW5nbGV0b24gdClcbiAgICAgICAgICAoU2VxdWVuY2UubWFwIH5mOm5vdF8gKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdCkpXG4gICAgICB8IElmIChpZl8sIHRoZW5fLCBlbHNlXykgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBpZl9cbiAgICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiB0aGVuX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIGVsc2VfXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgaWZfKSB+ZjooZnVuIGlmXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdGhlbl8pIH5mOihmdW4gdGhlbl8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGVsc2VfKSB+ZjooZnVuIGVsc2VfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyICh0eXBlIGEpIChhX29ic2VydmVyIDogYSBRdWlja2NoZWNrLk9ic2VydmVyLnQpID1cbiAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNyZWF0ZSAoZnVuIHQgfnNpemUgfmhhc2ggLT5cbiAgICBoYXNoX2ZvbGRfdFxuICAgICAgKGZ1biBoYXNoIGEgLT4gUXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlIGFfb2JzZXJ2ZXIgYSB+c2l6ZSB+aGFzaClcbiAgICAgIGhhc2hcbiAgICAgIHQpXG47O1xuIiwiKCogQ29udmVyc2lvbnMgYmV0d2VlbiB1bml0cyBvZiBtZWFzdXJlIGJhc2VkIG9uIGJ5dGVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5tb2R1bGUgVCA9IEJ5dGVfdW5pdHMwXG5pbmNsdWRlIChUIDogbW9kdWxlIHR5cGUgb2YgVCB3aXRoIG1vZHVsZSBSZXByIDo9IFJlcHIpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIC0gKSBhIGIgPSBvZl9yZXByIChSZXByLiggLSApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCArICkgYSBiID0gb2ZfcmVwciAoUmVwci4oICsgKSAodG9fcmVwciBhKSAodG9fcmVwciBiKSlcbiAgbGV0ICggLy8gKSBhIGIgPSBSZXByLiggLy8gKSAodG9fcmVwciBhKSAodG9fcmVwciBiKVxuXG4gIGxldCAoIC8gKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpIC8uIHMpKVxuICBsZXQgKCAqICkgdCBzID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCAoUmVwci50b19mbG9hdCAodG9fcmVwciB0KSAqLiBzKSlcbmVuZFxuXG5pbmNsdWRlIEluZml4XG5cbmxldCBhYnMgdCA9IG9mX3JlcHIgKFJlcHIuYWJzICh0b19yZXByIHQpKVxubGV0IG5lZyB0ID0gb2ZfcmVwciAoUmVwci5uZWcgKHRvX3JlcHIgdCkpXG5sZXQgc2lnbiB0ID0gUmVwci5zaWduICh0b19yZXByIHQpXG5sZXQgemVybyA9IG9mX3JlcHIgUmVwci56ZXJvXG5sZXQgbWluX3ZhbHVlID0gb2ZfcmVwciBSZXByLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZSA9IG9mX3JlcHIgUmVwci5tYXhfdmFsdWVcbmxldCBzY2FsZSA9IEluZml4LiggKiApXG5sZXQgaXNjYWxlIHQgcyA9IG9mX3JlcHIgKFJlcHIuKCAqICkgKHRvX3JlcHIgdCkgKFJlcHIub2ZfaW50IHMpKVxubGV0IGJ5dGVzX2ludF9leG4gPSBULmJ5dGVzX2ludF9leG5cbmxldCBieXRlc19pbnQ2MyA9IHRvX3JlcHJcbmxldCBieXRlc19pbnQ2NCB0ID0gUmVwci50b19pbnQ2NCAodG9fcmVwciB0KVxubGV0IGJ5dGVzX2Zsb2F0IHQgPSBSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpXG5sZXQgb2ZfYnl0ZXNfaW50IGIgPSBvZl9yZXByIChSZXByLm9mX2ludCBiKVxubGV0IG9mX2J5dGVzX2ludDYzID0gb2ZfcmVwclxubGV0IG9mX2J5dGVzX2ludDY0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9pbnQ2NF9leG4gYilcbmxldCBvZl9ieXRlc19mbG9hdF9leG4gYiA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgYilcblxubGV0IChieXRlcyBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW2J5dGVzX2ludF9leG5dLCBbYnl0ZXNfaW50NjNdLCBbYnl0ZXNfaW50NjRdIG9yIFxcXG4gICAgICAgIFtieXRlc19mbG9hdF0gYXMgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIGJ5dGVzX2Zsb2F0XG47O1xuXG5sZXQgKG9mX2J5dGVzIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2ZfYnl0ZXNfaW50XSwgW29mX2J5dGVzX2ludDYzXSwgXFxcbiAgICAgICAgW29mX2J5dGVzX2ludDY0X2V4bl0gb3IgW29mX2J5dGVzX2Zsb2F0X2V4bl0gYXMgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIG9mX2J5dGVzX2Zsb2F0X2V4blxuOztcblxubGV0IGtpbG9ieXRlIDogdCA9IG9mX2J5dGVzX2ludCAxMDI0XG5sZXQgbWVnYWJ5dGUgPSBpc2NhbGUga2lsb2J5dGUgMTAyNFxubGV0IGdpZ2FieXRlID0gaXNjYWxlIG1lZ2FieXRlIDEwMjRcbmxldCB0ZXJhYnl0ZSA9IGlzY2FsZSBnaWdhYnl0ZSAxMDI0XG5sZXQgcGV0YWJ5dGUgPSBpc2NhbGUgdGVyYWJ5dGUgMTAyNFxubGV0IGV4YWJ5dGUgPSBpc2NhbGUgcGV0YWJ5dGUgMTAyNFxuXG5sZXQgd29yZCA9XG4gIGxldCBtb2R1bGUgVyA9IFdvcmRfc2l6ZSBpblxuICBtYXRjaCBXLndvcmRfc2l6ZSB3aXRoXG4gIHwgVy5XMzIgLT4gb2ZfYnl0ZXNfaW50IDRcbiAgfCBXLlc2NCAtPiBvZl9ieXRlc19pbnQgOFxuOztcblxubGV0IGtpbG9ieXRlcyB0IDogZmxvYXQgPSBJbmZpeC4oIC8vICkgdCBraWxvYnl0ZVxubGV0IG1lZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgbWVnYWJ5dGVcbmxldCBnaWdhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IGdpZ2FieXRlXG5sZXQgdGVyYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCB0ZXJhYnl0ZVxubGV0IHBldGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgcGV0YWJ5dGVcbmxldCBleGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZXhhYnl0ZVxubGV0IHdvcmRzX2ludF9leG4gdCA9IFJlcHIudG9faW50X2V4biAoUmVwci4oIC8gKSAodG9fcmVwciB0KSAodG9fcmVwciB3b3JkKSlcbmxldCB3b3Jkc19mbG9hdCB0ID0gSW5maXguKCAvLyApIHQgd29yZFxubGV0IG9mX2tpbG9ieXRlcyB0IDogdCA9IEluZml4LiggKiApIGtpbG9ieXRlIHRcbmxldCBvZl9tZWdhYnl0ZXMgdCA9IEluZml4LiggKiApIG1lZ2FieXRlIHRcbmxldCBvZl9naWdhYnl0ZXMgdCA9IEluZml4LiggKiApIGdpZ2FieXRlIHRcbmxldCBvZl90ZXJhYnl0ZXMgdCA9IEluZml4LiggKiApIHRlcmFieXRlIHRcbmxldCBvZl9wZXRhYnl0ZXMgdCA9IEluZml4LiggKiApIHBldGFieXRlIHRcbmxldCBvZl9leGFieXRlcyB0ID0gSW5maXguKCAqICkgZXhhYnl0ZSB0XG5sZXQgb2Zfd29yZHNfaW50IHQgPSBpc2NhbGUgd29yZCB0XG5sZXQgb2Zfd29yZHNfZmxvYXRfZXhuIHQgPSBJbmZpeC4oICogKSB3b3JkIHRcblxubGV0ICh3b3JkcyBbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFt3b3Jkc19pbnRfZXhuXSBvciBbd29yZHNfZmxvYXRdXCJdKSA9XG4gIHdvcmRzX2Zsb2F0XG47O1xuXG5sZXQgKG9mX3dvcmRzIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX3dvcmRzX2ludF0gb3IgW29mX3dvcmRzX2Zsb2F0X2V4bl1cIl0pID1cbiAgb2Zfd29yZHNfZmxvYXRfZXhuXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIEludC4oIDwgKSBsZW5ndGggMlxuICB0aGVuIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gdG9vIHNob3J0XCIgcyAoKTtcbiAgbGV0IGJhc2Vfc3RyID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihJbnQuKCAtICkgbGVuZ3RoIDEpIGluXG4gIGxldCBleHRfY2hhciA9IENoYXIubG93ZXJjYXNlIHMuW0ludC4oIC0gKSBsZW5ndGggMV0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIHRyeSBGbG9hdC5vZl9zdHJpbmcgYmFzZV9zdHIgd2l0aFxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSAlcyBjYW5ub3QgYmUgY29udmVydGVkIHRvIGZsb2F0IFwiXG4gICAgICAgIHNcbiAgICAgICAgYmFzZV9zdHJcbiAgICAgICAgKClcbiAgaW5cbiAgbWF0Y2ggZXh0X2NoYXIgd2l0aFxuICB8ICdiJyAtPiBvZl9ieXRlc19mbG9hdF9leG4gYmFzZVxuICB8ICdrJyAtPiBvZl9raWxvYnl0ZXMgYmFzZVxuICB8ICdtJyAtPiBvZl9tZWdhYnl0ZXMgYmFzZVxuICB8ICdnJyAtPiBvZl9naWdhYnl0ZXMgYmFzZVxuICB8ICd0JyAtPiBvZl90ZXJhYnl0ZXMgYmFzZVxuICB8ICdwJyAtPiBvZl9wZXRhYnl0ZXMgYmFzZVxuICB8ICdlJyAtPiBvZl9leGFieXRlcyBiYXNlXG4gIHwgJ3cnIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biBiYXNlXG4gIHwgZXh0IC0+XG4gICAgaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSBpbGxlZ2FsIGV4dGVuc2lvbiAlY1wiIHMgZXh0ICgpXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcblxubGV0IGxhcmdlc3RfbWVhc3VyZSB0ID1cbiAgbGV0IHRfYWJzID0gb2ZfcmVwciAoUmVwci5hYnMgKHRvX3JlcHIgdCkpIGluXG4gIGlmIHRfYWJzID49IGV4YWJ5dGVcbiAgdGhlbiBgRXhhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBwZXRhYnl0ZVxuICB0aGVuIGBQZXRhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSB0ZXJhYnl0ZVxuICB0aGVuIGBUZXJhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBnaWdhYnl0ZVxuICB0aGVuIGBHaWdhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBtZWdhYnl0ZVxuICB0aGVuIGBNZWdhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBraWxvYnl0ZVxuICB0aGVuIGBLaWxvYnl0ZXNcbiAgZWxzZSBgQnl0ZXNcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgKCogU2hhcmUgdGhlIGNvbW1vbiBbb2Zfc2V4cF0gY29kZSBmb3IgW1YxXSBhbmQgW1YyXS4gKilcbiAgbW9kdWxlIE9mX3NleHBfdjFfdjIgOiBzaWdcbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cC50IC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IG5vX21hdGNoICgpID0gZmFpbHdpdGggXCJOb3QgYSByZWNvZ25pemVkIFtCeXRlX3VuaXRzLnRdIHJlcHJlc2VudGF0aW9uXCJcblxuICAgIGxldCBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBcIkJ5dGVzXCIgLT5cbiAgICAgICAgKHRyeSBvZl9ieXRlc19pbnQ2MyAoSW50NjMudF9vZl9zZXhwIHZhbF9zZXhwKSB3aXRoXG4gICAgICAgICB8IF8gLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIChGbG9hdC50X29mX3NleHAgdmFsX3NleHApKVxuICAgICAgfCBcIktpbG9ieXRlc1wiIC0+IG9mX2tpbG9ieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJNZWdhYnl0ZXNcIiAtPiBvZl9tZWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiR2lnYWJ5dGVzXCIgLT4gb2ZfZ2lnYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlRlcmFieXRlc1wiIC0+IG9mX3RlcmFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJQZXRhYnl0ZXNcIiAtPiBvZl9wZXRhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiRXhhYnl0ZXNcIiAtPiBvZl9leGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJXb3Jkc1wiIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXyAtPiBub19tYXRjaCAoKVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIHN0ciAtPiBvZl9zdHJpbmcgc3RyXG4gICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSB1bml0X25hbWU7IHZhbHVlIF0gLT5cbiAgICAgICAgb2ZfdmFsdWVfc2V4cF9hbmRfdW5pdF9uYW1lIHZhbHVlIHVuaXRfbmFtZVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICB0cnkgdF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBleG4gLT4gcmFpc2UgKFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzZXhwKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19mbG9hdFxuICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfZmxvYXRfZXhuXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgc3RhYmxlX3dpdG5lc3NfZmxvYXQgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICgqIFYxIG9ubHkgZ29lcyB1cCB0byBnaWdhYnl0ZXMgKilcbiAgICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICAgIHwgYEJ5dGVzIC0+IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2Zsb2F0IHQgOiBmbG9hdCldXG4gICAgICB8IGBLaWxvYnl0ZXMgLT4gWyVzZXhwIGBLaWxvYnl0ZXMgKGtpbG9ieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgTWVnYWJ5dGVzIC0+IFslc2V4cCBgTWVnYWJ5dGVzIChtZWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEdpZ2FieXRlcyB8IGBUZXJhYnl0ZXMgfCBgUGV0YWJ5dGVzIHwgYEV4YWJ5dGVzIC0+XG4gICAgICAgIFslc2V4cCBgR2lnYWJ5dGVzIChnaWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLmxvd2VyY2FzZSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuXG4gICAgKCogVGhpcyB0ZXN0IGRvY3VtZW50cyB0aGUgb3JpZ2luYWwgdG8tc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFuZCBmYWlscyB1bmRlciBqYXZhc2NyaXB0XG4gICAgICAgZHVlIHRvIGRpZmZlcmVuY2VzIGluIHRoZSByb3VuZGluZy4gKilcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKF8gW0B0YWdzIFwibm8tanNcIl0pID1cbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgICAgWyVleHBlY3Qge3wgMTAwMGIgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDIzYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICAgIFslZXhwZWN0IHt8IDFrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgICAgWyVleHBlY3Qge3wgMS4wMDA5OGsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTUwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjQ2NDg0ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ljc2NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOTcuNjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5NzYuNTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5LjUzNjc0bSB8fV1cbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gb2Zfc2V4cF9lcnJvciBtc2cgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19pbnQ2M1xuICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfaW50NjNcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2My5TdGFibGUuVjEpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIE9mX3NleHBfdjFfdjJcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2ludDYzIHQgOiBJbnQ2My50KV1cbiAgZW5kXG5lbmRcblxubGV0IHRvX3N0cmluZ19odW0gPSBULnRvX3N0cmluZ1xuXG5tb2R1bGUgU2hvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGxldCB0b191bml0c19zdHIgdG9fdW5pdCBleHQgPVxuICAgICAgbGV0IGYgPSB0b191bml0IHQgaW5cbiAgICAgIGxldCBmX2FicyA9IEZsb2F0LmFicyBmIGluXG4gICAgICBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAwLlxuICAgICAgdGhlbiBzcHJpbnRmIFwiJS4wZiVjXCIgZiBleHRcbiAgICAgIGVsc2UgaWYgRmxvYXQuUm9idXN0bHlfY29tcGFyYWJsZS4oID49LiApIGZfYWJzIDEwLlxuICAgICAgdGhlbiBzcHJpbnRmIFwiJS4xZiVjXCIgZiBleHRcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiUuMmYlY1wiIGYgZXh0XG4gICAgaW5cbiAgICBtYXRjaCBsYXJnZXN0X21lYXN1cmUgdCB3aXRoXG4gICAgfCBgQnl0ZXMgLT4gc3ByaW50ZiBcIiVkQlwiIChieXRlc19pbnRfZXhuIHQpXG4gICAgfCBgS2lsb2J5dGVzIC0+IHRvX3VuaXRzX3N0ciBraWxvYnl0ZXMgJ0snXG4gICAgfCBgTWVnYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBtZWdhYnl0ZXMgJ00nXG4gICAgfCBgR2lnYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBnaWdhYnl0ZXMgJ0cnXG4gICAgfCBgVGVyYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciB0ZXJhYnl0ZXMgJ1QnXG4gICAgfCBgUGV0YWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBwZXRhYnl0ZXMgJ1AnXG4gICAgfCBgRXhhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGV4YWJ5dGVzICdFJ1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgIFslZXhwZWN0IHt8IDEwMDBCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICBbJWV4cGVjdCB7fCAxMDIzQiB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNCk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgIFslZXhwZWN0IHt8IDEuMDBLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOS43N0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTcuN0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDk3N0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5LjU0TSB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5LjMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkzMUcgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkwLjlUIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA4OC44UCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMzAwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDIuNjBFIHx9XTtcbiAgICAoKVxuICA7O1xuZW5kXG5cbmxldCB0b19zdHJpbmdfc2hvcnQgPSBTaG9ydC50b19zdHJpbmdcblxubGV0IChjcmVhdGUgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc10sIFtvZl9raWxvYnl0ZXNdLCBbb2ZfbWVnYWJ5dGVzXSwgZXRjIGFzIFxcXG4gICAgICAgIGFwcHJvcHJpYXRlLlwiXSlcbiAgPVxuICBmdW4gdW5pdHMgdmFsdWUgLT5cbiAgbWF0Y2ggdW5pdHMgd2l0aFxuICB8IGBCeXRlcyAtPiBvZl9ieXRlc19mbG9hdF9leG4gdmFsdWVcbiAgfCBgS2lsb2J5dGVzIC0+IG9mX2tpbG9ieXRlcyB2YWx1ZVxuICB8IGBNZWdhYnl0ZXMgLT4gb2ZfbWVnYWJ5dGVzIHZhbHVlXG4gIHwgYEdpZ2FieXRlcyAtPiBvZl9naWdhYnl0ZXMgdmFsdWVcbiAgfCBgV29yZHMgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIHZhbHVlXG47O1xuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFJlcHIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG9mX3F1aWNrY2hlY2thYmxlID0gb2ZfcmVwclxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9fcmVwclxuICAgIGVuZClcbiIsIigqKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgYSBwb2x5bW9ycGhpYyBmdW5jdGlvbmFsIGRvdWJsZS1lbmRlZCBxdWV1ZS4gKilcblxuKCoqIEludmFyaWFudHM6XG4gICAgLSBxdWV1ZS5sZW5ndGggPSBMaXN0Lmxlbmd0aCBxdWV1ZS5mcm9udCArIExpc3QubGVuZ3RoIHF1ZXVlLmJhY2tcbiAgICAtIGlmIHF1ZXVlIGhhcyA+PSAyIGVsZW1lbnRzLCBuZWl0aGVyIGZyb250IG5vciBiYWNrIGFyZSBlbXB0eVxuKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5leGNlcHRpb24gRW1wdHkgW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSAnYSB0ID1cbiAgeyBmcm9udCA6ICdhIGxpc3RcbiAgOyBiYWNrIDogJ2EgbGlzdFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IGYgdCA9XG4gIGxldCBuX2Zyb250ID0gTGlzdC5sZW5ndGggdC5mcm9udCBpblxuICBsZXQgbl9iYWNrID0gTGlzdC5sZW5ndGggdC5iYWNrIGluXG4gIGFzc2VydCAodC5sZW5ndGggPSBuX2Zyb250ICsgbl9iYWNrKTtcbiAgYXNzZXJ0ICh0Lmxlbmd0aCA8IDIgfHwgKG5fZnJvbnQgPD4gMCAmJiBuX2JhY2sgPD4gMCkpO1xuICBMaXN0Lml0ZXIgdC5mcm9udCB+ZjtcbiAgTGlzdC5pdGVyIHQuYmFjayB+ZlxuOztcblxubGV0IG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2sgPVxuICBtYXRjaCBmcm9udCwgYmFjayB3aXRoXG4gIHwgW10sIFtdIHwgWyBfIF0sIFtdIHwgW10sIFsgXyBdIHwgXyA6OiBfLCBfIDo6IF8gLT4geyBmcm9udDsgYmFjazsgbGVuZ3RoIH1cbiAgfCBbXSwgXyA6OiBfIDo6IF8gLT5cbiAgICBsZXQgYmFjaywgcmV2X2Zyb250ID0gTGlzdC5zcGxpdF9uIGJhY2sgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udCA9IExpc3QucmV2IHJldl9mcm9udDsgYmFjazsgbGVuZ3RoIH1cbiAgfCBfIDo6IF8gOjogXywgW10gLT5cbiAgICBsZXQgZnJvbnQsIHJldl9iYWNrID0gTGlzdC5zcGxpdF9uIGZyb250IChsZW5ndGggLyAyKSBpblxuICAgIHsgZnJvbnQ7IGJhY2sgPSBMaXN0LnJldiByZXZfYmFjazsgbGVuZ3RoIH1cbjs7XG5cbmxldCBlbXB0eSA9IHsgZnJvbnQgPSBbXTsgYmFjayA9IFtdOyBsZW5ndGggPSAwIH1cbmxldCBlbnF1ZXVlX2Zyb250IHQgeCA9IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggKyAxKSB+ZnJvbnQ6KHggOjogdC5mcm9udCkgfmJhY2s6dC5iYWNrXG5sZXQgZW5xdWV1ZV9iYWNrIHQgeCA9IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggKyAxKSB+YmFjazooeCA6OiB0LmJhY2spIH5mcm9udDp0LmZyb250XG5cbmxldFtAY29sZF0gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpID1cbiAgcmFpc2VfcyBbJXNleHAgXCJCVUc6IEZkZXF1ZTogfGZyb250fCA9IDAsIHxiYWNrfCA+PSAyXCJdXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JhY2tfaW52YXJpYW50ICgpID1cbiAgcmFpc2VfcyBbJXNleHAgXCJCVUc6IEZkZXF1ZTogfGJhY2t8ID0gMCwgfGZyb250fCA+PSAyXCJdXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5iYWNrIHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgeCBdIC0+IHhcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCB4IDo6IF8gLT4geFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2JhY2tfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRyb3BfZnJvbnRfZXhuIHQgPVxuICBtYXRjaCB0LmZyb250IHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+ZnJvbnQ6eHMgfmJhY2s6dC5iYWNrXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5iYWNrIHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgXyBdIC0+IGVtcHR5XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRyb3BfYmFja19leG4gdCA9XG4gIG1hdGNoIHQuYmFjayB3aXRoXG4gIHwgXyA6OiB4cyAtPiBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoIC0gMSkgfmJhY2s6eHMgfmZyb250OnQuZnJvbnRcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmZyb250IHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgXyBdIC0+IGVtcHR5XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IHBlZWtfZnJvbnRfZXhuIHQsIGRyb3BfZnJvbnRfZXhuIHRcbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPSBwZWVrX2JhY2tfZXhuIHQsIGRyb3BfYmFja19leG4gdFxuXG5sZXQgb3B0aW9uYWwgZiB0ID1cbiAgbWF0Y2ggZiB0IHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBFbXB0eSAtPiBOb25lXG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gb3B0aW9uYWwgcGVla19mcm9udF9leG4gdFxubGV0IHBlZWtfYmFjayB0ID0gb3B0aW9uYWwgcGVla19iYWNrX2V4biB0XG5sZXQgZHJvcF9mcm9udCB0ID0gb3B0aW9uYWwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRyb3BfYmFjayB0ID0gb3B0aW9uYWwgZHJvcF9iYWNrX2V4biB0XG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gb3B0aW9uYWwgZGVxdWV1ZV9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFjayB0ID0gb3B0aW9uYWwgZGVxdWV1ZV9iYWNrX2V4biB0XG5cbmxldCBlbnF1ZXVlIHQgc2lkZSB4ID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB4XG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgeFxuOztcblxubGV0IHBlZWsgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnQgdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFjayB0XG47O1xuXG5sZXQgcGVla19leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkcm9wIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgdFxuOztcblxubGV0IGRyb3BfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IHJldiB0ID0geyB0IHdpdGggZnJvbnQgPSB0LmJhY2s7IGJhY2sgPSB0LmZyb250IH1cblxubW9kdWxlIEFyYml0cmFyeV9vcmRlciA9IHN0cnVjdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCB0b19saXN0IHQgPSBMaXN0LnJldl9hcHBlbmQgdC5mcm9udCB0LmJhY2tcbiAgbGV0IHRvX2FycmF5IHQgPSBBcnJheS5vZl9saXN0ICh0b19saXN0IHQpXG4gIGxldCB0b19zZXF1ZW5jZSB0ID0gU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuZnJvbnQpIChTZXF1ZW5jZS5vZl9saXN0IHQuYmFjaylcblxuICBsZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICAgIGxldCBvcGVuIE0gaW5cbiAgICBMaXN0LnN1bSAobW9kdWxlIE0pIHQuZnJvbnQgfmYgKyBMaXN0LnN1bSAobW9kdWxlIE0pIHQuYmFjayB+ZlxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCB0LmZyb250IH5mICsgTGlzdC5jb3VudCB0LmJhY2sgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCB0LmZyb250IH5mICYmIExpc3QuZm9yX2FsbCB0LmJhY2sgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgdC5mcm9udCB+ZiB8fCBMaXN0LmV4aXN0cyB0LmJhY2sgfmZcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gTGlzdC5tZW0gfmVxdWFsIHQuZnJvbnQgeCB8fCBMaXN0Lm1lbSB+ZXF1YWwgdC5iYWNrIHhcblxuICBsZXQgaXRlciB0IH5mID1cbiAgICBMaXN0Lml0ZXIgdC5mcm9udCB+ZjtcbiAgICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgKExpc3QuZm9sZCB0LmZyb250IH5pbml0IH5mIHw+IGZ1biBpbml0IC0+IExpc3QuZm9sZCB0LmJhY2sgfmluaXQgfmYpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kIHQuYmFjayB+ZlxuICAgIHwgc29tZSAtPiBzb21lXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZF9tYXAgdC5mcm9udCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QuZmluZF9tYXAgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID1cbiAgICBtYXRjaCBMaXN0Lm1heF9lbHQgdC5mcm9udCB+Y29tcGFyZSwgTGlzdC5tYXhfZWx0IHQuYmFjayB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lLCBvcHQgfCBvcHQsIE5vbmUgLT4gb3B0XG4gICAgfCAoU29tZSB4IGFzIHNvbWVfeCksIChTb21lIHkgYXMgc29tZV95KSAtPlxuICAgICAgaWYgY29tcGFyZSB4IHkgPj0gMCB0aGVuIHNvbWVfeCBlbHNlIHNvbWVfeVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWluX2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1pbl9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA8PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfY29udGFpbmVyIChGIDogc2lnXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgPSBGLnRvX2xpc3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgKHRvX2xpc3QgdCkgeFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKHRvX2xpc3QgdCkgfmluaXQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBMaXN0LnN1bSBtICh0b19saXN0IHQpIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwICh0b19saXN0IHQpIH5mXG4gIGxldCB0b19hcnJheSB0ID0gTGlzdC50b19hcnJheSAodG9fbGlzdCB0KVxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gTGlzdC5taW5fZWx0ICh0b19saXN0IHQpIH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1heF9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmVuZFxuXG5tb2R1bGUgRnJvbnRfdG9fYmFjayA9IHN0cnVjdFxuICBsZXQgb2ZfbGlzdCBsaXN0ID0gbWFrZSB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBsaXN0KSB+ZnJvbnQ6bGlzdCB+YmFjazpbXVxuICBsZXQgdG9fbGlzdCB0ID0gdC5mcm9udCBAIExpc3QucmV2IHQuYmFja1xuXG4gIGxldCB0b19zZXF1ZW5jZSB0ID1cbiAgICBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHQuYmFjaykpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBsZXQgbGVuZ3RoLCBiYWNrID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQ6W10gfmJhY2tcbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQmFja190b19mcm9udCA9IHN0cnVjdFxuICBsZXQgdG9fbGlzdCB0ID0gdC5iYWNrIEAgTGlzdC5yZXYgdC5mcm9udFxuICBsZXQgb2ZfbGlzdCBsaXN0ID0gbWFrZSB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBsaXN0KSB+YmFjazpsaXN0IH5mcm9udDpbXVxuXG4gIGxldCB0b19zZXF1ZW5jZSB0ID1cbiAgICBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5mcm9udCkpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBsZXQgbGVuZ3RoLCBmcm9udCA9XG4gICAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OigwLCBbXSkgfmY6KGZ1biAobGVuZ3RoLCBhY2MpIGEgLT5cbiAgICAgICAgbGVuZ3RoICsgMSwgYSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYWtlIH5sZW5ndGggfmZyb250IH5iYWNrOltdXG4gIDs7XG5cbiAgaW5jbHVkZSBNYWtlX2NvbnRhaW5lciAoc3RydWN0XG4gICAgICBsZXQgdG9fbGlzdCA9IHRvX2xpc3RcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZSBGcm9udF90b19iYWNrXG5cbmxldCBzaW5nbGV0b24geCA9IG9mX2xpc3QgWyB4IF1cblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBmb2xkIHQgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IGVsdCAtPiBmb2xkIChmIGVsdCkgfmluaXQ6dCB+ZjplbnF1ZXVlX2JhY2spXG4gICAgOztcblxuICAgIGxldCByZXR1cm4gPSBzaW5nbGV0b25cblxuICAgIGxldCBtYXAgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgeyBmcm9udCA9IExpc3QubWFwIHQuZnJvbnQgfmY7IGJhY2sgPSBMaXN0Lm1hcCB0LmJhY2sgfmY7IGxlbmd0aCA9IHQubGVuZ3RoIH0pXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgY29tcGFyZSBjbXAgdDEgdDIgPSBMaXN0LmNvbXBhcmUgY21wICh0b19saXN0IHQxKSAodG9fbGlzdCB0MilcbmxldCBlcXVhbCBlcSB0MSB0MiA9IExpc3QuZXF1YWwgZXEgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxuXG5sZXQgaGFzaF9mb2xkX3QgaGFzaF9mb2xkX2Egc3RhdGUgdCA9XG4gIGZvbGQgfmY6aGFzaF9mb2xkX2EgfmluaXQ6KFslaGFzaF9mb2xkOiBpbnRdIHN0YXRlIChsZW5ndGggdCkpIHRcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFslc2V4cF9vZjogZWx0IGxpc3RdICh0b19saXN0IHQpXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoWyVvZl9zZXhwOiBlbHQgbGlzdF0gc2V4cClcbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBMaXN0LnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IG1hcCA9IG1hcFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgzZjk2OTgyLTQ5OTItMTFlNi05MTlkLWZiZGRjZmRjYTU3NlwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRmRlcXVlXCJcbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG5cbiAgICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgICAgbGV0IHJlYyBsb29wIG5leHQgYWNjIG4gPVxuICAgICAgICAgICAgaWYgbGVuID0gblxuICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBhc3NlcnQgKG4gPSBsZW5ndGggYWNjKTtcbiAgICAgICAgICAgICAgbGV0IHggPSBuZXh0ICgpIGluXG4gICAgICAgICAgICAgIGxvb3AgbmV4dCAoZW5xdWV1ZV9iYWNrIGFjYyB4KSAobiArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBuZXh0IGVtcHR5IDBcbiAgICAgICAgOztcbiAgICAgIGVuZClcblxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gcHJvZHVjZWQgYnkgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSBpc1xuICAgICAgIGFzc3VtZWQgdG8gYmUgc3RhYmxlIChpZiB0aGUgJ2EgaXMgc3RhYmxlKS4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKF8gOiAnYSBTdGFibGVfd2l0bmVzcy50KSA6ICdhIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBidWlsZCB+ZnJvbnQgfmJhY2sgPVxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBmcm9udCArIExpc3QubGVuZ3RoIGJhY2sgaW5cbiAgICBsZXQgdCA9IHsgbGVuZ3RoOyBmcm9udDsgYmFjayB9IGluXG4gICAgaW52YXJpYW50IGlnbm9yZSB0O1xuICAgIHRcbiAgOztcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZy5TdGFibGUuVjEgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5TdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcblxuICAgICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIEZpbGVuYW1lX2Jhc2VcblxuaW5jbHVkZSAoXG4gIFN0cmluZyA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRmRlcXVlXG5cbmxldCBlbnF1ZXVlID0gZW5xdWV1ZV9iYWNrXG5sZXQgcGVla19leG4gPSBwZWVrX2Zyb250X2V4blxubGV0IHBlZWsgPSBwZWVrX2Zyb250XG5sZXQgZGVxdWV1ZV9leG4gPSBkZXF1ZXVlX2Zyb250X2V4blxubGV0IGRlcXVldWUgPSBkZXF1ZXVlX2Zyb250XG5sZXQgZHJvcF9leG4gPSBkcm9wX2Zyb250X2V4blxubGV0IHRvX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay50b19zZXF1ZW5jZVxubGV0IG9mX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay5vZl9zZXF1ZW5jZVxuXG4oKiBEZXByZWNhdGVkIGFsaWFzZXMgKilcbmxldCB0b3AgPSBwZWVrXG5sZXQgdG9wX2V4biA9IHBlZWtfZXhuXG5sZXQgZGlzY2FyZF9leG4gPSBkcm9wX2V4blxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IE5leHRfZml0XG4gICAgICAgIHwgRmlyc3RfZml0XG4gICAgICAgIHwgQmVzdF9maXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIFslJWVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIG1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IG11dGFibGUgdmVyYm9zZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIFslJWVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgICB7IG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgICAgOyBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RkbGliLkdjXG5cbm1vZHVsZSBTdGF0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGJpbl9pbywgc2V4cCwgZmllbGRzXVxuXG4gICAgWyUlZWxzZV1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2YsIGZpZWxkc11cblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgbGV0IGNvbWJpbmUgZmlyc3Qgc2Vjb25kIH5mbG9hdF9mIH5pbnRfZiA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWlub3Jfd29yZHMgc2Vjb25kLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGZsb2F0X2YgZmlyc3QucHJvbW90ZWRfd29yZHMgc2Vjb25kLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWFqb3Jfd29yZHMgc2Vjb25kLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1pbm9yX2NvbGxlY3Rpb25zIHNlY29uZC5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC5oZWFwX3dvcmRzIHNlY29uZC5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGludF9mIGZpcnN0LmhlYXBfY2h1bmtzIHNlY29uZC5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGludF9mIGZpcnN0LmxpdmVfd29yZHMgc2Vjb25kLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gaW50X2YgZmlyc3QubGl2ZV9ibG9ja3Mgc2Vjb25kLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gaW50X2YgZmlyc3QuZnJlZV93b3JkcyBzZWNvbmQuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5mcmVlX2Jsb2NrcyBzZWNvbmQuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGludF9mIGZpcnN0Lmxhcmdlc3RfZnJlZSBzZWNvbmQubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBpbnRfZiBmaXJzdC5mcmFnbWVudHMgc2Vjb25kLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBpbnRfZiBmaXJzdC5jb21wYWN0aW9ucyBzZWNvbmQuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gaW50X2YgZmlyc3QudG9wX2hlYXBfd29yZHMgc2Vjb25kLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gaW50X2YgZmlyc3Quc3RhY2tfc2l6ZSBzZWNvbmQuc3RhY2tfc2l6ZVxuICAgIH1cbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBjb21iaW5lIGZpcnN0IHNlY29uZCB+ZmxvYXRfZiB+aW50X2YgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBmbG9hdF9mIGZpcnN0Lm1pbm9yX3dvcmRzIHNlY29uZC5taW5vcl93b3Jkc1xuICAgIDsgcHJvbW90ZWRfd29yZHMgPSBmbG9hdF9mIGZpcnN0LnByb21vdGVkX3dvcmRzIHNlY29uZC5wcm9tb3RlZF93b3Jkc1xuICAgIDsgbWFqb3Jfd29yZHMgPSBmbG9hdF9mIGZpcnN0Lm1ham9yX3dvcmRzIHNlY29uZC5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5taW5vcl9jb2xsZWN0aW9ucyBzZWNvbmQubWlub3JfY29sbGVjdGlvbnNcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWFqb3JfY29sbGVjdGlvbnMgc2Vjb25kLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgOyBoZWFwX3dvcmRzID0gaW50X2YgZmlyc3QuaGVhcF93b3JkcyBzZWNvbmQuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBpbnRfZiBmaXJzdC5oZWFwX2NodW5rcyBzZWNvbmQuaGVhcF9jaHVua3NcbiAgICA7IGxpdmVfd29yZHMgPSBpbnRfZiBmaXJzdC5saXZlX3dvcmRzIHNlY29uZC5saXZlX3dvcmRzXG4gICAgOyBsaXZlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmxpdmVfYmxvY2tzIHNlY29uZC5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGludF9mIGZpcnN0LmZyZWVfd29yZHMgc2Vjb25kLmZyZWVfd29yZHNcbiAgICA7IGZyZWVfYmxvY2tzID0gaW50X2YgZmlyc3QuZnJlZV9ibG9ja3Mgc2Vjb25kLmZyZWVfYmxvY2tzXG4gICAgOyBsYXJnZXN0X2ZyZWUgPSBpbnRfZiBmaXJzdC5sYXJnZXN0X2ZyZWUgc2Vjb25kLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gaW50X2YgZmlyc3QuZnJhZ21lbnRzIHNlY29uZC5mcmFnbWVudHNcbiAgICA7IGNvbXBhY3Rpb25zID0gaW50X2YgZmlyc3QuY29tcGFjdGlvbnMgc2Vjb25kLmNvbXBhY3Rpb25zXG4gICAgOyB0b3BfaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LnRvcF9oZWFwX3dvcmRzIHNlY29uZC50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGludF9mIGZpcnN0LnN0YWNrX3NpemUgc2Vjb25kLnN0YWNrX3NpemVcbiAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgIGludF9mIGZpcnN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXG4gICAgfVxuICA7O1xuXG4gIFslJWVuZGlmXVxuXG4gIGxldCBhZGQgPSBjb21iaW5lIH5mbG9hdF9mOkZsb2F0LiggKyApIH5pbnRfZjpJbnQuKCArIClcbiAgbGV0IGRpZmYgPSBjb21iaW5lIH5mbG9hdF9mOkZsb2F0LiggLSApIH5pbnRfZjpJbnQuKCAtIClcbmVuZFxuXG5tb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGZpZWxkc11cbiAgZW5kXG5cbiAgWyUlZWxzZV1cblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IHN0YWNrX2xpbWl0IDogaW50XG4gICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSVlbmRpZl1cblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5lbmRcblxubW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5BbGxvY2F0aW9uX3BvbGljeS5WMS50ID1cbiAgICB8IE5leHRfZml0XG4gICAgfCBGaXJzdF9maXRcbiAgICB8IEJlc3RfZml0XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgIHwgTmV4dF9maXQgLT4gMFxuICAgIHwgRmlyc3RfZml0IC0+IDFcbiAgICB8IEJlc3RfZml0IC0+IDJcbiAgOztcbmVuZFxuXG5sZXQgdHVuZVxuICAgICAgP2xvZ2dlclxuICAgICAgP21pbm9yX2hlYXBfc2l6ZVxuICAgICAgP21ham9yX2hlYXBfaW5jcmVtZW50XG4gICAgICA/c3BhY2Vfb3ZlcmhlYWRcbiAgICAgID92ZXJib3NlXG4gICAgICA/bWF4X292ZXJoZWFkXG4gICAgICA/c3RhY2tfbGltaXRcbiAgICAgID9hbGxvY2F0aW9uX3BvbGljeVxuICAgICAgP3dpbmRvd19zaXplXG4gICAgICA/Y3VzdG9tX21ham9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX21heF9zaXplXG4gICAgICAoKVxuICA9XG4gIGxldCBvbGRfY29udHJvbF9wYXJhbXMgPSBnZXQgKCkgaW5cbiAgbGV0IGYgb3B0IHRvX3N0cmluZyBmaWVsZCA9XG4gICAgbGV0IG9sZF92YWx1ZSA9IEZpZWxkLmdldCBmaWVsZCBvbGRfY29udHJvbF9wYXJhbXMgaW5cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICB8IFNvbWUgbmV3X3ZhbHVlIC0+XG4gICAgICBPcHRpb24uaXRlciBsb2dnZXIgfmY6KGZ1biBmIC0+XG4gICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgIGZcbiAgICAgICAgICBcIkdjLkNvbnRyb2wuJXM6ICVzIC0+ICVzXCJcbiAgICAgICAgICAoRmllbGQubmFtZSBmaWVsZClcbiAgICAgICAgICAodG9fc3RyaW5nIG9sZF92YWx1ZSlcbiAgICAgICAgICAodG9fc3RyaW5nIG5ld192YWx1ZSkpO1xuICAgICAgbmV3X3ZhbHVlXG4gIGluXG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9IE9wdGlvbi5tYXAgYWxsb2NhdGlvbl9wb2xpY3kgfmY6QWxsb2NhdGlvbl9wb2xpY3kudG9faW50IGluXG4gIGxldCBuZXdfY29udHJvbF9wYXJhbXMgPVxuICAgIENvbnRyb2wuRmllbGRzLm1hcFxuICAgICAgfm1pbm9yX2hlYXBfc2l6ZTooZiBtaW5vcl9oZWFwX3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5tYWpvcl9oZWFwX2luY3JlbWVudDooZiBtYWpvcl9oZWFwX2luY3JlbWVudCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnNwYWNlX292ZXJoZWFkOihmIHNwYWNlX292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+dmVyYm9zZTooZiB2ZXJib3NlIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWF4X292ZXJoZWFkOihmIG1heF9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnN0YWNrX2xpbWl0OihmIHN0YWNrX2xpbWl0IHN0cmluZ19vZl9pbnQpXG4gICAgICB+YWxsb2NhdGlvbl9wb2xpY3k6KGYgYWxsb2NhdGlvbl9wb2xpY3kgc3RyaW5nX29mX2ludClcbiAgICAgIH53aW5kb3dfc2l6ZTooZiB3aW5kb3dfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9tYWpvcl9yYXRpbzooZiBjdXN0b21fbWFqb3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfcmF0aW86KGYgY3VzdG9tX21pbm9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX21heF9zaXplOihmIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICBpblxuICBzZXQgbmV3X2NvbnRyb2xfcGFyYW1zXG47O1xuXG5sZXQgZGlzYWJsZV9jb21wYWN0aW9uID9sb2dnZXIgfmFsbG9jYXRpb25fcG9saWN5ICgpID1cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID1cbiAgICBtYXRjaCBhbGxvY2F0aW9uX3BvbGljeSB3aXRoXG4gICAgfCBgRG9uJ3RfY2hhbmdlIC0+IE5vbmVcbiAgICB8IGBTZXRfdG8gcG9saWN5IC0+IFNvbWUgcG9saWN5XG4gIGluXG4gICgqIFRoZSB2YWx1ZSAxXzAwMF8wMDAsIGFjY29yZGluZyB0b1xuICAgICBodHRwOi8vY2FtbC5pbnJpYS5mci9wdWIvZG9jcy9tYW51YWwtb2NhbWwtNC4wMi9saWJyZWYvR2MuaHRtbFxuICAgICB3aWxsIGRpc2FibGUgY29tcGFjdGlvbnMuXG4gICopXG4gIHR1bmUgP2xvZ2dlciA/YWxsb2NhdGlvbl9wb2xpY3kgfm1heF9vdmVyaGVhZDoxXzAwMF8wMDAgKClcbjs7XG5cbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgbWFqb3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwcm9tb3RlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3Byb21vdGVkX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1pbm9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb21wYWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2NvbXBhY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX3BsdXNfbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIGFsbG9jYXRlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2FsbG9jYXRlZF93b3Jkc1wiXG5leHRlcm5hbCBydW5fbWVtcHJvZl9jYWxsYmFja3MgOiB1bml0IC0+IHVuaXQgPSBcImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXCJcblxuWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuZXh0ZXJuYWwgaGVhcF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2hlYXBfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaGVhcF9jaHVua3MgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19oZWFwX2NodW5rc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b3BfaGVhcF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3RvcF9oZWFwX3dvcmRzXCIgW0BAbm9hbGxvY11cblxuWyUlZW5kaWZdXG5cbmxldCBzdGF0X3NpemVfbGF6eSA9XG4gIGxhenkgKE9iai5yZWFjaGFibGVfd29yZHMgKE9iai5yZXByIChTdGRsaWIuR2MucXVpY2tfc3RhdCAoKSA6IFN0YXQudCkpKVxuOztcblxubGV0IHN0YXRfc2l6ZSAoKSA9IExhenkuZm9yY2Ugc3RhdF9zaXplX2xhenlcbmxldCB6ZXJvID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoaW50X29mX3N0cmluZyBcIjBcIilcblxuKCogVGhlIGNvbXBpbGVyIHdvbid0IG9wdGltaXplIGludF9vZl9zdHJpbmcgYXdheSBzbyBpdCB3b24ndFxuICAgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGJlbG93LiAqKVxubGV0IHJlYyBrZWVwX2FsaXZlIG8gPSBpZiB6ZXJvIDw+IDAgdGhlbiBrZWVwX2FsaXZlIChTeXMub3BhcXVlX2lkZW50aXR5IG8pXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkaXNhYmxlIGlubGluaW5nIGZvciB0aGlzIGZ1bmN0aW9uIHNvIHRoZSBHQyBzdGF0cyBhbmQgdGhlIGNhbGwgdG8gW2ZdIGFyZSBuZXZlclxuICAgICByZWFycmFuZ2VkLiAqKVxuICBsZXRbQGNvbGRdIG1lYXN1cmVfaW50ZXJuYWwgfm9uX3Jlc3VsdCBmID1cbiAgICBsZXQgbWlub3Jfd29yZHNfYmVmb3JlID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYmVmb3JlID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICAoKiBXZSB3cmFwIFtmICgpXSB3aXRoIFtTeXMub3BhcXVlX2lkZW50aXR5XSB0byBwcmV2ZW50IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiZWluZ1xuICAgICAgIG9wdGltaXplZCBhd2F5LiAqKVxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoZiAoKSkgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWZ0ZXIgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hZnRlciA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9IG1ham9yX3dvcmRzX2FmdGVyIC0gbWFqb3Jfd29yZHNfYmVmb3JlIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9IG1pbm9yX3dvcmRzX2FmdGVyIC0gbWlub3Jfd29yZHNfYmVmb3JlIGluXG4gICAgb25fcmVzdWx0IH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4XG4gIDs7XG5cbiAgbGV0IGlzX3plcm9fYWxsb2MgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgICAoKiBJbnN0ZWFkIG9mIHVzaW5nIFtBbGxvY2F0aW9uX3JlcG9ydC5tZWFzdXJlXSwgYW5kIG1hdGNoaW5nIG9uIHRoZSByZXN1bHQsIHdlIHVzZVxuICAgICAgIHRoaXMgY29uc3RydWN0aW9uLCBpbiBvcmRlciB0byBoYXZlIFtpc196ZXJvX2FsbG9jXSBub3QgYWxsb2NhdGUgaXRzZWxmLiBUaGlzXG4gICAgICAgZW5hYmxlcyBbaXNfemVyb19hbGxvY10gdG8gYmUgdXNlZCBpbiBhIG5lc3RlZCB3YXkuICopXG4gICAgbWVhc3VyZV9pbnRlcm5hbFxuICAgICAgZlxuICAgICAgfm9uX3Jlc3VsdDooZnVuIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB2YWx1ZSAtPlxuICAgICAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgdmFsdWUgOiBhKTtcbiAgICAgICAgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID09IDAgJiYgbWlub3Jfd29yZHNfYWxsb2NhdGVkID09IDApXG4gIDs7XG5cbiAgbW9kdWxlIEFsbG9jYXRpb25fcmVwb3J0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICA7IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9XG4gICAgICB7IG1ham9yX3dvcmRzX2FsbG9jYXRlZDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIH1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWVhc3VyZV9hbGxvY2F0aW9uIGYgPVxuICAgIG1lYXN1cmVfaW50ZXJuYWwgZiB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHggLT5cbiAgICAgIHgsIEFsbG9jYXRpb25fcmVwb3J0LmNyZWF0ZSB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQpXG4gIDs7XG5cbiAgbW9kdWxlIEFsbG9jYXRpb25fbG9nID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgc2l6ZV9pbl93b3JkcyA6IGludFxuICAgICAgOyBpc19tYWpvciA6IGJvb2xcbiAgICAgIDsgYmFja3RyYWNlIDogc3RyaW5nXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTEsIDApXVxuXG4gIGxldCBtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvbiBmID1cbiAgICBsZXQgbG9nIDogQWxsb2NhdGlvbl9sb2cudCBsaXN0IHJlZiA9IHJlZiBbXVxuICAgIGFuZCBtYWpvcl9hbGxvY3MgPSByZWYgMFxuICAgIGFuZCBtaW5vcl9hbGxvY3MgPSByZWYgMCBpblxuICAgIGxldCBvbl9hbGxvYyB+aXNfbWFqb3IgKGluZm8gOiBTdGRsaWIuR2MuTWVtcHJvZi5hbGxvY2F0aW9uKSA9XG4gICAgICBpZiBpc19tYWpvclxuICAgICAgdGhlbiBtYWpvcl9hbGxvY3MgOj0gIW1ham9yX2FsbG9jcyArIGluZm8ubl9zYW1wbGVzXG4gICAgICBlbHNlIG1pbm9yX2FsbG9jcyA6PSAhbWlub3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXM7XG4gICAgICBsZXQgYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGluZm8uY2FsbHN0YWNrIGluXG4gICAgICAoKiBNYWtlIGJhY2t0cmFjZXMgZWFzaWVyIHRvIHJlYWQgYnkgZGVsZXRpbmcgZXZlcnl0aGluZyBiZWxvdyB0aGlzIGZ1bmN0aW9uICopXG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YnN0cl9pbmRleCBiYWNrdHJhY2UgfnBhdHRlcm46XCJtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvblwiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhpcyBjYXNlIGlzIHBvc3NpYmxlOiB3ZSBtYXkgaGF2ZSBsb2dnZWQgYWxsb2NhdGlvbnMgaW4gYW5vdGhlciB0aHJlYWQgKilcbiAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICBTdHJpbmcuc3ViIH5wb3M6MCB+bGVuOnAgYmFja3RyYWNlXG4gICAgICAgICAgfD4gU3RyaW5nLnJzdHJpcCB+ZHJvcDooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgJ1xcbicgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCBpbmZvIDogQWxsb2NhdGlvbl9sb2cudCA9XG4gICAgICAgIHsgc2l6ZV9pbl93b3JkcyA9IGluZm8ubl9zYW1wbGVzOyBpc19tYWpvcjsgYmFja3RyYWNlIH1cbiAgICAgIGluXG4gICAgICBsb2cgOj0gaW5mbyA6OiAhbG9nO1xuICAgICAgTm9uZVxuICAgIGluXG4gICAgbGV0IHRyYWNrZXIgPVxuICAgICAgeyBTdGRsaWIuR2MuTWVtcHJvZi5udWxsX3RyYWNrZXIgd2l0aFxuICAgICAgICBhbGxvY19taW5vciA9IG9uX2FsbG9jIH5pc19tYWpvcjpmYWxzZVxuICAgICAgOyBhbGxvY19tYWpvciA9IG9uX2FsbG9jIH5pc19tYWpvcjp0cnVlXG4gICAgICB9XG4gICAgaW5cbiAgICBTdGRsaWIuR2MuTWVtcHJvZi5zdGFydCB+c2FtcGxpbmdfcmF0ZToxLjAgdHJhY2tlcjtcbiAgICAoKiBFeG4ucHJvdGVjdCwgbWFudWFsbHkgaW5saW5lZCB0byBndWFyYW50ZWUgbm8gYWxsb2NhdGlvbnMgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgICAgfCB4IC0+XG4gICAgICAgICgqIE1lbXByb2Yuc3RvcCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCBhbGwgbWVtcHJvZiBjYWxsYmFja3MgYXJlIHJ1biAoc29tZSBtYXkgYmVcbiAgICAgICAgICAgZGVsYXllZCBpZiB0aGV5IGhhcHBlbmVkIGR1cmluZyBDIGNvZGUgYW5kIHRoZXJlIGhhcyBiZWVuIG5vIGFsbG9jYXRpb24gc2luY2UpLFxuICAgICAgICAgICBzbyB3ZSBleHBsaWN0bHkgZmx1c2ggdGhlbSAqKVxuICAgICAgICBydW5fbWVtcHJvZl9jYWxsYmFja3MgKCk7XG4gICAgICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHhcbiAgICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgcnVuX21lbXByb2ZfY2FsbGJhY2tzICgpO1xuICAgICAgICBTdGRsaWIuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoIHJlc3VsdFxuICAgICwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlXG4gICAgICAgIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQ6IW1ham9yX2FsbG9jc1xuICAgICAgICB+bWlub3Jfd29yZHNfYWxsb2NhdGVkOiFtaW5vcl9hbGxvY3NcbiAgICAsIExpc3QucmV2ICFsb2cgKVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCB4LCByZXBvcnQgPSBtZWFzdXJlX2FsbG9jYXRpb24gZiBpblxuICAgIHgsIHJlcG9ydCwgW11cbiAgOztcblxuICBbJSVlbmRpZl1cbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBhZGRfZmluYWxpemVyIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAoKiBUaGUgdHlwZSBvZiBhZGRfZmluYWxpemVyIGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gICgqIFthZGRfZmluYWxpemVyX2V4bl0gaXMgdGhlIHNhbWUgYXMgW2FkZF9maW5hbGl6ZXJdLiAgSG93ZXZlciwgdGhlaXIgdHlwZXMgaW5cbiAgICAgY29yZV9nYy5tbGkgYXJlIGRpZmZlcmVudCwgYW5kIHRoZSB0eXBlIG9mIFthZGRfZmluYWxpemVyXSBndWFyYW50ZWVzIHRoYXQgaXQgYWx3YXlzXG4gICAgIHJlY2VpdmVzIGEgaGVhcCBibG9jaywgd2hpY2ggZW5zdXJlcyB0aGF0IGl0IHdpbGwgbm90IHJhaXNlLCB3aGlsZVxuICAgICBbYWRkX2ZpbmFsaXplcl9leG5dIGFjY2VwdHMgYW55IHR5cGUsIGFuZCBzbyBtYXkgcmFpc2UuICopXG4gIGxldCBhZGRfZmluYWxpemVyX2V4biB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGFkZF9maW5hbGl6ZXJfbGFzdCB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXJfbGFzdCBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgIGlnbm9yZSAoSGVhcF9ibG9jay5jcmVhdGUgeCA6IF8gSGVhcF9ibG9jay50IG9wdGlvbik7XG4gICAgICAoKiBJZiBbSGVhcF9ibG9jay5jcmVhdGVdIHN1Y2NlZWRzIHRoZW4gW3hdIGlzIHN0YXRpYyBkYXRhIGFuZCBzb1xuICAgICAgICAgd2UgY2FuIHNpbXBseSBkcm9wIHRoZSBmaW5hbGlzZXIuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZV9yZWxlYXNlID0gU3RkbGliLkdjLmZpbmFsaXNlX3JlbGVhc2VcblxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBhbGFybVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfID0gXCI8Z2MgYWxhcm0+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgbGV0IGNyZWF0ZSBmID0gY3JlYXRlX2FsYXJtIChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKVxuICAgIGxldCBkZWxldGUgPSBkZWxldGVfYWxhcm1cbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2VyaWFsaXphYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBob3N0IDogU3RyaW5nLnRcbiAgICAgICAgOyBwb3J0IDogSW50LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2tdXG5cbiAgICAgIGxldCB0b19zZXJpYWxpemFibGUgeyBob3N0OyBwb3J0IH0gPSBob3N0LCBwb3J0XG4gICAgICBsZXQgb2Zfc2VyaWFsaXphYmxlIChob3N0LCBwb3J0KSA9IHsgaG9zdDsgcG9ydCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNlcmlhbGl6YWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFQwXG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU2VyaWFsaXphYmxlLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgdG9fc2VyaWFsaXphYmxlXG4gICAgICA7O1xuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IFNlcmlhbGl6YWJsZS50XTtcbiAgICAgICAgWyVleHBlY3RcbiAgICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDBcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwIHx9XVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG9wZW4hIEltcG9ydFxuICAgICAgb3BlbiEgU3RkX2ludGVybmFsXG4gICAgICBvcGVuISBUMFxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHsgaG9zdDsgcG9ydCB9ID0gc3ByaW50ZiBcIiVzOiVkXCIgaG9zdCBwb3J0XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaG9zdDsgcG9ydCBdIC0+XG4gICAgICAgICAgbGV0IHBvcnQgPVxuICAgICAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgcG9ydCB3aXRoXG4gICAgICAgICAgICB8IF9leG4gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6IGJhZCBwb3J0OiAlc1wiIHMgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHsgaG9zdDsgcG9ydCB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogJXNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwLkF0b20gcyBhcyBzZXhwIC0+XG4gICAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgRmFpbHVyZSBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cClcbiAgICAgICAgfCBzZXhwIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5cbiAgICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgKCogaGFuZGxlcyB0aGUgaG9zdDpwb3J0IHN0cmluZyBjYXNlICopXG4gICAgICAgICAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgICAgICAgIDsgKCogaGFuZGxlcyB0aGUgbGlzdCAoaG9zdCBwb3J0KSBjYXNlICAqKVxuICAgICAgICAgICAgICAgICAgTGlzdCAoQ29ucyAoU3RyaW5nLCBDb25zIChJbnRlZ2VyLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUMSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJ0X29mX3NleHBcIiA9XG4gICAgICBbJXRlc3RfcmVzdWx0OiB0XVxuICAgICAgICAodF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyB7fChsb2NhbGhvc3QgODA4MCl8fSkpXG4gICAgICAgIH5leHBlY3Q6eyBob3N0ID0gXCJsb2NhbGhvc3RcIjsgcG9ydCA9IDgwODAgfTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8bG9jYWxob3N0OjgwODB8fSkpXG4gICAgICAgIH5leHBlY3Q6eyBob3N0ID0gXCJsb2NhbGhvc3RcIjsgcG9ydCA9IDgwODAgfVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwic2V4cCByb3VuZHRyaXBcIiA9XG4gICAgICBRdWlja2NoZWNrLnRlc3QgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogdF0gfmY6KGZ1biB0IC0+XG4gICAgICAgIFsldGVzdF9yZXN1bHQ6IHRdICh0X29mX3NleHAgKHNleHBfb2ZfdCB0KSkgfmV4cGVjdDp0KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcbmVuZFxuXG5pbmNsdWRlIExhdGVzdFxuXG5sZXQgY3JlYXRlIH5ob3N0IH5wb3J0ID0geyBob3N0OyBwb3J0IH1cbmxldCBob3N0IHQgPSB0Lmhvc3RcbmxldCBwb3J0IHQgPSB0LnBvcnRcbmxldCB0dXBsZSB0ID0gdG9fc2VyaWFsaXphYmxlIHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuSG9zdF9hbmRfcG9ydFwiXG4gIGVuZClcblxuaW5jbHVkZSAoSGFzaGFibGUuTWFrZV9iaW5hYmxlIChMYXRlc3QpIDogSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKExhdGVzdClcblxubGV0IHR5cGVfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIkhvc3RfYW5kX3BvcnRcIiBzZXhwX29mX3RcbiIsIm9wZW4gU3RhYmxlX21vZHVsZV90eXBlc1xubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGUuU3RhYmxlXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzAgd2l0aCB0eXBlIHQgPSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUMiA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDJcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUuVjEgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlLlYyIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlYxLk1ha2UgKFQxKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAnYSB0IC0+ICdhIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTEuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTEuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICgnYTEsICdhMikgdCAtPiBmMTooJ2ExIC0+ICdiMSkgLT4gZjI6KCdhMiAtPiAnYjIpIC0+ICgnYjEsICdiMikgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUyLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTIuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUyLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTIuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUzLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTMuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUzLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTMuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0LlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0LlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQxLlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzICh0eXBlIGEpIDogYSBTdGFibGVfd2l0bmVzcy50IC0+IGEgTS50IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBmdW4gd2l0bmVzcyAtPlxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMSAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQxLlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzICh0eXBlIGEpIDogYSBTdGFibGVfd2l0bmVzcy50IC0+IGEgTS50IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBmdW4gd2l0bmVzcyAtPlxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMSAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDIuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3Mgd2l0bmVzcyA9XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUyIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDIuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3Mgd2l0bmVzcyA9XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUyIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMzIHdpdGggdHlwZSAoJ2ExLCAnYTIsICdhMykgdCA9ICgnYTEsICdhMiwgJ2EzKSBNLnQgPVxuICAgIHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0My5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTMgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMzIHdpdGggdHlwZSAoJ2ExLCAnYTIsICdhMykgdCA9ICgnYTEsICdhMiwgJ2EzKSBNLnQgPVxuICAgIHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0My5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTMgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29udGFpbmVycyA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgZXhjZXB0aW9uIFBpZF9tdXN0X2JlX3Bvc2l0aXZlIG9mIEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgZW5zdXJlIGkgPSBpZiBpIDw9IDAgdGhlbiByYWlzZSAoUGlkX211c3RfYmVfcG9zaXRpdmUgaSkgZWxzZSBpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChXaXRob3V0X2NvbnRhaW5lcnMpXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbnRhaW5lcnNcbiAgZW5kXG5cbiAgbW9kdWxlIExhdGVzdCA9IFYxXG5lbmRcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWJsZS5MYXRlc3QuV2l0aG91dF9jb250YWluZXJzXG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoXVxuXG5sZXQgb2ZfaW50IGkgPSBlbnN1cmUgaVxubGV0IHRvX2ludCA9IEZuLmlkXG5sZXQgb2Zfc3RyaW5nIHN0cmluZyA9IGVuc3VyZSAoSW50Lm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xubGV0IGluaXQgPSBvZl9pbnQgMVxuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKEludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgb2ZfcXVpY2tjaGVja2FibGUgbiA9IE9wdGlvbi5zb21lX2lmIChuID4gMCkgblxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9faW50XG4gICAgZW5kKVxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlBpZFwiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlF1ZXVlXG5cbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5NYWtlMV9hbmRfdGVzdCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSBhID1cbiAgICAgICAgbGV0IHIgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgKCogV2UgZW5xdWV1ZSBldmVyeXRoaW5nIHR3aWNlLCBhbmQgZGVxdWV1ZSBpdCBvbmNlIHRvIGVuc3VyZTpcbiAgICAgICAgICAgLSB0aGF0IHRoZSBxdWV1ZSBoYXMgdGhlIHNhbWUgY29udGVudCBhcyB0aGUgYXJyYXkuXG4gICAgICAgICAgIC0gdGhhdCBpdCBoYXMsIGluIG1vc3QgY2FzZXMsIGFuIGludGVyZXN0aW5nIGludGVybmFsIHN0cnVjdHVyZSopXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV9leG4gciA6IGJvb2wpO1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICByXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBTZXJpYWxpemF0aW9uX3YxID0gc3RydWN0XG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjRjODQyNTQtNDk5Mi0xMWU2LTliYTctNzM0ZTE1NDAyN2JkXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlF1ZXVlXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9IGluaXQgbGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKVxuICAgIGVuZClcblxuICBsZXQgc3RhYmxlX3dpdG5lc3MgKF8gOiAnYSBTdGFibGVfd2l0bmVzcy50KSA6ICdhIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgKCogU2VyaWFsaXphdGlvbl92MSBkZWZpbmVzIGEgc3RhYmxlIHNlcmlhbGl6YXRpb24gKilcbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgU2VyaWFsaXphdGlvbl92MVxuXG4gICAgKCogV2UgZG9uJ3QgaGF2ZSBhIFslYmluX2RpZ2VzdF0gZXhwZWN0IHRlc3QgaGVyZSBiZWNhdXNlIHRoZSBiaW5faW8gaXMgbW9zdGx5IGhhbmRcbiAgICAgICB3cml0dGVuLCBhbmQgW2NvcmVfcXVldWVfdW5pdF90ZXN0cy5tbF0gaGFzIHVuaXQgdGVzdHMgZm9yIHNwZWNpZmljIHZhbHVlcy4gKilcblxuICAgIGxldCBtYXAgPSBtYXBcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBVbml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0Lk1ha2VcblxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aG91dF9jb21wYXJhdG9yID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSB0eXBlIFN0YWJsZTEgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlMyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTQgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlM0XG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG5tb2R1bGUgdHlwZSBTdGFibGVfaW50NjNhYmxlX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9pbnQ2M2FibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG5cbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3Jfd2l0aF93aXRuZXNzID1cbiAgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxuXG5tb2R1bGUgdHlwZSBTdGFibGUxX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMVxubW9kdWxlIHR5cGUgU3RhYmxlMl93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzJcbm1vZHVsZSB0eXBlIFN0YWJsZTNfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMzXG5tb2R1bGUgdHlwZSBTdGFibGU0X3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TNFxuXG5tb2R1bGUgTWFrZV9zdGFibGUgPSBNYWtlX3N0YWJsZVxuaW5jbHVkZSBTdGFibGVfaW50ZXJuYWxcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlLlN0YWJsZVxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZy5TdGFibGVcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcbm1vZHVsZSBCbGFuZyA9IEJsYW5nLlN0YWJsZVxubW9kdWxlIEJvb2wgPSBCb29sLlN0YWJsZVxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzLlN0YWJsZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgRGF0ZSA9IERhdGUuU3RhYmxlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vlay5TdGFibGVcbm1vZHVsZSBNZDUgPSBNZDUuU3RhYmxlXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyLlN0YWJsZVxubW9kdWxlIEVycm9yID0gRXJyb3IuU3RhYmxlXG5tb2R1bGUgRmRlcXVlID0gRmRlcXVlLlN0YWJsZVxubW9kdWxlIEZpbGVuYW1lID0gRmlsZW5hbWUuU3RhYmxlXG5tb2R1bGUgRmxvYXQgPSBGbG9hdC5TdGFibGVcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24uU3RhYmxlXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlLlN0YWJsZVxubW9kdWxlIEdjID0gR2MuU3RhYmxlXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnQuU3RhYmxlXG5tb2R1bGUgSW5mbyA9IEluZm8uU3RhYmxlXG5tb2R1bGUgSW50ID0gSW50LlN0YWJsZVxubW9kdWxlIEludDYzID0gSW50NjMuU3RhYmxlXG5tb2R1bGUgTGF6eSA9IExhenkuU3RhYmxlXG5tb2R1bGUgTGlzdCA9IExpc3QuU3RhYmxlXG5tb2R1bGUgTWFwID0gTWFwLlN0YWJsZVxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmQuU3RhYmxlXG5tb2R1bGUgTW9udGggPSBNb250aC5TdGFibGVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZy5TdGFibGVcbm1vZHVsZSBPcHRpb24gPSBPcHRpb24uU3RhYmxlXG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvci5TdGFibGVcbm1vZHVsZSBQZXJjZW50ID0gUGVyY2VudC5TdGFibGVcbm1vZHVsZSBQZXJtcyA9IFBlcm1zLlN0YWJsZVxubW9kdWxlIFBpZCA9IFBpZC5TdGFibGVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlLlN0YWJsZVxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdC5TdGFibGVcbm1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlXG5tb2R1bGUgU2V4cCA9IFNleHAuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZVxubW9kdWxlIFN0cmluZyA9IFN0cmluZy5TdGFibGVcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWQuU3RhYmxlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnMuU3RhYmxlXG5cbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdC5TdGFibGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMV0gVXNlIFtUaW1lX2Zsb2F0XSBvciBbVGltZV9mbG9hdF91bml4XSBpbnN0ZWFkXCJdXG5cbm1vZHVsZSBUaW1lX2Zsb2F0ID0gVGltZV9mbG9hdC5TdGFibGVcbm1vZHVsZSBVbml0ID0gVW5pdC5TdGFibGVcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ29yZV91bml4LlN0YWJsZV1cIl1cbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5cbmluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5HbG9iYWxpemVcbmluY2x1ZGUgSW1wb3J0Lk5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuICBJbnQgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxubGV0IG9mX2NhbWxfaW50IHQgPSB0XG5sZXQgdG9fY2FtbF9pbnQgdCA9IHRcblxudHlwZSBzeXNfYmVoYXZpb3IgPVxuICBbIGBDb250aW51ZSAoKiogQ29udGludWUgdGhlIHByb2Nlc3MgaWYgaXQgaXMgY3VycmVudGx5IHN0b3BwZWQgKilcbiAgfCBgRHVtcF9jb3JlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgYW5kIGR1bXAgY29yZSAqKVxuICB8IGBJZ25vcmUgKCoqIElnbm9yZSB0aGUgc2lnbmFsICopXG4gIHwgYFN0b3AgKCoqIFN0b3AgdGhlIHByb2Nlc3MgKilcbiAgfCBgVGVybWluYXRlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKilcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGVxdWFsICh0IDogdCkgdCcgPSB0ID0gdCdcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogUGxlYXNlIGtlZXAgaW4gc3luYyB3aXRoIHRoZSBsaXN0IGZvciB0b19zdHJpbmcvc3lzX2JlaGF2aW9yICopXG4gIG9wZW4gU3RkbGliLlN5c1xuXG4gIGxldCBhYnJ0ID0gc2lnYWJydFxuICBsZXQgYWxybSA9IHNpZ2Fscm1cbiAgbGV0IGJ1cyA9IHNpZ2J1c1xuICBsZXQgY2hsZCA9IHNpZ2NobGRcbiAgbGV0IGNvbnQgPSBzaWdjb250XG4gIGxldCBmcGUgPSBzaWdmcGVcbiAgbGV0IGh1cCA9IHNpZ2h1cFxuICBsZXQgaWxsID0gc2lnaWxsXG4gIGxldCBpbnQgPSBzaWdpbnRcbiAgbGV0IGtpbGwgPSBzaWdraWxsXG4gIGxldCBwaXBlID0gc2lncGlwZVxuICBsZXQgcG9sbCA9IHNpZ3BvbGxcbiAgbGV0IHByb2YgPSBzaWdwcm9mXG4gIGxldCBxdWl0ID0gc2lncXVpdFxuICBsZXQgc2VndiA9IHNpZ3NlZ3ZcbiAgbGV0IHN0b3AgPSBzaWdzdG9wXG4gIGxldCBzeXMgPSBzaWdzeXNcbiAgbGV0IHRlcm0gPSBzaWd0ZXJtXG4gIGxldCB0cmFwID0gc2lndHJhcFxuICBsZXQgdHN0cCA9IHNpZ3RzdHBcbiAgbGV0IHR0aW4gPSBzaWd0dGluXG4gIGxldCB0dG91ID0gc2lndHRvdVxuICBsZXQgdXJnID0gc2lndXJnXG4gIGxldCB1c3IxID0gc2lndXNyMVxuICBsZXQgdXNyMiA9IHNpZ3VzcjJcbiAgbGV0IHZ0YWxybSA9IHNpZ3Z0YWxybVxuICBsZXQgeGNwdSA9IHNpZ3hjcHVcbiAgbGV0IHhmc3ogPSBzaWd4ZnN6XG4gIGxldCB6ZXJvID0gMFxuZW5kXG5cbmV4Y2VwdGlvbiBJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yID1cbiAgbGV0IGtub3duID1cbiAgICBbXG4gICAgICBcInNpZ2FicnRcIiwgYWJydCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdhbHJtXCIsIGFscm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnYnVzXCIsIGJ1cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWdjaGxkXCIsIGNobGQsIGBJZ25vcmUsIDFcbiAgICA7IFwic2lnY29udFwiLCBjb250LCBgQ29udGludWUsIDFcbiAgICA7IFwic2lnZnBlXCIsIGZwZSwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdodXBcIiwgaHVwLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2lsbFwiLCBpbGwsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnaW50XCIsIGludCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdraWxsXCIsIGtpbGwsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncGlwZVwiLCBwaXBlLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3BvbGxcIiwgcG9sbCwgYFRlcm1pbmF0ZSwgMlxuICAgIDsgXCJzaWdwcm9mXCIsIHByb2YsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncXVpdFwiLCBxdWl0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3NlZ3ZcIiwgc2VndiwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdzdG9wXCIsIHN0b3AsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3N5c1wiLCBzeXMsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lndGVybVwiLCB0ZXJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3RyYXBcIiwgdHJhcCwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0c3RwXCIsIHRzdHAsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3R0aW5cIiwgdHRpbiwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRvdVwiLCB0dG91LCBgU3RvcCwgMVxuICAgIDsgXCJzaWd1cmdcIiwgdXJnLCBgSWdub3JlLCAyXG4gICAgOyBcInNpZ3VzcjFcIiwgdXNyMSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd1c3IyXCIsIHVzcjIsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndnRhbHJtXCIsIHZ0YWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd4Y3B1XCIsIHhjcHUsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lneGZzelwiLCB4ZnN6LCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3plcm9cIiwgemVybywgYElnbm9yZSwgMVxuICAgIF1cbiAgaW5cbiAgbGV0IG5hbWVfYW5kX3ZlcnNpb25fYnlfdCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBsZXQgdF9ieV9uYW1lID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCBiZWhhdmlvcl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIExpc3QuaXRlciBrbm93biB+ZjooZnVuIChuYW1lLCB0LCBiZWhhdmlvciwgc3RhYmxlX3ZlcnNpb24pIC0+XG4gICAgSGFzaHRibC5zZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90IH5rZXk6dCB+ZGF0YToobmFtZSwgc3RhYmxlX3ZlcnNpb24pO1xuICAgIEhhc2h0Ymwuc2V0IHRfYnlfbmFtZSB+a2V5Om5hbWUgfmRhdGE6dDtcbiAgICBIYXNodGJsLnNldCBiZWhhdmlvcl9ieV90IH5rZXk6dCB+ZGF0YTpiZWhhdmlvcik7XG4gICgqIEZvciB1bmtub3duIHNpZ25hbCBudW1iZXJzLCBbdG9fc3RyaW5nXSByZXR1cm5zIGEgbWVhbmluZ2Z1bFxuICAgICBzdHJpbmcsIHdoaWxlIFtkZWZhdWx0X3N5c19iZWhhdmlvcl0gaGFzIHRvIHJhaXNlIGFuIGV4Y2VwdGlvblxuICAgICBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcmlnaHQgYW5zd2VyIGlzLiAqKVxuICBsZXQgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOnJlcXVlc3RlZF92ZXJzaW9uID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgbmFtZV9hbmRfdmVyc2lvbl9ieV90IHQgd2l0aFxuICAgIHwgU29tZSAoc3RyaW5nLCBuZWVkZWRfdmVyc2lvbikgd2hlbiByZXF1ZXN0ZWRfdmVyc2lvbiA+PSBuZWVkZWRfdmVyc2lvbiAtPiBzdHJpbmdcbiAgICB8IF8gLT4gXCI8dW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQgXiBcIj5cIlxuICBpblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBzID0gU3RyaW5nLmxvd2VyY2FzZSAoU3RyaW5nLnN0cmlwIHMpIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRfYnlfbmFtZSBzIHdpdGhcbiAgICB8IFNvbWUgc24gLT4gc25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OlwiPHVua25vd24gc2lnbmFsIFwiXG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgKFN0cmluZy5zbGljZSBzIDE2IH4tMSkgd2l0aFxuICAgICAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBzKSlcbiAgICAgIGVsc2UgcmFpc2UgKEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBzKVxuICBpblxuICBsZXQgZGVmYXVsdF9zeXNfYmVoYXZpb3IgdCA9XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIGJlaGF2aW9yX2J5X3QgdCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoSW52YWxpZF9hcmd1bWVudFxuICAgICAgICAgICAoXCJTaWduYWwuZGVmYXVsdF9zeXNfYmVoYXZpb3I6IHVua25vd24gc2lnbmFsIFwiIF4gSW50LnRvX3N0cmluZyB0KSlcbiAgICB8IFNvbWUgYmVoYXZpb3IgLT4gYmVoYXZpb3JcbiAgaW5cbiAgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiwgb2Zfc3RyaW5nLCBkZWZhdWx0X3N5c19iZWhhdmlvclxuOztcblxuZXhjZXB0aW9uIEV4cGVjdGVkX2F0b20gb2YgU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb24gPSBTZXhwLkF0b20gKHRvX3N0cmluZ193aXRoX3ZlcnNpb24gdCB+dmVyc2lvbilcbmxldCB0b19zdHJpbmcgcyA9IHRvX3N0cmluZ193aXRoX3ZlcnNpb24gcyB+dmVyc2lvbjoyXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MlxuXG5sZXQgdF9vZl9zZXhwIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICB8IF8gLT4gcmFpc2UgKEV4cGVjdGVkX2F0b20gcylcbjs7XG5cbnR5cGUgcGlkX3NwZWMgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxudHlwZSBzaWdwcm9jbWFza19jb21tYW5kID0gWyBgVXNlX1NpZ25hbF91bml4IF1cblxubGV0IGNhbl9zZW5kX3RvID0gYFVzZV9TaWduYWxfdW5peFxubGV0IG9mX3N5c3RlbV9pbnQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kX2V4biA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kX2kgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2V4cF9vZl9waWRfc3BlYyA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdwZW5kaW5nID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3Byb2NtYXNrID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3N1c3BlbmQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgdG9fc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICB0eXBlIGJlaGF2aW9yID1cbiAgICBbIGBEZWZhdWx0XG4gICAgfCBgSWdub3JlXG4gICAgfCBgSGFuZGxlIG9mIHQgLT4gdW5pdFxuICAgIF1cblxuICBtb2R1bGUgQmVoYXZpb3IgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IFN0ZGxpYi5TeXMuU2lnbmFsX2RlZmF1bHQgLT4gYERlZmF1bHRcbiAgICAgIHwgU2lnbmFsX2lnbm9yZSAtPiBgSWdub3JlXG4gICAgICB8IFNpZ25hbF9oYW5kbGUgZiAtPiBgSGFuZGxlIGZcbiAgICA7O1xuXG4gICAgbGV0IHRvX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBgRGVmYXVsdCAtPiBTdGRsaWIuU3lzLlNpZ25hbF9kZWZhdWx0XG4gICAgICB8IGBJZ25vcmUgLT4gU2lnbmFsX2lnbm9yZVxuICAgICAgfCBgSGFuZGxlIGYgLT4gU2lnbmFsX2hhbmRsZSAoZnVuIHQgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNpZ25hbCB0IGJlaGF2aW9yID1cbiAgICBCZWhhdmlvci5vZl9jYW1sIChTdGRsaWIuU3lzLnNpZ25hbCB0IChCZWhhdmlvci50b19jYW1sIGJlaGF2aW9yKSlcbiAgOztcblxuICBsZXQgc2V0IHQgYmVoYXZpb3IgPSBpZ25vcmUgKHNpZ25hbCB0IGJlaGF2aW9yIDogYmVoYXZpb3IpXG4gIGxldCBoYW5kbGUgdCBmID0gc2V0IHQgKGBIYW5kbGUgZilcbmVuZFxuXG5vcGVuIEV4cGVydFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgdCA9IHNldCB0IGBEZWZhdWx0XG5sZXQgaWdub3JlIHQgPSBzZXQgdCBgSWdub3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBCYXNlLlNpZ25fb3JfbmFuXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbl9vcl9uYW4udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgICAgfCBOYW5cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnbl9vcl9uYW5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbl9vcl9uYW4pIChTdGFibGUuVjEpXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHZhbHVlIDogJ2EgT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtAY29tcGFyZS5pZ25vcmVdIFtAZXF1YWwuaWdub3JlXVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBmaWVsZHNdXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgICBsZXQgb2ZfZm9ybWF0ICh2MSA6ICdhIEZvcm1hdC50KSA6ICdhIHQgPSB7IHZhbHVlID0gIXYxOyBzZXRfYXQgPSBbJWhlcmVdIH1cbiAgICAgIGxldCB0b19mb3JtYXQgKHQgOiAnYSB0KSA6ICdhIEZvcm1hdC50ID0gcmVmIHQudmFsdWVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlXG4gICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVW5zdGFibGUgPSBTdGFibGUuVjFcbm9wZW4gU3RhYmxlLlRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbF1cblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgeyB2YWx1ZTsgc2V0X2F0IH0gPVxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiBbJW1lc3NhZ2UgXCJ1bnNldFwiXVxuICB8IFNvbWUgdmFsdWUgLT5cbiAgICBbJW1lc3NhZ2UgXCJcIiAodmFsdWUgOiBhKSB+c2V0X2F0OihzZXRfYXQgfD4gU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nKV1cbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuOztcblxubGV0IGNyZWF0ZSAoKSA9IHsgdmFsdWUgPSBOb25lOyBzZXRfYXQgPSBbJWhlcmVdIH1cblxubGV0IHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWUgPVxuICB0LnZhbHVlIDwtIFNvbWUgdmFsdWU7XG4gIHQuc2V0X2F0IDwtIGhlcmVcbjs7XG5cbmxldCBzZXRfaWZfbm9uZSB0IGhlcmUgdmFsdWUgPSBpZiBPcHRpb24uaXNfbm9uZSB0LnZhbHVlIHRoZW4gc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZVxuXG5sZXQgc2V0IHQgaGVyZSB2YWx1ZSA9XG4gIGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWVcbiAgdGhlbiAoXG4gICAgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZTtcbiAgICBPayAoKSlcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTZXRfb25jZS5zZXRfZXhuXSBhbHJlYWR5IHNldFwiXG4gICAgICAgICAgfnNldHRpbmdfYXQ6KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KVxuICAgICAgICAgIH5wcmV2aW91c2x5X3NldF9hdDoodC5zZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBzZXRfZXhuIHQgaGVyZSB2YWx1ZSA9IE9yX2Vycm9yLm9rX2V4biAoc2V0IHQgaGVyZSB2YWx1ZSlcbmxldCBnZXQgdCA9IHQudmFsdWVcblxubGV0IGdldF9leG4gKHQgOiBfIHQpIGhlcmUgPVxuICBtYXRjaCB0LnZhbHVlIHdpdGhcbiAgfCBTb21lIGEgLT4gYVxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIltTZXRfb25jZS5nZXRfZXhuXSB1bnNldFwiIH5hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IGlzX25vbmUgdCA9IE9wdGlvbi5pc19ub25lIHQudmFsdWVcbmxldCBpc19zb21lIHQgPSBPcHRpb24uaXNfc29tZSB0LnZhbHVlXG5sZXQgaXRlciB0IH5mID0gT3B0aW9uLml0ZXIgdC52YWx1ZSB+ZlxuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlIHQgPSBnZXRfZXhuIHQgWyVoZXJlXVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCB0b19zdHJpbmcgXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5fdG9fc3RyaW5nX2luc3RlYWRcbmxldCBwcmludCBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IGNhdGNoIF8gXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5faGFuZGxlX3VuY2F1Z2h0X2luc3RlYWRcbmxldCBwcmludF9iYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMucHJpbnRfYmFja3RyYWNlXG5sZXQgZ2V0X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfYmFja3RyYWNlXG5sZXQgcmVjb3JkX2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG5sZXQgYmFja3RyYWNlX3N0YXR1cyA9IFN0ZGxpYi5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25fYXJyYXlcblxuaW5jbHVkZVxuICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkxhenl9W0Jhc2UuTGF6eV19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgQmFzZS5MYXp5LnRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0ICgqKiBAaW5saW5lICopXG5cbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgY29tcGFyZSA9XG4gIFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG5cbmxldCBjb21wYXJlIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPj0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgZXF1YWwgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtaW4gXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtYXggXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxudHlwZSAoJ2EsICdiKSBmbiA9ICdhIC0+ICdiXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJ2YWwgb2YgJ2FcbiAgICB8IEV4cHQgb2YgZXhuXG5cbiAgbGV0IHJldHVybiA9IGZ1bmN0aW9uXG4gICAgfCBSdmFsIHYgLT4gdlxuICAgIHwgRXhwdCBlIC0+IHJhaXNlIGVcbiAgOztcblxuICBsZXQgY2FwdHVyZSBmIHggPVxuICAgIHRyeSBSdmFsIChmIHgpIHdpdGhcbiAgICB8IGUgLT4gRXhwdCBlXG4gIDs7XG5lbmRcblxubGV0IHVuaXQgZiA9XG4gIGxldCBsID0gTGF6eS5mcm9tX2Z1biBmIGluXG4gIGZ1biAoKSAtPiBMYXp5LmZvcmNlIGxcbjs7XG5cbmxldCB1bmJvdW5kZWQgKHR5cGUgYSkgPyhoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUucG9seSkgZiA9XG4gIGxldCBjYWNoZSA9XG4gICAgbGV0IG1vZHVsZSBBID1cbiAgICAgIEhhc2hhYmxlLk1ha2VfcGxhaW5fYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICAgIGVuZClcbiAgICBpblxuICAgIEEuVGFibGUuY3JlYXRlICgpIH5zaXplOjBcbiAgaW5cbiAgKCogQWxsb2NhdGUgdGhpcyBjbG9zdXJlIGF0IHRoZSBjYWxsIHRvIFt1bmJvdW5kZWRdLCBub3QgYXQgZWFjaCBjYWxsIHRvIHRoZSBtZW1vaXplZFxuICAgICBmdW5jdGlvbi4gKilcbiAgbGV0IHJlYWxseV9jYWxsX2YgYXJnID0gUmVzdWx0LmNhcHR1cmUgZiBhcmcgaW5cbiAgZnVuIGFyZyAtPiBSZXN1bHQucmV0dXJuIChIYXNodGJsLmZpbmRpX29yX2FkZCBjYWNoZSBhcmcgfmRlZmF1bHQ6cmVhbGx5X2NhbGxfZilcbjs7XG5cbigqIHRoZSBzYW1lIGJ1dCB3aXRoIGEgYm91bmQgb24gY2FjaGUgc2l6ZSAqKVxubGV0IGxydSAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSB+bWF4X2NhY2hlX3NpemUgZiA9XG4gIGlmIG1heF9jYWNoZV9zaXplIDw9IDBcbiAgdGhlbiBmYWlsd2l0aGYgXCJNZW1vLmxydTogbWF4X2NhY2hlX3NpemUgb2YgJWkgPD0gMFwiIG1heF9jYWNoZV9zaXplICgpO1xuICBsZXQgbW9kdWxlIENhY2hlID1cbiAgICBIYXNoX3F1ZXVlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICBlbmQpXG4gIGluXG4gIGxldCBjYWNoZSA9IENhY2hlLmNyZWF0ZSAoKSBpblxuICBmdW4gYXJnIC0+XG4gICAgUmVzdWx0LnJldHVyblxuICAgICAgKG1hdGNoIENhY2hlLmxvb2t1cF9hbmRfbW92ZV90b19iYWNrIGNhY2hlIGFyZyB3aXRoXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCByZXN1bHQgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICAgICAgICAgQ2FjaGUuZW5xdWV1ZV9iYWNrX2V4biBjYWNoZSBhcmcgcmVzdWx0O1xuICAgICAgICAgKCogZWplY3QgbGVhc3QgcmVjZW50bHkgdXNlZCBjYWNoZSBlbnRyeSAqKVxuICAgICAgICAgaWYgQ2FjaGUubGVuZ3RoIGNhY2hlID4gbWF4X2NhY2hlX3NpemVcbiAgICAgICAgIHRoZW4gaWdub3JlIChDYWNoZS5kZXF1ZXVlX2Zyb250X2V4biBjYWNoZSA6IF8gUmVzdWx0LnQpO1xuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IGdlbmVyYWwgP2hhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGYgPVxuICBtYXRjaCBjYWNoZV9zaXplX2JvdW5kIHdpdGhcbiAgfCBOb25lIC0+IHVuYm91bmRlZCA/aGFzaGFibGUgZlxuICB8IFNvbWUgbiAtPiBscnUgP2hhc2hhYmxlIH5tYXhfY2FjaGVfc2l6ZTpuIGZcbjs7XG5cbigqIFdlIGV4cGVjdCBbZl9vbmVzdGVwXSB0byBiZSBhIG9uZS1zdGVwIHVucm9sbGVkIHJlY3Vyc2l2ZSBmdW5jdGlvbjsgc2VlIHRoZSBtbGkuIEhlbmNlLFxuICAgaGVyZSB3ZSBjcmVhdGUgdGhlIG1lbW9pemVkIGZ1bmN0aW9uIF9hbmRfIHBhc3MgaXQgdG8gW2Zfb25lc3RlcF0gdG8gYmUgdXNlZCBmb3JcbiAgIHJlY3Vyc2l2ZSBjYWxscy5cblxuICAgTm90ZSB0aGF0IHdlIGltbWVkaWF0ZWx5IGFwcGx5IFtmX29uZXN0ZXBdIHRvIGl0cyBmaXJzdCBhcmd1bWVudCBoZXJlIHNvIHRoYXQgYW55XG4gICBwcmVjb21wdXRhdGlvbiBpcyBwZXJmb3JtZWQgd2hlbiB0aGUgdXNlciBjYWxscyBbcmVjdXJzaXZlXS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaWYgc29tZW9uZSB3cml0ZXMgdGhpcyBub24tbWVtb2l6ZWQgY29kZTpcblxuICAgWyBsZXQgcmVjIGYgPSBsZXQgZGF0YSA9IGNvbXB1dGVfd2l0aG91dF91c2luZ19mICgpIGluIGZ1biB4IC0+IC4uLiBmIC4uLiBdXG5cbiAgIGFuZCBjb252ZXJ0cyB0byBtZW1vaXphdGlvbiBieSBkb2luZzpcblxuICAge1tcbiAgICAgbGV0IGYgPVxuICAgICAgIGxldCBmX29uZXN0ZXAgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIGluXG4gICAgICAgcmVjdXJzaXZlIGZfb25lc3RlcFxuICAgXX1cblxuICAgd2Ugd2FudCB0byBjb21wdXRlIFtkYXRhXSBpbW1lZGlhdGVseS4gSWYgd2UgaGFkIFtmdW4geCAtPiBmX29uZXN0ZXAgKGZvcmNlIG1lbW9pemVkKVxuICAgeF0gYmVsb3csIHdlJ2QgcmVjb21wdXRlIFtkYXRhXSBlYWNoIHRpbWUgdGhlIHVzZXIgY2FsbHMgW2ZdIG9uIGFuIGFyZ3VtZW50IHRoYXQgaGFkbid0XG4gICB5ZXQgYmVlbiBtZW1vaXplZC4gKilcbmxldCByZWN1cnNpdmUgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGZfb25lc3RlcCA9XG4gIGxldCByZWMgbWVtb2l6ZWQgPVxuICAgIGxhenkgKGdlbmVyYWwgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIChmX29uZXN0ZXAgKGZ1biB4IC0+IChmb3JjZSBtZW1vaXplZCkgeCkpKVxuICBpblxuICBmb3JjZSBtZW1vaXplZFxuOztcblxubGV0IG9mX2NvbXBhcmFibGUgKHR5cGUgaW5kZXgpIChtb2R1bGUgTSA6IENvbXBhcmFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGluZGV4KSBmID1cbiAgbGV0IG0gPSByZWYgTS5NYXAuZW1wdHkgaW5cbiAgZnVuICh4IDogTS50KSAtPlxuICAgIGxldCB2ID1cbiAgICAgIG1hdGNoIE1hcC5maW5kICFtIHggd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCB2ID0gUmVzdWx0LmNhcHR1cmUgZiB4IGluXG4gICAgICAgIG0gOj0gTWFwLnNldCAhbSB+a2V5OnggfmRhdGE6djtcbiAgICAgICAgdlxuICAgIGluXG4gICAgUmVzdWx0LnJldHVybiB2XG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUXVldWUgPSBCYXNlLkxpbmtlZF9xdWV1ZVxuaW5jbHVkZSBRdWV1ZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFF1ZXVlLnRcbiAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgwMGRmOWEwLTQ5OTItMTFlNi04ODFkLWZmZTFhNWM4YWNlZFwiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkxpbmtlZF9xdWV1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgKCogQmluX3Byb3QgcmVhZHMgdGhlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgd2VyZSB3cml0dGVuIG91dCwgYXMgZGV0ZXJtaW5lZFxuICAgICAgIGJ5IFtpdGVyXS4gIFNvLCB3ZSBjYW4gaWdub3JlIHRoZSBpbmRleCBhbmQganVzdCBlbnF1ZXVlIGVhY2ggZWxlbWVudCBhcyBpdCBpcyByZWFkXG4gICAgICAgaW4uICopXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICBlbnF1ZXVlIHQgKG5leHQgKCkpXG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEZXJpdmluZ19oYXNoX2ludGZcblxubW9kdWxlIE9mX2Rlcml2aW5nX2hhc2hcbiAgICAoUmVwciA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmVwci5oYXNoX2ZvbGRfdCBzdGF0ZSAoTS50b19yZXByIHQpXG4gIGxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICdhIHQgPVxuICB7ICgqIFthcnJdIGlzIGEgY3ljbGljIGJ1ZmZlciAqKVxuICAgIG11dGFibGUgYXJyIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbZnJvbnRfaW5kZXhdIGFuZCBbYmFja19pbmRleF0gYXJlIHRoZSBwb3NpdGlvbnMgaW4gd2hpY2ggbmV3IGVsZW1lbnRzIG1heSBiZVxuICAgICAgIGVucXVldWVkLiAgVGhpcyBtYWtlcyB0aGUgYWN0aXZlIHBhcnQgb2YgW2Fycl0gdGhlIHJhbmdlIGZyb20gW2Zyb250X2luZGV4KzFdIHRvXG4gICAgICAgW2JhY2tfaW5kZXgtMV0gKG1vZHVsbyB0aGUgbGVuZ3RoIG9mIFthcnJdIGFuZCB3cmFwcGluZyBhcm91bmQgaWYgbmVjZXNzYXJ5KS4gIE5vdGVcbiAgICAgICB0aGF0IHRoaXMgbWVhbnMgdGhlIGFjdGl2ZSByYW5nZSBpcyBtYXhpbWl6ZWQgd2hlbiBbZnJvbnRfaW5kZXggPSBiYWNrX2luZGV4XSwgd2hpY2hcbiAgICAgICBvY2N1cnMgd2hlbiB0aGVyZSBhcmUgW0FycmF5Lmxlbmd0aCBhcnIgLSAxXSBhY3RpdmUgZWxlbWVudHMuICopXG4gICAgbXV0YWJsZSBmcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgYmFja19pbmRleCA6IGludFxuICA7ICgqIGFwcGFyZW50X2Zyb250X2luZGV4IGlzIHdoYXQgaXMgZXhwb3NlZCBhcyB0aGUgZnJvbnQgaW5kZXggZXh0ZXJuYWxseS4gIEl0IGhhcyBub1xuICAgICAgIHJlYWwgcmVsYXRpb24gdG8gdGhlIGFycmF5IC0tIGV2ZXJ5IGVucXVldWUgdG8gdGhlIGZyb250IGRlY3JlbWVudHMgaXQgYW5kIGV2ZXJ5XG4gICAgICAgZGVxdWV1ZSBmcm9tIHRoZSBmcm9udCBpbmNyZW1lbnRzIGl0LiAqKVxuICAgIG11dGFibGUgYXBwYXJlbnRfZnJvbnRfaW5kZXggOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7ICgqIFdlIGtlZXAgYXJyX2xlbmd0aCBoZXJlIGFzIGEgc3BlZWQgaGFjay4gIENhbGxpbmcgQXJyYXkubGVuZ3RoIG9uIGFyciBpcyBhY3R1YWxseVxuICAgICAgIG1lYW5pbmdmdWxseSBzbG93ZXIuICopXG4gICAgbXV0YWJsZSBhcnJfbGVuZ3RoIDogaW50XG4gIDsgbmV2ZXJfc2hyaW5rIDogYm9vbFxuICB9XG5cbmxldCBjcmVhdGUgP2luaXRpYWxfbGVuZ3RoID9uZXZlcl9zaHJpbmsgKCkgPVxuICBsZXQgbmV2ZXJfc2hyaW5rID1cbiAgICBtYXRjaCBuZXZlcl9zaHJpbmsgd2l0aFxuICAgIHwgTm9uZSAtPiBPcHRpb24uaXNfc29tZSBpbml0aWFsX2xlbmd0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgaW5cbiAgbGV0IGluaXRpYWxfbGVuZ3RoID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OjcgaW5pdGlhbF9sZW5ndGggaW5cbiAgaWYgaW5pdGlhbF9sZW5ndGggPCAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicGFzc2VkIG5lZ2F0aXZlIGluaXRpYWxfbGVuZ3RoIHRvIERlcXVlLmNyZWF0ZTogJWlcIiBpbml0aWFsX2xlbmd0aCAoKTtcbiAgKCogTWFrZSB0aGUgaW5pdGlhbCBhcnJheSBsZW5ndGggYmUgW2luaXRpYWxfbGVuZ3RoICsgMV0gc28gd2UgY2FuIGZpdCBbaW5pdGlhbF9sZW5ndGhdXG4gICAgIGVsZW1lbnRzIHdpdGhvdXQgZ3Jvd2luZy4gIFdlIG5ldmVyIHF1aXRlIHVzZSB0aGUgd2hvbGUgYXJyYXkuICopXG4gIGxldCBhcnJfbGVuZ3RoID0gaW5pdGlhbF9sZW5ndGggKyAxIGluXG4gIHsgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmFycl9sZW5ndGhcbiAgOyBmcm9udF9pbmRleCA9IDBcbiAgOyBiYWNrX2luZGV4ID0gMVxuICA7IGFwcGFyZW50X2Zyb250X2luZGV4ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgOyBhcnJfbGVuZ3RoXG4gIDsgbmV2ZXJfc2hyaW5rXG4gIH1cbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBsZW5ndGggaW4gYSBtdXRhYmxlIGZpZWxkIGZvciBzcGVlZCwgYnV0IHRoaXMgY2FsY3VsYXRpb24gc2hvdWxkXG4gICBiZSBjb3JyZWN0IGJ5IGNvbnN0cnVjdGlvbiwgYW5kIGNhbiBiZSB1c2VkIGZvciB0ZXN0aW5nLiAqKVxubGV0IF9pbnZhcmlhbnRfbGVuZ3RoIHQgPVxuICBsZXQgY29uc3RydWN0ZWRfbGVuZ3RoID1cbiAgICBpZiB0LmZyb250X2luZGV4IDwgdC5iYWNrX2luZGV4XG4gICAgdGhlbiB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMVxuICAgIGVsc2UgdC5iYWNrX2luZGV4IC0gdC5mcm9udF9pbmRleCAtIDEgKyB0LmFycl9sZW5ndGhcbiAgaW5cbiAgYXNzZXJ0IChsZW5ndGggdCA9IGNvbnN0cnVjdGVkX2xlbmd0aClcbjs7XG5cbigqIFRoZSB2YXJpb3VzIFwid2hlbl9ub3RfZW1wdHlcIiBmdW5jdGlvbnMgcmV0dXJuIG1pc2xlYWRpbmcgbnVtYmVycyB3aGVuIHRoZSBkZXF1ZXVlIGlzXG4gICBlbXB0eS4gIFRoZXkgYXJlIHNhZmUgdG8gY2FsbCBpZiBpdCBpcyBrbm93biB0aGF0IHRoZSBkZXF1ZXVlIGlzIG5vbi1lbXB0eS4gKilcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleFxubGV0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9IHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyBsZW5ndGggdCAtIDFcblxubGV0IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5mcm9udF9pbmRleCArIDFcbjs7XG5cbmxldCBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5iYWNrX2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmJhY2tfaW5kZXggLSAxXG47O1xuXG5sZXQgY2hlY2tlZCB0IGYgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGYgdClcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHlcblxubGV0IGZvbGRpJyB0IGRpciB+aW5pdCB+ZiA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2kgfnN0b3BfcG9zIH5zdGVwID1cbiAgICAgIGlmIHJlYWxfaSA9IHN0b3BfcG9zXG4gICAgICB0aGVuIGFjYywgYXBwYXJlbnRfaVxuICAgICAgZWxzZVxuICAgICAgICBsb29wXG4gICAgICAgICAgKGYgYXBwYXJlbnRfaSBhY2MgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgcmVhbF9pKSlcbiAgICAgICAgICB+YXBwYXJlbnRfaTooYXBwYXJlbnRfaSArIHN0ZXApXG4gICAgICAgICAgfnJlYWxfaToocmVhbF9pICsgc3RlcClcbiAgICAgICAgICB+c3RvcF9wb3NcbiAgICAgICAgICB+c3RlcFxuICAgIGluXG4gICAgKCogV2Ugd2FudCB0byBpdGVyYXRlIGZyb20gYWN0dWFsX2Zyb250IHRvIGFjdHVhbF9iYWNrIChvciB2aWNlIHZlcnNhKSwgYnV0IHdlIG1heVxuICAgICAgIG5lZWQgdG8gd3JhcCBhcm91bmQgdGhlIGFycmF5IHRvIGRvIHNvLiAgVGh1cyB3ZSBkbyB0aGUgZm9sbG93aW5nOlxuICAgICAgIDEuICBJZiB0aGUgYWN0aXZlIHJhbmdlIGlzIGNvbnRpZ3VvdXMgKGkuZS4gYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrKSwgdGhlbiBsb29wXG4gICAgICAgc3RhcnRpbmcgYXQgdGhlIGFwcHJvcHJpYXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlIHVudGlsIHdlIHJlYWNoIHRoZSBmaXJzdFxuICAgICAgIGVsZW1lbnQgb3V0c2lkZSBvZiBpdC5cbiAgICAgICAyLiAgSWYgaXQgaXMgbm90IGNvbnRpZ3VvdXMgKGFjdHVhbF9mcm9udCA+IGFjdHVhbF9iYWNrKSwgdGhlbiBmaXJzdCBsb29wIGZyb20gdGhlXG4gICAgICAgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuICBUaGVuLCBsb29wIGZyb21cbiAgICAgICB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhcnJheSB0byB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UuXG4gICAgKilcbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYGZyb250X3RvX2JhY2sgLT5cbiAgICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpXG4gICAgICAgICAgICB+c3RlcDoxXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9mcm9udFxuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfZnJvbnRcbiAgICAgICAgICAgIH5zdG9wX3Bvczp0LmFycl9sZW5ndGhcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9IGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgfnN0ZXA6MSBpblxuICAgICAgICBhY2MpXG4gICAgfCBgYmFja190b19mcm9udCAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFjYywgYXBwYXJlbnRfaSA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOigtMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICB+YXBwYXJlbnRfaVxuICAgICAgICAgICAgfnJlYWxfaToodC5hcnJfbGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2Zyb250IC0gMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKSlcbjs7XG5cbmxldCBmb2xkJyB0IGRpciB+aW5pdCB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdCB+ZjooZnVuIF8gYWNjIHYgLT4gZiBhY2MgdikgW0Bub250YWlsXVxubGV0IGl0ZXJpJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIGkgKCkgdiAtPiBmIGkgdilcbmxldCBpdGVyJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIF8gKCkgdiAtPiBmIHYpXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZCcgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGZvbGRpIHQgfmluaXQgfmYgPSBmb2xkaScgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBpdGVyaScgdCBgZnJvbnRfdG9fYmFjayB+ZlxuXG5sZXQgaXRlcmlfaW50ZXJuYWwgdCB+ZiA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiAoXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCB+cmVhbF9pIH5zdG9wX3BvcyA9XG4gICAgICBpZiByZWFsX2kgPCBzdG9wX3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGYgdC5hcnIgcmVhbF9pO1xuICAgICAgICBsb29wIH5yZWFsX2k6KHJlYWxfaSArIDEpIH5zdG9wX3BvcylcbiAgICBpblxuICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgIHRoZW4gbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgW0Bub250YWlsXVxuICAgIGVsc2UgKFxuICAgICAgbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6dC5hcnJfbGVuZ3RoO1xuICAgICAgbG9vcCB+cmVhbF9pOjAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpIFtAbm9udGFpbF0pKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGl0ZXJpX2ludGVybmFsIHQgfmY6KGZ1biBhcnIgaSAtPiBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGFyciBpIHw+IGYpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5uZXZlcl9zaHJpbmtcbiAgdGhlblxuICAgICgqIGNsZWFyIHRoZSBhcnJheSB0byBhbGxvdyBlbGVtZW50cyB0byBiZSBnYXJiYWdlIGNvbGxlY3RlZCAqKVxuICAgIGl0ZXJpX2ludGVybmFsIHQgfmY6T3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZVxuICBlbHNlIHQuYXJyIDwtIE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjo4O1xuICB0LmZyb250X2luZGV4IDwtIDA7XG4gIHQuYmFja19pbmRleCA8LSAxO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmFycl9sZW5ndGggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmFyclxuOztcblxuKCogV2UgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUsIGltcG9ydGluZyBhbGwgb2YgQ29udGFpbmVyLk1ha2Ugd291bGQgY2hhbmdlIHRoZSBydW50aW1lIG9mXG4gICBzb21lIGZ1bmN0aW9ucyAoW2xlbmd0aF0gbWluaW1hbGx5KSBzaWxlbnRseSB3aXRob3V0IGNoYW5naW5nIHRoZSBzZW1hbnRpY3MuICBXZSBnZXRcbiAgIGFyb3VuZCB0aGF0IGJ5IGltcG9ydGluZyB0aGluZ3MgZXhwbGljaXRseS4gICopXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IG1lbSA9IEMubWVtXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBibGl0IG5ld19hcnIgdCA9XG4gIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBvbGRfYXJyID0gdC5hcnIgaW5cbiAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gIHRoZW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQpXG4gIGVsc2UgKFxuICAgIGxldCBicmVha19wb3MgPSBPcHRpb25fYXJyYXkubGVuZ3RoIG9sZF9hcnIgLSBhY3R1YWxfZnJvbnQgaW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjpicmVha19wb3M7XG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpicmVha19wb3NcbiAgICAgIH5sZW46KGFjdHVhbF9iYWNrICsgMSkpO1xuICAoKiBsZW5ndGggZGVwZW5kcyBvbiB0LmFyciBhbmQgdC5mcm9udF9pbmRleCwgc28gdGhpcyBuZWVkcyB0byBiZSBmaXJzdCAqKVxuICB0LmJhY2tfaW5kZXggPC0gbGVuZ3RoIHQ7XG4gIHQuYXJyIDwtIG5ld19hcnI7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnI7XG4gIHQuZnJvbnRfaW5kZXggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMTtcbiAgKCogU2luY2UgdC5mcm9udF9pbmRleCA9IE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciAtIDEsIHRoaXMgaXMgYXNzZXJ0aW5nIHRoYXQgdC5iYWNrX2luZGV4XG4gICAgIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5IGFuZCB0aGF0IHRoZSBhcnJheSBjYW4gc3VwcG9ydCBhdCBsZWFzdCBvbmUgbW9yZVxuICAgICBlbGVtZW50IC0tIHJlY2FsbCwgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIHRoZSBhcnJheSBpcyBmdWxsLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyID4gbGVuZ3RoIHQgKyAxLlxuICAqKVxuICBhc3NlcnQgKHQuZnJvbnRfaW5kZXggPiB0LmJhY2tfaW5kZXgpXG47O1xuXG5sZXQgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdCA9XG4gIGlmIChub3QgdC5uZXZlcl9zaHJpbmspICYmIHQuYXJyX2xlbmd0aCA+IDEwICYmIHQuYXJyX2xlbmd0aCAvIDMgPiBsZW5ndGggdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoodC5hcnJfbGVuZ3RoIC8gMikgaW5cbiAgICBibGl0IG5ld19hcnIgdClcbjs7XG5cbmxldCBncm93X3VuZGVybHlpbmcgdCA9XG4gIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggKiAyKSBpblxuICBibGl0IG5ld19hcnIgdFxuOztcblxubGV0IGVucXVldWVfYmFjayB0IHYgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gZ3Jvd191bmRlcmx5aW5nIHQ7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciB0LmJhY2tfaW5kZXggdjtcbiAgdC5iYWNrX2luZGV4IDwtIChpZiB0LmJhY2tfaW5kZXggPSB0LmFycl9sZW5ndGggLSAxIHRoZW4gMCBlbHNlIHQuYmFja19pbmRleCArIDEpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlX2Zyb250IHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuZnJvbnRfaW5kZXggdjtcbiAgdC5mcm9udF9pbmRleCA8LSAoaWYgdC5mcm9udF9pbmRleCA9IDAgdGhlbiB0LmFycl9sZW5ndGggLSAxIGVsc2UgdC5mcm9udF9pbmRleCAtIDEpO1xuICB0LmFwcGFyZW50X2Zyb250X2luZGV4IDwtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggLSAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCB2ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgdlxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgdlxuOztcblxubGV0IHBlZWtfZnJvbnRfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5wZWVrX2Zyb250X2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfZnJvbnRfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocGVla19mcm9udF9ub25lbXB0eSB0KVxuXG5sZXQgcGVla19iYWNrX25vbmVtcHR5IHQgPVxuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIChhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBwZWVrX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IHBlZWsgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmZyb250X2luZGV4IDwtIGk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdDtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmJhY2tfaW5kZXggPC0gaTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5kZXF1ZXVlX2JhY2tfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2sgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9nZW4gPyhuID0gMSkgfmRlcXVldWUgdCA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiRGVxdWUuZHJvcDogIG5lZ2F0aXZlIGlucHV0ICglZClcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGRlcXVldWUgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKG4gLSAxKSlcbiAgaW5cbiAgbG9vcCBuXG47O1xuXG5sZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcF9nZW4gP24gfmRlcXVldWU6ZGVxdWV1ZV9mcm9udCB0XG5sZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2JhY2sgdFxuXG5sZXQgZHJvcCA/biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgP24gdFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250ID9uIHRcbjs7XG5cbmxldCBhc3NlcnRfbm90X2VtcHR5IHQgbmFtZSA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmYWlsd2l0aGYgXCIlczogRGVxdWUudCBpcyBlbXB0eVwiIG5hbWUgKClcblxubGV0IHRydWVfaW5kZXhfZXhuIHQgaSA9XG4gIGxldCBpX2Zyb21femVybyA9IGkgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4IGluXG4gIGlmIGlfZnJvbV96ZXJvIDwgMCB8fCBsZW5ndGggdCA8PSBpX2Zyb21femVyb1xuICB0aGVuIChcbiAgICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS50cnVlX2luZGV4X2V4blwiO1xuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJpbnZhbGlkIGluZGV4OiAlaSBmb3IgYXJyYXkgd2l0aCBpbmRpY2VzICglaSwlaSlcIlxuICAgICAgaVxuICAgICAgYXBwYXJlbnRfZnJvbnRcbiAgICAgIGFwcGFyZW50X2JhY2tcbiAgICAgICgpKTtcbiAgbGV0IHRydWVfaSA9IHQuZnJvbnRfaW5kZXggKyAxICsgaV9mcm9tX3plcm8gaW5cbiAgaWYgdHJ1ZV9pID49IHQuYXJyX2xlbmd0aCB0aGVuIHRydWVfaSAtIHQuYXJyX2xlbmd0aCBlbHNlIHRydWVfaVxuOztcblxubGV0IGdldCB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIHRyeSBTb21lIChnZXQgdCBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgdiA9IE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciAodHJ1ZV9pbmRleF9leG4gdCBpKSB2XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggcGVla19mcm9udCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIGZyb250IC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggdCkgZnJvbnQgaW5cbiAgICBpZ25vcmVcbiAgICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgdiAtPlxuICAgICAgICAgYXJyLihpKSA8LSB2O1xuICAgICAgICAgaSArIDEpXG4gICAgICAgOiBpbnQpO1xuICAgIGFyclxuOztcblxubGV0IG9mX2FycmF5IGFyciA9XG4gIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDooQXJyYXkubGVuZ3RoIGFyciArIDEpICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBlbnF1ZXVlX2JhY2sgdCB2KTtcbiAgdFxuOztcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMzRjMWU5Y2EtNDk5Mi0xMWU2LWE2ODYtOGI0YmQ0Zjg3Nzk2XCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRGVxdWVcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB0IH5mXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDpsZW4gKCkgaW5cbiAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgZW5xdWV1ZV9iYWNrIHQgeFxuICAgICAgZG9uZTtcbiAgICAgIHRcbiAgICA7O1xuICBlbmQpXG5cbmxldCB0X29mX3NleHAgZiBzZXhwID0gb2ZfYXJyYXkgKEFycmF5LnRfb2Zfc2V4cCBmIHNleHApXG5sZXQgc2V4cF9vZl90IGYgdCA9IEFycmF5LnNleHBfb2ZfdCBmICh0b19hcnJheSB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKEFycmF5LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxuKCogcmUtZXhwb3NlIHRoZXNlIGhlcmUgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSB0byBhdm9pZCBpbnRlcm5hbCBjb25mdXNpb24gKilcbmxldCBiYWNrX2luZGV4ID0gYXBwYXJlbnRfYmFja19pbmRleFxubGV0IGZyb250X2luZGV4ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhcblxubGV0IGJhY2tfaW5kZXhfZXhuIHQgPVxuICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS5iYWNrX2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbmxldCBmcm9udF9pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmZyb250X2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0XG47O1xuXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCB0IGkgPSBnZXQgdCAoZnJvbnRfaW5kZXhfZXhuIHQgKyBpKVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmRcbiAgZW5kKVxuXG4oKiBUaGUgXCJzdGFibGVcIiBpbmRpY2VzIHVzZWQgaW4gdGhpcyBtb2R1bGUgbWFrZSB0aGUgYXBwbGljYXRpb24gb2YgdGhlXG4gICBbQmluYXJ5X3NlYXJjaGFibGVdIGZ1bmN0b3IgYXdrd2FyZC4gIFdlIG5lZWQgdG8gYmUgc3VyZSB0byB0cmFuc2xhdGUgaW5jb21pbmdcbiAgIHBvc2l0aW9ucyBmcm9tIHN0YWJsZSBzcGFjZSB0byB0aGUgZXhwZWN0ZWQgMCAtPiBsZW5ndGggLSAxIHNwYWNlIGFuZCB0aGVuIHdlIG5lZWQgdG9cbiAgIHRyYW5zbGF0ZSB0aGVtIGJhY2sgb24gcmV0dXJuLiAqKVxubGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVudHJhbnNsYXRlZF9pIC0+IFNvbWUgKHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyB1bnRyYW5zbGF0ZWRfaSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZ1xuXG5sZXQgZXByaW50IG1lc3NhZ2UgPSBQcmludGYuZXByaW50ZiBcIiVzXFxuJSFcIiBtZXNzYWdlXG5sZXQgZXByaW50X3Mgc2V4cCA9IGVwcmludCAoU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG5sZXQgZXByaW50cyBtZXNzYWdlIGEgc2V4cF9vZl9hID0gZXByaW50X3MgKFslc2V4cF9vZjogc3RyaW5nICogYV0gKG1lc3NhZ2UsIGEpKVxubGV0IGVwcmludGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVwcmludCBmb3JtYXRcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIE1ha2UgKCkgPSBzdHJ1Y3RcbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgaW52YXJpYW50IH5tb2R1bGVfbmFtZSBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW4gZXByaW50cyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBtb2R1bGVfbmFtZTsgXCIuXCI7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwcmUtY29uZGl0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgKG5hbWUsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGV4bl0pO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50XG4gICAgdGhlbiAoXG4gICAgICB0cnkgTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJpbnZhcmlhbnQgcG9zdC1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBlcHJpbnRzXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZTsgXCItcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuZW5kXG5cbmxldCBzaG91bGRfcHJpbnRfYmFja3RyYWNlID0gcmVmIGZhbHNlXG5cbmxldCBhbV9pbnRlcm5hbCBoZXJlIG1lc3NhZ2UgPVxuICAoKiBJbiB0aGlzIGZ1bmN0aW9uIHdlIHVzZSBbUHJpbnRmLmVwcmludGZdIHJhdGhlciB0aGFuIFtEZWJ1Zy5lcHJpbnRmXSwgYmVjYXVzZSB0aGVcbiAgICAgZm9ybWVyIGRvZXNuJ3QgZmx1c2gsIHdoaWxlIHRoZSBsYXR0ZXIgZG9lcy4gIFdlJ2QgcmF0aGVyIGZsdXNoIG9uY2UgYXQgdGhlIGVuZCxcbiAgICAgcmF0aGVyIHRoYW4gdGhyZWUgdGltZXMuICopXG4gIFByaW50Zi5lcHJpbnRmIFwiJXM6XFxuXCIgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZyBoZXJlKTtcbiAgaWYgIXNob3VsZF9wcmludF9iYWNrdHJhY2VcbiAgdGhlblxuICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICBcIiVzXFxuXCJcbiAgICAgIChCYWNrdHJhY2UuZ2V0ICgpIHw+IFslc2V4cF9vZjogQmFja3RyYWNlLnRdIHw+IFNleHAudG9fc3RyaW5nX2h1bSk7XG4gIChtYXRjaCBtZXNzYWdlIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIG1lc3NhZ2UgLT4gUHJpbnRmLmVwcmludGYgXCIlc1xcblwiIG1lc3NhZ2UpO1xuICBQcmludGYuZXByaW50ZiBcIiUhXCJcbjs7XG5cbmxldCBhbSBoZXJlID0gYW1faW50ZXJuYWwgaGVyZSBOb25lXG5sZXQgYW1mIGhlcmUgZm10ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyaW5nIC0+IGFtX2ludGVybmFsIGhlcmUgKFNvbWUgc3RyaW5nKSkgZm10XG5cbmxldCBhbXMgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgYW1faW50ZXJuYWwgaGVyZSAoU29tZSAoKG1lc3NhZ2UsIGEpIHw+IFslc2V4cF9vZjogc3RyaW5nICogYV0gfD4gU2V4cC50b19zdHJpbmdfaHVtKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TeXNcblxubGV0IHVuaXhfcXVvdGUgeCA9XG4gIGlmIChub3QgKFN0cmluZy5pc19lbXB0eSB4KSlcbiAgJiYgU3RyaW5nLmZvcl9hbGwgeCB+ZjooZnVuY3Rpb25cbiAgICAgICB8ICdhJyAuLiAneidcbiAgICAgICB8ICdBJyAuLiAnWidcbiAgICAgICB8ICcwJyAuLiAnOSdcbiAgICAgICB8ICdfJyB8ICctJyB8ICc6JyB8ICcuJyB8ICcvJyB8ICcsJyB8ICcrJyB8ICc9JyB8ICclJyB8ICdAJyAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuIChcbiAgICAoKiBTaGVsbCBrZXl3b3JkcywgYXMgb3V0cHV0IGJ5IFtjb21wZ2VuIC1rXSBmb3IgYmFzaCwgW21hbiBkYXNoXSBmb3IgZGFzaCwgYW5kIFtQQVRIPVxuICAgICAgIHR5cGUgLW0gJyonIHwgZ3JlcCByZXNlcnZlZF0gZm9yIHpzaCwgZXhjZXB0IGZvciBrZXl3b3JkcyB0aGF0IGhhdmUgc3BlY2lhbFxuICAgICAgIGNoYXJhY3RlcnMgbGlrZSBbWy4gTm90ZSB0aGF0IGJ1aWx0aW5zIGRvbid0IG1hdHRlciBiZWNhdXNlICdhbGlhcycgYW5kIGFsaWFzXG4gICAgICAgYmVoYXZlIHRoZSBzYW1lLCB1bmxpa2UgJ2lmJyBhbmQgaWYuICopXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBcImlmXCJcbiAgICB8IFwidGhlblwiXG4gICAgfCBcImVsc2VcIlxuICAgIHwgXCJlbGlmXCJcbiAgICB8IFwiZmlcIlxuICAgIHwgXCJjYXNlXCJcbiAgICB8IFwiZXNhY1wiXG4gICAgfCBcImZvclwiXG4gICAgfCBcInNlbGVjdFwiXG4gICAgfCBcIndoaWxlXCJcbiAgICB8IFwidW50aWxcIlxuICAgIHwgXCJkb1wiXG4gICAgfCBcImRvbmVcIlxuICAgIHwgXCJpblwiXG4gICAgfCBcImZ1bmN0aW9uXCJcbiAgICB8IFwidGltZVwiXG4gICAgfCBcImNvcHJvY1wiXG4gICAgfCBcImZvcmVhY2hcIlxuICAgIHwgXCJyZXBlYXRcIlxuICAgIHwgXCJub2NvcnJlY3RcIiAtPiBGaWxlbmFtZS5xdW90ZSB4XG4gICAgfCBfIC0+IHgpXG4gIGVsc2UgRmlsZW5hbWUucXVvdGUgeFxuOztcblxubGV0IHF1b3RlID1cbiAgbWF0Y2ggU3RkbGliLlN5cy5vc190eXBlIHdpdGhcbiAgfCBcIlVuaXhcIiAtPiB1bml4X3F1b3RlXG4gIHwgXyAtPiBGaWxlbmFtZS5xdW90ZVxuOztcblxubGV0IGNvbmNhdF9xdW90ZWQgc3BsaXRfY29tbWFuZCA9XG4gIExpc3QubWFwIH5mOnF1b3RlIHNwbGl0X2NvbW1hbmQgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG47O1xuXG5sZXQgY19pbnRfc2l6ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBjYXRjaF9icmVhayA9IGBVc2VfU3lzX3VuaXhcbmxldCBjaGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmRfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRpb25fbW9kZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0cyA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0c19leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZm9sZF9kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgZ2V0Y3dkID0gYFVzZV9TeXNfdW5peFxubGV0IGhvbWVfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnlfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGUgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgbHNfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IG92ZXJyaWRlX2FyZ3YgPSBgVXNlX1N5c191bml4XG5sZXQgcmVhZGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW1vdmUgPSBgVXNlX1N5c191bml4XG5sZXQgcmVuYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnYgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudl9leG4gPSBgVXNlX1N5c191bml4XG5cbmV4Y2VwdGlvbiBCcmVhayA9IFN0ZGxpYi5TeXMuQnJlYWtcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHVuaXhfcXVvdGUgPSB1bml4X3F1b3RlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGRsaWIuQXJnXG5cbnR5cGUgdCA9IGtleSAqIHNwZWMgKiBkb2NcblxubGV0IHNvcnRfYW5kX2FsaWduIGxzdCA9XG4gIGFsaWduIChCYXNlLkxpc3Quc29ydCBsc3QgfmNvbXBhcmU6KGZ1biAoYSwgXywgXykgKGIsIF8sIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhZ19pbnRmXG5pbmNsdWRlIChEb3VibHlfbGlua2VkIDogRG91Ymx5X2xpbmtlZC5TKVxuXG5sZXQgYWRkID0gaW5zZXJ0X2ZpcnN0XG5sZXQgYWRkX3VuaXQgdCB2ID0gYWRkIHQgdiB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxubGV0IGVsdHMgdCA9IGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBhY2MgZWx0IC0+IGVsdCA6OiBhY2MpXG5sZXQgcmVtb3ZlX29uZSA9IHJlbW92ZV9maXJzdFxubGV0IGNob29zZSA9IGZpcnN0X2VsdFxuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBPcHRpb24uaXRlciAocmVtb3ZlX29uZSB0KSB+ZjooZnVuIHYgLT5cbiAgICAgIGYgdjtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBtdXRhYmxlIGJzdHIgOiBCaWdzdHJpbmcudFxuICA7IG11dGFibGUgcG9zIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyBpbml0IDogQmlnc3RyaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlc2l6ZSBidWYgbW9yZSA9XG4gIGxldCBtaW5fbGVuID0gYnVmLmxlbiArIG1vcmUgaW5cbiAgbGV0IG5ld19sZW4gPSBtaW5fbGVuICsgbWluX2xlbiBpblxuICBsZXQgbmV3X2J1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbmV3X2xlbiBpblxuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWYuYnN0ciB+c3JjX2xlbjpidWYucG9zIH5kc3Q6bmV3X2J1ZiAoKTtcbiAgYnVmLmJzdHIgPC0gbmV3X2J1ZjtcbiAgYnVmLmxlbiA8LSBuZXdfbGVuXG47O1xuIiwiKCogU29tZSBjb2RlIHRha2VuIGZyb20gSU5SSUEncyBidWZmZXIgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gQmlnc3RyaW5nXG5pbmNsdWRlIEJpZ2J1ZmZlcl9pbnRlcm5hbFxuXG5sZXQgX19pbnRlcm5hbCAodCA6IHQpID0gdFxubGV0IGxlbmd0aCB0ID0gdC5wb3NcblxuKCoge1sgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0LmxlbiA9PSBCaWdzdHJpbmcubGVuZ3RoIHQuYnN0cikgXX0gKilcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IG4gPSBtYXggMSBuIGluXG4gIGxldCBic3RyID0gQmlnc3RyaW5nLmNyZWF0ZSBuIGluXG4gIHsgYnN0cjsgcG9zID0gMDsgbGVuID0gbjsgaW5pdCA9IGJzdHIgfVxuOztcblxubGV0IGNvbnRlbnRzIGJ1ZiA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgY29udGVudHNfYnl0ZXMgYnVmID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1Zi5ic3RyIH5sZW46YnVmLnBvc1xubGV0IGJpZ19jb250ZW50cyBidWYgPSBzdWJvIH5sZW46YnVmLnBvcyBidWYuYnN0clxubGV0IHZvbGF0aWxlX2NvbnRlbnRzIGJ1ZiA9IGJ1Zi5ic3RyXG5cbmxldCBhZGRfY2hhciBidWYgYyA9XG4gIGxldCBwb3MgPSBidWYucG9zIGluXG4gIGlmIHBvcyA+PSBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiAxO1xuICBidWYuYnN0ci57cG9zfSA8LSBjO1xuICBidWYucG9zIDwtIHBvcyArIDFcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIFRlc3RfYmxpdC5NYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhclxuXG4gICAgICBsZXQgZXF1YWwgPSBDaGFyLmVxdWFsXG4gICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuICdhJyBlbHNlICdiJ1xuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICAgIGFkZF9jaGFyIHQgJ2EnXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBzZXQgdCBpIGMgPSBCaWdzdHJpbmcuc2V0IHQuYnN0ciBpIGNcbiAgICAgIGxldCBnZXQgdCBpID0gQmlnc3RyaW5nLmdldCB0LmJzdHIgaVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIEJ5dGVzXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cblxuICAgICAgbGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICAgICAgQmlnc3RyaW5nLlRvX2J5dGVzLnVuc2FmZV9ibGl0IH5zcmM6c3JjLmJzdHIgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ2J1ZmZlcl9pbnRlcm5hbCkgKFRvX2J5dGVzKVxuXG5sZXQgbnRoIGJ1ZiBwb3MgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBidWYucG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIubnRoXCIgZWxzZSBidWYuYnN0ci57cG9zfVxuOztcblxubGV0IGNsZWFyIGJ1ZiA9IGJ1Zi5wb3MgPC0gMFxuXG5sZXQgcmVzZXQgYnVmID1cbiAgYnVmLnBvcyA8LSAwO1xuICBidWYuYnN0ciA8LSBidWYuaW5pdDtcbiAgYnVmLmxlbiA8LSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zi5ic3RyXG47O1xuXG5sZXQgYWRkX3N1YnN0cmluZyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RyaW5nXCI7XG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3ViYnl0ZXMgYnVmIHNyYyB+cG9zOnNyY19wb3MgfmxlbiA9XG4gIGlmIHNyY19wb3MgPCAwIHx8IGxlbiA8IDAgfHwgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcztcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2JpZ3N0cmluZyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9ieXRlcyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J1ZmZlciBidWZfZHN0IGJ1Zl9zcmMgPVxuICBsZXQgbGVuID0gYnVmX3NyYy5wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBidWZfZHN0LnBvcyBpblxuICBsZXQgbmV3X3BvcyA9IGRzdF9wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zl9kc3QubGVuIHRoZW4gcmVzaXplIGJ1Zl9kc3QgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWZfc3JjLmJzdHIgfnNyY19sZW46bGVuIH5kc3Q6YnVmX2RzdC5ic3RyIH5kc3RfcG9zICgpO1xuICBidWZfZHN0LnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2Jpbl9wcm90IHQgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICBsZXQgbmV3X3BvcyA9XG4gICAgbWF0Y2ggd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHggd2l0aFxuICAgIHwgcG9zIC0+IHBvc1xuICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICgqIEl0J3MgbGlrZWt5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgW0Jpbl9wcm90LkNvbW1vbi5CdWZmZXJfc2hvcnRdIG9ubHksIGhvd2V2ZXIgd2UgY2FuJ3QgZWFzaWx5IGVuZm9yY2UgdGhhdCBjdXN0b21cbiAgICAgICAgIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIGRvIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGlmIHQucG9zICsgc2l6ZSA+IHQubGVuIHRoZW4gcmVzaXplIHQgc2l6ZTtcbiAgICAgIHdyaXRlci53cml0ZSB0LmJzdHIgfnBvczp0LnBvcyB4XG4gIGluXG4gIHQucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChOb3RfZm91bmRfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RpdHV0ZTogY2Fubm90IGZpbmQgY2xvc2luZyBkZWxpbWl0ZXJcIlxuICAgICAgICAgICAgICAgKG9wZW5pbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKGNsb3NpbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKHN0YXJ0IDogaW50KVxuICAgICAgICAgICAgICAgc10pXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIG9wZW5pbmdcbiAgICB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbCBzLltpXSBjbG9zaW5nXG4gICAgdGhlbiBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbVxuICBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW4gbGltXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdhJyAuLiAneidcbiAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgfCAnMCcgLi4gJzknXG4gICAgICB8ICdfJ1xuICAgICAgfCAn6SdcbiAgICAgIHwgJ+AnXG4gICAgICB8ICfhJ1xuICAgICAgfCAn6CdcbiAgICAgIHwgJ/knXG4gICAgICB8ICfiJ1xuICAgICAgfCAn6idcbiAgICAgIHwgJ+4nXG4gICAgICB8ICf0J1xuICAgICAgfCAn+ydcbiAgICAgIHwgJ+snXG4gICAgICB8ICfvJ1xuICAgICAgfCAn/CdcbiAgICAgIHwgJ+cnXG4gICAgICB8ICfJJ1xuICAgICAgfCAnwCdcbiAgICAgIHwgJ8EnXG4gICAgICB8ICfIJ1xuICAgICAgfCAn2SdcbiAgICAgIHwgJ8InXG4gICAgICB8ICfKJ1xuICAgICAgfCAnzidcbiAgICAgIHwgJ9QnXG4gICAgICB8ICfbJ1xuICAgICAgfCAnyydcbiAgICAgIHwgJ88nXG4gICAgICB8ICfcJ1xuICAgICAgfCAnxycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkpXG4gIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0ID1cbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgKCcoJyB8ICd7JykgYXMgYyAtPlxuICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpuZXdfc3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgU3RyaW5nLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0KSwgc3RvcFxuOztcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYnVmIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgKGkgKyAxKSBpblxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiAoZiBpZGVudCk7XG4gICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIENoYXIuZXF1YWwgcHJldmlvdXMgJ1xcXFwnIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKSlcbiAgaW5cbiAgc3Vic3QgJyAnIDBcbjs7XG5cbm1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgbGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmID1cbiAgICBGb3JtYXQubWFrZV9mb3JtYXR0ZXIgKGZ1biBzIHBvcyBsZW4gLT4gYWRkX3N1YnN0cmluZyBidWYgcyB+cG9zIH5sZW4pIGlnbm9yZVxuICA7O1xuXG4gIGxldCBicHJpbnRmIGJ1ZiA9IEZvcm1hdC5rZnByaW50ZiBpZ25vcmUgKGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmKVxuZW5kXG5cbm1vZHVsZSBQcmludGYgPSBzdHJ1Y3RcbiAgbGV0IGJwcmludGYgYnVmID0gUHJpbnRmLmtzcHJpbnRmIChhZGRfc3RyaW5nIGJ1ZilcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5CeXRlc31bQmFzZS5CeXRlc119LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkJ5dGVzXG5lbmRcbndpdGggdHlwZSB0IDo9IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW2dlbl0sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2YgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbYnl0ZXNdIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtCeXRlcy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIHByb3ZpZGVcbiAgICBpbnRlcmZhY2UgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCaWdzdHJpbmcuY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2M6Tm9uZVxuICAgIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJpZ3N0cmluZy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RhYmxlX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICAgICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5kZXggOiBpbnRcbiAgICAgICAgOyBtaW5faW5kZXggOiBpbnRcbiAgICAgICAgOyBtYXhfaW5kZXggOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGNyZWF0ZSBpbmRleCB+bWluIH5tYXggPVxuICAgICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heFxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIChpbmRleCA6IGludCkgKG1pbiA6IGludCkgKG1heCA6IGludCldXG4gICAgICAgIGVsc2UgeyBpbmRleDsgbWluX2luZGV4ID0gbWluOyBtYXhfaW5kZXggPSBtYXggfVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIEZvcl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChGb3Jfc2V4cGFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlIHQgPSBNLmxhYmVsLCB0LmluZGV4LCBcIm9mXCIsIHQubWluX2luZGV4LCBcInRvXCIsIHQubWF4X2luZGV4XG5cbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSAobGFiZWwsIGluZGV4LCBvZl8sIG1pbiwgdG9fLCBtYXgpID1cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGxhYmVsIE0ubGFiZWxcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIG9mXyBcIm9mXCJcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIHRvXyBcInRvXCJcbiAgICAgICAgICAgICAgdGhlbiBjcmVhdGUgaW5kZXggfm1pbiB+bWF4XG4gICAgICAgICAgICAgIGVsc2UgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIHNleHAgZm9yIGluZGV4XCIgfmxhYmVsOk0ubGFiZWxdXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSB0eXBlIFMgPSBCb3VuZGVkX2luZGV4X2ludGYuU1xuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBsYWJlbCA6IHN0cmluZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gU3RhYmxlLlYxLk1ha2UgKE0pXG4gIGVuZFxuXG4gIG9wZW4gU3RhYmxlLlYxXG5cbiAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY3JlYXRlID0gU3RhYmxlLlYxLmNyZWF0ZVxuXG4gIGxldCBjcmVhdGVfYWxsIH5taW4gfm1heCA9XG4gICAgU2VxdWVuY2UudW5mb2xkIH5pbml0Om1pbiB+ZjooZnVuIGluZGV4IC0+XG4gICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heCB0aGVuIE5vbmUgZWxzZSBTb21lIChjcmVhdGUgaW5kZXggfm1pbiB+bWF4LCBpbmRleCArIDEpKVxuICAgIHw+IFNlcXVlbmNlLnRvX2xpc3RcbiAgOztcblxuICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgbGV0IG1heF9pbmRleCB0ID0gdC5tYXhfaW5kZXhcbiAgbGV0IG1pbl9pbmRleCB0ID0gdC5taW5faW5kZXhcbiAgbGV0IHplcm9fYmFzZWRfaW5kZXggdCA9IGluZGV4IHQgLSBtaW5faW5kZXggdFxuICBsZXQgbnVtX2luZGV4ZXMgdCA9IG1heF9pbmRleCB0IC0gbWluX2luZGV4IHQgKyAxXG5cbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBDb21tYW5kXG5cbm1vZHVsZSBBcmdfdHlwZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFyZ190eXBlXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG5cbiAgICBsZXQgZGF0ZSA9IGNyZWF0ZSBEYXRlLm9mX3N0cmluZ1xuICAgIGxldCBwZXJjZW50ID0gY3JlYXRlIFBlcmNlbnQub2Zfc3RyaW5nXG4gICAgbGV0IGhvc3RfYW5kX3BvcnQgPSBjcmVhdGUgSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhcmFtID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFBhcmFtIDpcbiAgICBzaWdcbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgUGFyYW0gd2l0aCBtb2R1bGUgQXJnX3R5cGUgOj0gUGFyYW0uQXJnX3R5cGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbmVuZFxuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBTcGVjIDpcbiAgICBzaWdcbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgU3BlYyB3aXRoIG1vZHVsZSBBcmdfdHlwZSA6PSBTcGVjLkFyZ190eXBlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuIiwiKCoqIENvcmUgZ3JlYXRseSBleHBhbmRzIHRoZSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiBCYXNlIHdoaWxlIHN0aWxsIHJlbWFpbmluZ1xuICAgIHBsYXRmb3JtLWFnbm9zdGljLiAgQ29yZSBjaGFuZ2VzIG1vcmUgZnJlcXVlbnRseSAoaS5lLiwgaXMgbGVzcyBzdGFibGUpIHRoYW4gQmFzZS5cblxuICAgIFNvbWUgbW9kdWxlcyBhcmUgbWVyZSBleHRlbnNpb25zIG9mIHRoZWlyIGNvdW50ZXJwYXJ0cyBpbiBCYXNlLCB1c3VhbGx5IGFkZGluZyBnZW5lcmljXG4gICAgZnVuY3Rpb25hbGl0eSBieSBpbmNsdWRpbmcgZnVuY3RvcnMgdGhhdCBtYWtlIHRoZW0gYmluYWJsZSwgY29tcGFyYWJsZSwgc2V4cGFibGUsXG4gICAgYmxpdGFibGUsIGV0Yy4gIFRoZSBidWxrIG9mIENvcmUsIHRob3VnaCwgaXMgbW9kdWxlcyBwcm92aWRpbmcgZW50aXJlbHkgbmV3XG4gICAgZnVuY3Rpb25hbGl0eS4gKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcmcgPSBBcmdcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCYWcgPSBCYWdcbm1vZHVsZSBCaWdidWZmZXIgPSBCaWdidWZmZXJcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmdcbm1vZHVsZSBCaWdzdWJzdHJpbmcgPSBCaWdzdWJzdHJpbmdcbm1vZHVsZSBCaW5fcHJvdCA9IENvcmVfYmluX3Byb3Rcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmdcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQm91bmRlZF9pbmRleCA9IEJvdW5kZWRfaW5kZXhcbm1vZHVsZSBCdWZmZXIgPSBCYXNlLkJ1ZmZlclxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENhbWwgPSBDYW1sIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMy0wMV0gdXNlIFN0ZGxpYiBpbnN0ZWFkIG9mIENhbWxcIl1cbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbW1hbmQgPSBDb21tYW5kX2ludGVybmFsXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBDb250YWluZXJfaW50ZiA9IENvbnRhaW5lcl9pbnRmXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxubW9kdWxlIENvcmVfa2VybmVsX3N0YWJsZSA9IFN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfc3RhYmxlXSAtLSBbQ29yZV9rZXJuZWxdIHdhcyByZW5hbWVkIGFzIFtDb3JlXVwiXVxuXG5tb2R1bGUgQ29yZV9zdGFibGUgPSBTdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWtcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgRGVxdWUgPSBEZXF1ZVxubW9kdWxlIERlcml2aW5nX2hhc2ggPSBEZXJpdmluZ19oYXNoXG5tb2R1bGUgRGlnZXN0ID0gTWQ1IFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNy0wNV0gVXNlIE1kNSBpbnN0ZWFkLlwiXVxubW9kdWxlIERvdWJseV9saW5rZWQgPSBEb3VibHlfbGlua2VkXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uID0gU3RkbGliLkVwaGVtZXJvblxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBFeHBlY3RfdGVzdF9jb25maWdcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWVcbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb25cbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlXG5tb2R1bGUgR2MgPSBHY1xubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWVcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSGFzaHRibF9pbnRmID0gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGVhcF9ibG9jayA9IEhlYXBfYmxvY2tcbm1vZHVsZSBIZXhkdW1wID0gSGV4ZHVtcFxubW9kdWxlIEhleGR1bXBfaW50ZiA9IEhleGR1bXBfaW50ZlxubW9kdWxlIEhvc3RfYW5kX3BvcnQgPSBIb3N0X2FuZF9wb3J0XG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW1tZWRpYXRlX29wdGlvbiA9IEltbWVkaWF0ZV9vcHRpb25cbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uX2ludGYgPSBJbW1lZGlhdGVfb3B0aW9uX2ludGZcbm1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9pbnRmID0gSW50X2ludGZcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRlcmZhY2VzID0gSW50ZXJmYWNlc1xubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlua2VkX3F1ZXVlID0gTGlua2VkX3F1ZXVlXG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXBfaW50ZiA9IE1hcF9pbnRmXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1kNSA9IE1kNVxubW9kdWxlIE1lbW8gPSBNZW1vXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE1vbnRoID0gTW9udGhcblxubW9kdWxlIE11dGV4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAyXSBVc2UgW0Vycm9yX2NoZWNraW5nX211dGV4XSBvciBbQ2FtbF90aHJlYWRzLk11dGV4XVwiXVxuXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm9fcG9seW1vcnBoaWNfY29tcGFyZSA9IE5vX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9ubHlfaW5fdGVzdCA9IE9ubHlfaW5fdGVzdFxubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IE9wdGlvbmFsX3N5bnRheFxubW9kdWxlIE9wdGlvbmFsX3N5bnRheF9pbnRmID0gT3B0aW9uYWxfc3ludGF4X2ludGZcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50XG5tb2R1bGUgUGVybXMgPSBQZXJtc1xubW9kdWxlIFBpZCA9IFBpZFxubW9kdWxlIFBvbHkgPSBQb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZXhjID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUXVpY2tjaGVjayA9IFF1aWNrY2hlY2tcbm1vZHVsZSBRdWlja2NoZWNrX2ludGYgPSBRdWlja2NoZWNrX2ludGZcbm1vZHVsZSBRdWlja2NoZWNrYWJsZSA9IFF1aWNrY2hlY2thYmxlXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0bHlfY29tcGFyYWJsZVxubW9kdWxlIFNlcXVlbmNlID0gU2VxdWVuY2Vcbm1vZHVsZSBTZXQgPSBTZXRcbm1vZHVsZSBTZXRfaW50ZiA9IFNldF9pbnRmXG5tb2R1bGUgU2V0X29uY2UgPSBTZXRfb25jZVxubW9kdWxlIFNleHBfbWF5YmUgPSBTZXhwLlNleHBfbWF5YmVcblxubW9kdWxlIFNleHAgPSBTZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbmFsID0gU2lnbmFsXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTcGxpdHRhYmxlX3JhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tXG5tb2R1bGUgU3RhYmxlX2NvbXBhcmFibGUgPSBTdGFibGVfY29tcGFyYWJsZVxubW9kdWxlIFN0YWJsZV91bml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0XG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IEJhc2UuU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nX2lkID0gU3RyaW5nX2lkXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTdWJzdHJpbmcgPSBTdWJzdHJpbmdcbm1vZHVsZSBTdWJzdHJpbmdfaW50ZiA9IFN1YnN0cmluZ19pbnRmXG5tb2R1bGUgU3lzID0gQ29yZV9zeXNcblxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFtDb3JlX3RocmVhZF0gb3IgW0NhbWxfdGhyZWFkcy5UaHJlYWRdXCJdXG5cbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTExXSBVc2UgW1RpbWVfZmxvYXRdIG9yIFtUaW1lX2Zsb2F0X3VuaXhdIGluc3RlYWRcIl1cblxubW9kdWxlIFRpbWVfZmxvYXQgPSBUaW1lX2Zsb2F0XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUdXBsZSA9IFR1cGxlXG5tb2R1bGUgVHVwbGUyID0gVHVwbGUuVDJcbm1vZHVsZSBUdXBsZTMgPSBUdXBsZS5UM1xubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBUeXBlX2ltbWVkaWFjeVxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gVW5pZm9ybV9hcnJheVxubW9kdWxlIFVuaW9uX2ZpbmQgPSBVbmlvbl9maW5kXG5tb2R1bGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkXG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVbml0X29mX3RpbWUgPSBVbml0X29mX3RpbWVcbm1vZHVsZSBVbml2X21hcCA9IFVuaXZfbWFwXG5cbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDIwLTAzXSBDb3JlIHNoYWRvd3MgVW5peC4gVXNlIENvcmVfdW5peCwgd2hpY2ggb3ZlcnJpZGVzIHNvbWUgb2YgVW5peCdzIFxcXG4gICBiZWhhdmlvci4gSWYgbmVjZXNzYXJ5LCBVbml4IGlzIGF2YWlsYWJsZSBhbmQgdW5zaGFkb3dlZCBhcyBDYW1sX3VuaXguXCJdXG5cbm1vZHVsZSBWYWxpZGF0ZSA9IFZhbGlkYXRlXG5tb2R1bGUgVmFsaWRhdGVkID0gVmFsaWRhdGVkXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXZWFrID0gV2Vha1xubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxubW9kdWxlIHR5cGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkLklkXG5cbmluY2x1ZGUgVCAoKiogQG9wZW4gKilcblxuaW5jbHVkZSBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTm90X2ZvdW5kXG5cbigqKiB7MiBUb3AtbGV2ZWwgdmFsdWVzfSAqKVxuXG5leHRlcm5hbCBwaHlzX2VxdWFsIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcVwiXG5cbnR5cGUgJ2EgX21heWJlX2JvdW5kID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcblxubGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxubGV0IGRvZXNfcmFpc2UgPSBFeG4uZG9lc19yYWlzZVxubGV0IHNlYyA9IFRpbWVfZmxvYXQuU3Bhbi5vZl9zZWNcbmxldCAoIF4vICkgPSBGaWxlbmFtZS5jb25jYXRcblxuKCoqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgICBbQ29yZV0uICBJZiB0aGlzIHdlcmUgaW4gYW5vdGhlciBtb2R1bGUgaW4gW0NvcmVdIHRoYXQgd2FzIG5vdCB1c2VkIGluIHNvbWUgcHJvZ3JhbSxcbiAgICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIENvcmU7IHJlZmVycmluZyB0byB2YWx1ZXMgaW5cbiAgICBbQ29yZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gRXhuLmluaXRpYWxpemVfbW9kdWxlICgpXG5cbigqKiBUbyBiZSB1c2VkIGluIGltcGxlbWVudGluZyBDb3JlLCBidXQgbm90IGJ5IGVuZCB1c2Vycy4gKilcbm1vZHVsZSBDb3JlX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpZ2l0X3N0cmluZ19oZWxwZXJzID0gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbiAgbW9kdWxlIFRpbWVfem9uZSA9IFpvbmVcbiAgbW9kdWxlIE9mZGF5X2hlbHBlcnMgPSBPZmRheV9oZWxwZXJzXG4gIG1vZHVsZSBTcGFuX2Zsb2F0ID0gU3Bhbl9mbG9hdFxuXG4gIG1vZHVsZSBCaWdidWZmZXJfaW50ZXJuYWwgPSBCaWdidWZmZXJfaW50ZXJuYWxcbiAgbW9kdWxlIFN0YWJsZV9pbnRlcm5hbCA9IFN0YWJsZV9pbnRlcm5hbFxuICBtb2R1bGUgU3RkX2ludGVybmFsID0gU3RkX2ludGVybmFsXG5cbiAgbW9kdWxlIFRpbWVfbnNfYWx0ZXJuYXRlX3NleHAgPSBUaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5lbmRcblxubW9kdWxlIENvcmVfa2VybmVsX3ByaXZhdGUgPSBDb3JlX3ByaXZhdGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNV0gVXNlIFtDb3JlX3ByaXZhdGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG4iLCJpbmNsdWRlIENvbW1hbmQuU2hhcGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBTdGFibGVfaW50ZXJuYWxcbiAgb3BlbiEgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuR3JhbW1hci5WMVxuXG4gICAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLkdyYW1tYXIuVjEudCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgICAgWyVleHBlY3Qge3wgYTE3ZmQzNGVjMjEzZTUwOGRiNDUwZjY0NjlmN2ZlOTkgfH1dXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5WMlxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5WMi50ID1cbiAgICAgICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICAgICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDgxZDllYzE2NzkwM2Y4ZjhjNDljYmY4ZTNmYjNhNjYgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRmxhZ19pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkZsYWdfaW5mby5WMVxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GbGFnX2luZm8uVjEudCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBiZDhkNmZiN2E2NjJkMmMwYjVlMGQyMDI2YzZkMmQyMSB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuQmFzZV9pbmZvLlYyXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkJhc2VfaW5mby5WMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGFub25zIDogQW5vbnMuVjIudFxuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA4ZmFhYzFlOGQ5ZGViMGJhYWE1NmFjOGViZjg1YjQ5OCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gICAgdHlwZSBhID0gRHVtbXlfdHlwZV9iZWNhdXNlX3dlX2Nhbm5vdF9kaWdlc3RfdHlwZV9jb25zdHJ1Y3RvcnNfb25seV9jb25jcmV0ZV90eXBlc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Hcm91cF9pbmZvLlYyXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIENvbW1hbmQuU2hhcGUuU3RhYmxlLkdyb3VwX2luZm8uVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC5TdGFibGUuVjEudCBMYXp5LlN0YWJsZS5WMS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogYSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMmNjM2VlYjU4ZDEyZDhmZTQ0MDAwMDllNTkyZDc4MjcgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkV4ZWNfaW5mby5WM1xuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5FeGVjX2luZm8uVjMudCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGMwYzgyNTZlOTIzOGNkZDhmMmVjMWY4Nzg1ZTAyYWUwIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GdWxseV9mb3JjZWQuVjFcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuRnVsbHlfZm9yY2VkLlYxLnQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOTgxMTU0ZWYzOTE5NDM3YzZjODIyNjE5ODgyODQxZDQgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSWRlbnRcbiAgICB8IEZ1bmN0aW9uXG4gICAgfCBBdGtleXdvcmRcbiAgICB8IEhhc2hcbiAgICB8IFN0cmluZ1xuICAgIHwgVXJpXG4gICAgfCBEZWxpbVxuICAgIHwgTnVtYmVyXG4gICAgfCBQZXJjZW50YWdlXG4gICAgfCBEaW1lbnNpb25cbiAgICB8IFdoaXRlX3NwYWNlXG4gICAgfCBDb2xvblxuICAgIHwgU2VtaV9jb2xvblxuICAgIHwgQ29tbWFcbiAgICB8IExicmFja2V0XG4gICAgfCBSYnJhY2tldFxuICAgIHwgTHBhcmVuXG4gICAgfCBScGFyZW5cbiAgICB8IExjdXJseVxuICAgIHwgUmN1cmx5XG4gICAgfCBDb21tZW50XG4gICAgfCBFb2ZcbiAgICB8IEVycm9yXG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgKCogc3RhcnQgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKilcbiAgICBtdXRhYmxlIGxlbiA6IGludFxuICA7ICgqIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgY3VycmVudCA6IFRva2VuLnRcbiAgfVxuXG50eXBlIG1hcmsgPSBNYXJrIG9mIGludCBbQEB1bmJveGVkXVxuXG5sZXQgbWFyayB0ID0gTWFyayB0LmxlblxubGV0IHNvdXJjZSB0ID0gdC5zXG5sZXQgbmV4dF9wb3MgdCA9IHQub2ZmICsgdC5sZW5cbmxldCBpc19uZXh0X2VvZiB0ID0gbmV4dF9wb3MgdCA+PSBTdHJpbmcubGVuZ3RoIHQuc1xubGV0IG5leHRfY2hhciB0ID0gdC5zLltuZXh0X3BvcyB0XVxubGV0IHJlc2V0IHQgKE1hcmsgdikgPSB0LmxlbiA8LSB2XG5sZXQgY29uc3VtZV8xIHQgPSB0LmxlbiA8LSB0LmxlbiArIDFcbmxldCBjb25zdW1lX24gdCBuID0gdC5sZW4gPC0gdC5sZW4gKyBuXG5cbmxldCBvbmVfY2hhcl90b2tlbiB0IHRvayA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgY29uc3VtZV8xIHQ7XG4gIHQuY3VycmVudCA8LSB0b2tcbjs7XG5cbmV4Y2VwdGlvbiBFcnJvcl9oYXBwZW5lZFxuXG5sZXQgZXJyb3IgdCA9XG4gIHQuY3VycmVudCA8LSBFcnJvcjtcbiAgcmFpc2UgRXJyb3JfaGFwcGVuZWRcbjs7XG5cbmxldCBhY2NlcHQgdCBmID1cbiAgaWYgKG5vdCAoaXNfbmV4dF9lb2YgdCkpICYmIGYgKG5leHRfY2hhciB0KVxuICB0aGVuIChcbiAgICBjb25zdW1lXzEgdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgYWNjZXB0X2NoYXIgdCBjaCA9IGFjY2VwdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgYWNjZXB0X3N0cmluZyB0IHN0ciA9XG4gIGlmIFN0cmluZy5sZW5ndGggc3RyID0gMFxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IHBvcyA9IG5leHRfcG9zIHQgaW5cbiAgICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgcG9zICsgc3RyX2xlbiA+IFN0cmluZy5sZW5ndGggdC5zXG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCB0LnMgfnBvcyB+c3Vic3RyaW5nOnN0clxuICAgIHRoZW4gKFxuICAgICAgY29uc3VtZV9uIHQgc3RyX2xlbjtcbiAgICAgIHRydWUpXG4gICAgZWxzZSBmYWxzZSlcbjs7XG5cbmxldCBleHBlY3QgdCBmID0gaWYgYWNjZXB0IHQgZiB0aGVuICgpIGVsc2UgZXJyb3IgdFxubGV0IGV4cGVjdF9jaGFyIHQgY2ggPSBleHBlY3QgdCAoQ2hhci5lcXVhbCBjaClcblxubGV0IG1hbnkgdCBmID1cbiAgd2hpbGUgKG5vdCAoaXNfbmV4dF9lb2YgdCkpICYmIGYgKG5leHRfY2hhciB0KSBkb1xuICAgIGNvbnN1bWVfMSB0XG4gIGRvbmVcbjs7XG5cbmxldCBtYW55MSB0IGYgPVxuICBleHBlY3QgdCBmO1xuICBtYW55IHQgZlxuOztcblxubGV0IHBsdXNfb3JfbWludXMgPSBmdW5jdGlvblxuICB8ICctJyB8ICcrJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG5tc3RhcnQgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1jaGFyID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyB8ICcwJyAuLiAnOScgfCAnLScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpZGVudCB0ID1cbiAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgdGhlblxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nXG4gICAgdGhlbiBtYW55IHQgbm1jaGFyXG4gICAgZWxzZSAoXG4gICAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgICAgbWFueSB0IG5tY2hhcilcbiAgZWxzZSAoXG4gICAgZXhwZWN0IHQgbm1zdGFydDtcbiAgICBtYW55IHQgbm1jaGFyKVxuOztcblxubGV0IGlkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBpZGVudCB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICcoJyB0aGVuIHQuY3VycmVudCA8LSBGdW5jdGlvbiBlbHNlIHQuY3VycmVudCA8LSBJZGVudFxuOztcblxubGV0IGlzX3doaXRlc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxuJyB8ICdcXHgwYycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZSA9XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpIHF1b3RlKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgfCAnXFxuJyB8ICdcXHInIHwgJ1xceDBjJyB8ICdcXFxcJyAtPiBmYWxzZVxuICAgICAgfCBjIHdoZW4gQ2hhci5lcXVhbCBjIHF1b3RlIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnXFxcXCdcbiAgICB0aGVuXG4gICAgICBpZiBhY2NlcHRfY2hhciB0IHF1b3RlXG4gICAgICB0aGVuIGxvb3AgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBuZXh0X2NoYXIgdCB3aXRoXG4gICAgICAgIHwgJ1xcbicgfCAnXFx4MGMnIC0+XG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgaWdub3JlIChhY2NlcHRfY2hhciB0ICdcXG4nIDogYm9vbCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgICB8IF9jIC0+XG4gICAgICAgICAgKCogSGFuZGxlIHRoZSBcImVzY2FwZVwiIHJ1bGU6XG4gICAgICAgICAgICAge3ZcbiAgICAgICAgICAgICAgICB1bmljb2RlOiBcXFxcWzAtOWEtZl17MSw2fShcXHJcXG58WyBcXG5cXHJcXHRcXGZdKT9cbiAgICAgICAgICAgICAgICBlc2NhcGUgOiB7dW5pY29kZX18XFxcXFteXFxuXFxyXFxmMC05YS1mXVxuICAgICAgICAgICAgICB2fVxuICAgICAgICAgICopXG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKTtcbiAgZXhwZWN0X2NoYXIgdCBxdW90ZVxuOztcblxubGV0IHN0YXJ0X251bSB0ID1cbiAgbGV0IGN1ciA9IG1hcmsgdCBpblxuICBsZXQgYiA9XG4gICAgaWdub3JlIChhY2NlcHQgdCBwbHVzX29yX21pbnVzIDogYm9vbCk7XG4gICAgaWdub3JlIChhY2NlcHRfY2hhciB0ICcuJyA6IGJvb2wpO1xuICAgIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBzdGFydF9pZGVudCB+cHJlZml4IHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBhY2NlcHRfc3RyaW5nIHQgcHJlZml4XG4gICAgJiZcbiAgICBpZiBhY2NlcHRfY2hhciB0ICctJyB0aGVuIGFjY2VwdF9jaGFyIHQgJy0nIHx8IGFjY2VwdCB0IG5tc3RhcnQgZWxzZSBhY2NlcHQgdCBubXN0YXJ0XG4gIGluXG4gIHJlc2V0IHQgY3VyO1xuICBiXG47O1xuXG5sZXQgcXVvdGVkX3N0cmluZyB0IH5xdW90ZSA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgcXVvdGVkX3N0cmluZycgdCB+cXVvdGU7XG4gIHQuY3VycmVudCA8LSBTdHJpbmdcbjs7XG5cbmxldCBleHBvbmVudGlhbF9wYXJ0IHQgPVxuICBsZXQgbWFyayA9IG1hcmsgdCBpblxuICBpZiBhY2NlcHQgdCAoZnVuY3Rpb25cbiAgICB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuXG4gICAgaWYgYWNjZXB0IHQgcGx1c19vcl9taW51c1xuICAgIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZSBpZiBhY2NlcHQgdCBDaGFyLmlzX2RpZ2l0XG4gICAgdGhlbiBtYW55IHQgQ2hhci5pc19kaWdpdFxuICAgIGVsc2VcbiAgICAgICgqIEJhY2t0cmFjayBpZiB0aGVyZSBhcmUgbm8gZGlnaXRzIG9yIHNpZ25zIGFmdGVyIHRoZSAnZScgYmVjYXVzZVxuICAgICAgICAgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgJ2UnIHdhcyBhY3R1YWxseSBhIHBhcnQgb2Ygc29tZXRoaW5nIGVsc2UuIEZvclxuICAgICAgICAgZXhhbXBsZSwgdGhlICdlJyBjb3VsZCBiZSBwYXJ0IG9mIGFuICdlbScgb3IgJ2VuJyBkaW1lbnNpb24gaW5zdGVhZFxuICAgICAgICAgb2YgYmVnaW5uaW5nIHRoZSBleHBvbmVudGlhbCBwYXJ0IG9mIGEgc2NpZW50aWZpYyBub3RhdGlvbiBudW1iZXIuXG5cbiAgICAgICAgIEV4YW1wbGU6IDEuMmUzIGlzIHNjaWVudGlmaWMgbm90YXRpb24sIGJ1dCAxLjJlbSBpcyBhIG51bWJlciB3aXRoIGFcbiAgICAgICAgIGRpbWVuc2lvbi4gKilcbiAgICAgIHJlc2V0IHQgbWFya1xuOztcblxubGV0IG51bSB0ID1cbiAgaWdub3JlIChhY2NlcHQgdCBwbHVzX29yX21pbnVzIDogYm9vbCk7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJy4nXG4gIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0XG4gIGVsc2UgKFxuICAgIG1hbnkxIHQgQ2hhci5pc19kaWdpdDtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICcuJyB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdCk7XG4gIGV4cG9uZW50aWFsX3BhcnQgdFxuOztcblxubGV0IG51bWJlcl9vcl9wZXJjZW50YWdlX29yX2RpbWVuc2lvbiB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBudW0gdDtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnJSdcbiAgdGhlbiB0LmN1cnJlbnQgPC0gUGVyY2VudGFnZVxuICBlbHNlIGlmIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJcIiB0XG4gIHRoZW4gKFxuICAgIGlkZW50IHQ7XG4gICAgdC5jdXJyZW50IDwtIERpbWVuc2lvbilcbiAgZWxzZSB0LmN1cnJlbnQgPC0gTnVtYmVyXG47O1xuXG5sZXQgaGFzaF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnIycpO1xuICBjb25zdW1lXzEgdDtcbiAgaWYgYWNjZXB0IHQgbm1jaGFyXG4gIHRoZW4gKFxuICAgIG1hbnkxIHQgbm1jaGFyO1xuICAgIHQuY3VycmVudCA8LSBIYXNoKVxuICBlbHNlIHQuY3VycmVudCA8LSBEZWxpbVxuOztcblxubGV0IGF0a2V5d29yZCB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnQCcpO1xuICBjb25zdW1lXzEgdDtcbiAgaWRlbnQgdDtcbiAgdC5jdXJyZW50IDwtIEF0a2V5d29yZFxuOztcblxubGV0IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAndScpO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCJ1cmwoXCJcbiAgdGhlbiAoXG4gICAgbGV0IG0gPSBtYXJrIHQgaW5cbiAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICBpZiBDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ1wiJyB8fCBDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ1xcJydcbiAgICB0aGVuIChcbiAgICAgIHJlc2V0IHQgbTtcbiAgICAgIHQuY3VycmVudCA8LSBGdW5jdGlvbilcbiAgICBlbHNlIChcbiAgICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgICAgfCAnKScgfCAnICcgLT4gZmFsc2VcbiAgICAgICAgfCAnXFwnJyB8ICdcIicgfCAnKCcgLT4gZXJyb3IgdFxuICAgICAgICB8IGMgd2hlbiBDaGFyLmlzX3ByaW50IGMgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZXJyb3IgdCk7XG4gICAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICAgIGV4cGVjdF9jaGFyIHQgJyknO1xuICAgICAgdC5jdXJyZW50IDwtIFVyaSkpXG4gIGVsc2UgaWRlbnRfb3JfZnVuY3Rpb24gdFxuOztcblxubGV0IGNvbW1lbnRfb3JfZGVsaW0gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgaWYgYWNjZXB0X3N0cmluZyB0IFwiLypcIlxuICB0aGVuIChcbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcqJyAtPiBmYWxzZVxuICAgICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIqL1wiXG4gICAgICB0aGVuIHQuY3VycmVudCA8LSBDb21tZW50XG4gICAgICBlbHNlIGlmIGFjY2VwdF9jaGFyIHQgJyonXG4gICAgICB0aGVuIGxvb3AgKClcbiAgICAgIGVsc2UgZXJyb3IgdFxuICAgIGluXG4gICAgbG9vcCAoKSlcbiAgZWxzZSAoXG4gICAgZXhwZWN0X2NoYXIgdCAnLyc7XG4gICAgdC5jdXJyZW50IDwtIERlbGltKVxuOztcblxubGV0IG5leHQgdCA9XG4gIGxldCBuZXdfb2ZmID0gbmV4dF9wb3MgdCBpblxuICB0Lm9mZiA8LSBuZXdfb2ZmO1xuICB0LmxlbiA8LSAwO1xuICBpZiBpc19uZXh0X2VvZiB0XG4gIHRoZW4gdC5jdXJyZW50IDwtIEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBuZXh0X2NoYXIgdCB3aXRoXG4gICAgfCBjIHdoZW4gaXNfd2hpdGVzcGFjZSBjIC0+XG4gICAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICAgIHQuY3VycmVudCA8LSBXaGl0ZV9zcGFjZVxuICAgIHwgJzonIC0+IG9uZV9jaGFyX3Rva2VuIHQgQ29sb25cbiAgICB8ICc7JyAtPiBvbmVfY2hhcl90b2tlbiB0IFNlbWlfY29sb25cbiAgICB8ICd7JyAtPiBvbmVfY2hhcl90b2tlbiB0IExjdXJseVxuICAgIHwgJ30nIC0+IG9uZV9jaGFyX3Rva2VuIHQgUmN1cmx5XG4gICAgfCAnWycgLT4gb25lX2NoYXJfdG9rZW4gdCBMYnJhY2tldFxuICAgIHwgJ10nIC0+IG9uZV9jaGFyX3Rva2VuIHQgUmJyYWNrZXRcbiAgICB8ICcoJyAtPiBvbmVfY2hhcl90b2tlbiB0IExwYXJlblxuICAgIHwgJyknIC0+IG9uZV9jaGFyX3Rva2VuIHQgUnBhcmVuXG4gICAgfCAnLCcgLT4gb25lX2NoYXJfdG9rZW4gdCBDb21tYVxuICAgIHwgKCdcXCcnIHwgJ1wiJykgYXMgcXVvdGUgLT4gcXVvdGVkX3N0cmluZyB0IH5xdW90ZVxuICAgIHwgKCcwJyAuLiAnOScgfCAnLicgfCAnKycgfCAnLScpIHdoZW4gc3RhcnRfbnVtIHQgLT5cbiAgICAgIG51bWJlcl9vcl9wZXJjZW50YWdlX29yX2RpbWVuc2lvbiB0XG4gICAgfCAnLycgLT4gY29tbWVudF9vcl9kZWxpbSB0XG4gICAgfCAnIycgLT4gaGFzaF9vcl9kZWxpbSB0XG4gICAgfCAnQCcgd2hlbiBzdGFydF9pZGVudCB+cHJlZml4OlwiQFwiIHQgLT4gYXRrZXl3b3JkIHRcbiAgICB8ICd1JyAtPiB1cmlfb3JfaWRlbnRfb3JfZnVuY3Rpb24gdFxuICAgIHwgXyAtPlxuICAgICAgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgICAgIHRoZW4gaWRlbnRfb3JfZnVuY3Rpb24gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAoKiB0aGlzIGlzIHdlaXJkIGJ1dCB0aGUgc3BlYyBpcyB3ZWlyZCAqKVxuICAgICAgICB0LmN1cnJlbnQgPC0gRGVsaW0pKVxuOztcblxubGV0IG5leHQgdCA9XG4gICgqIE1ha2Ugc3VyZSB3ZSBhcmUgaWRlbXBvdGVudCB3aGVuIHdlIGdldCBpbnRvIHRoZSBlcnJvciBzdGF0ZSAqKVxuICBpZiBUb2tlbi5lcXVhbCB0LmN1cnJlbnQgRXJyb3JcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICB0cnkgbmV4dCB0IHdpdGhcbiAgICB8IEVycm9yX2hhcHBlbmVkIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBzID1cbiAgKCogY3VycmVudCBpcyBkdW1teSBhbmQgd2lsbCBiZSBzZXQgYnkgY2FsbCB0byBuZXh0ICopXG4gIGxldCB0ID0geyBzOyBvZmYgPSAwOyBsZW4gPSAwOyBjdXJyZW50ID0gV2hpdGVfc3BhY2UgfSBpblxuICBuZXh0IHQ7XG4gIHRcbjs7XG5cbmxldCBzbGljZSB0ID0gdC5vZmYsIHQubGVuXG5sZXQgY3VycmVudCB0ID0gdC5jdXJyZW50XG5cbmxldCBjdXJyZW50X3RleHQgdCA9XG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFb2ZcbiAgdGhlbiBcIlwiXG4gIGVsc2UgKFxuICAgIGxldCBwb3MsIGxlbiA9IHNsaWNlIHQgaW5cbiAgICBTdHJpbmcuc3ViIHQucyB+cG9zIH5sZW4pXG47O1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHQgPSBjcmVhdGUgcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBsZXQgc3RhcnQsIGxlbiA9IHNsaWNlIHQgaW5cbiAgICBsZXQgYWNjID0gKGN1cnJlbnQgdCwgc3RhcnQsIGxlbikgOjogYWNjIGluXG4gICAgaWYgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRW9mIHx8IFRva2VuLmVxdWFsIChjdXJyZW50IHQpIEVycm9yXG4gICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICBlbHNlIChcbiAgICAgIG5leHQgdDtcbiAgICAgIGxvb3AgYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgdGVzdCBzID1cbiAgICAgIHByaW50X2VuZGxpbmVcbiAgICAgICAgKFNleHAudG9fc3RyaW5nX21hY2ggKFslc2V4cF9vZjogKFRva2VuLnQgKiBpbnQgKiBpbnQpIGxpc3RdICh0b19saXN0IHMpKSlcbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZW9mXCIgPVxuICAgICAgdGVzdCBcIlwiO1xuICAgICAgWyVleHBlY3Qge3woKEVvZiAwIDApKXx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzaW1wbGVfdG9rZW5zXCIgPVxuICAgICAgdGVzdCBcIikoe31bXTs6XCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKFJwYXJlbiAwIDEpKExwYXJlbiAxIDEpKExjdXJseSAyIDEpKFJjdXJseSAzIDEpKExicmFja2V0IDQgMSkoUmJyYWNrZXQgNSAxKShTZW1pX2NvbG9uIDYgMSkoQ29sb24gNyAxKShFb2YgOCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImlkZW50XCIgPVxuICAgICAgdGVzdCBcIi1mb28tYmFyOiBiYXpcIjtcbiAgICAgIHRlc3QgXCItZm9vLWJhcihcIjtcbiAgICAgIHRlc3QgXCJAZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIkAtZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIkAtLWZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCItLXZhclwiO1xuICAgICAgdGVzdCBcIlJHQkFcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDgpKENvbG9uIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChGdW5jdGlvbiAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgOCkoRW9mIDggMCkpXG4gICAgKChBdGtleXdvcmQgMCA5KShFb2YgOSAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDEwKShFb2YgMTAgMCkpXG4gICAgKChJZGVudCAwIDUpKEVvZiA1IDApKVxuICAgICgoSWRlbnQgMCA0KShFb2YgNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIndoaXRlc3BhY2VcIiA9XG4gICAgICB0ZXN0IFwiICBcIjtcbiAgICAgIFslZXhwZWN0IHt8KChXaGl0ZV9zcGFjZSAwIDIpKEVvZiAyIDApKXx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJudW1iZXJzXCIgPVxuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW5cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWVtXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVpblwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAzY21cIjtcbiAgICAgIHRlc3QgXCJsaW5lLWhlaWdodDogMTIwJVwiO1xuICAgICAgdGVzdCBcImdyaWQ6IDAgMSBmb29cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNS1pblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZSsyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZS0yMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRSsyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRS0yMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlMjBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShEaW1lbnNpb24gMTMgMykoRW9mIDE2IDApKVxuICAgICgoSWRlbnQgMCAxMSkoQ29sb24gMTEgMSkoV2hpdGVfc3BhY2UgMTIgMSkoUGVyY2VudGFnZSAxMyA0KShFb2YgMTcgMCkpXG4gICAgKChJZGVudCAwIDQpKENvbG9uIDQgMSkoV2hpdGVfc3BhY2UgNSAxKShOdW1iZXIgNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDEpKFdoaXRlX3NwYWNlIDkgMSkoSWRlbnQgMTAgMykoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNikoRW9mIDE0IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNikoRW9mIDE0IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNikoRW9mIDE0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiYmFkbHlfcXVvdGVkXCIgPVxuICAgICAgdGVzdCBcIidmb28gYmFyXCI7XG4gICAgICB0ZXN0IFwiJ1wiO1xuICAgICAgdGVzdCBcIidcXFxcJ1wiO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAoKEVycm9yIDAgOCkpXG4gICAgKChFcnJvciAwIDEpKVxuICAgICgoRXJyb3IgMCAzKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInF1b3RlZFwiID1cbiAgICAgIHRlc3Qge3wnRm9vICdcIkJhclwiJzsnICdcXCcnIFwiXFxcIlwifH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKFN0cmluZyAwIDYpKFN0cmluZyA2IDUpKFN0cmluZyAxMSAzKShXaGl0ZV9zcGFjZSAxNCAxKShTdHJpbmcgMTUgNCkoV2hpdGVfc3BhY2UgMTkgMSkoU3RyaW5nIDIwIDQpKEVvZiAyNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImNvbG9yc1wiID1cbiAgICAgIHRlc3Qge3xjb2xvcjogI2YwMHx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIHRlc3Qge3xjb2xvcjogcmdiKDI1NSwwLDApfH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoSGFzaCA3IDQpKEVvZiAxMSAwKSlcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEZ1bmN0aW9uIDcgNCkoTnVtYmVyIDExIDMpKENvbW1hIDE0IDEpKE51bWJlciAxNSAxKShDb21tYSAxNiAxKShOdW1iZXIgMTcgMSkoUnBhcmVuIDE4IDEpKEVvZiAxOSAwKSlcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEZ1bmN0aW9uIDcgNCkoTnVtYmVyIDExIDMpKENvbW1hIDE0IDEpKE51bWJlciAxNSAxKShDb21tYSAxNiAxKShOdW1iZXIgMTcgMSkoUnBhcmVuIDE4IDEpKEVvZiAxOSAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImltcG9ydFwiID1cbiAgICAgIHRlc3Qge3xAaW1wb3J0IFwiZm9vLmJhclwiO3x9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChBdGtleXdvcmQgMCA3KShXaGl0ZV9zcGFjZSA3IDEpKFN0cmluZyA4IDkpKFNlbWlfY29sb24gMTcgMSkoRW9mIDE4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicmVkIGV4YW1wbGVcIiA9XG4gICAgICB0ZXN0IFwicmVkLS0+XCI7XG4gICAgICBbJWV4cGVjdCB7fCAoKElkZW50IDAgNSkoRGVsaW0gNSAxKShFb2YgNiAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInVybFwiID1cbiAgICAgIHRlc3Qge3x1cmwoIFwiaHR0cDovL3d3d3cuZ29vZ2xlLmNvbVwiKXx9O1xuICAgICAgdGVzdCB7fHVybCgnaHR0cDovL3d3d3cuZ29vZ2xlLmNvbScpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyApfH07XG4gICAgICB0ZXN0IHt8dXJsKCAgaHR0cDovL3d3d3cuZ29vZ2xlLmNvbSApfH07XG4gICAgICB0ZXN0IHt8dXJsKCAgaHR0cDovL3d3d3cuZ29vZ2xlLlwiY29tICl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChGdW5jdGlvbiAwIDQpKFdoaXRlX3NwYWNlIDQgMSkoU3RyaW5nIDUgMjQpKFJwYXJlbiAyOSAxKShFb2YgMzAgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShScGFyZW4gMjggMSkoRW9mIDI5IDApKVxuICAgICgoRnVuY3Rpb24gMCA0KShTdHJpbmcgNCAyNCkoV2hpdGVfc3BhY2UgMjggMSkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKFVyaSAwIDMwKShFb2YgMzAgMCkpXG4gICAgKChFcnJvciAwIDI1KSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImVzY2FwZVwiID1cbiAgICAgIHRlc3Qge3xcInRlc3RcXDE5YWJmMlxcMlwifH07XG4gICAgICB0ZXN0IHt8XCJcXDAxMFxceEZGYVxcbzEyM1xcblxcXFxcXHV7MTIzNDV9YWHwn5Cq8J+QqvCfkKrwn5Cq8J+QqlwifH07XG4gICAgICB0ZXN0IHt8XCLihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtlwifH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoU3RyaW5nIDAgMTUpKEVvZiAxNSAwKSlcbiAgICAoKFN0cmluZyAwIDUxKShFb2YgNTEgMCkpXG4gICAgKChTdHJpbmcgMCA0OSkoRW9mIDQ5IDApKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogUmVjdXJzaXZlIGRlc2NlbnQgcGFyc2Vycy4gIEEgcGFyc2VyIHJldHVybnMgZmFsc2UgaWYgYmFzZWQgb24gYVxuICAgc2luZ2xlIHRva2VuIGxvb2thaGVhZCBpdCBkZWNpZGVzIHRoYXQgdGhlIGdpdmVuIHRleHQgY2FuIG5vdCBiZVxuICAgcGFyc2VkLiAgQW55IG90aGVyIHBhcnNlIGVycm9ycyBhcmUgaGFuZGxlZCBieSByYWlzaW5nIGV4Y2VwdGlvbnMuXG5cbiAgIFNvbWUgcGFyc2VycyByZXR1cm4gdW5pdCBiZWNhdXNlIHdlIG9ubHkgY2FsbCB0aGVtIHdoZW4gYSBmYWlsdXJlXG4gICB0byBwYXJzZSBpbXBsaWVzIGEgcGFyc2UgZXJyb3IgKGFuZCBub3QgdGhhdCBzb21lIHBhcnNlciBoaWdoZXIgdXBcbiAgIGluIHRoZSBjYWxsIGNoYWluIHNob3VsZCB0cnkgdG8gcGFyc2Ugc29tZXRoaW5nIGVsc2UpLlxuXG4gICBGb3Igc2ltcGxpY2l0eSB0aGUgcGFyc2VycyB0aGVtc2VsdmVzIGp1c3QgdmFsaWRhdGUgYW5kIGRvbid0XG4gICBwcm9kdWNlIGFueSB2YWx1ZXMuICBUaGF0IGxlYWRzIHRvIGEgZmV3IHVuZWxlZ2FudCBjb25zdHJ1Y3RzXG4gICAocHJpbWFyaWx5IGluIGRlY2xhcmF0aW9uKSwgYnV0IG1lYW5zIHdlIG90aGVyd2lzZSBoYXZlIHJhdGhlclxuICAgc2ltcGxlIGNvZGUgdGhhdCBhbHNvIGFsbG9jYXRlcyB2ZXJ5IGxpdHRsZS5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgcmVjIG5leHQgY3QgPVxuICBDc3NfdG9rZW5pemVyLm5leHQgY3Q7XG4gIGlmIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSB0aGVuIG5leHQgY3QgZWxzZSAoKVxuOztcblxubGV0IHNraXBfd2hpdGVfc3BhY2UgY3QgPVxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgV2hpdGVfc3BhY2UpIGRvXG4gICAgbmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgYWNjZXB0IGN0IGV4cGVjdGVkID1cbiAgbGV0IGdvdCA9IENzc190b2tlbml6ZXIuY3VycmVudCBjdCBpblxuICBpZiBDc3NfdG9rZW5pemVyLlRva2VuLmVxdWFsIGdvdCBleHBlY3RlZFxuICB0aGVuIChcbiAgICBuZXh0IGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBleHBlY3QgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gbmV4dCBjdFxuICBlbHNlXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVW5leHBlY3RlZCB0b2tlblwiXG4gICAgICAgICAgKGV4cGVjdGVkIDogQ3NzX3Rva2VuaXplci5Ub2tlbi50KVxuICAgICAgICAgIChnb3QgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXVxuOztcblxubGV0IHJlYyBtYW55IChjdCA6IENzc190b2tlbml6ZXIudCkgZiA9IGlmIGYgY3QgdGhlbiBtYW55IGN0IGYgZWxzZSAoKVxuXG5sZXQgbWFueTEgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID1cbiAgaWYgZiBjdFxuICB0aGVuIChcbiAgICBtYW55IGN0IGY7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IHJlYyBhbnkgY3QgOiBib29sID1cbiAgbGV0IHJlcyA9XG4gICAgbWF0Y2ggQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IHdpdGhcbiAgICB8IElkZW50IHwgTnVtYmVyIHwgUGVyY2VudGFnZSB8IERpbWVuc2lvbiB8IFN0cmluZyB8IFVyaSB8IERlbGltIHwgSGFzaCB8IENvbW1hIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgdHJ1ZVxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgbWFueSBjdCBhbnk7XG4gICAgICBleHBlY3QgY3QgUnBhcmVuO1xuICAgICAgdHJ1ZVxuICAgIHwgTHBhcmVuIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGV4cGVjdF9hbnkgY3Q7XG4gICAgICBleHBlY3QgY3QgUnBhcmVuO1xuICAgICAgdHJ1ZVxuICAgIHwgTGJyYWNrZXQgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBSYnJhY2tldDtcbiAgICAgIHRydWVcbiAgICB8IFJjdXJseSB8IFJwYXJlbiB8IFJicmFja2V0IC0+IGZhbHNlXG4gICAgfCBMY3VybHkgLT4gZmFsc2VcbiAgICB8IEF0a2V5d29yZCB8IENvbG9uIHwgU2VtaV9jb2xvbiAtPiBmYWxzZVxuICAgIHwgQ29tbWVudCB8IFdoaXRlX3NwYWNlIHwgRW9mIHwgRXJyb3IgLT4gZmFsc2VcbiAgaW5cbiAgaWYgcmVzIHRoZW4gc2tpcF93aGl0ZV9zcGFjZSBjdCBlbHNlICgpO1xuICByZXNcblxuYW5kIGV4cGVjdF9hbnkgY3QgPSBpZiBhbnkgY3QgdGhlbiAoKSBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPGFueT5cIl1cblxuYW5kIHZhbHVlMCBjdCA9XG4gIGFueSBjdFxuICB8fCBibG9jayBjdFxuICB8fFxuICBpZiBhY2NlcHQgY3QgQXRrZXl3b3JkXG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuXG5hbmQgdmFsdWUgY3QgPSBtYW55MSBjdCB2YWx1ZTBcblxuYW5kIGJsb2NrIGN0IDogYm9vbCA9XG4gIGlmIGFjY2VwdCBjdCBMY3VybHlcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICAgIHZhbHVlMCBjdFxuICAgICAgfHxcbiAgICAgIGlmIGFjY2VwdCBjdCBTZW1pX2NvbG9uXG4gICAgICB0aGVuIChcbiAgICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgICAgdHJ1ZSlcbiAgICAgIGVsc2UgZmFsc2UpO1xuICAgIGV4cGVjdCBjdCBSY3VybHk7XG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCBleHBlY3RfdmFsdWUgY3QgPSBpZiB2YWx1ZSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8dmFsdWU+XCJdXG5cbmxldCBkZWNsYXJhdGlvbiBjdCA9XG4gIGxldCBpZGVudF9zdGFydCwgaWRlbnRfbGVuID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCBpblxuICBpZiBhY2NlcHQgY3QgSWRlbnRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBleHBlY3QgY3QgQ29sb247XG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBsZXQgdmFsdWVfc3RhcnQgPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IHw+IGZzdCBpblxuICAgIGV4cGVjdF92YWx1ZSBjdDtcbiAgICBsZXQgbmV4dF90b2tlbl9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgbGV0IHNvdXJjZSA9IENzc190b2tlbml6ZXIuc291cmNlIGN0IGluXG4gICAgU29tZVxuICAgICAgKCBTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOmlkZW50X3N0YXJ0IH5sZW46aWRlbnRfbGVuXG4gICAgICAsIFN0cmluZy5yc3RyaXBcbiAgICAgICAgICAoU3RyaW5nLnN1YiBzb3VyY2UgfnBvczp2YWx1ZV9zdGFydCB+bGVuOihuZXh0X3Rva2VuX3N0YXJ0IC0gdmFsdWVfc3RhcnQpKSApKVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBleHBlY3RfZGVjbGFyYXRpb24gY3QgPVxuICBtYXRjaCBkZWNsYXJhdGlvbiBjdCB3aXRoXG4gIHwgU29tZSAoZmllbGQsIHZhbHVlKSAtPiBmaWVsZCwgdmFsdWVcbiAgfCBOb25lIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPGRlY2xhcmF0aW9uPlwiXVxuOztcblxuKCogQXMgcGVyOiBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXN0eWxlLWF0dHIvXG4gICBkZWNsYXJhdGlvbi1saXN0XG4gICA6IFMqIGRlY2xhcmF0aW9uPyBbICc7JyBTKiBkZWNsYXJhdGlvbj8gXSpcbiAgIDtcbiopXG5sZXQgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QgY3QgPVxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGxldCBhZGQga3YgPVxuICAgIG1hdGNoIGt2IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGssIHYpIC0+IHJlcyA6PSAoaywgdikgOjogIXJlc1xuICBpblxuICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICBhZGQgKGRlY2xhcmF0aW9uIGN0KTtcbiAgbWFueSBjdCAoZnVuIGN0IC0+XG4gICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICB0aGVuIChcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBhZGQgKGRlY2xhcmF0aW9uIGN0KTtcbiAgICAgIHRydWUpXG4gICAgZWxzZSBmYWxzZSk7XG4gIExpc3QucmV2ICFyZXNcbjs7XG5cbmxldCBwYXJzZSBwYXJzZXJfZiBzID1cbiAgbGV0IGN0ID0gQ3NzX3Rva2VuaXplci5jcmVhdGUgcyBpblxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgQ29tbWVudCkgZG9cbiAgICBDc3NfdG9rZW5pemVyLm5leHQgY3RcbiAgZG9uZTtcbiAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgIGxldCByZXMgPSBwYXJzZXJfZiBjdCBpblxuICAgIGV4cGVjdCBjdCBFb2Y7XG4gICAgcmVzKVxuOztcblxubGV0IHByaW50X3Rva2VucyBzID1cbiAgbGV0IGN0ID0gQ3NzX3Rva2VuaXplci5jcmVhdGUgcyBpblxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihub3QgKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBFb2YpKSBkb1xuICAgIHByaW50X3MgKENzc190b2tlbml6ZXIuVG9rZW4uc2V4cF9vZl90IChDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QpKTtcbiAgICBDc3NfdG9rZW5pemVyLm5leHQgY3RcbiAgZG9uZVxuOztcblxubGV0IHZhbGlkYXRlX3ZhbHVlID0gcGFyc2UgZXhwZWN0X3ZhbHVlXG5sZXQgcGFyc2VfZGVjbGFyYXRpb25fbGlzdCBzID0gcGFyc2UgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3Qgc1xuXG5sZXQgdGVzdF9wYXJzZXIgcCBzZXhwX29mX2FyZyBzID1cbiAgbGV0IHIgPSBwYXJzZSBwIHMgaW5cbiAgcHJpbnRmICFcIiVzIC0tPiAle3NleHA6YXJnIE9yX2Vycm9yLnR9XFxuXCIgcyByXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJcIiA9XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBcIjAgNHB4IDhweCAwIFJHQkEodmFyKC0tanMtdGV4dC1jb2xvci1yZ2IpLCAwLjEyKSwgMCAycHggNHB4IDAgXFxcbiAgICAgICAgIFJHQkEodmFyKC0tanMtdGV4dC1jb2xvci1yZ2IpLCAwLjA4KVwiXG4gICAgICBpblxuICAgICAgcHJpbnRfdG9rZW5zIHZhbHVlO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBGdW5jdGlvblxuICAgIEZ1bmN0aW9uXG4gICAgSWRlbnRcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgUnBhcmVuIHx9XTtcbiAgICAgIHByaW50X3MgWyVtZXNzYWdlICh2YWxpZGF0ZV92YWx1ZSB2YWx1ZSA6IHVuaXQgT3JfZXJyb3IudCldO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAoXCJ2YWxpZGF0ZV92YWx1ZSB2YWx1ZVwiIChPayAoKSkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ2YWx1ZXNcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF92YWx1ZSBVbml0LnNleHBfb2ZfdCBpblxuICAgICAgdGVzdCBcInhcIjtcbiAgICAgIHRlc3QgXCIzXCI7XG4gICAgICB0ZXN0IFwiM2luXCI7XG4gICAgICB0ZXN0IFwiMyVcIjtcbiAgICAgIHRlc3QgXCIjZmZmXCI7XG4gICAgICB0ZXN0IFwiMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCInSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwicmdiKDAsMCwwKVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIHggLS0+IChPayAoKSlcbiAgICAgIDMgLS0+IChPayAoKSlcbiAgICAgIDNpbiAtLT4gKE9rICgpKVxuICAgICAgMyUgLS0+IChPayAoKSlcbiAgICAgICNmZmYgLS0+IChPayAoKSlcbiAgICAgIDEgMCBhdXRvIC0tPiAoT2sgKCkpXG4gICAgICAnSGVsbG8gV29ybGQnIC0tPiAoT2sgKCkpXG4gICAgICByZ2IoMCwwLDApIC0tPiAoT2sgKCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvblwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXSBpblxuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogJ0hlbGxvIFdvcmxkJ1wiO1xuICAgICAgdGVzdCBcImNvbnRlbnQ6IGZvbztcIjtcbiAgICAgICgqIFNlbWkncyBhcmUgaGFuZGxlZCBpbiBkZWNsYXJhdGlvbiBsaXN0ICopXG4gICAgICB0ZXN0IFwiY29udGVudDogYmFyIFwiO1xuICAgICAgKCogYnV0IHdoaXRlc3BhY2UgaXMgaGFuZGxlZCBpbiBkZWNsYXJhdGlvbiAoYW55IHJlYWxseSkgKilcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICBmbGV4OiAxIDAgYXV0byAtLT4gKE9rIChmbGV4IFwiMSAwIGF1dG9cIikpXG4gICAgICBjb250ZW50OiAnSGVsbG8gV29ybGQnIC0tPiAoT2sgKGNvbnRlbnQgXCInSGVsbG8gV29ybGQnXCIpKVxuICAgICAgY29udGVudDogZm9vOyAtLT4gKEVycm9yIChcIlVuZXhwZWN0ZWQgdG9rZW5cIiAoZXhwZWN0ZWQgRW9mKSAoZ290IFNlbWlfY29sb24pKSlcbiAgICAgIGNvbnRlbnQ6IGJhciAgLS0+IChPayAoY29udGVudCBiYXIpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidW5pY29kZVwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXSBpblxuICAgICAgdGVzdCBcImNvbnRlbnQ6ICfihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtidcIjtcbiAgICAgIHByaW50X2VuZGxpbmUgKFNleHAudG9fc3RyaW5nIChTZXhwLkF0b20gXCLihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtlwiKSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGNvbnRlbnQ6ICfihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGticgLS0+IChPa1xuICAgICAoY29udGVudFxuICAgICAgXCInXFwyMjZcXDEzNFxcMTQ0IFxcMjI2XFwxMzRcXDE0NSBcXDIyNlxcMTM0XFwxNDYgXFwyMjZcXDEzNFxcMTQ3IFxcMjI2XFwxMzRcXDE0OCBcXDIyNlxcMTM0XFwxNDkgXFwyMjZcXDEzNVxcMTcwIFxcMjI2XFwxMzRcXDE4NSBcXDIyNlxcMTcyXFwxMzYgXFwyMjZcXDEzNFxcMTUyIFxcMjI2XFwxNTlcXDE5MCBcXDIyNlxcMTM0XFwxODInXCIpKVxuICAgIFwiXFwyMjZcXDEzNFxcMTQ0IFxcMjI2XFwxMzRcXDE0NSBcXDIyNlxcMTM0XFwxNDYgXFwyMjZcXDEzNFxcMTQ3IFxcMjI2XFwxMzRcXDE0OCBcXDIyNlxcMTM0XFwxNDkgXFwyMjZcXDEzNVxcMTcwIFxcMjI2XFwxMzRcXDE4NSBcXDIyNlxcMTcyXFwxMzYgXFwyMjZcXDEzNFxcMTUyIFxcMjI2XFwxNTlcXDE5MCBcXDIyNlxcMTM0XFwxODJcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZGVjbGFyYXRpb24gbGlzdFwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QgWyVzZXhwX29mOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XSBpblxuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG87XCI7XG4gICAgICB0ZXN0XG4gICAgICAgIFwiYmFja2dyb3VuZDogIzVkOWFiMiB1cmwoXFxcImltZ190cmVlLnBuZ1xcXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHhcIjtcbiAgICAgIHRlc3QgXCI7Ozs7O1wiO1xuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGZsZXg6IDEgMCBhdXRvOyAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpKSlcbiAgICBiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcImltZ190cmVlLnBuZ1wiKSBuby1yZXBlYXQgdG9wIGxlZnQ7bWFyZ2luLWxlZnQ6IDIwMHB4IC0tPiAoT2tcbiAgICAgKChiYWNrZ3JvdW5kIFwiIzVkOWFiMiB1cmwoXFxcImltZ190cmVlLnBuZ1xcXCIpIG5vLXJlcGVhdCB0b3AgbGVmdFwiKVxuICAgICAgKG1hcmdpbi1sZWZ0IDIwMHB4KSkpXG4gICAgOzs7OzsgLS0+IChPayAoKSlcbiAgICBmbGV4OiAxIDAgYXV0byA7OyBvdGhlciA6IHNhICAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpIChvdGhlciBzYSkpKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIENvcmUuQ29yZV9zdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAoKiogKGZpZWxkICogdmFsdWUpIGxpc3QuICBXaGVyZSB2YWx1ZSBzaG91bGQgYmUgZXNjYXBlZCAvIHF1b3RlZFxuICAgICAgICBhcyBuZWNlc3NhcnkgYXMgcGVyIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjcnVsZS1zZXRzLiAqKVxuICAgIHR5cGUgdCA9IChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvXVxuICBlbmRcbmVuZFxuXG5vcGVuIENvcmVcbmluY2x1ZGUgU3RhYmxlLlYxXG5cbnR5cGUgY3NzX2dsb2JhbF92YWx1ZXMgPVxuICBbIGBJbmhlcml0XG4gIHwgYEluaXRpYWxcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgPSByZWYgKGZ1biBkaWdpdHMgZiAtPiBzcHJpbnRmIFwiJS4qZlwiIGRpZ2l0cyBmKVxuZW5kXG5cbmxldCBmMnMgZGlnaXRzIGYgPSAhUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCBkaWdpdHMgZlxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUkdCQSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyByIDogaW50XG4gICAgICAgIDsgZyA6IGludFxuICAgICAgICA7IGIgOiBpbnRcbiAgICAgICAgOyBhIDogUGVyY2VudC50IG9wdGlvblxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+ciB+ZyB+YiA/YSAoKSA9IHsgcjsgZzsgYjsgYSB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSFNMQSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBoIDogaW50XG4gICAgICAgIDsgcyA6IFBlcmNlbnQudFxuICAgICAgICA7IGwgOiBQZXJjZW50LnRcbiAgICAgICAgOyBhIDogUGVyY2VudC50IG9wdGlvblxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+aCB+cyB+bCA/YSAoKSA9IHsgaDsgczsgbDsgYSB9XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPVxuICAgICAgWyBgUkdCQSBvZiBSR0JBLnRcbiAgICAgIHwgYEhTTEEgb2YgSFNMQS50XG4gICAgICB8IGBOYW1lIG9mIHN0cmluZ1xuICAgICAgfCBgSGV4IG9mIHN0cmluZ1xuICAgICAgfCBgVmFyIG9mIHN0cmluZ1xuICAgICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgdG9fc3RyaW5nX2NzcyA6IFs8IHQgXSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgUkdCQSB7IFJHQkEucjsgZzsgYjsgYSB9IC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IFslc3RyaW5nIFwicmdiKCV7ciNJbnR9LCV7ZyNJbnR9LCV7YiNJbnR9KVwiXVxuICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICBbJXN0cmluZyBcInJnYmEoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0sJXtmMnMgMiAoUGVyY2VudC50b19tdWx0IHApfSlcIl0pXG4gICAgfCBgSFNMQSB7IEhTTEEuaDsgczsgbDsgYSB9IC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBbJXN0cmluZ1xuICAgICAgICAgICBcImhzbCgle2gjSW50fSwle2YycyAwIChQZXJjZW50LnRvX3BlcmNlbnRhZ2Ugcyl9JSwle2YycyAwIFxcXG4gICAgICAgICAgICAoUGVyY2VudC50b19wZXJjZW50YWdlIGwpfSUpXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsYSgle2gjSW50fSwle2YycyAwIChQZXJjZW50LnRvX3BlcmNlbnRhZ2Ugcyl9JSwle2YycyAwIFxcXG4gICAgICAgICAgICAoUGVyY2VudC50b19wZXJjZW50YWdlIGwpfSUsJXtmMnMgMiAoUGVyY2VudC50b19tdWx0IHApfSlcIl0pXG4gICAgfCBgTmFtZSBuYW1lIC0+IG5hbWVcbiAgICB8IGBIZXggaGV4IC0+IGhleFxuICAgIHwgYFZhciB2YXIgLT4gWyVzdHJpbmcgXCJ2YXIoJXt2YXJ9KVwiXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGlnbm1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMZWZ0XG4gICAgfCBgUmlnaHRcbiAgICB8IGBDZW50ZXIgKCogaG9yaXpvbnRhbCAqKVxuICAgIHwgYFRvcFxuICAgIHwgYEJvdHRvbVxuICAgIHwgYE1pZGRsZSAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgYEp1c3RpZnkgKCogdGV4dC1hbGlnbiAoaW4gYWRkaXRpb24gdG8gW2hvcml6b250YWxdKSAqKVxuICAgIHwgYFN1cGVyICgqIHZlcnRpY2FsICopXG4gICAgfCBgU3ViICgqIHZlcnRpY2FsICopXG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBKdXN0aWZ5IC0+IFwianVzdGlmeVwiXG4gICAgfCBgVG9wIC0+IFwidG9wXCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBCb3R0b20gLT4gXCJib3R0b21cIlxuICAgIHwgYFN1cGVyIC0+IFwic3VwZXJcIlxuICAgIHwgYFN1YiAtPiBcInN1YlwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBSYXcgb2Ygc3RyaW5nXG4gICAgfCBgQ2ggb2YgZmxvYXRcbiAgICB8IGBSZW0gb2YgZmxvYXRcbiAgICB8IGBFbSBvZiBpbnRcbiAgICB8IGBFbV9mbG9hdCBvZiBmbG9hdFxuICAgIHwgYFBlcmNlbnQgb2YgUGVyY2VudC50XG4gICAgfCBgUHQgb2YgZmxvYXRcbiAgICB8IGBQeCBvZiBpbnRcbiAgICB8IGBQeF9mbG9hdCBvZiBmbG9hdFxuICAgIHwgYFZoIG9mIFBlcmNlbnQudFxuICAgIHwgYFZ3IG9mIFBlcmNlbnQudFxuICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICBdXG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgUmF3IHMgLT4gc1xuICAgIHwgYENoIGMgLT4gWyVzdHJpbmcgXCIle2YycyAyIGN9Y2hcIl1cbiAgICB8IGBSZW0gZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1yZW1cIl1cbiAgICB8IGBFbSBpIC0+IFslc3RyaW5nIFwiJXtpI0ludH1lbVwiXVxuICAgIHwgYEVtX2Zsb2F0IGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9ZW1cIl1cbiAgICB8IGBQZXJjZW50IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9JVwiXVxuICAgIHwgYFB0IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIHB9cHRcIl1cbiAgICB8IGBQeCBpIC0+IFslc3RyaW5nIFwiJXtpI0ludH1weFwiXVxuICAgIHwgYFB4X2Zsb2F0IGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9cHhcIl1cbiAgICB8IGBWaCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZoXCJdXG4gICAgfCBgVncgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX12d1wiXVxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5cbiAgbGV0IHBlcmNlbnQxMDAgPSBgUGVyY2VudCAoUGVyY2VudC5vZl9wZXJjZW50YWdlIDEwMC4pXG5lbmRcblxubW9kdWxlIEF1dG9fb3JfbGVuZ3RoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgQXV0b1xuICAgIHwgTGVuZ3RoLnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgI0xlbmd0aC50IGFzIGwgLT4gTGVuZ3RoLnRvX3N0cmluZ19jc3MgbFxuICA7O1xuZW5kXG5cbmxldCB2YWx1ZV9tYXAgbyB+ZiA9IE9wdGlvbi52YWx1ZV9tYXAgbyB+ZGVmYXVsdDpcIlwiIH5mXG5sZXQgY29tYmluZSB0MSB0MiA9IHQxIEAgdDJcbmxldCAoIEA+ICkgPSBjb21iaW5lXG5sZXQgY29uY2F0IGwgPSBMaXN0LmNvbmNhdCBsXG5sZXQgdG9fc3RyaW5nX2xpc3QgPSBGbi5pZFxuXG5sZXQgdG9fc3RyaW5nX2NzcyB0ID1cbiAgTGlzdC5tYXAgdCB+ZjooZnVuIChmaWVsZCwgdmFsdWUpIC0+IFslc3RyaW5nIFwiJXtmaWVsZH06ICV7dmFsdWV9XCJdKVxuICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCI7XCJcbjs7XG5cbmxldCBvZl9zdHJpbmdfY3NzX2V4biBzID0gQ3NzX3BhcnNlci5wYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgfD4gT3JfZXJyb3Iub2tfZXhuXG5cbigqKiBjcmVhdGVfcmF3IGNyZWF0ZXMgYSBzaW5nbGUgZmllbGQsIHZhbHVlIHBhaXIuICBJdCBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIGlzIGEgdmFsaWRcbiAgICBjc3MgdmFsdWUuICBBcyBzdWNoIGl0IGlzIHVuc2FmZSB0byB1c2Ugd2l0aCBhcmJpdHJhcnkgdmFsdWUgc3RyaW5ncy4gIEJ1dCBmb3IgdGhlXG4gICAgdmFzdCBtYWpvcml0eSBvZiBjb21iaW5hdG9ycyBpbiB0aGlzIG1vZHVsZSBpdCBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gdXNlLCBhcyB3ZSBrbm93XG4gICAgYnkgY29uc3RydWN0aW9uIHRoYXQgdGhlIHZhbHVlcyBkbyBub3QgbmVlZCBxdW90aW5nIC8gZXNjYXBpbmcuICopXG5sZXQgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlID0gWyBmaWVsZCwgdmFsdWUgXVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBzaG91bGRfdmFsaWRhdGUgPSByZWYgZmFsc2VcbmVuZFxuXG5sZXQgY3JlYXRlIH5maWVsZCB+dmFsdWUgPVxuICBpZiAhRXhwZXJ0LnNob3VsZF92YWxpZGF0ZSB0aGVuIENzc19wYXJzZXIudmFsaWRhdGVfdmFsdWUgdmFsdWUgfD4gT3JfZXJyb3Iub2tfZXhuO1xuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWVcbjs7XG5cbmxldCBlbXB0eSA9IFtdXG5sZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5sZXQgY3JlYXRlX3BsYWNlbWVudCBuYW1lIGxlbmd0aCA9IGNyZWF0ZSB+ZmllbGQ6bmFtZSB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGxlbmd0aClcbmxldCBsZWZ0ID0gY3JlYXRlX3BsYWNlbWVudCBcImxlZnRcIlxubGV0IHRvcCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJ0b3BcIlxubGV0IGJvdHRvbSA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJib3R0b21cIlxubGV0IHJpZ2h0ID0gY3JlYXRlX3BsYWNlbWVudCBcInJpZ2h0XCJcblxubGV0IHBvc2l0aW9uID90b3A6dHAgP2JvdHRvbTpidCA/bGVmdDpsdCA/cmlnaHQ6cnQgcG9zID1cbiAgbGV0IHBvcyA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgICB8IGBTdGF0aWMgLT4gXCJzdGF0aWNcIlxuICAgICAgfCBgQWJzb2x1dGUgLT4gXCJhYnNvbHV0ZVwiXG4gICAgICB8IGBTdGlja3kgLT4gXCJzdGlja3lcIlxuICAgICAgfCBgUmVsYXRpdmUgLT4gXCJyZWxhdGl2ZVwiXG4gICAgICB8IGBGaXhlZCAtPiBcImZpeGVkXCJcbiAgICBpblxuICAgIGNyZWF0ZSB+ZmllbGQ6XCJwb3NpdGlvblwiIH52YWx1ZVxuICBpblxuICBsZXQgY29udmVydCBvcHRfbCBmID0gT3B0aW9uLnZhbHVlX21hcCBvcHRfbCB+ZGVmYXVsdDplbXB0eSB+ZiBpblxuICBjb25jYXQgWyBwb3M7IGNvbnZlcnQgdHAgdG9wOyBjb252ZXJ0IGx0IGxlZnQ7IGNvbnZlcnQgcnQgcmlnaHQ7IGNvbnZlcnQgYnQgYm90dG9tIF1cbjs7XG5cbmxldCBib3hfc2l6aW5nIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYENvbnRlbnRfYm94IC0+IFwiY29udGVudC1ib3hcIlxuICAgIHwgYEJvcmRlcl9ib3ggLT4gXCJib3JkZXItYm94XCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJveC1zaXppbmdcIiB+dmFsdWVcbjs7XG5cbmxldCBkaXNwbGF5IHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYElubGluZSAtPiBcImlubGluZVwiXG4gICAgfCBgQmxvY2sgLT4gXCJibG9ja1wiXG4gICAgfCBgSW5saW5lX2Jsb2NrIC0+IFwiaW5saW5lLWJsb2NrXCJcbiAgICB8IGBMaXN0X2l0ZW0gLT4gXCJsaXN0LWl0ZW1cIlxuICAgIHwgYFRhYmxlIC0+IFwidGFibGVcIlxuICAgIHwgYElubGluZV90YWJsZSAtPiBcImlubGluZS10YWJsZVwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEZsZXggLT4gXCJmbGV4XCJcbiAgICB8IGBJbmxpbmVfZmxleCAtPiBcImlubGluZS1mbGV4XCJcbiAgICB8IGBJbmxpbmVfZ3JpZCAtPiBcImlubGluZS1ncmlkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImRpc3BsYXlcIiB+dmFsdWVcbjs7XG5cbmxldCB2aXNpYmlsaXR5IHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidmlzaWJpbGl0eVwiIH52YWx1ZVxuOztcblxudHlwZSBvdmVyZmxvdyA9XG4gIFsgYFZpc2libGVcbiAgfCBgSGlkZGVuXG4gIHwgYFNjcm9sbFxuICB8IGBBdXRvXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgbWFrZV9vdmVyZmxvdyBmaWVsZCB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBWaXNpYmxlIC0+IFwidmlzaWJsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBTY3JvbGwgLT4gXCJzY3JvbGxcIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWVcbjs7XG5cbmxldCBvdmVyZmxvdyA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvd1wiXG5sZXQgb3ZlcmZsb3dfeCA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvdy14XCJcbmxldCBvdmVyZmxvd195ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXlcIlxubGV0IHpfaW5kZXggaSA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiei1pbmRleFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKVxubGV0IG9wYWNpdHkgaSA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3BhY2l0eVwiIH52YWx1ZTooZjJzIDYgaSlcblxubGV0IGNyZWF0ZV9sZW5ndGhfZmllbGQgZmllbGQgbCA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQXV0b19vcl9sZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuOztcblxubGV0IHdoaXRlX3NwYWNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTm93cmFwIC0+IFwibm93cmFwXCJcbiAgICB8IGBQcmUgLT4gXCJwcmVcIlxuICAgIHwgYFByZV9saW5lIC0+IFwicHJlLWxpbmVcIlxuICAgIHwgYFByZV93cmFwIC0+IFwicHJlLXdyYXBcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZSB+ZmllbGQ6XCJ3aGl0ZS1zcGFjZVwiIH52YWx1ZVxuOztcblxudHlwZSBmb250X3N0eWxlID1cbiAgWyBgTm9ybWFsXG4gIHwgYEl0YWxpY1xuICB8IGBPYmxpcXVlXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfd2VpZ2h0ID1cbiAgWyBgTm9ybWFsXG4gIHwgYEJvbGRcbiAgfCBgQm9sZGVyXG4gIHwgYExpZ2h0ZXJcbiAgfCBgTnVtYmVyIG9mIGludFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxudHlwZSBmb250X3ZhcmlhbnQgPVxuICBbIGBOb3JtYWxcbiAgfCBgU21hbGxfY2Fwc1xuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IGZvbnRfc2l6ZSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJmb250LXNpemVcIlxubGV0IGZvbnRfZmFtaWx5IGwgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtZmFtaWx5XCIgfnZhbHVlOihTdHJpbmcuY29uY2F0IGwgfnNlcDpcIixcIilcblxubGV0IGZvbnRfc3R5bGUgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBJdGFsaWMgLT4gXCJpdGFsaWNcIlxuICAgIHwgYE9ibGlxdWUgLT4gXCJvYmxpcXVlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtc3R5bGVcIiB+dmFsdWVcbjs7XG5cbmxldCBmb250X3dlaWdodCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOdW1iZXIgaSAtPiBJbnQudG9fc3RyaW5nIGlcbiAgICB8IGBCb2xkIC0+IFwiYm9sZFwiXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBMaWdodGVyIC0+IFwibGlnaHRlclwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEJvbGRlciAtPiBcImJvbGRlclwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtd2VpZ2h0XCIgfnZhbHVlXG47O1xuXG5sZXQgYm9sZCA9IGZvbnRfd2VpZ2h0IGBCb2xkXG5cbmxldCBmb250X3ZhcmlhbnQgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBTbWFsbF9jYXBzIC0+IFwic21hbGwtY2Fwc1wiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXZhcmlhbnRcIiB+dmFsdWVcbjs7XG5cbmxldCBmb250IH5zaXplIH5mYW1pbHkgP3N0eWxlID93ZWlnaHQgP3ZhcmlhbnQgKCkgPVxuICBbIFNvbWUgKGZvbnRfc2l6ZSBzaXplKVxuICA7IFNvbWUgKGZvbnRfZmFtaWx5IGZhbWlseSlcbiAgOyBPcHRpb24ubWFwIHN0eWxlIH5mOmZvbnRfc3R5bGVcbiAgOyBPcHRpb24ubWFwIHdlaWdodCB+Zjpmb250X3dlaWdodFxuICA7IE9wdGlvbi5tYXAgdmFyaWFudCB+Zjpmb250X3ZhcmlhbnRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkIH5jb2xvciA9IGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQ29sb3IudG9fc3RyaW5nX2NzcyBjb2xvcilcbmxldCBjb2xvciBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImNvbG9yXCIgfmNvbG9yXG5sZXQgYmFja2dyb3VuZF9jb2xvciBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImJhY2tncm91bmQtY29sb3JcIiB+Y29sb3JcbmxldCBmaWxsIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiZmlsbFwiIH5jb2xvclxuXG50eXBlIHN0b3BzID0gKFBlcmNlbnQudCAqIENvbG9yLnQpIGxpc3RcblxudHlwZSBsaW5lYXJfZ3JhZGllbnQgPVxuICB7IGRpcmVjdGlvbiA6IFsgYERlZyBvZiBpbnQgXVxuICA7IHN0b3BzIDogc3RvcHNcbiAgfVxuXG50eXBlIHJhZGlhbF9ncmFkaWVudCA9IHsgc3RvcHMgOiBzdG9wcyB9XG5cbnR5cGUgYmFja2dyb3VuZF9pbWFnZSA9XG4gIFsgYFVybCBvZiBzdHJpbmdcbiAgfCBgTGluZWFyX2dyYWRpZW50IG9mIGxpbmVhcl9ncmFkaWVudFxuICB8IGBSYWRpYWxfZ3JhZGllbnQgb2YgcmFkaWFsX2dyYWRpZW50XG4gIF1cblxudHlwZSB0ZXh0X2FsaWduID1cbiAgWyBgTGVmdFxuICB8IGBSaWdodFxuICB8IGBDZW50ZXJcbiAgfCBgSnVzdGlmeVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IHN0b3BzX3RvX3N0cmluZyBzdG9wcyA9XG4gIExpc3QubWFwIHN0b3BzIH5mOihmdW4gKHBjdCwgY29sb3IpIC0+XG4gICAgKCogTm90ZTogUGVyY2VudC50b19zdHJpbmcgcHJvZHVjZWQgZS5nLiBcIjB4XCIsIFwiMXhcIiwgd29uJ3Qgd29yayBoZXJlLiAqKVxuICAgIFslc3RyaW5nIFwiJXtDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yfSAle2YycyA2IChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcGN0KX0lXCJdKVxuICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgYmFja2dyb3VuZF9pbWFnZSBzcGVjID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IGBVcmwgdXJsIC0+IFslc3RyaW5nIFwidXJsKCV7dXJsfSlcIl1cbiAgICB8IGBMaW5lYXJfZ3JhZGllbnQgeyBkaXJlY3Rpb24gPSBgRGVnIGRpcmVjdGlvbjsgc3RvcHMgfSAtPlxuICAgICAgWyVzdHJpbmcgXCJsaW5lYXItZ3JhZGllbnQoJXtkaXJlY3Rpb24jSW50fWRlZywgJXtzdG9wc190b19zdHJpbmcgc3RvcHN9KVwiXVxuICAgIHwgYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzIH0gLT4gWyVzdHJpbmcgXCJyYWRpYWwtZ3JhZGllbnQoJXtzdG9wc190b19zdHJpbmcgc3RvcHN9KVwiXVxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJhY2tncm91bmQtaW1hZ2VcIiB+dmFsdWVcbjs7XG5cbmxldCBjcmVhdGVfYWxpZ25tZW50IGZpZWxkIGEgPVxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KEFsaWdubWVudC50b19zdHJpbmdfY3NzIChhIDo+IEFsaWdubWVudC50KSlcbjs7XG5cbmxldCB0ZXh0X2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcInRleHQtYWxpZ25cIlxubGV0IGhvcml6b250YWxfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwiaG9yaXpvbnRhbC1hbGlnblwiXG5sZXQgdmVydGljYWxfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidmVydGljYWwtYWxpZ25cIlxuXG5sZXQgZmxvYXQgZiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggZiB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZsb2F0XCIgfnZhbHVlXG47O1xuXG5sZXQgbGluZV9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibGluZS1oZWlnaHRcIlxubGV0IHdpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIndpZHRoXCJcbmxldCBtaW5fd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLXdpZHRoXCJcbmxldCBtYXhfd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LXdpZHRoXCJcbmxldCBoZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiaGVpZ2h0XCJcbmxldCBtaW5faGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi1oZWlnaHRcIlxubGV0IG1heF9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LWhlaWdodFwiXG5sZXQgcGFkZGluZ190b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy10b3BcIlxubGV0IHBhZGRpbmdfYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctYm90dG9tXCJcbmxldCBwYWRkaW5nX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1sZWZ0XCJcbmxldCBwYWRkaW5nX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctcmlnaHRcIlxuXG5sZXQgcGFkZGluZyA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6cGFkZGluZ190b3BcbiAgOyBtIGJvdHRvbSB+ZjpwYWRkaW5nX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjpwYWRkaW5nX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOnBhZGRpbmdfcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9wYWRkaW5nIGwgPSBwYWRkaW5nIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IG1hcmdpbl90b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXRvcFwiXG5sZXQgbWFyZ2luX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tYm90dG9tXCJcbmxldCBtYXJnaW5fbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tbGVmdFwiXG5sZXQgbWFyZ2luX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1yaWdodFwiXG5cbmxldCBtYXJnaW4gP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOm1hcmdpbl90b3BcbiAgOyBtIGJvdHRvbSB+ZjptYXJnaW5fYm90dG9tXG4gIDsgbSBsZWZ0IH5mOm1hcmdpbl9sZWZ0XG4gIDsgbSByaWdodCB+ZjptYXJnaW5fcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9tYXJnaW4gbCA9IG1hcmdpbiB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcbmxldCByb3dfZ2FwID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInJvdy1nYXBcIlxubGV0IGNvbHVtbl9nYXAgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiY29sdW1uLWdhcFwiXG5cbnR5cGUgYm9yZGVyX3N0eWxlID1cbiAgWyBgTm9uZVxuICB8IGBIaWRkZW5cbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgR3Jvb3ZlXG4gIHwgYFJpZGdlXG4gIHwgYEluc2V0XG4gIHwgYE91dHNldFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxuKCoqIENvbmNhdCAyIHZhbHVlcyB3aXRoIGEgc3BhY2UgaW4gYmV0d2Vlbi4gIElmIGVpdGhlciBpcyB0aGUgZW1wdHkgc3RyaW5nXG4gICAgZG9uJ3QgcHV0IGluIHVubmVjZXNzYXJ5IHdoaXRlc3BhY2UuICopXG5sZXQgY29uY2F0MnYgdjEgdjIgPVxuICBtYXRjaCB2MSwgdjIgd2l0aFxuICB8IFwiXCIsIHggLT4geFxuICB8IHgsIFwiXCIgLT4geFxuICB8IHgsIHkgLT4geCBeIFwiIFwiIF4geVxuOztcblxuKCoqIENvbmNhdCB1cCB0byAzIHZhbHVlcyB3aXRoIHNwYWNlcyBpbiBiZXR3ZWVuLiAqKVxubGV0IGNvbmNhdDN2IHYxIHYyIHYzID0gY29uY2F0MnYgKGNvbmNhdDJ2IHYxIHYyKSB2M1xuXG5sZXQgYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfihzdHlsZSA6IGJvcmRlcl9zdHlsZSkgKCkgPVxuICBsZXQgc3R5bGUgPVxuICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBSaWRnZSAtPiBcInJpZGdlXCJcbiAgICB8IGBPdXRzZXQgLT4gXCJvdXRzZXRcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBHcm9vdmUgLT4gXCJncm9vdmVcIlxuICAgIHwgYERhc2hlZCAtPiBcImRhc2hlZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluc2V0IC0+IFwiaW5zZXRcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICB8IGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgaW5cbiAgbGV0IHdpZHRoID0gdmFsdWVfbWFwIHdpZHRoIH5mOkxlbmd0aC50b19zdHJpbmdfY3NzIGluXG4gIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gIGNvbmNhdDN2IHdpZHRoIHN0eWxlIGNvbG9yXG47O1xuXG5sZXQgY3JlYXRlX2JvcmRlciA/c2lkZSAoKSA9XG4gIGxldCBmaWVsZCA9XG4gICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgfCBTb21lIGBUb3AgLT4gXCJib3JkZXItdG9wXCJcbiAgICB8IFNvbWUgYEJvdHRvbSAtPiBcImJvcmRlci1ib3R0b21cIlxuICAgIHwgU29tZSBgUmlnaHQgLT4gXCJib3JkZXItcmlnaHRcIlxuICAgIHwgU29tZSBgTGVmdCAtPiBcImJvcmRlci1sZWZ0XCJcbiAgICB8IE5vbmUgLT4gXCJib3JkZXJcIlxuICBpblxuICBmdW4gP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgLT5cbiAgICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfdG9wID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgVG9wICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2JvdHRvbSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YEJvdHRvbSAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9sZWZ0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgTGVmdCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9yaWdodCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YFJpZ2h0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID0gY3JlYXRlX2JvcmRlciA/c2lkZTpOb25lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpICgpXG5cbmxldCBvdXRsaW5lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJvdXRsaW5lXCIgfnZhbHVlOihib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkpXG47O1xuXG5sZXQgYm9yZGVyX2NvbGxhcHNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFNlcGFyYXRlIC0+IFwic2VwYXJhdGVcIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm9yZGVyLWNvbGxhcHNlXCIgfnZhbHVlXG47O1xuXG5sZXQgYm9yZGVyX3NwYWNpbmcgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiYm9yZGVyLXNwYWNpbmdcIlxubGV0IGJvcmRlcl9yYWRpdXMgbCA9IGNyZWF0ZSB+ZmllbGQ6XCJib3JkZXItcmFkaXVzXCIgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9saW5lID1cbiAgWyBgTm9uZVxuICB8IGBVbmRlcmxpbmVcbiAgfCBgT3ZlcmxpbmVcbiAgfCBgTGluZV90aHJvdWdoXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSB0ZXh0X2RlY29yYXRpb25fc3R5bGUgPVxuICBbIGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBXYXZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRleHRfZGVjb3JhdGlvbiA/c3R5bGUgP2NvbG9yIH5saW5lICgpID1cbiAgbGV0IHZhbHVlID1cbiAgICBsZXQgbGluZSA9XG4gICAgICBMaXN0Lm1hcCBsaW5lIH5mOihmdW5jdGlvblxuICAgICAgICB8IGBMaW5lX3Rocm91Z2ggLT4gXCJsaW5lLXRocm91Z2hcIlxuICAgICAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgT3ZlcmxpbmUgLT4gXCJvdmVybGluZVwiXG4gICAgICAgIHwgYFVuZGVybGluZSAtPiBcInVuZGVybGluZVwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCIpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbiAgICBpblxuICAgIGxldCBzdHlsZSA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgICAgIHwgU29tZSBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICAgIHwgU29tZSBgRG90dGVkIC0+IFwiZG90dGVkXCJcbiAgICAgIHwgU29tZSBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICAgIHwgU29tZSBgV2F2eSAtPiBcIndhdnlcIlxuICAgICAgfCBTb21lIGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICB8IFNvbWUgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICBpblxuICAgIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gICAgY29uY2F0M3YgbGluZSBzdHlsZSBjb2xvclxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInRleHQtZGVjb3JhdGlvblwiIH52YWx1ZVxuOztcblxudHlwZSBjb250ZW50X2FsaWdubWVudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBTcGFjZV9iZXR3ZWVuXG4gIHwgYFNwYWNlX2Fyb3VuZFxuICB8IGBTcGFjZV9ldmVubHlcbiAgfCBgU3RyZXRjaFxuICBdXG5cbmxldCBjb250ZW50X2FsaWdubWVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgU3BhY2VfYmV0d2VlbiAtPiBcInNwYWNlLWJldHdlZW5cIlxuICB8IGBTcGFjZV9hcm91bmQgLT4gXCJzcGFjZS1hcm91bmRcIlxuICB8IGBTcGFjZV9ldmVubHkgLT4gXCJzcGFjZS1ldmVubHlcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGl0ZW1fYWxpZ25tZW50ID1cbiAgWyBgQXV0b1xuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBCYXNlbGluZVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGp1c3RpZnlfY29udGVudCA9XG4gIFsgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICBdXG5cbmxldCBqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYFNwYWNlX2JldHdlZW4gLT4gXCJzcGFjZS1iZXR3ZWVuXCJcbiAgfCBgU3BhY2VfYXJvdW5kIC0+IFwic3BhY2UtYXJvdW5kXCJcbiAgfCBgU3BhY2VfZXZlbmx5IC0+IFwic3BhY2UtZXZlbmx5XCJcbjs7XG5cbmxldCBmbGV4X2NvbnRhaW5lclxuICAgICAgPyhpbmxpbmUgPSBmYWxzZSlcbiAgICAgID8oZGlyZWN0aW9uID0gYFJvdylcbiAgICAgID8od3JhcCA9IGBOb3dyYXApXG4gICAgICA/YWxpZ25faXRlbXNcbiAgICAgID9hbGlnbl9jb250ZW50XG4gICAgICA/anVzdGlmeV9jb250ZW50XG4gICAgICA/cm93X2dhcDpyZ1xuICAgICAgP2NvbHVtbl9nYXA6Y2dcbiAgICAgICgpXG4gID1cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbGV0IG1ha2VfZGlyIHYgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtZGlyZWN0aW9uXCIgfnZhbHVlOnYgaW5cbiAgICBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICAgIHwgYFJvdyAtPiBtYWtlX2RpciBcInJvd1wiXG4gICAgfCBgUm93X3JldmVyc2UgLT4gbWFrZV9kaXIgXCJyb3ctcmV2ZXJzZVwiXG4gICAgfCBgQ29sdW1uIC0+IG1ha2VfZGlyIFwiY29sdW1uXCJcbiAgICB8IGBDb2x1bW5fcmV2ZXJzZSAtPiBtYWtlX2RpciBcImNvbHVtbi1yZXZlcnNlXCJcbiAgICB8IGBEZWZhdWx0IC0+IGVtcHR5XG4gIGluXG4gIGxldCB3cmFwID1cbiAgICBsZXQgbWFrZV93cmFwIHYgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtd3JhcFwiIH52YWx1ZTp2IGluXG4gICAgbWF0Y2ggd3JhcCB3aXRoXG4gICAgfCBgTm93cmFwIC0+IG1ha2Vfd3JhcCBcIm5vd3JhcFwiXG4gICAgfCBgV3JhcCAtPiBtYWtlX3dyYXAgXCJ3cmFwXCJcbiAgICB8IGBXcmFwX3JldmVyc2UgLT4gbWFrZV93cmFwIFwid3JhcC1yZXZlcnNlXCJcbiAgICB8IGBEZWZhdWx0IC0+IGVtcHR5XG4gIGluXG4gIGxldCBhbGlnbl9pdGVtcyA9XG4gICAgbWF0Y2ggYWxpZ25faXRlbXMgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24taXRlbXNcIiB+dmFsdWU6KGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IGFsaWduX2NvbnRlbnQgPVxuICAgIG1hdGNoIGFsaWduX2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLWNvbnRlbnRcIiB+dmFsdWU6KGNvbnRlbnRfYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IGp1c3RpZnlfY29udGVudCA9XG4gICAgbWF0Y2gganVzdGlmeV9jb250ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJqdXN0aWZ5LWNvbnRlbnRcIiB+dmFsdWU6KGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGxldCByb3dfZ2FwID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDplbXB0eSB+Zjpyb3dfZ2FwIHJnIGluXG4gIGxldCBjb2x1bW5fZ2FwID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDplbXB0eSB+Zjpjb2x1bW5fZ2FwIGNnIGluXG4gIGNvbmNhdFxuICAgIFsgZGlzcGxheSAoaWYgaW5saW5lIHRoZW4gYElubGluZV9mbGV4IGVsc2UgYEZsZXgpXG4gICAgOyBkaXJlY3Rpb25cbiAgICA7IHdyYXBcbiAgICA7IGFsaWduX2l0ZW1zXG4gICAgOyBhbGlnbl9jb250ZW50XG4gICAgOyBqdXN0aWZ5X2NvbnRlbnRcbiAgICA7IGNvbHVtbl9nYXBcbiAgICA7IHJvd19nYXBcbiAgICBdXG47O1xuXG5sZXQgZmxleF9pdGVtID9vcmRlciA/KGJhc2lzID0gYEF1dG8pID8oc2hyaW5rID0gMS4pIH5ncm93ICgpID1cbiAgbGV0IG9yZGVyID1cbiAgICBPcHRpb24ubWFwIG9yZGVyIH5mOihmdW4gaSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcIm9yZGVyXCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgfD4gTGlzdC5qb2luXG4gIGluXG4gIGxldCBmbGV4ID1cbiAgICBsZXQgYmFzaXMgPSBBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGJhc2lzIGluXG4gICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4XCIgfnZhbHVlOlslc3RyaW5nIFwiJXtmMnMgNiBncm93fSAle2YycyA2IHNocmlua30gJXtiYXNpc31cIl1cbiAgaW5cbiAgY29uY2F0IFsgZmxleDsgb3JkZXIgXVxuOztcblxubGV0IGFsaWduX3NlbGYgYSA9XG4gIGxldCB2YWx1ZSA9IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLXNlbGZcIiB+dmFsdWVcbjs7XG5cbmxldCByZXNpemUgKHZhbHVlIDogWyBgTm9uZSB8IGBCb3RoIHwgYEhvcml6b250YWwgfCBgVmVydGljYWwgfCBjc3NfZ2xvYmFsX3ZhbHVlcyBdKSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBcImhvcml6b250YWxcIlxuICAgIHwgYFZlcnRpY2FsIC0+IFwidmVydGljYWxcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwicmVzaXplXCIgfnZhbHVlXG47O1xuXG5sZXQgYW5pbWF0aW9uIH5uYW1lIH5kdXJhdGlvbiA/ZGVsYXkgP2RpcmVjdGlvbiA/ZmlsbF9tb2RlID9pdGVyX2NvdW50ID90aW1pbmdfZnVuY3Rpb24gKClcbiAgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgbGV0IHNwYW5fdG9fc3RyaW5nIHMgPSBbJXN0cmluZyBcIiV7ZjJzIDIgKFRpbWVfbnMuU3Bhbi50b19zZWMgcyl9c1wiXSBpblxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBtIGRpcmVjdGlvbiB+ZjooZnVuIGQgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgICAgICB8IGBSZXZlcnNlIC0+IFwicmV2ZXJzZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZV9yZXZlcnNlIC0+IFwiYWx0ZXJuYXRlLXJldmVyc2VcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiB+dmFsdWUpXG4gIGluXG4gIGxldCBmaWxsX21vZGUgPVxuICAgIG0gZmlsbF9tb2RlIH5mOihmdW4gZiAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgRm9yd2FyZHMgLT4gXCJmb3J3YXJkc1wiXG4gICAgICAgIHwgYEJhY2t3YXJkcyAtPiBcImJhY2t3YXJkc1wiXG4gICAgICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZmlsbC1tb2RlXCIgfnZhbHVlKVxuICBpblxuICBbIFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLW5hbWVcIiB+dmFsdWU6bmFtZSlcbiAgOyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kdXJhdGlvblwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgZHVyYXRpb24pKVxuICA7IG0gZGVsYXkgfmY6KGZ1biBzIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRlbGF5XCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBzKSlcbiAgOyBtIGl0ZXJfY291bnQgfmY6KGZ1biBpIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnRcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gIDsgbSB0aW1pbmdfZnVuY3Rpb24gfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXCIgfnZhbHVlKVxuICA7IGRpcmVjdGlvblxuICA7IGZpbGxfbW9kZVxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbnR5cGUgdXNlcl9zZWxlY3QgPVxuICBbIGBBbGxcbiAgfCBgQXV0b1xuICB8IGBOb25lXG4gIHwgYFRleHRcbiAgXVxuXG5sZXQgdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEFsbCAtPiBcImFsbFwiXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBUZXh0IC0+IFwidGV4dFwiXG47O1xuXG5sZXQgdXNlcl9zZWxlY3QgcyA9XG4gIGxldCB2YWx1ZSA9IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgcyBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInVzZXItc2VsZWN0XCIgfnZhbHVlXG47O1xuXG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcInRvX3N0cmluZ19jc3MgLT4gb2Zfc3RyaW5nX2Nzc19leG4gLT4gdG9fc3RyaW5nX2Nzc1wiID1cbiAgICAgIGxldCB0IGNzcyA9XG4gICAgICAgIGxldCBzID0gdG9fc3RyaW5nX2NzcyBjc3MgaW5cbiAgICAgICAgbGV0IHMyID0gdG9fc3RyaW5nX2NzcyAob2Zfc3RyaW5nX2Nzc19leG4gcykgaW5cbiAgICAgICAgcHJpbnRfZW5kbGluZSBzO1xuICAgICAgICBwcmludF9lbmRsaW5lIHMyXG4gICAgICBpblxuICAgICAgdCAoZmxleF9pdGVtIH5ncm93OjEuMCAoKSBAPiBvdmVyZmxvdyBgU2Nyb2xsKTtcbiAgICAgIHQgKGZsZXhfY29udGFpbmVyIH5pbmxpbmU6dHJ1ZSB+ZGlyZWN0aW9uOmBDb2x1bW4gKCkgQD4gYm9yZGVyIH5zdHlsZTpgRGFzaGVkICgpKTtcbiAgICAgIHQgKGNvbG9yIChgUkdCQSAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjEwMCB+YjoxMDAgKCkpKSk7XG4gICAgICB0XG4gICAgICAgIChjb2xvclxuICAgICAgICAgICAoYEhTTEFcbiAgICAgICAgICAgICAgKENvbG9yLkhTTEEuY3JlYXRlXG4gICAgICAgICAgICAgICAgIH5oOjEwMFxuICAgICAgICAgICAgICAgICB+czooUGVyY2VudC5vZl9tdWx0IDAuNzUpXG4gICAgICAgICAgICAgICAgIH5sOihQZXJjZW50Lm9mX211bHQgMC42MClcbiAgICAgICAgICAgICAgICAgKCkpKSk7XG4gICAgICB0IChjcmVhdGUgfmZpZWxkOlwiY29udGVudFwiIH52YWx1ZTp7fFwiO1wifH0pO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29udGVudDogXCI7XCJcbiAgICBjb250ZW50OiBcIjtcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZ3JhZGllbnRzXCIgPVxuICAgICAgbGV0IHAgeCA9IFBlcmNlbnQub2ZfbXVsdCB4IGluXG4gICAgICBsZXQgYyBzID0gYE5hbWUgcyBpblxuICAgICAgbGV0IHQgY3NzID0gcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nX2NzcyBjc3MpIGluXG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgTGluZWFyX2dyYWRpZW50XG4gICAgICAgICAgICAgIHsgZGlyZWN0aW9uID0gYERlZyA5MFxuICAgICAgICAgICAgICA7IHN0b3BzID1cbiAgICAgICAgICAgICAgICAgIFsgcCAwLiwgYyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjIsIGMgXCIjZmYwMDAwXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjQsIGMgXCJyZWRcIlxuICAgICAgICAgICAgICAgICAgOyAoIHAgMS5cbiAgICAgICAgICAgICAgICAgICAgLCBgUkdCQVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+Zzo1MCB+YjozMCB+YTooUGVyY2VudC5vZl9tdWx0IDAuNzUpICgpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgYmxhY2sgMC4wMDAwMDAlLCAjZmYwMDAwIDIwLjAwMDAwMCUsIHJlZCA0MC4wMDAwMDAlLCByZ2JhKDEwMCw1MCwzMCwwLjc1KSAxMDAuMDAwMDAwJSkgfH1dO1xuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzID0gWyBwIDAuLCBjIFwiYmxhY2tcIjsgcCAxLiwgYyBcInJlZFwiIF0gfSkpO1xuICAgICAgWyVleHBlY3Qge3wgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGJsYWNrIDAuMDAwMDAwJSwgcmVkIDEwMC4wMDAwMDAlKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgdG9fanNfc3RyaW5nIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvU3RyaW5nXG5sZXQgdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0ZpeGVkIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvUHJlY2lzaW9uIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0V4cG9uZW50aWFsXG5sZXQgdG9fc3RyaW5nIHZhbHVlID0gdG9fanNfc3RyaW5nIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBvcGVuIENvcmUgaW5cbiAgbGV0IHByaW50IGYgPSBwcmludGYgXCIlc1wiICh0b19zdHJpbmcgZikgaW5cbiAgcHJpbnQgMS47XG4gIFslZXhwZWN0IHt8IDEgfH1dO1xuICBwcmludCBGbG9hdC5uYW47XG4gIFslZXhwZWN0IHt8IE5hTiB8fV07XG4gIHByaW50IEZsb2F0LmluZmluaXR5O1xuICBbJWV4cGVjdCB7fCBJbmZpbml0eSB8fV07XG4gIHByaW50IEZsb2F0Lm5lZ19pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgLUluZmluaXR5IHx9XTtcbiAgcHJpbnQgMC4wMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMWUtOCB8fV07XG4gIHByaW50ICgtMS4pO1xuICBbJWV4cGVjdCB7fCAtMSB8fV07XG4gIHByaW50IDEuMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMS4wMDAwMDAxIHx9XVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuaW5jbHVkZSBVaV9lZmZlY3RcblxuKCogQWxsIHZpc2liaWxpdHkgaGFuZGxlcnMgc2VlIGFsbCBldmVudHMsIHNvIGEgc2ltcGxlIGxpc3QgaXMgZW5vdWdoLiAgKilcbmxldCB2aXNpYmlsaXR5X2hhbmRsZXJzIDogKHVuaXQgLT4gdW5pdCkgbGlzdCByZWYgPSByZWYgW11cblxubW9kdWxlIHR5cGUgVmlzaWJpbGl0eV9oYW5kbGVyID0gc2lnXG4gIHZhbCBoYW5kbGUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgRGVmaW5lX3Zpc2liaWxpdHkgKFZIIDogVmlzaWJpbGl0eV9oYW5kbGVyKSA9IHN0cnVjdFxuICBsZXQgKCkgPSB2aXNpYmlsaXR5X2hhbmRsZXJzIDo9IFZILmhhbmRsZSA6OiAhdmlzaWJpbGl0eV9oYW5kbGVyc1xuZW5kXG5cbnR5cGUgXyB0ICs9XG4gIHwgVmlld3BvcnRfY2hhbmdlZFxuICB8IFN0b3BfcHJvcGFnYXRpb25cbiAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvblxuICB8IFByZXZlbnRfZGVmYXVsdFxuXG5sZXQgc2VxdWVuY2VfYXNfc2libGluZyBsZWZ0IH51bmxlc3Nfc3RvcHBlZCA9XG4gIGxldCByZWMgY29udGFpbnNfc3RvcCA9IGZ1bmN0aW9uXG4gICAgfCBNYW55IGVzIC0+IExpc3QuZXhpc3RzIGVzIH5mOmNvbnRhaW5zX3N0b3BcbiAgICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgY29udGFpbnNfc3RvcCBsZWZ0IHRoZW4gbGVmdCBlbHNlIFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgdW5sZXNzX3N0b3BwZWQgKCkgXVxuOztcblxuKCogV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRvbSBldmVudCBoZXJlIHNvIHRoYXRcbiAgIG1vdmVtZW50IGJldHdlZW4gW1Zkb20uRWZmZWN0LkV4cGVydC5oYW5kbGVdIGFuZFxuICAgW1VpX2NvbmNyZXRlLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBrZWVwcyB0aGUgb3JpZ2luYWxcbiAgIGRvbSBldmVudCBhcm91bmQuICopXG5sZXQgY3VycmVudF9kb21fZXZlbnQgPSByZWYgTm9uZVxuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OlN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFZpZXdwb3J0X2NoYW5nZWQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBMaXN0Lml0ZXIgIXZpc2liaWxpdHlfaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgKCkpKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBTdG9wX3Byb3BhZ2F0aW9uKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbV9odG1sLnN0b3BQcm9wYWdhdGlvbilcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6U3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgUHJldmVudF9kZWZhdWx0KSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbS5wcmV2ZW50RGVmYXVsdClcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biA9IEV4cGVydC5oYW5kbGVcblxuICBsZXQgaGFuZGxlIGRvbV9ldmVudCBldmVudCA9XG4gICAgbGV0IG9sZCA9ICFjdXJyZW50X2RvbV9ldmVudCBpblxuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IFNvbWUgKGRvbV9ldmVudCA6PiBEb21faHRtbC5lbGVtZW50IERvbS5ldmVudCBKcy50KTtcbiAgICBFeHBlcnQuaGFuZGxlIGV2ZW50O1xuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IG9sZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG5tb2R1bGUgdHlwZSBTID0gSG9va3NfaW50Zi5TXG5tb2R1bGUgdHlwZSBJbnB1dCA9IEhvb2tzX2ludGYuSW5wdXRcblxubGV0IGNhbmNlbF9hbmltYXRpb25fZnJhbWUgaWQgPSBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGlkXG5cbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBmID1cbiAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKEpzLndyYXBfY2FsbGJhY2sgZilcbjs7XG5cbm1vZHVsZSBFeHRyYSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgdHlwZV9pZCA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgICAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IHR5cGVfaWQ7IHZhbHVlIH0pID0gVHlwZV9lcXVhbC5JZC50b19zZXhwIHR5cGVfaWQgdmFsdWVcbmVuZFxuXG50eXBlIHQgPVxuICB8IFQgOlxuICAgICAgeyBpbnB1dCA6ICdpbnB1dFxuICAgICAgOyBpbnB1dF9pZCA6ICdpbnB1dCBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgY29tYmluZV9pbnB1dHMgOiAnaW5wdXQgLT4gJ2lucHV0IC0+ICdpbnB1dFxuICAgICAgOyBpbml0IDpcbiAgICAgICAgICAnaW5wdXRcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyB1cGRhdGUgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgIDsgZGVzdHJveSA6XG4gICAgICAgICAgJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiB1bml0XG4gICAgICA7IGlkIDogKCdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlKSBDb3JlLlR5cGVfZXF1YWwuSWQudFxuICAgICAgfVxuICAgICAgLT4gdFxuXG5sZXQgZ2VuZXJpY19ob29rID0gbGF6eSBKcy5VbnNhZmUuKGdldCBnbG9iYWwgKEpzLnN0cmluZyBcIkdlbmVyaWNIb29rXCIpKVxuXG5sZXQgbWFrZV9ob29rIH5jb21iaW5lX2lucHV0cyB+aW5pdCB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZCkgfnVwZGF0ZSB+ZGVzdHJveSB+aWQgPVxuICBUIHsgaW5pdDsgY29tYmluZV9pbnB1dHM7IGlucHV0OyBpbnB1dF9pZDsgdXBkYXRlOyBkZXN0cm95OyBpZCB9XG47O1xuXG5sZXQgcGFjayAoVCB7IGluaXQ7IGlucHV0OyBpbnB1dF9pZDsgdXBkYXRlOyBkZXN0cm95OyBpZDsgXyB9KSA9XG4gIGxldCB3cmFwIGEgPSBhIHw+IEpzLndyYXBfY2FsbGJhY2sgfD4gSnMuVW5zYWZlLmluamVjdCBpblxuICBsZXQgaW5pdCA9IHdyYXAgKGluaXQgaW5wdXQpIGluXG4gIGxldCB1cGRhdGUgPSB3cmFwICh1cGRhdGUgaW5wdXQpIGluXG4gIGxldCBkZXN0cm95ID0gd3JhcCBkZXN0cm95IGluXG4gIGxldCBnZW5lcmljX2hvb2sgPSBMYXp5LmZvcmNlIGdlbmVyaWNfaG9vayBpblxuICBsZXQgZXh0cmEgPSBFeHRyYS5UIHsgdHlwZV9pZCA9IGlucHV0X2lkOyB2YWx1ZSA9IGlucHV0IH0gaW5cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgZ2VuZXJpY19ob29rXG4gICAgW3wgaW5pdDsgdXBkYXRlOyBkZXN0cm95OyBpZCB8PiBKcy5VbnNhZmUuaW5qZWN0OyBleHRyYSB8PiBKcy5VbnNhZmUuaW5qZWN0IHxdXG47O1xuXG5sZXQgY29tYmluZSAoVCBsZWZ0KSAoVCByaWdodCkgPVxuICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsZWZ0LmlucHV0X2lkIHJpZ2h0LmlucHV0X2lkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZXByaW50X3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImhvb2tzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUsIHNvIHRoZXkgY2Fubm90IGJlIGNvbWJpbmVkOyB0YWtpbmcgdGhlIHNlY29uZCBcXFxuICAgICAgICAgb2YgdGhlIHR3b1wiXTtcbiAgICBUIHJpZ2h0XG4gIHwgU29tZSBUIC0+IFQgeyByaWdodCB3aXRoIGlucHV0ID0gcmlnaHQuY29tYmluZV9pbnB1dHMgbGVmdC5pbnB1dCByaWdodC5pbnB1dCB9XG47O1xuXG5tb2R1bGUgTWFrZSAoUyA6IFMpID0gc3RydWN0XG4gIGxldCBpbnB1dF9hbmRfc3RhdGVfaWQgPVxuICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiXCIgKGZ1biAoaW5wdXQsIF9hbmltYXRpb25faWQsIHN0YXRlKSAtPlxuICAgICAgWyVzZXhwX29mOiBTLklucHV0LnQgKiBvcGFxdWVdIChpbnB1dCwgc3RhdGUpKVxuICA7O1xuXG4gIGxldCBpbnB1dF9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiXCIgUy5JbnB1dC5zZXhwX29mX3RcblxuICBsZXQgaW5pdCBpbnB1dCBlbGVtZW50ID1cbiAgICBsZXQgc3RhdGUgPSBTLmluaXQgaW5wdXQgZWxlbWVudCBpblxuICAgIGxldCBhbmltYXRpb25faWQgPVxuICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgKGZ1biBfIC0+IFMub25fbW91bnQgaW5wdXQgc3RhdGUgZWxlbWVudClcbiAgICBpblxuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSBpbnB1dCAob2xkX2lucHV0LCBhbmltYXRpb25faWQsIHN0YXRlKSBlbGVtZW50ID1cbiAgICBTLnVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQ6aW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICBpbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZVxuICA7O1xuXG4gIGxldCBkZXN0cm95IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIGNhbmNlbF9hbmltYXRpb25fZnJhbWUgYW5pbWF0aW9uX2lkO1xuICAgIFMuZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudFxuICA7O1xuXG4gIGxldCBjcmVhdGUgaW5wdXQgPVxuICAgIG1ha2VfaG9va1xuICAgICAgfmV4dHJhOihpbnB1dCwgaW5wdXRfaWQpXG4gICAgICB+Y29tYmluZV9pbnB1dHM6Uy5JbnB1dC5jb21iaW5lXG4gICAgICB+aWQ6aW5wdXRfYW5kX3N0YXRlX2lkXG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZVxuICAgICAgfmRlc3Ryb3lcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgdHlwZV9pZCA9IGlucHV0X2lkXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgRXh0cmEgPSBFeHRyYVxuZW5kXG4iLCJvcGVuISBKc19vZl9vY2FtbFxub3BlbiEgSnNcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBtYXAgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgc2V0IDogJ2EgLT4gJ2IgLT4gdW5pdCBtZXRoXG4gIG1ldGhvZCBnZXQgOiAnYSAtPiAnYiBPcHRkZWYudCBtZXRoXG4gIG1ldGhvZCBkZWxldGUgOiAnYSAtPiB1bml0IG1ldGhcbmVuZFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBtYXAgSnMudFxuXG5sZXQgbWFwIDogdW5pdCAtPiAoJ2EsICdiKSBtYXAgSnMudCBKcy5jb25zdHIgPSBmdW4gKCkgLT4gVW5zYWZlLmdsb2JhbCMjLl9NYXBcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBtYXAgPSBtYXAgKCkgaW5cbiAgbmV3JWpzIG1hcFxuOztcblxubGV0IHNldCB0IGEgYiA9IHQjI3NldCBhIGJcbmxldCBnZXQgdCBhID0gSnMuT3B0ZGVmLnRvX29wdGlvbiAodCMjZ2V0IGEpXG5sZXQgZGVsZXRlIHQgYSA9IHQjI2RlbGV0ZSBhXG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIEpzX29iamVjdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKcy5VbnNhZmUuYW55XG5cbiAgbGV0IGVtcHR5X29iaiAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuICBsZXQgc2V0X3Byb3BfYXNjaWkgdCBuYW1lIHZhbHVlID0gSnMuVW5zYWZlLnNldCB0IChKcy5zdHJpbmcgbmFtZSkgdmFsdWVcbiAgbGV0IGdldF9wcm9wX2FzY2lpIHQgbmFtZSA9IEpzLlVuc2FmZS5nZXQgdCAoSnMuc3RyaW5nIG5hbWUpXG4gIGxldCBoYXNfcHJvcGVydHkgdCBuYW1lID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgdCAoSnMuc3RyaW5nIG5hbWUpKVxuICBsZXQgaXNfdW5kZWZpbmVkIGEgPSBub3QgKEpzLk9wdGRlZi50ZXN0IGEpXG5lbmRcblxubW9kdWxlIEF0dHJzID0gc3RydWN0XG4gIHR5cGUgdCA9IEpzX29iamVjdC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSBKc19vYmplY3QuZW1wdHlfb2JqICgpXG5cbiAgbGV0IHNldF9wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9XG4gICAgZnVuIHQgbmFtZSB2YWx1ZSAtPiBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgdCBuYW1lIHZhbHVlXG4gIDs7XG5cbiAgbGV0IGhhc19wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IGJvb2wgPSBKc19vYmplY3QuaGFzX3Byb3BlcnR5XG5cbiAgbGV0IGhhc19hdHRyaWJ1dGUgdCBuYW1lID1cbiAgICBKc19vYmplY3QuaGFzX3Byb3BlcnR5IHQgXCJhdHRyaWJ1dGVzXCJcbiAgICAmJiBKc19vYmplY3QuaGFzX3Byb3BlcnR5IChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZVxuICA7O1xuXG4gIGxldCBzZXRfYXR0cmlidXRlIDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+XG4gICAgICBpZiBKc19vYmplY3QuaXNfdW5kZWZpbmVkIChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIilcbiAgICAgIHRoZW4gSnNfb2JqZWN0LnNldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIgKEpzX29iamVjdC5lbXB0eV9vYmogKCkpO1xuICAgICAgSnNfb2JqZWN0LnNldF9wcm9wX2FzY2lpIChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZSB2YWx1ZVxuICA7O1xuZW5kXG5cbnR5cGUgdmlydHVhbF9kb21fbm9kZVxudHlwZSB2aXJ0dWFsX2RvbV9wYXRjaFxuXG5tb2R1bGUgVmlydHVhbF9kb20gPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSB2aXJ0dWFsX2RvbSA9IG9iamVjdFxuICAgIG1ldGhvZCBfVk5vZGUgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50XG4gICAgICAgLT4gQXR0cnMudFxuICAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmXG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KVxuICAgICAgICBKcy5jb25zdHJcbiAgICAgICAgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF9WVGV4dCA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KSBKcy5jb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBkaWZmIDpcbiAgICAgIHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcGF0Y2ggOlxuICAgICAgRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBzdmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50XG4gICAgICAgLT4gQXR0cnMudFxuICAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmXG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KVxuICAgICAgICBKcy5jb25zdHJcbiAgICAgICAgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBsZXQgdmlydHVhbF9kb20gOiB2aXJ0dWFsX2RvbSBKcy50ID0gSnMuVW5zYWZlLmdsb2JhbCAjIy4gVmlydHVhbERvbVxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIG9wZW4gVmlydHVhbF9kb21cblxuICB0eXBlIHQgPSB2aXJ0dWFsX2RvbV9ub2RlIEpzLnRcblxuICBsZXQgdG9fZG9tIDogdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCA9XG4gICAgZnVuIHZub2RlIC0+IHZpcnR1YWxfZG9tIyNjcmVhdGVFbGVtZW50IHZub2RlXG4gIDs7XG5cbiAgbGV0IG5vZGVcbiAgICA6ICBzdHJpbmcgLT4gQXR0cnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnRcbiAgICA9XG4gICAgZnVuIHRhZyBhdHRycyBjaGlsZHJlbiBrZXkgLT5cbiAgICAgIGxldCB0YWcgPSBKcy5zdHJpbmcgdGFnIGluXG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgbWF0Y2gga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEpzLk9wdGRlZi5lbXB0eVxuICAgICAgICB8IFNvbWUga2V5IC0+IEpzLk9wdGRlZi5yZXR1cm4gKEpzX29mX29jYW1sLkpzLnN0cmluZyBrZXkpXG4gICAgICBpblxuICAgICAgbGV0IHZub2RlID0gdmlydHVhbF9kb20jIy5fVk5vZGUgaW5cbiAgICAgIG5ldyVqcyB2bm9kZSB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5XG4gIDs7XG5cbiAgbGV0IHN2Z1xuICAgIDogIHN0cmluZyAtPiBBdHRycy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHN0cmluZyBvcHRpb25cbiAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuICAgID1cbiAgICBmdW4gdGFnIGF0dHJzIGNoaWxkcmVuIGtleSAtPlxuICAgICAgbGV0IHRhZyA9IEpzLnN0cmluZyB0YWcgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnMuc3RyaW5nIGtleSlcbiAgICAgIGluXG4gICAgICBsZXQgdnN2ZyA9IHZpcnR1YWxfZG9tIyMuc3ZnIGluXG4gICAgICBuZXclanMgdnN2ZyB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5XG4gIDs7XG5cbiAgbGV0IHRleHQgcyA9XG4gICAgbGV0IHZ0ZXh0ID0gdmlydHVhbF9kb20jIy5fVlRleHQgaW5cbiAgICBuZXclanMgdnRleHQgKEpzLnN0cmluZyBzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYXRjaCA9IHN0cnVjdFxuICBvcGVuIFZpcnR1YWxfZG9tXG5cbiAgdHlwZSB0ID0gdmlydHVhbF9kb21fcGF0Y2ggSnMudFxuXG4gIGxldCBkaWZmIDogdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50ID1cbiAgICBmdW4gYSBiIC0+IHZpcnR1YWxfZG9tIyNkaWZmIGEgYlxuICA7O1xuXG4gIGxldCBwYXRjaCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCA9XG4gICAgZnVuIGVsZW1lbnQgdm5vZGUgLT4gdmlydHVhbF9kb20jI3BhdGNoIGVsZW1lbnQgdm5vZGVcbiAgOztcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9IGRpZmYgcHJldmlvdXMgY3VycmVudFxuICBsZXQgYXBwbHkgPSBwYXRjaFxuXG4gIGxldCBpc19lbXB0eSA6IHQgLT4gYm9vbCA9XG4gICAgbGV0IGYgPVxuICAgICAgSnMuVW5zYWZlLnB1cmVfanNfZXhwclxuICAgICAgICB7anN8XG4gICAgICAgIChmdW5jdGlvbiAocGF0Y2gpIHtcbiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2gpIHtcbiAgICAgICAgICAgIGlmIChrZXkgIT09ICdhJykgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB8anN9XG4gICAgaW5cbiAgICBmdW4gKHQgOiB0KSAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgZiBbfCBKcy5VbnNhZmUuaW5qZWN0IHQgfF0gfD4gSnMudG9fYm9vbFxuICA7O1xuZW5kXG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBbJ3MsICdlbGVtZW50XSB3aWRnZXQgPSBvYmplY3RcbiAgICBjb25zdHJhaW50ICdlbGVtZW50ID0gI0RvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgIG1ldGhvZCB0eXBlXyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAoKiB2aXJ0dWFsLWRvbSBjb25zaWRlcnMgdHdvIHdpZGdldHMgb2YgYmVpbmcgb2YgdGhlIHNhbWUgXCJraW5kXCIgaWYgZWl0aGVyXG4gICAgICAgb2YgdGhlIGZvbGxvd2luZyBob2xkczpcblxuICAgICAgIDEuIFRoZXkgYm90aCBoYXZlIGEgXCJuYW1lXCIgYXR0cmlidXRlIGFuZCB0aGVpciBcImlkXCIgZmllbGRzIGFyZSBlcXVhbC5cbiAgICAgICAoSSB0aGluayB0aGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHZpcnR1YWwtZG9tIGFuZCBoYXZlIGZpZWxkIGFuIGlzc3VlXG4gICAgICAgb24gZ2l0aHViOiBbaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9pc3N1ZXMvMzgwXSlcblxuICAgICAgIDIuIFRoZWlyIFtpbml0XSBtZXRob2RzIGFyZSBcIj09PVwiIGVxdWFsLiBUaGlzIGlzIHRydWUgd2hlbiB1c2luZyB2aXJ0dWFsLWRvbVxuICAgICAgIHdpZGdldHMgaW4gdGhlIHVzdWFsIHN0eWxlIGluIEphdmFzY3JpcHQsIHNpbmNlIHRoZSBbaW5pdF0gbWV0aG9kIHdpbGwgYmUgZGVmaW5lZFxuICAgICAgIG9uIGEgcHJvdG90eXBlLCBidXQgaXMgbm90IHRydWUgaW4gdGhpcyBiaW5kaW5nIGFzIGl0IGlzIHJlZGVmaW5lZCBmb3IgZWFjaFxuICAgICAgIGNhbGwgdG8gW3dpZGdldF0uXG5cbiAgICAgICBTbywgd2UgZ28gd2l0aCBvcHRpb24gMSBhbmQgbXVzdCBoYXZlIGEgdHJpdmlhbCBmaWVsZCBjYWxsZWQgW25hbWVdLlxuICAgICopXG4gICAgbWV0aG9kIG5hbWUgOiB1bml0IEpzLndyaXRlb25seV9wcm9wXG4gICAgbWV0aG9kIGlkIDogKCdzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudCBKcy5wcm9wXG4gICAgbWV0aG9kIHN0YXRlIDogJ3MgSnMucHJvcFxuICAgIG1ldGhvZCB2ZG9tRm9yVGVzdGluZyA6IE5vZGUudCBMYXp5LnQgb3B0aW9uIEpzLnByb3BcbiAgICBtZXRob2QgaW5mbyA6IFNleHAudCBMYXp5LnQgb3B0aW9uIEpzLnByb3BcbiAgICBtZXRob2QgZGVzdHJveSA6ICgnZWxlbWVudCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVwZGF0ZSA6XG4gICAgICAoKCdvdGhlcl9zdGF0ZSwgJ290aGVyX2VsZW1lbnQpIHdpZGdldCBKcy50IC0+ICdlbGVtZW50IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGluaXQgOiAodW5pdCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcbiAgZW5kXG5cbiAgKCogV2UgbW9kZWwgSlMgbGV2ZWwgb2JqZWN0cyBoZXJlIHNvIHRoZXJlIGlzIGEgbG90IG9mIHRocm93aW5nIGF3YXkgb2YgdHlwZVxuICAgICBpbmZvcm1hdGlvbi4gIFdlIGNvdWxkIHBvc3NpYmx5IHRyeSB0byByZWRpc2NvdmVyIG1vcmUgb2YgaXQuICBPciBtYXliZSB3ZVxuICAgICBzaG91bGQgc2VlIGlmIHdlIGNhbiBnZXQgcmlkIFdpZGdldCBjb21wbGV0ZWx5LlxuICAgICB0aGUgdW5pdCB0eXBlIHBhcmFtZXRlcnMgaGVyZSBhcmUgbm90IGFjdHVhbGx5IHVuaXQsIGJ1dCBwYXJ0IG9mXG4gICAgIHRoZSB0eXBlIGluZm8gd2UgaGF2ZSB0aHJvd24gYXdheSBpbnRvIG91ciBkYW5jZVxuICAgICB3aXRoIEpTICopXG4gIHR5cGUgdCA9IE5vZGUudFxuXG4gICgqIGhlcmUgaXMgaG93IHdlIHRocm93IGF3YXkgdHlwZSBpbmZvcm1hdGlvbi4gIE91ciBnb29kIG9sZCBmcmllbmQgT2JqLm1hZ2ljLFxuICAgICBidXQgY29uc3RyYWluZWQgYSBsaXR0bGUgYml0ICopXG4gIGxldCBub2RlX29mX3dpZGdldCA6IChfLCBfKSB3aWRnZXQgSnMudCAtPiBOb2RlLnQgPSBTdGRsaWIuT2JqLm1hZ2ljXG5cbiAgbW9kdWxlIFN0YXRlX2tlZXBlciA9IHN0cnVjdFxuICAgIHR5cGUgYm94ID0gVCA6ICgnYSAqIF8pIFR5cGVfZXF1YWwuSWQudCAqICdhIC0+IGJveFxuXG4gICAgbGV0IHQgOiAoSnMuVW5zYWZlLmFueSwgYm94KSBKc19tYXAudCA9IEpzX21hcC5jcmVhdGUgKClcbiAgICBsZXQgc2V0IH5pZCBlbGVtZW50IHN0YXRlID0gSnNfbWFwLnNldCB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpIChUIChpZCwgc3RhdGUpKVxuXG4gICAgbGV0IGdldCA6IHR5cGUgYSBiLiBpZDooYSAqIGIpIFR5cGVfZXF1YWwuSWQudCAtPiBfIC0+IGEgPVxuICAgICAgZnVuIH5pZCBlbGVtZW50IC0+XG4gICAgICBsZXQgZWxlbWVudCA9IEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCBpblxuICAgICAgbWF0Y2ggSnNfbWFwLmdldCB0IGVsZW1lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBpZF9zZXhwID0gVHlwZV9lcXVhbC5JZC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIpIGlkIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHOiBlbGVtZW50IHN0YXRlIG5vdCBmb3VuZFwiIChpZF9zZXhwIDogU2V4cC50KV1cbiAgICAgIHwgU29tZSAoVCAoZl9pZCwgc3RhdGUpKSAtPlxuICAgICAgICBsZXQgVCA9IFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBpZCBmX2lkIGluXG4gICAgICAgIHN0YXRlXG4gICAgOztcblxuICAgIGxldCBkZWxldGUgZWxlbWVudCA9IEpzX21hcC5kZWxldGUgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KVxuICBlbmRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgICh0eXBlIHMpXG4gICAgICAgID8odmRvbV9mb3JfdGVzdGluZyA6IE5vZGUudCBMYXp5LnQgb3B0aW9uKVxuICAgICAgICA/KGRlc3Ryb3kgOiBzIC0+ICdlbGVtZW50IC0+IHVuaXQgPSBmdW4gXyBfIC0+ICgpKVxuICAgICAgICA/KHVwZGF0ZSA6IHMgLT4gJ2VsZW1lbnQgLT4gcyAqICdlbGVtZW50ID0gZnVuIHMgZWx0IC0+IHMsIGVsdClcbiAgICAgICAgfihpZCA6IChzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgfihpbml0IDogdW5pdCAtPiBzICogJ2VsZW1lbnQpXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvYmogOiAocywgXykgd2lkZ2V0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBvYmojIy50eXBlXyA6PSBKcy5zdHJpbmcgXCJXaWRnZXRcIjtcbiAgICBvYmojIy5uYW1lIDo9ICgpO1xuICAgIG9iaiMjLmlkIDo9IGlkO1xuICAgIG9iaiMjLnZkb21Gb3JUZXN0aW5nIDo9IHZkb21fZm9yX3Rlc3Rpbmc7XG4gICAgb2JqIyMuaW5pdFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IHMwLCBkb21fbm9kZSA9IGluaXQgKCkgaW5cbiAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlIHMwO1xuICAgICAgZG9tX25vZGUpO1xuICAgIG9iaiMjLnVwZGF0ZVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmV2IGRvbV9ub2RlIC0+XG4gICAgICAoKiBUaGUgW3VwZGF0ZV0gbWV0aG9kIG9mIFtvYmpdIGlzIG9ubHkgY2FsbGVkIGJ5IHZpcnR1YWwtZG9tIGFmdGVyIGl0IGhhcyBjaGVja2VkXG4gICAgICAgICB0aGF0IHRoZSBbaWRdcyBvZiBbcHJldl0gYW5kIFtvYmpdIGFyZSBcIj09PVwiIGVxdWFsLiBUaHVzIFtzYW1lX3dpdG5lc3NfZXhuXSB3aWxsXG4gICAgICAgICBuZXZlciByYWlzZS4gKilcbiAgICAgIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBwcmV2IyMuaWQgaWQgd2l0aFxuICAgICAgfCBUeXBlX2VxdWFsLlQgLT5cbiAgICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgICBsZXQgc3RhdGUnLCBkb21fbm9kZScgPSB1cGRhdGUgcHJldl9zdGF0ZSBkb21fbm9kZSBpblxuICAgICAgICBTdGF0ZV9rZWVwZXIuZGVsZXRlIGRvbV9ub2RlO1xuICAgICAgICBTdGF0ZV9rZWVwZXIuc2V0IH5pZCBkb21fbm9kZScgc3RhdGUnO1xuICAgICAgICBkb21fbm9kZScpO1xuICAgIG9iaiMjLmRlc3Ryb3lcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZG9tX25vZGUgLT5cbiAgICAgIGxldCBwcmV2X3N0YXRlID0gU3RhdGVfa2VlcGVyLmdldCB+aWQgZG9tX25vZGUgaW5cbiAgICAgIGRlc3Ryb3kgcHJldl9zdGF0ZSBkb21fbm9kZTtcbiAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGUpO1xuICAgIG5vZGVfb2Zfd2lkZ2V0IG9ialxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgVmRvbV9yYXcgPSBSYXdcblxubGV0ICgpID1cbiAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICBudW1iZXJzIGFmdGVyIHRoZSBkZWNpbWFsIHBsYWNlLiAqKVxuICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuOztcblxuKCoqIFRoaXMgaGFzIDMga2luZHMgb2YgY29uc3RydWN0b3JzLlxuICAgIHt2XG4gICAgICAtIGNvbnN0cnVjdG9ycyBmb3IgcHJvcGVydGllcyAvIGF0dHJpYnV0ZXMgZm9yIHdoaWNoIHdlXG4gICAgICAgIGhhdmUgd3JpdHRlbiBmaXJzdCBjbGFzcyBvY2FtbCByZXByZXNlbnRhdGlvbnMgKHNvIGZhciBvbmx5IFN0eWxlLFxuICAgICAgICBDbGFzcywgYW5kIEhhbmRsZXIpXG5cbiAgICAgIC0gVGhvc2Ugd2hpY2ggd2UgaW1tZWRpYXRlbHkgY29udmVydCBpbnRvIEpzIGNhbGxlZCBSYXcsIHdoaWNoXG4gICAgICAgIGluIHR1cm4gaGFzIHR3byBjYXNlczpcbiAgICAgICAgLSBQcm9wZXJ0eSBmb3IgcHJvcGVydGllcyBvbiB0aGUgRE9NXG4gICAgICAgIC0gQXR0cmlidXRlIGZvciBhdHRyaWJ1dGVzIG9uIHRoZSBET01cblxuICAgICAgLSBIb29rcywgd2hpY2ggcmVnaXN0ZXIgY2FsbGJhY2tzIG9uIHByb3BlcnR5IGFkZGl0aW9uIGFuZCByZW1vdmFsLlxuICAgIHZ9XG5cbiAgICBHZW5lcmFsbHkgc3BlYWtpbmcgb25lIHNob3VsZCBhdm9pZCBjcmVhdGluZyBhIHByb3BlcnR5IG9yIGF0dHJpYnV0ZVxuICAgIGZvciBzb21ldGhpbmcgZm9yIHdoaWNoIHdlIGhhdmUgYSBmaXJzdCBjbGFzcyByZXByZXNlbnRhdGlvbi5cbiopXG5cbm1vZHVsZSBFdmVudF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgaGFuZGxlciA6ICgjRG9tX2h0bWwuZXZlbnQgYXMgJ2EpIEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudFxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgY29tYmluZVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBsdGlkOyBoYW5kbGVyID0gbGhhbmRsZXIgfSlcbiAgICAgICAgKFQgeyB0eXBlX2lkID0gcnRpZDsgaGFuZGxlciA9IHJoYW5kbGVyIH0gYXMgcmlnaHQpXG4gICAgPVxuICAgICgqIElmIHRoZXkgYXJlIG5vdCB0aGUgc2FtZSB3aXRuZXNzLCB0aGVuIGl0IGlzIGEgYnVnIGluIHZpcnR1YWxfZG9tLCBzaW5jZVxuICAgICAgIHdlIGRvIG5vdCBleHBvc2UgW29uXSBhbnltb3JlIHdoaWNoIG1lYW5zIHRoaXMgbGlicmFyeSBjYW4gZGV0ZXJtaW5lZCB0aGVcbiAgICAgICBbVHlwZV9lcXVhbC5JZF0gY29ycmVzcG9uZGluZyB0byBlYWNoIGV2ZW50LiB2aXJ0dWFsX2RvbSBtYWludGFpbnMgdGhlXG4gICAgICAgaW52YXJpYW50IHRoYXQgYW55IHR3byBldmVudHMgd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgcHJvZHVjZSBoYW5kbGVyc1xuICAgICAgIHRoYXQgaGF2ZSB0aGUgc2FtZSBbVHlwZV9lcXVhbC5JZF0uICopXG4gICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbHRpZCBydGlkIHdpdGhcbiAgICB8IFNvbWUgVCAtPlxuICAgICAgVFxuICAgICAgICB7IHR5cGVfaWQgPSBsdGlkXG4gICAgICAgIDsgaGFuZGxlciA9XG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgICBFZmZlY3Quc2VxdWVuY2VfYXNfc2libGluZyAobGhhbmRsZXIgdmFsdWUpIH51bmxlc3Nfc3RvcHBlZDooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIHJoYW5kbGVyIHZhbHVlKSlcbiAgICAgICAgfVxuICAgIHwgTm9uZSAtPlxuICAgICAgZXByaW50X3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJCVUchICBUeXBlLWlkcyBmb3IgZXZlbnQgaGFuZGxlcnMgZGlmZmVyXCJcbiAgICAgICAgICAgIChsdGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXG4gICAgICAgICAgICAocnRpZCA6IF8gVHlwZV9lcXVhbC5JZC50KV07XG4gICAgICByaWdodFxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHwgUHJvcGVydHkgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgQXR0cmlidXRlIG9mXG4gICAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzIDogYm9vbFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZhbHVlIDogSnMuVW5zYWZlLmFueVxuICAgICAgfVxuICB8IEhhbmRsZXIgb2ZcbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBoYW5kbGVyIDogRXZlbnRfaGFuZGxlci50XG4gICAgICB9XG4gIHwgSG9vayBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhvb2sgOiBIb29rcy50XG4gICAgICB9XG4gIHwgU3R5bGUgb2YgQ3NzX2dlbi50XG4gIHwgQ2xhc3Mgb2Ygc3RyaW5nIGxpc3RcbiAgfCBNYW55IG9mIHQgbGlzdFxuICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgb2ZcbiAgICAgIHQgbGlzdCAqIChDc3NfZ2VuLnQgLT4gQ3NzX2dlbi50KSAqIChzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdClcbiAgfCBNYW55X3dpdGhvdXRfbWVyZ2Ugb2YgdCBsaXN0XG5cbmxldCBjcmVhdGUgbmFtZSB2YWx1ZSA9XG4gIEF0dHJpYnV0ZVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdmFsdWUpIH1cbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQgbmFtZSB2YWx1ZSA9XG4gIEF0dHJpYnV0ZVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZVxuICAgIDsgbmFtZVxuICAgIDsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChEb21fZmxvYXQudG9fanNfc3RyaW5nIHZhbHVlKVxuICAgIH1cbjs7XG5cbmxldCBwcm9wZXJ0eSBuYW1lIHZhbHVlID0gUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSB9XG5cbmxldCBzdHJpbmdfcHJvcGVydHkgbmFtZSB2YWx1ZSA9XG4gIFByb3BlcnR5XG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGJvb2xfcHJvcGVydHkgbmFtZSB2YWx1ZSA9XG4gIFByb3BlcnR5XG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLmJvb2wgdmFsdWUpIH1cbjs7XG5cbmxldCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZ1bmN0aW9uXG4gIHwgQXR0cmlidXRlIGF0dHJpYnV0ZSAtPiBBdHRyaWJ1dGUgeyBhdHRyaWJ1dGUgd2l0aCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IHRydWUgfVxuICB8IFByb3BlcnR5IHByb3BlcnR5IC0+IFByb3BlcnR5IHsgcHJvcGVydHkgd2l0aCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IHRydWUgfVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNyZWF0ZV9ob29rIG5hbWUgaG9vayA9IEhvb2sgeyBuYW1lOyBob29rIH1cbmxldCBtYW55IGF0dHJzID0gTWFueSBhdHRyc1xubGV0IG1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyA9IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRyc1xubGV0IGVtcHR5ID0gTWFueSBbXVxubGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IE1hbnkgWyBsZWZ0OyByaWdodCBdXG5sZXQgKCBAICkgPSBjb21iaW5lXG5cbm1vZHVsZSBVbm1lcmdlZF93YXJuaW5nX21vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vX3dhcm5pbmdzXG4gICAgfCBBbGxfd2FybmluZ3NcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgb2YgaW50XG5cbiAgbGV0IHdhcm5pbmdfY291bnQgPSByZWYgMFxuICBsZXQgY3VycmVudCA9IHJlZiAoU3RvcF9hZnRlcl9xdW90YSAxMDApXG5cbiAgbGV0IHdhcm5fcyBzID1cbiAgICBpbmNyIHdhcm5pbmdfY291bnQ7XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9fd2FybmluZ3MgLT4gKClcbiAgICB8IEFsbF93YXJuaW5ncyAtPiBlcHJpbnRfcyBzXG4gICAgfCBTdG9wX2FmdGVyX3F1b3RhIHF1b3RhIC0+XG4gICAgICBsZXQgd2FybmluZ19jb3VudCA9ICF3YXJuaW5nX2NvdW50IGluXG4gICAgICBpZiB3YXJuaW5nX2NvdW50IDw9IHF1b3RhXG4gICAgICB0aGVuIChcbiAgICAgICAgZXByaW50X3MgcztcbiAgICAgICAgaWYgd2FybmluZ19jb3VudCA9IHF1b3RhXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlcHJpbnRfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiV0FSTklORzogcmVhY2hlZCB3YXJuaW5nIG1lc3NhZ2UgcXVvdGE7IG5vIG1vcmUgbWVzc2FnZXMgd2lsbCBiZSBwcmludGVkXCJcbiAgICAgICAgICAgICAgICAocXVvdGEgOiBpbnQpXSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgcmVzZXRfd2FybmluZ19jb3VudCAoKSA9IHdhcm5pbmdfY291bnQgOj0gMFxuICBlbmRcbmVuZFxuXG50eXBlIG1lcmdlID1cbiAgeyBzdHlsZXMgOiBDc3NfZ2VuLnRcbiAgOyBjbGFzc2VzIDogc3RyaW5nIGxpc3RcbiAgOyBoYW5kbGVycyA6IEV2ZW50X2hhbmRsZXIudCBNYXAuTShTdHJpbmcpLnRcbiAgOyBob29rcyA6IEhvb2tzLnQgTWFwLk0oU3RyaW5nKS50XG4gIH1cblxubGV0IGNvbWJpbmluZ19tYXBfYWRkIG1hcCBrZXkgdmFsdWUgfmNvbWJpbmUgPVxuICBNYXAudXBkYXRlIG1hcCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBTb21lIGV4aXN0aW5nX3ZhbHVlIC0+IGNvbWJpbmUgfmtleSBleGlzdGluZ192YWx1ZSB2YWx1ZVxuICAgIHwgTm9uZSAtPiB2YWx1ZSlcbjs7XG5cbmxldCBlbXB0eV9tZXJnZSA9XG4gIHsgc3R5bGVzID0gQ3NzX2dlbi5lbXB0eVxuICA7IGNsYXNzZXMgPSBbXVxuICA7IGhhbmRsZXJzID0gTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICA7IGhvb2tzID0gTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICB9XG47O1xuXG5sZXQgdG9fcmF3IGF0dHIgPVxuICBsZXQgYXR0cnMgPSBbIGF0dHIgXSBpblxuICAoKiBXaGVuIGlucHV0IGVsZW1lbnRzIGhhdmUgdGhlaXIgdmFsdWUgc2V0IHRvIHdoYXQgaXQgYWxyZWFkeSBpc1xuICAgICB0aGUgY3Vyc29yIGdldHMgbW92ZWQgdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQgZXZlbiB3aGVuIHRoZSB1c2VyXG4gICAgIGlzIGVkaXRpbmcgaW4gdGhlIG1pZGRsZS4gU29mdFNldEhvb2sgKGZyb20gLi9zb2Z0LXNldC1ob29rLmpzKVxuICAgICBjb21wYXJlcyBiZWZvcmUgc2V0dGluZywgYXZvaWRpbmcgdGhlIHByb2JsZW0ganVzdCBsaWtlIGluXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaW5kZXguanMjTDQzLUw1MVxuXG4gICAgIG5vdGUgdGhhdCBFbG0ncyB2aXJ0dWFsLWRvbSBpbmNsdWRlcyBhIHdvcmthcm91bmQgZm9yIHRoaXMgc29cbiAgICAgaWYgd2Ugc3dpdGNoIHRvIHRoYXQgdGhlIHdvcmthcm91bmQgaGVyZSB3aWxsIGJlIHVubmVjZXNzYXJ5LlxuICAgICBodHRwczovL2dpdGh1Yi5jb20vZWxtLWxhbmcvdmlydHVhbC1kb20vYmxvYi8xN2IzMGZiN2RlNDg2NzI1NjVkNjIyN2QzM2MwMTc2ZjA3NTc4NmRiL3NyYy9OYXRpdmUvVmlydHVhbERvbS5qcyNMNDM0LUw0MzlcbiAgKilcbiAgbGV0IGF0dHJzX29iaiA6IFZkb21fcmF3LkF0dHJzLnQgPSBWZG9tX3Jhdy5BdHRycy5jcmVhdGUgKCkgaW5cbiAgKCogW3Rha2Vfc2Vjb25kXypdIGlzIHRoZSB0cml2aWFsIG1lcmdlIGZ1bmN0aW9uIChpLmUuIG5vIG1lcmdlIGF0IGFsbCk7IGl0XG4gICAgIHRha2VzIHR3byBhdHRyaWJ1dGVzIG9mIHRoZSBzYW1lIGtpbmQsIGlnbm9yZXMgYSBmaXJzdCwgYW5kIGVtaXRzXG4gICAgIGEgd2FybmluZyBpZiBbd2Fybl9hYm91dF91bm1lcmdlZF9hdHRyaWJ1dGVzXSBpcyBlbmFibGVkLiAqKVxuICBsZXQgdGFrZV9zZWNvbmRfc3R5bGVzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW5cbiAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIHN0eWxlc1wiIChmaXJzdCA6IENzc19nZW4udCkgKHNlY29uZCA6IENzc19nZW4udCldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfY2xhc3NlcyBmaXJzdCBzZWNvbmQgPVxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuIChcbiAgICAgIGxldCBmaXJzdCA9IExpc3Quc29ydCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ10gZmlyc3QgaW5cbiAgICAgIGxldCBzZWNvbmQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6WyVjb21wYXJlOiBzdHJpbmddIHNlY29uZCBpblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgY2xhc3Nlc1wiIChmaXJzdCA6IHN0cmluZyBsaXN0KSAoc2Vjb25kIDogc3RyaW5nIGxpc3QpXSk7XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9oYW5kbGVyIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhhbmRsZXJzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hvb2sgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3MgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBob29rc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gICgqIFdlIG1lcmdlIGF0dHJpYnV0ZXMgd2hlbiB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSByYXcgYXR0cmlidXRlIG9iamVjdCxcbiAgICAgcmF0aGVyIHRoYW4gd2hlbiB0aGUgdXNlci1mYWNpbmcgbWVyZ2UgZnVuY3Rpb25zIChbbWFueV0sIFtjb21iaW5lXSwgYW5kXG4gICAgIFtAXSkgYXJlIGNhbGxlZC4gVGhpcyBzdHJhdGVneSBpcyBiZXR0ZXIgaW4gYm90aCBzcGVlZCBhbmQgbWVtb3J5IHVzYWdlLFxuICAgICBzaW5jZSBpdCBtZWFucyB3ZSBkbyBub3QgbmVlZCB0byBjb25jYXRlbmF0ZSB0aGUgbGlzdCBvZiBcInVubWVyZ2VhYmxlXCJcbiAgICAgYXR0cmlidXRlcyAoUHJvcGVydHkgYW5kIEF0dHJpYnV0ZSk7IGluc3RlYWQsIHdlIGNhbiBpdGVyYXRlIHRocm91Z2ggdGhlXG4gICAgIHRyZWUgb2YgYXR0cmlidXRlcyBhbmQgZWFnZXJseSB3cml0ZSB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIHRvIHRoZVxuICAgICBhdHRyaWJ1dGUgb2JqZWN0IGFzIHdlIGZpbmQgdGhlbS4gSWYgdHdvIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgaGF2ZSB0aGVcbiAgICAgc2FtZSBuYW1lLCB0aGUgc2Vjb25kIHdpbGwgc2ltcGx5IG92ZXJ3cml0ZSB0aGUgZmlyc3QsIGFzIGRlc2lyZWQuXG5cbiAgICAgSW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIHRoZSBbTXVsdGldIG1vZHVsZSAodGhhdCBpcyxcbiAgICAgaXQgbXVzdCBiZSBwb3NzaWJsZSB0byBtZXJnZSBjbGFzc2VzIGFuZCBzdHlsZXMsIGJ1dCBub3QgaG9va3MgYW5kXG4gICAgIGhhbmRsZXJzKSwgd2UgaW50cm9kdWNlIHRoZSB3b3JrYXJvdW5kIGNvbnN0cnVjdG9yXG4gICAgIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXS5cblxuICAgICBUaGVyZSBhcmUgdGh1cyB0aHJlZSBjYXNlcyB0aGF0IGVhY2ggaGF2ZSBkaWZmZXJlbnQgbWVyZ2UgYmVoYXZpb3JzOlxuICAgICAtIFNpbXBsZSBsaXN0cyAtIG5vIG1lcmdpbmdcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnldIC0gbWVyZ2VzIGNsYXNzZXMsIHN0eWxlcywgaG9va3MsIGFuZCBoYW5kbGVyc1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10gLSBtZXJnZXMgY2xhc3NlcyBhbmQgc3R5bGVzXG5cbiAgICAgVG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIG1hdGNoIGV4cHJlc3Npb24gbG9naWMsIHdlIHBhcmVtZXRlcml6ZSBpdCBieSB0aGVcbiAgICAgbWVyZ2luZyBiZWhhdmlvciwgc2luY2UgXCJubyBtZXJnZVwiIHJlYWxseSBtZWFucyBcIm1lcmdlIGJ5IHRha2luZyB0aGVcbiAgICAgc2Vjb25kIG9uZVwiLiAqKVxuICBsZXQgcmVjIG1lcmdlIH5jb21iaW5lX2hvb2sgfmNvbWJpbmVfaGFuZGxlciB+Y29tYmluZV9zdHlsZXMgfmNvbWJpbmVfY2xhc3NlcyBhY2MgPVxuICAgIExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgYXR0ciAtPlxuICAgICAgbWF0Y2ggYXR0ciB3aXRoXG4gICAgICB8IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgcHJvcGVydGllc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIChtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgIHwgXCJ2YWx1ZVwiIC0+XG4gICAgICAgICAgIGxldCBzb2Z0U2V0SG9vayB4IDogSnMuVW5zYWZlLmFueSA9IEpzLlVuc2FmZS5nbG9iYWwgIyMgU29mdFNldEhvb2sgeCBpblxuICAgICAgICAgICBsZXQgdmFsdWUgPSBzb2Z0U2V0SG9vayB2YWx1ZSBpblxuICAgICAgICAgICBWZG9tX3Jhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIFwidmFsdWVcIiB2YWx1ZVxuICAgICAgICAgfCBuYW1lIC0+IFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgdmFsdWUpO1xuICAgICAgICBhY2NcbiAgICAgIHwgQXR0cmlidXRlIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19hdHRyaWJ1dGUgYXR0cnNfb2JqIG5hbWUgJiYgbm90IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGF0dHJpYnV0ZXNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgICAgICBSYXcuQXR0cnMuc2V0X2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSB2YWx1ZTtcbiAgICAgICAgYWNjXG4gICAgICB8IFN0eWxlIG5ld19zdHlsZXMgLT4geyBhY2Mgd2l0aCBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIG5ld19zdHlsZXMgfVxuICAgICAgfCBDbGFzcyBuZXdfY2xhc3NlcyAtPlxuICAgICAgICB7IGFjYyB3aXRoIGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgbmV3X2NsYXNzZXMgfVxuICAgICAgfCBIb29rIHsgbmFtZTsgaG9vayB9IC0+XG4gICAgICAgIHsgYWNjIHdpdGggaG9va3MgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaG9va3MgbmFtZSBob29rIH5jb21iaW5lOmNvbWJpbmVfaG9vayB9XG4gICAgICB8IEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aFxuICAgICAgICAgIGhhbmRsZXJzID0gY29tYmluaW5nX21hcF9hZGQgYWNjLmhhbmRsZXJzIG5hbWUgaGFuZGxlciB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgfVxuICAgICAgfCBNYW55IGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOihmdW4gfmtleTpfIC0+IEhvb2tzLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOihmdW4gfmtleTpfIC0+IEV2ZW50X2hhbmRsZXIuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczpDc3NfZ2VuLmNvbWJpbmVcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6Q29yZS4oIEAgKVxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgbWFwX3N0eWxlcywgbWFwX2NsYXNzZXMpIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpDb3JlLiggQCApXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBtYXBfc3R5bGVzIChjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXMpXG4gICAgICAgIDsgY2xhc3NlcyA9IG1hcF9jbGFzc2VzIChjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXMpXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczp0YWtlX3NlY29uZF9zdHlsZXNcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6dGFrZV9zZWNvbmRfY2xhc3Nlc1xuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfSlcbiAgaW5cbiAgbGV0IG1lcmdlID1cbiAgICBtZXJnZVxuICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgIH5jb21iaW5lX3N0eWxlczp0YWtlX3NlY29uZF9zdHlsZXNcbiAgICAgIH5jb21iaW5lX2NsYXNzZXM6dGFrZV9zZWNvbmRfY2xhc3Nlc1xuICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgIGF0dHJzXG4gIGluXG4gIE1hcC5pdGVyaSBtZXJnZS5ob29rcyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTpob29rIC0+XG4gICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAoSG9va3MucGFjayBob29rKSk7XG4gIE1hcC5pdGVyaSBtZXJnZS5oYW5kbGVycyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTooRXZlbnRfaGFuZGxlci5UIHsgaGFuZGxlcjsgXyB9KSAtPlxuICAgIGxldCBmIGUgPVxuICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGUgZSAoaGFuZGxlciBlKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiAoXCJvblwiIF4gbmFtZSkgKEpzLlVuc2FmZS5pbmplY3QgKERvbS5oYW5kbGVyIGYpKSk7XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IG1lcmdlLnN0eWxlcylcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcm9wcyA9IENzc19nZW4udG9fc3RyaW5nX2xpc3QgbWVyZ2Uuc3R5bGVzIGluXG4gICAgICBsZXQgb2JqID0gUmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAgICAgTGlzdC5pdGVyIHByb3BzIH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgb2JqIGsgKEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2KSkpO1xuICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJzdHlsZVwiIChvYmogOj4gSnMuVW5zYWZlLmFueSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBtZXJnZS5jbGFzc2VzXG4gICAgdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlXG4gICAgICAgIGF0dHJzX29ialxuICAgICAgICBcImNsYXNzXCJcbiAgICAgICAgKEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBtZXJnZS5jbGFzc2VzIH5zZXA6XCIgXCIpKSlcbiAgaW5cbiAgYXR0cnNfb2JqXG47O1xuXG5sZXQgdG9fcmF3IGF0dHIgPVxuICBtYXRjaCBhdHRyIHdpdGhcbiAgfCBNYW55IFtdIHwgTWFueV93aXRob3V0X21lcmdlIFtdIC0+IFJhdy5BdHRycy5jcmVhdGUgKClcbiAgfCBhdHRyIC0+IHRvX3JhdyBhdHRyXG47O1xuXG5sZXQgc3R5bGUgY3NzID0gU3R5bGUgY3NzXG5sZXQgY2xhc3NfIGNsYXNzbmFtZSA9IENsYXNzIFsgY2xhc3NuYW1lIF1cbmxldCBjbGFzc2VzJyBjbGFzc2VzID0gQ2xhc3MgKFNldC50b19saXN0IGNsYXNzZXMpXG5sZXQgY2xhc3NlcyBjbGFzc25hbWVzID0gQ2xhc3MgY2xhc3NuYW1lc1xubGV0IGlkIHMgPSBjcmVhdGUgXCJpZFwiIHNcbmxldCBuYW1lIHMgPSBjcmVhdGUgXCJuYW1lXCIgc1xubGV0IGhyZWYgciA9IGNyZWF0ZSBcImhyZWZcIiByXG5sZXQgbGFiZWwgciA9IGNyZWF0ZSBcImxhYmVsXCIgclxubGV0IHRhcmdldCBzID0gY3JlYXRlIFwidGFyZ2V0XCIgc1xubGV0IGNoZWNrZWQgPSBjcmVhdGUgXCJjaGVja2VkXCIgXCJcIlxubGV0IHNlbGVjdGVkID0gY3JlYXRlIFwic2VsZWN0ZWRcIiBcIlwiXG5sZXQgaGlkZGVuID0gY3JlYXRlIFwiaGlkZGVuXCIgXCJcIlxubGV0IHJlYWRvbmx5ID0gY3JlYXRlIFwicmVhZG9ubHlcIiBcIlwiXG5sZXQgZGlzYWJsZWQgPSBjcmVhdGUgXCJkaXNhYmxlZFwiIFwiXCJcbmxldCBwbGFjZWhvbGRlciB4ID0gY3JlYXRlIFwicGxhY2Vob2xkZXJcIiB4XG5cbmxldCBhdXRvZm9jdXMgPSBmdW5jdGlvblxuICB8IHRydWUgLT4gY3JlYXRlIFwiYXV0b2ZvY3VzXCIgXCJcIlxuICB8IGZhbHNlIC0+IGVtcHR5XG47O1xuXG5sZXQgZm9yXyB4ID0gY3JlYXRlIFwiZm9yXCIgeFxubGV0IHR5cGVfIHggPSBjcmVhdGUgXCJ0eXBlXCIgeFxubGV0IHZhbHVlIHggPSBjcmVhdGUgXCJ2YWx1ZVwiIHhcbmxldCB2YWx1ZV9wcm9wIHggPSBzdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHhcbmxldCB0YWJpbmRleCB4ID0gY3JlYXRlIFwidGFiaW5kZXhcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IHRpdGxlIHggPSBjcmVhdGUgXCJ0aXRsZVwiIHhcbmxldCBhbHQgeCA9IGNyZWF0ZSBcImFsdFwiIHhcbmxldCBzcmMgeCA9IGNyZWF0ZSBcInNyY1wiIHhcbmxldCBvcGVuXyA9IGNyZWF0ZSBcIm9wZW5cIiBcIlwiXG5sZXQgc3RhcnQgeCA9IGNyZWF0ZSBcInN0YXJ0XCIgKEludC50b19zdHJpbmcgeClcbmxldCBtaW4geCA9IGNyZWF0ZV9mbG9hdCBcIm1pblwiIHhcbmxldCBtYXggeCA9IGNyZWF0ZV9mbG9hdCBcIm1heFwiIHhcbmxldCBtaW5fZGF0ZSB4ID0gY3JlYXRlIFwibWluXCIgKERhdGUudG9fc3RyaW5nIHgpXG5sZXQgbWF4X2RhdGUgeCA9IGNyZWF0ZSBcIm1heFwiIChEYXRlLnRvX3N0cmluZyB4KVxubGV0IG1pbl9kYXRlX3RpbWUgeCA9IGNyZWF0ZSBcIm1pblwiIChEYXRlLnRvX3N0cmluZyB4IF4gXCJUMDA6MDBcIilcbmxldCBtYXhfZGF0ZV90aW1lIHggPSBjcmVhdGUgXCJtYXhcIiAoRGF0ZS50b19zdHJpbmcgeCBeIFwiVDIzOjU5XCIpXG5sZXQgY29sc3BhbiB4ID0gY3JlYXRlIFwiY29sc3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgcm93c3BhbiB4ID0gY3JlYXRlIFwicm93c3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgZHJhZ2dhYmxlIGIgPSBjcmVhdGUgXCJkcmFnZ2FibGVcIiAoQm9vbC50b19zdHJpbmcgYilcblxubW9kdWxlIFR5cGVfaWQgPSBzdHJ1Y3RcbiAgKCogV2UgcHJvdmlkZSBhIHRyaXZpYWwgW3RvX3NleHBdIGZ1bmN0aW9uIHNpbmNlIHdlIG9ubHkgd2FudFxuICAgICB0byB1bmlmeSB0eXBlIGlkcyBhbmQgbm90IGNvbnZlcnQgdHlwZXMgdG8gaWRzICopXG4gIGxldCBjcmVhdGUgbmFtZSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIChmdW4gXyAtPiBTZXhwbGliLlNleHAuTGlzdCBbXSlcbiAgbGV0IChldmVudCA6IERvbV9odG1sLmV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJldmVudFwiXG4gIGxldCAoZm9jdXMgOiBEb21faHRtbC5mb2N1c0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJmb2N1c0V2ZW50XCJcbiAgbGV0IChtb3VzZSA6IERvbV9odG1sLm1vdXNlRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNlRXZlbnRcIlxuICBsZXQgKGtleWJvYXJkIDogRG9tX2h0bWwua2V5Ym9hcmRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwia2V5Ym9hcmRFdmVudFwiXG4gIGxldCAoc3VibWl0IDogRG9tX2h0bWwuc3VibWl0RXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInN1Ym1pdEV2ZW50XCJcbiAgbGV0IChtb3VzZXdoZWVsIDogRG9tX2h0bWwubW91c2V3aGVlbEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJtb3VzZXdoZWVsRXZlbnRcIlxuXG4gIGxldCAod2hlZWwgOiBKc19vZl9vY2FtbF9wYXRjaGVzLkRvbV9odG1sLndoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9XG4gICAgY3JlYXRlIFwid2hlZWx3aGVlbEV2ZW50XCJcbiAgOztcblxuICBsZXQgKGNsaXBib2FyZCA6IERvbV9odG1sLmNsaXBib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJjbGlwYm9hcmRFdmVudFwiXG4gIGxldCAoZHJhZyA6IERvbV9odG1sLmRyYWdFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZHJhZ0V2ZW50XCJcbiAgbGV0IChwb2ludGVyIDogRG9tX2h0bWwucG9pbnRlckV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJwb2ludGVyRXZlbnRcIlxuICBsZXQgKGFuaW1hdGlvbiA6IERvbV9odG1sLmFuaW1hdGlvbkV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJhbmltYXRpb25FdmVudFwiXG5lbmRcblxubGV0IG9uIHR5cGVfaWQgbmFtZSAoaGFuZGxlciA6ICNEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQpIDogdCA9XG4gIEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyID0gVCB7IGhhbmRsZXI7IHR5cGVfaWQgfSB9XG47O1xuXG5sZXQgb25fZm9jdXMgPSBvbiBUeXBlX2lkLmZvY3VzIFwiZm9jdXNcIlxubGV0IG9uX2JsdXIgPSBvbiBUeXBlX2lkLmZvY3VzIFwiYmx1clwiXG5sZXQgb25fY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY2xpY2tcIlxubGV0IG9uX2NvbnRleHRtZW51ID0gb24gVHlwZV9pZC5tb3VzZSBcImNvbnRleHRtZW51XCJcbmxldCBvbl9kb3VibGVfY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiZGJsY2xpY2tcIlxubGV0IG9uX2RyYWcgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnXCJcbmxldCBvbl9kcmFnc3RhcnQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnc3RhcnRcIlxubGV0IG9uX2RyYWdlbmQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW5kXCJcbmxldCBvbl9kcmFnZW50ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW50ZXJcIlxubGV0IG9uX2RyYWdsZWF2ZSA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdsZWF2ZVwiXG5sZXQgb25fZHJhZ292ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnb3ZlclwiXG5sZXQgb25fZHJvcCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyb3BcIlxubGV0IG9uX21vdXNlbW92ZSA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW1vdmVcIlxubGV0IG9uX21vdXNldXAgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2V1cFwiXG5sZXQgb25fbW91c2Vkb3duID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZG93blwiXG5sZXQgb25fbW91c2VlbnRlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWVudGVyXCJcbmxldCBvbl9tb3VzZWxlYXZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbGVhdmVcIlxubGV0IG9uX21vdXNlb3ZlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW92ZXJcIlxubGV0IG9uX21vdXNlb3V0ID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3V0XCJcbmxldCBvbl9rZXl1cCA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXl1cFwiXG5sZXQgb25fa2V5cHJlc3MgPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5cHJlc3NcIlxubGV0IG9uX2tleWRvd24gPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5ZG93blwiXG5sZXQgb25fc2Nyb2xsID0gb24gVHlwZV9pZC5ldmVudCBcInNjcm9sbFwiXG5sZXQgb25fbG9hZCA9IG9uIFR5cGVfaWQuZXZlbnQgXCJsb2FkXCJcbmxldCBvbl9zdWJtaXQgPSBvbiBUeXBlX2lkLnN1Ym1pdCBcInN1Ym1pdFwiXG5sZXQgb25fcG9pbnRlcmRvd24gPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVyZG93blwiXG5sZXQgb25fcG9pbnRlcnVwID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcnVwXCJcbmxldCBvbl9tb3VzZXdoZWVsID0gb24gVHlwZV9pZC5tb3VzZXdoZWVsIFwibW91c2V3aGVlbFwiXG5sZXQgb25fd2hlZWwgPSBvbiBUeXBlX2lkLndoZWVsIFwid2hlZWxcIlxubGV0IG9uX2NvcHkgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcImNvcHlcIlxubGV0IG9uX2N1dCA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY3V0XCJcbmxldCBvbl9wYXN0ZSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwicGFzdGVcIlxubGV0IG9uX3Jlc2V0ID0gb24gVHlwZV9pZC5ldmVudCBcInJlc2V0XCJcbmxldCBvbl9hbmltYXRpb25lbmQgPSBvbiBUeXBlX2lkLmFuaW1hdGlvbiBcImFuaW1hdGlvbmVuZFwiXG5sZXQgY29uc3RfaWdub3JlIF8gPSBFZmZlY3QuSWdub3JlXG5cbmNsYXNzIHR5cGUgdmFsdWVfZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmVsZW1lbnRcbiAgbWV0aG9kIHZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuZW5kXG5cbnR5cGUgdmFsdWVfY29lcmNpb24gPSBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmFsdWVfZWxlbWVudCBKcy50IEpzLm9wdFxuXG5sZXQgcnVuX2NvZXJjaW9uIGNvZXJjaW9uIHRhcmdldCBwcmV2ID1cbiAgbWF0Y2ggcHJldiB3aXRoXG4gIHwgU29tZSBfIC0+IHByZXZcbiAgfCBOb25lIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjaW9uIHRhcmdldClcbjs7XG5cbmxldCBjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQgPVxuICBsZXQgb3BlbiBEb21faHRtbC5Db2VyY2VUbyBpblxuICBOb25lXG4gIHw+IHJ1bl9jb2VyY2lvbiAoaW5wdXQgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuICB8PiBydW5fY29lcmNpb24gKHNlbGVjdCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAodGV4dGFyZWEgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuOztcblxubGV0IG9uX2lucHV0X2V2ZW50IHR5cGVfaWQgZXZlbnQgaGFuZGxlciA9XG4gIG9uIHR5cGVfaWQgZXZlbnQgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAoY29lcmNlX3ZhbHVlX2VsZW1lbnQgdGFyZ2V0KVxuICAgICAgICB+ZGVmYXVsdDpFZmZlY3QuSWdub3JlXG4gICAgICAgIH5mOihmdW4gdGFyZ2V0IC0+XG4gICAgICAgICAgbGV0IHRleHQgPSBKcy50b19zdHJpbmcgdGFyZ2V0IyMudmFsdWUgaW5cbiAgICAgICAgICBoYW5kbGVyIGV2IHRleHQpKSlcbjs7XG5cbmxldCBvbl9jaGFuZ2UgPSBvbl9pbnB1dF9ldmVudCBUeXBlX2lkLmV2ZW50IFwiY2hhbmdlXCJcbmxldCBvbl9pbnB1dCA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJpbnB1dFwiXG5sZXQgdG9fcmF3IGwgPSB0b19yYXcgbFxuXG5sZXQgb25fZmlsZV9pbnB1dCBoYW5kbGVyID1cbiAgb24gVHlwZV9pZC5ldmVudCBcImlucHV0XCIgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgSnMuT3B0LmNhc2UgKERvbV9odG1sLkNvZXJjZVRvLmlucHV0IHRhcmdldCkgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICAgIEpzLk9wdGRlZi5jYXNlIHRhcmdldCMjLmZpbGVzIGNvbnN0X2lnbm9yZSAoZnVuIGZpbGVzIC0+IGhhbmRsZXIgZXYgZmlsZXMpKSkpXG47O1xuXG5tb2R1bGUgQWx3YXlzX2ZvY3VzX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVW5pdFxuXG4gICAgICBsZXQgY29tYmluZSAoKSAoKSA9ICgpXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCAoKSBfID0gKClcbiAgICBsZXQgb25fbW91bnQgKCkgKCkgZWxlbWVudCA9IGVsZW1lbnQjI2ZvY3VzXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0OigpIH5uZXdfaW5wdXQ6KCkgKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgKCkgKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcImFsd2F5cy1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTaW5nbGVfZm9jdXNfaG9vayAoKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIGxldCBoYXNfYmVlbl91c2VkID0gcmVmIGZhbHNlXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9ICh1bml0IFVpX2VmZmVjdC50W0BzZXhwLm9wYXF1ZV0pIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBVaV9lZmZlY3QuTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbiAgICBlbmRcblxuICAgIGxldCBpbml0IF8gXyA9ICgpXG5cbiAgICBsZXQgb25fbW91bnQgZXZlbnQgKCkgZWxlbWVudCA9XG4gICAgICBpZiBub3QgIWhhc19iZWVuX3VzZWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBoYXNfYmVlbl91c2VkIDo9IHRydWU7XG4gICAgICAgIGVsZW1lbnQjI2ZvY3VzO1xuICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biBldmVudClcbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgIGxldCBkZXN0cm95IF8gKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgfmFmdGVyID1cbiAgICAoKiBBcHBlbmQgdGhlIGlkIHRvIHRoZSBuYW1lIG9mIHRoZSBob29rIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGRpc3RpbmN0XG4gICAgICAgZnJvbSBhbGwgb3RoZXIgZm9jdXMgaG9va3MuICopXG4gICAgY3JlYXRlX2hvb2sgXCJzaW5nbGUtZm9jdXMtaG9va1wiIChIb29rLmNyZWF0ZSBhZnRlcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgTm9fb3BfaG9vayAoTSA6IHNpZ1xuICAgIG1vZHVsZSBJbnB1dCA6IEhvb2tzX2ludGYuSW5wdXRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG4gICAgICBtb2R1bGUgSW5wdXQgPSBNLklucHV0XG5cbiAgICAgIGxldCBpbml0IF8gXyA9ICgpXG4gICAgICBsZXQgb25fbW91bnQgXyAoKSBfID0gKClcbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dDpfIH5uZXdfaW5wdXQ6XyAoKSBfID0gKClcbiAgICAgIGxldCBkZXN0cm95IF8gKCkgXyA9ICgpXG4gICAgZW5kKVxuXG4gIGxldCBhdHRyIGlucHV0ID0gY3JlYXRlX2hvb2sgTS5uYW1lIChIb29rLmNyZWF0ZSBpbnB1dClcbiAgbGV0IHR5cGVfaWQgPSBIb29rLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBsaXN0XG5cbiAgbGV0IG1hcF9zdHlsZSB0IH5mID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBmLCBGbi5pZCkgXVxuICBsZXQgYWRkX2NsYXNzIHQgYyA9IFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIGZ1biBjcyAtPiBjIDo6IGNzKSBdXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX3N0eWxlIHQgfmY6KGZ1biBzcyAtPiBDc3NfZ2VuLmNvbWJpbmUgc3MgcylcblxuICBsZXQgbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIHQgPVxuICAgIFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIEZuLmlkKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENzc192YXJfaG9vayA9IEhvb2tzLk1ha2UgKHN0cnVjdFxuICAgIG9wZW4gSnNfb2Zfb2NhbWxcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgPSBMaXN0LmFwcGVuZFxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgaW5wdXQgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIExpc3QuaXRlciBpbnB1dCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgICBlbGVtZW50IyMuc3R5bGUjI3NldFByb3BlcnR5IChKcy5zdHJpbmcgaykgKEpzLnN0cmluZyB2KSBKcy51bmRlZmluZWRcbiAgICAgICAgfD4gKGlnbm9yZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpKVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgXyAoKSBfID0gKClcblxuICAgIGxldCBkZXN0cm95IGlucHV0ICgpIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gICAgICBMaXN0Lml0ZXIgaW5wdXQgfmY6KGZ1biAoaywgXykgLT5cbiAgICAgICAgZWxlbWVudCMjLnN0eWxlIyNyZW1vdmVQcm9wZXJ0eSAoSnMuc3RyaW5nIGspXG4gICAgICAgIHw+IChpZ25vcmUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSlcbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgKCkgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgb2xkX2lucHV0IG5ld19pbnB1dFxuICAgICAgfHwgWyVlcXVhbDogKHN0cmluZyAqIHN0cmluZykgbGlzdF0gb2xkX2lucHV0IG5ld19pbnB1dFxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGRlc3Ryb3kgb2xkX2lucHV0ICgpIGVsZW1lbnQ7XG4gICAgICAgIGluaXQgbmV3X2lucHV0IGVsZW1lbnQpXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgX19jc3NfdmFyc19ub19rZWJhYnMgYWxpc3QgPSBjcmVhdGVfaG9vayBcImN1c3RvbS1jc3MtdmFyc1wiIChDc3NfdmFyX2hvb2suY3JlYXRlIGFsaXN0KVxubGV0IGNzc192YXIgfm5hbWUgdiA9IF9fY3NzX3ZhcnNfbm9fa2ViYWJzIFsgXCItLVwiIF4gbmFtZSwgdiBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJlYyBmaWx0ZXJfYnlfa2luZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFByb3BlcnR5IF8gLT4gaWYgZiBgUHJvcGVydHkgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEF0dHJpYnV0ZSBfIC0+IGlmIGYgYEF0dHJpYnV0ZSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSG9vayBfIC0+IGlmIGYgYEhvb2sgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEhhbmRsZXIgXyAtPiBpZiBmIGBIYW5kbGVyIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBTdHlsZSBfIC0+IGlmIGYgYFN0eWxlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBDbGFzcyBfIC0+IGlmIGYgYENsYXNzIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBNYW55IGF0dHJzIC0+IE1hbnkgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZikpXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgYSwgYikgLT5cbiAgICAgIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZiksIGEsIGIpXG4gICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT5cbiAgICAgIE1hbnlfd2l0aG91dF9tZXJnZSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbnRhaW5zX25hbWUgbG9va2luZ19mb3IgPSBmdW5jdGlvblxuICAgIHwgUHJvcGVydHkgeyBuYW1lOyBfIH0gfCBBdHRyaWJ1dGUgeyBuYW1lOyBfIH0gfCBIb29rIHsgbmFtZTsgXyB9IC0+XG4gICAgICBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgbmFtZVxuICAgIHwgSGFuZGxlciB7IG5hbWU7IF8gfSAtPiBTdHJpbmcuZXF1YWwgKFwib25cIiBeIG5hbWUpIGxvb2tpbmdfZm9yXG4gICAgfCBTdHlsZSBfIC0+IFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBcInN0eWxlXCJcbiAgICB8IENsYXNzIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwiY2xhc3NcIlxuICAgIHwgTWFueSBhdHRyc1xuICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIF8sIF8pXG4gICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT4gTGlzdC5leGlzdHMgfmY6KGNvbnRhaW5zX25hbWUgbG9va2luZ19mb3IpIGF0dHJzXG4gIDs7XG5lbmRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB0eXBlIGV2ZW50ID0gcHJpdmF0ZSAjRG9tX2h0bWwuZXZlbnRcblxuICAgIHZhbCBldmVudF9raW5kIDogZXZlbnQgSnMudCBEb20uRXZlbnQudHlwXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgSG9va3MuTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gWC5ldmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICBsZXQgY29tYmluZSBmIGcgZXZlbnQgPSBVaV9lZmZlY3QuTWFueSBbIGYgZXZlbnQ7IGcgZXZlbnQgXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7IG11dGFibGUgbGlzdGVuZXIgOiAoRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRbQHNleHAub3BhcXVlXSkgfVxuICAgICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBzZXQgZiA9XG4gICAgICAgIGxldCBoYW5kbGVyID1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIGV2IC0+XG4gICAgICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBldiAoZiBldik7XG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgaW5cbiAgICAgICAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciBEb21faHRtbC53aW5kb3cgWC5ldmVudF9raW5kIGhhbmRsZXIgSnMuX3RydWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbml0IGYgX2VsZW1lbnQgPSB7IFN0YXRlLmxpc3RlbmVyID0gc2V0IGYgfVxuICAgICAgbGV0IGRlc3Ryb3kgX2lucHV0IHN0YXRlIF9lbGVtZW50ID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBzdGF0ZS5TdGF0ZS5saXN0ZW5lclxuXG4gICAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDpmIHN0YXRlIGVsZW1lbnQgPVxuICAgICAgICAoKiBpZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gY2hhbmdlcywgY2FuY2VsIHRoZSBvbGQgb25lIGFuZCByZS1pbnN0YWxsICopXG4gICAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICAgIGxldCBuZXdfc3RhdGUgPSBpbml0IGYgZWxlbWVudCBpblxuICAgICAgICBzdGF0ZS5TdGF0ZS5saXN0ZW5lciA8LSBuZXdfc3RhdGUubGlzdGVuZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbl9tb3VudCBfaW5wdXQgX3N0YXRlIF9lbGVtZW50ID0gKClcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1vdXNldXAgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tb3VzZXVwXG4gIGVuZClcblxubW9kdWxlIE1vdXNlbW92ZSA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNlbW92ZVxuICBlbmQpXG5cbm1vZHVsZSBDbGljayA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50LmNsaWNrXG4gIGVuZClcblxubW9kdWxlIENvbnRleHRtZW51ID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcImNvbnRleHRtZW51XCJcbiAgZW5kKVxuXG5tb2R1bGUgS2V5ZG93biA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50LmtleWRvd25cbiAgZW5kKVxuXG5tb2R1bGUgVmlzaWJpbGl0eWNoYW5nZSA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5ldmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwidmlzaWJpbGl0eWNoYW5nZVwiXG4gIGVuZClcblxubW9kdWxlIEJlZm9yZXVubG9hZCA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5ldmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwiYmVmb3JldW5sb2FkXCJcbiAgZW5kKVxuXG5sZXQgbW91c2V1cCBmID0gTW91c2V1cC5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLW1vdXNldXAtbGlzdGVuZXJcIlxubGV0IG1vdXNlbW92ZSBmID0gTW91c2Vtb3ZlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2Vtb3ZlLWxpc3RlbmVyXCJcbmxldCBjbGljayBmID0gQ2xpY2suY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1jbGljay1saXN0ZW5lclwiXG5sZXQgY29udGV4dG1lbnUgZiA9IENvbnRleHRtZW51LmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtY29udGV4dG1lbnUtbGlzdGVuZXJcIlxubGV0IGtleWRvd24gZiA9IEtleWRvd24uY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1rZXlkb3duLWxpc3RlbmVyXCJcblxuY2xhc3MgdHlwZSBldmVudF93aXRoX3N0cmluZ19yZXR1cm5fdmFsdWUgPSBvYmplY3RcbiAgKCogRXZlbnRzIHdpdGggW3JldHVyblZhbHVlXSBhcmUgaW1wb3NzaWJsZSB0byBwcm9wZXJseSB0eXBlLCBzbyB3ZSBtYWtlIG9uZSB0aGF0XG4gICAgIGlzIHNwZWNpYWxpemVkIGZvciBzdHJpbmcsIGFuZCBjYXN0IG91ciBiZWZvcmVfdW5sb2FkIHR5cGUgdG8gaXQuICopXG4gIG1ldGhvZCByZXR1cm5WYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGJlZm9yZXVubG9hZCBmID1cbiAgbGV0IGYgZXZlbnQgPVxuICAgIG1hdGNoJWJpbmQuRWZmZWN0IGYgZXZlbnQgd2l0aFxuICAgIHwgYFNob3dfd2FybmluZyAtPlxuICAgICAgbGV0IGV2ZW50IDogZXZlbnRfd2l0aF9zdHJpbmdfcmV0dXJuX3ZhbHVlIEpzLnQgPSBPYmoubWFnaWMgZXZlbnQgaW5cbiAgICAgIGV2ZW50IyMucmV0dXJuVmFsdWUgOj0gSnMuc3RyaW5nIFwidGhpcyBzdHJpbmcgY2FuIGJlIGFueXRoaW5nXCI7XG4gICAgICBFZmZlY3QuSWdub3JlXG4gICAgfCBgRG9fbm90aGluZyAtPiBFZmZlY3QuSWdub3JlXG4gIGluXG4gIEJlZm9yZXVubG9hZC5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWJlZm9yZXVubG9hZC1saXN0ZW5lclwiXG47O1xuXG5sZXQgdmlzaWJpbGl0eWNoYW5nZSBmID1cbiAgVmlzaWJpbGl0eWNoYW5nZS5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLXZpc2liaWxpdHljaGFuZ2UtbGlzdGVuZXJcIlxuOztcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIGxldCBtb3VzZXVwX3R5cGVfaWQgPSBNb3VzZXVwLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IG1vdXNlbW92ZV90eXBlX2lkID0gTW91c2Vtb3ZlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGtleWRvd25fdHlwZV9pZCA9IEtleWRvd24uRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgY2xpY2tfdHlwZV9pZCA9IENsaWNrLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGNvbnRleHRtZW51X3R5cGVfaWQgPSBDb250ZXh0bWVudS5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCB2aXNpYmlsaXR5Y2hhbmdlX3R5cGVfaWQgPSBWaXNpYmlsaXR5Y2hhbmdlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGJlZm9yZXVubG9hZF90eXBlX2lkID0gQmVmb3JldW5sb2FkLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSnNfb2Zfb2NhbWxcblxudHlwZSB0ID0gUmF3Lk5vZGUudFxuXG5sZXQgdmRvbV90aHVuayA9IGxhenkgSnMuVW5zYWZlLihnZXQgZ2xvYmFsIChKcy5zdHJpbmcgXCJWZG9tVGh1bmtcIikpXG5cbmxldCBjcmVhdGUgfmtleSBhcmcgfmYgPVxuICBsZXQga2V5ID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnMuc3RyaW5nIGtleSlcbiAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gIGluXG4gIGxldCBrZXkgPSBKcy5VbnNhZmUuaW5qZWN0IGtleSBpblxuICBsZXQgZiA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBhIC0+IGYgYSkgfD4gSnMuVW5zYWZlLmluamVjdCBpblxuICBsZXQgYXJnID0gSnMuVW5zYWZlLmluamVjdCBhcmcgaW5cbiAgKE9iai5tYWdpYyA6IF8gLT4gUmF3Lk5vZGUudClcbiAgICAoSnMuVW5zYWZlLmZ1bl9jYWxsIChMYXp5LmZvcmNlIHZkb21fdGh1bmspIFt8IGY7IGFyZzsga2V5IHxdKVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG50eXBlIGVsZW1lbnQgPVxuICB7IHRhZyA6IHN0cmluZ1xuICA7IGtleSA6IHN0cmluZyBvcHRpb25cbiAgOyBhdHRycyA6IEF0dHIudFxuICA7IHJhd19hdHRycyA6IFJhdy5BdHRycy50IExhenkudFxuICA7IGNoaWxkcmVuIDogUmF3Lk5vZGUudCBKcy5qc19hcnJheSBKcy50XG4gIDsga2luZCA6IFsgYFZub2RlIHwgYFN2ZyBdXG4gIH1cblxuYW5kIHdpZGdldCA9IFJhdy5XaWRnZXQudFxuXG5hbmQgdCA9XG4gIHwgTm9uZVxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRWxlbWVudCBvZiBlbGVtZW50XG4gIHwgV2lkZ2V0IG9mIHdpZGdldFxuICB8IExhenkgb2ZcbiAgICAgIHsga2V5IDogc3RyaW5nIG9wdGlvblxuICAgICAgOyB0IDogdCBMYXp5LnRcbiAgICAgIH1cblxubW9kdWxlIEFsaWFzZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub2RlX2NyZWF0b3IgPSA/a2V5OnN0cmluZyAtPiA/YXR0cnM6QXR0ci50IGxpc3QgLT4gdCBsaXN0IC0+IHRcbiAgdHlwZSBub2RlX2NyZWF0b3JfY2hpbGRsZXNzID0gP2tleTpzdHJpbmcgLT4gP2F0dHJzOkF0dHIudCBsaXN0IC0+IHVuaXQgLT4gdFxuZW5kXG5cbm1vZHVsZSBFbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGVsZW1lbnRcblxuICBsZXQgdGFnIHQgPSB0LnRhZ1xuICBsZXQgYXR0cnMgdCA9IHQuYXR0cnNcbiAgbGV0IGtleSB0ID0gdC5rZXlcbiAgbGV0IHdpdGhfa2V5IHQga2V5ID0geyB0IHdpdGgga2V5ID0gU29tZSBrZXkgfVxuXG4gIGxldCBtYXBfYXR0cnMgdCB+ZiA9XG4gICAgbGV0IGF0dHJzID0gZiB0LmF0dHJzIGluXG4gICAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICAgIHsgdCB3aXRoIGF0dHJzOyByYXdfYXR0cnMgfVxuICA7O1xuXG4gIGxldCBhZGRfY2xhc3MgdCBjID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBjbGFzc18gYykpXG4gIGxldCBhZGRfY2xhc3NlcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzZXMgYykpXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBzdHlsZSBzKSlcbmVuZFxuXG5sZXQgcmVjIHRfdG9fanMgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAoKiBXZSBub3JtYWxseSBmaWx0ZXIgdGhlc2Ugb3V0LCBidXQgaWYgW3RvX2pzXSBpcyBjYWxsZWQgZGlyZWN0bHkgb24gYSBbTm9uZV0gbm9kZSxcbiAgICAgICB3ZSB1c2UgdGhpcyBoYWNrLiBBc2lkZSBmcm9tIGhhdmluZyBhIFtUZXh0XSBub2RlIHdpdGhvdXQgYW55IHRleHQgcHJlc2VudCBpbiB0aGVcbiAgICAgICBEb20sIHRoZXJlIHNob3VsZCBiZSBubyB1bndhbnRlZCBzaWRlLWVmZmVjdHMuICBJbiBhbiBJbmNyX2RvbSBhcHBsaWNhdGlvbiwgdGhpc1xuICAgICAgIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSByb290IHZpZXcgSW5jcmVtZW50YWwgaXMgaW5oYWJpdGVkIGJ5IGEgW05vbmVdLiAqKVxuICAgIFJhdy5Ob2RlLnRleHQgXCJcIlxuICB8IFRleHQgcyAtPiBSYXcuTm9kZS50ZXh0IHNcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgVm5vZGUgfVxuICAgIC0+IFJhdy5Ob2RlLm5vZGUgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgU3ZnIH1cbiAgICAtPiBSYXcuTm9kZS5zdmcgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBXaWRnZXQgdyAtPiB3XG4gIHwgTGF6eSB7IHQ7IGtleSB9IC0+IFRodW5rLmNyZWF0ZSB+a2V5IHQgfmY6dF90b19qc19sYXp5XG5cbmFuZCB0X3RvX2pzX2xhenkgKGxhenkgdCkgPSB0X3RvX2pzIHRcblxubGV0IHRleHQgcyA9IFRleHQgc1xuXG5sZXQgZWxlbWVudCBraW5kIH50YWcgfmtleSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCBjaGlsZHJlbl9yYXcgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgTGlzdC5pdGVyIGNoaWxkcmVuIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgKFRleHQgXyB8IEVsZW1lbnQgXyB8IFdpZGdldCBfIHwgTGF6eSBfKSBhcyBvdGhlciAtPlxuICAgICAgbGV0IChfIDogaW50KSA9IGNoaWxkcmVuX3JhdyMjcHVzaCAodF90b19qcyBvdGhlcikgaW5cbiAgICAgICgpKTtcbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiA9IGNoaWxkcmVuX3JhdyB9XG47O1xuXG5sZXQgY3JlYXRlIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBWbm9kZSB+dGFnIH5rZXkgKEF0dHIubWFueSBhdHRycykgY2hpbGRyZW4pXG47O1xuXG5tb2R1bGUgV2lkZ2V0ID0gc3RydWN0XG4gIG9wZW4gSnNfb2Zfb2NhbWxcblxuICBsZXQgY3JlYXRlX2VsZW1lbnQgPSBjcmVhdGVcblxuICB0eXBlIHZkb21fbm9kZSA9IHRcblxuICBpbmNsdWRlIFJhdy5XaWRnZXRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBkb20gPSBwcml2YXRlICNEb21faHRtbC5lbGVtZW50XG5cbiAgICBtb2R1bGUgSW5wdXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIGNyZWF0ZSA6IElucHV0LnQgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgdXBkYXRlXG4gICAgICA6ICBwcmV2X2lucHV0OklucHV0LnRcbiAgICAgIC0+IGlucHV0OklucHV0LnRcbiAgICAgIC0+IHN0YXRlOlN0YXRlLnRcbiAgICAgIC0+IGVsZW1lbnQ6ZG9tIEpzLnRcbiAgICAgIC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIGRlc3Ryb3kgOiBwcmV2X2lucHV0OklucHV0LnQgLT4gc3RhdGU6U3RhdGUudCAtPiBlbGVtZW50OmRvbSBKcy50IC0+IHVuaXRcbiAgICB2YWwgdG9fdmRvbV9mb3JfdGVzdGluZyA6IFsgYEN1c3RvbSBvZiBJbnB1dC50IC0+IHZkb21fbm9kZSB8IGBTZXhwX29mX2lucHV0IF1cbiAgZW5kXG5cbiAgbGV0IG9mX21vZHVsZSAodHlwZSBpbnB1dCkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgSW5wdXQudCA9IGlucHV0KSA9XG4gICAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbnB1dCA6IE0uSW5wdXQudFxuICAgICAgICA7IHN0YXRlIDogTS5TdGF0ZS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG4gICAgaW5cbiAgICBsZXQgc2V4cF9vZl9kb20gOiBNLmRvbSBKcy50IC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIgaW5cbiAgICBsZXQgaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpNLm5hbWUgWyVzZXhwX29mOiBTdGF0ZS50ICogZG9tXSBpblxuICAgIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaW5wdXQgLT5cbiAgICAgIGxldCB2ZG9tX2Zvcl90ZXN0aW5nID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgICh0X3RvX2pzXG4gICAgICAgICAgICAgKG1hdGNoIE0udG9fdmRvbV9mb3JfdGVzdGluZyB3aXRoXG4gICAgICAgICAgICAgIHwgYEN1c3RvbSBmIC0+IGYgaW5wdXRcbiAgICAgICAgICAgICAgfCBgU2V4cF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBNLklucHV0LnNleHBfb2ZfdCBpbnB1dCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IEF0b20gXCI8b3BhcXVlPlwiIC0+IFtdXG4gICAgICAgICAgICAgICAgICB8IG90aGVyIC0+IFsgdGV4dCAoU2V4cC50b19zdHJpbmdfaHVtIG90aGVyKSBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBjcmVhdGVfZWxlbWVudCAoTS5uYW1lIF4gXCItd2lkZ2V0XCIpIGNoaWxkcmVuKSlcbiAgICAgIGluXG4gICAgICBjcmVhdGVcbiAgICAgICAgfmlkXG4gICAgICAgIH52ZG9tX2Zvcl90ZXN0aW5nXG4gICAgICAgIH5pbml0OihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLmNyZWF0ZSBpbnB1dCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH51cGRhdGU6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS51cGRhdGUgfnByZXZfaW5wdXQgfmlucHV0IH5zdGF0ZSB+ZWxlbWVudCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH5kZXN0cm95OihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIE0uZGVzdHJveSB+cHJldl9pbnB1dCB+c3RhdGUgfmVsZW1lbnQpXG4gICAgICAgICgpKVxuICA7O1xuZW5kXG5cbmxldCBsYXp5XyA/a2V5IHQgPSBMYXp5IHsga2V5OyB0IH1cblxubGV0IGVsZW1lbnRfZXhwZXJ0IGtpbmQgfnRhZyA/a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiB9XG47O1xuXG5sZXQgd2lkZ2V0ID92ZG9tX2Zvcl90ZXN0aW5nID9kZXN0cm95ID91cGRhdGUgfmlkIH5pbml0ICgpID1cbiAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgIGxhenlcbiAgICAgIChtYXRjaCB2ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICB8IFNvbWUgdCAtPiB0X3RvX2pzIChMYXp5LmZvcmNlIHQpXG4gICAgICAgfCBOb25lIC0+IHRfdG9fanMgKGNyZWF0ZSAoVHlwZV9lcXVhbC5JZC5uYW1lIGlkIF4gXCItd2lkZ2V0XCIpIFtdKSlcbiAgaW5cbiAgV2lkZ2V0IChXaWRnZXQuY3JlYXRlIH52ZG9tX2Zvcl90ZXN0aW5nID9kZXN0cm95ID91cGRhdGUgfmlkIH5pbml0ICgpKVxuOztcblxubGV0IGNyZWF0ZV9jaGlsZGxlc3MgdGFnID9rZXkgP2F0dHJzICgpID0gY3JlYXRlIHRhZyA/a2V5ID9hdHRycyBbXVxuXG5sZXQgY3JlYXRlX3N2ZyB0YWcgP2tleSA/KGF0dHJzID0gW10pIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleSA/KGF0dHJzID0gW10pIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbmxldCBub25lID0gTm9uZVxubGV0IHRleHRmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiB0ZXh0IGZvcm1hdFxuXG5sZXQgd2lkZ2V0X29mX21vZHVsZSBtID1cbiAgbGV0IGYgPSBCYXNlLlN0YWdlZC51bnN0YWdlIChXaWRnZXQub2ZfbW9kdWxlIG0pIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaSAtPiBXaWRnZXQgKGYgaSkpXG47O1xuXG5sZXQgdG9fcmF3ID0gdF90b19qc1xubGV0IHRvX2RvbSB0ID0gUmF3Lk5vZGUudG9fZG9tICh0b19yYXcgdClcblxubW9kdWxlIElubmVyX2h0bWwgPSBzdHJ1Y3RcbiAgbGV0IHdpZGdldCB+bmFtZSBjcmVhdGUgPVxuICAgIGxldCBpZCA9XG4gICAgICAoKiBzdGFnZSB0aGUgaWQgZ2VuZXJhdGlvbiAqKVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biAoKGNvbnRlbnQsIF8sIF8pLCBfKSAtPiBTZXhwLkF0b20gY29udGVudClcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZVxuICAgICAgKGZ1blxuICAgICAgICA/b3ZlcnJpZGVfdmRvbV9mb3JfdGVzdGluZ1xuICAgICAgICB+dGFnXG4gICAgICAgIH5hdHRyc1xuICAgICAgICB+dGhpc19odG1sX2lzX3Nhbml0aXplZF9hbmRfaXNfdG90YWxseV9zYWZlX3RydXN0X21lOmNvbnRlbnRcbiAgICAgICAgKClcbiAgICAgICAgLT5cbiAgICAgICAgICBsZXQgZWxlbWVudCA9IGNyZWF0ZSB0YWcgfmF0dHJzIFtdIGluXG4gICAgICAgICAgbGV0IGluaXQgKCkgPVxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSB0b19kb20gZWxlbWVudCBpblxuICAgICAgICAgICAgZWxlbWVudCMjLmlubmVySFRNTCA6PSBKcy5zdHJpbmcgY29udGVudDtcbiAgICAgICAgICAgIChjb250ZW50LCB0YWcsIGF0dHJzKSwgZWxlbWVudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHVwZGF0ZSAocHJldl9jb250ZW50LCBwcmV2X3RhZywgcHJldl9hdHRyKSBlbGVtZW50ID1cbiAgICAgICAgICAgIGxldCBlbGVtZW50ID1cbiAgICAgICAgICAgICAgKCogaWYgdGhlIHRhZyBvciB0aGUgYXR0cmlidXRlcyBhcmUgZGlmZmVyZW50LCBkbyBhIGRpZmYvcGF0Y2ggY3ljbGUgdG9cbiAgICAgICAgICAgICAgICAgZ2V0IGl0IHVwIHRvIGRhdGUgKilcbiAgICAgICAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfdGFnIHRhZykpIHx8IG5vdCAocGh5c19lcXVhbCBwcmV2X2F0dHIgYXR0cnMpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBSYXcuUGF0Y2guY3JlYXRlXG4gICAgICAgICAgICAgICAgICB+cHJldmlvdXM6KGNyZWF0ZSBwcmV2X3RhZyB+YXR0cnM6cHJldl9hdHRyIFtdIHw+IHRvX3JhdylcbiAgICAgICAgICAgICAgICAgIH5jdXJyZW50OihjcmVhdGUgdGFnIH5hdHRycyBbXSB8PiB0b19yYXcpXG4gICAgICAgICAgICAgICAgfD4gUmF3LlBhdGNoLmFwcGx5IGVsZW1lbnRcbiAgICAgICAgICAgICAgZWxzZSBlbGVtZW50XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogaWYgdGhlIHRhZyBjaGFuZ2VkLCB0aGVuIFtlbGVtZW50XSB3aWxsIGJlIGVtcHR5LCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGVcbiAgICAgICAgICAgICAgIGlubmVySFRNTC4gIElmIHRoZSBjb250ZW50IGNoYW5nZWQsIHRoZW4gd2UgbmVlZCB0byBzZXQgdGhlIGlubmVySFRNTCBmb3JcbiAgICAgICAgICAgICAgIG9idmlvdXMgcmVhc29ucy4gKilcbiAgICAgICAgICAgIGlmIChub3QgKFN0cmluZy5lcXVhbCBwcmV2X3RhZyB0YWcpKSB8fCBub3QgKFN0cmluZy5lcXVhbCBwcmV2X2NvbnRlbnQgY29udGVudClcbiAgICAgICAgICAgIHRoZW4gZWxlbWVudCMjLmlubmVySFRNTCA6PSBKcy5zdHJpbmcgY29udGVudDtcbiAgICAgICAgICAgIChjb250ZW50LCB0YWcsIGF0dHJzKSwgZWxlbWVudFxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogV2UgdXNlIHRoZSBbd2lkZ2V0XSBmdW5jdGlvbiBkaXJlY3RseSwgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGVcbiAgICAgICAgICAgICBlYXNpZXItdG8tdXNlIFt3aWRnZXRfb2ZfbW9kdWxlXSBmdW5jdGlvbiBiZWNhdXNlIHdlIHdhbnQgdG9cbiAgICAgICAgICAgICBleHBsaWNpdGx5IGNyZWF0ZSB0aGUgaWQgc3VjaCB0aGF0IGl0IGlzIGRpc3RpbmN0IGJldHdlZW5cbiAgICAgICAgICAgICBbaW5uZXJfaHRtbF0gYW5kIFtpbm5lcl9odG1sX3N2Z10uICopXG4gICAgICAgICAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgICAgICAgICAgbWF0Y2ggb3ZlcnJpZGVfdmRvbV9mb3JfdGVzdGluZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbGF6eSAoY3JlYXRlIHRhZyB+YXR0cnMgWyB0ZXh0IGNvbnRlbnQgXSlcbiAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICBpblxuICAgICAgICAgIHdpZGdldCB+aWQgfnZkb21fZm9yX3Rlc3RpbmcgfmluaXQgfnVwZGF0ZSAoKSlcbiAgOztcbmVuZFxuXG5sZXQgaW5uZXJfaHRtbF9zdmcgPVxuICBJbm5lcl9odG1sLndpZGdldCB+bmFtZTpcImlubmVyLWh0bWwtc3ZnLW5vZGVcIiAoZnVuIHRhZyB+YXR0cnMgLT5cbiAgICBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleTpOb25lIH5hdHRycylcbiAgfD4gU3RhZ2VkLnVuc3RhZ2Vcbjs7XG5cbmxldCBpbm5lcl9odG1sID1cbiAgSW5uZXJfaHRtbC53aWRnZXQgfm5hbWU6XCJpbm5lci1odG1sLW5vZGVcIiAoZnVuIHRhZyB+YXR0cnMgLT5cbiAgICBjcmVhdGUgdGFnID9rZXk6Tm9uZSB+YXR0cnMpXG4gIHw+IFN0YWdlZC51bnN0YWdlXG47O1xuXG5sZXQgYSA9IGNyZWF0ZSBcImFcIlxubGV0IGFiYnIgPSBjcmVhdGUgXCJhYmJyXCJcbmxldCBib2R5ID0gY3JlYXRlIFwiYm9keVwiXG5sZXQgYnV0dG9uID0gY3JlYXRlIFwiYnV0dG9uXCJcbmxldCBjb2RlID0gY3JlYXRlIFwiY29kZVwiXG5sZXQgZGF0YWxpc3QgPSBjcmVhdGUgXCJkYXRhbGlzdFwiXG5sZXQgZGV0YWlscyA9IGNyZWF0ZSBcImRldGFpbHNcIlxubGV0IGRpdiA9IGNyZWF0ZSBcImRpdlwiXG5sZXQgbWFpbiA9IGNyZWF0ZSBcIm1haW5cIlxubGV0IGZpZWxkc2V0ID0gY3JlYXRlIFwiZmllbGRzZXRcIlxubGV0IGxlZ2VuZCA9IGNyZWF0ZSBcImxlZ2VuZFwiXG5sZXQgZm9vdGVyID0gY3JlYXRlIFwiZm9vdGVyXCJcbmxldCBoMSA9IGNyZWF0ZSBcImgxXCJcbmxldCBoMiA9IGNyZWF0ZSBcImgyXCJcbmxldCBoMyA9IGNyZWF0ZSBcImgzXCJcbmxldCBoNCA9IGNyZWF0ZSBcImg0XCJcbmxldCBoNSA9IGNyZWF0ZSBcImg1XCJcbmxldCBoNiA9IGNyZWF0ZSBcImg2XCJcbmxldCBoZWFkZXIgPSBjcmVhdGUgXCJoZWFkZXJcIlxubGV0IGh0bWwgPSBjcmVhdGUgXCJodG1sXCJcbmxldCBpbnB1dCA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJpbnB1dFwiXG5sZXQgaW1nID0gY3JlYXRlX2NoaWxkbGVzcyBcImltZ1wiXG5sZXQgaW5wdXRfZGVwcmVjYXRlZCA9IGNyZWF0ZSBcImlucHV0XCJcbmxldCB0ZXh0YXJlYSA9IGNyZWF0ZSBcInRleHRhcmVhXCJcbmxldCBzZWxlY3QgPSBjcmVhdGUgXCJzZWxlY3RcIlxubGV0IG9wdGdyb3VwID0gY3JlYXRlIFwib3B0Z3JvdXBcIlxubGV0IG9wdGlvbiA9IGNyZWF0ZSBcIm9wdGlvblwiXG5sZXQgbGFiZWwgPSBjcmVhdGUgXCJsYWJlbFwiXG5sZXQgbGkgPSBjcmVhdGUgXCJsaVwiXG5sZXQgcCA9IGNyZWF0ZSBcInBcIlxubGV0IHByZSA9IGNyZWF0ZSBcInByZVwiXG5sZXQgc2VjdGlvbiA9IGNyZWF0ZSBcInNlY3Rpb25cIlxubGV0IHNwYW4gPSBjcmVhdGUgXCJzcGFuXCJcbmxldCBzdHJvbmcgPSBjcmVhdGUgXCJzdHJvbmdcIlxubGV0IGVtID0gY3JlYXRlIFwiZW1cIlxubGV0IGJsb2NrcXVvdGUgPSBjcmVhdGUgXCJibG9ja3F1b3RlXCJcbmxldCBzdW1tYXJ5ID0gY3JlYXRlIFwic3VtbWFyeVwiXG5sZXQgaWZyYW1lID0gY3JlYXRlIFwiaWZyYW1lXCJcbmxldCB0YWJsZSA9IGNyZWF0ZSBcInRhYmxlXCJcbmxldCB0Ym9keSA9IGNyZWF0ZSBcInRib2R5XCJcbmxldCB0ZCA9IGNyZWF0ZSBcInRkXCJcbmxldCB0aCA9IGNyZWF0ZSBcInRoXCJcbmxldCB0aGVhZCA9IGNyZWF0ZSBcInRoZWFkXCJcbmxldCB0ciA9IGNyZWF0ZSBcInRyXCJcbmxldCB1bCA9IGNyZWF0ZSBcInVsXCJcbmxldCBvbCA9IGNyZWF0ZSBcIm9sXCJcbmxldCBiciA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJiclwiXG5sZXQgaHIgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaHJcIlxubGV0IGRsID0gY3JlYXRlIFwiZGxcIlxubGV0IGR0ID0gY3JlYXRlIFwiZHRcIlxubGV0IGRkID0gY3JlYXRlIFwiZGRcIlxuXG5sZXQgc2V4cF9mb3JfZGVidWdnaW5nID9pbmRlbnQgc2V4cCA9XG4gIHNleHAgfD4gU2V4cC50b19zdHJpbmdfaHVtID9pbmRlbnQgfD4gdGV4dCB8PiBMaXN0LnJldHVybiB8PiBwcmUgfmF0dHJzOltdXG47O1xuXG5tb2R1bGUgUGF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LlBhdGNoLnRcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9XG4gICAgUmF3LlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6KHRfdG9fanMgcHJldmlvdXMpIH5jdXJyZW50Oih0X3RvX2pzIGN1cnJlbnQpXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHQgZWx0ID0gUmF3LlBhdGNoLmFwcGx5IGVsdCB0XG4gIGxldCBpc19lbXB0eSB0ID0gUmF3LlBhdGNoLmlzX2VtcHR5IHRcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBWbm9kZSA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9zdmcgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBTdmcgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuZW5kXG4iLCJtb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBpbmNsdWRlIEF0dHJcbiAgbW9kdWxlIEhvb2tzID0gSG9va3NcbiAgbW9kdWxlIEdsb2JhbF9saXN0ZW5lcnMgPSBHbG9iYWxfbGlzdGVuZXJzXG5lbmRcblxubW9kdWxlIEF0dHJzID0gQXR0ci5NdWx0aVxubW9kdWxlIEVmZmVjdCA9IEVmZmVjdFxubW9kdWxlIE5vZGUgPSBOb2RlXG4iLCJtb2R1bGUgVmRvbSA9IFZkb21cbm1vZHVsZSBEb21fZmxvYXQgPSBEb21fZmxvYXRcbm1vZHVsZSBKc19tYXAgPSBKc19tYXBcblxubW9kdWxlIFRvcF9sZXZlbF9lZmZlY3RzID0gc3RydWN0XG4gIGxldCAoKSA9XG4gICAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gICAgQ3NzX2dlbi5Qcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIDo9IERvbV9mbG9hdC50b19zdHJpbmdfZml4ZWRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDcHVzZXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQuU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG5cbiAgICAgIGxldCB2YWxpZGF0ZSB0ID1cbiAgICAgICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZVxuICAgICAgICAgIChJbnQudmFsaWRhdGVfbGJvdW5kIH5taW46KEluY2wgMSkgKFNldC5sZW5ndGggdCkpXG4gICAgICAgICAgKFNldC50b19saXN0IHRcbiAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6SW50LnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICAgICAgICAgICB8PiBWYWxpZGF0ZS5uYW1lX2xpc3QgXCJUaHJlYWRfcG9vbF9jcHVzZXRcIilcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IEludC5TZXQuZXF1YWwgKHQxIHw+IHJhdykgKHQyIHw+IHJhdylcbmVuZFxuXG50eXBlIHQgPVxuICB8IEluaGVyaXRcbiAgfCBDcHVzZXQgb2YgQ3B1c2V0LnRcbltAQGRlcml2aW5nIHNleHBdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHVwbGVfdHlwZV9pbnRmXG5cbm1vZHVsZSBTbG90cyA9IHN0cnVjdFxuICB0eXBlIHVfID0geyBzbG90c19wZXJfdHVwbGUgOiBpbnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB1ID0gdV8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0XyA9IFsgYFNsb3RzIG9mIHVfIF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ3R1cGxlLCAndmFyaWFudCkgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNsb3RzX3Blcl90dXBsZSAoYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gbiB9KSA9IG5cblxuICB0eXBlICdhMCB0MSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExKSB0MiA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIpIHQzID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzKSB0NCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0KSB0NSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUpIHQ2ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2KSB0NyA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3KSB0OCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgpIHQ5ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5KSB0MTAgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCkgdDExID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEpIHQxMiA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyKSB0MTMgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSwgJ2ExMiwgJ2ExMykgdDE0ID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdDEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxIH1cbiAgbGV0IHQyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMiB9XG4gIGxldCB0MyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDMgfVxuICBsZXQgdDQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA0IH1cbiAgbGV0IHQ1ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNSB9XG4gIGxldCB0NiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDYgfVxuICBsZXQgdDcgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA3IH1cbiAgbGV0IHQ4ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOCB9XG4gIGxldCB0OSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDkgfVxuICBsZXQgdDEwID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTAgfVxuICBsZXQgdDExID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTEgfVxuICBsZXQgdDEyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTIgfVxuICBsZXQgdDEzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTMgfVxuICBsZXQgdDE0ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTQgfVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHVwbGVfcG9vbF9pbnRmXG5tb2R1bGUgVHVwbGVfdHlwZSA9IFR1cGxlX3R5cGVcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IHBoeXNfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBudW1fYml0cyA9IEludC5udW1fYml0c1xuICBsZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgY29uY2F0IGwgPSBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIlwiIGxcblxubW9kdWxlIHR5cGUgUyA9IFNcblxubW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgbGV0IGdyb3dfY2FwYWNpdHkgfmNhcGFjaXR5IH5vbGRfY2FwYWNpdHkgPVxuICAgIG1hdGNoIGNhcGFjaXR5IHdpdGhcbiAgICB8IE5vbmUgLT4gaWYgb2xkX2NhcGFjaXR5ID0gMCB0aGVuIDEgZWxzZSBvbGRfY2FwYWNpdHkgKiAyXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8PSBvbGRfY2FwYWNpdHlcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9vbC5ncm93IGdvdCB0b28gc21hbGwgY2FwYWNpdHlcIlxuICAgICAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHksIGBvbGRfY2FwYWNpdHkgb2xkX2NhcGFjaXR5KVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgY2FwYWNpdHkgb2YgaW50IF0gKiBbIGBvbGRfY2FwYWNpdHkgb2YgaW50IF1dO1xuICAgICAgY2FwYWNpdHlcbiAgOztcblxuICBtb2R1bGUgU2xvdHMgPSBUdXBsZV90eXBlLlNsb3RzXG5cbiAgbGV0IG1heF9zbG90ID0gMTRcblxuICAoKiBUaGUgcG9vbCBpcyByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBbVW5pZm9ybV9hcnJheS50XSwgd2hlcmUgaW5kZXggemVybyBoYXMgdGhlXG4gICAgIG1ldGFkYXRhIGFib3V0IHRoZSBwb29sIGFuZCB0aGUgcmVtYWluaW5nIGluZGljZXMgYXJlIHRoZSB0dXBsZXMgbGF5ZWQgb3V0IG9uZSBhZnRlclxuICAgICB0aGUgb3RoZXIuICBFYWNoIHR1cGxlIHRha2VzIFsxICsgc2xvdHNfcGVyX3R1cGxlXSBpbmRpY2VzIGluIHRoZSBwb29sLCB3aGVyZSB0aGVcbiAgICAgZmlyc3QgaW5kZXggaG9sZHMgYSBoZWFkZXIgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBob2xkIHRoZSB0dXBsZSdzIHNsb3RzOlxuXG4gICAgIHt2XG4gICAgIHwgaGVhZGVyIHwgczAgfCBzMSB8IC4uLiB8IHM8Ti0xPiB8XG4gICAgIHZ9XG5cbiAgICAgQSBbUG9pbnRlci50XSB0byBhIHR1cGxlIGNvbnRhaW5zIHRoZSBpbnRlZ2VyIGluZGV4IHdoZXJlIGl0cyBoZWFkZXIgaXMsIGFzIHdlbGwgYXNcbiAgICAgKGEgbWFzayBvZikgdGhlIHR1cGxlJ3MgdW5pcXVlIGlkLlxuXG4gICAgIFRoZSBmcmVlIHR1cGxlcyBhcmUgc2luZ2x5IGxpbmtlZCB2aWEgdGhlIGhlYWRlcnMuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIGluIHVzZSwgaXRzIGhlYWRlciBpcyBtYXJrZWQgdG8gaW5kaWNhdGUgc28sIGFuZCBhbHNvIHRvIGluY2x1ZGUgdGhlXG4gICAgIHR1cGxlJ3MgdW5pcXVlIGlkLiAgVGhpcyBhbGxvd3MgdXMgdG8gY2hlY2sgaW4gY29uc3RhbnQgdGltZSB3aGV0aGVyIGEgcG9pbnRlciBpc1xuICAgICB2YWxpZCwgYnkgY29tcGFyaW5nIHRoZSBpZCBpbiB0aGUgcG9pbnRlciB3aXRoIHRoZSBpZCBpbiB0aGUgaGVhZGVyLlxuXG4gICAgIFdoZW4gYSB0dXBsZSBpcyBub3QgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIHBhcnQgb2YgdGhlIGZyZWUgbGlzdCwgYW5kIGl0cyB0dXBsZSBzbG90c1xuICAgICBoYXZlIGR1bW15IHZhbHVlcyBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZXMsIGZyb20gdGhlIFtkdW1teV0gdHVwbGUgc3VwcGxpZWQgdG9cbiAgICAgW2NyZWF0ZV0uICBXZSBtdXN0IGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBjb3JyZWN0IHR5cGUgdG8gcHJldmVudCBhIHNlZ2ZhdWx0IGluXG4gICAgIGNvZGUgdGhhdCAobWlzdGFrZW5seSkgdXNlcyBhIHBvaW50ZXIgdG8gYSBmcmVlIHR1cGxlLlxuXG4gICAgIEZvciBbUG9vbC5VbnNhZmVdLCBhIHNsb3QgaW4gYSBmcmVlIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlIGFuIGludDsgaXQgbXVzdCBub3QgYmVcbiAgICAgcG9pbnRlciB0byBwcmV2ZW50IGEgc3BhY2UgbGVhay4gIEhvd2V2ZXIsIHRoZSBpbnQgaW4gdGhlIHNsb3QgbWF5IG5vdCByZXByZXNlbnQgYVxuICAgICB2YWxpZCB2YWx1ZSBvZiB0aGUgdHlwZS5cbiAgKilcblxuICBtb2R1bGUgU2xvdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdzbG90cywgJ2EpIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSB0MSA9IHQyXG4gICAgbGV0IHQwID0gMVxuICAgIGxldCB0MSA9IDJcbiAgICBsZXQgdDIgPSAzXG4gICAgbGV0IHQzID0gNFxuICAgIGxldCB0NCA9IDVcbiAgICBsZXQgdDUgPSA2XG4gICAgbGV0IHQ2ID0gN1xuICAgIGxldCB0NyA9IDhcbiAgICBsZXQgdDggPSA5XG4gICAgbGV0IHQ5ID0gMTBcbiAgICBsZXQgdDEwID0gMTFcbiAgICBsZXQgdDExID0gMTJcbiAgICBsZXQgdDEyID0gMTNcbiAgICBsZXQgdDEzID0gMTRcbiAgICBsZXQldGVzdCBfID0gdDEzID0gbWF4X3Nsb3RcbiAgZW5kXG5cbiAgKCogV2Ugb25seSBoYXZlIFtJbnQubnVtX2JpdHNdIGJpdHMgYXZhaWxhYmxlIGZvciBwb29sIHBvaW50ZXJzLiAgVGhlIGJpdHMgb2YgYSBwb29sXG4gICAgIHBvaW50ZXIgZW5jb2RlIHR3byB0aGluZ3M6XG5cbiAgICAgLSB0aGUgdHVwbGUncyBhcnJheSBpbmRleCBpbiB0aGUgcG9vbFxuICAgICAtIHRoZSB0dXBsZSdzIGlkZW50aWZpZXIgKG5vdCBuZWNlc3NhcmlseSB1bmlxdWUpXG5cbiAgICAgV2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gYXMgbGFyZ2UgYXMgbmVlZGVkIGZvciB0aGUgbWF4aW11bSBwb29sIGNhcGFjaXR5XG4gICAgIHRoYXQgd2Ugd2FudCB0byBzdXBwb3J0LCBhbmQgdXNlIHRoZSByZW1haW5pbmcgW21hc2tlZF90dXBsZV9pZF9udW1fYml0c10gYml0cyBmb3JcbiAgICAgdGhlIGlkZW50aWZpZXIuICA2NC1iaXQgYW5kIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHR5cGljYWxseSBoYXZlIHZlcnkgZGlmZmVyZW50XG4gICAgIGFkZHJlc3Mtc3BhY2Ugc2l6ZXMsIHNvIHdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGRpZmZlcmVudGx5LiAqKVxuXG4gIGxldCBhcnJheV9pbmRleF9udW1fYml0cyA9XG4gICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gNjMpO1xuICAgICAgMzApXG4gICAgZWxzZSAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDMxIHx8IEludC5udW1fYml0cyA9IDMyKTtcbiAgICAgIDIyKVxuICA7O1xuXG4gIGxldCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPSBJbnQubnVtX2JpdHMgLSBhcnJheV9pbmRleF9udW1fYml0c1xuICBsZXQldGVzdCBfID0gYXJyYXlfaW5kZXhfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyArIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA8PSBJbnQubnVtX2JpdHNcbiAgbGV0IG1heF9hcnJheV9sZW5ndGggPSAxIGxzbCBhcnJheV9pbmRleF9udW1fYml0c1xuXG4gIG1vZHVsZSBUdXBsZV9pZCA6IHNpZ1xuICAgIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGluaXQgOiB0XG4gICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgZXhhbXBsZXMgOiB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiBXZSBndWFyYW50ZWUgdGhhdCB0dXBsZSBpZHMgYXJlIG5vbm5lZ2F0aXZlIHNvIHRoYXQgdGhleSBjYW4gYmUgZW5jb2RlZCBpblxuICAgICAgIGhlYWRlcnMuICopXG4gICAgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0ID49IDApXG4gICAgbGV0IHRvX3N0cmluZyA9IEludC50b19zdHJpbmdcbiAgICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG4gICAgbGV0IGluaXQgPSAwXG4gICAgbGV0IG5leHQgdCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gdCArIDEgZWxzZSBpZiB0ID0gSW50Lm1heF92YWx1ZSB0aGVuIDAgZWxzZSB0ICsgMVxuICAgIGxldCB0b19pbnQgdCA9IHRcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICBpZiBpIDwgMFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlR1cGxlX2lkLm9mX2ludCBnb3QgbmVnYXRpdmUgaW50XCIgaSBbJXNleHBfb2Y6IGludF07XG4gICAgICBpXG4gICAgOztcblxuICAgIGxldCBleGFtcGxlcyA9IFsgMDsgMTsgMHgxRkZGX0ZGRkY7IEludC5tYXhfdmFsdWUgXVxuICBlbmRcblxuICBsZXQgdHVwbGVfaWRfbWFzayA9ICgxIGxzbCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMpIC0gMVxuXG4gIG1vZHVsZSBQb2ludGVyIDogc2lnXG4gICAgKCogW1BvaW50ZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyBzdW0gdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgTm9ybWFsIG9mIHsgaGVhZGVyX2luZGV4IDogaW50OyBtYXNrZWRfdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBUaGUgZW5jb2RpbmcgaXMgY2hvc2VuIHRvIG9wdGltaXplIHRoZSBtb3N0IGNvbW1vbiBvcGVyYXRpb24sIG5hbWVseSB0dXBsZS1zbG90XG4gICAgICAgYWNjZXNzLCB0aGUgW3Nsb3RfaW5kZXhdIGZ1bmN0aW9uLiAgVGhlIGVuY29kaW5nIGlzIGRlc2lnbmVkIHNvIHRoYXQgW3Nsb3RfaW5kZXhdXG4gICAgICAgcHJvZHVjZXMgYSBuZWdhdGl2ZSBudW1iZXIgZm9yIFtOdWxsXSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc3Vic2VxdWVudCBhcnJheSBib3VuZHNcbiAgICAgICBjaGVjayB0byBmYWlsLiAqKVxuXG4gICAgdHlwZSAnc2xvdHMgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgcGh5c19jb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBwaHlzX2VxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAgICgqIFRoZSBudWxsIHBvaW50ZXIuICBbbnVsbF0gaXMgYSBmdW5jdGlvbiBkdWUgdG8gaXNzdWVzIHdpdGggdGhlIHZhbHVlIHJlc3RyaWN0aW9uLiAqKVxuXG4gICAgdmFsIG51bGwgOiB1bml0IC0+IF8gdFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcblxuICAgICgqIE5vcm1hbCBwb2ludGVycy4gKilcblxuICAgIHZhbCBjcmVhdGUgOiBoZWFkZXJfaW5kZXg6aW50IC0+IFR1cGxlX2lkLnQgLT4gXyB0XG4gICAgdmFsIGhlYWRlcl9pbmRleCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgbWFza2VkX3R1cGxlX2lkIDogXyB0IC0+IGludFxuICAgIHZhbCBzbG90X2luZGV4IDogXyB0IC0+IChfLCBfKSBTbG90LnQgLT4gaW50XG4gICAgdmFsIGZpcnN0X3Nsb3RfaW5kZXggOiBfIHQgLT4gaW50XG5cbiAgICBtb2R1bGUgSWQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgIHZhbCB0b19pbnQ2MyA6IHQgLT4gSW50NjMudFxuICAgICAgdmFsIG9mX2ludDYzIDogSW50NjMudCAtPiB0XG4gICAgZW5kXG5cbiAgICB2YWwgdG9faWQgOiBfIHQgLT4gSWQudFxuICAgIHZhbCBvZl9pZF9leG4gOiBJZC50IC0+IF8gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBBIHBvaW50ZXIgaXMgZWl0aGVyIFtudWxsXSBvciB0aGUgKHBvc2l0aXZlKSBpbmRleCBpbiB0aGUgcG9vbCBvZiB0aGUgbmV4dC1mcmVlXG4gICAgICAgZmllbGQgcHJlY2VlZGluZyB0aGUgdHVwbGUncyBzbG90cy4gKilcbiAgICB0eXBlICdzbG90cyB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxQb29sLlBvaW50ZXIudDogMHglMDh4PlwiIHQpXG4gICAgbGV0IHBoeXNfZXF1YWwgKHQxIDogXyB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbiAgICBsZXQgcGh5c19jb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBudWxsICgpID0gLW1heF9zbG90IC0gMVxuICAgIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5cbiAgICAoKiBbbnVsbF0gbXVzdCBiZSBzdWNoIHRoYXQgW251bGwgKyBzbG90XSBpcyBhbiBpbnZhbGlkIGFycmF5IGluZGV4IGZvciBhbGwgc2xvdHMuXG4gICAgICAgT3RoZXJ3aXNlIGdldC9zZXQgb24gdGhlIG51bGwgcG9pbnRlciBtYXkgbGVhZCB0byBhIHNlZ2ZhdWx0LiAqKVxuICAgIGxldCV0ZXN0IF8gPSBudWxsICgpICsgbWF4X3Nsb3QgPCAwXG5cbiAgICBsZXQgY3JlYXRlIH5oZWFkZXJfaW5kZXggKHR1cGxlX2lkIDogVHVwbGVfaWQudCkgPVxuICAgICAgaGVhZGVyX2luZGV4XG4gICAgICBsb3IgKChUdXBsZV9pZC50b19pbnQgdHVwbGVfaWQgbGFuZCB0dXBsZV9pZF9tYXNrKSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHMpXG4gICAgOztcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfbWFzayA9ICgxIGxzbCBhcnJheV9pbmRleF9udW1fYml0cykgLSAxXG4gICAgbGV0IG1hc2tlZF90dXBsZV9pZCB0ID0gdCBsc3IgYXJyYXlfaW5kZXhfbnVtX2JpdHNcbiAgICBsZXQgaGVhZGVyX2luZGV4IHQgPSB0IGxhbmQgaGVhZGVyX2luZGV4X21hc2tcbiAgICBsZXQgaW52YXJpYW50IF8gdCA9IGlmIG5vdCAoaXNfbnVsbCB0KSB0aGVuIGFzc2VydCAoaGVhZGVyX2luZGV4IHQgPiAwKVxuICAgIGxldCV0ZXN0X3VuaXQgXyA9IGludmFyaWFudCBpZ25vcmUgKG51bGwgKCkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gdHVwbGVfaWQgLT5cbiAgICAgICAgaW52YXJpYW50IGlnbm9yZSAoY3JlYXRlIH5oZWFkZXJfaW5kZXg6MSB0dXBsZV9pZCkpXG4gICAgOztcblxuICAgIGxldCBzbG90X2luZGV4IHQgc2xvdCA9IGhlYWRlcl9pbmRleCB0ICsgc2xvdFxuICAgIGxldCBmaXJzdF9zbG90X2luZGV4IHQgPSBzbG90X2luZGV4IHQgU2xvdC50MFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgZW5kXG5cbiAgICBsZXQgdG9faWQgdCA9IElkLm9mX2ludCB0XG5cbiAgICBsZXQgb2ZfaWRfZXhuIGlkID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdCA9IElkLnRvX2ludF9leG4gaWQgaW5cbiAgICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICAgIHRoZW4gdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2hvdWxkX2VxdWFsID1cbiAgICAgICAgICAgIGNyZWF0ZSB+aGVhZGVyX2luZGV4OihoZWFkZXJfaW5kZXggdCkgKFR1cGxlX2lkLm9mX2ludCAobWFza2VkX3R1cGxlX2lkIHQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCB0IHNob3VsZF9lcXVhbFxuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJzaG91bGQgZXF1YWxcIiBzaG91bGRfZXF1YWwgWyVzZXhwX29mOiBfIHRdKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9pbnRlci5vZl9pZF9leG4gZ290IHN0cmFuZ2UgaWRcIlxuICAgICAgICAgIChpZCwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogSWQudCAqIGV4bl1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGVhZGVyIDogc2lnXG4gICAgKCogQSBbSGVhZGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgRnJlZSBvZiB7IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiBpbnQgfVxuICAgICAgICAgfCBVc2VkIG9mIHsgdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGZyZWUsIGl0cyBoZWFkZXIgaXMgc2V0IHRvIGVpdGhlciBbTnVsbF0gb3IgW0ZyZWVdIHdpdGhcbiAgICAgICBbbmV4dF9mcmVlX2hlYWRlcl9pbmRleF0gaW5kaWNhdGluZyB0aGUgaGVhZGVyIG9mIHRoZSBuZXh0IHR1cGxlIG9uIHRoZSBmcmVlIGxpc3QuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBpbiB1c2UsIGl0IGhlYWRlciBpcyBzZXQgdG8gW1VzZWRdLiAqKVxuXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdFxuICAgIHZhbCBpc19udWxsIDogdCAtPiBib29sXG4gICAgdmFsIGZyZWUgOiBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmludCAtPiB0XG4gICAgdmFsIGlzX2ZyZWUgOiB0IC0+IGJvb2xcbiAgICB2YWwgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IHQgLT4gaW50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc19mcmVlIHRdICopXG5cbiAgICB2YWwgdXNlZCA6IFR1cGxlX2lkLnQgLT4gdFxuICAgIHZhbCBpc191c2VkIDogdCAtPiBib29sXG4gICAgdmFsIHR1cGxlX2lkIDogdCAtPiBUdXBsZV9pZC50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc191c2VkIHRdICopXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludFxuXG4gICAgbGV0IG51bGwgPSAwXG4gICAgbGV0IGlzX251bGwgdCA9IHQgPSAwXG5cbiAgICAoKiBXZSBrbm93IHRoYXQgaGVhZGVyIGluZGljZXMgYXJlIFs+IDBdLCBiZWNhdXNlIGluZGV4IFswXSBob2xkcyB0aGUgbWV0YWRhdGEuICopXG4gICAgbGV0IGZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXggPSBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XG4gICAgbGV0IGlzX2ZyZWUgdCA9IHQgPiAwXG4gICAgbGV0IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCA9IHRcbiAgICBsZXQgdXNlZCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9IC0xIC0gKHR1cGxlX2lkIDo+IGludClcbiAgICBsZXQgaXNfdXNlZCB0ID0gdCA8IDBcbiAgICBsZXQgdHVwbGVfaWQgdCA9IFR1cGxlX2lkLm9mX2ludCAoLSh0ICsgMSkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gaWQgLT5cbiAgICAgICAgbGV0IHQgPSB1c2VkIGlkIGluXG4gICAgICAgIGFzc2VydCAoaXNfdXNlZCB0KTtcbiAgICAgICAgYXNzZXJ0IChUdXBsZV9pZC5lcXVhbCAodHVwbGVfaWQgdCkgaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICB0aGVuIFNleHAuQXRvbSBcIm51bGxcIlxuICAgICAgZWxzZSBpZiBpc19mcmVlIHRcbiAgICAgIHRoZW4gU2V4cC4oTGlzdCBbIEF0b20gXCJGcmVlXCI7IEF0b20gKEludC50b19zdHJpbmcgKG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCkpIF0pXG4gICAgICBlbHNlIFNleHAuKExpc3QgWyBBdG9tIFwiVXNlZFwiOyBBdG9tIChUdXBsZV9pZC50b19zdHJpbmcgKHR1cGxlX2lkIHQpKSBdKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZXRhZGF0YV9pbmRleCA9IDBcbiAgbGV0IHN0YXJ0X29mX3R1cGxlc19pbmRleCA9IDFcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIChtYXhfYXJyYXlfbGVuZ3RoIC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvICgxICsgc2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgZm9yIHNsb3RzX3Blcl90dXBsZSA9IDEgdG8gbWF4X3Nsb3QgZG9cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICgoMSArIHNsb3RzX3Blcl90dXBsZSkgKiBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgPD0gbWF4X2FycmF5X2xlbmd0aClcbiAgICBkb25lXG4gIDs7XG5cbiAgbW9kdWxlIE1ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7ICgqIFtzbG90c19wZXJfdHVwbGVdIGlzIG51bWJlciBvZiBzbG90cyBpbiBhIHR1cGxlIGFzIHNlZW4gYnkgdGhlIHVzZXI7IGkuZS4gbm90XG4gICAgICAgICAgIGNvdW50aW5nIHRoZSBuZXh0LWZyZWUgcG9pbnRlci4gKilcbiAgICAgICAgc2xvdHNfcGVyX3R1cGxlIDogaW50XG4gICAgICA7IGNhcGFjaXR5IDogaW50XG4gICAgICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7IG11dGFibGUgbmV4dF9pZCA6IFR1cGxlX2lkLnRcbiAgICAgIDsgbXV0YWJsZSBmaXJzdF9mcmVlIDogSGVhZGVyLnRcbiAgICAgICgqIFtkdW1teV0gaXMgW05vbmVdIGluIGFuIHVuc2FmZSBwb29sLiAgSW4gYSBzYWZlIHBvb2wsIFtkdW1teV0gaXMgW1NvbWUgYV0sIHdpdGhcbiAgICAgICAgIFtVbmlmb3JtX2FycmF5Lmxlbmd0aCBhID0gc2xvdHNfcGVyX3R1cGxlXS4gIFtkdW1teV0gaXMgYWN0dWFsbHkgYSB0dXBsZSB2YWx1ZVxuICAgICAgICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlIChjb3JyZXNwb25kaW5nIHRvIFsnc2xvdHNdKSwgYnV0IHdlIG1ha2UgdGhlIHR5cGUgb2ZcbiAgICAgICAgIFtkdW1teV0gYmUgW09iai50IFVuaWZvcm1fYXJyYXkudF0gYmVjYXVzZSB3ZSBjYW4ndCB3cml0ZSB0aGF0IHR5cGUgaGVyZS4gIEFsc28sXG4gICAgICAgICB0aGUgcHVycG9zZSBvZiBbZHVtbXldIGlzIHRvIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQsIG1ha2luZyBbZHVtbXldIGFuIFtPYmoudFxuICAgICAgICAgVW5pZm9ybV9hcnJheS50XSBsZXRzIHVzIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQgdXNpbmcgW1VuaWZvcm1fYXJyYXkuYmxpdF1cbiAgICAgICAgIGZyb20gW2R1bW15XSB0byB0aGUgcG9vbCwgd2hpY2ggaXMgYW4gW09iai50IFVuaWZvcm1fYXJyYXkudF0uICopXG4gICAgICA7IGR1bW15IDogKE9iai50IFVuaWZvcm1fYXJyYXkudFtAc2V4cC5vcGFxdWVdKSBvcHRpb25cbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdCA9IDEgKyB0LnNsb3RzX3Blcl90dXBsZVxuICAgIGxldCBhcnJheV9sZW5ndGggdCA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0LmNhcGFjaXR5ICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgICAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHRcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHR1cGxlX251bSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtICsgMVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gdC5sZW5ndGggPSB0LmNhcGFjaXR5XG4gIGVuZFxuXG4gIG9wZW4gTWV0YWRhdGFcblxuICAoKiBXZSB1c2UgdHlwZSBbT2JqLnRdIGJlY2F1c2UgdGhlIGFycmF5IGhvbGRzIGEgbWl4IG9mIGludGVnZXJzIGFzIHdlbGwgYXMgT0NhbWwgdmFsdWVzXG4gICAgIG9mIGFyYml0cmFyeSB0eXBlLiAqKVxuICB0eXBlICdzbG90cyB0ID0gT2JqLnQgVW5pZm9ybV9hcnJheS50XG5cbiAgbGV0IG1ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBtZXRhZGF0YV9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gc2xvdHMgTWV0YWRhdGEudClcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPSAobWV0YWRhdGEgdCkubGVuZ3RoXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl90eSB0ID0gTWV0YWRhdGEuc2V4cF9vZl90IHNleHBfb2ZfdHkgKG1ldGFkYXRhIHQpXG5cbiAgKCogQmVjYXVzZSBbdW5zYWZlX2hlYWRlcl0gYW5kIFt1bnNhZmVfc2V0X2hlYWRlcl0gZG8gbm90IGRvIGEgYm91bmRzIGNoZWNrLCBvbmUgbXVzdCBiZVxuICAgICBzdXJlIHRoYXQgb25lIGhhcyBhIHZhbGlkIFtoZWFkZXJfaW5kZXhdIGJlZm9yZSBjYWxsaW5nIHRoZW0uICopXG4gIGxldCB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaGVhZGVyX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBIZWFkZXIudClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChoZWFkZXIgOiBIZWFkZXIudCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGhlYWRlcl9pbmRleCAoaGVhZGVyIDo+IGludClcbiAgOztcblxuICBsZXQgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGhlYWRlcl9pbmRleCA+PSBzdGFydF9vZl90dXBsZXNfaW5kZXggJiYgaGVhZGVyX2luZGV4IDwgVW5pZm9ybV9hcnJheS5sZW5ndGggdFxuICA7O1xuXG4gIGxldCB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlciA9XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICBIZWFkZXIuaXNfdXNlZCBoZWFkZXJcbiAgICAmJiBUdXBsZV9pZC50b19pbnQgKEhlYWRlci50dXBsZV9pZCBoZWFkZXIpIGxhbmQgdHVwbGVfaWRfbWFza1xuICAgICAgID0gUG9pbnRlci5tYXNrZWRfdHVwbGVfaWQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpXG4gICAgKCogQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGUgcG9pbnRlciBpc24ndCBbbnVsbF0gYW5kIGlzIGluIGJvdW5kcywgc28gd2Uga25vdyBpdCBpc1xuICAgICAgIHRoZSBpbmRleCBvZiBhIGhlYWRlciwgc2luY2Ugd2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFsbCBwb2ludGVycyBvdGhlciB0aGFuXG4gICAgICAgW251bGxdIGFyZS4gKilcbiAgICAmJiB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBpZF9vZl9wb2ludGVyIF90IHBvaW50ZXIgPSBQb2ludGVyLnRvX2lkIHBvaW50ZXJcblxuICBsZXQgaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4XG4gICAgJiYgMFxuICAgICAgID0gKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleClcbiAgICAgICAgIG1vZCBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICB0cnlcbiAgICAgIGxldCBwb2ludGVyID0gUG9pbnRlci5vZl9pZF9leG4gaWQgaW5cbiAgICAgIGlmIG5vdCAoUG9pbnRlci5pc19udWxsIHBvaW50ZXIpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICAgICAgaWYgbm90IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KVxuICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiaW52YWxpZCBoZWFkZXIgaW5kZXhcIiBoZWFkZXJfaW5kZXggWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICBpZiBub3QgKHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyKSB0aGVuIGZhaWx3aXRoIFwicG9pbnRlciBub3QgbGl2ZVwiKTtcbiAgICAgIHBvaW50ZXJcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5wb2ludGVyX29mX2lkX2V4biBnb3QgaW52YWxpZCBpZFwiXG4gICAgICAgIChpZCwgdCwgZXhuKVxuICAgICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudCAqIF8gdCAqIGV4bl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCBtZXRhZGF0YSkgaW5cbiAgICAgIE1ldGFkYXRhLkZpZWxkcy5pdGVyXG4gICAgICAgIH5zbG90c19wZXJfdHVwbGU6KGNoZWNrIChmdW4gc2xvdHNfcGVyX3R1cGxlIC0+IGFzc2VydCAoc2xvdHNfcGVyX3R1cGxlID4gMCkpKVxuICAgICAgICB+Y2FwYWNpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY2FwYWNpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggdCA9IE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkpKVxuICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IG1ldGFkYXRhLmNhcGFjaXR5KSkpXG4gICAgICAgIH5uZXh0X2lkOihjaGVjayBUdXBsZV9pZC5pbnZhcmlhbnQpXG4gICAgICAgIH5maXJzdF9mcmVlOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcnN0X2ZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgZnJlZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm1ldGFkYXRhLmNhcGFjaXR5IGZhbHNlIGluXG4gICAgICAgICAgICAgbGV0IHIgPSByZWYgZmlyc3RfZnJlZSBpblxuICAgICAgICAgICAgIHdoaWxlIG5vdCAoSGVhZGVyLmlzX251bGwgIXIpIGRvXG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gIXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoSGVhZGVyLmlzX2ZyZWUgaGVhZGVyKTtcbiAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBoZWFkZXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCk7XG4gICAgICAgICAgICAgICBsZXQgdHVwbGVfbnVtID0gaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSBtZXRhZGF0YSB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICBpZiBmcmVlLih0dXBsZV9udW0pXG4gICAgICAgICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiY3ljbGUgaW4gZnJlZSBsaXN0XCIgdHVwbGVfbnVtIFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgICAgICAgIGZyZWUuKHR1cGxlX251bSkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgIHIgOj0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXhcbiAgICAgICAgICAgICBkb25lKSlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFNvbWUgZHVtbXkgLT4gYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkdW1teSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGZvciB0dXBsZV9udW0gPSAwIHRvIG1ldGFkYXRhLmNhcGFjaXR5IC0gMSBkb1xuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICAgIGlmIEhlYWRlci5pc19mcmVlIGhlYWRlclxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3Rfc2xvdCA9IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICAgIGZvciBzbG90ID0gMCB0byBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKE9iai5pc19pbnQgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgKGZpcnN0X3Nsb3QgKyBzbG90KSkpXG4gICAgICAgICAgICAgICAgICAgZG9uZSlcbiAgICAgICAgICAgICAgIGRvbmUpKVxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmludmFyaWFudCBmYWlsZWRcIiAoZXhuLCB0KSBbJXNleHBfb2Y6IGV4biAqIF8gdF1cbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9IChtZXRhZGF0YSB0KS5jYXBhY2l0eVxuICBsZXQgaXNfZnVsbCB0ID0gTWV0YWRhdGEuaXNfZnVsbCAobWV0YWRhdGEgdClcblxuICBsZXQgdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCBtZXRhZGF0YSB+aGVhZGVyX2luZGV4ID1cbiAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggbWV0YWRhdGEuZmlyc3RfZnJlZTtcbiAgICBtZXRhZGF0YS5maXJzdF9mcmVlIDwtIEhlYWRlci5mcmVlIH5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmhlYWRlcl9pbmRleFxuICA7O1xuXG4gIGxldCBzZXRfbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgbWV0YWRhdGEgPVxuICAgIFVuaWZvcm1fYXJyYXkuc2V0IHQgbWV0YWRhdGFfaW5kZXggKE9iai5yZXByIChtZXRhZGF0YSA6IHNsb3RzIE1ldGFkYXRhLnQpKVxuICA7O1xuXG4gIGxldCBjcmVhdGVfYXJyYXkgKHR5cGUgc2xvdHMpIChtZXRhZGF0YSA6IHNsb3RzIE1ldGFkYXRhLnQpIDogc2xvdHMgdCA9XG4gICAgbGV0IHQgPSBVbmlmb3JtX2FycmF5LmNyZWF0ZV9vYmpfYXJyYXkgfmxlbjooTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSBpblxuICAgIHNldF9tZXRhZGF0YSB0IG1ldGFkYXRhO1xuICAgIHRcbiAgOztcblxuICAoKiBJbml0aWFsaXplIHR1cGxlcyBudW1iZXJlZCBmcm9tIFtsb10gKGluY2x1c2l2ZSkgdXAgdG8gW2hpXSAoZXhjbHVzaXZlKS4gIEZvciBlYWNoXG4gICAgIHR1cGxlLCB0aGlzIHB1dHMgZHVtbXkgdmFsdWVzIGluIHRoZSB0dXBsZSdzIHNsb3RzIGFuZCBhZGRzIHRoZSB0dXBsZSB0byB0aGUgZnJlZVxuICAgICBsaXN0LiAqKVxuICBsZXQgdW5zYWZlX2luaXRfcmFuZ2UgdCBtZXRhZGF0YSB+bG8gfmhpID1cbiAgICAobWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IGxvIHRvIGhpIC0gMSBkb1xuICAgICAgICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgICB+ZHN0OnRcbiAgICAgICAgICAgfmRzdF9wb3M6KHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSlcbiAgICAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICBkb25lKTtcbiAgICBmb3IgdHVwbGVfbnVtID0gaGkgLSAxIGRvd250byBsbyBkb1xuICAgICAgdW5zYWZlX2FkZF90b19mcmVlX2xpc3RcbiAgICAgICAgdFxuICAgICAgICBtZXRhZGF0YVxuICAgICAgICB+aGVhZGVyX2luZGV4Oih0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5jcmVhdGUgZ290IGludmFsaWQgY2FwYWNpdHlcIiBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IHNsb3RzX3Blcl90dXBsZSA9IFNsb3RzLnNsb3RzX3Blcl90dXBsZSBzbG90cyBpblxuICAgIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSBpblxuICAgIGlmIGNhcGFjaXR5ID4gbWF4X2NhcGFjaXR5XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmNyZWF0ZSBnb3QgdG9vIGxhcmdlIGNhcGFjaXR5XCJcbiAgICAgICAgKGNhcGFjaXR5LCBgbWF4IG1heF9jYXBhY2l0eSlcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBbIGBtYXggb2YgaW50IF1dO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eVxuICAgICAgOyBsZW5ndGggPSAwXG4gICAgICA7IG5leHRfaWQgPSBUdXBsZV9pZC5pbml0XG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQgPSBjcmVhdGVfYXJyYXkgbWV0YWRhdGEgaW5cbiAgICB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbzowIH5oaTpjYXBhY2l0eTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAodHlwZSB0dXBsZSkgKHNsb3RzIDogKHR1cGxlLCBfKSBTbG90cy50KSB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBsZXQgZHVtbXkgPVxuICAgICAgaWYgU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzID0gMVxuICAgICAgdGhlbiBVbmlmb3JtX2FycmF5LnNpbmdsZXRvbiAoT2JqLnJlcHIgKGR1bW15IDogdHVwbGUpKVxuICAgICAgZWxzZSAoT2JqLm1hZ2ljIChkdW1teSA6IHR1cGxlKSA6IE9iai50IFVuaWZvcm1fYXJyYXkudClcbiAgICBpblxuICAgIGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXk6KFNvbWUgZHVtbXkpXG4gIDs7XG5cbiAgKCogUHVyZ2UgYSBwb29sIGFuZCBtYWtlIGl0IHVudXNhYmxlLiAqKVxuICBsZXQgZGVzdHJveSB0ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgKCogV2UgY2xlYXIgb3V0IGFsbCB0aGUgcG9vbCdzIGVudHJpZXMsIHdoaWNoIGNhdXNlcyBhbGwgcG9pbnRlcnMgdG8gYmUgaW52YWxpZC4gIFRoaXNcbiAgICAgICBhbHNvIHByZXZlbnRzIHRoZSBkZXN0cm95ZWQgcG9vbCBmcm9tIHVubmVjZXNzYXJpbHkga2VlcGluZyBoZWFwIGJsb2NrcyBhbGl2ZS5cbiAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gW2ZyZWVdaW5nIGFsbCB0aGUgZW50cmllcyB3aXRoIHRoZSBkaWZmZXJlbmNlIHRoYXQgd2UgbWFrZSB0aGVcbiAgICAgICBmcmVlIGxpc3QgZW1wdHkgYXMgd2VsbC4gKilcbiAgICAobWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBmb3IgaSA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoT2JqLnJlcHIgMClcbiAgICAgICBkb25lXG4gICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgIGZvciB0dXBsZV9udW0gPSAwIHRvIG1ldGFkYXRhLmNhcGFjaXR5IC0gMSBkb1xuICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggSGVhZGVyLm51bGw7XG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczooaGVhZGVyX2luZGV4ICsgMSlcbiAgICAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICBkb25lKTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHkgPSAwXG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IG1ldGFkYXRhLm5leHRfaWRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15ID0gbWV0YWRhdGEuZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIHNldF9tZXRhZGF0YSB0IG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSBncm93ID9jYXBhY2l0eSB0ID1cbiAgICBsZXQgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICAgOyBjYXBhY2l0eSA9IG9sZF9jYXBhY2l0eVxuICAgICAgICA7IGxlbmd0aFxuICAgICAgICA7IG5leHRfaWRcbiAgICAgICAgOyBmaXJzdF9mcmVlID0gX1xuICAgICAgICA7IGR1bW15XG4gICAgICAgIH1cbiAgICAgID1cbiAgICAgIG1ldGFkYXRhIHRcbiAgICBpblxuICAgIGxldCBjYXBhY2l0eSA9XG4gICAgICBtaW4gKG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKSAoZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSlcbiAgICBpblxuICAgIGlmIGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmdyb3cgY2Fubm90IGdyb3cgcG9vbDsgY2FwYWNpdHkgYWxyZWFkeSBhdCBtYXhpbXVtXCJcbiAgICAgICAgY2FwYWNpdHlcbiAgICAgICAgWyVzZXhwX29mOiBpbnRdO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eVxuICAgICAgOyBsZW5ndGhcbiAgICAgIDsgbmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0JyA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgfnNyYzp0XG4gICAgICB+c3JjX3BvczpzdGFydF9vZl90dXBsZXNfaW5kZXhcbiAgICAgIH5kc3Q6dCdcbiAgICAgIH5kc3RfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmxlbjoob2xkX2NhcGFjaXR5ICogTWV0YWRhdGEuYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgbWV0YWRhdGEpO1xuICAgIGRlc3Ryb3kgdDtcbiAgICB1bnNhZmVfaW5pdF9yYW5nZSB0JyBtZXRhZGF0YSB+bG86b2xkX2NhcGFjaXR5IH5oaTpjYXBhY2l0eTtcbiAgICBmb3IgdHVwbGVfbnVtID0gb2xkX2NhcGFjaXR5IC0gMSBkb3dudG8gMCBkb1xuICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0JyB+aGVhZGVyX2luZGV4IGluXG4gICAgICBpZiBub3QgKEhlYWRlci5pc191c2VkIGhlYWRlcilcbiAgICAgIHRoZW4gdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCcgbWV0YWRhdGEgfmhlYWRlcl9pbmRleFxuICAgIGRvbmU7XG4gICAgdCdcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX21hbGxvY19mdWxsIHQgPVxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5tYWxsb2Mgb2YgZnVsbCBwb29sXCIgdCBbJXNleHBfb2Y6IF8gdF1cbiAgOztcblxuICBsZXQgbWFsbG9jICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIDogc2xvdHMgUG9pbnRlci50ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbGV0IGZpcnN0X2ZyZWUgPSBtZXRhZGF0YS5maXJzdF9mcmVlIGluXG4gICAgaWYgSGVhZGVyLmlzX251bGwgZmlyc3RfZnJlZSB0aGVuIHJhaXNlX21hbGxvY19mdWxsIHQ7XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGZpcnN0X2ZyZWUgaW5cbiAgICBtZXRhZGF0YS5maXJzdF9mcmVlIDwtIHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4O1xuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggKyAxO1xuICAgIGxldCB0dXBsZV9pZCA9IG1ldGFkYXRhLm5leHRfaWQgaW5cbiAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKEhlYWRlci51c2VkIHR1cGxlX2lkKTtcbiAgICBtZXRhZGF0YS5uZXh0X2lkIDwtIFR1cGxlX2lkLm5leHQgdHVwbGVfaWQ7XG4gICAgUG9pbnRlci5jcmVhdGUgfmhlYWRlcl9pbmRleCB0dXBsZV9pZFxuICA7O1xuXG4gIGxldCB1bnNhZmVfZnJlZSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSAocG9pbnRlciA6IHNsb3RzIFBvaW50ZXIudCkgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBtZXRhZGF0YS5sZW5ndGggPC0gbWV0YWRhdGEubGVuZ3RoIC0gMTtcbiAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpO1xuICAgIG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwb3MgPSBQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlciBpblxuICAgICAgZm9yIGkgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IChwb3MgKyBpKVxuICAgICAgZG9uZVxuICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICAgfmRzdDp0XG4gICAgICAgIH5kc3RfcG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcilcbiAgOztcblxuICBsZXQgZnJlZSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSAocG9pbnRlciA6IHNsb3RzIFBvaW50ZXIudCkgPVxuICAgICgqIENoZWNrIFtwb2ludGVyX2lzX3ZhbGlkXSB0bzpcbiAgICAgICAtIGF2b2lkIGZyZWVpbmcgYSBudWxsIHBvaW50ZXJcbiAgICAgICAtIGF2b2lkIGZyZWVpbmcgYSBmcmVlIHBvaW50ZXIgKHRoaXMgd291bGQgbGVhZCB0byBhIHBvb2wgaW5jb25zaXN0ZW5jeSlcbiAgICAgICAtIGJlIGFibGUgdG8gdXNlIHVuc2FmZSBmdW5jdGlvbnMgYWZ0ZXIuICopXG4gICAgaWYgbm90IChwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlcilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZnJlZSBvZiBpbnZhbGlkIHBvaW50ZXJcIlxuICAgICAgICAocG9pbnRlciwgdClcbiAgICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudCAqIF8gdF07XG4gICAgdW5zYWZlX2ZyZWUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEgdCBhMCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcyIHQgYTAgYTEgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MyB0IGEwIGExIGEyID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMykgKE9iai5yZXByIGExMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDE0KSAoT2JqLnJlcHIgYTEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGdldCB0IHAgc2xvdCA9IE9iai5vYmogKFVuaWZvcm1fYXJyYXkuZ2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpKVxuXG4gIGxldCB1bnNhZmVfZ2V0IHQgcCBzbG90ID1cbiAgICBPYmoub2JqIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG4gIDs7XG5cbiAgbGV0IHNldCB0IHAgc2xvdCB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG5cbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgeCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpIChPYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBnZXRfdHVwbGUgKHR5cGUgdHVwbGUpICh0IDogKHR1cGxlLCBfKSBTbG90cy50IHQpIHBvaW50ZXIgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgbGVuID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgbGVuID0gMVxuICAgIHRoZW4gZ2V0IHQgcG9pbnRlciBTbG90LnQwXG4gICAgZWxzZVxuICAgICAgKE9iai5tYWdpY1xuICAgICAgICAgKFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczooUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIpIH5sZW5cbiAgICAgICAgICA6IE9iai50IFVuaWZvcm1fYXJyYXkudClcbiAgICAgICA6IHR1cGxlKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG9vbFxuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9vbFxuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5ID0gY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTpOb25lXG5lbmRcblxubW9kdWxlIERlYnVnIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgbmFtZSB0cyBhcmcgc2V4cF9vZl9hcmcgc2V4cF9vZl9yZXN1bHQgZiA9XG4gICAgbGV0IHByZWZpeCA9IFwiUG9vbC5cIiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBMaXN0Lml0ZXIgdHMgfmY6KGludmFyaWFudCBpZ25vcmUpO1xuICAgIGlmICFzaG93X21lc3NhZ2VzIHRoZW4gRGVidWcuZXByaW50cyAoY29uY2F0IFsgcHJlZml4OyBuYW1lIF0pIGFyZyBzZXhwX29mX2FyZztcbiAgICBsZXQgcmVzdWx0X29yX2V4biA9IFJlc3VsdC50cnlfd2l0aCBmIGluXG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5lcHJpbnRzXG4gICAgICAgIChjb25jYXQgWyBwcmVmaXg7IG5hbWU7IFwiIHJlc3VsdFwiIF0pXG4gICAgICAgIHJlc3VsdF9vcl9leG5cbiAgICAgICAgWyVzZXhwX29mOiAocmVzdWx0LCBleG4pIFJlc3VsdC50XTtcbiAgICBSZXN1bHQub2tfZXhuIHJlc3VsdF9vcl9leG5cbiAgOztcblxuICBtb2R1bGUgU2xvdHMgPSBTbG90c1xuICBtb2R1bGUgU2xvdCA9IFNsb3RcblxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIG9wZW4gUG9pbnRlclxuXG4gICAgdHlwZSBub25yZWMgJ3Nsb3RzIHQgPSAnc2xvdHMgdCBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19jb21wYXJlXCJcbiAgICAgICAgW11cbiAgICAgICAgKHQxLCB0MilcbiAgICAgICAgWyVzZXhwX29mOiBfIHQgKiBfIHRdXG4gICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgICAoZnVuICgpIC0+IHBoeXNfY29tcGFyZSB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IHBoeXNfZXF1YWwgdDEgdDIgPVxuICAgICAgZGVidWdcbiAgICAgICAgXCJQb2ludGVyLnBoeXNfZXF1YWxcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAoZnVuICgpIC0+IHBoeXNfZXF1YWwgdDEgdDIpXG4gICAgOztcblxuICAgIGxldCBpc19udWxsIHQgPVxuICAgICAgZGVidWcgXCJQb2ludGVyLmlzX251bGxcIiBbXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGJvb2xdIChmdW4gKCkgLT4gaXNfbnVsbCB0KVxuICAgIDs7XG5cbiAgICBsZXQgbnVsbCA9IG51bGxcblxuICAgIG1vZHVsZSBJZCA9IHN0cnVjdFxuICAgICAgb3BlbiBJZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgIGxldCBvZl9pbnQ2MyBpID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLm9mX2ludDYzXCIgW10gaSBbJXNleHBfb2Y6IEludDYzLnRdIFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgIG9mX2ludDYzIGkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9XG4gICAgICAgIGRlYnVnIFwiUG9pbnRlci5JZC50b19pbnQ2M1wiIFtdIHQgWyVzZXhwX29mOiB0XSBbJXNleHBfb2Y6IEludDYzLnRdIChmdW4gKCkgLT5cbiAgICAgICAgICB0b19pbnQ2MyB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgJ3Nsb3RzIHQgPSAnc2xvdHMgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9XG4gICAgZGVidWdcbiAgICAgIFwiaWRfb2ZfcG9pbnRlclwiXG4gICAgICBbIHQgXVxuICAgICAgcG9pbnRlclxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgKGZ1biAoKSAtPiBpZF9vZl9wb2ludGVyIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgZGVidWdcbiAgICAgIFwicG9pbnRlcl9vZl9pZF9leG5cIlxuICAgICAgWyB0IF1cbiAgICAgIGlkXG4gICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudF1cbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQpXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX2lzX3ZhbGlkXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgKGZ1biAoKSAtPiBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGRlYnVnIFwiY3JlYXRlXCIgW10gY2FwYWNpdHkgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSlcbiAgOztcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIGRlYnVnIFwibWF4X2NhcGFjaXR5XCIgW10gc2xvdHNfcGVyX3R1cGxlIFslc2V4cF9vZjogaW50XSBbJXNleHBfb2Y6IGludF0gKGZ1biAoKSAtPlxuICAgICAgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0IGNhcGFjaXR5IHQgPVxuICAgIGRlYnVnIFwiY2FwYWNpdHlcIiBbIHQgXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGludF0gKGZ1biAoKSAtPiBjYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBncm93ID9jYXBhY2l0eSB0ID1cbiAgICBkZWJ1Z1xuICAgICAgXCJncm93XCJcbiAgICAgIFsgdCBdXG4gICAgICAoYGNhcGFjaXR5IGNhcGFjaXR5KVxuICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgb3B0aW9uIF1dXG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgICAgIChmdW4gKCkgLT4gZ3JvdyA/Y2FwYWNpdHkgdClcbiAgOztcblxuICBsZXQgaXNfZnVsbCB0ID1cbiAgICBkZWJ1ZyBcImlzX2Z1bGxcIiBbIHQgXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGJvb2xdIChmdW4gKCkgLT4gaXNfZnVsbCB0KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfZnJlZSB0IHAgPVxuICAgIGRlYnVnIFwidW5zYWZlX2ZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgdW5zYWZlX2ZyZWUgdCBwKVxuICA7O1xuXG4gIGxldCBmcmVlIHQgcCA9XG4gICAgZGVidWcgXCJmcmVlXCIgWyB0IF0gcCBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT4gZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGRlYnVnX25ldyB0IGYgPSBkZWJ1ZyBcIm5ld1wiIFsgdCBdICgpIFslc2V4cF9vZjogdW5pdF0gWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gZlxuICBsZXQgbmV3MSB0IGEwID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxIHQgYTApXG4gIGxldCBuZXcyIHQgYTAgYTEgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzIgdCBhMCBhMSlcbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc0IHQgYTAgYTEgYTIgYTMpXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzUgdCBhMCBhMSBhMiBhMyBhNClcbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYpXG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcpXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSlcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTApXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMilcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIFwiZ2V0X3R1cGxlXCIgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT5cbiAgICAgIGdldF90dXBsZSB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGRlYnVnX2dldCBuYW1lIGYgdCBwb2ludGVyID1cbiAgICBkZWJ1ZyBuYW1lIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiBfXSAoZnVuICgpIC0+IGYgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBnZXQgdCBwb2ludGVyIHNsb3QgPSBkZWJ1Z19nZXQgXCJnZXRcIiBnZXQgdCBwb2ludGVyIHNsb3RcbiAgbGV0IHVuc2FmZV9nZXQgdCBwb2ludGVyIHNsb3QgPSBkZWJ1Z19nZXQgXCJ1bnNhZmVfZ2V0XCIgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdFxuXG4gIGxldCBkZWJ1Z19zZXQgbmFtZSBmIHQgcG9pbnRlciBzbG90IGEgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT5cbiAgICAgIGYgdCBwb2ludGVyIHNsb3QgYSlcbiAgOztcblxuICBsZXQgc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJzZXRcIiBzZXQgdCBwb2ludGVyIHNsb3QgYVxuICBsZXQgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhID0gZGVidWdfc2V0IFwidW5zYWZlX3NldFwiIHVuc2FmZV9zZXQgdCBwb2ludGVyIHNsb3QgYVxuZW5kXG5cbm1vZHVsZSBFcnJvcl9jaGVjayAoUG9vbCA6IFMpID0gc3RydWN0XG4gIG9wZW4gUG9vbFxuICBtb2R1bGUgU2xvdHMgPSBTbG90c1xuICBtb2R1bGUgU2xvdCA9IFNsb3RcblxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIHR5cGUgJ3Nsb3RzIHQgPVxuICAgICAgeyBtdXRhYmxlIGlzX3ZhbGlkIDogYm9vbFxuICAgICAgOyBwb2ludGVyIDogJ3Nsb3RzIFBvaW50ZXIudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgY3JlYXRlIHBvaW50ZXIgPSB7IGlzX3ZhbGlkID0gdHJ1ZTsgcG9pbnRlciB9XG4gICAgbGV0IG51bGwgKCkgPSB7IGlzX3ZhbGlkID0gZmFsc2U7IHBvaW50ZXIgPSBQb2ludGVyLm51bGwgKCkgfVxuICAgIGxldCBwaHlzX2NvbXBhcmUgdDEgdDIgPSBQb2ludGVyLnBoeXNfY29tcGFyZSB0MS5wb2ludGVyIHQyLnBvaW50ZXJcbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9IFBvaW50ZXIucGh5c19lcXVhbCB0MS5wb2ludGVyIHQyLnBvaW50ZXJcbiAgICBsZXQgaXNfbnVsbCB0ID0gUG9pbnRlci5pc19udWxsIHQucG9pbnRlclxuXG4gICAgbGV0IGZvbGxvdyB0ID1cbiAgICAgIGlmIG5vdCB0LmlzX3ZhbGlkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byB1c2UgaW52YWxpZCBwb2ludGVyXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgICB0LnBvaW50ZXJcbiAgICA7O1xuXG4gICAgbGV0IGludmFsaWRhdGUgdCA9IHQuaXNfdmFsaWQgPC0gZmFsc2VcblxuICAgIG1vZHVsZSBJZCA9IFBvaW50ZXIuSWRcbiAgZW5kXG5cbiAgdHlwZSAnc2xvdHMgdCA9ICdzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHsgUG9pbnRlci5pc192YWxpZDsgcG9pbnRlciB9ID1cbiAgICBpc192YWxpZCAmJiBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlclxuICA7O1xuXG4gICgqIFdlIGRvbid0IGRvIFtQb2ludGVyLmZvbGxvdyBwb2ludGVyXSwgYmVjYXVzZSB0aGF0IHdvdWxkIGRpc2FsbG93IFtpZF9vZl9wb2ludGVyIHRcbiAgICAgKFBvaW50ZXIubnVsbCAoKSldLiAqKVxuICBsZXQgaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIgPSBpZF9vZl9wb2ludGVyIHQgcG9pbnRlci5Qb2ludGVyLnBvaW50ZXJcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgbGV0IHBvaW50ZXIgPSBwb2ludGVyX29mX2lkX2V4biB0IGlkIGluXG4gICAgbGV0IGlzX3ZhbGlkID0gUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciBpblxuICAgIHsgUG9pbnRlci5pc192YWxpZDsgcG9pbnRlciB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eVxuICBsZXQgbWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5XG4gIGxldCBncm93ID0gZ3Jvd1xuICBsZXQgaXNfZnVsbCA9IGlzX2Z1bGxcbiAgbGV0IGdldF90dXBsZSB0IHAgPSBnZXRfdHVwbGUgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IGdldCB0IHAgPSBnZXQgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IHVuc2FmZV9nZXQgdCBwID0gdW5zYWZlX2dldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgc2V0IHQgcCBzbG90IHYgPSBzZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG4gIGxldCB1bnNhZmVfc2V0IHQgcCBzbG90IHYgPSB1bnNhZmVfc2V0IHQgKFBvaW50ZXIuZm9sbG93IHApIHNsb3QgdlxuXG4gIGxldCB1bnNhZmVfZnJlZSB0IHAgPVxuICAgIHVuc2FmZV9mcmVlIHQgKFBvaW50ZXIuZm9sbG93IHApO1xuICAgIFBvaW50ZXIuaW52YWxpZGF0ZSBwXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBmcmVlIHQgKFBvaW50ZXIuZm9sbG93IHApO1xuICAgIFBvaW50ZXIuaW52YWxpZGF0ZSBwXG4gIDs7XG5cbiAgbGV0IG5ldzEgdCBhMCA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzIgdCBhMCBhMSlcbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzMgdCBhMCBhMSBhMilcbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzUgdCBhMCBhMSBhMiBhMyBhNClcbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSlcbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcpXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4KVxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTApXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExKVxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMpXG4gIDs7XG5lbmRcbiIsIigqIEJlIHN1cmUgYW5kIGZpcnN0IHJlYWQgdGhlIGltcGxlbWVudGF0aW9uIG92ZXJ2aWV3IGluIHRpbWluZ193aGVlbF9pbnRmLm1sLlxuXG4gICBBIHRpbWluZyB3aGVlbCBpcyByZXByZXNlbnRlZCBhcyBhbiBhcnJheSBvZiBcImxldmVsc1wiLCB3aGVyZSBlYWNoIGxldmVsIGlzIGFuIGFycmF5IG9mXG4gICBcInNsb3RzXCIuICBFYWNoIHNsb3QgcmVwcmVzZW50cyBhIHJhbmdlIG9mIGtleXMsIGFuZCBob2xkcyBlbGVtZW50cyBhc3NvY2lhdGVkIHdpdGhcbiAgIHRob3NlIGtleXMuICBFYWNoIGxldmVsIGlzIGRldGVybWluZWQgYnkgdHdvIHBhcmFtZXRlcnM6IFtiaXRzXSwgdGhlIG51bWJlciBvZiBrZXkgYml0c1xuICAgdGhhdCB0aGF0IGxldmVsIGlzIHJlc3BvbnNpYmxlIGZvciBkaXN0aW5ndWlzaGluZywgYW5kIFtiaXRzX3Blcl9zbG90XSwgdGhlIHNpemUgb2YgdGhlXG4gICByYW5nZSBvZiBrZXlzIHRoYXQgY29ycmVzcG9uZCB0byBhIHNpbmdsZSBzbG90IGluIHRoZSBhcnJheS4gIENvbmNlcHR1YWxseSwgZWFjaCBsZXZlbFxuICAgYnJlYWtzIHVwIGFsbCBwb3NzaWJsZSBrZXlzIGludG8gcmFuZ2VzIG9mIHNpemUgWzJeYml0c19wZXJfc2xvdF0uICBUaGUgbGVuZ3RoIG9mIGFcbiAgIGxldmVsIGFycmF5IGlzIFsyXmJpdHNdLCBhbmQgdGhlIGFycmF5IGlzIHVzZWQgbGlrZSBhIGNpcmN1bGFyIGJ1ZmZlciB0byB0cmF2ZXJzZSB0aGVcbiAgIHJhbmdlcyBhcyB0aGUgdGltaW5nIHdoZWVsJ3MgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLiAgQSBrZXkgW2tdLCBpZiBzdG9yZWQgaW4gdGhlXG4gICBsZXZlbCwgaXMgc3RvcmVkIGF0IGluZGV4IFsoayAvIDJeYml0c19wZXJfc2xvdCkgbW9kIDJeYml0c10uXG5cbiAgIFRoZSBzZXR0aW5ncyBvZiB0aGUgW2JpdHNdIHZhbHVlcyBhcmUgY29uZmlndXJhYmxlIGJ5IHVzZXIgY29kZSB1c2luZyBbTGV2ZWxfYml0c10sXG4gICBhbHRob3VnaCB0aGVyZSBpcyBhIHJlYXNvbmFibGUgZGVmYXVsdCBzZXR0aW5nLiAgR2l2ZW4gdGhlIFtiaXRzXSB2YWx1ZXMsIHRoZVxuICAgW2JpdHNfcGVyX3Nsb3RdIGFyZSBjaG9zZW4gc28gdGhhdCBbYml0c19wZXJfc2xvdF0gYXQgbGV2ZWwgW2ldIGlzIHRoZSBzdW0gb2YgdGhlXG4gICBbYml0c10gYXQgYWxsIGxvd2VyIGxldmVscy4gIFRodXMsIGEgc2xvdCdzIHJhbmdlIGF0IGxldmVsIFtpXSBpcyBhcyBsYXJnZSBhcyB0aGVcbiAgIGVudGlyZSByYW5nZSBvZiB0aGUgYXJyYXkgYXQgbGV2ZWwgW2kgLSAxXS5cblxuICAgRWFjaCBsZXZlbCBoYXMgYSBbbWluX2FsbG93ZWRfa2V5XSBhbmQgYSBbbWF4X2FsbG93ZWRfa2V5XSB0aGF0IGRldGVybWluZSB0aGUgcmFuZ2Ugb2ZcbiAgIGtleXMgdGhhdCBpdCBjdXJyZW50bHkgcmVwcmVzZW50cy4gIFRoZSBjcnVjaWFsIGludmFyaWFudCBvZiB0aGUgdGltaW5nIHdoZWVsIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0aGF0IHRoZSBbbWluX2FsbG93ZWRfa2V5XSBhdCBsZXZlbCBbaV0gaXMgbm8gbW9yZSB0aGFuIHRoZVxuICAgW21heF9hbGxvd2VkX2tleSArIDFdIG9mIGxldmVsIFtpIC0gMV0uICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbGV2ZWxzIGNhbiByZXByZXNlbnQgYWxsXG4gICBrZXlzIGZyb20gdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIHRoZSBsb3dlc3QgbGV2ZWwgdG8gdGhlIFttYXhfYWxsb3dlZF9rZXldIG9mIHRoZVxuICAgaGlnaGVzdCBsZXZlbC4gIFRoZSBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmVzdG9yaW5nXG4gICB0aGlzIGludmFyaWFudC5cblxuICAgQXQgbGV2ZWwgMCwgW2JpdHNfcGVyX3Nsb3QgPSAwXSwgYW5kIHNvIHRoZSBzaXplIG9mIGVhY2ggc2xvdCBpcyBbMV0uICBUaGF0IGlzLCBsZXZlbCAwXG4gICBwcmVjaXNlbHkgZGlzdGluZ3Vpc2hlcyBhbGwgdGhlIGtleXMgYmV0d2VlbiBpdHMgW21pbl9hbGxvd2VkX2tleV0gKHdoaWNoIGlzIHRoZSBzYW1lXG4gICBhcyB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGVudGlyZSB0aW1pbmcgd2hlZWwpIGFuZCBbbWF4X2FsbG93ZWRfa2V5XS4gIEFzIHRoZVxuICAgbGV2ZWxzIGluY3JlYXNlLCB0aGUgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCB0aGUgW2JpdHNfcGVyX3Nsb3RdIGluY3JlYXNlcywgYW5kXG4gICB0aGUgcmFuZ2Ugb2Yga2V5cyBzdG9yZWQgaW4gdGhlIGxldmVsIGluY3JlYXNlcyAoZHJhbWF0aWNhbGx5KS5cblxuICAgVGhlIGlkZWEgb2YgdGhlIGltcGxlbWVudGF0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIGhpZXJhcmNoaWNhbCBhcHByb2FjaCBkZXNjcmliZWQgaW46XG5cbiAgIHt2XG4gICAgIEhhc2hlZCBhbmQgSGllcmFyY2hpY2FsIFRpbWluZyBXaGVlbHM6XG4gICAgIEVmZmljaWVudCBEYXRhIFN0cnVjdHVyZXMgZm9yIEltcGxlbWVudGluZyBhIFRpbWVyIEZhY2lsaXR5XG5cbiAgICAgVmFyZ2hlc2UgJiBMYXVjaywgMTk5NlxuICAgdn1cblxuICAgSG93ZXZlciwgdGhlIGNvZGUgaXMgY29tcGxldGVseSBuZXcuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgVGltaW5nX3doZWVsX2ludGZcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxuXG5sZXQgc2V4cF9vZl90X3N0eWxlIDogWyBgUHJldHR5IHwgYEludGVybmFsIF0gcmVmID0gcmVmIGBQcmV0dHlcblxuKCogW3ttYXgsbWlufV90aW1lXSBhcmUgYm91bmRzIG9uIHRoZSB0aW1lcyBzdXBwb3J0ZWQgYnkgYSB0aW1pbmcgd2hlZWwuICopXG5cbmxldCBtYXhfdGltZSA9IFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtaW5fdGltZSA9IFRpbWVfbnMuZXBvY2hcblxubW9kdWxlIE51bV9rZXlfYml0cyA6IHNpZ1xuICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqIHZhbCBtaW5fdmFsdWUgOiB0ICopXG5cbiAgdmFsIG1heF92YWx1ZSA6IHRcbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93MiA6IHQgLT4gSW50NjMudFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IG1pbl92YWx1ZSA9IDBcblxuICAoKiogV2Ugc3VwcG9ydCBhbGwgbm9uLW5lZ2F0aXZlIFtUaW1lX25zLnRdIHZhbHVlcy4gKilcbiAgbGV0IG1heF92YWx1ZSA9IEludDYzLm51bV9iaXRzIC0gMVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0ID49IG1pbl92YWx1ZSk7XG4gICAgYXNzZXJ0ICh0IDw9IG1heF92YWx1ZSlcbiAgOztcblxuICBsZXQgb2ZfaW50IGkgPVxuICAgIGludmFyaWFudCBpO1xuICAgIGlcbiAgOztcblxuICBsZXQgKCArICkgdDEgdDIgPVxuICAgIGxldCB0ID0gdDEgKyB0MiBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgKCAtICkgdDEgdDIgPVxuICAgIGxldCB0ID0gdDEgLSB0MiBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgcG93MiB0ID0gSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgdFxuZW5kXG5cbm1vZHVsZSBMZXZlbF9iaXRzID0gc3RydWN0XG4gIHR5cGUgdCA9IE51bV9rZXlfYml0cy50IGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWF4X251bV9iaXRzID0gKE51bV9rZXlfYml0cy5tYXhfdmFsdWUgOj4gaW50KVxuICBsZXQgbnVtX2JpdHNfaW50ZXJuYWwgdCA9IExpc3QuZm9sZCB0IH5pbml0Ok51bV9rZXlfYml0cy56ZXJvIH5mOk51bV9rZXlfYml0cy4oICsgKVxuICBsZXQgbnVtX2JpdHMgdCA9IChudW1fYml0c19pbnRlcm5hbCB0IDo+IGludClcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAobm90IChMaXN0LmlzX2VtcHR5IHQpKTtcbiAgICBMaXN0Lml0ZXIgdCB+ZjooZnVuIG51bV9rZXlfYml0cyAtPlxuICAgICAgTnVtX2tleV9iaXRzLmludmFyaWFudCBudW1fa2V5X2JpdHM7XG4gICAgICBhc3NlcnQgKE51bV9rZXlfYml0cy4oID4gKSBudW1fa2V5X2JpdHMgTnVtX2tleV9iaXRzLnplcm8pKTtcbiAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IChudW1fYml0c19pbnRlcm5hbCB0KVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHQgPSBzZXhwIHw+IFslb2Zfc2V4cDogdF0gaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9leG4gPyhleHRlbmRfdG9fbWF4X251bV9iaXRzID0gZmFsc2UpIGludHMgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50cyB0aGVuIGZhaWx3aXRoIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIHJlcXVpcmVzIGEgbm9uZW1wdHkgbGlzdFwiO1xuICAgIGlmIExpc3QuZXhpc3RzIGludHMgfmY6KGZ1biBiaXRzIC0+IGJpdHMgPD0gMClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biBnb3Qgbm9ucG9zaXRpdmUgbnVtIGJpdHNcIiB+XzooaW50cyA6IGludCBsaXN0KV07XG4gICAgbGV0IG51bV9iaXRzID0gTGlzdC5mb2xkIGludHMgfmluaXQ6MCB+ZjooICsgKSBpblxuICAgIGlmIG51bV9iaXRzID4gbWF4X251bV9iaXRzXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biBnb3QgdG9vIG1hbnkgYml0c1wiXG4gICAgICAgICAgICB+XzooaW50cyA6IGludCBsaXN0KVxuICAgICAgICAgICAgfmdvdDoobnVtX2JpdHMgOiBpbnQpXG4gICAgICAgICAgICAobWF4X251bV9iaXRzIDogaW50KV07XG4gICAgbGV0IGludHMgPVxuICAgICAgaWYgZXh0ZW5kX3RvX21heF9udW1fYml0c1xuICAgICAgdGhlbiBpbnRzIEAgTGlzdC5pbml0IChtYXhfbnVtX2JpdHMgLSBudW1fYml0cykgfmY6KGNvbnN0IDEpXG4gICAgICBlbHNlIGludHNcbiAgICBpblxuICAgIExpc3QubWFwIGludHMgfmY6TnVtX2tleV9iaXRzLm9mX2ludFxuICA7O1xuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biBbIDExOyAxMDsgMTA7IDEwOyAxMDsgMTA7IDEgXVxuXG4gIGxldCB0cmltIHQgfm1heF9udW1fYml0cyA9XG4gICAgaWYgTnVtX2tleV9iaXRzLiggPD0gKSAobnVtX2JpdHNfaW50ZXJuYWwgdCkgbWF4X251bV9iaXRzXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgdCB+cmVtYWluaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBiIDo6IHQgLT5cbiAgICAgICAgICBpZiBOdW1fa2V5X2JpdHMuKCA+PSApIGIgcmVtYWluaW5nXG4gICAgICAgICAgdGhlbiBbIHJlbWFpbmluZyBdXG4gICAgICAgICAgZWxzZSBiIDo6IGxvb3AgdCB+cmVtYWluaW5nOihOdW1fa2V5X2JpdHMuKCAtICkgcmVtYWluaW5nIGIpXG4gICAgICBpblxuICAgICAgbG9vcCB0IH5yZW1haW5pbmc6bWF4X251bV9iaXRzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybV9wcmVjaXNpb24gOiBzaWdcbiAgaW5jbHVkZSBBbGFybV9wcmVjaXNpb25cblxuICB2YWwgbnVtX2tleV9iaXRzIDogdCAtPiBOdW1fa2V5X2JpdHMudFxuICB2YWwgaW50ZXJ2YWxfbnVtIDogdCAtPiBUaW1lX25zLnQgLT4gSW50NjMudFxuICB2YWwgaW50ZXJ2YWxfbnVtX3N0YXJ0IDogdCAtPiBJbnQ2My50IC0+IFRpbWVfbnMudFxuZW5kID0gc3RydWN0XG4gICgqKiBbdF0gaXMgcmVwcmVzZW50ZWQgYXMgdGhlIGxvZzIgb2YgYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICopXG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgbGV0IG51bV9rZXlfYml0cyB0ID0gdCB8PiBOdW1fa2V5X2JpdHMub2ZfaW50XG5cbiAgbGV0IHRvX3NwYW4gdCA9XG4gICAgaWYgdCA8IDBcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW0FsYXJtX3ByZWNpc2lvbi50b19zcGFuXSBvZiBuZWdhdGl2ZSBwb3dlciBvZiB0d28gbmFub3NlY29uZHNcIiB+XzoodCA6IGludCldO1xuICAgIEludDYzLihzaGlmdF9sZWZ0IG9uZSkgdCB8PiBUaW1lX25zLlNwYW4ub2ZfaW50NjNfbnNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQgfD4gdG9fc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgbGV0IG9uZV9uYW5vc2Vjb25kID0gMFxuICBsZXQgYWJvdXRfb25lX21pY3Jvc2Vjb25kID0gMTBcbiAgbGV0IGFib3V0X29uZV9taWxsaXNlY29uZCA9IDIwXG4gIGxldCBhYm91dF9vbmVfc2Vjb25kID0gMzBcbiAgbGV0IGFib3V0X29uZV9kYXkgPSA0NlxuICBsZXQgbXVsIHQgfnBvdzIgPSB0ICsgcG93MlxuICBsZXQgZGl2IHQgfnBvdzIgPSB0IC0gcG93MlxuICBsZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9IEludDYzLnNoaWZ0X3JpZ2h0ICh0aW1lIHw+IFRpbWVfbnMudG9faW50NjNfbnNfc2luY2VfZXBvY2gpIHRcblxuICBsZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgaW50ZXJ2YWxfbnVtID1cbiAgICBJbnQ2My5zaGlmdF9sZWZ0IGludGVydmFsX251bSB0IHw+IFRpbWVfbnMub2ZfaW50NjNfbnNfc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgb2Zfc3Bhbl9mbG9vcl9wb3cyX25zIHNwYW4gPVxuICAgIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLm9mX3NwYW5fZmxvb3JfcG93Ml9uc10gZ290IG5vbi1wb3NpdGl2ZSBzcGFuXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgICBzcGFuIHw+IFRpbWVfbnMuU3Bhbi50b19pbnQ2M19ucyB8PiBJbnQ2My5mbG9vcl9sb2cyXG4gIDs7XG5cbiAgbGV0IG9mX3NwYW4gPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcblxuICBtb2R1bGUgVW5zdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3BhblxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zcGFuXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFRpbWVfbnMuU3BhbikgKFQpXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZSAoVGltZV9ucy5TcGFuKSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgbGV2ZWxfYml0c19kZWZhdWx0ID0gTGV2ZWxfYml0cy5kZWZhdWx0XG5cbiAgdHlwZSB0ID1cbiAgICB7IGFsYXJtX3ByZWNpc2lvbiA6IEFsYXJtX3ByZWNpc2lvbi5VbnN0YWJsZS50XG4gICAgOyBsZXZlbF9iaXRzIDogTGV2ZWxfYml0cy50IFtAZGVmYXVsdCBsZXZlbF9iaXRzX2RlZmF1bHRdXG4gICAgOyBjYXBhY2l0eSA6IGludCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBBbGFybV9wcmVjaXNpb24udG9fc3BhbiB0LmFsYXJtX3ByZWNpc2lvblxuXG4gICgqIFttYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbGV2ZWwgYml0cyBuZWVkZWQgZm9yIGFcbiAgICAgdGltaW5nIHdoZWVsIHdpdGggdGhlIHNwZWNpZmllZCBbYWxhcm1fcHJlY2lzaW9uXSB0byBiZSBhYmxlIHRvIHJlcHJlc2VudCBhbGxcbiAgICAgcG9zc2libGUgdGltZXMgZnJvbSBbVGltZV9ucy5lcG9jaF0gb253YXJkLiAgU2luY2Ugbm9uLW5lZ2F0aXZlIHRpbWVzIGhhdmUgNjIgYml0cyxcbiAgICAgd2UgcmVxdWlyZSBbTCA8PSA2MiAtIEFdLCB3aGVyZSBbQV0gaXMgdGhlIG51bWJlciBvZiBhbGFybSBiaXRzIGFuZCBbTF0gaXMgdGhlXG4gICAgIG51bWJlciBvZiBsZXZlbCBiaXRzLiAqKVxuICBsZXQgbWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbiA9XG4gICAgTnVtX2tleV9iaXRzLiggLSApXG4gICAgICBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgICAoQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIE51bV9rZXlfYml0cy4oIDw9IClcbiAgICAgICAgICAoTGV2ZWxfYml0cy5udW1fYml0c19pbnRlcm5hbCB0LmxldmVsX2JpdHMpXG4gICAgICAgICAgKG1heF9udW1fbGV2ZWxfYml0cyB0LmFsYXJtX3ByZWNpc2lvbikpO1xuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YWxhcm1fcHJlY2lzaW9uOmlnbm9yZVxuICAgICAgICB+Y2FwYWNpdHk6aWdub3JlXG4gICAgICAgIH5sZXZlbF9iaXRzOihjaGVjayBMZXZlbF9iaXRzLmludmFyaWFudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/Y2FwYWNpdHkgPyhsZXZlbF9iaXRzID0gbGV2ZWxfYml0c19kZWZhdWx0KSB+YWxhcm1fcHJlY2lzaW9uICgpID1cbiAgICBsZXQgbGV2ZWxfYml0cyA9XG4gICAgICBMZXZlbF9iaXRzLnRyaW0gbGV2ZWxfYml0cyB+bWF4X251bV9iaXRzOihtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uKVxuICAgIGluXG4gICAgeyBhbGFybV9wcmVjaXNpb247IGxldmVsX2JpdHM7IGNhcGFjaXR5IH1cbiAgOztcblxuICBsZXQgbWljcm9zZWNvbmRfcHJlY2lzaW9uICgpID1cbiAgICBjcmVhdGVcbiAgICAgICgpXG4gICAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWljcm9zZWNvbmRcbiAgICAgIH5sZXZlbF9iaXRzOihMZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMDsgMTA7IDY7IDY7IDUgXSlcbiAgOztcblxuICBsZXQgZHVyYXRpb25zIHQgPVxuICAgIExpc3QuZm9sZGluZ19tYXBcbiAgICAgIHQubGV2ZWxfYml0c1xuICAgICAgfmluaXQ6KEFsYXJtX3ByZWNpc2lvbi5udW1fa2V5X2JpdHMgdC5hbGFybV9wcmVjaXNpb24gfD4gTnVtX2tleV9iaXRzLnRvX2ludClcbiAgICAgIH5mOihmdW4gbnVtX2JpdHNfYWNjdW0gbGV2ZWxfbnVtX2JpdHMgLT5cbiAgICAgICAgbGV0IG51bV9iaXRzX2FjY3VtID0gbnVtX2JpdHNfYWNjdW0gKyAobGV2ZWxfbnVtX2JpdHMgfD4gTnVtX2tleV9iaXRzLnRvX2ludCkgaW5cbiAgICAgICAgbGV0IGR1cmF0aW9uID1cbiAgICAgICAgICBUaW1lX25zLlNwYW4ub2ZfaW50NjNfbnNcbiAgICAgICAgICAgIChpZiBudW1fYml0c19hY2N1bSA9IEludDYzLm51bV9iaXRzIC0gMVxuICAgICAgICAgICAgIHRoZW4gSW50NjMubWF4X3ZhbHVlXG4gICAgICAgICAgICAgZWxzZSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSBudW1fYml0c19hY2N1bSlcbiAgICAgICAgaW5cbiAgICAgICAgbnVtX2JpdHNfYWNjdW0sIGR1cmF0aW9uKVxuICA7O1xuZW5kXG5cblxuKCoqIFRpbWluZyB3aGVlbCBpcyBpbXBsZW1lbnRlZCBhcyBhIHByaW9yaXR5IHF1ZXVlIGluIHdoaWNoIHRoZSBrZXlzIGFyZVxuICAgIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnZhbHMgb2YgdGltZS4gIFRoZSBwcmlvcml0eSBxdWV1ZSBpc1xuICAgIHVubGlrZSBhIHR5cGljYWwgcHJpb3JpdHkgcXVldWUgaW4gdGhhdCByYXRoZXIgdGhhbiBoYXZpbmcgYSBcImRlbGV0ZSBtaW5cIiBvcGVyYXRpb24sXG4gICAgaXQgaGFzIGEgbm9uZGVjcmVhc2luZyBtaW5pbXVtIGFsbG93ZWQga2V5LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudCB0aW1lLFxuICAgIGFuZCBhbiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBvcGVyYXRpb24sIHdoaWNoIGltcGxlbWVudHMgW2FkdmFuY2VfY2xvY2tdLlxuICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGFzIGEgc2lkZSBlZmZlY3QgcmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgdGltaW5nXG4gICAgd2hlZWwgd2hvc2Uga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgbmV3IG1pbmltdW0sIHdoaWNoIGltcGxlbWVudHMgZmlyaW5nIHRoZSBhbGFybXNcbiAgICB3aG9zZSB0aW1lIGhhcyBleHBpcmVkLlxuXG4gICAgQWRkaW5nIGVsZW1lbnRzIHRvIGFuZCByZW1vdmluZyBlbGVtZW50cyBmcm9tIGEgdGltaW5nIHdoZWVsIHRha2VzIGNvbnN0YW50IHRpbWUsXG4gICAgdW5saWtlIGEgaGVhcC1iYXNlZCBwcmlvcml0eSBxdWV1ZSB3aGljaCB0YWtlcyBsb2coTiksIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZlxuICAgIGVsZW1lbnRzIGluIHRoZSBoZWFwLiAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlXG4gICAgYW1vdW50IG9mIGluY3JlYXNlIGluIHRoZSBtaW4tYWxsb3dlZCBrZXksIGFzIGNvbXBhcmVkIHRvIGxvZyhOKSBmb3IgYSBoZWFwLiAgSXQgaXNcbiAgICB0aGVzZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlcyB0aGF0IG1vdGl2YXRlIHRoZSBleGlzdGVuY2Ugb2YgdGltaW5nIHdoZWVscyBhbmQgbWFrZVxuICAgIHRoZW0gYSBnb29kIGNob2ljZSBmb3IgbWFpbnRhaW5nIGEgc2V0IG9mIGFsYXJtcy4gIFdpdGggYSB0aW1pbmcgd2hlZWwsIG9uZSBjYW5cbiAgICBzdXBwb3J0IGFueSBudW1iZXIgb2YgYWxhcm1zIHBheWluZyBjb25zdGFudCBvdmVyaGVhZCBwZXIgYWxhcm0sIHdoaWxlIHBheWluZyBhXG4gICAgc21hbGwgY29uc3RhbnQgb3ZlcmhlYWQgcGVyIHVuaXQgb2YgdGltZSBwYXNzZWQuXG5cbiAgICBBcyB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRoZSB0aW1pbmcgd2hlZWwgZG9lcyBhIGxhenkgcmFkaXggc29ydCBvZiB0aGVcbiAgICBlbGVtZW50IGtleXMsIHdpdGggbGV2ZWwgMCBoYW5kbGluZyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgW2JfMF0gYml0cyBpbiBhIGtleSwgYW5kXG4gICAgZWFjaCBzdWJzZXF1ZW50IGxldmVsIFtpXSBoYW5kbGluZyB0aGUgbmV4dCBtb3N0IHNpZ25pZmljYW50IFtiX2ldIGJpdHMuICBUaGUgbGV2ZWxzXG4gICAgaG9sZCBpbmNyZWFzaW5nbHkgbGFyZ2VyIHJhbmdlcyBvZiBrZXlzLCB3aGVyZSB0aGUgdW5pb24gb2YgYWxsIHRoZSBsZXZlbHMgY2FuIGhvbGRcbiAgICBhbnkga2V5IGZyb20gW21pbl9hbGxvd2VkX2tleSB0XSB0byBbbWF4X2FsbG93ZWRfa2V5IHRdLiAgV2hlbiBhIGtleSBpcyBhZGRlZCB0byB0aGVcbiAgICB0aW1pbmcgd2hlZWwsIGl0IGlzIGFkZGVkIGF0IHRoZSBsb3dlc3QgcG9zc2libGUgbGV2ZWwgdGhhdCBjYW4gc3RvcmUgdGhlIGtleS4gIEFzXG4gICAgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgaW5jcmVhc2VzLCB0aW1pbmctd2hlZWwgZWxlbWVudHMgbW92ZSBkb3duIGxldmVscyB1bnRpbCB0aGV5XG4gICAgcmVhY2ggbGV2ZWwgMCwgYW5kIHRoZW4gYXJlIGV2ZW50dWFsbHkgcmVtb3ZlZC4gICopXG5tb2R1bGUgUHJpb3JpdHlfcXVldWUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgcHJpb3JpdHlfcXVldWUgPSAnYSB0XG5cbiAgbW9kdWxlIEtleSA6IEludGVydmFsX251bVxuXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICAoKiogQW4gW0VsdC50XSByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCB3YXMgYWRkZWQgdG8gYSB0aW1pbmcgd2hlZWwuICopXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgYXQgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBrZXkgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIHZhbHVlIDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBudWxsIDogdW5pdCAtPiAnYSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICAgIHZhbCBtaW5fYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdG9fZXh0ZXJuYWwgOiAnYSB0IC0+ICdhIEVsdC50XG4gIGVuZFxuXG4gIHZhbCBwb29sIDogJ2EgdCAtPiAnYSBJbnRlcm5hbF9lbHQuUG9vbC50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICgqKiBbY3JlYXRlID9sZXZlbF9iaXRzICgpXSBjcmVhdGVzIGEgbmV3IGVtcHR5IHRpbWluZyB3aGVlbCwgW3RdLCB3aXRoIFtsZW5ndGggdCA9IDBdXG4gICAgICBhbmQgW21pbl9hbGxvd2VkX2tleSB0ID0gMF0uICopXG4gIHZhbCBjcmVhdGUgOiA/Y2FwYWNpdHk6aW50IC0+ID9sZXZlbF9iaXRzOkxldmVsX2JpdHMudCAtPiB1bml0IC0+ICdhIHRcblxuICAoKiogW2xlbmd0aCB0XSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcblxuICAoKiogW21pbl9hbGxvd2VkX2tleSB0XSBpcyB0aGUgbWluaW11bSBrZXkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIFt0XS4gIFRoaXMgb25seVxuICAgICAgaW5kaWNhdGVzIHRoZSBwb3NzaWJpbGl0eTsgdGhlcmUgbmVlZCBub3QgYmUgYW4gZWxlbWVudCBbZWx0XSBpbiBbdF0gd2l0aCBbRWx0LmtleVxuICAgICAgZWx0ID0gbWluX2FsbG93ZWRfa2V5IHRdLiAgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIFwibWluX2tleVwiIG9wZXJhdGlvbiBpbiBhXG4gICAgICB0eXBpY2FsIHByaW9yaXR5IHF1ZXVlLlxuXG4gICAgICBbbWluX2FsbG93ZWRfa2V5IHRdIGNhbiBpbmNyZWFzZSBvdmVyIHRpbWUsIHZpYSBjYWxscyB0b1xuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0uICopXG4gIHZhbCBtaW5fYWxsb3dlZF9rZXkgOiBfIHQgLT4gS2V5LnRcblxuICAoKiogW21heF9hbGxvd2VkX2tleSB0XSBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgQXNcbiAgICAgIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcywgc28gZG9lcyBbbWF4X2FsbG93ZWRfa2V5XTsgaG93ZXZlciBpdCBpcyBub3QgdGhlIGNhc2VcbiAgICAgIHRoYXQgW21heF9hbGxvd2VkX2tleSB0IC0gbWluX2FsbG93ZWRfa2V5IHRdIGlzIGEgY29uc3RhbnQuICBJdCBpcyBndWFyYW50ZWVkIHRoYXRcbiAgICAgIFttYXhfYWxsb3dlZF9rZXkgdCA+PSBtaW5fYWxsb3dlZF9rZXkgdCArIDJeQiAtIDFdLFxuICAgICAgd2hlcmUgW0JdIGlzIHRoZSBzdW0gb2YgdGhlIGJfaSBpbiBbbGV2ZWxfYml0c10uICopXG4gIHZhbCBtYXhfYWxsb3dlZF9rZXkgOiBfIHQgLT4gS2V5LnRcblxuICB2YWwgbWluX2VsdF8gOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC50XG4gIHZhbCBpbnRlcm5hbF9hZGQgOiAnYSB0IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gJ2EgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcblxuICAoKiogW3JlbW92ZSB0IGVsdF0gcmVtb3ZlcyBbZWx0XSBmcm9tIFt0XS4gIEl0IGlzIGFuIGVycm9yIGlmIFtlbHRdIGlzIG5vdCBjdXJyZW50bHlcbiAgICAgIGluIFt0XSwgYW5kIHRoaXMgZXJyb3IgbWF5IG9yIG1heSBub3QgYmUgZGV0ZWN0ZWQuICopXG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+ICdhIEVsdC50IC0+IHVuaXRcblxuICB2YWwgY2hhbmdlIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBrZXk6S2V5LnQgLT4gYXQ6VGltZV9ucy50IC0+IHVuaXRcblxuICAoKiogW2NsZWFyIHRdIHJlbW92ZXMgYWxsIGVsdHMgZnJvbSBbdF0uICopXG4gIHZhbCBjbGVhciA6IF8gdCAtPiB1bml0XG5cbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gYm9vbFxuXG4gIG1vZHVsZSBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkXG4gIGVuZFxuXG4gICgqKiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5IHQgfmtleSB+aGFuZGxlX3JlbW92ZWRdIGluY3JlYXNlcyB0aGUgbWluaW11bSBhbGxvd2VkXG4gICAgICBrZXkgaW4gW3RdIHRvIFtrZXldLCBhbmQgcmVtb3ZlcyBhbGwgZWxlbWVudHMgd2l0aCBrZXlzIGxlc3MgdGhhbiBba2V5XSwgYXBwbHlpbmdcbiAgICAgIFtoYW5kbGVfcmVtb3ZlZF0gdG8gZWFjaCBlbGVtZW50IHRoYXQgaXMgcmVtb3ZlZC4gIElmIFtrZXkgPD0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgdGhlbiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBkb2VzIG5vdGhpbmcuICBPdGhlcndpc2UsIGlmXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgW21pbl9hbGxvd2VkX2tleSB0ID0ga2V5XS5cblxuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gW2tleSAtIG1pbl9hbGxvd2VkX2tleSB0XSxcbiAgICAgIGFsdGhvdWdoIHBvc3NpYmx5IGxlc3MgdGltZS5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW2hhbmRsZV9yZW1vdmVkXSBhY2Nlc3NlcyBbdF0gaW4gYW55IHdheSBvdGhlciB0aGFuXG4gICAgICBbRWx0XSBmdW5jdGlvbnMuICopXG4gIHZhbCBpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICA6ICAnYSB0XG4gICAgLT4ga2V5OktleS50XG4gICAgLT4gaGFuZGxlX3JlbW92ZWQ6KCdhIEVsdC50IC0+IHVuaXQpXG4gICAgLT4gSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50XG5cbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIEVsdC50IC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgZmlyZV9wYXN0X2FsYXJtc1xuICAgIDogICdhIHRcbiAgICAtPiBoYW5kbGVfZmlyZWQ6KCdhIEVsdC50IC0+IHVuaXQpXG4gICAgLT4ga2V5OktleS50XG4gICAgLT4gbm93OlRpbWVfbnMudFxuICAgIC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICAoKiogRWFjaCBzbG90IGluIGEgbGV2ZWwgaXMgYSAocG9zc2libHkgbnVsbCkgcG9pbnRlciB0byBhIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgb2YgZWxlbWVudHMuICBXZSBwb29sIHRoZSBlbGVtZW50cyBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGVtIGFmdGVyIHRoZXkgYXJlIHJlbW92ZWRcbiAgICAgIGZyb20gdGhlIHRpbWluZyB3aGVlbCAoZWl0aGVyIHZpYSBbcmVtb3ZlXSBvciBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSkuICBJblxuICAgICAgYWRkaXRpb24gdG8gc3RvcmluZyB0aGUgW2tleV0sIFthdF0sIGFuZCBbdmFsdWVdIGluIHRoZSBlbGVtZW50LCB3ZSBzdG9yZSB0aGVcbiAgICAgIFtsZXZlbF9pbmRleF0gc28gdGhhdCB3ZSBjYW4gcXVpY2tseSBnZXQgdG8gdGhlIGxldmVsIGhvbGRpbmcgYW4gZWxlbWVudCB3aGVuIHdlXG4gICAgICBbcmVtb3ZlXSBpdC5cblxuICAgICAgV2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiBbRXh0ZXJuYWxfZWx0XSBhbmQgW0ludGVybmFsX2VsdF0sIHdoaWNoIGFyZSB0aGUgc2FtZVxuICAgICAgdW5kZXJuZWF0aC4gIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBhbiBbSW50ZXJuYWxfZWx0XSBpcyBlaXRoZXIgW251bGxdIG9yIGFcbiAgICAgIHZhbGlkIHBvaW50ZXIuICBPbiB0aGUgb3RoZXIgaGFuZCwgW0V4dGVybmFsX2VsdF1zIGFyZSByZXR1cm5lZCB0byB1c2VyIGNvZGUsIHNvXG4gICAgICB0aGVyZSBpcyBubyBndWFyYW50ZWUgb2YgdmFsaWRpdHkgLS0gd2UgYWx3YXlzIHZhbGlkYXRlIGFuIFtFeHRlcm5hbF9lbHRdIGJlZm9yZVxuICAgICAgZG9pbmcgYW55dGhpbmcgd2l0aCBpdC5cblxuICAgICAgSXQgaXMgdGhlcmVmb3JlIE9LIHRvIHVzZSBbUG9vbC5VbnNhZmVdLCBiZWNhdXNlIHdlIHdpbGwgbmV2ZXIgYXR0ZW1wdCB0byBhY2Nlc3MgYVxuICAgICAgc2xvdCBvZiBhbiBpbnZhbGlkIHBvaW50ZXIuICopXG4gIG1vZHVsZSBQb29sID0gUG9vbC5VbnNhZmVcblxuICBtb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAoKiogW0ludGVydmFsX251bV0gaXMgdGhlIHB1YmxpYyBBUEkuICBFdmVyeXRoaW5nIGZvbGxvd2luZyBpbiB0aGUgc2lnbmF0dXJlIGlzXG4gICAgICAgIGZvciBpbnRlcm5hbCB1c2UuICopXG4gICAgaW5jbHVkZSBUaW1pbmdfd2hlZWxfaW50Zi5JbnRlcnZhbF9udW1cblxuICAgICgqKiBbYWRkX2NsYW1wX3RvX21heF0gZG9lc24ndCB3b3JrIGF0IGFsbCB3aXRoIG5lZ2F0aXZlIHNwYW5zICopXG4gICAgdmFsIGFkZF9jbGFtcF90b19tYXggOiB0IC0+IFNwYW4udCAtPiB0XG5cbiAgICB2YWwgc3VjY19jbGFtcF90b19tYXggOiB0IC0+IHRcblxuICAgICgqKiBbU2xvdHNfbWFza10gaXMgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSBhIGtleSdzIHNsb3QgaW4gYSBnaXZlbiBsZXZlbC4gKilcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBjcmVhdGUgOiBsZXZlbF9iaXRzOk51bV9rZXlfYml0cy50IC0+IHRcbiAgICAgIHZhbCBuZXh0X3Nsb3QgOiB0IC0+IGludCAtPiBpbnRcbiAgICBlbmRcblxuICAgICgqKiBbTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza10gaXMgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgbWluaW11bSBrZXkgaW4gdGhlXG4gICAgICAgIHNhbWUgc2xvdCBhcyBhIGdpdmVuIGtleS4gKilcbiAgICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBjcmVhdGUgOiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCBudW1fa2V5cyA6IE51bV9rZXlfYml0cy50IC0+IFNwYW4udFxuICAgIHZhbCBtaW5fa2V5X2luX3NhbWVfc2xvdCA6IHQgLT4gTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50IC0+IHRcbiAgICB2YWwgc2xvdCA6IHQgLT4gYml0c19wZXJfc2xvdDpOdW1fa2V5X2JpdHMudCAtPiBzbG90c19tYXNrOlNsb3RzX21hc2sudCAtPiBpbnRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIFNsb3RzX21hc2sgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgbGV0IGNyZWF0ZSB+bGV2ZWxfYml0cyA9IEludDYzLiggLSApIChOdW1fa2V5X2JpdHMucG93MiBsZXZlbF9iaXRzKSBJbnQ2My5vbmVcbiAgICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gKHNsb3QgKyAxKSBsYW5kIEludDYzLnRvX2ludF9leG4gdFxuICAgIGVuZFxuXG4gICAgbGV0IG51bV9rZXlzIG51bV9iaXRzID0gTnVtX2tleV9iaXRzLnBvdzIgbnVtX2JpdHNcblxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCBjcmVhdGUgfmJpdHNfcGVyX3Nsb3QgPSBiaXRfbm90IChOdW1fa2V5X2JpdHMucG93MiBiaXRzX3Blcl9zbG90IC0gb25lKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICAgIGxldCBzY2FsZV9pbnQgdCBpID0gdCAqIG9mX2ludCBpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEludDYzXG5cbiAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICBsZXQgYWRkIHQgaSA9IHQgKyBpXG4gICAgbGV0IGFkZF9jbGFtcF90b19tYXggdCBpID0gaWYgdCA+IG1heF92YWx1ZSAtIGkgdGhlbiBtYXhfdmFsdWUgZWxzZSB0ICsgaVxuICAgIGxldCBzdWNjX2NsYW1wX3RvX21heCB0ID0gaWYgdCA9IG1heF92YWx1ZSB0aGVuIG1heF92YWx1ZSBlbHNlIHN1Y2MgdFxuICAgIGxldCBzdWIgdCBpID0gdCAtIGlcbiAgICBsZXQgZGlmZiB0MSB0MiA9IHQxIC0gdDJcblxuICAgIGxldCBzbG90IHQgfihiaXRzX3Blcl9zbG90IDogTnVtX2tleV9iaXRzLnQpIH5zbG90c19tYXNrID1cbiAgICAgIHRvX2ludF9leG4gKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0IHQgKGJpdHNfcGVyX3Nsb3QgOj4gaW50KSkgc2xvdHNfbWFzaylcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9XG4gICAgICBiaXRfYW5kIHQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gS2V5Lk1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgbW9kdWxlIFNsb3RzX21hc2sgPSBLZXkuU2xvdHNfbWFza1xuXG4gIG1vZHVsZSBFeHRlcm5hbF9lbHQgPSBzdHJ1Y3RcblxuICAgICgqKiBUaGUgW3Bvb2xfc2xvdHNdIGhlcmUgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgc2xvdHMgaW4gYSBsZXZlbCBhcnJheS4gIFRoaXMgaXNcbiAgICAgICAgZm9yIHRoZSBzbG90cyBpbiB0aGUgcG9vbCB0dXBsZSByZXByZXNlbnRpbmcgYSBsZXZlbCBlbGVtZW50LiAqKVxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9XG4gICAgICAoIEtleS50XG4gICAgICAsIFRpbWVfbnMudFxuICAgICAgLCAnYVxuICAgICAgLCBpbnRcbiAgICAgICwgJ2EgcG9vbF9zbG90cyBQb2ludGVyLnRcbiAgICAgICwgJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgKVxuICAgICAgICBQb29sLlNsb3RzLnQ2XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IFBvaW50ZXIubnVsbFxuICBlbmRcblxuICBtb2R1bGUgSW50ZXJuYWxfZWx0IDogc2lnXG4gICAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICAgIHZhbCBjcmVhdGUgOiA/Y2FwYWNpdHk6aW50IC0+IHVuaXQgLT4gXyB0XG4gICAgICB2YWwgaXNfZnVsbCA6IF8gdCAtPiBib29sXG4gICAgICB2YWwgZ3JvdyA6ID9jYXBhY2l0eTppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSBwcml2YXRlICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc192YWxpZCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGJvb2xcblxuICAgICgqKiBEZWFsaW5nIHdpdGggW0V4dGVybmFsX2VsdF1zLiAqKVxuXG4gICAgdmFsIGV4dGVybmFsX2lzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+IGJvb2xcbiAgICB2YWwgdG9fZXh0ZXJuYWwgOiAnYSB0IC0+ICdhIEV4dGVybmFsX2VsdC50XG4gICAgdmFsIG9mX2V4dGVybmFsX2V4biA6ICdhIFBvb2wudCAtPiAnYSBFeHRlcm5hbF9lbHQudCAtPiAnYSB0XG4gICAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaW52YXJpYW50IDogJ2EgUG9vbC50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbY3JlYXRlXSByZXR1cm5zIGFuIGVsZW1lbnQgd2hvc2UgW25leHRdIGFuZCBbcHJldl0gYXJlIFtudWxsXS4gKilcbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICAnYSBQb29sLnRcbiAgICAgIC0+IGtleTpLZXkudFxuICAgICAgKCoqIFthdF0gaXMgdXNlZCB3aGVuIHRoZSBwcmlvcml0eSBxdWV1ZSBpcyB1c2VkIHRvIGltcGxlbWVudCBhIHRpbWluZyB3aGVlbC4gIElmXG4gICAgICAgICAgdW51c2VkLCBpdCB3aWxsIGJlIFtUaW1lX25zLmVwb2NoXS4gKilcbiAgICAgIC0+IGF0OlRpbWVfbnMudFxuICAgICAgLT4gdmFsdWU6J2FcbiAgICAgIC0+IGxldmVsX2luZGV4OmludFxuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGZyZWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogYWNjZXNzb3JzICopXG5cbiAgICB2YWwga2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnRcbiAgICB2YWwgbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgbmV4dCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdmFsdWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiAnYVxuXG4gICAgKCoqIG11dGF0b3JzICopXG5cbiAgICB2YWwgc2V0X2tleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50IC0+IHVuaXRcbiAgICB2YWwgc2V0X2F0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gVGltZV9ucy50IC0+IHVuaXRcbiAgICB2YWwgc2V0X2xldmVsX2luZGV4IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50IC0+IHVuaXRcblxuICAgICgqKiBbaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZF0gdHJlYXRzIFt0XSBhcyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBhbmQgYWRkcyBbdG9fYWRkXVxuICAgICAgICB0byB0aGUgZW5kIG9mIGl0LiAqKVxuICAgIHZhbCBpbnNlcnRfYXRfZW5kIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdG9fYWRkOidhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtsaW5rX3RvX3NlbGYgcG9vbCB0XSBtYWtlcyBbdF0gYmUgYSBzaW5nbGV0b24gY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0LiAqKVxuICAgIHZhbCBsaW5rX3RvX3NlbGYgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogW3VubGluayBwIHRdIHVubGlua3MgW3RdIGZyb20gdGhlIGNpcmN1bGFybHkgZG91Ymx5LWxpbmtlZCBsaXN0IHRoYXQgaXQgaXMgaW4uICBJdFxuICAgICAgICBjaGFuZ2VzIHRoZSBwb2ludGVycyBvZiBbdF0ncyBbcHJldl0gYW5kIFtuZXh0XSBlbHRzLCBidXQgbm90IFt0XSdzIFtwcmV2XSBhbmRcbiAgICAgICAgW25leHRdIHBvaW50ZXJzLiAgW3VubGlua10gaXMgbWVhbmluZ2xlc3MgaWYgW3RdIGlzIGEgc2luZ2xldG9uLiAqKVxuICAgIHZhbCB1bmxpbmsgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogSXRlcmF0b3JzLiAgW2l0ZXIgcCB0IH5pbml0IH5mXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgICAgY29udGFpbmluZyBbdF0sIHN0YXJ0aW5nIGF0IFt0XSwgYW5kIGZvbGxvd2luZyBbbmV4dF0gcG9pbnRlcnMuICBbbGVuZ3RoXSBjb3VudHNcbiAgICAgICAgYnkgdmlzaXRpbmcgZWFjaCBlbGVtZW50IGluIHRoZSBsaXN0LiAqKVxuICAgIHZhbCBpdGVyIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gZjooJ2EgdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgbGVuZ3RoIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50XG5cbiAgICAoKiogW21heF9hbGFybV90aW1lIHQgZWx0IH53aXRoX2tleV0gZmluZHMgdGhlIG1heCBbYXRdIGluIFtlbHRdJ3MgbGlzdCBhbW9uZyB0aGUgZWx0c1xuICAgICAgICB3aG9zZSBrZXkgaXMgW3dpdGhfa2V5XSwgcmV0dXJuaW5nIFtUaW1lX25zLmVwb2NoXSBpZiB0aGUgbGlzdCBpcyBlbXB0eS4gKilcbiAgICB2YWwgbWF4X2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcblxuICAgIHZhbCBtaW5fYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHBvb2xfc2xvdHMgPSAnYSBFeHRlcm5hbF9lbHQucG9vbF9zbG90cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgJ2EgdCA9ICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IFBvaW50ZXIubnVsbFxuICAgIGxldCBpc19udWxsID0gUG9pbnRlci5pc19udWxsXG4gICAgbGV0IGVxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxIHQyXG5cbiAgICBsZXQgY3JlYXRlIHBvb2wgfmtleSB+YXQgfnZhbHVlIH5sZXZlbF9pbmRleCA9XG4gICAgICBQb29sLm5ldzYgcG9vbCBrZXkgYXQgdmFsdWUgbGV2ZWxfaW5kZXggKG51bGwgKCkpIChudWxsICgpKVxuICAgIDs7XG5cbiAgICBsZXQgZnJlZSA9IFBvb2wuZnJlZVxuICAgIGxldCBrZXkgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MFxuICAgIGxldCBzZXRfa2V5IHAgdCBrID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MCBrXG4gICAgbGV0IGF0IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDFcbiAgICBsZXQgc2V0X2F0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MSB4XG4gICAgbGV0IHZhbHVlIHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDJcbiAgICBsZXQgbGV2ZWxfaW5kZXggcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50M1xuICAgIGxldCBzZXRfbGV2ZWxfaW5kZXggcCB0IGkgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQzIGlcbiAgICBsZXQgcHJldiBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ0XG4gICAgbGV0IHNldF9wcmV2IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NCB4XG4gICAgbGV0IG5leHQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50NVxuICAgIGxldCBzZXRfbmV4dCBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDUgeFxuICAgIGxldCBpc192YWxpZCBwIHQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgcCB0XG4gICAgbGV0IGV4dGVybmFsX2lzX3ZhbGlkID0gaXNfdmFsaWRcblxuICAgIGxldCBpbnZhcmlhbnQgcG9vbCBpbnZhcmlhbnRfYSB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICAgIGFzc2VydCAoaXNfdmFsaWQgcG9vbCB0KTtcbiAgICAgICAgaW52YXJpYW50X2EgKHZhbHVlIHBvb2wgdCk7XG4gICAgICAgIGxldCBuID0gbmV4dCBwb29sIHQgaW5cbiAgICAgICAgYXNzZXJ0IChpc19udWxsIG4gfHwgUG9pbnRlci5waHlzX2VxdWFsIHQgKHByZXYgcG9vbCBuKSk7XG4gICAgICAgIGxldCBwID0gcHJldiBwb29sIHQgaW5cbiAgICAgICAgYXNzZXJ0IChpc19udWxsIHAgfHwgUG9pbnRlci5waHlzX2VxdWFsIHQgKG5leHQgcG9vbCBwKSkpXG4gICAgOztcblxuICAgIG1vZHVsZSBQb29sID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBwb29sX3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbiAgICAgIGxldCBjcmVhdGUgPyhjYXBhY2l0eSA9IDEpICgpID0gUG9vbC5jcmVhdGUgUG9vbC5TbG90cy50NiB+Y2FwYWNpdHlcbiAgICAgIGxldCBncm93ID0gUG9vbC5ncm93XG4gICAgICBsZXQgaXNfZnVsbCA9IFBvb2wuaXNfZnVsbFxuICAgIGVuZFxuXG4gICAgbGV0IHRvX2V4dGVybmFsIHQgPSB0XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWxfZXhuIHBvb2wgdCA9XG4gICAgICBpZiBpc192YWxpZCBwb29sIHQgdGhlbiB0IGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwgZ290IGludmFsaWQgYWxhcm1cIl1cbiAgICA7O1xuXG4gICAgbGV0IHVubGluayBwb29sIHQgPVxuICAgICAgc2V0X25leHQgcG9vbCAocHJldiBwb29sIHQpIChuZXh0IHBvb2wgdCk7XG4gICAgICBzZXRfcHJldiBwb29sIChuZXh0IHBvb2wgdCkgKHByZXYgcG9vbCB0KVxuICAgIDs7XG5cbiAgICBsZXQgbGluayBwb29sIHByZXYgbmV4dCA9XG4gICAgICBzZXRfbmV4dCBwb29sIHByZXYgbmV4dDtcbiAgICAgIHNldF9wcmV2IHBvb2wgbmV4dCBwcmV2XG4gICAgOztcblxuICAgIGxldCBsaW5rX3RvX3NlbGYgcG9vbCB0ID0gbGluayBwb29sIHQgdFxuXG4gICAgbGV0IGluc2VydF9hdF9lbmQgcG9vbCB0IH50b19hZGQgPVxuICAgICAgbGV0IHByZXYgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgbGluayBwb29sIHByZXYgdG9fYWRkO1xuICAgICAgbGluayBwb29sIHRvX2FkZCB0XG4gICAgOztcblxuICAgIGxldCBpdGVyIHBvb2wgZmlyc3QgfmYgPVxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgKCogV2UgZ2V0IFtuZXh0XSBiZWZvcmUgY2FsbGluZyBbZl0gc28gdGhhdCBbZl0gY2FuIG1vZGlmeSBvciBbZnJlZV0gWyFjdXJyZW50XS4gKilcbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgZiAhY3VycmVudDtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCBwb29sIGZpcnN0ID1cbiAgICAgIGxldCByID0gcmVmIDAgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGluY3IgcjtcbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhclxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1heF9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMuZXBvY2ggaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGlmIEtleS5lcXVhbCAoa2V5IHBvb2wgIWN1cnJlbnQpIHdpdGhfa2V5XG4gICAgICAgIHRoZW4gbWF4X2FsYXJtX3RpbWUgOj0gVGltZV9ucy5tYXggKGF0IHBvb2wgIWN1cnJlbnQpICFtYXhfYWxhcm1fdGltZTtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhbWF4X2FsYXJtX3RpbWVcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9hbGFybV90aW1lIHBvb2wgZmlyc3QgfndpdGhfa2V5ID1cbiAgICAgIGxldCBtaW5fYWxhcm1fdGltZSA9IHJlZiBUaW1lX25zLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAoKiBUaGUgW2tleV0gY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkgZm9yIFttYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxdIGJlY2F1c2VcbiAgICAgICAgICAgbWF4IHRpbWUgcGVyIGludGVydmFsIGlzIG5vdCB0aGUgc2FtZSBhcyBtYXggdGltZSBnbG9iYWxseS5cblxuICAgICAgICAgICBUaGlzIGlzIG5vdCBzbyBmb3IgW21pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0sIHNvIHRoaXMgY2FuIHBvdGVudGlhbGx5XG4gICAgICAgICAgIGJlIHNpbXBsaWZpZWQuXG5cbiAgICAgICAgICAgUHJvYmFibHkgYSBiZXR0ZXIgY2hhbmdlIHdvdWxkIGJlIHRvIHNpbXBseSB0cmFuc2ZlciB0aGUgZXZlbnRzIHRvIHRoZVxuICAgICAgICAgICBcImZpcmVkXCIgY29sbGVjdGlvbiAoYW5kIHJlbmFtZSBpdCB0byBcImFib3V0IHRvIGZpcmVcIiksIHdoaWNoIGlzIHNvcnRlZCBieSB0aW1lLFxuICAgICAgICAgICBzbyBnZXR0aW5nIHRoZSBmaXJzdCBlbGVtZW50IGZyb20gdGhhdCBjb2xsZWN0aW9uIGlzIGVmZmljaWVudC5cbiAgICAgICAgKilcbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtaW5fYWxhcm1fdGltZSA6PSBUaW1lX25zLm1pbiAoYXQgcG9vbCAhY3VycmVudCkgIW1pbl9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtaW5fYWxhcm1fdGltZVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBMZXZlbCA9IHN0cnVjdFxuICAgICgqKiBGb3IgZ2l2ZW4gbGV2ZWwsIG9uZSBjYW4gYnJlYWsgdGhlIGJpdHMgaW50byBhIGtleSBpbnRvIHRocmVlIHJlZ2lvbnM6XG5cbiAgICAgICAge3ZcbiAgICAgICAgIHwgaGlnaGVyIGxldmVscyB8IHRoaXMgbGV2ZWwgfCBsb3dlciBsZXZlbHMgfFxuICAgICAgICB2fVxuXG4gICAgICAgIFwiTG93ZXIgbGV2ZWxzXCIgaXMgW2JpdHNfcGVyX3Nsb3RdIGJpdHMgd2lkZS4gIFwiVGhpcyBsZXZlbFwiIGlzIFtiaXRzXSB3aWRlLiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7ICgqIFRoZSBbaW5kZXhdIGluIHRoZSB0aW1pbmcgd2hlZWwncyBhcnJheSBvZiBsZXZlbHMgd2hlcmUgdGhpcyBsZXZlbCBpcy4gKilcbiAgICAgICAgaW5kZXggOiBpbnRcbiAgICAgIDsgKCogSG93IG1hbnkgW2JpdHNdIHRoaXMgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yLiAqKVxuICAgICAgICBiaXRzIDogTnVtX2tleV9iaXRzLnRcbiAgICAgIDsgKCogW3Nsb3RzX21hc2sgPSBTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0czp0LmJpdHNdLiAqKVxuICAgICAgICBzbG90c19tYXNrIDogU2xvdHNfbWFzay50XG4gICAgICA7ICgqIFtiaXRzX3Blcl9zbG90XSBpcyBob3cgbWFueSBiaXRzIGVhY2ggc2xvdCBkaXN0aW5ndWlzaGVzLCBhbmQgaXMgdGhlIHN1bSBvZiBvZlxuICAgICAgICAgICB0aGUgW2JpdHNdIG9mIGFsbCB0aGUgbG93ZXIgbGV2ZWxzLiAqKVxuICAgICAgICBiaXRzX3Blcl9zbG90IDogTnVtX2tleV9iaXRzLnRcbiAgICAgIDsga2V5c19wZXJfc2xvdCA6IEtleS5TcGFuLnRcbiAgICAgIDsgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA6IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sudFxuICAgICAgOyAoKiBbZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID0ga2V5c19wZXJfc2xvdCAqIEFycmF5Lmxlbmd0aCBzbG90cyAtIDFdICopXG4gICAgICAgIGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA6IEtleS5TcGFuLnRcbiAgICAgIDsgKCogW2xlbmd0aF0gaXMgdGhlIG51bWJlciBvZiBlbHRzIGN1cnJlbnRseSBpbiB0aGlzIGxldmVsLiAqKVxuICAgICAgICBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgICAgOyAoKiBBbGwgZWxlbWVudHMgYXQgdGhpcyBsZXZlbCBoYXZlIHRoZWlyIFtrZXldIHNhdGlzZnkgW21pbl9hbGxvd2VkX2tleSA8PSBrZXkgPD1cbiAgICAgICAgICAgbWF4X2FsbG93ZWRfa2V5XS4gIEFsc28sIFttaW5fYWxsb3dlZF9rZXldIGlzIGEgbXVsdGlwbGUgb2YgW2tleXNfcGVyX3Nsb3RdLiAqKVxuICAgICAgICBtdXRhYmxlIG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG11dGFibGUgbWF4X2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgKCogW3Nsb3RzXSBob2xkcyB0aGUgKHBvc3NpYmx5IG51bGwpIHBvaW50ZXJzIHRvIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RzXG4gICAgICAgICAgIG9mIGVsdHMuICBbQXJyYXkubGVuZ3RoIHNsb3RzID0gMSBsc2wgYml0c10uICopXG4gICAgICAgIHNsb3RzIDogKCdhIEludGVybmFsX2VsdC50IGFycmF5W0BzZXhwLm9wYXF1ZV0pXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNsb3QgdCB+a2V5ID0gS2V5LnNsb3Qga2V5IH5iaXRzX3Blcl9zbG90OnQuYml0c19wZXJfc2xvdCB+c2xvdHNfbWFzazp0LnNsb3RzX21hc2tcbiAgICBsZXQgbmV4dF9zbG90IHQgc2xvdCA9IFNsb3RzX21hc2submV4dF9zbG90IHQuc2xvdHNfbWFzayBzbG90XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCB+a2V5ID1cbiAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBrZXkgdC5taW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcblxuICAgIGxldCBjb21wdXRlX21pbl9hbGxvd2VkX2tleSB0IH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA9XG4gICAgICAoKiBUaGlzIGNvbXB1dGF0aW9uIGVuc3VyZXMgdGhhdCBbdF0ncyBbbWluX2FsbG93ZWRfa2V5XSBpcyBhcyBsYXJnZSBhcyBwb3NzaWJsZVxuICAgICAgICAgc3ViamVjdCB0byB0aGUgY29uc3RyYWludCB0aGF0IHRoZXJlIGlzIG5vIGludGVyLWxldmVsIGdhcC4gKilcbiAgICAgIGlmIEtleS5lcXVhbCBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSBLZXkubWF4X3ZhbHVlXG4gICAgICB0aGVuIEtleS5tYXhfdmFsdWVcbiAgICAgIGVsc2UgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCB+a2V5OihLZXkuc3VjYyBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSlcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgcG9vbCA6ICdhIEludGVybmFsX2VsdC5Qb29sLnRcbiAgICA7ICgqIFttaW5fZWx0XSBpcyBlaXRoZXIgbnVsbCBvciBhbiBlbGVtZW50IHdob3NlIGtleSBpcyBbZWx0X2tleV9sb3dlcl9ib3VuZF0uICopXG4gICAgICBtdXRhYmxlIG1pbl9lbHQgOiAnYSBJbnRlcm5hbF9lbHQudFxuICAgIDsgKCogQWxsIGVsZW1lbnRzIGluIHRoZSBwcmlvcml0eSBxdWV1ZSBoYXZlIHRoZWlyIGtleSBbPj0gZWx0X2tleV9sb3dlcl9ib3VuZF0uICopXG4gICAgICBtdXRhYmxlIGVsdF9rZXlfbG93ZXJfYm91bmQgOiBLZXkudFxuICAgIDsgbGV2ZWxzIDogJ2EgTGV2ZWwudCBhcnJheVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgcHJpb3JpdHlfcXVldWUgPSAnYSB0XG5cbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IEV4dGVybmFsX2VsdC5udWxsXG4gICAgbGV0IGF0IHAgdCA9IEludGVybmFsX2VsdC5hdCBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gICAgbGV0IGtleSBwIHQgPSBJbnRlcm5hbF9lbHQua2V5IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQgdmFsdWUgcCB0ID0gSW50ZXJuYWxfZWx0LnZhbHVlIHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxuICBsZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuICBsZXQgbnVtX2xldmVscyB0ID0gQXJyYXkubGVuZ3RoIHQubGV2ZWxzXG4gIGxldCBtaW5fYWxsb3dlZF9rZXkgdCA9IExldmVsLm1pbl9hbGxvd2VkX2tleSB0LmxldmVscy4oMClcbiAgbGV0IG1heF9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLihudW1fbGV2ZWxzIHQgLSAxKVxuXG4gIGxldCBpbnRlcm5hbF9pdGVyIHQgfmYgPVxuICAgIGlmIHQubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgZm9yIGxldmVsX2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggbGV2ZWxzIC0gMSBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgZm9yIHNsb3RfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBzbG90cyAtIDEgZG9cbiAgICAgICAgICAgIGxldCBlbHQgPSBzbG90cy4oc2xvdF9pbmRleCkgaW5cbiAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KSB0aGVuIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mXG4gICAgICAgICAgZG9uZSlcbiAgICAgIGRvbmUpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9IGludGVybmFsX2l0ZXIgdCB+ZjooZiA6IF8gRWx0LnQgLT4gdW5pdCA6PiBfIEludGVybmFsX2VsdC50IC0+IHVuaXQpXG5cbiAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsga2V5IDogS2V5LnRcbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtaW5fYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBlbHRzIDogJ2EgRWx0LnQgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBwcmV0dHkgdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICB7IFByZXR0eS5taW5fYWxsb3dlZF9rZXkgPSBtaW5fYWxsb3dlZF9rZXkgdFxuICAgIDsgbWF4X2FsbG93ZWRfa2V5ID0gbWF4X2FsbG93ZWRfa2V5IHRcbiAgICA7IGVsdHMgPVxuICAgICAgICAobGV0IHIgPSByZWYgW10gaW5cbiAgICAgICAgIGludGVybmFsX2l0ZXIgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICByXG4gICAgICAgICAgIDo9IHsgUHJldHR5LkVsdC5rZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0XG4gICAgICAgICAgICAgIDsgdmFsdWUgPSBJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiAhcik7XG4gICAgICAgICBMaXN0LnJldiAhcilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggIXNleHBfb2ZfdF9zdHlsZSB3aXRoXG4gICAgfCBgSW50ZXJuYWwgLT4gWyVzZXhwICh0IDogYSB0X2ludGVybmFsKV1cbiAgICB8IGBQcmV0dHkgLT4gWyVzZXhwIChwcmV0dHkgdCA6IGEgUHJldHR5LnQpXVxuICA7O1xuXG4gIGxldCBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdCA9XG4gICAgbGV0IGJpdHMgPSBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90IGluXG4gICAgaWYgTnVtX2tleV9iaXRzLmVxdWFsIGJpdHMgTnVtX2tleV9iaXRzLm1heF92YWx1ZVxuICAgIHRoZW4gS2V5LlNwYW4ubWF4X3ZhbHVlXG4gICAgZWxzZSBLZXkuU3Bhbi5wcmVkIChLZXkubnVtX2tleXMgYml0cylcbiAgOztcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBsZXZlbF9pbnZhcmlhbnQgbGV2ZWwgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIGxldmVsIFslc2V4cF9vZjogXyBMZXZlbC50XSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIGxldmVsIGYgaW5cbiAgICAgICAgTGV2ZWwuRmllbGRzLml0ZXJcbiAgICAgICAgICB+aW5kZXg6KGNoZWNrIChmdW4gaW5kZXggLT4gYXNzZXJ0IChpbmRleCA+PSAwKSkpXG4gICAgICAgICAgfmJpdHM6KGNoZWNrIChmdW4gYml0cyAtPiBhc3NlcnQgKE51bV9rZXlfYml0cy4oID4gKSBiaXRzIE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfnNsb3RzX21hc2s6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBTbG90c19tYXNrLnRdXG4gICAgICAgICAgICAgICAgICB+ZXhwZWN0OihTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0czpsZXZlbC5iaXRzKSkpXG4gICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBiaXRzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKE51bV9rZXlfYml0cy4oID49ICkgYml0c19wZXJfc2xvdCBOdW1fa2V5X2JpdHMuemVybykpKVxuICAgICAgICAgIH5rZXlzX3Blcl9zbG90OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4ga2V5c19wZXJfc2xvdCAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAga2V5c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkubnVtX2tleXMgbGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5taW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5lcXVhbFxuICAgICAgICAgICAgICAgICAgIG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICAgICAoTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5jcmVhdGUgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKSlcbiAgICAgICAgICB+ZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgIChjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICB+bGV2ZWxfYml0czpsZXZlbC5iaXRzXG4gICAgICAgICAgICAgICAgICAgICAgIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgICAgICAgICAgICAgICAgPSBBcnJheS5mb2xkIGxldmVsLnNsb3RzIH5pbml0OjAgfmY6KGZ1biBuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICAgICAgICAgICAgICAgICAgIHRoZW4gblxuICAgICAgICAgICAgICAgICAgIGVsc2UgbiArIEludGVybmFsX2VsdC5sZW5ndGggcG9vbCBlbHQpKSkpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIG1pbl9hbGxvd2VkX2tleSBLZXkuemVybyk7XG4gICAgICAgICAgICAgICBpZiBLZXkuKCA8ICkgbWluX2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoS2V5LnJlbSBtaW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OktleS5TcGFuLnplcm8pKVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAoS2V5LmFkZF9jbGFtcF90b19tYXhcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpKSlcbiAgICAgICAgICB+c2xvdHM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBzbG90cyAtPlxuICAgICAgICAgICAgICAgQXJyYXkuaXRlciBzbG90cyB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmludmFyaWFudCBwb29sIGludmFyaWFudF9hIGVsdDtcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBsZXZlbC5taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBsZXZlbC5tYXhfYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQgPSBsZXZlbC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICBpbnZhcmlhbnRfYSAoSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0KSkpKSkpKVxuICAgIGluXG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRfaW50ZXJuYWxdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtaW5fYWxsb3dlZF9rZXkgdCkgS2V5Lnplcm8pO1xuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtYXhfYWxsb3dlZF9rZXkgdCkgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICAgIH5wb29sOihjaGVjayAoSW50ZXJuYWxfZWx0LlBvb2wuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICAgIH5taW5fZWx0OlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF8gLT5cbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdF8pXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5pc192YWxpZCB0LnBvb2wgZWx0Xyk7XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCB0LmVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdF8pKSkpKVxuICAgICAgICB+ZWx0X2tleV9sb3dlcl9ib3VuZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfa2V5X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1heF9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuZXF1YWwgZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgdC5taW5fZWx0KSkpKVxuICAgICAgICB+bGV2ZWxzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxldmVscyAtPlxuICAgICAgICAgICAgIGFzc2VydCAobnVtX2xldmVscyB0ID4gMCk7XG4gICAgICAgICAgICAgQXJyYXkuaXRlcmkgbGV2ZWxzIH5mOihmdW4gbGV2ZWxfaW5kZXggbGV2ZWwgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobGV2ZWxfaW5kZXggPSBMZXZlbC5pbmRleCBsZXZlbCk7XG4gICAgICAgICAgICAgICBsZXZlbF9pbnZhcmlhbnQgbGV2ZWw7XG4gICAgICAgICAgICAgICBpZiBsZXZlbF9pbmRleCA+IDBcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICBsZXQgcHJldl9sZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXggLSAxKSBpblxuICAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEwgPSBMZXZlbCBpblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChMLmtleXNfcGVyX3Nsb3QgbGV2ZWwpXG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDooS2V5LlNwYW4uc3VjYyBwcmV2X2xldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgICAoTGV2ZWwuY29tcHV0ZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXk6cHJldl9sZXZlbC5tYXhfYWxsb3dlZF9rZXkpKSkpKSlcbiAgOztcblxuICAoKiogW21pbl9lbHRfXSByZXR1cm5zIFtudWxsXSBpZiBpdCBjYW4ndCBmaW5kIHRoZSBkZXNpcmVkIGVsZW1lbnQuICBXZSB3cmFwIGl0IHVwXG4gICAgICBhZnRlcndhcmRzIHRvIHJldHVybiBhbiBbb3B0aW9uXS4gKilcbiAgbGV0IG1pbl9lbHRfIHQgPVxuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgZWxzZSBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICB0aGVuIHQubWluX2VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBtaW5fZWx0X2FscmVhZHlfZm91bmQgPSByZWYgKEludGVybmFsX2VsdC5udWxsICgpKSBpblxuICAgICAgbGV0IG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA9IHJlZiBLZXkubWF4X3ZhbHVlIGluXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKCFsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgS2V5LiggPiApIChMZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwpICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgYW55IG1vcmUgbGV2ZWxzLiAgUXVpdCB0aGUgbG9vcC4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzXG4gICAgICAgIGVsc2UgaWYgbGV2ZWwubGVuZ3RoID0gMFxuICAgICAgICB0aGVuIGluY3IgbGV2ZWxfaW5kZXhcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogTG9vayBpbiBbbGV2ZWxdLiAqKVxuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgbGV0IHNsb3RfbWluX2tleSA9XG4gICAgICAgICAgICByZWZcbiAgICAgICAgICAgICAgKExldmVsLm1pbl9rZXlfaW5fc2FtZV9zbG90XG4gICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICAgICAgIH5rZXk6KEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc2xvdCA9IHJlZiAoTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OiFzbG90X21pbl9rZXkpIGluXG4gICAgICAgICAgKCogRmluZCB0aGUgZmlyc3Qgbm9uZW1wdHkgc2xvdCB3aXRoIGEgc21hbGwgZW5vdWdoIFtzbG90X21pbl9rZXldLiAqKVxuICAgICAgICAgIHdoaWxlXG4gICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXNfbnVsbCBzbG90cy4oIXNsb3QpXG4gICAgICAgICAgICAmJiBLZXkuKCA8ICkgIXNsb3RfbWluX2tleSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgICAgZG9cbiAgICAgICAgICAgIHNsb3QgOj0gTGV2ZWwubmV4dF9zbG90IGxldmVsICFzbG90O1xuICAgICAgICAgICAgc2xvdF9taW5fa2V5IDo9IEtleS5hZGQgIXNsb3RfbWluX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90XG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgZmlyc3QgPSBzbG90cy4oIXNsb3QpIGluXG4gICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFZpc2l0IGFsbCBvZiB0aGUgZWx0cyBpbiB0aGlzIHNsb3QgYW5kIGZpbmQgb25lIHdpdGggbWluaW11bSBrZXkuICopXG4gICAgICAgICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgICAgICBsZXQgY3VycmVudF9rZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgaWYgS2V5LiggPD0gKSBjdXJyZW50X2tleSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA6PSAhY3VycmVudDtcbiAgICAgICAgICAgICAgICBtaW5fa2V5X2FscmVhZHlfZm91bmQgOj0gY3VycmVudF9rZXkpO1xuICAgICAgICAgICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgKCogSWYgWyFsZXZlbF9pbmRleCA9IDBdIHRoZW4gYWxsIGVsdHMgaW4gdGhpcyBzbG90IGhhdmUgdGhlIHNhbWUgW2tleV0sXG4gICAgICAgICAgICAgICAgIGkuZS4gWyFzbG90X21pbl9rZXldLiAgU28sIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55IGVsZW1lbnRzIGFmdGVyXG4gICAgICAgICAgICAgICAgIFtmaXJzdF0uICBUaGlzIGlzIGEgdXNlZnVsIHNob3J0IGN1dCBpbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGVyZSBhcmVcbiAgICAgICAgICAgICAgICAgbXVsdGlwbGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgbWluIHNsb3QgaW4gbGV2ZWwgMC4gKilcbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHx8ICFsZXZlbF9pbmRleCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgICAgICAgICBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgICAgICAgZG9uZSk7XG4gICAgICAgICAgKCogRmluaXNoZWQgbG9va2luZyBpbiBbbGV2ZWxdLiAgTW92ZSB1cCB0byB0aGUgbmV4dCBsZXZlbC4gKilcbiAgICAgICAgICBpbmNyIGxldmVsX2luZGV4KVxuICAgICAgZG9uZTtcbiAgICAgIHQubWluX2VsdCA8LSAhbWluX2VsdF9hbHJlYWR5X2ZvdW5kO1xuICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtICFtaW5fa2V5X2FscmVhZHlfZm91bmQ7XG4gICAgICB0Lm1pbl9lbHQpXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfYm91bmRzIHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJQcmlvcml0eV9xdWV1ZS5hZGRfZWx0IGtleSBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgICAoa2V5IDogS2V5LnQpXG4gICAgICAgICAgKG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgKG1heF9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfnByaW9yaXR5X3F1ZXVlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9sZXZlbF9ib3VuZHMga2V5IGxldmVsID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJQcmlvcml0eV9xdWV1ZS5hZGRfZWx0IGtleSBvdXQgb2YgbGV2ZWwgYm91bmRzXCIgKGtleSA6IEtleS50KSAobGV2ZWwgOiBfIExldmVsLnQpXVxuICA7O1xuXG4gIGxldCBhZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0IGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpICYmIEtleS4oIDw9ICkga2V5IChtYXhfYWxsb3dlZF9rZXkgdCkpXG4gICAgdGhlbiByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfYm91bmRzIHQga2V5O1xuICAgICgqIEZpbmQgdGhlIGxvd2VzdCBsZXZlbCB0aGF0IHdpbGwgaG9sZCBbZWx0XS4gKilcbiAgICBsZXQgbGV2ZWxfaW5kZXggPVxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlIEtleS4oID4gKSBrZXkgKExldmVsLm1heF9hbGxvd2VkX2tleSB0LmxldmVscy4oIWxldmVsX2luZGV4KSkgZG9cbiAgICAgICAgaW5jciBsZXZlbF9pbmRleFxuICAgICAgZG9uZTtcbiAgICAgICFsZXZlbF9pbmRleFxuICAgIGluXG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgIGlmIG5vdCAoS2V5LiggPj0gKSBrZXkgbGV2ZWwubWluX2FsbG93ZWRfa2V5ICYmIEtleS4oIDw9ICkga2V5IGxldmVsLm1heF9hbGxvd2VkX2tleSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9sZXZlbF9ib3VuZHMga2V5IGxldmVsO1xuICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggKyAxO1xuICAgIEludGVybmFsX2VsdC5zZXRfbGV2ZWxfaW5kZXggcG9vbCBlbHQgbGV2ZWxfaW5kZXg7XG4gICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIGxldCBmaXJzdCA9IHNsb3RzLihzbG90KSBpblxuICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgdGhlbiBJbnRlcm5hbF9lbHQuaW5zZXJ0X2F0X2VuZCBwb29sIGZpcnN0IH50b19hZGQ6ZWx0XG4gICAgZWxzZSAoXG4gICAgICBzbG90cy4oc2xvdCkgPC0gZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LmxpbmtfdG9fc2VsZiBwb29sIGVsdClcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdCA9XG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdCBpblxuICAgIGlmIEtleS4oIDwgKSBrZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kXG4gICAgdGhlbiAoXG4gICAgICB0Lm1pbl9lbHQgPC0gZWx0O1xuICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtIGtleSk7XG4gICAgYWRkX2VsdCB0IGVsdDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2dvdF9pbnZhbGlkX2tleSB0IGtleSA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmFkZF9hdF9pbnRlcnZhbF9udW0gZ290IGludmFsaWQgaW50ZXJ2YWwgbnVtXCJcbiAgICAgICAgICB+aW50ZXJ2YWxfbnVtOihrZXkgOiBLZXkudClcbiAgICAgICAgICB+bWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtOihtaW5fYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1heF9hbGxvd2VkX2tleSB0IDogS2V5LnQpXVxuICA7O1xuXG4gIGxldCBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleSA9XG4gICAgaWYgS2V5LiggPCApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpIHx8IEtleS4oID4gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KVxuICAgIHRoZW4gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5XG4gIDs7XG5cbiAgbGV0IGludGVybmFsX2FkZCB0IH5rZXkgfmF0IHZhbHVlID1cbiAgICBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleTtcbiAgICBpZiBJbnRlcm5hbF9lbHQuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBJbnRlcm5hbF9lbHQuUG9vbC5ncm93IHQucG9vbDtcbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0LmNyZWF0ZSB0LnBvb2wgfmtleSB+YXQgfnZhbHVlIH5sZXZlbF9pbmRleDooLTEpIGluXG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdDtcbiAgICBlbHRcbiAgOztcblxuICAoKiogW3JlbW92ZV9vcl9yZV9hZGRfZWx0c10gdmlzaXRzIGVhY2ggZWxlbWVudCBpbiB0aGUgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBbZmlyc3RdLiAgSWYgdGhlIGVsZW1lbnQncyBrZXkgaXMgWz49IHRfbWluX2FsbG93ZWRfa2V5XSwgdGhlbiBpdCBhZGRzIHRoZSBlbGVtZW50XG4gICAgICBiYWNrIGF0IGEgbG93ZXIgbGV2ZWwuICBJZiBub3QsIHRoZW4gaXQgY2FsbHMgW2hhbmRsZV9yZW1vdmVkXSBhbmQgW2ZyZWVdcyB0aGVcbiAgICAgIGVsZW1lbnQuICopXG4gIGxldCByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCAobGV2ZWwgOiBfIExldmVsLnQpIGZpcnN0IH50X21pbl9hbGxvd2VkX2tleSB+aGFuZGxlX3JlbW92ZWRcbiAgICA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAoKiBXZSBleHRyYWN0IFtuZXh0XSBmcm9tIFtjdXJyZW50XSBmaXJzdCwgYmVjYXVzZSB3ZSB3aWxsIG1vZGlmeSBvciBbZnJlZV1cbiAgICAgICAgIFtjdXJyZW50XSBiZWZvcmUgY29udGludWluZyB0aGUgbG9vcC4gKilcbiAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgICBpZiBLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgIWN1cnJlbnQpIHRfbWluX2FsbG93ZWRfa2V5XG4gICAgICB0aGVuIGFkZF9lbHQgdCAhY3VycmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgICAgaGFuZGxlX3JlbW92ZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCAhY3VycmVudCk7XG4gICAgICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgIWN1cnJlbnQpO1xuICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICBkb25lXG4gIDs7XG5cbiAgKCoqIFtpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcyB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgW2xldmVsXSB0byBhc1xuICAgICAgbGFyZ2UgYSB2YWx1ZSBhcyBwb3NzaWJsZSwgYnV0IG5vIG1vcmUgdGhhbiBbbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleV0uXG4gICAgICBbdF9taW5fYWxsb3dlZF9rZXldIGlzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGZvciB0aGUgZW50aXJlIHRpbWluZyB3aGVlbC4gIEFzXG4gICAgICBlbGVtZW50cyBhcmUgZW5jb3VudGVyZWQsIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSB0aGUgdGltaW5nIHdoZWVsIGlmIHRoZWlyIGtleSBpc1xuICAgICAgc21hbGxlciB0aGFuIFt0X21pbl9hbGxvd2VkX2tleV0sIG9yIGFkZGVkIGF0IGEgbG93ZXIgbGV2ZWwgaWYgbm90LiAqKVxuICBsZXQgaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIHRcbiAgICAgICAgKGxldmVsIDogXyBMZXZlbC50KVxuICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgfnRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwuY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkgbGV2ZWwgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgaW5cbiAgICAoKiBXZSByZXF1aXJlIHRoYXQgW21vZCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdCA9IDBdLiAgU28sXG4gICAgICAgd2Ugc3RhcnQgW2xldmVsX21pbl9hbGxvd2VkX2tleV0gd2hlcmUgdGhhdCBpcyB0cnVlLCBhbmQgdGhlbiBpbmNyZWFzZSBpdCBieVxuICAgICAgIFtrZXlzX3Blcl9zbG90XSBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC4gKilcbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgIExldmVsLm1pbl9rZXlfaW5fc2FtZV9zbG90XG4gICAgICAgIGxldmVsXG4gICAgICAgIH5rZXk6XG4gICAgICAgICAgKEtleS5taW5cbiAgICAgICAgICAgICBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgIChLZXkubWF4IGxldmVsLm1pbl9hbGxvd2VkX2tleSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpKVxuICAgIGluXG4gICAgbGV0IGxldmVsX21pbl9hbGxvd2VkX2tleSA9IHJlZiBsZXZlbF9taW5fYWxsb3dlZF9rZXkgaW5cbiAgICBsZXQgc2xvdCA9IHJlZiAoTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OiFsZXZlbF9taW5fYWxsb3dlZF9rZXkpIGluXG4gICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBsZXZlbC5rZXlzX3Blcl9zbG90IGluXG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICB3aGlsZSBLZXkuKCA8ICkgIWxldmVsX21pbl9hbGxvd2VkX2tleSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSBkb1xuICAgICAgaWYgbGV2ZWwubGVuZ3RoID0gMFxuICAgICAgdGhlblxuICAgICAgICAoKiBJZiBubyBlbGVtZW50cyByZW1haW4gYXQgdGhpcyBsZXZlbCwgd2UgY2FuIGp1c3Qgc2V0IFttaW5fYWxsb3dlZF9rZXldIHRvIHRoZVxuICAgICAgICAgICBkZXNpcmVkIHZhbHVlLiAqKVxuICAgICAgICBsZXZlbF9taW5fYWxsb3dlZF9rZXkgOj0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZmlyc3QgPSBzbG90cy4oIXNsb3QpIGluXG4gICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHNsb3RzLighc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCk7XG4gICAgICAgICAgcmVtb3ZlX29yX3JlX2FkZF9lbHRzIHQgbGV2ZWwgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZCk7XG4gICAgICAgIHNsb3QgOj0gTGV2ZWwubmV4dF9zbG90IGxldmVsICFzbG90O1xuICAgICAgICBsZXZlbF9taW5fYWxsb3dlZF9rZXkgOj0gS2V5LmFkZF9jbGFtcF90b19tYXggIWxldmVsX21pbl9hbGxvd2VkX2tleSBrZXlzX3Blcl9zbG90KVxuICAgIGRvbmU7XG4gICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5IDwtIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5O1xuICAgIGxldmVsLm1heF9hbGxvd2VkX2tleVxuICAgIDwtIEtleS5hZGRfY2xhbXBfdG9fbWF4IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICA7O1xuXG4gIG1vZHVsZSBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkXG4gIGVuZFxuXG4gIGxldCBpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZCA6IEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQudCA9XG4gICAgaWYgS2V5LiggPD0gKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KVxuICAgIHRoZW4gTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgZWxzZSAoXG4gICAgICAoKiBXZSBpbmNyZWFzZSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgbGV2ZWxzIGluIG9yZGVyIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudFxuICAgICAgICAgdGhhdCB0aGV5IGhhdmUgYXMgbGFyZ2UgYXMgcG9zc2libGUgYSBbbWluX2FsbG93ZWRfa2V5XSwgd2hpbGUgbGVhdmluZyBubyBnYXBzXG4gICAgICAgICBpbiBrZXlzLiAqKVxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIGxldCByZXN1bHQgPSByZWYgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC5NYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZCBpblxuICAgICAgbGV0IHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID0gcmVmIChLZXkucHJlZCBrZXkpIGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGxldCBudW1fbGV2ZWxzID0gbnVtX2xldmVscyB0IGluXG4gICAgICB3aGlsZSAhbGV2ZWxfaW5kZXggPCBudW1fbGV2ZWxzIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5X2JlZm9yZSA9IGxldmVsLm1pbl9hbGxvd2VkX2tleSBpblxuICAgICAgICBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICB0XG4gICAgICAgICAgbGV2ZWxcbiAgICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXk6IXByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgfnRfbWluX2FsbG93ZWRfa2V5OmtleVxuICAgICAgICAgIH5oYW5kbGVfcmVtb3ZlZDtcbiAgICAgICAgaWYgS2V5LmVxdWFsIChMZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwpIG1pbl9hbGxvd2VkX2tleV9iZWZvcmVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogVGhpcyBsZXZlbCBkaWQgbm90IHNoaWZ0LiAgRG9uJ3Qgc2hpZnQgYW55IGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gbnVtX2xldmVscztcbiAgICAgICAgICByZXN1bHQgOj0gTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMZXZlbCBbbGV2ZWxfaW5kZXhdIHNoaWZ0ZWQuICBDb25zaWRlciBzaGlmdGluZyBoaWdoZXIgbGV2ZWxzLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9ICFsZXZlbF9pbmRleCArIDE7XG4gICAgICAgICAgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgOj0gTGV2ZWwubWF4X2FsbG93ZWRfa2V5IGxldmVsKVxuICAgICAgZG9uZTtcbiAgICAgIGlmIEtleS4oID4gKSBrZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogV2UgaGF2ZSByZW1vdmVkIFt0Lm1pbl9lbHRdIG9yIGl0IHdhcyBhbHJlYWR5IG51bGwsIHNvIGp1c3Qgc2V0IGl0IHRvXG4gICAgICAgICAgIG51bGwuICopXG4gICAgICAgIHQubWluX2VsdCA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtIG1pbl9hbGxvd2VkX2tleSB0KTtcbiAgICAgICFyZXN1bHQpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/Y2FwYWNpdHkgP2xldmVsX2JpdHMgKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIG1hdGNoIGxldmVsX2JpdHMgd2l0aFxuICAgICAgfCBTb21lIGwgLT4gbFxuICAgICAgfCBOb25lIC0+IExldmVsX2JpdHMuZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IF8sIF8sIGxldmVscyA9XG4gICAgICBMaXN0LmZvbGRpXG4gICAgICAgIGxldmVsX2JpdHNcbiAgICAgICAgfmluaXQ6KE51bV9rZXlfYml0cy56ZXJvLCBLZXkuemVybywgW10pXG4gICAgICAgIH5mOlxuICAgICAgICAgIChmdW5cbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAoYml0c19wZXJfc2xvdCwgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSwgbGV2ZWxzKVxuICAgICAgICAgICAgKGxldmVsX2JpdHMgOiBOdW1fa2V5X2JpdHMudClcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGxldCBrZXlzX3Blcl9zbG90ID0gS2V5Lm51bV9rZXlzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZSB+Yml0c19wZXJfc2xvdCBpblxuICAgICAgICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICBLZXkubWluX2tleV9pbl9zYW1lX3Nsb3QgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgIEtleS5hZGRfY2xhbXBfdG9fbWF4IG1pbl9hbGxvd2VkX2tleSBkaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxldmVsID1cbiAgICAgICAgICAgICAgICB7IExldmVsLmluZGV4XG4gICAgICAgICAgICAgICAgOyBiaXRzID0gbGV2ZWxfYml0c1xuICAgICAgICAgICAgICAgIDsgc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgOyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgOyBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgOyBkaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICA7IGxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgICA7IG1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgIDsgbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgOyBzbG90cyA9XG4gICAgICAgICAgICAgICAgICAgIEFycmF5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KEludDYzLnRvX2ludF9leG4gKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpKVxuICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAsIEtleS5zdWNjX2NsYW1wX3RvX21heCBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgLCBsZXZlbCA6OiBsZXZlbHMgKSlcbiAgICBpblxuICAgIHsgbGVuZ3RoID0gMFxuICAgIDsgcG9vbCA9IEludGVybmFsX2VsdC5Qb29sLmNyZWF0ZSA/Y2FwYWNpdHkgKClcbiAgICA7IG1pbl9lbHQgPSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIDsgZWx0X2tleV9sb3dlcl9ib3VuZCA9IEtleS56ZXJvXG4gICAgOyBsZXZlbHMgPSBBcnJheS5vZl9saXN0X3JldiBsZXZlbHNcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1lbSB0IGVsdCA9IEludGVybmFsX2VsdC5leHRlcm5hbF9pc192YWxpZCB0LnBvb2wgZWx0XG5cbiAgbGV0IGludGVybmFsX3JlbW92ZSB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBpZiBJbnRlcm5hbF9lbHQuZXF1YWwgZWx0IHQubWluX2VsdFxuICAgIHRoZW5cbiAgICAgIHQubWluX2VsdCA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgICgqIFdlIGtlZXAgW3QuZWx0X2xvd2VyX2JvdW5kXSBzaW5jZSBpdCBpcyB2YWxpZCBldmVuIHRob3VnaCBbdC5taW5fZWx0XSBpcyBiZWluZ1xuICAgICAgIHJlbW92ZWQuICopO1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oSW50ZXJuYWxfZWx0LmxldmVsX2luZGV4IHBvb2wgZWx0KSBpblxuICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggLSAxO1xuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgcGh5c19lcXVhbCBlbHQgKEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0KVxuICAgIHRoZW4gKCogW2VsdF0gaXMgdGhlIG9ubHkgZWxlbWVudCBpbiB0aGUgc2xvdCAqKVxuICAgICAgc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGVsdCBmaXJzdCB0aGVuIHNsb3RzLihzbG90KSA8LSBJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdDtcbiAgICAgIEludGVybmFsX2VsdC51bmxpbmsgcG9vbCBlbHQpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwb29sIGVsdCBpblxuICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdFxuICA7O1xuXG4gIGxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCB+a2V5IH5ub3cgPVxuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLigwKSBpblxuICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5IGluXG4gICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmaXJzdCA9IHJlZiBzbG90cy4oc2xvdCkgaW5cbiAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgIWZpcnN0KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjdXJyZW50ID0gcmVmICFmaXJzdCBpblxuICAgICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgICBsZXQgZWx0ID0gIWN1cnJlbnQgaW5cbiAgICAgICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0IGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0ICFmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0O1xuICAgICAgICAgIGlmIFRpbWVfbnMuKCA8PSApIChJbnRlcm5hbF9lbHQuYXQgcG9vbCBlbHQpIG5vd1xuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgaGFuZGxlX2ZpcmVkIChJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWwgZWx0KTtcbiAgICAgICAgICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0O1xuICAgICAgICAgICAgKCogV2UgcmVjb21wdXRlIFtmaXJzdF0gYmVjYXVzZSBbaW50ZXJuYWxfcmVtb3ZlXSBtYXkgaGF2ZSBjaGFuZ2VkIGl0LiAqKVxuICAgICAgICAgICAgZmlyc3QgOj0gc2xvdHMuKHNsb3QpKVxuICAgICAgICBkb25lKSlcbiAgOztcblxuICBsZXQgY2hhbmdlIHQgZWx0IH5rZXkgfmF0ID1cbiAgICBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleTtcbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5zZXRfa2V5IHBvb2wgZWx0IGtleTtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2F0IHBvb2wgZWx0IGF0O1xuICAgIGludGVybmFsX2FkZF9lbHQgdCBlbHRcbiAgOztcblxuICBsZXQgY2xlYXIgdCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgZnJlZV9lbHQgZWx0ID0gSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgZm9yIGxldmVsX2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggbGV2ZWxzIC0gMSBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldmVsLmxlbmd0aCA8LSAwO1xuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgZm9yIHNsb3RfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBzbG90cyAtIDEgZG9cbiAgICAgICAgICAgIGxldCBlbHQgPSBzbG90cy4oc2xvdF9pbmRleCkgaW5cbiAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOmZyZWVfZWx0O1xuICAgICAgICAgICAgICBzbG90cy4oc2xvdF9pbmRleCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCkpXG4gICAgICAgICAgZG9uZSlcbiAgICAgIGRvbmUpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsX2VsdCA9IFByaW9yaXR5X3F1ZXVlLkludGVybmFsX2VsdFxubW9kdWxlIEtleSA9IFByaW9yaXR5X3F1ZXVlLktleVxubW9kdWxlIEludGVydmFsX251bSA9IEtleVxuXG5sZXQgbWluX2ludGVydmFsX251bSA9IEludGVydmFsX251bS56ZXJvXG5cbigqIEFsbCB0aW1lIGZyb20gdGhlIGVwb2NoIG9ud2FyZHMgaXMgYnJva2VuIGludG8gaGFsZi1vcGVuIGludGVydmFscyBvZiBzaXplXG4gICBbQ29uZmlnLmFsYXJtX3ByZWNpc2lvbiBjb25maWddLiAgVGhlIGludGVydmFscyBhcmUgbnVtYmVyZWQgc3RhcnRpbmcgYXQgemVybywgYW5kIGFcbiAgIHRpbWUncyBpbnRlcnZhbCBudW1iZXIgc2VydmVzIGFzIGl0cyBrZXkgaW4gW3ByaW9yaXR5X3F1ZXVlXS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgY29uZmlnIDogQ29uZmlnLnRcbiAgOyBzdGFydCA6IFRpbWVfbnMudFxuICA7ICgqIFttYXhfaW50ZXJ2YWxfbnVtXSBpcyB0aGUgaW50ZXJ2YWwgbnVtYmVyIG9mIFttYXhfdGltZV0uICopXG4gICAgbWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50XG4gIDsgbXV0YWJsZSBub3cgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIG5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnRcbiAgOyBwcmlvcml0eV9xdWV1ZSA6ICdhIFByaW9yaXR5X3F1ZXVlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICdhIHRpbWluZ193aGVlbCA9ICdhIHRcbnR5cGUgJ2EgdF9ub3cgPSAnYSB0XG5cbmxldCBzZXhwX29mX3Rfbm93IF8gdCA9IFslc2V4cCAodC5ub3cgOiBUaW1lX25zLnQpXVxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gQ29uZmlnLmFsYXJtX3ByZWNpc2lvbiB0LmNvbmZpZ1xuXG5tb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgUHJpb3JpdHlfcXVldWUuRWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbnVsbCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5udWxsXG4gIGxldCBhdCB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LmF0IHR3LnByaW9yaXR5X3F1ZXVlIHRcbiAgbGV0IHZhbHVlIHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQudmFsdWUgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgaW50ZXJ2YWxfbnVtIHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQua2V5IHR3LnByaW9yaXR5X3F1ZXVlIHRcbmVuZFxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgaXRlciB0IH5mID0gUHJpb3JpdHlfcXVldWUuaXRlciB0LnByaW9yaXR5X3F1ZXVlIH5mXG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsYXJtID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgYXQgOiBUaW1lX25zLnRcbiAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgdCBhbGFybSA9IHsgYXQgPSBBbGFybS5hdCB0IGFsYXJtOyB2YWx1ZSA9IEFsYXJtLnZhbHVlIHQgYWxhcm0gfVxuICAgIGxldCBjb21wYXJlIHQxIHQyID0gVGltZV9ucy5jb21wYXJlIChhdCB0MSkgKGF0IHQyKVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgY29uZmlnIDogQ29uZmlnLnRcbiAgICA7IHN0YXJ0IDogVGltZV9ucy50XG4gICAgOyBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudFxuICAgIDsgYWxhcm1zIDogJ2EgQWxhcm0udCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBwcmV0dHlcbiAgICAgICh7IGNvbmZpZ1xuICAgICAgIDsgc3RhcnRcbiAgICAgICA7IG1heF9pbnRlcnZhbF9udW1cbiAgICAgICA7IG5vd1xuICAgICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9IF9cbiAgICAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBfXG4gICAgICAgOyBwcmlvcml0eV9xdWV1ZSA9IF9cbiAgICAgICB9IGFzIHQpXG4gID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiByIDo9IFByZXR0eS5BbGFybS5jcmVhdGUgdCBhIDo6ICFyKTtcbiAgbGV0IGFsYXJtcyA9IExpc3Quc29ydCAhciB+Y29tcGFyZTpQcmV0dHkuQWxhcm0uY29tcGFyZSBpblxuICB7IFByZXR0eS5jb25maWc7IHN0YXJ0OyBtYXhfaW50ZXJ2YWxfbnVtOyBub3c7IGFsYXJtcyB9XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgbWF0Y2ggIXNleHBfb2ZfdF9zdHlsZSB3aXRoXG4gIHwgYEludGVybmFsIC0+IHNleHBfb2ZfdF9pbnRlcm5hbCBzZXhwX29mX2EgdFxuICB8IGBQcmV0dHkgLT4gWyVzZXhwIChwcmV0dHkgdCA6IGEgUHJldHR5LnQpXVxuOztcblxubGV0IGxlbmd0aCB0ID0gUHJpb3JpdHlfcXVldWUubGVuZ3RoIHQucHJpb3JpdHlfcXVldWVcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF9leG5fb2ZfZW1wdHlfdGltaW5nX3doZWVsIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIiB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB3aXRoIGFsbCBhbGFybXMgaW4gbWF4IGludGVydmFsXCJcbiAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG47O1xuXG5sZXQgcG9vbCB0ID0gUHJpb3JpdHlfcXVldWUucG9vbCB0LnByaW9yaXR5X3F1ZXVlXG5cbmxldCBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWUgfmFsYXJtX3ByZWNpc2lvbiA9XG4gIEludGVydmFsX251bS5vZl9pbnQ2MyAoQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bSBhbGFybV9wcmVjaXNpb24gdGltZSlcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdGltZSA9XG4gIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uOnQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuOztcblxubGV0IGludGVydmFsX251bSB0IHRpbWUgPVxuICBpZiBUaW1lX25zLiggPCApIHRpbWUgbWluX3RpbWVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW0gZ290IHRpbWUgdG9vIGZhciBpbiB0aGUgcGFzdFwiICh0aW1lIDogVGltZV9ucy50KV07XG4gIGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGludGVydmFsX251bSA9XG4gIEFsYXJtX3ByZWNpc2lvbi5pbnRlcnZhbF9udW1fc3RhcnRcbiAgICB0LmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICAoaW50ZXJ2YWxfbnVtIHw+IEludGVydmFsX251bS50b19pbnQ2Mylcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fc21hbGwgaW50ZXJ2YWxfbnVtID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtX3N0YXJ0IGdvdCB0b28gc21hbGwgaW50ZXJ2YWxfbnVtXCJcbiAgICAgICAgKGludGVydmFsX251bSA6IEludGVydmFsX251bS50KVxuICAgICAgICAobWluX2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBsYXJnZSBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgICh0Lm1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udCldXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgaW50ZXJ2YWxfbnVtID1cbiAgaWYgSW50ZXJ2YWxfbnVtLiggPCApIGludGVydmFsX251bSBtaW5faW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fc21hbGwgaW50ZXJ2YWxfbnVtO1xuICBpZiBJbnRlcnZhbF9udW0uKCA+ICkgaW50ZXJ2YWxfbnVtIHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX2xhcmdlIHQgaW50ZXJ2YWxfbnVtO1xuICBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleSA9XG4gICgqIFtpbnRlcnZhbF9udW1fc3RhcnQgdCBrZXldIGlzIHRoZSBrZXkgY29ycmVzcG9uZGluZyB0byB0aGUgc3RhcnQgb2YgdGhlIHRpbWUgaW50ZXJ2YWxcbiAgICAgaG9sZGluZyB0aGUgZmlyc3QgYWxhcm0gaW4gW3RdLiAgQWR2YW5jaW5nIHRvIHRoYXQgd291bGQgbm90IGJlIGVub3VnaCwgc2luY2UgdGhlXG4gICAgIGFsYXJtcyBpbiB0aGF0IGludGVydmFsIGRvbid0IGZpcmUgdW50aWwgdGhlIGNsb2NrIGlzIGFkdmFuY2VkIHRvIHRoZSBzdGFydCBvZiB0aGVcbiAgICAgbmV4dCBpbnRlcnZhbC4gIFNvLCB3ZSB1c2UgW3N1Y2Mga2V5XSB0byBhZHZhbmNlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dFxuICAgICBpbnRlcnZhbC4gKilcbiAgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKEtleS5zdWNjIGtleSlcbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdCBpblxuICAgIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5KSlcbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF9leG5fb2ZfZW1wdHlfdGltaW5nX3doZWVsIHQ7XG4gIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdCBpblxuICBpZiBJbnRlcnZhbF9udW0uZXF1YWwga2V5IHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfd2l0aF9hbGxfYWxhcm1zX2luX21heF9pbnRlcnZhbCB0O1xuICBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5XG47O1xuXG5sZXQgY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQgPVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5ID0gUHJpb3JpdHlfcXVldWUubWF4X2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJ2YWxfbnVtLiggPj0gKSBtYXhfYWxsb3dlZF9rZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gbWF4X3RpbWVcbiAgZWxzZVxuICAgIFRpbWVfbnMuYWRkXG4gICAgICAoaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IG1heF9hbGxvd2VkX2tleSlcbiAgICAgIChUaW1lX25zLlNwYW4uKCAtICkgKGFsYXJtX3ByZWNpc2lvbiB0KSBUaW1lX25zLlNwYW4ubmFub3NlY29uZClcbjs7XG5cbmxldCBub3dfaW50ZXJ2YWxfbnVtIHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1pbl9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSA9IG5vd19pbnRlcnZhbF9udW1cbmxldCBtYXhfYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW0gdCA9IGludGVydmFsX251bSB0IChtYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG5sZXQgaW50ZXJ2YWxfc3RhcnQgdCB0aW1lID0gaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IChpbnRlcnZhbF9udW0gdCB0aW1lKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29uZmlnOihjaGVjayBDb25maWcuaW52YXJpYW50KVxuICAgICAgfnN0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBzdGFydCAtPlxuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+PSApIHN0YXJ0IG1pbl90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBzdGFydCBtYXhfdGltZSkpKVxuICAgICAgfm1heF9pbnRlcnZhbF9udW06XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9pbnRlcnZhbF9udW0gLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogSW50ZXJ2YWxfbnVtLnRdXG4gICAgICAgICAgICAgfmV4cGVjdDptYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgICAgICAgKGludGVydmFsX251bSB0IG1heF90aW1lKTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogSW50ZXJ2YWxfbnVtLnRdXG4gICAgICAgICAgICAgfmV4cGVjdDptYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgICAgICAgKGludGVydmFsX251bSB0IChpbnRlcnZhbF9udW1fc3RhcnQgdCBtYXhfaW50ZXJ2YWxfbnVtKSkpKVxuICAgICAgfm5vdzpcbiAgICAgICAgKGNoZWNrIChmdW4gbm93IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgbm93IHQuc3RhcnQpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIG5vdyBtYXhfdGltZSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgSW50ZXJ2YWxfbnVtLmVxdWFsXG4gICAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgdC5ub3cpXG4gICAgICAgICAgICAgICAoUHJpb3JpdHlfcXVldWUubWluX2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWUpKSkpXG4gICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW4gbm93X2ludGVydmFsX251bV9zdGFydCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgbm93X2ludGVydmFsX251bV9zdGFydFxuICAgICAgICAgICAgIH5leHBlY3Q6KGludGVydmFsX251bV9zdGFydCB0IChub3dfaW50ZXJ2YWxfbnVtIHQpKSkpXG4gICAgICB+bWF4X2FsbG93ZWRfYWxhcm1fdGltZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2FsbG93ZWRfYWxhcm1fdGltZSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgbWF4X2FsbG93ZWRfYWxhcm1fdGltZVxuICAgICAgICAgICAgIH5leHBlY3Q6KGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSkpXG4gICAgICB+cHJpb3JpdHlfcXVldWU6KGNoZWNrIChQcmlvcml0eV9xdWV1ZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKTtcbiAgICBpdGVyIHQgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgSW50ZXJ2YWxfbnVtLmVxdWFsXG4gICAgICAgICAgKEFsYXJtLmludGVydmFsX251bSB0IGFsYXJtKVxuICAgICAgICAgIChpbnRlcnZhbF9udW0gdCAoQWxhcm0uYXQgdCBhbGFybSkpKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIFRpbWVfbnMuKCA+PSApIChpbnRlcnZhbF9zdGFydCB0IChBbGFybS5hdCB0IGFsYXJtKSkgKGludGVydmFsX3N0YXJ0IHQgKG5vdyB0KSkpO1xuICAgICAgYXNzZXJ0IChUaW1lX25zLiggPiApIChBbGFybS5hdCB0IGFsYXJtKSAoVGltZV9ucy5zdWIgKG5vdyB0KSAoYWxhcm1fcHJlY2lzaW9uIHQpKSkpKVxuOztcblxubGV0IGRlYnVnID0gZmFsc2VcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5oYW5kbGVfZmlyZWQgPVxuICBpZiBUaW1lX25zLiggPiApIHRvXyAobm93IHQpXG4gIHRoZW4gKFxuICAgIHQubm93IDwtIHRvXztcbiAgICBsZXQga2V5ID0gaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRvXyBpblxuICAgIHQubm93X2ludGVydmFsX251bV9zdGFydCA8LSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQga2V5O1xuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eV9xdWV1ZS5pbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgICB+a2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZDpoYW5kbGVfZmlyZWRcbiAgICB3aXRoXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UgLT5cbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGFzc2VydCAoVGltZV9ucy4oID0gKSB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgKGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSlcbiAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIC0+XG4gICAgICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG47O1xuXG5sZXQgY3JlYXRlIH5jb25maWcgfnN0YXJ0ID1cbiAgaWYgVGltZV9ucy4oIDwgKSBzdGFydCBUaW1lX25zLmVwb2NoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwuY3JlYXRlIGdvdCBzdGFydCBiZWZvcmUgdGhlIGVwb2NoXCIgKHN0YXJ0IDogVGltZV9ucy50KV07XG4gIGxldCB0ID1cbiAgICB7IGNvbmZpZ1xuICAgIDsgc3RhcnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gPVxuICAgICAgICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWU6bWF4X3RpbWUgfmFsYXJtX3ByZWNpc2lvbjpjb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgOyBub3cgPSBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBtYXhfdGltZSAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBwcmlvcml0eV9xdWV1ZSA9XG4gICAgICAgIFByaW9yaXR5X3F1ZXVlLmNyZWF0ZSA/Y2FwYWNpdHk6Y29uZmlnLmNhcGFjaXR5IH5sZXZlbF9iaXRzOmNvbmZpZy5sZXZlbF9iaXRzICgpXG4gICAgfVxuICBpblxuICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQ7XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fOnN0YXJ0IH5oYW5kbGVfZmlyZWQ6KGZ1biBfIC0+IGFzc2VydCBmYWxzZSk7XG4gIHRcbjs7XG5cbmxldCBhZGRfYXRfaW50ZXJ2YWxfbnVtIHQgfmF0IHZhbHVlID1cbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OmF0XG4gICAgICAgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIHRoYXQgZmFyIGluIHRoZSBmdXR1cmVcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOih0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIGJlZm9yZSBzdGFydCBvZiBjdXJyZW50IGludGVydmFsXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDoodC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50KV1cbjs7XG5cbmxldCBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0ID1cbiAgaWYgVGltZV9ucy4oID4gKSBhdCB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdGhlbiByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQ7XG4gIGlmIFRpbWVfbnMuKCA8ICkgYXQgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gIHRoZW4gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdFxuOztcblxubGV0IGFkZCB0IH5hdCB2YWx1ZSA9XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KVxuICAgICAgIH5hdFxuICAgICAgIHZhbHVlKVxuOztcblxubGV0IHJlbW92ZSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUucmVtb3ZlIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cbmxldCBjbGVhciB0ID0gUHJpb3JpdHlfcXVldWUuY2xlYXIgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1lbSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUubWVtIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cblxubGV0IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleSB+YXQgPVxuICBpZiBub3QgKG1lbSB0IGFsYXJtKVxuICB0aGVuIGZhaWx3aXRoIFwiVGltaW5nX3doZWVsIGNhbm5vdCByZXNjaGVkdWxlIGFsYXJtIG5vdCBpbiB0aW1pbmcgd2hlZWxcIjtcbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgUHJpb3JpdHlfcXVldWUuY2hhbmdlIHQucHJpb3JpdHlfcXVldWUgYWxhcm0gfmtleSB+YXRcbjs7XG5cbmxldCByZXNjaGVkdWxlIHQgYWxhcm0gfmF0ID0gcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpIH5hdFxuXG5sZXQgcmVzY2hlZHVsZV9hdF9pbnRlcnZhbF9udW0gdCBhbGFybSB+YXQgPVxuICByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6YXQgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAoSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bV9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIG9mIGVtcHR5IHRpbWluZ193aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG4gIGVsc2UgSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHRcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1heF9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1pbl9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCA9XG4gIFByaW9yaXR5X3F1ZXVlLmZpcmVfcGFzdF9hbGFybXNcbiAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgfmhhbmRsZV9maXJlZFxuICAgIH5rZXk6KG5vd19pbnRlcnZhbF9udW0gdClcbiAgICB+bm93OnQubm93XG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX2tleV9iaXRzID0gTnVtX2tleV9iaXRzXG5cbiAgbGV0IGludGVydmFsX251bV9pbnRlcm5hbCA9IGludGVydmFsX251bV9pbnRlcm5hbFxuICBsZXQgbWF4X3RpbWUgPSBtYXhfdGltZVxuZW5kXG4iLCJtb2R1bGUgSW5yaWFfc3lzID0gU3lzXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm9wZW4gUG9seVxuXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcblxubW9kdWxlIEVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIEludFxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICAgIGVuZClcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gKDEgbHNsIDE2KVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG5lbmRcblxubW9kdWxlIE1heF9udW1fdGhyZWFkcyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgRHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IHN0cnVjdFxuICBtb2R1bGUgSG93X3RvX2R1bXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBEZWZhdWx0XG4gICAgICB8IENhbGxfYWJvcnRcbiAgICAgIHwgQ2FsbF9nY29yZVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIHR5cGUgd2F0Y2ggPVxuICAgIHsgZHVtcF9pZl9kZWxheWVkX2J5IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IGhvd190b19kdW1wIDogSG93X3RvX2R1bXAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICB0eXBlIHQgPVxuICAgIHwgV2F0Y2ggb2Ygd2F0Y2hcbiAgICB8IERvX25vdF93YXRjaFxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z190YWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBbGxcbiAgICAgIHwgQ2xvY2tcbiAgICAgIHwgRmRcbiAgICAgIHwgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICB8IEZpbmFsaXplcnNcbiAgICAgIHwgSW50ZXJydXB0b3JcbiAgICAgIHwgTW9uaXRvclxuICAgICAgfCBNb25pdG9yX3NlbmRfZXhuXG4gICAgICB8IFBhcmFsbGVsXG4gICAgICB8IFJlYWRlclxuICAgICAgfCBTY2hlZHVsZXJcbiAgICAgIHwgU2h1dGRvd25cbiAgICAgIHwgVGhyZWFkX3Bvb2xcbiAgICAgIHwgVGhyZWFkX3NhZmVcbiAgICAgIHwgV3JpdGVyXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9XG4gICAgWyBBbGxcbiAgICA7IENsb2NrXG4gICAgOyBGZFxuICAgIDsgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgOyBGaW5hbGl6ZXJzXG4gICAgOyBJbnRlcnJ1cHRvclxuICAgIDsgTW9uaXRvclxuICAgIDsgTW9uaXRvcl9zZW5kX2V4blxuICAgIDsgUGFyYWxsZWxcbiAgICA7IFJlYWRlclxuICAgIDsgU2NoZWR1bGVyXG4gICAgOyBTaHV0ZG93blxuICAgIDsgVGhyZWFkX3Bvb2xcbiAgICA7IFRocmVhZF9zYWZlXG4gICAgOyBXcml0ZXJcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfZGVzY3Jfd2F0Y2hlciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVwb2xsX2lmX3RpbWVyZmRcbiAgICAgIHwgRXBvbGxcbiAgICAgIHwgU2VsZWN0XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9IFsgRXBvbGxfaWZfdGltZXJmZDsgRXBvbGw7IFNlbGVjdCBdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBjaGVja19pbnZhcmlhbnRzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgOiBGaWxlX2Rlc2NyX3dhdGNoZXIudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzIDogTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV90aHJlYWRzIDogTWF4X251bV90aHJlYWRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl1cbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIDogRGVidWdfdGFnLnQgbGlzdCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxubGV0IGVtcHR5ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IE5vbmVcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBOb25lXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IE5vbmVcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gTm9uZVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IE5vbmVcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBOb25lXG4gIDsgbWF4X251bV90aHJlYWRzID0gTm9uZVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gTm9uZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IE5vbmVcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IE5vbmVcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IE5vbmVcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gTm9uZVxuICB9XG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/Y2hlY2tfaW52YXJpYW50c1xuICAgICAgP2RldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICAgICAgP2R1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgICAgID9lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gICAgICA/ZmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICA/bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgICAgID9tYXhfbnVtX3RocmVhZHNcbiAgICAgID9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgICAgP21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gICAgICA/cmVjb3JkX2JhY2t0cmFjZXNcbiAgICAgID9yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gICAgICA/dGltaW5nX3doZWVsX2NvbmZpZ1xuICAgICAgKClcbiAgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplICh3b3JkX3NpemUgOiBXb3JkX3NpemUudCkgPVxuICBsZXQgbW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb24gaW5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiwgbGV2ZWxfYml0cyA9XG4gICAgbWF0Y2ggd29yZF9zaXplIHdpdGhcbiAgICB8IFczMiAtPiBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kLCBbIDEwOyAxMDsgOSBdXG4gICAgfCBXNjQgLT4gQWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpLCBbIDE0OyAxNTsgOTsgNiBdXG4gIGluXG4gIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgfmFsYXJtX3ByZWNpc2lvblxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMpXG4gICAgKClcbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSBXb3JkX3NpemUud29yZF9zaXplXG47O1xuXG5sZXQgZGVmYXVsdCA9XG4gICgqIEZvciBbZmlsZV9kZXNjcl93YXRjaGVyXSBhbmQgW21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc10gd2UgY2hvb3NlIHRoZSBkZWZhdWx0IGZvciB0aGVcbiAgICAgY29tbW9uIGNhc2UgdGhhdCBbZXBvbGxdIGlzIGF2YWlsYWJsZS4gIFRoZXJlIGlzIHNvbWUgYWRkaXRpb25hbCBjb2RlIGluXG4gICAgIFtBc3luY191bml4LkNvbmZpZ10gdGhhdCBjaGVja3Mgd2hldGhlciBbZXBvbGxdIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSwgYW5kIGlmIG5vdCxcbiAgICAgdXNlcyBbc2VsZWN0XSBhbmQgYSBzbWFsbGVyIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzLiAqKVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyA2MC4pXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgZmFsc2VcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGZhbHNlXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgRG9fbm90X3dhdGNoXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgKEVwb2xsX21heF9yZWFkeV9ldmVudHMuY3JlYXRlX2V4biAyNTYpXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBFcG9sbF9pZl90aW1lcmZkXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNYXhfaW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4wNSkpXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMuZGVmYXVsdFxuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgKE1heF9udW1fdGhyZWFkcy5jcmVhdGVfZXhuIDUwKVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgIFNvbWUgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gNTAwKVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuKSlcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIFtdXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIGZhbHNlXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyAxLilcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIEluaGVyaXRcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGV4YW1wbGUgPVxuICB7IGRlZmF1bHQgd2l0aFxuICAgIHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgRGVidWdfdGFnLlsgRmQ7IFNjaGVkdWxlciBdXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID1cbiAgICAgIFNvbWVcbiAgICAgICAgKENwdXNldFxuICAgICAgICAgICAoWyAwOyAxOyAyIF0gfD4gSW50LlNldC5vZl9saXN0IHw+IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS5DcHVzZXQuY3JlYXRlX2V4bikpXG4gIH1cbjs7XG5cbmxldCBlbnZpcm9ubWVudF92YXJpYWJsZSA9IFwiQVNZTkNfQ09ORklHXCJcblxubGV0IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKSA6IHN0cmluZyA9XG4gIGxldCBmaWVsZCB0b19zZXhwIGRlc2NyaXB0aW9uIGFjIGZpZWxkID1cbiAgICAoRmllbGQubmFtZSBmaWVsZCwgdG9fc2V4cCAoT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKSwgZGVzY3JpcHRpb24pXG4gICAgOjogYWNcbiAgaW5cbiAgbGV0IGZpZWxkcyA9XG4gICAgRmllbGRzLmZvbGRcbiAgICAgIH5pbml0OltdXG4gICAgICB+YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHNlbmQgYW4gZXhjZXB0aW9uIHRvIHRoZSB0b3BsZXZlbCBtb25pdG9yXG4gIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHRvIHJlZ3VsYXJseSBjaGVjayBpbnZhcmlhbnRzIG9mIGl0cyBpbnRlcm5hbFxuICBkYXRhIHN0cnVjdHVyZXMuICBUaGlzIGNhbiBzdWJzdGFudGlhbGx5IHNsb3cgZG93biB5b3VyIHByb2dyYW0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgcm91dGluZXMgdG8gY2hlY2sgaWYgdGhleSBhcmUgYmVpbmcgYWNjZXNzZWRcbiAgZnJvbSBzb21lIHRocmVhZCBvdGhlciB0aGFuIHRoZSB0aHJlYWQgY3VycmVudGx5IGhvbGRpbmcgdGhlIEFzeW5jXG4gIGxvY2ssIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGFuZCBjYW4gbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZyBiZWhhdmlvci5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZHVtcF9jb3JlX29uX2pvYl9kZWxheTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50XVxuICAgICAgICAgICBbIHt8XG4gIENhbiBiZSBzZXQgdG8gW0RvX25vdF93YXRjaF0gb3I6XG5cbiAgICAoV2F0Y2ggKChkdW1wX2lmX2RlbGF5ZWRfYnkgU1BBTikgKGhvd190b19kdW1wIEhPVykpKVxuXG4gIElmIHNldCB0byBbV2F0Y2hdLCB0aGVuIG9uIHByb2dyYW0gc3RhcnQgdGhpcyB3aWxsIHN0YXJ0IGEgcmVndWxhclxuICBBc3luYyBqb2IgdGhhdCBpbmNyZW1lbnRzIGEgY291bnRlciwgYW5kIGEgQyB0aHJlYWQgdGhhdCB3aWxsXG4gIGRldGVjdCBpZiB0aGF0IGpvYiBpcyBkZWxheWVkIGJ5IFtkdW1wX2lmX2RlbGF5ZWRfYnldLCBhbmQgaWYgc28sXG4gIHdpbGwgY29yZSBkdW1wIHRoZSBwcm9ncmFtLiAgSWYgYXZhaWxhYmxlLCBbL3Vzci9iaW4vZ2NvcmVdIGlzXG4gIHVzZWQgYnkgZGVmYXVsdCB0byBkdW1wIHRoZSBjb3JlLCB3aGljaCBzaG91bGQgYWxsb3cgdGhlIHByb2dyYW1cbiAgdG8gY29udGludWUgcnVubmluZy4gIE90aGVyd2lzZSwgW2Fib3J0XSB3aWxsIGJlIGNhbGxlZCBmcm9tIEMsXG4gIHdoaWNoIHdpbGwga2lsbCB0aGUgcHJvZ3JhbSB3aGlsZSBjYXVzaW5nIGEgY29yZSBkdW1wLiAgT25lIGNhblxuICBmb3JjZSBbYWJvcnRdIG9yIFtnY29yZV0gdmlhIFtob3dfdG9fZHVtcF0sIHdoaWNoIHNob3VsZCBiZSBvbmUgb2Y6XG4gIFtDYWxsX2Fib3J0XSwgW0NhbGxfZ2NvcmVdLCBvciBbRGVmYXVsdF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmVwb2xsX21heF9yZWFkeV9ldmVudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZHkgZXZlbnRzIHRoYXQgQXN5bmMncyBjYWxsIHRvIFtFcG9sbC53YWl0XVxuICB3aWxsIGhhbmRsZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZmlsZV9kZXNjcl93YXRjaGVyOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBGaWxlX2Rlc2NyX3dhdGNoZXIudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGRldGVybWluZXMgd2hhdCBPUyBzdWJzeXN0ZW0gQXN5bmMgdXNlcyB0byB3YXRjaCBmaWxlIGRlc2NyaXB0b3JzIGZvciBiZWluZyByZWFkeS5cbiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIFtlcG9sbF0gaWYgdGltZXJmZCdzIGFyZSBzdXBwb3J0ZWQgYW5kIGlmIG5vdCwgdXNlIFtzZWxlY3RdLlxuXG4gIEFsbG93ZWQgdmFsdWVzIGFyZTp8fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBGaWxlX2Rlc2NyX3dhdGNoZXIubGlzdCB+ZjpGaWxlX2Rlc2NyX3dhdGNoZXIudG9fc3RyaW5nKVxuICAgICAgICAgICA7IHt8LlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICAoZnVuIGRlZmF1bHQgLT5cbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgfl86XG4gICAgICAgICAgICAgICAgICAgIChjb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgWyBcIm1pbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICA7IGRlZmF1bHQgfD4gTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnJhdyB8PiBJbnQudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgICAgICAgICAgICA7IFwiIFt1bGltaXQgLW4gLUhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOiBzdHJpbmcpXSlcbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIGFsbG93ZWQgYXQgYW55IG9uZSB0aW1lLnx9IF0pXG4gICAgICB+bWF4X251bV90aHJlYWRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX3RocmVhZHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IEFzeW5jIHdpbGwgY3JlYXRlIHRvIGRvIGJsb2NraW5nXG4gIHN5c3RlbSBjYWxscyBhbmQgaGFuZGxlIGNhbGxzIHRvIFtJbl90aHJlYWQucnVuXS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIHNjaGVkdWxlciB3aWxsIHBhdXNlIGJldHdlZW4gY3ljbGVzXG4gIHdoZW4gaXQgaGFzIG5vIGpvYnMgYW5kIGlzIGdvaW5nIHRvIHdhaXQgZm9yIEkvTy4gIEluIHByaW5jaXBsZSBvbmVcbiAgZG9lc24ndCBuZWVkIHRoaXMsIGFuZCB3ZSBjb3VsZCB1c2UgYW4gaW5maW5pdGUgdGltZW91dC4gIFdlIGluc3RlYWRcbiAgdXNlIGEgc21hbGwgdGltZW91dCAoYnkgZGVmYXVsdCksIHRvIGJlIG1vcmUgcm9idXN0IHRvIGJ1Z3MgdGhhdFxuICBjb3VsZCBwcmV2ZW50IEFzeW5jIGZyb20gd2FraW5nIHVwIGFuZCBzZXJ2aWNpbmcgZXZlbnRzLiAgRm9yXG4gIGV4YW1wbGUsIGFzIG9mIDIwMTMtMDEsIHRoZSBPQ2FtbCBydW50aW1lIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyBpdFxuICB0byBub3QgbmVjZXNzYXJpbHkgcnVuIGFuIE9DYW1sIHNpZ25hbCBoYW5kbGVyIGluIGEgdGltZWx5IG1hbm5lci5cbiAgVGhpcyBpbiB0dXJuIGNhbiBjYXVzZSBhIHNpbXBsZSBBc3luYyBwcm9ncmFtIHRoYXQgaXMgd2FpdGluZyBvbiBhXG4gIHNpZ25hbCB0byBoYW5nLCB3aGVuIGluIGZhY3QgaXQgc2hvdWxkIGhhbmRsZSB0aGUgc2lnbmFsLlxuXG4gIFdlIHVzZSA1MG1zIGFzIHRoZSBkZWZhdWx0IHRpbWVvdXQsIGJlY2F1c2UgaXQgaXMgaW5mcmVxdWVudCBlbm91Z2hcbiAgdG8gaGF2ZSBhIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBhbmQgZnJlcXVlbnQgZW5vdWdoIHRoYXRcbiAgdGhlIGxhdGVuY3kgd291bGQgdHlwaWNhbGx5IGJlIG5vdCBub3RpY2VhYmxlLiAgQWxzbywgNTBtcyBpcyB3aGF0XG4gIHRoZSBPQ2FtbCB0aWNrZXIgdGhyZWFkIHVzZXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBqb2JzIHRoYXQgd2lsbCBiZSBkb25lIGF0IGVhY2ggcHJpb3JpdHkgd2l0aGluXG4gIGVhY2ggQXN5bmMgY3ljbGUuICBUaGlzIGxpbWl0cyBob3cgbWFueSBqb2JzIHRoZSBzY2hlZHVsZXIgd2lsbCBydW5cbiAgYmVmb3JlIHBhdXNpbmcgdG8gY2hlY2sgZm9yIEkvTy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWluX2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1pbmltdW0gdGltZW91dCB0aGUgc2NoZWR1bGVyIHdpbGwgcGFzcyB0byB0aGUgT1Mgd2hlbiBpdCBjaGVja3NcbiAgZm9yIEkvTyBiZXR3ZWVuIGN5Y2xlcy4gIFRoaXMgaXMgemVybyBieSBkZWZhdWx0LiAgU2V0dGluZyBpdCB0byBhXG4gIG5vbnplcm8gdmFsdWUgaXMgdXNlZCB0byBpbmNyZWFzZSB0aHJlYWQgZmFpcm5lc3MgYmV0d2VlbiB0aGUgc2NoZWR1bGVyXG4gIGFuZCBvdGhlciB0aHJlYWRzLiAgQSBwbGF1c2libGUgc2V0dGluZyBpcyAxdXMuICBUaGlzIGlzIGFsc29cbiAgY29uZmlndXJhYmxlIGluIE9DYW1sIHZpYSBbU2NoZWR1bGVyLnNldF9taW5faW50ZXJfY3ljbGVfdGltZW91dF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRGVidWdfdGFnLnQgbGlzdF1cbiAgICAgICAgICAgWyB7fFxuICBBIGxpc3Qgb2YgdGFncyBzcGVjaWZ5aW5nIHdoaWNoIEFzeW5jIGZ1bmN0aW9ucyBzaG91bGQgcHJpbnQgZGVidWdcbiAgbWVzc2FnZXMgdG8gc3RkZXJyLiAgRWFjaCB0YWcgaWRlbnRpZmllcyBhIGdyb3VwIG9mIHJlbGF0ZWQgQXN5bmNcbiAgZnVuY3Rpb25zLiAgVGhlIHRhZyBbYWxsXSBtZWFucyB0byBwcmludCBkZWJ1ZyBtZXNzYWdlcyBmb3IgYWxsXG4gIGZ1bmN0aW9ucy4gIEFsbG93ZWQgdmFsdWVzIGFyZTpcblxufH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBEZWJ1Z190YWcubGlzdCB+ZjooZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGNvbmNhdCBbIFwiICAgIFwiOyBEZWJ1Z190YWcudG9fc3RyaW5nIGQ7IFwiXFxuXCIgXSkpXG4gICAgICAgICAgIDsge3xcbiAgVHVybmluZyBvbiBkZWJ1ZyBtZXNzYWdlcyB3aWxsIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIG1vc3QgcHJvZ3JhbXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIHRoaXMgd2lsbCBjYXVzZSBBc3luYyB0byBrZWVwIGluIHRoZSBleGVjdXRpb24gY29udGV4dCB0aGVcbiAgaGlzdG9yeSBvZiBzdGFjayBiYWNrdHJhY2VzIChvYnRhaW5lZCB2aWEgW0JhY2t0cmFjZS5nZXRdKSB0aGF0IGxlZFxuICB0byB0aGUgY3VycmVudCBqb2IuICBJZiBhbiBBc3luYyBqb2IgaGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24sXG4gIHRoaXMgYmFja3RyYWNlIGhpc3Rvcnkgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUgZXhjZXB0aW9uLiAgSW5cbiAgcGFydGljdWxhciB0aGUgaGlzdG9yeSB3aWxsIGFwcGVhciBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIHRoYXRcbiAgcmVhY2hlcyB0aGUgbWFpbiBtb25pdG9yLiAgVGhpcyBjYW4gaGF2ZSBhIHN1YnN0YW50aWFsIHBlcmZvcm1hbmNlXG4gIGltcGFjdCwgYm90aCBpbiBydW5uaW5nIHRpbWUgYW5kIHNwYWNlIHVzYWdlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHByaW50IGEgbWVzc2FnZSB0byBzdGRlcnIgZXZlcnkgc2Vjb25kIGlmXG4gIHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudF1cbiAgICAgICAgICAgWyB7fFxuICAgV2hldGhlciBhbmQgaG93IHRocmVhZHMgaW4gdGhlIHRocmVhZCBwb29sIHNob3VsZCBiZSBhZmZpbml0aXplZCB0byBDUFVzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aW1pbmdfd2hlZWxfY29uZmlnOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBpcyB1c2VkIHRvIGFkanVzdCB0aGUgdGltZS9zcGFjZSB0cmFkZW9mZiBpbiB0aGUgdGltaW5nIHdoZWVsXG4gIHVzZWQgdG8gaW1wbGVtZW50IEFzeW5jJ3MgY2xvY2suICBUaW1lIGlzIHNwbGl0IGludG8gaW50ZXJ2YWxzIG9mXG4gIHNpemUgW2FsYXJtX3ByZWNpc2lvbl0sIGFuZCBhbGFybXMgd2l0aCB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbFxuICBmaXJlIGluIHRoZSBzYW1lIGN5Y2xlLiAgTGV2ZWwgW2ldIGluIHRoZSB0aW1pbmcgd2hlZWwgaGFzIGFuXG4gIGFycmF5IG9mIHNpemUgWzJeYl0sIHdoZXJlIFtiXSBpcyB0aGUgW2ldJ3RoIGVudHJ5IGluIFtsZXZlbF9iaXRzXS5cbnx9XG4gICAgICAgICAgIF0pXG4gIGluXG4gIGNvbmNhdFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChMaXN0LnNvcnQgZmllbGRzIH5jb21wYXJlOihmdW4gKG5hbWUxLCBfLCBfKSAobmFtZTIsIF8sIF8pIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbXBhcmUgbmFtZTEgbmFtZTIpKVxuICAgICAgIH5mOihmdW4gKG5hbWUsIGRlZmF1bHQsIGRlc2NyaXB0aW9uKSAtPlxuICAgICAgICAgY29uY2F0XG4gICAgICAgICAgIChcIlxcblwiIDo6IG5hbWUgOjogXCIgKGRlZmF1bHQgXCIgOjogU2V4cC50b19zdHJpbmcgZGVmYXVsdCA6OiBcIilcIiA6OiBkZXNjcmlwdGlvbikpKVxuOztcblxubGV0IGhlbHBfbWVzc2FnZSAoKSA9XG4gIGNvbmNhdFxuICAgIFsgXCJUaGUgXCJcbiAgICA7IGVudmlyb25tZW50X3ZhcmlhYmxlXG4gICAgOyB7fCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhZmZlY3RzIEFzeW5jXG5pbiB2YXJpb3VzIHdheXMuICBJdHMgdmFsdWUgc2hvdWxkIGJlIGEgc2V4cCBvZiB0aGUgZm9sbG93aW5nIGZvcm0sXG53aGVyZSBhbGwgZmllbGRzIGFyZSBvcHRpb25hbDpcblxufH1cbiAgICA7IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IGV4YW1wbGUpXG4gICAgOyB7fFxuXG5IZXJlIGlzIGFuIGV4cGxhbmF0aW9uIG9mIGVhY2ggZmllbGQuXG58fVxuICAgIDsgZmllbGRfZGVzY3JpcHRpb25zICgpXG4gICAgXVxuOztcblxubGV0IHVzYWdlICgpID1cbiAgZXByaW50ZiBcIiVzJSFcIiAoaGVscF9tZXNzYWdlICgpKTtcbiAgZXhpdCAxXG47O1xuXG5sZXQgdCA9XG4gIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IElucmlhX3N5cy5nZXRlbnYgZW52aXJvbm1lbnRfdmFyaWFibGUpIHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5XG4gIHwgU29tZSBcIlwiIC0+IHVzYWdlICgpXG4gIHwgU29tZSBzdHJpbmcgLT5cbiAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gdF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBzdHJpbmcpKSB3aXRoXG4gICAgIHwgT2sgdCAtPiB0XG4gICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgZXByaW50ZlxuICAgICAgICAgXCIlc1xcblxcblwiXG4gICAgICAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAoRXJyb3Iuc2V4cF9vZl90XG4gICAgICAgICAgICAgICAoRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgXCJpbnZhbGlkIHZhbHVlIGZvciAlcyBlbnZpcm9ubWVudCB2YXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF92YXJpYWJsZSlcbiAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgWyVzZXhwX29mOiBleG5dKSkpO1xuICAgICAgIHVzYWdlICgpKVxuOztcblxubW9kdWxlIFByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHN0cnVjdFxuICBsZXQgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZyA9XG4gICAgbWF0Y2ggdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGwgdGFnIH5lcXVhbDpEZWJ1Z190YWcuZXF1YWxcbiAgOztcblxuICBsZXQgYWxsID0gcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIEFsbFxuICBsZXQgZGVidWcgdGFnID0gYWxsIHx8IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWdcbiAgbGV0IGNsb2NrID0gZGVidWcgQ2xvY2tcbiAgbGV0IGZkID0gZGVidWcgRmRcbiAgbGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IGRlYnVnIEZpbGVfZGVzY3Jfd2F0Y2hlclxuICBsZXQgZmluYWxpemVycyA9IGRlYnVnIEZpbmFsaXplcnNcbiAgbGV0IGludGVycnVwdG9yID0gZGVidWcgSW50ZXJydXB0b3JcbiAgbGV0IG1vbml0b3IgPSBkZWJ1ZyBNb25pdG9yXG4gIGxldCBtb25pdG9yX3NlbmRfZXhuID0gZGVidWcgTW9uaXRvcl9zZW5kX2V4blxuICBsZXQgcGFyYWxsZWwgPSBkZWJ1ZyBQYXJhbGxlbFxuICBsZXQgcmVhZGVyID0gZGVidWcgUmVhZGVyXG4gIGxldCBzY2hlZHVsZXIgPSBkZWJ1ZyBTY2hlZHVsZXJcbiAgbGV0IHNodXRkb3duID0gZGVidWcgU2h1dGRvd25cbiAgbGV0IHRocmVhZF9wb29sID0gZGVidWcgVGhyZWFkX3Bvb2xcbiAgbGV0IHRocmVhZF9zYWZlID0gZGVidWcgVGhyZWFkX3NhZmVcbiAgbGV0IHdyaXRlciA9IGRlYnVnIFdyaXRlclxuZW5kXG5cbmxldCAoICEhICkgZmllbGQgPVxuICBPcHRpb24udmFsdWUgKEZpZWxkLmdldCBmaWVsZCB0KSB+ZGVmYXVsdDooT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKVxuOztcblxubGV0IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IGNoZWNrX2ludmFyaWFudHMgPSAhIUZpZWxkcy5jaGVja19pbnZhcmlhbnRzXG5sZXQgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gISFGaWVsZHMuZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG5sZXQgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9ICEhRmllbGRzLmVwb2xsX21heF9yZWFkeV9ldmVudHNcbmxldCB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSAhIUZpZWxkcy50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbmxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSAhIUZpZWxkcy5maWxlX2Rlc2NyX3dhdGNoZXJcbmxldCBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gISFGaWVsZHMubWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG5sZXQgbWF4X251bV90aHJlYWRzID0gISFGaWVsZHMubWF4X251bV90aHJlYWRzXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSAhIUZpZWxkcy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxubGV0IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCByZWNvcmRfYmFja3RyYWNlcyA9ICEhRmllbGRzLnJlY29yZF9iYWNrdHJhY2VzXG5sZXQgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCB0aW1pbmdfd2hlZWxfY29uZmlnID0gISFGaWVsZHMudGltaW5nX3doZWVsX2NvbmZpZ1xubGV0IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSAhIUZpZWxkcy5kdW1wX2NvcmVfb25fam9iX2RlbGF5XG5cbmxldCB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFNvbWUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCB0YXNrX2lkID0gcmVmIChmdW4gKCkgLT4gU2V4cC5BdG9tIFwiPG5vIHRhc2sgaWQ+XCIpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgcmVmXG5cbigqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBPcHRpb25fYXJyYXkuQ2hlYXBfb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlclxuICAgcGxhY2Ugd2hlcmUgd2Ugd2FudCBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxubGV0IG5vbmUgPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIE9iai5hYnN0cmFjdF90YWcgMSlcbmxldCBjcmVhdGUgKCkgPSByZWYgbm9uZVxubGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgIXggbm9uZVxubGV0IGlzX3NvbWUgeCA9IG5vdCAoaXNfbm9uZSB4KVxubGV0IGdldF9zb21lX2V4biB4ID0gaWYgaXNfbm9uZSB4IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb3B0aW9uLmdldF9zb21lX2V4blwiXSBlbHNlICF4XG5sZXQgZ2V0IHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAhdFxubGV0IHVuc2FmZV9nZXQgdCA9ICF0XG5sZXQgc2V0X3NvbWUgdCB2ID0gdCA6PSB2XG5sZXQgc2V0X25vbmUgdCA9IHQgOj0gbm9uZVxuXG5sZXQgc2V0IHQgdiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE5vbmUgLT4gc2V0X25vbmUgdFxuICB8IFNvbWUgdiAtPiBzZXRfc29tZSB0IHZcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBvcHRpb24pXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIE9wdGlvbi5pdGVyIChnZXQgdCkgfmY6aW52YXJpYW50X2EpXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX2dldFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4oKiBUaGlzIHBvb2wgaG9sZHMgbm9kZXMgdGhhdCB3b3VsZCBiZSByZXByZXNlbnRlZCBtb3JlIHRyYWRpdGlvbmFsbHkgYXM6XG5cbiAgIHtbXG4gICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgfCBFbXB0eVxuICAgICAgIHwgSGVhcCBvZiAnYSAqICdhIHQgbGlzdCBdfVxuXG4gICBXZSB3aWxsIHJlcHJlc2VudCB0aGVtIGFzIGEgbGVmdC1jaGlsZCwgcmlnaHQtc2libGluZyB0cmVlIGluIGEgdHJpcGxldFxuICAgKHZhbHVlICogbGVmdF9jaGlsZCAqIHJpZ2h0X3NpYmxpbmcpLiAgVGhlIGxlZnQgY2hpbGQgYW5kIGFsbCByaWdodCBzaWJsaW5nc1xuICAgb2YgdGhlIGxlZnQgY2hpbGQgZm9ybSBhIGxpbmtlZCBsaXN0IHJlcHJlc2VudGluZyB0aGUgc3ViaGVhcHMgb2YgYSBnaXZlbiBoZWFwOlxuXG4gICB7dlxuICAgICAgICAgQVxuICAgICAgICAvXG4gICAgICAgQiAtPiBDIC0+IEQgLT4gRSAtPiBGXG4gICAgICAvICAgICAgICAgLyAgICAgICAgIC9cbiAgICAgRyAgICAgICAgIEgtPkktPkogICBLLT5MXG4gICB2fSAqKVxuXG5tb2R1bGUgTm9kZSA6IHNpZ1xuICAoKiBFeHBvc2luZyBbcHJpdmF0ZSBpbnRdIGlzIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJlY2F1c2UgaXQgYWxsb3dzXG4gICAgIHRoZSBjb21waWxlciB0byBza2lwIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuXG4gIHR5cGUgJ2EgdCA9IHByaXZhdGUgaW50XG5cbiAgbW9kdWxlIElkIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjcmVhdGUgOiBtaW5fc2l6ZTppbnQgLT4gJ2EgdFxuICAgIHZhbCBpc19mdWxsIDogJ2EgdCAtPiBib29sXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIGdyb3cgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2Egbm9kZSAtPiAnYSBub2RlICogJ2EgdFxuICBlbmRcblxuICAoKiogW2FsbG9jYXRlIHYgfnBvb2xdIGFsbG9jYXRlcyBhIG5ldyBub2RlIGZyb20gdGhlIHBvb2wgd2l0aCBubyBjaGlsZCBvciBzaWJsaW5nICopXG4gIHZhbCBhbGxvY2F0ZSA6ICdhIC0+IHBvb2w6J2EgUG9vbC50IC0+IGlkOklkLnQgLT4gJ2EgdFxuXG4gICgqKiBbZnJlZSB0IH5wb29sXSBmcmVlcyBbdF0gZm9yIHJldXNlLiAgSXQgaXMgYW4gZXJyb3IgdG8gYWNjZXNzIFt0XSBhZnRlciB0aGlzLiAqKVxuICB2YWwgZnJlZSA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBhIHNwZWNpYWwgW3RdIHRoYXQgcmVwcmVzZW50cyB0aGUgZW1wdHkgbm9kZSAqKVxuICB2YWwgZW1wdHkgOiB1bml0IC0+ICdhIHRcblxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAoKiogW3ZhbHVlX2V4biB0IH5wb29sXSByZXR1cm4gdGhlIHZhbHVlIG9mIFt0XSwgcmFpc2UgaWYgW2lzX2VtcHR5IHRdICopXG4gIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhXG5cbiAgdmFsIGlkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiBJZC50XG4gIHZhbCBjaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuICB2YWwgc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbcHJldiB0XSBpcyBlaXRoZXIgdGhlIHBhcmVudCBvZiBbdF0gb3IgdGhlIHNpYmxpbmcgaW1tZWRpYXRlbHkgbGVmdCBvZiBbdF0gKilcbiAgdmFsIHByZXYgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2FkZF9jaGlsZCB0IH5jaGlsZCB+cG9vbF0gQWRkIGEgY2hpbGQgdG8gW3RdLCBwcmVzZXJ2aW5nIGV4aXN0aW5nIGNoaWxkcmVuIGFzXG4gICAgICBzaWJsaW5ncyBvZiBbY2hpbGRdLiBbdF0gYW5kIFtjaGlsZF0gc2hvdWxkIG5vdCBiZSBlbXB0eSBhbmQgW2NoaWxkXSBzaG91bGQgaGF2ZSBub1xuICAgICAgc2libGluZyBhbmQgaGF2ZSBubyBwcmV2IG5vZGUuICopXG4gIHZhbCBhZGRfY2hpbGQgOiAnYSB0IC0+IGNoaWxkOidhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIHNpYmxpbmcgKilcbiAgdmFsIGRpc2Nvbm5lY3Rfc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIGNoaWxkICopXG4gIHZhbCBkaXNjb25uZWN0X2NoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtkZXRhY2ggdCB+cG9vbF0gcmVtb3ZlcyBbdF0gZnJvbSB0aGUgdHJlZSwgYWRqdXN0aW5nIHBvaW50ZXJzIGFyb3VuZCBpdC4gQWZ0ZXJcbiAgICAgIFtkZXRhY2hdLCBbdF0gaXMgdGhlIHJvb3Qgb2YgYSBzdGFuZGFsb25lIGhlYXAsIHdoaWNoIGlzIGRldGFjaGVkIGZyb20gdGhlIG9yaWdpbmFsXG4gICAgICBoZWFwLiAqKVxuICB2YWwgZGV0YWNoIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIElkID0gSW50XG5cbiAgbGV0IGR1bW15X2lkIDogSWQudCA9IC0xXG5cbiAgdHlwZSAnYSBub2RlID1cbiAgICAoJ2EsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsIElkLnQpIFBvb2wuU2xvdHMudDVcblxuICB0eXBlICdhIHQgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gIGxldCBlbXB0eSA9IFBvaW50ZXIubnVsbFxuICBsZXQgaXNfZW1wdHkgPSBQb2ludGVyLmlzX251bGxcbiAgbGV0IGVxdWFsID0gUG9pbnRlci5waHlzX2VxdWFsXG4gIGxldCB2YWx1ZSB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MFxuICBsZXQgY2hpbGQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDFcbiAgbGV0IHNpYmxpbmcgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDJcbiAgbGV0IHByZXYgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDNcbiAgbGV0IGlkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQ0XG5cbiAgKCogbGV0IHNldF92YWx1ZSAgIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDAgdiAqKVxuICBsZXQgc2V0X2NoaWxkIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDEgdlxuICBsZXQgc2V0X3NpYmxpbmcgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MiB2XG4gIGxldCBzZXRfcHJldiB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQzIHZcblxuICBsZXQgdmFsdWVfZXhuIHQgfnBvb2wgPVxuICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgdmFsdWUgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBhbGxvY2F0ZSB2YWx1ZSB+cG9vbCB+aWQgPSBQb29sLm5ldzUgcG9vbCB2YWx1ZSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgKGVtcHR5ICgpKSBpZFxuICBsZXQgZnJlZSB0IH5wb29sID0gUG9vbC51bnNhZmVfZnJlZSBwb29sIHRcblxuICBsZXQgZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgPVxuICAgIGxldCBzaWJsaW5nID0gc2libGluZyB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X3NpYmxpbmcgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgc2libGluZyAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBzaWJsaW5nXG4gIDs7XG5cbiAgbGV0IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCA9XG4gICAgbGV0IGNoaWxkID0gY2hpbGQgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfY2hpbGQgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgY2hpbGQgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgY2hpbGRcbiAgOztcblxuICBsZXQgYWRkX2NoaWxkIHQgfmNoaWxkOm5ld19jaGlsZCB+cG9vbCA9XG4gICAgKCogYXNzZXJ0aW9ucyB3ZSB3b3VsZCBtYWtlLCBidXQgZm9yIHNwZWVkOlxuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IG5ld19jaGlsZCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHNpYmxpbmcgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAocHJldiBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAqKVxuICAgIGxldCBjdXJyZW50X2NoaWxkID0gZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sIGluXG4gICAgKCogYWRkIFtuZXdfY2hpbGRdIHRvIHRoZSBsaXN0IG9mIFt0XSdzIGNoaWxkcmVuICh3aGljaCBtYXkgYmUgZW1wdHkpICopXG4gICAgc2V0X3NpYmxpbmcgbmV3X2NoaWxkIGN1cnJlbnRfY2hpbGQgfnBvb2w7XG4gICAgaWYgbm90IChpc19lbXB0eSBjdXJyZW50X2NoaWxkKSB0aGVuIHNldF9wcmV2IGN1cnJlbnRfY2hpbGQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9jaGlsZCB0IG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfcHJldiBuZXdfY2hpbGQgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBkZXRhY2ggdCB+cG9vbCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByZXYgPSBwcmV2IHQgfnBvb2wgaW5cbiAgICAgIGlmIG5vdCAoaXNfZW1wdHkgcHJldilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcmVsYXRpb25fdG9fcHJldiA9IGlmIGVxdWFsIHQgKGNoaWxkIHByZXYgfnBvb2wpIHRoZW4gYGNoaWxkIGVsc2UgYHNpYmxpbmcgaW5cbiAgICAgICAgc2V0X3ByZXYgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgICBsZXQgc2libGluZyA9IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sIGluXG4gICAgICAgIChtYXRjaCByZWxhdGlvbl90b19wcmV2IHdpdGhcbiAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBwcmV2IHNpYmxpbmcgfnBvb2xcbiAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgcHJldiBzaWJsaW5nIH5wb29sKTtcbiAgICAgICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKSB0aGVuIHNldF9wcmV2IHNpYmxpbmcgcHJldiB+cG9vbCkpXG4gIDs7XG5cbiAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBub2RlIFBvb2wudFxuICAgIHR5cGUgbm9ucmVjICdhIG5vZGUgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+bWluX3NpemU6Y2FwYWNpdHkgOiBhIHQgPVxuICAgICAgUG9vbC5jcmVhdGVcbiAgICAgICAgUG9vbC5TbG90cy50NVxuICAgICAgICB+Y2FwYWNpdHlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgICggKE9iai5tYWdpYyBOb25lIDogYSlcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIGR1bW15X2lkIClcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IFBvb2wuaXNfZnVsbCB0XG4gICAgbGV0IGxlbmd0aCB0ID0gUG9vbC5sZW5ndGggdFxuICAgIGxldCBncm93IHQgPSBQb29sLmdyb3cgdFxuXG4gICAgbGV0IGNvcHkgdCBzdGFydCA9XG4gICAgICBsZXQgdCcgPSBjcmVhdGUgfm1pbl9zaXplOihQb29sLmNhcGFjaXR5IHQpIGluXG4gICAgICBsZXQgY29weV9ub2RlIG5vZGUgdG9fdmlzaXQgPVxuICAgICAgICBpZiBpc19lbXB0eSBub2RlXG4gICAgICAgIHRoZW4gZW1wdHkgKCksIHRvX3Zpc2l0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHdlIHVzZSB0aGUgc2FtZSBpZCwgYnV0IHRoYXQncyBvayBzaW5jZSBpZHMgc2hvdWxkIGJlIHVuaXF1ZSBwZXIgaGVhcCAqKVxuICAgICAgICAgIGxldCBuZXdfbm9kZSA9XG4gICAgICAgICAgICBhbGxvY2F0ZSAodmFsdWVfZXhuIG5vZGUgfnBvb2w6dCkgfnBvb2w6dCcgfmlkOihpZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdG9fdmlzaXQgPVxuICAgICAgICAgICAgKG5ld19ub2RlLCBgY2hpbGQsIGNoaWxkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IChuZXdfbm9kZSwgYHNpYmxpbmcsIHNpYmxpbmcgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogdG9fdmlzaXRcbiAgICAgICAgICBpblxuICAgICAgICAgIG5ld19ub2RlLCB0b192aXNpdClcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCAobm9kZV90b191cGRhdGUsIHNsb3QsIG5vZGVfdG9fY29weSkgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBuZXdfbm9kZSwgdG9fdmlzaXQgPSBjb3B5X25vZGUgbm9kZV90b19jb3B5IHJlc3QgaW5cbiAgICAgICAgICAobWF0Y2ggc2xvdCB3aXRoXG4gICAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0J1xuICAgICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnKTtcbiAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IG5ld19ub2RlKSB0aGVuIHNldF9wcmV2IG5ld19ub2RlIG5vZGVfdG9fdXBkYXRlIH5wb29sOnQnO1xuICAgICAgICAgIGxvb3AgdG9fdmlzaXRcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N0YXJ0LCB0b192aXNpdCA9IGNvcHlfbm9kZSBzdGFydCBbXSBpblxuICAgICAgbG9vcCB0b192aXNpdDtcbiAgICAgIG5ld19zdGFydCwgdCdcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7ICgqIGNtcCBpcyBwbGFjZWQgZmlyc3QgdG8gc2hvcnQtY2lyY3VpdCBwb2x5bW9ycGhpYyBjb21wYXJlICopXG4gICAgY21wIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgbXV0YWJsZSBwb29sIDogJ2EgTm9kZS5Qb29sLnRcbiAgOyAoKiBpbnZhcmlhbnQ6ICBbcm9vdF0gbmV2ZXIgaGFzIGEgc2libGluZyAqKVxuICAgIG11dGFibGUgcm9vdCA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA6IGludFxuICB9XG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgKG5vZGUsIGV4cGVjdGVkX3ByZXYsIG1heWJlX3BhcmVudF92YWx1ZSkgOjogcmVzdCAtPlxuICAgICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IG5vZGUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRoaXNfdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbCBpblxuICAgICAgICBhc3NlcnQgKE5vZGUuZXF1YWwgKE5vZGUucHJldiBub2RlIH5wb29sOnQucG9vbCkgZXhwZWN0ZWRfcHJldik7XG4gICAgICAgIE9wdGlvbi5pdGVyIG1heWJlX3BhcmVudF92YWx1ZSB+ZjooZnVuIHBhcmVudF92YWx1ZSAtPlxuICAgICAgICAgIGFzc2VydCAodC5jbXAgcGFyZW50X3ZhbHVlIHRoaXNfdmFsdWUgPD0gMCkpO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKChOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBTb21lIHRoaXNfdmFsdWUpXG4gICAgICAgICAgIDo6IChOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIG1heWJlX3BhcmVudF92YWx1ZSlcbiAgICAgICAgICAgOjogcmVzdCkpXG4gICAgICBlbHNlIGxvb3AgcmVzdFxuICBpblxuICBhc3NlcnQgKE5vZGUuaXNfZW1wdHkgdC5yb290IHx8IE5vZGUuaXNfZW1wdHkgKE5vZGUuc2libGluZyB0LnJvb3QgfnBvb2w6dC5wb29sKSk7XG4gIGxvb3AgWyB0LnJvb3QsIE5vZGUuZW1wdHkgKCksIE5vbmUgXVxuOztcblxubGV0IGNyZWF0ZSA/KG1pbl9zaXplID0gMSkgfmNtcCAoKSA9XG4gIHsgY21wXG4gIDsgcG9vbCA9IE5vZGUuUG9vbC5jcmVhdGUgfm1pbl9zaXplXG4gIDsgcm9vdCA9IE5vZGUuZW1wdHkgKClcbiAgOyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzID0gMFxuICB9XG47O1xuXG5sZXQgY29weSB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9ID1cbiAgbGV0IHJvb3QsIHBvb2wgPSBOb2RlLlBvb2wuY29weSBwb29sIHJvb3QgaW5cbiAgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfVxuOztcblxubGV0IGFsbG9jYXRlIHQgdiA9XG4gIGlmIE5vZGUuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBOb2RlLlBvb2wuZ3JvdyB0LnBvb2w7XG4gIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyA8LSB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgKyAxO1xuICBOb2RlLmFsbG9jYXRlIHYgfnBvb2w6dC5wb29sIH5pZDooTm9kZS5JZC5vZl9pbnQgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCByb290MSwgcm9vdDIgd2l0aFxuICAgICB8IE5vbmUsIGggfCBoLCBOb25lIC0+IGhcbiAgICAgfCBTb21lIChOb2RlICh2MSwgY2hpbGRyZW4xKSksIFNvbWUgKE5vZGUgKHYyLCBjaGlsZHJlbjIpKSAtPlxuICAgICAgIGlmIHYxIDwgdjJcbiAgICAgICB0aGVuIFNvbWUgKE5vZGUgKHYxLCByb290MiA6OiBjaGlsZHJlbjEpKVxuICAgICAgIGVsc2UgU29tZSAoTm9kZSAodjIsIHJvb3QxIDo6IGNoaWxkcmVuMikpXG4gICBdfVxuXG4gICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgbmVpdGhlciByb290IGhhcyBhIHByZXYgbm9kZSAodXN1YWxseSBiZWNhdXNlIHRoZSBpbnB1dHMgY29tZVxuICAgZnJvbSBbZGlzY29ubmVjdF8qXSBvciBhcmUgdGhlIHRvcCBvZiB0aGUgaGVhcCBvciBhcmUgdGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uKS4gKilcbmxldCBtZXJnZSB0IHJvb3QxIHJvb3QyID1cbiAgaWYgTm9kZS5pc19lbXB0eSByb290MVxuICB0aGVuIHJvb3QyXG4gIGVsc2UgaWYgTm9kZS5pc19lbXB0eSByb290MlxuICB0aGVuIHJvb3QxXG4gIGVsc2UgKFxuICAgIGxldCBhZGRfY2hpbGQgdCBub2RlIH5jaGlsZCA9XG4gICAgICBOb2RlLmFkZF9jaGlsZCBub2RlIH5wb29sOnQucG9vbCB+Y2hpbGQ7XG4gICAgICBub2RlXG4gICAgaW5cbiAgICBsZXQgdjEgPSBOb2RlLnZhbHVlX2V4biByb290MSB+cG9vbDp0LnBvb2wgaW5cbiAgICBsZXQgdjIgPSBOb2RlLnZhbHVlX2V4biByb290MiB+cG9vbDp0LnBvb2wgaW5cbiAgICBpZiB0LmNtcCB2MSB2MiA8IDBcbiAgICB0aGVuIGFkZF9jaGlsZCB0IHJvb3QxIH5jaGlsZDpyb290MlxuICAgIGVsc2UgYWRkX2NoaWxkIHQgcm9vdDIgfmNoaWxkOnJvb3QxKVxuOztcblxubGV0IHRvcF9leG4gdCA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgdC5yb290XG4gIHRoZW4gZmFpbHdpdGggXCJIZWFwLnRvcF9leG4gY2FsbGVkIG9uIGFuIGVtcHR5IGhlYXBcIlxuICBlbHNlIE5vZGUudmFsdWVfZXhuIHQucm9vdCB+cG9vbDp0LnBvb2xcbjs7XG5cbmxldCB0b3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9leG4gdClcblxubGV0IGFkZF9ub2RlIHQgdiA9XG4gIGxldCBub2RlID0gYWxsb2NhdGUgdCB2IGluXG4gIHQucm9vdCA8LSBtZXJnZSB0IHQucm9vdCBub2RlO1xuICBub2RlXG47O1xuXG5sZXQgYWRkIHQgdiA9IGlnbm9yZSAoYWRkX25vZGUgdCB2IDogXyBOb2RlLnQpXG5cbigqIFttZXJnZV9wYWlyc10gdGFrZXMgYSBsaXN0IG9mIGhlYXAgcm9vdHMgYW5kIG1lcmdlcyBjb25zZWN1dGl2ZSBwYWlycywgcmVkdWNpbmcgdGhlXG4gICBsaXN0IG9mIGxlbmd0aCBuIHRvIG4vMi4gIFRoZW4gaXQgbWVyZ2VzIHRoZSBtZXJnZWQgcGFpcnMgaW50byBhIHNpbmdsZSBoZWFwLiAgT25lXG4gICBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIGlzIHNvbWV3aGF0IGxpa2UgYnVpbGRpbmcgYSBzaW5nbGUgbGV2ZWwgb2YgYSBiaW5hcnkgdHJlZS5cblxuICAgVGhlIG91dHB1dCBoZWFwIGRvZXMgbm90IGNvbnRhaW4gdGhlIHZhbHVlIHRoYXQgd2FzIGF0IHRoZSByb290IG9mIHRoZSBpbnB1dCBoZWFwLlxuXG4gICBXZSBicmVhayB0aGUgZnVuY3Rpb24gaW50byB0d28gcGFydHMuICBBIGZpcnN0IHN0YWdlIHRoYXQgaXMgd2lsbGluZyB0byB1c2UgbGltaXRlZFxuICAgc3RhY2sgaW5zdGVhZCBvZiBoZWFwIGFsbG9jYXRpb24gZm9yIGJvb2trZWVwaW5nLCBhbmQgYSBzZWNvbmQgc3RhZ2UgdGhhdCBzaGlmdHMgdG9cbiAgIHVzaW5nIGEgbGlzdCBhcyBhbiBhY2N1bXVsYXRvciBpZiB3ZSBnbyB0b28gZGVlcC5cblxuICAgVGhpcyBjYW4gYmUgbWFkZSB0YWlsIHJlY3Vyc2l2ZSBhbmQgbm9uLWFsbG9jYXRpbmcgYnkgc3RhcnRpbmcgd2l0aCBhbiBlbXB0eSBoZWFwIGFuZFxuICAgbWVyZ2luZyBtZXJnZWQgcGFpcnMgaW50byBpdC4gVW5mb3J0dW5hdGVseSB0aGlzIFwibGVmdCBmb2xkXCIgdmVyc2lvbiBpcyBub3Qgd2hhdCBpc1xuICAgZGVzY3JpYmVkIGluIHRoZSBvcmlnaW5hbCBwYXBlciBieSBGcmVkbWFuIGV0IGFsLjsgdGhleSBzcGVjaWZpY2FsbHkgc2F5IHRoYXRcbiAgIGNoaWxkcmVuIHNob3VsZCBiZSBtZXJnZWQgdG9nZXRoZXIgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICBsaXN0LiAoW21lcmdlXSBpcyBub3QgYXNzb2NpYXRpdmUsIHNvIG9yZGVyIG1hdHRlcnMuKVxuKilcbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICB8IFtoZWFkXSAtPiBoZWFkIDo6IGFjY1xuICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPiBsb29wIChtZXJnZSBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDJcbiAgICAgaW5cbiAgICAgbWF0Y2ggbG9vcCBbXSBjaGlsZHJlbiB3aXRoXG4gICAgIHwgW10gLT4gTm9uZVxuICAgICB8IFtoXSAtPiBTb21lIGhcbiAgICAgfCB4IDo6IHhzIC0+IFNvbWUgKExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOm1lcmdlKVxuICAgXX1cbiopXG5sZXQgYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWQgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGhlYWQgPVxuICAgIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkIDo6IGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICBsb29wIChtZXJnZSB0IGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MikpXG4gIGluXG4gIG1hdGNoIGxvb3AgW10gaGVhZCB3aXRoXG4gIHwgW10gLT4gTm9kZS5lbXB0eSAoKVxuICB8IFsgaCBdIC0+IGhcbiAgfCB4IDo6IHhzIC0+IExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4gYWNjIGhlYXAgLT4gbWVyZ2UgdCBhY2MgaGVhcClcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggdC5yb290IHdpdGhcbiAgICAgfCBOb2RlIChfLCBjaGlsZHJlbikgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZGVwdGggY2hpbGRyZW4gPVxuICAgICAgICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgICAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBjaGlsZGVuXG4gICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgIHwgW2hlYWRdIC0+IFNvbWUgaGVhZFxuICAgICAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT5cbiAgICAgICAgICAgICBtZXJnZSAobWVyZ2UgaGVhZCBuZXh0MSkgKGxvb3AgKGRlcHRoICsgMSkgbmV4dDIpXG4gICAgICAgICBlbmRcbiAgICAgICBpblxuICAgICAgIGxvb3AgMCBjaGlsZHJlblxuICAgXX1cbiopXG5sZXQgbWVyZ2VfcGFpcnMgPVxuICBsZXQgbWF4X3N0YWNrX2RlcHRoID0gMV8wMDAgaW5cbiAgbGV0IHJlYyBsb29wIHQgZGVwdGggaGVhZCA9XG4gICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZFxuICAgIGVsc2UgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBoZWFkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgICgqIG1lcmdlIHRoZSBmaXJzdCB0d28gbm9kZXMgaW4gb3VyIGxpc3QsIGFuZCB0aGVuIG1lcmdlIHRoZSByZXN1bHQgd2l0aCB0aGVcbiAgICAgICAgICAgcmVzdWx0IG9mIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgbWVyZ2VfcGFpcnMgb24gdGhlIHRhaWwgKilcbiAgICAgICAgbWVyZ2UgdCAobWVyZ2UgdCBoZWFkIG5leHQxKSAobG9vcCB0IChkZXB0aCArIDEpIG5leHQyKSkpXG4gIGluXG4gIGZ1biB0IGhlYWQgLT4gbG9vcCB0IDAgaGVhZFxuOztcblxubGV0IHJlbW92ZV9ub25fZW1wdHkgdCBub2RlID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgbGV0IG1lcmdlZF9jaGlsZHJlbiA9IG1lcmdlX3BhaXJzIHQgKE5vZGUuZGlzY29ubmVjdF9jaGlsZCBub2RlIH5wb29sKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIGlmIE5vZGUuZXF1YWwgdC5yb290IG5vZGUgdGhlbiBtZXJnZWRfY2hpbGRyZW4gZWxzZSBtZXJnZSB0IHQucm9vdCBtZXJnZWRfY2hpbGRyZW5cbiAgaW5cbiAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gIHQucm9vdCA8LSBuZXdfcm9vdFxuOztcblxubGV0IHJlbW92ZV90b3AgdCA9IGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpIHRoZW4gcmVtb3ZlX25vbl9lbXB0eSB0IHQucm9vdFxuXG4oKiBOb3RlIHRoYXQgdGhpcyBpcyB0YWlsLXJlY3Vyc2l2ZSBhbmQgdGhhdCBlYWNoIG5vZGUgaXMgdmlzaXRlZCBhdCBtb3N0IDMgdGltZXMgKG9uY2VcbiAgIGZvciBlYWNoIGJyYW5jaCBvZiB0aGUgXCJpZlwiKSwgc28gaXQgdGFrZXMgbGluZWFyIHRpbWUgYW5kIGNvbnN0YW50IHNwYWNlLiAqKVxubGV0IHJlYyByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBub2RlIH5wb29sID1cbiAgbGV0IGNoaWxkID0gTm9kZS5jaGlsZCBub2RlIH5wb29sIGluXG4gIGxldCBzaWJsaW5nID0gTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2wgaW5cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IGNoaWxkKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IGNoaWxkIH5wb29sXG4gIGVsc2UgaWYgbm90IChOb2RlLmlzX2VtcHR5IHNpYmxpbmcpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgc2libGluZyB+cG9vbFxuICBlbHNlIChcbiAgICBsZXQgcHJldiA9IE5vZGUucHJldiBub2RlIH5wb29sIGluXG4gICAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgcHJldikgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBwcmV2IH5wb29sKVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KVxuICB0aGVuIChcbiAgICByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSB0LnJvb3QgfnBvb2w6dC5wb29sO1xuICAgIHQucm9vdCA8LSBOb2RlLmVtcHR5ICgpKVxuOztcblxubGV0IHBvcF9leG4gdCA9XG4gIGxldCByID0gdG9wX2V4biB0IGluXG4gIHJlbW92ZV90b3AgdDtcbiAgclxuOztcblxubGV0IHBvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX2V4biB0KVxuXG5sZXQgcG9wX2lmIHQgZiA9XG4gIG1hdGNoIHRvcCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHYgLT5cbiAgICBpZiBmIHZcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV90b3AgdDtcbiAgICAgIFNvbWUgdilcbiAgICBlbHNlIE5vbmVcbjs7XG5cbigqIHBhaXJpbmcgaGVhcHMgYXJlIG5vdCBiYWxhbmNlZCB0cmVlcywgYW5kIHRoZXJlZm9yZSB3ZSBjYW4ndCByZWx5IG9uIGEgYmFsYW5jZVxuICAgcHJvcGVydHkgdG8gc3RvcCBvdXJzZWx2ZXMgZnJvbSBvdmVyZmxvd2luZyB0aGUgc3RhY2suICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCAoZiBhY2MgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpKSB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBpbml0IFsgdC5yb290IF0gW0Bub250YWlsXVxuOztcblxuKCogYWxtb3N0IGlkZW50aWNhbCB0byBmb2xkLCBjb3BpZWQgZm9yIHNwZWVkIHB1cnBvc2VzICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgZiAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSk7XG4gICAgICAgIGxldCB0b192aXNpdCA9IE5vZGUuc2libGluZyB+cG9vbCBub2RlIDo6IE5vZGUuY2hpbGQgfnBvb2wgbm9kZSA6OiByZXN0IGluXG4gICAgICAgIGxvb3AgdG9fdmlzaXQpXG4gIGluXG4gIGxvb3AgWyB0LnJvb3QgXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBOb2RlLlBvb2wubGVuZ3RoIHQucG9vbFxuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgaXNfZW1wdHkgdCA9IE5vZGUuaXNfZW1wdHkgdC5yb290XG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9hcnJheSBhcnIgfmNtcCA9XG4gIGxldCB0ID0gY3JlYXRlIH5taW5fc2l6ZTooQXJyYXkubGVuZ3RoIGFycikgfmNtcCAoKSBpblxuICBBcnJheS5pdGVyIGFyciB+ZjooZnVuIHYgLT4gYWRkIHQgdik7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0IGwgfmNtcCA9IG9mX2FycmF5IChBcnJheS5vZl9saXN0IGwpIH5jbXBcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQgfD4gQXJyYXkuc29ydGVkX2NvcHkgfmNvbXBhcmU6dC5jbXApXG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIG5vZGUgOiAnYSBOb2RlLnRcbiAgICA7IG5vZGVfaWQgOiBOb2RlLklkLnRcbiAgICA7IGhlYXAgOiAnYSB0XG4gICAgfVxuXG4gICgqIElmIGlkcyBhcmUgZGlmZmVyZW50LCBpdCBtZWFucyB0aGF0IHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBieSBzb21lXG4gICAgIG90aGVyIG1lYW5zIChhbmQgcG9zc2libHkgcmV1c2VkKS4gKilcbiAgbGV0IGlzX25vZGVfdmFsaWQgdCA9IE5vZGUuSWQuZXF1YWwgKE5vZGUuaWQgfnBvb2w6dC5oZWFwLnBvb2wgdC5ub2RlKSB0Lm5vZGVfaWRcblxuICBsZXQgdmFsdWUgdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0IHRoZW4gU29tZSAoTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX25vZGVfdmFsaWQgdFxuICAgIHRoZW4gTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sXG4gICAgZWxzZSBmYWlsd2l0aCBcIkhlYXAudmFsdWVfZXhuOiBub2RlIHdhcyByZW1vdmVkIGZyb20gdGhlIGhlYXBcIlxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHZhbHVlIHQgOiBhIG9wdGlvbildXG5lbmRcblxubGV0IHJlbW92ZSB0ICh0b2tlbiA6IF8gRWx0LnQpID1cbiAgaWYgbm90IChwaHlzX2VxdWFsIHQgdG9rZW4uaGVhcClcbiAgdGhlbiBmYWlsd2l0aCBcImNhbm5vdCByZW1vdmUgZnJvbSBhIGRpZmZlcmVudCBoZWFwXCJcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdG9rZW4ubm9kZSlcbiAgdGhlbiAoXG4gICAgaWYgRWx0LmlzX25vZGVfdmFsaWQgdG9rZW4gdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdG9rZW4ubm9kZTtcbiAgICB0b2tlbi5ub2RlIDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgYWRkX3JlbW92YWJsZSB0IHYgPVxuICBsZXQgbm9kZSA9IGFkZF9ub2RlIHQgdiBpblxuICB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuOztcblxubGV0IHVwZGF0ZSB0IHRva2VuIHYgPVxuICByZW1vdmUgdCB0b2tlbjtcbiAgYWRkX3JlbW92YWJsZSB0IHZcbjs7XG5cbmxldCBmaW5kX2VsdCA9XG4gIGxldCByZWMgbG9vcCB0IGYgbm9kZXMgPVxuICAgIG1hdGNoIG5vZGVzIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgdCBmIHJlc3RcbiAgICAgIGVsc2UgaWYgZiAoTm9kZS52YWx1ZV9leG4gbm9kZSB+cG9vbDp0LnBvb2wpXG4gICAgICB0aGVuIFNvbWUgeyBFbHQubm9kZTsgaGVhcCA9IHQ7IG5vZGVfaWQgPSBOb2RlLmlkIH5wb29sOnQucG9vbCBub2RlIH1cbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCB0IGYgKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCA6OiBOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sIDo6IHJlc3QpXG4gIGluXG4gIGZ1biB0IH5mIC0+IGxvb3AgdCBmIFsgdC5yb290IF1cbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgaGVhcCA9ICdhIHRcbiAgICB0eXBlICdhIHQgPSAnYSBOb2RlLnRcblxuICAgIGxldCB2YWx1ZSB0IGhlYXAgPSBOb2RlLnZhbHVlX2V4biB+cG9vbDpoZWFwLnBvb2wgdFxuICBlbmRcblxuICBsZXQgYWRkX3JlbW92YWJsZSA9IGFkZF9ub2RlXG4gIGxldCByZW1vdmUgPSByZW1vdmVfbm9uX2VtcHR5XG5cbiAgbGV0IHVwZGF0ZSB0IGVsdCB2ID1cbiAgICByZW1vdmUgdCBlbHQ7XG4gICAgYWRkX3JlbW92YWJsZSB0IHZcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBhbV9ydW5uaW5nX3Rlc3QgOiBib29sXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgYSA9XG4gICAgaWYgTS5hbV9ydW5uaW5nX3Rlc3QgdGhlbiBTZXhwLkF0b20gXCI8aGlkZGVuX2luX3Rlc3Q+XCIgZWxzZSBzZXhwX29mX2EgYVxuICA7O1xuXG4gIG1vZHVsZSBXaXRoX25vbl9yb3VuZHRyaXBwaW5nX2luX3Rlc3Rfb2Zfc2V4cCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHVybmVkX29mZiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBmYWxzZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUdXJuZWRfb24gPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSB0cnVlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb25cIiA9XG4gICAgICBwcmludF9zIFslc2V4cCAoMTAyNCA6IFR1cm5lZF9vbi50KV07XG4gICAgICBbJWV4cGVjdCB7fCA8aGlkZGVuX2luX3Rlc3Q+IHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb2ZmXCIgPVxuICAgICAgcHJpbnRfcyAoWyVzZXhwX29mOiBUdXJuZWRfb2ZmLnRdIDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMTAyNCB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5pbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBhbV9ydW5uaW5nX3Rlc3RcbiAgZW5kKVxuIiwib3BlbiBCYXNlXG5cbnR5cGUgKydhIHRcblxuKCogVGhpcyBbT2JqLm1hZ2ljXSBpcyBPSyBiZWNhdXNlIHdlIG5ldmVyIGFsbG93IHVzZXIgY29kZSBhY2Nlc3MgdG8gW25vbmVdIChleGNlcHQgdmlhXG4gICBbdW5zYWZlX3ZhbHVlXSkuICBXZSBkaXNhbGxvdyBbXyBVb3B0LnQgVW9wdC50XSwgc28gdGhlcmUgaXMgbm8gY2hhbmNlIG9mIGNvbmZ1c2luZ1xuICAgW25vbmVdIHdpdGggW3NvbWUgbm9uZV0uICBBbmQgW2Zsb2F0IFVvcHQudCBhcnJheV0gaXMgc2ltaWxhcmx5IGRpc2FsbG93ZWQuICopXG5sZXQgbm9uZSA6ICdhIHQgPSBTdGRsaWIuT2JqLm1hZ2ljIFwiVW9wdC5ub25lXCJcblxubGV0W0BpbmxpbmVdIHNvbWUgKHggOiAnYSkgPVxuICBsZXQgciA6ICdhIHQgPSBTdGRsaWIuT2JqLm1hZ2ljIHggaW5cbiAgaWYgcGh5c19lcXVhbCByIG5vbmUgdGhlbiBmYWlsd2l0aCBcIlVvcHQuc29tZSBVb3B0Lm5vbmVcIjtcbiAgclxuOztcblxubGV0IHNvbWVfbG9jYWwgPSBTdGRsaWIuT2JqLm1hZ2ljIHNvbWVcbmxldCBzb21lX2xvY2FsIDogJ2EuICgnYVtAbG9jYWxdKSAtPiAoJ2EgdFtAbG9jYWxdKSA9IHNvbWVfbG9jYWxcbmxldCB1bnNhZmVfdmFsdWUgKHggOiAnYSB0KSA6ICdhID0gU3RkbGliLk9iai5tYWdpYyB4XG5sZXQgdW5zYWZlX3ZhbHVlX2xvY2FsID0gU3RkbGliLk9iai5tYWdpYyB1bnNhZmVfdmFsdWVcbmxldCB1bnNhZmVfdmFsdWVfbG9jYWwgOiAnYS4gKCdhIHRbQGxvY2FsXSkgLT4gKCdhW0Bsb2NhbF0pID0gdW5zYWZlX3ZhbHVlX2xvY2FsXG5sZXQgaXNfbm9uZSB0ID0gcGh5c19lcXVhbCB0IG5vbmVcbmxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGlmIGlzX3NvbWUgdCB0aGVuIGludmFyaWFudF9hICh1bnNhZmVfdmFsdWUgdClcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIGlmIGlzX25vbmUgdCB0aGVuIFslc2V4cCBOb25lXSBlbHNlIFslc2V4cCBTb21lICh1bnNhZmVfdmFsdWUgdCA6IGEpXVxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gZmFpbHdpdGggXCJVb3B0LnZhbHVlX2V4blwiIGVsc2UgdW5zYWZlX3ZhbHVlIHRcbmxldCB0b19vcHRpb24gdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh1bnNhZmVfdmFsdWUgdClcblxubGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBub25lXG4gIHwgU29tZSBhIC0+IHNvbWUgYVxuOztcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTG9jYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZV9sb2NhbFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IChcInVzaW5nIHRoZSBzYW1lIHNlbnRpbmVsIHZhbHVlXCIgW0B0YWdzIFwibm8tanNcIl0pID1cbiAgICAgIG1hdGNoIHNvbWUgXCJVb3B0Lm5vbmVcIiB3aXRoXG4gICAgICB8IChfIDogc3RyaW5nIHQpIC0+IGZhaWx3aXRoIFwic2hvdWxkIG5vdCBoYXZlIGdvdHRlbiB0byB0aGlzIHBvaW50XCJcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gKClcbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogVGhpcyBtb2R1bGUgZXhwbG9pdHMgdGhlIGZhY3QgdGhhdCBPQ2FtbCBkb2VzIG5vdCBwZXJmb3JtIGNvbnRleHQtc3dpdGNoZXMgdW5kZXJcbiAgIGNlcnRhaW4gY29uZGl0aW9ucy4gIEl0IGNhbiB0aGVyZWZvcmUgYXZvaWQgdXNpbmcgbXV0ZXhlcy5cblxuICAgR2l2ZW4gdGhlIHNlbWFudGljcyBvZiB0aGUgY3VycmVudCBPQ2FtbCBydW50aW1lIChhbmQgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUpLCBjb2RlXG4gICBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvdyB3aWxsIG5ldmVyIGNvbnRhaW4gYSBjb250ZXh0LXN3aXRjaC4gIFRoZSBkZWNpZGluZ1xuICAgY3JpdGVyaW9uIGlzIHdoZXRoZXIgdGhleSBjb250YWluIGFsbG9jYXRpb25zIG9yIGNhbGxzIHRvIGV4dGVybmFsL2J1aWx0aW4gZnVuY3Rpb25zLlxuICAgSWYgdGhlcmUgaXMgbm9uZSwgYSBjb250ZXh0LXN3aXRjaCBjYW5ub3QgaGFwcGVuLiAgQXNzaWdubWVudHMgd2l0aG91dCBhbGxvY2F0aW9ucyxcbiAgIGZpZWxkIGFjY2VzcywgcGF0dGVybi1tYXRjaGluZywgZXRjLiwgZG8gbm90IHRyaWdnZXIgY29udGV4dC1zd2l0Y2hlcy5cblxuICAgQ29kZSByZXZpZXdlcnMgc2hvdWxkIHRoZXJlZm9yZSBtYWtlIHN1cmUgdGhhdCB0aGUgc2VjdGlvbnMgZG9jdW1lbnRlZCBhcyBhdG9taWMgYmVsb3dcbiAgIGRvIG5vdCB2aW9sYXRlIHRoZSBhYm92ZSBhc3N1bXB0aW9ucy4gIEl0IGlzIHBydWRlbnQgdG8gZGlzYXNzZW1ibGUgdGhlIC5vIGZpbGUgKHVzaW5nXG4gICBbb2JqZHVtcCAtZHJdKSBhbmQgZXhhbWluZSBpdC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dCA6ICgnYSB0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IFVvcHQubm9uZTsgbmV4dCA9IFVvcHQubm9uZSB9XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAoKiBbZnJvbnRdIHRvIFtiYWNrXSBoYXMgW2xlbmd0aCArIDFdIGxpbmtlZCBlbGVtZW50cywgd2hlcmUgdGhlIGZpcnN0IFtsZW5ndGhdIGhvbGQgdGhlXG4gICAgIHZhbHVlcyBpbiB0aGUgcXVldWUsIGFuZCB0aGUgbGFzdCBpcyBbYmFja10sIGhvbGRpbmcgbm8gdmFsdWUuICopXG4gIDsgbXV0YWJsZSBmcm9udCA6ICdhIEVsdC50XG4gIDsgbXV0YWJsZSBiYWNrIDogJ2EgRWx0LnRcbiAgKCogW3VudXNlZF9lbHRzXSBpcyBzaW5nbHkgbGlua2VkIHZpYSBbbmV4dF0sIGFuZCBlbmRzIHdpdGggW3NlbnRpbmVsXS4gIEFsbCBlbHRzIGluXG4gICAgIFt1bnVzZWRfZWx0c10gaGF2ZSBbVW9wdC5pc19ub25lIGVsdC52YWx1ZV0uICopXG4gIDsgbXV0YWJsZSB1bnVzZWRfZWx0cyA6ICdhIEVsdC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGxldCBpID0gcmVmIHQubGVuZ3RoIGluXG4gICAgICAgICAgIGxldCByID0gcmVmIGZyb250IGluXG4gICAgICAgICAgIHdoaWxlICFpID4gMCBkb1xuICAgICAgICAgICAgIGRlY3IgaTtcbiAgICAgICAgICAgICBsZXQgZWx0ID0gIXIgaW5cbiAgICAgICAgICAgICByIDo9IFVvcHQudmFsdWVfZXhuIGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfc29tZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAhciB0LmJhY2spKSlcbiAgICAgIH5iYWNrOihjaGVjayAoZnVuIGJhY2sgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgYmFjay5FbHQudmFsdWUpKSlcbiAgICAgIH51bnVzZWRfZWx0czpcbiAgICAgICAgKGNoZWNrIChmdW4gdW51c2VkX2VsdHMgLT5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgdW51c2VkX2VsdHMgaW5cbiAgICAgICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgICAgICAgbGV0IGVsdCA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgICAgICAgICAgciA6PSBlbHQuRWx0Lm5leHQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgZWx0LnZhbHVlKVxuICAgICAgICAgICBkb25lKSkpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGVsdCA9IEVsdC5jcmVhdGUgKCkgaW5cbiAgeyBmcm9udCA9IGVsdDsgYmFjayA9IGVsdDsgbGVuZ3RoID0gMDsgdW51c2VkX2VsdHMgPSBVb3B0Lm5vbmUgfVxuOztcblxubGV0IGdldF91bnVzZWRfZWx0IHQgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBpZiBVb3B0LmlzX3NvbWUgdC51bnVzZWRfZWx0c1xuICB0aGVuIChcbiAgICBsZXQgZWx0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC51bnVzZWRfZWx0cyBpblxuICAgIHQudW51c2VkX2VsdHMgPC0gZWx0Lm5leHQ7XG4gICAgZWx0ICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKSlcbiAgZWxzZSBFbHQuY3JlYXRlICgpXG47O1xuXG5sZXQgZW5xdWV1ZSAodHlwZSBhKSAodCA6IGEgdCkgKGEgOiBhKSA9XG4gIGxldCBuZXdfYmFjayA9IGdldF91bnVzZWRfZWx0IHQgaW5cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICB0LmJhY2sudmFsdWUgPC0gVW9wdC5zb21lIGE7XG4gIHQuYmFjay5uZXh0IDwtIFVvcHQuc29tZSBuZXdfYmFjaztcbiAgdC5iYWNrIDwtIG5ld19iYWNrXG47O1xuXG4oKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcblxubGV0IHJldHVybl91bnVzZWRfZWx0IHQgKGVsdCA6IF8gRWx0LnQpID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgZWx0LnZhbHVlIDwtIFVvcHQubm9uZTtcbiAgZWx0Lm5leHQgPC0gdC51bnVzZWRfZWx0cztcbiAgdC51bnVzZWRfZWx0cyA8LSBVb3B0LnNvbWUgZWx0O1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgKClcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0ID1cbiAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBvZiBlbXB0eSBxdWV1ZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIHQubGVuZ3RoID0gMCB0aGVuIHJhaXNlX2RlcXVldWVfZW1wdHkgdDtcbiAgbGV0IGVsdCA9IHQuZnJvbnQgaW5cbiAgbGV0IGEgPSBlbHQudmFsdWUgaW5cbiAgdC5mcm9udCA8LSBVb3B0LnVuc2FmZV92YWx1ZSBlbHQubmV4dDtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgcmV0dXJuX3VudXNlZF9lbHQgdCBlbHQ7XG4gIFVvcHQudW5zYWZlX3ZhbHVlIGFcbjs7XG5cbmxldCBjbGVhcl9pbnRlcm5hbF9wb29sIHQgPSB0LnVudXNlZF9lbHRzIDwtIFVvcHQubm9uZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgVW9wdCA9IFVvcHRcbmVuZFxuIiwiaW5jbHVkZSBDb3JlLkNvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbigqIFthZnRlcl0gaXMgbGlrZSBbYWRkXSwgYnV0IGRlYWxzIG5pY2VseSB3aXRoIHRoZSBjYXNlIG9mIG92ZXJmbG93IGJ5IGluc3RlYWQgcmV0dXJuaW5nXG4gICBbbWF4X3ZhbHVlXS4gIFRpbWUtc291cmNlIGZ1bmN0aW9ucyB1c2UgW2FmdGVyXSB0byBhdm9pZCBpbW1lZGlhdGVseSBmaXJpbmcgZXZlbnRzIHRoYXRcbiAgIHNob3VsZCBuZXZlciBmaXJlLCBkdWUgdG8gdGhlIG92ZXJmbG93IGxlYWRpbmcgdG8gYSBuZWdhdGl2ZSB0aW1lIHRoYXQgYXBwZWFycyB0byBiZSBpblxuICAgdGhlIHBhc3QuICBXZSBkb24ndCBjaGVjayB1bmRlcmZsb3cgYmVjYXVzZSB0aGF0IGlzIHZlcnkgdW5saWtlbHksIHJlcXVpcmluZyBib3RoIGFcbiAgIG5lZ2F0aXZlIHRpbWUgYW5kIGEgbmVnYXRpdmUgc3Bhbi4gKilcbmxldCBhZnRlciB0IHNwYW4gPVxuICBsZXQgcmVzdWx0ID0gYWRkIHQgc3BhbiBpblxuICBpZiBTcGFuLiggPiApIHNwYW4gU3Bhbi56ZXJvICYmIHJlc3VsdCA8IHQgdGhlbiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyBlbHNlIHJlc3VsdFxuOztcbiIsIm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnlcbmluY2x1ZGUgQXN5bmNfa2VybmVsX2NvbmZpZy5QcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcblxubGV0IGxvZyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgZXByaW50ZlxuICAgIFwiJXNcXG4lIVwiXG4gICAgKFNleHAudG9fc3RyaW5nX2h1bVxuICAgICAgIChbJXNleHBfb2Y6IFNleHAudCAqIFRpbWVfbnMudCAqIHN0cmluZyAqIGFdXG4gICAgICAgICAgKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCksIFRpbWVfbnMubm93ICgpLCBtZXNzYWdlLCBhKSkpXG47O1xuXG5sZXQgbG9nX3N0cmluZyBtZXNzYWdlID0gbG9nIG1lc3NhZ2UgKCkgWyVzZXhwX29mOiB1bml0XVxuIiwibW9kdWxlIERlYnVnX2luX3RoaXNfZGlyZWN0b3J5ID0gRGVidWdcbm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiEgQ29yZVxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z19pbl90aGlzX2RpcmVjdG9yeVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgQXN5bmNfa2VybmVsX2NvbmZpZy5NYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxubGV0IGVwcmludCA9IENvcmUuRGVidWcuZXByaW50XG5sZXQgZXByaW50X3MgPSBDb3JlLkRlYnVnLmVwcmludF9zXG5sZXQgZXByaW50cyA9IENvcmUuRGVidWcuZXByaW50c1xubGV0IHByaW50X3Mgc2V4cCA9IHByaW50ZiBcIiVzXFxuJSFcIiAoc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0pXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xuXG4oKiBXZSBkb24ndCB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIGluIEFzeW5jX2tlcm5lbCwgdG8gYXZvaWQgZGlmZmljdWx0aWVzIHdpdGhcbiAgIHVzaW5nIGl0IG9uIGpzX29mX29jYW1sLiAqKVxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTm9ybWFsXG4gIHwgTG93XG5bQEBkZXJpdmluZyBzZXhwX29mLCBlbnVtZXJhdGVdXG5cbmxldCBub3JtYWwgPSBOb3JtYWxcbmxldCBsb3cgPSBMb3dcbiIsIigqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgYXQgdGhlIGhlYXJ0IG9mIEFzeW5jLiAgVGhlIGZ1bmN0aW9uc1xuICAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBmaWxlKHMpIGZvciBlYWNoIG1vZHVsZS5cbiAgIFRoaXMgZmlsZSBzaG91bGQgZGVmaW5lIG9ubHkgdHlwZXMsIG5vdCBmdW5jdGlvbnMsIHNpbmNlIGZ1bmN0aW9ucyBkZWZpbmVkIGluc2lkZSB0aGVcbiAgIHJlY3Vyc2l2ZSBtb2R1bGVzIGFyZSBub3QgaW5saW5lZC5cblxuICAgSWYgeW91IG5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYSBtb2R1bGUgYnV0IGRvaW5nIHNvIHdvdWxkIGNyZWF0ZSBhIGRlcGVuZGVuY3lcbiAgIGN5Y2xlLCBzcGxpdCB0aGUgZmlsZSBpbnRvIHBpZWNlcyBhcyBuZWVkZWQgdG8gYnJlYWsgdGhlIGN5Y2xlLCBlLmcuIHNjaGVkdWxlcjAubWwsXG4gICBzY2hlZHVsZXIxLm1sLCBzY2hlZHVsZXIubWwuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgcmVjIENlbGwgOiBzaWdcbiAgdHlwZSBhbnkgPVxuICAgIFsgYEVtcHR5XG4gICAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgIHwgYEZ1bGxcbiAgICB8IGBJbmRpclxuICAgIF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgOlxuICAgICAgICB7IG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICA7IG11dGFibGUgcHJldiA6ICdhIEhhbmRsZXIudFxuICAgICAgICA7IG11dGFibGUgbmV4dCA6ICdhIEhhbmRsZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIHRcbiAgICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfaGFuZGxlciBdKSB0XG4gICAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIHRcbiAgICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIHRcbiAgICB8IEluZGlyIDogJ2EgSXZhci50IC0+ICgnYSwgWz4gYEluZGlyIF0pIHRcbmVuZCA9XG4gIENlbGxcblxuYW5kIEhhbmRsZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBDZWxsLnRcbmVuZCA9XG4gIEhhbmRsZXJcblxuYW5kIEl2YXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuXG4gIG1vZHVsZSBJbW11dGFibGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPSB7IGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuICBlbmRcbmVuZCA9XG4gIEl2YXJcblxuYW5kIERlZmVycmVkIDogc2lnXG4gIHR5cGUgKyEnYSB0XG5lbmQgPVxuICBEZWZlcnJlZFxuXG5hbmQgRXhlY3V0aW9uX2NvbnRleHQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICAgIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIEV4ZWN1dGlvbl9jb250ZXh0XG5cbmFuZCBGb3J3YXJkaW5nIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBEZXRhY2hlZFxuICAgIHwgUGFyZW50IG9mIE1vbml0b3IudFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4blxuZW5kID1cbiAgRm9yd2FyZGluZ1xuXG5hbmQgTW9uaXRvciA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IEluZm8udFxuICAgIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gICAgOyBpZCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIEl2YXIudFxuICAgIDsgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgICA7IG11dGFibGUgdGFpbHNfZm9yX2FsbF9lcnJvcnMgOiBleG4gVGFpbC50IGxpc3RcbiAgICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gICAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgICB9XG5lbmQgPVxuICBNb25pdG9yXG5cbmFuZCBUYWlsIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBuZXh0IDogJ2EgU3RyZWFtLm5leHQgSXZhci50IH1cbmVuZCA9XG4gIFRhaWxcblxuYW5kIFN0cmVhbSA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBuZXh0IERlZmVycmVkLnRcblxuICBhbmQgJ2EgbmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5lbmQgPVxuICBTdHJlYW1cblxuKCogV2UgYXZvaWQgdXNpbmcgW21vZHVsZSByZWNdIHRvIGRlZmluZSBbQnZhcl0sIHNvIHRoYXQgW3RvX3JlcHJdIGFuZCBbb2ZfcmVwcl0gYXJlXG4gICBpbmxpbmVkLiAqKVxubW9kdWxlIEJ2YXIgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybWlzc2lvbikgdFxuXG4gICgqKiBbcmVwcl0gZXhpc3RzIHNvIHRoYXQgd2UgbWF5IGhpZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgW0J2YXIudF0sIGFuZCB0aGVuIGFkZCBhXG4gICAgICBwaGFudG9tIHR5cGUgdG8gaXQgdXBzdHJlYW0uICBXaXRob3V0IHRoaXMsIHRoZSBwaGFudG9tIHR5cGUgdmFyaWFibGUgd291bGQgYWxsb3dcbiAgICAgIGZvciBhbnl0aGluZyB0byBiZSBjb2VyY2VkIGluIGFuZCBvdXQsIHNpbmNlIGl0IGlzIHVudXNlZC4gKilcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHZhbCBvZl9yZXByIDogJ2EgcmVwciAtPiAoJ2EsICdwZXJtaXNzaW9uKSB0XG4gIHZhbCB0b19yZXByIDogKCdhLCAncGVybWlzc2lvbikgdCAtPiAnYSByZXByXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICdhIHJlcHJcblxuICBsZXQgdG9fcmVwciB0ID0gdFxuICBsZXQgb2ZfcmVwciB0ID0gdFxuZW5kXG5cbm1vZHVsZSByZWMgRXZlbnQgOiBzaWdcbiAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpcmVkXG4gICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgfCBTY2hlZHVsZWRcbiAgICAgIHwgVW5zY2hlZHVsZWRcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICB9XG5lbmQgPVxuICBFdmVudFxuXG5hbmQgRXh0ZXJuYWxfam9iIDogc2lnXG4gIHR5cGUgdCA9IFQgOiBFeGVjdXRpb25fY29udGV4dC50ICogKCdhIC0+IHVuaXQpICogJ2EgLT4gdFxuZW5kID1cbiAgRXh0ZXJuYWxfam9iXG5cbmFuZCBKb2IgOiBzaWdcbiAgdHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCBPYmoudCkgUG9vbC5TbG90cy50M1xuICB0eXBlIHQgPSBzbG90cyBQb29sLlBvaW50ZXIudFxuZW5kID1cbiAgSm9iXG5cbmFuZCBKb2Jfb3JfZXZlbnQgOiBzaWdcbiAgdHlwZSB0XG5lbmQgPVxuICBKb2Jfb3JfZXZlbnRcblxuYW5kIEpvYl9wb29sIDogc2lnXG4gIHR5cGUgdCA9IEpvYi5zbG90cyBQb29sLnRcbmVuZCA9XG4gIEpvYl9wb29sXG5cbmFuZCBKb2JfcXVldWUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnMgOiBPYmoudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbWFzayA6IGludFxuICAgIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG5lbmQgPVxuICBKb2JfcXVldWVcblxuYW5kIEpvYnMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHNjaGVkdWxlciA6IFNjaGVkdWxlci50XG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsIDogSm9iX3F1ZXVlLnRcbiAgICA7IGxvdyA6IEpvYl9xdWV1ZS50XG4gICAgfVxuZW5kID1cbiAgSm9ic1xuXG5hbmQgU2NoZWR1bGVyIDogc2lnXG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgICA7IG11dGFibGUgbWFpbl9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgICA7IG11dGFibGUgY3ljbGVfc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IEN5Y2xlX2hvb2sudCBhcnJheVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIDogKEN5Y2xlX2hvb2tfaGFuZGxlLnQsIEN5Y2xlX2hvb2sudCkgSGFzaHRibC50XG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9lbmQgOiBDeWNsZV9ob29rLnQgYXJyYXlcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICAgIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFRpbWVfc291cmNlLnQxXG4gICAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHlpZWxkIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gICAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIFNjaGVkdWxlclxuXG5hbmQgQ3ljbGVfaG9vayA6IHNpZ1xuICB0eXBlIHQgPSB1bml0IC0+IHVuaXRcbmVuZCA9XG4gIEN5Y2xlX2hvb2tcblxuYW5kIEN5Y2xlX2hvb2tfaGFuZGxlIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5hbmQgVGltZV9zb3VyY2VfaWQgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxuYW5kIFRpbWVfc291cmNlIDogc2lnXG4gIHR5cGUgLSdydyB0MSA9XG4gICAgeyBpZCA6IFRpbWVfc291cmNlX2lkLnRcbiAgICA7IG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7IG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICB9XG5lbmQgPVxuICBUaW1lX3NvdXJjZVxuXG5hbmQgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyIDogc2lnXG4gIG1vZHVsZSBFeGVjX3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBleGVjIDogdW5pdCAtPiBFeGVjX3Jlc3VsdC50XG4gICAgfVxuZW5kID1cbiAgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbmxldCBkZWJ1ZyA9IERlYnVnLm1vbml0b3JcblxubW9kdWxlIEZvcndhcmRpbmcgPSBUeXBlcy5Gb3J3YXJkaW5nXG5cbnR5cGUgdCA9IFR5cGVzLk1vbml0b3IudCA9XG4gIHsgbmFtZSA6IEluZm8udFxuICA7IGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IG9wdGlvblxuICA7IGlkIDogaW50XG4gIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIFR5cGVzLkl2YXIudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBzY2hlZHVsZXMgYSBqb2IgZm9yIGVhY2ggZWxlbWVudCBvZiBbaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgOiAoVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIGV4dGVuZHMgZWFjaCB0YWlsIGluIFt0YWlsc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUeXBlcy5UYWlsLnQgbGlzdFxuICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gIDsgbXV0YWJsZSBmb3J3YXJkaW5nIDogRm9yd2FyZGluZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGRlc2NyaXB0aW9uIHQgPVxuICBtYXRjaCB0LmhlcmUgd2l0aFxuICB8IE5vbmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpXVxuICB8IFNvbWUgaGVyZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCksIChoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgZGVzY3JpcHRpb25zID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIGxldCBhYyA9IGRlc2NyaXB0aW9uIHQgOjogYWMgaW5cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IExpc3QucmV2IGFjXG4gICAgfCBQYXJlbnQgdCAtPiBsb29wIHQgYWNcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKGRlc2NyaXB0aW9ucyB0IDogU2V4cC50IGxpc3QpXVxuXG5sZXQgbmV4dF9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIHBhcmVudCA9XG4gIGxldCBpZCA9IG5leHRfaWQgKCkgaW5cbiAgbGV0IG5hbWUgPVxuICAgIG1hdGNoIGluZm8sIG5hbWUgd2l0aFxuICAgIHwgU29tZSBpLCBOb25lIC0+IGlcbiAgICB8IFNvbWUgaSwgU29tZSBzIC0+IEluZm8udGFnIGkgfnRhZzpzXG4gICAgfCBOb25lLCBTb21lIHMgLT4gSW5mby5vZl9zdHJpbmcgc1xuICAgIHwgTm9uZSwgTm9uZSAtPiBJbmZvLmNyZWF0ZSBcImlkXCIgaWQgWyVzZXhwX29mOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XVxuICBpblxuICBsZXQgdCA9XG4gICAgeyBuYW1lXG4gICAgOyBoZXJlXG4gICAgOyBmb3J3YXJkaW5nID1cbiAgICAgICAgKG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gUmVwb3J0X3VuY2F1Z2h0X2V4blxuICAgICAgICAgfCBTb21lIHBhcmVudCAtPiBQYXJlbnQgcGFyZW50KVxuICAgIDsgaWRcbiAgICA7IG5leHRfZXJyb3IgPSB7IGNlbGwgPSBFbXB0eSB9XG4gICAgOyBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA9IEJhZy5jcmVhdGUgKClcbiAgICA7IHRhaWxzX2Zvcl9hbGxfZXJyb3JzID0gW11cbiAgICA7IGhhc19zZWVuX2Vycm9yID0gZmFsc2VcbiAgICB9XG4gIGluXG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiY3JlYXRlZCBtb25pdG9yXCIgdCBbJXNleHBfb2Y6IHRdO1xuICB0XG47O1xuXG5sZXQgbWFpbiA9IGNyZWF0ZV93aXRoX3BhcmVudCB+bmFtZTpcIm1haW5cIiBOb25lXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcblxudHlwZSB0ID0gVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCA9XG4gIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICA7IGxvY2FsX3N0b3JhZ2UgOiBVbml2X21hcC50XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IG1haW4gPVxuICB7IG1vbml0b3IgPSBNb25pdG9yLm1haW5cbiAgOyBwcmlvcml0eSA9IFByaW9yaXR5Lm5vcm1hbFxuICA7IGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5lbXB0eVxuICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gW11cbiAgfVxuOztcblxubGV0IGNyZWF0ZV9saWtlID9tb25pdG9yID9wcmlvcml0eSA/bG9jYWxfc3RvcmFnZSB0ID1cbiAgbWF0Y2ggbW9uaXRvciwgcHJpb3JpdHksIGxvY2FsX3N0b3JhZ2Ugd2l0aFxuICB8IE5vbmUsIE5vbmUsIE5vbmUgLT5cbiAgICAoKiBhdm9pZCBhbGxvY2F0aW5nIGluIHRoZSB0cml2aWFsIGNhc2UsIHdoaWNoIGUuZy4gaGFwcGVucyB3aGVuIGNhbGxpbmdcbiAgICAgICBbQXN5bmMuc2NoZWR1bGVdIHdpdGhvdXQgb3B0aW9uYWwgYXJncyAqKVxuICAgIHRcbiAgfCBfIC0+XG4gICAgbGV0IG1vbml0b3IgPSBPcHRpb24udmFsdWUgbW9uaXRvciB+ZGVmYXVsdDp0Lm1vbml0b3IgaW5cbiAgICB7IG1vbml0b3JcbiAgICA7IHByaW9yaXR5ID0gT3B0aW9uLnZhbHVlIHByaW9yaXR5IH5kZWZhdWx0OnQucHJpb3JpdHlcbiAgICA7IGxvY2FsX3N0b3JhZ2UgPSBPcHRpb24udmFsdWUgbG9jYWxfc3RvcmFnZSB+ZGVmYXVsdDp0LmxvY2FsX3N0b3JhZ2VcbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gdC5iYWNrdHJhY2VfaGlzdG9yeVxuICAgIH1cbjs7XG5cbmxldCBmaW5kX2xvY2FsIHQga2V5ID0gVW5pdl9tYXAuZmluZCB0LmxvY2FsX3N0b3JhZ2Uga2V5XG5cbmxldCB3aXRoX2xvY2FsIHQga2V5IGRhdGEgPVxuICB7IHQgd2l0aCBsb2NhbF9zdG9yYWdlID0gVW5pdl9tYXAuY2hhbmdlIHQubG9jYWxfc3RvcmFnZSBrZXkgfmY6KGZ1biBfIC0+IGRhdGEpIH1cbjs7XG5cbmxldCByZWNvcmRfYmFja3RyYWNlIHQgPVxuICB7IHQgd2l0aCBiYWNrdHJhY2VfaGlzdG9yeSA9IEJhY2t0cmFjZS5nZXQgKCkgOjogdC5iYWNrdHJhY2VfaGlzdG9yeSB9XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLkV4dGVybmFsX2pvYlxuXG5sZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCI8am9iPlwiXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gUG9vbFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5cbnR5cGUgc2xvdHMgPSAoRXhlY3V0aW9uX2NvbnRleHQudCwgT2JqLnQgLT4gdW5pdCwgKE9iai50W0BzZXhwLm9wYXF1ZV0pKSBTbG90cy50M1xuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID0gc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG5sZXQgY3JlYXRlICgpID0gY3JlYXRlIFNsb3RzLnQzIH5jYXBhY2l0eToxIH5kdW1teTooZHVtbXlfZSwgZHVtbXlfZiwgZHVtbXlfYSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBKb2JfcG9vbC5zbG90cyBQb29sLlBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRXZlbnQgPSBUeXBlcy5FdmVudFxubW9kdWxlIEpvYiA9IFR5cGVzLkpvYlxuaW5jbHVkZSBUeXBlcy5Kb2Jfb3JfZXZlbnRcblxuKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dCB0b1xuICAgW09iai5tYWdpY11zLiAqKVxubW9kdWxlIF8gOiBzaWcgZW5kID0gc3RydWN0XG4gIG9wZW4gVHlwZXNcbiAgb3BlbiBFdmVudFxuXG4gIHR5cGUgX3QgPSB0ID1cbiAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVuc3VyZV9wcml2YXRlX2ludCAoTSA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBfdCA9IE0udFxuICBlbmRcblxuICBpbmNsdWRlIEVuc3VyZV9wcml2YXRlX2ludCAoSm9iKVxuZW5kXG5cbmxldCBvZl9ldmVudCBldmVudCA6IHQgPSBPYmoubWFnaWMgKGV2ZW50IDogRXZlbnQudClcbmxldCBvZl9qb2Igam9iIDogdCA9IE9iai5tYWdpYyAoam9iIDogSm9iLnQpXG5sZXQgaXNfZXZlbnQgKHQgOiB0KSA9IE9iai5pc19ibG9jayAoT2JqLnJlcHIgdClcbmxldCBpc19qb2IgKHQgOiB0KSA9IE9iai5pc19pbnQgKE9iai5yZXByIHQpXG5cbm1vZHVsZSBNYXRjaCA9IHN0cnVjdFxuICB0eXBlIF8ga2luZCA9XG4gICAgfCBFdmVudCA6IEV2ZW50LnQga2luZFxuICAgIHwgSm9iIDogSm9iLnQga2luZFxuXG4gIHR5cGUgcGFja2VkID0gSyA6IF8ga2luZCAtPiBwYWNrZWQgW0BAdW5ib3hlZF1cblxuICBsZXQga2luZCB0ID0gaWYgaXNfZXZlbnQgdCB0aGVuIEsgRXZlbnQgZWxzZSBLIEpvYlxuICBsZXQgcHJvamVjdCAodHlwZSBhKSAoXyA6IGEga2luZCkgam9iX29yX2V2ZW50ID0gKE9iai5tYWdpYyA6IHQgLT4gYSkgam9iX29yX2V2ZW50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUeXBlcy5TY2hlZHVsZXJcblxubGV0IGV2ZW50cyB0ID0gdC50aW1lX3NvdXJjZS5ldmVudHNcblxubGV0IHNldF9leGVjdXRpb25fY29udGV4dCB0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgKCogQXZvaWQgYSBjYW1sX21vZGlmeSBpbiBtb3N0IGNhc2VzLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0KVxuICB0aGVuIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCA8LSBleGVjdXRpb25fY29udGV4dFxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjBcblxubGV0IGR1bW15X2UgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG5sZXQgZHVtbXlfZiA6IE9iai50IC0+IHVuaXQgPSBpZ25vcmVcbmxldCBkdW1teV9hIDogT2JqLnQgPSBPYmoucmVwciAoKVxubGV0IHNsb3RzX3Blcl9lbHQgPSAzXG5cbm1vZHVsZSBBID0gVW5pZm9ybV9hcnJheVxuXG4oKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgc3BlY2lhbGl6ZWQgW0ZsYXRfcXVldWVdLCBkb25lIGZvciByZWFzb25zIG9mIHNwZWVkLiAqKVxudHlwZSB0ID0gVHlwZXMuSm9iX3F1ZXVlLnQgPVxuICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gIDsgbXV0YWJsZSBqb2JzX2xlZnRfdGhpc19jeWNsZSA6IGludFxuICA7ICgqIFtqb2JzXSBpcyBhbiBhcnJheSBvZiBsZW5ndGggW2NhcGFjaXR5IHQgKiBzbG90c19wZXJfZWx0XSwgd2hlcmUgZWFjaCBlbHQgaGFzIHRoZVxuICAgICAgIHRocmVlIGNvbXBvbmVudHMgb2YgYSBqb2IgKFtleGVjdXRpb25fY29udGV4dF0sIFtmXSwgW2FdKSBpbiBjb25zZWN1dGl2ZSBzcG90cyBpblxuICAgICAgIFtqb2JzXS4gIFtlbnF1ZXVlXSBkb3VibGVzIHRoZSBsZW5ndGggb2YgW2pvYnNdIGlmIFtqb2JzXSBpcyBmdWxsLiAgW2pvYnNdIG5ldmVyXG4gICAgICAgc2hyaW5rcy4gIFtqb2JzXSBpcyBzb21ld2hhdCBsaWtlIGEgW0NvcmUuUG9vbF0gc3BlY2lhbGl6ZWQgdG8gMy10dXBsZXM7IHdlXG4gICAgICAgZG9uJ3QgdXNlIFtQb29sXSBiZWNhdXNlIHRoYXQgaW1wbGVtZW50cyBhIHNldCwgd2hlcmUgW2pvYnNdIGlzIGEgcXVldWUuICopXG4gICAgbXV0YWJsZSBqb2JzIDogKE9iai50IEEudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFttYXNrXSBpcyBbY2FwYWNpdHkgdCAtIDFdLCBhbmQgaXMgdXNlZCBmb3IgcXVpY2tseSBjb21wdXRpbmcgW2kgbW9kIChjYXBhY2l0eVxuICAgICAgIHQpXS4gQSBzcGVjaWFsIGNhc2Ugd2hlbiB0aGUgam9iIHF1ZXVlIGhhcyBjYXBhY2l0eSAwIGlzIHJlcHJlc2VudGVkXG4gICAgICAgd2l0aCBbbWFzayA9IC0xXS4gVGhpcyB2YWx1ZSBpcyBub3QgdXNlZnVsIGFzIGEgYml0LW1hc2ssIGJ1dCB3ZSBvbmx5IHVzZVxuICAgICAgIHRoZSBiaXQtbWFzayB3aGVuIHRoZXJlJ3MgY2FwYWNpdHkgaW4gdGhlIGFycmF5LCBzbyB0aGF0IGlzIG5vdCBhIHByb2JsZW0uXG4gICAgKilcbiAgICBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyAoKiBbZnJvbnRdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgam9iIGluIHRoZSBxdWV1ZS4gIFRoZSBhcnJheSBpbmRleCBvZiB0aGF0IGpvYidzXG4gICAgICAgZXhlY3V0aW9uIGNvbnRleHQgaXMgW2Zyb250ICogc2xvdHNfcGVyX2VsdF0uICopXG4gICAgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBvZmZzZXQgdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayAqIHNsb3RzX3Blcl9lbHRcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5udW1fam9ic19ydW46KGNoZWNrIChmdW4gbnVtX2pvYnNfcnVuIC0+IGFzc2VydCAobnVtX2pvYnNfcnVuID49IDApKSlcbiAgICAgIH5qb2JzX2xlZnRfdGhpc19jeWNsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gam9ic19sZWZ0X3RoaXNfY3ljbGUgLT4gYXNzZXJ0IChqb2JzX2xlZnRfdGhpc19jeWNsZSA+PSAwKSkpXG4gICAgICB+am9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gam9icyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50XG4gICAgICAgICAgICAgICAoT2JqLm9iaiAoQS5nZXQgam9icyAob2Zmc2V0IHQgaSkpIDogRXhlY3V0aW9uX2NvbnRleHQudClcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWFzazpcbiAgICAgICAgKGNoZWNrIChmdW4gbWFzayAtPlxuICAgICAgICAgICBsZXQgY2FwYWNpdHkgPSBtYXNrICsgMSBpblxuICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID0gMCB8fCBJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgKiBzbG90c19wZXJfZWx0ID0gQS5sZW5ndGggdC5qb2JzKSkpXG4gICAgICB+YmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWU6KGZ1biBfIC0+ICgpKVxuICAgICAgfmZyb250OlxuICAgICAgICAoY2hlY2sgKGZ1biBmcm9udCAtPlxuICAgICAgICAgICBhc3NlcnQgKGZyb250ID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGZyb250IDwgbWF4IDEgKGNhcGFjaXR5IHQpKSkpXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5IHQpKSkpXG47O1xuXG5sZXQgY3JlYXRlX2FycmF5IH5jYXBhY2l0eSA9IEEuY3JlYXRlX29ial9hcnJheSB+bGVuOihjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICAoKiBXZSBzdGFydCB3aXRoIFtjYXBhY2l0eSAgPSAwXSBzbyB0aGF0IHRoZSBmaXJzdCBqb2IgdGhhdCBpcyBhZGRlZCBjYWxscyBbZ3Jvd10gYW5kXG4gICAgIGZpbGxzIGluIHRoZSBbYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWVdLiAqKVxuICBsZXQgY2FwYWNpdHkgPSAwIGluXG4gIHsgbnVtX2pvYnNfcnVuID0gMFxuICA7IGpvYnNfbGVmdF90aGlzX2N5Y2xlID0gMFxuICA7IGpvYnMgPSBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5XG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGZyb250ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgOyBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA9IE5vbmVcbiAgfVxuOztcblxubGV0IGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHQgPSB0LmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXG5cbmxldCBjbGVhciB0ID1cbiAgdC5mcm9udCA8LSAwO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIDBcbjs7XG5cbmxldCBncm93IHQgPVxuICAobWF0Y2ggdC5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB3aXRoXG4gICB8IFNvbWUgXyAtPiBhc3NlcnQgKGNhcGFjaXR5IHQgPiAwKVxuICAgfCBOb25lIC0+IHQuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgPC0gU29tZSAoQmFja3RyYWNlLmdldCAoKSkpO1xuICBsZXQgb2xkX2NhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IDEgKG9sZF9jYXBhY2l0eSAqIDIpIGluXG4gIGxldCBvbGRfam9icyA9IHQuam9icyBpblxuICBsZXQgb2xkX2Zyb250ID0gdC5mcm9udCBpblxuICBsZXQgbGVuMSA9IEludC5taW4gdC5sZW5ndGggKG9sZF9jYXBhY2l0eSAtIG9sZF9mcm9udCkgKiBzbG90c19wZXJfZWx0IGluXG4gIGxldCBsZW4yID0gKHQubGVuZ3RoICogc2xvdHNfcGVyX2VsdCkgLSBsZW4xIGluXG4gIGxldCBuZXdfam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHk6bmV3X2NhcGFjaXR5IGluXG4gIEEuYmxpdFxuICAgIH5sZW46bGVuMVxuICAgIH5zcmM6b2xkX2pvYnNcbiAgICB+c3JjX3Bvczoob2xkX2Zyb250ICogc2xvdHNfcGVyX2VsdClcbiAgICB+ZHN0Om5ld19qb2JzXG4gICAgfmRzdF9wb3M6MDtcbiAgQS5ibGl0IH5sZW46bGVuMiB+c3JjOm9sZF9qb2JzIH5zcmNfcG9zOjAgfmRzdDpuZXdfam9icyB+ZHN0X3BvczpsZW4xO1xuICB0Lm1hc2sgPC0gbmV3X2NhcGFjaXR5IC0gMTtcbiAgdC5qb2JzIDwtIG5ld19qb2JzO1xuICB0LmZyb250IDwtIDBcbjs7XG5cbmxldCBzZXQgKHR5cGUgYSkgdCBpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBvZmZzZXQgPSBvZmZzZXQgdCBpIGluXG4gIEEudW5zYWZlX3NldCB0LmpvYnMgb2Zmc2V0IChPYmoucmVwciAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDEpIChPYmoucmVwciAoZiA6IGEgLT4gdW5pdCkpO1xuICBBLnVuc2FmZV9zZXQgdC5qb2JzIChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gZ3JvdyB0O1xuICBzZXQgdCB0Lmxlbmd0aCBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiSm9icy5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgZ290IG5lZ2F0aXZlIG51bWJlclwiIChuIDogaW50KSAodCA6IHQpXTtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSBuXG47O1xuXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gdC5sZW5ndGggPiAwICYmIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPiAwXG5cbmxldCBydW5fam9iIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0Lm51bV9qb2JzX3J1biA8LSB0Lm51bV9qb2JzX3J1biArIDE7XG4gIFNjaGVkdWxlci5zZXRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0O1xuICBmIGFcbjs7XG5cbmxldCBydW5fZXh0ZXJuYWxfam9icyB0IChzY2hlZHVsZXIgOiBTY2hlZHVsZXIudCkgPVxuICBsZXQgZXh0ZXJuYWxfam9icyA9IHNjaGVkdWxlci5leHRlcm5hbF9qb2JzIGluXG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCBleHRlcm5hbF9qb2JzID4gMCBkb1xuICAgIGxldCAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSkgPVxuICAgICAgVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gZXh0ZXJuYWxfam9ic1xuICAgIGluXG4gICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZG9uZVxuOztcblxubGV0IHJ1bl9qb2JzICh0eXBlIGEpIHQgc2NoZWR1bGVyID1cbiAgKCogV2UgZG8gdGhlIFt0cnktd2l0aF0gb3V0c2lkZSBvZiB0aGUgW3doaWxlXSBiZWNhdXNlIGl0IGlzIGNoZWFwZXIgdGhhbiBkb2luZyBhXG4gICAgIFt0cnktd2l0aF0gZm9yIGVhY2ggam9iLiAqKVxuICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGJlZm9yZSBlbnRlcmluZyB0aGUgbG9vcCwgc2luY2UgaXQgbWlnaHQgZW5xdWV1ZSBhIGpvYixcbiAgICAgY2hhbmdpbmcgW3QubGVuZ3RoXS4gKilcbiAgdHJ5XG4gICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXI7XG4gICAgd2hpbGUgY2FuX3J1bl9hX2pvYiB0IGRvXG4gICAgICBsZXQgdGhpc19qb2IgPSBvZmZzZXQgdCAwIGluXG4gICAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50ID1cbiAgICAgICAgT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyB0aGlzX2pvYilcbiAgICAgIGluXG4gICAgICBsZXQgZiA6IGEgLT4gdW5pdCA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMSkpIGluXG4gICAgICBsZXQgYSA6IGEgPSBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzICh0aGlzX2pvYiArIDIpKSBpblxuICAgICAgKCogV2UgY2xlYXIgb3V0IHRoZSBqb2IgcmlnaHQgbm93IHNvIHRoYXQgaXQgaXNuJ3QgbGl2ZSBhdCB0aGUgbmV4dCBtaW5vclxuICAgICAgICAgY29sbGVjdGlvbi4gIFdlIHRyaWVkIG5vdCBkb2luZyB0aGlzIGFuZCBzYXcgc2lnbmlmaWNhbnQgKDE1JSBvciBzbykgcGVyZm9ybWFuY2VcbiAgICAgICAgIGhpdHMgZHVlIHRvIHNwdXJpb3VzIHByb21vdGlvbi4gKilcbiAgICAgIHNldCB0IDAgZHVtbXlfZSBkdW1teV9mIGR1bW15X2E7XG4gICAgICB0LmZyb250IDwtICh0LmZyb250ICsgMSkgbGFuZCB0Lm1hc2s7XG4gICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgLSAxO1xuICAgICAgKCogSXQgaXMgT0sgaWYgW3J1bl9qb2JdIG9yIFtydW5fZXh0ZXJuYWxfam9ic10gcmFpc2VzLCBpbiB3aGljaCBjYXNlIHRoZSBleG4gaXNcbiAgICAgICAgIGhhbmRsZWQgYnkgdGhlIG91dGVyIHRyeS13aXRoLiAgVGhlIG9ubHkgc2lkZSBlZmZlY3RzIHdlIGhhdmUgZG9uZSBhcmUgdG8gdGFrZVxuICAgICAgICAgdGhlIGpvYiBvdXQgb2YgdGhlIHF1ZXVlIGFuZCBkZWNyZW1lbnQgW2pvYnNfbGVmdF90aGlzX2N5Y2xlXS4gIFtydW5fam9iXSBvclxuICAgICAgICAgW3J1bl9leHRlcm5hbF9qb2JzXSBtYXkgc2lkZSBlZmZlY3QgW3RdLCBlaXRoZXIgYnkgZW5xdWV1ZWluZyBqb2JzLCBvciBieVxuICAgICAgICAgY2xlYXJpbmcgW3RdLiAqKVxuICAgICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGF0IGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBbd2hpbGVdIGxvb3AsIGZvciBmYWlybmVzcy4gKilcbiAgICAgIHJ1bl9leHRlcm5hbF9qb2JzIHQgc2NoZWR1bGVyXG4gICAgZG9uZTtcbiAgICBPayAoKVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKCogV2UgY2FsbCBbRXhuLmJhY2t0cmFjZV0gaW1tZWRpYXRlbHkgYWZ0ZXIgY2F0Y2hpbmcgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiwgdG9cbiAgICAgICBlbnN1cmUgdGhlcmUgaXMgbm8gaW50ZXJ2ZW5pbmcgY29kZSB0aGF0IGludGVyZmVyZXMgd2l0aCB0aGUgZ2xvYmFsIGJhY2t0cmFjZVxuICAgICAgIHN0YXRlLiAqKVxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgRXJyb3IgKGV4biwgYmFja3RyYWNlKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBleHRlcm5hbCBmb3JtYXQgOiBmbG9hdCAtPiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjb3JlX3RpbWVfbnNfZm9ybWF0XCJcblxuICAoKiBXZSB1c2UgYSBtb3JlIHBsZWFzYW50IGZvcm1hdCB0aGFuIFtDb3JlLlRpbWVfbnMuc2V4cF9vZl90XSxcbiAgICAgd2hpY2ggaGFzIHRvIGJlIG1lc3NpZXIgZm9yIHJvdW5kIHRyaXBwYWJpbGl0eS4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBbJXNleHBcbiAgICAgIChmb3JtYXQgKHQgfD4gdG9fc3Bhbl9zaW5jZV9lcG9jaCB8PiBTcGFuLnRvX3NlYykgXCIlWS0lbS0lZFQlSDolTTolUyV6XCIgOiBzdHJpbmcpXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWluZ193aGVlbC5BbGFybVxuXG4gIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICgqIDEvOHRoIG9mIGEgbWlsbGlzZWNvbmQgYWxhcm1fcHJlY2lzaW9uIHNlZW1zIHN1ZmZpY2llbnQgdG8gYXZvaWQgaGF2aW5nIG1hbnkgYWxhcm1zXG4gICAgIGluIHRoZSBzYW1lIGludGVydmFsLCB3aGljaCBhdm9pZHMgcXVhZHJhdGljIGluc2VydGlvbiBzb3J0IHdoZW4gZmlyaW5nIGFsYXJtcy4gIEFuZFxuICAgICB0aGUgbGV2ZWwgYml0cyBnaXZlIHVzIGxldmVscyBvZiA+MXMsID4xbSwgPjFoLCA+MWQuICBTZWUgdGVzdCBpblxuICAgICBbLi4vdGVzdC90ZXN0X3N5bmNocm9ub3VzX3RpbWVfc291cmNlLm1sXS4gKilcbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi4oZGl2IGFib3V0X29uZV9taWxsaXNlY29uZCB+cG93MjozKVxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTM7IDY7IDY7IDUgXSlcbiAgICAoKVxuOztcblxudHlwZSBjYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG5tb2R1bGUgSWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZFxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXR1cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuU3RhdHVzLnQgPVxuICAgICAgICB8IEZpcmVkICgqIGluIFtmaXJlZF9ldmVudHNdLCByZWFkeSB0byBydW4gKilcbiAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRcbiAgICAgICAgKCogY3VycmVudGx5IHJ1bm5pbmcgdGhlIGNhbGxiYWNrIChmb3IgYSBwZXJpb2RpYyBldmVudCkgKilcbiAgICAgICAgfCBTY2hlZHVsZWQgKCogaW4gdGhlIHRpbWluZyB3aGVlbCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkICgqIG5vdCBpbiB0aW1pbmcgd2hlZWwgb3IgW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgICBsZXQgdHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18gPVxuICAgICAgICBtYXRjaCBmcm9tLCB0b18gd2l0aFxuICAgICAgICB8ICggRmlyZWRcbiAgICAgICAgICAsIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCAoKiBzdGFydGVkIHJ1bm5pbmcgY2FsbGJhY2sgKGZvciBhIHBlcmlvZGljIGV2ZW50KSAqKVxuICAgICAgICAgIClcbiAgICAgICAgfCAoIEZpcmVkXG4gICAgICAgICAgLCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgKCogYWJvcnRlZCwgb3Igc3RhcnRlZCBydW5uaW5nIGNhbGxiYWNrIChmb3IgYSBub24tcGVyaW9kaWMgZXZlbnQpICopIClcbiAgICAgICAgKCogW3Jlc2NoZWR1bGVfKl0gZ29lcyB0aHJvdWdoIGFuIGludGVybWVkaWF0ZSBbRmlyZWQsIFVuc2NoZWR1bGVkXSBzdGF0ZSxcbiAgICAgICAgICAgc28gd2UgbmV2ZXIgdHJhbnNpdGlvbiBmcm9tIFtGaXJlZF0gZGlyZWN0bHkgdG8gW1NjaGVkdWxlZF0uICopXG4gICAgICAgIHwgKCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRcbiAgICAgICAgICAsIFNjaGVkdWxlZCAoKiBzY2hlZHVsZWQgbmV4dCBpdGVyYXRpb24gb2YgYSBwZXJpb2RpYyBldmVudCAqKSApXG4gICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50LCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBGaXJlZCAoKiBtb3ZlZCBmcm9tIHRpbWluZyB3aGVlbCB0byBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgVW5zY2hlZHVsZWQgKCogYWJvcnRlZCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBGaXJlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIHBhc3QgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgU2NoZWR1bGVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgZnV0dXJlICopIC0+IHRydWVcbiAgICAgICAgfCAoRmlyZWQgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCksIF8gLT4gZmFsc2VcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIGV2ZW50ID0gVHlwZXMuRXZlbnQudFxuXG4gICAgbGV0IHNleHBfb2ZfZXZlbnRcbiAgICAgICAgICAoeyBhbGFybSA9IF9cbiAgICAgICAgICAgOyBhdFxuICAgICAgICAgICA7IGNhbGxiYWNrID0gX1xuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gX1xuICAgICAgICAgICA7IGludGVydmFsXG4gICAgICAgICAgIDsgbmV4dF9maXJlZCA9IF9cbiAgICAgICAgICAgOyBwcmV2X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHN0YXR1c1xuICAgICAgICAgICB9IDpcbiAgICAgICAgICAgICBldmVudClcbiAgICAgID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgOyBpbnRlcnZhbCA6IChUaW1lX25zLlNwYW4udCBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgICAgKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dFxuICAgICAgICAgdG8gW09iai5tYWdpY11zLiAqKVxuICAgICAgbW9kdWxlIEV2ZW50X2lzX2Jsb2NrIDogc2lnIGVuZCA9IHN0cnVjdFxuICAgICAgICBvcGVuIFR5cGVzXG4gICAgICAgIG9wZW4gRXZlbnRcblxuICAgICAgICB0eXBlIF90ID0gdCA9XG4gICAgICAgICAgeyAoKiBtdXN0IG5ldmVyIGJlIGltbWVkaWF0ZSAqKVxuICAgICAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICAgICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuT3B0aW9uLnRcblxuICAgICAgKCogVXNpbmcgYW4gaW1tZWRpYXRlIHJhdGhlciB0aGFuIGEgc3RhdGljYWxseS1hbGxvY2F0ZWQgcmVjb3JkIGhlcmUgc2VlbXMgdG9cbiAgICAgICAgIGltcHJvdmUgcGVyZm9ybWFuY2Ugbm90aWNlYWJseSAoWy4uL2JlbmNoL2Jpbi9iZW5jaF90aW1lX3NvdXJjZS5leGVdIGJlbmNobWFya1xuICAgICAgICAgaXMgZmFzdGVyIGJ5IH4xMG5zIHBlciBhbGFybSksIHByZXN1bWFibHkgYmVjYXVzZSBpdCBhdm9pZHMgdGhlIGV4cGVuc2l2ZVxuICAgICAgICAgcGFydHMgb2YgY2FtbF9tb2RpZnkuICopXG4gICAgICBsZXQgbm9uZSA9IChPYmoubWFnaWMgTm9uZSA6IHQpICgqIGFuIGFyYml0cmFyeSBpbW1lZGlhdGUgKilcbiAgICAgIGxldCBzb21lID0gKE9iai5tYWdpYyA6IFR5cGVzLkV2ZW50LnQgLT4gdClcbiAgICAgIGxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IGZpcnN0X3NvbWUgdDEgdDIgPSBpZiBpc19zb21lIHQxIHRoZW4gdDEgZWxzZSB0MlxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IChPYmoubWFnaWMgOiB0IC0+IFR5cGVzLkV2ZW50LnQpXG5cbiAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfdmFsdWVcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgb3BlbiBPcHRpb25hbF9zeW50YXhcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbJXNleHAgKCldXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBbJXNleHAgKGV2ZW50IDogZXZlbnQpXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bnNhZmVfdmFsdWUgdClcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCBcIltTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5PcHRpb24udmFsdWVfZXhuIE5vbmVdXCJdXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IHRvX29wdGlvbiB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBTb21lIGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IHNvbWUgZXZlbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC50ID1cbiAgICAgIHsgKCogW2FsYXJtXSBpcyBub24tbnVsbCBpZmYgdGhlIGV2ZW50IGlzIGluIHRoZSB0aW1pbmcgd2hlZWwuICopXG4gICAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICA7ICgqIFtpbnRlcnZhbF0gaXMgdGhlIHBlcmlvZCBmb3IgdGhlIHBlcmlvZGljIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgICAgOyAoKiBbbmV4dF9maXJlZF0gYW5kIFtwcmV2X2ZpcmVkXSBjcmVhdGUgYSBkb3VibHktbGlua2VkIChub24tY2lyY3VsYXIpIGxpc3Qgb2ZcbiAgICAgICAgICAgZmlyZWQgZXZlbnRzLCBsaW5rZWQgdmlhIHRoZXNlIGZpZWxkcy4gQW4gZXZlbnQgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgd2hlblxuICAgICAgICAgICBpdCBmaXJlcywgZWl0aGVyIGJlY2F1c2UgaXQgaXMgYWRkZWQgd2l0aCBhIHRpbWUgaW4gdGhlIHBhc3QsIG9yXG4gICAgICAgICAgIGJlY2F1c2UgdGltZSBhZHZhbmNlcy4gW2FkdmFuY2VfYnlfYWxhcm1zXSBpdGVyYXRlcyBvdmVyIHRoZSBldmVudHNcbiAgICAgICAgICAgaW4gW25leHRfZmlyZWRdIGFuZCBydW5zIHRoZW0sIGVtcHR5aW5nIHRoZSBsaXN0LiBbbm9uZV0gaXMgdXNlZCB0b1xuICAgICAgICAgICBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSBsaW5rZWQgbGlzdCBvZiBmaXJlZCBldmVudHMuICopXG4gICAgICAgIG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gWyVzZXhwX29mOiBldmVudF1cblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgICAgfmFsYXJtOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgICAgIChBbGFybS5pc19udWxsIGFsYXJtKVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRmlyZWQgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBVbnNjaGVkdWxlZCAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHwgU2NoZWR1bGVkIC0+IGZhbHNlKSkpXG4gICAgICAgICAgfmF0Omlnbm9yZVxuICAgICAgICAgIH5jYWxsYmFjazppZ25vcmVcbiAgICAgICAgICB+ZXhlY3V0aW9uX2NvbnRleHQ6aWdub3JlXG4gICAgICAgICAgfmludGVydmFsOmlnbm9yZVxuICAgICAgICAgIH5uZXh0X2ZpcmVkOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKG5leHRfZmlyZWQgOiBPcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICgqIFtuZXh0X2ZpcmVkXSBjYW4gYmUgW05vbmVdIGV2ZW4gaWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBGaXJlZCwgYXNzdW1pbmdcbiAgICAgICAgICAgICAgICAgICAgaXQncyBhdCB0aGUgZW5kIG9mIHRoZSBmaXJlZCBldmVudHMgbGlzdCAqKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHRfZmlyZWQgLT5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogU3RhdHVzLnRdIHQuc3RhdHVzIH5leHBlY3Q6RmlyZWQ7XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAoT3B0aW9uLnNvbWUgdCkgbmV4dF9maXJlZC5wcmV2X2ZpcmVkKSkpXG4gICAgICAgICAgfnByZXZfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAocHJldl9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW3ByZXZfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgcHJldl9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBwcmV2X2ZpcmVkLm5leHRfZmlyZWQpKSlcbiAgICAgICAgICB+c3RhdHVzOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gKHN0YXR1cyA6IFN0YXR1cy50KSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+IGFzc2VydCAoQ29yZS5PcHRpb24uaXNfc29tZSB0LmludGVydmFsKVxuICAgICAgICAgICAgICAgfCBGaXJlZCB8IFVuc2NoZWR1bGVkIHwgU2NoZWR1bGVkIC0+ICgpKSkpXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzIHQgdG9fID1cbiAgICAgIGxldCBmcm9tID0gdC5zdGF0dXMgaW5cbiAgICAgIGlmIG5vdCAoU3RhdHVzLnRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBbJWhlcmVdXG4gICAgICAgICAgICAgIFwiYnVnIC0tIHNldF9zdGF0dXMgdHJhbnNpdGlvbiBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICAgIChmcm9tIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgICh0b18gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgfmV2ZW50Oih0IDogdCldO1xuICAgICAgdC5zdGF0dXMgPC0gdG9fXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzX2lmIH5pcyB0IHRvXyA9IGlmIFN0YXR1cy5lcXVhbCBpcyB0LnN0YXR1cyB0aGVuIHNldF9zdGF0dXMgdCB0b19cbiAgICBsZXQgc2NoZWR1bGVkX2F0ID0gYXRcbiAgZW5kXG5cbiAgbW9kdWxlIEpvYl9vcl9ldmVudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSm9iX29yX2V2ZW50XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICBsZXQgKEsgaykgPSBraW5kIHQgaW5cbiAgICAgIG1hdGNoIGssIHByb2plY3QgayB0IHdpdGhcbiAgICAgIHwgRXZlbnQsIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBFdmVudC50KV1cbiAgICAgIHwgSm9iLCBfIC0+XG4gICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICBbJW1lc3NhZ2UgXCI8Sm9iLnQ+XCJdXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAtJ3J3IHQgPSAncncgVHlwZXMuVGltZV9zb3VyY2UudDEgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyAoKiBbYWR2YW5jZV9lcnJvcnNdIGFjY3VtdWxhdGVzIGVycm9ycyByYWlzZWQgYnkgYWxhcm1zIHJ1biBieVxuICAgICAgICAgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7ICgqIFthbV9hZHZhbmNpbmddIGlzIHRydWUgb25seSBkdXJpbmcgW2FkdmFuY2VfYnlfYWxhcm1zXSwgYW5kIGlzIHVzZWQgdG8gY2F1c2VcbiAgICAgICAgIGNhbGxiYWNrcyB0byByYWlzZSBpZiB0aGV5IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7ICgqIFtmaXJlZF9ldmVudHNdIGlzIHRoZSBmcm9udCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cyxcbiAgICAgICAgIHdoaWNoIGlzIHN0b3JlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtFdmVudC5hdF0uICopXG4gICAgICBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBbbW9zdF9yZWNlbnRseV9maXJlZF0gaXMgdGhlIGV2ZW50IHRoYXQgd2FzIG1vc3QgcmVjZW50bHkgaW5zZXJ0ZWQgaW50b1xuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uIEl0IGlzIHVzZWQgYXMgYW4gb3B0aW1pemF0aW9uIHRvIGFsbG93IGluc2VydGlvbiBvZlxuICAgICAgICAgc3Vic2VxdWVudCBldmVudHMgdG8gc3RhcnQgbGF0ZXIgaW4gdGhlIGxpc3QgcmF0aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZy5cbiAgICAgICAgIEl0IHNwZWNpZmljYWxseSBhdm9pZHMgcXVhZHJhdGljIGJlaGF2aW9yIHdoZW4gaW5zZXJ0aW5nIG11bHRpcGxlIGV2ZW50c1xuICAgICAgICAgdGhhdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGltZSAtLSB0aGUgdGltZSBzb3VyY2UgZmlyZXMgc3VjaCBldmVudHMgaW5cbiAgICAgICAgIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgaW4gdGhhdCBzYW1lIG9yZGVyIGluXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gKilcbiAgICAgIG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBXZSBzdG9yZSBbaGFuZGxlX2ZpcmVkXSBpbiBbdF0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBldmVyeSB0aW1lIHdlIGNhbGxcbiAgICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlcjAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGxldCBub3cgPSBUaW1pbmdfd2hlZWwubm93IGV2ZW50cyBpblxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIndhbGxfY2xvY2tcIiAobm93IDogVGltZV9ucy50KV1cbiAgICBlbHNlIChcbiAgICAgIGxldCBhbGxfZXZlbnRzID0gcmVmIFtdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICBhbGxfZXZlbnRzIDo9IChBbGFybS5hdCBldmVudHMgYWxhcm0sIEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkgOjogIWFsbF9ldmVudHMpO1xuICAgICAgbGV0IGV2ZW50cyA9XG4gICAgICAgIExpc3Quc29ydCAhYWxsX2V2ZW50cyB+Y29tcGFyZTooZnVuIChhdDEsIF8pIChhdDIsIF8pIC0+IFRpbWVfbnMuY29tcGFyZSBhdDEgYXQyKVxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgIGluXG4gICAgICBbJW1lc3NhZ2UgXCJcIiAobm93IDogVGltZV9ucy50KSAoZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgbGlzdCldKVxuICA7O1xuXG4gIGxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5cbiAgbGV0IGlzX2luX2ZpcmVkX2V2ZW50cyA9XG4gICAgbGV0IHJlYyBzZWFyY2ggY3VycmVudCB+dGFyZ2V0X2V2ZW50ID1cbiAgICAgIG1hdGNoJW9wdGlvbmFsIChjdXJyZW50IDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGN1cnJlbnQgLT5cbiAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50IHRhcmdldF9ldmVudCB8fCBzZWFyY2ggY3VycmVudC5uZXh0X2ZpcmVkIH50YXJnZXRfZXZlbnRcbiAgICBpblxuICAgIGZ1biB0IHRhcmdldF9ldmVudCAtPiBzZWFyY2ggdC5maXJlZF9ldmVudHMgfnRhcmdldF9ldmVudFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzICh0eXBlIHJ3KSB+am9iOihqb2JfaW52YXJpYW50IDogSm9iLnQgLT4gdW5pdCkgKHQgOiBydyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmlkOmlnbm9yZVxuICAgICAgICB+YWR2YW5jZV9lcnJvcnM6aWdub3JlXG4gICAgICAgIH5hbV9hZHZhbmNpbmc6aWdub3JlXG4gICAgICAgIH5ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZXZlbnRzIC0+XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLmludmFyaWFudCBpZ25vcmUgZXZlbnRzO1xuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtIGluXG4gICAgICAgICAgICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgICAgICAgICAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICAgICAgICAgICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgICAgICAgICAgICAgIHwgSm9iLCBqb2IgLT4gam9iX2ludmFyaWFudCBqb2JcbiAgICAgICAgICAgICAgIHwgRXZlbnQsIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBhbGFybSBldmVudC5hbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF0gZXZlbnQuYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIGFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogRXZlbnQuU3RhdHVzLnRdIGV2ZW50LnN0YXR1cyB+ZXhwZWN0OlNjaGVkdWxlZDtcbiAgICAgICAgICAgICAgICAgRXZlbnQuaW52YXJpYW50IGV2ZW50KSkpXG4gICAgICAgIH5maXJlZF9ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSAtPlxuICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfZXZlbnQgKGN1cnJlbnQgOiBFdmVudC50KSA9XG4gICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdCkpO1xuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGN1cnJlbnQubmV4dF9maXJlZCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCBuZXh0LmF0KTtcbiAgICAgICAgICAgICAgICAgY2hlY2tfZXZlbnQgbmV4dFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGZpcmVkX2V2ZW50cyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGNoZWNrX2V2ZW50IGV2ZW50KSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmlzX3dhbGxfY2xvY2s6aWdub3JlXG4gICAgICAgIH5tb3N0X3JlY2VudGx5X2ZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGFzc2VydCAoaXNfaW5fZmlyZWRfZXZlbnRzIHQgZXZlbnQpKSlcbiAgICAgICAgfnNjaGVkdWxlcjppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID0gaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gXyAtPiAoKSkgdFxuZW5kXG5cbm9wZW4gVDFcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbmxldCBpZCB0ID0gdC5pZFxubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IGxlbmd0aCB0ID0gVGltaW5nX3doZWVsLmxlbmd0aCB0LmV2ZW50c1xubGV0IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9IFRpbWluZ193aGVlbC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQuZXZlbnRzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcblxuKCogW2ZpcmUgdCBldmVudF0gc2V0cyBbZXZlbnQuc3RhdHVzID0gRmlyZWRdIGFuZCBpbnNlcnRzIFtldmVudF0gaW50b1xuICAgW3QuZmlyZWRfZXZlbnRzXSBpbiBzb3J0ZWQgdGltZSBvcmRlci4gKilcbmxldCBmaXJlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IEZpcmVkO1xuICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICBsZXQgKCkgPVxuICAgICgqIElmIFtldmVudF0gYmVsb25ncyBhZnRlciBbdC5tb3N0X3JlY2VudGx5X2ZpcmVkXSwgdGhlbiB3ZSBzdGFydCB0aGVcbiAgICAgICBpbnNlcnRpb24gdGhlcmUgcmF0aGVyIHRoYW4gYXQgdGhlIGZyb250IG9mIFt0LmZpcmVkX2V2ZW50c10uIFRoaXMgd29ya3NcbiAgICAgICBuaWNlbHkgaWYgd2UncmUgZ2V0dGluZyB0aGUgYWxhcm1zIGluIG5vbi1kZWNyZWFzaW5nIHRpbWUgb3JkZXIsIHdoaWNoIGlzXG4gICAgICAgY2xvc2UgdG8gd2hhdCBbVGltaW5nX3doZWVsXSBwcm92aWRlcyAoYWx0aG91Z2ggW1RpbWluZ193aGVlbF0gZG9lc24ndFxuICAgICAgIGd1YXJhbnRlZSB0aW1lIG9yZGVyaW5nIGZvciB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbCkuICopXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgd2hlbiBUaW1lX25zLiggPD0gKSBtb3N0X3JlY2VudGx5X2ZpcmVkLmF0IGV2ZW50LmF0IC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIG1vc3RfcmVjZW50bHlfZmlyZWQ7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG1vc3RfcmVjZW50bHlfZmlyZWQubmV4dF9maXJlZFxuICAgIHwgXyAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gdC5maXJlZF9ldmVudHNcbiAgaW5cbiAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50O1xuICAoKiBXZSB1c2UgW1RpbWVfbnMuKCA8PSApXSByYXRoZXIgdGhhbiBbPF0gc28gdGhhdCBbZXZlbnRdIGlzIGFkZGVkIGFmdGVyIG90aGVyXG4gICAgIGV2ZW50cyBhdCB0aGUgc2FtZSB0aW1lLiBTaW5jZSBbVGltaW5nX3doZWVsXSBmaXJlcyBhbGFybXMgaW4gYSBidWNrZXQgaW5cbiAgICAgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCwgdXNpbmcgWzw9XSBrZWVwcyBldmVudHMgYXQgdGhlIHNhbWVcbiAgICAgdGltZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLiAqKVxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID0gVGltZV9ucy4oIDw9ICkgbmV4dC5hdCBldmVudC5hdCBpblxuICAgICAgaWYgY29udGludWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWQ7XG4gICAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbmV4dC5uZXh0X2ZpcmVkKTtcbiAgICAgIGNvbnRpbnVlXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIGluXG4gIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuOztcblxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5cbmxldCBuZXh0X2FsYXJtX3J1bnNfYXQgdCA9XG4gIGlmIEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4gIHRoZW4gU29tZSAodGltaW5nX3doZWVsX25vdyB0KVxuICBlbHNlIFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG47O1xuXG5sZXQgbm93IHQgPSBpZiB0LmlzX3dhbGxfY2xvY2sgdGhlbiBUaW1lX25zLm5vdyAoKSBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxubGV0IHRpbWluZ193aGVlbF9ub3cgPSB0aW1pbmdfd2hlZWxfbm93XG5cbmxldCBzY2hlZHVsZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBTY2hlZHVsZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIFRpbWluZ193aGVlbC5hZGQgdC5ldmVudHMgfmF0OmV2ZW50LmF0IChldmVudCB8PiBKb2Jfb3JfZXZlbnQub2ZfZXZlbnQpXG47O1xuXG5sZXQgcmVtb3ZlX2Zyb21fZmlyZWQgdCAoZXZlbnQgOiBFdmVudC50KSB+bmV3X3N0YXR1cyA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgZXZlbnQgbW9zdF9yZWNlbnRseV9maXJlZFxuICAgICAgdGhlblxuICAgICAgICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLmZpcnN0X3NvbWUgZXZlbnQubmV4dF9maXJlZCBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBldmVudC5uZXh0X2ZpcmVkXG4gICAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgZXZlbnQubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBuZXdfc3RhdHVzXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFdmVudFxuXG4gIGxldCBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgeyBhbGFybSA9IEFsYXJtLm51bGwgKClcbiAgICA7IGF0XG4gICAgOyBjYWxsYmFja1xuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG4gICAgOyBpbnRlcnZhbFxuICAgIDsgbmV4dF9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBwcmV2X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHN0YXR1cyA9IFVuc2NoZWR1bGVkXG4gICAgfVxuICA7O1xuXG4gIGxldCBhZGQgdCBldmVudCA9XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgZXZlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICB0aGVuIGZpcmUgdCBldmVudFxuICAgIGVsc2Ugc2NoZWR1bGUgdCBldmVudFxuICA7O1xuXG4gIGxldCBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICBsZXQgZXZlbnQgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayBpblxuICAgIGFkZCB0IGV2ZW50O1xuICAgIGV2ZW50XG4gIDs7XG5cbiAgbGV0IGF0IHQgYXQgY2FsbGJhY2sgPSBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID1cbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDooVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuICA7O1xuXG4gIGxldCByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbiA9XG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IGFsYXJtX3ByZWNpc2lvbiB0IGluXG4gICAgaWYgVGltZV9ucy5TcGFuLiggPCApIHNwYW4gYWxhcm1fcHJlY2lzaW9uXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludGVydmFsIHNwYW4gc21hbGxlciB0aGFuIGFsYXJtIHByZWNpc2lvblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KVxuICAgICAgICAgICAgKGFsYXJtX3ByZWNpc2lvbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgOztcblxuICBsZXQgYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbikgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgYWJvcnQgdCAoZXZlbnQgOiB0KSA6IEFib3J0X3Jlc3VsdC50ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+XG4gICAgICAobWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgKF8gOiBUaW1lX25zLlNwYW4udCkgLT5cbiAgICAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICAgICBldmVudC5zdGF0dXMgPC0gVW5zY2hlZHVsZWQ7XG4gICAgICAgICBPaylcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgT2tcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBVbnNjaGVkdWxlZDtcbiAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICAgICAgT2tcbiAgICB8IFVuc2NoZWR1bGVkIC0+IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgOztcblxuICBsZXQgYWJvcnRfaWZfcG9zc2libGUgdCBldmVudCA9IGlnbm9yZSAoYWJvcnQgdCBldmVudCA6IEFib3J0X3Jlc3VsdC50KVxuXG4gIGxldCBhYm9ydF9leG4gdCBldmVudCA9XG4gICAgbWF0Y2ggYWJvcnQgdCBldmVudCB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgcmVhc29uIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLmFib3J0X2V4bl0gY2Fubm90IGFib3J0IGV2ZW50XCJcbiAgICAgICAgICAgIChyZWFzb24gOiBBYm9ydF9yZXN1bHQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0IGNhbGxiYWNrID0gY3JlYXRlX2ludGVybmFsIHQgfmF0OlRpbWVfbnMuZXBvY2ggfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IGlzX3NjaGVkdWxlZCAoZXZlbnQgOiB0KSA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IEZpcmVkIC0+IHRydWVcbiAgICB8IFVuc2NoZWR1bGVkIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgKGV2ZW50IDogdCkgYXQgfmludGVydmFsID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgKEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IEZpcmVkKSBhcyBzdGF0dXMgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVzZXhwIFwiY2Fubm90IHNjaGVkdWxlIGFuIGV2ZW50IHdpdGggc3RhdHVzXCIsIChzdGF0dXMgOiBFdmVudC5TdGF0dXMudCldXG4gICAgfCBVbnNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBldmVudC5pbnRlcnZhbCA8LSBpbnRlcnZhbDtcbiAgICAgIGFkZCB0IGV2ZW50O1xuICAgICAgT2sgKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfYXQgdCBldmVudCBhdCA9IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgYXQgfmludGVydmFsOk5vbmVcbiAgbGV0IHNjaGVkdWxlX2FmdGVyIHQgZXZlbnQgc3BhbiA9IHNjaGVkdWxlX2F0IHQgZXZlbnQgKFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKVxuXG4gIGxldCBzY2hlZHVsZV9hdF9pbnRlcnZhbHMgdCBldmVudCBzcGFuID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IGV2ZW50IChub3cgdCkgfmludGVydmFsOihTb21lIHNwYW4pXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBldmVudCBhdCA6IHVuaXQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBGaXJlZCAtPlxuICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpVbnNjaGVkdWxlZDtcbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgYWRkIHQgZXZlbnRcbiAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCAtPlxuICAgICAgKCogSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50cyBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gW2ZpcmVkXS4gKilcbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgYWRkIHQgZXZlbnRcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBpZiBUaW1lX25zLiggPiApIGF0ICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICB0aGVuIFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIHQuZXZlbnRzIGV2ZW50LmFsYXJtIH5hdFxuICAgICAgZWxzZSAoXG4gICAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICAgIGZpcmUgdCBldmVudClcbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICBhZGQgdCBldmVudFxuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgZXZlbnQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbmVuZFxuXG5sZXQgcnVuX2FmdGVyIHQgc3BhbiBjYWxsYmFjayA9IGlnbm9yZSAoRXZlbnQuYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbmxldCBydW5fYXQgdCBhdCBjYWxsYmFjayA9IGlnbm9yZSAoRXZlbnQuYXQgdCBhdCBjYWxsYmFjayA6IEV2ZW50LnQpXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gIGlnbm9yZSAoRXZlbnQuYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA6IEV2ZW50LnQpXG47O1xuXG50eXBlIHNlbmRfZXhuID0gTW9uaXRvcjAudCAtPiA/YmFja3RyYWNlOlsgYEdldCB8IGBUaGlzIG9mIEJhY2t0cmFjZS50IF0gLT4gZXhuIC0+IHVuaXRcblxubGV0IHJ1bl9maXJlZF9ldmVudHMgdCB+KHNlbmRfZXhuIDogc2VuZF9leG4gb3B0aW9uKSA9XG4gIGxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gdC5zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBpblxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsICh0LmZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAobWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgRmlyZWQgLT5cbiAgICAgICAgIGxldCBuZXdfc3RhdHVzID1cbiAgICAgICAgICAgbWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gKFVuc2NoZWR1bGVkIDogRXZlbnQuU3RhdHVzLnQpXG4gICAgICAgICAgIHwgU29tZSBfIC0+IChIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgOiBFdmVudC5TdGF0dXMudClcbiAgICAgICAgIGluXG4gICAgICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzO1xuICAgICAgICAgKCogV2Ugc2V0IHRoZSBleGVjdXRpb24gY29udGV4dCBzbyB0aGF0IFtldmVudC5jYWxsYmFja10gcnVucyBpbiB0aGUgc2FtZSBjb250ZXh0XG4gICAgICAgICAgICB0aGF0IHdhcyBpbiBwbGFjZSB3aGVuIFtldmVudF0gd2FzIGNyZWF0ZWQuICopXG4gICAgICAgICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBldmVudC5leGVjdXRpb25fY29udGV4dDtcbiAgICAgICAgICgqIEFueSBtb2RpZmljYXRpb24gb2YgW3N0YXR1c10gYmVsb3cgbmVlZHMgdG8gZmlyc3QgY2hlY2sgdGhhdCB0aGUgZXZlbnQgaXNcbiAgICAgICAgICAgIHN0aWxsIFtIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRdLiBJZiB0aGUgZXZlbnQgc3RhdHVzIGlzIG5vdFxuICAgICAgICAgICAgW0hhcHBlbmluZ19wZXJpb2RpY19ldmVudF0gdGhlbiB0aGUgZXZlbnQncyBjYWxsYmFjayBtdXN0IGhhdmUgcmVzY2hlZHVsZWQgdGhlXG4gICAgICAgICAgICBldmVudC4gSW4gdGhhdCBjYXNlLCBkbyBub3Qgc2V0IHRoZSBzdGF0dXMgb3IgYXR0ZW1wdCB0byByZXNjaGVkdWxlIGFcbiAgICAgICAgICAgIHJlcGVhdGluZyBldmVudC5cblxuICAgICAgICAgICAgVGhpcyBjb2RlIGNvdWxkIGJlIG11Y2ggc2ltcGxlciBpZiB3ZSBpbW1lZGlhdGVseSByZXNjaGVkdWxlZCB0aGUgZXZlbnQgYmVmb3JlXG4gICAgICAgICAgICBydW5uaW5nIHRoZSBjYWxsYmFjayAobm8gbmVlZCBmb3IgdGhlIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBzdGF0ZSB0aGVuKS5cbiAgICAgICAgICAgIE9uZSByZWFzb24gd2UgZG9uJ3QgZG8gdGhhdCBpcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYXV0b21hdGljYWxseSByZXNjaGVkdWxlXG4gICAgICAgICAgICBhIHBlcmlvZGljIGV2ZW50IGlmIGl0cyBjYWxsYmFjayByYWlzZXMuICopXG4gICAgICAgICAobWF0Y2ggZXZlbnQuY2FsbGJhY2sgKCkgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgKG1hdGNoIHNlbmRfZXhuIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBFcnJvci5vZl9leG4gZXhuIDo6IHQuYWR2YW5jZV9lcnJvcnNcbiAgICAgICAgICAgICB8IFNvbWUgc2VuZF9leG4gLT5cbiAgICAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICAgICBzZW5kX2V4biBldmVudC5leGVjdXRpb25fY29udGV4dC5tb25pdG9yIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpKTtcbiAgICAgICAgICAgIEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgIHwgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgIHwgU29tZSBpbnRlcnZhbCAtPlxuICAgICAgICAgICAgICAgaWYgRXZlbnQuU3RhdHVzLmVxdWFsIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudC5zdGF0dXNcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAoKiBUaGUgZXZlbnQncyBjYWxsYmFjayBkaWQgbm90IHJlc2NoZWR1bGUgdGhlIGV2ZW50LiBTbyByZXNjaGVkdWxlIHRoZVxuICAgICAgICAgICAgICAgICAgICByZXBlYXRpbmcgdGltZXIgYmFzZWQgb24gdGhlIGxhc3QgW2F0XSB0aW1lLiAqKVxuICAgICAgICAgICAgICAgICBldmVudC5hdFxuICAgICAgICAgICAgICAgICA8LSBUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIH5iYXNlOmV2ZW50LmF0XG4gICAgICAgICAgICAgICAgICAgICAgfmFmdGVyOih0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICAgICAgICAgICAgICAgICAgfmludGVydmFsO1xuICAgICAgICAgICAgICAgICBzY2hlZHVsZSB0IGV2ZW50KSkpO1xuICAgICAgICAgdHJ1ZSlcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG47O1xuXG5sZXQgYW55X2ZpcmVkX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lICh0LmZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KVxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgdC5ldmVudHMgfnRvXyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5maXJlX3Bhc3RfYWxhcm1zIHQuZXZlbnRzIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG4gPVxuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG4gPVxuICBpZiB0LmFtX2FkdmFuY2luZ1xuICB0aGVuXG4gICAgcmFpc2VfcyBbJXNleHAgXCJjYW5ub3QgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdIG9yIFthZHZhbmNlX2RpcmVjdGx5XSBmcm9tIGNhbGxiYWNrXCJdO1xuICB0LmFtX2FkdmFuY2luZyA8LSB0cnVlO1xuICAobWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gICB8IFtdIC0+ICgpXG4gICB8IF8gLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBbXSk7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaW5pc2hfYWR2YW5jaW5nIHQgPVxuICB0LmFtX2FkdmFuY2luZyA8LSBmYWxzZTtcbiAgbWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gT2sgKClcbiAgfCBlcnJvcnMgLT5cbiAgICB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdO1xuICAgIEVycm9yIChFcnJvci5vZl9saXN0IGVycm9ycylcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gVGltaW5nX3doZWVsLm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG1pbl9hbGFybV90aW1lIHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b186bWluX2FsYXJtX3RpbWUgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5IHQgYnkgPSBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcblxubGV0IGFkdmFuY2VfYnlfbWF4X2FsYXJtc19pbl9lYWNoX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH50b186KFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzKVxuICAgICAgICAgIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHlfYnkgdCBieSA9IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICByZXN1bHQsIGR1cmF0aW9uXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0ID1cbiAgVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0LmV2ZW50c1xuOztcblxubGV0IGhhc19ldmVudHNfdG9fcnVuIHQgPSBFdmVudC5PcHRpb24uaXNfc29tZSB0LmZpcmVkX2V2ZW50c1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXIwXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcbm1vZHVsZSBFdmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBKb2Jfb3JfZXZlbnQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS5Kb2Jfb3JfZXZlbnRcblxubGV0IGRlYnVnID0gRGVidWcuc2NoZWR1bGVyXG5cbm1vZHVsZSBJdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuSXZhclxuXG4gIGxldCBjcmVhdGVfd2l0aF9jZWxsIGNlbGwgPSB7IGNlbGwgfVxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX3dpdGhfY2VsbCBFbXB0eVxuXG4gIGxldCBjcmVhdGVfZnVsbCAodHlwZSBhKSAoYSA6IGEpID1cbiAgICAoKiBXZSBhbGxvY2F0ZSBhbiBpbW11dGFibGUgaXZhciBhbmQgdGhlbiBjYXN0IGl0IHRvIGEgbXV0YWJsZSBpdmFyLiAgVGhlIGltbXV0YWJpbGl0eVxuICAgICAgIGFsbG93cyBPQ2FtbCB0byBzdGF0aWNhbGx5IGFsbG9jYXRlIHRoZSBpdmFyIGlmIFthXSBpcyBjb25zdGFudC4gIFRoaXMgY2FzdCBpcyBzYWZlXG4gICAgICAgYmVjYXVzZSBhIGZ1bGwgaXZhciBpcyBuZXZlciBtdXRhdGVkLiAgV2UgYWxzbyBiZWxpZXZlIHRoYXQgd2Ugd2lsbCBub3QgdHJpZ2dlclxuICAgICAgIGZsYW1iZGEgdG8gc3B1cmlvdXNseSByZXBvciB3YXJuaW5nIDU5LCBtdXRhdGlvbiBvZiBrbm93biBpbW11dGFibGUgZGF0YS4gIEFsbFxuICAgICAgIG11dGF0aW9ucyBvZiBhbiBpdmFyIGNlbGwsIGkuZS4gW2Zvby5jZWxsIDwtIC4uLl0sIGFyZSBkaXJlY3RseSBwcmVjZWRlZCBieSBhXG4gICAgICAgW21hdGNoIGZvby5jZWxsXSB0aGF0IHByZXZlbnRzIHRoZSBbRnVsbF0gY2FzZSBmcm9tIHJlYWNoaW5nIHRoZSBtb2RpZmljYXRpb24uICBTb1xuICAgICAgIGZsYW1iZGEgc2hvdWxkIGFsd2F5cyBlbGltaW5hdGUgdGhlIFtmb28uY2VsbCA8LSAuLi5dIG9mIGEgY29uc3RhbnQgW0Z1bGxdIGl2YXIsXG4gICAgICAgYW5kIG5vdCB3YXJuLiAqKVxuICAgIChPYmoubWFnaWMgOiBhIEltbXV0YWJsZS50IC0+IGEgdCkgeyBjZWxsID0gRnVsbCBhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQnZhciA9IHN0cnVjdFxuICBvcGVuIFR5cGVzLkJ2YXJcblxuICBsZXQgY3JlYXRlICgpID0gb2ZfcmVwciB7IGhhc19hbnlfd2FpdGVycyA9IGZhbHNlOyBpdmFyID0gSXZhci5jcmVhdGUgKCkgfVxuZW5kXG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVHlwZXMuVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0LnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBOb3RfZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlciB+ZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCkgfmV4ZWM6aWdub3JlKVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFNjaGVkdWxlcjAudCA9XG4gIHsgKCogW2NoZWNrX2FjY2Vzc10gb3B0aW9uYWxseSBob2xkcyBhIGZ1bmN0aW9uIHRvIHJ1biB0byBjaGVjayB3aGV0aGVyIGFjY2VzcyB0byBbdF0gaXNcbiAgICAgICBjdXJyZW50bHkgYWxsb3dlZC4gIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IGludmFsaWQgYWNjZXNzIHRvIHRoZSBzY2hlZHVsZXIgZnJvbSBhXG4gICAgICAgdGhyZWFkLiAqKVxuICAgIG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgOiBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCBEZXF1ZS50XG4gIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgKCogVGhlIHNjaGVkdWxlciBjYWxscyBbZ290X3VuY2F1Z2h0X2V4bl0gd2hlbiBhbiBleGNlcHRpb24gYnViYmxlcyB0byB0aGUgdG9wIG9mIHRoZVxuICAgICBtb25pdG9yIHRyZWUgd2l0aG91dCBiZWluZyBoYW5kbGVkLiAgVGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRvIG5ldmVyIHJ1biBhbm90aGVyXG4gICAgIGpvYiBhZnRlciB0aGlzIGJ5IGNhbGxpbmcgW2NsZWFyXSBhbmQgYmVjYXVzZSBbZW5xdWV1ZV9qb2JdIHdpbGwgbmV2ZXIgYWRkIGFub3RoZXJcbiAgICAgam9iLiAqKVxuICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgOyBtdXRhYmxlIGN5Y2xlX2NvdW50IDogaW50XG4gIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGFycmF5XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9lbmQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGFycmF5XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudFxuICAoKiBbZXh0ZXJuYWxfam9ic10gaXMgYSBxdWV1ZSBvZiBhY3Rpb25zIHNlbnQgZnJvbSBvdXRzaWRlIG9mIGFzeW5jLiAgVGhpcyBpcyBmb3IgdGhlXG4gICAgIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBzY2hlZHVsZSBhIGpvYiBvciBmaWxsIGFuIGl2YXIgZnJvbSBhIGNvbnRleHQgd2hlcmUgaXQgaXMgbm90XG4gICAgIHNhZmUgdG8gcnVuIGFzeW5jIGNvZGUsIGJlY2F1c2UgdGhlIGFzeW5jIGxvY2sgaXNuJ3QgaGVsZC4gIEZvciBpbnN0YW5jZTogLSBpbiBhblxuICAgICBPQ2FtbCBmaW5hbGl6ZXIsIGFzIHRoZXkgY2FuIHJ1biBhdCBhbnkgdGltZSBpbiBhbnkgdGhyZWFkLlxuXG4gICAgIFRoZSB3YXkgdG8gZG8gaXQgaXMgdG8gcXVldWUgYSB0aHVuayBpbiBbZXh0ZXJuYWxfam9ic10gYW5kIGNhbGxcbiAgICAgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyB0aGUgc2NoZWR1bGVyXG4gICAgIHRoYXQgbmV3IGFjdGlvbnMgYXJlIGF2YWlsYWJsZS5cblxuICAgICBXaGVuIHVzaW5nIEFzeW5jIG9uIHVuaXgsIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gaXMgc2V0IGluIFtBc3luY191bml4XVxuICAgICB0byBjYWxsIFtJbnRlcnJ1cHRvci50aHJlYWRfc2FmZV9pbnRlcnJ1cHRdLCB3aGljaCB3aWxsIHdha2UgdXAgdGhlXG4gICAgIFtBc3luY191bml4XSBzY2hlZHVsZXIgYW5kIHJ1biBhIGN5Y2xlLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGhvb2sgbWlnaHQgYmUgdXNlZCBpbiBvdGhlciBjb250ZXh0IChqc19vZl9vY2FtbCwgbWlyYWdlKS5cblxuICAgICBXaGVuIHJ1bm5pbmcgYSBjeWNsZSwgd2UgcHVsbCBleHRlcm5hbCBhY3Rpb25zIGF0IGV2ZXJ5IGpvYiBhbmQgcGVyZm9ybSB0aGVtXG4gICAgIGltbWVkaWF0ZWx5LiAqKVxuICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAoKiBbam9iX3F1ZXVlZF9ob29rXSBhbmQgW2V2ZW50X2FkZGVkX2hvb2tdIGFpbSB0byBiZSB1c2VkIGJ5IGpzX29mX29jYW1sLiAqKVxuICAoKiBXZSB1c2UgW18gb3B0aW9uXSBoZXJlIGJlY2F1c2UgdGhvc2UgaG9va3Mgd2lsbCBub3QgYmUgc2V0IGluIHRoZSBjb21tb24gY2FzZVxuICAgICBhbmQgd2Ugd2FudCB0byBhdm9pZCBleHRyYSBmdW5jdGlvbiBjYWxscy4gKilcbiAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSB5aWVsZCA6ICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgbXV0YWJsZVxuICAgIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDpcbiAgICAgICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0gKCogY29uZmlndXJhdGlvbiopKVxuICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgOyBtdXRhYmxlIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudFxuICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHVuY2F1Z2h0X2V4bl91bndyYXBwZWQgPSB1bmNhdWdodF9leG5cblxubGV0IHVuY2F1Z2h0X2V4biB0ID1cbiAgbWF0Y2ggdC51bmNhdWdodF9leG4gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGV4biwgc2V4cCkgLT5cbiAgICBTb21lIChFcnJvci5jcmVhdGUgXCJ1bmhhbmRsZWQgZXhjZXB0aW9uXCIgKGV4biwgc2V4cCkgWyVzZXhwX29mOiBFeG4udCAqIFNleHAudF0pXG47O1xuXG5sZXQgbnVtX3BlbmRpbmdfam9icyB0ID1cbiAgSm9iX3F1ZXVlLmxlbmd0aCB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzICsgSm9iX3F1ZXVlLmxlbmd0aCB0Lmxvd19wcmlvcml0eV9qb2JzXG47O1xuXG5sZXQgbnVtX2pvYnNfcnVuIHQgPVxuICBKb2JfcXVldWUubnVtX2pvYnNfcnVuIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgKyBKb2JfcXVldWUubnVtX2pvYnNfcnVuIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBsYXN0X2N5Y2xlX251bV9qb2JzIHQgPSB0Lmxhc3RfY3ljbGVfbnVtX2pvYnNcblxubGV0IHVub3JkZXJlZF9pc19zdWJsaXN0IH5lcXVhbCB+c3VibGlzdDpzbWFsbCBsYXJnZSA9XG4gIGxldCBsYXJnZSA9IEFycmF5LnRvX2xpc3QgbGFyZ2UgaW5cbiAgbGV0IHJlbW92ZSBhIHggPVxuICAgIG1hdGNoIExpc3Quc3BsaXRfd2hpbGUgYSB+ZjooZnVuIHkgLT4gbm90IChlcXVhbCB5IHgpKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBOb25lXG4gICAgfCBsLCBfIDo6IHIgLT4gU29tZSAobCBAIHIpXG4gIGluXG4gIE9wdGlvbi5pc19zb21lXG4gICAgKExpc3QuZm9sZCBzbWFsbCB+aW5pdDooU29tZSBsYXJnZSkgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgIE9wdGlvbi5iaW5kIGFjYyB+ZjooZnVuIGwgLT4gcmVtb3ZlIGwgeCkpKVxuOztcblxubGV0IGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHRhYmxlIGFycmF5ID1cbiAgKCogWW91IGNhbiBpbiBmYWN0IGhhdmUgaG9va3MgaW4gdGhlIGxpc3QgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgZW50cnkgaW5cbiAgICAgdGhlIHRhYmxlLiBTdWNoIGhvb2tzIGNhbiBuZXZlciBiZSByZW1vdmVkLiAqKVxuICBhc3NlcnQgKHVub3JkZXJlZF9pc19zdWJsaXN0IH5lcXVhbDpwaHlzX2VxdWFsIH5zdWJsaXN0OihIYXNodGJsLmRhdGEgdGFibGUpIGFycmF5KVxuOztcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jaGVja19hY2Nlc3M6aWdub3JlXG4gICAgICB+am9iX3Bvb2w6KGNoZWNrIEpvYl9wb29sLmludmFyaWFudClcbiAgICAgIH5ub3JtYWxfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH5sb3dfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBxIC0+IERlcXVlLml0ZXIgcSB+ZjpWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuaW52YXJpYW50KSlcbiAgICAgIH5tYWluX2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+Y3VycmVudF9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfnVuY2F1Z2h0X2V4bjpcbiAgICAgICAgKGNoZWNrIChmdW4gdW5jYXVnaHRfZXhuIC0+XG4gICAgICAgICAgIGlmIGlzX3NvbWUgdW5jYXVnaHRfZXhuIHRoZW4gYXNzZXJ0IChudW1fcGVuZGluZ19qb2JzIHQgPSAwKSkpXG4gICAgICB+Y3ljbGVfY291bnQ6KGNoZWNrIChmdW4gY3ljbGVfY291bnQgLT4gYXNzZXJ0IChjeWNsZV9jb3VudCA+PSAwKSkpXG4gICAgICB+Y3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+aW5fY3ljbGU6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCkpXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX2VuZDppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgdC5ydW5fZXZlcnlfY3ljbGVfZW5kKSlcbiAgICAgIH5sYXN0X2N5Y2xlX3RpbWU6aWdub3JlXG4gICAgICB+dG90YWxfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH5sYXN0X2N5Y2xlX251bV9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBsYXN0X2N5Y2xlX251bV9qb2JzIC0+IGFzc2VydCAobGFzdF9jeWNsZV9udW1fam9icyA+PSAwKSkpXG4gICAgICB+dGltZV9zb3VyY2U6XG4gICAgICAgIChjaGVja1xuICAgICAgICAgICAoU3luY2hyb25vdXNfdGltZV9zb3VyY2UuUmVhZF93cml0ZS5pbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBqb2IgLT5cbiAgICAgICAgICAgICAgYXNzZXJ0IChQb29sLnBvaW50ZXJfaXNfdmFsaWQgdC5qb2JfcG9vbCBqb2IpKSkpXG4gICAgICB+ZXh0ZXJuYWxfam9iczppZ25vcmVcbiAgICAgIH50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vazppZ25vcmVcbiAgICAgIH5qb2JfcXVldWVkX2hvb2s6aWdub3JlXG4gICAgICB+ZXZlbnRfYWRkZWRfaG9vazppZ25vcmVcbiAgICAgIH55aWVsZDppZ25vcmVcbiAgICAgIH55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbjppZ25vcmVcbiAgICAgIH5jaGVja19pbnZhcmlhbnRzOmlnbm9yZVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOmlnbm9yZVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiU2NoZWR1bGVyLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IHQpXVxuOztcblxubGV0IGZyZWVfam9iIHQgam9iID0gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG5cbmxldCBlbnF1ZXVlIHQgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCkgZiBhID1cbiAgKCogSWYgdGhlcmUncyBiZWVuIGFuIHVuY2F1Z2h0IGV4biwgd2UgZG9uJ3QgYWRkIHRoZSBqb2IsIHNpbmNlIHdlIGRvbid0IHdhbnQgYW55IGpvYnNcbiAgICAgdG8gcnVuIG9uY2UgdGhlcmUncyBiZWVuIGFuIHVuY2F1Z2h0IGV4bi4gKilcbiAgaWYgaXNfbm9uZSB0LnVuY2F1Z2h0X2V4blxuICB0aGVuIChcbiAgICBsZXQgcHJpb3JpdHkgPSBleGVjdXRpb25fY29udGV4dC5wcmlvcml0eSBpblxuICAgIGxldCBqb2JfcXVldWUgPVxuICAgICAgbWF0Y2ggcHJpb3JpdHkgd2l0aFxuICAgICAgfCBOb3JtYWwgLT4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgfCBMb3cgLT4gdC5sb3dfcHJpb3JpdHlfam9ic1xuICAgIGluXG4gICAgSm9iX3F1ZXVlLmVucXVldWUgam9iX3F1ZXVlIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBtYXRjaCB0LmpvYl9xdWV1ZWRfaG9vayB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT4gZiBwcmlvcml0eSlcbjs7XG5cbmxldCBlbnF1ZXVlX2pvYiB0IGpvYiB+ZnJlZV9qb2IgPVxuICBsZXQgam9iX3Bvb2wgPSB0LmpvYl9wb29sIGluXG4gIGVucXVldWVcbiAgICB0XG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDApXG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDEpXG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDIpO1xuICBpZiBmcmVlX2pvYiB0aGVuIFBvb2wuZnJlZSB0LmpvYl9wb29sIGpvYlxuOztcblxubGV0IGhhbmRsZV9maXJlZCAodGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQpIGpvYl9vcl9ldmVudCA9XG4gIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgfCBKb2IsIGpvYiAtPiBlbnF1ZXVlX2pvYiB0aW1lX3NvdXJjZS5zY2hlZHVsZXIgam9iIH5mcmVlX2pvYjp0cnVlXG4gIHwgRXZlbnQsIGV2ZW50IC0+IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLmZpcmUgdGltZV9zb3VyY2UgZXZlbnRcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgbGV0IHJlYyB0ID1cbiAgICB7IGNoZWNrX2FjY2VzcyA9IE5vbmVcbiAgICA7IGpvYl9wb29sID0gSm9iX3Bvb2wuY3JlYXRlICgpXG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA9IEpvYl9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IGxvd19wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA9IERlcXVlLmNyZWF0ZSAoKVxuICAgIDsgbWFpbl9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG4gICAgOyB1bmNhdWdodF9leG4gPSBOb25lXG4gICAgOyBjeWNsZV9zdGFydCA9IG5vd1xuICAgIDsgY3ljbGVfY291bnQgPSAwXG4gICAgOyBpbl9jeWNsZSA9IGZhbHNlXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnQgPSBbfHxdXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA9IFt8fF1cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgbGFzdF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyBsYXN0X2N5Y2xlX251bV9qb2JzID0gMFxuICAgIDsgdG90YWxfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGV4dGVybmFsX2pvYnMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rID0gaWdub3JlXG4gICAgOyBqb2JfcXVldWVkX2hvb2sgPSBOb25lXG4gICAgOyBldmVudF9hZGRlZF9ob29rID0gTm9uZVxuICAgIDsgeWllbGQgPSBCdmFyLmNyZWF0ZSAoKVxuICAgIDsgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPSBCdmFyLmNyZWF0ZSAoKSAoKiBjb25maWd1cmF0aW9uICopXG4gICAgOyBjaGVja19pbnZhcmlhbnRzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5jaGVja19pbnZhcmlhbnRzXG4gICAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9jb25maWcubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICA7IHJlY29yZF9iYWNrdHJhY2VzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5yZWNvcmRfYmFja3RyYWNlc1xuICAgIH1cbiAgYW5kIGV2ZW50cyA9XG4gICAgVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOkFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93XG4gIGFuZCB0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCA9XG4gICAgeyBpZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkLmNyZWF0ZSAoKVxuICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBbXVxuICAgIDsgYW1fYWR2YW5jaW5nID0gZmFsc2VcbiAgICA7IGV2ZW50c1xuICAgIDsgaGFuZGxlX2ZpcmVkID0gKGZ1biBhbGFybSAtPiBoYW5kbGVfZmlyZWQgdGltZV9zb3VyY2UgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpXG4gICAgOyBmaXJlZF9ldmVudHMgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgaXNfd2FsbF9jbG9jayA9IHRydWVcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IGlzX2RlYWQgdCA9IGlzX3NvbWUgdC51bmNhdWdodF9leG5cbmxldCBzZXRfY2hlY2tfYWNjZXNzIHQgZiA9IHQuY2hlY2tfYWNjZXNzIDwtIGZcblxubGV0IGJhY2t0cmFjZV9vZl9maXJzdF9qb2IgdCA9XG4gIE9wdGlvbi5maXJzdF9zb21lXG4gICAgKEpvYl9xdWV1ZS5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzKVxuICAgIChKb2JfcXVldWUuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgdC5sb3dfcHJpb3JpdHlfam9icylcbjs7XG5cbmxldCB0X3JlZiA9XG4gIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBjcmVhdGUgd2l0aFxuICB8IE9rIHQgLT4gcmVmIHRcbiAgfCBFcnJvciBleG4gLT5cbiAgICBEZWJ1Zy5sb2cgXCJBc3luYyBjYW5ub3QgY3JlYXRlIGl0cyByYXcgc2NoZWR1bGVyXCIgZXhuIFslc2V4cF9vZjogZXhuXTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBjaGVja19hY2Nlc3MgdCA9XG4gIG1hdGNoIHQuY2hlY2tfYWNjZXNzIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgKClcbjs7XG5cbmxldCB0ICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgY2hlY2tfYWNjZXNzIHQ7XG4gIHRcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgPVxuICBpZiB0LnJlY29yZF9iYWNrdHJhY2VzXG4gIHRoZW4gRXhlY3V0aW9uX2NvbnRleHQucmVjb3JkX2JhY2t0cmFjZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgZWxzZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSB0IHRtcF9jb250ZXh0IH5mIHggPVxuICBsZXQgb2xkX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdG1wX2NvbnRleHQ7XG4gIHByb3RlY3R4IH5mIHggfmZpbmFsbHk6KGZ1biBfIC0+IHNldF9leGVjdXRpb25fY29udGV4dCB0IG9sZF9jb250ZXh0KVxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dCB+ZiA9IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgKClcblxubGV0IGNyZWF0ZV9qb2IgKHR5cGUgYSkgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiBQb29sLmlzX2Z1bGwgdC5qb2JfcG9vbCB0aGVuIHQuam9iX3Bvb2wgPC0gUG9vbC5ncm93IHQuam9iX3Bvb2w7XG4gIFBvb2wubmV3M1xuICAgIHQuam9iX3Bvb2xcbiAgICBleGVjdXRpb25fY29udGV4dFxuICAgIChPYmoubWFnaWMgKGYgOiBhIC0+IHVuaXQpIDogT2JqLnQgLT4gdW5pdClcbiAgICAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBnb3RfdW5jYXVnaHRfZXhuIHQgZXhuIHNleHAgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcImdvdF91bmNhdWdodF9leG5cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XTtcbiAgTGlzdC5pdGVyIFsgdC5ub3JtYWxfcHJpb3JpdHlfam9iczsgdC5sb3dfcHJpb3JpdHlfam9icyBdIH5mOkpvYl9xdWV1ZS5jbGVhcjtcbiAgdC51bmNhdWdodF9leG4gPC0gU29tZSAoZXhuLCBzZXhwKVxuOztcblxuKCogW3N0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGVuYWJsZXMgc3Vic2VxdWVudCBjYWxscyBvZiBbcnVuX2pvYnNdXG4gICB0byBydW4gdXAgdG8gW21heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGpvYnMgb2YgZWFjaCBwcmlvcml0eSBsZXZlbC4gKilcbmxldCBzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5ID1cbiAgbGV0IG4gPSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eSBpblxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgbjtcbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lmxvd19wcmlvcml0eV9qb2JzIG5cbjs7XG5cbigqIFtydW5fam9icyB0XSByZW1vdmVzIGpvYnMgZnJvbSBbdF0gb25lIGF0IGEgdGltZSBhbmQgcnVucyB0aGVtLCBzdG9wcGluZyBhcyBzb29uXG4gICBhcyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3Igd2hlbiBubyBtb3JlIGpvYnMgY2FuIGJlIHJ1biBhdCBhbnkgcHJpb3JpdHksXG4gICBhcyBwZXIgW35tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XS4gKilcbmxldCByZWMgcnVuX2pvYnMgdCA9XG4gIG1hdGNoIEpvYl9xdWV1ZS5ydW5fam9icyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIHQgd2l0aFxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gIHwgT2sgKCkgLT5cbiAgICAobWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubG93X3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgfCBPayAoKSAtPlxuICAgICAgIGlmIEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgICB8fCBKb2JfcXVldWUuY2FuX3J1bl9hX2pvYiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgICAgdGhlbiBydW5fam9icyB0XG4gICAgICAgZWxzZSBPayAoKSlcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIHN0YXJ0X2N5Y2xlXG4gICAgdFxuICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5OlxuICAgICAgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gSW50Lm1heF92YWx1ZSk7XG4gIG1hdGNoIHJ1bl9qb2JzIHQgd2l0aFxuICB8IE9rICgpIC0+IE9rICgpXG4gIHwgRXJyb3IgKGV4biwgX2JhY2t0cmFjZSkgLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgY3JlYXRlX3RpbWVfc291cmNlXG4gICAgICA/KHRpbWluZ193aGVlbF9jb25maWcgPSBBc3luY19rZXJuZWxfY29uZmlnLnRpbWluZ193aGVlbF9jb25maWcpXG4gICAgICB+bm93XG4gICAgICAoKVxuICA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXZlbnRzID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0Om5vdyBpblxuICBsZXQgcmVjIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gZmFsc2VcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdGltZV9zb3VyY2Vcbjs7XG5cbmxldCB3YWxsX2Nsb2NrICgpID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UucmVhZF9vbmx5ICh0ICgpKS50aW1lX3NvdXJjZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIENlbGwgPSBUeXBlcy5DZWxsXG5cbnR5cGUgYW55ID1cbiAgWyBgRW1wdHlcbiAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgfCBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgfCBgRnVsbFxuICB8IGBJbmRpclxuICBdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkl2YXIudCA9IHsgbXV0YWJsZSBjZWxsIDogKCdhLCBhbnkpIGNlbGwgfVxuXG4oKiBUaGUgWydiXSBpcyB1c2VkIHRvIGVuY29kZSB0aGUgY29uc3RydWN0b3IuICBUaGlzIGFsbG93cyB1cyB0byB3cml0ZSBmdW5jdGlvbnMgdGhhdFxuICAgdGFrZSBvbmx5IG9uZSBvZiB0aGUgY29uc3RydWN0b3JzLCB3aXRoIG5vIHJ1bnRpbWUgdGVzdC5cblxuICAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBkaXJlY3RlZCBncmFwaCB3aXRoIGl2YXJzIGFzIG5vZGVzIGFuZCBbSW5kaXJdcyBhc1xuICAgZWRnZXMgaXMgYWN5Y2xpYy4gIFRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSBhbiBbSW5kaXJdIGFyZSBbc3F1YXNoXSBhbmRcbiAgIFtjb25uZWN0XSwgYW5kIGZvciB0aG9zZSwgdGhlIHRhcmdldCBvZiB0aGUgW0luZGlyXSBpcyBhbHdheXMgYSBub24tW0luZGlyXS4gIFRodXMsIHRoZVxuICAgbmV3bHkgYWRkZWQgZWRnZXMgYXJlIG5ldmVyIHBhcnQgb2YgYSBjeWNsZS4gKilcbmFuZCAoJ2EsICdiKSBjZWxsID0gKCdhLCAnYikgVHlwZXMuQ2VsbC50ID1cbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICB7ICgqIFtydW5dIGlzIG11dGFibGUgc28gd2UgY2FuIHNldCBpdCB0byBbaWdub3JlXSB3aGVuIHRoZSBoYW5kbGVyIGlzIHJlbW92ZWQuXG4gICAgICAgICAgIFRoaXMgaXMgdXNlZCB3aGVuIHdlIGluc3RhbGwgYSBoYW5kbGVyIG9uIGEgZnVsbCBpdmFyIHNpbmNlIGl0IGlzIGltbWVkaWF0ZWx5XG4gICAgICAgICAgIGFkZGVkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gICAgICAgIG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW3ByZXZdIGFuZCBbbmV4dF0gY2lyY3VsYXJseSBkb3VibHkgbGluayBhbGwgaGFuZGxlcnMgb2YgdGhlIHNhbWUgaXZhci4gKilcbiAgICAgICAgbXV0YWJsZSBwcmV2IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICA7IG11dGFibGUgbmV4dCA6ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICAgICAgfVxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICgnYSAtPiB1bml0KSAqIEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIGNlbGxcbiAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIGNlbGxcbiAgfCBGdWxsIDogJ2EgLT4gKCdhLCBbPiBgRnVsbCBdKSBjZWxsXG4gIHwgSW5kaXIgOiAnYSB0IC0+ICgnYSwgWz4gYEluZGlyIF0pIGNlbGxcblxubW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG5cbiAgbGV0IHJ1biAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnJ1blxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5leGVjdXRpb25fY29udGV4dFxuICBsZXQgcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnByZXZcbiAgbGV0IG5leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5uZXh0XG4gIGxldCBzZXRfcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5ydW4gPC0geFxuICBsZXQgc2V0X3ByZXYgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnByZXYgPC0geFxuICBsZXQgc2V0X25leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0Lm5leHQgPC0geFxuXG4gIGxldCBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0ID1cbiAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgICAgICB7IHJ1blxuICAgICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHRcbiAgICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdFxuICAgICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0IH1cbiAgICAgICAgIGluXG4gICAgICAgICBoMSBdfVxuXG4gICAgICAgSG93ZXZlciB0aGUgY29tcGlsYXRpb24gb2YgcmVjdXJzaXZlIHZhbHVlIGluIE9DYW1sIGlzIG5vdCBvcHRpbWFsOiB0aGUgdmFsdWUgaXNcbiAgICAgICBhbGxvY2F0ZWQgdHdpY2UgYW5kIGNvcGllZCBvbmNlICh3aXRoIGEgbG9vcCBjYWxsaW5nIGNhbWxfbW9kaWZ5KS4gIFRoaXMgaXMgbm90XG4gICAgICAgbmVjZXNzYXJ5IGZvciBzaW1wbGUgcmVjdXJzaXZlIGRlZmluaXRpb25zIGxpa2UgdGhpcyBvbmUuXG5cbiAgICAgICBJbnN0ZWFkIHdlIGFsbG9jYXRlIHRoZSB2YWx1ZSB3aXRoIGR1bW15IGZpZWxkcyBhbmQgdXBkYXRlIHRoZW0gYWZ0ZXIuICopXG4gICAgbGV0IHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gT2JqLm1hZ2ljIE5vbmU7IG5leHQgPSBPYmoubWFnaWMgTm9uZSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA9XG4gICAgKCogQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mOlxuXG4gICAgICAge1tcbiAgICAgICAgIGxldCByZWMgdDEgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMVxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MlxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDIgfVxuICAgICAgICAgYW5kIHQyID1cbiAgICAgICAgICAgeyBydW4gICAgICAgICAgICAgICA9IHJ1bjJcbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MlxuICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdDFcbiAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQxIH1cbiAgICAgICAgIGluXG4gICAgICAgICB0MSBdfSAqKVxuICAgIGxldCB0MSA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjFcbiAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MVxuICAgICAgICA7IHByZXYgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICA7IG5leHQgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgdDIgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW4gPSBydW4yOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MjsgcHJldiA9IHQxOyBuZXh0ID0gdDEgfVxuICAgIGluXG4gICAgc2V0X3ByZXYgdDEgdDI7XG4gICAgc2V0X25leHQgdDEgdDI7XG4gICAgdDFcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdCk7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGxldCB0MSA9ICFyIGluXG4gICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKHByZXYgKG5leHQgdDEpKSB0MSk7XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgKGV4ZWN1dGlvbl9jb250ZXh0IHQxKTtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBwaHlzX2VxdWFsIHQgKG5leHQgdClcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCBuID0gcmVmIDEgaW5cbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgaW5jciBuO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZTtcbiAgICAhblxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIHQgc2NoZWR1bGVyIHYgPSBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgKGV4ZWN1dGlvbl9jb250ZXh0IHQpIChydW4gdCkgdlxuXG4gIGxldCBzY2hlZHVsZV9qb2JzIHQgdiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgZW5xdWV1ZSB0IHNjaGVkdWxlciB2O1xuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBlbnF1ZXVlICFyIHNjaGVkdWxlciB2O1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9XG4gICAgc2V0X3ByZXYgKG5leHQgdCkgKHByZXYgdCk7XG4gICAgc2V0X25leHQgKHByZXYgdCkgKG5leHQgdCk7XG4gICAgc2V0X3ByZXYgdCB0O1xuICAgIHNldF9uZXh0IHQgdFxuICA7O1xuXG4gIGxldCBhZGQgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gcHJldiB0OyBuZXh0ID0gdCB9XG4gICAgaW5cbiAgICBzZXRfbmV4dCAocHJldiB0KSByZXN1bHQ7XG4gICAgc2V0X3ByZXYgdCByZXN1bHQ7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgKCogW3NwbGljZSB0MSB0Ml0gY3JlYXRlczpcblxuICAgICB7dlxuICAgICAgIC0tPiB0MSA8LS0+IC4uLiA8LS0+IGxhc3QxIDwtLT4gdDIgPC0tPiAuLi4gPC0tPiBsYXN0MiA8LS1cbiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICB2fSAqKVxuICBsZXQgc3BsaWNlIHQxIHQyID1cbiAgICBsZXQgbGFzdDEgPSBwcmV2IHQxIGluXG4gICAgbGV0IGxhc3QyID0gcHJldiB0MiBpblxuICAgIHNldF9uZXh0IGxhc3QxIHQyO1xuICAgIHNldF9uZXh0IGxhc3QyIHQxO1xuICAgIHNldF9wcmV2IHQxIGxhc3QyO1xuICAgIHNldF9wcmV2IHQyIGxhc3QxXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgbGV0IGZpcnN0ID0gY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICAgbGV0IHJlYyBsb29wIHByZXYgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNldF9wcmV2IGZpcnN0IHByZXZcbiAgICAgICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldjsgbmV4dCA9IGZpcnN0IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIHNldF9uZXh0IHByZXYgdDtcbiAgICAgICAgICBsb29wIHQgbFxuICAgICAgaW5cbiAgICAgIGxvb3AgZmlyc3QgbDtcbiAgICAgIFNvbWUgZmlyc3RcbiAgOztcblxuICBsZXQgdG9fbGlzdCBmaXJzdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgYWNjID1cbiAgICAgIGxldCBhY2MgPSAocnVuIHQsIGV4ZWN1dGlvbl9jb250ZXh0IHQpIDo6IGFjYyBpblxuICAgICAgaWYgcGh5c19lcXVhbCB0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCAocHJldiB0KSBhY2NcbiAgICBpblxuICAgIGxvb3AgKHByZXYgZmlyc3QpIFtdXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBfICh0IDogXyB0KSA9XG4gICAgbGV0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1biA9IF87IGV4ZWN1dGlvbl9jb250ZXh0OyBuZXh0ID0gXzsgcHJldiA9IF8gfSkgPVxuICAgICAgdFxuICAgIGluXG4gICAgWyVtZXNzYWdlIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpXVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaXZhciA9ICdhIHRcblxuKCogQ29tcGlsZWQgYXMgdGhlIGlkZW50aXR5LiAqKVxubGV0IGNlbGxfb2ZfaGFuZGxlciA6IF8gSGFuZGxlci50IC0+IF8gPSBmdW5jdGlvblxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgeCAtPiAoeCA6PiAoXywgYW55KSBjZWxsKVxuOztcblxubGV0IGVxdWFsICh0IDogXyB0KSB0JyA9IHBoeXNfZXF1YWwgdCB0J1xubGV0IGluZGlyIHQgPSB7IGNlbGwgPSBJbmRpciB0IH1cblxuaW5jbHVkZSBTY2hlZHVsZXIuSXZhclxuXG4oKiBbc3F1YXNoIHRdIHJldHVybnMgdGhlIG5vbi1bSW5kaXJdIGl2YXIgYXQgdGhlIGVuZCBvZiB0aGUgKHBvc3NpYmx5IGVtcHR5KSBjaGFpbiBvZlxuICAgW0luZGlyXXMgc3RhcnRpbmcgd2l0aCBbdF0gYW5kIGVuc3VyZXMgdGhhdCBhbGwgW0luZGlyXXMgYWxvbmcgdGhhdCBjaGFpbiBhcmUgcmVwbGFjZWRcbiAgIHdpdGggYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbi4gKilcbmxldCBzcXVhc2ggPVxuICBsZXQgcmVjIGZvbGxvdyBpbmRpciB0ID1cbiAgICAoKiBbaW5kaXIgPSBJbmRpciB0XSAqKVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyBhcyBpbmRpcicgLT4gZm9sbG93IGluZGlyJyB0J1xuICAgIHwgXyAtPiBpbmRpclxuICBpblxuICBsZXQgcmVjIHVwZGF0ZSB0IGluZGlyID1cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIHQuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHVwZGF0ZSB0JyBpbmRpclxuICAgIHwgXyAtPiB0XG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIC0+XG4gICAgICAobWF0Y2ggdCcuY2VsbCB3aXRoXG4gICAgICAgfCBJbmRpciB0JycgYXMgaW5kaXIgLT4gdXBkYXRlIHQgKGZvbGxvdyBpbmRpciB0JycpXG4gICAgICAgfCBfIC0+IHQnICgqIG5vdGhpbmcgdG8gZG8sIHNpbmNlIFt0XSBpcyBhIGNoYWluIHdpdGggYSBzaW5nbGUgW0luZGlyXSAqKSlcbiAgICB8IF8gLT4gdFxuOztcblxuKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzbid0IGFuIFtJbmRpcl0uICopXG5cbmxldCBpbnZhcmlhbnQgYV9pbnZhcmlhbnQgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYV9pbnZhcmlhbnQgYVxuICB8IEVtcHR5IC0+ICgpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKF8sIGV4ZWN1dGlvbl9jb250ZXh0KSAtPlxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCBleGVjdXRpb25fY29udGV4dFxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmludmFyaWFudCBoYW5kbGVyXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0IDogU2V4cC50ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBMaXN0IFsgQXRvbSBcIkZ1bGxcIjsgc2V4cF9vZl9hIGEgXVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gQXRvbSBcIkVtcHR5XCJcbjs7XG5cbmxldCBwZWVrIHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IFNvbWUgYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gTm9uZVxuOztcblxubGV0IHZhbHVlIHQgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGggPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IGFcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgZmFpbHdpdGggaWZfZW1wdHlfdGhlbl9mYWlsd2l0aFxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkl2YXIudmFsdWVfZXhuIGNhbGxlZCBvbiBlbXB0eSBpdmFyXCJcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IGZhbHNlXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG47O1xuXG5sZXQgaXNfZnVsbCB0ID0gbm90IChpc19lbXB0eSB0KVxuXG5sZXQgZmlsbCB0IHYgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiSXZhci5maWxsIG9mIGZ1bGwgaXZhclwiICh0IDogXyB0KV1cbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRnVsbCB2XG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIHQuY2VsbCA8LSBGdWxsIHY7XG4gICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuOztcblxubGV0IHJlbW92ZV9oYW5kbGVyIHQgKGhhbmRsZXIgOiBfIEhhbmRsZXIudCkgPVxuICBIYW5kbGVyLnNldF9ydW4gaGFuZGxlciBpZ25vcmU7XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gLT5cbiAgICAoKiBUaGVzZSBhcmUgb25seSBwb3NzaWJsZSBpZiBbaGFuZGxlcl0gd2FzIGFscmVhZHkgcmVtb3ZlZC4gICopXG4gICAgKClcbiAgfCBGdWxsIF8gLT5cbiAgICAoKiBUaGlzIGlzIHBvc3NpYmxlIGlmIFt0XSB3YXMgZmlsbGVkIGJlZm9yZSB3ZSB0cnkgdG8gcmVtb3ZlIHRoZSBoYW5kbGVyLiAgRS5nLlxuICAgICAgIFtEZWZlcnJlZC5jaG9vc2VdIHdpbGwgZG8gdGhpcy4gKilcbiAgICAoKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgY2VsbCAtPlxuICAgIGlmIEhhbmRsZXIuaXNfc2luZ2xldG9uIGhhbmRsZXJcbiAgICB0aGVuIHQuY2VsbCA8LSBFbXB0eVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBoYW5kbGVyIGNlbGwgdGhlbiB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLm5leHQgaGFuZGxlcik7XG4gICAgICBIYW5kbGVyLnVubGluayBoYW5kbGVyKVxuOztcblxubGV0IGFkZF9oYW5kbGVyIHQgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnIGluXG4gICAgdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyO1xuICAgIGhhbmRsZXJcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT4gSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHRcbiAgfCBGdWxsIHYgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICgqIFtydW5dIGNhbGxzIFtoYW5kbGVyLnJ1bl0sIHdoaWNoLCBpZiBbaGFuZGxlcl0gaGFzIGJlZW4gcmVtb3ZlZCwgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAgIHRvIFtpZ25vcmVdLiAqKVxuICAgIGxldCBydW4gdiA9IEhhbmRsZXIucnVuIGhhbmRsZXIgdiBpblxuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2O1xuICAgIGhhbmRsZXJcbjs7XG5cbmxldCBoYXNfaGFuZGxlcnMgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG4gIHwgRW1wdHkgfCBGdWxsIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB1cG9uJyB0IHJ1biA9IGFkZF9oYW5kbGVyIHQgcnVuIFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpXG5cbigqIFt1cG9uXSBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUgYXM6XG5cbiAgIHtbXG4gICAgIGxldCB1cG9uIHQgZiA9IGlnbm9yZSAodXBvbicgdCBydW4pIF19XG5cbiAgIEhvd2V2ZXIsIGJlbG93IGlzIGEgbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHdvcnRoIGRvaW5nIGJlY2F1c2UgW3Vwb25dXG4gICBpcyB2ZXJ5IHdpZGVseSB1c2VkIGFuZCBpcyBzbyBtdWNoIG1vcmUgY29tbW9uIHRoYW4gW3Vwb24nXS4gIFRoZSBiZWxvdyBpbXBsZW1lbnRhdGlvblxuICAgYXZvaWRzIHRoZSB1c2Ugb2YgdGhlIGJhZyBvZiBoYW5kbGVycyBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIG9mIG9uZSBoYW5kbGVyIGZvclxuICAgdGhlIGRlZmVycmVkLiAqKVxubGV0IHVwb24gdCBydW4gPVxuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIHYgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHkgLT4gdC5jZWxsIDwtIEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgdC5jZWxsXG4gICAgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHQgOiBfIEhhbmRsZXIudClcbjs7XG5cbigqIFtjb25uZWN0XSB0YWtlcyBpdmFycyBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdLCBhbmQgbWFrZXMgW2JpbmRfcmhzXVxuICAgYmUgYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgbm9uLWluZGlyIGNlbGwgcmVhY2hhYmxlIGZyb20gW2JpbmRfcmVzdWx0XS4gIE9uIGVudHJ5XG4gICB0byBbY29ubmVjdF0sIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gbWF5IGJlIGNoYWlucywgc2luY2UgW2JpbmRfcmhzXSBpcyBhblxuICAgYXJiaXRyYXJ5IHVzZXItc3VwcGxpZWQgZGVmZXJyZWQsIGFuZCBbYmluZF9yZXN1bHRdIGlzIHJldHVybmVkIHRvIHRoZSB1c2VyIHByaW9yIHRvXG4gICBiZWluZyBbY29ubmVjdF1lZCwgYW5kIG1heSBoYXZlIGJlZW4gY29udmVydGVkIHRvIGFuIGluZGlyZWN0aW9uIGluIHRoZSBjYXNlIG9mXG4gICByaWdodC1uZXN0ZWQgYmluZHMuXG5cbiAgIFRoZSBwdXJwb3NlIG9mIFtjb25uZWN0XSBpcyB0byBtYWtlIHRhaWwtcmVjdXJzaXZlIGJpbmQgbG9vcHMgdXNlIGNvbnN0YW50IHNwYWNlLlxuICAgRS5nLjpcblxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgIGlmIGkgPSAwXG4gICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCViaW5kICgpID0gYWZ0ZXIgKHNlYyAxLikgaW5cbiAgICAgICAgIGxvb3AgKGkgLSAxKSkgXX1cblxuICAgW2Nvbm5lY3RdIG1ha2VzIGludGVybWVkaWF0ZSBiaW5kIHJlc3VsdHMgYWxsIGJlIFtJbmRpcl1zIHBvaW50aW5nIGF0IHRoZSBvdXRlcm1vc3RcbiAgIGJpbmQsIHJhdGhlciB0aGFuIGJlaW5nIGEgbGluZWFyLWxlbmd0aCBjaGFpbiwgd2l0aCBlYWNoIHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBvbmUuXG4gICBUaGVuLCBzaW5jZSB0aGUgcHJvZ3JhbSBpcyBvbmx5IGhvbGRpbmcgb24gdG8gdGhlIGlubmVybW9zdCBhbmQgb3V0ZXJtb3N0IGJpbmRzIGFsbCB0aGVcbiAgIGludGVybWVkaWF0ZSBvbmVzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC5cblxuICAgW2Nvbm5lY3RdIHdvcmtzIGJ5IHNxdWFzaGluZyBpdHMgYXJndW1lbnRzIHNvIHRoYXQgdGhlIFtiaW5kX3Joc10gYWx3YXlzIHBvaW50cyBhdCB0aGVcbiAgIHVsdGltYXRlIHJlc3VsdC4gKilcbmxldCBjb25uZWN0ID1cbiAgKCogW3JlcG9pbnRfaW5kaXJzIH5pdmFyIH5pbmRpciB+YmluZF9yZXN1bHRdIHJlcG9pbnRzIHRvIFtpbmRpcl0gYWxsIHRoZSBpdmFycyBpbiB0aGVcbiAgICAgY2hhaW4gcmVhY2hhYmxlIGZyb20gW2l2YXJdLCBhbmQgcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gY2VsbCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgICBjaGFpbi4gIEFmdGVyIHJlcG9pbnRpbmcsIHdlIHdpbGwgbWVyZ2UgdGhlIGhhbmRsZXJzIGluIHRoYXQgY2VsbCB3aXRoIHRoZSBoYW5kbGVyc1xuICAgICBpbiBbYmluZF9yZXN1bHRdLCBhbmQgcHV0IHRoZSBtZXJnZWQgc2V0IG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0uICopXG4gIGxldCByZWMgcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdCA9XG4gICAgbGV0IGNlbGwgPSBpdmFyLmNlbGwgaW5cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IEluZGlyIGl2YXInIC0+XG4gICAgICBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICByZXBvaW50X2luZGlycyB+aXZhcjppdmFyJyB+aW5kaXIgfmJpbmRfcmVzdWx0XG4gICAgfCBGdWxsIF8gLT4gY2VsbFxuICAgIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPlxuICAgICAgKCogSXQgaXMgcG9zc2libGUgdGhhdCBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdIGFyZSBub3QgZXF1YWwsIGJ1dCB0aGVpciBjaGFpbnNcbiAgICAgICAgIG9mIGluZGlycyBsZWFkIHRvIHRoZSBzYW1lIG5vbi1bSW5kaXJdIGNlbGwsIGluIHdoaWNoIGNhc2Ugd2UgY2Fubm90IHNldCB0aGF0XG4gICAgICAgICBjZWxsIHRvIHBvaW50IHRvIGl0c2VsZiwgYmVjYXVzZSB0aGF0IHdvdWxkIGludHJvZHVjZSBhIGN5Y2xlLiAqKVxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIGl2YXIgYmluZF9yZXN1bHQpIHRoZW4gaXZhci5jZWxsIDwtIGluZGlyO1xuICAgICAgY2VsbFxuICBpblxuICBmdW4gfmJpbmRfcmVzdWx0IH5iaW5kX3JocyAtPlxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBiaW5kX3Jlc3VsdCBiaW5kX3JocylcbiAgICB0aGVuIChcbiAgICAgIGxldCBiaW5kX3Jlc3VsdCA9IHNxdWFzaCBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGluZGlyID0gSW5kaXIgYmluZF9yZXN1bHQgaW5cbiAgICAgIGxldCBiaW5kX3Joc19jb250ZW50cyA9IHJlcG9pbnRfaW5kaXJzIH5pdmFyOmJpbmRfcmhzIH5pbmRpciB+YmluZF9yZXN1bHQgaW5cbiAgICAgICgqIHVwZGF0ZSBbYmluZF9yZXN1bHRdIHdpdGggdGhlIHVuaW9uIG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0gYW5kXG4gICAgICAgICBbYmluZF9yaHNdICopXG4gICAgICBtYXRjaCBiaW5kX3Jlc3VsdC5jZWxsLCBiaW5kX3Joc19jb250ZW50cyB3aXRoXG4gICAgICB8IEluZGlyIF8sIF8gfCBfLCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdIGFuZCBbcmVwb2ludF9pbmRpcnNdICopXG4gICAgICAoKiBbY29ubmVjdF0gaXMgb25seSB1c2VkIGluIGJpbmQsIHdob3NlIGl2YXIgaXMgb25seSBldmVyIGV4cG9ydGVkIGFzIGEgcmVhZC1vbmx5XG4gICAgICAgICBkZWZlcnJlZC4gIFRodXMsIFtiaW5kX3Jlc3VsdF0gbXVzdCBiZSBlbXB0eS4gKilcbiAgICAgIHwgRnVsbCBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBfLCBFbXB0eSAtPiAoKVxuICAgICAgfCBFbXB0eSwgXyAtPiBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzXG4gICAgICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSwgRnVsbCB2IC0+XG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHM7XG4gICAgICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gICAgICB8IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjIsIGV4ZWN1dGlvbl9jb250ZXh0MikgKSAtPlxuICAgICAgICBsZXQgaGFuZGxlcjEgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlcjEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgOiBfIEhhbmRsZXIudClcbiAgICAgIHwgKCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMSwgZXhlY3V0aW9uX2NvbnRleHQxKVxuICAgICAgICAsIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuYWRkIGhhbmRsZXIyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIGluXG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXIxXG4gICAgICB8ICggKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT4gSGFuZGxlci5zcGxpY2UgaGFuZGxlcjEgaGFuZGxlcjIpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgSXZhciA9IEl2YXIwXG5tb2R1bGUgSGFuZGxlciA9IEl2YXIuSGFuZGxlclxuXG4oKiBEZWZlcnJlZHMgcHJlc2VudCBhIGNvdmFyaWFudCB2aWV3IG9mIGl2YXJzLiAgV2UgY291bGQgYWN0dWFsbHkgaW1wbGVtZW50IGRlZmVycmVkc1xuICAgdXNpbmcgYSByZWNvcmQgb2YgY2xvc3VyZXMsIGFzIGluIHRoZSBbZXNzZW5jZV9vZl9kZWZlcnJlZF0gcmVjb3JkIGJlbG93LCBmb3Igd2hpY2ggdGhlXG4gICBPQ2FtbCB0eXBlIGNoZWNrZXIgY2FuIGluZmVyIGNvdmFyaWFuY2UuICBIb3dldmVyLCBkb2luZyBzbyB3b3VsZCBtYWtlIFtJdmFyLnJlYWRdIHZlcnlcbiAgIGNvc3RseSwgYmVjYXVzZSBpdCB3b3VsZCBoYXZlIHRvIGFsbG9jYXRlIGxvdHMgb2YgY2xvc3VyZXMgYW5kIGEgcmVjb3JkLiAgSW5zdGVhZCBvZlxuICAgZG9pbmcgdGhpcywgd2UgbWFrZSBkZWZlcnJlZHMgYW4gYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIHdoaWNoIGNvbmNyZXRlbHkgaXMganVzdCB0aGVcbiAgIGl2YXIsIGFuZCB1c2UgW09iai5tYWdpY10gdG8gY29udmVydCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGEgZGVmZXJyZWQgYW5kIGl0cyBjb25jcmV0ZVxuICAgcmVwcmVzZW50YXRpb24gYXMgYW4gaXZhci4gIFRoaXMgW09iai5tYWdpY10gaXMgc2FmZSBiZWNhdXNlIHRoZSByZXByZXNlbnRhdGlvbiBpc1xuICAgYWx3YXlzIGp1c3QgYW4gaXZhciwgYW5kIHRoZSBjb3ZhcmlhbmNlIGZvbGxvd3MgZnJvbSB0aGUgZmFjdCB0aGF0IGFsbCB0aGUgZGVmZXJyZWRcbiAgIG9wZXJhdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8gdGhvc2UgaW1wbGVtZW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIHRoZVxuICAgW2Vzc2VuY2Vfb2ZfZGVmZXJyZWRdLlxuXG4gICB7W1xuICAgICB0eXBlICgrJ2EsICdleGVjdXRpb25fY29udGV4dCkgZXNzZW5jZV9vZl9kZWZlcnJlZCA9XG4gICAgICAgeyBwZWVrICAgICAgICAgICAgICAgICAgICAgIDogdW5pdCAtPiAnYSBvcHRpb25cbiAgICAgICA7IGlzX2RldGVybWluZWQgICAgICAgICAgICAgOiB1bml0IC0+IGJvb2xcbiAgICAgICA7IHVwb24gICAgICAgICAgICAgICAgICAgICAgOiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICAgICAgIDsgdXBvbicgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiBVbnJlZ2lzdGVyLnRcbiAgICAgICA7IGluc3RhbGxfcmVtb3ZhYmxlX2hhbmRsZXIgOiAoJ2EsICdleGVjdXRpb25fY29udGV4dCkgUmF3X2hhbmRsZXIudCAtPiBVbnJlZ2lzdGVyLnQ7IH0gXX0gKilcblxudHlwZSArJ2EgdCA9ICdhIFR5cGVzLkRlZmVycmVkLnRcblxuKCogdGhlIGFic3RyYWN0IGNvdmFyaWFudCB0eXBlLCBlcXVpdmFsZW50IHRvIGl2YXIgKilcblxubGV0IG9mX2l2YXIgKHR5cGUgYSkgKGl2YXIgOiBhIEl2YXIudCkgOiBhIHQgPSBPYmoubWFnaWMgaXZhclxubGV0IHRvX2l2YXIgKHR5cGUgYSkgdCA6IGEgSXZhci50ID0gT2JqLm1hZ2ljICh0IDogYSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgKHRvX2l2YXIgdClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBJdmFyLnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2l2YXIgdClcbmxldCBwZWVrIHQgPSBJdmFyLnBlZWsgKHRvX2l2YXIgdClcbmxldCByZXR1cm4gYSA9IG9mX2l2YXIgKEl2YXIuY3JlYXRlX2Z1bGwgYSlcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBJdmFyLmlzX2Z1bGwgKHRvX2l2YXIgdClcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgSXZhci52YWx1ZVxuICAgICh0b19pdmFyIHQpXG4gICAgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGg6XCJEZWZlcnJlZC52YWx1ZV9leG4gY2FsbGVkIG9uIHVuZGV0ZXJtaW5lZCBkZWZlcnJlZFwiXG47O1xuXG5sZXQgdXBvbiB0IGYgPSBJdmFyLnVwb24gKHRvX2l2YXIgdCkgZlxuXG5sZXQgY3JlYXRlIGYgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZiByZXN1bHQ7XG4gIG9mX2l2YXIgcmVzdWx0XG47O1xuXG4oKiBkb24ndCB1c2UgW2NyZWF0ZV0gaGVyZSBhcyBpdCB3b3VsZCBhbGxvY2F0ZSBvbmUgbW9yZSBjbG9zdXJlICopXG5sZXQgYmluZCB0IH5mID1cbiAgbGV0IGJpbmRfcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmNvbm5lY3QgfmJpbmRfcmVzdWx0IH5iaW5kX3JoczoodG9faXZhciAoZiBhKSkpO1xuICBvZl9pdmFyIGJpbmRfcmVzdWx0XG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBmIGV4ZWN1dGlvbl9jb250ZXh0ID0gSXZhci5hZGRfaGFuZGxlciAodG9faXZhciB0KSBmIGV4ZWN1dGlvbl9jb250ZXh0XG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCBoID0gSXZhci5yZW1vdmVfaGFuZGxlciAodG9faXZhciB0KSBoXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMFxuaW5jbHVkZSBJdmFyMFxuXG5sZXQgcmVhZCA9IERlZmVycmVkLm9mX2l2YXJcbmxldCBmaWxsX2lmX2VtcHR5IHQgdiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmaWxsIHQgdlxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKE9wdGlvbilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSB0ID0gcGVlayB0XG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICAgICAgICB8IFNvbWUgYSAtPiBjcmVhdGVfZnVsbCBhXG4gICAgICA7O1xuICAgIGVuZClcbiIsIigqKiBbTW9uYWRfc2VxdWVuY2UuU10gaXMgYSBnZW5lcmljIGludGVyZmFjZSBzcGVjaWZ5aW5nIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBhXG4gICAgY29udGFpbmVyIGFuZCBhIG1vbmFkLiAgSXQgaXMgc3BlY2lhbGl6ZWQgdG8gdGhlIFtEZWZlcnJlZF0gbW9uYWQgYW5kIHVzZWQgd2l0aFxuICAgIHZhcmlvdXMgY29udGFpbmVycyBpbiBtb2R1bGVzIFtEZWZlcnJlZC5BcnJheV0sIFtEZWZlcnJlZC5MaXN0XSwgW0RlZmVycmVkLlF1ZXVlXSwgYW5kXG4gICAgW0RlZmVycmVkLlNlcXVlbmNlXS4gIFRoZSBbTW9uYWRfc2VxdWVuY2UuaG93XSB0eXBlIHNwZWNpZmllcyB0aGUgcGFyYWxsZWxpc20gb2ZcbiAgICBjb250YWluZXIgaXRlcmF0b3JzLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSBob3cgPVxuICBbIGBQYXJhbGxlbCAoKiogbGlrZSBbYE1heF9jb25jdXJyZW50X2pvYnMgSW50Lm1heF92YWx1ZV0gKilcbiAgfCBgU2VxdWVudGlhbFxuICAoKiogW2BTZXF1ZW50aWFsXSBpcyBvZnRlbiBidXQgbm90IGFsd2F5cyB0aGUgc2FtZSBhcyBbYE1heF9jb25jdXJyZW50X2pvYnMgMV1cbiAgICAgIChmb3IgZXhhbXBsZSwgdGhleSBkaWZmZXIgaW4gdGhlIFtPcl9lcnJvcl0gbW9uYWQpLiAqKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG9mIGludFxuICBdXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgbW9uYWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIG1vbmFkXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gKGludCAqICdhKSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiBvcHRpb24gbW9uYWRcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgYWxsIDogJ2EgbW9uYWQgdCAtPiAnYSB0IG1vbmFkXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgbW9uYWQgdCAtPiB1bml0IG1vbmFkXG5cbiAgKCoqIHsyIERlZmVycmVkIGl0ZXJhdG9yc31cblxuICAgICAgSW4gdGhlIGZvbGxvd2luZywgdGhlIGRlZmF1bHQgW2hvd10gaXMgW2BTZXF1ZW50aWFsXSAqKVxuXG4gIHZhbCBpbml0IDogaG93OmhvdyAtPiBpbnQgLT4gZjooaW50IC0+ICdhIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBpdGVyIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIGl0ZXJpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBtYXAgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIG1hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBmaWx0ZXIgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlcl9tYXBpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGNvbmNhdF9tYXAgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIHQgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbmVuZFxuIiwib3BlbiBDb3JlXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuaW5jbHVkZSBEZWZlcnJlZDBcblxuKCogVG8gYXZvaWQgYSBzcGFjZSBsZWFrLCBpdCBpcyBuZWNlc3NhcnkgdGhhdCBbbmV2ZXJdIGFsbG9jYXRlcyBhIG5ldyBpdmFyIHdoZW5ldmVyIGl0IGlzXG4gICBjYWxsZWQuICBDb2RlIGNhbiBiaW5kIG9uIFtuZXZlciAoKV0sIHNvIGlmIHdlIHJlLXVzZWQgdGhlIGl2YXIsIHdlIGNvdWxkIGVuZGxlc3NseVxuICAgYWNjdW11bGF0ZSBoYW5kbGVycy4gKilcbmxldCBuZXZlciAoKSA9IEl2YXIucmVhZCAoSXZhci5jcmVhdGUgKCkpXG5cbm1vZHVsZSBNID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBEZWZlcnJlZDBcblxuICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAoKiBXZSBtYW51YWxseSBpbmxpbmUgW0RlZmVycmVkLmNyZWF0ZV0gaGVyZSwgYmVjYXVzZSB0aGUgbm9uLWZsYW1iZGEgY29tcGlsZXIgaXNuJ3RcbiAgICAgICAgIGFibGUgdG8gb3B0aW1pemUgYXdheSB0aGUgY2xvc3VyZSB0aGF0IHdvdWxkIGJlIGJlIGNyZWF0ZWQuICopXG4gICAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gdCAoZnVuIGEgLT4gSXZhci5maWxsIHJlc3VsdCAoZiBhKSk7XG4gICAgICBvZl9pdmFyIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5pbmNsdWRlIE1cblxuKCogV2UgcmViaW5kIGFsbCB0aGUgdmFyaW91cyBbcmV0dXJuXXMgYmVjYXVzZSB0aGUgdXNlIG9mIHRoZSBbTW9uYWQuTWFrZV0gZnVuY3RvclxuICAgY2F1c2VzIHRoZSBjb21waWxlciB0byBub3QgaW5saW5lIFtyZXR1cm5dLCBhbmQgaGVuY2UgbWFrZXMgaXQgaW1wb3NzaWJsZSB0b1xuICAgc3RhdGljYWxseSBhbGxvY2F0ZSBjb25zdGFudHMgbGlrZSBbcmV0dXJuICgpXS4gIEJ5IHJlYmluZGluZyBbcmV0dXJuXSBhc1xuICAgW0RlZmVycmVkMC5yZXR1cm5dLCB0aGUgY29tcGlsZXIgY2FuIHNlZSB0aGF0OlxuXG4gICB7W1xuICAgICByZXR1cm4gYSA9IHsgSXZhci5JbW11dGFibGUuIGNlbGwgPSBGdWxsIGEgfSBdfVxuXG4gICBBbmQgaGVuY2UsIGlmIFthXSBpcyBjb25zdGFudCwgdGhlbiB0aGUgcmV0dXJuIGlzIGNvbnN0YW50IGFuZCBjYW4gYmUgc3RhdGljYWxseVxuICAgYWxsb2NhdGVkLiAgV2hlbiBjb21waWxpbmcgd2l0aCBmbGFtYmRhLCB0aGUgY29tcGlsZXIgaW5saW5lcyBbcmV0dXJuXSBhbmQgdGhpcyBtYW51YWxcbiAgIHJlYmluZGluZyB3b3VsZCBub3QgaGVscDsgd2UndmUgZGVjaWRlZCB0byBkbyBpdCBhbnl3YXkgc28gdGhhdCBub24tZmxhbWJkYSBidWlsZHNcbiAgIGdldCB0aGUgb3B0aW1pemF0aW9uLiAqKVxubGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNLkxldF9zeW50YXhcblxuICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBNLkxldF9zeW50YXguTGV0X3N5bnRheFxuXG4gICAgbGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbigqIFdlIHNoYWRvdyBbYWxsXSBvbi1wdXJwb3NlIGhlcmUsIHNpbmNlIHRoZSBkZWZhdWx0IGRlZmluaXRpb24gaW50cm9kdWNlcyBhIGNoYWluIG9mXG4gICBiaW5kcyBhcyBsb25nIGFzIHRoZSBsaXN0LiAqKVxubGV0IGFsbCA9IGBNYWtlX3N1cmVfdG9fZGVmaW5lX2FsbF9lbHNld2hlcmVcbmxldCBfID0gYWxsXG5sZXQgdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgYm90aCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPiB1cG9uIHQxIChmdW4gYTEgLT4gdXBvbiB0MiAoZnVuIGEyIC0+IEl2YXIuZmlsbCByZXN1bHQgKGExLCBhMikpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbGV0ICggPj4+ICkgPSB1cG9uXG4gIGxldCBwcHhfYm90aCA9IGJvdGhcbmVuZFxuXG5vcGVuIEluZml4XG5cbmxldCBkb24ndF93YWl0X2ZvciAoXyA6IHVuaXQgdCkgPSAoKVxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPSBUIDogJ2IgRGVmZXJyZWQwLnQgKiAoJ2IgLT4gJ2EpIC0+ICdhIHRcblxuICBsZXQgbWFwIChUICh0LCBmMSkpIH5mOmYyID0gVCAodCwgZnVuIHggLT4gZjIgKGYxIHgpKVxuZW5kXG5cbm1vZHVsZSBVbnJlZ2lzdGVyID0gc3RydWN0XG4gICgqIFRoaXMgcmVwcmVzZW50YXRpb24gc2F2ZXMgMm4gd29yZHMgZm9yIGEgbGlzdCBvZiBuIGNob2ljZXMuICopXG4gIHR5cGUgJ3IgdCA9XG4gICAgfCBOaWwgOiAnciB0XG4gICAgfCBDb25zIDogJ2EgRGVmZXJyZWQwLnQgKiAoJ2EgLT4gJ3IpICogJ2EgRGVmZXJyZWQwLkhhbmRsZXIudCAqICdyIHQgLT4gJ3IgdFxuXG4gIGxldCByZWMgcHJvY2VzcyA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHQsIF9mLCBoYW5kbGVyLCByZXN0KSAtPlxuICAgICAgcmVtb3ZlX2hhbmRsZXIgdCBoYW5kbGVyO1xuICAgICAgcHJvY2VzcyByZXN0XG4gIDs7XG5lbmRcblxubGV0IGNob2ljZSB0IGYgPSBDaG9pY2UuVCAodCwgZilcblxubGV0IGVuYWJsZWQgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdW5yZWdpc3RlcnMgPSByZWYgVW5yZWdpc3Rlci5OaWwgaW5cbiAgbGV0IHJlYWR5IF8gPVxuICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgdGhlbiAoXG4gICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgIXVucmVnaXN0ZXJzO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoZnVuICgpIC0+XG4gICAgICAgIExpc3QucmV2XG4gICAgICAgICAgKExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OltdIH5mOihmdW4gYWMgKENob2ljZS5UICh0LCBmKSkgLT5cbiAgICAgICAgICAgICBtYXRjaCBwZWVrIHQgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBhY1xuICAgICAgICAgICAgIHwgU29tZSB2IC0+IGYgdiA6OiBhYykpKSlcbiAgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgdW5yZWdpc3RlcnNcbiAgOj0gTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biBhY2MgKENob2ljZS5UICh0LCBmKSkgLT5cbiAgICBDb25zICh0LCBmLCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSk7XG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCByZWMgY2hvb3NlX3Jlc3VsdCBjaG9pY2VzID1cbiAgbWF0Y2ggY2hvaWNlcyB3aXRoXG4gIHwgVW5yZWdpc3Rlci5OaWwgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVW5yZWdpc3Rlci5Db25zICh0LCBmLCBfLCByZXN0KSAtPlxuICAgIChtYXRjaCBwZWVrIHQgd2l0aFxuICAgICB8IE5vbmUgLT4gY2hvb3NlX3Jlc3VsdCByZXN0XG4gICAgIHwgU29tZSB2IC0+IGYgdilcbjs7XG5cbmxldCBnZW5lcmljX2Nob29zZSBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gICgqIEEgYmFjay1wYXRjaGVkIHJlZiBjb3VsZCBiZSB1c2VkIGhlcmUsIGJ1dCB1c2luZyBsYXp5IHNhdmVzIHNvbWUgbWVtb3J5XG4gICAgIGJlY2F1c2UgdGhlIEdDIGV2ZW50dWFsbHkgcmVtb3ZlcyB0aGUgZXh0cmEgaW5kaXJlY3Rpb24uICopXG4gIGxldCByZWMgdW5yZWdpc3RlcnMgPVxuICAgIGxhenlcbiAgICAgIChMaXN0LmZvbGRfcmlnaHQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIChDaG9pY2UuVCAodCwgZikpIGFjYyAtPlxuICAgICAgICAgVW5yZWdpc3Rlci5Db25zICh0LCBmLCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSkpXG4gIGFuZCByZWFkeSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4gXyAtPlxuICAgICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdW5yZWdpc3RlcnMgPSBMYXp5LmZvcmNlIHVucmVnaXN0ZXJzIGluXG4gICAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyB1bnJlZ2lzdGVycztcbiAgICAgICAgSXZhci5maWxsIHJlc3VsdCAoY2hvb3NlX3Jlc3VsdCB1bnJlZ2lzdGVycykpXG4gIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSB1bnJlZ2lzdGVycyBpblxuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG4oKiBbY2hvb3NlMl0gaXMgYSBzcGVjaWFsaXphdGlvbiBvZiBbY2hvb3NlXSB0aGF0IGhhcyBiZXR0ZXIgbWVtb3J5IHVzYWdlLlxuICAgQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgW2Nob29zZTJdIGtlZXBzIDIyIGV4dHJhIHdvcmRzIGFsaXZlXG4gICBmb3IgdGhlIGR1cmF0aW9uIG9mIGNob2ljZSBzdGF5aW5nIHVuZGV0ZXJtaW5lZCwgd2hpbGUgdGhlIGVxdWl2YWxlbnQgZ2VuZXJpY1xuICAgW2Nob29zZV0ga2VlcHMgMjcgKHNlZSB0aGUgYmVuY2htYXJrIGluIC4uL2JlbmNoL2Jpbi9iZW5jaF9jaG9vc2VfbWVtb3J5X3VzYWdlLm1sKS4gKilcbmxldCBjaG9vc2UyIGEgZmEgYiBmYiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICBsZXQgcmVjIGFfaGFuZGxlciA9IGxhenkgKERlZmVycmVkMC5hZGRfaGFuZGxlciBhIHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0KVxuICBhbmQgYl9oYW5kbGVyID0gbGF6eSAoRGVmZXJyZWQwLmFkZF9oYW5kbGVyIGIgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQpXG4gIGFuZCByZWFkeSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4gXyAtPlxuICAgICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBUaGUgb3JkZXIgb2YgdGhlc2Ugb3BlcmF0aW9ucyBtYXR0ZXJzOlxuICAgICAgICAgICBpZiB3ZSBjYWxsIFtmYl0gb3IgW2ZhXSBmaXJzdCBhbmQgW3JlbW92ZV9oYW5kbGVyXSBhZnRlciwgdGhlblxuICAgICAgICAgICBhbnkgZXhjZXB0aW9ucyByYWlzZWQgd2lsbCBjYXVzZSB0aGUgaGFuZGxlcnMgdG8gcmVtYWluIGFuZCB0aGVuXG4gICAgICAgICAgIHRoZSBcInNlY29uZCBjaG9pY2VcIiBnZXRzIGEgY2hhbmNlIHRvIHJ1bi5cbiAgICAgICAgKilcbiAgICAgICAgcmVtb3ZlX2hhbmRsZXIgYSAoTGF6eS5mb3JjZSBhX2hhbmRsZXIpO1xuICAgICAgICByZW1vdmVfaGFuZGxlciBiIChMYXp5LmZvcmNlIGJfaGFuZGxlcik7XG4gICAgICAgIG1hdGNoIHBlZWsgYSB3aXRoXG4gICAgICAgIHwgU29tZSBhdiAtPiBJdmFyLmZpbGwgcmVzdWx0IChmYSBhdilcbiAgICAgICAgfCBOb25lIC0+IEl2YXIuZmlsbCByZXN1bHQgKGZiICh2YWx1ZV9leG4gYikpKVxuICBpblxuICBsZXQgKF8gOiBfKSA9IExhenkuZm9yY2UgYV9oYW5kbGVyIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSBiX2hhbmRsZXIgaW5cbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IGNob29zZSBjaG9pY2VzID1cbiAgbWF0Y2ggY2hvaWNlcyB3aXRoXG4gIHwgWyBDaG9pY2UuVCAoYSwgZmEpOyBDaG9pY2UuVCAoYiwgZmIpIF0gLT4gY2hvb3NlMiBhIGZhIGIgZmJcbiAgfCBjaG9pY2VzIC0+IGdlbmVyaWNfY2hvb3NlIGNob2ljZXNcbjs7XG5cbmxldCBhbnlfZiB0cyBmID0gY2hvb3NlIChMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gY2hvaWNlIHQgZikpXG5sZXQgYW55IHRzID0gYW55X2YgdHMgRm4uaWRcbmxldCBhbnlfdW5pdCB0cyA9IGFueV9mIHRzIChGbi5pZ25vcmUgOiB1bml0IC0+IHVuaXQpXG5cbmxldCBmb3JfIHN0YXJ0IH50b18gfmRvXyA9XG4gIGlmIHN0YXJ0ID4gdG9fXG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGxldCViaW5kICgpID0gZG9fIGkgaW5cbiAgICAgIGlmIGkgPj0gdG9fIHRoZW4gcmV0dXJuICgpIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIHN0YXJ0KVxuOztcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5sZXQgZm9yZXZlciBzdGF0ZSBmID1cbiAgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIChmdW4gc3RhdGUgLT5cbiAgICBsZXQlbWFwIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgIGBSZXBlYXQgc3RhdGUpXG4gID4+PiBuZXZlcl9yZXR1cm5zXG47O1xuXG50eXBlIGhvdyA9IE1vbmFkX3NlcXVlbmNlLmhvdyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlLlMgd2l0aCB0eXBlICdhIG1vbmFkIDo9ICdhIHRcblxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgYlxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgc2VxbWFwIHQgfmYgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBicyBhIC0+IGYgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgPj58IExpc3QucmV2XG5sZXQgYWxsIGRzID0gc2VxbWFwIGRzIH5mOkZuLmlkXG5sZXQgYWxsX3VuaXQgZHMgPSBmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKVxubGV0IG9rIHggPSB4ID4+fCBmdW4geCAtPiBPayB4XG5cbm1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgbGV0IGdlbmVyaWNfY2hvb3NlID0gZ2VuZXJpY19jaG9vc2VcbmVuZFxuIiwib3BlbiBEZWZlcnJlZDFcbmluY2x1ZGUgSW5maXhcbmluY2x1ZGUgTGV0X3N5bnRheFxuXG5sZXQgY2hvaWNlID0gY2hvaWNlXG5sZXQgY2hvb3NlID0gY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBkb24ndF93YWl0X2ZvclxubGV0IG5ldmVyID0gbmV2ZXJcbmxldCByZXR1cm4gPSByZXR1cm5cbmxldCB1cG9uID0gdXBvblxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdSA9XG4gIHwgRW1wdHkgb2YgJ2EgSXZhci50XG4gIHwgRnVsbFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgdSByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IEZ1bGwgLT4gKClcbiAgICB8IEVtcHR5IGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHQgPSByZWYgKEVtcHR5IGl2YXIpIGluXG4gIHQsIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBfIC0+IHRydWVcbiAgfCBGdWxsIC0+IGZhbHNlXG47O1xuXG5sZXQgZmlsbCB0IGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgRW1wdHkgaSAtPlxuICAgIHQgOj0gRnVsbDtcbiAgICBJdmFyLmZpbGwgaSBhXG4gIHwgRnVsbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gZmlsbCBmdWxsIGl2YXJcIl1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgU3RyZWFtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID0gJ2EgVHlwZXMuU3RyZWFtLm5leHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mICdhICogJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGxldCByZWMgbG9vcCBkIGFjIDogU2V4cC50ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTGlzdCAoTGlzdC5yZXYgKFNleHAuQXRvbSBcIi4uLlwiIDo6IGFjKSlcbiAgICAgIHwgU29tZSBOaWwgLT4gTGlzdCAoTGlzdC5yZXYgYWMpXG4gICAgICB8IFNvbWUgKENvbnMgKGEsIHQpKSAtPiBsb29wIHQgKHNleHBfb2ZfYSBhIDo6IGFjKVxuICAgIGluXG4gICAgbG9vcCB0IFtdXG4gIDs7XG5cbiAgbGV0IG5leHQgdCA9IHRcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5UYWlsLnQgPVxuICB7ICgqIFtuZXh0XSBwb2ludHMgYXQgdGhlIHRhaWwgb2YgdGhlIHN0cmVhbSAqKSBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgc2V4cF9vZl90IF8gdCA6IFNleHAudCA9XG4gIEF0b20gKGlmIEl2YXIuaXNfZW1wdHkgdC5uZXh0IHRoZW4gXCI8b3BlbiB0YWlsPlwiIGVsc2UgXCI8Y2xvc2VkIHRhaWw+XCIpXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0ID0gSXZhci5jcmVhdGUgKCkgfVxubGV0IGNvbGxlY3QgdCA9IEl2YXIucmVhZCAobmV4dCB0KVxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIChuZXh0IHQpXG5cbmxldCBmaWxsX2V4biB0IHYgPVxuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwic3RyZWFtIGlzIGNsb3NlZFwiXSBlbHNlIEl2YXIuZmlsbCAobmV4dCB0KSB2XG47O1xuXG5sZXQgY2xvc2VfZXhuIHQgPSBmaWxsX2V4biB0IE5pbFxubGV0IGNsb3NlX2lmX29wZW4gdCA9IGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gSXZhci5maWxsIChuZXh0IHQpIE5pbFxuXG5sZXQgZXh0ZW5kIHQgdiA9XG4gIGxldCBuZXh0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZmlsbF9leG4gdCAoQ29ucyAodiwgSXZhci5yZWFkIG5leHQpKTtcbiAgdC5uZXh0IDwtIG5leHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IFRhaWwuU3RyZWFtXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3IwXG5pbmNsdWRlIE1vbml0b3JcblxudHlwZSBtb25pdG9yID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+aGVyZTppZ25vcmVcbiAgICAgIH5pZDppZ25vcmVcbiAgICAgIH5mb3J3YXJkaW5nOmlnbm9yZVxuICAgICAgfm5leHRfZXJyb3I6KGNoZWNrIChmdW4gbmV4dF9lcnJvciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgbmV4dF9lcnJvcikpKVxuICAgICAgfmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfnRhaWxzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfmhhc19zZWVuX2Vycm9yOmlnbm9yZSlcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcbmxldCBjdXJyZW50ICgpID0gRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSlcbmxldCBkZXRhY2ggdCA9IHQuZm9yd2FyZGluZyA8LSBEZXRhY2hlZFxuXG50eXBlIGhhbmRsZXJfc3RhdGUgPVxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBSdW5uaW5nIG9mIChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLkVsdC50XG4gIHwgVGVybWluYXRlZFxuXG5sZXQgZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyB0IH5mID1cbiAgZGV0YWNoIHQ7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IGhhbmRsZXJfc3RhdGVfcmVmID0gcmVmIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHJ1bl9mIGV4biA9XG4gICAgbWF0Y2ggIWhhbmRsZXJfc3RhdGVfcmVmIHdpdGhcbiAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBUZXJtaW5hdGVkIC0+ICgpXG4gICAgfCBSdW5uaW5nIGJhZ19lbHQgLT5cbiAgICAgICh0cnkgZiBleG4gd2l0aFxuICAgICAgIHwgaW5uZXJfZXhuIC0+XG4gICAgICAgICBoYW5kbGVyX3N0YXRlX3JlZiA6PSBUZXJtaW5hdGVkO1xuICAgICAgICAgQmFnLnJlbW92ZSB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIGJhZ19lbHQ7XG4gICAgICAgICAoKiBbcnVuX2ZdIGFsd2F5cyBydW5zIGluIFtleGVjdXRpb25fY29udGV4dF0uICBIZW5jZSwgW3JhaXNlIGlubmVyX2V4bl0gc2VuZHNcbiAgICAgICAgICAgIFtpbm5lcl9leG5dIHRvIFtleGVjdXRpb25fY29udGV4dF0ncyBtb25pdG9yLCBpLmUuIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICAgICAgICBbZGV0YWNoX2FuZF9pdGVyX2Vycm9yc10gd2FzIGNhbGxlZC4gKilcbiAgICAgICAgIHJhaXNlIGlubmVyX2V4bilcbiAgaW5cbiAgaGFuZGxlcl9zdGF0ZV9yZWZcbiAgOj0gUnVubmluZyAoQmFnLmFkZCB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIChleGVjdXRpb25fY29udGV4dCwgcnVuX2YpKVxuOztcblxubGV0IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSB0ID1cbiAgZGV0YWNoIHQ7XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgdC50YWlsc19mb3JfYWxsX2Vycm9ycyA8LSB0YWlsIDo6IHQudGFpbHNfZm9yX2FsbF9lcnJvcnM7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgZ2V0X25leHRfZXJyb3IgdCA9IEl2YXIucmVhZCB0Lm5leHRfZXJyb3JcblxubGV0IGRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IgdCA9XG4gIGRldGFjaCB0O1xuICBnZXRfbmV4dF9lcnJvciB0XG47O1xuXG5sZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lICgpID1cbiAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIChTb21lIHBhcmVudClcbjs7XG5cbm1vZHVsZSBNb25pdG9yX2V4biA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXhuIDogZXhuXG4gICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIDsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIH1cblxuICBsZXQgYmFja3RyYWNlIHQgPSB0LmJhY2t0cmFjZVxuICBsZXQgZXh0cmFjdF9leG4gdCA9IHQuZXhuXG5cbiAgbGV0IGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgPVxuICAgIGxldCBqb2JfcXVldWUgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImpvYl9xdWV1ZS5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDAgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMC5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDEgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMS5tbFxcXCJcIiBpblxuICAgIGxldCBtb25pdG9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJtb25pdG9yLm1sXFxcIlwiIGluXG4gICAgbGV0IGltcG9ydDAgPSBcIlJhaXNlZCBhdCBmaWxlIFxcXCJpbXBvcnQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGVycm9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJlcnJvci5tbFxcXCJcIiBpblxuICAgIGZ1biB0cmFjZXMgLT5cbiAgICAgICgqIC4uL3Rlc3QvdGVzdF90cnlfd2l0aF9lcnJvcl9kaXNwbGF5Lm1sIG1ha2VzIHN1cmUgdGhpcyBzdGF5cyB1cC10by1kYXRlLiAqKVxuICAgICAgbGV0IHRyYWNlcyA9XG4gICAgICAgIG1hdGNoIHRyYWNlcyB3aXRoXG4gICAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDppbXBvcnQwIC0+XG4gICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZXJyb3IgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgIHwgdDMgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDMgfnByZWZpeDplcnJvciAtPiByZXN0XG4gICAgICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgfCBfIC0+IHRyYWNlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIExpc3QucmV2IHRyYWNlcyB3aXRoXG4gICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCB0MiA6OiByZXN0XG4gICAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMFxuICAgICAgICAgICAgICAgICgqIGJpbmQgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQxXG4gICAgICAgICAgICAgICAgKCogbWFwICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4Om1vbml0b3JcbiAgICAgICAgICAgICAgKCogdHJ5X3dpdGggKikgLT4gTGlzdC5yZXYgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgIHwgXyAtPiB0cmFjZXNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHsgZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yIH0gPVxuICAgIGxldCBtb25pdG9yID1cbiAgICAgIGxldCBuYW1lID1cbiAgICAgICAgbWF0Y2ggSW5mby50b19zdHJpbmdfaHVtIG1vbml0b3IubmFtZSB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICAgIHwgcyAtPiBTb21lIHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggbW9uaXRvci5oZXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGhlcmUgLT5cbiAgICAgICAgICAoKiBXZSBkaXNwbGF5IHRoZSBmdWxsIGZpbGVuYW1lLCB3aGVyZWFzIGJhY2t0cmFjZXMgb25seSBoYXZlIGJhc2VuYW1lcywgYnV0XG4gICAgICAgICAgICAgcGVyaGFwcyB0aGF0J3Mgd2hhdCBzaG91bGQgY2hhbmdlLiAqKVxuICAgICAgICAgIGxldCBjb2x1bW4gPSBoZXJlLnBvc19jbnVtIC0gaGVyZS5wb3NfYm9sIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKCogV2UgaGlkZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyB3aGVuIFthbV9ydW5uaW5nX3Rlc3RdIHRvIG1ha2UgdGVzdCBvdXRwdXRcbiAgICAgICAgICAgICAgIG1vcmUgcm9idXN0LiAgVGhpcyBzYXZlcyBwZW9wbGUgbWFudWFsbHkgaGlkaW5nIHRoZSBudW1iZXJzIG9yIGV2ZW4gd29yc2UsXG4gICAgICAgICAgICAgICBsZWF2aW5nIHRoZW0gaW4gdGVzdCBvdXRwdXQuICBIaWRpbmcgaW4gdGVzdCBpcyBkaWZmZXJlbnQgY2hvaWNlIGZvclxuICAgICAgICAgICAgICAgYmVoYXZpb3IgdGhhbiBvdXIgY29kZWJhc2UgbWFrZXMgZm9yIFtCYWNrdHJhY2UuZWxpZGVdLCB3aGljaCBoYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgW2ZhbHNlXSwgYW5kIHRodXMgc2hvd3MgYmFja3RyYWNlcyBpbiB0ZXN0LiAgVGhlcmUgYXJlIGEgY291cGxlIHJlYXNvbnMgZm9yXG4gICAgICAgICAgICAgICB0aGlzIGRpZmZlcmVudCBjaG9pY2UuICBGaXJzdCwgZXhwZWN0LXRlc3QgbWFjaGluZXJ5IGhhcyBjaGVjayB0byBwcmV2ZW50XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGZyb20gYXBwZWFyaW5nIGluIHRlc3Qgb3V0cHV0LiAgSXQgaGFzIG5vIHN1Y2ggY2hlY2tzIGZvciBsaW5lXG4gICAgICAgICAgICAgICBhbmQgY29sdW1uIG51bWJlcnMuICBTZWNvbmQsIHdoZW4gdGhlcmUgaXMgYSByZWFsIGVycm9yIGFuZCB5b3Ugd2FudCB0byBzZWVcbiAgICAgICAgICAgICAgIHRoZSBiYWNrdHJhY2UsIHRocm93aW5nIGF3YXkgdGhlIHdob2xlIGJhY2t0cmFjZSBsb3NlcyBhIGxvdCBvZiBwb3RlbnRpYWxseVxuICAgICAgICAgICAgICAgdXNlZnVsIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIGhhcmQgdG8gcmVjb3Zlci4gIFdoZXJlYXMgd2UncmUganVzdFxuICAgICAgICAgICAgICAgdGhyb3dpbmcgYSB3YXkgYSBsaW5lIG51bWJlciBhbmQgY29sdW1uLCB3aGljaCBhcmUgYSBtaW5vciBjb252ZW5pZW5jZVxuICAgICAgICAgICAgICAgZ2l2ZW4gdGhhdCB0aGUgZmlsZW5hbWUgaGFzIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uLiAqKVxuICAgICAgICAgICAgKGlmIGFtX3J1bm5pbmdfdGVzdFxuICAgICAgICAgICAgIHRoZW4gc3ByaW50ZiBcImZpbGUgJVMsIGxpbmUgTElORSwgY2hhcmFjdGVycyBDMS1DMlwiIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcImZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19sbnVtXG4gICAgICAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgICBjb2x1bW4pXG4gICAgICBpblxuICAgICAgbWF0Y2ggcG9zLCBuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHBvcywgTm9uZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciBhdCAlc1wiIHBvcyBdXG4gICAgICB8IE5vbmUsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlc1wiIG5hbWUgXVxuICAgICAgfCBTb21lIHBvcywgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzIGF0ICVzXCIgbmFtZSBwb3MgXVxuICAgIGluXG4gICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBiYWNrdHJhY2UgLT4gQmFja3RyYWNlLnRvX3N0cmluZ19saXN0IGJhY2t0cmFjZVxuICAgICAgaW5cbiAgICAgIGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgYmFja3RyYWNlIEAgbW9uaXRvclxuICAgIGluXG4gICAgbGV0IGxpc3RfaWZfbm90X2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIGxcbiAgICBpblxuICAgIFslc2V4cFxuICAgICAgKGV4biA6IGV4bilcbiAgICAsIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2UgOiAoc3RyaW5nIGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICwgYGJhY2t0cmFjZV9oaXN0b3J5XG4gICAgICAgIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2VfaGlzdG9yeSA6IChCYWNrdHJhY2UudCBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSldXG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1vbml0b3JfZXhuIG9mIE1vbml0b3JfZXhuLnRcblxubGV0ICgpID1cbiAgU2V4cGxpYi5Db252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1vbml0b3JfZXhuXSAoZnVuY3Rpb25cbiAgICB8IE1vbml0b3JfZXhuIHQgLT4gWyVzZXhwIFwibW9uaXRvci5tbC5FcnJvclwiIDo6ICh0IDogTW9uaXRvcl9leG4udCldXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBleHRyYWN0X2V4biBleG4gPVxuICBtYXRjaCBleG4gd2l0aFxuICB8IE1vbml0b3JfZXhuIGVycm9yIC0+IGVycm9yLmV4blxuICB8IGV4biAtPiBleG5cbjs7XG5cbmxldCBzZW5kX2V4biB0ID8oYmFja3RyYWNlID0gYEdldCkgZXhuID1cbiAgbGV0IGV4biA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IE1vbml0b3JfZXhuIF8gLT4gZXhuXG4gICAgfCBfIC0+XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBgR2V0IC0+IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnRfZm9yX2V4biBleG5cbiAgICAgICAgfCBgVGhpcyBiIC0+IFNvbWUgYlxuICAgICAgaW5cbiAgICAgIGxldCBiYWNrdHJhY2VfaGlzdG9yeSA9IChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKS5iYWNrdHJhY2VfaGlzdG9yeSBpblxuICAgICAgTW9uaXRvcl9leG4geyBNb25pdG9yX2V4bi5leG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgPSB0IH1cbiAgaW5cbiAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4biB0aGVuIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG5cIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICB0Lmhhc19zZWVuX2Vycm9yIDwtIHRydWU7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgSXZhci5maWxsIHQubmV4dF9lcnJvciBleG47XG4gICAgdC5uZXh0X2Vycm9yIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCAtPlxuICAgICAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4blxuICAgICAgdGhlblxuICAgICAgICBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuIGZvdW5kIGxpc3RlbmluZyBtb25pdG9yXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgICAgIEJhZy5pdGVyIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biAoZXhlY3V0aW9uX2NvbnRleHQsIGYpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGV4bik7XG4gICAgICBMaXN0Lml0ZXIgdC50YWlsc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIHRhaWwgLT4gVGFpbC5leHRlbmQgdGFpbCBleG4pXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IGxvb3AgcGFyZW50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+XG4gICAgICAoKiBEbyBub3QgY2hhbmdlIHRoaXMgYnJhbmNoIHRvIHByaW50IHRoZSBleGNlcHRpb24gb3IgdG8gZXhpdC4gIEhhdmluZyB0aGVcbiAgICAgICAgIHNjaGVkdWxlciByYWlzZSBhbiB1bmNhdWdodCBleGNlcHRpb24gaXMgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvciBmb3IgcHJvZ3JhbXNcbiAgICAgICAgIHRoYXQgY2FsbCBbU2NoZWR1bGVyLmdvXSBhbmQgd2FudCB0byBoYW5kbGUgaXQuICopXG4gICAgICBTY2hlZHVsZXIuKGdvdF91bmNhdWdodF9leG4gKHQgKCkpKSBleG4gKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCkpXG4gIGluXG4gIGxvb3AgdFxuOztcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXIgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhpbl9jb250ZXh0IGNvbnRleHQgZiA9XG4gICAgU2NoZWR1bGVyLih3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgY29udGV4dCB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggZiB3aXRoXG4gICAgICB8IE9rIHggLT4gT2sgeFxuICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgc2VuZF9leG4gKEV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgY29udGV4dCkgZXhuIH5iYWNrdHJhY2U6YEdldDtcbiAgICAgICAgRXJyb3IgKCkpXG4gIDs7XG5cbiAgbGV0IHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIGxldCB0bXBfY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkgP21vbml0b3IgP3ByaW9yaXR5XG4gICAgaW5cbiAgICB3aXRoaW5fY29udGV4dCB0bXBfY29udGV4dCBmXG4gIDs7XG5cbiAgbGV0IHdpdGhpbicgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IE9rIGQgLT4gZFxuICA7O1xuXG4gIGxldCB3aXRoaW5fdiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBOb25lXG4gICAgfCBPayB4IC0+IFNvbWUgeFxuICA7O1xuXG4gIGxldCB3aXRoaW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gKClcbiAgICB8IE9rICgpIC0+ICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayB4ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBTY2hlZHVsZXIuZW5xdWV1ZVxuICAgICAgc2NoZWR1bGVyXG4gICAgICAoRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIpXG4gICAgICAgICA/bW9uaXRvclxuICAgICAgICAgP3ByaW9yaXR5KVxuICAgICAgd29ya1xuICAgICAgeFxuICA7O1xuXG4gIGxldCBzY2hlZHVsZSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayA9IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAoKVxuXG4gIGxldCBzY2hlZHVsZScgPVxuICAgICgqIEZvciBwZXJmb3JtYW5jZSwgd2UgdXNlIFtzY2hlZHVsZV93aXRoX2RhdGFdIHdpdGggYSBjbG9zZWQgZnVuY3Rpb24sIGFuZCBpbmxpbmVcbiAgICAgICBbRGVmZXJyZWQuY3JlYXRlXS4gKilcbiAgICBsZXQgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSkgPSB1cG9uICh3b3JrICgpKSAoZnVuIGEgLT4gSXZhci5maWxsIGkgYSkgaW5cbiAgICBmdW4gP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgLT5cbiAgICAgIGxldCBpID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSk7XG4gICAgICBJdmFyLnJlYWQgaVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQnIGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIGxldCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSA9IHVwb24gKGYgYSkgKGZ1biByIC0+IEl2YXIuZmlsbCBpIHIpIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSkpXG4gIDs7XG5lbmRcblxub3BlbiBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBzdHJlYW1faXRlciBzdHJlYW0gfmYgPVxuICBsZXQgcmVjIGxvb3Agc3RyZWFtID1cbiAgICBTdHJlYW0ubmV4dCBzdHJlYW1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodiwgc3RyZWFtKSAtPlxuICAgICAgbG9vcCBzdHJlYW07XG4gICAgICBmIHZcbiAgaW5cbiAgbG9vcCBzdHJlYW1cbjs7XG5cbigqIEFuIFsnYSBPa19hbmRfZXhucy50XSByZXByZXNlbnRzIHRoZSBvdXRwdXQgb2YgYSBjb21wdXRhdGlvbiBydW5uaW5nIGluIGEgZGV0YWNoZWRcbiAgIG1vbml0b3IuICopXG5tb2R1bGUgT2tfYW5kX2V4bnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG9rIDogJ2EgRGVmZXJyZWQudFxuICAgIDsgZXhucyA6IGV4biBTdHJlYW0udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1biBmID1cbiAgICAoKiBXZSBjYWxsIFtjcmVhdGVfd2l0aF9wYXJlbnQgTm9uZV0gYmVjYXVzZSBbbW9uaXRvcl0gZG9lcyBub3QgbmVlZCBhIHBhcmVudC4gIEl0XG4gICAgICAgZG9lcyBub3QgYmVjYXVzZSB3ZSBjYWxsIFtkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcl0gYW5kIGRlYWwgd2l0aCB0aGVcbiAgICAgICBlcnJvcnMgZXhwbGljaXRseSwgdGh1cyBbc2VuZF9leG5dIHdvdWxkIG5ldmVyIHByb3BhZ2F0ZSBhbiBleG4gcGFzdCBbbW9uaXRvcl0uICopXG4gICAgbGV0IG1vbml0b3IgPSBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgTm9uZSBpblxuICAgIGxldCBleG5zID0gZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IgaW5cbiAgICBsZXQgb2sgPVxuICAgICAgbWF0Y2ggcnVuIHdpdGhcbiAgICAgIHwgYE5vdyAtPiB3aXRoaW4nIH5tb25pdG9yIGZcbiAgICAgIHwgYFNjaGVkdWxlIC0+IHNjaGVkdWxlJyB+bW9uaXRvciBmXG4gICAgaW5cbiAgICB7IG9rOyBleG5zIH1cbiAgOztcbmVuZFxuXG5sZXQgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgcmVzdWx0XG4gICAgICBleG5zXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHRcbiAgPVxuICBpZiBJdmFyX2ZpbGxlci5pc19lbXB0eSByZXN1bHRfZmlsbGVyXG4gIHRoZW4gKFxuICAgIEl2YXJfZmlsbGVyLmZpbGwgcmVzdWx0X2ZpbGxlciByZXN1bHQ7XG4gICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aF9sb2dfZXhuIDogKGV4biAtPiB1bml0KSByZWYgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJmYWlsZWQgdG8gc2V0IFtNb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXVwiIChleG4gOiBFeG4udCldKVxuICA7O1xuZW5kXG5cbmxldCBtYWtlX2hhbmRsZV9leG4gcmVzdCA9XG4gIG1hdGNoIHJlc3Qgd2l0aFxuICB8IGBMb2cgLT5cbiAgICAoKiBXZSBhcmUgY2FyZWZ1bCB0byBub3QgY2xvc2Ugb3ZlciBjdXJyZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCBuZWVkZWQuICopXG4gICAgIUV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gIHwgYFJhaXNlIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHNlbmRfZXhuIHBhcmVudCBleG4gP2JhY2t0cmFjZTpOb25lXG4gIHwgYENhbGwgZiAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiB3aXRoaW4gfm1vbml0b3I6cGFyZW50IChmdW4gKCkgLT4gZiBleG4pXG47O1xuXG5sZXQgdHJ5X3dpdGhcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJcIilcbiAgICAgID9leHRyYWN0X2V4bjooZG9fZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID8ocnVuID0gYE5vdylcbiAgICAgID8ocmVzdCA9IGBSYWlzZSlcbiAgICAgIGZcbiAgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvIH5uYW1lIH5ydW4gZiBpblxuICBsZXQgaGFuZGxlX2V4biA9IG1ha2VfaGFuZGxlX2V4biByZXN0IGluXG4gIGxldCBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucyA9IHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlX2V4biBpblxuICAoKiBXZSBydW4gW3dpdGhpbicgfm1vbml0b3I6bWFpbl0gdG8gYXZvaWQgaG9sZGluZyBvbiB0byByZWZlcmVuY2VzIHRvIHRoZSBldmFsdWF0aW9uXG4gICAgIGNvbnRleHQgaW4gd2hpY2ggW3RyeV93aXRoXSB3YXMgY2FsbGVkLiAgVGhpcyBhdm9pZHMgYSBzcGFjZSBsZWFrIHdoZW4gYSBjaGFpbiBvZlxuICAgICBbdHJ5X3dpdGhdJ3MgYXJlIHJ1biBlYWNoIG5lc3RlZCB3aXRoaW4gdGhlIHByZXZpb3VzIG9uZS4gIFdpdGhvdXQgdGhlIFt3aXRoaW4nXSwgdGhlXG4gICAgIGVycm9yIGhhbmRsaW5nIGZvciB0aGUgaW5uZXJtb3N0IFt0cnlfd2l0aF0gd291bGQga2VlcCBhbGl2ZSB0aGUgZW50aXJlIGNoYWluLiAqKVxuICB3aXRoaW4nIH5tb25pdG9yOm1haW4gKGZ1biAoKSAtPlxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgb2tcbiAgICB0aGVuIChcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zO1xuICAgICAgcmV0dXJuIChPayAoRGVmZXJyZWQudmFsdWVfZXhuIG9rKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0X2ZpbGxlciwgcmVzdWx0ID0gSXZhcl9maWxsZXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIG9rIChmdW4gcmVzIC0+XG4gICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgKE9rIHJlcylcbiAgICAgICAgICBleG5zXG4gICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHVwb24gKFN0cmVhbS5uZXh0IGV4bnMpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBDb25zIChleG4sIGV4bnMpIC0+XG4gICAgICAgICAgbGV0IGV4biA9IGlmIGRvX2V4dHJhY3RfZXhuIHRoZW4gZXh0cmFjdF9leG4gZXhuIGVsc2UgZXhuIGluXG4gICAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgICAgKEVycm9yIGV4bilcbiAgICAgICAgICAgIGV4bnNcbiAgICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICByZXN1bHQpKVxuOztcblxubGV0IHRyeV93aXRoX29yX2Vycm9yID9oZXJlID9pbmZvID8obmFtZSA9IFwidHJ5X3dpdGhfb3JfZXJyb3JcIikgP2V4dHJhY3RfZXhuID9yZXN0IGYgPVxuICB0cnlfd2l0aCBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biB+cnVuOmBOb3cgP3Jlc3QgPj58IE9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwidHJ5X3dpdGhfam9pbl9vcl9lcnJvclwiKVxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICA/cmVzdFxuICAgICAgZlxuICA9XG4gIHRyeV93aXRoX29yX2Vycm9yIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuID9yZXN0ID4+fCBPcl9lcnJvci5qb2luXG47O1xuXG5sZXQgcHJvdGVjdCA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcIk1vbml0b3IucHJvdGVjdFwiKSA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCBmIH5maW5hbGx5ID1cbiAgbGV0JWJpbmQgciA9IHRyeV93aXRoID9leHRyYWN0X2V4biA/aGVyZSA/aW5mbyA/cnVuID9yZXN0IH5uYW1lIGYgaW5cbiAgbGV0JW1hcCBmciA9XG4gICAgdHJ5X3dpdGhcbiAgICAgIH5leHRyYWN0X2V4bjpmYWxzZVxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICB+cnVuOmBTY2hlZHVsZSAoKiBjb25zaWRlciBbfnJ1bjpgTm93XSAqKVxuICAgICAgP3Jlc3RcbiAgICAgIH5uYW1lOlwiZmluYWxseVwiXG4gICAgICBmaW5hbGx5XG4gIGluXG4gIG1hdGNoIHIsIGZyIHdpdGhcbiAgfCBFcnJvciBleG4sIEVycm9yIGZpbmFsbHlfZXhuIC0+XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJBc3luYyBmaW5hbGx5XCIgKGV4biA6IGV4bikgKGZpbmFsbHlfZXhuIDogZXhuKV1cbiAgfCBFcnJvciBlLCBPayAoKSB8IE9rIF8sIEVycm9yIGUgLT4gcmFpc2UgZVxuICB8IE9rIHIsIE9rICgpIC0+IHJcbjs7XG5cbmxldCBoYW5kbGVfZXJyb3JzID9oZXJlID9pbmZvID9uYW1lIGYgaGFuZGxlciA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IGYgaW5cbiAgc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVyO1xuICBva1xuOztcblxubGV0IGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMuZXhuczsgXyB9ID1cbiAgICBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IChmdW4gKCkgLT5cbiAgICAgIGYgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIGV4bnNcbjs7XG5cbmxldCBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbWF0Y2glbWFwIFN0cmVhbS5uZXh0IChjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZikgd2l0aFxuICB8IENvbnMgKHgsIF8pIC0+IHhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb25pdG9yLmNhdGNoIGdvdCB1bmV4cGVjdGVkIGVtcHR5IHN0cmVhbVwiXVxuOztcblxubGV0IGNhdGNoX2Vycm9yID9oZXJlID9pbmZvID9uYW1lIGYgPSBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID4+fCBFcnJvci5vZl9leG5cblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgcGFyZW50IHQgPVxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IE5vbmVcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gU29tZSBwYXJlbnRcbiAgICB8IERldGFjaGVkIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZGVwdGggdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgbiA9XG4gICAgICBtYXRjaCBwYXJlbnQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gblxuICAgICAgfCBTb21lIHQgLT4gbG9vcCB0IChuICsgMSlcbiAgICBpblxuICAgIGxvb3AgdCAwXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuaW5jbHVkZSBUYWlsLlN0cmVhbVxuXG5sZXQgZmlyc3RfZXhuIHQgPVxuICBtYXRjaCVtYXAgbmV4dCB0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTdHJlYW0uZmlyc3Qgb2YgZW1wdHkgc3RyZWFtXCJdXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuOztcblxubGV0IGZvbGQnIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIHVwb24gKG5leHQgdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IENvbnMgKHYsIHQpIC0+IHVwb24gKGYgYiB2KSAobG9vcCB0KSlcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxuKCogW2ZvbGRdIGlzIGltcGxlbWVudGVkIHRvIGF2b2lkIHBlci1zdHJlYW0tZWxlbWVudCBkZWZlcnJlZCBvdmVyaGVhZCBpbiB0aGUgY2FzZSB3aGVuXG4gICBtdWx0aXBsZSBzdHJlYW0gZWxlbWVudHMgYXJlIGF2YWlsYWJsZSBzaW11bHRhbmVvdXNseS4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IHVwb24gKG5leHQgdCkgKGZ1biBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGIpXG4gICAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dCBiXG4gICAgYW5kIGxvb3BfbmV4dCBuZXh0IGIgPVxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgQ29ucyAodiwgdCkgLT4gbG9vcCB0IChmIGIgdilcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG5sZXQgaXRlcicgdCB+ZiA9IGZvbGQnIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IGYgdilcblxubGV0IGNsb3NlZCB0ID1cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gIHwgU29tZSBOaWwgLT4gcmV0dXJuICgpXG4gIHwgXyAtPiBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoaXRlcicgdCB+ZjooZnVuIGEgLT5cbiAgICAgICBmIGE7XG4gICAgICAgcmV0dXJuICgpKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgKCogY29sbGVjdCBiZWZvcmUgY2FsbGluZyBbZl0sIGluIGNhc2UgW2ZdIGltbWVkaWF0ZWx5IGV4dGVuZHMuICopXG4gIGxldCB0ID0gVGFpbC5jb2xsZWN0IHRhaWwgaW5cbiAgZiB0YWlsO1xuICB0XG47O1xuXG5sZXQgdW5mb2xkIGIgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgdXBvbiAoZiBiKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgfCBTb21lIChhLCBiKSAtPlxuICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgYTtcbiAgICAgICAgICBsb29wIGIpXG4gICAgaW5cbiAgICBsb29wIGIpXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpO1xuICAgIFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG5sZXQgdG9fbGlzdCBzID0gZm9sZCcgcyB+aW5pdDpbXSB+ZjooZnVuIGIgYSAtPiByZXR1cm4gKGEgOjogYikpID4+fCBMaXN0LnJldlxubGV0IGNvcHlfdG9fdGFpbCB0IHRhaWwgPSBpdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKFRhaWwuZXh0ZW5kIHRhaWwgYSkpXG5cbmxldCBhcHBlbmQgdDEgdDIgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoY29weV90b190YWlsIHQxIHRhaWwpIChmdW4gKCkgLT5cbiAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MiB0YWlsKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKSlcbjs7XG5cbmxldCBjb25jYXQgdCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChpdGVyJyB0IH5mOihmdW4gdCAtPiBjb3B5X3RvX3RhaWwgdCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXInIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gKClcbiAgICAgICAgIHwgdHJ1ZSAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBmaWx0ZXJfbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSB2IC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9tYXBfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyX21hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGl0ZXInIHQgfmY6KGZ1biB2IC0+IGYgdiA+PnwgVGFpbC5leHRlbmQgdGFpbCkpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXAnIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpcnN0X24gcyBuID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCBzIG4gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgZWxzZVxuICAgICAgICB1cG9uIChuZXh0IHMpIChmdW5jdGlvblxuICAgICAgICAgIHwgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIHg7XG4gICAgICAgICAgICBsb29wIHQgKG4gLSAxKSlcbiAgICBpblxuICAgIGxvb3AgcyBuKVxuOztcblxubGV0IGF2YWlsYWJsZV9ub3cgdCA9XG4gIGxldCByZWMgbG9vcCB0IGFjID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIE5pbCAtPiBMaXN0LnJldiBhYywgdFxuICAgIHwgU29tZSAoQ29ucyAoeCwgdCkpIC0+IGxvb3AgdCAoeCA6OiBhYylcbiAgaW5cbiAgbG9vcCB0IFtdXG47O1xuXG5sZXQgc3BsaXQgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpID8oZiA9IGZ1biBfIC0+IGBDb250aW51ZSkgdCA9XG4gIGxldCByZWFzb25fZm9yX3N0b3BwaW5nID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHByZWZpeCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIGxldCBmaW5pc2ggdiA9XG4gICAgVGFpbC5jbG9zZV9leG4gcHJlZml4O1xuICAgIEl2YXIuZmlsbCByZWFzb25fZm9yX3N0b3BwaW5nIHZcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGNob29zZSBbIGNob2ljZSBzdG9wIChmdW4gKCkgLT4gYFN0b3BwZWQpOyBjaG9pY2UgKG5leHQgdCkgKGZ1biBvIC0+IGBOZXh0IG8pIF1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IGBTdG9wcGVkIC0+IGZpbmlzaCAoYFN0b3BwZWQgdClcbiAgICB8IGBOZXh0IG8gLT5cbiAgICAgIChtYXRjaCBvIHdpdGhcbiAgICAgICB8IE5pbCAtPiBmaW5pc2ggYEVuZF9vZl9zdHJlYW1cbiAgICAgICB8IENvbnMgKGEsIHQpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICAgICB8IGBDb250aW51ZSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgcHJlZml4IGE7XG4gICAgICAgICAgICBsb29wIHRcbiAgICAgICAgICB8IGBGb3VuZCBiIC0+IGZpbmlzaCAoYEZvdW5kIChiLCB0KSkpKVxuICBpblxuICBsb29wIHQ7XG4gIFRhaWwuY29sbGVjdCBwcmVmaXgsIEl2YXIucmVhZCByZWFzb25fZm9yX3N0b3BwaW5nXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IF8sIGZvdW5kID0gc3BsaXQgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gYEZvdW5kIGEgZWxzZSBgQ29udGludWUpIGluXG4gIG1hdGNoJW1hcCBmb3VuZCB3aXRoXG4gIHwgYFN0b3BwZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCAoYEVuZF9vZl9zdHJlYW0gfCBgRm91bmQgXykgYXMgeCAtPiB4XG47O1xuXG5sZXQgdW5ncm91cCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gbCAtPlxuICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgICAgICByZXR1cm4gKCkpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlIHRzID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgICgqIFRoZSBpbnRlcmxlYXZlZCBzdHJlYW0gc2hvdWxkIGJlIGNsb3NlZCB3aGVuIHRoZSBvdXRlciBzdHJlYW0gYW5kIGFsbCBvZlxuICAgICAgIHRoZSBpbm5lciBzdHJlYW1zIGhhdmUgYmVlbiBjbG9zZWQuICBLZWVwIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBvcGVuXG4gICAgICAgc3RyZWFtcyBhbmQgY2xvc2UgdGhlIGludGVybGVhdmVkIHN0cmVhbSB3aGVuIHRoYXQgY291bnQgYmVjb21lc1xuICAgICAgIHplcm8uICopXG4gICAgbGV0IG51bV9vcGVuID0gcmVmIDEgaW5cbiAgICAoKiAxIGZvciB0aGUgb3V0ZXIgc3RyZWFtIHRoYXQgaXMgb3BlbiAqKVxuICAgIGxldCBjbG9zZSAoKSA9XG4gICAgICBudW1fb3BlbiA6PSAhbnVtX29wZW4gLSAxO1xuICAgICAgaWYgIW51bV9vcGVuID0gMCB0aGVuIFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICBpblxuICAgIGxldCBvdXRlcl9jbG9zZWQgPVxuICAgICAgaXRlcicgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiArIDE7XG4gICAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0IHRhaWwpIGNsb3NlO1xuICAgICAgICByZXR1cm4gKCkpXG4gICAgaW5cbiAgICB1cG9uIG91dGVyX2Nsb3NlZCBjbG9zZSlcbjs7XG5cbmxldCB0YWtlX3VudGlsIHQgZCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICB1cG9uXG4gICAgICAgIChjaG9vc2UgWyBjaG9pY2UgZCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChuZXh0IHQpIChmdW4geiAtPiBgTmV4dCB6KSBdKVxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IGBTdG9wIHwgYE5leHQgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IGBOZXh0IChDb25zICh4LCB0KSkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdClcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHknIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgICB+cmVzdDpgUmFpc2VcbiAgICAgICAgICAoZnVuICgpIC0+IGYgeClcbiAgICAgICAgPj4+IGZ1biB6IC0+XG4gICAgICAgIGxvb3AgdDtcbiAgICAgICAgKG1hdGNoIHogd2l0aFxuICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgfCBFcnJvciBlIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZSlcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHlfcmVwb3J0X2VuZCB0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbmV4dCB0XG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgKCogV2UgaW1tZWRpYXRlbHkgY2FsbCBbbG9vcF0sIHRodXMgbWFraW5nIHRoZSBpdGVyIGR1cmFibGUuICBBbnkgZXhjZXB0aW9uc1xuICAgICAgICAgICByYWlzZWQgYnkgW2ZdIHdpbGwgbm90IHByZXZlbnQgdGhlIGxvb3AgZnJvbSBjb250aW51aW5nLCBhbmQgd2lsbCBnbyB0byB0aGVcbiAgICAgICAgICAgbW9uaXRvciBvZiB3aG9tZXZlciBjYWxsZWQgW2l0ZXJfZHVyYWJseV9yZXBvcnRfZW5kXS4gKilcbiAgICAgICAgbG9vcCB0O1xuICAgICAgICBmIHhcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHkgdCB+ZiA9IGRvbid0X3dhaXRfZm9yIChpdGVyX2R1cmFibHlfcmVwb3J0X2VuZCB0IH5mKVxuXG5sZXQgb2ZfZnVuIGYgPVxuICB1bmZvbGQgKCkgfmY6KGZ1biAoKSAtPlxuICAgIGxldCVtYXAgYSA9IGYgKCkgaW5cbiAgICBTb21lIChhLCAoKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICgnYSwgJ3Blcm1pc3Npb24pIFR5cGVzLkJ2YXIudFxuXG50eXBlICdhIHJlcHIgPSAnYSBUeXBlcy5CdmFyLnJlcHIgPVxuICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICA7IG11dGFibGUgaXZhciA6ICdhIEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gcmVwciBbJXNleHBfb2Y6IF8gcmVwcl0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHJlcHIgZiBpblxuICAgIEZpZWxkc19vZl9yZXByLml0ZXJcbiAgICAgIH5oYXNfYW55X3dhaXRlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGhhc19hbnlfd2FpdGVycyAtPlxuICAgICAgICAgICBpZiBJdmFyLmhhc19oYW5kbGVycyByZXByLml2YXIgdGhlbiBhc3NlcnQgaGFzX2FueV93YWl0ZXJzKSlcbiAgICAgIH5pdmFyOlxuICAgICAgICAoY2hlY2sgKGZ1biBpdmFyIC0+XG4gICAgICAgICAgIEl2YXIuaW52YXJpYW50IGludmFyaWFudF9hIGl2YXI7XG4gICAgICAgICAgIGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpKVxuOztcblxubGV0IHNleHBfb2ZfdCBfIF8gdCA9XG4gIGxldCB7IGhhc19hbnlfd2FpdGVyczsgaXZhciA9IF8gfSA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gICgqIFdlIGRvbid0IHNob3cgW2l2YXJdIGJlY2F1c2UgaXQncyBhbHdheXMgZW1wdHkuICopXG4gIFslbWVzc2FnZSAoaGFzX2FueV93YWl0ZXJzIDogYm9vbCldXG47O1xuXG5pbmNsdWRlIFNjaGVkdWxlcjEuQnZhclxuXG5sZXQgYnJvYWRjYXN0IHQgYSA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgaWYgcmVwci5oYXNfYW55X3dhaXRlcnNcbiAgdGhlbiAoXG4gICAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gZmFsc2U7XG4gICAgSXZhci5maWxsIHJlcHIuaXZhciBhO1xuICAgIHJlcHIuaXZhciA8LSBJdmFyLmNyZWF0ZSAoKSlcbjs7XG5cbmxldCB3YWl0IHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIHJlcHIuaGFzX2FueV93YWl0ZXJzIDwtIHRydWU7XG4gIEl2YXIucmVhZCByZXByLml2YXJcbjs7XG5cbmxldCBoYXNfYW55X3dhaXRlcnMgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnNcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5jbG9ja1xuXG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHVwb24gPSBEZWZlcnJlZC51cG9uXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgKCA+Pj4gKSA9IHVwb25cblxubW9kdWxlIFQxID0gc3RydWN0XG4gIGluY2x1ZGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLlQxXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwiPHdhbGxfY2xvY2s+XCJdXG4gICAgZWxzZVxuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIChpc193YWxsX2Nsb2NrIDogYm9vbClcbiAgICAgICAgICAoKiBXZSBkb24ndCBkaXNwbGF5IHRoZSBbSm9iLnRdcyBpbiBbZXZlbnRzXSBiZWNhdXNlIHRob3NlIGFyZVxuICAgICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICAgIChldmVudHMgOiBfIFRpbWluZ193aGVlbC50KV1cbiAgOztcbmVuZFxuXG5vcGVuIFQxXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xubGV0IHJlYWRfb25seSAodCA6IFs+IHJlYWQgXSBUMS50KSA9ICh0IDo+IHQpXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyLmNyZWF0ZV90aW1lX3NvdXJjZVxubGV0IHdhbGxfY2xvY2sgPSBTY2hlZHVsZXIud2FsbF9jbG9ja1xubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5sZXQgdGltaW5nX3doZWVsX25vdyB0ID0gVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c1xubGV0IGlkIHQgPSB0LmlkXG5cbm1vZHVsZSBJZCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5JZFxuXG5sZXQgbm93IHQgPVxuICBpZiB0LmlzX3dhbGxfY2xvY2tcbiAgdGhlblxuICAgICgqIEZvciB0aGUgd2FsbC1jbG9jayB0aW1lLXNvdXJjZSwgd2UgdXNlIFtUaW1lX25zLm5vdyAoKV0gcmF0aGVyIHRoYW5cbiAgICAgICBbVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c10uICBUaGUgbGF0dGVyIGlzIG9ubHkgdXBkYXRlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaFxuICAgICAgIGN5Y2xlLiAgVGhlcmUgY2FuIGJlIHN1YnN0YW50aWFsIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHdoZW4gcGVvcGxlIGRvIGxvbmdcbiAgICAgICBydW5uaW5nIGNvbXB1dGF0aW9ucyBvciBtaXggYmxvY2tpbmcgY29kZSB3aXRoIGFzeW5jLiAgQW5kIGh1bWFucyBleHBlY3QgdGhhdFxuICAgICAgIHdhbGwtY2xvY2sgdGltZSBpcyBiYXNlZCBvbiBbVGltZS5ub3ddLCBub3Qgc29tZSBhcnRpZmFjdCBvZiBhc3luY1xuICAgICAgIGltcGxlbWVudGF0aW9uLiAqKVxuICAgIFRpbWVfbnMubm93ICgpXG4gIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG47O1xuXG4oKiBXZSBwcmVhbGxvY2F0ZSBbc2VuZF9leG5dIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgb24gZWFjaCBjYWxsIHRvIFthZHZhbmNlX2Nsb2NrXS4gKilcbmxldCBzZW5kX2V4biA9IFNvbWUgTW9uaXRvci5zZW5kX2V4blxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4blxubGV0IGFkdmFuY2VfZGlyZWN0bHlfYnkgdCBieSA9IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG5sZXQgYWR2YW5jZSA9IGFkdmFuY2VfZGlyZWN0bHlcbmxldCBhZHZhbmNlX2J5ID0gYWR2YW5jZV9kaXJlY3RseV9ieVxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5maXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuXG5sZXQgeWllbGQgdCA9IEJ2YXIud2FpdCAoU2NoZWR1bGVyLnlpZWxkIHQuc2NoZWR1bGVyKVxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IFNjaGVkdWxlci5udW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcblxubW9kdWxlIEVhZ2VyX2RlZmVycmVkID0gc3RydWN0XG4gIGxldCBiaW5kX3VuaXQgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0XG4gICAgdGhlbiBmICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQlYmluZCAoKSA9IHQgaW5cbiAgICAgIGYgKCkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIHJldHVybiAoZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpKVxuICAgIGVsc2UgRGVmZXJyZWQubWFwIHQgfmZcbiAgOztcbmVuZFxuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgb25lX3N0ZXAgKCkgPVxuICAgIGlmIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hbnlfZmlyZWRfZXZlbnRzX3RvX3J1biB0XG4gICAgdGhlbiBub3cgdCwgYGNvbnRpbnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0b18sIGBmaW5pc2hcbiAgICAgIHwgU29tZSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgLT5cbiAgICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHRvX1xuICAgICAgICB0aGVuIHRvXywgYGZpbmlzaFxuICAgICAgICBlbHNlIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCwgYGNvbnRpbnVlKVxuICBpblxuICBsZXQgcmVjIHdhbGtfYWxhcm1zICgpID1cbiAgICBsZXQgYWR2YW5jZV90bywgbmV4dCA9IG9uZV9zdGVwICgpIGluXG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b186YWR2YW5jZV90bztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgRWFnZXJfZGVmZXJyZWQuYmluZF91bml0IChydW5fcXVldWVkX2FsYXJtcyAoKSkgfmY6KGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IGBmaW5pc2ggLT4gcmV0dXJuICgpXG4gICAgICB8IGBjb250aW51ZSAtPiB3YWxrX2FsYXJtcyAoKSlcbiAgaW5cbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICgqIHNvIHRoYXQgYWxhcm1zIHNjaGVkdWxlZCBhdCBvciBiZWZvcmUgW3RvX10gZmlyZSAqKVxuICAgIHJ1bl9xdWV1ZWRfYWxhcm1zICgpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIG1hdGNoIG5leHRfYWxhcm1fZmlyZXNfYXQgdCB3aXRoXG4gICAgfCBOb25lIC0+IGZpbmlzaCAoKVxuICAgIHwgU29tZSBuZXh0X2FsYXJtX2ZpcmVzX2F0IC0+XG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBuZXh0X2FsYXJtX2ZpcmVzX2F0IHRvX1xuICAgICAgdGhlbiBmaW5pc2ggKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpO1xuICAgICAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgICAgIGxldCBxdWV1ZWRfYWxhcm1zX3JhbiA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gICAgICAgIEVhZ2VyX2RlZmVycmVkLmJpbmRfdW5pdCBxdWV1ZWRfYWxhcm1zX3JhbiB+Zjp3YWxrX2FsYXJtcylcbiAgaW5cbiAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtc19ieSA/d2FpdF9mb3IgdCBieSA9XG4gIGFkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvciB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbjs7XG5cbmxldCBzcGFuX3RvX3RpbWUgdCBzcGFuID0gVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW5cblxubGV0IHNjaGVkdWxlX2pvYiB0IH5hdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBsZXQgYWxhcm0gPVxuICAgIFRpbWluZ193aGVlbC5hZGRcbiAgICAgIHQuZXZlbnRzXG4gICAgICB+YXRcbiAgICAgIChKb2Jfb3JfZXZlbnQub2Zfam9iIChTY2hlZHVsZXIuY3JlYXRlX2pvYiB0LnNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGEpKVxuICBpblxuICAobWF0Y2ggdC5zY2hlZHVsZXIuZXZlbnRfYWRkZWRfaG9vayB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmIC0+IGYgYXQpO1xuICBhbGFybVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZiBhID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgaW5cbiAgaWYgVGltZV9ucy4oID4gKSB0aW1lIChUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzKVxuICB0aGVuIHNjaGVkdWxlX2pvYiB0IH5hdDp0aW1lIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBlbHNlIChcbiAgICBTY2hlZHVsZXIuZW5xdWV1ZSB0LnNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgQWxhcm0ubnVsbCAoKSlcbjs7XG5cbmxldCBydW5fYXQgdCB0aW1lIGYgYSA9IGlnbm9yZSAocnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgOiBfIEFsYXJtLnQpXG5sZXQgcnVuX2FmdGVyIHQgc3BhbiBmIGEgPSBydW5fYXQgdCAoc3Bhbl90b190aW1lIHQgc3BhbikgZiBhXG5cbmxldCBhdCA9XG4gIGxldCBmaWxsIHJlc3VsdCA9IEl2YXIuZmlsbCByZXN1bHQgKCkgaW5cbiAgZnVuIHQgdGltZSAtPlxuICAgIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gICAgdGhlbiByZXR1cm4gKClcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGZpbGwgcmVzdWx0IDogXyBBbGFybS50KTtcbiAgICAgIEl2YXIucmVhZCByZXN1bHQpXG47O1xuXG5sZXQgYWZ0ZXIgdCBzcGFuID0gYXQgdCAoc3Bhbl90b190aW1lIHQgc3BhbilcblxubGV0IHJlbW92ZV9hbGFybSB0IGFsYXJtIDogdW5pdCA9XG4gIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSB0LmV2ZW50cyBhbGFybSBpblxuICAobGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gICB8IEpvYiwgam9iIC0+IFNjaGVkdWxlci5mcmVlX2pvYiB0LnNjaGVkdWxlciBqb2JcbiAgIHwgRXZlbnQsIF8gLT5cbiAgICAgKCogVGhpcyBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIFthbGFybV0gb25seSBldmVyIGNvbWVzIGZyb20gW0V2ZW50LmFsYXJtXSB3aGljaCBvbmx5XG4gICAgICAgIGV2ZXIgZ2V0cyBwb3B1bGF0ZWQgYnkgYSBjYWxsIHRvIFtzY2hlZHVsZV9qb2JdLiAqKVxuICAgICBhc3NlcnQgZmFsc2UpO1xuICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGFsYXJtXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0IGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSB0LmV2ZW50cyBhbGFybSB0aGVuIHJlbW92ZV9hbGFybSB0IGFsYXJtXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpcmVkID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udFxuICAgIDsgbXV0YWJsZSBmaXJlIDogdW5pdCAtPiB1bml0XG4gICAgOyAoKiBBcyBsb25nIGFzIFtJdmFyLmlzX2VtcHR5IGZpcmVkXSwgd2UgaGF2ZSBub3QgeWV0IGNvbW1pdHRlZCB0byB3aGV0aGVyIHRoZSBldmVudFxuICAgICAgICAgd2lsbCBoYXBwZW4gb3IgYmUgYWJvcnRlZC4gIFdoZW4gW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB0aGUgYWxhcm0gbWF5IG9yIG1heSBub3RcbiAgICAgICAgIGJlIGluIHRoZSB0aW1pbmcgd2hlZWwgLS0gaWYgaXQgaXNuJ3QsIHRoZW4gdGhlcmUncyBhIGpvYiBpbiBBc3luYydzIGpvYiBxdWV1ZVxuICAgICAgICAgdGhhdCB3aWxsIGZpcmUgdGhlIGV2ZW50LCB1bmxlc3MgaXQgaXMgYWJvcnRlZCBiZWZvcmUgdGhhdCBqb2IgY2FuIHJ1bi4gKilcbiAgICAgIGZpcmVkIDogKCdhLCAnaCkgRmlyZWQudCBJdmFyLnRcbiAgICA7ICgqIFtudW1fZmlyZXNfdG9fc2tpcF0gaXMgdXNlZCB0byByZXNjaGVkdWxlIGV2ZW50cyB0aGF0IGhhdmUgZmlyZWQgYW5kIGVudGVyZWQgdGhlXG4gICAgICAgICBBc3luYyBqb2IgcXVldWUsIGJ1dCBoYXZlIG5vdCB5ZXQgcnVuLiAgVGhvc2Ugam9icyBvbmx5IHJ1biBpZiBbbnVtX2ZpcmVzX3RvX3NraXBcbiAgICAgICAgID0gMF0sIGFuZCBvdGhlcndpc2UganVzdCBkZWNyZW1lbnQgaXQuICBTbywgdG8gcmVzY2hlZHVsZSBhbiBldmVudCBpbiBzdWNoIGFcbiAgICAgICAgIHN0YXRlLCB3ZSBpbmNyZW1lbnQgW251bV9maXJlc190b19za2lwXSBhbmQgYWRkIGEgbmV3IGFsYXJtIHRvIHRoZSB0aW1pbmdcbiAgICAgICAgIHdoZWVsLiAqKVxuICAgICAgbXV0YWJsZSBudW1fZmlyZXNfdG9fc2tpcCA6IGludFxuICAgIDsgKCogW3NjaGVkdWxlZF9hdF0gaXMgdGhlIHRpbWUgYXQgd2hpY2ggW3RdIGhhcyBtb3N0IHJlY2VudGx5IGJlZW4gc2NoZWR1bGVkIHRvIGZpcmUuXG4gICAgICAgICBXaGlsZSBbdC5hbGFybV0gaXMgc3RpbGwgaW4gdGhlIHRpbWluZyB3aGVlbCwgdGhpcyBpcyB0aGUgc2FtZSBhcyBbQWxhcm0uYXRcbiAgICAgICAgIHQuYWxhcm1dLiAqKVxuICAgICAgbXV0YWJsZSBzY2hlZHVsZWRfYXQgOiBUaW1lX25zLnRcbiAgICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGZpcmVkIHQgPSBJdmFyLnJlYWQgdC5maXJlZFxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2ggdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGV2ZW50cyA9IHQudGltZV9zb3VyY2UuZXZlbnRzIGluXG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmZpcmVkXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKG5vdCAoVGltaW5nX3doZWVsLm1lbSBldmVudHMgYWxhcm0pKVxuICAgICAgICAgICAgIGVsc2UgaWYgVGltaW5nX3doZWVsLm1lbSBldmVudHMgYWxhcm1cbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoSm9iX29yX2V2ZW50LmlzX2pvYiAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSkpKVxuICAgICAgICB+ZmlyZTppZ25vcmVcbiAgICAgICAgfmZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIChmaXJlZCA6IF8gRmlyZWQudCBJdmFyLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIGZpcmVkKSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IGludmFyaWFudF9hIGFcbiAgICAgICAgICAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IGludmFyaWFudF9oIGgpKVxuICAgICAgICB+bnVtX2ZpcmVzX3RvX3NraXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2ZpcmVzX3RvX3NraXAgLT4gYXNzZXJ0IChudW1fZmlyZXNfdG9fc2tpcCA+PSAwKSkpXG4gICAgICAgIH5zY2hlZHVsZWRfYXQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2NoZWR1bGVkX2F0IC0+XG4gICAgICAgICAgICAgaWYgVGltaW5nX3doZWVsLm1lbSBldmVudHMgdC5hbGFybVxuICAgICAgICAgICAgIHRoZW4gWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XSBzY2hlZHVsZWRfYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIHQuYWxhcm0pKSlcbiAgICAgICAgfnRpbWVfc291cmNlOmlnbm9yZSlcbiAgOztcblxuICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZV9ucy50XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHN0YXR1cyB0IDogXyBTdGF0dXMudCA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuZmlyZWQpIHdpdGhcbiAgICB8IE5vbmUgLT4gU2NoZWR1bGVkX2F0IHQuc2NoZWR1bGVkX2F0XG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IEFib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gSGFwcGVuZWQgaFxuICA7O1xuXG4gIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IGEgOiBfIEFib3J0X3Jlc3VsdC50ID1cbiAgICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LmFib3J0XCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEl2YXIuZmlsbCB0LmZpcmVkIChBYm9ydGVkIGEpO1xuICAgICAgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0LnRpbWVfc291cmNlIHQuYWxhcm07XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCBhYm9ydF9leG4gdCBhID1cbiAgICBtYXRjaCBhYm9ydCB0IGEgd2l0aFxuICAgIHwgT2sgLT4gKClcbiAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBoYXBwZW5lZFwiXVxuICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIF8gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQ2xvY2suRXZlbnQuYWJvcnRfZXhuIGZhaWxlZCB0byBhYm9ydCBldmVudCB0aGF0IHByZXZpb3VzbHkgYWJvcnRlZFwiXVxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQpXG4gIGxldCBzY2hlZHVsZSB0ID0gdC5hbGFybSA8LSBydW5fYXRfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB0LnNjaGVkdWxlZF9hdCB0LmZpcmUgKClcblxuICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgYXQgOiBfIFJlc2NoZWR1bGVfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucmVzY2hlZHVsZV9hdFwiICh0LCBhdCkgWyVzZXhwX29mOiAoXywgXykgdCAqIFRpbWVfbnMudF07XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoZmlyZWQgdCkgd2l0aFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBQcmV2aW91c2x5X2Fib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gUHJldmlvdXNseV9oYXBwZW5lZCBoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBpc19pbl90aW1pbmdfd2hlZWwgPSBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtIGluXG4gICAgICBsZXQgYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSA9XG4gICAgICAgIFRpbWVfbnMuKCA+ICkgYXQgKFRpbWluZ193aGVlbC5ub3cgZXZlbnRzKVxuICAgICAgaW5cbiAgICAgIHQuc2NoZWR1bGVkX2F0IDwtIGF0O1xuICAgICAgKG1hdGNoIGFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZV9mdXR1cmUsIGlzX2luX3RpbWluZ193aGVlbCB3aXRoXG4gICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gKClcbiAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICB0LnRpbWVfc291cmNlLmhhbmRsZV9maXJlZCB0LmFsYXJtO1xuICAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSBldmVudHMgdC5hbGFybVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgIHQubnVtX2ZpcmVzX3RvX3NraXAgPC0gdC5udW1fZmlyZXNfdG9fc2tpcCArIDE7XG4gICAgICAgICBzY2hlZHVsZSB0XG4gICAgICAgfCB0cnVlLCB0cnVlIC0+IFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIGV2ZW50cyB0LmFsYXJtIH5hdCk7XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCAoc3Bhbl90b190aW1lIHQudGltZV9zb3VyY2Ugc3BhbilcblxuICBsZXQgcnVuX2F0IHRpbWVfc291cmNlIHNjaGVkdWxlZF9hdCBmIHogPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucnVuX2F0XCIgc2NoZWR1bGVkX2F0IFslc2V4cF9vZjogVGltZV9ucy50XTtcbiAgICBsZXQgdCA9XG4gICAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgICAgOyBmaXJlID0gaWdub3JlICgqIHNldCBiZWxvdyAqKVxuICAgICAgOyBmaXJlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICA7IG51bV9maXJlc190b19za2lwID0gMFxuICAgICAgOyBzY2hlZHVsZWRfYXRcbiAgICAgIDsgdGltZV9zb3VyY2UgPSByZWFkX29ubHkgdGltZV9zb3VyY2VcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBmaXJlICgpID1cbiAgICAgICgqIFtmaXJlXSBydW5zIGluIGFuIEFzeW5jIGpvYi4gIFRoZSBldmVudCBtYXkgaGF2ZSBiZWVuIGFib3J0ZWQgYWZ0ZXIgdGhlIGpvYlxuICAgICAgICAgd2FzIGVucXVldWVkLCBzbyBbZmlyZV0gbXVzdCBjaGVjayBbZmlyZWRdLiAqKVxuICAgICAgaWYgSXZhci5pc19lbXB0eSB0LmZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHQubnVtX2ZpcmVzX3RvX3NraXAgPiAwXG4gICAgICAgIHRoZW4gdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwIC0gMVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZiB6IGluXG4gICAgICAgICAgKCogW2Ygel0gbWF5IGhhdmUgYWJvcnRlZCB0aGUgZXZlbnQsIHNvIHdlIG11c3QgY2hlY2sgW2ZpcmVkXSBhZ2Fpbi4gKilcbiAgICAgICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWQgdGhlbiBJdmFyLmZpbGwgdC5maXJlZCAoSGFwcGVuZWQgcmVzdWx0KSlcbiAgICBpblxuICAgIHQuZmlyZSA8LSBmaXJlO1xuICAgIHNjaGVkdWxlIHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBhdCB0aW1lX3NvdXJjZSB0aW1lID0gcnVuX2F0IHRpbWVfc291cmNlIHRpbWUgaWdub3JlICgpXG5cbiAgbGV0IHJ1bl9hZnRlciB0aW1lX3NvdXJjZSBzcGFuIGYgYSA9XG4gICAgcnVuX2F0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbikgZiBhXG4gIDs7XG5cbiAgbGV0IGFmdGVyIHRpbWVfc291cmNlIHNwYW4gPSBhdCB0aW1lX3NvdXJjZSAoc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW4pXG5lbmRcblxubGV0IGF0X3RpbWVzID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKSB0IG5leHRfdGltZSA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBjaG9vc2VcbiAgICAgIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcCk7IGNob2ljZSAoYXQgdCAobmV4dF90aW1lICgpKSkgKGZ1biAoKSAtPiBgVGljaykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3AgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIHwgYFRpY2sgLT5cbiAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgKCk7XG4gICAgICBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgdCBjb21wdXRlX3NwYW4gPVxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT4gVGltZV9ucy5hZnRlciAobm93IHQpIChjb21wdXRlX3NwYW4gKCkpKVxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgdCBpbnRlcnZhbCA9XG4gIGxldCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gbm93IHRcbiAgaW5cbiAgYXRfdGltZXMgdCA/c3RvcCAoZnVuICgpIC0+XG4gICAgVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlOnN0YXJ0IH5hZnRlcjoobm93IHQpIH5pbnRlcnZhbCAoKSlcbjs7XG5cbm1vZHVsZSBDb250aW51ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW1tZWRpYXRlbHlcbiAgICB8IEFmdGVyIG9mIFRpbWVfbnMuU3Bhbi50XG4gICAgfCBOZXh0X211bHRpcGxlIG9mIFRpbWVfbnMudCAqIFRpbWVfbnMuU3Bhbi50XG5cbiAgbGV0IGltbWVkaWF0ZWx5ID0gSW1tZWRpYXRlbHlcblxuICBsZXQgYXQgdCB0aW1lX3NvdXJjZSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbW1lZGlhdGVseSAtPiBUaW1pbmdfd2hlZWwubm93IHRpbWVfc291cmNlLmV2ZW50c1xuICAgIHwgQWZ0ZXIgc3BhbiAtPiBzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhblxuICAgIHwgTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpIC0+XG4gICAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyOihub3cgdGltZV9zb3VyY2UpIH5pbnRlcnZhbCAoKVxuICA7O1xuZW5kXG5cbmxldCBydW5fcmVwZWF0ZWRseVxuICAgICAgPyhzdGFydCA9IHJldHVybiAoKSlcbiAgICAgID9zdG9wXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gdHJ1ZSlcbiAgICAgID8oZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKSlcbiAgICAgIHRcbiAgICAgIH5mXG4gICAgICB+Y29udGludWVcbiAgPVxuICBzdGFydFxuICA+Pj4gZnVuICgpIC0+XG4gIGxldCBhbGFybSA9IHJlZiAoQWxhcm0ubnVsbCAoKSkgaW5cbiAgbGV0IHN0b3AgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgU29tZSBzdG9wIC0+XG4gICAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPlxuICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzICFhbGFybVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfYWxhcm0gdCAhYWxhcm07XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpKSk7XG4gICAgICBzdG9wXG4gIGluXG4gICgqIFtydW5fZl0sIFtjb250aW51ZV9mXSwgYW5kIFtjb250aW51ZV90cnlfd2l0aF0gYXJlIGRlZmluZWQgc28gdGhhdCB3ZSBhbGxvY2F0ZSB0aGVpclxuICAgICBjbG9zdXJlcyBvbmNlLCBub3Qgb25jZSBwZXIgaXRlcmF0aW9uLiAqKVxuICBsZXQgcmVjIHJ1bl9mICgpID1cbiAgICAoKiBCZWZvcmUgY2FsbGluZyBbZl0sIHdlIHN5bmNocm9ub3VzbHkgY2hlY2sgd2hldGhlciBbc3RvcF0gaXMgZGV0ZXJtaW5lZC4gKilcbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKVxuICAgIGVsc2UgaWYgY29udGludWVfb25fZXJyb3JcbiAgICB0aGVuIE1vbml0b3IudHJ5X3dpdGggZiB+cnVuOmBOb3cgfnJlc3Q6YFJhaXNlID4+PiBjb250aW51ZV90cnlfd2l0aFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGQgPSBmICgpIGluXG4gICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBjb250aW51ZV9mICgpIGVsc2UgZCA+Pj4gY29udGludWVfZilcbiAgYW5kIGNvbnRpbnVlX2YgKCkgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBhbGFybSA6PSBydW5fYXRfaW50ZXJuYWwgdCAoQ29udGludWUuYXQgY29udGludWUgdCkgcnVuX2YgKClcbiAgYW5kIGNvbnRpbnVlX3RyeV93aXRoIG9yX2Vycm9yID1cbiAgICAobWF0Y2ggb3JfZXJyb3Igd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgZXJyb3IgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlcnJvcik7XG4gICAgY29udGludWVfZiAoKVxuICBpblxuICBydW5fZiAoKVxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB0IHNwYW4gZiA9XG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2UuZXZlcnkgZ290IG5vbnBvc2l0aXZlIHNwYW5cIiAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gIHJ1bl9yZXBlYXRlZGx5IHQgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgfmYgfmNvbnRpbnVlOihBZnRlciBzcGFuKVxuOztcblxubGV0IGV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBzcGFuIGYgPVxuICBldmVyeScgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZDpOb25lIHNwYW4gKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgbGV0IG5vdyA9IG5vdyB0IGluXG4gIGxldCBiYXNlLCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgTm9uZSAtPiBub3csIE5vbmVcbiAgICB8IFNvbWUgc3RhcnQgLT5cbiAgICAgICggc3RhcnRcbiAgICAgICwgU29tZVxuICAgICAgICAgIChhdFxuICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAoVGltZV9ucy5uZXh0X211bHRpcGxlXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICB+YmFzZTpzdGFydFxuICAgICAgICAgICAgICAgIH5hZnRlcjpub3dcbiAgICAgICAgICAgICAgICB+Y2FuX2VxdWFsX2FmdGVyOnRydWVcbiAgICAgICAgICAgICAgICB+aW50ZXJ2YWwpKSApXG4gIGluXG4gIHJ1bl9yZXBlYXRlZGx5XG4gICAgdFxuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgfmZcbiAgICB+Y29udGludWU6KE5leHRfbXVsdGlwbGUgKGJhc2UsIGludGVydmFsKSlcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIChmdW4gKCkgLT5cbiAgICBmICgpO1xuICAgIHJldHVybiAoKSlcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgdCBzcGFuIGQgPVxuICBsZXQgdGltZW91dCA9IEV2ZW50LmFmdGVyIHQgc3BhbiBpblxuICBjaG9vc2VcbiAgICAoKiBUaGUgY29kZSBiZWxvdyBkb2VzIGV4aGF1c3RpdmUgY2FzZSBhbmFseXNpcyBpbiBib3RoIFtjaG9pY2Vdcy4gIEJlY2F1c2UgW3RpbWVvdXRdXG4gICAgICAgZG9lcyBub3QgZXNjYXBlIHRoZSBzY29wZSBvZiB0aGlzIGZ1bmN0aW9uLCBjZXJ0YWluIGNhc2VzIHNob3VsZCBiZSBpbXBvc3NpYmxlLCBhbmRcbiAgICAgICBhcmUgbWFya2VkIGFzIHN1Y2ggd2l0aCBleGNlcHRpb25zLiAgV2UgZG8gbm90IGV4cGVjdCB0aG9zZSBleGNlcHRpb25zIHRvIG9jY3VyLFxuICAgICAgIGJ1dCBpZiB0aGV5IGRvLCBpdCBsaWtlbHkgaW5kaWNhdGVzIGEgYnVnIGluIFtjaG9vc2VdIHJhdGhlciB0aGFuXG4gICAgICAgW3dpdGhfdGltZW91dF0uICopXG4gICAgWyBjaG9pY2UgZCAoZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIEV2ZW50LmFib3J0IHRpbWVvdXQgKCkgd2l0aFxuICAgICAgICAgKCogW1ByZXZpb3VzbHlfaGFwcGVuZWRdIGNhbiBvY2N1ciBpZiBib3RoIFtkXSBhbmQgW3dhaXRdIGJlY29tZSBkZXRlcm1pbmVkIGF0XG4gICAgICAgICAgICB0aGUgc2FtZSB0aW1lLCBlLmcuIFt3aXRoX3RpbWVvdXQgKHNlYyAwLikgKHJldHVybiAoKSldLiAqKVxuICAgICAgICAgfCBPayB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gKClcbiAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+XG4gICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0IGJ1Zzogc2hvdWxkIG9ubHkgYWJvcnQgb25jZVwiXSk7XG4gICAgICAgIGBSZXN1bHQgdilcbiAgICA7IGNob2ljZSAoRXZlbnQuZmlyZWQgdGltZW91dCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gYFRpbWVvdXRcbiAgICAgICAgfCBBYm9ydGVkICgpIC0+XG4gICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBib3RoIGNvbXBsZXRlZCBhbmQgdGltZWQgb3V0XCJdKVxuICAgIF1cbjs7XG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICAoKiBFYWdlciBtYXAgdG8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIHRpbWluZ3Mgd2hlbiBbZl0gaXMgc3luY2hyb25vdXMuICopXG4gIEVhZ2VyX2RlZmVycmVkLm1hcCAoZiAoKSkgfmY6KGZ1biByZXN1bHQgLT5cbiAgICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICAgIHJlc3VsdCwgZHVyYXRpb24pXG47O1xuXG5sZXQgb2Zfc3luY2hyb25vdXMgdCA9IHRcbmxldCB0b19zeW5jaHJvbm91cyB0ID0gdFxuXG5sZXQgdGltaW5nX3doZWVsX2hhc19ldmVudF9hdF9vcl9iZWZvcmUgd2hlZWwgdGltZSA9XG4gIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB3aGVlbFxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0X2FsYXJtID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdoZWVsIGluXG4gICAgVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeS4obmV4dF9hbGFybSA8PSB0aW1lKSlcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5X2lmX3F1aWVzY2VudCB0IH50b18gPVxuICBsZXQgaXNfcXVlc2NlbnQgPVxuICAgICgqIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUganVzdCBhIGZhc3QgY2FzZSBvZiBbYWR2YW5jZV9ieV9hbGFybXNdLFxuICAgICAgIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNhbGwgdG8gW1NjaGVkdWxlci55aWVsZCAoKV0gY2FuIGJlIGVsaWRlZCxcbiAgICAgICBoZW5jZSB0aGUgW2Nhbl9ydW5fYV9qb2JdIGNoZWNrLlxuXG4gICAgICAgV2UncmUgbm90IGNoZWNraW5nIGVwb2xsLCBhbmQgd2UncmUgbm90IGNoZWNraW5nIHRoZSBbZXh0ZXJuYWxfam9ic10uICBUaGF0IGlzIGFuXG4gICAgICAgb2JzZXJ2YWJsZSBkaWZmZXJlbmNlLCBidXQgc2luY2UgW2FkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvcjpOb25lXSBpcyBhbHJlYWR5XG4gICAgICAgcHJldHR5IGJyb2tlbiB3aGVuIHdhaXRpbmcgZm9yIGV4dGVybmFsIGV2ZW50cywgaXQncyBub3QgZ29pbmcgdG8gYmUgbWVhbmluZ2Z1bC5cbiAgICAqKVxuICAgIGNhbl9ydW5fYV9qb2IgdC5zY2hlZHVsZXJcbiAgICB8fCBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuaGFzX2V2ZW50c190b19ydW4gdFxuICAgIHx8IHRpbWluZ193aGVlbF9oYXNfZXZlbnRfYXRfb3JfYmVmb3JlIHQuZXZlbnRzIHRvX1xuICBpblxuICBpZiBpc19xdWVzY2VudFxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fO1xuICAgIHRydWUpXG47O1xuIiwidHlwZSB0ID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBIYW5kbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuaW5jbHVkZSAoU2NoZWR1bGVyIDogbW9kdWxlIHR5cGUgb2YgU2NoZWR1bGVyIHdpdGggbW9kdWxlIEJ2YXIgOj0gU2NoZWR1bGVyLkJ2YXIpXG5cbmxldCB0ID0gU2NoZWR1bGVyLnRcblxuaW5jbHVkZSBNb25pdG9yLkV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IGZpbmRfbG9jYWwga2V5ID0gRXhlY3V0aW9uX2NvbnRleHQuZmluZF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGtleVxuXG5sZXQgd2l0aF9sb2NhbCBrZXkgdmFsdWUgfmYgPVxuICBsZXQgdCA9IHQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC53aXRoX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIGtleSB2YWx1ZVxuICBpblxuICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgfmZcbjs7XG5cbmxldCBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gKHQgKCkpLm1haW5fZXhlY3V0aW9uX2NvbnRleHRcbmxldCBjYW5fcnVuX2Ffam9iIHQgPSBudW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcbmxldCBoYXNfdXBjb21pbmdfZXZlbnQgdCA9IG5vdCAoVGltaW5nX3doZWVsLmlzX2VtcHR5IChldmVudHMgdCkpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgKGV2ZW50cyB0KVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnRfZXhuIHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gKGV2ZW50cyB0KVxubGV0IGV2ZW50X3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiAoZXZlbnRzIHQpXG5sZXQgY3ljbGVfc3RhcnQgdCA9IHQuY3ljbGVfc3RhcnRcblxubGV0IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mID1cbiAgKCogVXNpbmcgYW4gYXJyYXkgcmF0aGVyIHRoYW4gYSBsaXN0IGZvciBjYWNoZSBlZmZpY2llbmN5LiBUaGlzIGFuZFxuICAgICBbcnVuX2V2ZXJ5X2N5Y2xlX2VuZF0gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBwcm9ncmFtIGluaXRpYWxpemF0aW9uLCBzbyB0aGVcbiAgICAgYWxsb2NhdGlvbiBhbmQgZ2FyYmFnZSBjcmVhdGlvbiBzaG91bGQgbm90IGJlIGFuIGlzc3VlLlxuXG4gICAgIE5vdGUgdGhhdCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gTiB0aW1lcyB0YWtlcyBPKE5eMikgdGltZSwgYnV0IHRoaXMgc2hvdWxkIGJlIGZpbmVcbiAgICAgYmVjYXVzZSBOIGlzIHNtYWxsLiBTYW1lIGZvciBbcnVuX2V2ZXJ5X2N5Y2xlX2VuZF0uICopXG4gIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XG47O1xuXG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mID1cbiAgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZFxuOztcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbmxldCBhcnJheV9yZW1vdmVfZmlyc3QgYXJyIH5mID1cbiAgbWF0Y2ggQXJyYXkuZmluZGkgYXJyIH5mIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChpZHgsIF8pIC0+XG4gICAgU29tZVxuICAgICAgKEFycmF5LmluaXRcbiAgICAgICAgIChBcnJheS5sZW5ndGggYXJyIC0gMSlcbiAgICAgICAgIH5mOihmdW4gaSAtPiBpZiBpIDwgaWR4IHRoZW4gYXJyLihpKSBlbHNlIGFyci4oaSArIDEpKSlcbjs7XG5cbmxldCByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgYXJyIGYgPVxuICAoKiBSZW1vdmUgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgW2ZdIGZyb20gW2Fycl0uIE1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgbWF5IGJlIHByZXNlbnQsXG4gICAgIGJ1dCByZW1vdmFsIGlzIHJlZmVyZW5jZS1jb3VudGVkIGJ5IFtydW5fZXZlcnlfY3ljbGVfKHN0YXJ0fGVuZClfc3RhdGVdIHRhYmxlcy4gKilcbiAgbWF0Y2ggYXJyYXlfcmVtb3ZlX2ZpcnN0IH5mOihmdW4gXyBnIC0+IHBoeXNfZXF1YWwgZiBnKSBhcnIgd2l0aFxuICB8IFNvbWUgYXJyIC0+IGFyclxuICB8IE5vbmUgLT5cbiAgICAoKiBUaGlzIHNob3VsZCBiZSB1bnJlYWNoYWJsZSwgc2VlIHRoZSBbaW52YXJpYW50XSBpbiBbc2NoZWR1bGVyMS5tbF0uICopXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiU2NoZWR1bGVyLnJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBjYWxsZWQgd2l0aCBhIGhvb2sgdGhhdCBpc24ndCByZWdpc3RlcmVkXCJdXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIHQgaGFuZGxlID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgaGFuZGxlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZmFpbHdpdGggXCJBdHRlbXB0ZWQgdG8gcmVtb3ZlIGEgY3ljbGUgc3RhcnQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT5cbiAgICB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCA8LSByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgZlxuOztcblxubGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgaGFuZGxlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZmFpbHdpdGggXCJBdHRlbXB0ZWQgdG8gcmVtb3ZlIGEgY3ljbGUgZW5kIGhvb2sgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkLlwiXG4gIHwgU29tZSBmIC0+IHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCA8LSByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIGZcbjs7XG5cbmxldCBtYXBfY3ljbGVfdGltZXMgdCB+ZiA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPiBUYWlsLmV4dGVuZCB0YWlsIChmIHQubGFzdF9jeWNsZV90aW1lKSkpXG47O1xuXG5sZXQgbG9uZ19jeWNsZXMgdCB+YXRfbGVhc3QgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT5cbiAgICAgIGlmIFRpbWVfbnMuU3Bhbi4oID49ICkgdC5sYXN0X2N5Y2xlX3RpbWUgYXRfbGVhc3RcbiAgICAgIHRoZW4gVGFpbC5leHRlbmQgdGFpbCB0Lmxhc3RfY3ljbGVfdGltZSkpXG47O1xuXG5sZXQgY3ljbGVfbnVtX2pvYnMgdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV9udW1fam9icykpXG47O1xuXG5sZXQgY3ljbGVfY291bnQgdCA9IHQuY3ljbGVfY291bnRcblxubGV0IHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSB0IGludCA9XG4gIHQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgPC0gTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBpbnRcbjs7XG5cbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSB0ID1cbiAgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUucmF3IHQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbjs7XG5cbmxldCBzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBmID0gdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA8LSBmXG5cbmxldCB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5leHRlcm5hbF9qb2JzIChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKTtcbiAgdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayAoKVxuOztcblxubGV0IHNldF9ldmVudF9hZGRlZF9ob29rIHQgZiA9IHQuZXZlbnRfYWRkZWRfaG9vayA8LSBTb21lIGZcbmxldCBzZXRfam9iX3F1ZXVlZF9ob29rIHQgZiA9IHQuam9iX3F1ZXVlZF9ob29rIDwtIFNvbWUgZlxuXG5sZXQgY3JlYXRlX2FsYXJtIHQgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBHYy5FeHBlcnQuQWxhcm0uY3JlYXRlIChmdW4gKCkgLT5cbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKCkpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplciB0IGhlYXBfYmxvY2sgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBsZXQgZmluYWxpemVyIGhlYXBfYmxvY2sgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuXG5cbiAgICAgICBCeSBwdXR0aW5nIFtoZWFwX2Jsb2NrXSBpbiBbZXh0ZXJuYWxfam9ic10sIHdlIGFyZSBrZWVwaW5nIGl0IGFsaXZlIHVudGlsIHRoZSBuZXh0XG4gICAgICAgdGltZSB0aGUgYXN5bmMgc2NoZWR1bGVyIGdldHMgYXJvdW5kIHRvIGRlcXVldWVpbmcgaXQuICBDYWxsaW5nXG4gICAgICAgW3QudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdIGVuc3VyZXMgdGhhdCB3aWxsIGhhcHBlbiBpbiBzaG9ydCBvcmRlci4gIFRodXMsXG4gICAgICAgd2UgYXJlIG5vdCBkcmFtYXRpY2FsbHkgaW5jcmVhc2luZyB0aGUgbGlmZXRpbWUgb2YgW2hlYXBfYmxvY2tdLCBzaW5jZSB0aGUgT0NhbWxcbiAgICAgICBydW50aW1lIGFscmVhZHkgcmVzdXJyZWN0ZWQgW2hlYXBfYmxvY2tdIHNvIHRoYXQgd2UgY291bGQgcmVmZXIgdG8gaXQgaGVyZS4gIFRoZVxuICAgICAgIE9DYW1sIHJ1bnRpbWUgYWxyZWFkeSByZW1vdmVkIHRoZSBmaW5hbGl6ZXIgZnVuY3Rpb24gd2hlbiBpdCBub3RpY2VkIFtoZWFwX2Jsb2NrXVxuICAgICAgIGNvdWxkIGJlIGZpbmFsaXplZCwgc28gdGhlcmUgaXMgbm8gaW5maW5pdGUgbG9vcCBpbiB3aGljaCB3ZSBhcmUgY2F1c2luZyB0aGVcbiAgICAgICBmaW5hbGl6ZXIgdG8gcnVuIGFnYWluLiAgQWxzbywgT0NhbWwgZG9lcyBub3QgaW1wb3NlIGFueSByZXF1aXJlbWVudCBvbiBmaW5hbGl6ZXJcbiAgICAgICBmdW5jdGlvbnMgdGhhdCB0aGV5IG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUgYmxvY2ssIHNvIGl0J3MgZmluZSB0aGF0IHdlIGtlZXBcbiAgICAgICBbaGVhcF9ibG9ja10gYXJvdW5kIHVudGlsIGxhdGVyLiAqKVxuICAgIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXJcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgaGVhcF9ibG9ja1xuICBpblxuICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImFkZGluZyBmaW5hbGl6ZXJcIjtcbiAgKCogV2UgdXNlIFtDYW1sLkdjLmZpbmFsaXNlXSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGJlY2F1c2UgdGhlIGxhdHRlclxuICAgICBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV0gdG8gcnVuIGZpbmFsaXplcnMgc3luY2hyb25vdXNseS4gKilcbiAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2V4biB0IHggZiA9XG4gIGFkZF9maW5hbGl6ZXIgdCAoSGVhcF9ibG9jay5jcmVhdGVfZXhuIHgpIChmdW4gaGVhcF9ibG9jayAtPlxuICAgIGYgKEhlYXBfYmxvY2sudmFsdWUgaGVhcF9ibG9jaykpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgKCkgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVyc1xuICAgIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplciAodXNpbmcgJ2xhc3QnIHNlbWFudGljKVwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VfbGFzdF0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyX2xhc3RdIGJlY2F1c2VcbiAgICAgdGhlIGxhdHRlciBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSB0byBydW4gZmluYWxpemVyc1xuICAgICBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlX2xhc3QgZmluYWxpemVyIGhlYXBfYmxvY2sgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICgqIFtIZWFwX2Jsb2NrXSBlbnN1cmVzIHRoYXQgdGhpcyB3aWxsIG9ubHkgZmFpbCBmb3Igc3RhdGljIGRhdGEsIGluIHdoaWNoIGNhc2Ugd2VcbiAgICAgICBjYW4gZHJvcCB0aGUgZmluYWxpemVyIHNpbmNlIHRoZSBibG9jayB3aWxsIG5ldmVyIGJlIGNvbGxlY3RlZC4qKVxuICAgICgpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB0IHggZiA9IGFkZF9maW5hbGl6ZXJfbGFzdCB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgZlxuXG4oKiogW2ZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kXSBzZXRzIHRoZSBudW1iZXIgb2Ygbm9ybWFsIGpvYnMgYWxsb3dlZCB0byBydW4gaW4gdGhpc1xuICAgIGN5Y2xlIHRvIHplcm8uICBUaHVzLCBhZnRlciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgam9iIGNvbXBsZXRlcywgdGhlIHNjaGVkdWxlciB3aWxsXG4gICAgc3dpdGNoIHRvIGxvdyBwcmlvcml0eSBqb2JzIGFuZCB0aGVuIGVuZCB0aGUgY3VycmVudCBjeWNsZS4gKilcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCB0ID1cbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIDBcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfm5vdyA9XG4gIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2ludGVybmFsIHQudGltZV9zb3VyY2UgfnRvXzpub3cgfnNlbmRfZXhuXG47O1xuXG5sZXQgcnVuX2N5Y2xlIHQgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcInJ1bl9jeWNsZSBzdGFydGluZ1wiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIHQuY3ljbGVfY291bnQgPC0gdC5jeWNsZV9jb3VudCArIDE7XG4gIHQuY3ljbGVfc3RhcnQgPC0gbm93O1xuICB0LmluX2N5Y2xlIDwtIHRydWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQueWllbGQgKCk7XG4gIGxldCBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGUgPSBudW1fam9ic19ydW4gdCBpblxuICBBcnJheS5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IH5mOihmdW4gZiAtPiBmICgpKTtcbiAgYWR2YW5jZV9jbG9jayB0IH5ub3c7XG4gIHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6dC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTtcbiAgbGV0IHJlYyBydW5fam9icyB0ID1cbiAgICBtYXRjaCBTY2hlZHVsZXIucnVuX2pvYnMgdCB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYmFja3RyYWNlKTtcbiAgICAgICgqIFtydW5fam9ic10gc3RvcHBlZCBkdWUgdG8gYW4gZXhuLiAgVGhlcmUgbWF5IHN0aWxsIGJlIGpvYnMgdGhhdCBjb3VsZCBiZVxuICAgICAgICAgcnVuIHRoaXMgY3ljbGUsIHNvIFtydW5fam9ic10gYWdhaW4uICopXG4gICAgICBydW5fam9icyB0XG4gIGluXG4gIHJ1bl9qb2JzIHQ7XG4gIGxldCBjeWNsZV90aW1lID0gVGltZV9ucy5kaWZmIChUaW1lX25zLm5vdyAoKSkgdC5jeWNsZV9zdGFydCBpblxuICB0Lmxhc3RfY3ljbGVfdGltZSA8LSBjeWNsZV90aW1lO1xuICB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMgPC0gbnVtX2pvYnNfcnVuIHQgLSBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGU7XG4gIHQudG90YWxfY3ljbGVfdGltZSA8LSBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIGN5Y2xlX3RpbWUpO1xuICBpZiBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiBCdmFyLmJyb2FkY2FzdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICgpO1xuICBBcnJheS5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIHQuaW5fY3ljbGUgPC0gZmFsc2U7XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBEZWJ1Zy5sb2dcbiAgICAgIFwicnVuX2N5Y2xlIGZpbmlzaGVkXCJcbiAgICAgICh1bmNhdWdodF9leG4gdCwgaXNfc29tZSAobmV4dF91cGNvbWluZ19ldmVudCB0KSlcbiAgICAgIFslc2V4cF9vZjogRXJyb3IudCBvcHRpb24gKiBib29sXVxuOztcblxubGV0IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIHN0YXJ0aW5nXCI7XG4gIGxldCB0ID0gdCAoKSBpblxuICBpZiBpc19kZWFkIHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gY2Fubm90IHByb2NlZWQgLS0gc2NoZWR1bGVyIGlzIGRlYWRcIlxuICAgICAgICAgIH5zY2hlZHVsZXI6KHQgOiB0KV07XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgcnVuX2N5Y2xlIHQ7XG4gICAgYWR2YW5jZV9jbG9jayB0IH5ub3c6KFRpbWVfbnMubm93ICgpKTtcbiAgICBpZiBjYW5fcnVuX2Ffam9iIHQgdGhlbiBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gICgqIFJlc2V0IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0IHRvIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB3aGVuIHdlJ3JlIG5vdCBpblxuICAgICBhIGpvYiwgW2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0XS4gKilcbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdC5tYWluX2V4ZWN1dGlvbl9jb250ZXh0O1xuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIGZpbmlzaGVkXCI7XG4gIE9wdGlvbi5pdGVyICh1bmNhdWdodF9leG4gdCkgfmY6RXJyb3IucmFpc2Vcbjs7XG5cbmxldCBtYWtlX2FzeW5jX3VudXNhYmxlICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgdC5jaGVja19hY2Nlc3NcbiAgPC0gU29tZVxuICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICByYWlzZV9zIFslc2V4cCBcIkFzeW5jIHNjaGVkdWxlciBpcyB1bnVzYWJsZSBkdWUgdG8gW21ha2VfYXN5bmNfdW51c2FibGVdXCJdKVxuOztcblxubGV0IHJlc2V0X2luX2ZvcmtlZF9wcm9jZXNzICgpID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3NcIjtcbiAgKCogVGhlcmUgaXMgbm8gbmVlZCB0byBlbXB0eSBbbWFpbl9tb25pdG9yX2hvbGVdLiAqKVxuICBTY2hlZHVsZXIuKHRfcmVmIDo9IGNyZWF0ZSAoKSlcbjs7XG5cbmxldCBjaGVja19pbnZhcmlhbnRzIHQgPSB0LmNoZWNrX2ludmFyaWFudHNcbmxldCBzZXRfY2hlY2tfaW52YXJpYW50cyB0IGIgPSB0LmNoZWNrX2ludmFyaWFudHMgPC0gYlxubGV0IHNldF9yZWNvcmRfYmFja3RyYWNlcyB0IGIgPSB0LnJlY29yZF9iYWNrdHJhY2VzIDwtIGJcbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IHQueWllbGRcblxubGV0IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID8obWF5X3JldHVybl9pbW1lZGlhdGVseSA9IGZhbHNlKSB0ID1cbiAgaWYgbWF5X3JldHVybl9pbW1lZGlhdGVseSAmJiBudW1fcGVuZGluZ19qb2JzIHQgPSAwXG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgQnZhci53YWl0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW5cbjs7XG5cbmxldCB5aWVsZF9ldmVyeSB+biA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiU2NoZWR1bGVyLnlpZWxkX2V2ZXJ5IGdvdCBub25wb3NpdGl2ZSBjb3VudFwiIChuIDogaW50KV1cbiAgZWxzZSBpZiBuID0gMVxuICB0aGVuIHN0YWdlIChmdW4gdCAtPiB5aWVsZCB0KVxuICBlbHNlIChcbiAgICBsZXQgY291bnRfdW50aWxfeWllbGQgPSByZWYgbiBpblxuICAgIHN0YWdlIChmdW4gdCAtPlxuICAgICAgZGVjciBjb3VudF91bnRpbF95aWVsZDtcbiAgICAgIGlmICFjb3VudF91bnRpbF95aWVsZCA+IDBcbiAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgY291bnRfdW50aWxfeWllbGQgOj0gbjtcbiAgICAgICAgeWllbGQgdCkpKVxuOztcblxubGV0IHRvdGFsX2N5Y2xlX3RpbWUgdCA9XG4gICgqIEFkanVzdCBmb3IgdGhlIGZhY3QgdGhlIGNhbGxlcidzIHByb2JhYmx5IGFuIEFzeW5jIGpvYi4gKilcbiAgaWYgdC5pbl9jeWNsZVxuICB0aGVuIChcbiAgICBsZXQgdGhpc19jeWNsZV90aW1lID0gVGltZV9ucy4oZGlmZiAobm93ICgpKSB0LmN5Y2xlX3N0YXJ0KSBpblxuICAgIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgdGhpc19jeWNsZV90aW1lKSlcbiAgZWxzZSB0LnRvdGFsX2N5Y2xlX3RpbWVcbjs7XG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrID0gc3RydWN0XG4gIG1vZHVsZSBXb3JrZXJfcmVzdWx0ID0gVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0XG5cblxuICBsZXQgcmVjIHJ1biB0ID0gcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZzoxXzAwMFxuXG4gIGFuZCBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID1cbiAgICBpZiBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gMFxuICAgIHRoZW4geWllbGRfdGhlbl9ydW4gdFxuICAgIGVsc2UgaWYgbm90IChEZXF1ZS5pc19lbXB0eSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgd29ya2VyID0gRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIGluXG4gICAgICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQ7XG4gICAgICBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nKVxuXG4gIGFuZCB5aWVsZF90aGVuX3J1biB0ID1cbiAgICBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIERlZmVycmVkLnVwb24gKHlpZWxkIHQpIChmdW4gKCkgLT4gcnVuIHQpXG5cbiAgYW5kIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGFzc2VydCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgd29ya2VyLmV4ZWN1dGlvbl9jb250ZXh0KTtcbiAgICBpZiBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gMFxuICAgIHRoZW4gKFxuICAgICAgRGVxdWUuZW5xdWV1ZV9mcm9udCB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgd29ya2VyO1xuICAgICAgeWllbGRfdGhlbl9ydW4gdClcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyAtIDEgaW5cbiAgICAgIG1hdGNoIHdvcmtlci5leGVjICgpIHdpdGhcbiAgICAgIHwgRmluaXNoZWQgLT4gcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZ1xuICAgICAgfCBOb3RfZmluaXNoZWQgLT4gcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZ1xuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYnQpO1xuICAgICAgICBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nKVxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIH5mID1cbiAgICBsZXQgdCA9IHQgKCkgaW5cbiAgICBsZXQgcXVldWUgPSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICBsZXQgcnVubmluZyA9IG5vdCAoRGVxdWUuaXNfZW1wdHkgcXVldWUpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIH5wcmlvcml0eTpMb3dcbiAgICBpblxuICAgIERlcXVlLmVucXVldWVfYmFjayBxdWV1ZSB7IGV4ZWN1dGlvbl9jb250ZXh0OyBleGVjID0gZiB9O1xuICAgIGlmIG5vdCBydW5uaW5nIHRoZW4gZW5xdWV1ZSB0IGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl9iZW5jaCA9IHN0cnVjdFxuICBsZXQgYWR2YW5jZV9jbG9jayA9IGFkdmFuY2VfY2xvY2tcbmVuZFxuXG5sZXQgaW5fY3ljbGUgdCA9IHQuaW5fY3ljbGVcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIENvdW50aW5nX3NlbWFwaG9yZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgd2FpdF90b19hY3F1aXJlX2pvYl90b2tlbiA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCByZWxlYXNlX2pvYl90b2tlbiA6IHQgLT4gdW5pdFxuICB2YWwgYWJvcnQgOiB0IC0+IHVuaXRcbiAgdmFsIGNyZWF0ZSA6IG1heF9jb25jdXJyZW50X2pvYnM6aW50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBtYXhfY29uY3VycmVudF9qb2JzIDogaW50XG4gICAgOyBtdXRhYmxlIHdhaXRlciA6IHVuaXQgSXZhci50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBhYm9ydGVkIDogYm9vbFxuICAgIH1cblxuICBsZXQgd2FpdF90b19hY3F1aXJlX2pvYl90b2tlbiAoeyBtYXhfY29uY3VycmVudF9qb2JzOyB3YWl0ZXI7IGFib3J0ZWQgfSBhcyB0KSA9XG4gICAgbWF0Y2ggYWJvcnRlZCB3aXRoXG4gICAgfCB0cnVlIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgaWYgbWF4X2NvbmN1cnJlbnRfam9icyA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICB0Lm1heF9jb25jdXJyZW50X2pvYnMgPC0gbWF4X2NvbmN1cnJlbnRfam9icyAtIDE7XG4gICAgICAgIERlZmVycmVkLnJldHVybiAoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKE9wdGlvbi5pc19ub25lIHdhaXRlcik7XG4gICAgICAgIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgdC53YWl0ZXIgPC0gU29tZSBpdmFyO1xuICAgICAgICBJdmFyLnJlYWQgaXZhcilcbiAgOztcblxuICBsZXQgcmVsZWFzZV9qb2JfdG9rZW4gKHsgbWF4X2NvbmN1cnJlbnRfam9iczsgd2FpdGVyOyBhYm9ydGVkID0gXyB9IGFzIHQpID1cbiAgICBtYXRjaCB3YWl0ZXIgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoKTtcbiAgICAgIHQud2FpdGVyIDwtIE5vbmVcbiAgICB8IE5vbmUgLT4gdC5tYXhfY29uY3VycmVudF9qb2JzIDwtIG1heF9jb25jdXJyZW50X2pvYnMgKyAxXG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgPVxuICAgIHQuYWJvcnRlZCA8LSB0cnVlO1xuICAgIHQud2FpdGVyIDwtIE5vbmVcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgICB7IG1heF9jb25jdXJyZW50X2pvYnM7IHdhaXRlciA9IE5vbmU7IGFib3J0ZWQgPSBmYWxzZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGNvbXB1dGUgOlxuICAgICAgICBFeGVjdXRpb25fY29udGV4dC50IC0+IENvdW50aW5nX3NlbWFwaG9yZS50IC0+ICgnYSBEZWZlcnJlZC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgICB9XG4gIFtAQHVuYm94ZWRdXG5cbiAgbGV0IHJldHVybiB4ID0geyBjb21wdXRlID0gKGZ1biBfIF8gayAtPiBrIChyZXR1cm4geCkpIH1cblxuICBsZXQgbWFwID1cbiAgICBgQ3VzdG9tXG4gICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgIHsgY29tcHV0ZSA9XG4gICAgICAgICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgICAgICAgIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkIC0+XG4gICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgIChsZXQlbWFwIHJlc3VsdCA9IGQgaW5cbiAgICAgICAgICAgICAgICAgICAgIGYgcmVzdWx0KSkpXG4gICAgICAgICB9KVxuICA7O1xuXG4gIGxldCBhcHBseSB0X2YgdCA9XG4gICAgeyBjb21wdXRlID1cbiAgICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgICB0X2YuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkZiAtPlxuICAgICAgICAgICAgIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkdiAtPlxuICAgICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgICAobGV0JWJpbmQgZiA9IGRmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIHYgPSBkdiBpblxuICAgICAgICAgICAgICAgICAgZiB2KSkpKVxuICAgIH1cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoVClcblxubGV0IGVucXVldWUnIHNjaGVkdWxlciBjdHggZiA9XG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGN0eCAoZnVuICgpIC0+IHVwb24gKGYgKCkpIChJdmFyLmZpbGwgaXZhcikpICgpO1xuICBJdmFyLnJlYWQgaXZhclxuOztcblxubGV0IGpvYiBmID1cbiAgeyBjb21wdXRlID1cbiAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgIERlZmVycmVkLnVwb24gKENvdW50aW5nX3NlbWFwaG9yZS53YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuIHNlbWFwaG9yZSkgKGZ1biAoKSAtPlxuICAgICAgICAgICBrXG4gICAgICAgICAgICAgKGVucXVldWUnIChTY2hlZHVsZXIudCAoKSkgZXhlY19jdHggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGxldCVtYXAgYSA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgICBDb3VudGluZ19zZW1hcGhvcmUucmVsZWFzZV9qb2JfdG9rZW4gc2VtYXBob3JlO1xuICAgICAgICAgICAgICAgIGEpKSkpXG4gIH1cbjs7XG5cbmxldCBydW4gdCB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGxldCBzZW1hcGhvcmUgPSBDb3VudGluZ19zZW1hcGhvcmUuY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICgqIFRoZSBuYW1lIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGluIG9yZGVyIHRvIHByZXZlbnQgW01vbml0b3Iuc2VuZF9leG5dXG4gICAgIGZyb20gYXBwZW5kaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgbW9uaXRvciB0byB0aGUgZXhjZXB0aW9ucyB3ZSBmb3J3YXJkLlxuICAgICBUaGlzIG1hdHRlcnMgYmVjYXVzZSB3ZSB3YW50IHNpbWxpYXIgYmVoYXZpb3IgdG8gW1Rocm90dGxlXSBhbmQgbm90IGJyZWFrXG4gICAgIGV4aXN0aW5nIHRlc3RzLiAqKVxuICBsZXQgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiXCIgKCkgaW5cbiAgbGV0IHBhcmVudF9tb25pdG9yID0gTW9uaXRvci5jdXJyZW50ICgpIGluXG4gIE1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyBtb25pdG9yIH5mOihmdW4gZXJyIC0+XG4gICAgQ291bnRpbmdfc2VtYXBob3JlLmFib3J0IHNlbWFwaG9yZTtcbiAgICBNb25pdG9yLnNlbmRfZXhuIHBhcmVudF9tb25pdG9yIGVycik7XG4gIGxldCBleGVjX2N0eCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgIH5tb25pdG9yXG4gICAgICAoU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKFNjaGVkdWxlci50ICgpKSlcbiAgaW5cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gciAtPiBEZWZlcnJlZC51cG9uIHIgKEl2YXIuZmlsbCBpdmFyKSk7XG4gIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgb2ZfdGh1bmsgdGh1bmsgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgbGV0IHQgPSB0aHVuayAoKSBpblxuICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSBrKVxuICB9XG47O1xuXG5sZXQgKCAqPiApIHQxIHQyID1cbiAgeyBjb21wdXRlID1cbiAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgIHQxLmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gZDEgLT5cbiAgICAgICAgICAgdDIuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkMiAtPlxuICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgIChsZXQlYmluZCAoKSA9IGQxIGluXG4gICAgICAgICAgICAgICAgZDIpKSkpXG4gIH1cbjs7XG5cbmxldCBib3RoX3VuaXQgPSAoICo+IClcbiIsIm9wZW4hIEJhc2VcblxudHlwZSBfIHQgPVxuICB8IFN0YWNrIDogJ2EgU3RhY2sudCAtPiAnYSB0XG4gIHwgQ291bnRlciA6IHsgbXV0YWJsZSBsZW5ndGggOiBpbnQgfSAtPiB1bml0IHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBvZl9saXN0IGxpc3QgPSBTdGFjayAoU3RhY2sub2ZfbGlzdCBsaXN0KVxuXG5sZXQgY3JlYXRlX2NvdW50ZXIgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLmNyZWF0ZV9jb3VudGVyXSBnb3QgbmVnYXRpdmUgbGVuZ3RoXCIgKGxlbmd0aCA6IGludCldO1xuICBDb3VudGVyIHsgbGVuZ3RoIH1cbjs7XG5cbmxldCBsZW5ndGggKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5sZW5ndGggc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aFxuOztcblxubGV0IGNsZWFyICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suY2xlYXIgc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgcHVzaCAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucHVzaCBzIGFcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gci5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX2V4biAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnBvcF9leG4gc1xuICB8IENvdW50ZXIgciAtPlxuICAgIGlmIHIubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIucG9wX2V4bl0gb2YgZW1wdHkgc3RhY2tcIl07XG4gICAgci5sZW5ndGggPC0gci5sZW5ndGggLSAxXG47O1xuXG5sZXQgaXRlciAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogYSAtPiB1bml0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suaXRlciBzIH5mXG4gIHwgQ291bnRlciByIC0+XG4gICAgZm9yIF8gPSAxIHRvIHIubGVuZ3RoIGRvXG4gICAgICBmICgpXG4gICAgZG9uZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxudHlwZSAnYSBvdXRjb21lID1cbiAgWyBgT2sgb2YgJ2FcbiAgfCBgQWJvcnRlZFxuICB8IGBSYWlzZWQgb2YgZXhuXG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBJbnRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYiBEZWZlcnJlZC50KSAtPiAnYSB0ICogJ2Igb3V0Y29tZSBEZWZlcnJlZC50XG5cbiAgKCogRXZlcnkgaW50ZXJuYWwgam9iIHdpbGwgZXZlbnR1YWxseSBiZSBlaXRoZXIgW3J1bl0gb3IgW2Fib3J0XWVkLCBidXQgbm90IGJvdGguICopXG5cbiAgdmFsIHJ1biA6ICdhIHQgLT4gJ2EgLT4gWyBgT2sgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICB2YWwgYWJvcnQgOiBfIHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IFsgYEFib3J0IHwgYFN0YXJ0IG9mICdhIF0gSXZhci50XG4gICAgOyBvdXRjb21lIDogWyBgT2sgfCBgQWJvcnRlZCB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgd29yayA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoJWJpbmQgSXZhci5yZWFkIHN0YXJ0IHdpdGhcbiAgICAgIHwgYEFib3J0IC0+IHJldHVybiBgQWJvcnRlZFxuICAgICAgfCBgU3RhcnQgYSAtPlxuICAgICAgICAobWF0Y2glbWFwXG4gICAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgICAoZnVuICgpIC0+IHdvcmsgYSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgT2sgYSAtPiBgT2sgYVxuICAgICAgICAgfCBFcnJvciBleG4gLT4gYFJhaXNlZCBleG4pXG4gICAgaW5cbiAgICBsZXQgb3V0Y29tZSA9XG4gICAgICBtYXRjaCVtYXAgcmVzdWx0IHdpdGhcbiAgICAgIHwgYE9rIF8gLT4gYE9rXG4gICAgICB8IGBBYm9ydGVkIC0+IGBBYm9ydGVkXG4gICAgICB8IGBSYWlzZWQgXyAtPiBgUmFpc2VkXG4gICAgaW5cbiAgICBsZXQgdCA9IHsgc3RhcnQ7IG91dGNvbWUgfSBpblxuICAgIHQsIHJlc3VsdFxuICA7O1xuXG4gIGxldCBydW4gdCBhID1cbiAgICBJdmFyLmZpbGwgdC5zdGFydCAoYFN0YXJ0IGEpO1xuICAgIG1hdGNoJW1hcCB0Lm91dGNvbWUgd2l0aFxuICAgIHwgYEFib3J0ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCAoYE9rIHwgYFJhaXNlZCkgYXMgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgPSBJdmFyLmZpbGwgdC5zdGFydCBgQWJvcnRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGNvbnRpbnVlX29uX2Vycm9yIDogYm9vbFxuICA7IG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgOyAoKiBbam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXSBob2xkcyByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnkgYVxuICAgICAgIHJ1bm5pbmcgam9iLiAqKVxuICAgIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA6ICdhIFN0YWNrX29yX2NvdW50ZXIudFxuICA7XG4gICAgKCogW2pvYnNfd2FpdGluZ190b19zdGFydF0gaXMgdGhlIHF1ZXVlIG9mIGpvYnMgdGhhdCBoYXZlbid0IHlldCBzdGFydGVkLiAqKVxuICAgIGpvYnNfd2FpdGluZ190b19zdGFydCA6ICdhIEludGVybmFsX2pvYi50IFF1ZXVlLnRcbiAgOyAoKiBbMCA8PSBudW1fam9ic19ydW5uaW5nIDw9IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgbnVtX2pvYnNfcnVubmluZyA6IGludFxuICA7ICgqIFtjYXBhY2l0eV9hdmFpbGFibGVdIGlzIFtTb21lIGl2YXJdIGlmIHVzZXIgY29kZSBoYXMgY2FsbGVkIFtjYXBhY2l0eV9hdmFpbGFibGUgdF1cbiAgICAgICBhbmQgaXMgd2FpdGluZyB0byBiZSBub3RpZmllZCB3aGVuIGNhcGFjaXR5IGlzIGF2YWlsYWJsZSBpbiB0aGUgdGhyb3R0bGUuXG4gICAgICAgW21heWJlX3N0YXJ0X2pvYl0gd2lsbCBmaWxsIFtpdmFyXSB3aGVuIGNhcGFjaXR5IGJlY29tZXMgYXZhaWxhYmxlLCBpLmUuIHdoZW5cbiAgICAgICBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyBlbXB0eSBhbmQgW251bV9qb2JzX3J1bm5pbmcgPCBtYXhfY29uY3VycmVudF9qb2JzXS4gKilcbiAgICBtdXRhYmxlIGNhcGFjaXR5X2F2YWlsYWJsZSA6IHVuaXQgSXZhci50IG9wdGlvblxuICA7ICgqIFtpc19kZWFkXSBpcyB0cnVlIGlmIFt0XSB3YXMga2lsbGVkIGR1ZSB0byBhIGpvYiByYWlzaW5nIGFuIGV4Y2VwdGlvbiBvciBba2lsbCB0XVxuICAgICAgIGJlaW5nIGNhbGxlZC4gKilcbiAgICBtdXRhYmxlIGlzX2RlYWQgOiBib29sXG4gIDsgKCogW2NsZWFuc10gaG9sZHMgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY2xlYW4gZWFjaCByZXNvdXJjZSB3aGVuIFt0XSBpc1xuICAgICAgIGtpbGxlZC4gKilcbiAgICBtdXRhYmxlIGNsZWFucyA6ICgnYSAtPiB1bml0IERlZmVycmVkLnQpIGxpc3RcbiAgOyAoKiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gaXMgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgd2hvc2UgY2xlYW4gZnVuY3Rpb25zIGhhdmVcbiAgICAgICBub3QgeWV0IGNvbXBsZXRlZC4gIFdoaWxlIFt0XSBpcyBhbGl2ZSwgW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPVxuICAgICAgIG1heF9jb25jdXJyZW50X2pvYnNdLiAgT25jZSBbdF0gaXMga2lsbGVkLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gZGVjcmVhc2VzIHRvXG4gICAgICAgemVybyBvdmVyIHRpbWUgYXMgdGhlIGNsZWFuIGZ1bmN0aW9ucyBjb21wbGV0ZS4gKilcbiAgICBtdXRhYmxlIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgOiBpbnRcbiAgOyAoKiBbY2xlYW5lZF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIHJlYWNoZXMgemVybyxcbiAgICAgICBpLmUuIGFmdGVyIFt0XSBpcyBraWxsZWQgYW5kIGFsbCBpdHMgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIGNsZWFuZWQgOiB1bml0IEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29udGludWVfb25fZXJyb3I6aWdub3JlXG4gICAgICB+bWF4X2NvbmN1cnJlbnRfam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2NvbmN1cnJlbnRfam9icyAtPiBhc3NlcnQgKG1heF9jb25jdXJyZW50X2pvYnMgPiAwKSkpXG4gICAgICB+am9iX3Jlc291cmNlc19ub3RfaW5fdXNlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgLT5cbiAgICAgICAgICAgU3RhY2tfb3JfY291bnRlci5pdGVyIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjppbnZhcmlhbnRfYTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLmxlbmd0aCBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VcbiAgICAgICAgICAgICA9IGlmIHQuaXNfZGVhZCB0aGVuIDAgZWxzZSB0Lm1heF9jb25jdXJyZW50X2pvYnMgLSB0Lm51bV9qb2JzX3J1bm5pbmcpKSlcbiAgICAgIH5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb24gam9ic193YWl0aW5nX3RvX3N0YXJ0IC0+XG4gICAgICAgICAgIGlmIHQuaXNfZGVhZCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+bnVtX2pvYnNfcnVubmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX2pvYnNfcnVubmluZyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9qb2JzX3J1bm5pbmcgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA8PSB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICAgICAgICAgICBpZiBudW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydCkpKVxuICAgICAgfmNhcGFjaXR5X2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSlcbiAgICAgIH5pc19kZWFkOmlnbm9yZVxuICAgICAgfmNsZWFuczppZ25vcmVcbiAgICAgIH5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMgdGhlbiBhc3NlcnQgdC5pc19kZWFkKSlcbiAgICAgIH5jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBjbGVhbmVkIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCBjbGVhbmVkIHRoZW4gYXNzZXJ0ICh0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwKSkpXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaHJvdHRsZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiBfIHQpXVxuOztcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2tpbmQpIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuZW5kXG5cbmxldCBudW1fam9ic193YWl0aW5nX3RvX3N0YXJ0IHQgPSBRdWV1ZS5sZW5ndGggdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnRcblxubGV0IGNsZWFuX3Jlc291cmNlIHQgYSA9XG4gIERlZmVycmVkLmFsbF91bml0IChMaXN0Lm1hcCB0LmNsZWFucyB+ZjooZnVuIGYgLT4gZiBhKSlcbiAgPj4+IGZ1biAoKSAtPlxuICB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPC0gdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0gMTtcbiAgaWYgdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gMCB0aGVuIEl2YXIuZmlsbCB0LmNsZWFuZWQgKClcbjs7XG5cbmxldCBraWxsIHQgPVxuICBpZiBub3QgdC5pc19kZWFkXG4gIHRoZW4gKFxuICAgIHQuaXNfZGVhZCA8LSB0cnVlO1xuICAgIFF1ZXVlLml0ZXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgfmY6SW50ZXJuYWxfam9iLmFib3J0O1xuICAgIFF1ZXVlLmNsZWFyIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0O1xuICAgIFN0YWNrX29yX2NvdW50ZXIuaXRlciB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjooZnVuIGEgLT4gY2xlYW5fcmVzb3VyY2UgdCBhKTtcbiAgICBTdGFja19vcl9jb3VudGVyLmNsZWFyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlKVxuOztcblxubGV0IGF0X2tpbGwgdCBmID1cbiAgKCogV2UgcHJlc2VydmUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgZXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGdvIHRvIHRoZSBtb25pdG9yXG4gICAgIGluIGVmZmVjdCB3aGVuIFthdF9raWxsXSB3YXMgY2FsbGVkLiAqKVxuICBsZXQgZiA9IHVuc3RhZ2UgKE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlci5wcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZikgaW5cbiAgdC5jbGVhbnMgPC0gZiA6OiB0LmNsZWFuc1xuOztcblxubGV0IGNsZWFuZWQgdCA9IEl2YXIucmVhZCB0LmNsZWFuZWRcblxubGV0IHJlYyBzdGFydF9qb2IgdCA9XG4gIGFzc2VydCAobm90IHQuaXNfZGVhZCk7XG4gIGFzc2VydCAodC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgYXNzZXJ0IChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSk7XG4gIGxldCBqb2IgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmpvYnNfd2FpdGluZ190b19zdGFydCBpblxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nICsgMTtcbiAgbGV0IGpvYl9yZXNvdXJjZSA9IFN0YWNrX29yX2NvdW50ZXIucG9wX2V4biB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBpblxuICBJbnRlcm5hbF9qb2IucnVuIGpvYiBqb2JfcmVzb3VyY2VcbiAgPj4+IGZ1biByZXMgLT5cbiAgdC5udW1fam9ic19ydW5uaW5nIDwtIHQubnVtX2pvYnNfcnVubmluZyAtIDE7XG4gIChtYXRjaCByZXMgd2l0aFxuICAgfCBgT2sgLT4gKClcbiAgIHwgYFJhaXNlZCAtPiBpZiBub3QgdC5jb250aW51ZV9vbl9lcnJvciB0aGVuIGtpbGwgdCk7XG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIGNsZWFuX3Jlc291cmNlIHQgam9iX3Jlc291cmNlXG4gIGVsc2UgKFxuICAgIFN0YWNrX29yX2NvdW50ZXIucHVzaCB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBqb2JfcmVzb3VyY2U7XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydClcbiAgICB0aGVuIHN0YXJ0X2pvYiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LmNhcGFjaXR5X2F2YWlsYWJsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBpdmFyIC0+XG4gICAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgICB0LmNhcGFjaXR5X2F2YWlsYWJsZSA8LSBOb25lKSlcbjs7XG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9IFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXMgaW5cbiAgeyBjb250aW51ZV9vbl9lcnJvclxuICA7IG1heF9jb25jdXJyZW50X2pvYnNcbiAgOyBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgPSBqb2JfcmVzb3VyY2VzXG4gIDsgam9ic193YWl0aW5nX3RvX3N0YXJ0ID0gUXVldWUuY3JlYXRlICgpXG4gIDsgbnVtX2pvYnNfcnVubmluZyA9IDBcbiAgOyBjYXBhY2l0eV9hdmFpbGFibGUgPSBOb25lXG4gIDsgaXNfZGVhZCA9IGZhbHNlXG4gIDsgY2xlYW5zID0gW11cbiAgOyBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGNsZWFuZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIChTdGFja19vcl9jb3VudGVyLm9mX2xpc3Qgam9iX3Jlc291cmNlcylcbjs7XG5cbm1vZHVsZSBTZXF1ZW5jZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSkgYSA9IGNyZWF0ZV93aXRoIH5jb250aW51ZV9vbl9lcnJvciBbIGEgXVxuZW5kXG5cbmxldCBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgaWYgbWF4X2NvbmN1cnJlbnRfam9icyA8PSAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaHJvdHRsZS5jcmVhdGUgcmVxdWlyZXMgcG9zaXRpdmUgbWF4X2NvbmN1cnJlbnRfam9icywgYnV0IGdvdFwiXG4gICAgICAgICAgKG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnQpXTtcbiAgY3JlYXRlX2ludGVybmFsXG4gICAgfmNvbnRpbnVlX29uX2Vycm9yXG4gICAgKFN0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXIgfmxlbmd0aDptYXhfY29uY3VycmVudF9qb2JzKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgaW50ZXJuYWxfam9iIDogJ2EgSW50ZXJuYWxfam9iLnRcbiAgICA7IHJlc3VsdCA6IFsgYE9rIG9mICdiIHwgYEFib3J0ZWQgfCBgUmFpc2VkIG9mIGV4biBdIERlZmVycmVkLnRcbiAgICB9XG5cbiAgbGV0IHJlc3VsdCB0ID0gdC5yZXN1bHRcbiAgbGV0IGFib3J0IHQgPSBJbnRlcm5hbF9qb2IuYWJvcnQgdC5pbnRlcm5hbF9qb2JcblxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBpbnRlcm5hbF9qb2IsIHJlc3VsdCA9IEludGVybmFsX2pvYi5jcmVhdGUgZiBpblxuICAgIHsgaW50ZXJuYWxfam9iOyByZXN1bHQgfVxuICA7O1xuZW5kXG5cbmxldCBlbnF1ZXVlJyB0IGYgPVxuICBsZXQgam9iID0gSm9iLmNyZWF0ZSBmIGluXG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIEpvYi5hYm9ydCBqb2JcbiAgZWxzZSAoXG4gICAgUXVldWUuZW5xdWV1ZSB0LmpvYnNfd2FpdGluZ190b19zdGFydCBqb2IuaW50ZXJuYWxfam9iO1xuICAgIGlmIHQubnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIHN0YXJ0X2pvYiB0KTtcbiAgSm9iLnJlc3VsdCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0ID1cbiAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgfCBgT2sgYSAtPiBhXG4gIHwgYEFib3J0ZWQgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aHJvdHRsZSBhYm9ydGVkIGpvYlwiXVxuICB8IGBSYWlzZWQgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IGVucXVldWUgdCBmID0gZW5xdWV1ZScgdCBmID4+fCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHRcblxubGV0IGVucXVldWVfZXhjbHVzaXZlIHQgZiA9XG4gIGxldCBuID0gdC5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gIGlmIEludC4oID49ICkgbiAxXzAwMF8wMDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIltlbnF1ZXVlX2V4Y2x1c2l2ZV0gd2FzIGNhbGxlZCB3aXRoIGEgdmVyeSBsYXJnZSB2YWx1ZSBvZiBcXFxuICAgICAgICAgW21heF9jb25jdXJyZW50X2pvYnNdLiBUaGlzIGRvZXNuJ3Qgd29yay5cIl07XG4gIGxldCBkb25lXyA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGFzc2VydCAobiA+IDApO1xuICBsZXQgZl9wbGFjZWhvbGRlciBfc2xvdCA9IEl2YXIucmVhZCBkb25lXyBpblxuICBmb3IgXyA9IDEgdG8gbiAtIDEgZG9cbiAgICBkb24ndF93YWl0X2ZvciAoZW5xdWV1ZSB0IGZfcGxhY2Vob2xkZXIpXG4gIGRvbmU7XG4gIGxldCVtYXAgcmVzdWx0ID0gZW5xdWV1ZScgdCAoZnVuIF9zbG90IC0+IGYgKCkpIGluXG4gIEl2YXIuZmlsbCBkb25lXyAoKTtcbiAgaGFuZGxlX2VucXVldWVfcmVzdWx0IHJlc3VsdFxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdyB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYSAtPiBlbnF1ZXVlIHQgKGZ1biAoKSAtPiBmIGEpKVxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZiA9XG4gIHN0YWdlXG4gICAgKG1hdGNoIGhvdyB3aXRoXG4gICAgIHwgYFBhcmFsbGVsIC0+IGZcbiAgICAgfCAoYFNlcXVlbnRpYWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9XG4gICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgfCBgU2VxdWVudGlhbCAtPiAxXG4gICAgICAgICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT4gbWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgIGluXG4gICAgICAgbGV0IHQgPSBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICAgICAgZnVuIGExIGEyIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYTEgYTIpKVxuOztcblxubGV0IHByaW9yX2pvYnNfZG9uZSB0ID1cbiAgKCogV2UgcXVldWUgW3QubWF4X2NvbmN1cnJlbnRfam9ic10gZHVtbXkgam9icyBhbmQgd2hlbiB0aGV5IGFyZSBhbGwgc3RhcnRlZCB3ZSBrbm93XG4gICAgIHRoYXQgYWxsIHByaW9yIGpvYnMgZmluaXNoZWQuICBXZSBtYWtlIHN1cmUgdGhhdCBhbGwgZHVtbXkgam9icyB3YWl0IGZvciB0aGUgbGFzdCBvbmVcbiAgICAgdG8gZ2V0IHN0YXJ0ZWQgYmVmb3JlIGZpbmlzaGluZy4gKilcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gYWxsX2R1bW15X2pvYnNfcnVubmluZyAtPlxuICAgIGxldCBkdW1teV9qb2JzX3J1bm5pbmcgPSByZWYgMCBpblxuICAgIGZvciBfID0gMSB0byB0Lm1heF9jb25jdXJyZW50X2pvYnMgZG9cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChlbnF1ZXVlIHQgKGZ1biBfIC0+XG4gICAgICAgICAgIGluY3IgZHVtbXlfam9ic19ydW5uaW5nO1xuICAgICAgICAgICBpZiAhZHVtbXlfam9ic19ydW5uaW5nID0gdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gSXZhci5maWxsIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcgKCk7XG4gICAgICAgICAgIEl2YXIucmVhZCBhbGxfZHVtbXlfam9ic19ydW5uaW5nKSlcbiAgICBkb25lKVxuOztcblxubGV0IGNhcGFjaXR5X2F2YWlsYWJsZSB0ID1cbiAgaWYgbnVtX2pvYnNfcnVubmluZyB0IDwgbWF4X2NvbmN1cnJlbnRfam9icyB0XG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICB8IFNvbWUgaXZhciAtPiBJdmFyLnJlYWQgaXZhclxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIFNvbWUgaXZhcikpXG47O1xuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcblxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlcjEuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlcjEud2FsbF9jbG9ja1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlclxuXG5sZXQgZW5xdWV1ZV9qb2IgZXhlY3V0aW9uX2NvbnRleHQgZiBhID0gZW5xdWV1ZSAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG5cbmxldCB0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG47O1xuXG5sZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpXG5sZXQgY3ljbGVfY291bnQgKCkgPSBjeWNsZV9jb3VudCAodCAoKSlcbmxldCBjeWNsZV9zdGFydF9ucyAoKSA9IGN5Y2xlX3N0YXJ0ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0ICgpID0gVGltZV9ucy50b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgKGN5Y2xlX3N0YXJ0X25zICgpKVxubGV0IGN5Y2xlX3RpbWVzX25zICgpID0gbWFwX2N5Y2xlX3RpbWVzICh0ICgpKSB+ZjpGbi5pZFxubGV0IGN5Y2xlX3RpbWVzICgpID0gbWFwX2N5Y2xlX3RpbWVzICh0ICgpKSB+ZjpUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0XG5sZXQgdG90YWxfY3ljbGVfdGltZSAoKSA9IHRvdGFsX2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbGFzdF9jeWNsZV90aW1lICgpID0gbGFzdF9jeWNsZV90aW1lICh0ICgpKVxubGV0IGxvbmdfY3ljbGVzIH5hdF9sZWFzdCA9IGxvbmdfY3ljbGVzICh0ICgpKSB+YXRfbGVhc3RcbmxldCBldmVudF9wcmVjaXNpb25fbnMgKCkgPSBldmVudF9wcmVjaXNpb24gKHQgKCkpXG5sZXQgZXZlbnRfcHJlY2lzaW9uICgpID0gVGltZV9ucy5TcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoZXZlbnRfcHJlY2lzaW9uX25zICgpKVxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIGkgPVxuICBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpIGlcbjs7XG5cbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAoKSA9IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICh0ICgpKVxubGV0IHNldF9yZWNvcmRfYmFja3RyYWNlcyBib29sID0gc2V0X3JlY29yZF9iYWNrdHJhY2VzICh0ICgpKSBib29sXG5sZXQgZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgKCkgPSBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAodCAoKSlcbmxldCB5aWVsZCAoKSA9IHlpZWxkICh0ICgpKVxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gP21heV9yZXR1cm5faW1tZWRpYXRlbHkgKCkgPVxuICB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAodCAoKSlcbjs7XG5cbmxldCB5aWVsZF9ldmVyeSB+biA9XG4gIGxldCB5aWVsZF9ldmVyeSA9IFN0YWdlZC51bnN0YWdlICh5aWVsZF9ldmVyeSB+bikgaW5cbiAgbGV0IHQgPSB0ICgpIGluXG4gIHN0YWdlIChmdW4gKCkgLT4geWllbGRfZXZlcnkgdClcbjs7XG5cbmxldCBudW1fam9ic19ydW4gKCkgPSBudW1fam9ic19ydW4gKHQgKCkpXG5sZXQgbnVtX3BlbmRpbmdfam9icyAoKSA9IG51bV9wZW5kaW5nX2pvYnMgKHQgKCkpXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gPSBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluXG4gIGxldCBsYXN0X2N5Y2xlX251bV9qb2JzICgpID0gbGFzdF9jeWNsZV9udW1fam9icyAodCAoKSlcbiAgbGV0IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmID0gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0ICh0ICgpKSB+ZlxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCBmID0gcnVuX2V2ZXJ5X2N5Y2xlX2VuZCAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIH5mID0gYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgKHQgKCkpIH5mXG4gIGxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgKHQgKCkpIH5mXG5cbiAgbGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biAodCAoKSkgaGFuZGxlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gaGFuZGxlID1cbiAgICByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCBleGVjdXRpb25fY29udGV4dCBmID1cbiAgICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZlxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSBleGVjdXRpb25fY29udGV4dCB+ZiB4ID1cbiAgICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgfmYgeFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gU2NoZWR1bGVyXG4iLCIoKiogU2NoZWR1bGUgam9icyB0byBydW4gYXQgYSB0aW1lIGluIHRoZSBmdXR1cmUuXG5cbiAgICBUaGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgaGVhcCBvZiBldmVudHMsIG9uZSBmb3IgZWFjaCBqb2IgdGhhdCBuZWVkcyB0b1xuICAgIHJ1biBpbiB0aGUgZnV0dXJlLiAgVGhlIEFzeW5jIHNjaGVkdWxlciBpcyByZXNwb25zaWJsZSBmb3Igd2FraW5nIHVwIGF0IHRoZSByaWdodCB0aW1lXG4gICAgdG8gcnVuIHRoZSBqb2JzLiAqKVxuXG5vcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgT3JfdGltZW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYFJlc3VsdCBvZiAnYVxuICAgIHwgYFRpbWVvdXRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBzaWdcbiAgbW9kdWxlIE9yX3RpbWVvdXQgPSBPcl90aW1lb3V0XG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICBtb2R1bGUgU3BhbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgZW5kXG5cbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgKCoqIFtydW5fYXQgdGltZSBmIGFdIHJ1bnMgW2YgYV0gYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciBbdGltZV0uICBJZiBbdGltZV0gaXMgaW4gdGhlXG4gICAgICBwYXN0LCB0aGVuIFtydW5fYXRdIHdpbGwgaW1tZWRpYXRlbHkgc2NoZWR1bGUgYSBqb2IgW3RdIHRoYXQgd2lsbCBydW4gW2YgYV0uICBJbiBub1xuICAgICAgc2l0dWF0aW9uIHdpbGwgW3J1bl9hdF0gYWN0dWFsbHkgY2FsbCBbZl0gaXRzZWxmLiAgVGhlIGNhbGwgdG8gW2ZdIHdpbGwgYWx3YXlzIGJlIGluXG4gICAgICBhbm90aGVyIGpvYi4gKilcbiAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2FmdGVyXSBpcyBsaWtlIFtydW5fYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuXG4gICAgICBhYnNvbHV0ZSB0aW1lLiAqKVxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiogW2F0IHRpbWVdIHJldHVybnMgYSBkZWZlcnJlZCBbZF0gdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIGFzIHNvb24gYXMgcG9zc2libGVcbiAgICAgIGFmdGVyIFt0aW1lXS4gKilcbiAgdmFsIGF0IDogVGltZS50IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbYWZ0ZXJdIGlzIGxpa2UgW2F0XSwgZXhjZXB0IHRoYXQgb25lIHNwZWNpZmllcyBhIHRpbWUgc3BhbiByYXRoZXIgdGhhbiBhbiBhYnNvbHV0ZVxuICAgICAgdGltZS4gKilcbiAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFt3aXRoX3RpbWVvdXQgc3BhbiBkXSByZXR1cm5zIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIGFmdGVyIGVpdGhlclxuICAgICAgW3NwYW5dIGVsYXBzZXMgb3IgW2RdIGlzIGRldGVybWluZWQsIHJldHVybmluZyBlaXRoZXIgW2BUaW1lb3V0XSBvciBbYFJlc3VsdF1cbiAgICAgIGRlcGVuZGluZyBvbiB3aGljaCBvbmUgc3VjY2VlZGVkIGZpcnN0LiAgQXQgdGhlIHRpbWUgdGhlIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQsIGJvdGggdGhpbmdzIG1heSBoYXZlIGhhcHBlbmVkLCBpbiB3aGljaCBjYXNlIFtgUmVzdWx0XSBpcyBnaXZlblxuICAgICAgcHJlZmVyZW5jZS4gKilcbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcblxuICAoKiogRXZlbnRzIHByb3ZpZGUgdmFyaWFudHMgb2YgW3J1bl9hdF0gYW5kIFtydW5fYWZ0ZXJdIHdpdGggdGhlIGFiaWxpdHkgdG8gYWJvcnQgb3JcbiAgICAgIHJlc2NoZWR1bGUgYW4gZXZlbnQgdGhhdCBoYXNuJ3QgeWV0IGhhcHBlbmVkLiAgT25jZSBhbiBldmVudCBoYXBwZW5zIG9yIGlzIGFib3J0ZWQsXG4gICAgICBBc3luYyBkb2Vzbid0IHVzZSBhbnkgc3BhY2UgZm9yIHRyYWNraW5nIGl0LiAqKVxuICBtb2R1bGUgRXZlbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2gpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgc2NoZWR1bGVkX2F0IDogKF8sIF8pIHQgLT4gVGltZS50XG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICAoKiogSWYgW3N0YXR1c10gcmV0dXJucyBbU2NoZWR1bGVkX2F0IHRpbWVdLCBpdCBpcyBwb3NzaWJsZSB0aGF0IFt0aW1lIDwgVGltZS5ub3cgKCldXG4gICAgICAgIGlmIEFzeW5jJ3Mgc2NoZWR1bGVyIGhhc24ndCB5ZXQgZ290dGVuIHRoZSBjaGFuY2UgdG8gdXBkYXRlIGl0cyBjbG9jaywgZS5nLiwgZHVlXG4gICAgICAgIHRvIHVzZXIgam9icyBydW5uaW5nLiAqKVxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG5cbiAgICAoKiogTGV0IFt0ID0gcnVuX2F0IHRpbWUgZiB6XS4gIEF0IFt0aW1lXSwgdGhpcyBydW5zIFtmIHpdIGFuZCB0cmFuc2l0aW9ucyBbc3RhdHVzIHRdXG4gICAgICAgIHRvIFtIYXBwZW5lZCBoXSwgd2hlcmUgW2hdIGlzIHJlc3VsdCBvZiBbZiB6XS5cblxuICAgICAgICBNb3JlIHByZWNpc2VseSwgYXQgW3RpbWVdLCBwcm92aWRlZCBbYWJvcnQgdCBhXSBoYXMgbm90IHByZXZpb3VzbHkgYmVlbiBjYWxsZWQsXG4gICAgICAgIHRoaXMgd2lsbCBjYWxsIFtmIHpdLCB3aXRoIHRoZSBndWFyYW50ZWUgdGhhdCBbc3RhdHVzIHQgPSBTY2hlZHVsZWRfYXQgdGltZV0uICBJZlxuICAgICAgICBbZiB6XSByZXR1cm5zIFtoXSBhbmQgZGlkIG5vdCBjYWxsIFthYm9ydCB0IGFdLCB0aGVuIFtzdGF0dXMgdF0gYmVjb21lcyBbSGFwcGVuZWRcbiAgICAgICAgaF0uICBJZiBbZiB6XSBjYWxscyBbYWJvcnQgdCBhXSwgdGhlbiB0aGUgcmVzdWx0IG9mIFtmXSBpcyBpZ25vcmVkLCBhbmQgW3N0YXR1cyB0XVxuICAgICAgICBpcyBbQWJvcnRlZCBhXS5cblxuICAgICAgICBJZiBbZiB6XSByYWlzZXMsIHRoZW4gW3N0YXR1cyB0XSBkb2VzIG5vdCB0cmFuc2l0aW9uIGFuZCByZW1haW5zIFtTY2hlZHVsZWRfYXRcbiAgICAgICAgdGltZV0sIGFuZCB0aGUgZXhjZXB0aW9uIGlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW3J1bl9hdF0gd2FzXG4gICAgICAgIGNhbGxlZC4gKilcbiAgICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgICgqKiBbYWJvcnQgdF0gY2hhbmdlcyBbc3RhdHVzIHRdIHRvIFtBYm9ydGVkXSBhbmQgcmV0dXJucyBbT2tdLCB1bmxlc3MgW3RdXG4gICAgICAgIHByZXZpb3VzbHkgaGFwcGVuZWQgb3Igd2FzIHByZXZpb3VzbHkgYWJvcnRlZC4gKilcbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG5cbiAgICAoKiogW2Fib3J0X2V4biB0IGFdIHJldHVybnMgW3VuaXRdIGlmIFthYm9ydCB0IGEgPSBgT2tdLCBhbmQgb3RoZXJ3aXNlIHJhaXNlcy4gKilcbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG5cbiAgICAoKiogW2Fib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhKV0uICopXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgIG1vZHVsZSBGaXJlZCA9IFRpbWVfc291cmNlLkV2ZW50LkZpcmVkXG5cbiAgICB2YWwgZmlyZWQgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIEZpcmVkLnQgRGVmZXJyZWQudFxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgICgqKiBbcmVzY2hlZHVsZV9hdCB0XSBhbmQgW3Jlc2NoZWR1bGVfYWZ0ZXIgdF0gY2hhbmdlIHRoZSB0aW1lIHRoYXQgW3RdIHdpbGwgZmlyZSwgaWZcbiAgICAgICAgcG9zc2libGUsIGFuZCBpZiBub3QsIGdpdmUgYSByZWFzb24gd2h5LiAgTGlrZSBbcnVuX2F0XSwgaWYgdGhlIHJlcXVlc3RlZCB0aW1lIGlzXG4gICAgICAgIGluIHRoZSBwYXN0LCB0aGUgZXZlbnQgd2lsbCBiZSBzY2hlZHVsZWQgdG8gcnVuIGltbWVkaWF0ZWx5LiAgSWYgW3Jlc2NoZWR1bGVfYXQgdFxuICAgICAgICB0aW1lID0gT2tdLCB0aGVuIHN1YnNlcXVlbnRseSBbc2NoZWR1bGVkX2F0IHQgPSB0aW1lXS4gICopXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hZnRlciA6ICgnYSwgJ2gpIHQgLT4gVGltZS5TcGFuLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuXG4gICAgKCoqIFthdCB0aW1lXSAgICBpcyBbcnVuX2F0ICAgIHRpbWUgaWdub3JlICgpXS5cbiAgICAgICAgW2FmdGVyIHRpbWVdIGlzIFtydW5fYWZ0ZXIgdGltZSBpZ25vcmUgKCldLlxuXG4gICAgICAgIFlvdSBzaG91bGQgZ2VuZXJhbGx5IHByZWZlciB0byB1c2UgdGhlIFtydW5fKl0gZnVuY3Rpb25zLCB3aGljaCBhbGxvdyB5b3UgdG9cbiAgICAgICAgc3luY2hyb25vdXNseSB1cGRhdGUgc3RhdGUgdmlhIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB3aGVuIHRoZSBldmVudFxuICAgICAgICB0cmFuc2l0aW9ucyB0byBbSGFwcGVuZWRdLiAgVGhhdCBpcywgdGhlcmUgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbjpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gcnVuX2F0IHRpbWUgZiAoKSBdfVxuXG4gICAgICAgIGFuZDpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gYXQgdGltZSBpblxuICAgICAgICAgIGZpcmVkIHRcbiAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IGYgKClcbiAgICAgICAgICB8IEFib3J0ZWQgKCkgLT4gKCkgXX1cblxuICAgICAgICBXaXRoIFtydW5fYXRdLCBpZiBbc3RhdHVzIHQgPSBIYXBwZW5lZF0sIG9uZSBrbm93cyB0aGF0IFtmXSBoYXMgcnVuLiAgV2l0aCBbYXRdXG4gICAgICAgIGFuZCBbZmlyZWRdLCBvbmUgZG9lcyBub3Qga25vdyB3aGV0aGVyIFtmXSBoYXMgeWV0IHJ1bjsgaXQgbWF5IHN0aWxsIGJlIHNjaGVkdWxlZFxuICAgICAgICB0byBydW4uICBUaHVzLCB3aXRoIFthdF0gYW5kIFtmaXJlZF0sIGl0IGlzIGVhc3kgdG8gaW50cm9kdWNlIGEgcmFjZS4gIEZvclxuICAgICAgICBleGFtcGxlLCBjb25zaWRlciB0aGVzZSB0d28gY29kZSBzbmlwcGV0czpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gRXZlbnQuYWZ0ZXIgKHNlYyAyLikgaW5cbiAgICAgICAgICB1cG9uIChFdmVudC5maXJlZCB0KSAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKVxuICAgICAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBwcmludGYgXCJUaW1lciBmaXJlZFwiKTtcbiAgICAgICAgICB1cG9uIGRlZmVycmVkX2V2ZW50IChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEV2ZW50LmFib3J0IHQgKCkgd2l0aFxuICAgICAgICAgICAgfCBPayAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZFwiXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiKTsgXX1cblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gRXZlbnQucnVuX2FmdGVyIChzZWMgMi4pIHByaW50ZiBcIlRpbWVyIGZpcmVkXCIgaW5cbiAgICAgICAgICB1cG9uIGRlZmVycmVkX2V2ZW50IChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEV2ZW50LmFib3J0IHQgKCkgd2l0aFxuICAgICAgICAgICAgfCBPayAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZFwiXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiKTsgXX1cblxuICAgICAgICBJbiBib3RoIHNuaXBwZXRzLCBpZiBbRXZlbnQuYWJvcnRdIHJldHVybnMgW09rXSwgXCJUaW1lciBmaXJlZFwiIGlzIG5ldmVyIHByaW50ZWQuXG4gICAgICAgIEhvd2V2ZXIsIHRoZSBmaXJzdCBzbmlwcGV0IG1pZ2h0IHByaW50IFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIiBhbmQgdGhlblxuICAgICAgICBcIlRpbWVyIGZpcmVkXCIuICBUaGlzIGNvbmZ1c2VkIG9yZGVyaW5nIGNhbm5vdCBoYXBwZW4gd2l0aCBbRXZlbnQucnVuX2FmdGVyXS4gKilcbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHRcblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gIGVuZFxuXG4gICgqKiBbYXRfdmFyeWluZ19pbnRlcnZhbHMgZiA/c3RvcF0gcmV0dXJucyBhIHN0cmVhbSB3aG9zZSBuZXh0IGVsZW1lbnQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCBieSBjYWxsaW5nIFtmICgpXSBhbmQgd2FpdGluZyBmb3IgdGhhdCBhbW91bnQgb2YgdGltZSwgYW5kIHRoZW4gbG9vcGluZ1xuICAgICAgdG8gZGV0ZXJtaW5lIHN1YnNlcXVlbnQgZWxlbWVudHMuICBUaGUgc3RyZWFtIHdpbGwgZW5kIGFmdGVyIFtzdG9wXSBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkLiAqKVxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFthdF9pbnRlcnZhbHMgaW50ZXJ2YWwgP3N0YXJ0ID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIGVsZW1lbnRzIHdpbGwgYmVjb21lXG4gICAgICBkZXRlcm1pbmVkIGF0IG5vbm5lZ2F0aXZlIGludGVnZXIgbXVsdGlwbGVzIG9mIFtpbnRlcnZhbF0gYWZ0ZXIgdGhlIFtzdGFydF0gdGltZSxcbiAgICAgIHVudGlsIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQ6XG5cbiAgICAgIHt2XG4gICAgICAgIHN0YXJ0ICsgMCAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMSAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMiAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMyAqIGludGVydmFsXG4gICAgICAgIC4uLlxuICAgICAgdn1cblxuICAgICAgTm90ZSB0aGF0IG9ubHkgZWxlbWVudHMgdGhhdCBhcmUgc3RyaWN0bHkgaW4gdGhlIGZ1dHVyZSBldmVyIGJlY29tZSBkZXRlcm1pbmVkLlxuICAgICAgSW4gcGFydGljdWxhciwgaWYgW3N0YXJ0XSBpcyBub3QgaW4gdGhlIGZ1dHVyZSwgb3IgW3N0YXJ0XSBpcyBub3QgcHJvdmlkZWQsXG4gICAgICB0aGVuIHRoZXJlIHdpbGwgYmUgbm8gZWxlbWVudCBiZWZvcmUgdGhlIFtpbnRlcnZhbF0gaGFzIHBhc3NlZC5cblxuICAgICAgSWYgdGhlIGludGVydmFsIGlzIHRvbyBzbWFsbCBvciB0aGUgQ1BVIGlzIHRvbyBsb2FkZWQsIFthdF9pbnRlcnZhbHNdIHdpbGwgc2tpcFxuICAgICAgdW50aWwgdGhlIG5leHQgdXBjb21pbmcgbXVsdGlwbGUgb2YgW2ludGVydmFsXSBhZnRlciBbc3RhcnRdLiAqKVxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuXG4gICgqKiBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIGZdIHJ1bnMgW2YgKCldIGV2ZXJ5IFtzcGFuXSBhbW91bnQgb2YgdGltZSBzdGFydGluZyB3aGVuXG4gICAgICBbc3RhcnRdIGJlY29tZXMgZGV0ZXJtaW5lZCBhbmQgc3RvcHBpbmcgd2hlbiBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLiAgW2V2ZXJ5J11cbiAgICAgIHdhaXRzIHVudGlsIHRoZSBvdXRjb21lIG9mIFtmICgpXSBiZWNvbWVzIGRldGVybWluZWQgYmVmb3JlIHdhaXRpbmcgZm9yIHRoZSBuZXh0XG4gICAgICBbc3Bhbl0uXG5cbiAgICAgIEl0IGlzIGd1YXJhbnRlZWQgdGhhdCBpZiBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLCBldmVuIGR1cmluZyBldmFsdWF0aW9uIG9mIFtmXSxcbiAgICAgIHRoZW4gW2ZdIHdpbGwgbm90IGJlIGNhbGxlZCBhZ2FpbiBieSBhIHN1YnNlcXVlbnQgaXRlcmF0aW9uIG9mIHRoZSBsb29wLlxuXG4gICAgICBJdCBpcyBhbiBlcnJvciBmb3IgW3NwYW5dIHRvIGJlIG5vbnBvc2l0aXZlLlxuXG4gICAgICBbY29udGludWVfb25fZXJyb3JdIGNvbnRyb2xzIHdoYXQgc2hvdWxkIGhhcHBlbiBpZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiAgICAgIFdpdGggW35jb250aW51ZV9vbl9lcnJvcjpmYWxzZV0sIGl0ZXJhdGlvbiBvbmx5IGNvbnRpbnVlcyBpZiBbZl0gc3VjY2Vzc2Z1bGx5XG4gICAgICByZXR1cm5zIGEgZGVmZXJyZWQgYW5kIHRoYXQgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cbiAgICAgIFdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXSwgaXRlcmF0aW9uIGFsc28gY29udGludWVzIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgSWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24gYXN5bmNocm9ub3VzbHksIHRoaXMgbWF5IGNhdXNlIHVzIHRvIHByb2NlZWQgd2l0aCB0aGVcbiAgICAgIG5leHQgaXRlcmF0aW9uIHdoaWxlIHRoZSBwcmV2aW91cyBjYWxsIHRvIFtmXSBpcyBzdGlsbCBydW5uaW5nLlxuXG4gICAgICBFeGNlcHRpb25zIHJhaXNlZCBieSBbZl0gYXJlIGFsd2F5cyBzZW50IHRvIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuIFtldmVyeSddIHdhc1xuICAgICAgY2FsbGVkLCBldmVuIHdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXS5cblxuICAgICAgSWYgW2ZpbmlzaGVkXSBpcyBzdXBwbGllZCwgW2V2ZXJ5J10gd2lsbCBmaWxsIGl0IG9uY2UgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYmVjb21lXG4gICAgICBkZXRlcm1pbmVkOiBbc3RhcnRdLCBbc3RvcF0sIGFuZCB0aGUgb3V0Y29tZSBvZiB0aGUgZmluYWwgY2FsbCB0byBbZl0uICopXG4gIHZhbCBldmVyeSdcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiA/ZmluaXNoZWQ6dW5pdCBJdmFyLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtldmVyeSA/c3RhcnQgP3N0b3Agc3BhbiBmXSBpc1xuICAgICAgW2V2ZXJ5JyA/c3RhcnQgP3N0b3Agc3BhbiAoZnVuICgpIC0+IGYgKCk7IHJldHVybiAoKSldLiAqKVxuICB2YWwgZXZlcnlcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZigpXSBhdCBpbmNyZW1lbnRzIG9mIFtzdGFydCArIGkgKlxuICAgICAgc3Bhbl0gZm9yIG5vbm5lZ2F0aXZlIGludGVnZXJzIFtpXSwgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZC5cbiAgICAgIElmIHRoZSByZXN1bHQgb2YgW2ZdIGlzIG5vdCBkZXRlcm1pbmVkIGZhc3QgZW5vdWdoIHRoZW4gdGhlIG5leHQgaW50ZXJ2YWwocylcbiAgICAgIGFyZSBza2lwcGVkIHNvIHRoYXQgdGhlcmUgYXJlIG5ldmVyIG11bHRpcGxlIGNvbmN1cnJlbnQgaW52b2NhdGlvbnMgb2YgW2ZdIGluXG4gICAgICBmbGlnaHQuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gbW9uaXRvciBpbiBlZmZlY3Qgd2hlblxuICAgICAgW3J1bl9hdF9pbnRlcnZhbHMnXSB3YXMgY2FsbGVkLCBldmVuIHdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXS4gKilcbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhbiBmXSBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICB7W1xuICAgICAgICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW5cbiAgICAgICAgICAoZnVuICgpIC0+IGYgKCk7IHJldHVybiAoKSkgXX0gKilcbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtkdXJhdGlvbl9vZiBmXSBpbnZva2VzIFtmICgpXSBhbmQgbWVhc3VyZXMgaG93IGxvbmcgaXQgdGFrZXMgZnJvbSB0aGUgaW52b2NhdGlvblxuICAgICAgdG8gYWZ0ZXIgdGhlIGRlZmVycmVkIGlzIGRldGVybWluZWQuXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgbWVhc3VyZW1lbnQgaXMgbm90IGV4YWN0OyBiZWNhdXNlIGl0IGludm9sdmVzIGFuIGFkZGl0aW9uYWwgbWFwIG9uIHRoZVxuICAgICAgZGVmZXJyZWQsIHRoZSB0aW1pbmcgYWxzbyBpbmNsdWRlcyB0aGUgZHVyYXRpb24gb2Ygam9icyBpbiB0aGUgam9iIHF1ZXVlIHdoZW4gW2YgKCldXG4gICAgICBpcyBkZXRlcm1pbmVkLiAqKVxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuZW5kXG5cbigqKiBbQ2xvY2tfZGVwcmVjYXRlZF0gaXMgdXNlZCBpbiBbUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZV0gdG8gY3JlYXRlIGEgY2xvY2tcbiAgICBtb2R1bGUgaW4gd2hpY2ggYWxsIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZC4gKilcbm1vZHVsZSB0eXBlIENsb2NrX2RlcHJlY2F0ZWQgPSBzaWdcbiAgbW9kdWxlIE9yX3RpbWVvdXQgPSBPcl90aW1lb3V0XG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICBtb2R1bGUgU3BhbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgZW5kXG5cbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCB3aXRoX3RpbWVvdXQgOiBUaW1lLlNwYW4udCAtPiAnYSBEZWZlcnJlZC50IC0+ICdhIE9yX3RpbWVvdXQudCBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICBtb2R1bGUgRXZlbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2gpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgSW52YXJpYW50LnQgLT4gJ2IgSW52YXJpYW50LnQgLT4gKCdhLCAnYikgdCBJbnZhcmlhbnQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuICBlbmRcblxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuZW5kXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9jaykgOiBDbG9ja19kZXByZWNhdGVkID0gQ1xuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2tfZGVwcmVjYXRlZCkgOiBDbG9jayA9IENcbmVuZCA6XG5zaWcgZW5kKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENsb2NrID0gQ2xvY2tfaW50Zi5DbG9ja1xubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IENsb2NrX2ludGYuQ2xvY2tfZGVwcmVjYXRlZFxuXG5tb2R1bGUgT3JfdGltZW91dCA9IENsb2NrX2ludGYuT3JfdGltZW91dFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHRpbWVfc291cmNlICgpID0gKFNjaGVkdWxlci50ICgpKS50aW1lX3NvdXJjZSB8PiBUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91c1xubGV0IGFmdGVyIHNwYW4gPSBUaW1lX3NvdXJjZS5hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbmxldCBhdCB0aW1lID0gVGltZV9zb3VyY2UuYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCBjb21wdXRlX3NwYW4gPVxuICBUaW1lX3NvdXJjZS5hdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGNvbXB1dGVfc3BhblxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgaW50ZXJ2YWwgPVxuICBUaW1lX3NvdXJjZS5hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWxcbjs7XG5cbmxldCBldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gVGltZV9zb3VyY2UucnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbmxldCBydW5fYXQgdGltZSBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgYVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbCBmXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscydcbiAgICA/c3RhcnRcbiAgICA/c3RvcFxuICAgID9jb250aW51ZV9vbl9lcnJvclxuICAgICh0aW1lX3NvdXJjZSAoKSlcbiAgICBpbnRlcnZhbFxuICAgIGZcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgc3BhbiBkID0gVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0ICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBkXG5sZXQgZHVyYXRpb25fb2YgZiA9IFRpbWVfc291cmNlLmR1cmF0aW9uX29mICh0aW1lX3NvdXJjZSAoKSkgZlxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX3NvdXJjZS5FdmVudFxuXG4gIGxldCBhZnRlciBzcGFuID0gYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG4gIGxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxuICBsZXQgYXQgdGltZSA9IGF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuICBsZXQgcnVuX2F0IHRpbWUgZiB6ID0gcnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIHpcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIGkgYiA9XG4gICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICAgIHRoZW4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICBlbHNlIGYgaSBiIHQuKGkpID4+PiBmdW4gYiAtPiBsb29wIChpICsgMSkgYlxuICAgIGluXG4gICAgbG9vcCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgbGV0JW1hcCBicyA9IGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT4gZiBpIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpIGluXG4gIEFycmF5Lm9mX2xpc3QgKENvcmUuTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKEFycmF5Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBBcnJheS5vZl9saXN0X3JldlxuICAgIChBcnJheS5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgQXJyYXkuZmlsdGVyX29wdFxuXG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCB0ID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgQXJyYXkuY29uY2F0IChBcnJheS50b19saXN0IHQpXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICB0aGVuIHJldHVybiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCViaW5kIGYgaSB0LihpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXV4IChpICsgMSlcbiAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGF1eCAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChBcnJheS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBpIGIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCB4IDo6IHhzIC0+IGYgaSBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIHQgMCBpbml0KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxubGV0IHNlcW1hcGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgIGIgOjogYnMpXG4gID4+fCBMaXN0LnJldlxuOztcblxubGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbmxldCBhbGxfdW5pdCBkcyA9IERlZmVycmVkLmlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSlcblxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFBhcmFsbGVsIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgam9iX2NvdW50IC0+XG4gICAgbGV0IHJlYyBnZW5fY29tcHV0YXRpb24gaWR4ID0gZnVuY3Rpb25cbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICBUaHJvdHRsZWQub2ZfdGh1bmsgKGZ1biAoKSAtPlxuICAgICAgICAgIFRocm90dGxlZC5ib3RoX3VuaXRcbiAgICAgICAgICAgIChUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiBpZHggeCkpXG4gICAgICAgICAgICAoZ2VuX2NvbXB1dGF0aW9uIChpZHggKyAxKSB4cykpXG4gICAgICB8IFtdIC0+IFRocm90dGxlZC5yZXR1cm4gKClcbiAgICBpblxuICAgIFRocm90dGxlZC5ydW4gKGdlbl9jb21wdXRhdGlvbiAwIHQpIH5tYXhfY29uY3VycmVudF9qb2JzOmpvYl9jb3VudFxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBQYXJhbGxlbCBhcyBob3cgLT5cbiAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBqb2JfY291bnQgLT5cbiAgICBsZXQgcmVjIGdlbl9jb21wdXRhdGlvbiBpZHggPSBmdW5jdGlvblxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgIFRocm90dGxlZC5vZl90aHVuayAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyb3R0bGVkLm1hcDJcbiAgICAgICAgICAgIChUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiBpZHggeCkpXG4gICAgICAgICAgICAoZ2VuX2NvbXB1dGF0aW9uIChpZHggKyAxKSB4cylcbiAgICAgICAgICAgIH5mOihmdW4geSB5cyAtPiB5IDo6IHlzKSlcbiAgICAgIHwgW10gLT4gVGhyb3R0bGVkLnJldHVybiBbXVxuICAgIGluXG4gICAgVGhyb3R0bGVkLnJ1biAoZ2VuX2NvbXB1dGF0aW9uIDAgdCkgfm1heF9jb25jdXJyZW50X2pvYnM6am9iX2NvdW50XG4gIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG47O1xuXG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgTGlzdC5yZXYgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3Rcbm1vZHVsZSBUaHJvdHRsZWRfbWFwID0gTWFwLk1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoVGhyb3R0bGVkKVxuXG50eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbmxldCBjaGFuZ2UgdCBrIH5mID1cbiAgbGV0JW1hcCBvcHQgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5jaGFuZ2UgdCBrIH5mOihmdW4gXyAtPiBvcHQpXG47O1xuXG5sZXQgdXBkYXRlIHQgayB+ZiA9XG4gIGxldCVtYXAgZGF0YSA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLnNldCB0IH5rZXk6ayB+ZGF0YVxuOztcblxubGV0IGl0ZXJfa2V5cyB+aG93IHQgfmYgPSBMaXN0Lml0ZXIgfmhvdyAoTWFwLmtleXMgdCkgfmZcbmxldCBpdGVyIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAuZGF0YSB0KSB+ZlxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAudG9fYWxpc3QgdCkgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB7IGtleSA6ICdhXG4gICAgOyBkYXRhIDogJ2JcbiAgICA7IG11dGFibGUgcmVzdWx0IDogJ2Mgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5lbmRcblxubGV0IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZiA9XG4gIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgdCBpblxuICBsZXQgc2VxdWVuY2UgPSBNYXAudG9fc2VxdWVuY2Ugfm9yZGVyOmBJbmNyZWFzaW5nX2tleSB0IGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDpCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuICAgICAgfmY6KGZ1biBzIChrZXksIGRhdGEpIH5rIC0+XG4gICAgICAgIHVwb24gKGYgfmtleSB+ZGF0YSkgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGsgc1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmFkZF9leG5cbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBrIHMpKVxuICAgICAgfmZpbmlzaDooZnVuIHggLT5cbiAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAoQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZSB4KSkpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBsZXQgY29tcHV0YXRpb24gPVxuICAgIFRocm90dGxlZF9tYXAuZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIH5rZXkgfmRhdGEpKVxuICBpblxuICBUaHJvdHRsZWQucnVuIGNvbXB1dGF0aW9uIH5tYXhfY29uY3VycmVudF9qb2JzXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPiBmaWx0ZXJfbWFwaV9zZXF1ZW50aWFsIHQgfmZcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgZmlsdGVyX21hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuICB8IGBQYXJhbGxlbCAtPlxuICAgIGxldCBqb2JzID0gcmVmIFtdIGluXG4gICAgbGV0IGpvYl9tYXAgPVxuICAgICAgTWFwLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgbGV0IGpvYiA9IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gTm9uZSB9IGluXG4gICAgICAgIGpvYnMgOj0gam9iIDo6ICFqb2JzO1xuICAgICAgICBqb2IpXG4gICAgaW5cbiAgICBsZXQlbWFwICgpID1cbiAgICAgIExpc3QuaXRlciB+aG93IChCYXNlLkxpc3QucmV2ICFqb2JzKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCB7IEpvYi5rZXk7IGRhdGE7IHJlc3VsdCA9IF8gfSBhcyBqb2IgLT5cbiAgICAgICAgICBsZXQlbWFwIHggPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICBqb2IucmVzdWx0IDwtIHgpXG4gICAgaW5cbiAgICBNYXAuZmlsdGVyX21hcCBqb2JfbWFwIH5mOkpvYi5yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaWx0ZXJfa2V5cyB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBrZXkgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXIgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBkYXRhIGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiB+a2V5IH5kYXRhIGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgbGV0IGNvbXB1dGF0aW9uID1cbiAgICBUaHJvdHRsZWRfbWFwLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgfmtleSB+ZGF0YSkpXG4gIGluXG4gIFRocm90dGxlZC5ydW4gY29tcHV0YXRpb24gfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFNlcXVlbnRpYWwgfCBgUGFyYWxsZWwgLT5cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQlbWFwIHogPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgIFNvbWUgeilcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzXG47O1xuXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IG1lcmdlIH5ob3cgdDEgdDIgfmYgPVxuICBmaWx0ZXJfbWFwXG4gICAgfmhvd1xuICAgIChNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5IHogLT4gU29tZSAoZnVuICgpIC0+IGYgfmtleSB6KSkpXG4gICAgfmY6KGZ1biB0aHVuayAtPiB0aHVuayAoKSlcbjs7XG5cbmxldCBhbGwgdCA9IG1hcCB0IH5mOkZuLmlkIH5ob3c6YFNlcXVlbnRpYWxcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkX3N0ZFxuaW5jbHVkZSBEZWZlcnJlZF9tZW1vX2ludGZcblxubW9kdWxlIE1ha2UgKE0gOiBNb25hZC5JbmZpeCB3aXRoIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkMS50KSA6XG4gIFMgd2l0aCB0eXBlICdhIGRlZmVycmVkIDo9ICdhIE0udCA9IHN0cnVjdFxuICBvcGVuISBNXG5cbiAgbGV0IHJlcmFpc2UgPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiB4XG4gICAgfCBFcnJvciBleG4gLT4gRXhuLnJlcmFpc2UgZXhuIFwiY2F1Z2h0IGV4Y2VwdGlvbiBpbiBtZW1vaXplZCBmdW5jdGlvblwiXG4gIDs7XG5cbiAgbGV0IGdlbmVyYWwnICh0eXBlIGEpIH5ydW4gKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGYgPVxuICAgIGxldCBtb2R1bGUgSGFzaGFibGUgPSAodmFsIGhhc2hhYmxlKSBpblxuICAgIGxldCBmID1cbiAgICAgIE1lbW8uZ2VuZXJhbCB+aGFzaGFibGU6SGFzaGFibGUuaGFzaGFibGUgKGZ1biBhIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgfnJ1blxuICAgICAgICAgIChmdW4gKCkgLT4gZiBhKSlcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZSAoZnVuIGEgLT4gZiBhID4+fCByZXJhaXNlKVxuICA7O1xuXG4gIGxldCBnZW5lcmFsIGhhc2hhYmxlIGYgPSBnZW5lcmFsJyB+cnVuOmBOb3cgaGFzaGFibGUgZlxuXG4gIGxldCByZWN1cnNpdmUgKHR5cGUgYSkgKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGZfb25lc3RlcCA9XG4gICAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgICBsYXp5XG4gICAgICAgIChnZW5lcmFsJ1xuICAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgICBoYXNoYWJsZVxuICAgICAgICAgICAoZl9vbmVzdGVwIChmdW4geCAtPiAodW5zdGFnZSAoZm9yY2UgbWVtb2l6ZWQpKSB4KSkpXG4gICAgaW5cbiAgICBmb3JjZSBtZW1vaXplZFxuICA7O1xuXG4gIGxldCB1bml0IGYgPVxuICAgIGxldCBmID1cbiAgICAgIE1lbW8udW5pdCAoZnVuICgpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgICAgZilcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+IGYgKCkgPj58IHJlcmFpc2UpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNYWtlIChEZWZlcnJlZDEpXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBPcHRpb24udCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKFNvbWUgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IFNvbWUgYSAtPiBmIGFcbiAgICAgICAgfCBOb25lIC0+IERlZmVycmVkLnJldHVybiBOb25lKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gT3B0aW9uLm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdlcnJvcikgdCA9ICgnYSwgJ2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbGV0JW1hcCB0MSA9IHQxXG4gIGFuZCB0MiA9IHQyIGluXG4gIFJlc3VsdC5jb21iaW5lIHQxIHQyIH5vayB+ZXJyXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoT2sgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE9rIGEgLT4gZiBhXG4gICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBEZWZlcnJlZC5yZXR1cm4gZXJyb3IpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGZhaWwgeCA9IERlZmVycmVkLnJldHVybiAoRXJyb3IgeClcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBtYXBfZXJyb3IgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwX2Vycm9yIHIgfmYpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgTW9uaXRvciA9IHN0cnVjdFxuICBsZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5lbmRcblxuKCogQ29waWVkIHRvIFtlYWdlcl9kZWZlcnJlZF9vcl9lcnJvci5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZF9yZXN1bHQgOiBNb25hZC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBEZWZlcnJlZF9yZXN1bHQudClcblxudHlwZSAnYSB0ID0gJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgRGVmZXJyZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgZlxuICAgICAgICB4XG4gICAgICAgIH5vazooZnVuIGYgeCAtPiBmIHgpXG4gICAgICAgIH5lcnI6KGZ1biBlMSBlMiAtPiBFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxubGV0IGZhaWwgZXJyb3IgPSBEZWZlcnJlZC5yZXR1cm4gKFJlc3VsdC5mYWlsIGVycm9yKVxubGV0IG9rX2V4biB0ID0gRGVmZXJyZWQubWFwIHQgfmY6T3JfZXJyb3Iub2tfZXhuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5vZl9leG4gP2JhY2t0cmFjZSBleG4pXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlKVxubGV0IGVycm9yIG1zZyB2IHNleHBfb2YgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yIG1zZyB2IHNleHBfb2YpXG5sZXQgZXJyb3JfcyBzZXhwID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIG1zZylcbmxldCBlcnJvcmYgZm9ybWF0ID0ga3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHQgLT4gT3JfZXJyb3IudGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLnVuaW1wbGVtZW50ZWQgbXNnKVxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmZpbHRlcl9va19hdF9sZWFzdF9vbmVcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkIChsLCBbXSkgKGZ1biAobCwgZXJyb3JzKSAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGxldCBlcnJvcnMgPSBFcnJvci5vZl9saXN0IChMaXN0LnJldiBlcnJvcnMpIGluXG4gICAgICBEZWZlcnJlZC5yZXR1cm4gKGBGaW5pc2hlZCAoRXJyb3IgZXJyb3JzKSlcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBEZWZlcnJlZC5tYXAgKGYgaGQpIH5mOihmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGN1cnJlbnRfZXJyb3IgLT4gYFJlcGVhdCAodGwsIGN1cnJlbnRfZXJyb3IgOjogZXJyb3JzKVxuICAgICAgICB8IE9rIHJlc3VsdCAtPiBgRmluaXNoZWQgKE9rIHJlc3VsdCkpKVxuOztcblxubGV0IG9rX3VuaXQgPSByZXR1cm4gKClcblxubGV0IHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKE1vbml0b3IudHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6KGZ1bmN0aW9uXG4gICAgfCBFcnJvciBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG4gICAgfCBPayBfIGFzIG9rIC0+IG9rKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAodHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6T3JfZXJyb3Iuam9pblxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGZvbGRpIGxpc3QgfmluaXQ6YWNjIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCViaW5kIGFjYyA9IGYgaSBhY2MgaGQgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIGFjYyB0bFxuICAgIGluXG4gICAgbG9vcCAwIGFjYyBsaXN0XG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxuICBsZXQgc2VxbWFwaSB0IH5mID1cbiAgICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgICAgYiA6OiBicylcbiAgICA+PnwgTGlzdC5yZXZcbiAgOztcblxuICBsZXQgYWxsID0gYWxsXG4gIGxldCBhbGxfdW5pdCA9IGFsbF91bml0XG5cbiAgbGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgeCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gICAgaW5cbiAgICBmaW5kX21hcGkgdCB+ZiAwXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5cbiAgbGV0IGZpbmRpIHQgfmYgPVxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID1cbiAgICBmaW5kX21hcCB0IH5mOihmdW4gZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IHJlYyByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIG1hdGNoJWJpbmQgZiBzdGF0ZSB3aXRoXG4gIHwgYFJlcGVhdCBzdGF0ZSAtPiByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZlxuICB8IGBGaW5pc2hlZCBzdGF0ZSAtPiByZXR1cm4gc3RhdGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3RcblxuKCogV2UgaW1wbGVtZW50IGFsbCBvZiB0aGUgW1F1ZXVlXSBvcGVyYXRpb25zIGJ5IGNvbnZlcnRpbmcgdGhlIHF1ZXVlIHRvIGEgbGlzdCBhbmQgdGhlblxuICAgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgW0xpc3RdIG9wZXJhdGlvbi4gIFdlIHVzZSBsaXN0cyByYXRoZXIgdGhhbiBhcnJheXMgYmVjYXVzZVxuICAgYXJyYXlzIGxvbmdlciB0aGFuIGEgY2VydGFpbiBsZW5ndGggYXJlIGFsbG9jYXRlZCBpbiB0aGUgbWFqb3IgaGVhcCwgd2hpY2ggY2FuIGNhdXNlXG4gICB1bm5lY2Vzc2FyeSBwcm9tb3Rpb24gb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBxdWV1ZS4gIEFsc28sIHdoZW4gb25lIGlzIGZvbGRpbmcgb3JcbiAgIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5LCB0aGUgZW50aXJlIGFycmF5IG11c3QgYmUga2VwdCBhbGl2ZS4gIFdoZW4gZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYSBsaXN0LCBvbmx5IHRoZSByZW1haW5pbmcgdGFpbCBvZiB0aGUgbGlzdCBpcyBrZXB0IGFsaXZlLiAgU28sIHVzaW5nXG4gICBhcnJheXMgcmF0aGVyIHRoYW4gbGlzdHMgd291bGQgaW5jcmVhc2UgdGhlIGxpdmUtc3BhY2UgbmVlZGVkIGJ5IHRoZSBwcm9ncmFtLiAqKVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBhbGwgdCA9IExpc3QuYWxsIChRdWV1ZS50b19saXN0IHQpID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgYWxsX3VuaXQgdCA9IExpc3QuYWxsX3VuaXQgKFF1ZXVlLnRvX2xpc3QgdClcbmxldCBpdGVyIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgaXRlcmkgfmhvdyB0IH5mID0gTGlzdC5pdGVyaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IExpc3QubWFwIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBtYXBpIH5ob3cgdCB+ZiA9IExpc3QubWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgaW5pdCB+aG93IG4gfmYgPSBMaXN0LmluaXQgfmhvdyBuIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBMaXN0LmZpbHRlcl9tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcGkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxuXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPVxuICBMaXN0LmNvbmNhdF9tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIHggLT4gZiB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcGkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIGkgeCAtPiBmIGkgeCA+PnwgUXVldWUudG9fbGlzdClcbiAgPj58IFF1ZXVlLm9mX2xpc3Rcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID0gTGlzdC5maW5kX21hcCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRfbWFwaSB0IH5mID0gTGlzdC5maW5kX21hcGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kaSB0IH5mID0gTGlzdC5maW5kaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBMaXN0LmZvcl9hbGxpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IExpc3QuZXhpc3RzaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbigqIFtmb2xkX21hcGkgfmhvdyB0IH5pbml0IH5tYXBpX2YgfmZvbGRfZl0gaXMgYSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uIG9mOlxuXG4gICB7W1xuICAgICBmb2xkIH5pbml0IH5mOihmdW4gYiBhIC0+IHJldHVybiAoZm9sZF9mIGIgYSkpIChtYXBpIHQgfmhvdyB+ZjptYXBpX2YpIF19XG5cbiAgIEl0IGF2b2lkcyBjcmVhdGluZyB0aGUgaW50ZXJtZWRpYXRlIHNlcXVlbmNlIHRoYXQgd291bGQgcmVzdWx0IGZyb20gW21hcGldLCBhbmRcbiAgIGFsbG93cyB0aGUgW2ZvbGRdIHRvIHByb2NlZWQgY29uY3VycmVudGx5IHdpdGggdGhlIFttYXBpXSwgc28gdGhhdCBvbmUgY2FuIGFjY3VtdWxhdGVcbiAgIHRoZSByZXN1bHQgYXMgc29vbiBhcyBwb3NzaWJsZSwgcG9zc2libHkgYXZvaWRpbmcgY3JlYXRpbmcgYW4gaW50ZXJtZWRpYXRlIHN0cnVjdHVyZVxuICAgKGUuZy4gW2l0ZXJpXSBhbmQgW2ZpbHRlcl9tYXBdIHVzZXMgW2ZvbGRfbWFwaV0gdG8gZG8gdGhpcykuICopXG5sZXQgZm9sZF9tYXBpXG4gICAgICAodHlwZSBhIGIgYylcbiAgICAgID8oaG93ID0gYFNlcXVlbnRpYWwpXG4gICAgICAodCA6IGEgU2VxdWVuY2UudClcbiAgICAgIH4oaW5pdCA6IGMpXG4gICAgICB+KG1hcGlfZiA6IGludCAtPiBhIC0+IGIgRGVmZXJyZWQudClcbiAgICAgIH4oZm9sZF9mIDogYyAtPiBiIC0+IGMpXG4gIDogYyBEZWZlcnJlZC50XG4gID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPlxuICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjKSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEl2YXIuZmlsbCByZXN1bHQgY1xuICAgICAgfCBTb21lIChhLCB0KSAtPiB1cG9uIChtYXBpX2YgaSBhKSAoZnVuIGIgLT4gbG9vcCAoaSArIDEpIHQgKGZvbGRfZiBjIGIpKVxuICAgIGluXG4gICAgbG9vcCAwIHQgaW5pdDtcbiAgICBJdmFyLnJlYWQgcmVzdWx0XG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gbWFwaV9mIGkgYSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPlxuICAgIGxldCB0aHJvdHRsZSA9IFRocm90dGxlLmNyZWF0ZSB+bWF4X2NvbmN1cnJlbnRfam9icyB+Y29udGludWVfb25fZXJyb3I6ZmFsc2UgaW5cbiAgICAoKiBbbG9vcF0gZm9yY2VzIHRoZSBpbnB1dCBzZXF1ZW5jZSBhbmQgZW5xdWV1ZXMgYSB0aHJvdHRsZSBqb2Igb25seSBpZiB0aGVyZSBpc1xuICAgICAgIGNhcGFjaXR5IGF2YWlsYWJsZS4gKilcbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBsZXQlYmluZCAoKSA9IFRocm90dGxlLmNhcGFjaXR5X2F2YWlsYWJsZSB0aHJvdHRsZSBpblxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gVGhyb3R0bGUuZW5xdWV1ZSB0aHJvdHRsZSAoZnVuICgpIC0+IG1hcGlfZiBpIGEpIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgdFxuICAgIH5pbml0OigwLCBpbml0KVxuICAgIH5mOihmdW4gKGksIGIpIGEgfmsgLT5cbiAgICAgIGxldCViaW5kIGIgPSBmIGkgYiBhIGluXG4gICAgICBrIChpICsgMSwgYikpXG4gICAgfmZpbmlzaDooZnVuIChfLCBiKSAtPiByZXR1cm4gYilcbjs7XG5cbigqIFtmb2xkXSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgW2ZvbGRpXSB0byBzYXZlIHRoZSBpbnRlcm1lZGlhdGUgY2xvc3VyZVxuICAgYWxsb2NhdGlvbi4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGQgdCB+aW5pdCB+ZjooZnVuIGIgYSB+ayAtPiBmIGIgYSA+Pj0gaykgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBhbGwgdCA9XG4gIGxldCVtYXAgcmVzID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhY2N1bSBkIC0+XG4gICAgICBsZXQlbWFwIGEgPSBkIGluXG4gICAgICBhIDo6IGFjY3VtKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiByZXMpXG47O1xuXG5sZXQgYWxsX3VuaXQgdCA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gdilcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZXR1cm4gTm9uZVxuICAgIHwgU29tZSAodiwgcmVzdCkgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSB2IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHJlc3QgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcmkgfmhvdyB0IH5mIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgZm9sZF9tYXBpIH5ob3cgdCB+bWFwaV9mOmYgfmluaXQ6KCkgfmZvbGRfZjooZnVuICgpICgpIC0+ICgpKVxuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpIH5ob3cgdCB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKSB+aW5pdDpbXSB+Zm9sZF9mOihmdW4gYnMgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbigqIFtmaWx0ZXJfbWFwaV0gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW2ZvbGRfbWFwaV0gcmF0aGVyIHRoYW4gW21hcF0gc28gdGhhdCB3ZSBuZXZlciBuZWVkXG4gICB0byBrZWVwIGEgbG9uZyBzdHJlYW0gb2YgaW50ZXJtZWRpYXRlIFtOb25lXSByZXN1bHRzIGluIHRoZSBhY2N1bXVsYXRvciwgb25seSB0byBsYXRlclxuICAgZmlsdGVyIHRoZW0gYWxsIG91dC4gKilcbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGlcbiAgICAgIHRcbiAgICAgIH5ob3dcbiAgICAgIH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmZvbGRfZjooZnVuIGJzIG1heWJlX3YgLT5cbiAgICAgICAgbWF0Y2ggbWF5YmVfdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBic1xuICAgICAgICB8IFNvbWUgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZiA+PnwgU2VxdWVuY2UuY29uY2F0XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoJW1hcCBmIGkgYSB3aXRoXG4gICAgfCB0cnVlIC0+IFNvbWUgYVxuICAgIHwgZmFsc2UgLT4gTm9uZSlcbjs7XG5cbmxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoU2VxdWVuY2UuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXRcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIERhdGUgPSBEYXRlXG5cbmxldCBhZnRlciA9IENsb2NrX25zLmFmdGVyXG5sZXQgYXQgPSBDbG9ja19ucy5hdFxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5cbmxldCBzaG93X2RlYnVnX21lc3NhZ2VzID0gcmVmIGZhbHNlXG5sZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIGZhbHNlXG5cbm1vZHVsZSBGbHVzaGVkX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYE9rXG4gICAgfCBgUmVhZGVyX2Nsb3NlZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgbGV0IGNvbWJpbmUgKGwgOiB0IERlZmVycmVkLnQgbGlzdCkgPVxuICAgIGxldCVtYXAgbCA9IERlZmVycmVkLmFsbCBsIGluXG4gICAgbWF0Y2ggTGlzdC5tZW0gbCBgUmVhZGVyX2Nsb3NlZCB+ZXF1YWwgd2l0aFxuICAgIHwgdHJ1ZSAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgIHwgZmFsc2UgLT4gYE9rXG4gIDs7XG5lbmRcblxuKCogQSBbQ29uc3VtZXIudF0gYWN0cyBhcyB0aGUgbW9uaXRvciBvZiBzb21lIHByb2Nlc3MgdGhhdCByZWFkcyB2YWx1ZXMgZnJvbSBhIHBpcGUgYW5kXG4gICBwcm9jZXNzZXMgdGhlbSwgYWxsb3dpbmcgdGhhdCBwcm9jZXNzOlxuICAgLSB0byBjb21tdW5pY2F0ZSB0aGF0IGl0IGhhcyB0YWtlbiByZXNwb25zaWJpbGl0eSBmb3IgdGhlIHZhbHVlc1xuICAgLSB0byBzaWduYWwgd2hlbiBpdCBoYXMgZmluaXNoZWQgd2l0aCB0aGUgdmFsdWVzIHRvIGludGVyZXN0ZWQgcGFydGllcyAodmlhXG4gICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdKVxuXG4gICBJdCBpcyB1c2VkIGluIHR3byBzdGVwczpcblxuICAgMS4gY2FsbGluZyBbQ29uc3VtZXIuc3RhcnRdIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgY29uc3VtZXIgdGFrZXMgdmFsdWVzIG91dCBvZiB0aGVcbiAgIFBpcGUgdmlhIFtyZWFkXSBvciBbcmVhZCddLlxuXG4gICAyLiBjYWxsaW5nIFtDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtXS5cblxuICAgQnkgY2FsbGluZyBbdmFsdWVzX3NlbnRfZG93bnN0cmVhbV0gb25lIGFzc2VydHMgdGhhdCB0aGUgW2Rvd25zdHJlYW1fZmx1c2hlZF0gZnVuY3Rpb25cbiAgIHN1cHBsaWVkIHRvIFtjcmVhdGVdIHdpbGwgbm93IHdhaXQgZm9yIHRoaXMgdmFsdWUuXG5cbiAgIElmIG5vIFtDb25zdW1lci50XSBpcyBzdXBwbGllZCB3aGVuIGEgdmFsdWUgaXMgcmVhZCB0aGVuIHRoZSB2YWx1ZSBpcyBkZWZpbmVkIHRvIGJlXG4gICBmbHVzaGVkIGF0IHRoYXQgdGltZS4gKilcbm1vZHVsZSBDb25zdW1lciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgcGlwZV9pZDppbnRcbiAgICAtPiBkb3duc3RyZWFtX2ZsdXNoZWQ6KHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KVxuICAgIC0+IHRcblxuICB2YWwgcGlwZV9pZCA6IHQgLT4gaW50XG4gIHZhbCBzdGFydCA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCA6IHQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBpcGVfaWQgOiBpbnRcbiAgICA7ICgqIFt2YWx1ZXNfcmVhZF0gcmVmbGVjdHMgd2hldGhlciB2YWx1ZXMgdGhlIGNvbnN1bWVyIGhhcyByZWFkIGZyb20gdGhlIHBpcGUgaGF2ZSBiZWVuXG4gICAgICAgICBzZW50IGRvd25zdHJlYW0gb3IgaWYgbm90LCBob2xkcyBhbiBpdmFyIHRoYXQgaXMgdG8gYmUgZmlsbGVkIHdoZW4gdGhleSBhcmUuICopXG4gICAgICBtdXRhYmxlXG4gICAgICAgIHZhbHVlc19yZWFkIDpcbiAgICAgICAgWyBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBvZiB1bml0IEl2YXIudCBdXG4gICAgOyAoKiBbZG93bnN0cmVhbV9mbHVzaGVkICgpXSByZXR1cm5zIHdoZW4gYWxsIHByaW9yIHZhbHVlcyB0aGF0IHRoZSBjb25zdW1lciBoYXNcbiAgICAgICAgIHBhc3NlZCBkb3duc3RyZWFtIGhhdmUgYmVlbiBmbHVzaGVkIGFsbCB0aGUgd2F5IGRvd24gdGhlIGNoYWluIG9mIHBpcGVzLiAqKVxuICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIDogdW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+cGlwZV9pZDppZ25vcmVcbiAgICAgICAgfnZhbHVlc19yZWFkOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgICAgICAgICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgICB+ZG93bnN0cmVhbV9mbHVzaGVkOmlnbm9yZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQ29uc3VtZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+cGlwZV9pZCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgICB7IHBpcGVfaWQ7IHZhbHVlc19yZWFkID0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW07IGRvd25zdHJlYW1fZmx1c2hlZCB9XG4gIDs7XG5cbiAgbGV0IHN0YXJ0IHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIF8gLT4gKClcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSAoSXZhci5jcmVhdGUgKCkpXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW0gdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSB3aGVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgd2hlbl9zZW50X2Rvd25zdHJlYW0gaW5cbiAgICAgIHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfcmVhZCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX3JlYWQudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgcmVhZCBhdHRlbXB0LiAgSWYgc29tZW9uZSByZWFkcyBmcm9tIGFuIGVtcHR5XG4gICAgIHBpcGUsIHRoZXkgZW5xdWV1ZSBhIFtCbG9ja2VkX3JlYWQudF0gaW4gdGhlIHF1ZXVlIG9mIFtibG9ja2VkX3JlYWRzXS4gIExhdGVyLCB3aGVuXG4gICAgIHZhbHVlcyBhcmUgd3JpdHRlbiB0byBhIHBpcGUsIHRoYXQgd2lsbCBjYXVzZSBzb21lIG51bWJlciBvZiBibG9ja2VkIHJlYWRzIHRvIGJlXG4gICAgIGZpbGxlZCwgZmlyc3QgY29tZSBmaXJzdCBzZXJ2ZS4gIFRoZSBibG9ja2VkLXJlYWQgY29uc3RydWN0b3Igc3BlY2lmaWVzIGhvdyBtYW55XG4gICAgIHZhbHVlcyBhIHJlYWQgc2hvdWxkIGNvbnN1bWUgZnJvbSB0aGUgcGlwZSB3aGVuIGl0IGdldHMgaXRzIHR1cm4uXG5cbiAgICAgSWYgYSBwaXBlIGlzIGNsb3NlZCwgdGhlbiBhbGwgYmxvY2tlZCByZWFkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIFtgRW9mXS4gKilcbiAgdHlwZSAnYSB3YW50cyA9XG4gICAgfCBaZXJvIG9mIFsgYEVvZiB8IGBPayBdIEl2YXIudFxuICAgIHwgT25lIG9mIFsgYEVvZiB8IGBPayBvZiAnYSBdIEl2YXIudFxuICAgIHwgQXRfbW9zdCBvZiBpbnQgKiBbIGBFb2YgfCBgT2sgb2YgJ2EgUXVldWUudCBdIEl2YXIudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3YW50cyA6ICdhIHdhbnRzXG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfndhbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFplcm8gXyB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICAgfCBBdF9tb3N0IChpLCBfKSAtPiBhc3NlcnQgKGkgPiAwKSkpXG4gICAgICAgIH5jb25zdW1lcjpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+IENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcikpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQmxvY2tlZF9yZWFkLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB3YW50cyBjb25zdW1lciA9IHsgd2FudHM7IGNvbnN1bWVyIH1cblxuICBsZXQgaXNfZW1wdHkgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBPbmUgaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICA7O1xuXG4gIGxldCBmaWxsX3dpdGhfZW9mIHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IE9uZSBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9mbHVzaCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX2ZsdXNoLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIGZsdXNoIG9wZXJhdGlvbiwgd2hpY2ggY2FuIGJlIGVuYWJsZWQgYnkgYVxuICAgICBmdXR1cmUgcmVhZC4gIElmIHNvbWVvbmUgZG9lcyBbZmx1c2hlZCBwXSBvbiBhIHBpcGUsIHRoYXQgYmxvY2tzIHVudGlsIGV2ZXJ5dGhpbmdcbiAgICAgdGhhdCdzIGN1cnJlbnRseSBpbiB0aGUgcGlwZSBhdCB0aGF0IHBvaW50IGhhcyBkcmFpbmVkIG91dCBvZiB0aGUgcGlwZS4gIFdoZW4gd2UgY2FsbFxuICAgICBbZmx1c2hlZF0sIGl0IHJlY29yZHMgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHRoYXQgaGFzIGJlZW4gd3JpdHRlbiBzbyBmYXIgaW5cbiAgICAgW2ZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRdLiAgV2UgZmlsbCB0aGUgW0ZsdXNoLnRdIHdpdGggW2BPa10gd2hlbiB0aGlzIGFtb3VudCBvZlxuICAgICBkYXRhIGhhcyBiZWVuIHJlYWQgZnJvbSB0aGUgcGlwZS5cblxuICAgICBBIFtCbG9ja2VkX2ZsdXNoLnRdIGNhbiBhbHNvIGJlIGZpbGxlZCB3aXRoIFtgUmVhZGVyX2Nsb3NlZF0sIHdoaWNoIGhhcHBlbnMgd2hlbiB0aGVcbiAgICAgcmVhZGVyIGVuZCBvZiB0aGUgcGlwZSBpcyBjbG9zZWQsIGFuZCB3ZSBhcmUgdGh1cyBzdXJlIHRoYXQgdGhlIHVucmVhZCBlbGVtZW50cyBwcmVjZWRpbmcgdGhlIGZsdXNoIHdpbGwgbmV2ZXIgYmUgcmVhZC4gKilcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgICA7IHJlYWR5IDogWyBgT2sgfCBgUmVhZGVyX2Nsb3NlZCBdIEl2YXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBmaWxsIHQgdiA9IEl2YXIuZmlsbCB0LnJlYWR5IHZcbmVuZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7ICgqIFtpZF0gaXMgYW4gaW50ZWdlciB1c2VkIHRvIGRpc3Rpbmd1aXNoIHBpcGVzIHdoZW4gZGVidWdnaW5nLiAqKVxuICAgIGlkIDogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudFxuICA7ICgqIFtpbmZvXSBpcyB1c2VyLXByb3ZpZGVkIGFyYml0cmFyeSBzZXhwLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqKVxuICAgIG11dGFibGUgaW5mbyA6IFNleHAudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyAoKiBbYnVmZmVyXSBob2xkcyB2YWx1ZXMgd3JpdHRlbiB0byB0aGUgcGlwZSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHJlYWQuICopXG4gICAgbXV0YWJsZSBidWZmZXIgOiAnYSBRdWV1ZS50XG4gIDsgKCogW3NpemVfYnVkZ2V0XSBnb3Zlcm5zIHB1c2hiYWNrIG9uIHdyaXRlcnMgdG8gdGhlIHBpcGUuXG5cbiAgICAgICBUaGVyZSBpcyAqbm8qIGludmFyaWFudCB0aGF0IFtRdWV1ZS5sZW5ndGggYnVmZmVyIDw9IHNpemVfYnVkZ2V0XS5cbiAgICAgICBUaGVyZSBpcyBubyBoYXJkIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBjYW4gYmUgc3R1ZmZlZCBpbnRvIHRoZVxuICAgICAgIFtidWZmZXJdLiBUaGlzIGlzIGR1ZSB0byB0aGUgd2F5IHdlIGhhbmRsZSB3cml0ZXMuIFdoZW4gd2UgZG8gYSB3cml0ZSwgYWxsIG9mIHRoZVxuICAgICAgIHZhbHVlcyB3cml0dGVuIGFyZSBpbW1lZGlhdGVseSBlbnF1ZXVlZCBpbnRvIFtidWZmZXJdLiBBZnRlciB0aGUgd3JpdGUsIGlmXG4gICAgICAgW1F1ZXVlLmxlbmd0aCBidWZmZXIgPD0gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlciB3aWxsIGJlIG5vdGlmaWVkIHRvXG4gICAgICAgY29udGludWUgd3JpdGluZy4gQWZ0ZXIgdGhlIHdyaXRlLCBpZiBbbGVuZ3RoIHQgPiB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGVcbiAgICAgICB3aWxsIGJsb2NrIHVudGlsIHRoZSBwaXBlIGlzIHVuZGVyIGJ1ZGdldC4gKilcbiAgICBtdXRhYmxlIHNpemVfYnVkZ2V0IDogaW50XG4gIDsgKCogW3Jlc2VydmVkX3NwYWNlXSBjb3VudHMgYWdhaW5zdCBbc2l6ZV9idWRnZXRdIHdpdGhvdXQgYWN0dWFsbHkgYnVmZmVyaW5nIGFueXRoaW5nXG4gICAgICAgeWV0LiBXaGVuIGl0J3MgcG9zaXRpdmUsIHdyaXRlcyBkZWNyZW1lbnQgaXQuICopXG4gICAgbXV0YWJsZSByZXNlcnZlZF9zcGFjZSA6IGludFxuICA7ICgqIFtwdXNoYmFja10gaXMgdXNlZCB0byBnaXZlIGZlZWRiYWNrIHRvIHdyaXRlcnMgYWJvdXQgd2hldGhlciB0aGV5IHNob3VsZCB3cml0ZSB0b1xuICAgICAgIHRoZSBwaXBlLiBbcHVzaGJhY2tdIGlzIGZ1bGwgaWZmIFtsZW5ndGggdCArIHJlc2VydmVkX3NwYWNlIHQgPD0gdC5zaXplX2J1ZGdldCB8fFxuICAgICAgIGlzX2Nsb3NlZCB0XS4gKilcbiAgICBtdXRhYmxlIHB1c2hiYWNrIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbbnVtX3ZhbHVlc19yZWFkXSBrZWVwcyB0cmFjayBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIHZhbHVlcyB0aGF0IGhhdmUgYmVlbiByZWFkXG4gICAgICAgZnJvbSB0aGUgcGlwZS4gIFdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IG92ZXJmbG93IGluIFtudW1fdmFsdWVzX3JlYWRdLiAgWW91J2RcbiAgICAgICBuZWVkIHRvIHdyaXRlIDJeNjIgZWxlbWVudHMgdG8gdGhlIHBpcGUsIHdoaWNoIHdvdWxkIHRha2UgYWJvdXQgMTQ2IHllYXJzLCBhdCBhXG4gICAgICAgZmxvdyByYXRlIG9mIDEgc2l6ZS11bml0L25hbm9zZWNvbmQuICopXG4gICAgbXV0YWJsZSBudW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgKCogW2Jsb2NrZWRfZmx1c2hlc10gaG9sZHMgZmx1c2hlcyB3aG9zZSBwcmVjZWRpbmcgZWxlbWVudHMgaGF2ZSBub3QgYmVlbiBjb21wbGV0ZWx5XG4gICAgIHJlYWQuICBGb3IgZWFjaCBibG9ja2VkIGZsdXNoLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBiZSByZWFkIGZyb20gdGhlXG4gICAgIHBpcGUgaW4gb3JkZXIgdG8gZmlsbCB0aGUgZmx1c2ggaXMgICAgICAgICAgICAgICAgICAgICAgICA6XG5cbiAgICAgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCAtIG51bV92YWx1ZXNfcmVhZFxuXG4gICAgIEtlZXBpbmcgdGhlIGRhdGEgaW4gdGhpcyBmb3JtIGFsbG93cyB1cyB0byBjaGFuZ2UgYSBzaW5nbGUgZmllbGQobnVtX3ZhbHVlc19yZWFkKVxuICAgICB3aGVuIHdlIGNvbnN1bWUgdmFsdWVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgcXVldWUgb2ZcbiAgICAgZmx1c2hlcy4gKilcbiAgOyBibG9ja2VkX2ZsdXNoZXMgOiBCbG9ja2VkX2ZsdXNoLnQgUXVldWUudFxuICA7ICgqIFtibG9ja2VkX3JlYWRzXSBob2xkcyByZWFkcyB0aGF0IGFyZSB3YWl0aW5nIG9uIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgcGlwZS4gKilcbiAgICBibG9ja2VkX3JlYWRzIDogJ2EgQmxvY2tlZF9yZWFkLnQgUXVldWUudFxuICA7ICgqIFtjbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUuICopXG4gICAgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbcmVhZF9jbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSByZWFkIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICByZWFkX2Nsb3NlZCA6IHVuaXQgSXZhci50XG4gIDsgKCogW2NvbnN1bWVyc10gaXMgYSBsaXN0IG9mIGFsbCBjb25zdW1lcnMgdGhhdCBtYXkgYmUgaGFuZGxpbmcgdmFsdWVzIHJlYWQgZnJvbSB0aGVcbiAgICAgICBwaXBlLiAqKVxuICAgIG11dGFibGUgY29uc3VtZXJzIDogQ29uc3VtZXIudCBsaXN0XG4gIDsgKCogW3Vwc3RyZWFtX2ZsdXNoZWRzXSBoYXMgYSBmdW5jdGlvbiBmb3IgZWFjaCBwaXBlIGltbWVkaWF0ZWx5IHVwc3RyZWFtIG9mIHRoaXMgb25lLlxuICAgICAgIFRoYXQgZnVuY3Rpb24gd2Fsa3MgdG8gdGhlIGhlYWQocykgb2YgdGhlIHVwc3RyZWFtIHBpcGUsIGFuZCBjYWxsc1xuICAgICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdIG9uIHRoZSBoZWFkKHMpLiAgU2VlIHRoZSBkZWZpbml0aW9uIG9mIFt1cHN0cmVhbV9mbHVzaGVkXVxuICAgICAgIGJlbG93LiAqKVxuICAgIHVwc3RyZWFtX2ZsdXNoZWRzIDogKHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KSBCYWcudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCA9IHQuc2l6ZV9idWRnZXQgLSB0LnJlc2VydmVkX3NwYWNlXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgcGlwZSA9ICgnYSwgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCB0LmlkXG5sZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IGNvbXBhcmUgdDEgdDIgPSBJbnQuY29tcGFyZSB0MS5pZCB0Mi5pZFxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2VkXG5sZXQgaXNfcmVhZF9jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnJlYWRfY2xvc2VkXG5sZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcbmxldCBwdXNoYmFjayB0ID0gSXZhci5yZWFkIHQucHVzaGJhY2tcbmxldCBsZW5ndGggdCA9IFF1ZXVlLmxlbmd0aCB0LmJ1ZmZlclxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbmxldCB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhID0gdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyBkZWx0YVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmluZm86aWdub3JlXG4gICAgICB+YnVmZmVyOmlnbm9yZVxuICAgICAgfnNpemVfYnVkZ2V0OihjaGVjayAoZnVuIHNpemVfYnVkZ2V0IC0+IGFzc2VydCAoc2l6ZV9idWRnZXQgPj0gMCkpKVxuICAgICAgfnJlc2VydmVkX3NwYWNlOihjaGVjayAoZnVuIHJlc2VydmVkX3NwYWNlIC0+IGFzc2VydCAocmVzZXJ2ZWRfc3BhY2UgPj0gMCkpKVxuICAgICAgfnB1c2hiYWNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBwdXNoYmFjayAtPlxuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEJvb2wuZXF1YWxcbiAgICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgcHVzaGJhY2spXG4gICAgICAgICAgICAgICAobGVuZ3RoIHQgPD0gZWZmZWN0aXZlX3NpemVfYnVkZ2V0IHQgfHwgaXNfY2xvc2VkIHQpKSkpXG4gICAgICB+bnVtX3ZhbHVlc19yZWFkOmlnbm9yZVxuICAgICAgfmJsb2NrZWRfZmx1c2hlczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9mbHVzaGVzIC0+XG4gICAgICAgICAgIFF1ZXVlLml0ZXIgYmxvY2tlZF9mbHVzaGVzIH5mOihmdW4gKGYgOiBCbG9ja2VkX2ZsdXNoLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChmLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPiB0Lm51bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIExpc3QuaXNfc29ydGVkXG4gICAgICAgICAgICAgICB+Y29tcGFyZTpJbnQuY29tcGFyZVxuICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoUXVldWUudG9fbGlzdCBibG9ja2VkX2ZsdXNoZXMpXG4gICAgICAgICAgICAgICAgICB+ZjpCbG9ja2VkX2ZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQpKTtcbiAgICAgICAgICAgaWYgaXNfZW1wdHkgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9mbHVzaGVzKSkpXG4gICAgICB+YmxvY2tlZF9yZWFkczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9yZWFkcyAtPlxuICAgICAgICAgICAoKiBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgbm8gb25lIGlzIHdhaXRpbmcgZm9yIGl0LiAgVGhpcyB3b3VsZCBuZWVkIHRvIGNoYW5nZSBpZlxuICAgICAgICAgICAgICB3ZSBldmVyIGltcGxlbWVudCBbcmVhZF9leGFjdGx5XSBhcyBhbiBhdG9taWMgb3BlcmF0aW9uLiAqKVxuICAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKTtcbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX3JlYWRzIH5mOihmdW4gcmVhZCAtPlxuICAgICAgICAgICAgIEJsb2NrZWRfcmVhZC5pbnZhcmlhbnQgcmVhZDtcbiAgICAgICAgICAgICBhc3NlcnQgKEJsb2NrZWRfcmVhZC5pc19lbXB0eSByZWFkKSk7XG4gICAgICAgICAgICgqIFlvdSBuZXZlciBibG9jayB0cnlpbmcgdG8gcmVhZCBhIGNsb3NlZCBwaXBlLiAqKVxuICAgICAgICAgICBpZiBpc19jbG9zZWQgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9yZWFkcykpKVxuICAgICAgfmNsb3NlZDppZ25vcmVcbiAgICAgIH5yZWFkX2Nsb3NlZDppZ25vcmVcbiAgICAgIH5jb25zdW1lcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGwgLT5cbiAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biBjb25zdW1lciAtPlxuICAgICAgICAgICAgIENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcjtcbiAgICAgICAgICAgICBhc3NlcnQgKENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXIgPSB0LmlkKSkpKVxuICAgICAgfnVwc3RyZWFtX2ZsdXNoZWRzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiAoXywgXykgdCldXG47O1xuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlIHBoYW50b20gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSB0ID0gKCdhLCBwaGFudG9tKSBwaXBlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuZW5kXG5cbmxldCBpZF9yZWYgPSByZWYgMFxuXG5sZXQgY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXIgPVxuICBpbmNyIGlkX3JlZjtcbiAgbGV0IHQgPVxuICAgIHsgaWQgPSAhaWRfcmVmXG4gICAgOyBpbmZvXG4gICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgcmVhZF9jbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDtcbiAgICAgIHNpemVfYnVkZ2V0XG4gICAgOyByZXNlcnZlZF9zcGFjZSA9IDBcbiAgICA7IHB1c2hiYWNrID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGJ1ZmZlciA9IGluaXRpYWxfYnVmZmVyXG4gICAgOyBudW1fdmFsdWVzX3JlYWQgPSAwXG4gICAgOyBibG9ja2VkX2ZsdXNoZXMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGJsb2NrZWRfcmVhZHMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGNvbnN1bWVycyA9IFtdXG4gICAgOyB1cHN0cmVhbV9mbHVzaGVkcyA9IEJhZy5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCA9XG4gIGlmIHNpemVfYnVkZ2V0IDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwibmVnYXRpdmUgc2l6ZV9idWRnZXRcIiAoc2l6ZV9idWRnZXQgOiBpbnQpXVxuICBlbHNlIHNpemVfYnVkZ2V0XG47O1xuXG5sZXQgY3JlYXRlID9zaXplX2J1ZGdldCA/aW5mbyAoKSA9XG4gIGxldCBzaXplX2J1ZGdldCA9XG4gICAgbWF0Y2ggc2l6ZV9idWRnZXQgd2l0aFxuICAgIHwgU29tZSB2IC0+IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHZcbiAgICB8IE5vbmUgLT4gMFxuICBpblxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQgfmluZm8gfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5jcmVhdGUgKCkpIGluXG4gICgqIGluaXRpYWxseSwgdGhlIHBpcGUgZG9lcyBub3QgcHVzaGJhY2sgKilcbiAgSXZhci5maWxsIHQucHVzaGJhY2sgKCk7XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgdCwgdFxuOztcblxubGV0IHVwZGF0ZV9wdXNoYmFjayB0ID1cbiAgaWYgbGVuZ3RoIHQgPD0gZWZmZWN0aXZlX3NpemVfYnVkZ2V0IHQgfHwgaXNfY2xvc2VkIHRcbiAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgdC5wdXNoYmFjayAoKVxuICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LnB1c2hiYWNrXG4gIHRoZW4gdC5wdXNoYmFjayA8LSBJdmFyLmNyZWF0ZSAoKVxuOztcblxubGV0IGNsb3NlIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIChcbiAgICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX3JlYWRzIH5mOkJsb2NrZWRfcmVhZC5maWxsX3dpdGhfZW9mO1xuICAgICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdClcbjs7XG5cbmxldCBjbG9zZV9yZWFkIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZV9yZWFkXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX3JlYWRfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIEl2YXIuZmlsbCB0LnJlYWRfY2xvc2VkICgpO1xuICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biBmbHVzaCAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYFJlYWRlcl9jbG9zZWQpO1xuICAgIFF1ZXVlLmNsZWFyIHQuYmxvY2tlZF9mbHVzaGVzO1xuICAgIFF1ZXVlLmNsZWFyIHQuYnVmZmVyO1xuICAgIHQucmVzZXJ2ZWRfc3BhY2UgPC0gMDtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICAoKiB3ZSBqdXN0IGNsZWFyZWQgdGhlIGJ1ZmZlciwgc28gbWF5IG5lZWQgdG8gZmlsbCBbdC5wdXNoYmFja10gKilcbiAgICBjbG9zZSB0KVxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiA/c2l6ZV9idWRnZXQgZiA9XG4gIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICB1cG9uIChmIHcpIChmdW4gKCkgLT4gY2xvc2Ugdyk7XG4gIHJcbjs7XG5cbmxldCBjcmVhdGVfcmVhZGVyID9zaXplX2J1ZGdldCB+Y2xvc2Vfb25fZXhjZXB0aW9uIGYgPVxuICBpZiBub3QgY2xvc2Vfb25fZXhjZXB0aW9uXG4gIHRoZW4gY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmXG4gIGVsc2UgKFxuICAgIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgICAoZnVuICgpIC0+IGYgdylcbiAgICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgICAgY2xvc2UgdztcbiAgICAgICAgICAgcmV0dXJuICgpKSk7XG4gICAgcilcbjs7XG5cbmxldCBjcmVhdGVfd3JpdGVyID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgIChmdW4gKCkgLT4gZiByKVxuICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgIGNsb3NlX3JlYWQgcjtcbiAgICAgICAgIHJldHVybiAoKSkpO1xuICB3XG47O1xuXG5sZXQgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyID1cbiAgT3B0aW9uLml0ZXIgY29uc3VtZXIgfmY6Q29uc3VtZXIuc3RhcnQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggUXVldWUucGVlayB0LmJsb2NrZWRfZmx1c2hlcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGZsdXNoIC0+XG4gICAgICBpZiB0Lm51bV92YWx1ZXNfcmVhZCA+PSBmbHVzaC5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXG4gICAgICB0aGVuIChcbiAgICAgICAgaWdub3JlIChRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCk7XG4gICAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGBPa1xuICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+XG4gICAgICAgICAgIHVwb25cbiAgICAgICAgICAgICAoQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCBjb25zdW1lcilcbiAgICAgICAgICAgICAoZnVuIGZsdXNoX3Jlc3VsdCAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggZmx1c2hfcmVzdWx0KSk7XG4gICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG5cbigqIFtjb25zdW1lX2FsbCB0XSByZWFkcyBhbGwgdGhlIGVsZW1lbnRzIGluIFt0XS4gKilcbmxldCBjb25zdW1lX2FsbCB0IGNvbnN1bWVyID1cbiAgbGV0IHJlc3VsdCA9IHQuYnVmZmVyIGluXG4gIHQuYnVmZmVyIDwtIFF1ZXVlLmNyZWF0ZSAoKTtcbiAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YTooUXVldWUubGVuZ3RoIHJlc3VsdCk7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWVfb25lIHQgY29uc3VtZXIgPVxuICBhc3NlcnQgKGxlbmd0aCB0ID49IDEpO1xuICBsZXQgcmVzdWx0ID0gUXVldWUuZGVxdWV1ZV9leG4gdC5idWZmZXIgaW5cbiAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YToxO1xuICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICByZXN1bHRcbjs7XG5cbmxldCBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIgPVxuICBhc3NlcnQgKG1heF9xdWV1ZV9sZW5ndGggPj0gMCk7XG4gIGlmIG1heF9xdWV1ZV9sZW5ndGggPj0gbGVuZ3RoIHRcbiAgdGhlbiBjb25zdW1lX2FsbCB0IGNvbnN1bWVyXG4gIGVsc2UgKFxuICAgIHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGE6bWF4X3F1ZXVlX2xlbmd0aDtcbiAgICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSB+Y2FwYWNpdHk6bWF4X3F1ZXVlX2xlbmd0aCAoKSBpblxuICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzp0LmJ1ZmZlciB+ZHN0OnJlc3VsdCB+bGVuOm1heF9xdWV1ZV9sZW5ndGggKCk7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gICAgcmVzdWx0KVxuOztcblxubGV0IHNldF9zaXplX2J1ZGdldCB0IHNpemVfYnVkZ2V0ID1cbiAgbGV0IHNpemVfYnVkZ2V0ID0gdmFsaWRhdGVfc2l6ZV9idWRnZXQgc2l6ZV9idWRnZXQgaW5cbiAgdC5zaXplX2J1ZGdldCA8LSBzaXplX2J1ZGdldDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCByZXNlcnZlX3NwYWNlIHQgbiA9XG4gIGlmIG4gPCAwIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJyZXNlcnZpbmcgbmVnYXRpdmUgc3BhY2VcIiAobiA6IGludCldO1xuICBsZXQgcmVzZXJ2ZWRfc3BhY2UgPSB0LnJlc2VydmVkX3NwYWNlICsgbiBpblxuICBpZiByZXNlcnZlZF9zcGFjZSA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwib3ZlcmZsb3cgd2hlbiByZXNlcnZpbmcgc3BhY2VcIiAodC5yZXNlcnZlZF9zcGFjZSA6IGludCkgKG4gOiBpbnQpXTtcbiAgdC5yZXNlcnZlZF9zcGFjZSA8LSByZXNlcnZlZF9zcGFjZTtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCBmaWxsX2Jsb2NrZWRfcmVhZHMgdCA9XG4gIHdoaWxlIChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcykpICYmIG5vdCAoaXNfZW1wdHkgdCkgZG9cbiAgICBsZXQgYmxvY2tlZF9yZWFkID0gUXVldWUuZGVxdWV1ZV9leG4gdC5ibG9ja2VkX3JlYWRzIGluXG4gICAgbGV0IGNvbnN1bWVyID0gYmxvY2tlZF9yZWFkLmNvbnN1bWVyIGluXG4gICAgbWF0Y2ggYmxvY2tlZF9yZWFkLndhbnRzIHdpdGhcbiAgICB8IFplcm8gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBgT2tcbiAgICB8IE9uZSBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIChgT2sgKGNvbnN1bWVfb25lIHQgY29uc3VtZXIpKVxuICAgIHwgQXRfbW9zdCAobWF4X3F1ZXVlX2xlbmd0aCwgaXZhcikgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyIChgT2sgKGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lcikpXG4gIGRvbmVcbjs7XG5cbmxldCBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB0IG4gPSB0LnJlc2VydmVkX3NwYWNlIDwtIEludC5tYXggMCAodC5yZXNlcnZlZF9zcGFjZSAtIG4pXG5cbigqIGNoZWNrcyBhbGwgaW52YXJpYW50cywgY2FsbHMgYSBwYXNzZWQgaW4gZiB0byBoYW5kbGUgYSB3cml0ZSwgdGhlbiB1cGRhdGVzIHJlYWRzIGFuZFxuICAgcHVzaGJhY2sgKilcbmxldCBzdGFydF93cml0ZSB0IH5zaXplID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIFwid3JpdGVcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ3cml0ZSB0byBjbG9zZWQgcGlwZVwiIH5waXBlOih0IDogKF8sIF8pIHQpXTtcbiAgZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2UgdCBzaXplXG47O1xuXG5sZXQgZmluaXNoX3dyaXRlIHQgPVxuICBmaWxsX2Jsb2NrZWRfcmVhZHMgdDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0IH5zaXplOihRdWV1ZS5sZW5ndGggZnJvbSk7XG4gIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpmcm9tIH5kc3Q6dC5idWZmZXIgKCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgdHJhbnNmZXJfaW4gdCB+ZnJvbSA9XG4gIHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tID1cbiAgc3RhcnRfd3JpdGUgdCB+c2l6ZTooUXVldWUubGVuZ3RoIGZyb20pO1xuICBRdWV1ZS5pdGVyIGZyb20gfmY6KGZ1biB4IC0+IFF1ZXVlLmVucXVldWUgdC5idWZmZXIgeCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG4oKiBbd3JpdGUnXSBpcyB1c2VkIGludGVybmFsbHkgKilcbmxldCB3cml0ZScgdCBxID0gdHJhbnNmZXJfaW4gdCB+ZnJvbTpxXG5cbmxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgdmFsdWUgPVxuICBzdGFydF93cml0ZSB0IH5zaXplOjE7XG4gIFF1ZXVlLmVucXVldWUgdC5idWZmZXIgdmFsdWU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUgdCB2YWx1ZSA9XG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IHdyaXRlX3doZW5fcmVhZHkgdCB+ZiA9XG4gIGxldCVtYXAgKCkgPSBwdXNoYmFjayB0IGluXG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYENsb3NlZCBlbHNlIGBPayAoZiAoZnVuIHggLT4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHgpKVxuOztcblxubGV0IHdyaXRlX2lmX29wZW4gdCB4ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiB3cml0ZSB0IHggZWxzZSByZXR1cm4gKClcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiB0IHggPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4XG47O1xuXG5sZXQgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgP2NvbnN1bWVyIHQgPVxuICBtYXRjaCBjb25zdW1lciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICBpZiB0LmlkIDw+IENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQXR0ZW1wdCB0byB1c2UgY29uc3VtZXIgd2l0aCB3cm9uZyBwaXBlXCJcbiAgICAgICAgICAgIChjb25zdW1lciA6IENvbnN1bWVyLnQpXG4gICAgICAgICAgICB+cGlwZToodCA6IF8gUmVhZGVyLnQpXVxuOztcblxubGV0IHN0YXJ0X3JlYWQgP2NvbnN1bWVyIHQgbGFiZWwgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgbGFiZWwgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lclxuOztcblxubGV0IGdlbl9yZWFkX25vdyA/Y29uc3VtZXIgdCBjb25zdW1lID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9ub3dcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpZiBpc19jbG9zZWQgdCB0aGVuIGBFb2YgZWxzZSBgTm90aGluZ19hdmFpbGFibGVcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgICgqIGZyb20gW2ludmFyaWFudF0gYW5kIFtub3QgKGlzX2VtcHR5IHQpXSAqKVxuICAgIGBPayAoY29uc3VtZSB0IGNvbnN1bWVyKSlcbjs7XG5cbmxldCBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCA9XG4gIG1hdGNoIG1heF9xdWV1ZV9sZW5ndGggd2l0aFxuICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICB8IFNvbWUgbWF4X3F1ZXVlX2xlbmd0aCAtPlxuICAgIGlmIG1heF9xdWV1ZV9sZW5ndGggPD0gMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJtYXhfcXVldWVfbGVuZ3RoIDw9IDBcIiAobWF4X3F1ZXVlX2xlbmd0aCA6IGludCldO1xuICAgIG1heF9xdWV1ZV9sZW5ndGhcbjs7XG5cbmxldCByZWFkX25vdycgP2NvbnN1bWVyID9tYXhfcXVldWVfbGVuZ3RoIHQgPVxuICBsZXQgbWF4X3F1ZXVlX2xlbmd0aCA9IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoIGluXG4gIGdlbl9yZWFkX25vdyB0ID9jb25zdW1lciAoZnVuIHQgY29uc3VtZXIgLT4gY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKVxuOztcblxubGV0IHJlYWRfbm93ID9jb25zdW1lciB0ID0gZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIGNvbnN1bWVfb25lXG5sZXQgcGVlayB0ID0gUXVldWUucGVlayB0LmJ1ZmZlclxuXG5sZXQgY2xlYXIgdCA9XG4gIG1hdGNoIHJlYWRfbm93JyB0IHdpdGhcbiAgfCBgRW9mIHwgYE5vdGhpbmdfYXZhaWxhYmxlIHwgYE9rIF8gLT4gKClcbjs7XG5cbmxldCByZWFkJyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgc3RhcnRfcmVhZCB0IFwicmVhZCdcIiA/Y29uc3VtZXI7XG4gIG1hdGNoIHJlYWRfbm93JyB0ID9jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgKGBPayBfIHwgYEVvZikgYXMgciAtPiByZXR1cm4gclxuICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgIFF1ZXVlLmVucXVldWVcbiAgICAgICAgdC5ibG9ja2VkX3JlYWRzXG4gICAgICAgIChCbG9ja2VkX3JlYWQuY3JlYXRlIChBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSkgY29uc3VtZXIpKVxuOztcblxubGV0IHJlYWQgP2NvbnN1bWVyIHQgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkXCIgP2NvbnN1bWVyO1xuICBpZiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBpZiBpc19jbG9zZWQgdFxuICAgIHRoZW4gcmV0dXJuIGBFb2ZcbiAgICBlbHNlXG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIFF1ZXVlLmVucXVldWUgdC5ibG9ja2VkX3JlYWRzIChCbG9ja2VkX3JlYWQuKGNyZWF0ZSAoT25lIGl2YXIpKSBjb25zdW1lcikpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICByZXR1cm4gKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpKVxuOztcblxubGV0IHJlYWRfZXhuID9jb25zdW1lciB0ID1cbiAgbWF0Y2glbWFwIHJlYWQgP2NvbnN1bWVyIHQgd2l0aFxuICB8IGBPayB2YWx1ZSAtPiB2YWx1ZVxuICB8IGBFb2YgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhuOiByZWNlaXZlZCBFT0ZcIl1cbjs7XG5cbmxldCB2YWx1ZXNfYXZhaWxhYmxlIHQgPVxuICBzdGFydF9yZWFkIHQgXCJ2YWx1ZXNfYXZhaWxhYmxlXCI7XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiByZXR1cm4gYE9rXG4gIGVsc2UgaWYgaXNfY2xvc2VkIHRcbiAgdGhlbiByZXR1cm4gYEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBRdWV1ZS5sYXN0IHQuYmxvY2tlZF9yZWFkcyB3aXRoXG4gICAgfCBTb21lIHsgY29uc3VtZXIgPSBOb25lOyB3YW50cyA9IFplcm8gaXZhciB9IC0+XG4gICAgICAoKiBUaGlzIGNhc2UgaXMgYW4gb3B0aW1pemF0aW9uIGZvciBtdWx0aXBsZSBjYWxscyB0byBbdmFsdWVzX2F2YWlsYWJsZV0gaW5cbiAgICAgICAgIHNlcXVlbmNlLiAgSXQgY2F1c2VzIHRoZW0gdG8gYWxsIHNoYXJlIHRoZSBzYW1lIGl2YXIsIHJhdGhlciB0aGFuIGFsbG9jYXRlXG4gICAgICAgICBhbiBpdmFyIHBlciBjYWxsLiAqKVxuICAgICAgSXZhci5yZWFkIGl2YXJcbiAgICB8IF8gLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChaZXJvIGl2YXIpKSBOb25lKSkpXG47O1xuXG5sZXQgcmVhZF9jaG9pY2UgdCA9IGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSB0KSAoZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+IHJlYWRfbm93IHQpXG5cbmxldCByZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXhuIHQgaGVyZSA9XG4gIERlZmVycmVkLkNob2ljZS5tYXAgKHJlYWRfY2hvaWNlIHQpIH5mOihmdW5jdGlvblxuICAgIHwgKGBPayBfIHwgYEVvZikgYXMgeCAtPiB4XG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJQaXBlLnJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG46IGNob2ljZSB3YXMgZW5hYmxlZCBidXQgcGlwZSBpcyBlbXB0eTsgXFxcbiAgICAgICAgICAgdGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgcmFjZSBjb25kaXRpb24gd2l0aCBvbmUgb3IgbW9yZSBvdGhlciBjb25zdW1lcnNcIlxuICAgICAgICAgICAgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV0pXG47O1xuXG4oKiBbcmVhZF9leGFjdGx5IHQgfm51bV92YWx1ZXNdIGxvb3BzLCBnZXR0aW5nIHlvdSBhbGwgW251bV92YWx1ZXNdIGl0ZW1zLCB1cFxuICAgdG8gRU9GLiAqKVxubGV0IHJlYWRfZXhhY3RseSA/Y29uc3VtZXIgdCB+bnVtX3ZhbHVlcyA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRfZXhhY3RseVwiID9jb25zdW1lcjtcbiAgaWYgbnVtX3ZhbHVlcyA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhhY3RseSBnb3QgbnVtX3ZhbHVlcyA8PSAwXCIgKG51bV92YWx1ZXMgOiBpbnQpXTtcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoIC0+XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBsZXQgYWxyZWFkeV9yZWFkID0gUXVldWUubGVuZ3RoIHJlc3VsdCBpblxuICAgICAgYXNzZXJ0IChhbHJlYWR5X3JlYWQgPD0gbnVtX3ZhbHVlcyk7XG4gICAgICBpZiBhbHJlYWR5X3JlYWQgPSBudW1fdmFsdWVzXG4gICAgICB0aGVuIEl2YXIuZmlsbCBmaW5pc2ggKGBFeGFjdGx5IHJlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCcgP2NvbnN1bWVyIHQgfm1heF9xdWV1ZV9sZW5ndGg6KG51bV92YWx1ZXMgLSBhbHJlYWR5X3JlYWQpXG4gICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaCAoaWYgYWxyZWFkeV9yZWFkID0gMCB0aGVuIGBFb2YgZWxzZSBgRmV3ZXIgcmVzdWx0KVxuICAgICAgICB8IGBPayBxIC0+XG4gICAgICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCBkb3duc3RyZWFtX2ZsdXNoZWQgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIExpc3QuaXNfZW1wdHkgdC5jb25zdW1lcnNcbiAgICB0aGVuIHJldHVybiBgT2tcbiAgICBlbHNlXG4gICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIChMaXN0Lm1hcCB0LmNvbnN1bWVycyB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkKVxuICBlbHNlXG4gICAgKCogW3RdIG1pZ2h0IGJlIGNsb3NlZC4gIEJ1dCB0aGUgcmVhZCBlbmQgY2FuJ3QgYmUgY2xvc2VkLCBiZWNhdXNlIGlmIGl0IHdlcmUsIHRoZW5cbiAgICAgICBbdF0gd291bGQgYmUgZW1wdHkuICBJZiB0aGUgd3JpdGUgZW5kIGlzIGNsb3NlZCBidXQgbm90IHRoZSByZWFkIGVuZCwgdGhlbiB3ZSB3YW50XG4gICAgICAgdG8gZW5xdWV1ZSBhIGJsb2NrZWQgZmx1c2ggYmVjYXVzZSB0aGUgZW5xdWV1ZWQgdmFsdWVzIG1heSBnZXQgcmVhZC4gKilcbiAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZWFkeSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfZmx1c2hlc1xuICAgICAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPSB0Lm51bV92YWx1ZXNfcmVhZCArIGxlbmd0aCB0OyByZWFkeSB9KVxuOztcblxuKCogSW4gcHJhY3RpY2UsIGFsb25nIHdpdGggW0xpbmsuY3JlYXRlXSBhbmQgW2FkZF91cHN0cmVhbV9mbHVzaGVkXSwgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICB0cmF2ZXJzZXMgdGhlIGdyYXBoIG9mIGxpbmtlZCBwaXBlcyB1cCB0byB0aGUgaGVhZHMgYW5kIHRoZW4gY2FsbHMgW2Rvd25zdHJlYW1fZmx1c2hlZF1cbiAgIG9uIHRoZW0uICopXG5sZXQgdXBzdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgQmFnLmlzX2VtcHR5IHQudXBzdHJlYW1fZmx1c2hlZHNcbiAgdGhlbiBkb3duc3RyZWFtX2ZsdXNoZWQgdFxuICBlbHNlXG4gICAgQmFnLnRvX2xpc3QgdC51cHN0cmVhbV9mbHVzaGVkc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gZiAtPiBmICgpKVxuICAgIHw+IEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbjs7XG5cbmxldCBhZGRfdXBzdHJlYW1fZmx1c2hlZCB0IHVwc3RyZWFtX2ZsdXNoZWQgPSBCYWcuYWRkIHQudXBzdHJlYW1fZmx1c2hlZHMgdXBzdHJlYW1fZmx1c2hlZFxuXG5sZXQgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZCA9XG4gIGxldCBjb25zdW1lciA9IENvbnN1bWVyLmNyZWF0ZSB+cGlwZV9pZDp0LmlkIH5kb3duc3RyZWFtX2ZsdXNoZWQgaW5cbiAgdC5jb25zdW1lcnMgPC0gY29uc3VtZXIgOjogdC5jb25zdW1lcnM7XG4gIGNvbnN1bWVyXG47O1xuXG4oKiBBIFtMaW5rLnRdIGxpbmtzIGZsdXNoaW5nIG9mIHR3byBwaXBlcyB0b2dldGhlci4gKilcbm1vZHVsZSBMaW5rIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1cHN0cmVhbTooXywgXykgcGlwZSAtPiBkb3duc3RyZWFtOihfLCBfKSBwaXBlIC0+IHRcbiAgdmFsIGNvbnN1bWVyIDogdCAtPiBDb25zdW1lci50XG5cbiAgKCogW3VubGlua191cHN0cmVhbV0gcmVtb3ZlcyBkb3duc3RyZWFtJ3MgcmVmZXJlbmNlIHRvIHVwc3RyZWFtLiAqKVxuXG4gIHZhbCB1bmxpbmtfdXBzdHJlYW0gOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHVucGFja2VkID1cbiAgICB7IGRvd25zdHJlYW0gOiAoJ2EsICdiKSB0XG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnRcbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy5FbHQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogKF8sIF8pIHVucGFja2VkIC0+IHRcblxuICBsZXQgY29uc3VtZXIgKFQgdCkgPSB0LmNvbnN1bWVyXG5cbiAgbGV0IGNyZWF0ZSB+dXBzdHJlYW0gfmRvd25zdHJlYW0gPVxuICAgIFRcbiAgICAgIHsgZG93bnN0cmVhbVxuICAgICAgOyBjb25zdW1lciA9XG4gICAgICAgICAgYWRkX2NvbnN1bWVyIHVwc3RyZWFtIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0pXG4gICAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgPVxuICAgICAgICAgIGFkZF91cHN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0gKGZ1biAoKSAtPiB1cHN0cmVhbV9mbHVzaGVkIHVwc3RyZWFtKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCB1bmxpbmtfdXBzdHJlYW0gKFQgdCkgPVxuICAgIEJhZy5yZW1vdmUgdC5kb3duc3RyZWFtLnVwc3RyZWFtX2ZsdXNoZWRzIHQudXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbHVzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb25zdW1lciBvZiBDb25zdW1lci50XG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZFxuICAgIHwgV2hlbl92YWx1ZV9yZWFkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGZvbGRfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICA/KGZsdXNoZWQgPSBGbHVzaGVkLldoZW5fdmFsdWVfcmVhZClcbiAgICAgIHRcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA9XG4gIGxldCBjb25zdW1lciA9XG4gICAgbWF0Y2ggZmx1c2hlZCB3aXRoXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWQgLT4gTm9uZVxuICAgIHwgQ29uc3VtZXIgY29uc3VtZXIgLT4gU29tZSBjb25zdW1lclxuICAgIHwgV2hlbl92YWx1ZV9wcm9jZXNzZWQgLT5cbiAgICAgICgqIFRoZSBmYWN0IHRoYXQgXCJubyBjb25zdW1lclwiIGJlaGF2ZXMgZGlmZmVyZW50IGZyb20gXCJ0cml2aWFsIGNvbnN1bWVyXCIgaXMgd2VpcmQsXG4gICAgICAgICBidXQgdGhhdCdzIGhvdyB0aGUgY29uc3VtZXIgbWFjaGluZXJ5IHdvcmtzLiAqKVxuICAgICAgU29tZSAoYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+IHJldHVybiBgT2spKVxuICBpblxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFt2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgICgqIFsxXSBGb3IgbmV3IGVtcHR5IHBpcGVzIGNyZWF0ZWQgYXQgdG9wLWxldmVsIHdlIHdhbnQgdG8gYXZvaWQgaW1tZWRpYXRlbHlcbiAgICAgICBzY2hlZHVsaW5nIGEgam9iIG9uIHRoZSBzY2hlZHVsZXIgKHNlZSBbU2NoZWR1bGVyLnJhaXNlX2lmX2FueV9qb2JzX3dlcmVfc2NoZWR1bGVkXSkuXG4gICAgICAgSnVzdCBbcmV0dXJuICgpID4+Pl0gZG9lc24ndCB3b3JrOiBbcmV0dXJuICgpXSBjcmVhdGVzIGEgZnVsbCBpdmFyIHRoYXQgY2F1c2VzXG4gICAgICAgWz4+Pl0gdG8gc2NoZWR1bGUgYSBqb2IuICopXG4gICAgdmFsdWVzX2F2YWlsYWJsZSB0XG4gICAgPj4+IGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPlxuICAgIGxldCByZWMgbG9vcCBiID1cbiAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgYlxuICAgICAgfCBgT2sgdiAtPiBmIGIgdiBjb250aW51ZVxuICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBsb29wIGJcbiAgICBhbmQgY29udGludWUgYiA9XG4gICAgICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtO1xuICAgICAgbG9vcCBiXG4gICAgaW5cbiAgICBsb29wIGluaXQpXG47O1xuXG5sZXQgZm9sZCcgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIHEgbG9vcCAtPlxuICAgIGYgYiBxID4+PiBsb29wKVxuOztcblxubGV0IGZvbGQgP2ZsdXNoZWQgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIGEgbG9vcCAtPiBmIGIgYSA+Pj4gbG9vcClcbjs7XG5cbmxldCBmb2xkX3dpdGhvdXRfcHVzaGJhY2sgP2NvbnN1bWVyIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlblxuICAgIHJlYWRfbm93XG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBiIGEgbG9vcCAtPiBsb29wIChmIGIgYSkpXG4gICAgP2ZsdXNoZWQ6XG4gICAgICAobWF0Y2ggY29uc3VtZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIGMgLT4gU29tZSAoQ29uc3VtZXIgYykpXG47O1xuXG5sZXQgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBmIGEgPVxuICBpZiBub3QgY29udGludWVfb25fZXJyb3JcbiAgdGhlbiBmIGFcbiAgZWxzZSAoXG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgKGZ1biAoKSAtPiBmIGEpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIChNb25pdG9yLmV4dHJhY3RfZXhuIGV4bikpXG47O1xuXG5sZXQgaXRlcicgP2NvbnRpbnVlX29uX2Vycm9yID9mbHVzaGVkID9tYXhfcXVldWVfbGVuZ3RoIHQgfmYgPVxuICBmb2xkJyA/bWF4X3F1ZXVlX2xlbmd0aCA/Zmx1c2hlZCB0IH5pbml0OigpIH5mOihmdW4gKCkgcSAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIHEpXG47O1xuXG5sZXQgaXRlciA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIGxvb3AgLT5cbiAgICB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/Y29udGludWVfb25fZXJyb3IgZiBhID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbjs7XG5cbigqIFtpdGVyX3dpdGhvdXRfcHVzaGJhY2tdIGlzIGEgY29tbW9uIGNhc2UsIHNvIHdlIGltcGxlbWVudCBpdCBpbiBhbiBvcHRpbWl6ZWQgbWFubmVyLFxuICAgcmF0aGVyIHRoYW4gdmlhIFtpdGVyXS4gIFRoZSBpbXBsZW1lbnRhdGlvbiByZWFkcyBvbmx5IG9uZSBlbGVtZW50IGF0IGEgdGltZSwgc28gdGhhdFxuICAgaWYgW2ZdIGNsb3NlcyBbdF0gb3IgcmFpc2VzLCBubyBtb3JlIGVsZW1lbnRzIHdpbGwgYmUgcmVhZC4gKilcbmxldCBpdGVyX3dpdGhvdXRfcHVzaGJhY2tcbiAgICAgID9jb25zdW1lclxuICAgICAgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKVxuICAgICAgP21heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICAgIHRcbiAgICAgIH5mXG4gID1cbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIGxldCBtYXhfaXRlcmF0aW9uc19wZXJfam9iID1cbiAgICBtYXRjaCBtYXhfaXRlcmF0aW9uc19wZXJfam9iIHdpdGhcbiAgICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgU29tZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iIC0+XG4gICAgICBpZiBtYXhfaXRlcmF0aW9uc19wZXJfam9iIDw9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJpdGVyX3dpdGhvdXRfcHVzaGJhY2sgZ290IG5vbi1wb3NpdGl2ZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iXCJcbiAgICAgICAgICAgICAgKG1heF9pdGVyYXRpb25zX3Blcl9qb2IgOiBpbnQpXTtcbiAgICAgIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgaW5cbiAgbGV0IGYgPVxuICAgIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gZlxuICAgIGVsc2VcbiAgICAgIGZ1biBhIC0+XG4gICAgICAgIHRyeSBmIGEgd2l0aFxuICAgICAgICB8IGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4blxuICBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFt2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgIHZhbHVlc19hdmFpbGFibGUgdFxuICAgID4+PiBmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT5cbiAgICBsZXQgcmVjIHN0YXJ0ICgpID0gbG9vcCB+cmVtYWluaW5nOm1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICBhbmQgbG9vcCB+cmVtYWluaW5nID1cbiAgICAgIGlmIHJlbWFpbmluZyA9IDBcbiAgICAgIHRoZW4gcmV0dXJuICgpID4+PiBmdW4gKCkgLT4gc3RhcnQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyB0ID9jb25zdW1lciB3aXRoXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgKClcbiAgICAgICAgfCBgT2sgYSAtPlxuICAgICAgICAgIGYgYTtcbiAgICAgICAgICBsb29wIH5yZW1haW5pbmc6KHJlbWFpbmluZyAtIDEpXG4gICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IHZhbHVlc19hdmFpbGFibGUgdCA+Pj4gZnVuIF8gLT4gc3RhcnQgKCkpXG4gICAgaW5cbiAgICBzdGFydCAoKSlcbjs7XG5cbmxldCBkcmFpbiB0ID0gaXRlcicgdCB+ZjooZnVuIF8gLT4gcmV0dXJuICgpKVxubGV0IGRyYWluX2FuZF9jb3VudCB0ID0gZm9sZCcgdCB+aW5pdDowIH5mOihmdW4gc3VtIHEgLT4gcmV0dXJuIChzdW0gKyBRdWV1ZS5sZW5ndGggcSkpXG5cbmxldCByZWFkX2FsbCBpbnB1dCA9XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0JW1hcCAoKSA9XG4gICAgaXRlcicgaW5wdXQgfmY6KGZ1biBxIC0+XG4gICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgcmVzdWx0XG47O1xuXG5sZXQgdG9fbGlzdCByID0gcmVhZF9hbGwgciA+PnwgUXVldWUudG9fbGlzdFxuXG5sZXQgdG9fc3RyZWFtX2RlcHJlY2F0ZWQgdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgaXRlcl93aXRob3V0X3B1c2hiYWNrIHQgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeClcbiAgICA+Pj4gZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG4oKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgW29mX3N0cmVhbV9kZXByZWNhdGVkXSBkb2VzIGFzIG11Y2ggYmF0Y2hpbmcgYXMgcG9zc2libGUuICBJdFxuICAgZ3JhYnMgYXMgbWFueSBpdGVtcyBhcyBhcmUgYXZhaWxhYmxlIGludG8gYW4gaW50ZXJuYWwgcXVldWUuICBPbmNlIGl0IGhhcyBncmFiYmVkXG4gICBldmVyeXRoaW5nLCBpdCB3cml0ZXMgaXQgdG8gdGhlIHBpcGUgYW5kIHRoZW4gYmxvY2tzIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGVsZW1lbnQgZnJvbVxuICAgdGhlIHN0cmVhbS5cblxuICAgVGhlcmUncyBubyBwb3NzaWJpbGl0eSB0aGF0IHdlJ2xsIHN0YXJ2ZSB0aGUgcGlwZSByZWFkaW5nIGFuIGVuZGxlc3Mgc3RyZWFtLCBqdXN0XG4gICBhY2N1bXVsYXRpbmcgdGhlIGVsZW1lbnRzIGludG8gb3VyIHByaXZhdGUgcXVldWUgZm9yZXZlciB3aXRob3V0IGV2ZXIgd3JpdGluZyB0aGVtXG4gICBkb3duc3RyZWFtIHRvIHRoZSBwaXBlLiAgV2h5PyBiZWNhdXNlIHdoaWxlIHdlJ3JlIHJ1bm5pbmcsIHRoZSBzdHJlYW0tcHJvZHVjZXIgKmlzbid0KlxuICAgcnVubmluZyAtLSB0aGVyZSBhcmUgbm8gQXN5bmMgYmxvY2sgcG9pbnRzIGluIHRoZSBxdWV1ZS1hY2N1bXVsYXRvciBsb29wLiAgU28gdGhlXG4gICBxdWV1ZS1hY2N1bXVsYXRvciBsb29wIHdpbGwgZXZlbnR1YWxseSBjYXRjaCB1cCB0byB0aGUgY3VycmVudCBzdHJlYW0gdGFpbCwgYXQgd2hpY2hcbiAgIHBvaW50IHdlJ2xsIGRvIHRoZSBwaXBlLXdyaXRlIGFuZCB0aGVuIGJsb2NrIG9uIHRoZSBzdHJlYW0uLi4gdGh1cyBnaXZpbmcgdGhlXG4gICBzdHJlYW0tcHJvZHVjZXIgYSBjaGFuY2UgdG8gbWFrZSBtb3JlIGVsZW1lbnRzLlxuXG4gICBPbmUgY2FuJ3QgaW1wbGVtZW50IFtvZl9zdHJlYW1dIHVzaW5nIFtTdHJlYW0uaXRlcl0gb3IgW1N0cmVhbS5pdGVyJ10gYmVjYXVzZSB5b3VcbiAgIG5lZWQgdG8gYmUgYWJsZSB0byBzdG9wIGVhcmx5IHdoZW4gdGhlIGNvbnN1bWVyIGNsb3NlcyB0aGUgcGlwZS4gIEFsc28sIHVzaW5nIGVpdGhlclxuICAgb2YgdGhvc2Ugd291bGQgZW50YWlsIHNpZ25pZmljYW50bHkgbW9yZSBkZWZlcnJlZCBvdmVyaGVhZCwgd2hlcmVhcyB0aGUgYmVsb3dcbiAgIGltcGxlbWVudGF0aW9uIHVzZXMgYSBkZWZlcnJlZCBvbmx5IHdoZW4gaXQgbmVlZHMgdG8gd2FpdCBmb3IgZGF0YSBmcm9tIHRoZSBzdHJlYW0uICopXG5sZXQgb2Zfc3RyZWFtX2RlcHJlY2F0ZWQgcyA9XG4gIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gIGxldCBxID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCB0cmFuc2ZlciAoKSA9XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSBxKVxuICAgIHRoZW5cbiAgICAgICgqIENhbiBub3QgcHVzaGJhY2sgb24gdGhlIHN0cmVhbSwgc28gaWdub3JlIHRoZSBwdXNoYmFjayBvbiB0aGUgcGlwZS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yICh3cml0ZScgdyBxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2Nsb3NlZCB3KSk7XG4gICAgbGV0IG5leHRfZGVmZXJyZWQgPSBTdHJlYW0ubmV4dCBzIGluXG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayBuZXh0X2RlZmVycmVkIHdpdGhcbiAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dFxuICAgIHwgTm9uZSAtPlxuICAgICAgdHJhbnNmZXIgKCk7XG4gICAgICB1cG9uIG5leHRfZGVmZXJyZWQgY2hlY2tfY2xvc2VkX2xvb3BfbmV4dFxuICBhbmQgY2hlY2tfY2xvc2VkX2xvb3BfbmV4dCBuZXh0ID0gaWYgbm90IChpc19jbG9zZWQgdykgdGhlbiBsb29wX25leHQgbmV4dFxuICBhbmQgbG9vcF9uZXh0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPlxuICAgICAgdHJhbnNmZXIgKCk7XG4gICAgICBjbG9zZSB3XG4gICAgfCBDb25zICh4LCBzKSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZSBxIHg7XG4gICAgICBsb29wIHNcbiAgaW5cbiAgbG9vcCBzO1xuICByXG47O1xuXG5sZXQgdHJhbnNmZXJfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICB3cml0ZVxuICAgICAgaW5wdXRcbiAgICAgIG91dHB1dFxuICAgICAgfmZcbiAgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50XG4gIHRoZW4gKFxuICAgIGludmFyaWFudCBpbnB1dDtcbiAgICBpbnZhcmlhbnQgb3V0cHV0KTtcbiAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXQgfmRvd25zdHJlYW06b3V0cHV0IGluXG4gIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAoKiBXaGVuIHdlJ3JlIGRvbmUgd2l0aCBbaW5wdXRdLCB3ZSB1bmxpbmsgdG8gcmVtb3ZlIHBvaW50ZXJzIGZyb21cbiAgICAgW291dHB1dF0gdG8gW2lucHV0XSwgd2hpY2ggd291bGQgY2F1c2UgYSBzcGFjZSBsZWFrIGlmIHdlIGhhZCBzaW5nbGUgbG9uZy1saXZlZFxuICAgICBvdXRwdXQgaW50byB3aGljaCB3ZSB0cmFuc2ZlciBsb3RzIG9mIHNob3J0LWxpdmVkIGlucHV0cy4gKilcbiAgbGV0IHVubGluayAoKSA9IExpbmsudW5saW5rX3Vwc3RyZWFtIGxpbmsgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IGlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNob29zZSBbIGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSBpbnB1dCkgaWdub3JlOyBjaG9pY2UgKGNsb3NlZCBvdXRwdXQpIGlnbm9yZSBdXG4gICAgaW5cbiAgICAoKiBXZSBkbyBbaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWRcbiAgICAgICBhc3luY2hyb25vdXNseS4gU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgIGlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvc2VkICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCBvdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNsb3NlX3JlYWQgaW5wdXQ7XG4gICAgICB1bmxpbmsgKCk7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgaW5wdXQgfmNvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+XG4gICAgICAgICAgdW5saW5rICgpO1xuICAgICAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgICAgfCBgT2sgeCAtPiBmIHggY29udGludWVcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGFuZCBjb250aW51ZSB5ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCBvdXRwdXRcbiAgICAgIHRoZW4gb3V0cHV0X2Nsb3NlZCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwdXNoYmFjayA9IHdyaXRlIG91dHB1dCB5IGluXG4gICAgICAgIENvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgIHB1c2hiYWNrID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICBpblxuICAgIGxvb3AgKCkpXG47O1xuXG5sZXQgdHJhbnNmZXInID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgb3V0cHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCB0cmFuc2ZlciBpbnB1dCBvdXRwdXQgfmYgPVxuICB0cmFuc2Zlcl9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgb3V0cHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG47O1xuXG5sZXQgdHJhbnNmZXJfaWQgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0ID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gayBxKVxuOztcblxubGV0IG1hcF9nZW4gcmVhZCB3cml0ZSBpbnB1dCB+ZiA9XG4gIGxldCBpbmZvID0gT3B0aW9uLm1hcCBpbnB1dC5pbmZvIH5mOihmdW4gaW5mbyAtPiBbJXNleHAgTWFwcGVkIChpbmZvIDogU2V4cC50KV0pIGluXG4gIGxldCByZXN1bHQsIG91dHB1dCA9IGNyZWF0ZSA/aW5mbyAoKSBpblxuICB1cG9uICh0cmFuc2Zlcl9nZW4gcmVhZCB3cml0ZSBpbnB1dCBvdXRwdXQgfmYpIChmdW4gKCkgLT4gY2xvc2Ugb3V0cHV0KTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBfZ2VuIHJlYWRfbm93IHdyaXRlIGlucHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG5cbmxldCBjb25jYXRfbWFwX2xpc3QgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmNvbmNhdF9tYXAgcSB+ZikpXG47O1xuXG5sZXQgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4gcSAtPlxuICAgIERlZmVycmVkLlF1ZXVlLmZpbHRlcl9tYXAgfmhvdzpgU2VxdWVudGlhbCBxIH5mKVxuOztcblxubGV0IGZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmZpbHRlcl9tYXAgcSB+ZjooZnVuIHggLT4gaWYgaXNfcmVhZF9jbG9zZWQgaW5wdXQgdGhlbiBOb25lIGVsc2UgZiB4KSkpXG47O1xuXG5sZXQgZm9sZGluZ19maWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2N1bSA9IHJlZiBpbml0IGluXG4gIGZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCVtYXAgYSwgeCA9IGYgIWFjY3VtIHggaW5cbiAgICBhY2N1bSA6PSBhO1xuICAgIHgpXG47O1xuXG5sZXQgZm9sZGluZ19maWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHggLT5cbiAgICBsZXQgYSwgeCA9IGYgIWFjY3VtIHggaW5cbiAgICBhY2N1bSA6PSBhO1xuICAgIHgpXG47O1xuXG5sZXQgZm9sZGluZ19tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmY6KGZ1biBhY2N1bSBhIC0+XG4gICAgbGV0IGFjY3VtLCBiID0gZiBhY2N1bSBhIGluXG4gICAgYWNjdW0sIFNvbWUgYilcbjs7XG5cbmxldCBmaWx0ZXIgaW5wdXQgfmYgPSBmaWx0ZXJfbWFwIGlucHV0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxuXG5sZXQgb2ZfcXVldWVfaW50ZXJuYWwgcXVldWUgPVxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQ6MCB+aW5mbzpOb25lIH5pbml0aWFsX2J1ZmZlcjpxdWV1ZSBpblxuICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICB0XG47O1xuXG5sZXQgb2ZfcXVldWUgcXVldWUgPSBvZl9xdWV1ZV9pbnRlcm5hbCAoUXVldWUuY29weSBxdWV1ZSlcbmxldCBvZl9saXN0IGwgPSBvZl9xdWV1ZV9pbnRlcm5hbCAoUXVldWUub2ZfbGlzdCBsKVxubGV0IGVtcHR5ICgpID0gb2ZfbGlzdCBbXVxuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBjcmVhdGUgKCkgaW5cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgeDtcbiAgY2xvc2Ugd3JpdGVyO1xuICByZWFkZXJcbjs7XG5cbmxldCB1bmZvbGQgfmluaXQ6cyB+ZiA9XG4gICgqIFRvIGdldCBzb21lIGJhdGNoaW5nLCB3ZSBydW4gdGhlIGNvbnRpbnVhdGlvbiBpbW1lZGlhdGVseSBpZiB0aGUgZGVmZXJyZWQgaXNcbiAgICAgZGV0ZXJtaW5lZC4gIEhvd2V2ZXIsIHdlIGFsd2F5cyBjaGVjayBmb3IgcHVzaGJhY2suICBCZWNhdXNlIHNpemUgYnVkZ2V0IGNhbid0IGJlXG4gICAgIGluZmluaXRlLCB0aGUgYmVsb3cgbG9vcCBpcyBndWFyYW50ZWVkIHRvIGV2ZW50dWFsbHkgeWllbGQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgbGV0ICggPj49fiApIGQgZiA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICB8IE5vbmUgLT4gZCA+Pj0gZlxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICBmIHNcbiAgICAgID4+PX4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiByZXR1cm4gKClcbiAgICAgIHwgU29tZSAoYSwgcykgLT5cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlciB0aGVuIHJldHVybiAoKSBlbHNlIHdyaXRlIHdyaXRlciBhID4+PX4gZnVuICgpIC0+IGxvb3Agc1xuICAgIGluXG4gICAgbG9vcCBzKVxuOztcblxubGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgY3JlYXRlX3JlYWRlciB+Y2xvc2Vfb25fZXhjZXB0aW9uOmZhbHNlIChmdW4gd3JpdGVyIC0+XG4gICAgbGV0IHJlYyBlbnF1ZXVlX24gc2VxdWVuY2UgaSA9XG4gICAgICBpZiBpIDw9IDBcbiAgICAgIHRoZW4gc2VxdWVuY2VcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHNlcXVlbmNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlcXVlbmNlXG4gICAgICAgIHwgU29tZSAoYSwgc2VxdWVuY2UpIC0+XG4gICAgICAgICAgZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2Ugd3JpdGVyIDE7XG4gICAgICAgICAgUXVldWUuZW5xdWV1ZSB3cml0ZXIuYnVmZmVyIGE7XG4gICAgICAgICAgZW5xdWV1ZV9uIHNlcXVlbmNlIChpIC0gMSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3Agc2VxdWVuY2UgPVxuICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlciB8fCBTZXF1ZW5jZS5pc19lbXB0eSBzZXF1ZW5jZVxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKiBbc2l6ZTowXSBoZXJlIGFzIHdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHNlcXVlbmNlIHN0YXRpY2FsbHkuIFdlJ2xsXG4gICAgICAgICAgIGNhbGwgW2RlY3JlYXNlX3Jlc2VydmVkX3NwYWNlXSBhcyB3ZSBnby5cbiAgICAgICAgICAgKGFsdGhvdWdoIHJlYWxpc3RpY2FsbHksIGl0J3MgaW1wb3NzaWJsZSBmb3IgdGhlIHVzZXIgdG8gcmVzZXJ2ZSBzcGFjZSBpblxuICAgICAgICAgICB0aGlzIHBpcGUgYmVjYXVzZSB5b3UgbmVlZCBhIHBpcGUgd3JpdGVyIGZvciB0aGF0LCBidXQgW29mX3NlcXVlbmNlXSByZXR1cm5zXG4gICAgICAgICAgIGEgcmVhZGVyKSAqKVxuICAgICAgICBzdGFydF93cml0ZSB3cml0ZXIgfnNpemU6MDtcbiAgICAgICAgbGV0IHNlcXVlbmNlID0gZW5xdWV1ZV9uIHNlcXVlbmNlICgxICsgd3JpdGVyLnNpemVfYnVkZ2V0IC0gbGVuZ3RoIHdyaXRlcikgaW5cbiAgICAgICAgZmluaXNoX3dyaXRlIHdyaXRlcjtcbiAgICAgICAgbGV0JWJpbmQgKCkgPSBwdXNoYmFjayB3cml0ZXIgaW5cbiAgICAgICAgbG9vcCBzZXF1ZW5jZSlcbiAgICBpblxuICAgIGxvb3Agc2VxdWVuY2UpXG47O1xuXG50eXBlICdhIHRvX3NlcXVlbmNlX2VsdCA9XG4gIHwgVmFsdWUgb2YgJ2FcbiAgfCBXYWl0X2ZvciA6IF8gRGVmZXJyZWQudCAtPiBfIHRvX3NlcXVlbmNlX2VsdFxuXG5sZXQgdG9fc2VxdWVuY2UgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooKSB+ZjooZnVuICgpIC0+XG4gICAgbWF0Y2ggcmVhZF9ub3cgdCB3aXRoXG4gICAgfCBgRW9mIC0+IE5vbmVcbiAgICB8IGBPayBhIC0+IFNvbWUgKFZhbHVlIGEsICgpKVxuICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IFNvbWUgKFdhaXRfZm9yICh2YWx1ZXNfYXZhaWxhYmxlIHQpLCAoKSkpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZV9waXBlIGlucHV0cyA9XG4gIGxldCBvdXRwdXQsIG91dHB1dF93cml0ZXIgPSBjcmVhdGUgfmluZm86WyVzZXhwIFwiUGlwZS5pbnRlcmxlYXZlXCJdICgpIGluXG4gICgqIFdlIGtlZXAgYSByZWZlcmVuY2UgY291bnQgb2YgYWxsIHRoZSBwaXBlcyB0aGF0IFtpbnRlcmxlYXZlX3BpcGVdIGlzIG1hbmFnaW5nO1xuICAgICBbaW5wdXRzXSBjb3VudHMgYXMgb25lLiAgV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIHplcm8sIHdlIGtub3cgdGhhdCBhbGxcbiAgICAgcGlwZXMgYXJlIGNsb3NlZCBhbmQgd2UgY2FuIGNsb3NlIFtvdXRwdXRfd3JpdGVyXS4gKilcbiAgbGV0IG51bV9waXBlc19yZW1haW5pbmcgPSByZWYgMSBpblxuICBsZXQgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpID1cbiAgICBkZWNyIG51bV9waXBlc19yZW1haW5pbmc7XG4gICAgaWYgIW51bV9waXBlc19yZW1haW5pbmcgPSAwIHRoZW4gY2xvc2Ugb3V0cHV0X3dyaXRlclxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlbWFwICgpID1cbiAgICAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgIGluY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgIChsZXQlbWFwICgpID0gdHJhbnNmZXJfaWQgaW5wdXQgb3V0cHV0X3dyaXRlciBpblxuICAgICAgICAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKSlcbiAgICAgaW5cbiAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKTtcbiAgKCogZm9yIFtpbnB1dHNdICopXG4gIG91dHB1dFxuOztcblxubGV0IGludGVybGVhdmUgaW5wdXRzID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciBpbnB1dHMgfmY6aW52YXJpYW50O1xuICBpbnRlcmxlYXZlX3BpcGUgKG9mX2xpc3QgaW5wdXRzKVxuOztcblxubGV0IG1lcmdlIGlucHV0cyB+Y29tcGFyZSA9XG4gIG1hdGNoIGlucHV0cyB3aXRoXG4gIHwgW10gLT4gZW1wdHkgKClcbiAgfCBbIGlucHV0IF0gLT4gaW5wdXRcbiAgfCBpbnB1dHMgLT5cbiAgICBsZXQgbW9kdWxlIEhlYXAgPSBQYWlyaW5nX2hlYXAgaW5cbiAgICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICAgIHVwb24gKGNsb3NlZCB3KSAoZnVuICgpIC0+IExpc3QuaXRlciBpbnB1dHMgfmY6Y2xvc2VfcmVhZCk7XG4gICAgbGV0IGhlYXAgPSBIZWFwLmNyZWF0ZSB+Y21wOihmdW4gKGExLCBfKSAoYTIsIF8pIC0+IGNvbXBhcmUgYTEgYTIpICgpIGluXG4gICAgbGV0IGhhbmRsZV9yZWFkIGlucHV0IGVvZl9vcl9vayA9XG4gICAgICBtYXRjaCBlb2Zfb3Jfb2sgd2l0aFxuICAgICAgfCBgRW9mIC0+ICgpXG4gICAgICB8IGBPayB2IC0+IEhlYXAuYWRkIGhlYXAgKHYsIGlucHV0KVxuICAgIGluXG4gICAgbGV0IHJlYyBwb3BfaGVhcF9hbmRfbG9vcCAoKSA9XG4gICAgICAoKiBBdCB0aGlzIHBvaW50LCBhbGwgaW5wdXRzIG5vdCBhdCBFb2Ygb2NjdXIgaW4gW2hlYXBdIGV4YWN0bHkgb25jZSwgc28gd2Uga25vd1xuICAgICAgICAgd2hhdCB0aGUgbmV4dCBvdXRwdXQgZWxlbWVudCBpcy4gIFtwb3BfaGVhcF9hbmRfbG9vcF0gcmVwZWF0ZWRseSB0YWtlcyBlbGVtZW50c1xuICAgICAgICAgZnJvbSB0aGUgaW5wdXRzIGFzIGxvbmcgYXMgaXQgaGFzIG9uZSBmcm9tIGVhY2ggaW5wdXQuICBUaGlzIGlzIGRvbmVcbiAgICAgICAgIHN5bmNocm9ub3VzbHkgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgYSBkZWZlcnJlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSBvdXRwdXQgLS1cbiAgICAgICAgIHRoZXJlJ3Mgbm8gbmVlZCB0byBwdXNoYmFjayBzaW5jZSB0aGF0IGlzIG9ubHkgbW92aW5nIGVsZW1lbnRzIGZyb20gb25lIHBpcGUgdG9cbiAgICAgICAgIGFub3RoZXIuICBBcyBzb29uIGFzIFtwb3BfaGVhcF9hbmRfbG9vcF0gY2FuJ3QgZ2V0IGFuIGVsZW1lbnQgZnJvbSBzb21lIGlucHV0LCBpdFxuICAgICAgICAgd2FpdHMgb24gcHVzaGJhY2sgZnJvbSB0aGUgb3V0cHV0LCBzaW5jZSBpdCBoYXMgdG8gd2FpdCBvbiB0aGUgaW5wdXQgYW55d2F5LlxuICAgICAgICAgVGhpcyBhbHNvIHByZXZlbnRzIFttZXJnZV0gZnJvbSBjb25zdW1pbmcgaW5wdXRzIGF0IGEgcmF0ZSBmYXN0ZXIgdGhhbiBpdHMgb3V0cHV0XG4gICAgICAgICBpcyBjb25zdW1lZC4gKilcbiAgICAgIG1hdGNoIEhlYXAucG9wIGhlYXAgd2l0aFxuICAgICAgfCBOb25lIC0+IGNsb3NlIHdcbiAgICAgIHwgU29tZSAodiwgaW5wdXQpIC0+XG4gICAgICAgIGlmIG5vdCAoaXNfY2xvc2VkIHcpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdyB2O1xuICAgICAgICAgIGlmIEhlYXAubGVuZ3RoIGhlYXAgPSAwXG4gICAgICAgICAgdGhlbiB1cG9uICh0cmFuc2Zlcl9pZCBpbnB1dCB3KSAoZnVuICgpIC0+IGNsb3NlIHcpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB3aXRoXG4gICAgICAgICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHggLT5cbiAgICAgICAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeDtcbiAgICAgICAgICAgICAgcG9wX2hlYXBfYW5kX2xvb3AgKClcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIHB1c2hiYWNrIHdcbiAgICAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICAgICByZWFkIGlucHV0XG4gICAgICAgICAgICAgID4+PiBmdW4geCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKSkpXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9wdXNoID1cbiAgICAgIERlZmVycmVkLkxpc3QuaXRlciB+aG93OmBTZXF1ZW50aWFsIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+XG4gICAgICAgIGxldCVtYXAgeCA9IHJlYWQgaW5wdXQgaW5cbiAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeClcbiAgICBpblxuICAgIHVwb24gaW5pdGlhbF9wdXNoIHBvcF9oZWFwX2FuZF9sb29wO1xuICAgIHJcbjs7XG5cbmxldCBjb25jYXRfcGlwZSBpbnB1dHMgPVxuICBsZXQgciA9XG4gICAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgICAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXRzIH5kb3duc3RyZWFtOncgaW5cbiAgICAgIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAgICAgaXRlciB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuICBpblxuICB1cG9uIChjbG9zZWQgcikgKGZ1biAoKSAtPiBjbG9zZSBpbnB1dHMpO1xuICByXG47O1xuXG5sZXQgY29uY2F0IGlucHV0cyA9XG4gIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICBEZWZlcnJlZC5MaXN0Lml0ZXIgfmhvdzpgU2VxdWVudGlhbCBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPiB0cmFuc2Zlcl9pZCBpbnB1dCB3KSlcbjs7XG5cbmxldCBmb3JrIHQgfnB1c2hiYWNrX3VzZXMgPVxuICBsZXQgcmVhZGVyMCwgd3JpdGVyMCA9IGNyZWF0ZSAoKSBpblxuICBsZXQgcmVhZGVyMSwgd3JpdGVyMSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY29uc3VtZXIgPVxuICAgIGFkZF9jb25zdW1lciB0IH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgbGV0IHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgPSAhc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCBpblxuICAgICAgbWF0Y2glbWFwXG4gICAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmUgWyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMDsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjEgXVxuICAgICAgd2l0aFxuICAgICAgfCBgUmVhZGVyX2Nsb3NlZCAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGVyZSBjb3VsZCBoYXZlIGJlZW4gbm8gcGVuZGluZyBpdGVtcyBpbiBbd3JpdGVyMF0gbm9yIGluXG4gICAgICAgICAgIFt3cml0ZXIxXSwgaW4gd2hpY2ggY2FzZSB3ZSBjb3VsZCBoYXZlIGhhZCBhIGNsb3NlZCBwaXBlIHRoYXQgbWlzc2VkIHNvbWVcbiAgICAgICAgICAgd3JpdGVzLCBidXQgW0ZsdXNoZWRfcmVzdWx0LmNvbWJpbmVdIHdvdWxkIHN0aWxsIGhhdmUgcmV0dXJuZWQgW2BPa10gKilcbiAgICAgICAgaWYgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCB0aGVuIGBSZWFkZXJfY2xvc2VkIGVsc2UgYE9rKVxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQgc3RpbGxfb3BlbiA9IFsgd3JpdGVyMDsgd3JpdGVyMSBdIGluXG4gICAgIGxldCBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuID1cbiAgICAgICAoKiBPbmx5IGNhbGwgW2ZpbHRlcl0gYW5kIHJlYWxsb2NhdGUgbGlzdCBpZiBzb21ldGhpbmcgd2lsbCBnZXQgZmlsdGVyZWQgKilcbiAgICAgICBpZiBub3QgKExpc3QuZXhpc3RzIHN0aWxsX29wZW4gfmY6aXNfY2xvc2VkKVxuICAgICAgIHRoZW4gc3RpbGxfb3BlblxuICAgICAgIGVsc2UgKFxuICAgICAgICAgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA6PSB0cnVlO1xuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBMaXN0LmZpbHRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBub3QgKGlzX2Nsb3NlZCB3KSkgaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlbiB0aGVuIGNsb3NlIHQ7XG4gICAgICAgICBzdGlsbF9vcGVuKVxuICAgICBpblxuICAgICBsZXQlYmluZCBzdGlsbF9vcGVuID1cbiAgICAgICBmb2xkJyB0IH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgfmluaXQ6c3RpbGxfb3BlbiB+ZjooZnVuIHN0aWxsX29wZW4gcXVldWUgLT5cbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuXG4gICAgICAgICB0aGVuIHJldHVybiBbXVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgIG1hdGNoIHB1c2hiYWNrX3VzZXMgd2l0aFxuICAgICAgICAgICAgIHwgYEZhc3RfY29uc3VtZXJfb25seSAtPiBEZWZlcnJlZC5hbnkgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgICAgfCBgQm90aF9jb25zdW1lcnMgLT4gRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHcgfmZyb206cXVldWUpO1xuICAgICAgICAgICBzdGlsbF9vcGVuKSlcbiAgICAgaW5cbiAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6Y2xvc2U7XG4gICAgIHJldHVybiAoKSk7XG4gIHJlYWRlcjAsIHJlYWRlcjFcbjs7XG5cbmxldCBzZXRfaW5mbyB0IGluZm8gPSBzZXRfaW5mbyB0IChTb21lIGluZm8pXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7IGN1cnJlbnRfdmFsdWUgOiAnYSBNb3B0aW9uLnRcbiAgOyB0YWtlbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgOyBtdXRhYmxlIHZhbHVlX2F2YWlsYWJsZSA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHZhbHVlX2F2YWlsYWJsZSB0ID0gSXZhci5yZWFkIHQudmFsdWVfYXZhaWxhYmxlXG5sZXQgaXNfZW1wdHkgdCA9IE1vcHRpb24uaXNfbm9uZSB0LmN1cnJlbnRfdmFsdWVcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfICh0IDogXyB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmN1cnJlbnRfdmFsdWU6KGNoZWNrIChNb3B0aW9uLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dGFrZW46KGNoZWNrIChCdmFyLmludmFyaWFudCBVbml0LmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgfnZhbHVlX2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCB2YWx1ZV9hdmFpbGFibGUpXG4gICAgICAgICAgICAgfmV4cGVjdDooTW9wdGlvbi5pc19zb21lIHQuY3VycmVudF92YWx1ZSkpKSlcbjs7XG5cbmxldCBwZWVrIHQgPSBNb3B0aW9uLmdldCB0LmN1cnJlbnRfdmFsdWVcblxubGV0IHBlZWtfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnBlZWtfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWVcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFslc2V4cCAocGVlayB0IDogYSBvcHRpb24pXVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkX3dyaXRlKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubGV0IHJlYWRfb25seSAodCA6ICgnYSwgWz4gcmVhZCBdKSB0KSA9ICh0IDo+ICgnYSwgcmVhZCkgdClcbmxldCB3cml0ZV9vbmx5ICh0IDogKCdhLCBbPiB3cml0ZSBdKSB0KSA9ICh0IDo+ICgnYSwgd3JpdGUpIHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IGN1cnJlbnRfdmFsdWUgPSBNb3B0aW9uLmNyZWF0ZSAoKVxuICA7IHRha2VuID0gQnZhci5jcmVhdGUgKClcbiAgOyB2YWx1ZV9hdmFpbGFibGUgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgdGFrZV9ub25lbXB0eSB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IHIgPSBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWUgaW5cbiAgTW9wdGlvbi5zZXRfbm9uZSB0LmN1cnJlbnRfdmFsdWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQudGFrZW4gKCk7XG4gIHQudmFsdWVfYXZhaWxhYmxlIDwtIEl2YXIuY3JlYXRlICgpO1xuICByXG47O1xuXG5sZXQgdGFrZV9ub3dfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnRha2VfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICB0YWtlX25vbmVtcHR5IHRcbjs7XG5cbmxldCB0YWtlX25vdyB0ID0gaWYgbm90IChpc19lbXB0eSB0KSB0aGVuIFNvbWUgKHRha2Vfbm9uZW1wdHkgdCkgZWxzZSBOb25lXG5cbmxldCByZWMgdGFrZSB0ID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiAodGFrZV9ub25lbXB0eSB0KVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgdGFrZSB0KVxuOztcblxubGV0IHNldCB0IHYgPVxuICBNb3B0aW9uLnNldF9zb21lIHQuY3VycmVudF92YWx1ZSB2O1xuICBJdmFyLmZpbGxfaWZfZW1wdHkgdC52YWx1ZV9hdmFpbGFibGUgKClcbjs7XG5cbmxldCB1cGRhdGUgdCB+ZiA9IHNldCB0IChmIChwZWVrIHQpKVxubGV0IHVwZGF0ZV9leG4gdCB+ZiA9IHNldCB0IChmIChwZWVrX2V4biB0KSlcbmxldCB0YWtlbiB0ID0gQnZhci53YWl0IHQudGFrZW5cblxubGV0IHJlYyBwdXQgdCB2ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIChcbiAgICBzZXQgdCB2O1xuICAgIHJldHVybiAoKSlcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB0YWtlbiB0IGluXG4gICAgcHV0IHQgdilcbjs7XG5cbmxldCBwaXBlX3doZW5fcmVhZHkgdCA9XG4gIGxldCByLCB3ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB3KVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggdGFrZV9ub3cgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoKVxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBQaXBlLndyaXRlIHcgeCBpblxuICAgICAgICBsb29wICgpKVxuICAgIGVsc2UgcmV0dXJuICgpXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yIChsb29wICgpKTtcbiAgclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogdW5pdCBJdmFyLnRcbiAgICA7IHJlc3VsdCA6ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlID8ocmVzdF9leG4gPSBgTG9nKSBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9vcl9lcnJvclxuICAgICAgICAgICB+cmVzdDpyZXN0X2V4blxuICAgICAgICAgICBmKVxuICAgIH1cbiAgOztcblxuICBsZXQgY3JlYXRlX29yX2Vycm9yID8ocmVzdF9leG4gPSBgTG9nKSBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OnJlc3RfZXhuXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCB3YWl0IHQgPSB0LnJlc3VsdFxuICBsZXQgd2FpdF9leG4gdCA9IHdhaXQgdCA+Pnwgb2tfZXhuXG4gIGxldCBzdGFydCB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQuc3RhcnQgKClcblxuICBsZXQgZm9yY2UgdCA9XG4gICAgc3RhcnQgdDtcbiAgICB3YWl0IHRcbiAgOztcblxuICBsZXQgZm9yY2VfZXhuIHQgPSBmb3JjZSB0ID4+fCBva19leG5cbiAgbGV0IHJldHVybiBhID0gY3JlYXRlIChmdW4gKCkgLT4gcmV0dXJuIGEpXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgY3JlYXRlIChmdW4gKCkgLT5cbiAgICAgIGxldCViaW5kIGEgPSBmb3JjZV9leG4gdCBpblxuICAgICAgZm9yY2VfZXhuIChmIGEpKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuICgpIC0+IGZvcmNlX2V4biB0ID4+fCBmKVxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGJpbmQnIHQgZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gY3JlYXRlIChmdW4gKCkgLT4gZiBhKSlcbmxldCBpc19mb3JjZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnN0YXJ0XG5sZXQgaXNfZGV0ZXJtaW5lZCB0ID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0LnJlc3VsdFxubGV0IHBlZWsgdCA9IERlZmVycmVkLnBlZWsgdC5yZXN1bHRcbmxldCBwZWVrX2V4biB0ID0gT3B0aW9uLm1hcCAocGVlayB0KSB+Zjpva19leG5cbiIsIm9wZW4gQ29yZVxuXG50eXBlICdhIHQgPSB7IHdhaXRzIDogJ2EgSXZhci50IFF1ZXVlLnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlICgpID0geyB3YWl0cyA9IFF1ZXVlLmNyZWF0ZSAoKSB9XG5sZXQgd2FpdCB0ID0gRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPiBRdWV1ZS5lbnF1ZXVlIHQud2FpdHMgaXZhcilcbmxldCBzaWduYWwgdCBhID0gT3B0aW9uLml0ZXIgKFF1ZXVlLmRlcXVldWUgdC53YWl0cykgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgUXVldWUuaXRlciB0LndhaXRzIH5mOihmdW4gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBhKTtcbiAgUXVldWUuY2xlYXIgdC53YWl0c1xuOztcbiIsIm9wZW4gQ29yZVxuaW5jbHVkZSBHY1xuXG4oKiogW2FkZF9maW5hbGl6ZXIgZiB4XSBpcyBsaWtlIFtHYy5maW5hbGlzZSBmIHhdLCBleGNlcHQgdGhhdCB0aGUgZmluYWxpemVyIGlzIGd1YXJhbnRlZWRcbiAgICB0byBydW4gYXMgYW4gQXN5bmMgam9iIChpLmUuIHdpdGhvdXQgaW50ZXJydXB0aW5nIG90aGVyIEFzeW5jIGpvYnMpLiAgVW5wcm90ZWN0ZWQgdXNlXG4gICAgb2YgW0NhbWwuR2MuZmluYWxpc2VdIG9yIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGluIEFzeW5jIHByb2dyYW1zIGlzIHdyb25nLCBiZWNhdXNlXG4gICAgdGhlIGZpbmFsaXplcnMgd29uJ3QgaG9sZCB0aGUgYXN5bmMgbG9jaywgYW5kIHRodXMgY291bGQgaW50ZXJsZWF2ZSBhcmJpdHJhcmlseSB3aXRoXG4gICAgYXN5bmMgam9icy4gKilcbmxldCBhZGRfZmluYWxpemVyIGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplciAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9leG4gaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdCBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdCAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biBoZWFwX2Jsb2NrIGYgPVxuICBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gKHQgKCkpKSBoZWFwX2Jsb2NrIGZcbjs7XG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBHYy5FeHBlcnQuQWxhcm1cblxuICB0eXBlIHQgPSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBmID0gU2NoZWR1bGVyLihjcmVhdGVfYWxhcm0gKHQgKCkpKSBmXG4gIGxldCBkZWxldGUgPSBBbGFybS5kZWxldGVcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgc2lnbmF0dXJlcyB0aGF0IGV4dGVuZCBbQ29yZS5JbnZhcmlhbnRdIHdpdGggYW4gW0FzeW5jXVxuICAgIHN1Ym1vZHVsZSBmb3IgaW52YXJpYW50cyB0aGF0IHVzZSBhc3luYyBjb21wdXRhdGlvbiBhbmQgcmV0dXJuIFt1bml0IERlZmVycmVkLnRdLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+IHVuaXQgRGVmZXJyZWQudFxuICB0eXBlICdhIGludiA9ICdhIHRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2EgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2IgaW52IC0+ICgnYSwgJ2IpIHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gJ2MgaW52IC0+ICgnYSwgJ2IsICdjKSB0IGludlxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBc3luY19pbnZhcmlhbnQgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBDb3JlLkludmFyaWFudFxuXG4gIG1vZHVsZSBBc3luYyA6IHNpZ1xuICAgIG9wZW4gQXN5bmNcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBBc3luYy50XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gICAgbW9kdWxlIHR5cGUgUzMgPSBTM1xuXG4gICAgdmFsIGludmFyaWFudFxuICAgICAgOiAgU291cmNlX2NvZGVfcG9zaXRpb24udFxuICAgICAgLT4gJ2FcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcblxuICAgICgqKiBbY2hlY2tfZmllbGRdIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHJlY29yZCBmaWVsZHMgd2hlbiB1c2luZyBbW0BAZGVyaXZpbmcgZmllbGRzXV0uXG4gICAgICAgIElkaW9tYXRpYyB1c2FnZSBsb29rcyBsaWtlOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgICAgSW52YXJpYW50LkFzeW5jLmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCBjaGVjayBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAoY2hlY2sgRm9vLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+YmFyOiAoY2hlY2sgQmFyLmludmFyaWFudCkgXX1cblxuICAgICAgICBXaGVuIHNvbWUgZmllbGRzIGhhdmUgc3luY2hyb25vdXMgaW52YXJpYW50cywgb3IgZG8gbm90IG5lZWQgdG8gYmUgY2hlY2tlZCwgaXRcbiAgICAgICAgbWF5IGJlIHVzZWZ1bCB0byBkZWZpbmUgYSBzZWNvbmQgd3JhcHBlciBhcm91bmQgW2NoZWNrX2ZpZWxkXTpcblxuICAgICAgICB7W1xuICAgICAgICAgIHR5cGUgdCA9IHsgZm9vIDogRm9vLnQgOyBiYXIgOiBCYXIudCA7IHF1dXggOiBRdXV4LnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrJyBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IGNoZWNrJyAoZnVuIHggLT4gaW52IHg7IHJldHVybiAoKSkgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAgKGNoZWNrJyBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6ICAoY2hlY2sgIEJhci5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfnF1dXg6IChjaGVjayAgaWdub3JlKSBdfSAqKVxuICAgIHZhbCBjaGVja19maWVsZCA6ICdhIC0+ICdiIHQgLT4gdW5pdCBEZWZlcnJlZC50IC0+ICgnYSwgJ2IpIEZpZWxkLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBEZWZlcnJlZC5MZXRfc3ludGF4XG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29yZS5JbnZhcmlhbnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIGluY2x1ZGUgQXN5bmNfaW52YXJpYW50X2ludGYuQXN5bmNcblxuICBsZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgZlxuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCIgfl86KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSAoZXhuIDogZXhuKSB+XzoodCA6IHQpXVxuICA7O1xuXG4gIGxldCBjaGVja19maWVsZCB0IGYgd2FpdF9mb3JfcHJldmlvdXMgZmllbGQgPVxuICAgIGxldCViaW5kICgpID0gd2FpdF9mb3JfcHJldmlvdXMgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgICAgICAoZnVuICgpIC0+IGYgKEZpZWxkLmdldCBmaWVsZCB0KSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcInByb2JsZW0gd2l0aCBmaWVsZFwiIH5maWVsZDooRmllbGQubmFtZSBmaWVsZCA6IHN0cmluZykgKGV4biA6IGV4bildXG4gIDs7XG5lbmRcbiIsIigqKiBDb250YWlucyBBc3luYydzIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzLCBsaWtlIHt7IUFzeW5jX2tlcm5lbC5EZWZlcnJlZH1bRGVmZXJyZWRdfSxcbiAgICB7eyFBc3luY19rZXJuZWwuSXZhcn1bSXZhcl19LCBhbmQge3shQXN5bmNfa2VybmVsLkNsb2NrX2ludGYuQ2xvY2t9W0Nsb2NrXX0uXG5cbiAgICBbQXN5bmNfa2VybmVsXSBpcyBkZXNpZ25lZCB0byBkZXBlbmQgb25seSBvbiB7eyFDb3JlfVtDb3JlXX0gYW5kIHNvIGlzIG1vcmVcbiAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXN5bmNfa2VybmVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWdcbm1vZHVsZSBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZSA9IFJlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2Vcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIEJ2YXIgPSBCdmFyXG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIENvbmRpdGlvbiA9IEFzeW5jX2NvbmRpdGlvblxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWRcbm1vZHVsZSBFeGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0XG5tb2R1bGUgR2MgPSBBc3luY19nY1xubW9kdWxlIEludmFyaWFudCA9IEFzeW5jX2ludmFyaWFudFxubW9kdWxlIEl2YXIgPSBJdmFyXG5tb2R1bGUgTGF6eV9kZWZlcnJlZCA9IExhenlfZGVmZXJyZWRcbm1vZHVsZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3Jcbm1vZHVsZSBNdmFyID0gTXZhclxubW9kdWxlIFBpcGUgPSBQaXBlXG5tb2R1bGUgUHJpb3JpdHkgPSBQcmlvcml0eVxubW9kdWxlIFNlcXVlbmNlciA9IFRocm90dGxlLlNlcXVlbmNlclxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxubW9kdWxlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Vcbm1vZHVsZSBUYWlsID0gVGFpbFxubW9kdWxlIFRocm90dGxlID0gVGhyb3R0bGVcbm1vZHVsZSBUaHJvdHRsZWQgPSBUaHJvdHRsZWRcbm1vZHVsZSBUaW1lX3NvdXJjZSA9IFRpbWVfc291cmNlXG5cblxuKCoqIHsyIFRvcGxldmVsIGZ1bmN0aW9ucyB9XG5cbiAgICBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBicm9hZGx5IHVzZWZ1bCB3aGVuIHdyaXRpbmcgQXN5bmMgcHJvZ3JhbXMsIGFuZCBzbyBhcmUgbWFkZVxuICAgIGF2YWlsYWJsZSBhdCB0aGUgdG9wbGV2ZWwuICopXG5cblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgY2F0Y2ggPSBNb25pdG9yLmNhdGNoXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBEZWZlcnJlZC5kb24ndF93YWl0X2ZvclxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCBuZXZlciA9IERlZmVycmVkLm5ldmVyXG5sZXQgc2NoZWR1bGUgPSBTY2hlZHVsZXIuc2NoZWR1bGVcbmxldCBzY2hlZHVsZScgPSBTY2hlZHVsZXIuc2NoZWR1bGUnXG5sZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbmxldCB3aXRoaW4gPSBTY2hlZHVsZXIud2l0aGluXG5sZXQgd2l0aGluJyA9IFNjaGVkdWxlci53aXRoaW4nXG5cbigqKiB7MiBJbmZpeCBvcGVyYXRvcnMgYW5kIFtMZXRfc3ludGF4XSBzdXBwb3J0fSAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZCA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQudXBvbn0uICopXG5sZXQgKCA+Pj4gKSA9IERlZmVycmVkLkluZml4LiggPj4+IClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC5SZXN1bHQuYmluZH0uICopXG5sZXQgKCA+Pj0/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+Pj0gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5tYXB9LiAqKVxubGV0ICggPj58PyApID0gRGVmZXJyZWQuUmVzdWx0LiggPj58IClcblxuaW5jbHVkZSBEZWZlcnJlZC5MZXRfc3ludGF4XG5cbigqKi8qKilcblxuKCoqIFRoZSBtb2R1bGVzIGluIFtBc3luY19rZXJuZWxfcHJpdmF0ZV0gYXJlIHVzZWQgZm9yIGNvbnN0cnVjdGluZyBhbmQgdGVzdGluZyBBc3luYywgYW5kXG4gICAgc2hvdWxkIG5vdCBvdGhlcndpc2UgYmUgdXNlZC4gKilcbm1vZHVsZSBBc3luY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVidWcgPSBEZWJ1Z1xuICBtb2R1bGUgSXZhcjAgPSBJdmFyMFxuICBtb2R1bGUgSXZhcl9maWxsZXIgPSBJdmFyX2ZpbGxlclxuICBtb2R1bGUgSm9iID0gSm9iXG4gIG1vZHVsZSBTdGFja19vcl9jb3VudGVyID0gU3RhY2tfb3JfY291bnRlclxuZW5kXG5cbigqKi8qKilcblxuKCogVGhpcyB0ZXN0IG11c3QgYmUgaW4gdGhpcyBsaWJyYXJ5LCBiZWNhdXNlIGl0IHJlcXVpcmVzIFtyZXR1cm5dIHRvIGJlIGlubGluZWQuICBNb3ZpbmdcbiAgIGl0IHRvIGFub3RoZXIgbGlicmFyeSB3aWxsIGNhdXNlIGl0IHRvIGJyZWFrIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz1mYWxzZV0uICopXG5sZXQldGVzdF91bml0IFwiW3JldHVybiAoKV0gZG9lcyBub3QgYWxsb2NhdGVcIiA9XG4gIGxldCB3MSA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAocmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQuTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LkxldF9zeW50YXgucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGxldCB3MiA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIFsldGVzdF9yZXN1bHQ6IGludF0gdzIgfmV4cGVjdDp3MVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPSAnYSBEZWZlcnJlZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHJldHVybiA9IERlZmVycmVkLnJldHVyblxuXG4gIGxldCBiaW5kIHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdCB0aGVuIGYgKERlZmVycmVkLnZhbHVlX2V4biB0KSBlbHNlIERlZmVycmVkLmJpbmQgdCB+ZlxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0XG4gICAgdGhlbiByZXR1cm4gKGYgKERlZmVycmVkLnZhbHVlX2V4biB0KSlcbiAgICBlbHNlIERlZmVycmVkLm1hcCB0IH5mXG4gIDs7XG5cbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIE1vbmFkLk1ha2UgKFQpXG5cbmxldCBjcmVhdGUgPSBEZWZlcnJlZC5jcmVhdGVcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgaW52YXJpYW50ID0gRGVmZXJyZWQuaW52YXJpYW50XG5sZXQgaXNfZGV0ZXJtaW5lZCA9IERlZmVycmVkLmlzX2RldGVybWluZWRcbmxldCBuZXZlciA9IERlZmVycmVkLm5ldmVyXG5sZXQgcGVlayA9IERlZmVycmVkLnBlZWtcbmxldCB1bml0ID0gRGVmZXJyZWQudW5pdFxubGV0IHZhbHVlX2V4biA9IERlZmVycmVkLnZhbHVlX2V4blxubGV0IHVwb24gdCBmID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gZiAodmFsdWVfZXhuIHQpIGVsc2UgRGVmZXJyZWQudXBvbiB0IGZcblxubGV0IGJvdGggdDEgdDIgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT4gdXBvbiB0MSAoZnVuIGExIC0+IHVwb24gdDIgKGZ1biBhMiAtPiBJdmFyLmZpbGwgcmVzdWx0IChhMSwgYTIpKSkpXG47O1xuXG5sZXQgb2sgdCA9IGlmIGlzX2RldGVybWluZWQgdCB0aGVuIHJldHVybiAoT2sgKHZhbHVlX2V4biB0KSkgZWxzZSBEZWZlcnJlZC5vayB0XG5sZXQgaWdub3JlX20gdCA9IGlmIGlzX2RldGVybWluZWQgdCB0aGVuIHVuaXQgZWxzZSBEZWZlcnJlZC5pZ25vcmVfbSB0XG5cbmxldCBhbnkgdHMgPVxuICBtYXRjaCBMaXN0LmZpbmQgdHMgfmY6aXNfZGV0ZXJtaW5lZCB3aXRoXG4gIHwgU29tZSB4IC0+IHJldHVybiAodmFsdWVfZXhuIHgpXG4gIHwgTm9uZSAtPiBEZWZlcnJlZC5hbnkgdHNcbjs7XG5cbmxldCBhbnlfdW5pdCB0cyA9XG4gIGlmIExpc3QuZXhpc3RzIHRzIH5mOihpc19kZXRlcm1pbmVkIDogdW5pdCB0IC0+IGJvb2wpXG4gIHRoZW4gdW5pdFxuICBlbHNlIERlZmVycmVkLmFueV91bml0IHRzXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIGxldCAoID4+PiApID0gdXBvblxuZW5kXG5cbmxldCByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIGxldCBvcGVuIEluZml4IGluXG4gIGNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICAgIGYgc3RhdGVcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBgUmVwZWF0IHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICAgIHwgYEZpbmlzaGVkIHJlc3VsdCAtPiBJdmFyLmZpbGwgZmluaXNoZWQgcmVzdWx0XG4gICAgaW5cbiAgICBsb29wIHN0YXRlKVxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgb3BlbiBJbmZpeFxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gICAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgdCBpIGIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgICAgfCB4IDo6IHhzIC0+IGYgaSBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgKGkgKyAxKSBiXG4gICAgICBpblxuICAgICAgbG9vcCB0IDAgaW5pdClcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG4gIGxldCBhbGxfdW5pdCBkcyA9IGlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSA6IHVuaXQgVC50KVxuXG4gIGxldCBpdGVyaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbGV0JW1hcCBib29scyA9IG1hcGkgdCB+aG93IH5mIGluXG4gICAgTGlzdC5yZXZcbiAgICAgIChMaXN0LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+IGlmJW1hcCBmIGVsdCB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IGFsbF91bml0ID0gTGlzdC5hbGxfdW5pdFxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IEVhZ2VyX2RlZmVycmVkMFxub3BlbiBEZWZlcnJlZC5MZXRfc3ludGF4XG5cbigqIENvcGllZCBmcm9tIFtkZWZlcnJlZF9yZXN1bHQubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdlcnJvcikgdCA9ICgnYSwgJ2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbGV0JW1hcCB0MSA9IHQxXG4gIGFuZCB0MiA9IHQyIGluXG4gIFJlc3VsdC5jb21iaW5lIHQxIHQyIH5vayB+ZXJyXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoT2sgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE9rIGEgLT4gZiBhXG4gICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBEZWZlcnJlZC5yZXR1cm4gZXJyb3IpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGZhaWwgeCA9IERlZmVycmVkLnJldHVybiAoRXJyb3IgeClcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBtYXBfZXJyb3IgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwX2Vycm9yIHIgfmYpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRWFnZXJfZGVmZXJyZWQwXG5tb2R1bGUgRGVmZXJyZWRfcmVzdWx0ID0gRWFnZXJfZGVmZXJyZWRfcmVzdWx0XG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA/KHJ1biA9IGBOb3cpID0gTW9uaXRvci50cnlfd2l0aCB+cnVuXG5lbmRcblxuKCogQ29waWVkIGZyb20gW2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgdCA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci5vZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UpXG5sZXQgZXJyb3IgbXNnIHYgc2V4cF9vZiA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3IgbXNnIHYgc2V4cF9vZilcbmxldCBlcnJvcl9zIHNleHAgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgbXNnKVxubGV0IGVycm9yZiBmb3JtYXQgPSBrc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIERlZmVycmVkLm1hcCB0IH5mOihmdW4gdCAtPiBPcl9lcnJvci50YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IudW5pbXBsZW1lbnRlZCBtc2cpXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuZmlsdGVyX29rX2F0X2xlYXN0X29uZVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKGwsIFtdKSAoZnVuIChsLCBlcnJvcnMpIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IGVycm9ycyA9IEVycm9yLm9mX2xpc3QgKExpc3QucmV2IGVycm9ycykgaW5cbiAgICAgIERlZmVycmVkLnJldHVybiAoYEZpbmlzaGVkIChFcnJvciBlcnJvcnMpKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIERlZmVycmVkLm1hcCAoZiBoZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgY3VycmVudF9lcnJvciAtPiBgUmVwZWF0ICh0bCwgY3VycmVudF9lcnJvciA6OiBlcnJvcnMpXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+IGBGaW5pc2hlZCAoT2sgcmVzdWx0KSkpXG47O1xuXG5sZXQgb2tfdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAoTW9uaXRvci50cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjooZnVuY3Rpb25cbiAgICB8IEVycm9yIGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IE9rIF8gYXMgb2sgLT4gb2spXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwICh0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjpPcl9lcnJvci5qb2luXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgZm9sZGkgbGlzdCB+aW5pdDphY2MgfmYgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0JWJpbmQgYWNjID0gZiBpIGFjYyBoZCBpblxuICAgICAgICBsb29wIChpICsgMSkgYWNjIHRsXG4gICAgaW5cbiAgICBsb29wIDAgYWNjIGxpc3RcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgPSBhbGxcbiAgbGV0IGFsbF91bml0ID0gYWxsX3VuaXRcblxuICBsZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBFYWdlcl9kZWZlcnJlZF9pbnRmLlNcblxuaW5jbHVkZSBFYWdlcl9kZWZlcnJlZDFcblxubW9kdWxlIFVzZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVmZXJyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBEZWZlcnJlZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEVhZ2VyX2RlZmVycmVkMVxuICBlbmRcblxuICBpbmNsdWRlIChFYWdlcl9kZWZlcnJlZDEgOiBNb25hZC5JbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBEZWZlcnJlZC50KVxuICBpbmNsdWRlIEVhZ2VyX2RlZmVycmVkMS5MZXRfc3ludGF4XG5cbiAgbGV0IHVwb24gPSBFYWdlcl9kZWZlcnJlZDEudXBvblxuICBsZXQgKCA+Pj4gKSA9IEVhZ2VyX2RlZmVycmVkMS5JbmZpeC4oID4+PiApXG5cbiAgbGV0ICggPj49PyApIHggZiA9XG4gICAgeFxuICAgID4+PSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rIHYgLT4gZiB2XG4gIDs7XG5cbiAgbGV0ICggPj58PyApIHggZiA9XG4gICAgeFxuICAgID4+fCBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuICAgIHwgT2sgdiAtPiBPayAoZiB2KVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ2xvc2VkXG4gICAgfCBXcml0ZV9pbl9wcm9ncmVzc1xuICAgIHwgT2tfdG9fd3JpdGVcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaXNfY2xvc2VkID0gZnVuY3Rpb25cbiAgICB8IENsb3NlZCAtPiB0cnVlXG4gICAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBmYWxzZVxuICAgIHwgT2tfdG9fd3JpdGUgLT4gZmFsc2VcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2FsbGJhY2tfYXJpdHkgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgQXJpdHkxIDogKCdhIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5MV9sb2NhbCA6ICgoJ2FbQGxvY2FsXSkgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkyIDogKCdhIC0+ICdiIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5MyA6ICgnYSAtPiAnYiAtPiAnYyAtPiB1bml0KSB0XG4gICAgfCBBcml0eTQgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHk1IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXQpIHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdXNlc19sb2NhbF9hcmdzIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gICAgfCBBcml0eTEgLT4gZmFsc2VcbiAgICB8IEFyaXR5MV9sb2NhbCAtPiB0cnVlXG4gICAgfCBBcml0eTIgLT4gZmFsc2VcbiAgICB8IEFyaXR5MyAtPiBmYWxzZVxuICAgIHwgQXJpdHk0IC0+IGZhbHNlXG4gICAgfCBBcml0eTUgLT4gZmFsc2VcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGFzdF92YWx1ZSA6IHNpZ1xuICB0eXBlICdjYWxsYmFjayB0XG5cbiAgdmFsIGNyZWF0ZV9leG4gOiAnY2FsbGJhY2sgQ2FsbGJhY2tfYXJpdHkudCAtPiAnY2FsbGJhY2sgdFxuICB2YWwgc2V0MSA6ICgnYSAtPiB1bml0KSB0IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldDIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiB1bml0XG4gIHZhbCBzZXQzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdFxuICB2YWwgc2V0NCA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXRcbiAgdmFsIHNldDUgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0XG4gIHZhbCBzZW5kIDogJ2NhbGxiYWNrIHQgLT4gJ2NhbGxiYWNrIC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIF8gdHVwbGUgPVxuICAgIHwgVHVwbGUxIDogeyBtdXRhYmxlIGFyZzEgOiAnYSB9IC0+ICgnYSAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGUyIDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTMgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGU0IDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIDsgbXV0YWJsZSBhcmczIDogJ2NcbiAgICAgICAgOyBtdXRhYmxlIGFyZzQgOiAnZFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGU1IDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIDsgbXV0YWJsZSBhcmczIDogJ2NcbiAgICAgICAgOyBtdXRhYmxlIGFyZzQgOiAnZFxuICAgICAgICA7IG11dGFibGUgYXJnNSA6ICdlXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXQpIHR1cGxlXG5cbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICdjYWxsYmFjayB0dXBsZSBvcHRpb24gcmVmXG5cbiAgbGV0IGNyZWF0ZV9leG4gKHR5cGUgY2FsbGJhY2spIChhcml0eSA6IGNhbGxiYWNrIENhbGxiYWNrX2FyaXR5LnQpIDogY2FsbGJhY2sgdCA9XG4gICAgaWYgQ2FsbGJhY2tfYXJpdHkudXNlc19sb2NhbF9hcmdzIGFyaXR5XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkNhbm5vdCBzYXZlIGxhc3QgdmFsdWUgd2hlbiB1c2luZyBsb2NhbCBhcmdzXCIgKGFyaXR5IDogXyBDYWxsYmFja19hcml0eS50KV07XG4gICAgcmVmIE5vbmVcbiAgOztcblxuICBsZXQgc2V0MSB0IGEgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTEgeyBhcmcxID0gYSB9KVxuICAgIHwgU29tZSAoVHVwbGUxIGFyZ3MpIC0+IGFyZ3MuYXJnMSA8LSBhXG4gIDs7XG5cbiAgbGV0IHNldDIgdCBhIGIgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTIgeyBhcmcxID0gYTsgYXJnMiA9IGIgfSlcbiAgICB8IFNvbWUgKFR1cGxlMiBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYlxuICA7O1xuXG4gIGxldCBzZXQzIHQgYSBiIGMgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTMgeyBhcmcxID0gYTsgYXJnMiA9IGI7IGFyZzMgPSBjIH0pXG4gICAgfCBTb21lIChUdXBsZTMgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhO1xuICAgICAgYXJncy5hcmcyIDwtIGI7XG4gICAgICBhcmdzLmFyZzMgPC0gY1xuICA7O1xuXG4gIGxldCBzZXQ0IHQgYSBiIGMgZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlNCB7IGFyZzEgPSBhOyBhcmcyID0gYjsgYXJnMyA9IGM7IGFyZzQgPSBkIH0pXG4gICAgfCBTb21lIChUdXBsZTQgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhO1xuICAgICAgYXJncy5hcmcyIDwtIGI7XG4gICAgICBhcmdzLmFyZzMgPC0gYztcbiAgICAgIGFyZ3MuYXJnNCA8LSBkXG4gIDs7XG5cbiAgbGV0IHNldDUgdCBhcmcxIGFyZzIgYXJnMyBhcmc0IGFyZzUgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTUgeyBhcmcxOyBhcmcyOyBhcmczOyBhcmc0OyBhcmc1IH0pXG4gICAgfCBTb21lIChUdXBsZTUgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhcmcxO1xuICAgICAgYXJncy5hcmcyIDwtIGFyZzI7XG4gICAgICBhcmdzLmFyZzMgPC0gYXJnMztcbiAgICAgIGFyZ3MuYXJnNCA8LSBhcmc0O1xuICAgICAgYXJncy5hcmc1IDwtIGFyZzVcbiAgOztcblxuICBsZXQgc2VuZCAodHlwZSBjYWxsYmFjaykgKHQgOiBjYWxsYmFjayB0KSAoY2FsbGJhY2sgOiBjYWxsYmFjaykgOiB1bml0ID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChUdXBsZTEgeyBhcmcxIH0pIC0+IGNhbGxiYWNrIGFyZzFcbiAgICB8IFNvbWUgKFR1cGxlMiB7IGFyZzE7IGFyZzIgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyXG4gICAgfCBTb21lIChUdXBsZTMgeyBhcmcxOyBhcmcyOyBhcmczIH0pIC0+IGNhbGxiYWNrIGFyZzEgYXJnMiBhcmczXG4gICAgfCBTb21lIChUdXBsZTQgeyBhcmcxOyBhcmcyOyBhcmczOyBhcmc0IH0pIC0+IGNhbGxiYWNrIGFyZzEgYXJnMiBhcmczIGFyZzRcbiAgICB8IFNvbWUgKFR1cGxlNSB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQ7IGFyZzUgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzMgYXJnNCBhcmc1XG4gIDs7XG5lbmRcblxubW9kdWxlIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWxsb3dcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWVcbiAgICB8IFJhaXNlXG4gIFtAQGRlcml2aW5nIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxuICBsZXQgYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlID0gZnVuY3Rpb25cbiAgICB8IEFsbG93IC0+IHRydWVcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWUgLT4gdHJ1ZVxuICAgIHwgUmFpc2UgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgc2F2ZV9sYXN0X3ZhbHVlX2V4biB0IGNhbGxiYWNrX2FyaXR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWUgLT4gU29tZSAoTGFzdF92YWx1ZS5jcmVhdGVfZXhuIGNhbGxiYWNrX2FyaXR5KVxuICAgIHwgQWxsb3cgLT4gTm9uZVxuICAgIHwgUmFpc2UgLT4gTm9uZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdXNfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIFN1YnNjcmliZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9XG4gICAgeyBidXNfaWQgOiBCdXNfaWQudFxuICAgIDsgY2FsbGJhY2sgOiAnY2FsbGJhY2tcbiAgICA7IGV4dHJhY3RfZXhuIDogYm9vbFxuICAgIDsgKCogW3N1YnNjcmliZXJzX2luZGV4XSBpcyB0aGUgaW5kZXggb2YgdGhpcyBzdWJzY3JpYmVyIGluIHRoZSBidXMncyBbc3Vic2NyaWJlcnNdXG4gICAgICAgICBhcnJheS4gIFstMV0gaW5kaWNhdGVzIHRoYXQgdGhpcyBzdWJzY3JpYmVyIGlzIG5vdCBzdWJzY3JpYmVkLiAqKVxuICAgICAgbXV0YWJsZSBzdWJzY3JpYmVyc19pbmRleCA6IGludFxuICAgIDsgb25fY2FsbGJhY2tfcmFpc2UgOiAoRXJyb3IudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG9uX2Nsb3NlIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBzdWJzY3JpYmVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGlzX3N1YnNjcmliZWQgdCB+dG9fID0gdC5zdWJzY3JpYmVyc19pbmRleCA+PSAwICYmIEJ1c19pZC5lcXVhbCB0LmJ1c19pZCB0b19cblxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBjYWxsYmFjayA9IF9cbiAgICAgICAgOyBidXNfaWQgPSBfXG4gICAgICAgIDsgZXh0cmFjdF9leG5cbiAgICAgICAgOyBzdWJzY3JpYmVyc19pbmRleFxuICAgICAgICA7IG9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIDsgb25fY2xvc2UgPSBfXG4gICAgICAgIDsgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH1cbiAgICA6IFNleHAudFxuICAgID1cbiAgICBMaXN0XG4gICAgICBbIEF0b20gXCJCdXMuU3Vic2NyaWJlci50XCJcbiAgICAgIDsgWyVtZXNzYWdlXG4gICAgICAgIFwiXCJcbiAgICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6XG4gICAgICAgICAgICAoaWYgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3Vic2NyaWJlcnNfaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoaW50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICAob25fY2FsbGJhY2tfcmFpc2UgOiAoKEVycm9yLnQgLT4gdW5pdCkgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH5leHRyYWN0X2V4bjpcbiAgICAgICAgICAgIChpZiBleHRyYWN0X2V4biB0aGVuIFNvbWUgdHJ1ZSBlbHNlIE5vbmUgOiAoYm9vbCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgKHN1YnNjcmliZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmJ1c19pZDppZ25vcmVcbiAgICAgICAgfmNhbGxiYWNrOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgICAgfmV4dHJhY3RfZXhuOmlnbm9yZVxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6aWdub3JlXG4gICAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgICAgfm9uX2Nsb3NlOmlnbm9yZVxuICAgICAgICB+c3Vic2NyaWJlZF9mcm9tOmlnbm9yZSlcbiAgOztcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIHN1YnNjcmliZWRfZnJvbVxuICAgICAgICB+Y2FsbGJhY2tcbiAgICAgICAgfmJ1c19pZFxuICAgICAgICB+ZXh0cmFjdF9leG5cbiAgICAgICAgfnN1YnNjcmliZXJzX2luZGV4XG4gICAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICAgICAgICB+b25fY2xvc2VcbiAgICA9XG4gICAgeyBidXNfaWRcbiAgICA7IGNhbGxiYWNrXG4gICAgOyBleHRyYWN0X2V4blxuICAgIDsgc3Vic2NyaWJlcnNfaW5kZXhcbiAgICA7IG9uX2NhbGxiYWNrX3JhaXNlXG4gICAgOyBvbl9jbG9zZVxuICAgIDsgc3Vic2NyaWJlZF9mcm9tXG4gICAgfVxuICA7O1xuZW5kXG5cbnR5cGUgKCdjYWxsYmFjaywgJ3BoYW50b20pIHQgPVxuICB7IGJ1c19pZCA6IEJ1c19pZC50XG4gIDsgbmFtZSA6IEluZm8udCBvcHRpb25cbiAgOyBjYWxsYmFja19hcml0eSA6ICdjYWxsYmFjayBDYWxsYmFja19hcml0eS50XG4gIDsgY3JlYXRlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udFxuICA7IG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50XG4gIDsgb25fY2FsbGJhY2tfcmFpc2UgOiBFcnJvci50IC0+IHVuaXRcbiAgOyBsYXN0X3ZhbHVlIDogJ2NhbGxiYWNrIExhc3RfdmFsdWUudCBvcHRpb25cbiAgOyBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICA7IG11dGFibGUgd3JpdGVfZXZlcl9jYWxsZWQgOiBib29sXG4gIDsgbXV0YWJsZSBudW1fc3Vic2NyaWJlcnMgOiBpbnRcbiAgOyAoKiBbc3Vic2NyaWJlcnNdIGNvbnRhaW5zIGFsbCBzdWJzY3JpYmVycyB0byB0aGUgYnVzLCBpbiBhIGNvbnRpZ3VvdXMgcHJlZml4IGZyb21cbiAgICAgICBpbmRleCBbMF0gdG8gW251bV9zdWJzY3JpYmVycyAtIDFdLiAqKVxuICAgIG11dGFibGUgc3Vic2NyaWJlcnMgOiAnY2FsbGJhY2sgU3Vic2NyaWJlci50IE9wdGlvbl9hcnJheS50XG4gIDsgKCogW2NhbGxiYWNrc10gaG9sZHMgdGhlIGNhbGxiYWNrcyBvZiB0aGUgY29ycmVzcG9uZGluZyBlbnRyaWVzIG9mIFtzdWJzY3JpYmVyc10uICopXG4gICAgbXV0YWJsZSBjYWxsYmFja3MgOiAnY2FsbGJhY2sgT3B0aW9uX2FycmF5LnRcbiAgOyBtdXRhYmxlIHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgOiAnY2FsbGJhY2sgU3Vic2NyaWJlci50IGxpc3RcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgc2V4cF9vZl90XG4gICAgICBfXG4gICAgICBfXG4gICAgICB7IGJ1c19pZCA9IF9cbiAgICAgIDsgY2FsbGJhY2tfYXJpdHlcbiAgICAgIDsgY2FsbGJhY2tzID0gX1xuICAgICAgOyBjcmVhdGVkX2Zyb21cbiAgICAgIDsgbGFzdF92YWx1ZSA9IF9cbiAgICAgIDsgbmFtZVxuICAgICAgOyBudW1fc3Vic2NyaWJlcnNcbiAgICAgIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgICA7IG9uX2NhbGxiYWNrX3JhaXNlID0gX1xuICAgICAgOyBzdGF0ZVxuICAgICAgOyBzdWJzY3JpYmVyc1xuICAgICAgOyB3cml0ZV9ldmVyX2NhbGxlZFxuICAgICAgOyB1bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlID0gX1xuICAgICAgfVxuICA9XG4gIGxldCBzdWJzY3JpYmVycyA9XG4gICAgQXJyYXkuaW5pdCBudW1fc3Vic2NyaWJlcnMgfmY6KGZ1biBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gc3Vic2NyaWJlcnMgaSlcbiAgaW5cbiAgWyVtZXNzYWdlXG4gICAgXCJcIlxuICAgICAgKG5hbWUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgIChjYWxsYmFja19hcml0eSA6IF8gQ2FsbGJhY2tfYXJpdHkudClcbiAgICAgIChjcmVhdGVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KVxuICAgICAgKG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50KVxuICAgICAgKHN0YXRlIDogU3RhdGUudClcbiAgICAgICh3cml0ZV9ldmVyX2NhbGxlZCA6IGJvb2wpXG4gICAgICAoc3Vic2NyaWJlcnMgOiBfIFN1YnNjcmliZXIudCBBcnJheS50KV1cbjs7XG5cbnR5cGUgKCdjYWxsYmFjaywgJ3BoYW50b20pIGJ1cyA9ICgnY2FsbGJhY2ssICdwaGFudG9tKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCByZWFkX29ubHkgdCA9ICh0IDo+IChfLCByZWFkKSB0KVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmJ1c19pZDppZ25vcmVcbiAgICAgIH5uYW1lOmlnbm9yZVxuICAgICAgfmNhbGxiYWNrczpcbiAgICAgICAgKGNoZWNrIChmdW4gY2FsbGJhY2tzIC0+XG4gICAgICAgICAgIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCBjYWxsYmFja3MgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuc3Vic2NyaWJlcnMpO1xuICAgICAgICAgICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBjYWxsYmFja3MgLSAxIGRvXG4gICAgICAgICAgICAgaWYgaSA8IHQubnVtX3N1YnNjcmliZXJzXG4gICAgICAgICAgICAgdGhlbiBpbnZhcmlhbnRfYSAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBjYWxsYmFja3MgaSlcbiAgICAgICAgICAgICBlbHNlIGFzc2VydCAoT3B0aW9uX2FycmF5LmlzX25vbmUgY2FsbGJhY2tzIGkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfmNhbGxiYWNrX2FyaXR5Omlnbm9yZVxuICAgICAgfmNyZWF0ZWRfZnJvbTppZ25vcmVcbiAgICAgIH5udW1fc3Vic2NyaWJlcnM6KGNoZWNrIChmdW4gbnVtX3N1YnNjcmliZXJzIC0+IGFzc2VydCAobnVtX3N1YnNjcmliZXJzID49IDApKSlcbiAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6aWdub3JlXG4gICAgICB+b25fY2FsbGJhY2tfcmFpc2U6aWdub3JlXG4gICAgICB+bGFzdF92YWx1ZTppZ25vcmVcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH53cml0ZV9ldmVyX2NhbGxlZDppZ25vcmVcbiAgICAgIH5zdWJzY3JpYmVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gc3Vic2NyaWJlcnMgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggc3Vic2NyaWJlcnMgLSAxIGRvXG4gICAgICAgICAgICAgaWYgaSA8IHQubnVtX3N1YnNjcmliZXJzXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gc3Vic2NyaWJlcnMgaSBpblxuICAgICAgICAgICAgICAgU3Vic2NyaWJlci5pbnZhcmlhbnQgaW52YXJpYW50X2Egc3Vic2NyaWJlcjtcbiAgICAgICAgICAgICAgIGFzc2VydCAoaSA9IHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXgpKVxuICAgICAgICAgICAgIGVsc2UgYXNzZXJ0IChPcHRpb25fYXJyYXkuaXNfbm9uZSBzdWJzY3JpYmVycyBpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlOmlnbm9yZSlcbjs7XG5cbmxldCBpc19jbG9zZWQgdCA9IFN0YXRlLmlzX2Nsb3NlZCB0LnN0YXRlXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgJ2NhbGxiYWNrIHQgPSAoJ2NhbGxiYWNrLCByZWFkX3dyaXRlKSBidXMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5tb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gIHR5cGUgJ2NhbGxiYWNrIHQgPSAoJ2NhbGxiYWNrLCByZWFkKSBidXMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5sZXRbQGNvbGRdIHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiW0J1cy53cml0ZV0gY2FsbGVkIG9uIGNsb3NlZCBidXNcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiW0J1cy53cml0ZV0gY2FsbGVkIGZyb20gY2FsbGJhY2sgb24gdGhlIHNhbWUgYnVzXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogKF8sIF8pIHRdXG4gIHwgT2tfdG9fd3JpdGUgLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5zdWJzY3JpYmVyc1xuXG5sZXQgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHQgPVxuICBpZiB0Lm51bV9zdWJzY3JpYmVycyAqIDQgPD0gY2FwYWNpdHkgdFxuICB0aGVuIChcbiAgICBsZXQgZGVzaXJlZF9jYXBhY2l0eSA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gICAgbGV0IGNvcHlfYW5kX3NocmluayBhcnJheSA9XG4gICAgICBsZXQgbmV3X2FycmF5ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmRlc2lyZWRfY2FwYWNpdHkgaW5cbiAgICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICAgIH5zcmM6YXJyYXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0Om5ld19hcnJheVxuICAgICAgICB+ZHN0X3BvczowXG4gICAgICAgIH5sZW46dC5udW1fc3Vic2NyaWJlcnM7XG4gICAgICBuZXdfYXJyYXlcbiAgICBpblxuICAgIHQuc3Vic2NyaWJlcnMgPC0gY29weV9hbmRfc2hyaW5rIHQuc3Vic2NyaWJlcnM7XG4gICAgdC5jYWxsYmFja3MgPC0gY29weV9hbmRfc2hyaW5rIHQuY2FsbGJhY2tzKVxuOztcblxubGV0IGFkZF9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgfmF0X3N1YnNjcmliZXJzX2luZGV4ID1cbiAgc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCA8LSBhdF9zdWJzY3JpYmVyc19pbmRleDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuc3Vic2NyaWJlcnMgYXRfc3Vic2NyaWJlcnNfaW5kZXggc3Vic2NyaWJlcjtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuY2FsbGJhY2tzIGF0X3N1YnNjcmliZXJzX2luZGV4IHN1YnNjcmliZXIuY2FsbGJhY2tcbjs7XG5cbmxldCByZW1vdmVfc3Vic2NyaWJlciB0IChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpID1cbiAgbGV0IHN1YnNjcmliZXJzX2luZGV4ID0gc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCBpblxuICBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IDwtIC0xO1xuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5zdWJzY3JpYmVycyBzdWJzY3JpYmVyc19pbmRleDtcbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuY2FsbGJhY2tzIHN1YnNjcmliZXJzX2luZGV4XG47O1xuXG5sZXQgdW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0IChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpID1cbiAgbGV0IHN1YnNjcmliZXJfaW5kZXggPSBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IGluXG4gIGxldCBsYXN0X3N1YnNjcmliZXJfaW5kZXggPSB0Lm51bV9zdWJzY3JpYmVycyAtIDEgaW5cbiAgcmVtb3ZlX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyO1xuICBpZiBzdWJzY3JpYmVyX2luZGV4IDwgbGFzdF9zdWJzY3JpYmVyX2luZGV4XG4gIHRoZW4gKFxuICAgIGxldCBsYXN0X3N1YnNjcmliZXIgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuc3Vic2NyaWJlcnMgbGFzdF9zdWJzY3JpYmVyX2luZGV4IGluXG4gICAgcmVtb3ZlX3N1YnNjcmliZXIgdCBsYXN0X3N1YnNjcmliZXI7XG4gICAgYWRkX3N1YnNjcmliZXIgdCBsYXN0X3N1YnNjcmliZXIgfmF0X3N1YnNjcmliZXJzX2luZGV4OnN1YnNjcmliZXJfaW5kZXgpO1xuICB0Lm51bV9zdWJzY3JpYmVycyA8LSB0Lm51bV9zdWJzY3JpYmVycyAtIDE7XG4gIG1heWJlX3Nocmlua19jYXBhY2l0eSB0XG47O1xuXG5sZXQgdW5zdWJzY3JpYmUgdCBzdWJzY3JpYmVyID1cbiAgaWYgU3Vic2NyaWJlci5pc19zdWJzY3JpYmVkIHN1YnNjcmliZXIgfnRvXzp0LmJ1c19pZFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+XG4gICAgICB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPC0gc3Vic2NyaWJlciA6OiB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGVcbiAgICB8IENsb3NlZCAtPlxuICAgICAgKCogVGhpcyBjYW4gaGFwcGVuIGlmIGR1cmluZyBbd3JpdGVdLCBbdW5zdWJzY3JpYmVdIGlzIGNhbGxlZCBhZnRlciBbY2xvc2VdLiAgV2VcbiAgICAgICAgIGRvbid0IGRvIGFueXRoaW5nIGhlcmUgYmVjYXVzZSBhbGwgc3Vic2NyaWJlcnMgd2lsbCBiZSB1bnN1YnNjcmliZWQgYWZ0ZXIgdGhlXG4gICAgICAgICBbd3JpdGVdIGZpbmlzaGVzLiAqKVxuICAgICAgKClcbiAgICB8IE9rX3RvX3dyaXRlIC0+IHVuc3Vic2NyaWJlX2Fzc3VtaW5nX3ZhbGlkX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyKVxuOztcblxubGV0W0Bjb2xkXSB1bnN1YnNjcmliZV9hZnRlcl9maW5pc2hfd3JpdGUgdCA9XG4gIExpc3QuaXRlciB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgfmY6KHVuc3Vic2NyaWJlX2Fzc3VtaW5nX3ZhbGlkX3N1YnNjcmliZXIgdCk7XG4gIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA8LSBbXVxuOztcblxubGV0W0Bjb2xkXSB1bnN1YnNjcmliZV9hbGwgdCA9XG4gIGFzc2VydCAoaXNfY2xvc2VkIHQpO1xuICBmb3IgaSA9IDAgdG8gdC5udW1fc3Vic2NyaWJlcnMgLSAxIGRvXG4gICAgbGV0IHN1YnNjcmliZXIgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuc3Vic2NyaWJlcnMgaSBpblxuICAgIE9wdGlvbi5pdGVyIHN1YnNjcmliZXIub25fY2xvc2UgfmY6KGZ1biBvbl9jbG9zZSAtPiBvbl9jbG9zZSAoKSk7XG4gICAgcmVtb3ZlX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyXG4gIGRvbmU7XG4gIHQubnVtX3N1YnNjcmliZXJzIDwtIDA7XG4gIG1heWJlX3Nocmlua19jYXBhY2l0eSB0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGZpbmlzaF93cml0ZSB0ID1cbiAgaWYgbm90IChMaXN0LmlzX2VtcHR5IHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSkgdGhlbiB1bnN1YnNjcmliZV9hZnRlcl9maW5pc2hfd3JpdGUgdDtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+IHVuc3Vic2NyaWJlX2FsbCB0XG4gIHwgT2tfdG9fd3JpdGUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gdC5zdGF0ZSA8LSBPa190b193cml0ZVxuOztcblxubGV0W0Bjb2xkXSBjbG9zZSB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+ICgpXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gdC5zdGF0ZSA8LSBDbG9zZWRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIHQuc3RhdGUgPC0gQ2xvc2VkO1xuICAgIHVuc3Vic2NyaWJlX2FsbCB0XG47O1xuXG5sZXQgY2FsbF9vbl9jYWxsYmFja19yYWlzZSB0IGVycm9yID1cbiAgdHJ5IHQub25fY2FsbGJhY2tfcmFpc2UgZXJyb3Igd2l0aFxuICB8IGV4biAtPlxuICAgIGNsb3NlIHQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgY2FsbGJhY2tfcmFpc2VkIHQgaSBleG4gPVxuICAoKiBbaV0gd2FzIGluY3JlbWVudGVkIGJlZm9yZSB0aGUgY2FsbGJhY2sgd2FzIGNhbGxlZCwgc28gd2UgaGF2ZSB0byBzdWJ0cmFjdCBvbmVcbiAgICAgaGVyZS4gIFdlIGRvIHRoaXMgaGVyZSwgcmF0aGVyIHRoYW4gYXQgdGhlIGNhbGwgc2l0ZSwgYmVjYXVzZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgICAgY2FsbCBzaXRlcyBkdWUgdG8gdGhlIG9wdGltaXphdGlvbnMgbmVlZGVkIHRvIGtlZXAgdGhpcyB6ZXJvLWFsbG9jLiAqKVxuICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyAoaSAtIDEpIGluXG4gIGxldCBlcnJvciA9XG4gICAgbWF0Y2ggc3Vic2NyaWJlci5leHRyYWN0X2V4biB3aXRoXG4gICAgfCB0cnVlIC0+IEVycm9yLm9mX2V4biBleG5cbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBUaGlzIFtCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpXSBpcyBpbnRlbmRlZCB0byBncmFiIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFt0cnlcbiAgICAgICAgIC4uLiB3aXRoXSdzIHRoYXQgY2FsbCBbY2FsbGJhY2tfcmFpc2VkXS4gIFRoZSBjYWxsIGlzIGhlcmUgcmF0aGVyIHRoYW4gZWFybGllciBzb1xuICAgICAgICAgdGhhdCB3ZSBvbmx5IGRvIGl0IHdoZW4gW3N1YnNjcmliZXIuZXh0cmFjdF9leG4gPSBmYWxzZV0uICopXG4gICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiQnVzIHN1YnNjcmliZXIgcmFpc2VkXCJcbiAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgIChiYWNrdHJhY2UgOiBCYWNrdHJhY2UudClcbiAgICAgICAgICAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KV1cbiAgICAgIHw+IFslb2Zfc2V4cDogRXJyb3IudF1cbiAgaW5cbiAgbWF0Y2ggc3Vic2NyaWJlci5vbl9jYWxsYmFja19yYWlzZSB3aXRoXG4gIHwgTm9uZSAtPiBjYWxsX29uX2NhbGxiYWNrX3JhaXNlIHQgZXJyb3JcbiAgfCBTb21lIGYgLT5cbiAgICAodHJ5IGYgZXJyb3Igd2l0aFxuICAgICB8IGV4biAtPlxuICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgY2FsbF9vbl9jYWxsYmFja19yYWlzZVxuICAgICAgICAgdFxuICAgICAgICAgKGxldCBvcmlnaW5hbF9lcnJvciA9IGVycm9yIGluXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIkJ1cyBzdWJzY3JpYmVyJ3MgW29uX2NhbGxiYWNrX3JhaXNlXSByYWlzZWRcIlxuICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAoYmFja3RyYWNlIDogQmFja3RyYWNlLnQpXG4gICAgICAgICAgICAgIChvcmlnaW5hbF9lcnJvciA6IEVycm9yLnQpXVxuICAgICAgICAgIHw+IFslb2Zfc2V4cDogRXJyb3IudF0pKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGEgaSA9XG4gICgqIFdlIGNvbnNpZGVyZWQgdXNpbmcgW09wdGlvbl9hcnJheS5nZXRfc29tZV9leG5dIGFuZFxuICAgICBbT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG5dIGhlcmUsIGJ1dCBib3RoIGFyZSBzaWduaWZpY2FudGx5IHNsb3dlci4gIENoZWNrXG4gICAgIHRoZSB3cml0ZSBiZW5jaG1hcmtzIGluIFtiZW5jaF9idXMubWxdIGJlZm9yZSBjaGFuZ2luZyB0aGlzLiAqKVxuICBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgYSBpXG47O1xuXG5sZXQgd3JpdGVfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTFcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGVfbG9jYWxfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyAoYTEgW0Bsb2NhbF0pID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTJfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTJcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUzX25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgYTMgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyIGEzXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlNF9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0ID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMiBhMyBhNFxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTVfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCBhNSA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTIgYTMgYTQgYTVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG4oKiBUaGUgW3dyaXRlX05dIGZ1bmN0aW9ucyBhcmUgd3JpdHRlbiB0byBtaW5pbWlzZSByZWdpc3RlcnMgbGl2ZSBhY3Jvc3MgZnVuY3Rpb24gY2FsbHNcbiAgICh0aGVzZSBoYXZlIHRvIGJlIHNwaWxsZWQpLiAgVGhleSBhcmUgYWxzbyBhbm5vdGF0ZWQgZm9yIHBhcnRpYWwgaW5saW5pbmcgKHRoZVxuICAgb25lLWNhbGxiYWNrIGNhc2UgYmVjb21lcyBpbmxpbmVkIHdoZXJlYXMgdGhlID4xLWNhbGxiYWNrLWNhc2UgcmVxdWlyZXMgYSBmdXJ0aGVyXG4gICBkaXJlY3QgY2FsbCkuICopXG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUgdCBhMSA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQxIGxhc3RfdmFsdWUgYTEpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlX2xvY2FsIHQgKGExIFtAbG9jYWxdKSA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlX2xvY2FsX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlMiB0IGExIGEyID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGUyX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQyIGxhc3RfdmFsdWUgYTEgYTIpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlMyB0IGExIGEyIGEzID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGUzX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQzIGxhc3RfdmFsdWUgYTEgYTIgYTMpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlNCB0IGExIGEyIGEzIGE0ID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyBhNCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGU0X25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQ0IGxhc3RfdmFsdWUgYTEgYTIgYTMgYTQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlNSB0IGExIGEyIGEzIGE0IGE1ID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyBhNCBhNSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGU1X25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQgYTUpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQ1IGxhc3RfdmFsdWUgYTEgYTIgYTMgYTQgYTUpXG47O1xuXG5sZXQgYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIHQgPVxuICBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUuYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgdC5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbjs7XG5cbmxldCBjcmVhdGVfZXhuXG4gICAgICA/bmFtZVxuICAgICAgY3JlYXRlZF9mcm9tXG4gICAgICBjYWxsYmFja19hcml0eVxuICAgICAgfihvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgOiBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUudClcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICA9XG4gIGxldCBsYXN0X3ZhbHVlID1cbiAgICBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUuc2F2ZV9sYXN0X3ZhbHVlX2V4blxuICAgICAgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgICBjYWxsYmFja19hcml0eVxuICBpblxuICB7IGJ1c19pZCA9IEJ1c19pZC5jcmVhdGUgKClcbiAgOyBuYW1lXG4gIDsgY2FsbGJhY2tfYXJpdHlcbiAgOyBjcmVhdGVkX2Zyb21cbiAgOyBudW1fc3Vic2NyaWJlcnMgPSAwXG4gIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgOyBsYXN0X3ZhbHVlXG4gIDsgc3Vic2NyaWJlcnMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46MFxuICA7IGNhbGxiYWNrcyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjowXG4gIDsgc3RhdGUgPSBPa190b193cml0ZVxuICA7IHdyaXRlX2V2ZXJfY2FsbGVkID0gZmFsc2VcbiAgOyB1bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlID0gW11cbiAgfVxuOztcblxubGV0IGNhbl9zdWJzY3JpYmUgdCA9IGFsbG93X3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSB0IHx8IG5vdCB0LndyaXRlX2V2ZXJfY2FsbGVkXG5cbmxldCBlbmxhcmdlX2NhcGFjaXR5IHQgPVxuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQubWF4IDEgKGNhcGFjaXR5ICogMikgaW5cbiAgbGV0IGNvcHlfYW5kX2RvdWJsZSBhcnJheSA9XG4gICAgbGV0IG5ld19hcnJheSA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdCB+c3JjOmFycmF5IH5zcmNfcG9zOjAgfmRzdDpuZXdfYXJyYXkgfmRzdF9wb3M6MCB+bGVuOmNhcGFjaXR5O1xuICAgIG5ld19hcnJheVxuICBpblxuICB0LnN1YnNjcmliZXJzIDwtIGNvcHlfYW5kX2RvdWJsZSB0LnN1YnNjcmliZXJzO1xuICB0LmNhbGxiYWNrcyA8LSBjb3B5X2FuZF9kb3VibGUgdC5jYWxsYmFja3Ncbjs7XG5cbmxldCBzdWJzY3JpYmVfZXhuXG4gICAgICA/KGV4dHJhY3RfZXhuID0gZmFsc2UpXG4gICAgICA/b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgID9vbl9jbG9zZVxuICAgICAgdFxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICB+ZjpjYWxsYmFja1xuICA9XG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJ1cy5zdWJzY3JpYmVfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiXG4gICAgICBbJXNleHAgfn4oc3Vic2NyaWJlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udCksIHsgYnVzID0gKHQgOiAoXywgXykgdCkgfV1cbiAgICAgIFslc2V4cF9vZjogU2V4cC50XTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQW55dGhpbmcgdGhhdCBzYXRpc2ZpZXMgdGhlIHJldHVybiB0eXBlIHdpbGwgZG8uICBTaW5jZSB0aGUgc3Vic2NyaWJlciBpcyBuZXZlclxuICAgICAgIHN0b3JlZCBpbiB0aGUgYXJyYXlzLCB0aGUgW29uX2Nsb3NlXSBjYWxsYmFjayB3aWxsIG5ldmVyIGJlIGNhbGxlZC4gKilcbiAgICBTdWJzY3JpYmVyLmNyZWF0ZVxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICB+YnVzX2lkOnQuYnVzX2lkXG4gICAgICB+Y2FsbGJhY2tcbiAgICAgIH5leHRyYWN0X2V4blxuICAgICAgfnN1YnNjcmliZXJzX2luZGV4OigtMSlcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICAgICAgfm9uX2Nsb3NlXG4gIHwgT2tfdG9fd3JpdGUgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPlxuICAgICgqIFRoZSBjb2RlIGJlbG93IHNpZGUgZWZmZWN0cyBbdF0sIHdoaWNoIHBvdGVudGlhbGx5IGNvdWxkIGludGVyZmVyZSB3aXRoIGEgd3JpdGUgaW5cbiAgICAgICBwcm9ncmVzcy4gIEhvd2V2ZXIsIHRoZSBzaWRlIGVmZmVjdHMgZG9uJ3QgY2hhbmdlIHRoZSBwcmVmaXggb2YgW3QuY2FsbGJhY2tzXSB0aGF0XG4gICAgICAgd3JpdGUgdXNlczsgdGhleSBvbmx5IGNoYW5nZSBbdC5jYWxsYmFja3NdIGJleW9uZCB0aGF0IHByZWZpeC4gIEFuZCBhbGwgd3JpdGVzXG4gICAgICAgZXh0cmFjdCBbdC5udW1fc3Vic2NyaWJlcnNdIGF0IHRoZSBzdGFydCwgc28gdGhhdCB0aGV5IHdpbGwgbm90IHNlZSBhbnkgc3Vic2VxdWVudFxuICAgICAgIGNoYW5nZXMgdG8gaXQuICopXG4gICAgbGV0IHN1YnNjcmliZXIgPVxuICAgICAgU3Vic2NyaWJlci5jcmVhdGVcbiAgICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH5idXNfaWQ6dC5idXNfaWRcbiAgICAgICAgfmNhbGxiYWNrXG4gICAgICAgIH5leHRyYWN0X2V4blxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6dC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIH5vbl9jbG9zZVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgdCA9IHQubnVtX3N1YnNjcmliZXJzIHRoZW4gZW5sYXJnZV9jYXBhY2l0eSB0O1xuICAgIGFkZF9zdWJzY3JpYmVyIHQgc3Vic2NyaWJlciB+YXRfc3Vic2NyaWJlcnNfaW5kZXg6dC5udW1fc3Vic2NyaWJlcnM7XG4gICAgdC5udW1fc3Vic2NyaWJlcnMgPC0gdC5udW1fc3Vic2NyaWJlcnMgKyAxO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZW5kIGxhc3RfdmFsdWUgY2FsbGJhY2spO1xuICAgIHN1YnNjcmliZXJcbjs7XG5cbmxldCBpdGVyX2V4biA/ZXh0cmFjdF9leG4gdCBzdWJzY3JpYmVkX2Zyb20gfmYgPVxuICBpZiBub3QgKGNhbl9zdWJzY3JpYmUgdClcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQnVzLml0ZXJfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlnbm9yZSAoc3Vic2NyaWJlX2V4biA/ZXh0cmFjdF9leG4gdCBzdWJzY3JpYmVkX2Zyb20gfmYgOiBfIFN1YnNjcmliZXIudClcbjs7XG5cbm1vZHVsZSBGb2xkX2FyaXR5ID0gc3RydWN0XG4gIHR5cGUgKF8sIF8sIF8pIHQgPVxuICAgIHwgQXJpdHkxIDogKCdhIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHkyIDogKCdhIC0+ICdiIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHkzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHk0IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHk1XG4gICAgICA6ICggJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdFxuICAgICAgICAsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdzXG4gICAgICAgICwgJ3MgKVxuICAgICAgICAgIHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9leG5cbiAgICAgID9leHRyYWN0X2V4blxuICAgICAgKHR5cGUgYyBmIHMpXG4gICAgICAodCA6IChjLCBfKSB0KVxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAoZm9sZF9hcml0eSA6IChjLCBmLCBzKSBGb2xkX2FyaXR5LnQpXG4gICAgICB+KGluaXQgOiBzKVxuICAgICAgfihmIDogZilcbiAgPVxuICBsZXQgc3RhdGUgPSByZWYgaW5pdCBpblxuICBpZiBub3QgKGNhbl9zdWJzY3JpYmUgdClcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQnVzLmZvbGRfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGl0ZXJfZXhuXG4gICAgP2V4dHJhY3RfZXhuXG4gICAgdFxuICAgIHN1YnNjcmliZWRfZnJvbVxuICAgIH5mOlxuICAgICAgKG1hdGNoIGZvbGRfYXJpdHkgd2l0aFxuICAgICAgIHwgQXJpdHkxIC0+IGZ1biBhMSAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMVxuICAgICAgIHwgQXJpdHkyIC0+IGZ1biBhMSBhMiAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMlxuICAgICAgIHwgQXJpdHkzIC0+IGZ1biBhMSBhMiBhMyAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhM1xuICAgICAgIHwgQXJpdHk0IC0+IGZ1biBhMSBhMiBhMyBhNCAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhMyBhNFxuICAgICAgIHwgQXJpdHk1IC0+IGZ1biBhMSBhMiBhMyBhNCBhNSAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhMyBhNCBhNSlcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgYXNzZXJ0X25vX2FsbG9jYXRpb24gYnVzIGNhbGxiYWNrIHdyaXRlID1cbiAgICAgIGxldCBidXNfciA9IHJlYWRfb25seSBidXMgaW5cbiAgICAgIGlnbm9yZSAoc3Vic2NyaWJlX2V4biBidXNfciBbJWhlcmVdIH5mOmNhbGxiYWNrIDogXyBTdWJzY3JpYmVyLnQpO1xuICAgICAgbGV0IHN0YXJ0aW5nX21pbm9yX3dvcmRzID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgICAgIGxldCBzdGFydGluZ19tYWpvcl93b3JkcyA9IEdjLm1ham9yX3dvcmRzICgpIGluXG4gICAgICB3cml0ZSAoKTtcbiAgICAgIGxldCBlbmRpbmdfbWlub3Jfd29yZHMgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICAgICAgbGV0IGVuZGluZ19tYWpvcl93b3JkcyA9IEdjLm1ham9yX3dvcmRzICgpIGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChlbmRpbmdfbWlub3Jfd29yZHMgLSBzdGFydGluZ19taW5vcl93b3JkcykgfmV4cGVjdDowO1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoZW5kaW5nX21ham9yX3dvcmRzIC0gc3RhcnRpbmdfbWFqb3Jfd29yZHMpIH5leHBlY3Q6MFxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHRlc3Qgb25seSB3b3JrcyB3aGVuIFt3cml0ZV0gaXMgcHJvcGVybHkgaW5saW5lZC4gIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0XG4gICAgICAgW3dyaXRlXSBuZXZlciBhbGxvY2F0ZXMgaW4gYW55IHNpdHVhdGlvbi4gIEZvciBleGFtcGxlLCBpZiB0aGlzIHRlc3QgaXMgbW92ZWQgdG9cbiAgICAgICBhbm90aGVyIGxpYnJhcnkgYW5kIHJ1biB3aXRoIFhfTElCUkFSWV9JTkxJTklORz1mYWxzZSwgaXQgZmFpbHMuICopXG4gICAgbGV0JXRlc3RfdW5pdCBcIndyaXRlIGRvZXNuJ3QgYWxsb2NhdGUgd2hlbiBpbmxpbmVkXCIgPVxuICAgICAgbGV0IGNyZWF0ZSBjcmVhdGVkX2Zyb20gYXJpdHkgPVxuICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgY3JlYXRlZF9mcm9tXG4gICAgICAgICAgYXJpdHlcbiAgICAgICAgICB+b25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlOlJhaXNlXG4gICAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOkVycm9yLnJhaXNlXG4gICAgICBpblxuICAgICAgbGV0IGJ1czEgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTEgaW5cbiAgICAgIGxldCBidXMyID0gY3JlYXRlIFslaGVyZV0gQXJpdHkyIGluXG4gICAgICBsZXQgYnVzMyA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5MyBpblxuICAgICAgbGV0IGJ1czQgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTQgaW5cbiAgICAgIGxldCBidXM1ID0gY3JlYXRlIFslaGVyZV0gQXJpdHk1IGluXG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMxIChmdW4gKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUgYnVzMSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMyIChmdW4gKCkgKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUyIGJ1czIgKCkgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb24gYnVzMyAoZnVuICgpICgpICgpIC0+ICgpKSAoZnVuICgpIC0+IHdyaXRlMyBidXMzICgpICgpICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uXG4gICAgICAgIGJ1czRcbiAgICAgICAgKGZ1biAoKSAoKSAoKSAoKSAtPiAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiB3cml0ZTQgYnVzNCAoKSAoKSAoKSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvblxuICAgICAgICBidXM1XG4gICAgICAgIChmdW4gKCkgKCkgKCkgKCkgKCkgLT4gKCkpXG4gICAgICAgIChmdW4gKCkgLT4gd3JpdGU1IGJ1czUgKCkgKCkgKCkgKCkgKCkpXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgQXN5bmNfa2VybmVsX3JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbF9pbnRmXG5cbigqIFRoaXMgcG9zaXRpb24gc2hvd3MgdXAgaW4gdGVzdHMgaW4gYSB3YXkgdGhhdCBpcyBkaWZmaWN1bHQgdG8gc3VwcHJlc3MsIHNvIHdlIGRlZmluZSBpdFxuICAgaGVyZSBpbiBhIHBsYWNlIHRoYXQgaXMgdW5saWtlbHkgdG8gY2hhbmdlIHZlcnkgb2Z0ZW4gKilcbmxldCBkdW1teV9zcmNfcG9zX3RoYXRfc2hvd3NfdXBfaW5fdGVzdHMgPSBbJWhlcmVdXG5cbm1vZHVsZSBNYWtlIChDb25uIDogQ2xvc2FibGUpID0gc3RydWN0XG4gIG1vZHVsZSBDb25uID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb25uXG5cbiAgICBsZXQgc2V4cF9vZl90IChfIDogdCkgOiBTZXhwLnQgPSBBdG9tIFwiPENvbm4udD5cIlxuICBlbmRcblxuICB0eXBlIGNvbm4gPSBDb25uLnRcblxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgIHwgT2J0YWluZWRfYWRkcmVzcyBvZiAnYWRkcmVzc1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBvZiBFcnJvci50XG4gICAgICB8IENvbm5lY3RlZCBvZiAoY29ubltAc2V4cC5vcGFxdWVdKVxuICAgICAgfCBEaXNjb25uZWN0ZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYWRkcmVzcyBldmVudCA9ICdhZGRyZXNzIHRcblxuICAgIG1vZHVsZSBIYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgICB7IHNlcnZlcl9uYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb25fZXZlbnQgOiAnYWRkcmVzcyBldmVudCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBsb2dfbGV2ZWwgPSBmdW5jdGlvblxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgfCBDb25uZWN0ZWQgXyB8IERpc2Nvbm5lY3RlZCB8IE9idGFpbmVkX2FkZHJlc3MgXyAtPiBgSW5mb1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBfIC0+IGBFcnJvclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlIHQgeyBIYW5kbGVyLnNlcnZlcl9uYW1lID0gXzsgb25fZXZlbnQgfSA9IG9uX2V2ZW50IHRcbiAgZW5kXG5cbiAgKCogQSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gdGhhdCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgYWRkcmVzcyB0eXBlLiAgV2UgaGlkZSBhd2F5IHRoaXNcbiAgICAgdHlwZSBsYXRlciBzaW5jZSBpdCBvbmx5IGFwcGVhcnMgaW4gdGhlIHR5cGUgb2YgW2NyZWF0ZV0uICopXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgIHsgZ2V0X2FkZHJlc3MgOiB1bml0IC0+ICdhZGRyZXNzIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyBjb25uZWN0IDogJ2FkZHJlc3MgLT4gQ29ubi50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyByZXRyeV9kZWxheSA6IHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGUgY29ubiA6IFsgYE9rIG9mIENvbm4udCB8IGBDbG9zZV9zdGFydGVkIF0gSXZhci50XG4gICAgICA7IG11dGFibGUgbmV4dF9jb25uZWN0X3Jlc3VsdCA6IENvbm4udCBPcl9lcnJvci50IEl2YXIudFxuICAgICAgOyBldmVudF9oYW5kbGVyIDogJ2FkZHJlc3MgRXZlbnQuSGFuZGxlci50XG4gICAgICA7IGV2ZW50X2J1cyA6ICh1bml0IEV2ZW50LnQgLT4gdW5pdCwgcmVhZF93cml0ZSkgQnVzLnRcbiAgICAgIDsgY2xvc2Vfc3RhcnRlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgZG9uJ3RfcmVjb25uZWN0IDogdW5pdCBJdmFyLnRcbiAgICAgIDsgYWRkcmVzc19lcXVhbCA6ICdhZGRyZXNzIC0+ICdhZGRyZXNzIC0+IGJvb2xcbiAgICAgIDsgc2V4cF9vZl9hZGRyZXNzIDogJ2FkZHJlc3MgLT4gU2V4cC50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNlcnZlcl9uYW1lIHQgPSB0LmV2ZW50X2hhbmRsZXIuc2VydmVyX25hbWVcblxuICAgIGxldCBoYW5kbGVfZXZlbnQgKHR5cGUgYWRkcmVzcykgdCAoZXZlbnQgOiBhZGRyZXNzIEV2ZW50LnQpID1cbiAgICAgIEJ1cy53cml0ZVxuICAgICAgICB0LmV2ZW50X2J1c1xuICAgICAgICAobWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIChfIDogYWRkcmVzcykgLT4gT2J0YWluZWRfYWRkcmVzcyAoKVxuICAgICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgLT4gQXR0ZW1wdGluZ190b19jb25uZWN0XG4gICAgICAgICB8IEZhaWxlZF90b19jb25uZWN0IGUgLT4gRmFpbGVkX3RvX2Nvbm5lY3QgZVxuICAgICAgICAgfCBDb25uZWN0ZWQgY29ubiAtPiBDb25uZWN0ZWQgY29ublxuICAgICAgICAgfCBEaXNjb25uZWN0ZWQgLT4gRGlzY29ubmVjdGVkKTtcbiAgICAgIEV2ZW50LmhhbmRsZSBldmVudCB0LmV2ZW50X2hhbmRsZXJcbiAgICA7O1xuXG4gICAgKCogVGhpcyBmdW5jdGlvbiBmb2N1c2VzIGluIG9uIHRoZSB0aGUgZXJyb3IgaXRzZWxmLCBkaXNjYXJkaW5nIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoXG4gICAgICAgbW9uaXRvciBjYXVnaHQgdGhlIGVycm9yLCBpZiBhbnkuXG5cbiAgICAgICBJZiB3ZSBkb24ndCBkbyB0aGlzLCB3ZSBzb21ldGltZXMgZW5kIHVwIHdpdGggbm9pc3kgbG9ncyB3aGljaCByZXBvcnQgdGhlIHNhbWUgZXJyb3JcbiAgICAgICBhZ2FpbiBhbmQgYWdhaW4sIGRpZmZlcmluZyBvbmx5IGFzIHRvIHdoYXQgbW9uaXRvciBjYXVnaHQgdGhlbS4gKilcbiAgICBsZXQgc2FtZV9lcnJvciBlMSBlMiA9XG4gICAgICBsZXQgdG9fc2V4cCBlID0gRXhuLnNleHBfb2ZfdCAoTW9uaXRvci5leHRyYWN0X2V4biAoRXJyb3IudG9fZXhuIGUpKSBpblxuICAgICAgU2V4cC5lcXVhbCAodG9fc2V4cCBlMSkgKHRvX3NleHAgZTIpXG4gICAgOztcblxuICAgICgqIENvbnRpbnVlIHRyeWluZyB0byBjb25uZWN0IHVudGlsIHdlIGFyZSBhYmxlIHRvIGRvIHNvLCBpbiB3aGljaCBjYXNlIHdlIHJldHVybiBib3RoXG4gICAgICAgdGhlIG5ldyBjb25uZWN0aW9uIGFuZCBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBvbmNlIHdlIGFyZSByZWFkeSBmb3JcbiAgICAgICB0aGUgbmV4dCByZWNvbm5lY3Rpb24gYXR0ZW1wdC4gKilcbiAgICBsZXQgdHJ5X2Nvbm5lY3RpbmdfdW50aWxfc3VjY2Vzc2Z1bCB0ID1cbiAgICAgICgqIFdlIHRha2UgY2FyZSBub3QgdG8gc3BhbSBsb2dzIHdpdGggdGhlIHNhbWUgbWVzc2FnZSBvdmVyIGFuZCBvdmVyIGJ5IGNvbXBhcmluZ1xuICAgICAgICAgZWFjaCBsb2cgbWVzc2FnZSB0aGUgdGhlIHByZXZpb3VzIG9uZSBvZiB0aGUgc2FtZSB0eXBlLiAqKVxuICAgICAgbGV0IHByZXZpb3VzX2FkZHJlc3MgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHByZXZpb3VzX2Vycm9yID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCBjb25uZWN0ICgpID1cbiAgICAgICAgdC5nZXRfYWRkcmVzcyAoKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBlIC0+IHJldHVybiAoRXJyb3IgZSlcbiAgICAgICAgfCBPayBhZGRyIC0+XG4gICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyA9XG4gICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19hZGRyZXNzIC0+IHQuYWRkcmVzc19lcXVhbCBhZGRyIHByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIHByZXZpb3VzX2FkZHJlc3MgOj0gU29tZSBhZGRyO1xuICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKE9idGFpbmVkX2FkZHJlc3MgYWRkcikpXG4gICAgICAgICAgPj49IGZ1biAoKSAtPiB0LmNvbm5lY3QgYWRkclxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0ICgpID1cbiAgICAgICAgKCogQ2F0Y2ggZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlIHVzZXItcHJvdmlkZWQgW3QuZ2V0X2FkZHJlc3NdIG9yIFt0LmNvbm5lY3RdICopXG4gICAgICAgIERlZmVycmVkLk9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmV4dHJhY3RfZXhuOmFtX3J1bm5pbmdfdGVzdCBjb25uZWN0XG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgIHJldHVybiBgQ2xvc2Vfc3RhcnRlZClcbiAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgdGhlbiByZXR1cm4gYERvbid0X3JlY29ubmVjdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZyA9IHQucmV0cnlfZGVsYXkgKCkgaW5cbiAgICAgICAgICBsZXQlYmluZCBjb25uZWN0X3Jlc3VsdCA9IGNvbm5lY3QgKCkgaW5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IGNvbm5lY3RfcmVzdWx0O1xuICAgICAgICAgIHQubmV4dF9jb25uZWN0X3Jlc3VsdCA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBtYXRjaCBjb25uZWN0X3Jlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayBjb25uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIChgT2sgY29ubik7XG4gICAgICAgICAgICByZXR1cm4gKGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykpXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgIGxldCBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yID1cbiAgICAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzX2Vycm9yIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19lcnIgLT4gc2FtZV9lcnJvciBlcnIgcHJldmlvdXNfZXJyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcHJldmlvdXNfZXJyb3IgOj0gU29tZSBlcnI7XG4gICAgICAgICAgICAoaWYgc2FtZV9hc19wcmV2aW91c19lcnJvclxuICAgICAgICAgICAgIHRoZW4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKEZhaWxlZF90b19jb25uZWN0IGVycikpXG4gICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICBEZWZlcnJlZC5hbnlcbiAgICAgICAgICAgICAgWyByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA+Pj0gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdCA9XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkICgpO1xuICAgICAgSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICAodHlwZSBhZGRyZXNzKVxuICAgICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICAgID8ob25fZXZlbnQgPSBmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuICAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgID8ocmFuZG9tX3N0YXRlID0gYFN0YXRlIFJhbmRvbS5TdGF0ZS5kZWZhdWx0KVxuICAgICAgICAgID8odGltZV9zb3VyY2UgPSBUaW1lX3NvdXJjZS53YWxsX2Nsb2NrICgpKVxuICAgICAgICAgIH5jb25uZWN0XG4gICAgICAgICAgfmFkZHJlc3M6KG1vZHVsZSBBZGRyZXNzIDogQWRkcmVzcyB3aXRoIHR5cGUgdCA9IGFkZHJlc3MpXG4gICAgICAgICAgZ2V0X2FkZHJlc3NcbiAgICAgID1cbiAgICAgIGxldCBldmVudF9oYW5kbGVyID0geyBFdmVudC5IYW5kbGVyLnNlcnZlcl9uYW1lOyBvbl9ldmVudCB9IGluXG4gICAgICBsZXQgZGVmYXVsdF9yZXRyeV9kZWxheSA9XG4gICAgICAgIEZuLmNvbnN0IChUaW1lX25zLlNwYW4ub2Zfc2VjIChpZiBhbV9ydW5uaW5nX3Rlc3QgdGhlbiAwLjEgZWxzZSAxMC4pKVxuICAgICAgaW5cbiAgICAgIGxldCBub25fcmFuZG9taXplZF9kZWxheSA9IE9wdGlvbi52YWx1ZSByZXRyeV9kZWxheSB+ZGVmYXVsdDpkZWZhdWx0X3JldHJ5X2RlbGF5IGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXlfc3BhbiA9XG4gICAgICAgIG1hdGNoIHJhbmRvbV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYE5vbl9yYW5kb20gLT4gbm9uX3JhbmRvbWl6ZWRfZGVsYXlcbiAgICAgICAgfCBgU3RhdGUgcmFuZG9tX3N0YXRlIC0+XG4gICAgICAgICAgZnVuICgpIC0+XG4gICAgICAgICAgICBsZXQgc3BhbiA9IG5vbl9yYW5kb21pemVkX2RlbGF5ICgpIGluXG4gICAgICAgICAgICBsZXQgc3BhbiA9IFRpbWVfbnMuU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICAgICAgbGV0IGRpc3RhbmNlID0gUmFuZG9tLlN0YXRlLmZsb2F0IHJhbmRvbV9zdGF0ZSAoc3BhbiAqLiAwLjMpIGluXG4gICAgICAgICAgICBsZXQgd2FpdCA9XG4gICAgICAgICAgICAgIGlmIFJhbmRvbS5TdGF0ZS5ib29sIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAgICB0aGVuIHNwYW4gKy4gZGlzdGFuY2VcbiAgICAgICAgICAgICAgZWxzZSBzcGFuIC0uIGRpc3RhbmNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVGltZV9ucy5TcGFuLm9mX3NlYyB3YWl0XG4gICAgICBpblxuICAgICAgbGV0IHJldHJ5X2RlbGF5ICgpID0gVGltZV9zb3VyY2UuYWZ0ZXIgdGltZV9zb3VyY2UgKHJldHJ5X2RlbGF5X3NwYW4gKCkpIGluXG4gICAgICBsZXQgdCA9XG4gICAgICAgIHsgZXZlbnRfaGFuZGxlclxuICAgICAgICA7IGV2ZW50X2J1cyA9XG4gICAgICAgICAgICBCdXMuY3JlYXRlX2V4blxuICAgICAgICAgICAgICAoaWYgYW1fcnVubmluZ190ZXN0IHRoZW4gZHVtbXlfc3JjX3Bvc190aGF0X3Nob3dzX3VwX2luX3Rlc3RzIGVsc2UgWyVoZXJlXSlcbiAgICAgICAgICAgICAgQXJpdHkxXG4gICAgICAgICAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6QWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZVxuICAgICAgICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2U6aWdub3JlXG4gICAgICAgIDsgZ2V0X2FkZHJlc3NcbiAgICAgICAgOyBjb25uZWN0XG4gICAgICAgIDsgbmV4dF9jb25uZWN0X3Jlc3VsdCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgcmV0cnlfZGVsYXlcbiAgICAgICAgOyBjb25uID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9zdGFydGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgZG9uJ3RfcmVjb25uZWN0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBhZGRyZXNzX2VxdWFsID0gQWRkcmVzcy5lcXVhbFxuICAgICAgICA7IHNleHBfb2ZfYWRkcmVzcyA9IEFkZHJlc3Muc2V4cF9vZl90XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICAoKiB0aGlzIGxvb3AgZmluaXNoZXMgb25jZSBbY2xvc2UgdF0gaGFzIGJlZW4gY2FsbGVkLCBpbiB3aGljaCBjYXNlIGl0IG1ha2VzIHN1cmUgdG9cbiAgICAgICAgIGxlYXZlIFt0LmNvbm5dIGZpbGxlZCB3aXRoIFtgQ2xvc2Vfc3RhcnRlZF0uICopXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgQEAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkICgpIChmdW4gKCkgLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBoYW5kbGVfZXZlbnQgdCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgaW5cbiAgICAgICAgbWF0Y2glYmluZCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgd2l0aFxuICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBEb24ndF9yZWNvbm5lY3QgLT5cbiAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykgLT5cbiAgICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IChDb25uZWN0ZWQgY29ubikgaW5cbiAgICAgICAgICBsZXQlYmluZCAoKSA9IENvbm4uY2xvc2VfZmluaXNoZWQgY29ubiBpblxuICAgICAgICAgIHQuY29ubiA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IERpc2Nvbm5lY3RlZCBpblxuICAgICAgICAgICgqIHdhaXRzIHVudGlsIFtyZXRyeV9kZWxheSAoKV0gdGltZSBoYXMgcGFzc2VkIHNpbmNlIHRoZSB0aW1lIGp1c3QgYmVmb3JlIHdlIGxhc3RcbiAgICAgICAgICAgICB0cmllZCB0byBjb25uZWN0IHJhdGhlciB0aGFuIHRoZSB0aW1lIHdlIG5vdGljZWQgYmVpbmcgZGlzY29ubmVjdGVkLCBzbyB0aGF0IGlmXG4gICAgICAgICAgICAgYSBsb25nLWxpdmVkIGNvbm5lY3Rpb24gZGllcywgd2Ugd2lsbCBhdHRlbXB0IHRvIHJlY29ubmVjdCBpbW1lZGlhdGVseS4gKilcbiAgICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgICBgRmluaXNoZWQgKCkpXG4gICAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgICBgRmluaXNoZWQgKCkpXG4gICAgICAgICAgZWxzZSBgUmVwZWF0ICgpKTtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZCB0ID1cbiAgICAgICgqIFRha2UgY2FyZSBub3QgdG8gcmV0dXJuIGEgY29ubmVjdGlvbiB0aGF0IGlzIGtub3duIHRvIGJlIGNsb3NlZCBhdCB0aGUgdGltZVxuICAgICAgICAgW2Nvbm5lY3RlZF0gd2FzIGNhbGxlZC4gIFRoaXMgY291bGQgaGFwcGVuIGluIGNsaWVudCBjb2RlIHRoYXQgYmVoYXZlcyBsaWtlXG4gICAgICAgICB7W1xuICAgICAgICAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNvbm5lY3RlZCB0XG4gICAgICAgICAgID4+PSBmdW4gYzEgLT5cbiAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgYzFcbiAgICAgICAgICAgKCogYXQgdGhpcyBwb2ludCB3ZSBhcmUgaW4gYSByYWNlIHdpdGggdGhlIHNhbWUgY2FsbCBpbnNpZGVcbiAgICAgICAgICAgICAgcGVyc2lzdGVudF9jbGllbnQubWwgKilcbiAgICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNvbm5lY3RlZCB0XG4gICAgICAgICAgICgqIGRlcGVuZGluZyBvbiBob3cgdGhlIHJhY2UgdHVybnMgb3V0LCB3ZSBkb24ndCB3YW50IHRvIGdldCBhIGNsb3NlZCBjb25uZWN0aW9uXG4gICAgICAgICAgICAgIGhlcmUgKilcbiAgICAgICAgICAgPj49IGZ1biBjMiAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgIF19XG4gICAgICAgICBUaGlzIGRvZXNuJ3QgcmVtb3ZlIHRoZSByYWNlIGNvbmRpdGlvbiwgYnV0IGl0IG1ha2VzIGl0IGxlc3MgbGlrZWx5IHRvIGhhcHBlbi5cbiAgICAgICopXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBsZXQgZCA9IEl2YXIucmVhZCB0LmNvbm4gaW5cbiAgICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgZFxuICAgICAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICAgICAgICAgIHwgYE9rIGNvbm4gLT4gcmV0dXJuIGNvbm4pXG4gICAgICAgIHwgU29tZSBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICB8IFNvbWUgKGBPayBjb25uKSAtPlxuICAgICAgICAgIGlmIENvbm4uaXNfY2xvc2VkIGNvbm5cbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAoKiBnaXZlIHRoZSByZWNvbm5lY3Rpb24gbG9vcCBhIGNoYW5jZSB0byBvdmVyd3JpdGUgdGhlIGl2YXIgKilcbiAgICAgICAgICAgIENvbm4uY2xvc2VfZmluaXNoZWQgY29ubiA+Pj0gbG9vcFxuICAgICAgICAgIGVsc2UgcmV0dXJuIGNvbm5cbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBjdXJyZW50X2Nvbm5lY3Rpb24gdCA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5jb25uKSB3aXRoXG4gICAgICB8IE5vbmUgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+IFNvbWUgY29ublxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG4gICAgbGV0IGNsb3NlIHQgPVxuICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgdGhlblxuICAgICAgICAoKiBBbm90aGVyIGNhbGwgdG8gY2xvc2UgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4gIFdhaXQgZm9yIGl0IHRvIGZpbmlzaC4gKilcbiAgICAgICAgY2xvc2VfZmluaXNoZWQgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICAgIEl2YXIucmVhZCB0LmNvbm5cbiAgICAgICAgPj49IGZ1biBjb25uX29wdCAtPlxuICAgICAgICAobWF0Y2ggY29ubl9vcHQgd2l0aFxuICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICB8IGBPayBjb25uIC0+IENvbm4uY2xvc2UgY29ubilcbiAgICAgICAgPj58IGZ1biAoKSAtPiBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKSlcbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZCA9XG4gICAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcIlBlcnNpc3RlbnQgY29ubmVjdGlvbiBjbG9zZWRcIl1cbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCB0ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgICB0aGVuIHJldHVybiBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBjdXJyZW50X2Nvbm5lY3Rpb24gdCB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4gbm90IChDb25uLmlzX2Nsb3NlZCB4KSAtPiByZXR1cm4gKE9rIHgpXG4gICAgICAgIHwgU29tZSAoXyA6IENvbm4udCkgfCBOb25lIC0+XG4gICAgICAgICAgRGVmZXJyZWQuY2hvb3NlXG4gICAgICAgICAgICBbIGNob2ljZSAoSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZCkgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZClcbiAgICAgICAgICAgIDsgY2hvaWNlIChJdmFyLnJlYWQgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0KSBGbi5pZFxuICAgICAgICAgICAgXSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0ID1cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSB0LmRvbid0X3JlY29ubmVjdCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYWRkcmVzcyBQb2x5LnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSBQb2x5LnNleHBfb2ZfdCB0LnNleHBfb2ZfYWRkcmVzcyB0XG5cbiAgbGV0IGNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCAoVCB0KSA9XG4gICAgUG9seS5jbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgdFxuICA7O1xuXG4gIGxldCBjbG9zZV9maW5pc2hlZCAoVCB0KSA9IFBvbHkuY2xvc2VfZmluaXNoZWQgdFxuICBsZXQgaXNfY2xvc2VkIChUIHQpID0gUG9seS5pc19jbG9zZWQgdFxuICBsZXQgZXZlbnRfYnVzIChUIHQpID0gQnVzLnJlYWRfb25seSB0LmV2ZW50X2J1c1xuICBsZXQgY2xvc2UgKFQgdCkgPSBQb2x5LmNsb3NlIHRcbiAgbGV0IHNlcnZlcl9uYW1lIChUIHQpID0gUG9seS5zZXJ2ZXJfbmFtZSB0XG4gIGxldCBjdXJyZW50X2Nvbm5lY3Rpb24gKFQgdCkgPSBQb2x5LmN1cnJlbnRfY29ubmVjdGlvbiB0XG4gIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgKFQgdCkgPSBQb2x5LmNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCB0XG4gIGxldCBjb25uZWN0ZWQgKFQgdCkgPSBQb2x5LmNvbm5lY3RlZCB0XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgP29uX2V2ZW50XG4gICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICA/cmFuZG9tX3N0YXRlXG4gICAgICAgID90aW1lX3NvdXJjZVxuICAgICAgICB+Y29ubmVjdFxuICAgICAgICB+YWRkcmVzc1xuICAgICAgICBnZXRfYWRkcmVzc1xuICAgID1cbiAgICBUXG4gICAgICAoUG9seS5jcmVhdGVcbiAgICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICAgP29uX2V2ZW50XG4gICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgID90aW1lX3NvdXJjZVxuICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgIH5hZGRyZXNzXG4gICAgICAgICBnZXRfYWRkcmVzcylcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG50eXBlIHQgPVxuICB8IEtyYlxuICB8IEtyYl90ZXN0X21vZGVcbiAgfCBScGNcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgYmluX2lvXVxuXG5sZXQgbWFnaWNfd29yZCA9IGZ1bmN0aW9uXG4gIHwgS3JiIC0+IFwiS1JCMlwiXG4gIHwgS3JiX3Rlc3RfbW9kZSAtPiBcIktCVFwiXG4gIHwgUnBjIC0+IFwiUlBDXCJcbjs7XG5cbmxldCBnZW5fbWFnaWNfbnVtYmVyIHdvcmQgPVxuICBTdHJpbmcudG9fbGlzdF9yZXYgd29yZFxuICB8PiBMaXN0LmZvbGQgfmluaXQ6MCB+ZjooZnVuIGFjYyBjIC0+IChhY2MgKiAyNTYpICsgQ2hhci50b19pbnQgYylcbjs7XG5cbmxldCBtYWdpY19udW1iZXIgdCA9IGdlbl9tYWdpY19udW1iZXIgKG1hZ2ljX3dvcmQgdClcbmxldCBieV9tYWdpY19udW1iZXIgPSBJbnQuTWFwLm9mX2FsaXN0X2V4biAoTGlzdC5tYXAgYWxsIH5mOihmdW4gcCAtPiBtYWdpY19udW1iZXIgcCwgcCkpXG5cbigqIFdlIG9uY2UgbWludGVkIGEgbmV3IG1hZ2ljIG51bWJlciBmb3IgS3JiIGluIG9yZGVyIHRvIGNoYW5nZSB0aGUgcHJvdG9jb2xcbiAgIG5lZ290aWF0aW9uLiAgTGV0J3MgYmUgY2FyZWZ1bCB0aGF0IHdlIGRvbid0IHJldXNlIHRoZSBvbGQgbWFnaWMgbnVtYmVyICopXG5sZXQgcmV0aXJlZF9rcmJfd29yZCA9IFwiS1JCXCJcblxuKCogRW5zdXJlIHRlc3RzIGJyZWFrIGlmIHRoZSBtYWdpYyBudW1iZXJzIGFyZSBjaGFuZ2VkICopXG5sZXQldGVzdF91bml0IFwibWFnaWMgbnVtYmVyc1wiID1cbiAgYXNzZXJ0IChnZW5fbWFnaWNfbnVtYmVyIHJldGlyZWRfa3JiX3dvcmQgPSA0XzM0Nl80NDMpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBLcmIgPSA4NDNfMjA3XzI0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYl90ZXN0X21vZGUgPSA1XzUyMV85OTUpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBScGMgPSA0XzQxMV80NzQpXG47O1xuXG5tb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgbGV0IGFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZXRpcmVkID1cbiAgICBsYXp5IChyZXRpcmVkX2tyYl93b3JkIDo6IExpc3QubWFwIGFsbCB+ZjptYWdpY193b3JkIHw+IExpc3QubWFwIH5mOmdlbl9tYWdpY19udW1iZXIpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgTGlzdF93aXRoX21heF9sZW5faW50ZlxuXG5tb2R1bGUgTWFrZSAoQ29uZmlnIDogQ29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gTGlzdC5fX2Jpbl9yZWFkX3RfX1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgdHJ5IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIHdpdGhcbiAgICB8IGV4biAtPiBFeG4ucmVyYWlzZSBleG4gKEluZm8udG9fc3RyaW5nX2h1bSBjb250ZXh0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgKGJpbl9yZWFkZXJfYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90IGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgOyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyX2EucmVhZFxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgKGJpbl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3QgYmluX2Euc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCBiaW5fYS53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCBiaW5fYS5yZWFkZXJcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3RfZXhuIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgaWYgbGVuID4gbWF4X2xlblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGlzdCBpcyB0b28gbGFyZ2VcIiAoY29udGV4dCA6IEluZm8udCkgKGxlbiA6IGludCkgKG1heF9sZW4gOiBpbnQpXTtcbiAgICBsXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IExpc3Quc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCB0X29mX2Egc2V4cCA9XG4gICAgbGV0IHQgPSBMaXN0LnRfb2Zfc2V4cCB0X29mX2Egc2V4cCBpblxuICAgIG9mX2xpc3RfZXhuIHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEtub3duX3Byb3RvY29sID0gS25vd25fcHJvdG9jb2xcblxubGV0IG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA9IDFfMDAwXzAwMFxubGV0IG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlIG51bSA9IG51bSA+IG1heF9zdXBwb3J0ZWRfdmVyc2lvblxuXG5tb2R1bGUgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlID1cbiAgTGlzdF93aXRoX21heF9sZW4uTWFrZSAoc3RydWN0XG4gICAgbGV0IG1heF9sZW4gPSAxMDBcbiAgICBsZXQgY29udGV4dCA9IEluZm8ub2Zfc3RyaW5nIFwiUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcIlxuICBlbmQpXG5cbnR5cGUgdCA9IGludCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG5sZXQga25vd25fcHJvdG9jb2xfbWFnaWNfbnVtYmVycyA9IGxhenkgKE1hcC5rZXlfc2V0IEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcilcblxubGV0IGNyZWF0ZV9leG4gPyhhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgPSBbXSkgfnByb3RvY29sIH5zdXBwb3J0ZWRfdmVyc2lvbnMgKCkgPVxuICBsZXQgcHJvdG9jb2xfbWFnaWNfbnVtYmVyID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIGluXG4gIGlmIExpc3QuZXhpc3RzIHN1cHBvcnRlZF92ZXJzaW9ucyB+ZjpvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl9yYW5nZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVW5hYmxlIHRvIGFkdmVydGlzZSB2ZXJzaW9ucyBsYXJnZXIgdGhhbiBtYXggc3VwcG9ydGVkIHZlcnNpb25cIlxuICAgICAgICAgIChtYXhfc3VwcG9ydGVkX3ZlcnNpb24gOiBpbnQpXG4gICAgICAgICAgKHN1cHBvcnRlZF92ZXJzaW9ucyA6IGludCBsaXN0KV07XG4gIGlmIExpc3QuZXhpc3RzIGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyB+ZjooRm4ubm9uIG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW2FkZGl0aW9uYWxfbWFnaWNfbnVtYmVyc10gc2hvdWxkbid0IGJlIHdpdGhpbiBbbWF4X3N1cHBvcnRlZF92ZXJzaW9uXSByYW5nZVwiXG4gICAgICAgICAgKG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA6IGludClcbiAgICAgICAgICAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIDogaW50IGxpc3QpXTtcbiAgaWYgTGlzdC5leGlzdHNcbiAgICAgICBhZGRpdGlvbmFsX21hZ2ljX251bWJlcnNcbiAgICAgICB+ZjooU2V0Lm1lbSAoZm9yY2Uga25vd25fcHJvdG9jb2xfbWFnaWNfbnVtYmVycykpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbYWRkaXRpb25hbF9tYWdpY19udW1iZXJzXSBzaG91bGRuJ3QgYmUgb3ZlcmxhcHBpbmcgd2l0aCBwb3RlbnRpYWwgXFxcbiAgICAgICAgIFtwcm90b2NvbF9tYWdpY19udW1iZXJdc1wiXG4gICAgICAgICAgKGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA6IGludCBsaXN0KVxuICAgICAgICAgIH5rbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzOihmb3JjZSBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIDogSW50LlNldC50KV07XG4gIHByb3RvY29sX21hZ2ljX251bWJlciA6OiAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIEAgc3VwcG9ydGVkX3ZlcnNpb25zKVxuICB8PiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUub2ZfbGlzdF9leG5cbjs7XG5cbmxldCByYXdfdmVyc2lvbl9saXN0ICh0IDogdCkgPSAodCA6PiBpbnQgbGlzdClcblxubGV0IGdldF9wcm90b2NvbCAodCA6IHQpID1cbiAgbGV0IHByb3RvY29scywgdmVyc2lvbnMsIF9hZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgPVxuICAgIExpc3QucGFydGl0aW9uM19tYXBcbiAgICAgICh0IDo+IGludCBsaXN0KVxuICAgICAgfmY6KGZ1biB2IC0+XG4gICAgICAgIG1hdGNoIE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlciB2IHdpdGhcbiAgICAgICAgfCBTb21lIHAgLT4gYEZzdCBwXG4gICAgICAgIHwgTm9uZSAtPiBpZiBvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl9yYW5nZSB2IHRoZW4gYFRyZCB2IGVsc2UgYFNuZCB2KVxuICBpblxuICBtYXRjaCBwcm90b2NvbHMgd2l0aFxuICB8IFtdIC0+IE9rIChOb25lLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgWyBwIF0gLT4gT2sgKFNvbWUgcCwgSW50LlNldC5vZl9saXN0IHZlcnNpb25zKVxuICB8IF8gLT5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogbXVsdGlwbGUgbWFnaWMgbnVtYmVycyBzZWVuLlwiXG4gICAgICAgICAgKHByb3RvY29scyA6IEtub3duX3Byb3RvY29sLnQgbGlzdClcbiAgICAgICAgICAodmVyc2lvbnMgOiBpbnQgbGlzdCldXG47O1xuXG5sZXQgbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlciB+KHVzIDogdCkgfihwZWVyIDogdCkgPVxuICBsZXQgb3BlbiBPcl9lcnJvci5MZXRfc3ludGF4IGluXG4gIGxldCViaW5kIHVzX3Byb3RvY29sLCB1c192ZXJzaW9ucyA9IGdldF9wcm90b2NvbCB1cyBpblxuICBsZXQlYmluZCBwZWVyX3Byb3RvY29sLCBwZWVyX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHBlZXIgaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wgPVxuICAgIG1hdGNoIHVzX3Byb3RvY29sIHdpdGhcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgIHwgTm9uZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIk5vIG1hZ2ljIG51bWJlcnMgc2VlblwiICh1c192ZXJzaW9ucyA6IEludC5TZXQudCldXG4gIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wgPVxuICAgIG1hdGNoIHBlZXJfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBhc3N1bWUgcGVlciBpcyBzcGVha2luZyBvdXIgcHJvdG9jb2wgaWYgW2FsbG93X2xlZ2FjeV9wZWVyXSAqKVxuICAgICAgaWYgYWxsb3dfbGVnYWN5X3BlZXJcbiAgICAgIHRoZW4gcmV0dXJuIHVzX3Byb3RvY29sXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHBlZXJfcHJvdG9jb2wgPSBgVW5rbm93biBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAgICAgKHVzX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudClcbiAgICAgICAgICAgICAgKHBlZXJfcHJvdG9jb2wgOiBbIGBVbmtub3duIF0pXSlcbiAgaW5cbiAgaWYgbm90IChbJWNvbXBhcmUuZXF1YWw6IEtub3duX3Byb3RvY29sLnRdIHVzX3Byb3RvY29sIHBlZXJfcHJvdG9jb2wpXG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogY29uZmxpY3RpbmcgbWFnaWMgcHJvdG9jb2wgbnVtYmVyc1wiXG4gICAgICAgICAgKHVzX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudClcbiAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXVxuICBlbHNlIChcbiAgICBsZXQgcHJvdG9jb2wgPSB1c19wcm90b2NvbCBpblxuICAgIG1hdGNoIFNldC5tYXhfZWx0IChTZXQuaW50ZXIgdXNfdmVyc2lvbnMgcGVlcl92ZXJzaW9ucykgd2l0aFxuICAgIHwgU29tZSB2ZXJzaW9uIC0+IE9rIHZlcnNpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogbm8gc2hhcmVkIHZlcnNpb24gbnVtYmVyc1wiXG4gICAgICAgICAgICAodXNfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAocGVlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXSlcbjs7XG5cbmxldCBtYXRjaGVzX21hZ2ljX3ByZWZpeCAodCA6IHQpIH5wcm90b2NvbCA9XG4gIGxldCBtYWdpY19udW1iZXIgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgaW5cbiAgTGlzdC5tZW0gfmVxdWFsOkludC5lcXVhbCAocmF3X3ZlcnNpb25fbGlzdCB0KSBtYWdpY19udW1iZXJcbjs7XG5cbmxldCBjb250YWluc19tYWdpY19wcmVmaXggfnByb3RvY29sID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIChtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wpIGJpbl90LnJlYWRlclxuOztcblxubGV0IGFueV9tYWdpY19wcmVmaXggPVxuICBsZXQgZiB0ID1cbiAgICBMaXN0LmZpbmQgS25vd25fcHJvdG9jb2wuYWxsIH5mOihmdW4gcHJvdG9jb2wgLT4gbWF0Y2hlc19tYWdpY19wcmVmaXggfnByb3RvY29sIHQpXG4gIGluXG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlciBmIGJpbl90LnJlYWRlclxuOztcblxubGV0IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSA9IDVcblxubW9kdWxlIE1hZ2ljX3ByZWZpeF9iaW5fcmVwciA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgKCogVGhlIGJpbiBwcm90IHJlcHJlc2VudGF0aW9uIG9mIGEgcHJvdG9jb2wgdmVyc2lvbiBoZWFkZXIgaXMgdGhlIHN0YW5kYXJkXG4gICAgIHJlcHJlc2VudGF0aW9uIGZvciBhbiBpbnQgbGlzdDpcblxuICAgICB8IG5hdDAgaW5kaWNhdGluZyBzaXplIHwgZWxlbWVudCAwIHwgZWxlbWVudCAxIHwgLi4uXG5cbiAgICAgW2NyZWF0ZV9leG5dIHdpbGwgYWx3YXlzIHB1dCB0aGUga25vd24gcHJvdG9jb2wgbWFnaWMgbnVtYmVyIGFzIFwiZWxlbWVudCAwXCIuXG5cbiAgICAgVGhlIGJpbiBzaXplIG9mIFwibmF0MCBpbmRpY2F0aW5nIHNpemVcIiBhbmQgXCJlbGVtZW50IDBcIiBpcyBmaXhlZCAodGhlcmUgYXJlIGV4cGVjdFxuICAgICB0ZXN0cyB0byBtYWtlIHN1cmUgd2UgbmV2ZXIgY2hhbmdlIHRoZW0pLiAqKVxuICBsZXQgYmluX3NpemUgPVxuICAgIGJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgICArIG1hZ2ljX251bWJlcl9iaW5fc2l6ZVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IChfbGlzdF9sZW5ndGggOiBCaW5fcHJvdC5OYXQwLnQpID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiBpblxuICAgIEJpbl9wcm90LlJlYWQuYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gSW50Ll9fYmluX3JlYWRfdF9fIH1cbiAgOztcbmVuZFxuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlcyA9XG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlclxuICAgIChmdW4gbWFnaWNfbnVtYmVyIC0+IChNYXAuZmluZCBLbm93bl9wcm90b2NvbC5ieV9tYWdpY19udW1iZXIpIG1hZ2ljX251bWJlcilcbiAgICBNYWdpY19wcmVmaXhfYmluX3JlcHIuYmluX3JlYWRlcl90XG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlc19iaW5fc2l6ZSA9IE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fc2l6ZVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCByYXdfdmVyc2lvbl9saXN0ID0gcmF3X3ZlcnNpb25fbGlzdFxuZW5kXG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZV9saXN0X3dpdGhfbWF4X2xlbiA9IExpc3Rfd2l0aF9tYXhfbGVuLk1ha2VcblxuICBsZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gbWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIGxldCBtYXhfc3VwcG9ydGVkX3ZlcnNpb24gPSBtYXhfc3VwcG9ydGVkX3ZlcnNpb25cbmVuZFxuXG5sZXQldGVzdF91bml0IFwiYmluIHNpemVzIGFyZSBub3QgY2hhbmdlZCBieSBhY2NpZGVudFwiID1cbiAgKCogRW5zdXJlIHRoZSBiaW5fc2l6ZSBvZiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICBpcyBhbHdheXMgMS4gVGhpcyBtZWFucyB0aGF0IHJlZ2FyZGxlc3Mgb2YgaG93IGxvbmcgdGhlIGxpc3Qgb2YgdmVyc2lvbnMgaW4gdGhlXG4gICAgIHByb3RvY29sIGhlYWRlciBpcywgdGhlIHJlcHJlc2VudGF0aW9uIHdpbGwgYmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJ5dGVzLiBUaGVcbiAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50IGp1bXBzIHRvIDMgYnl0ZXMgYXQgdGhlIHZhbHVlIDEyOC4gKilcbiAgbGV0IGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9XG4gICAgSW50LmJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgaW5cbiAgYXNzZXJ0IChib3VuZGVkX2xpc3RfYmluX3NpemUgPSAxKTtcbiAgYXNzZXJ0ICg2ID0gbWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKTtcbiAgYXNzZXJ0IChcbiAgICBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplXG4gICAgPSBtYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpXG47O1xuIiwidHlwZSB0ID0gQmluX3Byb3QuTmF0MC50XG5bQEBkZXJpdmluZyBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZTJmNGEtNDkwYS0xMWU2LWI2OGYtYmJkNjI0NzI1MTZjXCJdXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICBbJWV4cGVjdCB7fCA1OTVmMmE2MGYxMTgxNmIyOWE3MmRkYWIxNzAwMmI1NiB8fV1cbjs7XG5cbmxldCBiaW5fdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX25hdDBcbmxldCBiaW5fc2l6ZV90ID0gQmluX3Byb3QuU2l6ZS5iaW5fc2l6ZV9uYXQwXG5sZXQgYmluX3dyaXRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdDBcbmxldCBiaW5fd3JpdGVfdCA9IEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9uYXQwXG5sZXQgYmluX3JlYWRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fcmVhZGVyX25hdDBcbmxldCBiaW5fcmVhZF90ID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwXG5cbmxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF92bmF0MCA9XG4gIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBvZl9pbnRfZXhuID0gQmluX3Byb3QuTmF0MC5vZl9pbnRcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5cbmxldCBvZl93cml0ZXIgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPVxuICBsZXQgd3JpdGUgYnVmIH5wb3MgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIGxldCBwb3MgPSBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zIGxlbiBpblxuICAgIHdyaXRlIGJ1ZiB+cG9zIGFcbiAgaW5cbiAgbGV0IHNpemUgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIE5hdDAuYmluX3NpemVfdCBsZW4gKyAoKGxlbiA6IEJpbl9wcm90Lk5hdDAudCkgOj4gaW50KVxuICBpblxuICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfVxuOztcblxubGV0IG9mX3R5cGVfY2xhc3MgKGJpbl9hIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID0gb2Zfd3JpdGVyIGJpbl9hLndyaXRlclxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IGJpZ3N0cmluZ19iaW5fcHJvdCBzID1cbiAgICAgIGxldCBiaWdzdHJpbmcgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCeXRlcy5iaW5fd3JpdGVyX3QgcyBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQmlnc3RyaW5nLlN0YWJsZS5WMS5iaW5fd3JpdGVyX3QgYmlnc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBiaW5fcHJvdF93aXRoX2xlbmd0aCBzID1cbiAgICAgIGxldCB3cml0ZXJfd2l0aF9sZW5ndGggPSBvZl93cml0ZXIgQnl0ZXMuYmluX3dyaXRlcl90IGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB3cml0ZXJfd2l0aF9sZW5ndGggc1xuICAgIDs7XG5cbiAgICBsZXQgdGVzdCBsZW4gPVxuICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICBsZXQgYmlnc3RyaW5nX3ZlcnNpb24gPSBiaWdzdHJpbmdfYmluX3Byb3QgcyBpblxuICAgICAgbGV0IHdpdGhfbGVuZ3RoX3ZlcnNpb24gPSBiaW5fcHJvdF93aXRoX2xlbmd0aCBzIGluXG4gICAgICBpZiBCaWdzdHJpbmcudG9fc3RyaW5nIGJpZ3N0cmluZ192ZXJzaW9uIDw+IEJpZ3N0cmluZy50b19zdHJpbmcgd2l0aF9sZW5ndGhfdmVyc2lvblxuICAgICAgdGhlbiBmYWlsd2l0aGYgXCJtaXNtYXRjaCBmb3IgbGVuZ3RoICVkXCIgbGVuICgpXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBmb3IgbGVuID0gMCB0byBJbnQucG93IDIgMTAgZG9cbiAgICAgICAgdGVzdCBsZW5cbiAgICAgIGRvbmU7XG4gICAgICBmb3IgcG93ID0gMTAgdG8gMjAgZG9cbiAgICAgICAgbGV0IHggPSBJbnQucG93IDIgcG93IGluXG4gICAgICAgIHRlc3QgKHggLSAxKTtcbiAgICAgICAgdGVzdCB4O1xuICAgICAgICB0ZXN0ICh4ICsgMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2ZXJzaW9uIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBlcXVhbCwgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDQ1MjFmNDRkYmM2MDk4YzBhZmMyNzcwY2M4NDU1MmIxIHx9XVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5cbmxldCBzdW1tYXJpemUgdHMgPVxuICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHsgbmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gIHw+IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZCB+aW5pdDpJbnQuU2V0LmVtcHR5IH5mOkNvcmUuU2V0LmFkZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgZGVzY3JpcHRpb25zID1cbiAgICBbIHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAxIH1cbiAgICA7IHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAyIH1cbiAgICA7IHsgbmFtZSA9IFwiYmFyXCI7IHZlcnNpb24gPSA1IH1cbiAgICBdXG4gIGluXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyaXplIGRlc2NyaXB0aW9ucyBpblxuICBwcmludF9zIFslc2V4cCAoc3VtbWFyeSA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTtcbiAgWyVleHBlY3Qge3wgKChiYXIgKDUpKSAoZm9vICgxIDIpKSkgfH1dXG47O1xuIiwib3BlbiEgQ29yZVxuXG50eXBlICdhIHQgPVxuICB8IEF1dGhvcml6ZWQgb2YgJ2FcbiAgfCBOb3RfYXV0aG9yaXplZCBvZiBFcnJvci50XG5cbmxldCBiaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdXRob3JpemVkIGEgLT4gZiBhXG4gIHwgTm90X2F1dGhvcml6ZWQgXyBhcyB0IC0+IHRcbjs7XG5cbmxldCBiaW5kX2RlZmVycmVkIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdXRob3JpemVkIGEgLT4gZiBhXG4gIHwgTm90X2F1dGhvcml6ZWQgXyBhcyB0IC0+IEVhZ2VyX2RlZmVycmVkLnJldHVybiB0XG47O1xuXG5sZXQgbWFwX2RlZmVycmVkIHQgfmYgPVxuICBiaW5kX2RlZmVycmVkIHQgfmY6KGZ1biBhIC0+IEVhZ2VyX2RlZmVycmVkLm1hcCAoZiBhKSB+ZjooZnVuIGEgLT4gQXV0aG9yaXplZCBhKSlcbjs7XG5cbmxldCBsaWZ0X2RlZmVycmVkID0gbWFwX2RlZmVycmVkIH5mOkZuLmlkXG4iLCIoKiogQXN5bmNfcnBjIHByb3RvY29sIHR5cGVzLCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgKilcblxuKCogV0FSTklORzogZG8gbm90IGNoYW5nZSBhbnkgb2YgdGhlc2UgdHlwZXMgd2l0aG91dCBnb29kIHJlYXNvbiAqKVxuXG5vcGVuIEJpbl9wcm90LlN0ZFxub3BlbiBTZXhwbGliLlN0ZFxubW9kdWxlIENvcmVfZm9yX3Rlc3RpbmcgPSBDb3JlXG5tb2R1bGUgUnBjX3RhZyA6IENvcmUuSWRlbnRpZmlhYmxlID0gQ29yZS5TdHJpbmdcbm1vZHVsZSBRdWVyeV9pZCA9IENvcmUuVW5pcXVlX2lkLkludDYzIChzdHJ1Y3QgZW5kKVxuXG5tb2R1bGUgVW51c2VkX3F1ZXJ5X2lkIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdmFsIHQgOiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUXVlcnlfaWQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCAyYjUyOGY0YjIyZjA4ZTI4ODc2ZmZlMDIzOTMxNWFjMiB8fV1cbiAgOztcblxuICBsZXQgdCA9IFF1ZXJ5X2lkLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBScGNfZXJyb3IgOiBzaWdcbiAgb3BlbiBDb3JlXG5cbiAgdHlwZSB0ID1cbiAgICB8IEJpbl9pb19leG4gb2YgU2V4cC50XG4gICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIHwgV3JpdGVfZXJyb3Igb2YgU2V4cC50XG4gICAgfCBVbmNhdWdodF9leG4gb2YgU2V4cC50XG4gICAgfCBVbmltcGxlbWVudGVkX3JwYyBvZiBScGNfdGFnLnQgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEJpbl9pb19leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIHwgV3JpdGVfZXJyb3Igb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5jYXVnaHRfZXhuIG9mIENvcmUuU2V4cC50XG4gICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgQ29yZS5JbnQuU3RhYmxlLlYxLnQgXVxuICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4Y2M3NjZiZWZhMmNmNTY1ZWExNDdkOWZjZDVlYWFhYiB8fV1cbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb3JlLkNvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFJwY19lcnJvci50KSBDb3JlLlJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgdF07XG4gICAgWyVleHBlY3Qge3wgNTg3MzRhNjNhNWM4M2MxYjdjYmZjM2ZlZGZhM2FlODIgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEhlYWRlciA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyXG5cbm1vZHVsZSBRdWVyeV92MSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgYmU1ODg4NjkxZDczNDI3YjNhYzhlYTMwMGMxNjk0MjIgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBRdWVyeSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgbWV0YWRhdGEgOiBzdHJpbmcgb3B0aW9uXG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBlZjcwZWEyZGQwYmI4MTJhNjAxZDI4ODEwZTY2MzdkNCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5cbiAgbGV0IHRvX3YxIHsgdGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSAoXyA6IHN0cmluZyBvcHRpb24pOyBkYXRhIH0gOiBfIFF1ZXJ5X3YxLnQgPVxuICAgIHsgdGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSB9XG4gIDs7XG5cbiAgbGV0IG9mX3YxID9tZXRhZGF0YSB7IFF1ZXJ5X3YxLnRhZzsgdmVyc2lvbjsgaWQ7IGRhdGEgfSA9XG4gICAgeyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YTsgZGF0YSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhIFJwY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGEyMmE3NmYxOTJiM2E0ZWMxYzM3MTE3YzZiYjI1MmY1IHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX3F1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBRdWVyeSBvZiAnYVxuICAgIHwgYEFib3J0XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgMmMzNzg2ODc2MTk3MWM3OGNjMzU1ZDQzZjA4NTQ4NjAgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX2luaXRpYWxfbWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlICgncmVzcG9uc2UsICdlcnJvcikgdCA9XG4gICAgeyB1bnVzZWRfcXVlcnlfaWQgOiBVbnVzZWRfcXVlcnlfaWQudFxuICAgIDsgaW5pdGlhbCA6ICgncmVzcG9uc2UsICdlcnJvcikgQ29yZS5SZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogKHVuaXQsIHVuaXQpIHRdO1xuICAgIFslZXhwZWN0IHt8IDQ2ZjIzMWRkYjdmYTU5ZGE5YzI3NzU5ZDUwYWUwMWE5IHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBFb2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBjMWRiY2RjZmUyYjEyZTc5N2VjNjRmMGQ3NGRmMTgxMSB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB8IEhlYXJ0YmVhdFxuICAgIHwgUXVlcnlfdjEgb2YgJ2EgUXVlcnlfdjEubmVlZHNfbGVuZ3RoXG4gICAgfCBSZXNwb25zZSBvZiAnYSBSZXNwb25zZS5uZWVkc19sZW5ndGhcbiAgICB8IFF1ZXJ5IG9mICdhIFF1ZXJ5Lm5lZWRzX2xlbmd0aFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgZjYwY2UyZDEwNGUyZjBkOTI3MWY2MjJlY2Q5N2NlYTggfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBzZXhwX29mXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5sZXQldGVzdCBcInYxIG1lc3NhZ2UgY29tcGF0aWJpbGl0eVwiID1cbiAgbGV0IG1vZHVsZSBNZXNzYWdlX3YxID0gc3RydWN0XG4gICAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgICAgfCBIZWFydGJlYXRcbiAgICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnlfdjEubmVlZHNfbGVuZ3RoXG4gICAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgICBbJWV4cGVjdCB7fCAxNDk2NWIwZGI5ODQ0ZTZiMzc2MTUxZGQ4OTA4MDhlOCB8fV1cbiAgICA7O1xuICBlbmRcbiAgaW5cbiAgbGV0IHRhZyA9IFJwY190YWcub2Zfc3RyaW5nIFwicnBjXCIgaW5cbiAgbGV0IHF1ZXJ5X2lkID0gUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gIGxldCB2MV9xdWVyeSA9IHsgUXVlcnlfdjEudGFnOyB2ZXJzaW9uID0gMTsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9ICgpIH0gaW5cbiAgbGV0IHJlc3BvbnNlID0geyBSZXNwb25zZS5pZCA9IHF1ZXJ5X2lkOyBkYXRhID0gT2sgKCkgfSBpblxuICBsZXQgdjEgPSBNZXNzYWdlX3YxLlsgSGVhcnRiZWF0OyBRdWVyeSB2MV9xdWVyeTsgUmVzcG9uc2UgcmVzcG9uc2UgXSBpblxuICBsZXQgdjIgPSBNZXNzYWdlLlsgSGVhcnRiZWF0OyBRdWVyeV92MSB2MV9xdWVyeTsgUmVzcG9uc2UgcmVzcG9uc2UgXSBpblxuICBsZXQgdjFfc3RyID1cbiAgICBDb3JlX2Zvcl90ZXN0aW5nLkJpbl9wcm90LldyaXRlci50b19zdHJpbmdcbiAgICAgIFslYmluX3dyaXRlcjogdW5pdCBNZXNzYWdlX3YxLm5lZWRzX2xlbmd0aCBsaXN0XVxuICAgICAgdjFcbiAgaW5cbiAgbGV0IHYyX3N0ciA9XG4gICAgQ29yZV9mb3JfdGVzdGluZy5CaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nXG4gICAgICBbJWJpbl93cml0ZXI6IHVuaXQgTWVzc2FnZS5uZWVkc19sZW5ndGggbGlzdF1cbiAgICAgIHYyXG4gIGluXG4gIFN0cmluZy5lcXVhbCB2MV9zdHIgdjJfc3RyXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBDb3JlLkNvcmVfc3RhYmxlXG5cbiAgKCogV2UgY2FuJ3QgbWFrZSBbQmluX3Byb3QuU2hhcGUudF0gYmluYWJsZSBkaXJlY3RseSBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGFcbiAgICAgY2lyY3VsYXIgZGVwZW5kZW5jeSwgc28gd2UgbWFrZSBpdCBbQmluYWJsZS5PZl9zZXhwYWJsZV93aXRoX3V1aWRdIGhlcmUgaW5zdGVhZC4gVGhpc1xuICAgICBhbGxvd3MgdXMgdG8gc2VuZCB0aGUgc2hhcGUgb3ZlciB0aGUgd2lyZSBhcyBwYXJ0IG9mIHRoZVxuICAgICBbVmVyc2lvbmVkX3JwYy5TaGFwZV9tZW51LnRdLiBbQmluX3Byb3QuU2hhcGUuQ2Fub25pY2FsLnRdLCB0aG91Z2ggZXhwb3NlZCBhbmRcbiAgICAgdGhlcmVmb3JlIGJpbmFibGUsIGlzIG5vdCBhIHN1aXRhYmxlIGFsdGVybmF0aXZlIGJlY2F1c2UgaXQgaGFzIGFuIGV4cG9uZW50aWFsXG4gICAgIGV4cGFuc2lvbi4gKilcbiAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJpbl9wcm90LlNoYXBlLlN0YWJsZS5WMVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMGFhNTM1NDktYWQ4OC00YjRmLWFiYzctMWY4NDUzZTdhYTExXCJcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQmluYWJsZS5PZl9zZXhwYWJsZS5WMiAoVClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgUnBjIG9mXG4gICAgICAgICAgeyBxdWVyeSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IHJlc3BvbnNlIDogU2hhcGUuVjEudFxuICAgICAgICAgIH1cbiAgICAgIHwgT25lX3dheSBvZiB7IG1zZyA6IFNoYXBlLlYxLnQgfVxuICAgICAgfCBTdHJlYW1pbmdfcnBjIG9mXG4gICAgICAgICAgeyBxdWVyeSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IGluaXRpYWxfcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgOyB1cGRhdGVfcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgOyBlcnJvciA6IFNoYXBlLlYxLnRcbiAgICAgICAgICB9XG4gICAgICB8IFVua25vd25cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gIGVuZFxuZW5kXG5cbm9wZW4hIENvcmVcblxubW9kdWxlIFNoYXBlID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpbl9wcm90LlNoYXBlLnRcblxuICAoKiBBbiB1bnN0YWJsZSBzZXhwZXIgdGhhdCdzIHVzZWZ1bCBmb3IgZXhwZWN0IHRlc3RzLCBwcmludGluZyBvdXQgdGhlIHNoYXBlIGRpZ2VzdHNcbiAgICAgaW5zdGVhZCBvZiB0aGUgc2hhcGVzIHRoZW1zZWx2ZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAoQmluX3Byb3QuU2hhcGUuZXZhbF90b19kaWdlc3Rfc3RyaW5nIHQgOiBzdHJpbmcpXVxuZW5kXG5cbnR5cGUgdCA9IFN0YWJsZS5WMS50ID1cbiAgfCBScGMgb2ZcbiAgICAgIHsgcXVlcnkgOiBTaGFwZS50XG4gICAgICA7IHJlc3BvbnNlIDogU2hhcGUudFxuICAgICAgfVxuICB8IE9uZV93YXkgb2YgeyBtc2cgOiBTaGFwZS50IH1cbiAgfCBTdHJlYW1pbmdfcnBjIG9mXG4gICAgICB7IHF1ZXJ5IDogU2hhcGUudFxuICAgICAgOyBpbml0aWFsX3Jlc3BvbnNlIDogU2hhcGUudFxuICAgICAgOyB1cGRhdGVfcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICA7IGVycm9yIDogU2hhcGUudFxuICAgICAgfVxuICB8IFVua25vd25cbltAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgbWVzc2FnZV9oYW5kbGVyID0gQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhXG5cbm1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IHN0cnVjdFxuICAoKiogUmVzdWx0IG9mIGFuIFtvbl9tZXNzYWdlXSBjYWxsYmFjay4gIFdlIHNwbGl0IHRoZSBbQ29udGludWVdIGFuZCBbV2FpdCBfXSBjYXNlcyB0b1xuICAgICAgbWFrZSBpdCBjbGVhciB0aGF0IFtDb250aW51ZV0gaXMgdGhlIGV4cGVjdGVkIGNhc2UuICBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlXG4gICAgICBvcHRpbWl6ZWQgZm9yIHRoaXMgY2FzZS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0b3Agb2YgJ2FcbiAgICB8IENvbnRpbnVlXG4gICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuZW5kXG5cblxubW9kdWxlIHR5cGUgUmVhZGVyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBpc19jbG9zZWQgOiB0IC0+IGJvb2xcbiAgdmFsIGJ5dGVzX3JlYWQgOiB0IC0+IEludDYzLnRcblxuICAoKiogU3RhcnQgcmVhZGluZyBpbmNvbWluZyBtZXNzYWdlcyBhbmQgcGFzcyB0aGVtIHRvIFtvbl9tZXNzYWdlXSwgdW50aWwgaXQgcmV0dXJuc1xuICAgICAgW1N0b3AgX10uXG5cbiAgICAgIFtvbl9lbmRfb2ZfYmF0Y2hdIGlzIGNhbGxlZCBhZnRlciBwcm9jZXNzaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIGJlZm9yZSB3YWl0aW5nIGZvclxuICAgICAgdGhlIGZpbGUgZGVzY3JpcHRvciB0byBiZWNvbWUgcmVhZGFibGUgYWdhaW4uICopXG4gIHZhbCByZWFkX2ZvcmV2ZXJcbiAgICA6ICB0XG4gICAgLT4gb25fbWVzc2FnZTooQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIEhhbmRsZXJfcmVzdWx0LnQpXG4gICAgLT4gb25fZW5kX29mX2JhdGNoOih1bml0IC0+IHVuaXQpXG4gICAgLT4gKCdhLCBbIGBFb2YgfCBgQ2xvc2VkIF0pIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSBtZXNzYWdlX3Rvb19iaWcgPVxuICAgIHsgc2l6ZSA6IGludFxuICAgIDsgbWF4X21lc3NhZ2Vfc2l6ZSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPVxuICAgIHwgU2VudCBvZiAnYVxuICAgIHwgQ2xvc2VkXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgb2YgbWVzc2FnZV90b29fYmlnXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgV3JpdGVyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBpc19jbG9zZWQgOiB0IC0+IGJvb2xcbiAgdmFsIG1vbml0b3IgOiB0IC0+IE1vbml0b3IudFxuICB2YWwgYnl0ZXNfdG9fd3JpdGUgOiB0IC0+IGludFxuICB2YWwgYnl0ZXNfd3JpdHRlbiA6IHQgLT4gSW50NjMudFxuXG4gICgqKiBCZWNvbWVzIGRldGVybWluZWQgd2hlbiBpdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gc2VuZCBtZXNzYWdlIHVzaW5nIHRoaXMgd3JpdGVyLFxuICAgICAgZm9yIGluc3RhbmNlIHdoZW4gdGhlIHdyaXRlciBpcyBjbG9zZWQgb3IgdGhlIGNvbnN1bWVyIGxlYXZlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGNhY2hlZCBieSBbUnBjLlRyYW5zcG9ydF0gKilcbiAgdmFsIHN0b3BwZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbZmx1c2hlZCB0XSByZXR1cm5zIGEgZGVmZXJyZWQgdGhhdCBtdXN0IGJlY29tZSBkZXRlcm1pbmVkIHdoZW4gYWxsIHByaW9yIHNlbnRcbiAgICAgIG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQuXG5cbiAgICAgIEl0IG11c3QgYmUgT0sgdG8gY2FsbCBbZmx1c2hlZCB0XSBhZnRlciBbdF0gaGFzIGJlZW4gY2xvc2VkLiAqKVxuICB2YWwgZmx1c2hlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtyZWFkeV90b193cml0ZSB0XSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBpdCBpcyBhIGdvb2QgdGltZSB0byBzZW5kIG1lc3NhZ2VzXG4gICAgICBhZ2Fpbi4gQXN5bmMgUlBDIGNhbGxzIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgc2VuZGluZyBhIGJhdGNoIG9mIG1lc3NhZ2VzLCB0byBhdm9pZFxuICAgICAgZmxvb2RpbmcgdGhlIHRyYW5zcG9ydC5cblxuICAgICAgVXNpbmcgW2xldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRdIGlzIGFuIGFjY2VwdGFibGUgaW1wbGVtZW50YXRpb24uICopXG4gIHZhbCByZWFkeV90b193cml0ZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIEFsbCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzZW5kIGV4YWN0bHkgb25lIG1lc3NhZ2UuICopXG5cbiAgdmFsIHNlbmRfYmluX3Byb3QgOiB0IC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIC0+IHVuaXQgU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICA6ICB0XG4gICAgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiAnYVxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgKCoqIFNhbWUgYXMgW3NlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ10gYnV0IHRoZSBiaWdzdHJpbmcgY2FuJ3QgYmUgbW9kaWZpZWQgdW50aWwgdGhlXG4gICAgICByZXR1cm5lZCBkZWZlcnJlZCBiZWNvbWVzIGRldGVybWluZWQuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkIGNvcHlpbmcgdGhlXG4gICAgICBiaWdzdHJpbmcuICopXG4gIHZhbCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICA6ICB0XG4gICAgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiAnYVxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdCBEZWZlcnJlZC50IFNlbmRfcmVzdWx0LnRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG5tb2R1bGUgSGVhZGVyID0gc3RydWN0XG4gIGxldCBsZW5ndGggPSA4XG4gIGxldCB1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zID0gQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIGJ1ZiB+cG9zXG5cbiAgbGV0IHVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgcGF5bG9hZF9sZW4gPVxuICAgIEJpZ3N0cmluZy51bnNhZmVfc2V0X2ludDY0X2xlIGJ1ZiB+cG9zIHBheWxvYWRfbGVuXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gVHJhbnNwb3J0X2ludGYuSGFuZGxlcl9yZXN1bHRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gVHJhbnNwb3J0X2ludGYuUmVhZGVyXG5cbiAgdHlwZSB0ID0gVCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKSAqICdhIC0+IHRcblxuICBsZXQgcGFjayBtIHQgPSBUIChtLCB0KVxuXG4gICgqIFdlIHB1dCB0eXBlIGFubm90YXRpb25zIHRvIGJlIHN1cmUgdGhlIHR5cGUgaXMgbm90IGEgZnVuY3Rpb24gdHlwZSwgaS5lLiB0byBhdm9pZFxuICAgICBjcmVhdGluZyBjbG9zdXJlcyAqKVxuICBsZXQgc2V4cF9vZl90IChUICgobW9kdWxlIE0pLCB0KSkgOiBTZXhwLnQgPSBNLnNleHBfb2ZfdCB0XG4gIGxldCBjbG9zZSAoVCAoKG1vZHVsZSBNKSwgdCkpIDogdW5pdCBEZWZlcnJlZC50ID0gTS5jbG9zZSB0XG4gIGxldCBpc19jbG9zZWQgKFQgKChtb2R1bGUgTSksIHQpKSA6IGJvb2wgPSBNLmlzX2Nsb3NlZCB0XG4gIGxldCBieXRlc19yZWFkIChUICgobW9kdWxlIE0pLCB0KSkgOiBJbnQ2My50ID0gTS5ieXRlc19yZWFkIHRcblxuICBsZXQgcmVhZF9mb3JldmVyIChUICgobW9kdWxlIE0pLCB0KSkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IF8gRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkX2ZvcmV2ZXIgdCB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoXG4gIDs7XG5cbiAgbGV0IHJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QgdCAoYmluX3JlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICByZWFkX2ZvcmV2ZXJcbiAgICAgIHRcbiAgICAgIH5vbl9tZXNzYWdlOihmdW4gYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgICAgbGV0IHggPSBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGlmICFwb3NfcmVmIDw+IHBvcyArIGxlblxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICAgICAoIXBvc19yZWYgLSBwb3MpXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgU3RvcCB4KVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDppZ25vcmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5TZW5kX3Jlc3VsdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5Xcml0ZXJcblxuICB0eXBlICdhIHdyaXRlciA9XG4gICAgeyBpbXBsIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgOyB0IDogJ2FcbiAgICAoKiBXZSBjYWNoZSB0aGUgcmVzdWx0IG9mIFtzdG9wcGVkXSBiZWNhdXNlIGl0IGlzIG9mdGVuIHRoZSBbRGVmZXJyZWQuYW55XSBvZiBzZXZlcmFsXG4gICAgICAgb3RoZXIgZGVmZXJyZWRzIGFuZCB3ZSB3YW50IFtjYW5fc2VuZF0gdG8gYmUgc2ltcGxlLiAqKVxuICAgIDsgc3RvcHBlZCA6IHVuaXQgRGVmZXJyZWQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogJ2Egd3JpdGVyIC0+IHRcblxuICBsZXQgcGFjayAodHlwZSBhKSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgdCA9XG4gICAgVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBzdG9wcGVkID0gTS5zdG9wcGVkIHQgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IG1vbml0b3IgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IE1vbml0b3IudCA9IE0ubW9uaXRvciB0XG4gIGxldCBieXRlc190b193cml0ZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogaW50ID0gTS5ieXRlc190b193cml0ZSB0XG4gIGxldCBieXRlc193cml0dGVuIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBJbnQ2My50ID0gTS5ieXRlc193cml0dGVuIHRcbiAgbGV0IGZsdXNoZWQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uZmx1c2hlZCB0XG5cbiAgbGV0IHJlYWR5X3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPVxuICAgIE0ucmVhZHlfdG9fd3JpdGUgdFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgYmluX3dyaXRlciB4IDogXyBTZW5kX3Jlc3VsdC50ID1cbiAgICBNLnNlbmRfYmluX3Byb3QgdCBiaW5fd3JpdGVyIHhcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc3RvcHBlZCAoVCB7IHN0b3BwZWQ7IF8gfSkgPSBzdG9wcGVkXG5cbiAgbGV0IGNhbl9zZW5kIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgfSkgPVxuICAgIG5vdCAoTS5pc19jbG9zZWQgdCB8fCBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BwZWQpXG4gIDs7XG5cbiAgbGV0IHRyYW5zZmVyIHQgPyhtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCA9IDFfMDAwKSBwaXBlIGYgPVxuICAgIGxldCBjb25zdW1lciA9XG4gICAgICBQaXBlLmFkZF9jb25zdW1lciBwaXBlIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICBsZXQlbWFwICgpID0gZmx1c2hlZCB0IGluXG4gICAgICAgIGBPaylcbiAgICBpblxuICAgIGxldCBlbmRfb2ZfcGlwZSA9XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICAgaWYgY2FuX3NlbmQgdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgUGlwZS5yZWFkX25vdycgcGlwZSB+Y29uc3VtZXIgfm1heF9xdWV1ZV9sZW5ndGg6bWF4X251bV92YWx1ZXNfcGVyX3JlYWRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICAgICAgUXVldWUuaXRlciBxIH5mO1xuICAgICAgICAgICAgICBQaXBlLkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgICAgICAgIHJlYWR5X3RvX3dyaXRlIHQgPj4+IGl0ZXJcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIFBpcGUudmFsdWVzX2F2YWlsYWJsZSBwaXBlID4+PiBmdW4gKGBPayB8IGBFb2YpIC0+IGl0ZXIgKClcbiAgICAgICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgaXZhciAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoKSlcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPSBEZWZlcnJlZC5hbnkgWyBlbmRfb2ZfcGlwZTsgc3RvcHBlZCB0IF0gaW5cbiAgICBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2UgdCA9XG4gIGxldCViaW5kICgpID0gV3JpdGVyLmNsb3NlIHQud3JpdGVyIGluXG4gIFJlYWRlci5jbG9zZSB0LnJlYWRlclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcblxuKCoqIFRoZSB0eXBlcyBvZiB0aGUgW0ltcGxlbWVudGF0aW9uXSBhbmQgW0ltcGxlbWVudGF0aW9uc10gbW9kdWxlcywgd2hpY2ggaGF2ZVxuICAgIGEgZGVwZW5kZW5jeSBjeWxlOiBbSW1wbGVtZW50YXRpb25dIC0+IFtEaXJlY3Rfc3RyZWFtX3dyaXRlcl0gLT5cbiAgICBbSW1wbGVtZW50YXRpb25zXSAtPiBbSW1wbGVtZW50YXRpb25dLiAqKVxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXJfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gICAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHJlYyBJbXBsZW1lbnRhdGlvbiA6IHNpZ1xuICBtb2R1bGUgRXhwZXJ0IDogc2lnXG4gICAgbW9kdWxlIFJlc3BvbmRlciA6IHNpZ1xuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBGIDogc2lnXG4gICAgdHlwZSAoXywgXykgcmVzdWx0X21vZGUgPVxuICAgICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCkgcmVzdWx0X21vZGVcbiAgICAgIHwgRGVmZXJyZWQgOiAoJ2EsICdhIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgcmVzdWx0X21vZGVcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnRcbiAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICd1cGRhdGUgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAtPiAoJ2luaXQsICdpbml0KSBSZXN1bHQudCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG5cbiAgICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwYyA9XG4gICAgICB7IGJpbl9xdWVyeV9yZWFkZXIgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgIDsgYmluX2luaXRfd3JpdGVyIDogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIDsgYmluX3VwZGF0ZV93cml0ZXIgOiAndXBkYXRlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgICAgOyBpbXBsIDogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgICAgfVxuXG4gICAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICAgIHwgT25lX3dheSA6XG4gICAgICAgICAgJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBPbmVfd2F5X2V4cGVydCA6XG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwYyA6XG4gICAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGNcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gIGVuZFxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGYgOiAnY29ubmVjdGlvbl9zdGF0ZSBGLnRcbiAgICA7IHNoYXBlcyA6IFJwY19zaGFwZXMudCBMYXp5LnRcbiAgICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gICAgfVxuZW5kID1cbiAgSW1wbGVtZW50YXRpb25cblxuYW5kIEltcGxlbWVudGF0aW9ucyA6IHNpZ1xuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgICBbIGBSYWlzZVxuICAgIHwgYENvbnRpbnVlXG4gICAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICAgIHwgYENhbGwgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gWyBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDb250aW51ZSBdXG4gICAgfCBgRXhwZXJ0IG9mXG4gICAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IEltcGxlbWVudGF0aW9uLkV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgXVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IERlc2NyaXB0aW9uLlRhYmxlLnRcbiAgICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNcbiAgICB9XG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBpbXBsZW1lbnRhdGlvbnMgPSAnY29ubmVjdGlvbl9zdGF0ZSB0XG5cbiAgbW9kdWxlIHJlYyBJbnN0YW5jZSA6IHNpZ1xuICAgIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICAgIHwgUGlwZSA6IF8gUGlwZS5SZWFkZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgICAgIHwgRGlyZWN0IDogXyBEaXJlY3Rfc3RyZWFtX3dyaXRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuXG4gICAgdHlwZSAnYSB1bnBhY2tlZCA9XG4gICAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdhIGltcGxlbWVudGF0aW9uc1xuICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogKFF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gICAgICA7IG11dGFibGUgc3RvcHBlZCA6IGJvb2xcbiAgICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIDogSW5mby50IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZVxuICAgICAgICBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAgIChEZXNjcmlwdGlvbi50ICogJ2EgSW1wbGVtZW50YXRpb24udCkgb3B0aW9uXG4gICAgICA7IHBhY2tlZF9zZWxmIDogdFxuICAgICAgfVxuXG4gICAgYW5kIHQgPSBUIDogXyB1bnBhY2tlZCAtPiB0XG4gIGVuZFxuZW5kID1cbiAgSW1wbGVtZW50YXRpb25zXG5cbmFuZCBEaXJlY3Rfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICBtb2R1bGUgUGVuZGluZ19yZXNwb25zZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IE5vcm1hbCBvZiAnYVxuICAgICAgfCBFeHBlcnQgb2Ygc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IE5vdF9zdGFydGVkIG9mICdhIFBlbmRpbmdfcmVzcG9uc2UudCBRdWV1ZS50XG4gICAgICB8IFN0YXJ0ZWRcbiAgZW5kXG5cbiAgbW9kdWxlIElkID0gRGlyZWN0X3N0cmVhbV93cml0ZXJfaWRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICA7IGluc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnRcbiAgICA7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9iaW5fd3JpdGVyLnRcbiAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgfVxuXG4gIGFuZCAnYSBncm91cF9lbnRyeSA9XG4gICAgeyBncm91cCA6ICdhIERpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLnRcbiAgICA7IGVsZW1lbnRfaW5fZ3JvdXAgOiAnYSB0IEJhZy5FbHQudFxuICAgIH1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogW2NvbXBvbmVudHNdIGlzIG9ubHkgdHJhY2tlZCBzZXBhcmF0ZWx5IGZyb20gW2NvbXBvbmVudHNfYnlfaWRdIHNvIHdlIGNhbiBpdGVyYXRlXG4gICAgICAgICAgIG92ZXIgaXRzIGVsZW1lbnRzIG1vcmUgcXVpY2tseSB0aGFuIHdlIGNvdWxkIGl0ZXJhdGUgb3ZlciB0aGUgdmFsdWVzIG9mXG4gICAgICAgICAgIFtjb21wb25lbnRzX2J5X2lkXS4gKilcbiAgICAgICAgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgIDsgY29tcG9uZW50c19ieV9pZCA6ICdhIGNvbXBvbmVudCBJZC5UYWJsZS50XG4gICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgfVxuXG4gICAgYW5kICdhIGNvbXBvbmVudCA9XG4gICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIDogJ2EgZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICB9XG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgOj0gJ2EgdFxuZW5kID1cbiAgRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuYW5kIENhY2hlZF9iaW5fd3JpdGVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgIDsgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgfVxuZW5kID1cbiAgQ2FjaGVkX2Jpbl93cml0ZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSB0ID0gSW1wbGVtZW50YXRpb25fdHlwZXMuT25fZXhjZXB0aW9uLnQgPVxuICB7IGNhbGxiYWNrIDogKGV4biAtPiB1bml0KSBvcHRpb24gW0BzZXhwLm9taXRfbmlsXVxuICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2VfY29ubmVjdGlvbiA9IHsgY2FsbGJhY2sgPSBOb25lOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA9IHRydWUgfVxubGV0IGNvbnRpbnVlID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gZmFsc2UgfVxuXG5sZXQgaGFuZGxlX2V4blxuICAgICAgeyBjYWxsYmFjazsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgfVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgZXhuXG4gID1cbiAgT3B0aW9uLml0ZXIgY2FsbGJhY2sgfmY6KGZ1biBjYWxsYmFjayAtPiBjYWxsYmFjayBleG4pO1xuICBpZiBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICB0aGVuIE1vbml0b3Iuc2VuZF9leG4gY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4blxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcbm9wZW4gSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRXhwZXJ0LlJlc3BvbmRlci50ID1cbiAgICAgIHsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSBxdWVyeV9pZCB3cml0ZXIgPSB7IHF1ZXJ5X2lkOyB3cml0ZXI7IHJlc3BvbmRlZCA9IGZhbHNlIH1cbiAgZW5kXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPSBFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICB8IFJlcGxpZWRcbiAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxubW9kdWxlIEYgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSByZXN1bHRfbW9kZSA9ICgnYSwgJ2IpIEYucmVzdWx0X21vZGUgPVxuICAgIHwgQmxvY2tpbmcgOiAoJ2EsICdhIE9yX25vdF9hdXRob3JpemVkLnQpIHJlc3VsdF9tb2RlXG4gICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19pbXBsID1cbiAgICB8IFBpcGUgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICB8IERpcmVjdCBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gJ3VwZGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAtPiAoJ2luaXQsICdpbml0KSBSZXN1bHQudCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG5cbiAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGMgPVxuICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgRi5zdHJlYW1pbmdfcnBjID1cbiAgICB7IGJpbl9xdWVyeV9yZWFkZXIgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICA7IGJpbl9pbml0X3dyaXRlciA6ICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyBiaW5fdXBkYXRlX3dyaXRlciA6ICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgIDsgaW1wbCA6ICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGxcbiAgICB9XG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgRi50ID1cbiAgICB8IE9uZV93YXkgOlxuICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwYyA6XG4gICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgKiAoJ3Jlc3BvbnNlLCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAqIChFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0LCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBsZXQgc2V4cF9vZl90IF8gPSBmdW5jdGlvblxuICAgIHwgT25lX3dheV9leHBlcnQgXyB8IE9uZV93YXkgXyAtPiBbJW1lc3NhZ2UgXCJvbmUtd2F5XCJdXG4gICAgfCBScGNfZXhwZXJ0IF8gfCBScGMgXyAtPiBbJW1lc3NhZ2UgXCJycGNcIl1cbiAgICB8IFN0cmVhbWluZ19ycGMgXyAtPiBbJW1lc3NhZ2UgXCJzdHJlYW1pbmctcnBjXCJdXG4gIDs7XG5cbiAgbGV0IGxpZnQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgc3RyID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHN0cilcbiAgICAgIGluXG4gICAgICBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnRcbiAgICAgICAgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcSA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxKVxuICAgICAgaW5cbiAgICAgIFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBxID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpXG4gICAgICBpblxuICAgICAgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICBpblxuICAgICAgUnBjX2V4cGVydCAoaW1wbCwgQmxvY2tpbmcpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICBpblxuICAgICAgUnBjX2V4cGVydCAoaW1wbCwgRGVmZXJyZWQpXG4gICAgfCBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9IC0+XG4gICAgICBsZXQgaW1wbCA9XG4gICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICB8IFBpcGUgaW1wbCAtPlxuICAgICAgICAgIFBpcGVcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxKSlcbiAgICAgICAgfCBEaXJlY3QgaW1wbCAtPlxuICAgICAgICAgIERpcmVjdFxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIHcgLT5cbiAgICAgICAgICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSB3KSlcbiAgICAgIGluXG4gICAgICBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9XG4gIDs7XG5cbiAgbGV0IGxpZnRfZGVmZXJyZWQgKHR5cGUgYSBiKSAodCA6IGIgdCkgfihmIDogYSAtPiBiIERlZmVycmVkLnQpIDogYSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+XG4gICAgICBPbmVfd2F5XG4gICAgICAgICggYmluX21zZ1xuICAgICAgICAsIGZ1biBzdGF0ZSBzdHIgLT4gRWFnZXJfZGVmZXJyZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBzdGF0ZSAtPiBpbXBsIHN0YXRlIHN0cilcbiAgICAgICAgKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnRcbiAgICAgICAgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgICAgIEVhZ2VyX2RlZmVycmVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gc3RhdGUgLT4gaW1wbCBzdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgUnBjXG4gICAgICAgICggYmluX3F1ZXJ5XG4gICAgICAgICwgYmluX3Jlc3BvbnNlXG4gICAgICAgICwgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgbGV0JW1hcC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBScGNcbiAgICAgICAgKCBiaW5fcXVlcnlcbiAgICAgICAgLCBiaW5fcmVzcG9uc2VcbiAgICAgICAgLCAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBScGNfZXhwZXJ0XG4gICAgICAgICggKGZ1biBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgaW1wbCBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBScGNfZXhwZXJ0XG4gICAgICAgICggKGZ1biBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgIGxldCVtYXAuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9IC0+XG4gICAgICBsZXQgaW1wbCA9XG4gICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICB8IFBpcGUgaW1wbCAtPlxuICAgICAgICAgIFBpcGVcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgIHwgRGlyZWN0IGltcGwgLT5cbiAgICAgICAgICBEaXJlY3RcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSB3IC0+XG4gICAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICAgIGltcGwgc3RhdGUgcSB3KVxuICAgICAgaW5cbiAgICAgIFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH1cbiAgOztcbmVuZFxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbi50ID1cbiAgeyB0YWcgOiBScGNfdGFnLnRcbiAgOyB2ZXJzaW9uIDogaW50XG4gIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICA7IHNoYXBlcyA6IFJwY19zaGFwZXMudCBMYXp5LnRcbiAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IFJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbmxldCBzaGFwZXMgdCA9IGZvcmNlIHQuc2hhcGVzXG5cbmxldCBsaWZ0ICh0eXBlIGEgYikgKHQgOiBhIHQpIH4oZiA6IGIgLT4gYSkgOiBiIHQgPVxuICB7IHQgd2l0aCBmID0gRi5saWZ0IHQuZiB+ZjooZnVuIGIgLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBiKSkgfVxuOztcblxubGV0IHdpdGhfYXV0aG9yaXphdGlvbiB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdCB0LmYgfmYgfVxubGV0IGxpZnRfZGVmZXJyZWQgdCB+ZiA9IHsgdCB3aXRoIGYgPSBGLmxpZnRfZGVmZXJyZWQgdC5mIH5mIH1cbmxldCB1cGRhdGVfb25fZXhjZXB0aW9uIHQgfmYgPSB7IHQgd2l0aCBvbl9leGNlcHRpb24gPSBmIHQub25fZXhjZXB0aW9uIH1cbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbmluY2x1ZGUgUHJvdG9jb2wuUnBjX2Vycm9yXG5pbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFByb3RvY29sLlJwY19lcnJvcilcblxuZXhjZXB0aW9uIFJwYyBvZiB0ICogSW5mby50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCByYWlzZSB0IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gPSByYWlzZSAoUnBjICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKSlcblxubGV0IHNleHBfb2ZfdCB0IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBDb25uZWN0aW9uX2Nsb3NlZCAtPlxuICAgIFslc2V4cCBgQ29ubmVjdGlvbl9jbG9zZWQgKGdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiAoKSA6IFNleHAudCldXG4gIHwgQmluX2lvX2V4biBfXG4gIHwgV3JpdGVfZXJyb3IgX1xuICB8IFVuY2F1Z2h0X2V4biBfXG4gIHwgVW5pbXBsZW1lbnRlZF9ycGMgX1xuICB8IFVua25vd25fcXVlcnlfaWQgXyAtPiBzZXhwX29mX3QgdFxuOztcblxuKCogaXQgd291bGQgbWFrZSBzZW5zZSB0byBqdXN0IHRha2UgYSBbQ29ubmVjdGlvbi50XSwgYnV0IHdlIHRha2UgaXRzIHBpZWNlcyBpbnN0ZWFkIHRvXG4gICBhdm9pZCBhIGRlcGVuZGVuY3kgY3ljbGUgKilcbmxldCB0b19lcnJvclxuICAgICAgdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IERlc2NyaXB0aW9uLm5hbWUgPSBycGNfbmFtZTsgdmVyc2lvbiA9IHJwY192ZXJzaW9uIH1cbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gID1cbiAgbGV0IHJwY19lcnJvciA9XG4gICAgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICBsZXQgY2xvc2VfcmVhc29uID1cbiAgICAgICAgKCogVXN1YWxseSAoYWx3YXlzPykgaGVyZSB3ZSB3aWxsIGhhdmUgdGhlIGRlZmVycmVkIGFscmVhZHkgZnVsbFxuICAgICAgICAgICBiZWNhdXNlIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yIG1lYW5zIHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHlcbiAgICAgICAgICAgY2xvc2VkICopXG4gICAgICAgIERlZmVycmVkLnBlZWsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICBpblxuICAgICAgWyVzZXhwIChjbG9zZV9yZWFzb24gOiBJbmZvLnQgb3B0aW9uKV0pXG4gIGluXG4gIEVycm9yLmNyZWF0ZV9zXG4gICAgWyVzZXhwXG4gICAgICB7IHJwY19lcnJvciA6IFNleHAudFxuICAgICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgICA7IHJwY19uYW1lIDogc3RyaW5nXG4gICAgICA7IHJwY192ZXJzaW9uIDogaW50XG4gICAgICB9XVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGxvY2FsX3N0b3JhZ2Vfa2V5ID1cbiAgVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZTpcImFzeW5jX3JwY19rZXJuZWxfbWV0YWRhdGFcIiBbJXNleHBfb2Y6IHRdXG47O1xuXG5sZXQgZ2V0ICgpID0gQXN5bmNfa2VybmVsLkFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuZmluZF9sb2NhbCBsb2NhbF9zdG9yYWdlX2tleVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgd2l0aF9tZXRhZGF0YSBtZXRhZGF0YSB+ZiA9XG4gICAgQXN5bmNfa2VybmVsLkFzeW5jX2tlcm5lbF9zY2hlZHVsZXIud2l0aF9sb2NhbCBsb2NhbF9zdG9yYWdlX2tleSBtZXRhZGF0YSB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCB0XTtcbiAgWyVleHBlY3Qge3wgNTg3MzRhNjNhNWM4M2MxYjdjYmZjM2ZlZGZhM2FlODIgfH1dXG47O1xuXG50eXBlIGxvY2F0ZWRfZXJyb3IgPVxuICB7IGxvY2F0aW9uIDogc3RyaW5nXG4gIDsgZXhuIDogRXhuLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHVuY2F1Z2h0X2V4biB+bG9jYXRpb24gZXhuID1cbiAgRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgYmluX2lvX2V4biB+bG9jYXRpb24gZXhuID1cbiAgRXJyb3IgKFJwY19lcnJvci5CaW5faW9fZXhuIChzZXhwX29mX2xvY2F0ZWRfZXJyb3IgeyBsb2NhdGlvbjsgZXhuIH0pKVxuOztcblxubGV0IHRyeV93aXRoID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbiA/cnVuIH5sb2NhdGlvbiBmID1cbiAgbGV0IHggPVxuICAgIGxldCByZXN0ID1cbiAgICAgIG1hdGNoIG9uX2JhY2tncm91bmRfZXhjZXB0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTG9nXG4gICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICBpblxuICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgIH5yZXN0XG4gICAgICB+cnVuOihPcHRpb24udmFsdWUgcnVuIH5kZWZhdWx0OmBTY2hlZHVsZSlcbiAgICAgIGZcbiAgaW5cbiAgbGV0IGpvaW4gPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiB4XG4gICAgfCBFcnJvciBleG4gLT4gdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG5cbiAgaW5cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayB4IHdpdGhcbiAgfCBOb25lIC0+IHggPj58IGpvaW5cbiAgfCBTb21lIHggLT4gcmV0dXJuIChqb2luIHgpXG47O1xuXG5sZXQgb3JfZXJyb3IgfnJwY19kZXNjcmlwdGlvbiB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkID1cbiAgUmVzdWx0Lm1hcF9lcnJvclxuICAgIH5mOlxuICAgICAgKFJwY19lcnJvci50b19lcnJvclxuICAgICAgICAgfnJwY19kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQpXG47O1xuIiwib3BlbiBDb3JlXG5cbigqIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGJpbi1pbydpbmcgb3V0IG9mIGEgQmlnc3RyaW5nLnQgKilcbmxldCBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgKGJpbl9yZWFkZXJfdCA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpXG4gICAgICA/YWRkX2xlblxuICAgICAgYnVmXG4gICAgICB+cG9zX3JlZlxuICAgICAgfihsZW4gOiBOYXQwLnQpXG4gICAgICB+bG9jYXRpb25cbiAgPVxuICB0cnlcbiAgICBsZXQgaW5pdF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBkYXRhID0gYmluX3JlYWRlcl90LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGFkZF9sZW4gPVxuICAgICAgbWF0Y2ggYWRkX2xlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gMFxuICAgICAgfCBTb21lIGFkZF9sZW4gLT4gYWRkX2xlbiBkYXRhXG4gICAgaW5cbiAgICBpZiAhcG9zX3JlZiAtIGluaXRfcG9zICsgYWRkX2xlbiA8PiAobGVuIDo+IGludClcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aGZcbiAgICAgICAgXCJtZXNzYWdlIGxlbmd0aCAoJWQpIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgbGVuZ3RoICglZClcIlxuICAgICAgICAoIXBvc19yZWYgLSBpbml0X3BvcylcbiAgICAgICAgKGxlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICAgICgpO1xuICAgIE9rIGRhdGFcbiAgd2l0aFxuICB8IGUgLT4gUnBjX3Jlc3VsdC5iaW5faW9fZXhuIH5sb2NhdGlvbiBlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm9wZW4gSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbigqIENvbW11dGUgUmVzdWx0IGFuZCBEZWZlcnJlZC4gKilcbmxldCBkZWZlcl9yZXN1bHQgOiAnYSAnYi4gKCdhIERlZmVycmVkLnQsICdiKSBSZXN1bHQudCAtPiAoJ2EsICdiKSBSZXN1bHQudCBEZWZlcnJlZC50XG4gID0gZnVuY3Rpb25cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IHJldHVybiBlcnJcbiAgICB8IE9rIGQgLT5cbiAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0JW1hcCB4ID0gZCBpblxuICAgICAgICAgT2sgeFxuICAgICAgIHwgU29tZSBkIC0+IHJldHVybiAoT2sgZCkpXG47O1xuXG5tb2R1bGUgUmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlclxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgWyBgUmFpc2VcbiAgfCBgQ29udGludWVcbiAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICB8IGBDYWxsIG9mXG4gICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0ID1cbiAgWyAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICB8IGBFeHBlcnQgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFJlc3BvbmRlci50XG4gICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gIF1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zLnQgPVxuICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnRcbiAgfVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxubGV0IGRlc2NyaXB0aW9ucyB0ID0gSGFzaHRibC5rZXlzIHQuaW1wbGVtZW50YXRpb25zXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9IEluc3RhbmNlLnN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgIHwgRGlyZWN0IDpcbiAgICAgICAgKF8gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFtAc2V4cC5vcGFxdWVdKVxuICAgICAgICAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZXMgPSAoUC5RdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdW5wYWNrZWQgPSAnYSBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAoJ2EgaW1wbGVtZW50YXRpb25zW0BzZXhwLm9wYXF1ZV0pXG4gICAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgIDsgbXV0YWJsZVxuICAgICAgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDpcbiAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAoJ2EgSW1wbGVtZW50YXRpb24udFtAc2V4cC5vcGFxdWVdKSkgb3B0aW9uXG4gICAgKCogW3BhY2tlZF9zZWxmXSBpcyBoZXJlIHNvIHdlIGNhbiBlc3NlbnRpYWxseSBwYWNrIGFuIHVucGFja2VkIGluc3RhbmNlIHdpdGhvdXQgZG9pbmdcbiAgICAgICBhbnkgYWRkaXRpb25hbCBhbGxvY2F0aW9uLiAqKVxuICAgIDsgcGFja2VkX3NlbGYgOiAodFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBhbmQgdCA9IEluc3RhbmNlLnQgPSBUIDogXyB1bnBhY2tlZCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFslc2V4cF9vZjogXyB1bnBhY2tlZF0gdFxuXG4gIGxldCBzZW5kX3dyaXRlX2Vycm9yIHQgaWQgc2V4cCA9XG4gICAgbGV0IGRhdGEgOiBfIFAuTWVzc2FnZS50ID0gUmVzcG9uc2UgeyBpZDsgZGF0YSA9IEVycm9yIChXcml0ZV9lcnJvciBzZXhwKSB9IGluXG4gICAgbWF0Y2ggV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGRhdGEgd2l0aFxuICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICBcIkZhaWxlZCB0byBzZW5kIHdyaXRlIGVycm9yIHRvIGNsaWVudFwiXG4gICAgICAgICwgeyBlcnJvciA9IChzZXhwIDogU2V4cC50KTsgcmVhc29uID0gKHIgOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSB9XVxuICA7O1xuXG4gIGxldCBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZCAocmVzdWx0IDogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCkgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBTZW50ICgpIC0+ICgpXG4gICAgfCBDbG9zZWQgLT4gKClcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT5cbiAgICAgIHNlbmRfd3JpdGVfZXJyb3IgdCBpZCAoWyVzZXhwX29mOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XSByKVxuICA7O1xuXG4gIGxldCB3cml0ZV9tZXNzYWdlIHQgYmluX3dyaXRlciB4IH5pZCA9XG4gICAgaWYgbm90IHQuc3RvcHBlZFxuICAgIHRoZW4gV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgYmluX3dyaXRlciB4IHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuIH5pZCA9XG4gICAgaWYgbm90IHQuc3RvcHBlZFxuICAgIHRoZW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdC53cml0ZXIgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZFxuICA7O1xuXG4gIGxldCB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl93cml0ZXJfZGF0YSBkYXRhID1cbiAgICBsZXQgYmluX3dyaXRlciA9XG4gICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9kYXRhKVxuICAgIGluXG4gICAgd3JpdGVfbWVzc2FnZSB0IH5pZCBiaW5fd3JpdGVyIChSZXNwb25zZSB7IGlkOyBkYXRhIH0pXG4gIDs7XG5cbiAgbW9kdWxlIENhY2hlZF9iaW5fd3JpdGVyIDogc2lnXG4gICAgdHlwZSAnYSB0ID0gJ2EgSW1wbGVtZW50YXRpb25fdHlwZXMuQ2FjaGVkX2Jpbl93cml0ZXIudFxuXG4gICAgdmFsIGNyZWF0ZSA6IGlkOlAuUXVlcnlfaWQudCAtPiBiaW5fd3JpdGVyOidhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIHRcbiAgICB2YWwgcHJlcF93cml0ZSA6ICdhIHQgLT4gJ2EgLT4gKCdhIHQgKiAnYSkgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB2YWwgcHJlcF93cml0ZV9leHBlcnQgOiAnYSB0IC0+IGxlbjppbnQgLT4gJ2EgdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIHZhbCBwcmVwX3dyaXRlX3N0cmluZyA6ICdhIHQgLT4gc3RyaW5nIC0+ICgnYSB0ICogc3RyaW5nKSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfYmluX3dyaXRlci50ID1cbiAgICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICAgIDsgKCogTGVuZ3RoIG9mIHRoZSB1c2VyIGRhdGEgcGFydC4gV2Ugc2V0IHRoaXMgZmllbGQgd2hlbiBzZW5kaW5nIGEgbWVzc2FnZS4gVGhpc1xuICAgICAgICAgICByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkIGltbWVkaWF0ZWx5ICh3aGljaCBpcyB0aGVcbiAgICAgICAgICAgb25seSBhY2NlcHRhYmxlIHNlbWFudGljcyBmb3IgdGhlIHRyYW5zcG9ydCBsYXllciBhbnl3YXksIGFzIGl0IGRvZXNuJ3Qga25vdyBpZlxuICAgICAgICAgICB0aGUgdmFsdWUgaXMgbXV0YWJsZSBvciBub3QpLlxuXG4gICAgICAgICAgIFtkYXRhX2xlbl0gaXMgcGFzc2VkIHRvIGJpbi1wcm90IHdyaXRlcnMgYnkgbXV0YXRpbmcgW2RhdGFfbGVuXSBpbnN0ZWFkIG9mIGJ5XG4gICAgICAgICAgIHBhc3NpbmcgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBhdm9pZCBzb21lIGFsbG9jYXRpb24uXG4gICAgICAgICopXG4gICAgICAgIG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICB9XG5cblxuICAgIHR5cGUgdm9pZCA9IFZvaWRcblxuICAgIGxldCBiaW5fc2l6ZV92b2lkIFZvaWQgPSAwXG4gICAgbGV0IGJpbl93cml0ZV92b2lkIF9idWYgfnBvcyBWb2lkID0gcG9zXG5cbiAgICB0eXBlIHZvaWRfbWVzc2FnZSA9IHZvaWQgUC5NZXNzYWdlLm5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICB0eXBlIHZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEgPSB2b2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX3dyaXRlXVxuXG4gICAgKCogVGhpcyBpcyBub3QgcmUtZW50cmFudCBidXQgQXN5bmMgY29kZSBhbHdheXMgcnVucyBvbiBvbmUgdGhyZWFkIGF0IGEgdGltZSAqKVxuICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDMyXG5cbiAgICBsZXQgY2FjaGVfYmluX3Byb3R0ZWQgKGJpbl93cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB4ID1cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyLndyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmZmVyIH5wb3M6MCB+bGVuXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgYSkgfmlkIH5iaW5fd3JpdGVyIDogYSB0ID1cbiAgICAgIGxldCBoZWFkZXJfcHJlZml4ID1cbiAgICAgICAgY2FjaGVfYmluX3Byb3R0ZWQgYmluX3dyaXRlcl92b2lkX21lc3NhZ2UgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayBWb2lkIH0pXG4gICAgICBpblxuICAgICAgeyBoZWFkZXJfcHJlZml4OyBiaW5fd3JpdGVyOyBkYXRhX2xlbiA9IE5hdDAub2ZfaW50X2V4biAwIH1cbiAgICA7O1xuXG4gICAgKCogVGhpcyBwYXJ0IG9mIHRoZSBtZXNzYWdlIGhlYWRlciBpcyBhIGNvbnN0YW50LCBtYWtlIGl0IGEgbGl0ZXJhbCB0byBtYWtlIHRoZVxuICAgICAgIHdyaXRpbmcgY29kZSBzbGlnaHRseSBmYXN0ZXIuICopXG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gPSA0XG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMiA9IDB4OGE3OWxcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzdHJlYW1fcmVzcG9uc2VfKiBjb25zdGFudHMgYXJlIGNvcnJlY3RcIiA9XG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgYmluX3dyaXRlcl92b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhLndyaXRlXG4gICAgICAgICAgYnVmZmVyXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgKGBPayBWb2lkIDogdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSlcbiAgICAgIGluXG4gICAgICBhc3NlcnQgKGxlbiA9IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4pO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50MzJfdF9sZSBidWZmZXIgfnBvczowXG4gICAgICAgID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyKVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyID1cbiAgICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICAgICgqIFZlcnkgbG93LWxldmVsIGJpbl9wcm90IHN0dWZmLi4uICopXG4gICAgICBCaW5fcHJvdC5Db21tb24uYXNzZXJ0X3BvcyBwb3M7XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIHN0cl9sZW4gaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmluX3Byb3QuQ29tbW9uLnVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuOnN0cl9sZW47XG4gICAgICBuZXh0XG4gICAgOztcblxuICAgICgqIFRoZSB0d28gZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgMyB2YXJpYW50cyBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlLiBUaGV5XG4gICAgICAgc2VyaWFsaXplIGEgW1Jlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayAoYE9rIGRhdGFfbGVuKSB9XSB2YWx1ZSwgdGFraW5nIGNhcmUgb2ZcbiAgICAgICB3cml0aW5nIHRoZSBbTmF0MC50XSBsZW5ndGggcHJlZml4IHdoZXJlIGFwcHJvcmlhdGUuXG5cbiAgICAgICBCZWFyIGluIG1pbmQgdGhhdCB0aGVyZSBhcmUgdHdvIGxldmVscyBvZiBsZW5ndGggcHJlZml4ZXMgZm9yIHN0cmVhbSByZXNwb25zZSBkYXRhXG4gICAgICAgbWVzc2FnZTogb25lIGZvciB0aGUgdXNlciBkYXRhICh1bmRlciB0aGUgYE9rLCBiZWZvcmUgdGhlIGFjdHVhbCBkYXRhKSwgYW5kIG9uZSBmb3JcbiAgICAgICB0aGUgcmVzcG9uc2UgZGF0YSAodW5kZXIgdGhlIC5kYXRhIGZpZWxkLCBiZWZvcmUgdGhlIE9rKS4gKilcbiAgICBsZXQgYmluX3NpemVfbmF0MF9oZWFkZXIgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gKyBOYXQwLmJpbl9zaXplX3QgZGF0YV9sZW5cbiAgICAgIGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW4gKyAoZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5sZW5ndGggaGVhZGVyX3ByZWZpeFxuICAgICAgKyBOYXQwLmJpbl9zaXplX3QgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pXG4gICAgICArIHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBoZWFkZXJfcHJlZml4IGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlblxuICAgICAgICArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgICArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pIGluXG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50MzJfdF9sZSBidWYgfnBvcyBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzI7XG4gICAgICBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zOm5leHQgZGF0YV9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbmF0MF9oZWFkZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX25hdDBfaGVhZGVyOyB3cml0ZSA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlICh0LCBfKSA9IGJpbl9zaXplX25hdDBfaGVhZGVyIHQgKyAodC5kYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2UgYnVmIH5wb3MgKHQsIGRhdGEpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgdC5iaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZTsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZSB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyAodCwgXykgPVxuICAgICAgYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyBidWYgfnBvcyAodCwgc3RyKSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHQgaW5cbiAgICAgIGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIHN0clxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZV9hc19zdHJpbmc7IHdyaXRlID0gYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIH1cbiAgICA7O1xuXG4gICAgbGV0IHByZXBfd3JpdGUgdCBkYXRhID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuICh0LmJpbl93cml0ZXIuc2l6ZSBkYXRhKTtcbiAgICAgIGJpbl93cml0ZXJfbWVzc2FnZVxuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZV9zdHJpbmcgdCBzdHIgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKFN0cmluZy5sZW5ndGggc3RyKTtcbiAgICAgIGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IHByZXBfd3JpdGVfZXhwZXJ0IHQgfmxlbiA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biBsZW47XG4gICAgICBiaW5fd3JpdGVyX25hdDBfaGVhZGVyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuICAgIG1vZHVsZSBTdGF0ZSA9IFQuU3RhdGVcbiAgICBtb2R1bGUgSWQgPSBULklkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPVxuICAgICAgeyBpZCA6IElkLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgaW5zdGFuY2UgOiBJbnN0YW5jZS50XG4gICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfYmluX3dyaXRlci50XG4gICAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgICB9XG5cbiAgICBhbmQgJ2EgZ3JvdXBfZW50cnkgPSAnYSBULmdyb3VwX2VudHJ5ID1cbiAgICAgIHsgZ3JvdXAgOiAnYSBULkdyb3VwLnRcbiAgICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgICB9XG5cbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICBsZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcblxuICAgIGxldCBmbHVzaGVkIHQgPVxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIFRyYW5zcG9ydC5Xcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXJcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXIgdCA9IHQuc3RyZWFtX3dyaXRlci5iaW5fd3JpdGVyXG5cbiAgICBsZXQgd3JpdGVfZW9mIHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9ID1cbiAgICAgIHdyaXRlX3Jlc3BvbnNlIGluc3RhbmNlIHF1ZXJ5X2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpXG4gICAgOztcblxuICAgICgqIFt3cml0ZV9tZXNzYWdlX3N0cmluZ10gYW5kIFt3cml0ZV9tZXNzYWdlXSBib3RoIGFsbG9jYXRlIDMgd29yZHMgZm9yIHRoZSB0dXBsZXMuXG4gICAgICAgW3dyaXRlX21lc3NhZ2VfZXhwZXJ0XSBkb2VzIG5vdCBhbGxvY2F0ZS4gKilcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlX3N0cmluZyB0IHggPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmcgPVxuICAgICAgICBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlX3N0cmluZyB0LnN0cmVhbV93cml0ZXIgeFxuICAgICAgaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlXG4gICAgICAgIGluc3RhbmNlXG4gICAgICAgIH5pZDp0LnF1ZXJ5X2lkXG4gICAgICAgIGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmdcbiAgICAgICAgKHQuc3RyZWFtX3dyaXRlciwgeClcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2UgdCB4ID1cbiAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgPSBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlIHQuc3RyZWFtX3dyaXRlciB4IGluXG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQ6dC5xdWVyeV9pZCBiaW5fd3JpdGVyX21lc3NhZ2UgKHQuc3RyZWFtX3dyaXRlciwgeClcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA9IENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGVfZXhwZXJ0IHQuc3RyZWFtX3dyaXRlciB+bGVuIGluXG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgd3JpdGVfbWVzc2FnZV9leHBlcnRcbiAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgfmlkOnQucXVlcnlfaWRcbiAgICAgICAgYmluX3dyaXRlcl9tZXNzYWdlXG4gICAgICAgIHQuc3RyZWFtX3dyaXRlclxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQgPVxuICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgdC5jbG9zZWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgICAgICBsZXQgZ3JvdXBzID0gdC5ncm91cHMgaW5cbiAgICAgICAgaWYgbm90IChCYWcuaXNfZW1wdHkgZ3JvdXBzKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlLlZlcnlfbG93X3ByaW9yaXR5X3dvcmsuZW5xdWV1ZSB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBCYWcucmVtb3ZlX29uZSBncm91cHMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IEZpbmlzaGVkXG4gICAgICAgICAgICB8IFNvbWUgeyBncm91cDsgZWxlbWVudF9pbl9ncm91cCB9IC0+XG4gICAgICAgICAgICAgIEJhZy5yZW1vdmUgZ3JvdXAuY29tcG9uZW50cyBlbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSBncm91cC5jb21wb25lbnRzX2J5X2lkIHQuaWQ7XG4gICAgICAgICAgICAgIE5vdF9maW5pc2hlZCk7XG4gICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICB8IE5vdF9zdGFydGVkIF8gLT4gKClcbiAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX2VvZiB0KVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2UgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9IGFzIHQpID1cbiAgICAgIGNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB0O1xuICAgICAgSGFzaHRibC5yZW1vdmUgaW5zdGFuY2Uub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5X2lkXG4gICAgOztcblxuICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPiBRdWV1ZS5lbnF1ZXVlIHEgKE5vcm1hbCB4KVxuICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2UgdCB4KTtcbiAgICAgICAgYE9rKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGUgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBfIH0gYXMgdCkgeCA9XG4gICAgICBtYXRjaCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCB3aXRoXG4gICAgICB8IGBDbG9zZWQgLT4gYENsb3NlZFxuICAgICAgfCBgT2sgLT4gYEZsdXNoZWQgKFdyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlcilcbiAgICA7O1xuXG4gICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgICB0aGVuIGBDbG9zZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IE5vdF9zdGFydGVkIHEgLT5cbiAgICAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHEgKEV4cGVydCAoQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmIH5wb3MgfmxlbikpXG4gICAgICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IH5idWYgfnBvcyB+bGVuKTtcbiAgICAgICAgICBgT2spXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBfIH0gYXMgdCkgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBtYXRjaCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gd2l0aFxuICAgICAgICB8IGBDbG9zZWQgLT4gYENsb3NlZFxuICAgICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBzdGFydCB0ID1cbiAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgfCBTdGFydGVkIC0+IGZhaWx3aXRoIFwiYXR0ZW1wdGVkIHRvIHN0YXJ0IHdyaXRlciB3aGljaCB3YXMgYWxyZWFkeSBzdGFydGVkXCJcbiAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICB0LnN0YXRlIDwtIFN0YXJ0ZWQ7XG4gICAgICAgIFF1ZXVlLml0ZXIgcSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vcm1hbCB4IC0+IHdyaXRlX21lc3NhZ2UgdCB4XG4gICAgICAgICAgfCBFeHBlcnQgeCAtPiB3cml0ZV9tZXNzYWdlX3N0cmluZyB0IHgpO1xuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWQgdGhlbiB3cml0ZV9lb2YgdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb25cbiAgICAgICAgKHJlc3VsdCA6IChfLCBScGNfZXJyb3IudCkgUmVzdWx0LnQpXG4gICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciAoVW5jYXVnaHRfZXhuIHNleHApIC0+XG4gICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciAoRXhuLmNyZWF0ZV9zIHNleHApXG4gICAgfCBFcnJvciBfIHwgT2sgXyAtPiAoKVxuICA7O1xuXG4gIGxldCBhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZCA9XG4gICAgbGV0IGV4biA9IEVycm9yLnRvX2V4biBlcnJvciBpblxuICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICBleG5cbiAgICAgIH5sb2NhdGlvbjpbJXN0cmluZyBcInNlcnZlci1zaWRlICV7cnBjX2tpbmR9IGF1dGhvcml6YXRpb25cIl1cbiAgOztcblxuICBsZXQgYXBwbHlfc3RyZWFtaW5nX2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgeyBJbXBsZW1lbnRhdGlvbi5GLmJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfVxuICAgICAgICB+bGVuXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+aWRcbiAgICAgICAgfihvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udClcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBsZXQgZGF0YSA9XG4gICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmxlblxuICAgICAgICB+bG9jYXRpb246XCJzdHJlYW1pbmdfcnBjIHNlcnZlci1zaWRlIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgIGluXG4gICAgbGV0IChUIGluc3RhbmNlKSA9IHQucGFja2VkX3NlbGYgaW5cbiAgICBsZXQgc3RyZWFtX3dyaXRlciA9IENhY2hlZF9iaW5fd3JpdGVyLmNyZWF0ZSB+aWQgfmJpbl93cml0ZXI6YmluX3VwZGF0ZV93cml0ZXIgaW5cbiAgICBsZXQgaW1wbF93aXRoX3N0YXRlID1cbiAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgfCBQaXBlIGYgLT4gYFBpcGUgZlxuICAgICAgfCBEaXJlY3QgZiAtPlxuICAgICAgICBsZXQgd3JpdGVyIDogXyBEaXJlY3Rfc3RyZWFtX3dyaXRlci50ID1cbiAgICAgICAgICB7IGlkID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuSWQuY3JlYXRlICgpXG4gICAgICAgICAgOyBzdGF0ZSA9IE5vdF9zdGFydGVkIChRdWV1ZS5jcmVhdGUgKCkpXG4gICAgICAgICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICAgIDsgaW5zdGFuY2UgPSB0LnBhY2tlZF9zZWxmXG4gICAgICAgICAgOyBxdWVyeV9pZCA9IGlkXG4gICAgICAgICAgOyBncm91cHMgPSBCYWcuY3JlYXRlICgpXG4gICAgICAgICAgOyBzdHJlYW1fd3JpdGVyXG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OmlkIH5kYXRhOihEaXJlY3Qgd3JpdGVyKTtcbiAgICAgICAgYERpcmVjdCAoZiwgd3JpdGVyKVxuICAgIGluXG4gICAgbGV0IHJ1bl9pbXBsIGltcGwgc3BsaXRfb2sgaGFuZGxlX29rID1cbiAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgIChmdW4gKCkgLT4gZGVmZXJfcmVzdWx0IChkYXRhID4+fH4gaW1wbCkpXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgY29tcHV0YXRpb25cIlxuICAgICAgaW5cbiAgICAgIEVhZ2VyX2RlZmVycmVkLnVwb24gcmVzdWx0IChmdW5jdGlvblxuICAgICAgICB8IEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHAgYXMgZXJyKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpO1xuICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuXG4gICAgICAgICAgICBvbl9leGNlcHRpb25cbiAgICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICAgIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoRXJyb3IgZXJyKVxuICAgICAgICB8IE9rIChPcl9ub3RfYXV0aG9yaXplZC5Ob3RfYXV0aG9yaXplZCBlcnJvcikgLT5cbiAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICB3cml0ZV9yZXNwb25zZVxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGJpbl9pbml0X3dyaXRlclxuICAgICAgICAgICAgKGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kOlwicGlwZV9ycGNcIilcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCAoRXJyb3IgZXJyb3IpKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBlcnJvcilcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCAoT2sgb2spKSAtPlxuICAgICAgICAgIGxldCBpbml0aWFsLCByZXN0ID0gc3BsaXRfb2sgb2sgaW5cbiAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgaW5pdGlhbCk7XG4gICAgICAgICAgaGFuZGxlX29rIHJlc3QpXG4gICAgaW5cbiAgICBtYXRjaCBpbXBsX3dpdGhfc3RhdGUgd2l0aFxuICAgIHwgYFBpcGUgZiAtPlxuICAgICAgcnVuX2ltcGxcbiAgICAgICAgKGZ1biBkYXRhIC0+IGYgdC5jb25uZWN0aW9uX3N0YXRlIGRhdGEpXG4gICAgICAgIEZuLmlkXG4gICAgICAgIChmdW4gcGlwZV9yIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6aWQgfmRhdGE6KFBpcGUgcGlwZV9yKTtcbiAgICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgICAoV3JpdGVyLnRyYW5zZmVyIHQud3JpdGVyIHBpcGVfciAoZnVuIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlID0gQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZSBzdHJlYW1fd3JpdGVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZCBiaW5fd3JpdGVyX21lc3NhZ2UgKHN0cmVhbV93cml0ZXIsIGRhdGEpKSk7XG4gICAgICAgICAgIFBpcGUuY2xvc2VkIHBpcGVfclxuICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgIFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlX3JcbiAgICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT5cbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpO1xuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkKVxuICAgIHwgYERpcmVjdCAoZiwgd3JpdGVyKSAtPlxuICAgICAgcnVuX2ltcGxcbiAgICAgICAgKGZ1biBkYXRhIC0+IGYgdC5jb25uZWN0aW9uX3N0YXRlIGRhdGEgd3JpdGVyKVxuICAgICAgICAoZnVuIHggLT4geCwgKCkpXG4gICAgICAgIChmdW4gKCkgLT4gRGlyZWN0X3N0cmVhbV93cml0ZXIuc3RhcnQgd3JpdGVyKVxuICA7O1xuXG4gIGxldCBhcHBseV9pbXBsZW1lbnRhdGlvbidcbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBsZXQgaWQgPSBxdWVyeS5pZCBpblxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheSAoYmluX3F1ZXJ5X3JlYWRlciwgZikgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIG1lc3NhZ2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZXJyIC0+IFN0b3AgZXJyXG4gICAgICAgfCBPayBxIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICAoKiBXZSBkb24ndCBjbG9zZSBjb25uZWN0aW9ucyBvbiB1bmF1dGhvcml6ZWQgUlBDcy4gU2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvXG4gICAgICAgICAgICAgICBjb21tdW5pY2F0ZSBmYWlsdXJlIGJhY2sgdG8gdGhlIHNlbmRlciBpbiBvbmUtd2F5IHJwY3MsIHdlIGRvIG5vdGhpbmcuIFRoZVxuICAgICAgICAgICAgICAgZGVmZXJyZWQgKGFuZCBhbnkgZGVmZXJyZWQgZXhjZXB0aW9ucykgYXJlIGRyb3BwZWQgaGVyZSBhcyBhIGNvbnNlcXVlbmNlIG9mXG4gICAgICAgICAgICAgICBbbGlmdF9kZWZlcnJlZF0gZXhpc3RpbmcgZm9yIG9uZS13YXkgcnBjcy4gV2UgdXNlIFtFYWdlcl9kZWZlcnJlZF0gc28gaW5cbiAgICAgICAgICAgICAgIHRoZSBub24tYmxvY2tpbmcgY2FzZXMgdGhpcyB3aWxsIHN0aWxsIHJ1biBzeW5jaHJvbm91c2x5LiAqKVxuICAgICAgICAgICAgbGV0IChfIDogXyBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpID0gZiB0LmNvbm5lY3Rpb25fc3RhdGUgcSBpblxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgY29tcHV0YXRpb25cIilcbiAgICAgICAgICAgIGVsc2UgQ29udGludWUpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5X2V4cGVydCBmIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgbGVuID0gKHF1ZXJ5LmRhdGEgOj4gaW50KSBpblxuICAgICAgICAgbGV0IChfIDogXyBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpID1cbiAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuXG4gICAgICAgICBpblxuICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgIENvbnRpbnVlXG4gICAgICAgd2l0aFxuICAgICAgIHwgZXhuIC0+XG4gICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiKVxuICAgICAgICAgZWxzZSBDb250aW51ZSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjIChiaW5fcXVlcnlfcmVhZGVyLCBiaW5fcmVzcG9uc2Vfd3JpdGVyLCBmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICBsZXQgb3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCByZXN1bHQgLT4gT2sgcmVzdWx0XG4gICAgICAgIHwgTm90X2F1dGhvcml6ZWQgZXJyb3IgLT4gYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJycGNcIlxuICAgICAgaW5cbiAgICAgIChtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICBSZXN1bHQuYmluZCBxdWVyeV9jb250ZW50cyB+ZjooZnVuIHF1ZXJ5IC0+XG4gICAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHF1ZXJ5IHw+IG9yX25vdF9hdXRob3JpemVkX3RvX3JwY19yZXN1bHQpXG4gICAgICAgICAgICB8PiB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXJcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICgqIEluIHRoZSBbRGVmZXJyZWRdIGJyYW5jaCB3ZSB1c2UgW01vbml0b3IudHJ5X3dpdGhdLCB3aGljaCBpbmNsdWRlc1xuICAgICAgICAgICAgICAgYmFja3RyYWNlcyB3aGVuIGl0IGNhdGNoZXMgYW4gZXhjZXB0aW9uLiBGb3IgY29uc2lzdGVuY3ksIHdlIGFsc28gZ2V0XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGhlcmUuICopXG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICAgICAgbGV0IHNleHAgPVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGxvY2F0aW9uID0gXCJzZXJ2ZXItc2lkZSBibG9ja2luZyBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgICAgIDsgZXhuIDogZXhuXG4gICAgICAgICAgICAgICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIChFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biBzZXhwKSk7XG4gICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG4pXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+XG4gICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICgqIFdlIGdlbmVyYWxseSB0cnkgdG8gd3JpdGUgYSByZXNwb25zZSBiZWZvcmUgaGFuZGxpbmcgW29uX2V4Y2VwdGlvbl0gc28gaWYgd2VcbiAgICAgICAgICAgICAgYXJlIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24gd2Ugc3RpbGwgYWN0dWFsbHkgc2VuZCB0aGUgcmVzcG9uc2UgYmFjay4gV2hlbiB3ZVxuICAgICAgICAgICAgICBwYXNzIFtvbl9leGNlcHRpb24uY2FsbGJhY2tdIGhlcmUsIHdlIGFyZSBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHJhaXNlZFxuICAgICAgICAgICAgICBleGNlcHRpb25zIG5vdCB0byBiZSB3cml0dGVuIGJhY2sgdG8gdGhlIGNsaWVudCAoZS5nLiBpZiB0aGUgaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgICAgcmFpc2VzIGJvdGggYXN5bmNocm9ub3VzbHkgYW5kIHN5bmNocm9ub3VzbHkpLiBUaGlzIHdvdWxkIGJlIGhhcmQgdG8gaGFuZGxlXG4gICAgICAgICAgICAgIGluIGEgbW9yZSBwcmluY2lwbGVkIHdheS4gKilcbiAgICAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBxdWVyeV9jb250ZW50cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gRGVmZXJyZWQucmV0dXJuIChFcnJvciBlcnIpXG4gICAgICAgICAgICAgICAgfCBPayBxdWVyeSAtPlxuICAgICAgICAgICAgICAgICAgRWFnZXJfZGVmZXJyZWQubWFwXG4gICAgICAgICAgICAgICAgICAgIChmIHQuY29ubmVjdGlvbl9zdGF0ZSBxdWVyeSlcbiAgICAgICAgICAgICAgICAgICAgfmY6b3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdClcbiAgICAgICAgIGluXG4gICAgICAgICAoKiBJbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhIHZhbHVlIGltbWVkaWF0ZWx5LCB3ZSB3aWxsXG4gICAgICAgICAgICB3cml0ZSB0aGUgcmVzcG9uc2UgaW1tZWRpYXRlbHkgYXMgd2VsbCAodGhpcyBpcyBhbHNvIHdoeSB0aGUgYWJvdmUgW3RyeV93aXRoXVxuICAgICAgICAgICAgaGFzIFt+cnVuOmBOb3ddKS4gIFRoaXMgY2FuIGJlIGEgYmlnIHBlcmZvcm1hbmNlIHdpbiBmb3Igc2VydmVycyB0aGF0IGdldCBtYW55XG4gICAgICAgICAgICBxdWVyaWVzIGluIGEgc2luZ2xlIEFzeW5jIGN5Y2xlLiAqKVxuICAgICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICA+Pj4gZnVuIGRhdGEgLT5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciBkYXRhO1xuICAgICAgICAgICAgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uIGRhdGEgb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcikpO1xuICAgICAgQ29udGludWVcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjX2V4cGVydCAoZiwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBsZXQgcmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci5jcmVhdGUgcXVlcnkuaWQgdC53cml0ZXIgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgKCogV2UgbmVlZCB0aGUgW01vbml0b3IudHJ5X3dpdGhdIGV2ZW4gZm9yIHRoZSBibG9ja2luZyBtb2RlIGFzIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICBtaWdodCByZXR1cm4gW0RlbGF5ZWRfcmVwb25zZV0sIHNvIHdlIGRvbid0IGJvdGhlciBvcHRpbWl6aW5nIHRoZSBibG9ja2luZ1xuICAgICAgICAgICBtb2RlLiAqKVxuICAgICAgICBsZXQgcmVzdCA9XG4gICAgICAgICAgbWF0Y2ggb25fZXhjZXB0aW9uLmNhbGxiYWNrIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGBMb2dcbiAgICAgICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICAgICAgaW5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aCB+cmVzdCB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZXNwb25kZXIgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+IHJlc3VsdFxuICAgICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPiBEZWZlcnJlZC5yZXR1cm4gcmVzdWx0KVxuICAgICAgaW5cbiAgICAgIGxldCBjb21wdXRhdGlvbl9mYWlsdXJlX3Jlc3VsdCBleG4gPVxuICAgICAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4biBleG4gfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiXG4gICAgICBpblxuICAgICAgbGV0IGhhbmRsZV9leG4gcmVzdWx0ID1cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICAgIHRoZW4gcmVzdWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl93cml0ZXJfdW5pdCByZXN1bHQ7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgbGV0IGNoZWNrX3Jlc3BvbmRlZCAoKSA9XG4gICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaGFuZGxlX2V4blxuICAgICAgICAgICAgKGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IChGYWlsdXJlIFwiRXhwZXJ0IGltcGxlbWVudGF0aW9uIGRpZCBub3QgcmVwbHlcIikpXG4gICAgICBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICBsZXQgb3BlbiBFYWdlcl9kZWZlcnJlZC5MZXRfc3ludGF4IGluXG4gICAgICAgIG1hdGNoJW1hcCBkIHdpdGhcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCByZXN1bHQpIC0+XG4gICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgIHwgUmVwbGllZCAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICB8IERlbGF5ZWRfcmVzcG9uc2UgZCAtPiBkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGRcbiAgICAgICAgICB0aGVuIGNoZWNrX3Jlc3BvbmRlZCAoKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgdXBvbiBkIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgICAgIHw+IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIHw+IG9rX2V4bik7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgICAgfCBPayAoTm90X2F1dGhvcml6ZWQgZXJyb3IpIC0+XG4gICAgICAgICAgaGFuZGxlX2V4biAoYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJycGMgZXhwZXJ0XCIpXG4gICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGhhbmRsZV9leG4gKGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IGV4bikgaW5cbiAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBXYWl0XG4gICAgICAgICAgIChsZXQlbWFwIHIgPSBkIGluXG4gICAgICAgICAgICBva19leG5cbiAgICAgICAgICAgICAgKFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDp0LmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICAgICByKSlcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+XG4gICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgICAgfCBFcnJvciBfIC0+IFN0b3AgcmVzdWx0KSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuU3RyZWFtaW5nX3JwYyBzdHJlYW1pbmdfcnBjIC0+XG4gICAgICBsZXQgc3RyZWFtX3F1ZXJ5ID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIHN0cmVhbV9xdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEFib3J0IC0+IDBcbiAgICAgICAgICAgIHwgYFF1ZXJ5IChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgIGluXG4gICAgICAobWF0Y2ggc3RyZWFtX3F1ZXJ5IHdpdGhcbiAgICAgICB8IEVycm9yIF9lcnIgLT4gKClcbiAgICAgICB8IE9rIGBBYm9ydCAtPlxuICAgICAgICAgKCogTm90ZSB0aGF0IHRoZXJlJ3Mgc29tZSBkZWxheSBiZXR3ZWVuIHdoZW4gd2UgcmVjZWl2ZSBhIHBpcGUgUlBDIHF1ZXJ5IGFuZFxuICAgICAgICAgICAgd2hlbiB3ZSBwdXQgc29tZXRoaW5nIGluIFtvcGVuX3N0cmVhbWluZ19yZXNwb25zZXNdICh3ZSB3YWl0IGZvclxuICAgICAgICAgICAgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRvIHJldHVybikuIER1cmluZyB0aGlzIHRpbWUsIGFuIGFib3J0IG1lc3NhZ2Ugd291bGRcbiAgICAgICAgICAgIGp1c3QgYmUgaWdub3JlZC4gVGhlIGRpc3BhdGNoZXIgY2FuJ3QgYWJvcnQgdGhlIHF1ZXJ5IHdoaWxlIHRoaXMgaXNcbiAgICAgICAgICAgIGhhcHBlbmluZywgdGhvdWdoLCBzaW5jZSB0aGUgaW50ZXJmYWNlIGRvZXNuJ3QgZXhwb3NlIHRoZSBJRCByZXF1aXJlZCB0b1xuICAgICAgICAgICAgYWJvcnQgdGhlIHF1ZXJ5IHVudGlsIGFmdGVyIGEgcmVzcG9uc2UgaGFzIGJlZW4gcmV0dXJuZWQuICopXG4gICAgICAgICBPcHRpb24uaXRlciAoSGFzaHRibC5maW5kIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5LmlkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBQaXBlIHBpcGUgLT4gUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgICAgICAgICAgfCBEaXJlY3QgdyAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3KVxuICAgICAgIHwgT2sgKGBRdWVyeSBsZW4pIC0+XG4gICAgICAgICBhcHBseV9zdHJlYW1pbmdfaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgdFxuICAgICAgICAgICBzdHJlYW1pbmdfcnBjXG4gICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5pZFxuICAgICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpO1xuICAgICAgQ29udGludWVcbiAgOztcblxuICBsZXQgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBhcHBseV9pbXBsZW1lbnRhdGlvbidcbiAgICAgIHRcbiAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5vbl9leGNlcHRpb25cbiAgOztcblxuICBsZXQgZmx1c2ggKFQgdCkgPVxuICAgIGFzc2VydCAobm90IHQuc3RvcHBlZCk7XG4gICAgbGV0IHByb2R1Y2Vyc19mbHVzaGVkID1cbiAgICAgIEhhc2h0YmwuZm9sZCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+aW5pdDpbXSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT5cbiAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgIHwgRGlyZWN0IF8gLT4gYWNjXG4gICAgICAgIHwgUGlwZSBwaXBlIC0+IERlZmVycmVkLmlnbm9yZV9tIChQaXBlLnVwc3RyZWFtX2ZsdXNoZWQgcGlwZSkgOjogYWNjKVxuICAgIGluXG4gICAgRGVmZXJyZWQuYWxsX3VuaXQgcHJvZHVjZXJzX2ZsdXNoZWRcbiAgOztcblxuICBsZXQgc3RvcCAoVCB0KSA9XG4gICAgdC5zdG9wcGVkIDwtIHRydWU7XG4gICAgSGFzaHRibC5pdGVyIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5mOihmdW5jdGlvblxuICAgICAgfCBEaXJlY3Qgd3JpdGVyIC0+XG4gICAgICAgICgqIERvbid0IHJlbW92ZSB0aGUgd3JpdGVyIGZyb20gdGhlIGluc3RhbmNlLCBhcyB0aGF0IHdvdWxkIG1vZGlmeSB0aGUgaGFzaHRhYmxlXG4gICAgICAgICAgIHRoYXQgd2UgYXJlIGN1cnJlbnRseSBpdGVyYXRpbmcgb3Zlci4gKilcbiAgICAgICAgRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHdyaXRlclxuICAgICAgfCBQaXBlIF8gLT4gKCkpO1xuICAgIEhhc2h0YmwuY2xlYXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXNcbiAgOztcblxuICBsZXQgaGFuZGxlX3Vua25vd25fcnBjIG9uX3Vua25vd25fcnBjIGVycm9yIHQgcXVlcnkgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50ID1cbiAgICBtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgfCBgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IGBSYWlzZSAtPiBScGNfZXJyb3IucmFpc2UgZXJyb3IgdC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgfCBgQ2xvc2VfY29ubmVjdGlvbiAtPiBTdG9wIChPayAoKSlcbiAgICB8IGBDYWxsIGYgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgZlxuICAgICAgICAgICB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgfnJwY190YWc6KFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkuUC5RdWVyeS50YWcpXG4gICAgICAgICAgIH52ZXJzaW9uOnF1ZXJ5LnZlcnNpb25cbiAgICAgICB3aXRoXG4gICAgICAgfCBgQ2xvc2VfY29ubmVjdGlvbiAtPiBTdG9wIChPayAoKSlcbiAgICAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZSlcbiAgOztcblxuICBsZXQgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgIHRcbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGxldCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSA9IHQuaW1wbGVtZW50YXRpb25zIGluXG4gICAgbGV0IGRlc2NyaXB0aW9uIDogRGVzY3JpcHRpb24udCA9XG4gICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgIGluXG4gICAgbWF0Y2ggdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgU29tZSAobGFzdF9kZXNjLCBpbXBsZW1lbnRhdGlvbikgd2hlbiBEZXNjcmlwdGlvbi5lcXVhbCBsYXN0X2Rlc2MgZGVzY3JpcHRpb24gLT5cbiAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvbjppbXBsZW1lbnRhdGlvbi5vbl9leGNlcHRpb25cbiAgICB8IE5vbmUgfCBTb21lIF8gLT5cbiAgICAgIChtYXRjaCBIYXNodGJsLmZpbmQgaW1wbGVtZW50YXRpb25zIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb24gLT5cbiAgICAgICAgIHQubGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDwtIFNvbWUgKGRlc2NyaXB0aW9uLCBpbXBsZW1lbnRhdGlvbik7XG4gICAgICAgICBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICAgICB0XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uLmZcbiAgICAgICAgICAgfm9uX2V4Y2VwdGlvbjppbXBsZW1lbnRhdGlvbi5vbl9leGNlcHRpb25cbiAgICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgICAgICAgIHwgYEV4cGVydCBpbXBsIC0+XG4gICAgICAgICAgICBsZXQgeyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhID0gKF8gOiBzdHJpbmcgb3B0aW9uKTsgZGF0YSA9IGxlbiB9ID1cbiAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgIGxldCByZXNwb25kZXIgPSBSZXNwb25kZXIuY3JlYXRlIGlkIHQud3JpdGVyIGluXG4gICAgICAgICAgICAgIGltcGxcbiAgICAgICAgICAgICAgICB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyB0YWcpXG4gICAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgICByZXNwb25kZXJcbiAgICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICB+bGVuOihsZW4gOj4gaW50KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIENvbnRpbnVlIGVsc2UgV2FpdCBkXG4gICAgICAgICAgfCAoYENvbnRpbnVlIHwgYFJhaXNlIHwgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ2FsbCBfKSBhcyBvbl91bmtub3duX3JwYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yID0gUnBjX2Vycm9yLlVuaW1wbGVtZW50ZWRfcnBjIChxdWVyeS50YWcsIGBWZXJzaW9uIHF1ZXJ5LnZlcnNpb24pIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IHF1ZXJ5LmlkIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCAoRXJyb3IgZXJyb3IpO1xuICAgICAgICAgICAgaGFuZGxlX3Vua25vd25fcnBjIG9uX3Vua25vd25fcnBjIGVycm9yIHQgcXVlcnkpKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlcbiAgICAgICAgKFQgdClcbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGlmIHQuc3RvcHBlZCB8fCBXcml0ZXIuaXNfY2xvc2VkIHQud3JpdGVyXG4gICAgdGhlbiBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQuU3RvcCAoT2sgKCkpXG4gICAgZWxzZVxuICAgICAgUnBjX21ldGFkYXRhLlByaXZhdGUud2l0aF9tZXRhZGF0YSBxdWVyeS5tZXRhZGF0YSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICAgIHRcbiAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpXG4gIDs7XG5lbmRcblxubW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gSW5zdGFuY2UuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxubGV0IGNyZWF0ZSB+aW1wbGVtZW50YXRpb25zOmkncyB+b25fdW5rbm93bl9ycGMgPVxuICAoKiBNYWtlIHN1cmUgdGhlIHRhZ3MgYXJlIHVuaXF1ZS4gKilcbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9IERlc2NyaXB0aW9uLlRhYmxlLmNyZWF0ZSB+c2l6ZToxMCAoKSBpblxuICBsZXQgZHVwcyA9IERlc2NyaXB0aW9uLkhhc2hfc2V0LmNyZWF0ZSB+c2l6ZToxMCAoKSBpblxuICBMaXN0Lml0ZXIgaSdzIH5mOihmdW4gKGkgOiBfIEltcGxlbWVudGF0aW9uLnQpIC0+XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIHsgRGVzY3JpcHRpb24ubmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaS50YWc7IHZlcnNpb24gPSBpLnZlcnNpb24gfVxuICAgIGluXG4gICAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzY3JpcHRpb24gfmRhdGE6aSB3aXRoXG4gICAgfCBgT2sgLT4gKClcbiAgICB8IGBEdXBsaWNhdGUgLT4gSGFzaF9zZXQuYWRkIGR1cHMgZGVzY3JpcHRpb24pO1xuICBpZiBub3QgKEhhc2hfc2V0LmlzX2VtcHR5IGR1cHMpXG4gIHRoZW4gRXJyb3IgKGBEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIChIYXNoX3NldC50b19saXN0IGR1cHMpKVxuICBlbHNlIE9rIHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyA6PiBfIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0IH1cbjs7XG5cbmxldCBpbnN0YW50aWF0ZVxuICAgICAgdFxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+d3JpdGVyXG4gID1cbiAgbGV0IHJlYyB1bnBhY2tlZCA6IF8gSW5zdGFuY2UudW5wYWNrZWQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zID0gdFxuICAgIDsgd3JpdGVyXG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgPSBIYXNodGJsLlBvbHkuY3JlYXRlIH5zaXplOjEwICgpXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICA7IHN0b3BwZWQgPSBmYWxzZVxuICAgIDsgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uID0gTm9uZVxuICAgIDsgcGFja2VkX3NlbGYgPSBJbnN0YW5jZS5UIHVucGFja2VkXG4gICAgfVxuICBpblxuICB1bnBhY2tlZC5wYWNrZWRfc2VsZlxuOztcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgb2YgRGVzY3JpcHRpb24udCBsaXN0IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjID1cbiAgbWF0Y2ggY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcykgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcylcbjs7XG5cbmxldCBudWxsICgpID0gY3JlYXRlX2V4biB+aW1wbGVtZW50YXRpb25zOltdIH5vbl91bmtub3duX3JwYzpgUmFpc2VcblxubGV0IGFkZF9leG4gdCAoaW1wbGVtZW50YXRpb24gOiBfIEltcGxlbWVudGF0aW9uLnQpID1cbiAgbGV0IGRlc2MgOiBEZXNjcmlwdGlvbi50ID1cbiAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGltcGxlbWVudGF0aW9uLnRhZzsgdmVyc2lvbiA9IGltcGxlbWVudGF0aW9uLnZlcnNpb24gfVxuICBpblxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5jb3B5IHQuaW1wbGVtZW50YXRpb25zIGluXG4gIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2MgfmRhdGE6aW1wbGVtZW50YXRpb24gd2l0aFxuICB8IGBEdXBsaWNhdGUgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgWyBkZXNjIF0pXG4gIHwgYE9rIC0+IHsgdCB3aXRoIGltcGxlbWVudGF0aW9ucyB9XG47O1xuXG5sZXQgYWRkIHQgaW1wbGVtZW50YXRpb24gPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGFkZF9leG4gdCBpbXBsZW1lbnRhdGlvbilcblxubGV0IGxpZnQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gfmYgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5tYXAgaW1wbGVtZW50YXRpb25zIH5mOihJbXBsZW1lbnRhdGlvbi5saWZ0IH5mKSBpblxuICBsZXQgb25fdW5rbm93bl9ycGMgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IChgUmFpc2UgfCBgQ29udGludWUgfCBgQ2xvc2VfY29ubmVjdGlvbikgYXMgeCAtPiB4XG4gICAgfCBgQ2FsbCBjYWxsIC0+IGBDYWxsIChmdW4gc3RhdGUgLT4gY2FsbCAoZiBzdGF0ZSkpXG4gICAgfCBgRXhwZXJ0IGV4cGVydCAtPiBgRXhwZXJ0IChmdW4gc3RhdGUgLT4gZXhwZXJ0IChmIHN0YXRlKSlcbiAgaW5cbiAgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH1cbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IFJlc3BvbmRlclxuXG4gIG1vZHVsZSBScGNfcmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gUmVzcG9uZGVyLnRcblxuICAgIGxldCBjYW5ub3Rfc2VuZCByID1cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAgIHJcbiAgICAgICAgWyVzZXhwX29mOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XVxuICAgIDs7XG5cbiAgICBsZXQgbWFya19yZXNwb25kZWQgKHQgOiB0KSA9XG4gICAgICBpZiB0LnJlc3BvbmRlZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFscmVhZHkgcmVzcG9uZGVkXCIgdCBbJXNleHBfb2Y6IFJlc3BvbmRlci50XTtcbiAgICAgIHQucmVzcG9uZGVkIDwtIHRydWVcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlICh0IDogdCkgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICAgIFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgKE5hdDAub2ZfaW50X2V4biBsZW4pIH1cbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgICAgdC53cml0ZXJcbiAgICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgICBoZWFkZXJcbiAgICAgICAgICB+YnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgIHdpdGhcbiAgICAgIHwgU2VudCBkIC0+IGBGbHVzaGVkIGRcbiAgICAgIHwgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPiBjYW5ub3Rfc2VuZCByXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9iaWdzdHJpbmcgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgIGhlYWRlclxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9lcnJvciAodCA6IHQpIGVycm9yID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgZGF0YSA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcmF3IHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgKEVycm9yLnRvX2V4biBlcnJvcilcbiAgICAgIGluXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Jpbl9wcm90ICh0IDogdCkgYmluX3dyaXRlcl9hIGEgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9hKSlcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgYSB9KVxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9leG4gPSBjcmVhdGVfZXhuXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBSZWFkZXIgPSBUcmFuc3BvcnQuUmVhZGVyXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG5tb2R1bGUgSGFuZHNoYWtlX2Vycm9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRW9mXG4gICAgICB8IFRyYW5zcG9ydF9jbG9zZWRcbiAgICAgIHwgVGltZW91dFxuICAgICAgfCBSZWFkaW5nX2hlYWRlcl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGlvbl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGVkX3VuZXhwZWN0ZWRfdmVyc2lvbiBvZiBpbnRcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGV4Y2VwdGlvbiBIYW5kc2hha2VfZXJyb3Igb2YgKHQgKiBJbmZvLnQpIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IHRvX2V4biB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB0ID0gSGFuZHNoYWtlX2Vycm9yICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKVxuZW5kXG5cbm1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdjEgOiB0XG4gIHZhbCB2MiA6IHRcbiAgdmFsIG5lZ290aWF0ZSA6IHVzOnQgLT4gcGVlcjp0IC0+IChpbnQsIEhhbmRzaGFrZV9lcnJvci50KSByZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFAuSGVhZGVyXG5cbiAgbGV0IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgICBQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5jcmVhdGVfZXhuICgpIH5wcm90b2NvbDpScGMgfnN1cHBvcnRlZF92ZXJzaW9uc1xuICA7O1xuXG4gIGxldCB2MiA9IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zOlsgMTsgMiBdXG4gIGxldCB2MSA9IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zOlsgMSBdXG5cbiAgbGV0IG5lZ290aWF0ZSB+dXMgfnBlZXIgPVxuICAgIG1hdGNoIG5lZ290aWF0ZSB+YWxsb3dfbGVnYWN5X3BlZXI6dHJ1ZSB+dXMgfnBlZXIgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoSGFuZHNoYWtlX2Vycm9yLk5lZ290aWF0aW9uX2ZhaWxlZCBlKVxuICAgIHwgT2sgaSAtPiBPayBpXG4gIDs7XG5lbmRcblxubW9kdWxlIFByb3RvY29sX3dyaXRlciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl93cml0ZXIgOiB0IC0+IFNleHAudFxuICB2YWwgY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiA6IFdyaXRlci50IC0+IHRcbiAgdmFsIHNldF9uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gOiB0IC0+IGludCAtPiB1bml0XG5cbiAgdmFsIHNlbmRfcXVlcnlcbiAgICA6ICB0XG4gICAgLT4gJ3F1ZXJ5IFAuUXVlcnkudFxuICAgIC0+IGJpbl93cml0ZXJfcXVlcnk6J3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2V4cGVydF9xdWVyeVxuICAgIDogIHRcbiAgICAtPiB1bml0IFAuUXVlcnkudFxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nOlxuICAgICAgICAgKFdyaXRlci50XG4gICAgICAgICAgLT4gUC5NZXNzYWdlLm5hdDBfdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgIC0+IFAuTWVzc2FnZS5uYXQwX3RcbiAgICAgICAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgIC0+ICdyZXN1bHQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpXG4gICAgLT4gJ3Jlc3VsdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2hlYXJ0YmVhdCA6IHQgLT4gdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuICB2YWwgY2FuX3NlbmQgOiB0IC0+IGJvb2xcbiAgdmFsIGJ5dGVzX3RvX3dyaXRlIDogdCAtPiBpbnRcbiAgdmFsIGJ5dGVzX3dyaXR0ZW4gOiB0IC0+IEludDYzLnRcbiAgdmFsIGZsdXNoZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IGludCBTZXRfb25jZS50XG4gICAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl93cml0ZXIgdCA9IFslc2V4cF9vZjogV3JpdGVyLnRdIHQud3JpdGVyXG5cbiAgbGV0IGNyZWF0ZV9iZWZvcmVfbmVnb3RpYXRpb24gd3JpdGVyID1cbiAgICB7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9IFNldF9vbmNlLmNyZWF0ZSAoKTsgd3JpdGVyIH1cbiAgOztcblxuICBsZXQgc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiB0IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9XG4gICAgU2V0X29uY2Uuc2V0X2V4biB0Lm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiBbJWhlcmVdIG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICA7O1xuXG4gIGxldCBxdWVyeV9tZXNzYWdlIHQgcXVlcnkgOiBfIFAuTWVzc2FnZS50ID1cbiAgICBtYXRjaCBTZXRfb25jZS5nZXRfZXhuIHQubmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIFslaGVyZV0gd2l0aFxuICAgIHwgMSAtPiBRdWVyeV92MSAoUC5RdWVyeS50b192MSBxdWVyeSlcbiAgICB8IF8gLT4gUXVlcnkgcXVlcnlcbiAgOztcblxuICBsZXQgc2VuZF9xdWVyeSB0IHF1ZXJ5IH5iaW5fd3JpdGVyX3F1ZXJ5ID1cbiAgICBsZXQgbWVzc2FnZSA9IHF1ZXJ5X21lc3NhZ2UgdCBxdWVyeSBpblxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICB0LndyaXRlclxuICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX3F1ZXJ5KSlcbiAgICAgIG1lc3NhZ2VcbiAgOztcblxuICBsZXQgc2VuZF9leHBlcnRfcXVlcnkgdCBxdWVyeSB+YnVmIH5wb3MgfmxlbiB+c2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nID1cbiAgICBsZXQgaGVhZGVyID0gcXVlcnlfbWVzc2FnZSB0IHsgcXVlcnkgd2l0aCBkYXRhID0gTmF0MC5vZl9pbnRfZXhuIGxlbiB9IGluXG4gICAgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQud3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBoZWFkZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9oZWFydGJlYXQgdCA9XG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IEhlYXJ0YmVhdFxuICA7O1xuXG4gIGxldCBvZl93cml0ZXIgZiB0ID0gZiB0LndyaXRlclxuICBsZXQgY2FuX3NlbmQgPSBvZl93cml0ZXIgV3JpdGVyLmNhbl9zZW5kXG4gIGxldCBieXRlc190b193cml0ZSA9IG9mX3dyaXRlciBXcml0ZXIuYnl0ZXNfdG9fd3JpdGVcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gPSBvZl93cml0ZXIgV3JpdGVyLmJ5dGVzX3dyaXR0ZW5cbiAgbGV0IGZsdXNoZWQgPSBvZl93cml0ZXIgV3JpdGVyLmZsdXNoZWRcbiAgbGV0IHN0b3BwZWQgPSBvZl93cml0ZXIgV3JpdGVyLnN0b3BwZWRcbiAgbGV0IGNsb3NlID0gb2Zfd3JpdGVyIFdyaXRlci5jbG9zZVxuZW5kXG5cbm1vZHVsZSBIZWFydGJlYXRfY29uZmlnID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBmaWVsZHNdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCA3NGExZjQ3NWJmYjJlZWQ1YTUwOWJhNzFjZDc4OTFkMiB8fV1cbiAgOztcblxuICBsZXQgY3JlYXRlXG4gICAgICAgID8odGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuKVxuICAgICAgICA/KHNlbmRfZXZlcnkgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDEwLilcbiAgICAgICAgKClcbiAgICA9XG4gICAgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH1cbiAgOztcblxuICBtb2R1bGUgUnVudGltZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgdGltZW91dCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCB0b19ydW50aW1lIHsgdGltZW91dDsgc2VuZF9ldmVyeSB9ID0geyBSdW50aW1lLnRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuZW5kXG5cbnR5cGUgcmVzcG9uc2VfaGFuZGxlciA9XG4gIE5hdDAudCBQLlJlc3BvbnNlLnRcbiAgLT4gcmVhZF9idWZmZXI6Qmlnc3RyaW5nLnRcbiAgLT4gcmVhZF9idWZmZXJfcG9zX3JlZjppbnQgcmVmXG4gIC0+IFsgYGtlZXBcbiAgICAgfCBgd2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgICAgfCBgcmVtb3ZlIG9mIHVuaXQgUnBjX3Jlc3VsdC50XG4gICAgIHwgYHJlbW92ZV9hbmRfd2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgICAgXVxuXG50eXBlIHQgPVxuICB7IGRlc2NyaXB0aW9uIDogSW5mby50XG4gIDsgaGVhcnRiZWF0X2NvbmZpZyA6IEhlYXJ0YmVhdF9jb25maWcuUnVudGltZS50XG4gIDsgbXV0YWJsZSBoZWFydGJlYXRfY2FsbGJhY2tzIDogKHVuaXQgLT4gdW5pdCkgYXJyYXlcbiAgOyBtdXRhYmxlIGxhc3Rfc2Vlbl9hbGl2ZSA6IFRpbWVfbnMudFxuICA7IG1heF9tZXRhZGF0YV9zaXplIDogQnl0ZV91bml0cy50XG4gIDsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBQcm90b2NvbF93cml0ZXIudFxuICA7IG9wZW5fcXVlcmllcyA6IChQLlF1ZXJ5X2lkLnQsIChyZXNwb25zZV9oYW5kbGVyW0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBjbG9zZV9zdGFydGVkIDogSW5mby50IEl2YXIudFxuICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgKCogVGhlcmUncyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb25uZWN0aW9ucyBhbmQgdGhlaXIgaW1wbGVtZW50YXRpb24gaW5zdGFuY2VzXG4gICAgICh0aGUgbGF0dGVyIGRlcGVuZHMgb24gdGhlIGNvbm5lY3Rpb24gc3RhdGUsIHdoaWNoIGlzIGdpdmVuIGFjY2VzcyB0byB0aGUgY29ubmVjdGlvblxuICAgICB3aGVuIGl0IGlzIGNyZWF0ZWQpLiAqKVxuICA7IGltcGxlbWVudGF0aW9uc19pbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50IFNldF9vbmNlLnRcbiAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLnRcbiAgOyBoZWFydGJlYXRfZXZlbnQgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC50IFNldF9vbmNlLnRcbiAgOyBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gOiBpbnQgU2V0X29uY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90X2h1bV93cml0ZXIgdCA9XG4gIFslc2V4cFxuICAgIHsgZGVzY3JpcHRpb24gOiBJbmZvLnQgPSB0LmRlc2NyaXB0aW9uOyB3cml0ZXIgOiBQcm90b2NvbF93cml0ZXIud3JpdGVyID0gdC53cml0ZXIgfV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbiB0ID0gdC5kZXNjcmlwdGlvblxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG5sZXQgd3JpdGVyIHQgPVxuICBpZiBpc19jbG9zZWQgdCB8fCBub3QgKFByb3RvY29sX3dyaXRlci5jYW5fc2VuZCB0LndyaXRlcilcbiAgdGhlbiBFcnJvciBgQ2xvc2VkXG4gIGVsc2UgT2sgdC53cml0ZXJcbjs7XG5cbmxldCBieXRlc190b193cml0ZSB0ID0gUHJvdG9jb2xfd3JpdGVyLmJ5dGVzX3RvX3dyaXRlIHQud3JpdGVyXG5sZXQgYnl0ZXNfd3JpdHRlbiB0ID0gUHJvdG9jb2xfd3JpdGVyLmJ5dGVzX3dyaXR0ZW4gdC53cml0ZXJcbmxldCBieXRlc19yZWFkIHQgPSBSZWFkZXIuYnl0ZXNfcmVhZCB0LnJlYWRlclxubGV0IGZsdXNoZWQgdCA9IFByb3RvY29sX3dyaXRlci5mbHVzaGVkIHQud3JpdGVyXG5cbmxldCBoYW5kbGVfc2VuZF9yZXN1bHQgOiB0IC0+ICdhIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50IC0+ICdhID1cbiAgZnVuIHQgciAtPlxuICBtYXRjaCByIHdpdGhcbiAgfCBTZW50IHggLT4geFxuICB8IENsb3NlZCAtPlxuICAgICgqIEFsbCBvZiB0aGUgcGxhY2VzIHdlIGNhbGwgW2hhbmRsZV9zZW5kX3Jlc3VsdF0gY2hlY2sgd2hldGhlciBbdF0gaXMgY2xvc2VkXG4gICAgICAgKHVzdWFsbHkgdmlhIHRoZSBbd3JpdGVyXSBmdW5jdGlvbiBhYm92ZSkuIFRoaXMgY2hlY2tzIHdoZXRoZXIgW3Qud3JpdGVyXSBpc1xuICAgICAgIGNsb3NlZCwgd2hpY2ggc2hvdWxkIG5vdCBoYXBwZW4gdW5sZXNzIFt0XSBpcyBjbG9zZWQuICopXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJSUEMgY29ubmVjdGlvbiBnb3QgY2xvc2VkIHdyaXRlclwiIHQgc2V4cF9vZl90X2h1bV93cml0ZXJcbiAgfCBNZXNzYWdlX3Rvb19iaWcgXyAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIk1lc3NhZ2UgY2Fubm90IGJlIHNlbnRcIlxuICAgICAgLCB7IHJlYXNvbiA9IChyIDogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCk7IGNvbm5lY3Rpb24gPSAodCA6IHRfaHVtX3dyaXRlcikgfV1cbjs7XG5cbmxldCBkaXNwYXRjaCB0IH5yZXNwb25zZV9oYW5kbGVyIH5iaW5fd3JpdGVyX3F1ZXJ5IH4ocXVlcnkgOiBfIFAuUXVlcnkudCkgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCBhcyByIC0+IHJcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBsZXQgcXVlcnkgPVxuICAgICAgbWF0Y2ggcXVlcnkubWV0YWRhdGEgd2l0aFxuICAgICAgfCBTb21lIG1ldGFkYXRhIC0+XG4gICAgICAgIHsgcXVlcnkgd2l0aFxuICAgICAgICAgIG1ldGFkYXRhID1cbiAgICAgICAgICAgIFNvbWUgKFN0cmluZy5wcmVmaXggbWV0YWRhdGEgKEJ5dGVfdW5pdHMuYnl0ZXNfaW50X2V4biB0Lm1heF9tZXRhZGF0YV9zaXplKSlcbiAgICAgICAgfVxuICAgICAgfCBOb25lIC0+IHF1ZXJ5XG4gICAgaW5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTpxdWVyeS5pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBQcm90b2NvbF93cml0ZXIuc2VuZF9xdWVyeSB3cml0ZXIgcXVlcnkgfmJpbl93cml0ZXJfcXVlcnkgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgT2sgKClcbjs7XG5cbmxldCBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgZG9fc2VuZFxuICAgICAgP21ldGFkYXRhXG4gICAgICB0XG4gICAgICB+dGFnXG4gICAgICB+dmVyc2lvblxuICAgICAgYnVmXG4gICAgICB+cG9zXG4gICAgICB+bGVuXG4gICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIGBDbG9zZWRcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBsZXQgaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIGxldCBxdWVyeSA6IHVuaXQgUC5RdWVyeS50ID0geyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YTsgZGF0YSA9ICgpIH0gaW5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTppZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIFByb3RvY29sX3dyaXRlci5zZW5kX2V4cGVydF9xdWVyeVxuICAgICAgICB3cml0ZXJcbiAgICAgICAgcXVlcnlcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZzpkb19zZW5kXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdFxuICAgIGluXG4gICAgT2sgcmVzdWx0XG47O1xuXG5sZXQgZGlzcGF0Y2hfYmlnc3RyaW5nID0gbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuXG5sZXQgc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nID1cbiAgbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuOztcblxubGV0IGhhbmRsZV9yZXNwb25zZSB0IChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkIHdpdGhcbiAgfCBOb25lIC0+IFN0b3AgKEVycm9yIChScGNfZXJyb3IuVW5rbm93bl9xdWVyeV9pZCByZXNwb25zZS5pZCkpXG4gIHwgU29tZSByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgKG1hdGNoIHJlc3BvbnNlX2hhbmRsZXIgcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIHdpdGhcbiAgICAgfCBga2VlcCAtPiBDb250aW51ZVxuICAgICB8IGB3YWl0IHdhaXQgLT4gV2FpdCB3YWl0XG4gICAgIHwgYHJlbW92ZV9hbmRfd2FpdCB3YWl0IC0+XG4gICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQ7XG4gICAgICAgV2FpdCB3YWl0XG4gICAgIHwgYHJlbW92ZSByZW1vdmFsX2NpcmN1bXN0YW5jZXMgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICAobWF0Y2ggcmVtb3ZhbF9jaXJjdW1zdGFuY2VzIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBDb250aW51ZVxuICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgXyAtPiBDb250aW51ZVxuICAgICAgICAgICB8IEJpbl9pb19leG4gX1xuICAgICAgICAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICAgICAgIHwgV3JpdGVfZXJyb3IgX1xuICAgICAgICAgICB8IFVuY2F1Z2h0X2V4biBfXG4gICAgICAgICAgIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IFN0b3AgKEVycm9yIGUpKSkpXG47O1xuXG5sZXQgaGFuZGxlX21zZ1xuICAgICAgdFxuICAgICAgKG1zZyA6IF8gUC5NZXNzYWdlLnQpXG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICA9XG4gIG1hdGNoIG1zZyB3aXRoXG4gIHwgSGVhcnRiZWF0IC0+XG4gICAgQXJyYXkuaXRlciB0LmhlYXJ0YmVhdF9jYWxsYmFja3MgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICAgIENvbnRpbnVlXG4gIHwgUmVzcG9uc2UgcmVzcG9uc2UgLT4gaGFuZGxlX3Jlc3BvbnNlIHQgcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIHwgUXVlcnkgcXVlcnkgLT5cbiAgICBsZXQgaW5zdGFuY2UgPSBTZXRfb25jZS5nZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5cbiAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuaGFuZGxlX3F1ZXJ5XG4gICAgICBpbnN0YW5jZVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIHwgUXVlcnlfdjEgcXVlcnkgLT5cbiAgICBsZXQgaW5zdGFuY2UgPSBTZXRfb25jZS5nZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5cbiAgICBsZXQgcXVlcnkgPSBQLlF1ZXJ5Lm9mX3YxIHF1ZXJ5IGluXG4gICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmhhbmRsZV9xdWVyeVxuICAgICAgaW5zdGFuY2VcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuOztcblxubGV0IGNsb3NlX3JlYXNvbiB0IH5vbl9jbG9zZSA9XG4gIGxldCByZWFzb24gPSBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkIGluXG4gIG1hdGNoIG9uX2Nsb3NlIHdpdGhcbiAgfCBgc3RhcnRlZCAtPiByZWFzb25cbiAgfCBgZmluaXNoZWQgLT5cbiAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkIGluXG4gICAgcmVhc29uXG47O1xuXG5sZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG5cbmxldCBhZGRfaGVhcnRiZWF0X2NhbGxiYWNrIHQgZiA9XG4gICgqIEFkZGluZyBoZWFydGJlYXQgY2FsbGJhY2tzIGlzIHJlbGF0aXZlbHkgcmFyZSwgYnV0IHRoZSBjYWxsYmFja3MgYXJlIHRyaWdnZXJlZCBhIGxvdC5cbiAgICAgVGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG1ha2VzIHRoZSBhZGRpdGlvbiBxdWFkcmF0aWMgZm9yIHRoZSBzYWtlIG9mIGtlZXBpbmcgdGhlXG4gICAgIHRyaWdnZXJpbmcgY2hlYXAuICopXG4gIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyA8LSBBcnJheS5hcHBlbmQgW3wgZiB8XSB0LmhlYXJ0YmVhdF9jYWxsYmFja3Ncbjs7XG5cbmxldCByZXNldF9oZWFydGJlYXRfdGltZW91dCB0IHRpbWVvdXQgPVxuICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dCA8LSB0aW1lb3V0O1xuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZVxuOztcblxubGV0IGxhc3Rfc2Vlbl9hbGl2ZSB0ID0gdC5sYXN0X3NlZW5fYWxpdmVcblxubGV0IGFib3J0X2hlYXJ0YmVhdGluZyB0ID1cbiAgT3B0aW9uLml0ZXIgKFNldF9vbmNlLmdldCB0LmhlYXJ0YmVhdF9ldmVudCkgfmY6KGZ1biBldmVudCAtPlxuICAgIG1hdGNoIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0IHQudGltZV9zb3VyY2UgZXZlbnQgd2l0aFxuICAgIHwgT2sgfCBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkIC0+ICgpKVxuOztcblxubGV0IGNsb3NlID8oc3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX2ludF9zZWMgNSkgfnJlYXNvbiB0ID1cbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgYWJvcnRfaGVhcnRiZWF0aW5nIHQ7XG4gICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCByZWFzb247XG4gICAgKG1hdGNoIFNldF9vbmNlLmdldCB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgIHwgU29tZSBpbnN0YW5jZSAtPlxuICAgICAgIGxldCBmbHVzaGVkID0gSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmZsdXNoIGluc3RhbmNlIGluXG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBmbHVzaGVkXG4gICAgICAgdGhlbiAoXG4gICAgICAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2Uuc3RvcCBpbnN0YW5jZTtcbiAgICAgICAgIGZsdXNoZWQpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgRGVmZXJyZWQuYW55X3VuaXRcbiAgICAgICAgICAgICBbIGZsdXNoZWRcbiAgICAgICAgICAgICA7IFByb3RvY29sX3dyaXRlci5zdG9wcGVkIHQud3JpdGVyXG4gICAgICAgICAgICAgOyBUaW1lX3NvdXJjZS5hZnRlclxuICAgICAgICAgICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgICAgICAgICAgc3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICAgICAgICAgXVxuICAgICAgICAgaW5cbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlKSlcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgUHJvdG9jb2xfd3JpdGVyLmNsb3NlIHQud3JpdGVyXG4gICAgPj4+IGZ1biAoKSAtPiBSZWFkZXIuY2xvc2UgdC5yZWFkZXIgPj4+IGZ1biAoKSAtPiBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKSk7XG4gIGNsb3NlX2ZpbmlzaGVkIHRcbjs7XG5cbmxldCBvbl9tZXNzYWdlIHQgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciA9XG4gIGxldCBmIGJ1ZiB+cG9zIH5sZW46XyA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgIGxldCBuYXQwX21zZyA9IFAuTWVzc2FnZS5iaW5fcmVhZF9uYXQwX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgbWF0Y2hcbiAgICAgIGhhbmRsZV9tc2dcbiAgICAgICAgdFxuICAgICAgICBuYXQwX21zZ1xuICAgICAgICB+cmVhZF9idWZmZXI6YnVmXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmOnBvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgIHdpdGhcbiAgICB8IENvbnRpbnVlIC0+IENvbnRpbnVlXG4gICAgfCBXYWl0IF8gYXMgcmVzIC0+IHJlc1xuICAgIHwgU3RvcCByZXN1bHQgLT5cbiAgICAgIGxldCByZWFzb24gPVxuICAgICAgICBsZXQgbXNnID0gXCJScGMgbWVzc2FnZSBoYW5kbGluZyBsb29wIHN0b3BwZWRcIiBpblxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IEluZm8ub2Zfc3RyaW5nIG1zZ1xuICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICBJbmZvLmNyZWF0ZVxuICAgICAgICAgICAgbXNnXG4gICAgICAgICAgICBlXG4gICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICBcIkNvbm5lY3Rpb24ub25fbWVzc2FnZSByZXN1bHRlZCBpbiBDb25uZWN0aW9uX2Nsb3NlZCBlcnJvci4gVGhpcyBpcyBcXFxuICAgICAgICAgICAgICAgICAgd2VpcmQuXCJdKSlcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgIFN0b3AgcmVhc29uXG4gIGluXG4gIFN0YWdlZC5zdGFnZSBmXG47O1xuXG5sZXQgaGVhcnRiZWF0X25vdyB0ID1cbiAgbGV0IHNpbmNlX2xhc3RfaGVhcnRiZWF0ID1cbiAgICBUaW1lX25zLmRpZmYgKFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuICBpblxuICBpZiBUaW1lX25zLlNwYW4uKCA+ICkgc2luY2VfbGFzdF9oZWFydGJlYXQgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXRcbiAgdGhlbiAoXG4gICAgbGV0IHJlYXNvbiAoKSA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgICFcIk5vIGhlYXJ0YmVhdHMgcmVjZWl2ZWQgZm9yICV7c2V4cDpUaW1lX25zLlNwYW4udH0uXCJcbiAgICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXRcbiAgICBpblxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2ZfdGh1bmsgcmVhc29uKSkpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgICB8IEVycm9yIGBDbG9zZWQgLT4gKClcbiAgICB8IE9rIHdyaXRlciAtPiBQcm90b2NvbF93cml0ZXIuc2VuZF9oZWFydGJlYXQgd3JpdGVyIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0KVxuOztcblxubGV0IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDMwLlxuXG5sZXQgY2xlYW51cCB0IH5yZWFzb24gZXhuID1cbiAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCk7XG4gIGlmIG5vdCAoSGFzaHRibC5pc19lbXB0eSB0Lm9wZW5fcXVlcmllcylcbiAgdGhlbiAoXG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICB8IFJwY19lcnJvci5ScGMgKGVycm9yLCAoXyA6IEluZm8udCkpIC0+IGVycm9yXG4gICAgICB8IGV4biAtPiBVbmNhdWdodF9leG4gKEV4bi5zZXhwX29mX3QgZXhuKVxuICAgIGluXG4gICAgKCogY2xlYW4gdXAgb3BlbiBzdHJlYW1pbmcgcmVzcG9uc2VzICopXG4gICAgKCogYW4gdW5mb3J0dW5hdGUgaGFjazsgb2sgYmVjYXVzZSB0aGUgcmVzcG9uc2UgaGFuZGxlciB3aWxsIGhhdmUgbm90aGluZ1xuICAgICAgIHRvIHJlYWQgZm9sbG93aW5nIGEgcmVzcG9uc2Ugd2hlcmUgW2RhdGFdIGlzIGFuIGVycm9yICopXG4gICAgbGV0IGR1bW15X2J1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMSBpblxuICAgIGxldCBkdW1teV9yZWYgPSByZWYgMCBpblxuICAgIEhhc2h0YmwuaXRlcmkgdC5vcGVuX3F1ZXJpZXMgfmY6KGZ1biB+a2V5OnF1ZXJ5X2lkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIGlnbm9yZVxuICAgICAgICAocmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgICB+cmVhZF9idWZmZXI6ZHVtbXlfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmOmR1bW15X3JlZlxuICAgICAgICAgICB7IGlkID0gcXVlcnlfaWQ7IGRhdGEgPSBFcnJvciBlcnJvciB9KSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fcXVlcmllcztcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgZHVtbXlfYnVmZmVyKVxuOztcblxubGV0IHNjaGVkdWxlX2hlYXJ0YmVhdHMgdCA9XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlO1xuICBsZXQgaGVhcnRiZWF0X2Zyb21fbm93X29uID1cbiAgICAoKiBbYXRfaW50ZXJ2YWxzXSB3aWxsIHNjaGVkdWxlIHRoZSBmaXJzdCBoZWFydGJlYXQgdGhlIGZpcnN0IHRpbWUgdGhlIHRpbWVfc291cmNlIGlzXG4gICAgICAgYWR2YW5jZWQgKilcbiAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hdF9pbnRlcnZhbHNcbiAgICAgIHQudGltZV9zb3VyY2VcbiAgICAgIHQuaGVhcnRiZWF0X2NvbmZpZy5zZW5kX2V2ZXJ5XG4gICAgICAoZnVuICgpIC0+IGhlYXJ0YmVhdF9ub3cgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmhlYXJ0YmVhdF9ldmVudCBbJWhlcmVdIGhlYXJ0YmVhdF9mcm9tX25vd19vblxuOztcblxubGV0IHJ1bl9hZnRlcl9oYW5kc2hha2VcbiAgICAgIHRcbiAgICAgIHdyaXRlclxuICAgICAgfm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJfbW9uaXRvcl9leG5zXG4gID1cbiAgUHJvdG9jb2xfd3JpdGVyLnNldF9uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gdC53cml0ZXIgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uO1xuICBsZXQgaW5zdGFuY2UgPVxuICAgIEltcGxlbWVudGF0aW9ucy5pbnN0YW50aWF0ZVxuICAgICAgaW1wbGVtZW50YXRpb25zXG4gICAgICB+d3JpdGVyXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGU6KGNvbm5lY3Rpb25fc3RhdGUgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluc3RhbmNlO1xuICBsZXQgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY2xvc2UgY29ubmVjdGlvbiBtb25pdG9yXCIgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciB+ZjooZnVuIGV4biAtPlxuICAgIGxldCByZWFzb24gPVxuICAgICAgSW5mby5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJVbmNhdWdodCBleGNlcHRpb24gaW4gaW1wbGVtZW50YXRpb25cIiAoZXhuIDogRXhuLnQpXVxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCkpO1xuICBsZXQgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiUlBDIGNvbm5lY3Rpb24gbG9vcFwiICgpIGluXG4gIGxldCByZWFzb24gbmFtZSBleG4gPVxuICAgIGV4biwgSW5mby50YWcgKEluZm8ub2ZfZXhuIGV4bikgfnRhZzooXCJleG4gcmFpc2VkIGluIFJQQyBjb25uZWN0aW9uIFwiIF4gbmFtZSlcbiAgaW5cbiAgU3RyZWFtLml0ZXJcbiAgICAoU3RyZWFtLmludGVybGVhdmVcbiAgICAgICAoU3RyZWFtLm9mX2xpc3RcbiAgICAgICAgICBbIFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcImxvb3BcIikgKE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IpXG4gICAgICAgICAgOyBTdHJlYW0ubWFwIH5mOihyZWFzb24gXCJXcml0ZXIudFwiKSB3cml0ZXJfbW9uaXRvcl9leG5zXG4gICAgICAgICAgXSkpXG4gICAgfmY6KGZ1biAoZXhuLCByZWFzb24pIC0+IGNsZWFudXAgdCBleG4gfnJlYXNvbik7XG4gIHdpdGhpbiB+bW9uaXRvciAoZnVuICgpIC0+XG4gICAgc2NoZWR1bGVfaGVhcnRiZWF0cyB0O1xuICAgIFJlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgIHQucmVhZGVyXG4gICAgICB+b25fbWVzc2FnZTooU3RhZ2VkLnVuc3RhZ2UgKG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSlcbiAgICAgIH5vbl9lbmRfb2ZfYmF0Y2g6KGZ1biAoKSAtPlxuICAgICAgICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSlcbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE9rIHJlYXNvbiAtPiBjbGVhbnVwIHQgfnJlYXNvbiAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKVxuICAgICgqIFRoZSBwcm90b2NvbCBpcyBzdWNoIHRoYXQgcmlnaHQgbm93LCB0aGUgb25seSBvdXRjb21lIG9mIHRoZSBvdGhlciBzaWRlIGNsb3NpbmcgdGhlXG4gICAgICAgY29ubmVjdGlvbiBub3JtYWxseSBpcyB0aGF0IHdlIGdldCBhbiBlb2YuICopXG4gICAgfCBFcnJvciAoYEVvZiB8IGBDbG9zZWQpIC0+XG4gICAgICBjbGVhbnVwXG4gICAgICAgIHRcbiAgICAgICAgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJFT0Ygb3IgY29ubmVjdGlvbiBjbG9zZWRcIilcbiAgICAgICAgKFJwY19lcnJvci5ScGMgKENvbm5lY3Rpb25fY2xvc2VkLCB0LmRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgZG9faGFuZHNoYWtlIHQgd3JpdGVyIH5oYW5kc2hha2VfdGltZW91dCB+aGVhZGVyID1cbiAgaWYgbm90IChXcml0ZXIuY2FuX3NlbmQgd3JpdGVyKVxuICB0aGVuIHJldHVybiAoRXJyb3IgSGFuZHNoYWtlX2Vycm9yLlRyYW5zcG9ydF9jbG9zZWQpXG4gIGVsc2UgKFxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBIZWFkZXIuYmluX3Qud3JpdGVyIGhlYWRlciB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICAoKiBJZiB3ZSB1c2UgW21heF9jb25uZWN0aW9uc10gaW4gdGhlIHNlcnZlciwgdGhlbiB0aGlzIHJlYWQgbWF5IGp1c3QgaGFuZyB1bnRpbCB0aGVcbiAgICAgICBzZXJ2ZXIgc3RhcnRzIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgKHdoaWNoIGNvdWxkIGJlIG5ldmVyKS4gIFRoYXQgaXMgd2h5IGFcbiAgICAgICB0aW1lb3V0IGlzIHVzZWQgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgKGZ1biAoKSAtPiBSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0LnJlYWRlciBIZWFkZXIuYmluX3QucmVhZGVyKVxuICAgIGluXG4gICAgbWF0Y2glbWFwXG4gICAgICBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXRcbiAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgIGhhbmRzaGFrZV90aW1lb3V0XG4gICAgICAgIHJlc3VsdFxuICAgIHdpdGhcbiAgICB8IGBUaW1lb3V0IC0+XG4gICAgICAoKiBUaGVyZSdzIGEgcGVuZGluZyByZWFkLCB0aGUgcmVhZGVyIGlzIGJhc2ljYWxseSB1c2VsZXNzIG5vdywgc28gd2UgY2xlYW4gaXRcbiAgICAgICAgIHVwLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJIYW5kc2hha2UgdGltZW91dFwiKSk7XG4gICAgICBFcnJvciBIYW5kc2hha2VfZXJyb3IuVGltZW91dFxuICAgIHwgYFJlc3VsdCAoRXJyb3IgZXhuKSAtPlxuICAgICAgbGV0IHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiW1JlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90XSByYWlzZWRcIiBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICBFcnJvciAoUmVhZGluZ19oZWFkZXJfZmFpbGVkIChFcnJvci5vZl9leG4gZXhuKSlcbiAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgRW9mKSkgLT4gRXJyb3IgRW9mXG4gICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYENsb3NlZCkpIC0+IEVycm9yIFRyYW5zcG9ydF9jbG9zZWRcbiAgICB8IGBSZXN1bHQgKE9rIChPayBwZWVyKSkgLT4gSGVhZGVyLm5lZ290aWF0ZSB+dXM6aGVhZGVyIH5wZWVyKVxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2w6UnBjXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfaGVhZGVyID0gSGVhZGVyLnYyXG5cbmxldCBoYW5kc2hha2VfaGVhZGVyX292ZXJyaWRlX2tleSA9XG4gIFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWU6XCJhc3luYyBycGMgaGFuZHNoYWtlIGhlYWRlciBvdmVycmlkZVwiIFslc2V4cF9vZjogSGVhZGVyLnRdXG47O1xuXG5sZXQgZ2V0X2hhbmRzaGFrZV9oZWFkZXIgKCkgPVxuICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLmZpbmRfbG9jYWwgaGFuZHNoYWtlX2hlYWRlcl9vdmVycmlkZV9rZXlcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlclxuOztcblxubGV0IGNyZWF0ZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgID8oaGFuZHNoYWtlX3RpbWVvdXQgPSBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0KVxuICAgICAgPyhoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy5jcmVhdGUgKCkpXG4gICAgICA/KG1heF9tZXRhZGF0YV9zaXplID0gQnl0ZV91bml0cy5vZl9raWxvYnl0ZXMgMS4pXG4gICAgICA/KGRlc2NyaXB0aW9uID0gSW5mby5vZl9zdHJpbmcgXCI8Y3JlYXRlZC1kaXJlY3RseT5cIilcbiAgICAgID8odGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS53YWxsX2Nsb2NrICgpKVxuICAgICAgKHsgcmVhZGVyOyB3cml0ZXIgfSA6IFRyYW5zcG9ydC50KVxuICA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPVxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgfCBOb25lIC0+IEltcGxlbWVudGF0aW9ucy5udWxsICgpXG4gICAgfCBTb21lIHMgLT4gc1xuICBpblxuICBsZXQgdCA9XG4gICAgeyBkZXNjcmlwdGlvblxuICAgIDsgaGVhcnRiZWF0X2NvbmZpZyA9IEhlYXJ0YmVhdF9jb25maWcudG9fcnVudGltZSBoZWFydGJlYXRfY29uZmlnXG4gICAgOyBoZWFydGJlYXRfY2FsbGJhY2tzID0gW3x8XVxuICAgIDsgbGFzdF9zZWVuX2FsaXZlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHRpbWVfc291cmNlXG4gICAgOyBtYXhfbWV0YWRhdGFfc2l6ZVxuICAgIDsgcmVhZGVyXG4gICAgOyB3cml0ZXIgPSBQcm90b2NvbF93cml0ZXIuY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiB3cml0ZXJcbiAgICA7IG9wZW5fcXVlcmllcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgY2xvc2VfZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgaGVhcnRiZWF0X2V2ZW50ID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIGxldCB3cml0ZXJfbW9uaXRvcl9leG5zID0gTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gKFdyaXRlci5tb25pdG9yIHdyaXRlcikgaW5cbiAgdXBvbiAoV3JpdGVyLnN0b3BwZWQgd3JpdGVyKSAoZnVuICgpIC0+XG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJSUEMgdHJhbnNwb3J0IHN0b3BwZWRcIikpKTtcbiAgbGV0IGhlYWRlciA9IGdldF9oYW5kc2hha2VfaGVhZGVyICgpIGluXG4gIG1hdGNoJW1hcCBkb19oYW5kc2hha2UgdCB3cml0ZXIgfmhhbmRzaGFrZV90aW1lb3V0IH5oZWFkZXIgd2l0aFxuICB8IE9rIG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiAtPlxuICAgIHJ1bl9hZnRlcl9oYW5kc2hha2VcbiAgICAgIHRcbiAgICAgIHdyaXRlclxuICAgICAgfm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJfbW9uaXRvcl9leG5zO1xuICAgIE9rIHRcbiAgfCBFcnJvciBlcnJvciAtPlxuICAgIEVycm9yIChIYW5kc2hha2VfZXJyb3IudG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOmRlc2NyaXB0aW9uIGVycm9yKVxuOztcblxubGV0IHdpdGhfY2xvc2VcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+ZGlzcGF0Y2hfcXVlcmllc1xuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yID1cbiAgICBtYXRjaCBvbl9oYW5kc2hha2VfZXJyb3Igd2l0aFxuICAgIHwgYENhbGwgZiAtPiBmXG4gICAgfCBgUmFpc2UgLT4gcmFpc2VcbiAgaW5cbiAgbGV0JWJpbmQgdCA9XG4gICAgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIHRyYW5zcG9ydFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBFcnJvciBlIC0+XG4gICAgbGV0JWJpbmQgKCkgPSBUcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgaGFuZGxlX2hhbmRzaGFrZV9lcnJvciBlXG4gIHwgT2sgdCAtPlxuICAgIE1vbml0b3IucHJvdGVjdFxuICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgIH5yZXN0OmBMb2dcbiAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLndpdGhfY2xvc2UgZmluaXNoZWRcIikpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQlYmluZCByZXN1bHQgPSBkaXNwYXRjaF9xdWVyaWVzIHQgaW5cbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICB8IFNvbWUgXyAtPiBjbG9zZV9maW5pc2hlZCB0XG4gICAgICAgICBpblxuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IHNlcnZlcl93aXRoX2Nsb3NlXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBvbl9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGBDYWxsIGZcbiAgICB8IGBSYWlzZSAtPiBgUmFpc2VcbiAgICB8IGBJZ25vcmUgLT4gYENhbGwgKGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gIGluXG4gIHdpdGhfY2xvc2VcbiAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgID9kZXNjcmlwdGlvblxuICAgID90aW1lX3NvdXJjZVxuICAgIHRyYW5zcG9ydFxuICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgICB+ZGlzcGF0Y2hfcXVlcmllczooZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbjs7XG5cbmxldCBjbG9zZVxuICAgICAgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgPyhyZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLmNsb3NlXCIpXG4gICAgICB0XG4gID1cbiAgY2xvc2UgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCB+cmVhc29uIHRcbjs7XG5cbm1vZHVsZSBDbGllbnRfaW1wbGVtZW50YXRpb25zID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdzIHQgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA6IHQgLT4gJ3NcbiAgICA7IGltcGxlbWVudGF0aW9ucyA6ICdzIEltcGxlbWVudGF0aW9ucy50XG4gICAgfVxuXG4gIGxldCBudWxsICgpID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgPSAoZnVuIF8gLT4gKCkpOyBpbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBIZWFkZXIgPSBIZWFkZXJcblxuICBsZXQgd2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCB+Y29udGV4dCB+ZiA9XG4gICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoX2xvY2FsIGhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IChTb21lIGNvbnRleHQpIH5mXG4gIDs7XG5lbmRcbiIsIlxub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9uID0gSW1wbGVtZW50YXRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcbm1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+PX4gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG5tb2R1bGUgUnBjX2NvbW1vbiA9IHN0cnVjdFxuICBsZXQgZGlzcGF0Y2hfcmF3J1xuICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXJcbiAgICA9XG4gICAgbGV0IHF1ZXJ5ID0geyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQgPSBxdWVyeV9pZDsgbWV0YWRhdGE7IGRhdGEgPSBxdWVyeSB9IGluXG4gICAgbWF0Y2ggQ29ubmVjdGlvbi5kaXNwYXRjaCBjb25uIH5yZXNwb25zZV9oYW5kbGVyIH5iaW5fd3JpdGVyX3F1ZXJ5IH5xdWVyeSB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiBFcnJvciBScGNfZXJyb3IuQ29ubmVjdGlvbl9jbG9zZWRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfcmF3ID9tZXRhZGF0YSBjb25uIH50YWcgfnZlcnNpb24gfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IH5xdWVyeV9pZCB+ZiA9XG4gICAgbGV0IHJlc3BvbnNlX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIChtYXRjaFxuICAgICAgIGRpc3BhdGNoX3JhdydcbiAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgY29ublxuICAgICAgICAgfnRhZ1xuICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5xdWVyeV9pZFxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6KFNvbWUgKGYgcmVzcG9uc2VfaXZhcikpXG4gICAgIHdpdGhcbiAgICAgfCBPayAoKSAtPiAoKVxuICAgICB8IEVycm9yIF8gYXMgZSAtPiBJdmFyLmZpbGwgcmVzcG9uc2VfaXZhciBlKTtcbiAgICBJdmFyLnJlYWQgcmVzcG9uc2VfaXZhclxuICA7O1xuZW5kXG5cbm1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9yZXNwb25zZSA6ICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyByZXNwb25zZV90eXBlX2lkIDogJ3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSA9XG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cmVzcG9uc2VcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9yZXNwb25zZVxuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQucXVlcnlfdHlwZV9pZFxuICBsZXQgcmVzcG9uc2VfdHlwZV9pZCB0ID0gdC5yZXNwb25zZV90eXBlX2lkXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuYmluX3Jlc3BvbnNlXG5cbiAgbGV0IHNoYXBlcyB0ID1cbiAgICBScGNfc2hhcGVzLlJwYyB7IHF1ZXJ5ID0gdC5iaW5fcXVlcnkuc2hhcGU7IHJlc3BvbnNlID0gdC5iaW5fcmVzcG9uc2Uuc2hhcGUgfVxuICA7O1xuXG4gIGxldCBibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcXVlcnkgPVxuICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgcXVlcnkpXG4gIDs7XG5cbiAgbGV0IGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgRWFnZXJfZGVmZXJyZWQubWFwIChmIHN0YXRlIHF1ZXJ5KSB+ZjooZnVuIGEgLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCBhKVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFJwY1xuICAgICAgICAgICggdC5iaW5fcXVlcnkucmVhZGVyXG4gICAgICAgICAgLCB0LmJpbl9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICAsIGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZlxuICAgICAgICAgICwgRGVmZXJyZWQgKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFJwY1xuICAgICAgICAgICggdC5iaW5fcXVlcnkucmVhZGVyXG4gICAgICAgICAgLCB0LmJpbl9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICAsIGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZlxuICAgICAgICAgICwgQmxvY2tpbmcgKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIGl2YXJcbiAgICAgICAgICAocmVzcG9uc2UgOiBfIFAuUmVzcG9uc2UudClcbiAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlID1cbiAgICAgICAgcmVzcG9uc2UuZGF0YVxuICAgICAgICA+Pj1+IGZ1biBsZW4gLT5cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICB0LmJpbl9yZXNwb25zZS5yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbCBpdmFyIHJlc3BvbnNlO1xuICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fcXVlcnkud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfmY6cmVzcG9uc2VfaGFuZGxlclxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA+PnwgT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbnMuRXhwZXJ0LlJwY19yZXNwb25kZXJcblxuICAgIGxldCBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgZG9fZGlzcGF0Y2hcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZV9oYW5kbGVyIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyID1cbiAgICAgICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgICAgIG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgaGFuZGxlX2Vycm9yXG4gICAgICAgICAgICAgIChFcnJvci50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmZvLnQgb3B0aW9uKV0pXG4gICAgICAgICAgICAgICAgICAgIGUpKTtcbiAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gKGxlbiA6IE5hdDAudCA6PiBpbnQpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGhhbmRsZV9yZXNwb25zZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgICAgIHJlYWRfYnVmZmVyX3Bvc19yZWYgOj0gIXJlYWRfYnVmZmVyX3Bvc19yZWYgKyBsZW47XG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBgcmVtb3ZlIChPayAoKSkgZWxzZSBgcmVtb3ZlX2FuZF93YWl0IGRcbiAgICAgIGluXG4gICAgICBkb19kaXNwYXRjaFxuICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnOihQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWcpXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIGJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6KFNvbWUgcmVzcG9uc2VfaGFuZGxlcilcbiAgICA7O1xuXG4gICAgbGV0IGRpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5cbiAgICBsZXQgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuID1cbiAgICAgIEVhZ2VyX2RlZmVycmVkLm1hcCAoZiBzdGF0ZSByZXNwb25kZXIgYnVmIH5wb3MgfmxlbikgfmY6KGZ1biBhIC0+XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgYSlcbiAgICA7O1xuXG4gICAgbGV0IGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSByZXNwb25kZXIgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuKVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQnID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvblxuICAgICAgICAgID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKVxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBmXG4gICAgICA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZ1xuICAgICAgOyB2ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IFJwY19zaGFwZXMuVW5rbm93blxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJ1xuICAgICAgICAgID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKVxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBmXG4gICAgICA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZ1xuICAgICAgOyB2ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IFJwY19zaGFwZXMuVW5rbm93blxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICB0eXBlICdtc2cgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX21zZyA6ICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBtc2dfdHlwZV9pZCA6ICdtc2cgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWdcblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnID1cbiAgICBsZXQgbXNnX3R5cGVfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06bXNnXCJdIHNleHBfb2Zfb3BhcXVlIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWU7IHZlcnNpb247IGJpbl9tc2c7IG1zZ190eXBlX2lkIH1cbiAgOztcblxuICBsZXQgc2hhcGVzIHQgPSBScGNfc2hhcGVzLk9uZV93YXkgeyBtc2cgPSB0LmJpbl9tc2cuc2hhcGUgfVxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBtc2dfdHlwZV9pZCB0ID0gdC5tc2dfdHlwZV9pZFxuXG4gIGxldCBub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcXVlcnkgPVxuICAgIEVhZ2VyX2RlZmVycmVkLnJldHVybiAoT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPSBPbmVfd2F5ICh0LmJpbl9tc2cucmVhZGVyLCBub19hdXRob3JpemF0aW9uIGYpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXcnXG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fbXNnLndyaXRlclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgOztcblxuICBsZXQgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0ID1cbiAgICBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICByZXN1bHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uIHQpXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IHw+IGZ1biByZXN1bHQgLT4gcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBPcl9lcnJvci5va19leG4gKGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkpXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGxldCBub19hdXRob3JpemF0aW9uIGYgc3RhdGUgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBFYWdlcl9kZWZlcnJlZC5yZXR1cm4gKE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgYnVmIH5wb3MgfmxlbikpXG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbikgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gT25lX3dheV9leHBlcnQgKG5vX2F1dGhvcml6YXRpb24gZilcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9XG4gICAgICAgICAgY29ublxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayBmbHVzaGVkIC0+IGBGbHVzaGVkIGZsdXNoZWRcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICB8IEVycm9yIG9mIEVycm9yLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgWyVleHBlY3Qge3wgNzQ4YzhiZjQ1MDJkMDk3OGQwMDdiZjdmOTZhN2VmN2YgfH1dXG4gIDs7XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgICAgIHwgQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgIHwgRXJyb3Igb2YgRXJyb3IuU3RhYmxlLlYyLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDc0OGM4YmY0NTAyZDA5NzhkMDA3YmY3Zjk2YTdlZjdmIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuKCogdGhlIGJhc2lzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgUGlwZV9ycGMgYW5kIFN0YXRlX3JwYyAqKVxubW9kdWxlIFN0cmVhbWluZ19ycGMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEluaXRpYWxfbWVzc2FnZSA9IFAuU3RyZWFtX2luaXRpYWxfbWVzc2FnZVxuXG4gIHR5cGUgKCdxdWVyeSwgJ2luaXRpYWxfcmVzcG9uc2UsICd1cGRhdGVfcmVzcG9uc2UsICdlcnJvcl9yZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX2luaXRpYWxfcmVzcG9uc2UgOiAnaW5pdGlhbF9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl91cGRhdGVfcmVzcG9uc2UgOiAndXBkYXRlX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX2Vycm9yX3Jlc3BvbnNlIDogJ2Vycm9yX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZCA6ICdpbml0aWFsX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIDsgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQgOiAndXBkYXRlX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA6ICdlcnJvcl9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgPVxuICAgICAgbWF0Y2ggY2xpZW50X3B1c2hlc19iYWNrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lICgpIC0+IHRydWVcbiAgICBpblxuICAgIGxldCBxdWVyeV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpxdWVyeVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZVxuICAgICAgICB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06JXthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZX1cIl1cbiAgICAgICAgc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZVxuICAgICAgICB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06JXthbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OmVycm9yXCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZVxuICAgIDsgdmVyc2lvblxuICAgIDsgYmluX3F1ZXJ5XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZVxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZVxuICAgIDsgYmluX2Vycm9yX3Jlc3BvbnNlID0gYmluX2Vycm9yXG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2tcbiAgICA7IHF1ZXJ5X3R5cGVfaWRcbiAgICA7IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICA7IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1ha2VfaW5pdGlhbF9tZXNzYWdlIHggPVxuICAgIHsgSW5pdGlhbF9tZXNzYWdlLnVudXNlZF9xdWVyeV9pZCA9IFAuVW51c2VkX3F1ZXJ5X2lkLnQ7IGluaXRpYWwgPSB4IH1cbiAgOztcblxuICBsZXQgc2hhcGVzIHQgPVxuICAgIFJwY19zaGFwZXMuU3RyZWFtaW5nX3JwY1xuICAgICAgeyBxdWVyeSA9IHQuYmluX3F1ZXJ5LnNoYXBlXG4gICAgICA7IGluaXRpYWxfcmVzcG9uc2UgPSB0LmJpbl9pbml0aWFsX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IHVwZGF0ZV9yZXNwb25zZSA9IHQuYmluX3VwZGF0ZV9yZXNwb25zZS5zaGFwZVxuICAgICAgOyBlcnJvciA9IHQuYmluX2Vycm9yX3Jlc3BvbnNlLnNoYXBlXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudF9nZW4gdCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgaW1wbCA9XG4gICAgbGV0IGJpbl9pbml0X3dyaXRlciA9XG4gICAgICBJbml0aWFsX21lc3NhZ2UuYmluX3dyaXRlcl90XG4gICAgICAgIHQuYmluX2luaXRpYWxfcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgIHQuYmluX2Vycm9yX3Jlc3BvbnNlLndyaXRlclxuICAgIGluXG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFN0cmVhbWluZ19ycGNcbiAgICAgICAgICB7IGJpbl9xdWVyeV9yZWFkZXIgPSB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICA7IGJpbl9pbml0X3dyaXRlclxuICAgICAgICAgIDsgYmluX3VwZGF0ZV93cml0ZXIgPSB0LmJpbl91cGRhdGVfcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgICAgOyBpbXBsXG4gICAgICAgICAgfVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoRXJyb3IgZXJyKSkpXG4gICAgICB8IE9rIChpbml0aWFsLCBwaXBlKSAtPiBBdXRob3JpemVkIChPayAobWFrZV9pbml0aWFsX21lc3NhZ2UgKE9rIGluaXRpYWwpLCBwaXBlKSlcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gdCA/b25fZXhjZXB0aW9uIChQaXBlIGYpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIGxldCBmIGMgcXVlcnkgd3JpdGVyID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd3JpdGVyIHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KSlcbiAgICAgIHwgT2sgXyBhcyB4IC0+IEF1dGhvcml6ZWQgKE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KSlcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gP29uX2V4Y2VwdGlvbiB0IChEaXJlY3QgZilcbiAgOztcblxuICBsZXQgYWJvcnQgdCBjb25uIGlkID1cbiAgICBsZXQgcXVlcnkgPVxuICAgICAgeyBQLlF1ZXJ5LnRhZyA9IHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSBOb25lOyBkYXRhID0gYEFib3J0IH1cbiAgICBpblxuICAgIGlnbm9yZVxuICAgICAgKENvbm5lY3Rpb24uZGlzcGF0Y2hcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OlAuU3RyZWFtX3F1ZXJ5LmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgICA6ICh1bml0LCBbIGBDbG9zZWQgXSkgUmVzdWx0LnQpXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFVwZGF0ZSBvZiAnYVxuICAgICAgfCBDbG9zZWQgb2YgWyBgQnlfcmVtb3RlX3NpZGUgfCBgRXJyb3Igb2YgRXJyb3IudCBdXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ29udGludWVcbiAgICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfbWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgOyBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IERlZmVycmVkLnRcbiAgICAgIH1cblxuICAgIGxldCBpZCB0ID0gdC5xdWVyeV9pZFxuICAgIGxldCBjbG9zZV9yZWFzb24gdCA9IHQuY2xvc2VfcmVhc29uXG4gIGVuZFxuXG4gIG1vZHVsZSBSZXNwb25zZV9zdGF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcGRhdGVfaGFuZGxlciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9yZXNwb25zZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5pdGlhbCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIHQgPVxuICAgICAgICB7IHJwYyA6ICgncSwgJ2ksICd1LCAnZSkgdFxuICAgICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICAgIDsgbWFrZV91cGRhdGVfaGFuZGxlciA6IHVuaXQgLT4gJ2V4dHJhICogJ3UgVXBkYXRlX2hhbmRsZXIudFxuICAgICAgICA7IGl2YXIgOiAoUC5RdWVyeV9pZC50ICogJ2kgKiAnZXh0cmEsICdlKSBSZXN1bHQudCBScGNfcmVzdWx0LnQgSXZhci50XG4gICAgICAgIDsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSA6ICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSBJbml0aWFsLnQgLT4gJ3UgdFxuICAgICAgICB8IFdyaXRpbmdfdXBkYXRlcyBvZiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciAqICdhIFVwZGF0ZV9oYW5kbGVyLnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnQgfVxuICBlbmRcblxuICBsZXQgcmVhZF9lcnJvclxuICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uXG4gICAgICAgIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KVxuICAgICAgICBlcnJcbiAgICA9XG4gICAgbGV0IGNvcmVfZXJyID1cbiAgICAgIEVycm9yLnRfb2Zfc2V4cCAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGVycilcbiAgICBpblxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIChgRXJyb3IgY29yZV9lcnIpKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoRXJyb3IgZXJyKVxuICA7O1xuXG4gIGxldCBlb2YgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpID1cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCBgQnlfcmVtb3RlX3NpZGUpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChPayAoKSlcbiAgOztcblxuICBsZXQgcmVzcG9uc2VfaGFuZGxlciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGluaXRpYWxfc3RhdGVcbiAgICA6IENvbm5lY3Rpb24ucmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgb3BlbiBSZXNwb25zZV9zdGF0ZSBpblxuICAgIGxldCBzdGF0ZSA9IHsgc3RhdGUgPSBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfc3RhdGUgfSBpblxuICAgIGZ1biByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgLT5cbiAgICAgIG1hdGNoIHN0YXRlLnN0YXRlIHdpdGhcbiAgICAgIHwgV3JpdGluZ191cGRhdGVzIChiaW5fcmVhZGVyX3VwZGF0ZSwgaGFuZGxlcikgLT5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgYEVvZiAtPiAwXG4gICAgICAgICAgICAgICAgIHwgYE9rIChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICB8IE9rIGBFb2YgLT4gZW9mIGhhbmRsZXJcbiAgICAgICAgICAgIHwgT2sgKGBPayBsZW4pIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgICAgYmluX3JlYWRlcl91cGRhdGVcbiAgICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgICAgIHwgT2sgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaGFuZGxlciAoVXBkYXRlIGRhdGEpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ29udGludWUgLT4gYGtlZXBcbiAgICAgICAgICAgICAgICAgIHwgV2FpdCBkIC0+IGB3YWl0IGQpKSkpXG4gICAgICB8IFN0YXRlLldhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9oYW5kbGVyIC0+XG4gICAgICAgICgqIFdlIG5ldmVyIHVzZSBbYHJlbW92ZSAoRXJyb3IgXyldIGhlcmUsIHNpbmNlIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gc2hvdWxkIGJlIGNsb3NlZCwgYW5kIHRoZXNlIGFyZSBcIm5vcm1hbFwiIGVycm9ycy4gKEluIGNvbnRyYXN0LCB0aGVcbiAgICAgICAgICAgZXJyb3JzIHdlIGdldCBpbiB0aGUgW1dyaXRpbmdfdXBkYXRlc190b19waXBlXSBjYXNlIGluZGljYXRlIG1vcmUgc2VyaW91c1xuICAgICAgICAgICBwcm9ibGVtcy4pIEluc3RlYWQsIHdlIGp1c3QgcHV0IGVycm9ycyBpbiBbaXZhcl0uICopXG4gICAgICAgIGxldCBlcnJvciBlcnIgPVxuICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgaW5pdGlhbCA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIChJbml0aWFsX21lc3NhZ2UuYmluX3JlYWRlcl90XG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fZXJyb3JfcmVzcG9uc2UucmVhZGVyKVxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgaW5pdGlhbF9yZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGluaXRpYWwgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICAgICB8IE9rIGluaXRpYWxfbXNnIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpbml0aWFsX21zZy5pbml0aWFsIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoT2sgKEVycm9yIGVycikpO1xuICAgICAgICAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgICAgICAgIHwgT2sgaW5pdGlhbCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZXh0cmEsIGhhbmRsZXIgPSBpbml0aWFsX2hhbmRsZXIubWFrZV91cGRhdGVfaGFuZGxlciAoKSBpblxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIuaXZhclxuICAgICAgICAgICAgICAgICAgIChPayAoT2sgKGluaXRpYWxfaGFuZGxlci5xdWVyeV9pZCwgaW5pdGlhbCwgZXh0cmEpKSk7XG4gICAgICAgICAgICAgICAgIHN0YXRlLnN0YXRlXG4gICAgICAgICAgICAgICAgIDwtIFdyaXRpbmdfdXBkYXRlc1xuICAgICAgICAgICAgICAgICAgICAgIChpbml0aWFsX2hhbmRsZXIucnBjLmJpbl91cGRhdGVfcmVzcG9uc2UucmVhZGVyLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgYGtlZXApKSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZ2VuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgbWFrZV91cGRhdGVfaGFuZGxlciA9XG4gICAgbGV0IGJpbl93cml0ZXJfcXVlcnkgPVxuICAgICAgUC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uZWVkc19sZW5ndGhcbiAgICAgICAgKFdyaXRlcl93aXRoX2xlbmd0aC5vZl90eXBlX2NsYXNzIHQuYmluX3F1ZXJ5KVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gYFF1ZXJ5IHF1ZXJ5IGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgP21ldGFkYXRhXG4gICAgICBjb25uXG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgIH5xdWVyeVxuICAgICAgfmY6KGZ1biBpdmFyIC0+XG4gICAgICAgIHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICB7IHJwYyA9IHQ7IHF1ZXJ5X2lkOyBjb25uZWN0aW9uID0gY29ubjsgaXZhcjsgbWFrZV91cGRhdGVfaGFuZGxlciB9KVxuICAgID4+fCBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbiAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9pdGVyID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIG1hdGNoJW1hcCBkaXNwYXRjaF9nZW4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSAoZnVuICgpIC0+ICgpLCBmKSB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAoKSkpIC0+IE9rIChPayAoaWQsIGluaXQpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGRpc3BhdGNoX2dlbiA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT5cbiAgICAgICAgbGV0IHBpcGVfciwgcGlwZV93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICAgICAgKCogU2V0IGEgc21hbGwgYnVmZmVyIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHB1c2hiYWNrIGV2ZW50cyAqKVxuICAgICAgICBQaXBlLnNldF9zaXplX2J1ZGdldCBwaXBlX3cgMTAwO1xuICAgICAgICBsZXQgY2xvc2VfcmVhc29uIDogUGlwZV9jbG9zZV9yZWFzb24udCBJdmFyLnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICBsZXQgZiA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBVcGRhdGUgZGF0YSAtPlxuICAgICAgICAgICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCBwaXBlX3cpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHBpcGVfdyBkYXRhO1xuICAgICAgICAgICAgICBpZiB0LmNsaWVudF9wdXNoZXNfYmFjayAmJiBQaXBlLmxlbmd0aCBwaXBlX3cgPj0gUGlwZS5zaXplX2J1ZGdldCBwaXBlX3dcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFdhaXRcbiAgICAgICAgICAgICAgICAgIChtYXRjaCVtYXAgUGlwZS5kb3duc3RyZWFtX2ZsdXNoZWQgcGlwZV93IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+ICgpKVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZVxuICAgICAgICAgIHwgQ2xvc2VkIHJlYXNvbiAtPlxuICAgICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5XG4gICAgICAgICAgICAgIGNsb3NlX3JlYXNvblxuICAgICAgICAgICAgICAobWF0Y2ggcmVhc29uIHdpdGhcbiAgICAgICAgICAgICAgIHwgYEJ5X3JlbW90ZV9zaWRlIC0+IENsb3NlZF9yZW1vdGVseVxuICAgICAgICAgICAgICAgfCBgRXJyb3IgZXJyIC0+IEVycm9yIGVycik7XG4gICAgICAgICAgICBQaXBlLmNsb3NlIHBpcGVfdztcbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgIGluXG4gICAgICAgIChwaXBlX3IsIGNsb3NlX3JlYXNvbiksIGYpXG4gICAgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKHBpcGVfciwgY2xvc2VfcmVhc29uKSkpIC0+XG4gICAgICB1cG9uIChQaXBlLmNsb3NlZCBwaXBlX3IpIChmdW4gKCkgLT5cbiAgICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgY2xvc2VfcmVhc29uKVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhYm9ydCB0IGNvbm4gaWQ7XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGNsb3NlX3JlYXNvbiBDbG9zZWRfbG9jYWxseSkpO1xuICAgICAgbGV0IHBpcGVfbWV0YWRhdGEgOiBQaXBlX21ldGFkYXRhLnQgPVxuICAgICAgICB7IHF1ZXJ5X2lkID0gaWQ7IGNsb3NlX3JlYXNvbiA9IEl2YXIucmVhZCBjbG9zZV9yZWFzb24gfVxuICAgICAgaW5cbiAgICAgIE9rIChPayAocGlwZV9tZXRhZGF0YSwgaW5pdCwgcGlwZV9yKSlcbiAgOztcbmVuZFxuXG4oKiBBIFBpcGVfcnBjIGlzIGxpa2UgYSBTdHJlYW1pbmdfcnBjLCBleGNlcHQgd2UgZG9uJ3QgY2FyZSBhYm91dCBpbml0aWFsIHN0YXRlIC0gdGh1c1xuICAgaXQgaXMgcmVzdHJpY3RlZCB0byB1bml0IGFuZCB1bHRpbWF0ZWx5IGlnbm9yZWQgKilcbm1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSwgJ2Vycm9yKSB0ID0gKCdxdWVyeSwgdW5pdCwgJ3Jlc3BvbnNlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZSA/Y2xpZW50X3B1c2hlc19iYWNrIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB+YmluX2Vycm9yICgpID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6VW5pdC5iaW5fdFxuICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2U6YmluX3Jlc3BvbnNlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICAoKiBbaW5pdGlhbF9yZXNwb25zZV0gZG9lc24ndCBzaG93IHVwIGluIFtQaXBlX3JwY10ncyBzaWduYXR1cmUsXG4gICAgICAgICBzbyB0aGUgdHlwZS1pZCBjcmVhdGVkIHVzaW5nIFthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZV0gaXNcbiAgICAgICAgIHVucmVhY2hhYmxlLiAqKVxuICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlOlwiXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwicmVzcG9uc2VcIlxuICAgICAgKClcbiAgOztcblxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuXG4gIGxldCBpbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCAoZnVuIGEgcXVlcnkgLT5cbiAgICAgIGxldCVtYXAgeCA9IGYgYSBxdWVyeSBpblxuICAgICAgeCA+Pnx+IGZ1biB4IC0+ICgpLCB4KVxuICA7O1xuXG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICBtb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCdWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgcmVmXG5cbiAgICAgICAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfc2l6ZSA9IDQwOTYpICgpID1cbiAgICAgICAgICBpZiBpbml0aWFsX3NpemUgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuQnVmZmVyLmNyZWF0ZSBnb3QgbmVnYXRpdmUgYnVmZmVyIFxcXG4gICAgICAgICAgICAgICBzaXplXCJcbiAgICAgICAgICAgICAgaW5pdGlhbF9zaXplXG4gICAgICAgICAgICAgIEludC5zZXhwX29mX3Q7XG4gICAgICAgICAgcmVmIChCaWdzdHJpbmcuY3JlYXRlIGluaXRpYWxfc2l6ZSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQuR3JvdXAudCA9XG4gICAgICAgIHsgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgICAgfVxuXG4gICAgICBhbmQgJ2EgY29tcG9uZW50ID0gJ2EgVC5Hcm91cC5jb21wb25lbnQgPVxuICAgICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBULmdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGUgP2J1ZmZlciAoKSA9XG4gICAgICAgIGxldCBidWZmZXIgPVxuICAgICAgICAgIG1hdGNoIGJ1ZmZlciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgKClcbiAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgIGluXG4gICAgICAgIHsgY29tcG9uZW50cyA9IEJhZy5jcmVhdGUgKCk7IGNvbXBvbmVudHNfYnlfaWQgPSBJZC5UYWJsZS5jcmVhdGUgKCk7IGJ1ZmZlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgbGVuZ3RoIHQgPSBCYWcubGVuZ3RoIHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgYWRkX2V4biB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXJcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGRfZXhuOiBjYW5ub3QgYWRkIGEgY2xvc2VkIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXJcIjtcbiAgICAgICAgaWYgSGFzaHRibC5tZW0gdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IHRyeWluZyB0byBhZGQgYSBkaXJlY3QgXFxcbiAgICAgICAgICAgICBzdHJlYW0gd3JpdGVyIHRoYXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBncm91cFwiO1xuICAgICAgICAobWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgb25lIC0+XG4gICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgKGJpbl93cml0ZXIgb25lKSAoYmluX3dyaXRlciB3cml0ZXIpKVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZDogY2Fubm90IGFkZCBhIGRpcmVjdCBzdHJlYW0gXFxcbiAgICAgICAgICAgICAgICB3cml0ZXIgd2l0aCBhIGRpZmZlcmVudCBiaW5fd3JpdGVyXCIpO1xuICAgICAgICBsZXQgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgPSBCYWcuYWRkIHQuY29tcG9uZW50cyB3cml0ZXIgaW5cbiAgICAgICAgbGV0IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyID1cbiAgICAgICAgICBCYWcuYWRkIHdyaXRlci5ncm91cHMgeyBncm91cCA9IHQ7IGVsZW1lbnRfaW5fZ3JvdXAgPSB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuYWRkX2V4blxuICAgICAgICAgIHQuY29tcG9uZW50c19ieV9pZFxuICAgICAgICAgIH5rZXk6d3JpdGVyLmlkXG4gICAgICAgICAgfmRhdGE6eyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlbW92ZSB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQuY29tcG9uZW50c19ieV9pZCB3cml0ZXIuaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIH0gLT5cbiAgICAgICAgICBCYWcucmVtb3ZlIHQuY29tcG9uZW50cyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICBCYWcucmVtb3ZlIHdyaXRlci5ncm91cHMgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19saXN0IHQgPSBCYWcudG9fbGlzdCB0LmNvbXBvbmVudHNcblxuICAgICAgbGV0IGZsdXNoZWRfb3JfY2xvc2VkIHQgPVxuICAgICAgICB0b19saXN0IHRcbiAgICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB0IC0+IERlZmVycmVkLmFueV91bml0IFsgZmx1c2hlZCB0OyBjbG9zZWQgdCBdKVxuICAgICAgICB8PiBEZWZlcnJlZC5hbGxfdW5pdFxuICAgICAgOztcblxuICAgICAgbGV0IGZsdXNoZWQgdCA9IGZsdXNoZWRfb3JfY2xvc2VkIHRcblxuICAgICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICBCYWcuaXRlciB0LmNvbXBvbmVudHMgfmY6KGZ1biBkaXJlY3Rfc3RyZWFtX3dyaXRlciAtPlxuICAgICAgICAgICAgKCogV3JpdGVycyBhcmUgYXV0b21hdGljYWxseSBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZWlyIGdyb3VwcyB3aGVuXG4gICAgICAgICAgICAgICBjbG9zZWQsIHNvIFtgQ2xvc2VkXSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB0aGUgcmVtb3ZhbCBkaWRuJ3QgaGFwcGVuIHlldC4gKilcbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgZGlyZWN0X3N0cmVhbV93cml0ZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgICAgICAgICAgICAgIDogWyBgT2sgfCBgQ2xvc2VkIF0pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cml0ZSB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW47XG4gICAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICAgIG1hdGNoIEJhZy5jaG9vc2UgdC5jb21wb25lbnRzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICBsZXQgb25lID0gQmFnLkVsdC52YWx1ZSBvbmUgaW5cbiAgICAgICAgICBsZXQgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPSBiaW5fd3JpdGVyIG9uZSBpblxuICAgICAgICAgIGxldCBidWZmZXIgPSAhKHQuYnVmZmVyKSBpblxuICAgICAgICAgICgqIE9wdGltaXN0aWMgZmlyc3QgdHJ5ICopXG4gICAgICAgICAgKG1hdGNoIHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCB3aXRoXG4gICAgICAgICAgIHwgbGVuIC0+IEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW5cbiAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICgqIEl0J3MgbGlrZWx5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgICAgICAgICBpbnRlcm5hbCBidWZmZXIgYW5kIHRyeSBhZ2Fpbi4gVGVjaG5pY2FsbHkgd2UgY291bGQgbWF0Y2ggb25cbiAgICAgICAgICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0XG4gICAgICAgICAgICAgICAgY3VzdG9tIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgICAgICAgIFtJbnZhbGlkX2FyZ3VtZW50XSBvciBbRmFpbHVyZV0gZm9yIGluc3RhbmNlLiAqKVxuICAgICAgICAgICAgIGxldCBsZW4gPSBzaXplIHggaW5cbiAgICAgICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmZmVyO1xuICAgICAgICAgICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIChJbnQuY2VpbF9wb3cyIGxlbikgaW5cbiAgICAgICAgICAgICB0LmJ1ZmZlciA6PSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGxlbiA9IHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgICAgICAgIEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgdCB4ID1cbiAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHg7XG4gICAgICAgIGZsdXNoZWRfb3JfY2xvc2VkIHRcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBTdHJlYW1pbmdfcnBjLmltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGZcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsICgpLCBwaXBlX3IpIC0+IHBpcGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBleGNlcHRpb24gUGlwZV9ycGNfZmFpbGVkXG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgcnBjX2Vycm9yIC0+IHJhaXNlIChFcnJvci50b19leG4gcnBjX2Vycm9yKVxuICAgIHwgT2sgKEVycm9yIF8pIC0+IHJhaXNlIFBpcGVfcnBjX2ZhaWxlZFxuICAgIHwgT2sgKE9rIHBpcGVfYW5kX2lkKSAtPiBwaXBlX2FuZF9pZFxuICA7O1xuXG4gIG1vZHVsZSBQaXBlX21lc3NhZ2UgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWVzc2FnZVxuICBtb2R1bGUgUGlwZV9yZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9yZXNwb25zZVxuXG4gIGxldCBkaXNwYXRjaF9pdGVyID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAoaWQsICgpKSAtPiBpZFxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIHQgPVxuICAgICgncXVlcnksICdzdGF0ZSwgJ3VwZGF0ZSwgJ2Vycm9yKSBTdHJlYW1pbmdfcnBjLnRcblxuICBtb2R1bGUgSWQgPSBQLlF1ZXJ5X2lkXG4gIG1vZHVsZSBNZXRhZGF0YSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAoKVxuICAgID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6YmluX3N0YXRlXG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fdXBkYXRlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJzdGF0ZVwiXG4gICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZTpcInVwZGF0ZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9zdGF0ZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gIGxldCBiaW5fdXBkYXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3VwZGF0ZV9yZXNwb25zZVxuICBsZXQgYmluX2Vycm9yIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2Vycm9yX3Jlc3BvbnNlXG4gIGxldCBpbXBsZW1lbnQgPSBTdHJlYW1pbmdfcnBjLmltcGxlbWVudFxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdFxuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2VcbiAgICA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCBzdGF0ZSwgdXBkYXRlX3IpIC0+IHN0YXRlLCB1cGRhdGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgYWJvcnQgPSBTdHJlYW1pbmdfcnBjLmFib3J0XG4gIGxldCBjbG9zZV9yZWFzb24gPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGEuY2xvc2VfcmVhc29uXG4gIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgdCA9IHQuU3RyZWFtaW5nX3JwYy5jbGllbnRfcHVzaGVzX2JhY2tcbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IHN0YXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5pbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHVwZGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG5lbmRcblxubW9kdWxlIEFueSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUnBjIDogKCdxLCAncikgUnBjLnQgLT4gdFxuICAgIHwgUGlwZSA6ICgncSwgJ3IsICdlKSBQaXBlX3JwYy50IC0+IHRcbiAgICB8IFN0YXRlIDogKCdxLCAncywgJ3UsICdlKSBTdGF0ZV9ycGMudCAtPiB0XG4gICAgfCBPbmVfd2F5IDogJ20gT25lX3dheS50IC0+IHRcblxuICBsZXQgZGVzY3JpcHRpb24gPSBmdW5jdGlvblxuICAgIHwgUnBjIHJwYyAtPiBScGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBQaXBlIHJwYyAtPiBQaXBlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFN0YXRlIHJwYyAtPiBTdGF0ZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBPbmVfd2F5IHJwYyAtPiBPbmVfd2F5LmRlc2NyaXB0aW9uIHJwY1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb24uU3RhYmxlXG4gIG1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IFBpcGVfY2xvc2VfcmVhc29uLlN0YWJsZVxuICBtb2R1bGUgUnBjID0gUnBjXG4gIG1vZHVsZSBQaXBlX3JwYyA9IFBpcGVfcnBjXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBTdGF0ZV9ycGNcbiAgbW9kdWxlIE9uZV93YXkgPSBPbmVfd2F5XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUnBjXG5cbm1vZHVsZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICB0eXBlICdpbnB1dCB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IGNvbnZlcnQgOiAnaW5wdXQgLT4gJ291dHB1dFxuICAgICAgICA7IHdyaXRlciA6ICdvdXRwdXQgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICdpbnB1dCB0XG5cbiAgbGV0IGNyZWF0ZSB+Y29udmVydCB+d3JpdGVyID0gVCB7IGNvbnZlcnQ7IHdyaXRlciB9XG5cbiAgbGV0IHdyaXRlIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZSB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCBjbG9zZSAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3cml0ZXJcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5pc19jbG9zZWQgd3JpdGVyXG4gIGxldCBjbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2VkIHdyaXRlclxuZW5kXG5cbmxldCBmYWlsZWRfY29udmVyc2lvbiB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJ0eXBlIGNvbnZlcnNpb24gZmFpbHVyZVwiXG4gICAgeFxuICAgIFslc2V4cF9vZjpcbiAgICAgIFsgYE1zZyB8IGBRdWVyeSB8IGBSZXNwb25zZSB8IGBFcnJvciB8IGBTdGF0ZSB8IGBVcGRhdGUgXVxuICAgICAgKiBbIGBScGMgb2Ygc3RyaW5nIF1cbiAgICAgICogWyBgVmVyc2lvbiBvZiBpbnQgXVxuICAgICAgKiBleG5dXG47O1xuXG5sZXQgbXVsdGlwbGVfcmVnaXN0cmF0aW9ucyB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJtdWx0aXBsZSBycGMgcmVnaXN0cmF0aW9uc1wiXG4gICAgeFxuICAgIFslc2V4cF9vZjogWyBgUnBjIG9mIHN0cmluZyBdICogWyBgVmVyc2lvbiBvZiBpbnQgXV1cbjs7XG5cbmxldCB1bmtub3duX3ZlcnNpb24geCA9IEVycm9yLmNyZWF0ZSBcInVua25vd24gcnBjIHZlcnNpb25cIiB4IFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuXG5tb2R1bGUgQ2FsbGVlX2NvbnZlcnRzID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2ltcGxlID0gc3RydWN0XG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciA9XG4gICAgICAgIHsgYWRhcHQgOlxuICAgICAgICAgICAgJ3N0YXRlLiAoJ3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzcG9uc2UgRGVmZXJyZWQudCkgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGFkYXB0ZXJzIDogKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyIEludC5NYXAudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfm5hbWUgPSB7IG5hbWU7IGFkYXB0ZXJzID0gSW50Lk1hcC5lbXB0eSB9XG5cbiAgICAgIGxldCB3cmFwX2Vycm9yIGZuIHN0YXRlIHF1ZXJ5ID1cbiAgICAgICAgbWF0Y2glbWFwIGZuIHN0YXRlIHF1ZXJ5IHdpdGhcbiAgICAgICAgfCBPayB2YWx1ZSAtPiBPayB2YWx1ZVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChFcnJvci50b19zdHJpbmdfaHVtIGVycm9yKVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZCB7IG5hbWU7IGFkYXB0ZXJzIH0gcnBjIGFkYXB0ZXIgPVxuICAgICAgICBpZiBTdHJpbmcuKCA8PiApIG5hbWUgKFJwYy5uYW1lIHJwYylcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICBcIlJwYyBuYW1lcyBkb24ndCBhZ3JlZVwiXG4gICAgICAgICAgICAobmFtZSwgUnBjLm5hbWUgcnBjKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2ZXJzaW9uID0gUnBjLnZlcnNpb24gcnBjIGluXG4gICAgICAgICAgbWF0Y2ggTWFwLmZpbmQgYWRhcHRlcnMgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgIFwiVmVyc2lvbiBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgIChuYW1lLCB2ZXJzaW9uKVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBhZGFwdGVycyA9IE1hcC5zZXQgYWRhcHRlcnMgfmtleTp2ZXJzaW9uIH5kYXRhOmFkYXB0ZXIgaW5cbiAgICAgICAgICAgIE9rIHsgbmFtZTsgYWRhcHRlcnMgfSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb24gdCBvbGRfcnBjIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBmbiBzdGF0ZSAodXBncmFkZSBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBkb3duZ3JhZGUgcmVzdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgYWRhcHRlZFxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBvbGRfcnBjIHVwZ3JhZGVfb3JfZXJyb3IgZG93bmdyYWRlX29yX2Vycm9yID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWQuUmVzdWx0LkxldF9zeW50YXggaW5cbiAgICAgICAgICAgIGxldCViaW5kIHF1ZXJ5ID0gRGVmZXJyZWQucmV0dXJuICh1cGdyYWRlX29yX2Vycm9yIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGxldCViaW5kIHJlc3BvbnNlID0gZm4gc3RhdGUgcXVlcnkgaW5cbiAgICAgICAgICAgIERlZmVycmVkLnJldHVybiAoZG93bmdyYWRlX29yX2Vycm9yIHJlc3BvbnNlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjICh3cmFwX2Vycm9yIGFkYXB0ZWQpXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb24gdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbiB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudCB0IGZuID0gTWFwLmRhdGEgdC5hZGFwdGVycyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHsgYWRhcHQgfSAtPiBhZGFwdCBmbilcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gcXVlcnkgLT4gcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLnF1ZXJ5IC0+IE1vZGVsLnJlc3BvbnNlIERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFJwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+XG4gICAgICAgICAgICAgICAgbGV0JW1hcCByID0gZiBzIH52ZXJzaW9uIHEgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsIHIpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayByIC0+IHJcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5ScGMgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHJlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiByZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPVxuICAgICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiAoTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICAgICAoJ3NcbiAgICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgICAtPiAodW5pdCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBpbXBsID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwpXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChQaXBlIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiAoRGlyZWN0IGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX21vZGVsIDogTW9kZWwuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoTW9kZWwucmVzcG9uc2UgLT4gVmVyc2lvbl9pLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgfCBxIC0+IHFcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwgPVxuICAgICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICAgIHwgUGlwZSBmIC0+XG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoJWJpbmQgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBPayBwaXBlIC0+XG4gICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IHJldHVybiAoT2sgKGNvbnZlcnRfcGlwZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gcmV0dXJuICh3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKSlcbiAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudF9kaXJlY3QgcnBjIChmdW4gcyBxIGRzdyAtPlxuICAgICAgICAgICAgICBsZXQgd3JpdGVyID1cbiAgICAgICAgICAgICAgICBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIuY3JlYXRlIH5jb252ZXJ0OmNvbnZlcnRfZWx0IH53cml0ZXI6ZHN3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoJW1hcCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd3JpdGVyIHdpdGhcbiAgICAgICAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9XG4gICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImNhbm5vdCB1c2UgZGlyZWN0IGludGVyZmFjZSB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHBpcGUgPSBQaXBlLm1hcCBwaXBlIH5mOlZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHN0YXRlICogdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgICdzXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIC0+IChNb2RlbC5zdGF0ZSAqIE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgc3RhdGVfb2ZfbW9kZWwgOiBNb2RlbC5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBTdGF0ZV9ycGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSB3aXRoXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IHEgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2glYmluZCBmIHMgfnZlcnNpb24gcSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgKG1vZGVsX3N0YXRlLCBwaXBlKSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuc3RhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE1vbml0b3IuaGFuZGxlX2Vycm9yc1xuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChPayAoc3RhdGUsIFZlcnNpb25faS51cGRhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgcGlwZSkpKVxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5lcnJvcl9vZl9tb2RlbCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBlcnJvciAtPiBFcnJvciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCBfc3RhdGUgcGlwZSA9IFBpcGUubWFwIH5mOnVwZGF0ZV9vZl9tb2RlbCBwaXBlXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLm1zZyAtPiB1bml0XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA6IChpbnQsIGltcGxlbWVudGVyICogQW55LnQpIEhhc2h0YmwudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfcnBjKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9tc2cgOiBtc2cgLT4gTW9kZWwubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIE9uZV93YXkuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfbXNnIHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+IGYgcyB+dmVyc2lvbiBxKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuT25lX3dheSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1lbnUgPSBzdHJ1Y3RcbiAgKCoqKioqKioqKioqKioqKioqIHNvbWUgcHJvaGliaXRpb25zIGZvciB0aGlzIG1vZHVsZSAqKioqKioqKioqKioqKioqKipcblxuICAgICAgICAgICAgICAgICAgICAgKDEpICEhISBuZXZlciBwcnVuZSBvbGQgdmVyc2lvbnMgb2YgdGhpcyBycGMgISEhXG5cbiAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHRvbyBmdW5kYW1lbnRhbCB0byB0aGUgd29ya2luZ3Mgb2YgdmFyaW91cyB2ZXJzaW9uaW5nXG4gICAgICAgICAgICAgICAgICAgICBzY2hlbWVzIGFuZCBpdCBwcm9iYWJseSB3b24ndCBjaGFuZ2UgdmVyeSBtdWNoIGFueXdheS5cblxuICAgICAgICAgICAgICAgICAgICAgKDIpICEhISBvbmx5IGV2ZXIgc2F5IFwid2l0aCBiaW5faW9cIiBvbiBidWlsdC1pbiBvY2FtbCB0eXBlcyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gdHlwZXMgYXJlIGludCwgbGlzdCwgc3RyaW5nLCBldGMuXG5cbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdG8gcHJvdGVjdCBvdXJzZWx2ZXMgYWdhaW5zdCBjaGFuZ2VzIHRvIENvcmUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcywgZm9yIGV4YW1wbGUuXG5cbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICBsZXQgbmFtZSA9IFwiX19WZXJzaW9uZWRfcnBjLk1lbnVcIlxuXG4gICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICB0eXBlIHJlc3BvbnNlID0gRGVzY3JpcHRpb24udCBsaXN0XG4gIGVuZFxuXG4gIGluY2x1ZGUgQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChNb2RlbClcblxuICBsZXQgcnBjX25hbWUgPSBNb2RlbC5uYW1lXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGxldCB2ZXJzaW9uID0gMVxuXG4gICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHF1ZXJ5XTtcbiAgICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgICA7O1xuXG4gICAgICB0eXBlIHJlc3BvbnNlID0gKHN0cmluZyAqIGludCkgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHJlc3BvbnNlXTtcbiAgICAgICAgWyVleHBlY3Qge3wgNGMxZTUwYzkzYjM4YzJhZDA1NTRjYmQ5MjliZWYzYWMgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgcSA9IHFcblxuICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID1cbiAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgUmVnaXN0ZXIgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBDdXJyZW50X3ZlcnNpb24gPSBWMVxuXG4gIGxldCBhZGQgaW1wbHMgPVxuICAgIGxldCBtZW51ID0gTGlzdC5tYXAgaW1wbHMgfmY6SW1wbGVtZW50YXRpb24uZGVzY3JpcHRpb24gaW5cbiAgICBsZXQgbWVudV9pbXBscyA9IGltcGxlbWVudF9tdWx0aSAoZnVuIF8gfnZlcnNpb246XyAoKSAtPiByZXR1cm4gbWVudSkgaW5cbiAgICBpbXBscyBAIG1lbnVfaW1wbHNcbiAgOztcblxuICB0eXBlIHQgPSBJbnQuU2V0LnQgU3RyaW5nLlRhYmxlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc3VwcG9ydGVkX3JwY3MgdCA9XG4gICAgbGV0IG9wZW4gTGlzdC5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgbmFtZSwgdmVyc2lvbnMgPSBIYXNodGJsLnRvX2FsaXN0IHQgaW5cbiAgICBsZXQlbWFwIHZlcnNpb24gPSBTZXQudG9fbGlzdCB2ZXJzaW9ucyBpblxuICAgIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9XG4gIDs7XG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyB0IH5ycGNfbmFtZSA9XG4gICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkludC5TZXQuZW1wdHkgKEhhc2h0YmwuZmluZCB0IHJwY19uYW1lKVxuICA7O1xuXG4gIGxldCBvZl9lbnRyaWVzIGVudHJpZXMgPVxuICAgIEhhc2h0YmwubWFwIH5mOkludC5TZXQub2ZfbGlzdCAoU3RyaW5nLlRhYmxlLm9mX2FsaXN0X211bHRpIGVudHJpZXMpXG4gIDs7XG5cbiAgbGV0IGF1eF9yZXF1ZXN0IGRpc3BhdGNoIGNvbm4gPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggQ3VycmVudF92ZXJzaW9uLnJwYyBjb25uICgpIGluXG4gICAgUmVzdWx0Lm1hcCByZXN1bHQgfmY6b2ZfZW50cmllc1xuICA7O1xuXG4gIGxldCByZXF1ZXN0IGNvbm4gPSBhdXhfcmVxdWVzdCBScGMuZGlzcGF0Y2ggY29ublxuICBsZXQgcmVxdWVzdCcgY29ubiA9IGF1eF9yZXF1ZXN0IFJwYy5kaXNwYXRjaCcgY29ublxuXG4gIGxldCBjcmVhdGUgZGVzY3JpcHRpb25zID1cbiAgICBMaXN0Lm1hcCBkZXNjcmlwdGlvbnMgfmY6KGZ1biB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICAgIHw+IG9mX2VudHJpZXNcbiAgOztcblxuICBtb2R1bGUgV2l0aF9zaGFwZXMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuU2hhcGVfbWVudVwiXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0XG4gICAgICB0eXBlIHJlc3BvbnNlID0gKERlc2NyaXB0aW9uLnQgKiBScGNfc2hhcGVzLnQpIGxpc3RcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChNb2RlbClcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgICAgdHlwZSBxdWVyeSA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcXVlcnldO1xuICAgICAgICAgIFslZXhwZWN0IHt8IDg2YmE1ZGY3NDdlZWM4MzdmMGIzOTFkZDQ5ZjMzZjllIHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgPSAoRGVzY3JpcHRpb24uU3RhYmxlLlYxLnQgKiBScGNfc2hhcGVzLlN0YWJsZS5WMS50KSBsaXN0XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHJlc3BvbnNlXTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCBiNGJkYzAxYjdlYWQ5MDdlNmQwZDNmM2Q4OTcwMGYxYiB8fV1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBGbi5pZFxuICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSBGbi5pZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBDdXJyZW50X3ZlcnNpb24gPSBWMVxuXG4gICAgdHlwZSB0ID0gKERlc2NyaXB0aW9uLnQgKiBScGNfc2hhcGVzLnQpIGxpc3RcblxuICAgIGxldCBhZGQgaW1wbHMgPVxuICAgICAgbGV0IHNoYXBlX21lbnUgPVxuICAgICAgICBMaXN0Lm1hcCBpbXBscyB+ZjooZnVuIGltcGwgLT5cbiAgICAgICAgICBJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpbXBsLCBJbXBsZW1lbnRhdGlvbi5zaGFwZXMgaW1wbClcbiAgICAgIGluXG4gICAgICBsZXQgc2hhcGVfbWVudV9pbXBscyA9IGltcGxlbWVudF9tdWx0aSAoZnVuIF8gfnZlcnNpb246XyAoKSAtPiByZXR1cm4gc2hhcGVfbWVudSkgaW5cbiAgICAgIGFkZCBpbXBscyBAIHNoYXBlX21lbnVfaW1wbHNcbiAgICA7O1xuXG4gICAgbGV0IHJlcXVlc3QgY29ubiA9IFJwYy5kaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbm5lY3Rpb25fd2l0aF9tZW51ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgOyBtZW51IDogTWVudS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZSBjb25uZWN0aW9uID1cbiAgICBsZXQgb3BlbiBEZWZlcnJlZC5Pcl9lcnJvci5MZXRfc3ludGF4IGluXG4gICAgbGV0JW1hcCBtZW51ID0gTWVudS5yZXF1ZXN0IGNvbm5lY3Rpb24gaW5cbiAgICB7IGNvbm5lY3Rpb247IG1lbnUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZGlyZWN0bHkgY29ubmVjdGlvbiBtZW51ID0geyBjb25uZWN0aW9uOyBtZW51IH1cbmVuZFxuXG5tb2R1bGUgQ2FsbGVyX2NvbnZlcnRzID0gc3RydWN0XG4gIGxldCBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiB+cnBjX25hbWUgfmNhbGxlcl92ZXJzaW9ucyB+Y2FsbGVlX3ZlcnNpb25zIH5jYWxsZWVfbWVudSA9XG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciBjYWxsZWVfdmVyc2lvbnMgY2FsbGVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCJcbiAgICAgICAgICAgIChycGNfbmFtZSA6IHN0cmluZylcbiAgICAgICAgICAgIChjYWxsZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV9tZW51IDogTWVudS50KV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJoaWdoZXN0IHZlcnNpb24gbnVtYmVyIGlzIHRha2VuIGluIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXCIgPVxuICAgIGxldCBycGNfbmFtZSA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBycGNfbmFtZSwgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWVcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAyIF0pXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdCB7fCAoT2sgMikgfH1dXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiZXJyb3IgZnJvbSBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiBsb29rcyByZWFzb25hYmxlXCIgPVxuICAgIGxldCB0aGVfcnBjID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbm90X3RoZV9ycGMgPSBcIm90aGVyLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBub3RfdGhlX3JwYywgMTsgbm90X3RoZV9ycGMsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lOnRoZV9ycGNcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTp0aGVfcnBjKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAoRXJyb3JcbiAgICAgICAoXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiIChycGNfbmFtZSB0aGUtcnBjKVxuICAgICAgICAoY2FsbGVyX3ZlcnNpb25zICgxIDIgMykpIChjYWxsZWVfdmVyc2lvbnMgKCkpXG4gICAgICAgIChjYWxsZWVfbWVudSAoKG90aGVyLXJwYyAoMSAyKSkpKSkpfH1dXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BhdGNoID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBNb25hZCkgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gTVxuXG4gICAgICBsZXQgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+ZGlzcGF0Y2hlciB+cmVnaXN0cnkgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKEVycm9yICh1bmtub3duX3ZlcnNpb24gKG5hbWUsIHZlcnNpb24pKSlcbiAgICAgICAgfCBTb21lIChkaXNwYXRjaCwgX3JwYykgLT4gZGlzcGF0Y2hlciBkaXNwYXRjaCBjb25uZWN0aW9uIHF1ZXJ5XG4gICAgICA7O1xuXG4gICAgICBsZXQgd2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICAgIHsgQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvbjsgbWVudSB9XG4gICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgICB+ZGlzcGF0Y2hlclxuICAgICAgICA9XG4gICAgICAgIGxldCBjYWxsZWVfdmVyc2lvbnMgPSBNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTpuYW1lIGluXG4gICAgICAgIGxldCBjYWxsZXJfdmVyc2lvbnMgPSB2ZXJzaW9ucyAoKSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgICAgICB+cnBjX25hbWU6bmFtZVxuICAgICAgICAgICAgfmNhbGxlcl92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIHZlcnNpb24gLT5cbiAgICAgICAgICB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5yZWdpc3RyeSB+ZGlzcGF0Y2hlclxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBBc3luYyA9IE1ha2UgKERlZmVycmVkKVxuICAgIG1vZHVsZSBEaXJlY3QgPSBNYWtlIChNb25hZC5JZGVudClcbiAgZW5kXG5cbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXInIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiBNb2RlbC5xdWVyeSAtPiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZVxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gbXEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIG1xKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBScGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgICAgICBSZXN1bHQuYmluZCByZXN1bHQgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIG1xIHIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IE9rIHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgUmVnaXN0ZXInIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlIF8gciA9IG1vZGVsX29mX3Jlc3BvbnNlIHJcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IChyZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50LCBlcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IGY6KHJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGFib3J0X211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaXNwYXRjaGVyID1cbiAgICAgICAgeyBhYm9ydCA6IENvbm5lY3Rpb24udCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXRcbiAgICAgICAgOyBkaXNwYXRjaCA6XG4gICAgICAgICAgICBDb25uZWN0aW9uLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAtPiAoIE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgICAgICwgTW9kZWwuZXJyb3IgKVxuICAgICAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgICAgIERlZmVycmVkLnRcbiAgICAgICAgOyBkaXNwYXRjaF9pdGVyIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+IGY6KE1vZGVsLnJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoZGlzcGF0Y2hlciAqIEFueS50KSBJbnQuVGFibGUudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSB+ZiA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGRpc3BhdGNoX2l0ZXI7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoX2l0ZXIgY29ubiBxdWVyeSB+ZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGRpc3BhdGNoOyBfIH0gY29ubiBxdWVyeSAtPiBkaXNwYXRjaCBjb25uIHF1ZXJ5KVxuICAgICAgOztcblxuICAgICAgbGV0IGFib3J0X211bHRpIGNvbm5fd2l0aF9tZW51IGlkID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBpZFxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGFib3J0OyBfIH0gY29ubiBpZCAtPlxuICAgICAgICAgICAgYWJvcnQgY29ubiBpZDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChWZXJzaW9uX2kucmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuICAgICAgICBvcGVuIENvbnZlcnRcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBQaXBlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9yZXNwb25zZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICByZXR1cm4gKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgcSAtPiByZXR1cm4gKE9rIHEpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vayA9XG4gICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgICAgfCBPayAoRXJyb3IgZSkgLT5cbiAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICB8IE9rIChPayBvaykgLT4gT2sgKE9rIChjb252ZXJ0X29rIG9rKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHFcbiAgICAgICAgICA+Pj0/IGZ1biBxIC0+XG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBQaXBlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rOihmdW4gKHBpcGUsIGlkKSAtPiBjb252ZXJ0X3BpcGUgcGlwZSwgaWQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGRpc3BhdGNoX2l0ZXIgY29ubiBxIH5mID1cbiAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHFcbiAgICAgICAgICA+Pj0/IGZ1biBxIC0+XG4gICAgICAgICAgbGV0IGNvbnZlcnRfbWVzc2FnZSAobSA6IF8gUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQpID1cbiAgICAgICAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICAgICAgfCBDbG9zZWQgXyBhcyBjbG9zZWQgLT4gY2xvc2VkXG4gICAgICAgICAgICB8IFVwZGF0ZSB1IC0+IFVwZGF0ZSAoY29udmVydF9lbHQgdSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID1cbiAgICAgICAgICAgIFBpcGVfcnBjLmRpc3BhdGNoX2l0ZXIgcnBjIGNvbm4gcSB+ZjooZnVuIG1lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgZiAoY29udmVydF9tZXNzYWdlIG1lc3NhZ2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rOkZuLmlkXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGFib3J0IGNvbm4gaWQgPSBQaXBlX3JwYy5hYm9ydCBycGMgY29ubiBpZFxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXRcbiAgICAgICAgICAgICAgcmVnaXN0cnlcbiAgICAgICAgICAgICAgfmtleTp2ZXJzaW9uXG4gICAgICAgICAgICAgIH5kYXRhOih7IGFib3J0OyBkaXNwYXRjaDsgZGlzcGF0Y2hfaXRlciB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICA6ICByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJDYW5ub3QgdXNlIERpcmVjdCB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlXG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIFZlcnNpb25faS52ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKCBzdGF0ZSAqIHVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGVycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5zdGF0ZVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgU3RhdGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFN0YXRlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT4gRXJyb3IgZXhuXG4gICAgICAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgICB8IE9rIChPayAoc3RhdGUsIHBpcGUsIGlkKSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9zdGF0ZSBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgIHwgc3RhdGUgLT4gT2sgKE9rIChzdGF0ZSwgVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSBwaXBlLCBpZCkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlN0YXRlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwudXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBVcGRhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgbXNnXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IG1zZyA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgbXNnXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtc2dfb2ZfbW9kZWwgOiBNb2RlbC5tc2cgLT4gbXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tc2dfb2ZfbW9kZWwgcSkgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgTXNnLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICB8IE9rIHEgLT4gT25lX3dheS5kaXNwYXRjaCBycGMgY29ubiBxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQm90aF9jb252ZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBQbGFpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiBjYWxsZXJfcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9xdWVyeSAtPiBjYWxsZWVfcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5ScGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBDYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gQ2FsbGVlLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCA6IENhbGxlZS5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBDYWxsZXIucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcblxuICAgICAgKCogTm90ZTogQ2FsbGVyLnZlcnNpb25zIGlzIHRoZSBzYW1lIGFzIENhbGxlZS52ZXJzaW9ucywgc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICAgICAgIG9uZSB3ZSBjYWxsIGhlcmUuIFNhbWUgZm9yIFtycGNzXS4gKilcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlZV9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgY2FsbGVyX2Vycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGY6KGNhbGxlcl9yZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBjYWxsZXJfZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiAoY2FsbGVlX3Jlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IGNhbGxlZV9yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogTW9kZWwuQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5DYWxsZWUucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcblxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgPSBDYWxsZXIuYWJvcnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3N0YXRlXG4gICAgICB0eXBlIGNhbGxlcl91cGRhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9zdGF0ZSAqIGNhbGxlcl91cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfc3RhdGUgKiBjYWxsZWVfdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5TdGF0ZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3N0YXRlIDogc3RhdGUgLT4gTW9kZWwuQ2FsbGVyLnN0YXRlXG4gICAgICAgIHZhbCBzdGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLkNhbGxlci5lcnJvclxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZXIudXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLkNhbGxlZS5zdGF0ZVxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVlLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3N0YXRlID0gY2FsbGVyX21vZGVsX29mX3N0YXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlID0gY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIDogdXBkYXRlIC0+IE1vZGVsLkNhbGxlci51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfbXNnXG4gICAgICB0eXBlIGNhbGxlZV9tc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBjYWxsZXJfbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBjYWxsZWVfbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZ1xuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5PbmVfd2F5Lk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgbXNnX29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5tc2cgLT4gbXNnXG4gICAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9tc2cgOiBtc2cgLT4gQ2FsbGVlLm1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX21zZyA9IGNhbGxlZV9tb2RlbF9vZl9tc2dcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtc2dfb2ZfbW9kZWwgPSBtc2dfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuICBtb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBIYW5kbGVyX3Jlc3VsdFxuICBtb2R1bGUgU2VuZF9yZXN1bHQgPSBTZW5kX3Jlc3VsdFxuICBtb2R1bGUgUmVhZGVyID0gUmVhZGVyXG4gIG1vZHVsZSBXcml0ZXIgPSBXcml0ZXJcbmVuZFxuXG5sZXQgcmVjIHBpcGVfcmVhZCB0IGYgPVxuICBtYXRjaCViaW5kIFBpcGUudmFsdWVzX2F2YWlsYWJsZSB0IHdpdGhcbiAgfCBgRW9mIC0+IGYgYEVvZlxuICB8IGBPayAtPlxuICAgIChtYXRjaCBQaXBlLnJlYWRfbm93JyB0IHdpdGhcbiAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gcGlwZV9yZWFkIHQgZlxuICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHJlcyAtPiBmIHJlcylcbjs7XG5cbm1vZHVsZSB0eXBlIERBVEEgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBhZGRfdG9fYmlnYnVmZmVyIDogQmlnYnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19iaWdzdHJpbmcgOiB0IC0+IEJpZ3N0cmluZy50XG4gIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX2J1ZmZlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuUmVhZGVyLnRcbiAgICA7IGJ1ZmZlciA6IEJpZ2J1ZmZlci50XG4gICAgOyBtdXRhYmxlIGJ5dGVzX3JlYWQgOiBJbnQ2My50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9XG4gICAgeyBwaXBlOyBidWZmZXIgPSBCaWdidWZmZXIuY3JlYXRlIEhlYWRlci5sZW5ndGg7IGJ5dGVzX3JlYWQgPSBJbnQ2My56ZXJvIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUGlwZV9yZWFkZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfYnVmZmVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZV9yZWFkIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBieXRlc19yZWFkICh0IDogdCkgPSB0LmJ5dGVzX3JlYWRcblxuICBsZXQgcmVhZF9mb3JldmVyICh0IDogdCkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IChfLCBfKSBEZWZlcnJlZC5SZXN1bHQudCA9XG4gICAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gICAgKCogRGVxdWV1ZSB1bnRpbCBlbm91Z2ggZGF0YSAoW25lZWRdKSBpcyBhdmFpbGFibGUgYW5kIHRyeSByZWFkIG1lc3NhZ2VzICopXG4gICAgbGV0IHJlYyBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID1cbiAgICAgIG1hdGNoIFF1ZXVlLmRlcXVldWUgcXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFF1ZXVlIGlzIGVtcHR5IC0gd2UgbmVlZCB0byB3YWl0IGZvciBtb3JlIGRhdGEgKilcbiAgICAgICAgcmV0dXJuIChTZWNvbmQgbmVlZClcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgIGxldCBidWZmX2xlbiA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgIGxldCBkYXRhX2xlbiA9IERhdGEubGVuZ3RoIGRhdGEgaW5cbiAgICAgICAgaWYgYnVmZl9sZW4gPSAwICYmIGRhdGFfbGVuID49IG5lZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGhhdmUgZW5vdWdoIGRhdGEgYW5kIGJ1ZmZlciBpcyBlbXB0eS5cbiAgICAgICAgICAgICBUaGlzIGlzIHRoZSBjb21tb24gY2FzZSB3aGVyZSBldmVyeSBiaW5fcHJvdCBtZXNzYWdlIGlzIHNlbnQgaW4gaXRzIG93blxuICAgICAgICAgICAgIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGE6KERhdGEudG9fYmlnc3RyaW5nIGRhdGEpIH5sZW5ndGg6ZGF0YV9sZW4gcXVldWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogU2xvdyBwYXRoLiBXZSBoYXZlIHRvIGFjY3VtdWxhdGUgW0JpZ3N0cmluZy50XXMgKilcbiAgICAgICAgICBEYXRhLmFkZF90b19iaWdidWZmZXIgYnVmZmVyIGRhdGE7XG4gICAgICAgICAgaWYgQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgPj0gbmVlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhlcmUgaXMgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZlciAqKVxuICAgICAgICAgICAgbGV0IGRhdGEgPSBCaWdidWZmZXIudm9sYXRpbGVfY29udGVudHMgYnVmZmVyIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCBxdWV1ZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKiBXZSBuZWVkIG1vcmUgZGF0YSAtIGtlZXAgcHJvY2Vzc2luZyB0aGUgcXVldWUgKilcbiAgICAgICAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUpXG4gICAgKCogUmVhZCBhcyBtYW55IG1lc3NhZ2VzIGFzIHBvc3NpYmxlIGZyb20gdGhlIGN1cnJlbnQgZGF0YSAqKVxuICAgIGFuZCBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlID1cbiAgICAgIGlmIGxlbmd0aCA+PSBIZWFkZXIubGVuZ3RoXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHBheWxvYWRfbGVuID0gSGVhZGVyLnVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zIGluXG4gICAgICAgIGxldCB0b3RhbF9sZW4gPSBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9sZW4gaW5cbiAgICAgICAgaWYgbGVuZ3RoID49IHRvdGFsX2xlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICB0LmJ5dGVzX3JlYWQgPC0gSW50NjMuKHQuYnl0ZXNfcmVhZCArIG9mX2ludCBwYXlsb2FkX2xlbik7XG4gICAgICAgICAgbWF0Y2ggb25fbWVzc2FnZSBkYXRhIH5wb3M6KHBvcyArIEhlYWRlci5sZW5ndGgpIH5sZW46cGF5bG9hZF9sZW4gd2l0aFxuICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCB4IC0+XG4gICAgICAgICAgICBsZXQgcG9zID0gcG9zICsgdG90YWxfbGVuIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIC0gdG90YWxfbGVuIGluXG4gICAgICAgICAgICAoKiBNYWtlIHN1cmUgdGhhdCBhbGwgZGF0YSB3ZSd2ZSByZWFkIChhbmQgbm90IFwiY29uc3VtZWRcIikgZnJvbSB0aGUgcGlwZVxuICAgICAgICAgICAgICAgaXMga2VwdCBpbiB0aGUgYnVmZmVyLlxuICAgICAgICAgICAgICAgVGhhdCBpcyB0aGUgcmVtYWluaW5nIGJpdHMgaW4gW2RhdGFdIGFuZCBhbGwgY29udGVudHMgaW4gW3F1ZXVlXS5cbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgICAgICAgIFF1ZXVlLml0ZXIgcXVldWUgfmY6KGZ1biBkYXRhIC0+IERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gKEZpcnN0IHgpXG4gICAgICAgICAgfCAoQ29udGludWUgfCBXYWl0IF8pIGFzIGNvbnRpbnVlX29yX3dhaXQgLT5cbiAgICAgICAgICAgIGxldCViaW5kICgpID1cbiAgICAgICAgICAgICAgbWF0Y2ggY29udGludWVfb3Jfd2FpdCB3aXRoXG4gICAgICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCBfIC0+XG4gICAgICAgICAgICAgICAgKCogSW1wb3NzaWJsZTogdGhpcyBicmFuY2ggZG9lcyBub3QgY29udGFpbiBbU3RvcCBfXSAqKVxuICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IENvbnRpbnVlIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgaWYgbGVuZ3RoID4gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAoKiBQcm9jZXNzIHRoZSByZXN0IG9mIHRoZSBkYXRhLlxuICAgICAgICAgICAgICAgICBNb3JlIHRoYW4gb25lIGJpbl9wcm90IG1lc3NhZ2Ugd2FzIHNlbnQgaW5zaWRlIHRoZSB3ZWJzb2NrZXQgZnJhbWUgKilcbiAgICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3MgfmRhdGEgfmxlbmd0aCBxdWV1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBsZW5ndGggPSAwICopXG4gICAgICAgICAgICAgICgqIEFsbCBkYXRhIHdhcyByZWFkIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgICBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOkhlYWRlci5sZW5ndGggfnBvcyB+bGVuZ3RoOjAgfnF1ZXVlIH5kYXRhKVxuICAgICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6dG90YWxfbGVuIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGEpXG4gICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhXG4gICAgYW5kIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhID1cbiAgICAgIGlmIGxlbmd0aCA9IDBcbiAgICAgIHRoZW4gQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLnN1YiBkYXRhIH5wb3MgfmxlbjpsZW5ndGggaW5cbiAgICAgICAgQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlcjtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmcgYnVmZmVyIGRhdGEpXG4gICAgYW5kIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQgfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSA9XG4gICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWVcbiAgICBpblxuICAgIGxldCByZWMgd2FpdF9mb3JfcmVhZCB+bmVlZCA9XG4gICAgICBwaXBlX3JlYWQgdC5waXBlIChmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gcmV0dXJuIChFcnJvciBgRW9mKVxuICAgICAgICB8IGBPayBxdWV1ZSAtPiBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlKVxuICAgIGFuZCBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlIG5leHQgPVxuICAgICAgb25fZW5kX29mX2JhdGNoICgpO1xuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IEZpcnN0IHJlc3VsdCAtPiByZXR1cm4gKE9rIHJlc3VsdClcbiAgICAgIHwgU2Vjb25kIG5lZWQgLT4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGluXG4gICAgbGV0IHN0YXJ0X3Byb2Nlc3NpbmdfZXhpc3RpbmdfZGF0YSB+ZGF0YSB+bGVuZ3RoID1cbiAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCAoUXVldWUuY3JlYXRlICgpKSA+Pj0gZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZVxuICAgIGluXG4gICAgKCogV2UgZWl0aGVyIHN0YXJ0IGJ5XG4gICAgICAgLSBwcm9jZXNzaW5nIHJlbWFpbmluZyBiaXRzIGluIHRoZSBidWZmZXJcbiAgICAgICAtIG9yIHdhaXRpbmcgZm9yIG1vcmUgZGF0YSBpbiB0aGUgcGlwZSAqKVxuICAgIGxldCBuZWVkID0gSGVhZGVyLmxlbmd0aCBpblxuICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgIGlmIEludC4oIDwgKSBsZW5ndGggbmVlZFxuICAgIHRoZW4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGVsc2Ugc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5sZW5ndGggfmRhdGE6KEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRGF0YS50XG5cbiAgICBsZXQgb2ZfYmlnc3RyaW5nID0gRGF0YS5vZl9iaWdzdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX21vbml0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBpcGUgOiAnYSBQaXBlLldyaXRlci50XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgOyBtdXRhYmxlIGJ5dGVzX3dyaXR0ZW4gOiBJbnQ2My50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9IHsgcGlwZTsgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlICgpOyBieXRlc193cml0dGVuID0gSW50NjMuemVybyB9XG5lbmRcblxuKCogV2UgZG9uJ3QgcGVyZm9ybSBhbnkgYnVmZmVyaW5nIGhlcmUuXG4gICBBIG1lc3NhZ2UgaXMgY29uc2lkZXIgdG8gYmUgZmx1c2hlZCBhcyBzb29uIGFzIGl0IGVudGVycyB0aGUgcGlwZS4gKilcbm1vZHVsZSBQaXBlX3dyaXRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9tb25pdG9yLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZSB0LnBpcGU7XG4gICAgRGVmZXJyZWQudW5pdFxuICA7O1xuXG4gIGxldCBpc19jbG9zZWQgKHQgOiB0KSA9IFBpcGUuaXNfY2xvc2VkIHQucGlwZVxuICBsZXQgbW9uaXRvciAodCA6IHQpID0gdC5tb25pdG9yXG5cbiAgKCogQmVjYXVzZSB3ZSBkb24ndCBtYWludGFpbiBhbnkgYnVmZmVyLCB0aGVyZSBhcmUgbm8gcGVuZGluZyB3cml0ZXMgKilcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChfIDogdCkgPSAwXG4gIGxldCBieXRlc193cml0dGVuICh0IDogdCkgPSB0LmJ5dGVzX3dyaXR0ZW5cbiAgbGV0IHN0b3BwZWQgKHQgOiB0KSA9IFBpcGUuY2xvc2VkIHQucGlwZVxuXG4gICgqIFdlIGNvbnNpZGVyIHRoYXQgYSBtZXNzYWdlIGlzIGZsdXNoZWQgYXMgc29vbiBhcyBpdCByZWFjaGVzIHRoZSB1bmRlcmxpbmluZ1xuICAgICB0cmFuc3BvcnQuICopXG4gIGxldCBmbHVzaGVkIChfIDogdCkgPSBEZWZlcnJlZC51bml0XG4gIGxldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRcbiAgbGV0IHNlbnRfcmVzdWx0IHggOiBfIFNlbmRfcmVzdWx0LnQgPSBTZW50IHhcblxuICBsZXQgY2hlY2tfY2xvc2VkICh0IDogdCkgZiA9XG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB0LnBpcGUpIHRoZW4gZiAoKSBlbHNlIFNlbmRfcmVzdWx0LkNsb3NlZFxuICA7O1xuXG4gIGxldCBpbmNyX2J5dGVzX3dyaXR0ZW4gKHQgOiB0KSBudW1fYnl0ZXMgPVxuICAgIHQuYnl0ZXNfd3JpdHRlbiA8LSBJbnQ2My4odC5ieXRlc193cml0dGVuICsgb2ZfaW50IG51bV9ieXRlcylcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdCB0IHdyaXRlciB4ID1cbiAgICBjaGVja19jbG9zZWQgdCAoZnVuICgpIC0+XG4gICAgICBsZXQgYnVmID0gQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgfmhlYWRlcjp0cnVlIHdyaXRlciB4IGluXG4gICAgICBsZXQgZGF0YSA9IERhdGEub2ZfYmlnc3RyaW5nIGJ1ZiBpblxuICAgICAgaW5jcl9ieXRlc193cml0dGVuIHQgKERhdGEubGVuZ3RoIGRhdGEpO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSBkYXRhO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0XG4gICAgICAgICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKVxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuOnBheWxvYWRfc2l6ZVxuICAgID1cbiAgICBjaGVja19jbG9zZWQgdCAoZnVuICgpIC0+XG4gICAgICAoKiBXcml0ZSB0aGUgc2l6ZSBoZWFkZXIgbWFudWFsbHkgYW5kIGNvbmNhdGVuYXRlIHRoZSB0d28gKilcbiAgICAgIGxldCBkYXRhX3NpemUgPSB3cml0ZXIuc2l6ZSB4IGluXG4gICAgICBsZXQgZGF0YSA9IEJpZ3N0cmluZy5jcmVhdGUgKGRhdGFfc2l6ZSArIEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX3NpemUpIGluXG4gICAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3M6MCAoZGF0YV9zaXplICsgcGF5bG9hZF9zaXplKTtcbiAgICAgIGxldCBkc3RfcG9zID0gd3JpdGVyLndyaXRlIGRhdGEgfnBvczpIZWFkZXIubGVuZ3RoIHggaW5cbiAgICAgIEJpZ3N0cmluZy5ibGl0IH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OmRhdGEgfmRzdF9wb3MgfmxlbjpwYXlsb2FkX3NpemU7XG4gICAgICBsZXQgZGF0YSA9IERhdGEub2ZfYmlnc3RyaW5nIGRhdGEgaW5cbiAgICAgIGluY3JfYnl0ZXNfd3JpdHRlbiB0IChEYXRhLmxlbmd0aCBkYXRhKTtcbiAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0LnBpcGUgZGF0YTtcbiAgICAgIHNlbnRfcmVzdWx0ICgpKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgbWF0Y2ggc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQgd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gd2l0aFxuICAgIHwgU2VudCAoKSAtPiBzZW50X3Jlc3VsdCBEZWZlcnJlZC51bml0XG4gICAgfCAoQ2xvc2VkIHwgTWVzc2FnZV90b29fYmlnIF8pIGFzIHIgLT4gclxuICA7O1xuZW5kXG5cbm1vZHVsZSBCaWdzdHJpbmdfZGF0YSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gIGxldCBhZGRfdG9fYmlnYnVmZmVyID0gQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmdcbiAgbGV0IHRvX2JpZ3N0cmluZyB4ID0geFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSB4XG5lbmRcblxubW9kdWxlIFN0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHhcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gQmlnc3RyaW5nLnRvX3N0cmluZyB4XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlciA9IFBpcGVfcmVhZGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBCaWdzdHJpbmdfcGlwZV93cml0ZXIgPSBQaXBlX3dyaXRlciAoQmlnc3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKFN0cmluZ19kYXRhKVxubW9kdWxlIFN0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChTdHJpbmdfZGF0YSlcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCaWdzdHJpbmcgOiBiaWdzdHJpbmcgdFxuXG4gIGxldCBzdHJpbmcgPSBTdHJpbmdcbiAgbGV0IGJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xuZW5kXG5cbmxldCBtYWtlX3JlYWRlciAodHlwZSBhKSAoeCA6IGEgS2luZC50KSAocmVhZGVyIDogYSBQaXBlLlJlYWRlci50KSA9XG4gIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBLaW5kLlN0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIFN0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG4gIHwgS2luZC5CaWdzdHJpbmcgLT4gUmVhZGVyLnBhY2sgKG1vZHVsZSBCaWdzdHJpbmdfcGlwZV9yZWFkZXIpIHJlYWRlclxuOztcblxubGV0IG1ha2Vfd3JpdGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpICh3cml0ZXIgOiBhIFBpcGUuV3JpdGVyLnQpID1cbiAgbGV0IHdyaXRlciA9IFBpcGVfYW5kX21vbml0b3IuY3JlYXRlIHdyaXRlciBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBLaW5kLlN0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIFN0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG4gIHwgS2luZC5CaWdzdHJpbmcgLT4gV3JpdGVyLnBhY2sgKG1vZHVsZSBCaWdzdHJpbmdfcGlwZV93cml0ZXIpIHdyaXRlclxuOztcblxubGV0IGNyZWF0ZSBraW5kIHJlYWRlciB3cml0ZXIgPVxuICB7IFRyYW5zcG9ydC5yZWFkZXIgPSBtYWtlX3JlYWRlciBraW5kIHJlYWRlcjsgd3JpdGVyID0gbWFrZV93cml0ZXIga2luZCB3cml0ZXIgfVxuOztcblxuKCogVGVzdGluZyAqKVxuXG5tb2R1bGUgdHlwZSBUcmFuc3BvcnRfcmVhZGVyID0gc2lnXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUcmFuc3BvcnQuUmVhZGVyLlMgd2l0aCB0eXBlIHQgPSBGb3JfdGVzdGluZy50IFBpcGVfYW5kX2J1ZmZlci50XG5lbmRcblxubW9kdWxlIFRlc3RfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcblxuICBsZXQgb25fbWVzc2FnZSA/KG1lc3NhZ2UgPSBkZWZhdWx0X21lc3NhZ2UpIG9uX21lc3NhZ2VfY291bnQgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgb25fbWVzc2FnZV9jb3VudCA6PSAhb25fbWVzc2FnZV9jb3VudCArIDE7XG4gICAgWyV0ZXN0X3Jlc3VsdDogQmlnc3RyaW5nLnRdIChCaWdzdHJpbmcuc3ViIGJ1ZmZlciB+cG9zIH5sZW4pIH5leHBlY3Q6bWVzc2FnZTtcbiAgICBIYW5kbGVyX3Jlc3VsdC5Db250aW51ZVxuICA7O1xuXG4gIGxldCBvbl9lbmRfb2ZfYmF0Y2ggb25fZW5kX29mX2JhdGNoX2NvdW50ICgpID0gaW5jciBvbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgbGV0IHdhaXQgKCkgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLkV4cGVydC5ydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpXG5cbiAgbGV0IHJ1bl90ZXN0IHJ1biB2ZXJpZnkgPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2VfY291bnQgPSByZWYgMCBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgPSByZWYgMCBpblxuICAgIGxldCBvbl9tZXNzYWdlID0gb25fbWVzc2FnZSBvbl9tZXNzYWdlX2NvdW50IGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgaW5cbiAgICBpZ25vcmUgKFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyIHJlYWRlciB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoKTtcbiAgICB3YWl0ICgpO1xuICAgIHJ1biAoZnVuIHggLT4gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpKTtcbiAgICB3YWl0ICgpO1xuICAgIHZlcmlmeSB+b25fbWVzc2FnZV9jb3VudCB+b25fZW5kX29mX2JhdGNoX2NvdW50XG4gIDs7XG5cbiAgbGV0IHZlcmlmeSB+b25fbWVzc2FnZV9jb3VudCB+b25fZW5kX29mX2JhdGNoX2NvdW50IG1lc3NhZ2VfY291bnQgYmF0Y2hfY291bnQgPVxuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gIW9uX21lc3NhZ2VfY291bnQgfmV4cGVjdDptZXNzYWdlX2NvdW50O1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gIW9uX2VuZF9vZl9iYXRjaF9jb3VudCB+ZXhwZWN0OmJhdGNoX2NvdW50XG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG5cbiAgKCogTm90IGVub3VnaCBkYXRhLCB3ZSBuZWVkIHRvIGFjY3VtdWxhdGUgKilcbiAgbGV0IHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIikgaW5cbiAgICBsZXQgbWVzc2FnZV9yYXcgPSBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIChCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2VfcmF3KTtcbiAgICB3cml0ZSBidWY7XG4gICAgd2FpdCAoKTtcbiAgICBsZXQgbXNnX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcgaW5cbiAgICBsZXQgc3BsaXRfYXQgPSBtc2dfbGVuIC8gMiBpblxuICAgIGxldCBwYXJ0MSA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczowIH5sZW46c3BsaXRfYXQgaW5cbiAgICBsZXQgcGFydDIgPSBCaWdzdHJpbmcuc3ViIG1lc3NhZ2VfcmF3IH5wb3M6c3BsaXRfYXQgfmxlbjoobXNnX2xlbiAtIHNwbGl0X2F0KSBpblxuICAgIHdyaXRlIHBhcnQxO1xuICAgIHdhaXQgKCk7XG4gICAgd3JpdGUgcGFydDJcbiAgOztcblxuICAoKiBUb28gbXVjaCBkYXRhLCB3ZSBuZWVkIHRvIGxvb3Agd2l0aGluZyB0aGUgc2FtZSBiYXRjaCAqKVxuICBsZXQgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgd3JpdGUgdHdvX21zZ1xuICA7O1xuXG4gIGxldCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBvbmVfbXNnID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIGxldCB0d29fbXNnID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tc2c7IG9uZV9tc2cgXSBpblxuICAgIGZvciBpID0gMCB0byBCaWdzdHJpbmcubGVuZ3RoIHR3b19tc2cgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbXNnIH5wb3M6aSB+bGVuOjEpO1xuICAgICAgd2FpdCAoKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18xX2NodW5rICh2ZXJpZnkgMSAxKVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSAyIDEpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfM19jaHVuayAodmVyaWZ5IDEgMylcbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfMV9jaHVuayAodmVyaWZ5IDIgMSlcbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rICh2ZXJpZnkgMiAzNClcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG4gICAgaW5cbiAgICBydW5fdGVzdCBmICh2ZXJpZnkgNyA0MClcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiY2FuIGNhbGwgcmVhZF9mb3JldmVyIG11bHRpcGxlIHRpbWVzXCIgPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpIGluXG4gICAgbGV0IHdyaXRlIHggPSBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkgaW5cbiAgICBsZXQgbnVtID0gcmVmIDAgaW5cbiAgICBsZXQgc3RvcF9hZnRlcl9vbl9tZXNzYWdlIGJ1ZmZlciB+cG9zIH5sZW4gPVxuICAgICAgaW5jciBudW07XG4gICAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDpkZWZhdWx0X21lc3NhZ2U7XG4gICAgICBIYW5kbGVyX3Jlc3VsdC5TdG9wICgpXG4gICAgaW5cbiAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgIFBpcGUuY2xvc2Ugd3JpdGVyO1xuICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAobGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIGxldCViaW5kIHggPVxuICAgICAgICAgVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgIH5vbl9tZXNzYWdlOnN0b3BfYWZ0ZXJfb25fbWVzc2FnZVxuICAgICAgICAgICB+b25fZW5kX29mX2JhdGNoXG4gICAgICAgaW5cbiAgICAgICBhc3NlcnQgKFJlc3VsdC5pc19vayB4KTtcbiAgICAgICBEZWZlcnJlZC51bml0KTtcbiAgICB3YWl0ICgpO1xuICAgIFsldGVzdF9yZXN1bHQ6IEludC50XSB+ZXhwZWN0OjIgIW51bVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlRlc3RfcmVhZGVyX3N0cmluZ1wiID0gKG1vZHVsZSBUZXN0X3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCV0ZXN0X21vZHVsZSBcIlRlc3RfcmVhZGVyX2JpZ3N0cmluZ1wiID0gKG1vZHVsZSBUZXN0X3JlYWRlciAoQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSlcblxubW9kdWxlIEJlbmNoX3JlYWRlciAoVHJhbnNwb3J0X3JlYWRlciA6IFRyYW5zcG9ydF9yZWFkZXIpID0gc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0X3JlYWRlci5Gb3JfdGVzdGluZ1xuXG4gIGxldCBkZWZhdWx0X21lc3NhZ2UgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIFwiRk9PQkFSMTIzXCJcblxuICBsZXQgY3JlYXRlX21lc3NhZ2VfYnVmIChtZXNzYWdlIDogQmlnc3RyaW5nLnQpIDogQmlnc3RyaW5nLnQgPVxuICAgIGxldCBtZXNzYWdlX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZSBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIChIZWFkZXIubGVuZ3RoICsgbWVzc2FnZV9sZW4pIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCBtZXNzYWdlX2xlbjtcbiAgICBCaWdzdHJpbmcuYmxpdFxuICAgICAgfnNyYzptZXNzYWdlXG4gICAgICB+ZHN0OmJ1ZlxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6SGVhZGVyLmxlbmd0aFxuICAgICAgfmxlbjptZXNzYWdlX2xlbjtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlX21lc3NhZ2UgKCkgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlXG4gIGxldCBvbmVfbWVzc2FnZSA9IGNyZWF0ZV9tZXNzYWdlICgpXG4gIGxldCB0d29fbWVzc2FnZXMgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21lc3NhZ2U7IG9uZV9tZXNzYWdlIF1cblxuICBsZXQgb25lX21lc3NhZ2VfcDEsIG9uZV9tZXNzYWdlX3AyID1cbiAgICBsZXQgbXNnX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggb25lX21lc3NhZ2UgaW5cbiAgICBsZXQgc3BsaXRfYXQgPSBtc2dfbGVuIC8gMiBpblxuICAgIGxldCBwYXJ0MSA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczowIH5sZW46c3BsaXRfYXQgaW5cbiAgICBsZXQgcGFydDIgPSBCaWdzdHJpbmcuc3ViIG9uZV9tZXNzYWdlIH5wb3M6c3BsaXRfYXQgfmxlbjoobXNnX2xlbiAtIHNwbGl0X2F0KSBpblxuICAgIHBhcnQxLCBwYXJ0MlxuICA7O1xuXG4gIGxldCBvbl9tZXNzYWdlIF9idWZmZXIgfnBvczpfIH5sZW46XyA9IEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIGxldCBvbl9lbmRfb2ZfYmF0Y2ggKCkgPSAoKVxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9tZXNzYWdlID0gb25fbWVzc2FnZSBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggPSBvbl9lbmRfb2ZfYmF0Y2ggaW5cbiAgICBpZ25vcmUgKFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyIHJlYWRlciB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoKTtcbiAgICB3YWl0ICgpO1xuICAgIGZvciBfID0gMCB0byAxMDAgZG9cbiAgICAgIHJ1biAoZnVuIHggLT4gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpKVxuICAgIGRvbmU7XG4gICAgd2FpdCAoKVxuICA7O1xuXG4gIGxldCB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgb25lX21lc3NhZ2VcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgYnVmID0gY3JlYXRlX21lc3NhZ2VfYnVmIChCaWdzdHJpbmcub2Zfc3RyaW5nIFwiXCIpXG5cbiAgbGV0IHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGUgPVxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggb25lX21lc3NhZ2UpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3cml0ZSBvbmVfbWVzc2FnZV9wMTtcbiAgICB3cml0ZSBvbmVfbWVzc2FnZV9wMlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgdHdvX21lc3NhZ2VzXG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21lc3NhZ2VzIC0gMSBkb1xuICAgICAgd3JpdGUgKEJpZ3N0cmluZy5zdWIgdHdvX21lc3NhZ2VzIH5wb3M6aSB+bGVuOjEpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzFfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmtcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ18xX2NodW5rXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlXG4gICAgaW5cbiAgICBydW5fdGVzdCBmXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfM19jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfM19jaHVua1xuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ18xX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnX29uZV9ieXRlXCIgPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmtcblxuICBsZXQlYmVuY2ggXCJtdWx0aVwiID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpO1xuICAgICAgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG4gICAgaW5cbiAgICBydW5fdGVzdCBmXG4gIDs7XG5lbmRcblxubGV0JWJlbmNoX21vZHVsZSBcIlRlc3RfcmVhZGVyX3N0cmluZ1wiID0gKG1vZHVsZSBCZW5jaF9yZWFkZXIgKFN0cmluZ19waXBlX3JlYWRlcikpXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVmVyc2lvbmVkX3JwYy5Db25uZWN0aW9uX3dpdGhfbWVudS50XG5cbiAgICBsZXQgcnBjX2Nvbm5lY3Rpb24gPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LmNvbm5lY3Rpb25cbiAgICBsZXQgY2xvc2UgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCAocnBjX2Nvbm5lY3Rpb24gdClcbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIChycGNfY29ubmVjdGlvbiB0KVxuICBlbmQpXG5cbm1vZHVsZSBScGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBScGMuQ29ubmVjdGlvbi50XG5cbiAgICBsZXQgY2xvc2UgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlIHRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBScGMuQ29ubmVjdGlvbi5pc19jbG9zZWQgdFxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgdFxuICBlbmQpXG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IFZlcnNpb25lZF9ycGNcbm1vZHVsZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24gPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25cbm1vZHVsZSBQaXBlX3RyYW5zcG9ydCA9IFBpcGVfdHJhbnNwb3J0XG5tb2R1bGUgUnBjX2Vycm9yID0gUnBjX2Vycm9yXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IFJwY19yZXN1bHRcbm1vZHVsZSBScGNfc2hhcGVzID0gUnBjX3NoYXBlc1xubW9kdWxlIE9yX25vdF9hdXRob3JpemVkID0gT3Jfbm90X2F1dGhvcml6ZWRcblxubW9kdWxlIFJwY19tZXRhZGF0YSA6XG4gIG1vZHVsZSB0eXBlIG9mIFJwY19tZXRhZGF0YSB3aXRoIG1vZHVsZSBQcml2YXRlIDo9IFJwY19tZXRhZGF0YS5Qcml2YXRlID1cbiAgUnBjX21ldGFkYXRhXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gUnBjLlN0YWJsZVxuZW5kXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG4gIG1vZHVsZSBQcm90b2NvbCA9IFByb3RvY29sXG4gIG1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcblxuICBsZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IENvbm5lY3Rpb24uZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dFxuZW5kXG4iLCJvcGVuIFN0cmluZ1xuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cblxuKCogTm90IHRhaWwgcmVjdXJzaXZlIGZvciBcInBlcmZvcm1hbmNlXCIsIHBsZWFzZSBjaG9vc2UgbG93IHZhbHVlcyBmb3JcbiAgIFttYXhdLiBUaGUgaWRlYSBpcyB0aGF0IG1heCBpcyBhbHdheXMgc21hbGwgYmVjYXVzZSBpdCdzIGhhcmRcbiAgIGNvZGUgKilcbmxldCBzcGxpdF9jaGFyX2JvdW5kZWQgc3RyIH5vbiB+bWF4ID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtzdHJdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3Agb2Zmc2V0IHRva2VucyA9XG4gICAgICBpZiB0b2tlbnMgPSBtYXggLSAxXG4gICAgICB0aGVuIFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgICBlbHNlXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICAgIFwiXCI6Oihsb29wIChvZmZzZXQgKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHRva2VuID0gU3RyaW5nLnN1YiBzdHIgb2Zmc2V0IChpbmRleCAtIG9mZnNldCkgaW5cbiAgICAgICAgICAgIHRva2VuOjoobG9vcCAoaW5kZXggKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgaW4gbG9vcCAwIDBcblxubGV0IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5sZXQgb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxubGV0IGZ1bGxfc3BsaXQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHNlcCA9IG9mX2NoYXIgb24gaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoc2VwOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wIChzZXA6OnRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICAgIHRoZW4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICAgICAgZWxzZSBhY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuKCogY29weWluZyBjb3JlJ3MgY29udmVudGlvbiBmb3IgU3RyaW5nLnNwbGl0IGJ1dCB3aXRoIGFuIG9wdGlvbmFsIG1heFxuICAgYXJndW1lbnQgKilcbmxldCBzcGxpdCA/bWF4IHMgfm9uID1cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHMgfm9uXG4gIHwgU29tZSBtYXggLT4gICAgICAgICAgICAgICAgICgqIGFzc2VydCAobWF4IDwgMTAwKTsgKilcbiAgICBzcGxpdF9jaGFyX2JvdW5kZWQgcyB+b24gfm1heFxuXG5sZXQgcmluZGV4X2Zyb21fb24gcyB+b2Zmc2V0IH5vbiA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIG9uIHMuW2ldIHRoZW4gaVxuICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gIGluIGxvb3Agb2Zmc2V0XG5cbmxldCB0cmltX2xlZnRfc3ViIHMgfnBvcyB+bGVuIH5jaGFycyA9XG4gIGxldCBzdGFydF9wb3MgPVxuICAgIGxldCBmaW5hbCA9IHBvcyArIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsYXN0X2NoYXIgaSA9XG4gICAgICBpZiBpID0gZmluYWwgdGhlbiBsYXN0X2NoYXJcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGNoYXJzIHMuW2ldIHRoZW4gbG9vcCAoaSArIDEpIChpICsgMSlcbiAgICAgIGVsc2UgbGFzdF9jaGFyXG4gICAgaW4gbG9vcCBwb3MgcG9zXG4gIGluXG4gIGxldCBuZXdfbGVuID0gbGVuIC0gKHN0YXJ0X3BvcyAtIHBvcykgaW5cbiAgU3RyaW5nLnN1YiBzIHN0YXJ0X3BvcyBuZXdfbGVuXG5cbmxldCBzcGxpdF90cmltX2xlZnQgc3RyIH5vbiB+dHJpbSA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tX29uIHN0ciB+b2Zmc2V0IH5vbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gdHJpbV9sZWZ0X3N1YiBzdHIgfnBvczooaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmxlbjoob2Zmc2V0IC0gaW5kZXgpIH5jaGFyczp0cmltIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6MCB+bGVuOihvZmZzZXQgKyAxKSB+Y2hhcnM6dHJpbSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5leGNlcHRpb24gRm91bmRfaW50IG9mIGludFxuXG5sZXQgZmlyc3RfY2hhcl9uZSBzIGMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIHMuWzBdIDw+IGNcblxubGV0IHRyaW1fbGVmdCBzID1cbiAgaWYgZmlyc3RfY2hhcl9uZSBzICcgJyB0aGVuIHNcbiAgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICB0cnlcbiAgICAgIGZvciBpPTAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiAnICcgdGhlbiByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgICBkb25lO1xuICAgICAgXCJcIlxuICAgIHdpdGggRm91bmRfaW50IG5vbl9zcGFjZSAtPlxuICAgICAgc3ViIHMgbm9uX3NwYWNlIChsZW4gLSBub25fc3BhY2UpXG5cbmxldCBzdWJzdHJfZXEgPyhzdGFydD0wKSBzIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcGF0dGVybiAtIDEgZG9cbiAgICAgIGlmIHMuW2kgKyBzdGFydF0gPD4gcGF0dGVybi5baV0gdGhlbiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggXyAtPiBmYWxzZVxuXG5sZXQgZmluZF9mcm9tID8oc3RhcnQ9MCkgc3RyIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSBzdGFydCB0byAoU3RyaW5nLmxlbmd0aCBzdHIpIC0gKFN0cmluZy5sZW5ndGggcGF0dGVybikgZG9cbiAgICAgIGlmIHN1YnN0cl9lcSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gdGhlblxuICAgICAgICByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgZG9uZTtcbiAgICBOb25lXG4gIHdpdGhcbiAgfCBGb3VuZF9pbnQgaSAtPiBTb21lIGlcbiAgfCAgXyAtPiBOb25lXG5cbmxldCBmaW5kX21pbiBsIH5mID1cbiAgbGV0IHJlYyBsb29wIHggZnggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gU29tZSAoeCwgZngpXG4gICAgfCB4Jzo6eHMgLT5cbiAgICAgIGxldCBmeCcgPSBmIHgnIGluXG4gICAgICBpZiBmeCcgPCBmeCB0aGVuIGxvb3AgeCcgZngnIHhzXG4gICAgICBlbHNlIGxvb3AgeCBmeCB4c1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeDo6eHMgLT4gbG9vcCB4IChmIHgpIHhzXG5cbmxldCByZXBsYWNlX2FsbCBzdHIgfnBhdHRlcm4gfndpdGhfID1cbiAgbGV0IChzbGVuLCBwbGVuKSA9IFN0cmluZy4obGVuZ3RoIHN0ciwgbGVuZ3RoIHBhdHRlcm4pIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgfCBTb21lIGogLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgbG9vcCAoaiArIHBsZW4pXG4gIGluIGxvb3AgMFxuXG5leGNlcHRpb24gRm91bmRfcmVwbGFjZSBvZiBpbnQgKiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IHJlcGxhY2VfYWxsX2Fzc29jIHN0ciB0YmwgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gc2xlbiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICBlbHNlXG4gICAgICBsZXQgciA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGxldCBlID1cbiAgICAgICAgICAgIGZpbmRfbWluIHRibCB+ZjooZnVuIChwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAgIC0+IG1heF9pbnRcbiAgICAgICAgICAgICAgfCBTb21lIGogd2hlbiBqID0gaSAtPiByYWlzZSAoRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pKVxuICAgICAgICAgICAgICB8IFNvbWUgaiAtPiBmb3VuZCA6PSB0cnVlOyBqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKChwYXR0ZXJuLCB3aXRoXyksIGopIHdoZW4gIWZvdW5kIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgd2l0aCBGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICBpblxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICAgIHwgU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICAgIGxvb3AgKGogKyBTdHJpbmcubGVuZ3RoIHBhdHRlcm4pXG4gIGluIGxvb3AgMFxuXG5sZXQgaXRlcmkgZiBsID1cbiAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHg6OnhzIC0+IChmIGkgeCk7IGxvb3AgKHN1Y2MgaSkgeHNcbiAgaW4gbG9vcCAwIGxcblxubGV0IG9mX2xpc3QgeHMgPVxuICBsZXQgbCA9IExpc3QubGVuZ3RoIHhzIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgaXRlcmkgKGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHMgaSBjKSB4cztcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPSAtMSB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIGxvb3AgKHMuW2ldIDo6IGFjYykgKHByZWQgaSlcbiAgaW4gbG9vcCBbXSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBieXRlcyBpIGEuKGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnl0ZXNcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChTdHJpbmcuZ2V0IHMpXG5cbigqIHJpcHBlZCBvZmYgZnJvbSBvbmUgb2YgZGJ1ZW56bGkncyBsaWJzICopXG5sZXQgY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQuY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIGVuZCB3aXRoIFtpXSB0cnlpbmcgdG8gbWF0Y2ggdGhlXG4gICAgICAgICBmaXJzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2UgdmVyaWZ5IHRoYXRcbiAgICAgICAgIHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdLiBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlXG4gICAgICAgICBjb250aW51ZSB0byBsb29rIGZvciBbb25dIHdpdGggW2ldLiBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlXG4gICAgICAgICBsb29wIGFuZCBleHRyYWN0IGEgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGVcbiAgICAgICAgIHBvc2l0aW9uIGJlZm9yZSB0aGUgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvblxuICAgICAgICAgYWZ0ZXIgdGhlIFtvbl0gd2UgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gSWYgW2ldIGlzIHN1Y2ggdGhhdCBub1xuICAgICAgICAgc2VwYXJhdG9yIGNhbiBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoXG4gICAgICAgICBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSArIHNlcF9tYXggPD0gc19tYXgpIGRvXG4gICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmUgcyAoIWkgKyAhaykgaXNcbiAgICAgICAgICAgICBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIDAgdGhlbiBpbmNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgayA6PSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrIDw9IHNlcF9tYXggJiYgdW5zYWZlX2dldCBzICghaSArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBpbmNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrIDw9IHNlcF9tYXggdGhlbiAoKiBubyBtYXRjaCAqKSBpbmNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyBzZXBfbWF4ICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgcmN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LnJjdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIHNfbWF4IGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgZW5kIG9mIFtzXSB0byB0aGUgYmVnaW5uaW5nIHdpdGggW2ldIHRyeWluZyB0b1xuICAgICAgICAgbWF0Y2ggdGhlIGxhc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlXG4gICAgICAgICB2ZXJpZnkgdGhhdCB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXSAod2UgZG8gdGhhdFxuICAgICAgICAgYmFja3dhcmRzKS4gIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2UgY29udGludWUgdG8gbG9vayBmb3IgW29uXVxuICAgICAgICAgd2l0aCBbaV0uICBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlIGxvb3AgYW5kIGV4dHJhY3QgYVxuICAgICAgICAgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZVxuICAgICAgICAgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgW29uXSB3ZVxuICAgICAgICAgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gIElmIFtpXSBpcyBzdWNoIHRoYXQgbm8gc2VwYXJhdG9yIGNhblxuICAgICAgICAgYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaCBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSA+PSBzZXBfbWF4KSBkb1xuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIHNlcF9tYXggdGhlbiBkZWNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICBzIChzZXBfc3RhcnQgKyAhaykgaXMgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICAgIGxldCBzZXBfc3RhcnQgPSAhaSAtIHNlcF9tYXggaW5cbiAgICAgICAgICAgIGsgOj0gc2VwX21heCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPj0gMCAmJiB1bnNhZmVfZ2V0IHMgKHNlcF9zdGFydCArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBkZWNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrID49IDAgdGhlbiAoKiBubyBtYXRjaCAqKSBkZWNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIHNlcF9tYXggLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgbGV0IHByZWZpeF9sID0gU3RyaW5nLmxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHN0cmluZ19sID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHByZWZpeF9sID4gc3RyaW5nX2wgdGhlbiBOb25lXG4gIGVsc2VcbiAgICB0cnlcbiAgICAgIGZvciBpID0gMCB0byBwcmVmaXhfbCAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gcHJlZml4LltpXSB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBkb25lO1xuICAgICAgU29tZSAoU3RyaW5nLnN1YiBzIHByZWZpeF9sIChzdHJpbmdfbCAtIHByZWZpeF9sKSlcbiAgICB3aXRoIF8gLT4gTm9uZVxuXG5sZXQgZHJvcCBzIG4gPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBuID49IGxcbiAgdGhlbiBcIlwiXG4gIGVsc2UgU3RyaW5nLnN1YiBzIG4gKGwgLSBuKVxuXG5sZXQgdGFrZSBzIG4gPVxuICBpZiBuID49IFN0cmluZy5sZW5ndGggc1xuICB0aGVuIHNcbiAgZWxzZSBTdHJpbmcuc3ViIHMgMCBuXG4iLCJ0eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IGJpZ3N0cmluZ1xuXG5sZXQgY3JlYXRlIHNpemUgPSBCaWdhcnJheS4oQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IHNpemUpXG5sZXQgZW1wdHkgICAgICAgPSBjcmVhdGUgMFxuXG5tb2R1bGUgQkExID0gQmlnYXJyYXkuQXJyYXkxXG5cbmxldCBsZW5ndGggdCA9IEJBMS5kaW0gdFxuXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgICAgICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0ICAgICAgICAgICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3RvX2J5dGVzICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IEJ5dGVzLnQgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXCIgICAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgOiBCeXRlcy50IC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXAgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcF9zdHJpbmcgOiB0IC0+IGludCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY2hyIDogdCAtPiBpbnQgLT4gY2hhciAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jaHJcIiBbQEBub2FsbG9jXVxuXG5sZXQgc3ViIHQgfm9mZiB+bGVuID1cbiAgQkExLnN1YiB0IG9mZiBsZW5cblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmZmVyX2xlbjogJWQsIG9mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmZmVyX2xlbiBvZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfYmxpdCBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgc3JjX2xlbjogJWQsIHNyY19vZmY6ICVkLCBkc3RfbGVuOiAlZCwgZHN0X29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19tZW1jbXAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWYxX2xlbjogJWQsIGJ1ZjFfb2ZmOiAlZCwgYnVmMl9sZW46ICVkLCBidWYyX29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG4oKiBBIG5vdGUgb24gYm91bmRzIGNoZWNraW5nLlxuICpcbiAqIFRoZSBjb2RlIHNob3VsZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGJsaXQgZG9lc24ndFxuICogcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXI6XG4gKlxuICogICB7W29mZiArIGxlbiA8PSBidWZmZXJfbGVuXX1cbiAqXG4gKiBIb3dldmVyLCB0aGlzIG1heSBsZWFkIHRvIGFuIGludGVnZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIHZhbHVlcyBvZiBbb2ZmXSxcbiAqIGUuZy4sIFttYXhfaW50XSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgY29tcGFyaXNvbiB0byByZXR1cm4gW3RydWVdIHdoZW4gaXRcbiAqIHNob3VsZCByZWFsbHkgcmV0dXJuIFtmYWxzZV0uXG4gKlxuICogQW4gZXF1aXZhbGVudCBjb21wYXJpc29uIHRoYXQgZG9lcyBub3QgcnVuIGludG8gdGhpcyBpbnRlZ2VyIG92ZXJmbG93XG4gKiBwcm9ibGVtIGlzOlxuICpcbiAqICAge1tidWZmZXJfbGVuIC0gb2ZmID0+IGxlbl19XG4gKlxuICogVGhpcyBpcyBjaGVja2luZyB0aGF0IHRoZSBpbnB1dCBidWZmZXIsIGxlc3MgdGhlIG9mZnNldCwgaXMgc3VmZmljaWVudGx5XG4gKiBsb25nIHRvIHBlcmZvcm0gdGhlIGJsaXQuIFNpbmNlIHRoZSBleHByZXNzaW9uIGlzIHN1YnRyYWN0aW5nIFtvZmZdIHJhdGhlclxuICogdGhhbiBhZGRpbmcgaXQsIGl0IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhlIG92ZXJmbG93IHRoYXQgdGhlIHByZXZpb3VzXG4gKiBpbmVxdWFsaXR5IGRpZC4gQXMgbG9uZyBhcyB0aGVyZSBpcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0IFtvZmZdIGlzIG5vdFxuICogbmVnYXRpdmUsIGl0IHdvbid0IHVuZGVyZmxvdyBlaXRoZXIuICopXG5cbmxldCBjb3B5IHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwiY29weVwiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgdCB+c3JjX29mZjpvZmYgZHN0IH5kc3Rfb2ZmOjAgfmxlbjtcbiAgZHN0XG47O1xuXG5sZXQgc3Vic3RyaW5nIHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwic3Vic3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOjAgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IG9mX3N0cmluZyB+b2ZmIH5sZW4gcyA9XG4gIGxldCBidWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJvZl9zdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgYlxuOztcblxubGV0IGJsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBCeXRlcy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBCeXRlcy5sZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBsZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IFN0cmluZy5sZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlbiA9XG4gIGxldCBidWZfbGVuID0gbGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICBpZiBidWZfb2ZmIDwgMCB8fCBidWZfbGVuIC0gYnVmX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNociBidWYgYnVmX29mZiBjaHIgbGVuXG5cbigqIFNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NFwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0XCJcblxubW9kdWxlIFN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYpXG5cbiAgbGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkIHggb2ZmID1cbiAgICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5lbmRcblxubGV0IHNldF9pbnQxNl9sZSwgc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG5cbmxldCBzZXRfaW50MzJfbGUsIHNldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMlxuXG5sZXQgc2V0X2ludDY0X2xlLCBzZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjRcblxubGV0IGdldF9pbnQxNl9sZSwgZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAgeCBvZmYgPVxuICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgICwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwXG4gIGVsc2UgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwLCBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkXG5cbmxldCBnZXRfaW50MzJfbGUsIGdldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMlxuXG5sZXQgZ2V0X2ludDY0X2xlLCBnZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjRcblxuKCogVW5zYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5cbm1vZHVsZSBVU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZilcbmVuZFxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSwgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUsIHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlLCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSwgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9sZSB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfYmUgeCBvZmYgKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUsIHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlLCB1bnNhZmVfZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuIiwidHlwZSAnYSBzdGF0ZSA9XG4gIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuYW5kICdhIHBhcnRpYWwgPVxuICB7IGNvbW1pdHRlZCA6IGludFxuICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSBzdGF0ZSB9XG5cblxubGV0IHN0YXRlX3RvX29wdGlvbiB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgfCBGYWlsIF8gICAgIC0+IE5vbmVcbiAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcblxubGV0IGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVyciA9XG4gIFN0cmluZy5jb25jYXQgXCIgPiBcIiBtYXJrcyBeIFwiOiBcIiBeIGVyclxuXG5sZXQgc3RhdGVfdG9fcmVzdWx0IHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gIHwgRmFpbChfLCBtYXJrcywgZXJyKSAtPiBFcnJvciAoZmFpbF90b19zdHJpbmcgbWFya3MgZXJyKVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA6IGludFxuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICAgICAgICA6IGludFxuICA7IG9mZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGxlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICA6IEJpZ3N0cmluZ2FmLnRcbiAgfVxuXG5sZXQgY3JlYXRlIGJ1ZmZlciB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlcyA9XG4gIHsgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBvZmZcbiAgOyBsZW5cbiAgOyBidWZmZXIgfVxuXG5sZXQgbGVuZ3RoICAgICAgICAgICAgICAgICB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzICsgdC5sZW5cbmxldCBjbGllbnRfY29tbWl0dGVkX2J5dGVzIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgIHQgPSBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdFxuXG5sZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSB0LmxlbiAtIGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgKyBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IGxlbmd0aCB0KTtcbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgLSBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgdCA9IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHQpO1xuOztcblxubGV0IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgPVxuICB0Lm9mZiArIHBvcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgYXBwbHkgdCBwb3MgbGVuIH5mID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgZiB0LmJ1ZmZlciB+b2ZmIH5sZW5cblxubGV0IHVuc2FmZV9nZXRfY2hhciB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCBjb3VudF93aGlsZSB0IHBvcyB+ZiA9XG4gIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICBsZXQgb2ZmICAgID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBsZXQgaSAgICAgID0gcmVmIG9mZiBpblxuICBsZXQgbGltaXQgID0gdC5vZmYgKyB0LmxlbiBpblxuICB3aGlsZSAhaSA8IGxpbWl0ICYmIGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICAhaSAtIG9mZlxuOztcblxubGV0IGNvbW1pdCB0IHBvcyA9XG4gIHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8LSBwb3Ncbjs7XG4iLCJtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICAgIHwgTGF6eSAgICBvZiAnYSB0IExhenkudFxuICAgIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGFuZCAnYSBwYXJ0aWFsID1cbiAgICB7IGNvbW1pdHRlZCA6IGludFxuICAgIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHQgfVxuXG5lbmRcbnR5cGUgJ2Egd2l0aF9zdGF0ZSA9IElucHV0LnQgLT4gIGludCAtPiBNb3JlLnQgLT4gJ2FcblxudHlwZSAnYSBmYWlsdXJlID0gKHN0cmluZyBsaXN0IC0+IHN0cmluZyAtPiAnYSBTdGF0ZS50KSB3aXRoX3N0YXRlXG50eXBlICgnYSwgJ3IpIHN1Y2Nlc3MgPSAoJ2EgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZVxuXG50eXBlICdhIHQgPVxuICB7IHJ1biA6ICdyLiAoJ3IgZmFpbHVyZSAtPiAoJ2EsICdyKSBzdWNjZXNzIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGUgfVxuXG5sZXQgZmFpbF9rICAgIGlucHV0IHBvcyBfIG1hcmtzIG1zZyA9XG4gIFN0YXRlLkZhaWwocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgbWFya3MsIG1zZylcbmxldCBzdWNjZWVkX2sgaW5wdXQgcG9zIF8gICAgICAgdiAgID1cbiAgU3RhdGUuRG9uZShwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCB2KVxuXG5sZXQgcmVjIHRvX2V4cG9ydGVkX3N0YXRlID0gZnVuY3Rpb25cbiAgfCBTdGF0ZS5QYXJ0aWFsIHtjb21taXR0ZWQ7Y29udGludWV9IC0+XG4gICAgIEV4cG9ydGVkX3N0YXRlLlBhcnRpYWxcbiAgICAgICB7IGNvbW1pdHRlZFxuICAgICAgIDsgY29udGludWUgPVxuICAgICAgICAgICBmdW4gYnMgfm9mZiB+bGVuIG1vcmUgLT5cbiAgICAgICAgICAgdG9fZXhwb3J0ZWRfc3RhdGUgKGNvbnRpbnVlIGJzIH5vZmYgfmxlbiBtb3JlKX1cbiAgfCBTdGF0ZS5Eb25lIChpLHgpIC0+IEV4cG9ydGVkX3N0YXRlLkRvbmUgKGkseClcbiAgfCBTdGF0ZS5GYWlsIChpLCBzbCwgcykgLT4gRXhwb3J0ZWRfc3RhdGUuRmFpbCAoaSwgc2wsIHMpXG4gIHwgU3RhdGUuTGF6eSB4IC0+IHRvX2V4cG9ydGVkX3N0YXRlIChMYXp5LmZvcmNlIHgpXG5cbmxldCBwYXJzZSBwID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIEJpZ3N0cmluZ2FmLmVtcHR5IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjowIGluXG4gIHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIEluY29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaylcblxubGV0IHBhcnNlX2JpZ3N0cmluZyBwIGlucHV0ID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGlucHV0KSBpblxuICBFeHBvcnRlZF9zdGF0ZS5zdGF0ZV90b19yZXN1bHQgKHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIENvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spKVxuXG5tb2R1bGUgTW9uYWQgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIHZcbiAgICB9XG5cbiAgbGV0IGZhaWwgbXNnID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIF9zdWNjIC0+XG4gICAgICBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIG1zZ1xuICAgIH1cblxuICBsZXQgKD4+PSkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gKGYgdikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKD4+fCkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoZiB2KSBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwkPikgZiBtID1cbiAgICBtID4+fCBmXG5cbiAgbGV0ICg8Kj4pIGYgbSA9XG4gICAgKCogZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIGYgPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbSA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgKGYgbSkgaW5cbiAgICAgICAgbS5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGYucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuXG4gIGxldCBsaWZ0IGYgbSA9XG4gICAgZiA8JD4gbVxuXG4gIGxldCBsaWZ0MiBmIG0xIG0yID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9IHN1Y2MgaW5wdXQyIHBvczIgbW9yZTIgKGYgbTEgbTIpIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIHN1Y2MgaW5wdXQzIHBvczMgbW9yZTMgKGYgbTEgbTIgbTMpIGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgbGV0IHN1Y2M0IGlucHV0NCBwb3M0IG1vcmU0IG00ID1cbiAgICAgICAgICAgICAgc3VjYyBpbnB1dDQgcG9zNCBtb3JlNCAoZiBtMSBtMiBtMyBtNCkgaW5cbiAgICAgICAgICAgIG00LnJ1biBpbnB1dDMgcG9zMyBtb3JlMyBmYWlsIHN1Y2M0IGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0ICggKj4pIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIF8gLT4gYiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPSBiLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8KiApIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geCAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIHggPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgXyA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgeCBpblxuICAgICAgICBiLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5lbmRcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICBsZXQgKDw/PikgcCBtYXJrID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIChtYXJrOjptYXJrcykgbXNnIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuXG4gIGxldCAoPHw+KSBwIHEgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgICgqIFRoZSBvbmx5IHR3byBjb25zdHJ1Y3RvcnMgdGhhdCBpbnRyb2R1Y2UgbmV3IGZhaWx1cmUgY29udGludWF0aW9ucyBhcmVcbiAgICAgICAgICogWzw/Pl0gYW5kIFs8fD5dLiBJZiB0aGUgaW5pdGlhbCBpbnB1dCBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aFxuICAgICAgICAgKiBvZiB0aGUgY29tbWl0dGVkIGlucHV0LCB0aGVuIGNhbGxpbmcgdGhlIGZhaWx1cmUgY29udGludWF0aW9uIHdpbGxcbiAgICAgICAgICogaGF2ZSB0aGUgZWZmZWN0IG9mIHVud2luZGluZyBhbGwgY2hvaWNlcyBhbmQgY29sbGVjdGluZyBtYXJrcyBhbG9uZ1xuICAgICAgICAgKiB0aGUgd2F5LiAqKVxuICAgICAgICBpZiBwb3MgPCBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0JyB0aGVuXG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlIG1hcmtzIG1zZ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcS5ydW4gaW5wdXQnIHBvcyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5lbmRcblxubW9kdWxlIE1vbmFkX3VzZV9mb3JfZGVidWdnaW5nID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSBNb25hZC5yZXR1cm5cbiAgbGV0IGZhaWwgICA9IE1vbmFkLmZhaWxcbiAgbGV0ICg+Pj0pICA9IE1vbmFkLig+Pj0pXG5cbiAgbGV0ICg+PnwpIG0gZiA9IG0gPj49IGZ1biB4IC0+IHJldHVybiAoZiB4KVxuXG4gIGxldCAoPCQ+KSBmIG0gPSBtID4+fCBmXG4gIGxldCAoPCo+KSBmIG0gPSBmID4+PSBmdW4gZiAtPiBtID4+fCBmXG5cbiAgbGV0IGxpZnQgID0gKD4+fClcbiAgbGV0IGxpZnQyIGYgbTEgbTIgICAgICAgPSBmIDwkPiBtMSA8Kj4gbTJcbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgICAgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtMyA8Kj4gbTRcblxuICBsZXQgKCAqPikgYSBiID0gYSA+Pj0gZnVuIF8gLT4gYlxuICBsZXQgKDwqICkgYSBiID0gYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geFxuZW5kXG4iLCJ0eXBlIHQgPVxuICB7IG11dGFibGUgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnQgfVxuXG5sZXQgb2ZfYmlnc3RyaW5nIH5vZmYgfmxlbiBidWYgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYnVmID49IGxlbiAtIG9mZik7XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbmxldCBjcmVhdGUgbGVuID1cbiAgb2ZfYmlnc3RyaW5nIH5vZmY6MCB+bGVuOjAgKEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4pXG5cbmxldCB3cml0YWJsZV9zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gdC5sZW5cblxubGV0IHRyYWlsaW5nX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSAodC5vZmYgKyB0LmxlbilcblxubGV0IGNvbXByZXNzIHQgPVxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiB0LmJ1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQub2ZmIDwtIDBcblxubGV0IGdyb3cgdCB0b19jb3B5ID1cbiAgbGV0IG9sZF9sZW4gPSBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICBsZXQgc3BhY2UgPSB3cml0YWJsZV9zcGFjZSB0IGluXG4gIHdoaWxlIHNwYWNlICsgIW5ld19sZW4gLSBvbGRfbGVuIDwgdG9fY29weSBkb1xuICAgIG5ld19sZW4gOj0gKDMgKiAhbmV3X2xlbikgLyAyXG4gIGRvbmU7XG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nYWYuY3JlYXRlICFuZXdfbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIG5ld19idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0LmJ1ZiA8LSBuZXdfYnVmO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBlbnN1cmUgdCB0b19jb3B5ID1cbiAgaWYgdHJhaWxpbmdfc3BhY2UgdCA8IHRvX2NvcHkgdGhlblxuICAgIGlmIHdyaXRhYmxlX3NwYWNlIHQgPj0gdG9fY29weVxuICAgIHRoZW4gY29tcHJlc3MgdFxuICAgIGVsc2UgZ3JvdyB0IHRvX2NvcHlcblxubGV0IHdyaXRlX3BvcyB0ID1cbiAgdC5vZmYgKyB0LmxlblxuXG5sZXQgZmVlZF9zdHJpbmcgdCB+b2ZmIH5sZW4gc3RyID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzdHIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfYmlnc3RyaW5nIHQgfm9mZiB+bGVuIGIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYiA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IGIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfaW5wdXQgdCA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyAgICBzIC0+IGZlZWRfc3RyaW5nICAgIHQgfm9mZjowIH5sZW46KFN0cmluZyAgICAgLmxlbmd0aCBzKSBzXG4gIHwgYEJpZ3N0cmluZyBiIC0+IGZlZWRfYmlnc3RyaW5nIHQgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBiKSBiXG5cbmxldCBzaGlmdCB0IG4gPVxuICBhc3NlcnQgKHQubGVuID49IG4pO1xuICB0Lm9mZiA8LSB0Lm9mZiArIG47XG4gIHQubGVuIDwtIHQubGVuIC0gblxuXG5sZXQgZm9yX3JlYWRpbmcgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBCaWdzdHJpbmdhZi5zdWIgfm9mZiB+bGVuIGJ1ZlxuXG5tb2R1bGUgVW5jb25zdW1lZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuZW5kXG5cbmxldCB1bmNvbnN1bWVkID8oc2hpZnQ9MCkgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBhc3NlcnQgKGxlbiA+PSBzaGlmdCk7XG4gIHsgVW5jb25zdW1lZC5idWY7IG9mZiA9IG9mZiArIHNoaWZ0OyBsZW4gPSBsZW4gLSBzaGlmdCB9XG5cbmxldCBvZl91bmNvbnN1bWVkIHsgVW5jb25zdW1lZC5idWY7IG9mZjsgbGVuIH0gPVxuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG50eXBlIHVuY29uc3VtZWQgPSBVbmNvbnN1bWVkLnQgPVxuICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBvZmYgOiBpbnRcbiAgOyBsZW4gOiBpbnQgfVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE2IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG5tb2R1bGUgQmlnYXJyYXkgPSBzdHJ1Y3RcbiAgKCogRG8gbm90IGFjY2VzcyBCaWdhcnJheSBvcGVyYXRpb25zIGRpcmVjdGx5LiBJZiBhbnl0aGluZydzIG5lZWRlZCwgcmVmZXIgdG9cbiAgICogdGhlIGludGVybmFsIEJpZ3N0cmluZyBtb2R1bGUuICopXG5lbmRcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmdhZi50XG5cblxubW9kdWxlIFVuYnVmZmVyZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJzZXJcblxuICBpbmNsdWRlIEV4cG9ydGVkX3N0YXRlXG5cbiAgdHlwZSBtb3JlID0gTW9yZS50ID1cbiAgICB8IENvbXBsZXRlXG4gICAgfCBJbmNvbXBsZXRlXG5lbmRcblxuaW5jbHVkZSBVbmJ1ZmZlcmVkXG5pbmNsdWRlIFBhcnNlci5Nb25hZFxuaW5jbHVkZSBQYXJzZXIuQ2hvaWNlXG5cbm1vZHVsZSBCdWZmZXJlZCA9IHN0cnVjdFxuICB0eXBlIHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCA9XG4gICAgeyBidWYgOiBiaWdzdHJpbmdcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cblxuICB0eXBlIGlucHV0ID1cbiAgICBbIGBCaWdzdHJpbmcgb2YgYmlnc3RyaW5nXG4gICAgfCBgU3RyaW5nICAgIG9mIHN0cmluZyBdXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBQYXJ0aWFsIG9mIChbIGlucHV0IHwgYEVvZiBdIC0+ICdhIHN0YXRlKVxuICAgIHwgRG9uZSAgICBvZiB1bmNvbnN1bWVkICogJ2FcbiAgICB8IEZhaWwgICAgb2YgdW5jb25zdW1lZCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgbGV0IGZyb21fdW5idWZmZXJlZF9zdGF0ZSB+ZiBidWZmZXJpbmcgPSBmdW5jdGlvblxuICAgIHwgVW5idWZmZXJlZC5QYXJ0aWFsIHAgICAgICAgICAtPiBQYXJ0aWFsIChmIHApXG4gICAgfCBVbmJ1ZmZlcmVkLkRvbmUoY29uc3VtZWQsIHYpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIERvbmUodW5jb25zdW1lZCwgdilcbiAgICB8IFVuYnVmZmVyZWQuRmFpbChjb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKVxuXG4gIGxldCBwYXJzZSA/KGluaXRpYWxfYnVmZmVyX3NpemU9MHgxMDAwKSBwID1cbiAgICBpZiBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMSB0aGVuXG4gICAgICBmYWlsd2l0aCBcInBhcnNlOiBpbnZhbGlkIGFyZ3VtZW50LCBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMVwiO1xuICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgcmVjIGYgcCBpbnB1dCA9XG4gICAgICBCdWZmZXJpbmcuc2hpZnQgYnVmZmVyaW5nIHAuY29tbWl0dGVkO1xuICAgICAgbGV0IG1vcmUgOiBNb3JlLnQgPVxuICAgICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgIHwgYEVvZiAgICAgICAgICAgIC0+IENvbXBsZXRlXG4gICAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICAgIEluY29tcGxldGVcbiAgICAgIGluXG4gICAgICBsZXQgZm9yX3JlYWRpbmcgPSBCdWZmZXJpbmcuZm9yX3JlYWRpbmcgYnVmZmVyaW5nIGluXG4gICAgICBwLmNvbnRpbnVlIGZvcl9yZWFkaW5nIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggZm9yX3JlYWRpbmcpIG1vcmVcbiAgICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcbiAgICBpblxuICAgIFVuYnVmZmVyZWQucGFyc2UgcFxuICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcblxuICBsZXQgZmVlZCBzdGF0ZSBpbnB1dCA9XG4gICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgIHwgUGFydGlhbCBrIC0+IGsgaW5wdXRcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIEZhaWwoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCBtYXJrcywgbXNnKVxuICAgICAgZW5kXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIHYpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBEb25lKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgdilcbiAgICAgIGVuZFxuXG4gIGxldCBzdGF0ZV90b19vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuICAgIHwgRmFpbCBfICAgICAtPiBOb25lXG5cbiAgbGV0IHN0YXRlX3RvX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gICAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgICB8IEZhaWwoXywgbWFya3MsIG1zZykgLT4gRXJyb3IgKFVuYnVmZmVyZWQuZmFpbF90b19zdHJpbmcgbWFya3MgbXNnKVxuXG4gIGxldCBzdGF0ZV90b191bmNvbnN1bWVkID0gZnVuY3Rpb25cbiAgICB8IERvbmUodW5jb25zdW1lZCwgXylcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgXywgXykgLT4gU29tZSB1bmNvbnN1bWVkXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgICAgIC0+IE5vbmVcblxuZW5kXG5cbigqKiBCRUdJTjogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgcmVjIHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjID1cbiAgKCogW3Byb21wdF0gc2hvdWxkIG9ubHkgY2FsbCBbc3VjY10gaWYgaXQgaGFzIHJlY2VpdmVkIG1vcmUgaW5wdXQuIElmIHRoZXJlXG4gICAqIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSBpbnB1dCB3aWxsIGdyb3csIGkuZS4sIFttb3JlID0gQ29tcGxldGVdLCB0aGVuXG4gICAqIFtwcm9tcHRdIHNob3VsZCBjYWxsIFtmYWlsXS4gT3RoZXJ3aXNlIChpbiB0aGUgY2FzZSB3aGVyZSB0aGUgaW5wdXRcbiAgICogaGFzbid0IGdyb3duIGJ1dCBbbW9yZSA9IEluY29tcGxldGVdIGp1c3QgcHJvbXB0IGFnYWluLiAqKVxuICBsZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIGlucHV0IGluXG4gIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgaW5wdXQgaW5cbiAgKCogVGhlIGNvbnRpbnVhdGlvbiBzaG91bGQgbm90IGhvbGQgYW55IHJlZmVyZW5jZXMgdG8gaW5wdXQgYWJvdmUuICopXG4gIGxldCBjb250aW51ZSBpbnB1dCB+b2ZmIH5sZW4gbW9yZSA9XG4gICAgaWYgbGVuIDwgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicHJvbXB0OiBpbnB1dCBzaHJ1bmshXCI7XG4gICAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzOnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5cbiAgICBpZiBsZW4gPSBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBNb3JlLkNvbXBsZXRlXG4gICAgICB8IEluY29tcGxldGUgLT4gcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlXG4gIGluXG4gIFN0YXRlLlBhcnRpYWwgeyBjb21taXR0ZWQgPSBJbnB1dC5ieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCBpbnB1dDsgY29udGludWUgfVxuXG5sZXQgZGVtYW5kX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIlxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIiBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjID1cbiAgbGV0IHJlYyBnbyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYycgLT5cbiAgICAgIGlmIHBvcycgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dCcgdGhlblxuICAgICAgICBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgZWxzZVxuICAgICAgICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYydcbiAgICB9XG4gIGluXG4gIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcblxubGV0IHVuc2FmZV9hcHBseSBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mKVxuICB9XG5cbmxldCB1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIGVcbiAgICB8IE9rICAgIHggLT4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIHhcbiAgfVxuXG5sZXQgZW5zdXJlIG4gcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPSBwLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxuKCoqIEVORDogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgYXRfZW5kX29mX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgXyBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgZmFsc2VcbiAgICBlbHNlIG1hdGNoIG1vcmUgd2l0aFxuICAgIHwgQ29tcGxldGUgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSB0cnVlXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGZhbHNlXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIHRydWUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5kX29mX2lucHV0ID1cbiAgYXRfZW5kX29mX2lucHV0XG4gID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAgLT4gcmV0dXJuICgpXG4gICAgfCBmYWxzZSAtPiBmYWlsIFwiZW5kX29mX2lucHV0XCJcblxubGV0IGFkdmFuY2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImFkdmFuY2VcIlxuICBlbHNlXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IChwb3MgKyBuKSBtb3JlICgpIH1cbiAgICBpblxuICAgIGVuc3VyZSBuIHBcblxubGV0IHBvcyA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSBwb3MgfVxuXG5sZXQgYXZhaWxhYmxlID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0Lmxlbmd0aCBpbnB1dCAtIHBvcylcbiAgfVxuXG5sZXQgY29tbWl0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIElucHV0LmNvbW1pdCBpbnB1dCBwb3M7XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoKSB9XG5cbigqIERvIG5vdCB1c2UgdGhpcyBpZiBbcF0gY29udGFpbnMgYSBbY29tbWl0XS4gKilcbmxldCB1bnNhZmVfbG9va2FoZWFkIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3VjYycgaW5wdXQnIF8gbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcyBtb3JlJyB2IGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBwZWVrX2NoYXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpKVxuICAgIGVsc2UgaWYgbW9yZSA9IENvbXBsZXRlIHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJykpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIE5vbmUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG4oKiBUaGlzIHBhcnNlciBpcyB0b28gaW1wb3J0YW50IHRvIG5vdCBiZSBvcHRpbWl6ZWQuIERvIGEgY3VzdG9tIGpvYi4gKilcbmxldCByZWMgcGVla19jaGFyX2ZhaWwgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgcGVla19jaGFyX2ZhaWwucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgc2F0aXNmeSBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQgcG9zIG1vcmUgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycgaW5cbiAgICAgICAgaWYgZiBjXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCcgKHBvcycgKyAxKSBtb3JlJyBjXG4gICAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgICAgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IGNoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgPSBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IG5vdF9jaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYycgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBjIDw+IGMnXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgYydcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJub3QgY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2NoYXIgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgaW50OCBpID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpIGluXG4gICAgICBpZiBjID0gaSBsYW5kIDB4ZmZcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiaW50OCAlZFwiIGkpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X3VpbnQ4ID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoQ2hhci5jb2RlIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2ludDggPVxuICAoKiBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9+c2VhbmRlci9iaXRoYWNrcy5odG1sI1ZhcmlhYmxlU2lnbkV4dGVuZFJpc2t5ICopXG4gIGxldCBzID0gU3lzLmludF9zaXplIC0gOCBpblxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgoQ2hhci5jb2RlIGMgbHNsIHMpIGFzciBzKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHNraXAgZiA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIGYgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKClcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcInNraXBcIiB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHJlYyBjb3VudF93aGlsZSB+aW5pdCB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCAocG9zICsgaW5pdCkgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICBsZXQgaW5pdCcgICAgICAgPSBpbml0ICsgbGVuIGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgcG9zICsgaW5pdCcgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBpbml0JykgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDppbml0JyB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgaW5pdCcpIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHJlYyBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgcG9zIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgbGVuIDwgMVxuICAgIHRoZW5cbiAgICAgIGlmIHBvcyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgKGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgICAgaW5cbiAgICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICAgIGVsc2UgaWYgcG9zICsgbGVuIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDpsZW4gfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGxlbikgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHN0cmluZ18gZiBzID1cbiAgKCogWFhYKHNlbGlvcG91KTogSW5lZmZpY2llbnQuIENvdWxkIGNoZWNrIHByZWZpeCBlcXVhbGl0eSB0byBzaG9ydC1jaXJjdWl0XG4gICAqIHRoZSBpby4gKilcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBlbnN1cmUgIGxlbiAodW5zYWZlX2FwcGx5X29wdCBsZW4gfmY6KGZ1biBidWZmZXIgfm9mZiB+bGVuIC0+XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIHdoaWxlICFpIDwgbGVuICYmIENoYXIuZXF1YWwgKGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyIChvZmYgKyAhaSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGYgKFN0cmluZy51bnNhZmVfZ2V0IHMgIWkpKVxuICAgIGRvXG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmIGxlbiA9ICFpXG4gICAgdGhlbiBPayAoQmlnc3RyaW5nYWYuc3Vic3RyaW5nIGJ1ZmZlciB+b2ZmIH5sZW4pXG4gICAgZWxzZSBFcnJvciBcInN0cmluZ1wiKSlcblxubGV0IHN0cmluZyBzICAgID0gc3RyaW5nXyAoZnVuIHggLT4geCkgc1xubGV0IHN0cmluZ19jaSBzID0gc3RyaW5nXyBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBza2lwX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcblxubGV0IHRha2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2U6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5zdWJzdHJpbmcpXG5cbmxldCB0YWtlX2JpZ3N0cmluZyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZV9iaWdzdHJpbmc6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5jb3B5KVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ190aWxsIGYgPVxuICB0YWtlX2JpZ3N0cmluZ193aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgcGVla19zdHJpbmcgbiA9XG4gIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbilcblxubGV0IHRha2Vfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV93aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3RpbGwgZiA9XG4gIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IGNob2ljZSA/KGZhaWx1cmVfbXNnPVwibm8gbW9yZSBjaG9pY2VzXCIpIHBzID1cbiAgTGlzdC5mb2xkX3JpZ2h0ICg8fD4pIHBzIChmYWlsIGZhaWx1cmVfbXNnKVxuXG5sZXQgZml4X2RpcmVjdCBmID1cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyB9XG4gIGluXG4gIHJcblxubGV0IGZpeF9sYXp5IH5tYXhfc3RlcHMgZiA9XG4gIGxldCBzdGVwcyA9IHJlZiBtYXhfc3RlcHMgaW5cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBkZWNyIHN0ZXBzO1xuICAgIGlmICFzdGVwcyA8IDBcbiAgICB0aGVuIChcbiAgICAgIHN0ZXBzIDo9IG1heF9zdGVwcztcbiAgICAgIFN0YXRlLkxhenkgKGxhenkgKChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjKSkpXG4gICAgZWxzZVxuICAgICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICAgICAgICB9XG4gIGluXG4gIHJcblxubGV0IGZpeCA9IG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IE5hdGl2ZSAtPiBmaXhfZGlyZWN0XG4gIHwgQnl0ZWNvZGUgLT4gZml4X2RpcmVjdFxuICB8IE90aGVyIF8gLT4gZnVuIGYgLT4gZml4X2xhenkgfm1heF9zdGVwczoyMCBmXG5cbmxldCBvcHRpb24geCBwID1cbiAgcCA8fD4gcmV0dXJuIHhcblxubGV0IGNvbnMgeCB4cyA9IHggOjogeHNcblxubGV0IHJlYyBsaXN0IHBzID1cbiAgbWF0Y2ggcHMgd2l0aFxuICB8IFtdICAgIC0+IHJldHVybiBbXVxuICB8IHA6OnBzIC0+IGxpZnQyIGNvbnMgcCAobGlzdCBwcylcblxubGV0IGNvdW50IG4gcCA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImNvdW50OiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCAwIC0+IHJldHVybiBbXVxuICAgICAgfCBuIC0+IGxpZnQyIGNvbnMgcCAobG9vcCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBuXG5cbmxldCBtYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKGxpZnQyIGNvbnMgcCBtKSA8fD4gcmV0dXJuIFtdKVxuXG5sZXQgbWFueTEgcCA9XG4gIGxpZnQyIGNvbnMgcCAobWFueSBwKVxuXG5sZXQgbWFueV90aWxsIHAgdCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAodCAqPiByZXR1cm4gW10pIDx8PiAobGlmdDIgY29ucyBwIG0pKVxuXG5sZXQgc2VwX2J5MSBzIHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgbGlmdDIgY29ucyBwICgocyAqPiBtKSA8fD4gcmV0dXJuIFtdKSlcblxubGV0IHNlcF9ieSBzIHAgPVxuICAobGlmdDIgY29ucyBwICgocyAqPiBzZXBfYnkxIHMgcCkgPHw+IHJldHVybiBbXSkpIDx8PiByZXR1cm4gW11cblxubGV0IHNraXBfbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgICAgKChwID4+fCBmdW4gXyAtPiB0cnVlKSA8fD4gcmV0dXJuIGZhbHNlKSA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBtXG4gICAgICB8IGZhbHNlIC0+IHJldHVybiAoKVxuICAgIClcblxubGV0IHNraXBfbWFueTEgcCA9XG4gIHAgKj4gc2tpcF9tYW55IHBcblxubGV0IGVuZF9vZl9saW5lID1cbiAgKGNoYXIgJ1xcbicgKj4gcmV0dXJuICgpKSA8fD4gKHN0cmluZyBcIlxcclxcblwiICo+IHJldHVybiAoKSkgPD8+IFwiZW5kX29mX2xpbmVcIlxuXG5sZXQgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhdGUgPSByZWYgc3RhdGUgaW5cbiAgICBsZXQgcGFyc2VyID1cbiAgICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6KGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGYgIXN0YXRlIGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHN0YXRlJyAtPiBzdGF0ZSA6PSBzdGF0ZSc7IHRydWUpXG4gICAgICB+d2l0aF9idWZmZXJcbiAgICAgID4+fCBmdW4geCAtPiB4LCAhc3RhdGVcbiAgICBpblxuICAgIHBhcnNlci5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIH1cblxubGV0IHNjYW4gc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgc2Nhbl9zdGF0ZSBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG4gID4+fCBmdW4gKCgpLCBzdGF0ZSkgLT4gc3RhdGVcblxubGV0IHNjYW5fc3RyaW5nIHN0YXRlIGYgPVxuICBzY2FuIHN0YXRlIGYgPj58IGZzdFxuXG5sZXQgY29uc3VtZV93aXRoIHAgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGFydCA9IHBvcyBpblxuICAgIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCAgaW5cbiAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9XG4gICAgICBpZiBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDw+IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnXG4gICAgICB0aGVuIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb25zdW1lZDogcGFyc2VyIGNvbW1pdHRlZFwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9IHBvcycgLSBzdGFydCBpblxuICAgICAgICBsZXQgY29uc3VtZWQgPSBJbnB1dC5hcHBseSBpbnB1dCcgc3RhcnQgbGVuIH5mIGluXG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgY29uc3VtZWQpXG4gICAgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gIH1cblxubGV0IGNvbnN1bWVkICAgICAgICAgICBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5sZXQgY29uc3VtZWRfYmlnc3RyaW5nIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCBib3RoIGEgYiA9IGxpZnQyIChmdW4gYSBiIC0+IGEsIGIpIGEgYlxubGV0IG1hcCB0IH5mID0gdCA+PnwgZlxubGV0IGJpbmQgdCB+ZiA9IHQgPj49IGZcbmxldCBtYXAyIGEgYiB+ZiA9IGxpZnQyIGYgYSBiXG5sZXQgbWFwMyBhIGIgYyB+ZiA9IGxpZnQzIGYgYSBiIGNcbmxldCBtYXA0IGEgYiBjIGQgfmYgPSBsaWZ0NCBmIGEgYiBjIGRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuICAgIGxldCBtYXAyID0gbWFwMlxuICAgIGxldCBtYXAzID0gbWFwM1xuICAgIGxldCBtYXA0ID0gbWFwNFxuICBlbmRcbmVuZFxuXG5sZXQgKCBsZXQrICkgPSAoID4+fCApXG5sZXQgKCBsZXQqICkgPSAoID4+PSApXG5sZXQgKCBhbmQrICkgPSBib3RoXG5cbm1vZHVsZSBCRSA9IHN0cnVjdFxuICAoKiBYWFgoc2VsaW9wb3UpOiBUaGUgcGF0dGVybiBpbiBib3RoIHRoaXMgbW9kdWxlIGFuZCBbTEVdIGFyZSBhIGNvbXByb21pc2VcbiAgICogYmV0d2VlbiBlZmZpY2llbmN5IGFuZCBjb2RlIHJldXNlLiBCeSBpbmxpbmluZyBbZW5zdXJlXSB5b3UgY2FuIHJlY292ZXJcbiAgICogYWJvdXQgMiBuYW5vc2Vjb25kcyBvbiBhdmVyYWdlLiBUaGF0IG1heSBhZGQgdXAgaW4gY2VydGFpbiBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIFRoaXMgcGF0dGVybiBkb2VzIG5vdCBhbGxvY2F0ZSBpbiB0aGUgZmFzdCAoc3VjY2VzcykgcGF0aC5cbiAgICogKilcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9iZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgTEUgPSBzdHJ1Y3RcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9sZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHRha2UgbiBmID1cbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmYpXG5cbiAgbGV0IHBlZWsgbiBmID1cbiAgICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4gZilcblxuICBsZXQgdGFrZV93aGlsZSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2Vfd2hpbGUxIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlMSB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3RpbGwgY2hlY2sgZiA9XG4gICAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChjaGVjayBjKSkgZlxuZW5kXG5cbm1vZHVsZSBDb25zdW1lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBQcmVmaXhcbiAgICB8IEFsbFxuZW5kXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBicyA9XG4gIGxldCBwID1cbiAgICBtYXRjaCAoY29uc3VtZSA6IENvbnN1bWUudCkgd2l0aFxuICAgIHwgUHJlZml4IC0+IHBcbiAgICB8IEFsbCAtPiBwIDwqIGVuZF9vZl9pbnB1dFxuICBpblxuICBVbmJ1ZmZlcmVkLnBhcnNlX2JpZ3N0cmluZyBwIGJzXG5cbmxldCBwYXJzZV9zdHJpbmcgfmNvbnN1bWUgcCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnMgID0gQmlnc3RyaW5nYWYuY3JlYXRlIGxlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOjAgYnMgfmRzdF9vZmY6MCB+bGVuO1xuICBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBic1xuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IEFuaWwgTWFkaGF2YXBlZGR5IDxhbmlsQHJlY29pbC5vcmc+XG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBEYXZpZCBTaGVldHMgPHNoZWV0c0BhbHVtLm1pdC5lZHU+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxudHlwZSBjb21wb25lbnQgPSBbXG4gIHwgYFNjaGVtZVxuICB8IGBBdXRob3JpdHlcbiAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBQYXRoXG4gIHwgYFF1ZXJ5XG4gIHwgYFF1ZXJ5X2tleVxuICB8IGBRdWVyeV92YWx1ZVxuICB8IGBGcmFnbWVudFxuICB8IGBHZW5lcmljXG4gIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKSAoKiAoY29tcG9uZW50ICogc2FmZSBjaGFycyAqIHVuc2FmZSBjaGFycykgKilcbl1cblxudHlwZSBwY3RfZW5jb2RlciA9IHtcbiAgICBzY2hlbWU6IGNvbXBvbmVudDtcbiAgICB1c2VyaW5mbzogY29tcG9uZW50O1xuICAgIGhvc3Q6IGNvbXBvbmVudDtcbiAgICBwYXRoOiBjb21wb25lbnQ7XG4gICAgcXVlcnlfa2V5OiBjb21wb25lbnQ7XG4gICAgcXVlcnlfdmFsdWU6IGNvbXBvbmVudDtcbiAgICBmcmFnbWVudDogY29tcG9uZW50O1xuICB9XG5cbmxldCByZWMgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiA9IGZ1bmN0aW9uXG4gIHwgbGFzdDo6W10gLT4gZm4gYnVmIGxhc3RcbiAgfCBlbDo6cmVzdCAtPlxuICAgIGZuIGJ1ZiBlbDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgcmVzdFxuICB8IFtdIC0+ICgpXG5cbmxldCByZXZfaW50ZXJqZWN0IGUgbHN0ID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAtPiBhY2NcbiAgICB8IHg6OnhzIC0+IGF1eCAoeDo6ZTo6YWNjKSB4c1xuICBpbiBtYXRjaCBsc3Qgd2l0aFxuICB8IFtdICAtPiBbXVxuICB8IGg6OnQgLT4gYXV4IFtoXSB0XG5cbmxldCBjb21wYXJlX29wdCBjIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgICBOb25lICAgLT4gMFxuICB8IFNvbWUgXywgTm9uZSAgIC0+IDFcbiAgfCBOb25lLCAgIFNvbWUgXyAtPiAtMVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGMgYSBiXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGYgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBbXSwgICAgW10gICAgLT4gIDBcbiAgfCBfOjpfLCAgW10gICAgLT4gIDFcbiAgfCBbXSwgICAgXzo6XyAgLT4gLTFcbiAgfCB4Ojp4cywgeTo6eXMgLT5cbiAgICBtYXRjaCBmIHggeSB3aXRoIDAgLT4gY29tcGFyZV9saXN0IGYgeHMgeXMgfCBjIC0+IGNcblxuKCoqIFNhZmUgY2hhcmFjdGVycyB0aGF0IGFyZSBhbHdheXMgYWxsb3dlZCBpbiBhIFVSSVxuICAqIFVuZm9ydHVuYXRlbHksIHRoaXMgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGljaCBiaXQgb2YgdGhlIFVSSVxuICAqIGlzIGJlaW5nIHBhcnNlZCwgc28gdGhlcmUgYXJlIG11bHRpcGxlIHZhcmlhbnRzIChhbmQgdGhpc1xuICAqIHNldCBpcyBwcm9iYWJseSBub3QgZXhoYXVzdGl2ZS4gVE9ETzogY2hlY2suXG4qKVxudHlwZSBzYWZlX2NoYXJzID0gYm9vbCBhcnJheVxuXG5tb2R1bGUgdHlwZSBTY2hlbWUgPSBzaWdcbiAgdmFsIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA6IGNvbXBvbmVudCAtPiBzYWZlX2NoYXJzXG4gIHZhbCBub3JtYWxpemVfaG9zdCA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGNhbm9uaWNhbGl6ZV9wb3J0IDogaW50IG9wdGlvbiAtPiBpbnQgb3B0aW9uXG4gIHZhbCBjYW5vbmljYWxpemVfcGF0aCA6IHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0XG5lbmRcblxubW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgbGV0IHN1Yl9kZWxpbXMgYSA9XG4gICAgbGV0IHN1YmQgPSBcIiEkJicoKSorLDs9XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdWJkIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc3ViZC5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFycyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkubWFrZSAyNTYgZmFsc2UgaW5cbiAgICBsZXQgYWx3YXlzX3NhZmUgPVxuICAgICAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV8uLX5cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIGFsd2F5c19zYWZlIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYWx3YXlzX3NhZmUuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHBjaGFyIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHNhZmVfY2hhcnMpIGluXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJ0AnKSA8LSB0cnVlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3Jfc2NoZW1lIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSB0cnVlO1xuICAgIGFcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgcGF0aCBjb21wb25lbnQgb2YgYSBVUkkgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3BhdGggOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgcGNoYXIpIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeSA6IHNhZmVfY2hhcnMgPVxuICAgICgqIFRPRE86IFdoYXQgYWJvdXQge1wiIVwiLFwiJFwiLFwiLFwifT8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vYXZzbS9vY2FtbC11cmkvY29tbWl0LzFlZjNmMWRmYjQxYmRiNGYzM2YyMjNmZmUxNmU2MmEzMzk3NTY2MWEjZGlmZi03NDBmMmRlNTNjOWViMzZlOTY3MGRkZmJkYjliYTkxNFIxNzE+ICopXG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHBjaGFyIGluXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJz8nKSA8LSB0cnVlO1xuICAgICgqICcmJyBpcyBzYWZlIGJ1dCB3ZSBzaG91bGQgZW5jb2RlIGxpdGVyYWxzIHRvIGF2b2lkIGFtYmlndWl0eVxuICAgICAgIHdpdGggdGhlIGFscmVhZHkgcGFyc2VkIHFzIHBhcmFtcyAqKVxuICAgIGEuKENoYXIuY29kZSAnJicpIDwtIGZhbHNlO1xuICAgICgqICc7JyBpcyBzYWZlIGJ1dCBzb21lIHN5c3RlbXMgdHJlYXQgaXQgbGlrZSAnJicuICopXG4gICAgYS4oQ2hhci5jb2RlICc7JykgPC0gZmFsc2U7XG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXkgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJz0nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICcsJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudCA6IHNhZmVfY2hhcnMgPSBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSB1c2VyaW5mbyBzdWJjb21wb25lbnQgb2YgYSBVUkkuXG4gICAgICBUT0RPOiB0aGlzIG5lZWRzIG1vcmUgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhZGRlZCAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfdXNlcmluZm8gOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgcmVjIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA9IGZ1bmN0aW9uXG4gICAgfCBgUGF0aCAtPiBzYWZlX2NoYXJzX2Zvcl9wYXRoXG4gICAgfCBgVXNlcmluZm8gLT4gc2FmZV9jaGFyc19mb3JfdXNlcmluZm9cbiAgICB8IGBRdWVyeSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuICAgIHwgYFF1ZXJ5X2tleSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXlcbiAgICB8IGBRdWVyeV92YWx1ZSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZVxuICAgIHwgYEZyYWdtZW50IC0+IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50XG4gICAgfCBgU2NoZW1lIC0+IHNhZmVfY2hhcnNfZm9yX3NjaGVtZVxuICAgIHwgYEN1c3RvbSAoKGNvbXBvbmVudCA6IGNvbXBvbmVudCksIHNhZmUsIHVuc2FmZSkgLT5cbiAgICAgICBsZXQgc2FmZV9jaGFycyA9IEFycmF5LmNvcHkgKHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQpIGluXG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSB0cnVlXG4gICAgICAgZG9uZTtcbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB1bnNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSB1bnNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSBmYWxzZVxuICAgICAgIGRvbmU7XG4gICAgICAgc2FmZV9jaGFyc1xuICAgIHwgYEdlbmVyaWNcbiAgICB8IF8gLT4gc2FmZV9jaGFyc1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBoc28gPSBoc29cblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgcG9ydCA9IHBvcnRcbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoIHBhdGggPSBwYXRoXG5lbmRcblxubW9kdWxlIEh0dHAgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBoc1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgODAgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuXG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXCIvXCJdXG4gICAgfCB4ICAtPiB4XG5lbmRcblxubW9kdWxlIEh0dHBzIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgSHR0cFxuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgNDQzIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcbmVuZFxuXG5tb2R1bGUgRmlsZSA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPVxuICAgIGxldCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHMgaW5cbiAgICBpZiBocz1cImxvY2FsaG9zdFwiIHRoZW4gXCJcIiBlbHNlIGhzXG5lbmRcblxubW9kdWxlIFVybiA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuZW5kXG5cbmxldCBtb2R1bGVfb2Zfc2NoZW1lID0gZnVuY3Rpb25cbiAgfCBTb21lIHMgLT4gYmVnaW4gbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzIHdpdGhcbiAgICAgIHwgXCJodHRwXCIgLT4gKG1vZHVsZSBIdHRwIDogU2NoZW1lKVxuICAgICAgfCBcImh0dHBzXCIgIC0+IChtb2R1bGUgSHR0cHMgOiBTY2hlbWUpXG4gICAgICB8IFwiZmlsZVwiIC0+IChtb2R1bGUgRmlsZSA6IFNjaGVtZSlcbiAgICAgIHwgXCJ1cm5cIiAgLT4gKG1vZHVsZSBVcm4gOiBTY2hlbWUpXG4gICAgICB8IF8gLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuICAgIGVuZFxuICB8IE5vbmUgLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuXG4oKiogUG9ydGlvbnMgb2YgdGhlIFVSTCBtdXN0IGJlIGNvbnZlcnRlZCB0by1hbmQtZnJvbSBwZXJjZW50LWVuY29kaW5nXG4gICogYW5kIHRoaXMgcmVhbGx5LCByZWFsbHkgc2hvdWxkbid0IGJlIG1peGVkIHVwLiBTbyB0aGlzIFBjdCBtb2R1bGVcbiAgKiBkZWZpbmVzIGFic3RyYWN0IFBjdC5lbmNvZGVkIGFuZCBQY3QuZGVjb2RlZCB0eXBlcyB3aGljaCBzZXRzIHRoZVxuICAqIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmluZy4gIFRoZXJlIGFyZSBmdW5jdGlvbnMgdG8gXCJjYXN0XCIgdG9cbiAgKiBhbmQgZnJvbSB0aGVzZSBhbmQgbm9ybWFsIHN0cmluZ3MsIGFuZCB0aGlzIHByb21vdGVzIGEgYml0IG9mXG4gICogaW50ZXJuYWwgc2FmZXR5LiAgVGhlc2UgdHlwZXMgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBleHRlcm5hbFxuICAqIGludGVyZmFjZSwgYXMgY2FzdGluZyB0by1hbmQtZnJvbSBpcyBxdWl0ZSBhIGJpdCBvZiBoYXNzbGUgYW5kXG4gICogcHJvYmFibHkgbm90IGEgbG90IG9mIHVzZSB0byB0aGUgYXZlcmFnZSBjb25zdW1lciBvZiB0aGlzIGxpYnJhcnlcbiopXG5tb2R1bGUgUGN0IDogc2lnXG4gIHR5cGUgZW5jb2RlZFxuICB0eXBlIGRlY29kZWRcblxuICB2YWwgZW5jb2RlIDogP3NjaGVtZTpzdHJpbmcgLT4gP2NvbXBvbmVudDpjb21wb25lbnQgLT4gZGVjb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCBkZWNvZGUgOiBlbmNvZGVkIC0+IGRlY29kZWRcblxuICAoKiBUaGUgZW1wdHkgZGVjb2RlZCBzdHJpbmcgKilcbiAgdmFsIGVtcHR5X2RlY29kZWQgOiBkZWNvZGVkXG4gICgqIElkZW50aXR5IGZ1bmN0aW9ucyBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2FzdCB3aGVuIHVzaW5nIHRoZW0gYmVsb3cgKilcbiAgdmFsIGNhc3RfZW5jb2RlZCA6IHN0cmluZyAtPiBlbmNvZGVkXG4gIHZhbCBjYXN0X2RlY29kZWQgOiBzdHJpbmcgLT4gZGVjb2RlZFxuICB2YWwgdW5jYXN0X2VuY29kZWQgOiBlbmNvZGVkIC0+IHN0cmluZ1xuICB2YWwgdW5jYXN0X2RlY29kZWQgOiBkZWNvZGVkIC0+IHN0cmluZ1xuICAoKiBMaWZ0IEhPRnMgZm9yIG1hcHMgb3ZlciBlbmNvZGluZ3MsIGRlY29kaW5ncywgYW5kIHN0cmluZ3MgKilcbiAgdmFsIGxpZnRfZW5jb2RlZCA6IChlbmNvZGVkIC0+IGVuY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGxpZnRfZGVjb2RlZCA6IChkZWNvZGVkIC0+IGRlY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHVubGlmdF9lbmNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGVuY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZGVjb2RlZCAtPiBkZWNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZDIgOiAoc3RyaW5nIC0+IHN0cmluZyAtPiAnYSkgLT4gZGVjb2RlZCAtPiBkZWNvZGVkIC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlbmNvZGVkID0gc3RyaW5nXG4gIHR5cGUgZGVjb2RlZCA9IHN0cmluZ1xuICBsZXQgY2FzdF9lbmNvZGVkIHggPSB4XG4gIGxldCBjYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IGVtcHR5X2RlY29kZWQgPSBcIlwiXG4gIGxldCB1bmNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgdW5jYXN0X2VuY29kZWQgeCA9IHhcblxuICBsZXQgbGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCBsaWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQyIGYgPSBmXG5cbiAgKCoqIFNjYW4gZm9yIHJlc2VydmVkIGNoYXJhY3RlcnMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoXG4gICAgICBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHMuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIGIgPVxuICAgIGxldCBtb2R1bGUgU2NoZW1lID0gKHZhbCAobW9kdWxlX29mX3NjaGVtZSBzY2hlbWUpIDogU2NoZW1lKSBpblxuICAgIGxldCBzYWZlX2NoYXJzID0gU2NoZW1lLnNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBiLltjdXJdIGluXG4gICAgICAgIGlmIHNhZmVfY2hhcnMuKGMpIHRoZW5cbiAgICAgICAgICBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIGlmIGN1ciA+IHN0YXJ0IHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQcmludGYuc3ByaW50ZiBcIiUlJTAyWFwiIGMpO1xuICAgICAgICAgIHNjYW4gKGN1cisxKSAoY3VyKzEpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IGludF9vZl9oZXhfY2hhciBjID1cbiAgICBsZXQgYyA9IGludF9vZl9jaGFyIChDaGFyLnVwcGVyY2FzZV9hc2NpaSBjKSAtIDQ4IGluXG4gICAgaWYgYyA+IDlcbiAgICB0aGVuIGlmIGMgPiAxNiAmJiBjIDwgMjNcbiAgICAgIHRoZW4gYyAtIDdcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuICAgIGVsc2UgaWYgYyA+PSAwXG4gICAgdGhlbiBjXG4gICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG5cbiAgKCoqIFNjYW4gZm9yIHBlcmNlbnQtZW5jb2RpbmcgYW5kIGNvbnZlcnQgdGhlbSBpbnRvIEFTQ0lJLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZGVjb2RlZCBzdHJpbmcgKilcbiAgbGV0IGRlY29kZSBiID1cbiAgICAoKiBUT0RPOiBTaG91bGQgYm90aCBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgdmVyc2lvbnMgYmUgZXhwb3NlZD8gKilcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydClcbiAgICAgIGVsc2UgaWYgYi5bY3VyXSA9ICclJyB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSdcbiAgICAgICAgZWxzZSBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICBzY2FuIGN1ciBjdXJcbiAgICAgICAgfCBoaWdoYml0cyAtPiBiZWdpblxuICAgICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdXG4gICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGxldCBzdGFydF9hdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgICAgICAgfCBsb3diaXRzIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgKGhpZ2hiaXRzIGxzbCA0ICsgbG93Yml0cykpO1xuICAgICAgICAgICAgICAgIGN1cisxXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXTtcbiAgICAgICAgICAgICAgICBjdXJcbiAgICAgICAgICAgIGluIHNjYW4gc3RhcnRfYXQgc3RhcnRfYXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbmVuZFxuXG4oKiBQZXJjZW50IGVuY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9lbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgcyA9XG4gIFBjdC4odW5jYXN0X2VuY29kZWQgKGVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgKGNhc3RfZGVjb2RlZCBzKSkpXG5cbmxldCBwY3RfZW5jb2RlclxuICAgICAgPyhzY2hlbWU9YFNjaGVtZSlcbiAgICAgID8odXNlcmluZm89YFVzZXJpbmZvKVxuICAgICAgPyhob3N0PWBIb3N0KVxuICAgICAgPyhwYXRoPWBQYXRoKVxuICAgICAgPyhxdWVyeV9rZXk9YFF1ZXJ5X2tleSlcbiAgICAgID8ocXVlcnlfdmFsdWU9YFF1ZXJ5X3ZhbHVlKVxuICAgICAgPyhmcmFnbWVudD1gRnJhZ21lbnQpXG4gICAgICAoKSA9XG4gIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcGF0aDsgcXVlcnlfa2V5OyBxdWVyeV92YWx1ZTsgZnJhZ21lbnQgfVxuXG4oKiBQZXJjZW50IGRlY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9kZWNvZGUgcyA9IFBjdC4odW5jYXN0X2RlY29kZWQgKGRlY29kZSAoY2FzdF9lbmNvZGVkIHMpKSlcblxuKCogVXNlcmluZm8gc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBpZCAqIGNyZWRlbnRpYWwgcGFpciAqKVxubW9kdWxlIFVzZXJpbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIHN0cmluZyBvcHRpb25cblxuICBsZXQgY29tcGFyZSAodSxwKSAodScscCcpID1cbiAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSB1IHUnIHdpdGhcbiAgICB8IDAgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcCBwJ1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IHVzZXJpbmZvX29mX2VuY29kZWQgdXMgPVxuICAgIG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+bWF4OjIgfm9uOic6JyB1cyB3aXRoXG4gICAgfCBbXSAtPiAoXCJcIixOb25lKVxuICAgIHwgW3VdIC0+IChwY3RfZGVjb2RlIHUsTm9uZSlcbiAgICB8IHU6OnA6Ol8gLT4gKHBjdF9kZWNvZGUgdSxTb21lIChwY3RfZGVjb2RlIHApKVxuXG4gIGxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCAodSxwbykgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcuKFxuICAgICAgMSArIChsZW5ndGggdSkgKyAobWF0Y2ggcG8gd2l0aCBOb25lIC0+IDAgfCBTb21lIHAgLT4gbGVuZ3RoIHApKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB1KTtcbiAgICBiZWdpbiBtYXRjaCBwbyB3aXRoIE5vbmUgLT4gKCk7XG4gICAgfCBTb21lIHAgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBwKVxuICAgIGVuZDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuZW5kXG5cbmxldCB1c2VyaW5mb19vZl9lbmNvZGVkID0gVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ID0gVXNlcmluZm8uZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUGF0aCBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGEgbGlzdCBvZiBwYXRoIHRva2VucyAqKVxubW9kdWxlIFBhdGggPSBzdHJ1Y3RcbiAgKCogSW52YXJpYW50OiBldmVyeSBlbGVtZW50IGlzIG5vbi16ZXJvLCBzbGFzaGVzICgvKSBvbmx5IG9jY3VyIGFsb25lLiAqKVxuICAoKiBZZXMsIGl0J3MgYmV0dGVyIHRoaXMgd2F5LiBUaGlzIG1lYW5zIHlvdSBjYW4gcmV0YWluIHNlcGFyYXRvclxuICAgICBjb250ZXh0IGluIHJlY3Vyc2lvbiAoZS5nLiByZW1vdmVfZG90X3NlZ21lbnRzIGZvciByZWxhdGl2ZSByZXNvbHV0aW9uKS4gKilcblxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlXG5cbiAgKCogTWFrZSBhIHBhdGggdG9rZW4gbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcGF0aF9vZl9lbmNvZGVkIHBzID1cbiAgICBsZXQgdG9rbCA9IFN0cmluZ2V4dC5mdWxsX3NwbGl0IHBzIH5vbjonLycgaW5cbiAgICBMaXN0Lm1hcCBwY3RfZGVjb2RlIHRva2xcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQ+ICopXG4gIGxldCByZW1vdmVfZG90X3NlZ21lbnRzIHAgPVxuICAgIGxldCByZXZwID0gTGlzdC5yZXYgcCBpblxuICAgIGxldCByZWMgbG9vcCBhc2NlbnNpb24gb3V0cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiL1wiOjpcIi4uXCI6OnIgfCBcIi4uXCI6OnIgLT4gbG9vcCAoYXNjZW5zaW9uICsgMSkgb3V0cCByXG4gICAgICB8IFwiL1wiOjpcIi5cIjo6ciAgfCBcIi5cIjo6ciAgLT4gbG9vcCBhc2NlbnNpb24gb3V0cCByXG4gICAgICB8IFwiL1wiOjpbXSB8IFtdIHdoZW4gTGlzdC4obGVuZ3RoIHAgPiAwICYmIGhkIHAgPSBcIi9cIikgLT4gXCIvXCI6Om91dHBcbiAgICAgIHwgW10gd2hlbiBhc2NlbnNpb24gPiAwIC0+IExpc3QucmV2X2FwcGVuZFxuICAgICAgICAoXCIvXCI6OihyZXZfaW50ZXJqZWN0IFwiL1wiIEFycmF5Lih0b19saXN0IChtYWtlIGFzY2Vuc2lvbiBcIi4uXCIpKSkpIG91dHBcbiAgICAgIHwgW10gLT4gTGlzdC4oaWYgbGVuZ3RoIG91dHAgPiAwICYmIGhkIG91dHAgPSBcIi9cIiB0aGVuIHRsIG91dHAgZWxzZSBvdXRwKVxuICAgICAgfCBcIi9cIjo6XCIvXCI6OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgKFwiL1wiOjpyKVxuICAgICAgfCBcIi9cIjo6Xzo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCByXG4gICAgICB8IHM6OnIgLT4gbG9vcCAwIChzOjpvdXRwKSByXG4gICAgaW4gbG9vcCAwIFtdIHJldnBcblxuICBsZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCBwID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBjIHRvayAtPiBTdHJpbmcubGVuZ3RoIHRvayArIGMpIDAgcCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIC0+IGZ1bmN0aW9uXG4gICAgfCBcIi9cIiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgIHwgc2VnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgc2VnKVxuICAgICkgXCJcIiBidWYgcDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuMz4gKilcbiAgbGV0IG1lcmdlIGJob3N0IGJwYXRoIHJlbHBhdGggPVxuICAgIG1hdGNoIGJob3N0LCBMaXN0LnJldiBicGF0aCB3aXRoXG4gICAgfCBTb21lIF8sIFtdIC0+IFwiL1wiOjpyZWxwYXRoXG4gICAgfCBfLCAoXCIvXCI6OnJicGF0aCB8IF86OlwiL1wiOjpyYnBhdGgpIC0+IExpc3QucmV2X2FwcGVuZCAoXCIvXCI6OnJicGF0aCkgcmVscGF0aFxuICAgIHwgXywgXyAtPiByZWxwYXRoXG5lbmRcblxubGV0IHBhdGhfb2ZfZW5jb2RlZCA9IFBhdGgucGF0aF9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCA9IFBhdGguZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBRdWVyeSBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGFzc29jIGxpc3Qgb2Yga2V5L3ZhbHVlcyAqKVxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG5cbiAgdHlwZSBrdiA9IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBLViBvZiBrdlxuICAgIHwgUmF3IG9mIHN0cmluZyBvcHRpb24gKiBrdiBMYXp5LnRcblxuICBsZXQgY29tcGFyZSB4IHkgPSBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IEtWIGt2bCwgS1Yga3ZsJ1xuICAgIHwgUmF3IChfLCBsYXp5IGt2bCksIEtWIGt2bCdcbiAgICB8IEtWIGt2bCwgUmF3IChfLCBsYXp5IGt2bCcpIC0+XG4gICAgICBjb21wYXJlX2xpc3QgKGZ1biAoayx2bCkgKGsnLHZsJykgLT5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgayBrJyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmUgdmwgdmwnXG4gICAgICAgIHwgYyAtPiBjXG4gICAgICApIGt2bCBrdmwnXG4gICAgfCBSYXcgKHJhdyxfKSwgUmF3IChyYXcnLF8pIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHJhdyByYXcnXG5cbiAgbGV0IGZpbmQgcSBrID0gdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHNwbGl0X3F1ZXJ5IHFzID1cbiAgICBsZXQgZWxzID0gU3RyaW5nZXh0LnNwbGl0IH5vbjonJicgcXMgaW5cbiAgICAoKiBSZXBsYWNlIGEgKyBpbiBhIHF1ZXJ5IHN0cmluZyB3aXRoIGEgc3BhY2UgaW4tcGxhY2UgKilcbiAgICBsZXQgcGx1c190b19zcGFjZSBzID1cbiAgICAgIGxldCBzID0gQnl0ZXMudW5zYWZlX29mX3N0cmluZyBzIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQnl0ZXMubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIGlmIEJ5dGVzLmdldCBzIGkgPSAnKycgdGhlbiBCeXRlcy5zZXQgcyBpICcgJ1xuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IChrOjp2OjpfKTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssXG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+b246JywnIChwbHVzX3RvX3NwYWNlIHYpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBbXSAtPiBbXCJcIl0gfCBsIC0+IGwpIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW2tdOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgaywgW10gaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBbXTo6dGwgLT4gbG9vcCAoKFwiXCIsIFtdKTo6YWNjKSB0bFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICBpblxuICAgIG1hdGNoIGVscyB3aXRoXG4gICAgfCBbXSAgLT4gW1wiXCIsW11dXG4gICAgfCBlbHMgLT4gbG9vcCBbXVxuICAgICAgKExpc3QucmV2X21hcCAoZnVuIGVsIC0+IFN0cmluZ2V4dC5zcGxpdCB+b246Jz0nIGVsIH5tYXg6MikgZWxzKVxuXG4gICgqIE1ha2UgYSBxdWVyeSB0dXBsZSBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBxdWVyeV9vZl9lbmNvZGVkIHFzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoaywgdikgLT4gKHBjdF9kZWNvZGUgaywgTGlzdC5tYXAgcGN0X2RlY29kZSB2KSlcbiAgICAgIChzcGxpdF9xdWVyeSBxcylcblxuICAoKiBBc3NlbWJsZSBhIHF1ZXJ5IHN0cmluZyBzdWl0YWJsZSBmb3IgcHV0dGluZyBpbnRvIGEgVVJJLlxuICAgKiBUdXBsZSBpbnB1dHMgYXJlIHBlcmNlbnQgZGVjb2RlZCBhbmQgd2lsbCBiZSBlbmNvZGVkIGJ5XG4gICAqIHRoaXMgZnVuY3Rpb24uXG4gICopXG4gIGxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAoayx2KSAtPlxuICAgICAgICBhICsgKFN0cmluZy5sZW5ndGggaylcbiAgICAgICAgKyAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhIHMgLT4gYSsoU3RyaW5nLmxlbmd0aCBzKSsxKSAwIHYpICsgMikgKC0xKSBsIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgKGssdikgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV9rZXkgayk7XG4gICAgICAgIGlmIHYgPD4gW10gdGhlbiAoXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPSc7XG4gICAgICAgICAgaXRlcl9jb25jYXQgKGZ1biBidWYgcyAtPlxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgICAgICAgICAgICAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfdmFsdWUgcylcbiAgICAgICAgICAgICkgXCIsXCIgYnVmIHYpXG4gICAgICApIFwiJlwiIGJ1ZiBsO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgb2ZfcmF3IHFzID1cbiAgICBsZXQgbGF6eV9xdWVyeSA9IExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiBxdWVyeV9vZl9lbmNvZGVkIHFzKSBpblxuICAgIFJhdyAoU29tZSBxcywgbGF6eV9xdWVyeSlcblxuICBsZXQga3YgPSBmdW5jdGlvbiBSYXcgKF8sIGxhenkga3YpIHwgS1Yga3YgLT4ga3ZcbmVuZFxuXG5sZXQgcXVlcnlfb2ZfZW5jb2RlZCA9IFF1ZXJ5LnF1ZXJ5X29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPSBRdWVyeS5lbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWVcblxuKCogVHlwZSBvZiB0aGUgVVJJLCB3aXRoIG1vc3QgYml0cyBiZWluZyBvcHRpb25hbCAqKVxudHlwZSB0ID0ge1xuICBzY2hlbWU6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbiAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF0gb3B0aW9uIDtcbiAgcG9ydDogaW50IG9wdGlvbjtcbiAgcGF0aDogUGF0aC50O1xuICBxdWVyeTogUXVlcnkudDtcbiAgZnJhZ21lbnQ6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID0ge1xuICBzY2hlbWUgPSBOb25lO1xuICB1c2VyaW5mbyA9IE5vbmU7XG4gIGhvc3QgPSBOb25lO1xuICBwb3J0ID0gTm9uZTtcbiAgcGF0aCA9IFtdO1xuICBxdWVyeSA9IFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSk7XG4gIGZyYWdtZW50ID0gTm9uZTtcbn1cblxubGV0IGNvbXBhcmVfZGVjb2RlZCA9IFBjdC51bmxpZnRfZGVjb2RlZDIgU3RyaW5nLmNvbXBhcmVcbmxldCBjb21wYXJlX2RlY29kZWRfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9kZWNvZGVkXG5sZXQgY29tcGFyZV9ob3N0IGgxIGgyID1cbiAgbWF0Y2ggaDEsIGgyIHdpdGhcbiAgfCBgSXB2NF9saXRlcmFsIGlwMSwgYElwdjRfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBJcHY2X2xpdGVyYWwgaXAxLCBgSXB2Nl9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYEhvc3QgaDEsIGBIb3N0IGgyIC0+IGNvbXBhcmVfZGVjb2RlZCBoMSBoMlxuICB8IF8gLT4gLTFcbmxldCBjb21wYXJlX2hvc3Rfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9ob3N0XG5cbmxldCBjb21wYXJlIHQgdCcgPVxuICAobWF0Y2ggY29tcGFyZV9ob3N0X29wdCB0Lmhvc3QgdCcuaG9zdCB3aXRoXG4gIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9kZWNvZGVkX29wdCB0LnNjaGVtZSB0Jy5zY2hlbWUgd2l0aFxuICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgKGZ1biBwIHAnIC0+XG4gICAgICBpZiBwIDwgcCcgdGhlbiAtMSBlbHNlIGlmIHAgPiBwJyB0aGVuIDEgZWxzZSAwXG4gICAgKSB0LnBvcnQgdCcucG9ydCB3aXRoXG4gICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IFVzZXJpbmZvLmNvbXBhcmUgdC51c2VyaW5mbyB0Jy51c2VyaW5mbyB3aXRoXG4gICAgICAgIHwgMCAtPiAobWF0Y2ggUGF0aC5jb21wYXJlIHQucGF0aCB0Jy5wYXRoIHdpdGhcbiAgICAgICAgICB8IDAgLT4gKG1hdGNoIFF1ZXJ5LmNvbXBhcmUgdC5xdWVyeSB0Jy5xdWVyeSB3aXRoXG4gICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9kZWNvZGVkX29wdCB0LmZyYWdtZW50IHQnLmZyYWdtZW50XG4gICAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgfCBjIC0+IGMpXG4gICAgICB8IGMgLT4gYylcbiAgICB8IGMgLT4gYylcbiAgfCBjIC0+IGMpXG5cbmxldCBlcXVhbCB0IHQnID0gY29tcGFyZSB0IHQnID0gMFxuXG5sZXQgdW5jYXN0X29wdCA9IGZ1bmN0aW9uXG4gIHwgU29tZSBoIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgbm9ybWFsaXplIHNjaGVtIHVyaSA9XG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHNjaGVtKSkgOiBTY2hlbWUpIGluXG4gIGxldCBkb2IgZiA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gU29tZSAoUGN0LnVubGlmdF9kZWNvZGVkIGYgeClcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpbiB7dXJpIHdpdGhcbiAgICAgIHNjaGVtZT1kb2IgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSB1cmkuc2NoZW1lO1xuICAgICAgaG9zdD0gbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICAgIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjRfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjZfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTY2hlbWUubm9ybWFsaXplX2hvc3QgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIH1cblxuKCoqIENvbnZlcnQgYSBVUkkgc3RydWN0dXJlIGludG8gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nXG4gICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjM+XG4qKVxubGV0IHRvX3N0cmluZyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPVxuICBsZXQgc2NoZW1lID0gbWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHMpXG4gICAgfCBOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gICgqIFBlcmNlbnQgZW5jb2RlIGEgZGVjb2RlZCBzdHJpbmcgYW5kIGFkZCBpdCB0byB0aGUgYnVmZmVyICopXG4gIGxldCBhZGRfcGN0X3N0cmluZyA/KGNvbXBvbmVudD1gUGF0aCkgeCA9XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWQgKFBjdC5lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHgpKVxuICBpblxuICAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgeCAtPlxuICAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnNjaGVtZSB4O1xuICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6J1xuICApO1xuICAoKiBVUkkgaGFzIGEgaG9zdCBpZiBhbnkgaG9zdC1yZWxhdGVkIGNvbXBvbmVudCBpcyBzZXQuIERlZmF1bHRzIHRvIFwiXCIuICopXG4gIGlmIChtYXRjaCB1cmkudXNlcmluZm8sIHVyaS5ob3N0LCB1cmkucG9ydCB3aXRoXG4gIHwgU29tZSBfLCBfLCBfIHwgXywgU29tZSBfLCBfIHwgXywgXywgU29tZSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi8vXCI7XG4gIChtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSB1c2VyaW5mbyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdAJ1xuICApO1xuICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmhvc3QgaG9zdDtcbiAgfFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3RcbiAgfFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1snO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3Q7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICddJ1xuICApO1xuICAobWF0Y2ggdXJpLnBvcnQgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSBwb3J0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChzdHJpbmdfb2ZfaW50IHBvcnQpXG4gICk7XG4gIChtYXRjaCB1cmkucGF0aCB3aXRoICgqIEhhbmRsZSByZWxhdGl2ZSBwYXRocyBjb3JyZWN0bHkgKilcbiAgfCBbXSAtPiAoKVxuICB8IFwiL1wiOjpfIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICB8IGZpcnN0X3NlZ21lbnQ6Ol8gLT5cbiAgICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICB8IFNvbWUgXyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgICB8IE5vbmUgLT5cbiAgICAgICAoKiBlbnN1cmUgcm91bmR0cmlwIGJ5IGZvcmNpbmcgcmVsYXRpdmUgcGF0aCBpbnRlcnByZXRhdGlvbiBub3Qgc2NoZW1lICopXG4gICAgICAgbWF0Y2ggU3RyaW5nZXh0LmZpbmRfZnJvbSBmaXJzdF9zZWdtZW50IH5wYXR0ZXJuOlwiOlwiIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgXyAtPiBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgIHwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIuL1wiXG4gICAgKTtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gICk7XG4gIFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgIHwgUmF3IChOb25lLF8pIHwgS1YgW10gLT4gKClcbiAgICB8IFJhdyAoXyxsYXp5IHEpIHwgS1YgcSAtPiAoKiBub3JtYWxpemUgZS5nLiBwZXJjZW50IGNhcGl0YWxpemF0aW9uICopXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIH5wY3RfZW5jb2RlciBxKVxuICApO1xuICAobWF0Y2ggdXJpLmZyYWdtZW50IHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSBmIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyMnOyBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmZyYWdtZW50IGZcbiAgKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4oKiBWYXJpb3VzIGFjY2Vzc29yIGZ1bmN0aW9ucywgYXMgdGhlIGV4dGVybmFsIHVyaSB0eXBlIGlzIGFic3RyYWN0ICAqKVxubGV0IGdldF9kZWNvZGVkX29wdCA9IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8U29tZSB4IC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCB4KVxubGV0IHNjaGVtZSB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLnNjaGVtZVxubGV0IHdpdGhfc2NoZW1lIHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxTb21lIHNjaGVtZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIHNjaGVtZSkgfVxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Ob25lIH1cblxubGV0IGhvc3QgdXJpID1cbiAgbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gU29tZSBoXG4gIHwgU29tZSAoYEhvc3QgaCkgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbmxldCBob3N0X3dpdGhfZGVmYXVsdCA/KGRlZmF1bHQ9XCJsb2NhbGhvc3RcIikgdXJpID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8Tm9uZSAtPiBkZWZhdWx0XG4gIHxTb21lIGggLT4gaFxuXG5sZXQgdXNlcmluZm8gPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVzZXJpbmZvIC0+IFNvbWUgKFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBOb25lIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mb1xuICAgIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKVxubGV0IHdpdGhfdXNlcmluZm8gdXJpIHVzZXJpbmZvID1cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSlcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpblxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuXG5sZXQgdXNlciB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKHVzZXIsIF8pIC0+IFNvbWUgdXNlclxuXG5sZXQgcGFzc3dvcmQgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoXywgTm9uZSkgLT4gTm9uZVxuICB8IFNvbWUgKF8sIFNvbWUgcGFzcykgLT4gU29tZSBwYXNzXG5sZXQgd2l0aF9wYXNzd29yZCB1cmkgcGFzc3dvcmQgPVxuICBsZXQgcmVzdWx0IHVzZXJpbmZvID0gbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIGluXG4gIG1hdGNoIHVyaS51c2VyaW5mbywgcGFzc3dvcmQgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdXJpXG4gIHwgTm9uZSwgU29tZSBfIC0+IHJlc3VsdCAoU29tZSAoXCJcIixwYXNzd29yZCkpXG4gIHwgU29tZSAodXNlcixfKSwgXyAtPiByZXN1bHQgKFNvbWUgKHVzZXIsIHBhc3N3b3JkKSlcblxubGV0IHBvcnQgdXJpID0gdXJpLnBvcnRcbmxldCB3aXRoX3BvcnQgdXJpIHBvcnQgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggcG9ydD1wb3J0IH1cbiAgfCBOb25lIC0+IGJlZ2luXG4gICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PU5vbmU7IHBvcnQ9Tm9uZSB9XG4gICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHBvcnQ9cG9ydCB9XG4gIGVuZFxuXG4oKiBSZXR1cm4gdGhlIHBhdGggY29tcG9uZW50ICopXG5sZXQgcGF0aCA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICB8IE5vbmUgLT4gZW5jb2RlZF9vZl9wYXRoIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aFxuICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3BhdGggfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aClcbmxldCB3aXRoX3BhdGggdXJpIHBhdGggPVxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwYXRoIGluXG4gIG1hdGNoIGhvc3QgdXJpLCBwYXRoIHdpdGhcbiAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4geyB1cmkgd2l0aCBwYXRoPXBhdGggfVxuICB8IFNvbWUgXywgXyAgLT4geyB1cmkgd2l0aCBwYXRoPVwiL1wiOjpwYXRoIH1cblxubGV0IGZyYWdtZW50IHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuZnJhZ21lbnRcbmxldCB3aXRoX2ZyYWdtZW50IHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxOb25lIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9Tm9uZSB9XG4gIHxTb21lIGZyYWcgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIGZyYWcpIH1cblxubGV0IHF1ZXJ5IHVyaSA9IFF1ZXJ5Lmt2IHVyaS5xdWVyeVxubGV0IHZlcmJhdGltX3F1ZXJ5ID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICB8IFJhdyAocXMsXykgLT4gcXNcbiAgfCBLViBbXSAtPiBOb25lXG4gIHwgS1Yga3YgLT4gU29tZSAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lOihzY2hlbWUgdXJpKSB+cGN0X2VuY29kZXIga3YpXG4pXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayA9IFF1ZXJ5LihmaW5kIChrdiB1cmkucXVlcnkpIGspXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtIHVyaSBrID1cbiAgbWF0Y2ggZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayB3aXRoXG4gIHxOb25lIC0+IE5vbmVcbiAgfFNvbWUgdiAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLFwiIHYpXG5cbmxldCB3aXRoX3F1ZXJ5IHVyaSBxdWVyeSA9IHsgdXJpIHdpdGggcXVlcnk9UXVlcnkuS1YgcXVlcnkgfVxubGV0IHFfcyBxID0gTGlzdC5tYXAgKGZ1biAoayx2KSAtPiBrLFt2XSkgcVxubGV0IHdpdGhfcXVlcnknIHVyaSBxdWVyeSA9IHdpdGhfcXVlcnkgdXJpIChxX3MgcXVlcnkpXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtIHVyaSBwID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHA6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbScgdXJpIChrLHYpID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChrLFt2XSk6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMgdXJpIHBzID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHBzQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMnIHVyaSBwcyA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgocV9zIHBzKUAoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCByZW1vdmVfcXVlcnlfcGFyYW0gdXJpIGsgPSBRdWVyeS4oXG4gIHsgdXJpIHdpdGggcXVlcnk9S1YgKExpc3QuZmlsdGVyIChmdW4gKGsnLF8pIC0+IGs8PmsnKSAoa3YgdXJpLnF1ZXJ5KSkgfVxuKVxuXG4oKiBDb25zdHJ1Y3QgZW5jb2RlZCBwYXRoIGFuZCBxdWVyeSBjb21wb25lbnRzICopXG5sZXQgcGF0aF9hbmRfcXVlcnkgdXJpID1cbiAgbWF0Y2ggKHBhdGggdXJpKSwgKHF1ZXJ5IHVyaSkgd2l0aFxuICB8XCJcIiwgW10gLT4gXCIvXCIgKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgfFwiXCIsIHEgLT4gKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIvPyVzXCIgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuICB8cCwgW10gLT4gcFxuICB8cCwgcSAtPlxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPyVzXCIgcCAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG5cbigqIFRPRE86IGZ1bmN0aW9ucyB0byBhZGQgYW5kIHJlbW92ZSBmcm9tIGEgVVJJICopXG5cbigqIFJlc29sdmUgYSBVUkkgd3J0IGEgYmFzZSBVUkkgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjI+ICopXG5sZXQgcmVzb2x2ZSBzY2hlbSBiYXNlIHVyaSA9XG4gIGxldCBzY2hlbSA9IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgKG1hdGNoIHNjaGVtZSBiYXNlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAgc2NoZW1cbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgKSkgaW5cbiAgbm9ybWFsaXplIHNjaGVtXG4gICAgUGF0aC4obWF0Y2ggc2NoZW1lIHVyaSwgdXNlcmluZm8gdXJpLCBob3N0IHVyaSB3aXRoXG4gICAgfCBTb21lIF8sIF8sIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBTb21lIF8sIF9cbiAgICB8IE5vbmUsIF8sIFNvbWUgXyAtPlxuICAgICAge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICAgbGV0IHVyaSA9IHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHVzZXJpbmZvPWJhc2UudXNlcmluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9YmFzZS5ob3N0OyBwb3J0PWJhc2UucG9ydH0gaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9IHBhdGggdXJpIGluXG4gICAgICBpZiBwYXRoX3N0cj1cIlwiXG4gICAgICB0aGVuIHsgdXJpIHdpdGhcbiAgICAgICAgICAgICBwYXRoPWJhc2UucGF0aDtcbiAgICAgICAgICAgICBxdWVyeT1tYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgICAgICAgICAgICAgfCBRdWVyeS5SYXcgKE5vbmUsXykgfCBRdWVyeS5LViBbXSAtPiBiYXNlLnF1ZXJ5XG4gICAgICAgICAgICAgICB8IF8gLT4gdXJpLnF1ZXJ5XG4gICAgICAgICAgIH1cbiAgICAgIGVsc2UgaWYgcGF0aF9zdHIuWzBdPScvJ1xuICAgICAgdGhlbiB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgICAgZWxzZSB7dXJpIHdpdGhcbiAgICAgICAgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIChtZXJnZSBiYXNlLmhvc3QgYmFzZS5wYXRoIHVyaS5wYXRoKTtcbiAgICAgIH1cbiAgICApXG5cbmxldCBjYW5vbmljYWxpemUgdXJpID1cbiAgbGV0IHVyaSA9IHJlc29sdmUgXCJcIiBlbXB0eSB1cmkgaW5cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgdXJpLnNjaGVtZSkpIDogU2NoZW1lKSBpblxuICB7IHVyaSB3aXRoXG4gICAgcG9ydD1TY2hlbWUuY2Fub25pY2FsaXplX3BvcnQgdXJpLnBvcnQ7XG4gICAgcGF0aD1TY2hlbWUuY2Fub25pY2FsaXplX3BhdGggdXJpLnBhdGg7XG4gIH1cblxubGV0IHBwIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcbmxldCBwcF9odW0gcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxuXG5tb2R1bGUgUGFyc2VyID0gc3RydWN0XG4gIG9wZW4gQW5nc3Ryb21cblxuICBsZXQgc3RyaW5nX29mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyX2xpc3QgY2hhcnMgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2NoYXIgY2hhcnMpXG5cbiAgbGV0IHNjaGVtZSA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKHRha2Vfd2hpbGUgKGZ1biBjIC0+IGMgPD4gJzonICYmIGMgPD4gJy8nICYmIGMgPD4gJz8nICYmIGMgPD4gJyMnKVxuICAgICAgPCogY2hhciAnOicpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBoZXhfZGlnaXQgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgaGV4YWRlY2ltYWwgPSBsaWZ0IHN0cmluZ19vZl9jaGFyX2xpc3QgKG1hbnkgaGV4X2RpZ2l0KVxuXG4gIGxldCBjX2RvdCA9IGNoYXIgJy4nXG5cbiAgbGV0IGNfYXQgPSBjaGFyICdAJ1xuXG4gIGxldCBjX2NvbG9uID0gY2hhciAnOidcblxuICBsZXQgZGVjX29jdGV0ID1cbiAgICB0YWtlX3doaWxlMSAoZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgPj49IGZ1biBudW0gLT5cbiAgICBpZiBpbnRfb2Zfc3RyaW5nIG51bSA8IDI1NiB0aGVuXG4gICAgICByZXR1cm4gbnVtXG4gICAgZWxzZVxuICAgICAgZmFpbCBcImludmFsaWQgb2N0ZWN0XCJcblxuICBsZXQgaXB2NF9hZGRyZXNzID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB0aHJlZSBvbmUgLT4gU3RyaW5nLmNvbmNhdCBcIi5cIiB0aHJlZSBeIFwiLlwiIF4gb25lKVxuICAgICAgKGNvdW50IDMgKGRlY19vY3RldCA8KiBjX2RvdCkpXG4gICAgICBkZWNfb2N0ZXRcblxuICAoKiAtLSBhZnRlciBkb3VibGUgY29sb24sIElQdjQgZG90dGVkIG5vdGF0aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSAqKVxuICBsZXQgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICBmaXggKGZ1biBmIC0+XG4gICAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXVxuICAgICAgICA8fD4gbGlmdDIgKGZ1biB4IHkgLT4geCA6OiB5KSBoZXhhZGVjaW1hbCAoY19jb2xvbiAqPiBmIDx8PiByZXR1cm4gW10pKVxuXG4gIGxldCBkb3VibGVfY29sb24gY291bnQgPVxuICAgIGFmdGVyX2RvdWJsZV9jb2xvbiA+Pj0gKGZ1biByZXN0IC0+XG4gICAgbGV0IGZpbGxlcl9sZW5ndGggPSA4IC0gY291bnQgLSBMaXN0Lmxlbmd0aCByZXN0IGluXG4gICAgaWYgZmlsbGVyX2xlbmd0aCA8PSAwIHRoZW5cbiAgICAgIGZhaWwgXCJ0b28gbWFueSBwYXJ0cyBpbiBJUHY2IGFkZHJlc3NcIlxuICAgIGVsc2VcbiAgICAgIHJldHVybiAoXCJcIiA6OiByZXN0KSlcbiAgICA8fD4gcmV0dXJuIFtcIlwiXVxuXG4gIGxldCByZWMgcGFydCA9IGZ1bmN0aW9uXG4gICAgfCA3IC0+XG4gICAgICAoKiBtYXggOCBwYXJ0cyBpbiBhbiBJUHY2IGFkZHJlc3MgKilcbiAgICAgIGxpZnQgKGZ1biB4IC0+IFsgeCBdKSBoZXhhZGVjaW1hbFxuICAgIHwgNiAtPlxuICAgICAgKCogYWZ0ZXIgNiBwYXJ0cyBpdCBjb3VsZCBlbmQgaW4gSVB2NCBkb3R0ZWQgbm90YXRpb24gKilcbiAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXSA8fD4gaGV4X3BhcnQgNlxuICAgIHwgbiAtPlxuICAgICAgaGV4X3BhcnQgblxuXG4gIGFuZCBoZXhfcGFydCBuID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB4IHkgLT4geCA6OiB5KVxuICAgICAgaGV4YWRlY2ltYWxcbiAgICAgIChjX2NvbG9uICo+IChjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAobiArIDEpIDx8PiBwYXJ0IChuICsgMSkpKVxuXG4gIGxldCByZWMgc3BsaXRfd2l0aCBmIHhzID1cbiAgICBtYXRjaCB4cyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgW10sIFtdXG4gICAgfCB5IDo6IHlzIC0+XG4gICAgICBpZiBmIHkgdGhlblxuICAgICAgICBsZXQgenMsIHRzID0gc3BsaXRfd2l0aCBmIHlzIGluXG4gICAgICAgIHkgOjogenMsIHRzXG4gICAgICBlbHNlXG4gICAgICAgIFtdLCB4c1xuXG4gIGxldCBpcHY2ID1cbiAgICBsZXQgZm9ybWF0X2FkZHIgc2VnbWVudHMgPVxuICAgICAgbGV0IGJlZm9yZV9kb3VibGVfY29sb24sIGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgICAgIHNwbGl0X3dpdGggKGZ1biBzZWdtZW50IC0+IHNlZ21lbnQgPD4gXCJcIikgc2VnbWVudHNcbiAgICAgIGluXG4gICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLmNvbmNhdCBcIjpcIiBiZWZvcmVfZG91YmxlX2NvbG9uIGluXG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgbWF0Y2ggYWZ0ZXJfZG91YmxlX2NvbG9uIHdpdGhcbiAgICAgICAgfCBcIlwiIDo6IHhzIC0+XG4gICAgICAgICAgYmVmb3JlIF4gXCI6OlwiIF4gU3RyaW5nLmNvbmNhdCBcIjpcIiB4c1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBiZWZvcmVcbiAgICAgIGluXG4gICAgICByZXNcbiAgICBpblxuICAgIGxpZnQgZm9ybWF0X2FkZHIgKGNfY29sb24gKj4gY19jb2xvbiAqPiBkb3VibGVfY29sb24gMCA8fD4gcGFydCAwKVxuXG4gIGxldCBpcHY2X2FkZHJlc3MgPVxuICAgIChjaGFyICdbJykgKj4gaXB2NiA8KiAoY2hhciAnXScpXG5cbiAgbGV0IHBjdF9lbmNvZGVkID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biBwY3QgZGlnaXRzIC0+IHN0cmluZ19vZl9jaGFyX2xpc3QgKHBjdCA6OiBkaWdpdHMpKVxuICAgICAgKGNoYXIgJyUnKVxuICAgICAgKGNvdW50IDIgaGV4X2RpZ2l0KVxuXG4gIGxldCBzdWJfZGVsaW1zID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICchJyB8ICckJyB8ICcmJyB8ICdcXCcnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJywnIHwgJzsnIHwgJz0nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgdW5yZXNlcnZlZCA9XG4gICAgKCogXCJbQS1aYS16MC05LS5ffl1cIiAqKVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJy0nIHwgJy4nIHwgJ18nIHwgJ34nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgcmVnX25hbWUgPVxuICAgIGxpZnRcbiAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgXSkpXG5cbiAgbGV0IGhvc3QgPVxuICAgIGNob2ljZVxuICAgICAgWyBpcHY0X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2NF9saXRlcmFsIGgpXG4gICAgICA7IGlwdjZfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY2X2xpdGVyYWwgaClcbiAgICAgIDsgcmVnX25hbWUgPj58IChmdW4gcyAtPiBgSG9zdCAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoKiBUT0RPKGRpbm9zYXVyZSk6IEFjY29yZGluZyB0byBSRkMzOTg2OlxuXG4gICAgICAgICBob3N0ICAgICAgICA9IElQLWxpdGVyYWwgLyBJUHY0YWRkcmVzcyAvIHJlZy1uYW1lXG4gICAgICAgICBJUC1saXRlcmFsICA9IFwiW1wiICggSVB2NmFkZHJlc3MgLyBJUHZGdXR1cmUgICkgXCJdXCJcbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuXG4gICAgICAgICBJUHZGdXR1cmUgaXMgbm90IGltcGxlbWVudGVkLiBXZSBzaG91bGQgaGFuZGxlIGl0OlxuXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcbiAgICAgICAqKVxuICAgICAgXVxuXG4gIGxldCB1c2VyaW5mbyA9XG4gICAgbGlmdFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCBzID0gU3RyaW5nLmNvbmNhdCBcIlwiIHggaW5cbiAgICAgICAgU29tZSAoVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZCBzKSlcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBjX2NvbG9uXG4gICAgICAgICAgICBdKVxuICAgICAgPCogY19hdClcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgcG9ydCA9XG4gICAgcGVla19jaGFyID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSAnOicgLT5cbiAgICAgIGNfY29sb24gKj4gdGFrZV93aGlsZSBpc19kaWdpdCA+PnwgZnVuIHBvcnQgLT5cbiAgICAgIGxldCBkZWNvZGVkID0gUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBwb3J0KSBpblxuICAgICAgKHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChQY3QudW5jYXN0X2RlY29kZWQgZGVjb2RlZCkpIHdpdGggXyAtPiBOb25lKVxuICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgcmV0dXJuIE5vbmVcblxuICBsZXQgYXV0aG9yaXR5ID1cbiAgICBzdHJpbmcgXCIvL1wiXG4gICAgKj4gbGlmdDNcbiAgICAgICAgIChmdW4gdXNlcmluZm8gaG9zdCBwb3J0IC0+XG4gICAgICAgICAgIHVzZXJpbmZvLCBTb21lIGhvc3QsIHBvcnQpXG4gICAgICAgICB1c2VyaW5mb1xuICAgICAgICAgaG9zdFxuICAgICAgICAgcG9ydFxuICAgIDx8PiByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpXG5cbiAgbGV0IHBhdGggPVxuICAgIGxpZnRcbiAgICAgIFBhdGgucGF0aF9vZl9lbmNvZGVkXG4gICAgICAodGFrZV93aGlsZSAoZnVuY3Rpb24gJz8nIHwgJyMnIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSlcblxuICBsZXQgcXVlcnkgPVxuICAgIGxpZnRcbiAgICAgIFF1ZXJ5Lm9mX3Jhd1xuICAgICAgKGNoYXIgJz8nICo+IHRha2VfdGlsbCAoZnVuY3Rpb24gJyMnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSlcbiAgICA8fD4gcmV0dXJuIChRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pKVxuXG4gIGxldCBmcmFnbWVudCA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKGNoYXIgJyMnICo+IHRha2Vfd2hpbGUgKGZ1biBfIC0+IHRydWUpKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBfdXJpX3JlZmVyZW5jZSA9XG4gICAgbGlmdDRcbiAgICAgIChmdW4gc2NoZW1lICh1c2VyaW5mbywgaG9zdCwgcG9ydCkgcGF0aCBxdWVyeSBmcmFnbWVudCAtPlxuICAgICAgICBub3JtYWxpemUgc2NoZW1lIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0pXG4gICAgICBzY2hlbWVcbiAgICAgIGF1dGhvcml0eVxuICAgICAgcGF0aFxuICAgICAgcXVlcnlcbiAgICA8Kj4gZnJhZ21lbnRcblxuICAoKiBYWFgoYW5tb250ZWlybyk6IEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2l0aCB0aGUgb2xkIHJlZ2V4IHBhcnNlciwgd2VcbiAgICogb25seSBwYXJzZSB1bnRpbCB0aGUgZmlyc3QgbmV3bGluZSBjaGFyYWN0ZXIgYW5kIGRyb3AgZXZlcnl0aGluZyBlbHNlXG4gICAqIGFmdGVyIHRoYXQgKilcbiAgbGV0IHVyaV9yZWZlcmVuY2UgPVxuICAgIHRha2Vfd2hpbGUgKGZ1bmN0aW9uIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpID4+fCBmdW4gcyAtPlxuICAgICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBfdXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgICAgIHwgT2sgdCAtPiB0XG4gICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgICAgIGVtcHR5XG5lbmRcblxubGV0IGRlY29kZV9ob3N0IGhvc3QgPVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5ob3N0IGhvc3Qgd2l0aFxuICB8IE9rIHBhcnNlZCAtPiBwYXJzZWRcbiAgfCBFcnJvciBfIC0+XG4gICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaXB2NiBob3N0IHdpdGhcbiAgICB8IE9rIHBhcnNlZCAtPiAoYElwdjZfbGl0ZXJhbCBwYXJzZWQpXG4gICAgfCBFcnJvciBfIC0+IChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBob3N0KSlcblxuKCogTWFrZSBhIFVSSSByZWNvcmQuIFRoaXMgaXMgYSBiaXQgbW9yZSBpbmVmZmljaWVudCB0aGFuIGl0IG5lZWRzIHRvIGJlIGR1ZSB0byB0aGVcbiAqIGNhc3RpbmcvdW5jYXN0aW5nICh3aGljaCBpc24ndCBmdWxseSBpZGVudGl0eSBkdWUgdG8gdGhlIG9wdGlvbiBib3gpLCBidXQgaXQgaXNcbiAqIG5vIGJpZyBkZWFsIGZvciBub3cuXG4qKVxubGV0IG1ha2UgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gIGxldCBob3N0ID0gbWF0Y2ggdXNlcmluZm8sIGhvc3QsIHBvcnQgd2l0aFxuICAgIHwgXywgU29tZSBfLCBfIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBob3N0XG4gICAgfCBTb21lIF8sIE5vbmUsIF8gfCBfLCBOb25lLCBTb21lIF8gLT4gU29tZSBcIlwiXG4gIGluXG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgIG1hdGNoIGhvc3QsIHBhdGggd2l0aFxuICAgICAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4gcGF0aFxuICAgICAgfCBTb21lIF8sIF8gIC0+IFwiL1wiOjpwYXRoXG4gIGluXG4gIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gIGluXG4gIGxldCBzY2hlbWUgPSBkZWNvZGUgc2NoZW1lIGluXG4gIG5vcm1hbGl6ZSBzY2hlbWVcbiAgICB7IHNjaGVtZTsgdXNlcmluZm87XG4gICAgICBob3N0ID1cbiAgICAgICAgKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICB8IE5vbmUgLT4gTm9uZSk7XG4gICAgICBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxubGV0IHdpdGhfaG9zdCB1cmkgaG9zdCA9XG4gIHsgdXJpIHdpdGhcbiAgICBob3N0ID0gKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICB9XG5cbmxldCB3aXRoX3VyaSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50IHVyaSA9XG4gIGxldCB3aXRoX3BhdGhfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcGF0aCB1IFwiXCJcbiAgICB8IFNvbWUgcCAtPiB3aXRoX3BhdGggdSBwXG4gIGluXG4gIGxldCB3aXRoX3F1ZXJ5X29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3F1ZXJ5IHUgW11cbiAgICB8IFNvbWUgcSAtPiB3aXRoX3F1ZXJ5IHUgcVxuICBpblxuICBsZXQgd2l0aF8gZiBvIHUgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB1XG4gICAgfCBTb21lIHggLT4gZiB1IHhcbiAgaW5cbiAgd2l0aF8gd2l0aF9zY2hlbWUgc2NoZW1lIHVyaVxuICB8PiB3aXRoXyB3aXRoX3VzZXJpbmZvIHVzZXJpbmZvXG4gIHw+IHdpdGhfIHdpdGhfaG9zdCBob3N0XG4gIHw+IHdpdGhfIHdpdGhfcG9ydCBwb3J0XG4gIHw+IHdpdGhfIHdpdGhfcGF0aF9vcHQgcGF0aFxuICB8PiB3aXRoXyB3aXRoX3F1ZXJ5X29wdCBxdWVyeVxuICB8PiB3aXRoXyB3aXRoX2ZyYWdtZW50IGZyYWdtZW50XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gICgqIFRvIHByZXNlcnZlIHRoZSBvbGQgcmVnZXggcGFyc2VyJ3MgYmVoYXZpb3IsIHdlIG9ubHkgcGFyc2UgYSBwcmVmaXgsIGFuZFxuICAgKiBzdG9wIHdoZW5ldmVyIHdlIGNhbid0IHBhcnNlIG1vcmUuICopXG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpQcmVmaXggUGFyc2VyLnVyaV9yZWZlcmVuY2UgcyB3aXRoXG4gIHwgT2sgdCAtPiB0XG4gIHwgRXJyb3IgXyAtPlxuICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgIGVtcHR5XG5cbm1vZHVsZSBBYnNvbHV0ZV9odHRwID0gc3RydWN0XG4gIHR5cGUgdXJpID0gdFxuICB0eXBlIHQgPVxuICAgIHsgc2NoZW1lIDogWyBgSHR0cCB8IGBIdHRwcyBdO1xuICAgICAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICAgICAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF07XG4gICAgICBwb3J0IDogaW50IG9wdGlvbjtcbiAgICAgIHBhdGggOiBQYXRoLnQ7XG4gICAgICBxdWVyeSA6IFF1ZXJ5LnQ7XG4gICAgICBmcmFnbWVudCA6IFBjdC5kZWNvZGVkIG9wdGlvblxuICAgIH1cblxuICBsZXQgKCBsZXQqICkgPSBSZXN1bHQuYmluZFxuXG4gIGxldCB0b191cmkgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSA9XG4gICAgbGV0IHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBgSHR0cCAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cFwiXG4gICAgICB8IGBIdHRwcyAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cHNcIlxuICAgIGluXG4gICAgKHsgc2NoZW1lID0gU29tZSBzY2hlbWU7XG4gICAgICAgdXNlcmluZm87XG4gICAgICAgaG9zdCA9IFNvbWUgaG9zdDtcbiAgICAgICBwb3J0O1xuICAgICAgIHBhdGg7XG4gICAgICAgcXVlcnk7XG4gICAgICAgZnJhZ21lbnQgfSA6IHVyaSlcbiAgOztcblxuICBsZXQgb2ZfdXJpICh7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9OiB1cmkpID1cbiAgICBsZXQqIHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEVycm9yIChgTXNnIFwiTm8gc2NoZW1lIHByZXNlbnQgaW4gVVJJXCIpXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+XG4gICAgICAgIChtYXRjaCBQY3QudW5jYXN0X2RlY29kZWQgc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgXCJodHRwXCIgLT4gT2sgYEh0dHBcbiAgICAgICAgIHwgXCJodHRwc1wiIC0+IE9rIGBIdHRwc1xuICAgICAgICAgfCB1bnN1cHBvcnRlZF9zY2hlbWUgLT5cbiAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAoYE1zZ1xuICAgICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiT25seSBodHRwIGFuZCBodHRwcyBVUklzIGFyZSBzdXBwb3J0ZWQuICVzIGlzIGludmFsaWQuXCJcbiAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZF9zY2hlbWUpKSlcbiAgICBpblxuICAgIGxldCogaG9zdCA9IE9wdGlvbi50b19yZXN1bHQgfm5vbmU6KGBNc2cgXCJob3N0IGlzIHJlcXVpcmVkIGZvciBIVFRQKFMpIHVyaXNcIikgaG9zdCBpblxuICAgIE9rIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH1cbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPSBtYXRjaCBvZl9zdHJpbmcgcyB8PiBvZl91cmkgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciAoYE1zZyBlcnJvcikgLT4gZmFpbHdpdGggZXJyb3JcblxuICBsZXQgdG9fc3RyaW5nID9wY3RfZW5jb2RlciB0ID0gdG9fdXJpIHQgfD4gdG9fc3RyaW5nID9wY3RfZW5jb2RlclxuXG4gIGxldCBub3JtYWxpemUgdCA9XG4gICAgeyB0IHdpdGhcbiAgICAgIGhvc3QgPSBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgICAgIHwgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2NF9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2Nl9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgIH1cblxuICBsZXQgbWFrZSB+c2NoZW1lIH5ob3N0ID91c2VyaW5mbyA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gICAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICAgIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICB8ICBcIi9cIjo6XyB8ICBbXSAtPiBwYXRoXG4gICAgICAgIHwgXyAgLT4gXCIvXCI6OnBhdGhcbiAgICBpblxuICAgIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICAgIGluXG4gICAgbm9ybWFsaXplXG4gICAgICB7IHNjaGVtZTtcbiAgICAgICAgdXNlcmluZm87XG4gICAgICAgIGhvc3Q9IGRlY29kZV9ob3N0IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG4gIGxldCBob3N0IHQgPVxuICAgIG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgfCAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBoXG4gICAgfCAoYEhvc3QgaCkgLT4gKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG4gIGxldCBzY2hlbWUgdCA9IHQuc2NoZW1lXG5lbmRcbiIsIm9wZW4gVXJpXG5cbm1vZHVsZSBEZXJpdmVkID1cbnN0cnVjdFxuXG5cdG9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cblx0dHlwZSBjb21wb25lbnQgPSBbXG5cdCAgfCBgU2NoZW1lXG5cdCAgfCBgQXV0aG9yaXR5XG5cdCAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgUGF0aFxuXHQgIHwgYFF1ZXJ5XG5cdCAgfCBgUXVlcnlfa2V5XG5cdCAgfCBgUXVlcnlfdmFsdWVcblx0ICB8IGBGcmFnbWVudFxuICAgICAgICAgIHwgYEdlbmVyaWNcbiAgICAgICAgICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZylcblx0XSBbQEBkZXJpdmluZyBzZXhwXVxuXG5cdHR5cGUgdCA9IHtcbiAgICAgICAgICBzY2hlbWU6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgdXNlcmluZm86IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgaG9zdDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwb3J0OiBpbnQgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBhdGg6IHN0cmluZyBbQGRlZmF1bHQgXCJcIl0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBxdWVyeTogKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0IFtAc2V4cC5saXN0XTtcbiAgICAgICAgICBmcmFnbWVudDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXVxuXHR9IFtAQGRlcml2aW5nIHNleHBdXG5cbmVuZFxuXG5vcGVuIERlcml2ZWRcblxubGV0IGNvbXBvbmVudF9vZl9zZXhwID0gY29tcG9uZW50X29mX3NleHBcbmxldCBzZXhwX29mX2NvbXBvbmVudCA9IHNleHBfb2ZfY29tcG9uZW50XG5cbmxldCB0X29mX3NleHAgc2V4cCA9XG5cdGxldCB0ID0gdF9vZl9zZXhwIHNleHAgaW5cblx0VXJpLm1ha2Vcblx0XHQ/c2NoZW1lOnQuc2NoZW1lXG5cdFx0P3VzZXJpbmZvOnQudXNlcmluZm9cblx0XHQ/aG9zdDp0Lmhvc3Rcblx0XHQ/cG9ydDp0LnBvcnRcblx0XHR+cGF0aDp0LnBhdGhcblx0XHR+cXVlcnk6dC5xdWVyeVxuXHRcdD9mcmFnbWVudDp0LmZyYWdtZW50XG5cdFx0KClcblxubGV0IHNleHBfb2ZfdCB0ID1cblx0c2V4cF9vZl90IHtcblx0XHRzY2hlbWUgPSBzY2hlbWUgdDtcblx0XHR1c2VyaW5mbyA9IHVzZXJpbmZvIHQ7XG5cdFx0aG9zdCA9IGhvc3QgdDtcblx0XHRwb3J0ID0gcG9ydCB0O1xuXHRcdHBhdGggPSBwYXRoIHQ7XG5cdFx0cXVlcnkgPSBxdWVyeSB0O1xuXHRcdGZyYWdtZW50ID0gZnJhZ21lbnQgdFxuXHR9XG5cbnR5cGUgY29tcG9uZW50ID0gVXJpLmNvbXBvbmVudFxubGV0IGNvbXBhcmUgYSBiID0gVXJpLmNvbXBhcmUgYSBiXG5sZXQgZXF1YWwgYSBiID0gVXJpLmVxdWFsIGEgYlxudHlwZSB0ID0gVXJpLnRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gQ29yZVxuXG5sZXQgaXNfdmFsaWRfaWQgcyA9XG4gIGlmIFN0cmluZy5lcXVhbCBzIFwiXCJcbiAgdGhlbiBmYWxzZVxuICBlbHNlIChcbiAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IGZhbHNlXG4gICAgfCBfIC0+XG4gICAgICBTdHJpbmcuZm9yX2FsbCBzIH5mOihmdW5jdGlvblxuICAgICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkpXG47O1xuXG5sZXQgaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lID0gaXNfdmFsaWRfaWQgbmFtZSAmJiBub3QgKFNldC5tZW0gc2VlbiBuYW1lKVxuXG5sZXQgcmVjIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyBsaXN0ID1cbiAgbWF0Y2ggKGxpc3QgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+IFNvbWUgKExpc3QucmV2IHJldl9hY2MpXG4gIHwgQXRvbSBuYW1lIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBOb25lKSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgTGlzdCBbIEF0b20gbmFtZTsgdiBdIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBTb21lIHYpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgYW55X29mX3NleHAgPSBmdW5jdGlvblxuICB8IFNleHAuQXRvbSBzIC0+IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzKVxuICB8IFNleHAuTGlzdCBbIEF0b20gbmFtZTsgdiBdIC0+IEpzLlVuc2FmZS5vYmogW3wgbmFtZSwgYW55X29mX3NleHAgdiB8XVxuICB8IFNleHAuTGlzdCBsIC0+XG4gICAgKG1hdGNoIGtleV92YWx1ZV9zaGFwZSB+c2VlbjpTdHJpbmcuU2V0LmVtcHR5IH5yZXZfYWNjOltdIGwgd2l0aFxuICAgICB8IE5vbmUgLT4gTGlzdC5tYXAgbCB+Zjphbnlfb2Zfc2V4cCB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIFtdIC0+IEpzLmFycmF5IFt8fF0gfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgbCAtPlxuICAgICAgIEpzLlVuc2FmZS5vYmpcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBuYW1lLCBTb21lIHYgLT4gbmFtZSwgYW55X29mX3NleHAgdlxuICAgICAgICAgICAgfCBuYW1lLCBOb25lIC0+IG5hbWUsIEpzLlVuc2FmZS5pbmplY3QgSnMubnVsbClcbiAgICAgICAgICB8PiBBcnJheS5vZl9saXN0KSlcbjs7XG5cbmxldCBsb2dfcyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKGFueV9vZl9zZXhwIHNleHApXG5sZXQgbG9nX3NfYXNfc3RyaW5nIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChTZXhwLnRvX3N0cmluZ19odW0gc2V4cCkpXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB1ID0geyBzb21lX25hbWUgOiBzdHJpbmcgfSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRm9vXG4gICAgICB8IEJhciBvZlxuICAgICAgICAgIHsgZmllbGQxIDogdVxuICAgICAgICAgIDsgZmllbGQyIDogc3RyaW5nIG9wdGlvblxuICAgICAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcbiAgaW5cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IG9wZW4gTSBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIChzZXhwX29mX3QgRm9vKSkpO1xuICBbJWV4cGVjdCB7fCBcIkZvb1wiIHx9XTtcbiAgcHJpbnRfZW5kbGluZVxuICAgICh0b19zdHJpbmdcbiAgICAgICAoYW55X29mX3NleHBcbiAgICAgICAgICAoc2V4cF9vZl90XG4gICAgICAgICAgICAgKEJhciB7IGZpZWxkMSA9IHsgc29tZV9uYW1lID0gXCJkZWJ1Z1wiIH07IGZpZWxkMiA9IFNvbWUgXCJvdGhlciBzdHJpbmdcIiB9KSkpKTtcbiAgWyVleHBlY3Qge3wge1wiQmFyXCI6bnVsbCxcImZpZWxkMVwiOntcInNvbWVfbmFtZVwiOlwiZGVidWdcIn0sXCJmaWVsZDJcIjpbXCJvdGhlciBzdHJpbmdcIl19IHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwiZHVwbGljYXRlIGtleXMgYXJlIGRpc3BsYXllZCBjb3JyZWN0bHlcIiA9XG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMgPSB7fCAoKEEgQikgKEEgQykpIHx9IHw+IFNleHAub2Zfc3RyaW5nIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzKSk7XG4gIFslZXhwZWN0IHt8IFt7XCJBXCI6XCJCXCJ9LHtcIkFcIjpcIkNcIn1dIHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwibm8gc3RhY2sgb3ZlcmZsb3dcIiA9XG4gIGxldCBhID0gQXJyYXkuaW5pdCAxMDAwMCB+ZjooZnVuIGkgLT4gc3ByaW50ZiBcImYlZFwiIGksIGkpIGluXG4gIGxldCBzZXhwID0gWyVzZXhwX29mOiAoc3RyaW5nICogaW50KSBhcnJheV0gYSBpblxuICBsZXQgeCA9IGFueV9vZl9zZXhwIHNleHAgaW5cbiAgcHJpbnRmIFwiJWRcIiAoSnMuVW5zYWZlLmNvZXJjZSB4KSMjLmY5OTk7XG4gIFslZXhwZWN0IHt8IDk5OSB8fV1cbjs7XG4iLCJtb2R1bGUgQXN5bmNfanNfZGVidWcgPSBEZWJ1Z1xub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIGluY2x1ZGUgVXJpXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFVyaV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbm1vZHVsZSBXZWJzb2NrZXRfY29ubmVjdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IEFzeW5jX3JwY19rZXJuZWwuUnBjLkNvbm5lY3Rpb25cblxuICB0eXBlICgncmVzdCwgJ2ltcGxlbWVudGF0aW9ucykgY2xpZW50X3QgPVxuICAgID91cmk6VXJpLnRcbiAgICAtPiA/aGVhcnRiZWF0X2NvbmZpZzpULkhlYXJ0YmVhdF9jb25maWcudFxuICAgIC0+ID9kZXNjcmlwdGlvbjpJbmZvLnRcbiAgICAtPiA/aW1wbGVtZW50YXRpb25zOidpbXBsZW1lbnRhdGlvbnMgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLnRcbiAgICAtPiAncmVzdFxuXG4gIG1vZHVsZSBDbG9zZV9jb2RlIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50IC0+IHRcbiAgICB2YWwgbm9ybWFsX2Nsb3N1cmUgOiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgY2xvc2VfZXZlbnRfY29kZSA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGFsbF9vZl9jbG9zZV9ldmVudF9jb2RlID0gW11cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEdvaW5nX2F3YXlcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCBJbnRlcm5hbF9lcnJvclxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IEJhZF9nYXRld2F5XG4gICAgICB8IFRMU19oYW5kc2hha2VcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBdXG5cbiAgICBsZXQgbm9ybWFsX2Nsb3N1cmUgPSBOb3JtYWxfY2xvc3VyZVxuXG4gICAgbGV0IG9mX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IDEwMDAgLT4gTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwMSAtPiBHb2luZ19hd2F5XG4gICAgICB8IDEwMDIgLT4gUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgMTAwMyAtPiBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IDEwMDUgLT4gTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IDEwMDYgLT4gQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDA3IC0+IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IDEwMDggLT4gUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCAxMDA5IC0+IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCAxMDEwIC0+IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IDEwMTEgLT4gSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgMTAxMiAtPiBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgMTAxMyAtPiBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgMTAxNCAtPiBCYWRfZ2F0ZXdheVxuICAgICAgfCAxMDE1IC0+IFRMU19oYW5kc2hha2VcbiAgICAgIHwgY29kZSAtPlxuICAgICAgICBpZiBjb2RlID49IDMwMDAgJiYgY29kZSA8PSA0OTk5XG4gICAgICAgIHRoZW4gVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICAgICAgZWxzZSBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXZlbnQgY2xvc2VfZXZlbnQgPSBvZl9pbnQgY2xvc2VfZXZlbnQjIy5jb2RlXG5cbiAgICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmUgLT4gMTAwMFxuICAgICAgfCBHb2luZ19hd2F5IC0+IDEwMDFcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3IgLT4gMTAwMlxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhIC0+IDEwMDNcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkIC0+IDEwMDVcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZSAtPiAxMDA2XG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhIC0+IDEwMDdcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvbiAtPiAxMDA4XG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyAtPiAxMDA5XG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uIC0+IDEwMTBcbiAgICAgIHwgSW50ZXJuYWxfZXJyb3IgLT4gMTAxMVxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnQgLT4gMTAxMlxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXIgLT4gMTAxM1xuICAgICAgfCBCYWRfZ2F0ZXdheSAtPiAxMDE0XG4gICAgICB8IFRMU19oYW5kc2hha2UgLT4gMTAxNVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRvX2ludCAtPiBvZl9pbnQgcm91bmQtdHJpcFwiID1cbiAgICAgIExpc3QuaXRlciBhbGwgfmY6KGZ1biB0IC0+IGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSAob2ZfaW50ICh0b19pbnQgdCkpIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBjbG9zZV93ZWJzb2NrZXQgKHdlYnNvY2tldCA6IFdlYlNvY2tldHMud2ViU29ja2V0IEpzLnQpIHJlYXNvbiA9XG4gICAgKCogW2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXSBkb2VzIG5vdGhpbmcgaWYgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBDbG9zZWQuICopXG4gICAgbGV0IGNsb3NlIHJlYXNvbiA9XG4gICAgICAoKiBUaGUgY29kZSBtdXN0IGJlIGVpdGhlciAxMDAwIChOb3JtYWxfY2xvc3VyZSksIG9yIGJldHdlZW4gMzAwMCBhbmQgNDk5OVxuICAgICAgICAgKFVua25vd25fY2xvc2VfZXZlbnRfY29kZSkuICopXG4gICAgICB3ZWJzb2NrZXQjI2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXG4gICAgICAgIENsb3NlX2NvZGUuKHRvX2ludCBub3JtYWxfY2xvc3VyZSlcbiAgICAgICAgKEpzLnN0cmluZyByZWFzb24pXG4gICAgaW5cbiAgICBtYXRjaCBjbG9zZSByZWFzb24gd2l0aFxuICAgIHwgKCkgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiAoXyA6IEV4bi50KSAtPlxuICAgICAgKCogdGhpcyBjYW4gZmFpbCBpZiBbcmVhc29uXSBpcyB0b28gbG9uZyBvciBjb250YWlucyBpbnZhbGlkIFVURjggKilcbiAgICAgIGNsb3NlIFwiY2xvc2UtcmVhc29uLXdhcy10b28tbG9uZy1vci1jb250YWlucy1pbnZhbGlkLXV0ZjhcIlxuICA7O1xuXG4gIGxldCBjb25uZWN0X3dlYnNvY2tldCB1cmwgfmZyb21fc2VydmVyIH50b19zZXJ2ZXIgPVxuICAgIG1hdGNoIG5ldyVqcyBXZWJTb2NrZXRzLndlYlNvY2tldCAoSnMuc3RyaW5nIChVcmkudG9fc3RyaW5nIHVybCkpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKc19lcnJvci5FeG4gZXhuIC0+XG4gICAgICAoKiBlLmcuIFNFQ1VSSVRZX0VSUiwgdGhvdWdoIG5vdGUgdGhhdCBlLmcuIGNvbm5lY3RpbmcgdG8gd3M6Ly8gZnJvbSBhIGh0dHBzOi8vIHBhZ2VcbiAgICAgICAgIGluIGNocm9tZSBzZWVtcyB0byBtYW5pZmVzdCBhcyBzdWNjZXNzZnVsIGNvbnN0cnVjdGlvbiBidXQgaW1tZWRpYXRlIGNsb3N1cmVcbiAgICAgICAgIChzZWUgYmVsb3cpLiAgKilcbiAgICAgIHJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIChKc19lcnJvci5tZXNzYWdlIGV4bikpXG4gICAgfCBleGNlcHRpb24gZXhuIC0+IHJldHVybiAoT3JfZXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IHdlYnNvY2tldCAtPlxuICAgICAgbGV0IGNvbm5lY3RlZF9pdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBjbGVhbnVwIH5yZWFzb24gPVxuICAgICAgICAoKiBJZiB3ZSBoYXZlbid0IGNvbm5lY3RlZCB5ZXQsIHRoZW4gY29ubmVjdGluZyBqdXN0IGZhaWxlZC4gT3RoZXJ3aXNlIGl0IHdhcyB0aGVcbiAgICAgICAgICAgY2xvc3VyZSBvZiBhbiBleGlzdGluZyBjb25uZWN0aW9uLiAqKVxuICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKEVycm9yIHJlYXNvbik7XG4gICAgICAgICgqIFtQaXBlLmNsb3NlXSBhbmQgW1dlYlNvY2tldC5jbG9zZV0gYXJlIGFsbCBpZGVtcG90ZW50LiAqKVxuICAgICAgICBQaXBlLmNsb3NlIGZyb21fc2VydmVyO1xuICAgICAgICBQaXBlLmNsb3NlX3JlYWQgdG9fc2VydmVyO1xuICAgICAgICBjbG9zZV93ZWJzb2NrZXQgd2Vic29ja2V0IChFcnJvci50b19zdHJpbmdfaHVtIHJlYXNvbilcbiAgICAgIGluXG4gICAgICBsZXQgb25jbG9zZSAoY2xvc2VfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50KSA9XG4gICAgICAgICgqIFRoZSBSUEMgQVBJIGRvZXNuJ3QgZ2l2ZSB1cyBhIGdvb2QgcGxhY2UgdG8gcHV0IGRldGFpbHMgYWJvdXQgX3doeV8gdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gY2xvc2VkLlxuXG4gICAgICAgICAgIE5vdGUgdGhhdCBpbiBDaHJvbWUgW2Nsb3NlX2V2ZW50IyMucmVhc29uXSBpcyB0eXBpY2FsbHkgZW1wdHkgYW5kXG4gICAgICAgICAgIFtjbG9zZV9ldmVudCMjLmNvZGVdIGRvZXNuJ3QgYWN0dWFsbHkgcHJvdmlkZSB0aGF0IG11Y2ggaW5zaWdodCBpbnRvIHdoeSB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBmYWlsZWQgKGl0J3MgYXZhaWxhYmxlIGluIHRoZSBpbnNwZWN0b3IgY29uc29sZSwgYnV0IGFzIGZhciBhcyBJIGNhblxuICAgICAgICAgICB0ZWxsLCBub3QgYXZhaWxhYmxlIHRvIHVzKS4gU28gaXQncyBub3QgbGlrZSB3ZSdyZSBsb3NpbmcgbXVjaCBhbnl3YXkuICopXG4gICAgICAgIGxldCByZWFzb24gPVxuICAgICAgICAgIGxldCB3aGF0X2hhcHBlbmVkID1cbiAgICAgICAgICAgIG1hdGNoIEl2YXIuaXNfZnVsbCBjb25uZWN0ZWRfaXZhciB3aXRoXG4gICAgICAgICAgICB8IGZhbHNlIC0+IFwiY29ubmVjdGlvbiBmYWlsZWRcIlxuICAgICAgICAgICAgfCB0cnVlIC0+IFwiY2xvc2VkXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICFcIldlYlNvY2tldCAlcyAoJXtzZXhwOkNsb3NlX2NvZGUudH0pXCJcbiAgICAgICAgICAgIHdoYXRfaGFwcGVuZWRcbiAgICAgICAgICAgIChDbG9zZV9jb2RlLm9mX2V2ZW50IGNsb3NlX2V2ZW50KVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyByZWFzb24pO1xuICAgICAgICBKcy5fZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgb25tZXNzYWdlIChldmVudCA6IF8gV2ViU29ja2V0cy5tZXNzYWdlRXZlbnQgSnMudCkgPVxuICAgICAgICBsZXQgZGF0YSA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy5vZl9hcnJheUJ1ZmZlciBldmVudCMjLmRhdGFfYnVmZmVyIGluXG4gICAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIGZyb21fc2VydmVyIGRhdGE7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0ZWQgKCkgPSBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKE9rICgpKSBpblxuICAgICAgd2Vic29ja2V0IyMuYmluYXJ5VHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiO1xuICAgICAgKCogaWYgdGhlIHdlYnNvY2tldCBpcyBhbHJlYWR5IGNsb3NlZCwgW29uY2xvc2VdIHdvbid0IGJlIHJlLWZpcmVkIHdoZW4gd2UgYWRkIG91clxuICAgICAgICAgaGFuZGxlci4gKilcbiAgICAgIChtYXRjaCB3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICAgICB8IENPTk5FQ1RJTkcgLT5cbiAgICAgICAgIHdlYnNvY2tldCMjLm9ub3BlblxuICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgIGNvbm5lY3RlZCAoKTtcbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgIHwgT1BFTiAtPiBjb25uZWN0ZWQgKClcbiAgICAgICB8IENMT1NJTkcgfCBDTE9TRUQgLT5cbiAgICAgICAgICgqIGUuZy4sIFJlZnVzZWQgdG8gY29ubmVjdCB0byB3czogYmVjYXVzZSBpdCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAqKVxuICAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgXCJXZWJTb2NrZXQgZmFpbGVkIGltbWVkaWF0ZWx5IChpbGxlZ2FsIFVSST8pXCIpKTtcbiAgICAgICgqIFVwb24gYW4gZXJyb3IsIFtvbmVycm9yXSBmaXJlcyBhbmQgdGhlbiBbb25jbG9zZV0gZmlyZXMgKGl0J3MgcG9zc2libGUgZm9yIGFcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUgdG8gY2FsbCBbb25jbG9zZV0gb25seSkuIFNpbmNlIEFzeW5jX1JQQyBoYXMgbm8gbm90aW9uIG9mXG4gICAgICAgICBncmFjZWZ1bCBjbG9zdXJlLCB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIFtvbmNsb3NlXSBhbnl3YXkuIEZ1cnRoZXIsIHRoZSBldmVudFxuICAgICAgICAgcGFzc2VkIHRvIFtvbmVycm9yXSBjb250YWlucyBubyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IuICBOb3RlIHRoYXQgd2VcbiAgICAgICAgIHN0aWxsIGxpc3RlbiB0byBbb25lcnJvcl0gdG8gcHJldmVudCB0aGUgZXJyb3IgZnJvbSBsZWFraW5nIHRvIHVuY29udHJvbGxlZFxuICAgICAgICAgY29udGV4dCAqKVxuICAgICAgd2Vic29ja2V0IyMub25lcnJvclxuICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgIEFzeW5jX2pzX2RlYnVnLmxvZ19zIFslbWVzc2FnZSBcIndlYnNvY2tldCBlbmNvdW50ZXJlZCB1bmV4cGVjdGVkIGVycm9yXCJdO1xuICAgICAgICBKcy5fZmFsc2UpO1xuICAgICAgd2Vic29ja2V0IyMub25tZXNzYWdlIDo9IERvbS5oYW5kbGVyIG9ubWVzc2FnZTtcbiAgICAgIHdlYnNvY2tldCMjLm9uY2xvc2UgOj0gRG9tLmhhbmRsZXIgb25jbG9zZTtcbiAgICAgIGxldCBjb25uZWN0ZWRfZGVmZXJyZWQgPSBJdmFyLnJlYWQgY29ubmVjdGVkX2l2YXIgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChtYXRjaCViaW5kIGNvbm5lY3RlZF9kZWZlcnJlZCB3aXRoXG4gICAgICAgICB8IEVycm9yIChfIDogRXJyb3IudCkgLT4gcmV0dXJuICgpXG4gICAgICAgICB8IE9rICgpIC0+XG4gICAgICAgICAgIFBpcGUuaXRlcl93aXRob3V0X3B1c2hiYWNrIHRvX3NlcnZlciB+ZjooZnVuIGRhdGEgLT5cbiAgICAgICAgICAgICBtYXRjaCAod2Vic29ja2V0IyMucmVhZHlTdGF0ZSA6IFdlYlNvY2tldHMucmVhZHlTdGF0ZSkgd2l0aFxuICAgICAgICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IG9ub3BlbiBjYWxsZWQgYnV0IHJlYWR5U3RhdGUgaXMgQ09OTkVDVElOR1wiXVxuICAgICAgICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPiAoKVxuICAgICAgICAgICAgIHwgT1BFTiAtPlxuICAgICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciBkYXRhIGluXG4gICAgICAgICAgICAgICAodHJ5IHdlYnNvY2tldCMjc2VuZF9idWZmZXIgYnVmZmVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKEVycm9yLnRhZyB+dGFnOlwid2Vic29ja2V0IyNzZW5kX2J1ZmZlclwiIChFcnJvci5vZl9leG4gZXhuKSkpKSk7XG4gICAgICBsZXQgY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQgPVxuICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdCBbIFBpcGUuY2xvc2VkIHRvX3NlcnZlcjsgUGlwZS5jbG9zZWQgZnJvbV9zZXJ2ZXIgXVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIlJQQyBjb25uZWN0aW9uIGNsb3NlZCBieSBjbGllbnRcIilcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZDtcbiAgICAgIGNvbm5lY3RlZF9kZWZlcnJlZFxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3VyaSAoKSA9XG4gICAgbGV0IHNjaGVtZSA9IGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiIHRoZW4gXCJ3c3NcIiBlbHNlIFwid3NcIiBpblxuICAgIGxldCBwb3J0ID1cbiAgICAgIG1hdGNoIFVybC5DdXJyZW50LnBvcnQgd2l0aFxuICAgICAgfCBTb21lIHBvcnQgLT4gcG9ydFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiXG4gICAgICAgIHRoZW4gVXJsLmRlZmF1bHRfaHR0cHNfcG9ydFxuICAgICAgICBlbHNlIFVybC5kZWZhdWx0X2h0dHBfcG9ydFxuICAgIGluXG4gICAgbGV0IGhvc3QgPSBVcmwuQ3VycmVudC5ob3N0IGluXG4gICAgVXJpLm1ha2UgfnNjaGVtZSB+aG9zdCB+cG9ydCAoKVxuICA7O1xuXG4gIGxldCBjbGllbnQgPyh1cmkgPSBkZWZhdWx0X3VyaSAoKSkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIndlYnNvY2tldFwiIChkZXNjcmlwdGlvbiA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKSAodXJpIDogVXJpLnQpXVxuICAgIGluXG4gICAgbGV0IG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgPVxuICAgICAgbGV0IGNyZWF0ZSB7IFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy5jb25uZWN0aW9uX3N0YXRlOyBpbXBsZW1lbnRhdGlvbnMgfSA9XG4gICAgICAgIFQuY3JlYXRlXG4gICAgICAgICAgdHJhbnNwb3J0XG4gICAgICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIGluXG4gICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLm51bGwgKCkpXG4gICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb25zIC0+IGNyZWF0ZSBpbXBsZW1lbnRhdGlvbnNcbiAgICBpblxuICAgIGxldCBmcm9tX3NlcnZlcl9yLCBmcm9tX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgdG9fc2VydmVyX3IsIHRvX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBtYXRjaCViaW5kXG4gICAgICBjb25uZWN0X3dlYnNvY2tldCB1cmkgfmZyb21fc2VydmVyOmZyb21fc2VydmVyX3cgfnRvX3NlcnZlcjp0b19zZXJ2ZXJfclxuICAgIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gcmV0dXJuIGVycm9yXG4gICAgfCBPayAoKSAtPlxuICAgICAgbGV0IHRyYW5zcG9ydCA9XG4gICAgICAgIEFzeW5jX3JwY19rZXJuZWwuUGlwZV90cmFuc3BvcnQuY3JlYXRlXG4gICAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5LaW5kLmJpZ3N0cmluZ1xuICAgICAgICAgIGZyb21fc2VydmVyX3JcbiAgICAgICAgICB0b19zZXJ2ZXJfd1xuICAgICAgaW5cbiAgICAgIChtYXRjaCViaW5kIG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgd2l0aFxuICAgICAgIHwgT2sgY29ubmVjdGlvbiAtPiByZXR1cm4gKE9rIGNvbm5lY3Rpb24pXG4gICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgIGxldCViaW5kICgpID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuVHJhbnNwb3J0LmNsb3NlIHRyYW5zcG9ydCBpblxuICAgICAgICAgcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgY2xpZW50X2V4biA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID1cbiAgICBjbGllbnQgP3VyaSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA+PnwgT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBc3luY19ycGNfa2VybmVsLlJwY1xuXG5tb2R1bGUgQ29ubmVjdGlvbiA9IHN0cnVjdFxuICBpbmNsdWRlIENvbm5lY3Rpb25cbiAgaW5jbHVkZSBXZWJzb2NrZXRfY29ubmVjdGlvblxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19ycGNfa2VybmVsXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFVyaVxuXG4gICAgbGV0IHRvX3N0cmluZyBzID0gVXJpLnRvX3N0cmluZyBzXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFQpXG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICBpbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGNcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpID0gUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGUgfmFkZHJlc3M6KG1vZHVsZSBVcmkpXG5cbiAgbGV0IGNyZWF0ZV9mcm9tX3VyaV9vcHRpb24gPVxuICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY3JlYXRlXG4gICAgICB+YWRkcmVzczpcbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBVcmkudCBvcHRpb24gW0BAZGVyaXZpbmcgZXF1YWwsIHNleHBdXG4gICAgICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IEFzeW5jX3JwY19rZXJuZWwuUGVyc2lzdGVudF9jb25uZWN0aW9uLlZlcnNpb25lZF9ycGNcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBPcHQgPSBKcy5PcHRcbm1vZHVsZSBPcHRkZWYgPSBKcy5PcHRkZWZcblxubW9kdWxlIFJlc3BvbnNlX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWG1sSHR0cFJlcXVlc3QucmVzcG9uc2UgPVxuICAgIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IE9wdC50IHRcbiAgICB8IEJsb2IgOiAjRmlsZS5ibG9iIEpzLnQgSnMuT3B0LnQgdFxuICAgIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudCBPcHQudCB0XG4gICAgfCBKU09OIDogJ2EgT3B0LnQgdFxuICAgIHwgVGV4dCA6IEpzLmpzX3N0cmluZyBKcy50IHRcbiAgICB8IERlZmF1bHQgOiBzdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBSZXNwb25zZSA9IHN0cnVjdFxuICB0eXBlICdyZXNwb25zZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IGdldF9oZWFkZXIgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgIDsgY29udGVudCA6ICdyZXNwb25zZVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUG9zdF9ib2R5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBCbG9iIG9mIEZpbGUuYmxvYiBKcy50XG4gICAgfCBEb2N1bWVudCBvZiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRm9ybV9kYXRhIG9mIEZvcm0uZm9ybURhdGEgSnMudFxuZW5kXG5cbm1vZHVsZSBNZXRob2Rfd2l0aF9hcmdzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBHZXQgb2YgKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgIHwgUG9zdCBvZiBQb3N0X2JvZHkudCBvcHRpb25cbmVuZFxuXG50eXBlICdrIHdpdGhfcmVxdWVzdF9hcmdzID1cbiAgP2hlYWRlcnM6KHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAtPiA/b25fcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+ID9vbl91cGxvYWRfcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+IHVybDpzdHJpbmdcbiAgLT4gJ2tcblxubGV0IGhhc19nZXRfYXJncyB1cmwgPSBPcHRpb24uaXNfc29tZSAoU3RyaW5nLmluZGV4IHVybCAnPycpXG5cbmxldCByZXF1ZXN0XG4gICAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICAgID9vbl9wcm9ncmVzc1xuICAgICAgP29uX3VwbG9hZF9wcm9ncmVzc1xuICAgICAgfnVybFxuICAgICAgKHR5cGUgcmVzcClcbiAgICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3AgUmVzcG9uc2VfdHlwZS50KVxuICAgICAgKG1ldGhvZF93aXRoX2FyZ3MgOiBNZXRob2Rfd2l0aF9hcmdzLnQpXG4gID1cbiAgbGV0IHVybCwgbWV0aG9kX3N0cmluZyA9XG4gICAgbWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICAgfCBHZXQgYXJncyAtPlxuICAgICAgdXJsIF4gKGlmIGhhc19nZXRfYXJncyB1cmwgdGhlbiBcIiZcIiBlbHNlIFwiP1wiKSBeIFVybC5lbmNvZGVfYXJndW1lbnRzIGFyZ3MsIFwiR0VUXCJcbiAgICB8IFBvc3QgX2JvZHkgLT4gdXJsLCBcIlBPU1RcIlxuICBpblxuICBsZXQgcmVxID0gWG1sSHR0cFJlcXVlc3QuY3JlYXRlICgpIGluXG4gIHJlcSMjX29wZW4gKEpzLnN0cmluZyBtZXRob2Rfc3RyaW5nKSAoSnMuc3RyaW5nIHVybCkgSnMuX3RydWU7XG4gIChsZXQgb3BlbiBSZXNwb25zZV90eXBlIGluXG4gICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgIHwgQXJyYXlCdWZmZXIgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCJcbiAgIHwgQmxvYiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYmxvYlwiXG4gICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gICB8IEpTT04gLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImpzb25cIlxuICAgfCBUZXh0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0XCJcbiAgIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICBMaXN0Lml0ZXIgaGVhZGVycyB+ZjooZnVuIChuYW1lLCB2YWx1ZSkgLT5cbiAgICByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIHZhbHVlKSk7XG4gIGxldCByZXNwb25zZSA6IHJlc3AgUmVzcG9uc2UudCBPcl9lcnJvci50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHJlcSMjLm9uZXJyb3JcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJOZXR3b3JrIGVycm9yXCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub250aW1lb3V0XG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiVGltZW91dFwiKTtcbiAgICBKcy5fdHJ1ZSk7XG4gIHJlcSMjLm9ucmVhZHlzdGF0ZWNoYW5nZVxuICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPlxuICAgIG1hdGNoIHJlcSMjLnJlYWR5U3RhdGUgd2l0aFxuICAgIHwgRE9ORSAtPlxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIGlmIHJlcSMjLnN0YXR1cyA+PSAyMDAgJiYgcmVxIyMuc3RhdHVzIDwgMzAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNvbnRlbnQgOiByZXNwIE9yX2Vycm9yLnQgPVxuICAgICAgICAgICAgbGV0IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpID1cbiAgICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgICByZXEjIy5yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZCBub3QgYmUgZW50ZXJlZCBhcyBwZXIgdGhlIHNwZWNpZmljYXRpb24gb2ZcbiAgICAgICAgICAgICAgICAgICAgICBYTUxIdHRwUmVxdWVzdCBhdCBNRE4gd2ViIGRvY3MsIGJlY2F1c2UgaWYgYSByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWwsXG4gICAgICAgICAgICAgICAgICAgICAgaW4gc3RhdGUgW0RPTkVdIGFuZCByZXNwb25zZV90eXBlIFtUZXh0XSBvciBbRGVmYXVsdF0sXG4gICAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNlVGV4dF0gc2hvdWxkIG5vdCBiZSBbbnVsbF0uXG4gICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAgICAqKVxuICAgICAgICAgICAgICAgICAgIGVycm9yX3NcbiAgICAgICAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHJlc3BvbnNlIHJldHVybmVkIGRlc3BpdGUgc3VjY2Vzc2Z1bCByZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgfV0pXG4gICAgICAgICAgICAgICAgUmVzdWx0LnJldHVyblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgICAgICAgICAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgICAgICAgICAgfCBBcnJheUJ1ZmZlciAtPiBPayAoRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgQmxvYiAtPiBPayAoRmlsZS5Db2VyY2VUby5ibG9iIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBPayAoRmlsZS5Db2VyY2VUby5kb2N1bWVudCByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgSlNPTiAtPiBPayAoRmlsZS5Db2VyY2VUby5qc29uIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBUZXh0IC0+IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpXG4gICAgICAgICAgICB8IERlZmF1bHQgLT4gT3JfZXJyb3IubWFwIChnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKSkgfmY6SnMudG9fc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZ2V0X2hlYWRlciBzID1cbiAgICAgICAgICAgIE9wdC5jYXNlXG4gICAgICAgICAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBTb21lIChKcy50b19zdHJpbmcgdikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IFJlc3BvbnNlLmNvbnRlbnQ7IGNvZGUgPSByZXEjIy5zdGF0dXM7IGdldF9oZWFkZXIgfSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICBcIlJlcXVlc3QgZmFpbGVkXCJcbiAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgfV1cbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzXG4gICAgfCBfIC0+ICgpKTtcbiAgT3B0aW9uLml0ZXIgb25fcHJvZ3Jlc3MgfmY6KGZ1biBvbl9wcm9ncmVzcyAtPlxuICAgIHJlcSMjLm9ucHJvZ3Jlc3NcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgIG9uX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgSnMuX3RydWUpKTtcbiAgT3B0ZGVmLml0ZXIgcmVxIyMudXBsb2FkIChmdW4gdXBsb2FkIC0+XG4gICAgT3B0aW9uLml0ZXIgb25fdXBsb2FkX3Byb2dyZXNzIH5mOihmdW4gb25fdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICB1cGxvYWQjIy5vbnByb2dyZXNzXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgb25fdXBsb2FkX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgICBKcy5fdHJ1ZSkpKTtcbiAgKG1hdGNoIG1ldGhvZF93aXRoX2FyZ3Mgd2l0aFxuICAgfCBHZXQgXyAtPiByZXEjI3NlbmQgSnMubnVsbFxuICAgfCBQb3N0IGJvZHkgLT5cbiAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICAgICB8IFNvbWUgYm9keSAtPlxuICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICB8IEJsb2IgYiAtPiByZXEjI3NlbmRfYmxvYiBiXG4gICAgICAgICB8IERvY3VtZW50IGQgLT4gcmVxIyNzZW5kX2RvY3VtZW50IGRcbiAgICAgICAgIHwgU3RyaW5nIHMgLT4gcmVxIyNzZW5kIChKcy5zb21lIChKcy5zdHJpbmcgcykpXG4gICAgICAgICB8IEZvcm1fZGF0YSBmZCAtPiByZXEjI3NlbmRfZm9ybURhdGEgZmQpKSk7XG4gIEl2YXIucmVhZCByZXNwb25zZVxuOztcblxubGV0IGdldCA/KGFyZ3VtZW50cyA9IFtdKSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoR2V0IGFyZ3VtZW50cykpXG47O1xuXG5sZXQgcG9zdCA/Ym9keSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoUG9zdCBib2R5KSlcbjs7XG4iLCJvcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZS5UaW1lX25zXG5tb2R1bGUgQ2xvY2tfbnMgPSBBc3luY19rZXJuZWwuQ2xvY2tfbnNcbm1vZHVsZSBTY2hlZHVsZXIgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlXG5vcGVuIEpzX29mX29jYW1sXG5cbmxldCBzbGVlcCBkID0gQ2xvY2tfbnMuYWZ0ZXIgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgZClcbmxldCB5aWVsZCAoKSA9IFNjaGVkdWxlci55aWVsZCAoU2NoZWR1bGVyLnQgKCkpXG5cbmxldCByZWMgZXh0cmFjdF9qc19lcnJvciAoZXhuIDogZXhuKSA6IChzdHJpbmcgbGlzdCAqIEpzX2Vycm9yLnQpIG9wdGlvbiA9XG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgRXhuLlJlcmFpc2VkIChtc2csIGV4bikgLT5cbiAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICB8IFNvbWUgKG1lc3NhZ2VzLCBqc19lcnJvcikgLT4gU29tZSAobXNnIDo6IG1lc3NhZ2VzLCBqc19lcnJvcilcbiAgICAgfCBOb25lIC0+IE5vbmUpXG4gIHwgZXhuIC0+XG4gICAgKG1hdGNoIEpzX2Vycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICB8IFNvbWUganNfZXJyb3IgLT4gU29tZSAoW10sIGpzX2Vycm9yKVxuICAgICB8IE5vbmUgLT4gTm9uZSlcbjs7XG5cbmxldCBwcmV0dHlfcHJpbnRfZXhjZXB0aW9uIG5hbWUgZXhuID1cbiAgbGV0IGV4biA9IEFzeW5jX2tlcm5lbC5Nb25pdG9yLmV4dHJhY3RfZXhuIGV4biBpblxuICBsZXQgY2xhc3NpZmljYXRpb24gPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBKc19lcnJvci5FeG4gZXJyIC0+IGBKcyBlcnJcbiAgICB8IGV4biAtPlxuICAgICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYEV4biBleG5cbiAgICAgICB8IFNvbWUgZXJyIC0+IGBKc19hbmRfZXhuIChleG4sIGVycikpXG4gIGluXG4gIG1hdGNoIGNsYXNzaWZpY2F0aW9uIHdpdGhcbiAgfCBgSnMgZXJyIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIG5hbWUpIGVyclxuICB8IGBFeG4gZXhuIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSlcbiAgfCBgSnNfYW5kX2V4biAoZXhuLCAobWVzc2FnZXMsIGVycikpIC0+XG4gICAgKG1hdGNoIG1lc3NhZ2VzIHdpdGhcbiAgICAgfCBbXSAtPiBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwIChKcy5zdHJpbmcgbmFtZSlcbiAgICAgfCBoZCA6OiByZXN0IC0+XG4gICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cCAoSnMuc3RyaW5nIGhkKTtcbiAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIG5hbWUpO1xuICAgICAgIExpc3QuaXRlciByZXN0IH5mOihmdW4gbWVzc2FnZSAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgbWVzc2FnZSkpKTtcbiAgICAoKiBXZSBmaXJzdCBvdXRwdXQgdGhlIHN0cmluZ2lmaWVkIG9jYW1sIGV4Y2VwdGlvbiAqKVxuICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBDb2xsYXBzZWQgKEpzLnN0cmluZyBcIk9DYW1sIEV4Y2VwdGlvblwiKTtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpO1xuICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBFbmQ7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciBlcnI7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZFxuOztcblxubGV0IHJ1biA9XG4gIGxldCBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBJZGxlXG4gICAgICB8IFJ1bm5pbmdcbiAgICAgIHwgV2lsbF9ydW5fc29vblxuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBOZXh0X3dha2V1cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIFRpbWVfbnMudCAqIGZsb2F0XG4gICAgICB8IE5vX3dha2V1cFxuICAgICAgfCBTb29uXG4gIGVuZFxuICBpblxuICBsZXQgc3RhdGUgPSByZWYgU3RhdGUuSWRsZSBpblxuICBsZXQgdGltZW91dHMgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgbGV0IHJ1bl9hZnRlciB+ZiB+bXMgPSBpZ25vcmUgKERvbV9odG1sLnNldFRpbWVvdXQgZiBtcyA6IERvbV9odG1sLnRpbWVvdXRfaWRfc2FmZSkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQgdCA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbWF0Y2ggIXN0YXRlLCBTY2hlZHVsZXIudW5jYXVnaHRfZXhuIHQgd2l0aFxuICAgIHwgXywgU29tZSBfIHwgU3RhdGUuUnVubmluZywgTm9uZSAtPiAoKVxuICAgIHwgKFN0YXRlLklkbGUgfCBTdGF0ZS5XaWxsX3J1bl9zb29uKSwgTm9uZSAtPlxuICAgICAgc3RhdGUgOj0gU3RhdGUuUnVubmluZztcbiAgICAgIFNjaGVkdWxlci5ydW5fY3ljbGUgdDtcbiAgICAgIGxldCBuZXh0X3dha2V1cCA6IE5leHRfd2FrZXVwLnQgPVxuICAgICAgICBpZiBTY2hlZHVsZXIuY2FuX3J1bl9hX2pvYiB0XG4gICAgICAgIHRoZW4gU29vblxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBTY2hlZHVsZXIubmV4dF91cGNvbWluZ19ldmVudCB0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9fd2FrZXVwXG4gICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBUaW1lX25zLmRpZmYgbmV4dCBub3cgaW5cbiAgICAgICAgICAgIGxldCBkX21zID0gVGltZV9ucy5TcGFuLnRvX21zIGQgaW5cbiAgICAgICAgICAgIGlmIEZsb2F0LiggPD0gKSBkX21zIDAuIHRoZW4gU29vbiBlbHNlIEF0IChuZXh0LCBkX21zKSlcbiAgICAgIGluXG4gICAgICBPcHRpb24uaXRlciAoU2NoZWR1bGVyLnVuY2F1Z2h0X2V4bl91bndyYXBwZWQgdCkgfmY6KGZ1biAoZXhuLCBfc2V4cCkgLT5cbiAgICAgICAgbWF0Y2ggQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIHdpdGhcbiAgICAgICAgfCBKc19lcnJvci5FeG4gZXJyIC0+IEpzX2Vycm9yLnJhaXNlXyBlcnJcbiAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAobWF0Y2ggSnNfZXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgICAgICAgfCBTb21lIGVyciAtPlxuICAgICAgICAgICAgICgqIEhhY2sgdG8gZ2V0IGEgYmV0dGVyIGJhY2t0cmFjZSAqKVxuICAgICAgICAgICAgIHByZXR0eV9wcmludF9leGNlcHRpb24gXCJFcnJvcjpcIiBleG47XG4gICAgICAgICAgICAgKCogQW5kIHRoZW4gcmFpc2UgdGhlIGVtYmVkZGVkIGphdmFzY3JpcHQgZXJyb3IgdGhhdCBwcm92aWRlcyBhIHByb3BlclxuICAgICAgICAgICAgICAgIGJhY2t0cmFjZSB3aXRoIGdvb2Qgc291cmNlbWFwIHN1cHBvcnQuXG4gICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhpcyBqYXZhc2NyaXB0IGVycm9yIGlzIHByb2JhYmx5IG5vdCBtZWFuaW5nZnVsIHdoaWNoIGlzIHdoeVxuICAgICAgICAgICAgICAgIHdlIGZpcnN0IG91dHB1dCB0aGUgc2VyaWFsaXphdGlvbiBvZiBvY2FtbCBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgSnNfZXJyb3IucmFpc2VfIGVycikpO1xuICAgICAgKG1hdGNoIG5leHRfd2FrZXVwIHdpdGhcbiAgICAgICB8IE5vX3dha2V1cCAtPiBzdGF0ZSA6PSBJZGxlXG4gICAgICAgfCBTb29uIC0+XG4gICAgICAgICBzdGF0ZSA6PSBXaWxsX3J1bl9zb29uO1xuICAgICAgICAgcnVuX2FmdGVyIH5mOmxvb3Agfm1zOjAuXG4gICAgICAgfCBBdCAoYXQsIGRfbXMpIC0+XG4gICAgICAgICBzdGF0ZSA6PSBJZGxlO1xuICAgICAgICAgaWYgU3RhY2suaXNfZW1wdHkgdGltZW91dHMgfHwgVGltZV9ucy4oIDwgKSBhdCAoU3RhY2sudG9wX2V4biB0aW1lb3V0cylcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBTdGFjay5wdXNoIHRpbWVvdXRzIGF0O1xuICAgICAgICAgICBydW5fYWZ0ZXIgfmY6cnVuX3RpbWVvdXQgfm1zOmRfbXMpKVxuICBhbmQgcnVuX3RpbWVvdXQgKCkgPVxuICAgICgqIEVhY2ggY2FsbCB0byBbcnVuX3RpbWVvdXRdIHJlbW92ZXMgZXhhY3RseSBvbmUgZWxlbWVudCBmcm9tIFt0aW1lb3V0c10uICBUaGlzXG4gICAgICAgbWFpbnRhaW5zIHRoZSBpbnZhcmlhbnQgdGhhdCBbU3RhY2subGVuZ3RoIHRpbWVvdXRzXSBpcyBleGFjdGx5IHRoZSBudW1iZXIgb2ZcbiAgICAgICBvdXRzdGFuZGluZyB0aW1lb3V0cyB3ZSBoYXZlIHJlZ2lzdGVyZWQuICopXG4gICAgaWdub3JlIChTdGFjay5wb3BfZXhuIHRpbWVvdXRzIDogVGltZV9ucy50KTtcbiAgICBsb29wICgpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBTdGF0ZS5JZGxlIC0+XG4gICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC47XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5XaWxsX3J1bl9zb29uXG4gICAgfCBTdGF0ZS5SdW5uaW5nIHwgU3RhdGUuV2lsbF9ydW5fc29vbiAtPiAoKVxuOztcblxubGV0IGluaXRpYWxpemVkX3JlZiA9IHJlZiBmYWxzZVxuXG5sZXQgaW5pdGlhbGl6YXRpb24gPVxuICBsYXp5XG4gICAgKGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICAgaW5pdGlhbGl6ZWRfcmVmIDo9IHRydWU7XG4gICAgIFNjaGVkdWxlci5zZXRfam9iX3F1ZXVlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfZXZlbnRfYWRkZWRfaG9vayB0IChmdW4gXyAtPiBydW4gKCkpO1xuICAgICBTY2hlZHVsZXIuc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgcnVuO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5FeHBlcnQudHJ5X3dpdGhfbG9nX2V4blxuICAgICA6PSBwcmV0dHlfcHJpbnRfZXhjZXB0aW9uIFwiQXN5bmNfa2VybmVsOiBNb25pdG9yLnRyeV93aXRoXCI7XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnNcbiAgICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5tYWluXG4gICAgICAgfmY6KHByZXR0eV9wcmludF9leGNlcHRpb24gXCJBc3luY19rZXJuZWw6IFVuaGFuZGxlZCBleGNlcHRpb25cIik7XG4gICAgIHJ1biAoKSlcbjs7XG5cbmxldCBpbml0ICgpID0gZm9yY2UgaW5pdGlhbGl6YXRpb25cbmxldCBpbml0aWFsaXplZCAoKSA9ICFpbml0aWFsaXplZF9yZWZcblxubGV0IGRvY3VtZW50X2xvYWRlZCA9XG4gIGxldCBqc19zdHJpbmdfY29tcGFyZSBzID1cbiAgICBsZXQgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyA9IHBoeXNfZXF1YWwgaW5cbiAgICBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzIChKcy5zdHJpbmcgcylcbiAgaW5cbiAgbGV0IHJlYWR5X3N0YXRlX2NoYW5nZSA9IFwicmVhZHlzdGF0ZWNoYW5nZVwiIGluXG4gIGxldCBjb21wbGV0ZSA9IFwiY29tcGxldGVcIiBpblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZV9ldiA9IERvbS5FdmVudC5tYWtlIHJlYWR5X3N0YXRlX2NoYW5nZSBpblxuICBsZXQgYWRkX2V2ZW50IHRhcmdldCBldnQgaGFuZGxlciA9XG4gICAgaWdub3JlXG4gICAgICAoRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciB0YXJnZXQgZXZ0IGhhbmRsZXIgSnMuX2ZhbHNlIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICB0aGVuIEFzeW5jX2tlcm5lbC5EZWZlcnJlZC51bml0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9hZGVkID0gQXN5bmNfa2VybmVsLkl2YXIuY3JlYXRlICgpIGluXG4gICAgICBsZXQgaGFuZGxlciBldnQgPVxuICAgICAgICBpZiAobm90IChqc19zdHJpbmdfY29tcGFyZSByZWFkeV9zdGF0ZV9jaGFuZ2UgZXZ0IyMuX3R5cGUpKVxuICAgICAgICB8fCBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICAgICAgdGhlbiBBc3luY19rZXJuZWwuSXZhci5maWxsX2lmX2VtcHR5IGxvYWRlZCAoKTtcbiAgICAgICAgSnMuX3RydWVcbiAgICAgIGluXG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgRG9tX2h0bWwuRXZlbnQuZG9tQ29udGVudExvYWRlZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgcmVhZHlzdGF0ZWNoYW5nZV9ldiAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwud2luZG93IERvbV9odG1sLkV2ZW50LmxvYWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgQXN5bmNfa2VybmVsLkl2YXIucmVhZCBsb2FkZWQpXG47O1xuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIEh0dHAgPSBIdHRwXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxuaW5jbHVkZSBBc3luY19qczBcblxubGV0IGxvZ19zID0gRGVidWcubG9nX3NcbmxldCBsb2dfc19hc19zdHJpbmcgPSBEZWJ1Zy5sb2dfc19hc19zdHJpbmdcbiIsIm9wZW4hIEJhc2VcblxuKCogVGhlIFtkYXRhXSBhcnJheSBpcyBhbiBpbXBsaWNpdCBiaW5hcnkgdHJlZSB3aXRoIFtjaGlsZHJlbl9sZW5ndGggKiAyIC0gMV0gbm9kZXMsXG4gICB3aXRoIGVhY2ggbm9kZSBiZWluZyB0aGUgc3VtIG9mIHRoZSB0d28gY2hpbGQgbm9kZXMgYW5kIHRoZSByb290IG5vZGUgYmVpbmcgdGhlIDB0aFxuICAgbm9kZS4gIFRoZSBsZWF2ZXMgb2YgdGhlIHRyZWUgYXJlIHRoZSBsYXN0IFtudW1fbGVhdmVzXSBub2Rlcy5cblxuICAgVGhlIGNoaWxkcmVuIGFyZSBub3QgbmVjZXNzYXJpbHkgYWxsIGF0IHRoZSBzYW1lIGxldmVsIG9mIHRoZSB0cmVlLiBGb3IgaW5zdGFuY2UgaWZcbiAgIHlvdSBoYXZlIDMgY2hpbGRyZW4gW3wgYTsgYjsgYyB8XTpcblxuICAge3ZcbiAgICAgICAgICBvXG4gICAgICAgICAvIFxcXG4gICAgICAgIG8gICBjXG4gICAgICAgLyBcXFxuICAgICAgYSAgIGJcbiAgIHZ9XG5cbiAgIFdlIHdhbnQgdGhpcyB0cmVlIHRvIGJlIHJlcHJlc2VudGF0ZWQgYXMgW3wgbzsgbzsgYzsgYTsgYiB8XSwgaS5lLiB3ZSBuZWVkIHRvIGFwcGx5XG4gICBmaXJzdCBhIHJvdGF0aW9uIHRoZW4gYSB0cmFuc2xhdGlvbiB0byBjb252ZXJ0IGFuIGluZGV4IGluIFt8IGE7IGI7IGMgfF0gdG8gYSAobGVhZilcbiAgIGluZGV4IGluIFt8IG87IG87IGM7IGE7IGIgfF0uICopXG50eXBlICdhIHQgPVxuICB7IGRhdGEgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7IG51bV9sZWF2ZXMgOiBpbnRcbiAgOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgOiBpbnRcbiAgOyByZWR1Y2UgOiAnYSAtPiAnYSAtPiAnYVxuICA7IHNleHBfb2ZfYSA6ICdhIC0+IFNleHAudFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubnVtX2xlYXZlc1xuXG4oKiB7dlxuICAgICBwYXJlbnQ6ICAgICAgMCAgMSAgMiAgMyAgNCAgNSAgNiAgNyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAuLi5cbiAgICAgbGVmdCBjaGlsZDogIDEgIDMgIDUgIDcgIDkgMTEgMTMgMTUgMTcgMTkgMjEgMjMgMjUgMjcgMjkgMzEgMzMgMzUgMzcgMzkgLi4uXG4gICAgIHJpZ2h0IGNoaWxkOiAyICA0ICA2ICA4IDEwIDEyIDE0IDE2IDE4IDIwIDIyIDI0IDI2IDI4IDMwIDMyIDM0IDM2IDM4IDQwIC4uLiB2fSAqKVxubGV0IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXggPSAoY2hpbGRfaW5kZXggLSAxKSAvIDJcbmxldCBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXggPSAocGFyZW50X2luZGV4ICogMikgKyAxXG5sZXQgcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXggPSBsZWZ0X2NoaWxkX2luZGV4ICsgMVxuXG4oKiBUaGUgZmlyc3QgW251bV9sZWF2ZXMtMV0gZWxlbWVudHMgYXJlIGludGVybmFsIG5vZGVzIG9mIHRoZSB0cmVlLiAgVGhlIG5leHRcbiAgIFtudW1fbGVhdmVzXSBlbGVtZW50cyBhcmUgdGhlIGxlYXZlcy4gKilcbmxldCBudW1fYnJhbmNoZXMgdCA9IHQubnVtX2xlYXZlcyAtIDFcbmxldCBpbmRleF9pc19sZWFmIHQgaSA9IGkgPj0gbnVtX2JyYW5jaGVzIHRcblxuKCogVGhlIHRyZWUgaXMgY29tcGxldGUsIGJ1dCBub3QgbmVjZXNzYXJpbHkgcGVyZmVjdCwgc28gd2UgcGVyZm9ybSBzb21lIHJvdGF0aW9uIG9mIHRoZVxuICAgbGVhdmVzIHRvIGVuc3VyZSB0aGF0IG91ciByZWR1Y3Rpb25zIHByZXNlcnZlIG9yZGVyaW5nLiAqKVxubGV0IGxlYWZfaW5kZXggdCBpID1cbiAgKCogVGhlIHRyZWUgbGF5b3V0IGlzIGxldmVsIG9yZGVyLiAgQW55IGxlYXZlcyBpbiB0aGUgc2Vjb25kIHRvIGxhc3QgbGV2ZWwgbmVlZCB0byBvY2N1clxuICAgICBpbiB0aGUgYXJyYXkgYmVmb3JlIHRoZSBsZWF2ZXMgaW4gdGhlIGJvdHRvbSBsZXZlbC4gKilcbiAgbGV0IHJvdGF0ZWRfaW5kZXggPVxuICAgIGxldCBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPSBpICsgdC5udW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgaW5cbiAgICBpZiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPCB0Lm51bV9sZWF2ZXNcbiAgICB0aGVuIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheVxuICAgIGVsc2Ugb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IC0gdC5udW1fbGVhdmVzXG4gIGluXG4gICgqIFRoZSBsZWF2ZXMgb2NjdXIgYWZ0ZXIgdGhlIGJyYW5jaGVzIGluIHRoZSBhcnJheS4gKilcbiAgcm90YXRlZF9pbmRleCArIG51bV9icmFuY2hlcyB0XG47O1xuXG5sZXQgZ2V0X2xlYWYgdCBpID0gT3B0aW9uX2FycmF5LmdldCB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXRfbGVhZiB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0b19saXN0IHQgOiBhIG9wdGlvbiBsaXN0KV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZGF0YSAtIDEgZG9cbiAgICBtYXRjaCBPcHRpb25fYXJyYXkuZ2V0IGRhdGEgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnVtX2JyYW5jaGVzIHQgLSAxIGRvXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBsZXQgbGVmdF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBsZWZ0IGluXG4gICAgbGV0IHJpZ2h0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHJpZ2h0IGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgZGF0YSBpXG4gICAgdGhlbiBhc3NlcnQgKG5vdCAobGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpKVxuICAgIGVsc2VcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIGluZGV4X2lzX2xlYWYgdCBsZWZ0IHx8IGluZGV4X2lzX2xlYWYgdCByaWdodCB8fCBsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZV9leG4gPyhzZXhwX29mX2EgPSBbJXNleHBfb2Y6IF9dKSAoKSB+bGVuOm51bV9sZWF2ZXMgfnJlZHVjZSA9XG4gIGlmIG51bV9sZWF2ZXMgPCAxXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJub24tcG9zaXRpdmUgbnVtYmVyIG9mIGxlYXZlcyBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgKG51bV9sZWF2ZXMgOiBpbnQpXTtcbiAgbGV0IG51bV9icmFuY2hlcyA9IG51bV9sZWF2ZXMgLSAxIGluXG4gIGxldCBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgPSBJbnQuY2VpbF9wb3cyIG51bV9sZWF2ZXMgLSBudW1fbGVhdmVzIGluXG4gIGxldCBkYXRhID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOihudW1fYnJhbmNoZXMgKyBudW1fbGVhdmVzKSBpblxuICB7IGRhdGE7IG51bV9sZWF2ZXM7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbDsgcmVkdWNlOyBzZXhwX29mX2EgfVxuOztcblxubGV0IHZhbGlkYXRlX2luZGV4IHQgaSA9XG4gIGlmIGkgPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJhdHRlbXB0IHRvIGFjY2VzcyBuZWdhdGl2ZSBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgfmluZGV4OihpIDogaW50KV07XG4gIGxldCBsZW5ndGggPSB0Lm51bV9sZWF2ZXMgaW5cbiAgaWYgaSA+PSBsZW5ndGhcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiXG4gICAgICAgICAgfmluZGV4OihpIDogaW50KVxuICAgICAgICAgIChsZW5ndGggOiBpbnQpXVxuOztcblxubGV0IHNldF9leG4gdCBpIGEgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGxldCBpID0gcmVmIChsZWFmX2luZGV4IHQgaSkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIGRhdGEgIWkgYTtcbiAgd2hpbGUgIWkgPD4gMCBkb1xuICAgIGxldCBwYXJlbnQgPSBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4OiFpIGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBwYXJlbnRcbiAgICB0aGVuIGkgOj0gMFxuICAgIGVsc2UgKFxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBkYXRhIHBhcmVudDtcbiAgICAgIGkgOj0gcGFyZW50KVxuICBkb25lXG47O1xuXG5sZXQgZ2V0X2V4biB0IGkgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbjs7XG5cbmxldCByZWMgY29tcHV0ZV9leG4gdCBpID1cbiAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgdC5kYXRhIGlcbiAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmRhdGEgaVxuICBlbHNlIChcbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGlmIGxlZnQgPj0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmRhdGFcbiAgICB0aGVuIChcbiAgICAgICgqIElmIHdlIGdldCBoZXJlLCB0aGUgcGFyZW50IHdhcyBhbiB1bnNldCBsZWFmLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfYSA9IHQuc2V4cF9vZl9hIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiYXR0ZW1wdCB0byBjb21wdXRlIGJhbGFuY2VkIHJlZHVjZXIgd2l0aCB1bnNldCBlbGVtZW50c1wiXG4gICAgICAgICAgICB+YmFsYW5jZWRfcmVkdWNlcjoodCA6IGEgdCldKTtcbiAgICBsZXQgYSA9IHQucmVkdWNlIChjb21wdXRlX2V4biB0IGxlZnQpIChjb21wdXRlX2V4biB0IHJpZ2h0KSBpblxuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5kYXRhIGkgYTtcbiAgICBhKVxuOztcblxubGV0IGNvbXB1dGVfZXhuIHQgPSBjb21wdXRlX2V4biB0IDBcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBpbml0IDogJ2FcbiAgOyBzdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgeyBpbml0OyBzdGVwcyA9IF8gfSA9IGludmFyaWFudF9hIGluaXRcblxubGV0IHJlYyB2YWx1ZV9pbnRlcm5hbCBpbml0IHN0ZXBzIH5hdCA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgKCh0LCBhKSwgc3RlcHMpIC0+XG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCB0IHRoZW4gaW5pdCBlbHNlIHZhbHVlX2ludGVybmFsIGEgc3RlcHMgfmF0XG47O1xuXG5sZXQgdmFsdWUgdCB+YXQgPSB2YWx1ZV9pbnRlcm5hbCB0LmluaXQgdC5zdGVwcyB+YXRcbmxldCBjb25zdGFudCBpbml0ID0geyBpbml0OyBzdGVwcyA9IFNlcXVlbmNlLmVtcHR5IH1cblxubGV0IGNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzID1cbiAgaWYgbm90XG4gICAgICAgKExpc3QuaXNfc29ydGVkIHN0ZXBzIH5jb21wYXJlOihmdW4gKHRpbWUxLCBfKSAodGltZTIsIF8pIC0+XG4gICAgICAgICAgVGltZV9ucy5jb21wYXJlIHRpbWUxIHRpbWUyKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG5dIGdvdCB1bnNvcnRlZCB0aW1lc1wiXG4gICAgICAgICAgfnN0ZXBzOihzdGVwcyB8PiBMaXN0Lm1hcCB+Zjpmc3QgOiBUaW1lX25zLnQgbGlzdCldO1xuICB7IGluaXQ7IHN0ZXBzID0gc3RlcHMgfD4gU2VxdWVuY2Uub2ZfbGlzdCB9XG47O1xuXG5sZXQgY3JlYXRlX2Zyb21fc2VxdWVuY2UgfmluaXQgfnN0ZXBzID0geyBpbml0OyBzdGVwcyB9XG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBXZWFrID0gU3RkbGliLldlYWtcblxudHlwZSAnYSB0ID0gJ2EgSGVhcF9ibG9jay50IFdlYWsudFxuXG5sZXQgY3JlYXRlIH5sZW4gPSBXZWFrLmNyZWF0ZSBsZW5cbmxldCBsZW5ndGggdCA9IFdlYWsubGVuZ3RoIHRcbmxldCBzZXQgPSBXZWFrLnNldFxuXG5sZXQgc2V0X2V4biB0IGkgeCA9IHNldCB0IGkgKE9wdGlvbi5tYXAgeCB+ZjpIZWFwX2Jsb2NrLmNyZWF0ZV9leG4pXG5cbmxldCBnZXQgPSBXZWFrLmdldFxubGV0IGlzX3NvbWUgdCBpID0gV2Vhay5jaGVjayB0IGlcbmxldCBpc19ub25lIHQgaSA9IG5vdCAoaXNfc29tZSB0IGkpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gZ2V0IHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHBfb2Y6IGEgSGVhcF9ibG9jay50IG9wdGlvbiBhcnJheV0gKHRvX2FycmF5IHQpXG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiAoSGVhcF9ibG9jay52YWx1ZSB2KVxuICBkb25lXG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGdldCB0IGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IGYgaSAoSGVhcF9ibG9jay52YWx1ZSB2KVxuICBkb25lXG5cbmxldCBibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgV2Vhay5ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuIiwiKCogV2UgaW1wbGVtZW50IGEgd2VhayBwb2ludGVyIHVzaW5nIGEgW1dlYWtfYXJyYXkudF0uICopXG5cbm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgV2Vha19hcnJheS50XG5cbmxldCBjcmVhdGUgKCkgPSBXZWFrX2FycmF5LmNyZWF0ZSB+bGVuOjFcblxuKCogV2UgdXNlIGEgd2VhayBhcnJheSBvZiBsZW5ndGggMSwgc28gdGhlIHdlYWsgcG9pbnRlciBpcyBhdCBpbmRleCAwLiAqKVxubGV0IGluZGV4ID0gMFxuXG5sZXQgZ2V0IHQgPSBXZWFrX2FycmF5LmdldCB0IGluZGV4XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uKV1cblxubGV0IGlzX25vbmUgdCA9IFdlYWtfYXJyYXkuaXNfbm9uZSB0IGluZGV4XG5sZXQgaXNfc29tZSB0ID0gV2Vha19hcnJheS5pc19zb21lIHQgaW5kZXhcblxubGV0IHNldCB0IGJsb2NrID0gV2Vha19hcnJheS5zZXQgdCBpbmRleCAoU29tZSBibG9jaylcbiIsIm9wZW4hIEJhc2VcblxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ2EsICdiIFdlYWtfcG9pbnRlci50KSBIYXNodGJsLnRcbiAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICAgICAgICAgIDogJ2EgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgOiB1bml0IC0+IHVuaXRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlID1cbiAgICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplXG4gICAgICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuXG4gICAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgPSBpZ25vcmVcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIFVzaW5nX2hhc2hhYmxlLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLm9mX2tleSBtKVxuOztcblxubGV0IHNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0IH50aHJlYWRfc2FmZV9mID1cbiAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA8LSB0aHJlYWRfc2FmZV9mO1xuOztcblxubGV0IHJlbW92ZSB0IGtleSA9IEhhc2h0YmwucmVtb3ZlIHQuZW50cnlfYnlfa2V5IGtleVxuXG4oKiBJbiBvcmRlciBmb3IgYSBjYWxsIHRvIFtyZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGFdIHRvIHJlY2xhaW0gYSBrZXkgdGhhdFxuICAgd2FzIHByZXZpb3VzbHkgZmluYWxpemVkLCB0aGUgd2VhayBwb2ludGVyIG11c3QgaGF2ZSBiZWVuIGNsZWFyZWQuICBUaGlzIHJlbGllcyBvbiB0aGVcbiAgIGZhY3QgdGhhdCB0aGUgT0NhbWwgZ2FyYmFnZSBjb2xsZWN0b3IgY2xlYXJzIHdlYWtzIGFuZCB0aGVuIHJ1bnMgZmluYWxpemVycy4gKilcbmxldCByZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGEgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSA+IDAgZG9cbiAgICBsZXQga2V5ID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZW50cnkgLT4gaWYgV2Vha19wb2ludGVyLmlzX25vbmUgZW50cnkgdGhlbiByZW1vdmUgdCBrZXlcbiAgZG9uZTtcbjs7XG5cbmxldCBnZXRfZW50cnkgdCBrZXkgPVxuICBIYXNodGJsLmZpbmRfb3JfYWRkIHQuZW50cnlfYnlfa2V5IGtleVxuICAgIH5kZWZhdWx0OihmdW4gKCkgLT4gV2Vha19wb2ludGVyLmNyZWF0ZSAoKSk7XG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgZW50cnkgLT4gV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbjs7XG5cbmxldCBrZXlfaXNfdXNpbmdfc3BhY2UgdCBrZXkgPSBIYXNodGJsLm1lbSB0LmVudHJ5X2J5X2tleSBrZXlcblxubGV0IHNldF9kYXRhIHQga2V5IGVudHJ5IChkYXRhIDogXyBIZWFwX2Jsb2NrLnQpID1cbiAgV2Vha19wb2ludGVyLnNldCBlbnRyeSBkYXRhO1xuICBsZXQgY2xlYW51cCAoKSA9XG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQua2V5c193aXRoX3VudXNlZF9kYXRhIGtleTtcbiAgICAgIHQudGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgKCkpXG4gIGluXG4gIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCBjbGVhbnVwIGRhdGEgd2l0aFxuICAoKiBJbiB0aGlzIGNhc2UsIFt4XSBpcyBrbm93biB0byBiZSBzdGF0aWMgZGF0YSwgd2hpY2ggd2lsbFxuICAgICBuZXZlciBiZSBjb2xsZWN0ZWQgYnkgdGhlIEdDIGFueXdheSwgc28gaXQncyBzYWZlIHRvIGRyb3AgKilcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKClcblxuOztcblxubGV0IHJlcGxhY2UgdCB+a2V5IH5kYXRhID0gc2V0X2RhdGEgdCBrZXkgKGdldF9lbnRyeSB0IGtleSkgZGF0YVxuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgaWYgV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIldlYWtfaGFzaHRibC5hZGRfZXhuIG9mIGtleSBpbiB1c2VcIiB+XzoodCA6IChfLCBfKSB0KSBbJWhlcmVdXTtcbiAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbjs7XG5cbmxldCBmaW5kIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5XG47O1xuXG5sZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgbWF0Y2ggV2Vha19wb2ludGVyLmdldCBlbnRyeSB3aXRoXG4gIHwgU29tZSB2IC0+IHZcbiAgfCBOb25lIC0+XG4gICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbiAgICBkYXRhXG47O1xuIiwidHlwZSB0ID1cbiAgfCBCZWZvcmVcbiAgfCBBZnRlclxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIlslJWltcG9ydCBcImRlYnVnLm1saFwiXVxuXG5vcGVuIENvcmVcblxuKCogQWxsIFthc3NlcnRdcyBhbmQgb3RoZXIgY2hlY2tzIHRocm91Z2hvdXQgdGhlIGNvZGUgYXJlIGd1YXJkZWQgYnkgW2lmIGRlYnVnXS4gIFRoZVxuICAgREVCVUcgdmFyaWFibGUgaXMgc2V0IGluIHRoZSBsaWIgW2luY3JlbWVudGFsXSBhbmQgdW5zZXQgaW4gdGhlIGxpYlxuICAgW2luY3JlbWVudGFsX2RlYnVnXSwgYnV0IGFwYXJ0IGZyb20gdGhhdCB0aGV5IGFyZSBpZGVudGljYWwuICBUZXN0cyBhcmUgcnVuIHdpdGggYm90aFxuICAgdGhlIHByb2R1Y3Rpb24gYW5kIGRlYnVnIGxpYiwgYW5kIHVzZXJzIGNhbiBjaG9vc2UgdG8gYnVpbGQgd2l0aCB0aGUgZGVidWcgbGlicmFyeSwgaWZcbiAgIHRoZXkgc3VzcGVjdCB0aGV5IGZvdW5kIGEgYnVnIGluIGluY3JlbWVudGFsLiAqKVxuXG5bJSVpZiBKU0NfREVCVUddXG5cbmxldCBkZWJ1ZyA9IHRydWVcblxuWyUlZWxzZV1cblxubGV0IGRlYnVnID0gZmFsc2VcblxuWyUlZW5kaWZdXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgdGFnIG5hbWUgYSBzZXhwX29mX2EgPSAobmFtZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXVxuXG5tb2R1bGUgU3RlcF9mdW5jdGlvbiA9IEluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGluY2x1ZGUgQXJyYXlcblxuICAoKiBOb3QgZGVmaW5pbmcgYWxpYXNlcyBpbiBwcm9kdWN0aW9uIG1vZGUsIHNpbmNlIHRoZXkgYnJlYWsgdHlwZSBzcGVjaWFsaXphdGlvbiBvZlxuICAgICBhcnJheSBhY2Nlc3Nlcy4gKilcbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiBhID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgQXJyYXkuYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIFVvcHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVb3B0XG5cbiAgbGV0IHVuc2FmZV92YWx1ZSA9IGlmIGRlYnVnIHRoZW4gdmFsdWVfZXhuIGVsc2UgdW5zYWZlX3ZhbHVlXG5lbmRcblxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVbmlmb3JtX2FycmF5XG5cbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbHNlXVxuXG4gICgqIFVuaWZvcm1fYXJyYXkgaXMgYmVpbmcgXCJzbWFydFwiIGJ5IGNoZWNraW5nIGlmIGVsZW1lbnRzIGFyZSBpbnRlZ2VycywgYnV0IFVvcHQudFxuICAgICBhbG1vc3QgbmV2ZXIgY29udGFpbiBpbnRlZ2Vycywgc28gdGhlIGV4dHJhIGNoZWNrIHRvIG1ha2UgZ2VuZXJhdGVkIGNvZGUgaGFyZGVyIHRvXG4gICAgIHJlYWQgYW5kIHBvdGVudGlhbGx5IHNsb3dlci4gKilcbiAgbGV0IHVuc2FmZV9zZXQgPSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnlcbiAgbGV0IHNldCA9IHNldF93aXRoX2NhbWxfbW9kaWZ5XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiA9XG4gICAgbGV0IG5ld190ID0gY3JlYXRlIH5sZW4gVW9wdC5ub25lIGluXG4gICAgYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gICgqIFdlIHNwZWNpYWxpemUgc29tZSBjdXRvZmZzIHRvIGF2b2lkIGFuIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGw7IGluIHBhcnRpY3VsYXIgd2VcbiAgICAgc3BlY2lhbGl6ZSB0aGUgZGVmYXVsdCAoYW5kIGhlbmNlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbikgY2FzZSBvZiBwaHlzaWNhbFxuICAgICBlcXVhbGl0eS4gKilcbiAgfCBBbHdheXNcbiAgfCBOZXZlclxuICB8IFBoeXNfZXF1YWxcbiAgfCBDb21wYXJlIG9mICgnYSAtPiAnYSAtPiBpbnQpXG4gIHwgRXF1YWwgb2YgKCdhIC0+ICdhIC0+IGJvb2wpXG4gIHwgRiBvZiAob2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiBib29sKVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWx3YXlzIHwgTmV2ZXIgfCBQaHlzX2VxdWFsIHwgQ29tcGFyZSBfIHwgRXF1YWwgXyB8IEYgXyAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9IEYgZlxubGV0IG9mX2NvbXBhcmUgZiA9IENvbXBhcmUgZlxubGV0IG9mX2VxdWFsIGYgPSBFcXVhbCBmXG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IGFsd2F5cyA9IEFsd2F5c1xubGV0IHBvbHlfZXF1YWwgPSBFcXVhbCBQb2x5LmVxdWFsXG5cbmxldCBzaG91bGRfY3V0b2ZmIHQgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgUGh5c19lcXVhbCAtPiBwaHlzX2VxdWFsIG9sZF92YWx1ZSBuZXdfdmFsdWVcbiAgfCBOZXZlciAtPiBmYWxzZVxuICB8IEFsd2F5cyAtPiB0cnVlXG4gIHwgQ29tcGFyZSBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZSA9IDBcbiAgfCBFcXVhbCBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IEYgZiAtPiBmIH5vbGRfdmFsdWUgfm5ld192YWx1ZVxuOztcblxubGV0IGVxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBBbHdheXMsIEFsd2F5cyAtPiB0cnVlXG4gIHwgQWx3YXlzLCBfIC0+IGZhbHNlXG4gIHwgTmV2ZXIsIE5ldmVyIC0+IHRydWVcbiAgfCBOZXZlciwgXyAtPiBmYWxzZVxuICB8IFBoeXNfZXF1YWwsIFBoeXNfZXF1YWwgLT4gdHJ1ZVxuICB8IFBoeXNfZXF1YWwsIF8gLT4gZmFsc2VcbiAgfCBDb21wYXJlIGYxLCBDb21wYXJlIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBDb21wYXJlIF8sIF8gLT4gZmFsc2VcbiAgfCBFcXVhbCBmMSwgRXF1YWwgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEVxdWFsIF8sIF8gLT4gZmFsc2VcbiAgfCBGIGYxLCBGIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBGIF8sIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwaHlzX2VxdWFsID0gUGh5c19lcXVhbFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFN0cmluZ19saXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+c2V4cF9vZl90IH5jb21wYXJlKVxuZW5kXG5cbnR5cGUgZG90ID1cbiAgeyBsYWJlbCA6IFNldC5NKFN0cmluZ19saXN0KS50XG4gIDsgYXR0cmlidXRlcyA6IHN0cmluZyBTdHJpbmcuTWFwLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID1cbiAgfCBEb3Qgb2YgZG90XG4gIHwgSW5mbyBvZiBJbmZvLnRcbiAgfCBBcHBlbmQgb2ZcbiAgICAgIHsgcHJpb3IgOiB0XG4gICAgICA7IG5ld18gOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5mbyBpbmZvID0gSW5mbyBpbmZvXG5sZXQgYXBwZW5kIHByaW9yIG5ld18gPSBBcHBlbmQgeyBwcmlvcjsgbmV3XyB9XG5cbmxldCBkb3QgfmxhYmVsIH5hdHRyaWJ1dGVzID1cbiAgbGV0IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBsYWJlbCBpblxuICBEb3QgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgcmVjIHRvX2RvdCA9IGZ1bmN0aW9uXG4gIHwgSW5mbyBpIC0+XG4gICAgeyBsYWJlbCA9IFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmdfbGlzdCkgWyBJbmZvLnRvX3N0cmluZ19odW0gaSBdXG4gICAgOyBhdHRyaWJ1dGVzID0gU3RyaW5nLk1hcC5lbXB0eVxuICAgIH1cbiAgfCBEb3QgZG90IC0+IGRvdFxuICB8IEFwcGVuZCB7IHByaW9yOyBuZXdfIH0gLT5cbiAgICBsZXQgcHJpb3IgPSB0b19kb3QgcHJpb3IgaW5cbiAgICBsZXQgbmV3XyA9IHRvX2RvdCBuZXdfIGluXG4gICAgbGV0IGxhYmVsID0gU2V0LnVuaW9uIHByaW9yLmxhYmVsIG5ld18ubGFiZWwgaW5cbiAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICBNYXAubWVyZ2Vfc2tld2VkXG4gICAgICAgIHByaW9yLmF0dHJpYnV0ZXNcbiAgICAgICAgbmV3Xy5hdHRyaWJ1dGVzXG4gICAgICAgIH5jb21iaW5lOihmdW4gfmtleTpfIF9sZWZ0IHJpZ2h0IC0+IHJpZ2h0KVxuICAgIGluXG4gICAgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgZXNjYXBlX2RvdF9zdHJpbmcgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL2xhbmcuaHRtbCAqKVxuICBcIlxcXCJcIiBeIFN0cmluZy5zdWJzdHJfcmVwbGFjZV9hbGwgcyB+cGF0dGVybjpcIlxcXCJcIiB+d2l0aF86XCJcXFxcXFxcIlwiIF4gXCJcXFwiXCJcbjs7XG5cbmxldCBlc2NhcGVfcmVjb3JkX2xhYmVsIHMgPVxuICAoKiBodHRwczovL2dyYXBodml6Lm9yZy9kb2MvaW5mby9zaGFwZXMuaHRtbCAqKVxuICBTdHJpbmcuY29uY2F0X21hcCBzIH5mOihmdW5jdGlvblxuICAgIHwgKCc8JyB8ICc+JyB8ICd7JyB8ICd9JyB8ICd8JyB8ICdcXFxcJyB8ICcgJykgYXMgYyAtPiBcIlxcXFxcIiBeIFN0cmluZy5vZl9jaGFyIGNcbiAgICB8IGMgLT4gU3RyaW5nLm9mX2NoYXIgYylcbjs7XG5cbmxldCB0b19zdHJpbmcgfm5hbWUgeyBsYWJlbDsgYXR0cmlidXRlcyB9ID1cbiAgbGV0IGxhYmVsID1cbiAgICBsYWJlbFxuICAgIHw+IFNldC50b19saXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjb2xzIC0+XG4gICAgICBcIntcIiBeIFN0cmluZy5jb25jYXQgKExpc3QubWFwIGNvbHMgfmY6ZXNjYXBlX3JlY29yZF9sYWJlbCkgfnNlcDpcInxcIiBeIFwifVwiKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcInxcIlxuICAgIHw+IGZ1biBzIC0+IFwie1wiIF4gcyBeIFwifVwiXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBhdHRyaWJ1dGVzXG4gICAgfD4gTWFwLnRvX2FsaXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgIHNwcmludGYge3wgJXM9JXN8fSAoZXNjYXBlX2RvdF9zdHJpbmcgaykgKGVzY2FwZV9kb3Rfc3RyaW5nIHYpKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICBpblxuICBzcHJpbnRmIHt8ICAlcyBbc2hhcGU9TXJlY29yZCBsYWJlbD0lcyAlc118fSBuYW1lIChlc2NhcGVfZG90X3N0cmluZyBsYWJlbCkgYXR0cmlidXRlc1xuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMSlcblxubGV0IG5leHQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gLTEpXG5sZXQgbm9uZSA9IC0xXG5sZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbmxldCBpc19zb21lIHQgPSB0ID49IDBcbmxldCBhZGQxIHQgPSB0ICsgMVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBQcmV2aW91c191cGRhdGVfa2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkXG4gICAgfCBOZWNlc3NhcnlcbiAgICB8IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTmVjZXNzYXJ5IG9mICdhXG4gICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZiA6ICdhIE5vZGVfdXBkYXRlLnQgLT4gdW5pdFxuICA7IG11dGFibGUgcHJldmlvdXNfdXBkYXRlX2tpbmQgOiBQcmV2aW91c191cGRhdGVfa2luZC50XG4gIDsgY3JlYXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSBmIH5hdDpjcmVhdGVkX2F0ID0geyBmOyBwcmV2aW91c191cGRhdGVfa2luZCA9IE5ldmVyX2JlZW5fdXBkYXRlZDsgY3JlYXRlZF9hdCB9XG5cbmxldCByZWFsbHlfcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSA9XG4gIHQucHJldmlvdXNfdXBkYXRlX2tpbmRcbiAgPC0gKG1hdGNoIG5vZGVfdXBkYXRlIHdpdGhcbiAgICB8IE5lY2Vzc2FyeSBfIC0+IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZCBfIC0+IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkIC0+IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeSAtPiBVbm5lY2Vzc2FyeSk7XG4gIHQuZiBub2RlX3VwZGF0ZVxuOztcblxubGV0IHJ1biB0IChub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCkgfm5vdyA9XG4gICgqIFdlIG9ubHkgcnVuIHRoZSBoYW5kbGVyIGlmIHdhcyBjcmVhdGVkIGluIGFuIGVhcmxpZXIgc3RhYmlsaXphdGlvbiBjeWNsZS4gIElmIHRoZVxuICAgICBoYW5kbGVyIHdhcyBjcmVhdGVkIGJ5IGFub3RoZXIgb24tdXBkYXRlIGhhbmRsZXIgZHVyaW5nIHRoZSBydW5uaW5nIG9mIG9uLXVwZGF0ZVxuICAgICBoYW5kbGVycyBpbiB0aGUgY3VycmVudCBzdGFiaWxpemF0aW9uLCB3ZSB0cmVhdCB0aGUgYWRkZWQgaGFuZGxlciBhcyBpZiBpdCB3ZXJlIGFkZGVkXG4gICAgIGFmdGVyIHRoaXMgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIFdlIHdpbGwgcnVuIGl0IGF0IHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sIGJlY2F1c2VcbiAgICAgdGhlIG5vZGUgd2l0aCB0aGUgaGFuZGxlciB3YXMgcHVzaGVkIG9uIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICopXG4gIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgdC5jcmVhdGVkX2F0IG5vdyA8IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggdC5wcmV2aW91c191cGRhdGVfa2luZCwgbm9kZV91cGRhdGUgd2l0aFxuICAgICgqIE9uY2UgYSBub2RlIGlzIGludmFsaWRhdGVkLCB0aGVyZSB3aWxsIG5ldmVyIGJlIGZ1cnRoZXIgaW5mb3JtYXRpb24gdG8gcHJvdmlkZSxcbiAgICAgICBzaW5jZSBpbmNyZW1lbnRhbCBkb2VzIG5vdCBhbGxvdyBhbiBpbnZhbGlkIG5vZGUgdG8gYmVjb21lIHZhbGlkLiAqKVxuICAgIHwgSW52YWxpZGF0ZWQsIF8gLT4gKClcbiAgICAoKiBUaGVzZSBjYXNlcyBjYW4gaGFwcGVuIGlmIGEgbm9kZSBpcyBoYW5kbGVkIGFmdGVyIHN0YWJpbGl6YXRpb24gZHVlIHRvIGFub3RoZXJcbiAgICAgICBoYW5kbGVyLiAgQnV0IGZvciB0aGUgY3VycmVudCBoYW5kbGVyLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICBuZXcgaW5mb3JtYXRpb24gdG8gcHJvdmlkZS4gKilcbiAgICB8IENoYW5nZWQsIE5lY2Vzc2FyeSBfIHwgTmVjZXNzYXJ5LCBOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5LCBVbm5lY2Vzc2FyeSAtPiAoKVxuICAgICgqIElmIHRoaXMgaGFuZGxlciBoYXNuJ3Qgc2VlbiBhIG5vZGUgdGhhdCBpcyBjaGFuZ2luZywgd2UgdHJlYXQgdGhlIHVwZGF0ZSBhcyBhblxuICAgICAgIGluaXRpYWxpemF0aW9uLiAqKVxuICAgIHwgKE5ldmVyX2JlZW5fdXBkYXRlZCB8IFVubmVjZXNzYXJ5KSwgQ2hhbmdlZCAoXywgYSkgLT4gcmVhbGx5X3J1biB0IChOZWNlc3NhcnkgYSlcbiAgICAoKiBBbGwgb3RoZXIgdXBkYXRlcyBhcmUgcnVuIGFzIGlzLiAqKVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkLCAoTmVjZXNzYXJ5IF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgVW5uZWNlc3NhcnksIChOZWNlc3NhcnkgXyB8IEludmFsaWRhdGVkKVxuICAgIHwgTmVjZXNzYXJ5LCAoQ2hhbmdlZCBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZClcbiAgICB8IENoYW5nZWQsIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKSAtPiByZWFsbHlfcnVuIHQgbm9kZV91cGRhdGUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBleG4gOiBleG5cbiAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGV4biA9IHsgZXhuOyBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIH1cblxubGV0IHJlcmFpc2Vfd2l0aF9tZXNzYWdlIHsgZXhuOyBiYWNrdHJhY2UgfSBtc2cgPVxuICBFeG4ucmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKEV4bi5SZXJhaXNlZCAobXNnLCBleG4pKSBiYWNrdHJhY2Vcbjs7XG5cbmxldCByZXJhaXNlIHsgZXhuOyBiYWNrdHJhY2UgfSA9IEV4bi5yYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4gYmFja3RyYWNlXG4iLCIoKiBUaGlzIG1vZHVsZSBoYXMgYSBnaWFudCBbbW9kdWxlIHJlY10gZGVmaW5pbmcgYWxsIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgdXNlZFxuICAgaW4gdGhlIGltcGxlbWVudGF0aW9uLiAgVGhlIGRlZmluaXRpb24gb2YgZWFjaCB0eXBlIGlzIHRoZW4gcmVwZWF0ZWQgaW4gaXRzIGZpbGU7XG4gICBjb21tZW50cyBiZWxvbmcgdGhlcmUsIG5vdCBoZXJlLlxuXG4gICBXZSBwdXQganVzdCBlbm91Z2ggc2V4cCBjb252ZXJ0ZXJzIGhlcmUgdG8gZGlzcGxheSBub2RlIGlkcy4gIFRoZSBkZXRhaWxlZCBzZXhwXG4gICBjb252ZXJ0ZXJzIGFyZSBnZW5lcmF0ZWQgdmlhIFt3aXRoIHNleHBdIGluIHRoZSBpbmRpdmlkdWFsIGZpbGVzLiAgRGVmaW5pbmcgdGhlIHNleHBcbiAgIGNvbnZlcnRlcnMgb3V0c2lkZSBvZiB0aGUgW21vZHVsZSByZWNdIG1ha2VzIGl0IGltcG9zc2libGUgdG8gYWNjaWRlbnRhbGx5IGludHJvZHVjZSBhXG4gICBzZXhwIGNvbnZlcnRlciB0aGF0IHdvdWxkIHRyeSB0byBwcm9kdWNlIGFuIGluZmluaXRlIHNleHAuXG4qKVxuXG5vcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSByZWMgQWRqdXN0X2hlaWdodHNfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICAgIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICB9XG5lbmQgPVxuICBBZGp1c3RfaGVpZ2h0c19oZWFwXG5cbmFuZCBBbGFybSA6IHNpZ1xuICB0eXBlIHQgPSBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC5BbGFybS50XG5lbmQgPVxuICBBbGFybVxuXG5hbmQgQWxhcm1fdmFsdWUgOiBzaWdcbiAgbW9kdWxlIEFjdGlvbiA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIEF0LnRcbiAgICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgICB8IFNuYXBzaG90IDogXyBTbmFwc2hvdC50IC0+IHRcbiAgICAgIHwgU3RlcF9mdW5jdGlvbiA6IF8gU3RlcF9mdW5jdGlvbl9ub2RlLnQgLT4gdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgYWN0aW9uIDogQWN0aW9uLnRcbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IHQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQWxhcm1fdmFsdWVcblxuYW5kIEFycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgaW5pdCA6ICdhY2NcbiAgICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgfVxuZW5kID1cbiAgQXJyYXlfZm9sZFxuXG5hbmQgQXQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgQXRcblxuYW5kIEF0X2ludGVydmFscyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IHVuaXQgTm9kZS50XG4gICAgOyBiYXNlIDogVGltZV9ucy50XG4gICAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgQXRfaW50ZXJ2YWxzXG5cbmFuZCBCaW5kIDogc2lnXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBtYWluIDogJ2IgTm9kZS50XG4gICAgOyBtdXRhYmxlIGYgOiAnYSAtPiAnYiBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudFxuICAgIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIHJocyA6ICdiIE5vZGUudCBVb3B0LnRcbiAgICA7IG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICAgIDsgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEJpbmRcblxuYW5kIENsb2NrIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyB0aW1pbmdfd2hlZWwgOiBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC50XG4gICAgOyBub3cgOiBUaW1lX25zLnQgVmFyLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBmaXJlZF9hbGFybV92YWx1ZXMgOiBBbGFybV92YWx1ZS50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIENsb2NrXG5cbmFuZCBFeHBlcnQgOiBzaWdcbiAgdHlwZSAnYSBlZGdlID1cbiAgICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICAgIH1cblxuICB0eXBlIHBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2UgW0BAdW5ib3hlZF1cblxuICB0eXBlICdhIHQgPVxuICAgIHsgZiA6IHVuaXQgLT4gJ2FcbiAgICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBudW1fY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gICAgOyBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIEV4cGVydFxuXG5hbmQgRnJlZXplIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICAgIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgICB9XG5lbmQgPVxuICBGcmVlemVcblxuYW5kIElmX3RoZW5fZWxzZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgdGVzdCA6IGJvb2wgTm9kZS50XG4gICAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICAgIDsgdGhlbl8gOiAnYSBOb2RlLnRcbiAgICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gICAgfVxuZW5kID1cbiAgSWZfdGhlbl9lbHNlXG5cbmFuZCBJbnRlcm5hbF9vYnNlcnZlciA6IHNpZ1xuICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDcmVhdGVkXG4gICAgICB8IEluX3VzZVxuICAgICAgfCBEaXNhbGxvd2VkXG4gICAgICB8IFVubGlua2VkXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICAgIDsgb2JzZXJ2aW5nIDogJ2EgTm9kZS50XG4gICAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX2FsbCA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX29ic2VydmluZyA6ICdhIHQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICB9XG5cbiAgdHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHRcblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSB0ID0gVCA6IF8gaW50ZXJuYWxfb2JzZXJ2ZXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIEludGVybmFsX29ic2VydmVyXG5cbmFuZCBKb2luIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBsaHMgOiAnYSBOb2RlLnQgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEpvaW5cblxuYW5kIEtpbmQgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFycmF5X2ZvbGQgOiAoXywgJ2EpIEFycmF5X2ZvbGQudCAtPiAnYSB0XG4gICAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICAgIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgOiAoXywgXykgQmluZC50IC0+IHVuaXQgdFxuICAgIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICAgIHwgQ29uc3Qgb2YgJ2FcbiAgICB8IEV4cGVydCBvZiAnYSBFeHBlcnQudFxuICAgIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gICAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gICAgfCBJZl90aGVuX2Vsc2Ugb2YgJ2EgSWZfdGhlbl9lbHNlLnRcbiAgICB8IEludmFsaWRcbiAgICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICAgIHwgSm9pbl9tYWluIG9mICdhIEpvaW4udFxuICAgIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgICB8IFN0ZXBfZnVuY3Rpb24gb2YgJ2EgU3RlcF9mdW5jdGlvbl9ub2RlLnRcbiAgICB8IFVuaW5pdGlhbGl6ZWRcbiAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IFZhciBvZiAnYSBWYXIudFxuICAgIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgICB8IE1hcDQgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDYgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDcgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDkgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEwIDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTEgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMiA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTMgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTQgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2ExNFxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYTE1XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuZW5kID1cbiAgS2luZFxuXG5hbmQgTm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgaWQgOiBOb2RlX2lkLnRcbiAgICA7IHN0YXRlIDogU3RhdGUudFxuICAgIDsgbXV0YWJsZSByZWNvbXB1dGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICAgIDsgbXV0YWJsZSBjdXRvZmYgOiAnYSBDdXRvZmYudFxuICAgIDsgbXV0YWJsZSBjaGFuZ2VkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gICAgO1xuICAgICAgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgcGFyZW50MCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGNyZWF0ZWRfaW4gOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgb2JzZXJ2ZXJzIDogJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gICAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0XG4gICAgdHlwZSB0ID0gVCA6IF8gbm9kZSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdIFtAQHVuYm94ZWRdXG4gIGVuZFxuXG4gIHZhbCBpc192YWxpZCA6IF8gdCAtPiBib29sXG4gIHZhbCBpc19uZWNlc3NhcnkgOiBfIHQgLT4gYm9vbFxuICB2YWwgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50IG9wdGlvblxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIE5vZGUgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIE5vZGVcbiAgICBlbmRcbiAgICB3aXRoIG1vZHVsZSBQYWNrZWQgOj0gTm9kZS5QYWNrZWQpXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBjb25jYXQgWyBcIm5cIjsgTm9kZV9pZC50b19zdHJpbmcgdC5pZCBdIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0ID0gVCA6IF8gbm9kZSAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgICBsZXQgc2V4cF9vZl90IChUIHQpID0gdCB8PiBbJXNleHBfb2Y6IF8gbm9kZV1cbiAgZW5kXG5cbiAgbGV0IGlzX3ZhbGlkIHQgPVxuICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICAgfCBfIC0+IHRydWVcbiAgOztcblxuICAoKiBbaXNfbmVjZXNzYXJ5XSBpcyBkZWZpbmVkIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIGl0IGJlZm9yZSBub2RlLm1sIGlzIGF2YWlsYWJsZS4gIEl0IGlzXG4gICAgIHVzZWQgZHVyaW5nIGdyYXBoIG1hbmlwdWxhdGlvbiwgYW5kIHNvIGlzIHdyaXR0ZW4gd2l0aCBzb21lIGNhcmUgdG8gYmUgZmFzdC4gKilcbiAgbGV0IGlzX25lY2Vzc2FyeSB0ID1cbiAgICB0Lm51bV9wYXJlbnRzID4gMFxuICAgIHx8IFVvcHQuaXNfc29tZSB0Lm9ic2VydmVyc1xuICAgIHx8IChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgfCBGcmVlemUgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfHwgdC5mb3JjZV9uZWNlc3NhcnlcbiAgOztcblxuICBsZXQgdF9pc19pbmplY3RpdmUgKHR5cGUgYSBiKSAoVCA6IChhIHQsIGIgdCkgVHlwZV9lcXVhbC50KSA6IChhLCBiKSBUeXBlX2VxdWFsLnQgPSBUXG5cbiAgbGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lICh0eXBlIGEgYikgKHQxIDogYSB0KSAodDIgOiBiIHQpID1cbiAgICAoKiBUaGlzIGlzIHR5cGUtc2FmZSBhc3N1bWluZyBubyBvbmUgY2FuIGdpdmUgdGhlIHNhbWUgaW5jcmVtZW50YWwgbm9kZSB0d28gZGlmZmVyZW50XG4gICAgICAgdHlwZXMuICBUaGlzIGlzIHRydWUgYmVjYXVzZSB0aGUgZmllbGQgW211dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIG9wdGlvbl0gcHJldmVudHNcbiAgICAgICBib3RoIHN1YnR5cGluZyBhbmQgcGFyYW1ldGVyaWMgcG9seW1vcnBoaXNtLiAgQnV0IHRoaXMgYWxsb3dzIHRvIGJyZWFrXG4gICAgICAgYWJzdHJhY3Rpb25zLCBhcyBpbiBzb21lb25lIGNvdWxkIHdyaXRlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdFxuICAgICAgICAgdHlwZSB1ICgqID0gdCB1bmRlcm5lYXRoICopXG4gICAgICAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0IEluY3IudCAqIHUgSW5jci50ICgqIHRoZSB0d28gaW5jcmVtZW50YWxzIGFyZSBwaHlzX2VxdWFsICopXG4gICAgICAgXX1cblxuICAgICAgIGFuZCB3ZSB3b3VsZCBmaWd1cmUgb3V0IHRoYXQgdHlwZSB0ID0gdS4gIEhvd2V2ZXIsIHdlIGNvdWxkIGFkZCBhIFR5cGVfZXF1YWwuSWQgdG9cbiAgICAgICBub2RlcyBhbmQgZG8gdGhlIHNhbWUsIHNvIGl0IHNlZW1zIHRvIGJlIGEgbW9yZSBnZW5lcmFsIGlzc3VlLiAqKVxuICAgIGlmIHBoeXNfc2FtZSB0MSB0MlxuICAgIHRoZW4gU29tZSAodF9pc19pbmplY3RpdmUgKE9iai5tYWdpYyAoVCA6IF8gVHlwZV9lcXVhbC50KSA6IChhIHQsIGIgdCkgVHlwZV9lcXVhbC50KSlcbiAgICBlbHNlIE5vbmVcbiAgOztcbmVuZFxuXG5hbmQgT2JzZXJ2ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCByZWZcbmVuZCA9XG4gIE9ic2VydmVyXG5cbmFuZCBPbmx5X2luX2RlYnVnIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX25vZGUgOiBOb2RlLlBhY2tlZC50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgOiBOb2RlLlBhY2tlZC50IGxpc3RcbiAgICB9XG5lbmQgPVxuICBPbmx5X2luX2RlYnVnXG5cbmFuZCBQYWNrZWRfd2Vha19oYXNodGJsIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuZW5kID1cbiAgUGFja2VkX3dlYWtfaGFzaHRibFxuXG5hbmQgUmVjb21wdXRlX2hlYXAgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICAgIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICB9XG5lbmQgPVxuICBSZWNvbXB1dGVfaGVhcFxuXG5hbmQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IHNpZ1xuICB0eXBlIHQgPSBUIDogJ2EgTm9kZS50ICogJ2EgT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGUudCAtPiB0XG5lbmQgPVxuICBSdW5fb25fdXBkYXRlX2hhbmRsZXJzXG5cbmFuZCBTY29wZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRvcFxuICAgIHwgQmluZCA6IChfLCBfKSBCaW5kLnQgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgPSBmdW5jdGlvblxuICAgIHwgVG9wIC0+IFwiVG9wXCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgfCBCaW5kIGJpbmQgLT4gYmluZC5tYWluIHw+IFslc2V4cF9vZjogXyBOb2RlLnRdXG4gIDs7XG5lbmRcblxuYW5kIFNuYXBzaG90IDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBhdCA6IFRpbWVfbnMudFxuICAgIDsgYmVmb3JlIDogJ2FcbiAgICA7IHZhbHVlX2F0IDogJ2EgTm9kZS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBTbmFwc2hvdFxuXG5hbmQgU3RhdGUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgOiBib29sXG4gICAgOyBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X3Njb3BlIDogU2NvcGUudFxuICAgIDsgcmVjb21wdXRlX2hlYXAgOiBSZWNvbXB1dGVfaGVhcC50XG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICAgIDsgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbmV3X29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogVmFyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzIDogUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50IFN0YWNrLnRcbiAgICA7IG11dGFibGUgb25seV9pbl9kZWJ1ZyA6IE9ubHlfaW5fZGVidWcudFxuICAgIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgOiBib29sXG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2NoYW5nZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2ludmFsaWRhdGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fdmFyX3NldHMgOiBpbnRcbiAgICB9XG5lbmQgPVxuICBTdGF0ZVxuXG5hbmQgU3RhdHVzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBTdGFiaWxpemluZ1xuICAgIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgICB8IE5vdF9zdGFiaWxpemluZ1xuICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIG9mIFJhaXNlZF9leG4udFxuZW5kID1cbiAgU3RhdHVzXG5cbmFuZCBTdGVwX2Z1bmN0aW9uX25vZGUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgY2hpbGQgOiAnYSBTdGVwX2Z1bmN0aW9uLnQgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSB1cGNvbWluZ19zdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiBBbGFybV92YWx1ZS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBTdGVwX2Z1bmN0aW9uX25vZGVcblxuYW5kIFVub3JkZXJlZF9hcnJheV9mb2xkIDogc2lnXG4gIHR5cGUgKCdhLCAnYWNjKSB0ID1cbiAgICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICAgIDsgaW5pdCA6ICdhY2NcbiAgICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gICAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDogaW50XG4gICAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICAgIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgICA7IG11dGFibGUgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgOiBpbnRcbiAgICB9XG5lbmQgPVxuICBVbm9yZGVyZWRfYXJyYXlfZm9sZFxuXG5hbmQgVmFyIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHNldF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gICAgfVxuXG4gIHR5cGUgJ2EgdmFyIDo9ICdhIHRcblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSB0ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmQgPVxuICBWYXJcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuVmFyLnQgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7ICgqIFt2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dIGlzIG9ubHkgc2V0IHRvIFtVb3B0LnNvbWVdIGlmIHRoZSB1c2VyIGNhbGxzXG4gICAgICAgW1Zhci5zZXRdIGR1cmluZyBzdGFiaWxpemF0aW9uLCBpbiB3aGljaCBjYXNlIGl0IGhvbGRzIHRoZSAobGFzdCkgdmFsdWUgc2V0LiAgQXRcbiAgICAgICB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIGFsbCBzdWNoIHZhcmlhYmxlcyBhcmUgcHJvY2Vzc2VkIHRvIGRvIFt0LnZhbHVlIDwtXG4gICAgICAgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogJ2EgVW9wdC50XG4gIDsgKCogW3NldF9hdF0gdGhlIHN0YWJpbGl6YXRpb24gbnVtYmVyIGluIGVmZmVjdCB0aGUgbW9zdCByZWNlbnQgdGltZSBbdC52YWx1ZV0gY2hhbmdlZC5cbiAgICAgICBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0XG4gICAgICAgcmVjZW50IHRpbWUgW1Zhci5zZXQgdF0gd2FzIGNhbGxlZCwgZHVlIHRvIHRoZSBlZmZlY3Qgb2YgW1Zhci5zZXRdIGR1cmluZ1xuICAgICAgIHN0YWJpbGl6YXRpb24gYmVpbmcgZGVsYXllZCB1bnRpbCBhZnRlciB0aGUgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHNldF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyB3YXRjaCA6ICdhIE5vZGUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH52YWx1ZTooY2hlY2sgaW52YXJpYW50X2EpXG4gICAgICB+dmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnNldF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfndhdGNoOlxuICAgICAgICAoY2hlY2sgKGZ1biAod2F0Y2ggOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggd2F0Y2gua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBwb3NzaWJsZSB3aXRoIFt+dXNlX2N1cnJlbnRfc2NvcGU6dHJ1ZV0gKilcbiAgICAgICAgICAgfCBWYXIgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKSlcbjs7XG5cbmxldCBpbmNyX3N0YXRlIHQgPSB0LndhdGNoLnN0YXRlXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB2YXIgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgdCA9IFR5cGVzLlZhci5QYWNrZWQudCA9IFQgOiBfIHZhciAtPiB0IFtAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGxhdGVzdF92YWx1ZSB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgZWxzZSB0LnZhbHVlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxubW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRl9pbnZlcnNlIG9mICgnYiAtPiAnYSAtPiAnYilcbiAgICB8IFVwZGF0ZSBvZiAoJ2IgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYilcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdXBkYXRlIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgVXBkYXRlIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICB8IEZfaW52ZXJzZSBmX2ludmVyc2UgLT5cbiAgICAgIGZ1biBmb2xkX3ZhbHVlIH5vbGRfdmFsdWUgfm5ld192YWx1ZSAtPiBmIChmX2ludmVyc2UgZm9sZF92YWx1ZSBvbGRfdmFsdWUpIG5ld192YWx1ZVxuICA7O1xuZW5kXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5Vbm9yZGVyZWRfYXJyYXlfZm9sZC50ID1cbiAgeyBtYWluIDogJ2FjYyBOb2RlLnRcbiAgOyBpbml0IDogJ2FjY1xuICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgOyB1cGRhdGUgOiAnYWNjIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2FjY1xuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICA7IG11dGFibGUgZm9sZF92YWx1ZSA6ICdhY2MgVW9wdC50XG4gIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+aW5pdDooY2hlY2sgaW52YXJpYW50X2FjYylcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfnVwZGF0ZTppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdDtcbiAgICAgICAgICAgICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSBjaGlsZC52YWx1ZV9vcHQpKSkpXG4gICAgICB+Zm9sZF92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gZm9sZF92YWx1ZSAtPlxuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYWNjIGZvbGRfdmFsdWU7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKFVvcHQuaXNfc29tZSBmb2xkX3ZhbHVlKVxuICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAodC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDw9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6XG4gICAgICAgIChjaGVjayAoZnVuIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID4gMCkpKSlcbjs7XG5cbmxldCBjcmVhdGUgfmluaXQgfmYgfnVwZGF0ZSB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB+Y2hpbGRyZW4gfm1haW4gPVxuICB7IGluaXRcbiAgOyBmXG4gIDsgdXBkYXRlID0gVXBkYXRlLnVwZGF0ZSB1cGRhdGUgfmZcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDsgY2hpbGRyZW5cbiAgOyBtYWluXG4gIDsgZm9sZF92YWx1ZSA9XG4gICAgICBVb3B0Lm5vbmVcbiAgKCogV2UgbWFrZSBbbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXVxuICAgICBzbyB0aGF0IHRoZXJlIHdpbGwgYmUgYSBmdWxsIGNvbXB1dGF0aW9uIHRoZSBuZXh0IHRpbWUgdGhlIG5vZGUgaXMgY29tcHV0ZWQuICopXG4gIDsgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIH1cbjs7XG5cbmxldCBmdWxsX2NvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbjsgXyB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgY29tcHV0ZSB0ID1cbiAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB0aGVuIChcbiAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIDA7XG4gICAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQuc29tZSAoZnVsbF9jb21wdXRlIHQpKTtcbiAgVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlXG47O1xuXG5sZXQgZm9yY2VfZnVsbF9jb21wdXRlIHQgPVxuICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5ub25lO1xuICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IGNoaWxkX2NoYW5nZWRcbiAgICAgICh0eXBlIGEgYilcbiAgICAgICh0IDogKGEsIF8pIHQpXG4gICAgICB+KGNoaWxkIDogYiBOb2RlLnQpXG4gICAgICB+Y2hpbGRfaW5kZXhcbiAgICAgIH4ob2xkX3ZhbHVlX29wdCA6IGIgVW9wdC50KVxuICAgICAgfihuZXdfdmFsdWUgOiBiKVxuICA9XG4gIGxldCBjaGlsZF9hdF9pbmRleCA9IHQuY2hpbGRyZW4uKGNoaWxkX2luZGV4KSBpblxuICBtYXRjaCBOb2RlLnR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIGNoaWxkIGNoaWxkX2F0X2luZGV4IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Vub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRdIG1pc21hdGNoXCJcbiAgICAgICAgICB+dW5vcmRlcmVkX2FycmF5X2ZvbGQ6KHQgOiAoXywgXykgdClcbiAgICAgICAgICAoY2hpbGRfaW5kZXggOiBpbnQpXG4gICAgICAgICAgKGNoaWxkIDogXyBOb2RlLnQpXVxuICB8IFNvbWUgVCAtPlxuICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLSAxXG4gICAgdGhlbiAoXG4gICAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgKyAxO1xuICAgICAgKCogV2Ugb25seSByZWFjaCB0aGlzIGNhc2UgaWYgd2UgaGF2ZSBhbHJlYWR5IGRvbmUgYSBmdWxsIGNvbXB1dGUsIGluIHdoaWNoIGNhc2VcbiAgICAgICAgIFtVb3B0LmlzX3NvbWUgdC5mb2xkX3ZhbHVlXSBhbmQgW1VvcHQuaXNfc29tZSBvbGRfdmFsdWVfb3B0XS4gKilcbiAgICAgIHQuZm9sZF92YWx1ZVxuICAgICAgPC0gVW9wdC5zb21lXG4gICAgICAgICAgICh0LnVwZGF0ZVxuICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlKVxuICAgICAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnZhbHVlX2V4biBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgICAgICB+bmV3X3ZhbHVlKSlcbiAgICBlbHNlIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICB0aGVuIGZvcmNlX2Z1bGxfY29tcHV0ZSB0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cblxudHlwZSB0ID0gKFR5cGVzLkFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSkgQWxhcm0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bGwgPSBBbGFybS5udWxsICgpXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQWxhcm1fdmFsdWUgPSBUeXBlcy5BbGFybV92YWx1ZVxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlN0ZXBfZnVuY3Rpb25fbm9kZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogKEFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSlcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHBoeXNfc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyB3aGVuIFt1cGNvbWluZ19zdGVwc10gYmVjb21lcyBlbXB0eS4gKilcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0Omlnbm9yZVxuICAgICAgfnZhbHVlOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnVwY29taW5nX3N0ZXBzOmlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+YWxhcm1fdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIChhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0MiAtPiBhc3NlcnQgKHBoeXNfc2FtZSB0IHQyKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuXG5sZXQgcmVjIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGExIHN0ZXBzID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgU29tZSAoKHN0ZXBfYXQsIGEyKSwgc3RlcHMyKSB3aGVuIFRpbWVfbnMuKCA+PSApIHRvXyBzdGVwX2F0IC0+XG4gICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTIgc3RlcHMyXG4gIHwgXyAtPlxuICAgIHQudmFsdWUgPC0gVW9wdC5zb21lIGExO1xuICAgIHQudXBjb21pbmdfc3RlcHMgPC0gc3RlcHNcbjs7XG5cbmxldCBhZHZhbmNlIHQgfnRvXyA9IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIChVb3B0LnZhbHVlX2V4biB0LnZhbHVlKSB0LnVwY29taW5nX3N0ZXBzXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5BcnJheV9mb2xkLnQgPVxuICB7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQpKSkpXG47O1xuXG5sZXQgY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXQudCA9XG4gIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgQWZ0ZXIgLT4gKCkgKCogaGFwcGVucyBvbmNlIHRoZSBjdXJyZW50IHRpbWUgcGFzc2VzIFt0LmF0XS4gKilcbiAgICAgICAgICAgfCBBdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0X2ludGVydmFscy50ID1cbiAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgOyBiYXNlIDogVGltZV9ucy50XG4gIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5iYXNlOmlnbm9yZVxuICAgICAgfmludGVydmFsOihjaGVjayAoZnVuIGludGVydmFsIC0+IGFzc2VydCAoVGltZV9ucy5TcGFuLmlzX3Bvc2l0aXZlIGludGVydmFsKSkpXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEJpbmQgPSBUeXBlcy5CaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm1vZHVsZSBTY29wZSA9IFR5cGVzLlNjb3BlXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJpbmQudCA9XG4gIHsgbWFpbiA6ICdiIE5vZGUudFxuICA7ICgqIFtmXSBpcyB0aGUgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0aGF0IHdlIHJ1biBlYWNoIHRpbWUgW3QubGhzXSBjaGFuZ2VzLiAgSXQgaXNcbiAgICAgICBtdXRhYmxlIG9ubHkgc28gd2UgY2FuIGNsZWFyIGl0IHdoZW4gW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7ICgqIFtyaHNdIGlzIGluaXRpYWxseSBbbm9uZV0sIGFuZCBhZnRlciB0aGF0IGlzIFtzb21lXSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBtb3N0IHJlY2VudFxuICAgICAgIGNhbGwgdG8gW2ZdLiAqKVxuICAgIG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICA7ICgqIFtyaHNfc2NvcGVdIGlzIHRoZSBzY29wZSBpbiB3aGljaCBbdC5mXSBpcyBydW4sIGkuZS4gaXQgaXMgW1Njb3BlLkJpbmQgdF0uICBJdCBpc1xuICAgICAgIFttdXRhYmxlXSBvbmx5IHRvIGF2b2lkIGEgW2xldCByZWNdIGR1cmluZyBjcmVhdGlvbi4gKilcbiAgICBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgOyAoKiBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBpcyB0aGUgaGVhZCBvZiB0aGUgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIG5vZGVzIGNyZWF0ZWQgb25cbiAgICAgICB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIFt0XSwgaS5lLiBpbiBbdC5yaHNfc2NvcGVdLiAqKVxuICAgIG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpc192YWxpZCB0ID1cbiAgbWF0Y2ggdC5tYWluLmtpbmQgd2l0aFxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgfCBfIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfihmIDogTm9kZS5QYWNrZWQudCAtPiB1bml0KSA9XG4gIGxldCByID0gcmVmIHQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgZiAoVCBub2RlX29uX3JocylcbiAgZG9uZVxuOztcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgX2ludmFyaWFudF9iIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBsaHNfY2hhbmdlLmNyZWF0ZWRfaW4gdC5tYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmVcbiAgICAgIH5yaHNfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBTY29wZS5Ub3AgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgIHwgQmluZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JykpKVxuICAgICAgfmFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdC5yaHNfc2NvcGUpO1xuICAgICAgICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgdGhlbiBhc3NlcnQgKHQubGhzX2NoYW5nZS5oZWlnaHQgPCBub2RlLmhlaWdodCkpKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSBlZGdlID0gJ2EgVHlwZXMuRXhwZXJ0LmVkZ2UgPVxuICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICA7ICgqIFtpbmRleF0gaXMgZGVmaW5lZCB3aGVuZXZlciB0aGUgW2VkZ2VdIGlzIGluIHRoZSBbY2hpbGRyZW5dIG9mIHNvbWUgW3RdLiBUaGVuIGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIHRoaXMgW2VkZ2VdIGluIHRoYXQgW2NoaWxkcmVuXSBhcnJheS4gSXQgbWlnaHQgc2VlbSByZWR1bmRhbnQgd2l0aCBhbGxcbiAgICAgICB0aGUgb3RoZXIgaW5kZXhlcyB3ZSBoYXZlLCBidXQgaXQgaXMgbmVjZXNzYXJ5IHRvIHJlbW92ZSBjaGlsZHJlbi4gIFRoZSBpbmRleCBtYXlcbiAgICAgICBjaGFuZ2UgYXMgc2libGluZyBjaGlsZHJlbiBhcmUgcmVtb3ZlZC4gKilcbiAgICBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHBhY2tlZF9lZGdlID0gVHlwZXMuRXhwZXJ0LnBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2VcbltAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkV4cGVydC50ID1cbiAgeyBmIDogdW5pdCAtPiAnYVxuICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICA7ICgqIFdoZW4gc2V0LCBtYWtlcyB0aGUgbm9kZSBvZiBbdF0gc3RhbGUuICBJdCBpcyBzZXQgd2hlbiB0aGUgc2V0IG9mIGNoaWxkcmVuIGNoYW5nZXMuXG4gICAgICAgT3RoZXJ3aXNlIHRoZSBub3JtYWwgY2hlY2sgb2Ygc3RhbGVuZXNzIChjb21wYXJpbmcgdGhlIFtjaGFuZ2VkX2F0XSBmaWVsZCBvZlxuICAgICAgIGNoaWxkcmVuIGFuZCB0aGUgW3JlY29tcHV0ZWRfYXRdIGZpZWxkIGZvciB0aGUgbm9kZSBvZiBbdF0pIHdvdWxkIG5vdCBiZSBlbm91Z2guXG4gICAgICAgVGhpcyBwbGF5cyBhIHJvbGUgc2ltaWxhciB0byB0aGUgY3V0b2ZmIG9mIFtOZXZlcl0gZm9yIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmRzLCBidXRcbiAgICAgICB3ZSBkb24ndCBoYXZlIGEgc3BlY2lhbCBjaGlsZC4gKilcbiAgICBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICA7ICgqIFRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHBvaW50IHRvIHVzLiAgVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbm9kZVxuICAgICAgIG9mIFt0XSBuZWVkcyB0byBpbnZhbGlkYXRlZCwgd2l0aG91dCBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIGNoaWxkcmVuLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWVkZWQgZm9yIG90aGVyIG5vZGVzLCBiZWNhdXNlIHRoZXJlIGFyZSBubyBvdGhlciBub2RlcyB0aGF0IGhhdmUgYSBwb3RlbnRpYWxseVxuICAgICAgIGxhcmdlIGFuZCBkeW5hbWljIHNldCBvZiBjaGlsZHJlbi4gKilcbiAgICBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hldGhlciB3ZSB3aWxsIGZpcmUgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcyBmb3IgYWxsIGNoaWxkcmVuIHdoZW4gdGhlIG5vZGUgb2YgW3RdXG4gICAgICAgaXRzZWxmIHJ1bnMuICBVc2VkIHRvIG1ha2Ugc3VyZSB3ZSByZXJ1biBldmVyeXRoaW5nIGFmdGVyIFt0XSBzd2l0Y2hlcyBmcm9tXG4gICAgICAgdW5vYnNlcnZhYmxlIGFuZCBiYWNrIHRvIG9ic2VydmFibGUuICopXG4gICAgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudFxuICAgICAgX2ludmFyaWFudF9hXG4gICAgICB7IGYgPSBfXG4gICAgICA7IGNoaWxkcmVuXG4gICAgICA7IG51bV9jaGlsZHJlblxuICAgICAgOyBmb3JjZV9zdGFsZSA9IF9cbiAgICAgIDsgbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBfXG4gICAgICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gX1xuICAgICAgfVxuICA9XG4gIGFzc2VydCAobnVtX2NoaWxkcmVuIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIGNoaWxkcmVuKTtcbiAgaWdub3JlIG51bV9pbnZhbGlkX2NoaWxkcmVuO1xuICAoKiBpbnZhcmlhbnQgaXMgYmVsb3csIGJlY2F1c2Ugd2UgbmVlZCBzb21lIGNvbnRleHQgKilcbiAgVW5pZm9ybV9hcnJheS5pdGVyaSBjaGlsZHJlbiB+ZjooZnVuIGkgdW9wdCAtPlxuICAgIG1hdGNoIGkgPCBudW1fY2hpbGRyZW4gd2l0aFxuICAgIHwgdHJ1ZSAtPlxuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gdW9wdCBpblxuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoVW9wdC52YWx1ZV9leG4gci5pbmRleCkgfmV4cGVjdDppXG4gICAgfCBmYWxzZSAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSB1b3B0KSlcbjs7XG5cbmxldCBpbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW4gdCB+aXNfbmVjZXNzYXJ5ID1cbiAgbGV0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgbnVtX2ludmFsaWRfY2hpbGRyZW47IF8gfSA9IHQgaW5cbiAgaWYgbm90IGlzX25lY2Vzc2FyeVxuICB0aGVuIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDowXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF9pbnZhbGlkX2NoaWxkcmVuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgci5jaGlsZCkgdGhlbiBpbmNyIGNvdW50X2ludmFsaWRfY2hpbGRyZW5cbiAgICBkb25lO1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDohY291bnRfaW52YWxpZF9jaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGUgfmYgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlID1cbiAgeyBmXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2VcbiAgOyBjaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgOyBudW1fY2hpbGRyZW4gPSAwXG4gIDsgZm9yY2Vfc3RhbGUgPSBmYWxzZVxuICA7IG51bV9pbnZhbGlkX2NoaWxkcmVuID0gMFxuICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdHJ1ZVxuICB9XG47O1xuXG5sZXQgbWFrZV9zdGFsZSB0ID1cbiAgaWYgdC5mb3JjZV9zdGFsZVxuICB0aGVuIGBBbHJlYWR5X3N0YWxlXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgICBgT2spXG47O1xuXG5sZXQgaW5jcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gKyAxXG5sZXQgZGVjcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gLSAxXG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX2NoaWxkcmVuID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHQubnVtX2NoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXggPSBJbnQubWF4IDIgKDIgKiBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKSBpblxuICAgIHQuY2hpbGRyZW4gPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQuY2hpbGRyZW4gfmxlbjpuZXdfbWF4KVxuOztcblxubGV0IGFkZF9jaGlsZF9lZGdlIHQgcGFja2VkX2VkZ2UgPVxuICBsZXQgKEUgZWRnZSkgPSBwYWNrZWRfZWRnZSBpblxuICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlZGdlLmluZGV4KTtcbiAgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQ7XG4gIGxldCBuZXdfY2hpbGRfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQuc29tZSBuZXdfY2hpbGRfaW5kZXg7XG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbmV3X2NoaWxkX2luZGV4IChVb3B0LnNvbWUgcGFja2VkX2VkZ2UpO1xuICB0Lm51bV9jaGlsZHJlbiA8LSB0Lm51bV9jaGlsZHJlbiArIDE7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgKCogV2Ugd2lsbCBidW1wIHRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiBpZiBuZWNlc3Nhcnkgd2hlbiBjb25uZWN0aW5nIGNoaWxkIGFuZFxuICAgICBwYXJlbnQuICBTYW1lIHRoaW5nIGZvciBydW5uaW5nIHRoZSBbb25fY2hhbmdlXSBjYWxsYmFja3MuICopXG4gIG5ld19jaGlsZF9pbmRleFxuOztcblxubGV0IHN3YXBfY2hpbGRyZW4gdCB+Y2hpbGRfaW5kZXgxIH5jaGlsZF9pbmRleDIgPVxuICBsZXQgKEUgZWRnZTEpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxKSBpblxuICBsZXQgKEUgZWRnZTIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgyKSBpblxuICBlZGdlMS5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgyO1xuICBlZGdlMi5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgxO1xuICBVbmlmb3JtX2FycmF5LnN3YXAgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEgY2hpbGRfaW5kZXgyXG47O1xuXG5sZXQgbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleClcbjs7XG5cbmxldCByZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgbGV0IHBhY2tlZF9lZGdlX29wdCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggVW9wdC5ub25lO1xuICB0Lm51bV9jaGlsZHJlbiA8LSBsYXN0X2luZGV4O1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gIGFzc2VydCAoVW9wdC5pc19zb21lIHBhY2tlZF9lZGdlX29wdCk7XG4gIGxldCAoRSBlZGdlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIHBhY2tlZF9lZGdlX29wdCBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQubm9uZVxuOztcblxubGV0IGJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIHQgPVxuICBpZiB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuID4gMFxuICB0aGVuIGBJbnZhbGlkXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gZmFsc2U7XG4gICAgbGV0IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyBpblxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gZmFsc2U7XG4gICAgaWYgd2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgICB0aGVuXG4gICAgICBmb3IgaSA9IDAgdG8gdC5udW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGkpIGluXG4gICAgICAgIHIub25fY2hhbmdlIChVb3B0LnZhbHVlX2V4biByLmNoaWxkLnZhbHVlX29wdClcbiAgICAgIGRvbmU7XG4gICAgYE9rKVxuOztcblxubGV0IG9ic2VydmFiaWxpdHlfY2hhbmdlIHQgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgdC5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSB+aXNfbm93X29ic2VydmFibGU7XG4gIGlmIG5vdCBpc19ub3dfb2JzZXJ2YWJsZVxuICB0aGVuIChcbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIHRydWU7XG4gICAgKCogSWYgd2UgZG9uJ3QgcmVzZXQgbnVtX2ludmFsaWRfY2hpbGRyZW4sIHdlIHdvdWxkIGRvdWJsZSBjb3VudCB0aGVtOiBqdXN0IGltYWdpbmVcbiAgICAgICB3aGF0IGhhcHBlbnMgd2UgaWYgcmVjb25uZWN0L2Rpc2Nvbm5lY3QvcmVjb25uZWN0L2Rpc2Nvbm5lY3Qgd2l0aCBhbiBpbnZhbGlkXG4gICAgICAgY2hpbGQuICopXG4gICAgdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSAwKVxuOztcblxubGV0IHJ1bl9lZGdlX2NhbGxiYWNrIHQgfmNoaWxkX2luZGV4ID1cbiAgaWYgbm90IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgdGhlbiAoXG4gICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgpIGluXG4gICAgKCogVGhpcyB2YWx1ZSBpcyBub3QgbmVjZXNzYXJpbHkgc2V0LCBiZWNhdXNlIHdlIHRyeSB0byBydW4gdGhpcyB3aGVuIGNvbm5lY3RpbmcgdGhlXG4gICAgICAgbm9kZSB0byBpdHMgY2hpbGRyZW4sIHdoaWNoIGNvdWxkIGJlIGJlZm9yZSB0aGV5IGhhdmUgcnVuIGV2ZW4gb25jZS4gIEFsc28gdGhlIG5vZGVcbiAgICAgICBjb3VsZCBiZSBpbnZhbGlkLiAqKVxuICAgIGlmIFVvcHQuaXNfc29tZSByLmNoaWxkLnZhbHVlX29wdFxuICAgIHRoZW4gci5vbl9jaGFuZ2UgKFVvcHQudW5zYWZlX3ZhbHVlIHIuY2hpbGQudmFsdWVfb3B0KSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5pbmNsdWRlIFR5cGVzLlNjb3BlXG5cbmxldCB0b3AgPSBUb3BcblxubGV0IGlzX3RvcCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbjs7XG5cbigqIFVubGlrZSBmb3Igbm9kZXMsIHRoZXJlIGlzIG5vIGludmFyaWFudCBbaXNfbmVjZXNzYXJ5IHQgPD0+IGhlaWdodCA+IC0xXSAoZG9lc24ndCB3b3JrXG4gICBiZWNhdXNlIG9mIFtUb3BdKS4gIFRoaXMgaXMgZmluZSBzaW5jZSB0aGUgaGVpZ2h0IG9mIGEgc2NvcGUgaXMgb25seSB1c2VkIHRvIGNvbnN0cmFpblxuICAgb3RoZXIgaGVpZ2h0cywgbm90IHRvIHNjaGVkdWxlIGl0LiAqKVxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IC0xXG4gIHwgQmluZCBiaW5kIC0+IGJpbmQubGhzX2NoYW5nZS5oZWlnaHRcbjs7XG5cbmxldCBpc192YWxpZCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pc192YWxpZCBiaW5kXG47O1xuXG5sZXQgaXNfbmVjZXNzYXJ5ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBOb2RlLmlzX25lY2Vzc2FyeSBiaW5kLm1haW5cbjs7XG5cbmxldCBhZGRfbm9kZSB0IChub2RlIDogXyBOb2RlLnQpID1cbiAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0KTtcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+XG4gICAgbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocztcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0LnNvbWUgKFR5cGVzLk5vZGUuUGFja2VkLlQgbm9kZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRnJlZXplLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIGZyZWV6aW5nIGFuIGludmFsaWQgdmFsdWUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgb24gYmVjb21pbmcgZnJvemVuICopXG4gICAgICAgICAgIHwgRnJlZXplIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5vbmx5X2ZyZWV6ZV93aGVuOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSWZfdGhlbl9lbHNlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfnRlc3Q6aWdub3JlXG4gICAgICB+dGVzdF9jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuICh0ZXN0X2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB0ZXN0X2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmN1cnJlbnRfYnJhbmNoOlxuICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X2JyYW5jaCAtPlxuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2hcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IGN1cnJlbnRfYnJhbmNoID0gVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2ggaW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LnRoZW5fIHx8IHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC5lbHNlXykpKSlcbiAgICAgIH50aGVuXzppZ25vcmVcbiAgICAgIH5lbHNlXzppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkpvaW4udCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlNuYXBzaG90LnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IGJlZm9yZSA6ICdhXG4gIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gc25hcHNob3R0aW5nIGFuIGludmFsaWQgbm9kZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBhZnRlciB0aGUgc25hcHNob3QgKilcbiAgICAgICAgICAgfCBTbmFwc2hvdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YmVmb3JlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9hdDppZ25vcmVcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLktpbmQudCA9XG4gIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICB8IENvbnN0IG9mICdhXG4gIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICB8IEludmFsaWRcbiAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgVmFyIG9mICdhIFZhci50XG4gIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwNCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAqICdhNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA1IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA2IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA3IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA4IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA5IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYTExIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEyIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMyA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE0IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE1IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhMTVcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuYW1lIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBcnJheV9mb2xkIF8gLT4gXCJBcnJheV9mb2xkXCJcbiAgfCBBdCBfIC0+IFwiQXRcIlxuICB8IEF0X2ludGVydmFscyBfIC0+IFwiQXRfaW50ZXJ2YWxzXCJcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBcIkJpbmRfbGhzX2NoYW5nZVwiXG4gIHwgQmluZF9tYWluIF8gLT4gXCJCaW5kX21haW5cIlxuICB8IENvbnN0IF8gLT4gXCJDb25zdFwiXG4gIHwgRXhwZXJ0IF8gLT4gXCJFeHBlcnRcIlxuICB8IEZyZWV6ZSBfIC0+IFwiRnJlZXplXCJcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IFwiSWZfdGVzdF9jaGFuZ2VcIlxuICB8IElmX3RoZW5fZWxzZSBfIC0+IFwiSWZfdGhlbl9lbHNlXCJcbiAgfCBJbnZhbGlkIC0+IFwiSW52YWxpZFwiXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gXCJKb2luX2xoc19jaGFuZ2VcIlxuICB8IEpvaW5fbWFpbiBfIC0+IFwiSm9pbl9tYWluXCJcbiAgfCBNYXAgXyAtPiBcIk1hcFwiXG4gIHwgTWFwMiBfIC0+IFwiTWFwMlwiXG4gIHwgTWFwMyBfIC0+IFwiTWFwM1wiXG4gIHwgTWFwNCBfIC0+IFwiTWFwNFwiXG4gIHwgTWFwNSBfIC0+IFwiTWFwNVwiXG4gIHwgTWFwNiBfIC0+IFwiTWFwNlwiXG4gIHwgTWFwNyBfIC0+IFwiTWFwN1wiXG4gIHwgTWFwOCBfIC0+IFwiTWFwOFwiXG4gIHwgTWFwOSBfIC0+IFwiTWFwOVwiXG4gIHwgTWFwMTAgXyAtPiBcIk1hcDEwXCJcbiAgfCBNYXAxMSBfIC0+IFwiTWFwMTFcIlxuICB8IE1hcDEyIF8gLT4gXCJNYXAxMlwiXG4gIHwgTWFwMTMgXyAtPiBcIk1hcDEzXCJcbiAgfCBNYXAxNCBfIC0+IFwiTWFwMTRcIlxuICB8IE1hcDE1IF8gLT4gXCJNYXAxNVwiXG4gIHwgU25hcHNob3QgXyAtPiBcIlNuYXBzaG90XCJcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gXCJTdGVwX2Z1bmN0aW9uXCJcbiAgfCBVbmluaXRpYWxpemVkIC0+IFwiVW5pbml0aWFsaXplZFwiXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBcIlVub3JkZXJlZF9hcnJheV9mb2xkXCJcbiAgfCBWYXIgXyAtPiBcIlZhclwiXG47O1xuXG5sZXQgaW52YXJpYW50IDogdHlwZSBhLiBhIEludmFyaWFudC50IC0+IGEgdCBJbnZhcmlhbnQudCA9XG4gIGZ1biBpbnZhcmlhbnRfYSB0IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBBcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYXJyYXlfZm9sZFxuICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbiAgfCBCaW5kX21haW4gYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYmluZFxuICB8IENvbnN0IGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5pbnZhcmlhbnQgaW52YXJpYW50X2EgZVxuICB8IEZyZWV6ZSBmcmVlemUgLT4gRnJlZXplLmludmFyaWFudCBpbnZhcmlhbnRfYSBmcmVlemVcbiAgfCBJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpZ25vcmUgaWZfdGhlbl9lbHNlXG4gIHwgSWZfdGhlbl9lbHNlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGludmFyaWFudF9hIGlmX3RoZW5fZWxzZVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2Ugam9pbiAtPiBKb2luLmludmFyaWFudCBpZ25vcmUgam9pblxuICB8IEpvaW5fbWFpbiBqb2luIC0+IEpvaW4uaW52YXJpYW50IGludmFyaWFudF9hIGpvaW5cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgXyAtPiAoKVxuICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpbnZhcmlhbnRfYSBzbmFwc2hvdFxuICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgLT5cbiAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gIHwgVmFyIHZhciAtPiBWYXIuaW52YXJpYW50IGlnbm9yZSB2YXJcbjs7XG5cbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdCBfIC0+IDBcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAwXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEJpbmRfbWFpbiBfIC0+IDJcbiAgfCBDb25zdCBfIC0+IDBcbiAgfCBFeHBlcnQgXyAtPiAwXG4gIHwgRnJlZXplIF8gLT4gMVxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gMVxuICB8IElmX3RoZW5fZWxzZSBfIC0+IDJcbiAgfCBJbnZhbGlkIC0+IDBcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgSm9pbl9tYWluIF8gLT4gMlxuICB8IE1hcCBfIC0+IDFcbiAgfCBNYXAyIF8gLT4gMlxuICB8IE1hcDMgXyAtPiAzXG4gIHwgTWFwNCBfIC0+IDRcbiAgfCBNYXA1IF8gLT4gNVxuICB8IE1hcDYgXyAtPiA2XG4gIHwgTWFwNyBfIC0+IDdcbiAgfCBNYXA4IF8gLT4gOFxuICB8IE1hcDkgXyAtPiA5XG4gIHwgTWFwMTAgXyAtPiAxMFxuICB8IE1hcDExIF8gLT4gMTFcbiAgfCBNYXAxMiBfIC0+IDEyXG4gIHwgTWFwMTMgXyAtPiAxM1xuICB8IE1hcDE0IF8gLT4gMTRcbiAgfCBNYXAxNSBfIC0+IDE1XG4gIHwgU25hcHNob3QgXyAtPiAwXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IDFcbiAgfCBVbmluaXRpYWxpemVkIC0+IDBcbiAgfCBWYXIgXyAtPiAwXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuOztcblxubGV0IGJpbmRfcmhzX2NoaWxkX2luZGV4ID0gMVxubGV0IGZyZWV6ZV9jaGlsZF9pbmRleCA9IDBcbmxldCBpZl9icmFuY2hfY2hpbGRfaW5kZXggPSAxXG5sZXQgam9pbl9yaHNfY2hpbGRfaW5kZXggPSAxXG5cbigqIFdlIGRvIG5vdCBpbXBsZW1lbnQgdGhlIHRpbWUtYmFzZWQgbm9kZXMgKFtBdF0sIFtBdF9pbnRlcnZhbHNdLCBbU25hcHNob3RdLFxuICAgW1N0ZXBfZnVuY3Rpb25dKSBhcyBwYXJlbnRzIG9mIHRoZSBjdXJyZW50LXRpbWUgbm9kZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFdlIGRvbid0XG4gICB3YW50IGFsbCBzdWNoIG5vZGVzIHRvIGJlIHJlY29tcHV0ZWQgd2hlbmV2ZXIgdGhlIHRpbWUgY2hhbmdlcywgd2hpY2ggd291bGQgYmUgaG9ycmlibHlcbiAgIGlubmVmaWNpZW50LiAgSW5zdGVhZCwgd2Ugb25seSB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBhdCB0aGUgXCJyaWdodFwiIHRpbWUsXG4gICBpLmUuIHdoZW4gdGltZSBwYXNzZXMgc29tZSB0aHJlc2hvbGQgcmVsZXZhbnQgdG8gdGhlbS4gIFdlIGRvIHRoaXMgdmlhIHNjaGVkdWxpbmdcbiAgIGFsYXJtcyBhdCB0aG9zZSB0aHJlc2hvbGRzLiAqKVxubGV0IGl0ZXJpX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBpbnQgLT4gTm9kZS5QYWNrZWQudCAtPiB1bml0KSA6IHVuaXQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IEF0IF8gLT4gKClcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IGYgMCAoVCBiaW5kLmxocylcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgICgqIFZhcmlvdXMgY29kZSwgZS5nLiBbc3RhdGUuYmVjYW1lX25lY2Vzc2FyeV0sIHJlbGllcyBvbiBwcm9jZXNzaW5nIFtsaHNfY2hhbmdlXVxuICAgICAgIGJlZm9yZSBbcmhzXS4gKilcbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBDb25zdCBfIC0+ICgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRXhwZXJ0LkUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBmIGkgKFQgci5jaGlsZClcbiAgICBkb25lXG4gIHwgRnJlZXplIHsgY2hpbGQ7IF8gfSAtPiBmIDAgKFQgY2hpbGQpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gZiAwIChUIHRlc3QpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBmIDAgKFQgdGVzdF9jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaCB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY3VycmVudF9icmFuY2gpKVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBmIDAgKFQgbGhzKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgU25hcHNob3QgXyAtPiAoKVxuICB8IFN0ZXBfZnVuY3Rpb24geyBjaGlsZDsgXyB9IC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkIHRoZW4gZiAwIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjaGlsZCkpXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IFZhciBfIC0+ICgpXG4gIHwgTWFwIChfLCBub2RlMCkgLT4gZiAwIChUIG5vZGUwKVxuICB8IE1hcDIgKF8sIG5vZGUwLCBub2RlMSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSlcbiAgfCBNYXAzIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpXG4gIHwgTWFwNCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKVxuICB8IE1hcDUgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNClcbiAgfCBNYXA2IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpXG4gIHwgTWFwNyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KVxuICB8IE1hcDggKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNylcbiAgfCBNYXA5IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpXG4gIHwgTWFwMTAgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSlcbiAgfCBNYXAxMSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTksIG5vZGUxMClcbiAgICAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApXG4gIHwgTWFwMTJcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSlcbiAgfCBNYXAxM1xuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpXG4gIHwgTWFwMTRcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTMgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpXG4gIHwgTWFwMTVcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTNcbiAgICAgICwgbm9kZTE0ICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKTtcbiAgICBmIDE0IChUIG5vZGUxNClcbjs7XG5cbigqIFtzbG93X2dldF9jaGlsZF0gaXMgb25seSB1c2VkIGJ5IFtOb2RlLmludmFyaWFudF0sIHNvIHdlIGRvbid0IG1pbmQgdXNpbmcgW3dpdGhfcmV0dXJuXVxuICAgYW5kIFtpdGVyaV9jaGlsZHJlbl0uICBJZiB3ZSBldmVyIG5lZWQgYSBmYXN0IFtnZXRfY2hpbGRdLCB3ZSBjb2RlZCBpdCBpbiByZXZcbiAgIDQ4ZGJmZDAzYzljNS4gKilcbmxldCBzbG93X2dldF9jaGlsZCA6IHR5cGUgYS4gYSB0IC0+IGluZGV4Ol8gLT4gTm9kZS5QYWNrZWQudCA9XG4gIGZ1biB0IH5pbmRleCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGxldCAoRSBlZGdlKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpbmRleCkgaW5cbiAgICBUIGVkZ2UuY2hpbGRcbiAgfCBfIC0+XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gaSBjaGlsZCAtPiBpZiBpID0gaW5kZXggdGhlbiByLnJldHVybiBjaGlsZCk7XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIktpbmQuc2xvd19nZXRfY2hpbGQgZ290IGludmFsaWQgaW5kZXhcIlxuICAgICAgICAoaW5kZXgsIHQpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogXyB0XSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIEtpbmRcbm1vZHVsZSBJbnRlcm5hbF9vYnNlcnZlciA9IFR5cGVzLkludGVybmFsX29ic2VydmVyXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm9wZW4gTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Ob2RlLnQgPVxuICB7ICgqIFtpZF0gaXMgYSB1bmlxdWUgaWQgZm9yIHRoZSBub2RlLiAqKVxuICAgIGlkIDogTm9kZV9pZC50XG4gIDsgc3RhdGUgOiAoVHlwZXMuU3RhdGUudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFRoZSBmaWVsZHMgZnJvbSBbcmVjb21wdXRlZF9hdF0gdG8gW2NyZWF0ZWRfaW5dIGFyZSBncm91cGVkIHRvZ2V0aGVyIGFuZCBhcmUgaW4gdGhlXG4gICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSB1c2VkIGJ5IFtTdGF0ZS5yZWNvbXB1dGVdIFRoaXMgaGFzIGEgcG9zaXRpdmUgcGVyZm9ybWFuY2VcbiAgICAgICBpbXBhY3QgZHVlIHRvIGNhY2hlIGVmZmVjdHMuICBEb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZXNlIG5vZGVzIHdpdGhvdXRcbiAgICAgICBwZXJmb3JtYW5jZSB0ZXN0aW5nLiAqKVxuICAgICgqIFtyZWNvbXB1dGVkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gW3RdJ3MgdmFsdWUgd2FzIHJlY29tcHV0ZWQsIGV2ZW4gaWZcbiAgICAgICBpdCB3YXMgY3V0IG9mZi4gKilcbiAgICBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW3ZhbHVlX29wdF0gc3RhcnRzIGFzIFtub25lXSwgYW5kIHRoZSBmaXJzdCB0aW1lIFt0XSBpcyBjb21wdXRlZCBpdCBpcyBzZXQgdG9cbiAgICAgICBbc29tZV0sIGFuZCByZW1haW5zIFtzb21lXSB0aGVyZWFmdGVyLCB1bnRpbCBbdF0gaXMgaW52YWxpZGF0ZWQsIGlmIGV2ZXIuICopXG4gICAgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBba2luZF0gaXMgdGhlIGtpbmQgb2YgREFHIG5vZGUgW3RdIGlzLiAgW2tpbmRdIGlzIG11dGFibGUgYm90aCBmb3IgaW5pdGlhbGl6YXRpb25cbiAgICAgICBhbmQgYmVjYXVzZSBpdCBjYW4gY2hhbmdlLCBlLmcuIGlmIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gIDsgKCogW2NoYW5nZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiB0aGlzIG5vZGUgd2FzIGNvbXB1dGVkIGFuZCBub3QgY3V0IG9mZi5cbiAgICAgICBJdCBpcyB1c2VkIHRvIGRldGVjdCB3aGVuIFt0XSdzIHBhcmVudHMgYXJlIHN0YWxlIGFuZCAoYmVjYXVzZSBhbGwgcGFyZW50cyBhcmVcbiAgICAgICBuZWNlc3NhcnkpIG5lZWQgdG8gYmUgcmVjb21wdXRlZC4gKilcbiAgICBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIGlzIFtMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVyc10gcGx1cyB0aGUgbnVtYmVyIG9mXG4gICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHN1bW1lZCBvdmVyIGFsbCBvYnNlcnZlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIEl0IGlzIHVzZWQgdG9cbiAgICAgICBxdWlja2x5IGRlY2lkZSB3aGV0aGVyIFt0XSBuZWVkcyB0byBiZSBhZGRlZCB0byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dXG4gICAgICAgd2hlbiBbdF0gY2hhbmdlcy4gIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aWxsIGRlY3JlYXNlIHdoZW4gYW4gb2JzZXJ2ZXIgaXNcbiAgICAgICByZW1vdmVkIGZyb20gW3Qub2JzZXJ2ZXJzXSwgaWYgdGhlIG9ic2VydmVyIGhhcyBvbi11cGRhdGUgaGFuZGxlcnMuICopXG4gICAgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gIDsgKCogVGhlIHBhcmVudHMgb2YgW3RdIGFyZSB0aGUgbm9kZXMgdGhhdCBkZXBlbmQgb24gaXQsIGFuZCBzaG91bGQgYmUgY29tcHV0ZWQgd2hlbiBbdF1cbiAgICAgICBjaGFuZ2VzLCBvbmNlIGFsbCBvZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgdXAgdG8gZGF0ZS4gIFtudW1fcGFyZW50c10gaXMgdGhlXG4gICAgICAgbnVtYmVyIG9mIHBhcmVudHMuICBJZiBbbnVtX3BhcmVudHMgPj0gMV0sIHRoZW4gW3BhcmVudDBdIGlzIHRoZSBmaXJzdCBwYXJlbnQuXG4gICAgICAgW3BhcmVudDFfYW5kX2JleW9uZF0gaG9sZHMgdGhlIHJlbWFpbmluZyBwYXJlbnRzLiAgVGhlIG9yZGVyIG9mIHRoZSBwYXJlbnRzIGRvZXNuJ3RcbiAgICAgICBtYXR0ZXIuICBPbmUgbm9kZSBtYXkgb2NjdXIgbXVsdGlwbGUgdGltZXMgYXMgYSBwYXJlbnQgb2YgYW5vdGhlciAoZS5nLiBjb25zaWRlclxuICAgICAgIFttYXAyIG4xIG4xIH5mXSkuXG5cbiAgICAgICBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIG9wdGltaXplZCBmb3IgdGhlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbiBjYXNlIHRoYXQgYSBub2RlIGhhc1xuICAgICAgIG9ubHkgb25lIHBhcmVudC4gKilcbiAgICBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gIDsgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBQYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gIDsgbXV0YWJsZSBwYXJlbnQwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2NyZWF0ZWRfaW5dIGlzIGluaXRpYWxseSB0aGUgc2NvcGUgdGhhdCB0aGUgbm9kZSBpcyBjcmVhdGVkIGluLiAgSWYgYSBub2RlIGlzXG4gICAgICAgbGF0ZXIgXCJyZXNjb3BlZFwiLCB0aGVuIGNyZWF0ZWRfaW4gd2lsbCBiZSBhZGp1c3RlZCB0byB0aGUgbmV3IHNjb3BlIHRoYXQgdGhlIG5vZGVcbiAgICAgICBpcyBwYXJ0IG9mLiAqKVxuICAgIG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgOyAoKiBbbmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgY3JlYXRlZCBpbiBbdC5jcmVhdGVkX2luXS4gKilcbiAgICBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF0gaXMgdXNlZCB0byB2aXNpdCBub2RlcyBpbiB0b3BvbG9naWNhbCBvcmRlci4gIElmIFtpc19uZWNlc3NhcnkgdF0sIHRoZW5cbiAgICAgICBbaGVpZ2h0ID4gYy5oZWlnaHRdIGZvciBhbGwgY2hpbGRyZW4gW2NdIG9mIFt0XSwgYW5kIFtoZWlnaHQgPiBTY29wZS5oZWlnaHRcbiAgICAgICB0LmNyZWF0ZWRfaW5dLiAgSWYgW25vdCAoaXNfbmVjZXNzYXJ5IHQpXSwgdGhlbiBbaGVpZ2h0ID0gLTFdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0IDogaW50XG4gIDsgKCogW2hlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gaXMgdGhlIGhlaWdodCBhdCB3aGljaCBbdF0gaXMgc3RvcmVkIGluIHRoZSByZWNvbXB1dGVcbiAgICAgICBoZWFwLCBhbmQgaXMgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgSWYgW3RdIGlzIHRoZVxuICAgICAgIHJlY29tcHV0ZSBoZWFwLCB0aGVuIHR5cGljYWxseSBbdC5oZWlnaHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF07IGhvd2V2ZXIsXG4gICAgICAgd2hpbGUgaGVpZ2h0IGlzIGJlaW5nIGFkanVzdGVkLCBvbmUgY2FuIHRlbXBvcmFyaWx5IGhhdmUgW3QuaGVpZ2h0ID5cbiAgICAgICB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0uICBXaGVuIGhlaWdodCBhZGp1c3RtZW50IGZpbmlzaGVzLCBlcXVhbGl0eSBpcyByZXN0b3JlZFxuICAgICAgIGJ5IGluY3JlYXNpbmcgW3QuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSB0byBbdC5oZWlnaHRdIGFuZCBzaGlmdGluZyBbdF0nc1xuICAgICAgIHBvc2l0aW9uIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICA7ICgqIFtwcmV2X2luX3JlY29tcHV0ZV9oZWFwXSBhbmQgW25leHRfaW5fcmVjb21wdXRlX2hlYXBdIGRvdWJseSBsaW5rIGFsbCBub2RlcyBvZiB0aGVcbiAgICAgICBzYW1lIGhlaWdodCBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBpcyB1c2VkIG9ubHkgZHVyaW5nIGhlaWdodCBhZGp1c3RtZW50LCBhbmQgaXNcbiAgICAgICBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgYWRqdXN0LWhlaWdodHMgaGVhcC4gIEl0IGhvbGRzIHRoZSBwcmUtYWRqdXN0ZWRcbiAgICAgICBoZWlnaHQgb2YgW3RdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgOyAoKiBbbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIG9mIHRoZSBzYW1lIGhlaWdodCBpbiB0aGVcbiAgICAgICBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAqKVxuICAgIG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW29sZF92YWx1ZV9vcHRdIGlzIHVzZWQgb25seSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgYW5kIG9ubHkgaWZcbiAgICAgICBbdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMF0uICBJdCBob2xkcyB0aGUgcHJlLXN0YWJpbGl6YXRpb24gdmFsdWUgb2YgW3RdLiAgSXRcbiAgICAgICBpcyBjbGVhcmVkIHdoZW4gcnVubmluZyBbdF0ncyBvbi11cGRhdGUgaGFuZGxlcnMsIGFuZCBzbyBpcyBhbHdheXMgW1VvcHQubm9uZV1cbiAgICAgICBiZXR3ZWVuIHN0YWJpbGl6YXRpb25zLiAqKVxuICAgIG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtvYnNlcnZlcnNdIGlzIHRoZSBoZWFkIG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2Ygb2JzZXJ2ZXJzIG9mIFt0XSwgb3JcbiAgICAgICBbVW9wdC5ub25lXSBpZiB0aGVyZSBhcmUgbm8gb2JzZXJ2ZXJzLiAqKVxuICAgIG11dGFibGUgb2JzZXJ2ZXJzIDogKCdhIEludGVybmFsX29ic2VydmVyLnRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgKCogW2lzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBpcyB1c2VkIHRvIGF2b2lkIHB1c2hpbmcgdGhlIHNhbWUgbm9kZSBtdWx0aXBsZVxuICAgICAgIHRpbWVzIG9udG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICA7ICgqIFtvbl91cGRhdGVfaGFuZGxlcnNdIGlzIHRoZSBmdW5jdGlvbnMgc3VwcGxpZWQgdG8gW0luY3JlbWVudGFsLm9uX3VwZGF0ZV0gdG8gYmUgcnVuXG4gICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBtb2R1bGUgW09uX3VwZGF0ZV9oYW5kbGVyXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIGRvZXMgbm90XG4gICAgICAgY29udGFpbiB0aGUgb24tdXBkYXRlIGhhbmRsZXJzIGluIFt0Lm9ic2VydmVyc10uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBvbmx5IGV2ZXJcbiAgICAgICBnZXRzIGxvbmdlcjsgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbW92ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBwYWNrZWRfc2FtZSAoUGFja2VkLlQgdDEpIChQYWNrZWQuVCB0MikgPSBzYW1lIHQxIHQyXG5sZXQgaXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnlcbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiB0ID0gS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiB0LmtpbmRcbmxldCBpdGVyaV9jaGlsZHJlbiB0IH5mID0gS2luZC5pdGVyaV9jaGlsZHJlbiB0LmtpbmQgfmZcbmxldCBpc192YWxpZCA9IE5vZGUuaXNfdmFsaWRcbmxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA9IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lXG5cbmxldCB1c2VyX2luZm8gdCA9XG4gIG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChJbmZvIGkpIC0+IFNvbWUgaVxuICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoSW5mby5jcmVhdGVfcyAoRG90X3VzZXJfaW5mby5zZXhwX29mX3Qgb3RoZXIpKVxuOztcblxubGV0IHNldF91c2VyX2luZm8gdCBpbmZvID1cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIGluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT4gU29tZSAoSW5mbyBpKSlcbjs7XG5cbmxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IHQgfmxhYmVsIH5hdHRycyA9XG4gIGxldCBuZXdfID0gRG90X3VzZXJfaW5mby5kb3QgfmxhYmVsIH5hdHRyaWJ1dGVzOmF0dHJzIGluXG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgbmV3X1xuICAgIHwgU29tZSBvdGhlciAtPiBTb21lIChEb3RfdXNlcl9pbmZvLmFwcGVuZCBvdGhlciBuZXdfKSlcbjs7XG5cbmxldCBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50ID1cbiAgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGlsZC5jaGFuZ2VkX2F0IHBhcmVudC5yZWNvbXB1dGVkX2F0ID4gMFxuOztcblxubGV0IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHQgPVxuICBsZXQgaXNfc3RhbGUgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgaWYgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudDp0IHRoZW4gaXNfc3RhbGUgOj0gdHJ1ZSk7XG4gICFpc19zdGFsZVxuOztcblxubGV0IGlzX3N0YWxlIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biAodCA6IGEgdCkgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAoKiBBIGNvbnN0IG5vZGUgaXMgc3RhbGUgb25seSBhdCBpbml0aWFsaXphdGlvbi4gKilcbiAgfCBDb25zdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFRpbWUtYmFzZWQgbm9kZXMgYXJlIGNvbnNpZGVyZWQgc3RhbGUgd2hlbiBbdC5yZWNvbXB1dGVkX2F0XSBpcyBub25lLCB3aGljaCBoYXBwZW5zXG4gICAgIGF0IGluaXRpYWxpemF0aW9uIGFuZCB3aGVuIHRoZSBhbGFybSBtZWNoYW5pc20gbWFrZXMgYSBub2RlIHN0YWxlIChpdCBzZXRzIHRoZVxuICAgICBbdC5yZWNvbXB1dGVkX2F0XSB0byBbU3RhYmlsaXphdGlvbl9udW0ubm9uZV0pLiAqKVxuICB8IEF0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IFNuYXBzaG90IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogV2UgbmV2ZXIgY29uc2lkZXIgYW4gaW52YWxpZGF0ZWQgbm9kZSB0byBiZSBzdGFsZSAtLSB3aGVuIHdlIGludmFsaWRhdGUgYSBub2RlLCB3ZVxuICAgICBpbW1lZGlhdGVseSBwcm9wYWdhdGUgaW52YWxpZGl0eSB0byBpdHMgYW5jZXN0b3JzLiAqKVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogQSBbVmFyXSBub2RlIGlzIHN0YWxlIGlmIGl0IHdhcyBzZXQgc2luY2UgaXQgd2FzIHJlY29tcHV0ZWQuICopXG4gIHwgVmFyIHsgc2V0X2F0OyBfIH0gLT4gU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBzZXRfYXQgdC5yZWNvbXB1dGVkX2F0ID4gMFxuICAoKiBOb2RlcyB0aGF0IGhhdmUgY2hpbGRyZW4uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBCaW5kX21haW4gX1xuICB8IEZyZWV6ZSBfXG4gIHwgSWZfdGhlbl9lbHNlIF9cbiAgfCBKb2luX21haW4gX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBFeHBlcnQgeyBmb3JjZV9zdGFsZTsgXyB9IC0+XG4gICAgZm9yY2Vfc3RhbGVcbiAgICB8fCBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAgIHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbjs7XG5cbmxldCBuZWVkc190b19iZV9jb21wdXRlZCB0ID0gaXNfbmVjZXNzYXJ5IHQgJiYgaXNfc3RhbGUgdFxubGV0IGlzX2luX3JlY29tcHV0ZV9oZWFwIHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAwXG5sZXQgaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0ID0gdC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG5cbmxldCBnZXRfcGFyZW50IHQgfmluZGV4ID1cbiAgVW9wdC52YWx1ZV9leG5cbiAgICAoaWYgaW5kZXggPSAwIHRoZW4gdC5wYXJlbnQwIGVsc2UgVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpXG47O1xuXG5sZXQgaXRlcmlfcGFyZW50cyB0IH5mID1cbiAgaWYgdC5udW1fcGFyZW50cyA+IDBcbiAgdGhlbiAoXG4gICAgZiAwIChVb3B0LnZhbHVlX2V4biB0LnBhcmVudDApO1xuICAgIGZvciBpbmRleCA9IDEgdG8gdC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIGYgaW5kZXggKFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSkpXG4gICAgZG9uZSlcbjs7XG5cbmxldCBoYXNfY2hpbGQgdCB+Y2hpbGQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkJykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBjaGlsZCBjaGlsZCcpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX2ludmFsaWRfY2hpbGQgdCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+IGhhcyA6PSAhaGFzIHx8IG5vdCAoaXNfdmFsaWQgY2hpbGQpKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19wYXJlbnQgKHQgOiBfIHQpIH5wYXJlbnQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50JykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBwYXJlbnQgcGFyZW50Jyk7XG4gICFoYXNcbjs7XG5cbmxldCBzaG91bGRfYmVfaW52YWxpZGF0ZWQgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiAqKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQXQgXyAtPiBmYWxzZVxuICB8IEF0X2ludGVydmFscyBfIC0+IGZhbHNlXG4gIHwgQ29uc3QgXyB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBmYWxzZVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogTm9kZXMgd2l0aCBhIGZpeGVkIHNldCBvZiBjaGlsZHJlbiBhcmUgaW52YWxpZCBpZiBhbnkgY2hpbGQgaXMgaW52YWxpZC4gKilcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBGcmVlemUgX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBoYXNfaW52YWxpZF9jaGlsZCB0XG4gICgqIEEgKl9jaGFuZ2Ugbm9kZSBpcyBpbnZhbGlkIGlmIHRoZSBub2RlIGl0IGlzIHdhdGNoaW5nIGZvciBjaGFuZ2VzIGlzIGludmFsaWQgKHNhbWVcbiAgICAgcmVhc29uIGFzIGFib3ZlKS4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBbaGFzX2ludmFsaWRfY2hpbGQgdF0uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0KVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICAoKiBbQmluZF9tYWluXSwgW0lmX3RoZW5fZWxzZV0sIGFuZCBbSm9pbl9tYWluXSBhcmUgaW52YWxpZCBpZiB0aGVpciAqX2NoYW5nZSBjaGlsZCBpcyxcbiAgICAgYnV0IG5vdCBuZWNlc3NhcmlseSBpZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgLS0gdGhlIGdyYXBoIG1heSBiZSByZXN0cnVjdHVyZWQgdG9cbiAgICAgYXZvaWQgdGhlIGludmFsaWRpdHkgb2YgdGhvc2UuICopXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdF9jaGFuZ2UpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBFeHBlcnQgXyAtPlxuICAgICgqIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IHdlIGRvIGZvciBiaW5kIGFib3ZlLCBleGNlcHQgdGhhdCBhbnkgaW52YWxpZCBjaGlsZCBjYW4gYmVcbiAgICAgICByZW1vdmVkLCBzbyB3ZSBjYW4gb25seSB0ZWxsIGlmIGFuIGV4cGVydCBub2RlIGJlY29tZXMgaW52YWxpZCB3aGVuIGFsbCBpdHNcbiAgICAgICBkZXBlbmRlbmNpZXMgaGF2ZSBmaXJlZCAod2hpY2ggaW4gcHJhY3RpY2UgbWVhbnMgd2hlbiB3ZSBhcmUgYWJvdXQgdG8gcnVuIGl0KS4gKilcbiAgICBmYWxzZVxuOztcblxubGV0IGZvbGRfb2JzZXJ2ZXJzICh0IDogXyB0KSB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIGxldCBhYyA9IHJlZiBpbml0IGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBhYyA6PSBmICFhYyBvYnNlcnZlclxuICBkb25lO1xuICAhYWNcbjs7XG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID0gZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDooKSB+ZjooZnVuICgpIG9ic2VydmVyIC0+IGYgb2JzZXJ2ZXIpXG5cbmxldCBpbnZhcmlhbnQgKHR5cGUgYSkgKGludmFyaWFudF9hIDogYSAtPiB1bml0KSAodCA6IGEgdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIFsldGVzdF9lcTogYm9vbF0gKG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQpIChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KTtcbiAgICBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IFNjb3BlLmhlaWdodCB0LmNyZWF0ZWRfaW4pO1xuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBjaGlsZC5oZWlnaHQpO1xuICAgICAgICBhc3NlcnQgKGhhc19wYXJlbnQgY2hpbGQgfnBhcmVudDp0KSk7XG4gICAgICBhc3NlcnQgKG5vdCAoc2hvdWxkX2JlX2ludmFsaWRhdGVkIHQpKSk7XG4gICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQpIC0+XG4gICAgICBhc3NlcnQgKGhhc19jaGlsZCBwYXJlbnQgfmNoaWxkOnQpO1xuICAgICAgYXNzZXJ0IChpc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPCBwYXJlbnQuaGVpZ2h0KSk7XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDooY2hlY2sgTm9kZV9pZC5pbnZhcmlhbnQpXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+cmVjb21wdXRlZF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfnZhbHVlX29wdDpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfb3B0IC0+XG4gICAgICAgICAgIGlmIGlzX3ZhbGlkIHQgJiYgbm90IChpc19zdGFsZSB0KSB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIHZhbHVlX29wdCk7XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIHZhbHVlX29wdCkpXG4gICAgICB+a2luZDpcbiAgICAgICAgKGNoZWNrIChmdW4ga2luZCAtPlxuICAgICAgICAgICBLaW5kLmludmFyaWFudCBpbnZhcmlhbnRfYSBraW5kO1xuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgfCBFeHBlcnQgZSAtPlxuICAgICAgICAgICAgIEV4cGVydC5pbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW4gZSB+aXNfbmVjZXNzYXJ5Oihpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgfCBfIC0+ICgpKSlcbiAgICAgIH5jdXRvZmY6KGNoZWNrIChDdXRvZmYuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5jaGFuZ2VkX2F0OlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGFuZ2VkX2F0IC0+XG4gICAgICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudCBjaGFuZ2VkX2F0O1xuICAgICAgICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5pc19zb21lIHQucmVjb21wdXRlZF9hdFxuICAgICAgICAgICB0aGVuIGFzc2VydCAoU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGFuZ2VkX2F0IHQucmVjb21wdXRlZF9hdCA8PSAwKSkpXG4gICAgICB+bnVtX29uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgKExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICAgICAgICAgICsgZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDowIH5mOihmdW4gbiB7IG9uX3VwZGF0ZV9oYW5kbGVyczsgXyB9IC0+XG4gICAgICAgICAgICAgICAgICAgbiArIExpc3QubGVuZ3RoIG9uX3VwZGF0ZV9oYW5kbGVycykpKSlcbiAgICAgIH5udW1fcGFyZW50czpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX3BhcmVudHMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA8PSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQpKSlcbiAgICAgIH5wYXJlbnQxX2FuZF9iZXlvbmQ6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDFfYW5kX2JleW9uZCAtPlxuICAgICAgICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCBwYXJlbnQxX2FuZF9iZXlvbmQgZG9cbiAgICAgICAgICAgICBbJXRlc3RfZXE6IGJvb2xdXG4gICAgICAgICAgICAgICAocGFyZW50X2luZGV4IDwgdC5udW1fcGFyZW50cylcbiAgICAgICAgICAgICAgIChVb3B0LmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5wYXJlbnQwOlxuICAgICAgICAoY2hlY2sgKGZ1biBwYXJlbnQwIC0+XG4gICAgICAgICAgIFsldGVzdF9lcTogYm9vbF0gKHQubnVtX3BhcmVudHMgPiAwKSAoVW9wdC5pc19zb21lIHBhcmVudDApKSlcbiAgICAgIH5jcmVhdGVkX2luOihjaGVjayBTY29wZS5pbnZhcmlhbnQpXG4gICAgICB+bmV4dF9ub2RlX2luX3NhbWVfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIC0+XG4gICAgICAgICAgIGlmIFNjb3BlLmlzX3RvcCB0LmNyZWF0ZWRfaW4gfHwgbm90IChpc192YWxpZCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlKSkpXG4gICAgICB+aGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHQgLT5cbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHQgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSAwKSBlbHNlIGFzc2VydCAoaGVpZ2h0ID0gLTEpKSlcbiAgICAgIH5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAtMSk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDw9IHQuaGVpZ2h0KSkpXG4gICAgICB+cHJldl9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIHByZXYpID0gVW9wdC52YWx1ZV9leG4gcHJldl9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBwcmV2LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5uZXh0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gbmV4dC5wcmV2X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5leHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICBpZiBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8IHQuaGVpZ2h0KSkpXG4gICAgICB+bmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApXG4gICAgICAgICAgIGVsc2UgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgbmV4dCk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gbmV4dC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgICAgIH5vbGRfdmFsdWVfb3B0OihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9ic2VydmVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4geyBzdGF0ZTsgb2JzZXJ2aW5nOyBfIH0gLT5cbiAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdCBvYnNlcnZpbmcpO1xuICAgICAgICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgIH5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjppZ25vcmVcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6aWdub3JlXG4gICAgICB+dXNlcl9pbmZvOmlnbm9yZVxuICAgICAgfm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleDpcbiAgICAgICAgKGNoZWNrIChmdW4gbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IC0+XG4gICAgICAgICAgIChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICAgICAgfCBFeHBlcnQgXyAtPiAoKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgICAoQXJyYXkubGVuZ3RoIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleClcbiAgICAgICAgICAgICAgICB+ZXhwZWN0Oihpbml0aWFsX251bV9jaGlsZHJlbiB0KSk7XG4gICAgICAgICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBwYWNrZWRfc2FtZVxuICAgICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgICAgKGdldF9wYXJlbnRcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZFxuICAgICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlbiBBcnJheS5pdGVyIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+ZjooZnVuIHggLT4gYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+bXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4KVxuICAgICAgICAgICAgIH5leHBlY3Q6KFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kICsgMSk7XG4gICAgICAgICAgIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIHBhcmVudF9pbmRleCAoVCBwYXJlbnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgIChLaW5kLnNsb3dfZ2V0X2NoaWxkXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5raW5kXG4gICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkpKSk7XG4gICAgICAgICAgIGlmIGRlYnVnICYmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHRoZW4gQXJyYXkuaXRlciBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmY6KGZ1biB4IC0+IGFzc2VydCAoeCA9IC0xKSkpKVxuICAgICAgfmZvcmNlX25lY2Vzc2FyeTppZ25vcmVcbiAgICAgIH5jcmVhdGlvbl9iYWNrdHJhY2U6aWdub3JlKVxuOztcblxubGV0IHVuc2FmZV92YWx1ZSB0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfb3B0XG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcbiAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZ2V0X2N1dG9mZiB0ID0gdC5jdXRvZmZcbmxldCBzZXRfY3V0b2ZmIHQgY3V0b2ZmID0gdC5jdXRvZmYgPC0gY3V0b2ZmXG5cbmxldCBpc19jb25zdCB0ID1cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBDb25zdCBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgb25fdXBkYXRlIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIHQubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDFcbjs7XG5cbmxldCBydW5fb25fdXBkYXRlX2hhbmRsZXJzIHQgbm9kZV91cGRhdGUgfm5vdyA9XG4gIGxldCByID0gcmVmIHQub25fdXBkYXRlX2hhbmRsZXJzIGluXG4gIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICBtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgIHIgOj0gcmVzdDtcbiAgICAgIE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93XG4gIGRvbmU7XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBsZXQgciA9IHJlZiBvYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgICB3aGlsZSBub3QgKExpc3QuaXNfZW1wdHkgIXIpIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBvbl91cGRhdGVfaGFuZGxlciA6OiByZXN0IC0+XG4gICAgICAgIHIgOj0gcmVzdDtcbiAgICAgICAgKCogV2UgaGF2ZSB0byB0ZXN0IFtzdGF0ZV0gYmVmb3JlIGVhY2ggb24tdXBkYXRlIGhhbmRsZXIsIGJlY2F1c2UgYW4gb24tdXBkYXRlXG4gICAgICAgICAgIGhhbmRsZXIgbWlnaHQgZGlzYWJsZSBpdHMgb3duIG9ic2VydmVyLCB3aGljaCBzaG91bGQgcHJldmVudCBvdGhlciBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlcnMgaW4gdGhlIHNhbWUgb2JzZXJ2ZXIgZnJvbSBydW5uaW5nLiAqKVxuICAgICAgICAobWF0Y2ggb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgSW5fdXNlIC0+IE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93KVxuICAgIGRvbmVcbiAgZG9uZVxuOztcblxubGV0IHNldF9raW5kIHQga2luZCA9XG4gIHQua2luZCA8LSBraW5kO1xuICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICA8LSBBcnJheS5jcmVhdGUgfmxlbjooS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiBraW5kKSAoLTEpXG47O1xuXG5sZXQgY3JlYXRlIHN0YXRlIGNyZWF0ZWRfaW4ga2luZCA9XG4gIGxldCB0ID1cbiAgICB7IGlkID0gTm9kZV9pZC5uZXh0ICgpXG4gICAgOyBzdGF0ZVxuICAgIDsgcmVjb21wdXRlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IHZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsga2luZFxuICAgIDsgY3V0b2ZmID0gQ3V0b2ZmLnBoeXNfZXF1YWxcbiAgICA7IGNoYW5nZWRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyBudW1fb25fdXBkYXRlX2hhbmRsZXJzID0gMFxuICAgIDsgbnVtX3BhcmVudHMgPSAwXG4gICAgOyBwYXJlbnQxX2FuZF9iZXlvbmQgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG4gICAgOyBwYXJlbnQwID0gVW9wdC5ub25lXG4gICAgOyBjcmVhdGVkX2luXG4gICAgOyBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA9IFVvcHQubm9uZVxuICAgIDsgaGVpZ2h0ID0gLTFcbiAgICA7IGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IC0xXG4gICAgOyBwcmV2X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gICAgOyBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG9sZF92YWx1ZV9vcHQgPSBVb3B0Lm5vbmVcbiAgICA7IG9ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBmYWxzZVxuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA9XG4gICAgICAgIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbiAgICAoKiBbbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XSBoYXMgb25lIGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgbmVlZCB0byBob2xkXG4gICAgICAgdGhlIGNoaWxkIGluZGV4IG9mIFtwYXJlbnQwXS4gKilcbiAgICA7IG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA9IFt8IC0xIHxdXG4gICAgOyBmb3JjZV9uZWNlc3NhcnkgPSBmYWxzZVxuICAgIDsgdXNlcl9pbmZvID0gTm9uZVxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlID1cbiAgICAgICAgKGlmIHN0YXRlLmtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgdGhlbiBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSBlbHNlIE5vbmUpXG4gICAgfVxuICBpblxuICBTY29wZS5hZGRfbm9kZSBjcmVhdGVkX2luIHQ7XG4gICgqIFtpbnZhcmlhbnRdIGRvZXMgbm90IHlldCBob2xkIGhlcmUgYmVjYXVzZSBtYW55IHVzZXMgb2YgW05vZGUuY3JlYXRlXSB1c2UgW2tpbmQgPVxuICAgICBVbmluaXRpYWxpemVkXSwgYW5kIHRoZW4gbXV0YXRlIFt0LmtpbmRdIGxhdGVyLiAqKVxuICB0XG47O1xuXG5sZXQgbWF4X251bV9wYXJlbnRzIHQgPSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmRcblxubGV0IG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX3BhcmVudHMgPSBtYXhfbnVtX3BhcmVudHMgdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X21heF9udW1fcGFyZW50cyA9IDIgKiBtYXhfbnVtX3BhcmVudHMgdCBpblxuICAgIHQucGFyZW50MV9hbmRfYmV5b25kXG4gICAgPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQucGFyZW50MV9hbmRfYmV5b25kIH5sZW46KG5ld19tYXhfbnVtX3BhcmVudHMgLSAxKTtcbiAgICB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9wYXJlbnRzICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fcGFyZW50cyA8IG1heF9udW1fcGFyZW50cyB0KVxuOztcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0IH5jaGlsZF9pbmRleCA9XG4gIGxldCBtYXhfbnVtX2NoaWxkcmVuID0gQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IGluXG4gIGlmIGNoaWxkX2luZGV4ID49IG1heF9udW1fY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4ID0gbWF4X251bV9jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXhfbnVtX2NoaWxkcmVuID0gSW50Lm1heCAyICgyICogbWF4X251bV9jaGlsZHJlbikgaW5cbiAgICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9jaGlsZHJlbiAoLTEpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4IDwgQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuOztcblxubGV0IHNldF9wYXJlbnQgOiB0eXBlIGEuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6UGFja2VkLnQgVW9wdC50IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIGlmIHBhcmVudF9pbmRleCA9IDBcbiAgdGhlbiBjaGlsZC5wYXJlbnQwIDwtIHBhcmVudFxuICBlbHNlIFVuaWZvcm1fYXJyYXkuc2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkgcGFyZW50XG47O1xuXG5sZXQgbGlua1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHBhcmVudDpiIHQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIHNldF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6KFVvcHQuc29tZSAoUGFja2VkLlQgcGFyZW50KSkgfnBhcmVudF9pbmRleDtcbiAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIGNoaWxkX2luZGV4O1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgPC0gcGFyZW50X2luZGV4XG47O1xuXG5sZXQgdW5saW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDpVb3B0Lm5vbmUgfnBhcmVudF9pbmRleDtcbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIC0xO1xuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSAtMSlcbjs7XG5cbmxldCBhZGRfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBtYWtlX3NwYWNlX2Zvcl9wYXJlbnRfaWZfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgcGFyZW50IH5jaGlsZF9pbmRleDtcbiAgbGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpjaGlsZC5udW1fcGFyZW50cztcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgKyAxXG47O1xuXG5sZXQgcmVtb3ZlX3BhcmVudCA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gcGFyZW50OmIgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLm51bV9wYXJlbnRzID49IDEpO1xuICBsZXQgcGFyZW50X2luZGV4ID0gcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBwYXJlbnQpIChnZXRfcGFyZW50IGNoaWxkIH5pbmRleDpwYXJlbnRfaW5kZXgpKTtcbiAgbGV0IGxhc3RfcGFyZW50X2luZGV4ID0gY2hpbGQubnVtX3BhcmVudHMgLSAxIGluXG4gIGlmIHBhcmVudF9pbmRleCA8IGxhc3RfcGFyZW50X2luZGV4XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKGxhc3RfcGFyZW50X2luZGV4IC0gMSkpXG4gICAgaW5cbiAgICBsaW5rXG4gICAgICB+Y2hpbGRcbiAgICAgIH5jaGlsZF9pbmRleDpjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGxhc3RfcGFyZW50X2luZGV4KVxuICAgICAgfnBhcmVudFxuICAgICAgfnBhcmVudF9pbmRleCk7XG4gIHVubGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpsYXN0X3BhcmVudF9pbmRleDtcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgLSAxXG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCBwYXJlbnQgfmNoaWxkMSB+Y2hpbGRfaW5kZXgxIH5jaGlsZDIgfmNoaWxkX2luZGV4MiA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgY2hpbGQxKSAoS2luZC5zbG93X2dldF9jaGlsZCBwYXJlbnQua2luZCB+aW5kZXg6Y2hpbGRfaW5kZXgxKSk7XG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDIpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDIpKSk7XG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpXG4gIGluXG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpXG4gIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAoXG4gICAgICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA9IGNoaWxkX2luZGV4MSk7XG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpID0gY2hpbGRfaW5kZXgyKSk7XG4gICgqIG5vdyBzdGFydCBzd2FwcGluZyAqKVxuICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA8LSBjaGlsZF9pbmRleDI7XG4gIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpIDwtIGNoaWxkX2luZGV4MTtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgxKSA8LSBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDFcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUGFja2VkLnQgPSBUIDogXyBUeXBlcy5Ob2RlLnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyB0XVxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5cbiAgbW9kdWxlIEFzX2xpc3QgKE0gOiBzaWdcbiAgICAgIHZhbCBuZXh0IDogUGFja2VkLnQgLT4gUGFja2VkLnQgVW9wdC50XG4gICAgZW5kKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgdCA9IFBhY2tlZC50IFVvcHQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWMgPSByZWYgaW5pdCBpblxuICAgICAgbGV0IHIgPSByZWYgdCBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCBwYWNrZWRfbm9kZSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gTS5uZXh0IHBhY2tlZF9ub2RlO1xuICAgICAgICBhYyA6PSBmICFhYyBwYWNrZWRfbm9kZVxuICAgICAgZG9uZTtcbiAgICAgICFhY1xuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgbiAtPiBmIG4pXG4gICAgbGV0IGludmFyaWFudCB0ID0gaXRlciB0IH5mOmludmFyaWFudFxuICAgIGxldCBsZW5ndGggdCA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBfIC0+IG4gKyAxKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0LnJldiAoZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgbiAtPiBuIDo6IGFjKSlcbiAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19saXN0IHQgfD4gWyVzZXhwX29mOiBQYWNrZWQudCBsaXN0XVxuICBlbmRcblxuICBsZXQgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZiA9XG4gICAgbGV0IHNlZW4gPSBOb2RlX2lkLkhhc2hfc2V0LmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgaXRlcl9kZXNjZW5kYW50cyAoVCB0KSA9XG4gICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWVuIHQuaWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSGFzaF9zZXQuYWRkIHNlZW4gdC5pZDtcbiAgICAgICAgZiAoVCB0KTtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gdCAtPiBpdGVyX2Rlc2NlbmRhbnRzIHQpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyIHRzIH5mOml0ZXJfZGVzY2VuZGFudHM7XG4gICAgc2VlblxuICA7O1xuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzIHRzIH5mID0gaWdub3JlIChpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mIDogXyBIYXNoX3NldC50KVxuXG4gIG1vZHVsZSBEb3RfdXNlcl9pbmZvID0gc3RydWN0XG4gICAgaW5jbHVkZSBEb3RfdXNlcl9pbmZvXG5cbiAgICBsZXQgZGVmYXVsdCB+bmFtZSB0ID1cbiAgICAgIERvdF91c2VyX2luZm8uZG90XG4gICAgICAgIH5sYWJlbDpbIG5hbWU7IEtpbmQubmFtZSB0LmtpbmQ7IHNwcmludGYgXCJoZWlnaHQ9JWRcIiB0LmhlaWdodCBdXG4gICAgICAgIH5hdHRyaWJ1dGVzOlN0cmluZy5NYXAuZW1wdHlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiAoVCB0KSA9IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdFxuXG4gIGxldCBwcmludF9ub2RlIG91dCB+bmFtZSB0ID1cbiAgICBsZXQgZGVmYXVsdCA9IERvdF91c2VyX2luZm8uZGVmYXVsdCB+bmFtZSB0IGluXG4gICAgbGV0IGluZm8gPVxuICAgICAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgIHwgU29tZSB1c2VyX2luZm8gLT4gRG90X3VzZXJfaW5mby5hcHBlbmQgZGVmYXVsdCB1c2VyX2luZm9cbiAgICBpblxuICAgIGZwcmludGYgb3V0IFwiJXNcXG5cIiAoRG90X3VzZXJfaW5mby50b19zdHJpbmcgfm5hbWUgKERvdF91c2VyX2luZm8udG9fZG90IGluZm8pKVxuICA7O1xuXG4gIGxldCBzYXZlX2RvdCBvdXQgdHMgPVxuICAgIGxldCBub2RlX25hbWUgPVxuICAgICAgaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICB0aGVuIGZ1biBfIC0+IFwibiMjI1wiXG4gICAgICBlbHNlIGZ1biBub2RlIC0+IFwiblwiIF4gTm9kZV9pZC50b19zdHJpbmcgbm9kZS5pZFxuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCJkaWdyYXBoIEcge1xcblwiO1xuICAgIGZwcmludGYgb3V0IFwiICByYW5rZGlyID0gQlRcXG5cIjtcbiAgICBsZXQgYmluZF9lZGdlcyA9IHJlZiBbXSBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBsZXQgbmFtZSA9IG5vZGVfbmFtZSB0IGluXG4gICAgICAgIHByaW50X25vZGUgb3V0IH5uYW1lIHQ7XG4gICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGZyb21fKSAtPlxuICAgICAgICAgIGZwcmludGYgb3V0IFwiICAlcyAtPiAlc1xcblwiIChub2RlX25hbWUgZnJvbV8pIG5hbWUpO1xuICAgICAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+XG4gICAgICAgICAgQmluZC5pdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQgfmY6KGZ1biB0b18gLT5cbiAgICAgICAgICAgIGJpbmRfZWRnZXMgOj0gKFQgdCwgdG9fKSA6OiAhYmluZF9lZGdlcylcbiAgICAgICAgfCBfIC0+ICgpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyICFiaW5kX2VkZ2VzIH5mOihmdW4gKFQgZnJvbSwgVCB0b18pIC0+XG4gICAgICBpZiBIYXNoX3NldC5tZW0gc2VlbiB0b18uaWRcbiAgICAgIHRoZW4gZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzIFtzdHlsZT1kYXNoZWRdXFxuXCIgKG5vZGVfbmFtZSBmcm9tKSAobm9kZV9uYW1lIHRvXykpO1xuICAgIGZwcmludGYgb3V0IFwifVxcbiUhXCJcbiAgOztcblxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIHRzID1cbiAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIG91dCAtPiBzYXZlX2RvdCBvdXQgdHMpXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIEFzX3JlY29tcHV0ZV9saXN0ID0gTm9kZS5QYWNrZWQuQXNfbGlzdCAoc3RydWN0XG4gICAgbGV0IG5leHQgKE5vZGUuUGFja2VkLlQgbm9kZSkgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX3JlY29tcHV0ZV9saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgKCogV2UgZGlzcGxheSB0aGUgc21hbGxlc3QgcHJlZml4IG9mIFtub2Rlc19ieV9oZWlnaHRdIHRoYXQgaW5jbHVkZXMgYWxsIG5vZGVzLiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlJlY29tcHV0ZV9oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgIGxldCBhY3R1YWxfbGVuZ3RoID0gcmVmIDAgaW5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyIHQubm9kZXNfYnlfaGVpZ2h0IH5mOihmdW4gbm9kZSAtPlxuICAgICAgICAgICAgIGFjdHVhbF9sZW5ndGggOj0gIWFjdHVhbF9sZW5ndGggKyBBc19yZWNvbXB1dGVfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgICAgICAgIFsldGVzdF9lcTogaW50XSBsZW5ndGggIWFjdHVhbF9sZW5ndGgpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub2Rlc19ieV9oZWlnaHQgLT5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSBub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBoZWlnaHQgbm9kZSAtPlxuICAgICAgICAgICAgIEFzX3JlY29tcHV0ZV9saXN0Lml0ZXIgbm9kZSB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSkpKSkpXG47O1xuXG5sZXQgY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBmb3IgaSA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDEgdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxIGRvXG4gICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaSkpXG4gICAgZG9uZTtcbiAgbGV0IHNyYyA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBkc3QgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgfnNyY1xuICAgIH5zcmNfcG9zOjBcbiAgICB+ZHN0XG4gICAgfmRzdF9wb3M6MFxuICAgIH5sZW46KG1pbiAoVW5pZm9ybV9hcnJheS5sZW5ndGggc3JjKSAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHN0KSk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIGRzdDtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gbWluIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbmV4dCAocHJldiA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV4dCA9XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwcmV2KSA9IFVvcHQudW5zYWZlX3ZhbHVlIHByZXYgaW5cbiAgICBwcmV2Lm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dClcbjs7XG5cbmxldCBzZXRfcHJldiAobmV4dCA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+cHJldiA9XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0XG4gIHRoZW4gKFxuICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudW5zYWZlX3ZhbHVlIG5leHQgaW5cbiAgICBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXAgPC0gcHJldilcbjs7XG5cbmxldCBsaW5rICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIGhlaWdodDtcbiAgbGV0IG5leHQgPSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgaW5cbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6KFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSk7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSlcbjs7XG5cbmxldCB1bmxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBwcmV2ID0gbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGlmIHBoeXNfc2FtZVxuICAgICAgIChVb3B0LnNvbWUgbm9kZSlcbiAgICAgICAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApXG4gIHRoZW4gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY7XG4gIHNldF9uZXh0IHByZXYgfm5leHQ7XG4gIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmVcbjs7XG5cbigqIFdlIGRvbid0IHNldCBbbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwXSBoZXJlLCBidXQgcmF0aGVyIGFmdGVyIGNhbGxpbmcgW3VubGlua10uICopXG5cbmxldCBhZGQgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmIChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgfHwgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImluY29ycmVjdCBhdHRlbXB0IHRvIGFkZCBub2RlIHRvIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgaGVpZ2h0IDwgdC5oZWlnaHRfbG93ZXJfYm91bmQgdGhlbiB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxpbmsgdCBub2RlO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCByZW1vdmUgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmICgobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKSB8fCBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IFtyZW1vdmVdIG9mIG5vZGUgZnJvbSByZWNvbXB1dGUgaGVhcFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgdW5saW5rIHQgbm9kZTtcbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGluY3JlYXNlX2hlaWdodCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBhc3NlcnQgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICB1bmxpbmsgdCBub2RlO1xuICBsaW5rIHQgbm9kZVxuOztcblxubGV0IG1pbl9oZWlnaHQgdCA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gIGVsc2UgKFxuICAgIGxldCBub2Rlc19ieV9oZWlnaHQgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICAgIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKSBkb1xuICAgICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxXG4gICAgZG9uZSk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG47O1xuXG5sZXQgcmVtb3ZlX21pbiB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBub2RlID0gcmVmIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAhbm9kZSBkb1xuICAgIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIHQuaGVpZ2h0X2xvd2VyX2JvdW5kICsgMTtcbiAgICBpZiBkZWJ1ZyAmJiB0LmhlaWdodF9sb3dlcl9ib3VuZCA+PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiB1bmV4cGVjdGVkbHkgcmVhY2hlZCBlbmQgb2YgaGVhcFwiXG4gICAgICAgIHRcbiAgICAgICAgWyVzZXhwX29mOiB0XTtcbiAgICBub2RlIDo9IFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZFxuICBkb25lO1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAhbm9kZSBpblxuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBsZXQgbmV4dCA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0Lm5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2OlVvcHQubm9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxubW9kdWxlIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gIGVuZClcblxubW9kdWxlIE5vZGVzX2J5X2hlaWdodCA9IHN0cnVjdFxuICB0eXBlIHQgPSBBc19hZGp1c3RfaGVpZ2h0c19saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgbWF4X25vbmVtcHR5X2luZGV4ID0gcmVmICgtMSkgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBpIGwgLT4gaWYgVW9wdC5pc19zb21lIGwgdGhlbiBtYXhfbm9uZW1wdHlfaW5kZXggOj0gaSk7XG4gICAgVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOjAgfmxlbjooIW1heF9ub25lbXB0eV9pbmRleCArIDEpIHw+IFslc2V4cF9vZjogdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaGVpZ2h0IG5vZGVzIC0+XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaW52YXJpYW50IG5vZGVzO1xuICAgICAgICBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lml0ZXIgbm9kZXMgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IGhlaWdodCk7XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApO1xuICAgICAgICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZVxuICAgICAgICAgIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApKSkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdCB+ZjooZnVuIG5vZGUgLT4gciA6PSAhciArIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QubGVuZ3RoIG5vZGUpO1xuICAgICFyXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuQWRqdXN0X2hlaWdodHNfaGVhcC50ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gIDsgbXV0YWJsZSBtYXhfaGVpZ2h0X3NlZW4gOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0IC0gMVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID0gTm9kZXNfYnlfaGVpZ2h0Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCkpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWF4X2hlaWdodF9zZWVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfaGVpZ2h0X3NlZW4gLT5cbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobWF4X2hlaWdodF9zZWVuIDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OihjaGVjayBOb2Rlc19ieV9oZWlnaHQuaW52YXJpYW50KSlcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBtYXhfaGVpZ2h0X3NlZW4gPSAwXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gTm9kZXNfYnlfaGVpZ2h0LmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgbWF4X2hlaWdodF9hbGxvd2VkIDwgdC5tYXhfaGVpZ2h0X3NlZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3Qgc2V0X21heF9oZWlnaHRfYWxsb3dlZCBsZXNzIHRoYW4gdGhlIG1heCBoZWlnaHQgYWxyZWFkeSBzZWVuXCJcbiAgICAgIChtYXhfaGVpZ2h0X2FsbG93ZWQsIGBtYXhfaGVpZ2h0X3NlZW4gdC5tYXhfaGVpZ2h0X3NlZW4pXG4gICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heF9oZWlnaHRfc2VlbiBvZiBpbnQgXV07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gTm9kZXNfYnlfaGVpZ2h0LmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkXG47O1xuXG5sZXQgYWRkX3VubGVzc19tZW0gKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSAtMVxuICB0aGVuIChcbiAgICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgICAoKiBXZSBwcm9jZXNzIG5vZGVzIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgcHJlLWFkanVzdGVkIGhlaWdodCwgc28gaXQgaXMgYSBidWcgaWYgd2VcbiAgICAgICBldmVyIHRyeSB0byBhZGQgYSBub2RlIHRoYXQgd291bGQgdmlvbGF0ZSB0aGF0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPj0gdC5oZWlnaHRfbG93ZXJfYm91bmQpO1xuICAgICgqIFdoZW5ldmVyIHdlIHNldCBhIG5vZGUncyBoZWlnaHQsIHdlIHVzZSBbc2V0X2hlaWdodF0sIHdoaWNoIGVuZm9yY2VzIHRoaXMuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gICAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBoZWlnaHQ7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICAgIG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodDtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IChVb3B0LnNvbWUgKE5vZGUuUGFja2VkLlQgbm9kZSkpKVxuOztcblxubGV0IHJlbW92ZV9taW5fZXhuIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgJiYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJBZGp1c3RfaGVpZ2h0c19oZWFwLnJlbW92ZV9taW4gb2YgZW1wdHkgaGVhcFwiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IHIgPSByZWYgdC5oZWlnaHRfbG93ZXJfYm91bmQgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCAhcikgZG9cbiAgICBpbmNyIHJcbiAgZG9uZTtcbiAgbGV0IGhlaWdodCA9ICFyIGluXG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGV0IChUIG5vZGUpID0gVW9wdC51bnNhZmVfdmFsdWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpIGluXG4gIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDtcbiAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG5cbmxldCBzZXRfaGVpZ2h0IHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgaWYgaGVpZ2h0ID4gdC5tYXhfaGVpZ2h0X3NlZW5cbiAgdGhlbiAoXG4gICAgdC5tYXhfaGVpZ2h0X3NlZW4gPC0gaGVpZ2h0O1xuICAgIGlmIGhlaWdodCA+IG1heF9oZWlnaHRfYWxsb3dlZCB0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJub2RlIHdpdGggdG9vIGxhcmdlIGhlaWdodFwiXG4gICAgICAgIChgSGVpZ2h0IGhlaWdodCwgYE1heCAobWF4X2hlaWdodF9hbGxvd2VkIHQpKVxuICAgICAgICBbJXNleHBfb2Y6IFsgYEhlaWdodCBvZiBpbnQgXSAqIFsgYE1heCBvZiBpbnQgXV0pO1xuICBub2RlLmhlaWdodCA8LSBoZWlnaHRcbjs7XG5cbmxldCBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgY2hpbGQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgaWYgTm9kZS5zYW1lIHBhcmVudCBvcmlnaW5hbF9jaGlsZFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImFkZGluZyBlZGdlIG1hZGUgZ3JhcGggY3ljbGljXCJcbiAgICAgIChgY2hpbGQgb3JpZ2luYWxfY2hpbGQsIGBwYXJlbnQgb3JpZ2luYWxfcGFyZW50KVxuICAgICAgWyVzZXhwX29mOiBbIGBjaGlsZCBvZiBfIE5vZGUudCBdICogWyBgcGFyZW50IG9mIF8gTm9kZS50IF1dO1xuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuIChcbiAgICBhZGRfdW5sZXNzX21lbSB0IHBhcmVudDtcbiAgICAoKiBXZSBzZXQgW3BhcmVudC5oZWlnaHRdIGFmdGVyIGFkZGluZyBbcGFyZW50XSB0byB0aGUgaGVhcCwgc28gdGhhdCBbcGFyZW50XSBnb2VzXG4gICAgICAgaW4gdGhlIGhlYXAgd2l0aCBpdHMgcHJlLWFkanVzdGVkIGhlaWdodC4gKilcbiAgICBzZXRfaGVpZ2h0IHQgcGFyZW50IChjaGlsZC5oZWlnaHQgKyAxKSlcbjs7XG5cbmxldCBhZGp1c3RfaGVpZ2h0c1xuICAgICAgKHR5cGUgYSBiKVxuICAgICAgdFxuICAgICAgcmVjb21wdXRlX2hlYXBcbiAgICAgIH5jaGlsZDoob3JpZ2luYWxfY2hpbGQgOiBhIE5vZGUudClcbiAgICAgIH5wYXJlbnQ6KG9yaWdpbmFsX3BhcmVudCA6IGIgTm9kZS50KVxuICA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG9yaWdpbmFsX2NoaWxkLmhlaWdodCA+PSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gb3JpZ2luYWxfcGFyZW50LmhlaWdodDtcbiAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudFxuICAgIHRcbiAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICB+b3JpZ2luYWxfcGFyZW50XG4gICAgfmNoaWxkOm9yaWdpbmFsX2NoaWxkXG4gICAgfnBhcmVudDpvcmlnaW5hbF9wYXJlbnQ7XG4gIHdoaWxlIGxlbmd0aCB0ID4gMCBkb1xuICAgIGxldCAoVCBjaGlsZCkgPSByZW1vdmVfbWluX2V4biB0IGluXG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBjaGlsZFxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuaW5jcmVhc2VfaGVpZ2h0IHJlY29tcHV0ZV9oZWFwIGNoaWxkO1xuICAgIGlmIGNoaWxkLm51bV9wYXJlbnRzID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IChUIHBhcmVudCkgPSBVb3B0LnZhbHVlX2V4biBjaGlsZC5wYXJlbnQwIGluXG4gICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ7XG4gICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBjaGlsZC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKVxuICAgICAgICBpblxuICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnRcbiAgICAgIGRvbmUpO1xuICAgIG1hdGNoIGNoaWxkLmtpbmQgd2l0aFxuICAgIHwgQmluZF9saHNfY2hhbmdlIHsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOyBfIH0gLT5cbiAgICAgIGxldCByID0gcmVmIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgICAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlX29uX3Joc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgfm9yaWdpbmFsX2NoaWxkXG4gICAgICAgICAgICB+b3JpZ2luYWxfcGFyZW50XG4gICAgICAgICAgICB+Y2hpbGRcbiAgICAgICAgICAgIH5wYXJlbnQ6bm9kZV9vbl9yaHNcbiAgICAgIGRvbmVcbiAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0IDwgb3JpZ2luYWxfcGFyZW50LmhlaWdodClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkFsYXJtX3ZhbHVlLkFjdGlvbi50ID1cbiAgICB8IEF0IG9mIEF0LnRcbiAgICB8IEF0X2ludGVydmFscyBvZiBBdF9pbnRlcnZhbHMudFxuICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgIHwgU3RlcF9mdW5jdGlvbiA6IF8gU3RlcF9mdW5jdGlvbl9ub2RlLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gICAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IEF0X2ludGVydmFscy5pbnZhcmlhbnQgYXRfaW50ZXJ2YWxzXG4gICAgfCBTbmFwc2hvdCBzbmFwc2hvdCAtPiBTbmFwc2hvdC5pbnZhcmlhbnQgaWdub3JlIHNuYXBzaG90XG4gICAgfCBTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSAtPlxuICAgICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpZ25vcmUgc3RlcF9mdW5jdGlvbl9ub2RlXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUudCA9XG4gIHsgYWN0aW9uIDogQWN0aW9uLnRcbiAgOyAoKiBbbmV4dF9maXJlZF0gc2luZ2x5IGxpbmtzIGFsbCBhbGFybSB2YWx1ZXMgdGhhdCBmaXJlIGR1cmluZyBhIHNpbmdsZSBjYWxsIHRvXG4gICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgIG11dGFibGUgbmV4dF9maXJlZCA6ICh0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyIH5hY3Rpb246KGNoZWNrIEFjdGlvbi5pbnZhcmlhbnQpIH5uZXh0X2ZpcmVkOmlnbm9yZSlcbjs7XG5cbmxldCBjcmVhdGUgYWN0aW9uID0geyBhY3Rpb247IG5leHRfZmlyZWQgPSBVb3B0Lm5vbmUgfVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbmZpZ19pbnRmXG5cbm1vZHVsZSBEZWZhdWx0ICgpID0gc3RydWN0XG4gIGxldCBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzID0gdHJ1ZVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlclxuXG5tb2R1bGUgUGFja2VkXyA9IHN0cnVjdFxuICBpbmNsdWRlIFR5cGVzLkludGVybmFsX29ic2VydmVyLlBhY2tlZFxuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgfD4gWyVzZXhwX29mOiBfIFR5cGVzLk5vZGUudF1cbiAgOztcblxuICBsZXQgcHJldl9pbl9hbGwgKFQgdCkgPSB0LnByZXZfaW5fYWxsXG4gIGxldCBuZXh0X2luX2FsbCAoVCB0KSA9IHQubmV4dF9pbl9hbGxcbiAgbGV0IHNldF9wcmV2X2luX2FsbCAoVCB0MSkgdDIgPSB0MS5wcmV2X2luX2FsbCA8LSB0MlxuICBsZXQgc2V0X25leHRfaW5fYWxsIChUIHQxKSB0MiA9IHQxLm5leHRfaW5fYWxsIDwtIHQyXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkludGVybmFsX29ic2VydmVyLlN0YXRlLnQgPVxuICAgIHwgQ3JlYXRlZFxuICAgIHwgSW5fdXNlXG4gICAgfCBEaXNhbGxvd2VkXG4gICAgfCBVbmxpbmtlZFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkludGVybmFsX29ic2VydmVyLnQgPVxuICB7ICgqIFN0YXRlIHRyYW5zaXRpb25zOlxuXG4gICAgICAge3ZcbiAgICAgICAgIENyZWF0ZWQgLS0+IEluX3VzZSAtLT4gRGlzYWxsb3dlZCAtLT4gVW5saW5rZWRcbiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAgICAgICAgIFxcLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS9cbiAgICAgICB2fSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gIDsgb2JzZXJ2aW5nIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fYWxsXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIGluIFtzdGF0ZS5hbGxfb2JzZXJ2ZXJzXS4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fYWxsIDogUGFja2VkXy50IFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgKCogW3twcmV2LG5leHR9X2luX29ic2VydmluZ10gZG91Ymx5IGxpbmsgYWxsIG9ic2VydmVycyBvZiBbb2JzZXJ2aW5nXS4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX29ic2VydmluZyA6ICgnYSB0W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmNyX3N0YXRlIHQgPSB0Lm9ic2VydmluZy5zdGF0ZVxuXG5sZXQgdXNlX2lzX2FsbG93ZWQgdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT4gdHJ1ZVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBmYWxzZVxuOztcblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5sZXQgc2FtZV9hc19wYWNrZWQgKHQxIDogXyB0KSAoUGFja2VkXy5UIHQyKSA9IHNhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfm9ic2VydmluZzooY2hlY2sgKE5vZGUuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIG9uX3VwZGF0ZV9oYW5kbGVycyAtPlxuICAgICAgICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICB8IFVubGlua2VkIC0+IGFzc2VydCAoTGlzdC5pc19lbXB0eSBvbl91cGRhdGVfaGFuZGxlcnMpKSlcbiAgICAgIH5wcmV2X2luX2FsbDpcbiAgICAgICAgKGNoZWNrIChmdW4gcHJldl9pbl9hbGwgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX2FsbCkpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9hbGxcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBzYW1lX2FzX3BhY2tlZFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAoUGFja2VkXy5uZXh0X2luX2FsbCAoVW9wdC52YWx1ZV9leG4gcHJldl9pbl9hbGwpKSkpKSlcbiAgICAgIH5uZXh0X2luX2FsbDpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9pbl9hbGwgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FsbCkpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hbGxcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBzYW1lX2FzX3BhY2tlZFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAoUGFja2VkXy5wcmV2X2luX2FsbCAoVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9hbGwpKSkpKSlcbiAgICAgIH5wcmV2X2luX29ic2VydmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gcHJldl9pbl9vYnNlcnZpbmcgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX29ic2VydmluZykpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9vYnNlcnZpbmdcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChuZXh0X2luX29ic2VydmluZyAoVW9wdC52YWx1ZV9leG4gcHJldl9pbl9vYnNlcnZpbmcpKSkpKSlcbiAgICAgIH5uZXh0X2luX29ic2VydmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9pbl9vYnNlcnZpbmcgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX29ic2VydmluZykpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9vYnNlcnZpbmdcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChwcmV2X2luX29ic2VydmluZyAoVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9vYnNlcnZpbmcpKSkpKSkpXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDcmVhdGVkIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgd2l0aG91dCBzdGFiaWxpemluZ1wiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBhZnRlciBkaXNhbGxvd19mdXR1cmVfdXNlXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IEluX3VzZSAtPlxuICAgIGxldCB1b3B0ID0gdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgaWYgVW9wdC5pc19ub25lIHVvcHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdO1xuICAgIFVvcHQudW5zYWZlX3ZhbHVlIHVvcHRcbjs7XG5cbmxldCBvbl91cGRhdGVfZXhuIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIm9uX3VwZGF0ZSBkaXNhbGxvd2VkXCIgdCBbJXNleHBfb2Y6IF8gdF1cbiAgfCBDcmVhdGVkIHwgSW5fdXNlIC0+XG4gICAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gb25fdXBkYXRlX2hhbmRsZXIgOjogdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBDcmVhdGVkIC0+XG4gICAgICAgKCogV2UnbGwgYnVtcCBbb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdoZW4gW3RdIGlzIGFjdHVhbGx5IGFkZGVkIHRvXG4gICAgICAgICAgW29ic2VydmluZy5vYnNlcnZlcnNdIGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICgpXG4gICAgIHwgSW5fdXNlIC0+XG4gICAgICAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gICAgICAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgKyAxKVxuOztcblxubGV0IHVubGlua19mcm9tX29ic2VydmluZyB0ID1cbiAgbGV0IHByZXYgPSB0LnByZXZfaW5fb2JzZXJ2aW5nIGluXG4gIGxldCBuZXh0ID0gdC5uZXh0X2luX29ic2VydmluZyBpblxuICB0LnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgdC5uZXh0X2luX29ic2VydmluZyA8LSBVb3B0Lm5vbmU7XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0IHRoZW4gKFVvcHQudW5zYWZlX3ZhbHVlIG5leHQpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIHByZXY7XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2IHRoZW4gKFVvcHQudW5zYWZlX3ZhbHVlIHByZXYpLm5leHRfaW5fb2JzZXJ2aW5nIDwtIG5leHQ7XG4gIGxldCBvYnNlcnZpbmcgPSB0Lm9ic2VydmluZyBpblxuICBpZiBwaHlzX2VxdWFsIHQgKFVvcHQudmFsdWVfZXhuIG9ic2VydmluZy5vYnNlcnZlcnMpIHRoZW4gb2JzZXJ2aW5nLm9ic2VydmVycyA8LSBuZXh0O1xuICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyAtIExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBbXVxuOztcblxubGV0IHVubGlua19mcm9tX2FsbCB0ID1cbiAgbGV0IHByZXYgPSB0LnByZXZfaW5fYWxsIGluXG4gIGxldCBuZXh0ID0gdC5uZXh0X2luX2FsbCBpblxuICB0LnByZXZfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgdC5uZXh0X2luX2FsbCA8LSBVb3B0Lm5vbmU7XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0IHRoZW4gUGFja2VkXy5zZXRfcHJldl9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIG5leHQpIHByZXY7XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2IHRoZW4gUGFja2VkXy5zZXRfbmV4dF9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIHByZXYpIG5leHRcbjs7XG5cbmxldCB1bmxpbmsgdCA9XG4gIHVubGlua19mcm9tX29ic2VydmluZyB0O1xuICB1bmxpbmtfZnJvbV9hbGwgdFxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhY2tlZF9cblxuICBsZXQgc2V4cF9vZl90IChUIGludGVybmFsX29ic2VydmVyKSA9XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIgfD4gWyVzZXhwX29mOiBfIGludGVybmFsX29ic2VydmVyXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW52YXJpYW50IGludmFyaWFudF9hICF0XG5sZXQgb2JzZXJ2aW5nIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgIXRcbmxldCB1c2VfaXNfYWxsb3dlZCB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudXNlX2lzX2FsbG93ZWQgIXRcbmxldCB2YWx1ZV9leG4gdCA9IEludGVybmFsX29ic2VydmVyLnZhbHVlX2V4biAhdFxubGV0IGluY3Jfc3RhdGUgdCA9IEludGVybmFsX29ic2VydmVyLmluY3Jfc3RhdGUgIXRcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIEludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9leG4gIXQgb25fdXBkYXRlX2hhbmRsZXJcbjs7XG4iLCIoKiBbU3RhdGVdIGRlZmluZXMgdGhlIGdsb2JhbCBzdGF0ZSBvZiB3aGljaCB0aGVyZSBpcyBvbmUgaW5zdGFuY2UgZm9yIGVhY2ggY2FsbCB0b1xuICAgW0luY3JlbWVudGFsLk1ha2VdLlxuXG4gICBUaGlzIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGFuIG1saSBiZWNhdXNlIGl0IHdvdWxkIGVzc2VudGlhbGx5IGR1cGxpY2F0ZVxuICAgW0luY3JlbWVudGFsLlNdLCBleGNlcHQgYWRkaW5nIGFuIGV4dHJhIFtTdGF0ZS50XSBhcmd1bWVudCB0byBmdW5jdGlvbnMuICopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG50eXBlIHN0YXR1cyA9IFR5cGVzLlN0YXR1cy50ID1cbiAgfCBTdGFiaWxpemluZ1xuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzXG4gIHwgTm90X3N0YWJpbGl6aW5nXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIG9mIFJhaXNlZF9leG4udFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIE5vZGVfdXBkYXRlID0gT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGVcblxubW9kdWxlIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50ID0gVCA6ICdhIE5vZGUudCAqICdhIE5vZGVfdXBkYXRlLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgKFQgKG5vZGUsIF9ub2RlX3VwZGF0ZSkgYXMgdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgT25seV9pbl9kZWJ1ZyA9IHN0cnVjdFxuICAoKiBFeHRyYSBzdGF0ZSBrZXB0IG9ubHkgd2hlbiBbZGVidWddIGZvciB0aGUgcHVycG9zZSBvZiB3cml0aW5nIGFzc2VydGlvbnMuICopXG4gIHR5cGUgdCA9IFR5cGVzLk9ubHlfaW5fZGVidWcudCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX25vZGUgOiBOb2RlLlBhY2tlZC50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgOiBOb2RlLlBhY2tlZC50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmN1cnJlbnRseV9ydW5uaW5nX25vZGU6aWdub3JlXG4gICAgICAgIH5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU6aWdub3JlKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA9IE5vbmU7IGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA9IFtdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUGFja2VkX3dlYWtfaGFzaHRibCA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5QYWNrZWRfd2Vha19oYXNodGJsLnQgPSBUIDogKF8sIF8pIFdlYWtfaGFzaHRibC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5TdGF0ZS50ID1cbiAgeyBtdXRhYmxlIHN0YXR1cyA6IHN0YXR1c1xuICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgOiBib29sXG4gIDsgKCogW3N0YWJpbGl6YXRpb25fbnVtXSBzdGFydHMgYXQgemVybywgYW5kIGlzIGluY3JlbWVudGVkIGF0IHRoZSBlbmQgb2YgZWFjaFxuICAgICAgIHN0YWJpbGl6YXRpb24uICopXG4gICAgbXV0YWJsZSBzdGFiaWxpemF0aW9uX251bSA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gIDsgcmVjb21wdXRlX2hlYXAgOiBSZWNvbXB1dGVfaGVhcC50XG4gIDsgYWRqdXN0X2hlaWdodHNfaGVhcCA6IEFkanVzdF9oZWlnaHRzX2hlYXAudFxuICA7ICgqIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gaG9sZHMgbm9kZXMgdGhhdCBoYXZlIGludmFsaWQgY2hpbGRyZW4gdGhhdCBzaG91bGQgYmVcbiAgICAgICBjb25zaWRlcmVkIGZvciBpbnZhbGlkYXRpb24uICBJdCBpcyBvbmx5IHVzZWQgZHVyaW5nIGdyYXBoIHJlc3RydWN0dXJpbmc6XG4gICAgICAgW2ludmFsaWRhdGVfbm9kZV0gYW5kIFthZGRfcGFyZW50XS4gIE9uY2UgYW4gZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RhY2ssIHdlIHRoZW5cbiAgICAgICBpdGVyYXRlIHVudGlsIGludmFsaWRpdHkgaGFzIHByb3BhZ2F0ZWQgdG8gYWxsIGFuY2VzdG9ycyBhcyBuZWNlc3NhcnksIGFjY29yZGluZyB0b1xuICAgICAgIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0uICopXG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbbnVtX2FjdGl2ZV9vYnNlcnZlcnNdIGlzIHRoZSBudW1iZXIgb2Ygb2JzZXJ2ZXJzIHdob3NlIHN0YXRlIGlzIFtDcmVhdGVkXSBvclxuICAgICAgIFtJbl91c2VdLiAqKVxuICAgIG11dGFibGUgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgOiBpbnRcbiAgOyAoKiBbYWxsX29ic2VydmVyc10gaXMgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBhbGwgb2JzZXJ2ZXJzIGluIGVmZmVjdCwgb3IgdGhhdCBoYXZlXG4gICAgICAgYmVlbiBkaXNhbGxvd2VkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZVxuICAgICAgIFtzdGF0ZV0gYXMgW0luX3VzZV0gb3IgW0Rpc2FsbG93ZWRdLiAqKVxuICAgIG11dGFibGUgYWxsX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICA7ICgqIFdlIGVucXVldWUgZmluYWxpemVkIG9ic2VydmVycyBpbiBhIHRocmVhZC1zYWZlIHF1ZXVlLCBmb3IgaGFuZGxpbmcgZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbi4gIFdlIHVzZSBhIHRocmVhZC1zYWZlIHF1ZXVlIGJlY2F1c2UgT0NhbWwgZmluYWxpemVycyBjYW4gcnVuIGluIGFueVxuICAgICAgIHRocmVhZC4gKilcbiAgICBmaW5hbGl6ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7ICgqIFtuZXdfb2JzZXJ2ZXJzXSBob2xkcyBvYnNlcnZlcnMgY3JlYXRlZCBzaW5jZSB0aGUgbW9zdCByZWNlbnQgc3RhcnQgb2YgYVxuICAgICAgIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZSBbc3RhdGVdIGFzIFtDcmVhdGVkXSBvciBbVW5saW5rZWRdLiAgQXQgdGhlIHN0YXJ0IG9mXG4gICAgICAgc3RhYmlsaXphdGlvbiwgd2UgbGluayBpbnRvIFthbGxfb2JzZXJ2ZXJzXSBhbGwgb2JzZXJ2ZXJzIGluIFtuZXdfb2JzZXJ2ZXJzXSB3aG9zZVxuICAgICAgIHN0YXRlIGlzIFtDcmVhdGVkXSBhbmQgYWRkIHRoZW0gdG8gdGhlIFtvYnNlcnZlcnNdIG9mIHRoZSBub2RlIHRoZXkgYXJlIG9ic2VydmluZy5cbiAgICAgICBXZSBzdHJ1Y3R1cmUgdGhpbmdzIHRoaXMgd2F5IHRvIGFsbG93IG9ic2VydmVycyB0byBiZSBjcmVhdGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXG4gICAgICAgd2hpbGUgcnVubmluZyB1c2VyIGNvZGUgKFttYXBdLCBbYmluZF0sIGV0YyksIGJ1dCB0byBub3QgaGF2ZSB0byBkZWFsIHdpdGggbm9kZXNcbiAgICAgICBiZWNvbWluZyBuZWNlc3NhcnkgYW5kIHRoZSB0aGUgZ3JhcGggY2hhbmdpbmcgZHVyaW5nIHN1Y2ggY29kZS4gKilcbiAgICBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtkaXNhbGxvd2VkX29ic2VydmVyc10gaG9sZHMgYWxsIG9ic2VydmVycyB0aGF0IGhhdmUgYmVlbiBkaXNhbGxvd2VkIHNpbmNlIHRoZSBtb3N0XG4gICAgICAgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZSA9IERpc2FsbG93ZWRdLiAgQXQgdGhlIHN0YXJ0XG4gICAgICAgb2Ygc3RhYmlsaXphdGlvbiwgdGhlc2UgYXJlIHVubGlua2VkIGZyb20gW2FsbF9vYnNlcnZlcnNdIGFuZCB0aGVpciBzdGF0ZSBpc1xuICAgICAgIGNoYW5nZWQgdG8gW1VubGlua2VkXS4gIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgdXNlciBjb2RlIHJ1bm5pbmdcbiAgICAgICBkdXJpbmcgc3RhYmlsaXphdGlvbiB0byBjYWxsIFtkaXNhbGxvd19mdXR1cmVfdXNlXSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aFxuICAgICAgIG5vZGVzIGJlY29taW5nIHVubmVjZXNzYXJ5IGFuZCB0aGUgZ3JhcGggY2hhbmdpbmcgZHVyaW5nIHN1Y2ggY29kZS4gKilcbiAgICBkaXNhbGxvd2VkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBXZSBkZWxheSBhbGwgW1Zhci5zZXRdIGNhbGxzIHRoYXQgaGFwcGVuIGR1cmluZyBzdGFiaWxpemF0aW9uIHNvIHRoYXQgdGhleSB0YWtlXG4gICAgICAgZWZmZWN0IGFmdGVyIHN0YWJpbGl6YXRpb24uICBBbGwgdmFyaWFibGVzIHNldCBkdXJpbmcgc3RhYmlsaXphdGlvbiBhcmUgcHVzaGVkIG9uXG4gICAgICAgW3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gcmF0aGVyIHRoYW4gc2V0dGluZyB0aGVtLiAgVGhlbiwgYWZ0ZXIgdGhlIGdyYXBoIGhhc1xuICAgICAgIHN0YWJpbGl6ZWQsIHdlIGRvIGFsbCB0aGUgc2V0cywgc28gdGhhdCB0aGV5IHRha2UgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dFxuICAgICAgIHN0YWJpbGl6YXRpb24uICopXG4gICAgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogVmFyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGhhcyBhbGwgbm9kZXMgd2l0aCBoYW5kbGVycyB0byBjb25zaWRlciBydW5uaW5nIGF0IHRoZVxuICAgICAgIGVuZCBvZiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLiAgQXQgdGhlIGVuZCBvZiBzdGFiaWxpemF0aW9uLCB3ZSBjb25zaWRlciBlYWNoIG5vZGVcbiAgICAgICBpbiBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLCBhbmQgaWYgd2UgZGVjaWRlIHRvIHJ1biBpdHMgb24tdXBkYXRlIGhhbmRsZXJzLFxuICAgICAgIHB1c2ggaXQgb24gW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAgVGhlbiwgb25jZSB3ZSd2ZSBjb25zaWRlcmVkIGFsbCBub2RlcyBpblxuICAgICAgIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIHdlIGl0ZXJhdGUgdGhyb3VnaCBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10gYW5kXG4gICAgICAgYWN0dWFsbHkgcnVuIHRoZSBoYW5kbGVycy5cblxuICAgICAgIFRoZXNlIHR3byBwYXNzZXMgYXJlIGVzc2VudGlhbCBmb3IgY29ycmVjdG5lc3MuICBEdXJpbmcgdGhlIGZpcnN0IHBhc3MsIHdlIGhhdmVuJ3RcbiAgICAgICBydW4gYW55IHVzZXIgaGFuZGxlcnMsIHNvIHdlIGtub3cgdGhhdCB0aGUgc3RhdGUgaXMgZXhhY3RseSBhcyBpdCB3YXMgd2hlblxuICAgICAgIHN0YWJpbGl6YXRpb24gZmluaXNoZWQuICBJbiBwYXJ0aWN1bGFyLCB3ZSBrbm93IHRoYXQgaWYgYSBub2RlIGlzIG5lY2Vzc2FyeSwgdGhlblxuICAgICAgIGl0IGhhcyBhIHN0YWJsZSB2YWx1ZTsgb25jZSB1c2VyIGhhbmRsZXJzIHJ1biwgd2UgZG9uJ3Qga25vdyB0aGlzLiAgRHVyaW5nIHRoZVxuICAgICAgIHNlY29uZCBwYXNzLCB1c2VyIGhhbmRsZXJzIGNhbiBtYWtlIGNhbGxzIHRvIGFueSBpbmNyZW1lbnRhbCBmdW5jdGlvbiBleGNlcHQgZm9yXG4gICAgICAgW3N0YWJpbGl6ZV0uICBJbiBwYXJ0aWN1bGFyLCBzb21lIGZ1bmN0aW9ucyBwdXNoIG5vZGVzIG9uXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gIEJ1dCBubyBmdW5jdGlvbnMgKGV4Y2VwdCBmb3IgW3N0YWJpbGl6ZV0pIG1vZGlmeVxuICAgICAgIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXS4gKilcbiAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICA7IG11dGFibGUgb25seV9pbl9kZWJ1ZyA6IE9ubHlfaW5fZGVidWcudFxuICA7IHdlYWtfaGFzaHRibHMgOiBQYWNrZWRfd2Vha19oYXNodGJsLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgOyAoKiBTdGF0cy4gIFRoZXNlIGFyZSBhbGwgaW5jcmVtZW50ZWQgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlLCBhbmQgbmV2ZXIgZGVjcmVtZW50ZWQuICopXG4gICAgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NoYW5nZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19jcmVhdGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gIDsgbXV0YWJsZSBudW1fdmFyX3NldHMgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5tb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ2xvY2sudCA9XG4gICAgeyAoKiBXZSB1c2UgW3RpbWluZ193aGVlbF0gZm9yIHRpbWUtYmFzZWQgaW5jcmVtZW50YWxzLiAgW25vd10gaXMgYSB2YXJpYWJsZSBob2xkaW5nXG4gICAgICAgICB0aGUgY3VycmVudCB0aW1lLiAgW2hhbmRsZV9maXJlZF0gaXMgdGhlIGNsb3N1cmUgcGFzc2VkIHRvXG4gICAgICAgICBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAgSXQgbGlua3MgYWxsIHRoZSBmaXJlZCBhbGFybSB2YWx1ZXMgaW50b1xuICAgICAgICAgW2ZpcmVkX2FsYXJtX3ZhbHVlc10uICBBZnRlciBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdIHJldHVybnMsIGl0IHRoZW5cbiAgICAgICAgIHdhbGtzIHRocm91Z2ggdGhlIGxpbmtlZCBsaXN0IGFuZCBhY3R1YWxseSBmaXJlcyB0aGVtLiAgVGhpcyB0d28tcGFzcyBhcHByb2FjaCBpc1xuICAgICAgICAgbmVjZXNzYXJ5IGJlY2F1c2Ugb25lIGlzIG5vdCBhbGxvd2VkIHRvIGNhbGwgW1RpbWluZ193aGVlbF0gZnVuY3Rpb25zIGZyb20gdGhlXG4gICAgICAgICBbaGFuZGxlX2ZpcmVkXSB0aGF0IG9uZSBwYXNzZXMgdG8gW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfm5vdzpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAobm93IDogXyBWYXIudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuZXF1YWwgbm93LnZhbHVlIChUaW1pbmdfd2hlZWwubm93IHQudGltaW5nX3doZWVsKSkpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+ZmlyZWRfYWxhcm1fdmFsdWVzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcmVkX2FsYXJtX3ZhbHVlcyAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBmaXJlZF9hbGFybV92YWx1ZXMpKSlcbiAgICAgICAgfnRpbWluZ193aGVlbDooY2hlY2sgKFRpbWluZ193aGVlbC5pbnZhcmlhbnQgQWxhcm1fdmFsdWUuaW52YXJpYW50KSkpXG4gIDs7XG5cbiAgbGV0IGluY3Jfc3RhdGUgdCA9IFZhci5pbmNyX3N0YXRlIHQubm93XG5lbmRcblxubGV0IG5vdyAoY2xvY2sgOiBDbG9jay50KSA9IGNsb2NrLm5vdy52YWx1ZVxubGV0IHRpbWluZ193aGVlbF9sZW5ndGggKGNsb2NrIDogQ2xvY2sudCkgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIGNsb2NrLnRpbWluZ193aGVlbFxubGV0IG51bV9zdGFiaWxpemVzIHQgPSBTdGFiaWxpemF0aW9uX251bS50b19pbnQgdC5zdGFiaWxpemF0aW9uX251bVxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG5sZXQgbWF4X2hlaWdodF9zZWVuIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXBcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPVxuICBsZXQgciA9IHJlZiB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IEludGVybmFsX29ic2VydmVyLlBhY2tlZC5uZXh0X2luX2FsbCBvYnNlcnZlcjtcbiAgICBmIG9ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBkaXJlY3RseV9vYnNlcnZlZCB0ID1cbiAgbGV0IHIgOiBOb2RlLlBhY2tlZC50IGxpc3QgcmVmID0gcmVmIFtdIGluXG4gIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICByIDo9IFQgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIDo6ICFyKTtcbiAgIXJcbjs7XG5cbmxldCBzYXZlX2RvdCB0IG91dCA9IE5vZGUuUGFja2VkLnNhdmVfZG90IG91dCAoZGlyZWN0bHlfb2JzZXJ2ZWQgdClcbmxldCBzYXZlX2RvdF90b19maWxlIHQgZmlsZSA9IE5vZGUuUGFja2VkLnNhdmVfZG90X3RvX2ZpbGUgZmlsZSAoZGlyZWN0bHlfb2JzZXJ2ZWQgdClcbmxldCBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmYgPSBOb2RlLlBhY2tlZC5pdGVyX2Rlc2NlbmRhbnRzIChkaXJlY3RseV9vYnNlcnZlZCB0KSB+ZlxuXG5tb2R1bGUgU3RhdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1heF9udW1fcGFyZW50cyA6IGludFxuICAgIDsgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA6IChpbnQgKiBQZXJjZW50LnQpIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubGV0IHN0YXRzIHQgPVxuICBsZXQgbWF4X251bV9wYXJlbnRzID0gcmVmICgtMSkgaW5cbiAgbGV0IG51bV9uZWNlc3Nhcnlfbm9kZXMgPSByZWYgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGluY3IgbnVtX25lY2Vzc2FyeV9ub2RlcztcbiAgICBtYXhfbnVtX3BhcmVudHMgOj0gSW50Lm1heCAhbWF4X251bV9wYXJlbnRzIG5vZGUubnVtX3BhcmVudHMpO1xuICBsZXQgbWF4X251bV9wYXJlbnRzID0gIW1heF9udW1fcGFyZW50cyBpblxuICBsZXQgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzID0gQXJyYXkuY3JlYXRlIH5sZW46KG1heF9udW1fcGFyZW50cyArIDEpIDAgaW5cbiAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICBsZXQgbnVtX3BhcmVudHMgPSBub2RlLm51bV9wYXJlbnRzIGluXG4gICAgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzLihudW1fcGFyZW50cykgPC0gbnVtX25vZGVzX2J5X251bV9wYXJlbnRzLihudW1fcGFyZW50cykgKyAxKTtcbiAgbGV0IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgPVxuICAgIEFycmF5LmZvbGRpIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cyB+aW5pdDpbXSB+ZjooZnVuIGkgYWMgbnVtX25vZGVzIC0+XG4gICAgICBpZiBudW1fbm9kZXMgPSAwXG4gICAgICB0aGVuIGFjXG4gICAgICBlbHNlIChpLCBQZXJjZW50Lm9mX211bHQgKGZsb2F0IG51bV9ub2RlcyAvLiBmbG9hdCAhbnVtX25lY2Vzc2FyeV9ub2RlcykpIDo6IGFjKVxuICAgIHw+IExpc3QucmV2XG4gIGluXG4gIHsgU3RhdHMubWF4X251bV9wYXJlbnRzOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIH1cbjs7XG5cbmxldCBhbV9zdGFiaWxpemluZyB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXppbmcgLT4gdHJ1ZVxuICB8IE5vdF9zdGFiaWxpemluZyAtPiBmYWxzZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJjYW5ub3QgY2FsbCBhbV9zdGFiaWxpemluZyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuOztcblxubGV0IGludmFyaWFudCB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgICAgIChtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+XG4gICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICBcIm1lbWJlciBvZiBhbGxfb2JzZXJ2ZXJzIHdpdGggdW5leHBlY3RlZCBzdGF0ZVwiXG4gICAgICAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudF0pO1xuICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaWdub3JlIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgIE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlO1xuICAgICAgICBpZiBub3QgKGFtX3N0YWJpbGl6aW5nIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodCA8PSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXApKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICA9IFJlY29tcHV0ZV9oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5zdGF0dXM6aWdub3JlXG4gICAgICAgIH5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzOmlnbm9yZVxuICAgICAgICB+c3RhYmlsaXphdGlvbl9udW06KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgICAgfmN1cnJlbnRfc2NvcGU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY3VycmVudF9zY29wZSAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgY3VycmVudF9zY29wZSBTY29wZS50b3ApKSlcbiAgICAgICAgfnJlY29tcHV0ZV9oZWFwOihjaGVjayBSZWNvbXB1dGVfaGVhcC5pbnZhcmlhbnQpXG4gICAgICAgIH5hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFkanVzdF9oZWlnaHRzX2hlYXAgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEFkanVzdF9oZWlnaHRzX2hlYXAubGVuZ3RoIGFkanVzdF9oZWlnaHRzX2hlYXAgPSAwKTtcbiAgICAgICAgICAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmludmFyaWFudCBhZGp1c3RfaGVpZ2h0c19oZWFwKSlcbiAgICAgICAgfnByb3BhZ2F0ZV9pbnZhbGlkaXR5OlxuICAgICAgICAgIChjaGVjayAoZnVuIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBwcm9wYWdhdGVfaW52YWxpZGl0eSkpKVxuICAgICAgICB+bnVtX2FjdGl2ZV9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2FjdGl2ZV9vYnNlcnZlcnMgLT4gYXNzZXJ0IChudW1fYWN0aXZlX29ic2VydmVycyA+PSAwKSkpXG4gICAgICAgIH5hbGxfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+ZmluYWxpemVkX29ic2VydmVyczppZ25vcmVcbiAgICAgICAgfm5ld19vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICAoKiBXaGVuIGFuIG9ic2VydmVyIGlzIGFkZGVkIHRvIFtuZXdfb2JzZXJ2ZXJzXSwgaXQgaGFzIFtzdGF0ZSA9IENyZWF0ZWRdLlxuICAgICAgICAgICAgICAgICAgIFRoZSBvbmx5IHBvc3NpYmxlIHRyYW5zaXRpb25zIGZyb20gdGhlcmUgYXJlIHRvIFtVbmxpbmtlZF0gb3IgdG9cbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSwgd2hpY2ggYWxzbyByZW1vdmVzIGl0IGZyb20gW25ld19vYnNlcnZlcnNdLCBuZXZlciB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgICAgIGFnYWluLiAgVGh1cyBpdCBpcyBpbXBvc3NpYmxlIGZvciBhbiBvYnNlcnZlciBpbiBbbmV3X29ic2VydmVyc10gdG8gYmVcbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgICAgICAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgICB+ZGlzYWxsb3dlZF9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIC0+XG4gICAgICAgICAgICAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pXG4gICAgICAgICAgICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgU3RhY2suaW52YXJpYW50XG4gICAgICAgICAgICAgICAgIChmdW4gKFZhci5QYWNrZWQuVCB2YXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICAgICAgICAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICB+aGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb246KGNoZWNrIChTdGFjay5pbnZhcmlhbnQgTm9kZS5QYWNrZWQuaW52YXJpYW50KSlcbiAgICAgICAgfnJ1bl9vbl91cGRhdGVfaGFuZGxlcnM6KGNoZWNrIChTdGFjay5pbnZhcmlhbnQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycy5pbnZhcmlhbnQpKVxuICAgICAgICB+b25seV9pbl9kZWJ1ZzooY2hlY2sgT25seV9pbl9kZWJ1Zy5pbnZhcmlhbnQpXG4gICAgICAgIH53ZWFrX2hhc2h0YmxzOmlnbm9yZVxuICAgICAgICB+a2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19jaGFuZ2VkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NyZWF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfaW52YWxpZGF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0Omlnbm9yZVxuICAgICAgICB+bnVtX3Zhcl9zZXRzOmlnbm9yZSlcbjs7XG5cbmxldCBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWUgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyAtPiAoKVxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgaWYgbm90IGFsbG93X2luX3VwZGF0ZV9oYW5kbGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIG9uLXVwZGF0ZSBoYW5kbGVyc1wiIG5hbWUpXG4gICAgICAgIGJhY2t0cmFjZVxuICAgICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XSlcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIFJhaXNlZF9leG4ucmVyYWlzZV93aXRoX21lc3NhZ2VcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiIG5hbWUpXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiBuYW1lKVxuICAgICAgYmFja3RyYWNlXG4gICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XVxuOztcblxubGV0IHNldF9oZWlnaHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X2hlaWdodCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgbm9kZSBoZWlnaHRcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgaGVpZ2h0ID1cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic2V0X21heF9oZWlnaHRfYWxsb3dlZFwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjp0cnVlO1xuICBBZGp1c3RfaGVpZ2h0c19oZWFwLnNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwIGhlaWdodDtcbiAgUmVjb21wdXRlX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwIGhlaWdodFxuOztcblxubGV0IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgbm90IG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25cbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA8LSB0cnVlO1xuICAgIFN0YWNrLnB1c2ggdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoVCBub2RlKSlcbjs7XG5cbmxldCByZWMgcmVtb3ZlX2NoaWxkcmVuIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIHBhcmVudCAtPlxuICBOb2RlLml0ZXJpX2NoaWxkcmVuIHBhcmVudCB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXgpXG5cbmFuZCByZW1vdmVfY2hpbGQgOiB0eXBlIGEgYi4gY2hpbGQ6YiBOb2RlLnQgLT4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBjaGVja19pZl91bm5lY2Vzc2FyeSBjaGlsZFxuXG5hbmQgY2hlY2tfaWZfdW5uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPiBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpIHRoZW4gYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGVcblxuYW5kIGJlY2FtZV91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gIG5vZGUuaGVpZ2h0IDwtIC0xO1xuICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gVW5vcmRlcmVkX2FycmF5X2ZvbGQuZm9yY2VfZnVsbF9jb21wdXRlIHVcbiAgIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOmZhbHNlXG4gICB8IF8gLT4gKCkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IHJlbW92ZV9hbGFybSAoY2xvY2sgOiBDbG9jay50KSBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gY2xvY2sudGltaW5nX3doZWVsIGFsYXJtXG4gIHRoZW4gVGltaW5nX3doZWVsLnJlbW92ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbjs7XG5cbigqIEFuIGludmFsaWQgbm9kZSBpcyBub2RlIHdob3NlIGtpbmQgaXMgW0ludmFsaWRdLiAgQSBub2RlJ3Mga2luZCBpcyBzZXQgdG8gW0ludmFsaWRdXG4gICB3aGVuIHRoZSBsaHMgb2YgaXRzIHNjb3BlIGNoYW5nZXMsIG9yIG9uZSBpZiBpdHMgY2hpbGRyZW4gcHJvcGFnYXRlIHRoZSBpbnZhbGlkaXR5XG4gICB1cHdhcmQgKHNlZSBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdIHRvIHNlZSBpbiB3aGljaCBjYXNlIGludmFsaWRpdHkgcHJvcGFnYXRpb25cbiAgIHN0b3BzKS4gIEludmFsaWRhdGluZyBhIG5vZGUgZGlzY29ubmVjdHMgaXQgZnJvbSBpdHMgY2hpbGRyZW4sIHdoaWNoIG1lYW5zOlxuXG4gICAxLiBhbiBpbnZhbGlkIG5vZGUgY2Fubm90IGVuZCB1cCBvbiB0aGUgc2NoZWR1bGVyIChpZiBpdCBpcyBvbiB0aGUgc2NoZWR1bGVyIHdoZW5cbiAgIGl0IGlzIGludmFsaWRhdGVkLCBpdCBpcyByZW1vdmVkKVxuICAgMi4gYW4gaW52YWxpZCBub2RlIGRvZXNuJ3QgbWFrZSBpdHMgY2hpbGRyZW4gbmVjZXNzYXJ5IGFueW1vcmUuXG5cbiAgIEludmFsaWQgbm9kZXMgdXN1YWxseSBoYXZlIG5vIHBhcmVudHMsIGJlY2F1c2UgdGhlIHVwd2FyZCBpbnZhbGlkaXR5IHByb3BhZ2F0aW9uIG1lYW5zXG4gICB0aGF0IHRoZWlyIHBhcmVudHMgd2lsbCB0aGVtc2VsdmVzIGJlY29tZSBpbnZhbGlkIGFuZCBkaXNjb25uZWN0IGZyb20gdGhlaXIgY2hpbGRyZW4uXG4gICBIb3dldmVyLCBbaWZdLCBbam9pbl0gb3IgW2JpbmRdIGFyZSBub3QgaW52YWxpZGF0ZWQgYnkgdGhlIHVwd2FyZCBwcm9wYWdhdGlvbiwgc28gYW5cbiAgIGludmFsaWQgbm9kZSBjYW4gc3RpbGwgaGF2ZSBwYXJlbnRzLiAgSW52YWxpZCBub2RlcyBjYW4gYmUgbmVjZXNzYXJ5LCBpbiB0aGUgY2FzZSB3aGVyZVxuICAgdGhleSBoYXZlIHBhcmVudHMsIGFuZCBhbHNvIHdoZW4gdGhleSBhcmUgb2JzZXJ2ZWQuXG5cbiAgIFRoZSB1cHdhcmQgcHJvcGFnYXRpb24gb2YgaW52YWxpZGl0eSBoYXBwZW5zIGJvdGggd2hlbiBhIG5vZGUgYmVjb21lcyBpbnZhbGlkLCBhbmQgd2hlblxuICAgdHJ5aW5nIHRvIGFkZCBhbiBlZGdlIGZyb20gYW4gaW52YWxpZCBjaGlsZCBub2RlIHRvIGFub3RoZXIgbm9kZS4gIEJlY2F1c2UgaW52YWxpZGl0eVxuICAgaXMgb25seSBwcm9wYWdhdGVkIHVwd2FyZCwgYW5kIGJlY2F1c2UgdGhlIHJocyBvZiBhIGJpbmQgaXMgaW52YWxpZGF0ZWQgYmVmb3JlIGl0XG4gICBleGVjdXRlcywgYSBub2RlIGNhbm5vdCBiZSBib3RoIGNvbXB1dGVkIGFuZCBpbnZhbGlkYXRlZCBpbiB0aGUgc2FtZSBzdGFiaWxpemF0aW9uLlxuXG4gICBXaGVuIGludmFsaWRhdGluZywgd2UgY2FuJ3QgYXNzdW1lIG11Y2ggYWJvdXQgdGhlIG5vZGVzIHdlIHZpc2l0LiAgV2UgY2Fubm90IGFzc3VtZVxuICAgdGhhdCBub2RlcyBhcmUgdmFsaWQgKHRoZSByaHMgY2FuIGNvbnRhaW4gcHJldmlvdXNseSBpbnZhbGlkYXRlZCBub2RlcyksIG9yIHRoYXQgbm9kZXNcbiAgIGFyZSB1bm5lY2Vzc2FyeSAobm9kZXMgY2FuIGJlIG1hZGUgbmVjZXNzYXJ5IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGVpciBjb250YWluaW5nXG4gICBiaW5kcykuICopXG5cbmxldCByZWMgaW52YWxpZGF0ZV9ub2RlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gIHRoZW4gKFxuICAgIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQubm9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUub2xkX3ZhbHVlX29wdCk7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgPC0gdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgKyAxO1xuICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgKCogVGhlIG5vZGUgZG9lc24ndCBoYXZlIGNoaWxkcmVuIGFueW1vcmUsIHNvIHdlIGNhbiBsb3dlciBpdHMgaGVpZ2h0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlLCB0byBvbmUgZ3JlYXRlciB0aGFuIHRoZSBzY29wZSBpdCB3YXMgY3JlYXRlZCBpbi4gIEFsc28sIGJlY2F1c2Ugd2VcbiAgICAgICAgIGFyZSBsb3dlcmluZyB0aGUgaGVpZ2h0LCB3ZSBkb24ndCBuZWVkIHRvIGFkanVzdCBhbnkgb2YgaXRzIGFuY2VzdG9ycycgaGVpZ2h0cy5cbiAgICAgICAgIFdlIGNvdWxkIGxlYXZlIHRoZSBoZWlnaHQgYWxvbmUsIGJ1dCB3ZSBtYXkgYXMgd2VsbCBsb3dlciBpdCBhcyBtdWNoIGFzXG4gICAgICAgICBwb3NzaWJsZSB0byBhdm9pZCBtYWtpbmcgdGhlIGhlaWdodHMgb2YgYW55IGZ1dHVyZSBhbmNlc3RvcnMgdW5uZWNlc3NhcmlseVxuICAgICAgICAgbGFyZ2UuICopXG4gICAgICBub2RlLmhlaWdodCA8LSBTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gICAgKCogV2UgZG9uJ3Qgc2V0IFtub2RlLmNyZWF0ZWRfaW5dIG9yIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXTsgd2UgbGVhdmUgW25vZGVdXG4gICAgICAgaW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgSWYgdGhhdCBzY29wZSBpcyBldmVyIGludmFsaWRhdGVkLCB0aGVuIHRoYXRcbiAgICAgICB3aWxsIGNsZWFyIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXSAqKVxuICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICB8IEF0IGF0IC0+IHJlbW92ZV9hbGFybSBhdC5jbG9jayBhdC5hbGFybVxuICAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gcmVtb3ZlX2FsYXJtIGF0X2ludGVydmFscy5jbG9jayBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgICAgfCBCaW5kX21haW4gYmluZCAtPiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgIHwgU3RlcF9mdW5jdGlvbiB7IGFsYXJtOyBjbG9jazsgXyB9IC0+IHJlbW92ZV9hbGFybSBjbG9jayBhbGFybVxuICAgICB8IF8gLT4gKCkpO1xuICAgIE5vZGUuc2V0X2tpbmQgbm9kZSBJbnZhbGlkO1xuICAgICgqIElmIHdlIGNhbGxlZCBbcHJvcGFnYXRlX2ludmFsaWRpdHldIHJpZ2h0IGF3YXkgb24gdGhlIHBhcmVudHMsIHdlIHdvdWxkIGdldCBpbnRvXG4gICAgICAgdHJvdWJsZS4gIFRoZSBwYXJlbnQgd291bGQgZGlzY29ubmVjdCBpdHNlbGYgZnJvbSB0aGUgY3VycmVudCBub2RlLCB0aHVzXG4gICAgICAgbW9kaWZ5aW5nIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIEV2ZW4gaWYgd2UgbWFkZSBhIHNwZWNpYWwgY2FzZSwgaXRcbiAgICAgICBzdGlsbCB3b3VsZG4ndCBiZSBlbm91Z2ggdG8gaGFuZGxlIG90aGVyIGNhc2VzIHdoZXJlIHRoZSBsaXN0IG9mIHBhcmVudHMgaXNcbiAgICAgICBtb2RpZmllZCAoZS5nLiB3aGVuIFtsaHNdIGlzIGludmFsaWRhdGVkIGluIHRoZSBleGFtcGxlIGluIHRoZSBjb21tZW50IGFib3V0XG4gICAgICAgW2Nhbl9yZWNvbXB1dGVfbm93XSBmYXIgYmVsb3cpLiAqKVxuICAgIGZvciBpbmRleCA9IDAgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoTm9kZS5nZXRfcGFyZW50IG5vZGUgfmluZGV4KVxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSk7XG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcblxuYW5kIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgbm9kZSA9XG4gIGxldCByID0gcmVmIG5vZGUgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgaW52YWxpZGF0ZV9ub2RlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbigqIFdoZW4gW25vdCB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNdIGFuZCBhIGJpbmQncyBsaHMgY2hhbmdlcywgd2UgbW92ZVxuICAgbm9kZXMgY3JlYXRlZCBvbiB0aGUgYmluZCdzIHJocyB1cCB0byBpdHMgcGFyZW50IGJpbmQsIGFzIG9wcG9zZWQgdG8gW1Njb3BlLlRvcF0uICBUaGlzXG4gICBtYWludGFpbnMgdGhlaXIgZGVwZW5kZW5jZSBvbiB2YWxpZCBiaW5kIGxlZnQtaGFuZCBzaWRlcywgYW5kIGtlZXBzIHRoZW0gaGlnaGVyIGluIHRoZVxuICAgZ3JhcGguICBUaGlzIGluIHR1cm4gbWVhbnMgdGhhdCB3ZSB3aWxsIGNvbnRpbnVlIHRvIGNvbXB1dGUgdGhvc2Ugbm9kZXMgYWZ0ZXIgdGhlXG4gICBwYXJlbnQgYmluZCdzIGxocywgd2hpY2ggZ2l2ZXMgdGhlbSBtb3JlIG9mIGEgY2hhbmNlIHRvIGJlY29tZSB1bm5lY2Vzc2FyeSBhbmQgbm90IGJlXG4gICBjb21wdXRlZCBzaG91bGQgdGhlIHBhcmVudCBiaW5kJ3MgbGhzIGNoYW5nZS4gKilcbmxldCByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIF90IChmaXJzdF9ub2RlX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV3X3Njb3BlID1cbiAgbGV0IHIgPSByZWYgZmlyc3Rfbm9kZV9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgbm9kZV9vbl9yaHMuY3JlYXRlZF9pbiA8LSBuZXdfc2NvcGU7XG4gICAgU2NvcGUuYWRkX25vZGUgbmV3X3Njb3BlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbmxldCBwcm9wYWdhdGVfaW52YWxpZGl0eSB0ID1cbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5KSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5wcm9wYWdhdGVfaW52YWxpZGl0eSBpblxuICAgIGlmIE5vZGUuaXNfdmFsaWQgbm9kZVxuICAgIHRoZW5cbiAgICAgIGlmIE5vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkIG5vZGVcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2RlIG5vZGVcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKiBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBub2RlIGlzIG5lY2Vzc2FyeS4gVGhpcyBpcyBiZWNhdXNlIGNoaWxkcmVuIGNhbiBvbmx5IHBvaW50IHRvIG5lY2Vzc2FyeVxuICAgICAgICAgICAgIHBhcmVudHNcbiAgICAgICAgICAgLSBub2RlIGlzIHN0YWxlLiBUaGlzIGlzIGJlY2F1c2U6IEZvciBiaW5kLCBpZiwgam9pbiwgdGhpcyBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBlaXRoZXIgdGhlIGludmFsaWRhdGlvbiBpcyBjYXVzZWQgYnkgdGhlIGxocyBjaGFuZ2luZyAoaW4gd2hpY2ggY2FzZSB0aGVcbiAgICAgICAgICAgICBsaHMtY2hhbmdlIG5vZGUgYmVpbmcgbmV3ZXIgbWFrZXMgdXMgc3RhbGUpLlxuICAgICAgICAgICAtIG9yIGEgY2hpbGQgYmVjYW1lIGludmFsaWQgdGhpcyBzdGFiaWxpemF0aW9uIGN5Y2xlLCBpbiB3aGljaCBjYXNlIGl0IGhhc1xuICAgICAgICAgICAgIHQuY2hhbmdlZF9hdCBvZiBbdC5zdGFiaWxpemF0aW9uX251bV0sIGFuZCBzbyBbbm9kZV0gaXMgc3RhbGVcbiAgICAgICAgICAgLSBvciBbbm9kZV0ganVzdCBiZWNhbWUgbmVjZXNzYXJ5IGFuZCB0cmllZCBjb25uZWN0aW5nIHRvIGFuIGFscmVhZHkgaW52YWxpZFxuICAgICAgICAgICAgIGNoaWxkLiBJbiB0aGF0IGNhc2UsIFtjaGlsZC5jaGFuZ2VkX2F0ID4gbm9kZS5yZWNvbXB1dGVkX2F0XSBmb3IgdGhhdCBjaGlsZCxcbiAgICAgICAgICAgICBiZWNhdXNlIGlmIHdlIGhhZCBiZWVuIHJlY29tcHV0ZWQgd2hlbiB0aGF0IGNoaWxkIGNoYW5nZWQsIHdlIHdvdWxkIGhhdmUgYmVlblxuICAgICAgICAgICAgIG1hZGUgaW52YWxpZCBiYWNrIHRoZW4uICBGb3IgZXhwZXJ0IG5vZGVzLCB0aGUgYXJndW1lbnQgaXMgdGhlIHNhbWUsIGV4Y2VwdFxuICAgICAgICAgICAgIHRoYXQgaW5zdGVhZCBvZiBsaHMtY2hhbmdlIG5vZGVzIG1ha2UgdGhlIGV4cGVydCBub2RlcyBzdGFsZSwgaXQncyBtYWRlIHN0YWxlXG4gICAgICAgICAgICAgZXhwbGljaXRlbHkgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICAoKiBJZiBtdWx0aXBsZSBjaGlsZHJlbiBhcmUgaW52YWxpZCwgdGhleSB3aWxsIHB1c2ggdXMgYXMgbWFueSB0aW1lcyBvbiB0aGVcbiAgICAgICAgICAgICAgcHJvcGFnYXRpb24gc3RhY2ssIHNvIHdlIGNvdW50IHRoZW0gcmlnaHQuICopXG4gICAgICAgICAgIEV4cGVydC5pbmNyX2ludmFsaWRfY2hpbGRyZW4gZXhwZXJ0XG4gICAgICAgICB8IGtpbmQgLT5cbiAgICAgICAgICAgaWYgZGVidWdcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgfCBCaW5kX21haW4gXyB8IElmX3RoZW5fZWxzZSBfIHwgSm9pbl9tYWluIF8gLT4gKClcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZSAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuIGFyZSBuZXZlciBwdXNoZWQgb24gdGhlIHN0YWNrICopKSk7XG4gICAgICAgICgqIFdlIGRvIG5vdCBjaGVjayBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBoZXJlLCBiZWNhdXNlIGl0IHNob3VsZCBiZVxuICAgICAgICAgICB0cnVlLCBhbmQgYmVjYXVzZSBjb21wdXRpbmcgaXQgdGFrZXMgTyhudW1iZXIgb2YgY2hpbGRyZW4pLCBub2RlIGNhbiBiZSBwdXNoZWRcbiAgICAgICAgICAgb24gdGhlIHN0YWNrIG9uY2UgcGVyIGNoaWxkLCBhbmQgZXhwZXJ0IG5vZGVzIGNhbiBoYXZlIGxvdHMgb2YgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIGRvbmVcbjs7XG5cbigqIFthZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgdCB+Y2hpbGQgfnBhcmVudF0gYWRkcyBbcGFyZW50XSBhcyBhIHBhcmVudCBvZlxuICAgW2NoaWxkXSwgYW5kIG1ha2VzIFtjaGlsZF0gYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMgbmVjZXNzYXJ5LCBlbnN1cmluZyB0aGVpciBoZWlnaHRzXG4gICBhcmUgYWNjdXJhdGUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgYWJvdXQgdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgW2NoaWxkXSBhbmQgW3BhcmVudF1cbiAgIHRob3VnaC4gKilcbmxldCByZWMgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgTm9kZS50IC0+IHBhcmVudDpiIE5vZGUudCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCBpblxuICBOb2RlLmFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgY2hpbGQpIHRoZW4gU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChUIHBhcmVudCk7XG4gIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBjaGlsZDtcbiAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayBlIH5jaGlsZF9pbmRleFxuICB8IF8gLT4gKClcblxuYW5kIGJlY2FtZV9uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICAoKiBbU2NvcGUuaXNfbmVjZXNzYXJ5IG5vZGUuY3JlYXRlZF9pbl0gaXMgdHJ1ZSAoYXNzdW1pbmcgdGhlIHNjb3BlIGl0c2VsZiBpcyB2YWxpZClcbiAgICAgYmVjYXVzZSBbTm9kZS5pdGVyX2NoaWxkcmVuXSBiZWxvdyBmaXJzdCB2aXNpdHMgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZCBub2RlcyBhbmRcbiAgICAgdGhlbiB0aGUgcmhzLiAqKVxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGUgJiYgbm90IChTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRyeWluZyB0byBtYWtlIGEgbm9kZSBuZWNlc3Nhcnkgd2hvc2UgZGVmaW5pbmcgYmluZCBpcyBub3QgbmVjZXNzYXJ5XCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgdC5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICgqIFNpbmNlIFtub2RlXSBiZWNhbWUgbmVjZXNzYXJ5LCB0byByZXN0b3JlIHRoZSBpbnZhcmlhbnQsIHdlIG5lZWQgdG86XG5cbiAgICAgLSBhZGQgcGFyZW50IHBvaW50ZXJzIHRvIFtub2RlXSBmcm9tIGl0cyBjaGlsZHJlbi5cbiAgICAgLSBzZXQgW25vZGVdJ3MgaGVpZ2h0LlxuICAgICAtIGFkZCBbbm9kZV0gdG8gdGhlIHJlY29tcHV0ZSBoZWFwLCBpZiBuZWNlc3NhcnkuICopXG4gIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpO1xuICBOb2RlLml0ZXJpX2NoaWxkcmVuIG5vZGUgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgfmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg7XG4gICAgKCogTm93IHRoYXQgY2hpbGQgaXMgbmVjZXNzYXJ5LCBpdCBzaG91bGQgaGF2ZSBhIHZhbGlkIGhlaWdodC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQuaGVpZ2h0ID49IDApO1xuICAgIGlmIGNoaWxkLmhlaWdodCA+PSBub2RlLmhlaWdodCB0aGVuIHNldF9oZWlnaHQgbm9kZSAoY2hpbGQuaGVpZ2h0ICsgMSkpO1xuICAoKiBOb3cgdGhhdCB0aGUgaGVpZ2h0IGlzIGNvcnJlY3QsIG1heWJlIGFkZCBbbm9kZV0gdG8gdGhlIHJlY29tcHV0ZSBoZWFwLiAgW25vZGVdXG4gICAgIGp1c3QgYmVjYW1lIG5lY2Vzc2FyeSwgc28gaXQgY2FuJ3QgaGF2ZSBiZWVuIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gIFNpbmNlIFtub2RlXVxuICAgICBpcyBuZWNlc3NhcnksIHdlIHNob3VsZCBhZGQgaXQgdG8gdGhlIHJlY29tcHV0ZSBoZWFwIGlmZiBpdCBpcyBzdGFsZS4gKilcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKTtcbiAgaWYgTm9kZS5pc19zdGFsZSBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZTtcbiAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6dHJ1ZVxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBiZWNhbWVfbmVjZXNzYXJ5IG5vZGUgPVxuICBiZWNhbWVfbmVjZXNzYXJ5IG5vZGU7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IG5vZGUuc3RhdGVcbjs7XG5cbmxldCBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBsZXQgdCA9IHBhcmVudC5zdGF0ZSBpblxuICAoKiBJbiB0aGUgY2FzZSB3aGVuIHRoZSBlZGdlIGJlaW5nIGFkZGVkIGNyZWF0ZXMgYSBjeWNsZSwgaXQgaXMgcG9zc2libGUgZm9yIHRoZVxuICAgICByZWN1cnNpb24gaW4gW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0c10gdG8gcmVhY2ggW3BhcmVudF0gYXMgYSBkZXNjZW5kYW50XG4gICAgIG9mIFtjaGlsZF0uICBJbiB0aGF0IGNhc2UsIHRoZSByZWN1cnNpb24gdGVybWluYXRlcywgYmVjYXVzZSBbTm9kZS5pc19uZWNlc3NhcnlcbiAgICAgcGFyZW50XS4gIFdlIHRoZW4gcmV0dXJuIGhlcmUgYW5kIHN1YnNlcXVlbnRseSBkZXRlY3QgdGhlIGN5Y2xlIGluXG4gICAgIFthZGp1c3RfaGVpZ2h0c10uICopXG4gIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICgqIFdlIGFkanVzdCBoZWlnaHRzIHNvIHRoYXQgd2UgZW5zdXJlIHRoZXJlIGFyZSBubyBjeWNsZXMgYmVmb3JlIGNhbGxpbmdcbiAgICAgW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XS4gKilcbiAgaWYgY2hpbGQuaGVpZ2h0ID49IHBhcmVudC5oZWlnaHRcbiAgdGhlblxuICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuYWRqdXN0X2hlaWdodHNcbiAgICAgIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgdC5yZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkXG4gICAgICB+cGFyZW50O1xuICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0O1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgKCogd2Ugb25seSBhZGQgbmVjZXNzYXJ5IHBhcmVudHMgKilcbiAgaWYgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKVxuICAmJiAoU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSBwYXJlbnQucmVjb21wdXRlZF9hdFxuICAgICAgfHwgTm9kZS5lZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50KVxuICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuOztcblxubGV0IHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBsZXQgc2F2ZWQgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgdC5jdXJyZW50X3Njb3BlIDwtIHNjb3BlO1xuICB0cnlcbiAgICBsZXQgdiA9IGYgKCkgaW5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgdlxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgdC5jdXJyZW50X3Njb3BlIDwtIHNhdmVkO1xuICAgIHJhaXNlIGV4blxuOztcblxubGV0IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mID1cbiAgaWYgbm90IChTY29wZS5pc192YWxpZCBzY29wZSlcbiAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gcnVuIHdpdGhpbiBhbiBpbnZhbGlkIHNjb3BlXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBydW5fd2l0aF9zY29wZSB0IHNjb3BlIH5mXG47O1xuXG5sZXQgY2hhbmdlX2NoaWxkXG4gIDogdHlwZSBhIGIuXG4gICAgcGFyZW50OmEgTm9kZS50XG4gICAgLT4gb2xkX2NoaWxkOmIgTm9kZS50IFVvcHQudFxuICAgIC0+IG5ld19jaGlsZDpiIE5vZGUudFxuICAgIC0+IGNoaWxkX2luZGV4OmludFxuICAgIC0+IHVuaXRcbiAgPVxuICBmdW4gfnBhcmVudCB+b2xkX2NoaWxkIH5uZXdfY2hpbGQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIFVvcHQuaXNfbm9uZSBvbGRfY2hpbGRcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXhcbiAgZWxzZSAoXG4gICAgbGV0IG9sZF9jaGlsZCA9IFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9jaGlsZCBpblxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfY2hpbGQgbmV3X2NoaWxkKVxuICAgIHRoZW4gKFxuICAgICAgKCogV2UgcmVtb3ZlIFtvbGRfY2hpbGRdIGJlZm9yZSBhZGRpbmcgW25ld19jaGlsZF0sIGJlY2F1c2UgdGhleSBzaGFyZSB0aGUgc2FtZVxuICAgICAgICAgY2hpbGQgaW5kZXguICopXG4gICAgICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkOm9sZF9jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgICAgICgqIFdlIGZvcmNlIFtvbGRfY2hpbGRdIHRvIHRlbXBvcmFyaWx5IGJlIG5lY2Vzc2FyeSBzbyB0aGF0IFthZGRfcGFyZW50XSBjYW4ndFxuICAgICAgICAgbWlzdGFrZW5seSB0aGluayBpdCBpcyB1bm5lY2Vzc2FyeSBhbmQgdHJhbnNpdGlvbiBpdCB0byBuZWNlc3NhcnkgKHdoaWNoIHdvdWxkXG4gICAgICAgICBhZGQgZHVwbGljYXRlIGVkZ2VzIGFuZCBicmVhayB0aGluZ3MgaG9ycmlibHkpLiAqKVxuICAgICAgb2xkX2NoaWxkLmZvcmNlX25lY2Vzc2FyeSA8LSB0cnVlO1xuICAgICAgYWRkX3BhcmVudCB+Y2hpbGQ6bmV3X2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgb2xkX2NoaWxkLmZvcmNlX25lY2Vzc2FyeSA8LSBmYWxzZTtcbiAgICAgICgqIFdlIFtjaGVja19pZl91bm5lY2Vzc2FyeV0gYWZ0ZXIgW2FkZF9wYXJlbnRdLCBzbyB0aGF0IHdlIGRvbid0IHVubmVjZXNzYXJpbHlcbiAgICAgICAgIHRyYW5zaXRpb24gbm9kZXMgZnJvbSBuZWNlc3NhcnkgdG8gdW5uZWNlc3NhcnkgYW5kIHRoZW4gYmFjayBhZ2Fpbi4gKilcbiAgICAgIGNoZWNrX2lmX3VubmVjZXNzYXJ5IG9sZF9jaGlsZCkpXG47O1xuXG5sZXQgYWRkX2FsYXJtIGNsb2NrIH5hdCBhbGFybV92YWx1ZSA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgVGltaW5nX3doZWVsLmFkZCBjbG9jay50aW1pbmdfd2hlZWwgfmF0IGFsYXJtX3ZhbHVlXG47O1xuXG5sZXQgcmVjIHJlY29tcHV0ZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICB0Lm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSA8LSBTb21lIChUIG5vZGUpO1xuICAgIHQub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPC0gW10pO1xuICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgKyAxO1xuICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgfCBBcnJheV9mb2xkIGFycmF5X2ZvbGQgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKEFycmF5X2ZvbGQuY29tcHV0ZSBhcnJheV9mb2xkKVxuICB8IEF0IHsgYXQ7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhbiBbQXRdIG5vZGUgYWZ0ZXIgW2F0XS4gIFthZHZhbmNlX2Nsb2NrXSB3YXNcbiAgICAgICBzdXBwb3NlZCB0byBjb252ZXJ0IGl0IHRvIGEgW0NvbnN0XSBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgQmVmb3JlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBCaW5kX2xoc19jaGFuZ2VcbiAgICAgICh7IG1haW5cbiAgICAgICA7IGZcbiAgICAgICA7IGxoc1xuICAgICAgIDsgcmhzX3Njb3BlXG4gICAgICAgOyByaHMgPSBvbGRfcmhzXG4gICAgICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgOyBfXG4gICAgICAgfSBhcyBiaW5kKSAtPlxuICAgICgqIFdlIGNsZWFyIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIHNvIGl0IHdpbGwgaG9sZCBqdXN0IHRoZSBub2RlcyBjcmVhdGVkIGJ5XG4gICAgICAgdGhpcyBjYWxsIHRvIFtmXS4gKilcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IHJocyA9IHJ1bl93aXRoX3Njb3BlIHQgcmhzX3Njb3BlIH5mOihmdW4gKCkgLT4gZiAoTm9kZS52YWx1ZV9leG4gbGhzKSkgaW5cbiAgICBiaW5kLnJocyA8LSBVb3B0LnNvbWUgcmhzO1xuICAgICgqIEFudGljaXBhdGUgd2hhdCBbbWF5YmVfY2hhbmdlX3ZhbHVlXSB3aWxsIGRvLCB0byBtYWtlIHN1cmUgQmluZF9tYWluIGlzIHN0YWxlXG4gICAgICAgcmlnaHQgYXdheS4gVGhpcyB3YXksIGlmIHRoZSBuZXcgY2hpbGQgaXMgaW52YWxpZCwgd2UnbGwgc2F0aXNmeSB0aGUgaW52YXJpYW50XG4gICAgICAgc2F5aW5nIHRoYXQgW25lZWRzX3RvX2JlX2NvbXB1dGVkIGJpbmRfbWFpbl0gaW4gW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOm9sZF9yaHNcbiAgICAgIH5uZXdfY2hpbGQ6cmhzXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5iaW5kX3Joc19jaGlsZF9pbmRleDtcbiAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX3Joc1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgaW52YWxpZGF0ZSBhZnRlciBbY2hhbmdlX2NoaWxkXSwgYmVjYXVzZSBpbnZhbGlkYXRpb24gY2hhbmdlcyB0aGUgW2tpbmRdIG9mXG4gICAgICAgICBub2RlcyB0byBbSW52YWxpZF0sIHdoaWNoIG1lYW5zIHRoYXQgd2UgY2FuIG5vIGxvbmdlciB2aXNpdCB0aGVpciBjaGlsZHJlbi5cbiAgICAgICAgIEFsc28sIHRoZSBbb2xkX3Joc10gbm9kZXMgYXJlIHR5cGljYWxseSBtYWRlIHVubmVjZXNzYXJ5IGJ5IFtjaGFuZ2VfY2hpbGRdLCBhbmRcbiAgICAgICAgIHNvIGJ5IGludmFsaWRhdGluZyBhZnRlcndhcmRzLCB3ZSB3aWxsIG5vdCB3YXN0ZSB0aW1lIGFkZGluZyB0aGVtIHRvIHRoZVxuICAgICAgICAgcmVjb21wdXRlIGhlYXAgYW5kIHRoZW4gcmVtb3ZpbmcgdGhlbS4gKilcbiAgICAgIGlmIHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgIGVsc2VcbiAgICAgICAgcmVzY29wZV9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgICAgIHRcbiAgICAgICAgICBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgfm5ld19zY29wZTptYWluLmNyZWF0ZWRfaW47XG4gICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0KTtcbiAgICAoKiBbbm9kZV0gd2FzIHZhbGlkIGF0IHRoZSBzdGFydCBvZiB0aGUgW0JpbmRfbGhzX2NoYW5nZV0gYnJhbmNoLCBhbmQgaW52YWxpZGF0aW9uXG4gICAgICAgb25seSB2aXNpdHMgaGlnaGVyIG5vZGVzLCBzbyBbbm9kZV0gaXMgc3RpbGwgdmFsaWQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBCaW5kX21haW4geyByaHM7IF8gfSAtPiBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIHJocylcbiAgfCBDb25zdCBhIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIGFcbiAgfCBGcmVlemUgeyBjaGlsZDsgb25seV9mcmVlemVfd2hlbjsgXyB9IC0+XG4gICAgbGV0IHZhbHVlID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICBpZiBvbmx5X2ZyZWV6ZV93aGVuIHZhbHVlXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgIE5vZGUuc2V0X2tpbmQgbm9kZSAoQ29uc3QgdmFsdWUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSB0aGVuIHNldF9oZWlnaHQgbm9kZSAwIGVsc2UgYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHZhbHVlXG4gIHwgSWZfdGVzdF9jaGFuZ2UgKHsgbWFpbjsgY3VycmVudF9icmFuY2g7IHRlc3Q7IHRoZW5fOyBlbHNlXzsgXyB9IGFzIGlmX3RoZW5fZWxzZSkgLT5cbiAgICBsZXQgZGVzaXJlZF9icmFuY2ggPSBpZiBOb2RlLnZhbHVlX2V4biB0ZXN0IHRoZW4gdGhlbl8gZWxzZSBlbHNlXyBpblxuICAgIGlmX3RoZW5fZWxzZS5jdXJyZW50X2JyYW5jaCA8LSBVb3B0LnNvbWUgZGVzaXJlZF9icmFuY2g7XG4gICAgKCogc2VlIHRoZSBjb21tZW50IGluIEJpbmRfbGhzX2NoYW5nZSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOmN1cnJlbnRfYnJhbmNoXG4gICAgICB+bmV3X2NoaWxkOmRlc2lyZWRfYnJhbmNoXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5pZl9icmFuY2hfY2hpbGRfaW5kZXg7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBJZl90aGVuX2Vsc2UgeyBjdXJyZW50X2JyYW5jaDsgXyB9IC0+XG4gICAgY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaClcbiAgfCBJbnZhbGlkIC0+XG4gICAgKCogV2UgbmV2ZXIgaGF2ZSBpbnZhbGlkIG5vZGVzIGluIHRoZSByZWNvbXB1dGUgaGVhcDsgdGhleSBhcmUgbmV2ZXIgc3RhbGUuICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgSm9pbl9saHNfY2hhbmdlICh7IGxoczsgbWFpbjsgcmhzID0gb2xkX3JoczsgXyB9IGFzIGpvaW4pIC0+XG4gICAgbGV0IHJocyA9IE5vZGUudmFsdWVfZXhuIGxocyBpblxuICAgIGpvaW4ucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogc2VlIHRoZSBjb21tZW50IGluIEJpbmRfbGhzX2NoYW5nZSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOm9sZF9yaHNcbiAgICAgIH5uZXdfY2hpbGQ6cmhzXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5qb2luX3Joc19jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEpvaW5fbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IE1hcCAoZiwgbjEpIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChmIChOb2RlLnZhbHVlX2V4biBuMSkpXG4gIHwgU25hcHNob3QgeyBhdDsgYmVmb3JlOyBjbG9jazsgXyB9IC0+XG4gICAgKCogSXQgaXMgYSBidWcgaWYgd2UgdHJ5IHRvIGNvbXB1dGUgYSBbU25hcHNob3RdIGFuZCB0aGUgYWxhcm0gc2hvdWxkIGhhdmUgZmlyZWQuXG4gICAgICAgW2FkdmFuY2VfY2xvY2tdIHdhcyBzdXBwb3NlZCB0byBjb252ZXJ0IGl0IHRvIGEgW0ZyZWV6ZV0gYXQgdGhlIGFwcHJvcHJpYXRlXG4gICAgICAgdGltZS4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYmVmb3JlXG4gIHwgU3RlcF9mdW5jdGlvbiAoeyBjaGlsZDsgY2xvY2s7IF8gfSBhcyBzdGVwX2Z1bmN0aW9uX25vZGUpIC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hpbGQgPSBVb3B0LnZhbHVlX2V4biBjaGlsZCBpblxuICAgICAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZVxuICAgICAgICAgICBjaGlsZC5jaGFuZ2VkX2F0XG4gICAgICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0XG4gICAgICAgICA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA8LSBjaGlsZC5jaGFuZ2VkX2F0O1xuICAgICAgICByZW1vdmVfYWxhcm0gY2xvY2sgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtO1xuICAgICAgICBsZXQgc3RlcF9mdW5jdGlvbiA9IE5vZGUudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS52YWx1ZSA8LSBVb3B0LnNvbWUgKFN0ZXBfZnVuY3Rpb24uaW5pdCBzdGVwX2Z1bmN0aW9uKTtcbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnVwY29taW5nX3N0ZXBzIDwtIFN0ZXBfZnVuY3Rpb24uc3RlcHMgc3RlcF9mdW5jdGlvbjtcbiAgICAgICAgKCogSWYgdGhlIGNoaWxkIGlzIGEgY29uc3RhbnQsIHdlIGRyb3Agb3VyIHJlZmVyZW5jZSB0byBpdCwgdG8gYXZvaWQgaG9sZGluZyBvbiB0b1xuICAgICAgICAgICB0aGUgZW50aXJlIHN0ZXAgZnVuY3Rpb24uICopXG4gICAgICAgIGlmIE5vZGUuaXNfY29uc3QgY2hpbGRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmNoaWxkIDwtIFVvcHQubm9uZTtcbiAgICAgICAgICBzZXRfaGVpZ2h0IG5vZGUgKFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKSkpKTtcbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuYWR2YW5jZSBzdGVwX2Z1bmN0aW9uX25vZGUgfnRvXzoobm93IGNsb2NrKTtcbiAgICBsZXQgc3RlcF9mdW5jdGlvbl92YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHN0ZXBfZnVuY3Rpb25fbm9kZS52YWx1ZSBpblxuICAgIChtYXRjaCBTZXF1ZW5jZS5oZCBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgd2l0aFxuICAgICB8IE5vbmUgLT4gaWYgVW9wdC5pc19ub25lIGNoaWxkIHRoZW4gTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCBzdGVwX2Z1bmN0aW9uX3ZhbHVlKVxuICAgICB8IFNvbWUgKGF0LCBfKSAtPlxuICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0IHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgc3RlcF9mdW5jdGlvbl92YWx1ZVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNvbXB1dGUgdSlcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICB8IFZhciB2YXIgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFyLnZhbHVlXG4gIHwgTWFwMiAoZiwgbjEsIG4yKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSlcbiAgfCBNYXAzIChmLCBuMSwgbjIsIG4zKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpIChOb2RlLnZhbHVlX2V4biBuMykpXG4gIHwgTWFwNCAoZiwgbjEsIG4yLCBuMywgbjQpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSAoTm9kZS52YWx1ZV9leG4gbjQpKVxuICB8IE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpKVxuICB8IE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KSlcbiAgfCBNYXA3IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpKVxuICB8IE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpKVxuICB8IE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KSlcbiAgfCBNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApKVxuICB8IE1hcDExIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSkpXG4gIHwgTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKSlcbiAgfCBNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpKVxuICB8IE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNCkpXG4gIHwgTWFwMTUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0LCBuMTUpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE1KSlcbiAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgKG1hdGNoIEV4cGVydC5iZWZvcmVfbWFpbl9jb21wdXRhdGlvbiBleHBlcnQgd2l0aFxuICAgICB8IGBJbnZhbGlkIC0+XG4gICAgICAgaW52YWxpZGF0ZV9ub2RlIG5vZGU7XG4gICAgICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdFxuICAgICB8IGBPayAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZXhwZXJ0LmYgKCkpKVxuXG5hbmQgY29weV9jaGlsZCA6IHR5cGUgYS4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkOmEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gfnBhcmVudCB+Y2hpbGQgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBjaGlsZFxuICB0aGVuIG1heWJlX2NoYW5nZV92YWx1ZSBwYXJlbnQgKE5vZGUudmFsdWVfZXhuIGNoaWxkKVxuICBlbHNlIChcbiAgICBpbnZhbGlkYXRlX25vZGUgcGFyZW50O1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHBhcmVudC5zdGF0ZSlcblxuYW5kIG1heWJlX2NoYW5nZV92YWx1ZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gYSAtPiB1bml0ID1cbiAgZnVuIG5vZGUgbmV3X3ZhbHVlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBsZXQgb2xkX3ZhbHVlX29wdCA9IG5vZGUudmFsdWVfb3B0IGluXG4gIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVfb3B0XG4gIHx8IG5vdFxuICAgICAgIChDdXRvZmYuc2hvdWxkX2N1dG9mZlxuICAgICAgICAgIG5vZGUuY3V0b2ZmXG4gICAgICAgICAgfm9sZF92YWx1ZTooVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlX29wdClcbiAgICAgICAgICB+bmV3X3ZhbHVlKVxuICB0aGVuIChcbiAgICBub2RlLnZhbHVlX29wdCA8LSBVb3B0LnNvbWUgbmV3X3ZhbHVlO1xuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIHQubnVtX25vZGVzX2NoYW5nZWQgPC0gdC5udW1fbm9kZXNfY2hhbmdlZCArIDE7XG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgbm9kZS5vbGRfdmFsdWVfb3B0IDwtIG9sZF92YWx1ZV9vcHQ7XG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlKTtcbiAgICBpZiBub2RlLm51bV9wYXJlbnRzID49IDFcbiAgICB0aGVuIChcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIG5vZGUubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZS5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIGluXG4gICAgICAgICAgIEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayB+Y2hpbGRfaW5kZXggZXhwZXJ0XG4gICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT5cbiAgICAgICAgICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZFxuICAgICAgICAgICAgIHVcbiAgICAgICAgICAgICB+Y2hpbGQ6bm9kZVxuICAgICAgICAgICAgIH5jaGlsZF9pbmRleDpub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KVxuICAgICAgICAgICAgIH5vbGRfdmFsdWVfb3B0XG4gICAgICAgICAgICAgfm5ld192YWx1ZVxuICAgICAgICAgfCBfIC0+ICgpKTtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgKCogV2UgZG9uJ3QgZG8gdGhlIFtjYW5fcmVjb21wdXRlX25vd10gb3B0aW1pemF0aW9uLiAgU2luY2UgbW9zdCBub2RlcyBvbmx5IGhhdmVcbiAgICAgICAgICAgb25lIHBhcmVudCwgaXQgaXMgbm90IHByb2JhYmx5IG5vdCBhIGJpZyBsb3NzLiAgSWYgd2UgZGlkIGl0IGFueXdheSwgd2UnZFxuICAgICAgICAgICBoYXZlIHRvIGJlIGNhcmVmdWwsIGJlY2F1c2Ugd2hpbGUgd2UgaXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIHBhcmVudHMsIHdlXG4gICAgICAgICAgIHdvdWxkIGV4ZWN1dGUgdGhlbSwgYW5kIGluIHBhcnRpY3VsYXIgd2UgY2FuIGV4ZWN1dGUgbGhzLWNoYW5nZSBub2RlcyB3aG8gY2FuXG4gICAgICAgICAgIGNoYW5nZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIFRoaW5rIGFib3V0OlxuXG4gICAgICAgICAgIHtbXG4gICAgICAgICAgICAgbGhzID4+PSBmdW4gYiAtPiBpZiBiIHRoZW4gbGhzID4+fCBGbi5pZCBlbHNlIGNvbnN0IGJcbiAgICAgICAgICAgXX1cblxuICAgICAgICAgICBJZiB0aGUgb3B0aW1pemF0aW9uIGtpY2tzIGluIHdoZW4gd2UgcHJvcGFnYXRlIGNoYW5nZSB0byB0aGUgcGFyZW50cyBvZiBbbGhzXVxuICAgICAgICAgICAod2hpY2ggY2hhbmdlcyBmcm9tIFt0cnVlXSB0byBbZmFsc2VdKSwgd2UgY291bGQgZXhlY3V0ZSB0aGUgW2xocy1jaGFuZ2VdXG4gICAgICAgICAgIGZpcnN0LCB3aGljaCB3b3VsZCBtYWtlIGRpc2Nvbm5lY3QgdGhlIFttYXBdIG5vZGUgZnJvbSBbbGhzXS4gIEFuZCB0aGVuIHdlXG4gICAgICAgICAgIHdvdWxkIGV4ZWN1dGUgdGhlIHNlY29uZCBjaGlsZCBvZiB0aGUgW2xoc10sIHdoaWNoIGRvZXNuJ3QgZXhpc3QgYW55bW9yZSBhbmRcbiAgICAgICAgICAgaW5jcmVtZW50YWwgd291bGQgc2VnZmF1bHQgKHRoZXJlIG1heSBiZSBhIGxlc3MgbmFpdmUgd2F5IG9mIG1ha2luZyB0aGlzIHdvcmtcbiAgICAgICAgICAgdGhvdWdoKS4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudClcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnRcbiAgICAgIGRvbmU7XG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIG5vZGUucGFyZW50MCBpblxuICAgICAgKG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICB8IEV4cGVydCBwIC0+XG4gICAgICAgICBsZXQgY2hpbGRfaW5kZXggPSBub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oMCkgaW5cbiAgICAgICAgIEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayB+Y2hpbGRfaW5kZXggcFxuICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZFxuICAgICAgICAgICB1XG4gICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgIH5jaGlsZF9pbmRleDpub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oMClcbiAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgfm5ld192YWx1ZVxuICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudClcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY2FuX3JlY29tcHV0ZV9ub3cgPVxuICAgICAgICAgIG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlbid0IHBhcmVudHMuICopXG4gICAgICAgICAgfCBBdCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBDb25zdCBfIHwgSW52YWxpZCB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBoYXZlIG1vcmUgdGhhbiBvbmUgY2hpbGQuICopXG4gICAgICAgICAgfCBBcnJheV9mb2xkIF9cbiAgICAgICAgICB8IE1hcDIgX1xuICAgICAgICAgIHwgTWFwMyBfXG4gICAgICAgICAgfCBNYXA0IF9cbiAgICAgICAgICB8IE1hcDUgX1xuICAgICAgICAgIHwgTWFwNiBfXG4gICAgICAgICAgfCBNYXA3IF9cbiAgICAgICAgICB8IE1hcDggX1xuICAgICAgICAgIHwgTWFwOSBfXG4gICAgICAgICAgfCBNYXAxMCBfXG4gICAgICAgICAgfCBNYXAxMSBfXG4gICAgICAgICAgfCBNYXAxMiBfXG4gICAgICAgICAgfCBNYXAxMyBfXG4gICAgICAgICAgfCBNYXAxNCBfXG4gICAgICAgICAgfCBNYXAxNSBfXG4gICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfXG4gICAgICAgICAgfCBFeHBlcnQgXyAtPiBmYWxzZVxuICAgICAgICAgICgqIFdlIGNhbiBpbW1lZGlhdGVseSByZWNvbXB1dGUgW3BhcmVudF0gaWYgbm8gb3RoZXIgbm9kZSBuZWVkcyB0byBiZSBzdGFibGVcbiAgICAgICAgICAgICBiZWZvcmUgY29tcHV0aW5nIGl0LiAgSWYgW3BhcmVudF0gaGFzIGEgc2luZ2xlIGNoaWxkIChpLmUuIFtub2RlXSksIHRoZW5cbiAgICAgICAgICAgICB0aGlzIGFtb3VudHMgdG8gY2hlY2tpbmcgdGhhdCBbcGFyZW50XSB3b24ndCBiZSBpbnZhbGlkYXRlZCwgaS5lLiB0aGF0XG4gICAgICAgICAgICAgW3BhcmVudF0ncyBzY29wZSBoYXMgYWxyZWFkeSBzdGFiaWxpemVkLiAqKVxuICAgICAgICAgIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEZyZWV6ZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgTWFwIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgICgqIEZvciB0aGVzZSwgd2UgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBcIl9jaGFuZ2VcIiBjaGlsZCBoYXMgYWxyZWFkeSBiZWVuXG4gICAgICAgICAgICAgZXZhbHVhdGVkIChpZiBuZWVkZWQpLiAgSWYgc28sIHRoaXMgYWxzbyBpbXBsaWVzOlxuXG4gICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgIG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgICAgXX0gKilcbiAgICAgICAgICB8IEJpbmRfbWFpbiBiIC0+IG5vZGUuaGVpZ2h0ID4gYi5saHNfY2hhbmdlLmhlaWdodFxuICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIGkgLT4gbm9kZS5oZWlnaHQgPiBpLnRlc3RfY2hhbmdlLmhlaWdodFxuICAgICAgICAgIHwgSm9pbl9tYWluIGogLT4gbm9kZS5oZWlnaHQgPiBqLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgIGluXG4gICAgICAgIGlmIGNhbl9yZWNvbXB1dGVfbm93XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkICsgMTtcbiAgICAgICAgICByZWNvbXB1dGUgcGFyZW50KVxuICAgICAgICBlbHNlIGlmIHBhcmVudC5oZWlnaHQgPD0gUmVjb21wdXRlX2hlYXAubWluX2hlaWdodCB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIElmIFtwYXJlbnQuaGVpZ2h0XSBpcyBbPD1dIHRoZSBoZWlnaHQgb2YgYWxsIG5vZGVzIGluIHRoZSByZWNvbXB1dGUgaGVhcFxuICAgICAgICAgICAgIChwb3NzaWJseSBiZWNhdXNlIHRoZSByZWNvbXB1dGUgaGVhcCBpcyBlbXB0eSksIHRoZW4gd2UgY2FuIHJlY29tcHV0ZVxuICAgICAgICAgICAgIFtwYXJlbnRdIGltbWVkaWF0ZWx5IGFuZCBzYXZlIGFkZGluZyBpdCB0byBhbmQgdGhlbiByZW1vdmluZyBpdCBmcm9tIHRoZVxuICAgICAgICAgICAgIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgICAgICAgIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0XG4gICAgICAgICAgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKTtcbiAgICAgICAgICBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbmVjZXNzYXJ5IHIgPVxuICBsZXQgKFQgbm9kZSkgPSBSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHIgaW5cbiAgaWYgZGVidWcgJiYgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwibm9kZSB1bmV4cGVjdGVkbHkgZG9lcyBub3QgbmVlZCB0byBiZSBjb21wdXRlZFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgcmVjb21wdXRlIG5vZGVcbjs7XG5cbmxldCB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCBwYWNrZWQgPSBTdGFjay5wb3BfZXhuIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRGlzYWxsb3dlZCAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSk7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gVW5saW5rZWQ7XG4gICAgbGV0IChUIGFsbF9vYnNlcnZlcnMpID0gVW9wdC52YWx1ZV9leG4gdC5hbGxfb2JzZXJ2ZXJzIGluXG4gICAgaWYgSW50ZXJuYWxfb2JzZXJ2ZXIuc2FtZSBpbnRlcm5hbF9vYnNlcnZlciBhbGxfb2JzZXJ2ZXJzXG4gICAgdGhlbiB0LmFsbF9vYnNlcnZlcnMgPC0gaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9hbGw7XG4gICAgSW50ZXJuYWxfb2JzZXJ2ZXIudW5saW5rIGludGVybmFsX29ic2VydmVyO1xuICAgIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZ1xuICBkb25lXG47O1xuXG5sZXQgZGlzYWxsb3dfZnV0dXJlX3VzZSBpbnRlcm5hbF9vYnNlcnZlciA9XG4gIGxldCB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+ICgpXG4gIHwgQ3JlYXRlZCAtPlxuICAgIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyAtIDE7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gVW5saW5rZWQ7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG4gIHwgSW5fdXNlIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBEaXNhbGxvd2VkO1xuICAgIFN0YWNrLnB1c2ggdC5kaXNhbGxvd2VkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcilcbjs7XG5cbmxldCBkaXNhbGxvd19maW5hbGl6ZWRfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmZpbmFsaXplZF9vYnNlcnZlcnMgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHRoZW4gZGlzYWxsb3dfZnV0dXJlX3VzZSBpbnRlcm5hbF9vYnNlcnZlclxuICBkb25lXG47O1xuXG5sZXQgb2JzZXJ2ZXJfZmluYWxpemVyIHQgPVxuICBzdGFnZSAoZnVuIG9ic2VydmVyIC0+XG4gICAgbGV0IGludGVybmFsX29ic2VydmVyID0gIW9ic2VydmVyIGluXG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmZpbmFsaXplZF9vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpKVxuOztcblxubGV0IGNyZWF0ZV9vYnNlcnZlciA/KHNob3VsZF9maW5hbGl6ZSA9IHRydWUpIChvYnNlcnZpbmcgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG9ic2VydmluZy5zdGF0ZSBpblxuICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgOiBfIEludGVybmFsX29ic2VydmVyLnQgPVxuICAgIHsgc3RhdGUgPSBDcmVhdGVkXG4gICAgOyBvYnNlcnZpbmdcbiAgICA7IG9uX3VwZGF0ZV9oYW5kbGVycyA9IFtdXG4gICAgOyBwcmV2X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9hbGwgPSBVb3B0Lm5vbmVcbiAgICA7IHByZXZfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX29ic2VydmluZyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgU3RhY2sucHVzaCB0Lm5ld19vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICBsZXQgb2JzZXJ2ZXIgPSByZWYgaW50ZXJuYWxfb2JzZXJ2ZXIgaW5cbiAgaWYgc2hvdWxkX2ZpbmFsaXplXG4gIHRoZW4gR2MuRXhwZXJ0LmFkZF9maW5hbGl6ZXJfZXhuIG9ic2VydmVyICh1bnN0YWdlIChvYnNlcnZlcl9maW5hbGl6ZXIgdCkpO1xuICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgKyAxO1xuICBvYnNlcnZlclxuOztcblxubGV0IGFkZF9uZXdfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBTdGFjay5sZW5ndGggdC5uZXdfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCBwYWNrZWQgPSBTdGFjay5wb3BfZXhuIHQubmV3X29ic2VydmVycyBpblxuICAgIGxldCBtb2R1bGUgUGFja2VkID0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkIGluXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBVbmxpbmtlZCAtPiAoKVxuICAgIHwgQ3JlYXRlZCAtPlxuICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gSW5fdXNlO1xuICAgICAgbGV0IG9sZF9hbGxfb2JzZXJ2ZXJzID0gdC5hbGxfb2JzZXJ2ZXJzIGluXG4gICAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX2FsbF9vYnNlcnZlcnNcbiAgICAgIHRoZW4gKFxuICAgICAgICBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbCA8LSBvbGRfYWxsX29ic2VydmVycztcbiAgICAgICAgUGFja2VkLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX2FsbF9vYnNlcnZlcnMpIChVb3B0LnNvbWUgcGFja2VkKSk7XG4gICAgICB0LmFsbF9vYnNlcnZlcnMgPC0gVW9wdC5zb21lIHBhY2tlZDtcbiAgICAgIGxldCBvYnNlcnZpbmcgPSBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgaW5cbiAgICAgIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nIGluXG4gICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICsgTGlzdC5sZW5ndGggaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzO1xuICAgICAgbGV0IG9sZF9vYnNlcnZlcnMgPSBvYnNlcnZpbmcub2JzZXJ2ZXJzIGluXG4gICAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nIDwtIG9sZF9vYnNlcnZlcnM7XG4gICAgICAgIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfb2JzZXJ2ZXJzKS5wcmV2X2luX29ic2VydmluZyA8LSBVb3B0LnNvbWUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgb2JzZXJ2aW5nLm9ic2VydmVycyA8LSBVb3B0LnNvbWUgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgICAoKiBCeSBhZGRpbmcgW2ludGVybmFsX29ic2VydmVyXSB0byBbb2JzZXJ2aW5nLm9ic2VydmVyc10sIHdlIG1heSBoYXZlIGFkZGVkXG4gICAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgdG8gW29ic2VydmluZ10uICBXZSBuZWVkIHRvIGhhbmRsZSBbb2JzZXJ2aW5nXSBhZnRlciB0aGlzXG4gICAgICAgICBzdGFiaWxpemF0aW9uIHRvIGdpdmUgdGhvc2UgaGFuZGxlcnMgYSBjaGFuY2UgdG8gcnVuLiAqKVxuICAgICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gb2JzZXJ2aW5nO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG9ic2VydmluZyk7XG4gICAgICBpZiBub3Qgd2FzX25lY2Vzc2FyeSB0aGVuIGJlY2FtZV9uZWNlc3Nhcnkgb2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZV9leG4gb2JzZXJ2ZXIgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+IE9ic2VydmVyLnZhbHVlX2V4biBvYnNlcnZlclxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBkdXJpbmcgc3RhYmlsaXphdGlvblwiXG4gICAgICBvYnNlcnZlclxuICAgICAgWyVzZXhwX29mOiBfIE9ic2VydmVyLnRdXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWUgb2JzZXJ2ZXIgPVxuICB0cnkgT2sgKG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlcikgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbjs7XG5cbmxldCBub2RlX29uX3VwZGF0ZSAodHlwZSBhKSAobm9kZSA6IGEgTm9kZS50KSB+ZiA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBOb2RlLm9uX3VwZGF0ZSBub2RlIChPbl91cGRhdGVfaGFuZGxlci5jcmVhdGUgZiB+YXQ6dC5zdGFiaWxpemF0aW9uX251bSk7XG4gIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGVcbjs7XG5cbmxldCBvYnNlcnZlcl9vbl91cGRhdGVfZXhuIG9ic2VydmVyIH5mID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gKE9ic2VydmVyLm9ic2VydmluZyBvYnNlcnZlcilcbjs7XG5cbmxldCBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICB0Lm51bV92YXJfc2V0cyA8LSB0Lm51bV92YXJfc2V0cyArIDE7XG4gIHZhci52YWx1ZSA8LSB2YWx1ZTtcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB2YXIuc2V0X2F0IHQuc3RhYmlsaXphdGlvbl9udW0gPCAwXG4gIHRoZW4gKFxuICAgIHZhci5zZXRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBsZXQgd2F0Y2ggPSB2YXIud2F0Y2ggaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSB3YXRjaCk7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgd2F0Y2ggJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHdhdGNoKVxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgd2F0Y2gpXG47O1xuXG5sZXQgc2V0X3ZhciB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIFJhaXNlZF9leG4ucmVyYWlzZV93aXRoX21lc3NhZ2VcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFwiY2Fubm90IHNldCB2YXIgLS0gc3RhYmlsaXphdGlvbiBwcmV2aW91c2x5IHJhaXNlZFwiXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBpZiBVb3B0LmlzX25vbmUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICAgIHRoZW4gU3RhY2sucHVzaCB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiAoVCB2YXIpO1xuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5zb21lIHZhbHVlXG47O1xuXG5sZXQgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC53ZWFrX2hhc2h0YmxzID4gMCBkb1xuICAgIGxldCAoVCB3ZWFrX2hhc2h0YmwpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC53ZWFrX2hhc2h0YmxzIGluXG4gICAgV2Vha19oYXNodGJsLnJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB3ZWFrX2hhc2h0YmxcbiAgZG9uZVxuOztcblxubGV0IHN0YWJpbGl6ZV9zdGFydCB0ID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXppbmc7XG4gIGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdDtcbiAgKCogSnVzdCBsaWtlIGZvciBiaW5kcywgd2UgYWRkIG5ldyBvYnNlcnZlcnMgYmVmb3JlIHJlbW92aW5nIGRpc2FsbG93ZWQgb2JzZXJ2ZXJzIHRvXG4gICAgIHBvdGVudGlhbGx5IGF2b2lkIHN3aXRjaGluZyB0aGUgb2JzZXJ2YWJpbGl0eSBvZiBzb21lIG5vZGVzIGJhY2sgYW5kIGZvcnRoLiAqKVxuICBhZGRfbmV3X29ic2VydmVycyB0O1xuICB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdDtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0IHN0YWJpbGl6ZV9lbmQgdCA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIE5vbmU7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gICgqIFdlIGluY3JlbWVudCBbdC5zdGFiaWxpemF0aW9uX251bV0gYmVmb3JlIGhhbmRsaW5nIHZhcmlhYmxlcyBzZXQgZHVyaW5nXG4gICAgIHN0YWJpbGl6YXRpb24sIHNvIHRoYXQgdGhleSBhcmUgdHJlYXRlZCBhcyBzZXQgZHVyaW5nIHRoZSBuZXcgc3RhYmlsaXphdGlvbiBjeWNsZS5cbiAgICAgQWxzbywgd2UgaW5jcmVtZW50IGJlZm9yZSBydW5uaW5nIG9uLXVwZGF0ZSBoYW5kbGVycywgdG8gYXZvaWQgcnVubmluZyBvbiB1cGRhdGVcbiAgICAgaGFuZGxlcnMgY3JlYXRlZCBkdXJpbmcgb24gdXBkYXRlIGhhbmRsZXJzLiAqKVxuICB0LnN0YWJpbGl6YXRpb25fbnVtIDwtIFN0YWJpbGl6YXRpb25fbnVtLmFkZDEgdC5zdGFiaWxpemF0aW9uX251bTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgdmFyKSA9IFN0YWNrLnBvcF9leG4gdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICBsZXQgdmFsdWUgPSBVb3B0LnZhbHVlX2V4biB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0Lm5vbmU7XG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlXG4gIGRvbmU7XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgbm9kZSkgPSBTdGFjay5wb3BfZXhuIHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIGZhbHNlO1xuICAgIGxldCBvbGRfdmFsdWUgPSBub2RlLm9sZF92YWx1ZV9vcHQgaW5cbiAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGxldCBub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCA9XG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgbm9kZSlcbiAgICAgIHRoZW4gSW52YWxpZGF0ZWRcbiAgICAgIGVsc2UgaWYgbm90IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKVxuICAgICAgdGhlbiBVbm5lY2Vzc2FyeVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBub2RlLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlXG4gICAgICAgIHRoZW4gTmVjZXNzYXJ5IG5ld192YWx1ZVxuICAgICAgICBlbHNlIENoYW5nZWQgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZSwgbmV3X3ZhbHVlKSlcbiAgICBpblxuICAgIFN0YWNrLnB1c2ggdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIChUIChub2RlLCBub2RlX3VwZGF0ZSkpXG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzO1xuICBsZXQgbm93ID0gdC5zdGFiaWxpemF0aW9uX251bSBpblxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycykgZG9cbiAgICBsZXQgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSkgPSBTdGFjay5wb3BfZXhuIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIE5vZGUucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBub2RlIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gTm90X3N0YWJpbGl6aW5nO1xuICByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdFxuOztcblxubGV0IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuID1cbiAgbGV0IHJhaXNlZCA9IFJhaXNlZF9leG4uY3JlYXRlIGV4biBpblxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkO1xuICBSYWlzZWRfZXhuLnJlcmFpc2UgcmFpc2VkXG47O1xuXG5sZXQgc3RhYmlsaXplIHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGFiaWxpemVcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gIHRyeVxuICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgIHdoaWxlIFJlY29tcHV0ZV9oZWFwLmxlbmd0aCByID4gMCBkb1xuICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgclxuICAgIGRvbmU7XG4gICAgc3RhYmlsaXplX2VuZCB0XG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG5cbjs7XG5cbm1vZHVsZSBTdGVwX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgS2VlcF9nb2luZ1xuICAgIHwgRG9uZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgdCA6IFN0ZXBfcmVzdWx0LnQgPVxuICB0cnlcbiAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgICAgS2VlcF9nb2luZ1xuICAgIHwgU3RhYmlsaXppbmcgLT5cbiAgICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgaWYgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgcjtcbiAgICAgICAgS2VlcF9nb2luZylcbiAgICAgIGVsc2UgKFxuICAgICAgICBzdGFiaWxpemVfZW5kIHQ7XG4gICAgICAgIERvbmUpXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGVwXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOmZhbHNlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICAgKCogSWYgc3RhYmlsaXphdGlvbiBoYXMgYWxyZWFkeSByYWlzZWQsIHRoZW4gW2V4bl0gaXMgbWVyZWx5IGEgbm90aWZpY2F0aW9uIG9mIHRoaXNcbiAgICAgICAgICBmYWN0LCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGl0c2VsZi4gIFdlIHNob3VsZCBqdXN0IHByb3BhZ2F0ZSBbZXhuXVxuICAgICAgICAgIGZvcndhcmQ7IGNhbGxpbmcgW3JhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uXSB3b3VsZCBzdG9yZSBbZXhuXSBhcyB0aGUgZXhjZXB0aW9uXG4gICAgICAgICAgdGhhdCBpbml0aWFsbHkgcmFpc2VkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgIHJhaXNlIGV4blxuICAgICB8IF8gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4pXG47O1xuXG5sZXQgY3JlYXRlX25vZGVfaW4gdCBjcmVhdGVkX2luIGtpbmQgPVxuICB0Lm51bV9ub2Rlc19jcmVhdGVkIDwtIHQubnVtX25vZGVzX2NyZWF0ZWQgKyAxO1xuICBOb2RlLmNyZWF0ZSB0IGNyZWF0ZWRfaW4ga2luZFxuOztcblxubGV0IGNyZWF0ZV9ub2RlIHQga2luZCA9IGNyZWF0ZV9ub2RlX2luIHQgdC5jdXJyZW50X3Njb3BlIGtpbmRcbmxldCBjcmVhdGVfbm9kZV90b3AgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCBTY29wZS50b3Aga2luZFxuXG5sZXQgY3JlYXRlX3ZhciB0ID8odXNlX2N1cnJlbnRfc2NvcGUgPSBmYWxzZSkgdmFsdWUgPVxuICBsZXQgc2NvcGUgPSBpZiB1c2VfY3VycmVudF9zY29wZSB0aGVuIHQuY3VycmVudF9zY29wZSBlbHNlIFNjb3BlLnRvcCBpblxuICBsZXQgd2F0Y2ggPSBjcmVhdGVfbm9kZV9pbiB0IHNjb3BlIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHZhciA9XG4gICAgeyBWYXIudmFsdWVcbiAgICA7IHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFVvcHQubm9uZVxuICAgIDsgc2V0X2F0ID0gdC5zdGFiaWxpemF0aW9uX251bVxuICAgIDsgd2F0Y2hcbiAgICB9XG4gIGluXG4gIE5vZGUuc2V0X2tpbmQgd2F0Y2ggKFZhciB2YXIpO1xuICB2YXJcbjs7XG5cbigqIEEgW2NvbnN0XSB2YWx1ZSBjb3VsZCBjb21lIGZyb20gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhbiBvdXRlciBiaW5kLiAgU28sIHdlIGNyZWF0ZSBhXG4gICBbY29uc3RdIG5vZGUgaW4gdGhlIGN1cnJlbnQgc2NvcGUsIG5vdCBpbiBbU2NvcGUudG9wXS4gKilcbmxldCBjb25zdCB0IGEgPSBjcmVhdGVfbm9kZSB0IChDb25zdCBhKVxubGV0IG1hcCAobiA6IF8gTm9kZS50KSB+ZiA9IGNyZWF0ZV9ub2RlIG4uc3RhdGUgKE1hcCAoZiwgbikpXG5sZXQgbWFwMiAobjEgOiBfIE5vZGUudCkgbjIgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMiAoZiwgbjEsIG4yKSlcblxubGV0IGJvdGggKG4xIDogXyBOb2RlLnQpIChuMiA6IF8gTm9kZS50KSA9XG4gIG1hdGNoIG4xLCBuMiB3aXRoXG4gIHwgeyBraW5kID0gQ29uc3QgYTsgXyB9LCB7IGtpbmQgPSBDb25zdCBiOyBfIH0gLT4gY29uc3QgbjEuc3RhdGUgKGEsIGIpXG4gIHwgXyAtPiBtYXAyIG4xIG4yIH5mOlR1cGxlMi5jcmVhdGVcbjs7XG5cbmxldCBtYXAzIChuMSA6IF8gTm9kZS50KSBuMiBuMyB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAzIChmLCBuMSwgbjIsIG4zKSlcbmxldCBtYXA0IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkpXG5cbmxldCBtYXA1IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpKVxuOztcblxubGV0IG1hcDYgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpKVxuOztcblxubGV0IG1hcDcgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSlcbjs7XG5cbmxldCBtYXA4IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpKVxuOztcblxubGV0IG1hcDkgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpKVxuOztcblxubGV0IG1hcDEwIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkpXG47O1xuXG5sZXQgbWFwMTEgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSlcbjs7XG5cbmxldCBtYXAxMiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpKVxuOztcblxubGV0IG1hcDEzIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykpXG47O1xuXG5sZXQgbWFwMTQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkpXG47O1xuXG5sZXQgbWFwMTUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgbjE1IH5mID1cbiAgY3JlYXRlX25vZGVcbiAgICBuMS5zdGF0ZVxuICAgIChNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkpXG47O1xuXG5sZXQgcHJlc2VydmVfY3V0b2ZmIH4oaW5wdXQgOiBfIE5vZGUudCkgfm91dHB1dCA9XG4gIE5vZGUuc2V0X2N1dG9mZlxuICAgIG91dHB1dFxuICAgIChDdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZTpfIH5uZXdfdmFsdWU6XyAtPlxuICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmVxdWFsIGlucHV0LmNoYW5nZWRfYXQgb3V0cHV0LmNoYW5nZWRfYXQpKVxuOztcblxubGV0IGRlcGVuZF9vbiBpbnB1dCB+ZGVwZW5kX29uID1cbiAgbGV0IG91dHB1dCA9IG1hcDIgaW5wdXQgZGVwZW5kX29uIH5mOihmdW4gYSBfIC0+IGEpIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbmVjZXNzYXJ5X2lmX2FsaXZlIGlucHV0ID1cbiAgKCogSWYgW291dHB1dF0gaXMgYWxpdmUsIHRoZW4gW29ic2VydmVyXSBpcyBhbGl2ZSwgdGhlbiBbaW5wdXRdIGlzIG5lY2Vzc2FyeS4gIElmXG4gICAgIFtvdXRwdXRdIGlzIHVubmVjZXNzYXJ5LCB0aGVuIFtvdXRwdXRdIGlzIG5vdCBhIHBhcmVudCBvZiBbaW5wdXRdLCBhbmQgdGh1c1xuICAgICBbb3V0cHV0XSdzIGxpdmVuZXNzIGlzIGRlcGVuZGVudCBzb2xlbHkgb24gdXNlciBjb2RlLiAgQW5kIGluIHBhcnRpY3VsYXIsIGlmIFtvdXRwdXRdXG4gICAgIGRpZXMsIHRoZW4gW29ic2VydmVyXSB3aWxsIGJlIGZpbmFsaXplZCwgYW5kIHRoZW4gdXBvbiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLFxuICAgICBbaW5wdXRdIHdpbGwgYmVjb21lIHVubmVjZXNzYXJ5IChhdCBsZWFzdCB3aXRoIHJlc3BlY3QgdG8gW291dHB1dF0pLiAqKVxuICBsZXQgb2JzZXJ2ZXIgPSBjcmVhdGVfb2JzZXJ2ZXIgaW5wdXQgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgbWFwIGlucHV0IH5mOihmdW4gYSAtPlxuICAgICAgR2Mua2VlcF9hbGl2ZSBvYnNlcnZlcjtcbiAgICAgIGEpXG4gIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgYmluZCAobGhzIDogXyBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBsaHMuc3RhdGUgaW5cbiAgbGV0IGxoc19jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGJpbmQgPVxuICAgIHsgQmluZC5tYWluXG4gICAgOyBmXG4gICAgOyBsaHNcbiAgICA7IGxoc19jaGFuZ2VcbiAgICA7IHJocyA9IFVvcHQubm9uZVxuICAgIDsgcmhzX3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gICgqIFdlIHNldCBbbGhzX2NoYW5nZV0gdG8gbmV2ZXIgY3V0b2ZmIHNvIHRoYXQgd2hlbmV2ZXIgW2xoc10gY2hhbmdlcywgW21haW5dIGlzXG4gICAgIHJlY29tcHV0ZWQuICBUaGlzIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgY2FzZXMgd2hlcmUgW2ZdIHJldHVybnMgYW4gZXhpc3Rpbmcgc3RhYmxlXG4gICAgIG5vZGUsIGluIHdoaWNoIGNhc2UgdGhlIFtsaHNfY2hhbmdlXSB3b3VsZCBiZSB0aGUgb25seSB0aGluZyBjYXVzaW5nIFttYWluXSB0byBiZVxuICAgICBzdGFsZS4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBiaW5kLnJoc19zY29wZSA8LSBCaW5kIGJpbmQ7XG4gIE5vZGUuc2V0X2tpbmQgbGhzX2NoYW5nZSAoQmluZF9saHNfY2hhbmdlIGJpbmQpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKEJpbmRfbWFpbiBiaW5kKTtcbiAgbWFpblxuOztcblxubGV0IGJpbmQyIG4xIG4yIH5mID1cbiAgYmluZCAobWFwMiBuMSBuMiB+ZjooZnVuIHYxIHYyIC0+IHYxLCB2MikpIH5mOihmdW4gKHYxLCB2MikgLT4gZiB2MSB2Milcbjs7XG5cbmxldCBiaW5kMyBuMSBuMiBuMyB+ZiA9XG4gIGJpbmQgKG1hcDMgbjEgbjIgbjMgfmY6KGZ1biB2MSB2MiB2MyAtPiB2MSwgdjIsIHYzKSkgfmY6KGZ1biAodjEsIHYyLCB2MykgLT4gZiB2MSB2MiB2Mylcbjs7XG5cbmxldCBiaW5kNCBuMSBuMiBuMyBuNCB+ZiA9XG4gIGJpbmRcbiAgICAobWFwNCBuMSBuMiBuMyBuNCB+ZjooZnVuIHYxIHYyIHYzIHY0IC0+IHYxLCB2MiwgdjMsIHY0KSlcbiAgICB+ZjooZnVuICh2MSwgdjIsIHYzLCB2NCkgLT4gZiB2MSB2MiB2MyB2NClcbjs7XG5cbmxldCBqb2luIChsaHMgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgam9pbiA9IHsgSm9pbi5saHM7IGxoc19jaGFuZ2U7IHJocyA9IFVvcHQubm9uZTsgbWFpbiB9IGluXG4gIE5vZGUuc2V0X2N1dG9mZiBsaHNfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChKb2luX2xoc19jaGFuZ2Ugam9pbik7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoSm9pbl9tYWluIGpvaW4pO1xuICBtYWluXG47O1xuXG5sZXQgaWZfICh0ZXN0IDogXyBOb2RlLnQpIH50aGVuXyB+ZWxzZV8gPVxuICBsZXQgdCA9IHRlc3Quc3RhdGUgaW5cbiAgbGV0IHRlc3RfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBpZl90aGVuX2Vsc2UgPVxuICAgIHsgSWZfdGhlbl9lbHNlLnRlc3Q7IHRoZW5fOyBlbHNlXzsgdGVzdF9jaGFuZ2U7IG1haW47IGN1cnJlbnRfYnJhbmNoID0gVW9wdC5ub25lIH1cbiAgaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIHRlc3RfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCB0ZXN0X2NoYW5nZSAoSWZfdGVzdF9jaGFuZ2UgaWZfdGhlbl9lbHNlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlKTtcbiAgbWFpblxuOztcblxubGV0IGxhenlfZnJvbV9mdW4gdCB+ZiA9XG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBMYXp5LmZyb21fZnVuIChmdW4gKCkgLT4gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYpXG47O1xuXG5sZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IDRcblxubGV0IG1lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgKCogSGVyZSdzIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB3ZSBnZXQgW3QuY3VycmVudF9zY29wZV0gaGVyZSwgYW5kIHRoZW4gY2FsbFxuICAgICBbd2l0aGluX3Njb3BlXSBiZWxvdy4gIENvbnNpZGVyIHRoaXMgKGltcG9zc2libGUpIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICBbbWVtb2l6ZV9mdW5fYnlfa2V5XTpcblxuICAgICB7W1xuICAgICAgIGxldCB0YWJsZSA9XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0X2V4biBoYXNoYWJsZVxuICAgICAgICAgICAoTGlzdC5tYXAgYWxsX3Bvc3NpYmxlX2FfdmFsdWVzIH5mOihmdW4gYSAtPiAocHJvamVjdF9rZXkgYSwgZiBhKSlcbiAgICAgICBpblxuICAgICAgIHN0YWdlIChmdW4ga2V5IC0+IEhhc2h0YmwuZmluZF9leG4gdGFibGUgKHByb2plY3Rfa2V5IGEpKVxuICAgICBdfVxuXG4gICAgIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCB1c2UgW2N1cnJlbnRfc2NvcGVdIG9yIFt3aXRoaW5fc2NvcGVdLiAgQWxsIGNhbGxzIHRvIFtmXVxuICAgICBuYXR1cmFsbHkgb2NjdXIgaW4gW3QuY3VycmVudF9zY29wZV0uXG5cbiAgICAgU3VjaCBhbiBpbXBsZW1lbnRhdGlvbiBpcyBpbXBvc3NpYmxlIGJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgW2FsbF9wb3NzaWJsZV9hX3ZhbHVlc10uXG4gICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyB1c2VzIFt3aXRoaW5fc2NvcGVdIHRvIGNhbGwgW2YgYV0gaW4gdGhlIHNjb3BlIHRoYXQgd2FzXG4gICAgIGN1cnJlbnQgYXQgdGhlIHBvaW50IG9mIHRoZSBjYWxsIHRvIFttZW1vaXplX2Z1bl9ieV9rZXldIHNvIHRoYXQgd2UgY2FuIHRoaW5rIG9mIHRoZVxuICAgICBbdGFibGVdIGFzIGhhdmluZyBiZWVuIGNyZWF0ZWQgdGhlbiwgd2hlbiBpdCBpbiByZWFsaXR5IGlzIGNyZWF0ZWQgb24tZGVtYW5kLiAqKVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gSGFzaHRibC5jcmVhdGUgaGFzaGFibGUgfnNpemU6aW5pdGlhbF9zaXplIGluXG4gIHN0YWdlIChmdW4gYSAtPlxuICAgIGxldCBrZXkgPSBwcm9qZWN0X2tleSBhIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIEhhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubGV0IGFycmF5X2ZvbGQgdCBjaGlsZHJlbiB+aW5pdCB+ZiA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBjcmVhdGVfbm9kZSB0IChBcnJheV9mb2xkIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSlcbjs7XG5cbmxldCBhbGwgdCB0cyA9IGFycmF5X2ZvbGQgdCAoQXJyYXkub2ZfbGlzdF9yZXYgdHMpIH5pbml0OltdIH5mOihmdW4gYWMgYSAtPiBhIDo6IGFjKVxuXG5tb2R1bGUgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlID0gVW5vcmRlcmVkX2FycmF5X2ZvbGQuVXBkYXRlXG5cbmxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgdFxuICAgICAgPyhmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID0gSW50Lm1heF92YWx1ZSlcbiAgICAgIGNoaWxkcmVuXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH51cGRhdGVcbiAgPVxuICBpZiBBcnJheS5sZW5ndGggY2hpbGRyZW4gPSAwXG4gIHRoZW4gY29uc3QgdCBpbml0XG4gIGVsc2UgaWYgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA8PSAwXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwidW5vcmRlcmVkX2FycmF5X2ZvbGQgZ290IG5vbi1wb3NpdGl2ZSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXCJcbiAgICAgIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgIFslc2V4cF9vZjogaW50XVxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIE5vZGUuc2V0X2tpbmRcbiAgICAgIG1haW5cbiAgICAgIChVbm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNyZWF0ZVxuICAgICAgICAgICAgfmluaXRcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgICAgICAgfmNoaWxkcmVuXG4gICAgICAgICAgICB+bWFpbikpO1xuICAgIG1haW4pXG47O1xuXG5sZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gIGxldCBmIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgKyAxXG4gICAgfCBTb21lIHggLT4gZiBhY2N1bSB4LCBudW1faW52YWxpZFxuICBpblxuICBsZXQgZl9pbnZlcnNlIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgLSAxXG4gICAgfCBTb21lIHggLT4gZl9pbnZlcnNlIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIG1hcFxuICAgICh1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgIHRcbiAgICAgICB0c1xuICAgICAgIH5pbml0Oihpbml0LCAwKVxuICAgICAgIH5mXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIGZfaW52ZXJzZSlcbiAgICAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcylcbiAgICB+ZjooZnVuIChhY2N1bSwgbnVtX2ludmFsaWQpIC0+IGlmIG51bV9pbnZhbGlkID0gMCB0aGVuIFNvbWUgYWNjdW0gZWxzZSBOb25lKVxuOztcblxubGV0IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+ayA9XG4gIGxldCBib29sX3RvX2ludCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwIGluXG4gIG1hcFxuICAgIH5mOihmdW4gaSAtPiBpID49IGspXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIG5vZGVzXG4gICAgICAgfmluaXQ6MFxuICAgICAgIH5mOihmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSArIGJvb2xfdG9faW50IGIpXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIChmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSAtIGJvb2xfdG9faW50IGIpKSlcbjs7XG5cbmxldCBleGlzdHMgdCBub2RlcyA9IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+azoxXG5sZXQgZm9yX2FsbCB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOihBcnJheS5sZW5ndGggbm9kZXMpXG5cbmxldCBzdW0gdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBub2RlcyB+emVybyB+YWRkIH5zdWIgPVxuICB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+dXBkYXRlOihGX2ludmVyc2Ugc3ViKVxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgb3B0X3N1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+Zl9pbnZlcnNlOnN1YlxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgc3VtX2ludCB0IG5vZGVzID0gc3VtIHQgbm9kZXMgfnplcm86MCB+YWRkOiggKyApIH5zdWI6KCAtIClcblxubGV0IHN1bV9mbG9hdCB0IG5vZGVzID1cbiAgc3VtXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfnplcm86MC5cbiAgICB+YWRkOiggKy4gKVxuICAgIH5zdWI6KCAtLiApXG4gICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6KEFycmF5Lmxlbmd0aCBub2Rlcylcbjs7XG5cbmxldCBzZXRfZnJlZXplIChub2RlIDogXyBOb2RlLnQpIH5jaGlsZCB+b25seV9mcmVlemVfd2hlbiA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChTY29wZS5pc190b3Agbm9kZS5jcmVhdGVkX2luKTtcbiAgKCogQnkgbWFraW5nIFtub2RlLmtpbmRdIGJlIFtGcmVlemVdLCB3ZSBhcmUgbWFraW5nIFtOb2RlLmlzX25lY2Vzc2FyeSBub2RlXS4gKilcbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIGluXG4gIE5vZGUuc2V0X2tpbmQgbm9kZSAoRnJlZXplIHsgbWFpbiA9IG5vZGU7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuIH0pO1xuICBpZiB3YXNfbmVjZXNzYXJ5XG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpLaW5kLmZyZWV6ZV9jaGlsZF9pbmRleFxuICBlbHNlIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZVxuOztcblxubGV0IGZyZWV6ZSAoY2hpbGQgOiBfIE5vZGUudCkgfm9ubHlfZnJlZXplX3doZW4gPVxuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCBub2RlID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICBzZXRfZnJlZXplIG5vZGUgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuO1xuICBub2RlXG47O1xuXG5sZXQgYXQgY2xvY2sgdGltZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChub3cgY2xvY2spXG4gIHRoZW4gY29uc3QgdCBCZWZvcmVfb3JfYWZ0ZXIuQWZ0ZXJcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBsZXQgYXQgPSB7IEF0LmF0ID0gdGltZTsgbWFpbjsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gICAgTm9kZS5zZXRfa2luZCBtYWluIChBdCBhdCk7XG4gICAgYXQuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdDp0aW1lIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0IGF0KSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBhZnRlciBjbG9jayBzcGFuID0gYXQgY2xvY2sgKFRpbWVfbnMuYWRkIChub3cgY2xvY2spIHNwYW4pXG5cbmxldCBuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCAoY2xvY2sgOiBDbG9jay50KSB+YmFzZSB+aW50ZXJ2YWwgPVxuICBsZXQgYWZ0ZXIgPSBub3cgY2xvY2sgaW5cbiAgbGV0IGF0ID0gVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgfmNhbl9lcXVhbF9hZnRlcjpmYWxzZSAoKSBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCBhZnRlcik7XG4gIGF0XG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzIChjbG9jayA6IENsb2NrLnQpIGludGVydmFsID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDwgKSBpbnRlcnZhbCAoVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiBjbG9jay50aW1pbmdfd2hlZWwpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYXRfaW50ZXJ2YWxzIGdvdCB0b28gc21hbGwgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdO1xuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmFzZSA9IG5vdyBjbG9jayBpblxuICBsZXQgYXRfaW50ZXJ2YWxzID0geyBBdF9pbnRlcnZhbHMubWFpbjsgYmFzZTsgaW50ZXJ2YWw7IGFsYXJtID0gQWxhcm0ubnVsbDsgY2xvY2sgfSBpblxuICBOb2RlLnNldF9raW5kIG1haW4gKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpO1xuICAoKiBbbWFpbiA6IHVuaXQgTm9kZS50XSwgc28gd2UgbWFrZSBpdCBuZXZlciBjdXRvZmYgc28gaXQgY2hhbmdlcyBlYWNoIHRpbWUgaXQgaXNcbiAgICAgcmVjb21wdXRlZC4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIG1haW4gQ3V0b2ZmLm5ldmVyO1xuICBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgPC0gYWRkX2FsYXJtXG4gICAgICAgY2xvY2tcbiAgICAgICB+YXQ6KG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IGNsb2NrIH5iYXNlIH5pbnRlcnZhbClcbiAgICAgICAoQWxhcm1fdmFsdWUuY3JlYXRlIChBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzKSk7XG4gIG1haW5cbjs7XG5cbmxldCBzbmFwc2hvdCBjbG9jayB2YWx1ZV9hdCB+YXQgfmJlZm9yZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSBhdCAobm93IGNsb2NrKVxuICB0aGVuXG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCAobm93IGNsb2NrKVxuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3IgXCJjYW5ub3QgdGFrZSBzbmFwc2hvdCBpbiB0aGUgcGFzdFwiIGF0IFslc2V4cF9vZjogVGltZV9ucy50XVxuICAgIGVsc2UgT2sgKGZyZWV6ZSB2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooRm4uY29uc3QgdHJ1ZSkpXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBzbmFwc2hvdCA9IHsgU25hcHNob3QubWFpbjsgYXQ7IGJlZm9yZTsgdmFsdWVfYXQ7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKFNuYXBzaG90IHNuYXBzaG90KTtcbiAgICAoKiBVbmxpa2Ugb3RoZXIgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMsIGEgc25hcHNob3QgaXMgY3JlYXRlZCBpbiBbU2NvcGUudG9wXSBhbmRcbiAgICAgICBjYW5ub3QgYmUgaW52YWxpZGF0ZWQgYnkgaXRzIHNjb3BlLiAgVGh1cywgdGhlcmUgaXMgbm8gbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICAgICAgIGFsYXJtIHRoYXQgaXMgYWRkZWQsIGJlY2F1c2UgaXQgd2lsbCBuZXZlciBuZWVkIHRvIGJlIHJlbW92ZWQgZWFybHkuICopXG4gICAgaWdub3JlIChhZGRfYWxhcm0gY2xvY2sgfmF0IChBbGFybV92YWx1ZS5jcmVhdGUgKFNuYXBzaG90IHNuYXBzaG90KSkgOiBBbGFybS50KTtcbiAgICBPayBtYWluKVxuOztcblxubGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gY2xvY2sgY2hpbGQgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHN0ZXBfZnVuY3Rpb25fbm9kZSA9XG4gICAgeyBTdGVwX2Z1bmN0aW9uX25vZGUubWFpblxuICAgIDsgdmFsdWUgPSBVb3B0Lm5vbmVcbiAgICA7IGNoaWxkID0gVW9wdC5zb21lIGNoaWxkXG4gICAgOyBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdXBjb21pbmdfc3RlcHMgPSBTZXF1ZW5jZS5lbXB0eVxuICAgIDsgYWxhcm0gPSBBbGFybS5udWxsXG4gICAgOyBhbGFybV92YWx1ZSA9IE9iai5tYWdpYyBOb25lICgqIHNldCBiZWxvdyAqKVxuICAgIDsgY2xvY2tcbiAgICB9XG4gIGluXG4gIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSA8LSBBbGFybV92YWx1ZS5jcmVhdGUgKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSk7XG4gIG1haW5cbjs7XG5cbmxldCBtYWtlX3N0YWxlIChub2RlIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSBTdGFiaWxpemF0aW9uX251bS5ub25lO1xuICAoKiBmb3JjZSB0aGUgbm9kZSB0byBiZSBzdGFsZSAqKVxuICBpZiBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUgJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IGFkdmFuY2VfY2xvY2sgKGNsb2NrIDogQ2xvY2sudCkgfnRvXyA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJhZHZhbmNlX2Nsb2NrXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgY2xvY2spXG4gIHRoZW4gKFxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIGNsb2NrLm5vdyB0b187XG4gICAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgY2xvY2sudGltaW5nX3doZWVsIH50b18gfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgY2xvY2sudGltaW5nX3doZWVsIH5oYW5kbGVfZmlyZWQ6Y2xvY2suaGFuZGxlX2ZpcmVkO1xuICAgIHdoaWxlIFVvcHQuaXNfc29tZSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgZG9cbiAgICAgIGxldCBhbGFybV92YWx1ZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBpblxuICAgICAgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIDwtIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQ7XG4gICAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIFVvcHQubm9uZTtcbiAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICB8IEF0IHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIGlmIE5vZGUuaXNfdmFsaWQgbWFpblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBOb2RlLnNldF9raW5kIG1haW4gKENvbnN0IEFmdGVyKTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IEF0X2ludGVydmFscyAoeyBtYWluOyBiYXNlOyBpbnRlcnZhbDsgXyB9IGFzIGF0X2ludGVydmFscykgLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGF0X2ludGVydmFscy5hbGFybVxuICAgICAgICAgIDwtIGFkZF9hbGFybVxuICAgICAgICAgICAgICAgY2xvY2tcbiAgICAgICAgICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgICAgICAgICAgYWxhcm1fdmFsdWU7XG4gICAgICAgICAgbWFrZV9zdGFsZSBtYWluKVxuICAgICAgfCBTbmFwc2hvdCB7IG1haW47IHZhbHVlX2F0OyBfIH0gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbWFpbik7XG4gICAgICAgIHNldF9mcmVlemUgbWFpbiB+Y2hpbGQ6dmFsdWVfYXQgfm9ubHlfZnJlZXplX3doZW46KGZ1biBfIC0+IHRydWUpO1xuICAgICAgICBtYWtlX3N0YWxlIG1haW5cbiAgICAgIHwgU3RlcF9mdW5jdGlvbiB7IG1haW47IF8gfSAtPiBpZiBOb2RlLmlzX3ZhbGlkIG1haW4gdGhlbiBtYWtlX3N0YWxlIG1haW5cbiAgICBkb25lO1xuICAgIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQpXG47O1xuXG5sZXQgY3JlYXRlX2Nsb2NrIHQgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ID1cbiAgbGV0IHRpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzp0aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCBpblxuICBsZXQgcmVjIGNsb2NrIDogQ2xvY2sudCA9XG4gICAgeyBub3cgPSBjcmVhdGVfdmFyIHQgc3RhcnRcbiAgICA7IGhhbmRsZV9maXJlZFxuICAgIDsgZmlyZWRfYWxhcm1fdmFsdWVzID0gVW9wdC5ub25lXG4gICAgOyB0aW1pbmdfd2hlZWxcbiAgICB9XG4gIGFuZCBoYW5kbGVfZmlyZWQgYWxhcm0gPVxuICAgIGxldCBhbGFybV92YWx1ZSA9IFRpbWluZ193aGVlbC5BbGFybS52YWx1ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm0gaW5cbiAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcztcbiAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gVW9wdC5zb21lIGFsYXJtX3ZhbHVlXG4gIGluXG4gIGNsb2NrXG47O1xuXG5sZXQgY3JlYXRlIChtb2R1bGUgQ29uZmlnIDogQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGxldCBhZGp1c3RfaGVpZ2h0c19oZWFwID0gQWRqdXN0X2hlaWdodHNfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgcmVjb21wdXRlX2hlYXAgPSBSZWNvbXB1dGVfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgdCA9XG4gICAgeyBzdGF0dXMgPSBOb3Rfc3RhYmlsaXppbmdcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSBDb25maWcuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgIDsgc3RhYmlsaXphdGlvbl9udW0gPSBTdGFiaWxpemF0aW9uX251bS56ZXJvXG4gICAgOyBjdXJyZW50X3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgOyByZWNvbXB1dGVfaGVhcFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG51bV9hY3RpdmVfb2JzZXJ2ZXJzID0gMFxuICAgIDsgYWxsX29ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG5ld19vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG9ubHlfaW5fZGVidWcgPSBPbmx5X2luX2RlYnVnLmNyZWF0ZSAoKVxuICAgIDsgd2Vha19oYXNodGJscyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA9IGZhbHNlXG4gICAgOyBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPSAwXG4gICAgOyBudW1fbm9kZXNfY2hhbmdlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19pbnZhbGlkYXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19jcmVhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA9IDBcbiAgICA7IG51bV92YXJfc2V0cyA9IDBcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIGxldCB0YWJsZSA9IFdlYWtfaGFzaHRibC5jcmVhdGUgfnNpemU6aW5pdGlhbF9zaXplIGhhc2hhYmxlIGluXG4gIGxldCBwYWNrZWQgPSBQYWNrZWRfd2Vha19oYXNodGJsLlQgdGFibGUgaW5cbiAgV2Vha19oYXNodGJsLnNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0YWJsZSB+dGhyZWFkX3NhZmVfZjooZnVuICgpIC0+XG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LndlYWtfaGFzaHRibHMgcGFja2VkKTtcbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBXZWFrX2hhc2h0YmwuZmluZCB0YWJsZSBrZXkgd2l0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBiID0gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmY6KGZ1biAoKSAtPiBmIGEpIGluXG4gICAgICBXZWFrX2hhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAoKiBHaXZlbiB0aGF0IGludmFsaWQgbm9kZSBhcmUgYXQgYXR0ZW1wdCBhdCBhdm9pZGluZyBicmVha2luZyB0aGUgZW50aXJlIGluY3JlbWVudGFsXG4gICAgIGNvbXB1dGF0aW9uIG9uIHByb2JsZW1zLCBsZXQncyBqdXN0IGlnbm9yZSBhbnkgb3BlcmF0aW9uIG9uIGFuIGludmFsaWQgaW5jcmVtZW50YWxcbiAgICAgcmF0aGVyIHRoYW4gcmFpc2luZy4gKilcbiAgbGV0IGV4cGVydF9raW5kX29mX25vZGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgfCBFeHBlcnQgZSAtPiBVb3B0LnNvbWUgZVxuICAgIHwgSW52YWxpZCAtPiBVb3B0Lm5vbmVcbiAgICB8IGtpbmQgLT4gcmFpc2VfcyBbJXNleHAgXCJ1bmV4cGVjdGVkIGtpbmQgZm9yIGV4cGVydCBub2RlXCIsIChraW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPVxuICAgIGxldCBlID0gRXhwZXJ0LmNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgaW5cbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9ub2RlIHN0YXRlIChFeHBlcnQgZSkgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGlmIE9wdGlvbi5pc19zb21lIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZVxuICAgICAgdGhlblxuICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICA8LSBUIG5vZGUgOjogc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lID1cbiAgICBtYXRjaCBzdGF0ZS5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIGR1cmluZyBzdGFiaWxpemF0aW9uXCIgOiBzdHJpbmcpXVxuICAgIHwgU29tZSBjdXJyZW50IC0+IGN1cnJlbnRcbiAgOztcblxuICAoKiBOb3RlIHRoYXQgdGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBub3Qgc3ltbWV0cmljIG9mIG9uZSBhbm90aGVyOiBpbiBbbGV0IHkgPVxuICAgICBtYXAgeF0sIFt4XSBpcyBhbHdheXMgYSBjaGlsZCBvZiBbeV0gKGFzc3VtaW5nIFt4XSBkb2Vzbid0IGJlY29tZSBpbnZhbGlkKSBidXQgW3ldIGluXG4gICAgIG9ubHkgYSBwYXJlbnQgb2YgW3hdIGlmIHkgaXMgbmVjZXNzYXJ5LiAqKVxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBuYW1lID1cbiAgICBsZXQgKFQgY3VycmVudCkgPSBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lIGluXG4gICAgaWYgbm90IChOb2RlLmhhc19jaGlsZCBub2RlIH5jaGlsZDpjdXJyZW50KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBwYXJlbnQgbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX3BhcmVudCB+cGFyZW50OmN1cnJlbnQgbm9kZSlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgb24gY2hpbGRyZW4gbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcIm1ha2Vfc3RhbGVcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIG1hdGNoIEV4cGVydC5tYWtlX3N0YWxlIGUgd2l0aFxuICAgICAgfCBgQWxyZWFkeV9zdGFsZSAtPiAoKVxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgOztcblxuICBsZXQgaW52YWxpZGF0ZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcImludmFsaWRhdGVcIjtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBzdGF0ZVxuICA7O1xuXG4gIGxldCBhZGRfZGVwZW5kZW5jeSAobm9kZSA6IF8gTm9kZS50KSAoZGVwIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gICAgICAgICYmIG5vdFxuICAgICAgICAgICAgIChMaXN0Lm1lbVxuICAgICAgICAgICAgICAgIH5lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGVcbiAgICAgICAgICAgICAgICAoVCBub2RlKSlcbiAgICAgICAgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiYWRkX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIGxldCBuZXdfY2hpbGRfaW5kZXggPSBFeHBlcnQuYWRkX2NoaWxkX2VkZ2UgZSAoRSBkZXApIGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBldmVuIGlmIHdlIGFyZSBydW5uaW5nIGluIGEgY2hpbGQgb2ZcbiAgICAgICAgIFtub2RlXSwgYmVjYXVzZSB3ZSBjb3VsZCBiZSBydW5uaW5nIGR1ZSB0byBhIHBhcmVudCBvdGhlciB0aGFuIFtub2RlXSBtYWtpbmcgdXNcbiAgICAgICAgIG5lY2Vzc2FyeS4gKilcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcGFyZW50IH5jaGlsZDpkZXAuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpuZXdfY2hpbGRfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSkpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChlZGdlIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcInJlbW92ZV9kZXBlbmRlbmN5XCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW5cbiAgICAgICAgIFthZGRfZGVwZW5kZW5jeV0gKilcbiAgICAgIGxldCBlZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gZWRnZS5pbmRleCBpblxuICAgICAgbGV0IChFIGxhc3RfZWRnZSkgPSBFeHBlcnQubGFzdF9jaGlsZF9lZGdlX2V4biBlIGluXG4gICAgICBsZXQgbGFzdF9lZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gbGFzdF9lZGdlLmluZGV4IGluXG4gICAgICBpZiBlZGdlX2luZGV4IDw+IGxhc3RfZWRnZV9pbmRleFxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIE5vZGUuc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZFxuICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgfmNoaWxkMTplZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXhcbiAgICAgICAgICAgIH5jaGlsZDI6bGFzdF9lZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgRXhwZXJ0LnN3YXBfY2hpbGRyZW4gZSB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXggfmNoaWxkX2luZGV4MjpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpO1xuICAgICAgRXhwZXJ0LnJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIGU7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSBub2RlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVfY2hpbGQgfmNoaWxkOmVkZ2UuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgZWRnZS5jaGlsZCkgdGhlbiBFeHBlcnQuZGVjcl9pbnZhbGlkX2NoaWxkcmVuIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRXhwZXJ0LmVkZ2UgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8ob25fY2hhbmdlID0gaWdub3JlKSBjaGlsZCA6IF8gdCA9IHsgY2hpbGQ7IG9uX2NoYW5nZTsgaW5kZXggPSBVb3B0Lm5vbmUgfVxuXG4gIGxldCB2YWx1ZSAodCA6IF8gdCkgPVxuICAgIGxldCBzdGF0ZSA9IHQuY2hpbGQuc3RhdGUgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIFN0YXRlLkV4cGVydC5hc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19wYXJlbnRcbiAgICAgICAgc3RhdGVcbiAgICAgICAgdC5jaGlsZFxuICAgICAgICBcIkRlcGVuZGVuY3kudmFsdWVcIjtcbiAgICAoKiBOb3QgZXhwb3NpbmcgdGhlIF9leG4sIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBhZHZlcnRpc2VkIGFzIGJlaW5nIHVzYWJsZSBvbmx5XG4gICAgICAgaW5zaWRlIHRoZSBjYWxsYmFja3Mgb2YgcGFyZW50cywgd2hlcmUgaXQgd2lsbCBub3QgcmFpc2UuICopXG4gICAgTm9kZS52YWx1ZV9leG4gdC5jaGlsZFxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHN0YXRlID8ob25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBmdW4gfmlzX25vd19vYnNlcnZhYmxlOl8gLT4gKCkpIGYgPVxuICAgIFN0YXRlLkV4cGVydC5jcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSA9IFN0YXRlLkV4cGVydC5tYWtlX3N0YWxlXG4gIGxldCB3YXRjaCA9IEZuLmlkXG4gIGxldCBpbnZhbGlkYXRlID0gU3RhdGUuRXhwZXJ0LmludmFsaWRhdGVcbiAgbGV0IGFkZF9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LmFkZF9kZXBlbmRlbmN5XG4gIGxldCByZW1vdmVfZGVwZW5kZW5jeSA9IFN0YXRlLkV4cGVydC5yZW1vdmVfZGVwZW5kZW5jeVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubGV0IGNyZWF0ZSBzdGF0ZSBjaGlsZHJlbiB+ZiB+cmVkdWNlID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBjaGlsZHJlbiBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVkdWNlciA9IEJhbGFuY2VkX3JlZHVjZXIuY3JlYXRlX2V4biAoKSB+bGVuIH5yZWR1Y2UgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICBsZXQgbm9kZSA9XG4gICAgICBFeHBlcnQxLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGEgPSBCYWxhbmNlZF9yZWR1Y2VyLmNvbXB1dGVfZXhuIHJlZHVjZXIgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXI7XG4gICAgICAgIGEpXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgRXhwZXJ0MS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEV4cGVydDEuRGVwZW5kZW5jeS5jcmVhdGUgY2hpbGRyZW4uKGkpIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIEJhbGFuY2VkX3JlZHVjZXIuc2V0X2V4biByZWR1Y2VyIGkgKGYgYSk7XG4gICAgICAgICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyKSlcbiAgICBkb25lO1xuICAgIFNvbWUgKEV4cGVydDEuTm9kZS53YXRjaCBub2RlKSlcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBtb3N0bHkgYSB3cmFwcGVyIGFyb3VuZCBbU3RhdGVdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluY3JlbWVudGFsX2ludGZcblxubW9kdWxlIHR5cGUgSW5jcmVtZW50YWxfY29uZmlnID0gQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZ1xuXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5cbmxldCBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCA9IDEyOFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBtb2R1bGUgQ3V0b2ZmID0gQ3V0b2ZmXG4gIG1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gU3RlcF9mdW5jdGlvblxuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICB2YWwgdCA6IHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGVfaW50ZXJuYWwgPSBjcmVhdGVcblxuICAgIGxldCBjcmVhdGUgPyhtYXhfaGVpZ2h0X2FsbG93ZWQgPSBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCkgKCkgOiAobW9kdWxlIFMpID1cbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCB0ID0gY3JlYXRlIChtb2R1bGUgQ29uZmlnLkRlZmF1bHQgKCkpIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgICAgIGVuZClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoc3RhdGUgOiBTdGF0ZS50KSAoKSA9IHN0YXRlLmN1cnJlbnRfc2NvcGVcbiAgICBsZXQgd2l0aGluIHN0YXRlIHQgfmYgPSBTdGF0ZS53aXRoaW5fc2NvcGUgc3RhdGUgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE5vZGVcblxuICBsZXQgc3RhdGUgdCA9IHQuc3RhdGVcbiAgbGV0IHBhY2sgdCA9IFBhY2tlZC5UIHRcbiAgbGV0IGNvbnN0IHN0YXRlIGEgPSBTdGF0ZS5jb25zdCBzdGF0ZSBhXG4gIGxldCByZXR1cm4gPSBjb25zdFxuICBsZXQgb2JzZXJ2ZSA9IFN0YXRlLmNyZWF0ZV9vYnNlcnZlclxuICBsZXQgbWFwID0gU3RhdGUubWFwXG4gIGxldCBiaW5kID0gU3RhdGUuYmluZFxuXG4gIG1vZHVsZSBOX2FyeV9tYXBfYW5kX2JpbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbWFwMiA9IFN0YXRlLm1hcDJcbiAgICBsZXQgbWFwMyA9IFN0YXRlLm1hcDNcbiAgICBsZXQgbWFwNCA9IFN0YXRlLm1hcDRcbiAgICBsZXQgbWFwNSA9IFN0YXRlLm1hcDVcbiAgICBsZXQgbWFwNiA9IFN0YXRlLm1hcDZcbiAgICBsZXQgbWFwNyA9IFN0YXRlLm1hcDdcbiAgICBsZXQgbWFwOCA9IFN0YXRlLm1hcDhcbiAgICBsZXQgbWFwOSA9IFN0YXRlLm1hcDlcbiAgICBsZXQgbWFwMTAgPSBTdGF0ZS5tYXAxMFxuICAgIGxldCBtYXAxMSA9IFN0YXRlLm1hcDExXG4gICAgbGV0IG1hcDEyID0gU3RhdGUubWFwMTJcbiAgICBsZXQgbWFwMTMgPSBTdGF0ZS5tYXAxM1xuICAgIGxldCBtYXAxNCA9IFN0YXRlLm1hcDE0XG4gICAgbGV0IG1hcDE1ID0gU3RhdGUubWFwMTVcbiAgICBsZXQgYmluZDIgPSBTdGF0ZS5iaW5kMlxuICAgIGxldCBiaW5kMyA9IFN0YXRlLmJpbmQzXG4gICAgbGV0IGJpbmQ0ID0gU3RhdGUuYmluZDRcbiAgZW5kXG5cbiAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICBtb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIEluZml4XG5cbiAgbGV0IGpvaW4gPSBTdGF0ZS5qb2luXG4gIGxldCBpZl8gPSBTdGF0ZS5pZl9cbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcbiAgbGV0IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUgPSBTdGF0ZS5kZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS5tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgc3RhdGUgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5cbiAgbGV0IGFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmYgPSBTdGF0ZS5hcnJheV9mb2xkIHN0YXRlIHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgc3RhdGUgdHMgfmYgfnJlZHVjZSA9IFJlZHVjZV9iYWxhbmNlZC5jcmVhdGUgc3RhdGUgdHMgfmYgfnJlZHVjZVxuXG4gIG1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBTdGF0ZS5Vbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGVcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS51bm9yZGVyZWRfYXJyYXlfZm9sZFxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID0gU3RhdGUub3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBhbGwgPSBTdGF0ZS5hbGxcbiAgbGV0IGV4aXN0cyA9IFN0YXRlLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IFN0YXRlLmZvcl9hbGxcbiAgbGV0IGJvdGggPSBTdGF0ZS5ib3RoXG4gIGxldCBzdW0gPSBTdGF0ZS5zdW1cbiAgbGV0IG9wdF9zdW0gPSBTdGF0ZS5vcHRfc3VtXG4gIGxldCBzdW1faW50ID0gU3RhdGUuc3VtX2ludFxuICBsZXQgc3VtX2Zsb2F0ID0gU3RhdGUuc3VtX2Zsb2F0XG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID0gU3RhdGUuY3JlYXRlX3ZhclxuICAgIGxldCBzZXQgPSBTdGF0ZS5zZXRfdmFyXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IHdhdGNoIHQgPSB0LndhdGNoXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gdC52YWx1ZSB8PiBbJXNleHBfb2Y6IGFdXG4gICAgbGV0IHJlcGxhY2UgdCB+ZiA9IHNldCB0IChmIChsYXRlc3RfdmFsdWUgdCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICAgIG1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgSW5pdGlhbGl6ZWQgb2YgJ2FcbiAgICAgICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICAgICAgfCBJbnZhbGlkYXRlZFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBvbl91cGRhdGVfZXhuIHQgfihmIDogXyBVcGRhdGUudCAtPiB1bml0KSA9XG4gICAgICBTdGF0ZS5vYnNlcnZlcl9vbl91cGRhdGVfZXhuIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTmVjZXNzYXJ5IGEgLT4gZiAoSW5pdGlhbGl6ZWQgYSlcbiAgICAgICAgfCBDaGFuZ2VkIChhMSwgYTIpIC0+IGYgKENoYW5nZWQgKGExLCBhMikpXG4gICAgICAgIHwgSW52YWxpZGF0ZWQgLT4gZiBJbnZhbGlkYXRlZFxuICAgICAgICB8IFVubmVjZXNzYXJ5IC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIkluY3JlbWVudGFsIGJ1ZyAtLSBPYnNlcnZlci5vbl91cGRhdGVfZXhuIGdvdCB1bmV4cGVjdGVkIHVwZGF0ZSBVbm5lY2Vzc2FyeVwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBbJXNleHBfb2Y6IF8gdF0pXG4gICAgOztcblxuICAgIGxldCBkaXNhbGxvd19mdXR1cmVfdXNlIHQgPSBTdGF0ZS5kaXNhbGxvd19mdXR1cmVfdXNlICF0XG4gICAgbGV0IHZhbHVlID0gU3RhdGUub2JzZXJ2ZXJfdmFsdWVcbiAgICBsZXQgdmFsdWVfZXhuID0gU3RhdGUub2JzZXJ2ZXJfdmFsdWVfZXhuXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAodCA6IF8gdCkgPVxuICAgICAgbWF0Y2ggIXQuc3RhdGUgd2l0aFxuICAgICAgfCBDcmVhdGVkIC0+IFslbWVzc2FnZSBcIjx1bnN0YWJpbGl6ZWQ+XCJdXG4gICAgICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBbJW1lc3NhZ2UgXCI8ZGlzYWxsb3dlZD5cIl1cbiAgICAgIHwgSW5fdXNlIC0+XG4gICAgICAgIGxldCB1b3B0ID0gIXQub2JzZXJ2aW5nLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgICAgICB0aGVuIFslbWVzc2FnZSBcIjxpbnZhbGlkPlwiXVxuICAgICAgICBlbHNlIFslc2V4cCAoVW9wdC51bnNhZmVfdmFsdWUgdW9wdCA6IGEpXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBCZWZvcmVfb3JfYWZ0ZXIgPSBCZWZvcmVfb3JfYWZ0ZXJcblxuICBtb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlLkNsb2NrXG5cbiAgICBsZXQgc3RhdGUgPSBpbmNyX3N0YXRlXG5cbiAgICBsZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgICAgIGxldCBhbGFybV9wcmVjaXNpb24gPSBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kIGluXG4gICAgICBsZXQgbGV2ZWxfYml0cyA9IFsgMTQ7IDEzOyA1IF0gaW5cbiAgICAgIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb25cbiAgICAgICAgfmxldmVsX2JpdHM6XG4gICAgICAgICAgKFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cyB+ZXh0ZW5kX3RvX21heF9udW1fYml0czp0cnVlKVxuICAgICAgICAoKVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIHN0YXRlID8odGltaW5nX3doZWVsX2NvbmZpZyA9IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZykgfnN0YXJ0ICgpID1cbiAgICAgICgqIE1ha2Ugc3VyZSBbc3RhcnRdIGlzIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICBPdGhlcndpc2UsIGlmIHlvdVxuICAgICAgICAgZmVlZCBbQ2xvY2subm93ICgpXSB0byBhIHRpbWUgZnVuY3Rpb24sIGl0IGNhbiBiZSByb3VuZGVkIGRvd24gdG8gYSB0aW1lIGluXG4gICAgICAgICB0aGUgcGFzdCwgY2F1c2luZyBlcnJvcnMuICopXG4gICAgICBsZXQgc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuICAgICAgICAgIChUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCBzdGFydClcbiAgICAgIGluXG4gICAgICBTdGF0ZS5jcmVhdGVfY2xvY2sgc3RhdGUgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0XG4gICAgOztcblxuICAgIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC50aW1pbmdfd2hlZWxcbiAgICBsZXQgdGltaW5nX3doZWVsX2xlbmd0aCA9IFN0YXRlLnRpbWluZ193aGVlbF9sZW5ndGhcbiAgICBsZXQgbm93ID0gU3RhdGUubm93XG4gICAgbGV0IHdhdGNoX25vdyB0ID0gdC5ub3cud2F0Y2hcbiAgICBsZXQgYXQgPSBTdGF0ZS5hdFxuICAgIGxldCBhZnRlciA9IFN0YXRlLmFmdGVyXG4gICAgbGV0IGF0X2ludGVydmFscyA9IFN0YXRlLmF0X2ludGVydmFsc1xuICAgIGxldCBhZHZhbmNlX2Nsb2NrID0gU3RhdGUuYWR2YW5jZV9jbG9ja1xuICAgIGxldCBhZHZhbmNlX2Nsb2NrX2J5IHQgc3BhbiA9IGFkdmFuY2VfY2xvY2sgdCB+dG9fOihUaW1lX25zLmFkZCAobm93IHQpIHNwYW4pXG4gICAgbGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gPSBTdGF0ZS5pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG5cbiAgICBsZXQgc3RlcF9mdW5jdGlvbiB0IH5pbml0IHN0ZXBzID1cbiAgICAgIGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cbiAgICAgICAgdFxuICAgICAgICAoY29uc3QgKGluY3Jfc3RhdGUgdCkgKFN0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMpKVxuICAgIDs7XG5cbiAgICBsZXQgc25hcHNob3QgPSBTdGF0ZS5zbmFwc2hvdFxuICBlbmRcblxuICBsZXQgZnJlZXplID8od2hlbl8gPSBmdW4gXyAtPiB0cnVlKSB0ID0gU3RhdGUuZnJlZXplIHQgfm9ubHlfZnJlZXplX3doZW46d2hlbl9cbiAgbGV0IGRlcGVuZF9vbiB0IH5kZXBlbmRfb24gPSBTdGF0ZS5kZXBlbmRfb24gdCB+ZGVwZW5kX29uXG4gIGxldCBuZWNlc3NhcnlfaWZfYWxpdmUgPSBTdGF0ZS5uZWNlc3NhcnlfaWZfYWxpdmVcblxuICBtb2R1bGUgVXBkYXRlID0gT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGVcblxuICBsZXQgb25fdXBkYXRlID0gU3RhdGUubm9kZV9vbl91cGRhdGVcbiAgbGV0IHN0YWJpbGl6ZSBzdGF0ZSA9IFN0YXRlLnN0YWJpbGl6ZSBzdGF0ZVxuICBsZXQgYW1fc3RhYmlsaXppbmcgc3RhdGUgPSBTdGF0ZS5hbV9zdGFiaWxpemluZyBzdGF0ZVxuICBsZXQgc2F2ZV9kb3QgPSBTdGF0ZS5zYXZlX2RvdFxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSA9IFN0YXRlLnNhdmVfZG90X3RvX2ZpbGVcblxuICBtb2R1bGUgTm9kZV92YWx1ZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEludmFsaWRcbiAgICAgIHwgTmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgICAgfCBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSBvZiAnYSBvcHRpb25cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgbm9kZV92YWx1ZSB0IDogXyBOb2RlX3ZhbHVlLnQgPVxuICAgIGlmIG5vdCAoaXNfdmFsaWQgdClcbiAgICB0aGVuIEludmFsaWRcbiAgICBlbHNlIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgKFVvcHQudG9fb3B0aW9uIHQudmFsdWVfb3B0KVxuICAgIGVsc2UgVW5uZWNlc3NhcnlfbWF5YmVfc3RhbGUgKFVvcHQudG9fb3B0aW9uIHQudmFsdWVfb3B0KVxuICA7O1xuXG4gICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIHNob3cganVzdCB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICByZXByZXNlbnRhdGlvbi4gIFdlIG9ubHkgc2hvdyB0aGUgdmFsdWUgaWYgaXQgaXMgbmVjZXNzYXJ5IGFuZCB2YWxpZC4gKilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gXCI8aW52YWxpZD5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIGlmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgdGhlbiBcIjx1bm5lY2Vzc2FyeT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIGlmIFVvcHQuaXNfbm9uZSB0LnZhbHVlX29wdFxuICAgIHRoZW4gXCI8dW5jb21wdXRlZD5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIHVuc2FmZV92YWx1ZSB0IHw+IFslc2V4cF9vZjogYV1cbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gRXhwZXJ0MVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggdDEgdDIgPSBtYXAyIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuXG4gICAgICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHdhdGNoID0gVmFyLndhdGNoXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID0gU3RhdGUud2Vha19tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgRm4uaWQgZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY29uZmlnIChJbmNyZW1lbnRhbF9jb25maWcgOiBJbmNyZW1lbnRhbF9jb25maWcpICgpID0gc3RydWN0XG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIChtb2R1bGUgSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkOjEyOFxuICBlbmRcblxuICBtb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENsb2NrXG5cbiAgICBsZXQgY3JlYXRlID90aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCAoKSA9XG4gICAgICBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgU3RhdGUudCB+c3RhcnQgKClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBlcnRcblxuICAgIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE5vZGVcblxuICAgICAgbGV0IGNyZWF0ZSA/b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9IGNyZWF0ZSBTdGF0ZS50ID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RlcF9yZXN1bHQgPSBTdGF0ZS5TdGVwX3Jlc3VsdFxuXG4gICAgbGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSAoKSA9IFN0YXRlLmRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBTdGF0ZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFNjb3BlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTY29wZVxuXG4gICAgbGV0IGN1cnJlbnQgKCkgPSBjdXJyZW50IFN0YXRlLnQgKClcbiAgICBsZXQgd2l0aGluIHQgfmYgPSB3aXRoaW4gU3RhdGUudCB0IH5mXG4gIGVuZFxuXG4gIG1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhclxuXG4gICAgbGV0IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgdmFsdWUgPSBjcmVhdGUgP3VzZV9jdXJyZW50X3Njb3BlIFN0YXRlLnQgdmFsdWVcbiAgZW5kXG5cbiAgbGV0IGNvbnN0IGEgPSBjb25zdCBTdGF0ZS50IGFcbiAgbGV0IHJldHVybiBhID0gcmV0dXJuIFN0YXRlLnQgYVxuICBsZXQgYWxsIHRzID0gYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGV4aXN0cyB0cyA9IGV4aXN0cyBTdGF0ZS50IHRzXG4gIGxldCBmb3JfYWxsIHRzID0gZm9yX2FsbCBTdGF0ZS50IHRzXG4gIGxldCBsYXp5X2Zyb21fZnVuIHN0YXRlIGYgPSBTdGF0ZS5sYXp5X2Zyb21fZnVuIHN0YXRlIH5mXG5cbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgcHJvamVjdF9rZXkgZlxuICA7O1xuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIGYgPSBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgZlxuICBsZXQgYXJyYXlfZm9sZCB0cyB+aW5pdCB+ZiA9IGFycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZlxuICBsZXQgcmVkdWNlX2JhbGFuY2VkIHRzIH5mIH5yZWR1Y2UgPSByZWR1Y2VfYmFsYW5jZWQgU3RhdGUudCB0cyB+ZiB+cmVkdWNlXG5cbiAgbGV0IHVub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH51cGRhdGUgPVxuICAgIHVub3JkZXJlZF9hcnJheV9mb2xkIFN0YXRlLnQgdHMgfmluaXQgfmYgfnVwZGF0ZSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICA7O1xuXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gICAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfmluaXQgfmYgfmZfaW52ZXJzZVxuICA7O1xuXG4gIGxldCBzdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfnplcm8gfmFkZCB+c3ViID1cbiAgICBzdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+emVybyB+YWRkIH5zdWJcbiAgOztcblxuICBsZXQgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIG9wdF9zdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+emVybyB+YWRkIH5zdWJcbiAgOztcblxuICBsZXQgc3VtX2ludCB0cyA9IHN1bV9pbnQgU3RhdGUudCB0c1xuICBsZXQgc3VtX2Zsb2F0IHRzID0gc3VtX2Zsb2F0IFN0YXRlLnQgdHNcbiAgbGV0IHN0YWJpbGl6ZSAoKSA9IHN0YWJpbGl6ZSBTdGF0ZS50XG4gIGxldCBhbV9zdGFiaWxpemluZyAoKSA9IGFtX3N0YWJpbGl6aW5nIFN0YXRlLnRcbiAgbGV0IHNhdmVfZG90IG91dCA9IHNhdmVfZG90IFN0YXRlLnQgb3V0XG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgPSBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjpzYXZlX2RvdFxuICBsZXQgbGF6eV9mcm9tX2Z1biBmID0gbGF6eV9mcm9tX2Z1biBTdGF0ZS50IGZcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBwcm9qZWN0X2tleSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgcHJvamVjdF9rZXkgZlxuICA7O1xuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlICgpID0gTWFrZV93aXRoX2NvbmZpZyAoQ29uZmlnLkRlZmF1bHQgKCkpICgpXG5pbmNsdWRlIEdlbmVyaWNcblxubW9kdWxlIEFkZF93aXRuZXNzMCAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAndyB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ3cgdCA9IE0udFxuXG4gIGxldCBpbnZhcmlhbnQgXyB0ID0gTS5pbnZhcmlhbnQgdFxuICBsZXQgc2V4cF9vZl90IF8gdCA9IE0uc2V4cF9vZl90IHRcbmVuZFxuXG5tb2R1bGUgQWRkX3dpdG5lc3MxIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAndykgdCA9ICdhIE0udFxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID0gTS5pbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBNLnNleHBfb2ZfdCBzZXhwX29mX2EgdFxuZW5kXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICBpbmNsdWRlIENsb2NrXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChDbG9jaylcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgRXhwZXJ0XG5cbiAgbW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBEZXBlbmRlbmN5XG5cbiAgICAgICAgbGV0IGludmFyaWFudCBfIF8gPSAoKVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgTm9kZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE5vZGVcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgbGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBzdGF0ZSA9IFN0YXRlLmRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBzdGF0ZVxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIGluY2x1ZGUgTm9kZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoTm9kZSlcbmVuZFxuXG50eXBlICgnYSwgJ3cpIHQgPSAoJ2EsICd3KSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbnR5cGUgKCdhLCAndykgaW5jcmVtZW50YWwgPSAoJ2EsICd3KSB0XG5cbmxldCBpbnZhcmlhbnQgPSBOb2RlLmludmFyaWFudFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoT2JzZXJ2ZXIpXG5lbmRcblxubW9kdWxlIFNjb3BlID0gc3RydWN0XG4gIGluY2x1ZGUgU2NvcGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFNjb3BlKVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YXRlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChTdGF0ZSlcbmVuZFxuXG5tb2R1bGUgVmFyID0gc3RydWN0XG4gIGluY2x1ZGUgVmFyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChWYXIpXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU19nZW5cbiAgICB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgaW5jcmVtZW50YWxcbiAgICB3aXRoIHR5cGUgQmVmb3JlX29yX2FmdGVyLnQgPSBCZWZvcmVfb3JfYWZ0ZXIudFxuICAgIHdpdGggdHlwZSBDbG9jay50ID0gc3RhdGVfd2l0bmVzcyBDbG9jay50XG4gICAgd2l0aCB0eXBlICdhIEN1dG9mZi50ID0gJ2EgQ3V0b2ZmLnRcbiAgICB3aXRoIHR5cGUgJ2EgRXhwZXJ0LkRlcGVuZGVuY3kudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgRXhwZXJ0LkRlcGVuZGVuY3kudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuTm9kZS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuTm9kZS50XG4gICAgd2l0aCB0eXBlIEV4cGVydC5TdGVwX3Jlc3VsdC50ID0gRXhwZXJ0LlN0ZXBfcmVzdWx0LnRcbiAgICB3aXRoIHR5cGUgJ2EgT2JzZXJ2ZXIudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgT2JzZXJ2ZXIudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci5VcGRhdGUudCA9ICdhIE9ic2VydmVyLlVwZGF0ZS50XG4gICAgd2l0aCB0eXBlIFBhY2tlZC50ID0gUGFja2VkLnRcbiAgICB3aXRoIHR5cGUgU2NvcGUudCA9IHN0YXRlX3dpdG5lc3MgU2NvcGUudFxuICAgIHdpdGggdHlwZSBTdGF0ZS50ID0gc3RhdGVfd2l0bmVzcyBTdGF0ZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLlN0YXRzLnQgPSBTdGF0ZS5TdGF0cy50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZS50ID1cbiAgICAgICAgICAgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgJ2EgVXBkYXRlLnQgPSAnYSBVcGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBWYXIudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgVmFyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgZGVidWcgPSBkZWJ1Z1xuZW5kXG4iLCJcbm9wZW4gQmFzZVxuXG5tb2R1bGUgQ29tbXV0YXRpdmVfZ3JvdXAgPSBzdHJ1Y3RcbiAgKCoqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblxuICAgICAgKyBhc3NvY2lhdGl2aXR5OiBbKGEgKyBiKSArIGMgPSBhICsgKGIgKyBjKV1cbiAgICAgICsgaWRlbnRpdHk6IFt6ZXJvICsgYSA9IGEgKyB6ZXJvID0gYV1cbiAgICAgICsgaW52ZXJzZXM6IGdpdmVuIGFueSBbYV0gdGhlcmUgZXhpc3RzIGEgKHVuaXF1ZSkgZWx0IFtiXSBzdWNoIHRoYXQgW2EgKyBiID0gYiArIGEgPVxuICAgICAgemVyb11cbiAgICAgICsgY29tbXV0YXRpdml0eTogW2EgKyBiID0gYiArIGFdXG4gICopXG5cbiAgbW9kdWxlIHR5cGUgV2l0aG91dF9zZXhwID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCspICA6IHQgLT4gdCAtPiB0XG4gICAgdmFsICgtKSAgOiB0IC0+IHQgLT4gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgaW5jbHVkZSBXaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVmVjdG9yX3NwYWNlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcbiAgICBpbmNsdWRlIENvbW11dGF0aXZlX2dyb3VwLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gc3RydWN0XG4gICgqKiBBbGwgW0luY3JfbWFwXSBmdW5jdGlvbnMgdGFrZSBhbiBvcHRpb25hbCBbaW5zdHJ1bWVudGF0aW9uXSBwYXJhbWV0ZXIgdGhhdCBoYXMgdHlwZVxuICAgICAgW0luc3RydW1lbnRhdGlvbi50XS4gIEEgdmFsdWUgb2YgdGhpcyB0eXBlIGlzIGEgcmVjb3JkIGNvbnRhaW5pbmcgYSBmdW5jdGlvbiB3aGljaFxuICAgICAgaXMgcG9seW1vcnBoaWMgb3ZlciBhIHVuaXZlcnNhbGx5LXF1YW50aWZpZWQgdHlwZSBbJ2FdLiBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZFxuICAgICAgYSBbdW5pdCAtPiAnYV0gZnVuY3Rpb24sIHdoaWNoIG11c3QgYmUgaW1tZWRpYXRlbHkgZXhlY3V0ZWQsIGFuZCB0aGUgcmVzdWx0IG9mXG4gICAgICB3aGljaCBtdXN0IGJlIHJldHVybmVkLlxuXG4gICAgICBUaGUgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBpbnN0cnVtZW50b3Igd2lsbCBiZSBkb2luZyB0aGUgYnVsayBvZiB0aGUgd29yayBmb3IgdGhlXG4gICAgICBbSW5jcl9tYXBdIGZ1bmN0aW9uIGluIHF1ZXN0aW9uICh1c3VhbGx5IGEgW01hcC5mb2xkX3N5bW1ldHJpY19kaWZmXSkuXG5cbiAgICAgIFlvdSBtYXkgd2FudCB0byB1c2UgdGhlIEluc3RydW1lbnRhdGlvbiBBUEkgdG8gYXNzaXN0IGluIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBsaWtlXG4gICAgICBzbzpcblxuICAgICAge1tcbiAgICAgICAgbGV0IHByb2ZpbGUgbmFtZSA9XG4gICAgICAgICAgeyBJbmNyX21hcC5JbnN0cnVtZW50YXRpb24uZiA9IGZ1biBmIC0+XG4gICAgICAgICAgICAgIGxldCBiZWZvcmUgPSBUaW1lLm5vdyAoKSBpblxuICAgICAgICAgICAgICBsZXQgciA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgbGV0IGFmdGVyID0gVGltZS5ub3cgKCkgaW5cbiAgICAgICAgICAgICAgbGV0IGRlbHRhID0gVGltZS5zdWIgYWZ0ZXIgYmVmb3JlIGluXG4gICAgICAgICAgICAgIHByaW50ZiBcIiVzIHRvb2sgJXNcIiBuYW1lIChUaW1lLlNwYW4udG9fc3RyaW5nX2h1bSBkZWx0YSk7XG4gICAgICAgICAgICAgIHJcbiAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgSW5jcl9tYXAubWFwIH5pbnN0cnVtZW50YXRpb246KHByb2ZpbGUgXCJmb29cIikgfmY6bWFwX2Zvb1xuICAgICAgXX0gKilcblxuICB0eXBlIHQgPSB7IGYgOiAnYS4gKHVuaXQgLT4gJ2EpIC0+ICdhIH0gW0BAdW5ib3hlZF1cbmVuZFxuXG4oKiogW1NfZ2VuXSBpcyB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlIHJldHVybmVkIGJ5IFtJbmNyX21hcC5NYWtlXS4gIEl0IGlzIGEgc3BlY2lhbGl6YXRpb25cbiAgICBvZiB0aGUgaW50ZXJmYWNlIG9mIFtJbmNyX21hcF0sIHdpdGg6XG5cbiAgICAtIHRoZSBbJ3ddIHN0YXRlX3dpdG5lc3MgdHlwZSBwYXJhbWV0ZXIgcmVtb3ZlZFxuICAgIC0gdGhlIFtJbmNyZW1lbnRhbC5TdGF0ZS50XSBhcmd1bWVudCByZW1vdmVkXG5cbiAgICBUaGUgY29tbWVudHMgZm9yIGNvbXBvbmVudHMgb2YgW1NfZ2VuXSBhcmUgaW4gW21vZHVsZSB0eXBlIEluY3JfbWFwXSBiZWxvdy4gKilcbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG1vZHVsZSBJbmNyIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBtb2R1bGUgQ3V0b2ZmIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IEluc3RydW1lbnRhdGlvblxuXG4gIHZhbCBvZl9zZXRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAnY21wKSBTZXQudCBJbmNyLnRcbiAgICAtPiAoJ2ssIHVuaXQsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIC0+ICd2MilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIEluY3IudCAtPiAndjIgb3B0aW9uIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgSW5jci50IC0+ICd2MiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmaWx0ZXJfbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIEluY3IudCAtPiAndjIgb3B0aW9uIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2MSBJbmNyLnQgLT4gJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQpIEluY3IudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSBJbmNyLnQgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudCBJbmNyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCkgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAnYWNjIEluY3IudFxuXG4gIHZhbCB1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9leHRyYV9lcXVhbDooJ2V4dHJhIC0+ICdleHRyYSAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+ID9zcGVjaWFsaXplZF9pbml0aWFsOihpbml0OidhY2MgLT4gKCdrLCAndiwgJ2UpIE1hcC50IC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgSW5jci50XG4gICAgLT4gJ2V4dHJhIEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gZXh0cmFfY2hhbmdlZDpcbiAgICAgICAgIChvbGRfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gbmV3X2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IGlucHV0OignaywgJ3YsICdlKSBNYXAudFxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICdhY2MgSW5jci50XG5cbiAgdmFsIGN1dG9mZlxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaV9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgnazIsIGludCwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBfY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ2syKVxuICAgIC0+ICgnazIsIGludCwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwaV9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9taW5cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1pbl92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWF4X3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3Ygb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBpX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciAqICdyKSBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAoJ3IgKiAncikgb3B0aW9uIEluY3IudFxuXG4gIHZhbCB2YWx1ZV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3YgKiAndikgb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtZXJnZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1lcmdlX2JvdGhfc29tZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiA/b3V0X2VxdWFsOigndjMgLT4gJ3YzIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gJ3YxIC0+ICd2MiAtPiAndjMpXG4gICAgLT4gKCdrLCAndjMsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bnppcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEgKiAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnQgKiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2xlZnRfcmVzdWx0X2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP3JpZ2h0X3Jlc3VsdF9lcXVhbDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICd2MSAqICd2MilcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50ICogKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bnppcF9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2IEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiBJbmNyLnQgLT4gJ3YxIEluY3IudCAqICd2MiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudCAqICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWVyZ2UnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6KCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jci50IC0+ICd2MyBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmxhdHRlbiA6ICgnaywgJ3YgSW5jci50LCAnY21wKSBNYXAudCAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgam9pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2IEluY3IudCwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHNlcGFyYXRlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiBJbmNyLnQsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBrZXlzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICdjKSBTZXQudCBJbmNyLnRcblxuICB2YWwgcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBCYXNlLk1hcC50IEluY3IudFxuICAgIC0+ICdrIEluY3IudFxuICAgIC0+IGludCBvcHRpb24gSW5jci50XG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnayBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogJ2sgTWF5YmVfYm91bmQuQXNfdXBwZXJfYm91bmQudCkgb3B0aW9uIEluY3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IChpbnQgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBJbmNyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgcmVrZXlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrMSAtPiBkYXRhOid2IC0+ICdrMilcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBpbmRleF9ieWlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KGtleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBpbmRleF9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooJ3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gP3VwZGF0ZTpcbiAgICAgICAgIChvdXRlcl9rZXk6J291dGVyX2tleVxuICAgICAgICAgIC0+IGlubmVyX2tleTonaW5uZXJfa2V5XG4gICAgICAgICAgLT4gb2xkX2RhdGE6J3ZcbiAgICAgICAgICAtPiBuZXdfZGF0YTondlxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KG91dGVyX2tleTonb3V0ZXJfa2V5IC0+IGlubmVyX2tleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZToob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gJ2FjYyBJbmNyLnRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazIsICdrMl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAoJ2syLCAndiwgJ2syX2NtcCkgTWFwLnQsICdrMV9jbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnazIsICgnazEsICd2LCAnazFfY21wKSBNYXAudCwgJ2syX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGNvbGxhcHNlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignaW5uZXJfa2V5LCAnaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCAnb3V0ZXJfa2V5ICogJ2lubmVyX2tleVxuICAgICAgICwgJ3ZcbiAgICAgICAsICgnb3V0ZXJfY21wLCAnaW5uZXJfY21wKSBUdXBsZTIuY29tcGFyYXRvcl93aXRuZXNzIClcbiAgICAgICAgIE1hcC50XG4gICAgICAgICBJbmNyLnRcblxuICB2YWwgY29sbGFwc2VfYnlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IG1lcmdlX2tleXM6KCdvdXRlcl9rZXkgLT4gJ2lubmVyX2tleSAtPiAnY29tYmluZWRfa2V5KVxuICAgIC0+IGNvbXBhcmF0b3I6KCdjb21iaW5lZF9rZXksICdjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2NvbWJpbmVkX2tleSwgJ3YsICdjb21iaW5lZF9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBleHBhbmRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5LCAndiwgJ3R1cGxlX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gb3V0ZXJfY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGlubmVyX2NvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGNvdW50aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IGludCBJbmNyLnRcblxuICB2YWwgY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGludCBJbmNyLnRcblxuICB2YWwgZm9yX2FsbGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBmb3JfYWxsXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IChfLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBleGlzdHNpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gYm9vbCBJbmNyLnRcblxuICB2YWwgZXhpc3RzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IChfLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBzdW1cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiAobW9kdWxlIEFic3RyYWN0X2FsZ2VicmEuQ29tbXV0YXRpdmVfZ3JvdXAuV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0ID0gJ3UpXG4gICAgLT4gZjooJ3YgLT4gJ3UpXG4gICAgLT4gJ3UgSW5jci50XG5cbiAgbW9kdWxlIExvb2t1cCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgIHZhbCBmaW5kIDogKCdrLCAndiwgXykgdCAtPiAnayAtPiAndiBvcHRpb24gSW5jci50XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgOiBzaWdcbiAgICAgIHZhbCBzZXhwX29mX3QgOiAoJ2sgLT4gU2V4cC50KSAtPiAoJ3YgLT4gU2V4cC50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IFNleHAudFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB2YWwgZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gICAgICA6ICBmcm9tOmludFxuICAgICAgLT4gdG9fOmludFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIEJhc2UuTWFwLnRcbiAgICAgIC0+ICgnYSAqICdhIG9wdGlvbikgb3B0aW9uXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluY3JfbWFwID0gc2lnXG4gICgqKiBGdW5jdGlvbnMgZm9yIHVzaW5nIG1hcHMgZWZmaWNpZW50bHkgd2l0aGluIEluY3JlbWVudGFsLiAgVGhlIGdvYWwgb2YgdGhlIGFsZ29yaXRobXNcbiAgICAgIGhlcmUgaXMgdG8gZG8gd29yayBvbiB0aGUgb3V0cHV0IG9mIHRoZSBjb21wdXRhdGlvbiBwcm9wb3J0aW9uYWwgdG8gdGhlIGFtb3VudCBvZlxuICAgICAgd29yayBkb25lIG9uIHRoZSBpbnB1dC4gIGkuZS4sIFtrXSBtb2RpZmljYXRpb25zIHRvIHRoZSBpbnB1dCBtYXAgZm9yIHNvbWVcbiAgICAgIGNvbXB1dGF0aW9uIHdpbGwgcmVzdWx0IGluIFtrXSBtb2RpZmljYXRpb25zIHRvIHRoZSBvdXRwdXQgbWFwLiAgVGhlIGNoYW5nZXMgdG8gdGhlXG4gICAgICBpbnB1dCBtYXAgYXJlIHR5cGljYWxseSBjb21wdXRlZCB1c2luZyBbTWFwLnN5bW1ldHJpY19kaWZmXS5cblxuICAgICAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIHRoZSBub24taW5jcmVtZW50YWwgc2VtYW50aWNzIG9mIHRoZXNlIGZ1bmN0aW9ucyAoaS5lLi4sXG4gICAgICBpZ25vcmluZyBwZXJmb3JtYW5jZSkgaXMgdGhlIHNhbWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gaW4gQ29yZSdzIFtNYXBdXG4gICAgICBtb2R1bGUuICAqKVxuXG4gIG1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBJbnN0cnVtZW50YXRpb25cblxuICB2YWwgb2Zfc2V0XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICdjbXApIFNldC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssIHVuaXQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2MSAtPiAndjIpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCgndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCgndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndykgSW5jcmVtZW50YWwudCAtPiAoJ3YyLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6XG4gICAgICAgICAoa2V5OidrXG4gICAgICAgICAgLT4gZGF0YTooJ3YxLCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICgoJ3YyLCAndjMpIEVpdGhlci50LCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW5vcmRlcmVkX2ZvbGQgaSB+aW5pdCB+YWRkIH5yZW1vdmVdIGNvbnN0cnVjdHMgYSBtb3JlIGluY3JlbWVudGFsIHZlcnNpb24gb2Y6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCVtYXAgbSA9IGkgaW5cbiAgICAgICAgTWFwLmZvbGQgbSB+aW5pdCB+ZjphZGRcbiAgICAgIF19XG5cbiAgICAgIGFzc3VtaW5nIHRoYXQgW3JlbW92ZV0gaXMgdGhlIGludmVyc2Ugb2YgW2FkZF0sIGFuZCB0aGF0IHRoZSBvcGVyYXRpb25zIGZvclxuICAgICAgZGlmZmVyZW50IGtleXMgY2FuIGJlIHBlcmZvcm1lZCBpbiBhbnkgb3JkZXIuIE5vdGUgdGhhdCBbZGF0YV9lcXVhbF0gZGVmYXVsdHNcbiAgICAgIHRvIFtwaHlzX2VxdWFsXSwgYnV0IGEgbW9yZSBwcmVjaXNlIGVxdWFsaXR5IGNhbiBiZSBwcm92aWRlZCBpbnN0ZWFkLlxuXG4gICAgICBXaGVuIHRoZSBkYXRhIGZvciBhIGtleSB1cGRhdGVzLCBieSBkZWZhdWx0IFtyZW1vdmVdIGlzIGNhbGxlZCBvbiB0aGUgb2xkIGRhdGFcbiAgICAgIGFuZCB0aGVuIFthZGRdIGlzIGNhbGxlZCBvbiB0aGUgbmV3IGRhdGEuXG4gICAgICBbdXBkYXRlXSBwcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSBzaW5nbGUgZnVuY3Rpb24gdG8gY2FsbCBlYWNoIHRpbWUgYSBrZXkncyBkYXRhXG4gICAgICB1cGRhdGVzLCBhbmQgY2FuIGJlIHVzZWQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LlxuXG4gICAgICBGb3IgdGhlIGluaXRpYWwgY29tcHV0YXRpb24sIGJ5IGRlZmF1bHQgW2FkZF0gaXMgY2FsbGVkIG9uIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlXG4gICAgICBtYXAuIEFzIHRoaXMgY2FuIGJlIGluZWZmaWNpZW50LCBbc3BlY2lhbGl6ZWRfaW5pdGlhbF0gY2FuIGJlIHByb3ZpZGVkIHRvIHBlcmZvcm1cbiAgICAgIHRoZSBjb21wdXRhdGlvbiBpbiBhIG1vcmUgZWZmZWN0aXZlIHdheS5cblxuICAgICAgSWYgW3JldmVydF90b19pbml0X3doZW5fZW1wdHldIGlzIHRydWUsIHRoZW4gaWYgdGhlIGlucHV0IG1hcCB0cmFuc2l0aW9ucyBmcm9tXG4gICAgICBiZWluZyBmdWxsIHRvIGVtcHR5LCB0aGVuIGluc3RlYWQgb2YgY2FsbGluZyBbcmVtb3ZlXSBvbiBldmVyeSBrdi1wYWlyLCBpdCB3aWxsXG4gICAgICBpbnN0ZWFkIGp1c3Qgc2V0IHRoZSBvdXRwdXQgdG8gd2hhdGV2ZXIgeW91J3ZlIHBhc3NlZCBhcyBbaW5pdF0uXG4gICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBbcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eV0gaXMgW2ZhbHNlXSwgc28gdGhpcyBvcHRpbWl6YXRpb25cbiAgICAgIGRvZXMgbm90IGFwcGx5IGF1dG9tYXRpY2FsbHkuXG5cbiAgICAgIFtmaW5hbGl6ZV0gZGVmYXVsdHMgdG8gW0ZuLmlkXSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBhY2N1bXVsYXRvciB2YWx1ZVxuICAgICAgaXMgc3RvcmVkIGFuZCByZXR1cm5lZCBkdXJpbmcgc3RhYmlsaXphdGlvbi4gIFlvdSBjYW4gdXNlIGl0IHRvIGUuZy4gcHJvY2VzcyB0aGVcbiAgICAgIGZvbGQgb3BlcmF0aW9ucyBpbiBhIGRpZmZlcmVudCBvcmRlci4gKilcbiAgdmFsIHVub3JkZXJlZF9mb2xkXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gKCdhY2MsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXSBpcyBzaW1pbGFyIHRvIFt1bm9yZGVyZWRfZm9sZF0sIGJ1dCBpdCBhbHNvXG4gICAgICBkZXBlbmRzIG9uIGFub3RoZXIgYXJiaXRyYXJ5IGluY3JlbWVudGFsIHZhbHVlIHdoaWNoIGNhbiBiZSBmYWN0b3JlZCBpbnRvXG4gICAgICB0aGUgZm9sZGluZyBjb21wdXRhdGlvbi4gKilcbiAgdmFsIHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2V4dHJhX2VxdWFsOignZXh0cmEgLT4gJ2V4dHJhIC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgoJ2ssICd2LCAnZSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCdleHRyYSwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IGV4dHJhX2NoYW5nZWQ6XG4gICAgICAgICAob2xkX2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IG5ld19leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBpbnB1dDooJ2ssICd2LCAnZSkgTWFwLnRcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW2N1dG9mZl0gYXBwbGllcyBhIGN1dG9mZiB0byB2YWx1ZXMgaW4gdGhlIG1hcCBhcyB0aGV5IHBhc3MgdGhyb3VnaCB0aGVcbiAgICAgIGZ1bmN0aW9uLiAgSXQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGNhbGxpbmcgW0luY3JfbWFwLm1hcCddIHdpdGggYW5cbiAgICAgIFtJbmNyLnNldF9jdXRvZmZdIGluc2lkZSwgYnV0IHdpdGggY29uc2lkZXJhYmx5IGJldHRlciBwZXJmb3JtYW5jZSBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZS4gKilcbiAgdmFsIGN1dG9mZlxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY3V0b2ZmOid2IEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBHaXZlbiBhbiBpbnB1dCBtYXAgYW5kIGEgZnVuY3Rpb24gbWFwcGluZyBhIGt2LXBhaXIgdG8gYSBuZXdcbiAgICAgIHZhbHVlLCBbbWFwaV9jb3VudF0gd2lsbCBjb21wdXRlIGEgbXVsdGktc2V0IGtleWVkIG9uIHRoYXRcbiAgICAgIG5ldyB2YWx1ZS5cblxuICAgICAgQW55IHZhbHVlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgYSBjb3VudCBvZiBcIjBcIiBpcyBpbnN0ZWFkXG4gICAgICByZW1vdmVkIGZyb20gdGhlIG1hcC5cblxuICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IFtmXSBpcyBxdWl0ZSBmYXN0IGFzIHRoZSBmdW5jdGlvbiB3aWxsIGJlXG4gICAgICBjYWxsZWQgbW9yZSBvZnRlbiB0aGFuIHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IGl0IGRvZXMgdGhpc1xuICAgICAgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGluZyBhbiBleHRyYSBtYXAuICBJZiBbZl0gaXMgdmVyeSBzbG93XG4gICAgICBhbmQgeW91IGRvbid0IG1pbmQgdGhlIGV4dHJhIGFsbG9jYXRpb25zLCB1c2VcbiAgICAgIFtJbmNyX21hcC5pbmRleF9ieWldIGNvbXBvc2VkIHdpdGggW0luY3JfbWFwLm1hcCB+ZjpNYXAubGVuZ3RoXSAqKVxuICB2YWwgbWFwaV9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrMSwgJ3YsICdjbXAxKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrMSAtPiBkYXRhOid2IC0+ICdrMilcbiAgICAtPiAoKCdrMiwgaW50LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFRoZSBzYW1lIGFzIFttYXBpX2NvdW50XSBidXQgdGhlIFtmXSBmdW5jdGlvbiBvbmx5IGdldHMgdG8gc2VlIHRoZVxuICAgICAgZGF0YSBpbnN0ZWFkIG9mIGJvdGggdGhlIGtleSBhbmQgdGhlIGRhdGEuICopXG4gIHZhbCBtYXBfY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnazEsICd2LCAnY21wMSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdrMilcbiAgICAtPiAoKCdrMiwgaW50LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBpX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBpX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgc21hbGxlc3QgW3JdIHdoZXJlIFtyXSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyIGluIHRoZVxuICAgICAgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWFwX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIG1pbl92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIG1heF92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyBbbWluICogbWF4XSB3aGVyZSB0aGUgdmFsdWUgaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpclxuICAgICAgaW4gdGhlIGlucHV0IG1hcCAqKVxuICB2YWwgbWFwaV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCgnciAqICdyKSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIFttaW4gKiBtYXhdIHdoZXJlIHRoZSB2YWx1ZSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyXG4gICAgICBpbiB0aGUgaW5wdXQgbWFwICopXG4gIHZhbCBtYXBfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgoJ3IgKiAncikgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgc21hbGxlc3QgYW5kIGxhcmdlc3QgZGF0YSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCBtYXAuICopXG4gIHZhbCB2YWx1ZV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCgndiAqICd2KSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cblxuICAoKiogTGlrZSBbbWVyZ2VdIGluIFtCYXNlLk1hcC5tZXJnZV0uIE5vdGUgdGhhdCBbZl0gaXMgY2FsbGVkIGF0IG1vc3Qgb25jZSBwZXIga2V5IGluXG4gICAgICBhbnkgZ2l2ZW4gc3RhYmlsaXphdGlvbi4gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pXG4gICAgLT4gKCgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW21lcmdlX2JvdGhfc2FtZV0gaXMgbGlrZSBbbWVyZ2VdLCBidXQgb3B0aW1pemVkIGZvciB0aGUgY2FzZSB3aGVyZSB5b3Ugb25seSBjYXJlXG4gICAgICBhYm91dCB0aGUgY2FzZSB3aGVyZSBib3RoIG1hcHMgY29udGFpbiBhIHBhcnRpY3VsYXIga2V5LiAqKVxuICB2YWwgbWVyZ2VfYm90aF9zb21lXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ID9vdXRfZXF1YWw6KCd2MyAtPiAndjMgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+ICd2MSAtPiAndjIgLT4gJ3YzKVxuICAgIC0+ICgoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIExpa2UgW21lcmdlXSwgYnV0IG9wZXJhdGluZyB1c2luZyBpbmNyZW1lbnRhbCBub2Rlcy4gVGhpcyBpcyBhIGdvb2QgdXNlIGNhc2UgZm9yXG4gICAgICBbcHB4X3BhdHRlcm5fYmluZF0uICopXG4gIHZhbCBtZXJnZSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjooJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiAoKCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICgndjMgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCB1bnppcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gP3JpZ2h0X3Jlc3VsdF9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAnYSAqICdiLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAnYSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50ICogKCgnaywgJ2IsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW56aXBfbWFwaV0gaXMgc2ltaWxhciB0byBbTGlzdC51bnppcF0sIGJ1dCBmb3IgaW5jcmVtZW50YWwgbWFwcy4gTm90ZSB0aGF0IFtmXSBtYXlcbiAgICAgIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiBhIHNpbmdsZSBlbGVtZW50LiAqKVxuICB2YWwgdW56aXBfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICd2MSAqICd2MilcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICogKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3VuemlwX21hcGknXSBpcyBsaWtlIFt1bnppcF9tYXBpXSwgYnV0IGFsbG93cyB5b3UgdG8gZGVmaW5lIHRoZSBtYXBwaW5nIGZyb20gdGhlXG4gICAgICBpbnB1dCBtYXAncyBlbGVtZW50cyB0byB0aGUgb3V0cHV0IG1hcHMnIGVsZW1lbnRzIGluY3JlbWVudGFsbHkuXG5cbiAgICAgIFRoZSBuYWl2ZSBpbXBsZW1lbnRhdGlvbiAoc2VlIGJlbG93KSBwcm9kdWNlcyB3b3JzZSBJbmNyZW1lbnRhbCBncmFwaHMuXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCB0ZW1wID1cbiAgICAgICAgICBJbmNyX21hcC5tYXBpJyBpbnB1dCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgIGYgfmtleSB+ZGF0YSB8PiBUdXBsZTIudW5jdXJyeSBJbmNyLmJvdGgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsZWZ0ID0gSW5jcl9tYXAubWFwIHRlbXAgfmY6VHVwbGUyLmdldDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gSW5jcl9tYXAubWFwIHRlbXAgfmY6VHVwbGUyLmdldDIgaW5cbiAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgIF19ICopXG4gIHZhbCB1bnppcF9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2IEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6XG4gICAgICAgICAoa2V5OidrXG4gICAgICAgICAgLT4gZGF0YTooJ3YsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgKiAoJ3YyLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICogKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhpcyBpcyB0aGUgXCJlYXN5XCIgdmVyc2lvbiBvZiBbam9pbl0gKilcbiAgdmFsIGZsYXR0ZW5cbiAgICA6ICAndyBJbmNyZW1lbnRhbC5TdGF0ZS50XG4gICAgLT4gKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhlIG5vbi1pbmNyZW1lbnRhbCBzZW1hbnRpY3Mgb2YgdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgZnVuY3Rpb24uICBJdHNcbiAgICAgIHB1cnBvc2UgaXMgdG8gY29sbGFwc2UgdGhlIGV4dHJhIGxldmVsIG9mIGluY3JlbWVudGFsaXR5IGF0IHRoZSBsZXZlbCBvZiB0aGUgZGF0YSBvZlxuICAgICAgdGhlIG1hcC4qKVxuICB2YWwgam9pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHNlcGFyYXRlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBrZXlzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnYykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ2MpIFNldC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgW3JhbmtdIG9mIGEga2V5IChnaXZlbiBpbmNyZW1lbnRhbGx5KSBpbnNpZGUgb2YgYSBtYXAgKGFsc29cbiAgICAgIGluY3JlbWVudGFsKS4gIFRoZSB0cmFkaXRpb25hbCBbTWFwLnJhbmtdIGZ1bmN0aW9uIGlzIE8obiksIGFuZCB0aGlzIGluY3JlbWVudGFsXG4gICAgICByYW5rIGZ1bmN0aW9uIGhhcyB0aGUgZm9sbG93aW5nIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljczpcblxuICAgICAgZGVmaW5pdGlvbnM6XG4gICAgICBuIDogdGhlIHNpemUgb2YgdGhlIG1hcFxuICAgICAgciA6IHRoZSB0aW1lIHRvIGNvbXB1dGUgW01hcC5zeW1tZXRyaWNfZGlmZl0gYmV0d2VlbiB0aGUgdHdvIG1hcHNcbiAgICAgIGsgOiB0aGUgY2hhbmdlIGluIHJhbmsgb2YgdGhlIGtleSBiZXR3ZWVuIHR3byBzdGFiaWxpemF0aW9uc1xuXG4gICAgICBub3RlIHRoYXQgW3JdIGFuZCBba10gYXJlIF9tdWNoXyBzbWFsbGVyIHRoYW4gW25dIGZvciBtb3N0IHByYWN0aWNhbCBwdXJwb3Nlc1xuXG4gICAgICAtIE8obG9nIG4pIHdoZW4gdGhlIGtleSBpcyBub3QgaW4gdGhlIG1hcC5cbiAgICAgICAgVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3RoZXIgZXZlcnkgb3RoZXIgc2NlbmFyaW8uXG4gICAgICAtIE8obikgb24gdGhlIGluaXRpYWwgc3RhYmlsaXphdGlvblxuICAgICAgLSBPKG4pIHdoZW4gdGhlIGtleSB0cmFuc2l0aW9ucyBmcm9tIG5vdCBiZWluZyBpbiB0aGUgbWFwIHRvIGJlaW5nIGluIHRoZSBtYXBcbiAgICAgIC0gTyhsb2cgbiArIHIpIHdoZW4gdGhlIG1hcCBjaGFuZ2VzXG4gICAgICAtIE8obG9nIG4gKyBrKSB3aGVuIHRoZSBrZXkgY2hhbmdlc1xuICAgICAgLSBPKGxvZyBuICsgciArIGspIHdoZW4gYm90aCBrZXkgYW5kIG1hcCBjaGFuZ2UgKilcbiAgdmFsIHJhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIEJhc2UuTWFwLnQsICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCdrLCAnc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgIC0+IChpbnQgb3B0aW9uLCAnc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbc3VicmFuZ2UgbWFwIChtaW4sIG1heCldIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgc3VibWFwIHRoYXQgaW5jbHVkZXMgYWxsIG9mIHRoZVxuICAgICAga2V5cyBhbmQgZGF0YSBmcm9tIFttYXBdIGJldHdlZW4gW21pbl0gYW5kIFttYXhdLCBhbmQgbm9uZSBvZiB0aGUga2V5cyBvdXRzaWRlIHRoZVxuICAgICAgcmFuZ2UuXG5cbiAgICAgIFtzdWJyYW5nZSBtYXAgTm9uZV0gaXMgdGhlIGVtcHR5IG1hcC4gW3JhbmdlXSBiZWluZyBbTm9uZV0gbWVhbnMgbm8gZWxlbWVudHMgYXJlXG4gICAgICBjaG9zZW4uXG5cbiAgICAgIE5vdGUgdGhhdCBpbmNyZW1lbnRhbCBjaGFuZ2VzIGhhdmUgYSBydW50aW1lIG9mIE8oKGsgKyBtKSBsb2cgbikgd2hlcmUgayBpcyB0aGUgc2l6ZVxuICAgICAgb2YgdGhlIGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mIHRoZSBjaGFuZ2VzIHRvIHRoZVxuICAgICAgZWxlbWVudHMgY29udGFpbmVkIGJ5IHRoZSByYW5nZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhlIGluaXRpYWwgY29tcHV0YXRpb24gaXMgdGhlXG4gICAgICBzYW1lIGFzIHRoZSBpbmNyZW1lbnRhbCBjb21wdXRhdGlvbiwgd2l0aCBzb21lIHNpbXBsaWZpY2F0aW9uLiBrID0gMCBiZWNhdXNlIHdlIGhhdmVcbiAgICAgIG5vdCBtYWRlIGFueSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIG1hcCB5ZXQsIGFuZCBtIGVxdWFscyB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UsXG4gICAgICBiZWNhdXNlIHRoZSBpbml0aWFsIHJhbmdlIGlzIGVtcHR5LiAqKVxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICggKCdrIE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiAnayBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBvcHRpb25cbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtzdWJyYW5nZV9ieV9yYW5rIG1hcCAocywgZSldIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgc3VibWFwIHRoYXQgaW5jbHVkZXMgKGUtcysxKVxuICAgICAga2V5cyBiZXR3ZWVuIHMtdGggYW5kIGUtdGgsIGluY2x1c2l2ZS5cblxuICAgICAgSWYgcyBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIG1hcCBsZW5ndGgsIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gICAgICBJZiBlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gbWFwIGxlbmd0aCwgdGhlIHJlc3VsdCBjb250YWlucyBrZXlzIGZyb20gcy10aCB0byB0aGVcbiAgICAgIGxhc3Qgb25lLlxuXG4gICAgICBSYWlzZXMgZm9yIGludmFsaWQgaW5kaWNlcyAtIHMgPCAwIG9yIGUgPCBzLlxuXG4gICAgICBSdW50aW1lIG9mIHRoZSBpbml0aWFsIGNvbXB1dGF0aW9uIGlzIE8obWluKGUsIG4tcykgKyBsb2cobikpLCBpLmUuIGxpbmVhcixcbiAgICAgIGJ1dCBvcHRpbWl6ZWQgZm9yIHJhbmdlcyBjbG9zZSB0byBiZWdpbm5pbmcgb3IgZW5kLlxuXG4gICAgICBSdW50aW1lIG9mIHRoZSBpbmNyZW1lbnRhbCBjb21wdXRhdGlvbiBpcyBPKGxvZyhuKSArIGsgKyAobSttJykgKiBsb2cobikpIHdoZXJlOlxuICAgICAgLSBrIGlzIHRoZSBzaXplIG9mIHRoZSBkaWZmXG4gICAgICAtIG0gaXMgdGhlIHRvdGFsIGltcGFjdCBvZiBtYXAgY2hhbmdlcyBvbiB0aGUgcmFuZ2UsIGJvdW5kZWQgYnkgayAoZS5nLiBpZiB3ZSBhZGRcbiAgICAgICAgMTAwMSBrZXlzIGFuZCByZW1vdmUgMTAwMCBiZWxvdyBzLCB0aGVuIG0gPSAxKVxuICAgICAgLSBtJyA9IE8oIHxuZXcgcyAtIG9sZCBzfCArIHxuZXcgZSAtIG9sZCBlfCApLlxuICAqKVxuICB2YWwgc3VicmFuZ2VfYnlfcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCBpbnQgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbcmVrZXldIHRyYW5zZm9ybXMgYSBtYXAgYnkgbW9kaWZ5aW5nIHRoZSB0eXBlIG9mIHRoZSBrZXkuICBUaGUgdXNlciBpc1xuICAgICAgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgW2ZdIGRvZXNuJ3QgcmV0dXJuIHRoZSBzYW1lIG91dHB1dCBrZXkgZm9yXG4gICAgICBtdWx0aXBsZSBpbnB1dCBrZXlzLlxuXG4gICAgICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgW2ZdIGlzIGNoZWFwIHRvIGNvbXB1dGUgYW5kIGFjY29yZGluZ2x5IG1heSBjYWxsXG4gICAgICBpdCBtdWx0aXBsZSB0aW1lcy4gKilcbiAgdmFsIHJla2V5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2sxLCAndiwgJ2NtcDEpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCAndiwgJ2NtcDIpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbaW5kZXhfYnlpIG1hcCB+Y29tcGFyYXRvciB+aW5kZXhdIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgbWFwLW9mLW1hcHMgd2hlcmUgZWFjaFxuICAgICAga2V5LWRhdGEgcGFpciBvZiB0aGUgaW5wdXQgbWFwIGlzIHByZXNlbnQgaW4gb25lIChvciBub25lKSBvZiB0aGUgaW5uZXIgbWFwcy5cbiAgICAgIFtpbmRleF0gc3BlY2lmaWVzIHRoZSBvdXRlciBtYXAga2V5IHVuZGVyIHdoaWNoIGVhY2ggb3JpZ2luYWwga2V5LWRhdGEgcGFpciBpc1xuICAgICAgZm91bmQuXG5cbiAgICAgIEFsbCBvZiB0aGUgcmVzdWx0aW5nIGlubmVyIG1hcHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgbm9uLWVtcHR5OyBpZiB0aGUgaW5uZXIgbWFwXG4gICAgICB3b3VsZCBvdGhlcndpc2UgYmUgZW1wdHksIHRoZW4gdGhlIGtleSBmb3IgdGhhdCBtYXAgaXMgaW5zdGVhZCByZW1vdmVkIGZyb20gdGhlXG4gICAgICBvdXRlciBtYXAuXG5cbiAgICAgIEFuIGFsbC1hdC1vbmNlIHZlcnNpb24gb2YgW2luZGV4X2J5XSB3b3VsZCBsb29rIGxpa2U6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgIHw+IExpc3QuZmlsdGVyX21hcCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgaW5kZXggLT4gU29tZSAoaW5kZXgsIChrZXksIGRhdGEpKSlcbiAgICAgICAgICB8PiBNYXAub2ZfYWxpc3RfbXVsdGkgY29tcGFyYXRvclxuICAgICAgICAgIHw+IE1hcC5tYXAgfmY6KE1hcC5vZl9hbGlzdF9leG4gKE1hcC5jb21wYXJhdG9yX3MgbWFwKSlcbiAgICAgICAgOztcbiAgICAgIF19ICopXG4gIHZhbCBpbmRleF9ieWlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OihrZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdvdXRlcl9rZXkgb3B0aW9uKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtpbmRleF9ieSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4XSBpcyBsaWtlIFtpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleF0sIGJ1dFxuICAgICAgdGhlIFtpbmRleF0gZnVuY3Rpb24gZG9lcyBub3QgdGFrZSB0aGUgaW5uZXIgbWFwJ3MgW2tleV0uICopXG4gIHZhbCBpbmRleF9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KCd2IC0+ICdvdXRlcl9rZXkgb3B0aW9uKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiA/dXBkYXRlOlxuICAgICAgICAgKG91dGVyX2tleTonb3V0ZXJfa2V5XG4gICAgICAgICAgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXlcbiAgICAgICAgICAtPiBvbGRfZGF0YTondlxuICAgICAgICAgIC0+IG5ld19kYXRhOid2XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KG91dGVyX2tleTonb3V0ZXJfa2V5IC0+IGlubmVyX2tleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZToob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gKCdhY2MsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt0cmFuc3Bvc2VdIGZsaXBzIHRoZSBvcmRlciBvZiBhIGRvdWJseSBuZXN0ZWQgaW5jcmVtZW50YWwgbWFwLlxuXG4gICAgICBBbGwgaW5uZXIgbWFwIGluc3RhbmNlcyB3aWxsIGhhdmUgYXQgbGVhc3Qgb25lIGVsZW1lbnQuICopXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMiwgJ2syX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgoJ2sxLCAoJ2syLCAndiwgJ2syX2NtcCkgTWFwLnQsICdrMV9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2syLCAoJ2sxLCAndiwgJ2sxX2NtcCkgTWFwLnQsICdrMl9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb2xsYXBzZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICggJ291dGVyX2tleSAqICdpbm5lcl9rZXlcbiAgICAgICAgICwgJ3ZcbiAgICAgICAgICwgKCdvdXRlcl9jbXAsICdpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3MgKVxuICAgICAgICAgICBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbY29sbGFwc2VfYnldIGlzIHNpbWlsYXIgdG8gW2NvbGxhcHNlXSwgYnV0IGl0IGFsbG93cyB0aGUgdXNlciB0b1xuICAgICAgY2hvb3NlIGhvdyB0byBjb21iaW5lIHRoZSB0d28ga2V5cyBmcm9tIHRoZSBvdXRlciBhbmQgaW5uZXIgbWFwcy5cbiAgICAgIFRoaXMgZG9lcyBtZWFuIHRoYXQgaXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGltcGxlbWVudG9yIG9mIHRoZVxuICAgICAgW21lcmdlX2tleXNdIGZ1bmN0aW9uIHRvIHVwaG9sZCB0aGlzIGludmFyaWFudDpcblxuICAgICAgPiBhIG1lcmdlZC1rZXkgYmVpbmcgZXF1YWwgdG8gYW5vdGhlciBtZXJnZWQta2V5IGltcGxpZXMgdGhhdCB0aGVcbiAgICAgID4gb3V0ZXIta2V5cyBhbmQgaW5uZXIta2V5cyB3aGljaCB3ZXJlIHVzZWQgdG8gYnVpbGQgdGhlIG1lcmdlZCBrZXlzIGFsc29cbiAgICAgID4gY29tcGFyZSB0byBiZSBlcXVhbCB0byBvbmUgYW5vdGhlclxuXG4gICAgICBUaGUgW35jb21wYXJhdG9yXSBhcmd1bWVudCB0aGUgZmlyc3QtY2xhc3MgbW9kdWxlIG9mIHRoZSBvdXRwdXQga2V5LCBpdFxuICAgICAgdXN1YWxseSBsb29rcyBsaWtlIHRoaXM6XG4gICAgICBbIH5jb21wYXJhdG9yOihtb2R1bGUgQ29tYmluZWRfa2V5KSBdXG4gICAgICBidXQgbWFrZSBzdXJlIHRoYXQgdGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBbQ29tcGFyYXRvci5TXSBzaWduYXR1cmUuICopXG4gIHZhbCBjb2xsYXBzZV9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IG1lcmdlX2tleXM6KCdvdXRlcl9rZXkgLT4gJ2lubmVyX2tleSAtPiAnY29tYmluZWRfa2V5KVxuICAgIC0+IGNvbXBhcmF0b3I6KCdjb21iaW5lZF9rZXksICdjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoKCdjb21iaW5lZF9rZXksICd2LCAnY29tYmluZWRfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29udmVydCBhIG1hcCB3aXRoIHR1cGxlcyBmb3Iga2V5cyBpbnRvIGEgbmVzdGVkIG1hcC4gVGhpcyBvcGVyYXRpb24gaXMgcm91Z2hseSB0aGVcbiAgICAgIGludmVyc2Ugb2YgW2NvbGxhcHNlXSwgdGhvdWdoIGlmIHRoZXJlIGFyZSBvdXRlciBrZXlzIGluIHRoZSB1bmNvbGxhcHNlZCBtYXAgdGhhdFxuICAgICAgY29ycmVzcG9uZCB0byBlbXB0eSBpbm5lciBtYXBzLCB0aGUgb3V0ZXIga2V5cyB3aWxsIGJlIGRyb3BwZWQgZnJvbSB0aGUgZXhwYW5kZWRcbiAgICAgIG1hcC4gKilcbiAgdmFsIGV4cGFuZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5LCAndiwgJ3R1cGxlX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gb3V0ZXJfY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGlubmVyX2NvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb3VudGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKGludCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoaW50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmb3JfYWxsaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoYm9vbCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZm9yX2FsbFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBleGlzdHNpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBleGlzdHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoYm9vbCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogSW5jcmVtZW50YWxseSBjb21wdXRlIHRoZSBzdW0gb2YgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIG1hcC5cblxuICAgICAgQmV3YXJlIG9mIGZsb2F0J3MgbmVnYXRpdmUgaW5maW5pdGllcy4gVGhleSBhcmVuJ3QgY29tbXV0YXRpdmUgYW5kIHdpbGwgbWlzYmVoYXZlXG4gICAgICBoZXJlLlxuICAqKVxuICB2YWwgc3VtXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IChtb2R1bGUgQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSAndSlcbiAgICAtPiBmOigndiAtPiAndSlcbiAgICAtPiAoJ3UsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFsoJ2ssICd2KSBMb29rdXAudF0gcHJvdmlkZXMgYSB3YXkgdG8gbG9va3VwIGtleXMgaW4gYSBtYXAgd2hpY2ggdXNlcyBzeW1tZXRyaWNcbiAgICAgIGRpZmZzIHRvIHRyaWdnZXIgdXBkYXRlcyBvZiB0aGUgbG9va3Vwcy5cblxuICAgICAgVGhlIGNvbXBsZXhpdHkgb2YgYW4gdXBkYXRlIGRlcGVuZHMgb246XG4gICAgICAtIFtuXTogdGhlIG51bWJlciBvZiBrZXlzIGluIHRoZSBsYXJnZXIgb2YgdGhlIG9sZC91cGRhdGVkIGlucHV0IG1hcFxuICAgICAgLSBba106IHRoZSBudW1iZXIgb2YgbG9va3VwIG5vZGVzIGNyZWF0ZWQgdXNpbmcgW2ZpbmRdXG4gICAgICAtIFttXTogdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc3ltZGlmZiBvZiB0aGUgbWFwc1xuICAgICAgLSBbc3ltZGlmZihuKV06IHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhlIHN5bWRpZmYgb24gdGhlIG1hcCAobSA8PSBzeW1kaWZmKG4pIDw9IG4pXG5cbiAgICAgIEVhY2ggdXBkYXRlIHNob3VsZCBjb3N0IFtPKHN5bWRpZmYobikgKyBtICogbG9nIGspXSwgc28gdGhpcyB3aWxsIGJlIGVmZmljaWVudCB3aGVuXG4gICAgICB0aGVyZSBhcmUgYSBsb3Qgb2YgbG9va3VwcyAoY2xvc2UgdG8gbikgaW50byBhIG1hcCB3aGljaCBjYW4gYmUgZWZmaWNpZW50bHlcbiAgICAgIHN5bWRpZmZlZCAoYW5kIHRoZXJlZm9yZSBoYXMgYSBzbWFsbCBudW1iZXIgb2YgY2hhbmdlcyBhbHNvKS4gVGhlIGNvc3Qgb2YgdXBkYXRpbmdcbiAgICAgIHdoZW4gcGVyZm9ybWluZyB0aGUgc2FtZSBsb29rdXBzIGJ5IG1lYW5zIG9mIFtJbmNyLm1hcCB+ZjooZnVuIG0gLT4gTWFwLmZpbmQgbSBrZXkpXVxuICAgICAgaXMgW08oayAqIGxvZyBuKV0uXG4gICopXG4gIG1vZHVsZSBMb29rdXAgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0XG5cbiAgICAoKiogQ3JlYXRlIHRoZSBsb29rdXAgc3RydWN0dXJlIG9uIGFuIGluY3JlbWVudGFsIG1hcC4gKilcbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXAsICd3KSB0XG5cbiAgICAoKiogQ3JlYXRlIGEgbm9kZSB3aGljaCBwZXJmb3JtcyBbTWFwLmZpbmRdIG9uIHRoZSBpbnB1dCBtYXAuXG5cbiAgICAgICAgW2ZpbmQgKGNyZWF0ZSBpbmNyX21hcCkga2V5XSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byBbSW5jci5tYXAgfmY6KGZ1biBtIC0+XG4gICAgICAgIE1hcC5maW5kIG0ga2V5KSBpbmNyX21hcF0sIGJ1dCB3aGVuIHlvdSBjYWxsIFtmaW5kXSBtYW55IHRpbWVzIGZvciBhIHNpbmdsZVxuICAgICAgICBbY3JlYXRlXSB0aGUgbm9kZXMgc2hvdWxkIHVwZGF0ZSBtb3JlIGVmZmljaWVudGx5IGluIHN0YWJpbGlzYXRpb24gd2hlbiBbaW5jcl9tYXBdXG4gICAgICAgIGNoYW5nZXMgaW4gYSB3YXkgd2hpY2ggY2FuIGJlIGVmZmljaWVudGx5IGRpZmZlZC5cblxuICAgICAgICBUaGlzIHdpbGwgcmUtdXNlIGV4aXN0aW5nIG5vZGVzIHdoZW4gaXQgY2FuLCBidXQgd2lsbCBub3QgYWx3YXlzIGRvIHNvLlxuICAgICopXG4gICAgdmFsIGZpbmQgOiAoJ2ssICd2LCBfLCAndykgdCAtPiAnayAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICAgKCoqIEEgY29udmVuaWVudCB3YXkgdG8gcmVmZXIgdG8gdGhlIHR5cGUgZm9yIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgKCd2LCAndykgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcywgJ3cpIHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgOiBzaWdcbiAgICAgIHZhbCBzZXhwX29mX3QgOiAoJ2sgLT4gU2V4cC50KSAtPiAoJ3YgLT4gU2V4cC50KSAtPiAoJ2ssICd2LCAnY21wLCBfKSB0IC0+IFNleHAudFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB2YWwgZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gICAgICA6ICBmcm9tOmludFxuICAgICAgLT4gdG9fOmludFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIEJhc2UuTWFwLnRcbiAgICAgIC0+ICgnYSAqICdhIG9wdGlvbikgb3B0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFNfZ2VuID0gU19nZW5cblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBzdGF0ZV93aXRuZXNzXG5cbiAgICBpbmNsdWRlXG4gICAgICBTX2dlblxuICAgICAgd2l0aCB0eXBlICdhIEluY3IudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgIGFuZCB0eXBlICdhIEluY3IuQ3V0b2ZmLnQgPSAnYSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgTG9va3VwLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TKSA6XG4gICAgUyB3aXRoIHR5cGUgc3RhdGVfd2l0bmVzcyA6PSBJbmNyLnN0YXRlX3dpdG5lc3MgYW5kIG1vZHVsZSBJbmNyIDo9IEluY3JcbmVuZFxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBJbmNyX21hcF9pbnRmXG5cbmxldCBub19pbnN0cnVtZW50YXRpb24gPSB7IEluc3RydW1lbnRhdGlvbi5mID0gKGZ1biBmIC0+IGYgKCkpIH1cblxuKCoqIFRoaXMgdHlwZSBsZXRzIHVzIGNhcHR1cmUgdGhlIGtpbmQgb2YgbWFwIGZ1bmN0aW9uIGJlaW5nIHBlcmZvcm1lZCwgc28gd2UgY2FuIHdpdGhcbiAgICBvbmUgaW1wbGVtZW50YXRpb24gcGVyZm9ybSBtYXAgYW5kIGZpbHRlci1tYXAgb3BlcmF0aW9ucy5cblxuICAgIEhlcmUsIFsnaW5wdXRfZGF0YV0gaXMgdGhlIHR5cGUgb2YgZGF0YSBpbiB0aGUgaW5wdXQgbWFwLCBbJ291dHB1dF9kYXRhXSBpcyB0aGUgdHlwZVxuICAgIG9mIGRhdGEgaW4gdGhlIG91dHB1dCBtYXAsIGFuZCBbJ2Zfb3V0cHV0XSBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIFt+Zl0gZnVuY3Rpb25cbiAgICBwYXNzZWQgdG8gdGhlIG1hcHBpbmcgZnVuY3Rpb24uICopXG5tb2R1bGUgTWFwX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ2Zfb3V0cHV0KSB0ID1cbiAgICB8IE1hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEpIHRcbiAgICB8IEZpbHRlcl9tYXAgOiAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhIG9wdGlvbikgdFxuXG4gICgqIFRoZSBleHRyYSB0eXBlIHZhcmlhYmxlICdhIGlzIHRvIGFsbG93IGluIGZ1dHVyZTpcbiAgICAgfCBGaWx0ZXIgOiAoJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsIGJvb2wpIHQgKilcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBsZXQgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBpIH5mID1cbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0IG9sZCA9IHJlZiBOb25lIGluXG4gICAgbGV0JW1hcCBhID0gaSBpblxuICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICBsZXQgYiA9IGYgfm9sZDohb2xkIGEgaW5cbiAgICAgIG9sZCA6PSBTb21lIChhLCBiKTtcbiAgICAgIGIpXG4gIDs7XG5cbiAgbGV0IGN1dG9mZiA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwIH5jdXRvZmYgPVxuICAgIGxldCBkYXRhX2VxdWFsIG9sZF92YWx1ZSBuZXdfdmFsdWUgPVxuICAgICAgSW5jcmVtZW50YWwuQ3V0b2ZmLnNob3VsZF9jdXRvZmYgY3V0b2ZmIH5vbGRfdmFsdWUgfm5ld192YWx1ZVxuICAgIGluXG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIGN1ciAtPlxuICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjdXJcbiAgICAgIHwgU29tZSAoX29sZF9pbiwgb2xkKSAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiB+ZGF0YV9lcXVhbCB+aW5pdDpvbGQgb2xkIGN1ciB+ZjooZnVuIGFjYyAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICB8IGBMZWZ0IF9vbGQgLT4gTWFwLnJlbW92ZSBhY2Mga2V5XG4gICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBNYXAuYWRkX2V4biBhY2MgfmtleSB+ZGF0YTpuZXdfXG4gICAgICAgICAgfCBgVW5lcXVhbCAoX29sZCwgbmV3X3ZhbHVlKSAtPiBNYXAuc2V0IGFjYyB+a2V5IH5kYXRhOm5ld192YWx1ZSkpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KGZpbmFsaXplID0gRm4uaWQpXG4gICAgICAgID8ocmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSA9IGZhbHNlKVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbGV0IGRlZmF1bHQgfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyA9XG4gICAgICAgIGFkZCB+a2V5IH5kYXRhOm5ld19kYXRhIChyZW1vdmUgfmtleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgICBpblxuICAgICAgT3B0aW9uLnZhbHVlIHVwZGF0ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIG5ld19pbiAtPlxuICAgICAgbGV0IGFjYyA9XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBzcGVjaWFsaXplZF9pbml0aWFsIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE1hcC5mb2xkIH5pbml0IH5mOmFkZCBuZXdfaW5cbiAgICAgICAgICAgfCBTb21lIGluaXRpYWwgLT4gaW5pdGlhbCB+aW5pdCBuZXdfaW4pXG4gICAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfb3V0KSAtPlxuICAgICAgICAgIGlmIHJldmVydF90b19pbml0X3doZW5fZW1wdHkgJiYgTWFwLmxlbmd0aCBuZXdfaW4gPSAwXG4gICAgICAgICAgdGhlbiBpbml0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmluaXQ6b2xkX291dFxuICAgICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgICAgbmV3X2luXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgb2xkIC0+IHJlbW92ZSB+a2V5IH5kYXRhOm9sZCBhY2NcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjXG4gICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkLCBuZXdfKSAtPiB1cGRhdGUgfmtleSB+b2xkX2RhdGE6b2xkIH5uZXdfZGF0YTpuZXdfIGFjYylcbiAgICAgIGluXG4gICAgICBmaW5hbGl6ZSBhY2MpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBpbmNyX21hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBtYXRjaCB1cGRhdGUgd2l0aFxuICAgICAgfCBTb21lIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkXG4gICAgICAgICAgICB+b3V0ZXJfa2V5XG4gICAgICAgICAgICB+aW5uZXJfa2V5XG4gICAgICAgICAgICB+ZGF0YTpuZXdfZGF0YVxuICAgICAgICAgICAgKHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIGluY3JfbWFwXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5Om91dGVyX2tleSB+b2xkX2RhdGE6b2xkX2lubmVyX21hcCB+bmV3X2RhdGE6bmV3X2lubmVyX21hcCBhY2MgLT5cbiAgICAgICAgKE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIG9sZF9pbm5lcl9tYXAgbmV3X2lubmVyX21hcCB+ZGF0YV9lcXVhbClcbiAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoaW5uZXJfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IGRhdGFfcmVtb3ZlZCAtPiByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfcmVtb3ZlZCBhY2NcbiAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfYWRkZWQgLT4gYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpkYXRhX2FkZGVkIGFjY1xuICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkX2RhdGEsIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICB1cGRhdGUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjKSBbQG5vbnRhaWxdKVxuICAgICAgfmFkZDooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIGFkZCB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gIDs7XG5cbiAgbGV0IHdpdGhfY29tcGFyYXRvcicgZ2V0X2NvbXBhcmF0b3IgeCBmID1cbiAgICBJbmNyZW1lbnRhbC5iaW5kIChJbmNyZW1lbnRhbC5mcmVlemUgKEluY3JlbWVudGFsLm1hcCB4IH5mOmdldF9jb21wYXJhdG9yKSkgfmZcbiAgOztcblxuICAoKiogQ2FwdHVyZXMgdGhlIGNvbXBhcmF0b3IgKHdoaWNoIGNhbid0IGNoYW5nZSBhbnl3YXksIHNpbmNlIHRoZSB0eXBlIGRldGVybWluZXMgdGhlXG4gICAgICBjb21wYXJhdG9yKSBieSBmcmVlemluZyB0aGUgY29ycmVzcG9uZGluZyBtYXAuICBOb3RlIHRoYXQgYnkgZmlyc3QgdXNpbmcgSW5jcmVtZW50YWwubWFwIHRvXG4gICAgICBnZXQgdGhlIGNvbXBhcmF0b3Igb3V0IG9mIHRoZSBtYXAsIHdlIGFsbG93IHRoZSBpbml0aWFsIG1hcCBpdHNlbGYgdG8gYmUgZ2FyYmFnZVxuICAgICAgY29sbGVjdGVkICopXG4gIGxldCB3aXRoX2NvbXBhcmF0b3IgbWFwIGYgPSB3aXRoX2NvbXBhcmF0b3InIE1hcC5jb21wYXJhdG9yIG1hcCBmXG5cbiAgbGV0IG9mX3NldCA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgc2V0ID1cbiAgICB3aXRoX2NvbXBhcmF0b3InIFNldC5jb21wYXJhdG9yIHNldCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBvbGRfaW5wdXQgPSByZWYgKFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgbGV0IG9sZF9vdXRwdXQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgSW5jcmVtZW50YWwubWFwIHNldCB+ZjooZnVuIG5ld19pbnB1dCAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBuZXdfb3V0cHV0ID1cbiAgICAgICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICAgICAgKFNldC5zeW1tZXRyaWNfZGlmZiAhb2xkX2lucHV0IG5ld19pbnB1dClcbiAgICAgICAgICAgICAgfmluaXQ6IW9sZF9vdXRwdXRcbiAgICAgICAgICAgICAgfmY6KGZ1biBvdXRwdXQgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEZpcnN0IGsgLT4gTWFwLnJlbW92ZSBvdXRwdXQga1xuICAgICAgICAgICAgICAgIHwgU2Vjb25kIGsgLT4gTWFwLmFkZF9leG4gb3V0cHV0IH5rZXk6ayB+ZGF0YTooKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG9sZF9pbnB1dCA6PSBuZXdfaW5wdXQ7XG4gICAgICAgICAgb2xkX291dHB1dCA6PSBuZXdfb3V0cHV0O1xuICAgICAgICAgIG5ld19vdXRwdXQpKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXAgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOmlucHV0X2RhdGEgLT4gZl9vdXRwdXQpXG4gICAgPVxuICAgIHdpdGhfb2xkIH5pbnN0cnVtZW50YXRpb24gbWFwIH5mOihmdW4gfm9sZCBpbnB1dCAtPlxuICAgICAgbWF0Y2ggb2xkLCBNYXAubGVuZ3RoIGlucHV0IHdpdGhcbiAgICAgIHwgXywgMCB8IE5vbmUsIF8gLT5cbiAgICAgICAgKG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gKE1hcC5tYXBpIGlucHV0IH5mIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudClcbiAgICAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPiBNYXAuZmlsdGVyX21hcGkgaW5wdXQgfmYpXG4gICAgICB8IFNvbWUgKG9sZF9pbnB1dCwgb2xkX291dHB1dCksIF8gLT5cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICBvbGRfaW5wdXRcbiAgICAgICAgICBpbnB1dFxuICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgfmluaXQ6b2xkX291dHB1dFxuICAgICAgICAgIH5mOihmdW4gb3V0cHV0IChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICB8IGBSaWdodCBuZXdfZGF0YSB8IGBVbmVxdWFsIChfLCBuZXdfZGF0YSkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlcyA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhOnJlc1xuICAgICAgICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICAgICAgICAgICAgfCBTb21lIG91dHB1dF9kYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6b3V0cHV0X2RhdGEpKSkpXG4gIDs7XG5cbiAgbGV0IG1hcGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZ2VuZXJpY19tYXBpIE1hcCB+aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBnZW5lcmljX21hcGkgRmlsdGVyX21hcCB+aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZlxuICA7O1xuXG4gIGxldCBtYXAgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBmaWx0ZXJfbWFwaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIGkxIGkyIH5mID1cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAyIGkxIGkyIH5mOihmdW4gYTEgYTIgLT5cbiAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYTEgYTIgaW5cbiAgICAgICAgb2xkIDo9IFNvbWUgKGExLCBhMiwgYik7XG4gICAgICAgIGIpKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGV4dHJhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KGZpbmFsaXplID0gRm4uaWQpXG4gICAgICAgID8ocmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSA9IGZhbHNlKVxuICAgICAgICBtYXBcbiAgICAgICAgZXh0cmFcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgICAgIH5leHRyYV9jaGFuZ2VkXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbGV0IGRlZmF1bHQgfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyBleHRyYSA9XG4gICAgICAgIGFkZCB+a2V5IH5kYXRhOm5ld19kYXRhIChyZW1vdmUgfmtleSB+ZGF0YTpvbGRfZGF0YSBhY2MgZXh0cmEpIGV4dHJhXG4gICAgICBpblxuICAgICAgT3B0aW9uLnZhbHVlIHVwZGF0ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gbWFwIGV4dHJhIH5mOihmdW4gfm9sZCBuZXdfaW4gbmV3X2V4dHJhIC0+XG4gICAgICBsZXQgYWNjID1cbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNwZWNpYWxpemVkX2luaXRpYWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBNYXAuZm9sZCBuZXdfaW4gfmluaXQgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgfmtleSB+ZGF0YSBhY2MgbmV3X2V4dHJhKVxuICAgICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbiBuZXdfZXh0cmEpXG4gICAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfZXh0cmEsIG9sZF9vdXQpIC0+XG4gICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICBpZiBleHRyYV9lcXVhbCBvbGRfZXh0cmEgbmV3X2V4dHJhXG4gICAgICAgICAgICB0aGVuIG9sZF9vdXRcbiAgICAgICAgICAgIGVsc2UgZXh0cmFfY2hhbmdlZCB+b2xkX2V4dHJhIH5uZXdfZXh0cmEgfmlucHV0Om9sZF9pbiBvbGRfb3V0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiByZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ICYmIE1hcC5sZW5ndGggbmV3X2luID0gMFxuICAgICAgICAgIHRoZW4gaW5pdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgICAgbmV3X2luXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgb2xkIC0+IHJlbW92ZSB+a2V5IH5kYXRhOm9sZCBhY2MgbmV3X2V4dHJhXG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBhZGQgfmtleSB+ZGF0YTpuZXdfIGFjYyBuZXdfZXh0cmFcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+XG4gICAgICAgICAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6b2xkIH5uZXdfZGF0YTpuZXdfIGFjYyBuZXdfZXh0cmEpXG4gICAgICBpblxuICAgICAgZmluYWxpemUgYWNjKVxuICA7O1xuXG4gIGxldCBtYXBpX2NvdW50XG4gICAgICAgICh0eXBlIGEgY21wKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgaW5wdXRcbiAgICAgICAgfihjb21wYXJhdG9yIDogKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcCkpXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9ICh2YWwgY29tcGFyYXRvcikgaW5cbiAgICBsZXQgYWRkIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC51cGRhdGUgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgIHwgU29tZSBuIC0+IG4gKyAxKVxuICAgIGluXG4gICAgbGV0IHJlbW92ZSBuZXdfa2V5IGFjYyA9XG4gICAgICBNYXAuY2hhbmdlIGFjYyBuZXdfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgMSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBuIC0+IFNvbWUgKG4gLSAxKSlcbiAgICBpblxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgKGYgfmtleSB+ZGF0YSkgYWNjKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgTS5jb21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkgbmV3X2tleSA9IDBcbiAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgZWxzZSBhY2MgfD4gcmVtb3ZlIHByZXZfa2V5IHw+IGFkZCBuZXdfa2V5KVxuICA7O1xuXG4gIGxldCBtYXBfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtaW4sIF8pIC0+IFNvbWUgbWluXG4gIDs7XG5cbiAgbGV0IG1heF9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWF4X2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtYXgsIF8pIC0+IFNvbWUgbWF4XG4gIDs7XG5cbiAgbGV0IGJvdW5kc19oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAsIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXyksIFNvbWUgKG1heCwgXykgLT4gU29tZSAobWluLCBtYXgpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBtYXBpX21pbiA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIH5mOm1pbl9oZWxwZXJcbiAgICAgIChtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgfmY6bWF4X2hlbHBlclxuICAgICAgKG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICB+Zjpib3VuZHNfaGVscGVyXG4gICAgICAobWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWFwX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl92YWx1ZSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWF4X3ZhbHVlID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXBfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgdmFsdWVfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICB+b2xkXG4gICAgICAgIH5uZXdfbGVmdF9tYXBcbiAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgfmRhdGFfZXF1YWxfbGVmdFxuICAgICAgICB+ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG5ld19sZWZ0X21hcCBpblxuICAgIGxldCBvbGRfbGVmdF9tYXAsIG9sZF9yaWdodF9tYXAsIG9sZF9vdXRwdXQgPVxuICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGVmdF9kaWZmID1cbiAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfbGVmdF9tYXAgbmV3X2xlZnRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfbGVmdFxuICAgIGluXG4gICAgbGV0IHJpZ2h0X2RpZmYgPVxuICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9yaWdodF9tYXAgbmV3X3JpZ2h0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX3JpZ2h0XG4gICAgaW5cbiAgICAoKiBXZSBtZXJnZSB0aGUgdHdvIHNpZGVzIG9mIHRoZSBkaWZmcyB0b2dldGhlciBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRvIGhhbmRsZSBlYWNoXG4gICAgICAga2V5IGV4YWN0bHkgb25jZS4gVGhpcyByZWxpZXMgb24gc3ltbWV0cmljIGRpZmYgZ2l2aW5nIHNvcnRlZCBvdXRwdXQuICopXG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICBsZWZ0X2RpZmZcbiAgICAgIHJpZ2h0X2RpZmZcbiAgICAgIH5jb21wYXJlOihmdW4gKGxlZnRfa2V5LCBfKSAocmlnaHRfa2V5LCBfKSAtPiBjb21wYXJhdG9yLmNvbXBhcmUgbGVmdF9rZXkgcmlnaHRfa2V5KVxuICAgIHw+IFNlcXVlbmNlLmZvbGQgfmluaXQ6b2xkX291dHB1dCB+ZjooZnVuIG91dHB1dCBkaWZmX2VsZW1lbnQgLT5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICB8IExlZnQgKGtleSwgXykgfCBSaWdodCAoa2V5LCBfKSAtPiBrZXlcbiAgICAgICAgfCBCb3RoICgobGVmdF9rZXksIF8pLCAoX3JpZ2h0X2tleSwgXykpIC0+XG4gICAgICAgICAgKCogY29tcGFyaXNvbiBmdW5jdGlvbnMgY2FuIGJlIGV4cGVuc2l2ZSEgKilcbiAgICAgICAgICAoKiBhc3NlcnQgKGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkgPSAwKTsgKilcbiAgICAgICAgICBsZWZ0X2tleVxuICAgICAgaW5cbiAgICAgIGYgfm9sZF9vdXRwdXQgfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQpXG4gIDs7XG5cbiAgbGV0IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gIDs7XG5cbiAgbGV0IG1lcmdlXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWxfbGVmdCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZGF0YV9lcXVhbF9yaWdodCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGxlZnRfbWFwXG4gICAgICAgIHJpZ2h0X21hcFxuICAgICAgICB+ZlxuICAgID1cbiAgICB3aXRoX29sZDJcbiAgICAgIGxlZnRfbWFwXG4gICAgICByaWdodF9tYXBcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5mOihmdW4gfm9sZCBuZXdfbGVmdF9tYXAgbmV3X3JpZ2h0X21hcCAtPlxuICAgICAgICBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICAgIH5vbGRcbiAgICAgICAgICB+bmV3X2xlZnRfbWFwXG4gICAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgICB+ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICAgICAgfmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgICAgICB+ZjooZnVuIH5vbGRfb3V0cHV0Ol8gfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgICAgICgqIFRoZXNlIHZhbHVlcyByZXByZXNlbnQgd2hldGhlciB0aGVyZSBpcyBkYXRhIGZvciB0aGUgZ2l2ZW4ga2V5IGluIHRoZSBuZXdcbiAgICAgICAgICAgICAgIGlucHV0IGluIHRoZSBsZWZ0IGFuZCByaWdodCBtYXAuICopXG4gICAgICAgICAgICBsZXQgbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgPVxuICAgICAgICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICB8IEJvdGggKChfLCBsZWZ0X2RpZmYpLCAoXywgcmlnaHRfZGlmZikpIC0+XG4gICAgICAgICAgICAgICAgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmLCBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmXG4gICAgICAgICAgICAgIHwgTGVmdCAoXywgbGVmdF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiwgTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXlcbiAgICAgICAgICAgICAgfCBSaWdodCAoXywgcmlnaHRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICBNYXAuZmluZCBuZXdfbGVmdF9tYXAga2V5LCBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG91dHB1dF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGxlZnRfZGF0YV9vcHQsIHJpZ2h0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIHgsIE5vbmUgLT4gZiB+a2V5IChgTGVmdCB4KVxuICAgICAgICAgICAgICB8IE5vbmUsIFNvbWUgeSAtPiBmIH5rZXkgKGBSaWdodCB5KVxuICAgICAgICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGYgfmtleSAoYEJvdGggKHgsIHkpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIG91dHB1dF9kYXRhX29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKSlcbiAgOztcblxuICBsZXQgbWVyZ2VfYm90aF9zb21lXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWxfbGVmdCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZGF0YV9lcXVhbF9yaWdodCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8ob3V0X2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMlxuICAgICAgbGVmdF9tYXBcbiAgICAgIHJpZ2h0X21hcFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbmV3X2xlZnRfbWFwIGluXG4gICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgIG1hdGNoIE1hcC5sZW5ndGggbmV3X2xlZnRfbWFwLCBNYXAubGVuZ3RoIG5ld19yaWdodF9tYXAgd2l0aFxuICAgICAgICAoKiBCZWNhdXNlIHdlIG9ubHkgY2FyZSBhYm91dCBrZXlzIHRoYXQgYXJlIGluIGJvdGggbWFwcywgaWYgZWl0aGVyIG1hcCBpc1xuICAgICAgICAgICBlbXB0eSwgYmFpbCBlYXJseS4gKilcbiAgICAgICAgfCAwLCBfIHwgXywgMCAtPiBlbXB0eVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICAgICAgfm9sZFxuICAgICAgICAgICAgfm5ld19sZWZ0X21hcFxuICAgICAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsX2xlZnRcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICAgICAgICB+ZjooZnVuIH5vbGRfb3V0cHV0IH5rZXkgfm91dHB1dCB+ZGlmZl9lbGVtZW50IC0+XG4gICAgICAgICAgICAgIGxldCBsZWZ0X2FuZF9yaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICAgIHwgQm90aCAoKF8sIGxlZnRfZGlmZiksIChfLCByaWdodF9kaWZmKSkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIGxlZnRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCByaWdodF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgcmlnaHRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGVmdF9kYXRhLCByaWdodF9kYXRhXG4gICAgICAgICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQlYmluZCBsZWZ0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgcmlnaHRfZGF0YSA9IE1hcC5maW5kIG5ld19yaWdodF9tYXAga2V5IGluXG4gICAgICAgICAgICAgICAgICBsZWZ0X2RhdGEsIHJpZ2h0X2RhdGFcbiAgICAgICAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBtYXRjaCBhcm0gYmluZHMgW3JpZ2h0X2RhdGFdIGZpcnN0IGJlY2F1c2UgdGhlIG1hcCBsb29rdXBcbiAgICAgICAgICAgICAgICAgICAgIGlzIHNsb3dlciB0aGFuIGNhbGxpbmcgW25ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50XS4gKilcbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIHJpZ2h0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIGxlZnRfZGF0YSA9IE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXkgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnRfZGF0YSwgcmlnaHRfZGF0YVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiBsb29rIGZvciB0aGUgcHJldmlvdXNseSBjb21wdXRlZCB2YWx1ZSB0byBzZWUgaWYgd2UgYWN0dWFsbHkgbmVlZCB0b1xuICAgICAgICAgICAgICAgICBhZGQgb3IgcmVtb3ZlIHRoZSBrZXkuICopXG4gICAgICAgICAgICAgIGxldCBwcmV2X291dCA9IE1hcC5maW5kIG9sZF9vdXRwdXQga2V5IGluXG4gICAgICAgICAgICAgIG1hdGNoIGxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZiB+a2V5IHggeSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBwcmV2X291dCB3aXRoXG4gICAgICAgICAgICAgICAgICgqIGlmIHRoZSBuZXcgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHRoZSBvbGQsIGRvbid0IGNoYW5nZSB0aGUgbWFwICopXG4gICAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X291dCB3aGVuIG91dF9lcXVhbCBkYXRhIHByZXZfb3V0IC0+IG91dHB1dFxuICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIHByZXZfb3V0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG91dHB1dFxuICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXkpKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobGhzIDogKCgna2V5LCBpbnB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YTooaW5wdXRfZGF0YSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+IChmX291dHB1dCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGxocyBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcHJldl9ub2RlcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgYWNjIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhYWNjKSBpblxuICAgIGxldCAob25faW5uZXJfY2hhbmdlIDoga2V5OidrZXkgLT4gZl9vdXRwdXQgLT4gdW5pdCkgPVxuICAgICAgbWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICB8IE1hcF90eXBlLk1hcCAtPiBmdW4gfmtleSBkYXRhIC0+IGFjYyA6PSBNYXAuc2V0ICFhY2MgfmtleSB+ZGF0YVxuICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgIGZ1biB+a2V5IG9wdCAtPlxuICAgICAgICAgIGxldCBvbGQgPSAhYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICAgICAgOj0gKG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvbGQga2V5XG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG9sZCB+a2V5IH5kYXRhKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaHNfY2hhbmdlID1cbiAgICAgIGxhenlcbiAgICAgICAgKEluY3JlbWVudGFsLm1hcCBsaHMgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBkZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gTWFwLnJlbW92ZSAhYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IHVzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmIH5rZXkgfmRhdGE6KEUuTm9kZS53YXRjaCBub2RlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihvbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IHVzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgICAgTWFwLnNldCBub2RlcyB+a2V5IH5kYXRhOihub2RlLCB1c2VyX2Z1bmN0aW9uX2RlcCkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBwcmV2X25vZGVzIDo9IG5ld19ub2RlcztcbiAgICAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGxoc19jaGFuZ2UpKTtcbiAgICBFLk5vZGUud2F0Y2ggcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpJyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICBNYXBfdHlwZS5GaWx0ZXJfbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcGknID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgIE1hcF90eXBlLk1hcFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXAnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBmaWx0ZXJfbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1lcmdlJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWxfbGVmdCA/ZGF0YV9lcXVhbF9yaWdodCBtYXAxIG1hcDIgfmYgPVxuICAgIG1lcmdlXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICA/ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgbWFwMVxuICAgICAgbWFwMlxuICAgICAgfmY6KGZ1biB+a2V5Ol8gZGlmZiAtPiBTb21lIGRpZmYpXG4gICAgfD4gZmlsdGVyX21hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiB+ZjooZnVuIH5rZXkgfmRhdGE6ZGlmZiAtPiBmIH5rZXkgZGlmZilcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID8oZGF0YV9lcXVhbCA6IHYgLT4gdiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhsZWZ0X3Jlc3VsdF9lcXVhbCA6IHYxIC0+IHYxIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KHJpZ2h0X3Jlc3VsdF9lcXVhbCA6IHYyIC0+IHYyIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOnYgLT4gdjEgKiB2MilcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgaW5wdXRfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICBtYXRjaCBNYXAuaXNfZW1wdHkgIXByZXZfbWFwLCBNYXAuaXNfZW1wdHkgbWFwIHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSB8IGZhbHNlLCB0cnVlIC0+IGVtcHR5X21hcCwgZW1wdHlfbWFwXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgICAgICgqIE1hcHBpbmcgb24gYSBtYXAgaXMgd2F5IGZhc3RlciB0aGFuIHN5bW1ldHJpYyBkaWZmaW5nIGFuZCB0aGVuXG4gICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBtYXBzIHVwIHBpZWNlIGJ5IHBpZWNlLCBzbyB3ZSBkbyB0aGlzIHdoZW5ldmVyIHdlXG4gICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gZnJvbSBcImVtcHR5XCIgdG8gXCJzb21ldGhpbmdcIiwgd2hpY2ggd2lsbCBhbG1vc3QgYWx3YXlzXG4gICAgICAgICAgICAgICAgIGhhcHBlbiBvbiB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsLCBfID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBfLCByID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgIH5pbml0OighbGVmdF9hY2MsICFyaWdodF9hY2MpXG4gICAgICAgICAgICAgICAgfmY6KGZ1biAobGVmdCwgcmlnaHQpIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKHByZXYsIG5ld18pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2X2EsIHByZXZfYiA9IGYgfmtleSB+ZGF0YTpwcmV2IGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdfYSwgbmV3X2IgPSBmIH5rZXkgfmRhdGE6bmV3XyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgbGVmdF9yZXN1bHRfZXF1YWwgcHJldl9hIG5ld19hXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiBsZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IGxlZnQgfmtleSB+ZGF0YTpuZXdfYVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIHJpZ2h0X3Jlc3VsdF9lcXVhbCBwcmV2X2IgbmV3X2JcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIHJpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6bmV3X2JcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIGxlZnQga2V5LCBNYXAucmVtb3ZlIHJpZ2h0IGtleVxuICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZWxlbWVudCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgYSwgYiA9IGYgfmtleSB+ZGF0YTplbGVtZW50IGluXG4gICAgICAgICAgICAgICAgICAgIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOmEsIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFsZWZ0X2FjYyBsZWZ0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIGxlZnRfcmVzdWx0O1xuICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAhcmlnaHRfYWNjIHJpZ2h0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIHJpZ2h0X3Jlc3VsdDtcbiAgICAgICAgICBsZWZ0X2FjYyA6PSBsZWZ0O1xuICAgICAgICAgIHJpZ2h0X2FjYyA6PSByaWdodDtcbiAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgICBpbnB1dFxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXQgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIGlucHV0XG4gICAgICAgIHw+IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgICAgICAgP2xlZnRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgfmZcbiAgICAgICAgfD4gVHVwbGUyLnVuY3VycnkgSW5jcmVtZW50YWwuYm90aClcbiAgICBpblxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpmc3QgcGFpciwgSW5jcmVtZW50YWwubWFwIH5mOnNuZCBwYWlyXG4gIDs7XG5cbiAgbGV0IHVuemlwID9pbnN0cnVtZW50YXRpb24gP2xlZnRfcmVzdWx0X2VxdWFsID9yaWdodF9yZXN1bHRfZXF1YWwgaW5wdXQgPVxuICAgIGxldCBkYXRhX2VxdWFsID1cbiAgICAgIE9wdGlvbi5tYXAyIGxlZnRfcmVzdWx0X2VxdWFsIHJpZ2h0X3Jlc3VsdF9lcXVhbCB+ZjooZnVuIGwgciAtPlxuICAgICAgICBUdXBsZTIuZXF1YWwgfmVxMTpsIH5lcTI6cilcbiAgICBpblxuICAgIHVuemlwX21hcGlcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YToodiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICh2MSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudCAqICh2Miwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgbGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gbGVmdF9hY2MgOj0gTWFwLnNldCAhbGVmdF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gcmlnaHRfYWNjIDo9IE1hcC5zZXQgIXJpZ2h0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJlYyBpbnB1dF9jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgbGV0IG5ld19ub2RlcyA9XG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAhcHJldl9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gbm9kZXMgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBfbGVmdF9kZXAsIF9yaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBsZWZ0X2RlcCwgcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfZGVwO1xuICAgICAgICAgICAgICAgICAgICAgbGVmdF9hY2MgOj0gTWFwLnJlbW92ZSAhbGVmdF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgICAgcmlnaHRfYWNjIDo9IE1hcC5yZW1vdmUgIXJpZ2h0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIE1hcC5maW5kX2V4biAhcHJldl9tYXAga2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIE9wdGlvbi5pdGVyIGN1dG9mZiB+ZjooZnVuIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuc2V0X2N1dG9mZiAoRS5Ob2RlLndhdGNoIG5vZGUpIGMpO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfaW5jciwgcmlnaHRfaW5jciA9IGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgbGVmdF9pbmNyIH5vbl9jaGFuZ2U6KGxlZnRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihyaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc2V0XG4gICAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KG5vZGUsIGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAsIHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICBFLk5vZGUud2F0Y2ggbGVmdF9yZXN1bHQsIEUuTm9kZS53YXRjaCByaWdodF9yZXN1bHRcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaScgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgICBtYXBcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3InIH5pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCB+Y29tcGFyYXRvciB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQga2V5cyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LmFkZCBhY2Mga2V5IGluXG4gICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQucmVtb3ZlIGFjYyBrZXkgaW5cbiAgICAgIGxldCBkYXRhX2VxdWFsIF8gXyA9IHRydWUgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgIH5pbml0OihTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmUpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgfmluaXQ6KGVtcHR5LCBlbXB0eSlcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGE6ZGF0YSAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgZGF0YSAtPiBNYXAuc2V0IGZpcnN0IH5rZXkgfmRhdGEsIE1hcC5yZW1vdmUgc2Vjb25kIGtleVxuICAgICAgICAgIHwgU2Vjb25kIGRhdGEgLT4gTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5zZXQgc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5hZGRfZXhuIGZpcnN0IH5rZXkgfmRhdGEsIHNlY29uZFxuICAgICAgICAgIHwgU2Vjb25kIGRhdGEgLT4gZmlyc3QsIE1hcC5hZGRfZXhuIHNlY29uZCB+a2V5IH5kYXRhKVxuICAgICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YTpfIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIE1hcC5yZW1vdmUgZmlyc3Qga2V5LCBNYXAucmVtb3ZlIHNlY29uZCBrZXkpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZlxuICAgIHw+IHBhcnRpdGlvbl9tYXBpID9pbnN0cnVtZW50YXRpb24gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZGF0YSlcbiAgOztcblxuICBsZXQgZmxhdHRlbiBzdGF0ZSBtYXAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCByZXN1bHQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApKSBpblxuICAgIGxldCBub2RlID0gRS5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHQpIGluXG4gICAgTWFwLml0ZXJpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGE6aW5jciAtPlxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5jciB+b25fY2hhbmdlOihmdW4gYSAtPlxuICAgICAgICAgICByZXN1bHQgOj0gTWFwLnNldCAhcmVzdWx0IH5rZXkgfmRhdGE6YSkpKTtcbiAgICBFLk5vZGUud2F0Y2ggbm9kZVxuICA7O1xuXG4gIGxldCBqb2luX3dpdGhfY29tcGFyYXRvciB+aW5zdHJ1bWVudGF0aW9uIG1hcF9pbmNyIH5jb21wYXJhdG9yID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBtYXBfaW5jciBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCByZXN1bHRfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBvbGRfbWFwX29mX2luY3JzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBjdXJyZW50X2RlcGVuZGVuY2llcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHRfbWFwKSBpblxuICAgIGxldCBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGUgPVxuICAgICAgbGV0IG5ld19kZXAgPVxuICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlIGRhdGFfbm9kZSB+b25fY2hhbmdlOihmdW4gZGF0YSAtPlxuICAgICAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnNldCAhcmVzdWx0X21hcCB+a2V5IH5kYXRhKVxuICAgICAgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgbmV3X2RlcDtcbiAgICAgIE1hcC5zZXQgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTpuZXdfZGVwXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSA9XG4gICAgICBsZXQgZGVwID0gTWFwLmZpbmRfZXhuIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleSBpblxuICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICByZXN1bHRfbWFwIDo9IE1hcC5yZW1vdmUgIXJlc3VsdF9tYXAga2V5O1xuICAgICAgTWFwLnJlbW92ZSBjdXJyZW50X2RlcGVuZGVuY2llcyBrZXlcbiAgICBpblxuICAgIGxldCBsaHNfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBtYXBfaW5jciB+ZjooZnVuIG1hcF9vZl9pbmNycyAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBuZXdfZGVwZW5kZW5jeV9tYXAgPVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWw6cGh5c19lcXVhbFxuICAgICAgICAgICAgICAhb2xkX21hcF9vZl9pbmNyc1xuICAgICAgICAgICAgICBtYXBfb2ZfaW5jcnNcbiAgICAgICAgICAgICAgfmluaXQ6IWN1cnJlbnRfZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICAgIH5mOihmdW4gY3VycmVudF9kZXBlbmRlbmNpZXMgKGtleSwgZGlmZikgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleVxuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfbm9kZSAtPiBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGVcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfLCBkYXRhX25vZGUpIC0+XG4gICAgICAgICAgICAgICAgICByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IHw+IGFkZF9zdWJub2RlIH5rZXkgfmRhdGFfbm9kZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGN1cnJlbnRfZGVwZW5kZW5jaWVzIDo9IG5ld19kZXBlbmRlbmN5X21hcDtcbiAgICAgICAgICBvbGRfbWFwX29mX2luY3JzIDo9IG1hcF9vZl9pbmNycykpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGxoc19jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgam9pbiA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgam9pbl93aXRoX2NvbXBhcmF0b3Igfmluc3RydW1lbnRhdGlvbiBtYXAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbW9kdWxlIFNlcGFyYXRlX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgaW5wdXRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXMgOiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnQsICdjbXApIE1hcC50XG4gICAgICA7IG11dGFibGUgb3V0cHV0X21hcCA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnRcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgY29tcGFyYXRvciA9XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgeyBpbnB1dF9tYXAgPSBlbXB0eTsgZXhwZXJ0X25vZGVzID0gZW1wdHk7IG91dHB1dF9tYXAgPSBlbXB0eSB9XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfbG9va3VwX25vZGUgc3RhdGUgdCBrZXkgPVxuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gTWFwLmZpbmRfZXhuIHQuaW5wdXRfbWFwIGtleSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2VwYXJhdGUgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pIGlucHV0X21hcCB+ZGF0YV9lcXVhbCA9XG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwIGluXG4gICAgd2l0aF9jb21wYXJhdG9yIGlucHV0X21hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBzdGF0ZSA9IFNlcGFyYXRlX3N0YXRlLmNyZWF0ZSBjb21wYXJhdG9yIGluXG4gICAgICBsZXQgb3V0cHV0X21hcF9ub2RlID1cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gc3RhdGUub3V0cHV0X21hcClcbiAgICAgIGluXG4gICAgICBsZXQgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBub2RlIH5pbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxldCBkZXBlbmRlbmN5ID1cbiAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgKExhenkuZm9yY2VfdmFsIGlucHV0X21hcF9jaGFuZ2VkKVxuICAgICAgICBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIGRlcGVuZGVuY3lcbiAgICAgIGluXG4gICAgICAoKiBXZSB3YW50IHRvIG1ha2Ugbm9kZXMgZGVwZW5kIG9uIFtpbnB1dF9tYXBfY2hhbmdlZF0gc28gdGhhdCBbaW5wdXRfbWFwX2NoYW5nZWRdXG4gICAgICAgICBpcyBhbGxvd2VkIHRvIG1ha2UgdGhlbSBzdGFsZSwgYnV0IHdlIGRvIG5vdCB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBmb3IgYW55XG4gICAgICAgICBvdGhlciByZWFzb24uIFNvIHdlIG1ha2UgW2lucHV0X21hcF9jaGFuZ2VkXSBhIHVuaXQgaW5jcmVtZW50YWwgKHRoYXQgdGhlcmVmb3JlXG4gICAgICAgICBuZXZlciBjaGFuZ2VzKSBhbmQgdGhpcyB3YXkgW291dHB1dF9tYXBfbm9kZV0gYW5kIHRoZSBsb29rdXAgbm9kZXMgd2lsbCBvbmx5IGJlXG4gICAgICAgICByZWNvbXB1dGVkIHdoZW4gdGhleSBhcmUgZXhwbGljaXRseSBtYWRlIHN0YWxlLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgaW5wdXRfbWFwX2NoYW5nZWQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKEluY3JlbWVudGFsLm1hcCBpbnB1dF9tYXAgfmY6KGZ1biBpbnB1dF9tYXAgLT5cbiAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IHByZXZfaW5wdXRfbWFwID0gc3RhdGUuaW5wdXRfbWFwIGluXG4gICAgICAgICAgICAgICBsZXQgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwID1cbiAgICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgICBwcmV2X2lucHV0X21hcFxuICAgICAgICAgICAgICAgICAgIGlucHV0X21hcFxuICAgICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICAgfmluaXQ6KHN0YXRlLmV4cGVydF9ub2Rlcywgc3RhdGUub3V0cHV0X21hcClcbiAgICAgICAgICAgICAgICAgICB+ZjooZnVuIChleHBlcnRfbm9kZXMsIG91dHB1dF9tYXApIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF9vbGRfdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9sZF9ub2RlID0gTWFwLmZpbmRfZXhuIGV4cGVydF9ub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuaW52YWxpZGF0ZSBvbGRfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgIE1hcC5yZW1vdmUgZXhwZXJ0X25vZGVzIGtleSwgTWFwLnJlbW92ZSBvdXRwdXRfbWFwIGtleVxuICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgX25ld192YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgU2VwYXJhdGVfc3RhdGUuY3JlYXRlX2xvb2t1cF9ub2RlIGluY3JlbWVudGFsX3N0YXRlIHN0YXRlIGtleVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgKCBNYXAuYWRkX2V4biBleHBlcnRfbm9kZXMgfmtleSB+ZGF0YTpub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICwgTWFwLmFkZF9leG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH5kYXRhOihJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlKSApXG4gICAgICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfb2xkX3ZhbHVlLCBfbmV3X3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIChNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgIGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBzdGF0ZS5pbnB1dF9tYXAgPC0gaW5wdXRfbWFwO1xuICAgICAgICAgICAgICAgc3RhdGUuZXhwZXJ0X25vZGVzIDwtIGV4cGVydF9ub2RlcztcbiAgICAgICAgICAgICAgIHN0YXRlLm91dHB1dF9tYXAgPC0gb3V0cHV0X21hcCkpKVxuICAgICAgaW5cbiAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgb3V0cHV0X21hcF9ub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG91dHB1dF9tYXBfbm9kZSlcbiAgOztcblxuICAoKiBKdXN0IGZvciBkZXJpdmluZyBzdHJ1Y3R1cmFsIGVxdWFsaXR5LiAqKVxuICB0eXBlICdhIG1heWJlX2JvdW5kX3N0cnVjdHVyYWxseSA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICAgIHwgSW5jbCBvZiAnYVxuICAgIHwgRXhjbCBvZiAnYVxuICAgIHwgVW5ib3VuZGVkXG4gIFtAQGRlcml2aW5nIGVxdWFsXVxuXG4gIGxldCBzdWJyYW5nZVxuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwX2luY3IgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIHJhbmdlXG4gICAgPVxuICAgIHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIG1hcF9pbmNyIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgcmFuZ2UgLT5cbiAgICAgIGxldCBjb21wYXJlID0gKE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgbGV0IGVxdWFsIGwgciA9IGNvbXBhcmUgbCByID0gMCBpblxuICAgICAgbGV0ICggPiApIGEgYiA9IGNvbXBhcmUgYSBiID4gMFxuICAgICAgYW5kICggPj0gKSBhIGIgPSBjb21wYXJlIGEgYiA+PSAwIGluXG4gICAgICBsZXQgbWF5YmVfYm91bmRfZXF1YWwgYSBiIDogYm9vbCA9IGVxdWFsX21heWJlX2JvdW5kX3N0cnVjdHVyYWxseSBlcXVhbCBhIGIgaW5cbiAgICAgIGxldCByYW5nZV9pc19lbXB0eSB+bWluIH5tYXggOiBib29sID1cbiAgICAgICAgbWF0Y2ggbWluLCBtYXggd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCwgKFVuYm91bmRlZCB8IEV4Y2wgXyB8IEluY2wgXykgfCAoRXhjbCBfIHwgSW5jbCBfKSwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgICAgIHwgSW5jbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+IG1heFxuICAgICAgICB8IEV4Y2wgbWluLCBFeGNsIG1heCB8IEluY2wgbWluLCBFeGNsIG1heCB8IEV4Y2wgbWluLCBJbmNsIG1heCAtPiBtaW4gPj0gbWF4XG4gICAgICBpblxuICAgICAgbGV0IHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXkgOiBib29sID1cbiAgICAgICAgTWF5YmVfYm91bmQuaXNfbG93ZXJfYm91bmQgbWluIH5vZl86a2V5IH5jb21wYXJlXG4gICAgICAgICYmIE1heWJlX2JvdW5kLmlzX3VwcGVyX2JvdW5kIG1heCB+b2ZfOmtleSB+Y29tcGFyZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBFbXB0eSBuZXcgcmFuZ2UgbWVhbnMgZW1wdHkgbWFwICopXG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICB8IFNvbWUgKChtaW4sIG1heCkgYXMgcmFuZ2UpIC0+XG4gICAgICAgIGxldCBmcm9tX3NjcmF0Y2ggKCkgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOm1heCBpblxuICAgICAgICAobWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IFNvbWUgKF8sIE5vbmUsIF8pIC0+XG4gICAgICAgICAgICgqIG5vIG9sZCByYW5nZSAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAoXywgU29tZSAob2xkX21pbiwgb2xkX21heCksIF8pXG4gICAgICAgICAgIHdoZW4gcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heFxuICAgICAgICAgICAgIHx8IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXggLT5cbiAgICAgICAgICAgKCogZW1wdHkgb2xkIHJhbmdlIG9yIG9sZCByYW5nZSBkaXNqb2ludCB3aXRoIG5ldyAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAob2xkX21hcCwgU29tZSAoKG9sZF9taW4sIG9sZF9tYXgpIGFzIG9sZF9yYW5nZSksIG9sZF9yZXMpIC0+XG4gICAgICAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICAgICAgICgqIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGtleSBpcyBpbiBib3RoIG5ldyBhbmQgb2xkIHJhbmdlcyAqKVxuICAgICAgICAgICAgIGxldCBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5ID1cbiAgICAgICAgICAgICAgIHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXlcbiAgICAgICAgICAgICAgICYmIHJhbmdlX2luY2x1ZGVzIH5taW46b2xkX21pbiB+bWF4Om9sZF9tYXgga2V5XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBBcHBseSBjaGFuZ2VzIHRvIGtleXMgd2hpY2ggYXJlIGluIHRoZSBpbnRlcnNlY3Rpb24gb2YgYm90aCByYW5nZXMuXG5cbiAgICAgICAgICAgICAgICBbb3V0c2lkZV0gaXMgdGhlIG51bWJlciBvZiB1cGRhdGVzIG91dHNpZGUgdGhlIHJhbmdlIGludGVyc2VjdGlvbiB0aGF0IHdlXG4gICAgICAgICAgICAgICAgdG9sZXJhdGUgYmVmb3JlIGdpdmluZyB1cCBhbmQgcmVjb25zdHJ1Y3RpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZS4gVGhpc1xuICAgICAgICAgICAgICAgIGlzIGFuIG9wdGltaXNhdGlvbiBpbiB0aGUgY2FzZSB0aGF0IHRoZSBtYXAgY2hhbmdlcyBpbiBhIHZlcnkgYmlnIHdheSwgYXRcbiAgICAgICAgICAgICAgICB3aGljaCBwb2ludCBjb21wdXRpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZSBpcyBjaGVhcGVyLiAgKilcbiAgICAgICAgICAgICBsZXQgYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24gKG91dHNpZGUsIG1hcCkgKGtleSwgZGF0YSkgPVxuICAgICAgICAgICAgICAgaWYgaW5fcmFuZ2VfaW50ZXJzZWN0aW9uIGtleVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gb3V0c2lkZSwgTWFwLnJlbW92ZSBtYXAga2V5XG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGEgfCBgVW5lcXVhbCAoXywgZGF0YSkgLT4gb3V0c2lkZSwgTWFwLnNldCBtYXAgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgb3V0c2lkZSA9IG91dHNpZGUgLSAxIGluXG4gICAgICAgICAgICAgICAgIGlmIEludC5PLihvdXRzaWRlIDwgMClcbiAgICAgICAgICAgICAgICAgdGhlbiByZXR1cm4gKGZyb21fc2NyYXRjaCAoKSlcbiAgICAgICAgICAgICAgICAgZWxzZSBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBGaXJzdCB1cGRhdGUgdGhlIGtleXMgaW4gL2JvdGgvIHRoZSBvbGQgYW5kIHRoZSBuZXcgcmFuZ2UuICopXG4gICAgICAgICAgICAgbGV0IHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uID1cbiAgICAgICAgICAgICAgICgqIEN1dG9mZiB0aGUgYmlnIGRpZmYgY29tcHV0YXRpb24gaWYgd2UgcmVhY2ggTyh8c3VibWFwfCkgbnVtYmVyIG9mXG4gICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHJhbmdlICopXG4gICAgICAgICAgICAgICBsZXQgb3V0c2lkZV9jdXRvZmYgPSBNYXAubGVuZ3RoIG9sZF9yZXMgLyA0IGluXG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDoob3V0c2lkZV9jdXRvZmYsIG9sZF9yZXMpXG4gICAgICAgICAgICAgICAgIH5mOmFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgICB8PiBzbmRcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIFR1cGxlMi5lcXVhbCB+ZXExOm1heWJlX2JvdW5kX2VxdWFsIH5lcTI6bWF5YmVfYm91bmRfZXF1YWwgb2xkX3JhbmdlIHJhbmdlXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogVGhlcmUgYXJlIG5vIGtleXMgdG8gcmVtb3ZlIGFuZCBldmVyeXRoaW5nIGluIHJhbmdlIGlzIHVwZGF0ZWQuICopXG4gICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgKCogUmVtb3ZlIGFueSBrZXlzIHdoaWNoIGFyZSBub3QgaW4gdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlXG4gICAgICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICB+bG93ZXJfYm91bmQ6bWluXG4gICAgICAgICAgICAgICAgICAgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICgqIEFkZCBpbiBhbnkga2V5cyB3aGljaCBhcmUgaW4gdGhlIG5ldyByYW5nZSBidXQgbm90IHRoZSBvbGQgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBsZXQgbWFwX2FwcGVuZF9leG4gbG93ZXJfcGFydCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgICAgICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbXBvc3NpYmxlIGNhc2U6IEJVRyBpbiBpbmNyX21hcC5tbCBzdWJyYW5nZVwiXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIGxldCBsb3dlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooSW5jbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihFeGNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgIGFuZCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWF4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEluY2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooRXhjbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG1hcF9hcHBlbmRfZXhuXG4gICAgICAgICAgICAgICAgICAgbG93ZXJfcGFydFxuICAgICAgICAgICAgICAgICAgIChtYXBfYXBwZW5kX2V4biB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIHVwcGVyX3BhcnQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UpKSkpXG4gIDs7XG5cbiAgbGV0IHJla2V5XG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICBtYXBfaW5jclxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvciwgW10pXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgbmV3X2VudHJ5ID0gZiB+a2V5IH5kYXRhLCBkYXRhIGluXG4gICAgICAgIG91dHB1dCwgbmV3X2VudHJ5IDo6IGFkZHMpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSAob3V0cHV0LCBhZGRzKSAtPiBNYXAucmVtb3ZlIG91dHB1dCAoZiB+a2V5IH5kYXRhKSwgYWRkcylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgKG91dHB1dCwgYWRkcykgLT5cbiAgICAgICAgbGV0IHByZXZfa2V5ID0gZiB+a2V5IH5kYXRhOm9sZF9kYXRhIGluXG4gICAgICAgIGxldCBuZXdfa2V5ID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgIGlmIChNYXAuY29tcGFyYXRvciBvdXRwdXQpLmNvbXBhcmUgcHJldl9rZXkgbmV3X2tleSA9IDBcbiAgICAgICAgdGhlbiBNYXAuc2V0IG91dHB1dCB+a2V5Om5ld19rZXkgfmRhdGE6bmV3X2RhdGEsIGFkZHNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG91dHB1dCA9IE1hcC5yZW1vdmUgb3V0cHV0IHByZXZfa2V5IGluXG4gICAgICAgICAgb3V0cHV0LCAobmV3X2tleSwgbmV3X2RhdGEpIDo6IGFkZHMpKVxuICAgICAgfmZpbmFsaXplOihmdW4gKG91dHB1dCwgYWRkcykgLT5cbiAgICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgICAgTGlzdC5mb2xkIGFkZHMgfmluaXQ6b3V0cHV0IH5mOihmdW4gb3V0cHV0IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBNYXAuYWRkX2V4biBvdXRwdXQgfmtleSB+ZGF0YSlcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0LCBbXSlcbiAgICB8PiBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5aVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvclxuICAgICAgICB+aW5kZXhcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcF9pbmNyIChmdW4gaW5uZXJfY29tcGFyYXRvciAtPlxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmFkZDooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLnVwZGF0ZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gaW5uZXJfa2V5IGRhdGEgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvclxuICAgICAgICAgICAgICB8IFNvbWUgaW5uZXJfbWFwIC0+IE1hcC5hZGRfZXhuIGlubmVyX21hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBvdXRlcl9tYXAgLT5cbiAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5OmlubmVyX2tleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dGVyX21hcFxuICAgICAgICAgIHwgU29tZSBvdXRlcl9rZXkgLT5cbiAgICAgICAgICAgIE1hcC5jaGFuZ2Ugb3V0ZXJfbWFwIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJCVUc6IEhpdCBzdXBwb3NlZGx5IGltcG9zc2libGUgY2FzZSBpbiBJbmNyX21hcC5pbmRleF9ieVwiXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJfbWFwID0gTWFwLnJlbW92ZSBpbm5lcl9tYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGlubmVyX21hcCB0aGVuIE5vbmUgZWxzZSBTb21lIGlubmVyX21hcCkpKVxuICA7O1xuXG4gIGxldCBpbmRleF9ieSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgaW5kZXhfYnlpXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICB+aW5kZXg6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gaW5kZXggZGF0YSlcbiAgOztcblxuXG4gICgqKiBGaW5kIHR3byBrZXlzIGluIG1hcCBieSBpbmRleCwgTyhuKS4gV2UgdXNlIGp1c3Qgb25lIGZvbGQgKHR3byBNYXAubnRoIHdvdWxkIHVzZSB0d28pXG4gICAgICBhbmQgb3B0aW1pemUgZm9yIGtleXMgY2xvc2UgdG8gZWl0aGVyIGJlZ2lubmluZyBvciBlbmQgYnkgdXNpbmcgZWl0aGVyIGZvbGQgb3JcbiAgICAgIGZvbGRfcmlnaHQuXG4gICopXG4gIG1vZHVsZSBLZXlfc3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAnayB0ID1cbiAgICAgIHwgS25vd24gb2YgJ2tcbiAgICAgIHwgS25vd25fbm9uZVxuICAgICAgfCBVbmtub3duXG5cbiAgICBsZXQgaXNfa25vd24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgVW5rbm93biB8IEtub3duX25vbmUgLT4gTm9uZVxuICAgICAgfCBLbm93biBrIC0+IFNvbWUga1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgKHR5cGUgaykgfmZyb20gfnRvXyAobWFwIDogKGssIF8sIF8pIE1hcC50KVxuICAgIDogKGsgKiBrIG9wdGlvbikgb3B0aW9uXG4gICAgPVxuICAgIGxldCBvcGVuIEtleV9zdGF0dXMgaW5cbiAgICBsZXQgbGVuID0gTWFwLmxlbmd0aCBtYXAgaW5cbiAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPj0gKSBmcm9tIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGVuZF9rZXkgPSBpZiBJbnQuKCA+PSApIHRvXyBsZW4gdGhlbiBLbm93bl9ub25lIGVsc2UgVW5rbm93biBpblxuICAgIGxldCBmaW5kX2tleXMgZm9sZCB+c3RhcnRfcG9zIH5hZHZhbmNlX3BvcyA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgICAgZm9sZFxuICAgICAgICAgIG1hcFxuICAgICAgICAgIH5pbml0OihiZWdpbl9rZXksIGVuZF9rZXksIHN0YXJ0X3BvcylcbiAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6XyAoYmVnaW5fa2V5LCBlbmRfa2V5LCBwb3MpIC0+XG4gICAgICAgICAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPSApIHBvcyBmcm9tIHRoZW4gS25vd24ga2V5IGVsc2UgYmVnaW5fa2V5IGluXG4gICAgICAgICAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID0gKSBwb3MgdG9fIHRoZW4gS25vd24ga2V5IGVsc2UgZW5kX2tleSBpblxuICAgICAgICAgICAgaWYgaXNfa25vd24gYmVnaW5fa2V5ICYmIGlzX2tub3duIGVuZF9rZXlcbiAgICAgICAgICAgIHRoZW4gcmV0dXJuIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcylcbiAgICAgICAgICAgIGVsc2UgYmVnaW5fa2V5LCBlbmRfa2V5LCBhZHZhbmNlX3BvcyBwb3MpKVxuICAgIGluXG4gICAgbGV0IGJlZ2luX2tleSwgZW5kX2tleSwgXyA9XG4gICAgICAoKiBTZWFyY2hpbmcgZnJvbSBsZWZ0IHRha2VzIE8odG9fKSwgZnJvbSByaWdodCAtIE8obGVuIC0gZnJvbSksIHNvIHNlbGVjdCB0aGVcbiAgICAgICAgIHNtYWxsZXIgb25lLiAqKVxuICAgICAgaWYgdG9fIDwgbGVuIC0gZnJvbVxuICAgICAgdGhlbiBmaW5kX2tleXMgTWFwLmZvbGQgfnN0YXJ0X3BvczowIH5hZHZhbmNlX3BvczooZnVuIHBvcyAtPiBwb3MgKyAxKVxuICAgICAgZWxzZSBmaW5kX2tleXMgTWFwLmZvbGRfcmlnaHQgfnN0YXJ0X3BvczoobGVuIC0gMSkgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyAtIDEpXG4gICAgaW5cbiAgICBPcHRpb24ubWFwIChLZXlfc3RhdHVzLnRvX29wdGlvbiBiZWdpbl9rZXkpIH5mOihmdW4gYmVnaW5fa2V5IC0+XG4gICAgICBiZWdpbl9rZXksIEtleV9zdGF0dXMudG9fb3B0aW9uIGVuZF9rZXkpXG4gIDs7XG5cbiAgbGV0IG50aF9mcm9tX2VpdGhlcl9zaWRlICh0eXBlIGspIG4gKG1hcCA6IChrLCBfLCBfKSBNYXAudCkgOiBrIG9wdGlvbiA9XG4gICAgT3B0aW9uLm1hcCB+Zjpmc3QgKGZpbmRfa2V5X3JhbmdlX2xpbmVhciB+ZnJvbTpuIH50b186biBtYXApXG4gIDs7XG5cbiAgKCoqIEZpbmQga2V5IFtieV0gcG9zaXRpb25zIGVhcmxpZXIvbGF0ZXIgaW4gYSBtYXAuIFJldHVybnMgbm9uZSBpZiBvdXQgb2YgYm91bmRzLiAqKVxuICBsZXQgcmVjIG9mZnNldCAoa2V5IDogJ2spIChtYXAgOiAoJ2ssIF8sIF8pIE1hcC50KSB+YnkgOiAnayBvcHRpb24gPVxuICAgIGlmIEludC4oID0gKSBieSAwXG4gICAgdGhlbiBTb21lIGtleVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNsb3Nlc3RfZGlyLCBhZGQgPVxuICAgICAgICBpZiBJbnQuKCA8ICkgYnkgMCB0aGVuIGBMZXNzX3RoYW4sIDEgZWxzZSBgR3JlYXRlcl90aGFuLCAtMVxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1hcC5jbG9zZXN0X2tleSBtYXAgY2xvc2VzdF9kaXIga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKGtleSwgXykgLT4gb2Zmc2V0IGtleSBtYXAgfmJ5OihieSArIGFkZCkpXG4gIDs7XG5cbiAgKCoqIEZpbmQgaG93IHdlIG5lZWQgdG8gbW92ZSBba2V5XSBpZiBbY2hhbmdlZF9rZXldIGNoYW5nZWQgaW4gdGhlIGdpdmVuXG4gICAgICB3YXkgKilcbiAgbGV0IGZpbmRfb2Zmc2V0IH5jb21wYXJlIH5rZXkgfmNoYW5nZWRfa2V5IGNoYW5nZSA9XG4gICAgaWYgSW50LiggPCApIChjb21wYXJlIGNoYW5nZWRfa2V5IGtleSkgMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgIHwgYExlZnQgXyAtPiAxXG4gICAgICB8IGBSaWdodCBfIC0+IC0xXG4gICAgICB8IF8gLT4gMClcbiAgICBlbHNlIDBcbiAgOztcblxuICBsZXQgcmFua1xuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICAobWFwIDogKChrLCB2LCBjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAoa2V5IDogKGssIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBzYW1lX2tleSBhIGIgPSBjb21wYXJlX2tleSBhIGIgPSAwIGluXG4gICAgICBsZXQgd2hlbl9rZXlfY2hhbmdlZCB+bWFwIH5vbGRfa2V5IH5uZXdfa2V5IH5vbGRfcmFuayA9XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IG5ld19rZXkgb2xkX2tleSA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgdGhlIG5ldyBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBvbGQga2V5LCBmaW5kIHRoZSBzaXplIG9mIHRoZSBtYXAgc3VicmFuZ2VcbiAgICAgICAgICAgICBiZXR3ZWVuIHRoZW0gYW5kIHN1YnRyYWN0IGl0IGZyb20gdGhlIHByZXZpb3VzIHJhbmsgKilcbiAgICAgICAgICBsZXQgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kID0gRXhjbCBuZXdfa2V5LCBFeGNsIG9sZF9rZXkgaW5cbiAgICAgICAgICBsZXQgc3VicmFuZ2UgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgaW5cbiAgICAgICAgICBvbGRfcmFuayAtIE1hcC5sZW5ndGggc3VicmFuZ2UgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBPdGhlcndpc2UsIHRoZSBuZXcga2V5IGlzIGxhcmdlciB0aGFuIHRoZSBvbGQga2V5LCBzbyBmaW5kIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICAgICAgIG1hcCBzdWJyYW5nZSBiZXR3ZWVuIHRoZW0gYW5kIGFkZCBpdCB0byB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG9sZF9rZXksIEV4Y2wgbmV3X2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rICsgTWFwLmxlbmd0aCBzdWJyYW5nZSArIDEpXG4gICAgICBpblxuICAgICAgbGV0IHdoZW5fbWFwX2NoYW5nZWQgfm9sZF9tYXAgfm5ld19tYXAgfmtleSB+b2xkX3JhbmsgPVxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICgqIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGRhdGEsIHNvIG9wdGltaXplIHRoZXNlIGNoZWNrcyAqKVxuICAgICAgICAgIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpXG4gICAgICAgICAgb2xkX21hcFxuICAgICAgICAgIG5ld19tYXBcbiAgICAgICAgICB+aW5pdDpvbGRfcmFua1xuICAgICAgICAgIH5mOihmdW4gYWNjIChkaWZmX2tleSwgZGlmZikgLT5cbiAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgfCBgTGVmdCBfIHdoZW4gY29tcGFyZV9rZXkgZGlmZl9rZXkga2V5IDwgMCAtPiBhY2MgLSAxXG4gICAgICAgICAgICB8IGBSaWdodCBfIHdoZW4gY29tcGFyZV9rZXkgZGlmZl9rZXkga2V5IDwgMCAtPiBhY2MgKyAxXG4gICAgICAgICAgICB8IF8gLT4gYWNjKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcHJvY2VzcyB+KG9sZCA6ICgoaywgdiwgXykgTWFwLnQgKiBfICogXykgb3B0aW9uKSBuZXdfbWFwIChuZXdfa2V5IDogaykgPVxuICAgICAgICBpZiBub3QgKE1hcC5tZW0gbmV3X21hcCBuZXdfa2V5KVxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGUgbWFwIGFuZCBrZXkgYXJlIHRoZSBzYW1lLCBqdXN0IHJldXNlIHRoZSBvbGQgcmFuayAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgb2xkX3JhbmspXG4gICAgICAgICAgICB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwICYmIHNhbWVfa2V5IG9sZF9rZXkgbmV3X2tleSAtPiBvbGRfcmFua1xuICAgICAgICAgICgqIElmIHRoZSBtYXAgaXMgdGhlIHNhbWUgYnV0IHRoZSBrZXkgY2hhbmdlZCAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgd2hlbiBwaHlzX2VxdWFsIG5ld19tYXAgb2xkX21hcCAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9rZXlfY2hhbmdlZCB+bWFwOm5ld19tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIHRoZSBrZXkgaXMgdGhlIHNhbWUgYnV0IHRoZSBtYXAgY2hhbmdlZCAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgd2hlbiBzYW1lX2tleSBuZXdfa2V5IG9sZF9rZXkgLT5cbiAgICAgICAgICAgIFNvbWUgKHdoZW5fbWFwX2NoYW5nZWQgfm9sZF9tYXAgfm5ld19tYXAgfmtleTpuZXdfa2V5IH5vbGRfcmFuaylcbiAgICAgICAgICAoKiBJZiBib3RoIHRoZSBtYXAgYW5kIHRoZSBrZXkgY2hhbmdlZCwgdGhpcyBjYW4gYmUgc2ltdWxhdGVkIGFzIHRoZVxuICAgICAgICAgICAgIG1hcCBjaGFuZ2luZyBmb2xsb3dlZCBieSB0aGUga2V5IGNoYW5naW5nICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSAtPlxuICAgICAgICAgICAgKCogV2UgY2FsbCBbcHJvY2Vzc10gcmVjdXJzaXZlbHkgaW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nXG4gICAgICAgICAgICAgICBbd2hlbl9tYXBfY2hhbmdlZF0gZm9sbG93ZWQgYnkgW3doZW5fa2V5X2NoYW5nZWRdIHNpbmNlIGl0IG1pZ2h0IGJlIHRoZVxuICAgICAgICAgICAgICAgY2FzZSB0aGF0IFtvbGRfa2V5XSBpcyBpbiBbb2xkX21hcF0gYW5kIFtuZXdfa2V5XSBpcyBpbiBbbmV3X21hcF0sIGJ1dFxuICAgICAgICAgICAgICAgW29sZF9rZXldIGlzIG5vdCBpbiBbbmV3X21hcF0uICopXG4gICAgICAgICAgICBsZXQgb2xkX3JhbmsgPVxuICAgICAgICAgICAgICBwcm9jZXNzIH5vbGQ6KFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspKSBuZXdfbWFwIG9sZF9rZXlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcm9jZXNzIH5vbGQ6KFNvbWUgKG5ld19tYXAsIG9sZF9rZXksIG9sZF9yYW5rKSkgbmV3X21hcCBuZXdfa2V5XG4gICAgICAgICAgKCogSWYgdGhlIHByZXZpb3VzIGtleSB3YXMgbm90IGluIHRoZSBtYXAgb3IgdGhpcyBpcyB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbixcbiAgICAgICAgICAgICBjb21wdXRlIHRoZSByYW5rIGZyb20gc2NyYXRjaCAqKVxuICAgICAgICAgIHwgU29tZSAoXywgXywgTm9uZSkgfCBOb25lIC0+IE1hcC5yYW5rIG5ld19tYXAgbmV3X2tleSlcbiAgICAgIGluXG4gICAgICB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBtYXAga2V5IH5mOnByb2Nlc3MpXG4gIDs7XG5cbiAgKCoqIFJhbmdlIG1hcCBieSBpbmRpY2VzICopXG4gIGxldCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgICAgICh0eXBlIGsgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXAgOiAoKGssIF8sIF8pIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAocmFuZ2UgOiAoaW50IE1heWJlX2JvdW5kLnQgKiBpbnQgTWF5YmVfYm91bmQudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgbGV0IGZpbmRfa2V5X3JhbmdlIChyYW5nZSA6IChpbnQgKiBpbnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICA6ICgoayAqIGsgb3B0aW9uKSBvcHRpb24sIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgID1cbiAgICAgIHdpdGhfb2xkMiBtYXAgcmFuZ2Ugfmluc3RydW1lbnRhdGlvbiB+ZjooZnVuIH5vbGQgbWFwIChmcm9tLCB0b18pIC0+XG4gICAgICAgICgqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBubyBrZXlzLCBvbmx5IGJlZ2luIGtleSwgb3IgYmVnaW4gYW5kIGVuZCBrZXlzLlxuICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGtleXMgYXQgW2Zyb21dIGFuZCBbdG9fXSBwb3NpdGlvbnMgaW4gdGhlIG1hcCwgb3IgTm9uZSBpZiB0aGVcbiAgICAgICAgICAgaW5kaWNlcyBhcmUgdG9vIGJpZy4gQXMgYWx3YXlzIFswIDw9IGZyb20gJiYgZnJvbSA8PSB0b19dLCB0aGVyZSBpcyBub1xuICAgICAgICAgICBwb3NzaWJpbGl0eSBvZiBvbmx5IFt0b19dIGJlaW5nIGEgdmFsaWQgcG9zaXRpb24uXG4gICAgICAgICopXG4gICAgICAgIGlmIEludC4oIDwgKSB0b18gZnJvbSB8fCBJbnQuKCA8ICkgZnJvbSAwXG4gICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJbnZhbGlkIGluZGljZXNcIiAoZnJvbSA6IGludCkgKHRvXyA6IGludCldO1xuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIChvbGRfZnJvbSwgb2xkX3RvKSwgU29tZSAoYmVnaW5fa2V5LCBlbmRfa2V5X29wdCkpIC0+XG4gICAgICAgICAgbGV0IGZpbmRfb2Zmc2V0ID0gZmluZF9vZmZzZXQgfmNvbXBhcmU6KE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfYmVnaW4gPSBmcm9tIC0gb2xkX2Zyb20gaW5cbiAgICAgICAgICBsZXQgcmFuZ2Vfb2Zmc2V0X2VuZCA9IHRvXyAtIG9sZF90byBpblxuICAgICAgICAgIGxldCBhZGp1c3RfYW5kX29mZnNldCB+Ynkga2V5ID1cbiAgICAgICAgICAgIGxldCBieSA9IGJ5ICsgaWYgYnkgPj0gMCAmJiBub3QgKE1hcC5tZW0gbWFwIGtleSkgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgb2Zmc2V0IGtleSBtYXAgfmJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGtleXMgY2hhbmdpbmcgYW5kIG5vdCB0aGUgZGF0YSwgc28gW2RhdGFfZXF1YWxdIGhlcmVcbiAgICAgICAgICAgICBjYW4gYmUgYWx3YXlzIHRydWUgKilcbiAgICAgICAgICBsZXQgZGlmZiB+aW5pdCB+ZiA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKSBvbGRfbWFwIG1hcCB+aW5pdCB+ZlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJlZ2luX2tleV9vcHQsIGVuZF9rZXlfb3B0ID1cbiAgICAgICAgICAgIG1hdGNoIGVuZF9rZXlfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBlbmRfa2V5IC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luLCBtYXBfb2Zmc2V0X2VuZCA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDooMCwgMCkgfmY6KGZ1biAob2Zmc2V0X2JlZ2luLCBvZmZzZXRfZW5kKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAoIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAsIG9mZnNldF9lbmQgKyBmaW5kX29mZnNldCB+a2V5OmVuZF9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UgKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBhZGp1c3RfYW5kX29mZnNldCBiZWdpbl9rZXkgfmJ5OihtYXBfb2Zmc2V0X2JlZ2luICsgcmFuZ2Vfb2Zmc2V0X2JlZ2luKVxuICAgICAgICAgICAgICAsIGFkanVzdF9hbmRfb2Zmc2V0IGVuZF9rZXkgfmJ5OihtYXBfb2Zmc2V0X2VuZCArIHJhbmdlX29mZnNldF9lbmQpIClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgbWFwX29mZnNldF9iZWdpbiA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDowIH5mOihmdW4gb2Zmc2V0X2JlZ2luIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgbnRoX2Zyb21fZWl0aGVyX3NpZGUgdG9fIG1hcCApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgYmVnaW5fa2V5X29wdCk7XG4gICAgICAgICAgYXNzZXJ0IChPcHRpb24uZm9yX2FsbCB+ZjooTWFwLm1lbSBtYXApIGVuZF9rZXlfb3B0KTtcbiAgICAgICAgICBPcHRpb24ubWFwIGJlZ2luX2tleV9vcHQgfmY6KGZ1biBiZWdpbl9rZXkgLT4gYmVnaW5fa2V5LCBlbmRfa2V5X29wdClcbiAgICAgICAgfCBOb25lIHwgU29tZSAoXywgXywgTm9uZSkgLT5cbiAgICAgICAgICAoKiBPbiBmaXJzdCBydW4gKHdoZW4gd2UgaGF2ZSB0bykgb3Igd2hlbiBib3RoIHRoZSBrZXlzIGFyZSBub25lLCBydW4gTyhuKVxuICAgICAgICAgICAgIHNjYW4uIFRoaXMgaXMgZmluZSBmb3Iga2V5cy1hcmUtbm9uZSBjYXNlIGFzIGl0IGhhcHBlbnMgd2hlbiB0aGUgcG9zaXRpb25zXG4gICAgICAgICAgICAgYXJlIHBhc3QgZW5kIG9mIHRoZSBtYXAsIHNvIHRoZXkgc2hvdWxkbid0IGJlIHRvbyBmYXIgZnJvbSBlbmQgYWZ0ZXIgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5nZXMsIGFuZCBbZmluZF9rZXlfcmFuZ2VfbGluZWFyXSBpcyBmYXN0IGluIHN1Y2ggY2FzZS4gKilcbiAgICAgICAgICBmaW5kX2tleV9yYW5nZV9saW5lYXIgbWFwIH5mcm9tIH50b18pXG4gICAgaW5cbiAgICAoKiBIYW5kbGUgZGlmZmVyZW50IE1heWJlX2JvdW5kIGNhc2VzIGFuZCBjYWxsIGZpbmRfa2V5X3JhbmdlIGlmIG5lY2Vzc2FyeS4gSXQnc1xuICAgICAgIG5pY2VyIHRvIGRvIHRoaXMgaGVyZSBhcyBvcHBvc2VkIHRvIG1ha2luZyBmaW5kX2tleV9yYW5nZSBldmVuIG1vcmUgY29tcGxpY2F0ZWQgKilcbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0ICggPj4+ICkgbmV3XyBib3VuZCA9IE1heWJlX2JvdW5kLm1hcCB+ZjooZnVuIF8gLT4gbmV3XykgYm91bmQgaW5cbiAgICBsZXQgcmV0dXJuID0gSW5jcmVtZW50YWwucmV0dXJuIChJbmNyZW1lbnRhbC5zdGF0ZSBtYXApIGluXG4gICAgbGV0IGtleV9yYW5nZSA9XG4gICAgICBtYXRjaCVwYXR0ZXJuX2JpbmQgcmFuZ2Ugd2l0aFxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICByZXR1cm4gKFNvbWUgKE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkKSlcbiAgICAgIHwgKCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpXG4gICAgICAgICwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSApIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggbCB1KVxuICAgICAgICBhbmQgbGIgPSBsYlxuICAgICAgICBhbmQgdWIgPSB1YiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYmVnaW5fa2V5LCBTb21lIGVuZF9rZXkpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIGVuZF9rZXkgPj4+IHViKVxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIE5vbmUpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIGwpXG4gICAgICAgIGFuZCBsYiA9IGxiIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKGtleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsICgoTWF5YmVfYm91bmQuSW5jbCB1IHwgTWF5YmVfYm91bmQuRXhjbCB1KSBhcyB1YikgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCB1IHUpXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKFVuYm91bmRlZCwga2V5ID4+PiB1YilcbiAgICAgICAgICgqIEluIHRoaXMgY2FzZSwgdGhlIHVwcGVyIGJvdW5kIHdhcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZVxuICAgICAgICAgICAgbWFwLCBzbyB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSBrZXkgcmFuZ2UgaXMgW1VuYm91bmRlZF0uXG4gICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIGRlbW9uc3RyYXRlZCBpbiBhIHRlc3QgaW4gWy4uL3Rlc3QvdGVzdF9zdWJyYW5nZS5tbF0uICopXG4gICAgICAgICB8IE5vbmUgLT4gU29tZSAoVW5ib3VuZGVkLCBVbmJvdW5kZWQpKVxuICAgIGluXG4gICAgc3VicmFuZ2UgP2RhdGFfZXF1YWwgbWFwIGtleV9yYW5nZVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2VcbiAgICA6IHR5cGUgazEgazIgdiBrMV9jbXAgazJfY21wIHN0YXRlX3dpdG5lc3MuXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDoodiAtPiB2IC0+IGJvb2wpXG4gICAgICAtPiAoazIsIGsyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgICAgLT4gKChrMSwgKGsyLCB2LCBrMl9jbXApIE1hcC50LCBrMV9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAtPiAoKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgZnVuID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKSBrMl9jb21wYXJhdG9yIG0gLT5cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtIChmdW4gazFfY29tcGFyYXRvciAtPlxuICAgICAgICBsZXQgdXBkYXRlXG4gICAgICAgICAgOiAga2V5OmsxIC0+IG9sZF9kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudCAtPiBuZXdfZGF0YTooazIsIHYsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgICAtPiAoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudFxuICAgICAgICAgID1cbiAgICAgICAgICBmdW4gfmtleTprMSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgb2xkX2RhdGFcbiAgICAgICAgICAgICAgbmV3X2RhdGFcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrMiwgZGlmZikgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIE1hcC5jaGFuZ2UgYWNjIGsyIH5mOihmdW4gYWNjX2lubmVyIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjX2lubmVyID1cbiAgICAgICAgICAgICAgICAgICAgTWFwLmNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICB+ZGVmYXVsdDooTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6azFfY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgICAgICAgazFcbiAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIF8gLT4gdmFsdWUpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGFjY19pbm5lciB0aGVuIE5vbmUgZWxzZSBTb21lIGFjY19pbm5lcikpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGQgfmtleSB+ZGF0YSA9XG4gICAgICAgICAgdXBkYXRlIH5rZXkgfm9sZF9kYXRhOihNYXAuZW1wdHkgazJfY29tcGFyYXRvcikgfm5ld19kYXRhOmRhdGFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbW92ZSB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6ZGF0YSB+bmV3X2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICBpblxuICAgICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICAgIG1cbiAgICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgfmFkZFxuICAgICAgICAgIH5yZW1vdmUpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlX2J5XG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcCBjb21iaW5lZF9rZXkgY29tYmluZWRfY21wKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4obWVyZ2Vfa2V5cyA6IG91dGVyX2tleSAtPiBpbm5lcl9rZXkgLT4gY29tYmluZWRfa2V5KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoY29tYmluZWRfa2V5LCBjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH51cGRhdGU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhOl8gfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuc2V0IGFjYyB+a2V5OihtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpIH5kYXRhOm5ld19kYXRhKVxuICAgICAgfmFkZDooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLmFkZF9leG4gYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGEpXG4gICAgICB+cmVtb3ZlOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOl8gYWNjIC0+XG4gICAgICAgIE1hcC5yZW1vdmUgYWNjIChtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpKVxuICA7O1xuXG4gIGxldCBjb2xsYXBzZVxuICAgICAgICAodHlwZSBvdXRlcl9rZXkgb3V0ZXJfY21wIGlubmVyX2tleSBpbm5lcl9jbXApXG4gICAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH5jb21wYXJhdG9yOihpbm5lcl9jb21wYXJhdG9yIDogKGlubmVyX2tleSwgaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBvdXRlcl9jb21wYXJhdG9yIC0+XG4gICAgICBsZXQgbW9kdWxlIENtcCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBvdXRlcl9rZXkgKiBpbm5lcl9rZXlcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAob3V0ZXJfY21wLCBpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9XG4gICAgICAgICAgbGV0IGlubmVyX2NvbXBhcmF0b3IgPVxuICAgICAgICAgICAgbGV0IG1vZHVsZSBNID0gKHZhbCBpbm5lcl9jb21wYXJhdG9yKSBpblxuICAgICAgICAgICAgTS5jb21wYXJhdG9yXG4gICAgICAgICAgaW5cbiAgICAgICAgICBUdXBsZTIuY29tcGFyYXRvciBvdXRlcl9jb21wYXJhdG9yIGlubmVyX2NvbXBhcmF0b3JcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGNvbGxhcHNlX2J5XG4gICAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfm1lcmdlX2tleXM6VHVwbGUyLmNyZWF0ZVxuICAgICAgICB+Y29tcGFyYXRvcjoobW9kdWxlIENtcCkpXG4gIDs7XG5cbiAgbGV0IGV4cGFuZFxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfm91dGVyX2NvbXBhcmF0b3JcbiAgICAgICAgfmlubmVyX2NvbXBhcmF0b3JcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC51cGRhdGUgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTWFwLnNpbmdsZXRvbiBpbm5lcl9jb21wYXJhdG9yIGlubmVyX2tleSBuZXdfZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLnNldCBtYXAgfmtleTppbm5lcl9rZXkgfmRhdGE6bmV3X2RhdGEpKVxuICAgICAgfmFkZDooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IGRhdGFcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+IE1hcC5hZGRfZXhuIG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhOl8gYWNjIC0+XG4gICAgICAgIE1hcC5jaGFuZ2UgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBtYXAgLT5cbiAgICAgICAgICAgIGxldCBtYXAgPSBNYXAucmVtb3ZlIG1hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChub3QgKE1hcC5pc19lbXB0eSBtYXApKSBtYXApKVxuICA7O1xuXG4gIGxldCBjb3VudGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDowXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50IC0gMSBlbHNlIGNvdW50KVxuICA7O1xuXG4gIGxldCBjb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIChjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZikgfmY6KGZ1biBjb3VudCAtPlxuICAgICAgY291bnQgPD4gMClcbiAgOztcblxuICBsZXQgZXhpc3RzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGV4aXN0c2kgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHN1bVxuICAgICAgICAodHlwZSB1KVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDogKChfLCBfLCBfKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKG1vZHVsZSBHcm91cCA6IEFic3RyYWN0X2FsZ2VicmEuQ29tbXV0YXRpdmVfZ3JvdXAuV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0ID0gdSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6R3JvdXAuemVyb1xuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXk6XyB+ZGF0YTp2IGFjYyAtPiBHcm91cC4oICsgKSBhY2MgKGYgdikpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggLSApIGFjYyAoZiB2KSlcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICAoY291bnRpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBub3QgKGYgfmtleSB+ZGF0YSkpKVxuICAgICAgfmY6KGZ1biBjb3VudCAtPiBjb3VudCA9IDApXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZm9yX2FsbGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID9maW5hbGl6ZVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP3VwZGF0ZVxuICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgID9maW5hbGl6ZVxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgIG1hcFxuICAgICAgfmluaXRcbiAgICAgIH5hZGRcbiAgICAgIH5yZW1vdmVcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgID91cGRhdGVcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICA/dXBkYXRlXG4gICAgICBtYXBcbiAgICAgIH5pbml0XG4gICAgICB+YWRkXG4gICAgICB+cmVtb3ZlXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciA9IGZpbmRfa2V5X3JhbmdlX2xpbmVhclxuICBlbmRcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgdHlwZSAoJ3YsICd3KSBlbnRyeSA9XG4gICAgICB7IG11dGFibGUgc2F2ZWRfdmFsdWUgOiAndiBvcHRpb25cbiAgICAgIDsgbm9kZSA6ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS50XG4gICAgICB9XG5cbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgKCogV2UgbWF5IGhhdmUgbXVsdGlwbGUgZW50cmllcyBwZXIga2V5IGlmIG5vZGVzIGJlY29tZSBuZWNlc3NhcnkgYWdhaW4gYWZ0ZXIgYmVpbmdcbiAgICAgICAgIHJlbW92ZWQuICopXG4gICAgICA7IG11dGFibGUgbG9va3VwX2VudHJpZXMgOiAoJ2ssICgndiwgJ3cpIGVudHJ5IGxpc3QsICdjbXApIE1hcC50XG4gICAgICA7IHVwZGF0ZXJfbm9kZSA6ICh1bml0LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgOyBzY29wZSA6ICd3IEluY3JlbWVudGFsLlNjb3BlLnRcbiAgICAgIH1cblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3YsICd3KSB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzLCAndykgdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgID1cbiAgICAgIGxldCByZWMgc2VsZiA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAobGV0IHVwZGF0ZXJfbm9kZSA9XG4gICAgICAgICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChsYXp5IHNlbGYpID0gc2VsZiBpblxuICAgICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgICB+aW5pdDooKVxuICAgICAgICAgICAgICAgICAgIH5mOihmdW4gKCkgKGtleSwgY2hhbmdlZF92YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBlbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgc2VsZi5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBlbnRyaWVzIH5mOihmdW4gZW50cnkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgPC0gKG1hdGNoIGNoYW5nZWRfdmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3X3ZhbHVlIHwgYFVuZXF1YWwgKF8sIG5ld192YWx1ZSkgLT4gU29tZSBuZXdfdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIGVudHJ5Lm5vZGUpKTtcbiAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXAgPC0gaW5wdXRfbWFwKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgIHsgc2F2ZWRfbWFwID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgbG9va3VwX2VudHJpZXMgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyB1cGRhdGVyX25vZGVcbiAgICAgICAgICAgOyBzY29wZSA9IEluY3JlbWVudGFsLlNjb3BlLmN1cnJlbnQgKEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCkgKClcbiAgICAgICAgICAgfSlcbiAgICAgIGluXG4gICAgICBMYXp5LmZvcmNlIHNlbGZcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgbGV0IGN1cnJlbnRfZW50cmllcyA9IE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICBsZXQgaXNfbGlua2VkID0gTGlzdC5leGlzdHMgY3VycmVudF9lbnRyaWVzIH5mOihwaHlzX2VxdWFsIGVudHJ5KSBpblxuICAgICAgaWYgQm9vbC5lcXVhbCBpc19saW5rZWQgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaWYgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSBNYXAudXBkYXRlIHQubG9va3VwX2VudHJpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSAob3RoZXJfZW50cnkgOjogXyBhcyBvdGhlcl9lbnRyaWVzKSAtPlxuICAgICAgICAgICAgKCogVXBkYXRlIHRoaXMgZW50cnkncyB2YWx1ZSB0byBiZSBjdXJyZW50LiAqKVxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gb3RoZXJfZW50cnkuc2F2ZWRfdmFsdWU7XG4gICAgICAgICAgICBlbnRyeSA6OiBvdGhlcl9lbnRyaWVzXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBbXSAtPlxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5O1xuICAgICAgICAgICAgWyBlbnRyeSBdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfZW50cmllcyA9XG4gICAgICAgICAgTGlzdC5maWx0ZXIgY3VycmVudF9lbnRyaWVzIH5mOihmdW4geCAtPiBub3QgKHBoeXNfZXF1YWwgZW50cnkgeCkpXG4gICAgICAgIGluXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gKGlmIExpc3QuaXNfZW1wdHkgbmV3X2VudHJpZXNcbiAgICAgICAgICAgIHRoZW4gTWFwLnJlbW92ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleVxuICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHQubG9va3VwX2VudHJpZXMgfmtleSB+ZGF0YTpuZXdfZW50cmllcykpXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5ID1cbiAgICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIHQudXBkYXRlcl9ub2RlIGluXG4gICAgICBJbmNyZW1lbnRhbC5TY29wZS53aXRoaW4gaW5jcmVtZW50YWxfc3RhdGUgdC5zY29wZSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxldCByZWMgZW50cnkgPVxuICAgICAgICAgIGxhenlcbiAgICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgPSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXlcbiAgICAgICAgICAgIDsgbm9kZSA9XG4gICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlXG4gICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiAoZm9yY2UgZW50cnkpLnNhdmVkX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkpXG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICAgIGVudHJ5Lm5vZGVcbiAgICAgICAgICAoSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIHQudXBkYXRlcl9ub2RlKTtcbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCBrZXkgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgd2l0aFxuICAgICAgfCBlbnRyeSA6OiBfIC0+IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGVcbiAgICAgIHwgW10gLT4gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5XG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgPSBzdHJ1Y3RcbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl9lbnRyeSBzZXhwX29mX3ZhbHVlIGVudHJ5ID1cbiAgICAgICAgbGV0IHsgc2F2ZWRfdmFsdWU7IG5vZGUgfSA9IGVudHJ5IGluXG4gICAgICAgIGxldCBub2RlID0gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSBpblxuICAgICAgICBbJXNleHBcbiAgICAgICAgICB7IHNhdmVkX3ZhbHVlIDogdmFsdWUgb3B0aW9uXG4gICAgICAgICAgOyBub2RlX2luZm8gPSAoSW5jcmVtZW50YWwudXNlcl9pbmZvIG5vZGUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfY29uc3QgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKEluY3JlbWVudGFsLmlzX2NvbnN0IG5vZGUpICgpXG4gICAgICAgICAgICAgICA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfaW52YWxpZCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc192YWxpZCBub2RlKSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc191bm5lY2Vzc2FyeSA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc19uZWNlc3Nhcnkgbm9kZSkpICgpXG4gICAgICAgICAgICAgICA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICB9XVxuICAgICAgOztcblxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgICAgbGV0IGluZm9fcGVyX2tleSA9XG4gICAgICAgICAgTWFwLm1lcmdlIHQuc2F2ZWRfbWFwIHQubG9va3VwX2VudHJpZXMgfmY6KGZ1biB+a2V5IGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBhY3R1YWxfdmFsdWUsIGVudHJpZXMgPVxuICAgICAgICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgeCwgW11cbiAgICAgICAgICAgICAgfCBgUmlnaHQgeSAtPiBOb25lLCB5XG4gICAgICAgICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IFNvbWUgeCwgeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgeyBrZXkgOiBrZXlcbiAgICAgICAgICAgICAgICA7IGFjdHVhbF92YWx1ZSA6ICh2YWx1ZSBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgICAgICAgICA7IGVudHJpZXMgOiB2YWx1ZSBlbnRyeSBsaXN0XG4gICAgICAgICAgICAgICAgfV0pXG4gICAgICAgIGluXG4gICAgICAgIFNleHAuTGlzdCAoTWFwLmRhdGEgaW5mb19wZXJfa2V5KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHN0YXRlX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgU19nZW5cbiAgICB3aXRoIHR5cGUgJ2EgSW5jci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgIGFuZCB0eXBlICdhIEluY3IuQ3V0b2ZmLnQgPSAnYSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgICBhbmQgdHlwZSAoJ2ssICd2LCAnY21wKSBMb29rdXAudCA9ICgnaywgJ3YsICdjbXAsIHN0YXRlX3dpdG5lc3MpIEdlbmVyaWMuTG9va3VwLnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuICBtb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gSW5zdHJ1bWVudGF0aW9uXG5cbiAgbGV0IGZsYXR0ZW4geCA9IGZsYXR0ZW4gSW5jci5TdGF0ZS50IHhcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgaW5jbHVkZSBMb29rdXBcblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXAsIEluY3Iuc3RhdGVfd2l0bmVzcykgTG9va3VwLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEdlbmVyaWNcbiIsIm9wZW4gQ29yZVxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlNfZ2VuKSA9IHN0cnVjdFxuICBtb2R1bGUgRSA9IEluY3IuRXhwZXJ0XG5cbiAgKCogSGFzaHRibCBzdGFydHMgb3V0IGF0IGEgcmlkaWN1bG91cyBzaXplIG9mIDEyOC4gVGhpcyBpcyBhIG1vcmUgcmVhc29uYWJsZSBudW1iZXJcbiAgICAgb2YgYmlucyB0byBoYXZlLiAqKVxuICBsZXQgaGFzaHRibF9zaXplID0gMTBcblxuICAoKiogW3NldHVwX2dlbmVyYXRvcl0gc2V0cyB1cCB0aGUgc3RhZ2VkIGNvbnZlcnNpb24uXG5cbiAgICAgIFtoYXNoYWJsZV0gaXMgdXNlZCB0byBidWlsZCBhIHRhYmxlIG9mIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMuIFdlIGRyb3AgdW5uZWNlc3NhcnlcbiAgICAgIGRlcGVuZGVuY2llcyB0byBhbGxvdyB0aGVtIHRvIGJlIGNvbGxlY3RlZC5cblxuICAgICAgW2NvbXB1dGVfb3V0cHV0IGtleV0gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG91dHB1dCBub2RlIGNvcnJlc3BvbmRpbmcgdG8gW2tleV0uXG4gICAgICBbY29tcHV0ZV9vdXRwdXRdIGlzIGNsb3NlZCBvdmVyIHRoZSBtdXRhYmxlIHN0YXRlIGRldGVybWluaW5nIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICB0aGUgc2VsZWN0b3IncyBpbnB1dC5cblxuICAgICAgW21ha2VfaW5wdXRfbm9kZV0gbWFrZXMgc3VyZSB0aGF0IHdoZW4gdGhlIG11dGFibGUgc3RhdGUgaW5zaWRlIFtjb21wdXRlX291dHB1dF0gaXNcbiAgICAgIHVwZGF0ZWQsIHRoZSBjb3JyZXNwb25kaW5nIG5vZGVzIGluIHRoZSBbbmVjZXNzYXJ5X2RlcGVuZGVuY2llc10gdGFibGUgYXJlIG1hZGVcbiAgICAgIHN0YWxlLiAgKilcbiAgbGV0IHNldHVwX2dlbmVyYXRvclxuICAgICAgICAoaGFzaGFibGUgOiAnYSBIYXNodGJsX2ludGYuSGFzaGFibGUudClcbiAgICAgICAgfihjb21wdXRlX291dHB1dCA6ICdhIC0+ICdiKVxuICAgICAgICB+KG1ha2VfaW5wdXRfbm9kZSA6IG1ha2Vfa2V5X3N0YWxlOignYSAtPiB1bml0KSAtPiB1bml0IEluY3IudClcbiAgICA6ICgnYSAtPiAnYiBJbmNyLnQpIFN0YWdlZC50XG4gICAgPVxuICAgIGxldCBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCAoaW5wdXRfbm9kZSA6IHVuaXQgSW5jci50KSA9XG4gICAgICBsZXQgbWFrZV9rZXlfc3RhbGUga2V5ID1cbiAgICAgICAgSGFzaHRibC5maW5kIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5XG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXVxuICAgICAgICB8PiBMaXN0Lml0ZXIgfmY6RS5Ob2RlLm1ha2Vfc3RhbGVcbiAgICAgIGluXG4gICAgICBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICAoKiBTZXQgdGhlIGN1dG9mZiBzbyB0aGF0IHdlIG5ldmVyIHBhc3MgYXV0b21hdGljYWxseSBmcm9tIHRoZSB1cGRhdGUgdG8gdGhlIG5vZGVzLiBXZVxuICAgICAgIHdhbnQgZXZlcnl0aGluZyB0byBnbyB0aHJvdWdoIFttYWtlX2tleV9zdGFsZV0gKilcbiAgICBJbmNyLnNldF9jdXRvZmYgaW5wdXRfbm9kZSBJbmNyLkN1dG9mZi5hbHdheXM7XG4gICAgc3RhZ2UgKGZ1biBrZXkgLT5cbiAgICAgIGxldCBpbnB1dF9kZXAgPSBFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X25vZGUgaW5cbiAgICAgIGxldCByZWMgb3V0cHV0X25vZGUgPSBsYXp5IChcbiAgICAgICAgRS5Ob2RlLmNyZWF0ZVxuICAgICAgICAgIChmdW4gKCkgLT4gY29tcHV0ZV9vdXRwdXQga2V5KVxuICAgICAgICAgIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZTooZnVuIH5pc19ub3dfb2JzZXJ2YWJsZSAtPlxuICAgICAgICAgICAgaWYgaXNfbm93X29ic2VydmFibGUgdGhlblxuICAgICAgICAgICAgICBIYXNodGJsLmFkZF9tdWx0aSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6KGZvcmNlIG91dHB1dF9ub2RlKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBIYXNodGJsLmNoYW5nZSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIGtleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LmZpbHRlciBsIH5mOihGbi5ub24gKHBoeXNfZXF1YWwgKGZvcmNlIG91dHB1dF9ub2RlKSkpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBsJyAtPiBTb21lIGwnXG4gICAgICAgICAgICAgICkpKVxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfbm9kZSA9IGZvcmNlIG91dHB1dF9ub2RlIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgb3V0cHV0X25vZGUgaW5wdXRfZGVwO1xuICAgICAgRS5Ob2RlLndhdGNoIG91dHB1dF9ub2RlXG4gICAgKVxuXG4gICgqKiBUaGlzIGNyZWF0ZXMgYSB1bml0IGluY3JlbWVudGFsIHRoYXQgZmlyZXMgd2hlbmV2ZXIgdGhlIGlucHV0IGluY3JlbWVudGFsXG4gICAgICBmaXJlcy4gV2hlbiB0aGF0IG9jY3VycywgaXQgdXBkYXRlcyBbc2VsZWN0ZWRdIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICBbaW5wdXRdLCBhbmQgY2FsbHMgW21ha2Vfa2V5X3N0YWxlXSBmb3IgYm90aCB0aGUgb2xkIGFuZCBuZXcgdmFsdWUgb2YgdGhlXG4gICAgICBpbmNyZW1lbnRhbC4gKilcbiAgbGV0IHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZSA9XG4gICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGlucCB+ZjptYWtlX3N0YWxlO1xuICAgICAgT3B0aW9uLml0ZXIgIXNlbGVjdGVkIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBzZWxlY3RlZCA6PSBpbnBcbiAgICApXG5cbiAgbGV0IHNlbGVjdF9vbmUnXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIChpbnB1dCA6IGEgb3B0aW9uIEluY3IudClcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBrZXknIC0+IEguY29tcGFyZSBrZXkga2V5JyA9IDBcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZTptYWtlX2tleV9zdGFsZVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZSBoIGlucHV0ID1cbiAgICBzZWxlY3Rfb25lJyBoIChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIChrZXknLCBkYXRhKSAtPiBpZiBILmNvbXBhcmUga2V5IGtleScgPSAwIHRoZW4gZGF0YSBlbHNlIGRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfnNlbGVjdGVkIH5pbnB1dCB+bWFrZV9zdGFsZTooZnVuIChrZXksIF8pIC0+IG1ha2Vfa2V5X3N0YWxlIGtleSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBILmhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9vbmVfdmFsdWUgaCB+ZGVmYXVsdCBpbnB1dCA9XG4gICAgc2VsZWN0X29uZV92YWx1ZScgaCB+ZGVmYXVsdCAoSW5jci5tYXAgfmY6T3B0aW9uLnNvbWUgaW5wdXQpXG5cbiAgbGV0IHNlbGVjdF9tYW55X3ZhbHVlc1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgaGFzaGFibGUgPSBILmhhc2hhYmxlIGluXG4gICAgbGV0IHNlbGVjdGVkID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgSGFzaHRibC5maW5kIHNlbGVjdGVkIGtleSB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHNlbGVjdGVkIH5mOm1ha2Vfa2V5X3N0YWxlO1xuICAgICAgICBIYXNodGJsLmNsZWFyIHNlbGVjdGVkO1xuICAgICAgICBMaXN0Lml0ZXIgaW5wIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaHRibC5zZXQgc2VsZWN0ZWQgfmtleSB+ZGF0YVxuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9tYW55XG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNoX3NldC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPSBIYXNoX3NldC5tZW0gc2VsZWN0ZWQga2V5IGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgbGV0IG9sZF9zZXQgPSBIYXNoX3NldC5jb3B5IHNlbGVjdGVkIGluXG4gICAgICAgIEhhc2hfc2V0LmNsZWFyIHNlbGVjdGVkO1xuXG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBvbGRfc2V0IGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICAgIEhhc2hfc2V0LmFkZCBzZWxlY3RlZCBrZXlcbiAgICAgICAgKTtcblxuICAgICAgICBIYXNoX3NldC5pdGVyIG9sZF9zZXQgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkpIHRoZW5cbiAgICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgKSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBoYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuZW5kXG5cbiIsImV4dGVybmFsIGpzX3Byb2ZfbWFyayA6IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21hcmtcIlxuZXh0ZXJuYWwganNfcHJvZl9tZWFzdXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwianNfcHJvZl9tZWFzdXJlXCJcbmV4dGVybmFsIGpzX3Byb2ZfY2xlYXJfbWFya3MgOiB1bml0IC0+IHVuaXQgPSBcImpzX3Byb2ZfY2xlYXJfbWFya3NcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tZWFzdXJlcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tZWFzdXJlc1wiXG5cbmxldCBtYXJrIG5hbWUgPSBqc19wcm9mX21hcmsgbmFtZVxubGV0IG1lYXN1cmUgfm5hbWUgfnN0YXJ0IH5lbmRfID0ganNfcHJvZl9tZWFzdXJlIG5hbWUgc3RhcnQgZW5kX1xuXG5sZXQgcmVjb3JkIG5hbWUgfmYgPVxuICBsZXQgYmVmb3JlX25hbWUgPSBuYW1lIF4gXCJfYmVmb3JlXCIgaW5cbiAgbGV0IGFmdGVyX25hbWUgPSBuYW1lIF4gXCJfYWZ0ZXJcIiBpblxuICBsZXQgKCkgPSBtYXJrIGJlZm9yZV9uYW1lIGluXG4gIGxldCByZXMgPSBmICgpIGluXG4gIGxldCAoKSA9IG1hcmsgYWZ0ZXJfbmFtZSBpblxuICBtZWFzdXJlIH5uYW1lIH5zdGFydDpiZWZvcmVfbmFtZSB+ZW5kXzphZnRlcl9uYW1lO1xuICByZXNcbjs7XG5cbmxldCBjbGVhcl9tYXJrcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWFya3MgKClcbmxldCBjbGVhcl9tZWFzdXJlcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMgKClcblxubW9kdWxlIE1hbnVhbCA9IHN0cnVjdFxuICBsZXQgbWFyayA9IG1hcmtcbiAgbGV0IG1lYXN1cmUgPSBtZWFzdXJlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxuXG50eXBlIHQgPVxuICB7IGZpbGVuYW1lIDogc3RyaW5nXG4gIDsgbWltZXR5cGUgOiBzdHJpbmdcbiAgOyBjb250ZW50cyA6IHN0cmluZ1xuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBjcmVhdGUgPSBGaWVsZHMuY3JlYXRlXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8ZG93bmxvYWRlcjogJXM+XCIgdC5maWxlbmFtZSlcblxubGV0IHRyaWdnZXIgeyBmaWxlbmFtZTsgbWltZXR5cGU7IGNvbnRlbnRzIH0gPVxuICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICBpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmdcbiAgdGhlblxuICAgIHByaW50X3NcbiAgICAgIFslbWVzc2FnZSBcIkRvd25sb2FkIHRyaWdnZXJlZFwiIChmaWxlbmFtZSA6IHN0cmluZykgKG1pbWV0eXBlIDogc3RyaW5nKSBjb250ZW50c11cbiAgZWxzZSAoXG4gICAgKCogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5MzI4ODkxLzU1ODU5MiAqKVxuICAgIGxldCBhID0gRG9tX2h0bWwuY3JlYXRlQSBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIGxldCBjb250ZW50c19iaWdzdHIgPVxuICAgICAgVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIChCaWdzdHJpbmcub2Zfc3RyaW5nIGNvbnRlbnRzKVxuICAgIGluXG4gICAgbGV0IGJsb2IgPVxuICAgICAgKCogRG9uJ3QgdXNlIFtibG9iX2Zyb21fc3RyaW5nXS4gVGhhdCBoYXMgYW4gYXR0cmFjdGl2ZSB0eXBlIGJ1dCB3b3JrcyBieSBmaXJzdFxuICAgICAgICAgY29udmVydGluZyBvdXIgT0NhbWwgc3RyaW5nIHRvIGEgSmF2YXNjcmlwdCBzdHJpbmcsIHdoaWNoIGNvbnZlcnRzIHRvXG4gICAgICAgICBVVEYtMTYuIElmIHRoZSBzdHJpbmcgY29udGFpbnMgcmFuZG9tIGJpbmFyeSBkYXRhIHRoYXQgd2lsbCBkaXN0b3J0IGl0LiAqKVxuICAgICAgRmlsZS5ibG9iX2Zyb21fYW55IFsgYGFycmF5QnVmZmVyIGNvbnRlbnRzX2JpZ3N0ciBdIH5jb250ZW50VHlwZTptaW1ldHlwZVxuICAgIGluXG4gICAgbGV0IHVybCA9IERvbV9odG1sLndpbmRvdyMjLl9VUkwjI2NyZWF0ZU9iamVjdFVSTCBibG9iIGluXG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJocmVmXCIpIHVybDtcbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImRvd25sb2FkXCIpIChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIGEjI2NsaWNrO1xuICAgIERvbV9odG1sLndpbmRvdyMjLl9VUkwjI3Jldm9rZU9iamVjdFVSTCB1cmwpXG47O1xuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyhlbmFibGVkID0gdHJ1ZSlcbiAgICAgICAgPyhvbl9jbGljayA9IGZ1biBfIC0+IFZkb20uRWZmZWN0Lklnbm9yZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICB+Z2V0X2Rvd25sb2FkXG4gICAgICAgIH5idXR0b25fdGV4dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgb3BlbiBWZG9tIGluXG4gICAgbGV0IHRyaWdnZXJfY3N2X2Rvd25sb2FkIGV2ID1cbiAgICAgIHRyaWdnZXIgKGdldF9kb3dubG9hZCAoKSk7XG4gICAgICBvbl9jbGljayBldlxuICAgIGluXG4gICAgbGV0IGVuYWJsZWRfZGlzYWJsZWQgPVxuICAgICAgaWYgZW5hYmxlZCB0aGVuIFtdIGVsc2UgWyBBdHRyLmRpc2FibGVkOyBBdHRyLnN0eWxlIChDc3NfZ2VuLmNvbG9yIChgTmFtZSBcImdyZXlcIikpIF1cbiAgICBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIGV4dHJhX2F0dHJzOyBlbmFibGVkX2Rpc2FibGVkOyBbIEF0dHIub25fY2xpY2sgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgXSBdXG4gICAgICB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgTm9kZS5idXR0b24gfmF0dHJzOlsgQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgXSBbIE5vZGUudGV4dCBidXR0b25fdGV4dCBdXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBJbmNyID0gSW5jcmVtZW50YWwuTWFrZSAoKVxuXG4oKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGNsb2NrIGZvciBydW5uaW5nIGNsaWVudHMsIGJ1dCBib25zYWkgdGVzdHMgaGF2ZSB0aGVpclxuICAgb3duIHNlcGFyYXRlIGNsb2NrcyAqKVxubGV0IGNsb2NrID0gSW5jci5DbG9jay5jcmVhdGUgfnN0YXJ0OihUaW1lX25zLm5vdyAoKSkgKClcblxuaW5jbHVkZSBJbmNyXG5tb2R1bGUgTWFwID0gSW5jcl9tYXAuTWFrZSAoSW5jcilcbm1vZHVsZSBTZWxlY3QgPSBJbmNyX3NlbGVjdC5NYWtlIChJbmNyKVxuIiwib3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBDb3JlXG5cbnR5cGUgKCdhY3Rpb24sICdtb2RlbCwgJ3N0YXRlLCAnZXh0cmEpIHdpdGhfZXh0cmEgPVxuICB7IGFwcGx5X2FjdGlvbiA6ICdhY3Rpb24gLT4gJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiB1bml0XG4gIDsgZXh0cmEgOiAnZXh0cmFcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG50eXBlICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCkgdCA9ICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCwgdW5pdCkgd2l0aF9leHRyYVxuXG5sZXQgY3JlYXRlX3dpdGhfZXh0cmEgP2FwcGx5X2FjdGlvbiA/dXBkYXRlX3Zpc2liaWxpdHkgP29uX2Rpc3BsYXkgfmV4dHJhIG1vZGVsIHZpZXcgPVxuICBsZXQgYXBwbHlfYWN0aW9uID1cbiAgICBPcHRpb24udmFsdWUgYXBwbHlfYWN0aW9uIH5kZWZhdWx0OihmdW4gXyBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ID1cbiAgICBPcHRpb24udmFsdWUgdXBkYXRlX3Zpc2liaWxpdHkgfmRlZmF1bHQ6KGZ1biB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCBvbl9kaXNwbGF5ID0gT3B0aW9uLnZhbHVlIG9uX2Rpc3BsYXkgfmRlZmF1bHQ6KGZ1biBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiAoKSkgaW5cbiAgeyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5OyBleHRyYTsgdmlldyB9XG47O1xuXG5sZXQgY3JlYXRlID0gY3JlYXRlX3dpdGhfZXh0cmEgfmV4dHJhOigpXG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG4oKiogQ29tbW9uIG1vZHVsZSB0eXBlcyAqKVxubW9kdWxlIHR5cGUgTW9kZWwgPSBzaWdcbiAgdHlwZSB0XG5cblxuICAoKiogQSBmdW5jdGlvbiBmb3IgdGVzdGluZyB3aGV0aGVyIHRoZSBtb2RlbCBoYXMgY2hhbmdlZCBlbm91Z2ggdG8gcmVxdWlyZSByZWZpcmluZ1xuICAgICAgdGhlIGluY3JlbWVudGFsIGdyYXBoLlxuXG4gICAgICBJdCdzIGJlc3QgaWYgdGhlIHZhbHVlcyBpbiB0aGUgbW9kZWwgc3VwcG9ydCBhIHNlbWFudGljYWxseSByZWFzb25hYmxlIGN1dG9mZlxuICAgICAgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgYXZvaWQgaW5maW5pdGUgcmVjb21wdXRhdGlvbiBsb29wcyB0aGF0IGNhbiBvdGhlcndpc2UgYmVcbiAgICAgIHRyaWdnZXJlZCBieSB0aGUgdmlzaWJpbGl0eSBjaGVja3MuIEZvciB0aGlzIHJlYXNvbiwgaXQncyB0eXBpY2FsbHkgYSBnb29kIGlkZWEgdG9cbiAgICAgIGF2b2lkIGhhdmluZyBzaW1wbGUgY2xvc3VyZXMgc3RvcmVkIGluIHRoZSBtb2RlbC5cblxuICAgICAgVGhhdCBzYWlkLCBpdCBkb2VzIHdvcmsgaWYgeW91IHB1dCBwaHlzX2VxdWFsIGluIGZvciB0aGUgY3V0b2ZmLiAqKVxuICB2YWwgY3V0b2ZmIDogdCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY3Rpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgU3RhdGUgPSBzaWdcbiAgKCoqIFJlcHJlc2VudHMgdGhlIGltcGVyYXRpdmUgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGFuIGFwcGxpY2F0aW9uLCB0eXBpY2FsbHkgdXNlZCBmb3JcbiAgICAgIGhvdXNpbmcgdGhpbmdzIGxpa2UgY29tbXVuaWNhdGlvbiBBc3luYy1SUEMgY29ubmVjdGlvbnMuICopXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICgqKiBbb25fc3RhcnR1cF0gaXMgY2FsbGVkIG9uY2UsIHJpZ2h0IGFmdGVyIHRoZSBpbml0aWFsIERPTSBpcyBzZXQgdG8gdGhlIHZpZXcgdGhhdFxuICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGluaXRpYWwgc3RhdGUuIFRoaXMgaXMgdXNlZnVsIGZvciBkb2luZyB0aGluZ3MgbGlrZSBzdGFydGluZyB1cFxuICAgICAgYXN5bmMgcHJvY2Vzc2VzLiAgTm90ZSB0aGF0IHRoaXMgcGFydCBvZiB0aGUgY29tcHV0YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBhbnlcbiAgICAgIGluY3JlbWVudGFsaXR5LCBzaW5jZSBpdCdzIG9ubHkgcnVuIG9uY2UuICopXG4gIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICgqKiBbY3JlYXRlXSBpcyBhIGZ1bmN0aW9uIHRoYXQgaW5jcmVtZW50YWxseSBjb25zdHJ1Y3RzIGEgeyFDb21wb25lbnR9LiBOb3RlIHRoYXQgYVxuICAgICAgW0NvbXBvbmVudF0gc3VwcG9ydHMgZnVuY3Rpb25zIGxpa2UgW2FwcGx5X2FjdGlvbl0sIHdoaWNoIHJldHVybiBhIG5ldyBbTW9kZWwudF0sXG4gICAgICB3aXRob3V0IHRha2luZyBhIG1vZGVsIGFzIGFuIGV4cGxpY2l0IGlucHV0LiAgVGhlIGludGVudCBpcyBmb3IgW2FwcGx5X2FjdGlvbl0gdG9cbiAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBjdXJyZW50IG1vZGVsIHZpYSBpdHMgY29uc3RydWN0aW9uXG5cbiAgICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIG1pZ2h0IGxvb2sgaW4gcHJhY3RpY2UuXG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHsgY291bnRlciA6IGludCB9IFtAQGRlcml2aW5nIGZpZWxkcywgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBjdXRvZmYgdDEgdDIgPSBjb21wYXJlIHQxIHQyID0gMFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB1bml0XG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBJbmNyZW1lbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGxldCBzaG91bGRfbG9nIF8gPSBmYWxzZVxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgaW5pdGlhbF9tb2RlbCA9IHsgTW9kZWwuY291bnRlciA9IDAgfVxuXG4gICAgICAgIGxldCBvbl9zdGFydHVwIH5zY2hlZHVsZV9hY3Rpb25zIF9tb2RlbCA9XG4gICAgICAgICAgZXZlcnkgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICAgIHNjaGVkdWxlX2FjdGlvbnMgWyBBY3Rpb24uSW5jcmVtZW50IF0pO1xuICAgICAgICAgIERlZmVycmVkLnVuaXRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6XyB+aW5qZWN0Ol8gPVxuICAgICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICAgIGxldCVtYXAgYXBwbHlfYWN0aW9uID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICBmdW4gKEluY3JlbWVudCA6IEFjdGlvbi50KSBfIH5zY2hlZHVsZV9hY3Rpb25zOl8gLT5cbiAgICAgICAgICAgICAgeyBNb2RlbC5jb3VudGVyID0gY291bnRlciArIDEgfVxuICAgICAgICAgIGFuZCB2aWV3ID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9XG4gICAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICAgIFZkb20uTm9kZS5kaXYgW10gWyBWZG9tLk5vZGUudGV4dCAoSW50LnRvX3N0cmluZyBjb3VudGVyKSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVmRvbS5Ob2RlLmJvZHkgW10gWyBjb3VudGVyIF1cbiAgICAgICAgICBhbmQgbW9kZWwgPSBtb2RlbCBpblxuICAgICAgICAgICgqIE5vdGUgdGhhdCB3ZSBkb24ndCBpbmNsdWRlIFtvbl9kaXNwbGF5XSBvciBbdXBkYXRlX3Zpc2liaWxpdHldLCBzaW5jZVxuICAgICAgICAgICAgIHRoZXNlIGFyZSBvcHRpb25hbCBhcmd1bWVudHMgKilcbiAgICAgICAgICBDb21wb25lbnQuY3JlYXRlIH5hcHBseV9hY3Rpb24gbW9kZWwgdmlld1xuICAgICAgICA7OyBdfVxuXG4gICAgICBUaGUgZnVsbCBjb2RlIGZvciB0aGlzIGV4YW1wbGUgY2FuIGJlIGZvdW5kIGluIGV4YW1wbGVzL2NvdW50ZXIuXG4gICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBNb2RlbC50IEluY3IudFxuICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICgqKiBbb2xkX21vZGVsXSBjb250YWlucyB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgbW9kZWwgKilcbiAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAoKiogW2luamVjdF0gZ2l2ZXMgeW91IHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBldmVudCBoYW5kbGVycyBpbiB0aGUgdmlydHVhbCBET00uIEluXG4gICAgICAgIHlvdXIgZXZlbnQgaGFuZGxlciwgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSBhY3Rpb24geW91IHdvdWxkIGxpa2UgdG9cbiAgICAgICAgc2NoZWR1bGUuIFZpcnR1YWwgRE9NIHdpbGwgYXV0b21hdGljYWxseSBkZWxlZ2F0ZSB0aGF0IGFjdGlvbiBiYWNrIHRvIHRoZVxuICAgICAgICBbU3RhcnRfYXBwXSBtYWluIGxvb3AuICopXG4gICAgLT4gKEFjdGlvbi50LCBNb2RlbC50LCBTdGF0ZS50KSBDb21wb25lbnQudCBJbmNyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICB0eXBlICgnc3RhdGUsICdtb2RlbCwgJ2FjdGlvbikgc25hcHNob3QgPVxuICAgIHsgdmlldyA6IFZkb20uTm9kZS50XG4gICAgOyBhcHBseV9hY3Rpb24gOlxuICAgICAgICAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsIC0+ICdhY3Rpb24gLT4gJ21vZGVsXG4gICAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6ICdtb2RlbCAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWxcbiAgICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cblxuICBtb2R1bGUgdHlwZSBTX2Zvcl9ib25zYWkgPSBzaWdcbiAgICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICAgIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICAgdmFsIGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIDogQWN0aW9uLnQgLT4gYm9vbFxuICAgIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgICAtPiAoU3RhdGUudCwgTW9kZWwudCwgQWN0aW9uLnQpIHNuYXBzaG90IEluY3IudFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgUmVjdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdG9wIDogJ2FcbiAgICA7IGxlZnQgOiAnYVxuICAgIDsgYm90dG9tIDogJ2FcbiAgICA7IHJpZ2h0IDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgeyB0b3AgPSBmIHQudG9wOyBsZWZ0ID0gZiB0LmxlZnQ7IGJvdHRvbSA9IGYgdC5ib3R0b207IHJpZ2h0ID0gZiB0LnJpZ2h0IH1cbiAgOztcblxuICBsZXQgaW50X2hlaWdodCB0ID0gdC5ib3R0b20gLSB0LnRvcFxuICBsZXQgaW50X3dpZHRoIHQgPSB0LnJpZ2h0IC0gdC5sZWZ0XG4gIGxldCBmbG9hdF9oZWlnaHQgdCA9IHQuYm90dG9tIC0uIHQudG9wXG4gIGxldCBmbG9hdF93aWR0aCB0ID0gdC5yaWdodCAtLiB0LmxlZnRcbmVuZFxuXG5sZXQgcm91bmRfZmxvYXRfcmVjdCA/KHJvdW5kID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuKSA9IFJlY3QubWFwIH5mOnJvdW5kXG5cbnR5cGUgcm93c19vcl9jb2x1bW5zID1cbiAgfCBSb3dzXG4gIHwgQ29sdW1uc1xuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCB2YXJpYW50cywgY29tcGFyZV1cblxubGV0IGlubmVySGVpZ2h0ICgpID0gRG9tX2h0bWwud2luZG93IyMuaW5uZXJIZWlnaHRcbmxldCBpbm5lcldpZHRoICgpID0gRG9tX2h0bWwud2luZG93IyMuaW5uZXJXaWR0aFxuXG5sZXQgZWxlbWVudF9pc19pbl92aWV3cG9ydCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgRmxvYXQuKCA+PSApIHJlY3QjIy50b3AgMC5cbiAgJiYgRmxvYXQuKCA+PSApIHJlY3QjIy5sZWZ0IDAuXG4gICYmIEZsb2F0LiggPD0gKSByZWN0IyMuYm90dG9tIChGbG9hdC5vZl9pbnQgKGlubmVySGVpZ2h0ICgpKSlcbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5yaWdodCAoRmxvYXQub2ZfaW50IChpbm5lcldpZHRoICgpKSlcbjs7XG5cbigqKiBTY3JvbGxzIHRvIHRoZSBpdGVtIG1hcmtlZCBhcyBcImtlZXAtaW4tdmlld1wiICopXG5sZXQgc2Nyb2xsID8oaWQgPSBcImtlZXAtaW4tdmlld1wiKSAoKSA9XG4gIG1hdGNoIERvbV9odG1sLmdldEVsZW1lbnRCeUlkX29wdCBpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZWx0IC0+IGlmIG5vdCAoZWxlbWVudF9pc19pbl92aWV3cG9ydCBlbHQpIHRoZW4gZWx0IyNzY3JvbGxJbnRvVmlldyBKcy5fdHJ1ZVxuOztcblxuKCogTm90IHlldCBzdXBwb3J0ZWQgb24gQ2hyb21lLiAgTWF5YmUgd2Ugc2hvdWxkIHVzZSBqUXVlcnk/XG4gICB7W1xuICAgICBsZXQgc2Nyb2xsX2ludG9fdmlldyAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IHVuaXQgPVxuICAgICAgIGVsdCMjc2Nyb2xsSW50b1ZpZXcgKG9iamVjdCVqc1xuICAgICAgICAgdmFsIGJsb2NrID0gSnMuc3RyaW5nIFwic3RhcnRcIlxuICAgICAgICAgdmFsIGJlaGF2aW9yID0gSnMuc3RyaW5nIFwic21vb3RoXCJcbiAgICAgICBlbmQpXG4gICBdfVxuKilcbigqIFt2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgZWxdIGdldHMgYm91bmRpbmcgcmVjdCBvZiBbZWx0XS4gVGhlIGJvdW5kaW5nIHJlY3QgaXNcbiAgIHJlbGF0aXZlIHRvIHRoZSB2aWV3IHBvcnQgKilcbmxldCB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgcmVjdCA9IGVsdCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIHsgUmVjdC50b3AgPSByZWN0IyMudG9wXG4gIDsgbGVmdCA9IHJlY3QjIy5sZWZ0XG4gIDsgYm90dG9tID0gcmVjdCMjLmJvdHRvbVxuICA7IHJpZ2h0ID0gcmVjdCMjLnJpZ2h0XG4gIH1cbjs7XG5cbmxldCB2aWV3cG9ydF9yZWN0ICgpID1cbiAgeyBSZWN0LnRvcCA9IDA7IGxlZnQgPSAwOyBib3R0b20gPSBpbm5lckhlaWdodCAoKTsgcmlnaHQgPSBpbm5lcldpZHRoICgpIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdF9vZl9lbGVtZW50IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogZmxvYXQgUmVjdC50ID1cbiAgbGV0IGJvdW5kaW5nX3JlY3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgZWx0IGluXG4gIHsgYm91bmRpbmdfcmVjdCB3aXRoXG4gICAgYm90dG9tID0gYm91bmRpbmdfcmVjdC50b3AgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gYm91bmRpbmdfcmVjdC5sZWZ0ICsuIEZsb2F0Lm9mX2ludCBlbHQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5sZXQgY2xpZW50X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMFxuICA7IGxlZnQgPSAwXG4gIDsgYm90dG9tID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRIZWlnaHRcbiAgOyByaWdodCA9IERvbV9odG1sLmRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IyMuY2xpZW50V2lkdGhcbiAgfVxuOztcblxuXG4oKiogU2ltcGxlIHdyYXBwZXIgZm9yIHRoZSBiaW5hcnktc2VhcmNoIGZ1bmN0b3IgICAqKVxubGV0IGJpbmFyeV9zZWFyY2ggKHR5cGUgZWx0KSB+bGVuZ3RoIH5nZXQgfmNvbXBhcmUgbW9kZSB4ID1cbiAgbGV0IG1vZHVsZSBCcyA9XG4gICAgQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyBlbHQgPSBlbHRcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB1bml0XG5cbiAgICAgIGxldCBnZXQgKCkgbiA9IGdldCBuXG4gICAgICBsZXQgbGVuZ3RoICgpID0gbGVuZ3RoXG4gICAgZW5kKVxuICBpblxuICBCcy5iaW5hcnlfc2VhcmNoICgpIH5jb21wYXJlIG1vZGUgeFxuOztcblxuKCoqIFNlYXJjaGVzIHRocm91Z2ggZWxlbWVudHMgaW5kZXhlZCBmcm9tIFswXSB0byBbbGVuZ3RoIC0gMV0uICopXG5sZXQgZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgfnNlYXJjaF9ieSBtb2RlIGxheW91dCB4ID1cbiAgbGV0IGdldCA9XG4gICAgbGV0IG50aF9lbGVtZW50IG4gPVxuICAgICAgbGV0IGlkID0gbnRoX2VsZW1lbnRfaWQgbiBpblxuICAgICAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJFbGVtZW50ICVzIG5vdCBmb3VuZFwiIGlkICgpXG4gICAgICB8IFNvbWUgZWx0IC0+IGVsdFxuICAgIGluXG4gICAgbGV0IGZpcnN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudCAwKSBpblxuICAgIGxldCBsYXN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudCAobGVuZ3RoIC0gMSkpIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbid0aCBlbGVtZW50IGluIGEgbm9ybWFsaXplZCB3YXksIGFzIGlmIHRoZSBpbmRleGluZyBhbHdheXMgZ29lcyBpblxuICAgICAgIGluY3JlYXNpbmcgb3JkZXIgZnJvbSB0b3AgdG9wIGJvdHRvbSAqKVxuICAgIGxldCBudGhfZWxlbWVudF9ub3JtYWxpemVkIG4gPVxuICAgICAgbGV0IGlzX2FzY2VuZGluZyA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBGbG9hdC4oIDw9ICkgZmlyc3QudG9wIGxhc3QudG9wXG4gICAgICAgIHwgQ29sdW1ucyAtPiBGbG9hdC4oIDw9ICkgZmlyc3QubGVmdCBsYXN0LmxlZnRcbiAgICAgIGluXG4gICAgICBudGhfZWxlbWVudCAoaWYgaXNfYXNjZW5kaW5nIHRoZW4gbiBlbHNlIGxlbmd0aCAtIG4gLSAxKVxuICAgIGluXG4gICAgZnVuIG4gLT4gc2VhcmNoX2J5ICh2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbikpXG4gIGluXG4gIGJpbmFyeV9zZWFyY2ggfmxlbmd0aCB+Z2V0IH5jb21wYXJlOkZsb2F0LmNvbXBhcmUgbW9kZSB4XG47O1xuXG5sZXQgZmluZF92aXNpYmxlX3JhbmdlIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIGxheW91dCA9XG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBlbGVtZW50X3NlYXJjaCA9IGVsZW1lbnRfc2VhcmNoIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIGluXG4gICAgbGV0IHZpZXdwb3J0X3JlY3QgPSB2aWV3cG9ydF9yZWN0ICgpIGluXG4gICAgbGV0IGZpcnN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LmJvdHRvbSwgdmlld3BvcnRfcmVjdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QucmlnaHQsIHZpZXdwb3J0X3JlY3QubGVmdFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBsYXlvdXQgKEZsb2F0Lm9mX2ludCB0YXJnZXQpXG4gICAgaW5cbiAgICBsZXQgbGFzdCA9XG4gICAgICBsZXQgc2VhcmNoX2J5LCB0YXJnZXQgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gUmVjdC50b3AsIHZpZXdwb3J0X3JlY3QuYm90dG9tXG4gICAgICAgIHwgQ29sdW1ucyAtPiBSZWN0LmxlZnQsIHZpZXdwb3J0X3JlY3QucmlnaHRcbiAgICAgIGluXG4gICAgICBlbGVtZW50X3NlYXJjaCB+c2VhcmNoX2J5IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBsYXlvdXQgKEZsb2F0Lm9mX2ludCB0YXJnZXQpXG4gICAgaW5cbiAgICAoKiBCb3RoIFtmaXJzdF0gYW5kIFtsYXN0XSBuZWVkIHRvIGJlIFtTb21lXS4gT3RoZXJ3aXNlLCBmb3IgZXhhbXBsZSBpZiB0aGUgd2hvbGVcbiAgICAgICB0YWJsZSBpcyBiZWxvdyB2aWV3IHBvcnQsIHRoZW4gW2ZpcnN0XSB3aWxsIGJlIFtTb21lXSwgW2xhc3RdIHdpbGwgYmUgW05vbmVdICopXG4gICAgT3B0aW9uLmJvdGggZmlyc3QgbGFzdClcbjs7XG5cbmxldCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwclxuICAgIHtqc3xcbiAgICAgIChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50O1xuICAgICAgICB2YXIgd2luID0gZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgICAgICAgdmFyIHJlID0gLyhhdXRvfHNjcm9sbCkvO1xuXG4gICAgICAgIGlmIChlbGVtZW50ID09PSBkb2MpIHtcbiAgICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGN1ciA9IGVsZW1lbnQucGFyZW50Tm9kZTtcblxuICAgICAgICB3aGlsZSAoY3VyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICB2YXIgc3R5bGUgPSB3aW4uZ2V0Q29tcHV0ZWRTdHlsZShjdXIpO1xuXG4gICAgICAgICAgaWYgKHJlLnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1kgKyBzdHlsZS5vdmVyZmxvd1gpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgIH0pXG4gICAgfGpzfVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyIChlbCA6ICNEb20ubm9kZSBKcy50KSA6IERvbS5ub2RlIEpzLnQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgZ2V0X3Njcm9sbF9jb250YWluZXJfanNfZXhwciBbfCBKcy5VbnNhZmUuaW5qZWN0IGVsIHxdXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBQZXJmb3JtYW5jZSA9IEphdmFzY3JpcHRfcHJvZmlsaW5nXG5cbmxldCB0aW1lcl9zdGFydCBzIH5kZWJ1ZyB+cHJvZmlsZSA9XG4gIGlmIHByb2ZpbGUgdGhlbiBQZXJmb3JtYW5jZS5NYW51YWwubWFyayAocyBeIFwiYmVmb3JlXCIpO1xuICBpZiBkZWJ1ZyB0aGVuIEZpcmVidWcuY29uc29sZSMjdGltZSAoSnMuc3RyaW5nIHMpXG47O1xuXG5sZXQgdGltZXJfc3RvcCBzIH5kZWJ1ZyB+cHJvZmlsZSA9XG4gIGlmIHByb2ZpbGVcbiAgdGhlbiAoXG4gICAgbGV0IGJlZm9yZSA9IHMgXiBcImJlZm9yZVwiIGluXG4gICAgbGV0IGFmdGVyID0gcyBeIFwiYWZ0ZXJcIiBpblxuICAgIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIGFmdGVyO1xuICAgIFBlcmZvcm1hbmNlLk1hbnVhbC5tZWFzdXJlIH5uYW1lOnMgfnN0YXJ0OmJlZm9yZSB+ZW5kXzphZnRlcik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lRW5kIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCBwcmludF9lcnJvcmYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKSkgZm10XG5cbm1vZHVsZSBSZXF1ZXN0X2lkcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5cbiAgdmFsIHNldF9vbmNlX2V4blxuICAgIDogIHRcbiAgICAtPiBhbmltYXRpb25fZnJhbWVfaWQ6RG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAtPiBzZXRfdGltZW91dF9pZDpEb21faHRtbC50aW1lb3V0X2lkXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBjYW5jZWxsZWQgOiB0IC0+IGJvb2xcbiAgdmFsIGNhbmNlbCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgaWRzID1cbiAgICB8IEVtcHR5XG4gICAgfCBDYW5jZWxsZWRcbiAgICB8IElkcyBvZlxuICAgICAgICB7IGFuaW1hdGlvbl9mcmFtZV9pZCA6IERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG4gICAgICAgIDsgc2V0X3RpbWVvdXRfaWQgOiBEb21faHRtbC50aW1lb3V0X2lkXG4gICAgICAgIH1cblxuICB0eXBlIHQgPSBpZHMgcmVmXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSByZWYgRW1wdHlcblxuICBsZXQgc2V0X29uY2VfZXhuICh0IDogdCkgfmFuaW1hdGlvbl9mcmFtZV9pZCB+c2V0X3RpbWVvdXRfaWQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPlxuICAgICAgKCogVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGxldCdzIGJlIGRlZmVuc2l2ZS4gKilcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2ZyYW1lX2lkO1xuICAgICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgc2V0X3RpbWVvdXRfaWRcbiAgICB8IEVtcHR5IC0+IHQgOj0gSWRzIHsgYW5pbWF0aW9uX2ZyYW1lX2lkOyBzZXRfdGltZW91dF9pZCB9XG4gICAgfCBJZHMgXyAtPiBpbnZhbGlkX2FyZyBcInJlcXVlc3RfaWRzIGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgY2FuY2VsbGVkIHggPVxuICAgIG1hdGNoICF4IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiB0cnVlXG4gICAgfCBFbXB0eSB8IElkcyBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGNhbmNlbCAodCA6IHQpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT4gKClcbiAgICB8IEVtcHR5IC0+IHQgOj0gQ2FuY2VsbGVkXG4gICAgfCBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH0gLT5cbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2ZyYW1lX2lkO1xuICAgICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgc2V0X3RpbWVvdXRfaWQ7XG4gICAgICB0IDo9IENhbmNlbGxlZFxuICA7O1xuZW5kXG5cbigqKiBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIG5vdGlmaWVzIHRoZSBicm93c2VyIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gZG8gc29tZVxuICAgIGNvbXB1dGF0aW9uIGJlZm9yZSB0aGUgbmV4dCByZXBhaW50LiBCZWNhdXNlIHRoaXMgbmVlZHMgdG8gb2NjdXIgaW4gdGhlIHNhbWVcbiAgICBzeW5jaHJvbm91cyBjYWxsIChjYWxsZWQgYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQpLCByZXR1cm5pbmcgYSBEZWZlcnJlZC50IHdpbGwgbm90XG4gICAgd29yay4gSW5zdGVhZCwgeW91IHBhc3MgaW4gYSBqb2IgdG8gYmUgcnVuIGJlZm9yZSB0aGUgcmVwYWludC5cblxuICAgIE5vdGUgdGhhdCBpZiBbY2FsbGJhY2tdIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgd29yayBiZWZvcmUgZG9pbmcgRE9NIGNoYW5nZXMsIHRob3NlXG4gICAgY2hhbmdlcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVwYWludCBhbmQgd2lsbCBiZSBzYXZlZCB1bnRpbCB0aGUgZm9sbG93aW5nIG9uZS5cblxuICAgIFdoZW4gdGhlIHRhYiBpcyBpbiB0aGUgYmFja2dyb3VuZCwgdGhlIGJyb3dzZXJzIG5hdGl2ZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZnVuY3Rpb25cbiAgICB3aWxsIG5ldmVyIGNhbGwgdGhlIGNhbGxiYWNrLCBzbyBpbiBvcmRlciB0byBjb250aW51ZSBwcm9jZXNzaW5nIGV2ZW50cywgd2Ugc2V0IGFuXG4gICAgYWx0ZXJuYXRlIHNldFRpbWVvdXQgYXQgMSBzZWNvbmQuXG4qKVxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrID1cbiAgKCogV2UgY2FwdHVyZSB0aGUgY3VycmVudCBjb250ZXh0IHRvIHVzZSBpdCBsYXRlciB3aGVuIGhhbmRsaW5nIGNhbGxiYWNrcyBmcm9tXG4gICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgc2luY2UgZXhjZXB0aW9ucyByYWlzZWQgdG8gdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGdvIHRocm91Z2hcbiAgICAgb3VyIG9yZGluYXJ5IEFzeW5jIG1vbml0b3IuICopXG4gIGxldCBjdXJyZW50X2NvbnRleHQgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgaW5cbiAgbGV0IHJlcXVlc3RfaWRzID0gUmVxdWVzdF9pZHMuY3JlYXRlICgpIGluXG4gIGxldCBjYWxsYmFjayAoKSA9XG4gICAgaWYgUmVxdWVzdF9pZHMuY2FuY2VsbGVkIHJlcXVlc3RfaWRzXG4gICAgdGhlbiAoKVxuICAgIGVsc2UgKFxuICAgICAgUmVxdWVzdF9pZHMuY2FuY2VsIHJlcXVlc3RfaWRzO1xuICAgICAgbGV0IGNhbGxiYWNrX3Jlc3VsdCA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIud2l0aGluX2NvbnRleHQgY3VycmVudF9jb250ZXh0IGNhbGxiYWNrXG4gICAgICBpblxuICAgICAgaWdub3JlIChjYWxsYmFja19yZXN1bHQgOiAodW5pdCwgdW5pdCkgUmVzdWx0LnQpKVxuICBpblxuICBsZXQgYW5pbWF0aW9uX2ZyYW1lX2lkID1cbiAgICBsZXQgYW5pbWF0aW9uX2NhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gY2FsbGJhY2sgKCkpIGluXG4gICAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2NhbGxiYWNrXG4gIGluXG4gIGxldCBzZXRfdGltZW91dF9pZCA9XG4gICAgbGV0IHRpbWVvdXRfY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICAoKiAxMDAwIG1zID0gMXM7ICBDaG9zZW4gYmVjYXVzZSBiYWNrZ3JvdW5kZWQgdGFuZ2xlIHNlbmRzIHJlcXVlc3RzXG4gICAgICAgYXQgYXBwcm94aW1hdGVseSB0aGlzIHJhdGUuICopXG4gICAgbGV0IHRpbWVvdXQgPSAxMDAwLjAgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQgdGltZW91dF9jYWxsYmFjayB0aW1lb3V0XG4gIGluXG4gIFJlcXVlc3RfaWRzLnNldF9vbmNlX2V4biByZXF1ZXN0X2lkcyB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZFxuOztcblxuKCoqIFRoZSBKc19vZl9vY2FtbCB0eXBlIERvbV9odG1sLmVsZW1lbnQgZG9lc24ndCBoYXZlIHRoZSBjb3JyZWN0IG9wdGlvbnMgZm9yXG4gICAgdGhlaXIgYGZvY3VzYCBtZXRob2QuIENhc3QgdG8gdGhpcyBpbiBvcmRlciB0byB3b3JrIGFyb3VuZCB0aGlzIGJ1Zy4gICopXG50eXBlIGZvY3VzYWJsZSA9XG4gIDwgZm9jdXMgOiA8IHByZXZlbnRTY3JvbGwgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcCA+IEpzLnQgLT4gdW5pdCBKcy5tZXRoID5cblxubGV0IGFzX2ZvY3VzYWJsZSA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiBmb2N1c2FibGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2VcblxuKCoqIFtWaXNpYmlsaXR5XSBlbmNhcHN1bGF0ZXMgdGhlIGRpcnR5aW5nIGFuZCBjbGVhbmluZyBvZiB0aGUgdmlzaWJpbGl0eSBmbGFnXG5cbiAgICBUaGUgdmlld3BvcnQgc3RhcnRzIG91dCBkaXJ0eS4gV2hlbiB3ZSBsb29rIGF0IHRoZSBET00gdG8gY29tcHV0ZSB3aGF0IGlzIHZpc2libGUgYnlcbiAgICBjYWxsaW5nIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHRoZSB2aWV3cG9ydCB0aGVuIGJlY29tZXMgY2xlYW4uIEFueSB0aW1lIHRoZSB1c2VyXG4gICAgc2Nyb2xscyBvdXIgcGFnZSBvciByZXNpemVzIHRoZSB3aW5kb3csIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluLiBJZiB3ZSB1cGRhdGVcbiAgICB0aGUgRE9NLCB0aGUgdmlld3BvcnQgYmVjb21lcyBkaXJ0eSBhZ2FpbiBiZWNhdXNlIGEgRE9NIHVwZGF0ZSBjb3VsZCBjYXVzZSBhIHJlZmxvdyxcbiAgICBtb3ZpbmcgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIHZpc2libGUuXG5cbiAgICBXZSBoYXZlIGltcGxlbWVudGVkIHRoaXMgYXMgYSBmbGFnIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZSB1c2VycyB0byBzZW5kIGFuIGFjdGlvbiBvblxuICAgIHNjcm9sbCBiZWNhdXNlIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8gY29tcHV0ZSB0aGUgdmlzaWJpbGl0eSBvbiB0aGUgdmlydHVhbC1kb21cbiAgICB3aGVuIHRoZSB2aXJ0dWFsLWRvbSBkb2VzIG5vdCBtYXRjaCB0aGUgYWN0dWFsIGRvbSAoYXMgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZlxuICAgIFthcHBseV9hY3Rpb25zXSkuICopXG5tb2R1bGUgVmlzaWJpbGl0eSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlX2FzX2RpcnR5IDogdW5pdCAtPiB0XG4gIHZhbCBtYXJrX2NsZWFuIDogdCAtPiB1bml0XG4gIHZhbCBtYXJrX2RpcnR5IDogdCAtPiB1bml0XG4gIHZhbCBpc19kaXJ0eSA6IHQgLT4gYm9vbFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgbXV0YWJsZSB3aGVuX2RpcnR5IDogdW5pdCBJdmFyLnQgfVxuXG4gIGxldCBjcmVhdGVfYXNfZGlydHkgKCkgPSB7IHdoZW5fZGlydHkgPSBJdmFyLmNyZWF0ZV9mdWxsICgpIH1cbiAgbGV0IG1hcmtfZGlydHkgdCA9IEl2YXIuZmlsbF9pZl9lbXB0eSB0LndoZW5fZGlydHkgKClcbiAgbGV0IGlzX2RpcnR5IHQgPSBJdmFyLmlzX2Z1bGwgdC53aGVuX2RpcnR5XG4gIGxldCBtYXJrX2NsZWFuIHQgPSBpZiBpc19kaXJ0eSB0IHRoZW4gdC53aGVuX2RpcnR5IDwtIEl2YXIuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIExvZ2dpbmdfZmlsdGVyID0gc3RydWN0XG4gIG1vZHVsZSBTdHJpbmdfYmxhbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIEJsYW5nLnQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHwgQWxsXG4gICAgfCBOb25lXG4gICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgb2YgU3RyaW5nX2JsYW5nLnRcbiAgICB8IEN1c3RvbV9maWx0ZXIgb2YgKFNleHAudCAtPiBib29sKVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z19mbGFncyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgdmFsIGluaXRfYXBwXG4gICAgOiAgYXBwX2lkOnN0cmluZ1xuICAgIC0+IGZpbHRlcl9uYW1lczpTdHJpbmcuU2V0LnRcbiAgICAtPiBkZWJ1Zzpib29sXG4gICAgLT4gc3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGxvZ2dpbmdfZmlsdGVyIDogdW5pdCAtPiBMb2dnaW5nX2ZpbHRlci50XG4gICAgOyBzaG91bGRfcHJvZmlsZSA6IHVuaXQgLT4gYm9vbFxuICAgIDsgc2hvdWxkX2RlYnVnIDogdW5pdCAtPiBib29sXG4gICAgfVxuXG4gIG1vZHVsZSBBcHBfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWx0ZXJfbmFtZXMgOiBTdHJpbmcuU2V0LnRcbiAgICAgIDsgbG9nZ2luZ19maWx0ZXIgOiBMb2dnaW5nX2ZpbHRlci50IHJlZlxuICAgICAgOyBzaG91bGRfcHJvZmlsZSA6IGJvb2wgcmVmXG4gICAgICA7IHNob3VsZF9kZWJ1ZyA6IGJvb2wgcmVmXG4gICAgICB9XG5cbiAgICBsZXQgc2V0X2xvZ2dpbmdfZmlsdGVyIHQgfmxvZ2dpbmdfZmlsdGVyID0gdC5sb2dnaW5nX2ZpbHRlciA6PSBsb2dnaW5nX2ZpbHRlclxuICAgIGxldCBzZXRfc2hvdWxkX3Byb2ZpbGUgdCB+c2hvdWxkX3Byb2ZpbGUgPSB0LnNob3VsZF9wcm9maWxlIDo9IHNob3VsZF9wcm9maWxlXG4gICAgbGV0IHNldF9zaG91bGRfZGVidWcgdCB+c2hvdWxkX2RlYnVnID0gdC5zaG91bGRfZGVidWcgOj0gc2hvdWxkX2RlYnVnXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgZ2xvYmFsID0gb2JqZWN0XG4gICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0FsbCA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnRMb2dnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydExvZ2dpbmdDdXN0b20gOlxuICAgICAgKChKcy5qc19zdHJpbmcgSnMudCAtPiBib29sIEpzLnQpIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0b3BMb2dnaW5nIDogKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0UHJvZmlsaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdG9wUHJvZmlsaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydERlYnVnZ2luZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RvcERlYnVnZ2luZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2F2ZUluY3JlbWVudGFsR3JhcGggOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICBlbmRcblxuICBsZXQgZ2xvYmFsIDogZ2xvYmFsIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsXG4gIGxldCBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgPSByZWYgZmFsc2VcbiAgbGV0IGFwcF9zdGF0ZXMgOiBBcHBfc3RhdGUudCBTdHJpbmcuVGFibGUudCA9IFN0cmluZy5UYWJsZS5jcmVhdGUgKClcblxuICBsZXQgc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIlxcXCJcIiBeIHN0ciBeIFwiXFxcIlwiKSB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gIDs7XG5cbiAgbGV0IG11bHRpX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGluaXRfZ2xvYmFsIH5hcHBfZmlsdGVycyAoKSA9XG4gICAgbGV0IHdpdGhfYXBwX2lkX29wdCB1cGRhdGVfc3RhdGUgYXBwX2lkX29wdCA9XG4gICAgICBsZXQgYXBwX2lkX29wdCA9IEpzLk9wdC50b19vcHRpb24gYXBwX2lkX29wdCB8PiBPcHRpb24ubWFwIH5mOkpzLnRvX3N0cmluZyBpblxuICAgICAgbWF0Y2ggYXBwX2lkX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gSGFzaHRibC5pdGVyIGFwcF9zdGF0ZXMgfmY6dXBkYXRlX3N0YXRlXG4gICAgICB8IFNvbWUgYXBwX2lkIC0+XG4gICAgICAgIChtYXRjaCBIYXNodGJsLmZpbmQgYXBwX3N0YXRlcyBhcHBfaWQgd2l0aFxuICAgICAgICAgfCBTb21lIHN0YXRlIC0+IHVwZGF0ZV9zdGF0ZSBzdGF0ZVxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZlxuICAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgYXBwIHdpdGggaWQgXFxcIiVzXFxcIi4gVmFsaWQgYXBwIGlkcyBhcmU6ICVzXCJcbiAgICAgICAgICAgICBhcHBfaWRcbiAgICAgICAgICAgICAoSGFzaHRibC5rZXlzIGFwcF9zdGF0ZXMgfD4gc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QpKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBsb2dnaW5nX2ZpbHRlciA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXIgfmxvZ2dpbmdfZmlsdGVyKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9zaG91bGRfcHJvZmlsZSBzaG91bGRfcHJvZmlsZSA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfc2hvdWxkX3Byb2ZpbGUgfnNob3VsZF9wcm9maWxlKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9zaG91bGRfZGVidWcgc2hvdWxkX2RlYnVnID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfZGVidWcgfnNob3VsZF9kZWJ1ZylcbiAgICBpblxuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ0FsbCA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgQWxsKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gYmxhbmdfc3RyIC0+XG4gICAgICBsZXQgYmxhbmdfc3RyID0gSnMudG9fc3RyaW5nIGJsYW5nX3N0ciBpblxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChmdW4gYXBwX3N0YXRlIC0+XG4gICAgICAgIGxldCBibGFuZyA9IEJsYW5nLnRfb2Zfc2V4cCBTdHJpbmcudF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBibGFuZ19zdHIpIGluXG4gICAgICAgIGxldCBpbnZhbGlkX25hbWVzID1cbiAgICAgICAgICBCbGFuZy5mb2xkIGJsYW5nIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBpbnZhbGlkX25hbWVzIG5hbWUgLT5cbiAgICAgICAgICAgIGlmIFNldC5tZW0gYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyBuYW1lXG4gICAgICAgICAgICB0aGVuIGludmFsaWRfbmFtZXNcbiAgICAgICAgICAgIGVsc2UgU2V0LmFkZCBpbnZhbGlkX25hbWVzIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFNldC5pc19lbXB0eSBpbnZhbGlkX25hbWVzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyXG4gICAgICAgICAgICBhcHBfc3RhdGVcbiAgICAgICAgICAgIH5sb2dnaW5nX2ZpbHRlcjooTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIG5hbWVkIGZpbHRlcihzKTogJXMuIFZhbGlkIG5hbWVzIGFyZTpcXG4lc1wiXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgaW52YWxpZF9uYW1lcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdClcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpKSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQ3VzdG9tXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGZpbHRlciAtPlxuICAgICAgbGV0IGZpbHRlciBhY3Rpb25fc2V4cCA9XG4gICAgICAgIGFjdGlvbl9zZXhwIHw+IFNleHAudG9fc3RyaW5nIHw+IEpzLnN0cmluZyB8PiBmaWx0ZXIgfD4gSnMudG9fYm9vbFxuICAgICAgaW5cbiAgICAgIHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciAoQ3VzdG9tX2ZpbHRlciBmaWx0ZXIpKTtcbiAgICBnbG9iYWwjIy5zdG9wTG9nZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgTm9uZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zdGFydERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BEZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc2F2ZUluY3JlbWVudGFsR3JhcGhcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBmaWxlbmFtZSA9IFwiY3VycmVudF9pbmNyX2RvbV9kb3RfZ3JhcGguZG90XCIgaW5cbiAgICAgIFVpX2luY3Iuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlbmFtZTtcbiAgICAgIGxldCBjb250ZW50cyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZmlsZW5hbWUgaW5cbiAgICAgIFZkb21fZmlsZV9kb3dubG9hZC5jcmVhdGUgfmZpbGVuYW1lIH5taW1ldHlwZTpcInBsYWluL3RleHRcIiB+Y29udGVudHNcbiAgICAgIHw+IFZkb21fZmlsZV9kb3dubG9hZC50cmlnZ2VyKTtcbiAgICBsZXQgZ3JvdXAgcyB+ZiA9XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwQ29sbGFwc2VkIChKcy5zdHJpbmcgcyk7XG4gICAgICBmICgpO1xuICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZFxuICAgIGluXG4gICAgbGV0IGxvZyBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKSBpblxuICAgIGdyb3VwIFwiSW5jcl9kb20gLyBCb25zYWkgQ29uc29sZVwiIH5mOihmdW4gKCkgLT5cbiAgICAgIGdyb3VwIFwiQWN0aW9uIExvZ2dpbmdcIiB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxvZ1xuICAgICAgICAgIHt8TG9nZ2luZyBwcmludHMgYWN0aW9uIGluZm8gdG8gdGhlIGNvbnNvbGUuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRvIHN0YXJ0IGxvZ2dpbmcsIHR5cGUgb25lIG9mIHRoZSBmb2xsb3dpbmc6XG5zdGFydExvZ2dpbmdBbGwoW2FwcF9pZF0pIC0gbG9nIGFsbCBhY3Rpb25zXG5zdGFydExvZ2dpbmcoZmlsdGVyX25hbWUgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIHByZS1kZWZpbmVkIG5hbWVkIGZpbHRlciBbZmlsdGVyX25hbWVdXG5zdGFydExvZ2dpbmcoZmlsdGVyX25hbWVfYmxhbmcgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGJsYW5nIG9mIG5hbWVkIGZpbHRlcnMgW2ZpbHRlcl9uYW1lX2JsYW5nXVxuc3RhcnRMb2dnaW5nQ3VzdG9tKGZpbHRlciBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgY3VzdG9tIGZ1bmN0aW9uIFtmaWx0ZXJdIGZyb20gYSBzdHJpbmcgKHRoZSBhY3Rpb24gc2V4cCkgdG8gYSBib29sXG5UbyBzdG9wIGxvZ2dpbmcsIHR5cGU6IHN0b3BMb2dnaW5nKFthcHBfaWRdKXx9KTtcbiAgICAgIGdyb3VwIFwiQWN0aW9uIFByb2ZpbGluZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xQcm9maWxpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cblRvIHN0YXJ0IHByb2ZpbGluZywgdHlwZTogc3RhcnRQcm9maWxpbmcoW2FwcF9pZF0pXG5UbyBzdG9wIHByb2ZpbGluZywgdHlwZTogc3RvcFByb2ZpbGluZyhbYXBwX2lkXSl8fSk7XG4gICAgICBncm91cCBcIkRlYnVnZ2luZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xEZWJ1Z2dpbmcgcHJpbnRzIHRpbWluZyBpbmZvIHRvIHRoZSBjb25zb2xlLiBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGJ5IHRoZSBhcHAuXG5UbyBzdGFydCBkZWJ1Z2dpbmcsIHR5cGU6IHN0YXJ0RGVidWdnaW5nKFthcHBfaWRdKVxuVG8gc3RvcCBkZWJ1Z2dpbmcsIHR5cGU6IHN0b3BEZWJ1Z2dpbmcoW2FwcF9pZF0pXG5cblthcHBfaWRdIGlzIGVxdWFsIHRvIHRoZSBpZCBvZiB0aGUgZWxlbWVudCB0aGF0IHRoZSBpbmNyLWRvbSBhcHAgaXMgYm91bmQgdG8uIElmIHRoZSBwYWdlIG9ubHkgaGFzIG9uZSBhcHAgb3IgeW91IHdhbnQgdG8gYXBwbHkgdGhlIGFjdGlvbiB0byBhbGwgYXBwcywgeW91IGNhbiBwYXNzIGluIFtudWxsXSAob3IgZm9yIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMsIG9taXQgaXQgYWx0b2dldGhlcikufH0pO1xuICAgICAgbG9nIGFwcF9maWx0ZXJzKVxuICA7O1xuXG4gIGxldCBpbml0X2FwcCB+YXBwX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wID1cbiAgICBsZXQgYXBwX2luaXRfbWVzc2FnZSA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgIHt8QXZhaWxhYmxlIGxvZ2dpbmcgZmlsdGVycyBmb3IgXCIlc1wiOlxuJXN8fVxuICAgICAgICBhcHBfaWRcbiAgICAgICAgKFNldC50b19saXN0IGZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KVxuICAgIGluXG4gICAgaWYgbm90ICFnbG9iYWxfaXNfaW5pdGlhbGl6ZWRcbiAgICB0aGVuIChcbiAgICAgIGluaXRfZ2xvYmFsIH5hcHBfZmlsdGVyczphcHBfaW5pdF9tZXNzYWdlICgpO1xuICAgICAgZ2xvYmFsX2lzX2luaXRpYWxpemVkIDo9IHRydWUpXG4gICAgZWxzZSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIGFwcF9pbml0X21lc3NhZ2UpO1xuICAgIGxldCBsb2dnaW5nX2ZpbHRlciA9IHJlZiBMb2dnaW5nX2ZpbHRlci5Ob25lIGluXG4gICAgbGV0IHNob3VsZF9wcm9maWxlID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNob3VsZF9kZWJ1ZyA9IHJlZiBkZWJ1ZyBpblxuICAgIEhhc2h0Ymwuc2V0XG4gICAgICBhcHBfc3RhdGVzXG4gICAgICB+a2V5OmFwcF9pZFxuICAgICAgfmRhdGE6eyBmaWx0ZXJfbmFtZXM7IGxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH07XG4gICAgdXBvbiBzdG9wIChmdW4gKCkgLT4gSGFzaHRibC5yZW1vdmUgYXBwX3N0YXRlcyBhcHBfaWQpO1xuICAgIHsgbG9nZ2luZ19maWx0ZXIgPSAoZnVuICgpIC0+ICFsb2dnaW5nX2ZpbHRlcilcbiAgICA7IHNob3VsZF9wcm9maWxlID0gKGZ1biAoKSAtPiAhc2hvdWxkX3Byb2ZpbGUpXG4gICAgOyBzaG91bGRfZGVidWcgPSAoZnVuICgpIC0+ICFzaG91bGRfZGVidWcpXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEFkZHMgdGhlIG5lY2Vzc2FyeSBhdHRyaWJ1dGUgdG8gdGhlIHJvb3Qgbm9kZSBzbyB0aGF0IGl0IGNhbiBpbnRlcmNlcHRcbiAgIGtleWJvYXJkIGV2ZW50cy5cbiAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdGFiaW5kZXggKilcbmxldCBvdmVycmlkZV9yb290X2VsZW1lbnQgcm9vdCA9XG4gIGxldCBvcGVuIFZkb20gaW5cbiAgbGV0IHNob3VsZF9hZGRfZm9jdXNfbW9kaWZpZXJzIGVsZW1lbnQgPVxuICAgIGVsZW1lbnQgfD4gTm9kZS5FbGVtZW50LmF0dHJzIHw+IEF0dHIuRXhwZXJ0LmNvbnRhaW5zX25hbWUgXCJkaXNhYmxlX3RhYl9pbmRleFwiIHw+IG5vdFxuICBpblxuICBtYXRjaCAocm9vdCA6IE5vZGUudCkgd2l0aFxuICB8IEVsZW1lbnQgZWxlbWVudCB3aGVuIHNob3VsZF9hZGRfZm9jdXNfbW9kaWZpZXJzIGVsZW1lbnQgLT5cbiAgICBsZXQgYWRkX25ld19hdHRycyBhdHRycyA9XG4gICAgICBWZG9tLkF0dHIuKHN0eWxlIChDc3NfZ2VuLm91dGxpbmUgfnN0eWxlOmBOb25lICgpKSBAIHRhYmluZGV4IDAgQCBhdHRycylcbiAgICBpblxuICAgIGVsZW1lbnQgfD4gTm9kZS5FbGVtZW50Lm1hcF9hdHRycyB+ZjphZGRfbmV3X2F0dHJzIHw+IE5vZGUuRWxlbWVudFxuICB8IF8gLT4gcm9vdFxuOztcblxubGV0IHJlYyBnZXRfdGFnX25hbWUgKG5vZGUgOiBWZG9tLk5vZGUudCkgPVxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBFbGVtZW50IGUgLT4gU29tZSAoVmRvbS5Ob2RlLkVsZW1lbnQudGFnIGUpXG4gIHwgTGF6eSB7IHQ7IF8gfSAtPiBnZXRfdGFnX25hbWUgKExhenkuZm9yY2UgdClcbiAgfCBOb25lIHwgVGV4dCBfIHwgV2lkZ2V0IF8gLT4gTm9uZVxuOztcblxubGV0IHN0YXJ0X2JvbnNhaVxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5Qcml2YXRlLlNfZm9yX2JvbnNhaVxuICAgICAgICB3aXRoIHR5cGUgTW9kZWwudCA9IG1vZGVsXG4gICAgICAgICBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICAoKiBUaGlzIGlzIGlkZW1wb3RlbnQgYW5kIHNvIGZpbmUgdG8gZG8uICopXG4gIEFzeW5jX2pzLmluaXQgKCk7XG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCViaW5kICgpID0gQXN5bmNfanMuZG9jdW1lbnRfbG9hZGVkICgpIGluXG4gICAgIGxldCBtb2RlbF92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfdiBpblxuICAgICBsZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiA9IEluY3IuVmFyLmNyZWF0ZSBpbml0aWFsX21vZGVsIGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSA9IEluY3IuVmFyLndhdGNoIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgaW5cbiAgICAgbGV0IGN1dG9mZiA9XG4gICAgICAgSW5jci5DdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+XG4gICAgICAgICBBcHAuTW9kZWwuY3V0b2ZmIG9sZF92YWx1ZSBuZXdfdmFsdWUpXG4gICAgIGluXG4gICAgIEluY3Iuc2V0X2N1dG9mZiBtb2RlbCBjdXRvZmY7XG4gICAgIEluY3Iuc2V0X2N1dG9mZiBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSBjdXRvZmY7XG4gICAgIGxldCBhY3Rpb25fcXVldWUgPSBEZXF1ZS5jcmVhdGUgKCkgaW5cbiAgICAgbGV0IG1vZHVsZSBFdmVudCA9XG4gICAgICAgVmRvbS5FZmZlY3QuRGVmaW5lIChzdHJ1Y3RcbiAgICAgICAgIG1vZHVsZSBBY3Rpb24gPSBBcHAuQWN0aW9uXG5cbiAgICAgICAgIGxldCBoYW5kbGUgYWN0aW9uID0gRGVxdWUuZW5xdWV1ZV9iYWNrIGFjdGlvbl9xdWV1ZSBhY3Rpb25cbiAgICAgICBlbmQpXG4gICAgIGluXG4gICAgIGxldCB2aXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5jcmVhdGVfYXNfZGlydHkgKCkgaW5cbiAgICAgbGV0IHZpZXdwb3J0X2NoYW5nZWQgKCkgPSBWaXNpYmlsaXR5Lm1hcmtfZGlydHkgdmlzaWJpbGl0eSBpblxuICAgICAoKiBUaGlzIHJlZ2lzdGVycyB0aGUgW3ZpZXdwb3J0X2NoYW5nZWRdIGhhbmRsZXIgd2l0aCBWaXJ0dWFsX2RvbS4gSWYgZXZlbnQgaGFuZGxlcnNcbiAgICAgICAgdXNlIHRoZSBbVmRvbS5FZmZlY3QuVmlld3BvcnRfY2hhbmdlZF0gZXZlbnQsIHdlIGFyZSBub3RpZmllZC4gKilcbiAgICAgbGV0IG1vZHVsZSBfID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmVfdmlzaWJpbGl0eSAoc3RydWN0XG4gICAgICAgICBsZXQgaGFuZGxlID0gdmlld3BvcnRfY2hhbmdlZFxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IGdldF92aWV3LCBnZXRfYXBwbHlfYWN0aW9uLCBnZXRfdXBkYXRlX3Zpc2liaWxpdHksIGdldF9vbl9kaXNwbGF5ID1cbiAgICAgICBsZXQgb2JzID1cbiAgICAgICAgIEluY3Iub2JzZXJ2ZVxuICAgICAgICAgICAoQXBwLmNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsOm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IH5pbmplY3Q6RXZlbnQuaW5qZWN0KVxuICAgICAgIGluXG4gICAgICAgbGV0IGZldGNoIChmIDogXyBBcHBfaW50Zi5Qcml2YXRlLnNuYXBzaG90IC0+IF8pICgpID1cbiAgICAgICAgIGYgKEluY3IuT2JzZXJ2ZXIudmFsdWVfZXhuIG9icylcbiAgICAgICBpblxuICAgICAgICggZmV0Y2ggKGZ1biB7IHZpZXc7IF8gfSAtPiB2aWV3KVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IGFwcGx5X2FjdGlvbjsgXyB9IC0+IGFwcGx5X2FjdGlvbilcbiAgICAgICAsIGZldGNoIChmdW4geyB1cGRhdGVfdmlzaWJpbGl0eTsgXyB9IC0+IHVwZGF0ZV92aXNpYmlsaXR5KVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IG9uX2Rpc3BsYXk7IF8gfSAtPiBvbl9kaXNwbGF5KSApXG4gICAgIGluXG4gICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICBsZXQgbmFtZWRfbG9nZ2luZ19maWx0ZXJzID1cbiAgICAgICAoXCJhbGxcIiwgRm4uY29uc3QgdHJ1ZSkgOjogKFwibm9uZVwiLCBGbi5jb25zdCBmYWxzZSkgOjogbmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgICAgfD4gU3RyaW5nLlRhYmxlLm9mX2FsaXN0X2V4blxuICAgICBpblxuICAgICBsZXQgeyBEZWJ1Z19mbGFncy5sb2dnaW5nX2ZpbHRlcjsgc2hvdWxkX3Byb2ZpbGU7IHNob3VsZF9kZWJ1ZyB9ID1cbiAgICAgICBsZXQgZmlsdGVyX25hbWVzID0gSGFzaHRibC5rZXlzIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyB8PiBTdHJpbmcuU2V0Lm9mX2xpc3QgaW5cbiAgICAgICBEZWJ1Z19mbGFncy5pbml0X2FwcCB+YXBwX2lkOmJpbmRfdG9fZWxlbWVudF93aXRoX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wXG4gICAgIGluXG4gICAgIGxldCBodG1sID0gZ2V0X3ZpZXcgKCkgaW5cbiAgICAgbGV0IGh0bWxfZG9tID0gVmRvbS5Ob2RlLnRvX2RvbSBodG1sIGluXG4gICAgIGxldCBlbGVtID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfZXhuIGJpbmRfdG9fZWxlbWVudF93aXRoX2lkIGluXG4gICAgIGxldCBwYXJlbnQgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV0gKEpzLk9wdC50b19vcHRpb24gZWxlbSMjLnBhcmVudE5vZGUpIGluXG4gICAgIERvbS5yZXBsYWNlQ2hpbGQgcGFyZW50IGh0bWxfZG9tIGVsZW07XG4gICAgICgqIHdlIG1ha2Ugc3VyZSB0byBjYWxsIFt2aWV3cG9ydF9jaGFuZ2VkXSB3aGVuZXZlciB0aGUgd2luZG93IHJlc2l6ZXMgb3IgdGhlIHNjcm9sbFxuICAgICAgICBjb250YWluZXIgaW4gd2hpY2ggb3VyIEhUTUwgaXMgbG9jYXRlZCBpcyBzY3JvbGxlZC4gKilcbiAgICAgbGV0IGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBldmVudF9uYW1lIHdoZXJlID1cbiAgICAgICBpZ25vcmVcbiAgICAgICAgIChEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgICAgd2hlcmVcbiAgICAgICAgICAgIChEb20uRXZlbnQubWFrZSBldmVudF9uYW1lKVxuICAgICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgdmlld3BvcnRfY2hhbmdlZCAoKTtcbiAgICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICAgICBpblxuICAgICBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgXCJzY3JvbGxcIiAoSnNfbWlzYy5nZXRfc2Nyb2xsX2NvbnRhaW5lciBodG1sX2RvbSk7XG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInJlc2l6ZVwiIERvbV9odG1sLndpbmRvdztcbiAgICAgbGV0JWJpbmQgc3RhdGUgPVxuICAgICAgIEFwcC5vbl9zdGFydHVwXG4gICAgICAgICB+c2NoZWR1bGVfYWN0aW9uOihmdW4gYSAtPiBVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZSAoRXZlbnQuaW5qZWN0IGEpKVxuICAgICAgICAgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpXG4gICAgIGluXG4gICAgIGxldCBwcmV2X2h0bWwgPSByZWYgaHRtbCBpblxuICAgICBsZXQgcHJldl9lbHQgPSByZWYgaHRtbF9kb20gaW5cbiAgICAgbGV0IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpID1cbiAgICAgICBsZXQgZWxlbWVudCA9ICFwcmV2X2VsdCBpblxuICAgICAgICgqIElmIHRoZSBlbGVtZW50IHRvIGZvY3VzIGlzIGFuIGVsZW1lbnQsIGNhc3QgaXQgaW50byB0aGVcbiAgICAgICAgICBtb3JlIHBlcm1pc3NpdmUgXCJmb2N1c2FibGVcIiB0eXBlIGRlZmluZWQgYXQgdGhlIHRvcCBvZlxuICAgICAgICAgIHRoaXMgZmlsZSwgYW5kIHRoZW4gZm9jdXMgdGhhdC4gKilcbiAgICAgICBEb21faHRtbC5Db2VyY2VUby5lbGVtZW50IGVsZW1lbnRcbiAgICAgICB8PiBKcy5PcHQudG9fb3B0aW9uXG4gICAgICAgfD4gT3B0aW9uLm1hcCB+Zjphc19mb2N1c2FibGVcbiAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIGVsZW1lbnQgLT5cbiAgICAgICAgIGVsZW1lbnQjI2ZvY3VzXG4gICAgICAgICAgIChvYmplY3QlanNcbiAgICAgICAgICAgICB2YWwgcHJldmVudFNjcm9sbCA9IEpzLl90cnVlXG4gICAgICAgICAgIGVuZCkpXG4gICAgIGluXG4gICAgIGxldCB0aW1lcl9zdGFydCBzID1cbiAgICAgICB0aW1lcl9zdGFydCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgIGxldCB0aW1lcl9zdG9wIHMgPVxuICAgICAgIHRpbWVyX3N0b3AgcyB+ZGVidWc6KHNob3VsZF9kZWJ1ZyAoKSkgfnByb2ZpbGU6KHNob3VsZF9wcm9maWxlICgpKVxuICAgICBpblxuICAgICAoKlxuICAgICAgICBUYWtlIGFjdGlvbiBvbiBhbnkgYmx1ciBldmVudCwgcmVmb2N1c2luZyB0byB0aGUgcm9vdCBub2RlIGlmIHRoZSByZWxhdGVkVGFyZ2V0IGlzXG4gICAgICAgIG51bGwgb3IgdW5kZWZpbmVkLCBzaWduaWZ5aW5nIHRoYXQgZm9jdXMgd2FzIGxvc3QgYW5kIHdvdWxkIG90aGVyd2lzZSBiZSByZXNldCB0b1xuICAgICAgICB0aGUgYm9keSBub2RlLlxuXG4gICAgICAgIFRoZSBKcy5fdHJ1ZSBwYXJhbWV0ZXIgcHJvdmlkZWQgdG8gRG9tLmFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHVzZUNhcHR1cmVcbiAgICAgICAgcGFyYW1ldGVyIGRlc2NyaWJlZCBoZXJlOlxuICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lclxuICAgICAqKVxuICAgICBpZ25vcmVcbiAgICAgQEAgRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICBEb21faHRtbC53aW5kb3dcbiAgICAgICAgICBEb21faHRtbC5FdmVudC5ibHVyXG4gICAgICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICAgKCogW0pzLlVuc2FmZS4qXSBpcyBsaWtlIFtPYmoubWFnaWNdLiBXZSBzaG91bGQgYmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZVxuICAgICAgICAgICAgICAgIGV4cGVjdC4gKilcbiAgICAgICAgICAgICBsZXQgZVxuICAgICAgICAgICAgICAgOiA8IHJlbGF0ZWRUYXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3AgPiBKcy50XG4gICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlIGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCByZWxhdGVkX3RhcmdldCA9IGUjIy5yZWxhdGVkVGFyZ2V0IGluXG4gICAgICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCByZWxhdGVkX3RhcmdldCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKTtcbiAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgSnMuX3RydWU7XG4gICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSAoKSA9XG4gICAgICAgVmlzaWJpbGl0eS5tYXJrX2NsZWFuIHZpc2liaWxpdHk7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X3VwZGF0ZV92aXNpYmlsaXR5ICgpKVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiXG4gICAgIGluXG4gICAgIGxldCBtYXliZV9sb2dfYWN0aW9uID1cbiAgICAgICBsZXQgc2FmZV9maWx0ZXIgfm5hbWUgZmlsdGVyIGFjdGlvbiA9XG4gICAgICAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGZpbHRlciBhY3Rpb24pIHdpdGhcbiAgICAgICAgIHwgT2sgc2hvdWxkX2xvZyAtPiBzaG91bGRfbG9nXG4gICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmYgIVwiRXhjZXB0aW9uIHJhaXNlZCBieSAlczogJXtFcnJvciNodW19XCIgbmFtZSBlcnI7XG4gICAgICAgICAgIGZhbHNlXG4gICAgICAgaW5cbiAgICAgICBsZXQgbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlID1cbiAgICAgICAgIENvcmUuTWVtby5vZl9jb21wYXJhYmxlXG4gICAgICAgICAgIChtb2R1bGUgTG9nZ2luZ19maWx0ZXIuU3RyaW5nX2JsYW5nKVxuICAgICAgICAgICAoZnVuIGJsYW5nIC0+XG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBIYXNodGJsLmZpbmRfZXhuIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyBpblxuICAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgIH5uYW1lOihzcHJpbnRmICFcIm5hbWVkIGZpbHRlciBibGFuZyBcXFwiJXtzZXhwOnN0cmluZyBCbGFuZy50fVxcXCJcIiBibGFuZylcbiAgICAgICAgICAgICAgICAobWF0Y2ggYmxhbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IEJhc2UgbmFtZSAtPiBmaWx0ZXIgbmFtZVxuICAgICAgICAgICAgICAgICB8IF8gLT4gZnVuIGFjdGlvbiAtPiBCbGFuZy5ldmFsIGJsYW5nIChmdW4gbmFtZSAtPiBmaWx0ZXIgbmFtZSBhY3Rpb24pKSlcbiAgICAgICBpblxuICAgICAgIGZ1biBhY3Rpb24gLT5cbiAgICAgICAgIGxldCBzaG91bGRfbG9nX2FjdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIGxvZ2dpbmdfZmlsdGVyICgpIHdpdGhcbiAgICAgICAgICAgfCBBbGwgLT4gdHJ1ZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcgLT4gbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIGJsYW5nIGFjdGlvblxuICAgICAgICAgICB8IEN1c3RvbV9maWx0ZXIgZmlsdGVyIC0+XG4gICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH5uYW1lOlwiY3VzdG9tIGZpbHRlclwiXG4gICAgICAgICAgICAgICAoZnVuIGFjdGlvbiAtPiBmaWx0ZXIgKEFwcC5BY3Rpb24uc2V4cF9vZl90IGFjdGlvbikpXG4gICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgIGluXG4gICAgICAgICBpZiBzaG91bGRfbG9nX2FjdGlvblxuICAgICAgICAgdGhlbiBBc3luY19qcy5sb2dfc19hc19zdHJpbmcgWyVtZXNzYWdlIFwiQWN0aW9uXCIgKGFjdGlvbiA6IEFwcC5BY3Rpb24udCldXG4gICAgIGluXG4gICAgIGxldCBhcHBseV9hY3Rpb24gYWN0aW9uID1cbiAgICAgICBtYXliZV9sb2dfYWN0aW9uIGFjdGlvbjtcbiAgICAgICBpZiBBcHAuYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gYWN0aW9uXG4gICAgICAgdGhlbiAoXG4gICAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCI7XG4gICAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiKVxuICAgICAgIGVsc2UgaWYgc2hvdWxkX2RlYnVnICgpXG4gICAgICAgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCJhY3Rpb24gYXBwbGllZCB3aXRob3V0IHN0YWJpbGl6aW5nXCIpO1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF9hcHBseV9hY3Rpb24gKCkpXG4gICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgICAgIGFjdGlvblxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsXG4gICAgIGluXG4gICAgIGxldCByZWMgYXBwbHlfYWN0aW9ucyAoKSA9XG4gICAgICAgbWF0Y2ggRGVxdWUuZGVxdWV1ZV9mcm9udCBhY3Rpb25fcXVldWUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBhY3Rpb24gLT5cbiAgICAgICAgIGFwcGx5X2FjdGlvbiBhY3Rpb247XG4gICAgICAgICBhcHBseV9hY3Rpb25zICgpXG4gICAgIGluXG4gICAgIGxldCBwZXJmb3JtX3VwZGF0ZSAoKSA9XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICAoKiBUaGUgY2xvY2sgaXMgc2V0IG9ubHkgb25jZSBwZXIgY2FsbCB0byBwZXJmb3JtX3VwZGF0ZSwgc28gdGhhdCBhbGwgYWN0aW9ucyB0aGF0XG4gICAgICAgICAgb2NjdXIgYmVmb3JlIGVhY2ggZGlzcGxheSB1cGRhdGUgb2NjdXIgXCJhdCB0aGUgc2FtZSB0aW1lLlwiICopXG4gICAgICAgbGV0IG5vdyA9XG4gICAgICAgICBsZXQgZGF0ZSA9IG5ldyVqcyBKcy5kYXRlX25vdyBpblxuICAgICAgICAgVGltZV9ucy5TcGFuLm9mX21zIGRhdGUjI2dldFRpbWUgfD4gVGltZV9ucy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgICAgaW5cbiAgICAgICBJbmNyLkNsb2NrLmFkdmFuY2VfY2xvY2sgSW5jci5jbG9jayB+dG9fOm5vdztcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ0b3RhbFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICBpZiBWaXNpYmlsaXR5LmlzX2RpcnR5IHZpc2liaWxpdHkgdGhlbiB1cGRhdGVfdmlzaWJpbGl0eSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICBhcHBseV9hY3Rpb25zICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICAgIGxldCBodG1sID0gb3ZlcnJpZGVfcm9vdF9lbGVtZW50IGh0bWwgaW5cbiAgICAgICB0aW1lcl9zdGFydCBcImRpZmZcIjtcbiAgICAgICBsZXQgcGF0Y2ggPSBWZG9tLk5vZGUuUGF0Y2guY3JlYXRlIH5wcmV2aW91czohcHJldl9odG1sIH5jdXJyZW50Omh0bWwgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwiZGlmZlwiO1xuICAgICAgIGlmIG5vdCAoVmRvbS5Ob2RlLlBhdGNoLmlzX2VtcHR5IHBhdGNoKSB0aGVuIFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5O1xuICAgICAgIHRpbWVyX3N0YXJ0IFwicGF0Y2hcIjtcbiAgICAgICBsZXQgZWx0ID0gVmRvbS5Ob2RlLlBhdGNoLmFwcGx5IHBhdGNoICFwcmV2X2VsdCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJwYXRjaFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwib25fZGlzcGxheVwiO1xuICAgICAgIChnZXRfb25fZGlzcGxheSAoKSkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlO1xuICAgICAgIHRpbWVyX3N0b3AgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpO1xuICAgICAgIGxldCBvbGRfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgIXByZXZfaHRtbCBpblxuICAgICAgIGxldCBuZXdfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgaHRtbCBpblxuICAgICAgIGxldCB0YWdzX3RoZV9zYW1lID0gT3B0aW9uLmVxdWFsIFN0cmluZy5lcXVhbCBvbGRfdGFnX25hbWUgbmV3X3RhZ19uYW1lIGluXG4gICAgICAgcHJldl9odG1sIDo9IGh0bWw7XG4gICAgICAgcHJldl9lbHQgOj0gZWx0O1xuICAgICAgIHRpbWVyX3N0b3AgXCJ0b3RhbFwiO1xuICAgICAgIGlmIHNob3VsZF9kZWJ1ZyAoKSB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcIi0tLS0tLS1cIik7XG4gICAgICAgKCogQ2hhbmdpbmcgdGhlIHRhZyBuYW1lIGNhdXNlcyBmb2N1cyB0byBiZSBsb3N0LiAgUmVmb2N1cyBpbiB0aGF0IGNhc2UuICopXG4gICAgICAgaWYgbm90IHRhZ3NfdGhlX3NhbWUgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICBpblxuICAgICAoKiBXZSB1c2UgW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBzbyB0aGF0IGJyb3dzZXIgdGVsbHMgdXMgd2hlcmUgaXQncyB0aW1lIHRvXG4gICAgICAgIHJlZnJlc2ggdGhlIFVJLiBBbGwgdGhlIGFjdGlvbnMgd2lsbCBiZSBwcm9jZXNzZWQgYW5kIHRoZSBjaGFuZ2VzIHByb3BhZ2F0ZWRcbiAgICAgICAgdG8gdGhlIERPTSBpbiBvbmUgZnJhbWUuICopXG4gICAgIGxldCByZWMgY2FsbGJhY2sgKCkgPVxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgICAgIHRoZW4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2spXG4gICAgIGluXG4gICAgICgqIFdlIHdhbnQgdGhlIHJvb3QgZWxlbWVudCB0byBzdGFydCBvdXQgZm9jdXNlZCwgc28gcGVyZm9ybSBhbiBpbml0aWFsXG4gICAgICAgIHVwZGF0ZS9yZW5kZXIsIHRoZW4gaW1tZWRpYXRlbHkgZm9jdXMgdGhlIHJvb3QgKHVubGVzcyBhIG5vbi1ib2R5IGVsZW1lbnQgYWxyZWFkeVxuICAgICAgICBoYXMgZm9jdXMpLiAgVGhpcyBmb2N1c2luZyBjYW4ndCBoYXBwZW4gaW5zaWRlIG9mIHRoZSBgY2FsbGJhY2tgIGJlY2F1c2UgdGhlbiBpdFxuICAgICAgICB3b3VsZCByZWZvY3VzIHJvb3QgZXZlcnkgZnJhbWUuICAqKVxuICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgKG1hdGNoIEpzLk9wdC50b19vcHRpb24gRG9tX2h0bWwuZG9jdW1lbnQjIy5hY3RpdmVFbGVtZW50IHdpdGhcbiAgICAgIHwgU29tZSBlbCAtPiBpZiBKcy5PcHQudGVzdCAoRG9tX2h0bWwuQ29lcmNlVG8uYm9keSBlbCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICAgfCBOb25lIC0+IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpKTtcbiAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2s7XG4gICAgIERlZmVycmVkLm5ldmVyICgpKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN0YXJ0X2JvbnNhaSA9IHN0YXJ0X2JvbnNhaVxuZW5kXG5cbmxldCBzdGFydFxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5TIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWwgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgc3RhcnRfYm9uc2FpXG4gICAgfmRlYnVnXG4gICAgfnN0b3BcbiAgICB+bmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgfmluaXRpYWxfbW9kZWxcbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgaW5jbHVkZSBBcHBcblxuICAgICAgbGV0IGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIF8gPSB0cnVlXG5cbiAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0ID1cbiAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgIGxldCVtYXAgY29tcG9uZW50ID0gY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCBpblxuICAgICAgICBsZXQgdmlldyA9IENvbXBvbmVudC52aWV3IGNvbXBvbmVudCBpblxuICAgICAgICBsZXQgYXBwbHlfYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9ldmVudCBfbW9kZWwgYWN0aW9uID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LmFwcGx5X2FjdGlvbiBjb21wb25lbnQgYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5IF9tb2RlbCB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQudXBkYXRlX3Zpc2liaWxpdHkgY29tcG9uZW50IH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9uX2Rpc3BsYXkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50Lm9uX2Rpc3BsYXkgY29tcG9uZW50IHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgeyBBcHBfaW50Zi5Qcml2YXRlLnZpZXc7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXkgfVxuICAgICAgOztcbiAgICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tLlZkb21cbmluY2x1ZGUgVmRvbV9pbnB1dF93aWRnZXRzX2ludGZcblxubW9kdWxlIE1lcmdlX2JlaGF2aW9yID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBNZXJnZVxuICAgIHwgTGVnYWN5X2RvbnRfbWVyZ2VcbmVuZFxuXG5tb2R1bGUgRGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgdClcbiAgICB0aGVuIGZhaWx3aXRoZiBcIkNhbm5vdCByZXByZXNlbnQgbm9uLWZpbml0ZSBmbG9hdCBhcyBkZWNpbWFsOiAlZlwiIHQgKClcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCB0ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBzcHJpbnRmIFwiJS4xMmdcIiB0XG4gIDs7XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgSW5pdGlhbFxuICAgICgqIFRoaXMgaXMgdXNlZCB0byBhdm9pZCBtYXJraW5nIGFzIGludmFsaWQgYSBmaWVsZCB0aGF0IGhhc24ndCBldmVyIGJlZW5cbiAgICAgICB0b3VjaGVkIGJ5IHRoZSB1c2VyLCB0byBpbXByb3ZlIFVYLiAqKVxuICAgIHwgVmFsaWQgb2ZcbiAgICAgICAgeyBpbnB1dCA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICB8IEludmFsaWQgb2ZcbiAgICAgICAgeyBpbnB1dCA6IHN0cmluZ1xuICAgICAgICA7IGxhc3RfdmFsaWQgOiAnYSBvcHRpb25cbiAgICAgICAgOyBlcnJvciA6IHN0cmluZ1xuICAgICAgICB9XG4gIFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgdHlwZSAnYSB1cGRhdGUgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IGxpZnQgKHR5cGUgYSkgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gYSB0XG5cbiAgICAgIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IEluaXRpYWwgLT4gXCJcIlxuICAgICAgICB8IEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IF87IGVycm9yID0gXyB9IC0+IGlucHV0XG4gICAgICAgIHwgVmFsaWQgeyBpbnB1dDsgdmFsdWUgfSAtPlxuICAgICAgICAgIChtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgICAgIHwgU29tZSBpbnB1dCAtPiBpbnB1dFxuICAgICAgICAgICB8IE5vbmUgLT4gTS50b19zdHJpbmcgdmFsdWUpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgVmFsaWQgeyBpbnB1dCA9IFNvbWUgczsgdmFsdWUgPSBNLm9mX3N0cmluZyBzIH0gd2l0aFxuICAgICAgICB8IGV4biAtPiBJbnZhbGlkIHsgaW5wdXQgPSBzOyBsYXN0X3ZhbGlkID0gTm9uZTsgZXJyb3IgPSBFeG4udG9fc3RyaW5nIGV4biB9XG4gICAgICA7O1xuICAgIGVuZCA6IFN0cmluZ2FibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgPSBhIHQpXG4gIDs7XG5cbiAgbGV0IGluaXRpYWxfZW1wdHkgPSBJbml0aWFsXG4gIGxldCByZXR1cm4gdmFsdWUgPSBWYWxpZCB7IGlucHV0ID0gTm9uZTsgdmFsdWUgfVxuXG4gIGxldCBnZXRfY3VycmVudCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIF8gfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2xhc3QgPSBmdW5jdGlvblxuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlIH0gLT4gU29tZSB2YWx1ZVxuICAgIHwgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZDsgZXJyb3IgPSBfIH0gLT4gbGFzdF92YWxpZFxuICAgIHwgSW5pdGlhbCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIHwgVmFsaWQgXyAtPiBOb25lXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgfSAtPiBTb21lIGVycm9yXG4gIDs7XG5cbiAgbGV0IGlzX2ludmFsaWQgPSBmdW5jdGlvblxuICAgIHwgSW52YWxpZCBfIC0+IHRydWVcbiAgICB8IFZhbGlkIF8gfCBJbml0aWFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2luaXRpYWxfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgSW5pdGlhbCAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSBvbGQgbmV3XyA9XG4gICAgbWF0Y2ggb2xkLCBuZXdfIHdpdGhcbiAgICB8IEluaXRpYWwsIF8gLT4gbmV3X1xuICAgIHwgXywgVmFsaWQgXyAtPiBuZXdfXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgPSBvbGQgfSwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgfSAtPlxuICAgICAgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gU29tZSBvbGQ7IGVycm9yIH1cbiAgICB8ICggSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZDsgZXJyb3IgPSBfIH1cbiAgICAgICwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gTm9uZTsgZXJyb3IgfSApIC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQ7IGVycm9yIH1cbiAgICB8IEludmFsaWQgXywgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZCA9IFNvbWUgXzsgZXJyb3IgPSBfIH0gLT4gbmV3X1xuICAgIHwgXywgSW5pdGlhbCAtPiBvbGRcbiAgOztcbmVuZFxuXG5sZXQgbWF5YmVfaW52YWxpZCB2YWxpZGF0ZWQgYXR0cnMgPVxuICBpZiBWYWxpZGF0ZWQuaXNfaW52YWxpZCB2YWxpZGF0ZWRcbiAgdGhlbiBBdHRyLmNyZWF0ZSBcImFyaWEtaW52YWxpZFwiIFwidHJ1ZVwiIDo6IGF0dHJzXG4gIGVsc2UgYXR0cnNcbjs7XG5cbm1vZHVsZSBUaW1lX2NvbXBhdCA9IHN0cnVjdFxuICBtb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUaW1lX25zLk9mZGF5LnRcblxuICAgIGxldCBvZl9zdHJpbmcgPSBUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ1xuXG4gICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0cyBhIEhIOm1tIGZvcm1hdCB3aXRoIG9wdGlvbmFsIHRyYWlsaW5nIFwiOnNzXCIgb3IgXCI6c3MuU1NTXCI7XG4gICAgICAgW1RpbWVfbnMuT2ZkYXkudG9fc3RyaW5nXSBwcm92aWRlcyBwcmVjaXNpb24gaW4gbmFub3NlY29uZHMsIHdoaWNoIGlzIHRvbyBtdWNoLiAqKVxuICAgIGxldCB0b19zdHJpbmcgPSBUaW1lX25zLk9mZGF5LnRvX21pbGxpc2Vjb25kX3N0cmluZ1xuICBlbmRcblxuICBsZXQgem9uZWQgem9uZSA6IChtb2R1bGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gVGltZV9ucy50KSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFRpbWVfbnMudFxuXG4gICAgICAoKiBGb3JtYXQgZnJvbSB0aGUgYnJvd3NlcjogeXl5eS1NTS1kZFRoaDptbSAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbGV0IHBhcnRzID0gU3RyaW5nLnNwbGl0X29uX2NoYXJzIHMgfm9uOlsgJ1QnOyAnOicgXSBpblxuICAgICAgICBsZXQgZGF0ZSA9IExpc3QubnRoX2V4biBwYXJ0cyAwIHw+IERhdGUub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBociA9IExpc3QubnRoX2V4biBwYXJ0cyAxIHw+IEludC5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IG1pbiA9IExpc3QubnRoX2V4biBwYXJ0cyAyIHw+IEludC5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gVGltZV9ucy5PZmRheS5jcmVhdGUgfmhyIH5taW4gKCkgaW5cbiAgICAgICAgVGltZV9ucy5vZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBzID0gVGltZV9ucy50b19zdHJpbmdfaXNvODYwMV9iYXNpYyB+em9uZSB0IGluXG4gICAgICAgICgqIFRoZSBicm93c2VyIGV4cGVjdCBhIHl5eXktTU0tZGRUaGg6bW0gZm9ybWF0IGFuZCBpdCBhbGxvd3NcbiAgICAgICAgICAgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIi5cblxuICAgICAgICAgICB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyBmb3JtYXQ6IDIwMTktMDEtMzBUMDE6MDA6MDAuMDAwMDAwMDAwKzAxOjAwXG5cbiAgICAgICAgICAgZGVzaXJlZCBmb3JtYXQgYWZ0ZXIgY3V0dGluZzogICAyMDE5LTAxLTMwVDAxOjAwOjAwXG4gICAgICAgICopXG4gICAgICAgIFN0cmluZy5sc3BsaXQyX2V4biB+b246Jy4nIHMgfD4gVHVwbGUyLmdldDFcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQgYXR0cnMgPSBpZiBkaXNhYmxlZCB0aGVuIEF0dHIuZGlzYWJsZWQgOjogYXR0cnMgZWxzZSBhdHRyc1xubGV0IGFkZF9hdHRycyBhdHRycycgYXR0cnMgPSBhdHRycyBAIGF0dHJzJyB8PiBBdHRycy5tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNcblxubGV0IG1lcmdlID0gZnVuY3Rpb25cbiAgfCBNZXJnZV9iZWhhdmlvci5NZXJnZSAtPiBBdHRyLm1hbnlcbiAgfCBMZWdhY3lfZG9udF9tZXJnZSAtPiBBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuOztcblxubGV0IHN0cnVjdHVyYWxfbGlzdFxuICAgICAgPyhvcmllbnRhdGlvbiA9IGBWZXJ0aWNhbClcbiAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgIGF0dHJzXG4gICAgICBjaGlsZHJlblxuICA9XG4gIGxldCBsYXlvdXRfc3R5bGUgPVxuICAgIG1hdGNoIG9yaWVudGF0aW9uIHdpdGhcbiAgICB8IGBWZXJ0aWNhbCAtPiBDc3NfZ2VuLihkaXNwbGF5IGBCbG9jaylcbiAgICB8IGBIb3Jpem9udGFsIC0+IENzc19nZW4uKGRpc3BsYXkgYElubGluZV9ibG9jaylcbiAgaW5cbiAgTm9kZS51bFxuICAgIH5hdHRyczpcbiAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgIChbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgIENzc19nZW4uKGNyZWF0ZSB+ZmllbGQ6XCJsaXN0LXN0eWxlXCIgfnZhbHVlOlwibm9uZVwiIEA+IG1hcmdpbl9sZWZ0IChgUHggMCkpXG4gICAgICAgICAgIF1cbiAgICAgICAgICAgfD4gYWRkX2F0dHJzIGF0dHJzKVxuICAgICAgXVxuICAgIChMaXN0Lm1hcCBjaGlsZHJlbiB+ZjooZnVuIGNoaWxkIC0+XG4gICAgICAgTm9kZS5saSB+YXR0cnM6WyBBdHRyLnN0eWxlIGxheW91dF9zdHlsZSBdIFsgY2hpbGQgXSkpXG47O1xuXG5tb2R1bGUgVmFsdWVfbm9ybWFsaXppbmdfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlID0gSnNfb2Zfb2NhbWwuSnMuVW5zYWZlXG4gIG9wZW4gSnNfb2Zfb2NhbWxcbiAgb3BlbiBKc19vZl9vY2FtbC5Eb21faHRtbFxuXG4gIGxldCBpc19hY3RpdmUgZWxlbWVudCA9XG4gICAgbGV0IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50ID0gVW5zYWZlLmdldCBkb2N1bWVudCAoSnMuc3RyaW5nIFwiYWN0aXZlRWxlbWVudFwiKSBpblxuICAgIHBoeXNfZXF1YWwgZWxlbWVudCBkb2N1bWVudF9hY3RpdmVfZWxlbWVudFxuICA7O1xuXG4gIGxldCB2YWx1ZV9wcm9wZXJ0eSA9IEpzLnN0cmluZyBcInZhbHVlXCJcbiAgbGV0IGdldF92YWx1ZSBlbGVtZW50IDogJ2EgSnMudCA9IFVuc2FmZS5nZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eVxuICBsZXQgc2V0X3ZhbHVlIGVsZW1lbnQgdmFsdWUgPSBVbnNhZmUuc2V0IGVsZW1lbnQgdmFsdWVfcHJvcGVydHkgdmFsdWVcblxuICBsZXQgaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgPVxuICAgICgqIFRoaXMgZXZlbnQgaGFuZGxlciBub3JtYWxpemVzIHRoZSB2YWx1ZSBvbiB0aGUgaW5wdXQgZWxlbWVudCBvbiB0aGUgW2NoYW5nZV0gZXZlbnQuXG4gICAgICAgRm9yIGEgdGV4dCBlbnRyeSwgdGhpcyBtZWFucyB3aGVuIHRoZSB1c2VyIHByZXNzZXMgZW50ZXIsIGFuZCB3aGVuIHRoZSB1c2VyIGJsdXJzXG4gICAgICAgdGhlIGVsZW1lbnQuIFdoeSBkb24ndCB3ZSBzaW1wbHkgW3RvX3N0cmluZ10gdGhlIHZhbHVlIGluIHRoZSBtb2RlbD8gQmVjYXVzZSBmb3JcbiAgICAgICBzb21lIGlucHV0IGVsZW1lbnRzLCB5b3UgY2FuIGhhdmUgYSBjaGFuZ2UgZXZlbnQgdGhhdCBmaXJlcyBhZnRlciB0aGUgdmFsdWUgY2hhbmdlc1xuICAgICAgIGJ1dCBiZWZvcmUgW0luY3JfZG9tXSBjYW4gdXBkYXRlIHRoZSBtb2RlbC4gRm9yIGV4YW1wbGUsIHRoaXMgaGFwcGVucyB3aGVuIHlvdVxuICAgICAgIHByZXNzIHRoZSB1cCBhcnJvdyBvbiBhIG51bWJlciBpbnB1dC4gVGhpcyBsZWFkcyB0byBhIGJ1ZyB3aGVyZSB0aGUgdmFsdWUgaW4gdGhlXG4gICAgICAgbW9kZWwgc3dhcHMgYmFjayBhbmQgZm9ydGggd2l0aCB0aGUgdmFsdWUgaW4gdGhlIGVsZW1lbnQuICopXG4gICAgbGV0IGNoYW5nZV9oYW5kbGVyIF8gPVxuICAgICAgbGV0IHZhbHVlID0gSnMudG9fc3RyaW5nIChnZXRfdmFsdWUgZWxlbWVudCkgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChmIHZhbHVlKSB+ZjooZnVuIG5vcm1hbGl6ZWQgLT5cbiAgICAgICAgc2V0X3ZhbHVlIGVsZW1lbnQgKEpzLnN0cmluZyBub3JtYWxpemVkKSk7XG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG4gICAgbGV0IGNoYW5nZV9oYW5kbGVyID0gRG9tLmhhbmRsZXIgY2hhbmdlX2hhbmRsZXIgaW5cbiAgICBhZGRFdmVudExpc3RlbmVyIGVsZW1lbnQgRXZlbnQuY2hhbmdlIGNoYW5nZV9oYW5kbGVyIEpzLl9mYWxzZVxuICA7O1xuXG4gIG1vZHVsZSBNID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB7IG11dGFibGUgZXZlbnRfaWQgOiBldmVudF9saXN0ZW5lcl9pZCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgdmFsdWUgOiBzdHJpbmdcbiAgICAgICAgOyBmIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHsgdmFsdWU7IF8gfSA9IFNleHAuQXRvbSB2YWx1ZVxuICAgICAgbGV0IGNvbWJpbmUgX2xlZnQgcmlnaHQgPSByaWdodFxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgeyBJbnB1dC52YWx1ZTsgZiB9IGVsZW1lbnQgPVxuICAgICAgaWYgbm90IChpc19hY3RpdmUgZWxlbWVudCkgdGhlbiBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIHZhbHVlKTtcbiAgICAgIGxldCBldmVudF9pZCA9IGluc3RhbGxfZXZlbnRfaGFuZGxlciBlbGVtZW50IH5mIGluXG4gICAgICB7IFN0YXRlLmV2ZW50X2lkIH1cbiAgICA7O1xuXG4gICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuXG4gICAgbGV0IGRlc3Ryb3kgX2lucHV0IHsgU3RhdGUuZXZlbnRfaWQgfSBfZWxlbWVudCA9IHJlbW92ZUV2ZW50TGlzdGVuZXIgZXZlbnRfaWRcbiAgICBbQEBvY2FtbC53YXJuaW5nXG4gICAgICAgXCItNjhcIl1cbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgc3RhdGUgZWxlbWVudCA9XG4gICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgbGV0IHsgU3RhdGUuZXZlbnRfaWQgfSA9IGluaXQgbmV3X2lucHV0IGVsZW1lbnQgaW5cbiAgICAgIHN0YXRlLlN0YXRlLmV2ZW50X2lkIDwtIGV2ZW50X2lkXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBBdHRyLkhvb2tzLk1ha2UgKE0pXG5cbiAgKCogW2NyZWF0ZSB2YWx1ZSB+Zl0gd2lsbCBzZXQgdGhlIFwidmFsdWVcIiBwcm9wZXJ0eSB0byBbdmFsdWVdIGlmIHRoZSBlbGVtZW50IGlzIG5vdFxuICAgICBmb2N1c2VkIGFuZCBvbiBlYWNoIGNoYW5nZSwgcnVuIHRoZSBjdXJyZW50IHZhbHVlIHRocm91Z2ggW2ZdIHRvIHJlLXNldCBpdC4gQWdhaW4sXG4gICAgIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZSBlbGVtZW50IGlzIG5vdCBmb2N1c2VkLiBJZiBbZl0gcmV0dXJucyBbTm9uZV0sIG5vIGNoYW5nZVxuICAgICB0YWtlcyBwbGFjZS4gKilcbiAgbGV0IGNyZWF0ZSB2YWx1ZSB+ZiA9IEF0dHIuY3JlYXRlX2hvb2sgXCJ2YWx1ZTpub3JtYWxpemVkXCIgKGNyZWF0ZSB7IHZhbHVlOyBmIH0pXG5lbmRcblxubW9kdWxlIERyb3Bkb3duID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhleHRyYV9vcHRpb25fYXR0cnMgPSBGbi5jb25zdCBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH50b19zdHJpbmdcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBOb2RlLnNlbGVjdFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIuY2xhc3NfIFwid2lkZ2V0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gXyB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICBvbl9jaGFuZ2UgKEludC5vZl9zdHJpbmcgdmFsdWUgfD4gTGlzdC5udGhfZXhuIHZhbHVlcykpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKExpc3QubWFwaSB2YWx1ZXMgfmY6KGZ1biBpbmRleCB2YWx1ZSAtPlxuICAgICAgICAgTm9kZS5vcHRpb25cbiAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgIChbIEF0dHIudmFsdWUgKEludC50b19zdHJpbmcgaW5kZXgpXG4gICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiAoZXF1YWwgdmFsdWUgc2VsZWN0ZWQpXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgQCBleHRyYV9vcHRpb25fYXR0cnMgdmFsdWUpXG4gICAgICAgICAgIFsgTm9kZS50ZXh0ICh0b19zdHJpbmcgdmFsdWUpIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cblxuICBsZXQgb2ZfdmFsdWVzX29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgdmFsdWVzIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6cGxhY2Vob2xkZXIgfmY6TS50b19zdHJpbmcgaW5cbiAgICBsZXQgZXh0cmFfb3B0aW9uX2F0dHJzID1cbiAgICAgIE9wdGlvbi5tYXAgZXh0cmFfb3B0aW9uX2F0dHJzIH5mOihmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIHZhbHVlIC0+IGYgdmFsdWUpXG4gICAgaW5cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6WyVlcXVhbDogTS50IG9wdGlvbl1cbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICBNLmFsbFxuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1fb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgTS5hbGwgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpwbGFjZWhvbGRlciB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGxldCBleHRyYV9vcHRpb25fYXR0cnMgPVxuICAgICAgT3B0aW9uLm1hcCBleHRyYV9vcHRpb25fYXR0cnMgfmY6KGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgdmFsdWUgLT4gZiB2YWx1ZSlcbiAgICBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2VsZWN0YWJsZV9zdHlsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmF0aXZlXG4gICAgfCBCdXR0b25fbGlrZSBvZiB7IGV4dHJhX2F0dHJzIDogY2hlY2tlZDpib29sIC0+IEF0dHIudCBsaXN0IH1cblxuICBsZXQgYmFyZWJvbmVzX2J1dHRvbl9saWtlID1cbiAgICBCdXR0b25fbGlrZVxuICAgICAgeyBleHRyYV9hdHRycyA9XG4gICAgICAgICAgKGZ1biB+Y2hlY2tlZCAtPlxuICAgICAgICAgICAgIGlmIGNoZWNrZWRcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjNDA0MDQwXCIpXG4gICAgICAgICAgICAgICAgICAgICBAPiBjb2xvciAoYEhleCBcIiNGN0Y3RjdcIikpXG4gICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgWyBBdHRyLnN0eWxlXG4gICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICBib3JkZXIgfndpZHRoOihgUHggMSkgfmNvbG9yOihgSGV4IFwiI0QwRDBEMFwiKSB+c3R5bGU6YFNvbGlkICgpXG4gICAgICAgICAgICAgICAgICAgICBAPiBiYWNrZ3JvdW5kX2NvbG9yIChgSGV4IFwiI0VGRUZFRlwiKSlcbiAgICAgICAgICAgICAgIF0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGhpZGVfbmF0aXZlX2lucHV0cyA9XG4gICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImFwcGVhcmFuY2VcIiB+dmFsdWU6XCJub25lXCIgQD4gdW5pZm9ybV9tYXJnaW4gKGBQeCAwKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2hlY2tib3ggPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5sYWJlbFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5sYWJlbFxuICAgICAgfmF0dHJzOlsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKSBleHRyYV9hdHRycyBdXG4gICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl90b2dnbGUpXG4gICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgaXNfY2hlY2tlZFxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgKClcbiAgICAgIDsgTm9kZS50ZXh0IGxhYmVsXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfmxhYmVsXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5kaXZcbiAgICAgIH5hdHRyczpbIEF0dHIuY2xhc3NfIFwiY2hlY2tib3gtY29udGFpbmVyXCIgXVxuICAgICAgWyBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgfmlzX2NoZWNrZWQgfmxhYmVsIH5vbl90b2dnbGUgfm1lcmdlX2JlaGF2aW9yICgpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2hlY2tsaXN0ID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oc3R5bGUgPSBTZWxlY3RhYmxlX3N0eWxlLk5hdGl2ZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9sYXlvdXRcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICA9XG4gICAgbGV0IGlucHV0X2F0dHJzLCBsYWJlbF9hdHRycyA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5hdGl2ZSAtPiBbXSwgZnVuIH5jaGVja2VkOl8gLT4gW11cbiAgICAgIHwgQnV0dG9uX2xpa2UgeyBleHRyYV9hdHRycyB9IC0+XG4gICAgICAgIFsgQXR0ci5zdHlsZSBTZWxlY3RhYmxlX3N0eWxlLmhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgID9vcmllbnRhdGlvbjpsYXlvdXRcbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LWNoZWNrbGlzdFwiOyBcImNoZWNrYm94LWNvbnRhaW5lclwiIF0gXVxuICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgIChMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biBpdGVtIC0+XG4gICAgICAgICBOb2RlLmxhYmVsXG4gICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgICAgICAgKGV4dHJhX2F0dHJzIEAgbGFiZWxfYXR0cnMgfmNoZWNrZWQ6KGlzX2NoZWNrZWQgaXRlbSkpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl90b2dnbGUgaXRlbSlcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIChpc19jaGVja2VkIGl0ZW0pXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICA7IE5vZGUudGV4dCAodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP3N0eWxlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP2xheW91dFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IERpc3BsYXkgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/c3R5bGVcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/bGF5b3V0XG4gICAgICB2YWx1ZXNcbiAgICAgIH5pc19jaGVja2VkXG4gICAgICB+b25fdG9nZ2xlXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/c3R5bGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9zdHlsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+aXNfY2hlY2tlZFxuICAgICAgfm9uX3RvZ2dsZVxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpX3NlbGVjdCA9IHN0cnVjdFxuICBtb2R1bGUgUmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb19hY3Rpb25cbiAgICAgIHwgQ2xlYXJfYWxsXG4gICAgICB8IFNlbGVjdF9hbGxcbiAgZW5kXG5cbiAgbGV0IGltcGxcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID8ocmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IgPSBSZXBlYXRlZF9jbGlja19iZWhhdmlvci5Ob19hY3Rpb24pXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/c2l6ZVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgID1cbiAgICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICAgIGxldCBzaXplID0gT3B0aW9uLnZhbHVlIHNpemUgfmRlZmF1bHQ6KExpc3QubGVuZ3RoIHZhbHVlcykgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgOyBBdHRyLmNyZWF0ZSBcInNpemVcIiAoSW50LnRvX3N0cmluZyBzaXplKVxuICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIGV2dCAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5iaW5kIGV2dCMjLnRhcmdldCBEb21faHRtbC5Db2VyY2VUby5zZWxlY3QpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgdGFyZ2V0IC0+IHRhcmdldFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgXCJNdWx0aV9zZWxlY3QgW29uX2NoYW5nZV0gZXZlbnQgZmlyZWQgd2l0aCBhIG1pc3NpbmcgdGFyZ2V0IG9yIHRhcmdldCBcXFxuICAgICAgICAgICAgICAgICB0aGF0IHdhcyBub3QgYSBzZWxlY3QgZWxlbWVudC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNvbGxlY3Rpb25fdG9fbGlzdCBjb2xsZWN0aW9uID1cbiAgICAgICAgICAgIExpc3QuaW5pdCBjb2xsZWN0aW9uIyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuZ2V0IChjb2xsZWN0aW9uIyNpdGVtIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcHRpb25zID0gY29sbGVjdGlvbl90b19saXN0IHRhcmdldCMjLm9wdGlvbnMgaW5cbiAgICAgICAgICBsZXQgc2VsZWN0ZWRfdmFsdWVzID1cbiAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC56aXBfZXhuIHZhbHVlcyBvcHRpb25zKSB+ZjooZnVuICh2YWx1ZSwgb3B0aW9uKSAtPlxuICAgICAgICAgICAgICBPcHRpb24uc29tZV9pZiAoSnMudG9fYm9vbCBvcHRpb24jIy5zZWxlY3RlZCkgdmFsdWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgc2VsZWN0ZWRfdmFsdWVzKSlcbiAgICAgIF1cbiAgICAgIEAgZXh0cmFfYXR0cnNcbiAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgIGluXG4gICAgbGV0IG9wdGlvbnMgPVxuICAgICAgTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgICAgbGV0IGlzX3NlbGVjdGVkID0gU2V0Lm1lbSBzZWxlY3RlZCB2YWx1ZSBpblxuICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICgqIFtBdHRyLmJvb2xfcHJvcGVydHldIGtlZXBzIHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW9uIGluIHN5bmMgYnkgc2V0dGluZyB0aGUgSlNcbiAgICAgICAgICAgICBwcm9wZXJ0eS4gW0F0dHIuc2VsZWN0ZWRdIG1vZGlmaWVzIHRoZSBET00gYXR0cmlidXRlIHNvIHRoYXQgc2VsZWN0ZWQgb3B0aW9uc1xuICAgICAgICAgICAgIGNhbiBiZSBzdHlsZWQgd2l0aCBDU1MuIFtBdHRyLnNlbGVjdGVkXSBhbG9uZSBkb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICAgICAgICAgcHJvcGVybHkgaWYgdGhlIG1vZGVsIGNoYW5nZXMsIHNvIGJvdGggYXJlIG5lZWRlZC4gKilcbiAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAoWyBTb21lIChBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIGlzX3NlbGVjdGVkKVxuICAgICAgICAgICAgIDsgU29tZVxuICAgICAgICAgICAgICAgICAoQXR0ci5vbl9jbGljayAoZnVuIGV2dCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgd2FzX3JlcGVhdGVkX2NsaWNrID1cbiAgICAgICAgICAgICAgICAgICAgICAobm90IChKcy50b19ib29sIGV2dCMjLmN0cmxLZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICYmIFNldC5lcXVhbCBzZWxlY3RlZCAoU2V0LnNpbmdsZXRvbiAobW9kdWxlIE0pIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB3YXNfcmVwZWF0ZWRfY2xpY2ssIHJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBmYWxzZSwgXyB8IHRydWUsIE5vX2FjdGlvbiAtPiBFZmZlY3QuSWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHwgdHJ1ZSwgQ2xlYXJfYWxsIC0+IG9uX2NoYW5nZSAoU2V0LmVtcHR5IChtb2R1bGUgTSkpXG4gICAgICAgICAgICAgICAgICAgIHwgdHJ1ZSwgU2VsZWN0X2FsbCAtPiBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgdmFsdWVzKSkpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyX29wdClcbiAgICAgICAgICBbIE5vZGUudGV4dCAoTS50b19zdHJpbmcgdmFsdWUpIF0pXG4gICAgaW5cbiAgICBOb2RlLnNlbGVjdCB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIGF0dHJzIF0gb3B0aW9uc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5MZWdhY3lfZG9udF9tZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c2l6ZVxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgdmFsdWVzXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c2l6ZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW1fc2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICBNLmFsbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENhbGxfb25faW5wdXRfd2hlbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFRleHRfY2hhbmdlZFxuICAgICAgfCBFbnRlcl9rZXlfcHJlc3NlZF9vcl9mb2N1c19sb3N0XG5cbiAgICBsZXQgbGlzdGVuZXIgPSBmdW5jdGlvblxuICAgICAgfCBUZXh0X2NoYW5nZWQgLT4gQXR0ci5vbl9pbnB1dFxuICAgICAgfCBFbnRlcl9rZXlfcHJlc3NlZF9vcl9mb2N1c19sb3N0IC0+IEF0dHIub25fY2hhbmdlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG5vcm1hbGl6ZSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMpIHMgPVxuICAgIG1hdGNoIE0udG9fc3RyaW5nIChNLm9mX3N0cmluZyBzKSB3aXRoXG4gICAgfCBleGNlcHRpb24gXyAtPiBTb21lIFwiXCJcbiAgICB8IHYgLT4gU29tZSB2XG4gIDs7XG5cbiAgbGV0IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm4gYXR0cnMgPVxuICAgIG1hdGNoIG9uX3JldHVybiB3aXRoXG4gICAgfCBOb25lIC0+IGF0dHJzXG4gICAgfCBTb21lIG9uX3JldHVybiAtPlxuICAgICAgQXR0ci5vbl9rZXlkb3duIChmdW4gZXYgLT5cbiAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlbiBvbl9yZXR1cm4gKCkgZWxzZSBFZmZlY3QuSWdub3JlKVxuICAgICAgOjogYXR0cnNcbiAgOztcblxuICBsZXQgaW5wdXRfbm9kZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgYXR0cnNcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChhdHRyc1xuICAgICAgICAgICAgIHw+IGFkZF9hdHRyc1xuICAgICAgICAgICAgICAgICAgWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyOyBBdHRyLmNyZWF0ZSBcInNwZWxsY2hlY2tcIiBcImZhbHNlXCIgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcblxuICBsZXQgcmF3XG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID9vbl9yZXR1cm5cbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIFsgQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHZhbHVlOyBBdHRyLm9uX2lucHV0IChmdW4gX2V2IC0+IG9uX2lucHV0KSBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhzaG91bGRfbm9ybWFsaXplID0gdHJ1ZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dHlwZV9hdHRyc1xuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIGxldCB2YWx1ZSA9XG4gICAgICBsZXQgdmFsdWUgPSBPcHRpb24udmFsdWVfbWFwIH5mOk0udG9fc3RyaW5nIHZhbHVlIH5kZWZhdWx0OlwiXCIgaW5cbiAgICAgIGlmIHNob3VsZF9ub3JtYWxpemVcbiAgICAgIHRoZW4gVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIE0pKVxuICAgICAgZWxzZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+ZjooY29uc3QgTm9uZSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiAtPiBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gb25faW5wdXQgTm9uZVxuICAgICAgICB8IHMgLT4gb25faW5wdXQgKE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IE0ub2Zfc3RyaW5nIHMpKSlcbiAgICA7IHZhbHVlXG4gICAgXVxuICAgIHw+IGFkZF9hdHRycyB0eXBlX2F0dHJzXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwidGV4dFwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdmFsaWRhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IChtb2R1bGUgVikgPSBWYWxpZGF0ZWQubGlmdCAobW9kdWxlIE0pIGluXG4gICAgbGV0IHZhbHVlX2F0dHIgPVxuICAgICAgbWF0Y2ggKHZhbHVlIDogVi50KSB3aXRoXG4gICAgICB8IEluaXRpYWwgLT4gQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIFwiXCJcbiAgICAgIHwgXyAtPiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSAoVi50b19zdHJpbmcgdmFsdWUpIH5mOihub3JtYWxpemUgKG1vZHVsZSBWKSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+XG4gICAgICAgIG9uX2lucHV0IChWLm9mX3N0cmluZyBzKSlcbiAgICA7IHZhbHVlX2F0dHJcbiAgICA7IEF0dHIudHlwZV8gXCJ0ZXh0XCJcbiAgICBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IG1heWJlX2ludmFsaWQgdmFsdWVcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0ZXh0XG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIG9mX3N0cmluZ2FibGVcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgU3RyaW5nKVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBwYXNzd29yZFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJwYXNzd29yZFwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgbnVtYmVyXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJudW1iZXJcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHJhbmdlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJyYW5nZVwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdGltZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBUaW1lX2NvbXBhdC5PZmRheSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0aW1lXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBkYXRlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIERhdGUpXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZVwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgZGF0ZXRpbWVfbG9jYWxcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/dXRjX29mZnNldFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGhvdXJzID1cbiAgICAgICgqIEluIHRlc3RzLCB3ZSB1c2UgVVRDIGFzIHRoZSBsb2NhbCB0aW1lem9uZSAoaS5lLiBvZmZzZXQgMCkuIFRoaXMgcHJldmVudHMgY2hhbmdlc1xuICAgICAgICAgYmV0d2VlbiB0ZXN0IG91dHB1dCBhcm91bmQgZGF5bGlnaHQgc2F2aW5ncyB0aW1lLCBhbmQgaWYgW3V0Y19vZmZzZXRdIGlzbid0XG4gICAgICAgICBzdXBwbGllZCwgdGhlbiBjYWxsZXJzIHNob3VsZCBiZSBpbmRpZmZlcmVudCB0byB3aGF0IG9mZnNldCBnZXRzIHVzZWQgaGVyZS4gKilcbiAgICAgIG1hdGNoIENvcmUuYW1fcnVubmluZ190ZXN0IHx8IFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZyB3aXRoXG4gICAgICB8IHRydWUgLT4gMFxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgICAgdXRjX29mZnNldFxuICAgICAgICAgICgqIGdldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgdGhlIHRpbWUgem9uZSBkaWZmZXJlbmNlLCBpbiBtaW51dGVzLCBmcm9tIGN1cnJlbnRcbiAgICAgICAgICAgICBsb2NhbGUgdG8gVVRDLiBVdGMgb2Zmc2V0IGlzIHRoZSBkaWZmZXJlbmNlIGZyb20gVVRDIHRvIGN1cnJlbnQgbG9jYWxlIHdoaWNoXG4gICAgICAgICAgICAgaXMgd2hlcmUgdGhlIG1pbnVzIGNvbWVzIGZyb20uXG5cbiAgICAgICAgICAgICBUaGUgbWludXRlcyBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byBob3VycyBzaW5jZSB0aGF0IGlzIHRoZSBmb3JtYXRcbiAgICAgICAgICAgICBUaW1lLlpvbmUub2ZfdXRjX29mZnNldCBleHBlY3RzIGZvciB0aGUgdXRjX29mZnNldC4gKilcbiAgICAgICAgICB+ZGVmYXVsdDooKG5ldyVqcyBKc19vZl9vY2FtbC5Kcy5kYXRlX25vdykjI2dldFRpbWV6b25lT2Zmc2V0IC8gLTYwKVxuICAgICAgICAgIH5mOihmdW4gdXRjX29mZnNldCAtPiBUaW1lX25zLlNwYW4udG9faHIgdXRjX29mZnNldCB8PiBGbG9hdC50b19pbnQpXG4gICAgaW5cbiAgICBsZXQgKG1vZHVsZSBab25lZF90aW1lKSA9IFRpbWVfY29tcGF0LnpvbmVkIChUaW1lX2Zsb2F0LlpvbmUub2ZfdXRjX29mZnNldCB+aG91cnMpIGluXG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgWm9uZWRfdGltZSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcImRhdGV0aW1lLWxvY2FsXCIgXVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdGV4dF9hcmVhXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS50ZXh0YXJlYVxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgdmFsdWUpXG4gICAgICAgICAgICAgOyBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+ZjpPcHRpb24ucmV0dXJuXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgW11cbiAgOztcblxuICAoKiBBY2NvcmRpbmcgdG9cbiAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2NvbG9yI1ZhbHVlIHRoZVxuICAgICB2YWx1ZSBtdXN0IGJlIHNldCBpbiBoZXggZm9ybWF0IGFuZCB3aWxsIGFsd2F5cyBjb21lcyBiYWNrIGluIGhleCBmb3JtYXQuICopXG4gIGxldCBjb2xvcl9waWNrZXJcbiAgICAgICAgPyhleHRyYV9hdHRyID0gQXR0ci5lbXB0eSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCAoYEhleCB2YWx1ZV8pID0gdmFsdWUgaW5cbiAgICBbIEF0dHIuKHR5cGVfIFwiY29sb3JcIiBAIHZhbHVlX3Byb3AgdmFsdWVfIEAgZXh0cmFfYXR0cilcbiAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgcyAtPiBvbl9pbnB1dCAoYEhleCBzKSlcbiAgICBdXG4gICAgfD4gaW5wdXRfbm9kZSA/ZGlzYWJsZWQgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgd2l0aF92YWxpZGF0aW9uXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB0ZXh0XG4gICAgICAgIH52YWxpZGF0aW9uXG4gICAgICAgIH5vbl9jbGlja1xuICAgID1cbiAgICBtYXRjaCB2YWxpZGF0aW9uIHdpdGhcbiAgICB8IE9rIHJlc3VsdCAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHJzOlxuICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAoWyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIHJlc3VsdCk7IEF0dHIudHlwZV8gXCJidXR0b25cIiBdXG4gICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgICAgXVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgICB8IEVycm9yIHJlYXNvbiAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHJzOlxuICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAoWyBBdHRyLmRpc2FibGVkXG4gICAgICAgICAgICAgICA7IEF0dHIudHlwZV8gXCJidXR0b25cIlxuICAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXBcIiByZWFzb25cbiAgICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwLXBvc2l0aW9uXCIgXCJ0b3BcIlxuICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICAgIF1cbiAgICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB0ZXh0XG4gICAgICAgIH5vbl9jbGlja1xuICAgID1cbiAgICBOb2RlLmJ1dHRvblxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJidXR0b25cIjsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayAoKSkgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFJhZGlvX2J1dHRvbnMgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8oc3R5bGUgOiBTZWxlY3RhYmxlX3N0eWxlLnQgPSBOYXRpdmUpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfm9yaWVudGF0aW9uXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGxldCBpbnB1dF9hdHRycywgbGFiZWxfYXR0cnMgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOYXRpdmUgLT4gW10sIGZ1biB+Y2hlY2tlZDpfIC0+IFtdXG4gICAgICB8IEJ1dHRvbl9saWtlIHsgZXh0cmFfYXR0cnMgfSAtPlxuICAgICAgICBbIEF0dHIuc3R5bGUgU2VsZWN0YWJsZV9zdHlsZS5oaWRlX25hdGl2ZV9pbnB1dHMgXSwgZXh0cmFfYXR0cnNcbiAgICBpblxuICAgIHN0cnVjdHVyYWxfbGlzdFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB+b3JpZW50YXRpb25cbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LXJhZGlvLWJ1dHRvbnNcIjsgXCJyYWRpby1idXR0b24tY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIGxldCBjaGVja2VkID0gT3B0aW9uLnZhbHVlX21hcCBzZWxlY3RlZCB+ZGVmYXVsdDpmYWxzZSB+ZjooZXF1YWwgaXRlbSkgaW5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHJzOlsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKSAobGFiZWxfYXR0cnMgfmNoZWNrZWQpIF1cbiAgICAgICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICA7IEF0dHIubmFtZSBuYW1lXG4gICAgICAgICAgICAgICAgICA7IEF0dHIuY2xhc3NlcyBbIFwicmFkaW8tYnV0dG9uXCIgXVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIGl0ZW0pXG4gICAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBjaGVja2VkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICA7IE5vZGUudGV4dCAodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgVmVydGljYWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgdmFsdWVzXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc19ob3Jpem9udGFsXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBFIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3N0eWxlXG4gICAgICB+b3JpZW50YXRpb246YEhvcml6b250YWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgdmFsdWVzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBKcyA9IEpzX29mX29jYW1sLkpzXG5cbiAgbGV0IGFjY2VwdF9hdHRycyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEF0dHIuZW1wdHlcbiAgICB8IFNvbWUgYWNjZXB0cyAtPlxuICAgICAgQXR0ci5jcmVhdGVcbiAgICAgICAgXCJhY2NlcHRcIlxuICAgICAgICAoTGlzdC5tYXAgYWNjZXB0cyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBgRXh0ZW5zaW9uIHMgLT4gaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCIuXCIgdGhlbiBzIGVsc2UgXCIuXCIgXiBzXG4gICAgICAgICAgIHwgYE1pbWV0eXBlIHMgLT4gcylcbiAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIilcbiAgOztcblxuICBsZXQgbGlzdFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID9hY2NlcHRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgIGxldCBmaWxlcyA9XG4gICAgICAgICAgICAgICAgICAgTGlzdC5pbml0IGZpbGVfbGlzdCMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZpbGVfbGlzdCMjaXRlbSBpXG4gICAgICAgICAgICAgICAgICAgICB8PiBKcy5PcHQudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8PiBPcHRpb24udmFsdWVfZXhuIH5tZXNzYWdlOlslc3RyaW5nIFwiY291bGRuJ3QgZ2V0IGZpbGUgJXtpI0ludH1cIl0pXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGVzKVxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgIF1cbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID9hY2NlcHRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBmaWxlX2xpc3QjI2l0ZW0gMCB8PiBKcy5PcHQudG9fb3B0aW9uIGluXG4gICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGUpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAoQykgSmVhbi1DaHJpc3RvcGhlIEZpbGxpYXRyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAqKVxuKCogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAqKVxuKCogIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgICAgICAgICAgICAqKVxuKCogIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAqKVxuKCogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqKVxuKCogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKnMgTWFwcyBvZiBpbnRlZ2VycyBpbXBsZW1lbnRlZCBhcyBQYXRyaWNpYSB0cmVlcywgZm9sbG93aW5nIENocmlzXG4gICAgT2thc2FraSBhbmQgQW5kcmV3IEdpbGwncyBwYXBlciB7XFxlbSBGYXN0IE1lcmdlYWJsZSBJbnRlZ2VyIE1hcHN9XG4gICAgKHtcXHR0XFxzbWFsbCBodHRwOi8vd3d3LmNzLmNvbHVtYmlhLmVkdS9cXH57fWNkby9wYXBlcnMuaHRtbFxcI21sOThtYXBzfSkuXG4gICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG1vZHVsZSBbUHRzZXRdIHdoaWNoIGlzIGFsc28gYmFzZWQgb24gdGhlXG4gICAgc2FtZSBkYXRhLXN0cnVjdHVyZS4gKilcblxudHlwZSBrZXkgPSBpbnRcblxudHlwZSAnYSB0ID1cbiAgfCBFbXB0eVxuICB8IExlYWYgb2YgaW50ICogJ2FcbiAgfCBCcmFuY2ggb2YgaW50ICogaW50ICogJ2EgdCAqICdhIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5IHQgPSB0ID0gRW1wdHlcblxubGV0IHplcm9fYml0IGsgbSA9IChrIGxhbmQgbSkgPT0gMFxuXG5sZXQgcmVjIG1lbSBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGosXykgLT4gayA9PSBqXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBtZW0gayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCByZWMgZmluZCBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGsgPT0gaiB0aGVuIHggZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IGZpbmQgayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCBmaW5kX29wdCBrIG0gPSB0cnkgU29tZSAoZmluZCBrIG0pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuKCogTm90ZTogZmluZF9maXJzdC9sYXN0IGhhdmUgdG8gbG9vayBpbiBib3RoIHN1YnRyZWVzXG4gICBhcyB0aGVzZSBhcmUgbGl0dGxlLWVuZGlhbiBQYXRyaWNpYSB0cmVlcyAqKVxubGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPCByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrIDwgcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrID4gcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA+IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbG93ZXN0X2JpdCB4ID0geCBsYW5kICgteClcblxubGV0IGJyYW5jaGluZ19iaXQgcDAgcDEgPSBsb3dlc3RfYml0IChwMCBseG9yIHAxKVxuXG5sZXQgbWFzayBwIG0gPSBwIGxhbmQgKG0tMSlcblxubGV0IGpvaW4gKHAwLHQwLHAxLHQxKSA9XG4gIGxldCBtID0gYnJhbmNoaW5nX2JpdCBwMCBwMSBpblxuICBpZiB6ZXJvX2JpdCBwMCBtIHRoZW5cbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDAsIHQxKVxuICBlbHNlXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQxLCB0MClcblxubGV0IG1hdGNoX3ByZWZpeCBrIHAgbSA9IChtYXNrIGsgbSkgPT0gcFxuXG5sZXQgYWRkIGsgeCB0ID1cbiAgbGV0IHJlYyBpbnMgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTGVhZiAoayx4KVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+XG4gICAgICBpZiBqID09IGsgdGhlbiBMZWFmIChrLHgpIGVsc2Ugam9pbiAoaywgTGVhZiAoayx4KSwgaiwgdClcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIEJyYW5jaCAocCwgbSwgaW5zIHQwLCB0MSlcblx0ZWxzZVxuXHQgIEJyYW5jaCAocCwgbSwgdDAsIGlucyB0MSlcbiAgICAgIGVsc2Vcblx0am9pbiAoaywgTGVhZiAoayx4KSwgcCwgdClcbiAgaW5cbiAgaW5zIHRcblxubGV0IHNpbmdsZXRvbiBrIHYgPVxuICBhZGQgayB2IGVtcHR5XG5cbmxldCBicmFuY2ggPSBmdW5jdGlvblxuICB8IChfLF8sRW1wdHksdCkgLT4gdFxuICB8IChfLF8sdCxFbXB0eSkgLT4gdFxuICB8IChwLG0sdDAsdDEpICAgLT4gQnJhbmNoIChwLG0sdDAsdDEpXG5cbmxldCByZW1vdmUgayB0ID1cbiAgbGV0IHJlYyBybXYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPiBpZiBrID09IGogdGhlbiBFbXB0eSBlbHNlIHRcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgcm12IHQwLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgdDAsIHJtdiB0MSlcbiAgICAgIGVsc2Vcblx0dFxuICBpblxuICBybXYgdFxuXG5sZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gY2FyZGluYWwgdDAgKyBjYXJkaW5hbCB0MVxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGl0ZXIgZiB0MDsgaXRlciBmIHQxXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwIGYgdDAsIG1hcCBmIHQxKVxuXG5sZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgayB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcGkgZiB0MCwgbWFwaSBmIHQxKVxuXG5sZXQgcmVjIGZvbGQgZiBzIGFjY3UgPSBtYXRjaCBzIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeCBhY2N1XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvbGQgZiB0MCAoZm9sZCBmIHQxIGFjY3UpXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiAoaywgdikgIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvcl9hbGwgcCB0MCAmJiBmb3JfYWxsIHAgdDFcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChrLCB2KSAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBleGlzdHMgcCB0MCB8fCBleGlzdHMgcCB0MVxuXG5sZXQgcmVjIGZpbHRlciBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSBhcyB0IC0+IGlmIHByIGsgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlciBwciB0MCwgZmlsdGVyIHByIHQxKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgLT4gKG1hdGNoIHByIGsgdiB3aXRoIFNvbWUgdicgLT4gTGVhZiAoaywgdicpIHwgTm9uZSAtPiBFbXB0eSlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXJfbWFwIHByIHQwLCBmaWx0ZXJfbWFwIHByIHQxKVxuXG5sZXQgcGFydGl0aW9uIHAgcyA9XG4gIGxldCByZWMgcGFydCAodCxmIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBwIGsgdiB0aGVuIChhZGQgayB2IHQsIGYpIGVsc2UgKHQsIGFkZCBrIHYgZilcbiAgICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBwYXJ0IChwYXJ0IGFjYyB0MCkgdDFcbiAgaW5cbiAgcGFydCAoRW1wdHksIEVtcHR5KSBzXG5cbmxldCByZWMgY2hvb3NlID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2UgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHJlYyBjaG9vc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2Vfb3B0IHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCBzcGxpdCB4IG0gPVxuICBsZXQgY29sbCBrIHYgKGwsIGIsIHIpID1cbiAgICBpZiBrIDwgeCB0aGVuIGFkZCBrIHYgbCwgYiwgclxuICAgIGVsc2UgaWYgayA+IHggdGhlbiBsLCBiLCBhZGQgayB2IHJcbiAgICBlbHNlIGwsIFNvbWUgdiwgclxuICBpblxuICBmb2xkIGNvbGwgbSAoZW1wdHksIE5vbmUsIGVtcHR5KVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtaW5fYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtaW5fYmluZGluZyB0IGluXG4gICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCAobWluX2JpbmRpbmdfb3B0IHMsIG1pbl9iaW5kaW5nX29wdCB0KSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtYXhfYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtYXhfYmluZGluZyB0IGluXG4gICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCBtYXhfYmluZGluZ19vcHQgcywgbWF4X2JpbmRpbmdfb3B0IHQgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IGJpbmRpbmdzIG0gPVxuICBmb2xkIChmdW4gayB2IGFjYyAtPiAoaywgdikgOjogYWNjKSBtIFtdXG5cbigqIHdlIG9yZGVyIGNvbnN0cnVjdG9ycyBhcyBFbXB0eSA8IExlYWYgPCBCcmFuY2ggKilcbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9XG4gIGxldCByZWMgY29tcGFyZV9hdXggdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gMFxuICAgIHwgRW1wdHksIF8gLT4gLTFcbiAgICB8IF8sIEVtcHR5IC0+IDFcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgazEgazIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjbXAgeDEgeDJcbiAgICB8IExlYWYgXywgQnJhbmNoIF8gLT4gLTFcbiAgICB8IEJyYW5jaCBfLCBMZWFmIF8gLT4gMVxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgcDEgcDIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuXHRsZXQgYyA9IGNvbXBhcmUgbTEgbTIgaW5cblx0aWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2F1eCBsMSBsMiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggcjEgcjJcbiAgaW5cbiAgY29tcGFyZV9hdXggdDEgdDJcblxubGV0IGVxdWFsIGVxIHQxIHQyID1cbiAgbGV0IHJlYyBlcXVhbF9hdXggdDEgdDIgPSBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+IGsxID0gazIgJiYgZXEgeDEgeDJcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgcDEgPSBwMiAmJiBtMSA9IG0yICYmIGVxdWFsX2F1eCBsMSBsMiAmJiBlcXVhbF9hdXggcjEgcjJcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgZXF1YWxfYXV4IHQxIHQyXG5cbmxldCBtZXJnZSBmIG0xIG0yID1cbiAgbGV0IGFkZCBtIGsgPSBmdW5jdGlvbiBOb25lIC0+IG0gfCBTb21lIHYgLT4gYWRkIGsgdiBtIGluXG4gICgqIGZpcnN0IGNvbnNpZGVyIGFsbCBiaW5kaW5ncyBpbiBtMSAqKVxuICBsZXQgbSA9IGZvbGRcbiAgICAgIChmdW4gazEgdjEgbSAtPiBhZGQgbSBrMSAoZiBrMSAoU29tZSB2MSkgKGZpbmRfb3B0IGsxIG0yKSkpIG0xIGVtcHR5IGluXG4gICgqIHRoZW4gYmluZGluZ3MgaW4gbTIgdGhhdCBhcmUgbm90IGluIG0xICopXG4gIGZvbGQgKGZ1biBrMiB2MiBtIC0+IGlmIG1lbSBrMiBtMSB0aGVuIG0gZWxzZSBhZGQgbSBrMiAoZiBrMiBOb25lIChTb21lIHYyKSkpXG4gICAgbTIgbVxuXG5sZXQgdXBkYXRlIHggZiBtID1cbiAgbWF0Y2ggZiAoZmluZF9vcHQgeCBtKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgeCBtXG4gIHwgU29tZSB6IC0+IGFkZCB4IHogbVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID0gbiA+PSAwICYmIChtIDwgMCB8fCBuIDwgbSlcblxubGV0IHJlYyB1bmlvbiBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSwgdCAgLT4gdFxuICB8IHQsIEVtcHR5ICAtPiB0XG4gIHwgTGVhZiAoayx2MSksIHQgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjEgfCBTb21lIHYyIC0+IGYgayB2MSB2MikgdFxuICB8IHQsIExlYWYgKGssdjIpIC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYyIHwgU29tZSB2MSAtPiBmIGsgdjEgdjIpIHRcbiAgfCAoQnJhbmNoIChwLG0sczAsczEpIGFzIHMpLCAoQnJhbmNoIChxLG4sdDAsdDEpIGFzIHQpIC0+XG4gICAgICBpZiBtID09IG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogVGhlIHRyZWVzIGhhdmUgdGhlIHNhbWUgcHJlZml4LiBNZXJnZSB0aGUgc3VidHJlZXMuICopXG5cdGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdDApLCB1bmlvbiBmIChzMSx0MSkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBbcV0gY29udGFpbnMgW3BdLiBNZXJnZSBbdF0gd2l0aCBhIHN1YnRyZWUgb2YgW3NdLiAqKVxuXHRpZiB6ZXJvX2JpdCBxIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdCksIHMxKVxuICAgICAgICBlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCBzMCwgdW5pb24gZiAoczEsdCkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG4gbSAmJiBtYXRjaF9wcmVmaXggcCBxIG4gdGhlblxuXHQoKiBbcF0gY29udGFpbnMgW3FdLiBNZXJnZSBbc10gd2l0aCBhIHN1YnRyZWUgb2YgW3RdLiAqKVxuXHRpZiB6ZXJvX2JpdCBwIG4gdGhlblxuXHQgIGJyYW5jaCAocSwgbiwgdW5pb24gZiAocyx0MCksIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChxLCBuLCB0MCwgdW5pb24gZiAocyx0MSkpXG4gICAgICBlbHNlXG5cdCgqIFRoZSBwcmVmaXhlcyBkaXNhZ3JlZS4gKilcblx0am9pbiAocCwgcywgcSwgdClcblxubGV0IHVuaW9uIGYgcyB0ID0gdW5pb24gZiAocyx0KVxuXG5sZXQgdG9fc2VxIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoaywgdikgLT4gZnVuICgpIC0+IFNlcS5Db25zKChrLHYpLCBzKVxuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCB0b19zZXFfZnJvbSBrIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoa2V5LCB2KSAtPiBpZiBrZXkgPj0gayB0aGVuIGZ1biAoKSAtPiBTZXEuQ29ucygoa2V5LHYpLCBzKSBlbHNlIHNcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgYWRkX3NlcSBzIG0gPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBtIHNcblxubGV0IG9mX3NlcSBzID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgZW1wdHkgc1xuIiwibGV0IHV0Zjhfb2ZfY29kZSBidWYgeCA9XG4gIGxldCBhZGQgPSBCdWZmZXIuYWRkX2NoYXIgaW5cblxuICAoKiBTdHJhaWdodCA8PSBkb2Vzbid0IHdvcmsgd2l0aCBzaWduZWQgMzEtYml0IGludHMgKilcbiAgbGV0IG1heGJpdHMgbiB4ID0geCBsc3IgbiA9IDAgaW5cblxuICBpZiBtYXhiaXRzIDcgeCB0aGVuICgqIDcgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociB4KVxuICBlbHNlIGlmIG1heGJpdHMgMTEgeCB0aGVuIChcbiAgICAoKiA1ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDAxMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMTYgeCB0aGVuIChcbiAgICAoKiA0ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTEwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMDAxMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjEgeCB0aGVuIChcbiAgICAoKiAzICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDAwMDExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjYgeCB0aGVuIChcbiAgICAoKiAyICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAwMDAwMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKG1heGJpdHMgMzEgeCk7XG4gICAgKCogMSArIDYgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTExMDAgbG9yICgoeCBsc3IgMzApIGxhbmQgMGIwMDAwMDAwMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcblxubGV0IGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqID1cbiAgbGV0IGhpZ2gxMCA9IGkgLSAweEQ4MDAgaW5cbiAgbGV0IGxvdzEwID0gaiAtIDB4REMwMCBpblxuICAweDEwMDAwICsgKChoaWdoMTAgbHNsIDEwKSBsb3IgbG93MTApXG5cbmxldCB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIGJ1ZiBpIGogPVxuICB1dGY4X29mX2NvZGUgYnVmIChjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgailcbiIsImxldCB2ZXJzaW9uID0gXCIyLjIuMlwiXG5cbmV4Y2VwdGlvbiBKc29uX2Vycm9yIG9mIHN0cmluZ1xuXG5sZXQganNvbl9lcnJvciBzID0gcmFpc2UgKEpzb25fZXJyb3IgcylcblxuZXhjZXB0aW9uIEVuZF9vZl9hcnJheVxuZXhjZXB0aW9uIEVuZF9vZl9vYmplY3RcbmV4Y2VwdGlvbiBFbmRfb2ZfdHVwbGVcbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxudHlwZSBsZXhlcl9zdGF0ZSA9IHtcbiAgYnVmIDogQnVmZmVyLnQ7ICgqIEJ1ZmZlciB1c2VkIHRvIGFjY3VtdWxhdGUgc3Vic3RyaW5ncyAqKVxuICBtdXRhYmxlIGxudW0gOiBpbnQ7ICgqIEN1cnJlbnQgbGluZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgKilcbiAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgICAoKiBBYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjdXJyZW50IGxpbmVcbiAgICAgICAgIChzdGFydGluZyBmcm9tIDApICopXG4gIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uOyAoKiBOYW1lIGRlc2NyaWJpbmcgdGhlIGlucHV0IGZpbGUgKilcbn1cblxubW9kdWxlIExleGVyX3N0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IGxleGVyX3N0YXRlID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuZW5kXG5cbmxldCBpbml0X2xleGVyID9idWYgP2ZuYW1lID8obG51bSA9IDEpICgpID1cbiAgbGV0IGJ1ZiA9IG1hdGNoIGJ1ZiB3aXRoIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAyNTYgfCBTb21lIGJ1ZiAtPiBidWYgaW5cbiAgeyBidWY7IGxudW07IGJvbCA9IDA7IGZuYW1lIH1cbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanVuayBidWYgbiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAgICggKCkgKVxuIyA5OCBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCAxIC0+XG4jIDMgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgIChcbiAgICAgaWYgbiA8PSAwIHRoZW4gKClcbiAgICAgZWxzZSBiZWdpblxuICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKExleGluZy5sZXhlbWVfY2hhciBsZXhidWYgMCk7XG4gICAgICAgcmVhZF9qdW5rIGJ1ZiAobiAtIDEpIGxleGJ1ZlxuICAgICBlbmRcbiAgICAgKVxuIyAxMDkgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDExIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gXG5sZXQgcmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBuIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIGxldCBsZXhfYWJzX3BvcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICBsZXQgbGV4X3N0YXJ0X3BvcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIHJlYWRfanVuayBidWYgbiBsZXhidWY7XG4gIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGxleF9zdGFydF9wb3MgKyAxO1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4X2Fic19wb3NcblxuIyAxMjUgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50IG9mIGludFxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgeCAtPiB4XG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IENvbW1vbi5MZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAgQ29tbW9uLmpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGJ1Zl9zaXplID0gMzIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCAoKSA9IExleGVyX3V0aWxzLnJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgYnVmX3NpemUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgKVxuIyAxMDM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAxODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICApXG4jIDEwNjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDIwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICApXG4jIDEwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAyMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAyMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgMjUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDExNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyAyNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjEzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIxNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjIxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMjI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIyODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjM1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG4jIDIzOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcbiMgMjQwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDczNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDczNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDc0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNTQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA3NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNzY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA3ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDgwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgODE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDgxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDgxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyNjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI2NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyNjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI3MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyNzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI3ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA5MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjg0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA5MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgOTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgOTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjg3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDkzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI4NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuIyAyOTE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMjkyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjk0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjk0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjk1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA5ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMzAwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzAzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzA2MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDg1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMxMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcbiMgMzE0OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE1MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAzMTcwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG4jIDMxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDMxOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gQ29tbW9uLmluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkOl8gcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG4jIDMzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIHwgYEludCBfIC0+IFwiaW50XCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gZmxvYXQgaVxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgKGZsb2F0IGkpXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBpXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIGlcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgSW50IHggLT4gU29tZSAoZmxvYXQgeClcbiAgICAgIHwgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbmVuZFxuXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZ2xpdCBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZ2xpdCBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdGxpdCBhLCBgRmxvYXRsaXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IENvbW1vbi5MZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAgQ29tbW9uLmpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGJ1Zl9zaXplID0gMzIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCAoKSA9IExleGVyX3V0aWxzLnJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgYnVmX3NpemUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJOYU5cIlxuICAgICAgICAgICAgICAgIClcbiMgMTAzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMTgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIkluZmluaXR5XCJcbiAgICAgICAgICAgICAgICApXG4jIDEwNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCItSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmdsaXQgKGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgKVxuIyAxMDY4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAyMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgKVxuIyAxMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDI1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgMjc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgMjg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgMjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDI4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOSAtPlxuIyAyOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDI5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG4jIDEyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDI5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAyOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDI5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcbiMgMTI0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuIyAxMjc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcbiMgMTI3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcbiMgMTI4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuIyAxMjg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAzMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuIyAxMzEwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzE1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzMjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzI1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cbiMgMzIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG5cbiAgICAgICAgIClcbiMgMTMzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuIyAxMzQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzcwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuIyAxMzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG4jIDE0MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAxNDIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG4jIDE0NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuIyAxNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDE0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcbiMgMTUzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcbiMgMTU0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDE1NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE1OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjEwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDE2MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcbiMgMTY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY2NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTcwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcbiMgMTg1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcbiMgMTg1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG4jIDE4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSApXG4jIDE4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDUwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG4jIDE4ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDUyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTg5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNTIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDUzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDUzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcbiMgMTk0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgICAgIClcbiMgMjEzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIxNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjIxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMjI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIyODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjM1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG4jIDIzOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcbiMgMjQwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDczNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDczNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDc0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNTQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA3NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNzY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA3ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI2MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA4MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDgxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA4MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA4MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjY2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNjc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjY3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjcxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjczNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjc1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjc1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4ODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA5MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzwnO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjg0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA5MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgOTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgOTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjg3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDkzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI4NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuIyAyOTE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMjkyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjk0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjk0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjk1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA5ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMzAwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzAzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzA2MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDg1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMxMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcbiMgMzE0OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE1MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAzMTcwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG4jIDMxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDMxOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gQ29tbW9uLmluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkOl8gcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG4jIDMzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgU3RyaW5nbGl0IF8gLT4gXCJzdHJpbmdsaXRcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuZW5kXG5cbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgcmVjIHRvX2Jhc2ljIDogdCAtPiBCYXNpYy50ID0gZnVuY3Rpb25cbiAgfCAoYE51bGwgfCBgQm9vbCBfIHwgYEludCBfIHwgYEZsb2F0IF8gfCBgU3RyaW5nIF8pIGFzIHggLT4geFxuICB8IGBJbnRsaXQgcyAtPiBgU3RyaW5nIHNcbiAgfCBgTGlzdCBsIHwgYFR1cGxlIGwgLT4gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgdG9fYmFzaWMgbCkpXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGBBc3NvYyAoTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgdG9fYmFzaWMgdikpIGwpKVxuICB8IGBWYXJpYW50IChrLCBOb25lKSAtPiBgU3RyaW5nIGtcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSAtPiBgTGlzdCBbIGBTdHJpbmcgazsgdG9fYmFzaWMgdiBdXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICB8IHggLT4geFxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgbmV3bGluZSB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG5cbiMgMTU0IFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIyMVxcMDAxXFwwMDBcXDAwMFxcMjUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyNDFcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMTk4XFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMjU1XFwyNTVcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwyNTVcXDI1NVxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMjU1XFwyNTVcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjIwXFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTk3XFwwMDFcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcbiMgMTAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcbiMgMTAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcbiMgMTAyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICApXG4jIDEwMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDE4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIClcbiMgMTA2OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIClcbiMgMTA4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDIxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTExNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDIzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyAyNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDI3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgODAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA4MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgODE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgODE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI2NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjY3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI2NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjcwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjcyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjczMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjc0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI3NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjc4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gaVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgIGBJbnQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG5lbmRcblxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50IG9mIGludFxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIHwgYEZsb2F0bGl0IG9mIHN0cmluZ1xuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICB8IHggLT4geFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nbGl0IGEsIGBTdHJpbmdsaXQgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIiwib3BlbiBTdGRMYWJlbHNcbm9wZW4gTW9yZUxhYmVsc1xub3BlbiEgWW9qc29uXG5cbnR5cGUgdCA9IFlvanNvbi5TYWZlLnRcblxubGV0IHlvanNvbl9vZl91bml0ICgpIDogdCA9IGBOdWxsXG5sZXQgeW9qc29uX29mX2Jvb2wgYiA6IHQgPSBgQm9vbCBiXG5sZXQgeW9qc29uX29mX3N0cmluZyBzdHIgOiB0ID0gYFN0cmluZyBzdHJcbmxldCB5b2pzb25fb2ZfYnl0ZXMgYnl0ZXMgOiB0ID0gYFN0cmluZyAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHlvanNvbl9vZl9jaGFyIGMgOiB0ID0gYFN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHlvanNvbl9vZl9pbnQgbiA6IHQgPSBgSW50IG5cbmxldCB5b2pzb25fb2ZfZmxvYXQgbiA6IHQgPSBgRmxvYXQgblxubGV0IHlvanNvbl9vZl9pbnQzMiAobiA6IEludDMyLnQpIDogdCA9IGBJbnRsaXQgKEludDMyLnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9pbnQ2NCAobiA6IEludDY0LnQpIDogdCA9IGBJbnRsaXQgKEludDY0LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9uYXRpdmVpbnQgbiA6IHQgPSBgSW50bGl0IChOYXRpdmVpbnQudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX3JlZiB5b2pzb25fb2ZfX2EgcmYgPSB5b2pzb25fb2ZfX2EgIXJmXG5sZXQgeW9qc29uX29mX2xhenlfdCB5b2pzb25fb2ZfX2EgbHYgPSB5b2pzb25fb2ZfX2EgKExhenkuZm9yY2UgbHYpXG5cbmxldCB5b2pzb25fb2Zfb3B0aW9uIHlvanNvbl9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IHlvanNvbl9vZl9fYSB4XG4gIHwgTm9uZSAtPiBgTnVsbFxuOztcblxubGV0IHlvanNvbl9vZl9wYWlyIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgKGEsIGIpID1cbiAgYExpc3QgWyB5b2pzb25fb2ZfX2EgYTsgeW9qc29uX29mX19iIGIgXVxuOztcblxubGV0IHlvanNvbl9vZl90cmlwbGUgeW9qc29uX29mX19hIHlvanNvbl9vZl9fYiB5b2pzb25fb2ZfX2MgKGEsIGIsIGMpID1cbiAgYExpc3QgWyB5b2pzb25fb2ZfX2EgYTsgeW9qc29uX29mX19iIGI7IHlvanNvbl9vZl9fYyBjIF1cbjs7XG5cbigqIExpc3QucmV2IChMaXN0LnJldl9tYXAgLi4uKSBpcyB0YWlsIHJlY3Vyc2l2ZSwgdGhlIE9DYW1sIHN0YW5kYXJkXG4gICBsaWJyYXJ5IExpc3QubWFwIGlzIE5PVC4gKilcbmxldCB5b2pzb25fb2ZfbGlzdCB5b2pzb25fb2ZfX2EgbHN0ID0gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgfmY6eW9qc29uX29mX19hIGxzdCkpXG5cbmxldCB5b2pzb25fb2ZfYXJyYXkgeW9qc29uX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSB5b2pzb25fb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIGBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgeW9qc29uX29mX2hhc2h0YmwgeW9qc29uX29mX2tleSB5b2pzb25fb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBgTGlzdCBbIHlvanNvbl9vZl9rZXkgazsgeW9qc29uX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIGBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHlvanNvbl9vZl9vcGFxdWUgXyA9IGBTdHJpbmcgXCI8b3BhcXVlPlwiXG5sZXQgeW9qc29uX29mX2Z1biBfID0gYFN0cmluZyBcIjxmdW4+XCJcblxuZXhjZXB0aW9uIE9mX3lvanNvbl9lcnJvciBvZiBleG4gKiB0XG5cbmxldCByZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzID0gcmVmIHRydWVcbmxldCBvZl95b2pzb25fZXJyb3JfZXhuIGV4YyB5b2pzb24gPSByYWlzZSAoT2ZfeW9qc29uX2Vycm9yIChleGMsIHlvanNvbikpXG5sZXQgb2ZfeW9qc29uX2Vycm9yIHdoYXQgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoRmFpbHVyZSB3aGF0LCB5b2pzb24pKVxuXG5sZXQgdW5pdF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiAoKVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwidW5pdF9vZl95b2pzb246IGBOdWxsIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJvb2xfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEJvb2wgdiAtPiB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJib29sX29mX3lvanNvbjogdHJ1ZS9mYWxzZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBzdHJpbmdfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT4gc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJzdHJpbmdfb2ZfeW9qc29uOiBzdHJpbmcgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYnl0ZXNfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYnl0ZXNfb2ZfeW9qc29uOiBzdHJpbmcgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgY2hhcl9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3lvanNvbl9lcnJvciBcImNoYXJfb2ZfeW9qc29uOiBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHlvanNvbjtcbiAgICBzdHIuWzBdXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG9mIHNpemUgb25lIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50IHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBmbG9hdF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgRmxvYXQgdiAtPiB2XG4gIHwgYEludCBpIC0+IGZsb2F0X29mX2ludCBpXG4gIHwgYEludGxpdCBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiZmxvYXRfb2ZfeW9qc29uOiBmbG9hdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnQzMl9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBJbnQzMi5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IEludDMyLm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnQzMl9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50NjRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50NjQub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQ2NC5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50NjRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IG5hdGl2ZWludF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBOYXRpdmVpbnQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcIm5hdGl2ZWludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgcmVmX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID0gcmVmIChhX19vZl95b2pzb24geW9qc29uKVxubGV0IGxhenlfdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IExhenkuZnJvbV92YWwgKGFfX29mX3lvanNvbiB5b2pzb24pXG5cbmxldCBvcHRpb25fb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBlbCAtPiBTb21lIChhX19vZl95b2pzb24gZWwpXG47O1xuXG5sZXQgcGFpcl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFsgYV95b2pzb247IGJfeW9qc29uIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3lvanNvbiBhX3lvanNvbiBpblxuICAgIGxldCBiID0gYl9fb2ZfeW9qc29uIGJfeW9qc29uIGluXG4gICAgYSwgYlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwicGFpcl9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgdHJpcGxlX29mX3lvanNvbiBhX19vZl95b2pzb24gYl9fb2ZfeW9qc29uIGNfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFsgYV95b2pzb247IGJfeW9qc29uOyBjX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGxldCBjID0gY19fb2ZfeW9qc29uIGNfeW9qc29uIGluXG4gICAgYSwgYiwgY1xuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwidHJpcGxlX29mX3lvanNvbjogaW52YWxpZCBmb3JtYXRcIiB5b2pzb25cbjs7XG5cbmxldCBsaXN0X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2ZfeW9qc29uIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwibGlzdF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYXJyYXlfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFtdIC0+IFt8fF1cbiAgfCBgTGlzdCAoaCA6OiB0KSAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCB0ICsgMSBpblxuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiAoYV9fb2ZfeW9qc29uIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2ZfeW9qc29uIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYXJyYXlfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGhhc2h0Ymxfb2ZfeW9qc29uIGtleV9vZl95b2pzb24gdmFsX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBgTGlzdCBbIGtfeW9qc29uOyB2X3lvanNvbiBdIC0+XG4gICAgICAgIEhhc2h0YmwuYWRkIGh0YmwgfmtleTooa2V5X29mX3lvanNvbiBrX3lvanNvbikgfmRhdGE6KHZhbF9vZl95b2pzb24gdl95b2pzb24pXG4gICAgICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IHR1cGxlIGxpc3QgbmVlZGVkXCIgeW9qc29uXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgbHN0IH5mOmFjdDtcbiAgICBodGJsXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJoYXNodGJsX29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBvcGFxdWVfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciBcIm9wYXF1ZV9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IG9wYXF1ZSB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbmxldCBmdW5fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciBcImZ1bl9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHlvanNvblxuOztcblxubW9kdWxlIFByaW1pdGl2ZXMgPSBzdHJ1Y3RcbiAgbGV0IHlvanNvbl9vZl9hcnJheSA9IHlvanNvbl9vZl9hcnJheVxuICBsZXQgYXJyYXlfb2ZfeW9qc29uID0gYXJyYXlfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfYm9vbCA9IHlvanNvbl9vZl9ib29sXG4gIGxldCBib29sX29mX3lvanNvbiA9IGJvb2xfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfY2hhciA9IHlvanNvbl9vZl9jaGFyXG4gIGxldCBjaGFyX29mX3lvanNvbiA9IGNoYXJfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfZmxvYXQgPSB5b2pzb25fb2ZfZmxvYXRcbiAgbGV0IGZsb2F0X29mX3lvanNvbiA9IGZsb2F0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludCA9IHlvanNvbl9vZl9pbnRcbiAgbGV0IGludF9vZl95b2pzb24gPSBpbnRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50MzIgPSB5b2pzb25fb2ZfaW50MzJcbiAgbGV0IGludDMyX29mX3lvanNvbiA9IGludDMyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDY0ID0geW9qc29uX29mX2ludDY0XG4gIGxldCBpbnQ2NF9vZl95b2pzb24gPSBpbnQ2NF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9saXN0ID0geW9qc29uX29mX2xpc3RcbiAgbGV0IGxpc3Rfb2ZfeW9qc29uID0gbGlzdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9uYXRpdmVpbnQgPSB5b2pzb25fb2ZfbmF0aXZlaW50XG4gIGxldCBuYXRpdmVpbnRfb2ZfeW9qc29uID0gbmF0aXZlaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX29wdGlvbiA9IHlvanNvbl9vZl9vcHRpb25cbiAgbGV0IG9wdGlvbl9vZl95b2pzb24gPSBvcHRpb25fb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfcmVmID0geW9qc29uX29mX3JlZlxuICBsZXQgcmVmX29mX3lvanNvbiA9IHJlZl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9zdHJpbmcgPSB5b2pzb25fb2Zfc3RyaW5nXG4gIGxldCBzdHJpbmdfb2ZfeW9qc29uID0gc3RyaW5nX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2J5dGVzID0geW9qc29uX29mX2J5dGVzXG4gIGxldCBieXRlc19vZl95b2pzb24gPSBieXRlc19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl91bml0ID0geW9qc29uX29mX3VuaXRcbiAgbGV0IHVuaXRfb2ZfeW9qc29uID0gdW5pdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9sYXp5X3QgPSB5b2pzb25fb2ZfbGF6eV90XG4gIGxldCBsYXp5X3Rfb2ZfeW9qc29uID0gbGF6eV90X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2hhc2h0YmwgPSB5b2pzb25fb2ZfaGFzaHRibFxuICBsZXQgaGFzaHRibF9vZl95b2pzb24gPSBoYXNodGJsX29mX3lvanNvblxuZW5kXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFlvanNvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiEgU3RkTGFiZWxzXG5vcGVuIFlvanNvbl9jb252XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgc3VtIHR5cGVzICopXG5cbmxldCBzdGFnX25vX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl95b2pzb246IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZ1xuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHN0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgeW9qc29uXG47O1xuXG5sZXQgdW5leHBlY3RlZF9zdGFnIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdW5leHBlY3RlZCB2YXJpYW50IGNvbnN0cnVjdG9yXCIpIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiAlczogJXNcIiBsb2Mgd2hhdCBmbGRfbmFtZXNfc3RyIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImR1cGxpY2F0ZSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlYyByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgZmllbGRzKSB+c2VwOlwiIFwiXG4gIHwgKHRydWUsIGZpZWxkKSA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgKGZpZWxkIDo6IGZpZWxkcykgcmVzdFxuICB8IF8gOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyByZXN0XG47O1xuXG5sZXQgcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBsb2MgeW9qc29uIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyB5b2pzb24gPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2ZfeW9qc29uOiBsaXN0IGluc3RlYWQgb2YgYXRvbSBmb3IgcmVjb3JkIGV4cGVjdGVkXCIgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgXFxcbiAgICAgICBmaWVsZHNcIlxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IHB0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgY25zdHIgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgeW9qc29uXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yXG4gICAgKGxvYyBeIFwiX29mX3lvanNvbjogYSBuZXN0ZWQgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IHRoZSBlbXB0eSBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKVxuICAgIHlvanNvblxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHlvanNvblxuOztcbiIsIm1vZHVsZSBZb2pzb25fY29udl9lcnJvciA9IFlvanNvbl9jb252X2Vycm9yXG5tb2R1bGUgWW9qc29uX2NvbnYgPSBZb2pzb25fY29udlxubW9kdWxlIFlvanNvbmFibGUgPSBZb2pzb25hYmxlX2ludGZcbm1vZHVsZSBZb2pzb24gPSBZb2pzb25cblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gPVxuICAgIHwgTm9uZVxuICAgIHwgU29tZSBvZiAnYVxuZW5kXG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCBwb2x5X2VxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0ICggISApIDogJ2EgcmVmIC0+ICdhID0gZnVuIHggLT4gIXhcbiIsIiMgMSBcInBweF9kZXJpdmluZ19ydW50aW1lLmNwcG8ubWxcIlxudHlwZSBub25yZWMgaW50ID0gaW50XG50eXBlIG5vbnJlYyBjaGFyID0gY2hhclxudHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nXG50eXBlIG5vbnJlYyBmbG9hdCA9IGZsb2F0XG50eXBlIG5vbnJlYyBib29sID0gYm9vbFxudHlwZSBub25yZWMgdW5pdCA9IHVuaXRcbnR5cGUgbm9ucmVjIGV4biA9IGV4blxudHlwZSBub25yZWMgJ2EgYXJyYXkgPSAnYSBhcnJheVxudHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3RcbnR5cGUgbm9ucmVjICdhIG9wdGlvbiA9ICdhIG9wdGlvblxudHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50XG50eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyXG50eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0XG50eXBlIG5vbnJlYyAnYSBsYXp5X3QgPSAnYSBsYXp5X3RcbnR5cGUgbm9ucmVjIGJ5dGVzID0gYnl0ZXNcblxuIyAxOCBcInBweF9kZXJpdmluZ19ydW50aW1lLmNwcG8ubWxcIlxuKCogV2UgcmVxdWlyZSA0LjA4IHdoaWxlIDQuMDcgYWxyZWFkeSBoYXMgYSBTdGRsaWIgbW9kdWxlLlxuICAgSW4gNC4wNywgdGhlIHR5cGUgZXF1YWxpdGllcyBvbiBTdGRsaWIuUGVydmFzaXZlc1xuICAgYXJlIG5vdCBzdHJvbmcgZW5vdWdoIGZvciB0aGUgJ2luY2x1ZGUgU3RkbGliJ1xuICAgYmVsb3cgdG8gc2F0aXNmeSB0aGUgc2lnbmF0dXJlIGNvbnN0cmFpbnRzIG9uXG4gICBQcHhfZGVyaXZpbmdfcnVudGltZS5QZXJ2YXNpdmVzLiAqKVxubW9kdWxlIFN0ZGxpYiA9IFN0ZGxpYlxuXG5pbmNsdWRlIFN0ZGxpYlxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHJlc3VsdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgRXJyb3Igb2YgJ2JcblxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5lbmRcbiIsIlxudHlwZSB0ID0gaW50XG5sZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG5sZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbmxldCB0b19pbnQgeCA9IHhcbmxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcblxubGV0IGludGVyc2VjdCB4IHkgPSB4IGxhbmQgeSA8PiAwXG5sZXQgKCsrKSB4IHkgPSB4IGxvciB5XG5cbmxldCBkdW1teSA9IC0xXG5sZXQgaW5leGlzdGFudCA9IDFcbmxldCBsZXR0ZXIgPSAyXG5sZXQgbm90X2xldHRlciA9IDRcbmxldCBuZXdsaW5lID0gOFxubGV0IGxhc3RuZXdsaW5lID0gMTZcbmxldCBzZWFyY2hfYm91bmRhcnkgPSAzMlxuXG5sZXQgZnJvbV9jaGFyID0gZnVuY3Rpb25cbiAgKCogU2hvdWxkIG1hdGNoIFtjd29yZF0gZGVmaW5pdGlvbiAqKVxuICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JyB8ICdfJyB8ICdcXDE3MCcgfCAnXFwxODEnIHwgJ1xcMTg2J1xuICB8ICdcXDE5MicuLidcXDIxNCcgfCAnXFwyMTYnLi4nXFwyNDYnIHwgJ1xcMjQ4Jy4uJ1xcMjU1JyAtPlxuICAgIGxldHRlclxuICB8ICdcXG4nIC0+XG4gICAgbm90X2xldHRlciArKyBuZXdsaW5lXG4gIHwgXyAtPlxuICAgIG5vdF9sZXR0ZXJcbiIsIigqKiBWZXJ5IHNtYWxsIHRvb2xpbmcgZm9yIGZvcm1hdCBwcmludGVycy4gKilcblxuaW5jbHVkZSBGb3JtYXRcblxudHlwZSAnYSB0ID0gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0XG5cbmxldCBsaXN0ID0gcHBfcHJpbnRfbGlzdFxubGV0IHN0ciA9IHBwX3ByaW50X3N0cmluZ1xubGV0IHNleHAgZm10IHMgcHAgeCA9IGZwcmludGYgZm10IFwiQFs8Mz4oJXNAICVhKUBdXCIgcyBwcCB4XG5sZXQgcGFpciBwcDEgcHAyIGZtdCAodjEsdjIpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDsgcHAyIGZtdCB2MlxubGV0IHRyaXBsZSBwcDEgcHAyIHBwMyBmbXQgKHYxLCB2MiwgdjMpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAyIGZtdCB2MjsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAzIGZtdCB2M1xubGV0IGludCA9IHBwX3ByaW50X2ludFxubGV0IG9wdGludCBmbXQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGkgLT4gZnByaW50ZiBmbXQgXCJAICVkXCIgaVxuXG5sZXQgcXVvdGUgZm10IHMgPSBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIgc1xuXG5sZXQgcHBfb2xpc3QgcHBfZWxlbSBmbXQgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwzPltAICVhQCBdQF1cIlxuICAgIChwcF9wcmludF9saXN0XG4gICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBmcHJpbnRmIGZtdCBcIjtAIFwiKVxuICAgICAgIHBwX2VsZW0pXG5cbmxldCBwcF9zdHJfbGlzdCA9IHBwX29saXN0IHF1b3RlXG5cbmxldCB0b190b19zdHJpbmcgcHAgeCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBwcCBmbXQgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgYyA9IGludFxudHlwZSB0ID0gKGMgKiBjKSBsaXN0XG5cbmxldCByZWMgdW5pb24gbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gbCdcbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiArIDEgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OnVuaW9uIHIgbCdcbiAgICBlbHNlIGlmIGMyJyArIDEgPCBjMSB0aGVuXG4gICAgICAoYzEnLCBjMicpOjp1bmlvbiBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICB1bmlvbiByICgobWluIGMxIGMxJywgYzInKTo6cicpXG4gICAgZWxzZVxuICAgICAgdW5pb24gKChtaW4gYzEgYzEnLCBjMik6OnIpIHInXG5cbmxldCByZWMgaW50ZXIgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBbXVxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgaW50ZXIgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgaW50ZXIgbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgKG1heCBjMSBjMScsIGMyKTo6aW50ZXIgciBsJ1xuICAgIGVsc2VcbiAgICAgIChtYXggYzEgYzEnLCBjMicpOjppbnRlciBsIHInXG5cbmxldCByZWMgZGlmZiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjpkaWZmIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGRpZmYgbCByJ1xuICAgIGVsc2VcbiAgICAgIGxldCByJycgPSBpZiBjMicgPCBjMiB0aGVuIChjMicgKyAxLCBjMikgOjogciBlbHNlIHIgaW5cbiAgICAgIGlmIGMxIDwgYzEnIHRoZW5cbiAgICAgICAgKGMxLCBjMScgLSAxKTo6ZGlmZiByJycgcidcbiAgICAgIGVsc2VcbiAgICAgICAgZGlmZiByJycgcidcblxubGV0IHNpbmdsZSBjID0gW2MsIGNdXG5cbmxldCBhZGQgYyBsID0gdW5pb24gKHNpbmdsZSBjKSBsXG5cbmxldCBzZXEgYyBjJyA9IGlmIGMgPD0gYycgdGhlbiBbYywgYyddIGVsc2UgW2MnLCBjXVxuXG5sZXQgcmVjIG9mZnNldCBvIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgICAgICAgIC0+IFtdXG4gIHwgKGMxLCBjMikgOjogciAtPiAoYzEgKyBvLCBjMiArIG8pIDo6IG9mZnNldCBvIHJcblxubGV0IGVtcHR5ID0gW11cblxubGV0IHJlYyBtZW0gKGMgOiBpbnQpIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgICBbXSAgICAgICAgICAgICAgLT4gZmFsc2VcbiAgfCAoYzEsIGMyKSA6OiByZW0gLT4gaWYgYyA8PSBjMiB0aGVuIGMgPj0gYzEgZWxzZSBtZW0gYyByZW1cblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxuXG5sZXQgcmVjIGhhc2hfcmVjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgLT4gMFxuICB8IChpLCBqKTo6ciAtPiBpICsgMTMgKiBqICsgMjU3ICogaGFzaF9yZWMgclxubGV0IGhhc2ggbCA9IChoYXNoX3JlYyBsKSBsYW5kIDB4M0ZGRkZGRkZcblxuKCoqKiopXG5cbmxldCBwcmludF9vbmUgY2ggKGMxLCBjMikgPVxuICBpZiBjMSA9IGMyIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkXCIgYzFcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBjMSBjMlxuXG5sZXQgcHAgPSBGbXQubGlzdCBwcmludF9vbmVcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8ICh4LCB5KTo6eHMgLT5cbiAgICBmIHggeTtcbiAgICBpdGVyIHhzICB+ZlxuXG5sZXQgb25lX2NoYXIgPSBmdW5jdGlvblxuICB8IFtpLCBqXSB3aGVuIGkgPSBqIC0+IFNvbWUgaVxuICB8IF8gLT4gTm9uZVxuXG5cbm1vZHVsZSBDU2V0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCAqIChpbnQgKiBpbnQpIGxpc3RcbiAgICBsZXQgY29tcGFyZSAoaSwgdSkgKGosIHYpID1cbiAgICAgIGxldCBjID0gY29tcGFyZSBpIGogaW5cbiAgICAgIGlmIGMgPD4gMFxuICAgICAgdGhlbiBjXG4gICAgICBlbHNlIGNvbXBhcmUgdSB2XG4gIGVuZClcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZF9yaWdodCBmIHQgaW5pdFxuXG5sZXQgY3NpbmdsZSBjID0gc2luZ2xlIChDaGFyLmNvZGUgYylcblxubGV0IGNhbnkgPSBbMCwgMjU1XVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCByZWMgcHJlcGVuZCBzIHggbCA9XG4gIG1hdGNoIHMsIGwgd2l0aFxuICB8IFtdLCBfIC0+IGxcbiAgfCBfciwgW10gLT4gW11cbiAgfCAoX2MsIGMnKSA6OiByLCAoW2QsIF9kJ10sIF94JykgOjogX3InIHdoZW4gYycgPCBkIC0+IHByZXBlbmQgciB4IGxcbiAgfCAoYywgYycpIDo6IHIsIChbZCwgZCddLCB4JykgOjogcicgLT5cbiAgICBpZiBjIDw9IGQgdGhlbiBiZWdpblxuICAgICAgaWYgYycgPCBkJ1xuICAgICAgdGhlbiAoW2QsIGMnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHIgeCAoKFtjJyArIDEsIGQnXSwgeCcpIDo6IHInKVxuICAgICAgZWxzZSAoW2QsIGQnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBjID4gZCdcbiAgICAgIHRoZW4gKFtkLCBkJ10sIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgICAgZWxzZSAoW2QsIGMgLSAxXSwgeCcpIDo6IHByZXBlbmQgcyB4ICgoW2MsIGQnXSwgeCcpIDo6IHInKVxuICAgIGVuZFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwaWNrID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIlJlX2NzZXQucGlja1wiXG4gIHwgKHgsIF8pOjpfIC0+IHhcbiIsIlxubW9kdWxlIFBtYXJrID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG4gIGxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxuICBsZXQgciA9IHJlZiAwXG4gIGxldCBnZW4gKCkgPSBpbmNyIHIgOyAhclxuXG4gIGxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcbmVuZFxuXG5pbmNsdWRlIFBtYXJrXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UoUG1hcmspXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIHNlbSA9IFsgYExvbmdlc3QgfCBgU2hvcnRlc3QgfCBgRmlyc3QgXVxuXG50eXBlIHJlcF9raW5kID0gWyBgR3JlZWR5IHwgYE5vbl9ncmVlZHkgXVxuXG50eXBlIG1hcmsgPSBpbnRcbnR5cGUgaWR4ID0gaW50XG5cbnR5cGUgZXhwciA9IHsgaWQgOiBpbnQ7IGRlZiA6IGRlZiB9XG5cbmFuZCBkZWYgPVxuICAgIENzdCBvZiBDc2V0LnRcbiAgfCBBbHQgb2YgZXhwciBsaXN0XG4gIHwgU2VxIG9mIHNlbSAqIGV4cHIgKiBleHByXG4gIHwgRXBzXG4gIHwgUmVwIG9mIHJlcF9raW5kICogc2VtICogZXhwclxuICB8IE1hcmsgb2YgaW50XG4gIHwgRXJhc2Ugb2YgaW50ICogaW50XG4gIHwgQmVmb3JlIG9mIENhdGVnb3J5LnRcbiAgfCBBZnRlciBvZiBDYXRlZ29yeS50XG4gIHwgUG1hcmsgb2YgUG1hcmsudFxuXG5sZXQgaGFzaF9jb21iaW5lIGggYWNjdSA9IGFjY3UgKiA2NTU5OSArIGhcblxubW9kdWxlIE1hcmtzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXJrcyA6IChpbnQgKiBpbnQpIGxpc3RcbiAgICA7IHBtYXJrcyA6IFBtYXJrLlNldC50IH1cblxuICBsZXQgZW1wdHkgPSB7IG1hcmtzID0gW10gOyBwbWFya3MgPSBQbWFyay5TZXQuZW1wdHkgfVxuXG4gIGxldCByZWMgbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgb2xkXG4gICAgfCAoaSwgdikgOjogcmVtIC0+XG4gICAgICBsZXQgbncnID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IChMaXN0LnJlbW92ZV9hc3NxIGkgb2xkKSByZW0gaW5cbiAgICAgIGlmIHYgPSAtMiB0aGVuXG4gICAgICAgIG53J1xuICAgICAgZWxzZVxuICAgICAgICAoaSwgdikgOjogbncnXG5cbiAgbGV0IG1lcmdlIG9sZCBudyA9XG4gICAgeyBtYXJrcyA9IG1lcmdlX21hcmtzX29mZnNldCBvbGQubWFya3MgbncubWFya3NcbiAgICA7IHBtYXJrcyA9IFBtYXJrLlNldC51bmlvbiBvbGQucG1hcmtzIG53LnBtYXJrcyB9XG5cbiAgbGV0IHJlYyBoYXNoX21hcmtzX29mZnNldCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gICAgICAgICAgLT4gYWNjdVxuICAgIHwgKGEsIGkpIDo6IHIgLT4gaGFzaF9tYXJrc19vZmZzZXQgciAoaGFzaF9jb21iaW5lIGEgKGhhc2hfY29tYmluZSBpIGFjY3UpKVxuXG4gIGxldCBoYXNoIG0gYWNjdSA9XG4gICAgaGFzaF9tYXJrc19vZmZzZXQgbS5tYXJrcyAoaGFzaF9jb21iaW5lIChIYXNodGJsLmhhc2ggbS5wbWFya3MpIGFjY3UpXG5cbiAgbGV0IHJlYyBtYXJrc19zZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gICAgfCAoYSwgLTEpIDo6IHJlbSAtPlxuICAgICAgKGEsIGlkeCkgOjogbWFya3Nfc2V0X2lkeCBpZHggcmVtXG4gICAgfCBtYXJrcyAtPlxuICAgICAgbWFya3NcblxuICBsZXQgbWFya3Nfc2V0X2lkeCBtYXJrcyBpZHggPVxuICAgIHsgbWFya3Mgd2l0aCBtYXJrcyA9IG1hcmtzX3NldF9pZHggaWR4IG1hcmtzLm1hcmtzIH1cblxuICBsZXQgcHBfbWFya3MgY2ggdCA9XG4gICAgbWF0Y2ggdC5tYXJrcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgICB8IChhLCBpKSA6OiByIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYSBpO1xuICAgICAgTGlzdC5pdGVyIChmdW4gKGEsIGkpIC0+IEZvcm1hdC5mcHJpbnRmIGNoIFwiICVkLSVkXCIgYSBpKSByXG5lbmRcblxuKCoqKiopXG5cbmxldCBwcF9zZW0gY2ggayA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgY2hcbiAgICAobWF0Y2ggayB3aXRoXG4gICAgICAgYFNob3J0ZXN0IC0+IFwic2hvcnRcIlxuICAgICB8IGBMb25nZXN0ICAtPiBcImxvbmdcIlxuICAgICB8IGBGaXJzdCAgICAtPiBcImZpcnN0XCIpXG5cblxubGV0IHBwX3JlcF9raW5kIGZtdCA9IGZ1bmN0aW9uXG4gIHwgYEdyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkdyZWVkeVwiXG4gIHwgYE5vbl9ncmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25fZ3JlZWR5XCJcblxubGV0IHJlYyBwcCBjaCBlID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIG1hdGNoIGUuZGVmIHdpdGhcbiAgICBDc3QgbCAtPlxuICAgIHNleHAgY2ggXCJjc3RcIiBDc2V0LnBwIGw7XG4gIHwgQWx0IGwgLT5cbiAgICBzZXhwIGNoIFwiYWx0XCIgKGxpc3QgcHApIGxcbiAgfCBTZXEgKGssIGUsIGUnKSAtPlxuICAgIHNleHAgY2ggXCJzZXFcIiAodHJpcGxlIHBwX3NlbSBwcCBwcCkgKGssIGUsIGUnKVxuICB8IEVwcyAtPlxuICAgIHN0ciBjaCBcImVwc1wiXG4gIHwgUmVwIChfcmssIGssIGUpIC0+XG4gICAgc2V4cCBjaCBcInJlcFwiIChwYWlyIHBwX3NlbSBwcCkgKGssIGUpXG4gIHwgTWFyayBpIC0+XG4gICAgc2V4cCBjaCBcIm1hcmtcIiBpbnQgaVxuICB8IFBtYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwicG1hcmtcIiBpbnQgKGkgOj4gaW50KVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIHNleHAgY2ggXCJlcmFzZVwiIChwYWlyIGludCBpbnQpIChiLCBlKVxuICB8IEJlZm9yZSBjIC0+XG4gICAgc2V4cCBjaCBcImJlZm9yZVwiIENhdGVnb3J5LnBwIGNcbiAgfCBBZnRlciBjIC0+XG4gICAgc2V4cCBjaCBcImFmdGVyXCIgQ2F0ZWdvcnkucHAgY1xuXG5cbigqKioqKVxuXG5sZXQgcmVjIGZpcnN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTm9uZVxuICB8IHggOjogciAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICBOb25lICAgICAgICAgIC0+IGZpcnN0IGYgclxuICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXNcblxuKCoqKiopXG5cbnR5cGUgaWRzID0gaW50IHJlZlxubGV0IGNyZWF0ZV9pZHMgKCkgPSByZWYgMFxuXG5sZXQgZXBzX2V4cHIgPSB7IGlkID0gMDsgZGVmID0gRXBzIH1cblxubGV0IG1rX2V4cHIgaWRzIGRlZiA9XG4gIGluY3IgaWRzO1xuICB7IGlkID0gIWlkczsgZGVmID0gZGVmIH1cblxubGV0IGVtcHR5IGlkcyA9IG1rX2V4cHIgaWRzIChBbHQgW10pXG5cbmxldCBjc3QgaWRzIHMgPVxuICBpZiBDc2V0LmlzX2VtcHR5IHNcbiAgdGhlbiBlbXB0eSBpZHNcbiAgZWxzZSBta19leHByIGlkcyAoQ3N0IHMpXG5cbmxldCBhbHQgaWRzID0gZnVuY3Rpb25cbiAgfCBbXSAgLT4gZW1wdHkgaWRzXG4gIHwgW2NdIC0+IGNcbiAgfCBsICAgLT4gbWtfZXhwciBpZHMgKEFsdCBsKVxuXG5sZXQgc2VxIGlkcyBraW5kIHggeSA9XG4gIG1hdGNoIHguZGVmLCB5LmRlZiB3aXRoXG4gICAgQWx0IFtdLCBfICAgICAgICAgICAgICAgICAtPiB4XG4gIHwgXywgQWx0IFtdICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgRXBzLCBfICAgICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgXywgRXBzIHdoZW4ga2luZCA9IGBGaXJzdCAtPiB4XG4gIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAtPiBta19leHByIGlkcyAoU2VxIChraW5kLCB4LCB5KSlcblxubGV0IGlzX2VwcyBleHByID1cbiAgbWF0Y2ggZXhwci5kZWYgd2l0aFxuICB8IEVwcyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgZXBzIGlkcyA9IG1rX2V4cHIgaWRzIEVwc1xuXG5sZXQgcmVwIGlkcyBraW5kIHNlbSB4ID0gbWtfZXhwciBpZHMgKFJlcCAoa2luZCwgc2VtLCB4KSlcblxubGV0IG1hcmsgaWRzIG0gPSBta19leHByIGlkcyAoTWFyayBtKVxuXG5sZXQgcG1hcmsgaWRzIGkgPSBta19leHByIGlkcyAoUG1hcmsgaSlcblxubGV0IGVyYXNlIGlkcyBtIG0nID0gbWtfZXhwciBpZHMgKEVyYXNlIChtLCBtJykpXG5cbmxldCBiZWZvcmUgaWRzIGMgPSBta19leHByIGlkcyAoQmVmb3JlIGMpXG5cbmxldCBhZnRlciBpZHMgYyA9IG1rX2V4cHIgaWRzIChBZnRlciBjKVxuXG4oKioqKilcblxubGV0IHJlYyByZW5hbWUgaWRzIHggPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IF8gfCBFcHMgfCBNYXJrIF8gfCBQbWFyayBfIHwgRXJhc2UgXyB8IEJlZm9yZSBfIHwgQWZ0ZXIgXyAtPlxuICAgIG1rX2V4cHIgaWRzIHguZGVmXG4gIHwgQWx0IGwgLT5cbiAgICBta19leHByIGlkcyAoQWx0IChMaXN0Lm1hcCAocmVuYW1lIGlkcykgbCkpXG4gIHwgU2VxIChrLCB5LCB6KSAtPlxuICAgIG1rX2V4cHIgaWRzIChTZXEgKGssIHJlbmFtZSBpZHMgeSwgcmVuYW1lIGlkcyB6KSlcbiAgfCBSZXAgKGcsIGssIHkpIC0+XG4gICAgbWtfZXhwciBpZHMgKFJlcCAoZywgaywgcmVuYW1lIGlkcyB5KSlcblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxudHlwZSBtYXJrX2luZm9zID0gaW50IGFycmF5XG50eXBlIHN0YXR1cyA9IEZhaWxlZCB8IE1hdGNoIG9mIG1hcmtfaW5mb3MgKiBQbWFyay5TZXQudCB8IFJ1bm5pbmdcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRTZXEgb2YgdCBsaXN0ICogZXhwciAqIHNlbVxuICAgIHwgVEV4cCBvZiBNYXJrcy50ICogZXhwclxuICAgIHwgVE1hdGNoIG9mIE1hcmtzLnRcblxuICBsZXQgcmVjIGVxdWFsIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+XG4gICAgICB0cnVlXG4gICAgfCBUU2VxIChsMScsIGUxLCBfKSA6OiByMSwgVFNlcSAobDInLCBlMiwgXykgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgZXF1YWwgbDEnIGwyJyAmJiBlcXVhbCByMSByMlxuICAgIHwgVEV4cCAobWFya3MxLCBlMSkgOjogcjEsIFRFeHAgKG1hcmtzMiwgZTIpIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgVE1hdGNoIG1hcmtzMSA6OiByMSwgVE1hdGNoIG1hcmtzMiA6OiByMiAtPlxuICAgICAgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCByZWMgaGFzaCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFjY3VcbiAgICB8IFRTZXEgKGwnLCBlLCBfKSA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDE3MmExYmNlIChoYXNoX2NvbWJpbmUgZS5pZCAoaGFzaCBsJyBhY2N1KSkpXG4gICAgfCBURXhwIChtYXJrcywgZSkgOjogciAtPlxuICAgICAgaGFzaCByXG4gICAgICAgIChoYXNoX2NvbWJpbmUgMHgyYjRjMGQ3NyAoaGFzaF9jb21iaW5lIGUuaWQgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpKVxuICAgIHwgVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MWMyMDVhZDUgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpXG5cbiAgbGV0IHRleHAgbWFya3MgeCA9IFRFeHAgKG1hcmtzLCB4KVxuXG4gIGxldCB0c2VxIGtpbmQgeCB5IHJlbSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IHJlbVxuICAgIHwgW1RFeHAgKG1hcmtzLCB7ZGVmID0gRXBzIDsgX30pXSAtPiBURXhwIChtYXJrcywgeSkgOjogcmVtXG4gICAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFRTZXEgKHgsIHksIGtpbmQpIDo6IHJlbVxuXG4gIGxldCByZWMgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCBUTWF0Y2ggbWFya3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oTWF0Y2hAICVhKUBdXCIgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRTZXEgKGwnLCB4LCBfa2luZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oU2VxQCBcIjtcbiAgICAgIHByaW50X3N0YXRlX2xzdCBjaCBsJyB4O1xuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAICVhKUBdXCIgcHAgeFxuICAgIHwgVEV4cCAobWFya3MsIHtkZWYgPSBFcHM7IF99KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAoZXBzKSlAXVwiIHkuaWQgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRFeHAgKG1hcmtzLCB4KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAlYSlAXVwiIHguaWQgTWFya3MucHBfbWFya3MgbWFya3MgcHAgeFxuXG4gIGFuZCBwcmludF9zdGF0ZV9sc3QgY2ggbCB5ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIigpXCJcbiAgICB8IGUgOjogcmVtIC0+XG4gICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5O1xuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgfCBcIjtcbiAgICAgICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSlcbiAgICAgICAgcmVtXG5cbiAgbGV0IHBwIGNoIHQgPSBwcmludF9zdGF0ZV9sc3QgY2ggW3RdIHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgaWR4OiBpZHhcbiAgICA7IGNhdGVnb3J5OiBDYXRlZ29yeS50XG4gICAgOyBkZXNjOiBFLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGF0dXM6IHN0YXR1cyBvcHRpb25cbiAgICA7IGhhc2g6IGhhc2ggfVxuXG4gIGxldCBkdW1teSA9XG4gICAgeyBpZHggPSAtMVxuICAgIDsgY2F0ZWdvcnkgPSBDYXRlZ29yeS5kdW1teVxuICAgIDsgZGVzYyA9IFtdXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gLTEgfVxuXG4gIGxldCBoYXNoIGlkeCBjYXQgZGVzYyA9XG4gICAgRS5oYXNoIGRlc2MgKGhhc2hfY29tYmluZSBpZHggKGhhc2hfY29tYmluZSAoQ2F0ZWdvcnkudG9faW50IGNhdCkgMCkpIGxhbmQgMHgzRkZGRkZGRlxuXG4gIGxldCBtayBpZHggY2F0IGRlc2MgPVxuICAgIHsgaWR4XG4gICAgOyBjYXRlZ29yeSA9IGNhdFxuICAgIDsgZGVzY1xuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IGhhc2ggaWR4IGNhdCBkZXNjfVxuXG4gIGxldCBjcmVhdGUgY2F0IGUgPSBtayAwIGNhdCBbRS5URXhwIChNYXJrcy5lbXB0eSwgZSldXG5cbiAgbGV0IGVxdWFsIHggeSA9XG4gICAgKHguaGFzaCA6IGludCkgPSB5Lmhhc2ggJiYgKHguaWR4IDogaW50KSA9IHkuaWR4ICYmXG4gICAgQ2F0ZWdvcnkuZXF1YWwgeC5jYXRlZ29yeSB5LmNhdGVnb3J5ICYmIEUuZXF1YWwgeC5kZXNjIHkuZGVzY1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgbGV0IGMgPSBjb21wYXJlICh4Lmhhc2ggOiBpbnQpIHkuaGFzaCBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgbGV0IGMgPSBDYXRlZ29yeS5jb21wYXJlIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgIGNvbXBhcmUgeC5kZXNjIHkuZGVzY1xuXG4gIHR5cGUgdCcgPSB0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHQnXG4gICAgICBsZXQgZXF1YWwgPSBlcXVhbFxuICAgICAgbGV0IGhhc2ggdCA9IHQuaGFzaFxuICAgIGVuZClcbmVuZFxuXG4oKioqKiBGaW5kIGEgZnJlZSBpbmRleCAqKioqKVxuXG50eXBlIHdvcmtpbmdfYXJlYSA9IGJvb2wgYXJyYXkgcmVmXG5cbmxldCBjcmVhdGVfd29ya2luZ19hcmVhICgpID0gcmVmIFt8IGZhbHNlIHxdXG5cbmxldCBpbmRleF9jb3VudCB3ID0gQXJyYXkubGVuZ3RoICF3XG5cbmxldCByZXNldF90YWJsZSBhID0gQXJyYXkuZmlsbCBhIDAgKEFycmF5Lmxlbmd0aCBhKSBmYWxzZVxuXG5sZXQgcmVjIG1hcmtfdXNlZF9pbmRpY2VzIHRibCA9XG4gIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgIHwgRS5UU2VxIChsLCBfLCBfKSAtPiBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbFxuICAgICAgfCBFLlRFeHAgKG1hcmtzLCBfKVxuICAgICAgfCBFLlRNYXRjaCBtYXJrcyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoXywgaSkgLT4gaWYgaSA+PSAwIHRoZW4gdGJsLihpKSA8LSB0cnVlKVxuICAgICAgICAgIG1hcmtzLk1hcmtzLm1hcmtzKVxuXG5sZXQgcmVjIGZpbmRfZnJlZSB0YmwgaWR4IGxlbiA9XG4gIGlmIGlkeCA9IGxlbiB8fCBub3QgdGJsLihpZHgpIHRoZW4gaWR4IGVsc2UgZmluZF9mcmVlIHRibCAoaWR4ICsgMSkgbGVuXG5cbmxldCBmcmVlX2luZGV4IHRibF9yZWYgbCA9XG4gIGxldCB0YmwgPSAhdGJsX3JlZiBpblxuICByZXNldF90YWJsZSB0Ymw7XG4gIG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsO1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHRibCBpblxuICBsZXQgaWR4ID0gZmluZF9mcmVlIHRibCAwIGxlbiBpblxuICBpZiBpZHggPSBsZW4gdGhlbiB0YmxfcmVmIDo9IEFycmF5Lm1ha2UgKDIgKiBsZW4pIGZhbHNlO1xuICBpZHhcblxuKCoqKiogQ29tcHV0YXRpb24gb2YgdGhlIG5leHQgc3RhdGUgKioqKilcblxubGV0IHJlbW92ZV9tYXRjaGVzID0gTGlzdC5maWx0ZXIgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpXG5cbmxldCByZWMgc3BsaXRfYXRfbWF0Y2hfcmVjIGwnID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEUuVE1hdGNoIF8gOjogciAtPiAoTGlzdC5yZXYgbCcsIHJlbW92ZV9tYXRjaGVzIHIpXG4gIHwgeCA6OiByICAgICAgICAtPiBzcGxpdF9hdF9tYXRjaF9yZWMgKHggOjogbCcpIHJcblxubGV0IHNwbGl0X2F0X21hdGNoIGwgPSBzcGxpdF9hdF9tYXRjaF9yZWMgW10gbFxuXG5sZXQgcmVjIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCB5ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT5cbiAgICAoW10sIHByZXYpXG4gIHwgRS5UTWF0Y2ggXyBhcyB4IDo6IF8gLT4gKCogVHJ1bmNhdGUgYWZ0ZXIgZmlyc3QgbWF0Y2ggKilcbiAgICAoW3hdLCBwcmV2KVxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBsZXQgKGwnJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsJyB4IGluXG4gICAgbGV0IChyJywgcHJldicnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYnIHIgeSBpblxuICAgIChFLnRzZXEga2luZCBsJycgeCByJywgcHJldicnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB7ZGVmID0gRXBzOyBffSkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHkuaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh5LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB4KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeC5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHguaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG5cbmxldCByZWMgc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBFLlRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgRS5UTWF0Y2ggKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIEUuVFNlcSAoc2V0X2lkeCBpZHggbCcsIHgsIGtpbmQpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRFeHAgKG1hcmtzLCB4KSA6OiByIC0+XG4gICAgRS5URXhwICgoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpLCB4KSA6OiBzZXRfaWR4IGlkeCByXG5cbmxldCBmaWx0ZXJfbWFya3MgYiBlIG1hcmtzID1cbiAge21hcmtzIHdpdGggTWFya3MubWFya3MgPSBMaXN0LmZpbHRlciAoZnVuIChpLCBfKSAtPiBpIDwgYiB8fCBpID4gZSkgbWFya3MuTWFya3MubWFya3MgfVxuXG5sZXQgcmVjIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgKCpGb3JtYXQuZXByaW50ZiBcIiVkQC5cIiB4LmlkOyopXG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgcyAtPlxuICAgIGlmIENzZXQubWVtIGMgcyB0aGVuIEUudGV4cCBtYXJrcyBlcHNfZXhwciA6OiByZW0gZWxzZSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBsZXQgKHknJywgbWFya3MnKSA9XG4gICAgICBtYXRjaFxuICAgICAgICBmaXJzdFxuICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5J1xuICAgICAgd2l0aFxuICAgICAgICBOb25lICAgICAgICAtPiAoeScsIG1hcmtzKVxuICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeScsIG1hcmtzJylcbiAgICBpblxuICAgIGJlZ2luIG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeScnIHggKEUuVE1hdGNoIG1hcmtzJyA6OiByZW0pXG4gICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHknJyB4IHJlbVxuICAgIGVuZFxuICB8IEVwcyAtPlxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBQbWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLnBtYXJrcyA9IFBtYXJrLlNldC5hZGQgaSBtYXJrcy5NYXJrcy5wbWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIEUuVE1hdGNoIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKSA6OiByZW1cbiAgfCBCZWZvcmUgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgbmV4dF9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cbiAgfCBBZnRlciBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBwcmV2X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5hbmQgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHkgeiByZW0gPVxuICBtYXRjaFxuICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5XG4gIHdpdGhcbiAgICBOb25lIC0+XG4gICAgRS50c2VxIGtpbmQgeSB6IHJlbVxuICB8IFNvbWUgbWFya3MgLT5cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIGBMb25nZXN0IC0+XG4gICAgICBFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiByZW0pXG4gICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHpcbiAgICAgICAgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IHJlbSlcbiAgICB8IGBGaXJzdCAtPlxuICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgIEUudHNlcSBraW5kIHknIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogKEUudHNlcSBraW5kIHknJyB6IHJlbSkpXG5cbmxldCByZWMgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgeCA6OiByZW1cblxuYW5kIGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxubGV0IGRlbHRhIHRibF9yZWYgbmV4dF9jYXQgY2hhciBzdCA9XG4gIGxldCBwcmV2X2NhdCA9IHN0LlN0YXRlLmNhdGVnb3J5IGluXG4gIGxldCAoZXhwcicsIF8pID1cbiAgICByZW1vdmVfZHVwbGljYXRlcyBbXVxuICAgICAgKGRlbHRhXzQgY2hhciB+bmV4dF9jYXQgfnByZXZfY2F0IHN0LlN0YXRlLmRlc2MgW10pXG4gICAgICBlcHNfZXhwciBpblxuICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICBTdGF0ZS5tayBpZHggbmV4dF9jYXQgZXhwcicnXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlZF90ciA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbX10gYXMgbCAtPlxuICAgIGxcbiAgfCAoKHMxLCBzdDEpIGFzIHRyMSkgOjogKChzMiwgc3QyKSBhcyB0cjIpIDo6IHJlbSAtPlxuICAgIGlmIFN0YXRlLmVxdWFsIHN0MSBzdDIgdGhlblxuICAgICAgcmVkX3RyICgoQ3NldC51bmlvbiBzMSBzMiwgc3QxKSA6OiByZW0pXG4gICAgZWxzZVxuICAgICAgdHIxIDo6IHJlZF90ciAodHIyIDo6IHJlbSlcblxubGV0IHNpbXBsX3RyIGwgPVxuICBMaXN0LnNvcnRcbiAgICAoZnVuIChzMSwgXykgKHMyLCBfKSAtPiBjb21wYXJlIHMxIHMyKVxuICAgIChyZWRfdHIgKExpc3Quc29ydCAoZnVuIChfLCBzdDEpIChfLCBzdDIpIC0+IFN0YXRlLmNvbXBhcmUgc3QxIHN0MikgbCkpXG5cbigqKioqKVxuXG5sZXQgcHJlcGVuZF9kZXJpdiA9IExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCB4KSBsIC0+IENzZXQucHJlcGVuZCBzIHggbClcblxubGV0IHJlYyByZXN0cmljdCBzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChzJywgeCcpIDo6IHJlbSAtPlxuICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgIHRoZW4gcmVzdHJpY3QgcyByZW1cbiAgICBlbHNlIChzJycsIHgnKSA6OiByZXN0cmljdCBzIHJlbVxuXG5sZXQgcmVjIHJlbW92ZV9tYXJrcyBiIGUgcmVtID1cbiAgaWYgYiA+IGUgdGhlbiByZW0gZWxzZSByZW1vdmVfbWFya3MgYiAoZSAtIDEpICgoZSwgLTIpIDo6IHJlbSlcblxubGV0IHJlYyBwcmVwZW5kX21hcmtzX2V4cHIgbSA9IGZ1bmN0aW9uXG4gIHwgRS5UU2VxIChsLCBlJywgcykgLT4gRS5UU2VxIChwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCwgZScsIHMpXG4gIHwgRS5URXhwIChtJywgZScpICAgLT4gRS5URXhwIChNYXJrcy5tZXJnZSBtIG0nLCBlJylcbiAgfCBFLlRNYXRjaCBtJyAgICAgICAtPiBFLlRNYXRjaCAoTWFya3MubWVyZ2UgbSBtJylcblxuYW5kIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsID1cbiAgTGlzdC5tYXAgKHByZXBlbmRfbWFya3NfZXhwciBtKSBsXG5cbmxldCBwcmVwZW5kX21hcmtzIG0gPVxuICBMaXN0Lm1hcCAoZnVuIChzLCB4KSAtPiAocywgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIHgpKVxuXG5sZXQgcmVjIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHggcmVtID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICB8IENzdCBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIHMgW0UudGV4cCBtYXJrcyBlcHNfZXhwcl0gcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB6KSByZW0gLT5cbiAgICAgICAgIGxldCAoeicsIG1hcmtzJykgPVxuICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgIGZpcnN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICAgIHpcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIE5vbmUgICAgICAgIC0+ICh6LCBtYXJrcylcbiAgICAgICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeiwgbWFya3MnKVxuICAgICAgICAgaW5cbiAgICAgICAgIENzZXQucHJlcGVuZCBzXG4gICAgICAgICAgIChtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHonIHggW0UuVE1hdGNoIG1hcmtzJ11cbiAgICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeicgeCBbXSlcbiAgICAgICAgICAgcmVtKVxuICAgICAgeScgcmVtXG4gIHwgRXBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IFBtYXJrIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFyc1xuICAgICAgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKHJlbW92ZV9tYXJrcyBiIGUgKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IEJlZm9yZSBjYXQnIC0+XG4gICAgQ3NldC5wcmVwZW5kIChMaXN0LmFzc3EgY2F0JyBjYXRlZ29yaWVzKSBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEFmdGVyIGNhdCcgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgY2F0IGNhdCcgdGhlbiBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtIGVsc2UgcmVtXG5cbmFuZCBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCByIHJlbSlcblxuYW5kIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5IHogcmVtID1cbiAgaWZcbiAgICBMaXN0LmV4aXN0c1xuICAgICAgKGZ1biAoX3MsIHhsKSAtPlxuICAgICAgICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIHhsKVxuICAgICAgeVxuICB0aGVuXG4gICAgbGV0IHonID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBNYXJrcy5lbXB0eSBjYXQgeiBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeSkgcmVtIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICB5XG4gICAgICAgICB3aXRoXG4gICAgICAgICAgIE5vbmUgLT5cbiAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHkgeiBbXSkgcmVtXG4gICAgICAgICB8IFNvbWUgbWFya3MgLT5cbiAgICAgICAgICAgbGV0IHonJyA9IHByZXBlbmRfbWFya3MgbWFya3MgeicgaW5cbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgYExvbmdlc3QgLT5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSByZW0pXG4gICAgICAgICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgcmVtKVxuICAgICAgICAgICB8IGBGaXJzdCAtPlxuICAgICAgICAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JycgeiBbXSkgcmVtKSkpXG4gICAgICB5IHJlbVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB4bCkgcmVtIC0+IENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB4bCB6IFtdKSByZW0pIHkgcmVtXG5cbmxldCByZWMgZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbeF0gcmVtXG5cbmFuZCBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCByIHJlbSlcblxubGV0IGRlcml2IHRibF9yZWYgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QgPVxuICBsZXQgZGVyID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdC5TdGF0ZS5jYXRlZ29yeSBzdC5TdGF0ZS5kZXNjXG4gICAgICBbKGFsbF9jaGFycywgW10pXSBpblxuICBzaW1wbF90ciAoXG4gICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIGV4cHIpIHJlbSAtPlxuICAgICAgICBsZXQgKGV4cHInLCBfKSA9IHJlbW92ZV9kdXBsaWNhdGVzIFtdIGV4cHIgZXBzX2V4cHIgaW5cbigqXG5Gb3JtYXQuZXByaW50ZiBcIkBbPDM+QFslYUBdOiAlYSAvICVhQF1ALlwiIENzZXQucHJpbnQgcyBwcmludF9zdGF0ZSBleHByIHByaW50X3N0YXRlIGV4cHInO1xuKilcbiAgICAgICAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICAgICAgICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKGNhdCcsIHMnKSByZW0gLT5cbiAgICAgICAgICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICAgICAgICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgICAgICAgICB0aGVuIHJlbVxuICAgICAgICAgICAgZWxzZSAocycnLCBTdGF0ZS5tayBpZHggY2F0JyBleHByJycpIDo6IHJlbSlcbiAgICAgICAgICBjYXRlZ29yaWVzIHJlbSkgZGVyIFtdKVxuXG4oKioqKilcblxubGV0IGZsYXR0ZW5fbWF0Y2ggbSA9XG4gIGxldCBtYSA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbWEgKGksIF8pIC0+IG1heCBtYSBpKSAoLTEpIG0gaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG1hICsgMSkgKC0xKSBpblxuICBMaXN0Lml0ZXIgKGZ1biAoaSwgdikgLT4gcmVzLihpKSA8LSB2KSBtO1xuICByZXNcblxubGV0IHN0YXR1cyBzID1cbiAgbWF0Y2ggcy5TdGF0ZS5zdGF0dXMgd2l0aFxuICAgIFNvbWUgc3QgLT5cbiAgICBzdFxuICB8IE5vbmUgLT5cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggcy5TdGF0ZS5kZXNjIHdpdGhcbiAgICAgICAgW10gICAgICAgICAgICAgIC0+IEZhaWxlZFxuICAgICAgfCBFLlRNYXRjaCBtIDo6IF8gLT4gTWF0Y2ggKGZsYXR0ZW5fbWF0Y2ggbS5NYXJrcy5tYXJrcywgbS5NYXJrcy5wbWFya3MpXG4gICAgICB8IF8gICAgICAgICAgICAgICAtPiBSdW5uaW5nXG4gICAgaW5cbiAgICBzLlN0YXRlLnN0YXR1cyA8LSBTb21lIHN0O1xuICAgIHN0XG4iLCIoKiBJbiByZWFsaXR5LCB0aGlzIGNhbiByZWFsbHkgYmUgcmVwcmVzZW50ZWQgYXMgYSBib29sIGFycmF5LlxuXG4gICBUaGUgcmVwcmVzZW50YXRpb24gaXMgYmVzdCB0aG91Z2h0IG9mIGFzIGEgbGlzdCBvZiBhbGwgY2hhcnMgYWxvbmcgd2l0aCBhXG4gICBmbGFnOlxuXG4gICAoYSwgMCksIChiLCAxKSwgKGMsIDApLCAoZCwgMCksIC4uLlxuXG4gICBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBjb2xvciBhcmUgcmVwcmVzZW50ZWQgYnkgc2VxdW5jZXMgb2ZcbiAgIGNoYXJhY3RlcnMgd2l0aCB0aGUgZmxhZyBzZXQgdG8gMC5cbiopXG5cbnR5cGUgdCA9IEJ5dGVzLnRcblxubGV0IG1ha2UgKCkgPSBCeXRlcy5tYWtlIDI1NyAnXFwwMDAnXG5cbmxldCBmbGF0dGVuIGNtID1cbiAgbGV0IGMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCBjb2xvcl9yZXByID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgdiA9IHJlZiAwIGluXG4gIEJ5dGVzLnNldCBjIDAgJ1xcMDAwJztcbiAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgMCAnXFwwMDAnO1xuICBmb3IgaSA9IDEgdG8gMjU1IGRvXG4gICAgaWYgQnl0ZXMuZ2V0IGNtIGkgPD4gJ1xcMDAwJyB0aGVuIGluY3IgdjtcbiAgICBCeXRlcy5zZXQgYyBpIChDaGFyLmNociAhdik7XG4gICAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgIXYgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGMsIEJ5dGVzLnN1Yl9zdHJpbmcgY29sb3JfcmVwciAwICghdiArIDEpLCAhdiArIDEpXG5cbigqIG1hcmsgYWxsIHRoZSBlbmRwb2ludHMgb2YgdGhlIGludGVydmFscyBvZiB0aGUgY2hhciBzZXQgd2l0aCB0aGUgMSBieXRlICopXG5sZXQgc3BsaXQgcyBjbSA9XG4gIENzZXQuaXRlciBzIH5mOihmdW4gaSBqIC0+XG4gICAgICBCeXRlcy5zZXQgY20gaSAnXFwwMDEnO1xuICAgICAgQnl0ZXMuc2V0IGNtIChqICsgMSkgJ1xcMDAxJztcbiAgICApXG4iLCIoKiBSZXN1bHQgb2YgYSBzdWNjZXNzZnVsIG1hdGNoLiAqKVxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbWFya3MgOiBBdXRvbWF0YS5tYXJrX2luZm9zXG4gIDsgcG1hcmtzIDogUG1hcmsuU2V0LnRcbiAgOyBncG9zIDogaW50IGFycmF5XG4gIDsgZ2NvdW50IDogaW50XG4gIH1cblxubGV0IG9mZnNldCB0IGkgPVxuICBpZiAyICogaSArIDEgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICBpZiBtMSA9IC0xIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gIChwMSwgcDIpXG5cbmxldCBnZXQgdCBpID1cbiAgbGV0IChwMSwgcDIpID0gb2Zmc2V0IHQgaSBpblxuICBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcblxubGV0IHN0YXJ0IHN1YnMgaSA9IGZzdCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHN0b3Agc3VicyBpID0gc25kIChvZmZzZXQgc3VicyBpKVxuXG5sZXQgdGVzdCB0IGkgPVxuICBpZiAyICogaSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuXG4gICAgZmFsc2VcbiAgZWxzZVxuICAgIGxldCBpZHggPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZHggPD4gLTFcblxubGV0IGdldF9vcHQgdCBpID1cbiAgaWYgdGVzdCB0IGlcbiAgdGhlbiBTb21lIChnZXQgdCBpKVxuICBlbHNlIE5vbmVcblxubGV0IGR1bW15X29mZnNldCA9ICgtMSwgLTEpXG5cbmxldCBhbGxfb2Zmc2V0IHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9vZmZzZXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSAocDEsIHAyKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IGR1bW15X3N0cmluZyA9IFwiXCJcblxubGV0IGFsbCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfc3RyaW5nIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgcHAgZm10IHQgPVxuICBsZXQgbWF0Y2hlcyA9XG4gICAgbGV0IG9mZnNldHMgPSBhbGxfb2Zmc2V0IHQgaW5cbiAgICBsZXQgc3RycyA9IGFsbCB0IGluXG4gICAgQXJyYXkudG9fbGlzdCAoXG4gICAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggc3RycykgKGZ1biBpIC0+IHN0cnMuKGkpLCBvZmZzZXRzLihpKSlcbiAgICApIGluXG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgcHBfbWF0Y2ggZm10IChzdHIsIChzdGFydCwgc3RvcCkpID1cbiAgICBmcHJpbnRmIGZtdCBcIkBbKCVzICglZCAlZCkpQF1cIiBzdHIgc3RhcnQgc3RvcCBpblxuICBzZXhwIGZtdCBcIkdyb3VwXCIgKGxpc3QgcHBfbWF0Y2gpIG1hdGNoZXNcblxubGV0IG5iX2dyb3VwcyB0ID0gdC5nY291bnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbmxldCByZWMgaXRlciBuIGYgdiA9IGlmIG4gPSAwIHRoZW4gdiBlbHNlIGl0ZXIgKG4gLSAxKSBmIChmIHYpXG5cbigqKioqKVxuXG5sZXQgdW5rbm93biA9IC0yXG5sZXQgYnJlYWsgPSAtM1xuXG50eXBlIG1hdGNoX2luZm8gPVxuICB8IE1hdGNoIG9mIEdyb3VwLnRcbiAgfCBGYWlsZWRcbiAgfCBSdW5uaW5nIG9mIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA6IGludCB9XG5cbnR5cGUgc3RhdGUgPVxuICB7IGlkeCA6IGludDtcbiAgICAoKiBJbmRleCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgcG9zaXRpb24gdGFibGUuXG4gICAgICAgTm90IHlldCBjb21wdXRlZCB0cmFuc2l0aW9ucyBwb2ludCB0byBhIGR1bW15IHN0YXRlIHdoZXJlXG4gICAgICAgW2lkeF0gaXMgc2V0IHRvIFt1bmtub3duXTtcbiAgICAgICBJZiBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSBmb3Igc3RhdGVzIHRoYXQgZWl0aGVyIGFsd2F5c1xuICAgICAgIHN1Y2NlZWQgb3IgYWx3YXlzIGZhaWwuICopXG4gICAgcmVhbF9pZHggOiBpbnQ7XG4gICAgKCogVGhlIHJlYWwgaW5kZXgsIGluIGNhc2UgW2lkeF0gaXMgc2V0IHRvIFticmVha10gKilcbiAgICBuZXh0IDogc3RhdGUgYXJyYXk7XG4gICAgKCogVHJhbnNpdGlvbiB0YWJsZSwgaW5kZXhlZCBieSBjb2xvciAqKVxuICAgIG11dGFibGUgZmluYWwgOlxuICAgICAgKENhdGVnb3J5LnQgKlxuICAgICAgIChBdXRvbWF0YS5pZHggKiBBdXRvbWF0YS5zdGF0dXMpKSBsaXN0O1xuICAgICgqIE1hcHBpbmcgZnJvbSB0aGUgY2F0ZWdvcnkgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvXG4gICAgICAgLSB0aGUgaW5kZXggd2hlcmUgdGhlIG5leHQgcG9zaXRpb24gc2hvdWxkIGJlIHNhdmVkXG4gICAgICAgLSBwb3NzaWJseSwgdGhlIGxpc3Qgb2YgbWFya3MgKGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbmRpY2VzKVxuICAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgYmVzdCBtYXRjaCAqKVxuICAgIGRlc2MgOiBBdXRvbWF0YS5TdGF0ZS50XG4gICAgKCogRGVzY3JpcHRpb24gb2YgdGhpcyBzdGF0ZSBvZiB0aGUgYXV0b21hdGEgKikgfVxuXG4oKiBBdXRvbWF0YSAoY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uKSAqKVxudHlwZSByZSA9XG4gIHsgaW5pdGlhbCA6IEF1dG9tYXRhLmV4cHI7XG4gICAgKCogVGhlIHdob2xlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zdGF0ZXMgOiAoQ2F0ZWdvcnkudCAqIHN0YXRlKSBsaXN0O1xuICAgICgqIEluaXRpYWwgc3RhdGVzLCBpbmRleGVkIGJ5IGluaXRpYWwgY2F0ZWdvcnkgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKilcbiAgICBjb2xvcl9yZXByIDogc3RyaW5nO1xuICAgICgqIFRhYmxlIGZyb20gY29sb3JzIHRvIG9uZSBjaGFyYWN0ZXIgb2YgdGhpcyBjb2xvciAqKVxuICAgIG5jb2xvciA6IGludDtcbiAgICAoKiBOdW1iZXIgb2YgY29sb3JzLiAqKVxuICAgIGxubCA6IGludDtcbiAgICAoKiBDb2xvciBvZiB0aGUgbGFzdCBuZXdsaW5lLiAtMSBpZiB1bm5lY2Vzc2FyeSAqKVxuICAgIHRibCA6IEF1dG9tYXRhLndvcmtpbmdfYXJlYTtcbiAgICAoKiBUZW1wb3JhcnkgdGFibGUgdXNlZCB0byBjb21wdXRlIHRoZSBmaXJzdCBhdmFpbGFibGUgaW5kZXhcbiAgICAgICB3aGVuIGNvbXB1dGluZyBhIG5ldyBzdGF0ZSAqKVxuICAgIHN0YXRlcyA6IHN0YXRlIEF1dG9tYXRhLlN0YXRlLlRhYmxlLnQ7XG4gICAgKCogU3RhdGVzIG9mIHRoZSBkZXRlcm1pbmlzdGljIGF1dG9tYXRhICopXG4gICAgZ3JvdXBfbmFtZXMgOiAoc3RyaW5nICogaW50KSBsaXN0O1xuICAgICgqIE5hbWVkIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgZ3JvdXBfY291bnQgOiBpbnRcbiAgICAoKiBOdW1iZXIgb2YgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKikgfVxuXG5sZXQgcHBfcmUgY2ggcmUgPSBBdXRvbWF0YS5wcCBjaCByZS5pbml0aWFsXG5cbmxldCBwcmludF9yZSA9IHBwX3JlXG5cbmxldCBncm91cF9jb3VudCByZSA9IHJlLmdyb3VwX2NvdW50XG5cbmxldCBncm91cF9uYW1lcyByZSA9IHJlLmdyb3VwX25hbWVzXG5cbigqIEluZm9ybWF0aW9uIHVzZWQgZHVyaW5nIG1hdGNoaW5nICopXG50eXBlIGluZm8gPVxuICB7IHJlIDogcmU7XG4gICAgKCogVGhlIGF1dG9tYXRhICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlIChbeC5jb2xvcnMgPSB4LnJlLmNvbG9yc10pXG4gICAgICAgU2hvcnRjdXQgdXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIG11dGFibGUgcG9zaXRpb25zIDogaW50IGFycmF5O1xuICAgICgqIEFycmF5IG9mIG1hcmsgcG9zaXRpb25zXG4gICAgICAgVGhlIG1hcmsgYXJlIG9mZiBieSBvbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBwb3MgOiBpbnQ7XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIGlzIHN0YXJ0ZWQgKilcbiAgICBsYXN0IDogaW50XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIHNob3VsZCBzdG9wICopIH1cblxuXG4oKioqKilcblxubGV0IGNhdGVnb3J5IHJlIH5jb2xvciA9XG4gIGlmIGNvbG9yID0gLTEgdGhlblxuICAgIENhdGVnb3J5LmluZXhpc3RhbnRcbiAgICAoKiBTcGVjaWFsIGNhdGVnb3J5IGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gIGVsc2UgaWYgY29sb3IgPSByZS5sbmwgdGhlblxuICAgIENhdGVnb3J5LihsYXN0bmV3bGluZSArKyBuZXdsaW5lICsrIG5vdF9sZXR0ZXIpXG4gIGVsc2VcbiAgICBDYXRlZ29yeS5mcm9tX2NoYXIgKHJlLmNvbG9yX3JlcHIuW2NvbG9yXSlcblxuKCoqKiopXG5cbmxldCBkdW1teV9uZXh0ID0gW3x8XVxuXG5sZXQgdW5rbm93bl9zdGF0ZSA9XG4gIHsgaWR4ID0gdW5rbm93bjsgcmVhbF9pZHggPSAwO1xuICAgIG5leHQgPSBkdW1teV9uZXh0OyBmaW5hbCA9IFtdO1xuICAgIGRlc2MgPSBBdXRvbWF0YS5TdGF0ZS5kdW1teSB9XG5cbmxldCBta19zdGF0ZSBuY29sIGRlc2MgPVxuICBsZXQgYnJlYWtfc3RhdGUgPVxuICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBkZXNjIHdpdGhcbiAgICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT4gZmFsc2VcbiAgICB8IEF1dG9tYXRhLkZhaWxlZFxuICAgIHwgQXV0b21hdGEuTWF0Y2ggXyAtPiB0cnVlXG4gIGluXG4gIHsgaWR4ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBicmVhayBlbHNlIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIHJlYWxfaWR4ID0gZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgbmV4dCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gZHVtbXlfbmV4dCBlbHNlIEFycmF5Lm1ha2UgbmNvbCB1bmtub3duX3N0YXRlO1xuICAgIGZpbmFsID0gW107XG4gICAgZGVzYyB9XG5cbmxldCBmaW5kX3N0YXRlIHJlIGRlc2MgPVxuICB0cnlcbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5maW5kIHJlLnN0YXRlcyBkZXNjXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gbWtfc3RhdGUgcmUubmNvbG9yIGRlc2MgaW5cbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5hZGQgcmUuc3RhdGVzIGRlc2Mgc3Q7XG4gICAgc3RcblxuKCoqKiogTWF0Y2ggd2l0aCBtYXJrcyAqKioqKVxuXG5sZXQgZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0ID1cbiAgbGV0IGRlc2MgPSBBdXRvbWF0YS5kZWx0YSBpbmZvLnJlLnRibCBjYXQgY29sb3Igc3QuZGVzYyBpblxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGluZm8ucG9zaXRpb25zIGluXG4gIGlmIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4ID0gbGVuICYmIGxlbiA+IDAgdGhlbiBiZWdpblxuICAgIGxldCBwb3MgPSBpbmZvLnBvc2l0aW9ucyBpblxuICAgIGluZm8ucG9zaXRpb25zIDwtIEFycmF5Lm1ha2UgKDIgKiBsZW4pIDA7XG4gICAgQXJyYXkuYmxpdCBwb3MgMCBpbmZvLnBvc2l0aW9ucyAwIGxlblxuICBlbmQ7XG4gIGRlc2NcblxubGV0IHZhbGlkYXRlIGluZm8gKHM6c3RyaW5nKSB+cG9zIHN0ID1cbiAgbGV0IGNvbG9yID0gQ2hhci5jb2RlIChpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0IGluXG4gIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgc3QubmV4dC4oY29sb3IpIDwtIHN0J1xuXG5sZXQgcmVjIGxvb3AgaW5mbyBzIH5wb3Mgc3QgPVxuICBpZiBwb3MgPCBpbmZvLmxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBsZXQgaWR4ID0gc3QnLmlkeCBpblxuICAgIGlmIGlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihpZHgpIDwtIHBvcztcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3M6KHBvcyArIDEpIHN0J1xuICAgIGVuZCBlbHNlIGlmIGlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICAgIHN0J1xuICAgIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcCBpbmZvIHMgfnBvcyBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IHJlYyBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3QgPVxuICBpZiBwb3MgPCBsYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgaWYgc3QnLmlkeCA+PSAwIHRoZW5cbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvczoocG9zICsgMSkgfmxhc3Qgc3QnXG4gICAgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3QnXG4gICAgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IGZpbmFsIGluZm8gc3QgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCBzdC5maW5hbFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCcgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6KC0xKSBzdCBpblxuICAgIGxldCByZXMgPSAoc3QnLkF1dG9tYXRhLlN0YXRlLmlkeCwgQXV0b21hdGEuc3RhdHVzIHN0JykgaW5cbiAgICBzdC5maW5hbCA8LSAoY2F0LCByZXMpIDo6IHN0LmZpbmFsO1xuICAgIHJlc1xuXG5sZXQgZmluZF9pbml0aWFsX3N0YXRlIHJlIGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgcmUuaW5pdGlhbF9zdGF0ZXNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBmaW5kX3N0YXRlIHJlIChBdXRvbWF0YS5TdGF0ZS5jcmVhdGUgY2F0IHJlLmluaXRpYWwpIGluXG4gICAgcmUuaW5pdGlhbF9zdGF0ZXMgPC0gKGNhdCwgc3QpIDo6IHJlLmluaXRpYWxfc3RhdGVzO1xuICAgIHN0XG5cbmxldCBnZXRfY29sb3IgcmUgKHM6c3RyaW5nKSBwb3MgPVxuICBpZiBwb3MgPCAwIHRoZW5cbiAgICAtMVxuICBlbHNlXG4gICAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBpZiBwb3MgPj0gc2xlbiB0aGVuXG4gICAgICAtMVxuICAgIGVsc2UgaWYgcG9zID0gc2xlbiAtIDEgJiYgcmUubG5sIDw+IC0xICYmIHMuW3Bvc10gPSAnXFxuJyB0aGVuXG4gICAgICAoKiBTcGVjaWFsIGNhc2UgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgICAgIHJlLmxubFxuICAgIGVsc2VcbiAgICAgIENoYXIuY29kZSByZS5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXVxuXG5sZXQgcmVjIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHMgPVxuICBsZXQgc3QnID0gc3QubmV4dC4oaW5mby5yZS5sbmwpIGluXG4gIGlmIHN0Jy5pZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICBsZXQgY29sb3IgPSBpbmZvLnJlLmxubCBpblxuICAgIGxldCByZWFsX2MgPSBDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSAnXFxuJ10gaW5cbiAgICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6cmVhbF9jIHN0IGluXG4gICAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICAgIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCc7XG4gICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3Vwc1xuICBlbmRcblxubGV0IHJlYyBzY2FuX3N0ciBpbmZvIChzOnN0cmluZykgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzID1cbiAgbGV0IHBvcyA9IGluZm8ucG9zIGluXG4gIGxldCBsYXN0ID0gaW5mby5sYXN0IGluXG4gIGlmIChsYXN0ID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAmJiBpbmZvLnJlLmxubCA8PiAtMVxuICAgICAgJiYgbGFzdCA+IHBvc1xuICAgICAgJiYgU3RyaW5nLmdldCBzIChsYXN0IC0gMSkgPSAnXFxuJylcbiAgdGhlbiBiZWdpblxuICAgIGxldCBpbmZvID0geyBpbmZvIHdpdGggbGFzdCA9IGxhc3QgLSAxIH0gaW5cbiAgICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3RcbiAgICBlbHNlXG4gICAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvczoobGFzdCAtIDEpIHN0IH5ncm91cHNcbiAgZW5kIGVsc2UgaWYgZ3JvdXBzIHRoZW5cbiAgICBsb29wIGluZm8gcyB+cG9zIGluaXRpYWxfc3RhdGVcbiAgZWxzZVxuICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBpbml0aWFsX3N0YXRlXG5cbigqIFRoaXMgZnVuY3Rpb24gYWRkcyBhIGZpbmFsIGJvdW5kYXJ5IGNoZWNrIG9uIHRoZSBpbnB1dC5cbiAgIFRoaXMgaXMgdXNlZnVsIHRvIGluZGljYXRlIHRoYXQgdGhlIG91dHB1dCBmYWlsZWQgYmVjYXVzZVxuICAgb2YgaW5zdWZmaWNpZW50IGlucHV0LCBvciB0byB2ZXJpZnkgdGhhdCB0aGUgb3V0cHV0IGFjdHVhbGx5XG4gICBtYXRjaGVzIGZvciByZWdleCB0aGF0IGhhdmUgYm91bmRhcnkgY29uZGl0aW9ucyB3aXRoIHJlc3BlY3RcbiAgIHRvIHRoZSBpbnB1dCBzdHJpbmcuXG4gKilcbmxldCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzID1cbiAgbGV0IGZpbmFsX2NhdCA9XG4gICAgaWYgbGFzdCA9IHNsZW4gdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyBsYXN0KSlcbiAgaW5cbiAgbGV0IChpZHgsIHJlcykgPSBmaW5hbCBpbmZvIHN0IGZpbmFsX2NhdCBpblxuICAobWF0Y2ggZ3JvdXBzLCByZXMgd2l0aFxuICB8IHRydWUsIE1hdGNoIF8gLT4gaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gbGFzdFxuICB8IF8gLT4gKCkpO1xuICByZXNcblxubGV0IG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxhc3QgPSBpZiBsZW4gPSAtMSB0aGVuIHNsZW4gZWxzZSBwb3MgKyBsZW4gaW5cbiAgbGV0IGluZm8gPVxuICAgIHsgcmUgOyBjb2xvcnMgPSByZS5jb2xvcnM7IHBvcyA7IGxhc3RcbiAgICA7IHBvc2l0aW9ucyA9XG4gICAgICAgIGlmIGdyb3VwcyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBBdXRvbWF0YS5pbmRleF9jb3VudCByZS50YmwgKyAxIGluXG4gICAgICAgICAgaWYgbiA8PSAxMCB0aGVuXG4gICAgICAgICAgICBbfDA7MDswOzA7MDswOzA7MDswOzB8XVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEFycmF5Lm1ha2UgbiAwXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgW3x8XSB9XG4gIGluXG4gIGxldCBpbml0aWFsX2NhdCA9XG4gICAgaWYgcG9zID0gMCB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeVxuICAgICAgICAgICAgICAgICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgKHBvcyAtIDEpKSlcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RhdGUgPSBmaW5kX2luaXRpYWxfc3RhdGUgcmUgaW5pdGlhbF9jYXQgaW5cbiAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICBsZXQgcmVzID1cbiAgICBpZiBzdC5pZHggPSBicmVhayB8fCAocGFydGlhbCAmJiBub3QgZ3JvdXBzKSB0aGVuXG4gICAgICBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzY1xuICAgIGVsc2UgaWYgcGFydGlhbCAmJiBncm91cHMgdGhlblxuICAgICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIHN0LmRlc2Mgd2l0aFxuICAgICAgfCBNYXRjaCBfIHwgRmFpbGVkIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgIHwgUnVubmluZyAtPlxuICAgICAgICAoKiBUaGlzIGNvdWxkIGJlIGJlY2F1c2UgaXQncyBzdGlsbCBub3QgZnVsbHkgbWF0Y2hlZCwgb3IgaXRcbiAgICAgICAgICAgY291bGQgYmUgdGhhdCBiZWNhdXNlIHdlIG5lZWQgdG8gcnVuIHNwZWNpYWwgZW5kIG9mIGlucHV0XG4gICAgICAgICAgIGNoZWNrcy4gKilcbiAgICAgICAgKG1hdGNoIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgd2l0aFxuICAgICAgICAgfCBNYXRjaCBfIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgICAgIHwgRmFpbGVkIHwgUnVubmluZyAtPlxuICAgICAgICAgICAoKiBBIGZhaWx1cmUgaGVyZSBqdXN0IG1lYW5zIHRoYXQgd2UgbmVlZCBtb3JlIGRhdGEsIGkuZS5cbiAgICAgICAgICAgICAgaXQncyBhIHBhcnRpYWwgbWF0Y2guICopXG4gICAgICAgICAgIFJ1bm5pbmcpXG4gICAgZWxzZSBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gICAgQXV0b21hdGEuTWF0Y2ggKG1hcmtzLCBwbWFya3MpIC0+XG4gICAgTWF0Y2ggeyBzIDsgbWFya3M7IHBtYXJrcyA7IGdwb3MgPSBpbmZvLnBvc2l0aW9uczsgZ2NvdW50ID0gcmUuZ3JvdXBfY291bnR9XG4gIHwgQXV0b21hdGEuRmFpbGVkIC0+IEZhaWxlZFxuICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT5cbiAgICBsZXQgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA9IGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLigwKSBlbHNlIDAgaW5cbiAgICBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9XG5cbmxldCBta19yZSB+aW5pdGlhbCB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXMgfmdyb3VwX2NvdW50ID1cbiAgeyBpbml0aWFsIDtcbiAgICBpbml0aWFsX3N0YXRlcyA9IFtdO1xuICAgIGNvbG9ycztcbiAgICBjb2xvcl9yZXByO1xuICAgIG5jb2xvcjtcbiAgICBsbmw7XG4gICAgdGJsID0gQXV0b21hdGEuY3JlYXRlX3dvcmtpbmdfYXJlYSAoKTtcbiAgICBzdGF0ZXMgPSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5jcmVhdGUgOTc7XG4gICAgZ3JvdXBfbmFtZXM7XG4gICAgZ3JvdXBfY291bnQgfVxuXG4oKioqKiBDaGFyYWN0ZXIgc2V0cyAqKioqKVxuXG5sZXQgY3NlcSBjIGMnID0gQ3NldC5zZXEgKENoYXIuY29kZSBjKSAoQ2hhci5jb2RlIGMnKVxubGV0IGNhZGQgYyBzID0gQ3NldC5hZGQgKENoYXIuY29kZSBjKSBzXG5cbmxldCB0cmFuc19zZXQgY2FjaGUgY20gcyA9XG4gIG1hdGNoIENzZXQub25lX2NoYXIgcyB3aXRoXG4gIHwgU29tZSBpIC0+IENzZXQuY3NpbmdsZSBjbS5baV1cbiAgfCBOb25lIC0+XG4gICAgbGV0IHYgPSAoQ3NldC5oYXNoX3JlYyBzLCBzKSBpblxuICAgIHRyeVxuICAgICAgQ3NldC5DU2V0TWFwLmZpbmQgdiAhY2FjaGVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IGwgPVxuICAgICAgICBDc2V0LmZvbGRfcmlnaHRcbiAgICAgICAgICBzXG4gICAgICAgICAgfmY6KGZ1biAoaSwgaikgbCAtPiBDc2V0LnVuaW9uIChjc2VxIGNtLltpXSBjbS5bal0pIGwpXG4gICAgICAgICAgfmluaXQ6Q3NldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIGNhY2hlIDo9IENzZXQuQ1NldE1hcC5hZGQgdiBsICFjYWNoZTtcbiAgICAgIGxcblxuKCoqKiopXG5cbnR5cGUgcmVnZXhwID1cbiAgICBTZXQgb2YgQ3NldC50XG4gIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbm1vZHVsZSBWaWV3ID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlZ2V4cCA9XG4gICAgICBTZXQgb2YgQ3NldC50XG4gICAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICAgIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICAgIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICAgIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICAgIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gICAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gICAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gICAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbiAgbGV0IHZpZXcgdCA9IHRcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCB0ID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCB2YXIgcyByZSA9IHNleHAgZm10IHMgcHAgcmUgaW5cbiAgbGV0IHNlcSBzIHJlbCA9IHNleHAgZm10IHMgKGxpc3QgcHApIHJlbCBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXQgcyAtPiAgc2V4cCBmbXQgXCJTZXRcIiBDc2V0LnBwIHNcbiAgfCBTZXF1ZW5jZSBzcSAtPiBzZXEgXCJTZXF1ZW5jZVwiIHNxXG4gIHwgQWx0ZXJuYXRpdmUgYWx0IC0+IHNlcSBcIkFsdGVybmF0aXZlXCIgYWx0XG4gIHwgUmVwZWF0IChyZSwgc3RhcnQsIHN0b3ApIC0+XG4gICAgbGV0IHBwJyBmbXQgKCkgPSBmcHJpbnRmIGZtdCBcIiVhQCAlZCVhXCIgcHAgcmUgICBzdGFydCAgIG9wdGludCBzdG9wIGluXG4gICAgc2V4cCBmbXQgXCJSZXBlYXRcIiBwcCcgKClcbiAgfCBCZWdfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2ZfbGluZVwiXG4gIHwgRW5kX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX2xpbmVcIlxuICB8IEJlZ19vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl93b3JkXCJcbiAgfCBFbmRfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfd29yZFwiXG4gIHwgTm90X2JvdW5kICAgICAgICAtPiBzdHIgZm10IFwiTm90X2JvdW5kXCJcbiAgfCBCZWdfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfc3RyXCJcbiAgfCBFbmRfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfc3RyXCJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+IHN0ciBmbXQgXCJMYXN0X2VuZF9vZl9saW5lXCJcbiAgfCBTdGFydCAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdGFydFwiXG4gIHwgU3RvcCAgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RvcFwiXG4gIHwgU2VtIChzZW0sIHJlKSAgICAtPlxuICAgIHNleHAgZm10IFwiU2VtXCIgKHBhaXIgQXV0b21hdGEucHBfc2VtIHBwKSAoc2VtLCByZSlcbiAgfCBTZW1fZ3JlZWR5IChrLCByZSkgLT5cbiAgICBzZXhwIGZtdCBcIlNlbV9ncmVlZHlcIiAocGFpciBBdXRvbWF0YS5wcF9yZXBfa2luZCBwcCkgKGssIHJlKVxuICB8IEdyb3VwIChOb25lLCBjKSAgIC0+IHZhciBcIkdyb3VwXCIgY1xuICB8IEdyb3VwIChTb21lIG4sIGMpIC0+IHNleHAgZm10IFwiTmFtZWRfZ3JvdXBcIiAocGFpciBzdHIgcHApIChuLCBjKVxuICB8IE5vX2dyb3VwIGMgICAgIC0+IHZhciBcIk5vX2dyb3VwXCIgY1xuICB8IE5lc3QgYyAgICAgICAgIC0+IHZhciBcIk5lc3RcIiBjXG4gIHwgQ2FzZSBjICAgICAgICAgLT4gdmFyIFwiQ2FzZVwiIGNcbiAgfCBOb19jYXNlIGMgICAgICAtPiB2YXIgXCJOb19jYXNlXCIgY1xuICB8IEludGVyc2VjdGlvbiBjIC0+IHNlcSBcIkludGVyc2VjdGlvblwiIGNcbiAgfCBDb21wbGVtZW50IGMgICAtPiBzZXEgXCJDb21wbGVtZW50XCIgY1xuICB8IERpZmZlcmVuY2UgKGEsIGIpIC0+IHNleHAgZm10IFwiRGlmZmVyZW5jZVwiIChwYWlyIHBwIHBwKSAoYSwgYilcbiAgfCBQbWFyayAobSwgcikgICAgICAtPiBzZXhwIGZtdCBcIlBtYXJrXCIgKHBhaXIgUG1hcmsucHAgcHApIChtLCByKVxuXG5sZXQgcmVjIGlzX2NoYXJzZXQgPSBmdW5jdGlvblxuICB8IFNldCBfIC0+XG4gICAgdHJ1ZVxuICB8IEFsdGVybmF0aXZlIGwgfCBJbnRlcnNlY3Rpb24gbCB8IENvbXBsZW1lbnQgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBpc19jaGFyc2V0IGxcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBpc19jaGFyc2V0IHIgJiYgaXNfY2hhcnNldCByJ1xuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKVxuICB8IE5vX2dyb3VwIHIgfCBDYXNlIHIgfCBOb19jYXNlIHIgLT5cbiAgICBpc19jaGFyc2V0IHJcbiAgfCBTZXF1ZW5jZSBfIHwgUmVwZWF0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTm90X2JvdW5kIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IEdyb3VwIF8gfCBOZXN0IF8gfCBQbWFyayAoXyxfKS0+XG4gICAgZmFsc2VcblxuKCpYWFggVXNlIGEgYmV0dGVyIGFsZ29yaXRobSBhbGxvd2luZyBub24tY29udGlndW91cyByZWdpb25zPyAqKVxuXG5sZXQgY3VwcGVyID1cbiAgQ3NldC51bmlvbiAoY3NlcSAnQScgJ1onKVxuICAgIChDc2V0LnVuaW9uIChjc2VxICdcXDE5MicgJ1xcMjE0JykgKGNzZXEgJ1xcMjE2JyAnXFwyMjInKSlcbmxldCBjbG93ZXIgPSBDc2V0Lm9mZnNldCAzMiBjdXBwZXJcbmxldCBjYWxwaGEgPVxuICBMaXN0LmZvbGRfcmlnaHQgY2FkZCBbJ1xcMTcwJzsgJ1xcMTgxJzsgJ1xcMTg2JzsgJ1xcMjIzJzsgJ1xcMjU1J11cbiAgICAoQ3NldC51bmlvbiBjbG93ZXIgY3VwcGVyKVxubGV0IGNkaWdpdCA9IGNzZXEgJzAnICc5J1xubGV0IGNhbG51bSA9IENzZXQudW5pb24gY2FscGhhIGNkaWdpdFxubGV0IGN3b3JkID0gY2FkZCAnXycgY2FsbnVtXG5cbmxldCBjb2xvcml6ZSBjIHJlZ2V4cCA9XG4gIGxldCBsbmwgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBjb2xvcml6ZSByZWdleHAgPVxuICAgIG1hdGNoIHJlZ2V4cCB3aXRoXG4gICAgICBTZXQgcyAgICAgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBzIGNcbiAgICB8IFNlcXVlbmNlIGwgICAgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IEFsdGVybmF0aXZlIGwgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IFJlcGVhdCAociwgXywgXykgICAgICAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSAtPiBDb2xvcl9tYXAuc3BsaXQgKENzZXQuY3NpbmdsZSAnXFxuJykgY1xuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgY3dvcmQgY1xuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IFN0YXJ0IHwgU3RvcCAgICAgICAgICAgICAgLT4gKClcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgICAgICAgICAgLT4gbG5sIDo9IHRydWVcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gICAgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHIgfCBQbWFyayAoXyxyKSAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQ2FzZSBfIHwgTm9fY2FzZSBfXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIF8gICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBjb2xvcml6ZSByZWdleHA7XG4gICFsbmxcblxuKCoqKiogQ29tcGlsYXRpb24gKioqKilcblxubGV0IHJlYyBlcXVhbCB4MSB4MiA9XG4gIG1hdGNoIHgxLCB4MiB3aXRoXG4gICAgU2V0IHMxLCBTZXQgczIgLT5cbiAgICBzMSA9IHMyXG4gIHwgU2VxdWVuY2UgbDEsIFNlcXVlbmNlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IEFsdGVybmF0aXZlIGwxLCBBbHRlcm5hdGl2ZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBSZXBlYXQgKHgxJywgaTEsIGoxKSwgUmVwZWF0ICh4MicsIGkyLCBqMikgLT5cbiAgICBpMSA9IGkyICYmIGoxID0gajIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEJlZ19vZl9saW5lLCBCZWdfb2ZfbGluZVxuICB8IEVuZF9vZl9saW5lLCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkLCBCZWdfb2Zfd29yZFxuICB8IEVuZF9vZl93b3JkLCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciwgQmVnX29mX3N0clxuICB8IEVuZF9vZl9zdHIsIEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lLCBMYXN0X2VuZF9vZl9saW5lXG4gIHwgU3RhcnQsIFN0YXJ0XG4gIHwgU3RvcCwgU3RvcCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKHNlbTEsIHgxJyksIFNlbSAoc2VtMiwgeDInKSAtPlxuICAgIHNlbTEgPSBzZW0yICYmIGVxdWFsIHgxJyB4MidcbiAgfCBTZW1fZ3JlZWR5IChrMSwgeDEnKSwgU2VtX2dyZWVkeSAoazIsIHgyJykgLT5cbiAgICBrMSA9IGsyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBHcm91cCBfLCBHcm91cCBfIC0+ICgqIERvIG5vdCBtZXJnZSBncm91cHMhICopXG4gICAgZmFsc2VcbiAgfCBOb19ncm91cCB4MScsIE5vX2dyb3VwIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOZXN0IHgxJywgTmVzdCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgQ2FzZSB4MScsIENhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5vX2Nhc2UgeDEnLCBOb19jYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBJbnRlcnNlY3Rpb24gbDEsIEludGVyc2VjdGlvbiBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBDb21wbGVtZW50IGwxLCBDb21wbGVtZW50IGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IERpZmZlcmVuY2UgKHgxJywgeDEnJyksIERpZmZlcmVuY2UgKHgyJywgeDInJykgLT5cbiAgICBlcXVhbCB4MScgeDInICYmIGVxdWFsIHgxJycgeDInJ1xuICB8IFBtYXJrIChtMSwgcjEpLCBQbWFyayAobTIsIHIyKSAtPlxuICAgIFBtYXJrLmVxdWFsIG0xIG0yICYmIGVxdWFsIHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmFuZCBlcV9saXN0IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICBbXSwgW10gLT5cbiAgICB0cnVlXG4gIHwgeDEgOjogcjEsIHgyIDo6IHIyIC0+XG4gICAgZXF1YWwgeDEgeDIgJiYgZXFfbGlzdCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgc2VxdWVuY2UgPSBmdW5jdGlvblxuICB8IFt4XSAtPiB4XG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IHJlYyBtZXJnZV9zZXF1ZW5jZXMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBBbHRlcm5hdGl2ZSBsJyA6OiByIC0+XG4gICAgbWVyZ2Vfc2VxdWVuY2VzIChsJyBAIHIpXG4gIHwgU2VxdWVuY2UgKHggOjogeSkgOjogciAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyByIHdpdGhcbiAgICAgICAgU2VxdWVuY2UgKHgnIDo6IHknKSA6OiByJyB3aGVuIGVxdWFsIHggeCcgLT5cbiAgICAgICAgU2VxdWVuY2UgW3g7IEFsdGVybmF0aXZlIFtzZXF1ZW5jZSB5OyBzZXF1ZW5jZSB5J11dIDo6IHInXG4gICAgICB8IHInIC0+XG4gICAgICAgIFNlcXVlbmNlICh4IDo6IHkpIDo6IHInXG4gICAgZW5kXG4gIHwgeCA6OiByIC0+XG4gICAgeCA6OiBtZXJnZV9zZXF1ZW5jZXMgclxuXG5tb2R1bGUgQSA9IEF1dG9tYXRhXG5cbmxldCBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IgPVxuICBtYXRjaCBraW5kLCBraW5kJyB3aXRoXG4gICAgYEZpcnN0LCBgRmlyc3QgLT4gY3JcbiAgfCBgRmlyc3QsIGsgICAgICAgLT4gQS5zZXEgaWRzIGsgY3IgKEEuZXBzIGlkcylcbiAgfCAgXyAgICAgICAgICAgICAgIC0+IGNyXG5cbigqIFhYWCBzaG91bGQgcHJvYmFibHkgY29tcHV0ZSBhIGNhdGVnb3J5IG1hc2sgKilcbmxldCByZWMgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgKEEuY3N0IGlkcyAodHJhbnNfc2V0IGNhY2hlIGMgcyksIGtpbmQpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgICh0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyBsLCBraW5kKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgbCB3aXRoXG4gICAgICAgIFtyJ10gLT5cbiAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyLCBraW5kKVxuICAgICAgfCBtZXJnZWRfc2VxdWVuY2VzIC0+XG4gICAgICAgIChBLmFsdCBpZHNcbiAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgIChmdW4gcicgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeVxuICAgICAgICAgICAgICAgICAgICAgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgICAgICAgICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyKVxuICAgICAgICAgICAgICBtZXJnZWRfc2VxdWVuY2VzKSxcbiAgICAgICAgIGtpbmQpXG4gICAgZW5kXG4gIHwgUmVwZWF0IChyJywgaSwgaikgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICBsZXQgcmVtID1cbiAgICAgIG1hdGNoIGogd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgIEEucmVwIGlkcyBncmVlZHkga2luZCcgY3JcbiAgICAgIHwgU29tZSBqIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBncmVlZHkgd2l0aFxuICAgICAgICAgICAgYEdyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbTsgQS5lcHMgaWRzXVxuICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0EuZXBzIGlkczsgQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoaiAtIGkpIGYgKEEuZXBzIGlkcylcbiAgICBpblxuICAgIChpdGVyIGkgKGZ1biByZW0gLT4gQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbSkgcmVtLCBraW5kKVxuICB8IEJlZ19vZl9saW5lIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEVuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBCZWdfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKSxcbiAgICAga2luZClcbiAgfCBFbmRfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKSxcbiAgICAga2luZClcbiAgfCBOb3RfYm91bmQgLT5cbiAgICAoQS5hbHQgaWRzIFtBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpO1xuICAgICAgICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXSxcbiAgICAga2luZClcbiAgfCBCZWdfb2Zfc3RyIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgRW5kX29mX3N0ciAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBsYXN0bmV3bGluZSksIGtpbmQpXG4gIHwgU3RhcnQgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFN0b3AgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTZW0gKGtpbmQnLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJycpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCcgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQnIGtpbmQnJyBjcixcbiAgICAga2luZCcpXG4gIHwgU2VtX2dyZWVkeSAoZ3JlZWR5JywgcicpIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHknIHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgR3JvdXAgKG4sIHInKSAtPlxuICAgIGlmIGlnbl9ncm91cCB0aGVuXG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGVsc2VcbiAgICAgIGxldCBwID0gIXBvcyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWVzIDo9IChuYW1lLCBwIC8gMikgOjogIW5hbWVzXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgaW5cbiAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5tYXJrIGlkcyBwKSAoXG4gICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdCBjciAoQS5tYXJrIGlkcyAocCArIDEpKSksXG4gICAgICAga2luZCcpXG4gIHwgTm9fZ3JvdXAgcicgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgdHJ1ZSBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBOZXN0IHInIC0+XG4gICAgbGV0IGIgPSAhcG9zIGluXG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgaW5cbiAgICBsZXQgZSA9ICFwb3MgLSAxIGluXG4gICAgaWYgZSA8IGIgdGhlblxuICAgICAgKGNyLCBraW5kJylcbiAgICBlbHNlXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5lcmFzZSBpZHMgYiBlKSBjciwga2luZCcpXG4gIHwgRGlmZmVyZW5jZSBfIHwgQ29tcGxlbWVudCBfIHwgSW50ZXJzZWN0aW9uIF8gfCBOb19jYXNlIF8gfCBDYXNlIF8gLT5cbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBQbWFyayAoaSwgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEucG1hcmsgaWRzIGkpIGNyLCBraW5kJylcblxuYW5kIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEEuZXBzIGlkc1xuICB8IFtyXSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcidcbiAgfCByIDo6IHJlbSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGxldCBjcicnID1cbiAgICAgIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHJlbSBpblxuICAgIGlmIEEuaXNfZXBzIGNyJycgdGhlblxuICAgICAgY3InXG4gICAgZWxzZSBpZiBBLmlzX2VwcyBjcicgdGhlblxuICAgICAgY3InJ1xuICAgIGVsc2VcbiAgICAgIEEuc2VxIGlkcyBraW5kJyBjcicgY3InJ1xuXG4oKioqKiBDYXNlICoqKiopXG5cbmxldCBjYXNlX2luc2VucyBzID1cbiAgQ3NldC51bmlvbiBzIChDc2V0LnVuaW9uIChDc2V0Lm9mZnNldCAzMiAoQ3NldC5pbnRlciBzIGN1cHBlcikpXG4gICAgICAgICAgICAgICAgICAoQ3NldC5vZmZzZXQgKC0zMikgKENzZXQuaW50ZXIgcyBjbG93ZXIpKSlcblxubGV0IGFzX3NldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT4gc1xuICB8IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBYWFggU2hvdWxkIHNwbGl0IGFsdGVybmF0aXZlcyBpbnRvICgxKSBjaGFyc2V0cyBhbmQgKDIpIG1vcmVcbiAgIGNvbXBsZXggcmVndWxhciBleHByZXNzaW9uczsgYWx0ZXJuYXRpdmUgc2hvdWxkIHRoZXJlZm9yZSBwcm9iYWJseVxuICAgYmUgZmxhdHRlbiBoZXJlICopXG5sZXQgcmVjIGhhbmRsZV9jYXNlIGlnbl9jYXNlID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIFNldCAoaWYgaWduX2Nhc2UgdGhlbiBjYXNlX2luc2VucyBzIGVsc2UgcylcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgU2VxdWVuY2UgKExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsIGluXG4gICAgaWYgaXNfY2hhcnNldCAoQWx0ZXJuYXRpdmUgbCcpIHRoZW5cbiAgICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpIENzZXQuZW1wdHkgbCcpXG4gICAgZWxzZVxuICAgICAgQWx0ZXJuYXRpdmUgbCdcbiAgfCBSZXBlYXQgKHIsIGksIGopIC0+XG4gICAgUmVwZWF0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByLCBpLCBqKVxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wIGFzIHIgLT5cbiAgICByXG4gIHwgU2VtIChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW0gKGssIHInKVxuICB8IFNlbV9ncmVlZHkgKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbV9ncmVlZHkgKGssIHInKVxuICB8IEdyb3VwIChuLCByKSAtPlxuICAgIEdyb3VwIChuLCBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuICB8IE5vX2dyb3VwIHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTm9fZ3JvdXAgcidcbiAgfCBOZXN0IHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTmVzdCByJ1xuICB8IENhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIGZhbHNlIHJcbiAgfCBOb19jYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSB0cnVlIHJcbiAgfCBJbnRlcnNlY3Rpb24gbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LmludGVyIHMgKGFzX3NldCByKSkgQ3NldC5jYW55IGwnKVxuICB8IENvbXBsZW1lbnQgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55XG4gICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSlcbiAgICAgICAgICAgICAgQ3NldC5lbXB0eSBsJykpXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgU2V0IChDc2V0LmludGVyIChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpKVxuICAgICAgICAgICAoQ3NldC5kaWZmIENzZXQuY2FueSAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByJykpKSlcbiAgfCBQbWFyayAoaSxyKSAtPiBQbWFyayAoaSxoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuXG4oKioqKilcblxubGV0IGNvbXBpbGVfMSByZWdleHAgPVxuICBsZXQgcmVnZXhwID0gaGFuZGxlX2Nhc2UgZmFsc2UgcmVnZXhwIGluXG4gIGxldCBjID0gQ29sb3JfbWFwLm1ha2UgKCkgaW5cbiAgbGV0IG5lZWRfbG5sID0gY29sb3JpemUgYyByZWdleHAgaW5cbiAgbGV0IChjb2xvcnMsIGNvbG9yX3JlcHIsIG5jb2xvcikgPSBDb2xvcl9tYXAuZmxhdHRlbiBjIGluXG4gIGxldCBsbmwgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciBlbHNlIC0xIGluXG4gIGxldCBuY29sb3IgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciArIDEgZWxzZSBuY29sb3IgaW5cbiAgbGV0IGlkcyA9IEEuY3JlYXRlX2lkcyAoKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IG5hbWVzID0gcmVmIFtdIGluXG4gIGxldCAociwga2luZCkgPVxuICAgIHRyYW5zbGF0ZSBpZHNcbiAgICAgIGBGaXJzdCBmYWxzZSBmYWxzZSBgR3JlZWR5IHBvcyBuYW1lcyAocmVmIENzZXQuQ1NldE1hcC5lbXB0eSkgY29sb3JzIHJlZ2V4cCBpblxuICBsZXQgciA9IGVuZm9yY2Vfa2luZCBpZHMgYEZpcnN0IGtpbmQgciBpblxuICAoKkZvcm1hdC5lcHJpbnRmIFwiPCVkICVkPkAuXCIgIWlkcyBuY29sOyopXG4gIG1rX3JlIH5pbml0aWFsOnIgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzOihMaXN0LnJldiAhbmFtZXMpIH5ncm91cF9jb3VudDooIXBvcyAvIDIpXG5cbigqKioqKVxuXG5sZXQgcmVjIGFuY2hvcmVkID0gZnVuY3Rpb25cbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgTGlzdC5leGlzdHMgYW5jaG9yZWQgbFxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgYW5jaG9yZWQgbFxuICB8IFJlcGVhdCAociwgaSwgXykgLT5cbiAgICBpID4gMCAmJiBhbmNob3JlZCByXG4gIHwgU2V0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RvcFxuICB8IEludGVyc2VjdGlvbiBfIHwgQ29tcGxlbWVudCBfIHwgRGlmZmVyZW5jZSBfIC0+XG4gICAgZmFsc2VcbiAgfCBCZWdfb2Zfc3RyIHwgU3RhcnQgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgciB8IE5lc3QgclxuICB8IENhc2UgciB8IE5vX2Nhc2UgciB8IFBtYXJrIChfLCByKSAtPlxuICAgIGFuY2hvcmVkIHJcblxuKCoqKiopXG5cbnR5cGUgdCA9IHJlZ2V4cFxuXG5sZXQgc3RyIHMgPVxuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IFN0cmluZy5sZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IFNldCAoQ3NldC5jc2luZ2xlIHMuW2ldKSA6OiAhbFxuICBkb25lO1xuICBTZXF1ZW5jZSAhbFxubGV0IGNoYXIgYyA9IFNldCAoQ3NldC5jc2luZ2xlIGMpXG5cbmxldCBhbHQgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IEFsdGVybmF0aXZlIGxcbmxldCBzZXEgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IGVtcHR5ID0gYWx0IFtdXG5sZXQgZXBzaWxvbiA9IHNlcSBbXVxubGV0IHJlcG4gciBpIGogPVxuICBpZiBpIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwblwiO1xuICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICB8IFNvbWUgaiB3aGVuIGogPCBpIC0+IGludmFsaWRfYXJnIFwiUmUucmVwblwiXG4gICAgfCBfIC0+ICgpXG4gIGVuZDtcbiAgUmVwZWF0IChyLCBpLCBqKVxubGV0IHJlcCByID0gcmVwbiByIDAgTm9uZVxubGV0IHJlcDEgciA9IHJlcG4gciAxIE5vbmVcbmxldCBvcHQgciA9IHJlcG4gciAwIChTb21lIDEpXG5sZXQgYm9sID0gQmVnX29mX2xpbmVcbmxldCBlb2wgPSBFbmRfb2ZfbGluZVxubGV0IGJvdyA9IEJlZ19vZl93b3JkXG5sZXQgZW93ID0gRW5kX29mX3dvcmRcbmxldCB3b3JkIHIgPSBzZXEgW2JvdzsgcjsgZW93XVxubGV0IG5vdF9ib3VuZGFyeSA9IE5vdF9ib3VuZFxubGV0IGJvcyA9IEJlZ19vZl9zdHJcbmxldCBlb3MgPSBFbmRfb2Zfc3RyXG5sZXQgd2hvbGVfc3RyaW5nIHIgPSBzZXEgW2JvczsgcjsgZW9zXVxubGV0IGxlb2wgPSBMYXN0X2VuZF9vZl9saW5lXG5sZXQgc3RhcnQgPSBTdGFydFxubGV0IHN0b3AgPSBTdG9wXG5sZXQgbG9uZ2VzdCByID0gU2VtIChgTG9uZ2VzdCwgcilcbmxldCBzaG9ydGVzdCByID0gU2VtIChgU2hvcnRlc3QsIHIpXG5sZXQgZmlyc3QgciA9IFNlbSAoYEZpcnN0LCByKVxubGV0IGdyZWVkeSByID0gU2VtX2dyZWVkeSAoYEdyZWVkeSwgcilcbmxldCBub25fZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgTm9uX2dyZWVkeSwgcilcbmxldCBncm91cCA/bmFtZSByID0gR3JvdXAgKG5hbWUsIHIpXG5sZXQgbm9fZ3JvdXAgciA9IE5vX2dyb3VwIHJcbmxldCBuZXN0IHIgPSBOZXN0IHJcbmxldCBtYXJrIHIgPSBsZXQgaSA9IFBtYXJrLmdlbiAoKSBpbiAoaSxQbWFyayAoaSxyKSlcblxubGV0IHNldCBzdHIgPVxuICBsZXQgcyA9IHJlZiBDc2V0LmVtcHR5IGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBzIDo9IENzZXQudW5pb24gKENzZXQuY3NpbmdsZSBzdHIuW2ldKSAhc1xuICBkb25lO1xuICBTZXQgIXNcblxubGV0IHJnIGMgYycgPSBTZXQgKGNzZXEgYyBjJylcblxubGV0IGludGVyIGwgPVxuICBsZXQgciA9IEludGVyc2VjdGlvbiBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5pbnRlclwiXG5cbmxldCBjb21wbCBsID1cbiAgbGV0IHIgPSBDb21wbGVtZW50IGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmNvbXBsXCJcblxubGV0IGRpZmYgciByJyA9XG4gIGxldCByJycgPSBEaWZmZXJlbmNlIChyLCByJykgaW5cbiAgaWYgaXNfY2hhcnNldCByJycgdGhlblxuICAgIHInJ1xuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5kaWZmXCJcblxubGV0IGFueSA9IFNldCBDc2V0LmNhbnlcbmxldCBub3RubCA9IFNldCAoQ3NldC5kaWZmIENzZXQuY2FueSAoQ3NldC5jc2luZ2xlICdcXG4nKSlcblxubGV0IGxvd2VyID0gYWx0IFtyZyAnYScgJ3onOyBjaGFyICdcXDE4MSc7IHJnICdcXDIyMycgJ1xcMjQ2JzsgcmcgJ1xcMjQ4JyAnXFwyNTUnXVxubGV0IHVwcGVyID0gYWx0IFtyZyAnQScgJ1onOyByZyAnXFwxOTInICdcXDIxNCc7IHJnICdcXDIxNicgJ1xcMjIyJ11cbmxldCBhbHBoYSA9IGFsdCBbbG93ZXI7IHVwcGVyOyBjaGFyICdcXDE3MCc7IGNoYXIgJ1xcMTg2J11cbmxldCBkaWdpdCA9IHJnICcwJyAnOSdcbmxldCBhbG51bSA9IGFsdCBbYWxwaGE7IGRpZ2l0XVxubGV0IHdvcmRjID0gYWx0IFthbG51bTsgY2hhciAnXyddXG5sZXQgYXNjaWkgPSByZyAnXFwwMDAnICdcXDEyNydcbmxldCBibGFuayA9IHNldCBcIlxcdCBcIlxubGV0IGNudHJsID0gYWx0IFtyZyAnXFwwMDAnICdcXDAzMSc7IHJnICdcXDEyNycgJ1xcMTU5J11cbmxldCBncmFwaCA9IGFsdCBbcmcgJ1xcMDMzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHJpbnQgPSBhbHQgW3JnICdcXDAzMicgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHB1bmN0ID1cbiAgYWx0IFtyZyAnXFwwMzMnICdcXDA0Nyc7IHJnICdcXDA1OCcgJ1xcMDY0JzsgcmcgJ1xcMDkxJyAnXFwwOTYnO1xuICAgICAgIHJnICdcXDEyMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwxNjknOyByZyAnXFwxNzEnICdcXDE4MCc7XG4gICAgICAgcmcgJ1xcMTgyJyAnXFwxODUnOyByZyAnXFwxODcnICdcXDE5MSc7IGNoYXIgJ1xcMjE1JzsgY2hhciAnXFwyNDcnXVxubGV0IHNwYWNlID0gYWx0IFtjaGFyICcgJzsgcmcgJ1xcMDA5JyAnXFwwMTMnXVxubGV0IHhkaWdpdCA9IGFsdCBbZGlnaXQ7IHJnICdhJyAnZic7IHJnICdBJyAnRiddXG5cbmxldCBjYXNlIHIgPSBDYXNlIHJcbmxldCBub19jYXNlIHIgPSBOb19jYXNlIHJcblxuKCoqKiopXG5cbmxldCBjb21waWxlIHIgPVxuICBjb21waWxlXzEgKFxuICAgIGlmIGFuY2hvcmVkIHIgdGhlblxuICAgICAgZ3JvdXAgclxuICAgIGVsc2VcbiAgICAgIHNlcSBbc2hvcnRlc3QgKHJlcCBhbnkpOyBncm91cCByXVxuICApXG5cbmxldCBleGVjX2ludGVybmFsIG5hbWUgPyhwb3M9MCkgPyhsZW4gPSAtMSkgfnBhcnRpYWwgfmdyb3VwcyByZSBzID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAtMSB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIG5hbWU7XG4gIG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuXG5cbmxldCBleGVjID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBleGVjX29wdCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjX29wdFwiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2VcbiAgICAgICAgICByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gU29tZSBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gTm9uZVxuXG5sZXQgZXhlY3AgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6ZmFsc2UgXCJSZS5leGVjcFwiID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfc3Vic3RyIC0+IHRydWVcbiAgfCBfICAgICAgICAgICAgIC0+IGZhbHNlXG5cbmxldCBleGVjX3BhcnRpYWwgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF8gLT4gYEZ1bGxcbiAgfCBSdW5uaW5nIF8gLT4gYFBhcnRpYWxcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5sZXQgZXhlY19wYXJ0aWFsX2RldGFpbGVkID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbF9kZXRhaWxlZFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIGdyb3VwIC0+IGBGdWxsIGdyb3VwXG4gIHwgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfSAtPiBgUGFydGlhbCBub19tYXRjaF9zdGFydHNfYmVmb3JlXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubW9kdWxlIE1hcmsgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBQbWFyay50XG5cbiAgbGV0IHRlc3QgKGcgOiBHcm91cC50KSBwID1cbiAgICBQbWFyay5TZXQubWVtIHAgZy5wbWFya3NcblxuICBsZXQgYWxsIChnIDogR3JvdXAudCkgPSBnLnBtYXJrc1xuXG4gIG1vZHVsZSBTZXQgPSBQbWFyay5TZXRcblxuICBsZXQgZXF1YWwgPSBQbWFyay5lcXVhbFxuXG4gIGxldCBjb21wYXJlID0gUG1hcmsuY29tcGFyZVxuXG5lbmRcblxudHlwZSBzcGxpdF90b2tlbiA9XG4gIFsgYFRleHQgb2Ygc3RyaW5nXG4gIHwgYERlbGltIG9mIEdyb3VwLnRcbiAgXVxuXG5tb2R1bGUgUnNlcSA9IHN0cnVjdFxuICBsZXQgYWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICgqIGluZGV4IG9mIHRoZSBmaXJzdCBwb3NpdGlvbiB3ZSBkbyBub3QgY29uc2lkZXIuXG4gICAgICAgIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCAqKVxuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaXRlcmF0ZSBvbiBtYXRjaGVzLiBXaGVuIGEgbWF0Y2ggaXMgZm91bmQsIHNlYXJjaCBmb3IgdGhlIG5leHRcbiAgICAgICBvbmUganVzdCBhZnRlciBpdHMgZW5kICopXG4gICAgbGV0IHJlYyBhdXggcG9zICgpID1cbiAgICAgIGlmIHBvcyA+PSBsaW1pdFxuICAgICAgdGhlbiBTZXEuTmlsICgqIG5vIG1vcmUgbWF0Y2hlcyAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHNcbiAgICAgICAgICAgICAgICB+cG9zIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIFNlcS5Db25zIChzdWJzdHIsIGF1eCBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfXG4gICAgICAgIHwgRmFpbGVkIC0+IFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCBwb3NcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGFsbCA/cG9zID9sZW4gcmUgc1xuICAgIHw+IFNlcS5tYXAgKGZ1biBzdWIgLT4gR3JvdXAuZ2V0IHN1YiAwKVxuXG4gIGxldCBzcGxpdF9mdWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGk6IHN0YXJ0IG9mIGRlbGltaXRlZCBzdHJpbmdcbiAgICAgICBwb3M6IGZpcnN0IHBvc2l0aW9uIGFmdGVyIGxhc3QgbWF0Y2ggb2YgW3JlXVxuICAgICAgIGxpbWl0OiBmaXJzdCBpbmRleCB3ZSBpZ25vcmUgKCFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQpICopXG4gICAgbGV0IHBvczAgPSBwb3MgaW5cbiAgICBsZXQgcmVjIGF1eCBzdGF0ZSBpIHBvcyAoKSA9IG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgYElkbGUgd2hlbiBwb3MgPj0gbGltaXQgLT5cbiAgICAgICAgaWYgaSA8IGxpbWl0IHRoZW4gKFxuICAgICAgICAgIGxldCBzdWIgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgIFNlcS5Db25zIChgVGV4dCBzdWIsIGF1eCBzdGF0ZSAoaSsxKSBwb3MpXG4gICAgICAgICkgZWxzZSBTZXEuTmlsXG4gICAgICB8IGBJZGxlIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgbGV0IG9sZF9pID0gaSBpblxuICAgICAgICAgIGxldCBpID0gcDIgaW5cbiAgICAgICAgICBpZiBwMSA+IHBvczAgdGhlbiAoXG4gICAgICAgICAgICAoKiBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgYnkgYSBkZWxpbWl0ZXIgKilcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIG9sZF9pIChwMSAtIG9sZF9pKSBpblxuICAgICAgICAgICAgbGV0IHN0YXRlID0gYFlpZWxkIChgRGVsaW0gc3Vic3RyKSBpblxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgICApIGVsc2UgU2VxLkNvbnMgKGBEZWxpbSBzdWJzdHIsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF8gLT4gU2VxLk5pbFxuICAgICAgICB8IEZhaWxlZCAtPlxuICAgICAgICAgIGlmIGkgPCBsaW1pdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgICAgKCogeWllbGQgbGFzdCBzdHJpbmcgKilcbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgbGltaXQgcG9zKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICBlbmRcbiAgICAgIHwgYFlpZWxkIHggLT5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCBgSWRsZSBpIHBvcylcbiAgICBpblxuICAgIGF1eCBgSWRsZSBwb3MgcG9zXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgbGV0IHNlcSA9IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBTZXEuTmlsXG4gICAgICB8IFNlcS5Db25zIChgRGVsaW0gXywgdGwpIC0+IGZpbHRlciB0bCAoKVxuICAgICAgfCBTZXEuQ29ucyAoYFRleHQgcyx0bCkgLT4gU2VxLkNvbnMgKHMsIGZpbHRlciB0bClcbiAgICBpbiBmaWx0ZXIgc2VxXG5lbmRcblxubW9kdWxlIFJsaXN0ID0gc3RydWN0XG4gIGxldCBsaXN0X29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBsaXN0ID1cbiAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IHggOjogbCkgW10gcyB8PiBMaXN0LnJldlxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5lbmRcblxubW9kdWxlIEdlbiA9IHN0cnVjdFxuICB0eXBlICdhIGdlbiA9IHVuaXQgLT4gJ2Egb3B0aW9uXG4gIGxldCBnZW5fb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGdlbiA9XG4gICAgbGV0IHIgPSByZWYgcyBpblxuICAgIGZ1biAoKSAtPiBtYXRjaCAhciAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgICAgfCBTZXEuQ29ucyAoeCwgdGwpIC0+XG4gICAgICAgIHIgOj0gdGw7XG4gICAgICAgIFNvbWUgeFxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuZW5kXG5cbmxldCByZXBsYWNlID8ocG9zPTApID9sZW4gPyhhbGw9dHJ1ZSkgcmUgfmYgcyA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICAgICAgcG9zK2xcbiAgaW5cbiAgKCogYnVmZmVyIGludG8gd2hpY2ggd2Ugd3JpdGUgdGhlIHJlc3VsdCAqKVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAoKiBpdGVyYXRlIG9uIG1hdGNoZWQgc3Vic3RyaW5ncy4gKilcbiAgbGV0IHJlYyBpdGVyIHBvcyA9XG4gICAgaWYgcG9zIDwgbGltaXRcbiAgICB0aGVuXG4gICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvcyB+bGVuOihsaW1pdC1wb3MpIHdpdGhcbiAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgKCogYWRkIHN0cmluZyBiZXR3ZWVuIHByZXZpb3VzIG1hdGNoIGFuZCBjdXJyZW50IG1hdGNoICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAocDEtcG9zKTtcbiAgICAgICAgKCogd2hhdCBzaG91bGQgd2UgcmVwbGFjZSB0aGUgbWF0Y2hlZCBncm91cCB3aXRoPyAqKVxuICAgICAgICBsZXQgcmVwbGFjaW5nID0gZiBzdWJzdHIgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHJlcGxhY2luZztcbiAgICAgICAgaWYgYWxsIHRoZW5cbiAgICAgICAgICAoKiBpZiB3ZSBtYXRjaGVkIGEgbm9uLWNoYXIgZS5nLiBeIHdlIG11c3QgbWFudWFsbHkgYWR2YW5jZSBieSAxICopXG4gICAgICAgICAgaXRlciAoXG4gICAgICAgICAgICBpZiBwMT1wMiB0aGVuIChcbiAgICAgICAgICAgICAgKCogYSBub24gY2hhciBjb3VsZCBiZSBwYXN0IHRoZSBlbmQgb2Ygc3RyaW5nLiBlLmcuICQgKilcbiAgICAgICAgICAgICAgaWYgcDIgPCBsaW1pdCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgcy5bcDJdO1xuICAgICAgICAgICAgICBwMisxXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgcDIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwMiAobGltaXQtcDIpXG4gICAgICB8IFJ1bm5pbmcgXyAtPiAoKVxuICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChsaW1pdC1wb3MpXG4gIGluXG4gIGl0ZXIgcG9zO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCByZXBsYWNlX3N0cmluZyA/cG9zID9sZW4gP2FsbCByZSB+YnkgcyA9XG4gIHJlcGxhY2UgP3BvcyA/bGVuID9hbGwgcmUgcyB+ZjooZnVuIF8gLT4gYnkpXG5cbmxldCB3aXRuZXNzIHQgPVxuICBsZXQgcmVjIHdpdG5lc3MgPSBmdW5jdGlvblxuICAgIHwgU2V0IGMgLT4gU3RyaW5nLm1ha2UgMSAoQ2hhci5jaHIgKENzZXQucGljayBjKSlcbiAgICB8IFNlcXVlbmNlIHhzIC0+IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgd2l0bmVzcyB4cylcbiAgICB8IEFsdGVybmF0aXZlICh4IDo6IF8pIC0+IHdpdG5lc3MgeFxuICAgIHwgQWx0ZXJuYXRpdmUgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBSZXBlYXQgKHIsIGZyb20sIF90bykgLT5cbiAgICAgIGxldCB3ID0gd2l0bmVzcyByIGluXG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggdyAqIGZyb20pIGluXG4gICAgICBmb3IgX2k9MSB0byBmcm9tIGRvXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgd1xuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBOb19jYXNlIHIgLT4gd2l0bmVzcyByXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIChfLCBfKSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IEdyb3VwIChfLCByKVxuICAgIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBQbWFyayAoXywgcilcbiAgICB8IENhc2UgclxuICAgIHwgU2VtX2dyZWVkeSAoXywgcikgLT4gd2l0bmVzcyByXG4gICAgfCBCZWdfb2ZfbGluZVxuICAgIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkXG4gICAgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lXG4gICAgfCBTdGFydFxuICAgIHwgU3RvcFxuICAgIHwgRW5kX29mX3N0ciAtPiBcIlwiIGluXG4gIHdpdG5lc3MgKGhhbmRsZV9jYXNlIGZhbHNlIHQpXG5cbm1vZHVsZSBTZXEgPSBSc2VxXG5tb2R1bGUgTGlzdCA9IFJsaXN0XG5tb2R1bGUgR3JvdXAgPSBHcm91cFxuXG4oKiogezIgRGVwcmVjYXRlZCBmdW5jdGlvbnN9ICopXG5cbmxldCBzcGxpdF9mdWxsX3NlcSA9IFNlcS5zcGxpdF9mdWxsXG5sZXQgc3BsaXRfc2VxID0gU2VxLnNwbGl0XG5sZXQgbWF0Y2hlc19zZXEgPSBTZXEubWF0Y2hlc1xubGV0IGFsbF9zZXEgPSBTZXEuYWxsXG5cbnR5cGUgJ2EgZ2VuICAgICAgICA9ICdhIEdlbi5nZW5cbmxldCBhbGxfZ2VuICAgICAgICA9IEdlbi5hbGxcbmxldCBtYXRjaGVzX2dlbiAgICA9IEdlbi5tYXRjaGVzXG5sZXQgc3BsaXRfZ2VuICAgICAgPSBHZW4uc3BsaXRcbmxldCBzcGxpdF9mdWxsX2dlbiA9IEdlbi5zcGxpdF9mdWxsXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuXG5sZXQgZ2V0ID0gR3JvdXAuZ2V0XG5sZXQgZ2V0X29mcyA9IEdyb3VwLm9mZnNldFxubGV0IGdldF9hbGwgPSBHcm91cC5hbGxcbmxldCBnZXRfYWxsX29mcyA9IEdyb3VwLmFsbF9vZmZzZXRcbmxldCB0ZXN0ID0gR3JvdXAudGVzdFxuXG50eXBlIG1hcmtpZCA9IE1hcmsudFxuXG5sZXQgbWFya2VkID0gTWFyay50ZXN0XG5sZXQgbWFya19zZXQgPSBNYXJrLmFsbFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpcbkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91cyBjaGFyYWN0ZXI6XG4tIGRvZXMgbm90IGV4aXN0c1xuLSBpcyBhIGxldHRlclxuLSBpcyBub3QgYSBsZXR0ZXJcbi0gaXMgYSBuZXdsaW5lXG4tIGlzIGxhc3QgbmV3bGluZVxuXG5CZWdpbm5pbmcgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBsaW5lOlxuLSBwcmV2aW91cyBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGJ1ZmZlcjpcbi0gcHJldmlvdXMgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGJ1ZmZlclxuLSBjdXJyZW50IGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBsaW5lXG4tIGN1cnJlbnQgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG4qKVxuXG4oKlxuUmVwOiBlID0gVCxlIHwgKClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIGNvbW1hIChzaG9ydGVzdC9sb25nZXN0L2ZpcnN0KVxuICAtIHNlbWFudGljcyBvZiB0aGUgdW5pb24gKGdyZWVkeS9ub24tZ3JlZWR5KVxuXG5Cb3VuZGVkIHJlcGV0aXRpb25cbiAgYXswLDN9ID0gKGEsKGEsYT8pPyk/XG4qKVxuXG50eXBlIGdyb3VwcyA9IEdyb3VwLnRcblxuaW5jbHVkZSBSbGlzdFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgdGVzdDIgYyBjJyA9ICFpICsgMSA8IGwgJiYgcy5bIWldID0gYyAmJiBzLlshaSArIDFdID0gYycgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0MiBjIGMnID0gbGV0IHIgPSB0ZXN0MiBjIGMnIGluIGlmIHIgdGhlbiBpIDo9ICFpICsgMjsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdDIgJ1xcXFwnICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0MiAnXFxcXCcgJ3wnIHx8IHRlc3QyICdcXFxcJyAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgciBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgciBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ib2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIFJlLmVvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQyICdcXFxcJyAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnYCcgdGhlblxuICAgICAgICBSZS5ib3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdcXCcnIHRoZW5cbiAgICAgICAgUmUuZW9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPScgdGhlblxuICAgICAgICBSZS5zdGFydFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ2InIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdCJyB0aGVuXG4gICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW5cbiAgICAgICAgUmUuYm93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPicgdGhlblxuICAgICAgICBSZS5lb3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICd3JyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1cnIHRoZW5cbiAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ1snIHwgJ10nIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ1xcXFwnIGFzIGMgLT5cbiAgICAgICAgICAgIFJlLmNoYXIgY1xuICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICBjICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBnZXQgKClcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbmxldCByZSA/KGNhc2UgPSB0cnVlKSBzID0gbGV0IHIgPSBwYXJzZSBzIGluIGlmIGNhc2UgdGhlbiByIGVsc2UgUmUubm9fY2FzZSByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8oY2FzZSA9IHRydWUpIHMgPSBjb21waWxlIChyZSB+Y2FzZSBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAqKVxuKCogIGxpbmtpbmcgZXhjZXB0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2RpZmllZCBieSBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnIgZm9yIGludGVncmF0aW9uIGluIFJFICopXG5cbigqICRJZDogcmVfc3RyLm1sLHYgMS4zIDIwMDIvMDcvMDMgMTU6NDc6NTQgdm91aWxsb24gRXhwICQgKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG50eXBlIHJlZ2V4cCA9XG4gIHsgcmU6IFJlLnRcbiAgOyBtdGNoOiBSZS5yZSBMYXp5LnRcbiAgOyBzcmNoOiBSZS5yZSBMYXp5LnQgfVxuXG5sZXQgY29tcGlsZV9yZWdleHAgcyBjID1cbiAgbGV0IHJlID0gRW1hY3MucmUgfmNhc2U6KG5vdCBjKSBzIGluXG4gIHsgcmVcbiAgOyBtdGNoID0gbGF6eSAoUmUuY29tcGlsZSAoUmUuc2VxIFtSZS5zdGFydDsgcmVdKSlcbiAgOyBzcmNoID0gbGF6eSAoUmUuY29tcGlsZSByZSkgfVxuXG5sZXQgc3RhdGUgPSByZWYgTm9uZVxuXG5sZXQgc3RyaW5nX21hdGNoIHJlIHMgcCA9XG4gIHRyeVxuICAgIHN0YXRlIDo9IFNvbWUgKFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMpO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGZhbHNlXG5cbmxldCBzdHJpbmdfcGFydGlhbF9tYXRjaCByZSBzIHAgPVxuICBtYXRjaFxuICAgIFJlLmV4ZWNfcGFydGlhbCB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgc1xuICB3aXRoXG4gICAgYEZ1bGwgICAgIC0+IHN0cmluZ19tYXRjaCByZSBzIHBcbiAgfCBgUGFydGlhbCAgLT4gdHJ1ZVxuICB8IGBNaXNtYXRjaCAtPiBmYWxzZVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLnNyY2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBmc3QgKFJlLkdyb3VwLm9mZnNldCByZXMgMClcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIHNlYXJjaF9iYWNrd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIHBcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGlmIHAgPSAwIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2VcbiAgICAgIHNlYXJjaF9iYWNrd2FyZCByZSBzIChwIC0gMSlcblxubGV0IHZhbGlkX2dyb3VwIG4gPVxuICBuID49IDAgJiYgbiA8IDEwICYmIChcbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBtIC0+IG4gPCBSZS5Hcm91cC5uYl9ncm91cHMgbVxuICApXG5cbmxldCBvZmZzZXRfZ3JvdXAgaSA9XG4gIG1hdGNoICFzdGF0ZSB3aXRoXG4gIHwgU29tZSBtIC0+IFJlLkdyb3VwLm9mZnNldCBtIGlcbiAgfCBOb25lICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBncm91cF9sZW4gaSA9XG4gIHRyeVxuICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgaSBpblxuICAgIGUgLSBiXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgMFxuXG5sZXQgcmVjIHJlcGxfbGVuZ3RoIHJlcGwgcCBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGlmIHJlcGwuW3BdIDw+ICdcXFxcJyB0aGVuXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgKHEgKyAxKSBsZW5cbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcCA9IHAgKyAxIGluXG4gICAgICBpZiBwID0gbGVuIHRoZW4gZmFpbHdpdGggXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIjtcbiAgICAgIGxldCBxID1cbiAgICAgICAgbWF0Y2ggcmVwbC5bcF0gd2l0aFxuICAgICAgICB8ICdcXFxcJyAtPiBxICsgMVxuICAgICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBxICsgZ3JvdXBfbGVuIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpXG4gICAgICAgIHwgXyAtPiBxICsgMiBpblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIHEgbGVuXG4gICAgZW5kXG4gIGVuZCBlbHNlXG4gICAgcVxuXG5sZXQgcmVjIHJlcGxhY2Ugb3JpZyByZXBsIHAgcmVzIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgbGV0IGMgPSByZXBsLltwXSBpblxuICAgIGlmIGMgPD4gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIEJ5dGVzLnNldCByZXMgcSBjO1xuICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAxKSByZXMgKHEgKyAxKSBsZW5cbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggcmVwbC5bcCArIDFdIHdpdGhcbiAgICAgICAgJ1xcXFwnIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMSkgbGVuXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGUgLSBiIGluXG4gICAgICAgICAgICBpZiBkID4gMCB0aGVuIFN0cmluZy5ibGl0IG9yaWcgYiByZXMgcSBkO1xuICAgICAgICAgICAgZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAwXG4gICAgICAgIGluXG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgZCkgbGVuXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgQnl0ZXMuc2V0IHJlcyAocSArIDEpIGM7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMikgbGVuXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgcmVwbGFjZW1lbnRfdGV4dCByZXBsIG9yaWcgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCByZXBsIGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKHJlcGxfbGVuZ3RoIHJlcGwgMCAwIGxlbikgaW5cbiAgcmVwbGFjZSBvcmlnIHJlcGwgMCByZXMgMCAoU3RyaW5nLmxlbmd0aCByZXBsKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgc3RyaW5nX2JlZm9yZSBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBmaXJzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBsYXN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAoU3RyaW5nLmxlbmd0aCBzIC0gbikgblxuXG5sZXQgcmVnZXhwIGUgPSBjb21waWxlX3JlZ2V4cCBlIGZhbHNlXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIGUgPSBjb21waWxlX3JlZ2V4cCBlIHRydWVcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSBmYWxzZVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSB0cnVlXG5cbmxldCBncm91cF9iZWdpbm5pbmcgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9iZWdpbm5pbmdcIjtcbiAgbGV0IHBvcyA9IGZzdCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgZ3JvdXBfZW5kIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfZW5kXCI7XG4gIGxldCBwb3MgPSBzbmQgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IG1hdGNoZWRfZ3JvdXAgbiB0eHQgPVxuICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIG4gaW5cbiAgU3RyaW5nLnN1YiB0eHQgYiAoZSAtIGIpXG5cbmxldCByZXBsYWNlX21hdGNoZWQgcmVwbCBtYXRjaGVkID0gcmVwbGFjZW1lbnRfdGV4dCByZXBsIG1hdGNoZWRcblxubGV0IG1hdGNoX2JlZ2lubmluZyAoKSA9IGdyb3VwX2JlZ2lubmluZyAwXG5hbmQgbWF0Y2hfZW5kICgpID0gZ3JvdXBfZW5kIDBcbmFuZCBtYXRjaGVkX3N0cmluZyB0eHQgPSBtYXRjaGVkX2dyb3VwIDAgdHh0XG5cbmxldCBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgMCBpblxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbc3RyaW5nX2JlZm9yZSB0ZXh0IHBvcztcbiAgICAgICAgICAgICAgICAgICAgICByZXBsX2Z1biB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19hZnRlciB0ZXh0IChtYXRjaF9lbmQgKCkpXVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRleHRcblxubGV0IGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIGxldCByZWMgcmVwbGFjZSBhY2N1IHN0YXJ0IGxhc3Rfd2FzX2VtcHR5ID1cbiAgICBsZXQgc3RhcnRwb3MgPSBpZiBsYXN0X3dhc19lbXB0eSB0aGVuIHN0YXJ0ICsgMSBlbHNlIHN0YXJ0IGluXG4gICAgaWYgc3RhcnRwb3MgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IHN0YXJ0cG9zIHdpdGhcbiAgICAgIHwgcG9zIC0+XG4gICAgICAgIGxldCBlbmRfcG9zID0gbWF0Y2hfZW5kICgpIGluXG4gICAgICAgIGxldCByZXBsX3RleHQgPSByZXBsX2Z1biB0ZXh0IGluXG4gICAgICAgIHJlcGxhY2UgKHJlcGxfdGV4dCA6OiBTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICBlbmRfcG9zIChlbmRfcG9zID0gcG9zKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICBpblxuICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IChyZXBsYWNlIFtdIDAgZmFsc2UpKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgZXhwciByZXBsIHRleHQgPVxuICBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcbmFuZCByZXBsYWNlX2ZpcnN0IGV4cHIgcmVwbCB0ZXh0ID1cbiAgc3Vic3RpdHV0ZV9maXJzdCBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcblxubGV0IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIHJlIHMgcCA9XG4gIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCByZSBzIHAgaW5cbiAgaWYgbWF0Y2hfZW5kICgpID4gcCB0aGVuXG4gICAgcG9zXG4gIGVsc2UgaWYgcCA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgc2VhcmNoX2ZvcndhcmQgcmUgcyAocCArIDEpXG4gIGVsc2VcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCBzdGFydCA9XG4gICAgaWYgc3RyaW5nX21hdGNoIGV4cHIgdGV4dCAwIHRoZW4gbWF0Y2hfZW5kICgpIGVsc2UgMCBpblxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0ICgoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpKSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gc3RhcnQgbnVtKVxuXG5sZXQgc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdCBleHByIHRleHQgMFxuXG5sZXQgYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgaWYgdGV4dCA9IFwiXCIgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBzcGxpdF9kZWxpbSBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCAwXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID0gVGV4dCBvZiBzdHJpbmcgfCBEZWxpbSBvZiBzdHJpbmdcblxubGV0IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIGxldCBzID0gbWF0Y2hlZF9zdHJpbmcgdGV4dCBpblxuICAgICAgICBpZiBwb3MgPiBzdGFydCB0aGVuXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OlxuICAgICAgICAgICAgICAgICBUZXh0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcyAtIHN0YXJ0KSkgOjpcbiAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjogYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IGZ1bGxfc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCAwXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIGVuY2xvc2VkID1cbiAgfCBDaGFyIG9mIGNoYXJcbiAgfCBSYW5nZSBvZiBjaGFyICogY2hhclxuXG50eXBlIHBpZWNlID1cbiAgfCBFeGFjdGx5IG9mIGNoYXJcbiAgfCBBbnlfb2Ygb2YgZW5jbG9zZWQgbGlzdFxuICB8IEFueV9idXQgb2YgZW5jbG9zZWQgbGlzdFxuICB8IE9uZVxuICB8IE1hbnlcbiAgfCBNYW55TWFueVxuXG50eXBlIHQgPSBwaWVjZSBsaXN0XG5cbmxldCBvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzIDogdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgcmVhZCBjID1cbiAgICBsZXQgciA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gICAgaWYgciB0aGVuIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgKCoqXG4gICBbcmVhZF9haGVhZCBwYXR0ZXJuXSB3aWxsIGF0dGVtcHQgdG8gcmVhZCBbcGF0dGVybl0gYW5kIHdpbGwgcmV0dXJuIFt0cnVlXSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bC5cbiAgIElmIGl0IGZhaWxzLCBpdCB3aWxsIHJldHVybiBbZmFsc2VdIGFuZCBub3QgaW5jcmVtZW50IHRoZSByZWFkIGluZGV4LlxuICAqKVxuICBsZXQgcmVhZF9haGVhZCBwYXR0ZXJuID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAoKiBpZiB0aGUgcGF0dGVybiB3ZSBhcmUgbG9va2luZyBmb3IgZXhlZWRzIHRoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHMsIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseSAqKVxuICAgIGlmICFpICsgcGF0dGVybl9sZW4gPj0gbCB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDAgdG8gcGF0dGVybl9sZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGZvdW5kID0gbm90IChlb3MgKCkpICYmIHMuWyFpICsgal0gPSBwYXR0ZXJuLltqXSBpblxuICAgICAgICAgIGlmIG5vdCBmb3VuZCB0aGVuIHJhaXNlX25vdHJhY2UgRXhpdDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaSA6PSAhaSArIHBhdHRlcm5fbGVuO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIHwgRXhpdCAgLT4gZmFsc2VcbiAgaW5cblxuICBsZXQgY2hhciAoKSA9XG4gICAgaWdub3JlIChyZWFkICdcXFxcJyA6IGJvb2wpO1xuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCByID0gcy5bIWldIGluXG4gICAgaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICBsZXQgZW5jbG9zZWQgKCkgOiBlbmNsb3NlZCBsaXN0ID1cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICAoKiBUaGlzIHJldHVybnMgdGhlIGxpc3QgaW4gcmV2ZXJzZSBvcmRlciwgYnV0IG9yZGVyIGlzbid0IGltcG9ydGFudCBhbnl3YXkgKilcbiAgICAgIGlmIHMgPD4gW10gJiYgcmVhZCAnXSdcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgICAgaWYgbm90IChyZWFkICctJylcbiAgICAgICAgdGhlbiBsb29wIChDaGFyIGMgOjogcylcbiAgICAgICAgZWxzZSBpZiByZWFkICddJ1xuICAgICAgICB0aGVuIENoYXIgYyA6OiBDaGFyICctJyA6OiBzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgbG9vcCAoUmFuZ2UgKGMsIGMnKSA6OiBzKVxuICAgIGluXG4gICAgbG9vcCBbXVxuICBpblxuXG4gIGxldCBwaWVjZSAoKSA9XG4gICAgaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWRfYWhlYWQgXCIvKipcIiAmJiBub3QgKGVvcyAoKSlcbiAgICB0aGVuIE1hbnlNYW55XG4gICAgZWxzZSBpZiByZWFkICcqJ1xuICAgIHRoZW4gaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWQgJyonXG4gICAgICB0aGVuIE1hbnlNYW55XG4gICAgICBlbHNlIE1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJz8nXG4gICAgdGhlbiBPbmVcbiAgICBlbHNlIGlmIG5vdCAocmVhZCAnWycpXG4gICAgdGhlbiBFeGFjdGx5IChjaGFyICgpKVxuICAgIGVsc2UgaWYgcmVhZCAnXicgfHwgcmVhZCAnISdcbiAgICB0aGVuIEFueV9idXQgKGVuY2xvc2VkICgpKVxuICAgIGVsc2UgQW55X29mIChlbmNsb3NlZCAoKSlcbiAgaW5cblxuICBsZXQgcmVjIGxvb3AgcGllY2VzID1cbiAgICBpZiBlb3MgKClcbiAgICB0aGVuIExpc3QucmV2IHBpZWNlc1xuICAgIGVsc2UgbG9vcCAocGllY2UgKCkgOjogcGllY2VzKVxuICBpblxuXG4gIGxvb3AgW11cblxubGV0IG11bCBsIGwnID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHMgLT4gTGlzdC5tYXAgKGZ1biBzJyAtPiBzIF4gcycpIGwnKSBsKVxuXG5sZXQgZXhwbG9kZSBzdHIgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZWMgZXhwbCBpbm5lciBzIGkgYWNjIGJlZyA9XG4gICAgaWYgaSA+PSBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGlubmVyIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSwgaSlcbiAgICBlbmQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICB8ICdcXFxcJyAtPiBleHBsIGlubmVyIHMgKGkgKyAyKSBhY2MgYmVnXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBsZXQgKHQsIGknKSA9IGV4cGwgdHJ1ZSAoaSArIDEpIChpICsgMSkgW10gW1wiXCJdIGluXG4gICAgICAgIGV4cGwgaW5uZXIgaScgaScgYWNjXG4gICAgICAgICAgKG11bCBiZWcgKG11bCBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSB0KSlcbiAgICAgIHwgJywnIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgZXhwbCBpbm5lciAoaSArIDEpIChpICsgMSlcbiAgICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYykgW1wiXCJdXG4gICAgICB8ICd9JyB3aGVuIGlubmVyIC0+XG4gICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjLCBpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBleHBsIGlubmVyIHMgKGkgKyAxKSBhY2MgYmVnXG4gIGluXG4gIExpc3QucmV2IChmc3QgKGV4cGwgZmFsc2UgMCAwIFtdIFtcIlwiXSkpXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVfcGllY2VzICAgICAgICAgICAgICAgIDogUmUudCBsaXN0OyAgKCogbGFzdCBwaWVjZSBhdCBoZWFkIG9mIGxpc3QuICopXG4gICAgcmVtYWluaW5nICAgICAgICAgICAgICAgIDogcGllY2UgbGlzdDsgKCogbGFzdCBwaWVjZSBhdCB0YWlsIG9mIGxpc3QuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiAgIDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuIG9yIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgJy8nICopXG4gICAgcGF0aG5hbWUgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgICBtYXRjaF9iYWNrc2xhc2hlcyAgICAgICAgOiBib29sO1xuICAgIHBlcmlvZCAgICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gIH1cblxuICBsZXQgY3JlYXRlIH5wZXJpb2QgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyByZW1haW5pbmcgPVxuICAgIHtcbiAgICAgIHJlX3BpZWNlcyA9IFtdO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IHRydWU7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSB0cnVlO1xuICAgICAgcGF0aG5hbWU7XG4gICAgICBtYXRjaF9iYWNrc2xhc2hlcztcbiAgICAgIHBlcmlvZDtcbiAgICAgIHJlbWFpbmluZztcbiAgICB9XG5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCB0ID1cbiAgICB0LnBlcmlvZCAmJiAoXG4gICAgICB0LmFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gfHxcbiAgICAgICh0LmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCAmJiB0LnBhdGhuYW1lKVxuICAgIClcblxuICBsZXQgZXhwbGljaXRfc2xhc2ggdCA9IHQucGF0aG5hbWVcblxuICBsZXQgc2xhc2hlcyB0ID1cbiAgICBpZiB0Lm1hdGNoX2JhY2tzbGFzaGVzIHRoZW4gWycvJzsgJ1xcXFwnXSBlbHNlIFsnLyddXG5cbiAgbGV0IGFwcGVuZCA/KGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudD1mYWxzZSkgdCBwaWVjZSA9XG4gICAgeyB0IHdpdGhcbiAgICAgIHJlX3BpZWNlcyA9IHBpZWNlIDo6IHQucmVfcGllY2VzO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IGZhbHNlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50O1xuICAgIH1cblxuICBsZXQgdG9fcmUgdCA9IFJlLnNlcSAoTGlzdC5yZXYgdC5yZV9waWVjZXMpXG5cbiAgbGV0IG5leHQgdCA9XG4gICAgbWF0Y2ggdC5yZW1haW5pbmcgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgcGllY2UgOjogcmVtYWluaW5nIC0+IFNvbWUgKHBpZWNlLCB7IHQgd2l0aCByZW1haW5pbmcgfSlcbmVuZFxuXG5sZXQgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kID1cbiAgUmUuY29tcGwgKFxuICAgIExpc3QuY29uY2F0IFtcbiAgICAgIGlmIGV4cGxpY2l0X3NsYXNoICB0aGVuIExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyBlbHNlIFtdO1xuICAgICAgaWYgZXhwbGljaXRfcGVyaW9kIHRoZW4gW1JlLmNoYXIgJy4nXSBlbHNlIFtdO1xuICAgIF1cbiAgKVxuXG5sZXQgZW5jbG9zZWQgZW5jbG9zZWQgPVxuICBtYXRjaCBlbmNsb3NlZCB3aXRoXG4gIHwgQ2hhciBjIC0+IFJlLmNoYXIgY1xuICB8IFJhbmdlIChsb3csIGhpZ2gpIC0+IFJlLnJnIGxvdyBoaWdoXG5cbmxldCBlbmNsb3NlZF9zZXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Qga2luZCBzZXQgPVxuICBsZXQgc2V0ID0gTGlzdC5tYXAgZW5jbG9zZWQgc2V0IGluXG4gIGxldCBlbmNsb3N1cmUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEFueV9vZiAtPiBSZS5hbHQgc2V0XG4gICAgfCBgQW55X2J1dCAtPiBSZS5jb21wbCBzZXRcbiAgaW5cbiAgUmUuaW50ZXIgW2VuY2xvc3VyZTsgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kXVxuXG5sZXQgZXhhY3RseSBzdGF0ZSBjID1cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSBMaXN0Lm1lbSBjIHNsYXNoZXMgaW5cbiAgbGV0IGNoYXJzID0gaWYgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IHRoZW4gc2xhc2hlcyBlbHNlIFtjXSBpblxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBjaGFycykpIH5hbV9hdF9zdGFydF9vZl9jb21wb25lbnRcblxubGV0IG1hbnlfbWFueSBzdGF0ZSA9XG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBzdGF0ZS5TdGF0ZS5wZXJpb2QgJiYgc3RhdGUuU3RhdGUucGF0aG5hbWUgaW5cbiAgbGV0IGZpcnN0X2V4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kID1cbiAgICBSZS5zZXEgW1xuICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgIF1cbiAgaW5cbiAgKCogV2UgbXVzdCBtYXRjaCBjb21wb25lbnRzIGluZGl2aWR1YWxseSB3aGVuIFtwZXJpb2RdIGZsYWcgaXMgc2V0LFxuICAgICBtYWtpbmcgc3VyZSB0byBub3QgbWF0Y2ggW1wiZm9vLy5iYXJcIl0uICopXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoXG4gICAgUmUuc2VxIFtcbiAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2Q6Zmlyc3RfZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgIFJlLnJlcCAoXG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMpO1xuICAgICAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgICBdXG4gICAgICApO1xuICAgIF0pXG5cbmxldCBtYW55IChzdGF0ZSA6IFN0YXRlLnQpID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgKCogV2hldGhlciB3ZSBtdXN0IGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kIGRlcGVuZHMgb24gdGhlIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGJ1dFxuICAgICBzbGFzaGVzIGFyZSBlYXN5IHRvIGV4cGxpY2l0IG1hdGNoLiBUaGlzIGNvbmRpdGlvbmFsIHNwbGl0cyBvdXQgc29tZSBzaW1wbGUgY2FzZXMuXG4gICopXG4gIGlmIG5vdCBleHBsaWNpdF9wZXJpb2QgdGhlbiBiZWdpblxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpKVxuICBlbmQgZWxzZSBpZiBub3QgZXhwbGljaXRfc2xhc2ggdGhlbiBiZWdpblxuICAgICgqIEluIHRoaXMgc3RhdGUsIHdlIGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kcyBvbmx5IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyAqKVxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUub3B0IChcbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgKSlcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBsZXQgbm90X2VtcHR5ID1cbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgaW5cbiAgICAoKiBbbWF5YmVfZW1wdHldIGlzIHRoZSBkZWZhdWx0IHRyYW5zbGF0aW9uIG9mIE1hbnksIGV4Y2VwdCBpbiBzb21lIHNwZWNpYWwgY2FzZXMuXG4gICAgKilcbiAgICBsZXQgbWF5YmVfZW1wdHkgPSBSZS5vcHQgbm90X2VtcHR5IGluXG4gICAgbGV0IGVuY2xvc2VkX3NldCBzdGF0ZSBraW5kIHNldCA9XG4gICAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCBbXG4gICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgbm90X2VtcHR5O1xuICAgICAgICAgICgqIFNpbmNlIFtub3RfZW1wdHldIG1hdGNoZWQsIHN1YnNlcXVlbnQgZG90cyBhcmUgbm90IGxlYWRpbmcuICopXG4gICAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2U7XG4gICAgICAgIF07XG4gICAgICBdKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29rYWhlYWQgc3RhdGUgPVxuICAgICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG1heWJlX2VtcHR5XG4gICAgICAoKiBnbG9iICoqID09PSBnbG9iICogLiAqKVxuICAgICAgfCBTb21lIChNYW55LCBzdGF0ZSkgLT4gbG9va2FoZWFkIHN0YXRlXG4gICAgICB8IFNvbWUgKEV4YWN0bHkgYywgc3RhdGUpIC0+XG4gICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlXG4gICAgICAgICAgICAoaWYgYyA9ICcuJ1xuICAgICAgICAgICAgIHRoZW4gbm90X2VtcHR5XG4gICAgICAgICAgICAgZWxzZSBtYXliZV9lbXB0eSlcbiAgICAgICAgaW5cbiAgICAgICAgZXhhY3RseSBzdGF0ZSBjXG4gICAgICAoKiBnbG9iICo/ID09PSBnbG9iID8qICopXG4gICAgICB8IFNvbWUgKE9uZSwgc3RhdGUpIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBub3RfZW1wdHlcbiAgICAgIHwgU29tZSAoQW55X29mIGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfb2YgZW5jbG9zZWRcbiAgICAgIHwgU29tZSAoQW55X2J1dCBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X2J1dCBlbmNsb3NlZFxuICAgICAgKCogKiB0aGVuICoqID09PSAqKiAqKVxuICAgICAgfCBTb21lIChNYW55TWFueSwgc3RhdGUpIC0+IG1hbnlfbWFueSBzdGF0ZVxuICAgIGluXG4gICAgbG9va2FoZWFkIHN0YXRlXG4gIGVuZFxuXG5sZXQgcGllY2Ugc3RhdGUgcGllY2UgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBtYXRjaCBwaWVjZSB3aXRoXG4gIHwgT25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKVxuICB8IE1hbnkgLT4gbWFueSBzdGF0ZVxuICB8IEFueV9vZiBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfb2YgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgQW55X2J1dCBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfYnV0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEV4YWN0bHkgYyAtPiBleGFjdGx5IHN0YXRlIGNcbiAgfCBNYW55TWFueSAtPiBtYW55X21hbnkgc3RhdGVcblxubGV0IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGF0ZS50b19yZSBzdGF0ZVxuICAgIHwgU29tZSAocCwgc3RhdGUpIC0+IGxvb3AgKHBpZWNlIHN0YXRlIHApXG4gIGluXG4gIGxvb3AgKFN0YXRlLmNyZWF0ZSB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYilcblxubGV0IGdsb2JcbiAgICAgID8oYW5jaG9yZWQgPSBmYWxzZSlcbiAgICAgID8ocGF0aG5hbWUgPSB0cnVlKVxuICAgICAgPyhtYXRjaF9iYWNrc2xhc2hlcyA9IGZhbHNlKVxuICAgICAgPyhwZXJpb2QgPSB0cnVlKVxuICAgICAgPyhleHBhbmRfYnJhY2VzID0gZmFsc2UpXG4gICAgICA/KGRvdWJsZV9hc3RlcmlzayA9IHRydWUpXG4gICAgICBzXG4gID1cbiAgbGV0IHRvX3JlIHMgPVxuICAgIGxldCByZSA9IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIChvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzKSBpblxuICAgIGlmIGFuY2hvcmVkXG4gICAgdGhlbiBSZS53aG9sZV9zdHJpbmcgcmVcbiAgICBlbHNlIHJlXG4gIGluXG4gIGlmIGV4cGFuZF9icmFjZXNcbiAgdGhlbiBSZS5hbHQgKExpc3QubWFwIHRvX3JlIChleHBsb2RlIHMpKVxuICBlbHNlIHRvX3JlIHNcblxubGV0IGdsb2InID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5wZXJpb2Qgc1xuXG5sZXQgZ2xvYnggP2FuY2hvcmVkIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIHNcblxubGV0IGdsb2J4JyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIH5wZXJpb2Qgc1xuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwb3NpeF9jbGFzc19vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiYWxwaGFcIiAgLT4gUmUuYWxwaGFcbiAgfCBcImFsbnVtXCIgIC0+IFJlLmFsbnVtXG4gIHwgXCJhc2NpaVwiICAtPiBSZS5hc2NpaVxuICB8IFwiYmxhbmtcIiAgLT4gUmUuYmxhbmtcbiAgfCBcImNudHJsXCIgIC0+IFJlLmNudHJsXG4gIHwgXCJkaWdpdFwiICAtPiBSZS5kaWdpdFxuICB8IFwibG93ZXJcIiAgLT4gUmUubG93ZXJcbiAgfCBcInByaW50XCIgIC0+IFJlLnByaW50XG4gIHwgXCJzcGFjZVwiICAtPiBSZS5zcGFjZVxuICB8IFwidXBwZXJcIiAgLT4gUmUudXBwZXJcbiAgfCBcIndvcmRcIiAgIC0+IFJlLndvcmRjXG4gIHwgXCJwdW5jdFwiICAtPiBSZS5wdW5jdFxuICB8IFwiZ3JhcGhcIiAgLT4gUmUuZ3JhcGhcbiAgfCBcInhkaWdpdFwiIC0+IFJlLnhkaWdpdFxuICB8IGNsYXNzXyAgIC0+IGludmFsaWRfYXJnIChcIkludmFsaWQgcGNyZSBjbGFzczogXCIgXiBjbGFzc18pXG5cbmxldCBwb3NpeF9jbGFzc19zdHJpbmdzID1cbiAgWyBcImFscGhhXCIgOyBcImFsbnVtXCIgOyBcImFzY2lpXCJcbiAgOyBcImJsYW5rXCIgOyBcImNudHJsXCIgOyBcImRpZ2l0XCJcbiAgOyBcImxvd2VyXCIgOyBcInByaW50XCIgOyBcInNwYWNlXCJcbiAgOyBcInVwcGVyXCIgOyBcIndvcmRcIiAgOyBcInB1bmN0XCJcbiAgOyBcImdyYXBoXCIgOyBcInhkaWdpdFwiIF1cblxubGV0IHBhcnNlIG11bHRpbGluZSBkb2xsYXJfZW5kb25seSBkb3RhbGwgdW5ncmVlZHkgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0X3MgcycgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMnIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaiA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICB0cnkgaWYgcycuW2pdIDw+IHMuWyFpICsgal0gdGhlbiByYWlzZSBFeGl0XG4gICAgICAgIHdpdGggXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgaSA6PSAhaSArIGxlbjtcbiAgICAgIHRydWVcbiAgICB3aXRoIEV4aXQgLT4gZmFsc2UgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cbiAgbGV0IGdyZWVkeV9tb2QgciA9XG4gICAgbGV0IGdyID0gYWNjZXB0ICc/JyBpblxuICAgIGxldCBnciA9IGlmIHVuZ3JlZWR5IHRoZW4gbm90IGdyIGVsc2UgZ3IgaW5cbiAgICBpZiBnciB0aGVuIFJlLm5vbl9ncmVlZHkgciBlbHNlIFJlLmdyZWVkeSByXG4gIGluXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwMSByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIGdyZWVkeV9tb2QgKFJlLm9wdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBncmVlZHlfbW9kIChSZS5yZXBuIHIgaSBqKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIGRvdGFsbCB0aGVuIFJlLmFueSBlbHNlIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz8nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgclxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyMnIHRoZW4gYmVnaW5cbiAgICAgICAgICBjb21tZW50ICgpXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZSAoKSBpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIFJlLmdyb3VwIH5uYW1lIHJcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5lb2wgZWxzZSBpZiBkb2xsYXJfZW5kb25seSB0aGVuIFJlLmxlb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuKCogWFhYXG4gICAtIEJhY2stcmVmZXJlbmNlc1xuICAgLSBcXGN4IChjb250cm9sLXgpLCBcXGRkZFxuKilcbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3cnIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdXJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdzJyAtPlxuICAgICAgICAgIFJlLnNwYWNlXG4gICAgICB8ICdTJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5zcGFjZV1cbiAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgUmUuZGlnaXRcbiAgICAgIHwgJ0QnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmRpZ2l0XVxuICAgICAgfCAnYicgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgfCAnQicgLT5cbiAgICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIHwgJ0EnIC0+XG4gICAgICAgICAgUmUuYm9zXG4gICAgICB8ICdaJyAtPlxuICAgICAgICAgIFJlLmxlb2xcbiAgICAgIHwgJ3onIC0+XG4gICAgICAgICAgUmUuZW9zXG4gICAgICB8ICdHJyAtPlxuICAgICAgICAgIFJlLnN0YXJ0XG4gICAgICB8ICdlJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDFiJ1xuICAgICAgfCAnZicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgwYydcbiAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxuJ1xuICAgICAgfCAncicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHInXG4gICAgICB8ICd0JyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcdCdcbiAgICAgIHwgJ3gnIC0+XG4gICAgICAgICAgbGV0IGMxID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgYzIgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjb2RlID0gYzEgKiAxNiArIGMyIGluXG4gICAgICAgICAgUmUuY2hhciAoY2hhcl9vZl9pbnQgY29kZSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBjIC0+XG4gICAgICAgICAgUmUuY2hhciBjXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBoZXhkaWdpdCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnYScuLidmJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCAnQScuLidGJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBuYW1lICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onKSBhcyBjIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMzIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBuYW1lJyBiID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScpIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCAnPicgLT4gQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgIHwgYENoYXIgYyAtPlxuICAgICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICAgICAgICAgIGBDaGFyIGMnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgICAgIHwgYFNldCBzdCcgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHN0JyA6OiBzKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgICAgfCBgU2V0IHN0IC0+IGJyYWNrZXQgKHN0IDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICBpZiBhY2NlcHQgJzonIHRoZW5cbiAgICAgICAgbGV0IGNvbXBsID0gYWNjZXB0ICdeJyBpblxuICAgICAgICBsZXQgY2xzID1cbiAgICAgICAgICB0cnkgTGlzdC5maW5kIGFjY2VwdF9zIHBvc2l4X2NsYXNzX3N0cmluZ3NcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSBQYXJzZV9lcnJvciBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdF9zIFwiOl1cIikgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IHJlID1cbiAgICAgICAgICBsZXQgcG9zaXhfY2xhc3MgPSBwb3NpeF9jbGFzc19vZl9zdHJpbmcgY2xzIGluXG4gICAgICAgICAgaWYgY29tcGwgdGhlbiBSZS5jb21wbCBbcG9zaXhfY2xhc3NdIGVsc2UgcG9zaXhfY2xhc3MgaW5cbiAgICAgICAgYFNldCAocmUpXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgYENoYXIgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlIGlmIGMgPSAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBsZXQgYyA9IGdldCAoKSBpblxuKCogWFhYXG4gICBcXDEyNywgLi4uXG4qKVxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICdiJyAtPiBgQ2hhciAnXFwwMDgnXG4gICAgICB8ICduJyAtPiBgQ2hhciAnXFxuJyAoKlhYWCopXG4gICAgICB8ICdyJyAtPiBgQ2hhciAnXFxyJyAoKlhYWCopXG4gICAgICB8ICd0JyAtPiBgQ2hhciAnXFx0JyAoKlhYWCopXG4gICAgICB8ICd3JyAtPiBgU2V0IChSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdXJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ3MnIC0+IGBTZXQgKFJlLnNwYWNlKVxuICAgICAgfCAnUycgLT4gYFNldCAoUmUuY29tcGwgW1JlLnNwYWNlXSlcbiAgICAgIHwgJ2QnIC0+IGBTZXQgKFJlLmRpZ2l0KVxuICAgICAgfCAnRCcgLT4gYFNldCAoUmUuY29tcGwgW1JlLmRpZ2l0XSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlXG4gICAgICBgQ2hhciBjXG4gIGFuZCBjb21tZW50ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBpZiBhY2NlcHQgJyknIHRoZW4gUmUuZXBzaWxvbiBlbHNlIGJlZ2luIGluY3IgaTsgY29tbWVudCAoKSBlbmRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID1cbiAgWyBgVW5ncmVlZHkgfCBgRG90YWxsIHwgYERvbGxhcl9lbmRvbmx5XG4gIHwgYE11bHRpbGluZSB8IGBBbmNob3JlZCB8IGBDYXNlbGVzcyBdXG5cbmxldCByZSAgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9XG4gICAgcGFyc2VcbiAgICAgIChMaXN0Lm1lbXEgYE11bHRpbGluZSBvcHRzKSAoTGlzdC5tZW1xIGBEb2xsYXJfZW5kb25seSBvcHRzKVxuICAgICAgKExpc3QubWVtcSBgRG90YWxsIG9wdHMpIChMaXN0Lm1lbXEgYFVuZ3JlZWR5IG9wdHMpXG4gICAgICBzXG4gIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBBbmNob3JlZCBvcHRzIHRoZW4gUmUuc2VxIFtSZS5zdGFydDsgcl0gZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBDYXNlbGVzcyBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGVybC5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgPSBQZXJsLk5vdF9zdXBwb3J0ZWRcblxudHlwZSByZWdleHAgPSBSZS5yZVxuXG50eXBlIGZsYWcgPSBbIGBDQVNFTEVTUyB8IGBNVUxUSUxJTkUgfCBgQU5DSE9SRUQgfCBgRE9UQUxMIF1cblxudHlwZSBzcGxpdF9yZXN1bHQgPVxuICB8IFRleHQgIG9mIHN0cmluZ1xuICB8IERlbGltIG9mIHN0cmluZ1xuICB8IEdyb3VwIG9mIGludCAqIHN0cmluZ1xuICB8IE5vR3JvdXBcblxudHlwZSBncm91cHMgPSBDb3JlLkdyb3VwLnRcblxubGV0IHJlID8oZmxhZ3MgPSBbXSkgcGF0ID1cbiAgbGV0IG9wdHMgPSBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICB8IGBDQVNFTEVTUyAtPiBgQ2FzZWxlc3NcbiAgICB8IGBNVUxUSUxJTkUgLT4gYE11bHRpbGluZVxuICAgIHwgYEFOQ0hPUkVEIC0+IGBBbmNob3JlZFxuICAgIHwgYERPVEFMTCAtPiBgRG90YWxsXG4gICkgZmxhZ3MgaW5cbiAgUGVybC5yZSB+b3B0cyBwYXRcblxubGV0IHJlZ2V4cCA/ZmxhZ3MgcGF0ID0gUmUuY29tcGlsZSAocmUgP2ZsYWdzIHBhdClcblxubGV0IGV4dHJhY3QgfnJleCBzID1cbiAgUmUuR3JvdXAuYWxsIChSZS5leGVjIHJleCBzKVxuXG5sZXQgZXhlYyB+cmV4ID9wb3MgcyA9XG4gIFJlLmV4ZWMgcmV4ID9wb3Mgc1xuXG5sZXQgZ2V0X3N1YnN0cmluZyBzIGkgPVxuICBSZS5Hcm91cC5nZXQgcyBpXG5cbmxldCBuYW1lcyByZXggPVxuICBSZS5ncm91cF9uYW1lcyByZXhcbiAgfD4gTGlzdC5tYXAgZnN0XG4gIHw+IEFycmF5Lm9mX2xpc3RcblxubGV0IGdldF9uYW1lZF9zdWJzdHJpbmcgcmV4IG5hbWUgcyA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IChuLCBpKSA6OiByZW0gd2hlbiBuID0gbmFtZSAtPlxuICAgICAgIGJlZ2luXG4gICAgICAgICB0cnkgZ2V0X3N1YnN0cmluZyBzIGlcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGxvb3AgcmVtXG4gICAgICAgZW5kXG4gICAgfCBfIDo6IHJlbSAtPiBsb29wIHJlbVxuICBpblxuICBsb29wIChSZS5ncm91cF9uYW1lcyByZXgpXG5cbmxldCBnZXRfc3Vic3RyaW5nX29mcyBzIGkgPVxuICBSZS5Hcm91cC5vZmZzZXQgcyBpXG5cbmxldCBwbWF0Y2ggfnJleCBzID1cbiAgUmUuZXhlY3AgcmV4IHNcblxubGV0IHN1YnN0aXR1dGUgfnJleCB+c3Vic3Qgc3RyID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHBhdCA9IFJlLkdyb3VwLmdldCBzcyAwIGluXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN1YnN0IHBhdCk7XG4gICAgICBsb29wIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKTtcbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgIClcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB+cmV4IHN0ciA9XG4gIGxldCByZWMgbG9vcCBhY2N1IHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIExpc3QucmV2IGFjY3VcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApIGluXG4gIGxvb3AgW10gMFxuXG4oKiBGcm9tIFBDUkUgKilcbmxldCBzdHJpbmdfdW5zYWZlX3N1YiBzIG9mcyBsZW4gPVxuICBsZXQgciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgQnl0ZXMudW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChsZW4gbHNsIDEpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgfCAnXFxcXCcgfCAnXicgfCAnJCcgfCAnLicgfCAnWycgfCAnfCdcbiAgICB8ICcoJyAgfCAnKScgfCAnPycgfCAnKicgfCAnKycgfCAneycgYXMgYyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyAnXFxcXCc7XG4gICAgICBpbmNyIHBvcztcbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgICB8IGMgLT4gQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICBkb25lO1xuICBzdHJpbmdfdW5zYWZlX3N1YiBidWYgMCAhcG9zXG5cbmxldCBmdWxsX3NwbGl0ID8obWF4PTApIH5yZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA9IDAgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbVGV4dCBzXVxuICBlbHNlXG4gICAgbGV0IHJlc3VsdHMgPSBSZS5zcGxpdF9mdWxsIHJleCBzIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYFRleHQgcyAtPiBbVGV4dCBzXVxuICAgICAgICB8IGBEZWxpbSBkIC0+XG4gICAgICAgICAgbGV0IG1hdGNoZXMgPSBSZS5Hcm91cC5hbGxfb2Zmc2V0IGQgaW5cbiAgICAgICAgICBsZXQgZGVsaW0gPSBSZS5Hcm91cC5nZXQgZCAwIGluXG4gICAgICAgICAgKERlbGltIGRlbGltKTo6KFxuICAgICAgICAgICAgbGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggbWF0Y2hlcyAtIDEgZG9cbiAgICAgICAgICAgICAgbCA6PVxuICAgICAgICAgICAgICAgIChpZiBtYXRjaGVzLihpKSA9ICgtMSwgLTEpXG4gICAgICAgICAgICAgICAgIHRoZW4gTm9Hcm91cFxuICAgICAgICAgICAgICAgICBlbHNlIEdyb3VwIChpLCBSZS5Hcm91cC5nZXQgZCBpKSlcbiAgICAgICAgICAgICAgICA6OighbClcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBMaXN0LnJldiAhbCkpIHJlc3VsdHMgaW5cbiAgICBMaXN0LmNvbmNhdCBtYXRjaGVzXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxuKCpcbldoYXQgd2UgY291bGQgKHNob3VsZD8pIGRvOlxuLSBhKiA9PT4gbG9uZ2VzdCAoKHNob3J0ZXN0IChub19ncm91cCBhKSogKSwgYSB8ICgpKSAgKCEhISlcbi0gYWJjIHVuZGVyc3Rvb2QgYXMgKGFiKWNcbi0gXCIoKGE/KXxiKVwiIGFnYWluc3QgXCJhYlwiIHNob3VsZCBub3QgYmluZCB0aGUgZmlyc3Qgc3VicGF0dGVybiB0byBhbnl0aGluZ1xuXG5Ob3RlIHRoYXQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGhhbmRsZSBcIigoKGFiKWMpZCllXCIgZWZmaWNpZW50bHlcbiopXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIG5ld2xpbmUgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIFJlLnJlcG4gKFJlLm5lc3QgcikgaSBqXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLm5vdG5sIGVsc2UgUmUuYW55XG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgUmUuZ3JvdXAgclxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuZGlmZiAoUmUuY29tcGwgKGJyYWNrZXQgW10pKSAoUmUuY2hhciAnXFxuJylcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd8JyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICc/J1xuICAgICAgfCAnWycgfCAnLicgfCAnXicgfCAnJCcgfCAneycgfCAnXFxcXCcgYXMgYyAtPiBSZS5jaGFyIGNcbiAgICAgIHwgICAgICAgICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkICgqWFhYKilcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgY1xuICAgIGVuZCBlbHNlXG4gICAgICBjXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9IFtgSUNhc2UgfCBgTm9TdWIgfCBgTmV3bGluZV1cblxubGV0IHJlID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPSBwYXJzZSAoTGlzdC5tZW1xIGBOZXdsaW5lIG9wdHMpIHMgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYElDYXNlIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBOb1N1YiBvcHRzIHRoZW4gUmUubm9fZ3JvdXAgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSByZSA9IFJlLmNvbXBpbGUgKFJlLmxvbmdlc3QgcmUpXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxub3BlbiBTdG9yZVxuXG5tb2R1bGUgTWFrZSAoUyA6IFNUT1JFKSA9IHN0cnVjdFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgcmFuayBvZiBhIHZlcnRleCBpcyB0aGUgbWF4aW11bSBsZW5ndGgsIGluIGVkZ2VzLCBvZiBhbiB1bmNvbXByZXNzZWQgcGF0aFxuICAgdGhhdCBsZWFkcyB0byB0aGlzIHZlcnRleC4gSW4gb3RoZXIgd29yZHMsIHRoZSByYW5rIG9mIFt4XSBpcyB0aGUgaGVpZ2h0IG9mXG4gICB0aGUgdHJlZSByb290ZWQgYXQgW3hdIHRoYXQgd291bGQgZXhpc3QgaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHBhdGhcbiAgIGNvbXByZXNzaW9uLiAqKVxuXG50eXBlIHJhbmsgPVxuICBpbnRcblxuKCogVGhlIGNvbnRlbnQgb2YgYSB2ZXJ0ZXggaXMgYSBwb2ludGVyIHRvIGEgcGFyZW50IHZlcnRleCAoaWYgdGhlIHZlcnRleFxuICAgaGFzIGEgcGFyZW50KSBvciBhIHBhaXIgb2YgYSByYW5rIGFuZCBhIHVzZXIgdmFsdWUgKGlmIHRoZSB2ZXJ0ZXggaGFzIG5vXG4gICBwYXJlbnQsIGFuZCBpcyB0aHVzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggZm9yIHRoaXMgZXF1aXZhbGVuY2VcbiAgIGNsYXNzKS4gKilcblxuKCogSW4gdGhpcyB2ZXJzaW9uIHRoZSBjb2RlLCB0aGUgdHlwZSBbJ2EgY29udGVudF0gbXVzdCBub3QgbXV0YWJsZS4gSW5kZWVkLFxuICAgZXZlcnkgbXV0YXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgdmlhIFtTLnNldF0uICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgJ2EgcnJlZlxufCBSb290IG9mIHJhbmsgKiAnYVxuXG4oKiBUaGUgdHlwZSBbJ2EgcnJlZl0gcmVwcmVzZW50cyBhIHZlcnRleCBpbiB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZS4gKilcblxuYW5kICdhIHJyZWYgPVxuICAnYSBjb250ZW50IFMucnJlZlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgdHlwZSBvZiBzdG9yZXMsIGFuZCB0aGUgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgbmV3IHN0b3JlLCBhcmUgdGhvc2VcbiAgIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIFtTXS4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gICdhIGNvbnRlbnQgUy5zdG9yZVxuXG5sZXQgbmV3X3N0b3JlIDogdW5pdCAtPiAnYSBzdG9yZSA9XG4gIFMubmV3X3N0b3JlXG5cbmxldCBjb3B5IDogJ2Egc3RvcmUgLT4gJ2Egc3RvcmUgPVxuICBTLmNvcHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2UgcyB2XSBjcmVhdGVzIGEgbmV3IHJvb3Qgb2YgcmFuayB6ZXJvLiAqKVxuXG5sZXQgbWFrZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICBTLm1ha2UgcyAoUm9vdCAoMCwgdikpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtmaW5kIHMgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgXykgLT5cbiAgICAgIHhcbiAgfCBMaW5rIHkgLT5cbiAgICAgIGxldCB6ID0gZmluZCBzIHkgaW5cbiAgICAgIGlmIFMuZXEgcyB5IHogdGhlblxuICAgICAgICB6XG4gICAgICBlbHNlXG4gICAgICAgIGxldCBsaW5rX3RvX3ogPSBTLmdldCBzIHkgaW5cbiAgICAgICAgUy5zZXQgcyB4IGxpbmtfdG9fejtcbiAgICAgICAgelxuXG5sZXQgaXNfcmVwcmVzZW50YXRpdmUgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6IGJvb2wgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHMgeCB5XSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHZlcnRpY2VzIFt4XSBhbmQgW3ldIGJlbG9uZyBpbiB0aGUgc2FtZVxuICAgZXF1aXZhbGVuY2UgY2xhc3MuIEl0IGRvZXMgc28gdmlhIHR3byBjYWxscyB0byBbZmluZF0gYW5kIGEgcGh5c2ljYWxcbiAgIGVxdWFsaXR5IHRlc3QuIEFzIGEgZmFzdCBwYXRoLCB3ZSBmaXJzdCB0ZXN0IHdoZXRoZXIgW3hdIGFuZCBbeV0gYXJlXG4gICBwaHlzaWNhbGx5IGVxdWFsLiAqKVxuXG5sZXQgZXEgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIFMuZXEgcyB4IHkgfHwgUy5lcSBzIChmaW5kIHMgeCkgKGZpbmQgcyB5KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0XyBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCB2KSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtnZXQgcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCB2KSAtPlxuICAgICAgdlxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAoXywgdikgLT5cbiAgICAgICAgICB2XG4gICAgICB8IExpbmsgXyAtPlxuICAgICAgICAgIGdldF8gcyB4XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXRfIHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAociwgXykgLT5cbiAgICAgIFMuc2V0IHMgeCAoUm9vdCAociwgdikpXG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW3NldCBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAociwgXykgLT5cbiAgICAgIFMuc2V0IHMgeCAoUm9vdCAociwgdikpXG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChyLCBfKSAtPlxuICAgICAgICAgIFMuc2V0IHMgeSAoUm9vdCAociwgdikpXG4gICAgICB8IExpbmsgXyAtPlxuICAgICAgICAgIHNldF8gcyB4IHZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3VuaW9uIHMgeCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIF8pIC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeCAoTGluayB5KTsgeVxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7IHhcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCArIDEsIHZ4KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSBzIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCB2eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeCAoTGluayB5KTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gUy5zZXQgcyB5IChSb290IChyeSwgdikpO1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiBTLnNldCBzIHggKFJvb3QgKHJ4LCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4KzEsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgcmFuayBvZiBhIHZlcnRleCBpcyB0aGUgbWF4aW11bSBsZW5ndGgsIGluIGVkZ2VzLCBvZiBhbiB1bmNvbXByZXNzZWQgcGF0aFxuICAgdGhhdCBsZWFkcyB0byB0aGlzIHZlcnRleC4gSW4gb3RoZXIgd29yZHMsIHRoZSByYW5rIG9mIFt4XSBpcyB0aGUgaGVpZ2h0IG9mXG4gICB0aGUgdHJlZSByb290ZWQgYXQgW3hdIHRoYXQgd291bGQgZXhpc3QgaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHBhdGhcbiAgIGNvbXByZXNzaW9uLiAqKVxuXG50eXBlIHJhbmsgPVxuICBpbnRcblxuKCogVGhlIGNvbnRlbnQgb2YgYSB2ZXJ0ZXggaXMgYSBwb2ludGVyIHRvIGEgcGFyZW50IHZlcnRleCAoaWYgdGhlIHZlcnRleFxuICAgaGFzIGEgcGFyZW50KSBvciBhIHBhaXIgb2YgYSByYW5rIGFuZCBhIHVzZXIgdmFsdWUgKGlmIHRoZSB2ZXJ0ZXggaGFzIG5vXG4gICBwYXJlbnQsIGFuZCBpcyB0aHVzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggZm9yIHRoaXMgZXF1aXZhbGVuY2VcbiAgIGNsYXNzKS4gKilcblxuKCogV2UgbWFrZSB0aGUgdHlwZSBbJ2EgY29udGVudF0gbXV0YWJsZSwgYW5kIHdlIG1haW50YWluIHRoZSBwcm9wZXJ0eSB0aGF0XG4gICBldmVyeSB2ZXJ0ZXggdW5pcXVlbHkgb3ducyBpdHMgY29udGVudC4gVGhpcyBhbGxvd3MgdXMgdG8gdXBkYXRlIGEgY29udGVudFxuICAgaW4gcGxhY2UgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IGNvbnRlbnQgYW5kIHVwZGF0aW5nIHRoZSB2ZXJ0ZXggd2l0aFxuICAgdGhpcyBuZXcgY29udGVudC5cblxuICAgV2Ugb2J0YWluIHRoZSBwcm9wZXJ0eSB0aGF0OlxuICAgLSBvbmx5IFttYWtlXSBhbGxvY2F0ZXMgYSBuZXcgdmVydGV4IChhIHJlZmVyZW5jZSBhbmQgYSBbUm9vdF0gY29udGVudCk7XG4gICAtIG9ubHkgW3VuaW9uXSBhbmQgW21lcmdlXSBhbGxvY2F0ZSBhIG5ldyBlZGdlIChhIFtMaW5rXSBjb250ZW50KS5cbiAgIFtmaW5kXSwgW2dldF0sIFtzZXRdLCBbZXFdIGFsbG9jYXRlIG5vIG1lbW9yeS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiB7IG11dGFibGUgcGFyZW50IDogJ2EgZWxlbSB9XG58IFJvb3Qgb2YgeyBtdXRhYmxlIHJhbmsgOiByYW5rOyBtdXRhYmxlIHZhbHVlIDogJ2EgfVxuXG4oKiBUaGUgdHlwZSBbJ2EgZWxlbV0gcmVwcmVzZW50cyBhIHZlcnRleCBpbiB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZS4gKilcblxuYW5kICdhIGVsZW0gPVxuICAnYSBjb250ZW50IHJlZlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSB2XSBjcmVhdGVzIGEgbmV3IHJvb3Qgb2YgcmFuayB6ZXJvLiAqKVxuXG5sZXQgbWFrZSAodiA6ICdhKSA6ICdhIGVsZW0gPVxuICByZWYgKFJvb3QgeyByYW5rID0gMDsgdmFsdWUgPSB2IH0pXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtmaW5kIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgc28gYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHggOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB4XG4gIHwgTGluayAoeyBwYXJlbnQgPSB5IH0gYXMgbGluaykgLT5cbiAgICAgIGxldCB6ID0gZmluZCB5IGluXG4gICAgICBpZiB6ICE9IHkgdGhlblxuICAgICAgICBsaW5rLnBhcmVudCA8LSB6O1xuICAgICAgelxuXG5sZXQgaXNfcmVwcmVzZW50YXRpdmUgKHggOiAnYSBlbGVtKSA6IGJvb2wgPVxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgeCB5XSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHZlcnRpY2VzIFt4XSBhbmQgW3ldIGJlbG9uZyBpbiB0aGVcbiAgIHNhbWUgZXF1aXZhbGVuY2UgY2xhc3MuIEl0IGRvZXMgc28gdmlhIHR3byBjYWxscyB0byBbZmluZF0gYW5kIGFcbiAgIHBoeXNpY2FsIGVxdWFsaXR5IHRlc3QuIEFzIGEgZmFzdCBwYXRoLCB3ZSBmaXJzdCB0ZXN0IHdoZXRoZXIgW3hdXG4gICBhbmQgW3ldIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAqKVxuXG5sZXQgZXEgKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIHggPT0geSB8fCBmaW5kIHggPT0gZmluZCB5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXQgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldCAoeCA6ICdhIGVsZW0pIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCB7IHZhbHVlID0gdjsgXyB9IC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldCB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0ICh4IDogJ2EgZWxlbSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3Qgcm9vdCAtPlxuICAgICAgcm9vdC52YWx1ZSA8LSB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3VuaW9uIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IF8gfSBhcyByb290eCksIFJvb3QgeyByYW5rID0gcnk7IF8gfSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB4IDo9IExpbmsgeyBwYXJlbnQgPSB5IH07XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHh9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgdmFsdWUgPSB2eCB9IGFzIHJvb3R4KSxcbiAgICAgIFJvb3QgKHsgcmFuayA9IHJ5OyB2YWx1ZSA9IHZ5IH0gYXMgcm9vdHkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB4IDo9IExpbmsgeyBwYXJlbnQgPSB5IH07XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIHJvb3R5LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBJTlRNQVAgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHZhbCBlbXB0eTogJ2EgdFxuICB2YWwgZmluZDogaW50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIGFkZDogaW50IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbnRNYXAgOiBJTlRNQVApID0gc3RydWN0XG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYSBwYWlyIG9mIGFuIGludGVnZXIgYWRkcmVzcyBhbmQgYSBtYXAgb2ZcbiAgIGludGVnZXIgYWRkcmVzc2VzIHRvIHZhbHVlcy4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZVxuICAgZG9tYWluIG9mIHRoZSBtYXAgW2NvbnRlbnRdIGlzIHRoZSBzZW1pLW9wZW4gaW50ZXJ2YWwgb2YgemVyb1xuICAgKGluY2x1ZGVkKSB1cCB0byBbbGltaXRdIChleGNsdWRlZCkuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGNvbnRlbnQgb2YgdGhlIHN0b3JlLiAqKVxuICBtdXRhYmxlIGNvbnRlbnQ6ICdhIEludE1hcC50XG59XG5cbmxldCBuZXdfc3RvcmUgKCkgPSB7XG4gIGxpbWl0ID0gMDtcbiAgY29udGVudCA9IEludE1hcC5lbXB0eVxufVxuXG4oKiBCZWNhdXNlIGEgcGVyc2lzdGVudCBtYXAgaXMgdXNlZCwgY29weWluZyBhIHN0b3JlIGFtb3VudHMgdG8gY29weWluZ1xuICAgdGhlIG11dGFibGUgcmVjb3JkIGF0IHRoZSByb290LiAqKVxuXG5sZXQgY29weSBzID1cbiAgeyBsaW1pdCA9IHMubGltaXQ7IGNvbnRlbnQgPSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBqdXN0IGFuIGludGVnZXIgYWRkcmVzcy4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbmxldCBtYWtlIHMgdiA9XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBzLmNvbnRlbnQgPC0gSW50TWFwLmFkZCB4IHYgcy5jb250ZW50O1xuICB4XG5cbigqIFtjaGVjayBzIHhdIGNoZWNrcyB0aGF0IHRoZSBhZGRyZXNzIFt4XSBpcyBpbiByYW5nZSBmb3IgdGhlIHN0b3JlIFtzXS4gSWZcbiAgIHRoaXMgZHluYW1pYyBjaGVjayBmYWlscywgdGhlbiB0aGUgdXNlciBpcyBjb25mdXNlZCBhbmQgaGFzIHBhc3NlZCB1cyBhblxuICAgYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAoSWYgdGhlIGNoZWNrIHN1Y2NlZWRzLFxuICAgdGhlIHVzZXIgbWF5IGJlIGNvbmZ1c2VkIHRvbyEgYnV0IHdlIGNhbm5vdCBkZXRlY3QgaXQuKSAqKVxuXG5leGNlcHRpb24gSW52YWxpZFJlZlxuXG5sZXQgY2hlY2sgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgIGlmIHggPj0gcy5saW1pdCB0aGVuXG4gICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IGdldCBzIHggPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgSW50TWFwLmZpbmQgeCBzLmNvbnRlbnRcblxubGV0IHNldCBzIHggdiA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBzLmNvbnRlbnQgPC0gSW50TWFwLmFkZCB4IHYgcy5jb250ZW50XG5cbmxldCBlcSBzICh4IDogaW50KSAoeSA6IGludCkgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuXG5lbmRcblxuKCogSW5jbHVkZSB0aGUgbW9zdCBjb21tb24gaW5zdGFuY2Ugb2YgdGhlIGFib3ZlIGZ1bmN0b3IuICopXG5cbmluY2x1ZGUgTWFrZShNYXAuTWFrZShzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBjb21wYXJlID0gKC0pICgqIG9rIHNpbmNlIHRoZSBhcmd1bWVudHMgYXJlIG5vbm5lZ2F0aXZlIGludGVnZXJzICopXG5lbmQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFdoZW4gT0NhbWwncyBidWlsdC1pbiBzdG9yZSBpcyB1c2VkLCBubyBleHBsaWNpdCBzdG9yZSBpcyBuZWVkZWQuICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICB1bml0XG5cbmxldCBuZXdfc3RvcmUgKCkgPVxuICAoKVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbigqIEEgcmVmZXJlbmNlIGlzIGEgcHJpbWl0aXZlIHJlZmVyZW5jZS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgJ2EgcmVmXG5cbmxldCBtYWtlICgpIHYgPVxuICByZWYgdlxuXG5sZXQgZ2V0ICgpIHggPVxuICAheFxuXG5sZXQgc2V0ICgpIHggdiA9XG4gIHggOj0gdlxuXG5sZXQgZXEgKCkgeCB5ID1cbiAgeCA9PSB5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSByZWZlcmVuY2UgY2VsbCByZWNvcmRzIGJvdGggaXRzIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZSBhbmRcbiAgIGl0cyBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gQSBjZWxsIGlzIGNvbnNpZGVyZWQgc3RhYmxlIHdoZW4gdGhlc2UgdHdvIHZhbHVlc1xuICAgYXJlIChwaHlzaWNhbGx5KSBlcXVhbCwgYW5kIHVuc3RhYmxlIG90aGVyd2lzZS4gKilcblxuKCogT25lIGNvdWxkIHBlcmhhcHMgZW5yaWNoIGVhY2ggY2VsbCB3aXRoIGEgcG9pbnRlciB0byBpdHMgc3RvcmUsIHNvIGFzIHRvXG4gICBlbnN1cmUgYXQgcnVudGltZSB0aGF0IHRoZSB1c2VyIGlzIG5vdCBjb25mdXNlZC4gKilcblxudHlwZSAnYSBycmVmID0ge1xuICAoKiBUaGUgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlLiAqKVxuICBtdXRhYmxlIGN1cnJlbnQ6ICdhO1xuICAoKiBUaGUgbGFzdCBjb21taXR0ZWQgdmFsdWUuICopXG4gIG11dGFibGUgY29tbWl0dGVkOiAnYVxufVxuXG4oKiBBIHRyYW5zYWN0aW9uIGNvbnRhaW5zIGEgc3RhY2sgb2YgYWxsIHVuc3RhYmxlIGNlbGxzIChhbmQgcG9zc2libHkgc29tZVxuICAgc3RhYmxlIGNlbGxzIHRvbywgYWx0aG91Z2ggdGhhdCBpcyB1bmxpa2VseSkuICopXG5cbnR5cGUgJ2EgdHJhbnNhY3Rpb24gPVxuICAnYSBycmVmIFN0YWNrLnRcblxuKCogQSBzdG9yZSBjb250YWlucyBhbiBvcHRpb25hbCB0cmFuc2FjdGlvbi4gVGhpcyBpbmRpY2F0ZXMgd2hldGhlciBhXG4gICB0cmFuc2FjdGlvbiBpcyBjdXJyZW50bHkgb25nb2luZy4gVHJhbnNhY3Rpb25zIGNhbm5vdCBiZSBuZXN0ZWQuICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICB7IG11dGFibGUgdHJhbnNhY3Rpb246ICdhIHRyYW5zYWN0aW9uIG9wdGlvbiB9XG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9XG4gIHsgdHJhbnNhY3Rpb24gPSBOb25lIH1cblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG5sZXQgbWFrZSAoX3MgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgeyBjdXJyZW50ID0gdjsgY29tbWl0dGVkID0gdiB9XG5cbmxldCBnZXQgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIHguY3VycmVudFxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgKCogSWYgdGhlIG5ldyB2YWx1ZSBoYXBwZW5zIHRvIGJlIHRoZSBjdXJyZW50IHZhbHVlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLiAqKVxuICBsZXQgY3VycmVudCA9IHguY3VycmVudCBpblxuICBpZiB2ID09IGN1cnJlbnQgdGhlblxuICAgICgpXG4gIGVsc2UgYmVnaW4gbWF0Y2ggcy50cmFuc2FjdGlvbiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgKCogT3V0c2lkZSBvZiBhIHRyYW5zYWN0aW9uLCB0d28gbm9ybWFsIHdyaXRlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZC5cbiAgICAgICAgIFRoZSBjZWxsIHJlbWFpbnMgc3RhYmxlLiBOb3RoaW5nIGlzIGxvZ2dlZC4gKilcbiAgICAgIHguY3VycmVudCA8LSB2O1xuICAgICAgeC5jb21taXR0ZWQgPC0gdlxuICB8IFNvbWUgc3RhY2sgLT5cbiAgICAgICgqIFdlIGFyZSB3aXRoaW4gYSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICgqIElmIHRoaXMgY2VsbCB3YXMgc3RhYmxlIGFuZCBub3cgYmVjb21lcyB1bnN0YWJsZSwgdGhlbiBpdCBtdXN0IGJlXG4gICAgICAgICBpbnNlcnRlZCBpbnRvIHRoZSBzZXQgb2YgdW5zdGFibGUgY2VsbHMsIHdoaWNoIGlzIHJlY29yZGVkIGFzIHBhcnRcbiAgICAgICAgIG9mIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgIGlmIGN1cnJlbnQgPT0geC5jb21taXR0ZWQgdGhlblxuICAgICAgICBTdGFjay5wdXNoIHggc3RhY2s7XG4gICAgICAoKiBUaGUgY2VsbCBtdXN0IHRoZW4gYmUgdXBkYXRlZC4gSWYgW3ZdIGhhcHBlbnMgdG8gYmUgZXF1YWwgdG9cbiAgICAgICAgIFtjb21taXR0ZWRdLCB0aGlzIGNvdWxkIG1ha2UgdGhlIGNlbGwgc3RhYmxlIGFnYWluLiBXZSBkbyBub3RcbiAgICAgICAgIGNoZWNrIGZvciB0aGlzIHVubGlrZWx5IHNpdHVhdGlvbi4gVGhpcyBtZWFucyB0aGF0IHRoZSBzZXQgb2ZcbiAgICAgICAgIHVuc3RhYmxlIGNlbGxzIGNvdWxkIGFjdHVhbGx5IGNvbnRhaW4gc3RhYmxlIGNlbGxzIHRvby4gKilcbiAgICAgIHguY3VycmVudCA8LSB2XG4gICAgZW5kXG5cbmxldCBlcSAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIHggPT0geVxuXG5leGNlcHRpb24gTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG5cbmxldCBjb21taXQgeCA9XG4gIHguY29tbWl0dGVkIDwtIHguY3VycmVudFxuXG5sZXQgcm9sbGJhY2sgeCA9XG4gIHguY3VycmVudCA8LSB4LmNvbW1pdHRlZFxuXG5sZXQgdGVudGF0aXZlbHkgKHMgOiAnYSBzdG9yZSkgKGYgOiB1bml0IC0+ICdiKSA6ICdiID1cbiAgbWF0Y2ggcy50cmFuc2FjdGlvbiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgICByYWlzZSBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgc3RhY2sgPSBTdGFjay5jcmVhdGUoKSBpblxuICAgICAgcy50cmFuc2FjdGlvbiA8LSBTb21lIHN0YWNrO1xuICAgICAgdHJ5XG4gICAgICAgIGxldCBiID0gZigpIGluXG4gICAgICAgICgqIENvbW1pdCBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIGNvbW1pdCBzdGFjaztcbiAgICAgICAgKCogQ2xvc2UgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgICBzLnRyYW5zYWN0aW9uIDwtIE5vbmU7XG4gICAgICAgICgqIFJlcG9ydCB0aGUgb3V0Y29tZS4gKilcbiAgICAgICAgYlxuICAgICAgd2l0aCBlIC0+XG4gICAgICAgIGxldCBiID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UoKSBpblxuICAgICAgICAoKiBSb2xsIGJhY2sgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciByb2xsYmFjayBzdGFjaztcbiAgICAgICAgKCogQ2xvc2UgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgICBzLnRyYW5zYWN0aW9uIDwtIE5vbmU7XG4gICAgICAgICgqIFJlcG9ydCB0aGUgb3V0Y29tZS4gKilcbiAgICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhbiBleHRlbnNpYmxlIGFycmF5LCB0aGF0IGlzLCBhIHBhaXIgb2YgYW5cbiAgIGludGVnZXIgYWRkcmVzcyBhbmQgYW4gYXJyYXkuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgbGVuZ3RoIG9mXG4gICB0aGUgYXJyYXkgaXMgYXQgbGVhc3QgW2xpbWl0XS4gVGhlIGFyZWEgb2YgdGhlIGFycmF5IGF0IGluZGV4IFtsaW1pdF0gYW5kXG4gICBiZXlvbmQgaXMgY29uc2lkZXJlZCB1bmluaXRpYWxpemVkLiAqKVxuXG4oKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhpcyBhcmVhIGlzIGZpbGxlZCB3aXRoIGFyYml0cmFyeSB2YWx1ZShzKVxuICAgcHJvdmlkZWQgYnkgdGhlIHVzZXIgaW4gY2FsbHMgdG8gW21ha2VdIG9yIFtzZXRdLiBUaGlzIGlzIG5vdCBpZGVhbCwgYXMgaXRcbiAgIGNhbiBjYXVzZSBhIG1lbW9yeSBsZWFrLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbG9naWNhbCBzaXplIG9mIHRoZSBhcnJheTsgYWxzbywgdGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgYXJyYXksIHdob3NlIGxlbmd0aCBpcyBhdCBsZWFzdCBbbGltaXRdLiAqKVxuICBtdXRhYmxlIGNvbnRlbnQ6ICdhIGFycmF5XG59XG5cbigqIFRoZSBhcnJheSBpcyBjcmVhdGVkIHdpdGggYSBzaXplIGFuZCBsZW5ndGggb2YgemVyby4gV2UgaGF2ZSBubyBvdGhlclxuICAgY2hvaWNlLCBzaW5jZSB3ZSBkbyBub3QgaGF2ZSBhIHZhbHVlIG9mIHR5cGUgWydhXSBhdCBoYW5kLiAqKVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPSB7XG4gIGxpbWl0ID0gMDtcbiAgY29udGVudCA9IFt8fF1cbn1cblxuKCogQ29weWluZyBpcyBzdXBwb3J0ZWQsIGJ1dCBpcyBub3QgY2hlYXAuIFVzZSBhdCB5b3VyIG93biByaXNrLiAqKVxuXG5sZXQgY29weSAocyA6ICdhIHN0b3JlKSA6ICdhIHN0b3JlID1cbiAgeyBsaW1pdCA9IHMubGltaXQ7IGNvbnRlbnQgPSBBcnJheS5jb3B5IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGFuIGluZGV4IGludG8gdGhlIGFycmF5LiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxuKCogVGhlIGFycmF5IGp1bXBzIGZyb20gbGVuZ3RoIHplcm8gdG8gbGVuZ3RoIFtkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXSBhcyBzb29uXG4gICBhcyBhIGNhbGwgdG8gW21ha2VdIGlzIG1hZGUuICopXG5cbmxldCBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoID1cbiAgMjU2XG5cbigqIFtlbmxhcmdlIHMgdl0gaW5jcmVhc2VzIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IChpZiBuZWNlc3NhcnkpIHNvIGFzIHRvXG4gICBlbnN1cmUgdGhhdCBbcy5saW1pdF0gYmVjb21lcyBhIHZhbGlkIGluZGV4LiBUaGUgYXJndW1lbnQgW3ZdIGlzIHVzZWQgYXMgYVxuICAgZGVmYXVsdCB2YWx1ZSB0byBmaWxsIHRoZSB1bmluaXRpYWxpemVkIGFyZWEuICopXG5cbmxldCBlbmxhcmdlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCBjb250ZW50ID0gcy5jb250ZW50IGluXG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29udGVudCBpblxuICBpZiBzLmxpbWl0ID0gbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuZ3RoJyA9XG4gICAgICBpZiBsZW5ndGggPSAwIHRoZW5cbiAgICAgICAgZGVmYXVsdF9pbml0aWFsX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICAyICogbGVuZ3RoXG4gICAgaW5cbiAgICBhc3NlcnQgKHMubGltaXQgPCBsZW5ndGgnKTtcbiAgICBsZXQgY29udGVudCcgPSBBcnJheS5tYWtlIGxlbmd0aCcgdiBpblxuICAgIEFycmF5LmJsaXQgY29udGVudCAwIGNvbnRlbnQnIDAgbGVuZ3RoO1xuICAgIHMuY29udGVudCA8LSBjb250ZW50J1xuICBlbmRcblxuKCogTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgW0FycmF5LnVuc2FmZV9zZXRdIGFuZCBbQXJyYXkudW5zYWZlX2dldF0gd2l0aG91dFxuICAgYW55IHByZWNhdXRpb25zLCBzaW5jZSB0aGUgT0NhbWwgdHlwZS1jaGVja2VyIGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGVcbiAgIGluZGljZXMgYXJlIGluIHJhbmdlLiBBIGNvbmZ1c2VkIHVzZXIgY291bGQgcGFzcyByZWZlcmVuY2VzIGludG8gc29tZVxuICAgb3RoZXIgc3RvcmUuIFdlIGNob29zZSB0byBleHBsaWNpdGx5IGNoZWNrIHRoYXQgdGhlIGluZGV4IGlzIHdpdGhpbiB0aGVcbiAgIGxvZ2ljYWwgYm91bmRzIG9mIHRoZSBhcnJheSAtLSB0aGlzIGlzIGEgbW9yZSBwcmVjaXNlIGNoZWNrLiAqKVxuXG5leGNlcHRpb24gSW52YWxpZFJlZlxuXG5sZXQgY2hlY2sgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6IHVuaXQgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gIGlmIHggPj0gcy5saW1pdCB0aGVuXG4gICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgbWFrZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICBlbmxhcmdlIHMgdjtcbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdjtcbiAgeFxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX2dldCBzLmNvbnRlbnQgeFxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHZcblxubGV0IGVxICAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG4iLCJsZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiOyAvLyBVVEYtOCBlbmNvZGluZyBmb3IgVSswMEEwIFwiTm8tYnJlYWsgc3BhY2VcIlxuXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIi8vIE1hcHMga2V5ZWQgYnkgYW4gZW5kIHBvc2l0aW9uXG4vLyBJbnZhcmllbnQ6IGtleXMgYXJlIGFzY2VuZGluZyBhbmQgdW5pcXVlXG50eXBlIGtleSA9IGludDtcbnR5cGUgdCgnYSkgPSBsaXN0KChrZXksICdhKSk7XG5sZXQgZW1wdHk6ICdhLiB0KCdhKSA9IFtdO1xubGV0IHNpbmdsZXRvbjogJ2EuIChrZXksICdhKSA9PiB0KCdhKSA9IChwb3MsIHgpID0+IFsocG9zLCB4KV07XG5sZXQgcmVjIHVuaW9uOiAnYS4gKCgnYSwgJ2EpID0+ICdhLCB0KCdhKSwgdCgnYSkpID0+IHQoJ2EpID1cbiAgKGYsIHQxLCB0MikgPT5cbiAgICBzd2l0Y2ggKHQxLCB0Mikge1xuICAgIHwgKFtdLCB0X290aGVyKSA9PiB0X290aGVyXG4gICAgfCAodF9vdGhlciwgW10pID0+IHRfb3RoZXJcbiAgICB8IChbKHAxLCB4MSksIC4uLnhzMV0sIFsocDIsIHgyKSwgLi4ueHMyXSkgPT5cbiAgICAgIGlmIChwMSA8IHAyKSB7XG4gICAgICAgIFsocDEsIHgxKSwgLi4udW5pb24oZiwgeHMxLCBbKHAyLCB4MiksIC4uLnhzMl0pXTtcbiAgICAgIH0gZWxzZSBpZiAocDEgPiBwMikge1xuICAgICAgICBbKHAyLCB4MiksIC4uLnVuaW9uKGYsIFsocDEsIHgxKSwgLi4ueHMxXSwgeHMyKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbKHAxLCBmKHgxLCB4MikpLCAuLi51bmlvbihmLCB4czEsIHhzMildO1xuICAgICAgfVxuICAgIH07XG5sZXQgcmVjIG1hcDogJ2EgJ2IuICgnYSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYoeCkpLCAuLi5tYXAoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBpOiAnYSAnYi4gKChrZXksICdhKSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYocG9zLCB4KSksIC4uLm1hcGkoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBrOiAnYSAnYi4gKChrZXksICdhKSA9PiAoa2V5LCAnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIGYgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IFtmKHBvcywgeCksIC4uLm1hcGsoZiwgcmVzdCldO1xubGV0IHJlYyBmb2xkX2xlZnQ6ICdhICdiLiAoKGtleSwgJ2IsICdhKSA9PiAnYiwgJ2IsIHQoJ2EpKSA9PiAnYiA9XG4gIChmLCB6KSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gelxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBmb2xkX2xlZnQoZiwgZihwb3MsIHosIHgpLCByZXN0KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IHtcbiAgcm93OiBpbnQsXG4gIGNvbDogaW50LFxufTtcblxubGV0IGNvbXBhcmUgPSAocG9zMSwgcG9zMikgPT5cbiAgaWYgKHBvczEucm93IDwgcG9zMi5yb3cpIHtcbiAgICAoLTEpO1xuICB9IGVsc2UgaWYgKHBvczEucm93ID4gcG9zMi5yb3cpIHtcbiAgICAxO1xuICB9IGVsc2Uge1xuICAgIEludC5jb21wYXJlKHBvczEuY29sLCBwb3MyLmNvbCk7XG4gIH07XG5cbmxldCB6ZXJvID0ge3JvdzogMCwgY29sOiAwfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIFRPRE86IHJlbmFtZSBBbm5vdCB0byBBbm4/XG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIEludmFyaWFudDogY29udGFpbnMgbm8gbmV3bGluZXMuIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBBc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7IC8vIEFubm90YXRpb25zXG5cbmxldCBhbGlnbiA9IChsOiB0KCdhbm5vdCkpID0+IEFsaWduKGwpO1xubGV0IGFubm90ID0gKGFubm90OiAnYW5ub3QsIGw6IHQoJ2Fubm90KSkgPT4gQW5ub3QoYW5ub3QsIGwpO1xuXG5sZXQgcmVjIHJlbW92ZV9hbm5vdHMgPSAobGF5b3V0OiB0KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICBzd2l0Y2ggKGxheW91dCkge1xuICB8IEFubm90KF8sIGwpID0+IHJlbW92ZV9hbm5vdHMobClcbiAgfCBUZXh0KHN0cmluZykgPT4gVGV4dChzdHJpbmcpXG4gIHwgQ2F0KGwxLCBsMikgPT4gQ2F0KHJlbW92ZV9hbm5vdHMobDEpLCByZW1vdmVfYW5ub3RzKGwyKSlcbiAgfCBMaW5lYnJlYWsgPT4gTGluZWJyZWFrXG4gIHwgQWxpZ24obCkgPT4gQWxpZ24ocmVtb3ZlX2Fubm90cyhsKSlcbiAgfTtcbn07XG5cbi8vIFRPRE8/XG4vL2xldCB0ZXh0ID0gKHN0cmluZykgPT4gdF9vZl9sYXlvdXQoVGV4dChzdHJpbmcpKTtcbi8vbGV0IGNhdCA9ICh0MSwgdDIpID0+IHRfb2ZfbGF5b3V0KENhdCh0MSwgdDIpKTtcbi8vbGV0IGxpbmVicmVhayA9IHRfb2ZfbGF5b3V0KGxpbmVicmVhayk7XG5cbi8vIFRPRE86IG1vdmUgdG8gb3duIG1vZHVsZVxudHlwZSB0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpID0ge1xuICAvLyBUT0RPOiByZW5hbWUgYGltcGBcbiAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+ICdpbXAsXG4gIGltcF9hcHBlbmQ6ICgnaW1wLCAnaW1wKSA9PiAnaW1wLFxuICBpbXBfbmV3bGluZTogaW50ID0+ICdpbXAsXG4gIGltcF9vZl9hbm5vdDogKCdhbm5vdCwgJ2ltcCkgPT4gJ2ltcCxcbiAgdF9vZl9pbXA6ICdpbXAgPT4gJ3QsXG59O1xuXG5sZXQgbWtfb2ZfbGF5b3V0OiAodGV4dCgnYW5ub3QsICdpbXAsICd0KSwgdCgnYW5ub3QpKSA9PiAndCA9XG4gICh0ZXh0LCBsYXlvdXQpID0+IHtcbiAgICBsZXQgY29sdW1uOiByZWYoaW50KSA9IHJlZigwKTtcbiAgICBsZXQgcmVjIGdvOiAoaW50LCB0KCdhbm5vdCkpID0+ICdpbXAgPVxuICAgICAgKGluZGVudCwgbGF5b3V0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAgICAgY29sdW1uIDo9IGNvbHVtbl4gKyBVbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgICAgIHRleHQuaW1wX29mX3N0cmluZyhzdHJpbmcpO1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IGltcDEgPSBnbyhpbmRlbnQsIGwxKTtcbiAgICAgICAgICBsZXQgaW1wMiA9IGdvKGluZGVudCwgbDIpO1xuICAgICAgICAgIHRleHQuaW1wX2FwcGVuZChpbXAxLCBpbXAyKTtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICAvLyBUT0RPOiBubyBpbmRlbnQgaWYgb24gZmluYWwgbGluZSBicmVha1xuICAgICAgICAgIGNvbHVtbiA6PSBpbmRlbnQ7XG4gICAgICAgICAgdGV4dC5pbXBfbmV3bGluZShpbmRlbnQpO1xuICAgICAgICB8IEFsaWduKGwpID0+IGdvKGNvbHVtbl4sIGwpXG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+IHRleHQuaW1wX29mX2Fubm90KGFubm90LCBnbyhpbmRlbnQsIGwpKVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB0ZXh0LnRfb2ZfaW1wKGdvKDAsIGxheW91dCkpO1xuICB9O1xuXG5sZXQgc3RyaW5nX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gc3RyaW5nID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOiAnYW5ub3QuIHRleHQoJ2Fubm90LCBzdHJpbmcsIHN0cmluZykgPSB7XG4gICAgICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gc3RyaW5nLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4gczEgKysgczIsXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFwiXFxuXCIgKysgU3RyaW5nLm1ha2UoaW5kZW50LCAnICcpLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogaW1wID0+IGltcCxcbiAgICB9O1xuICAgIG1rX29mX2xheW91dChyZWNvcmQsIGxheW91dCk7XG4gIH07XG5cbmxldCBzdHJpbmdzX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gbGlzdCgoaW50LCBzdHJpbmcpKSA9XG4gIGxheW91dCA9PiB7XG4gICAgbGV0IHJlY29yZDpcbiAgICAgICdhbm5vdC5cbiAgICAgIHRleHQoJ2Fubm90LCBsaXN0KChpbnQsIHN0cmluZykpLCBsaXN0KChpbnQsIHN0cmluZykpKVxuICAgICA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBbKDAsIHN0cmluZyldLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4ge1xuICAgICAgICBzd2l0Y2ggKExpc3QucmV2KHMxKSwgczIpIHtcbiAgICAgICAgfCAoW10sIF8pID0+IHMyXG4gICAgICAgIHwgKF8sIFtdKSA9PiBzMVxuICAgICAgICB8IChcbiAgICAgICAgICAgIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSksIC4uLnJlc3QxXSxcbiAgICAgICAgICAgIFsoZmlyc3RfaW5kZW50XzIsIGZpcnN0X3N0cmluZ18yKSwgLi4ucmVzdDJdLFxuICAgICAgICAgICkgPT5cbiAgICAgICAgICBhc3NlcnQoZmlyc3RfaW5kZW50XzIgPT0gMCk7XG4gICAgICAgICAgTGlzdC5yZXYocmVzdDEpXG4gICAgICAgICAgQCBbKGxhc3RfaW5kZW50XzEsIGxhc3Rfc3RyaW5nXzEgKysgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml07XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgaW1wX25ld2xpbmU6IGluZGVudCA9PiBbKGluZGVudCwgXCJcIildLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogcyA9PiBzLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcbiIsImxldCBzcGxpdF9maXJzdCA9ICh4czogbGlzdCgnYSkpOiAoJ2EsIGxpc3QoJ2EpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgW2ZpcnN0LCAuLi50cmFpbGluZ10gPT4gKGZpcnN0LCB0cmFpbGluZylcbiAgfTtcblxubGV0IHNwbGl0X2xhc3Rfb3B0ID0gKHhzOiBsaXN0KCdhKSk6IG9wdGlvbigobGlzdCgnYSksICdhKSkgPT5cbiAgc3dpdGNoIChMaXN0LnJldih4cykpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3ksIC4uLnlzXSA9PiBTb21lKChMaXN0LnJldih5cyksIHkpKVxuICB9O1xubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ2EpKTogKGxpc3QoJ2EpLCAnYSkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKFwiZW1wdHkgbGlzdFwiKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSBib3ggPSB7XG4gIGhlaWdodDogaW50LFxuICB3aWR0aDogaW50LFxufTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIGxheW91dDogdCcoJ2Fubm90KSxcbiAgbWV0cmljczogbGlzdChib3gpLFxufVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IExpbmVicmVha1xuICB8IFRleHQoc3RyaW5nKVxuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpO1xuXG50eXBlIHdpdGhfb2Zmc2V0KCdhbm5vdCkgPSAoaW50LCB0KCdhbm5vdCkpO1xuXG5sZXQgaGVpZ2h0ID0gKG06IHQoXykpID0+XG4gIG0ubWV0cmljcyB8PiBMaXN0Lm1hcChib3ggPT4gYm94LmhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKTtcblxubGV0IHdpZHRoID0gKH5vZmZzZXQ9MCwgbTogdChfKSkgPT5cbiAgTGlzdC50bChtLm1ldHJpY3MpXG4gIHw+IExpc3QubWFwKGJveCA9PiBib3gud2lkdGgpXG4gIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgb2Zmc2V0ICsgTGlzdC5oZChtLm1ldHJpY3MpLndpZHRoKTtcblxubGV0IGZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6ICdhY2MsXG4gICAgICB+dGV4dDogc3RyaW5nID0+ICdhY2MsXG4gICAgICB+YWxpZ246ICdhY2MgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6ICgnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gYWxsb3cgY2xpZW50IHRvIGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgICh0KCdhbm5vdCkgPT4gJ2FjYywgJ2Fubm90LCB0KCdhbm5vdCkpID0+ICdhY2MsXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAobTogdChfKSkgPT5cbiAgICBzd2l0Y2ggKG0ubGF5b3V0KSB7XG4gICAgfCBMaW5lYnJlYWsgPT4gbGluZWJyZWFrXG4gICAgfCBUZXh0KHMpID0+IHRleHQocylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKGdvKG0pKVxuICAgIHwgQ2F0KG0xLCBtMikgPT5cbiAgICAgIGxldCBhY2MxID0gZ28obTEpO1xuICAgICAgbGV0IGFjYzIgPSBnbyhtMik7XG4gICAgICBjYXQoYWNjMSwgYWNjMik7XG4gICAgfCBBbm5vdChhbm4sIG0pID0+IGFubm90KGdvLCBhbm4sIG0pXG4gICAgfTtcbiAgZ28obSk7XG59O1xuXG5sZXQgbmV4dF9wb3NpdGlvbiA9XG4gICAgKH5pbmRlbnQ6IGludCwge3JvdywgY29sfTogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKVxuICAgIDogTWVhc3VyZWRQb3NpdGlvbi50ID0+IHtcbiAgbGV0IHVwZGF0ZWRfcm93ID0gcm93ICsgaGVpZ2h0KG0pIC0gMTtcbiAgbGV0IHVwZGF0ZWRfY29sID0ge1xuICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0ubWV0cmljcyk7XG4gICAgbGFzdC53aWR0aFxuICAgICsgKFxuICAgICAgc3dpdGNoIChsZWFkaW5nKSB7XG4gICAgICB8IFtdID0+IGNvbFxuICAgICAgfCBbXywgLi4uX10gPT4gaW5kZW50XG4gICAgICB9XG4gICAgKTtcbiAgfTtcbiAge3JvdzogdXBkYXRlZF9yb3csIGNvbDogdXBkYXRlZF9jb2x9O1xufTtcblxubGV0IHBvc19mb2xkID1cbiAgICAoXG4gICAgICB+bGluZWJyZWFrOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4gJ2FjYyxcbiAgICAgIH50ZXh0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCBzdHJpbmcpID0+ICdhY2MsXG4gICAgICB+YWxpZ246IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MpID0+ICdhY2MsXG4gICAgICB+Y2F0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCAnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gbGV0IGNsaWVudCBjb250cm9sIHJlY3Vyc2lvbiBiYXNlZCBvbiBhbm5vdGF0aW9uXG4gICAgICAgICAoXG4gICAgICAgICAgIH5nbzogdCgnYW5ub3QpID0+ICdhY2MsXG4gICAgICAgICAgIH5pbmRlbnQ6IGludCxcbiAgICAgICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICAgICAgICdhbm5vdCxcbiAgICAgICAgICAgdCgnYW5ub3QpXG4gICAgICAgICApID0+XG4gICAgICAgICAnYWNjLFxuICAgICAgfmluZGVudD0wLFxuICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQ9TWVhc3VyZWRQb3NpdGlvbi56ZXJvLFxuICAgICAgbTogdCgnYW5ub3QpLFxuICAgIClcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgcmVjIGdvID0gKGluZGVudDogaW50LCBzdGFydDogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWsoc3RhcnQpXG4gICAgfCBUZXh0KHMpID0+IHRleHQoc3RhcnQsIHMpXG4gICAgfCBBbGlnbihtKSA9PiBhbGlnbihzdGFydCwgZ28oc3RhcnQuY29sLCBzdGFydCwgbSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IG1pZCA9IG5leHRfcG9zaXRpb24ofmluZGVudCwgc3RhcnQsIG0xKTtcbiAgICAgIGNhdChzdGFydCwgZ28oaW5kZW50LCBzdGFydCwgbTEpLCBnbyhpbmRlbnQsIG1pZCwgbTIpKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QofmdvPWdvKGluZGVudCwgc3RhcnQpLCB+aW5kZW50LCB+c3RhcnQsIGFubiwgbSlcbiAgICB9O1xuICBnbyhpbmRlbnQsIHN0YXJ0LCBtKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgdGFibGU6IE1lbW9UYmwudChMYXlvdXQudCh1bml0KSwgdCh1bml0KSkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldCh0YWJsZSwgT2JqLm1hZ2ljKGwpKSkge1xuICAgIHwgU29tZShtKSA9PiBPYmoubWFnaWMobSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBtID1cbiAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgIHwgTGluZWJyZWFrID0+XG4gICAgICAgICAgbGV0IGJveCA9IHtoZWlnaHQ6IDEsIHdpZHRoOiAwfTtcbiAgICAgICAgICB7bWV0cmljczogW2JveCwgYm94XSwgbGF5b3V0OiBMaW5lYnJlYWt9O1xuICAgICAgICB8IFRleHQocykgPT4ge1xuICAgICAgICAgICAgbWV0cmljczogW3toZWlnaHQ6IDEsIHdpZHRoOiBVbmljb2RlLmxlbmd0aChzKX1dLFxuICAgICAgICAgICAgbGF5b3V0OiBUZXh0KHMpLFxuICAgICAgICAgIH1cbiAgICAgICAgfCBBbGlnbihsKSA9PlxuICAgICAgICAgIGxldCBtID0gbWsobCk7XG4gICAgICAgICAgbGV0IGJvdW5kaW5nX2JveCA9XG4gICAgICAgICAgICBtLm1ldHJpY3NcbiAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAoe2hlaWdodDogYmgsIHdpZHRoOiBid30sIHtoZWlnaHQsIHdpZHRofSkgPT5cbiAgICAgICAgICAgICAgICAgICB7aGVpZ2h0OiBiaCArIGhlaWdodCwgd2lkdGg6IG1heChidywgd2lkdGgpfSxcbiAgICAgICAgICAgICAgICAge2hlaWdodDogMCwgd2lkdGg6IDB9LFxuICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB7bWV0cmljczogW2JvdW5kaW5nX2JveF0sIGxheW91dDogQWxpZ24obSl9O1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IG0xID0gbWsobDEpO1xuICAgICAgICAgIGxldCBtMiA9IG1rKGwyKTtcbiAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChtMS5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgKGZpcnN0LCB0cmFpbGluZykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChtMi5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgbWlkX2JveCA9IHtcbiAgICAgICAgICAgIGhlaWdodDogbWF4KGxhc3QuaGVpZ2h0LCBmaXJzdC5oZWlnaHQpLFxuICAgICAgICAgICAgd2lkdGg6IGxhc3Qud2lkdGggKyBmaXJzdC53aWR0aCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHttZXRyaWNzOiBsZWFkaW5nIEAgW21pZF9ib3gsIC4uLnRyYWlsaW5nXSwgbGF5b3V0OiBDYXQobTEsIG0yKX07XG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICB7Li4ubSwgbGF5b3V0OiBBbm5vdChhbm5vdCwgbSl9O1xuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKG0pKTtcbiAgICAgIG07XG4gICAgfTtcbiAgfTtcbn07XG4iLCJ0eXBlIHQgPSB7XG4gIC8vIFN1bSBvZiB0aGUgc3F1YXJlIG9mIGhvdyBtdWNoIGVhY2ggbGluZSBleHRlbmRzIGJleW9uZCBtYXggd2lkdGguICBVc3VhbGx5IHplcm8uXG4gIG92ZXJmbG93X2Nvc3Q6IGludCxcbiAgLy8gSGVpZ2h0IG1pbnVzIG9uZS4gIEEuay5hLiBudW1iZXIgb2YgbGluZSBicmVha3MuXG4gIGhlaWdodF9jb3N0OiBpbnQsXG59O1xuXG5sZXQgbWsgPSAofm92ZXJmbG93X2Nvc3Q6IGludCwgfmhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdCxcbiAgaGVpZ2h0X2Nvc3QsXG59O1xuXG5sZXQgbWtfaGVpZ2h0ID0gKGhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IG1rKH5vdmVyZmxvd19jb3N0PTAsIH5oZWlnaHRfY29zdCk7XG5cbmxldCBta19vdmVyZmxvdyA9IChvdmVyZmxvd19jb3N0OiBpbnQpOiB0ID0+XG4gIG1rKH5vdmVyZmxvd19jb3N0LCB+aGVpZ2h0X2Nvc3Q9MCk7XG5cbmxldCB6ZXJvOiB0ID0ge292ZXJmbG93X2Nvc3Q6IDAsIGhlaWdodF9jb3N0OiAwfTtcblxubGV0IGluZjogdCA9IHtvdmVyZmxvd19jb3N0OiBtYXhfaW50LCBoZWlnaHRfY29zdDogbWF4X2ludH07XG5cbmxldCBhZGQgPSAoYzE6IHQsIGMyOiB0KTogdCA9PiB7XG4gIG92ZXJmbG93X2Nvc3Q6IGMxLm92ZXJmbG93X2Nvc3QgKyBjMi5vdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdDogYzEuaGVpZ2h0X2Nvc3QgKyBjMi5oZWlnaHRfY29zdCxcbn07XG5cbmxldCBlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGMxLm92ZXJmbG93X2Nvc3QgPT09IGMyLm92ZXJmbG93X2Nvc3QgJiYgYzEuaGVpZ2h0X2Nvc3QgPT09IGMyLmhlaWdodF9jb3N0O1xuXG5sZXQgbHQgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDwgYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8IGMyLm92ZXJmbG93X2Nvc3Q7XG4gIH07XG5cbmxldCBsZXEgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDw9IGMyLmhlaWdodF9jb3N0O1xuICB9IGVsc2Uge1xuICAgIGMxLm92ZXJmbG93X2Nvc3QgPD0gYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbm1vZHVsZSBXaWR0aFBvc0tleSA9IHtcbiAgdHlwZSB0ID0gKGludCwgaW50KTtcbiAgbGV0IGhhc2ggPSAoKHdpZHRoLCBwb3MpKSA9PiAyNTYgKiAyNTYgKiB3aWR0aCArIHBvcztcbiAgbGV0IGVxdWFsID0gKCh3MSwgcDEpLCAodzIsIHAyKSkgPT4gdzEgPT0gdzIgJiYgcDEgPT0gcDI7XG59O1xuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTWFrZShXaWR0aFBvc0tleSk7XG5cbi8vIE5PVEU6IHBvcyBpcyByZWxhdGl2ZSB0byBtb3N0IHJlY2VudCBgQWxpZ25gXG50eXBlIG0nKCdhKSA9IFBvc01hcC50KChDb3N0LnQsICdhKSk7XG50eXBlIG0oJ2EpID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpID0+IG0nKCdhKTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIG1lbTogW0BzZXhwLm9wYXF1ZV0gTS50KG0nKExheW91dC50KCdhbm5vdCkpKSxcbiAgZG9jOiB0JygnYW5ub3QpLFxufVxuW0BkZXJpdmluZyBzZXhwXVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKSAvLyBUZXh0KFwiXCIpIGlzIGlkZW50aXR5IGZvciBgQ2F0YFxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSkgLy8gYXNzb2NpYXRpdmVcbiAgfCBMaW5lYnJlYWtcbiAgfCBBbGlnbih0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpIC8vIEFubm90YXRpb25zXG4gIHwgRmFpbCAvLyBpZGVudGl0eSBmb3IgYENob2ljZWBcbiAgfCBDaG9pY2UodCgnYW5ub3QpLCB0KCdhbm5vdCkpO1xuXG5sZXQgdF9vZl90JyA9ICh0JzogdCcoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7bWVtOiBNLmNyZWF0ZSgwKSwgZG9jOiB0J307XG5cbmxldCB0ZXh0ID0gKHM6IHN0cmluZykgPT4gdF9vZl90JyhUZXh0KHMpKTtcbmxldCBsaW5lYnJlYWsgPSAoKSA9PiB0X29mX3QnKExpbmVicmVhayk7XG5sZXQgYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhBbGlnbihkb2MpKTtcbmxldCBhbm5vdCA9IChhbm5vdCwgZG9jKSA9PiB0X29mX3QnKEFubm90KGFubm90LCBkb2MpKTtcbmxldCBmYWlsID0gKCkgPT4gdF9vZl90JyhGYWlsKTtcblxubGV0IGVtcHR5ID0gKCkgPT4gdGV4dChcIlwiKTtcbmxldCBzcGFjZSA9ICgpID0+IHRleHQoVW5pY29kZS5uYnNwKTsgLy8gVE9ETzogcGFyYW0gdG8gaHNlcFxuXG5sZXQgaW5kZW50ID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3AgKysgVW5pY29kZS5uYnNwKTtcbmxldCBpbmRlbnRfYW5kX2FsaWduID0gZG9jID0+IHRfb2ZfdCcoQ2F0KGluZGVudCgpLCBhbGlnbihkb2MpKSk7XG5cbmxldCBoY2F0ID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHkpKTtcbmxldCBoY2F0czogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoY2F0LCBkb2MsIGRvY3MpO1xuXG5sZXQgaHNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChzcGFjZSgpLCB5KSkpKTtcbmxldCBoc2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoc2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgdnNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChsaW5lYnJlYWsoKSwgeSkpKSk7XG5sZXQgdnNlcHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBmYWlsd2l0aChfX0xPQ19fICsrIFwiOiB2c2VwcyByZXF1aXJlcyBhIG5vbi1lbXB0eSBsaXN0XCIpXG4gIHwgW2RvY10gPT4gZG9jXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQodnNlcCwgZG9jLCBkb2NzKTtcblxubGV0IGNob2ljZSA9ICh4LCB5KSA9PiB0X29mX3QnKENob2ljZSh4LCB5KSk7XG5sZXQgY2hvaWNlczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWwoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGNob2ljZSwgZG9jLCBkb2NzKTtcblxubGV0IG1hcF90JzogJ2EgJ2IuICh0JygnYSkgPT4gdCcoJ2IpLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT4gdF9vZl90JyhmKGQuZG9jKSk7XG5cbmxldCByZWMgbWFwX2Fubm90OiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT5cbiAgICBkXG4gICAgfD4gbWFwX3QnKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChUZXh0KF8pIHwgTGluZWJyZWFrIHwgRmFpbCkgYXMgZCcgPT4gZCdcbiAgICAgICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IEFubm90KGYoYW5ub3QpLCBtYXBfYW5ub3QoZiwgZCkpXG4gICAgICAgICB8IEFsaWduKGQpID0+IEFsaWduKG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQ2F0KGQxLCBkMikgPT4gQ2F0KG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpXG4gICAgICAgICB8IENob2ljZShkMSwgZDIpID0+IENob2ljZShtYXBfYW5ub3QoZiwgZDEpLCBtYXBfYW5ub3QoZiwgZDIpKSxcbiAgICAgICApO1xuIiwiLy8gVE9ETzogY29tcHV0ZSBhY3R1YWwgbGF5b3V0IHNpemUgYW5kIHVzZSBpbnN0ZWFkIG9mIHRfb2ZfbGF5b3V0XG5sZXQgcmVjIGFsbDogJ2Fubm90LiBEb2MudCgnYW5ub3QpID0+IGxpc3QoTGF5b3V0LnQoJ2Fubm90KSkgPSB7XG4gIGRvYyA9PiB7XG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT4gW0xheW91dC5UZXh0KHN0cmluZyldXG4gICAgfCBDYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0IGxzMSA9IGFsbChkMSk7XG4gICAgICBsZXQgbHMyID0gYWxsKGQyKTtcbiAgICAgIExpc3QuY29uY2F0KFxuICAgICAgICBMaXN0Lm1hcChsMSA9PiBMaXN0Lm1hcChsMiA9PiBMYXlvdXQuQ2F0KGwxLCBsMiksIGxzMiksIGxzMSksXG4gICAgICApO1xuICAgIHwgTGluZWJyZWFrID0+IFtMYXlvdXQuTGluZWJyZWFrXVxuICAgIHwgQWxpZ24oZCkgPT4gTGlzdC5tYXAobCA9PiBMYXlvdXQuQWxpZ24obCksIGFsbChkKSlcbiAgICB8IEFubm90KGFubm90LCBkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5Bbm5vdChhbm5vdCwgbCksIGFsbChkKSlcbiAgICB8IEZhaWwgPT4gW11cbiAgICB8IENob2ljZShkMSwgZDIpID0+IGFsbChkMSkgQCBhbGwoZDIpXG4gICAgfTtcbiAgfTtcbn07XG5cbi8vIE5vdGU6IFRoaXMgdW5pb24gaXMgbGVmdCBiaWFzZWRcbmxldCBtJ191bmlvbjogJ2EuIChEb2MubScoJ2EpLCBEb2MubScoJ2EpKSA9PiBEb2MubScoJ2EpID1cbiAgKHAxLCBwMikgPT4ge1xuICAgIGxldCBjb3N0X3VuaW9uID0gKChjb3N0MTogQ29zdC50LCBfKSBhcyB0MSwgKGNvc3QyOiBDb3N0LnQsIF8pIGFzIHQyKSA9PlxuICAgICAgaWYgKENvc3QubGVxKGNvc3QxLCBjb3N0MikpIHtcbiAgICAgICAgdDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0MjtcbiAgICAgIH07XG4gICAgUG9zTWFwLnVuaW9uKGNvc3RfdW5pb24sIHAxLCBwMik7XG4gIH07XG5cbmxldCByZWMgbGF5b3V0X29mX2RvYycgPSAoZG9jOiBEb2MudCh1bml0KSk6IERvYy5tKExheW91dC50KHVuaXQpKSA9PiB7XG4gIGxldCBnID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICAvLyBUT0RPOiBsaWZ0IHRoZSBzd2l0Y2goZG9jLmRvYykgb3V0c2lkZSB0aGUgbGFtYmRhXG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgIC8vIFRPRE86IGNhY2hlIHRleHQgbGVuZ3RoIGluIFRleHQ/XG4gICAgICBsZXQgcG9zJyA9IHBvcyArIFN0cmluZy5sZW5ndGgoc3RyaW5nKTsgLy9Vbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgbGV0IGNvc3QgPVxuICAgICAgICBpZiAocG9zJyA8PSB3aWR0aCkge1xuICAgICAgICAgIENvc3QuemVybztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgb3ZlcmZsb3cgPSBwb3MnIC0gd2lkdGg7XG4gICAgICAgICAgLy8gb3ZlcmZsb3dfY29zdCA9IHN1bSBpIGZyb20gMSB0byBvdmVyZmxvd1xuICAgICAgICAgIGxldCBvdmVyZmxvd19jb3N0ID0gb3ZlcmZsb3cgKiAob3ZlcmZsb3cgKyAxKSAvIDI7XG4gICAgICAgICAgQ29zdC5ta19vdmVyZmxvdyhvdmVyZmxvd19jb3N0KTtcbiAgICAgICAgfTtcbiAgICAgIFBvc01hcC5zaW5nbGV0b24ocG9zJywgKGNvc3QsIExheW91dC5UZXh0KHN0cmluZykpKTtcbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbDEgPSBsYXlvdXRfb2ZfZG9jJyhkMSwgfndpZHRoLCB+cG9zKTtcbiAgICAgIFBvc01hcC5mb2xkX2xlZnQoXG4gICAgICAgIChwb3MsIHosIChjb3N0MSwgbGF5b3V0MSkpID0+IHtcbiAgICAgICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgICAgICBsZXQgbGF5b3V0cyA9XG4gICAgICAgICAgICBQb3NNYXAubWFwKFxuICAgICAgICAgICAgICAoKGNvc3QyLCBsYXlvdXQyKSkgPT5cbiAgICAgICAgICAgICAgICAoQ29zdC5hZGQoY29zdDEsIGNvc3QyKSwgTGF5b3V0LkNhdChsYXlvdXQxLCBsYXlvdXQyKSksXG4gICAgICAgICAgICAgIGwyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBtJ191bmlvbih6LCBsYXlvdXRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgUG9zTWFwLmVtcHR5LFxuICAgICAgICBsMSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgIFBvc01hcC5zaW5nbGV0b24oMCwgKENvc3QubWtfaGVpZ2h0KDEpLCBMYXlvdXQuTGluZWJyZWFrKSlcbiAgICB8IEFsaWduKGQpID0+XG4gICAgICBsZXQgbGF5b3V0ID0gbGF5b3V0X29mX2RvYycoZCwgfndpZHRoPXdpZHRoIC0gcG9zLCB+cG9zPTApO1xuICAgICAgUG9zTWFwLm1hcGsoXG4gICAgICAgIChwLCAoYywgbCkpID0+IChwICsgcG9zLCAoYywgTGF5b3V0LkFsaWduKGwpKSksXG4gICAgICAgIGxheW91dCxcbiAgICAgICk7XG4gICAgfCBBbm5vdChhbm5vdCwgZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLm1hcCgoKGMsIGwpKSA9PiAoYywgTGF5b3V0LkFubm90KGFubm90LCBsKSksIGxheW91dCk7XG4gICAgfCBGYWlsID0+IFBvc01hcC5lbXB0eVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgbGV0IGwyID0gbGF5b3V0X29mX2RvYycoZDIsIH53aWR0aCwgfnBvcyk7XG4gICAgICBtJ191bmlvbihsMSwgbDIpO1xuICAgIH07XG4gIH07XG4gIGxldCBoID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICBsZXQga2V5ID0gKHdpZHRoLCBwb3MpO1xuICAgIHN3aXRjaCAoRG9jLk0uZmluZF9vcHQoZG9jLm1lbSwga2V5KSkge1xuICAgIHwgU29tZSh2YWx1ZSkgPT4gdmFsdWVcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCB2YWx1ZSA9IGcofndpZHRoLCB+cG9zKTtcbiAgICAgIERvYy5NLmFkZChkb2MubWVtLCBrZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlO1xuICAgIH07XG4gIH07XG4gIGg7XG59O1xuXG5sZXQgbGF5b3V0X29mX2RvYyA9XG4gICAgKGRvYzogRG9jLnQoJ2Fubm90KSwgfndpZHRoOiBpbnQsIH5wb3M6IGludCk6IG9wdGlvbihMYXlvdXQudCgnYW5ub3QpKSA9PiB7XG4gIGxldCByZWMgbWluaW11bSA9XG4gICAgICAgICAgKChwb3MsIChjb3N0LCB0KSk6IChpbnQsIChDb3N0LnQsIG9wdGlvbignYSkpKSlcbiAgICAgICAgICA6IChsaXN0KChpbnQsIChDb3N0LnQsICdhKSkpID0+IG9wdGlvbignYSkpID0+IHtcbiAgICBmdW5cbiAgICB8IFtdID0+IHRcbiAgICB8IFsoeF9wb3MsICh4X2Nvc3QsIHgpKSwgLi4ucmVzdF0gPT5cbiAgICAgIC8vIFByZWZlciBsb3dlc3QgY29zdCwgb3IgaWYgc2FtZSBjb3N0LCBwcmVmZXIgZW5kaW5nIGF0IGFuIGVhcmxpZXIgY29sdW1uXG4gICAgICAvLyAoQ29sdW1ucyBhcmUgdW5pcXVlIGJ5IGNvbnN0cnVjdGlvbiBvZiBQb3NNYXAuKVxuICAgICAgaWYgKENvc3QubHQoeF9jb3N0LCBjb3N0KSB8fCBDb3N0LmVxKHhfY29zdCwgY29zdCkgJiYgeF9wb3MgPCBwb3MpIHtcbiAgICAgICAgbWluaW11bSgoeF9wb3MsICh4X2Nvc3QsIFNvbWUoeCkpKSwgcmVzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaW5pbXVtKChwb3MsIChjb3N0LCB0KSksIHJlc3QpO1xuICAgICAgfTtcbiAgfTtcbiAgLy8gVE9ETzogdXNlIG9wdGlvbnMgaW5zdGVhZCBvZiBtYXhfaW50XG4gIC8vIGxldCBzdGFydF90aW1lID0gU3lzLnRpbWUoKTtcbiAgbGV0IGwgPVxuICAgIG1pbmltdW0oXG4gICAgICAobWF4X2ludCwgKENvc3QuaW5mLCBOb25lKSksXG4gICAgICBPYmoubWFnaWMobGF5b3V0X29mX2RvYycoT2JqLm1hZ2ljKGRvYyksIH53aWR0aCwgfnBvcykpLFxuICAgICk7XG4gIC8vIGxldCBlbmRfdGltZSA9IFN5cy50aW1lKCk7XG4gIC8qXG4gICBQcmludGYucHJpbnRmKFxuICAgICBcImxheW91dF9vZl9kb2M6ICVkIFxcdCVmXFxuXCIsXG4gICAgIC0xLCAvL2ZzdChMYXp5LmZvcmNlKG1lbW9fdGFibGUpKSMjLnNpemUsXG4gICAgIC8vTWVtb2l6ZS5XZWFrUG9seS5UYWJsZS5sZW5ndGgoZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpKSxcbiAgICAgMTAwMC4wICouIChlbmRfdGltZSAtLiBzdGFydF90aW1lKSxcbiAgICk7XG4gICAqL1xuICBsO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZylcbiAgfCBIQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBWQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgaGVpZ2h0X3RibDogTWVtb1RibC50KHQodW5pdCksIGludCkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgaGVpZ2h0ID0gKGJveDogdCgnYW5ub3QpKSA9PlxuICAgIHN3aXRjaCAoTWVtb1RibC5nZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCkpKSB7XG4gICAgfCBTb21lKGgpID0+IGhcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBoID1cbiAgICAgICAgc3dpdGNoIChib3gpIHtcbiAgICAgICAgfCBUZXh0KF8pID0+IDFcbiAgICAgICAgfCBBbm5vdChfLCBiKSA9PiBoZWlnaHQoYilcbiAgICAgICAgfCBIQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgMSkgLy8gTm90ZTogMSBpcyBIQm94KFtdKSBoZWlnaHRcbiAgICAgICAgfCBWQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KCgrKSwgMClcbiAgICAgICAgfTtcbiAgICAgIE1lbW9UYmwuc2V0KGhlaWdodF90YmwsIE9iai5tYWdpYyhib3gpLCBoKTtcbiAgICAgIGg7XG4gICAgfTtcblxuICAvLyBOb3RlOiBhbm5vdHMgYXJlIGluc2lkZS1vdXQgKGkuZS4gTGlzdC5oZChhbm5vdHMpIGlzIHRoZSBpbm5lci1tb3N0IGFubm90KVxuICBsZXQgcmVjIGFubm90ID0gKGFubm90czogbGlzdCgnYW5ub3QpLCBib3g6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChhbm5vdHMpIHtcbiAgICB8IFtdID0+IGJveFxuICAgIHwgW2FubiwgLi4uYW5uc10gPT4gYW5ub3QoYW5ucywgQW5ub3QoYW5uLCBib3gpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBhcHBlbmRfYm94ID1cbiAgICAgICAgICAofmFubm90czogbGlzdCgnYW5ub3QpPVtdLCBib3gxOiB0KCdhbm5vdCksIGJveDI6IHQoJ2Fubm90KSlcbiAgICAgICAgICA6IHQoJ2Fubm90KSA9PlxuICAgIGlmIChoZWlnaHQoYm94MSkgPD0gMSkge1xuICAgICAgSEJveChbYW5ub3QoYW5ub3RzLCBib3gxKSwgYm94Ml0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVjIGFwcGVuZF9sYXN0ID0gKGJzMTogbGlzdCh0KCdhbm5vdCkpKTogbGlzdCh0KCdhbm5vdCkpID0+IHtcbiAgICAgICAgc3dpdGNoIChiczEpIHtcbiAgICAgICAgfCBbXSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgICB8IFtiMV0gPT4gW2FwcGVuZF9ib3gofmFubm90cywgYjEsIGJveDIpXVxuICAgICAgICB8IFtiMSwgLi4uYnMxXSA9PiBbYW5ub3QoYW5ub3RzLCBiMSksIC4uLmFwcGVuZF9sYXN0KGJzMSldXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoIChib3gxKSB7XG4gICAgICB8IFRleHQoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlIGR1ZSB0byBgYm94X2hlaWdodGAgZ3VhcmRcIilcbiAgICAgIHwgSEJveChiczEpID0+IEhCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgVkJveChiczEpID0+IFZCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgQW5ub3QoYW5ub3QsIGIpID0+IGFwcGVuZF9ib3gofmFubm90cz1bYW5ub3QsIC4uLmFubm90c10sIGIsIGJveDIpXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGFwcGVuZF9oYm94ID0gKGJveGVzMTogbGlzdCh0KCdhbm5vdCkpLCBib3hlczI6IGxpc3QodCgnYW5ub3QpKSkgPT4ge1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoYm94ZXMxKSkge1xuICAgIHwgTm9uZSA9PiBib3hlczJcbiAgICB8IFNvbWUoKGxlYWRpbmcsIGxhc3QpKSA9PiBsZWFkaW5nIEAgW2FwcGVuZF9ib3gobGFzdCwgSEJveChib3hlczIpKV1cbiAgICB9O1xuICB9O1xuXG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IG1rID0gKGw6IExheW91dC50KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIGxldCBtayA9IChib3hlczogbGlzdChsaXN0KHQoXykpKSkgPT5cbiAgICAgIFZCb3goTGlzdC5tYXAocm93ID0+IEhCb3gocm93KSwgYm94ZXMpKTtcbiAgICBsZXQgcmVjIGdvID0gKGw6IExheW91dC50KF8pKSA9PiB7XG4gICAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgICB8IFNvbWUoYm94KSA9PiBPYmoubWFnaWMoYm94KVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCBib3ggPVxuICAgICAgICAgIHN3aXRjaCAobCkge1xuICAgICAgICAgIHwgTGluZWJyZWFrID0+IFtbXSwgW11dXG4gICAgICAgICAgfCBUZXh0KHMpID0+IFtbVGV4dChzKV1dXG4gICAgICAgICAgfCBBbGlnbihsKSA9PiBbW21rKGdvKGwpKV1dXG4gICAgICAgICAgfCBBbm5vdChhbm4sIGwpID0+XG4gICAgICAgICAgICBnbyhsKSB8PiBMaXN0Lm1hcChyb3cgPT4gW0Fubm90KGFubiwgSEJveChyb3cpKV0pXG4gICAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoZ28obDEpKTtcbiAgICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGdvKGwyKSk7XG4gICAgICAgICAgICBsZWFkaW5nIEAgW2FwcGVuZF9oYm94KGxhc3QsIGZpcnN0KSwgLi4udHJhaWxpbmddO1xuICAgICAgICAgIH07XG4gICAgICAgIE1lbW9UYmwuc2V0KHRhYmxlLCBPYmoubWFnaWMobCksIE9iai5tYWdpYyhib3gpKTtcbiAgICAgICAgYm94O1xuICAgICAgfTtcbiAgICB9O1xuICAgIG1rKGdvKGwpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuUHJpbWl0aXZlcztcblxuLypcbiAgVGhlc2UgYXJlIHRoZSBzeW50YXggdGVzdCBmdW5jdGlvbnMgdXNlZCBmb3IgdGhlIHN5bnRheCB2YWxpZGF0aW9uXG4gIHNlY3Rpb24gb2YgdGhlIGV4ZXJjaXNlcy4gVGhlIHN5bnRheCB0ZXN0cyBhcmUgZGVzaWduZWQgdG9cbiAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIGNlcnRhaW4gc3ludGF4IHByb3BlcnRpZXNcbiAgZS5nLiB0YWlsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBvciB2YXJpYWJsZSB1c2FnZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN5bnRheF9yZXN1bHQgPSB7XG4gIHJlc3VsdHM6IGxpc3QoYm9vbCksXG4gIHBlcmNlbnRhZ2U6IGZsb2F0LFxufTtcblxubGV0IHJlYyBmaW5kX3Zhcl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMSkgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cDIpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdXApID0+IHthY2MgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cCl9LCBmYWxzZSwgbClcbiAgfCBQYXJlbnModXApID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIHwgQXAodXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiAgSGVscGVyIGZ1bmN0aW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uIGZpbmRfZm4gd2hpY2ggdGFrZXMgdGhlXG4gIHBhdHRlcm4gKHVwYXQpIGFuZCB0aGUgZGVmaW5pdGlvbiAoZGVmKSBvZiBhIGxldCBleHByZXNzaW9uIGFuZFxuICBjb2xsZWN0cyBmdW5jdGlvbnMgaW4gZGVmIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgaW5cbiAgdXBhdC4gRXhhbXBsZTogZm9yIHRoZSBleHByZXNzaW9uIFwibGV0IChhLGIpID0gKGZ1biB4IC0+IHgrMSwgNDEpIGluXCJcbiAgaWYgbmFtZT1cImFcIiwgdGhlbiBsPVtmdW4geCAtPiB4KzFdXG4gKi9cbmxldCByZWMgZmluZF9pbl9sZXQgPVxuICAgICAgICAoXG4gICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgIHVwYXQ6IFRlcm0uVVBhdC50LFxuICAgICAgICAgIGRlZjogVGVybS5VRXhwLnQsXG4gICAgICAgICAgbDogbGlzdChUZXJtLlVFeHAudCksXG4gICAgICAgIClcbiAgICAgICAgOiBsaXN0KFRlcm0uVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtLCBkZWYudGVybSkge1xuICB8IChQYXJlbnModXApLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGwpXG4gIHwgKFBhcmVucyh1cCksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKF8sIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwYXQsIHVlLCBsKVxuICB8IChUeXBlQW5uKHVwLCBfKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoVmFyKHgpLCBGdW4oXykpID0+IHggPT0gbmFtZSA/IFtkZWYsIC4uLmxdIDogbFxuICB8IChUdXBsZShwbCksIFR1cGxlKHVsKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgocGwpICE9IExpc3QubGVuZ3RoKHVsKSkge1xuICAgICAgbDtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAoYWNjLCB1cCwgdWUpID0+IHtmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGFjYyl9LFxuICAgICAgICBsLFxuICAgICAgICBwbCxcbiAgICAgICAgdWwsXG4gICAgICApO1xuICAgIH1cbiAgfCAoVmFyKF8pLCBfKVxuICB8IChUdXBsZShfKSwgXylcbiAgfCAoXG4gICAgICBFbXB0eUhvbGUgfCBXaWxkIHwgVHJpdiB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8XG4gICAgICBCb29sKF8pIHxcbiAgICAgIFN0cmluZyhfKSB8XG4gICAgICBMaXN0TGl0KF8pIHxcbiAgICAgIENvbnN0cnVjdG9yKF8pIHxcbiAgICAgIENvbnMoXywgXykgfFxuICAgICAgQXAoXywgXyksXG4gICAgICBfLFxuICAgICkgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kIGFueSBmdW5jdGlvbiBleHByZXNzaW9ucyBpbiB1ZXhwIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWVcbiAqL1xubGV0IHJlYyBmaW5kX2ZuID1cbiAgICAgICAgKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQsIGw6IGxpc3QoVGVybS5VRXhwLnQpKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBMZXQodXAsIGRlZiwgYm9keSkgPT5cbiAgICBsIHw+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYpIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KHVsKVxuICB8IFR1cGxlKHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHUxKSA9PiB7ZmluZF9mbihuYW1lLCB1MSwgYWNjKX0sIGwsIHVsKVxuICB8IFR5cEZ1bihfLCBib2R5KVxuICB8IEZ1bihfLCBib2R5KSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBUeXBBcCh1MSwgXylcbiAgfCBQYXJlbnModTEpXG4gIHwgVW5PcChfLCB1MSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUxKVxuICB8IFRlc3QodTEpXG4gIHwgRmlsdGVyKF8sIF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKSB8PiBmaW5kX2ZuKG5hbWUsIHUzKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgbFxuICAgIHw+IGZpbmRfZm4obmFtZSwgZm4pXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoKGwsIHUpID0+IGZpbmRfZm4obmFtZSwgdSwgbCksIF8sIGFyZ3MpXG4gIHwgTWF0Y2godTEsIHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgKF8sIHVlKSkgPT4ge2ZpbmRfZm4obmFtZSwgdWUsIGFjYyl9LFxuICAgICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSxcbiAgICAgIHVsLFxuICAgIClcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXykgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdXBhdC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVwKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApfSxcbiAgICAgIGZhbHNlLFxuICAgICAgbCxcbiAgICApXG4gIHwgUGFyZW5zKHVwKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbiA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX21lbnRpb24obmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgZGVmKSB8fCB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCBMaXN0LmV4aXN0cyh2YXJfbWVudGlvbihuYW1lKSwgdXMpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBhcHBsaWVkIG9uIGFub3RoZXIgZXhwcmVzc3Npb24uXG4gaS5lLiBBcChWYXIobmFtZSksIHUpIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfYXBwbGllZChuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBkZWYpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gIHwgVHlwQXAodSwgXykgPT5cbiAgICBzd2l0Y2ggKHUudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBmYWxzZVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICAgIH1cbiAgfCBBcCh1MSwgdTIpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfCBfID0+IExpc3QuZXhpc3RzKHZhcl9hcHBsaWVkKG5hbWUpLCB1cylcbiAgICB9XG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTIudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MSlcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBDb25zKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfYXBwbGllZChuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG4vKlxuIENoZWNrIGlmIHZhcmlhYmxlIG5hbWUgaXMgbm90IG1lbnRpb25lZCBhbnl3aGVyZSBvdXRzaWRlIG9mXG4gYSB0YWlsIHBvc2l0aW9uIGluIHVleHAuIE5vdGUgdGhhdCBpZiB0aGUgdmFyaWFibGUgaXMgbm90XG4gbWVudGlvbmVkIGFueXdoZXJlIGluIHRoZSBleHByZXNzaW9uLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLlxuICovXG5sZXQgcmVjIHRhaWxfY2hlY2sgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBEZWZlcnJhbChfKVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKSA9PiB0cnVlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSB8fCB2YXJfbWVudGlvbihuYW1lLCBkZWYpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIC8vSWYgbCBoYXMgbm8gcmVjdXJzaXZlIGNhbGxzIHRoZW4gdHJ1ZVxuICAgICFMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBUZXN0KF8pID0+IGZhbHNlXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgUGFyZW5zKHUpID0+IHRhaWxfY2hlY2sobmFtZSwgdSlcbiAgfCBVbk9wKF8sIHUpID0+ICF2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEFwKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTIpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUxKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgdGFpbF9jaGVjayhcbiAgICAgIG5hbWUsXG4gICAgICB7aWRzOiBbXSwgdGVybTogQXAoZm4sIHtpZHM6IFtdLCB0ZXJtOiBUdXBsZShhcmdzKX0pfSxcbiAgICApXG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgU2VxKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gISh2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MikgJiYgdGFpbF9jaGVjayhuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIGcpXG4gICAgICA/IGZhbHNlXG4gICAgICA6IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIChwLCBlKSkgPT4ge1xuICAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjICYmIHRhaWxfY2hlY2sobmFtZSwgZSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICAgbCxcbiAgICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgdGFpbCByZWN1cnNpdmUuXG4gKi9cbmxldCBpc190YWlsX3JlY3Vyc2l2ZSA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIGxldCBmbl9ib2RpZXMgPSBbXSB8PiBmaW5kX2ZuKG5hbWUsIHVleHApO1xuICBpZiAoTGlzdC5sZW5ndGgoZm5fYm9kaWVzKSA9PSAwKSB7XG4gICAgZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1ZSkgPT4ge2FjYyAmJiB2YXJfbWVudGlvbihuYW1lLCB1ZSkgJiYgdGFpbF9jaGVjayhuYW1lLCB1ZSl9LFxuICAgICAgdHJ1ZSxcbiAgICAgIGZuX2JvZGllcyxcbiAgICApO1xuICB9O1xufTtcblxubGV0IGNoZWNrID1cbiAgICAodWV4cDogVGVybS5VRXhwLnQsIHByZWRpY2F0ZXM6IGxpc3QoVGVybS5VRXhwLnQgPT4gYm9vbCkpOiBzeW50YXhfcmVzdWx0ID0+IHtcbiAgbGV0IHJlc3VsdHMgPSBMaXN0Lm1hcChwcmVkID0+IHt1ZXhwIHw+IHByZWR9LCBwcmVkaWNhdGVzKTtcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoKHByZWRpY2F0ZXMpO1xuICBsZXQgcGFzc2luZyA9IFV0aWwuTGlzdFV0aWwuY291bnRfcHJlZChyZXMgPT4gcmVzLCByZXN1bHRzKTtcblxuICB7XG4gICAgcmVzdWx0cyxcbiAgICBwZXJjZW50YWdlOlxuICAgICAgLy92YWN1b3VzbHkgcGFzc2VzIGlmIHRoZXJlIGFyZSBubyB0ZXN0c1xuICAgICAgbGVuZ3RoID09IDAgPyAxLiA6IGZsb2F0X29mX2ludChwYXNzaW5nKSAvLiBmbG9hdF9vZl9pbnQobGVuZ3RoKSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcHJlZGljYXRlID1cbiAgfCBWYXJBcHBsaWVkKHN0cmluZylcbiAgfCBJc1JlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNOb3RSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShzdHJpbmcpO1xuXG5sZXQgcHJlZGljYXRlX2ZuID0gcHJlZGljYXRlID0+IHtcbiAgc3dpdGNoIChwcmVkaWNhdGUpIHtcbiAgfCBWYXJBcHBsaWVkKG5hbWUpID0+IHZhcl9hcHBsaWVkKG5hbWUpXG4gIHwgSXNSZWN1cnNpdmUobmFtZSkgPT4gaXNfcmVjdXJzaXZlKG5hbWUpXG4gIHwgSXNOb3RSZWN1cnNpdmUobmFtZSkgPT4gKHVleHAgPT4gIWlzX3JlY3Vyc2l2ZShuYW1lLCB1ZXhwKSlcbiAgfCBJc1RhaWxSZWN1cnNpdmUobmFtZSkgPT4gaXNfdGFpbF9yZWN1cnNpdmUobmFtZSlcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuUHJpbWl0aXZlcztcblxubW9kdWxlIHR5cGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZTtcbiAgbGV0IGRlZmF1bHQ6IG5vZGU7XG4gIGxldCBvdXRwdXRfaGVhZGVyOiBzdHJpbmcgPT4gc3RyaW5nO1xufTtcblxubGV0IG91dHB1dF9oZWFkZXJfZ3JhZGluZyA9IF9tb2R1bGVfbmFtZSA9PlxuICBcIm1vZHVsZSBFeGVyY2lzZSA9IEdyYWRlUHJlbHVkZS5FeGVyY2lzZVxcblwiICsrIFwibGV0IHByb21wdCA9ICgpXFxuXCI7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZUVudikgPT4ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgd3JvbmdfaW1wbCgnY29kZSkgPSB7XG4gICAgaW1wbDogJ2NvZGUsXG4gICAgaGludDogc3RyaW5nLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWRkZW5fdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaW50ID0gc3RyaW5nO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdCA9IChoaW50LCBTeW50YXhUZXN0LnByZWRpY2F0ZSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0cyA9IGxpc3Qoc3ludGF4X3Rlc3QpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB5b3VyX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgcmVxdWlyZWQ6IGludCxcbiAgICBwcm92aWRlZDogaW50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludF9kaXN0cmlidXRpb24gPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiBpbnQsXG4gICAgbXV0YXRpb25fdGVzdGluZzogaW50LFxuICAgIGltcGxfZ3JhZGluZzogaW50LFxuICB9O1xuXG4gIGxldCB2YWxpZGF0ZV9wb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgKHt0ZXN0X3ZhbGlkYXRpb24sIG11dGF0aW9uX3Rlc3RpbmcsIGltcGxfZ3JhZGluZ306IHBvaW50X2Rpc3RyaWJ1dGlvbikgPT5cbiAgICB0ZXN0X3ZhbGlkYXRpb24gKyBtdXRhdGlvbl90ZXN0aW5nICsgaW1wbF9ncmFkaW5nID09IDEwMFxuICAgICAgPyAoKSA6IGZhaWx3aXRoKFwiSW52YWxpZCBwb2ludCBkaXN0cmlidXRpb24gaW4gZXhlcmNpc2UuXCIpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwKCdjb2RlKSA9IHtcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHZlcnNpb246IGludCxcbiAgICBtb2R1bGVfbmFtZTogc3RyaW5nLFxuICAgIHByb21wdDpcbiAgICAgIFtAcHJpbnRlciAoZm10LCBfKSA9PiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJwcm9tcHRcIildIFtAb3BhcXVlXSBFeGVyY2lzZUVudi5ub2RlLFxuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICBwcmVsdWRlOiAnY29kZSxcbiAgICBjb3JyZWN0X2ltcGw6ICdjb2RlLFxuICAgIHlvdXJfdGVzdHM6IHlvdXJfdGVzdHMoJ2NvZGUpLFxuICAgIHlvdXJfaW1wbDogJ2NvZGUsXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbCgnY29kZSkpLFxuICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzKCdjb2RlKSxcbiAgICBzeW50YXhfdGVzdHMsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGtleSA9IChzdHJpbmcsIGludCk7XG5cbiAgbGV0IGtleV9vZiA9IHAgPT4ge1xuICAgIChwLnRpdGxlLCBwLnZlcnNpb24pO1xuICB9O1xuXG4gIGxldCBmaW5kX2tleV9vcHQgPSAoa2V5LCBzcGVjczogbGlzdChwKCdjb2RlKSkpID0+IHtcbiAgICBzcGVjcyB8PiBVdGlsLkxpc3RVdGlsLmZpbmRpX29wdChzcGVjID0+IGtleV9vZihzcGVjKSA9PSBrZXkpO1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb3MgPVxuICAgIHwgUHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IFlvdXJJbXBsXG4gICAgfCBIaWRkZW5CdWdzKGludClcbiAgICB8IEhpZGRlblRlc3RzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzcGVjID0gcChaaXBwZXIudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRyYW5zaXRpb25hcnlfc3BlYyA9IHAoQ29kZVN0cmluZy50KTtcblxuICBsZXQgbWFwID0gKHA6IHAoJ2EpLCBmOiAnYSA9PiAnYik6IHAoJ2IpID0+IHtcbiAgICB7XG4gICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lOiBwLm1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBwLnByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogcC5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlOiBmKHAucHJlbHVkZSksXG4gICAgICBjb3JyZWN0X2ltcGw6IGYocC5jb3JyZWN0X2ltcGwpLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogZihwLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICByZXF1aXJlZDogcC55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogcC55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbDogZihwLnlvdXJfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgcC5oaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHtcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBpbXBsOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3Qod3JvbmdfaW1wbC5pbXBsKSxcbiAgICAgICAgICAgICAgIGhpbnQ6IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QocC5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgICAgICBoaW50czogcC5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBwLnN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlZHMgPSBwKEVkaXRvci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3RhdGUgPSB7XG4gICAgcG9zLFxuICAgIGVkcyxcbiAgfTtcblxuICBsZXQga2V5X29mX3N0YXRlID0gKHtlZHMsIF99KSA9PiBrZXlfb2YoZWRzKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IChwb3MsIGxpc3QoKHBvcywgUGVyc2lzdGVudFppcHBlci50KSkpO1xuXG4gIGxldCBlZGl0b3Jfb2Zfc3RhdGU6IHN0YXRlID0+IEVkaXRvci50ID1cbiAgICAoe3BvcywgZWRzLCBffSkgPT5cbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICB8IFByZWx1ZGUgPT4gZWRzLnByZWx1ZGVcbiAgICAgIHwgQ29ycmVjdEltcGwgPT4gZWRzLmNvcnJlY3RfaW1wbFxuICAgICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICAgIHwgWW91ckltcGwgPT4gZWRzLnlvdXJfaW1wbFxuICAgICAgfCBIaWRkZW5CdWdzKGkpID0+IExpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgaSkuaW1wbFxuICAgICAgfCBIaWRkZW5UZXN0cyA9PiBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXG4gICAgICB9O1xuXG4gIGxldCBwdXRfZWRpdG9yID0gKHtwb3MsIGVkcywgX30gYXMgc3RhdGU6IHN0YXRlLCBlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBwcmVsdWRlOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBDb3JyZWN0SW1wbCA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgY29ycmVjdF9pbXBsOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMueW91cl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJJbXBsID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlbkJ1Z3MobikgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgICAgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKFxuICAgICAgICAgICAgICBuLFxuICAgICAgICAgICAgICB7Li4uTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBuKSwgaW1wbDogZWRpdG9yfSxcbiAgICAgICAgICAgICAgZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlblRlc3RzID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy5oaWRkZW5fdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZWRpdG9ycyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1xuICAgICAgZWRzLnByZWx1ZGUsXG4gICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX2ltcGwsXG4gICAgXVxuICAgIEAgTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB3cm9uZ19pbXBsLmltcGwsIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXTtcblxuICBsZXQgZWRpdG9yX3Bvc2l0aW9ucyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1ByZWx1ZGUsIENvcnJlY3RJbXBsLCBZb3VyVGVzdHNUZXN0aW5nLCBZb3VyVGVzdHNWYWxpZGF0aW9uLCBZb3VySW1wbF1cbiAgICBAIExpc3QubWFwaSgoaSwgXykgPT4gSGlkZGVuQnVncyhpKSwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW0hpZGRlblRlc3RzXTtcblxuICBsZXQgcG9zaXRpb25lZF9lZGl0b3JzID0gc3RhdGUgPT5cbiAgICBMaXN0LmNvbWJpbmUoZWRpdG9yX3Bvc2l0aW9ucyhzdGF0ZSksIGVkaXRvcnMoc3RhdGUpKTtcblxuICBsZXQgaWR4X29mX3BvcyA9IChwb3MsIHA6IHAoJ2NvZGUpKSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IDBcbiAgICB8IENvcnJlY3RJbXBsID0+IDFcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gMlxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiAzXG4gICAgfCBZb3VySW1wbCA9PiA0XG4gICAgfCBIaWRkZW5CdWdzKGkpID0+XG4gICAgICBpZiAoaSA8IExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIDUgKyBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJpbnZhbGlkIGhpZGRlbiBidWcgaW5kZXhcIik7XG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncylcbiAgICB9O1xuXG4gIGxldCBwb3Nfb2ZfaWR4ID0gKHA6IHAoJ2NvZGUpLCBpZHg6IGludCkgPT5cbiAgICBzd2l0Y2ggKGlkeCkge1xuICAgIHwgMCA9PiBQcmVsdWRlXG4gICAgfCAxID0+IENvcnJlY3RJbXBsXG4gICAgfCAyID0+IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IDMgPT4gWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgNCA9PiBZb3VySW1wbFxuICAgIHwgXyA9PlxuICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgZmFpbHdpdGgoXCJuZWdhdGl2ZSBpZHhcIik7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA8IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5CdWdzKGlkeCAtIDUpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPT0gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlblRlc3RzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJlbGVtZW50IGlkeFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBzd2l0Y2hfZWRpdG9yID0gKH5wb3MsIGluc3RydWN0b3JfbW9kZSwgfmV4ZXJjaXNlKSA9PlxuICAgIGlmICghaW5zdHJ1Y3Rvcl9tb2RlKSB7XG4gICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgfCBIaWRkZW5UZXN0c1xuICAgICAgfCBIaWRkZW5CdWdzKF8pID0+IGV4ZXJjaXNlXG4gICAgICB8IF8gPT4ge2VkczogZXhlcmNpc2UuZWRzLCBwb3N9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB7ZWRzOiBleGVyY2lzZS5lZHMsIHBvc307XG4gICAgfTtcblxuICBsZXQgemlwcGVyX29mX2NvZGUgPSBjb2RlID0+IHtcbiAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIlRyYW5zaXRpb24gZmFpbGVkLlwiKVxuICAgIHwgU29tZSh6aXBwZXIpID0+IHppcHBlclxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb246IHRyYW5zaXRpb25hcnlfc3BlYyA9PiBzcGVjID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSB6aXBwZXJfb2ZfY29kZShwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSB6aXBwZXJfb2ZfY29kZShjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IHppcHBlcl9vZl9jb2RlKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgIGxldCBpbXBsID0gemlwcGVyX29mX2NvZGUoaW1wbCk7XG4gICAgICAgICAgICBhY2MgQCBbe2ltcGwsIGhpbnR9XTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICApO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSB6aXBwZXJfb2ZfY29kZSh0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgZWRzX29mX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQsXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICAgIH0sXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IGVkcyA9PiB7XG4gICAgbGV0IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uID0gRWRpdG9yLmluaXQofnNldHRpbmdzKTtcbiAgICBsZXQgcHJlbHVkZSA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgIGxldCB5b3VyX3Rlc3RzID0ge1xuICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgfTtcbiAgICBsZXQgeW91cl9pbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl9pbXBsKTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgIHw+IExpc3QubWFwKCh7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAge2ltcGwsIGhpbnR9O1xuICAgICAgICAgfSk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHRlc3RzKTtcbiAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgIH07XG4gICAge1xuICAgICAgdGl0bGUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgbW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlLFxuICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgeW91cl90ZXN0cyxcbiAgICAgIHlvdXJfaW1wbCxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgc3ludGF4X3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgLy9cbiAgLy8gT2xkIHZlcnNpb24gb2YgYWJvdmUgdGhhdCBkaWQgc3RyaW5nLWJhc2VkIHBhcnNpbmcsIG1heSBiZSB1c2VmdWxcbiAgLy8gZm9yIHRyYW5zaXRpb25zIGJldHdlZW4gemlwcGVyIGRhdGEgc3RydWN0dXJlIHZlcnNpb25zIChUT0RPKVxuICAvL1xuICAvLyBsZXQgZWRpdG9yX29mX2NvZGUgPSAoaW5pdF9pZCwgY29kZSkgPT5cbiAgLy8gICBzd2l0Y2ggKEVkaXRvclV0aWwuZWRpdG9yX29mX2NvZGUoaW5pdF9pZCwgY29kZSkpIHtcbiAgLy8gICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJFeGVyY2lzZSBlcnJvcjogaW52YWxpZCBjb2RlXCIpXG4gIC8vICAgfCBTb21lKHgpID0+IHhcbiAgLy8gICB9O1xuICAvLyBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgLy8gICAoXG4gIC8vICAgICB7XG4gIC8vXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9LFxuICAvLyAgICkgPT4ge1xuICAvLyAgICAgbGV0IGlkID0gbmV4dF9pZDtcbiAgLy8gICAgIGxldCAoaWQsIHByZWx1ZGUpID0gZWRpdG9yX29mX2NvZGUoaWQsIHByZWx1ZGUpO1xuICAvLyAgICAgbGV0IChpZCwgY29ycmVjdF9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBjb3JyZWN0X2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgeW91cl90ZXN0cykgPSB7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgLy8gICAgICAgKFxuICAvLyAgICAgICAgIGlkLFxuICAvLyAgICAgICAgIHtcbiAgLy8gICAgICAgICAgIHRlc3RzLFxuICAvLyAgICAgICAgICAgbnVtX3JlcXVpcmVkOiB5b3VyX3Rlc3RzLm51bV9yZXF1aXJlZCxcbiAgLy8gICAgICAgICAgIG1pbmltdW06IHlvdXJfdGVzdHMubWluaW11bSxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIGxldCAoaWQsIHlvdXJfaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgeW91cl9pbXBsKTtcbiAgLy8gICAgIGxldCAoaWQsIGhpZGRlbl9idWdzKSA9XG4gIC8vICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAvLyAgICAgICAgICgoaWQsIGFjYyksIHtpbXBsLCBoaW50fSkgPT4ge1xuICAvLyAgICAgICAgICAgbGV0IChpZCwgaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgaW1wbCk7XG4gIC8vICAgICAgICAgICAoaWQsIGFjYyBAIFt7aW1wbCwgaGludH1dKTtcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICAgIChpZCwgW10pLFxuICAvLyAgICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICApO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAvLyAgICAgICBsZXQgKGlkLCB0ZXN0cykgPSBlZGl0b3Jfb2ZfY29kZShpZCwgdGVzdHMpO1xuICAvLyAgICAgICAoaWQsIHt0ZXN0cywgaGludHN9KTtcbiAgLy8gICAgIH07XG4gIC8vICAgICB7XG4gIC8vICAgICAgIG5leHRfaWQ6IGlkLFxuICAvLyAgICAgICB0aXRsZSxcbiAgLy8gICAgICAgdmVyc2lvbixcbiAgLy8gICAgICAgcHJvbXB0LFxuICAvLyAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gIC8vICAgICAgIHByZWx1ZGUsXG4gIC8vICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgLy8gICAgICAgeW91cl90ZXN0cyxcbiAgLy8gICAgICAgeW91cl9pbXBsLFxuICAvLyAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgaGlkZGVuX3Rlc3RzLFxuICAvLyAgICAgfTtcbiAgLy8gICB9O1xuXG4gIGxldCBzZXRfaW5zdHJ1Y3Rvcl9tb2RlID0gKHtlZHMsIF99IGFzIHN0YXRlOiBzdGF0ZSwgbmV3X21vZGU6IGJvb2wpID0+IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBlZHM6IHtcbiAgICAgIC4uLmVkcyxcbiAgICAgIHByZWx1ZGU6IEVkaXRvci5zZXRfcmVhZF9vbmx5KGVkcy5wcmVsdWRlLCAhbmV3X21vZGUpLFxuICAgIH0sXG4gIH07XG5cbiAgbGV0IHZpc2libGVfaW4gPSAocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gdHJ1ZVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBmYWxzZVxuICAgIHwgWW91ckltcGwgPT4gdHJ1ZVxuICAgIHwgSGlkZGVuQnVncyhfKSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IEhpZGRlblRlc3RzID0+IGluc3RydWN0b3JfbW9kZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0YXRlX29mX3NwZWMgPVxuICAgICAgKHNwZWMsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQpOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGVkcyA9IGVkc19vZl9zcGVjKH5zZXR0aW5ncywgc3BlYyk7XG4gICAgc2V0X2luc3RydWN0b3JfbW9kZSh7cG9zOiBZb3VySW1wbCwgZWRzfSwgaW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgcGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZSA9XG4gICAgICAoe3BvcywgX30gYXMgc3RhdGU6IHN0YXRlLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKSA9PiB7XG4gICAgbGV0IHppcHBlcnMgPVxuICAgICAgcG9zaXRpb25lZF9lZGl0b3JzKHN0YXRlKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChwb3MsIF8pKSA9PiB2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHBvcywgZWRpdG9yKSkgPT4ge1xuICAgICAgICAgICAocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoRWRpdG9yLihlZGl0b3Iuc3RhdGUuemlwcGVyKSkpXG4gICAgICAgICB9KTtcbiAgICAocG9zLCB6aXBwZXJzKTtcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0X3N0YXRlID1cbiAgICAgIChcbiAgICAgICAgKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTogcGVyc2lzdGVudF9zdGF0ZSxcbiAgICAgICAgfnNwZWM6IHNwZWMsXG4gICAgICAgIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IHN0YXRlID0+IHtcbiAgICBsZXQgbG9va3VwID0gKHBvcywgZGVmYXVsdCkgPT5cbiAgICAgIGlmICh2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgbGV0IHBlcnNpc3RlZF96aXBwZXIgPSBMaXN0LmFzc29jKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTtcbiAgICAgICAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHBlcnNpc3RlZF96aXBwZXIpO1xuICAgICAgICBFZGl0b3IuaW5pdCh6aXBwZXIsIH5zZXR0aW5ncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBFZGl0b3IuaW5pdChkZWZhdWx0LCB+c2V0dGluZ3MpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBwb3MsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIHRpdGxlOiBzcGVjLnRpdGxlLFxuICAgICAgICAgIHZlcnNpb246IHNwZWMudmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZTogc3BlYy5tb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQ6IHNwZWMucHJvbXB0LFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogc3BlYy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICByZXF1aXJlZDogc3BlYy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICAgICAgcHJvdmlkZWQ6IHNwZWMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICBoaW50czogc3BlYy5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzeW50YXhfdGVzdHM6IHNwZWMuc3ludGF4X3Rlc3RzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGluc3RydWN0b3JfbW9kZSxcbiAgICApO1xuICB9O1xuXG4gIC8vICMgU3RpdGNoaW5nXG5cbiAgdHlwZSBzdGl0Y2hlZCgnYSkgPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIHlvdXJfdGVzdHNcbiAgICB1c2VyX2ltcGw6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsXG4gICAgdXNlcl90ZXN0czogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgcHJlbHVkZTogJ2EsIC8vIHByZWx1ZGVcbiAgICBpbnN0cnVjdG9yOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIGhpZGRlbl90ZXN0cy50ZXN0cyAvLyBUT0RPIG9ubHkgbmVlZHMgdG8gcnVuIGluIGluc3RydWN0b3IgbW9kZVxuICAgIGhpZGRlbl9idWdzOiBsaXN0KCdhKSwgLy8gcHJlbHVkZSArIGhpZGRlbl9idWdzW2ldLmltcGwgKyB5b3VyX3Rlc3RzLFxuICAgIGhpZGRlbl90ZXN0czogJ2EsXG4gIH07XG5cbiAgbGV0IHdyYXBfZmlsdGVyID0gKGFjdDogRmlsdGVyQWN0aW9uLmFjdGlvbiwgdGVybTogVGVybS5VRXhwLnQpOiBUZXJtLlVFeHAudCA9PlxuICAgIFRlcm1CYXNlLlVFeHAue1xuICAgICAgdGVybTpcbiAgICAgICAgVGVybUJhc2UuVUV4cC5GaWx0ZXIoXG4gICAgICAgICAgRmlsdGVyQWN0aW9uLihhY3QsIE9uZSksXG4gICAgICAgICAge3Rlcm06IENvbnN0cnVjdG9yKFwiJGVcIiksIGlkczogW0lkLm1rKCldfSxcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICApLFxuICAgICAgaWRzOiBbSWQubWsoKV0sXG4gICAgfTtcblxuICBsZXQgdGVybV9vZiA9IChlZGl0b3I6IEVkaXRvci50KTogVGVybS5VRXhwLnQgPT5cbiAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKGVkaXRvci5zdGF0ZS56aXBwZXIpIHw+IGZzdDtcblxuICBsZXQgc3RpdGNoMyA9IChlZDE6IEVkaXRvci50LCBlZDI6IEVkaXRvci50LCBlZDM6IEVkaXRvci50KSA9PlxuICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh0ZXJtX29mKGVkMSksIHRlcm1fb2YoZWQyKSksXG4gICAgICB0ZXJtX29mKGVkMyksXG4gICAgKTtcblxuICBsZXQgc3RpdGNoX3Rlcm0gPSAoe2VkcywgX306IHN0YXRlKTogc3RpdGNoZWQoVGVybUJhc2UuVUV4cC50KSA9PiB7XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfaW1wbF90ZXJtID0ge1xuICAgICAgbGV0IHlvdXJfaW1wbF90ZXJtID1cbiAgICAgICAgZWRzLnlvdXJfaW1wbCB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5TdGVwKTtcbiAgICAgIGxldCBwcmVsdWRlX3Rlcm0gPVxuICAgICAgICBlZHMucHJlbHVkZSB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5FdmFsKTtcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChwcmVsdWRlX3Rlcm0sIHlvdXJfaW1wbF90ZXJtKTtcbiAgICB9O1xuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb25fdGVybSA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLnlvdXJfdGVzdHMudGVzdHMpKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IHRlc3RfdmFsaWRhdGlvbl90ZXJtLFxuICAgICAgdXNlcl9pbXBsOiB1c2VyX2ltcGxfdGVybSxcbiAgICAgIHVzZXJfdGVzdHM6IHVzZXJfdGVzdHNfdGVybSxcbiAgICAgIC8vIGluc3RydWN0b3Igd29ya3MgaGVyZSBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIHByZWx1ZGU6IGluc3RydWN0b3IsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh0KTogVGVybUJhc2UuVUV4cC50ID0+XG4gICAgICAgICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCB0LmltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBoaWRkZW5fdGVzdHM6IGhpZGRlbl90ZXN0c190ZXJtLFxuICAgIH07XG4gIH07XG4gIGxldCBzdGl0Y2hfdGVybSA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF90ZXJtKTtcblxuICB0eXBlIHN0aXRjaGVkX3N0YXRpY3MgPSBzdGl0Y2hlZChFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTtcblxuICAvKiBNdWx0aXBsZSBzdGl0Y2hpbmdzIGFyZSBuZWVkZWQgZm9yIGVhY2ggZXhlcmNpc2VcbiAgICAgKHNlZSBjb21tZW50cyBpbiB0aGUgc3RpdGNoZWQgdHlwZSBhYm92ZSlcblxuICAgICBTdGl0Y2hpbmcgaXMgbmVjZXNzYXJ5IHRvIGNvbmNhdGVuYXRlIHRlcm1zXG4gICAgIGZyb20gZGlmZmVyZW50IGVkaXRvcnMsIHdoaWNoIGFyZSB0aGVuIHR5cGVjaGVja2VkLiAqL1xuICBsZXQgc3RpdGNoX3N0YXRpYyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB0OiBzdGl0Y2hlZChUZXJtQmFzZS5VRXhwLnQpKVxuICAgICAgOiBzdGl0Y2hlZF9zdGF0aWNzID0+IHtcbiAgICBsZXQgbWsgPSAodGVybTogVGVybUJhc2UuVUV4cC50KTogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCA9PiB7XG4gICAgICAvL05PVEU6IHRoaXMgaXMgZXhwZW5zaXZlIGFuZCBfYWxtb3N0XyByZWR1bmRhbnQgdG8gdGhlIHN0YXRpY3MgaW4gRWRpdG9yXG4gICAgICBsZXQgaW5mb19tYXAgPSBTdGF0aWNzLm1rKHNldHRpbmdzLCBCdWlsdGlucy5jdHhfaW5pdCwgdGVybSk7XG4gICAgICB7dGVybSwgZXJyb3JfaWRzOiBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoaW5mb19tYXApLCBpbmZvX21hcH07XG4gICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9IG1rKHQuaW5zdHJ1Y3Rvcik7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiBtayh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICB1c2VyX2ltcGw6IG1rKHQudXNlcl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IG1rKHQudXNlcl90ZXN0cyksXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLCAvLyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAobWssIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBtayh0LmhpZGRlbl90ZXN0cyksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX3N0YXRpYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9zdGF0aWMpO1xuXG4gIGxldCBwcmVsdWRlX2tleSA9IFwicHJlbHVkZVwiO1xuICBsZXQgdGVzdF92YWxpZGF0aW9uX2tleSA9IFwidGVzdF92YWxpZGF0aW9uXCI7XG4gIGxldCB1c2VyX2ltcGxfa2V5ID0gXCJ1c2VyX2ltcGxcIjtcbiAgbGV0IHVzZXJfdGVzdHNfa2V5ID0gXCJ1c2VyX3Rlc3RzXCI7XG4gIGxldCBpbnN0cnVjdG9yX2tleSA9IFwiaW5zdHJ1Y3RvclwiO1xuICBsZXQgaGlkZGVuX2J1Z3Nfa2V5ID0gbiA9PiBcImhpZGRlbl9idWdzX1wiICsrIHN0cmluZ19vZl9pbnQobik7XG4gIGxldCBoaWRkZW5fdGVzdHNfa2V5ID0gXCJoaWRkZW5fdGVzdHNcIjtcblxuICBsZXQga2V5X2Zvcl9zdGF0aWNzID0gKHN0YXRlOiBzdGF0ZSk6IHN0cmluZyA9PlxuICAgIHN3aXRjaCAoc3RhdGUucG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHByZWx1ZGVfa2V5XG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX2tleVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0ZXN0X3ZhbGlkYXRpb25fa2V5XG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHVzZXJfdGVzdHNfa2V5XG4gICAgfCBZb3VySW1wbCA9PiB1c2VyX2ltcGxfa2V5XG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gaGlkZGVuX2J1Z3Nfa2V5KGlkeClcbiAgICB8IEhpZGRlblRlc3RzID0+IGhpZGRlbl90ZXN0c19rZXlcbiAgICB9O1xuXG4gIGxldCBzcGxpY2VkX2VsYWJzID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHN0YXRlOiBzdGF0ZSlcbiAgICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgREhFeHAudCkpID0+IHtcbiAgICBsZXQge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIHByZWx1ZGU6IF8sXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfSA9XG4gICAgICBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIGxldCBlbGFiID0gKHM6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpID0+XG4gICAgICBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncywgcy5pbmZvX21hcCwgcy50ZXJtKTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50LFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgIH07XG4gICAgbGV0IGVtcHR5OiB0ID0ge3N0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLmVtcHR5LCByZXN1bHQ6IE5vRWxhYn07XG4gICAgbGV0IHN0YXRpY3Nfb25seSA9IChzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTogdCA9PiB7XG4gICAgICBzdGF0aWNzLFxuICAgICAgcmVzdWx0OiBOb0VsYWIsXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzID1cbiAgICAgIChzdGF0ZTogc3RhdGUsIHM6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSk6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQgPT5cbiAgICBzd2l0Y2ggKHN0YXRlLnBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBzLnByZWx1ZGUuc3RhdGljc1xuICAgIHwgQ29ycmVjdEltcGwgPT4gcy5pbnN0cnVjdG9yLnN0YXRpY3NcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gcy50ZXN0X3ZhbGlkYXRpb24uc3RhdGljc1xuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBzLnVzZXJfdGVzdHMuc3RhdGljc1xuICAgIHwgWW91ckltcGwgPT4gcy51c2VyX2ltcGwuc3RhdGljc1xuICAgIHwgSGlkZGVuQnVncyhpZHgpID0+IExpc3QubnRoKHMuaGlkZGVuX2J1Z3MsIGlkeCkuc3RhdGljc1xuICAgIHwgSGlkZGVuVGVzdHMgPT4gcy5oaWRkZW5fdGVzdHMuc3RhdGljc1xuICAgIH07XG5cbiAgLyogR2l2ZW4gdGhlIGV2YWx1YXRpb24gcmVzdWx0cywgY29sbGVjdHMgdGhlXG4gICAgIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBwcm9kdWNpbmcgZHluYW1pY1xuICAgICBmZWVkYmFjayovXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IHJlc3VsdF9vZiA9IGtleSA9PlxuICAgICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gTW9kZWxSZXN1bHQuTm9FbGFiXG4gICAgICB8IFNvbWUocmVzdWx0cykgPT5cbiAgICAgICAgTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCBrZXkpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Nb2RlbFJlc3VsdC5Ob0VsYWIpXG4gICAgICB9O1xuXG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbiA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKHRlc3RfdmFsaWRhdGlvbl9rZXkpLFxuICAgICAgfTtcblxuICAgIGxldCB1c2VyX2ltcGwgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiB1c2VyX2ltcGwsIHJlc3VsdDogcmVzdWx0X29mKHVzZXJfaW1wbF9rZXkpfTtcblxuICAgIGxldCB1c2VyX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogdXNlcl90ZXN0cywgcmVzdWx0OiByZXN1bHRfb2YodXNlcl90ZXN0c19rZXkpfTtcbiAgICBsZXQgcHJlbHVkZSA9IER5bmFtaWNzSXRlbS57c3RhdGljczogcHJlbHVkZSwgcmVzdWx0OiBOb0VsYWJ9O1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogaW5zdHJ1Y3RvciwgcmVzdWx0OiByZXN1bHRfb2YoaW5zdHJ1Y3Rvcl9rZXkpfTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAobiwgc3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCkgPT5cbiAgICAgICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3MsIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl9idWdzX2tleShuKSl9LFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT5cbiAgICBpZiAoc2V0dGluZ3Muc3RhdGljcyAmJiBzZXR0aW5ncy5keW5hbWljcykge1xuICAgICAgc3RpdGNoX2R5bmFtaWMoc2V0dGluZ3MsIHN0YXRlLCByZXN1bHRzKTtcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnN0YXRpY3MpIHtcbiAgICAgIGxldCB0ID0gc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl9pbXBsKSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfdGVzdHMpLFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaW5zdHJ1Y3RvciksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5wcmVsdWRlKSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHksIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5oaWRkZW5fdGVzdHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aChzdGF0ZS5lZHMuaGlkZGVuX2J1Z3MpLCBfID0+XG4gICAgICAgICAgICBEeW5hbWljc0l0ZW0uZW1wdHlcbiAgICAgICAgICApLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHN0aXRjaF9keW5hbWljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX2R5bmFtaWMpO1xuXG4gIC8vIE1vZHVsZSBFeHBvcnRcblxuICBsZXQgZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBzZXJpYWxpemF0aW9uID0gWmlwcGVyLnNob3coemlwcGVyKTtcbiAgICAvLyBsZXQgc3RyaW5nX2xpdGVyYWwgPSBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChzZXJpYWxpemF0aW9uKSArKyBcIlxcXCJcIjtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgc2VyaWFsaXphdGlvbik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IGNvZGUgPSBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChjb2RlKSArKyBcIlxcXCJcIik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBFeGVyY2lzZS50cmFuc2l0aW9uKFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AodHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiKVxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9ncmFkaW5nX21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IGhlYWRlciA9IG91dHB1dF9oZWFkZXJfZ3JhZGluZyhtb2R1bGVfbmFtZSk7XG4gICAgbGV0IHByZWZpeCA9IFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBoZWFkZXIgKysgcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGJsYW5rX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB+dGl0bGUsXG4gICAgICAgIH5tb2R1bGVfbmFtZSxcbiAgICAgICAgfnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgfnJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICB+cHJvdmlkZWRfdGVzdHMsXG4gICAgICAgIH5udW1fd3JvbmdfaW1wbHMsXG4gICAgICApID0+IHtcbiAgICBsZXQgcHJlbHVkZSA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0LmluaXQoXG4gICAgICAgIG51bV93cm9uZ19pbXBscyxcbiAgICAgICAgaSA9PiB7XG4gICAgICAgICAgbGV0IHppcHBlciA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgICAgICAge2ltcGw6IHppcHBlciwgaGludDogXCJUT0RPOiBoaW50IFwiICsrIHN0cmluZ19vZl9pbnQoaSl9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogRXhlcmNpc2VFbnYuZGVmYXVsdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIHByb3ZpZGVkOiBwcm92aWRlZF90ZXN0cyxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICBoaW50czogW10sXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIEZyb20gU3RvcmVcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZXhlcmNpc2VfZXhwb3J0ID0ge1xuICAgIGN1cl9leGVyY2lzZToga2V5LFxuICAgIGV4ZXJjaXNlX2RhdGE6IGxpc3QoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpLFxuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZVxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlID0gKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgZGF0YVxuICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHBcbiAgICB8PiB1bnBlcnNpc3Rfc3RhdGUofnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gZXhlcmNpc2VfZXhwb3J0X29mX3NleHA7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFNleHBsaWIuU3RkO1xub3BlbiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LlByaW1pdGl2ZXM7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZS5FeGVyY2lzZUVudikgPT4ge1xuICBvcGVuIEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJjZW50YWdlID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludHMgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNjb3JlID0gKHBvaW50cywgcG9pbnRzKTtcblxuICBsZXQgc2NvcmVfb2ZfcGVyY2VudCA9IChwZXJjZW50LCBtYXhfcG9pbnRzKSA9PiB7XG4gICAgbGV0IG1heF9wb2ludHMgPSBmbG9hdF9vZl9pbnQobWF4X3BvaW50cyk7XG4gICAgKHBlcmNlbnQgKi4gbWF4X3BvaW50cywgbWF4X3BvaW50cyk7XG4gIH07XG5cbiAgbW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgcmVxdWlyZWQ6IGludCxcbiAgICAgIHByb3ZpZGVkOiBpbnQsXG4gICAgfTtcblxuICAgIGxldCBtayA9IChlZHM6IGVkcywgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF9yZXN1bHRzLFxuICAgICAgICByZXF1aXJlZDogZWRzLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBlZHMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gMC4wXG4gICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgICBsZXQgbnVtX3Rlc3RzID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy50b3RhbCk7XG4gICAgICAgIGxldCByZXF1aXJlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICBsZXQgcHJvdmlkZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnByb3ZpZGVkKTtcbiAgICAgICAgbGV0IG51bV9wYXNzaW5nID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxuICAgICAgICByZXF1aXJlZCAtLiBwcm92aWRlZCA8PSAwLjAgfHwgbnVtX3Rlc3RzIDw9IDAuMFxuICAgICAgICAgID8gMC4wXG4gICAgICAgICAgOiBudW1fcGFzc2luZ1xuICAgICAgICAgICAgLy4gbnVtX3Rlc3RzXG4gICAgICAgICAgICAqLiAoXG4gICAgICAgICAgICAgIEZsb2F0Lm1heChcbiAgICAgICAgICAgICAgICAwLixcbiAgICAgICAgICAgICAgICBGbG9hdC5taW4obnVtX3Rlc3RzIC0uIHByb3ZpZGVkLCByZXF1aXJlZCAtLiBwcm92aWRlZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy4gKHJlcXVpcmVkIC0uIHByb3ZpZGVkKVxuICAgICAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7cmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKX07XG5cbiAgICBsZXQgaGlkZGVuX2J1Z19zdGF0dXMgPVxuICAgICAgICAoXG4gICAgICAgICAgdGVzdF92YWxpZGF0aW9uX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIGhpZGRlbl9idWdfZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgIClcbiAgICAgICAgOiBUZXN0U3RhdHVzLnQgPT4ge1xuICAgICAgc3dpdGNoIChcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHRlc3RfdmFsaWRhdGlvbl9kYXRhLnJlc3VsdCksXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhoaWRkZW5fYnVnX2RhdGEucmVzdWx0KSxcbiAgICAgICkge1xuICAgICAgfCAoTm9uZSwgXylcbiAgICAgIHwgKF8sIE5vbmUpID0+IEluZGV0XG4gICAgICB8IChTb21lKHRlc3RfdmFsaWRhdGlvbl9kYXRhKSwgU29tZShoaWRkZW5fYnVnX2RhdGEpKSA9PlxuICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X21hcCA9IHRlc3RfdmFsaWRhdGlvbl9kYXRhLnRlc3RfbWFwO1xuICAgICAgICBsZXQgaGlkZGVuX2J1Z190ZXN0X21hcCA9IGhpZGRlbl9idWdfZGF0YS50ZXN0X21hcDtcblxuICAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgIGhpZGRlbl9idWdfdGVzdF9tYXBcbiAgICAgICAgICB8PiBMaXN0LmZpbmRfb3B0KCgoaWQsIGluc3RhbmNlX3JlcG9ydHMpKSA9PiB7XG4gICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMoaW5zdGFuY2VfcmVwb3J0cyk7XG4gICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3NcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWwgPT5cbiAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzID1cbiAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3Rlc3RfbWFwIHw+IFRlc3RNYXAubG9va3VwKGlkKTtcbiAgICAgICAgICAgICAgICAgc3dpdGNoICh2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cykge1xuICAgICAgICAgICAgICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBTb21lKHJlcG9ydHMpID0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKHJlcG9ydHMpO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3MgPT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgfSk7XG4gICAgICAgIHN3aXRjaCAoZm91bmQpIHtcbiAgICAgICAgfCBOb25lID0+IEZhaWxcbiAgICAgICAgfCBTb21lKF8pID0+IFBhc3NcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTsgLy8gZm9yIGVhY2ggaGlkZGVuIGJ1Z1xuICAgIC8vICAgaW4gdGhlIHRlc3QgcmVzdWx0cyBkYXRhLCBmaW5kIGEgdGVzdCBJRCB0aGF0IHBhc3NlcyB0ZXN0IHZhbGlkYXRpb24gYnV0IGZhaWxzIGFnYWluc3RcblxuICAgIGxldCBtayA9XG4gICAgICAgIChcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpLFxuICAgICAgICAgIH5oaWRkZW5fYnVnczogbGlzdChEeW5hbWljc0l0ZW0udCksXG4gICAgICAgIClcbiAgICAgICAgOiB0ID0+IHtcbiAgICAgIGxldCByZXN1bHRzID1cbiAgICAgICAgTGlzdC5tYXAoaGlkZGVuX2J1Z19zdGF0dXModGVzdF92YWxpZGF0aW9uKSwgaGlkZGVuX2J1Z3MpO1xuICAgICAgbGV0IGhpbnRzID1cbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHdyb25nX2ltcGw6IHdyb25nX2ltcGwoRWRpdG9yLnQpKSA9PiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z3Nfc3RhdGUsXG4gICAgICAgICk7XG4gICAgICBsZXQgcmVzdWx0cyA9IExpc3QuY29tYmluZShyZXN1bHRzLCBoaW50cyk7XG4gICAgICB7cmVzdWx0czogcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPSByZXBvcnQucmVzdWx0cztcbiAgICAgIGxldCBudW1fd3JvbmdfaW1wbHMgPSBMaXN0Lmxlbmd0aChyZXN1bHRzKTtcbiAgICAgIGxldCBudW1fcGFzc2VkID1cbiAgICAgICAgcmVzdWx0c1xuICAgICAgICB8PiBMaXN0LmZpbmRfYWxsKCgoc3RhdHVzLCBfKSkgPT4gc3RhdHVzID09IFRlc3RTdGF0dXMuUGFzcylcbiAgICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgICBzd2l0Y2ggKG51bV93cm9uZ19pbXBscykge1xuICAgICAgfCAwID0+IDEuMFxuICAgICAgfCBfID0+IGZsb2F0X29mX2ludChudW1fcGFzc2VkKSAvLiBmbG9hdF9vZl9pbnQobnVtX3dyb25nX2ltcGxzKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8gVE9ETyBtb3ZlIHRvIHNlcGFyYXRlIG1vZHVsZVxuXG4gICAgbGV0IHN1bW1hcnlfc3RyID0gKH50b3RhbCwgfmZvdW5kKTogc3RyaW5nID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dG90YWwsXG4gICAgICAgIH5wPWZvdW5kLFxuICAgICAgICB+cT0wLFxuICAgICAgICB+bl9zdHI9XCJidWdcIixcbiAgICAgICAgfm5zX3N0cj1cImJ1Z3NcIixcbiAgICAgICAgfnBfc3RyPVwiZXhwb3NlZFwiLFxuICAgICAgICB+cV9zdHI9XCJcIixcbiAgICAgICAgfnJfc3RyPVwidW5yZXZlYWxlZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgaGludGVkX3Jlc3VsdHM6IGxpc3QoKGJvb2wsIGhpbnQpKSxcbiAgICAgIHBlcmNlbnRhZ2UsXG4gICAgfTtcblxuICAgIGxldCBtayA9ICh+eW91cl9pbXBsOiBFZGl0b3IudCwgfnRlc3RzOiBzeW50YXhfdGVzdHMpOiB0ID0+IHtcbiAgICAgIGxldCB1c2VyX2ltcGxfdGVybSA9XG4gICAgICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeW91cl9pbXBsLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuXG4gICAgICBsZXQgcHJlZGljYXRlcyA9XG4gICAgICAgIExpc3QubWFwKCgoXywgcCkpID0+IFN5bnRheFRlc3QucHJlZGljYXRlX2ZuKHApLCB0ZXN0cyk7XG4gICAgICBsZXQgaGludHMgPSBMaXN0Lm1hcCgoKGgsIF8pKSA9PiBoLCB0ZXN0cyk7XG4gICAgICBsZXQgc3ludGF4X3Jlc3VsdHMgPSBTeW50YXhUZXN0LmNoZWNrKHVzZXJfaW1wbF90ZXJtLCBwcmVkaWNhdGVzKTtcblxuICAgICAge1xuICAgICAgICBoaW50ZWRfcmVzdWx0czpcbiAgICAgICAgICBMaXN0Lm1hcDIoKHIsIGgpID0+IChyLCBoKSwgc3ludGF4X3Jlc3VsdHMucmVzdWx0cywgaGludHMpLFxuICAgICAgICBwZXJjZW50YWdlOiBzeW50YXhfcmVzdWx0cy5wZXJjZW50YWdlLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH5oaW50czogbGlzdChzdHJpbmcpLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpOiB0ID0+IHtcbiAgICAgIGxldCBoaW50ZWRfcmVzdWx0cyA9XG4gICAgICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgICAgbGV0IHN0YXR1c2VzID0gdGVzdF9yZXN1bHRzLnN0YXR1c2VzO1xuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgc3RhdHVzZXMsXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJObyBoaW50IGF2YWlsYWJsZS5cIixcbiAgICAgICAgICApO1xuXG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJFeGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yOiBIaW50IHdpdGhvdXQgYSB0ZXN0LlwiLFxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIHtoaW50cywgdGVzdF9yZXN1bHRzLCBoaW50ZWRfcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCB0b3RhbCA9IChyZXBvcnQ6IHQpID0+IExpc3QubGVuZ3RoKHJlcG9ydC5oaW50ZWRfcmVzdWx0cyk7XG4gICAgbGV0IG51bV9wYXNzZWQgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCwgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN5bnRheF9yZXBvcnQucGVyY2VudGFnZVxuICAgICAgKi4gKGZsb2F0X29mX2ludChudW1fcGFzc2VkKHJlcG9ydCkpIC8uIGZsb2F0X29mX2ludCh0b3RhbChyZXBvcnQpKSk7XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDogVGVzdFZhbGlkYXRpb25SZXBvcnQudCxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OiBNdXRhdGlvblRlc3RpbmdSZXBvcnQudCxcbiAgICAgIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDogSW1wbEdyYWRpbmdSZXBvcnQudCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB+c3RpdGNoZWRfZHluYW1pY3M6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSkgPT4ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBlZHMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDpcbiAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQubWsoXG4gICAgICAgICAgZWRzLFxuICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24ucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OlxuICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbj1zdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlPWVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M9c3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBzeW50YXhfcmVwb3J0OlxuICAgICAgICBTeW50YXhSZXBvcnQubWsofnlvdXJfaW1wbD1lZHMueW91cl9pbXBsLCB+dGVzdHM9ZWRzLnN5bnRheF90ZXN0cyksXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OlxuICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+aGludHM9ZWRzLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB+dGVzdF9yZXN1bHRzPVxuICAgICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl90ZXN0cy5yZXN1bHQpLFxuICAgICAgICApLFxuICAgIH07XG5cbiAgICBsZXQgb3ZlcmFsbF9zY29yZSA9XG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0LFxuICAgICAgICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQsXG4gICAgICAgICAgICBzeW50YXhfcmVwb3J0LFxuICAgICAgICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgICAgIF8sXG4gICAgICAgICAgfTogdCxcbiAgICAgICAgKVxuICAgICAgICA6IHNjb3JlID0+IHtcbiAgICAgIGxldCAodHZfcG9pbnRzLCB0dl9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5wZXJjZW50YWdlKHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICk7XG4gICAgICBsZXQgKG10X3BvaW50cywgbXRfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0LnBlcmNlbnRhZ2UobXV0YXRpb25fdGVzdGluZ19yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5tdXRhdGlvbl90ZXN0aW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IChpZ19wb2ludHMsIGlnX21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIEltcGxHcmFkaW5nUmVwb3J0LnBlcmNlbnRhZ2UoaW1wbF9ncmFkaW5nX3JlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b3RhbF9wb2ludHMgPSB0dl9wb2ludHMgKy4gbXRfcG9pbnRzICsuIGlnX3BvaW50cztcbiAgICAgIGxldCBtYXhfcG9pbnRzID0gdHZfbWF4ICsuIG10X21heCArLiBpZ19tYXg7XG4gICAgICAodG90YWxfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgICB9O1xuICB9O1xufTtcbiIsIm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gdW5pdDtcbiAgbGV0IGRlZmF1bHQgPSAoKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBFeGVyY2lzZS5vdXRwdXRfaGVhZGVyX2dyYWRpbmc7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxubW9kdWxlIEdyYWRpbmcgPSBHcmFkaW5nLkYoRXhlcmNpc2VFbnYpO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMvMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgZGVidWcgPVxuICBsZXQgX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIkRFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgYW5kIF9PTURfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiT01EX0RFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggX0RFQlVHLCBfT01EX0RFQlVHIHdpdGhcbiAgfCBfLCBTb21lIFwiZmFsc2VcIiAtPlxuICAgICBmYWxzZVxuICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIERFQlVHIGlzIHNldCwgXFxcbiAgICAgICAgICAgICAgeW91IGNhbiBkZWFjdGl2YXRlIHRoZSBtb2RlIGJ5IHVuc2V0dGluZyBERUJVRyBcXFxuICAgICAgICAgICAgICBvciBieSBzZXR0aW5nIE9NRF9ERUJVRyB0byB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgZmFsc2VcbiAgfCBfLCBTb21lIF8gLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBPTURfREVCVUcgaXMgc2V0XG4gICAgICAgICAgICAgIHRvIGEgdmFsdWUgdGhhdCBpc24ndCB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCB3YXJuID8od2U9ZmFsc2UpIG1zZyA9XG4gIGlmIHdlIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgbXNnKVxuICBlbHNlXG4gICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6ICVzXFxuJSFcIiBtc2dcblxuXG5sZXQgdHJhY2tmaXggPVxuICB0cnlcbiAgICBpZ25vcmUoU3lzLmdldGVudiBcIk9NRF9GSVhcIik7XG4gICAgZXByaW50ZiBcIm9tZDogdHJhY2tpbmcgbW9kZSBhY3RpdmF0ZWQ6IHRva2VuIGxpc3QgYXJlIHZlcnkgb2Z0ZW4gY2hlY2tlZCwgXFxcbiAgICAgICAgICAgICBpdCBtaWdodCB0YWtlIGEgKnZlcnkqIGxvbmcgdGltZSBpZiB5b3VyIGlucHV0IGlzIGxhcmdlLlxcbiUhXCI7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGZhbHNlXG5cbmxldCBfID0gaWYgZGVidWcgdGhlbiBQcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlIHRydWVcblxubGV0IHJhaXNlID1cbiAgaWYgZGVidWcgdGhlblxuICAgIChmdW4gZSAtPlxuICAgICAgIGVwcmludGYgXCIoT01EKSBFeGNlcHRpb24gcmFpc2VkOiAlc1xcbiUhXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKTtcbiAgICAgICByYWlzZSBlKVxuICBlbHNlXG4gICAgcmFpc2VcblxubW9kdWxlIFN0cmluZ1NldCA6IHNpZ1xuICBpbmNsdWRlIFNldC5TIHdpdGggdHlwZSBlbHQgPSBzdHJpbmdcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBvZl9saXN0IGwgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHIgZSAtPiBhZGQgZSByKSBlbXB0eSBsXG5lbmRcblxuXG50eXBlICdhIHNwbGl0ID0gJ2EgbGlzdCAtPiAnYSBzcGxpdF9hY3Rpb25cbmFuZCAnYSBzcGxpdF9hY3Rpb24gPVxuICB8IENvbnRpbnVlXG4gIHwgQ29udGludWVfd2l0aCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuICB8IFNwbGl0IG9mICdhIGxpc3QgKiAnYSBsaXN0XG5cblxubGV0IGZzcGxpdF9yZXYgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH4oZjonYSBzcGxpdCkgbFxuICAgIDogKCdhIGxpc3QgKiAnYSBsaXN0KSBvcHRpb24gPVxuICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGYgW10gd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICBlbmRcbiAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgZXhjbCBsIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgbWF0Y2ggZiBsIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gIGluIGxvb3AgW10gbFxuXG5sZXQgZnNwbGl0ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+ZiBsID1cbiAgbWF0Y2ggZnNwbGl0X3JldiB+ZXhjbDpleGNsIH5mOmYgbCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUocmV2LCBsKSAtPiBTb21lKExpc3QucmV2IHJldiwgbClcblxubGV0IGlkX29mX3N0cmluZyBpZHMgcyA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBvdXQgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgKCogUHV0IFtzXSBpbnRvIFtiXSwgcmVwbGFjaW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIGRhc2hlcy4gKilcbiAgbGV0IHJlYyBsb29wIHN0YXJ0ZWQgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCBjIDtcbiAgICAgICAgbG9vcCB0cnVlIChpICsgMSlcbiAgICAgICgqIERvbid0IHdhbnQgdG8gc3RhcnQgd2l0aCBkYXNoZXMuICopXG4gICAgICB8IF8gd2hlbiBub3Qgc3RhcnRlZCAtPlxuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0ICctJyA7XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICBpblxuICBsb29wIGZhbHNlIDAgO1xuICBsZXQgcycgPSBCdWZmZXIuY29udGVudHMgb3V0IGluXG4gIGlmIHMnID0gXCJcIiB0aGVuIFwiXCJcbiAgZWxzZVxuICAgICgqIEZpbmQgb3V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gW3MnXSB0aGF0IGlzbid0IGEgZGFzaC4gKilcbiAgICBsZXQgbGFzdF90cmFpbGluZyA9IFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpIDwgMCB8fCBzJy5baV0gPD4gJy0nIHRoZW4gaVxuICAgICAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggcycgLSAxKVxuICAgIGluXG4gICAgKCogVHJpbSB0cmFpbGluZyBkYXNoZXMuICopXG4gICAgaWRzI21hbmdsZSBAQCBTdHJpbmcuc3ViIHMnIDAgKGxhc3RfdHJhaWxpbmcgKyAxKVxuXG4oKiBvbmx5IGNvbnZlcnQgd2hlbiBcIm5lY2Vzc2FyeVwiICopXG5sZXQgaHRtbGVudGl0aWVzID8obWQ9ZmFsc2UpIHMgPVxuICBsZXQgbW9kdWxlIEJyZWFrID0gc3RydWN0IGV4Y2VwdGlvbiBCcmVhayBlbmQgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICgpXG4gICAgZWxzZVxuICAgICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAoICcwJyAuLiAnOScgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyApIGFzIGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gICAgICAgIHwgJ1xcJycgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjMzk7XCJcbiAgICAgICAgfCAnJicgLT5cbiAgICAgICAgICAgIGlmIG1kIHRoZW5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIHMuW2krMV0gd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnIycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJlwiXG4gICAgICAgICAgICAgICAgd2l0aCBfIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gICAgICAgIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgICAgICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIGluIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBtaW5pbWFsaXplX2JsYW5rcyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGwgaW5cbiAgbGV0IHJlYyBsb29wIGYgaSA9XG4gICAgaWYgaSA9IGwgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgLT5cbiAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBmIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgaW4gbG9vcCBmYWxzZSAwXG5cbmxldCByZWMgZWF0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgZTo6dGwgYXMgbCAtPiBpZiBmIGUgdGhlbiBlYXQgZiB0bCBlbHNlIGxcblxuXG5sZXQgcmVjIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcyA9IFxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLlswXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnICcgLT4gbG9vcCAoaSsxKVxuICAgICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgIGluIGxvb3AgMVxuICBpblxuICBsZXQgcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgcyA9XG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuW1N0cmluZy5sZW5ndGggcyAtIDFdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIC0+IGxvb3AgKGktMSlcbiAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyByZXMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICByZXNcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICB0cnlcbiAgICAgICAgICBTb21lICh0YWtlX2F0dHJpYnV0ZSBzIGkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSAoKChfLF8pIGFzIGEpLCBuZXdfcykgLT5cbiAgICAgICAgbG9vcCBuZXdfcyAoYTo6cmVzKSAwXG4gICAgICB8IE5vbmUgLT4gcmVzXG4gIGFuZCB0YWtlX2F0dHJpYnV0ZSBzIGkgPVxuICAgICAgbGV0IG5hbWUsIGFmdGVyX2VxID0gY3V0X29uX2NoYXJfZnJvbSBzIGkgJz0nIGluXG4gICAgICBsZXQgbmFtZSA9IHJlbW92ZV9zdWZmaXhfc3BhY2VzIG5hbWUgaW5cbiAgICAgIGxldCBhZnRlcl9lcSA9IHJlbW92ZV9wcmVmaXhfc3BhY2VzIGFmdGVyX2VxIGluXG4gICAgICBsZXQgdmFsdWUsIHJlc3QgPSBjdXRfb25fY2hhcl9mcm9tIGFmdGVyX2VxIDEgYWZ0ZXJfZXEuWzBdIGluXG4gICAgICAobmFtZSx2YWx1ZSksIHJlbW92ZV9wcmVmaXhfc3BhY2VzIHJlc3RcbiAgaW5cbiAgaWYgKCogSGFzIGl0IGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGU/ICopXG4gICAgdHJ5IFN0cmluZy5pbmRleCBodG1sICc+JyA8IFN0cmluZy5pbmRleCBodG1sICcgJ1xuICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWVcbiAgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgbWF0Y2ggaHRtbC5bMV0gd2l0aFxuICB8ICc8JyB8ICcgJyAtPlxuICAgIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzXG4gICAgICAocmVtb3ZlX3ByZWZpeF9zcGFjZXMgKFN0cmluZy5zdWIgaHRtbCAxIChTdHJpbmcubGVuZ3RoIGh0bWwgLSAxKSkpXG4gIHwgXyAtPlxuICAgIHRyeVxuICAgICAgbGV0IGh0bWwgPSBzbmQgKGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICcgJykgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5zdWIgaHRtbCAwIChTdHJpbmcuaW5kZXggaHRtbCAnPicpKSBbXSAwXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gW11cblxubGV0IHJlYyBleHRyYWN0X2lubmVyX2h0bWwgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZWMgcmN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5yaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgMCBqLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgXywgcCA9IGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICc+JyBpblxuICBsZXQgciwgXyA9IHJjdXRfb25fY2hhcl9mcm9tIHAgKFN0cmluZy5sZW5ndGggcCAtIDEpICc8JyBpblxuICByXG5cblxubGV0IGh0bWxfdm9pZF9lbGVtZW50cyA9IFN0cmluZ1NldC5vZl9saXN0IFtcbiAgXCJpbWdcIjtcbiAgXCJpbnB1dFwiO1xuICBcImxpbmtcIjtcbiAgXCJtZXRhXCI7XG4gIFwiYnJcIjtcbiAgXCJoclwiO1xuICBcInNvdXJjZVwiO1xuICBcIndiclwiO1xuICBcInBhcmFtXCI7XG4gIFwiZW1iZWRcIjtcbiAgXCJiYXNlXCI7XG4gIFwiYXJlYVwiO1xuICBcImNvbFwiO1xuICBcInRyYWNrXCI7XG4gIFwia2V5Z2VuXCI7XG5dXG5cbmxldCAoIEAgKSBsMSBsMiA9XG4gIExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbDEpIGwyXG4iLCJvcGVuIE9tZF91dGlsc1xub3BlbiBQcmludGZcblxuKCoqIHJlZmVyZW5jZXMsIGluc3RhbmNlcyBjcmVhdGVkIGluIFtPbWRfcGFyc2VyLm1haW5fcGFyc2VdIGFuZFxuICAgIGFjY2Vzc2VkIGluIHRoZSBbT21kX2JhY2tlbmRdIG1vZHVsZS4gKilcbm1vZHVsZSBSID0gTWFwLk1ha2UoU3RyaW5nKVxuY2xhc3MgcmVmX2NvbnRhaW5lciA6IG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIGMgOiAoc3RyaW5nICogc3RyaW5nKSBSLnRcbiAgICBtZXRob2QgYWRkX3JlZiA6IFIua2V5IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCBnZXRfcmVmIDogUi5rZXkgLT4gKHN0cmluZyAqIHN0cmluZykgb3B0aW9uXG4gICAgbWV0aG9kIGdldF9hbGwgOiAoc3RyaW5nICogKHN0cmluZyAqIHN0cmluZykpIGxpc3RcbiAgZW5kID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGMgPSBSLmVtcHR5XG4gIHZhbCBtdXRhYmxlIGMyID0gUi5lbXB0eVxuXG4gIG1ldGhvZCBnZXRfYWxsID0gUi5iaW5kaW5ncyBjXG5cbiAgbWV0aG9kIGFkZF9yZWYgbmFtZSB0aXRsZSB1cmwgPVxuICAgIGMgPC0gUi5hZGQgbmFtZSAodXJsLCB0aXRsZSkgYztcbiAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICBpZiBsbiA8PiBuYW1lIHRoZW4gYzIgPC0gUi5hZGQgbG4gKHVybCwgdGl0bGUpIGMyXG5cbiAgbWV0aG9kIGdldF9yZWYgbmFtZSA9XG4gICAgdHJ5XG4gICAgICBsZXQgKHVybCwgdGl0bGUpIGFzIHIgPVxuICAgICAgICB0cnkgUi5maW5kIG5hbWUgY1xuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgICAgICAgIHRyeSBSLmZpbmQgbG4gY1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBSLmZpbmQgbG4gYzJcbiAgICAgIGluIFNvbWUgclxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBOb25lXG5lbmRcblxudHlwZSBlbGVtZW50ID1cbiAgfCBIMSBvZiB0XG4gIHwgSDIgb2YgdFxuICB8IEgzIG9mIHRcbiAgfCBINCBvZiB0XG4gIHwgSDUgb2YgdFxuICB8IEg2IG9mIHRcbiAgfCBQYXJhZ3JhcGggb2YgdFxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRW1waCBvZiB0XG4gIHwgQm9sZCBvZiB0XG4gIHwgVWwgb2YgdCBsaXN0XG4gIHwgT2wgb2YgdCBsaXN0XG4gIHwgVWxwIG9mIHQgbGlzdFxuICB8IE9scCBvZiB0IGxpc3RcbiAgfCBDb2RlIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBDb2RlX2Jsb2NrIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBCclxuICB8IEhyXG4gIHwgTkxcbiAgfCBVcmwgb2YgaHJlZiAqIHQgKiB0aXRsZVxuICB8IFJlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIHN0cmluZyAqIGZhbGxiYWNrXG4gIHwgSW1nX3JlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIGFsdCAqIGZhbGxiYWNrXG4gIHwgSHRtbCBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9ibG9jayBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9jb21tZW50IG9mIHN0cmluZ1xuICB8IFJhdyBvZiBzdHJpbmdcbiAgfCBSYXdfYmxvY2sgb2Ygc3RyaW5nXG4gIHwgQmxvY2txdW90ZSBvZiB0XG4gIHwgSW1nIG9mIGFsdCAqIHNyYyAqIHRpdGxlXG4gIHwgWCBvZlxuICAgICAgPCBuYW1lIDogc3RyaW5nO1xuICAgICAgICB0b19odG1sIDogP2luZGVudDppbnQgLT4gKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3NleHByIDogKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3QgOiB0IC0+IHQgb3B0aW9uID5cbmFuZCBmYWxsYmFjayA9IDwgdG9fc3RyaW5nIDogc3RyaW5nIDsgdG9fdCA6IHQgPlxuYW5kIG5hbWUgPSBzdHJpbmdcbmFuZCBhbHQgPSBzdHJpbmdcbmFuZCBzcmMgPSBzdHJpbmdcbmFuZCBocmVmID0gc3RyaW5nXG5hbmQgdGl0bGUgPSBzdHJpbmdcbmFuZCB0ID0gZWxlbWVudCBsaXN0XG5cblxubGV0IHJlYyBsb29zZV9jb21wYXJlIHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICB8IEgxIGUxOjp0bDEsIEgxIGUyOjp0bDJcbiAgfCBIMiBlMTo6dGwxLCBIMiBlMjo6dGwyXG4gIHwgSDMgZTE6OnRsMSwgSDMgZTI6OnRsMlxuICB8IEg0IGUxOjp0bDEsIEg0IGUyOjp0bDJcbiAgfCBINSBlMTo6dGwxLCBINSBlMjo6dGwyXG4gIHwgSDYgZTE6OnRsMSwgSDYgZTI6OnRsMlxuICB8IEVtcGggZTE6OnRsMSwgRW1waCBlMjo6dGwyXG4gIHwgQm9sZCBlMTo6dGwxLCBCb2xkIGUyOjp0bDJcbiAgfCBCbG9ja3F1b3RlIGUxOjp0bDEsIEJsb2NrcXVvdGUgZTI6OnRsMlxuICB8IFBhcmFncmFwaCBlMTo6dGwxLCBQYXJhZ3JhcGggZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgVWwgZTE6OnRsMSwgVWwgZTI6OnRsMlxuICB8IE9sIGUxOjp0bDEsIE9sIGUyOjp0bDJcbiAgfCBVbHAgZTE6OnRsMSwgVWxwIGUyOjp0bDJcbiAgfCBPbHAgZTE6OnRsMSwgT2xwIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZV9saXN0cyBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IChDb2RlIF8gYXMgZTEpOjp0bDEsIChDb2RlIF8gYXMgZTIpOjp0bDJcbiAgfCAoQnIgYXMgZTEpOjp0bDEsIChCciBhcyBlMik6OnRsMlxuICB8IChIciBhcyBlMSk6OnRsMSwgKEhyIGFzIGUyKTo6dGwyXG4gIHwgKE5MIGFzIGUxKTo6dGwxLCAoTkwgYXMgZTIpOjp0bDJcbiAgfCAoSHRtbCBfIGFzIGUxKTo6dGwxLCAoSHRtbCBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKEh0bWxfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChSYXcgXyBhcyBlMSk6OnRsMSwgKFJhdyBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhd19ibG9jayBfIGFzIGUxKTo6dGwxLCAoUmF3X2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9jb21tZW50IF8gYXMgZTEpOjp0bDEsIChIdG1sX2NvbW1lbnQgXyBhcyBlMik6OnRsMlxuICB8IChJbWcgXyBhcyBlMSk6OnRsMSwgKEltZyBfIGFzIGUyKTo6dGwyXG4gIHwgKFRleHQgXyBhcyBlMSk6OnRsMSwgKFRleHQgXyBhcyBlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgQ29kZV9ibG9jayhsMSxjMSk6OnRsMSwgQ29kZV9ibG9jayhsMixjMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGwxIGwyLCBTdHJpbmcubGVuZ3RoIGMxIC0gU3RyaW5nLmxlbmd0aCBjMiB3aXRoXG4gICAgICAgICB8IDAsIDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSBjMiB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIChjMl5cIlxcblwiKSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAtMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIChjMV5cIlxcblwiKSBjMiB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpLCBfIC0+IGlcbiAgICAgIClcblxuICB8IFVybCAoaHJlZjEsIHQxLCB0aXRsZTEpOjp0bDEsIFVybCAoaHJlZjIsIHQyLCB0aXRsZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBocmVmMSBocmVmMiB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGxvb3NlX2NvbXBhcmUgdDEgdDIgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSB0aXRsZTEgdGl0bGUyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgUmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIFJlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gIHwgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBJbWdfcmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChuYW1lMSwgeDEpIChuYW1lMiwgeDIpIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIGxldCBjZmYgPVxuICAgICAgICAgICAgICAgaWYgZmFsbGJhY2sxI3RvX3N0cmluZyA9IGZhbGxiYWNrMiN0b19zdHJpbmcgdGhlblxuICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvb3NlX2NvbXBhcmUgKGZhbGxiYWNrMSN0b190KSAoZmFsbGJhY2syI3RvX3QpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGlmIGNmZiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgKHJlZl9jb250YWluZXIxI2dldF9hbGwpIChyZWZfY29udGFpbmVyMiNnZXRfYWxsKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNmZlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBYIGUxOjp0bDEsIFggZTI6OnRsMiAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKGUxI25hbWUpIChlMiNuYW1lKSB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgKGUxI3RvX3QpIChlMiN0b190KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG4gIHwgWCBfOjpfLCBfIC0+IDFcbiAgfCBfLCBYIF86Ol8gLT4gLTFcbiAgfCBfIC0+IGNvbXBhcmUgdDEgdDJcblxuYW5kIGxvb3NlX2NvbXBhcmVfbGlzdHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT5cbiAgICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZV9saXN0cyB0bDEgdGwyXG4gICAgICAgICAgIHwgaSAtPiBpKVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgXyAtPiAtMVxuXG5cbnR5cGUgdG9rID0gKCogQ3MobikgbWVhbnMgKG4rMikgdGltZXMgQyAqKVxufCBBbXBlcnNhbmRcbnwgQW1wZXJzYW5kcyBvZiBpbnRcbnwgQXRcbnwgQXRzIG9mIGludFxufCBCYWNrcXVvdGVcbnwgQmFja3F1b3RlcyBvZiBpbnRcbnwgQmFja3NsYXNoXG58IEJhY2tzbGFzaHMgb2YgaW50XG58IEJhclxufCBCYXJzIG9mIGludFxufCBDYXJldFxufCBDYXJldHMgb2YgaW50XG58IENicmFjZVxufCBDYnJhY2VzIG9mIGludFxufCBDb2xvblxufCBDb2xvbnMgb2YgaW50XG58IENvbW1hXG58IENvbW1hcyBvZiBpbnRcbnwgQ3BhcmVudGhlc2lzXG58IENwYXJlbnRoZXNpc3Mgb2YgaW50XG58IENicmFja2V0XG58IENicmFja2V0cyBvZiBpbnRcbnwgRG9sbGFyXG58IERvbGxhcnMgb2YgaW50XG58IERvdFxufCBEb3RzIG9mIGludFxufCBEb3VibGVxdW90ZVxufCBEb3VibGVxdW90ZXMgb2YgaW50XG58IEV4Y2xhbWF0aW9uXG58IEV4Y2xhbWF0aW9ucyBvZiBpbnRcbnwgRXF1YWxcbnwgRXF1YWxzIG9mIGludFxufCBHcmVhdGVydGhhblxufCBHcmVhdGVydGhhbnMgb2YgaW50XG58IEhhc2hcbnwgSGFzaHMgb2YgaW50XG58IExlc3N0aGFuXG58IExlc3N0aGFucyBvZiBpbnRcbnwgTWludXNcbnwgTWludXNzIG9mIGludFxufCBOZXdsaW5lXG58IE5ld2xpbmVzIG9mIGludFxufCBOdW1iZXIgb2Ygc3RyaW5nXG58IE9icmFjZVxufCBPYnJhY2VzIG9mIGludFxufCBPcGFyZW50aGVzaXNcbnwgT3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgT2JyYWNrZXRcbnwgT2JyYWNrZXRzIG9mIGludFxufCBQZXJjZW50XG58IFBlcmNlbnRzIG9mIGludFxufCBQbHVzXG58IFBsdXNzIG9mIGludFxufCBRdWVzdGlvblxufCBRdWVzdGlvbnMgb2YgaW50XG58IFF1b3RlXG58IFF1b3RlcyBvZiBpbnRcbnwgU2VtaWNvbG9uXG58IFNlbWljb2xvbnMgb2YgaW50XG58IFNsYXNoXG58IFNsYXNocyBvZiBpbnRcbnwgU3BhY2VcbnwgU3BhY2VzIG9mIGludFxufCBTdGFyXG58IFN0YXJzIG9mIGludFxufCBUYWJcbnwgVGFicyBvZiBpbnRcbnwgVGlsZGVcbnwgVGlsZGVzIG9mIGludFxufCBVbmRlcnNjb3JlXG58IFVuZGVyc2NvcmVzIG9mIGludFxufCBXb3JkIG9mIHN0cmluZ1xufCBUYWcgb2YgbmFtZSAqIGV4dGVuc2lvblxuXG5hbmQgZXh0ZW5zaW9uID0gPFxuICBwYXJzZXJfZXh0ZW5zaW9uIDpcbiAgICB0IC0+IHRvayBsaXN0IC0+IHRvayBsaXN0IC0+ICgodCAqIHRvayBsaXN0ICogdG9rIGxpc3QpIG9wdGlvbik7XG4gIHRvX3N0cmluZyA6IHN0cmluZ1xuPlxuXG50eXBlIGV4dGVuc2lvbnMgPSBleHRlbnNpb24gbGlzdFxuXG5sZXQgZW1wdHlfZXh0ZW5zaW9uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gTm9uZVxuICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuZW5kXG5cbmxldCByZWMgbm9ybWFsaXNlX21kIGwgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgZXByaW50ZiBcIihPTUQpIG5vcm1hbGlzZV9tZFxcbiUhXCI7XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO11cbiAgICB8IFtOTDtOTF1cbiAgICB8IFtOTF0gLT4gW11cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBOTDo6Tkw6Ok5MOjp0bCAtPiBsb29wIChOTDo6Tkw6OnRsKVxuICAgIHwgVGV4dCB0MTo6VGV4dCB0Mjo6dGwgLT4gbG9vcCAoVGV4dCh0MV50Mik6OnRsKVxuICAgIHwgTkw6OigoKFBhcmFncmFwaCBffEgxIF98SDIgX3xIMyBffEg0IF98SDUgX3xINiBfXG4gICAgICAgICAgICB8Q29kZV9ibG9jayBffE9sIF98VWwgX3xPbHAgX3xVbHAgXyk6Ol8pIGFzIHRsKSAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbVGV4dCBcIiBcIl06OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGgocCk6OnRsIC0+IFBhcmFncmFwaChsb29wIHApOjpsb29wIHRsXG4gICAgfCBIMSB2Ojp0bCAtPiBIMShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMiB2Ojp0bCAtPiBIMihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMyB2Ojp0bCAtPiBIMyhsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINCB2Ojp0bCAtPiBINChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINSB2Ojp0bCAtPiBINShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINiB2Ojp0bCAtPiBINihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBFbXBoIHY6OnRsIC0+IEVtcGgobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQm9sZCB2Ojp0bCAtPiBCb2xkKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVsIHY6OnRsIC0+IFVsKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9sIHY6OnRsIC0+IE9sKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVscCB2Ojp0bCAtPiBVbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2xwIHY6OnRsIC0+IE9scChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHY6OnRsIC0+IEJsb2NrcXVvdGUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVXJsKGhyZWYsdix0aXRsZSk6OnRsIC0+IFVybChocmVmLChsb29wIHYpLHRpdGxlKTo6bG9vcCB0bFxuICAgIHwgVGV4dCBfXG4gICAgfCBDb2RlIF9cbiAgICB8IENvZGVfYmxvY2sgX1xuICAgIHwgQnJcbiAgICB8IEhyXG4gICAgfCBOTFxuICAgIHwgUmVmIF9cbiAgICB8IEltZ19yZWYgX1xuICAgIHwgSHRtbCBfXG4gICAgfCBIdG1sX2Jsb2NrIF9cbiAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgfCBSYXcgX1xuICAgIHwgUmF3X2Jsb2NrIF9cbiAgICB8IEltZyBfXG4gICAgfCBYIF8gYXMgdjo6dGwgLT4gdjo6bG9vcCB0bFxuICBpblxuICBsZXQgYSA9IGxvb3AgbCBpblxuICBsZXQgYiA9IGxvb3AgYSBpblxuICBpZiBhID0gYiB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgbm9ybWFsaXNlX21kIGJcblxuXG5cbmxldCBkdW1teV9YID1cbiAgWCAob2JqZWN0XG4gICAgbWV0aG9kIG5hbWUgPSBcImR1bW15XCJcbiAgICBtZXRob2QgdG9faHRtbCA/KGluZGVudD0wKSBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3NleHByIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fdCBfID0gTm9uZVxuICBlbmQpXG5cblxubGV0IHJlYyB2aXNpdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFBhcmFncmFwaCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBQYXJhZ3JhcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgxIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDIgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgyKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMyB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMyh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg0KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg2IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgRW1waCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gRW1waCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQm9sZCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQm9sZCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWwgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWwoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2wgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2woTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWxwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVscChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2xwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJsb2NrcXVvdGUgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQmxvY2txdW90ZSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVXJsKGhyZWYsdix0aXRsZSkgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVybChocmVmLHZpc2l0IGYgdix0aXRsZSk6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBUZXh0IHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZ19yZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWwgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfY29tbWVudCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXdfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZyAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFggIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQnI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSHI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBOTCBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gTkw6OnZpc2l0IGYgdGxcbiAgICBlbmRcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29kZV9zdHlsaXN0ID0gbGFuZzpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5cbmxldCBkZWZhdWx0X2xhbmd1YWdlID0gcmVmIFwiXCJcblxuXG5cbmxldCB0ZXh0X29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCBfIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBsb29wIHE7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbCBsIHwgT2wgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gaXRlbSAtPiBsb29wIGl0ZW07IEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nKSBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWxwIGwgfCBPbHAgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIGxvb3AgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bFxuICAgIHwgSDIgbWQgOjogdGxcbiAgICB8IEgzIG1kIDo6IHRsXG4gICAgfCBINCBtZCA6OiB0bFxuICAgIHwgSDUgbWQgOjogdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBkZWZhdWx0X2NvZGVfc3R5bGlzdCB+bGFuZyBjb2RlID0gY29kZVxuXG5sZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICB8IGU6OnRsIC0+XG4gICAgICBsb29wIGIgKGU6OnIpIHRsXG4gIGluXG4gIGxvb3AgZmFsc2UgW10gbFxuXG5sZXQgcmVtb3ZlX2xpbmtzIDogdCAtPiB0ID1cbiAgT21kX3JlcHJlc2VudGF0aW9uLnZpc2l0XG4gICAgKGZ1biBlIC0+XG4gICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCBVcmwoXywgdCwgXykgLT4gU29tZSB0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcblxubGV0IHJlYyBodG1sX2FuZF9oZWFkZXJzX29mX21kXG4gICAgPyhyZW1vdmVfaGVhZGVyX2xpbmtzPWZhbHNlKVxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzOihjb2RlX3N0eWxlPWRlZmF1bHRfY29kZV9zdHlsaXN0KVxuICAgIG1kXG4gID1cbiAgbGV0IGlkcyA9IG9iamVjdCh0aGlzKVxuICAgIHZhbCBtdXRhYmxlIGlkcyA9IFN0cmluZ1NldC5hZGQgXCJcIiBTdHJpbmdTZXQuZW1wdHlcbiAgICBtZXRob2QgbWFuZ2xlIGlkID1cbiAgICAgIGxldCByZWMgbSBpID1cbiAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZCBpZHMgdGhlblxuICAgICAgICAgIGxldCBpZHggPSBpZiBpID4gMCB0aGVuIGlkXlwiX1wiXnN0cmluZ19vZl9pbnQgaSBlbHNlIGlkIGluXG4gICAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZHggaWRzIHRoZW5cbiAgICAgICAgICAgIG0gKGkrMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWR4IGlkcztcbiAgICAgICAgICAgICBpZHgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWQgaWRzO1xuICAgICAgICAgICBpZClcbiAgICAgIGluIG0gMFxuICBlbmQgaW5cbiAgbGV0IGVtcHR5IHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcbicgLT4gbG9vcCAoaSsxKVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIGluXG4gIGxldCByZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCAwIHRoZW4gXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnfCdcXHQnfCdcXG4nIC0+XG4gICAgICAgICAgbG9vcCAocHJlZCBpKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSB0aGVuXG4gICAgICAgICAgICBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGhlYWRlcnMgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBsb29wIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGluZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OmluZGVudFxuICAgICAgICAgICAgICAgKGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSkgbWRcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCbG9ja3F1b3RlIHEgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBxO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2Jsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoaHJlZiwgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKFVybChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZixcbiAgICAgICAgICAgICAgICAgICAgIFtUZXh0KHRleHQpXSxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSlcbiAgICAgICAgICAgICAgICAgOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKHNyYywgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKEltZyhodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0LFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgICBpZiBlbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cD5cIjtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHJlbW92ZV90cmFpbGluZ19ibGFua3Mgcyk7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9wPlxcblwiO1xuICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aW1nIHNyYz0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgYWx0PSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIChCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBUZXh0IHQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDsgKilcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgRW1waCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxlbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9lbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCb2xkIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHN0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9zdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKFVsIGx8T2wgbHxVbHAgbHxPbHAgbCBhcyBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8b2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPHVsPlwiKTtcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxsaT5cIjtcbiAgICAgICAgICAgICAgICBsb29wIChpbmRlbnQrMikgbGk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvbGk+XCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGw7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjwvb2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPC91bD5cIik7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cHJlPjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIlxuICAgICAgICAgICAgICAhZGVmYXVsdF9sYW5ndWFnZSAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmcgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPjwvcHJlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGUobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxici8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aHIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhdyBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3X2Jsb2NrIHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgYXMgZSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiIC8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBIdG1sX2NvbW1lbnQgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgcyBpblxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YSBocmVmPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2E+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgxIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgxIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgxIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDE+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgyIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgyIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgyIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgzIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgzIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgzIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDM+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg0IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg0IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg0IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDQ+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg1IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg1IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg1IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg2IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg2IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg2IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDY+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgTkwgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIG5sMmJyIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgaW5cbiAgbG9vcCAwIG1kO1xuICBCdWZmZXIuY29udGVudHMgYiwgTGlzdC5yZXYgIWhlYWRlcnNcblxuYW5kIHN0cmluZ19vZl9hdHRycyBhdHRycyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgZWxzZSBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgKCogaWYgaHRtbDQgdGhlbiAqKVxuICAgICAgICAoKiAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgYSAqKVxuICAgICAgICAoKiBlbHNlICopXG4gICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5hbmQgaHRtbF9vZl9tZFxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzXG4gICAgbWRcbiAgPVxuICBmc3QgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciA/Y3MgbWQpXG5hbmQgaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZCA9XG4gIHNuZCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZClcblxuXG5sZXQgcmVjIHNleHByX29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgbG9vcCB0O1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4I3RvX3NleHByIHNleHByX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQmxvY2txdW90ZVwiO1xuICAgICAgICBsb29wIHE7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJlZiAlUyAlUylcIiBuYW1lIHRleHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZ19yZWYgJVMgJVMpXCIgbmFtZSBhbHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFBhcmFncmFwaFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nICVTICVTICVTKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVGV4dCAlU1wiIHQ7XG4gICAgICAgIGxldCByZWMgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIiAlU1wiIHQ7XG4gICAgICAgICAgICBmIHRsXG4gICAgICAgICAgfCB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRsID0gZiB0bCBpblxuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihFbXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCb2xkXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9sXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlICVTKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGVfYmxvY2sgJXMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhdyAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3X2Jsb2NrICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9ibG9jayAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfY29tbWVudCAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVybCAlUyAlUyAlUylcIiBocmVmIChodG1sX29mX21kIHMpIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgxXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDJcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIM1wiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg0XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDVcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKE5MKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICogMikgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnLicgYXMgYyAtPlxuICAgICAgICBpZiBpID4gMCAmJlxuICAgICAgICAgICBtYXRjaCBzLltpLTFdIHdpdGhcbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICctJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIChzLltpKzFdID0gJyAnfHxzLltpKzFdID0gJy0nKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnKycgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICchJyBhcyBjIC0+XG4gICAgICAgIGlmIGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJ1snIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJzwnIGFzIGMgLT5cbiAgICAgICAgaWYgaSA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxICYmXG4gICAgICAgICAgICAgKG1hdGNoIHMuW2krMV0gd2l0aCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPicgYXMgYyAtPlxuICAgICAgICBpZiBpID0gMCB8fFxuICAgICAgICAgICAgIChtYXRjaCBzLltpLTFdIHdpdGggJyAnIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyMnIGFzIGMgLT5cbiAgICAgICAgIGlmIGkgPSAwIHx8IHMuW2ktMV0gPSAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJ1xcXFwnIHwgJ1snIHwgJ10nIHwgJygnIHwgJyknIHwgJ2AnIHwgJyonIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgIGRvbmU7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJlYyBtYXJrZG93bl9vZl9tZCBtZCA9XG4gIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKVxcbiUhXCIgKHNleHByX29mX21kIG1kKTtcbiAgbGV0IHF1b3RlID8oaW5kZW50PTApIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBsb29wIG5sIGkgPVxuICAgICAgaWYgaSA8IGwgdGhlblxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmIG5sICYmIGkgPCBsIC0gMSB0aGVuXG4gICAgICAgICAgICAoZm9yIGkgPSAxIHRvIGluZGVudCBkb1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnXG4gICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPiBcIik7XG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBpbiBsb29wIHRydWUgMFxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGFkZF9zcGFjZXMgbiA9IGZvciBpID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICcgJyBkb25lIGluXG4gIGxldCByZWZlcmVuY2VzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wID8oZnN0X3BfaW5fbGk9dHJ1ZSkgPyhpc19pbl9saXN0PWZhbHNlKSBsaXN0X2luZGVudCBsID1cbiAgICAoKiBbbGlzdF9pbmRlbnQ6IGludF0gaXMgdGhlIGluZGVudGF0aW9uIGxldmVsIGluIG51bWJlciBvZiBzcGFjZXMuICopXG4gICAgKCogW2lzX2luX2xpc3Q6IGJvb2xdIGlzIG5lY2Vzc2FyeSB0byBrbm93IGlmIHdlIGFyZSBpbnNpZGUgYSBwYXJhZ3JhcGhcbiAgICAgICB3aGljaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0gYmVjYXVzZSB0aG9zZSBuZWVkIHRvIGJlIGluZGVudGVkISAqKVxuICAgIGxldCBsb29wID8oZnN0X3BfaW5fbGk9ZnN0X3BfaW5fbGkpID8oaXNfaW5fbGlzdD1pc19pbl9saXN0KSBsaXN0X2luZGVudCBsID1cbiAgICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZnN0X3BfaW5fbGkgfmlzX2luX2xpc3Q6aXNfaW5fbGlzdCBsaXN0X2luZGVudCBsXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBsaXN0X2luZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChxdW90ZSB+aW5kZW50Omxpc3RfaW5kZW50IChtYXJrZG93bl9vZl9tZCBxKSk7XG4gICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICBpZiBpc19pbl9saXN0IHRoZW5cbiAgICAgICAgaWYgZnN0X3BfaW5fbGkgdGhlblxuICAgICAgICAgIGFkZF9zcGFjZXMgKGxpc3RfaW5kZW50LTIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiXFxuXFxuXCI7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIhWyVzXSglcyBcXFwiJXNcXFwiKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyB0KTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIGM7XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIi0gXCI7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGluY3IgYztcbiAgICAgICAgYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICApIGw7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgYnByaW50ZiBiIFwiKyBcIjtcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6X1xuICAgICAgfCBOTDo6KEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbidcbiAgICAgIHwgXyAtPiAoKVxuICAgICAgZW5kO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZShfbGFuZywgYykgOjogdGwgLT4gKCogRklYTUUgKilcbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgKG46aW50KSAoczppbnQgbGlzdCkgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyB4IGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICB8IFtdIC0+IHgrMVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyB4IChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgKG1heCBiIHgpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFsxOzI7Mzs0OzU7Njs3Ozg7OTsxMF0gMCAwIDBcbiAgICAgIGluXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBpZiBjLlswXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiBjO1xuICAgICAgICAgIGlmIGMuW1N0cmluZy5sZW5ndGggYyAtIDFdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciBuIHMgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICAgIHwgW10gLT4gMFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFszOzQ7NTs2Ozc7ODs5OzEwXSAwIDBcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X2luZGVudGVkX2Jsb2NrIG4gcyA9XG4gICAgICAgIGxldCByZWMgbG9vcCBwIGkgPVxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnICcpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgaW4gbG9vcCAnXFxuJyAwXG4gICAgICBpblxuICAgICAgICBpZiBuID0gMCB0aGVuICAoKiBGSVhNRSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAoKiBjYXNlIHdoZXJlIHdlIGNhbid0IHVzZSBiYWNrcXVvdGVzICopXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAoNCtsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpXG4gICAgICAgICAgICAgIChpZiBsYW5nID0gXCJcIiB0aGVuICFkZWZhdWx0X2xhbmd1YWdlIGVsc2UgbGFuZyk7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKGxpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiogKiAqXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IChIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSk6OnRsIC0+XG4gICAgICBsZXQgbmVlZHNfbmV3bGluZXMgPVxuICAgICAgICBtYXRjaCB0bCB3aXRoXG4gICAgICAgIHwgTkwgOjogUGFyYWdyYXBoIHAgOjogX1xuICAgICAgICB8IFBhcmFncmFwaCBwIDo6IF8gLT4gcCA8PiBbXVxuICAgICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgICB8IFVsIF8gfCBPbCBfIHwgVWxwIF8gfCBPbHAgXyB8IENvZGUgKF8sIF8pIHwgQ29kZV9ibG9jayAoXywgXylcbiAgICAgICAgICB8IFRleHQgXyB8IEVtcGggXyB8IEJvbGQgXyB8IEJyIHxIciB8IFVybCAoXywgXywgXylcbiAgICAgICAgICB8IFJlZiAoXywgXywgXywgXykgfCBJbWdfcmVmIChfLCBfLCBfLCBfKVxuICAgICAgICAgIHwgSHRtbCAoXywgXywgXylcbiAgICAgICAgICB8IEJsb2NrcXVvdGUgXyB8IEltZyAoXywgXywgXykpIDo6IF8gLT4gdHJ1ZVxuICAgICAgICB8ICggSHRtbF9ibG9jayAoXywgXywgXykgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgICAgIHwgUmF3IF98UmF3X2Jsb2NrIF8pIDo6IF8tPiBmYWxzZVxuICAgICAgICB8IFggXyA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgTkwgOjogXyAtPiBmYWxzZVxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAoXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgICBlbHNlXG4gICAgICAgIChcbiAgICAgICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWZcbiAgICAgIGVsc2VcbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcyBcXFwiJXNcXFwiKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA9IDFcbiAgICAgIHx8IChCdWZmZXIubGVuZ3RoIGIgPiAxICYmXG4gICAgICAgICAgbm90KEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPSAnXFxuJ1xuICAgICAgICAgICAgICAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDIpID0gJ1xcbicpKVxuICAgICAgdGhlblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIDAgbWQ7XG4gICAgYmVnaW4gbWF0Y2ggIXJlZmVyZW5jZXMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAobmFtZSwgKHVybCwgdGl0bGUpKSAtPlxuICAgICAgICAgICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxuXCIgbmFtZSB1cmxcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxcIiVzXFxcIlxcblwiIG5hbWUgdXJsIHRpdGxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByI2dldF9hbGxcbiAgICBlbmQ7XG4gICAgbGV0IHJlcyA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKSA9PiAlU1xcbiUhXCJcbiAgICAgICAgKHNleHByX29mX21kIG1kKSByZXM7XG4gICAgcmVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEltcGxlbWVudGF0aW9uIG5vdGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICAqIC0gVGhpcyBtb2R1bGUgc2hvdWxkIGRlcGVuZCBvbiBPQ2FtbCdzIHN0YW5kYXJkIGxpYnJhcnkgb25seSBhbmRcbiAgICogc2hvdWxkIGJlIGFzICdwdXJlIE9DYW1sJyAoaS5lLiBkZXBlbmQgYXMgbGVhc3QgYXMgcG9zc2libGUgb25cbiAgICogZXh0ZXJuYWwgdG9vbHMpIGFzIHBvc3NpYmxlLlxuXG4gICAqIC0gYHdoaWxlJyBsb29wcyBhcmUgc29tZXRpbWVzIHByZWZlcnJlZCB0byByZWN1cnNpb24gYmVjYXVzZSB0aGlzXG4gICAqIG1heSBiZSB1c2VkIG9uIHN5c3RlbXMgd2hlcmUgdGFpbCByZWN1cnNpb24gaXMgbm90IHdlbGxcbiAgICogc3VwcG9ydGVkLiAoSSB0cmllZCB0byB3cml0ZSBcIndoaWxlXCIgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGJ1dCBpdFxuICAgKiB0dXJuZWQgb3V0IHRoYXQgaXQgd2FzIHByZXR0eSBpbmNvbnZlbmllbnQsIHNvIEkgZG8gdXNlXG4gICAqIHJlY3Vyc2lvbi4gIFdoZW4gSSBoYXZlIHRpbWUsIEknbGwgZG8gc29tZSB0ZXN0cyBhbmQgc2VlIGlmIElcbiAgICogbmVlZCB0byBjb252ZXJ0IHJlY3Vyc2l2ZSBsb29wcyBpbnRvIGl0ZXJhdGl2ZSBsb29wcy4gU29ycnkgaWYgaXRcbiAgICogbWFrZXMgaXQgaGFyZGVyIHRvIHJlYWQuKVxuXG4qKVxuXG4oKiBjbGFzcyB0eXBlIHRhZyA9IG9iamVjdCBtZXRob2QgaXNfbWUgOiAnYS4gJ2EgLT4gYm9vbCBlbmQgKilcblxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cblxudHlwZSB0b2tlbiA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2tcbnR5cGUgdCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuXG5sZXQgc3RyaW5nX29mX3Rva2VuID0gZnVuY3Rpb25cbiAgfCBUYWcgKG5hbWUsIG8pIC0+XG4gICAgaWYgT21kX3V0aWxzLmRlYnVnIHRoZW4gXCJUQUcoXCJebmFtZV5cIilcIiBeIG8jdG9fc3RyaW5nIGVsc2UgbyN0b19zdHJpbmdcbiAgfCBBbXBlcnNhbmQgLT4gXCImXCJcbiAgfCBBbXBlcnNhbmRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJidcbiAgfCBBdCAtPiBcIkBcIlxuICB8IEF0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ0AnXG4gIHwgQmFja3F1b3RlIC0+IFwiYFwiXG4gIHwgQmFja3F1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ2AnXG4gIHwgQmFja3NsYXNoIC0+IFwiXFxcXFwiXG4gIHwgQmFja3NsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcXFwnXG4gIHwgQmFyIC0+IFwifFwiXG4gIHwgQmFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3wnXG4gIHwgQ2FyZXQgLT4gXCJeXCJcbiAgfCBDYXJldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdeJ1xuICB8IENicmFjZSAtPiBcIn1cIlxuICB8IENicmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd9J1xuICB8IENvbG9uIC0+IFwiOlwiXG4gIHwgQ29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOidcbiAgfCBDb21tYSAtPiBcIixcIlxuICB8IENvbW1hcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJywnXG4gIHwgQ3BhcmVudGhlc2lzIC0+IFwiKVwiXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyknXG4gIHwgQ2JyYWNrZXQgLT4gXCJdXCJcbiAgfCBDYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICddJ1xuICB8IERvbGxhciAtPiBcIiRcIlxuICB8IERvbGxhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICckJ1xuICB8IERvdCAtPiBcIi5cIlxuICB8IERvdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcuJ1xuICB8IERvdWJsZXF1b3RlIC0+IFwiXFxcIlwiXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXCInXG4gIHwgRXhjbGFtYXRpb24gLT4gXCIhXCJcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICchJ1xuICB8IEVxdWFsIC0+IFwiPVwiXG4gIHwgRXF1YWxzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPSdcbiAgfCBHcmVhdGVydGhhbiAtPiBcIj5cIlxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz4nXG4gIHwgSGFzaCAtPiBcIiNcIlxuICB8IEhhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnIydcbiAgfCBMZXNzdGhhbiAtPiBcIjxcIlxuICB8IExlc3N0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzwnXG4gIHwgTWludXMgLT4gXCItXCJcbiAgfCBNaW51c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICctJ1xuICB8IE5ld2xpbmUgLT4gXCJcXG5cIlxuICB8IE5ld2xpbmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxuJ1xuICB8IE51bWJlciBzIC0+IHNcbiAgfCBPYnJhY2UgLT4gXCJ7XCJcbiAgfCBPYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAneydcbiAgfCBPcGFyZW50aGVzaXMgLT4gXCIoXCJcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKCdcbiAgfCBPYnJhY2tldCAtPiBcIltcIlxuICB8IE9icmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1snXG4gIHwgUGVyY2VudCAtPiBcIiVcIlxuICB8IFBlcmNlbnRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJSdcbiAgfCBQbHVzIC0+IFwiK1wiXG4gIHwgUGx1c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcrJ1xuICB8IFF1ZXN0aW9uIC0+IFwiP1wiXG4gIHwgUXVlc3Rpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPydcbiAgfCBRdW90ZSAtPiBcIidcIlxuICB8IFF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcJydcbiAgfCBTZW1pY29sb24gLT4gXCI7XCJcbiAgfCBTZW1pY29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOydcbiAgfCBTbGFzaCAtPiBcIi9cIlxuICB8IFNsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy8nXG4gIHwgU3BhY2UgLT4gXCIgXCJcbiAgfCBTcGFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcgJ1xuICB8IFN0YXIgLT4gXCIqXCJcbiAgfCBTdGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyonXG4gIHwgVGFiIC0+IFwiICAgIFwiXG4gIHwgVGFicyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKCgyK24pKjQpICcgJ1xuICB8IFRpbGRlIC0+IFwiflwiXG4gIHwgVGlsZGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfidcbiAgfCBVbmRlcnNjb3JlIC0+IFwiX1wiXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdfJ1xuICB8IFdvcmQgcyAtPiBzXG5cblxubGV0IHNpemVfYW5kX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgfCBUYWcgXyAtPiAoMCwgMClcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlXG4gIHwgQ29sb24gfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90XG4gIHwgRG91YmxlcXVvdGUgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW5cbiAgfCBNaW51cyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudCB8IFBsdXNcbiAgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgLT4gKDEsIDApXG4gIHwgQW1wZXJzYW5kcyB4IHwgQXRzIHggfCBCYWNrcXVvdGVzIHggfCBCYWNrc2xhc2hzIHggfCBCYXJzIHggfCBDYXJldHMgeFxuICB8IENicmFjZXMgeCB8IENvbG9ucyB4IHwgQ29tbWFzIHggfCBDcGFyZW50aGVzaXNzIHggfCBDYnJhY2tldHMgeFxuICB8IERvbGxhcnMgeCB8IERvdHMgeFxuICB8IERvdWJsZXF1b3RlcyB4IHwgRXhjbGFtYXRpb25zIHggfCBFcXVhbHMgeCB8IEdyZWF0ZXJ0aGFucyB4IHwgSGFzaHMgeFxuICB8IExlc3N0aGFucyB4XG4gIHwgTWludXNzIHggfCBPYnJhY2VzIHggfCBPcGFyZW50aGVzaXNzIHggfCBPYnJhY2tldHMgeCB8IFBlcmNlbnRzIHggfCBQbHVzcyB4XG4gIHwgUXVlc3Rpb25zIHggfCBRdW90ZXMgeCB8IFNlbWljb2xvbnMgeCB8IFNsYXNocyB4IHwgU3BhY2VzIHggfCBTdGFycyB4XG4gIHwgVGFicyB4XG4gIHwgVGlsZGVzIHggfCBVbmRlcnNjb3JlcyB4IC0+ICgyK3gsIDApXG4gIHwgTmV3bGluZSAtPiAoMCwgMSlcbiAgfCBOZXdsaW5lcyB4IC0+ICgwLCAyK3gpXG4gIHwgTnVtYmVyIHMgfCBXb3JkIHMgLT4gKFN0cmluZy5sZW5ndGggcywgMClcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IGMsIG5sID0gc2l6ZV9hbmRfbmV3bGluZXMgdCBpblxuICBjICsgbmxcblxubGV0IHNwbGl0X2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBBbXBlcnNhbmRzIG4gLT4gQW1wZXJzYW5kLCAoaWYgbiA+IDAgdGhlbiBBbXBlcnNhbmRzKG4tMSkgZWxzZSBBbXBlcnNhbmQpXG4gIHwgQXRzIG4gLT4gQXQsIChpZiBuID4gMCB0aGVuIEF0cyhuLTEpIGVsc2UgQXQpXG4gIHwgQmFja3F1b3RlcyBuIC0+IEJhY2txdW90ZSwgKGlmIG4gPiAwIHRoZW4gQmFja3F1b3RlcyhuLTEpIGVsc2UgQmFja3F1b3RlKVxuICB8IEJhY2tzbGFzaHMgbiAtPiBCYWNrc2xhc2gsIChpZiBuID4gMCB0aGVuIEJhY2tzbGFzaHMobi0xKSBlbHNlIEJhY2tzbGFzaClcbiAgfCBCYXJzIG4gLT4gQmFyLCAoaWYgbiA+IDAgdGhlbiBCYXJzKG4tMSkgZWxzZSBCYXIpXG4gIHwgQ2FyZXRzIG4gLT4gQ2FyZXQsIChpZiBuID4gMCB0aGVuIENhcmV0cyhuLTEpIGVsc2UgQ2FyZXQpXG4gIHwgQ2JyYWNlcyBuIC0+IENicmFjZSwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNlcyhuLTEpIGVsc2UgQ2JyYWNlKVxuICB8IENvbG9ucyBuIC0+IENvbG9uLCAoaWYgbiA+IDAgdGhlbiBDb2xvbnMobi0xKSBlbHNlIENvbG9uKVxuICB8IENvbW1hcyBuIC0+IENvbW1hLCAoaWYgbiA+IDAgdGhlbiBDb21tYXMobi0xKSBlbHNlIENvbW1hKVxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBDcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIENwYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzKVxuICB8IENicmFja2V0cyBuIC0+IENicmFja2V0LCAoaWYgbiA+IDAgdGhlbiBDYnJhY2tldHMobi0xKSBlbHNlIENicmFja2V0KVxuICB8IERvbGxhcnMgbiAtPiBEb2xsYXIsIChpZiBuID4gMCB0aGVuIERvbGxhcnMobi0xKSBlbHNlIERvbGxhcilcbiAgfCBEb3RzIG4gLT4gRG90LCAoaWYgbiA+IDAgdGhlbiBEb3RzKG4tMSkgZWxzZSBEb3QpXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gRG91YmxlcXVvdGUsIChpZiBuID4gMCB0aGVuIERvdWJsZXF1b3RlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGUpXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gRXhjbGFtYXRpb24sIChpZiBuID4gMCB0aGVuIEV4Y2xhbWF0aW9ucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb24pXG4gIHwgRXF1YWxzIG4gLT4gRXF1YWwsIChpZiBuID4gMCB0aGVuIEVxdWFscyhuLTEpIGVsc2UgRXF1YWwpXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW4sIChpZiBuID4gMCB0aGVuIEdyZWF0ZXJ0aGFucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW4pXG4gIHwgSGFzaHMgbiAtPiBIYXNoLCAoaWYgbiA+IDAgdGhlbiBIYXNocyhuLTEpIGVsc2UgSGFzaClcbiAgfCBMZXNzdGhhbnMgbiAtPiBMZXNzdGhhbiwgKGlmIG4gPiAwIHRoZW4gTGVzc3RoYW5zKG4tMSkgZWxzZSBMZXNzdGhhbilcbiAgfCBNaW51c3MgbiAtPiBNaW51cywgKGlmIG4gPiAwIHRoZW4gTWludXNzKG4tMSkgZWxzZSBNaW51cylcbiAgfCBOZXdsaW5lcyBuIC0+IE5ld2xpbmUsIChpZiBuID4gMCB0aGVuIE5ld2xpbmVzKG4tMSkgZWxzZSBOZXdsaW5lKVxuICB8IE9icmFjZXMgbiAtPiBPYnJhY2UsIChpZiBuID4gMCB0aGVuIE9icmFjZXMobi0xKSBlbHNlIE9icmFjZSlcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gT3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBPcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpcylcbiAgfCBPYnJhY2tldHMgbiAtPiBPYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gT2JyYWNrZXRzKG4tMSkgZWxzZSBPYnJhY2tldClcbiAgfCBQZXJjZW50cyBuIC0+IFBlcmNlbnQsIChpZiBuID4gMCB0aGVuIFBlcmNlbnRzKG4tMSkgZWxzZSBQZXJjZW50KVxuICB8IFBsdXNzIG4gLT4gUGx1cywgKGlmIG4gPiAwIHRoZW4gUGx1c3Mobi0xKSBlbHNlIFBsdXMpXG4gIHwgUXVlc3Rpb25zIG4gLT4gUXVlc3Rpb24sIChpZiBuID4gMCB0aGVuIFF1ZXN0aW9ucyhuLTEpIGVsc2UgUXVlc3Rpb24pXG4gIHwgUXVvdGVzIG4gLT4gUXVvdGUsIChpZiBuID4gMCB0aGVuIFF1b3RlcyhuLTEpIGVsc2UgUXVvdGUpXG4gIHwgU2VtaWNvbG9ucyBuIC0+IFNlbWljb2xvbiwgKGlmIG4gPiAwIHRoZW4gU2VtaWNvbG9ucyhuLTEpIGVsc2UgU2VtaWNvbG9uKVxuICB8IFNsYXNocyBuIC0+IFNsYXNoLCAoaWYgbiA+IDAgdGhlbiBTbGFzaHMobi0xKSBlbHNlIFNsYXNoKVxuICB8IFNwYWNlcyBuIC0+IFNwYWNlLCAoaWYgbiA+IDAgdGhlbiBTcGFjZXMobi0xKSBlbHNlIFNwYWNlKVxuICB8IFN0YXJzIG4gLT4gU3RhciwgKGlmIG4gPiAwIHRoZW4gU3RhcnMobi0xKSBlbHNlIFN0YXIpXG4gIHwgVGFicyBuIC0+IFRhYiwgKGlmIG4gPiAwIHRoZW4gVGFicyhuLTEpIGVsc2UgVGFiKVxuICB8IFRpbGRlcyBuIC0+IFRpbGRlLCAoaWYgbiA+IDAgdGhlbiBUaWxkZXMobi0xKSBlbHNlIFRpbGRlKVxuICB8IFVuZGVyc2NvcmVzIG4gLT4gVW5kZXJzY29yZSwgKGlmIG4gPiAwIHRoZW4gVW5kZXJzY29yZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2UgfCBDb2xvblxuICB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3QgfCBEb3VibGVxdW90ZVxuICB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhbiB8IE1pbnVzXG4gIHwgTmV3bGluZSB8IE51bWJlciBfIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50XG4gIHwgUGx1cyB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSB8IFRhZyBfIHwgV29yZCBfIC0+XG4gICAgIGludmFsaWRfYXJnIFwiT21kX2xleGVyLnNwbGl0X2ZpcnN0XCJcblxubW9kdWxlIHR5cGUgSW5wdXQgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXJcbiAgdmFsIHN1YiA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBMZXgoSSA6IElucHV0KSA6XG5zaWdcbiAgdmFsIGxleCA6IEkudCAtPiB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBsZXggKHMgOiBJLnQpID1cbiAgICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsID0gSS5sZW5ndGggcyBpblxuICAgIGxldCByY291bnQgYyA9XG4gICAgICAoKiBbcmNvdW50IGNdIHJldHVybnMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgY29uc2VjdXRpdmVcbiAgICAgICAgIG9jY3VycmVuY2VzIG9mIFtjXS4gIEJ5IHNpZGUtZWZmZWN0LCBpdCBpbmNyZWFzZXMgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgY291bnRlciBbaV0uICopXG4gICAgICBsZXQgcmVjIGxvb3AgciA9XG4gICAgICAgIGlmICFpID0gbCB0aGVuIHJcbiAgICAgICAgZWxzZSBpZiBJLmdldCBzICFpID0gYyB0aGVuIChpbmNyIGk7IGxvb3AgKHIrMSkpXG4gICAgICAgIGVsc2UgclxuICAgICAgaW5cbiAgICAgIGxvb3AgMVxuICAgIGluXG4gICAgbGV0IHdvcmQgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJydcbiAgICAgICAgICAgIHwgJ1wiJyB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6J1xuICAgICAgICAgICAgfCAnOycgfCAnPicgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLydcbiAgICAgICAgICAgIHwgJyQnIHwgJyUnIHwgJyEnIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgICAgfCBjIC0+IGluY3IgaTsgbG9vcCgpXG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGxvb3AoKVxuICAgIGluXG4gICAgbGV0IG1heWJlX251bWJlciAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgd2hpbGVcbiAgICAgICAgIWkgPCBsICYmXG4gICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGRvXG4gICAgICAgIGluY3IgaVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnIHwgJ1wiJ1xuICAgICAgICAgIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonIHwgJzsnIHwgJz4nXG4gICAgICAgICAgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLycgfCAnJCcgfCAnJScgfCAnISdcbiAgICAgICAgICB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaSA6PSBzdGFydDtcbiAgICAgICAgICAgICAgd29yZCgpXG4gICAgICAgIGVuZFxuICAgIGluXG5cbiAgICBsZXQgbl9vY2MgYyA9IGluY3IgaTsgcmNvdW50IGMgaW5cblxuICAgIHdoaWxlICFpIDwgbCBkb1xuICAgICAgbGV0IGMgPSBJLmdldCBzICFpIGluXG4gICAgICBsZXQgdyA9IG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2UgZWxzZSBTcGFjZXMgKG4tMilcbiAgICAgICAgfCAnXFx0JyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZXMoMikgZWxzZSBTcGFjZXMoNCpuLTIpXG4gICAgICAgIHwgJ1xcbicgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzIChuLTIpXG4gICAgICAgIHwgJ1xccicgLT4gKCogZWxpbWluYXRpbmcgXFxyIGJ5IGNvbnZlcnRpbmcgYWxsIHN0eWxlcyB0byB1bml4IHN0eWxlICopXG4gICAgICAgICAgaW5jciBpO1xuICAgICAgICAgIGxldCByZWMgY291bnRfcm4geCA9XG4gICAgICAgICAgICBpZiAhaSA8IGwgJiYgSS5nZXQgcyAoIWkpID0gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBpZiAhaSArIDEgPCBsICYmIEkuZ2V0IHMgKCFpKzEpID0gJ1xccicgdGhlblxuICAgICAgICAgICAgICAgIChpIDo9ICFpICsgMjsgY291bnRfcm4gKHgrMSkpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBybiA9IDEgKyBjb3VudF9ybiAwIGluXG4gICAgICAgICAgaWYgcm4gPSAxIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIG5fb2NjIGMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IE5ld2xpbmVcbiAgICAgICAgICAgIHwgeCAtPiBhc3NlcnQoeD49Mik7IE5ld2xpbmVzKHgtMilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoYXNzZXJ0KHJuPj0yKTtOZXdsaW5lcyhybi0yKSlcbiAgICAgICAgfCAnIycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEhhc2ggZWxzZSBIYXNocyAobi0yKVxuICAgICAgICB8ICcqJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3RhciBlbHNlIFN0YXJzIChuLTIpXG4gICAgICAgIHwgJy0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBNaW51cyBlbHNlIE1pbnVzcyAobi0yKVxuICAgICAgICB8ICcrJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGx1cyBlbHNlIFBsdXNzIChuLTIpXG4gICAgICAgIHwgJ2AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrcXVvdGUgZWxzZSBCYWNrcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcJycgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVvdGUgZWxzZSBRdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXCInICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3VibGVxdW90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFxcXCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3NsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEJhY2tzbGFzaHMgKG4tMilcbiAgICAgICAgfCAnXycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFVuZGVyc2NvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZXMgKG4tMilcbiAgICAgICAgfCAnWycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9icmFja2V0cyAobi0yKVxuICAgICAgICB8ICddJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNrZXQgZWxzZSBDYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAneycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFjZSBlbHNlIE9icmFjZXMgKG4tMilcbiAgICAgICAgfCAnfScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFjZSBlbHNlIENicmFjZXMgKG4tMilcbiAgICAgICAgfCAnKCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9wYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJyknICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICc6JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29sb24gZWxzZSBDb2xvbnMgKG4tMilcbiAgICAgICAgfCAnOycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNlbWljb2xvbiBlbHNlIFNlbWljb2xvbnMgKG4tMilcbiAgICAgICAgfCAnPicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFucyAobi0yKVxuICAgICAgICB8ICd+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVGlsZGUgZWxzZSBUaWxkZXMgKG4tMilcbiAgICAgICAgfCAnPCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zIChuLTIpXG4gICAgICAgIHwgJ0AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBdCBlbHNlIEF0cyAobi0yKVxuICAgICAgICB8ICcmJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQW1wZXJzYW5kIGVsc2UgQW1wZXJzYW5kcyAobi0yKVxuICAgICAgICB8ICd8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFyIGVsc2UgQmFycyAobi0yKVxuICAgICAgICB8ICdeJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2FyZXQgZWxzZSBDYXJldHMgKG4tMilcbiAgICAgICAgfCAnLCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbW1hIGVsc2UgQ29tbWFzIChuLTIpXG4gICAgICAgIHwgJy4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3QgZWxzZSBEb3RzIChuLTIpXG4gICAgICAgIHwgJy8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTbGFzaCBlbHNlIFNsYXNocyAobi0yKVxuICAgICAgICB8ICckJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG9sbGFyIGVsc2UgRG9sbGFycyAobi0yKVxuICAgICAgICB8ICclJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGVyY2VudCBlbHNlIFBlcmNlbnRzIChuLTIpXG4gICAgICAgIHwgJz0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFcXVhbCBlbHNlIEVxdWFscyAobi0yKVxuICAgICAgICB8ICchJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXhjbGFtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb25zIChuLTIpXG4gICAgICAgIHwgJz8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdWVzdGlvbiBlbHNlIFF1ZXN0aW9ucyAobi0yKVxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gbWF5YmVfbnVtYmVyKClcbiAgICAgICAgfCBjIC0+IHdvcmQoKSBpblxuICAgICAgcmVzdWx0IDo9IHcgOjogIXJlc3VsdFxuICAgIGRvbmU7XG4gICAgTGlzdC5yZXYgIXJlc3VsdFxuZW5kXG5cbm1vZHVsZSBMZXhfc3RyaW5nID0gTGV4KFN0cmluZ0xhYmVscylcbmxldCBsZXggPSBMZXhfc3RyaW5nLmxleFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxubW9kdWxlIEJpZ2FycmF5X2lucHV0IDogSW5wdXQgd2l0aCB0eXBlIHQgPSBiaWdzdHJpbmcgPVxuc3RydWN0XG4gIG1vZHVsZSBCQSA9IEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gYmlnc3RyaW5nXG4gIGxldCBnZXQgPSBCQS5BcnJheTEuZ2V0XG4gIGxldCBsZW5ndGggPSBCQS5BcnJheTEuZGltXG4gIGxldCBzdWIgYXJyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBwb3MgPCAwIHx8IHBvcyArIGxlbiA+IEJBLkFycmF5MS5kaW0gYXJyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5X2lucHV0LnN1YlwiO1xuICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBCeXRlcy51bnNhZmVfc2V0IHMgaSAoQkEuQXJyYXkxLnVuc2FmZV9nZXQgYXJyIChpICsgcG9zKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuZW5kXG5tb2R1bGUgTGV4X2JpZ2FycmF5ID0gTGV4KEJpZ2FycmF5X2lucHV0KVxubGV0IGxleF9iaWdhcnJheSA9IExleF9iaWdhcnJheS5sZXhcblxubGV0IG1ha2Vfc3BhY2UgPSBmdW5jdGlvblxuICB8IDAgLT4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiXG4gIHwgMSAtPiBTcGFjZVxuICB8IG4gLT4gaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCIgZWxzZSBTcGFjZXMgKG4tMilcblxuXG4oKlxuKCoqIFtzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGwuXG4gICAgW2VzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbFxuICAgIChzYW1lIHNlbWFudGljcyBhcyBbU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90bCBsKV0pLiAqKVxubGV0IHN0cmluZ19vZl90bCwgZXN0cmluZ19vZl90bCA9XG4gIGxldCBnIGVzY2FwZWQgdGwgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA0MiBpblxuICAgIGxldCByZWMgbG9vcCA6ICdhIHQgbGlzdCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChpZiBlc2NhcGVkIHRoZW4gU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90IGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzdHJpbmdfb2ZfdCBlKTtcbiAgICAgICAgICBsb29wIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgKClcbiAgICBpblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIHRsOyBiKVxuICBpbiBnIGZhbHNlLCBnIHRydWVcbiopXG5cbmxldCBzdHJpbmdfb2ZfdG9rZW5zIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBMaXN0Lml0ZXIgKGZ1biBlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl90b2tlbiBlKSkgdGw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGRlc3RyaW5nX29mX3Rva2VucyA/KGxpbWl0PW1heF9pbnQpIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIChpOmludCkgKHRsaXN0OnRvayBsaXN0KSA6IHVuaXQgPSBtYXRjaCB0bGlzdCB3aXRoXG4gICAgfCBlOjp0bCAtPlxuICAgICAgICBpZiBsaW1pdCA9IGkgdGhlblxuICAgICAgICAgIGxvb3AgaSBbXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdG9rZW4gZSkpO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjo6XCI7XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpIHRsXG4gICAgICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiW11cIlxuICBpblxuICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCAwIHRsOyBiKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMtMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgc2RlYnVnID0gdHJ1ZVxuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5tb2R1bGUgTCA9IE9tZF9sZXhlclxuXG50eXBlIHIgPSBPbWRfcmVwcmVzZW50YXRpb24udFxuKCoqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcblxuYW5kIHAgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiBjb250ZXh0IGluZm9ybWF0aW9uOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuXG5hbmQgbCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIHRva2VucyB0byBwYXJzZSAqKVxuXG5hbmQgbWFpbl9sb29wID1cbiAgP2h0bWw6Ym9vbCAtPlxuICByIC0+ICgqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcbiAgcCAtPiAoKiBpbmZvOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuICBsIC0+ICgqIHRva2VucyB0byBwYXJzZSAqKVxuICBPbWRfcmVwcmVzZW50YXRpb24udCAoKiBmaW5hbCByZXN1bHQgKilcbigqKiBtb3N0IGltcG9ydGFudCBsb29wICopXG5cblxuKCoqIE4uQi4gUGxlYXNlIGRvIG5vdCB1c2UgdGFidWxhdGlvbnMgaW4geW91ciBNYXJrZG93biBmaWxlISAqKVxuXG5tb2R1bGUgdHlwZSBFbnYgPSBzaWdcbiAgdmFsIHJjOiBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICB2YWwgZXh0ZW5zaW9ucyA6IE9tZF9yZXByZXNlbnRhdGlvbi5leHRlbnNpb25zXG4gIHZhbCBkZWZhdWx0X2xhbmcgOiBzdHJpbmdcbiAgdmFsIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgOiBib29sXG4gIHZhbCBibGluZF9odG1sIDogYm9vbFxuICB2YWwgc3RyaWN0X2h0bWwgOiBib29sXG4gIHZhbCB3YXJuaW5nIDogYm9vbFxuICB2YWwgd2Fybl9lcnJvciA6IGJvb2xcbmVuZFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdCBlbmRcblxubW9kdWxlIERlZmF1bHRfZW52IChVbml0OnNpZyBlbmQpIDogRW52ID0gc3RydWN0XG4gIGxldCByYyA9IG5ldyBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICBsZXQgZXh0ZW5zaW9ucyA9IFtdXG4gIGxldCBkZWZhdWx0X2xhbmcgPSBcIlwiXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlID0gdHJ1ZVxuICBsZXQgYmxpbmRfaHRtbCA9IGZhbHNlXG4gIGxldCBzdHJpY3RfaHRtbCA9IGZhbHNlXG4gIGxldCB3YXJuaW5nID0gZmFsc2VcbiAgbGV0IHdhcm5fZXJyb3IgPSBmYWxzZVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbnY6RW52KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBFbnZcblxuICBsZXQgd2FybiA9IE9tZF91dGlscy53YXJuIH53ZTp3YXJuX2Vycm9yXG5cbiAgKCoqIHNldCBvZiBrbm93biBIVE1MIGNvZGVzICopXG4gIGxldCBodG1sY29kZXNfc2V0ID0gU3RyaW5nU2V0Lm9mX2xpc3QgKCogVGhpcyBsaXN0IHNob3VsZCBiZSBjaGVja2VkLi4uICopXG4gICAgICAoKiBsaXN0IGV4dHJhY3RlZCBmcm9tOiBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9jaGFyc2V0Lmh0bWwgKilcbiAgICAgIFsgXCJBRWxpZ1wiOyAgXCJBYWN1dGVcIjsgIFwiQWNpcmNcIjsgIFwiQWdyYXZlXCI7IFwiQWxwaGFcIjsgIFwiQXJpbmdcIjsgIFwiQXRpbGRlXCI7XG4gICAgICAgIFwiQXVtbFwiOyBcIkJldGFcIjsgIFwiQ2NlZGlsXCI7IFwiQ2hpXCI7IFwiRGFnZ2VyXCI7ICBcIkRlbHRhXCI7IFwiRVRIXCI7IFwiRWFjdXRlXCI7XG4gICAgICAgIFwiRWNpcmNcIjsgIFwiRWdyYXZlXCI7ICBcIkVwc2lsb25cIjsgICBcIkV0YVwiOyAgXCJFdW1sXCI7ICBcIkdhbW1hXCI7ICBcIklhY3V0ZVwiO1xuICAgICAgICBcIkljaXJjXCI7IFwiSWdyYXZlXCI7IFwiSW90YVwiOyAgXCJJdW1sXCI7IFwiS2FwcGFcIjsgXCJMYW1iZGFcIjsgXCJNdVwiOyBcIk50aWxkZVwiO1xuICAgICAgICBcIk51XCI7ICBcIk9FbGlnXCI7ICBcIk9hY3V0ZVwiOyAgIFwiT2NpcmNcIjsgIFwiT2dyYXZlXCI7ICBcIk9tZWdhXCI7ICBcIk9taWNyb25cIjtcbiAgICAgICAgXCJPc2xhc2hcIjsgIFwiT3RpbGRlXCI7ICBcIk91bWxcIjsgIFwiUGhpXCI7ICBcIlBpXCI7ICBcIlByaW1lXCI7ICBcIlBzaVwiOyAgXCJSaG9cIjtcbiAgICAgICAgXCJTY2Fyb25cIjsgIFwiU2lnbWFcIjsgICBcIlRIT1JOXCI7ICBcIlRhdVwiOyAgXCJUaGV0YVwiOyAgIFwiVWFjdXRlXCI7ICBcIlVjaXJjXCI7XG4gICAgICAgIFwiVWdyYXZlXCI7IFwiVXBzaWxvblwiOyBcIlV1bWxcIjsgXCJYaVwiOyBcIllhY3V0ZVwiOyBcIll1bWxcIjsgXCJaZXRhXCI7IFwiYWFjdXRlXCI7XG4gICAgICAgIFwiYWNpcmNcIjsgXCJhY3V0ZVwiOyBcImFlbGlnXCI7IFwiYWdyYXZlXCI7IFwiYWxlZnN5bVwiOyBcImFscGhhXCI7IFwiYW1wXCI7IFwiYW5kXCI7XG4gICAgICAgIFwiYW5nXCI7IFwiYXJpbmdcIjsgXCJhc3ltcFwiOyAgXCJhdGlsZGVcIjsgXCJhdW1sXCI7IFwiYmRxdW9cIjsgXCJiZXRhXCI7IFwiYnJ2YmFyXCI7XG4gICAgICAgIFwiYnVsbFwiOyAgXCJjYXBcIjsgIFwiY2NlZGlsXCI7IFwiY2VkaWxcIjsgIFwiY2VudFwiOyAgXCJjaGlcIjsgXCJjaXJjXCI7ICBcImNsdWJzXCI7XG4gICAgICAgIFwiY29uZ1wiOyAgXCJjb3B5XCI7IFwiY3JhcnJcIjsgXCJjdXBcIjsgIFwiY3VycmVuXCI7IFwiZEFyclwiOyAgXCJkYWdnZXJcIjsgXCJkYXJyXCI7XG4gICAgICAgIFwiZGVnXCI7ICBcImRlbHRhXCI7ICBcImRpYW1zXCI7ICAgXCJkaXZpZGVcIjsgIFwiZWFjdXRlXCI7ICBcImVjaXJjXCI7ICBcImVncmF2ZVwiO1xuICAgICAgICBcImVtcHR5XCI7ICBcImVtc3BcIjsgXCJlbnNwXCI7ICBcImVwc2lsb25cIjsgXCJlcXVpdlwiOyAgXCJldGFcIjsgIFwiZXRoXCI7IFwiZXVtbFwiO1xuICAgICAgICBcImV1cm9cIjsgIFwiZXhpc3RcIjsgIFwiZm5vZlwiOyAgXCJmb3JhbGxcIjsgIFwiZnJhYzEyXCI7ICBcImZyYWMxNFwiOyAgXCJmcmFjMzRcIjtcbiAgICAgICAgXCJmcmFzbFwiOyAgXCJnYW1tYVwiOyAgXCJnZVwiOyBcImd0XCI7ICBcImhBcnJcIjsgIFwiaGFyclwiOyBcImhlYXJ0c1wiOyAgXCJoZWxsaXBcIjtcbiAgICAgICAgXCJpYWN1dGVcIjsgXCJpY2lyY1wiOyBcImlleGNsXCI7IFwiaWdyYXZlXCI7IFwiaW1hZ2VcIjsgXCJpbmZpblwiOyBcImludFwiOyBcImlvdGFcIjtcbiAgICAgICAgXCJpcXVlc3RcIjsgXCJpc2luXCI7IFwiaXVtbFwiOyAgXCJrYXBwYVwiOyBcImxBcnJcIjsgXCJsYW1iZGFcIjsgXCJsYW5nXCI7IFwibGFxdW9cIjtcbiAgICAgICAgXCJsYXJyXCI7ICBcImxjZWlsXCI7ICBcImxkcXVvXCI7IFwibGVcIjsgIFwibGZsb29yXCI7ICBcImxvd2FzdFwiOyBcImxvelwiOyAgXCJscm1cIjtcbiAgICAgICAgXCJsc2FxdW9cIjsgXCJsc3F1b1wiOyBcImx0XCI7ICBcIm1hY3JcIjsgXCJtZGFzaFwiOyBcIm1pY3JvXCI7IFwibWlkZG90XCI7IFwibWludXNcIjtcbiAgICAgICAgXCJtdVwiOyBcIm5hYmxhXCI7ICBcIm5ic3BcIjsgXCJuZGFzaFwiOyAgXCJuZVwiOyBcIm5pXCI7IFwibm90XCI7ICBcIm5vdGluXCI7IFwibnN1YlwiO1xuICAgICAgICBcIm50aWxkZVwiOyAgXCJudVwiOyAgIFwib2FjdXRlXCI7ICBcIm9jaXJjXCI7ICBcIm9lbGlnXCI7ICAgXCJvZ3JhdmVcIjsgIFwib2xpbmVcIjtcbiAgICAgICAgXCJvbWVnYVwiOyBcIm9taWNyb25cIjsgXCJvcGx1c1wiOyBcIm9yXCI7IFwib3JkZlwiOyBcIm9yZG1cIjsgXCJvc2xhc2hcIjsgXCJvdGlsZGVcIjtcbiAgICAgICAgXCJvdGltZXNcIjsgIFwib3VtbFwiOyAgXCJwYXJhXCI7ICBcInBhcnRcIjsgIFwicGVybWlsXCI7IFwicGVycFwiOyAgXCJwaGlcIjsgIFwicGlcIjtcbiAgICAgICAgXCJwaXZcIjsgIFwicGx1c21uXCI7ICBcInBvdW5kXCI7IFwicHJpbWVcIjsgIFwicHJvZFwiOyAgXCJwcm9wXCI7IFwicHNpXCI7ICBcInF1b3RcIjtcbiAgICAgICAgXCJyQXJyXCI7ICBcInJhZGljXCI7IFwicmFuZ1wiOyBcInJhcXVvXCI7ICBcInJhcnJcIjsgXCJyY2VpbFwiOyAgXCJyZHF1b1wiOyBcInJlYWxcIjtcbiAgICAgICAgXCJyZWdcIjsgXCJyZmxvb3JcIjsgIFwicmhvXCI7IFwicmxtXCI7IFwicnNhcXVvXCI7ICBcInJzcXVvXCI7IFwic2JxdW9cIjsgXCJzY2Fyb25cIjtcbiAgICAgICAgXCJzZG90XCI7ICBcInNlY3RcIjsgIFwic2h5XCI7IFwic2lnbWFcIjsgIFwic2lnbWFmXCI7ICBcInNpbVwiOyBcInNwYWRlc1wiOyAgXCJzdWJcIjtcbiAgICAgICAgXCJzdWJlXCI7IFwic3VtXCI7IFwic3VwXCI7IFwic3VwMVwiOyAgXCJzdXAyXCI7IFwic3VwM1wiOyBcInN1cGVcIjsgXCJzemxpZ1wiOyBcInRhdVwiO1xuICAgICAgICBcInRoZXJlNFwiOyAgXCJ0aGV0YVwiOyBcInRoZXRhc3ltXCI7ICBcInRoaW5zcFwiOyBcInRob3JuXCI7ICBcInRpbGRlXCI7IFwidGltZXNcIjtcbiAgICAgICAgXCJ0cmFkZVwiOyBcInVBcnJcIjsgXCJ1YWN1dGVcIjsgIFwidWFyclwiOyBcInVjaXJjXCI7IFwidWdyYXZlXCI7IFwidW1sXCI7IFwidXBzaWhcIjtcbiAgICAgICAgXCJ1cHNpbG9uXCI7ICBcInV1bWxcIjsgXCJ3ZWllcnBcIjsgXCJ4aVwiOyAgXCJ5YWN1dGVcIjsgXCJ5ZW5cIjsgIFwieXVtbFwiOyBcInpldGFcIjtcbiAgICAgICAgXCJ6d2pcIjsgXCJ6d25qXCI7IF1cblxuXG4gICgqKiBzZXQgb2Yga25vd24gaW5saW5lIEhUTUwgdGFncyAqKVxuICBsZXQgaW5saW5lX2h0bWx0YWdzX3NldCA9XG4gICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICgqIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0lubGluZV9lbGVtZW50cyAqKVxuICAgICAgICAgWyBcImJcIjtcImJpZ1wiO1wiaVwiO1wic21hbGxcIjtcInR0XCI7XG4gICAgICAgICAgIFwiYWJiclwiO1wiYWNyb255bVwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiZGZuXCI7XCJlbVwiO1wia2JkXCI7XCJzdHJvbmdcIjtcInNhbXBcIjtcInZhclwiO1xuICAgICAgICAgICBcImFcIjtcImJkb1wiO1wiYnJcIjtcImltZ1wiO1wibWFwXCI7XCJvYmplY3RcIjtcInFcIjtcInNwYW5cIjtcInN1YlwiO1wic3VwXCI7XG4gICAgICAgICAgIFwiYnV0dG9uXCI7XCJpbnB1dFwiO1wibGFiZWxcIjtcInNlbGVjdFwiO1widGV4dGFyZWFcIjtdKVxuXG4gICgqKiBOLkIuIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgbm8gY2xlYXIgZGlzdGluY3Rpb24gYmV0d2VlbiBpbmxpbmVcbiAgICAgIHRhZ3MgYW5kIGJsb2NrLWxldmVsIHRhZ3M6IGluIEhUTUw0IGl0IHdhcyBub3QgY2xlYXIsIGluIEhUTUw1XG4gICAgICBpdCdzIGV2ZW4gbW9yZSBjb21wbGljYXRlZC4gU28sIHRoZSBjaG9pY2UgKmhlcmUqIGlzIHRvIHNwZWNpZnlcbiAgICAgIGEgc2V0IG9mIHRhZ3MgY29uc2lkZXJlZCBhcyBcImlubGluZVwiLCBjZi4gW2lubGluZV9odG1sdGFnc19zZXRdLlxuICAgICAgU28gdGhlcmUgd2lsbCBiZSBpbmxpbmUgdGFncywgbm9uLWlubGluZSB0YWdzLCBhbmQgdW5rbm93blxuICAgICAgdGFncy4qKVxuXG4gICgqKiBzZXQgb2YgSFRNTCB0YWdzIHRoYXQgbWF5IGFwcGVhciBvdXQgb2YgYSBib2R5ICopXG4gIGxldCBub3RpbmJvZHl0YWdzID0gU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgIFtcbiAgICAgICAgXCJ0aXRsZVwiO1xuICAgICAgICBcImxpbmtcIjtcbiAgICAgICAgXCJtZXRhXCI7XG4gICAgICAgIFwic3R5bGVcIjtcbiAgICAgICAgXCJodG1sXCI7XG4gICAgICAgIFwiaGVhZFwiO1xuICAgICAgICBcImJvZHlcIjtcbiAgICAgIF1cblxuICAoKiogQWxsIGtub3duIEhUTUwgdGFncyAqKVxuICBsZXQgaHRtbHRhZ3Nfc2V0ID1cbiAgICBTdHJpbmdTZXQudW5pb24gbm90aW5ib2R5dGFnc1xuICAgICAgKFN0cmluZ1NldC51bmlvbiBpbmxpbmVfaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJhXCI7XCJhYmJyXCI7XCJhY3JvbnltXCI7XCJhZGRyZXNzXCI7XCJhcHBsZXRcIjtcImFyZWFcIjtcImFydGljbGVcIjtcImFzaWRlXCJcbiAgICAgICAgICAgICAgO1wiYXVkaW9cIjtcImJcIjtcImJhc2VcIjtcImJhc2Vmb250XCI7XCJiZGlcIjtcImJkb1wiO1wiYmlnXCI7XCJibG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgO1wiYnJcIjtcImJ1dHRvblwiO1wiY2FudmFzXCI7XCJjYXB0aW9uXCI7XCJjZW50ZXJcIjtcImNpdGVcIjtcImNvZGVcIjtcImNvbFwiXG4gICAgICAgICAgICAgIDtcImNvbGdyb3VwXCI7XCJjb21tYW5kXCI7XCJkYXRhbGlzdFwiO1wiZGRcIjtcImRlbFwiO1wiZGV0YWlsc1wiO1wiZGZuXCJcbiAgICAgICAgICAgICAgO1wiZGlhbG9nXCI7XCJkaXJcIjtcImRpdlwiO1wiZGxcIjtcImR0XCI7XCJlbVwiO1wiZW1iZWRcIjtcImZpZWxkc2V0XCJcbiAgICAgICAgICAgICAgO1wiZmlnY2FwdGlvblwiO1wiZmlndXJlXCI7XCJmb250XCI7XCJmb290ZXJcIjtcImZvcm1cIjtcImZyYW1lXCI7XCJmcmFtZXNldFwiXG4gICAgICAgICAgICAgIDtcImgyXCI7XCJoM1wiO1wiaDRcIjtcImg1XCI7XCJoNlwiXG4gICAgICAgICAgICAgIDtcImgxXCI7XCJoZWFkZXJcIjtcImhyXCI7XCJpXCI7XCJpZnJhbWVcIjtcImltZ1wiO1wiaW5wdXRcIjtcImluc1wiO1wia2JkXCJcbiAgICAgICAgICAgICAgO1wia2V5Z2VuXCI7XCJsYWJlbFwiO1wibGVnZW5kXCI7XCJsaVwiO1wibWFwXCI7XCJtYXJrXCI7XCJtZW51XCI7XCJtZXRlclwiO1wibmF2XCJcbiAgICAgICAgICAgICAgO1wibm9mcmFtZXNcIjtcIm5vc2NyaXB0XCI7XCJvYmplY3RcIjtcIm9sXCI7XCJvcHRncm91cFwiO1wib3B0aW9uXCI7XCJvdXRwdXRcIlxuICAgICAgICAgICAgICA7XCJwXCI7XCJwYXJhbVwiO1wicHJlXCI7XCJwcm9ncmVzc1wiO1wicVwiO1wicnBcIjtcInJ0XCI7XCJydWJ5XCI7XCJzXCI7XCJzYW1wXCJcbiAgICAgICAgICAgICAgO1wic2NyaXB0XCI7XCJzZWN0aW9uXCI7XCJzZWxlY3RcIjtcInNtYWxsXCI7XCJzb3VyY2VcIjtcInNwYW5cIjtcInN0cmlrZVwiXG4gICAgICAgICAgICAgIDtcInN0cm9uZ1wiO1wic3R5bGVcIjtcInN1YlwiO1wic3VtbWFyeVwiO1wic3VwXCI7XCJ0YWJsZVwiO1widGJvZHlcIjtcInRkXCJcbiAgICAgICAgICAgICAgO1widGV4dGFyZWFcIjtcInRmb290XCI7XCJ0aFwiO1widGhlYWRcIjtcInRpbWVcIjtcInRyXCI7XCJ0cmFja1wiO1widHRcIjtcInVcIlxuICAgICAgICAgICAgICA7XCJ1bFwiO1widmFyXCI7XCJ2aWRlb1wiO1wid2JyXCJcbiAgICAgICAgICAgIF0pKVxuXG5cbiAgKCoqIFRoaXMgZnVuY3Rpb25zIGZpeGVzIGJhZCBsZXhpbmcgdHJlZXMsIHdoaWNoIG1heSBiZSBidWlsdCB3aGVuXG4gICAgICBleHRyYWN0aW9uIGEgcG9ydGlvbiBvZiBhbm90aGVyIGxleGluZyB0cmVlLiAqKVxuICBsZXQgZml4IGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICgqIGNvZGUgdG8gZ2VuZXJhdGUgd2hhdCBmb2xsb3dzLi4uXG4gICAgICAgICBMaXN0Lml0ZXIgKGZ1biBlIC0+XG4gICAgICAgICBQcmludGYucHJpbnRmIFwiXG4gICAgICAgICB8ICVzOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMVxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MgMDo6dGwpXG4gICAgICAgICB8ICVzcyBuOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMlxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzOjolc3Mgbjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgM1xcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzcyBhOjolc3MgYjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgNFxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MoYStiKzIpOjp0bClcIlxuICAgICAgICAgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSlcbiAgICAgICAgIFtcIkFtcGVyc2FuZFwiOyBcIkF0XCI7IFwiQmFja3F1b3RlXCI7IFwiQmFja3NsYXNoXCI7IFwiQmFyXCI7IFwiQ2FyZXRcIjsgXCJDYnJhY2VcIjsgXCJDb2xvblwiOyBcIkNvbW1hXCI7IFwiQ3BhcmVudGhlc2lzXCI7IFwiQ2JyYWNrZXRcIjsgXCJEb2xsYXJcIjsgXCJEb3RcIjsgXCJEb3VibGVxdW90ZVwiOyBcIkV4Y2xhbWF0aW9uXCI7IFwiRXF1YWxcIjsgXCJHcmVhdGVydGhhblwiOyBcIkhhc2hcIjsgXCJMZXNzdGhhblwiOyBcIk1pbnVzXCI7IFwiTmV3bGluZVwiOyBcIk9icmFjZVwiOyBcIk9wYXJlbnRoZXNpc1wiOyBcIk9icmFja2V0XCI7IFwiUGVyY2VudFwiOyBcIlBsdXNcIjsgXCJRdWVzdGlvblwiOyBcIlF1b3RlXCI7IFwiU2VtaWNvbG9uXCI7IFwiU2xhc2hcIjsgXCJTcGFjZVwiOyBcIlN0YXJcIjsgXCJUYWJcIjsgXCJUaWxkZVwiOyBcIlVuZGVyc2NvcmVcIl07XG4gICAgICAgICBwcmludF9zdHJpbmcgXCJ8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXFxufCBbXSAtPiBMaXN0LnJldiBhY2N1XFxuXCI7ICopXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMgMDo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgbjo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgYTo6QW1wZXJzYW5kcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMoYStiKzIpOjp0bClcbiAgICAgIHwgQXQ6OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzIDA6OnRsKVxuICAgICAgfCBBdHMgbjo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0OjpBdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXRzIGE6OkF0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMgMDo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgbjo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgYTo6QmFja3F1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyAwOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBuOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBhOjpCYWNrc2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBCYXI6OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzIDA6OnRsKVxuICAgICAgfCBCYXJzIG46OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXI6OkJhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXJzIGE6OkJhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKGErYisyKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyAwOjp0bClcbiAgICAgIHwgQ2FyZXRzIG46OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0cyBhOjpDYXJldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzIDA6OnRsKVxuICAgICAgfCBDYnJhY2VzIG46OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2VzIGE6OkNicmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyAwOjp0bClcbiAgICAgIHwgQ29sb25zIG46OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9ucyBhOjpDb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMgMDo6dGwpXG4gICAgICB8IENvbW1hcyBuOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYXMgYTo6Q29tbWFzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBuOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBhOjpDcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IENicmFja2V0cyBuOjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgYTo6Q2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyAwOjp0bClcbiAgICAgIHwgRG9sbGFycyBuOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFycyBhOjpEb2xsYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3Q6OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzIDA6OnRsKVxuICAgICAgfCBEb3RzIG46OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3Q6OkRvdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3RzIGE6OkRvdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKGErYisyKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyAwOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIG46OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBhOjpEb3VibGVxdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMgMDo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBuOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgYTo6RXhjbGFtYXRpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzIDA6OnRsKVxuICAgICAgfCBFcXVhbHMgbjo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWxzIGE6OkVxdWFscyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKGErYisyKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyAwOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIG46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBhOjpHcmVhdGVydGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyAwOjp0bClcbiAgICAgIHwgSGFzaHMgbjo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNocyBhOjpIYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMgMDo6dGwpXG4gICAgICB8IExlc3N0aGFucyBuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgYTo6TGVzc3RoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzIDA6OnRsKVxuICAgICAgfCBNaW51c3Mgbjo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXNzIGE6Ok1pbnVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKGErYisyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzIDA6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBuOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIGE6Ok5ld2xpbmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMgMDo6dGwpXG4gICAgICB8IE9icmFjZXMgbjo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZXMgYTo6T2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBuOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBhOjpPcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IE9icmFja2V0cyBuOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgYTo6T2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMgMDo6dGwpXG4gICAgICB8IFBlcmNlbnRzIG46OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudHMgYTo6UGVyY2VudHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MgMDo6dGwpXG4gICAgICB8IFBsdXNzIG46OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1c3MgYTo6UGx1c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MoYStiKzIpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zIDA6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIGE6OlF1ZXN0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKGErYisyKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyAwOjp0bClcbiAgICAgIHwgUXVvdGVzIG46OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlcyBhOjpRdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zIDA6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIG46OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIGE6OlNlbWljb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyAwOjp0bClcbiAgICAgIHwgU2xhc2hzIG46OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNocyBhOjpTbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMgMDo6dGwpXG4gICAgICB8IFNwYWNlcyBuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZXMgYTo6U3BhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMgMDo6dGwpXG4gICAgICB8IFN0YXJzIG46OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3RhcnMgYTo6U3RhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGFiOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyAwOjp0bClcbiAgICAgIHwgVGFicyBuOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFiOjpUYWJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFicyBhOjpUYWJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhhK2IrMik6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMgMDo6dGwpXG4gICAgICB8IFRpbGRlcyBuOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZXMgYTo6VGlsZGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMoYStiKzIpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMgMDo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIG46OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgYTo6VW5kZXJzY29yZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMoYStiKzIpOjp0bCl8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG5cbiAgKCogUmVtb3ZlIGFsbCBbTkxdIGFuZCBbQnJdIGF0IHRoZSBiZWdpbm5pbmcuICopXG4gIGxldCByZWMgcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChOTCB8IEJyKSA6OiB0bCAtPiByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bFxuICAgIHwgbCAtPiBsXG5cblxuICAoKiogLSByZWNvZ25pemVzIHBhcmFncmFwaHNcbiAgICAgIC0gZ2x1ZXMgZm9sbG93aW5nIGJsb2NrcXVvdGVzICAqKVxuICBsZXQgbWFrZV9wYXJhZ3JhcGhzIG1kID1cbiAgICBsZXQgcmVjIGxvb3AgY3AgYWNjdSA9IGZ1bmN0aW9uICgqIGNwIG1lYW5zIGN1cnJlbnQgcGFyYWdyYXBoICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGFjY3VcbiAgICAgICAgICB8IChOTHxCcik6OmNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgICB8IGNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgfCBCbG9ja3F1b3RlIGIxIDo6IEJsb2NrcXVvdGUgYjIgOjogdGwgLT5cbiAgICAgICAgbG9vcCBjcCBhY2N1IChCbG9ja3F1b3RlKGIxQGIyKTo6IHRsKVxuICAgICAgfCBCbG9ja3F1b3RlIGIgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBCbG9ja3F1b3RlKGxvb3AgW10gW10gYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoVWxwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gVWxwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoT2xwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gT2xwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIC0+IGxvb3AgW10gKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKGU6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsKVxuICAgICAgfCAoUmF3X2Jsb2NrIF8gfCBIdG1sX2Jsb2NrIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjpjcEBhY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoQ29kZV9ibG9jayBfIHwgSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgIHwgT2wgXyB8IFVsIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBUZXh0IFwiXFxuXCIgOjogXyB8IFBhcmFncmFwaCBfIDo6IF8gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJPbWRfcGFyc2VyLm1ha2VfcGFyYWdyYXBoc1wiXG4gICAgICB8IChOTHxCcikgOjogKE5MfEJyKSA6OiB0bCAtPlxuICAgICAgICBsZXQgdGwgPSByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bCBpblxuICAgICAgICBiZWdpbiBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKE5MOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgICB8IF8gLT4gbG9vcCBbXSAoUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IFgoeCkgYXMgZSA6OiB0bCAtPlxuICAgICAgICAoKiBJZiB0aGUgZXh0ZW5zaW9uIHJldHVybnMgYSBibG9jayBhcyBmaXJzdCBlbGVtZW50LFxuICAgICAgICAgICB0aGVuIGNvbnNpZGVyIHRoZSBleHRlbnNpb24gYXMgYSBibG9jay4gSG93ZXZlclxuICAgICAgICAgICBkb24ndCB0YWtlIGl0cyBjb250ZW50cyBhcyBpdCBpcyB5ZXQsIHRoZSBjb250ZW50c1xuICAgICAgICAgICBvZiB0aGUgZXh0ZW5zaW9uIHNoYWxsIGJlIGNvbnNpZGVyZWQgZmluYWwgYXMgbGF0ZVxuICAgICAgICAgICBhcyBwb3NzaWJsZS4gKilcbiAgICAgICAgYmVnaW4gbWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgICB8IFNvbWUodCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCAoIEgxIF9cbiAgICAgICAgICAgICAgfCBIMiBfXG4gICAgICAgICAgICAgIHwgSDMgX1xuICAgICAgICAgICAgICB8IEg0IF9cbiAgICAgICAgICAgICAgfCBINSAgX1xuICAgICAgICAgICAgICB8IEg2ICBfXG4gICAgICAgICAgICAgIHwgUGFyYWdyYXBoICBfXG4gICAgICAgICAgICAgIHwgVWwgX1xuICAgICAgICAgICAgICB8IE9sIF9cbiAgICAgICAgICAgICAgfCBVbHAgX1xuICAgICAgICAgICAgICB8IE9scCBfXG4gICAgICAgICAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICAgICAgICAgIHwgSHJcbiAgICAgICAgICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEJsb2NrcXVvdGUgX1xuICAgICAgICAgICAgICApIDo6IF9cbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPlxuICAgICAgICAgICAgICAgICBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV93aGl0ZV9jcnVtYnMgbCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgVGV4dCBcIiBcIiA6OiB0bFxuICAgICAgICB8IE5MOjp0bFxuICAgICAgICB8IEJyOjp0bFxuICAgICAgICAgIC0+XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgICB8IGwgLT4gbFxuICAgICAgaW5cbiAgICAgIExpc3QucmV2IChsb29wIChMaXN0LnJldiBsKSlcbiAgICBpblxuICAgIGxldCByZWMgY2xlYW5fcGFyYWdyYXBocyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzXFxuXCI7XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBbXVxuICAgICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gdGxcbiAgICAgIHwgUGFyYWdyYXBoKHApIDo6IHRsIC0+XG4gICAgICAgIFBhcmFncmFwaChjbGVhbl9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVfaW5pdGlhbF9uZXdsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX3doaXRlX2NydW1icyhub3JtYWxpc2VfbWQgcCkpKSlcbiAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMSB2IDo6IHRsIC0+IEgxKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgyIHYgOjogdGwgLT4gSDIoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDMgdiA6OiB0bCAtPiBIMyhjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINCB2IDo6IHRsIC0+IEg0KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg1IHYgOjogdGwgLT4gSDUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDYgdiA6OiB0bCAtPiBINihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBFbXBoIHYgOjogdGwgLT4gRW1waChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJvbGQgdiA6OiB0bCAtPiBCb2xkKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWwgdiA6OiB0bCAtPiBVbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbCB2IDo6IHRsIC0+IE9sKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVscCB2IDo6IHRsIC0+IFVscChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2xwIHYgOjogdGwgLT4gT2xwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCbG9ja3F1b3RlIHYgOjogdGwgLT4gQmxvY2txdW90ZShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVybChocmVmLHYsdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLChjbGVhbl9wYXJhZ3JhcGhzIHYpLHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFRleHQgX1xuICAgICAgfCBDb2RlIF9cbiAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICB8IEJyXG4gICAgICB8IEhyXG4gICAgICB8IE5MXG4gICAgICB8IFJlZiBfXG4gICAgICB8IEltZ19yZWYgX1xuICAgICAgfCBSYXcgX1xuICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgfCBIdG1sIF9cbiAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgICB8IEltZyBfXG4gICAgICB8IFggXyBhcyB2IDo6IHRsIC0+IHYgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgIGluXG4gICAgbGV0IHIgPSBjbGVhbl9wYXJhZ3JhcGhzKGxvb3AgW10gW10gbWQpXG4gICAgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzICVTIC0tPiAlU1xcbiUhXCJcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIG1kKVxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgcik7XG4gICAgclxuXG5cbiAgKCoqIFthc3NlcnRfd2VsbF9mb3JtZWRdIGlzIGEgZGV2ZWxvcGVyJ3MgZnVuY3Rpb24gdGhhdCBoZWxwcyB0b1xuICAgICAgdHJhY2sgYmFkbHkgY29uc3RydWN0ZWQgdG9rZW4gbGlzdHMuICBUaGlzIGZ1bmN0aW9uIGhhcyBhblxuICAgICAgZWZmZWN0IG9ubHkgaWYgW3RyYWNrZml4XSBpcyBbdHJ1ZV0uICAqKVxuICBsZXQgYXNzZXJ0X3dlbGxfZm9ybWVkIChsOnRvayBsaXN0KSA6IHVuaXQgPVxuICAgIGlmIHRyYWNrZml4IHRoZW5cbiAgICAgIGxldCByZWMgZXF1aXYgbDEgbDIgPSBtYXRjaCBsMSwgbDIgd2l0aFxuICAgICAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgICAgIHwgVGFnIF86OnRsMSwgVGFnIF86OnRsMi0+IGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+IGUxID0gZTIgJiYgZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBhc3NlcnQoZXF1aXYgKGZpeCBsKSBsKTtcbiAgICAgICgpXG5cbiAgKCoqIEdlbmVyYXRlIGZhbGxiYWNrIGZvciByZWZlcmVuY2VzLiAqKVxuICBsZXQgZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmV4dHJhY3RfZmFsbGJhY2tcXG4lIVwiO1xuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgICAgfCBlOjp0bCBhcyByIC0+XG4gICAgICAgIGlmIHIgPT0gcmVtYWlucyB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZSwgcmVtYWlucyB3aXRoXG4gICAgICAgICAgfCBDYnJhY2tldHMgMCwgQ2JyYWNrZXQ6OnIgd2hlbiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBDYnJhY2tldHMgbiwgQ2JyYWNrZXRzIG06OnIgd2hlbiBtICsgMSA9IG4gJiYgdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIGxldCBhID0gbG9vcCBbXSBsIGluXG4gICAgb2JqZWN0XG4gICAgICBtZXRob2QgdG9fc3RyaW5nID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFcbiAgICAgIG1ldGhvZCB0b190ID0gW1RleHQoTC5zdHJpbmdfb2ZfdG9rZW5zIGEpXVxuICAgIGVuZFxuXG5cbiAgbGV0IHVuaW5kZW50X3JldiBuIGxleGVtZXMgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIENBTEw6IE9tZF9wYXJzZXIudW5pbmRlbnRfcmV2XFxuJSFcIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBjbCA9IGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHk6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoeCt5KzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygwKTo6dGwpXG5cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6KFxuICAgICAgICAgIChOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICB8ICgoU3RhcnxQbHVzfE1pbnVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgICBhcyB0bCkgYXMgbCAtPlxuICAgICAgICBpZiBuID0gTC5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpIFtdIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgbGV0IHggPSBMLmxlbmd0aCBzIC0gbiBpblxuICAgICAgICBsb29wIChubDo6Y2xAYWNjdSlcbiAgICAgICAgICAoaWYgeCA+IDAgdGhlbiBbTC5tYWtlX3NwYWNlIHhdIGVsc2UgW10pXG4gICAgICAgICAgdGxcbiAgICAgIHwgTmV3bGluZXMoXyk6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgTmV3bGluZTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgKGU6OmNsKSB0bFxuICAgICAgfCBbXSBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IFtdLCByaWdodCAtPiBbXSwgcmlnaHRcbiAgICB8IGwsIHJpZ2h0IC0+XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgIGwsIHJpZ2h0XG5cbiAgbGV0IHVuaW5kZW50IG4gbGV4ZW1lcyA9XG4gICAgbGV0IGZzdCwgc25kID0gdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyBpblxuICAgIExpc3QucmV2IGZzdCwgc25kXG5cbiAgbGV0IHJlYyBpc19ibGFuayA9IGZ1bmN0aW9uXG4gICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPlxuICAgICAgaXNfYmxhbmsgdGxcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgc2VtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG4gIGxldCBzbV91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6KFdvcmQgX3xOdW1iZXIgXyBhcyB3KTo6IHRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3c7c10sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCB1ZW1waF9vcl9ib2xkIG4gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGlmIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgdGhlblxuICAgICAgZ2hfdWVtcGhfb3JfYm9sZCBuIGxcbiAgICBlbHNlXG4gICAgICBzbV91ZW1waF9vcl9ib2xkIG4gbFxuXG4gIGxldCBlYXRfYmxhbmsgPVxuICAgIGVhdCAoZnVuY3Rpb24gfFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyAtPiB0cnVlfCBfIC0+IGZhbHNlKVxuXG5cbiAgKCogdXNlZCBieSB0YWdfX21heWJlX2gxIGFuZCB0YWdfX21heWJlX2gyICopXG4gIGxldCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIChsOmwpIDogKE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdCAqIGwpIG9wdGlvbiA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gciBsID1cbiAgICAgICgqIElmIHRoZXJlJ3MgYSBiYWxhbmNlZCAoY29tcGxldGUpIGJhY2txdW90ZS1zdGFydGVkIGNvZGUgYmxvY2tcbiAgICAgICAgIHRoZW4gaXQgc2hvdWxkIGJlIFwiaWdub3JlZFwiLCBlbHNlIGl0IG1lYW5zIHRoZSBsaW5lIHRoYXRcbiAgICAgICAgIGZvbGxvd3MgaXMgcGFydCBvZiBhIGNvZGUgYmxvY2ssIHNvIGl0J3Mgbm90IGRlZmluaW5nIGFcbiAgICAgICAgIHNldGV4dC1zdHlsZSB0aXRsZS4gKilcbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIGRldGVjdF9iYWxhbmNlZF9icXMgbj0lZCByPSVTIGw9JVNcXG4lIVwiXG4gICAgICAgICAgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIHIpIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlIGFzIGIpOjp0bCB3aGVuIG4gPSAxIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgKEJhY2txdW90ZXMgeCBhcyBiKTo6dGwgd2hlbiBuID0geCsyIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChlOjpyKSB0bFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgW10pXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgMSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBCYWNrcXVvdGVzKHgpOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzICh4KzIpIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IE5ld2xpbmU6OihFcXVhbHxFcXVhbHMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCB0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnNldGV4dF90aXRsZSBpcyB3cm9uZ2x5IHVzZWQhXFxuJSFcIjtcbiAgICAgICAgTm9uZVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpyKSB0bFxuICAgIGluXG4gICAgaWYgbWF0Y2ggbCB3aXRoXG4gICAgICB8IExlc3N0aGFuOjpXb3JkIF86Ol8gLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWFpbl9sb29wIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgKEh0bWxfYmxvY2sgXyB8IENvZGVfYmxvY2sgXyB8IFJhd19ibG9jayBfKTo6XyAtPlxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHJlc3VsdCA9IGxvb3AgW10gbCBpblxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc2V0ZXh0X3RpdGxlIGw9JVMgcmVzdWx0PSVTLCVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgeClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgdGwpO1xuICAgICAgcmVzdWx0XG5cbiAgbGV0IHRhZ19fbWF5YmVfaDEgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gxXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgxKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDEgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWF5YmVfaDIgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gyXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgyKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDIgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWQgbWQgPSAoKiBbbWRdIHNob3VsZCBiZSBpbiByZXZlcnNlICopXG4gICAgVGFnKFwidGFnX19tZFwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IFNvbWUobWRAciwgW10sIGwpXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICAgKVxuXG4gICgqIExldCdzIHRhZyB0aGUgbGluZXMgdGhhdCAqbWlnaHQqIGJlIHRpdGxlcyB1c2luZyBzZXRleHQtc3R5bGUuXG4gICAgIFwibWlnaHRcIiBiZWNhdXNlIGlmIHRoZXkgYXJlLCBmb3IgaW5zdGFuY2UsIGluIGEgY29kZSBzZWN0aW9uLFxuICAgICB0aGVuIHRoZXkgYXJlIG5vdCB0aXRsZXMgYXQgYWxsLiAqKVxuICBsZXQgdGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIHBsIHJlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX10gLT5cbiAgICAgICAgcGxAcmVzXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KEVxdWFsfEVxdWFscyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMS4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffEVxdWFsfEVxdWFscyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMSBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KE1pbnVzfE1pbnVzcyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMi4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMiBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIHwgTmV3bGluZXMgXyBhcyBlMSk6OnRsIC0+XG4gICAgICAgIGxvb3AgW10gKGUxOjpwbEByZXMpIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnBsKSByZXMgdGxcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIFtdIFtdIGxleGVtZXMpXG5cblxuICBsZXQgaHJfbSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXMgX3xOZXdsaW5lKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgTWludXM6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgTWludXNzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBocl9zIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBTdGFyOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IFN0YXJzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBociBsID1cbiAgICBtYXRjaCBocl9tIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBocl9zIGxcbiAgICB8IFNvbWUgXyBhcyB0bCAtPiB0bFxuXG4gICgqKiBbYmNvZGVdIHBhcnNlcyBjb2RlIHRoYXQncyBkZWxpbWl0ZWQgYnkgYmFja3F1b3RlKHMpICopXG4gIGxldCBiY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgZSwgdGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCAtPiBlLCB0bFxuICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5iY29kZSBpcyB3cm9uZ2x5IGNhbGxlZFwiXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvZGVfYmxvY2sgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiBlID0gQmFja3F1b3RlIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoQmFja3F1b3RlOjphY2N1KSB0bFxuICAgICAgfCAoQmFja3F1b3RlcyBuIGFzIGIpOjp0bCAtPlxuICAgICAgICBpZiBlID0gYiB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKGI6OmFjY3UpIHRsXG4gICAgICB8IFRhZyhfLCBfKTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayBhY2N1IHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBjb2RlX2Jsb2NrIFtdIHRsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShjYiwgbCkgLT5cbiAgICAgIGlmIExpc3QuZXhpc3RzIChmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgY2JcbiAgICAgICYmIChtYXRjaCBwIHdpdGggW118W05ld2xpbmV8TmV3bGluZXMgX10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiAobWF0Y2ggZSB3aXRoIEJhY2txdW90ZXMgbiB3aGVuIG4gPiAwIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgdGhlblxuICAgICAgICBtYXRjaCBjYiB3aXRoXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgMCA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMoTmV3bGluZTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIG4gOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgbiA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIChOZXdsaW5lcyhuLTEpOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjbGVhbl9iY29kZSBzID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AxIGkgPVxuICAgICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMShpKzEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AyIGkgPVxuICAgICAgICAgICAgaWYgaSA9IC0xIHRoZW4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDIoaS0xKVxuICAgICAgICAgICAgICB8IF8gLT4gaSsxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBsb29wMSAwLCBsb29wMiAoU3RyaW5nLmxlbmd0aCBzIC0gMSkgd2l0aFxuICAgICAgICAgIHwgMCwgbiB3aGVuIG4gPSBTdHJpbmcubGVuZ3RoIHMgLSAxIC0+IHNcbiAgICAgICAgICB8IGksIG4gLT4gU3RyaW5nLnN1YiBzIGkgKG4taSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBjbGVhbl9iY29kZSAlUyA9PiAlU1xcbiUhXCIgY29kZSAoY2xlYW5fYmNvZGUgY29kZSk7XG4gICAgICAgIFNvbWUoQ29kZShkZWZhdWx0X2xhbmcsIGNsZWFuX2Jjb2RlIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuXG5cbiAgZXhjZXB0aW9uIE5MX2V4Y2VwdGlvblxuICBleGNlcHRpb24gUHJlbWF0dXJlX2VuZGluZ1xuXG4gICgqICEhRE8gTk9UIERFTEVURSBUSElTISFcbiAgICAgVGhlIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlIGdlbmVyYXRlZCBwYXJ0IHRoYXQgZm9sbG93cyByaWdodCBhZnRlci5cbiAgICAgTGlzdC5pdGVyIChmdW4gKGEsYixjKSAtPlxuICAgICBwcmludF9lbmRsaW5lIChcImxldCByZWFkX3VudGlsX1wiXmFeXCIgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSBuIChcIl5iXlwiOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcIlxuICAgICAgXihpZiBjPD5cIlwiIHRoZW4gXCJcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5jXlwiOjphY2N1KSBuIChcIl5jXlwiOjp0bClcbiAgICAgIHwgXCJeY15cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IFwiXmNeXCJzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgIFwiIGVsc2UgXCJcIileXG4gICAgIFwiICAgIHwgXCJeYl5cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgXCJeYl5cInMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cIjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIChuLTEpIChcIl5iXlwiOjp0bClcbiAgICAgIHwgXCJeYl5cInMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cInMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFwiXmJeXCI6OmFjY3UgLT4gXCJeYl5cInMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFwiXmJeXCJzIHg6OmFjY3UgLT4gXCJeYl5cInMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBcIl5iXlwiOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChcIl5iXlwicyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblwiKSlcblxuICAgICBbIFwiZ3RcIiwgXCJHcmVhdGVydGhhblwiLCBcIkxlc3N0aGFuXCI7XG4gICAgIFwibHRcIiwgXCJMZXNzdGhhblwiLCBcIlwiO1xuICAgICBcImNwYXJlbnRoXCIsIFwiQ3BhcmVudGhlc2lzXCIsIFwiT3BhcmVudGhlc2lzXCI7XG4gICAgIFwib3BhcmVudGhcIiwgXCJPcGFyZW50aGVzaXNcIiwgXCJcIjtcbiAgICAgXCJkcVwiLCBcIkRvdWJsZXF1b3RlXCIsIFwiXCI7XG4gICAgIFwicVwiLCBcIlF1b3RlXCIsIFwiXCI7XG4gICAgIFwib2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiLCBcIlwiO1xuICAgICBcImNicmFja2V0XCIsIFwiQ2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiO1xuICAgICBcInNwYWNlXCIsIFwiU3BhY2VcIiwgXCJcIjtcbiAgICAgXVxuICAqKVxuXG4gICgqIGJlZ2luIGdlbmVyYXRlZCBwYXJ0ICopXG5cbmxldCByZWFkX3VudGlsX2d0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgbiAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgR3JlYXRlcnRoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSAobi0xKSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6YWNjdSAtPiBHcmVhdGVydGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyB4OjphY2N1IC0+IEdyZWF0ZXJ0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IEdyZWF0ZXJ0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfbHQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IExlc3N0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSAobi0xKSAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBMZXNzdGhhbjo6YWNjdSAtPiBMZXNzdGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IExlc3N0aGFucyB4OjphY2N1IC0+IExlc3N0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IExlc3N0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChMZXNzdGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSBuIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzOjphY2N1IC0+IENwYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29wYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OmFjY3UgLT4gT3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9wYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfZHEgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSBuIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgRG91YmxlcXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSAobi0xKSAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6YWNjdSAtPiBEb3VibGVxdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyB4OjphY2N1IC0+IERvdWJsZXF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IERvdWJsZXF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChEb3VibGVxdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIG4gKFF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBRdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgUXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIChuLTEpIChRdW90ZTo6dGwpXG4gICAgICB8IFF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFF1b3RlOjphY2N1IC0+IFF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgUXVvdGVzIHg6OmFjY3UgLT4gUXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gUXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9icmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSAobi0xKSAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPYnJhY2tldDo6YWNjdSAtPiBPYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9icmFja2V0cyB4OjphY2N1IC0+IE9icmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9icmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSBuIChDYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9icmFja2V0cyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIChuLTEpIChDYnJhY2tldDo6dGwpXG4gICAgICB8IENicmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENicmFja2V0OjphY2N1IC0+IENicmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ2JyYWNrZXRzIHg6OmFjY3UgLT4gQ2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENicmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9zcGFjZSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIG4gKFNwYWNlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBTcGFjZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgU3BhY2VzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIChuLTEpIChTcGFjZTo6dGwpXG4gICAgICB8IFNwYWNlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFNwYWNlOjphY2N1IC0+IFNwYWNlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgU3BhY2VzIHg6OmFjY3UgLT4gU3BhY2VzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gU3BhY2U6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFNwYWNlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuICAoKiAvZW5kIGdlbmVyYXRlZCBwYXJ0ICopXG5cbiAgbGV0IHJlYWRfdW50aWxfbmV3bGluZSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICgoQmFja3NsYXNoIGFzIGEpKSA6OiAoKE5ld2xpbmUgYXMgYikpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGIgOjogYSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmUgOjogQmFja3NsYXNoIDo6IGFjY3UpIG4gKE5ld2xpbmUgOjogdGwpXG4gICAgICB8ICgoQmFja3NsYXNocyAwIGFzIGUpKSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgKChCYWNrc2xhc2hzIHggYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmICh4IG1vZCAyKSA9IDBcbiAgICAgICAgdGhlbiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgICAgZWxzZSBsb29wICgoQmFja3NsYXNocyAoeCAtIDEpKSA6OiBhY2N1KSBuIChCYWNrc2xhc2ggOjogdGwpXG4gICAgICB8ICgoTmV3bGluZSBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCB0bCkgZWxzZSBsb29wIChlIDo6IGFjY3UpIChuIC0gMSkgdGxcbiAgICAgIHwgTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuICgoTGlzdC5yZXYgYWNjdSksIChOZXdsaW5lIDo6IHRsKSlcbiAgICAgICAgZWxzZSBsb29wIChOZXdsaW5lIDo6IGFjY3UpIChuIC0gMSkgKE5ld2xpbmUgOjogdGwpXG4gICAgICB8IE5ld2xpbmVzIG4gOjogdGwgLT4gKChMaXN0LnJldiBhY2N1KSwgKChOZXdsaW5lcyAobiAtIDEpKSA6OiB0bCkpXG4gICAgICB8IGUgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpbiBsb29wIFtdIDAgbFxuXG4gICgqIEgxLCBIMiwgSDMsIC4uLiAqKVxuICBsZXQgcmVhZF90aXRsZSAobWFpbl9sb29wOm1haW5fbG9vcCkgbiByIF9wcmV2aW91cyBsZXhlbWVzID1cbiAgICBsZXQgdGl0bGUsIHJlc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaDo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobi0xKTo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2hzKGgpOjp0bCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaHMoaCk6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobik6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaHMobik6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFtdIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChbXSBhcyBsKSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIGxcbiAgICAgICAgfCBbSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyBIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IChIYXNofEhhc2hzIF8pOyAoU3BhY2V8U3BhY2VzIF8pXSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIFtdXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICBsb29wICh4OjphY2N1KSB0bFxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gbGV4ZW1lc1xuICAgIGluXG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAxIC0+IFNvbWUoSDEgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMiAtPiBTb21lKEgyIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDMgLT4gU29tZShIMyB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA0IC0+IFNvbWUoSDQgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNSAtPiBTb21lKEg1IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDYgLT4gU29tZShINiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwIGwgPVxuICAgIG1hdGNoIGV4dGVuc2lvbnMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgXyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gZiNwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsKVxuICAgICAgICAgIHwgU29tZShuciwgbnAsIG5sKSBhcyBlIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gbWF0Y2ggZiNwYXJzZXJfZXh0ZW5zaW9uIG5yIG5wIG5sIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlXG4gICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBrIC0+IGspXG4gICAgICAgIClcbiAgICAgICAgTm9uZVxuICAgICAgICBleHRlbnNpb25zXG5cbiAgKCogYmxvY2txdW90ZXMgKilcbiAgbGV0IGVtYWlsc3R5bGVfcXVvdGluZyAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYmxvY2sgY2wgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OihOZXdsaW5lOjpfIGFzIHRsKSAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICAoKiBtdWx0aSBwYXJhZ3JhcGggYmxvY2txdW90ZXMgd2l0aCBlbXB0eSBsaW5lcyAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgIHwgKE5ld2xpbmVzIF86Ol8gYXMgbCkgfCAoW10gYXMgbCkgLT4gZml4KExpc3QucmV2KGNsQGJsb2NrKSksIGxcbiAgICAgIHwgZTo6dGwgLT4gbG9vcCBibG9jayAoZTo6Y2wpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmJsb2NrLCB0bCAtPlxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3RpbmcgJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBibG9jayk7XG4gICAgICBTb21lKChCbG9ja3F1b3RlKG1haW5fbG9vcCBbXSBbXSBibG9jayk6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgIHwgXyAtPlxuICAgICAgTm9uZVxuXG5cbiAgKCogbWF5YmUgYSByZWZlcmVuY2UgKilcbiAgbGV0IG1heWJlX3JlZmVyZW5jZSAobWFpbl9sb29wOm1haW5fbG9vcCkgcmMgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIGtub3cgaXQncyBub3QgYSBsaW5rIGFsdGhvdWdoXG4gICAgICAgaXQgc3RhcnRlZCB3aXRoIGEgJ1snICopXG4gICAgKCogU28gaXQgY291bGQgYmUgYSByZWZlcmVuY2Ugb3IgYSBsaW5rIGRlZmluaXRpb24uICopXG4gICAgbGV0IHJlYyBtYXliZV9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBibGFuaywgcmVtYWlucyA9IHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gdW53YW50ZWQgY2hhcmFjdGVycyBiZXR3ZWVuIENCIGFuZCBPQi4gKilcbiAgICAgIGlmIGVhdCAobGV0IGZsYWcgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgICBmdW5jdGlvbiAoKiBhbGxvdyBvbmx5IGEgc3BhY2UsIG11bHRpcGxlIHNwYWNlcywgb3IgYSBuZXdsaW5lICopXG4gICAgICAgICAgICAgIHwgTmV3bGluZSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIGJsYW5rIDw+IFtdIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZyAoKiA8LS0gbm90IGEgcmVndWxhciByZWZlcmVuY2UgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIHdpdGhcbiAgICAgICAgfCBbXSwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgICAgIHwgaWQsIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBMLnN0cmluZ19vZl90b2tlbnMgaWQsXG4gICAgICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCwgZmFsbGJhY2spKTo6ciksXG4gICAgICAgICAgICAgICBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9ub25yZWd1bGFyX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX2RlZiBsID1cbiAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICB8IF8sIFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgIHwgaWQsIChDb2xvbjo6KFNwYWNlfFNwYWNlcyBfKTo6cmVtYWlucylcbiAgICAgIHwgaWQsIChDb2xvbjo6cmVtYWlucykgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKTo6IF8gYXMgbCAtPiBTcGxpdChbXSwgbClcbiAgICAgICAgICAgICAgICAgIHwgZTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pKVxuICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUoW10sIF8pIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICB8IFNvbWUodXJsLCByZW1haW5zKSAtPlxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZW1haW5zID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBlYXRcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiByZWFkX3VudGlsX2RxIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9xIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjp0bC0+IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBsIC0+IFtdLCBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggdXJsID4gMiAmJiB1cmwuWzBdID0gJzwnXG4gICAgICAgICAgICAgICAgICYmIHVybC5bU3RyaW5nLmxlbmd0aCB1cmwgLSAxXSA9ICc+JyB0aGVuXG4gICAgICAgICAgICAgICAgU3RyaW5nLnN1YiB1cmwgMSAoU3RyaW5nLmxlbmd0aCB1cmwgLSAyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmMjYWRkX3JlZiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGlkKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlKSB1cmw7XG4gICAgICAgICAgICBTb21lKHIsIFtOZXdsaW5lXSwgcmVtYWlucylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluXG4gICAgdHJ5XG4gICAgICBtYXliZV9yZWYgbFxuICAgIHdpdGggfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICB0cnlcbiAgICAgICAgbWF5YmVfZGVmIGxcbiAgICAgIHdpdGhcbiAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXliZV9ub25yZWd1bGFyX3JlZiBsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgTm9uZVxuXG5cbiAgKCoqIG1heWJlIGEgbGluayAqKVxuICBsZXQgbWF5YmVfbGluayAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbmtcXG5cIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVhZF91cmwgbmFtZSBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz5yZWFkX3VybCAlU1xcblwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxfY3AsIHJfY3AgPVxuICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2NwPSVTIHJfY3A9JVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2NwKVxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9jcCk7XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBsX2RxLCByX2RxID1cbiAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9kcT0lUyByX2RxPSVTXFxuJSFcIlxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2RxKVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2RxKTtcbiAgICAgICAgICAoKiBtYXliZSB0aXRsZSAqKVxuICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGxfY3AgPiBMaXN0Lmxlbmd0aCBsX2RxIHRoZW4gKCogdGl0bGUgKilcbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LnJldiBsX2RxIHdpdGhcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiB0bClcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyBsX2RxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IHJlYWRfdW50aWxfZHEgfm5vX25sOmZhbHNlIH5icTpmYWxzZSByX2RxIGluXG4gICAgICAgICAgICAgIGxldCByZXN0ID0gc25kKHJlYWRfdW50aWxfY3BhcmVudGggcmVzdCkgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT4gKCogbm8gdGl0bGUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBubyB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICBsZXQgdXJsID0gbWF0Y2ggTGlzdC5yZXYgbF9jcCB3aXRoXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBMaXN0LnJldiB0bFxuICAgICAgICAgICAgICB8IF8gLT4gbF9jcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IFtdLCByX2NwIGluXG4gICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICBlbmRcbiAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVhZF9uYW1lIGwgPVxuICAgICAgKCogaXQncyBub3QgcmVhbGx5IHRoZSBcIm5hbWVcIiBvZiBhIFVSTCBidXQgd2hhdFxuICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGlubmVyIEhUTUwgb2YgYW4gSFRNTCAnQScgdGFnICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+IHJlYWRfbmFtZVxcblwiO1xuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpczo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChlYXRfYmxhbmsgdGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3MgMDo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIG46OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzcyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+IE5vbmVcbiAgICBpblxuICAgIHJlYWRfbmFtZSBsXG5cblxuICBsZXQgaGFzX3BhcmFncmFwaHMgbCA9XG4gICAgKCogSGFzIGF0IGxlYXN0IDIgY29uc2VjdXRpdmUgbmV3bGluZXMuICopXG4gICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIE5ld2xpbmVzIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcblxuICBsZXQgcGFyc2VfbGlzdCAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdCByPSglcykgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgXCJcIiAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKSAqKVxuICAgICAgICBcIlwiICgqIChkZXN0cmluZ19vZl90bCBwKSAqKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgfmxpbWl0OjQwIGwpO1xuICAgIGVuZDtcbiAgICBsZXQgbW9kdWxlIFVPID0gc3RydWN0IHR5cGUgb3JkZXJlZCA9IE8gfCBVIGVuZCBpblxuICAgIGxldCBvcGVuIFVPIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Q6IGw9KCVzKVxcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgIGxldCBlbmRfb2ZfaXRlbSAoaW5kZW50OmludCkgbCA6IHRvayBzcGxpdF9hY3Rpb24gID0gbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFNwbGl0KFtdLFtdKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6ICgoU3BhY2VzIG4pIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiB0bFxuICAgICAgICAgICAgICAgICAgICAgICBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA9IGluZGVudCs0IHRoZW4gKCogYmxvY2txdW90ZSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChuKzIpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6IChTcGFjZXMgbiA6OiB0bCBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygwKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZTo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs0IHRoZW4gKCogbmV3IHBhcmFncmFwaCBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCAoTmV3bGluZXMgXykgOjogXyAtPiAoKiBuID4gMCAqKVxuICAgICAgICAoKiBFbmQgb2YgaXRlbSwgc3RvcCAqKVxuICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OlxuICAgICAgICAoXG4gICAgICAgICAgKChTcGFjZXxTcGFjZXMgXykgOjogKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKChTcGFjZXxTcGFjZXMgXykgOjogTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgfCAoKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgICAgYXMgdGwpIC0+XG4gICAgICAgIFNwbGl0KFtOZXdsaW5lXSwgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgZXhhY3RseSAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSByZXdyaXRlIHRoZSBoZWFkIG9mIHRoZSBsZXhpbmcgc3RyZWFtLiAqKVxuICAgICAgICBDb250aW51ZV93aXRoKFtdLCBOZXdsaW5lcyAwIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiAoTmV3bGluZXMgXykgOjogXyAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSBzdG9wLiAqKVxuICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlcyBfIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlc1wiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU3BhY2VzIF86OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgQ29udGludWVcbiAgICBpblxuICAgIGxldCByZXZfdG9fdCBsID1cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgKCogTmV3bGluZXMgYXQgdGhlIGVuZCBvZiBpdGVtcyBoYXZlIG5vIG1lYW5pbmcgKGV4Y2VwdCB0byBlbmQgdGhlXG4gICAgICAgICBpdGVtIHdoaWNoIGlzIGV4cHJlc3NlZCBieSB0aGUgY29uc3RydWN0b3IgYWxyZWFkeSkuICopXG4gICAgICBsZXQgbCA9IG1hdGNoIGwgd2l0aCAoTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+IHRsIHwgXyAtPiBsIGluXG4gICAgICBtYWluX2xvb3AgW10gW05ld2xpbmVdIChMaXN0LnJldiBsKVxuICAgIGluXG4gICAgbGV0IGFkZCAoc3VibGlzdDplbGVtZW50KSBpdGVtcyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBhZGRcXG4lIVwiO1xuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgKE8saW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKE8saW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICAgIHwgKFUsaW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKFUsaW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICBpblxuICAgIGxldCBtYWtlX3VwIH5wIGl0ZW1zIDogT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFrZV91cCBwPSViXFxuJSFcIiBwO1xuICAgICAgbGV0IGl0ZW1zID0gTGlzdC5yZXYgaXRlbXMgaW5cbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgKFUsXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBVbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgVWwoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCAoTyxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIE9scChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGZhaWx3aXRoIFwibWFrZV91cCBjYWxsZWQgd2l0aCBbXVwiICgqIGFzc2VydCBmYWxzZSAqKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBsaXN0X2l0ZW1zOiBwPSViIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgKCogbm8gbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgKCogbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICAoKiBuZXcgdW5vcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDIzNDYpIG5ld19pdGVtPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBuZXdfaXRlbSk7XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKFUsWzBdLCByZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChVLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoVSxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pIDo6IGl0ZW1zIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogbmV3IG9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBuZXdfaXRlbTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoTyxbMF0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChPLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChPLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wXG4gICAgICAgICAgICAgICAgICAgICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogKilcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OihOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpTdGFyOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICAgIC0+XG4gICAgICAgIGxpc3RfaXRlbXMgfnA6dHJ1ZSBpbmRlbnRzIGl0ZW1zIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGxldCByZWMgc3RyaW5nX29mX2l0ZW1zIGl0ZW1zID1cbiAgICAgICAgICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCAoTyxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoTyxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgKFUsaW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKFUsaT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IF8gLT4gXCIod2VpcmQpXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTkFMSSBwYXJzZV9saXN0OiBsPSglUykgaXRlbXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCkgKHN0cmluZ19vZl9pdGVtcyBpdGVtcylcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICgqIG5vdCBhIGxpc3QgaXRlbSAqKVxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICBpblxuICAgIG1hdGNoIGxpc3RfaXRlbXMgfnA6ZmFsc2UgW10gW10gbCB3aXRoXG4gICAgfCBycCwgbCAtPlxuICAgICAgcnA6OnIsIFtOZXdsaW5lXSwgbFxuXG5cblxuICBsZXQgaWNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIGluZGVudGVkIGNvZGU6IHJldHVybnMgKHIscCxsKSB3aGVyZSByIGlzIHRoZSByZXN1bHQsIHAgaXMgdGhlXG4gICAgICAgbGFzdCB0aGluZyByZWFkLCBsIGlzIHRoZSByZW1haW5zICopXG4gICAgbGV0IGR1bW15X3RhZyA9IFRhZyhcImR1bW15X3RhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uID0gZnVuIHIgcCBsIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgaW5cbiAgICBsZXQgYWNjdSA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBsZXQgcmVjIGxvb3AgcyB0bCA9IG1hdGNoIHMsIHRsIHdpdGhcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKFNwYWNlfFNwYWNlcygwfDEpKTo6XyAtPlxuICAgICAgICAoKiAxLCAyIG9yIDMgc3BhY2VzLiAqKVxuICAgICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIHdoYXQgZm9sbG93cyBpc24ndC4gKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIFNwYWNlcyhuKTo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgICgqIEF0IGxlYXN0IDQgc3BhY2VzLCBpdCdzIHN0aWxsIGNvZGUuICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKGlmIG4gPj0gNCB0aGVuIFNwYWNlcyhuLTQpIGVsc2UgaWYgbiA9IDMgdGhlbiBTcGFjZSBlbHNlIGR1bW15X3RhZylcbiAgICAgICAgICB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAobm90X3NwYWNlczo6XyBhcyB0bCkgLT4gKCogc3RvcCAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2UgaXQncyBubyBtb3JlIGNvZGUuICopXG4gICAgICB8IHAsIGU6OnRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICAoKiBodG1sIGVudGl0aWVzIGFyZSB0byBiZSBjb252ZXJ0ZWQgbGF0ZXIhICopXG4gICAgICAgIGxvb3AgZSB0bFxuICAgICAgfCBwLCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KTo6ciwgW3BdLCBbXVxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBTcGFjZXMgbjo6dGwgLT5cbiAgICAgIGlmIG4gPj0gNCB0aGVuXG4gICAgICAgIFNvbWUobG9vcCAoU3BhY2VzKG4tNCkpIHRsKVxuICAgICAgZWxzZSBpZiBuID0gMyB0aGVuXG4gICAgICAgIFNvbWUobG9vcCBTcGFjZSB0bClcbiAgICAgIGVsc2UgU29tZShsb29wIGR1bW15X3RhZyB0bClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuICAoKiBSZXR1cm5zIFsocixwLGwpXSB3aGVyZSBbcl0gaXMgdGhlIHJlc3VsdCwgW3BdIGlzIHRoZSBsYXN0IHRoaW5nXG4gICAgIHJlYWQsIGFuZCBbbF0gaXMgd2hhdCByZW1haW5zLiAqKVxuICBsZXQgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPD0gMyB0aGVuIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogdW5vcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IChOdW1iZXIgXyk6OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgKCogb3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCBbXVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiAoKiBibGFuayBsaW5lLCBza2lwIHNwYWNlcyAqKVxuICAgICAgICByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCAgXzo6XyAtPlxuICAgICAgICBUZXh0IChcIiBcIik6OnIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgKVxuICAgIGVsc2UgKCAoKiBuPj00LCBibGFuayBsaW5lIG9yIGluZGVudGVkIGNvZGUgKilcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBbXSB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+IHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBpY29kZSB+ZGVmYXVsdF9sYW5nIHIgW05ld2xpbmVdIChMLm1ha2Vfc3BhY2UgbiA6OiBsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gcixwLGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuaWNvZGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgKVxuXG4gIGxldCBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lID8oaHRtbD1mYWxzZSkgbiByIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIChUZXh0IFwiIFwiOjpyKSwgW1NwYWNlXSwgbGV4ZW1lc1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IE5ld2xpbmUgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCB0aGUgbmV3bGluZVxcbiUhXCI7XG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCB0bFxuICAgICAgfCBOZXdsaW5lcyBrIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgMSBuZXdsaW5lXCI7XG4gICAgICAgIGxldCBuZXdsaW5lcyA9IGlmIGsgPSAwIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzKGstMSkgaW5cbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIG5ld2xpbmVzIDo6IHRsXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChuPjEpO1xuICAgICAgICAoVGV4dCAoU3RyaW5nLm1ha2UgbiAnICcpOjpyKSwgW1NwYWNlcyhuLTIpXSwgbGV4ZW1lc1xuICAgIClcblxuXG4gIGxldCBtYXliZV9hdXRvZW1haWwgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgTGVzc3RoYW46OnRsIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGZzcGxpdCB+ZXhjbDooZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB+ZjooZnVuY3Rpb24gQXQ6OnRsIC0+IFNwbGl0KFtdLHRsKSB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICB0bFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZShsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvbiBHcmVhdGVydGhhbjo6dGwgLT4gU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMDo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG46OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgIHJpZ2h0XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lKGRvbWFpbiwgdGwpIC0+XG4gICAgICAgICAgICBsZXQgZW1haWwgPSBMLnN0cmluZ19vZl90b2tlbnMgbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgXiBcIkBcIiBeIEwuc3RyaW5nX29mX3Rva2VucyBkb21haW4gaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKFwibWFpbHRvOlwiXmVtYWlsLFtUZXh0IGVtYWlsXSxcIlwiKTo6cixbR3JlYXRlcnRoYW5dLHRsKVxuICAgICAgZW5kXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5tYXliZV9hdXRvZW1haWw6IHdyb25nIHVzZSBvZiB0aGUgZnVuY3Rpb24uXCJcblxuICBsZXQgaXNfaGV4IHMgPVxuICAgIFN0cmluZy5sZW5ndGggcyA+IDFcbiAgICAmJiAocy5bMF0gPSAnWCcgfHwgcy5bMF0gPSAneCcpXG4gICAgJiYgKGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgIGkgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgIHx8XG4gICAgICAgICAobWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICBpbiBsb29wIDEpXG5cbiAgbGV0IG1lZGlhdHlwZXRleHRvbWQgOiBzdHJpbmcgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgICBsb29wIHRydWUgciB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGIgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsb29wIGZhbHNlIFtdIGxcblxuICBleGNlcHRpb24gT3JwaGFuX2Nsb3Npbmcgb2Ygc3RyaW5nICogbCAqIGxcblxuICBsZXQgcmVjIG1haW5faW1wbF9yZXYgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYiByPSVzIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIGh0bWxcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSlcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHByZXZpb3VzKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbGV4ZW1lcyk7XG4gICAgbWF0Y2ggcHJldmlvdXMsIGxleGVtZXMgd2l0aFxuICAgICgqIG5vIG1vcmUgdG8gcHJvY2VzcyAqKVxuICAgIHwgXywgW10gLT5cbiAgICAgICgqIHJldHVybiB0aGUgcmVzdWx0ICgvIVxcIGl0IGhhcyB0byBiZSByZXZlcnNlZCBhcyBzb21lIHBvaW50KSAqKVxuICAgICAgclxuXG4gICAgKCogVGFnOiB0YWcgc3lzdGVtICRcXGN1cCQgaGlnaC1wcmlvcml0eSBleHRlbnNpb24gbWVjaGFuaXNtICopXG4gICAgfCBfLCBUYWcoX25hbWUsIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBlI3BhcnNlcl9leHRlbnNpb24gciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIHRsXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgY29tbWVudHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6KEV4Y2xhbWF0aW9uOjpNaW51c3MgMDo6YyBhcyB0bCkgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IChNaW51c3MgXyBhcyBtKTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCAtPlxuICAgICAgICAgICAgU3BsaXQoW2c7bV0sIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZnNwbGl0IH5mOmYgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgKGNvbW1lbnRzLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBIdG1sX2NvbW1lbnQoTC5zdHJpbmdfb2ZfdG9rZW5zIGNvbW1lbnRzKSA6OiByIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtOZXdsaW5lXSBuZXdfdGxcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZyAvIGJsb2NrcXVvdGUgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIEdyZWF0ZXJ0aGFuOjooU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgciBwcmV2aW91cyAoTmV3bGluZTo6bGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nLCB3aXRoIGxpbmVzIHN0YXJ0aW5nIHdpdGggc3BhY2VzISAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKFNwYWNlfFNwYWNlcygwfDEpIGFzIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICAoKiBJdCdzIDEsIDIgb3IgMyBzcGFjZXMsIG5vdCBtb3JlIGJlY2F1c2UgaXQgd291bGRuJ3QgbWVhblxuICAgICAgICAgcXVvdGluZyBhbnltb3JlIGJ1dCBjb2RlLiAqKVxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IG5ld19yLCBwLCByZXN0ID1cbiAgICAgICAgICBsZXQgZm9vLCByZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChMLmxlbmd0aCBzKSAoTmV3bGluZTo6bGV4ZW1lcykgd2l0aFxuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6Zm9vLCByZXN0IC0+IGZvbywgcmVzdFxuICAgICAgICAgICAgfCByZXMgLT4gcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCBbXSBwcmV2aW91cyAoTmV3bGluZTo6Zm9vKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUobmV3X3IsIHAsIFtdKSAtPiBuZXdfciwgcCwgcmVzdFxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChuZXdfckByKSBbTmV3bGluZV0gcmVzdFxuICAgICAgZW5kXG5cbiAgICAoKiBtaW51cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSxcbiAgICAgIChNaW51c3xNaW51c3MgXyBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKTo6XyBhcyB0bCkgLT5cbiAgICAgICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIHNvIGl0IGNvdWxkIGJlIGEgbGlzdCAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBNaW51cyAtPiAoKiBpdCdzIGEgbGlzdCAqKVxuICAgICAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgICAgICAgIHwgXyAtPiAoKiBub3QgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChNaW51c3xNaW51c3MgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgYW5kIGl0J3Mgbm90IGEgbGlzdCBlaXRoZXJcbiAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQncyBub3QgZm9sbG93ZWQgYnkgc3BhY2VzICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcblxuICAgICgqIGhhc2hlcyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXykgOjogdHRsIGFzIHRsKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKHR0bCBhcyB0bCkgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGlmIG4gPD0gNCB0aGVuXG4gICAgICAgIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIChuKzIpIHIgcHJldmlvdXMgdHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IHRsIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAxIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG4gICAgfCBfLCAoSGFzaHxIYXNocyBfIGFzIHQpIDo6IHRsIC0+ICgqIGhhc2ggLS0gbm8gdGl0bGUgKilcbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFmdGVyIGEgbmV3bGluZTogY291bGQgbGVhZCB0byBociAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKChTcGFjZXxTcGFjZXMgXykgYXMgc3ApIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBociB0bCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIE5vIFtIcl0sIGJ1dCBtYXliZSBbVWxdLCBbT2xdLCBjb2RlLC4uLiAqKVxuICAgICAgICAgIGxldCBuID0gTC5sZW5ndGggc3AgaW5cbiAgICAgICAgICBsZXQgciwgcCwgbCA9XG4gICAgICAgICAgIHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyB0bCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBTb21lIHRsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYW55d2hlcmUgKilcbiAgICB8IF8sICgoU3BhY2V8U3BhY2VzIF8pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiB0b28gbWFueSBjYXNlcyB0byBiZSBoYW5kbGVkIGhlcmUgKilcbiAgICAgIGxldCBuID0gTC5sZW5ndGggdCBpblxuICAgICAgbGV0IHIsIHAsIGwgPSBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lIH5odG1sIG4gciB0bCBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuXG4gICAgKCogdW5kZXJzY29yZXMgKilcbiAgICB8IF8sIChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHVuZGVyc2NvcmUsIG9yIGVtcGggKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG4gICAgfCBfLCAoVW5kZXJzY29yZXMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHVuZGVyc2NvcmVzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuICgqIDEgdW5kZXJzY29yZSAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZSAoKiAyIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcblxuICAgICgqIGVudW1lcmF0ZWQgbGlzdHMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChOdW1iZXIgXykgOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGwgLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogcGx1cyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBQbHVzIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBzdGFycyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFyIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgKCogbWF5YmUgaHIgb3IgbmV3IGxpc3QgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXJzIF8gOjogXyB3aGVuIGhyX3MgbGV4ZW1lcyA8PiBOb25lIC0+XG4gICAgICAoKiBociAqKVxuICAgICAgKG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgfCBTb21lIGwgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBfLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiBzdGFyLCBvciBlbXBoIC8vIGNhbid0IGJlIGhyICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuICAgIHwgXywgKFN0YXJzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiBzdGFycywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBiYWNrc2xhc2hlcyAqKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChOZXdsaW5lIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXSAoTmV3bGluZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdXG4gICAgICAgIChOZXdsaW5lcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQmFja3F1b3RlIGFzIHQpIDo6IHRsIC0+ICgqIFxcYCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgMCA6OiB0bCAtPiAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdIChCYWNrcXVvdGUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXVxuICAgICAgICAoQmFja3F1b3RlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBcXCogKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyAwIDo6IHRsIC0+ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFyIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhcnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogXFxfICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgMCA6OiB0bCAtPiAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdIChVbmRlcnNjb3JlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdXG4gICAgICAgIChVbmRlcnNjb3JlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxceyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgMCA6OiB0bCAtPiAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXFsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwoICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXSAoT3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXVxuICAgICAgICAoT3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFBsdXMgYXMgdCkgOjogdGwgLT4gKCogXFwrICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgMCA6OiB0bCAtPiAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTWludXMgYXMgdCkgOjogdGwgLT4gKCogXFwtICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIDAgOjogdGwgLT4gKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRG90IGFzIHQpIDo6IHRsIC0+ICgqIFxcLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgMCA6OiB0bCAtPiAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3QgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRXhjbGFtYXRpb24gYXMgdCkgOjogdGwgLT4gKCogXFwhICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIDAgOjogdGwgLT4gKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl0gKEV4Y2xhbWF0aW9uIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl1cbiAgICAgICAgKEV4Y2xhbWF0aW9ucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoSGFzaCBhcyB0KSA6OiB0bCAtPiAoKiBcXCMgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyAwIDo6IHRsIC0+ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2hzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXD4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPiAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXVxuICAgICAgICAoR3JlYXRlcnRoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXDwgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgMCA6OiB0bCAtPiAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXSAoTGVzc3RoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXVxuICAgICAgICAoTGVzc3RoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgKEJhY2tzbGFzaHMgMCBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJcXFxcXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgKEJhY2tzbGFzaHMgbiBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgaWYgbiBtb2QgMiA9IDAgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSB0bFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSAoQmFja3NsYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoOjpbXSAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbXSBbXVxuICAgIHwgXywgQmFja3NsYXNoOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbQmFja3NsYXNoXSB0bFxuXG4gICAgKCogPCAqKVxuICAgIHwgXywgKExlc3N0aGFufExlc3N0aGFucyBfIGFzIHQpXG4gICAgICAgICA6OiAoV29yZChcImh0dHBcInxcImh0dHBzXCJ8XCJmdHBcInxcImZ0cHNcInxcInNzaFwifFwiYWZwXCJ8XCJpbWFwXCIpIGFzIHcpXG4gICAgICAgICA6OiBDb2xvbjo6U2xhc2hzKG4pOjp0bCAtPlxuICAgICAgKCogXCJzZW1pLWF1dG9tYXRpY1wiIFVSTHMgKilcbiAgICAgIGxldCByZWMgcmVhZF91cmwgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VuIHcpIF4gXCI6Ly9cIlxuICAgICAgICAgICAgXiAoaWYgbiA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLm1ha2UgKG4tMSkgJy8nKVxuICAgICAgICAgICAgXiBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IGFjY3UpXG4gICAgICAgICAgaW4gU29tZSh1cmwsIHRsKVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgcmVhZF91cmwgKHg6OmFjY3UpIHRsXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF91cmwgW10gdGwgd2l0aFxuICAgICAgICB8IFNvbWUodXJsLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBcbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgMCAtPiBUZXh0IFwiPFwiIDo6IHJcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnPCcpIDo6IHJcbiAgICAgICAgICAgIHwgXyAtPiByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChVcmwodXJsLFtUZXh0IHVybF0sXCJcIik6OnIpIFtdIG5ld190bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG5cbiAgICAoKiBXb3JkKHcpICopXG4gICAgfCBfLCBXb3JkIHc6OnRsIC0+XG4gICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB3IDo6IHIpIFtXb3JkIHddIHRsXG5cbiAgICAoKiBuZXdsaW5lIGF0IHRoZSBlbmQgKilcbiAgICB8IF8sIFtOZXdsaW5lXSAtPlxuICAgICAgTkw6OnJcblxuICAgICgqIG5hbWVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoV29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bCkgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB3IGh0bWxjb2Rlc19zZXQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6TnVtYmVyIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIG1heWJlIGhleCBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6OldvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIHdoZW4gaXNfaGV4IHcgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cblxuICAgICgqIEFtcGVyc2FuZCAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtBbXBlcnNhbmRdIHRsXG5cbiAgICAoKiAyIEFtcGVyc2FuZHMgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMoMCk6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZDo6dGwpXG5cbiAgICAoKiBTZXZlcmFsIEFtcGVyc2FuZHMgKG1vcmUgdGhhbiAyKSAqKVxuICAgIHwgXywgQW1wZXJzYW5kcyhuKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kcyhuLTEpOjp0bClcblxuICAgICgqIGJhY2txdW90ZXMgKilcbiAgICB8IF8sIChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgfmRlZmF1bHRfbGFuZyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCAqKVxuICAgICgqIDxici8+IGFuZCA8aHIvPiB3aXRoIG9yIHdpdGhvdXQgc3BhY2UocykgKilcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bClcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjooU3BhY2V8U3BhY2VzIF8pOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGcgd2l0aFxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBhd2FpdGVkIG9ycGhhbiBodG1sIGNsb3NpbmcgdGFnICopXG4gICAgfCBfLCBMZXNzdGhhbjo6U2xhc2g6OldvcmQodyk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGxcbiAgICAgIHdoZW4gIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gLT5cbiAgICAgIHJhaXNlIChPcnBoYW5fY2xvc2luZyh3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdGwpKSlcblxuICAgICgqIGJsb2NrIGh0bWwgKilcbiAgICB8IChbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF98VGFnKFwiSFRNTEJMT0NLXCIsIF8pXSksXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW1dvcmQgXCJcIl0gbGV4ZW1lc1xuICAgICAgZWxzZSBpZiBub3QgKGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldCkgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgRlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0IGh0bWwgbCA9XG4gICAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCA/KGh0bWw9aHRtbCkgbCA9XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBsZXQgZl9hID0gZmlsdGVyX3RleHRfb21kX3JldiBhIGluXG4gICAgICAgICAgICAgICAgICBpZiBmX2EgIT0gYSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgZl9hLFxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAobWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6ZmFsc2UgKExpc3QucmV2IGMpKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LCBmX2EsIG1kX29mX2ludGVybV9saXN0IH5odG1sOnRydWUgKExpc3QucmV2IGMpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZEBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6UlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdFxuICAgICAgICAgICAgICAgICAgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIChMaXN0LnJldiB0MikpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgaWYgaHRtbCB0aGVuXG4gICAgICAgICAgICAgICAgICBSYXcoTC5zdHJpbmdfb2ZfdG9rZW5zIHQpIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWFpbl9sb29wIH5odG1sIFtdIFtXb3JkIFwiXCJdIHRcbiAgICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldiB0KSA6OiB0bClcbiAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCBsID0gbWRfb2ZfaW50ZXJtX2xpc3QgdHJ1ZSBsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0IvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0IvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgICB8IFQuUlRPS0VOUyByIDo6IGJvZHkgLT4gVC5SVE9LRU5TKHg6OnIpOjpib2R5XG4gICAgICAgICAgICB8IF8gLT4gVC5SVE9LRU5TW3hdIDo6IGJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzMzMgQkhUTUwgbG9vcCBib2R5PSVTIHRhZ3N0YXR1cz0lUyAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSlcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQwMSBCSFRNTCBOb3QgZW5vdWdoIHRvIHJlYWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKSA6OiB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MTkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgIFNsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgb3BlbmVyICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc1IEJIVE1MIHByb3Blcmx5IGNsb3NpbmcgJVNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc5IEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5SVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzgzIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgaWYgIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChPcnBoYW5fY2xvc2luZyh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5zKG4tMSk6OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIDNcXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldFxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgPFdvcmQoJXMpLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGF0dHJzIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5NiBCSFRNTCB0YWcgJVMgYnV0IGF0dHJzIDw+IFtdXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MjEgQkhUTUwgdGFnICVTLCB0YWdzdGF0dXM9JVMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycz1bXSwgdG9rZW5zPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MzMgQkhUTUwgdGFnc3RhdHVzPSVTIHRva2Vucz0lU1xcbiUhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgaWYgTGlzdC5tZW0gKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIikgYXR0cnMgdGhlblxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSB0IDo6ICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlKG1haW5faW1wbF9yZXYgfmh0bWwgW10gW10gdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MjQgQkhUTUwgY2xvc2luZyB0YWcgbm90IGZvdW5kIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluICVTXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDbG9zaW5nIHRhZyBgJXMnIG5vdCBmb3VuZCBmb3IgdGV4dC9vbWQgem9uZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gTGlzdC50bCAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIE9ycGhhbl9jbG9zaW5nKHRhZ25hbWUsIGRlbGltaXRlciwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmIHIgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gYXMgZSA6OiB0bCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbjo6XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExlc3N0aGFuOjp0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbjo6clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbnMobi0xKTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwgPT0gZGVsaW1pdGVyIHx8IGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IChlOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmIFtdIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NTIgQkhUTUwgdG9rZW5zPSVzIGRlbGltaXRlcj0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcj0lcyBiZWZvcmU9JXMgKHRhZ25hbWU9dCk9JWJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGRlbGltaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBhZnRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBiZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnbmFtZSA9IHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICFtZWRpYXR5cGV0ZXh0b21kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogdGwgLT4gbWVkaWF0eXBldGV4dG9tZCA6PSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRhZ25hbWUgPSB0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULkhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULk1EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX2ltcGwgfmh0bWwgW10gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ19zZXRleHQgbWFpbl9sb29wIGJlZm9yZSkpXSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNTcxIEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MTkgQkhUTUwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYm9keSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTggQkhUTUwgRm91bmQgYSBjbG9zaW5nIHRhZyAlc1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSwgbClcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgMzU5MSBCSFRNTCBTb21lIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgR3JlYXRlcnRoYW4gYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NDIgQkhUTUwgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzYyOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjYxIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzY1NCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTAgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIyIEJIVE1MICVzPSVTICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnMgYXMgZGd0c1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIwIEJIVE1MIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgZGd0cyk7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM3MzcgQkhUTUwgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmVzIF8gYXMgeCkgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzgyNyBCSFRNTCBuZXdsaW5lc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgd2FybiBcInRoZXJlIGFyZSBlbXB0eSBsaW5lcyBpbiB3aGF0IG1heSBiZSBhbiBIVE1MIGJsb2NrXCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc0MiBCSFRNTCBmYWxsYmFjayB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBcIk5vbmVcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gXCJBd2FpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+IFwiT3BlbiAoY2FuJ3QgYmUpXCIpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGgsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbVGFnKFwiSFRNTEJMT0NLXCIsIGVtcHR5X2V4dGVuc2lvbildIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGJsb2NrIEhUTUwuICopXG5cblxuICAgICgqIGlubGluZSBIVE1MICopXG4gICAgfCBfLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIChzdHJpY3RfaHRtbCAmJiBub3QoU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQpKVxuICAgICAgfHwgbm90KGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldClcbiAgICAgIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IFRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIEh0bWwodCwgYSwgbWRfb2ZfaW50ZXJtX2xpc3QoTGlzdC5yZXYgYykpOjptZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPiBtZCBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQxOjpUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKFRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsIH5odG1sIFtdIFtXb3JkIFwiXCJdICh0KVxuICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7SS9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7SS9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBULlRPS0VOU1t4XTo6Ym9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICgqIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgYm9keT0oJXMpICVzXFxuJSFcIiAqKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKSAqKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCk6Ol8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5vdCBlbm91Z2ggdG8gcmVhZCBmb3IgaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpOjp0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuO1NsYXNoXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIG11bHRpcGxlIG5ld2xpbmVzIGFyZSBub3QgdG8gYmUgc2VlbiBpbiBpbmxpbmUgSFRNTCAqKVxuICAgICAgICAgICAgfCBOZXdsaW5lcyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgTXVsdGlwbGUgbGluZXMgaW4gaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IF8gLT4gd2FybiBcIm11bHRpcGxlIG5ld2xpbmVzIGluIGlubGluZSBIVE1MXCI7IE5vbmUpXG4gICAgICAgICAgICAoKiBtYXliZSBjb2RlICopXG4gICAgICAgICAgICB8IChCYWNrcXVvdGUgfCBCYWNrcXVvdGVzIF8gYXMgYik6OnRsIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm8gY29kZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm9uZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBsZXQncyB0cnlcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgW10gW1NwYWNlXSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKCgoQ29kZSBfOjpfKSBhcyBjKSwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1lZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5NRCBjOjpib2R5KSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogZmFpbGVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tiXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRsXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxMzYgcHJvcGVybHkgY2xvc2luZyAlUyB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTU0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyBub3RoaW5nIHdpdGggJVMgM1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IChzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaW5saW5lX2h0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgICB8fCAobm90IHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDwlcy4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3OTYgdGFnICVzLCBhdHRycz1bXVxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbd29yZDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYix0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODUgZW5kIG9mIG9wZW5pbmcgdGFnIHRva2Vucz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyBhcyB0cyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSA0MTkyIEZvdW5kIGEgY2xvc2luZyB0YWcgJXMgdHM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBOb3RlOiB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJzXSBoZXJlIGJlY2F1c2UgaW4gd2UgaGF2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnc3RhdHVzXSBtYXRjaGVzIFtULk9wZW4gXyA6OiBfXSBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIGZpbHRlciB0aGF0IHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgY2FyZSBvZiBhdHRycyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpdC4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSBUdXJucyBvdXQgYW4gYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbl06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MjAyIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgzOTU3KSAlcz0lUyAlc1xcbiUhXCIgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2g7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgIHwgQmFja3NsYXNocyhuKTo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgJiYgbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNocyhuKTt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuXG4gICAgICAgICAgICB8IHg6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDE2MSkgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyAoeDo6dG9rZW5zKSk7XG4gICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbeF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgKDQyODkpIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDI5NCkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayB3aXRoIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpbiBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShodG1sLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGh0bWwsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbR3JlYXRlcnRoYW5dIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGlubGluZSBIVE1MLiAqKVxuXG4gICAgKCogPCA6IGVtYWlscyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfYXV0b2VtYWlsIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogbGluZSBicmVha3MgKilcbiAgICB8IF8sIE5ld2xpbmU6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6cikgW05ld2xpbmVdIHRsXG4gICAgfCBfLCBOZXdsaW5lcyBfOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6Ok5MOjpyKSBbTmV3bGluZV0gdGxcblxuICAgICgqIFsgKilcbiAgICB8IF8sIChPYnJhY2tldCBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2xpbmsgbWFpbl9sb29wIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYXRjaCBtYXliZV9yZWZlcmVuY2UgbWFpbl9sb29wIHJjIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW10oL3BhdGgvdG8vaW1nLmpwZykgKilcbiAgICAgICh0cnlcbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIGxldCBiLCB0bCA9IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIHRsIGluXG4gICAgICAgICAgICgqIG5ldyBsaW5lcyB0aGVyZSBhcmUgYWxsb3dlZCAqKVxuICAgICAgICAgICBsZXQgciAoKiB1cGRhdGVkIHJlc3VsdCAqKSA9IG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgdHJ5IFNvbWUocmVhZF91bnRpbF9zcGFjZSB+YnE6ZmFsc2Ugfm5vX25sOnRydWUgYilcbiAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gTm9uZVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgU29tZSh1cmwsIHRscykgLT5cbiAgICAgICAgICAgICBsZXQgdGl0bGUsIHNob3VsZF9iZV9lbXB0eV9saXN0ID1cbiAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZCAocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bHMpKSBpblxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgYiBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIFwiXCIpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogaW1nIHJlZiAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9uIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiByZWYgaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdW3JlZl0gKilcbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBpZCwgdGwgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDp0cnVlIHRsIGluXG4gICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCB0bCBsZXhlbWVzIGluXG4gICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBcIlwiLCBmYWxsYmFjaykgOjogcikgW0NicmFja2V0XSB0bFxuICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdCk6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggXCJhbHRcIiAqKVxuICAgICAgKCogIVtBbHQgdGV4dF0oL3BhdGgvdG8vaW1nLmpwZyBcIk9wdGlvbmFsIHRpdGxlXCIpICopXG4gICAgICAodHJ5XG4gICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHRsIHdpdGhcbiAgICAgICAgIHwgYWx0LCBPcGFyZW50aGVzaXM6Om50bCAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgIGxldCBwYXRoX3RpdGxlLCByZXN0ID1cbiAgICAgICAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGgsIHRpdGxlID1cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfc3BhY2UgfmJxOnRydWUgfm5vX25sOnRydWUgcGF0aF90aXRsZVxuICAgICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBwYXRoX3RpdGxlLCBbXSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIG5vdGhpbmcgPVxuICAgICAgICAgICAgICAgIGlmIHRpdGxlIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRpdGxlKSlcbiAgICAgICAgICAgICAgICBlbHNlIFtdLCBbXSBpblxuICAgICAgICAgICAgICBpZiBub3RoaW5nIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb247ICgqIGNhdWdodCByaWdodCBiZWxvdyAqKVxuICAgICAgICAgICAgICBsZXQgciA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGggPSBMLnN0cmluZ19vZl90b2tlbnMgcGF0aCBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKGFsdCwgcGF0aCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uXG4gICAgICAgICAgICAoKiBpZiBOTF9leGNlcHRpb24gd2FzIHJhaXNlZCwgdGhlbiBmYWxsIGJhY2sgdG8gXCJ0ZXh0XCIgKilcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgICAgOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pOjpDYnJhY2tldDo6bnRsIC0+XG4gICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIG50bCBsZXhlbWVzIGluXG4gICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cikgW0NicmFja2V0XSBudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KChOZXdsaW5lfFNwYWNlfFNwYWNlcyBffFdvcmQgX3xOdW1iZXIgXyk6Ol9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG50bCkgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgICAgfCBpZCwgcmVzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlc3QgbGV4ZW1lcyBpblxuICAgICAgICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKVxuICAgICAgICAgICAgICAgICAgW0NicmFja2V0XVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgIHwgXyxcbiAgICAgIChBdHxCYXJ8Q2FyZXR8Q2JyYWNlfENvbG9ufENvbW1hfENwYXJlbnRoZXNpc3xDYnJhY2tldHxEb2xsYXJcbiAgICAgIHxEb3R8RG91YmxlcXVvdGV8RXhjbGFtYXRpb258RXF1YWx8TWludXN8T2JyYWNlfE9wYXJlbnRoZXNpc1xuICAgICAgfFBlcmNlbnR8UGx1c3xRdWVzdGlvbnxRdW90ZXxTZW1pY29sb258U2xhc2h8VGFifFRpbGRlXG4gICAgICB8R3JlYXRlcnRoYW4gYXMgdCk6OnRsXG4gICAgICAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG4gICAgfCBfLCAoTnVtYmVyIF8gIGFzIHQpOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgfCBfLCAoQXRzIF8gfCBCYXJzIF8gfCBDYXJldHMgXyB8IENicmFjZXMgXyB8IENicmFja2V0cyBfIHwgQ29sb25zIF9cbiAgICAgICAgIHwgQ29tbWFzIF8gfCBDcGFyZW50aGVzaXNzIF8gfCBEb2xsYXJzIF8gfCBEb3RzIF8gfCBEb3VibGVxdW90ZXMgX1xuICAgICAgICAgfCBFcXVhbHMgXyB8IEV4Y2xhbWF0aW9ucyBfIHwgR3JlYXRlcnRoYW5zIF8gfCBMZXNzdGhhbnMgX1xuICAgICAgICAgfCBNaW51c3MgXyB8IE9icmFjZXMgXyB8IE9icmFja2V0cyBfIHwgT3BhcmVudGhlc2lzcyBfXG4gICAgICAgICB8IFBlcmNlbnRzIF8gfCBQbHVzcyBfIHwgUXVlc3Rpb25zIF8gfCBRdW90ZXMgXyB8IFNlbWljb2xvbnMgX1xuICAgICAgICAgfCBTbGFzaHMgXyB8IFN0YXJzIF8gfCBUYWJzIF8gfCBUaWxkZXMgXyB8IFVuZGVyc2NvcmVzIF8gYXMgdGspXG4gICAgICAgICA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHRrMCwgdGtzID0gTC5zcGxpdF9maXJzdCB0ayBpblxuICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdGswIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB0ZXh0IDo6IHIpIFt0azBdICh0a3MgOjogdGwpXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG5cbiAgYW5kIG1haW5faW1wbCB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbCBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIExpc3QucmV2IChtYWluX2xvb3BfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lcylcblxuICBhbmQgbWFpbl9sb29wID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbCB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuICBhbmQgbWFpbl9sb29wX3JldiA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG5cbiAgbGV0IG1haW5fcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9sb29wIFtdIFtdICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzKVxuXG4gIGxldCBwYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX3BhcnNlIGxleGVtZXNcblxuZW5kXG5cbmxldCBkZWZhdWx0X3BhcnNlID8oZXh0ZW5zaW9ucz1bXSkgPyhkZWZhdWx0X2xhbmc9XCJcIikgbGV4ZW1lcyA9XG4gIGxldCBlID0gZXh0ZW5zaW9ucyBhbmQgZCA9IGRlZmF1bHRfbGFuZyBpblxuICBsZXQgbW9kdWxlIEUgPSBEZWZhdWx0X2VudihVbml0KSBpblxuICBsZXQgbW9kdWxlIE0gPVxuICAgIE1ha2Uoc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gZVxuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IGRcbiAgICBlbmQpXG4gIGluXG4gIE0ubWFpbl9wYXJzZSBsZXhlbWVzXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFlvdSBzaG91bGQgZWl0aGVyIHVzZSB0aGlzIG1vZHVsZSBvciBPbWRfbGV4ZXIsIG5vdCBib3RoLlxuICAgIFRoaXMgbW9kdWxlIGluY2x1ZGVzIE9tZF9sZXhlci5cbiopXG5cbmluY2x1ZGUgT21kX2xleGVyXG5cbmxldCBsZXhfZnJvbV9pbmNoYW5uZWwgaWMgPVxuICAoKiBNYWludGVuYW5jZS1lYXNpbmVzcy1kcml2ZW4gaW1wbGVtZW50YXRpb24uICopXG4gIGxldCBpY19jb250ZW50ID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIChpbnB1dF9jaGFyIGljKVxuICAgICAgICBkb25lO1xuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gIGxleCBpY19jb250ZW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBPTUQ6IE1hcmtkb3duIHRvb2wgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlOiAgSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaHRtbCA9IGh0bWxfbm9kZSBsaXN0XG5cbmFuZCBodG1sX25vZGUgPVxuICB8IE5vZGUgb2Ygbm9kZW5hbWUgKiBhdHRyaWJ1dGVzICogaHRtbFxuICB8IERhdGEgb2Ygc3RyaW5nXG4gIHwgUmF3ZGF0YSBvZiBzdHJpbmdcbiAgfCBDb21tZW50IG9mIHN0cmluZ1xuXG5hbmQgbm9kZW5hbWUgPSBzdHJpbmdcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgYXR0cmlidXRlID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG5sZXQgdG9fc3RyaW5nIGh0bWwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcHAgZiA9IFByaW50Zi5icHJpbnRmIGIgZiBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgTm9kZShub2RlbmFtZSwgYXR0cmlidXRlcywgaHRtbCkgLT5cbiAgICAgIHBwIFwiPCVzXCIgbm9kZW5hbWU7XG4gICAgICBwcGEgYXR0cmlidXRlcztcbiAgICAgIHBwIFwiPlwiO1xuICAgICAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgICAgIHBwIFwiPC8lcz5cIiBub2RlbmFtZVxuICAgIHwgRGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBSYXdkYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IENvbW1lbnQgYyAtPiBwcCBcIjwhLS0gJXMgLS0+XCIgY1xuICBhbmQgcHBhIGF0dHJzID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICAgIGVsc2UgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcCBcIiAlcz1cXFwiXCIgYTtcbiAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdiAtIDEgZG9cbiAgICAgICAgICAgICAgICBtYXRjaCB2LltpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnXCInIC0+IHBwIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgICB8IGMgICAgLT4gcHAgXCIlY1wiIGNcbiAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgcHAgXCJcXFwiXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnNcbiAgaW5cbiAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmluY2x1ZGUgT21kX3JlcHJlc2VudGF0aW9uXG5pbmNsdWRlIE9tZF9iYWNrZW5kXG5cbmxldCBvZl9pbnB1dCBsZXggP2V4dGVuc2lvbnM6ZSA/ZGVmYXVsdF9sYW5nOmQgcyA9XG4gIGxldCBtb2R1bGUgRSA9IE9tZF9wYXJzZXIuRGVmYXVsdF9lbnYoc3RydWN0IGVuZCkgaW5cbiAgbGV0IG1vZHVsZSBQYXJzZXIgPSBPbWRfcGFyc2VyLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gbWF0Y2ggZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmV4dGVuc2lvbnNcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBtYXRjaCBkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZGVmYXVsdF9sYW5nXG4gICAgZW5kXG4gICkgaW5cbiAgbGV0IG1kID1cbiAgICBQYXJzZXIucGFyc2UgKGxleCBzKVxuICBpblxuICBQYXJzZXIubWFrZV9wYXJhZ3JhcGhzIG1kXG5cbmxldCBvZl9zdHJpbmcgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4XG5sZXQgb2ZfYmlnYXJyYXkgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4X2JpZ2FycmF5XG5cbmxldCB0b19odG1sIDpcbiAgP292ZXJyaWRlOihPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCAtPiBzdHJpbmcgb3B0aW9uKSAtPlxuICA/cGluZGVudDpib29sIC0+XG4gID9ubDJicjpib29sIC0+XG4gID9jczpjb2RlX3N0eWxpc3QgLT5cbiAgdCAtPlxuICBzdHJpbmdcbiAgPVxuICBodG1sX29mX21kXG5cbmxldCB0b190ZXh0IDogdCAtPiBzdHJpbmcgPSB0ZXh0X29mX21kXG5cbmxldCB0b19tYXJrZG93biA6IHQgLT4gc3RyaW5nID0gbWFya2Rvd25fb2ZfbWRcblxubGV0IGh0bWxfb2Zfc3RyaW5nIChodG1sOnN0cmluZykgOiBzdHJpbmcgPVxuICBodG1sX29mX21kIChPbWRfcGFyc2VyLmRlZmF1bHRfcGFyc2UgKE9tZF9sZXhlci5sZXggaHRtbCkpXG5cblxubGV0IHJlYyBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgPSBmdW5jdGlvblxuICB8IENvZGUoXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZShsYW5nLCBjb2RlKSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBDb2RlX2Jsb2NrKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGVfYmxvY2sobGFuZywgY29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBSZWN1cnNlIG9uIGFsbCBlbGVtZW50cyBldmVuIHRob3VnaCBjb2RlIChibG9ja3MpIGFyZSBub3QgYWxsb3dlZFxuICAgICBldmVyeXdoZXJlLiAqKVxuICB8IEgxIHQgOjogdGwgLT4gSDEoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgyIHQgOjogdGwgLT4gSDIoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgzIHQgOjogdGwgLT4gSDMoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg0IHQgOjogdGwgLT4gSDQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg1IHQgOjogdGwgLT4gSDUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg2IHQgOjogdGwgLT4gSDYoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFBhcmFncmFwaCB0IDo6IHRsIC0+IFBhcmFncmFwaChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEVtcGggdCA6OiB0bCAtPiBFbXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCb2xkIHQgOjogdGwgLT4gQm9sZChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWwgdCA6OiB0bCAtPiBVbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbCB0IDo6IHRsIC0+IE9sKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVscCB0IDo6IHRsIC0+IFVscChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2xwIHQgOjogdGwgLT4gT2xwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVcmwoaHJlZiwgdCwgdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLCBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCwgdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJsb2NrcXVvdGUgdCA6OiB0bCAtPiBCbG9ja3F1b3RlKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBFbGVtZW50cyB0aGF0IGRvIG5vdCBjb250YWluIE1hcmtkb3duLiAqKVxuICB8IChUZXh0IF98Q29kZSBffENvZGVfYmxvY2sgX3xCcnxIcnxOTHxSZWYgX3xJbWdfcmVmIF98UmF3IF98UmF3X2Jsb2NrIF9cbiAgICB8SHRtbCBffEh0bWxfYmxvY2sgX3xIdG1sX2NvbW1lbnQgX3xJbWcgX3xYIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgZSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBbXSAtPiBbXVxuXG5cbigqIFRhYmxlIG9mIGNvbnRlbnRzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEdpdmVuIGEgbGlzdCBvZiBoZWFkZXJzIOKAlCBpbiB0aGUgb3JkZXIgb2YgdGhlIGRvY3VtZW50IOKAlCBnbyB0byB0aGVcbiAgIHJlcXVlc3RlZCBzdWJzZWN0aW9uLiAgV2UgZmlyc3Qgc2VlayBmb3IgdGhlIFtudW1iZXJddGggaGVhZGVyIGF0XG4gICBbbGV2ZWxdLiAgKilcbmxldCByZWMgZmluZF9zdGFydCBoZWFkZXJzIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIG1hdGNoIGhlYWRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKEgxIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDIgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDMgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAzIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg0IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDUgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDYgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA2IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuXG5hbmQgZGVhbF93aXRoX2hlYWRlciBoX2xldmVsIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgaWYgaF9sZXZlbCA+IGxldmVsIHRoZW4gKCogU2tpcCwgcmlnaHQgW2xldmVsXS1oZWFkZXIgbm90IHlldCByZWFjaGVkLiAqKVxuICAgIGlmIG51bWJlciA9IDAgdGhlblxuICAgICAgKCogQXNzdW1lIGVtcHR5IHNlY3Rpb24gYXQgW2xldmVsXSwgZG8gbm90IGNvbnN1bWUgdG9rZW4uICopXG4gICAgICAobWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgIHwgW10gLT4gaGVhZGVycyAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCBoZWFkZXJzIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnMpXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBsZXZlbCB0aGVuIChcbiAgICAoKiBBdCBwcm9wZXIgW2xldmVsXS4gIEhhdmUgd2UgcmVhY2hlZCB0aGUgW251bWJlcl0gb25lPyAqKVxuICAgIGlmIG51bWJlciA8PSAxIHRoZW4gKFxuICAgICAgbWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgfCBbXSAtPiB0bCAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IHRsIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnNcbiAgICApXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIChudW1iZXIgLSAxKSBzdWJzZWN0aW9uc1xuICApXG4gIGVsc2UgKCogaF9sZXZlbCA8IGxldmVsICopXG4gICAgW10gKCogU291Z2h0IFtsZXZlbF0gaGFzIG5vdCBiZWVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHNlY3Rpb24gKilcblxuKCogQXNzdW1lIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGhlYWRlcnMgd2UgYXJlIGludGVyZXN0ZWQgaW4uXG4gICBSZXR1cm4gdGhlIGxpc3Qgb2YgVE9DIGVudHJpZXMgZm9yIFttaW5fbGV2ZWxdIGFuZCB0aGUgW2hlYWRlcnNdXG4gICBub3QgdXNlZCBmb3IgdGhlIFRPQyBlbnRyaWVzLiAqKVxubGV0IHJlYyBtYWtlX3RvYyAoaGVhZGVyczooZWxlbWVudCpzdHJpbmcqc3RyaW5nKWxpc3QpIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIG1pbl9sZXZlbCA+IG1heF9sZXZlbCB0aGVuIFtdLCBoZWFkZXJzXG4gIGVsc2UgKFxuICAgIG1hdGNoIGhlYWRlcnMgd2l0aFxuICAgIHwgW10gLT4gW10sIFtdXG4gICAgfCAoSDEgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDEgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgzIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAzIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDQgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDQgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg2IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA2IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIClcbmFuZCB0b2NfZW50cnkgaGVhZGVycyBoX2xldmVsIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgaF9sZXZlbCA+IG1heF9sZXZlbCB0aGVuICgqIHRvbyBkZWVwLCBza2lwICopXG4gICAgbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gIGVsc2UgaWYgaF9sZXZlbCA8IG1pbl9sZXZlbCB0aGVuXG4gICAgKCogc2VjdGlvbiB3ZSB3YW50ZWQgdGhlIFRPQyBmb3IgaXMgZmluaXNoZWQsIGRvIG5vdCBjb21zdW1lIHRoZSB0b2tlbiAqKVxuICAgIFtdLCBoZWFkZXJzXG4gIGVsc2UgaWYgaF9sZXZlbCA9IG1pbl9sZXZlbCB0aGVuIChcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvY19lbnRyeSA9IG1hdGNoIHN1Yl90b2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTF1cbiAgICAgIHwgXyAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTDsgVWwgc3ViX3RvYzsgTkxdIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICB0b2NfZW50cnkgOjogdG9jLCB0bFxuICApIGVsc2UgKCogaF9sZXZlbCA+IG1pbl9sZXZlbCAqKVxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIGhlYWRlcnMgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgW1VsIHN1Yl90b2NdIDo6IHRvYywgdGxcblxubGV0IHRvYyA/KHN0YXJ0PVtdKSA/KGRlcHRoPTIpIG1kID1cbiAgaWYgZGVwdGggPCAxIHRoZW4gaW52YWxpZF9hcmcgXCJPbWQudG9jOiB+ZGVwdGggbXVzdCBiZSA+PSAxXCI7XG4gIGxldCBoZWFkZXJzID0gT21kX2JhY2tlbmQuaGVhZGVyc19vZl9tZCB+cmVtb3ZlX2hlYWRlcl9saW5rczp0cnVlIG1kIGluXG4gIGxldCBoZWFkZXJzID0gbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgW10gLT4gaGVhZGVyc1xuICAgIHwgbnVtYmVyIDo6IHN1YnNlY3Rpb25zIC0+XG4gICAgICAgaWYgbnVtYmVyIDwgMCB0aGVuIGludmFsaWRfYXJnKFwiT21kLnRvYzogbGV2ZWwgMSBzdGFydCBtdXN0IGJlID49IDBcIik7XG4gICAgICAgZmluZF9zdGFydCBoZWFkZXJzIDEgbnVtYmVyIHN1YnNlY3Rpb25zIGluXG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBzdGFydCBpblxuICBsZXQgdG9jLCBfID0gbWFrZV90b2MgaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgfm1pbl9sZXZlbDoobGVuICsgMSkgfm1heF9sZXZlbDoobGVuICsgZGVwdGgpIGluXG4gIG1hdGNoIHRvYyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBfIC0+IFtVbCh0b2MpXVxuXG5sZXQgYWRkX3RvYyA/c3RhcnQgP2RlcHRoID90aXRsZSBtZCA9XG4gIGxldCB0b2MgPSB0b2MgP3N0YXJ0ID9kZXB0aCBtZCBpblxuICAoKiBSZXBsYWNlIFwiKlRhYmxlIG9mIGNvbnRlbnRzKlwiIHdpdGggdGhlIGFjdHVhbCBUT0MuICopXG4gIHRvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= diff --git a/projectors/worker.js b/projectors/worker.js index ffe91f97..4d7990bd 100644 --- a/projectors/worker.js +++ b/projectors/worker.js @@ -316834,7 +316834,7 @@ f!=="number"&&3===f[0]){/*<>*/ /*<>*/e(z[29],j[3],f[1]);/*<>*/return/*<>*/e(dA[10][2],m,function(a){/*<>*/return a[2]/*<>*/})}break a;default:break a}/*<>*/ /*<>*/var k=/*<>*/e(z[33],h,g);/*<>*/return/*<>*/e(dA[10][2],k,function(a){/*<>*/return a[2]/*<>*/})}/*<>*/return 0/*<>*/}],"Haz3lcore__Info");return/*<>*/}(globalThis)); -//# 5933 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5904 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var Y="src/haz3lcore/prog/CoreSettings.re.t",h="@ ",L="<2>",F="show_hidden_steps",G="show_casts",X=125,n=" =",W="%a",V="{ ",E="elaborate",C="show_fn_bodies",D="statics",B="assist",A="show_fixpoints",K=963043957,o="%B",m="",z="show_lookup_steps",y="dynamics",p=";@ ",U="@[<2>{ ",x="evaluation",T="src/haz3lcore/prog/CoreSettings.re.Evaluation.t",l="@]",v="show_settings",w="show_stepper_filters",S="@ }@]",k="@[%s =@ ",u="show_case_clauses",R=143,t="stepper_history",e=139,s=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -316889,13 +316889,13 @@ u=/*<>*/c(b[2],d);/*<>*/c(b[2],n);/*<>*/return/*<>*/j(q[11],J,v,a)}/*<>*/var/*<>*/e=/*<>*/c(b[2],h),/*<>*/o=/*<>*/c(b[2],i),/*<>*/p=/*<>*/c(b[2],k),/*<>*/s=/*<>*/c(b[2],l),/*<>*/t=/*<>*/c(b[2],m);if(e&&o&&p&&s&&t)/*<>*/return[0,e[1],o[1],p[1],s[1],t[1]];/*<>*/var/*<>*/w=[0,[0,0===/*<>*/c(b[2],m)?1:0,b3],0],/*<>*/z=[0,[0,0===/*<>*/c(b[2],l)?1:0,b4],w],/*<>*/A=[0,[0,0===/*<>*/c(b[2],k)?1:0,b5],z],/*<>*/C=[0,[0,0===/*<>*/c(b[2],i)?1:0,b6],A],/*<>*/F=[0,[0,0===/*<>*/c(b[2],h)?1:0,b7],C];/*<>*/return/*<>*/j(q[13],J,a,F)}/*<>*/return/*<>*/f(q[14],J,a)},function(a){/*<>*/var b=a[4],d=a[3],e=a[2],f=a[1],h=[0,[0,b8,c(r[6],a[5])],0],i=[0,[0,b9,c(g[45][2],b)],h],j=[0,[0,b_,c(g[45][2],d)],i],k=[0,[0,b$,c(g[45][2],e)],j];/*<>*/return[0,K,[0,[0,ca,c(g[45][2],f)],k]]/*<>*/},[0,0,0,0,0,r[7]],[0,1,1,1,1,r[7]]],"Haz3lcore__CoreSettings");return/*<>*/}(globalThis)); -//# 5999 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5970 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,d=c.caml_compare;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var b=c.caml_get_global_data().Stdlib__Set,f=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]),g=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]),h=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]);c.caml_register_global(1,[0,f,g,h,e(b[1],[0,function(a,b){/*<>*/return d(a,b)}])],"Haz3lcore__Sets");return/*<>*/}(globalThis)); -//# 6006 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5977 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime,H=i.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -316943,7 +316943,7 @@ a!=="number")switch(a[0]){case 5:/*<>*/return 1}/*<>*/return 0/*<>*/},b),v=m[1];if(!m[2])/*<>*/return s(v);b=/*<>*/c(h[37],m[2],v)}}/*<>*/}i.caml_register_global(9,[0,q,r,s,j,function(a,b){/*<>*/var/*<>*/c=/*<>*/e(g[9],b),/*<>*/d=/*<>*/e(g[7],c);/*<>*/return j([0,[6,/*<>*/e(g[8],a),d],0])/*<>*/},function(a){/*<>*/ /*<>*/var b=/*<>*/e(g[8],a);/*<>*/return j([0,/*<>*/e(g[7],b),0])/*<>*/}],"Haz3lcore__Incon");return/*<>*/}(globalThis)); -//# 6210 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6188 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cp=203,ax=191,aw=188,Y=187,d="$Meta",o=a.jsoo_runtime,cn=o.caml_equal;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -317192,7 +317192,7 @@ var l=j;/*<>*/return[0,l,[0,f,a]]/*<>*/}/*<>*/var Z=/*<>*/j(V[1],0,U,function(a,b){/*<>*/return O(a,0,0,0,b,v[15][1])[2]/*<>*/});o.caml_register_global(64,[0,[0,e,function(a){/*<>*/return/*<>*/j(D[143],C,e,a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][45],n[171],a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][44],n[172],a)/*<>*/},function(a){/*<>*/return h(v[15][47],n[173],a)},function(a){/*<>*/return h(v[15][46],n[174],a)},function(a){/*<>*/return/*<>*/j(v[15][24],function(a,b,c){/*<>*/var/*<>*/d=/*<>*/i(n[197],b),/*<>*/e=d?/*<>*/cn(a,/*<>*/i(n[185],b)):d;return e?[0,a,c]:c/*<>*/},a,0)/*<>*/}],J,G,g,ay,f,p,q,az,aA,w,K,O,P,u,A,x,function(a,b,c){/*<>*/ /*<>*/i(s[46],_);return a[1]?/*<>*/h(Z,b,c):v[15][1]/*<>*/},function(a){/*<>*/return/*<>*/j(v[15][24],function(d,b,c){/*<>*/var/*<>*/a=/*<>*/i(n[186],b),/*<>*/e=/*<>*/i(/*<>*/i(y[7],function(a){/*<>*/return[0,d,a]/*<>*/}),a),/*<>*/f=/*<>*/i(y[15],e);/*<>*/return/*<>*/h(s[37],f,c)/*<>*/},a,0)/*<>*/}],"Haz3lcore__Statics");return/*<>*/}(globalThis)); -//# 6773 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6714 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -317200,13 +317200,13 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__MetaVar");return/*<>*/}(globalThis)); -//# 6822 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6763 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;/*<>*/function f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var e=d.caml_get_global_data(),c=e.Haz3lcore__Typ,b=e.Haz3lcore__VarMap;d.caml_register_global(2,[0,function(a){/*<>*/return/*<>*/f(b[3],c[13],a)/*<>*/},function(a){/*<>*/return/*<>*/f(b[4],c[11],a)/*<>*/},b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18]],"Haz3lcore__VarCtx");return/*<>*/}(globalThis)); -//# 6829 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6770 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ad="src/haz3lcore/dynamics/VarBstMap.re.Inner.binding",v="<2>",r="@ ",o="rev_order",_=" =",ac="%a",ab="src/haz3lcore/dynamics/VarBstMap.re.Ordered.t_",D="",aa=963043957,n="map",Z=";@ ",Y="@]",$="@[%s =@ ",X=143,j=139,w=848054398,l=a.jsoo_runtime,W=l.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -317294,7 +317294,7 @@ e=a[1],/*<>*/b=/*<>*/c=s(e,b);return c?[0,b,c[1]]:u(0)/*<>*/}),b)/*<>*/},function(a){/*<>*/var/*<>*/b=S(a),/*<>*/c=/*<>*/d(/*<>*/d(f[20],function(a){/*<>*/return[0,a[1],0]/*<>*/}),a);/*<>*/return[0,b,/*<>*/d(f[10],c)]/*<>*/},function(c,b){/*<>*/return V(function(a){/*<>*/var b=a[1];/*<>*/return 1-/*<>*/e(f[34],function(a){/*<>*/return a==b?1:0/*<>*/},c)/*<>*/},b)/*<>*/}]],"Haz3lcore__VarBstMap");return/*<>*/}(globalThis)); -//# 6918 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6859 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="NotInHole",I="<2>",H="%a",n="TypeInconsistent",o="InHole",G="inHole",F="@,",m="WrongLength",E="src/haz3lcore/dynamics/ErrStatus.re.HoleReason.t",C="notInHole",D=143,w=139,g=848054398,i=-976970511,B="src/haz3lcore/dynamics/ErrStatus.re.t",A="typeInconsistent",z="wrongLength",h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -317334,7 +317334,7 @@ m=k[2];if(m&&!m[2]){/*<>*/var r=m[1],/*<>*/t=/*<>*/d(j[5],k[1]);/*<>*/return[0,t,/*<>*/d(s[5],r)]}}/*<>*/return/*<>*/u(e[4],l,h,a)}if(h===p)return b[2]?/*<>*/c(e[3],l,a):0}else if(g===q)/*<>*/return/*<>*/c(e[6],l,a)}}}/*<>*/return/*<>*/c(e[8],l,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return Y;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(j[6],a[1]);/*<>*/return[0,g,[0,X,[0,c,[0,/*<>*/d(s[6],b),0]]]]/*<>*/}],"Haz3lcore__ErrStatus");return/*<>*/}(globalThis)); -//# 6959 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6900 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -317342,7 +317342,7 @@ k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] b=e.caml_get_global_data(),d=b.Stdlib__Format,f=b.Sexplib__Std,g=b.Ppx_yojson_conv_lib__Yojson_conv,h=[0,[4,0,0,0,0],"%d"],i=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/j(d[139],a,h)/*<>*/}e.caml_register_global(5,[0,c,function(a){/*<>*/return/*<>*/k(d[143],i,c,a)/*<>*/},f[16],f[15],g[45][22],g[45][6]],"Haz3lcore__MetaVarInst");return/*<>*/}(globalThis)); -//# 6968 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6909 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aq="listLit",$="%S",N="BoolLit",ay="boolLit",ap="ap",M="Var",ao="badConstructor",L="StringLit",ae="@[<2>[",b="<2>",n="@ ",ax="stringLit",G="@])",K="Constructor",W="Cons",S="NonEmptyHole",v=",@ ",aw="intLit",t="@,",av="tuple",ad="@,]@]",V="Ap",F="))",au="var",as="constructor",at="nonEmptyHole",U="InvalidText",an="emptyHole",ac=";@ ",T="EmptyHole",R="BadConstructor",am="wild",J="FloatLit",al="cons",af="src/haz3lcore/dynamics/DHPat.re.t",I="@,))@]",g=139,Q="ListLit",r=-976970511,s=848054398,H="Tuple",P="Wild",ak="floatLit",E="IntLit",ar="invalidText",D=a.jsoo_runtime,C=D.caml_string_compare,aa=D.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):D.caml_call_gen(a,[b])}/*<>*/function @@ -317530,11 +317530,11 @@ f=b[1],/*<>*/g=Z(b[2]),/*<>*/d(x[20],Z,b[1]);/*<>*/return/*<>*/c(x[15],i);case 13:b=b[2];continue}/*<>*/return 0}/*<>*/}D.caml_register_global(188,[0,w,function(a){/*<>*/return/*<>*/i(f[143],bk,w,a)/*<>*/},y,z,A,B,function(a){/*<>*/if(a&&a[2])/*<>*/return[11,a];/*<>*/return/*<>*/c(ab[2],bR)/*<>*/},_,Z],"Haz3lcore__DHPat");return/*<>*/}(globalThis)); -//# 7157 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7098 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id;c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20]],"Haz3lcore__EnvironmentId");return/*<>*/}(globalThis)); -//# 7162 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7103 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -317542,7 +317542,7 @@ k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] b=e.caml_get_global_data(),d=b.Stdlib__Format,f=b.Sexplib__Std,g=b.Ppx_yojson_conv_lib__Yojson_conv,h=[0,[4,0,0,0,0],"%d"],i=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/j(d[139],a,h)/*<>*/}e.caml_register_global(5,[0,c,function(a){/*<>*/return/*<>*/k(d[143],i,c,a)/*<>*/},f[16],f[15],g[45][22],g[45][6]],"Haz3lcore__HoleInstanceId");return/*<>*/}(globalThis)); -//# 7171 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7112 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="invalidOfString",w="negativeExponent",v="indexOutOfBounds",n="NegativeExponent",m="OutOfFuel",l="DivideByZero",u="src/haz3lcore/dynamics/InvalidOperationError.re.t",t="outOfFuel",k="InvalidOfString",s="divideByZero",j=-976970511,g=848054398,i="IndexOutOfBounds",o=a.jsoo_runtime,r=o.caml_string_compare;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):o.caml_call_gen(a,[b,c])}/*<>*/function @@ -317576,7 +317576,7 @@ f=h[2];if(f===l)return e[2]?/*<>*/return Q;case 3:/*<>*/return R;default:/*<>*/return S}/*<>*/}],"Haz3lcore__InvalidOperationError");return/*<>*/}(globalThis)); -//# 7206 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7147 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -317584,7 +317584,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__KeywordID");return/*<>*/}(globalThis)); -//# 7215 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7156 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -317603,7 +317603,7 @@ b=e[1];if(!b)/*<>*/return/*<>*/j=/*<>*/d(f[2],a),/*<>*/g=/*<>*/h(f[15][18],j,i),k=g?g[1]:/*<>*/d(o[2],n);/*<>*/return/*<>*/d(c,k)/*<>*/}]/*<>*/},function(c,b){/*<>*/return[0,function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(c,a);e[1]=[0,f[15][1]];/*<>*/var/*<>*/b=/*<>*/d(c,a),/*<>*/g=[0,b,/*<>*/d(p[4],e[1])];e[1]=0;/*<>*/return m(g)/*<>*/},function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(b,a);/*<>*/var/*<>*/c=k(a),f=c[1];e[1]=[0,c[2]];/*<>*/ /*<>*/var g=/*<>*/d(b,f);e[1]=0;/*<>*/return g/*<>*/}]/*<>*/}],"Haz3lcore__StructureShareSexp");return/*<>*/}(globalThis)); -//# 7235 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7176 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cf="sequence",ae="BoolLit",cK="src/haz3lcore/dynamics/DH.re.if_consistency",b3="boolLit",b4="src/haz3lcore/dynamics/DH.re.DHFilter.t",ay="Prj",cr="rule",ce="binBoolOp",ag="StringLit",cJ="listConcat",l="@ ",aZ="Rule",cI="invalidOperation",b2="case",b1="stringLit",b0="boundVar",cd="typAp",cH="builtinFun",ad="BuiltinFun",aM="InvalidOperation",ah="Constructor",Z="%a",bZ="test",aL="Cons",cG="apBuiltin",cq="fixF",cc="intLit",aC="FreeVar",m="@,",cF="inconsistentBranches",aJ="IfThenElse",aK="FixF",ac="ConsistentCase",bY="tuple",cp="typFun",bX="fun",am="Sequence",S="Filter",ax="Ap",aB="BinFloatOp",cE=963043957,bW="nonEmptyHole",aA="TypFun",cD="constructor",aI="InvalidText",aw="EmptyHole",av="Closure",aX="Residue",aa="FloatLit",al="Fun",co="ifThenElse",bU="@[%s =@ ",cC="failedCast",aH="BinBoolOp",A="@,))@]",n=848054398,af="Tuple",p=-976970511,bg="filter",cA="closure",cB="consistentIf",bf="src/haz3lcore/dynamics/DH.re",au="FailedCast",cn="invalidText",b$="cast",ca="listLit",cb="src/haz3lcore/dynamics/DH.re.ClosureEnvironment.Inner.t",a8="%S",ak="pat",cm="consistentCase",bd="%d",bV="ap",at="BinStringOp",cl=")",bc="@[<2>[",cz="binStringOp",b="<2>",cj="freeVar",ck="src/haz3lcore/dynamics/DH.re.DHExp.case",cy="(Some ",b_="binIntOp",ar="BinIntOp",as="ApBuiltin",ci=" =",U="@])",cx="prj",aG="InconsistentBranches",b9="let",aq="Cast",ab="BoundVar",aF="NonEmptyHole",aY="ConsistentIf",o=",@ ",aV="Case",ap="ListConcat",aE="Test",be="@,]@]",cw="src/haz3lcore/dynamics/DH.re.Filter.t",b8="src/haz3lcore/dynamics/DH.re.DHExp.t",B="))",az="act",bu="",ch="inconsistentIf",b7="emptyHole",ao="Let",a9=";@ ",cv="None",cu="@]",b6="binFloatOp",cg="cons",ct="src/haz3lcore/dynamics/DH.re.DHExp.rule",an="TypAp",Y=143,g=139,aD="ListLit",$="IntLit",b5="residue",aW="InconsistentIf",cs="floatLit",X=a.jsoo_runtime,I=X.caml_equal,M=X.caml_string_compare,R=X.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):X.caml_call_gen(a,[b])}/*<>*/function @@ -318526,15 +318526,15 @@ c=g===b[1]?1:0,h=b[2],i=c?/*<>*/I(f,h):c;/* bS=[];function bT(c,b){/*<>*/ /*<>*/e(f[g],c,it);/*<>*/ /*<>*/h(J[26],function(a,b){/*<>*/if(a)/*<>*/ /*<>*/e(f[g],c,iu);/*<>*/ /*<>*/d(d(bS[1],c),b);/*<>*/return 1/*<>*/},0,b);/*<>*/return/*<>*/e(f[g],c,iv)/*<>*/}R(bS,[0,N[1]]);h(_[2],ix,bx,[0,bT,function(a){/*<>*/return/*<>*/h(f[Y],iw,bT,a)/*<>*/},function(a){/*<>*/return/*<>*/e(z[40],N[3],a)/*<>*/},function(a){/*<>*/return/*<>*/e(z[39],N[4],a)/*<>*/},function(a){/*<>*/return e(y[45][30],N[5],a)},function(a){/*<>*/return e(y[45][14],N[6],a)},function(a,b){/*<>*/return[0,a,b]/*<>*/}]);X.caml_register_global(634,[0,bh,function(a){/*<>*/return/*<>*/h(f[Y],cN,bh,a)/*<>*/},bF,bv,bH,bw,P,H,ai,N,V,bx],"Haz3lcore__DH");return/*<>*/}(globalThis)); -//# 8159 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8100 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[7];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26]],"Haz3lcore__DHExp");return/*<>*/}(globalThis)); -//# 8164 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8105 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[8];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__Environment");return/*<>*/}(globalThis)); -//# 8169 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8110 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ae="invalidBoxedBoolLit",ad="invalidBuiltin",P="%S",al="invalidBoxedFloatLit",ak="freeInvalidVar",Q="src/haz3lcore/dynamics/EvaluatorError.re.t",aj="invalidBoxedTuple",D="InvalidBoxedFun",e="<2>",o="@ ",H="CastBVHoleGround",ac="stepDoesNotMatch",C="InvalidBoxedStringLit",G="InvalidBoxedBoolLit",q="@])",ai="invalidBoxedListLit",I="BadPatternMatch",ah="invalidBoxedTypFun",N="@,",F="InvalidBoxedListLit",L="OutOfFuel",aa="invalidProjection",ab="badPatternMatch",B="InvalidBoxedTuple",E="InvalidBoxedIntLit",_="outOfFuel",$="badBuiltinAp",A="InvalidProjection",ag="invalidBoxedStringLit",z="FreeInvalidVar",K="BadBuiltinAp",Z="invalidBoxedIntLit",y="InvalidBuiltin",af="invalidBoxedFun",Y="castBVHoleGround",g=139,m=-976970511,n=848054398,w="InvalidBoxedFloatLit",x="InvalidBoxedTypFun",J="StepDoesNotMatch",u=a.jsoo_runtime,v=u.caml_string_compare;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):u.caml_call_gen(a,[b])}/*<>*/function @@ -318649,7 +318649,7 @@ a==="number")switch(a){case 11:/*<>*/var e=a[2],/*<>*/f=/*<>*/c(s[45][3],a[1]);/*<>*/return[0,n,[0,bj,[0,f,[0,d(s[45][14],b[13],e),0]]]];default:/*<>*/return[0,n,[0,bk,[0,/*<>*/c(s[45][6],a[1]),0]]]}/*<>*/},[248,bl,u.caml_fresh_oo_id(0)]],"Haz3lcore__EvaluatorError");return/*<>*/}(globalThis)); -//# 8290 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8231 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="<2>",ag="int_of_string",M="@ ",J="Const",$="string_sub",L="%a",I=",@ ",af="mod",B="@,",K="Fn",_="))",ae="",ad="$Meta",Z="bool_of_string",H=143,ac="@,))@]",s=139,Y="float_of_string",ab="fn",aa="const",j=a.jsoo_runtime,X=j.caml_maybe_attach_backtrace,G=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -318736,11 +318736,11 @@ b=a[2],c=a[1];return 0===b[0]?[0,[0,c,z[16],b[1]]]:[0,[0,c,z[16],[3,b[1],b[2]]]] b=a[2],c=a[1];return 0===b[0]?0:[0,[0,c,b[3]]]/*<>*/},y[2]);j.caml_register_global(90,[0,C,function(a){/*<>*/return/*<>*/r(i[H],ap,C,a)/*<>*/},N,O,P,function(a){/*<>*/return/*<>*/r(i[H],as,P,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],N,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],O,a)/*<>*/},R,function(a){/*<>*/return/*<>*/r(i[H],au,R,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],v[48],a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],function(a){/*<>*/return d(v[24],function(a){/*<>*/return 0})},a)/*<>*/},m,c,y,d_,d$,/*<>*/r(u[26],function(a,b){/*<>*/var d=b[2],c=b[1];return 0===d[0]?/*<>*/f(F[10],a,[0,c,d[2]]):/*<>*/f(F[10],a,[0,c,[16,c]])/*<>*/},F[7],y[2])],"Haz3lcore__Builtins");return/*<>*/}(globalThis)); -//# 8378 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8319 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[9];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__ClosureEnvironment");return/*<>*/}(globalThis)); -//# 8383 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8324 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a6="sequence2",a7="consistentCaseRule",a5="let1",ae="Prj",an="BinFloatOp1",aY="mark",al="Ap1",am="Let1",m="@ ",be="let2",bu="invalidOperation",bv="ap2",bL="case",V="IfThenElse3",bd="binIntOp1",bK="boundVar",a4="typAp",bc="ifThenElse2",bO="src/haz3lcore/dynamics/EvalCtx.re.cls",av="InvalidOperation",bt="%a",aX="test",aJ="FailedCastCast",bs="apBuiltin",U="BinStringOp1",bb="fixF",ad="BinStringOp2",p="@,",br="inconsistentBranches",au="FixF",M="ConsistentCase",aV="tuple",aW="sequence1",aU="fun",T="Filter",ac="Ap2",ab="Cons1",bp="ifThenElse3",bq="binFloatOp2",aT="nonEmptyHole",bo="binStringOp2",S="IfThenElse1",at="Let2",aa="Closure",bn="(@[",R="Fun",a3="binBoolOp1",ak="ListConcat2",bm="failedCast",Q="ListConcat1",C="@,))@]",bP="failedCastCast",bl="listConcat2",as="IfThenElse2",n=-976970511,l=848054398,N="Tuple",bk="filter",bj="closure",$="FailedCast",bN="src/haz3lcore/dynamics/EvalCtx.re.case",a1="listLit",a2="cast",ba="consistentCase",aE="%d",P="BinIntOp1",a$="binIntOp2",az="@[<2>[",aj="BinBoolOp1",j="<2>",aS="cons1",bJ="src/haz3lcore/dynamics/EvalCtx.re.t",L="InconsistentBranchesRule",_="ApBuiltin",ar="BinIntOp2",ay="@])",bi="prj",aK="FilterPattern",aq="InconsistentBranches",aI="BoundVar",Z="Cast",ap="NonEmptyHole",q=",@ ",aH="Case",bh="listConcat1",ao="Test",Y="BinFloatOp2",aA="@,]@]",a_="binBoolOp2",a0="ap1",ai="BinBoolOp2",X="Mark",a9="binFloatOp1",ah="Sequence1",bg="ifThenElse1",D="))",bf="",bM="filterPattern",aB=";@ ",a8="binStringOp1",ag="Sequence2",aZ="cons2",W="TypAp",aR=143,K="ConsistentCaseRule",g=139,O="ListLit",aQ="inconsistentBranchesRule",af="Cons2",aC=a.jsoo_runtime,iF=aC.caml_maybe_attach_backtrace,r=aC.caml_string_compare,aD=aC.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):aC.caml_call_gen(a,[b])}/*<>*/function @@ -319756,7 +319756,7 @@ e!=="number"&&0===e[0]){e=e[2];continue}if(typeof b==="number"&&32===b)/*<>*/return[0,e];if(typeof e==="number")/*<>*/return 0;if(32===e[0]){e=e[1];continue}}/*<>*/return 0}/*<>*/}],"Haz3lcore__EvalCtx");return/*<>*/}(globalThis)); -//# 9400 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9341 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="called matches_cast_Cons with non-list pattern",d="src/haz3lcore/dynamics/PatternMatch.re",j=a.jsoo_runtime,U=j.caml_maybe_attach_backtrace,r=j.caml_trampoline,T=j.caml_trampoline_return;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -320126,7 +320126,7 @@ w!=="number")switch(w[0]){case 4:case 32:/*<>*/return 1;default:/*<>*/return 0}/*<>*/}j.caml_register_global(19,[0,e],"Haz3lcore__PatternMatch");return/*<>*/}(globalThis)); -//# 9771 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9712 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e="Pass",t="pass",s="src/haz3lcore/dynamics/TestStatus.re.t",d="Indet",b="Fail",r="fail",q="indet",n=-976970511,j=848054398,m=a.jsoo_runtime;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function @@ -320155,7 +320155,7 @@ k=h[2];if(k===b)return f[2]?/*<>*/c(i[ 0:/*<>*/return E;case 1:/*<>*/return F;default:/*<>*/return G}/*<>*/},p,/*<>*/c(H[26],p,0)],"Haz3lcore__TestStatus");return/*<>*/}(globalThis)); -//# 9801 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9742 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var W="@[<2>[",p="<2>",q="@ ",U="src/haz3lcore/dynamics/TestMap.re.instance_report",V="@])",z="%a",T=",@ ",S="@,",R="@,]@]",P="src/haz3lcore/dynamics/TestMap.re.report",Q="",O=";@ ",N="(@[",y=143,o=848054398,f=139,j=a.jsoo_runtime,x=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -320202,7 +320202,7 @@ d=/*<>*/c(M,a,b);return d?t(d[1]):2/*<>*/f=/*<>*/c(g[50],d,b);if(!f)/*<>*/return/*<>*/c(w[37],b,[0,[0,d,[0,e,0]],0]);/*<>*/var/*<>*/h=[0,[0,d,/*<>*/c(w[37],f[1],[0,e,0])],0],/*<>*/i=/*<>*/c(g[55],d,b);/*<>*/return/*<>*/c(w[37],i,h)/*<>*/},g[1],function(e,b){/*<>*/ /*<>*/var a=/*<>*/c(g[44],function(a){/*<>*/return e===t(a[2])?1:0/*<>*/},b);/*<>*/return/*<>*/d(g[1],a)/*<>*/}],"Haz3lcore__TestMap");return/*<>*/}(globalThis)); -//# 9849 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9790 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aM="fixUnwrap",a1="sequence",a2="completeFilter",Q="FunClosure",a0="binBoolOp",aZ="listConcat",P="@ ",ai="NotGroundOrHole",aL="completeClosure",aK="builtinWrap",$="FixClosure",aY="caseNext",aJ="letBind",aX="ground",aI="notGroundOrHole",_="Skip",z="BuiltinAp",Z="UpdateTest",aH="listCons",N="ListCons",O="Sequence",M="VarLookup",y="BinFloatOp",aG="updateTest",L="CastTypAp",aF="castAp",aE="castTypAp",K="TypFunAp",D="BinBoolOp",aD="invalidStep",aW="builtinAp",k=-976970511,l=848054398,Y="CompleteFilter",ak="Ground",aV="hole",aU="cast",aT="varLookup",J="CaseNext",aS="src/haz3lcore/dynamics/Transition.re.step_kind",aC="skip",C="BinStringOp",aR="binStringOp",r="<2>",aB="conditional",aA="fixClosure",I="FunAp",aQ="binIntOp",B="BinIntOp",H="@])",az="typFunAp",X="CompleteClosure",W="Cast",V="ListConcat",ay="funClosure",aP="caseApply",U="CaseApply",ax=">",S="BuiltinWrap",T="InvalidStep",R="LetBind",aw="projection",F="Projection",G="FixUnwrap",aO="binFloatOp",aj="Hole",av="funAp",A="Conditional",q=139,E="CastAp",aN="@<",s=a.jsoo_runtime,p=s.caml_maybe_attach_backtrace,n=s.caml_string_compare;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -320553,7 +320553,7 @@ b==="number")switch(b){case 18:case 19:/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Transition");return/*<>*/}(globalThis)); -//# 10201 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10142 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,G=f.caml_maybe_attach_backtrace;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -320602,7 +320602,7 @@ h=/*<>*/g(B[16],b,f);e=/*<>*/g(n[28],C,c);/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/G([0,D[7],[0,c]],1)/*<>*/}),h)}/*<>*/}var F=0;f.caml_register_global(16,[0,c,i,function(a,b){/*<>*/return l(A,a,b)},function(a,b){/*<>*/return m(F,a,b)}],"Haz3lcore__ValueChecker");return/*<>*/}(globalThis)); -//# 10617 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10558 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="passing",A="total",l=" ",F="%d",V=" are ",w="test_map",Q="@[<2>[",B="<2>",d="@ ",v=" =",U="src/haz3lcore/dynamics/TestResults.re.t",u="unfinished",P="%d are %s ",T="@,",G="and ",O="@,]@]",z="statuses",S="one is ",t="",R=963043957,o=";@ ",s="@]",L="All ",y="@[%s =@ ",x="descriptions",f=139,K="One ",q="failing",r=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):r.caml_call_gen(a,[b])}/*<>*/function @@ -320635,7 +320635,7 @@ I=/*<>*/c(b[2],t);/*<>*/return[0,R,[0,[0,ba,c(n[19],j)],q]]/*<>*/},function(a,b){/*<>*/var d=a?a[1]:0,/*<>*/e=/*<>*/i(n[25],2,b),/*<>*/f=/*<>*/i(n[25],1,b),/*<>*/g=/*<>*/i(n[25],0,b),/*<>*/h=/*<>*/c(n[24],b);/*<>*/return[0,b,/*<>*/c(/*<>*/c(I[20],function(a){/*<>*/return c(n[7],a[2])/*<>*/}),b),d,h,g,f,e]/*<>*/},N,function(a){/*<>*/return N(a[4],a[6],a[7],bL,bK,bJ,bI,bH)/*<>*/}],"Haz3lcore__TestResults");return/*<>*/}(globalThis)); -//# 10679 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10620 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -320706,7 +320706,7 @@ t(i,h,c){/*<>*/var/*<>*/k=10===c[0]?/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},c),b):c,/*<>*/l=[0,j,d(i,h,k)];/*<>*/return/*<>*/f(g[10],b,l)/*<>*/},g[7]),b);/*<>*/return/*<>*/f(k[7],a,j)/*<>*/}function u(f,b,c){/*<>*/return/*<>*/e(/*<>*/e(n[11][9],function(a){/*<>*/return d(f,b,a)}),c)/*<>*/}h.caml_register_global(6,[0,d,function(a,b){/*<>*/return/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},b),a)/*<>*/}],"Haz3lcore__Substitution");return/*<>*/}(globalThis)); -//# 10751 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10692 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var r="@ ",s="<2>",d="step",q=963043957,j=139,p="src/haz3lcore/dynamics/EvaluatorStats.re.t",h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -320725,7 +320725,7 @@ o=/*<>*/c(b[2],h);/*<>*/c(b[2],e);if(j)/*<>*/return[0,j[1]];/*<>*/ /*<>*/var p=[0,[0,0===/*<>*/c(b[2],e)?1:0,E],0];/*<>*/return/*<>*/i(l[13],k,a,p)}/*<>*/return/*<>*/g(l[14],k,a)/*<>*/},function(a){/*<>*/return[0,q,[0,[0,F,c(m[45][6],a[1])],0]]/*<>*/},G,function(a){/*<>*/return[0,a[1]+1|0]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return[0,a]/*<>*/}],"Haz3lcore__EvaluatorStats");return/*<>*/}(globalThis)); -//# 10771 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10712 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="@ ",y="<2>",k="tests",x=" =",j="stats",v=963043957,w="",u="@]",s="@[%s =@ ",t="src/haz3lcore/dynamics/EvaluatorState.re.t",i=139,h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -320749,15 +320749,15 @@ b=a[2];/*<>*/return[0,/*<>*/return[0,/*<>*/d(c[10],a),e]/*<>*/},function(a,b,c){/*<>*/var e=a[2],/*<>*/g=/*<>*/d(/*<>*/d(f[23],[0,b,c]),e);/*<>*/return[0,a[1],g]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},function(a,b){/*<>*/return[0,b[1],a]/*<>*/}],"Haz3lcore__EvaluatorState");return/*<>*/}(globalThis)); -//# 10796 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10737 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[10];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10]],"Haz3lcore__Filter");return/*<>*/}(globalThis)); -//# 10801 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10742 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[12];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7]],"Haz3lcore__FilterEnvironment");return/*<>*/}(globalThis)); -//# 10806 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10747 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a$="$e",d="__mutual__",a_="$v",f=a.jsoo_runtime,b=f.caml_equal,M=f.caml_maybe_attach_backtrace,g=f.caml_trampoline,v=f.caml_trampoline_return,N=f.caml_wrap_exception;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -321004,7 +321004,7 @@ p(a,b,c){/*<>*/return w(a,b,a,c[1 g=d,f=e;/*<>*/for(;;){if(!g)/*<>*/return[0,c,f];/*<>*/var i=g[2],/*<>*/h=p(a,b,g[1]);if(h)/*<>*/return[0,h[1],f];g=i;f=f+1|0}/*<>*/}(a,b,c,d,0);/*<>*/return[0,e[1],f-e[2]|0]/*<>*/}],"Haz3lcore__FilterMatcher");return/*<>*/}(globalThis)); -//# 11054 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10995 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="<2>",i="@ ",al=125,o="knd",p="d_loc",C="d",u=" =",ao="%a",ak="{ ",t="",B="env",aj="src/haz3lcore/dynamics/EvaluatorStep.re.EvalObj.t",L=963043957,A=";@ ",an="@[<2>{ ",s="@]",am="@ }@]",v="@[%s =@ ",ai=143,z="state",d=139,m="ctx",ah="src/haz3lcore/dynamics/EvaluatorStep.re.step",y=a.jsoo_runtime,af=y.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -321270,7 +321270,7 @@ d=ae(h,a);if(!d)/*<>*/return 0;/ b=d[1][2],/*<>*/e=/*<>*/f(ac,i,b[1],b[2]);if(!e)/*<>*/return 0;/*<>*/ /*<>*/var g=n(b[3],e[1]);/*<>*/return[0,g,c(g)]/*<>*/}/*<>*/return c(b)/*<>*/}],"Haz3lcore__EvaluatorStep");return/*<>*/}(globalThis)); -//# 11321 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11262 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aD="src/haz3lcore/dynamics/Stepper.re.persistent",ax="stepPending",L="StepTimeout",aw="stepTimeout",ac="@[<2>[",n="<2>",e="@ ",av=125,D=" =",au="src/haz3lcore/dynamics/Stepper.re.t",ad="%a",at="{ ",T=",@ ",G="@,",q="elab",ab="@,]@]",J="StepperOK",m="current",C="next",ar="))",as="list manipulation",z="",U=963043957,o="previous",y=";@ ",aC="@[<2>{ ",B="@]",aB="@ }@]",F="@[%s =@ ",aa=143,aA="@,))@]",d=139,O=-976970511,E=848054398,az="src/haz3lcore/dynamics/Stepper.re.current",ay="stepperOK",K="StepPending",t=a.jsoo_runtime,cE=t.caml_maybe_attach_backtrace,$=t.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):t.caml_call_gen(a,[b])}/*<>*/function @@ -321518,7 +321518,7 @@ d=a[2];if(typeof b!=="number"&&0!==b[0]){if(b[3])/*<>*/return[0,c,d,[1,b[1],b[2],0]];break a}}/*<>*/return[0,c,a[2],a[3]]/*<>*/},function(a,b){/*<>*/var c=b[3],d=b[2],e=b[1],/*<>*/f=ak([0,e,d,c,0]);/*<>*/return[0,e,d,c,/*<>*/h(p[18],a,f)]/*<>*/}],"Haz3lcore__Stepper");return/*<>*/}(globalThis)); -//# 12737 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12676 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y="@ ",r="<2>",x="src/haz3lcore/dynamics/EvaluatorResult.re.t",w="@])",v="boxedValue",h="Indet",g="BoxedValue",u="indet",o=848054398,p=139,q=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -321549,7 +321549,7 @@ f=b[1],d=g;break a}}else{var h=a[1];if(0!==b[0]){var f=b[1],d=h;break a}}/*<>*/return 0}/*<>*/return/*<>*/c(e[24],d,f)/*<>*/}],"Haz3lcore__EvaluatorResult");return/*<>*/}(globalThis)); -//# 12769 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12708 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="EvaulatorError",aj="off",w="Off",an="resultPending",ag="resultOk",ah="unknownException",v="result",j="<2>",ai="src/haz3lcore/prog/ProgramResult.re.inner",o="@ ",af=" =",G="@])",P="%a",am="evaulatorError",u="ResultOk",ae="resultFail",z="ResultFail",B="ResultPending",ac="",ad="src/haz3lcore/prog/ProgramResult.re.error",al=963043957,ab="src/haz3lcore/prog/ProgramResult.re.t",C="Timeout",aa="@]",$="timeout",y="UnknownException",ak="@[%s =@ ",O=143,t="state",h=139,l=-976970511,m=848054398,s=a.jsoo_runtime,N=s.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -321633,11 +321633,11 @@ a==="number")/*<>*/return a7;switch(a[ 0:/*<>*/return[0,m,[0,a8,[0,/*<>*/c(F[13],a[1]),0]]];case 1:/*<>*/return[0,m,[0,a9,[0,T(a[1]),0]]];default:/*<>*/return[0,m,[0,a_,[0,Z(a[1]),0]]]}/*<>*/},function(a){/*<>*/return c(A[7],a[1])/*<>*/},function(a){/*<>*/return a[2]/*<>*/}],"Haz3lcore__ProgramResult");return/*<>*/}(globalThis)); -//# 13169 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13108 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id[15];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48]],"Haz3lcore__MetaVarMap");return/*<>*/}(globalThis)); -//# 13174 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13113 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="expressionHole",o="patternHole",i="ExpressionHole",j="PatternHole",e=a.jsoo_runtime;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -321656,7 +321656,7 @@ e=d[2];if(e&&!e[2]){/*<>*/var f=e[1],h=d[1],/*<>*/i=k(b[1]),/*<>*/j=/*<>*/g(m[13],h);/*<>*/return[0,i,j,/*<>*/g(n[1],f)]}}}}/*<>*/return/*<>*/t(c[2],s,3,a)/*<>*/},a)/*<>*/},function(a){/*<>*/return/*<>*/b(h[44],function(a){var b=a[3],c=a[2],d=l(a[1]),e=g(m[11],c);return[1,[0,d,[0,e,[0,g(n[2],b),0]]]]},a)/*<>*/},h[1]],"Haz3lcore__Delta");return/*<>*/}(globalThis)); -//# 13194 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13133 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var B="+",t="DoesNotElaborate",A="elaborates",r="Elaborates",x="doesNotElaborate",ad=194,u="_",h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -321907,7 +321907,7 @@ b=a[3],c=a[2],/*<>*/d=/*<>*/return 0;/*<>*/var e=c[1],/*<>*/d=v(a,b),f=d?d[1]:O;/*<>*/return[0,e,f,q[5]]/*<>*/}],"Haz3lcore__Elaborator");return/*<>*/}(globalThis)); -//# 13446 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13385 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="Unexpected Uneval",f=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -321952,7 +321952,7 @@ e=[0,c[1]];break;case e=[1,c[1]];break;default:var e=[1,c[1]]}/*<>*/return[0,f[1],e]/*<>*/},b,[0,m[2]]],"Haz3lcore__Evaluator");return/*<>*/}(globalThis)); -//# 13492 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13431 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,w=f.caml_wrap_exception;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -321967,7 +321967,7 @@ e=/*<>*/h(t[1],l,c)}catch(e){var f=w(e);if(f[1]===i[7]){/*<>*/var j=f[2],/*<>*/m=/*<>*/d(i[2],j),/*<>*/n=/*<>*/h(g[28],r,m);/*<>*/ /*<>*/d(g[46],n);/*<>*/return[2,[0,j]]}/*<>*/var/*<>*/o=/*<>*/d(k[1],f),/*<>*/p=/*<>*/h(g[28],s,o);/*<>*/ /*<>*/d(g[46],p);/*<>*/return[2,[1,/*<>*/d(k[1],f)]]}/*<>*/return[1,[0,e[2],e[1]]]/*<>*/}],"Haz3lcore__Interface");return/*<>*/}(globalThis)); -//# 13508 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13447 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ab="src/haz3lcore/prog/ModelResult.re.t",t="<2>",r="@ ",N=" =",aa="src/haz3lcore/prog/ModelResult.re.eval_result",M="@])",$="noElab",P="%a",Y="src/haz3lcore/prog/ModelResult.re.persistent",x="elab",E="stepper",m="Evaluation",B="NoElab",L="",_=963043957,k="Stepper",w="previous",X=";@ ",o="evaluation",K="@]",O="@[%s =@ ",Z="(@[<2>Stepper@ ",J=143,i=139,p=848054398,q=-976970511,v=a.jsoo_runtime,I=v.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}/*<>*/function @@ -322054,7 +322054,7 @@ i=e[2];if(i===m)return b[2]?/*<>*/d(g[3] j=b[2];if(j&&!j[2])/*<>*/return[0,/*<>*/c(f[31],j[1])];/*<>*/return/*<>*/h(g[4],A,i,a)}}else if(p===n)/*<>*/return/*<>*/d(g[6],A,a)}}}/*<>*/return/*<>*/d(g[8],A,a)/*<>*/},function(a){/*<>*/return a?[0,p,[0,a2,[0,/*<>*/c(f[32],a[1]),0]]]:a3/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&1===a[0])/*<>*/return[0,/*<>*/c(f[35],a[1])];/*<>*/return 0/*<>*/},function(a,b){/*<>*/return b?[1,/*<>*/d(f[36],a,b[1])]:0/*<>*/}],"Haz3lcore__ModelResult");return/*<>*/}(globalThis)); -//# 13596 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13535 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="%a",z=143,j=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function